summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2000-09-18 16:15:01 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2000-09-18 16:15:01 +0000
commit7b0b5cdfeed656b279bc32cd929630d5fc25878b (patch)
tree5b89fb8497d7329d26c43f109bb014c54ffb0e8c
parentd791366863cf9659a01b171ce0e727bfe2f28cdf (diff)
initial import
-rw-r--r--sw/inc/acmplwrd.hxx105
-rw-r--r--sw/inc/authfld.hxx222
-rw-r--r--sw/inc/authratr.hxx92
-rw-r--r--sw/inc/bookmrk.hxx177
-rw-r--r--sw/inc/bparr.hxx164
-rw-r--r--sw/inc/calbck.hxx260
-rw-r--r--sw/inc/calc.hxx261
-rw-r--r--sw/inc/cellatr.hxx178
-rw-r--r--sw/inc/cellfml.hxx197
-rw-r--r--sw/inc/charatr.hxx180
-rw-r--r--sw/inc/charfmt.hxx90
-rw-r--r--sw/inc/chpfld.hxx129
-rw-r--r--sw/inc/cmdid.h1225
-rw-r--r--sw/inc/comcore.hrc118
-rw-r--r--sw/inc/crsrsh.hxx901
-rw-r--r--sw/inc/crstate.hxx156
-rw-r--r--sw/inc/cshtyp.hxx147
-rw-r--r--sw/inc/dbfld.hxx366
-rw-r--r--sw/inc/dbmgr.hxx383
-rw-r--r--sw/inc/dcontact.hxx193
-rw-r--r--sw/inc/ddefld.hxx152
-rw-r--r--sw/inc/dlelstnr.hxx106
-rw-r--r--sw/inc/dobjfac.hxx83
-rw-r--r--sw/inc/doc.hxx1770
-rw-r--r--sw/inc/docary.hxx166
-rw-r--r--sw/inc/docfac.hxx85
-rw-r--r--sw/inc/docsh.hxx303
-rw-r--r--sw/inc/docstat.hxx90
-rw-r--r--sw/inc/docstyle.hxx261
-rw-r--r--sw/inc/docufld.hxx818
-rw-r--r--sw/inc/dpage.hxx100
-rw-r--r--sw/inc/edglbldc.hxx113
-rw-r--r--sw/inc/edimp.hxx124
-rw-r--r--sw/inc/editsh.hxx956
-rw-r--r--sw/inc/errhdl.hxx129
-rw-r--r--sw/inc/error.h84
-rw-r--r--sw/inc/expfld.hxx470
-rw-r--r--sw/inc/extinput.hxx95
-rw-r--r--sw/inc/fchrfmt.hxx119
-rw-r--r--sw/inc/fesh.hxx654
-rw-r--r--sw/inc/fldbas.hxx522
-rw-r--r--sw/inc/flddat.hxx180
-rw-r--r--sw/inc/fldinit.hxx72
-rw-r--r--sw/inc/fldupde.hxx73
-rw-r--r--sw/inc/flyenum.hxx89
-rw-r--r--sw/inc/flypos.hxx97
-rw-r--r--sw/inc/fmtanchr.hxx130
-rw-r--r--sw/inc/fmtclbl.hxx102
-rw-r--r--sw/inc/fmtclds.hxx222
-rw-r--r--sw/inc/fmtcnct.hxx133
-rw-r--r--sw/inc/fmtcntnt.hxx108
-rw-r--r--sw/inc/fmtcol.hxx301
-rw-r--r--sw/inc/fmteiro.hxx102
-rw-r--r--sw/inc/fmtflcnt.hxx98
-rw-r--r--sw/inc/fmtfld.hxx114
-rw-r--r--sw/inc/fmtfordr.hxx115
-rw-r--r--sw/inc/fmtfsize.hxx166
-rw-r--r--sw/inc/fmtftn.hxx121
-rw-r--r--sw/inc/fmtftntx.hxx183
-rw-r--r--sw/inc/fmthbsh.hxx112
-rw-r--r--sw/inc/fmthdft.hxx160
-rw-r--r--sw/inc/fmtinfmt.hxx148
-rw-r--r--sw/inc/fmtline.hxx113
-rw-r--r--sw/inc/fmtlsplt.hxx104
-rw-r--r--sw/inc/fmtornt.hxx206
-rw-r--r--sw/inc/fmtpdsc.hxx150
-rw-r--r--sw/inc/fmtrfmrk.hxx102
-rw-r--r--sw/inc/fmtsrnd.hxx142
-rw-r--r--sw/inc/fmturl.hxx131
-rw-r--r--sw/inc/format.hxx371
-rw-r--r--sw/inc/frmatr.hxx136
-rw-r--r--sw/inc/frmfmt.hxx227
-rw-r--r--sw/inc/ftnidx.hxx114
-rw-r--r--sw/inc/ftninfo.hxx146
-rw-r--r--sw/inc/globals.hrc323
-rw-r--r--sw/inc/globdoc.hxx92
-rw-r--r--sw/inc/grfatr.hxx431
-rw-r--r--sw/inc/helpid.h876
-rw-r--r--sw/inc/hintids.hxx475
-rw-r--r--sw/inc/hints.hxx328
-rw-r--r--sw/inc/htmltbl.hxx530
-rw-r--r--sw/inc/index.hxx318
-rw-r--r--sw/inc/inetfld.hxx142
-rw-r--r--sw/inc/init.hxx78
-rw-r--r--sw/inc/io.hxx221
-rw-r--r--sw/inc/itabenum.hxx77
-rw-r--r--sw/inc/lineinfo.hxx144
-rw-r--r--sw/inc/linkenum.hxx73
-rw-r--r--sw/inc/mdiexp.hxx118
-rw-r--r--sw/inc/ndarr.hxx353
-rw-r--r--sw/inc/ndgrf.hxx373
-rw-r--r--sw/inc/ndhints.hxx260
-rw-r--r--sw/inc/ndindex.hxx312
-rw-r--r--sw/inc/ndnotxt.hxx133
-rw-r--r--sw/inc/ndole.hxx217
-rw-r--r--sw/inc/ndtxt.hxx377
-rw-r--r--sw/inc/ndtyp.hxx105
-rw-r--r--sw/inc/newhdl.hxx108
-rw-r--r--sw/inc/node.hxx726
-rw-r--r--sw/inc/numrule.hxx422
-rw-r--r--sw/inc/pagedesc.hxx348
-rw-r--r--sw/inc/pageiter.hxx89
-rw-r--r--sw/inc/pam.hxx269
-rw-r--r--sw/inc/paratr.hxx285
-rw-r--r--sw/inc/poolfmt.awk73
-rw-r--r--sw/inc/poolfmt.hrc533
-rw-r--r--sw/inc/poolfmt.hxx478
-rw-r--r--sw/inc/pvprtdat.hxx120
-rw-r--r--sw/inc/rcid.hrc316
-rw-r--r--sw/inc/redline.hxx312
-rw-r--r--sw/inc/redlnaut.hxx106
-rw-r--r--sw/inc/reffld.hxx162
-rw-r--r--sw/inc/ring.hxx82
-rw-r--r--sw/inc/rolbck.hxx433
-rw-r--r--sw/inc/section.hxx444
-rw-r--r--sw/inc/segdefs.hxx61
-rw-r--r--sw/inc/segdefs_.hxx60
-rw-r--r--sw/inc/shellid.hxx106
-rw-r--r--sw/inc/shellio.hxx696
-rw-r--r--sw/inc/shellres.hxx139
-rw-r--r--sw/inc/sortopt.hxx101
-rw-r--r--sw/inc/statstr.hrc88
-rw-r--r--sw/inc/sw.mk150
-rw-r--r--sw/inc/swacorr.hxx91
-rw-r--r--sw/inc/swatrset.hxx382
-rw-r--r--sw/inc/swbaslnk.hxx127
-rw-r--r--sw/inc/swcrsr.hxx348
-rw-r--r--sw/inc/swddetbl.hxx94
-rw-r--r--sw/inc/swdll.hxx171
-rw-r--r--sw/inc/swerror.h151
-rw-r--r--sw/inc/swevent.hxx151
-rw-r--r--sw/inc/swgstr.hxx190
-rw-r--r--sw/inc/swhints.hxx72
-rw-r--r--sw/inc/swmodule.hxx303
-rw-r--r--sw/inc/swpre.mk85
-rw-r--r--sw/inc/swprtopt.hxx131
-rw-r--r--sw/inc/swrect.hxx370
-rw-r--r--sw/inc/swregion.hxx93
-rw-r--r--sw/inc/swserv.hxx129
-rw-r--r--sw/inc/swstyle.h75
-rw-r--r--sw/inc/swtable.hxx393
-rw-r--r--sw/inc/swtblfmt.hxx135
-rw-r--r--sw/inc/swtypes.hxx298
-rw-r--r--sw/inc/swundo.hxx197
-rw-r--r--sw/inc/swurl.hxx84
-rw-r--r--sw/inc/swwait.hxx79
-rw-r--r--sw/inc/tabcol.hxx121
-rw-r--r--sw/inc/tblafmt.hxx383
-rw-r--r--sw/inc/tblenum.hxx111
-rw-r--r--sw/inc/tblsel.hxx269
-rw-r--r--sw/inc/tox.hxx702
-rw-r--r--sw/inc/toxe.hxx159
-rw-r--r--sw/inc/toxinit.hxx71
-rw-r--r--sw/inc/txatbase.hxx482
-rw-r--r--sw/inc/txtatr.hxx427
-rw-r--r--sw/inc/txtflcnt.hxx104
-rw-r--r--sw/inc/txtfld.hxx106
-rw-r--r--sw/inc/txtftn.hxx121
-rw-r--r--sw/inc/txtinet.hxx127
-rw-r--r--sw/inc/txtrfmrk.hxx98
-rw-r--r--sw/inc/txttxmrk.hxx104
-rw-r--r--sw/inc/undobj.hxx1624
-rw-r--r--sw/inc/unoatxt.hxx277
-rw-r--r--sw/inc/unocoll.hxx562
-rw-r--r--sw/inc/unocrsr.hxx124
-rw-r--r--sw/inc/unodraw.hxx248
-rw-r--r--sw/inc/unofield.hxx331
-rw-r--r--sw/inc/unoframe.hxx363
-rw-r--r--sw/inc/unoidx.hxx366
-rw-r--r--sw/inc/unomap.hxx290
-rw-r--r--sw/inc/unomid.h124
-rw-r--r--sw/inc/unomod.hxx223
-rw-r--r--sw/inc/unoobj.hxx1483
-rw-r--r--sw/inc/unoprnms.hxx536
-rw-r--r--sw/inc/unosett.hxx326
-rw-r--r--sw/inc/unosrch.hxx171
-rw-r--r--sw/inc/unostyle.hxx324
-rw-r--r--sw/inc/unotbl.hxx584
-rw-r--r--sw/inc/usrfld.hxx166
-rw-r--r--sw/inc/viewopt.hxx602
-rw-r--r--sw/inc/viewsh.hxx490
-rw-r--r--sw/inc/viscrs.hxx249
-rw-r--r--sw/inc/wdocsh.hxx100
-rw-r--r--sw/prj/d.lst66
-rw-r--r--sw/sdi/_basesh.sdi636
-rw-r--r--sw/sdi/_beziers.sdi141
-rw-r--r--sw/sdi/_docsh.sdi166
-rw-r--r--sw/sdi/_drwbase.sdi164
-rw-r--r--sw/sdi/_formsh.sdi38
-rw-r--r--sw/sdi/_frmsh.sdi292
-rw-r--r--sw/sdi/_grfsh.sdi153
-rw-r--r--sw/sdi/_listsh.sdi103
-rw-r--r--sw/sdi/_olesh.sdi46
-rw-r--r--sw/sdi/_tabsh.sdi409
-rw-r--r--sw/sdi/_textsh.sdi1262
-rw-r--r--sw/sdi/_viewsh.sdi683
-rw-r--r--sw/sdi/basesh.sdi111
-rw-r--r--sw/sdi/beziersh.sdi155
-rw-r--r--sw/sdi/docsh.sdi142
-rw-r--r--sw/sdi/drawsh.sdi317
-rw-r--r--sw/sdi/drwbassh.sdi60
-rw-r--r--sw/sdi/drwtxtsh.sdi452
-rw-r--r--sw/sdi/formsh.sdi25
-rw-r--r--sw/sdi/frmsh.sdi83
-rw-r--r--sw/sdi/grfsh.sdi64
-rw-r--r--sw/sdi/listsh.sdi60
-rw-r--r--sw/sdi/makefile.mk178
-rw-r--r--sw/sdi/olesh.sdi76
-rw-r--r--sw/sdi/swinterf.c283
-rw-r--r--sw/sdi/switems.sdi205
-rw-r--r--sw/sdi/swpatch.txt19
-rw-r--r--sw/sdi/swriter.sdi8432
-rw-r--r--sw/sdi/swslots.hrc68
-rw-r--r--sw/sdi/swslots.sdi166
-rw-r--r--sw/sdi/swslots.src8925
-rw-r--r--sw/sdi/tabsh.sdi100
-rw-r--r--sw/sdi/textsh.sdi214
-rw-r--r--sw/sdi/viewsh.sdi305
-rw-r--r--sw/sdi/wbasesh.sdi48
-rw-r--r--sw/sdi/wbeziers.sdi38
-rw-r--r--sw/sdi/wdocsh.sdi97
-rw-r--r--sw/sdi/wdrwbase.sdi60
-rw-r--r--sw/sdi/wformsh.sdi25
-rw-r--r--sw/sdi/wfrmsh.sdi50
-rw-r--r--sw/sdi/wgrfsh.sdi49
-rw-r--r--sw/sdi/wlistsh.sdi48
-rw-r--r--sw/sdi/wolesh.sdi47
-rw-r--r--sw/sdi/wrtapp.sdi367
-rw-r--r--sw/sdi/wtabsh.sdi46
-rw-r--r--sw/sdi/wtextsh.sdi61
-rw-r--r--sw/sdi/wviewsh.sdi223
-rw-r--r--sw/source/filter/ascii/ascatr.cxx486
-rw-r--r--sw/source/filter/ascii/makefile.mk94
-rw-r--r--sw/source/filter/ascii/parasc.cxx1180
-rw-r--r--sw/source/filter/ascii/wrtasc.cxx293
-rw-r--r--sw/source/filter/ascii/wrtasc.hxx90
-rw-r--r--sw/source/filter/html/css1atr.cxx3536
-rw-r--r--sw/source/filter/html/css1kywd.cxx400
-rw-r--r--sw/source/filter/html/css1kywd.hxx320
-rw-r--r--sw/source/filter/html/htmlatr.cxx3165
-rw-r--r--sw/source/filter/html/htmlbas.cxx689
-rw-r--r--sw/source/filter/html/htmlcss1.cxx2596
-rw-r--r--sw/source/filter/html/htmlctxt.cxx934
-rw-r--r--sw/source/filter/html/htmldraw.cxx1070
-rw-r--r--sw/source/filter/html/htmlfld.cxx787
-rw-r--r--sw/source/filter/html/htmlfld.hxx166
-rw-r--r--sw/source/filter/html/htmlfldw.cxx667
-rw-r--r--sw/source/filter/html/htmlfly.cxx2008
-rw-r--r--sw/source/filter/html/htmlfly.hxx175
-rw-r--r--sw/source/filter/html/htmlflyt.cxx673
-rw-r--r--sw/source/filter/html/htmlform.cxx3209
-rw-r--r--sw/source/filter/html/htmlform.hxx86
-rw-r--r--sw/source/filter/html/htmlforw.cxx1635
-rw-r--r--sw/source/filter/html/htmlftn.cxx689
-rw-r--r--sw/source/filter/html/htmlgrin.cxx1656
-rw-r--r--sw/source/filter/html/htmlnum.cxx997
-rw-r--r--sw/source/filter/html/htmlnum.hxx189
-rw-r--r--sw/source/filter/html/htmlplug.cxx1360
-rw-r--r--sw/source/filter/html/htmlsect.cxx1063
-rw-r--r--sw/source/filter/html/htmltab.cxx6187
-rw-r--r--sw/source/filter/html/htmltabw.cxx1571
-rw-r--r--sw/source/filter/html/htmlvsh.hxx91
-rw-r--r--sw/source/filter/html/makefile.mk138
-rw-r--r--sw/source/filter/html/parcss1.cxx1598
-rw-r--r--sw/source/filter/html/parcss1.hxx342
-rw-r--r--sw/source/filter/html/svxcss1.cxx3378
-rw-r--r--sw/source/filter/html/svxcss1.hxx462
-rw-r--r--sw/source/filter/html/swcss1.hxx257
-rw-r--r--sw/source/filter/html/swhtml.cxx5646
-rw-r--r--sw/source/filter/html/swhtml.hxx1068
-rw-r--r--sw/source/filter/html/wrthtml.cxx1477
-rw-r--r--sw/source/filter/html/wrthtml.hxx614
-rw-r--r--sw/source/filter/inc/fltbase.hxx166
-rw-r--r--sw/source/filter/inc/fltglbls.hxx218
-rw-r--r--sw/source/filter/inc/fltini.hxx219
-rw-r--r--sw/source/filter/inc/fltshell.hxx675
-rw-r--r--sw/source/filter/inc/makefile.mk61
-rw-r--r--sw/source/filter/inc/rtf.hxx168
-rw-r--r--sw/source/filter/inc/wrt_fn.hxx103
-rw-r--r--sw/source/filter/inc/wrtswtbl.hxx375
-rw-r--r--sw/source/filter/makefile.mk244
-rw-r--r--sw/source/filter/rtf/makefile.mk106
-rw-r--r--sw/source/filter/rtf/rtfatr.cxx3068
-rw-r--r--sw/source/filter/rtf/rtffld.cxx960
-rw-r--r--sw/source/filter/rtf/rtffly.cxx1745
-rw-r--r--sw/source/filter/rtf/rtfnum.cxx1468
-rw-r--r--sw/source/filter/rtf/rtftbl.cxx978
-rw-r--r--sw/source/filter/rtf/swparrtf.cxx3818
-rw-r--r--sw/source/filter/rtf/swparrtf.hxx437
-rw-r--r--sw/source/filter/rtf/wrtrtf.cxx1593
-rw-r--r--sw/source/filter/rtf/wrtrtf.hxx244
-rw-r--r--sw/source/filter/writer/makefile.mk94
-rw-r--r--sw/source/filter/writer/writer.cxx780
-rw-r--r--sw/source/filter/writer/wrt_fn.cxx230
-rw-r--r--sw/source/filter/writer/wrtswtbl.cxx959
-rw-r--r--sw/source/filter/ww1/fltshell.cxx2357
-rw-r--r--sw/source/filter/ww1/makefile.mk136
-rw-r--r--sw/source/filter/ww1/w1class.cxx1580
-rw-r--r--sw/source/filter/ww1/w1class.hxx1753
-rw-r--r--sw/source/filter/ww1/w1filter.cxx2433
-rw-r--r--sw/source/filter/ww1/w1par.cxx255
-rw-r--r--sw/source/filter/ww1/w1par.hxx81
-rw-r--r--sw/source/filter/ww1/w1sprm.cxx960
-rw-r--r--sw/source/filter/ww1/w1struct.hxx965
-rw-r--r--sw/source/filter/ww8/dump/dump8.cxx259
-rw-r--r--sw/source/filter/ww8/dump/dump8a.cxx3127
-rw-r--r--sw/source/filter/ww8/dump/makefile.mk179
-rw-r--r--sw/source/filter/ww8/dump/msvbasic.cxx598
-rw-r--r--sw/source/filter/ww8/dump/msvbasic.hxx140
-rw-r--r--sw/source/filter/ww8/dump/ww8darr.cxx615
-rw-r--r--sw/source/filter/ww8/dump/ww8darr.hxx77
-rw-r--r--sw/source/filter/ww8/dump/ww8dout.cxx499
-rw-r--r--sw/source/filter/ww8/dump/ww8dout.hxx120
-rw-r--r--sw/source/filter/ww8/dump/ww8scan.cxx6049
-rw-r--r--sw/source/filter/ww8/dump/ww8scan.hxx1498
-rw-r--r--sw/source/filter/ww8/dump/ww8struc.hxx851
-rw-r--r--sw/source/filter/ww8/makefile.mk134
-rw-r--r--sw/source/filter/ww8/wrtw8esh.cxx1706
-rw-r--r--sw/source/filter/ww8/wrtw8nds.cxx2002
-rw-r--r--sw/source/filter/ww8/wrtw8num.cxx627
-rw-r--r--sw/source/filter/ww8/wrtw8sty.cxx1942
-rw-r--r--sw/source/filter/ww8/wrtww8.cxx2226
-rw-r--r--sw/source/filter/ww8/wrtww8.hxx815
-rw-r--r--sw/source/filter/ww8/wrtww8gr.cxx697
-rw-r--r--sw/source/filter/ww8/ww8atr.cxx3489
-rw-r--r--sw/source/filter/ww8/ww8glsy.cxx426
-rw-r--r--sw/source/filter/ww8/ww8glsy.hxx134
-rw-r--r--sw/source/filter/ww8/ww8graf.cxx3174
-rw-r--r--sw/source/filter/ww8/ww8graf.hxx194
-rw-r--r--sw/source/filter/ww8/ww8graf2.cxx1363
-rw-r--r--sw/source/filter/ww8/ww8par.cxx2996
-rw-r--r--sw/source/filter/ww8/ww8par.hxx1287
-rw-r--r--sw/source/filter/ww8/ww8par2.cxx3084
-rw-r--r--sw/source/filter/ww8/ww8par2.hxx371
-rw-r--r--sw/source/filter/ww8/ww8par3.cxx2191
-rw-r--r--sw/source/filter/ww8/ww8par4.cxx777
-rw-r--r--sw/source/filter/ww8/ww8par5.cxx3270
-rw-r--r--sw/source/filter/ww8/ww8par6.cxx4883
-rw-r--r--sw/source/filter/ww8/ww8scan.cxx6326
-rw-r--r--sw/source/filter/ww8/ww8scan.hxx1729
-rw-r--r--sw/source/filter/ww8/ww8struc.hxx930
-rw-r--r--sw/source/filter/xml/makefile.mk144
-rw-r--r--sw/source/filter/xml/swxml.cxx314
-rw-r--r--sw/source/filter/xml/wrtxml.cxx238
-rw-r--r--sw/source/filter/xml/wrtxml.hxx89
-rw-r--r--sw/source/filter/xml/xmlbrsh.cxx318
-rw-r--r--sw/source/filter/xml/xmlbrshe.hxx122
-rw-r--r--sw/source/filter/xml/xmlbrshi.hxx113
-rw-r--r--sw/source/filter/xml/xmlexp.cxx550
-rw-r--r--sw/source/filter/xml/xmlexp.hxx254
-rw-r--r--sw/source/filter/xml/xmlfmt.cxx1814
-rw-r--r--sw/source/filter/xml/xmlfmte.cxx1144
-rw-r--r--sw/source/filter/xml/xmlimp.cxx570
-rw-r--r--sw/source/filter/xml/xmlimp.hxx283
-rw-r--r--sw/source/filter/xml/xmliteme.cxx490
-rw-r--r--sw/source/filter/xml/xmlitemi.cxx638
-rw-r--r--sw/source/filter/xml/xmlitemm.cxx548
-rw-r--r--sw/source/filter/xml/xmlmeta.cxx227
-rw-r--r--sw/source/filter/xml/xmltble.cxx1085
-rw-r--r--sw/source/filter/xml/xmltbli.cxx2229
-rw-r--r--sw/source/filter/xml/xmltbli.hxx211
-rw-r--r--sw/source/filter/xml/xmltext.cxx1647
-rw-r--r--sw/source/filter/xml/xmltexte.hxx100
-rw-r--r--sw/source/filter/xml/xmltexti.hxx125
-rw-r--r--sw/source/ui/app/app.src2966
-rw-r--r--sw/source/ui/app/appenv.cxx739
-rw-r--r--sw/source/ui/app/apphdl.cxx1389
-rw-r--r--sw/source/ui/app/applab.cxx759
-rw-r--r--sw/source/ui/app/appopt.cxx776
-rw-r--r--sw/source/ui/app/docsh.cxx1690
-rw-r--r--sw/source/ui/app/docsh2.cxx1981
-rw-r--r--sw/source/ui/app/docshdrw.cxx194
-rw-r--r--sw/source/ui/app/docshini.cxx897
-rw-r--r--sw/source/ui/app/docst.cxx1450
-rw-r--r--sw/source/ui/app/docstyle.cxx2782
-rw-r--r--sw/source/ui/app/error.src1265
-rw-r--r--sw/source/ui/app/mainwn.cxx343
-rw-r--r--sw/source/ui/app/makefile.mk179
-rw-r--r--sw/source/ui/app/mn.src599
-rw-r--r--sw/source/ui/app/swdll.cxx207
-rw-r--r--sw/source/ui/app/swmodul1.cxx1092
-rw-r--r--sw/source/ui/app/swmodule.cxx664
-rw-r--r--sw/source/ui/app/swwait.cxx118
-rw-r--r--sw/source/ui/cctrl/actctrl.cxx231
-rw-r--r--sw/source/ui/cctrl/makefile.mk97
-rw-r--r--sw/source/ui/cctrl/popbox.cxx182
-rw-r--r--sw/source/ui/cctrl/swlbox.cxx622
-rw-r--r--sw/source/ui/chrdlg/break.cxx408
-rw-r--r--sw/source/ui/chrdlg/break.hrc75
-rw-r--r--sw/source/ui/chrdlg/ccoll.cxx593
-rw-r--r--sw/source/ui/chrdlg/ccoll.hrc84
-rw-r--r--sw/source/ui/chrdlg/ccoll.src949
-rw-r--r--sw/source/ui/chrdlg/chardlg.cxx520
-rw-r--r--sw/source/ui/chrdlg/chardlg.hrc120
-rw-r--r--sw/source/ui/chrdlg/chardlg.src615
-rw-r--r--sw/source/ui/chrdlg/chrdlg.src169
-rw-r--r--sw/source/ui/chrdlg/drpcps.cxx744
-rw-r--r--sw/source/ui/chrdlg/drpcps.hrc86
-rw-r--r--sw/source/ui/chrdlg/drpcps.src493
-rw-r--r--sw/source/ui/chrdlg/makefile.mk112
-rw-r--r--sw/source/ui/chrdlg/numpara.cxx366
-rw-r--r--sw/source/ui/chrdlg/numpara.hrc85
-rw-r--r--sw/source/ui/chrdlg/numpara.src417
-rw-r--r--sw/source/ui/chrdlg/paradlg.hrc105
-rw-r--r--sw/source/ui/chrdlg/paradlg.src446
-rw-r--r--sw/source/ui/chrdlg/pardlg.cxx505
-rw-r--r--sw/source/ui/chrdlg/swbreak.src412
-rw-r--r--sw/source/ui/chrdlg/tblnumfm.cxx127
-rw-r--r--sw/source/ui/config/barcfg.cxx183
-rw-r--r--sw/source/ui/config/caption.cxx238
-rw-r--r--sw/source/ui/config/cfgitems.cxx855
-rw-r--r--sw/source/ui/config/config.hrc98
-rw-r--r--sw/source/ui/config/fontcfg.cxx240
-rw-r--r--sw/source/ui/config/makefile.mk122
-rw-r--r--sw/source/ui/config/modcfg.cxx573
-rw-r--r--sw/source/ui/config/optdlg.hrc263
-rw-r--r--sw/source/ui/config/optdlg.src3186
-rw-r--r--sw/source/ui/config/optload.cxx311
-rw-r--r--sw/source/ui/config/optload.hrc75
-rw-r--r--sw/source/ui/config/optload.src413
-rw-r--r--sw/source/ui/config/optpage.cxx2695
-rw-r--r--sw/source/ui/config/prtopt.cxx228
-rw-r--r--sw/source/ui/config/redlopt.hrc83
-rw-r--r--sw/source/ui/config/redlopt.src1422
-rw-r--r--sw/source/ui/config/uinums.cxx795
-rw-r--r--sw/source/ui/config/usrpref.cxx818
-rw-r--r--sw/source/ui/config/viewopt.cxx754
-rw-r--r--sw/source/ui/dbui/dbinsdlg.cxx2470
-rw-r--r--sw/source/ui/dbui/dbinsdlg.hrc107
-rw-r--r--sw/source/ui/dbui/dbinsdlg.src666
-rw-r--r--sw/source/ui/dbui/dbmgr.cxx2589
-rw-r--r--sw/source/ui/dbui/dbtree.cxx833
-rw-r--r--sw/source/ui/dbui/dbui.cxx216
-rw-r--r--sw/source/ui/dbui/dbui.src322
-rw-r--r--sw/source/ui/dbui/makefile.mk107
-rw-r--r--sw/source/ui/dialog/abstract.cxx144
-rw-r--r--sw/source/ui/dialog/abstract.hrc70
-rw-r--r--sw/source/ui/dialog/abstract.src258
-rw-r--r--sw/source/ui/dialog/addrdlg.cxx175
-rw-r--r--sw/source/ui/dialog/ascfldlg.cxx682
-rw-r--r--sw/source/ui/dialog/ascfldlg.hrc80
-rw-r--r--sw/source/ui/dialog/ascfldlg.src563
-rw-r--r--sw/source/ui/dialog/dialog.src201
-rw-r--r--sw/source/ui/dialog/docstdlg.cxx427
-rw-r--r--sw/source/ui/dialog/docstdlg.hrc83
-rw-r--r--sw/source/ui/dialog/docstdlg.src411
-rw-r--r--sw/source/ui/dialog/macassgn.cxx293
-rw-r--r--sw/source/ui/dialog/makefile.mk114
-rw-r--r--sw/source/ui/dialog/regionsw.cxx2365
-rw-r--r--sw/source/ui/dialog/regionsw.hrc144
-rw-r--r--sw/source/ui/dialog/regionsw.src1697
-rw-r--r--sw/source/ui/dochdl/dochdl.src431
-rw-r--r--sw/source/ui/dochdl/gloshdl.cxx1099
-rw-r--r--sw/source/ui/dochdl/makefile.mk99
-rw-r--r--sw/source/ui/dochdl/selglos.cxx170
-rw-r--r--sw/source/ui/dochdl/selglos.hrc65
-rw-r--r--sw/source/ui/dochdl/selglos.src155
-rw-r--r--sw/source/ui/docvw/docvw.hrc120
-rw-r--r--sw/source/ui/docvw/docvw.src1216
-rw-r--r--sw/source/ui/docvw/edtdd.cxx787
-rw-r--r--sw/source/ui/docvw/edtwin.cxx4222
-rw-r--r--sw/source/ui/docvw/edtwin2.cxx694
-rw-r--r--sw/source/ui/docvw/edtwin3.cxx346
-rw-r--r--sw/source/ui/docvw/makefile.mk104
-rw-r--r--sw/source/ui/docvw/romenu.cxx820
-rw-r--r--sw/source/ui/docvw/romenu.hxx111
-rw-r--r--sw/source/ui/docvw/srcedtw.cxx1016
-rw-r--r--sw/source/ui/envelp/envelp.src202
-rw-r--r--sw/source/ui/envelp/envfmt.cxx803
-rw-r--r--sw/source/ui/envelp/envfmt.hrc111
-rw-r--r--sw/source/ui/envelp/envfmt.hxx140
-rw-r--r--sw/source/ui/envelp/envfmt.src632
-rw-r--r--sw/source/ui/envelp/envimg.cxx496
-rw-r--r--sw/source/ui/envelp/envlop.hrc99
-rw-r--r--sw/source/ui/envelp/envlop.src473
-rw-r--r--sw/source/ui/envelp/envlop1.cxx617
-rw-r--r--sw/source/ui/envelp/envprt.cxx428
-rw-r--r--sw/source/ui/envelp/envprt.hrc114
-rw-r--r--sw/source/ui/envelp/envprt.hxx134
-rw-r--r--sw/source/ui/envelp/envprt.src372
-rw-r--r--sw/source/ui/envelp/label.hrc158
-rw-r--r--sw/source/ui/envelp/label.src1606
-rw-r--r--sw/source/ui/envelp/label1.cxx1846
-rw-r--r--sw/source/ui/envelp/labfmt.cxx754
-rw-r--r--sw/source/ui/envelp/labfmt.hrc112
-rw-r--r--sw/source/ui/envelp/labfmt.hxx166
-rw-r--r--sw/source/ui/envelp/labfmt.src626
-rw-r--r--sw/source/ui/envelp/labimg.cxx594
-rw-r--r--sw/source/ui/envelp/labimp.hxx456
-rw-r--r--sw/source/ui/envelp/labprt.cxx381
-rw-r--r--sw/source/ui/envelp/labprt.hrc93
-rw-r--r--sw/source/ui/envelp/labprt.hxx124
-rw-r--r--sw/source/ui/envelp/labprt.src317
-rw-r--r--sw/source/ui/envelp/mailmrge.cxx686
-rw-r--r--sw/source/ui/envelp/mailmrge.hrc108
-rw-r--r--sw/source/ui/envelp/mailmrge.src785
-rw-r--r--sw/source/ui/envelp/makefile.mk122
-rw-r--r--sw/source/ui/envelp/syncbtn.cxx171
-rw-r--r--sw/source/ui/fldui/changedb.cxx663
-rw-r--r--sw/source/ui/fldui/changedb.hrc93
-rw-r--r--sw/source/ui/fldui/changedb.src413
-rw-r--r--sw/source/ui/fldui/flddb.cxx756
-rw-r--r--sw/source/ui/fldui/flddb.hxx137
-rw-r--r--sw/source/ui/fldui/flddb.src337
-rw-r--r--sw/source/ui/fldui/flddinf.cxx571
-rw-r--r--sw/source/ui/fldui/flddinf.hxx132
-rw-r--r--sw/source/ui/fldui/flddinf.src398
-rw-r--r--sw/source/ui/fldui/flddok.cxx872
-rw-r--r--sw/source/ui/fldui/flddok.hxx141
-rw-r--r--sw/source/ui/fldui/flddok.src367
-rw-r--r--sw/source/ui/fldui/fldedt.cxx505
-rw-r--r--sw/source/ui/fldui/fldfunc.cxx779
-rw-r--r--sw/source/ui/fldui/fldfunc.hxx141
-rw-r--r--sw/source/ui/fldui/fldfunc.src380
-rw-r--r--sw/source/ui/fldui/fldmgr.cxx2450
-rw-r--r--sw/source/ui/fldui/fldpage.cxx544
-rw-r--r--sw/source/ui/fldui/fldpage.hxx134
-rw-r--r--sw/source/ui/fldui/fldref.cxx908
-rw-r--r--sw/source/ui/fldui/fldref.hxx130
-rw-r--r--sw/source/ui/fldui/fldref.src352
-rw-r--r--sw/source/ui/fldui/fldtdlg.cxx567
-rw-r--r--sw/source/ui/fldui/fldtdlg.hrc189
-rw-r--r--sw/source/ui/fldui/fldtdlg.src306
-rw-r--r--sw/source/ui/fldui/fldui.src3383
-rw-r--r--sw/source/ui/fldui/fldvar.cxx1562
-rw-r--r--sw/source/ui/fldui/fldvar.hxx172
-rw-r--r--sw/source/ui/fldui/fldvar.src560
-rw-r--r--sw/source/ui/fldui/inpdlg.cxx320
-rw-r--r--sw/source/ui/fldui/inpdlg.hrc68
-rw-r--r--sw/source/ui/fldui/inpdlg.src228
-rw-r--r--sw/source/ui/fldui/javaedit.cxx417
-rw-r--r--sw/source/ui/fldui/javaedit.hrc85
-rw-r--r--sw/source/ui/fldui/javaedit.src319
-rw-r--r--sw/source/ui/fldui/makefile.mk131
-rw-r--r--sw/source/ui/fmtui/fmtui.src140
-rw-r--r--sw/source/ui/fmtui/makefile.mk94
-rw-r--r--sw/source/ui/fmtui/tmpdlg.cxx628
-rw-r--r--sw/source/ui/fmtui/tmpdlg.src1283
-rw-r--r--sw/source/ui/frmdlg/colex.cxx514
-rw-r--r--sw/source/ui/frmdlg/colmgr.cxx289
-rw-r--r--sw/source/ui/frmdlg/column.cxx1561
-rw-r--r--sw/source/ui/frmdlg/column.hrc117
-rw-r--r--sw/source/ui/frmdlg/column.src1145
-rw-r--r--sw/source/ui/frmdlg/cption.cxx715
-rw-r--r--sw/source/ui/frmdlg/cption.hrc95
-rw-r--r--sw/source/ui/frmdlg/cption.src722
-rw-r--r--sw/source/ui/frmdlg/frmdlg.cxx332
-rw-r--r--sw/source/ui/frmdlg/frmmgr.cxx832
-rw-r--r--sw/source/ui/frmdlg/frmpage.cxx2837
-rw-r--r--sw/source/ui/frmdlg/frmpage.hrc137
-rw-r--r--sw/source/ui/frmdlg/frmpage.src2707
-rw-r--r--sw/source/ui/frmdlg/frmui.src1388
-rw-r--r--sw/source/ui/frmdlg/makefile.mk125
-rw-r--r--sw/source/ui/frmdlg/pattern.cxx167
-rw-r--r--sw/source/ui/frmdlg/pattern.hrc80
-rw-r--r--sw/source/ui/frmdlg/uiborder.cxx164
-rw-r--r--sw/source/ui/frmdlg/wrap.cxx974
-rw-r--r--sw/source/ui/frmdlg/wrap.hrc98
-rw-r--r--sw/source/ui/frmdlg/wrap.src597
-rw-r--r--sw/source/ui/globdoc/globdoc.cxx181
-rw-r--r--sw/source/ui/globdoc/globdoc.src96
-rw-r--r--sw/source/ui/globdoc/makefile.mk94
-rw-r--r--sw/source/ui/inc/abstract.hxx113
-rw-r--r--sw/source/ui/inc/actctrl.hxx123
-rw-r--r--sw/source/ui/inc/addrdlg.hxx80
-rw-r--r--sw/source/ui/inc/app.hrc204
-rw-r--r--sw/source/ui/inc/ascfldlg.hxx119
-rw-r--r--sw/source/ui/inc/autoedit.hxx84
-rw-r--r--sw/source/ui/inc/barcfg.hxx86
-rw-r--r--sw/source/ui/inc/basesh.hxx177
-rw-r--r--sw/source/ui/inc/beziersh.hxx78
-rw-r--r--sw/source/ui/inc/bmpwin.hxx104
-rw-r--r--sw/source/ui/inc/bookctrl.hxx95
-rw-r--r--sw/source/ui/inc/bookmark.hxx127
-rw-r--r--sw/source/ui/inc/break.hxx124
-rw-r--r--sw/source/ui/inc/caption.hxx146
-rw-r--r--sw/source/ui/inc/cfgdesc.hxx105
-rw-r--r--sw/source/ui/inc/cfgid.h180
-rw-r--r--sw/source/ui/inc/cfgitems.hxx300
-rw-r--r--sw/source/ui/inc/changedb.hxx135
-rw-r--r--sw/source/ui/inc/chartins.hxx160
-rw-r--r--sw/source/ui/inc/chldwrap.hxx94
-rw-r--r--sw/source/ui/inc/chrdlg.hxx157
-rw-r--r--sw/source/ui/inc/cnttab.hxx581
-rw-r--r--sw/source/ui/inc/colex.hxx119
-rw-r--r--sw/source/ui/inc/colmgr.hxx166
-rw-r--r--sw/source/ui/inc/column.hxx266
-rw-r--r--sw/source/ui/inc/conarc.hxx91
-rw-r--r--sw/source/ui/inc/condedit.hxx103
-rw-r--r--sw/source/ui/inc/conform.hxx80
-rw-r--r--sw/source/ui/inc/conpoly.hxx89
-rw-r--r--sw/source/ui/inc/conrect.hxx90
-rw-r--r--sw/source/ui/inc/content.hxx256
-rw-r--r--sw/source/ui/inc/conttree.hxx332
-rw-r--r--sw/source/ui/inc/convert.hxx120
-rw-r--r--sw/source/ui/inc/cption.hxx176
-rw-r--r--sw/source/ui/inc/dbinsdlg.hxx245
-rw-r--r--sw/source/ui/inc/dbtree.hxx121
-rw-r--r--sw/source/ui/inc/dbui.hxx114
-rw-r--r--sw/source/ui/inc/docfnote.hxx86
-rw-r--r--sw/source/ui/inc/docstdlg.hxx124
-rw-r--r--sw/source/ui/inc/drawbase.hxx117
-rw-r--r--sw/source/ui/inc/drawsh.hxx88
-rw-r--r--sw/source/ui/inc/drformsh.hxx83
-rw-r--r--sw/source/ui/inc/drpcps.hxx166
-rw-r--r--sw/source/ui/inc/drwbassh.hxx101
-rw-r--r--sw/source/ui/inc/drwtxtsh.hxx123
-rw-r--r--sw/source/ui/inc/dselect.hxx86
-rw-r--r--sw/source/ui/inc/edtwin.hxx304
-rw-r--r--sw/source/ui/inc/envimg.hxx138
-rw-r--r--sw/source/ui/inc/envlop.hxx181
-rw-r--r--sw/source/ui/inc/fldedt.hxx108
-rw-r--r--sw/source/ui/inc/fldmgr.hxx273
-rw-r--r--sw/source/ui/inc/fldwrap.hxx80
-rw-r--r--sw/source/ui/inc/fontcfg.hxx154
-rw-r--r--sw/source/ui/inc/formedt.hxx148
-rw-r--r--sw/source/ui/inc/frmdlg.hxx102
-rw-r--r--sw/source/ui/inc/frmmgr.hxx283
-rw-r--r--sw/source/ui/inc/frmpage.hxx337
-rw-r--r--sw/source/ui/inc/frmsh.hxx86
-rw-r--r--sw/source/ui/inc/frmui.hrc176
-rw-r--r--sw/source/ui/inc/globals.h83
-rw-r--r--sw/source/ui/inc/globdoc.hrc80
-rw-r--r--sw/source/ui/inc/glosbib.hxx163
-rw-r--r--sw/source/ui/inc/glosdoc.hxx132
-rw-r--r--sw/source/ui/inc/gloshdl.hxx150
-rw-r--r--sw/source/ui/inc/gloslst.hxx131
-rw-r--r--sw/source/ui/inc/glossary.hxx249
-rw-r--r--sw/source/ui/inc/glshell.hxx140
-rw-r--r--sw/source/ui/inc/grfsh.hxx79
-rw-r--r--sw/source/ui/inc/hidfunc.h383
-rw-r--r--sw/source/ui/inc/hyp.hxx105
-rw-r--r--sw/source/ui/inc/idxmrk.hxx345
-rw-r--r--sw/source/ui/inc/initui.hxx109
-rw-r--r--sw/source/ui/inc/inpdlg.hxx123
-rw-r--r--sw/source/ui/inc/inputwin.hxx165
-rw-r--r--sw/source/ui/inc/insfnote.hxx125
-rw-r--r--sw/source/ui/inc/insrc.hxx125
-rw-r--r--sw/source/ui/inc/insrule.hxx105
-rw-r--r--sw/source/ui/inc/instable.hxx127
-rw-r--r--sw/source/ui/inc/itemdef.hxx73
-rw-r--r--sw/source/ui/inc/javaedit.hxx144
-rw-r--r--sw/source/ui/inc/label.hxx136
-rw-r--r--sw/source/ui/inc/labimg.hxx176
-rw-r--r--sw/source/ui/inc/linenum.hxx158
-rw-r--r--sw/source/ui/inc/listsh.hxx78
-rw-r--r--sw/source/ui/inc/macassgn.hxx96
-rw-r--r--sw/source/ui/inc/mailmrge.hxx178
-rw-r--r--sw/source/ui/inc/makefile.mk61
-rw-r--r--sw/source/ui/inc/mergetbl.hxx94
-rw-r--r--sw/source/ui/inc/misc.hrc142
-rw-r--r--sw/source/ui/inc/multmrk.hxx119
-rw-r--r--sw/source/ui/inc/navicfg.hxx154
-rw-r--r--sw/source/ui/inc/navicont.hxx112
-rw-r--r--sw/source/ui/inc/navipi.hxx235
-rw-r--r--sw/source/ui/inc/num.hxx236
-rw-r--r--sw/source/ui/inc/numfmtlb.hxx116
-rw-r--r--sw/source/ui/inc/numpara.hxx134
-rw-r--r--sw/source/ui/inc/numprevw.hxx107
-rw-r--r--sw/source/ui/inc/olesh.hxx82
-rw-r--r--sw/source/ui/inc/olmenu.hxx102
-rw-r--r--sw/source/ui/inc/optload.hxx118
-rw-r--r--sw/source/ui/inc/optpage.hxx531
-rw-r--r--sw/source/ui/inc/outline.hxx209
-rw-r--r--sw/source/ui/inc/pardlg.hxx96
-rw-r--r--sw/source/ui/inc/pattern.hxx80
-rw-r--r--sw/source/ui/inc/pgfnote.hxx141
-rw-r--r--sw/source/ui/inc/popbox.hxx94
-rw-r--r--sw/source/ui/inc/popup.hrc84
-rw-r--r--sw/source/ui/inc/prcntfld.hxx106
-rw-r--r--sw/source/ui/inc/prtopt.hxx129
-rw-r--r--sw/source/ui/inc/pview.hxx283
-rw-r--r--sw/source/ui/inc/redlndlg.hxx131
-rw-r--r--sw/source/ui/inc/regionsw.hxx418
-rw-r--r--sw/source/ui/inc/ribbar.hrc168
-rw-r--r--sw/source/ui/inc/rowht.hxx103
-rw-r--r--sw/source/ui/inc/scroll.hxx105
-rw-r--r--sw/source/ui/inc/selglos.hxx113
-rw-r--r--sw/source/ui/inc/shdwcrsr.hxx105
-rw-r--r--sw/source/ui/inc/shells.hrc140
-rw-r--r--sw/source/ui/inc/split.hxx115
-rw-r--r--sw/source/ui/inc/splittbl.hxx100
-rw-r--r--sw/source/ui/inc/srcedtw.hxx198
-rw-r--r--sw/source/ui/inc/srcview.hxx165
-rw-r--r--sw/source/ui/inc/srtdlg.hxx142
-rw-r--r--sw/source/ui/inc/swcont.hxx149
-rw-r--r--sw/source/ui/inc/swlbox.hxx231
-rw-r--r--sw/source/ui/inc/swvset.hxx88
-rw-r--r--sw/source/ui/inc/syncbtn.hxx113
-rw-r--r--sw/source/ui/inc/table.hrc84
-rw-r--r--sw/source/ui/inc/tabledlg.hxx148
-rw-r--r--sw/source/ui/inc/tablemgr.hxx112
-rw-r--r--sw/source/ui/inc/tabsh.hxx83
-rw-r--r--sw/source/ui/inc/tautofmt.hxx162
-rw-r--r--sw/source/ui/inc/tblctrl.hxx93
-rw-r--r--sw/source/ui/inc/tblnumfm.hxx80
-rw-r--r--sw/source/ui/inc/tbxanchr.hxx84
-rw-r--r--sw/source/ui/inc/tbxmgr.hxx86
-rw-r--r--sw/source/ui/inc/textsh.hxx132
-rw-r--r--sw/source/ui/inc/tmpdlg.hxx104
-rw-r--r--sw/source/ui/inc/tmplctrl.hxx96
-rw-r--r--sw/source/ui/inc/toxmgr.hxx351
-rw-r--r--sw/source/ui/inc/uiborder.hxx85
-rw-r--r--sw/source/ui/inc/uiitems.hxx147
-rw-r--r--sw/source/ui/inc/uinums.hxx178
-rw-r--r--sw/source/ui/inc/uitool.hxx139
-rw-r--r--sw/source/ui/inc/uivwimp.hxx121
-rw-r--r--sw/source/ui/inc/unotools.hxx218
-rw-r--r--sw/source/ui/inc/unotxvw.hxx262
-rw-r--r--sw/source/ui/inc/usrpref.hxx86
-rw-r--r--sw/source/ui/inc/utlui.hrc198
-rw-r--r--sw/source/ui/inc/view.hxx655
-rw-r--r--sw/source/ui/inc/web.hrc117
-rw-r--r--sw/source/ui/inc/wformsh.hxx79
-rw-r--r--sw/source/ui/inc/wfrmsh.hxx82
-rw-r--r--sw/source/ui/inc/wgrfsh.hxx79
-rw-r--r--sw/source/ui/inc/wlistsh.hxx76
-rw-r--r--sw/source/ui/inc/wolesh.hxx82
-rw-r--r--sw/source/ui/inc/workctrl.hxx228
-rw-r--r--sw/source/ui/inc/wrap.hxx185
-rw-r--r--sw/source/ui/inc/wrtsh.hxx611
-rw-r--r--sw/source/ui/inc/wtabsh.hxx76
-rw-r--r--sw/source/ui/inc/wtextsh.hxx82
-rw-r--r--sw/source/ui/inc/wview.hxx85
-rw-r--r--sw/source/ui/inc/zoomctrl.hxx88
-rw-r--r--sw/source/ui/index/cnttab.cxx4853
-rw-r--r--sw/source/ui/index/cnttab.hrc308
-rw-r--r--sw/source/ui/index/cnttab.src4444
-rw-r--r--sw/source/ui/index/idxmrk.cxx1892
-rw-r--r--sw/source/ui/index/idxmrk.hrc105
-rw-r--r--sw/source/ui/index/idxmrk.src1236
-rw-r--r--sw/source/ui/index/makefile.mk105
-rw-r--r--sw/source/ui/index/multmrk.cxx224
-rw-r--r--sw/source/ui/index/multmrk.hrc68
-rw-r--r--sw/source/ui/index/multmrk.src217
-rw-r--r--sw/source/ui/index/toxmgr.cxx798
-rw-r--r--sw/source/ui/lingu/cvdata.mac19
-rw-r--r--sw/source/ui/lingu/hyp.cxx505
-rw-r--r--sw/source/ui/lingu/makefile.mk100
-rw-r--r--sw/source/ui/lingu/olmenu.cxx895
-rw-r--r--sw/source/ui/lingu/olmenu.hrc87
-rw-r--r--sw/source/ui/lingu/olmenu.src298
-rw-r--r--sw/source/ui/makefile.mk320
-rw-r--r--sw/source/ui/misc/autocorr.src63
-rw-r--r--sw/source/ui/misc/bookmark.cxx452
-rw-r--r--sw/source/ui/misc/bookmark.hrc68
-rw-r--r--sw/source/ui/misc/bookmark.src199
-rw-r--r--sw/source/ui/misc/docfnote.cxx719
-rw-r--r--sw/source/ui/misc/docfnote.hrc92
-rw-r--r--sw/source/ui/misc/docfnote.src1577
-rw-r--r--sw/source/ui/misc/glosbib.cxx723
-rw-r--r--sw/source/ui/misc/glosbib.hrc73
-rw-r--r--sw/source/ui/misc/glosbib.src280
-rw-r--r--sw/source/ui/misc/glosdoc.cxx1101
-rw-r--r--sw/source/ui/misc/glossary.cxx1433
-rw-r--r--sw/source/ui/misc/glossary.hrc126
-rw-r--r--sw/source/ui/misc/glossary.src1169
-rw-r--r--sw/source/ui/misc/glshell.cxx515
-rw-r--r--sw/source/ui/misc/impfnote.hxx155
-rw-r--r--sw/source/ui/misc/insfnote.cxx487
-rw-r--r--sw/source/ui/misc/insfnote.hrc75
-rw-r--r--sw/source/ui/misc/insfnote.src318
-rw-r--r--sw/source/ui/misc/insrule.cxx377
-rw-r--r--sw/source/ui/misc/insrule.hrc69
-rw-r--r--sw/source/ui/misc/insrule.src171
-rw-r--r--sw/source/ui/misc/linenum.cxx431
-rw-r--r--sw/source/ui/misc/linenum.hrc84
-rw-r--r--sw/source/ui/misc/linenum.src729
-rw-r--r--sw/source/ui/misc/makefile.mk141
-rw-r--r--sw/source/ui/misc/num.cxx1000
-rw-r--r--sw/source/ui/misc/num.hrc80
-rw-r--r--sw/source/ui/misc/num.src755
-rw-r--r--sw/source/ui/misc/outline.cxx1371
-rw-r--r--sw/source/ui/misc/outline.hrc133
-rw-r--r--sw/source/ui/misc/outline.src1506
-rw-r--r--sw/source/ui/misc/pgfnote.cxx478
-rw-r--r--sw/source/ui/misc/pgfnote.hrc80
-rw-r--r--sw/source/ui/misc/pgfnote.src590
-rw-r--r--sw/source/ui/misc/redlndlg.cxx1708
-rw-r--r--sw/source/ui/misc/redlndlg.hrc72
-rw-r--r--sw/source/ui/misc/redlndlg.src347
-rw-r--r--sw/source/ui/misc/srtdlg.cxx459
-rw-r--r--sw/source/ui/misc/srtdlg.hrc93
-rw-r--r--sw/source/ui/misc/srtdlg.src1193
-rw-r--r--sw/source/ui/mui110
-rw-r--r--sw/source/ui/ribbar/conarc.cxx257
-rw-r--r--sw/source/ui/ribbar/conform.cxx193
-rw-r--r--sw/source/ui/ribbar/conpoly.cxx304
-rw-r--r--sw/source/ui/ribbar/conrect.cxx338
-rw-r--r--sw/source/ui/ribbar/drawbase.cxx873
-rw-r--r--sw/source/ui/ribbar/dselect.cxx253
-rw-r--r--sw/source/ui/ribbar/inputwin.cxx881
-rw-r--r--sw/source/ui/ribbar/inputwin.hrc118
-rw-r--r--sw/source/ui/ribbar/inputwin.src1137
-rw-r--r--sw/source/ui/ribbar/makefile.mk109
-rw-r--r--sw/source/ui/ribbar/tblctrl.cxx209
-rw-r--r--sw/source/ui/ribbar/tblctrl.hrc69
-rw-r--r--sw/source/ui/ribbar/tblctrl.src123
-rw-r--r--sw/source/ui/ribbar/tbxanchr.cxx240
-rw-r--r--sw/source/ui/ribbar/tbxanchr.src204
-rw-r--r--sw/source/ui/ribbar/tbxmgr.cxx304
-rw-r--r--sw/source/ui/ribbar/workctrl.cxx838
-rw-r--r--sw/source/ui/ribbar/workctrl.hrc118
-rw-r--r--sw/source/ui/ribbar/workctrl.src1936
-rw-r--r--sw/source/ui/shells/basesh.cxx2507
-rw-r--r--sw/source/ui/shells/beziersh.cxx488
-rw-r--r--sw/source/ui/shells/drawdlg.cxx439
-rw-r--r--sw/source/ui/shells/drawsh.cxx640
-rw-r--r--sw/source/ui/shells/drformsh.cxx375
-rw-r--r--sw/source/ui/shells/drwbassh.cxx762
-rw-r--r--sw/source/ui/shells/drwtxtex.cxx1021
-rw-r--r--sw/source/ui/shells/drwtxtsh.cxx815
-rw-r--r--sw/source/ui/shells/frmsh.cxx1082
-rw-r--r--sw/source/ui/shells/grfsh.cxx1010
-rw-r--r--sw/source/ui/shells/listsh.cxx362
-rw-r--r--sw/source/ui/shells/makefile.mk120
-rw-r--r--sw/source/ui/shells/olesh.cxx224
-rw-r--r--sw/source/ui/shells/shells.src2392
-rw-r--r--sw/source/ui/shells/slotadd.cxx423
-rw-r--r--sw/source/ui/shells/tabsh.cxx1575
-rw-r--r--sw/source/ui/shells/textdrw.cxx278
-rw-r--r--sw/source/ui/shells/textfld.cxx1175
-rw-r--r--sw/source/ui/shells/textglos.cxx209
-rw-r--r--sw/source/ui/shells/textidx.cxx437
-rw-r--r--sw/source/ui/shells/textsh.cxx1043
-rw-r--r--sw/source/ui/shells/textsh1.cxx1154
-rw-r--r--sw/source/ui/shells/textsh2.cxx777
-rw-r--r--sw/source/ui/shells/txtattr.cxx875
-rw-r--r--sw/source/ui/shells/txtcrsr.cxx412
-rw-r--r--sw/source/ui/shells/txtnum.cxx439
-rw-r--r--sw/source/ui/table/chartins.cxx609
-rw-r--r--sw/source/ui/table/chartins.hrc81
-rw-r--r--sw/source/ui/table/chartins.src349
-rw-r--r--sw/source/ui/table/colwd.cxx209
-rw-r--r--sw/source/ui/table/colwd.hrc70
-rw-r--r--sw/source/ui/table/colwd.src232
-rw-r--r--sw/source/ui/table/convert.cxx331
-rw-r--r--sw/source/ui/table/convert.hrc79
-rw-r--r--sw/source/ui/table/convert.src485
-rw-r--r--sw/source/ui/table/insrc.cxx203
-rw-r--r--sw/source/ui/table/insrc.hrc74
-rw-r--r--sw/source/ui/table/insrc.src305
-rw-r--r--sw/source/ui/table/instable.cxx308
-rw-r--r--sw/source/ui/table/instable.hrc78
-rw-r--r--sw/source/ui/table/instable.src430
-rw-r--r--sw/source/ui/table/makefile.mk127
-rw-r--r--sw/source/ui/table/mergetbl.cxx119
-rw-r--r--sw/source/ui/table/mergetbl.hrc66
-rw-r--r--sw/source/ui/table/mergetbl.src193
-rw-r--r--sw/source/ui/table/rowht.cxx228
-rw-r--r--sw/source/ui/table/rowht.hrc68
-rw-r--r--sw/source/ui/table/rowht.src186
-rw-r--r--sw/source/ui/table/splittbl.cxx136
-rw-r--r--sw/source/ui/table/splittbl.hrc68
-rw-r--r--sw/source/ui/table/splittbl.src245
-rw-r--r--sw/source/ui/table/table.src87
-rw-r--r--sw/source/ui/table/tabledlg.cxx2321
-rw-r--r--sw/source/ui/table/tabledlg.hrc137
-rw-r--r--sw/source/ui/table/tabledlg.src1600
-rw-r--r--sw/source/ui/table/tablemgr.cxx441
-rw-r--r--sw/source/ui/table/tablepg.hxx263
-rw-r--r--sw/source/ui/table/tautofmt.cxx1888
-rw-r--r--sw/source/ui/table/tautofmt.hrc113
-rw-r--r--sw/source/ui/table/tautofmt.src875
-rw-r--r--sw/source/ui/uiview/makefile.mk117
-rw-r--r--sw/source/ui/uiview/pview.cxx2322
-rw-r--r--sw/source/ui/uiview/pview.hrc108
-rw-r--r--sw/source/ui/uiview/pview.src988
-rw-r--r--sw/source/ui/uiview/scroll.cxx287
-rw-r--r--sw/source/ui/uiview/srcview.cxx1345
-rw-r--r--sw/source/ui/uiview/swcli.cxx308
-rw-r--r--sw/source/ui/uiview/uivwimp.cxx310
-rw-r--r--sw/source/ui/uiview/view.cxx1743
-rw-r--r--sw/source/ui/uiview/view.hrc125
-rw-r--r--sw/source/ui/uiview/view.src1166
-rw-r--r--sw/source/ui/uiview/view0.cxx270
-rw-r--r--sw/source/ui/uiview/view1.cxx272
-rw-r--r--sw/source/ui/uiview/view2.cxx1587
-rw-r--r--sw/source/ui/uiview/viewcoll.cxx249
-rw-r--r--sw/source/ui/uiview/viewdlg.cxx198
-rw-r--r--sw/source/ui/uiview/viewdlg2.cxx403
-rw-r--r--sw/source/ui/uiview/viewdraw.cxx809
-rw-r--r--sw/source/ui/uiview/viewfunc.hxx107
-rw-r--r--sw/source/ui/uiview/viewling.cxx841
-rw-r--r--sw/source/ui/uiview/viewmdi.cxx890
-rw-r--r--sw/source/ui/uiview/viewport.cxx1508
-rw-r--r--sw/source/ui/uiview/viewprt.cxx770
-rw-r--r--sw/source/ui/uiview/viewsrch.cxx940
-rw-r--r--sw/source/ui/uiview/viewstat.cxx606
-rw-r--r--sw/source/ui/uiview/viewtab.cxx1974
-rw-r--r--sw/source/ui/uno/dlelstnr.cxx164
-rw-r--r--sw/source/ui/uno/makefile.mk109
-rw-r--r--sw/source/ui/uno/unoatxt.cxx1292
-rw-r--r--sw/source/ui/uno/unomod.cxx781
-rw-r--r--sw/source/ui/uno/unotxdoc.cxx2818
-rw-r--r--sw/source/ui/uno/unotxvw.cxx1925
-rw-r--r--sw/source/ui/utlui/attrdesc.cxx1367
-rw-r--r--sw/source/ui/utlui/attrdesc.hrc149
-rw-r--r--sw/source/ui/utlui/attrdesc.src1953
-rw-r--r--sw/source/ui/utlui/bookctrl.cxx291
-rw-r--r--sw/source/ui/utlui/condedit.cxx179
-rw-r--r--sw/source/ui/utlui/content.cxx3223
-rw-r--r--sw/source/ui/utlui/glbltree.cxx1678
-rw-r--r--sw/source/ui/utlui/gloslst.cxx758
-rw-r--r--sw/source/ui/utlui/gloslst.hrc72
-rw-r--r--sw/source/ui/utlui/gloslst.src153
-rw-r--r--sw/source/ui/utlui/initui.cxx440
-rw-r--r--sw/source/ui/utlui/initui.hrc94
-rw-r--r--sw/source/ui/utlui/initui.src2303
-rw-r--r--sw/source/ui/utlui/makefile.mk146
-rw-r--r--sw/source/ui/utlui/navicfg.cxx189
-rw-r--r--sw/source/ui/utlui/navipi.cxx1814
-rw-r--r--sw/source/ui/utlui/navipi.hrc128
-rw-r--r--sw/source/ui/utlui/navipi.src1615
-rw-r--r--sw/source/ui/utlui/numfmtlb.cxx688
-rw-r--r--sw/source/ui/utlui/poolfmt.src4956
-rw-r--r--sw/source/ui/utlui/prcntfld.cxx486
-rw-r--r--sw/source/ui/utlui/shdwcrsr.cxx196
-rw-r--r--sw/source/ui/utlui/tmplctrl.cxx306
-rw-r--r--sw/source/ui/utlui/uiitems.cxx370
-rw-r--r--sw/source/ui/utlui/uitool.cxx1045
-rw-r--r--sw/source/ui/utlui/unotools.cxx700
-rw-r--r--sw/source/ui/utlui/unotools.hrc75
-rw-r--r--sw/source/ui/utlui/unotools.src330
-rw-r--r--sw/source/ui/utlui/utlui.src1624
-rw-r--r--sw/source/ui/utlui/zoomctrl.cxx175
-rw-r--r--sw/source/ui/web/makefile.mk113
-rw-r--r--sw/source/ui/web/wdocsh.cxx264
-rw-r--r--sw/source/ui/web/web.src623
-rw-r--r--sw/source/ui/web/wformsh.cxx146
-rw-r--r--sw/source/ui/web/wfrmsh.cxx170
-rw-r--r--sw/source/ui/web/wgrfsh.cxx147
-rw-r--r--sw/source/ui/web/wlistsh.cxx146
-rw-r--r--sw/source/ui/web/wolesh.cxx183
-rw-r--r--sw/source/ui/web/wtabsh.cxx154
-rw-r--r--sw/source/ui/web/wtextsh.cxx207
-rw-r--r--sw/source/ui/web/wview.cxx523
-rw-r--r--sw/source/ui/wrtsh/delete.cxx504
-rw-r--r--sw/source/ui/wrtsh/makefile.mk111
-rw-r--r--sw/source/ui/wrtsh/move.cxx823
-rw-r--r--sw/source/ui/wrtsh/select.cxx1010
-rw-r--r--sw/source/ui/wrtsh/wrtsh.hrc206
-rw-r--r--sw/source/ui/wrtsh/wrtsh.src2601
-rw-r--r--sw/source/ui/wrtsh/wrtsh1.cxx1630
-rw-r--r--sw/source/ui/wrtsh/wrtsh2.cxx805
-rw-r--r--sw/source/ui/wrtsh/wrtsh3.cxx468
-rw-r--r--sw/source/ui/wrtsh/wrtsh4.cxx289
-rw-r--r--sw/source/ui/wrtsh/wrtundo.cxx246
-rw-r--r--sw/util/hidother.hrc65
-rw-r--r--sw/util/hidother.src335
-rw-r--r--sw/util/makefile.mk468
-rw-r--r--sw/util/sw.map13
952 files changed, 522032 insertions, 0 deletions
diff --git a/sw/inc/acmplwrd.hxx b/sw/inc/acmplwrd.hxx
new file mode 100644
index 000000000000..046c44affe91
--- /dev/null
+++ b/sw/inc/acmplwrd.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: acmplwrd.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ACMPLWRD_HXX
+#define _ACMPLWRD_HXX
+
+
+#define _SVSTDARR_STRINGSISORTDTOR
+#include <svtools/svstdarr.hxx>
+
+
+class SwAutoCompleteWord
+{
+ SvStringsISortDtor aWordLst;
+ SvPtrarr aLRULst;
+ USHORT nMaxCount, nMinWrdLen;
+ BOOL bLockWordLst;
+public:
+ SwAutoCompleteWord( USHORT nWords = 500, USHORT nMWrdLen = 10 );
+ ~SwAutoCompleteWord();
+
+ BOOL InsertWord( const String& rWord );
+ BOOL RemoveWord( const String& rWord );
+ BOOL SearchWord( const String& rWord, USHORT* pFndPos = 0 ) const;
+
+ BOOL GetRange( const String& rWord, USHORT& rStt, USHORT& rEnd ) const;
+
+ BOOL SetToTop( const String& rWord );
+
+ USHORT Count() const { return aWordLst.Count(); }
+
+ const String& operator[]( USHORT n ) const { return *aWordLst[ n ]; }
+
+ BOOL IsLockWordLstLocked() const { return bLockWordLst; }
+ void SetLockWordLstLocked( BOOL bFlag ) { bLockWordLst = bFlag; }
+
+ USHORT GetMaxCount() const { return nMaxCount; }
+ void SetMaxCount( USHORT n );
+
+ USHORT GetMinWordLen() const { return nMinWrdLen; }
+ void SetMinWordLen( USHORT n );
+
+ const SvStringsISortDtor& GetWordList() const { return aWordLst; }
+ void CheckChangedList( const SvStringsISortDtor& rNewLst );
+};
+
+
+#endif
diff --git a/sw/inc/authfld.hxx b/sw/inc/authfld.hxx
new file mode 100644
index 000000000000..d0d69c949d28
--- /dev/null
+++ b/sw/inc/authfld.hxx
@@ -0,0 +1,222 @@
+/*************************************************************************
+ *
+ * $RCSfile: authfld.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _AUTHFLD_HXX
+#define _AUTHFLD_HXX
+
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _TOXE_HXX
+#include <toxe.hxx>
+#endif
+
+class SwAuthDataArr;
+/* -----------------21.09.99 13:32-------------------
+
+ --------------------------------------------------*/
+class SwAuthEntry
+{
+ String aAuthFields[AUTH_FIELD_END];
+ USHORT nRefCount;
+public:
+ SwAuthEntry() : nRefCount(0){}
+ SwAuthEntry( const SwAuthEntry& rCopy );
+ BOOL operator==(const SwAuthEntry& rComp);
+
+ BOOL GetFirstAuthorField(USHORT& nPos, String& rToFill)const;
+ BOOL GetNextAuthorField(USHORT& nPos, String& rToFill)const;
+ inline const String& GetAuthorField(ToxAuthorityField ePos)const;
+ inline void SetAuthorField(ToxAuthorityField ePos,
+ const String& rField);
+
+ void AddRef() { ++nRefCount; }
+ void RemoveRef() { --nRefCount; }
+ USHORT GetRefCount() { return nRefCount; }
+};
+/* -----------------20.10.99 16:49-------------------
+
+ --------------------------------------------------*/
+struct SwTOXSortKey
+{
+ ToxAuthorityField eField;
+ BOOL bSortAscending;
+ SwTOXSortKey() :
+ eField(AUTH_FIELD_END),
+ bSortAscending(TRUE){}
+};
+
+/* -----------------14.09.99 16:15-------------------
+
+ --------------------------------------------------*/
+class SvUShorts;
+class SwAuthorityField;
+class SvLongs;
+class SortKeyArr;
+class SwAuthorityFieldType : public SwFieldType
+{
+ SwDoc* m_pDoc;
+ SwAuthDataArr* m_pDataArr;
+ SvLongs* m_pSequArr;
+ SortKeyArr* m_pSortKeyArr;
+ char m_cPrefix;
+ char m_cSuffix;
+ BOOL m_bIsSequence :1;
+ BOOL m_bSortByDocument :1;
+
+ const SwAuthorityFieldType& operator=( const SwAuthorityFieldType& );
+
+public:
+ SwAuthorityFieldType(SwDoc* pDoc);
+ SwAuthorityFieldType( const SwAuthorityFieldType& );
+ ~SwAuthorityFieldType();
+
+ virtual SwFieldType* Copy() const;
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew );
+
+ inline SwDoc* GetDoc() const { return m_pDoc; }
+ inline void SetDoc(SwDoc* pNewDoc) { m_pDoc = pNewDoc; }
+
+ void RemoveField(long nHandle);
+ long AddField(const String& rFieldContents);
+ BOOL AddField(long nHandle);
+
+ const SwAuthEntry* GetEntryByHandle(long nHandle) const;
+
+ void GetAllEntryIdentifiers( SvStringsDtor& rToFill )const;
+ const SwAuthEntry* GetEntryByIdentifier(const String& rIdentifier)const;
+
+ void ChangeEntryContent(const SwAuthEntry* pNewEntry);
+ // import interface
+ USHORT AppendField(const SwAuthEntry& rInsert);
+ void MergeFieldType(const SwAuthorityFieldType& rNew, SvUShorts& rMap);
+ void RemoveUnusedFields();
+ long GetHandle(USHORT nPos);
+ USHORT GetPosition(long nHandle);
+
+ USHORT GetEntryCount() const;
+ const SwAuthEntry* GetEntryByPosition(USHORT nPos) const;
+
+ USHORT GetSequencePos(long nHandle);
+
+ BOOL IsSequence() const {return m_bIsSequence;}
+ void SetSequence(BOOL bSet) {m_bIsSequence = bSet;}
+
+ void SetPreSuffix(char cPre, char cSuf)
+ {
+ m_cPrefix = cPre;
+ m_cSuffix = cSuf;
+ }
+ char GetPrefix() const { return m_cPrefix;}
+ char GetSuffix() const { return m_cSuffix;}
+
+ BOOL IsSortByDocument() const {return m_bSortByDocument;}
+ void SetSortByDocument(BOOL bSet) {m_bSortByDocument = bSet;}
+
+ USHORT GetSortKeyCount() const ;
+ const SwTOXSortKey* GetSortKey(USHORT nIdx) const ;
+ void SetSortKeys(USHORT nKeyCount, SwTOXSortKey nKeys[]);
+
+ //initui.cxx
+ static const String& GetAuthFieldName(ToxAuthorityField eType);
+ static const String& GetAuthTypeName(ToxAuthorityType eType);
+
+};
+/* -----------------14.09.99 16:15-------------------
+
+ --------------------------------------------------*/
+class SwAuthorityField : public SwField
+{
+ long nHandle;
+
+public:
+ SwAuthorityField(SwAuthorityFieldType* pType, const String& rFieldContents);
+ SwAuthorityField(SwAuthorityFieldType* pType, long nHandle);
+ ~SwAuthorityField();
+
+ const String& GetFieldText(ToxAuthorityField eField) const;
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+ virtual void SetPar1(const String& rStr);
+ virtual SwFieldType* ChgTyp( SwFieldType* );
+
+ long GetHandle() const { return nHandle; }
+
+ //import interface
+ USHORT GetHandlePosition() const;
+};
+
+// --- inlines -----------------------------------------------------------
+inline const String& SwAuthEntry::GetAuthorField(ToxAuthorityField ePos)const
+{
+ if(AUTH_FIELD_END > ePos)
+ return aAuthFields[ePos];
+ else
+ return aEmptyStr;
+}
+inline void SwAuthEntry::SetAuthorField(ToxAuthorityField ePos, const String& rField)
+{
+ if(AUTH_FIELD_END > ePos)
+ aAuthFields[ePos] = rField;
+}
+
+#endif
+
diff --git a/sw/inc/authratr.hxx b/sw/inc/authratr.hxx
new file mode 100644
index 000000000000..c69d1fd3b4c3
--- /dev/null
+++ b/sw/inc/authratr.hxx
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * $RCSfile: authratr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _AUTHRATR_HXX
+#define _AUTHRATR_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+#ifndef _SV_COLOR_HXX //autogen
+#include <vcl/color.hxx>
+#endif
+
+#define COL_NONE TRGB_COLORDATA( 0x80, 0xFF, 0xFF, 0xFF )
+
+class AuthorCharAttr
+{
+public:
+ USHORT nItemId;
+ USHORT nAttr;
+ ULONG nColor;
+
+ AuthorCharAttr();
+
+ inline BOOL operator == ( const AuthorCharAttr& rAttr ) const
+ {
+ return nItemId == rAttr.nItemId && nAttr == rAttr.nAttr &&
+ nColor == rAttr.nColor;
+ }
+};
+
+
+#endif
diff --git a/sw/inc/bookmrk.hxx b/sw/inc/bookmrk.hxx
new file mode 100644
index 000000000000..ade83966be93
--- /dev/null
+++ b/sw/inc/bookmrk.hxx
@@ -0,0 +1,177 @@
+/*************************************************************************
+ *
+ * $RCSfile: bookmrk.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _BOOKMRK_HXX
+#define _BOOKMRK_HXX
+
+#include "hintids.hxx" //die Ids der Attribute, vor macitem damit die
+ //die Attribut richtig angezogen werden.
+#ifndef _SFXMACITEM_HXX
+#include <svtools/macitem.hxx>
+#endif
+
+#ifndef _KEYCOD_HXX //autogen
+#include <vcl/keycod.hxx>
+#endif
+#ifndef _SO2REF_HXX //autogen
+#include <so3/so2ref.hxx>
+#endif
+#ifndef _BKMRKE_HXX //autogen
+#include <bkmrke.hxx>
+#endif
+
+#include "calbck.hxx"
+
+#ifndef SW_DECL_SWSERVEROBJECT_DEFINED
+#define SW_DECL_SWSERVEROBJECT_DEFINED
+class SvPseudoObject;
+SO2_DECL_REF( SwServerObject )
+#endif
+
+
+struct SwPosition; // fwd Decl. wg. UI
+
+class SwBookmark : public SwModify
+{
+ friend class SwDoc; // fuers Loeschen
+ friend class Sw3IoImp; // fuers Setzen der Position(en)
+
+ SwPosition *pPos1, *pPos2; // wird im CTOR gesetzt, im DTOR geloescht
+ SwServerObjectRef refObj; // falls DataServer -> Pointer gesetzt
+
+protected:
+ SvxMacro aStartMacro;
+ SvxMacro aEndMacro;
+ String aName;
+ String aShortName;
+ KeyCode aCode;
+ BOOKMARK_TYPE eMarkType;
+
+public:
+ TYPEINFO();
+
+ SwBookmark(const SwPosition& aPos);
+ SwBookmark(const SwPosition& aPos,
+ const KeyCode& rCode,
+ const String& rName, const String& rShortName);
+ // Beim Loeschen von Text werden Bookmarks mitgeloescht!
+ ~SwBookmark();
+
+ const SwPosition& GetPos() const { return *pPos1; }
+ const SwPosition* GetOtherPos() const { return pPos2; }
+
+ // nicht undofaehig
+ void SetName(const String& rNewName) { aName = rNewName; }
+ const String& GetName() const { return aName; }
+ // nicht undofaehig
+ void SetShortName(const String& rNewSName) { aShortName = rNewSName; }
+ const String& GetShortName() const { return aShortName; }
+ // nicht undofaehig
+ void SetKeyCode(const KeyCode& rNewCode) { aCode = rNewCode; }
+ const KeyCode& GetKeyCode() const { return aCode; }
+
+ // Vergleiche auf Basis der Dokumentposition
+ BOOL operator < (const SwBookmark &) const;
+ BOOL operator ==(const SwBookmark &) const;
+ // falls man wirklich auf gleiche Position abfragen will.
+ BOOL IsEqualPos( const SwBookmark &rBM ) const;
+
+ BOOL IsBookMark() const { return BOOKMARK == eMarkType; }
+ BOOL IsMark() const { return MARK == eMarkType; }
+ BOOL IsDDEMark() const { return DDE_BOOKMARK == eMarkType; }
+ BOOL IsUNOMark() const { return UNO_BOOKMARK == eMarkType; }
+ void SetType( BOOKMARK_TYPE eNewType ) { eMarkType = eNewType; }
+
+ void SetStartMacro(const SvxMacro& rSt) { aStartMacro = rSt; }
+ const SvxMacro& GetStartMacro() { return aStartMacro; }
+ void SetEndMacro(const SvxMacro& rSt) { aEndMacro = rSt; }
+ const SvxMacro& GetEndMacro() { return aEndMacro; }
+
+ // Daten Server-Methoden
+ void SetRefObject( SvPseudoObject* pObj );
+ const SwServerObject* GetObject() const { return &refObj; }
+ SwServerObject* GetObject() { return &refObj; }
+ BOOL IsServer() const { return refObj.Is(); }
+
+private:
+ // fuer METWARE:
+ // es wird (vorerst) nicht kopiert und nicht zugewiesen
+ SwBookmark(const SwBookmark &);
+ SwBookmark &operator=(const SwBookmark &);
+};
+
+class SwMark: public SwBookmark
+{
+public:
+ SwMark(const SwPosition& aPos,
+ const KeyCode& rCode,
+ const String& rName, const String& rShortName);
+};
+
+class SwUNOMark: public SwBookmark
+{
+public:
+ SwUNOMark(const SwPosition& aPos,
+ const KeyCode& rCode,
+ const String& rName, const String& rShortName);
+};
+
+
+#endif
diff --git a/sw/inc/bparr.hxx b/sw/inc/bparr.hxx
new file mode 100644
index 000000000000..365fb2d66363
--- /dev/null
+++ b/sw/inc/bparr.hxx
@@ -0,0 +1,164 @@
+/*************************************************************************
+ *
+ * $RCSfile: bparr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _BPARR_HXX
+#define _BPARR_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#ifndef _DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+
+struct BlockInfo;
+class BigPtrArray;
+
+class BigPtrEntry
+{
+ friend class BigPtrArray;
+ BlockInfo* pBlock;
+ USHORT nOffset;
+protected:
+ BigPtrEntry() : pBlock(0), nOffset(0) {}
+ virtual ~BigPtrEntry() {}
+
+ inline ULONG GetPos() const;
+ inline BigPtrArray& GetArray() const;
+};
+typedef BigPtrEntry* ElementPtr;
+
+
+typedef BOOL (*FnForEach)( const ElementPtr&, void* pArgs );
+
+// 1000 Eintr„ge pro Block = etwas weniger als 4K
+#define MAXENTRY 1000
+
+
+// Anzahl Eintraege, die bei der Kompression frei bleiben duerfen
+// dieser Wert ist fuer den Worst Case, da wir MAXBLOCK mit ca 25%
+// Overhead definiert haben, reichen 80% = 800 Eintraege vollkommen aus
+// Will mann voellige Kompression haben, muss eben 100 angegeben werden.
+
+#define COMPRESSLVL 80
+
+struct BlockInfo { // Block-Info:
+ BigPtrArray* pBigArr; // in diesem Array steht der Block
+ ElementPtr* pData; // Datenblock
+ ULONG nStart, nEnd; // Start- und EndIndex
+ USHORT nElem; // Anzahl Elemente
+};
+
+class BigPtrArray
+{
+ BlockInfo** ppInf; // Block-Infos
+ ULONG nSize; // Anzahl Elemente
+ USHORT nMaxBlock; // akt. max Anzahl Bloecke
+ USHORT nBlock; // Anzahl Bloecke
+ USHORT nCur; // letzter Block
+
+ USHORT Index2Block( ULONG ) const; // Blocksuche
+ BlockInfo* InsBlock( USHORT ); // Block einfuegen
+ void BlockDel( USHORT ); // es wurden Bloecke geloescht
+ void UpdIndex( USHORT ); // Indexe neu berechnen
+
+protected:
+ // fuelle alle Bloecke auf.
+ // Der short gibt in Prozent an, wie voll die Bloecke werden sollen.
+ // Der ReturnWert besagt, das irgendetwas "getan" wurde
+ USHORT Compress( short = COMPRESSLVL );
+
+public:
+ BigPtrArray();
+ ~BigPtrArray();
+
+ ULONG Count() const { return nSize; }
+
+ void Insert( const ElementPtr& r, ULONG pos );
+// void Insert( const ElementPtr* p, ULONG n, ULONG pos );
+ void Remove( ULONG pos, ULONG n = 1 );
+ void Move( ULONG from, ULONG to );
+ void Replace( ULONG pos, const ElementPtr& r);
+
+ ElementPtr operator[]( ULONG ) const;
+ ULONG GetIndex( const ElementPtr, ULONG, ULONG ) const;
+ void ForEach( FnForEach fn, void* pArgs = NULL )
+ {
+ ForEach( 0, nSize, fn, pArgs );
+ }
+ void ForEach( ULONG nStart, ULONG nEnd, FnForEach fn, void* pArgs = NULL );
+};
+
+
+
+inline ULONG BigPtrEntry::GetPos() const
+{
+ DBG_ASSERT( this == pBlock->pData[ nOffset ], "Element nicht im Block" );
+ return pBlock->nStart + nOffset;
+}
+
+inline BigPtrArray& BigPtrEntry::GetArray() const
+{
+ return *pBlock->pBigArr;
+}
+
+
+#endif
diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
new file mode 100644
index 000000000000..e84370e4fc24
--- /dev/null
+++ b/sw/inc/calbck.hxx
@@ -0,0 +1,260 @@
+/*************************************************************************
+ *
+ * $RCSfile: calbck.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+/*************************************************************
+#* Service-Klassen
+ *************************************************************/
+
+/*
+#* Aendert sich ein Attribut in einem Format, so muss diese
+#* Aenderung an alle abhaengigen Formate und ueber sie an
+#* alle betroffenen Nodes propagiert werden. Dabei muss
+#* festgestellt werden, ob die Aenderung einen Effekt haben
+#* kann, oder ob das geaenderte Attribut von dem abhaengigen
+#* Format ueberdefiniert wird (so dass ohnehin der
+#* Attributwert des abhaengigen Formates den geaenderten
+#* Wert verdeckt). Weiterhin kann der betroffene Node
+#* feststellen, ob er von dem geaenderten Attribut Gebrauch
+#* macht (Beispiel: Linienabstand fuer Unterstreichung wurde
+#* geaendert, das Attribut Unterstreichung wurde aber nicht
+#* verwendet). So wird bei Aenderungen der minimale Aufwand
+#* zum Reformatieren erkannt.
+ */
+#ifndef _CALBCK_HXX
+#define _CALBCK_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+#ifndef _RTTI_HXX
+#include <tools/rtti.hxx>
+#endif
+
+class SwModify;
+class SwClientIter;
+class SfxPoolItem;
+class SvStream;
+
+// ----------
+// SwClient
+// ----------
+
+class SwClient
+{
+ friend class SwModify;
+ friend class SwClientIter;
+
+ SwClient *pLeft, *pRight; // fuer die AVL-Sortierung
+ BOOL bModifyLocked : 1; // wird in SwModify::Modify benutzt,
+ // eigentlich ein Member des SwModify
+ // aber aus Platzgruenden hier.
+ BOOL bInModify : 1; // ist in einem Modify. (Debug!!!)
+ BOOL bInDocDTOR : 1; // Doc wird zerstoert, nicht "abmelden"
+ BOOL bInCache : 1; // Ist im BorderAttrCache des Layout,
+ // Traegt sich dann im Modify aus!
+ BOOL bInSwFntCache : 1; // Ist im SwFont-Cache der Formatierung
+
+protected:
+ SwModify *pRegisteredIn;
+ SwClient(SwModify *pToRegisterIn);
+
+public:
+ inline SwClient();
+ virtual ~SwClient();
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+ const SwModify* GetRegisteredIn() const { return pRegisteredIn; }
+
+ //rtti, abgeleitete moegens gleichtun oder nicht. Wenn sie es gleichtun
+ //kann ueber die Abhaengigkeitsliste eines Modify typsicher gecastet
+ //werden.
+ TYPEINFO();
+
+ void LockModify() { bModifyLocked = TRUE; }
+ void UnlockModify() { bModifyLocked = FALSE; }
+ void SetInCache( BOOL bNew ) { bInCache = bNew; }
+ void SetInSwFntCache( BOOL bNew ) { bInSwFntCache = bNew; }
+ int IsModifyLocked() const { return bModifyLocked; }
+ int IsInDocDTOR() const { return bInDocDTOR; }
+ int IsInCache() const { return bInCache; }
+ int IsInSwFntCache() const { return bInSwFntCache; }
+
+ // erfrage vom Client Informationen
+ virtual BOOL GetInfo( SfxPoolItem& ) const;
+
+private:
+ SwClient( const SwClient& );
+ SwClient &operator=( const SwClient& );
+};
+
+inline SwClient::SwClient() :
+ pLeft(0), pRight(0), pRegisteredIn(0)
+{ bModifyLocked = bInModify = bInDocDTOR = bInCache = bInSwFntCache = FALSE; }
+
+
+// ----------
+// SwModify
+// ----------
+
+// Klasse hat eine doppelt Verkette Liste fuer die Abhaengigen.
+
+class SwModify: public SwClient
+{
+ friend SvStream& operator<<( SvStream& aS, SwModify & );
+
+ friend class SwClientIter;
+ SwClient* pRoot;
+
+ SwClient *_Remove(SwClient *pDepend);
+
+public:
+ SwModify(SwModify *pToRegisterIn );
+ virtual ~SwModify();
+ virtual void Modify( SfxPoolItem *pOldValue, SfxPoolItem *pNewValue );
+ void Add(SwClient *pDepend);
+ SwClient *Remove(SwClient *pDepend)
+ { return bInDocDTOR ? 0 : _Remove( pDepend ); }
+
+ const SwClient* GetDepends() const { return pRoot; }
+
+ // erfrage vom Client Informationen
+ virtual BOOL GetInfo( SfxPoolItem& ) const;
+
+ void SetInDocDTOR() { bInDocDTOR = TRUE; }
+
+ void CheckCaching( const USHORT nWhich );
+
+ BOOL IsLastDepend() const
+ { return pRoot && !pRoot->pLeft && !pRoot->pRight; }
+};
+
+// ----------
+// SwDepend
+// ----------
+
+/*
+ * Sehr sinnvolle Klasse, wenn ein Objekt von mehreren Objekten
+ * abhaengig ist. Diese sollte fuer jede Abhaengigkeit ein Objekt
+ * der Klasse SwDepend als Member haben.
+ */
+class SwDepend: public SwClient
+{
+private:
+ SwClient *pToTell;
+public:
+ SwClient* GetToTell() { return pToTell; }
+ virtual void Modify( SfxPoolItem *pOldValue, SfxPoolItem *pNewValue );
+ SwDepend(SwClient *pTellHim, SwModify *pDepend);
+
+ // erfrage vom Client Informationen
+ virtual BOOL GetInfo( SfxPoolItem & ) const;
+};
+
+
+class SwClientIter
+{
+ friend SwClient* SwModify::_Remove(SwClient *); // fuer Ptr-Korrektur
+ friend void SwModify::Add(SwClient *); // nur fuer ASSERT !
+
+ SwModify& rRoot;
+ SwClient *pAkt, *pDelNext;
+ // fuers Updaten der aller Iteratoren beim Einfuegen/Loeschen von
+ // Clients, wenn der Iterator gerade draufsteht.
+ SwClientIter *pNxtIter;
+ TypeId aSrchId; // fuer First/Next - suche diesen Type
+
+public:
+ SwClientIter( SwModify& );
+ ~SwClientIter();
+
+ const SwModify& GetModify() const { return rRoot; }
+ SwModify& GetModify() { return rRoot; }
+
+#ifndef CFRONT
+ SwClient* operator++(int); // zum Naechsten
+ SwClient* operator--(int); // zum Vorherigen
+#endif
+ SwClient* operator++(); // zum Naechsten
+ SwClient* operator--(); // zum Vorherigen
+
+ SwClient* GoStart(); // zum Anfang
+ SwClient* GoEnd(); // zum Ende
+
+ inline SwClient* GoRoot(); // wieder ab Root (==Start) anfangen
+
+ SwClient* operator()() const
+ { return pDelNext == pAkt ? pAkt : pDelNext; }
+
+ int IsChanged() const { return pDelNext != pAkt; }
+
+ SwClient* First( TypeId nType );
+ SwClient* Next();
+};
+
+inline SwClient* SwClientIter::GoRoot() // wieder ab Root anfangen
+{
+ pAkt = rRoot.pRoot;
+ return (pDelNext = pAkt);
+}
+
+
+
+#endif
diff --git a/sw/inc/calc.hxx b/sw/inc/calc.hxx
new file mode 100644
index 000000000000..b839ffe26463
--- /dev/null
+++ b/sw/inc/calc.hxx
@@ -0,0 +1,261 @@
+/*************************************************************************
+ *
+ * $RCSfile: calc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CALC_HXX
+#define _CALC_HXX
+
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef __SBX_SBXVALUE //autogen
+#include <svtools/sbxvar.hxx>
+#endif
+
+class CharClass;
+class International;
+class SwFieldType;
+class SwDoc;
+
+#define TBLSZ 47 // sollte Primzahl sein, wegen HashTable
+
+const sal_Unicode cListDelim = '|';
+
+/******************************************************************************
+ * Calculate Operations
+ ******************************************************************************/
+enum SwCalcOper
+{
+ CALC_NAME, CALC_NUMBER, CALC_ENDCALC,
+ CALC_PLUS='+', CALC_MINUS='-', CALC_MUL='*',
+ CALC_DIV='/', CALC_PRINT=';', CALC_ASSIGN='=',
+ CALC_LP='(', CALC_RP=')', CALC_PHD='%',
+ CALC_POW='^',
+ CALC_LISTOP = cListDelim,
+ CALC_NOT=256, CALC_AND=257, CALC_OR=258,
+ CALC_XOR=259, CALC_EQ=260, CALC_NEQ=261,
+ CALC_LEQ=262, CALC_GEQ=263, CALC_LES=264,
+ CALC_GRE=265, CALC_SUM=266, CALC_MEAN=267,
+ CALC_SQRT=268, CALC_MIN=269, CALC_MIN_IN=270,
+ CALC_MAX=271, CALC_MAX_IN=272, CALC_SIN=273,
+ CALC_COS=274, CALC_TAN=275, CALC_ASIN=276,
+ CALC_ACOS=278, CALC_ATAN=279, CALC_TDIF=280,
+ CALC_ROUND=281
+};
+
+//-- Calculate Operations Strings -----------------------------------------
+
+extern const sal_Char __FAR_DATA sCalc_Add[];
+extern const sal_Char __FAR_DATA sCalc_Sub[];
+extern const sal_Char __FAR_DATA sCalc_Mul[];
+extern const sal_Char __FAR_DATA sCalc_Div[];
+extern const sal_Char __FAR_DATA sCalc_Phd[];
+extern const sal_Char __FAR_DATA sCalc_Sqrt[];
+extern const sal_Char __FAR_DATA sCalc_Pow[];
+extern const sal_Char __FAR_DATA sCalc_Or[];
+extern const sal_Char __FAR_DATA sCalc_Xor[];
+extern const sal_Char __FAR_DATA sCalc_And[];
+extern const sal_Char __FAR_DATA sCalc_Not[];
+extern const sal_Char __FAR_DATA sCalc_Eq[];
+extern const sal_Char __FAR_DATA sCalc_Neq[];
+extern const sal_Char __FAR_DATA sCalc_Leq[];
+extern const sal_Char __FAR_DATA sCalc_Geq[];
+extern const sal_Char __FAR_DATA sCalc_L[];
+extern const sal_Char __FAR_DATA sCalc_G[];
+extern const sal_Char __FAR_DATA sCalc_Sum[];
+extern const sal_Char __FAR_DATA sCalc_Mean[];
+extern const sal_Char __FAR_DATA sCalc_Min[];
+extern const sal_Char __FAR_DATA sCalc_Max[];
+extern const sal_Char __FAR_DATA sCalc_Sin[];
+extern const sal_Char __FAR_DATA sCalc_Cos[];
+extern const sal_Char __FAR_DATA sCalc_Tan[];
+extern const sal_Char __FAR_DATA sCalc_Asin[];
+extern const sal_Char __FAR_DATA sCalc_Acos[];
+extern const sal_Char __FAR_DATA sCalc_Atan[];
+extern const sal_Char __FAR_DATA sCalc_Tdif[];
+extern const sal_Char __FAR_DATA sCalc_Round[];
+
+/******************************************************************************
+ * Calculate ErrorCodes
+ ******************************************************************************/
+enum SwCalcError
+{
+ CALC_NOERR=0,
+ CALC_SYNTAX, // Syntax Fehler
+ CALC_ZERODIV, // Division durch Null
+ CALC_BRACK, // Fehlerhafte Klammerung
+ CALC_POWERR, // Ueberlauf in Quadratfunktion
+ CALC_VARNFND, // Variable wurde nicht gefunden
+ CALC_OVERFLOW, // Ueberlauf
+ CALC_WRONGTIME // falsches Zeitformat
+};
+
+class SwSbxValue : public SbxValue
+{
+public:
+ //JP 03.02.99: immer auf eine Zahl defaulten, damit auch gerechnet wird.
+ // Ansonsten wird daraus ein SbxEMPTY und damit ist nichts
+ // anzufangen.
+ SwSbxValue( long n = 0 ) { PutLong( n ); }
+ SwSbxValue( const double& rD ) { PutDouble( rD ); }
+ SwSbxValue( const SwSbxValue& rVal ) : SbxValue( rVal ) {}
+ virtual ~SwSbxValue();
+
+ // Strings sonderbehandeln
+ BOOL GetBool() const;
+ // Strings sonderbehandeln
+ double GetDouble() const;
+ SwSbxValue& MakeDouble();
+};
+
+/******************************************************************************
+ * Calculate HashTables fuer VarTable und Operations
+ ******************************************************************************/
+struct SwHash
+{
+ SwHash( const String& rStr );
+ virtual ~SwHash();
+ String aStr;
+ SwHash *pNext;
+};
+
+struct SwCalcExp : public SwHash
+{
+ SwSbxValue nValue;
+ const SwFieldType* pFldType;
+
+ SwCalcExp( const String& rStr, const SwSbxValue& rVal,
+ const SwFieldType* pFldType = 0 );
+};
+
+SwHash* Find( const String& rSrch, SwHash** ppTable,
+ USHORT nTblSize, USHORT* pPos = 0 );
+
+void DeleteHashTable( SwHash** ppTable, USHORT nTblSize );
+
+// falls _CalcOp != 0, dann ist das ein gueltiger Operator
+struct _CalcOp;
+_CalcOp* FindOperator( const String& rSearch );
+
+/******************************************************************************
+ * class SwCalc
+ ******************************************************************************/
+class SwCalc
+{
+ SwHash* VarTable[ TBLSZ ];
+ String aVarName, sCurrSym;
+ String sCommand;
+ SvPtrarr aRekurStk;
+ SwSbxValue nLastLeft;
+ SwSbxValue nNumberValue;
+ SwCalcExp aErrExpr;
+ xub_StrLen nCommandPos;
+
+ SwDoc& rDoc;
+ International* pInter;
+ CharClass* pCharClass;
+
+ USHORT nListPor;
+ SwCalcOper eCurrOper;
+ SwCalcOper eCurrListOper;
+ SwCalcError eError;
+
+
+ SwCalcOper GetToken();
+ SwSbxValue Expr();
+ SwSbxValue Term();
+ SwSbxValue Prim();
+
+ BOOL ParseTime( USHORT*, USHORT*, USHORT* );
+
+ String GetColumnName( const String& rName );
+ String GetDBName( const String& rName );
+
+ // dont call this methods
+ SwCalc( const SwCalc& );
+ SwCalc& operator=( const SwCalc& );
+
+public:
+ SwCalc( SwDoc& rD );
+ ~SwCalc();
+
+ SwSbxValue Calculate( const String &rStr );
+ String GetStrResult( const SwSbxValue& rValue, BOOL bRound = TRUE );
+ String GetStrResult( double, BOOL bRound = TRUE );
+
+ SwCalcExp* VarInsert( const String& r );
+ SwCalcExp* VarLook( const String &rStr, USHORT ins = 0 );
+ void VarChange( const String& rStr, const SwSbxValue& rValue );
+ void VarChange( const String& rStr, double );
+ SwHash** GetVarTable() { return VarTable; }
+
+ BOOL Push( const VoidPtr pPtr );
+ void Pop( const VoidPtr pPtr );
+
+ void SetCalcError( SwCalcError eErr ) { eError = eErr; }
+ BOOL IsCalcError() const { return eError; }
+
+ static FASTBOOL Str2Double( const String& rStr, xub_StrLen& rPos,
+ double& rVal,
+ const International* pInter = 0 );
+};
+
+#endif
diff --git a/sw/inc/cellatr.hxx b/sw/inc/cellatr.hxx
new file mode 100644
index 000000000000..e2fa5a71b4b2
--- /dev/null
+++ b/sw/inc/cellatr.hxx
@@ -0,0 +1,178 @@
+/*************************************************************************
+ *
+ * $RCSfile: cellatr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _CELLATR_HXX
+#define _CELLATR_HXX
+
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _ZFORLIST_HXX //autogen
+#include <svtools/zforlist.hxx>
+#endif
+
+#include "format.hxx"
+#include "cellfml.hxx"
+
+
+class SwTblBoxNumFormat : public SfxUInt32Item
+{
+ BOOL bAuto; // automatisch vergebenes Flag
+public:
+ SwTblBoxNumFormat( UINT32 nFormat = NUMBERFORMAT_TEXT,
+ BOOL bAuto = FALSE );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual USHORT GetVersion( USHORT nFileVersion) const;
+
+ inline SwTblBoxNumFormat& operator=( const SwTblBoxNumFormat& rAttr )
+ {
+ SetValue( rAttr.GetValue() );
+ SetAutoFlag( rAttr.GetAutoFlag() );
+ return *this;
+ }
+
+ BOOL GetAutoFlag() const { return bAuto; }
+ void SetAutoFlag( BOOL bFlag = TRUE ) { bAuto = bFlag; }
+};
+
+class SwTblBoxFormula : public SfxPoolItem, public SwTableFormula
+{
+ SwModify* pDefinedIn; // Modify-Object, in dem die Formel steht
+ // kann nur TablenBoxFormat sein
+
+public:
+ SwTblBoxFormula( const String& rFormula );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual USHORT GetVersion( USHORT nFileVersion) const;
+
+ // erfrage und setze den Modify-Pointer
+ inline const SwModify* GetDefinedIn() const { return pDefinedIn; }
+ inline void ChgDefinedIn( const SwModify* pNew )
+ { pDefinedIn = (SwModify*)pNew; }
+ // suche den Node, in dem die Formel steht:
+ // BoxAttribut -> BoxStartNode
+ virtual const SwNode* GetNodeOfFormula() const;
+
+ SwTableBox* GetTableBox();
+ const SwTableBox* GetTableBox() const
+ { return ((SwTblBoxFormula*)this)->GetTableBox(); }
+
+ // Status aendern
+ void ChangeState( const SfxPoolItem* pItem );
+ // berechne die Formel
+ void Calc( SwTblCalcPara& rCalcPara, double& rValue );
+};
+
+class SwTblBoxValue : public SfxPoolItem
+{
+ double nValue;
+public:
+ SwTblBoxValue();
+ SwTblBoxValue( const double aVal );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual USHORT GetVersion( USHORT nFileVersion) const;
+
+ inline SwTblBoxValue& operator=( const SwTblBoxValue& rCmp )
+ {
+ nValue = rCmp.nValue;
+ return *this;
+ }
+
+ double GetValue() const { return nValue; }
+ void SetValue( const double nVal ) { nValue = nVal; }
+};
+
+
+
+//***************************************************************************
+
+inline const SwTblBoxNumFormat &SwAttrSet::GetTblBoxNumFmt(BOOL bInP) const
+ { return (const SwTblBoxNumFormat&)Get( RES_BOXATR_FORMAT,bInP); }
+inline const SwTblBoxFormula &SwAttrSet::GetTblBoxFormula(BOOL bInP) const
+ { return (const SwTblBoxFormula&)Get( RES_BOXATR_FORMULA,bInP); }
+inline const SwTblBoxValue &SwAttrSet::GetTblBoxValue(BOOL bInP) const
+ { return (const SwTblBoxValue&)Get( RES_BOXATR_VALUE, bInP); }
+
+//***************************************************************************
+
+inline const SwTblBoxNumFormat &SwFmt::GetTblBoxNumFmt(BOOL bInP) const
+ { return aSet.GetTblBoxNumFmt(bInP); }
+inline const SwTblBoxFormula &SwFmt::GetTblBoxFormula(BOOL bInP) const
+ { return aSet.GetTblBoxFormula(bInP); }
+inline const SwTblBoxValue &SwFmt::GetTblBoxValue(BOOL bInP) const
+ { return aSet.GetTblBoxValue(bInP); }
+
+#endif
diff --git a/sw/inc/cellfml.hxx b/sw/inc/cellfml.hxx
new file mode 100644
index 000000000000..89d7ba9a2910
--- /dev/null
+++ b/sw/inc/cellfml.hxx
@@ -0,0 +1,197 @@
+/*************************************************************************
+ *
+ * $RCSfile: cellfml.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _CELLFML_HXX
+#define _CELLFML_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+class SwTable;
+class SwNode;
+class SwTableSortBoxes;
+class SwSelBoxes;
+class SwCalc;
+class SwTableBox;
+class SwTableFmlUpdate;
+
+class SwTblCalcPara
+{
+ const SwTableBox* pLastTblBox;
+ USHORT nStackCnt, nMaxSize;
+
+public:
+ SwTableSortBoxes *pBoxStk; // Stack fuers erkennen von Rekursionen !
+ SwCalc& rCalc; // akt. Calculator
+ const SwTable* pTbl; // akt. Tabelle
+
+ SwTblCalcPara( SwCalc& rCalculator, const SwTable& rTable );
+ ~SwTblCalcPara();
+
+ BOOL CalcWithStackOverflow();
+ BOOL IsStackOverFlow() const { return nMaxSize == nStackCnt; }
+ BOOL IncStackCnt() { return nMaxSize == ++nStackCnt; }
+ void DecStackCnt() { if( nStackCnt ) --nStackCnt; }
+ void SetLastTblBox( const SwTableBox* pBox ) { pLastTblBox = pBox; }
+};
+
+
+
+class SwTableFormula
+{
+typedef void (SwTableFormula:: *FnScanFormel)( const SwTable&, String&,
+ String&, String*, void* ) const;
+
+ void BoxNmsToPtr( const SwTable&, String&, String&, String* = 0,
+ void* pPara = 0 ) const;
+ void PtrToBoxNms( const SwTable&, String&, String&, String* = 0,
+ void* pPara = 0 ) const;
+ void RelNmsToBoxNms( const SwTable&, String&, String&, String* = 0,
+ void* pPara = 0 ) const;
+ void RelBoxNmsToPtr( const SwTable&, String&, String&, String* = 0,
+ void* pPara = 0 ) const;
+ void BoxNmsToRelNm( const SwTable&, String&, String&, String* = 0,
+ void* pPara = 0 ) const;
+ void _MakeFormel( const SwTable&, String&, String&, String* = 0,
+ void* pPara = 0 ) const;
+ void _GetFmlBoxes( const SwTable&, String&, String&, String* = 0,
+ void* pPara = 0 ) const;
+ void _HasValidBoxes( const SwTable&, String&, String&, String* = 0,
+ void* pPara = 0 ) const;
+ void _SplitMergeBoxNm( const SwTable&, String&, String&, String* = 0,
+ void* pPara = 0 ) const;
+
+ void GetBoxes( const SwTableBox& rStt, const SwTableBox& rEnd,
+ SwSelBoxes& rBoxes ) const;
+ String ScanString( FnScanFormel fnFormel, const SwTable& rTbl,
+ void* = 0 ) const;
+
+ const SwTable* FindTable( SwDoc& rDoc, const String& rNm ) const;
+
+protected:
+ enum NameType { EXTRNL_NAME, INTRNL_NAME, REL_NAME };
+
+ String sFormel; // akt. Formel
+ NameType eNmType; // akt. Darstellungs Art
+ BOOL bValidValue; // TRUE: Formel neu berechnen
+
+ // suche den Node, in dem die Formel steht:
+ // TextFeld -> TextNode,
+ // BoxAttribut -> BoxStartNode
+ // !!! MUSS VON JEDER ABLEITUNG UEBERLADEN WERDEN !!!
+ virtual const SwNode* GetNodeOfFormula() const = 0;
+
+ SwTableFormula( const String& rFormel );
+
+ String MakeFormel( SwTblCalcPara& rCalcPara ) const
+ {
+ return ScanString( &SwTableFormula::_MakeFormel,
+ *rCalcPara.pTbl, &rCalcPara );
+ }
+
+ static USHORT GetLnPosInTbl( const SwTable& rTbl, const SwTableBox* pBox );
+
+public:
+
+ SwTableFormula( const SwTableFormula& rCpy ) { *this = rCpy; }
+ SwTableFormula& operator=( const SwTableFormula& rCpy )
+ {
+ sFormel = rCpy.sFormel;
+ eNmType = rCpy.eNmType;
+ bValidValue = rCpy.bValidValue;
+ return *this;
+ }
+
+ // erzeuge aus der internen (fuer CORE) die externe (fuer UI) Formel
+ void PtrToBoxNm( const SwTable* pTbl );
+ // erzeuge aus der externen (fuer UI) die interne (fuer CORE) Formel
+ void BoxNmToPtr( const SwTable* pTbl );
+ // erzeuge aus der externen/internen Formel die relative Formel
+ void ToRelBoxNm( const SwTable* pTbl );
+ // wird vorm/nach dem mergen/splitten von Tabellen rerufen
+ void ToSplitMergeBoxNm( SwTableFmlUpdate& rTblUpd );
+
+ // ist gerade eine intern Darstellung aktiv
+ BOOL IsIntrnlName() const { return eNmType == INTRNL_NAME; }
+ // erfrage die akt. Darstellung der Formel
+ NameType GetNameType() const { return eNmType; }
+
+ // erfrage/setze das Flag, ob der akt. Wert gueltig ist
+ BOOL IsValid() const { return bValidValue; }
+ inline void ChgValid( BOOL bNew ) { bValidValue = bNew; }
+
+ const String& GetFormula() const { return sFormel; }
+ void SetFormula( const String& rNew )
+ {
+ sFormel = rNew;
+ bValidValue = FALSE;
+ eNmType = EXTRNL_NAME;
+ }
+
+ USHORT GetBoxesOfFormula( const SwTable& rTbl, SwSelBoxes& rBoxes );
+ // sind alle Boxen gueltig, auf die sich die Formel bezieht?
+ BOOL HasValidBoxes() const;
+};
+
+
+
+#endif
diff --git a/sw/inc/charatr.hxx b/sw/inc/charatr.hxx
new file mode 100644
index 000000000000..7e65a2d47737
--- /dev/null
+++ b/sw/inc/charatr.hxx
@@ -0,0 +1,180 @@
+/*************************************************************************
+ *
+ * $RCSfile: charatr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CHARATR_HXX
+#define _CHARATR_HXX
+
+#include "format.hxx"
+#include "hintids.hxx" // fuer die WhichIds
+
+
+/******************************************************************************
+ * Implementierung der Charakter-Attribut Methoden vom SwAttrSet
+ * AMA 12.10.94: Umstellung auf SvxItems.
+ ******************************************************************************/
+
+inline const SvxPostureItem &SwAttrSet::GetPosture(BOOL bInP) const
+ { return (const SvxPostureItem&)Get( RES_CHRATR_POSTURE,bInP); }
+inline const SvxPostureItem &SwAttrSet::GetCJKPosture(BOOL bInP) const
+ { return (const SvxPostureItem&)Get( RES_CHRATR_CJK_POSTURE,bInP); }
+inline const SvxPostureItem &SwAttrSet::GetCTLPosture(BOOL bInP) const
+ { return (const SvxPostureItem&)Get( RES_CHRATR_CTL_POSTURE,bInP); }
+inline const SvxWeightItem &SwAttrSet::GetWeight(BOOL bInP) const
+ { return (const SvxWeightItem&)Get( RES_CHRATR_WEIGHT,bInP); }
+inline const SvxWeightItem &SwAttrSet::GetCJKWeight(BOOL bInP) const
+ { return (const SvxWeightItem&)Get( RES_CHRATR_CJK_WEIGHT,bInP); }
+inline const SvxWeightItem &SwAttrSet::GetCTLWeight(BOOL bInP) const
+ { return (const SvxWeightItem&)Get( RES_CHRATR_CTL_WEIGHT,bInP); }
+inline const SvxShadowedItem &SwAttrSet::GetShadowed(BOOL bInP) const
+ { return (const SvxShadowedItem&)Get( RES_CHRATR_SHADOWED,bInP); }
+inline const SvxAutoKernItem &SwAttrSet::GetAutoKern(BOOL bInP) const
+ { return (const SvxAutoKernItem&)Get( RES_CHRATR_AUTOKERN,bInP); }
+inline const SvxWordLineModeItem &SwAttrSet::GetWordLineMode(BOOL bInP) const
+ { return (const SvxWordLineModeItem&)Get( RES_CHRATR_WORDLINEMODE,bInP); }
+inline const SvxContourItem &SwAttrSet::GetContour(BOOL bInP) const
+ { return (const SvxContourItem&)Get( RES_CHRATR_CONTOUR,bInP); }
+inline const SvxKerningItem &SwAttrSet::GetKerning(BOOL bInP) const
+ { return (const SvxKerningItem&)Get( RES_CHRATR_KERNING,bInP); }
+inline const SvxUnderlineItem &SwAttrSet::GetUnderline(BOOL bInP) const
+ { return (const SvxUnderlineItem&)Get( RES_CHRATR_UNDERLINE,bInP); }
+inline const SvxCrossedOutItem &SwAttrSet::GetCrossedOut(BOOL bInP) const
+ { return (const SvxCrossedOutItem&)Get( RES_CHRATR_CROSSEDOUT,bInP); }
+inline const SvxFontHeightItem &SwAttrSet::GetSize(BOOL bInP) const
+ { return (const SvxFontHeightItem&)Get( RES_CHRATR_FONTSIZE,bInP); }
+inline const SvxFontHeightItem &SwAttrSet::GetCJKSize(BOOL bInP) const
+ { return (const SvxFontHeightItem&)Get( RES_CHRATR_CJK_FONTSIZE,bInP); }
+inline const SvxFontHeightItem &SwAttrSet::GetCTLSize(BOOL bInP) const
+ { return (const SvxFontHeightItem&)Get( RES_CHRATR_CTL_FONTSIZE,bInP); }
+inline const SvxPropSizeItem &SwAttrSet::GetPropSize(BOOL bInP) const
+ { return (const SvxPropSizeItem&)Get( RES_CHRATR_PROPORTIONALFONTSIZE,bInP); }
+inline const SvxFontItem &SwAttrSet::GetFont(BOOL bInP) const
+ { return (const SvxFontItem&)Get( RES_CHRATR_FONT,bInP); }
+inline const SvxFontItem &SwAttrSet::GetCJKFont(BOOL bInP) const
+ { return (const SvxFontItem&)Get( RES_CHRATR_CJK_FONT,bInP); }
+inline const SvxFontItem &SwAttrSet::GetCTLFont(BOOL bInP) const
+ { return (const SvxFontItem&)Get( RES_CHRATR_CTL_FONT,bInP); }
+inline const SvxColorItem &SwAttrSet::GetColor(BOOL bInP) const
+ { return (const SvxColorItem&)Get( RES_CHRATR_COLOR,bInP); }
+inline const SvxCharSetColorItem &SwAttrSet::GetCharSetColor(BOOL bInP) const
+ { return (const SvxCharSetColorItem&)Get( RES_CHRATR_CHARSETCOLOR,bInP); }
+inline const SvxLanguageItem &SwAttrSet::GetLanguage(BOOL bInP) const
+ { return (const SvxLanguageItem&)Get( RES_CHRATR_LANGUAGE,bInP); }
+inline const SvxLanguageItem &SwAttrSet::GetCJKLanguage(BOOL bInP) const
+ { return (const SvxLanguageItem&)Get( RES_CHRATR_CJK_LANGUAGE,bInP); }
+inline const SvxLanguageItem &SwAttrSet::GetCTLLanguage(BOOL bInP) const
+ { return (const SvxLanguageItem&)Get( RES_CHRATR_CTL_LANGUAGE,bInP); }
+inline const SvxEscapementItem &SwAttrSet::GetEscapement(BOOL bInP) const
+ { return (const SvxEscapementItem&)Get( RES_CHRATR_ESCAPEMENT,bInP); }
+inline const SvxCaseMapItem &SwAttrSet::GetCaseMap(BOOL bInP) const
+ { return (const SvxCaseMapItem&)Get( RES_CHRATR_CASEMAP,bInP); }
+inline const SvxNoHyphenItem &SwAttrSet::GetNoHyphenHere(BOOL bInP) const
+ { return (const SvxNoHyphenItem&)Get( RES_CHRATR_NOHYPHEN,bInP); }
+inline const SvxBlinkItem &SwAttrSet::GetBlink(BOOL bInP) const
+ { return (const SvxBlinkItem&)Get( RES_CHRATR_BLINK,bInP); }
+inline const SvxBrushItem &SwAttrSet::GetChrBackground( BOOL bInP ) const
+ { return (const SvxBrushItem&)Get( RES_CHRATR_BACKGROUND, bInP ); }
+
+/******************************************************************************
+ * Implementierung der Charakter-Attribut Methoden vom SwFmt
+ * AMA: 12.10.94: Umstellung auf SvxItems.
+ ******************************************************************************/
+
+inline const SvxPostureItem &SwFmt::GetPosture(BOOL bInP) const
+ { return aSet.GetPosture(bInP); }
+inline const SvxWeightItem &SwFmt::GetWeight(BOOL bInP) const
+ { return aSet.GetWeight(bInP); }
+inline const SvxShadowedItem &SwFmt::GetShadowed(BOOL bInP) const
+ { return aSet.GetShadowed(bInP); }
+inline const SvxAutoKernItem &SwFmt::GetAutoKern(BOOL bInP) const
+ { return aSet.GetAutoKern(bInP); }
+inline const SvxWordLineModeItem &SwFmt::GetWordLineMode(BOOL bInP) const
+ { return aSet.GetWordLineMode(bInP); }
+inline const SvxContourItem &SwFmt::GetContour(BOOL bInP) const
+ { return aSet.GetContour(bInP); }
+inline const SvxKerningItem &SwFmt::GetKerning(BOOL bInP) const
+ { return aSet.GetKerning(bInP); }
+inline const SvxUnderlineItem &SwFmt::GetUnderline(BOOL bInP) const
+ { return aSet.GetUnderline(bInP); }
+inline const SvxCrossedOutItem &SwFmt::GetCrossedOut(BOOL bInP) const
+ { return aSet.GetCrossedOut(bInP); }
+inline const SvxFontHeightItem &SwFmt::GetSize(BOOL bInP) const
+ { return aSet.GetSize(bInP); }
+inline const SvxPropSizeItem &SwFmt::GetPropSize(BOOL bInP) const
+ { return aSet.GetPropSize(bInP); }
+inline const SvxFontItem &SwFmt::GetFont(BOOL bInP) const
+ { return aSet.GetFont(bInP); }
+inline const SvxColorItem &SwFmt::GetColor(BOOL bInP) const
+ { return aSet.GetColor(bInP); }
+inline const SvxCharSetColorItem &SwFmt::GetCharSetColor(BOOL bInP) const
+ { return aSet.GetCharSetColor(bInP); }
+inline const SvxLanguageItem &SwFmt::GetLanguage(BOOL bInP) const
+ { return aSet.GetLanguage(bInP); }
+inline const SvxEscapementItem &SwFmt::GetEscapement(BOOL bInP) const
+ { return aSet.GetEscapement(bInP); }
+inline const SvxCaseMapItem &SwFmt::GetCaseMap(BOOL bInP) const
+ { return aSet.GetCaseMap(bInP); }
+inline const SvxNoHyphenItem &SwFmt::GetNoHyphenHere(BOOL bInP) const
+ { return aSet.GetNoHyphenHere(bInP); }
+inline const SvxBlinkItem &SwFmt::GetBlink(BOOL bInP) const
+ { return aSet.GetBlink(bInP); }
+inline const SvxBrushItem &SwFmt::GetChrBackground(BOOL bInP) const
+ { return aSet.GetChrBackground(bInP); }
+
+#endif
diff --git a/sw/inc/charfmt.hxx b/sw/inc/charfmt.hxx
new file mode 100644
index 000000000000..0209942b6472
--- /dev/null
+++ b/sw/inc/charfmt.hxx
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * $RCSfile: charfmt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CHARFMT_HXX
+#define _CHARFMT_HXX
+
+#ifndef _FORMAT_HXX
+#include <format.hxx>
+#endif
+
+class SwCharFmt : public SwFmt
+{
+ friend class SwDoc;
+ friend class SwTxtFmtColl;
+
+ SwCharFmt( SwAttrPool& rPool, const sal_Char* pFmtName,
+ SwCharFmt *pDerivedFrom )
+ : SwFmt( rPool, pFmtName, aCharFmtSetRange, pDerivedFrom, RES_CHRFMT )
+ {}
+ SwCharFmt( SwAttrPool& rPool, const String &rFmtName,
+ SwCharFmt *pDerivedFrom )
+ : SwFmt( rPool, rFmtName, aCharFmtSetRange, pDerivedFrom, RES_CHRFMT )
+ {}
+
+
+public:
+ TYPEINFO(); //Bereits in Basisklasse Client drin.
+};
+
+#endif
+
+
+
diff --git a/sw/inc/chpfld.hxx b/sw/inc/chpfld.hxx
new file mode 100644
index 000000000000..fcca48550201
--- /dev/null
+++ b/sw/inc/chpfld.hxx
@@ -0,0 +1,129 @@
+/*************************************************************************
+ *
+ * $RCSfile: chpfld.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CHPFLD_HXX
+#define _CHPFLD_HXX
+
+#include "fldbas.hxx"
+
+class SwFrm;
+class SwTxtNode;
+
+#ifndef _UNOOBJ_HXX
+#include <unoobj.hxx>
+#endif
+
+enum SwChapterFormat
+{
+ CF_BEGIN,
+ CF_NUMBER = CF_BEGIN, // nur die Kapitelnummer
+ CF_TITLE, // nur die "Ueberschrift"
+ CF_NUM_TITLE, // Kapitelnummer und "Ueberschrift"
+ CF_NUMBER_NOPREPST, // nur die Kapitelnummer ohne Post/Prefix
+ CF_NUM_NOPREPST_TITLE, // Kapitelnummer ohne Post/Prefix und "Ueberschrift"
+ CF_END
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Kapitel
+ --------------------------------------------------------------------*/
+
+class SwChapterFieldType : public SwFieldType
+{
+public:
+ SwChapterFieldType();
+
+ virtual SwFieldType* Copy() const;
+
+};
+
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Kapitelnummer
+ --------------------------------------------------------------------*/
+class SwChapterField : public SwField
+{
+ friend class SwChapterFieldType;
+ BYTE nLevel;
+ String sTitle, sNumber, sPre, sPost;
+public:
+ SwChapterField(SwChapterFieldType*, ULONG nFmt = 0);
+
+ void ChangeExpansion( const SwFrm*, const SwTxtNode*, BOOL bSrchNum = FALSE);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ inline BYTE GetLevel() const;
+ inline void SetLevel(BYTE);
+
+ inline const String& GetNumber() const;
+ inline const String& GetTitle() const;
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+inline BYTE SwChapterField::GetLevel() const { return nLevel; }
+inline void SwChapterField::SetLevel(BYTE nLev) { nLevel = nLev; }
+inline const String& SwChapterField::GetNumber() const { return sNumber; }
+inline const String& SwChapterField::GetTitle() const { return sTitle; }
+
+#endif // _CHPFLD_HXX
diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h
new file mode 100644
index 000000000000..175464741804
--- /dev/null
+++ b/sw/inc/cmdid.h
@@ -0,0 +1,1225 @@
+/*************************************************************************
+ *
+ * $RCSfile: cmdid.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+/******************************************************************************
+Achtung: Ab sofort sind in diesem File keine C++-Kommentare (//) mehr
+ erlaubt, da es von swicli.c included wird!
+******************************************************************************/
+
+#ifndef _SFX_HRC
+#include <sfx2/sfx.hrc>
+#endif
+
+/* Flags die mittels des Disable-Features in den Slot-Definitionen ausgenutzt
+ * werden */
+#define SW_DISABLE_ON_PROTECTED_CURSOR 0x00000001
+#define SW_DISABLE_ON_MAILBOX_EDITOR 0x00000002
+
+
+#define FN_FILE SID_SW_START
+#define FN_EDIT (SID_SW_START + 100)
+#define FN_VIEW (SID_SW_START + 200)
+#define FN_INSERT (SID_SW_START + 300)
+#define FN_FORMAT (SID_SW_START + 400)
+#define FN_EXTRA (SID_SW_START + 600)
+#define FN_WINDOW (SID_SW_START + 700)
+#define FN_HELP (SID_SW_START + 800)
+#define FN_SELECTION (SID_SW_START + 900)
+#define FN_QUERY (SID_SW_START + 1000)
+#define FN_ENVELP (SID_SW_START + 1050)
+#define FN_PARAM (SID_SW_START + 1100)
+#define FN_STAT (SID_SW_START + 1180)
+#define FN_PRNOPT (SID_SW_START + 1200)
+#define FN_PGPREVIEW (SID_SW_START + 1250)
+#define FN_FRAME (SID_SW_START + 1300)
+#define FN_INSERT2 (SID_SW_START + 1400)
+#define FN_FORMAT2 (SID_SW_START + 1600)
+#define FN_EDIT2 (SID_SW_START + 1800)
+#define FN_QUERY2 (SID_SW_START + 2000)
+#define FN_EXTRA2 (SID_SW_START + 2200)
+#define FN_PARAM2 (SID_SW_START + 2400)
+
+#define HELP_OFFSET 1100
+#define CMD_STR_OFFSET 2200
+#define CMD_STR_OFFSET_MULTILANG 3300
+#define CMDID_END 5500
+
+/*--------------------------------------------------------------------
+ Bereich: Datei
+ --------------------------------------------------------------------*/
+#define FN_CLOSE_FILE (FN_FILE + 1 ) /* Schliessen */
+#define FN_LAUNCH_REGISTRY (FN_FILE + 2 ) /* Ablage */
+
+
+#define FN_NEW_GLOBAL_DOC (FN_FILE + 4 ) /* Globaldokument erzeugen */
+#define FN_NEW_FILE (FN_FILE + 5 ) /* Neu */
+#define FN_NEW_FILE_DLG (FN_FILE + 6 ) /* Neu Dialog */
+#define FN_OPEN_FILE (FN_FILE + 7 ) /* Oeffnen */
+#define FN_EDIT_FILE (FN_FILE + 8 ) /* Oeffnen oder ToTop */
+
+#define FN_INETFILE (FN_FILE + 9 ) /* Internet File-Dialog */
+
+#define FN_PRINT_FILE (FN_FILE + 10) /* Drucken */
+#define FN_PRINT_FILE_OPTIONS (FN_FILE + 11) /* Drucken Optionen */
+#define FN_SAVE_FILE_AS (FN_FILE + 12) /* Speichern unter */
+#define FN_SAVE_FILE (FN_FILE + 13) /* Speichern */
+#define FN_SETUP_PRINTER (FN_FILE + 14) /* Druckereinstellung */
+#define FN_SETUP_PRINTER_DLG (FN_FILE + 15) /* Druckereinstellung */
+#define FN_SHOW_PREVIEW (FN_FILE + 16) /* Druckbild */
+#define FN_EXIT (FN_FILE + 17) /* Writer beenden */
+#define FN_PRINT_CFG_DLG (FN_FILE + 18) /* Optionen Drucken */
+
+
+
+#define FN_SAVE_ALL (FN_FILE + 23) /* Alle Files speichern */
+#define FN_NEW_FILE_DEFAULT (FN_FILE + 24) /* Neue Datei mit Standardvorlage */
+#define FN_PRINT_FILE_DEFAULT (FN_FILE + 25) /* Drucken mit Defaults */
+#define FN_LAUNCH_EQ_EDITOR (FN_FILE + 26) /* Formel Editor */
+#define FN_CHANGE_PRINTER (FN_FILE + 27) /* Drucker einstellen */
+#define FN_FAX_END (FN_FILE + 29) /* Faxen fertig, Id fuer PostMessage */
+
+#define FN_SELECT_DATABASE (FN_FILE + 30) /* Selektion Datenbank */
+#define FN_DOC_INFO_DLG (FN_FILE + 31) /* Dokumentinfo */
+#define FN_DOC_MGR_DLG (FN_FILE + 32) /* Dokument-Manager */
+
+#define FN_GET_DOCSTAT (FN_FILE + 33) /* Dokumentstatistik einzeln auslesen */
+
+
+#define FN_SAVE_SELECTION (FN_FILE + 35) /* Selektion speichern */
+
+#define FN_OUTLINE_TO_IMPRESS (FN_FILE + 36) /* Outline zu StarImpress senden */
+#define FN_OUTLINE_TO_CLIPBOARD (FN_FILE + 37) /* Outline in das Clipboad copieren */
+
+#define FN_NEW_HTML_DOC (FN_FILE + 40 ) /* HTML-Dokument "erzeugen" */
+
+#define FN_APP_START (FN_FILE + 98) /* fuer Makro bei App.Start */
+#define FN_APP_END (FN_FILE + 99) /* fuer Makro bei App.Ende */
+
+/*--------------------------------------------------------------------
+ Bereich: Bearbeiten
+ --------------------------------------------------------------------*/
+#define FN_CLEAR (FN_EDIT + 1 ) /* Loeschen */
+#define FN_COPY (FN_EDIT + 2 ) /* Kopieren */
+#define FN_CUT (FN_EDIT + 3 ) /* Ausschneiden */
+#define FN_EDIT_FIELD (FN_EDIT + 4 ) /* Textbefehl bearbeiten */
+#define FN_EDIT_FIELD_DLG (FN_EDIT + 5 ) /* Textbefehl bearbeiten */
+#define FN_EDIT_FILE_INFO (FN_EDIT + 6 ) /* Dokumentinfo */
+#define FN_EDIT_FILE_INFO_DLG (FN_EDIT + 7 ) /* Dokumentinfo Dialog */
+#define FN_EDIT_LINK (FN_EDIT + 8 ) /* Verknuepfungen */
+#define FN_EDIT_LINK_DLG (FN_EDIT + 9 ) /* Verknuepfungen */
+#define FN_GOTO (FN_EDIT + 11) /* Gehe zu */
+
+#define FN_PASTE (FN_EDIT + 13) /* Einfuegen */
+#define FN_PASTESPECIAL (FN_EDIT + 14) /* Verknuepfung einfuegen */
+#define FN_PASTESPECIAL_DLG (FN_EDIT + 15) /* Verknuepfung einfuegen */
+
+#define FN_NUMBER_BULLETS (FN_EDIT + 21) /* Bullets */
+#define FN_REPEAT (FN_EDIT + 22) /* Letzten Befehl wiederholen */
+#define FN_EDIT_IDX_ENTRY_DLG (FN_EDIT + 23) /* Index-Entry bearbeiten */
+#define FN_UPDATE_FIELDS (FN_EDIT + 26) /* Feldinhalte erneuern */
+#define FN_EXECUTE_MACROFIELD (FN_EDIT + 27) /* Macrofeld ausfuehren */
+#define FN_EDIT_FORMULA (FN_EDIT + 28) /* Formel in RibbonBar bearbeiten */
+#define FN_CALC_TABLE (FN_EDIT + 29) /* Tabelle durchrechnen */
+
+/*--------------------------------------------------------------------
+ Bereich: Bullets
+ --------------------------------------------------------------------*/
+#define FN_NUM_BULLET_DOWN (FN_EDIT + 30) /* Runterstufen */
+#define FN_NUM_BULLET_UP (FN_EDIT + 31) /* Raufstufen */
+#define FN_NUM_BULLET_PREV (FN_EDIT + 32) /* zum vorigen Eintrag */
+#define FN_NUM_BULLET_NEXT (FN_EDIT + 33) /* zum naechsten Eintrag */
+#define FN_NUM_BULLET_MOVEUP (FN_EDIT + 34) /* nach oben schieben */
+#define FN_NUM_BULLET_MOVEDOWN (FN_EDIT + 35) /* nach unten schieben */
+#define FN_NUM_BULLET_NONUM (FN_EDIT + 36) /* Eintrag ohne Nummer */
+#ifndef FN_NUM_BULLET_OFF //in SVX already
+#define FN_NUM_BULLET_OFF (FN_EDIT + 37) /* Numerierung aus */
+#endif
+
+
+// schon im SVX
+//#define FN_NUM_BULLET_ON (FN_EDIT + 38) /* Numerierung mit Bullets an */
+
+#define FN_NUM_BULLET_OUTLINE_DOWN (FN_EDIT + 39) /* Runterstufen mit Unterpunkten */
+#define FN_NUM_BULLET_OUTLINE_UP (FN_EDIT + 40) /* Raufstufen mit Unterpunkten */
+#define FN_NUM_BULLET_OUTLINE_MOVEUP (FN_EDIT + 41) /* nach oben schieben mit Unterpunkten */
+#define FN_NUM_BULLET_OUTLINE_MOVEDOWN (FN_EDIT + 42) /* nach unten schieben mit Unterpunkten */
+#define FN_UPDATE_INPUTFIELDS (FN_EDIT + 43) /* Eingabefelder updaten */
+// schon im SVX
+//#define FN_NUM_NUMBERING_ON (FN_EDIT + 44) /* Numerierung an */
+
+#define FN_NUM_OR_NONUM (FN_EDIT + 46) /* Nummer ein-/aus */
+
+#define FN_GOTO_NEXT_INPUTFLD (FN_EDIT + 47) /* zum naechsten EingabeFeld */
+#define FN_GOTO_PREV_INPUTFLD (FN_EDIT + 48) /* zum vorherigen EingabeFeld */
+
+#define FN_REPEAT_SEARCH (FN_EDIT + 50) /* Suche wiederholen */
+#define FN_REPEAT_REPLACE (FN_EDIT + 51) /* Ersetzen wiederholen */
+#define FN_UPDATE_GRAFIC (FN_EDIT + 53) /* Grafik aendern */
+#define FN_SETTAB_ATCURPOS (FN_EDIT + 54) /* Tab an der aktuellen Pos setzen */
+#define FN_SET_LR_IND_ATCURPOS (FN_EDIT + 55) /* EZE und LR setzen */
+#define FN_FRMCNT_TO_BODY (FN_EDIT + 56) /* Rahmeninhalt zu Text */
+#define FN_UPDATE_TOXBASE (FN_EDIT + 57) /* Naechstes Verzeichnis erneuern */
+
+#define FN_REPAGINATE (FN_EDIT + 61) /* Neuformatierung erzwingen */
+#define FN_EDIT_FOOTNOTE (FN_EDIT + 62) /* Fussnote bearbeiten */
+
+#define FN_EDIT_REGION (FN_EDIT + 65) /* Bereiche bearbeiten */
+#define FN_GOTO_REFERENCE (FN_EDIT + 66) /* Von der Refmark zur Referenz */
+
+// schon im Svx definiert
+#define FN_NEXT_BOOKMARK (FN_EDIT + 68) /* */
+#define FN_PREV_BOOKMARK (FN_EDIT + 69) /* */
+
+/*Navigator ToolBoxen*/
+#define FN_SELECT_BOOKMARK (FN_EDIT + 70) /**/
+#define FN_ITEM_DOWN (FN_EDIT + 71) /**/
+#define FN_ITEM_LEFT (FN_EDIT + 72) /**/
+#define FN_ITEM_RIGHT (FN_EDIT + 73) /**/
+#define FN_ITEM_UP (FN_EDIT + 74) /**/
+#define FN_DOWN (FN_EDIT + 75) /**/
+
+#define FN_SELECT_FOOTER (FN_EDIT + 77) /**/
+#define FN_SELECT_FRAME (FN_EDIT + 78) /**/
+#define FN_SELECT_HEADER (FN_EDIT + 79) /**/
+#define FN_PAGENUMBER (FN_EDIT + 80) /**/
+#define FN_SELECT_AUTO_BOOKMARK (FN_EDIT + 81) /**/
+#define FN_SELECT_FOOTNOTE (FN_EDIT + 82) /**/
+#define FN_SELECT_SET_AUTO_BOOKMARK (FN_EDIT + 83) /**/
+#define FN_SELECT_TABLE (FN_EDIT + 84) /**/
+#define FN_SELECT_INDEX (FN_EDIT + 85) /**/
+#define FN_UP (FN_EDIT + 86) /**/
+
+
+//#define FN_DELETE_REGION (FN_EDIT + 89) /* Bereiche loeschen */
+
+
+#define FN_SELECT_PARA (FN_EDIT + 97) /* Absatz selektieren */
+
+#define FN_SELECT_CONTENT (FN_EDIT + 99) /* Navigator - Inhaltstyp */
+
+
+
+
+#define FN_UPDATE_ALL_LINKS (FN_EDIT2 + 24) /* alle Links updaten */
+
+#define FN_REDLINE_ON (FN_EDIT2 + 25) /* Redlining anschalten */
+#define FN_REDLINE_SHOW (FN_EDIT2 + 26) /* Redlining anzeigen */
+#define FN_REDLINE_COMMENT (FN_EDIT2 + 27) /* Redlining kommentieren */
+
+#define FN_UPDATE_ALL (FN_EDIT2 + 28) /* FN_UPDATE_ALL_LINKS,
+ FN_UPDATE_FIELDS,
+ FN_UPDATE_TOX,
+ CalcLayout */
+
+#define FN_REDLINE_ACCEPT (FN_EDIT2 + 29) /* Redlining annehmen/ablehnen */
+#define FN_ATTR_COLUMNS (FN_EDIT2 + 31) /* SlotId fuer SwFmtCol */
+#define FN_EDIT_CURRENT_TOX (FN_EDIT2 + 32) /* edit current index */
+#define FN_EDIT_AUTH_ENTRY_DLG (FN_EDIT2 + 33) /* edit authorities entry*/
+#define FN_UPDATE_CHARTS (FN_EDIT2 + 34) /* update all charts */
+
+#define FN_EDIT_HYPERLINK (FN_EDIT2 + 35) /* edit hyperlink */
+
+/*--------------------------------------------------------------------
+ Bereich: Bearbeiten
+ --------------------------------------------------------------------*/
+
+#define FN_REFRESH_VIEW (FN_VIEW + 1) /* Refresh/Redraw */
+#define FN_SHOW_OUTLINE_VIEW (FN_VIEW + 2) /* Gliederungsansicht */
+
+#define FN_DRAW_WRAP_DLG (FN_VIEW + 3) /* Draw Umlauf-Dlg */
+
+#define FN_RULER (FN_VIEW + 11) /* Horizontales Lineal */
+
+#define FN_VIEW_GRAPHIC (FN_VIEW + 13) /* Grafiken anzeigen */
+#define FN_VIEW_BOUNDS (FN_VIEW + 14) /* Begrenzungen */
+#define FN_VIEW_FIELDS (FN_VIEW + 15) /* Textbefehle */
+#define FN_VLINEAL (FN_VIEW + 16) /* Vertikales Lineal */
+#define FN_VSCROLLBAR (FN_VIEW + 17) /* Vertikaler Scrollbar */
+#define FN_HSCROLLBAR (FN_VIEW + 18) /* Horizontaler Scrollbar */
+#define FN_TOOLBOX_TOGGLE (FN_VIEW + 19) /* Toolboxinhalte umschalten */
+#define FN_VIEWOPTIONS_ON (FN_VIEW + 20) /* Gruppe Viewoptions an */
+#define FN_VIEWOPTIONS_OFF (FN_VIEW + 21) /* Gruppe Viewoptions aus */
+#define FN_CONTROLS_ON (FN_VIEW + 22) /* Gruppe Bedienelemte an */
+#define FN_CONTROLS_OFF (FN_VIEW + 23) /* Gruppe Bedienelemte aus */
+
+#define FN_VIEW_META_CHARS (FN_VIEW + 24) /* Sonderzeichen anzeigen */
+#define FN_VIEW_MARKS (FN_VIEW + 25) /* Markierungen anzeigen */
+#define FN_VIEW_FIELDNAME (FN_VIEW + 26) /* Feldname anzeigen */
+#define FN_VIEW_TABLEGRID (FN_VIEW + 27) /* Tabellenbegrenzungen anzeigen */
+
+#define FN_LAUNCH_SIM (FN_VIEW + 28) /* StarImage starten */
+#define FN_SET_PAGE (FN_VIEW + 29) /* Seitenvorlage am Absatz setzen */
+
+#define FN_TOOLBOX_SWITCH (FN_VIEW + 30) /* Auf Textshell umschalten */
+
+
+//noch mehr Navigator
+#define FN_CONTENT_LB (FN_VIEW + 32) /**/
+#define FN_SHOW_CONTENT_BOX (FN_VIEW + 33) /**/
+#define FN_SHOW_ROOT (FN_VIEW + 34) /**/
+#define FN_DROP_REGION (FN_VIEW + 35) /**/
+#define FN_OUTLINE_LEVEL (FN_VIEW + 36) /**/
+
+#define FN_PRINT_LAYOUT (FN_VIEW + 37) /* invertierter BrowseMode */
+
+#define FN_DROP_REGION_LINK (FN_VIEW + 38) /**/
+#define FN_DROP_REGION_COPY (FN_VIEW + 39) /**/
+
+#define FN_SCROLL_NAVIGATION (FN_VIEW + 40) /* Navigationscontroller am Scrollbar*/
+#define FN_SCROLL_NEXT_PREV (FN_VIEW + 41) /* arbeitet den MoveType ab */
+
+#define FN_VIEW_HIDDEN_PARA (FN_VIEW + 42) /* Versteckte Absaetze */
+#define FN_VIEW_SMOOTH_SCROLL (FN_VIEW + 43)
+
+#define FN_GLOBAL_SWITCH (FN_VIEW + 44) /* umschalten zw. Global und Inhalt*/
+#define FN_GLOBAL_EDIT (FN_VIEW + 45) /* bearbeiten */
+#define FN_GLOBAL_UPDATE (FN_VIEW + 46) /* aktualisieren */
+#define FN_GLOBAL_OPEN (FN_VIEW + 47) /* oeffnen */
+#define FN_GLOBAL_SAVE_CONTENT (FN_VIEW + 48) /* Inhalt der Verknuepfung mitspeichern */
+#define FN_CREATE_NAVIGATION (FN_VIEW + 49) /* Navigations-Controller erzeugen */
+#define FN_PREVIEW_PRINT_OPTIONS (FN_VIEW + 50) /* Optionsdialog Preview drucken */
+#define FN_PREVIEW_ZOOM (FN_VIEW + 51) /* der Tabellencontroller fuer den Zoom */
+
+#define FN_SET_MODOPT_TBLNUMFMT (FN_VIEW + 52) /* Zahlenerkennung in Tabellen */
+
+/*--------------------------------------------------------------------
+ Bereich: Einfuegen
+ --------------------------------------------------------------------*/
+// schon im Svx definiert
+#define FN_INSERT_BOOKMARK (FN_INSERT + 2 ) /* Sprungmarke einfuegen */
+
+// schon im SVX unter der gleichen Id
+//#define FN_INSERT_BREAK (FN_INSERT + 3 ) /* Umbruch */
+
+#define FN_INSERT_BREAK_DLG (FN_INSERT + 4 ) /* Umbruch */
+#define FN_INSERT_COLUMN_BREAK (FN_INSERT + 5 ) /* Spaltenumbruch */
+#define FN_INSERT_DATE_TIME (FN_INSERT + 6 ) /* Datum/Uhrzeit */
+#define FN_INSERT_FIELD (FN_INSERT + 8 ) /* Textbefehl */
+#define FN_CHANGE_DBFIELD (FN_INSERT + 9 ) /* Datenbankfeld aendern */
+
+#define FN_INSERT_CAPTION (FN_INSERT + 10) /* Beschriftung */
+#define FN_INSERT_FOOTNOTE_DLG (FN_INSERT + 12) /* Dialog Fussnote */
+
+#define FN_INSERT_REF_FIELD (FN_INSERT + 13) /* Refernzfeld einfuegen */
+
+#define FN_INSERT_HYPERLINK (FN_INSERT + 14) /* Zeichendialog/HyperlinkPage*/
+
+#define FN_INSERT_INDEX (FN_INSERT + 16) /* Stichworteintrag */
+#define FN_INSERT_INDEX_DLG (FN_INSERT + 17) /* Stichworteintrag */
+#define FN_INSERT_LINEBREAK (FN_INSERT + 18) /* Zeilenumbruch */
+
+#define FN_INSERT_OBJECT (FN_INSERT + 21) /* Object */
+#define FN_INSERT_OBJECT_DLG (FN_INSERT + 22) /* Object */
+#define FN_INSERT_PAGEBREAK (FN_INSERT + 23) /* Seitenumbruch */
+#define FN_INSERT_PAGENO (FN_INSERT + 24) /* Seitennummer */
+#define FN_INSERT_PARAGRAPH (FN_INSERT + 25) /* Absatz */
+#define FN_INSERT_RECORD (FN_INSERT + 26) /* Datensatz einfuegen */
+#define FN_MERGE_RECORD (FN_INSERT + 27) /* Datensatz mischen */
+#define FN_INSERT_SYMBOL (FN_INSERT + 28) /* Sonderzeichen */
+#define FN_POSTIT (FN_INSERT + 29) /* PostIt einfuegen/bearbeiten */
+#define FN_INSERT_TABLE (FN_INSERT + 30) /* Tabelle */
+// schon im Svx definiert
+#define FN_INSERT_COLS (FN_INSERT + 32) /* Spalten einfuegen */
+#define FN_INSERT_FRAME_INTERACT (FN_INSERT + 33) /* Rahmen einfuegen aktiv */
+#define FN_INSERT_FRAME (FN_INSERT + 34) /* Rahmen einfuegen */
+
+#define FN_INSERT_IDX_ENTRY_DLG (FN_INSERT + 35) /* Verzeichniseintrag einfuegen */
+#define FN_INSERT_FRAME_INTERACT_NOCOL (FN_INSERT + 36) /*insert interactive non column frame*/
+
+#define FN_INSERT_SOFT_HYPHEN (FN_INSERT + 43) /* weicher Trenner */
+#define FN_INSERT_HARD_SPACE (FN_INSERT + 44) /* hartes Space */
+#define FN_INSERT_REGION (FN_INSERT + 45) /* Bereich einfuegen */
+
+
+
+#define FN_TOOL_GROUP (FN_INSERT + 47) /* Objekte gruppieren */
+#define FN_TOOL_UNGROUP (FN_INSERT + 48) /* Gruppierng aufheben */
+
+#define FN_TOOL_ANKER (FN_INSERT + 49) /* Draw-Objekt umankern */
+#define FN_TOOL_ANKER_PAGE (FN_INSERT + 50) /* Draw-Objekt an Seite verankern */
+#define FN_TOOL_ANKER_PARAGRAPH (FN_INSERT + 51) /* Draw-Objekt am Absatz verankern */
+#define FN_TOOL_HIERARCHIE (FN_INSERT + 52) /* Hierarchie aendern */
+#define FN_TOOL_VMIRROR (FN_INSERT + 53) /* Objekt in unteren Layer */
+#define FN_TOOL_HMIRROR (FN_INSERT + 54) /* Objekt in oberen Layer */
+
+//#define FN_QRY_OPEN_DB (FN_INSERT + 55) /* Datenbank oeffnen (Basic) */
+//#define FN_QRY_DEFINE_DB (FN_INSERT + 56) /* Neue Datenbankdefinition anlegen (Basic) */
+//#define FN_QRY_SELECT (FN_INSERT + 57) /* SQL-Statement angeben (Basic) */
+//#define FN_QRY_TO_FIRST_REC (FN_INSERT + 58) /* Ersten Datensatz anwaehlen (Basic) */
+//#define FN_QRY_TO_NEXT_REC (FN_INSERT + 59) /* Naechsten Datensatz anwaehlen (Basic) */
+//#define FN_QRY_TO_REC (FN_INSERT + 60) /* Bestimmten Datensatz anwaehlen (Basic) */
+//#define FN_QRY_GET_RECORD_ID (FN_INSERT + 61) /* Datensatznummer erfragen (Basic) */
+//#define FN_QRY_GET_COLUMN_NUM (FN_INSERT + 62) /* Anzahl der Spalten (Basic) */
+
+#define FN_QRY (FN_INSERT + 63) /* Datensatz einfuegen */
+#define FN_QRY_MERGE (FN_INSERT + 64) /* Datensatz einfuegen (Serienbrief) */
+#define FN_QRY_OPEN_TABLE (FN_INSERT + 65) /* Datenbank oeffnen (Basic) */
+#define FN_TOOL_ANKER_FRAME (FN_INSERT + 66) /* Draw-Objekt am Rahmen verankern */
+//#define FN_QRY_SWITCH (FN_INSERT + 67) /* Auf eine bestimmte Datenbank umschalten */
+
+#define FN_INSERT_SIM (FN_INSERT + 68) /* Einfuegen StarImage */
+#define FN_INSERT_SMA (FN_INSERT + 69) /* Einfuegen StarMath */
+
+#define FN_QRY_GET_COLUMN_NAME (FN_INSERT + 70) /* Anzahl der Spalten (Basic) */
+#define FN_QRY_GET_COLUMN_TYPE (FN_INSERT + 71) /* Type des Datenbankfeldes ermitteln (Basic) */
+#define FN_QRY_GET_COLUMN_TEXT (FN_INSERT + 72) /* Inhalt des aktuellen Datensatzes (Basic) */
+#define FN_QRY_DEL_DEFINED_DB (FN_INSERT + 75) /* Datenbankdefinition loeschen (Basic) */
+
+#define FN_DRAWTEXT_ATTR_DLG (FN_INSERT + 76) /* DrawText positionieren */
+
+#define FN_QRY_APPEND_RECORD (FN_INSERT + 77) /* Neuen Datensatz anhaengen */
+#define FN_QRY_UPDATE_RECORD (FN_INSERT + 78) /* Datensatzspalte aendern */
+#define FN_QRY_DELETE_RECORD (FN_INSERT + 79) /* Datensatz loeschen */
+#define FN_QRY_GET_PHYS_RECORD_ID (FN_INSERT + 80) /* Physikalische (absolute) Datensatznummer erfragen (Basic) */
+
+#define FN_TOOL_ANKER_CHAR (FN_INSERT + 84) /* DrawObject zeichengebunden */
+#define FN_INSERT_HARDHYPHEN (FN_INSERT + 85) /* Bindestrich ohne Umbruch*/
+
+#define FN_QRY_INSERT (FN_INSERT + 86) /* Datensatz-Selektion in Text einfuegen */
+#define FN_QRY_MERGE_FIELD (FN_INSERT + 87) /* Datensatz-Selektion in Felder einfuegen */
+#define FN_QRY_INSERT_FIELD (FN_INSERT + 88) /* Datenbankfeld einfuegen */
+
+#define FN_INSERT_CTRL (FN_INSERT + 89) /* Werkzeugleistencontroller Einfuegen*/
+#define FN_INSERT_OBJ_CTRL (FN_INSERT + 90) /* Werkzeugleistencontroller Einfuegen/Objekt*/
+#define FN_INSERT_FIELD_CTRL (FN_INSERT + 91) /* Werkzeugleistencontroller Einfuegen/Feldbefehle*/
+
+#define FN_INSERT_FLD_DATE (FN_INSERT + 92)
+#define FN_INSERT_FLD_TIME (FN_INSERT + 93)
+#define FN_INSERT_FLD_PGNUMBER (FN_INSERT + 94)
+#define FN_INSERT_FLD_PGCOUNT (FN_INSERT + 95)
+#define FN_INSERT_FLD_TOPIC (FN_INSERT + 96)
+#define FN_INSERT_FLD_TITLE (FN_INSERT + 97)
+#define FN_INSERT_FLD_AUTHOR (FN_INSERT + 98)
+#define FN_INSERT_FOOTNOTE (FN_INSERT + 99)
+
+/*--------------------------------------------------------------------
+ Bereich: Einfuegen (2.Teil)
+ --------------------------------------------------------------------*/
+
+#define FN_QRY_GET_ALL_DBNAME (FN_INSERT2 + 1) /* Alle konfigurierten Datenabanknamen ermitteln */
+#define FN_QRY_GET_DBNAME_COUNT (FN_INSERT2 + 2) /* Anzahl aller konfigurierten Datenabanknamen */
+#define FN_QRY_GET_TABLE_NAME (FN_INSERT2 + 3) /* Tabellenname einer Datenbank ermitteln */
+#define FN_QRY_GET_TABLE_COUNT (FN_INSERT2 + 4) /* Anzahl aller Tabellen einer Datenbank ermitteln */
+
+#define FN_INSERT_HEADER (FN_INSERT2 + 5) /* Kopfzeile im Html-mode ein/ausschalten */
+#define FN_INSERT_FOOTER (FN_INSERT2 + 6) /* Fuázeile im Html-mode ein/ausschalten */
+#define FN_SBA_BRW_UPDATE (FN_INSERT2 + 7) /* Datensaetze in Felder einfuegen */
+#define FN_SBA_BRW_INSERT (FN_INSERT2 + 8) /* Datensaetze in Text einfuegen */
+#define FN_SBA_BRW_MERGE (FN_INSERT2 + 9) /* Serienbriefdruck */
+#define FN_JAVAEDIT (FN_INSERT2 + 10) /* Scriptfeld bearbeiten */
+#define FN_INSERT_HRULER (FN_INSERT2 + 11) /* horiz. Grafiklinie einfuegen */
+#define FN_TOOL_ANKER_AT_CHAR (FN_INSERT2 + 12) /* Object zeichengebunden */
+
+#define FN_INSERT_PAGEHEADER (FN_INSERT2 + 13) /* Standard Kopfzeile einfuegen */
+#define FN_INSERT_PAGEFOOTER (FN_INSERT2 + 14) /* Standard Fusszeile einfuegen */
+
+#define FN_INSERT_ENDNOTE (FN_INSERT2 + 18) /* Endnote einfuegen*/
+#define FN_INSERT_COLUMN_SECTION (FN_INSERT2 + 19) /* Spaltigen Bereich einfügen */
+
+#define FN_INSERT_MULTI_TOX (FN_INSERT2 + 20) /* insert any TOX */
+#define FN_INSERT_AUTH_ENTRY_DLG (FN_INSERT2 + 21) /* insert entry for table of authorities*/
+
+#define FN_SECTION_APPENDNODE (FN_INSERT2 + 22) /* insert an Paragraph behind the current section*/
+
+/*--------------------------------------------------------------------
+ Bereich: Format
+ --------------------------------------------------------------------*/
+
+#define FN_AUTOFORMAT_APPLY (FN_FORMAT + 1 ) /* Autoformat-Optionen anwenden */
+#define FN_AUTOFORMAT_AUTO (FN_FORMAT + 2 ) /* Autoformat waehrend der Eingabe */
+#define FN_GROW_FONT_SIZE (FN_FORMAT + 3 ) /* Groesse */
+#define FN_SHRINK_FONT_SIZE (FN_FORMAT + 4 ) /* Groesse */
+#define FN_UNDERLINE_DOUBLE (FN_FORMAT + 5 ) /* Doppelt unterstreichen */
+#define FN_AUTOFORMAT_REDLINE_APPLY (FN_FORMAT + 6 ) /* Autoformat mit Redlining anwenden */
+#define FN_SET_SUPER_SCRIPT (FN_FORMAT + 11) /* Hochstellung */
+#define FN_SET_SUB_SCRIPT (FN_FORMAT + 12) /* Tiefstellung */
+
+#define FN_SET_CASEMAP (FN_FORMAT + 14) /* CaseMap */
+#define FN_SET_LANGUAGE (FN_FORMAT + 15) /* Sprache */
+#define FN_SET_KERNING (FN_FORMAT + 16) /* Kerning */
+
+#define FN_INDENT_TO_TABSTOP (FN_FORMAT + 17) /* Einrueckung auf die naechste Tabpostion */
+//schon in svxids.hrc
+//#define FN_SET_JUSTIFY_PARA (FN_FORMAT + 21) /* Ausrichtung Absatz */
+#define FN_FLIP_HORZ_GRAFIC (FN_FORMAT + 25) /* Spiegeln horizontal */
+#define FN_FLIP_VERT_GRAFIC (FN_FORMAT + 26) /* Spiegeln vertikal */
+#define FN_SET_LINE_SPACE (FN_FORMAT + 27) /* Zeilenabstand parametrisiert */
+#define FN_SET_ADJUST (FN_FORMAT + 28) /* Ausrichtung parametrisiert */
+#define FN_SET_LRMARGIN (FN_FORMAT + 29) /* linker/rechter Rand */
+#define FN_SET_ULMARGIN (FN_FORMAT + 30) /* oberer/unterer Rand */
+#define FN_UNINDENT_TO_TABSTOP (FN_FORMAT + 31) /* Einrueckung auf die vorgige Tabpostion */
+
+#define FN_SET_HYPHEN_ZONE (FN_FORMAT + 32) /* Silbentrennung */
+#define FN_SET_KEEP_TOGETHER (FN_FORMAT + 34) /* nicht trennen */
+#define FN_SET_KEEP_WITH_NEXT (FN_FORMAT + 35) /* mit folgendem zus. */
+#define FN_SET_WIDOW (FN_FORMAT + 36) /* Widows */
+#define FN_SET_ORPHAN (FN_FORMAT + 37) /* Orphans */
+
+
+#define FN_REGISTER_COLLECTION (FN_FORMAT + 43) /* Referenzvorlage an der Seite */
+#define FN_REGISTER_MODE (FN_FORMAT + 44) /* Registermodus an/aus */
+#define FN_NUM_FORMAT_TABLE_DLG (FN_FORMAT + 45) /* Zahlenformat in Tabelle */
+#define FN_FORMAT_BORDER_DLG (FN_FORMAT + 48) /* Umrandung */
+#define FN_FORMAT_PAGE_COLUMN_DLG (FN_FORMAT + 49) /* Spalten pro Seite */
+#define FN_FORMAT_BACKGROUND_DLG (FN_FORMAT + 50) /* Hintergrund */
+#define FN_FORMAT_PAGE (FN_FORMAT + 51) /* Seite */
+#define FN_FORMAT_PAGE_DLG (FN_FORMAT + 52) /* Seite */
+#define FN_FORMAT_COLUMN (FN_FORMAT + 53) /* Spalten */
+#define FN_FORMAT_DROPCAPS (FN_FORMAT + 54) /* Initialien */
+#define FN_FORMAT_FRAME (FN_FORMAT + 55) /* Rahmen */
+#define FN_FORMAT_FRAME_DLG (FN_FORMAT + 56) /* Rahmen */
+#define FN_FORMAT_GRAFIC (FN_FORMAT + 57) /* Grafik */
+#define FN_FORMAT_GRAFIC_DLG (FN_FORMAT + 58) /* Grafik */
+#define FN_FORMAT_TABLE (FN_FORMAT + 59) /* Tabelle */
+#define FN_FORMAT_TABLE_DLG (FN_FORMAT + 60) /* Tabelle */
+#define FN_FORMAT_OLE_DLG (FN_FORMAT + 61) /* OLE bearbeiten */
+
+#define FN_NEW_STYLE_BY_EXAMPLE (FN_FORMAT + 62) /* Vorlage erzeugen by Example */
+#define FN_UPDATE_STYLE_BY_EXAMPLE (FN_FORMAT + 63) /* Vorlage aktualisieren */
+#define FN_STYLE_SHEET_FRAME_DLG (FN_FORMAT + 64) /* Rahmenvorlage */
+#define FN_STYLE_SHEET_DOC_DLG (FN_FORMAT + 65) /* Dokumentvorlage */
+#define FN_STYLE_SHEET_GRAFIK_DLG (FN_FORMAT + 66) /* Dokumentvorlage */
+#define FN_FORMAT_FOOTNOTE (FN_FORMAT + 67) /* Fussnoten */
+#define FN_FORMAT_FOOTNOTE_DLG (FN_FORMAT + 68) /* Fussnoten-Dialog */
+
+// schon im Svx definiert
+//#define FN_FORMAT_RESET (FN_FORMAT + 69) /* Format zuruecksetzen */
+
+#define FN_FRAME_TO_TOP (FN_FORMAT + 70) /* Rahmen nach oben */
+#define FN_FRAME_TO_BOTTOM (FN_FORMAT + 71) /* Rahmen nach unten */
+
+#define FN_FRAME_NOWRAP (FN_FORMAT + 72) /* Rahmen kein Umlauf */
+#define FN_FRAME_WRAP (FN_FORMAT + 73) /* Rahmen Umlauf */
+#define FN_FRAME_WRAPTHRU (FN_FORMAT + 74) /* Rahmen Durchlauf */
+
+#define FN_FRAME_ALIGN_HORZ_LEFT (FN_FORMAT + 75) /* Rahmen horz. links */
+#define FN_FRAME_ALIGN_HORZ_RIGHT (FN_FORMAT + 76) /* Rahmen horz. rechts */
+#define FN_FRAME_ALIGN_HORZ_CENTER (FN_FORMAT + 77) /* Rahmen horz. zentriert */
+#define FN_FRAME_ALIGN_VERT_TOP (FN_FORMAT + 78) /* Rahmen vert. oben */
+#define FN_FRAME_ALIGN_VERT_BOTTOM (FN_FORMAT + 79) /* Rahmen vert. unten */
+#define FN_FRAME_ALIGN_VERT_CENTER (FN_FORMAT + 80) /* Rahmen vert. zentriert */
+
+#define FN_SET_FRM_POSITION (FN_FORMAT + 82)/* Rahmenposition -- " -- */
+#define FN_SET_FRM_OPTIONS (FN_FORMAT + 86)/* Rahmenoptionen -- " -- */
+
+#define FN_SET_PAGE_STYLE (FN_FORMAT + 93) /* Anwenden Seitenv. */
+
+
+#define FN_TABLE_REP (FN_FORMAT + 99) /* TableRepresentation */
+#define FN_CONVERT_TEXT_TABLE (FN_FORMAT + 100) /* Konvertierung Text <-> Tabelle */
+#define FN_TABLE_INSERT_ROW (FN_FORMAT + 101) /* Tabelle: Zeile einfuegen */
+#define FN_TABLE_INSERT_COL (FN_FORMAT + 102) /* Tabelle: Spalte einfuegen */
+#define FN_TABLE_DELETE_ROW (FN_FORMAT + 103) /* Tabelle: Zeile loeschen */
+#define FN_TABLE_DELETE_COL (FN_FORMAT + 104) /* Tabelle: Spalte loeschen */
+#define FN_TABLE_SPLIT_CELLS (FN_FORMAT + 105) /* Tabelle: Zellen teilen */
+#define FN_TABLE_MERGE_CELLS (FN_FORMAT + 106) /* Tabelle: Zellen verbinden */
+#define FN_TABLE_SET_ROW_HEIGHT (FN_FORMAT + 107) /* Tabelle: Zeilenhoehe setzen */
+#define FN_TABLE_SET_COL_WIDTH (FN_FORMAT + 108) /* Tabelle: Spaltenbreite setzen */
+#define FN_TABLE_SET_ULSPACE (FN_FORMAT + 109) /* Tabelle: oberen / unteren Abstand einstellen */
+#define FN_OPTIMIZE_TABLE (FN_FORMAT + 110) /* ToolBoxItem fuer Optimierung in Tabellen */
+#define FN_TABLE_SET_SHADOW (FN_FORMAT + 111) /* Tabelle: Schatten einstellen */
+#define FN_TABLE_GOTO_CELL (FN_FORMAT + 112) /* Tabelle: Zelle anspringen */
+#define FN_TABLE_SELECT_ROW (FN_FORMAT + 113) /* Tabelle: Zeile selektieren */
+#define FN_TABLE_SELECT_COL (FN_FORMAT + 114) /* Tabelle: Spalte selektieren */
+#define FN_TABLE_SELECT_ALL (FN_FORMAT + 115) /* Tabelle: Tabelle selektieren */
+#define FN_TABLE_SET_READ_ONLY (FN_FORMAT + 116) /* Tabelle: Tabelle schuetzen */
+#define FN_TABLE_SET_READ_ONLY_CELLS (FN_FORMAT + 117) /* Tabelle: Tabellezellen schuetzen */
+#define FN_TABLE_UNSET_READ_ONLY_CELLS (FN_FORMAT + 119) /* Tabelle: Tabellezellen schuetzen aufheben */
+#define FN_TABLE_HEADLINE_REPEAT (FN_FORMAT + 120) /* used in SwXTextTable*/
+#define FN_TABLE_ADJUST_CELLS (FN_FORMAT + 121) /* Tabelle: Zellen anpassen */
+
+#define FN_FRAME_UP (FN_FORMAT + 122) /* Rahmen um eine Ebene nach oben */
+#define FN_FRAME_DOWN (FN_FORMAT + 123) /* Rahmen um eine Ebene nach unten */
+
+#define FN_TABLE_INSERT_CHART (FN_FORMAT + 124)
+
+#define FN_SET_FRM_LRSPACE (FN_FORMAT + 125) /* Rahmen Seitenabstand */
+#define FN_SET_FRM_ULSPACE (FN_FORMAT + 126) /* Rahmen Kopf-/Fussabstand */
+#define FN_TABLE_SET_LRSPACE (FN_FORMAT + 127) /* Tabelle: linker / rechter Abstand einstellen */
+#define FN_TABLE_OPTIMAL_HEIGHT (FN_FORMAT + 128) /* Zellenhoehe optimal*/
+
+/*--------------------------------------------------------------------
+ Bereich: Seitenvorlage
+ --------------------------------------------------------------------*/
+
+#define FN_NEW_PAGE_STYLE (FN_FORMAT + 129) /* Anlegen Seitenvorlage */
+#define FN_PAGE_STYLE_SET_LR_MARGIN (FN_FORMAT + 130) /* linker / rechter Rand */
+#define FN_PAGE_STYLE_SET_UL_MARGIN (FN_FORMAT + 131) /* oberer / unterer Rand */
+#define FN_PAGE_STYLE_SET_PAGE (FN_FORMAT + 134) /* linke, rechte... */
+#define FN_PAGE_STYLE_SET_PAPER_SIZE (FN_FORMAT + 135) /* Papiergroesse */
+#define FN_PAGE_STYLE_SET_PAPER_BIN (FN_FORMAT + 136) /* Druckerschacht */
+#define FN_PAGE_STYLE_SET_NUMBER_FORMAT (FN_FORMAT + 137) /* Numerierungsart */
+#define FN_PAGE_STYLE_SET_COLS (FN_FORMAT + 138) /* Spaltenanzahl */
+
+
+/* OS: Diese Ids werden nur noch fuer die Hilfe benoetigt und sind fuer den
+ Dialog durch die Ids ohne _DLG ersetzt*/
+#define FN_TABLE_INSERT_COL_DLG (FN_FORMAT + 142) /* Tabelle: Dlg. Spalte einfuegen */
+#define FN_TABLE_INSERT_ROW_DLG (FN_FORMAT + 143) /* Tabelle: Dlg. Zeile einfuegen */
+
+
+
+//hier geht's weiter !
+/*--------------------------------------------------------------------
+ Bereich: Ribbon
+ --------------------------------------------------------------------*/
+
+#define FN_SET_BACKGROUND_COLOR (FN_FORMAT + 150) /* Hintergrundfarbe */
+
+#define FN_SET_BORDER_POS (FN_FORMAT + 152) /* Position Umrandung */
+#define FN_SET_BORDER_LINES (FN_FORMAT + 153) /* Linienart Umrandung */
+#define FN_SET_BORDER_COLOR (FN_FORMAT + 154) /* Farbe Umrandung */
+
+#define FN_FORMULA_CALC (FN_FORMAT + 156) /* Formelauswahl */
+#define FN_FORMULA_CANCEL (FN_FORMAT + 157) /* Formel nicht uebernehmen */
+#define FN_FORMULA_APPLY (FN_FORMAT + 158) /* Formel uebernehmen */
+
+#define FN_TABLE_UNSET_READ_ONLY (FN_FORMAT + 159) /* Zellenschutz fuer Tab. aufheben */
+
+#define FN_FORMULA_POSITION (FN_FORMAT + 160) /* Positionsanzeige */
+#define FN_FORMULA_EDIT (FN_FORMAT + 161) /* Editfeld */
+
+
+#define FN_FRAME_WRAP_IDEAL (FN_FORMAT + 163) /* Rahmen Idealer Umlauf */
+#define FN_FRAME_WRAPTHRU_TRANSP (FN_FORMAT + 164) /* Rahmen Transparenter Durchlauf */
+
+#define FN_FRAME_ALIGN_VERT_ROW_TOP (FN_FORMAT + 165) /* Rahmen vert. Zeile oben */
+#define FN_FRAME_ALIGN_VERT_ROW_BOTTOM (FN_FORMAT + 166) /* Rahmen vert. Zeile unten */
+#define FN_FRAME_ALIGN_VERT_ROW_CENTER (FN_FORMAT + 167) /* Rahmen vert. Zeile zentriert */
+
+#define FN_FRAME_ALIGN_VERT_CHAR_TOP (FN_FORMAT + 168) /* Rahmen vert. Zeichen oben */
+#define FN_FRAME_ALIGN_VERT_CHAR_BOTTOM (FN_FORMAT + 169) /* Rahmen vert. Zeichen unten */
+#define FN_FRAME_ALIGN_VERT_CHAR_CENTER (FN_FORMAT + 170) /* Rahmen vert. Zeichen zentriert */
+
+#define FN_TABLE_SET_DEF_BORDER (FN_FORMAT + 171) /* vordefinierte Umrandungen setzen */
+
+#define FN_FRAME_WRAP_LEFT (FN_FORMAT + 172) /* Rahmen Umlauf links */
+#define FN_FRAME_WRAP_RIGHT (FN_FORMAT + 173) /* Rahmen Umlauf links */
+
+#define FN_TABLE_SET_ROW_AUTOHEIGHT (FN_FORMAT + 174) /* Tabelle: Minimale automatische Zeilenhoehe setzen */
+
+
+#define FN_WRAP_ANCHOR_ONLY (FN_FORMAT + 181) /* Umlauf nur fuer ersten Absatz */
+
+#define FN_TABLE_BALANCE_CELLS (FN_FORMAT + 182) /* Spalten gleichmaessig verteilen */
+#define FN_TABLE_BALANCE_ROWS (FN_FORMAT + 183) /* Zeilen gleichmaessig verteilen */
+
+#define FN_FRAME_WRAP_CONTOUR (FN_FORMAT + 184) /* Rahmen Kunturumlauf */
+
+#define FN_TABLE_VERT_NONE (FN_FORMAT + 185) /* vertikale Ausrichtung in Tabellenzellen */
+#define FN_TABLE_VERT_CENTER (FN_FORMAT + 186) /* -"- */
+#define FN_TABLE_VERT_BOTTOM (FN_FORMAT + 187) /* -"- */
+#define FN_TABLE_SET_VERT_ALIGN (FN_FORMAT + 188) /* -"- */
+#define FN_TABLE_MODE_FIX (FN_FORMAT + 189) /* Tabellenmodus */
+#define FN_TABLE_MODE_FIX_PROP (FN_FORMAT + 190) /* -"- */
+#define FN_TABLE_MODE_VARIABLE (FN_FORMAT + 191) /* -"- */
+
+#define FN_TABLE_AUTOSUM (FN_FORMAT + 195) /* Autosumme*/
+#define FN_SET_CONTROL_HANDLER (FN_FORMAT + 199) /* Macro setzen */
+
+#define FN_IS_IMAGE (FN_FORMAT2 + 6) /* Numerierung : mit Grafik?*/
+
+#define FN_GOTO_NEXT_REGION (FN_FORMAT2 + 9) /* Naechsten Bereich anspringen */
+#define FN_GOTO_PREV_REGION (FN_FORMAT2 + 10) /* Vorherigen " */
+
+#define FN_GET_SBXCONTROL (FN_FORMAT2 + 11) /* SbxObject rausreichen */
+#define FN_ABSTRACT_NEWDOC (FN_FORMAT2 + 12) /* Abstract in neuem Doc */
+#define FN_ABSTRACT_STARIMPRESS (FN_FORMAT2 + 13) /* Abstract an StarImpress */
+
+
+
+
+
+
+
+#define FN_NUMBER_FORMAT (FN_FORMAT2 + 120) /* Boxen/NumberFormatter eistellen */
+#define FN_NUMBER_STANDARD (FN_FORMAT2 + 121)
+#define FN_NUMBER_TWODEC (FN_FORMAT2 + 123)
+#define FN_NUMBER_SCIENTIFIC (FN_FORMAT2 + 124)
+#define FN_NUMBER_DATE (FN_FORMAT2 + 125)
+#define FN_NUMBER_TIME (FN_FORMAT2 + 126)
+#define FN_NUMBER_CURRENCY (FN_FORMAT2 + 127)
+#define FN_NUMBER_PERCENT (FN_FORMAT2 + 128)
+
+
+
+#define FN_FRAME_CHAIN (FN_FORMAT2 + 136)
+#define FN_FRAME_UNCHAIN (FN_FORMAT2 + 137)
+
+#define FN_NUMBER_NEWSTART (FN_FORMAT2 + 138)
+#define FN_NUMBER_NEWSTART_AT (FN_FORMAT2 + 139)
+
+#define FN_FRAME_MIRROR_ON_EVEN_PAGES (FN_FORMAT2 + 140)
+#define FN_GRAPHIC_MIRROR_ON_EVEN_PAGES (FN_FORMAT2 + 141)
+
+#define FN_TABLE_SPLIT_TABLE (FN_FORMAT2 + 142)
+#define FN_SYNC_LABELS (FN_FORMAT2 + 143)
+
+
+#define FN_TABLE_RELATIVE_WIDTH (FN_FORMAT2 + 147) /* Tabelle: relative Breite - UNO */
+#define FN_TABLE_WIDTH (FN_FORMAT2 + 148) /* Tabelle: Breite - UNO */
+#define FN_TABLE_IS_RELATIVE_WIDTH (FN_FORMAT2 + 149) /* Tabelle: ist Breite relativ?- UNO */
+
+#define FN_INC_INDENT_OFFSET (FN_FORMAT2 + 150)
+#define FN_DEC_INDENT_OFFSET (FN_FORMAT2 + 151)
+
+#define FN_TABLE_MERGE_TABLE (FN_FORMAT2 + 152)
+
+/*--------------------------------------------------------------------
+ Bereich: Extras
+ --------------------------------------------------------------------*/
+
+#define FN_LINE_NUMBERING_DLG (FN_EXTRA + 2 ) /* Zeilennumerierung */
+#define FN_THESAURUS_DLG (FN_EXTRA + 3 ) /* Thesaurus */
+#define FN_HYPHENATE_OPT_DLG (FN_EXTRA + 5 ) /* Silbentrennung */
+#define FN_ADD_UNKNOWN (FN_EXTRA + 6 ) /* Woerter lernen */
+#define FN_DICTIONARY_DLG (FN_EXTRA + 8 ) /* Woerterbuecher */
+#define FN_NUMBERING (FN_EXTRA + 9 ) /* Nummerierung/Bullets */
+#define FN_NUMBERING_DLG (FN_EXTRA + 10) /* Nummerierung/Bullets */
+#define FN_NUMBERING_OUTLINE (FN_EXTRA + 11) /* Gliederungsnumerierung */
+#define FN_NUMBERING_OUTLINE_DLG (FN_EXTRA + 12) /* Gliederungsnumerierung */
+#define FN_SORTING_DLG (FN_EXTRA + 14) /* Sortieren */
+#define FN_CALCULATE (FN_EXTRA + 15) /* Berechnen */
+#define FN_GENERATE_TOC_DLG (FN_EXTRA + 16) /* Inhaltsverzeichnis */
+#define FN_GENERATE_INDEX_DLG (FN_EXTRA + 17) /* Stichwortverzeichnis */
+#define FN_GENERATE_DIR_DLG (FN_EXTRA + 18) /* Verzeichnis */
+#define FN_GLOSSARY_DLG (FN_EXTRA + 20) /* Textbausteine */
+#define FN_MACRO_CHOOSER (FN_EXTRA + 21) /* Makro aufnehmen */
+#define FN_SPELLING_DLG (FN_EXTRA + 22) /* Rechtschreibung */
+
+#define FN_PLAY_MACRO (FN_EXTRA + 23) /* Makro abspielen */
+#define FN_LAUNCH_BASIC (FN_EXTRA + 25) /* Makro abspielen */
+#define FN_EXPAND_GLOSSARY (FN_EXTRA + 28) /* Textbausteine expandieren */
+#define FN_CONFIG_TOOLBOX (FN_EXTRA + 29) /* Konfiguration Toolbox */
+#define FN_CONFIG_MENU (FN_EXTRA + 30) /* Konfiguration Menu */
+#define FN_CONFIG_KEY (FN_EXTRA + 31) /* Konfiguration Tastatur */
+#define FN_CHANGE_PAGENUM (FN_EXTRA + 34) /* Seitennummer aendern */
+
+#define FN_MACRO_POPUP (FN_EXTRA + 37) /* Alle Macrofunktionen */
+#define FN_BULLET (FN_EXTRA + 38) /* Bullet-Liste */
+
+
+// Bereich: Gloassaries
+
+// schon im Svx definiert
+
+//#define FN_GET_GLOSSARY_GROUP_COUNT (FN_EXTRA + 42) /* Anzahl der Bausteingruppen */
+
+#define FN_AUTO_CORRECT (FN_EXTRA + 49 ) /* Autocorrect aus Basic */
+#define FN_AUTO_CORRECT_DLG (FN_EXTRA + 50 ) /* Dialog Autocorrect */
+
+#define FN_UPDATE_TOX (FN_EXTRA + 53) /* alle Verzeichnisse aktualisieren */
+#define FN_UPDATE_CUR_TOX (FN_EXTRA + 54) /* aktuelles Verzeichnisse aktualisieren */
+#define FN_REMOVE_CUR_TOX (FN_EXTRA + 55) /* remove the current TOX*/
+
+#define FN_NAVIGATION_PI_GOTO_PAGE (FN_EXTRA + 59 ) /* Seitenanwahl aus Navi-PI */
+
+
+#define FN_LETTER_WIZZARD (FN_EXTRA + 60 )
+#define FN_FAX_WIZZARD (FN_EXTRA + 61 )
+#define FN_MEMO_WIZZARD (FN_EXTRA + 62 )
+#define FN_AGENDA_WIZZARD (FN_EXTRA + 63 )
+
+#define FN_SET_BASIC_METRIC (FN_EXTRA + 80) /* Defaultmetrik Basic setzen */
+
+#define FN_RESERVED_9 (FN_EXTRA + 86) /* Platzhalter */
+#define FN_RESERVED_8 (FN_EXTRA + 87) /* Platzhalter */
+#define FN_RESERVED_7 (FN_EXTRA + 88) /* Platzhalter */
+#define FN_RESERVED_6 (FN_EXTRA + 89) /* Platzhalter */
+#define FN_RESERVED_5 (FN_EXTRA + 90) /* Platzhalter */
+#define FN_RESERVED_4 (FN_EXTRA + 91) /* Platzhalter */
+#define FN_RESERVED_3 (FN_EXTRA + 92) /* Platzhalter */
+#define FN_RESERVED_2 (FN_EXTRA + 93) /* Platzhalter */
+#define FN_RESERVED_1 (FN_EXTRA + 94) /* Platzhalter */
+
+#define FN_COLLECTION_GROUP_CNT (FN_EXTRA + 96)
+#define FN_COLLECTION_GROUP_IDX (FN_EXTRA + 97)
+#define FN_COLL_TYPE (FN_EXTRA + 98) /* Typ fuer GlobalDoc-Collection*/
+#define FN_COLL_ADD (FN_EXTRA + 99)
+
+#define FN_COLL_TITLE (FN_EXTRA2 + 1) /* Bereichsname oder Index-Title */
+#define FN_SHADOWCURSOR (FN_EXTRA2 + 4) /* Shadow Cursor ein/ausschalten */
+
+
+#define FN_VIEW_IN_FRAME (FN_EXTRA2 + 8) /* die View befindet sich in einem FrameDoc*/
+
+#define FN_UNO_PARA_STYLE (FN_EXTRA2 + 9) // jetzt kommen diverse UNO-Ids fuer die
+#define FN_UNO_PAGE_STYLE (FN_EXTRA2 + 10) // PropertyMap
+
+#define FN_UNO_FRAME_STYLE (FN_EXTRA2 + 12)
+#define FN_UNO_NUM_START_VALUE (FN_EXTRA2 + 13)
+#define FN_UNO_NUM_LEVEL (FN_EXTRA2 + 14)
+#define FN_UNO_NUM_RULES (FN_EXTRA2 + 15)
+#define FN_UNO_DOCUMENT_INDEX_MARK (FN_EXTRA2 + 16)
+#define FN_UNO_DOCUMENT_INDEX (FN_EXTRA2 + 17)
+#define FN_UNO_TEXT_FIELD (FN_EXTRA2 + 18)
+#define FN_UNO_TEXT_TABLE (FN_EXTRA2 + 19)
+#define FN_UNO_CELL (FN_EXTRA2 + 20)
+#define FN_UNO_TEXT_FRAME (FN_EXTRA2 + 21)
+#define FN_UNO_REFERENCE_MARK (FN_EXTRA2 + 22)
+#define FN_UNO_TEXT_SECTION (FN_EXTRA2 + 23)
+#define FN_UNO_FOOTNOTE (FN_EXTRA2 + 24)
+#define FN_UNO_ENDNOTE (FN_EXTRA2 + 25)
+#define FN_UNO_RANGE_COL_LABEL (FN_EXTRA2 + 26)
+#define FN_UNO_RANGE_ROW_LABEL (FN_EXTRA2 + 27)
+#define FN_UNO_TABLE_COLUMS (FN_EXTRA2 + 28)
+#define FN_UNO_TABLE_BORDER (FN_EXTRA2 + 29)
+#define FN_UNO_TABLE_COLUMN_SEPARATORS (FN_EXTRA2 + 30)
+#define FN_UNO_TABLE_COLUMN_RELATIVE_SUM (FN_EXTRA2 + 31)
+#define FN_UNO_TABLE_CELL_BACKGROUND (FN_EXTRA2 + 32)
+#define FN_UNO_ROW_HEIGHT (FN_EXTRA2 + 33)
+#define FN_UNO_ROW_AUTO_HEIGHT (FN_EXTRA2 + 34)
+#define FN_UNO_HEADER (FN_EXTRA2 + 35)
+#define FN_UNO_HEADER_LEFT (FN_EXTRA2 + 36)
+#define FN_UNO_HEADER_RIGHT (FN_EXTRA2 + 37)
+#define FN_UNO_FOOTER (FN_EXTRA2 + 38)
+#define FN_UNO_FOOTER_LEFT (FN_EXTRA2 + 39)
+#define FN_UNO_FOOTER_RIGHT (FN_EXTRA2 + 40)
+#define FN_UNO_HEADER_BACKGROUND (FN_EXTRA2 + 41)
+#define FN_UNO_HEADER_BOX (FN_EXTRA2 + 42)
+#define FN_UNO_HEADER_LR_SPACE (FN_EXTRA2 + 43)
+#define FN_UNO_HEADER_SHADOW (FN_EXTRA2 + 44)
+#define FN_UNO_FOOTER_BACKGROUND (FN_EXTRA2 + 45)
+#define FN_UNO_FOOTER_BOX (FN_EXTRA2 + 46)
+#define FN_UNO_FOOTER_LR_SPACE (FN_EXTRA2 + 47)
+#define FN_UNO_FOOTER_SHADOW (FN_EXTRA2 + 48)
+#define FN_UNO_HEADER_BODY_DISTANCE (FN_EXTRA2 + 49)
+#define FN_UNO_HEADER_IS_DYNAMIC_DISTANCE (FN_EXTRA2 + 50)
+#define FN_UNO_FOOTER_BODY_DISTANCE (FN_EXTRA2 + 51)
+#define FN_UNO_FOOTER_IS_DYNAMIC_DISTANCE (FN_EXTRA2 + 52)
+#define FN_UNO_HEADER_SHARE_CONTENT (FN_EXTRA2 + 53)
+#define FN_UNO_FOOTER_SHARE_CONTENT (FN_EXTRA2 + 54)
+#define FN_UNO_HEADER_HEIGHT (FN_EXTRA2 + 55)
+#define FN_UNO_FOOTER_HEIGHT (FN_EXTRA2 + 56)
+#define FN_UNO_HEADER_ON (FN_EXTRA2 + 57)
+#define FN_UNO_FOOTER_ON (FN_EXTRA2 + 58)
+#define FN_UNO_FOLLOW_STYLE (FN_EXTRA2 + 59)
+
+#define FN_API_CALL (FN_EXTRA2 + 60)
+
+#define FN_UNO_IS_PHYSICAL (FN_EXTRA2 + 61)
+#define FN_UNO_IS_AUTO_UPDATE (FN_EXTRA2 + 62)
+#define FN_UNO_DISPLAY_NAME (FN_EXTRA2 + 63)
+
+#define FN_UNO_WRAP (FN_EXTRA2 + 64)
+#define FN_UNO_ANCHOR_TYPES (FN_EXTRA2 + 65)
+#define FN_UNO_PARA_CHAPTER_NUMBERING_LEVEL (FN_EXTRA2 + 66)
+#define FN_UNO_PARA_CONDITIONAL_STYLE_NAME (FN_EXTRA2 + 67)
+
+#define FN_UNO_CATEGORY (FN_EXTRA2 + 68)
+#define FN_UNO_IS_NUMBER (FN_EXTRA2 + 69)
+#define FN_UNO_TEXT_WRAP (FN_EXTRA2 + 70)
+#define FN_UNO_ANCHOR_TYPE (FN_EXTRA2 + 71)
+/*--------------------------------------------------------------------
+ Bereich: Fenster
+ --------------------------------------------------------------------*/
+
+#define FN_SOURCEVIEW SID_SOURCEVIEW
+/*--------------------------------------------------------------------
+ Bereich: Hilfe
+ --------------------------------------------------------------------*/
+
+
+#define FN_LAUNCH_HELP (FN_HELP + 1) /* Hilfe */
+#define FN_SHOW_HELP_INDEX (FN_HELP + 2) /* Hilfeindex */
+#define FN_SHOW_KEYBOARD_HELP (FN_HELP + 3) /* Hilfe */
+#define FN_SHOW_HELP_MANUAL (FN_HELP + 4) /* Hilfe */
+#define FN_SHOW_UPDATE_HELP (FN_HELP + 5) /* Hilfe */
+
+#define FN_BALLOON_HELP (FN_HELP + 7) /* Toggle Balloon Help */
+#define FN_HELP_POPUP (FN_HELP + 8) /* Popup Help */
+
+
+/*--------------------------------------------------------------------
+ Bereich: Traveling & Selektion
+ --------------------------------------------------------------------*/
+
+#define FN_CHAR_LEFT (FN_SELECTION + 1 ) /* */
+#define FN_CHAR_RIGHT (FN_SELECTION + 2 ) /* */
+#define FN_LINE_UP (FN_SELECTION + 3 ) /* */
+#define FN_LINE_DOWN (FN_SELECTION + 4 ) /* */
+#define FN_START_OF_LINE (FN_SELECTION + 5 ) /* StartOfLine */
+#define FN_END_OF_LINE (FN_SELECTION + 6 ) /* EndOfLine */
+#define FN_START_OF_DOCUMENT (FN_SELECTION + 7 ) /* StartOfDocument */
+//schon in svxids.hrc
+//#define FN_END_OF_DOCUMENT (FN_SELECTION + 8 ) /* EndOfDocument */
+#define FN_START_OF_NEXT_PAGE (FN_SELECTION + 9 ) /* StartOfNextPage ??? */
+#define FN_END_OF_NEXT_PAGE (FN_SELECTION + 10) /* ??? */
+#define FN_START_OF_PREV_PAGE (FN_SELECTION + 11) /* StartOfPrevPage ??? */
+#define FN_END_OF_PREV_PAGE (FN_SELECTION + 12) /* ??? */
+#define FN_START_OF_PAGE (FN_SELECTION + 13) /* StartOfPage */
+#define FN_END_OF_PAGE (FN_SELECTION + 14) /* EndOfPage */
+#define FN_START_OF_WINDOW (FN_SELECTION + 15) /* StartOfWindow */
+#define FN_END_OF_WINDOW (FN_SELECTION + 16) /* EndOfWindow */
+#define FN_START_OF_COLUMN (FN_SELECTION + 17) /* StartOfColumn */
+#define FN_END_OF_COLUMN (FN_SELECTION + 18) /* EndOfColumn */
+#define FN_START_OF_PARA (FN_SELECTION + 19) /* StartOfPara */
+#define FN_END_OF_PARA (FN_SELECTION + 20) /* EndOfPara */
+#define FN_NEXT_WORD (FN_SELECTION + 21) /* NextWord */
+#define FN_PREV_WORD (FN_SELECTION + 22) /* PrevWord */
+#define FN_NEXT_SENT (FN_SELECTION + 23) /* NextSentence */
+#define FN_PREV_SENT (FN_SELECTION + 24) /* PrevSentence */
+#define FN_DELETE (FN_SELECTION + 25) /* Delete */
+#define FN_BACKSPACE (FN_SELECTION + 26) /* Backspace */
+#define FN_DELETE_SENT (FN_SELECTION + 27) /* DeleteToEndOfSentence */
+#define FN_DELETE_BACK_SENT (FN_SELECTION + 28) /* DeleteToStartOfSentence */
+#define FN_DELETE_WORD (FN_SELECTION + 29) /* DeleteToEndOfWord */
+#define FN_DELETE_BACK_WORD (FN_SELECTION + 30) /* DeleteToStartOfWord */
+#define FN_DELETE_LINE (FN_SELECTION + 31) /* DeleteToEndOfLine */
+#define FN_DELETE_BACK_LINE (FN_SELECTION + 32) /* DeleteToStartOfLine */
+#define FN_DELETE_PARA (FN_SELECTION + 33) /* DeleteToEndOfPara */
+#define FN_DELETE_BACK_PARA (FN_SELECTION + 34) /* DeleteToStartOfPara */
+#define FN_DELETE_WHOLE_LINE (FN_SELECTION + 35) /* DeleteLine ??? */
+#define FN_SET_INS_MODE (FN_SELECTION + 36) /* Einfuegemodus / Overwrite */
+#define FN_PAGEUP (FN_SELECTION + 37) /* PageUpWithCursor */
+#define FN_PAGEDOWN (FN_SELECTION + 38) /* PageDownWithCursor */
+#define FN_SET_ADD_MODE (FN_SELECTION + 39) /* Selektionsmodus */
+#define FN_SET_EXT_MODE (FN_SELECTION + 40) /* Selektionsmodus */
+#define FN_ESCAPE (FN_SELECTION + 41) /* Normal */
+#define FN_SHIFT_BACKSPACE (FN_SELECTION + 42) /* wie Backspace */
+#define FN_SELECT_WORD (FN_SELECTION + 43) /* Wort selektieren */
+
+#define FN_GOTO_NEXT_OBJ (FN_SELECTION + 44) /* N„chstes Objekt anspringen */
+#define FN_GOTO_PREV_OBJ (FN_SELECTION + 45) /* Vorhergehendes Objekt anspringen */
+
+#define FN_START_TABLE (FN_SELECTION + 47) /* an den Anfang der Tabelle */
+#define FN_END_TABLE (FN_SELECTION + 48) /* an das Ende der Tabelle */
+#define FN_NEXT_TABLE (FN_SELECTION + 49) /* zur vorhergehenden Tabelle */
+#define FN_PREV_TABLE (FN_SELECTION + 50) /* zur naechsten Tabelle */
+
+#define FN_START_OF_NEXT_COLUMN (FN_SELECTION + 51) /* zum Anfang der naechsten Spalte */
+#define FN_END_OF_NEXT_COLUMN (FN_SELECTION + 52) /* zum Ende der naechsten Spalte */
+#define FN_START_OF_PREV_COLUMN (FN_SELECTION + 53) /* zum Anfang der vorhergehenden Spalte */
+#define FN_END_OF_PREV_COLUMN (FN_SELECTION + 54) /* zum Ende der vorhergehenden Spalte */
+
+#define FN_FOOTNOTE_TO_ANCHOR (FN_SELECTION + 55) /* aus der Fussnote zum Anchor */
+#define FN_NEXT_FOOTNOTE (FN_SELECTION + 56) /* zur naechsten Fussnote */
+#define FN_PREV_FOOTNOTE (FN_SELECTION + 57) /* zur vorhergehenden Fussnote */
+
+#define FN_CNTNT_TO_NEXT_FRAME (FN_SELECTION + 58) /* aus dem Inhalt zum naechsten Rahmen */
+#define FN_FRAME_TO_ANCHOR (FN_SELECTION + 59) /* vom Rahmen zum Anker */
+
+#define FN_TO_HEADER (FN_SELECTION + 60) /* Toggle zwischen Content und Kopfzeile */
+#define FN_TO_FOOTER (FN_SELECTION + 61) /* Toggle zwischen Content und Fusszeile */
+
+#define FN_IDX_MARK_TO_IDX (FN_SELECTION + 62) /* von der Verzeichnismarkierung zum Verzeichnis */
+
+
+
+
+
+#define FN_PREV_PARA (FN_SELECTION + 74)
+#define FN_NEXT_PARA (FN_SELECTION + 75)
+
+#define FN_GOTO_NEXT_MARK (FN_SELECTION + 76) /* N„chsten Platzhalter anspringen */
+#define FN_GOTO_PREV_MARK (FN_SELECTION + 77) /* Vorhergehenden Platzhalter anspringen */
+
+// schon im SVX unter der gleichen Id
+//#define FN_START_DOC_DIRECT (FN_SELECTION + 78) /* Direkt zum Dokanfang springen */
+//#define FN_END_DOC_DIRECT (FN_SELECTION + 79) /* Direkt zum Dokanfang springen */
+
+#define FN_NEXT_TOXMARK (FN_SELECTION + 83) /* zur naechsten Verz. Markierung */
+#define FN_PREV_TOXMARK (FN_SELECTION + 84) /* zur vorherigen Verz. Markierung */
+#define FN_NEXT_TBLFML (FN_SELECTION + 85) /* zur naechsten Tabellenformel */
+#define FN_PREV_TBLFML (FN_SELECTION + 86) /* zur vorherigen Tabellenformel */
+#define FN_NEXT_TBLFML_ERR (FN_SELECTION + 87) /* zur naechsten fehl. Tabellenformel */
+#define FN_PREV_TBLFML_ERR (FN_SELECTION + 88) /* zur vorherigen fehl. Tabellenformel */
+
+
+/*--------------------------------------------------------------------
+ QUERY-Block
+ --------------------------------------------------------------------*/
+
+
+
+#define FN_IS_MODIFIED (FN_QUERY +16) /* Dokument geaendert? */
+#define FN_RESET_MODIFIED (FN_QUERY +17) /* Geaendert-Flag zuruecksetzen */
+
+#define FN_GET_DOC_INFO (FN_QUERY +22) /* Wert Dokumentinfo erfragen */
+#define FN_GET_ERRNO (FN_QUERY +26) /* Error-Nummer abfragen */
+#define FN_GET_DOCMAN_PATH (FN_QUERY +27) /* Pfad zu einer Gruppe im Docmgr erfragen */
+
+#define FN_TXTATR_INET (FN_QUERY +29) /* INet-Attribut */
+#define FN_EXECUTE_DRAG (FN_QUERY +30) /* D&D starten */
+
+#define FN_GET_PRINT_AREA (FN_QUERY +32) /* Attribut fuer druckbaren Seitenbereich besorgen */
+
+
+
+// #define FN_IS_START_OF_PAGE (FN_QUERY +40) /**/
+// #define FN_IS_END_OF_PAGE (FN_QUERY +41) /**/
+
+#define FN_GET_PARAGRAPH (FN_QUERY +48) /* Paragraph-Object von der Textshell
+ an die View weiterreichen*/
+// hier ist Schluss!!!
+
+
+/*--------------------------------------------------------------------
+ Bereich: Envelope
+ --------------------------------------------------------------------*/
+
+#define FN_ENVELOP (FN_ENVELP )
+#define FN_LABEL (FN_ENVELP + 1)
+#define FN_BUSINESS_CARD (FN_ENVELP + 2)
+
+/*--------------------------------------------------------------------
+ Bereich: Parameter
+ --------------------------------------------------------------------*/
+
+#define FN_PARAM_TABLE_COLS (FN_PARAM)
+#define FN_PARAM_TABLE_ROWS (FN_PARAM+1)
+
+#define FN_PARAM_SEARCH_WORDONLY (FN_PARAM+5)
+#define FN_PARAM_SEARCH_EXACT (FN_PARAM+6)
+#define FN_PARAM_SEARCH_REGEXP (FN_PARAM+7)
+#define FN_PARAM_SEARCH_BACKWARDS (FN_PARAM+8)
+#define FN_PARAM_SEARCH_FINDALL (FN_PARAM+9)
+#define FN_PARAM_SEARCH_SELECTION (FN_PARAM+10)
+#define FN_PARAM_SEARCH_TEXT (FN_PARAM+11)
+#define FN_PARAM_SEARCH_TEXTREPLACE (FN_PARAM+12)
+
+#define FN_PARAM_PARADLGLIMITS (FN_PARAM+15)
+#define FN_PARAM_FRMMODE (FN_PARAM+16)
+
+#define FN_PARAM_ADDPRINTER (FN_PARAM+18)
+#define FN_PARAM_GRID (FN_PARAM+19)
+#define FN_PARAM_DOCDISP (FN_PARAM+20)
+#define FN_PARAM_ELEM (FN_PARAM+21)
+#define FN_PARAM_SWTEST (FN_PARAM+22)
+
+#define FN_PARAM_FTN_INFO (FN_PARAM+23)
+
+#define FN_PARAM_REGION_NAME (FN_PARAM+24)
+#define FN_PARAM_REGION_CONDITION (FN_PARAM+25)
+#define FN_PARAM_REGION_HIDDEN (FN_PARAM+26)
+#define FN_PARAM_REGION_PROTECT (FN_PARAM+27)
+
+#define FN_PARAM_INSERT_AFTER (FN_PARAM+29)
+#define FN_PARAM_FILTER (FN_PARAM+30)
+#define FN_PARAM_INDEX_NAME (FN_PARAM+31)
+#define FN_PARAM_INDEX_OPTIONS (FN_PARAM+32)
+#define FN_PARAM_INDEX_FORMAT (FN_PARAM+33)
+#define FN_PARAM_INDEX_LEVEL (FN_PARAM+34)
+#define FN_PARAM_INDEX_TEMPLATE (FN_PARAM+35)
+#define FN_PARAM_INDEX_ALTSTR (FN_PARAM+36)
+#define FN_PARAM_INDEX_PRIMKEY (FN_PARAM+37)
+#define FN_PARAM_INDEX_SECKEY (FN_PARAM+38)
+#define FN_PARAM_WIDTH (FN_PARAM+39)
+#define FN_PARAM_LOCATION (FN_PARAM+40)
+#define FN_PARAM_DIR (FN_PARAM+41)
+#define FN_PARAM_COUNT (FN_PARAM+42)
+#define FN_PARAM_COLOR (FN_PARAM+43)
+
+#define FN_PARAM_TABLE_NAME (FN_PARAM+44)
+#define FN_PARAM_TABLE_WIDTH (FN_PARAM+45)
+#define FN_PARAM_TABLE_ULSPACE (FN_PARAM+46)
+#define FN_PARAM_TABLE_LRSPACE (FN_PARAM+47)
+#define FN_PARAM_TABLE_SHADOW (FN_PARAM+48)
+#define FN_PARAM_TABLE_ALIGN (FN_PARAM+49)
+#define FN_PARAM_TABLE_HEADLINE (FN_PARAM+50)
+#define FN_PARAM_TABLE_SPACE (FN_PARAM+51)
+#define FN_PARAM_TABLE_COLUMNS (FN_PARAM+52)
+
+#define FN_PARAM_GRF_CONNECT (FN_PARAM+54)
+
+
+#define FN_PARAM_EVENT (FN_PARAM+68)
+#define FN_PARAM_URL (FN_PARAM+69)
+#define FN_PARAM_GRF_REALSIZE (FN_PARAM+70)
+#define FN_PARAM_GRF_DIALOG (FN_PARAM+71)
+#define FN_PARAM_GRF_CLIENTMAP (FN_PARAM+74) /* ClientMap */
+#define FN_PARAM_GRF_SERVERMAP (FN_PARAM+75) /* ServerMap */
+#define FN_PARAM_GRF_TARGETFRAME (FN_PARAM+76) /* TargetFrame */
+#define FN_INET_FIELD_MACRO (FN_PARAM+77) /* Id fuer URL-Feld-Macros*/
+
+#define FN_PARAM_PRINTER (FN_PARAM+78) /* Drucker* */
+#define FN_PARAM_STDFONTS (FN_PARAM+79) /* ConfigItem Standardfonts */
+
+#define FN_PARAM_WRTSHELL (FN_PARAM2) /* SwWrtShell */
+
+#define FN_COND_COLL (FN_PARAM2+1) /* Item fuer bed. Vorlagen */
+#define FN_PARAM_SELECTION (FN_PARAM2+2) /* selektiertes Wort fuer Format/Zeichen/Hyperlink */
+
+#define FN_PARAM_ACT_NUMBER (FN_PARAM2+3) /* PointerItem die aktuelle NumRule */
+#define FN_PARAM_CHILD_LEVELS (FN_PARAM2+4) /* Werden Child-Levels benutzt ?*/
+
+#define FN_PARAM_NUM_PRESET (FN_PARAM2+5) /* vorgewaehlte Numerierung*/
+
+#define FN_PARAM_HEIGHT (FN_PARAM2+6) /* Param fuer Hoehe */
+#define FN_PARAM_DIST (FN_PARAM2+7) /* und Breite, wg. metrischer Umwandlung */
+
+#define FN_PARAM_SHADOWCURSOR (FN_PARAM2+8) /* Fuer ShadowCursor Optionen */
+
+#define FN_PARAM_ACT_NUMLEVEL (FN_PARAM2+9) /* BYTE-Item mit aktuellen NumLevel */
+
+#define FN_PARAM_9 (FN_PARAM2+10)
+#define FN_PARAM_10 (FN_PARAM2+11)
+
+#define FN_TEXT_RANGE (FN_PARAM2+12) /* TextRange Property*/
+
+#define FN_PARAM_CRSR_IN_PROTECTED (FN_PARAM2+13) /* Cursor in geschuetzten Bereichen*/
+#define FN_PARAM_TOX_TYPE (FN_PARAM2+14) /* TOX type in tox dialog*/
+#define FN_PARAM_LINK_DISPLAY_NAME (FN_PARAM2+15) /* LinkDisplayName property*/
+#define FN_PARAM_NUM_LEVEL (FN_PARAM2+16) /* rtf filter*/
+/*--------------------------------------------------------------------
+ Bereich: Druckoptionen
+ --------------------------------------------------------------------*/
+
+#define FN_PRNOPT_GRAPHIC (FN_PRNOPT + 1)
+#define FN_PRNOPT_TABLE (FN_PRNOPT + 2)
+#define FN_PRNOPT_LEFT_PAGE (FN_PRNOPT + 3)
+#define FN_PRNOPT_RIGHT_PAGE (FN_PRNOPT + 4)
+#define FN_PRNOPT_REVERSE (FN_PRNOPT + 5)
+#define FN_PRNOPT_PAPER_FROM_SETUP (FN_PRNOPT + 6)
+#define FN_PRNOPT_POSTITS (FN_PRNOPT + 8)
+
+#define FN_PRNOPT_BEGIN FN_PRNOPT_GRAPHIC
+#define FN_PRNOPT_END FN_PRNOPT_POSTITS
+
+/*--------------------------------------------------------------------
+ Beschreibung: Status : nicht mehr als 19!
+ --------------------------------------------------------------------*/
+
+#define FN_STAT_PAGE (FN_STAT + 1)
+#define FN_STAT_TEMPLATE (FN_STAT + 2)
+#define FN_STAT_ZOOM (FN_STAT + 3)
+#define FN_STAT_INSOVER (FN_STAT + 4)
+#define FN_STAT_SELMODE (FN_STAT + 5)
+#define FN_STAT_HYPERLINKS (FN_STAT + 6) /* Hyperlinks ausfuehren */
+#define FN_STAT_CONTEXT (FN_STAT + 7)
+#define FN_STAT_BOOKMARK (FN_STAT + 8) /* Fuer Popup Bookmarks*/
+
+/*--------------------------------------------------------------------
+ Bereich: Seitenvorschau
+ --------------------------------------------------------------------*/
+
+#define FN_SHOW_TWO_PAGES (FN_PGPREVIEW + 1)
+#define FN_SHOW_FOUR_PAGES (FN_PGPREVIEW + 2)
+#define FN_PRINT_PAGEPREVIEW (FN_PGPREVIEW + 3)
+
+/*--------------------------------------------------------------------
+ Bereich: Rahmenattribute
+ --------------------------------------------------------------------*/
+
+#define FN_OPAQUE (FN_FRAME + 1)
+#define FN_SET_PROTECT (FN_FRAME + 2)
+#define FN_SURROUND (FN_FRAME + 3)
+#define FN_VERT_ORIENT (FN_FRAME + 4)
+#define FN_HORI_ORIENT (FN_FRAME + 5)
+#define FN_SET_FRM_NAME (FN_FRAME + 6)
+#define FN_KEEP_ASPECT_RATIO (FN_FRAME + 7)
+#define FN_GRF_KEEP_ZOOM (FN_FRAME + 8)
+
+#define FN_IID_COL1 (FN_FRAME + 13)
+#define FN_IID_COL2 (FN_FRAME + 14)
+#define FN_IID_COL3 (FN_FRAME + 15)
+#define FN_IID_COLLEFT (FN_FRAME + 16)
+#define FN_IID_COLRIGHT (FN_FRAME + 17)
+
+#define FN_SET_FRM_ALT_NAME (FN_FRAME + 18)
+
+
+//Member-Ids fuer Fill/SetVariable an Items
+#define MID_STYLE 0xe0
+#define MID_PWIDTH 0xe1
+#define MID_ADJUST 0xe2
+#define MID_TDIST 0xe3
+#define MID_BDIST 0xe4
+#define MID_LINES 0xe5
+#define MID_CHARS 0xe6
+#define MID_DIST 0xe7
+
+#define MID_1 0xe8
+#define MID_2 0xe9
+#define MID_3 0xea
+#define MID_4 0xeb
+#define MID_5 0xec
+#define MID_6 0xed
+#define MID_7 0xee
+#define MID_8 0xef
+#define MID_9 0xf0
+#define MID_A 0xf1
+#define MID_B 0xf2
+#define MID_C 0xf3
+#define MID_D 0xf4
+#define MID_E 0xf5
+#define MID_F 0xf6
+#define MID_10 0xf7
+#define MID_11 0xf8
+#define MID_12 0xf9
+#define MID_13 0xfa
+
+#ifndef SID_SW_DOCMAN_PATH
+#define SID_SW_DOCMAN_PATH (SID_OFASLOTS_START + 6)
+#endif
+
+// defines fuer Event-Zuweisung per Macro
+#define MAC_EVENT_MOUSEOVER 0x01 //
+#define MAC_EVENT_MOUSECLICK 0x02 // Hyperlink ausloesen
+#define MAC_EVENT_MOUSEOUT 0x03 //
+#define MAC_EVENT_OBJECT_SELECT 0x04 // Obj. selektieren
+#define MAC_EVENT_KEYINPUT_ALPHA 0x05 //
+#define MAC_EVENT_KEYINPUT_NOALPHA 0x06 //
+#define MAC_EVENT_FRM_RESIZE 0x07 //
+#define MAC_EVENT_FRM_MOVE 0x08 //
+#define MAC_EVENT_IMAGE_LOAD 0x09 //
+#define MAC_EVENT_IMAGE_ABORT 0x0a //
+#define MAC_EVENT_IMAGE_ERROR 0x0b //
+
diff --git a/sw/inc/comcore.hrc b/sw/inc/comcore.hrc
new file mode 100644
index 000000000000..56ee86d328fa
--- /dev/null
+++ b/sw/inc/comcore.hrc
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * $RCSfile: comcore.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _COMCORE_HRC
+#define _COMCORE_HRC
+
+#include "rcid.hrc"
+
+// ---------------
+// die Strings
+// ---------------
+
+#define STR_COMCORE_READERROR (RC_COMCORE_BEGIN + 0)
+#define MSG_COMCORE_ASKSEARCH (RC_COMCORE_BEGIN + 1)
+#define STR_TABLE_DEFNAME (RC_COMCORE_BEGIN + 2)
+#define STR_GRAPHIC_DEFNAME (RC_COMCORE_BEGIN + 3)
+#define STR_OBJECT_DEFNAME (RC_COMCORE_BEGIN + 4)
+#define STR_FRAME_DEFNAME (RC_COMCORE_BEGIN + 5)
+#define STR_REGION_DEFNAME (RC_COMCORE_BEGIN + 6)
+#define STR_COMCORE_CANT_SHOW (RC_COMCORE_BEGIN + 7)
+#define RID_GRAPHIC_REPLACEBMP (RC_COMCORE_BEGIN + 8)
+#define RID_GRAPHIC_ERRORBMP (RC_COMCORE_BEGIN + 9)
+#define STR_NUMRULE_DEFNAME (RC_COMCORE_BEGIN + 10)
+#define STR_EMPTYPAGE (RC_COMCORE_BEGIN + 11)
+#define RID_SHELLRES_AUTOFMTSTRS (RC_COMCORE_BEGIN + 12)
+#define STR_MULT_INTERACT_HYPH_WARN (RC_COMCORE_BEGIN + 13)
+#define STR_MULT_INTERACT_SPELL_WARN (RC_COMCORE_BEGIN + 14)
+#define STR_SPELL_TITLE (RC_COMCORE_BEGIN + 15)
+#define STR_HYPH_TITLE (RC_COMCORE_BEGIN + 16)
+
+
+// defines fuer die Autoformat Redline Kommentare
+#define STR_AUTOFMTREDL_DEL_EMPTY_PARA 0
+#define STR_AUTOFMTREDL_USE_REPLACE 1
+#define STR_AUTOFMTREDL_CPTL_STT_WORD 2
+#define STR_AUTOFMTREDL_CPTL_STT_SENT 3
+#define STR_AUTOFMTREDL_TYPO 4
+#define STR_AUTOFMTREDL_USER_STYLE 5
+#define STR_AUTOFMTREDL_BULLET 6
+#define STR_AUTOFMTREDL_UNDER 7
+#define STR_AUTOFMTREDL_BOLD 8
+#define STR_AUTOFMTREDL_FRACTION 9
+#define STR_AUTOFMTREDL_DETECT_URL 10
+#define STR_AUTOFMTREDL_DASH 11
+#define STR_AUTOFMTREDL_ORDINAL 12
+#define STR_AUTOFMTREDL_RIGHT_MARGIN 13
+#define STR_AUTOFMTREDL_SET_TMPL_TEXT 14
+#define STR_AUTOFMTREDL_SET_TMPL_INDENT 15
+#define STR_AUTOFMTREDL_SET_TMPL_NEG_INDENT 16
+#define STR_AUTOFMTREDL_SET_TMPL_TEXT_INDENT 17
+#define STR_AUTOFMTREDL_SET_TMPL_HEADLINE 18
+#define STR_AUTOFMTREDL_SET_NUMBULET 19
+#define STR_AUTOFMTREDL_DEL_MORELINES 20
+// !!!!!!!!!!!!!!!!!!!!!!!!!! das Ende immer richtig setzen !!!!!!!!!!!!
+#define STR_AUTOFMTREDL_END 21
+
+
+#endif
+
+
+
diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx
new file mode 100644
index 000000000000..523d8de73309
--- /dev/null
+++ b/sw/inc/crsrsh.hxx
@@ -0,0 +1,901 @@
+/*************************************************************************
+ *
+ * $RCSfile: crsrsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CRSRSH_HXX
+#define _CRSRSH_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _LINK_HXX //autogen
+#include <tools/link.hxx>
+#endif
+#ifndef _RTTI_HXX //autogen
+#include <tools/rtti.hxx>
+#endif
+#ifndef _WORDSEL_HXX //autogen
+#include <svtools/wordsel.hxx>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XSPELLCHECKER1_HPP_
+#include <com/sun/star/linguistic/XSpellChecker1.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XHYPHENATOR_HPP_
+#include <com/sun/star/linguistic/XHyphenator.hpp>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx> // fuer SWPOSDOC
+#endif
+#ifndef _VIEWSH_HXX
+#include <viewsh.hxx> // fuer ViewShell
+#endif
+#ifndef _CALBCK_HXX
+#include <calbck.hxx> // fuer SwClient
+#endif
+#ifndef _CSHTYP_HXX
+#include <cshtyp.hxx> // fuer die CursorShell Typen
+#endif
+#ifndef _CRSTATE_HXX
+#include <crstate.hxx> // fuer die CursorMove-Staties
+#endif
+#ifndef _BKMRKE_HXX //autogen
+#include <bkmrke.hxx>
+#endif
+#ifndef _TOXE_HXX
+#include <toxe.hxx> // SwTOXSearchDir
+#endif
+
+#if defined(PRODUCT) && !defined(WIN)
+// fuer die Inline-Methoden
+#ifndef _VISCRS_HXX
+#include <viscrs.hxx>
+#endif
+#ifndef _NODE_HXX
+#include <node.hxx>
+#endif
+#define CRSR_INLINE inline
+#else
+#define CRSR_INLINE
+#endif
+
+// einige Forward Deklarationen
+
+class KeyCode;
+class Region;
+class SfxItemSet;
+class SfxPoolItem;
+class SpellCheck;
+class SwBookmark;
+class SwCntntFrm;
+class SwCrsrShell;
+class SwCursor;
+class SwField;
+class SwFieldType;
+class SwFmt;
+class SwFmtFld;
+class SwIndex;
+class SwNodeIndex;
+class SwNode;
+class SwNodes;
+class SwPaM;
+class SwSelBoxes;
+class SwShellCrsr;
+class SwShellTableCrsr;
+class SwTableNode;
+class SwTxtFmtColl;
+class SwVisCrsr;
+class SwTxtINetFmt;
+class SwFmtINetFmt;
+class SwTxtAttr;
+class SwTableBox;
+class SwCellFrms;
+class SwTOXMark;
+struct SwPosition;
+
+class SearchParam;
+class SwRedline;
+
+// enum und struktur, um ueber die Doc-Position Informationen zu erfragen
+
+struct SwContentAtPos
+{
+ enum IsAttrAtPos
+ {
+ SW_NOTHING = 0x0000,
+ SW_FIELD = 0x0001,
+ SW_CLICKFIELD = 0x0002,
+ SW_FTN = 0x0004,
+ SW_INETATTR = 0x0008,
+ SW_TABLEBOXFML = 0x0010,
+ SW_REDLINE = 0x0020,
+ SW_OUTLINE = 0x0040,
+ SW_TOXMARK = 0x0080,
+ SW_REFMARK = 0x0100
+#ifndef PRODUCT
+ ,SW_CURR_ATTRS = 0x4000 // nur zum Debuggen
+ ,SW_TABLEBOXVALUE = 0x8000 // nur zum Debuggen
+#endif
+ } eCntntAtPos;
+
+ union {
+ const SwField* pFld;
+ const SfxPoolItem* pAttr;
+ const SwRedline* pRedl;
+ } aFnd;
+
+ String sStr;
+ const SwTxtAttr* pFndTxtAttr;
+
+ SwContentAtPos( int eGetAtPos = 0xffff )
+ : eCntntAtPos( (IsAttrAtPos)eGetAtPos )
+ {
+ aFnd.pFld = 0;
+ pFndTxtAttr = 0;
+ }
+
+ // befindet sich der Node in einem geschuetzten Bereich?
+ FASTBOOL IsInProtectSect() const;
+};
+
+
+// defines fuers GetCharCount
+#define GETCHARCOUNT_NONE 0
+#define GETCHARCOUNT_PARA 1
+#define GETCHARCOUNT_SECTION 2
+
+
+// ReturnWerte von SetCrsr (werden verodert)
+const int CRSR_NOERROR = 0x00,
+ CRSR_POSOLD = 0x01, // Cursor bleibt an alter Doc-Position
+ CRSR_POSCHG = 0x02; // Position vom Layout veraendert
+
+
+
+
+// die Cursor - Shell
+class SwCrsrShell : public ViewShell, public SwModify
+{
+ friend class SwCallLink;
+ friend class SwVisCrsr;
+ friend class SwSelPaintRects;
+ friend class SwChgLinkFlag;
+
+ //Braucht den Crsr als IntrnlCrsr.
+ friend void GetTblSel( const SwCrsrShell&, SwSelBoxes& rBoxes,
+ const SwTblSearchType );
+ friend BOOL GetAutoSumSel( const SwCrsrShell&, SwCellFrms& );
+
+public: // public, damit defaultet werden kann !!
+
+ /* ein enum fuer den Aufruf von UpdateCrsr */
+ enum CrsrFlag {
+ UPDOWN = (1 << 0), // Up/Down auf Spalte halten
+ SCROLLWIN = (1 << 1), // Window Scrollen
+ CHKRANGE = (1 << 2), // ueberpruefen von ueberlappenden PaM's
+ NOCALRECT = (1 << 3), // CharRect nicht neu berechnen
+ READONLY = (1 << 4) // Sichtbar machen trotz Readonly
+ };
+
+private:
+
+ SwRect aCharRect; // Char-SRectangle auf dem der Cursor steht
+ Point aCrsrHeight; // Hohe&Offset von sichtbaren Cursor
+ Point aOldRBPos; // Right/Bottom von letzter VisArea
+ // (wird im Invalidate vom Cursor benutzt)
+
+
+ // um event. Macro was anhaengt auszufuehren.
+ Link aFlyMacroLnk; // Link will be called, if the Crsr is set
+ // into a fly. A macro can be then becalled
+ Link aChgLnk; // link will be called by every attribut/
+ // format changes at cursor position.
+ Link aGrfArrivedLnk; // Link calls to UI if a grafik is arrived
+
+
+ SwShellCrsr* pCurCrsr; // der aktuelle Cursor
+ SwShellCrsr* pCrsrStk; // Stack fuer den Cursor
+ SwVisCrsr *pVisCrsr; // der Sichtbare-Cursor
+
+ SwShellTableCrsr* pTblCrsr; // Tabellen-Crsr; nur in Tabellen, wenn
+ // die Selection ueber 2 Spalten liegt
+
+ SwNodeIndex* pBoxIdx; // fuers erkennen der veraenderten
+ SwTableBox* pBoxPtr; // Tabellen-Zelle
+
+ long nUpDownX; // versuche den Cursor bei Up/Down immer in
+ // der gleichen Spalte zu bewegen
+ long nLeftFrmPos;
+ ULONG nAktNode; // save CursorPos at Start-Action
+ xub_StrLen nAktCntnt;
+ USHORT nAktNdTyp;
+
+ /*
+ * Mit den Methoden SttCrsrMove und EndCrsrMove wird dieser Zaehler
+ * Inc-/Decrementiert. Solange der Zaehler ungleich 0 ist, erfolgt
+ * auf den akt. Cursor kein Update. Dadurch koennen "komplizierte"
+ * Cursorbewegungen (ueber Find()) realisiert werden.
+ */
+ USHORT nCrsrMove;
+ USHORT nBasicActionCnt; // Actions, die vom Basic geklammert wurden
+ CrsrMoveState eMvState; // Status fuers Crsr-Travelling - GetCrsrOfst
+
+ BOOL bHasFocus : 1; // Shell ist in einem Window "aktiv"
+ BOOL bSVCrsrVis : 1; // SV-Cursor Un-/Sichtbar
+ BOOL bChgCallFlag : 1; // Attributaenderung innerhalb von
+ // Start- und EndAction
+ BOOL bVisPortChgd : 1; // befindet sich im VisPortChg-Aufruf
+ // (wird im Invalidate vom Cursor benutzt)
+
+ BOOL bCallChgLnk : 1; // Flag fuer abgeleitete Klassen:
+ // TRUE -> ChgLnk callen
+ // Zugriff nur ueber SwChgLinkFlag
+ BOOL bAllProtect : 1; // Flag fuer Bereiche
+ // TRUE -> alles geschuetzt / versteckt
+ BOOL bInCMvVisportChgd : 1; // Flag fuer CrsrMoves
+ // TRUE -> die Sicht wurde verschoben
+ BOOL bGCAttr : 1; // TRUE -> es existieren nichtaufgespannte Attr.
+ BOOL bIgnoreReadonly : 1; // TRUE -> Beim naechsten EndAction trotz
+ // Readonly den Crsr sichtbar machen.
+ BOOL bSelTblCells : 1; // TRUE -> Zellen uebers InputWin selektieren
+ BOOL bAutoUpdateCells : 1; // TRUE -> Zellen werden autoformatiert
+ BOOL bBasicHideCrsr : 1; // TRUE -> HideCrsr vom Basic
+ BOOL bSetCrsrInReadOnly : 1;// TRUE -> Cursor darf in ReadOnly-Bereiche
+
+
+ void UpdateCrsr( USHORT eFlags
+ =SwCrsrShell::SCROLLWIN|SwCrsrShell::CHKRANGE,
+ BOOL bIdleEnd = FALSE );
+
+ void _ParkPams( SwPaM* pDelRg, SwShellCrsr** ppDelRing );
+
+ FASTBOOL LeftRight( BOOL, USHORT );
+ FASTBOOL UpDown( BOOL, USHORT );
+ FASTBOOL LRMargin( BOOL, BOOL bAPI = FALSE );
+ FASTBOOL IsAtLRMargin( BOOL, BOOL bAPI = FALSE ) const;
+ FASTBOOL SttEndDoc( BOOL bStt );
+
+typedef FASTBOOL (SwCursor:: *FNCrsr)();
+ FASTBOOL CallCrsrFN( FNCrsr );
+
+ const SwRedline* _GotoRedline( USHORT nArrPos, BOOL bSelect );
+
+protected:
+
+ CRSR_INLINE SwMoveFnCollection* MakeFindRange( USHORT, USHORT, SwPaM* ) const;
+
+ /*
+ * Compare-Methode for the StackCursor and the current Cursor.
+ * The Methods return -1, 0, 1 for lower, equal, greater. The enum
+ * CrsrCompareType says which position is compared.
+ */
+ enum CrsrCompareType {
+ StackPtStackMk,
+ StackPtCurrPt,
+ StackPtCurrMk,
+ StackMkCurrPt,
+ StackMkCurrMk,
+ CurrPtCurrMk
+ };
+ int CompareCursor( CrsrCompareType eType ) const;
+
+ USHORT IncBasicAction() { return ++nBasicActionCnt; }
+ USHORT DecBasicAction() { return --nBasicActionCnt; }
+
+ // Setzt alle PaMs in OldNode auf NewPos + Offset
+ void PaMCorrAbs(const SwNodeIndex &rOldNode, const SwPosition &rNewPos,
+ const xub_StrLen nOffset = 0 );
+ // Setzt alle PaMs im Bereich von [StartNode, EndNode] nach NewPos
+ void PaMCorrAbs(const SwNodeIndex &rStartNode, const SwNodeIndex &rEndNode,
+ const SwPosition &rNewPos );
+
+public:
+ TYPEINFO();
+ SwCrsrShell( SwDoc *pDoc,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XSpellChecker1> xSpell,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XHyphenator> xHyph,
+ Window *pWin, SwRootFrm * = 0, const SwViewOption *pOpt = 0 );
+ // verkleideter Copy-Constructor
+ SwCrsrShell( SwCrsrShell* pShell, Window *pWin );
+ ~SwCrsrShell();
+
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ // neuen Cusror erzeugen und den alten anhaengen
+ SwPaM * CreateCrsr();
+ // loesche den aktuellen Cursor und der folgende wird zum Aktuellen
+ FASTBOOL DestroyCrsr();
+ // TableCursor in normale Cursor verwandeln, Tablemode aufheben
+ void TblCrsrToCursor();
+
+ SwPaM* GetCrsr( FASTBOOL bMakeTblCrsr = TRUE ) const;
+ CRSR_INLINE SwCursor* GetSwCrsr( FASTBOOL bMakeTblCrsr = TRUE ) const;
+ // nur den akt. Cursor returnen
+ SwShellCrsr* _GetCrsr() { return pCurCrsr; }
+ const SwShellCrsr* _GetCrsr() const { return pCurCrsr; }
+
+ // uebergebenen Cursor anzeigen - fuer UNO
+ void SetSelection(const SwPaM& rCrsr);
+
+ // alle Cursor aus den ContentNodes entfernen und auf 0 setzen.
+ // Wurde aus der FEShell hierher verschoben.
+ void ParkCrsr( const SwNodeIndex &rIdx );
+
+ // gebe den akt. Cursor-Stack zurueck.
+ // ( Wird in der EditShell beim Loeschen von Inhalten benoetigt! )
+ CRSR_INLINE SwPaM* GetStkCrsr() const;
+
+ // Start der Klammerung, SV-Cursor und selektierte Bereiche hiden
+ void StartAction();
+ // Ende der Klammerung, SV-Cursor und selektierte Bereiche anzeigen
+ void EndAction( const BOOL bIdleEnd = FALSE );
+
+ USHORT GetBasicActionCnt() const { return nBasicActionCnt; }
+
+ // Basiscursortravelling
+ long GetUpDownX() const { return nUpDownX; }
+
+ FASTBOOL Left( USHORT nCnt = 1 ) { return LeftRight( TRUE, nCnt ); }
+ FASTBOOL Right( USHORT nCnt = 1 ) { return LeftRight( FALSE, nCnt ); }
+ FASTBOOL Up( USHORT nCnt = 1 ) { return UpDown( TRUE, nCnt ); }
+ FASTBOOL Down( USHORT nCnt = 1 ) { return UpDown( FALSE, nCnt ); }
+ FASTBOOL LeftMargin() { return LRMargin( TRUE ); }
+ FASTBOOL RightMargin(BOOL bAPI = FALSE) { return LRMargin( FALSE, bAPI ); }
+ FASTBOOL SttDoc() { return SttEndDoc( TRUE ); }
+ FASTBOOL EndDoc() { return SttEndDoc( FALSE ); }
+
+ FASTBOOL MovePage( SwWhichPage, SwPosPage );
+ FASTBOOL MovePara( SwWhichPara, SwPosPara );
+ FASTBOOL MoveSection( SwWhichSection, SwPosSection );
+ FASTBOOL MoveTable( SwWhichTable, SwPosTable );
+ FASTBOOL MoveColumn( SwWhichColumn, SwPosColumn );
+ FASTBOOL MoveRegion( SwWhichRegion, SwPosRegion );
+
+ // die Suchfunktionen
+ ULONG Find( const SearchParam& rParam,
+ SwDocPositions eStart, SwDocPositions eEnde,
+ FindRanges eRng, int bReplace = FALSE );
+
+ ULONG Find( const SwTxtFmtColl& rFmtColl,
+ SwDocPositions eStart, SwDocPositions eEnde,
+ FindRanges eRng, const SwTxtFmtColl* pReplFmt = 0 );
+
+ ULONG Find( const SfxItemSet& rSet, FASTBOOL bNoCollections,
+ SwDocPositions eStart, SwDocPositions eEnde,
+ FindRanges eRng, const SearchParam* pTextPara = 0,
+ const SfxItemSet* rReplSet = 0 );
+
+ // Positionieren des Cursors
+ // returnt
+ // CRSR_POSCHG: wenn der ob der SPoint vom Layout korrigiert wurde.
+ // CRSR_POSOLD: wenn der Crsr nicht veraendert wurde
+ int SetCrsr( const Point &rPt, BOOL bOnlyText = FALSE );
+
+ /*
+ * Benachrichtung, dass der sichtbare Bereich sich geaendert
+ * hat. aVisArea wird neu gesetzt, anschliessend wird
+ * gescrollt. Das uebergebene Rectangle liegt auf
+ * Pixelgrenzen, um Pixelfehler beim Scrollen zu vermeiden.
+ */
+ virtual void VisPortChgd( const SwRect & );
+
+ /*
+ * Virtuelle PaintMethode, damit die Selection nach dem Paint wieder
+ * sichtbar wird.
+ */
+ void Paint( const Rectangle & rRect );
+
+ // Bereiche
+ CRSR_INLINE void SetMark();
+ CRSR_INLINE FASTBOOL HasMark();
+
+ void ClearMark();
+ void SwapPam();
+ FASTBOOL ChgCurrPam( const Point & rPt,
+ BOOL bTstOnly = TRUE, //Nur testen, nicht setzen
+ BOOL bTstHit = FALSE ); //Nur genaue Treffer
+ void KillPams();
+
+ // erzeuge eine Kopie vom Cursor und speicher diese im Stack
+ void Push();
+ /*
+ * Loescht einen Cursor (gesteuert durch bOldCrsr)
+ * - vom Stack oder ( bOldCrsr = TRUE )
+ * - den aktuellen und der auf dem Stack stehende wird zum aktuellen
+ *
+ * Return: es war auf dem Stack noch einer vorhanden
+ */
+ FASTBOOL Pop( BOOL bOldCrsr = TRUE );
+ /*
+ * Verbinde zwei Cursor miteinander.
+ * Loesche vom Stack den obersten und setzen dessen Mark im Aktuellen.
+ */
+ void Combine();
+
+#if defined( PRODUCT )
+ void SttCrsrMove() { ++nCrsrMove; StartAction(); }
+ void EndCrsrMove( const BOOL bIdleEnd = FALSE )
+ { EndAction( bIdleEnd ); --nCrsrMove; }
+#else
+ void SttCrsrMove();
+ void EndCrsrMove( const BOOL bIdleEnd = FALSE );
+#endif
+
+ /*
+ * Beim Abgeben des Focuses werden die selektierten Bereiche nicht mehr
+ * angezeigt; andererseits beim Erhalten des Focuses, werden alle selek-
+ * tierten Bereiche wieder angezeigt. (Bereiche muessen neu berechnet
+ * werden!)
+ */
+ BOOL HasShFcs() const { return bHasFocus; }
+ void ShLooseFcs();
+ void ShGetFcs( BOOL bUpdate = TRUE );
+
+ // Methoden zum Anzeigen bzw. Verstecken des sichtbaren Text-Cursors
+ void ShowCrsr();
+ void HideCrsr();
+ // Methoden zum Anzeigen bzw. Verstecken der selektierten Bereiche mit
+ // dem sichtbaren Cursor
+ void ShowCrsrs( BOOL bCrsrVis );
+ void HideCrsrs();
+ // Methoden zum Anzeigen bzw. Verstecken der selektierten Bereiche mit
+ // dem sichtbaren Cursor
+ void BasicShowCrsrs()
+ { bBasicHideCrsr = FALSE; bSVCrsrVis = TRUE; ShowCrsrs(TRUE); }
+ void BasicHideCrsrs()
+ { HideCrsrs(); bBasicHideCrsr = TRUE; bSVCrsrVis = FALSE; }
+ FASTBOOL IsBasicHideCrsr() const { return bBasicHideCrsr; }
+
+ // gebe den aktuellen Frame, in dem der Cursor steht, zurueck
+ SwCntntFrm *GetCurrFrm( const BOOL bCalcFrm = TRUE ) const;
+
+ //TRUE wenn der Crsr wenn der Crsr wegen Readonly gehidet ist,
+ //FALSE wenn der arbeitet (trotz Readonly).
+ FASTBOOL IsCrsrReadonly() const;
+ // Cursor steht in etwas geschuetztem oder in die Selektion umspannt
+ // etwas geschuetztes.
+ FASTBOOL HasReadonlySel() const;
+ // darf der Cursor in ReadOnlyBereiche?
+ FASTBOOL IsReadOnlyAvailable() const { return bSetCrsrInReadOnly; }
+ void SetReadOnlyAvailable( BOOL bFlag );
+ FASTBOOL IsOverReadOnlyPos( const Point& rPt ) const;
+
+ // Methoden fuer aFlyMacroLnk
+ void SetFlyMacroLnk( const Link& rLnk ) { aFlyMacroLnk = rLnk; }
+ const Link& GetFlyMacroLnk() const { return aFlyMacroLnk; }
+
+ // Methoden geben/aendern den Link fuer die Attribut/Format-Aenderungen
+ void SetChgLnk( const Link &rLnk ) { aChgLnk = rLnk; }
+ const Link& GetChgLnk() const { return aChgLnk; }
+
+ // Methoden geben/aendern den Link fuers "Grafik vollstaendig geladen"
+ void SetGrfArrivedLnk( const Link &rLnk ) { aGrfArrivedLnk = rLnk; }
+ const Link& GetGrfArrivedLnk() const { return aGrfArrivedLnk; }
+
+ //ChgLink callen, innerhalb einer Action wird der Ruf verzoegert.
+ void CallChgLnk();
+
+ // Abfrage, ob der aktuelle Cursor eine Selektion aufspannt,
+ // also, ob Mark gesetzt und SPoint und Mark unterschiedlich sind.
+ FASTBOOL HasSelection();
+
+ // Abfrage, ob ueberhaupt eine Selektion existiert, sprich der akt. Cursor
+ // aufgespannt oder nicht der einzigste ist.
+ CRSR_INLINE FASTBOOL IsSelection() const;
+
+ // Abfrage, ob ein kompletter Absatz selektiert wurde
+ FASTBOOL IsSelFullPara() const;
+ // Abfrage, ob die Selektion in einem Absatz ist
+ CRSR_INLINE FASTBOOL IsSelOnePara() const;
+
+ //Sollte fuer das Clipboard der WaitPtr geschaltet werden.
+ FASTBOOL ShouldWait() const;
+
+ /*
+ * liefert das SRectangle, auf dem der Cursor steht.
+ */
+ const SwRect &GetCharRect() const { return aCharRect; }
+ /*
+ * liefert zurueck, ob der Cursor sich ganz oder teilweise im
+ * sichtbaren Bereich befindet.
+ */
+ FASTBOOL IsCrsrVisible() const { return VisArea().IsOver( GetCharRect() ); }
+
+ // gebe die aktuelle Seitennummer zurueck:
+ // TRUE: in der der Cursor steht
+ // FALSE: die am oberen Rand sichtbar ist
+ void GetPageNum( USHORT &rnPhyNum, USHORT &rnVirtNum,
+ BOOL bAtCrsrPos = TRUE, const BOOL bCalcFrm = TRUE );
+ // bestimme in welche Richtung "leere Seiten" behandelt werden!
+ // (wird benutzt im PhyPage.. )
+ USHORT GetNextPrevPageNum( BOOL bNext = TRUE );
+
+ // setze den Cursor auf die Seite "nPage" an den Anfang
+ FASTBOOL GotoPage( USHORT nPage );
+
+ // gebe alle Dokumentseiten zurueck
+ USHORT GetPageCnt();
+
+ // Gehe zur naechsten Selection
+ FASTBOOL GoNextCrsr();
+ // gehe zur vorherigen Selection
+ FASTBOOL GoPrevCrsr();
+
+ // am CurCrsr.SPoint
+ FASTBOOL SetBookmark( const KeyCode&, const String& rName,
+ const String& rShortName, BOOKMARK_TYPE eMark = BOOKMARK );
+ FASTBOOL GotoBookmark( USHORT ); // setzt CurCrsr.SPoint
+ FASTBOOL GotoBookmark( USHORT nPos, BOOL bAtStart ); //
+ FASTBOOL GoNextBookmark(); // TRUE, wenn's noch eine gab
+ FASTBOOL GoPrevBookmark();
+ USHORT GetBookmarkCnt(BOOL bBkmrk = FALSE) const;
+ SwBookmark& GetBookmark( USHORT, BOOL bBkmrk = FALSE );
+ void DelBookmark( USHORT );
+ void DelBookmark( const String& rName );
+ USHORT FindBookmark( const String& rName );
+ // erzeugt einen eindeutigen Namen. Der Name selbst muss vorgegeben
+ // werden, es wird dann bei gleichen Namen nur durchnumeriert.
+ void MakeUniqueBookmarkName( String& rNm );
+
+ // aktualisiere den Crsrs, d.H. setze ihn wieder in den Content.
+ // Das sollte nur aufgerufen werden, wenn der Cursor z.B. beim
+ // Loeschen von Rahmen irgendwohin gesetzt wurde. Die Position
+ // ergibt sich aus seiner aktuellen Position im Layout !!
+ void UpdateCrsrPos();
+
+ // returne den am akt. Cursor selektierten Text. Dieser wird mit
+ // Felder etc. aufgefuellt!!
+ String GetSelTxt() const;
+ // gebe nur den Text ab der akt. Cursor Position zurueck (bis zum NodeEnde)
+ String GetText() const;
+ // retrurne die Anzahl der selektierten Zeichen.
+ // Falls keine Selektion vorliegt entscheided nType was selektiert wird
+ // bIntrnlChar besagt ob interne Zeichen erhalten bleiben (TRUE) oder
+ // ob sie expandiert werden (z.B Felder/...)
+ ULONG GetCharCount( USHORT nType, BOOL bIntrnlChrs = TRUE ) const;
+
+ // pruefe ob vom aktuellen Crsr der SPoint/Mark in einer Tabelle stehen
+ CRSR_INLINE const SwTableNode* IsCrsrInTbl( BOOL bIsPtInTbl = TRUE ) const;
+ // erfrage die Document - Layout - Position vom akt. Crsr
+ CRSR_INLINE Point& GetCrsrDocPos( BOOL bPoint = TRUE ) const;
+ CRSR_INLINE FASTBOOL IsCrsrPtAtEnd() const;
+
+ CRSR_INLINE const SwPaM* GetTblCrs() const;
+ CRSR_INLINE SwPaM* GetTblCrs();
+
+ FASTBOOL IsTblComplex() const;
+ FASTBOOL IsTblComplexForChart() const;
+ // erfrage die akt. TabellenSelektion als Text
+ String GetBoxNms() const;
+
+ // setze Crsr in die naechsten/vorherigen Celle
+ FASTBOOL GoNextCell( BOOL bAppendLine = TRUE );
+ FASTBOOL GoPrevCell();
+ // gehe zu dieser Box (wenn vorhanden und in Tabelle!)
+ FASTBOOL GotoTblBox( const String& rName );
+ FASTBOOL GotoTable( const String& rName );
+
+ // selectiere diese Zeile/Spalte
+ FASTBOOL SelTblRow();
+ FASTBOOL SelTblCol();
+
+ // zum naechsten/vorhergehenden Punkt auf gleicher Ebene
+ FASTBOOL GotoNextNum();
+ FASTBOOL GotoPrevNum();
+
+ // zu diesem Gliederungspunkt
+ FASTBOOL GotoOutline( const String& rName );
+ // zum naechsten/vorhergehenden oder angegebenen OultineNode
+ void GotoOutline( USHORT nIdx );
+ // suche die "Outline-Position" im Nodes-Array vom akt. Kaiptel
+ USHORT GetOutlinePos( BYTE nLevel = UCHAR_MAX );
+ // selektiere den angeben Bereich von OutlineNodes. Optional
+ // inclusive der Childs. Die USHORT sind die Positionen im
+ // OutlineNds-Array!! (EditShell)
+ FASTBOOL MakeOutlineSel( USHORT nSttPos, USHORT nEndPos,
+ BOOL bWithChilds = FALSE );
+
+ FASTBOOL GotoNextOutline(); // naechster Node mit Outline-Num.
+ FASTBOOL GotoPrevOutline(); // vorheriger Node mit Outline-Num.
+
+ // ist der Crsr in einer Tabelle und ist die Selection ueber
+ // zwei Spalten
+ FASTBOOL IsTableMode() const { return 0 != pTblCrsr; }
+
+ // erfrage den Tabellen Crsr; ausserhalb von Tabellen immer 0
+ const SwShellTableCrsr* GetTableCrsr() const { return pTblCrsr; }
+ SwShellTableCrsr* GetTableCrsr() { return pTblCrsr; }
+ USHORT UpdateTblSelBoxes();
+
+ FASTBOOL GotoFtnTxt(); // springe aus dem Content zur Fussnote
+ FASTBOOL GotoFtnAnchor(); // springe aus der Fussnote zum Anker
+ FASTBOOL GotoNextFtnAnchor();
+ FASTBOOL GotoPrevFtnAnchor();
+ FASTBOOL GotoNextFtnCntnt();
+ FASTBOOL GotoPrevFtnCntnt();
+
+ FASTBOOL GotoFlyTxt(); // springe aus dem Content zum "naechsten" Rahmen
+ FASTBOOL GotoFlyAnchor(); // springe aus dem Rahmen zum Anker
+ FASTBOOL GotoHeaderTxt(); // springe aus dem Content zum Header
+ FASTBOOL GotoFooterTxt(); // springe aus dem Content zum Footer
+ // springe in den Header/Footer des angegebenen oder akt. PageDesc
+ FASTBOOL SetCrsrInHdFt( USHORT nDescNo = USHRT_MAX,
+ FASTBOOL bInHeader = TRUE );
+ // is point of cursor in header/footer. pbInHeader return TRUE if it is
+ // in a headerframe otherwise in a footerframe
+ FASTBOOL IsInHeaderFooter( FASTBOOL* pbInHeader = 0 ) const;
+
+ // springe zum naechsten Verzeichnis [mit dem Namen]
+ FASTBOOL GotoNextTOXBase( const String* = 0 );
+ // springe zum vorherigen Verzeichnis [mit dem Namen]
+ FASTBOOL GotoPrevTOXBase( const String* = 0 );
+ FASTBOOL GotoTOXMarkBase(); // springe zum Verzeichnis vom TOXMark
+ // springe zum naechsten (vorherigen) Verzeichniseintrag
+ FASTBOOL GotoNxtPrvTOXMark( BOOL bNext = TRUE );
+ // Zur naechsten/ vorherigen Verzeichnismarke dieses Typs traveln
+ const SwTOXMark& GotoTOXMark( const SwTOXMark& rStart, SwTOXSearch eDir );
+
+ // springe zum naechsten (vorherigen) Tabellenformel
+ // optional auch nur zu kaputten Formeln springen
+ FASTBOOL GotoNxtPrvTblFormula( BOOL bNext = TRUE,
+ BOOL bOnlyErrors = FALSE );
+
+ // springe zu dieser Refmark
+ FASTBOOL GotoRefMark( const String& rRefMark, USHORT nSubType = 0,
+ USHORT nSeqNo = 0 );
+
+ // hole vom Start/Ende der akt. Selection das nte Zeichen
+ sal_Unicode GetChar( BOOL bEnd = TRUE, long nOffset = 0 );
+ // erweiter die akt. Selection am Anfang/Ende um n Zeichen
+ FASTBOOL ExtendSelection( BOOL bEnd = TRUE, xub_StrLen nCount = 1 );
+ // setze nur den sichtbaren Cursor an die angegebene Dokument-Pos.
+ // returnt FALSE: wenn der ob der SPoint vom Layout korrigiert wurde.
+ // (wird zum Anzeigen von Drag&Drop/Copy-Cursor benoetigt)
+ FASTBOOL SetVisCrsr( const Point &rPt );
+ CRSR_INLINE void UnSetVisCrsr();
+
+ // springe zum nachsten/vorherigen Feld des entsprechenden Types
+ FASTBOOL MoveFldType( const SwFieldType* pFldType, BOOL bNext,
+ USHORT nSubType = USHRT_MAX,
+ USHORT nResType = USHRT_MAX );
+ // springe genau zu diesem Feld
+ FASTBOOL GotoFld( const SwFmtFld& rFld );
+
+ // returne die Anzahl der Cursor im Ring (Flag besagt ob man nur
+ // aufgepspannte haben will - sprich etwas selektiert ist (Basic))
+ USHORT GetCrsrCnt( BOOL bAll = TRUE ) const;
+
+ // Char Travelling - Methoden (in crstrvl1.cxx)
+ FASTBOOL IsStartWord()const;
+ FASTBOOL IsEndWord() const;
+ FASTBOOL IsInWord() const;
+ FASTBOOL GoStartWord();
+ FASTBOOL GoEndWord();
+ FASTBOOL GoNextWord();
+ FASTBOOL GoPrevWord();
+ FASTBOOL GoNextSentence();
+ FASTBOOL GoPrevSentence();
+ FASTBOOL SelectWord( const Point* pPt = 0 );
+
+ // Abfrage vom CrsrTravelling Status
+ CrsrMoveState GetMoveState() const { return eMvState; }
+
+ // Position vom akt. Cursor erfragen
+ FASTBOOL IsStartOfDoc() const;
+ FASTBOOL IsEndOfDoc() const;
+ FASTBOOL IsSttPara() const;
+ FASTBOOL IsEndPara() const;
+ FASTBOOL IsAtLeftMargin() const { return IsAtLRMargin( TRUE ); }
+ FASTBOOL IsAtRightMargin(BOOL bAPI = FALSE) const { return IsAtLRMargin( FALSE, bAPI ); }
+
+ // loesche alle erzeugten Crsr, setze den Tabellen-Crsr und den letzten
+ // Cursor auf seinen TextNode (oder StartNode?).
+ // Beim naechsten ::GetCrsr werden sie wieder alle erzeugt.
+ // Wird fuers Drag&Drop/ClipBorad-Paste in Tabellen benoetigt.
+ FASTBOOL ParkTblCrsr();
+
+ // erfrage die selektierte "Region" aller Cursor (fuer D&D auf Mac)
+ Region GetCrsrRegion() const;
+
+ // gibt es nicht aufgespannte Attribute?
+ FASTBOOL IsGCAttr() const { return bGCAttr; }
+ void ClearGCAttr() { bGCAttr = FALSE; }
+ void UpdateAttr() { bGCAttr = TRUE; }
+
+ // ist das gesamte Dokument geschuetzt/versteckt?? (fuer UI,..)
+ FASTBOOL IsAllProtect() const { return bAllProtect; }
+
+#ifdef SW_CRSR_TIMER
+ // setze das Flag am VisCrsr, ob dieser ueber Timer getriggert (TRUE)
+ // oder direkt (FALSE) angezeigt wird. (default ist Timer getriggert)
+ FASTBOOL ChgCrsrTimerFlag( BOOL bTimerOn = TRUE );
+#endif
+
+ // steht der Curor auf einem "Symbol"-Zeichen
+ FASTBOOL IsInSymbolFont() const;
+
+ BOOL BasicActionPend() const { return nBasicActionCnt != nStartAction; }
+
+ // springe zum benannten Bereich
+ FASTBOOL GotoRegion( const String& rName );
+
+ // zeige die aktuelle Selektion an
+ virtual void MakeSelVisible();
+
+ // setzte den Cursor auf einen NICHT geschuetzten/versteckten Node
+ FASTBOOL FindValidCntntNode( BOOL bOnlyText = FALSE );
+
+ FASTBOOL GetContentAtPos( const Point& rPt,
+ SwContentAtPos& rCntntAtPos,
+ FASTBOOL bSetCrsr = FALSE,
+ SwRect* pFldRect = 0 );
+
+ // Attribut selelktieren
+ FASTBOOL SelectTxtAttr( USHORT nWhich, BOOL bExpand = FALSE,
+ const SwTxtAttr* pAttr = 0 );
+ FASTBOOL GotoINetAttr( const SwTxtINetFmt& rAttr );
+ const SwFmtINetFmt* FindINetAttr( const String& rName ) const;
+
+ FASTBOOL CheckTblBoxCntnt( const SwPosition* pPos = 0 );
+ void SaveTblBoxCntnt( const SwPosition* pPos = 0 );
+ void ClearTblBoxCntnt();
+ FASTBOOL EndAllTblBoxEdit();
+
+ // wird gerufen, wenn eine Tabellenselektion im UpdateCrsr erzeugt wird,
+ // ohne das die UI davon etaws weiss
+ virtual void NewCoreSelection();
+
+ void SetSelTblCells( BOOL bFlag ) { bSelTblCells = bFlag; }
+ BOOL IsSelTblCells() const { return bSelTblCells; }
+
+ BOOL IsAutoUpdateCells() const { return bAutoUpdateCells; }
+ void SetAutoUpdateCells( BOOL bFlag ) { bAutoUpdateCells = bFlag; }
+
+ FASTBOOL GetShadowCrsrPos( const Point& rPt, SwFillMode eFillMode,
+ SwRect& rRect, SwHoriOrient& rOrient );
+ FASTBOOL SetShadowCrsrPos( const Point& rPt, SwFillMode eFillMode );
+
+ const SwRedline* SelNextRedline();
+ const SwRedline* SelPrevRedline();
+ const SwRedline* GotoRedline( USHORT nArrPos, BOOL bSelect = FALSE );
+};
+
+
+class SwChgLinkFlag
+{
+ BOOL bOldFlag;
+ SwCrsrShell& rCrsrShell;
+ long nLeftFrmPos;
+public:
+ SwChgLinkFlag( SwCrsrShell& rShell );
+ ~SwChgLinkFlag();
+};
+
+
+
+// Cursor Inlines:
+
+#if defined(PRODUCT) && !defined(WIN)
+
+inline SwMoveFnCollection* SwCrsrShell::MakeFindRange(
+ USHORT nStt, USHORT nEnd, SwPaM* pPam ) const
+{
+ return pCurCrsr->MakeFindRange( (SwDocPositions)nStt, (SwDocPositions)nEnd, pPam );
+}
+
+inline SwCursor* SwCrsrShell::GetSwCrsr( FASTBOOL bMakeTblCrsr ) const
+{
+ return (SwCursor*)GetCrsr( bMakeTblCrsr );
+}
+
+inline SwPaM* SwCrsrShell::GetStkCrsr() const { return pCrsrStk; }
+
+inline void SwCrsrShell::SetMark() { pCurCrsr->SetMark(); }
+
+inline FASTBOOL SwCrsrShell::HasMark() { return( pCurCrsr->HasMark() ); }
+
+inline FASTBOOL SwCrsrShell::IsSelection() const
+{
+ return IsTableMode() || pCurCrsr->HasMark() ||
+ pCurCrsr->GetNext() != pCurCrsr;
+}
+
+inline FASTBOOL SwCrsrShell::IsSelOnePara() const
+{
+ return pCurCrsr == pCurCrsr->GetNext() &&
+ pCurCrsr->GetPoint()->nNode == pCurCrsr->GetMark()->nNode;
+}
+
+inline const SwTableNode* SwCrsrShell::IsCrsrInTbl( BOOL bIsPtInTbl ) const
+{
+ return pCurCrsr->GetNode( bIsPtInTbl )->FindTableNode();
+}
+
+inline FASTBOOL SwCrsrShell::IsCrsrPtAtEnd() const
+{
+ return pCurCrsr->End() == pCurCrsr->GetPoint();
+}
+
+inline Point& SwCrsrShell::GetCrsrDocPos( BOOL bPoint ) const
+{
+ return bPoint ? pCurCrsr->GetPtPos() : pCurCrsr->GetMkPos();
+}
+
+inline const SwPaM* SwCrsrShell::GetTblCrs() const
+{
+ return pTblCrsr;
+}
+
+inline SwPaM* SwCrsrShell::GetTblCrs()
+{
+ return pTblCrsr;
+}
+
+inline void SwCrsrShell::UnSetVisCrsr()
+{
+ pVisCrsr->Hide();
+ pVisCrsr->SetDragCrsr( FALSE );
+}
+
+#endif
+
+
+#endif // _CRSRSH_HXX
diff --git a/sw/inc/crstate.hxx b/sw/inc/crstate.hxx
new file mode 100644
index 000000000000..e712b0c12278
--- /dev/null
+++ b/sw/inc/crstate.hxx
@@ -0,0 +1,156 @@
+/*************************************************************************
+ *
+ * $RCSfile: crstate.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CRSTATE_HXX
+#define _CRSTATE_HXX
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _SWRECT_HXX
+#include <swrect.hxx>
+#endif
+
+enum SwFillMode
+{
+ FILL_TAB, // default, Auffuellen mit Tabulatoren
+ FILL_SPACE, // ... mit Tabulatoren und Spaces
+ FILL_MARGIN, // nur links, zentriert, rechts Ausrichten
+ FILL_INDENT // durch linken Absatzeinzug
+};
+
+struct SwFillCrsrPos
+{
+ SwRect aCrsr; // Position und Groesse des Shadowcursors
+ USHORT nParaCnt; // Anzahl der einzufuegenden Absaetze
+ USHORT nTabCnt; // Anzahl der Tabs bzw. Groesse des Einzugs
+ USHORT nSpaceCnt; // Anzahl der einzufuegenden Leerzeichen
+ USHORT nColumnCnt; // Anzahl der notwendigen Spaltenumbrueche
+ SwHoriOrient eOrient; // Absatzausrichtung
+ SwFillMode eMode; // Gewuenschte Auffuellregel
+ SwFillCrsrPos( SwFillMode eMd = FILL_TAB ) :
+ nParaCnt( 0 ), nTabCnt( 0 ), nSpaceCnt( 0 ), nColumnCnt( 0 ),
+ eOrient( HORI_NONE ), eMode( eMd )
+ {}
+};
+
+// CrsrTravelling-Staties (fuer GetCrsrOfst)
+enum CrsrMoveState
+{
+ MV_NONE, // default
+ MV_UPDOWN, // Crsr Up/Down
+ MV_RIGHTMARGIN, // an rechten Rand
+ MV_LEFTMARGIN, // an linken Rand
+ MV_SETONLYTEXT, // mit dem Cursr nur im Text bleiben
+ MV_TBLSEL // nicht in wiederholte Headlines
+};
+
+// struct fuer spaetere Erweiterungen
+struct SwCrsrMoveState
+{
+ SwFillCrsrPos *pFill; // fuer das automatische Auffuellen mit Tabs etc.
+ Point aRealHeight; // enthaelt dann die Position/Hoehe des Cursors
+ CrsrMoveState eState;
+ BOOL bStop :1;
+ BOOL bRealHeight :1; // Soll die reale Hoehe berechnet werden?
+ BOOL bFieldInfo :1; // Sollen Felder erkannt werden?
+ BOOL bPosCorr :1; // Point musste korrigiert werden
+ BOOL bFtnNoInfo :1; // Fussnotennumerierung erkannt
+ BOOL bExactOnly :1; // GetCrsrOfst nur nach Exakten Treffern
+ // suchen lassen, sprich niemals in das
+ // GetCntntPos laufen.
+ BOOL bFillRet :1; // wird nur im FillModus temp. genutzt
+ BOOL bSetInReadOnly :1; // ReadOnlyBereiche duerfen betreten werden
+ BOOL bDropIt :1; // dropportions allowed
+
+ SwCrsrMoveState( CrsrMoveState eSt = MV_NONE ) :
+ pFill( NULL ),
+ eState( eSt ),
+ bStop( FALSE ),
+ bRealHeight( FALSE ),
+ bFieldInfo( FALSE ),
+ bPosCorr( FALSE ),
+ bFtnNoInfo( FALSE ),
+ bExactOnly( FALSE ),
+ bSetInReadOnly( FALSE ),
+ bDropIt( FALSE )
+ {}
+ SwCrsrMoveState( SwFillCrsrPos *pInitFill ) :
+ pFill( pInitFill ),
+ eState( MV_SETONLYTEXT ),
+ bStop( FALSE ),
+ bRealHeight( FALSE ),
+ bFieldInfo( FALSE ),
+ bPosCorr( FALSE ),
+ bFtnNoInfo( FALSE ),
+ bExactOnly( FALSE ),
+ bSetInReadOnly( FALSE ),
+ bDropIt( FALSE )
+ {}
+};
+
+
+#endif
+
+
diff --git a/sw/inc/cshtyp.hxx b/sw/inc/cshtyp.hxx
new file mode 100644
index 000000000000..269673eaa656
--- /dev/null
+++ b/sw/inc/cshtyp.hxx
@@ -0,0 +1,147 @@
+/*************************************************************************
+ *
+ * $RCSfile: cshtyp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CSHTYP_HXX
+#define _CSHTYP_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class UniString;
+class SwPaM;
+class SwCntntFrm;
+class SwLayoutFrm;
+
+// eine Struktur fuer den SwPaM. In dieser stehen die Methoden-Pointer
+// fuer das richtungsabhaengige Bewegen des Cursors.
+struct SwMoveFnCollection;
+typedef SwMoveFnCollection* SwMoveFn;
+
+
+// Type-Definition fuer die CrsrShell
+// Richtungsparameter fuer MovePage ( wird in SwCntntFrm initialisiert )
+typedef SwLayoutFrm * (*SwWhichPage)( const SwLayoutFrm * );
+typedef SwCntntFrm * (*SwPosPage)( const SwLayoutFrm * );
+extern SwWhichPage fnPagePrev, fnPageCurr, fnPageNext;
+extern SwPosPage fnPageStart, fnPageEnd;
+
+// Richtungsparameter fuer MovePara ( wird in SwPaM initialisiert )
+typedef SwMoveFnCollection* SwPosPara;
+typedef FASTBOOL (*SwWhichPara)( SwPaM&, SwPosPara );
+extern SwWhichPara fnParaPrev, fnParaCurr, fnParaNext;
+extern SwPosPara fnParaStart, fnParaEnd;
+
+// Richtungsparameter fuer MoveSection
+typedef SwMoveFnCollection* SwPosSection;
+typedef FASTBOOL (*SwWhichSection)( SwPaM&, SwPosSection );
+extern SwWhichSection fnSectionPrev, fnSectionCurr, fnSectionNext;
+extern SwPosSection fnSectionStart, fnSectionEnd;
+
+// Richtungsparameter fuer MoveTable
+typedef SwMoveFnCollection* SwPosTable;
+typedef FASTBOOL (*SwWhichTable)( SwPaM&, SwPosTable, FASTBOOL bInReadOnly );
+extern SwWhichTable fnTablePrev, fnTableCurr, fnTableNext;
+extern SwPosTable fnTableStart, fnTableEnd;
+
+// Richtungsparameter fuer MoveColumn
+typedef SwLayoutFrm * (*SwWhichColumn)( const SwLayoutFrm * );
+typedef SwCntntFrm * (*SwPosColumn)( const SwLayoutFrm * );
+extern SwWhichColumn fnColumnPrev, fnColumnCurr, fnColumnNext;
+extern SwPosColumn fnColumnStart, fnColumnEnd;
+
+// Richtungsparameter fuer MoveRegion (Bereiche!)
+typedef SwMoveFnCollection* SwPosRegion;
+typedef FASTBOOL (*SwWhichRegion)( SwPaM&, SwPosRegion, FASTBOOL bInReadOnly );
+extern SwWhichRegion fnRegionPrev, fnRegionCurr, fnRegionNext, fnRegionCurrAndSkip;
+extern SwPosRegion fnRegionStart, fnRegionEnd;
+
+
+
+/*
+ * folgende Kombinationen sind erlaubt:
+ * - suche einen im Body: -> FND_IN_BODY
+ * - suche alle im Body: -> FND_IN_BODYONLY | FND_IN_SELALL
+ * - suche in Selectionen: einen / alle -> FND_IN_SEL [ | FND_IN_SELALL ]
+ * - suche im nicht Body: einen / alle -> FND_IN_OTHER [ | FND_IN_SELALL ]
+ * - suche ueberall alle: -> FND_IN_SELALL
+ */
+enum FindRanges
+{
+ FND_IN_BODY = 0x00, // suche "eins" mur im Body-Text
+ FND_IN_OTHER = 0x02, // suche "alles" in Footer/Header/Fly...
+ FND_IN_SEL = 0x04, // suche in Selectionen
+ FND_IN_BODYONLY = 0x08, // suche nur im Body - nur in Verbindung mit
+ // FND_IN_SELALL !!!
+ FND_IN_SELALL = 0x01 // - alle ( nur im nicht Body und Selectionen)
+};
+
+
+enum SwDocPositions
+{
+ DOCPOS_START,
+ DOCPOS_CURR,
+ DOCPOS_END,
+ DOCPOS_OTHERSTART,
+ DOCPOS_OTHEREND
+};
+
+
+#endif // _CSHTYP_HXX
diff --git a/sw/inc/dbfld.hxx b/sw/inc/dbfld.hxx
new file mode 100644
index 000000000000..c6fca4ada324
--- /dev/null
+++ b/sw/inc/dbfld.hxx
@@ -0,0 +1,366 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbfld.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DBFLD_HXX
+#define _DBFLD_HXX
+
+#include "fldbas.hxx"
+
+class SwDoc;
+class SwTxtFld;
+class SwFrm;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Datenbankfeld
+ --------------------------------------------------------------------*/
+
+class SwDBFieldType : public SwValueFieldType
+{
+ String aName; // Syntax: Datenbankname.Feldname
+ long nRefCnt;
+
+public:
+
+ SwDBFieldType(SwDoc* pDocPtr, const String& Name, const String& rSymDBName);
+
+ virtual const String& GetName() const;
+ virtual SwFieldType* Copy() const;
+
+ inline void AddRef() { nRefCnt++; }
+ void ReleaseRef();
+ inline long GetRefCount() { return nRefCnt; }
+
+ String GetColumnName();
+ String GetDBName();
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ von SwFields abgeleitete Klassen. Sie ueberlagern die Expand-Funktion.
+ Der Inhalt wird entsprechend dem Format, soweit vorhanden, formatiert.
+ --------------------------------------------------------------------*/
+
+class SwDBField : public SwValueField
+{
+ String aContent;
+ USHORT nSubType;
+ BOOL bIsInBodyTxt : 1;
+ BOOL bValidValue : 1;
+ BOOL bInitialized : 1;
+
+public:
+ SwDBField(SwDBFieldType*, ULONG nFmt = 0);
+ virtual ~SwDBField();
+
+ virtual SwFieldType* ChgTyp( SwFieldType* );
+
+ // Der aktuelle Text
+ inline void SetExpansion(const String& rStr);
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ virtual USHORT GetSubType() const;
+ virtual void SetSubType(USHORT nType);
+
+ // Name oder Inhalt
+ virtual String GetCntnt(BOOL bName = FALSE) const;
+
+ // fuer Berechnungen in Ausdruecken
+ void ChgValue( double d, BOOL bVal );
+
+ // Evaluierung ueber den DBMgr String rauspulen
+ void Evaluate();
+
+ // Evaluierung fuer Kopf und Fusszeilen
+ void ChangeExpansion( const SwFrm*, const SwTxtFld* );
+ void InitContent();
+ void InitContent(const String& rExpansion);
+ String GetOldContent();
+
+ inline void ChgBodyTxtFlag( BOOL bIsInBody );
+ inline BOOL IsInBodyTxt() const;
+
+ inline BOOL IsValidValue() const { return bValidValue; }
+
+ inline BOOL IsInitialized() const { return bInitialized; }
+ inline void ClearInitialized() { bInitialized = FALSE; }
+ inline void SetInitialized() { bInitialized = TRUE; }
+
+ // Name erfragen
+ virtual const String& GetPar1() const;
+
+ // DBName
+ inline String GetDBName() const { return ((SwDBFieldType*)GetTyp())->GetDBName(); }
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+inline void SwDBField::SetExpansion(const String& rStr)
+ { aContent = rStr; }
+
+// wird von der Formatierung abgefragt
+inline BOOL SwDBField::IsInBodyTxt() const
+ { return bIsInBodyTxt; }
+
+// wird von UpdateExpFlds gesetzt (dort ist die Node-Position bekannt)
+inline void SwDBField::ChgBodyTxtFlag( BOOL bIsInBody )
+ { bIsInBodyTxt = bIsInBody; }
+
+/*--------------------------------------------------------------------
+ Beschreibung: Basisklasse fuer alle weiteren Datenbankfelder
+ --------------------------------------------------------------------*/
+
+class SwDBNameInfField : public SwField
+{
+ String sDBName;
+
+protected:
+ const String& GetDBName() const {return sDBName;}
+ String& GetDBName() {return sDBName;}
+
+ SwDBNameInfField(SwFieldType* pTyp, const String& rDBName, ULONG nFmt = 0);
+
+public:
+ // DBName
+ inline const String& GetRealDBName() { return sDBName; }
+
+ String GetDBName(SwDoc* pDoc);
+ inline void SetDBName(const String& rDBName) { sDBName = rDBName; }
+
+ // Name oder Inhalt
+ virtual String GetCntnt(BOOL bName = FALSE) const;
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Datenbankfeld Naechster Satz
+ --------------------------------------------------------------------*/
+
+class SwDBNextSetFieldType : public SwFieldType
+{
+public:
+ SwDBNextSetFieldType();
+
+ virtual SwFieldType* Copy() const;
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Naechsten Datensatz mit Bedingung
+ --------------------------------------------------------------------*/
+
+class SwDBNextSetField : public SwDBNameInfField
+{
+ String aCond;
+ BOOL bCondValid;
+
+public:
+ SwDBNextSetField( SwDBNextSetFieldType*,
+ const String& rCond, const String& rDummy, const String& rDBName);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ void Evaluate(SwDoc*);
+ inline void SetCondValid(BOOL bCond);
+ inline BOOL IsCondValid() const;
+
+ // Condition
+ virtual const String& GetPar1() const;
+ virtual void SetPar1(const String& rStr);
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+inline BOOL SwDBNextSetField::IsCondValid() const
+ { return bCondValid; }
+
+inline void SwDBNextSetField::SetCondValid(BOOL bCond)
+ { bCondValid = bCond; }
+
+/*--------------------------------------------------------------------
+ Beschreibung: Datenbankfeld Naechster Satz
+ --------------------------------------------------------------------*/
+
+class SwDBNumSetFieldType : public SwFieldType
+{
+public:
+ SwDBNumSetFieldType();
+
+ virtual SwFieldType* Copy() const;
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Datensatz mit Nummer xxx
+ Die Nummer steht in nFormat
+ ! kleiner Missbrauch
+ --------------------------------------------------------------------*/
+
+class SwDBNumSetField : public SwDBNameInfField
+{
+ String aCond;
+ String aPar2;
+ BOOL bCondValid;
+
+public:
+ SwDBNumSetField(SwDBNumSetFieldType*, const String& rCond, const String& rDBNum, const String& rDBName);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ inline BOOL IsCondValid() const;
+ inline void SetCondValid(BOOL bCond);
+ void Evaluate(SwDoc*);
+
+ // Condition
+ virtual const String& GetPar1() const;
+ virtual void SetPar1(const String& rStr);
+
+ // Datensatznummer
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+
+ // Die Datensatznummer steht in nFormat !!
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+inline BOOL SwDBNumSetField::IsCondValid() const
+ { return bCondValid; }
+
+inline void SwDBNumSetField::SetCondValid(BOOL bCond)
+ { bCondValid = bCond; }
+
+/*--------------------------------------------------------------------
+ Beschreibung: Datenbankname
+ --------------------------------------------------------------------*/
+
+class SwDBNameFieldType : public SwFieldType
+{
+ SwDoc *pDoc;
+public:
+ SwDBNameFieldType(SwDoc*);
+
+ String Expand(ULONG) const;
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Datenbankfeld
+ --------------------------------------------------------------------*/
+
+class SwDBNameField : public SwDBNameInfField
+{
+public:
+ SwDBNameField(SwDBNameFieldType*, const String& rDBName, ULONG nFmt = 0);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Datensatznummer
+ --------------------------------------------------------------------*/
+
+class SwDBSetNumberFieldType : public SwFieldType
+{
+public:
+ SwDBSetNumberFieldType();
+
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Datenbankfeld
+ --------------------------------------------------------------------*/
+
+class SwDBSetNumberField : public SwDBNameInfField
+{
+ long nNumber;
+
+public:
+ SwDBSetNumberField(SwDBSetNumberFieldType*, const String& rDBName, ULONG nFmt = 0);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+ void Evaluate(SwDoc*);
+
+ inline long GetSetNumber() const;
+ inline void SetSetNumber(long nNum);
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+inline long SwDBSetNumberField::GetSetNumber() const
+ { return nNumber; }
+
+inline void SwDBSetNumberField::SetSetNumber(long nNum)
+ { nNumber = nNum; }
+
+
+#endif // _DBFLD_HXX
diff --git a/sw/inc/dbmgr.hxx b/sw/inc/dbmgr.hxx
new file mode 100644
index 000000000000..07ddffd79730
--- /dev/null
+++ b/sw/inc/dbmgr.hxx
@@ -0,0 +1,383 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbmgr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWDBMGR_HXX
+#define _SWDBMGR_HXX
+
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifdef REPLACE_OFADBMGR
+#ifndef _SBAITEMS_HXX
+#include "offmgr/sbaitems.hxx"
+#endif
+#ifndef _COM_SUN_STAR_UTIL_DATE_HPP_
+#include <com/sun/star/util/Date.hpp>
+#endif
+
+#else
+
+#ifndef _OFF_OFADBMGR_HXX //autogen
+#include <offmgr/ofadbmgr.hxx>
+#endif
+#endif
+
+#include "swtypes.hxx" // fuer aEmptyStr
+
+#ifdef REPLACE_OFADBMGR
+#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
+#include <com/sun/star/uno/Reference.h>
+#endif
+#ifndef _COM_SUN_STAR_UNO_SEQUENCE_H_
+#include <com/sun/star/uno/Sequence.h>
+#endif
+#ifndef _COM_SUN_STAR_LANG_LOCALE_HPP_
+#include <com/sun/star/lang/Locale.hpp>
+#endif
+namespace com{namespace sun{namespace star{
+ namespace sdbc{
+ class XConnection;
+ class XStatement;
+ class XDataSource;
+ class XResultSet;
+ }
+ namespace beans{
+
+ class XPropertySet;
+ }
+ namespace sdbcx{
+ class XColumnsSupplier;
+ }
+ namespace util{
+ class XNumberFormatter;
+ }
+}}}
+
+struct SwDBFormatData
+{
+ com::sun::star::util::Date aNullDate;
+ com::sun::star::uno::Reference< com::sun::star::util::XNumberFormatter> xFormatter;
+ com::sun::star::lang::Locale aLocale;
+};
+#endif //REPLACE_OFADBMGR
+
+class SwView;
+class SwWrtShell;
+class SwPrtOptions;
+class SfxProgress;
+class ListBox;
+class Button;
+class SvNumberFormatter;
+
+// -----------------------------------------------------------------------
+
+enum DBMgrOptions
+{
+ DBMGR_MERGE, // Datensaetze in Felder
+ DBMGR_INSERT, // Datensaetze in Text
+ DBMGR_MERGE_MAILMERGE, // Serienbriefe drucken
+ DBMGR_MERGE_MAILING, // Serienbriefe als email versenden
+ DBMGR_MERGE_MAILFILES // Serienbriefe als Datei(en) speichern
+};
+
+// -----------------------------------------------------------------------
+
+/*--------------------------------------------------------------------
+ Beschreibung: (neue) Logische Datenbanken verwalten
+ --------------------------------------------------------------------*/
+#ifdef REPLACE_OFADBMGR
+#define SW_DB_SELECT_UNKNOWN 0
+#define SW_DB_SELECT_TABLE 1
+#define SW_DB_SELECT_QUERY 2
+
+struct SwDSParam
+{
+ String sDataSource;
+ String sTableOrQuery;
+ BYTE nTableOrQuery;
+ String sStatement;
+ com::sun::star::util::Date aNullDate;
+
+ ::com::sun::star::uno::Reference<com::sun::star::util::XNumberFormatter> xFormatter;
+ ::com::sun::star::uno::Reference<::com::sun::star::sdbc::XConnection> xConnection;
+ ::com::sun::star::uno::Reference<::com::sun::star::sdbc::XStatement> xStatement;
+ ::com::sun::star::uno::Reference<::com::sun::star::sdbc::XResultSet> xResultSet;
+
+ SbaSelectionListRef xSelectionList;
+ BOOL bScrollable;
+ BOOL bSelectionList;
+ BOOL bEndOfDB;
+ long nSelectionIndex;
+
+ SwDSParam(const String& rSource, const String& rTable, BYTE nType, const String& rStatement) :
+ sDataSource(rSource),
+ sTableOrQuery(rTable),
+ nTableOrQuery(nType),
+ sStatement(rStatement),
+ bScrollable(FALSE),
+ bSelectionList(FALSE),
+ bEndOfDB(FALSE),
+ nSelectionIndex(0)
+ {}
+};
+typedef SwDSParam* SwDSParamPtr;
+SV_DECL_PTRARR_DEL(SwDSParamArr, SwDSParamPtr, 0, 5)
+
+#endif //REPLACE_OFADBMGR
+
+#ifdef REPLACE_OFADBMGR
+class SwNewDBMgr
+#else
+class SwNewDBMgr : public OfaDBMgr
+#endif
+{
+ SbaSelectionListRef pMergeList; // Liste der fr Serienbrief selektierten Eintr„ge
+ String sEMailAddrFld; // Mailing: Spaltenname der E-Mail Adresse
+ String sSubject; // Mailing: Subject
+ String sAttached; // Mailing: Attachte Files
+ USHORT nMergeType;
+ BOOL bInitDBFields : 1; // TRUE: Datenbank an Feldern beim Mergen
+ BOOL bSingleJobs : 1; // Einzelne Druckjobs bei Aufruf aus Basic
+ BOOL bCancel : 1; // Serienbrief-Save abgebrochen
+
+#ifdef REPLACE_OFADBMGR
+ BOOL bInMerge : 1; //merge process active
+ SwDSParamArr aDataSourceParams;
+
+ SwDSParam* pMergeData;
+
+ BOOL OpenMergeSource(const String& rDataSource,
+ const String& rDataTableOrQuery,
+ const String& rStatement,
+ const SbaSelectionListRef xSelectionList);
+ SwDSParam* FindDSData(const String& rDBName, BOOL bCreate);
+#endif
+
+
+ DECL_LINK( PrtCancelHdl, Button * );
+
+ // Datensaetze als Text ins Dokument einfuegen
+#ifdef REPLACE_OFADBMGR
+ void ImportFromConnection( SwWrtShell* pSh);
+#else
+ void ImportFromConnection( SwWrtShell* pSh,
+ const SbaSelectionList* pSelList = 0 );
+#endif
+
+ // Einzelnen Datensatz als Text ins Dokument einfuegen
+#ifdef REPLACE_OFADBMGR
+ void ImportDBEntry(SwWrtShell* pSh);
+#else
+ void ImportDBEntry(SbaDBDataDef* pDef, SwWrtShell* pSh);
+ BOOL GotoNextSelectedRecord( BOOL bSyncronized );
+#endif
+
+ // Mischen von Datensaetzen in Felder, dann per email versenden
+ BOOL MergeMailing(SwWrtShell* pSh);
+ // Mischen von Datensaetzen in Felder, dann als Datei abspeichern
+ BOOL MergeMailFiles(SwWrtShell* pSh);
+public:
+ SwNewDBMgr();
+#ifdef REPLACE_OFADBMGR
+ ~SwNewDBMgr();
+#endif
+ // Am Dokument Datenbank- Tabellenname und SQL-Select-Statement setzen
+ void ChgDBName( SwWrtShell* pSh,
+#ifdef REPLACE_OFADBMGR
+ const String& rDataSource,
+ const String& rTableOrQuery,
+#else
+ const String& rDBName,
+#endif
+ const String& rStatement );
+
+ // Art des aktellen Mergens. Siehe DBMgrOptions-enum
+ inline USHORT GetMergeType() const { return nMergeType; }
+ inline void SetMergeType( USHORT nTyp ) { nMergeType = nTyp; }
+
+ // Mischen von Datensaetzen in Felder
+ BOOL Merge(USHORT nOpt, SwWrtShell* pSh, const String& rStatement,
+ const SbaSelectionListRef pSelectionList,
+#ifdef REPLACE_OFADBMGR
+ const String& rDataSource,
+ const String& rTableOrQuery,
+#else
+ const String& rDBName,
+#endif
+ const String *pPrinter = NULL);
+ BOOL Merge(SwWrtShell* pSh);
+ // Mischen von Datensaetzen in Felder, dann drucken
+ BOOL MergePrint( SwView& rView,
+ SwPrtOptions& rOpt, SfxProgress& rProgress );
+ inline SbaSelectionListRef& GetMergeList() { return pMergeList; }
+
+ // Datenbankfelder mit fehlendem Datenbankname initialisieren
+ inline BOOL IsInitDBFields() const { return bInitDBFields; }
+ inline void SetInitDBFields(BOOL b) { bInitDBFields = b; }
+
+ // Serienbriefe einzelnd oder alle zusammen drucken/speichern
+ inline BOOL IsSingleJobs() const { return bSingleJobs; }
+ inline void SetSingleJobs(BOOL b) { bSingleJobs = b; }
+
+ // Mailing
+ // email-Daten setzen
+ inline void SetEMailColumn(const String& sColName) { sEMailAddrFld = sColName; }
+ inline void SetSubject(const String& sSbj) { sSubject = sSbj; }
+ inline void SetAttachment(const String& sAtt) { sAttached = sAtt; }
+
+
+#ifdef REPLACE_OFADBMGR
+ // Listbox mit allen Tabellennamen einer Datenbank fuellen
+ BOOL GetTableNames(ListBox* pListBox, const String& rDBName );
+ // Listbox mit allen Spaltennamen einer Datenbanktabelle fuellen
+ BOOL GetColumnNames(ListBox* pListBox,
+ const String& rDBName, const String& rTableName, BOOL bAppend = FALSE);
+ ULONG GetColumnFmt( const String& rDBName,
+ const String& rTableName,
+ const String& rColNm,
+ SvNumberFormatter* pNFmtr,
+ long nLanguage );
+ sal_Int32 GetColumnType( const String& rDBName,
+ const String& rTableName,
+ const String& rColNm );
+
+#else
+ // Listbox mit allen Tabellennamen einer Datenbank fuellen
+ BOOL GetTableNames(ListBox* pListBox, String sDBName);
+ // Listbox mit allen Spaltennamen einer Datenbanktabelle fuellen
+ BOOL GetColumnNames(ListBox* pListBox, String sDBName, BOOL bAppend = FALSE);
+ // DB-Cursor auf einen bestimmten Datensatz stellen
+ // (Ist im OfaDBMgr protected, daher hier nochmals als public fuer dbinsdlg.cxx)
+ inline void GotoRecord( ULONG nIndex )
+ { OfaDBMgr::GotoRecord( FALSE, nIndex ); }
+
+ ULONG GetColumnFmt( const String& rDBName, const String& rColNm,
+ SvNumberFormatter* pNFmtr );
+ // Numberformat der Spalte ermitteln und ggfs. in den uebergebenen
+ // Formatter uebertragen
+ ULONG GetRealColumnFmt( const String& rColNm, ULONG nFmt,
+ SvNumberFormatter& rNFmtr );
+ BOOL IsDBCaseSensitive( const String& rName ) const;
+#endif
+
+#ifdef REPLACE_OFADBMGR
+ inline BOOL IsInMerge() const { return bInMerge; }
+ void EndMerge();
+
+ // check if a data source is open as merge source
+ BOOL IsDataSourceOpen(const String& rDataSource, const String& rTableOrQuery)const;
+
+ // add data source information to the data source array - was PreInitDBData
+ void AddDSData(const String& rDBName, long nSelStart, long nSelEnd);
+ void GetDSSelection(const String& sDBDesc, long& rSelStart, long& rSelEnd);
+
+ // open the source while fields are updated - for the calculator only!
+ BOOL OpenDataSource(const String& rDataSource, const String& rTableOrQuery);
+ sal_uInt32 GetSelectedRecordId(const String& rDataSource, const String& rTableOrQuery);
+ BOOL GetColumnCnt(const String& rSourceName, const String& rTableName,
+ const String& rColumnName, sal_uInt32 nAbsRecordId, long nLanguage,
+ String& rResult, double* pNumber);
+
+ const SwDSParam* CreateDSData(const String& rDBName)
+ {return FindDSData(rDBName, TRUE);}
+ const SwDSParamArr& GetDSParamArray() const {return aDataSourceParams;}
+
+
+ //close all data sources - after fields were updated
+ void CloseAll(BOOL bIncludingMerge = TRUE);
+
+ BOOL GetMergeColumnCnt(const String& rColumnName, USHORT nLanguage,
+ String &rResult, double *pNumber, sal_uInt32 *pFormat);
+ BOOL ToNextMergeRecord();
+ BOOL ExistsNextRecord()const;
+ sal_uInt32 GetSelectedRecordId();
+ sal_Bool ToRecordId(sal_Int32 nSet);
+
+ BOOL ShowInBeamer(const String& rDBName, const String& rTableName,
+ BYTE nType, const String& rStatement);
+
+ const String& GetAddressDBName();
+
+ static String GetDBField(
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xColumnProp,
+ const SwDBFormatData& rDBFormatData,
+ double *pNumber = NULL);
+
+ static ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>
+ GetConnection(const String& rDataSource,
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource>& rxSource);
+
+ static ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XColumnsSupplier>
+ GetColumnSupplier(::com::sun::star::uno::Reference<::com::sun::star::sdbc::XConnection>,
+ const String& rTableOrQuery,
+ BYTE eTableOrQuery = SW_DB_SELECT_UNKNOWN);
+
+ static ::com::sun::star::uno::Sequence<rtl::OUString> GetExistingDatabaseNames();
+
+#else
+
+#endif //REPLACE_OFADBMGR
+
+};
+
+#endif
+
diff --git a/sw/inc/dcontact.hxx b/sw/inc/dcontact.hxx
new file mode 100644
index 000000000000..b91a07efb6a0
--- /dev/null
+++ b/sw/inc/dcontact.hxx
@@ -0,0 +1,193 @@
+/*************************************************************************
+ *
+ * $RCSfile: dcontact.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DCONTACT_HXX
+#define _DCONTACT_HXX
+
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+#include "calbck.hxx"
+
+class SfxPoolItem;
+class SwFrmFmt;
+class SwFlyFrmFmt;
+class SwDrawFrmFmt;
+class SwFlyFrm;
+class SwFrm;
+class SwPageFrm;
+class SwVirtFlyDrawObj;
+class SwFmtAnchor;
+class SwFlyDrawObj;
+class SwRect;
+
+//Der Umgekehrte Weg: Sucht das Format zum angegebenen Objekt.
+//Wenn das Object ein SwVirtFlyDrawObj ist so wird das Format von
+//selbigem besorgt.
+//Anderfalls ist es eben ein einfaches Zeichenobjekt. Diese hat einen
+//UserCall und der ist Client vom gesuchten Format.
+//Implementierung in dcontact.cxx
+SwFrmFmt *FindFrmFmt( SdrObject *pObj );
+inline const SwFrmFmt *FindFrmFmt( const SdrObject *pObj )
+{ return ::FindFrmFmt( (SdrObject*)pObj ); }
+
+//Bei Aenderungen das Objekt aus dem ContourCache entfernen.
+//Implementierung in TxtFly.Cxx
+void ClrContourCache( const SdrObject *pObj );
+
+// liefert BoundRect inklusive Abstand
+SwRect GetBoundRect( const SdrObject* pObj );
+
+//Liefert den UserCall ggf. vom Gruppenobjekt
+SdrObjUserCall* GetUserCall( const SdrObject* );
+
+// liefert TRUE falls das SrdObject ein Marquee-Object (Lauftext) ist
+FASTBOOL IsMarqueeTextObj( const SdrObject& rObj );
+
+//Basisklasse fuer die folgenden KontaktObjekte (Rahmen+Zeichenobjekte)
+class SwContact : public SdrObjUserCall, public SwClient
+{
+ SdrObject *pMasterObj;
+public:
+ TYPEINFO();
+
+ //Fuer den Reader, es wir nur die Verbindung hergestellt.
+ SwContact( SwFrmFmt *pToRegisterIn, SdrObject *pObj );
+ SwContact( SwModify *pToRegisterIn ) : SwClient( pToRegisterIn ){}
+
+ const SdrObject *GetMaster() const { return pMasterObj; }
+ SdrObject *GetMaster() { return pMasterObj; }
+ void SetMaster( SdrObject* pNew ){ pMasterObj = pNew; }
+
+ virtual ~SwContact();
+
+ SwFrmFmt *GetFmt(){ return (SwFrmFmt*)GetRegisteredIn(); }
+ const SwFrmFmt *GetFmt() const
+ { return (const SwFrmFmt*)GetRegisteredIn(); }
+};
+
+//KontactObjekt fuer die Verbindung zwischen Rahmen bzw. deren Formaten
+//im StarWriter (SwClient) und den Zeichenobjekten des Drawing (SdrObjUserCall)
+
+class SwFlyDrawContact : public SwContact
+{
+public:
+ TYPEINFO();
+
+ //Legt das DrawObjekt an und meldet es beim Model an.
+ SwFlyDrawContact( SwFlyFrmFmt *pToRegisterIn, SdrModel *pMod );
+ SwFlyDrawContact( SwFrmFmt *pToRegisterIn, SdrObject *pObj ):
+ SwContact( pToRegisterIn, pObj ){}
+
+ SwVirtFlyDrawObj *CreateNewRef( SwFlyFrm *pFly );
+
+ // virtuelle Methoden von SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew );
+
+};
+
+//KontactObjekt fuer die Verbindung von Formaten als Repraesentanten der
+//Zeichenobjekte im StarWriter (SwClient) und den Objekten selbst im Drawing
+//(SdrObjUserCall).
+
+class SwDrawContact : public SwContact
+{
+ SwFrm *pAnchor;
+ SwPageFrm *pPage;
+public:
+ TYPEINFO();
+
+ SwDrawContact( SwFrmFmt *pToRegisterIn, SdrObject *pObj );
+ virtual ~SwDrawContact();
+
+ const SwPageFrm *GetPage() const { return pPage; }
+ SwPageFrm *GetPage() { return pPage; }
+ const SwFrm *GetAnchor() const { return pAnchor; }
+ SwFrm *GetAnchor() { return pAnchor; }
+ void ChgAnchor( SwFrm *pNew ) { pAnchor = pNew; }
+ void ChgPage ( SwPageFrm *pNew){ pPage = pNew; }
+
+ void ChkPage(); //Muss immer nach SetAnchorPos() gerufen
+ //werden. Das Objekt haengt sich dann an
+ //die richtige Seite.
+ SwPageFrm* FindPage( const SwRect &rRect );
+
+ //Fuegt das SdrObject in die Arrays (SwPageFrm und SwFrm) des Layouts ein.
+ //Der Anker wird Anhand des Attributes SwFmtAnchor bestimmt.
+ //Das Objekt wird ggf. beim alten Anker abgemeldet.
+ void ConnectToLayout( const SwFmtAnchor *pAnch = 0 );
+ void DisconnectFromLayout( BOOL bRemoveFromPage = TRUE ); //Abmelden beim Anker.
+
+ // virtuelle Methoden von SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew );
+
+ // virtuelle Methoden von SdrObjUserCall
+ virtual void Changed(const SdrObject& rObj, SdrUserCallType eType, const Rectangle& rOldBoundRect);
+
+ // wird von Changed() und auch vom UndoDraw benutzt, uebernimmt
+ // das Notifien von Absaetzen, die ausweichen muessen
+ void _Changed(const SdrObject& rObj, SdrUserCallType eType, const Rectangle* pOldBoundRect);
+
+ //Moved alle SW-Verbindungen zu dem neuen Master.
+ void ChangeMasterObject( SdrObject *pNewMaster );
+};
+
+#endif
+
diff --git a/sw/inc/ddefld.hxx b/sw/inc/ddefld.hxx
new file mode 100644
index 000000000000..32e48f01a814
--- /dev/null
+++ b/sw/inc/ddefld.hxx
@@ -0,0 +1,152 @@
+/*************************************************************************
+ *
+ * $RCSfile: ddefld.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DDEFLD_HXX
+#define _DDEFLD_HXX
+
+#ifndef _LNKBASE_HXX //autogen
+#include <so3/lnkbase.hxx>
+#endif
+#include "fldbas.hxx"
+
+class SwDoc;
+
+/*--------------------------------------------------------------------
+ Beschreibung: FieldType fuer DDE
+ --------------------------------------------------------------------*/
+
+class SwDDEFieldType : public SwFieldType
+{
+ String aName;
+ String aExpansion;
+
+ SvBaseLinkRef refLink;
+ SwDoc* pDoc;
+
+ USHORT nRefCnt;
+ BOOL bCRLFFlag : 1;
+ BOOL bDeleted : 1;
+
+ void _RefCntChgd();
+public:
+ SwDDEFieldType( const String& rName, const String& rCmd,
+ USHORT = LINKUPDATE_ONCALL );
+ ~SwDDEFieldType();
+
+ const String& GetExpansion() const { return aExpansion; }
+ void SetExpansion( const String& rStr ) { aExpansion = rStr,
+ bCRLFFlag = FALSE; }
+
+ virtual SwFieldType* Copy() const;
+ virtual const String& GetName() const;
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+
+ String GetCmd() const;
+ void SetCmd( const String& rStr );
+
+ USHORT GetType() const { return refLink->GetUpdateMode(); }
+ void SetType( USHORT nType ) { refLink->SetUpdateMode( nType ); }
+
+ BOOL IsDeleted() const { return bDeleted; }
+ void SetDeleted( BOOL b ) { bDeleted = b; }
+
+ BOOL IsConnected() const { return 0 != refLink->GetObject(); }
+ void UpdateNow() { refLink->Update(); }
+ void Disconnect() { refLink->Disconnect(); }
+
+ const SvBaseLink& GetBaseLink() const { return *refLink; }
+
+ const SwDoc* GetDoc() const { return pDoc; }
+ SwDoc* GetDoc() { return pDoc; }
+ void SetDoc( SwDoc* pDoc );
+
+ void IncRefCnt() { if( !nRefCnt++ && pDoc ) _RefCntChgd(); }
+ void DecRefCnt() { if( !--nRefCnt && pDoc ) _RefCntChgd(); }
+
+ void SetCRLFDelFlag( BOOL bFlag = TRUE ) { bCRLFFlag = bFlag; }
+ BOOL IsCRLFDelFlag() const { return bCRLFFlag; }
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: DDE-Feld
+ --------------------------------------------------------------------*/
+
+class SwDDEField : public SwField
+{
+public:
+ SwDDEField(SwDDEFieldType*);
+ ~SwDDEField();
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ // ueber Typen Parameter ermitteln
+ // Name kann nicht geaendert werden
+ virtual const String& GetPar1() const;
+
+ // Commando
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+};
+
+
+#endif // _DDEFLD_HXX
diff --git a/sw/inc/dlelstnr.hxx b/sw/inc/dlelstnr.hxx
new file mode 100644
index 000000000000..02f337b058f0
--- /dev/null
+++ b/sw/inc/dlelstnr.hxx
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * $RCSfile: dlelstnr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DLELSTNR_HXX_
+#define _DLELSTNR_HXX_
+
+#include <cppuhelper/weak.hxx>
+
+#ifndef _COM_SUN_STAR_LINGUISTIC_XDICTIONARYLIST_HPP_
+#include <com/sun/star/linguistic/XDictionaryList.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XDICTIONARYLISTEVENTLISTENER_HPP_
+#include <com/sun/star/linguistic/XDictionaryListEventListener.hpp>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE1_HXX_
+#include <cppuhelper/implbase1.hxx> // helper for implementations
+#endif
+
+///////////////////////////////////////////////////////////////////////////
+// SwDicListEvtListener
+// is a ::com::sun::star::linguistic::XDictionaryListEventListener that triggers spellchecking
+// and hyphenation (yet to be implemented) when relevant changes to the
+// dictionaries of the dictionary list were made.
+//
+
+class SwDicListEvtListener : public cppu::WeakImplHelper1
+<
+ ::com::sun::star::linguistic::XDictionaryListEventListener
+>
+{
+private:
+ ::com::sun::star::uno::Reference< ::com::sun::star::linguistic::XDictionaryList > xDicList;
+
+ // disallow use of copy-constructor and assignment operator
+ SwDicListEvtListener(const SwDicListEvtListener &);
+ SwDicListEvtListener & operator = (const SwDicListEvtListener &);
+
+public:
+ SwDicListEvtListener( const ::com::sun::star::uno::Reference< ::com::sun::star::linguistic::XDictionaryList > &rxDicList );
+ virtual ~SwDicListEvtListener();
+
+ // ::com::sun::star::linguistic::XDictionaryListEventListener
+ virtual void SAL_CALL processDictionaryListEvent(const ::com::sun::star::linguistic::DictionaryListEvent& aDicListEvent) throw( ::com::sun::star::uno::RuntimeException );
+};
+
+
+#endif
+
diff --git a/sw/inc/dobjfac.hxx b/sw/inc/dobjfac.hxx
new file mode 100644
index 000000000000..a7af1c30c38e
--- /dev/null
+++ b/sw/inc/dobjfac.hxx
@@ -0,0 +1,83 @@
+/*************************************************************************
+ *
+ * $RCSfile: dobjfac.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DOBJFAC_HXX
+#define _DOBJFAC_HXX
+
+#ifndef _LINK_HXX //autogen
+#include <tools/link.hxx>
+#endif
+
+//-----------------------
+// class SwObjectFactory
+//-----------------------
+class SdrObjFactory;
+
+class SwObjectFactory
+{
+public:
+ DECL_LINK( MakeObject, SdrObjFactory * );
+};
+
+extern SwObjectFactory aSwObjectFactory;
+
+
+#endif // _DOBJFAC_HXX
+
diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx
new file mode 100644
index 000000000000..d26acabd17dc
--- /dev/null
+++ b/sw/inc/doc.hxx
@@ -0,0 +1,1770 @@
+/*************************************************************************
+ *
+ * $RCSfile: doc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DOC_HXX
+#define _DOC_HXX
+
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+
+#ifndef _TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _NDARR_HXX
+#include <ndarr.hxx>
+#endif
+#ifndef _SWATRSET_HXX
+#include <swatrset.hxx>
+#endif
+#ifndef _TOXE_HXX
+#include <toxe.hxx> // enums
+#endif
+#ifndef _REDLENUM_HXX
+#include <redlenum.hxx> // enums
+#endif
+#ifndef _BKMRKE_HXX
+#include <bkmrke.hxx>
+#endif
+#ifndef _FLYENUM_HXX
+#include <flyenum.hxx>
+#endif
+#ifndef _ITABENUM_HXX
+#include <itabenum.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_LINGUISTIC_XSPELLCHECKER1_HPP_
+#include <com/sun/star/linguistic/XSpellChecker1.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XHYPHENATEDWORD_HPP_
+#include <com/sun/star/linguistic/XHyphenatedWord.hpp>
+#endif
+
+class SwExtTextInput;
+class DateTime;
+class EditFieldInfo;
+class JobSetup;
+class Color;
+class KeyCode;
+class Outliner;
+class OutputDevice;
+class Point;
+class SbxArray;
+class SdrModel;
+class SdrObject;
+class SdrUndoAction;
+class SfxDocumentInfo;
+class SfxPrinter;
+class SvData;
+class SvEmbeddedObjectRef;
+class SvNumberFormatter;
+class SvPersist;
+class SvPseudoObject;
+class SvStorage;
+class SvStrings;
+class SvStringsSort;
+class SvUShorts;
+class SvUShortsSort;
+class SvxAutoCorrDoc;
+class SvxLinkManager;
+class SvxMacro;
+class SvxMacroTableDtor;
+class SvxBorderLine;
+class SwAutoCompleteWord;
+class SwAutoCorrExceptWord;
+class SwBookmark;
+class SwBookmarks;
+class SwCalc;
+class SwCellFrm;
+class SwCharFmt;
+class SwCharFmts;
+class SwClient;
+class SwConditionTxtFmtColl;
+class SwCrsrShell;
+class SwCursor;
+class SwDBNameInfField;
+class SwDocShell;
+class SwDocUpdtFld;
+class SwDrawFrmFmt;
+class SwDrawView;
+class SwEditShell;
+class SwFieldType;
+class SwFldTypes;
+class SwFlyFrm;
+class SwFlyFrmFmt;
+class SwFmt;
+class SwFmtCol;
+class SwFmtINetFmt;
+class SwFmtRefMark;
+class SwFrmFmt;
+class SwFrmFmts;
+class SwFtnIdxs;
+class SwFtnInfo;
+class SwEndNoteInfo;
+class SwGrfFmtColl;
+class SwGrfFmtColls;
+class SwLineNumberInfo;
+class SwNewDBMgr;
+class SwNoTxtNode;
+class SwNodeIndex;
+class SwNodeRange;
+class SwNumRule;
+class SwNumRuleTbl;
+class SwPageDesc;
+class SwPosFlyFrms;
+class SwPagePreViewPrtData;
+class SwRedline;
+class SwRedlineTbl;
+class SwRootFrm;
+class SwSectionFmt;
+class SwSectionFmts;
+class SwSelBoxes;
+class SwSpzFrmFmts;
+class SwTOXBase;
+class SwTOXBaseSection;
+class SwTOXMark;
+class SwTOXMarks;
+class SwTOXType;
+class SwTOXTypes;
+class SwTabCols;
+class SwTable;
+class SwTableAutoFmt;
+class SwTableBox;
+class SwTableBoxFmt;
+class SwTableFmt;
+class SwTableLineFmt;
+class SwTableNode;
+class SwTextBlocks;
+class SwTxtFld;
+class SwTxtFmtColl;
+class SwTxtFmtColls;
+class SwURLStateChanged;
+class SwUndo;
+class SwUndoIds;
+class SwUndoIter;
+class SwUndos;
+class SwUnoCrsr;
+class SwUnoCrsrTbl;
+class ViewShell;
+class _SetGetExpFld;
+class SwDrawContact;
+class SwLayouter;
+class SdrView;
+class SdrMarkList;
+class SwAuthEntry;
+class SwUnoCallBack;
+struct SwCallMouseEvent;
+struct SwDocStat;
+struct SwHash;
+struct SwSortOptions;
+struct SwDefTOXBase_Impl;
+
+//PageDescriptor-Schnittstelle, Array hier wegen inlines.
+typedef SwPageDesc* SwPageDescPtr;
+SV_DECL_PTRARR_DEL( SwPageDescs, SwPageDescPtr, 4, 4 );
+
+enum SwMoveFlags
+{
+ DOC_MOVEDEFAULT = 0x00,
+ DOC_MOVEALLFLYS = 0x01,
+ DOC_CREATEUNDOOBJ = 0x02,
+ DOC_MOVEREDLINES = 0x04
+};
+
+#define DUMMY_PARASPACEMAX 0x04
+#define DUMMY_PARASPACEMAX_AT_PAGES 0x20
+
+
+#define SW_HYPH_ERROR 0
+#define SW_HYPH_OK 1
+#define SW_HYPH_ABORTED 2
+#define SW_HYPH_CONTINUE 3
+
+class SwDoc
+{
+ friend class SwReader; // fuers Undo von Insert(SwDoc)
+ friend class SwSwgReader; // Zugriff auf bDtor-Flag (wg. Loeschen v.Frames)
+ friend class Sw3IoImp; // Zugriff u.a. auf den Drawing Layer
+ friend class SwCompareData; // fuers Undo vom CompareDoc
+
+ friend void _InitCore();
+ friend void _FinitCore();
+
+ //Fuer das Loeschen der Header-/Footer-Formate
+ //Implementierung und Benutzung in frmatr.cxx
+ friend void DelHFFormat( SwClient *, SwFrmFmt * );
+
+#if !( defined(PRODUCT) || defined(MAC) || defined(PM2) )
+ friend class SwUndoWriter; // fuers Schreiben der Undo/Redo-History
+#endif
+
+ //---------------- private Member --------------------------------
+
+ // -------------------------------------------------------------------
+ // die Objecte
+ SwNodes aNodes; // Inhalt des Dokumentes
+ SwNodes aUndoNodes; // Inhalt fuer das Undo
+ SwAttrPool aAttrPool; // der Attribut Pool
+ SwPageDescs aPageDescs; // PageDescriptoren
+ Link aOle2Link; // OLE 2.0-Benachrichtigung
+ AutoTimer aIdleTimer; // der eigene IdleTimer
+ Timer aChartTimer; // der Timer fuers Update aller Charts
+ Timer aOLEModifiedTimer; // Timer for update modified OLE-Objecs
+ String aDBName; // logischer Datenbankname
+ String sSectionPasswd; // Passwort fuer geschuetzte Bereiche
+ String sTOIAutoMarkURL; // ::com::sun::star::util::URL of table of index AutoMark file
+ SvStringsDtor aPatternNms; // Array fuer die Namen der Dokument-Vorlagen
+
+
+ // -------------------------------------------------------------------
+ // die Pointer
+ //Defaultformate
+ SwFrmFmt *pDfltFrmFmt;
+ SwFrmFmt *pEmptyPageFmt; // Format fuer die Default-Leerseite.
+ SwFrmFmt *pColumnContFmt; // Format fuer Spaltencontainer
+ SwCharFmt *pDfltCharFmt;
+ SwTxtFmtColl *pDfltTxtFmtColl; // Defaultformatcollections
+ SwGrfFmtColl *pDfltGrfFmtColl;
+
+ SwFrmFmts *pFrmFmtTbl; // Formattabellen
+ SwCharFmts *pCharFmtTbl;
+ SwSpzFrmFmts *pSpzFrmFmtTbl;
+ SwSectionFmts *pSectionFmtTbl;
+ SwFrmFmts *pTblFrmFmtTbl; // spz. fuer Tabellen
+ SwTxtFmtColls *pTxtFmtCollTbl; // FormatCollections
+ SwGrfFmtColls *pGrfFmtCollTbl;
+
+ SwBookmarks *pBookmarkTbl; //Bookmarks
+
+ SwTOXTypes *pTOXTypes; // Verzeichnisse
+ SwDefTOXBase_Impl * pDefTOXBases; // defaults of SwTOXBase's
+
+ SwRootFrm *pLayout; // Rootframe des spezifischen Layouts.
+ SdrModel *pDrawModel; // StarView Drawing
+
+ SwUndos *pUndos; // Undo/Redo History
+
+ SwDocUpdtFld *pUpdtFlds; // Struktur zum Field-Update
+ SwFldTypes *pFldTypes; // Feldtypen
+ SwNewDBMgr *pNewDBMgr; // Pointer auf den neuen DBMgr fuer
+ // Evaluierung der DB-Fields
+ SfxPrinter *pPrt;
+
+ SwDoc *pGlossaryDoc; // Pointer auf das Glossary-Dokument. Dieses
+
+ SwNumRule *pOutlineRule;
+ SwFtnInfo *pFtnInfo;
+ SwEndNoteInfo *pEndNoteInfo;
+ SwLineNumberInfo *pLineNumberInfo;
+ SwFtnIdxs *pFtnIdxs;
+ SwDocStat *pDocStat; // Statistic Informationen
+ SfxDocumentInfo *pSwgInfo; // Dokumentinformationen
+ SvxMacroTableDtor *pMacroTable; // Tabelle der dokumentglobalen Macros
+
+ SwDocShell *pDocShell; // Ptr auf die SfxDocShell vom Doc
+ SvEmbeddedObjectRef* pDocShRef; // fuers Kopieren von OLE-Nodes (wenn keine
+ // DocShell gesetzt ist, muss dieser
+ // Ref-Pointer gesetzt sein!!!!)
+ SvxLinkManager *pLinkMgr; // Liste von Verknuepften (Grafiken/DDE/OLE)
+
+ SwAutoCorrExceptWord *pACEWord; // fuer die automatische Uebernahme von
+ // autokorrigierten Woertern, die "zurueck"
+ // verbessert werden
+ SwURLStateChanged *pURLStateChgd; // SfxClient fuer Aenderungen in der
+ // INetHistory
+ SvNumberFormatter *pNumberFormatter; // NumFormatter fuer die Tabellen/Felder
+ SwNumRuleTbl *pNumRuleTbl; // Liste aller benannten NumRules
+ SwRedlineTbl *pRedlineTbl; // Liste aller Redlines
+ String *pAutoFmtRedlnComment; // Kommentar fuer Redlines, die
+ // uebers Autoformat eingefuegt werden
+ SwUnoCrsrTbl *pUnoCrsrTbl;
+
+ SwPagePreViewPrtData *pPgPViewPrtData; // Einzuege/Abstaende fuers
+ // Drucken der Seitenansicht
+ SwPaM *pExtInputRing;
+
+ SwLayouter *pLayouter; // ::com::sun::star::frame::Controller for complex layout formatting
+ // like footnote/endnote in sections
+
+ SwUnoCallBack *pUnoCallBack;
+ // -------------------------------------------------------------------
+ // sonstige
+ sal_uInt16 nUndoPos; // akt. Undo-InsertPosition (fuers Redo!)
+ sal_uInt16 nUndoSavePos; // Position im Undo-Array, ab der das Doc
+ // nicht als modifiziert gilt
+ sal_uInt16 nUndoCnt; // Anzahl von Undo Aktionen
+ sal_uInt16 nUndoSttEnd; // != 0 -> innerhalb einer Klammerung
+
+ sal_uInt16 nAutoFmtRedlnCommentNo; // SeqNo fuers UI-seitige zusammenfassen
+ // von AutoFmt-Redlines. Wird vom SwAutoFmt
+ // verwaltet!
+ sal_uInt16 nLinkUpdMode; // UpdateMode fuer Links
+ sal_uInt16 nFldUpdMode; // Mode fuer Felder/Charts automatisch aktualisieren
+
+ SwRedlineMode eRedlineMode; // aktueller Redline Modus
+
+ sal_Int8 nLinkCt; // wieviele kennen das Dokument
+ sal_Int8 nLockExpFld; // Wenn != 0 hat UpdateExpFlds() keine Wirkung
+
+ sal_Int8 nHeaven; // LayerIds, Heaven == ueber dem Dokument
+ sal_Int8 nHell; // Hell == unter dem Dokument
+ sal_Int8 nControls; // Controls == ganz oben
+
+ sal_Bool bGlossDoc : 1; //TRUE: ist ein Textbaustein Dokument
+ sal_Bool bModified : 1; //TRUE: Dokument ist veraendert
+ sal_Bool bDtor : 1; //TRUE: ist im SwDoc DTOR
+ // leider auch temporaer von
+ // SwSwgReader::InLayout(), wenn fehlerhafte
+ //Frames geloescht werden muessen
+ sal_Bool bUndo : 1; // TRUE: Undo eingeschaltet
+ sal_Bool bGroupUndo : 1; // TRUE: Undos werden gruppiert
+ sal_Bool bPageNums : 1; // TRUE: es gibt virtuelle Seitennummern
+ sal_Bool bLoaded : 1; // TRUE: ein geladenes Doc
+ sal_Bool bUpdateExpFld : 1; // TRUE: Expression-Felder updaten
+ sal_Bool bNewDoc : 1; // TRUE: neues Doc
+ sal_Bool bNewFldLst : 1; // TRUE: Felder-Liste neu aufbauen
+ sal_Bool bCopyIsMove : 1; // TRUE: Copy ist ein verstecktes Move
+ sal_Bool bNoDrawUndoObj : 1; // TRUE: keine DrawUndoObjecte speichern
+ sal_Bool bVisibleLinks : 1; // TRUE: Links werden sichtbar eingefuegt
+ sal_Bool bBrowseMode : 1; // TRUE: Dokument im BrowseModus anzeigen
+ sal_Bool bInReading : 1; // TRUE: Dokument wird gerade gelesen
+ sal_Bool bUpdateTOX : 1; // TRUE: nach Dokument laden die TOX Updaten
+ sal_Bool bInLoadAsynchron: 1; // TRUE: Dokument wird gerade asynchron geladen
+ sal_Bool bHTMLMode : 1; // TRUE: Dokument ist im HTMLMode
+ sal_Bool bHeadInBrowse : 1; // TRUE: Header sind im BrowseMode aktiviert
+ sal_Bool bFootInBrowse : 1; // TRUE: Footer sind im BrowseMode aktiviert
+ sal_Bool bFrmBeepEnabled : 1; // TRUE: Frames beepen wenn der Inhalt zu gross wird
+ sal_Bool bInCallModified : 1; // TRUE: im Set/Reset-Modified Link
+ sal_Bool bIsGlobalDoc : 1; // TRUE: es ist ein GlobalDokument
+ sal_Bool bGlblDocSaveLinks : 1; // TRUE: im GlobalDoc. gelinkte Sect. mit speichern
+ sal_Bool bIsLabelDoc : 1; // TRUE: es ist ein Etiketten-Dokument
+ sal_Bool bIsAutoFmtRedline : 1; // TRUE: die Redlines werden vom Autoformat aufgezeichnet
+ sal_Bool bOLEPrtNotifyPending:1; // TRUE: Printer ist geaendert und beim
+ // Erzeugen der ::com::sun::star::sdbcx::View ist eine Benachrichtigung
+ // der OLE-Objekte PrtOLENotify() notwendig.
+ sal_Bool bAllOLENotify :1; // True: Benachrichtigung aller Objekte ist notwendig
+ sal_Bool bIsRedlineMove : 1; // True: die Redlines werden in/aus der Section verschoben
+ sal_Bool bInsOnlyTxtGlssry : 1; // True: insert 'only text' glossary into doc
+ sal_Bool bContains_MSVBasic : 1; // True: MS-VBasic exist is in our storage
+ sal_Bool bPurgeOLE : 1; // TRUE: Purge OLE-Objects
+
+ // -------------------------------------------------------------------
+ // static - Members
+ static SvStringsDtor *pTextNmArray, // Array fuer alle
+ *pListsNmArray, // Pool-Vorlagen-Namen
+ *pExtraNmArray,
+ *pRegisterNmArray,
+ *pDocNmArray,
+ *pHTMLNmArray;
+ static SvStringsDtor *pFrmFmtNmArray,
+ *pChrFmtNmArray,
+ *pHTMLChrFmtNmArray;
+ static SvStringsDtor *pPageDescNmArray;
+ static SvStringsDtor *pNumRuleNmArray;
+
+ static SwAutoCompleteWord *pACmpltWords; // Liste aller Worte fuers AutoComplete
+ static sal_uInt16 nUndoActions; // anzahl von Undo ::com::sun::star::chaos::Action
+
+ // -------------------------------------------------------------------
+ // Dummies Members fuers FileFormat
+ String sDummy1; // Dummy-Member.
+ String sDummy2;
+ sal_uInt32 n32Dummy1;
+ sal_uInt32 n32Dummy2;
+ sal_Int8 n8Dummy1;
+ sal_Int8 n8Dummy2;
+
+
+ //---------------- private Methoden ------------------------------
+
+ void AppendUndo(SwUndo*); // interne Verkuerzung fuer Insert am Ende
+ void ClearRedo(); // loescht alle UndoObjecte von nUndoPos
+ // bis zum Ende des Undo-Arrays
+ sal_Bool DelUndoObj( sal_uInt16 nEnde ); // loescht alle UndoObjecte vom Anfang
+ // bis zum angegebenen Ende
+ DECL_LINK( AddDrawUndo, SdrUndoAction * );
+ // DrawModel
+ void DrawNotifyUndoHdl(); // wegen CLOOKs
+ void DrawSetRefDevice(); // wegen CLOOKs
+
+ // nur fuer den internen Gebrauch deshalb privat.
+ // Kopieren eines Bereiches im oder in ein anderes Dokument !
+ // Die Position darf nicht im Bereich liegen !!
+ sal_Bool _Copy( SwPaM&, SwPosition&,
+ sal_Bool MakeNewFrms = sal_True, SwPaM* pCpyRng = 0 ) const; // in ndcopy.cxx
+
+ SwFlyFrmFmt* _MakeFlySection( const SwPosition& rAnchPos,
+ const SwCntntNode& rNode, RndStdIds eRequestId,
+ const SfxItemSet* pFlyAttrSet,
+ SwFrmFmt* = 0 );
+
+ SwFlyFrmFmt* _InsNoTxtNode( const SwPosition&rPos, SwNoTxtNode*,
+ const SfxItemSet* pFlyAttrSet,
+ const SfxItemSet* pGrfAttrSet,
+ SwFrmFmt* = 0 );
+
+ void _CopyFlyInFly( const SwNodeRange& rRg, const SwNodeIndex& rSttIdx,
+ sal_Bool bCopyFlyAtFly = sal_False ) const; // steht im ndcopy.cxx
+ sal_Bool SetFlyFrmAnchor( SwFrmFmt& rFlyFmt, SfxItemSet& rSet, sal_Bool bNewFrms );
+
+ typedef SwFmt* (SwDoc:: *FNCopyFmt)( const String&, SwFmt* );
+ SwFmt* CopyFmt( const SwFmt& rFmt, const SvPtrarr& rFmtArr,
+ FNCopyFmt fnCopyFmt, const SwFmt& rDfltFmt );
+ void CopyFmtArr( const SvPtrarr& rSourceArr, SvPtrarr& rDestArr,
+ FNCopyFmt fnCopyFmt, SwFmt& rDfltFmt );
+ void _CopyPageDescHeaderFooter( sal_Bool bCpyHeader,
+ const SwFrmFmt& rSrcFmt, SwFrmFmt& rDestFmt );
+ SwFmt* FindFmtByName( const SvPtrarr& rFmtArr,
+ const String& rName ) const;
+ SfxPrinter* _GetPrt() const;
+ void PrtDataChanged(); //Printer oder JobSetup geandert, es muss
+ //fuer entsprechende Invalidierungen und
+ //Benachrichtigungen gesorgt werden.
+
+ static SvStringsDtor* NewNmArray( SvStringsDtor*&, sal_uInt16 nStt, sal_uInt16 nEnd );
+ SvStringsDtor* NewTextNmArray() const;
+ SvStringsDtor* NewListsNmArray() const;
+ SvStringsDtor* NewExtraNmArray() const;
+ SvStringsDtor* NewRegisterNmArray() const;
+ SvStringsDtor* NewDocNmArray() const;
+ SvStringsDtor* NewHTMLNmArray() const;
+ SvStringsDtor* NewFrmFmtNmArray() const;
+ SvStringsDtor* NewChrFmtNmArray() const;
+ SvStringsDtor* NewHTMLChrFmtNmArray() const;
+ SvStringsDtor* NewPageDescNmArray() const;
+ SvStringsDtor* NewNumRuleNmArray() const;
+
+
+ // gcc: aFtnInfo::CopyCtor ist private, also muessen wir uns auch schuetzen
+ SwDoc( const SwDoc &);
+
+ //wird nur von SwSwgReader::InlayoutFrames() verwendet!
+ inline void SetInDtor( sal_Bool b ) { bDtor = b; }
+
+ // fuer Felder:
+ void _InitFieldTypes(); // wird vom CTOR gerufen!!
+ void _MakeFldList( int eMode );
+ void RenameUserFld( const String& rOldName, const String& rNewName,
+ String& rFormel );
+ // Datenbankfelder:
+ void UpdateDBNumFlds( SwDBNameInfField& rDBFld, SwCalc& rCalc );
+ void AddUsedDBToList( SvStringsDtor& rDBNameList,
+ const SvStringsDtor& rUsedDBNames );
+ void AddUsedDBToList( SvStringsDtor& rDBNameList, const String& rDBName );
+ sal_Bool IsNameInArray( const SvStringsDtor& rOldNames, const String& rName );
+ void GetAllDBNames( SvStringsDtor& rAllDBNames );
+ void ReplaceUsedDBs( const SvStringsDtor& rUsedDBNames,
+ const String& rNewName, String& rFormel );
+ SvStringsDtor& FindUsedDBs( const SvStringsDtor& rAllDBNames,
+ const String& rFormel,
+ SvStringsDtor& rUsedDBNames );
+
+ void InitDrawModel();
+ void ReleaseDrawModel();
+
+ void _CreateNumberFormatter();
+
+ sal_Bool _UnProtectTblCells( SwTable& rTbl );
+
+ // erzeuge Anhand der vorgebenen Collection Teildokumente
+ // falls keine angegeben ist, nehme die Kapitelvorlage der 1. Ebene
+ sal_Bool SplitDoc( sal_uInt16 eDocType, const String& rPath,
+ const SwTxtFmtColl* pSplitColl );
+
+ // Charts der angegebenen Tabelle updaten
+ void _UpdateCharts( const SwTable& rTbl, ViewShell& rVSh ) const;
+
+ // unser eigener 'IdlTimer' ruft folgende Methode
+ DECL_LINK( DoIdleJobs, Timer * );
+ // der CharTimer ruft diese Methode
+ DECL_LINK( DoUpdateAllCharts, Timer * );
+ DECL_LINK( DoUpdateModifiedOLE, Timer * );
+
+public:
+ SwDoc();
+ ~SwDoc();
+
+ SwNodes& GetNodes() { return aNodes; }
+ const SwNodes& GetNodes() const { return aNodes; }
+
+ DECL_STATIC_LINK( SwDoc, BackgroundDone, SvxBrushItem *);
+ DECL_LINK(CalcFieldValueHdl, EditFieldInfo*);
+
+ // Links un-/sichtbar in LinkManager einfuegen (gelinkte Bereiche)
+ sal_Bool IsVisibleLinks() const { return bVisibleLinks; }
+ void SetVisibleLinks( sal_Bool bFlag ) { bVisibleLinks = bFlag; }
+
+ SvxLinkManager& GetLinkManager() { return *pLinkMgr; }
+ const SvxLinkManager& GetLinkManager() const { return *pLinkMgr; }
+
+ // erfrage das spezifische Layout
+ const SwRootFrm* GetRootFrm() const { return pLayout; }
+ SwRootFrm* GetRootFrm() { return pLayout; }
+ // der alte muss !! von der Shell geloescht werden !!
+ void SetRootFrm( SwRootFrm* pNew ) { pLayout = pNew; }
+
+ void StartIdleTimer() { aIdleTimer.Start(); }
+ void StopIdleTimer() { aIdleTimer.Stop(); }
+ sal_Bool IsIdleTimerActive() const { return aIdleTimer.IsActive(); }
+
+ sal_Bool IsOLEPrtNotifyPending() const { return bOLEPrtNotifyPending; }
+ void SetOLEPrtNotifyPending() { bOLEPrtNotifyPending = sal_True; }
+ void PrtOLENotify( sal_Bool bAll ); //Alle oder nur Markierte
+
+ sal_Bool IsPurgeOLE() const { return bPurgeOLE; }
+ void SetPurgeOLE( sal_Bool bFlag ) { bPurgeOLE = bFlag; }
+
+ // das Dokument im Browse-Modus anzeigen
+ void SetBrowseMode( sal_Bool bFlag = sal_True ) { bBrowseMode = bFlag; }
+ sal_Bool IsBrowseMode() const { return bBrowseMode; }
+ void SetHTMLMode( sal_Bool bFlag = sal_True ) { bHTMLMode = bFlag; }
+ sal_Bool IsHTMLMode() const { return bHTMLMode; }
+ void SetHeadInBrowse( sal_Bool bFlag = sal_True ) { bHeadInBrowse = bFlag; }
+ sal_Bool IsHeadInBrowse() const { return bHeadInBrowse; }
+ void SetFootInBrowse( sal_Bool bFlag = sal_True ) { bFootInBrowse = bFlag; }
+ sal_Bool IsFootInBrowse() const { return bFootInBrowse; }
+ void SetFrmBeepEnabled( sal_Bool bFlag = sal_True ) { bFrmBeepEnabled = bFlag; }
+ sal_Bool IsFrmBeepEnabled() const { return bFrmBeepEnabled; }
+
+ void SetGlobalDoc( sal_Bool bFlag = sal_True ) { bIsGlobalDoc = bFlag; }
+ sal_Bool IsGlobalDoc() const { return bIsGlobalDoc; }
+ void SetGlblDocSaveLinks( sal_Bool bFlag=sal_True ) { bGlblDocSaveLinks = bFlag; }
+ sal_Bool IsGlblDocSaveLinks() const { return bGlblDocSaveLinks; }
+
+ void SetLabelDoc( sal_Bool bFlag = sal_True ) { bIsLabelDoc = bFlag; }
+ sal_Bool IsLabelDoc() const { return bIsLabelDoc; }
+
+ sal_uInt16 GetLinkUpdMode() const;
+ void SetLinkUpdMode( sal_uInt16 nMode ) { nLinkUpdMode = nMode; }
+ // nur fuer den Writer, weil dieser das richtige Enum schreiben muss!
+ sal_uInt16 _GetLinkUpdMode() const { return nLinkUpdMode; }
+
+ inline sal_Bool IsInDtor() const { return bDtor; }
+
+ // SS fuer das Drawing, Model und LayerId's
+ const SdrModel* GetDrawModel() const { return pDrawModel; }
+ SdrModel* GetDrawModel() { return pDrawModel; }
+ sal_Int8 GetHeavenId() const { return nHeaven; }
+ sal_Int8 GetHellId() const { return nHell; }
+ sal_Int8 GetControlsId() const { return nControls; }
+
+ // liefert zu allen fliegenden Rahmen die Position im Dokument.
+ // Wird ein Pam-Pointer uebergeben, muessen die absatzgebundenen
+ // FlyFrames von der ::com::sun::star::awt::Selection vollstaendig umschlossen sein
+ // ( Start < Pos < End ) !!!
+ // (wird fuer die Writer benoetigt)
+ void GetAllFlyFmts( SwPosFlyFrms& rPosFlyFmts, const SwPaM* = 0,
+ sal_Bool bDrawAlso = sal_False ) const;
+
+ // dokumentglobale Macros
+ sal_Bool HasGlobalMacro(sal_uInt16 nEvent) const;
+ const SvxMacro& GetGlobalMacro(sal_uInt16 nEvent) const;
+ void SetGlobalMacro(sal_uInt16 nEvent, const SvxMacro&);
+ sal_Bool DelGlobalMacro(sal_uInt16 nEvent);
+ const SvxMacroTableDtor& GetMacroTable() const { return *pMacroTable; }
+
+ // Fussnoten Informationen
+ const SwFtnInfo& GetFtnInfo() const { return *pFtnInfo; }
+ void SetFtnInfo(const SwFtnInfo& rInfo);
+ const SwEndNoteInfo& GetEndNoteInfo() const { return *pEndNoteInfo; }
+ void SetEndNoteInfo(const SwEndNoteInfo& rInfo);
+
+ // Zeilennummerierung
+ const SwLineNumberInfo& GetLineNumberInfo() const { return *pLineNumberInfo; }
+ void SetLineNumberInfo(const SwLineNumberInfo& rInfo);
+
+ SwFtnIdxs& GetFtnIdxs() { return *pFtnIdxs; }
+ const SwFtnIdxs& GetFtnIdxs() const { return *pFtnIdxs; }
+ // Fussnoten im Bereich aendern
+ sal_Bool SetCurFtn( const SwPaM& rPam, const String& rNumStr,
+ sal_uInt16 nNumber, sal_Bool bIsEndNote );
+
+ // wegen swrtf.cxx und define private public, jetzt hier
+ SwFlyFrmFmt *MakeFlyFrmFmt (const String &rFmtName, SwFrmFmt *pDerivedFrom);
+ SwDrawFrmFmt *MakeDrawFrmFmt(const String &rFmtName, SwFrmFmt *pDerivedFrom);
+
+ SwLayouter* GetLayouter() { return pLayouter; }
+ const SwLayouter* GetLayouter() const { return pLayouter; }
+ void SetLayouter( SwLayouter* pNew ) { pLayouter = pNew; }
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
+ Spell(SwPaM&, ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XSpellChecker1 > &,
+ sal_uInt16* pPageCnt, sal_uInt16* pPageSt ) const;
+ ::com::sun::star::uno::Reference< ::com::sun::star::linguistic::XHyphenatedWord >
+ Hyphenate( SwPaM *pPam, const Point &rCrsrPos,
+ sal_uInt16* pPageCnt, sal_uInt16* pPageSt );
+
+ const SwBookmarks& GetBookmarks() const { return *pBookmarkTbl; }
+ SwBookmark* MakeBookmark( const SwPaM& rPaM, const KeyCode&,
+ const String& rName, const String& rShortName, BOOKMARK_TYPE eMark = BOOKMARK);
+ void DelBookmark( sal_uInt16 nPos );
+ void DelBookmark( const String& rName );
+ sal_uInt16 FindBookmark( const String& rName );
+ // erzeugt einen eindeutigen Namen. Der Name selbst muss vorgegeben
+ // werden, es wird dann bei gleichen Namen nur durchnumeriert.
+ void MakeUniqueBookmarkName( String& rNm );
+ // Anzahl der ::com::sun::star::text::Bookmarks, gfs. nur "echte"
+ sal_uInt16 GetBookmarkCnt(sal_Bool bBkmrk = sal_False) const;
+ SwBookmark& GetBookmark( sal_uInt16, sal_Bool bBkmrk = sal_False);
+
+ // Textbaustein Dokument?
+ void SetGlossDoc( sal_Bool bGlssDc = sal_True ) { bGlossDoc = bGlssDc; }
+ sal_Bool IsGlossDoc() const { return bGlossDoc; }
+ sal_Bool IsInsOnlyTextGlossary() const { return bInsOnlyTxtGlssry; }
+
+ //Bei Formataenderungen muss das zu Fuss gerufen werden!
+ void SetModified();
+ void ResetModified();
+ sal_Bool IsModified() const { return bModified; } //Dokumentaenderungen?
+
+ sal_Bool IsInCallModified() const { return bInCallModified; }
+ void SetUndoNoResetModified() { nUndoSavePos = USHRT_MAX; }
+ sal_Bool IsUndoNoResetModified() const { return USHRT_MAX == nUndoSavePos; }
+
+ //Die neuen (hoffentlich bestaendigen) Schnittstellen fuer alles,
+ //was mit dem Layout zu tun hat.
+ SwFrmFmt *MakeLayoutFmt( RndStdIds eRequest,
+ SwFrmFmt* = 0,
+ const SfxItemSet* pSet = 0 );
+ // JP 08.05.98: fuer Flys muss jetzt diese Schnittstelle benutzt
+ // werden. pAnchorPos muss gesetzt sein, wenn keine
+ // Seitenbindung vorliegt UND der ::com::sun::star::chaos::Anchor nicht schon
+ // im FlySet/FrmFmt mit gueltiger CntntPos gesetzt ist
+ SwFlyFrmFmt* MakeFlySection( RndStdIds eAnchorType,
+ const SwPosition* pAnchorPos,
+ const SfxItemSet* pSet = 0,
+ SwFrmFmt *pParent = 0 );
+ SwFlyFrmFmt* MakeFlyAndMove( const SwPaM& rPam, const SfxItemSet& rSet,
+ const SwSelBoxes* pSelBoxes = 0,
+ SwFrmFmt *pParent = 0 );
+
+ void DelLayoutFmt( SwFrmFmt *pFmt );
+ SwFrmFmt *CopyLayoutFmt( const SwFrmFmt& rSrc,
+ const SwFmtAnchor& rNewAnchor,
+ sal_Bool bSetTxtFlyAtt = sal_True, sal_Bool bMakeFrms = sal_True );
+ void CopyWithFlyInFly( const SwNodeRange& rRg,
+ const SwNodeIndex& rInsPos,
+ sal_Bool bMakeNewFrms = sal_True,
+ sal_Bool bDelRedlines = sal_True,
+ sal_Bool bCopyFlyAtFly = sal_False ) const;
+ sal_Bool IsInHeaderFooter( const SwNodeIndex& rIdx ) const;
+
+ sal_Bool SetFlyFrmAttr( SwFrmFmt& rFlyFmt, SfxItemSet& rSet );
+ sal_Bool SetFrmFmtToFly( SwFrmFmt& rFlyFmt, SwFrmFmt& rNewFmt,
+ SfxItemSet* pSet = 0, sal_Bool bKeepOrient = sal_False );
+
+ // Abstakt fuellen
+ void Summary( SwDoc* pExtDoc, sal_uInt8 nLevel, sal_uInt8 nPara, sal_Bool bImpress );
+
+ /* Verwaltet SwDoc::nLinkCt, sollte (paarig!) von allen benutzt werden,
+ * die einen Pointer auf dieses Dokument halten, denn wenn Remove() 0
+ * liefert, wird das Dokument zerstoert! Oder anders: Jeder bei dem
+ * Remove() 0 liefert, muss das Dokument zerstoeren.
+ */
+ sal_Int8 AddLink() { return nLinkCt++; }
+ sal_Int8 RemoveLink() { return nLinkCt ? --nLinkCt : nLinkCt; }
+ sal_Int8 GetLinkCnt() const { return nLinkCt; }
+
+ // UndoHistory am Dokument pflegen
+ // bei Save, SaveAs, Create wird UndoHistory zurueckgesetzt ???
+ void DoUndo(sal_Bool bUn = sal_True) { bUndo = bUn; }
+ sal_Bool DoesUndo() const { return bUndo; }
+ // Zusammenfassen von Kontinuierlichen Insert/Delete/Overwrite von
+ // Charaktern. Default ist ::com::sun::star::sdbcx::Group-Undo.
+ void DoGroupUndo(sal_Bool bUn = sal_True) { bGroupUndo = bUn; }
+ sal_Bool DoesGroupUndo() const { return bGroupUndo; }
+
+ // macht rueckgaengig:
+ // 0 letzte Aktion, sonst Aktionen bis zum Start der Klammerung nUndoId
+ // In rUndoRange wird der restaurierte Bereich gesetzt.
+ sal_Bool Undo( SwUndoIter& );
+ // setzt Undoklammerung auf, nUndoId kommt von der UI-Seite
+ sal_uInt16 StartUndo( sal_uInt16 nUndoId = 0 );
+ // schliesst Klammerung der nUndoId
+ sal_uInt16 EndUndo( sal_uInt16 nUndoId = 0 );
+ // loescht die gesamten UndoObjecte ( fuer Methoden die am Nodes
+ // Array drehen ohne entsprechendes Undo !!)
+ void DelAllUndoObj();
+ // liefert die Id der letzten undofaehigen Aktion zurueck
+ // oder USHRT_MAX
+ // fuellt ggf. VARARR mit ::com::sun::star::sdbcx::User-UndoIds
+ sal_uInt16 GetUndoIds( String* pStr = 0, SwUndoIds *pUndoIds = 0) const;
+ // gibt es Klammerung mit der Id?
+ sal_Bool HasUndoId(sal_uInt16 nId) const;
+ // die drei folgenden Methoden werden beim Undo und nur dort
+ // benoetigt. Sollten sonst nicht aufgerufen werden.
+ const SwNodes* GetUndoNds() const { return &aUndoNodes; }
+
+ // bei einstufigem Undo muss die History und das Undo-Array geloescht
+ // werden. Dabei ist aber zu beachten, das nur vollstaendige Gruppen
+ // geloescht werden koennen.
+ // Sind beide FLAGS auf sal_False, kann erfragt werden, ob sich in der
+ // History eine offene Gruppe befindet. ( return = sal_True )
+ // bDelHisory = sal_True: loesche die Undo-History
+ // bDelUndoNds = sal_True: loesche das Undo-Nodes-Arary
+ sal_Bool DelUndoGroups( sal_Bool bDelUndoNds=sal_True, sal_Bool bDelHistory=sal_True );
+ SwUndo* RemoveLastUndo( sal_uInt16 nUndoId );
+
+ // abfragen/setzen der Anzahl von wiederherstellbaren Undo-Actions
+ static sal_uInt16 GetUndoActionCount() { return nUndoActions; }
+ static void SetUndoActionCount( sal_uInt16 nNew ) { nUndoActions = nNew; }
+
+ // Redo
+ // wiederholt
+ sal_Bool Redo( SwUndoIter& );
+ // liefert die Id der letzten Redofaehigen Aktion zurueck
+ // fuellt ggf. VARARR mit RedoIds
+ sal_uInt16 GetRedoIds( String* pStr = 0, SwUndoIds *pRedoIds = 0) const;
+
+ // Repeat
+ // wiederholt
+ sal_Bool Repeat( SwUndoIter&, sal_uInt16 nRepeatCnt = 1 );
+ // liefert die Id der letzten Repeatfaehigen Aktion zurueck
+ // fuellt ggf. VARARR mit RedoIds
+ sal_uInt16 GetRepeatIds( String* pStr = 0, SwUndoIds *pRedoIds = 0) const;
+
+ /* Felder */
+ const SwFldTypes *GetFldTypes() const { return pFldTypes; }
+ SwFieldType *InsertFldType(const SwFieldType &);
+ SwFieldType *GetSysFldType( const sal_uInt16 eWhich ) const;
+ SwFieldType* GetFldType(sal_uInt16 nResId, const String& rName) const;
+ void RemoveFldType(sal_uInt16 nFld);
+ void UpdateFlds( SfxPoolItem* pNewHt = 0, sal_Bool bCloseDB = sal_False );
+ void InsDeletedFldType( SwFieldType & );
+ sal_Bool RenameUserFields(const String& rOldName, const String& rNewName);
+
+ // rufe das Update der Expression Felder auf; alle Ausdruecke werden
+ // neu berechnet.
+ void UpdateRefFlds( SfxPoolItem* pHt = 0);
+ void UpdateTblFlds( SfxPoolItem* pHt = 0);
+ void UpdateExpFlds( SwTxtFld* pFld = 0, sal_Bool bUpdateRefFlds = sal_True );
+ void UpdateUsrFlds();
+ void UpdatePageFlds( SfxPoolItem* );
+ void LockExpFlds() { ++nLockExpFld; }
+ void UnlockExpFlds() { if( nLockExpFld ) --nLockExpFld; }
+ sal_Bool IsExpFldsLocked() const { return 0 != nLockExpFld; }
+ SwDocUpdtFld& GetUpdtFlds() const { return *pUpdtFlds; }
+ sal_Bool SetFieldsDirty( sal_Bool b, const SwNode* pChk = 0, sal_uInt32 nLen = 0 );
+
+ void SetFixFields( sal_Bool bOnlyTimeDate = sal_False,
+ const DateTime* pNewDateTime = 0 );
+
+ sal_uInt16 GetFldUpdateFlags() const;
+ void SetFldUpdateFlags( sal_uInt16 eMode ) { nFldUpdMode = eMode; }
+ // nur fuer den Writer, weil dieser das richtige Enum schreiben muss!
+ sal_uInt16 _GetFldUpdateFlags() const { return nFldUpdMode; }
+
+ void ChangeAuthorityData(const SwAuthEntry* pNewData);
+
+ // Zustaende ueber Ladezustand
+ // frueher DocInfo
+ //
+ sal_Bool IsPageNums() const { return bPageNums; }
+ sal_Bool IsLoaded() const { return bLoaded; }
+ sal_Bool IsUpdateExpFld() const { return bUpdateExpFld; }
+ sal_Bool IsNewDoc() const { return bNewDoc; }
+
+ void SetPageNums(sal_Bool b = sal_True) { bPageNums = b; }
+ void SetNewDoc(sal_Bool b = sal_True) { bNewDoc = b; }
+ void SetUpdateExpFldStat(sal_Bool b = sal_True) { bUpdateExpFld = b; }
+ void SetLoaded(sal_Bool b = sal_True) { bLoaded = b; }
+
+ // Setze im Calculator alle SetExpresion Felder, die bis zur
+ // angegebenen Position (Node [ + ::com::sun::star::ucb::Content]) gueltig sind. Es kann
+ // eine erzeugte Liste aller Felder mit uebergegeben werden.
+ // (ist die Adresse != 0, und der Pointer == 0 wird eine neue
+ // Liste returnt.)
+ void FldsToCalc( SwCalc& rCalc, sal_uInt32 nLastNd = ULONG_MAX,
+ sal_uInt16 nLastCntnt = USHRT_MAX );
+ void FldsToCalc( SwCalc& rCalc, const _SetGetExpFld& rToThisFld );
+ void FldsToExpand( SwHash**& ppTbl, sal_uInt16& rTblSize,
+ const _SetGetExpFld& rToThisFld );
+ sal_Bool IsNewFldLst() const { return bNewFldLst; }
+ void SetNewFldLst( sal_Bool bFlag = sal_True ) { bNewFldLst = bFlag; }
+ void InsDelFldInFldLst( sal_Bool bIns, const SwTxtFld& rFld );
+
+ /* Datenbank && DB-Manager */
+ void SetNewDBMgr( SwNewDBMgr* pNewMgr ) { pNewDBMgr = pNewMgr; }
+ SwNewDBMgr* GetNewDBMgr() const { return pNewDBMgr; }
+ void ChangeDBFields( const SvStringsDtor& rOldNames,
+ const String& rNewName );
+ void SetInitDBFields(sal_Bool b);
+ // Von Feldern verwendete Datenbanken herausfinden
+ void GetAllUsedDB( SvStringsDtor& rDBNameList,
+ const SvStringsDtor* pAllDBNames = 0 );
+
+ void ChgDBName( const String& rNewName );
+ String GetDBName();
+ const String& GetDBDesc();
+ const String& _GetDBDesc() const { return aDBName; }
+
+
+ // Kopieren eines Bereiches im oder in ein anderes Dokument !
+ // Die Position kann auch im Bereich liegen !!
+ sal_Bool Copy( SwPaM&, SwPosition& ) const; // in ndcopy.cxx
+
+ // Loesche die Section, in der der Node steht.
+ void DeleteSection( SwNode *pNode );
+
+ sal_Bool Delete( SwPaM& ); //loeschen eines Bereiches
+ sal_Bool DelFullPara( SwPaM& ); //loeschen gesamter Absaetze
+ sal_Bool DeleteAndJoin( SwPaM& ); //komplett loeschen eines Bereiches
+
+ sal_Bool Move( SwPaM&, SwPosition&, SwMoveFlags = DOC_MOVEDEFAULT ); //verschieben eines Bereiches
+ sal_Bool Move( SwNodeRange&, SwNodeIndex&,
+ SwMoveFlags = DOC_MOVEDEFAULT ); // verschieben ganzer Nodes
+ sal_Bool MoveAndJoin( SwPaM&, SwPosition&, SwMoveFlags = DOC_MOVEDEFAULT ); //verschieben eines Bereiches
+ //Ueberschreiben eines einzelnen Zeichens. rRg.Start() bezeichnet
+ //den Node und die Position in dem Node, an der eingefuegt wird,
+ sal_Bool Overwrite( const SwPaM &rRg, sal_Unicode c );
+ //Ueberschreiben eines Strings in einem bestehenden Textnode.
+ sal_Bool Overwrite(const SwPaM &rRg, const String& rStr );
+ //Einfuegen eines einzelnen Zeichens. rRg.Start() bezeichnet
+ //den Node und die Position in dem Node, an der eingefuegt wird.
+ sal_Bool Insert(const SwPaM &rRg, sal_Unicode c );
+ //Einfuegen eines Strings in einen bestehenden
+ //Textnode. Der Text wird kopiert.
+ sal_Bool Insert( const SwPaM &rRg, const String &,
+ sal_Bool bHintExpand = sal_True );
+
+ //Einfuegen einer Grafik, Formel. Die XXXX werden kopiert.
+ SwFlyFrmFmt* Insert(const SwPaM &rRg,
+ const String& rGrfName,
+ const String& rFltName,
+ const Graphic* pGraphic = 0,
+ const SfxItemSet* pFlyAttrSet = 0,
+ const SfxItemSet* pGrfAttrSet = 0,
+ SwFrmFmt* = 0 );
+ // austauschen einer Grafik (mit Undo)
+ void ReRead( SwPaM&, const String& rGrfName, const String& rFltName,
+ const Graphic* pGraphic );
+
+ //Einfuegen eines DrawObjectes. Das Object muss bereits im DrawModel
+ // angemeldet sein.
+ SwDrawFrmFmt* Insert( const SwPaM &rRg,
+ SdrObject& rDrawObj,
+ const SfxItemSet* pFlyAttrSet = 0,
+ SwFrmFmt* = 0 );
+ String GetUniqueGrfName() const;
+
+ //Einfuegen von OLE-Objecten.
+ SwFlyFrmFmt* Insert( const SwPaM &rRg, SvInPlaceObject *,
+ const SfxItemSet* pFlyAttrSet = 0,
+ const SfxItemSet* pGrfAttrSet = 0,
+ SwFrmFmt* = 0 );
+ String GetUniqueOLEName() const;
+
+ void GrfToOle( const SwPaM &rRg, SvInPlaceObject * );
+ void OleToGrf( const SwPaM &rRg, const Graphic *pGrf );
+
+ // ein bischen wa fuer die benannten FlyFrames
+ String GetUniqueFrameName() const;
+ void SetFlyName( SwFlyFrmFmt& rFmt, const String& rName );
+ const SwFlyFrmFmt* FindFlyByName( const String& rName, sal_Int8 nNdTyp = 0 ) const;
+
+ void GetGrfNms( const SwFlyFrmFmt& rFmt, String* pGrfName,
+ String* pFltName ) const;
+
+ // setze bei allen Flys ohne Namen einen gueltigen (Wird von den Readern
+ // nach dem Einlesen gerufen )
+ void SetAllUniqueFlyNames();
+
+ //Aufspalten eines Nodes an rPos (nur fuer den TxtNode implementiert)
+ sal_Bool SplitNode(const SwPosition &rPos, sal_Bool bChkTableStart = sal_False );
+ sal_Bool AppendTxtNode( SwPosition& rPos ); // nicht const!
+
+ // Ersetz einen selektierten Bereich in einem TextNode mit dem
+ // String. Ist fuers Suchen&Ersetzen gedacht.
+ // bRegExpRplc - ersetze Tabs (\\t) und setze den gefundenen String
+ // ein ( nicht \& )
+ // z.B.: Fnd: "zzz", Repl: "xx\t\\t..&..\&"
+ // --> "xx\t<Tab>..zzz..&"
+ sal_Bool Replace( SwPaM& rPam, const String& rNewStr,
+ sal_Bool bRegExpRplc = sal_False );
+
+ /*
+ * Einfuegen eines Attributs. Erstreckt sich rRg ueber
+ * mehrere Nodes, wird das Attribut aufgespaltet, sofern
+ * dieses Sinn macht. Nodes, in denen dieses Attribut keinen
+ * Sinn macht, werden ignoriert. In vollstaendig in der
+ * Selektion eingeschlossenen Nodes wird das Attribut zu
+ * harter Formatierung, in den anderen (Text-)Nodes wird das
+ * Attribut in das Attributearray eingefuegt. Bei einem
+ * Zeichenattribut wird ein "leerer" Hint eingefuegt,
+ * wenn keine Selektion
+ * vorliegt; andernfalls wird das Attribut als harte
+ * Formatierung dem durch rRg.Start() bezeichneten Node
+ * hinzugefuegt. Wenn das Attribut nicht eingefuegt werden
+ * konnte, liefert die Methode sal_False.
+ */
+ sal_Bool Insert( const SwPaM &rRg, const SfxPoolItem&, sal_uInt16 nFlags = 0 );
+ sal_Bool Insert( const SwPaM &rRg, const SfxItemSet&, sal_uInt16 nFlags = 0 );
+
+ //Zuruecksetzen der Attribute; es werden alle TxtHints und bei
+ //vollstaendiger Selektion harte Formatierung (AUTO-Formate) entfernt
+ void ResetAttr(const SwPaM &rRg, sal_Bool bTxtAttr = sal_True,
+ const SvUShortsSort* = 0 );
+ void RstTxtAttr(const SwPaM &rRg, BOOL bInclRefToxMark = FALSE );
+
+ // Setze das Attribut im angegebenen Format. Ist Undo aktiv, wird
+ // das alte in die Undo-History aufgenommen
+ void SetAttr( const SfxPoolItem&, SwFmt& );
+ void SetAttr( const SfxItemSet&, SwFmt& );
+
+ // Setze das Attribut als neues default Attribut in diesem Dokument.
+ // Ist Undo aktiv, wird das alte in die Undo-History aufgenommen
+ void SetDefault( const SfxPoolItem& );
+ void SetDefault( const SfxItemSet& );
+
+ // Erfrage das Default Attribut in diesem Dokument.
+ const SfxPoolItem& GetDefault( sal_uInt16 nFmtHint ) const;
+ // TextAttribute nicht mehr aufspannen lassen
+ sal_Bool DontExpandFmt( const SwPosition& rPos, sal_Bool bFlag = sal_True );
+
+ /* Formate */
+ const SwFrmFmts* GetFrmFmts() const { return pFrmFmtTbl; }
+ SwFrmFmts* GetFrmFmts() { return pFrmFmtTbl; }
+ const SwCharFmts* GetCharFmts() const { return pCharFmtTbl;}
+
+ /* LayoutFormate (Rahmen, DrawObjecte), mal const mal nicht */
+ const SwSpzFrmFmts* GetSpzFrmFmts() const { return pSpzFrmFmtTbl; }
+ SwSpzFrmFmts* GetSpzFrmFmts() { return pSpzFrmFmtTbl; }
+
+ const SwFrmFmt *GetDfltFrmFmt() const { return pDfltFrmFmt; }
+ SwFrmFmt *GetDfltFrmFmt() { return pDfltFrmFmt; }
+ const SwFrmFmt *GetEmptyPageFmt() const { return pEmptyPageFmt; }
+ SwFrmFmt *GetEmptyPageFmt() { return pEmptyPageFmt; }
+ const SwFrmFmt *GetColumnContFmt() const{ return pColumnContFmt; }
+ SwFrmFmt *GetColumnContFmt() { return pColumnContFmt; }
+ const SwCharFmt *GetDfltCharFmt() const { return pDfltCharFmt;}
+ SwCharFmt *GetDfltCharFmt() { return pDfltCharFmt;}
+
+ SwFrmFmt *MakeFrmFmt(const String &rFmtName, SwFrmFmt *pDerivedFrom);
+ void DelFrmFmt( SwFrmFmt *pFmt );
+ SwFrmFmt* FindFrmFmtByName( const String& rName ) const
+ { return (SwFrmFmt*)FindFmtByName( (SvPtrarr&)*pFrmFmtTbl, rName ); }
+ SwFrmFmt* FindSpzFrmFmtByName( const String& rName ) const
+ { return (SwFrmFmt*)FindFmtByName( (SvPtrarr&)*pSpzFrmFmtTbl, rName ); }
+
+ SwCharFmt *MakeCharFmt(const String &rFmtName, SwCharFmt *pDerivedFrom);
+ void DelCharFmt(sal_uInt16 nFmt);
+ void DelCharFmt(SwCharFmt* pFmt);
+ SwCharFmt* FindCharFmtByName( const String& rName ) const
+ { return (SwCharFmt*)FindFmtByName( (SvPtrarr&)*pCharFmtTbl, rName ); }
+
+ /* Formatcollections (Vorlagen) */
+ // TXT
+ const SwTxtFmtColl* GetDfltTxtFmtColl() const { return pDfltTxtFmtColl; }
+ const SwTxtFmtColls *GetTxtFmtColls() const { return pTxtFmtCollTbl; }
+ SwTxtFmtColl *MakeTxtFmtColl( const String &rFmtName,
+ SwTxtFmtColl *pDerivedFrom );
+ SwConditionTxtFmtColl* MakeCondTxtFmtColl( const String &rFmtName,
+ SwTxtFmtColl *pDerivedFrom );
+ void DelTxtFmtColl(sal_uInt16 nFmt);
+ void DelTxtFmtColl( SwTxtFmtColl* pColl );
+ sal_Bool SetTxtFmtColl( const SwPaM &rRg, SwTxtFmtColl *pFmt,
+ sal_Bool bReset = sal_True);
+ SwTxtFmtColl* FindTxtFmtCollByName( const String& rName ) const
+ { return (SwTxtFmtColl*)FindFmtByName( (SvPtrarr&)*pTxtFmtCollTbl, rName ); }
+
+ // GRF
+ const SwGrfFmtColl* GetDfltGrfFmtColl() const { return pDfltGrfFmtColl; }
+ const SwGrfFmtColls *GetGrfFmtColls() const { return pGrfFmtCollTbl; }
+ SwGrfFmtColl *MakeGrfFmtColl(const String &rFmtName,
+ SwGrfFmtColl *pDerivedFrom);
+ void DelGrfFmtColl(sal_uInt16 nFmt);
+ void DelGrfFmtColl( SwGrfFmtColl* pColl );
+ SwGrfFmtColl* FindGrfFmtCollByName( const String& rName ) const
+ { return (SwGrfFmtColl*)FindFmtByName( (SvPtrarr&)*pGrfFmtCollTbl, rName ); }
+
+ // Tabellen-Formate
+ const SwFrmFmts* GetTblFrmFmts() const { return pTblFrmFmtTbl; }
+ SwFrmFmts* GetTblFrmFmts() { return pTblFrmFmtTbl; }
+ sal_uInt16 GetTblFrmFmtCount( sal_Bool bUsed ) const;
+ SwFrmFmt& GetTblFrmFmt(sal_uInt16 nFmt, sal_Bool bUsed ) const;
+ SwTableFmt* MakeTblFrmFmt(const String &rFmtName, SwFrmFmt *pDerivedFrom);
+ void DelTblFrmFmt( SwTableFmt* pFmt );
+ SwTableFmt* FindTblFmtByName( const String& rName, sal_Bool bAll = sal_False ) const;
+
+ //Rahmenzugriff
+ //iterieren ueber Flys - fuer Basic-Collections
+ sal_uInt16 GetFlyCount(FlyCntType eType = FLYCNTTYPE_ALL) const;
+ SwFrmFmt* GetFlyNum(sal_uInt16 nIdx, FlyCntType eType = FLYCNTTYPE_ALL);
+
+
+ // kopiere die Formate in die eigenen Arrays und returne diese
+ SwFrmFmt *CopyFrmFmt ( const SwFrmFmt& );
+ SwCharFmt *CopyCharFmt( const SwCharFmt& );
+ SwTxtFmtColl* CopyTxtColl( const SwTxtFmtColl& rColl );
+ SwGrfFmtColl* CopyGrfColl( const SwGrfFmtColl& rColl );
+
+ // ersetze alle Formate mit denen aus rSource
+ void ReplaceStyles( SwDoc& rSource );
+
+ // Gebe die "Auto-Collection" mit der Id zurueck. Existiert
+ // sie noch nicht, dann erzuege sie
+ // Ist der String-Pointer definiert, dann erfrage nur die
+ // Beschreibung der Attribute, !! es legt keine Vorlage an !!
+ SwTxtFmtColl* GetTxtCollFromPool( sal_uInt16 nId, String* pDescription = 0,
+ SfxItemPresentation ePres = SFX_ITEM_PRESENTATION_COMPLETE,
+ SfxMapUnit eCoreMetric = SFX_MAPUNIT_TWIP,
+ SfxMapUnit ePresMetric = SFX_MAPUNIT_TWIP );
+ // return das geforderte automatische Format - Basis-Klasse !
+ SwFmt* GetFmtFromPool( sal_uInt16 nId, String* pDescription = 0,
+ SfxItemPresentation ePres = SFX_ITEM_PRESENTATION_COMPLETE,
+ SfxMapUnit eCoreMetric = SFX_MAPUNIT_TWIP,
+ SfxMapUnit ePresMetric = SFX_MAPUNIT_TWIP );
+ // returne das geforderte automatische Format
+ SwFrmFmt* GetFrmFmtFromPool( sal_uInt16 nId, String* pDescription = 0 )
+ { return (SwFrmFmt*)GetFmtFromPool( nId, pDescription ); }
+ SwCharFmt* GetCharFmtFromPool( sal_uInt16 nId, String* pDescription = 0 )
+ { return (SwCharFmt*)GetFmtFromPool( nId, pDescription ); }
+ // returne die geforderte automatische Seiten-Vorlage
+ SwPageDesc* GetPageDescFromPool( sal_uInt16 nId, String* pDescription = 0,
+ SfxItemPresentation ePres = SFX_ITEM_PRESENTATION_COMPLETE,
+ SfxMapUnit eCoreMetric = SFX_MAPUNIT_TWIP,
+ SfxMapUnit ePresMetric = SFX_MAPUNIT_TWIP );
+ SwNumRule* GetNumRuleFromPool( sal_uInt16 nId, String* pDescription = 0,
+ SfxItemPresentation ePres = SFX_ITEM_PRESENTATION_COMPLETE,
+ SfxMapUnit eCoreMetric = SFX_MAPUNIT_TWIP,
+ SfxMapUnit ePresMetric = SFX_MAPUNIT_TWIP );
+
+ // pruefe, ob diese "Auto-Collection" in Dokument schon/noch
+ // benutzt wird
+ sal_Bool IsPoolTxtCollUsed( sal_uInt16 nId ) const;
+ sal_Bool IsPoolFmtUsed( sal_uInt16 nId ) const;
+ sal_Bool IsPoolPageDescUsed( sal_uInt16 nId ) const;
+ sal_Bool IsPoolNumRuleUsed( sal_uInt16 nId ) const;
+
+ // erfrage ob die Absatz-/Zeichen-/Rahmen-/Seiten - Vorlage benutzt wird
+ sal_Bool IsUsed( const SwModify& ) const;
+ sal_Bool IsUsed( const SwNumRule& ) const;
+
+ // ist der Name ein Pool-Vorlagen-Name, returne seine ID,
+ // sonst USHRT_MAX
+ sal_uInt16 GetPoolId( const String& rName, SwGetPoolIdFromName ) const;
+
+ const SvStringsDtor& GetTextNmArray() const
+ { return pTextNmArray ? *pTextNmArray : *NewTextNmArray(); }
+ const SvStringsDtor& GetListsNmArray() const
+ { return pListsNmArray ? *pListsNmArray : *NewListsNmArray(); }
+ const SvStringsDtor& GetExtraNmArray() const
+ { return pExtraNmArray ? *pExtraNmArray : *NewExtraNmArray(); }
+ const SvStringsDtor& GetRegisterNmArray() const
+ { return pRegisterNmArray ? *pRegisterNmArray : *NewRegisterNmArray(); }
+ const SvStringsDtor& GetDocNmArray() const
+ { return pDocNmArray ? *pDocNmArray : *NewDocNmArray(); }
+ const SvStringsDtor& GetHTMLNmArray() const
+ { return pHTMLNmArray ? *pHTMLNmArray : *NewHTMLNmArray(); }
+ const SvStringsDtor& GetFrmFmtNmArray() const
+ { return pFrmFmtNmArray ? *pFrmFmtNmArray : *NewFrmFmtNmArray(); }
+ const SvStringsDtor& GetChrFmtNmArray() const
+ { return pChrFmtNmArray ? *pChrFmtNmArray : *NewChrFmtNmArray(); }
+ const SvStringsDtor& GetHTMLChrFmtNmArray() const
+ { return pHTMLChrFmtNmArray ? *pHTMLChrFmtNmArray : *NewHTMLChrFmtNmArray(); }
+ const SvStringsDtor& GetPageDescNmArray() const
+ { return pPageDescNmArray ? *pPageDescNmArray : *NewPageDescNmArray(); }
+ const SvStringsDtor& GetNumRuleNmArray() const
+ { return pNumRuleNmArray ? *pNumRuleNmArray : *NewNumRuleNmArray(); }
+
+ // erfrage zu einer PoolId den Namen (steht im poolfmt.cxx)
+ static String& GetPoolNm( sal_uInt16 nId, String& rFillNm );
+
+ // setze den Namen der neu geladenen Dokument-Vorlage
+ sal_uInt16 SetDocPattern( const String& rPatternName );
+ // gebe die Anzahl von geladenen Dok-VorlagenNamen zurueck.
+ // !! Die nicht mehr benutzten sind 0-Pointer !!
+ sal_uInt16 GetDocPatternCnt() const { return aPatternNms.Count(); }
+ // gebe den Dok-VorlagenNamen zurueck. !!! Kann auch 0 sein !!!
+ String* GetDocPattern( sal_uInt16 nPos ) const { return aPatternNms[nPos]; }
+ // loeche die nicht mehr benutzten Pattern-Namen aus dem Array.
+
+ // alle nicht mehr referenzierten Namen werden durch 0-Pointer
+ // ersetzt. Diese Positionen koennen wieder vergeben werden.
+ void ReOrgPatternHelpIds();
+
+
+ // Loesche alle nicht referenzierten FeldTypen
+ void GCFieldTypes(); // impl. in docfld.cxx
+
+ // akt. Dokument mit Textbausteindokument verbinden/erfragen
+ void SetGlossaryDoc( SwDoc* pDoc ) { pGlossaryDoc = pDoc; }
+ SwDoc* GetGlossaryDoc() const { return pGlossaryDoc; }
+ // jetzt mit einem verkappten Reader/Writer/Dokument
+
+ // travel over PaM Ring
+ sal_Bool InsertGlossary( SwTextBlocks& rBlock, const String& rEntry,
+ SwPaM& rPaM, SwCrsrShell* pShell = 0);
+
+ String GetCurWord(SwPaM&);
+
+ // JobSetup und Freunde
+ SfxPrinter* GetPrt( sal_Bool bCreate ) const
+ { if( !bCreate || pPrt ) return pPrt; else return _GetPrt(); }
+ SfxPrinter* GetPrt() const { return pPrt; }
+ inline void _SetPrt( SfxPrinter *pP ) { pPrt = pP; }
+ void SetPrt( SfxPrinter *pP );
+ const JobSetup* GetJobsetup() const;
+ void SetJobsetup( const JobSetup& rJobSetup );
+
+ // Dokument - Info
+ // legt sie auf jedenfall an!
+ const SfxDocumentInfo* GetInfo();
+ // kann auch 0 sein !!!
+ const SfxDocumentInfo* GetpInfo() const { return pSwgInfo; }
+
+ // setze ueber die DocShell in den entsp. Storage-Stream. Hier wird
+ // jetzt die DocInfo verwaltet. Fuer die Felder ist am Doc eine Kopie
+ // der Info, um einen schnellen Zugriff zu ermoeglichen.
+ // (impl. in docsh2.cxx)
+ void SetInfo( const SfxDocumentInfo& rInfo );
+ // die DocInfo hat siche geaendert (Notify ueber die DocShell)
+ // stosse die entsp. Felder zum Updaten an.
+ void DocInfoChgd( const SfxDocumentInfo& rInfo );
+
+ // Dokument - Statistics
+ inline const SwDocStat &GetDocStat() const { return *pDocStat; }
+ void SetDocStat( const SwDocStat& rStat );
+ void UpdateDocStat( SwDocStat& rStat, sal_uInt16 nNumPages );
+
+ //PageDescriptor-Schnittstelle
+ sal_uInt16 GetPageDescCnt() const { return aPageDescs.Count(); }
+ const SwPageDesc& GetPageDesc( sal_uInt16 i ) const { return *aPageDescs[i]; }
+ SwPageDesc* FindPageDescByName( const String& rName,
+ sal_uInt16* pPos = 0 ) const;
+
+ // kopiere den gesamten PageDesc - ueber Dokumentgrenzen und "tief"!
+ // optional kann das kopieren der PoolFmtId, -HlpId verhindert werden
+ void CopyPageDesc( const SwPageDesc& rSrcDesc, SwPageDesc& rDstDesc,
+ sal_Bool bCopyPoolIds = sal_True );
+
+ // kopiere die Kopzeile (mit dem Inhalt!) aus dem SrcFmt
+ // ins DestFmt ( auch ueber Doc grenzen hinaus!)
+ void CopyHeader( const SwFrmFmt& rSrcFmt, SwFrmFmt& rDestFmt )
+ { _CopyPageDescHeaderFooter( sal_True, rSrcFmt, rDestFmt ); }
+ // kopiere die Fusszeile (mit dem Inhalt!) aus dem SrcFmt
+ // ins DestFmt ( auch ueber Doc grenzen hinaus!)
+ void CopyFooter( const SwFrmFmt& rSrcFmt, SwFrmFmt& rDestFmt )
+ { _CopyPageDescHeaderFooter( sal_False, rSrcFmt, rDestFmt ); }
+
+ //fuer Reader
+ SwPageDesc& _GetPageDesc( sal_uInt16 i ) const { return *aPageDescs[i]; }
+ void ChgPageDesc( sal_uInt16 i, const SwPageDesc& );
+ void DelPageDesc( sal_uInt16 i );
+ sal_uInt16 MakePageDesc( const String &rName, const SwPageDesc* pCpy = 0 );
+
+ // Methoden fuer die Verzeichnisse:
+ // - Verzeichnismarke einfuegen loeschen travel
+ sal_uInt16 GetCurTOXMark( const SwPosition& rPos, SwTOXMarks& ) const;
+ void Delete( SwTOXMark* pTOXMark );
+ const SwTOXMark& GotoTOXMark( const SwTOXMark& rCurTOXMark,
+ SwTOXSearch eDir, sal_Bool bInReadOnly );
+
+ // - Verzeichnis einfuegen, und bei Bedarf erneuern
+ const SwTOXBaseSection* InsertTableOf( const SwPosition& rPos,
+ const SwTOXBase& rTOX,
+ const SfxItemSet* pSet = 0,
+ sal_Bool bExpand = sal_False );
+ const SwTOXBaseSection* InsertTableOf( sal_uInt32 nSttNd, sal_uInt32 nEndNd,
+ const SwTOXBase& rTOX,
+ const SfxItemSet* pSet = 0 );
+ const SwTOXBase* GetCurTOX( const SwPosition& rPos ) const;
+ const SwAttrSet& GetTOXBaseAttrSet(const SwTOXBase& rTOX) const;
+
+ sal_Bool DeleteTOX( const SwTOXBase& rTOXBase, sal_Bool bDelNodes = sal_False );
+ String GetUniqueTOXBaseName( const SwTOXType& rType,
+ const String* pChkStr = 0 ) const;
+
+ sal_Bool SetTOXBaseName(const SwTOXBase& rTOXBase, const String& rName);
+ void SetTOXBaseProtection(const SwTOXBase& rTOXBase, sal_Bool bProtect);
+
+ // nach einlesen einer Datei alle Verzeichnisse updaten
+ void SetUpdateTOX( sal_Bool bFlag = sal_True ) { bUpdateTOX = bFlag; }
+ sal_Bool IsUpdateTOX() const { return bUpdateTOX; }
+
+ const String& GetTOIAutoMarkURL() const {return sTOIAutoMarkURL;}
+ void SetTOIAutoMarkURL(const String& rSet) {sTOIAutoMarkURL = rSet;}
+ void ApplyAutoMark();
+
+ sal_Bool IsInReading() const { return bInReading; }
+
+ // - Verzeichnis-Typen verwalten
+ sal_uInt16 GetTOXTypeCount( TOXTypes eTyp ) const;
+ const SwTOXType* GetTOXType( TOXTypes eTyp, sal_uInt16 nId ) const;
+ sal_Bool DeleteTOXType( TOXTypes eTyp, sal_uInt16 nId );
+ const SwTOXType* InsertTOXType( const SwTOXType& rTyp );
+ const SwTOXTypes& GetTOXTypes() const { return *pTOXTypes; }
+
+ const SwTOXBase* GetDefaultTOXBase( TOXTypes eTyp, sal_Bool bCreate = sal_False );
+ void SetDefaultTOXBase(const SwTOXBase& rBase);
+
+ // - Schluessel fuer die Indexverwaltung
+ sal_uInt16 GetTOIKeys( SwTOIKeyType eTyp, SvStringsSort& rArr ) const;
+
+ // Sortieren Tabellen Text
+ sal_Bool SortTbl(const SwSelBoxes& rBoxes, const SwSortOptions&);
+ sal_Bool SortText(const SwPaM&, const SwSortOptions&);
+
+ // korrigiere die im Dokument angemeldeten SwPosition-Objecte,
+ // wie z.B. die ::com::sun::star::text::Bookmarks oder die Verzeichnisse.
+ // JP 22.06.95: ist bMoveCrsr gesetzt, verschiebe auch die Crsr
+
+ // Setzt alles in rOldNode auf rNewPos + Offset
+ void CorrAbs( const SwNodeIndex& rOldNode, const SwPosition& rNewPos,
+ const xub_StrLen nOffset = 0, sal_Bool bMoveCrsr = sal_False );
+ // Setzt alles im Bereich von [rStartNode, rEndNode] nach rNewPos
+ void CorrAbs( const SwNodeIndex& rStartNode, const SwNodeIndex& rEndNode,
+ const SwPosition& rNewPos, sal_Bool bMoveCrsr = sal_False );
+ // Setzt alles im Bereich von rRange nach rNewPos
+ void CorrAbs( const SwPaM& rRange, const SwPosition& rNewPos,
+ sal_Bool bMoveCrsr = sal_False );
+ // Setzt alles in rOldNode auf relative Pos
+ void CorrRel( const SwNodeIndex& rOldNode, const SwPosition& rNewPos,
+ const xub_StrLen nOffset = 0, sal_Bool bMoveCrsr = sal_False );
+
+ // GliederungsRegeln erfragen / setzen
+ const SwNumRule* GetOutlineNumRule() const { return pOutlineRule; }
+ void SetOutlineNumRule( const SwNumRule& rRule );
+ // Gliederung - hoch-/runterstufen
+ sal_Bool OutlineUpDown( const SwPaM& rPam, short nOffset = 1 );
+ // Gliederung - hoch-/runtermoven
+ sal_Bool MoveOutlinePara( const SwPaM& rPam, short nOffset = 1);
+ // zu diesem Gliederungspunkt
+ sal_Bool GotoOutline( SwPosition& rPos, const String& rName ) const;
+ // die Aenderungen an den Gliederungsvorlagen in die OutlineRule uebernehmen
+ void SetOutlineLSpace( sal_uInt8 nLevel, short nFirstLnOfst, sal_uInt16 nLSpace );
+
+ // setzt, wenn noch keine Numerierung, sonst wird geaendert
+ // arbeitet mit alten und neuen Regeln, nur Differenzen aktualisieren
+ void SetNumRule( const SwPaM&, const SwNumRule&,
+ sal_Bool bSetAbsLSpace = sal_True );
+ // ab hier neu starten lassen oder den Start wieder aufheben
+ void SetNumRuleStart( const SwPosition& rPos, sal_Bool bFlag = sal_True );
+ void SetNodeNumStart( const SwPosition& rPos, sal_uInt16 nStt = USHRT_MAX );
+
+ SwNumRule* GetCurrNumRule( const SwPosition& rPos ) const;
+ SwNumRuleTbl& GetNumRuleTbl() { return *pNumRuleTbl; }
+ const SwNumRuleTbl& GetNumRuleTbl() const { return *pNumRuleTbl; }
+ sal_uInt16 MakeNumRule( const String &rName, const SwNumRule* pCpy = 0 );
+ sal_uInt16 FindNumRule( const String& rName ) const;
+ SwNumRule* FindNumRulePtr( const String& rName ) const;
+ // loeschen geht nur, wenn die ::com::sun::star::chaos::Rule niemand benutzt!
+ sal_Bool DelNumRule( const String& rName );
+ String GetUniqueNumRuleName( const String* pChkStr = 0, sal_Bool bAutoNum = sal_True ) const;
+ void UpdateNumRule( const String& rName, sal_uInt32 nUpdPos );
+ void UpdateNumRule(); // alle invaliden Updaten
+ void ChgNumRuleFmts( const SwNumRule& rRule );
+ sal_Bool ReplaceNumRule( const SwPosition& rPos, const String& rOldRule,
+ const String& rNewRule );
+
+ // zum naechsten/vorhergehenden Punkt auf gleicher Ebene
+ sal_Bool GotoNextNum( SwPosition&, sal_Bool bOverUpper = sal_True,
+ sal_uInt8* pUpper = 0, sal_uInt8* pLower = 0 );
+ sal_Bool GotoPrevNum( SwPosition&, sal_Bool bOverUpper = sal_True,
+ sal_uInt8* pUpper = 0, sal_uInt8* pLower = 0 );
+
+ // Absaetze ohne Numerierung, aber mit Einzuegen
+ sal_Bool NoNum( const SwPaM& );
+ // Loeschen, Splitten der Aufzaehlungsliste
+ sal_Bool DelNumRules( const SwPaM& );
+ // Hoch-/Runterstufen
+ sal_Bool NumUpDown( const SwPaM&, sal_Bool bDown = sal_True );
+ // Bewegt selektierte Absaetze (nicht nur Numerierungen)
+ // entsprechend des Offsets. (negativ: zum Doc-Anf.)
+ sal_Bool MoveParagraph( const SwPaM&, long nOffset = 1, sal_Bool bIsOutlMv = sal_False );
+ // No-/Numerierung ueber Delete/Backspace ein/abschalten
+ sal_Bool NumOrNoNum( const SwNodeIndex& rIdx, sal_Bool bDel = sal_False,
+ sal_Bool bOutline = sal_False );
+ // Animation der Grafiken stoppen
+ void StopNumRuleAnimations( OutputDevice* );
+
+ // fuege eine neue Tabelle auf der Position rPos ein. (es
+ // wird vor dem Node eingefuegt !!)
+ //JP 28.10.96:
+ // fuer AutoFormat bei der Eingabe: dann muessen die Spalten
+ // auf die vordefinierten Breite gesetzt werden. Im Array stehen die
+ // Positionen der Spalten!! (nicht deren Breite!)
+ const SwTable* InsertTable( const SwPosition& rPos, sal_uInt16 nRows,
+ sal_uInt16 nCols, SwHoriOrient eAdjust,
+ sal_uInt16 nInsert = HEADLINE_NO_BORDER,
+ const SwTableAutoFmt* pTAFmt = 0,
+ const SvUShorts* pColArr = 0 );
+
+ // steht der Index in einer Tabelle, dann returne den TableNode sonst 0
+ SwTableNode* IsIdxInTbl( const SwNodeIndex& rIdx );
+ inline const SwTableNode* IsIdxInTbl( const SwNodeIndex& rIdx ) const;
+
+ // erzeuge aus dem makierten Bereich eine ausgeglichene Tabelle
+ const SwTable* TextToTable( const SwPaM& rRange, sal_Unicode cCh,
+ SwHoriOrient eAdjust,
+ sal_uInt16 nInsert = HEADLINE_NO_BORDER,
+ const SwTableAutoFmt* = 0 );
+ // erzeuge aus der Tabelle wieder normalen Text
+ sal_Bool TableToText( const SwTableNode* pTblNd, sal_Unicode cCh );
+ // einfuegen von Spalten/Zeilen in der Tabelle
+ sal_Bool InsertCol( const SwCursor& rCursor,
+ sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True );
+ sal_Bool InsertCol( const SwSelBoxes& rBoxes,
+ sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True );
+ sal_Bool InsertRow( const SwCursor& rCursor,
+ sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True );
+ sal_Bool InsertRow( const SwSelBoxes& rBoxes,
+ sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True );
+ // loeschen von Spalten/Zeilen in der Tabelle
+ sal_Bool DeleteRowCol( const SwSelBoxes& rBoxes );
+ sal_Bool DeleteRow( const SwCursor& rCursor );
+ sal_Bool DeleteCol( const SwCursor& rCursor );
+ // teilen / zusammenfassen von Boxen in der Tabelle
+ sal_Bool SplitTbl( const SwSelBoxes& rBoxes, sal_Bool bVert = sal_True, sal_uInt16 nCnt=1 );
+ // returnt den enum TableMergeErr
+ sal_uInt16 MergeTbl( SwPaM& rPam );
+ String GetUniqueTblName() const;
+ sal_Bool IsInsTblFormatNum() const;
+ sal_Bool IsInsTblChangeNumFormat() const;
+ sal_Bool IsInsTblAlignNum() const;
+
+ // aus der FEShell wg.. Undo und bModified
+ void GetTabCols( SwTabCols &rFill, const SwCursor* pCrsr,
+ const SwCellFrm* pBoxFrm = 0 ) const;
+ void SetTabCols( const SwTabCols &rNew, sal_Bool bCurRowOnly,
+ const SwCursor* pCrsr, const SwCellFrm* pBoxFrm = 0 );
+
+ // Direktzugriff fuer Uno
+ void SetTabCols(SwTable& rTab, const SwTabCols &rNew, SwTabCols &rOld,
+ const SwTableBox *pStart, sal_Bool bCurRowOnly);
+
+ void SetHeadlineRepeat( SwTable &rTable, sal_Bool bSet );
+ // AutoFormat fuer die Tabelle/TabellenSelection
+ sal_Bool SetTableAutoFmt( const SwSelBoxes& rBoxes, const SwTableAutoFmt& rNew );
+ // Erfrage wie attributiert ist
+ sal_Bool GetTableAutoFmt( const SwSelBoxes& rBoxes, SwTableAutoFmt& rGet );
+ // setze das TabelleAttribut Undo auf:
+ void AppendUndoForAttrTable( const SwTable& rTbl );
+ // setze die Spalten/Zeilen/ZTellen Breite/Hoehe
+ sal_Bool SetColRowWidthHeight( SwTableBox& rAktBox, sal_uInt16 eType,
+ SwTwips nAbsDiff, SwTwips nRelDiff );
+ SwTableBoxFmt* MakeTableBoxFmt();
+ SwTableLineFmt* MakeTableLineFmt();
+ // teste ob die Box ein numerischen Wert darstellt und aender dann ggfs.
+ // das Format der Box
+ void ChkBoxNumFmt( SwTableBox& rAktBox, sal_Bool bCallUpdate );
+ void SetTblBoxFormulaAttrs( SwTableBox& rBox, const SfxItemSet& rSet );
+ void ClearBoxNumAttrs( const SwNodeIndex& rNode );
+
+ sal_Bool CopyTblInTbl( const SwTable& rSrcTable, SwTable& rDestTbl,
+ const SwNodeIndex& rBoxIdx );
+ sal_Bool InsCopyOfTbl( SwPosition& rInsPos, const SwSelBoxes& rBoxes,
+ const SwTable* pCpyTbl = 0, sal_Bool bCpyName = sal_False,
+ sal_Bool bCorrPos = sal_False );
+
+ sal_Bool UnProtectCells( const String& rTblName );
+ sal_Bool UnProtectCells( const SwSelBoxes& rBoxes );
+ sal_Bool UnProtectTbls( const SwPaM& rPam );
+ sal_Bool HasTblAnyProtection( const SwPosition* pPos,
+ const String* pTblName = 0,
+ sal_Bool* pFullTblProtection = 0 );
+
+ // Tabelle an der Position in der GrundLine aufsplitten, sprich eine
+ // neue Tabelle erzeugen.
+ sal_Bool SplitTable( const SwPosition& rPos, sal_uInt16 eMode = 0,
+ sal_Bool bCalcNewSize = sal_False );
+ // und die Umkehrung davon. rPos muss in der Tabelle stehen, die bestehen
+ // bleibt. Das Flag besagt ob die aktuelle mit der davor oder dahinter
+ // stehenden vereint wird.
+ sal_Bool MergeTable( const SwPosition& rPos, sal_Bool bWithPrev = sal_True,
+ sal_uInt16 nMode = 0 );
+
+ // Raeume die Umrandung innerhalb der Tabelle ein wenig auf (doppelte
+ // an einer Kante erkennen und beseitigen)
+ sal_Bool GCTableBorder( const SwPosition& rPos );
+ // Charts der angegebenen Tabelle zum Update bewegen
+ void UpdateCharts( const String &rName ) const;
+ // update all charts, for that exists any table
+ void UpdateAllCharts() { DoUpdateAllCharts( 0 ); }
+ // Tabelle wird umbenannt und aktualisiert die Charts
+ void SetTableName( SwFrmFmt& rTblFmt, const String &rNewName );
+
+ // returne zum Namen die im Doc gesetzte Referenz
+ const SwFmtRefMark* GetRefMark( const String& rName ) const;
+ // returne die RefMark per Index - fuer Uno
+ const SwFmtRefMark* GetRefMark( sal_uInt16 nIndex ) const;
+ // returne die Namen aller im Doc gesetzten Referenzen.
+ // Ist der ArrayPointer 0 dann returne nur, ob im Doc. eine RefMark
+ // gesetzt ist
+ sal_uInt16 GetRefMarks( SvStringsDtor* = 0 ) const;
+
+ //Einfuegen einer Beschriftung - falls ein FlyFormat erzeugt wird, so
+ // returne dieses.
+ SwFlyFrmFmt* InsertLabel( const SwLabelType eType, const String &rTxt,
+ const sal_Bool bBefore, const sal_uInt16 nId, const sal_uInt32 nIdx,
+ const sal_Bool bCpyBrd = sal_True );
+ SwFlyFrmFmt* InsertDrawLabel( const String &rTxt, const sal_uInt16 nId,
+ SdrObject& rObj );
+
+ // erfrage den Attribut Pool
+ const SwAttrPool& GetAttrPool() const { return aAttrPool; }
+ SwAttrPool& GetAttrPool() { return aAttrPool; }
+
+ // suche ueber das Layout eine EditShell und ggfs. eine ViewShell
+ SwEditShell* GetEditShell( ViewShell** ppSh = 0 ) const;
+
+ // OLE 2.0-Benachrichtung
+ inline void SetOle2Link(const Link& rLink) {aOle2Link = rLink;}
+ inline const Link& GetOle2Link() const {return aOle2Link;}
+
+ // SS fuer Bereiche
+ SwSection* Insert( const SwPaM& rRange, const SwSection& rNew,
+ const SfxItemSet* pAttr = 0, sal_Bool bUpdate = sal_True );
+ sal_uInt16 IsInsRegionAvailable( const SwPaM& rRange,
+ const SwNode** ppSttNd = 0 ) const;
+ SwSection* GetCurrSection( const SwPosition& rPos ) const;
+ SwSectionFmts& GetSections() { return *pSectionFmtTbl; }
+ const SwSectionFmts& GetSections() const { return *pSectionFmtTbl; }
+ SwSectionFmt *MakeSectionFmt( SwSectionFmt *pDerivedFrom );
+ void DelSectionFmt( SwSectionFmt *pFmt, sal_Bool bDelNodes = sal_False );
+ void ChgSection( sal_uInt16 nSect, const SwSection&, const SfxItemSet* = 0 );
+ String GetUniqueSectionName( const String* pChkStr = 0 ) const;
+
+ // Passwort fuer geschuetzte Bereiche erfragen/setzen
+ void ChgSectionPasswd( const String& sNew );
+ const String& GetSectionPasswd() const { return sSectionPasswd; }
+
+ // Pointer auf die SfxDocShell vom Doc, kann 0 sein !!!
+ SwDocShell* GetDocShell() { return pDocShell; }
+ const SwDocShell* GetDocShell() const { return pDocShell; }
+ void SetDocShell( SwDocShell* pDSh );
+
+ // falls beim Kopieren von OLE-Nodes eine DocShell angelegt werden muss,
+ // dann MUSS der Ref-Pointer besetzt sein!!!!
+ SvEmbeddedObjectRef* GetRefForDocShell() { return pDocShRef; }
+ void SetRefForDocShell( SvEmbeddedObjectRef* p ) { pDocShRef = p; }
+
+ // fuer die TextBausteine - diese habe nur ein SvPersist zur
+ // Verfuegung
+ SvPersist* GetPersist() const;
+ void SetPersist( SvPersist* );
+
+ // Pointer auf den Storage des SfxDocShells, kann 0 sein !!!
+ SvStorage* GetDocStorage();
+
+ // abfrage/setze Flag, ob das Dokument im asynchronen Laden ist
+ sal_Bool IsInLoadAsynchron() const { return bInLoadAsynchron; }
+ void SetInLoadAsynchron( sal_Bool bFlag ) { bInLoadAsynchron = bFlag; }
+
+ // SS fuers Linken von Dokumentteilen
+ sal_Bool GetData( const String& rItem, SvData& rData ) const;
+ sal_Bool ChangeData( const String& rItem, const SvData& rData );
+ SvPseudoObject* CreateHotLink( const String& rItem );
+ // erzeuge um das zu Servende Object eine Selektion
+ sal_Bool SelectServerObj( const String& rStr, SwPaM*& rpPam,
+ SwNodeRange*& rpRange ) const;
+ // erfage alle zu servendenen Objecte
+ sal_uInt16 GetServerObjects( SvStrings& rStrArr ) const;
+
+ // fuer Drag&Move: ( z.B. RefMarks "verschieben" erlauben )
+ sal_Bool IsCopyIsMove() const { return bCopyIsMove; }
+ void SetCopyIsMove( sal_Bool bFlag ) { bCopyIsMove = bFlag; }
+
+ // fuers Draw-Undo: Aktionen auf Flys wollen wir selbst behandeln
+ sal_Bool IsNoDrawUndoObj() const { return bNoDrawUndoObj; }
+ void SetNoDrawUndoObj( sal_Bool bFlag ) { bNoDrawUndoObj = bFlag; }
+ SwDrawContact* GroupSelection( SdrView& );
+ void UnGroupSelection( SdrView& );
+ sal_Bool DeleteSelection( SwDrawView& );
+
+ // Invalidiert OnlineSpell-WrongListen
+ void SpellItAgainSam( sal_Bool bInvalid, sal_Bool bOnlyWrong );
+ void InvalidateAutoCompleteFlag();
+
+ SdrModel* _MakeDrawModel();
+ inline SdrModel* MakeDrawModel()
+ { return GetDrawModel() ? GetDrawModel() : _MakeDrawModel(); }
+ void SetCalcFieldValueHdl(Outliner* pOutliner);
+
+ // erfrage ob die ::com::sun::star::util::URL besucht war. Uebers Doc, falls nur ein ::com::sun::star::text::Bookmark
+ // angegeben ist. Dann muss der Doc. Name davor gesetzt werden!
+ sal_Bool IsVisitedURL( const String& rURL ) const;
+
+ // speicher die akt. Werte fuer die automatische Aufnahme von Ausnahmen
+ // in die Autokorrektur
+ void SetAutoCorrExceptWord( SwAutoCorrExceptWord* pNew );
+ SwAutoCorrExceptWord* GetAutoCorrExceptWord() { return pACEWord; }
+
+ const SwFmtINetFmt* FindINetAttr( const String& rName ) const;
+
+ // rufe ins dunkle Basic, mit evt. Return String
+ sal_Bool ExecMacro( const SvxMacro& rMacro, String* pRet = 0, SbxArray* pArgs = 0 );
+ // rufe ins dunkle Basic/JavaScript
+ sal_uInt16 CallEvent( sal_uInt16 nEvent, const SwCallMouseEvent& rCallEvent,
+ sal_Bool bChkPtr = sal_False, SbxArray* pArgs = 0,
+ const Link* pCallBack = 0 );
+
+ // linken Rand ueber Objectleiste einstellen (aenhlich dem Stufen von
+ // Numerierungen), optional kann man "um" den Offset stufen oder "auf"
+ // die Position gestuft werden (bModulus = sal_True)
+ void MoveLeftMargin( const SwPaM& rPam, sal_Bool bRight = sal_True,
+ sal_Bool bModulus = sal_True );
+
+ // Numberformatter erfragen
+ inline SvNumberFormatter* GetNumberFormatter( sal_Bool bCreate = sal_True );
+ inline const SvNumberFormatter* GetNumberFormatter( sal_Bool bCreate = sal_True ) const;
+
+ // loesche den nicht sichtbaren ::com::sun::star::ucb::Content aus dem Document, wie z.B.:
+ // versteckte Bereiche, versteckte Absaetze
+ sal_Bool RemoveInvisibleContent();
+ // embedded alle lokalen Links (Bereiche/Grafiken)
+ sal_Bool EmbedAllLinks();
+ // erzeuge Anhand der vorgebenen Collection Teildokumente
+ // falls keine angegeben ist, nehme die Kapitelvorlage der 1. Ebene
+ sal_Bool GenerateGlobalDoc( const String& rPath,
+ const SwTxtFmtColl* pSplitColl = 0 );
+ sal_Bool GenerateHTMLDoc( const String& rPath,
+ const SwTxtFmtColl* pSplitColl = 0 );
+
+
+ // alles fuers Redlining
+ SwRedlineMode GetRedlineMode() const { return eRedlineMode; }
+ sal_Bool IsRedlineOn() const { return ::IsRedlineOn( eRedlineMode ); }
+ sal_Bool IsIgnoreRedline() const { return REDLINE_IGNORE & eRedlineMode; }
+ void SetRedlineMode_intern( sal_uInt16 eMode ) { eRedlineMode = (SwRedlineMode)eMode; }
+ void SetRedlineMode( sal_uInt16 eMode );
+
+ const SwRedlineTbl& GetRedlineTbl() const { return *pRedlineTbl; }
+ sal_Bool AppendRedline( SwRedline* pPtr, sal_Bool bCallDelete = sal_True );
+ sal_Bool SplitRedline( const SwPaM& rPam );
+ sal_Bool DeleteRedline( const SwPaM& rPam, sal_Bool bSaveInUndo = sal_True,
+ sal_uInt16 nDelType = USHRT_MAX );
+ sal_Bool DeleteRedline( const SwStartNode& rSection, sal_Bool bSaveInUndo = sal_True,
+ sal_uInt16 nDelType = USHRT_MAX );
+ void DeleteRedline( sal_uInt16 nPos );
+ sal_uInt16 GetRedlinePos( const SwNode& rNd, sal_uInt16 nType = USHRT_MAX ) const;
+ void CompressRedlines();
+ const SwRedline* GetRedline( const SwPosition& rPos,
+ sal_uInt16* pFndPos = 0 ) const;
+
+ sal_Bool IsRedlineMove() const { return bIsRedlineMove; }
+ void SetRedlineMove( sal_Bool bFlag ) { bIsRedlineMove = bFlag; }
+
+ sal_Bool AcceptRedline( sal_uInt16 nPos, sal_Bool bCallDelete = sal_True );
+ sal_Bool AcceptRedline( const SwPaM& rPam, sal_Bool bCallDelete = sal_True );
+ sal_Bool RejectRedline( sal_uInt16 nPos, sal_Bool bCallDelete = sal_True );
+ sal_Bool RejectRedline( const SwPaM& rPam, sal_Bool bCallDelete = sal_True );
+ const SwRedline* SelNextRedline( SwPaM& rPam ) const;
+ const SwRedline* SelPrevRedline( SwPaM& rPam ) const;
+
+ // alle Redline invalidieren, die Darstellung hat sich geaendert
+ void UpdateRedlineAttr();
+ // legt gegebenenfalls einen neuen Author an
+ sal_uInt16 GetRedlineAuthor();
+ // fuer die Reader usw. - neuen Author in die Tabelle eintragen
+ sal_uInt16 InsertRedlineAuthor( const String& );
+ // Kommentar am Redline an der Position setzen
+ sal_Bool SetRedlineComment( const SwPaM& rPam, const String& rS );
+
+ // vergleiche zwei Dokument miteinander
+ long CompareDoc( const SwDoc& rDoc );
+ // merge zweier Dokumente
+ long MergeDoc( const SwDoc& rDoc );
+ // setze Kommentar-Text fuers Redline, das dann per AppendRedline
+ // hereinkommt. Wird vom Autoformat benutzt. 0-Pointer setzt den Modus
+ // wieder zurueck. Die SequenceNummer ist fuers UI-seitige zusammen-
+ // fassen von Redlines.
+ void SetAutoFmtRedlineComment( const String* pTxt, sal_uInt16 nSeqNo = 0 );
+
+ sal_Bool IsAutoFmtRedline() const { return bIsAutoFmtRedline; }
+ void SetAutoFmtRedline( sal_Bool bFlag ) { bIsAutoFmtRedline = bFlag; }
+
+ // fuer AutoFormat: mit Undo/Redlining - Behandlung
+ void SetTxtFmtCollByAutoFmt( const SwPosition& rPos, sal_uInt16 nPoolId,
+ const SfxItemSet* pSet = 0 );
+ void SetFmtItemByAutoFmt( const SwPaM& rPam, const SfxPoolItem& );
+
+ // !!!NUR fuer die SW-Textblocks!! beachtet kein LAYOUT!!!
+ void ClearDoc(); // loescht den gesamten Inhalt.
+
+ // erfrage / setze die Daten fuer die PagePreView
+ const SwPagePreViewPrtData* GetPreViewPrtData() const { return pPgPViewPrtData; }
+ // wenn der Pointer == 0 ist, dann wird im Doc der Pointer zerstoert,
+ // ansonsten wird das Object kopiert.
+ // Der Pointer geht NICHT in den Besitz des Doc's!!
+ void SetPreViewPrtData( const SwPagePreViewPrtData* pData );
+
+ // update all modified OLE-Objects. The modification is called over the
+ // StarOne - Interface --> Bug 67026
+ void SetOLEObjModified()
+ { if( GetRootFrm() ) aOLEModifiedTimer.Start(); }
+
+ // -------------------- Uno - Schnittstellen ---------------------------
+ const SwUnoCrsrTbl& GetUnoCrsrTbl() const { return *pUnoCrsrTbl; }
+ SwUnoCrsr* CreateUnoCrsr( const SwPosition& rPos, sal_Bool bTblCrsr = sal_False );
+ // -------------------- Uno - Schnittstellen ---------------------------
+
+ // -------------------- FeShell - Schnittstellen -----------------------
+ // !!!!! diese gehen immer davon aus, das ein Layout existiert !!!!
+ sal_Bool ChgAnchor( const SdrMarkList &rMrkList, int eAnchorId,
+ sal_Bool bSameOnly, sal_Bool bPosCorr );
+
+ void SetRowHeight( const SwCursor& rCursor, const SwFmtFrmSize &rNew );
+ void GetRowHeight( const SwCursor& rCursor, SwFmtFrmSize *& rpSz ) const;
+ sal_Bool BalanceRowHeight( const SwCursor& rCursor, sal_Bool bTstOnly = sal_True );
+ void SetRowBackground( const SwCursor& rCursor, const SvxBrushItem &rNew );
+ sal_Bool GetRowBackground( const SwCursor& rCursor, SvxBrushItem &rToFill ) const;
+ void SetTabBorders( const SwCursor& rCursor, const SfxItemSet& rSet );
+ void SetTabLineStyle( const SwCursor& rCursor,
+ const Color* pColor, sal_Bool bSetLine,
+ const SvxBorderLine* pBorderLine );
+ void GetTabBorders( const SwCursor& rCursor, SfxItemSet& rSet ) const;
+ void SetBoxAttr( const SwCursor& rCursor, const SfxPoolItem &rNew );
+ sal_Bool GetBoxBackground( const SwCursor& rCursor, SvxBrushItem &rToFill ) const;
+ void SetBoxAlign( const SwCursor& rCursor, sal_uInt16 nAlign );
+ sal_uInt16 GetBoxAlign( const SwCursor& rCursor ) const;
+ void AdjustCellWidth( const SwCursor& rCursor, sal_Bool bBalance = sal_False );
+
+ int Chainable( const SwFrmFmt &rSource, const SwFrmFmt &rDest );
+ int Chain( SwFrmFmt &rSource, const SwFrmFmt &rDest );
+ void Unchain( SwFrmFmt &rFmt );
+
+ // fuers Copy/Move aus der FrmShell
+ SdrObject* CloneSdrObj( const SdrObject&, sal_Bool bMoveWithinDoc = sal_False,
+ sal_Bool bInsInPage = sal_True );
+
+ //
+ // -------------------- FeShell - Schnittstellen Ende ------------------
+
+
+ // Schnittstelle fuer die TextInputDaten - ( fuer die Texteingabe
+ // von japanischen/chinesischen Zeichen)
+ SwExtTextInput* CreateExtTextInput( const SwPaM& rPam );
+ void DeleteExtTextInput( SwExtTextInput* pDel );
+ SwExtTextInput* GetExtTextInput( const SwNode& rNd,
+ xub_StrLen nCntntPos = STRING_NOTFOUND) const;
+
+ // Schnistelle fuer den Zugriff auf die AutoComplete-Liste
+ static SwAutoCompleteWord& GetAutoCompleteWords() { return *pACmpltWords; }
+
+ sal_Bool ContainsMSVBasic() const { return bContains_MSVBasic; }
+ void SetContainsMSVBasic( sal_Bool bFlag ) { bContains_MSVBasic = bFlag; }
+
+ // ------------------- Zugriff auf Dummy-Member --------------------
+
+ sal_Bool IsParaSpaceMax() const { return n8Dummy1 & DUMMY_PARASPACEMAX; }
+ sal_Bool IsParaSpaceMaxAtPages() const { return n8Dummy1 & DUMMY_PARASPACEMAX_AT_PAGES; }
+ void SetParaSpaceMax( sal_Bool bNew, sal_Bool bAtPages )
+ {
+ if( bNew ) n8Dummy1 |= DUMMY_PARASPACEMAX; else n8Dummy1 &= ~DUMMY_PARASPACEMAX;
+ if( bAtPages ) n8Dummy1 |= DUMMY_PARASPACEMAX_AT_PAGES; else n8Dummy1 &= ~DUMMY_PARASPACEMAX_AT_PAGES;
+ }
+
+ void SetULongDummy1( sal_uInt32 n ) { n32Dummy1 = n; }
+ void SetULongDummy2( sal_uInt32 n ) { n32Dummy2 = n; }
+ void SetByteDummy1( sal_Int8 n ) { n8Dummy1 = n; }
+ void SetByteDummy2( sal_Int8 n ) { n8Dummy2 = n; }
+ void SetStringDummy1( const String& r ) { sDummy1 = r; }
+ void SetStringDummy2( const String& r ) { sDummy2 = r; }
+ sal_uInt32 GetULongDummy1() const { return n32Dummy1; }
+ sal_uInt32 GetULongDummy2() const { return n32Dummy2; }
+ sal_Int8 GetByteDummy1() const { return n8Dummy1; }
+ sal_Int8 GetByteDummy2() const { return n8Dummy2; }
+ const String& GetStringDummy1() const { return sDummy1; }
+ const String& GetStringDummy2() const { return sDummy2; }
+
+ // call back for API wrapper
+ SwModify* GetUnoCallBack() const;
+};
+
+
+// Diese Methode wird im Dtor vom SwDoc gerufen und loescht den Cache
+// der Konturobjekte
+void ClrContourCache();
+
+
+//------------------ inline impl. ---------------------------------
+
+inline const SwTableNode* SwDoc::IsIdxInTbl( const SwNodeIndex& rIdx ) const
+{
+ return ((SwDoc*)this)->IsIdxInTbl( rIdx );
+}
+
+inline SvNumberFormatter* SwDoc::GetNumberFormatter( sal_Bool bCreate )
+{
+ if( bCreate && !pNumberFormatter )
+ _CreateNumberFormatter();
+ return pNumberFormatter;
+}
+
+inline const SvNumberFormatter* SwDoc::GetNumberFormatter( sal_Bool bCreate ) const
+{
+ return ((SwDoc*)this)->GetNumberFormatter( bCreate );
+}
+
+
+// ist das NodesArray das normale vom Doc? (nicht das UndoNds, .. )
+// Implementierung steht hier, weil man dazu Doc kennen muss!
+inline sal_Bool SwNodes::IsDocNodes() const
+{
+ return this == &pMyDoc->GetNodes();
+}
+
+
+
+#endif //_DOC_HXX
diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx
new file mode 100644
index 000000000000..d904c90b1cdc
--- /dev/null
+++ b/sw/inc/docary.hxx
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * $RCSfile: docary.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DOCARY_HXX
+#define _DOCARY_HXX
+
+class SwFieldType;
+class SwFrmFmt;
+class SwCharFmt;
+class SwBookmark;
+class SwTOXType;
+class SwUndo;
+class SwSectionFmt;
+class SwNumRule;
+class SwRedline;
+class SwUnoCrsr;
+class SwOLENode;
+
+#ifndef _SWTYPES_HXX //autogen
+#include <swtypes.hxx>
+#endif
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+typedef SwFieldType* SwFldTypePtr;
+#define GROW_FLDTYPES 16
+
+//PageDescriptor-Schnittstelle
+//typedef SwPageDesc * SwPageDescPtr;
+//SV_DECL_PTRARR_DEL(SwPageDescs, SwPageDescPtr,1,1);
+
+typedef SwFrmFmt* SwFrmFmtPtr;
+SV_DECL_PTRARR_DEL(SwFrmFmts,SwFrmFmtPtr,4,4)
+
+//Spezifische Frameformate (Rahmen, DrawObjecte)
+SV_DECL_PTRARR_DEL(SwSpzFrmFmts,SwFrmFmtPtr,0,4)
+
+typedef SwCharFmt* SwCharFmtPtr;
+SV_DECL_PTRARR_DEL(SwCharFmts,SwCharFmtPtr,4,4)
+
+SV_DECL_PTRARR_DEL( SwFldTypes, SwFldTypePtr, INIT_FLDTYPES, GROW_FLDTYPES )
+
+//Bookmarks (nach Dokumentpositionen sortiertes Array)
+typedef SwBookmark* SwBookmarkPtr;
+SV_DECL_PTRARR_SORT(SwBookmarks, SwBookmarkPtr,0,1)
+
+typedef SwTOXType* SwTOXTypePtr;
+SV_DECL_PTRARR_DEL( SwTOXTypes, SwTOXTypePtr, 0, 1 )
+
+// Undo
+#define INIT_UNDOS 5
+#define GROW_UNDOS 5
+// Das Array der Undo-History
+typedef SwUndo* SwUndoPtr;
+SV_DECL_PTRARR_DEL( SwUndos, SwUndoPtr, INIT_UNDOS, GROW_UNDOS )
+
+typedef SwSectionFmt* SwSectionFmtPtr;
+SV_DECL_PTRARR_DEL(SwSectionFmts,SwSectionFmtPtr,0,4)
+
+
+typedef SwNumRule* SwNumRulePtr;
+SV_DECL_PTRARR_DEL( SwNumRuleTbl, SwNumRulePtr, 0, 5 )
+
+typedef SwRedline* SwRedlinePtr;
+SV_DECL_PTRARR_SORT_DEL( _SwRedlineTbl, SwRedlinePtr, 0, 16 )
+
+class SwRedlineTbl : private _SwRedlineTbl
+{
+public:
+ SwRedlineTbl( BYTE nSize = 0, BYTE nG = 16 )
+ : _SwRedlineTbl( nSize, nG ) {}
+ ~SwRedlineTbl() {}
+
+ BOOL SavePtrInArr( SwRedlinePtr p ) { return _SwRedlineTbl::Insert( p ); }
+
+ BOOL Insert( SwRedlinePtr& p, BOOL bIns = TRUE );
+ BOOL Insert( SwRedlinePtr& p, USHORT& rInsPos, BOOL bIns = TRUE );
+ BOOL InsertWithValidRanges( SwRedlinePtr& p, USHORT* pInsPos = 0 );
+
+ void Remove( USHORT nP, USHORT nL = 1 );
+ void DeleteAndDestroy( USHORT nP, USHORT nL=1 );
+
+ // suche den naechsten oder vorherigen Redline mit dergleichen Seq.No
+ // Mit dem Lookahead kann die Suche eingeschraenkt werden. 0 oder
+ // USHRT_MAX suchen im gesamten Array.
+ USHORT FindNextOfSeqNo( USHORT nSttPos, USHORT nLookahead = 20 ) const;
+ USHORT FindPrevOfSeqNo( USHORT nSttPos, USHORT nLookahead = 20 ) const;
+ USHORT FindNextSeqNo( USHORT nSeqNo, USHORT nSttPos,
+ USHORT nLookahead = 20 ) const;
+ USHORT FindPrevSeqNo( USHORT nSeqNo, USHORT nSttPos,
+ USHORT nLookahead = 20 ) const;
+
+ _SwRedlineTbl::Count;
+ _SwRedlineTbl::operator[];
+ _SwRedlineTbl::GetObject;
+ _SwRedlineTbl::Seek_Entry;
+ _SwRedlineTbl::GetPos;
+};
+
+typedef SwUnoCrsr* SwUnoCrsrPtr;
+SV_DECL_PTRARR_DEL( SwUnoCrsrTbl, SwUnoCrsrPtr, 0, 4 )
+
+typedef SwOLENode* SwOLENodePtr;
+SV_DECL_PTRARR(SwOLENodes,SwOLENodePtr,16,16)
+
+
+#endif //_DOCARY_HXX
diff --git a/sw/inc/docfac.hxx b/sw/inc/docfac.hxx
new file mode 100644
index 000000000000..d73888366b63
--- /dev/null
+++ b/sw/inc/docfac.hxx
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * $RCSfile: docfac.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DOCFAC_HXX
+#define _DOCFAC_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class SwDoc;
+
+class SwDocFac
+{
+protected:
+ SwDoc* pDoc;
+
+public:
+ SwDocFac( SwDoc *pDoc = 0 );
+ ~SwDocFac();
+
+ // Das Dokument ist nach dem Aufruf von Read(..) angelegt
+ SwDoc* GetDoc();
+ ULONG Count() const;
+};
+
+#endif
+
diff --git a/sw/inc/docsh.hxx b/sw/inc/docsh.hxx
new file mode 100644
index 000000000000..9c6af7bd89b3
--- /dev/null
+++ b/sw/inc/docsh.hxx
@@ -0,0 +1,303 @@
+/*************************************************************************
+ *
+ * $RCSfile: docsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWDOCSH_HXX
+#define _SWDOCSH_HXX
+
+#ifndef _TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+#ifndef _SFX_OBJFAC_HXX //autogen
+#include <sfx2/docfac.hxx>
+#endif
+#ifndef _SFX_INTERNO_HXX //autogen
+#include <sfx2/interno.hxx>
+#endif
+
+#ifndef _SFX_OBJSH_HXX //autogen
+#include <sfx2/objsh.hxx>
+#endif
+#ifndef SW_SWDLL_HXX
+#include <swdll.hxx>
+#endif
+#include "shellid.hxx"
+
+class SwDoc;
+class Sw3Io;
+class SfxDocumentInfoDialog;
+class SfxStyleSheetBasePool;
+class FontList;
+class SwView;
+class SwWrtShell;
+class SwFEShell;
+class Reader;
+class SwReader;
+class SwCrsrShell;
+class SwSrcView;
+class SfxFileDialog;
+class PushButton;
+class FixedText;
+class SwPaM;
+
+class SwDocShell: public SfxObjectShell, public SfxInPlaceObject,
+ public SfxListener
+{
+ SwDoc* pDoc; // Document
+ Sw3Io* pIo; // Reader / Writer
+ SfxStyleSheetBasePool* pBasePool; // Durchreiche fuer Formate
+ FontList* pFontList; // aktuelle FontListe
+
+ // Nix geht ohne die WrtShell (historische Gruende)
+ // RuekwaertsPointer auf die View (historische Gruende)
+ // Dieser gilt solange bis im Activate ein neuer gesetzt wird
+ // oder dieser im Dtor der View geloescht wird
+ //
+ SwView* pView;
+ SwWrtShell* pWrtShell;
+
+ Timer aFinishedTimer; // Timer fuers ueberpriefen der
+ // Grafik-Links. Sind alle da,
+ // dann ist Doc voll. geladen
+
+ SvPersistRef xOLEChildList; // fuers RemoveOLEObjects
+
+ // Methoden fuer den Zugriff aufs Doc
+ void AddLink();
+ void RemoveLink();
+
+ // Hint abfangen fuer DocInfo
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // FileIO
+ virtual BOOL InitNew(SvStorage* pNewStor);
+ virtual BOOL Load(SvStorage* pStor);
+ virtual BOOL LoadFrom(SvStorage* pStor);
+ virtual BOOL ConvertFrom( SfxMedium &rMedium );
+ virtual void HandsOff();
+ virtual BOOL SaveAs(SvStorage * pNewStor );
+ virtual BOOL ConvertTo(SfxMedium &rMedium );
+ virtual BOOL SaveCompleted(SvStorage * pNewStor );
+ virtual USHORT PrepareClose( BOOL bUI = TRUE, BOOL bForBrowsing = FALSE );
+
+ // DocInfo dem Doc melden
+ //
+ virtual SfxDocumentInfoDialog* CreateDocumentInfoDialog(
+ Window *pParent, const SfxItemSet &);
+ // Template-Btn
+ Window* AddTemplateBtn(SfxFileDialog* pFileDlg);
+
+ // OLE-Geraffel
+ virtual void Draw( OutputDevice*, const JobSetup&, USHORT);
+
+ // Methoden fuer StyleSheets
+ USHORT Edit( const String &rName, const String& rParent, USHORT nFamily,
+ USHORT nMask, BOOL bNew,
+ BOOL bColumn = FALSE,
+ SwWrtShell* pActShell = 0,
+ BOOL bBasic = FALSE );
+ USHORT Delete(const String &rName, USHORT nFamily);
+ USHORT ApplyStyles(const String &rName, USHORT nFamily, SwWrtShell* pShell = 0,
+ USHORT nMode = 0 );
+ USHORT DoWaterCan( const String &rName, USHORT nFamily);
+ USHORT UpdateStyle(const String &rName, USHORT nFamily, SwWrtShell* pShell = 0);
+ USHORT MakeByExample(const String &rName,
+ USHORT nFamily, USHORT nMask, SwWrtShell* pShell = 0);
+
+ void InitDraw();
+ void SubInitNew(); // fuer InitNew und HtmlSourceModus
+ inline void SetWrtShell(SwWrtShell* pShell)
+ { pWrtShell = pShell; }
+
+ void RemoveOLEObjects();
+
+ DECL_STATIC_LINK( SwDocShell, IsLoadFinished, void* );
+ DECL_LINK( SelTemplateHdl, PushButton * );
+
+public:
+
+ // aber selbst implementieren
+ SFX_DECL_INTERFACE(SW_DOCSHELL);
+ SFX_DECL_OBJECTFACTORY_DLL(SwDocShell, SW_DLL());
+ TYPEINFO();
+
+ static SfxInterface *_GetInterface() { return _GetInterfaceImpl(); }
+
+ //Das Doc wird fuer SO-Datenaustausch benoetigt!
+ SwDocShell(SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED);
+ SwDocShell( SwDoc *pDoc, SfxObjectCreateMode eMode = SFX_CREATE_MODE_STANDARD );
+ ~SwDocShell();
+
+ // OLE 2.0-Benachrichtigung
+ DECL_LINK( Ole2ModifiedHdl, void * );
+
+ // OLE-Geraffel
+ virtual void SetVisArea( const Rectangle &rRect );
+ virtual Rectangle GetVisArea( USHORT nAspect ) const;
+ virtual Printer *GetDocumentPrinter();
+ virtual void OnDocumentPrinterChanged( Printer * pNewPrinter );
+ virtual ULONG GetMiscStatus() const;
+
+ virtual void PrepareReload();
+ virtual void SetModified( BOOL = TRUE );
+
+ // Dispatcher
+ void Execute(SfxRequest &);
+ void ExecStyleSheet(SfxRequest&);
+ void ExecDB(SfxRequest&);
+
+ void GetState(SfxItemSet &);
+ void StateAlways(SfxItemSet &);
+ void StateStyleSheet(SfxItemSet&, SwWrtShell* pSh = 0 );
+
+ // Doc rausreichen aber VORSICHT
+ inline SwDoc* GetDoc() { return pDoc; }
+ void UpdateFontList();
+ void UpdateChildWindows();
+
+ // DocumentInfo neu setzen
+ BOOL SetDocumentInfo(const SfxDocumentInfo& rInfo);
+
+ // globaler IO
+ virtual BOOL Save();
+
+ // fuer VorlagenPI
+ virtual SfxStyleSheetBasePool* GetStyleSheetPool();
+
+ // Fuer Organizer
+ virtual BOOL Insert(SfxObjectShell &rSource,
+ USHORT nSourceIdx1,
+ USHORT nSourceIdx2,
+ USHORT nSourceIdx3,
+ USHORT& nIdx1,
+ USHORT& nIdx2,
+ USHORT& nIdx3,
+ USHORT& nRemovedIdx);
+
+ virtual BOOL Remove(USHORT nIdx1,
+ USHORT nIdx2 = INDEX_IGNORE,
+ USHORT nIdx3 = INDEX_IGNORE);
+
+ virtual Bitmap GetStyleFamilyBitmap( SfxStyleFamily eFamily );
+
+ // View setzen fuer Aktionen ueber Shell
+ void SetView(SwView* pVw);
+ const SwView *GetView() const { return pView; }
+
+ // Zugriff auf die zur SwView gehoerige SwWrtShell
+ SwWrtShell *GetWrtShell() { return pWrtShell; }
+ const SwWrtShell *GetWrtShell() const { return pWrtShell; }
+
+ // fuer die Core - die kennt die DocShell aber keine WrtShell!
+ SwFEShell *GetFEShell();
+ const SwFEShell *GetFEShell() const
+ { return ((SwDocShell*)this)->GetFEShell(); }
+
+
+ // Fuer Einfuegen Dokument
+ Reader* StartConvertFrom(SfxMedium& rMedium, SwReader** ppRdr,
+ SwCrsrShell* pCrsrSh = 0, SwPaM* pPaM = 0);
+
+ // Anforderung der pIo-Struktur fuer den Zugriff auf Substorages
+ // und Streams
+ Sw3Io* GetIoSystem() { return pIo; }
+
+ virtual long DdeGetData( const String& rItem, SvData& rData );
+ virtual long DdeSetData( const String& rItem, const SvData& rData );
+ virtual SvPseudoObject* DdeCreateHotLink( const String& rItem );
+ virtual void FillClass( SvGlobalName * pClassName,
+ ULONG * pClipFormat,
+ String * pAppName,
+ String * pLongUserName,
+ String * pUserName,
+ long nVersion = SOFFICE_FILEFORMAT_NOW ) const;
+ virtual void FillRegInfo( SvEmbeddedRegistryInfo * );
+
+ virtual SvDataMemberObjectRef CreateSnapshot();
+
+ virtual void LoadStyles( SfxObjectShell& rSource );
+
+ // Seitenvorlagedialog anzeigen, ggf. auf Spaltenpage
+ void FormatPage( const String& rPage,
+ BOOL bColumn = FALSE,
+ SwWrtShell* pActShell = 0 );
+
+ // Timer starten fuers ueberpruefen der Grafik-Links. Sind alle
+ // vollstaendig geladen, dann ist das Doc fertig
+ void StartLoadFinishedTimer();
+
+ // eine Uebertragung wird abgebrochen (wird aus dem SFX gerufen)
+ virtual void CancelTransfers();
+
+ // Doc aus Html-Source neu laden
+ void ReloadFromHtml( const String& rStreamName, SwSrcView* pSrcView );
+
+ // embedded alle lokalen Links (Bereiche/Grafiken)
+ BOOL EmbedAllLinks();
+
+ //Activate wait cursor for all windows of this document
+ //Optionally all dispatcher could be Locked
+ //Usually locking should be done using the class: SwWaitObject!
+ void EnterWait( BOOL bLockDispatcher );
+ void LeaveWait( BOOL bLockDispatcher );
+
+ void ToggleBrowserMode(BOOL bOn, SwView* pView = 0);
+};
+
+#endif
diff --git a/sw/inc/docstat.hxx b/sw/inc/docstat.hxx
new file mode 100644
index 000000000000..4581e70d9aea
--- /dev/null
+++ b/sw/inc/docstat.hxx
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * $RCSfile: docstat.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DOCSTAT_HXX
+#define _DOCSTAT_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+///////////////////////////////////////////////////////////////////////////
+// PRODUCT: struct SwInternStat ist nur fuer CORE Interne Statistics und
+// hat nichts in einer ProductVersion zu suchen.
+///////////////////////////////////////////////////////////////////////////
+
+struct SwInternStat;
+
+struct SwDocStat
+{
+ USHORT nTbl;
+ USHORT nGrf;
+ USHORT nOLE;
+ ULONG nPage;
+ ULONG nPara;
+ ULONG nWord;
+ ULONG nChar;
+ BOOL bModified;
+ SwInternStat* pInternStat;
+ SwDocStat();
+ void Reset();
+};
+
+#endif
diff --git a/sw/inc/docstyle.hxx b/sw/inc/docstyle.hxx
new file mode 100644
index 000000000000..709dda4bcc7b
--- /dev/null
+++ b/sw/inc/docstyle.hxx
@@ -0,0 +1,261 @@
+/*************************************************************************
+ *
+ * $RCSfile: docstyle.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DOCSTYLE_HXX
+#define _DOCSTYLE_HXX
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+
+#ifndef _SFXSTYLE_HXX //autogen
+#include <svtools/style.hxx>
+#endif
+
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+
+class SwDoc;
+class SwDocStyleSheetPool;
+class SwPageDesc;
+class SwCharFmt;
+class SwTxtFmtColl;
+class SwFrmFmt;
+class SwNumRule;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Lokale Hilfsklasse
+ --------------------------------------------------------------------*/
+class SwPoolFmtList : public SvStringsDtor
+{
+public:
+ SwPoolFmtList() {}
+ void Append( char cChar, const String& rStr );
+ void Erase();
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: temp. StyleSheet
+ --------------------------------------------------------------------*/
+class SwDocStyleSheet : public SfxStyleSheetBase
+{
+ friend class SwDocStyleSheetPool;
+ friend class SwStyleSheetIterator;
+
+ SwCharFmt* pCharFmt;
+ SwTxtFmtColl* pColl;
+ SwFrmFmt* pFrmFmt;
+ const SwPageDesc* pDesc;
+ const SwNumRule* pNumRule;
+
+ SwDoc& rDoc;
+ SfxItemSet aCoreSet;
+
+ BOOL bPhysical;
+
+
+ // leere Huelse zum richtigen StyleSheet (Core) machen
+ void Create();
+
+ // den StyleSheet mit Daten fuellen
+ enum FillStyleType {
+ FillOnlyName,
+ FillAllInfo,
+ FillPhysical
+ };
+ BOOL FillStyleSheet( FillStyleType eFType );
+
+
+public:
+ SwDocStyleSheet( SwDoc& rDoc,
+ const String& rName,
+ SwDocStyleSheetPool& rPool,
+ SfxStyleFamily eFam,
+ USHORT nMask);
+
+ SwDocStyleSheet( const SwDocStyleSheet& );
+ virtual ~SwDocStyleSheet();
+
+ void Reset();
+
+ void SetMask(USHORT nMsk) { nMask = nMsk; }
+ void SetFamily(SfxStyleFamily eFam) { nFamily = eFam; }
+
+ BOOL IsPhysical() const { return bPhysical; }
+ void SetPhysical(BOOL bPhys);
+
+ void SetItemSet(const SfxItemSet& rSet);
+
+ virtual SfxItemSet& GetItemSet();
+ virtual const String& GetParent() const;
+ virtual const String& GetFollow() const;
+
+ virtual ULONG GetHelpId( String& rFile );
+ virtual void SetHelpId( const String& r, ULONG nId );
+
+ // Vorbelegen der member ohne physikalischen Zugriff
+ // wird vom StyleSheetPool benutzt
+ //
+ void PresetName(const String& rName) { aName = rName; }
+ void PresetNameAndFamily(const String& rName);
+ void PresetParent(const String& rName){ aParent = rName; }
+ void PresetFollow(const String& rName){ aFollow = rName; }
+
+ virtual BOOL SetName( const String& rStr);
+ virtual BOOL SetParent( const String& rStr);
+ virtual BOOL SetFollow( const String& rStr);
+
+ virtual BOOL HasFollowSupport() const;
+ virtual BOOL HasParentSupport() const;
+ virtual BOOL HasClearParentSupport() const;
+ virtual String GetDescription();
+ virtual String GetDescription(SfxMapUnit eUnit);
+
+ SwCharFmt* GetCharFmt();
+ SwTxtFmtColl* GetCollection();
+ SwFrmFmt* GetFrmFmt();
+ const SwPageDesc* GetPageDesc();
+ const SwNumRule* GetNumRule();
+ void SetNumRule(const SwNumRule& rRule);
+
+ virtual BOOL IsUsed() const;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Iterator fuer den Pool
+ --------------------------------------------------------------------*/
+
+class SwStyleSheetIterator : public SfxStyleSheetIterator, public SfxListener
+{
+ SwDocStyleSheet aIterSheet;
+ SwDocStyleSheet aStyleSheet;
+ SwPoolFmtList aLst;
+ USHORT nLastPos;
+ BOOL bFirstCalled;
+
+ void AppendStyleList(const SvStringsDtor& rLst,
+ BOOL bUsed,
+ USHORT nSection,
+ char cType);
+
+public:
+ SwStyleSheetIterator( SwDocStyleSheetPool* pBase,
+ SfxStyleFamily eFam, USHORT n=0xFFFF );
+ virtual ~SwStyleSheetIterator();
+
+ virtual USHORT Count();
+ virtual SfxStyleSheetBase *operator[](USHORT nIdx);
+ virtual SfxStyleSheetBase* First();
+ virtual SfxStyleSheetBase* Next();
+#ifndef ENABLEUNICODE
+ virtual SfxStyleSheetBase* Find(const String& rStr);
+#else
+ virtual SfxStyleSheetBase* Find(const UniString& rStr);
+#endif
+
+ virtual void Notify( SfxBroadcaster&, const SfxHint& );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Pool fuer
+ --------------------------------------------------------------------*/
+
+class SwDocStyleSheetPool : public SfxStyleSheetBasePool
+{
+ SwDocStyleSheet aStyleSheet;
+ SwDoc& rDoc;
+ BOOL bOrganizer : 1; // TRUE: fuer den Organizer
+
+
+ virtual SfxStyleSheetBase* Create( const String&, SfxStyleFamily, USHORT nMask);
+ virtual SfxStyleSheetBase* Create( const SfxStyleSheetBase& );
+public:
+ SwDocStyleSheetPool( SwDoc&, BOOL bOrganizer = FALSE );
+ virtual ~SwDocStyleSheetPool();
+
+ virtual void Replace( SfxStyleSheetBase& rSource,
+ SfxStyleSheetBase& rTarget );
+ virtual SfxStyleSheetBase& Make(const String&, SfxStyleFamily, USHORT nMask, USHORT nPos = 0xffff);
+ virtual SfxStyleSheetBase* Find( const String&, SfxStyleFamily eFam,
+ USHORT n=0xFFFF );
+ virtual BOOL SetParent( SfxStyleFamily eFam, const String &rStyle,
+ const String &rParent );
+
+ virtual void Erase( SfxStyleSheetBase* pStyle);
+ void SetItemSet(const SfxItemSet& rSet) { aStyleSheet.SetItemSet(rSet); }
+
+ void SetOrganizerMode( BOOL bMode ) { bOrganizer = bMode; }
+ BOOL IsOrganizerMode() const { return bOrganizer; }
+
+ virtual SfxStyleSheetIterator* CreateIterator( SfxStyleFamily,
+ USHORT nMask );
+
+ SwDoc& GetDoc() const { return rDoc; }
+
+ //Fuer die daemlicheren Compiler
+private:
+ SwDocStyleSheetPool( const SwDocStyleSheetPool& );
+};
+
+
+#endif
diff --git a/sw/inc/docufld.hxx b/sw/inc/docufld.hxx
new file mode 100644
index 000000000000..516ebb23a923
--- /dev/null
+++ b/sw/inc/docufld.hxx
@@ -0,0 +1,818 @@
+/*************************************************************************
+ *
+ * $RCSfile: docufld.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DOCUFLD_HXX
+#define _DOCUFLD_HXX
+
+#ifndef _DATE_HXX //autogen
+#include <tools/date.hxx>
+#endif
+
+#include "fldbas.hxx"
+#include "numrule.hxx"
+
+class _SetGetExpFlds;
+class SwTxtFld;
+class SwFrm;
+
+enum SwAuthorFormat
+{
+ AF_BEGIN,
+ AF_NAME = AF_BEGIN,
+ AF_SHORTCUT,
+ AF_END,
+ AF_FIXED = 0x8000
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Untertyp der Dokumentstatistik
+ --------------------------------------------------------------------*/
+
+enum SwDocStatSubType
+{
+ DS_BEGIN,
+ DS_PAGE = DS_BEGIN,
+ DS_PARA,
+ DS_WORD,
+ DS_CHAR,
+ DS_TBL,
+ DS_GRF,
+ DS_OLE,
+ DS_END
+};
+
+enum SwDocInfoSubType
+{
+ DI_SUBTYPE_BEGIN,
+ DI_TITEL = DI_SUBTYPE_BEGIN,
+ DI_THEMA,
+ DI_KEYS,
+ DI_COMMENT,
+ DI_INFO1,
+ DI_INFO2,
+ DI_INFO3,
+ DI_INFO4,
+ DI_CREATE,
+ DI_CHANGE,
+ DI_PRINT,
+ DI_DOCNO,
+ DI_EDIT,
+ DI_SUBTYPE_END
+};
+
+enum SwDocInfoExtSubType
+{
+ DI_SUB_AUTHOR = 0x0100,
+ DI_SUB_TIME = 0x0200,
+ DI_SUB_DATE = 0x0300,
+ DI_SUB_FIXED = 0x1000
+};
+
+enum RegInfoFormat // Nur noch zum laden alter Dokumente!!!
+{
+ RF_AUTHOR,
+ RF_TIME,
+ RF_DATE,
+ RF_ALL
+};
+
+enum SwPageNumSubType
+{
+ PG_RANDOM,
+ PG_NEXT,
+ PG_PREV
+};
+
+enum SwExtUserSubType
+{
+ EU_COMPANY /*EU_FIRMA*/,
+ EU_FIRSTNAME /*EU_VORNAME*/,
+ EU_NAME /*EU_NAME*/,
+ EU_SHORTCUT /*EU_ABK*/,
+ EU_STREET /*EU_STRASSE*/,
+ EU_COUNTRY /*EU_LAND*/,
+ EU_ZIP /*EU_PLZ*/,
+ EU_CITY /*EU_ORT*/,
+ EU_TITLE /*EU_TITEL*/,
+ EU_POSITION /*EU_POS*/,
+ EU_PHONE_PRIVATE /*EU_TELPRIV*/,
+ EU_PHONE_COMPANY /*EU_TELFIRMA*/,
+ EU_FAX,
+ EU_EMAIL,
+ EU_STATE,
+ EU_FATHERSNAME,
+ EU_APARTMENT
+};
+
+enum SwJumpEditFormat
+{
+ JE_FMT_TEXT,
+ JE_FMT_TABLE,
+ JE_FMT_FRAME,
+ JE_FMT_GRAPHIC,
+ JE_FMT_OLE
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Seitennummer
+ --------------------------------------------------------------------*/
+
+class SwPageNumberFieldType : public SwFieldType
+{
+ SvxExtNumType eNumFormat;
+ USHORT nNum, nMax;
+ BOOL bVirtuell;
+
+public:
+ SwPageNumberFieldType();
+
+ String& Expand( ULONG nFmt, short nOff, const String&, String& rRet ) const;
+ void ChangeExpansion( SwDoc* pDoc, USHORT nNum, USHORT nMax,
+ BOOL bVirtPageNum, const SvxExtNumType* pNumFmt = 0 );
+ inline SvxExtNumType GetNumFormat() const { return eNumFormat; }
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Seitennummerierung
+ --------------------------------------------------------------------*/
+
+class SwPageNumberField : public SwField
+{
+ String sUserStr;
+ USHORT nSubType;
+ short nOffset;
+
+public:
+ SwPageNumberField(SwPageNumberFieldType*, USHORT nSub = PG_RANDOM,
+ ULONG nFmt = 0, short nOff = 0);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+
+ virtual USHORT GetSubType() const;
+ // virtual void SetSubType(USHORT nSub); // OM: entfernt, da unbenoetigt und gefaehrlich
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+
+ const String& GetUserString() const { return sUserStr; }
+ void SetUserString( const String& rS ) { sUserStr = rS; }
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Autoren
+ --------------------------------------------------------------------*/
+
+class SwAuthorFieldType : public SwFieldType
+{
+ SwDoc *pDoc;
+public:
+ SwAuthorFieldType(SwDoc*);
+
+ String Expand(ULONG) const;
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: AutorenFeld
+ --------------------------------------------------------------------*/
+
+class SwAuthorField : public SwField
+{
+ String aContent;
+
+public:
+ SwAuthorField(SwAuthorFieldType*, ULONG nFmt = 0);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ inline void SetExpansion(const String& rStr) { aContent = rStr; }
+ inline const String& GetContent() const { return aContent; }
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Filename
+ --------------------------------------------------------------------*/
+
+class SwFileNameFieldType : public SwFieldType
+{
+ SwDoc *pDoc;
+public:
+ SwFileNameFieldType(SwDoc*);
+
+ String Expand(ULONG) const;
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: FileName
+ --------------------------------------------------------------------*/
+
+class SwFileNameField : public SwField
+{
+ String aContent;
+
+public:
+ SwFileNameField(SwFileNameFieldType*, ULONG nFmt = 0);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ inline void SetExpansion(const String& rStr) { aContent = rStr; }
+ inline const String& GetContent() const { return aContent; }
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: TemplName
+ --------------------------------------------------------------------*/
+
+class SwTemplNameFieldType : public SwFieldType
+{
+ SwDoc *pDoc;
+public:
+ SwTemplNameFieldType(SwDoc*);
+
+ String Expand(ULONG) const;
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: TemplName
+ --------------------------------------------------------------------*/
+
+class SwTemplNameField : public SwField
+{
+public:
+ SwTemplNameField(SwTemplNameFieldType*, ULONG nFmt = 0);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Docstatistik
+ --------------------------------------------------------------------*/
+
+class SwDocStatFieldType : public SwFieldType
+{
+ SwDoc* pDoc;
+ SvxExtNumType eNumFormat;
+
+public:
+ SwDocStatFieldType(SwDoc*);
+ String Expand(USHORT nSubType, ULONG nFmt) const;
+ virtual SwFieldType* Copy() const;
+
+ inline SvxExtNumType GetNumFormat() const { return eNumFormat; }
+ inline void SetNumFormat( SvxExtNumType eFmt ) { eNumFormat = eFmt; }
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Dokumentstatistik
+ --------------------------------------------------------------------*/
+
+class SwDocStatField : public SwField
+{
+ USHORT nSubType;
+
+public:
+ SwDocStatField( SwDocStatFieldType*,
+ USHORT nSubType = 0, ULONG nFmt = 0);
+
+ void ChangeExpansion( const SwFrm* pFrm );
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ virtual USHORT GetSubType() const;
+ virtual void SetSubType(USHORT nSub);
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: versteckter Text
+ --------------------------------------------------------------------*/
+
+class SwHiddenTxtFieldType : public SwFieldType
+{
+ BOOL bHidden;
+public:
+ SwHiddenTxtFieldType(BOOL bSetHidden = TRUE);
+
+ virtual SwFieldType* Copy() const;
+
+ void SetHiddenFlag( BOOL bSetHidden = TRUE );
+ inline BOOL GetHiddenFlag() const { return bHidden; }
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Versteckter Text
+ --------------------------------------------------------------------*/
+
+class SwHiddenTxtField : public SwField
+{
+ String aTRUETxt; // Text wenn Bedingung TRUE
+ String aFALSETxt; // Wenn Bedingung falsch
+ String aContent; // Ausgewerteter DB-Text
+
+ String aCond; // Bedingung
+ USHORT nSubType;
+
+ BOOL bCanToggle : 1; // kann das Feld einzeln getoggelt werden?
+ BOOL bIsHidden : 1; // ist es nicht sichtbar?
+ BOOL bValid : 1; // DB-Feld evaluiert?
+
+public:
+ SwHiddenTxtField( SwHiddenTxtFieldType*,
+ BOOL bConditional,
+ const String& rCond,
+ const String& rTxt,
+ BOOL bHidden = FALSE,
+ USHORT nSubType = TYP_HIDDENTXTFLD);
+
+ SwHiddenTxtField( SwHiddenTxtFieldType*,
+ const String& rCond,
+ const String& rTrue,
+ const String& rFalse,
+ USHORT nSubType = TYP_HIDDENTXTFLD);
+
+ virtual String GetCntnt(BOOL bName = FALSE) const;
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ void Evaluate(SwDoc*);
+
+ inline void SetValue(BOOL bHidden) { bIsHidden = bHidden; }
+ inline BOOL GetValue() const { return bIsHidden; }
+ inline BOOL IsConditional() const { return bCanToggle; }
+ inline BOOL IsValid() const { return bValid; }
+ String GetColumnName(const String& rName);
+ String GetDBName(const String& rName, SwDoc *pDoc);
+
+ // Condition
+ virtual void SetPar1(const String& rStr);
+ virtual const String& GetPar1() const;
+
+ // True/False - String
+ virtual void SetPar2(const String& rStr);
+ virtual String GetPar2() const;
+
+
+ virtual USHORT GetSubType() const;
+ // virtual void SetSubType(USHORT nSub); // OM: entfernt, da unbenoetigt und gefaehrlich
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Feld das zu einer Leerzeile (ohne Hoehe) expandiert
+ --------------------------------------------------------------------*/
+
+class SwHiddenParaFieldType : public SwFieldType
+{
+public:
+ SwHiddenParaFieldType();
+
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Versteckter Absatz
+ --------------------------------------------------------------------*/
+
+class SwHiddenParaField : public SwField
+{
+ String aCond;
+ BOOL bIsHidden:1;
+public:
+ // Direkte Eingabe alten Wert loeschen
+ SwHiddenParaField(SwHiddenParaFieldType*, const String& rCond);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ void SetHidden(BOOL bHidden) { bIsHidden = bHidden; }
+ BOOL IsHidden() const { return bIsHidden; }
+
+ // Bedingung erfragen/setzen
+ virtual const String& GetPar1() const;
+ virtual void SetPar1(const String& rStr);
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Macro ausfuehren
+ --------------------------------------------------------------------*/
+
+class SwMacroFieldType : public SwFieldType
+{
+ SwDoc* pDoc;
+
+public:
+ SwMacroFieldType(SwDoc*);
+
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Macrofeld
+ --------------------------------------------------------------------*/
+
+class SwMacroField : public SwField
+{
+ String aMacro;
+ String aText;
+
+public:
+ // Direkte Eingabe alten Wert loeschen
+ SwMacroField( SwMacroFieldType*, const String& rLibAndName,
+ const String& rTxt);
+
+ inline const String& GetMacro() const { return aMacro; }
+ String GetLibName() const;
+ String GetMacroName() const;
+
+ virtual String GetCntnt(BOOL bName = FALSE) const;
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ // Library und FileName
+ virtual const String& GetPar1() const;
+ virtual void SetPar1(const String& rStr);
+
+ // Macrotext
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: PostIts
+ --------------------------------------------------------------------*/
+
+class SwPostItFieldType : public SwFieldType
+{
+public:
+ SwPostItFieldType();
+
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: PostIt
+ --------------------------------------------------------------------*/
+
+class SwPostItField : public SwField
+{
+ String sTxt; // die Anmerkung
+ String sAuthor; // der Author
+ Date aDate; // Datum ??/Zeit?? der Anmerkung
+
+public:
+ SwPostItField( SwPostItFieldType*,
+ const String& rAuthor, const String& rTxt, const Date& rDate);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ inline const Date& GetDate() const { return aDate; }
+ inline void SetDate( const Date& rDate ) { aDate = rDate;}
+
+ // Author
+ virtual const String& GetPar1() const;
+ virtual void SetPar1(const String& rStr);
+
+ // Text
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+ const String& GetTxt() const { return sTxt; }
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: DokumentInfo
+ --------------------------------------------------------------------*/
+
+class SwDocInfoFieldType : public SwValueFieldType
+{
+public:
+ SwDocInfoFieldType(SwDoc* pDc);
+
+ String Expand(USHORT nSubType, ULONG nFormat, USHORT nLang) const;
+ virtual SwFieldType* Copy() const;
+};
+
+class SwDocInfoField : public SwValueField
+{
+ USHORT nSubType;
+ String aContent;
+
+public:
+ SwDocInfoField(SwDocInfoFieldType*, USHORT nSub, ULONG nFmt=0);
+
+ virtual void SetSubType(USHORT);
+ virtual USHORT GetSubType() const;
+ virtual void SetLanguage(USHORT nLng);
+ virtual String Expand() const;
+ virtual String GetCntnt(BOOL bName = FALSE) const;
+ virtual SwField* Copy() const;
+
+ inline void SetExpansion(const String& rStr) { aContent = rStr; }
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: erweiterte Benutzereinstellung
+ --------------------------------------------------------------------*/
+
+
+class SwExtUserFieldType : public SwFieldType
+{
+ String aData;
+public:
+ SwExtUserFieldType();
+
+ inline const String& GetData() const { return aData; }
+ inline void SetData(const String& rStr) { aData = rStr; }
+
+ String Expand(USHORT nSubType, ULONG nFormat) const;
+ virtual SwFieldType* Copy() const;
+};
+
+class SwExtUserField : public SwField
+{
+ String aContent;
+ USHORT nType;
+
+public:
+ SwExtUserField(SwExtUserFieldType*, USHORT nSub, ULONG nFmt=0);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ virtual USHORT GetSubType() const;
+ virtual void SetSubType(USHORT nSub);
+
+ inline void SetExpansion(const String& rStr) { aContent = rStr; }
+ inline const String& GetContent() const { return aContent; }
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Relatives Seitennummern - Feld
+ --------------------------------------------------------------------*/
+
+class SwRefPageSetFieldType : public SwFieldType
+{
+public:
+ SwRefPageSetFieldType();
+
+ virtual SwFieldType* Copy() const;
+ // ueberlagert, weil es nichts zum Updaten gibt!
+ virtual void Modify( SfxPoolItem *, SfxPoolItem * );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Relative Seitennummerierung
+ --------------------------------------------------------------------*/
+
+class SwRefPageSetField : public SwField
+{
+ short nOffset;
+ BOOL bOn;
+
+public:
+ SwRefPageSetField( SwRefPageSetFieldType*, short nOff = 0,
+ BOOL bOn = TRUE );
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+
+ BOOL IsOn() const { return bOn; }
+ void SetOn( BOOL bFlag ) { bOn = bFlag; }
+
+ short GetOffset() const { return nOffset; }
+ void SetOffset( short nOff ) { nOffset = nOff; }
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: relatives Seitennummern - Abfrage Feld
+ --------------------------------------------------------------------*/
+
+class SwRefPageGetFieldType : public SwFieldType
+{
+ SwDoc* pDoc;
+ SvxExtNumType eNumFormat;
+
+ void UpdateField( SwTxtFld* pTxtFld, _SetGetExpFlds& rSetList );
+
+public:
+ SwRefPageGetFieldType( SwDoc* pDoc );
+ virtual SwFieldType* Copy() const;
+
+ // ueberlagert, um alle RefPageGet-Felder zu updaten
+ virtual void Modify( SfxPoolItem *, SfxPoolItem * );
+ USHORT MakeSetList( _SetGetExpFlds& rTmpLst );
+
+ SvxExtNumType GetNumFormat() const { return eNumFormat; }
+ void SetNumFormat( SvxExtNumType eFmt ) { eNumFormat = eFmt; }
+ SwDoc* GetDoc() const { return pDoc; }
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Relative Seitennummerierung Abfragen
+ --------------------------------------------------------------------*/
+
+class SwRefPageGetField : public SwField
+{
+ String sTxt;
+public:
+ SwRefPageGetField( SwRefPageGetFieldType*, ULONG nFmt );
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ void SetText( const String& rTxt ) { sTxt = rTxt; }
+ const String& GetText() const { return sTxt; }
+
+ void ChangeExpansion( const SwFrm* pFrm, const SwTxtFld* pFld );
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Feld zum Anspringen und Editieren
+ --------------------------------------------------------------------*/
+
+class SwJumpEditFieldType : public SwFieldType
+{
+ SwDoc* pDoc;
+ SwDepend aDep;
+
+public:
+ SwJumpEditFieldType( SwDoc* pDoc );
+ virtual SwFieldType* Copy() const;
+
+ SwDoc* GetDoc() { return pDoc; }
+ const SwDoc* GetDoc() const { return pDoc; }
+
+ SwCharFmt* GetCharFmt();
+};
+
+class SwJumpEditField : public SwField
+{
+ String sTxt, sHelp;
+public:
+ SwJumpEditField( SwJumpEditFieldType*, ULONG nFormat,
+ const String& sText, const String& sHelp );
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ // Platzhalter-Text
+ virtual const String& GetPar1() const;
+ virtual void SetPar1(const String& rStr);
+
+ // HinweisText
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+
+ SwCharFmt* GetCharFmt() const
+ { return ((SwJumpEditFieldType*)GetTyp())->GetCharFmt(); }
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: PostIts
+ --------------------------------------------------------------------*/
+
+class SwScriptFieldType : public SwFieldType
+{
+ SwDoc* pDoc;
+public:
+ SwScriptFieldType( SwDoc* pDoc );
+
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: PostIt
+ --------------------------------------------------------------------*/
+
+class SwScriptField : public SwField
+{
+ String sType; // Type von Code (Java/VBScript/...)
+ String sCode; // der Code als Text
+ // der Code als JavaCode ?
+
+ BOOL bCodeURL; // Code enthaelt URL eines Scripts
+
+public:
+ SwScriptField( SwScriptFieldType*, const String& rType,
+ const String& rCode, BOOL bURL=FALSE );
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ // Type
+ virtual const String& GetPar1() const;
+ virtual void SetPar1(const String& rStr);
+ // Text
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+ const String& GetCode() const { return sCode; }
+
+ BOOL IsCodeURL() const { return bCodeURL; }
+ void SetCodeURL( BOOL bURL ) { bCodeURL = bURL; }
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+
+#endif // _DOCUFLD_HXX
diff --git a/sw/inc/dpage.hxx b/sw/inc/dpage.hxx
new file mode 100644
index 000000000000..e865bacf36dd
--- /dev/null
+++ b/sw/inc/dpage.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: dpage.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DPAGE_HXX
+#define _DPAGE_HXX
+
+#ifndef _FM_FMPAGE_HXX
+#include <svx/fmpage.hxx>
+#endif
+
+#ifndef _SVDOBJ_HXX
+#include <svx/svdobj.hxx>
+#endif
+
+class SdrPageGridFrameList;
+class SwDrawDocument;
+
+class SwDPage : public FmFormPage, public SdrObjUserCall
+{
+ SdrPageGridFrameList *pGridLst;
+
+public:
+ SwDPage(SwDrawDocument& rNewModel, BOOL bMasterPage=FALSE);
+ ~SwDPage();
+
+ virtual Point GetOffset() const;
+ virtual SdrObject* ReplaceObject( SdrObject* pNewObj, ULONG nObjNum );
+
+ virtual void RequestBasic();
+
+ virtual const SdrPageGridFrameList* GetGridFrameList(const SdrPageView* pPV,
+ const Rectangle *pRect) const;
+
+ virtual String GetLinkData( const String& rLinkName );
+ virtual void SetLinkData( const String& rLinkName, const String& rLinkData );
+
+ BOOL RequestHelp( Window* pWindow, SdrView* pView, const HelpEvent& rEvt );
+};
+
+#endif // _DPAGE_HXX
+
+
+
diff --git a/sw/inc/edglbldc.hxx b/sw/inc/edglbldc.hxx
new file mode 100644
index 000000000000..9b1047bd22e0
--- /dev/null
+++ b/sw/inc/edglbldc.hxx
@@ -0,0 +1,113 @@
+/*************************************************************************
+ *
+ * $RCSfile: edglbldc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _EDGLBLDC_HXX
+#define _EDGLBLDC_HXX
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+class SwSection;
+class SwTOXBase;
+class SwTOXBaseSection;
+
+enum GlobalDocContentType {
+ GLBLDOC_UNKNOWN,
+ GLBLDOC_TOXBASE,
+ GLBLDOC_SECTION
+};
+
+class SwGlblDocContent
+{
+ GlobalDocContentType eType;
+ ULONG nDocPos;
+ union {
+ const SwTOXBase* pTOX;
+ const SwSection* pSect;
+ } PTR;
+
+public:
+ SwGlblDocContent( ULONG nPos );
+ SwGlblDocContent( const SwTOXBaseSection* pTOX );
+ SwGlblDocContent( const SwSection* pSect );
+
+ // Inhalte abfragen
+ GlobalDocContentType GetType() const { return eType; }
+ const SwSection* GetSection() const
+ { return GLBLDOC_SECTION == eType ? PTR.pSect : 0; }
+ const SwTOXBase* GetTOX() const
+ { return GLBLDOC_TOXBASE == eType ? PTR.pTOX : 0; }
+ ULONG GetDocPos() const { return nDocPos; }
+
+ // fuers Sortieren
+ inline int operator==( const SwGlblDocContent& rCmp )
+ { return GetDocPos() == rCmp.GetDocPos(); }
+ inline int operator<( const SwGlblDocContent& rCmp )
+ { return GetDocPos() < rCmp.GetDocPos(); }
+};
+
+
+typedef SwGlblDocContent* SwGlblDocContentPtr;
+SV_DECL_PTRARR_SORT_DEL( SwGlblDocContents, SwGlblDocContentPtr, 10, 10 );
+
+
+
+#endif
diff --git a/sw/inc/edimp.hxx b/sw/inc/edimp.hxx
new file mode 100644
index 000000000000..2b463ad00453
--- /dev/null
+++ b/sw/inc/edimp.hxx
@@ -0,0 +1,124 @@
+/*************************************************************************
+ *
+ * $RCSfile: edimp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _EDIMP_HXX
+#define _EDIMP_HXX
+
+#include "crsrsh.hxx"
+#include "doc.hxx"
+#include "viscrs.hxx"
+
+/*
+ * MACROS um ueber alle Bereiche zu iterieren
+ */
+#define PCURCRSR (_pStartCrsr)
+
+#define FOREACHPAM_START(pCURSH) \
+ {\
+ SwPaM *_pStartCrsr = (pCURSH)->GetCrsr(), *__pStartCrsr = _pStartCrsr; \
+ do {
+
+#define FOREACHPAM_END() \
+ } while( (_pStartCrsr=(SwPaM *)_pStartCrsr->GetNext()) != __pStartCrsr ); \
+ }
+
+
+#define FOREACHCURSOR_START(pCURSH) \
+ {\
+ SwShellCrsr *_pStartCrsr = *(pCURSH)->GetSwCrsr(), *__pStartCrsr = _pStartCrsr; \
+ do {
+
+#define FOREACHCURSOR_END() \
+ } while( (_pStartCrsr=*(SwCursor*)_pStartCrsr->GetNext()) != __pStartCrsr ); \
+ }
+
+
+struct SwPamRange
+{
+ ULONG nStart, nEnd;
+
+ SwPamRange() : nStart( 0 ), nEnd( 0 ) {}
+ SwPamRange( ULONG nS, ULONG nE ) : nStart( nS ), nEnd( nE ) {}
+
+ BOOL operator==( const SwPamRange& rRg )
+ { return nStart == rRg.nStart ? TRUE : FALSE; }
+ BOOL operator<( const SwPamRange& rRg )
+ { return nStart < rRg.nStart ? TRUE : FALSE; }
+};
+
+SV_DECL_VARARR_SORT( _SwPamRanges, SwPamRange, 0, 1 )
+
+class SwPamRanges : private _SwPamRanges
+{
+public:
+ SwPamRanges( const SwPaM& rRing );
+
+ void Insert( const SwNodeIndex& rIdx1, const SwNodeIndex& rIdx2 );
+ SwPaM& SetPam( USHORT nArrPos, SwPaM& rPam );
+
+ USHORT Count() const
+ { return _SwPamRanges::Count(); }
+ SwPamRange operator[]( USHORT nPos ) const
+ { return _SwPamRanges::operator[](nPos); }
+};
+
+
+#endif
diff --git a/sw/inc/editsh.hxx b/sw/inc/editsh.hxx
new file mode 100644
index 000000000000..652aa39797b3
--- /dev/null
+++ b/sw/inc/editsh.hxx
@@ -0,0 +1,956 @@
+/*************************************************************************
+ *
+ * $RCSfile: editsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _EDITSH_HXX
+#define _EDITSH_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+#ifndef _SV_FONT_HXX //autogen
+#include <vcl/font.hxx>
+#endif
+#ifndef _SVXSWAFOPT_HXX
+#include <svx/swafopt.hxx>
+#endif
+#ifndef _CRSRSH_HXX
+#include <crsrsh.hxx> // fuer Basisklasse
+#endif
+#ifndef _ITABENUM_HXX
+#include <itabenum.hxx>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XSPELLALTERNATIVES_HPP_
+#include <com/sun/star/linguistic/XSpellAlternatives.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XSPELLCHECKER1_HPP_
+#include <com/sun/star/linguistic/XSpellChecker1.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XHYPHENATOR_HPP_
+#include <com/sun/star/linguistic/XHyphenator.hpp>
+#endif
+
+class PolyPolygon;
+class SwDoc;
+class DateTime;
+class CommandExtTextInputData;
+
+class SvNumberFormatter;
+class SfxPoolItem;
+class SfxItemSet;
+class SvxLinkManager;
+class SvxAutoCorrect;
+
+class SwField; // fuer Felder
+class SwFieldType;
+class SwDDEFieldType;
+class SwNewDBMgr;
+
+struct SwDocStat;
+class SfxDocumentInfo;
+class SvStringsDtor;
+class SvStringsSort;
+class SwAutoCompleteWord;
+
+class SwFmtRefMark;
+class SwFmtCol;
+class SwNumRule; // Numerierung
+class SwNodeNum; // Numerierung
+class SwUndoIds; // fuer Undo
+class SwTxtFmtColl;
+#ifdef USED
+class SwGrfFmt;
+class SwGrfFmtColl;
+#endif
+class SwGrfNode;
+class SwFlyFrmFmt;
+
+class SwFrmFmt; // fuer GetTxtNodeFmts()
+class SwCharFmt;
+class SwExtTextInput;
+class SwTxtNode; // fuer IsNotMakeTxtNode
+class SwRootFrm; // fuer CTOR
+class Graphic; // fuer GetGraphic
+class GraphicObject; // fuer GetGraphicObj
+class SwFmtINetFmt; // InsertURL
+class SvInPlaceObjectRef;
+class SvInPlaceObject;
+class SwTable;
+class SwTextBlocks; // fuer GlossaryRW
+class SwBlockExceptList;
+class SwFmtFtn;
+class SpellCheck;
+class SwSection;
+class SwSectionFmt;
+class SwTOXMarks;
+class SwTOXBase;
+class SwTOXType;
+class SwTableAutoFmt;
+class SwPageDesc;
+class SchMemChart;
+class Font;
+class SwTxtINetFmt;
+class SwSeqFldList;
+class SwGlblDocContent;
+class SwGlblDocContents;
+class SwRedline;
+class SwRedlineData;
+class SwFtnInfo;
+class SwEndNoteInfo;
+class SwLineNumberInfo;
+class SwAttrSet;
+class SwAuthEntry;
+
+#define GETSELTXT_PARABRK_TO_BLANK 0
+#define GETSELTXT_PARABRK_KEEP 1
+#define GETSELTXT_PARABRK_TO_ONLYCR 2
+
+/****************************************************************
+ * zum Abfragen der INet-Attribute fuer den Navigator
+ ****************************************************************/
+struct SwGetINetAttr
+{
+ String sText;
+ const SwTxtINetFmt& rINetAttr;
+
+ SwGetINetAttr( const String& rTxt, const SwTxtINetFmt& rAttr )
+ : sText( rTxt ), rINetAttr( rAttr )
+ {}
+};
+SV_DECL_PTRARR_DEL( SwGetINetAttrs, SwGetINetAttr*, 0, 5 )
+
+/****************************************************************
+ * Typen der Inhaltsformen
+ ****************************************************************/
+#define CNT_TXT 0x0001
+#define CNT_GRF 0x0002
+#define CNT_OLE 0x0010
+/* Teste einen USHORT auf eine bestimmte Inhaltsform */
+#define CNT_HasTxt(USH) ((USH)&CNT_TXT)
+#define CNT_HasGrf(USH) ((USH)&CNT_GRF)
+#define CNT_HasOLE(USH) ((USH)&CNT_OLE)
+
+class SwEditShell: public SwCrsrShell
+{
+ static SvxSwAutoFmtFlags* pAutoFmtFlags;
+
+ // fuer die privaten Methoden DelRange und die vom AutoCorrect
+ friend class SwAutoFormat;
+ friend void _InitCore();
+ friend void _FinitCore();
+ // fuer die PamCorrAbs/-Rel Methoden
+ friend class SwUndo;
+
+ SfxPoolItem& _GetChrFmt( SfxPoolItem& ) const;
+
+ /*
+ * liefert einen Pointer auf einen SwGrfNode; dieser wird von
+ * GetGraphic() und GetGraphicSize() verwendet.
+ */
+ SwGrfNode *_GetGrfNode() const ;
+
+ void DeleteSel( SwPaM& rPam, BOOL* pUndo = 0 );
+
+ void _SetSectionAttr( SwSectionFmt& rSectFmt, const SfxItemSet& rSet );
+
+public:
+ // Editieren (immer auf allen selektierten Bereichen)
+ void Insert( sal_Unicode );
+ void Insert( const String &);
+ void Overwrite( const String & );
+
+ // Ersetz einen selektierten Bereich in einem TextNode mit dem
+ // String. Ist fuers Suchen&Ersetzen gedacht.
+ // bRegExpRplc - ersetze Tabs (\\t) und setze den gefundenen String
+ // ein ( nicht \& )
+ // z.B.: Fnd: "zzz", Repl: "xx\t\\t..&..\&"
+ // --> "xx\t<Tab>..zzz..&"
+ BOOL Replace( const String& rNewStr, BOOL bRegExpRplc = FALSE );
+
+ // loescht den Inhalt aller Bereiche;
+ // werden ganze Nodes selektiert, werden die Nodes geloescht
+ long Delete();
+
+ // Voellig private Methode. Nur fuer JOE's-Wizzards
+ BOOL DelFullPara();
+
+ // loesche den nicht sichtbaren Content aus dem Document, wie z.B.:
+ // versteckte Bereiche, versteckte Absaetze
+ BOOL RemoveInvisibleContent();
+
+ // embedded alle lokalen Links (Bereiche/Grafiken)
+ BOOL EmbedAllLinks();
+ USHORT GetLinkUpdMode(BOOL bDocSettings = FALSE) const;
+ void SetLinkUpdMode( USHORT nMode );
+
+ // verschiebe den Inhalt aller Bereiche an die akt. Cursor-Position
+ long Move();
+
+ // kopiere den Inhalt aller Bereiche an die akt. Cursor-Position
+ // in die angegebene Shell
+ long Copy( SwEditShell* pDestShell = 0 );
+
+ // fuers Kopieren uebers ClipBoard:
+ // wird Tabelle in Tabelle kopiert, verschiebe aus dieser dann
+ // alle Cursor. Copy und Paste muss aufgrund der FlyFrames in
+ // der FEShell stehen!
+ // kopiere alle Selectionen und das Doc
+ //JP 21.10.96: und fuer die SVX-Autokorrektur
+ BOOL _CopySelToDoc( SwDoc* pInsDoc, SwNodeIndex* pNdInsPos = 0 );
+
+ long SplitNode( BOOL bAutoFormat = FALSE, BOOL bCheckTableStart = TRUE );
+ void AutoFmtBySplitNode();
+
+ // ist der Cursor in einem INetAttribut, dann wird das komplett
+ // geloescht; inclusive des Hinweistextes (wird beim Drag&Drop gebraucht)
+ BOOL DelINetAttrWithText();
+
+ // ist der Cursor am Ende einer Zeichenvorlage, an der das DontExpand-Flag
+ // noch nicht gesetzt ist, wird dies gesetzt ( => return TRUE; )
+ BOOL DontExpandFmt();
+
+ // Anwenden / Entfernen von Attributen
+ // liefert Attribute im angeforderten AttributSet. Wenn nicht eindeutig
+ // steht im Set ein DONT_CARE !!
+ BOOL GetAttr( SfxItemSet& ) const;
+ void SetAttr( const SfxPoolItem&, USHORT nFlags = 0 );
+ void SetAttr( const SfxItemSet&, USHORT nFlags = 0 );
+
+ // Setze das Attribut als neues default Attribut im Dokument.
+ void SetDefault( const SfxPoolItem& );
+
+ // Erfrage das Default Attribut vom Dokument.
+ const SfxPoolItem& GetDefault( USHORT nFmtHint ) const;
+
+ void ResetAttr();
+ void GCAttr();
+
+ // FrameFormate
+ SwFrmFmt* FindFrmFmtByName( const String& rName ) const;
+
+ // TABLE
+ USHORT GetTblFrmFmtCount( BOOL bUsed = FALSE ) const;
+ SwFrmFmt& GetTblFrmFmt(USHORT nFmt, BOOL bUsed = FALSE ) const;
+ String GetUniqueTblName() const;
+
+ // CHAR
+ USHORT GetCharFmtCount() const;
+ SwCharFmt& GetCharFmt(USHORT nFmt) const;
+ SwCharFmt* GetCurCharFmt() const;
+ void FillByEx(SwCharFmt*, BOOL bReset = FALSE);
+ SwCharFmt* MakeCharFmt( const String& rName, SwCharFmt* pDerivedFrom = 0 );
+ SwCharFmt* FindCharFmtByName( const String& rName ) const;
+
+
+ /* Formatcollections, neu */
+ /* GetXXXCount() liefert die Anzahl der im Dokument vorhandenen XXX
+ * GetXXX(i) liefert das i-te XXX (ERR_RAISE bei Ueberindizierung!)
+ * DelXXX(i) loescht das i-te XXX (ERR_RAISE bei Ueberindizierung!)
+ * GetCurXXX() liefert das am Cursor oder in den Bereichen
+ * geltende XXX (0, wenn nicht eindeutig!)
+ * SetXXX() setzt am Cursor oder in den Bereichen das XXX
+ * MakeXXX() macht ein XXX, abgeleitet vom pDerivedFrom
+ */
+
+ // TXT
+ SwTxtFmtColl& GetDfltTxtFmtColl() const;
+ USHORT GetTxtFmtCollCount() const;
+ SwTxtFmtColl& GetTxtFmtColl( USHORT nTxtFmtColl) const;
+ SwTxtFmtColl* GetCurTxtFmtColl() const;
+ void SetTxtFmtColl(SwTxtFmtColl*);
+ SwTxtFmtColl *MakeTxtFmtColl(const String &rFmtCollName,
+ SwTxtFmtColl *pDerivedFrom = 0);
+ void FillByEx(SwTxtFmtColl*, BOOL bReset = FALSE);
+ SwTxtFmtColl* FindTxtFmtCollByName( const String& rName ) const;
+#ifdef USED
+ // GRF
+ USHORT GetGrfFmtCollCount() const;
+ SwGrfFmtColl& GetGrfFmtColl( USHORT nGrfFmtColl) const;
+ void DelGrfFmtColl(USHORT nFmt);
+ SwGrfFmtColl* GetCurGrfFmtColl() const;
+ void SetGrfFmtColl(SwGrfFmtColl*);
+ SwGrfFmtColl *MakeGrfFmtColl(const String &rFmtCollName,
+ SwGrfFmtColl *pDerivedFrom = 0);
+ SwGrfFmtColl* FindGrfFmtCollByName( const String& rName ) const;
+#endif
+
+ // Gebe die "Auto-Collection" mit der Id zurueck. Existiert
+ // sie noch nicht, dann erzuege sie
+ SwTxtFmtColl* GetTxtCollFromPool( USHORT nId );
+ // return das geforderte automatische Format - Basis-Klasse !
+ SwFmt* GetFmtFromPool( USHORT nId );
+ // returne die geforderte automatische Seiten-Vorlage
+ SwPageDesc* GetPageDescFromPool( USHORT nId );
+ // returne die geforderte automatische NumRule
+ SwNumRule* GetNumRuleFromPool( USHORT nId );
+
+ // erfrage ob die Absatz-/Zeichen-/Rahmen-/Seiten - Vorlage benutzt wird
+ BOOL IsUsed( const SwModify& ) const;
+ BOOL IsUsed( const SwNumRule& ) const;
+ // ist der Name ein Pool-Vorlagen-Name, returne seine ID,
+ // sonst USHRT_MAX
+ USHORT GetPoolId( const String& rName, SwGetPoolIdFromName eFlag ) const;
+
+ const SvStringsDtor& GetChrFmtNmArray() const;
+ const SvStringsDtor& GetHTMLChrFmtNmArray() const;
+
+ // returne das geforderte automatische Format
+ SwFrmFmt* GetFrmFmtFromPool( USHORT nId )
+ { return (SwFrmFmt*)SwEditShell::GetFmtFromPool( nId ); }
+ SwCharFmt* GetCharFmtFromPool( USHORT nId )
+ { return (SwCharFmt*)SwEditShell::GetFmtFromPool( nId ); }
+
+ // Felder
+ void Insert(SwField&);
+ SwField* GetCurFld() const;
+
+ void UpdateFlds( SwField & ); // ein einzelnes Feld
+
+ USHORT GetFldTypeCount(USHORT nResId = USHRT_MAX, BOOL bUsed = FALSE) const;
+ SwFieldType* GetFldType(USHORT nId, USHORT nResId = USHRT_MAX, BOOL bUsed = FALSE) const;
+ SwFieldType* GetFldType(USHORT nResId, const String& rName) const;
+
+ void RemoveFldType(USHORT nId, USHORT nResId = USHRT_MAX);
+ void RemoveFldType(USHORT nResId, const String& rName);
+ BOOL RenameUserFields(const String& rOldName, const String& rNewName);
+
+ void FieldToText( SwFieldType* pType );
+
+ void ChangeAuthorityData(const SwAuthEntry* pNewData);
+
+ // Datenbankinfo
+ String GetDBName() const;
+ const String& GetDBDesc() const;
+ void ChgDBName(const String& rNewName);
+ void ChangeDBFields( const SvStringsDtor& rOldNames,
+ const String& rNewName );
+ void GetAllUsedDB( SvStringsDtor& rDBNameList,
+ SvStringsDtor* pAllDBNames = 0 );
+
+ void UpdateExpFlds(BOOL bCloseDB = FALSE);// nur alle ExpressionFelder updaten
+ void SetFixFields( BOOL bOnlyTimeDate = FALSE,
+ const DateTime* pNewDateTime = 0 );
+ void LockExpFlds();
+ void UnlockExpFlds();
+ BOOL IsExpFldsLocked() const;
+
+ USHORT GetFldUpdateFlags(BOOL bDocSettings = FALSE) const;
+ void SetFldUpdateFlags( USHORT eFlags );
+
+ // fuer die Evaluierung der DBFelder (neuer DB-Manager)
+ SwNewDBMgr* GetNewDBMgr() const;
+
+ SwFieldType* InsertFldType(const SwFieldType &);
+
+ // Aenderungen am Dokument?
+ BOOL IsModified() const;
+ void SetModified();
+ void ResetModified();
+ void SetUndoNoResetModified();
+
+ // Dokument - Statistics
+ void UpdateDocStat( SwDocStat& rStat );
+
+ // Dokument - Info
+ const SfxDocumentInfo* GetInfo() const;
+
+ // Verzeichnismarke einfuegen loeschen
+ void Insert(const SwTOXMark& rMark);
+ void DeleteTOXMark(SwTOXMark* pMark);
+
+ // Alle Markierungen am aktuellen SPoint ermitteln
+ USHORT GetCurTOXMarks(SwTOXMarks& rMarks) const ;
+
+ // Verzeichnis einfuegen, und bei Bedarf erneuern
+ void InsertTableOf(const SwTOXBase& rTOX,
+ const SfxItemSet* pSet = 0);
+ BOOL UpdateTableOf(const SwTOXBase& rTOX,
+ const SfxItemSet* pSet = 0);
+ const SwTOXBase* GetCurTOX() const;
+ const SwAttrSet& GetTOXBaseAttrSet(const SwTOXBase& rTOX) const;
+ const SwTOXBase* GetDefaultTOXBase( TOXTypes eTyp, BOOL bCreate = FALSE );
+ void SetDefaultTOXBase(const SwTOXBase& rBase);
+
+ BOOL IsTOXBaseReadonly(const SwTOXBase& rTOXBase) const;
+ void SetTOXBaseReadonly(const SwTOXBase& rTOXBase, BOOL bReadonly);
+
+ USHORT GetTOXCount() const;
+ const SwTOXBase* GetTOX( USHORT nPos ) const;
+ BOOL DeleteTOX( const SwTOXBase& rTOXBase, BOOL bDelNodes = FALSE );
+ BOOL DeleteCurTOX();
+
+ String GetUniqueTOXBaseName( const SwTOXType& rType,
+ const String* pChkStr = 0 ) const;
+
+ BOOL SetTOXBaseName(const SwTOXBase& rTOXBase, const String& rName);
+ void SetTOXBaseProtection(const SwTOXBase& rTOXBase, BOOL bProtect);
+
+ // nach einlesen einer Datei alle Verzeichnisse updaten
+ void SetUpdateTOX( BOOL bFlag = TRUE );
+ BOOL IsUpdateTOX() const;
+
+ // Verzeichnis-Typen verwalten
+ USHORT GetTOXTypeCount(TOXTypes eTyp) const;
+ const SwTOXType* GetTOXType(TOXTypes eTyp, USHORT nId) const;
+ void InsertTOXType(const SwTOXType& rTyp);
+
+ //AutoMark file
+ const String& GetTOIAutoMarkURL() const;
+ void SetTOIAutoMarkURL(const String& rSet);
+ void ApplyAutoMark();
+
+ // Schluessel fuer die Indexverwaltung
+ USHORT GetTOIKeys( SwTOIKeyType eTyp, SvStringsSort& rArr ) const;
+
+ void SetOutlineNumRule(const SwNumRule&);
+ const SwNumRule* GetOutlineNumRule() const;
+ // Gliederung - hoch-/runterstufen
+ BOOL OutlineUpDown( short nOffset = 1 );
+ // Gliederung - hoch-/runtermoven
+ BOOL MoveOutlinePara( short nOffset = 1);
+ // Outlines and SubOutline are protected ?
+ BOOL IsProtectedOutlinePara() const;
+
+ // Numerierung Aufzaehlunglisten
+ // liefert Regelwerk der aktuellen Aufzaehlung (FALSE sonst)
+ const SwNumRule* GetCurNumRule() const;
+ // setzt, wenn noch keine Numerierung, sonst wird geaendert
+ // arbeitet mit alten und neuen Regeln, nur Differenzen aktualisieren
+ void SetCurNumRule(const SwNumRule&);
+ // Absaetze ohne Numerierung, aber mit Einzuegen
+ BOOL NoNum();
+ // Loeschen, Splitten der Aufzaehlungsliste
+ BOOL DelNumRules();
+ // Hoch-/Runterstufen
+ BOOL NumUpDown( BOOL bDown = TRUE );
+ // Hoch-/Runtermoven sowohl innerhalb als auch ausserhalb von Numerierungen
+ BOOL MoveParagraph( long nOffset = 1);
+ BOOL MoveNumParas( BOOL bUpperLower, BOOL bUpperLeft );
+ // No-/Numerierung ueber Delete/Backspace ein/abschalten
+ BOOL NumOrNoNum( BOOL bDelete = FALSE, BOOL bChkStart = TRUE,
+ BOOL bOutline = FALSE );
+ BOOL IsNoNum( BOOL bChkStart = TRUE, BOOL bOutline = FALSE ) const;
+ // returne den Num-Level des Nodes, in dem sich der Point vom
+ // Cursor befindet. Return kann sein :
+ // - NO_NUMBERING, 0..MAXLEVEL-1, NO_NUMLEVEL .. NO_NUMLEVEL|MAXLEVEL-1
+ BYTE GetNumLevel( BOOL* pHasChilds = 0 ) const;
+ String GetUniqueNumRuleName( const String* pChkStr = 0, BOOL bAutoNum = TRUE ) const;
+ void ChgNumRuleFmts( const SwNumRule& rRule );
+ // setze und erfrage, ob an aktueller PointPos eine Numerierung mit
+ // dem StartFlag startet
+ void SetNumRuleStart( BOOL bFlag = TRUE );
+ BOOL IsNumRuleStart() const;
+ void SetNodeNumStart( USHORT nStt = USHRT_MAX );
+ USHORT IsNodeNumStart() const;
+ BOOL ReplaceNumRule( const String& rOldRule, const String& rNewRule );
+
+ // Undo
+ // UndoHistory am Dokument pflegen
+ // bei Save, SaveAs, Create wird UndoHistory zurueckgesetzt ???
+ void DoUndo( BOOL bOn = TRUE );
+ BOOL DoesUndo() const;
+ void DoGroupUndo( BOOL bUn = TRUE );
+ BOOL DoesGroupUndo() const;
+ void DelAllUndoObj();
+
+ // macht rueckgaengig:
+ // setzt Undoklammerung auf, liefert nUndoId der Klammerung
+ USHORT StartUndo( USHORT nUndoId = 0 );
+ // schliesst Klammerung der nUndoId, nicht vom UI benutzt
+ USHORT EndUndo( USHORT nUndoId = 0 );
+ // liefert die Id der letzten undofaehigen Aktion zurueck
+ // fuellt ggf. VARARR mit User-UndoIds
+ USHORT GetUndoIds( String* pUndoStr = 0, SwUndoIds *pUndoIds = 0) const;
+
+ // abfragen/setzen der Anzahl von wiederherstellbaren Undo-Actions
+ static USHORT GetUndoActionCount();
+ static void SetUndoActionCount( USHORT nNew );
+
+ // Redo
+ // liefert die Id der letzten Redofaehigen Aktion zurueck
+ // fuellt ggf. VARARR mit RedoIds
+ USHORT GetRedoIds( String* pRedoStr = 0, SwUndoIds *pRedoIds = 0) const;
+
+ // Repeat
+ // liefert die Id der letzten Repeatfaehigen Aktion zurueck
+ // fuellt ggf. VARARR mit RedoIds
+ USHORT GetRepeatIds( String* pRepeatStr = 0, SwUndoIds *pRedoIds = 0) const;
+
+ // 0 letzte Aktion, sonst Aktionen bis zum Start der Klammerung nUndoId
+ // mit KillPaMs, ClearMark
+ BOOL Undo(USHORT nUndoId = 0);
+ // wiederholt
+ USHORT Repeat( USHORT nCount );
+ // wiederholt
+ USHORT Redo();
+#ifdef USED
+ // Aktionen klammern
+ void StartAction();
+ void EndAction();
+#endif
+ // fuer alle Sichten auf dieses Dokument
+ void StartAllAction();
+ void EndAllAction();
+
+ //Damit Start-/EndActions aufgesetzt werden koennen.
+ void CalcLayout();
+
+ // Inhaltsform bestimmen, holen, liefert Type am CurCrsr->SPoint
+ USHORT GetCntType() const;
+ BOOL HasOtherCnt() const; // gibt es Rahmen, Fussnoten, ...
+
+ /* Anwenden der ViewOptions mit Start-/EndAction */
+ inline void ApplyViewOptions( const SwViewOption &rOpt );
+
+ // Text innerhalb der Selektion erfragen
+ // Returnwert liefert FALSE, wenn der selektierte Bereich
+ // zu gross ist, um in den Stringpuffer kopiert zu werden
+ // oder andere Fehler auftreten
+ BOOL GetSelectedText( String &rBuf,
+ int nHndlParaBreak = GETSELTXT_PARABRK_TO_BLANK );
+
+ /*
+ * liefert eine Graphic, wenn CurCrsr->Point() auf einen
+ * SwGrfNode zeigt (und Mark nicht gesetzt ist oder auf die
+ * gleiche Graphic zeigt), sonst gibt's was auf die Finger
+ */
+ const Graphic &GetGraphic( BOOL bWait = TRUE ) const;
+ const GraphicObject &GetGraphicObj() const;
+ BOOL IsGrfSwapOut( BOOL bOnlyLinked = FALSE ) const;
+ USHORT GetGraphicType() const;
+
+ const PolyPolygon *GetGraphicPolygon() const;
+ void SetGraphicPolygon( const PolyPolygon *pPoly );
+
+ /*
+ * liefert die Groesse einer Graphic in Twips, wenn der Cursor
+ * auf einer Graphic steht; BOOL liefert FALSE, wenn s.o.
+ */
+ BOOL GetGrfSize(Size&) const;
+ /*
+ * liefert den Namen und den Filter einer Graphic, wenn der Cursor
+ * auf einer Graphic steht, sonst gibt's was auf die Finger!
+ * Ist ein String-Ptr != 0 dann returne den entsp. Namen
+ */
+ void GetGrfNms( String* pGrfName, String* pFltName,
+ const SwFlyFrmFmt* = 0 ) const;
+ /*
+ * erneutes Einlesen, falls Graphic nicht Ok ist. Die
+ * aktuelle wird durch die neue ersetzt.
+ */
+ void ReRead( const String& rGrfName, const String& rFltName,
+ const Graphic* pGraphic = 0 );
+
+ // alternativen Text einer Grafik/OLe-Objectes abfragen/setzen
+ const String& GetAlternateText() const;
+ void SetAlternateText( const String& rTxt );
+
+ //eindeutige Identifikation des Objektes (fuer ImageMapDlg)
+ void *GetIMapInventor() const;
+ Graphic GetIMapGraphic( BOOL bWait = TRUE ) const; //liefert eine Graphic fuer alle Flys!
+ const SwFlyFrmFmt* FindFlyByName( const String& rName, BYTE nNdTyp = 0 ) const;
+
+ //liefert ein ClientObject, wenn CurCrsr->Point() auf einen
+ //SwOLENode zeigt (und Mark nicht gesetzt ist oder auf das
+ //gleiche ClientObject zeigt), sonst gibt's was auf die
+ //Finger.
+ SvInPlaceObjectRef GetOLEObj() const;
+ //Gibt es ein OleObject mit diesem Namen (SwFmt)?
+ BOOL HasOLEObj( const String &rName ) const;
+
+ //Liefert den Pointer auf die Daten des Chart, indem sich der Crsr
+ //befindet.
+ void SetChartName( const String &rName );
+ // returne den ChartNamen - vom Crsr oder vom uebergebenen OLE-Object
+ // reurnt aEmptyStr wenn nicht gefunden wurde
+ const String& GetChartName( SvInPlaceObject* pObj = 0 );
+ //Sucht die Tabelle und liefert ein mit den Daten der Tabelle gefuelltes
+ //pData. Wenn pData 0 ist wird eines angelegt.
+ void UpdateChartData( const String &rName, SchMemChart *&pData );
+ //Updaten der Inhalte aller Charts zu der Tabelle mit dem angegeben Namen
+ void UpdateCharts( const String &rName );
+
+ // aktuelles Wort erfragen
+ String GetCurWord();
+
+ // Textbaustein aus dem Textbausteindokument in
+ // das aktuelle Dokument, Vorlagen nur wenn es nicht schon gibt
+ void InsertGlossary( SwTextBlocks& rGlossary, const String& );
+ // aktuelle Selektion zum Textbaustein machen und ins
+ // Textbausteindokument einfuegen, einschliesslich Vorlagen
+ USHORT MakeGlossary( SwTextBlocks& rToFill, const String& rName,
+ const String& rShortName, BOOL bSaveRelFile = FALSE,
+ BOOL bSaveRelNet = FALSE, const String* pOnlyTxt=0 );
+ // speicher den gesamten Inhalt des Docs als Textbaustein
+ USHORT SaveGlossaryDoc( SwTextBlocks& rGlossary, const String& rName,
+ const String& rShortName,
+ BOOL bSaveRelFile = FALSE,
+ BOOL bSaveRelNet = FALSE,
+ BOOL bOnlyTxt = FALSE );
+
+ // Linguistik
+ // Selektionen sichern
+ void HyphStart( SwDocPositions eStart, SwDocPositions eEnde );
+ // Selektionen wiederherstellen
+ void HyphEnd();
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>
+ HyphContinue( USHORT* pPageCnt, USHORT* pPageSt );
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>
+ SpellContinue( USHORT* pPageCnt, USHORT* pPageSt );
+ // zu trennendes Wort ignorieren
+ void HyphIgnore();
+
+ // zum Einfuegen des SoftHyphens, Position ist der Offset
+ // innerhalb des getrennten Wortes.
+ void InsertSoftHyph( const xub_StrLen nHyphPos );
+
+ //Tabelle
+ const SwTable& InsertTable(USHORT nRows, USHORT nCols,
+ SwHoriOrient = HORI_FULL,
+ USHORT nInsert = ALL_TBL_INS_ATTR,
+ const SwTableAutoFmt* pTAFmt = 0 );
+ void InsertDDETable( SwDDEFieldType* pDDEType,
+ USHORT nRows, USHORT nCols,
+ SwHoriOrient eAdj = HORI_FULL,
+ USHORT nInsert = HEADLINE_NO_BORDER );
+ void UpdateTable();
+ void SetTableName( SwFrmFmt& rTblFmt, const String &rNewName );
+
+ SwFrmFmt *GetTableFmt();
+ BOOL TextToTable( sal_Unicode cCh, SwHoriOrient eAdj = HORI_FULL,
+ USHORT nInsert = ALL_TBL_INS_ATTR,
+ const SwTableAutoFmt* pTAFmt = 0 );
+ BOOL TableToText( sal_Unicode cCh );
+ FASTBOOL IsTextToTableAvailable() const;
+
+ BOOL GetTblBoxFormulaAttrs( SfxItemSet& rSet ) const;
+ void SetTblBoxFormulaAttrs( const SfxItemSet& rSet );
+
+ BOOL IsTableBoxTextFormat() const;
+ // Change Modus erfragen/setzen
+ USHORT GetTblChgMode() const;
+ void SetTblChgMode( USHORT eMode );
+
+ // Zellenbreiten ueber Min/Max Berechnung an Tabellenbreite anpassen
+ void OptimizeTblBoxWidthMinMax();
+ // Tabelle an der Cursor Position aufsplitten
+ BOOL SplitTable( USHORT eMode );
+ // Tabellen verbinden
+ // CanMerge kann feststellen, ob Prev oder Next moeglich ist. Wird
+ // der Pointer pChkNxtPrv uebergeben, wird festgestellt in welche
+ // Richtung es moeglich ist.
+ BOOL CanMergeTable( BOOL bWithPrev = TRUE, BOOL* pChkNxtPrv = 0 ) const;
+ BOOL MergeTable( BOOL bWithPrev = TRUE, USHORT nMode = 0 );
+
+ // Selektionen sichern
+ void SpellStart( SwDocPositions eStart, SwDocPositions eEnde,
+ SwDocPositions eCurr );
+ // Selektionen wiederherstellen
+ void SpellEnd();
+
+ // Is spelling active somewhere else?
+ BOOL HasSpellIter() const;
+ // Is hyphenation active somewhere else?
+ BOOL HasHyphIter() const;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::linguistic::XSpellAlternatives>
+ GetCorrection( const Point* pPt );
+
+ void SetLinguRange( SwDocPositions eStart, SwDocPositions eEnde );
+
+ // returne zum Namen die im Doc gesetzte Referenz
+ const SwFmtRefMark* GetRefMark( const String& rName ) const;
+ // returne die Namen aller im Doc gesetzten Referenzen
+ // Ist der ArrayPointer 0 dann returne nur, ob im Doc. eine RefMark
+ // gesetzt ist
+ USHORT GetRefMarks( SvStringsDtor* = 0 ) const;
+
+ // rufe die Autokorrektur auf
+ void AutoCorrect( SvxAutoCorrect& rACorr, BOOL bInsertMode = TRUE,
+ sal_Unicode cChar = ' ' );
+ BOOL GetPrevAutoCorrWord( SvxAutoCorrect& rACorr, String& rWord );
+
+ // dann setze nach entsprechenden Regeln unsere Vorlagen
+ void AutoFormat( const SvxSwAutoFmtFlags* pAFlags = 0 );
+
+ static SvxSwAutoFmtFlags* GetAutoFmtFlags();
+ static void SetAutoFmtFlags(SvxSwAutoFmtFlags *);
+
+ // errechnet die Selektion
+ String Calculate();
+
+ BOOL InsertURL( const SwFmtINetFmt& rFmt, const String& rStr, BOOL bKeepSelection = FALSE );
+ USHORT GetINetAttrs( SwGetINetAttrs& rArr );
+
+ //SS Fuer holen/ersetzen DropCap-Inhalt
+ String GetDropTxt( const USHORT nChars ) const;
+ void ReplaceDropTxt( const String &rStr );
+
+ // Abfrage von Oultine Informationen:
+ USHORT GetOutlineCnt() const;
+
+ BYTE GetOutlineLevel( USHORT nIdx ) const;
+ // mit exp. Felder und KapitelNummern
+ String GetOutlineText( USHORT nIdx, BOOL bWithNum = TRUE ) const;
+ // die Nummer
+ const SwNodeNum* GetOutlineNum( USHORT nIdx ) const;
+
+ // darf verschoben werden?
+ BOOL IsOutlineMovable( USHORT nIdx ) const;
+
+ USHORT GetLineCount( BOOL bActPos = TRUE );
+
+ // erfrage und setze den Fussnoten-Text/Nummer. Set.. auf akt. SSelection!
+ BOOL GetCurFtn( SwFmtFtn* pToFillFtn = 0 );
+ BOOL SetCurFtn( const SwFmtFtn& rFillFtn );
+ BOOL HasFtns( BOOL bEndNotes = FALSE ) const;
+//z.Zt nicht benoetigt USHORT GetFtnCnt( BOOL bEndNotes = FALSE ) const;
+ // gebe Liste aller Fussnoten und deren Anfangstexte
+ USHORT GetSeqFtnList( SwSeqFldList& rList, BOOL bEndNotes = FALSE );
+
+ // SS fuer Bereiche
+ const SwSection* InsertSection( const SwSection& rNew,
+ const SfxItemSet* = 0 );
+ BOOL IsInsRegionAvailable() const;
+ const SwSection* GetCurrSection() const;
+ // liefert wie GetCurrSection() den aktuellen Bereich, allerdings geht diese Funktion
+ // ueber die Frames und erwischt dabei auch den Bereich, wenn der Cursor in einer
+ // Fussnote steht, deren Referenz in einem spaltigen Bereich steckt.
+ // Wenn man bOutOfTab setzt, wird der Bereich gesucht,
+ // der die Tabelle umfasst, nicht etwa ein innerer.
+ const SwSection* GetAnySection( BOOL bOutOfTab = FALSE ) const;
+
+ USHORT GetSectionFmtCount() const;
+ USHORT GetSectionFmtPos( const SwSectionFmt& ) const;
+ const SwSectionFmt& GetSectionFmt(USHORT nFmt) const;
+ void DelSectionFmt( USHORT nFmt );
+ void ChgSection( USHORT nSect, const SwSection&, const SfxItemSet* = 0 );
+ BOOL IsAnySectionInDoc( BOOL bChkReadOnly = FALSE,
+ BOOL bChkHidden = FALSE,
+ BOOL BChkTOX = FALSE ) const;
+ // Passwort fuer geschuetzte Bereiche erfragen/setzen
+ void ChgSectionPasswd( const String& sNew );
+ const String& GetSectionPasswd() const;
+ String GetUniqueSectionName( const String* pChkStr = 0 ) const;
+
+ //Attribute setzen
+ void SetSectionAttr(const SfxItemSet& rSet, SwSectionFmt* pSectFmt = 0);
+
+ // search inside the cursor selection for full selected sections.
+ // if any part of section in the selection return 0.
+ // if more than one in the selection return the count
+ USHORT GetFullSelectedSectionCount() const;
+
+ BOOL AppendNodeInSection();
+ int CanInsertNodeAtEndOfSection() const;
+
+ // Optimierung UI
+ void SetNewDoc(BOOL bNew = TRUE);
+
+ SvxLinkManager& GetLinkManager();
+ inline const SvxLinkManager& GetLinkManager() const;
+
+ // linken Rand ueber Objectleiste einstellen (aenhlich dem Stufen von
+ // Numerierungen), optional kann man "um" den Offset stufen oder "auf"
+ // die Position gestuft werden (bModulus = TRUE)
+ BOOL IsMoveLeftMargin( BOOL bRight = TRUE, BOOL bModulus = TRUE ) const;
+ void MoveLeftMargin( BOOL bRight = TRUE, BOOL bModulus = TRUE );
+
+ // Numberformatter vom Doc erfragen
+ SvNumberFormatter* GetNumberFormatter();
+ const SvNumberFormatter* GetNumberFormatter() const
+ { return ((SwEditShell*)this)->GetNumberFormatter(); }
+
+ // Extrakt fuellen
+ void Summary( SwDoc* pExtDoc, BYTE nLevel, BYTE nPara, BOOL bImpress );
+
+ // Schnitstellen fuers GlobalDokument
+ void SetGlobalDoc( BOOL bFlag = TRUE );
+ BOOL IsGlobalDoc() const;
+ void SetGlblDocSaveLinks( BOOL bFlag = TRUE );
+ BOOL IsGlblDocSaveLinks() const;
+ USHORT GetGlobalDocContent( SwGlblDocContents& rArr ) const;
+ BOOL InsertGlobalDocContent( const SwGlblDocContent& rPos,
+ const SwSection& rNew );
+ BOOL InsertGlobalDocContent( const SwGlblDocContent& rPos,
+ const SwTOXBase& rTOX );
+ BOOL InsertGlobalDocContent( const SwGlblDocContent& rPos );
+ BOOL DeleteGlobalDocContent( const SwGlblDocContents& rArr,
+ USHORT nPos );
+ BOOL MoveGlobalDocContent( const SwGlblDocContents& rArr ,
+ USHORT nFromPos, USHORT nToPos,
+ USHORT nNewPos );
+ BOOL GotoGlobalDocContent( const SwGlblDocContent& rPos );
+ // erzeuge Anhand der vorgebenen Collection Teildokumente
+ // falls keine angegeben ist, nehme die Kapitelvorlage der 1. Ebene
+ BOOL GenerateGlobalDoc( const String& rPath,
+ const SwTxtFmtColl* pSplitColl = 0 );
+ BOOL GenerateHTMLDoc( const String& rPath,
+ const SwTxtFmtColl* pSplitColl = 0 );
+
+ // alles fuers Redlining
+ USHORT GetRedlineMode() const;
+ void SetRedlineMode( USHORT eMode );
+ BOOL IsRedlineOn() const;
+ USHORT GetRedlineCount() const;
+ const SwRedline& GetRedline( USHORT nPos ) const;
+ BOOL AcceptRedline( USHORT nPos );
+ BOOL AcceptRedline();
+ BOOL RejectRedline( USHORT nPos );
+ BOOL RejectRedline();
+ // suche das Redline zu diesem Data und returne die Pos im Array
+ // USHRT_MAX wird returnt, falls nicht vorhanden
+ USHORT FindRedlineOfData( const SwRedlineData& ) const;
+
+ // Kommentar am Redline an der Position setzen
+ BOOL SetRedlineComment( const String& rS );
+ const SwRedline* GetCurrRedline() const;
+
+ // Redline Anzeigeattribute wurden geaendert, Views updaten
+ void UpdateRedlineAttr();
+
+ // vergleiche zwei Dokument mit einander
+ long CompareDoc( const SwDoc& rDoc );
+ // merge zweier Dokumente
+ long MergeDoc( const SwDoc& rDoc );
+
+ // Dokumentglobale Fussnoteneigenschaften
+ const SwFtnInfo& GetFtnInfo() const;
+ void SetFtnInfo(const SwFtnInfo& rInfo);
+ const SwEndNoteInfo& GetEndNoteInfo() const;
+ void SetEndNoteInfo(const SwEndNoteInfo& rInfo);
+
+ //Einstellungen fuer Zeilennummierung
+ const SwLineNumberInfo &GetLineNumberInfo() const;
+ void SetLineNumberInfo( const SwLineNumberInfo& rInfo);
+
+ // Etiketten: Bereiche synchronisieren
+ void SetLabelDoc( BOOL bFlag = TRUE );
+ BOOL IsLabelDoc() const;
+
+ // Schnittstelle fuer die TextInputDaten - ( fuer die Texteingabe
+ // von japanischen/chinesischen Zeichen)
+ SwExtTextInput* CreateExtTextInput();
+ void DeleteExtTextInput( SwExtTextInput* pDel = 0, BOOL bInsText = TRUE );
+ SwExtTextInput* GetExtTextInput() const;
+ void SetExtTextInputData( const CommandExtTextInputData& );
+
+ // Schnistelle fuer den Zugriff auf die AutoComplete-Liste
+ static SwAutoCompleteWord& GetAutoCompleteWords();
+
+ // ctor/dtor
+ SwEditShell( SwDoc*,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XSpellChecker1 >,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XHyphenator >, Window*,
+ SwRootFrm* = 0, const SwViewOption *pOpt = 0 );
+ // verkleideter Copy-Constructor
+ SwEditShell( SwEditShell*, Window* );
+ ~SwEditShell();
+
+private:
+ // fuer METWARE:
+ // es wird nicht kopiert und nicht zugewiesen
+ SwEditShell(const SwEditShell &);
+ const SwEditShell &operator=(const SwEditShell &);
+};
+
+inline void SwEditShell::ApplyViewOptions( const SwViewOption &rOpt )
+{
+ SwCrsrShell::StartAction();
+ ViewShell::ApplyViewOptions( rOpt );
+ SwEditShell::EndAction();
+}
+
+inline const SvxLinkManager& SwEditShell::GetLinkManager() const
+{ return ((SwEditShell*)this)->GetLinkManager(); }
+
+/*
+ * Klasse fuer den automatisierten Aufruf von Start- und
+ * EndAction();
+ */
+class SwActKontext {
+ SwEditShell *pSh;
+public:
+ SwActKontext(SwEditShell *pShell);
+ ~SwActKontext();
+};
+
+#define ACT_KONTEXT(x) SwActKontext _aActKontext_(x)
+
+/*
+ * Klasse fuer den automatisierten Aufruf von Start- und
+ * EndCrsrMove();
+ */
+class SwMvKontext {
+ SwEditShell *pSh;
+public:
+ SwMvKontext(SwEditShell *pShell );
+ ~SwMvKontext();
+};
+
+#define MV_KONTEXT(x) SwMvKontext _aMvKontext_(x)
+
+
+
+#endif
diff --git a/sw/inc/errhdl.hxx b/sw/inc/errhdl.hxx
new file mode 100644
index 000000000000..23fdf06dfaba
--- /dev/null
+++ b/sw/inc/errhdl.hxx
@@ -0,0 +1,129 @@
+/*************************************************************************
+ *
+ * $RCSfile: errhdl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ERRHDL_HXX
+#define _ERRHDL_HXX
+
+#ifndef PRODUCT
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#ifndef _SAL_TYPES_H_
+#include <sal/types.h>
+#endif
+extern BOOL bAssert; // TRUE, wenn eine ASSERT-Box hochkam
+
+// -----------------------------------------------------------------------
+// Ausgabe einer Fehlermeldung inkl. Dateiname und Zeilennummer
+// wo der Fehler auftrat.
+// Die Funktion darf nicht direkt benutzt werden!
+// -----------------------------------------------------------------------
+extern void AssertFail( const sal_Char*, const sal_Char*, USHORT );
+extern void AssertFail( USHORT, const sal_Char*, USHORT );
+
+#ifdef WIN
+//MSC (7.0) machts nur mit static, ZTC in inlines nur ohne...
+#define ASSERT( cond, message ) \
+ if( !(cond) ) { \
+ static const char __FAR_DATA _pErrorText[] = #message; \
+ static const char __FAR_DATA _pFileName[] = __FILE__; \
+ ::AssertFail( _pErrorText, _pFileName, __LINE__ ); \
+ }
+#else
+#define ASSERT( cond, message ) \
+ if( !(cond) ) { \
+ const char *_pErrorText = #message; \
+ const char *_pFileName = __FILE__; \
+ ::AssertFail( _pErrorText, _pFileName, __LINE__ ); \
+ }
+#endif
+
+// -----------------------------------------------------------------------
+// Prueft ob die angegebene Bedingung wahr ist, wenn nicht wird eine
+// Fehlermeldung die ueber die ID Identifiziert wird, ausgegeben.
+// -----------------------------------------------------------------------
+#ifdef WIN
+//MSC (7.0) machts nur mit static, ZTC in inlines nur ohne...
+#define ASSERT_ID( cond, id ) \
+ if( !(cond) ) { \
+ static const char __FAR_DATA _pFileName[] = __FILE__; \
+ ::AssertFail( (USHORT)id, _pFileName, __LINE__ ); \
+ }
+#else
+#define ASSERT_ID( cond, id ) \
+ if( !(cond) ) { \
+ const char *_pFileName = __FILE__; \
+ ::AssertFail( (USHORT)id, _pFileName, __LINE__ ); \
+ }
+#endif
+
+// -----------------------------------------------------------------------
+// Beim Bilden der Produktversion werden alle Debug-Utilities automatisch
+// ignoriert
+// -----------------------------------------------------------------------
+#else
+#define ASSERT( cond, message ) ;
+#define ASSERT_ID( cond, id ) ;
+#endif // PRODUCT
+
+
+
+#endif
diff --git a/sw/inc/error.h b/sw/inc/error.h
new file mode 100644
index 000000000000..fd093a5ed7b7
--- /dev/null
+++ b/sw/inc/error.h
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * $RCSfile: error.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWERROR_H
+#define _SWERROR_H
+
+#define ERR_SWGBASE 25000
+
+/*** Error Codes **********************************************************/
+#define ERR_VAR_IDX (ERR_SWGBASE+ 0)
+#define ERR_OUTOFSCOPE (ERR_SWGBASE+ 1)
+
+/* Error Codes fuer Numerierungsregeln */
+#define ERR_NUMLEVEL (ERR_SWGBASE+ 2)
+
+/* Error Codes fuer TxtNode */
+#define ERR_NOHINTS (ERR_SWGBASE+ 3)
+
+// von _START bis _END sind in der COREDL.DLL entsprechende Strings
+// abgelegt, die erfragt werden koennen.
+#define ERR_SWGMSG_START (ERR_VAR_IDX)
+#define ERR_SWGMSG_END (ERR_NOHINTS)
+
+
+
+#endif
diff --git a/sw/inc/expfld.hxx b/sw/inc/expfld.hxx
new file mode 100644
index 000000000000..274553e011a4
--- /dev/null
+++ b/sw/inc/expfld.hxx
@@ -0,0 +1,470 @@
+/*************************************************************************
+ *
+ * $RCSfile: expfld.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _EXPFLD_HXX
+#define _EXPFLD_HXX
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _CELLFML_HXX
+#include <cellfml.hxx>
+#endif
+
+class SfxPoolItem;
+class SwTxtNode;
+class SwCalc;
+class SwFrm;
+struct SwPosition;
+class SwTxtFld;
+class SwTableSortBoxes;
+class SwDoc;
+class SwTable;
+class SwFmtFld;
+
+// Vorwaertsdeklaration: besorge den "Body-TextNode", fuer Exp.Fld in Fly's
+// Header/Footers/Footnodes
+const SwTxtNode* GetBodyTxtNode( const SwDoc& pDoc, SwPosition& rPos,
+ const SwFrm& rFrm );
+// Wandlung Address -> Adressen
+void ReplacePoint(String& sTmpName);
+
+struct _SeqFldLstElem
+{
+ String sDlgEntry;
+ USHORT nSeqNo;
+
+ _SeqFldLstElem( const String& rStr, USHORT nNo )
+ : sDlgEntry( rStr ), nSeqNo( nNo )
+ {}
+};
+SV_DECL_PTRARR_DEL( _SwSeqFldList, _SeqFldLstElem*, 10, 10 )
+
+class SwSeqFldList : public _SwSeqFldList
+{
+public:
+ SwSeqFldList() : _SwSeqFldList( 10, 10 ) {}
+
+ BOOL InsertSort( _SeqFldLstElem* );
+ BOOL SeekEntry( const _SeqFldLstElem& , USHORT* pPos = 0 );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ausdruck
+ --------------------------------------------------------------------*/
+
+class SwGetExpFieldType : public SwValueFieldType
+{
+public:
+ SwGetExpFieldType(SwDoc* pDoc);
+ virtual SwFieldType* Copy() const;
+
+ // ueberlagert, weil das Get-Field nicht veraendert werden kann
+ // und dann auch nicht aktualisiert werden muss. Aktualisierung
+ // erfolgt beim Aendern von Set-Werten !
+
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: GetExperession
+ --------------------------------------------------------------------*/
+
+class SwGetExpField : public SwFormulaField
+{
+ String sExpand;
+ BOOL bIsInBodyTxt;
+ USHORT nSubType;
+
+public:
+ SwGetExpField( SwGetExpFieldType*, const String& rFormel,
+ USHORT nSubType = GSE_EXPR, ULONG nFmt = 0);
+
+ virtual void SetValue( const double& rVal );
+ virtual void SetLanguage(USHORT nLng);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ inline const String& GetExpStr() const;
+ inline void ChgExpStr(const String& rExpand);
+
+ // wird von der Formatierung abgefragt
+ inline BOOL IsInBodyTxt() const;
+ // wird von UpdateExpFlds gesetzt (dort ist die Node-Position bekannt)
+ inline void ChgBodyTxtFlag( BOOL bIsInBody );
+ // fuer Felder in Header/Footer/Footnotes/Flys:
+ // (wird nur von der Formatierung aufgerufen!!)
+ void ChangeExpansion( const SwFrm&, const SwTxtFld& );
+
+ virtual String GetCntnt(BOOL bName = FALSE) const;
+
+ // Die Formel aendern
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+
+ virtual USHORT GetSubType() const;
+ virtual void SetSubType(USHORT nType);
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+
+ static USHORT GetReferenceTextPos( const SwFmtFld& rFmt, SwDoc& rDoc);
+};
+
+inline void SwGetExpField::ChgExpStr(const String& rExpand)
+ { sExpand = rExpand;}
+
+inline const String& SwGetExpField::GetExpStr() const
+ { return sExpand; }
+
+// wird von der Formatierung abgefragt
+inline BOOL SwGetExpField::IsInBodyTxt() const
+ { return bIsInBodyTxt; }
+
+// wird von UpdateExpFlds gesetzt (dort ist die Node-Position bekannt)
+inline void SwGetExpField::ChgBodyTxtFlag( BOOL bIsInBody )
+ { bIsInBodyTxt = bIsInBody; }
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ausdruck setzen
+ --------------------------------------------------------------------*/
+
+class SwSetExpField;
+
+class SwSetExpFieldType : public SwValueFieldType
+{
+ String sName;
+ const SwNode* pOutlChgNd;
+ sal_Unicode cDelim;
+ USHORT nType;
+ BYTE nLevel;
+ BOOL bDeleted;
+
+public:
+ SwSetExpFieldType( SwDoc* pDoc, const String& rName,
+ USHORT nType = GSE_EXPR );
+ virtual SwFieldType* Copy() const;
+ virtual const String& GetName() const;
+
+ inline void SetType(USHORT nTyp);
+ inline USHORT GetType() const;
+
+ void SetSeqFormat(ULONG nFormat);
+ ULONG GetSeqFormat();
+
+ BOOL IsDeleted() const { return bDeleted; }
+ void SetDeleted( BOOL b ) { bDeleted = b; }
+
+ // ueberlagert, weil das Set-Field selbst dafuer sorgt, das
+ // es aktualisiert wird.
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew );
+ inline const String& GetSetRefName() const;
+
+ USHORT SetSeqRefNo( SwSetExpField& rFld );
+
+ USHORT GetSeqFldList( SwSeqFldList& rList );
+ String MakeSeqName( USHORT nSeqNo );
+
+ // Seqencefelder ggfs. Kapitelweise numerieren
+ sal_Unicode GetDelimiter() const { return cDelim; }
+ void SetDelimiter( sal_Unicode c ) { cDelim = c; }
+ BYTE GetOutlineLvl() const { return nLevel; }
+ void SetOutlineLvl( BYTE n ) { nLevel = n; }
+ void SetChapter( SwSetExpField& rFld, const SwNode& rNd );
+ // Member nur fuers SwDoc::UpdateExpFld - wird nur waehrend der Laufzeit
+ // von SequencefeldTypen benoetigt!!!
+ const SwNode* GetOutlineChgNd() const { return pOutlChgNd; }
+ void SetOutlineChgNd( const SwNode* p ) { pOutlChgNd = p; }
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+inline void SwSetExpFieldType::SetType( USHORT nTyp )
+{
+ nType = nTyp;
+ EnableFormat( !(nType & (GSE_SEQ|GSE_STRING)));
+}
+
+inline USHORT SwSetExpFieldType::GetType() const
+ { return nType; }
+
+inline const String& SwSetExpFieldType::GetSetRefName() const
+ { return sName; }
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ausdruck
+ --------------------------------------------------------------------*/
+
+class SwSetExpField : public SwFormulaField
+{
+ String sExpand;
+ String aPText;
+ String aSeqText;
+ BOOL bInput;
+ USHORT nSeqNo;
+ USHORT nSubType;
+
+public:
+ SwSetExpField(SwSetExpFieldType*, const String& rFormel, ULONG nFmt = 0);
+
+ virtual void SetValue( const double& rVal );
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ inline const String& GetExpStr() const;
+
+ inline void ChgExpStr( const String& rExpand );
+
+ inline void SetPromptText(const String& rStr);
+ inline const String& GetPromptText() const;
+
+ inline void SetInputFlag(BOOL bInp);
+ inline BOOL GetInputFlag() const;
+
+ inline void SetSeqText(const String& rStr);
+ inline const String& GetSeqText() const;
+
+ virtual String GetCntnt(BOOL bName = FALSE) const;
+ virtual USHORT GetSubType() const;
+ virtual void SetSubType(USHORT nType);
+
+ inline BOOL IsSequenceFld() const;
+
+ // fuer SequenceFelder - logische Nummer
+ inline void SetSeqNumber( USHORT n ) { nSeqNo = n; }
+ inline USHORT GetSeqNumber() const { return nSeqNo; }
+
+ // Der Name nur erfragen
+ virtual const String& GetPar1() const;
+
+ // Die Formel
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+inline const String& SwSetExpField::GetExpStr() const
+ { return sExpand; }
+
+inline void SwSetExpField::ChgExpStr( const String& rExpand )
+ { sExpand = rExpand; }
+
+inline void SwSetExpField::SetPromptText(const String& rStr)
+ { aPText = rStr; }
+
+inline const String& SwSetExpField::GetPromptText() const
+ { return aPText; }
+
+inline void SwSetExpField::SetSeqText(const String& rStr)
+ { aSeqText = rStr; }
+
+inline const String& SwSetExpField::GetSeqText() const
+ { return aSeqText; }
+
+inline void SwSetExpField::SetInputFlag(BOOL bInp)
+ { bInput = bInp; }
+
+inline BOOL SwSetExpField::GetInputFlag() const
+ { return bInput; }
+
+inline BOOL SwSetExpField::IsSequenceFld() const
+ { return 0 != (GSE_SEQ & ((SwSetExpFieldType*)GetTyp())->GetType()); }
+
+/*--------------------------------------------------------------------
+ Beschreibung: Eingabe im Text/Variable setzen
+ --------------------------------------------------------------------*/
+
+class SwInputFieldType : public SwFieldType
+{
+ SwDoc* pDoc;
+public:
+ SwInputFieldType( SwDoc* pDoc );
+
+ virtual SwFieldType* Copy() const;
+
+ SwDoc* GetDoc() const { return pDoc; }
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Eingabefeld
+ --------------------------------------------------------------------*/
+
+class SwInputField : public SwField
+{
+ String aContent;
+ String aPText;
+ USHORT nSubType;
+public:
+ // Direkte Eingabe ueber Dialog alten Wert loeschen
+ SwInputField(SwInputFieldType*, const String& rContent ,
+ const String& rPrompt, USHORT nSubType = 0,
+ ULONG nFmt = 0);
+
+ virtual String GetCntnt(BOOL bName = FALSE) const;
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ // Content
+ virtual const String& GetPar1() const;
+ virtual void SetPar1(const String& rStr);
+
+ // aPromptText
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+
+ virtual USHORT GetSubType() const;
+ virtual void SetSubType(USHORT nSub);
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Sortieren der Eingabefelder
+ --------------------------------------------------------------------*/
+
+class SwInputFieldList
+{
+public:
+ SwInputFieldList( SwEditShell* pShell, FASTBOOL bBuildTmpLst = FALSE );
+ ~SwInputFieldList();
+
+ USHORT Count() const;
+ SwField* GetField(USHORT nId);
+
+ void GotoFieldPos(USHORT nId);
+ void PushCrsr();
+ void PopCrsr();
+
+ // vergleiche TmpLst mit akt Feldern. Alle neue kommen in die SortLst
+ // damit sie geupdatet werden koennen. Returnt die Anzahl.
+ // (Fuer Textbausteine: nur seine Input-Felder aktualisieren)
+ USHORT BuildSortLst();
+
+ // Alle unselektierten Felder aus Liste entfernen
+ void RemoveUnselectedFlds();
+
+private:
+ SwEditShell* pSh;
+ _SetGetExpFlds* pSrtLst;
+ SvPtrarr aTmpLst;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Tabellen-Formelfeld
+ (Implementierung steht in tblcalc.cxx)
+ --------------------------------------------------------------------*/
+
+class SwTblFieldType : public SwValueFieldType
+{
+public:
+ SwTblFieldType(SwDoc* pDocPtr);
+ virtual SwFieldType* Copy() const;
+};
+
+
+// MSC will den hier nicht
+//typedef void (SwField:: *FnScanFormel)( const SwTable&, String&,
+// String&, String* = 0, void* = 0 );
+
+
+class SwTblField : public SwValueField, public SwTableFormula
+{
+ String sExpand;
+ USHORT nSubType;
+
+ // suche den TextNode, in dem das Feld steht
+ virtual const SwNode* GetNodeOfFormula() const;
+
+public:
+ SwTblField( SwTblFieldType*, const String& rFormel,
+ USHORT nSubType = 0, ULONG nFmt = 0);
+
+ virtual void SetValue( const double& rVal );
+ virtual USHORT GetSubType() const;
+ virtual void SetSubType(USHORT nType);
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ const String& GetExpStr() const { return sExpand; }
+ void ChgExpStr(const String& rStr) { sExpand = rStr; }
+
+ // berechne sich selbst
+ void CalcField( SwTblCalcPara& rCalcPara );
+
+ virtual String GetCntnt(BOOL bName = FALSE) const;
+
+ // Die Formel
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+
+#endif // _EXPFLD_HXX
diff --git a/sw/inc/extinput.hxx b/sw/inc/extinput.hxx
new file mode 100644
index 000000000000..4f79b7a64e5c
--- /dev/null
+++ b/sw/inc/extinput.hxx
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * $RCSfile: extinput.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _EXTINPUT_HXX
+#define _EXTINPUT_HXX
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_USHORTS
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+
+class CommandExtTextInputData;
+class CommandExtTextInputPosData;
+class Font;
+
+class SwExtTextInput : public SwPaM
+{
+ SvUShorts aAttrs;
+ BOOL bInsText;
+public:
+ SwExtTextInput( const SwPaM& rPam, Ring* pRing = 0 );
+ virtual ~SwExtTextInput();
+
+ void SetInputData( const CommandExtTextInputData& rData );
+ Rectangle* GetPosInputData( const CommandExtTextInputPosData& rFill,
+ const Point* pLayPos = 0 ) const;
+ void InvalidateRange();
+ void SetFontForPos( USHORT nPos, Font& rFont );
+ const SvUShorts& GetAttrs() const { return aAttrs; }
+ BOOL IsInsText() const { return bInsText; }
+ void SetInsText( BOOL bFlag ) { bInsText = bFlag; }
+};
+
+#endif //_EXTINPUT_HXX
+
diff --git a/sw/inc/fchrfmt.hxx b/sw/inc/fchrfmt.hxx
new file mode 100644
index 000000000000..91b654861472
--- /dev/null
+++ b/sw/inc/fchrfmt.hxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * $RCSfile: fchrfmt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FCHRFMT_HXX
+#define _FCHRFMT_HXX
+
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+#ifndef _CALBCK_HXX //autogen
+#include <calbck.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+
+class SwCharFmt;
+class International;
+
+// ATT_CHARFMT *********************************************
+
+
+class SwFmtCharFmt: public SfxPoolItem, public SwClient
+{
+ friend class SwTxtCharFmt;
+ SwTxtCharFmt* pTxtAttr; // mein TextAttribut
+public:
+ SwFmtCharFmt( SwCharFmt *pFmt );
+ SwFmtCharFmt( const SwFmtCharFmt& rAttr );
+ ~SwFmtCharFmt(); // fuer SEXPORT
+ TYPEINFO();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) 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 );
+ //
+ // XML import cannot be done using importXML, because the SwCharFmt's
+ // name must be adjusted according to the pool id and access to the SwDoc
+ // is required.
+ virtual BOOL exportXML( NAMESPACE_RTL(OUString)& rValue, USHORT,
+ const SvXMLUnitConverter& ) const;
+
+ // an das SwTxtCharFmt weiterleiten (vom SwClient)
+ virtual void Modify( SfxPoolItem*, SfxPoolItem* );
+ virtual BOOL GetInfo( SfxPoolItem& rInfo ) const;
+
+ void SetCharFmt( SwFmt* pFmt ) { pFmt->Add(this); }
+ SwCharFmt* GetCharFmt() const { return (SwCharFmt*)GetRegisteredIn(); }
+};
+#endif
+
diff --git a/sw/inc/fesh.hxx b/sw/inc/fesh.hxx
new file mode 100644
index 000000000000..7117003c5e78
--- /dev/null
+++ b/sw/inc/fesh.hxx
@@ -0,0 +1,654 @@
+/*************************************************************************
+ *
+ * $RCSfile: fesh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FESH_HXX
+#define _FESH_HXX
+
+#ifndef _EDITSH_HXX
+#include <editsh.hxx>
+#endif
+#ifndef _ORNTENUM_HXX
+#include <orntenum.hxx>
+#endif
+#ifndef _FLYENUM_HXX
+#include <flyenum.hxx>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XSPELLCHECKER1_HPP_
+#include <com/sun/star/linguistic/XSpellChecker1.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XHYPHENATOR_HPP_
+#include <com/sun/star/linguistic/XHyphenator.hpp>
+#endif
+
+class SwFlyFrm;
+class SvEmbeddedObject;
+class SwTabCols;
+class SvEmbeddedObjectRef;
+class SvInPlaceObject;
+class SvxBrushItem;
+class SwTableAutoFmt;
+class SwFrm;
+class SwTabFrm;
+class SwFmtFrmSize;
+class SvxBorderLine;
+class SvStorageStream;
+class SdrObject;
+class Color;
+class Outliner;
+class SotDataObject;
+class SdrViewUserMarker;
+class SwFrmFmt;
+struct SwSortOptions;
+
+enum FrmType
+{
+ //Fuer GetFrmType() und GetSelFrmType(). Der Return-Wert ist eine
+ //Veroderung.
+ FRMTYPE_NONE = 0,
+ FRMTYPE_PAGE = 1,
+ FRMTYPE_HEADER = 2,
+ FRMTYPE_FOOTER = 4,
+ FRMTYPE_BODY = 8,
+ FRMTYPE_COLUMN = 16,
+ FRMTYPE_TABLE = 32,
+ FRMTYPE_FLY_FREE = 64,
+ FRMTYPE_FLY_ATCNT = 128,
+ FRMTYPE_FLY_INCNT = 256,
+ FRMTYPE_FOOTNOTE = 512,
+ FRMTYPE_FTNPAGE = 1024,
+ FRMTYPE_FLY_ANY = 2048,
+ FRMTYPE_DRAWOBJ = 4096,
+ FRMTYPE_COLSECT = 8192,
+ FRMTYPE_COLSECTOUTTAB = 16384
+};
+
+#define FRMTYPE_ANYCOLSECT ( FRMTYPE_COLSECT | FRMTYPE_COLSECTOUTTAB )
+
+enum DrawObjType
+{
+ DRAW_ANY,
+ DRAW_CONTROL,
+ DRAW_SIMPLE
+};
+
+enum FlyProtectType
+{
+ FLYPROTECT_CONTENT = 1, // kann verodert werden!
+ FLYPROTECT_SIZE = 2,
+ FLYPROTECT_POS = 4,
+ FLYPROTECT_PARENT = 8, // nur Parents untersuchen
+ FLYPROTECT_FIXED = 16 // nur nicht aufhebbarer Schutz
+ // z.B. durch OLE-Server, gilt auch
+ // fuer Dialog
+};
+
+enum ObjCntType //Fuer das Ermitteln des Cntnts per Positon (D&D)
+{
+ OBJCNT_NONE,
+ OBJCNT_FLY,
+ OBJCNT_GRF,
+ OBJCNT_OLE,
+ OBJCNT_SIMPLE,
+ OBJCNT_CONTROL,
+ OBJCNT_URLBUTTON,
+
+ OBJCNT_GROUPOBJ,
+ OBJCNT_DONTCARE // nicht bestimmbar - unterschiedliche Objecte selektiert
+};
+
+//fuer GetAnyCurRect
+enum CurRectType
+{
+ RECT_PAGE, //Rect der aktuellen Seite.
+ RECT_PAGE_CALC, //... Seite wird ggf. Formatiert
+ RECT_PAGE_PRT, //Rect der aktuellen PrtArea der Seite
+ RECT_FRM, //Rect des aktuellen Rahmen
+ RECT_FLY_EMBEDDED, //Rect des aktuellen FlyFrm
+ RECT_FLY_PRT_EMBEDDED, //Rect der PrtArea des FlyFrm
+ RECT_SECTION, //Rect des aktuellen Bereichs
+ RECT_OUTTABSECTION, //Rect des aktuellen Bereichs,
+ // aber ausserhalb der Tabelle
+ RECT_SECTION_PRT, //Rect der aktuellen PrtArea des Bereichs
+ RECT_OUTTABSECTION_PRT, //Rect der aktuellen PrtArea des Bereichs,
+ // aber ausserhalb der Tabelle
+ RECT_HEADERFOOTER, //Rect des aktuellen Headers/Footer
+ RECT_HEADERFOOTER_PRT //Rect der PrtArea des aktuellen Headers/Footers
+};
+
+struct SwGetCurColNumPara
+{
+ const SwFrmFmt* pFrmFmt;
+ const SwRect* pPrtRect, *pFrmRect;
+ SwGetCurColNumPara() : pFrmFmt( 0 ), pPrtRect( 0 ), pFrmRect( 0 ) {}
+};
+
+#define SW_PASTESDR_INSERT 1
+#define SW_PASTESDR_REPLACE 2
+#define SW_PASTESDR_SETATTR 3
+
+
+class SwFEShell : public SwEditShell
+{
+ SdrViewUserMarker *pChainFrom,
+ *pChainTo;
+
+ SwFlyFrm *FindFlyFrm() const;
+ SwFlyFrm *FindFlyFrm( const SvEmbeddedObject *pObj ) const;
+
+ BOOL GotoFly( BOOL bNext, FlyCntType eType = FLYCNTTYPE_ALL );
+
+ //Actions fuer alle Shells beenden und ChangeLink rufen.
+ void EndAllActionAndCall();
+
+ void Scroll( const Point &rPt );
+
+ void ChangeOpaque( BYTE nLayerId );
+
+ void GetStartEndCell( SwLayoutFrm *&prStart, SwLayoutFrm *&prEnd );
+
+ const SwFrm *GetBox( const Point &rPt ) const;
+
+ //0 == in keiner Spalte
+ USHORT _GetCurColNum( const SwFrm *pFrm,
+ SwGetCurColNumPara* pPara ) const;
+
+ void _GetTabCols( SwTabCols &rToFill, const SwFrm *pBox ) const;
+
+ BOOL ImpEndCreate();
+
+ ObjCntType GetObjCntType( const SdrObject& rObj ) const;
+
+ // Methoden fuers kopieren von DrawObjecten
+ BOOL CopyDrawSel( SwFEShell* pDestShell, const Point& rSttPt,
+ const Point& rInsPt, BOOL bIsMove );
+
+public:
+ TYPEINFO();
+ SwFEShell( SwDoc *pDoc,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XSpellChecker1 > &xSpell,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XHyphenator > &xHyph,
+ Window *pWin,
+ SwRootFrm *pMaster = 0, const SwViewOption *pOpt = 0 );
+ SwFEShell( SwEditShell *pShell, Window *pWin );
+ ~SwFEShell();
+
+ // Copy und Paste Methoden fuer das interne Clipboard
+ BOOL Copy( SwDoc* pClpDoc, const String* pNewClpTxt = 0 );
+ BOOL Paste( SwDoc* pClpDoc );
+ // Copy-Methode fuer Drag&Drop
+ BOOL Copy( SwFEShell*, const Point& rSttPt, const Point& rInsPt,
+ BOOL bIsMove = FALSE );
+
+ void SelectFlyFrm( SwFlyFrm& rFrm, BOOL bNew = FALSE );
+
+ // befindet sich der selektierte Rahmen innerhalb eines anderen?
+ const SwFrmFmt* IsFlyInFly();
+ // Innerhalb eines des sichtbaren Ankers?
+ Rectangle *IsAnchorAtPos( const Point &rPt ) const;
+
+//SS fuer DrawObjekte und Rahmen-----------------------------
+
+ //Wenn ein Objekt angegeben wurde, so wird genau diese Markiert (anstatt
+ //ueber die Position zu suchen.
+ BOOL SelectObj( const Point& rSelPt, BOOL bAddSelect = FALSE,
+ BOOL bEnterGroup = FALSE, SdrObject *pObj = 0 );
+ void DelSelectedObj();
+
+ //Selektion nach oben unten bewegen (Z-Order).
+ //TRUE == ganz nach oben/unten
+ //FALSE == einen ueberholen
+ void SelectionToTop ( BOOL bTop = TRUE );
+ void SelectionToBottom( BOOL bBottom = TRUE );
+
+ short GetLayerId() const; //1 Heaven, 0 Hell, -1 Uneindeutig
+ void SelectionToHeaven(); //Ueber dem Dokument
+ void SelectionToHell(); //Unter dem Dokument
+
+ // folgende zwei Methoden returnen den enum SdrHdlKind, um sich ein
+ // includen von SVDRAW.HXX zu ersparen als int deklariert.
+ int IsObjSelectable( const Point& rPt );
+ int IsInsideSelectedObj( const Point& rPt );
+
+ //Returnwerte siehe oben FrmType.
+ //pPt: Crsr bzw. DocPos; bStopAtFly: Bei Flys anhalten oder ueber den Anchor weitergehen
+ // Obgleich (0,TRUE) eine Art Standard ist, sind die Parameter nicht defaultet, damit
+ // bei jeder Benutzung insbesondere das bStopAtFly bewusst genutzt wird.
+ USHORT GetFrmType( const Point *pPt, BOOL bStopAtFly ) const;
+ USHORT GetSelFrmType() const; //Selektion (Drawing)
+
+ ObjCntType GetObjCntType( const Point &rPt, SdrObject *&rpObj ) const;
+ ObjCntType GetObjCntTypeOfSelection( SdrObject** ppObj = 0 ) const;
+
+ //Zum Anpassen der PosAttr bei Ankerwechseln.
+ SwRect GetObjRect() const;
+ //Zum Verschieben von Flys mit der Tastatur
+ SwRect GetFlyRect() const;
+ void CalcBoundRect( SwRect &rRect, RndStdIds nAnchorId,
+ SwRelationOrient eRelOrient = FRAME,
+ BOOL bMirror = FALSE,
+ Point* pRef = NULL,
+ Size* pPercent = NULL ) const;
+
+ // Groesse von Drawobjekten setzen
+ void SetObjRect( const SwRect& rRect );
+
+ long BeginDrag( const Point *pPt, BOOL bProp );
+ long Drag ( const Point *pPt, BOOL bProp );
+ long EndDrag ( const Point *pPt, BOOL bProp );
+ void BreakDrag();
+
+ //Methoden fuer die Statuszeile.
+ Point GetAnchorObjDiff() const; //Abstand zum Anker
+ Point GetObjAbsPos() const; //Absolute Position
+ Size GetObjSize() const; //Groesse, ggf. die umschliessende
+
+ //SS fuer die BriefUmschlaege: hole alle Seitengebundenen Objekte
+ //und setze diese auf eine neue Seite.
+ void GetPageObjs( SvPtrarr& rFillArr );
+ void SetPageObjsNewPage( SvPtrarr& rFillArr, int nOffset = 1 );
+
+ // zeige die aktuelle Selektion an ( ggfs. den Rahmen/DrawObject)
+ virtual void MakeSelVisible();
+
+ // returne das FrmFmt von dem evt. unter dem Point stehenden Object.
+ // Das Object wird nicht selektiert!
+ const SwFrmFmt* GetFmtFromObj( const Point& rPt, SwRect** pRectToFill = 0 ) const;
+ // returns a format too, if the point is over the text of any fly
+ const SwFrmFmt* GetFmtFromAnyObj( const Point& rPt ) const;
+
+ //Welcher Schutz ist am selektierten Objekt gesetzt?
+ BYTE IsSelObjProtected( FlyProtectType eType ) const;
+
+ //Liefert neben der Grafik in rName bei gelinkten Grafiken den Namen mit
+ //Pfad und sonst den Grafiknamen. rbLink ist TRU bei gelinkten Grafiken.
+ const Graphic *GetGrfAtPos( const Point &rDocPos,
+ String &rName, BOOL &rbLink ) const;
+
+//SS fuer Rahmen --------------------------------------------
+
+ BOOL IsFrmSelected() const;
+ BOOL GetFlyFrmAttr( SfxItemSet &rSet ) const;
+ BOOL SetFlyFrmAttr( SfxItemSet &rSet );
+ BOOL ResetFlyFrmAttr( USHORT nWhich, const SfxItemSet* pSet = 0 );
+ const SwFrmFmt *NewFlyFrm( const SfxItemSet &rSet, BOOL bAnchValid = FALSE,
+ SwFrmFmt *pParent = 0 );
+ void SetFlyPos( const Point &rAbsPos);
+ Point FindAnchorPos( const Point &rAbsPos, BOOL bMoveIt = FALSE );
+
+ SwFrmFmt* GetCurFrmFmt() const; //Wenn Rahmen, dann Rahmenvorlage, sonst 0
+ void SetFrmFmt( SwFrmFmt *pFmt, BOOL bKeepOrient = FALSE, Point* pDocPos = 0 ); //Wenn Rahmen, dann Rahmenvorlage setzen
+
+ // finde/loeschen den Fly, in dem der Cursor steht
+ SwFrmFmt* WizzardGetFly();
+ BOOL WizzardDelFly();
+
+ //Selebstaendiges selektieren von Flys
+ BOOL GotoNextFly(FlyCntType eType = FLYCNTTYPE_ALL)
+ { return GotoFly( TRUE, eType ); }
+ BOOL GotoPrevFly(FlyCntType eType = FLYCNTTYPE_ALL)
+ { return GotoFly( FALSE, eType); }
+
+ //iterieren ueber Flys - fuer Basic-Collections
+ USHORT GetFlyCount(FlyCntType eType = FLYCNTTYPE_ALL) const;
+ const SwFrmFmt* GetFlyNum(USHORT nIdx, FlyCntType eType = FLYCNTTYPE_ALL) const;
+
+ //Wenn ein fly selectiert ist, zieht er den Crsr in den ersten CntntFrm
+ const SwFrmFmt* SelFlyGrabCrsr();
+
+ //Get FlyFrameFormat; fuer UI Macro Anbindung an Flys
+ const SwFrmFmt* GetFlyFrmFmt() const;
+
+ //OLE, Server fordert neue Groesse an, die gewuenschten Werte werden
+ //als Rahmenattribute eingestellt. Wenn die Werte nicht erlaubt sind,
+ //so wird von der Formatierung geclippt und eine Scalierung eingestellt.
+ //siehe CalcAndSetScale().
+ void RequestObjectResize( const SwRect &rRect, SvEmbeddedObject *pIPObj );
+
+ //Der Client fuer das OleObject muss bezueglich der Scalierung auf dem
+ //neuesten Stand gehalten werden. Impl in der WrtShell.
+ //Wird ein Pointer auf eine Size uebergeben, so ist diese die aktuelle
+ //Core-Groesse des Objectes. Anderfalls wird die Groesse per GetCurFlyRect()
+ //besorgt.
+ virtual void CalcAndSetScale( SvEmbeddedObjectRef xIPObj,
+ const SwRect *pFlyPrtRect = 0,
+ const SwRect *pFlyFrmRect = 0 ) = 0;
+
+ //Objekte mit ActivateWhenVisible werden beim Paint Connected.
+ //gerufen von notxtfrm::Paint, impl in wrtsh
+ virtual void ConnectObj( SvInPlaceObjectRef xIPObj, const SwRect &rPrt,
+ const SwRect &rFrm ) = 0;
+
+ //Sichbaren Bereich auf das Object setzen, wenn es noch nicht sichtbar ist.
+ void MakeObjVisible( const SvEmbeddedObject *pIPObj ) const;
+
+ // setze am selektierten FlyFrame einen Namen
+ void SetFlyName( const String& rName );
+ const String& GetFlyName() const;
+
+ // erezeuge eindeutige Namen fuer Rahmen
+ String GetUniqueGrfName() const;
+ String GetUniqueOLEName() const;
+ String GetUniqueFrameName() const;
+
+ // springe zum benannten Rahmen (Grafik/OLE)
+ BOOL GotoFly( const String& rName, FlyCntType eType = FLYCNTTYPE_ALL,
+ BOOL bSelFrame = TRUE );
+ // steht an der Position eine Grafik mit einer URL ?
+ const SwFrmFmt* IsURLGrfAtPos( const Point& rPt, String* pURL = 0,
+ String *pTargetFrameName = 0,
+ String *pURLDescription = 0 ) const;
+
+ //Fuer das Chain wird immer der durch das Format spezifizierte Fly
+ //mit dem durch den Point getroffenen verbunden.
+ //In rRect wird das Rect des Flys geliefert (fuer Highlight desselben)
+ int Chainable( SwRect &rRect, const SwFrmFmt &rSource, const Point &rPt ) const;
+ int Chain( SwFrmFmt &rSource, const Point &rPt );
+ void Unchain( SwFrmFmt &rFmt );
+ void HideChainMarker();
+ void SetChainMarker();
+
+ Size GetGraphicDefaultSize() const;
+
+//SS fuer DrawObjekte ---------------------
+
+ //Temporaer um Bug zu umgehen.
+ void CheckUnboundObjects();
+
+ //Achtung: Uneindeutikeiten bei Mehrfachselektionen.
+ BOOL GetObjAttr( SfxItemSet &rSet ) const;
+ BOOL SetObjAttr( const SfxItemSet &rSet );
+
+ BOOL GotoObj( BOOL bNext, DrawObjType eType = DRAW_ANY);
+
+ ULONG ControlCount() const;
+ BOOL GotoControl( ULONG nIndex );
+
+ //Setzen vom DragMode (z.B. Rotate), tut nix bei Rahmenselektion.
+ void SetDragMode( UINT16 eSdrDragMode );
+
+ USHORT IsObjSelected() const; //Liefert gleich die Anzahl der Objekte,
+ //zaehlt aber nicht die Objekte in Gruppen.
+
+ void EndTextEdit(); //Loescht ggf. das Objekt.
+
+ //Ankertyp des selektierten Objektes, -1 bei Uneindeutigkeit oder
+ //Rahmenselektion; FLY_PAGE bzw. FLY_AT_CNTNT aus frmatr.hxx sonst.
+ short GetAnchorId() const;
+
+ //Erzeugen von DrawObjekten, beim Begin wird der Objekttyp mitgegeben.
+ //Beim End kann ein Cmd mitgegeben werden, hier ist ggf.
+ //SDRCREATE_RESTRAINTEND fuer Ende oder SDRCREATE_NEXTPOINT fuer ein
+ //Polygon relevant. Nach dem RESTRAINTEND ist das Objekt erzeugt und
+ //selektiert.
+ //Mit BreakCreate wird der Vorgang abgebrochen, dann ist kein Objekt
+ //mehr selektiert.
+ BOOL BeginCreate( UINT16 eSdrObjectKind, const Point &rPos );
+ BOOL BeginCreate( UINT16 eSdrObjectKind, UINT32 eObjInventor, const Point &);
+ void MoveCreate ( const Point &rPos );
+ BOOL EndCreate ( UINT16 eSdrCreateCmd );
+ void BreakCreate();
+ BOOL IsDrawCreate() const;
+
+ // Funktionen fr Rubberbox, um Draw-Objekte zu selektieren
+ BOOL BeginMark( const Point &rPos );
+ void MoveMark ( const Point &rPos );
+ BOOL EndMark ();
+ void BreakMark();
+
+ //Gruppe erzeugen, aufloesen, nix bei Rahmenselektion.
+ BOOL IsGroupSelected(); //Kann auch eine Mischselektion sein!
+ void GroupSelection(); //Hinterher ist die Gruppe selektiert.
+ void UnGroupSelection(); //Die Einzelobjekte sind Selektiert
+ //Es koennen noch immer Gruppen dabei sein.
+
+ BOOL IsGroupAllowed() const;
+
+ void MirrorSelection( BOOL bHorizontal ); //Bei FALSE Vertikal
+
+ //Umankern. erlaubt sind: FLY_PAGE und FLY_AT_CNTNT des enum RndStdIds aus
+ //frmatr.hxx. Hier kein enum wg. Abhaengigkeiten
+ //Der BOOL ist nur fuer internen Gebrauch! Anker wird nur - anhand der
+ //aktuellen Dokumentposition - neu gesetzt aber nicht umgesetzt.
+ void ChgAnchor( int eAnchorId, BOOL bSameOnly = FALSE,
+ BOOL bPosCorr = TRUE );
+
+ // hole die selectierten DrawObj als Grafik (MetaFile/Bitmap)
+ // Return-Wert besagt ob konvertiert wurde!!
+ BOOL GetDrawObjGraphic( ULONG nFmt, Graphic& rGrf ) const;
+
+ void Paste( SvStorageStream& rStm, USHORT nAction, const Point* pPt = 0 );
+ BOOL Paste( const Graphic &rGrf );
+ BOOL Paste( SotDataObject& rObj, const Point& rPt );
+
+ BOOL IsAlignPossible() const;
+ void SetCalcFieldValueHdl(Outliner* pOutliner);
+
+ //Einfuegen eines DrawObjectes. Das Object muss bereits im DrawModel
+ // angemeldet sein.
+ void Insert( SdrObject& rDrawObj, const SfxItemSet* pFlyAttrSet = 0,
+ SwFrmFmt* = 0, const Point* = 0 );
+
+ BOOL ReplaceSdrObj( const String& rGrfName, const String& rFltName,
+ const Graphic* pGrf = 0 );
+
+//------------------------------------------
+
+ //Auskunft ueber naechstliegenden Inhalt zum uebergebenen Point
+ Point GetCntntPos( const Point& rPoint, BOOL bNext ) const;
+
+ //Layout-Selektion Hiden/Zeigen und aufruf an die CrsrSh weiterreichen.
+ void ShLooseFcs();
+ void ShGetFcs( BOOL bUpdate = TRUE );
+
+ //PageDescriptor-Schnittstelle
+ void ChgCurPageDesc( const SwPageDesc& );
+ USHORT GetCurPageDesc( const BOOL bCalcFrm = TRUE ) const;
+ USHORT GetPageDescCnt() const;
+ SwPageDesc* FindPageDescByName( const String& rName,
+ BOOL bGetFromPool = FALSE,
+ USHORT* pPos = 0 );
+
+ const SwPageDesc& GetPageDesc( USHORT i ) const;
+ void ChgPageDesc( USHORT i, const SwPageDesc& );
+ // if inside all selection only one PageDesc, return this.
+ // Otherwise return 0 pointer
+ const SwPageDesc* GetSelectedPageDescs() const;
+
+ const SwRect& GetAnyCurRect( CurRectType eType,
+ const Point* pPt = 0,
+ const SvEmbeddedObject *pObj = 0 ) const;
+
+ //Seitennummer der Seite in der der Point liegt, 0 wenn keine
+ //getroffen ist.
+ USHORT GetPageNumber( const Point &rPoint ) const;
+ BOOL GetPageNumber( long nYPos, BOOL bAtCrsrPos, USHORT& rPhyNum, USHORT& rVirtNum, String &rDisplay ) const;
+
+
+ void Insert(const String& rGrfName,
+ const String& rFltName,
+ const Graphic* pGraphic = 0,
+ const SfxItemSet* pFlyAttrSet = 0,
+ const SfxItemSet* pGrfAttrSet = 0,
+ SwFrmFmt* = 0 );
+
+ void Insert(SvInPlaceObject *,
+ const SfxItemSet* pFlyAttrSet = 0,
+ const SfxItemSet* pGrfAttrSet = 0,
+ SwFrmFmt* = 0 );
+
+ void GrfToOle( SvInPlaceObject * );
+ void OleToGrf( const Graphic *pGrf );
+
+ //Attribute der Tabelle besorgen/setzen.
+ void GetTblAttr( SfxItemSet & ) const;
+ void SetTblAttr( const SfxItemSet & );
+
+ //Tabelle vollstaendig selektiert?
+ BOOL HasWholeTabSelection() const;
+ //Ist der Inhalt einer Tabellenzelle oder mindestens eine Tabellenzelle
+ //vollstaendig selektiert ist
+ BOOL HasBoxSelection() const;
+
+ BOOL InsertRow( USHORT nCnt, BOOL bBehind );
+ BOOL InsertCol( USHORT nCnt, BOOL bBehind ); // 0 == am Ende
+ BOOL DeleteCol();
+ BOOL DeleteRow();
+
+ BOOL DeleteTblSel(); //Aktuelle Selektion, ggf. die ganze Tabelle.
+
+ USHORT MergeTab(); //Merged selektierte Tabellenteile zusammen
+ //Fehler ueber enum zurueck
+ BOOL SplitTab( BOOL nVert = TRUE, USHORT nCnt = 1); //Zelle Vertikal oder
+ //Horizontal s plitten.
+ BOOL Sort(const SwSortOptions&); //Sortieren.
+
+ void SetRowHeight( const SwFmtFrmSize &rSz );
+ //Der Pointer muss vom Aufrufer zerstoert werden wenn != 0
+ void GetRowHeight( SwFmtFrmSize *&rpSz ) const;
+
+ void SetBoxAlign( USHORT nOrient );
+ USHORT GetBoxAlign() const; //USHRT_MAX fuer uneindeutig!
+
+ //Ausgleichen der Zeilenhoehen. Mit bTstOnly festellen ob mehr als eine
+ //Zeile markiert ist.
+ BOOL BalanceRowHeight( BOOL bTstOnly );
+
+ void SetTabBorders( const SfxItemSet& rSet );
+ void GetTabBorders( SfxItemSet& rSet) const;
+ void SetTabLineStyle(const Color* pColor, BOOL bSetLine = FALSE, const SvxBorderLine* pBorderLine = NULL);
+
+ void SetTabBackground( const SvxBrushItem &rNew );
+ void GetTabBackground( SvxBrushItem &rToFill ) const;
+
+ void SetBoxBackground( const SvxBrushItem &rNew );
+ BOOL GetBoxBackground( SvxBrushItem &rToFill ) const; //FALSE uneindeutig
+
+ void SetRowBackground( const SvxBrushItem &rNew );
+ BOOL GetRowBackground( SvxBrushItem &rToFill ) const; //FALSE uneindeutig
+
+ BOOL IsMouseTabCol( const Point &rPt ) const;
+ void GetMouseTabCols( SwTabCols &ToFill, const Point &rPt ) const;
+ void SetMouseTabCols( const SwTabCols &rNew, BOOL bCurRowOnly,
+ const Point &rPt );
+ void GetTabCols( SwTabCols &rToFill ) const; //Spalten- und Randinfo.
+ void SetTabCols( const SwTabCols &rNew, BOOL bCurRowOnly = TRUE );
+
+ void ProtectCells(); //Falls eine Tabselektion besteht, wird sie ver-
+ // nichtet, wenn der Cursor nicht in Readonly darf
+ void UnProtectCells(); // auf die Tabellenselektin
+ void UnProtectCells( const String& rTblName ); // diese Tabelle
+ void UnProtectTbls(); //bei allen Tabellen in der Selektion den Schutz aufheben
+ BOOL HasTblAnyProtection( const String* pTblName = 0,
+ BOOL* pFullTblProtection = 0 );
+
+ void SetHeadlineRepeat( BOOL bSet );//TRUE: Headline soll widerholt werden.
+ BOOL IsHeadlineRepeat() const;
+ BOOL IsInRepeatedHeadline() const;
+ BOOL IsInHeadline() const;
+
+ //Stellt die Breiten der Zellen so ein, dass der Inhalt moeglichst
+ //nicht umgebrochen werden muss.
+ //bBalance sorgt fuer einen Ausgleich der markierten Spalten.
+ void AdjustCellWidth( BOOL bBalance = FALSE );
+ //Nicht erlaubt, wenn nur leere Zellen selektiert sind.
+ BOOL IsAdjustCellWidthAllowed( BOOL bBalance = FALSE ) const;
+
+ //Ausgleich der Zellenbreiten, mit bTstOnly feststellen, ob mehr als
+ //eine Zelle markiert ist.
+ BOOL BalanceCellWidth( BOOL bTstOnly );
+
+ // AutoFormat fuer die Tabelle/TabellenSelection
+ BOOL SetTableAutoFmt( const SwTableAutoFmt& rNew );
+ // Erfrage wie attributiert ist
+ BOOL GetTableAutoFmt( SwTableAutoFmt& rGet );
+ // aender eine Zellenbreite/-Hoehe/Spaltenbreite/Zeilenhoehe
+ BOOL SetColRowWidthHeight( USHORT eType, USHORT nDiff = 283 );
+ // Autosumme
+ BOOL GetAutoSum( String& rFml ) const;
+
+ //Phy: Tatsaechliche Seitenanzahl.
+ //Virt: Vom User evtl. gesetzten Offset mit einbeziehen.
+ USHORT GetPhyPageNum();
+ USHORT GetVirtPageNum( const BOOL bCalcFrm = TRUE );
+
+ // Setzt an der aktuellen Postion einen neuen Page Offset
+ void SetNewPageOffset( USHORT nOffset );
+ void SetPageOffset( USHORT nOffset ); //Aendert den letzten Page Offset
+ USHORT GetPageOffset() const; //Liefert den letzten Page Offset
+
+ //SS fuer Beschriftungen
+ void InsertLabel( const SwLabelType eType, const String &rTxt,
+ const BOOL bBefore, const USHORT nId,
+ const BOOL bCpyBrd = TRUE );
+
+ //Das Lineal will auch noch etwas von uns wissen.
+ USHORT GetCurColNum( SwGetCurColNumPara* pPara = 0 ) const; //0 == in keiner Spalte
+ USHORT GetCurMouseColNum( const Point &rPt,
+ SwGetCurColNumPara* pPara = 0 ) const;
+ USHORT GetCurTabColNum() const; //0 == in keiner Tabelle
+ USHORT GetCurMouseTabColNum( const Point &rPt ) const;
+ USHORT GetCurOutColNum( SwGetCurColNumPara* pPara = 0 ) const; // aktuelle aeussere Spalte
+ // Die Breite des aktuellen Bereichs fuer Spaltendialog
+ long GetSectionWidth( SwFmt& rFmt ) const;
+};
+
+#endif
diff --git a/sw/inc/fldbas.hxx b/sw/inc/fldbas.hxx
new file mode 100644
index 000000000000..a60f82c18798
--- /dev/null
+++ b/sw/inc/fldbas.hxx
@@ -0,0 +1,522 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldbas.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FLDBAS_HXX
+#define _FLDBAS_HXX
+
+#ifndef FIELDIDS_ONLY // SWG-Testreader!!
+
+#ifndef _LANG_HXX //autogen
+#include <tools/lang.hxx>
+#endif
+#ifndef _DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#include "calbck.hxx"
+
+#ifndef _COM_SUN_STAR_UNO_ANY_HXX_
+#include <com/sun/star/uno/Any.hxx>
+#endif
+
+class SwDoc;
+class Date;
+class Time;
+class _SetGetExpFlds;
+class SwEditShell;
+class SvStringsDtor;
+namespace com{namespace star { namespace sun {namespace uno{ class Any;}}}}
+class SvNumberFormatter;
+
+#endif // FIELDIDS_ONLY
+
+/*--------------------------------------------------------------------
+ Beschreibung: die ID's fuer die Feldtypen
+ --------------------------------------------------------------------*/
+
+enum RES_FIELDS
+{
+// Fuer die alten Dokumente muessen die Field-Which IDS erhalten bleiben !!!!
+ RES_FIELDS_BEGIN,
+ RES_DBFLD = RES_FIELDS_BEGIN,
+ RES_USERFLD,
+ RES_FILENAMEFLD,
+ RES_DBNAMEFLD,
+ RES_DATEFLD,
+ RES_TIMEFLD,
+ RES_PAGENUMBERFLD,
+ RES_AUTHORFLD,
+ RES_CHAPTERFLD,
+ RES_DOCSTATFLD,
+ RES_GETEXPFLD,
+ RES_SETEXPFLD,
+ RES_GETREFFLD,
+ RES_HIDDENTXTFLD,
+ RES_POSTITFLD,
+ RES_FIXDATEFLD,
+ RES_FIXTIMEFLD,
+ RES_REGFLD,
+ RES_VARREGFLD,
+ RES_SETREFFLD,
+ RES_INPUTFLD,
+ RES_MACROFLD,
+ RES_DDEFLD,
+ RES_TABLEFLD,
+ RES_HIDDENPARAFLD,
+ RES_DOCINFOFLD,
+ RES_TEMPLNAMEFLD,
+ RES_DBNEXTSETFLD,
+ RES_DBNUMSETFLD,
+ RES_DBSETNUMBERFLD,
+ RES_EXTUSERFLD,
+ RES_REFPAGESETFLD,
+ RES_REFPAGEGETFLD,
+ RES_INTERNETFLD,
+ RES_JUMPEDITFLD,
+ RES_SCRIPTFLD,
+ RES_DATETIMEFLD,
+ RES_AUTHORITY, //Table of authorities
+ RES_FIELDS_END
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Liste der FieldTypes am UI
+ --------------------------------------------------------------------*/
+
+enum SwFldTypesEnum
+{
+ TYP_BEGIN,
+ TYP_DATEFLD = TYP_BEGIN, // 0
+ TYP_TIMEFLD,
+ TYP_FILENAMEFLD,
+ TYP_DBNAMEFLD,
+ TYP_CHAPTERFLD,
+ TYP_PAGENUMBERFLD,
+ TYP_DOCSTATFLD,
+ TYP_AUTHORFLD,
+ TYP_SETFLD,
+ TYP_GETFLD,
+ TYP_FORMELFLD, // 10
+ TYP_HIDDENTXTFLD,
+ TYP_SETREFFLD,
+ TYP_GETREFFLD,
+ TYP_DDEFLD,
+ TYP_MACROFLD,
+ TYP_INPUTFLD,
+ TYP_HIDDENPARAFLD,
+ TYP_DOCINFOFLD,
+ TYP_DBFLD,
+ TYP_USERFLD, // 20
+ TYP_POSTITFLD,
+ TYP_TEMPLNAMEFLD,
+ TYP_SEQFLD,
+ TYP_DBNEXTSETFLD,
+ TYP_DBNUMSETFLD,
+ TYP_DBSETNUMBERFLD,
+ TYP_CONDTXTFLD,
+ TYP_NEXTPAGEFLD,
+ TYP_PREVPAGEFLD,
+ TYP_EXTUSERFLD, // 30
+ TYP_FIXDATEFLD,
+ TYP_FIXTIMEFLD,
+ TYP_SETINPFLD,
+ TYP_USRINPFLD,
+ TYP_SETREFPAGEFLD,
+ TYP_GETREFPAGEFLD,
+ TYP_INTERNETFLD,
+ TYP_JUMPEDITFLD,
+ TYP_SCRIPTFLD, // 40
+ TYP_AUTHORITY,
+ TYP_END
+};
+
+
+enum SwFileNameFormat
+{
+ FF_BEGIN,
+ FF_NAME = FF_BEGIN,
+ FF_PATHNAME,
+ FF_PATH,
+ FF_NAME_NOEXT,
+ FF_UI_NAME,
+ FF_UI_RANGE,
+ FF_END,
+ FF_FIXED = 0x8000
+};
+
+enum SwVarFormat
+{
+ VVF_CMD = 0x0010, // Kommando anzeigen
+ VVF_INVISIBLE = 0x0040, // unsichtbar
+ VVF_XXP = 0x0400, // 1234%
+ VVF_XX_XXP = 0x0800, // 1.234,56%
+ VVF_CLEAR = 0x000f,
+
+// ab hier neue Formate
+ VVF_SYS = 0x2000, //Zahlenformat aus der Systemeinstellung
+ VVF_X = 0x2100, // 1234
+ VVF_X_X = 0x2200, // 1234,5
+ VVF_X_XX = 0x2300, // 1245,56
+ VVF_XX_X = 0x2400, // 1.234,5
+ VVF_XX_XX = 0x2500, // 1.234,56
+ VVF_XX_XXX = 0x2600, // 1.234,567
+ VVF_SYS_CUR = 0x2700, // W„hrungsformat aus der Systemeinstellung
+ VVF_CUR_X = 0x2800, // DM 1234
+ VVF_CUR_XX_XX = 0x2900, // DM 1234,56 DM 1234,00
+ VVF_CUR_XX_X0 = 0x2a00, // DM 1234,56 DM 1234,--
+ VVF_X_CUR = 0x2b00, // 1234 DM
+ VVF_XX_XX_CUR = 0x2c00, // 1234,56 DM 1234,00 DM
+ VVF_XX_X0_CUR = 0x2d00, // 1234,56 DM 1234,-- DM
+// Kompatibilitaet:
+ VF_CMD = VVF_CMD,
+ VF_INVISIBLE = VVF_INVISIBLE,
+ VF_XXP = VVF_XXP,
+ VF_XX_XXP = VVF_XX_XXP,
+ VF_VISIBLE = VVF_SYS,
+ VF_XX = VVF_X,
+ VF_XX_XX = VVF_XX_XX,
+ VF_XX_XX_CUR = VVF_SYS_CUR,
+ VF_CLEAR = VVF_CLEAR
+
+};
+
+enum SwGetSetExpType
+{
+ GSE_STRING = 0x0001, // String
+ GSE_EXPR = 0x0002, // Expression
+ GSE_INP = 0x0004, // InputField
+ GSE_SEQ = 0x0008, // Sequence
+ GSE_FORMULA = 0x0010 // Formel
+};
+
+enum SwExtendedSubType
+{
+ SUB_CMD = 0x0100, // Kommando anzeigen
+ SUB_INVISIBLE = 0x0200, // unsichtbar
+ SUB_OWN_FMT = 0x0400 // SwDBField: Uebernimmt Formatierung nicht
+ // aus Datenbank
+};
+
+enum SwInputFieldSubType
+{
+ INP_TXT = 0x01,
+ INP_USR = 0x02,
+ INP_VAR = 0x03
+};
+
+
+enum SwUserType
+{
+ UF_STRING = 0x01,
+ UF_EXPR = 0x02
+};
+
+enum SwDateTimeSubType
+{
+ FIXEDFLD = 1,
+ DATEFLD = 2,
+ TIMEFLD = 4
+};
+
+#ifndef FIELDIDS_ONLY // SWG-Testreader!!
+
+
+extern USHORT __FAR_DATA aTypeTab[];
+
+/*--------------------------------------------------------------------
+ Beschreibung: Allgemeine Tools
+ --------------------------------------------------------------------*/
+
+String GetResult(double nVal, ULONG nNumFmt, USHORT nLang = LANGUAGE_SYSTEM);
+void SetErrorStr(const String& rStr);
+//String ExpandDate(const Date& rDate, ULONG nFmt, USHORT nLang);
+//String ExpandTime(const Time& rTime, ULONG nFmt, USHORT nLang);
+String FormatNumber(USHORT nNum, ULONG nFormat);
+
+/*--------------------------------------------------------------------
+ Beschreibung: Instanzen von SwFields und Abgeleiteten kommen 0-n mal vor.
+ Zu jeder Klasse SwFields existiert
+ 1 Instanz der zugehoerigen Typenklasse
+ Basisklasse aller Feldtypen ist SwFieldType
+ --------------------------------------------------------------------*/
+class SwFldNames;
+
+DBG_NAMEEX(SwFieldType);
+
+class SwFieldType : public SwModify
+{
+ USHORT nWhich;
+
+ friend void _FinitUI(); // um den Pointer zu loeschen!
+ static SvStringsDtor* pFldNames;
+
+ static void _GetFldName(); // legt die FldNames an, fldmgr.cxx!
+protected:
+ SwFieldType( USHORT nWhichId );
+
+public:
+
+#ifndef PRODUCT
+ virtual ~SwFieldType();
+#endif
+ static const String& GetTypeStr( USHORT nTypeId );
+
+ // nur in abgeleiteten Klassen
+ virtual const String& GetName() const;
+ virtual SwFieldType* Copy() const = 0;
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+
+ USHORT Which() const { return nWhich; }
+
+ inline void UpdateFlds() const;
+
+ static inline SvStringsDtor* GetFldNames();
+};
+
+inline void SwFieldType::UpdateFlds() const
+{
+ ((SwFieldType*)this)->Modify( 0, 0 );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Basisklasse aller Felder.
+ Ueber Which wird der Typ des Feldes abgefragt.
+ Ueber Expand() wird der expandierte Inhalt
+ des Feldes in Erfahrung gebracht.
+ --------------------------------------------------------------------*/
+
+class SwField
+{
+ USHORT nLang; // Immer ueber SetLanguage aendern!
+ ULONG nFormat;
+
+ SwFieldType* pType;
+protected:
+ void SetFormat(ULONG nSet) {nFormat = nSet;}
+
+ SwField(SwFieldType* pTyp, ULONG nFmt = 0, USHORT nLang = LANGUAGE_SYSTEM);
+public:
+ virtual ~SwField();
+
+ // Typ feststellen
+ inline SwFieldType* GetTyp() const;
+
+ // neuen Typ setzen (wird fuer das Kopieren zwischen Dokumenten benutzt)
+ virtual SwFieldType* ChgTyp( SwFieldType* );
+
+ // Expandierung fuer die Anzeige
+ virtual String Expand() const = 0;
+
+ // liefert den Namen oder den Inhalt
+ virtual String GetCntnt(BOOL bName = FALSE) const;
+ virtual SwField* Copy() const = 0;
+
+ // ResId
+ USHORT Which() const
+#ifdef PRODUCT
+ { return pType->Which(); }
+#else
+ ; // in fldbas.cxx implementiert
+#endif
+
+ // TYP_ID
+ USHORT GetTypeId() const;
+ static USHORT GetResId(USHORT nTypeId, BOOL& bAmbigous);
+ virtual USHORT GetSubType() const;
+ virtual void SetSubType(USHORT);
+
+ // Sprache an der Feldposition
+ inline USHORT GetLanguage() const;
+ virtual void SetLanguage(USHORT nLng);
+
+ // Parameter fuer Dialog und BASIC erfragen
+ inline ULONG GetFormat() const;
+ virtual const String& GetPar1() const;
+ virtual String GetPar2() const;
+
+ virtual String GetFormula() const;
+
+ virtual void ChangeFormat(ULONG n);
+ virtual void SetPar1(const String& rStr);
+ virtual void SetPar2(const String& rStr);
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+ // hat das Feld eine Action auf dem ClickHandler ? (z.B. INetFelder,..)
+ FASTBOOL HasClickHdl() const;
+ // ist es ein Fix-Feld?
+ FASTBOOL IsFixed() const;
+};
+
+inline SwFieldType* SwField::GetTyp() const
+ { return pType; }
+
+inline ULONG SwField::GetFormat() const
+ { return nFormat; }
+
+inline USHORT SwField::GetLanguage() const
+ { return nLang; }
+
+/*--------------------------------------------------------------------
+ Beschreibung: Felder mit Values, die ueber der Numberformatter
+ formatiert werden muessen
+ --------------------------------------------------------------------*/
+
+class SwValueFieldType : public SwFieldType
+{
+ SwDoc* pDoc;
+ BOOL bUseFormat; // Numberformatter verwenden
+
+protected:
+ SwValueFieldType( SwDoc* pDocPtr, USHORT nWhichId );
+ SwValueFieldType( const SwValueFieldType& rTyp );
+
+public:
+ inline SwDoc* GetDoc() const { return pDoc; }
+ inline void SetDoc(SwDoc* pNewDoc) { pDoc = pNewDoc; }
+
+ inline BOOL UseFormat() const { return bUseFormat; }
+ inline void EnableFormat(BOOL bFormat = TRUE) { bUseFormat = bFormat; }
+
+ String ExpandValue(const double& rVal, ULONG nFmt, USHORT nLng=0) const;
+ void DoubleToString(String &rValue, const double &rVal, LanguageType eLng) const;
+ void DoubleToString(String &rValue, const double &rVal, ULONG nFmt) const;
+};
+
+class SwValueField : public SwField
+{
+ double fValue;
+// String sExpand;
+
+protected:
+ SwValueField( SwValueFieldType* pFldType, ULONG nFmt = 0, USHORT nLang = LANGUAGE_SYSTEM, const double fVal = 0.0 );
+ SwValueField( const SwValueField& rFld );
+
+public:
+ virtual SwFieldType* ChgTyp( SwFieldType* );
+ virtual void SetLanguage(USHORT nLng);
+// os: wozu war das denn da?
+// virtual void ChangeFormat(ULONG n);
+
+ inline SwDoc* GetDoc() const { return ((SwValueFieldType*)GetTyp())->GetDoc(); }
+
+ virtual double GetValue() const;
+ virtual void SetValue( const double& rVal );
+
+ inline String ExpandValue(const double& rVal, ULONG nFmt, USHORT nLng=0) const
+ { return ((SwValueFieldType*)GetTyp())->ExpandValue(rVal, nFmt, nLng); }
+
+ static ULONG GetSystemFormat(SvNumberFormatter* pFormatter, ULONG nFmt);
+};
+
+class SwFormulaField : public SwValueField
+{
+ String sFormula;
+
+protected:
+ SwFormulaField( SwValueFieldType* pFldType, ULONG nFmt = 0, const double fVal = 0.0 );
+ SwFormulaField( const SwFormulaField& rFld );
+
+public:
+ virtual String GetFormula() const;
+ void SetFormula(const String& rStr);
+
+ void SetExpandedFormula(const String& rStr);
+ String GetExpandedFormula() const;
+
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Sortierung von Felder nach der Position
+ --------------------------------------------------------------------*/
+class SwFieldList
+{
+public:
+ SwFieldList(SwEditShell* pShell);
+ ~SwFieldList();
+
+ // Felder eines bestimmten Typen aufnehmen
+ void InsertFields(USHORT nTypeId, const String* pName=0);
+
+ USHORT Count() const;
+
+ SwField* GetLastField() const;
+ SwField* GetNextField() const;
+
+private:
+ SwEditShell* pSh;
+ _SetGetExpFlds* pSrtLst;
+};
+
+inline SvStringsDtor* SwFieldType::GetFldNames()
+{
+ if( !SwFieldType::pFldNames )
+ SwFieldType::_GetFldName();
+ return SwFieldType::pFldNames;
+}
+
+#endif // FIELDIDS_ONLY
+
+
+#endif // _FLDBAS_HXX
diff --git a/sw/inc/flddat.hxx b/sw/inc/flddat.hxx
new file mode 100644
index 000000000000..660e8ef3da45
--- /dev/null
+++ b/sw/inc/flddat.hxx
@@ -0,0 +1,180 @@
+/*************************************************************************
+ *
+ * $RCSfile: flddat.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _FLDDAT_HXX
+#define _FLDDAT_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#include "fldbas.hxx"
+
+/*--------------------------------------------------------------------
+ Beschreibung: Formate
+ --------------------------------------------------------------------*/
+
+enum SwDateFormat
+{
+ DF_BEGIN,
+ //neue Formate:
+ DFF_SSYS = DF_BEGIN,
+ DFF_LSYS ,
+ DFF_DMY ,
+ DFF_DMYY ,
+ DFF_DMMY ,
+ DFF_DMMYY,
+ DFF_DMMMY ,
+ DFF_DMMMYY,
+ DFF_DDMMY ,
+ DFF_DDMMMY ,
+ DFF_DDMMMYY ,
+ DFF_DDDMMMY ,
+ DFF_DDDMMMYY ,
+ DFF_MY ,
+ DFF_MD ,
+ DFF_YMD ,
+ DFF_YYMD ,
+ DF_END ,
+// Kompatibilitaet:
+ DF_SSYS = DFF_SSYS,
+ DF_LSYS = DFF_LSYS,
+ DF_SHORT = DFF_DMY,
+ DF_SCENT = DFF_DMYY,
+ DF_LMON = DFF_DMMYY,
+ DF_LMONTH = DFF_DMMMYY,
+ DF_LDAYMON = DFF_DDMMMYY,
+ DF_LDAYMONTH= DFF_DDDMMMYY
+};
+
+enum SwTimeFormat
+{
+ TF_BEGIN,
+ TF_SYSTEM=TF_BEGIN,
+ TF_SSMM_24,
+ TF_SSMM_12,
+ TF_END
+};
+
+enum SwTimeSubFormat
+{
+ TIME_FIX,
+ TIME_VAR
+};
+
+enum SwDateSubFormat
+{
+ DATE_FIX,
+ DATE_VAR
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Datum/Uhrzeitfeld
+ --------------------------------------------------------------------*/
+
+class SwDateTimeFieldType : public SwValueFieldType
+{
+public:
+ SwDateTimeFieldType(SwDoc* pDoc);
+
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Datum/Uhrzeitfeld
+ --------------------------------------------------------------------*/
+
+class SwDateTimeField : public SwValueField
+{
+ USHORT nSubType;
+ long nOffset; // Offset in Minuten
+
+public:
+ SwDateTimeField(SwDateTimeFieldType* pType, USHORT nSubType = DATEFLD,
+ ULONG nFmt = 0, USHORT nLng = 0);
+
+ virtual USHORT GetSubType() const;
+ virtual void SetSubType(USHORT nSub);
+
+ virtual double GetValue() const;
+
+ virtual void SetPar2(const String& rStr);
+ virtual String GetPar2() const;
+
+ inline BOOL IsDate() const
+ { return (nSubType & DATEFLD) != 0; }
+
+ inline void SetOffset(long nMinutes) { nOffset = nMinutes; }
+ inline long GetOffset() const { return nOffset; }
+
+ ULONG GetDate(BOOL bUseOffset = FALSE) const;
+ ULONG GetTime(BOOL bUseOffset = FALSE) const;
+ void SetDateTime(ULONG nDate, ULONG nTime);
+ static double GetDateTime(SwDoc* pDoc, ULONG nDate, ULONG nTime);
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+#endif // _FLDDAT_HXX
diff --git a/sw/inc/fldinit.hxx b/sw/inc/fldinit.hxx
new file mode 100644
index 000000000000..b2003c663a55
--- /dev/null
+++ b/sw/inc/fldinit.hxx
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldinit.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FLDINIT_HXX
+#define _FLDINIT_HXX
+
+/*--------------------------------------------------------------------
+ Beschreibung: Tabelle aller FeldInfos
+ --------------------------------------------------------------------*/
+
+void InitFieldInfo();
+void FinitFieldInfo();
+
+
+#endif // _FLDINIT_HXX
diff --git a/sw/inc/fldupde.hxx b/sw/inc/fldupde.hxx
new file mode 100644
index 000000000000..c491f8f1084c
--- /dev/null
+++ b/sw/inc/fldupde.hxx
@@ -0,0 +1,73 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldupde.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FLDUPDE_HXX
+#define _FLDUPDE_HXX
+
+enum SwFldUpdateFlags
+{
+ AUTOUPD_OFF,
+ AUTOUPD_FIELD_ONLY,
+ AUTOUPD_FIELD_AND_CHARTS,
+ AUTOUPD_GLOBALSETTING
+};
+
+
+#endif
diff --git a/sw/inc/flyenum.hxx b/sw/inc/flyenum.hxx
new file mode 100644
index 000000000000..85056f0bef4a
--- /dev/null
+++ b/sw/inc/flyenum.hxx
@@ -0,0 +1,89 @@
+/*************************************************************************
+ *
+ * $RCSfile: flyenum.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _FLYENUM_HXX
+#define _FLYENUM_HXX
+
+enum FlyCntType
+{
+ FLYCNTTYPE_ALL = 0,
+ FLYCNTTYPE_FRM,
+ FLYCNTTYPE_GRF,
+ FLYCNTTYPE_OLE
+
+};
+
+//Returnwerte fuer Chainable und Chain
+#define SW_CHAIN_OK 0
+#define SW_CHAIN_NOT_EMPTY 1 //Nur leere Frames duerfen connected werden
+#define SW_CHAIN_IS_IN_CHAIN 2 //Destination ist bereits in einer chain
+#define SW_CHAIN_WRONG_AREA 3 //Destination steht in einer nicht erlaubten
+ //Section (Kopf-/Fusszeile)
+#define SW_CHAIN_NOT_FOUND 4 //Destination und/oder Source nicht gefunden
+#define SW_CHAIN_SOURCE_CHAINED 5 //Source hat bereits einen Follow
+#define SW_CHAIN_SELF 6 //Sich selbst zu verketten ist
+ //natuerlich nicht erleubt.
+
+
+
+#endif
+
+
diff --git a/sw/inc/flypos.hxx b/sw/inc/flypos.hxx
new file mode 100644
index 000000000000..75d8ed745a60
--- /dev/null
+++ b/sw/inc/flypos.hxx
@@ -0,0 +1,97 @@
+/*************************************************************************
+ *
+ * $RCSfile: flypos.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FLYPOS_HXX
+#define _FLYPOS_HXX
+
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+class SwCntntNode;
+class ViewShell;
+class SwFrmFmt;
+class SwNodeIndex;
+
+// Struktur zum Erfragen der akt. freifliegenden Rahmen am Dokument.
+class SwPosFlyFrm
+{
+ const SwFrmFmt* pFrmFmt; // das FlyFrmFmt
+// SwPosition* pPos; // Position in den ContentNode
+ SwNodeIndex* pNdIdx; // es reicht ein Index auf den Node
+ UINT32 nOrdNum;
+public:
+ SwPosFlyFrm( const SwNodeIndex& , const SwFrmFmt*, USHORT nArrPos );
+ virtual ~SwPosFlyFrm(); // virtual fuer die Writer (DLL !!)
+
+ // operatoren fuer das Sort-Array
+ BOOL operator==( const SwPosFlyFrm& );
+ BOOL operator<( const SwPosFlyFrm& );
+
+ const SwFrmFmt& GetFmt() const { return *pFrmFmt; }
+ const SwNodeIndex& GetNdIndex() const { return *pNdIdx; }
+ UINT32 GetOrdNum() const { return nOrdNum; }
+};
+
+typedef SwPosFlyFrm* SwPosFlyFrmPtr;
+SV_DECL_PTRARR_SORT( SwPosFlyFrms, SwPosFlyFrmPtr, 0, 40 )
+
+#endif _FLYPOS_HXX
diff --git a/sw/inc/fmtanchr.hxx b/sw/inc/fmtanchr.hxx
new file mode 100644
index 000000000000..d52d41dacb28
--- /dev/null
+++ b/sw/inc/fmtanchr.hxx
@@ -0,0 +1,130 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtanchr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTANCHR_HXX
+#define _FMTANCHR_HXX
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _SWTYPES_HXX //autogen
+#include <swtypes.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+struct SwPosition;
+class International;
+#define IVER_FMTANCHOR_LONGIDX ((USHORT)1)
+
+//FlyAnchor, Anker des Freifliegenden Rahmen ----
+
+class SwFmtAnchor: public SfxPoolItem
+{
+ SwPosition *pCntntAnchor; //0 Fuer Seitengebundene Rahmen.
+ //Index fuer Absatzgebundene Rahmen.
+ //Position fuer Zeichengebundene Rahmen
+ RndStdIds nAnchorId;
+ USHORT nPageNum; //Seitennummer bei Seitengeb. Rahmen.
+
+public:
+ SwFmtAnchor( RndStdIds eRnd = FLY_PAGE, USHORT nPageNum = 0 );
+ SwFmtAnchor( const SwFmtAnchor &rCpy );
+ ~SwFmtAnchor();
+
+ // Zuweisungsoperator
+ SwFmtAnchor &operator=( const SwFmtAnchor& );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) 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 );
+
+ RndStdIds GetAnchorId() const { return nAnchorId; }
+ USHORT GetPageNum() const { return nPageNum; }
+ const SwPosition *GetCntntAnchor() const { return pCntntAnchor; }
+
+ void SetPageNum( USHORT nNew ) { nPageNum = nNew; }
+
+ void SetType( RndStdIds nRndId ) { nAnchorId = nRndId; }
+ void SetAnchor( const SwPosition *pPos );
+};
+
+inline const SwFmtAnchor &SwAttrSet::GetAnchor(BOOL bInP) const
+ { return (const SwFmtAnchor&)Get( RES_ANCHOR,bInP); }
+
+inline const SwFmtAnchor &SwFmt::GetAnchor(BOOL bInP) const
+ { return aSet.GetAnchor(bInP); }
+#endif
+
diff --git a/sw/inc/fmtclbl.hxx b/sw/inc/fmtclbl.hxx
new file mode 100644
index 000000000000..7d938d60458c
--- /dev/null
+++ b/sw/inc/fmtclbl.hxx
@@ -0,0 +1,102 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtclbl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTCLBL_HXX
+#define _FMTCLBL_HXX
+
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+
+class International;
+
+class SwFmtNoBalancedColumns : public SfxBoolItem
+{
+public:
+ SwFmtNoBalancedColumns( BOOL bFlag = FALSE )
+ : SfxBoolItem( RES_COLUMNBALANCE, bFlag ) {}
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT) const;
+ virtual SvStream& Store(SvStream &, USHORT nItemVersion ) const;
+/* virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+*/ virtual USHORT GetVersion( USHORT nFFVer ) const;
+};
+
+inline const SwFmtNoBalancedColumns &SwAttrSet::GetBalancedColumns(BOOL bInP) const
+ { return (const SwFmtNoBalancedColumns&)Get( RES_COLUMNBALANCE, bInP ); }
+
+inline const SwFmtNoBalancedColumns &SwFmt::GetBalancedColumns(BOOL bInP) const
+ { return aSet.GetBalancedColumns( bInP ); }
+
+#endif
+
diff --git a/sw/inc/fmtclds.hxx b/sw/inc/fmtclds.hxx
new file mode 100644
index 000000000000..1a3f7194048c
--- /dev/null
+++ b/sw/inc/fmtclds.hxx
@@ -0,0 +1,222 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtclds.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTCLDS_HXX
+#define _FMTCLDS_HXX
+
+#ifndef _SV_COLOR_HXX
+#include <vcl/color.hxx>
+#endif
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+
+//Der ColumnDescriptor --------------------------
+
+class SwColumn
+{
+ USHORT nWish; //Wunschbreite incl. Raender.
+ //Verhaelt sich proportional zum Verhaeltniss:
+ //Wunschbreite der Umgebung / aktuelle Breite der Spalte
+ USHORT nUpper; //Oberer Rand
+ USHORT nLower; //Unterer Rand
+ USHORT nLeft; //Linker Rand
+ USHORT nRight; //Rechter Rand
+
+public:
+ SwColumn();
+
+ BOOL operator==( const SwColumn & );
+
+
+ void SetWishWidth( USHORT nNew ) { nWish = nNew; }
+ void SetUpper( USHORT nNew ) { nUpper = nNew; }
+ void SetLower( USHORT nNew ) { nLower = nNew; }
+ void SetLeft ( USHORT nNew ) { nLeft = nNew; }
+ void SetRight( USHORT nNew ) { nRight = nNew; }
+
+ USHORT GetWishWidth() const { return nWish; }
+ USHORT GetUpper() const { return nUpper; }
+ USHORT GetLower() const { return nLower; }
+ USHORT GetLeft () const { return nLeft; }
+ USHORT GetRight() const { return nRight; }
+};
+
+typedef SwColumn* SwColumnPtr;
+SV_DECL_PTRARR_DEL( SwColumns, SwColumnPtr, 0, 2 );
+
+enum SwColLineAdj
+{
+ COLADJ_NONE,
+ COLADJ_TOP,
+ COLADJ_CENTER,
+ COLADJ_BOTTOM
+};
+
+class SwFmtCol : public SfxPoolItem
+{
+// Pen aPen; //Pen fuer die Linine zwischen den Spalten
+ ULONG nLineWidth; //width of the separator line
+ Color aLineColor; //color of the separator line
+
+ BYTE nLineHeight; //Prozentuale Hoehe der Linien
+ //(Relativ zu der Hoehe der Spalten incl. UL).
+ SwColLineAdj eAdj; //Linie wird oben, mittig oder unten ausgerichtet.
+
+ SwColumns aColumns; //Informationen fuer die einzelnen Spalten.
+ USHORT nWidth; //Gesamtwunschbreite aller Spalten.
+
+ BOOL bOrtho; //Nur wenn dieses Flag gesetzt ist wird beim setzen
+ //der GutterWidth eine 'optische Verteilung'
+ //vorgenommen.
+ //Es muss zurueckgesetzt werden wenn an den
+ //Spaltenbreiten bzw. den Raendern gedreht wird.
+ //Wenn es wieder gesetzt wird wird automatisch neu
+ //gemischt (optisch verteilt).
+ //Das Flag ist initial gesetzt.
+
+ void Calc( USHORT nGutterWidth, USHORT nAct );
+
+public:
+ SwFmtCol();
+ SwFmtCol( const SwFmtCol& );
+ ~SwFmtCol();
+
+ SwFmtCol& operator=( const SwFmtCol& );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) 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 SwColumns &GetColumns() const { return aColumns; }
+ SwColumns &GetColumns() { return aColumns; }
+ USHORT GetNumCols() const { return aColumns.Count(); }
+// const Pen& GetLinePen() const { return aPen; }
+ ULONG GetLineWidth() const { return nLineWidth;}
+ const Color& GetLineColor() const { return aLineColor;}
+
+
+ SwColLineAdj GetLineAdj() const { return eAdj; }
+ BOOL IsOrtho() const { return bOrtho; }
+ USHORT GetWishWidth() const { return nWidth; }
+ BYTE GetLineHeight()const { return nLineHeight; }
+
+ //Return USHRT_MAX wenn uneindeutig.
+ //Return die kleinste Breite wenn bMin True ist.
+ USHORT GetGutterWidth( BOOL bMin = FALSE ) const;
+
+// void SetLinePen( const Pen& rNew ) { aPen = rNew; }
+ void SetLineWidth(ULONG nWidth) { nLineWidth = nWidth;}
+ void SetLineColor(const Color& rCol ) { aLineColor = rCol;}
+ void SetLineHeight( BYTE nNew ) { nLineHeight = nNew; }
+ void SetLineAdj( SwColLineAdj eNew ){ eAdj = eNew; }
+ void SetWishWidth( USHORT nNew ) { nWidth = nNew; }
+
+ //Mit dieser Funktion koennen die Spalten (immer wieder) initialisert
+ //werden. Das Ortho Flag wird automatisch gesetzt.
+ void Init( USHORT nNumCols, USHORT nGutterWidth, USHORT nAct );
+
+ //Stellt die Raender fuer die Spalten in aColumns ein.
+ //Wenn das Flag bOrtho gesetzt ist, werden die Spalten neu optisch
+ //verteilt. Ist das Flag nicht gesetzt werden die Spaltenbreiten nicht
+ //veraendert und die Raender werden einfach eingestellt.
+ void SetGutterWidth( USHORT nNew, USHORT nAct );
+
+ //Verteilt ebenfalls automatisch neu wenn das Flag gesetzt wird;
+ //nur dann wird auch der zweite Param. benoetigt und beachtet.
+ void SetOrtho( BOOL bNew, USHORT nGutterWidth, USHORT nAct );
+
+ //Fuer den Reader
+ void _SetOrtho( BOOL bNew ) { bOrtho = bNew; }
+
+ //Berechnet die aktuelle Breite der Spalte nCol.
+ //Das Verhaeltniss von Wunschbreite der Spalte zum Returnwert ist
+ //proportional zum Verhaeltniss des Gesamtwunschwertes zu nAct.
+ USHORT CalcColWidth( USHORT nCol, USHORT nAct ) const;
+
+ //Wie oben, aber es wir die Breite der PrtArea - also das was fuer
+ //den Anwender die Spalte ist - geliefert.
+ USHORT CalcPrtColWidth( USHORT nCol, USHORT nAct ) const;
+};
+
+inline const SwFmtCol &SwAttrSet::GetCol(BOOL bInP) const
+ { return (const SwFmtCol&)Get( RES_COL,bInP); }
+
+inline const SwFmtCol &SwFmt::GetCol(BOOL bInP) const
+ { return aSet.GetCol(bInP); }
+
+#endif
+
diff --git a/sw/inc/fmtcnct.hxx b/sw/inc/fmtcnct.hxx
new file mode 100644
index 000000000000..df18bed1a5a6
--- /dev/null
+++ b/sw/inc/fmtcnct.hxx
@@ -0,0 +1,133 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtcnct.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTCNCT_HXX
+#define _FMTCNCT_HXX
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+#ifndef _CALBCK_HXX //autogen
+#include <calbck.hxx>
+#endif
+
+
+class SwFlyFrmFmt;
+class International;
+
+//Verbindung (Textfluss) zwischen zwei FlyFrms
+
+class SwFmtChain: public SfxPoolItem
+{
+ SwClient aPrev, //Vorgaenger (SwFlyFrmFmt), wenn es diesen gibt.
+ aNext; //Nachfolger (SwFlyFrmFmt), wenn es diesen gibt.
+
+
+public:
+ SwFmtChain() : SfxPoolItem( RES_CHAIN ) {}
+ SwFmtChain( const SwFmtChain &rCpy );
+
+ inline SwFmtChain &operator=( const SwFmtChain& );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+
+ SwFlyFrmFmt* GetPrev() const { return (SwFlyFrmFmt*)aPrev.GetRegisteredIn(); }
+ SwFlyFrmFmt* GetNext() const { return (SwFlyFrmFmt*)aNext.GetRegisteredIn(); }
+
+
+ void SetPrev( SwFlyFrmFmt *pFmt );
+ void SetNext( SwFlyFrmFmt *pFmt );
+};
+
+SwFmtChain &SwFmtChain::operator=( const SwFmtChain &rCpy )
+{
+ SetPrev( rCpy.GetPrev() );
+ SetNext( rCpy.GetNext() );
+ return *this;
+}
+
+
+inline const SwFmtChain &SwAttrSet::GetChain(BOOL bInP) const
+ { return (const SwFmtChain&)Get( RES_CHAIN,bInP); }
+
+inline const SwFmtChain &SwFmt::GetChain(BOOL bInP) const
+ { return aSet.GetChain(bInP); }
+
+#endif
+
diff --git a/sw/inc/fmtcntnt.hxx b/sw/inc/fmtcntnt.hxx
new file mode 100644
index 000000000000..45b00d904c7a
--- /dev/null
+++ b/sw/inc/fmtcntnt.hxx
@@ -0,0 +1,108 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtcntnt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTCNTNT_HXX
+#define _FMTCNTNT_HXX
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+
+class SwNodeIndex;
+class SwStartNode;
+
+//Cntnt, Inhalt des Frame (Header, Footer, Fly) ----
+
+class SwFmtCntnt: public SfxPoolItem
+{
+ SwNodeIndex *pStartNode;
+
+ SwFmtCntnt &operator=( const SwFmtCntnt & ); //Kopieren verboten
+
+public:
+// SwFmtCntnt( const SwNodeIndex *pStartNodeIdx = 0 );
+ SwFmtCntnt( const SwStartNode* pStartNode = 0 );
+ SwFmtCntnt( const SwFmtCntnt &rCpy );
+ ~SwFmtCntnt();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+
+ const SwNodeIndex *GetCntntIdx() const { return pStartNode; }
+ void SetNewCntntIdx( const SwNodeIndex *pIdx );
+};
+
+inline const SwFmtCntnt &SwAttrSet::GetCntnt(BOOL bInP) const
+ { return (const SwFmtCntnt&)Get( RES_CNTNT,bInP); }
+
+inline const SwFmtCntnt &SwFmt::GetCntnt(BOOL bInP) const
+ { return aSet.GetCntnt(bInP); }
+
+#endif
+
diff --git a/sw/inc/fmtcol.hxx b/sw/inc/fmtcol.hxx
new file mode 100644
index 000000000000..57e67b9dbf7a
--- /dev/null
+++ b/sw/inc/fmtcol.hxx
@@ -0,0 +1,301 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtcol.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTCOL_HXX
+#define _FMTCOL_HXX
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef _FORMAT_HXX
+#include <format.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx> // fuer MAXLEVEL
+#endif
+
+class SwDoc; // fuer friend
+
+class SwFmtColl : public SwFmt
+{
+protected:
+ SwFmtColl( SwAttrPool& rPool, const sal_Char* pFmtName,
+ const USHORT* pWhichRanges, SwFmtColl* pDerFrom,
+ USHORT nFmtWhich )
+ : SwFmt( rPool, pFmtName, pWhichRanges, pDerFrom, nFmtWhich )
+ { SetAuto( FALSE ); }
+
+ SwFmtColl( SwAttrPool& rPool, const String &rFmtName,
+ const USHORT* pWhichRanges, SwFmtColl* pDerFrom,
+ USHORT nFmtWhich )
+ : SwFmt( rPool, rFmtName, pWhichRanges, pDerFrom, nFmtWhich )
+ { SetAuto( FALSE ); }
+
+
+private:
+ // erstmal wird nicht kopiert und nicht zugewiesen
+ SwFmtColl(const SwFmtColl & );
+ const SwFmtColl &operator=(const SwFmtColl &);
+};
+
+
+class SwTxtFmtColl: public SwFmtColl
+{
+ friend class SwDoc;
+protected:
+ BYTE nOutlineLevel;
+ SwTxtFmtColl *pNextTxtFmtColl;
+
+ SwTxtFmtColl( SwAttrPool& rPool, const sal_Char* pFmtCollName,
+ SwTxtFmtColl* pDerFrom = 0,
+ USHORT nFmtWh = RES_TXTFMTCOLL )
+ : SwFmtColl( rPool, pFmtCollName, aTxtFmtCollSetRange,
+ pDerFrom, nFmtWh ),
+ nOutlineLevel( NO_NUMBERING ),
+ pNextTxtFmtColl( this )
+ {}
+
+ SwTxtFmtColl( SwAttrPool& rPool, const String &rFmtCollName,
+ SwTxtFmtColl* pDerFrom = 0,
+ USHORT nFmtWh = RES_TXTFMTCOLL )
+ : SwFmtColl( rPool, rFmtCollName, aTxtFmtCollSetRange,
+ pDerFrom, nFmtWh ),
+ nOutlineLevel( NO_NUMBERING ),
+ pNextTxtFmtColl( this )
+ {}
+
+public:
+
+ // zum "abfischen" von UL-/LR-/FontHeight Aenderungen
+ virtual void Modify( SfxPoolItem*, SfxPoolItem* );
+
+ TYPEINFO(); //Bereits in Basisklasse Client drin.
+
+ inline void SetOutlineLevel( BYTE );
+ inline BYTE GetOutlineLevel() const { return nOutlineLevel; }
+
+ inline void SetNextTxtFmtColl(SwTxtFmtColl& rNext);
+ SwTxtFmtColl& GetNextTxtFmtColl() const { return *pNextTxtFmtColl; }
+
+ BOOL IsAtDocNodeSet() const;
+
+/*----------------- JP 09.08.94 17:36 -------------------
+ wird die Funktionalitaet von Zeichenvorlagen an Absatzvorlagen
+ ueberhaupt benoetigt ??
+
+ Wenn, ja dann muessen im TextNode und hier in der TxtCollection ein 2.
+ Attset fuer die Char-Attribute angelegt werden; damit die Vererbung
+ und der Zugriff auf die gesetzen Attribute richtig funktioniert!!
+
+ virtual BOOL SetDerivedFrom( SwFmtColl* pDerFrom = 0 );
+
+ inline SwCharFmt* GetCharFmt() const;
+ inline BOOL IsCharFmtSet() const;
+ void SetCharFmt(SwCharFmt *);
+ void ResetCharFmt();
+inline BOOL SwTxtFmtColl::IsCharFmtSet() const
+{
+ return aCharDepend.GetRegisteredIn() ? TRUE : FALSE;
+}
+inline SwCharFmt* SwTxtFmtColl::GetCharFmt() const
+{
+ return (SwCharFmt*)aCharDepend.GetRegisteredIn();
+}
+--------------------------------------------------*/
+};
+
+typedef SwTxtFmtColl* SwTxtFmtCollPtr;
+SV_DECL_PTRARR(SwTxtFmtColls,SwTxtFmtCollPtr,2,4)
+
+
+class SwGrfFmtColl: public SwFmtColl
+{
+ friend class SwDoc;
+protected:
+ SwGrfFmtColl( SwAttrPool& rPool, const sal_Char* pFmtCollName,
+ SwGrfFmtColl* pDerFrom = 0 )
+ : SwFmtColl( rPool, pFmtCollName, aGrfFmtCollSetRange,
+ pDerFrom, RES_GRFFMTCOLL )
+ {}
+
+ SwGrfFmtColl( SwAttrPool& rPool, const String &rFmtCollName,
+ SwGrfFmtColl* pDerFrom = 0 )
+ : SwFmtColl( rPool, rFmtCollName, aGrfFmtCollSetRange,
+ pDerFrom, RES_GRFFMTCOLL )
+ {}
+
+public:
+ TYPEINFO(); //Bereits in Basisklasse Client drin.
+};
+
+typedef SwGrfFmtColl* SwGrfFmtCollPtr;
+SV_DECL_PTRARR(SwGrfFmtColls,SwGrfFmtCollPtr,2,4)
+
+
+
+//FEATURE::CONDCOLL
+// --------- Bedingte Vorlagen -------------------------------
+
+enum Master_CollConditions
+{
+ PARA_IN_LIST = 0x0001,
+ PARA_IN_OUTLINE = 0x0002,
+ PARA_IN_FRAME = 0x0004,
+ PARA_IN_TABLEHEAD = 0x0008,
+ PARA_IN_TABLEBODY = 0x0010,
+ PARA_IN_SECTION = 0x0020,
+ PARA_IN_FOOTENOTE = 0x0040,
+ PARA_IN_FOOTER = 0x0080,
+ PARA_IN_HEADER = 0x0100,
+ PARA_IN_ENDNOTE = 0x0200,
+ // ...
+ USRFLD_EXPRESSION = (int)0x8000
+};
+
+
+class SwCollCondition : public SwClient
+{
+ ULONG nCondition;
+ union
+ {
+ ULONG nSubCondition;
+ String* pFldExpression;
+ } aSubCondition;
+
+public:
+ TYPEINFO(); //Bereits in Basisklasse Client drin.
+
+
+ SwCollCondition( SwTxtFmtColl* pColl, ULONG nMasterCond,
+ ULONG nSubCond = 0 );
+ SwCollCondition( SwTxtFmtColl* pColl, ULONG nMasterCond,
+ const String& rSubExp );
+ SwCollCondition( const SwCollCondition& rCpy );
+
+ virtual ~SwCollCondition();
+
+ int operator==( const SwCollCondition& rCmp ) const;
+ int operator!=( const SwCollCondition& rCmp ) const
+ { return ! (*this == rCmp); }
+
+ ULONG GetCondition() const { return nCondition; }
+ ULONG GetSubCondition() const { return aSubCondition.nSubCondition; }
+ const String* GetFldExpression() const
+ { return aSubCondition.pFldExpression; }
+
+ void SetCondition( ULONG nCond, ULONG nSubCond );
+ SwTxtFmtColl* GetTxtFmtColl() const { return (SwTxtFmtColl*)GetRegisteredIn(); }
+};
+
+
+typedef SwCollCondition* SwCollConditionPtr;
+SV_DECL_PTRARR_DEL( SwFmtCollConditions, SwCollConditionPtr, 0, 5 );
+
+class SwConditionTxtFmtColl : public SwTxtFmtColl
+{
+ friend class SwDoc;
+protected:
+ SwFmtCollConditions aCondColls;
+
+ SwConditionTxtFmtColl( SwAttrPool& rPool, const sal_Char* pFmtCollName,
+ SwTxtFmtColl* pDerFrom = 0 )
+ : SwTxtFmtColl( rPool, pFmtCollName, pDerFrom, RES_CONDTXTFMTCOLL )
+ {}
+ SwConditionTxtFmtColl( SwAttrPool& rPool, const String &rFmtCollName,
+ SwTxtFmtColl* pDerFrom = 0 )
+ : SwTxtFmtColl( rPool, rFmtCollName, pDerFrom, RES_CONDTXTFMTCOLL )
+ {}
+
+public:
+ TYPEINFO(); //Bereits in Basisklasse Client drin.
+
+ virtual ~SwConditionTxtFmtColl();
+
+ // zum "abfischen" von Aenderungen
+// virtual void Modify( SfxPoolItem*, SfxPoolItem* );
+
+ const SwCollCondition* HasCondition( const SwCollCondition& rCond ) const;
+ const SwFmtCollConditions& GetCondColls() const { return aCondColls; }
+ void InsertCondition( const SwCollCondition& rCond );
+ BOOL RemoveCondition( const SwCollCondition& rCond );
+
+ void SetConditions( const SwFmtCollConditions& );
+};
+
+//FEATURE::CONDCOLL
+
+// ------------- Inline Implementierungen --------------------
+
+inline void SwTxtFmtColl::SetNextTxtFmtColl( SwTxtFmtColl& rNext )
+{
+ pNextTxtFmtColl = &rNext;
+}
+
+inline void SwTxtFmtColl::SetOutlineLevel( BYTE nLevel )
+{
+ ASSERT( nLevel < MAXLEVEL || nLevel == NO_NUMBERING ,
+ "SwTxtFmtColl: Level too low" );
+ nOutlineLevel = nLevel;
+}
+
+
+#endif
+
diff --git a/sw/inc/fmteiro.hxx b/sw/inc/fmteiro.hxx
new file mode 100644
index 000000000000..1ffdeeb96e82
--- /dev/null
+++ b/sw/inc/fmteiro.hxx
@@ -0,0 +1,102 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmteiro.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTEIRO_HXX
+#define _FMTEIRO_HXX
+
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+
+class International;
+
+class SwFmtEditInReadonly : public SfxBoolItem
+{
+public:
+ SwFmtEditInReadonly( USHORT nId = RES_EDIT_IN_READONLY,
+ BOOL bPrt = FALSE ) : SfxBoolItem( nId, bPrt ) {}
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT) const;
+ virtual SvStream& Store(SvStream &, USHORT nItemVersion ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+};
+
+inline const SwFmtEditInReadonly &SwAttrSet::GetEditInReadonly(BOOL bInP) const
+ { return (const SwFmtEditInReadonly&)Get( RES_EDIT_IN_READONLY,bInP); }
+
+inline const SwFmtEditInReadonly &SwFmt::GetEditInReadonly(BOOL bInP) const
+ { return aSet.GetEditInReadonly(bInP); }
+
+#endif
+
diff --git a/sw/inc/fmtflcnt.hxx b/sw/inc/fmtflcnt.hxx
new file mode 100644
index 000000000000..3a494ace8a1a
--- /dev/null
+++ b/sw/inc/fmtflcnt.hxx
@@ -0,0 +1,98 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtflcnt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTFLCNT_HXX
+#define _FMTFLCNT_HXX
+
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+class SwFrmFmt;
+// ATT_FLYCNT *******************************************************
+
+class SwFmtFlyCnt : public SfxPoolItem
+{
+ friend class SwTxtFlyCnt;
+ SwTxtFlyCnt* pTxtAttr; // mein TextAttribut
+ SwFrmFmt* pFmt; // mein Fly/DrawFrame-Format
+ // geschuetzter CopyCtor
+ SwFmtFlyCnt& operator=(const SwFmtFlyCnt& rFlyCnt);
+
+public:
+ SwFmtFlyCnt( SwFrmFmt *pFrmFmt );
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+
+ inline SwFrmFmt *GetFrmFmt() const { return pFmt; }
+ // fuer Undo: loesche "logisch" das FlyFrmFormat, wird sich im
+ // Undo-Object gemerkt.
+ inline void SetFlyFmt( SwFrmFmt* pNew = 0 ) { pFmt = pNew; }
+
+ const SwTxtFlyCnt *GetTxtFlyCnt() const { return pTxtAttr; }
+ SwTxtFlyCnt *GetTxtFlyCnt() { return pTxtAttr; }
+};
+
+#endif
+
diff --git a/sw/inc/fmtfld.hxx b/sw/inc/fmtfld.hxx
new file mode 100644
index 000000000000..ecd0932d92c4
--- /dev/null
+++ b/sw/inc/fmtfld.hxx
@@ -0,0 +1,114 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtfld.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTFLD_HXX
+#define _FMTFLD_HXX
+
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+#ifndef _CALBCK_HXX //autogen
+#include <calbck.hxx>
+#endif
+
+class SwField;
+// ATT_FLD ***********************************
+
+class SwFmtFld : public SfxPoolItem, public SwClient
+{
+ friend class SwTxtFld;
+ friend void _InitCore();
+
+ SwField *pField;
+ SwTxtFld* pTxtAttr; // mein TextAttribut
+ SwFmtFld(); // das default-Attibut
+
+ // geschuetzter CopyCtor
+ SwFmtFld& operator=(const SwFmtFld& rFld);
+public:
+ TYPEINFO();
+
+ SwFmtFld( const SwField &rFld );
+ SwFmtFld( const SwFmtFld& rAttr );
+ ~SwFmtFld();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+
+ virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew );
+ virtual BOOL GetInfo( SfxPoolItem& rInfo ) const;
+
+ const SwField *GetFld() const { return pField; }
+ SwField *GetFld() { return pField; }
+
+ const SwTxtFld *GetTxtFld() const { return pTxtAttr; }
+ SwTxtFld *GetTxtFld() { return pTxtAttr; }
+
+ BOOL IsFldInDoc() const;
+ BOOL IsProtect() const;
+};
+
+
+#endif
+
diff --git a/sw/inc/fmtfordr.hxx b/sw/inc/fmtfordr.hxx
new file mode 100644
index 000000000000..98dde73738ae
--- /dev/null
+++ b/sw/inc/fmtfordr.hxx
@@ -0,0 +1,115 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtfordr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTFORDR_HXX
+#define _FMTFORDR_HXX
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+
+//Die FillOrder ---------------------------------
+
+enum SwFillOrder
+{
+ SW_FILL_ORDER_BEGIN,
+ ATT_TOP_DOWN = SW_FILL_ORDER_BEGIN,
+ ATT_BOTTOM_UP,
+ ATT_LEFT_TO_RIGHT,
+ ATT_RIGHT_TO_LEFT,
+ SW_FILL_ORDER_END
+};
+
+class SwFmtFillOrder: public SfxEnumItem
+{
+public:
+ SwFmtFillOrder( SwFillOrder = ATT_TOP_DOWN );
+ inline SwFmtFillOrder &operator=( const SwFmtFillOrder &rCpy );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual USHORT GetValueCount() const;
+
+ const SwFillOrder GetFillOrder() const { return SwFillOrder(GetValue()); }
+ void SetFillOrder( const SwFillOrder eNew ) { SetValue( USHORT(eNew) ); }
+};
+
+inline SwFmtFillOrder &SwFmtFillOrder::operator=( const SwFmtFillOrder &rCpy )
+{
+ SetValue( rCpy.GetValue() );
+ return *this;
+}
+
+inline const SwFmtFillOrder &SwAttrSet::GetFillOrder(BOOL bInP) const
+ { return (const SwFmtFillOrder&)Get( RES_FILL_ORDER,bInP); }
+
+inline const SwFmtFillOrder &SwFmt::GetFillOrder(BOOL bInP) const
+ { return aSet.GetFillOrder(bInP); }
+
+#endif
+
diff --git a/sw/inc/fmtfsize.hxx b/sw/inc/fmtfsize.hxx
new file mode 100644
index 000000000000..d52461d34d0e
--- /dev/null
+++ b/sw/inc/fmtfsize.hxx
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtfsize.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTFSIZE_HXX
+#define _FMTFSIZE_HXX
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _SWTYPES_HXX //autogen
+#include <swtypes.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+
+class International;
+
+//Die Framesize ---------------------------------
+
+enum SwFrmSize
+{
+ ATT_VAR_SIZE, //Frm ist in der Var-Richtung variabel
+ ATT_FIX_SIZE, //Frm ist in der Var-Richtung unbeweglich
+ ATT_MIN_SIZE //Der Wert in der Var-Richtung beschreibt eine
+ //Minimalgroesse, die nicht unter- wohl aber
+ //ueberschritten werden kann.
+};
+
+class SwFmtFrmSize: public SfxPoolItem
+{
+ Size aSize;
+ SwFrmSize eFrmSize;
+ BYTE nWidthPercent; //Fuer Tabellen kann die Breite in Prozent
+ BYTE nHeightPercent; //angegeben sein.
+ //Fuer Rahmen koennen Hoehe und/oder Breite
+ //in Prozent angegeben sein. Wenn nur eine
+ //der Angaben in Prozent angeben ist, kann
+ //durch den ausgezeichneten Wert 0xFF in der
+ //anderen Prozentangabe bestimmt werden, das
+ //sich diese Richtung proportional zur anderen
+ //verhaelt. Basis fuer die Umrechnung sind fuer
+ //diesen Fall die Angaben in der Size.
+ //Die Prozentwerte beziehen sich immer auf die
+ //Umgebung in der das Objekt steht (PrtArea)
+ //Auf die Bildschirmbreite abzueglich Raender
+ //in der BrowseView wenn die Umgebung die Seite
+ //ist.
+public:
+ SwFmtFrmSize( SwFrmSize eSize = ATT_VAR_SIZE,
+ SwTwips nWidth = 0, SwTwips nHeight = 0 );
+ SwFmtFrmSize& operator=( const SwFmtFrmSize& rCpy );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) 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 );
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+
+ SwFrmSize GetSizeType() const { return eFrmSize; }
+ void SetSizeType( SwFrmSize eSize ) { eFrmSize = eSize; }
+
+ const Size& GetSize() const { return aSize; }
+ void SetSize( const Size &rNew ) { aSize = rNew; }
+
+ SwTwips GetHeight() const { return aSize.Height(); }
+ SwTwips GetWidth() const { return aSize.Width(); }
+ void SetHeight( const SwTwips nNew ) { aSize.Height() = nNew; }
+ void SetWidth ( const SwTwips nNew ) { aSize.Width() = nNew; }
+
+ BYTE GetHeightPercent() const{ return nHeightPercent; }
+ BYTE GetWidthPercent() const { return nWidthPercent; }
+ void SetHeightPercent( BYTE n ) { nHeightPercent = n; }
+ void SetWidthPercent ( BYTE n ) { nWidthPercent = n; }
+
+ // Umrechnung der Groesse zwischen SW31/SW40
+ Size GetSizeConvertedToSw31( const SvxLRSpaceItem *pLRSpace,
+ const SvxULSpaceItem *pULSpace ) const;
+ Size GetSizeConvertedFromSw31( const SvxLRSpaceItem *pLRSpace,
+ const SvxULSpaceItem *pULSpace ) const;
+
+ virtual BOOL importXML( const NAMESPACE_RTL(OUString)& rValue,USHORT,
+ const SvXMLUnitConverter& rUnitConv );
+ virtual BOOL exportXML( NAMESPACE_RTL(OUString)& rValue, USHORT,
+ const SvXMLUnitConverter& rUnitConv ) const;
+};
+
+inline const SwFmtFrmSize &SwAttrSet::GetFrmSize(BOOL bInP) const
+ { return (const SwFmtFrmSize&)Get( RES_FRM_SIZE,bInP); }
+
+inline const SwFmtFrmSize &SwFmt::GetFrmSize(BOOL bInP) const
+ { return aSet.GetFrmSize(bInP); }
+
+#endif
+
diff --git a/sw/inc/fmtftn.hxx b/sw/inc/fmtftn.hxx
new file mode 100644
index 000000000000..45d843289664
--- /dev/null
+++ b/sw/inc/fmtftn.hxx
@@ -0,0 +1,121 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtftn.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTFTN_HXX
+#define _FMTFTN_HXX
+
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+class SwDoc;
+
+// ATT_FTN **********************************************************
+
+class SwFmtFtn: public SfxPoolItem
+{
+ friend class SwTxtFtn;
+ SwTxtFtn* pTxtAttr; //mein TextAttribut
+ String aNumber; //Benutzerdefinierte 'Nummer'
+ USHORT nNumber; //Automatische Nummerierung
+ BOOL bEndNote; //Ist es eine Endnote?
+
+ // geschuetzter CopyCtor
+ SwFmtFtn& operator=(const SwFmtFtn& rFtn);
+ SwFmtFtn( const SwFmtFtn& );
+
+public:
+ SwFmtFtn( BOOL bEndNote = FALSE );
+ ~SwFmtFtn();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+
+ const String &GetNumStr() const { return aNumber; }
+ const USHORT &GetNumber() const { return nNumber; }
+ BOOL IsEndNote() const { return bEndNote;}
+
+ void SetNumStr( const String& rStr ) { aNumber = rStr; }
+ void SetNumber( USHORT nNo ) { nNumber = nNo; }
+ void SetEndNote( BOOL b );
+
+ void SetNumber( const SwFmtFtn& rFtn )
+ { nNumber = rFtn.nNumber; aNumber = rFtn.aNumber; }
+
+ const SwTxtFtn *GetTxtFtn() const { return pTxtAttr; }
+ SwTxtFtn *GetTxtFtn() { return pTxtAttr; }
+
+ void GetFtnText( String& rStr ) const;
+
+ // returnt den anzuzeigenden String der Fuss-/Endnote
+ String GetViewNumStr( const SwDoc& rDoc, BOOL bInclStrs = FALSE ) const;
+};
+
+
+#endif
+
diff --git a/sw/inc/fmtftntx.hxx b/sw/inc/fmtftntx.hxx
new file mode 100644
index 000000000000..4547809ab7e7
--- /dev/null
+++ b/sw/inc/fmtftntx.hxx
@@ -0,0 +1,183 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtftntx.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTFTNTX_HXX
+#define _FMTFTNTX_HXX
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+
+
+enum SwFtnEndPosEnum
+{
+ FTNEND_ATPGORDOCEND, // at page or document end
+ FTNEND_ATTXTEND, // at end of the current text end
+ FTNEND_ATTXTEND_OWNNUMSEQ, // -""- and with own number sequence
+ FTNEND_ATTXTEND_OWNNUMANDFMT, // -""- and with onw numberformat
+ FTNEND_ATTXTEND_END
+};
+
+
+class SwFmtFtnEndAtTxtEnd : public SfxEnumItem
+{
+ String sPrefix;
+ String sSuffix;
+ SwNumType aFmt;
+ USHORT nOffset;
+
+protected:
+ SwFmtFtnEndAtTxtEnd( USHORT nWhich, SwFtnEndPosEnum ePos )
+ : SfxEnumItem( nWhich, ePos ), nOffset( 0 )
+ {}
+ SwFmtFtnEndAtTxtEnd( const SwFmtFtnEndAtTxtEnd& rAttr )
+ : SfxEnumItem( rAttr ), nOffset( rAttr.nOffset ), aFmt( rAttr.aFmt ),
+ sPrefix( rAttr.sPrefix ), sSuffix( rAttr.sSuffix )
+ {}
+
+public:
+ virtual USHORT GetValueCount() const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer ) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+
+ virtual int operator==( const SfxPoolItem& ) 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 );
+
+// will be used at time??
+// void FillVariable( SbxVariable &rVar,
+// SfxMapUnit eCoreMetric,
+// SfxMapUnit eUserMetric ) const;
+// virtual SfxArgumentError SetVariable( const SbxVariable &rVal,
+// SfxMapUnit eCoreMetric,
+// SfxMapUnit eUserMetric );
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+
+ inline BOOL IsAtEnd() const { return FTNEND_ATPGORDOCEND != GetValue(); }
+
+ SwFmtFtnEndAtTxtEnd & operator=( const SwFmtFtnEndAtTxtEnd & rAttr );
+
+ SvxExtNumType GetNumType() const { return aFmt.eType; }
+ void SetNumType( SvxExtNumType eType ) { aFmt.eType = eType; }
+
+ const SwNumType& GetSwNumType() const { return aFmt; }
+
+ USHORT GetOffset() const { return nOffset; }
+ void SetOffset( USHORT nOff ) { nOffset = nOff; }
+
+ const String& GetPrefix() const { return sPrefix; }
+ void SetPrefix(const String& rSet) { sPrefix = rSet; }
+
+ const String& GetSuffix() const { return sSuffix; }
+ void SetSuffix(const String& rSet) { sSuffix = rSet; }
+};
+
+class SwFmtFtnAtTxtEnd : public SwFmtFtnEndAtTxtEnd
+{
+public:
+ SwFmtFtnAtTxtEnd( SwFtnEndPosEnum ePos = FTNEND_ATPGORDOCEND )
+ : SwFmtFtnEndAtTxtEnd( RES_FTN_AT_TXTEND, ePos )
+ {}
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+};
+
+class SwFmtEndAtTxtEnd : public SwFmtFtnEndAtTxtEnd
+{
+public:
+ SwFmtEndAtTxtEnd( SwFtnEndPosEnum ePos = FTNEND_ATPGORDOCEND )
+ : SwFmtFtnEndAtTxtEnd( RES_END_AT_TXTEND, ePos )
+ {
+ SetNumType( SVX_NUM_ROMAN_LOWER );
+ }
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+};
+
+
+
+inline const SwFmtFtnAtTxtEnd &SwAttrSet::GetFtnAtTxtEnd(BOOL bInP) const
+ { return (const SwFmtFtnAtTxtEnd&)Get( RES_FTN_AT_TXTEND, bInP); }
+inline const SwFmtEndAtTxtEnd &SwAttrSet::GetEndAtTxtEnd(BOOL bInP) const
+ { return (const SwFmtEndAtTxtEnd&)Get( RES_END_AT_TXTEND, bInP); }
+
+
+inline const SwFmtFtnAtTxtEnd &SwFmt::GetFtnAtTxtEnd(BOOL bInP) const
+ { return aSet.GetFtnAtTxtEnd(bInP); }
+inline const SwFmtEndAtTxtEnd &SwFmt::GetEndAtTxtEnd(BOOL bInP) const
+ { return aSet.GetEndAtTxtEnd(bInP); }
+
+#endif
+
diff --git a/sw/inc/fmthbsh.hxx b/sw/inc/fmthbsh.hxx
new file mode 100644
index 000000000000..2a9e5f0a5294
--- /dev/null
+++ b/sw/inc/fmthbsh.hxx
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmthbsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTHBSH_HXX
+#define _FMTHBSH_HXX
+
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+// ATT_SOFTHYPH ******************************
+// Attribut fuer benutzerdefinierte Trennstellen.
+
+class SwFmtSoftHyph : public SfxPoolItem
+{
+public:
+ SwFmtSoftHyph();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+
+ inline SwFmtSoftHyph& operator=(const SwFmtSoftHyph& rSH) {
+ return *this;
+ }
+};
+
+// ATT_HARDBLANK ******************************
+// Attribut fuer geschuetzte Leerzeichen.
+
+class SwFmtHardBlank : public SfxPoolItem
+{
+ sal_Unicode cChar;
+public:
+ SwFmtHardBlank( sal_Unicode cCh, BOOL bCheck = TRUE );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+
+ inline sal_Unicode GetChar() const { return cChar; }
+ inline SwFmtHardBlank& operator=(const SwFmtHardBlank& rHB)
+ { cChar = rHB.GetChar(); return *this; }
+};
+
+
+#endif
+
diff --git a/sw/inc/fmthdft.hxx b/sw/inc/fmthdft.hxx
new file mode 100644
index 000000000000..9cbd226e222e
--- /dev/null
+++ b/sw/inc/fmthdft.hxx
@@ -0,0 +1,160 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmthdft.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTHDFT_HXX
+#define _FMTHDFT_HXX
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+#ifndef _CALBCK_HXX //autogen
+#include <calbck.hxx>
+#endif
+
+class SwFrmFmt;
+class International;
+
+
+//Kopfzeile, fuer Seitenformate
+//Client von FrmFmt das den Header beschreibt.
+
+class SwFmtHeader: public SfxPoolItem, public SwClient
+{
+ BOOL bActive; //Nur zur Steuerung (Erzeugung des Inhaltes)
+
+public:
+ SwFmtHeader( BOOL bOn = FALSE );
+ SwFmtHeader( SwFrmFmt *pHeaderFmt );
+ SwFmtHeader( const SwFmtHeader &rCpy );
+ ~SwFmtHeader();
+ SwFmtHeader& operator=( const SwFmtHeader &rCpy );
+
+ TYPEINFO();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+
+ const SwFrmFmt *GetHeaderFmt() const { return (SwFrmFmt*)pRegisteredIn; }
+ SwFrmFmt *GetHeaderFmt() { return (SwFrmFmt*)pRegisteredIn; }
+
+ BOOL IsActive() const { return bActive; }
+ void SetActive( BOOL bNew = TRUE ) { bActive = bNew; }
+};
+
+//Fusszeile, fuer Seitenformate
+//Client von FrmFmt das den Footer beschreibt.
+
+class SwFmtFooter: public SfxPoolItem, public SwClient
+{
+ BOOL bActive; //Nur zur Steuerung (Erzeugung des Inhaltes)
+
+public:
+ SwFmtFooter( BOOL bOn = FALSE );
+ SwFmtFooter( SwFrmFmt *pFooterFmt );
+ SwFmtFooter( const SwFmtFooter &rCpy );
+ ~SwFmtFooter();
+ SwFmtFooter& operator=( const SwFmtFooter &rCpy );
+
+ TYPEINFO();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+
+ const SwFrmFmt *GetFooterFmt() const { return (SwFrmFmt*)pRegisteredIn; }
+ SwFrmFmt *GetFooterFmt() { return (SwFrmFmt*)pRegisteredIn; }
+
+ BOOL IsActive() const { return bActive; }
+ void SetActive( BOOL bNew = TRUE ) { bActive = bNew; }
+};
+
+inline const SwFmtHeader &SwAttrSet::GetHeader(BOOL bInP) const
+ { return (const SwFmtHeader&)Get( RES_HEADER,bInP); }
+inline const SwFmtFooter &SwAttrSet::GetFooter(BOOL bInP) const
+ { return (const SwFmtFooter&)Get( RES_FOOTER,bInP); }
+
+inline const SwFmtHeader &SwFmt::GetHeader(BOOL bInP) const
+ { return aSet.GetHeader(bInP); }
+inline const SwFmtFooter &SwFmt::GetFooter(BOOL bInP) const
+ { return aSet.GetFooter(bInP); }
+
+#endif
+
diff --git a/sw/inc/fmtinfmt.hxx b/sw/inc/fmtinfmt.hxx
new file mode 100644
index 000000000000..752866cff4d5
--- /dev/null
+++ b/sw/inc/fmtinfmt.hxx
@@ -0,0 +1,148 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtinfmt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTINFMT_HXX
+#define _FMTINFMT_HXX
+
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _SFXPOOLITEM_HXX
+#include <svtools/poolitem.hxx>
+#endif
+
+class SvxMacro;
+class SvxMacroTableDtor;
+class International;
+// ATT_INETFMT *********************************************
+
+class SwFmtINetFmt: public SfxPoolItem
+{
+ friend class SwTxtINetFmt;
+
+ String aURL; // die URL
+ String aTargetFrame; // in diesen Frame soll die URL
+ String aINetFmt;
+ String aVisitedFmt;
+ String aName; // Name des Links
+ SvxMacroTableDtor* pMacroTbl;
+ SwTxtINetFmt* pTxtAttr; // mein TextAttribut
+ USHORT nINetId;
+ USHORT nVisitedId;
+public:
+ SwFmtINetFmt( const String& rURL, const String& rTarget );
+ SwFmtINetFmt( const SwFmtINetFmt& rAttr );
+ virtual ~SwFmtINetFmt();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) 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 );
+
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+
+ const SwTxtINetFmt* GetTxtINetFmt() const { return pTxtAttr; }
+ SwTxtINetFmt* GetTxtINetFmt() { return pTxtAttr; }
+
+ const String& GetValue() const { return aURL; }
+ void SetValue( const String& rS ) { aURL = rS; }
+
+ const String& GetName() const { return aName; }
+ void SetName( const String& rNm ) { aName = rNm; }
+
+ const String& GetTargetFrame() const { return aTargetFrame; }
+ void SetTargetFrame( const String& rNm ){ aTargetFrame = rNm; }
+
+ const String& GetINetFmt() const { return aINetFmt; }
+ void SetINetFmt( const String& rNm ) { aINetFmt = rNm; }
+
+ const String& GetVisitedFmt() const { return aVisitedFmt; }
+ void SetVisitedFmt( const String& rNm ) { aVisitedFmt = rNm; }
+
+ USHORT GetINetFmtId() const { return nINetId; }
+ void SetINetFmtId( USHORT nNew ) { nINetId = nNew; }
+
+ USHORT GetVisitedFmtId() const { return nVisitedId; }
+ void SetVisitedFmtId( USHORT nNew ) { nVisitedId = nNew; }
+
+ // setze eine neue oder loesche die akt. MakroTabelle
+ void SetMacroTbl( const SvxMacroTableDtor* pTbl = 0 );
+ const SvxMacroTableDtor* GetMacroTbl() const { return pMacroTbl; }
+
+ // setze / erfrage ein Makro
+ void SetMacro( USHORT nEvent, const SvxMacro& rMacro );
+ const SvxMacro* GetMacro( USHORT nEvent ) const;
+};
+
+
+#endif
+
diff --git a/sw/inc/fmtline.hxx b/sw/inc/fmtline.hxx
new file mode 100644
index 000000000000..cb7ec347a351
--- /dev/null
+++ b/sw/inc/fmtline.hxx
@@ -0,0 +1,113 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtline.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SW_FMTLINE_HXX
+#define SW_FMTLINE_HXX
+
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+class International;
+
+class SwFmtLineNumber: public SfxPoolItem
+{
+ ULONG nStartValue :24; //Startwert fuer den Absatz, 0 == kein Startwert
+ ULONG bCountLines :1; //Zeilen des Absatzes sollen mitgezaehlt werden.
+
+public:
+ SwFmtLineNumber();
+ ~SwFmtLineNumber();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) 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 );
+
+ ULONG GetStartValue() const { return nStartValue; }
+ BOOL IsCount() const { return bCountLines != 0; }
+
+ void SetStartValue( ULONG nNew ) { nStartValue = nNew; }
+ void SetCountLines( BOOL b ) { bCountLines = b; }
+};
+
+inline const SwFmtLineNumber &SwAttrSet::GetLineNumber(BOOL bInP) const
+ { return (const SwFmtLineNumber&)Get( RES_LINENUMBER,bInP); }
+
+inline const SwFmtLineNumber &SwFmt::GetLineNumber(BOOL bInP) const
+ { return aSet.GetLineNumber(bInP); }
+
+#endif
+
diff --git a/sw/inc/fmtlsplt.hxx b/sw/inc/fmtlsplt.hxx
new file mode 100644
index 000000000000..22228c5d0454
--- /dev/null
+++ b/sw/inc/fmtlsplt.hxx
@@ -0,0 +1,104 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtlsplt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTTSPLT_HXX
+#define _FMTTSPLT_HXX
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+class International;
+
+class SwFmtLayoutSplit : public SfxBoolItem
+{
+public:
+ SwFmtLayoutSplit( BOOL bSplit = TRUE ) : SfxBoolItem( RES_LAYOUT_SPLIT, bSplit ) {}
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT) const;
+ virtual SvStream& Store(SvStream &, USHORT nItemVersion ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+
+ virtual BOOL importXML( const NAMESPACE_RTL(OUString)& rValue,USHORT,
+ const SvXMLUnitConverter& rUnitConv );
+ virtual BOOL exportXML( NAMESPACE_RTL(OUString)& rValue, USHORT,
+ const SvXMLUnitConverter& rUnitConv ) const;
+};
+
+inline const SwFmtLayoutSplit &SwAttrSet::GetLayoutSplit(BOOL bInP) const
+ { return (const SwFmtLayoutSplit&)Get( RES_LAYOUT_SPLIT,bInP); }
+
+inline const SwFmtLayoutSplit &SwFmt::GetLayoutSplit(BOOL bInP) const
+ { return aSet.GetLayoutSplit(bInP); }
+
+#endif
+
diff --git a/sw/inc/fmtornt.hxx b/sw/inc/fmtornt.hxx
new file mode 100644
index 000000000000..64b424528295
--- /dev/null
+++ b/sw/inc/fmtornt.hxx
@@ -0,0 +1,206 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtornt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTORNT_HXX
+#define _FMTORNT_HXX
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _SWTYPES_HXX //autogen
+#include <swtypes.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+#ifndef _ORNTENUM_HXX
+#include <orntenum.hxx>
+#endif
+
+class International;
+
+#define IVER_VERTORIENT_REL ((USHORT)0x0001)
+
+class SwFmtVertOrient: public SfxPoolItem
+{
+ SwTwips nYPos; //Enthaelt _immer_ die aktuelle RelPos.
+ SwVertOrient eOrient;
+ SwRelationOrient eRelation;
+public:
+ TYPEINFO();
+ SwFmtVertOrient( SwTwips nY = 0, SwVertOrient eVert = VERT_NONE,
+ SwRelationOrient eRel = PRTAREA );
+ inline SwFmtVertOrient &operator=( const SwFmtVertOrient &rCpy );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) 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 );
+
+ SwVertOrient GetVertOrient() const { return eOrient; }
+ SwRelationOrient GetRelationOrient() const { return eRelation; }
+ void SetVertOrient( SwVertOrient eNew ) { eOrient = eNew; }
+ void SetRelationOrient( SwRelationOrient eNew ) { eRelation = eNew; }
+
+ SwTwips GetPos() const { return nYPos; }
+ void SetPos( SwTwips nNew ) { nYPos = nNew; }
+
+ SwTwips GetPosConvertedToSw31( const SvxULSpaceItem *pULSpace ) const;
+ SwTwips GetPosConvertedFromSw31( const SvxULSpaceItem *pULSpace ) const;
+
+ virtual BOOL importXML( const NAMESPACE_RTL(OUString)& rValue,USHORT,
+ const SvXMLUnitConverter& rUnitConv );
+ virtual BOOL exportXML( NAMESPACE_RTL(OUString)& rValue, USHORT,
+ const SvXMLUnitConverter& rUnitConv ) const;
+};
+
+//SwFmtHoriOrient, wie und woran orientiert --
+// sich der FlyFrm in der Hoizontalen ----------
+
+#define IVER_HORIORIENT_TOGGLE ((USHORT)0x0001)
+#define IVER_HORIORIENT_REL ((USHORT)0x0002)
+
+class SwFmtHoriOrient: public SfxPoolItem
+{
+ SwTwips nXPos; //Enthaelt _immer_ die aktuelle RelPos.
+ SwHoriOrient eOrient;
+ SwRelationOrient eRelation;
+ BOOL bPosToggle : 1; // auf geraden Seiten Position spiegeln
+public:
+ TYPEINFO();
+ SwFmtHoriOrient( SwTwips nX = 0, SwHoriOrient eHori = HORI_NONE,
+ SwRelationOrient eRel = PRTAREA, BOOL bPos = FALSE );
+ inline SwFmtHoriOrient &operator=( const SwFmtHoriOrient &rCpy );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) 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 );
+
+ SwHoriOrient GetHoriOrient() const { return eOrient; }
+ SwRelationOrient GetRelationOrient() const { return eRelation; }
+ void SetHoriOrient( SwHoriOrient eNew ) { eOrient = eNew; }
+ void SetRelationOrient( SwRelationOrient eNew ) { eRelation = eNew; }
+
+ SwTwips GetPos() const { return nXPos; }
+ void SetPos( SwTwips nNew ) { nXPos = nNew; }
+
+ SwTwips GetPosConvertedToSw31( const SvxLRSpaceItem *pLRSpace ) const;
+ SwTwips GetPosConvertedFromSw31( const SvxLRSpaceItem *pLRSpace ) const;
+
+ BOOL IsPosToggle() const { return bPosToggle; }
+ void SetPosToggle( BOOL bNew ) { bPosToggle = bNew; }
+
+ virtual BOOL importXML( const NAMESPACE_RTL(OUString)& rValue,USHORT,
+ const SvXMLUnitConverter& rUnitConv );
+ virtual BOOL exportXML( NAMESPACE_RTL(OUString)& rValue, USHORT,
+ const SvXMLUnitConverter& rUnitConv ) const;
+};
+
+inline SwFmtVertOrient &SwFmtVertOrient::operator=( const SwFmtVertOrient &rCpy )
+{
+ nYPos = rCpy.GetPos();
+ eOrient = rCpy.GetVertOrient();
+ eRelation = rCpy.GetRelationOrient();
+ return *this;
+}
+inline SwFmtHoriOrient &SwFmtHoriOrient::operator=( const SwFmtHoriOrient &rCpy )
+{
+ nXPos = rCpy.GetPos();
+ eOrient = rCpy.GetHoriOrient();
+ eRelation = rCpy.GetRelationOrient();
+ bPosToggle = rCpy.IsPosToggle();
+ return *this;
+}
+
+inline const SwFmtVertOrient &SwAttrSet::GetVertOrient(BOOL bInP) const
+ { return (const SwFmtVertOrient&)Get( RES_VERT_ORIENT,bInP); }
+inline const SwFmtHoriOrient &SwAttrSet::GetHoriOrient(BOOL bInP) const
+ { return (const SwFmtHoriOrient&)Get( RES_HORI_ORIENT,bInP); }
+
+inline const SwFmtVertOrient &SwFmt::GetVertOrient(BOOL bInP) const
+ { return aSet.GetVertOrient(bInP); }
+inline const SwFmtHoriOrient &SwFmt::GetHoriOrient(BOOL bInP) const
+ { return aSet.GetHoriOrient(bInP); }
+
+
+#endif
+
diff --git a/sw/inc/fmtpdsc.hxx b/sw/inc/fmtpdsc.hxx
new file mode 100644
index 000000000000..d8353ea33e87
--- /dev/null
+++ b/sw/inc/fmtpdsc.hxx
@@ -0,0 +1,150 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtpdsc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTPDSC_HXX
+#define _FMTPDSC_HXX
+
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+#ifndef _CALBCK_HXX //autogen
+#include <calbck.hxx>
+#endif
+
+class SwPageDesc;
+class SwHistory;
+class SwPaM;
+class International;
+
+//Pagedescriptor
+//Client vom SwPageDesc der durch das Attribut "beschrieben" wird.
+
+#define IVER_FMTPAGEDESC_NOAUTO ((USHORT)0x0001)
+#define IVER_FMTPAGEDESC_LONGPAGE ((USHORT)0x0002)
+
+class SwFmtPageDesc : public SfxPoolItem, public SwClient
+{
+ // diese "Doc"-Funktion ist friend, um nach dem kopieren das
+ // Auto-Flag setzen zu koennen !!
+ friend BOOL InsAttr( SwDoc*, const SwPaM &, const SfxItemSet&, USHORT,
+ SwHistory* );
+ USHORT nNumOffset; // Seitennummer Offset
+ USHORT nDescNameIdx; // SW3-Reader: Stringpool-Index des Vorlagennamens
+ SwModify* pDefinedIn; // Verweis auf das Objekt, in dem das
+ // Attribut gesetzt wurde (CntntNode/Format)
+
+public:
+ SwFmtPageDesc( const SwPageDesc *pDesc = 0 );
+ SwFmtPageDesc( const SwFmtPageDesc &rCpy );
+ SwFmtPageDesc &operator=( const SwFmtPageDesc &rCpy );
+ ~SwFmtPageDesc();
+
+ TYPEINFO();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) 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 );
+
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew );
+
+ SwPageDesc *GetPageDesc() { return (SwPageDesc*)GetRegisteredIn(); }
+ const SwPageDesc *GetPageDesc() const { return (SwPageDesc*)GetRegisteredIn(); }
+
+ USHORT GetNumOffset() const { return nNumOffset; }
+ void SetNumOffset( USHORT nNum ) { nNumOffset = nNum; }
+
+ // erfrage/setze, wo drin das Attribut verankert ist
+ inline const SwModify* GetDefinedIn() const { return pDefinedIn; }
+ void ChgDefinedIn( const SwModify* pNew ) { pDefinedIn = (SwModify*)pNew; }
+
+ // fuer den SW3-Reader:
+ USHORT GetDescNameIdx() const { return nDescNameIdx; }
+ void SetDescNameIdx( USHORT n ) { nDescNameIdx = n; }
+ //
+ // this item must be ignored while comparing item sets during XML export
+ virtual BOOL equalsXML( const SfxPoolItem& ) const;
+};
+
+inline const SwFmtPageDesc &SwAttrSet::GetPageDesc(BOOL bInP) const
+ { return (const SwFmtPageDesc&)Get( RES_PAGEDESC,bInP); }
+
+inline const SwFmtPageDesc &SwFmt::GetPageDesc(BOOL bInP) const
+ { return aSet.GetPageDesc(bInP); }
+
+
+#endif
+
diff --git a/sw/inc/fmtrfmrk.hxx b/sw/inc/fmtrfmrk.hxx
new file mode 100644
index 000000000000..4886aabdd59a
--- /dev/null
+++ b/sw/inc/fmtrfmrk.hxx
@@ -0,0 +1,102 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtrfmrk.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTRFMRK_HXX
+#define _FMTRFMRK_HXX
+
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+// ATT_REFMARK *******************************************************
+
+class SwFmtRefMark : public SfxPoolItem
+{
+ friend class SwTxtRefMark;
+ SwTxtRefMark* pTxtAttr; // mein TextAttribut
+
+ // geschuetzter CopyCtor
+ SwFmtRefMark& operator=(const SwFmtRefMark& rRefMark);
+ String aRefName;
+
+public:
+ SwFmtRefMark( const String& rTxt );
+ SwFmtRefMark( const SwFmtRefMark& rRefMark );
+ ~SwFmtRefMark( );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+
+ const SwTxtRefMark *GetTxtRefMark() const { return pTxtAttr; }
+ SwTxtRefMark *GetTxtRefMark() { return pTxtAttr; }
+
+ inline String &GetRefName() { return aRefName; }
+ inline const String &GetRefName() const { return aRefName; }
+};
+
+#endif
+
diff --git a/sw/inc/fmtsrnd.hxx b/sw/inc/fmtsrnd.hxx
new file mode 100644
index 000000000000..2e6318821cdf
--- /dev/null
+++ b/sw/inc/fmtsrnd.hxx
@@ -0,0 +1,142 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtsrnd.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTSRND_HXX
+#define _FMTSRND_HXX
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+
+class International;
+
+//SwFmtSurround, wie soll sich der ---------------
+// Dokumentinhalt unter dem Rahmen verhalten ---
+
+enum SwSurround {
+ SURROUND_BEGIN,
+ SURROUND_NONE = SURROUND_BEGIN,
+ SURROUND_THROUGHT,
+ SURROUND_PARALLEL,
+ SURROUND_IDEAL,
+ SURROUND_LEFT,
+ SURROUND_RIGHT,
+ SURROUND_END
+};
+
+class SwFmtSurround: public SfxEnumItem
+{
+ BOOL bAnchorOnly :1;
+ BOOL bContour :1;
+ BOOL bOutside :1;
+public:
+ SwFmtSurround( SwSurround eNew = SURROUND_PARALLEL );
+ SwFmtSurround( const SwFmtSurround & );
+ inline SwFmtSurround &operator=( const SwFmtSurround &rCpy );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual USHORT GetValueCount() const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) 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 );
+
+
+ SwSurround GetSurround()const { return SwSurround( GetValue() ); }
+ BOOL IsAnchorOnly() const { return bAnchorOnly; }
+ BOOL IsContour() const { return bContour; }
+ BOOL IsOutside() const { return bOutside; }
+ void SetSurround ( SwSurround eNew ){ SfxEnumItem::SetValue( USHORT( eNew ) ); }
+ void SetAnchorOnly( BOOL bNew ) { bAnchorOnly = bNew; }
+ void SetContour( BOOL bNew ) { bContour = bNew; }
+ void SetOutside( BOOL bNew ) { bOutside = bNew; }
+};
+
+inline SwFmtSurround &SwFmtSurround::operator=( const SwFmtSurround &rCpy )
+{
+ bAnchorOnly = rCpy.IsAnchorOnly();
+ bContour = rCpy.IsContour();
+ bOutside = rCpy.IsOutside();
+ SfxEnumItem::SetValue( rCpy.GetValue() );
+ return *this;
+}
+
+inline const SwFmtSurround &SwAttrSet::GetSurround(BOOL bInP) const
+ { return (const SwFmtSurround&)Get( RES_SURROUND,bInP); }
+
+inline const SwFmtSurround &SwFmt::GetSurround(BOOL bInP) const
+ { return aSet.GetSurround(bInP); }
+
+#endif
+
diff --git a/sw/inc/fmturl.hxx b/sw/inc/fmturl.hxx
new file mode 100644
index 000000000000..07cf3148ce81
--- /dev/null
+++ b/sw/inc/fmturl.hxx
@@ -0,0 +1,131 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmturl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMTURL_HXX
+#define _FMTURL_HXX
+
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _FORMAT_HXX //autogen
+#include <format.hxx>
+#endif
+
+class ImageMap;
+class International;
+
+// URL, ServerMap und ClientMap
+
+class SwFmtURL: public SfxPoolItem
+{
+ String sTargetFrameName; // in diesen Frame soll die URL
+ String sURL; //Einfache URL
+ String sName; // Name des Anchors
+ ImageMap *pMap; //ClientSide Images
+
+ BOOL bIsServerMap; //mit der URL eine ServerSideImageMap
+
+ SwFmtURL& operator=( const SwFmtURL& );
+
+public:
+ SwFmtURL();
+ SwFmtURL( const SwFmtURL& );
+ ~SwFmtURL();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) 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 );
+
+ void SetTargetFrameName( const String& rStr ) { sTargetFrameName = rStr; }
+ void SetURL( const String &rURL, BOOL bServerMap );
+ void SetMap( const ImageMap *pM ); //Pointer wird kopiert!
+
+ const String &GetTargetFrameName()const { return sTargetFrameName; }
+ const String &GetURL() const { return sURL; }
+ BOOL IsServerMap() const { return bIsServerMap; }
+ const ImageMap *GetMap() const { return pMap; }
+ ImageMap *GetMap() { return pMap; }
+
+ const String& GetName() const { return sName; }
+ void SetName( const String& rNm ) { sName = rNm; }
+};
+
+inline const SwFmtURL &SwAttrSet::GetURL(BOOL bInP) const
+ { return (const SwFmtURL&)Get( RES_URL,bInP); }
+
+inline const SwFmtURL &SwFmt::GetURL(BOOL bInP) const
+ { return aSet.GetURL(bInP); }
+
+#endif
+
diff --git a/sw/inc/format.hxx b/sw/inc/format.hxx
new file mode 100644
index 000000000000..b31111c3ce1e
--- /dev/null
+++ b/sw/inc/format.hxx
@@ -0,0 +1,371 @@
+/*************************************************************************
+ *
+ * $RCSfile: format.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FORMAT_HXX
+#define _FORMAT_HXX
+
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx> // fuer ASSERT
+#endif
+#ifndef _SWATRSET_HXX
+#include <swatrset.hxx> // fuer SfxItemPool/-Set, Attr forward decl.
+#endif
+#ifndef _CALBCK_HXX
+#include <calbck.hxx> // fuer SwModify
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+class SwDoc;
+
+class SwFmt : public SwModify
+{
+ friend class SwSwgReader;
+ friend class SwSwgWriter;
+
+ String aFmtName;
+ SwAttrSet aSet;
+
+ USHORT nWhichId;
+ USHORT nFmtId; // Format-ID fuer Lesen/Schreiben
+ USHORT nPoolFmtId; // Id-fuer "automatich" erzeugte Formate
+ // (ist keine harte Attributierung !!)
+ USHORT nPoolHelpId; // HelpId fuer diese Pool-Vorlage
+ BYTE nPoolHlpFileId; // FilePos ans Doc auf die Vorlagen-Hilfen
+ BOOL bWritten : 1; // TRUE: bereits geschrieben
+ BOOL bAutoFmt : 1; // FALSE: es handelt sich um eine Vorlage
+ // ist dflt immer auf TRUE !
+ BOOL bFmtInDTOR : 1; // TRUE: das Format wird geloscht. Damit man in
+ // der FmtChg-Message das erkennen kann!!!
+ BOOL bAutoUpdateFmt : 1; // TRUE: am Format werden die Attribute
+ // eines kompletten Absatzes gesetzt (UI-seitig!)
+ BOOL bLayerFmt : 1; // nur fuer SwFrmFmt ( LAYER_IMPL )
+
+
+protected:
+ SwFmt( SwAttrPool& rPool, const sal_Char* pFmtNm,
+ const USHORT* pWhichRanges, SwFmt *pDrvdFrm, USHORT nFmtWhich );
+ SwFmt( SwAttrPool& rPool, const String &rFmtNm, const USHORT* pWhichRanges,
+ SwFmt *pDrvdFrm, USHORT nFmtWhich );
+ SwFmt( SwAttrPool& rPool, const String &rFmtNm, USHORT nWhich1,
+ USHORT nWhich2, SwFmt *pDrvdFrm, USHORT nFmtWhich );
+ SwFmt( const SwFmt& rFmt );
+
+public:
+ TYPEINFO(); //Bereits in Basisklasse Client drin.
+
+ virtual ~SwFmt();
+ SwFmt &operator=(const SwFmt&);
+
+ // fuer die Abfrage der Writer-Funktionen
+ USHORT Which() const { return nWhichId; }
+
+ virtual void Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue );
+ // erfrage vom Format Informationen
+ virtual BOOL GetInfo( SfxPoolItem& ) const;
+
+ // kopiere Attribute; auch ueber Dokumentgrenzen hinweg
+ void CopyAttrs( const SwFmt&, BOOL bReplace=TRUE );
+
+ // loesche alle Attribute, die nicht in rFmt stehen
+ void DelDiffs( const SfxItemSet& rSet );
+ void DelDiffs( const SwFmt& rFmt ) { DelDiffs( rFmt.GetAttrSet() ); }
+
+ // Umhaengen des Formats (0 = Default)
+ BOOL SetDerivedFrom(SwFmt *pDerivedFrom = 0);
+
+ // Ist bInParents FALSE,
+ // wird nur in diesem Format nach dem Attribut gesucht.
+ inline const SfxPoolItem& GetAttr( USHORT nWhich,
+ BOOL bInParents = TRUE ) const;
+ inline SfxItemState GetItemState( USHORT nWhich, BOOL bSrchInParent = TRUE,
+ const SfxPoolItem **ppItem = 0 ) const;
+ BOOL SetAttr( const SfxPoolItem& );
+ BOOL SetAttr( const SfxItemSet& rSet );
+
+ // Nimmt den Hint mit nWhich aus dem Delta-Array
+ BOOL ResetAttr( USHORT nWhich1, USHORT nWhich2 = 0 );
+
+ // Nimmt alle Hints aus dem Delta-Array,
+ // liefert die Anzahl der geloeschten Hints
+ USHORT ResetAllAttr();
+
+ inline SwFmt* DerivedFrom() const { return (SwFmt*)pRegisteredIn; }
+ inline BOOL IsDefault() const { return DerivedFrom() == 0; }
+
+ inline const String& GetName() const { return aFmtName; }
+ inline void SetName( const String& rNewName );
+ inline void SetName( const sal_Char* pNewName );
+
+ // zur Abfrage des Attribute Arrays
+ inline const SwAttrSet& GetAttrSet() const { return aSet; }
+
+ // Das Doc wird jetzt am SwAttrPool gesetzt. Dadurch hat man es immer
+ // im Zugriff.
+ const SwDoc *GetDoc() const { return aSet.GetDoc(); }
+ SwDoc *GetDoc() { return aSet.GetDoc(); }
+
+ // erfragen und setzen der Poolvorlagen-Id's
+ USHORT GetPoolFmtId() const { return nPoolFmtId; }
+ void SetPoolFmtId( USHORT nId ) { nPoolFmtId = nId; }
+
+ // erfragen und setzen der Hilfe-Id's fuer die Document-Vorlagen
+ USHORT GetPoolHelpId() const { return nPoolHelpId; }
+ void SetPoolHelpId( USHORT nId ) { nPoolHelpId = nId; }
+ BYTE GetPoolHlpFileId() const { return nPoolHlpFileId; }
+ void SetPoolHlpFileId( BYTE nId ) { nPoolHlpFileId = nId; }
+ // erfrage die Attribut-Beschreibung, returnt den reingereichten String
+ void GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String &rText ) const
+ { aSet.GetPresentation( ePres, eCoreMetric, ePresMetric, rText ); }
+ // Das Format-ID fuer Lesen/Schreiben:
+ USHORT GetFmtId() const { return nFmtId; }
+ void SetWritten() { bWritten = TRUE; }
+ void ResetWritten() { bWritten = FALSE; }
+ BOOL IsWritten() const { return bWritten; }
+
+ // Abfragen/Setzen vom AutoFmt-Flag
+ BOOL IsAuto() const { return bAutoFmt; }
+ void SetAuto( BOOL bNew = FALSE ) { bAutoFmt = bNew; }
+
+ // Abfragen/Setzen vom bAutoUpdateFmt-Flag
+ BOOL IsAutoUpdateFmt() const { return bAutoUpdateFmt; }
+ void SetAutoUpdateFmt( BOOL bNew = TRUE ) { bAutoUpdateFmt = bNew; }
+
+ BOOL IsFmtInDTOR() const { return bFmtInDTOR; }
+
+ BOOL IsLayerFmt() const { return bLayerFmt; }
+ void SetLayerFmt( BOOL bNew ) { bLayerFmt = bNew; }
+
+ BOOL IsFrmFmt() const { return nWhichId == RES_FLYFRMFMT ||
+ nWhichId == RES_DRAWFRMFMT||
+ nWhichId == RES_FRMFMT; }
+
+ // GetMethoden: das Bool gibt an, ob nur im Set (FALSE) oder auch in
+ // den Parents gesucht werden soll. Wird nichts gefunden,
+ // wird das deflt. Attribut returnt.
+ // Charakter-Attribute - impl. steht im charatr.hxx
+ // AMA 12.10.94: Umstellung von SwFmt... auf Svx...
+ inline const SvxPostureItem &GetPosture( BOOL = TRUE ) const;
+ inline const SvxWeightItem &GetWeight( BOOL = TRUE ) const;
+ inline const SvxShadowedItem &GetShadowed( BOOL = TRUE ) const;
+ inline const SvxAutoKernItem &GetAutoKern( BOOL = TRUE ) const;
+ inline const SvxWordLineModeItem &GetWordLineMode( BOOL = TRUE ) const;
+ inline const SvxContourItem &GetContour( BOOL = TRUE ) const;
+ inline const SvxKerningItem &GetKerning( BOOL = TRUE ) const;
+ inline const SvxUnderlineItem &GetUnderline( BOOL = TRUE ) const;
+ inline const SvxCrossedOutItem &GetCrossedOut( BOOL = TRUE ) const;
+ inline const SvxFontHeightItem &GetSize( BOOL = TRUE ) const;
+ inline const SvxPropSizeItem &GetPropSize( BOOL = TRUE ) const;
+ inline const SvxFontItem &GetFont( BOOL = TRUE ) const;
+ inline const SvxColorItem &GetColor( BOOL = TRUE ) const;
+ inline const SvxCharSetColorItem &GetCharSetColor( BOOL = TRUE ) const;
+ inline const SvxLanguageItem &GetLanguage( BOOL = TRUE ) const;
+ inline const SvxEscapementItem &GetEscapement( BOOL = TRUE ) const;
+ inline const SvxCaseMapItem &GetCaseMap( BOOL = TRUE ) const;
+ inline const SvxNoHyphenItem &GetNoHyphenHere( BOOL = TRUE ) const;
+ inline const SvxBlinkItem &GetBlink( BOOL = TRUE ) const;
+ inline const SvxBrushItem &GetChrBackground( BOOL = TRUE ) const;
+
+ inline const SvxFontItem &GetCJKFont( BOOL = TRUE ) const;
+ inline const SvxFontHeightItem &GetCJKSize( BOOL = TRUE ) const;
+ inline const SvxLanguageItem &GetCJKLanguage( BOOL = TRUE ) const;
+ inline const SvxPostureItem &GetCJKPosture( BOOL = TRUE ) const;
+ inline const SvxWeightItem &GetCJKWeight( BOOL = TRUE ) const;
+ inline const SvxFontItem &GetCTLFont( BOOL = TRUE ) const;
+ inline const SvxFontHeightItem &GetCTLSize( BOOL = TRUE ) const;
+ inline const SvxLanguageItem &GetCTLLanguage( BOOL = TRUE ) const;
+ inline const SvxPostureItem &GetCTLPosture( BOOL = TRUE ) const;
+ inline const SvxWeightItem &GetCTLWeight( BOOL = TRUE ) const;
+ inline const SfxBoolItem &GetWritingDirection( BOOL = TRUE ) const;
+
+ // Frame-Attribute - impl. steht im frmatr.hxx,
+ // fuer LINUX, SINIX, HPUX auch in gcc_outl.cxx
+#if ( defined GCC && defined C272 && \
+ ( defined LINUX || defined SINIX || defined HPUX ))
+ const SwFmtFillOrder &GetFillOrder( BOOL = TRUE ) const;
+ const SwFmtFrmSize &GetFrmSize( BOOL = TRUE ) const;
+ const SwFmtHeader &GetHeader( BOOL = TRUE ) const;
+ const SwFmtFooter &GetFooter( BOOL = TRUE ) const;
+ const SwFmtSurround &GetSurround( BOOL = TRUE ) const;
+ const SwFmtHoriOrient &GetHoriOrient( BOOL = TRUE ) const;
+ const SwFmtAnchor &GetAnchor( BOOL = TRUE ) const;
+ const SwFmtCol &GetCol( BOOL = TRUE ) const;
+#endif
+#if ( defined GCC && defined C272 && defined HPUX )
+ const SvxPaperBinItem &GetPaperBin( BOOL = TRUE ) const;
+ const SvxLRSpaceItem &GetLRSpace( BOOL = TRUE ) const;
+ const SvxULSpaceItem &GetULSpace( BOOL = TRUE ) const;
+ const SwFmtCntnt &GetCntnt( BOOL = TRUE ) const;
+ const SvxPrintItem &GetPrint( BOOL = TRUE ) const;
+ const SvxOpaqueItem &GetOpaque( BOOL = TRUE ) const;
+ const SvxProtectItem &GetProtect( BOOL = TRUE ) const;
+ const SwFmtVertOrient &GetVertOrient( BOOL = TRUE ) const;
+ const SvxBoxItem &GetBox( BOOL = TRUE ) const;
+ const SvxFmtKeepItem &GetKeep( BOOL = TRUE ) const;
+ const SvxBrushItem &GetBackground( BOOL = TRUE ) const;
+ const SvxShadowItem &GetShadow( BOOL = TRUE ) const;
+ const SwFmtPageDesc &GetPageDesc( BOOL = TRUE ) const;
+ const SvxFmtBreakItem &GetBreak( BOOL = TRUE ) const;
+ const SvxMacroItem &GetMacro( BOOL = TRUE ) const;
+ const SwFmtURL &GetURL( BOOL = TRUE ) const;
+#endif
+#if !( defined GCC && defined C272 && \
+ ( defined LINUX || defined SINIX || defined HPUX ))
+ inline const SwFmtFillOrder &GetFillOrder( BOOL = TRUE ) const;
+ inline const SwFmtFrmSize &GetFrmSize( BOOL = TRUE ) const;
+ inline const SwFmtHeader &GetHeader( BOOL = TRUE ) const;
+ inline const SwFmtFooter &GetFooter( BOOL = TRUE ) const;
+ inline const SwFmtSurround &GetSurround( BOOL = TRUE ) const;
+ inline const SwFmtHoriOrient &GetHoriOrient( BOOL = TRUE ) const;
+ inline const SwFmtAnchor &GetAnchor( BOOL = TRUE ) const;
+ inline const SwFmtCol &GetCol( BOOL = TRUE ) const;
+#endif
+#if !( defined GCC && defined C272 && defined HPUX )
+ inline const SvxPaperBinItem &GetPaperBin( BOOL = TRUE ) const;
+ inline const SvxLRSpaceItem &GetLRSpace( BOOL = TRUE ) const;
+ inline const SvxULSpaceItem &GetULSpace( BOOL = TRUE ) const;
+ inline const SwFmtCntnt &GetCntnt( BOOL = TRUE ) const;
+ inline const SvxPrintItem &GetPrint( BOOL = TRUE ) const;
+ inline const SvxOpaqueItem &GetOpaque( BOOL = TRUE ) const;
+ inline const SvxProtectItem &GetProtect( BOOL = TRUE ) const;
+ inline const SwFmtVertOrient &GetVertOrient( BOOL = TRUE ) const;
+ inline const SvxBoxItem &GetBox( BOOL = TRUE ) const;
+ inline const SvxFmtKeepItem &GetKeep( BOOL = TRUE ) const;
+ inline const SvxBrushItem &GetBackground( BOOL = TRUE ) const;
+ inline const SvxShadowItem &GetShadow( BOOL = TRUE ) const;
+ inline const SwFmtPageDesc &GetPageDesc( BOOL = TRUE ) const;
+ inline const SvxFmtBreakItem &GetBreak( BOOL = TRUE ) const;
+ inline const SvxMacroItem &GetMacro( BOOL = TRUE ) const;
+ inline const SwFmtURL &GetURL( BOOL = TRUE ) const;
+ inline const SwFmtEditInReadonly &GetEditInReadonly( BOOL = TRUE ) const;
+ inline const SwFmtLayoutSplit &GetLayoutSplit( BOOL = TRUE ) const;
+ inline const SwFmtChain &GetChain( BOOL = TRUE ) const;
+ inline const SwFmtLineNumber &GetLineNumber( BOOL = TRUE ) const;
+ inline const SwFmtFtnAtTxtEnd &GetFtnAtTxtEnd( BOOL = TRUE ) const;
+ inline const SwFmtEndAtTxtEnd &GetEndAtTxtEnd( BOOL = TRUE ) const;
+ inline const SwFmtNoBalancedColumns &GetBalancedColumns( BOOL = TRUE ) const;
+#endif
+
+ // Grafik-Attribute - impl. steht im grfatr.hxx
+ inline const SwMirrorGrf &GetMirrorGrf( BOOL = TRUE ) const;
+ inline const SwCropGrf &GetCropGrf( BOOL = TRUE ) const;
+ inline const SwRotationGrf &GetRotationGrf(BOOL = TRUE ) const;
+ inline const SwLuminanceGrf &GetLuminanceGrf(BOOL = TRUE ) const;
+ inline const SwContrastGrf &GetContrastGrf(BOOL = TRUE ) const;
+ inline const SwChannelRGrf &GetChannelRGrf(BOOL = TRUE ) const;
+ inline const SwChannelGGrf &GetChannelGGrf(BOOL = TRUE ) const;
+ inline const SwChannelBGrf &GetChannelBGrf(BOOL = TRUE ) const;
+ inline const SwGammaGrf &GetGammaGrf(BOOL = TRUE ) const;
+ inline const SwInvertGrf &GetInvertGrf(BOOL = TRUE ) const;
+ inline const SwTransparencyGrf &GetTransparencyGrf(BOOL = TRUE ) const;
+ inline const SwDrawModeGrf &GetDrawModeGrf(BOOL = TRUE ) const;
+
+ // Paragraph-Attribute - impl. steht im paratr.hxx
+ inline const SvxLineSpacingItem &GetLineSpacing( BOOL = TRUE ) const;
+ inline const SvxAdjustItem &GetAdjust( BOOL = TRUE ) const;
+ inline const SvxFmtSplitItem &GetSplit( BOOL = TRUE ) const;
+ inline const SwRegisterItem &GetRegister( BOOL = TRUE ) const;
+ inline const SwNumRuleItem &GetNumRule( BOOL = TRUE ) const;
+ inline const SvxWidowsItem &GetWidows( BOOL = TRUE ) const;
+ inline const SvxOrphansItem &GetOrphans( BOOL = TRUE ) const;
+ inline const SvxTabStopItem &GetTabStops( BOOL = TRUE ) const;
+ inline const SvxHyphenZoneItem &GetHyphenZone( BOOL = TRUE ) const;
+ inline const SwFmtDrop &GetDrop( BOOL = TRUE ) const;
+
+ // TabellenBox-Attribute - impl. steht im cellatr.hxx
+ inline const SwTblBoxNumFormat &GetTblBoxNumFmt( BOOL = TRUE ) const;
+ inline const SwTblBoxFormula &GetTblBoxFormula( BOOL = TRUE ) const;
+ inline const SwTblBoxValue &GetTblBoxValue( BOOL = TRUE ) const;
+};
+
+// --------------- Inline Implementierungen ------------------------
+
+inline const SfxPoolItem& SwFmt::GetAttr( USHORT nWhich,
+ BOOL bInParents ) const
+{
+ return aSet.Get( nWhich, bInParents );
+}
+
+inline void SwFmt::SetName( const String& rNewName )
+{
+ ASSERT(!IsDefault(), "SetName: Defaultformat" );
+ aFmtName = rNewName;
+}
+inline void SwFmt::SetName( const sal_Char* pNewName )
+{
+ ASSERT(!IsDefault(), "SetName: Defaultformat" );
+ aFmtName.AssignAscii( pNewName );
+}
+
+inline SfxItemState SwFmt::GetItemState( USHORT nWhich, BOOL bSrchInParent,
+ const SfxPoolItem **ppItem ) const
+{
+ return aSet.GetItemState( nWhich, bSrchInParent, ppItem );
+}
+
+
+#endif // _FORMAT_HXX
diff --git a/sw/inc/frmatr.hxx b/sw/inc/frmatr.hxx
new file mode 100644
index 000000000000..f6b84500ea14
--- /dev/null
+++ b/sw/inc/frmatr.hxx
@@ -0,0 +1,136 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmatr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FRMATR_HXX
+#define _FRMATR_HXX
+
+#include "hintids.hxx" //die Ids der Attribute, vor frmitems damit die
+#include "format.hxx" //fuer Implementierung der inlines
+
+//------------------------ Inlines ---------------------------------
+
+
+/******************************************************************************
+ * Implementierung der FrameAttribut Methoden vom SwAttrSet
+ ******************************************************************************/
+
+inline const SvxPaperBinItem &SwAttrSet::GetPaperBin(BOOL bInP) const
+ { return (const SvxPaperBinItem&)Get( RES_PAPER_BIN,bInP); }
+inline const SvxLRSpaceItem &SwAttrSet::GetLRSpace(BOOL bInP) const
+ { return (const SvxLRSpaceItem&)Get( RES_LR_SPACE,bInP); }
+inline const SvxULSpaceItem &SwAttrSet::GetULSpace(BOOL bInP) const
+ { return (const SvxULSpaceItem&)Get( RES_UL_SPACE,bInP); }
+inline const SvxPrintItem &SwAttrSet::GetPrint(BOOL bInP) const
+ { return (const SvxPrintItem&)Get( RES_PRINT,bInP); }
+inline const SvxOpaqueItem &SwAttrSet::GetOpaque(BOOL bInP) const
+ { return (const SvxOpaqueItem&)Get( RES_OPAQUE,bInP); }
+inline const SvxProtectItem &SwAttrSet::GetProtect(BOOL bInP) const
+ { return (const SvxProtectItem&)Get( RES_PROTECT,bInP); }
+inline const SvxBoxItem &SwAttrSet::GetBox(BOOL bInP) const
+ { return (const SvxBoxItem&)Get( RES_BOX,bInP); }
+inline const SvxFmtKeepItem &SwAttrSet::GetKeep(BOOL bInP) const
+ { return (const SvxFmtKeepItem&)Get( RES_KEEP,bInP); }
+inline const SvxBrushItem &SwAttrSet::GetBackground(BOOL bInP) const
+ { return (const SvxBrushItem&)Get( RES_BACKGROUND,bInP); }
+inline const SvxShadowItem &SwAttrSet::GetShadow(BOOL bInP) const
+ { return (const SvxShadowItem&)Get( RES_SHADOW,bInP); }
+inline const SvxFmtBreakItem &SwAttrSet::GetBreak(BOOL bInP) const
+ { return (const SvxFmtBreakItem&)Get( RES_BREAK,bInP); }
+inline const SvxMacroItem &SwAttrSet::GetMacro(BOOL bInP) const
+ { return (const SvxMacroItem&)Get( RES_FRMMACRO,bInP); }
+
+
+/******************************************************************************
+ * Implementierung der FrameAttribut Methoden vom SwFmt
+ ******************************************************************************/
+
+// impl. fuer LINUX, SINIX, HPUX auch in gcc_outl.cxx
+#if !( defined GCC && defined C272 && \
+ ( defined LINUX || defined SINIX || defined HPUX ))
+#endif
+#if !( defined GCC && defined C272 && defined HPUX )
+inline const SvxPaperBinItem &SwFmt::GetPaperBin(BOOL bInP) const
+ { return aSet.GetPaperBin(bInP); }
+inline const SvxLRSpaceItem &SwFmt::GetLRSpace(BOOL bInP) const
+ { return aSet.GetLRSpace(bInP); }
+inline const SvxULSpaceItem &SwFmt::GetULSpace(BOOL bInP) const
+ { return aSet.GetULSpace(bInP); }
+inline const SvxPrintItem &SwFmt::GetPrint(BOOL bInP) const
+ { return aSet.GetPrint(bInP); }
+inline const SvxOpaqueItem &SwFmt::GetOpaque(BOOL bInP) const
+ { return aSet.GetOpaque(bInP); }
+inline const SvxProtectItem &SwFmt::GetProtect(BOOL bInP) const
+ { return aSet.GetProtect(bInP); }
+inline const SvxBoxItem &SwFmt::GetBox(BOOL bInP) const
+ { return aSet.GetBox(bInP); }
+inline const SvxFmtKeepItem &SwFmt::GetKeep(BOOL bInP) const
+ { return aSet.GetKeep(bInP); }
+inline const SvxBrushItem &SwFmt::GetBackground(BOOL bInP) const
+ { return aSet.GetBackground(bInP); }
+inline const SvxShadowItem &SwFmt::GetShadow(BOOL bInP) const
+ { return aSet.GetShadow(bInP); }
+inline const SvxFmtBreakItem &SwFmt::GetBreak(BOOL bInP) const
+ { return aSet.GetBreak(bInP); }
+inline const SvxMacroItem &SwFmt::GetMacro(BOOL bInP) const
+ { return aSet.GetMacro(bInP); }
+#endif
+
+
+#endif //_FRMATR_HXX
diff --git a/sw/inc/frmfmt.hxx b/sw/inc/frmfmt.hxx
new file mode 100644
index 000000000000..ed22cfea3b22
--- /dev/null
+++ b/sw/inc/frmfmt.hxx
@@ -0,0 +1,227 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmfmt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FRMFMT_HXX
+#define _FRMFMT_HXX
+
+#ifndef _FORMAT_HXX
+#include <format.hxx>
+#endif
+
+class SwDrawContact;
+class SwFlyFrm;
+class Graphic;
+class Point;
+class ImageMap;
+class IMapObject;
+class SwRect;
+class SwContact;
+class SdrObject;
+
+class SwFrmFmt: public SwFmt
+{
+ friend class SwDoc;
+ friend class SwPageDesc; //darf den protected CTor rufen.
+ friend class SwSwgReader; // der SW2-Reader auch!
+ friend class Sw3IoImp; // der SW3-Reader auch!
+
+protected:
+ SwFrmFmt( SwAttrPool& rPool, const sal_Char* pFmtNm,
+ SwFrmFmt *pDrvdFrm, USHORT nFmtWhich = RES_FRMFMT,
+ const USHORT* pWhichRange = 0 )
+ : SwFmt( rPool, pFmtNm, (pWhichRange ? pWhichRange : aFrmFmtSetRange),
+ pDrvdFrm, nFmtWhich )
+ {}
+
+ SwFrmFmt( SwAttrPool& rPool, const String &rFmtNm,
+ SwFrmFmt *pDrvdFrm, USHORT nFmtWhich = RES_FRMFMT,
+ const USHORT* pWhichRange = 0 )
+ : SwFmt( rPool, rFmtNm, (pWhichRange ? pWhichRange : aFrmFmtSetRange),
+ pDrvdFrm, nFmtWhich )
+ {}
+
+public:
+ TYPEINFO(); //Bereits in Basisklasse Client drin.
+
+ //Vernichtet alle Frms in aDepend (Frms werden per PTR_CAST erkannt).
+ virtual void DelFrms();
+
+ //Erzeugt die Ansichten
+ virtual void MakeFrms();
+
+ virtual Graphic MakeGraphic( ImageMap* pMap = NULL );
+
+ virtual void Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue );
+
+ // returnt das IMapObject, das an dem Format (Fly), in der ImageMap
+ // an der Point Position definiert ist.
+ // rPoint - teste auf der DocPosition
+ // pFly - optionaler FlyFrame, falls der schon bekannt ist.
+ IMapObject* GetIMapObject( const Point& rPoint,
+ const SwFlyFrm *pFly = 0 ) const;
+
+ // Gibt die tatsaechlche Groesse des Frames zurueck bzw. ein leeres
+ // Rechteck, wenn kein Layout existiert. Wird pPoint angegeben, dann
+ // wird der am dichtesten liegende Frame gesucht.
+ SwRect FindLayoutRect( const BOOL bPrtArea = FALSE,
+ const Point* pPoint = 0,
+ const BOOL bCalcFrm = FALSE ) const;
+
+ // Sucht das SdrObject. Der SdrObjUserCall ist Client vom Format.
+ // Der UserCall kennt sein SdrObject.
+ SwContact *FindContactObj();
+ const SwContact *FindContactObj() const
+ { return ((SwFrmFmt*)this)->FindContactObj(); }
+
+ // returns the SdrObject, that ist connected to the ContactObject.
+ // Only DrawFrmFmts are connected to the "real SdrObject". FlyFrmFmts
+ // are connected to a Master and all FlyFrms has the "real SdrObject".
+ // "Real SdrObject" has position and a Z-order.
+ SdrObject *FindSdrObject();
+ const SdrObject *FindSdrObject() const
+ { return ((SwFrmFmt*)this)->FindSdrObject(); }
+
+ SdrObject *FindRealSdrObject();
+ const SdrObject *FindRealSdrObject() const
+ { return ((SwFrmFmt*)this)->FindRealSdrObject(); }
+
+ BOOL IsLowerOf( const SwFrmFmt& rFmt ) const;
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwFrmFmt)
+};
+
+//Das FlyFrame-Format ------------------------------
+
+class SwFlyFrmFmt: public SwFrmFmt
+{
+ friend class SwDoc;
+
+ //Beide nicht vorhanden.
+ SwFlyFrmFmt( const SwFlyFrmFmt &rCpy );
+ SwFlyFrmFmt &operator=( const SwFlyFrmFmt &rCpy );
+
+protected:
+ SwFlyFrmFmt( SwAttrPool& rPool, const sal_Char* pFmtNm,
+ SwFrmFmt *pDrvdFrm )
+ : SwFrmFmt( rPool, pFmtNm, pDrvdFrm, RES_FLYFRMFMT )
+ {}
+ SwFlyFrmFmt( SwAttrPool& rPool, const String &rFmtNm,
+ SwFrmFmt *pDrvdFrm )
+ : SwFrmFmt( rPool, rFmtNm, pDrvdFrm, RES_FLYFRMFMT )
+ {}
+
+public:
+ TYPEINFO();
+ ~SwFlyFrmFmt();
+
+ //Erzeugt die Ansichten
+ virtual void MakeFrms();
+
+ SwFlyFrm* GetFrm( const Point* pDocPos = 0,
+ const BOOL bCalcFrm = FALSE ) const;
+
+ virtual Graphic MakeGraphic( ImageMap* pMap = NULL );
+
+ virtual BOOL GetInfo( SfxPoolItem& rInfo ) const;
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwFlyFrmFmt)
+};
+
+//Das DrawFrame-Format -----------------------------
+
+class SwDrawFrmFmt: public SwFrmFmt
+{
+ friend class SwDoc;
+
+ //Beide nicht vorhanden.
+ SwDrawFrmFmt( const SwDrawFrmFmt &rCpy );
+ SwDrawFrmFmt &operator=( const SwDrawFrmFmt &rCpy );
+
+protected:
+ SwDrawFrmFmt( SwAttrPool& rPool, const sal_Char* pFmtNm,
+ SwFrmFmt *pDrvdFrm )
+ : SwFrmFmt( rPool, pFmtNm, pDrvdFrm, RES_DRAWFRMFMT )
+ {}
+ SwDrawFrmFmt( SwAttrPool& rPool, const String &rFmtNm,
+ SwFrmFmt *pDrvdFrm )
+ : SwFrmFmt( rPool, rFmtNm, pDrvdFrm, RES_DRAWFRMFMT )
+ {}
+
+public:
+ TYPEINFO();
+ ~SwDrawFrmFmt();
+
+ //DrawObjecte werden aus den Arrays am Layout entfernt. Die DrawObjecte
+ //werden als geloescht gekennzeichnet.
+ virtual void DelFrms();
+
+ //Anmelden der DrawObjecte in den Arrays am Layout. Loeschkennzeichen
+ //werden zurueckgesetzt.
+ virtual void MakeFrms();
+
+ virtual Graphic MakeGraphic( ImageMap* pMap = NULL );
+
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwDrawFrmFmt);
+};
+
+
+#endif
+
diff --git a/sw/inc/ftnidx.hxx b/sw/inc/ftnidx.hxx
new file mode 100644
index 000000000000..bd75a59f037c
--- /dev/null
+++ b/sw/inc/ftnidx.hxx
@@ -0,0 +1,114 @@
+/*************************************************************************
+ *
+ * $RCSfile: ftnidx.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FTNIDX_HXX
+#define _FTNIDX_HXX
+
+
+#define _SVSTDARR_USHORTS
+#include <svtools/svstdarr.hxx>
+
+class SwTxtFtn;
+class SwNodeIndex;
+class SwSectionNode;
+
+// ueberall, wo der NodeIndex gebraucht wird, werden die hier fehlenden
+// Headerfiles schon includes. Darum hier nur als define und nicht als
+// inline Methode (spart Compile-Zeit)
+#define _SwTxtFtn_GetIndex( pFIdx ) (pFIdx->GetTxtNode().GetIndex())
+
+
+typedef SwTxtFtn* SwTxtFtnPtr;
+SV_DECL_PTRARR_SORT( _SwFtnIdxs, SwTxtFtnPtr, 0, 10 )
+
+class SwFtnIdxs : public _SwFtnIdxs
+{
+public:
+ SwFtnIdxs() {}
+
+ void UpdateFtn( SwNodeIndex& rStt ); // ab Pos. alle Updaten
+ void UpdateAllFtn(); // alle Fussnoten updaten
+ void UpdateFtnInSections();
+
+ SwTxtFtn* SeekEntry( const SwNodeIndex& rIdx, USHORT* pPos = 0 ) const;
+};
+
+
+class SwUpdFtnEndNtAtEnd
+{
+ SvPtrarr aFtnSects, aEndSects;
+ SvUShorts aFtnNums, aEndNums;
+
+public:
+ SwUpdFtnEndNtAtEnd() : aFtnSects( 0, 4 ), aEndSects( 0, 4 ),
+ aFtnNums( 0, 4 ), aEndNums( 0, 4 )
+ {}
+
+ static const SwSectionNode* FindSectNdWithEndAttr(
+ const SwTxtFtn& rTxtFtn );
+
+ USHORT GetNumber( const SwTxtFtn& rTxtFtn, const SwSectionNode& rNd );
+ USHORT ChkNumber( const SwTxtFtn& rTxtFtn );
+};
+
+
+
+#endif // _FTNIDX_HXX
+
diff --git a/sw/inc/ftninfo.hxx b/sw/inc/ftninfo.hxx
new file mode 100644
index 000000000000..d82677346cac
--- /dev/null
+++ b/sw/inc/ftninfo.hxx
@@ -0,0 +1,146 @@
+/*************************************************************************
+ *
+ * $RCSfile: ftninfo.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FTNINFO_HXX
+#define _FTNINFO_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#include "numrule.hxx"
+
+class SwTxtFmtColl;
+class SwPageDesc;
+
+class SwEndNoteInfo : public SwClient
+{
+ SwDepend aPageDescDep;
+ SwDepend aCharFmtDep, aAnchorCharFmtDep;
+ String sPrefix;
+ String sSuffix;
+protected:
+ BOOL bEndNote;
+public:
+ SwNumType aFmt;
+ USHORT nFtnOffset;
+
+ void ChgPageDesc( SwPageDesc *pDesc );
+ SwPageDesc *GetPageDesc( SwDoc &rDoc ) const;
+ SwClient *GetPageDescDep() const { return (SwClient*)&aPageDescDep; }
+
+ void SetFtnTxtColl(SwTxtFmtColl& rColl);
+ SwTxtFmtColl* GetFtnTxtColl() const { return (SwTxtFmtColl*) GetRegisteredIn(); } // kann 0 sein
+
+ SwCharFmt* GetCharFmt(SwDoc &rDoc) const;
+ void SetCharFmt( SwCharFmt* );
+ SwClient *GetCharFmtDep() const { return (SwClient*)&aCharFmtDep; }
+
+ SwCharFmt* GetAnchorCharFmt(SwDoc &rDoc) const;
+ void SetAnchorCharFmt( SwCharFmt* );
+ SwClient *GetAnchorCharFmtDep() const { return (SwClient*)&aAnchorCharFmtDep; }
+
+ virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew );
+
+ SwEndNoteInfo & operator=(const SwEndNoteInfo&);
+ BOOL operator==( const SwEndNoteInfo &rInf ) const;
+
+ SwEndNoteInfo( SwTxtFmtColl *pTxtColl = 0);
+ SwEndNoteInfo(const SwEndNoteInfo&);
+
+ const String& GetPrefix() const { return sPrefix; }
+ const String& GetSuffix() const { return sSuffix; }
+
+ void SetPrefix(const String& rSet) { sPrefix = rSet; }
+ void SetSuffix(const String& rSet) { sSuffix = rSet; }
+
+ BOOL IsEndNoteInfo() const { return bEndNote; }
+};
+
+enum SwFtnPos
+{
+ //Derzeit nur PAGE und CHAPTER. CHAPTER == Dokumentendenoten.
+ FTNPOS_PAGE = 1,
+ FTNPOS_CHAPTER = 8
+};
+
+enum SwFtnNum
+{
+ FTNNUM_PAGE, FTNNUM_CHAPTER, FTNNUM_DOC
+};
+
+class SwFtnInfo: public SwEndNoteInfo
+{
+public:
+ String aQuoVadis;
+ String aErgoSum;
+ SwFtnPos ePos;
+ SwFtnNum eNum;
+
+
+ SwFtnInfo& operator=(const SwFtnInfo&);
+ BOOL operator==( const SwFtnInfo &rInf ) const;
+
+ SwFtnInfo(SwTxtFmtColl* pTxtColl = 0);
+ SwFtnInfo(const SwFtnInfo&);
+};
+
+
+#endif
diff --git a/sw/inc/globals.hrc b/sw/inc/globals.hrc
new file mode 100644
index 000000000000..3d54169f382d
--- /dev/null
+++ b/sw/inc/globals.hrc
@@ -0,0 +1,323 @@
+/*************************************************************************
+ *
+ * $RCSfile: globals.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _GLOBALS_HRC
+#define _GLOBALS_HRC
+
+
+// Versions-Definition wie in solar.h und swtypes.hxx
+//#define SW_FILEFORMAT_40 3580
+
+#include "rcid.hrc"
+
+// STRINGS -----------------------------------------------------------
+
+#define STR_DLLNOTFOUND (RC_GLOBALS_BEGIN + 0)
+#define STR_FMT_STD (RC_GLOBALS_BEGIN + 1)
+#define STR_LOAD_GLOBAL_DOC (RC_GLOBALS_BEGIN + 2)
+
+#define STR_SEPARATOR (RC_GLOBALS_BEGIN + 4)
+
+
+#define STR_BASIC_IMPORT (RC_GLOBALS_BEGIN + 5)
+#define STR_BASIC_BEGIN (RC_GLOBALS_BEGIN + 6)
+#define STR_BASIC_END (RC_GLOBALS_BEGIN + 7)
+#define STR_BASIC_REC_LIB (RC_GLOBALS_BEGIN + 8)
+#define STR_TEMPLATE_WILDCARD (RC_GLOBALS_BEGIN + 9)
+#define STR_DOC_STAT (RC_GLOBALS_BEGIN + 10)
+
+#define STR_PAGE (RC_GLOBALS_BEGIN + 14)
+
+//EventStrings
+
+#define STR_EVENT_OBJECT_SELECT ( RC_GLOBALS_BEGIN + 17 )
+#define STR_EVENT_START_INS_GLOSSARY ( RC_GLOBALS_BEGIN + 18 )
+#define STR_EVENT_END_INS_GLOSSARY ( RC_GLOBALS_BEGIN + 19 )
+#define STR_EVENT_MOUSEOVER_OBJECT ( RC_GLOBALS_BEGIN + 20 )
+#define STR_EVENT_MOUSECLICK_OBJECT ( RC_GLOBALS_BEGIN + 21 )
+#define STR_EVENT_MOUSEOUT_OBJECT ( RC_GLOBALS_BEGIN + 22 )
+#define STR_EVENT_IMAGE_LOAD ( RC_GLOBALS_BEGIN + 23 )
+#define STR_EVENT_IMAGE_ABORT ( RC_GLOBALS_BEGIN + 24 )
+#define STR_EVENT_IMAGE_ERROR ( RC_GLOBALS_BEGIN + 25 )
+#define STR_EVENT_FRM_KEYINPUT_A ( RC_GLOBALS_BEGIN + 26 )
+#define STR_EVENT_FRM_KEYINPUT_NOA ( RC_GLOBALS_BEGIN + 27 )
+#define STR_EVENT_FRM_RESIZE ( RC_GLOBALS_BEGIN + 28 )
+#define STR_EVENT_FRM_MOVE ( RC_GLOBALS_BEGIN + 29 )
+
+// Strings fuer Rahmenausrichtungen im Popup
+#define STR_TOP_BASE (RC_GLOBALS_BEGIN + 30)
+#define STR_BOTTOM_BASE (RC_GLOBALS_BEGIN + 31)
+#define STR_CENTER_BASE (RC_GLOBALS_BEGIN + 32)
+#define STR_TOP (RC_GLOBALS_BEGIN + 33)
+#define STR_BOTTOM (RC_GLOBALS_BEGIN + 34)
+#define STR_CENTER_HORI (RC_GLOBALS_BEGIN + 35)
+#define STR_CENTER_VERT (RC_GLOBALS_BEGIN + 36)
+
+#define STR_LOAD_HTML_DOC (RC_GLOBALS_BEGIN + 37)
+
+#define STR_AUTH (RC_GLOBALS_BEGIN + 38)
+#define STR_TBL (RC_GLOBALS_BEGIN + 39)
+#define STR_TOO (RC_GLOBALS_BEGIN + 40)
+#define STR_TOILL (RC_GLOBALS_BEGIN + 41)
+
+// BITMAPS -----------------------------------------------------------
+
+#define RES_TABL (RC_GLOBALS_BEGIN + 1)
+#define RES_TABR (RC_GLOBALS_BEGIN + 2)
+#define RES_TABD (RC_GLOBALS_BEGIN + 3)
+#define RES_TABC (RC_GLOBALS_BEGIN + 4)
+
+// DIALOGE -----------------------------------------------------------
+
+#define DLG_LISTBOX (RC_GLOBALS_BEGIN + 1)
+#define DLG_THESAURUS (RC_GLOBALS_BEGIN + 2)
+#define DLG_SPECIAL (RC_GLOBALS_BEGIN + 3)
+
+// QUERYBOX ---------------------------------------------------------
+
+#define DLG_WRAP (RC_GLOBALS_BEGIN + 4)
+#define DLG_BODY (RC_GLOBALS_BEGIN + 5)
+#define DLG_PRT_FIELDNAME (RC_GLOBALS_BEGIN + 6)
+
+// INFOBOX ------------------------------------------------------------
+
+#define ERR_CLPBRD_READ (RC_GLOBALS_BEGIN + 1)
+#define ERR_CLPBRD_WRITE (RC_GLOBALS_BEGIN + 2)
+#define MSG_ERROR_PASSWD (RC_GLOBALS_BEGIN + 3)
+
+
+// ACC ---------------------------------------------------------------
+
+#define FN_CHAR_LEFT_SEL (RC_GLOBALS_BEGIN + 1) //
+#define FN_CHAR_RIGHT_SEL (RC_GLOBALS_BEGIN + 2) //
+#define FN_LINE_UP_SEL (RC_GLOBALS_BEGIN + 3) //
+#define FN_LINE_DOWN_SEL (RC_GLOBALS_BEGIN + 4) //
+#define FN_START_OF_LINE_SEL (RC_GLOBALS_BEGIN + 5) // StartOfLine
+#define FN_END_OF_LINE_SEL (RC_GLOBALS_BEGIN + 6) // EndOfLine
+#define FN_START_OF_DOCUMENT_SEL (RC_GLOBALS_BEGIN + 7) // StartOfDocument
+#define FN_END_OF_DOCUMENT_SEL (RC_GLOBALS_BEGIN + 8) // EndOfDocument
+#define FN_START_OF_NEXT_PAGE_SEL (RC_GLOBALS_BEGIN + 9) // StartOfNextPage ???
+#define FN_END_OF_NEXT_PAGE_SEL (RC_GLOBALS_BEGIN + 10) // ???
+#define FN_START_OF_PREV_PAGE_SEL (RC_GLOBALS_BEGIN + 11) // StartOfPrevPage ???
+#define FN_END_OF_PREV_PAGE_SEL (RC_GLOBALS_BEGIN + 12) // ???
+#define FN_START_OF_PAGE_SEL (RC_GLOBALS_BEGIN + 13) // StartOfPage
+#define FN_END_OF_PAGE_SEL (RC_GLOBALS_BEGIN + 14) // EndOfPage
+#define FN_START_OF_WINDOW_SEL (RC_GLOBALS_BEGIN + 15) // StartOfWindow
+#define FN_END_OF_WINDOW_SEL (RC_GLOBALS_BEGIN + 16) // EndOfWindow
+#define FN_START_OF_COLUMN_SEL (RC_GLOBALS_BEGIN + 17) // StartOfColumn
+#define FN_END_OF_COLUMN_SEL (RC_GLOBALS_BEGIN + 18) // EndOfColumn
+#define FN_START_OF_PARA_SEL (RC_GLOBALS_BEGIN + 19) // StartOfPara
+#define FN_END_OF_PARA_SEL (RC_GLOBALS_BEGIN + 20) // EndOfPara
+#define FN_NEXT_WORD_SEL (RC_GLOBALS_BEGIN + 21) // NextWord
+#define FN_PREV_WORD_SEL (RC_GLOBALS_BEGIN + 22) // PrevWord
+#define FN_NEXT_SENT_SEL (RC_GLOBALS_BEGIN + 23) // NextSentence
+#define FN_PREV_SENT_SEL (RC_GLOBALS_BEGIN + 24) // PrevSentence
+
+#define FN_START_OF_NEXT_COLUMN_SEL (RC_GLOBALS_BEGIN + 25)
+#define FN_END_OF_NEXT_COLUMN_SEL (RC_GLOBALS_BEGIN + 26)
+#define FN_START_OF_PREV_COLUMN_SEL (RC_GLOBALS_BEGIN + 27)
+#define FN_END_OF_PREV_COLUMN_SEL (RC_GLOBALS_BEGIN + 28)
+#define FN_PAGEUP_SEL (RC_GLOBALS_BEGIN + 29)
+#define FN_PAGEDOWN_SEL (RC_GLOBALS_BEGIN + 30)
+
+// TABPAGES -----------------------------------------------------------
+
+#define TP_PAGE_STD (RC_GLOBALS_BEGIN + 1)
+#define TP_PAGE_EXT (RC_GLOBALS_BEGIN + 2)
+
+#define TP_PARA_STD (RC_GLOBALS_BEGIN + 3)
+#define TP_PARA_EXT (RC_GLOBALS_BEGIN + 4)
+
+#define TP_FRAME_STD (RC_GLOBALS_BEGIN + 5)
+#define TP_FRAME_EXT (RC_GLOBALS_BEGIN + 6)
+
+#define TP_CHAR_STD (RC_GLOBALS_BEGIN + 7)
+#define TP_CHAR_EXT (RC_GLOBALS_BEGIN + 8)
+
+#define TP_TABULATOR (RC_GLOBALS_BEGIN + 9)
+#define TP_DROPCAPS (RC_GLOBALS_BEGIN + 10)
+#define TP_BACKGROUND (RC_GLOBALS_BEGIN + 11)
+#define TP_BORDER (RC_GLOBALS_BEGIN + 12)
+#define TP_COLUMN (RC_GLOBALS_BEGIN + 13)
+
+#define TP_DOC_STAT (RC_GLOBALS_BEGIN + 15)
+
+#define TP_HEADER_PAGE (RC_GLOBALS_BEGIN + 16)
+#define TP_FOOTER_PAGE (RC_GLOBALS_BEGIN + 17)
+#define TP_FOOTNOTE_PAGE (RC_GLOBALS_BEGIN + 18)
+
+#define TP_OPTGENERAL_PAGE (RC_GLOBALS_BEGIN + 19) //Sfx-Seiten
+#define TP_OPTSAVE_PAGE (RC_GLOBALS_BEGIN + 20)
+#define TP_OPTPATH_PAGE (RC_GLOBALS_BEGIN + 21)
+#define TP_OPTSPELL_PAGE (RC_GLOBALS_BEGIN + 22)
+ //Sw-Seiten
+#define SW_EDIT_OPTIONS_TDLG (RC_GLOBALS_BEGIN + 23)
+#define SW_BROWSER_OPTIONS_TDLG (RC_GLOBALS_BEGIN + 24)
+#define TP_OPTTEST_PAGE (RC_GLOBALS_BEGIN + 25)
+#define TP_OPTPRINT_PAGE (RC_GLOBALS_BEGIN + 26)
+#define TP_OPTCOLOR_PAGE (RC_GLOBALS_BEGIN + 27)
+
+#define SW_OPTIONS_TDLG (RC_GLOBALS_BEGIN + 28)
+#define SW_OPTIONS_TDLG_ELEM (RC_GLOBALS_BEGIN + 29)
+#define SW_OPTIONS_TDLG_PRINT (RC_GLOBALS_BEGIN + 30)
+
+#define TP_FRM_STD (RC_GLOBALS_BEGIN + 31)
+
+#define TP_OPTGRID_PAGE (RC_GLOBALS_BEGIN + 33)
+
+#define TP_FORMAT_TABLE (RC_GLOBALS_BEGIN + 34)
+#define TP_GRF_EXT (RC_GLOBALS_BEGIN + 35)
+
+#define DLG_FRM_STD (RC_GLOBALS_BEGIN + 36)
+#define DLG_FRM_GRF (RC_GLOBALS_BEGIN + 37)
+#define DLG_FRM_OLE (RC_GLOBALS_BEGIN + 38)
+
+#define RID_INPUT_TOOLBOX (RC_GLOBALS_BEGIN + 39)
+
+#define TP_MACRO_ASSIGN (RC_GLOBALS_BEGIN + 40)
+#define TP_FRM_URL (RC_GLOBALS_BEGIN + 42)
+#define TP_CHAR_URL (RC_GLOBALS_BEGIN + 43)
+
+#define TP_LAYOUT_OPT (RC_GLOBALS_BEGIN + 44)
+#define TP_CONTENT_OPT (RC_GLOBALS_BEGIN + 45)
+#define TP_HTML_OPT (RC_GLOBALS_BEGIN + 46)
+#define TP_STD_FONT (RC_GLOBALS_BEGIN + 47)
+#define TP_CONDCOLL (RC_GLOBALS_BEGIN + 48)
+
+#define TP_FRM_WRAP (RC_GLOBALS_BEGIN + 49)
+#define TP_FRM_ADD (RC_GLOBALS_BEGIN + 51)
+
+#define TP_TABLE_TEXTFLOW (RC_GLOBALS_BEGIN + 52)
+
+#define TP_AUTOFMT_BY_INPUT (RC_GLOBALS_BEGIN + 53)
+#define TP_AUTOFMT_APPLY (RC_GLOBALS_BEGIN + 54)
+
+#define TP_PARA_ALIGN (RC_GLOBALS_BEGIN + 55)
+#define TP_OPTTABLE_PAGE (RC_GLOBALS_BEGIN + 56)
+
+#define TP_NUMBER (RC_GLOBALS_BEGIN + 57)
+
+#define DLG_NUM_BULLET (RC_GLOBALS_BEGIN + 58)
+#define TP_PICK_SINGLE_NUM (RC_GLOBALS_BEGIN + 59)
+#define TP_PICK_BULLET (RC_GLOBALS_BEGIN + 60)
+#define TP_PICK_NUM (RC_GLOBALS_BEGIN + 61)
+#define TP_PICK_BMP (RC_GLOBALS_BEGIN + 62)
+#define TP_OPTSRCVIEW (RC_GLOBALS_BEGIN + 63)
+
+#define TP_FLD_DB (RC_GLOBALS_BEGIN + 64)
+#define TP_FLD_DOKINF (RC_GLOBALS_BEGIN + 65)
+#define TP_FLD_VAR (RC_GLOBALS_BEGIN + 66)
+#define TP_FLD_DOK (RC_GLOBALS_BEGIN + 67)
+#define TP_FLD_FUNC (RC_GLOBALS_BEGIN + 68)
+#define TP_FLD_REF (RC_GLOBALS_BEGIN + 69)
+
+#define TP_OPTSHDWCRSR (RC_GLOBALS_BEGIN + 70)
+#define TP_NUM_OPTIONS (RC_GLOBALS_BEGIN + 71)
+#define TP_NUM_POSITION (RC_GLOBALS_BEGIN + 72)
+#define TP_NUMPARA (RC_GLOBALS_BEGIN + 73)
+
+#define TP_REDLINE_OPT (RC_GLOBALS_BEGIN + 74)
+
+#define TP_LINENUMBERING (RC_GLOBALS_BEGIN + 75)
+#define TP_OUTLINE_NUM (RC_GLOBALS_BEGIN + 76)
+
+#define TP_OPTINSERT_PAGE (RC_GLOBALS_BEGIN + 77)
+#define TP_OPTCAPTION_PAGE (RC_GLOBALS_BEGIN + 78)
+#define DLG_SVXTEST_NUM_BULLET (RC_GLOBALS_BEGIN + 79)
+#define TP_OPTLOAD_PAGE (RC_GLOBALS_BEGIN + 80)
+#define TP_INSERT_TOX (RC_GLOBALS_BEGIN + 81)
+#define TP_TOX_FORM_ENTRY (RC_GLOBALS_BEGIN + 82)
+#define TP_TOX_FORM_STYLES (RC_GLOBALS_BEGIN + 83)
+#define DLG_INSERT_TOX_TABDLG (RC_GLOBALS_BEGIN + 84)
+#define TP_INSERT_SECTION (RC_GLOBALS_BEGIN + 85)
+#define DLG_INSERT_SECTION (RC_GLOBALS_BEGIN + 86)
+#define DLG_SECTION_PROPERTIES (RC_GLOBALS_BEGIN + 87)
+#define DLG_RENAME_XNAMED (RC_GLOBALS_BEGIN + 88)
+#define DLG_MULTI_TOX (RC_GLOBALS_BEGIN + 89)
+#define TP_TOX_SELECT (RC_GLOBALS_BEGIN + 90)
+#define TP_TOX_ENTRY (RC_GLOBALS_BEGIN + 91)
+#define TP_TOX_STYLES (RC_GLOBALS_BEGIN + 92)
+#define TP_VISITING_CARDS (RC_GLOBALS_BEGIN + 93)
+#define DLG_ADD_IDX_STYLES (RC_GLOBALS_BEGIN + 94)
+#define TP_PRIVATE_DATA (RC_GLOBALS_BEGIN + 95)
+#define TP_BUSINESS_DATA (RC_GLOBALS_BEGIN + 96)
+#define TP_SECTION_FTNENDNOTES (RC_GLOBALS_BEGIN + 97)
+
+// Kontext-Menues (Format-Menue) --------------------------------------------
+
+#define MN_OBJECTMENU_TEXT (RC_GLOBALS_BEGIN + 1)
+#define MN_OBJECTMENU_LIST (RC_GLOBALS_BEGIN + 2)
+#define MN_OBJECTMENU_TABLE (RC_GLOBALS_BEGIN + 3)
+#define MN_OBJECTMENU_FRAME (RC_GLOBALS_BEGIN + 4)
+#define MN_OBJECTMENU_GRAFIK (RC_GLOBALS_BEGIN + 5)
+#define MN_OBJECTMENU_DRAW (RC_GLOBALS_BEGIN + 6)
+#define MN_OBJECTMENU_DRWTXT (RC_GLOBALS_BEGIN + 7)
+#define MN_OBJECTMENU_OLE (RC_GLOBALS_BEGIN + 8)
+#define MN_OBJECTMENU_DRAWCONTROL (RC_GLOBALS_BEGIN + 9)
+#define MN_OBJECTMENU_DRAWFORM (RC_GLOBALS_BEGIN + 10)
+
+
+#if STR_DOC_STAT > RC_GLOBALS_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+
+#endif // _GLOBALS_HRC
diff --git a/sw/inc/globdoc.hxx b/sw/inc/globdoc.hxx
new file mode 100644
index 000000000000..87218b6e771b
--- /dev/null
+++ b/sw/inc/globdoc.hxx
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * $RCSfile: globdoc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWGLOBDOCSH_HXX
+#define _SWGLOBDOCSH_HXX
+
+#ifndef SW_SWDLL_HXX
+#include <swdll.hxx>
+#endif
+#include "docsh.hxx"
+
+class SwGlobalDocShell : public SwDocShell
+{
+public:
+
+ SFX_DECL_OBJECTFACTORY_DLL(SwGlobalDocShell, SW_DLL());
+ TYPEINFO();
+
+ SwGlobalDocShell(SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED);
+ ~SwGlobalDocShell();
+
+ // Anforderung der pIo-Struktur fuer den Zugriff auf Substorages
+ // und Streams
+ virtual void FillRegInfo( SvEmbeddedRegistryInfo * );
+
+ virtual void FillClass( SvGlobalName * pClassName,
+ ULONG * pClipFormat,
+ String * pAppName,
+ String * pLongUserName,
+ String * pUserName,
+ long nVersion = SOFFICE_FILEFORMAT_NOW ) const;
+};
+
+#endif
+
diff --git a/sw/inc/grfatr.hxx b/sw/inc/grfatr.hxx
new file mode 100644
index 000000000000..0dd99346626c
--- /dev/null
+++ b/sw/inc/grfatr.hxx
@@ -0,0 +1,431 @@
+/*************************************************************************
+ *
+ * $RCSfile: grfatr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _GRFATR_HXX
+#define _GRFATR_HXX
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx> // fuer die WhichIds
+#endif
+
+#ifndef _SV_GEN_HXX
+#include <tools/gen.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SVX_GRFCROP_HXX
+#include <svx/grfcrop.hxx>
+#endif
+
+#ifndef _SWATRSET_HXX
+#include <swatrset.hxx> // fuer inlines
+#endif
+#ifndef _FORMAT_HXX
+#include <format.hxx> // fuer inlines
+#endif
+
+/******************************************************************************
+ * class SwMirrorGrf
+ ******************************************************************************/
+
+enum GRFMIRROR
+{
+RES_GRFMIRROR_BEGIN,
+ RES_DONT_MIRROR_GRF = RES_GRFMIRROR_BEGIN,
+ RES_MIRROR_GRF_VERT,
+ RES_MIRROR_GRF_HOR,
+ RES_MIRROR_GRF_BOTH,
+RES_GRFMIRROR_END
+};
+
+class SwMirrorGrf : public SfxEnumItem
+{
+ BOOL bGrfToggle; // auf geraden Seiten Grafiken spiegeln
+
+public:
+ SwMirrorGrf( USHORT nMiro = RES_DONT_MIRROR_GRF )
+ : SfxEnumItem( RES_GRFATR_MIRRORGRF, nMiro ), bGrfToggle( sal_False )
+ {}
+ SwMirrorGrf::SwMirrorGrf( const SwMirrorGrf &rMirrorGrf )
+ : SfxEnumItem( RES_GRFATR_MIRRORGRF, rMirrorGrf.GetValue()),
+ bGrfToggle( rMirrorGrf.IsGrfToggle() )
+ {}
+
+ // pure virtual-Methoden von SfxPoolItem
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ // pure virtual-Methiden von SfxEnumItem
+ virtual USHORT GetValueCount() const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer ) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) 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 );
+
+ inline SwMirrorGrf& operator=( const SwMirrorGrf& rMirrorGrf )
+ {
+ SfxEnumItem::SetValue( rMirrorGrf.GetValue() );
+ bGrfToggle = rMirrorGrf.IsGrfToggle();
+ return *this;
+ }
+
+ inline BOOL IsGrfToggle() const { return bGrfToggle; }
+ inline void SetGrfToggle( BOOL bNew ) { bGrfToggle = bNew; }
+};
+
+
+/******************************************************************************
+ * class SwAttrCropGrf
+ ******************************************************************************/
+
+class SwCropGrf : public SvxGrfCrop
+{
+public:
+ TYPEINFO();
+ SwCropGrf();
+ SwCropGrf( sal_Int32 nLeft, sal_Int32 nRight,
+ sal_Int32 nTop, sal_Int32 nBottom );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFileVersion ) const;
+};
+
+class SwRotationGrf : public SfxUInt16Item
+{
+ Size aUnrotatedSize;
+public:
+ SwRotationGrf( sal_Int16 nVal = 0 )
+ : SfxUInt16Item( RES_GRFATR_ROTATION, nVal )
+ {}
+ SwRotationGrf( sal_Int16 nVal, const Size& rSz )
+ : SfxUInt16Item( RES_GRFATR_ROTATION, nVal ), aUnrotatedSize( rSz )
+ {}
+
+ // pure virtual-Methiden from SfxInt16Item
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer ) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) 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 );
+
+ void SetUnrotatedSize( const Size& rSz ) { aUnrotatedSize = rSz; }
+ const Size& GetUnrotatedSize() const { return aUnrotatedSize; }
+};
+
+class SwLuminanceGrf : public SfxInt16Item
+{
+public:
+ SwLuminanceGrf( sal_Int16 nVal = 0 )
+ : SfxInt16Item( RES_GRFATR_LUMINANCE, nVal )
+ {}
+
+ // pure virtual-Methiden from SfxInt16Item
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+};
+
+class SwContrastGrf : public SfxInt16Item
+{
+public:
+ SwContrastGrf( sal_Int16 nVal = 0 )
+ : SfxInt16Item( RES_GRFATR_CONTRAST, nVal )
+ {}
+
+ // pure virtual-Methiden from SfxInt16Item
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+};
+
+class SwChannelGrf : public SfxInt16Item
+{
+protected:
+ SwChannelGrf( sal_Int16 nVal, USHORT nWhich )
+ : SfxInt16Item( nWhich, nVal )
+ {}
+
+public:
+ // pure virtual-Methiden from SfxInt16Item
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+};
+
+class SwChannelRGrf : public SwChannelGrf
+{
+public:
+ SwChannelRGrf( sal_Int16 nVal = 0 )
+ : SwChannelGrf( nVal, RES_GRFATR_CHANNELR )
+ {}
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+};
+class SwChannelGGrf : public SwChannelGrf
+{
+public:
+ SwChannelGGrf( sal_Int16 nVal = 0 )
+ : SwChannelGrf( nVal, RES_GRFATR_CHANNELG )
+ {}
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+};
+class SwChannelBGrf : public SwChannelGrf
+{
+public:
+ SwChannelBGrf( sal_Int16 nVal = 0 )
+ : SwChannelGrf( nVal, RES_GRFATR_CHANNELB )
+ {}
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+};
+
+class SwGammaGrf : public SfxPoolItem
+{
+ double nValue;
+public:
+ TYPEINFO();
+ SwGammaGrf() : SfxPoolItem( RES_GRFATR_GAMMA ), nValue( 1.0 )
+ {}
+
+ SwGammaGrf( const double& rVal )
+ : SfxPoolItem( RES_GRFATR_GAMMA ), nValue( rVal )
+ {}
+
+ inline SwGammaGrf& operator=( const SwGammaGrf& rCopy )
+ {
+ SetValue( rCopy.GetValue() );
+ return *this;
+ }
+
+ // pure virtual-Methiden von SfxEnumItem
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer ) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) 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 double& GetValue() const { return nValue; }
+ void SetValue( const double& rVal ) { nValue = rVal; }
+};
+
+class SwInvertGrf: public SfxBoolItem
+{
+public:
+ SwInvertGrf( sal_Bool bVal = sal_False )
+ : SfxBoolItem( RES_GRFATR_INVERT, bVal )
+ {}
+
+ // pure virtual-Methiden from SfxInt16Item
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+};
+
+class SwTransparencyGrf : public SfxByteItem
+{
+public:
+ SwTransparencyGrf( sal_Int8 nVal = 0 )
+ : SfxByteItem( RES_GRFATR_TRANSPARENCY, nVal )
+ {}
+
+ // pure virtual-Methiden from SfxInt16Item
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+};
+
+class SwDrawModeGrf : public SfxEnumItem
+{
+public:
+ SwDrawModeGrf( USHORT nMode = 0 )
+ : SfxEnumItem( RES_GRFATR_DRAWMODE, nMode )
+ {}
+
+ // pure virtual-Methoden von SfxPoolItem
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ // pure virtual-Methiden von SfxEnumItem
+ virtual USHORT GetValueCount() const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) 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 );
+};
+
+
+
+/******************************************************************************
+ * Implementierung der GrafikAttribut Methoden vom SwAttrSet
+ ******************************************************************************/
+
+inline const SwMirrorGrf &SwAttrSet::GetMirrorGrf(BOOL bInP) const
+ { return (const SwMirrorGrf&)Get( RES_GRFATR_MIRRORGRF,bInP); }
+inline const SwCropGrf &SwAttrSet::GetCropGrf(BOOL bInP) const
+ { return (const SwCropGrf&)Get( RES_GRFATR_CROPGRF,bInP); }
+inline const SwRotationGrf &SwAttrSet::GetRotationGrf(BOOL bInP) const
+ { return (const SwRotationGrf&)Get( RES_GRFATR_ROTATION,bInP); }
+inline const SwLuminanceGrf &SwAttrSet::GetLuminanceGrf(BOOL bInP) const
+ { return (const SwLuminanceGrf&)Get( RES_GRFATR_LUMINANCE,bInP); }
+inline const SwContrastGrf &SwAttrSet::GetContrastGrf(BOOL bInP) const
+ { return (const SwContrastGrf&)Get( RES_GRFATR_CONTRAST,bInP); }
+inline const SwChannelRGrf &SwAttrSet::GetChannelRGrf(BOOL bInP) const
+ { return (const SwChannelRGrf&)Get( RES_GRFATR_CHANNELR,bInP); }
+inline const SwChannelGGrf &SwAttrSet::GetChannelGGrf(BOOL bInP) const
+ { return (const SwChannelGGrf&)Get( RES_GRFATR_CHANNELG,bInP); }
+inline const SwChannelBGrf &SwAttrSet::GetChannelBGrf(BOOL bInP) const
+ { return (const SwChannelBGrf&)Get( RES_GRFATR_CHANNELB,bInP); }
+inline const SwGammaGrf &SwAttrSet::GetGammaGrf(BOOL bInP) const
+ { return (const SwGammaGrf&)Get( RES_GRFATR_GAMMA,bInP); }
+inline const SwInvertGrf &SwAttrSet::GetInvertGrf(BOOL bInP) const
+ { return (const SwInvertGrf&)Get( RES_GRFATR_INVERT,bInP); }
+inline const SwTransparencyGrf &SwAttrSet::GetTransparencyGrf(BOOL bInP) const
+ { return (const SwTransparencyGrf&)Get( RES_GRFATR_TRANSPARENCY,bInP); }
+inline const SwDrawModeGrf &SwAttrSet::GetDrawModeGrf(BOOL bInP) const
+ { return (const SwDrawModeGrf&)Get( RES_GRFATR_DRAWMODE,bInP); }
+
+/******************************************************************************
+ * Implementierung der GrafikAttribut Methoden vom SwFmt
+ ******************************************************************************/
+
+inline const SwMirrorGrf &SwFmt::GetMirrorGrf(BOOL bInP) const
+ { return aSet.GetMirrorGrf(bInP); }
+inline const SwCropGrf &SwFmt::GetCropGrf(BOOL bInP) const
+ { return aSet.GetCropGrf(bInP); }
+inline const SwRotationGrf &SwFmt::GetRotationGrf(BOOL bInP) const
+ { return aSet.GetRotationGrf(bInP); }
+inline const SwLuminanceGrf &SwFmt::GetLuminanceGrf(BOOL bInP) const
+ { return aSet.GetLuminanceGrf( bInP); }
+inline const SwContrastGrf &SwFmt::GetContrastGrf(BOOL bInP) const
+ { return aSet.GetContrastGrf( bInP); }
+inline const SwChannelRGrf &SwFmt::GetChannelRGrf(BOOL bInP) const
+ { return aSet.GetChannelRGrf( bInP); }
+inline const SwChannelGGrf &SwFmt::GetChannelGGrf(BOOL bInP) const
+ { return aSet.GetChannelGGrf( bInP); }
+inline const SwChannelBGrf &SwFmt::GetChannelBGrf(BOOL bInP) const
+ { return aSet.GetChannelBGrf( bInP); }
+inline const SwGammaGrf &SwFmt::GetGammaGrf(BOOL bInP) const
+ { return aSet.GetGammaGrf( bInP); }
+inline const SwInvertGrf &SwFmt::GetInvertGrf(BOOL bInP) const
+ { return aSet.GetInvertGrf( bInP); }
+inline const SwTransparencyGrf &SwFmt::GetTransparencyGrf(BOOL bInP) const
+ { return aSet.GetTransparencyGrf( bInP); }
+inline const SwDrawModeGrf &SwFmt::GetDrawModeGrf(BOOL bInP) const
+ { return aSet.GetDrawModeGrf(bInP); }
+
+
+#endif // _GRFATR_HXX
diff --git a/sw/inc/helpid.h b/sw/inc/helpid.h
new file mode 100644
index 000000000000..51d80db859f7
--- /dev/null
+++ b/sw/inc/helpid.h
@@ -0,0 +1,876 @@
+/*************************************************************************
+ *
+ * $RCSfile: helpid.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SOLAR_HRC
+#include <svtools/solar.hrc>
+#endif
+
+#define HID_BASE HID_APP_START
+
+#define HID_BIB_BASE (HID_BASE + 1)
+#define HID_DBSEL (HID_BASE + 2)
+#define HID_DBEDIT (HID_BASE + 3)
+#define HID_PRINT_OPTION (HID_BASE + 4)
+#define HID_MERGE_PRINTMONITOR (HID_BASE + 5)
+#define HID_FLD_INPUT (HID_BASE + 6)
+#define HID_CONFIG_MISC (HID_BASE + 7)
+#define HID_CONFIG_PATH (HID_BASE + 8)
+#define HID_CONFIG_TB (HID_BASE + 9)
+#define HID_PG_FOOTNOTE (HID_BASE + 10)
+#define HID_FORMAT_GRAPHIC (HID_BASE + 11)
+#define HID_FILTERSTATUS (HID_BASE + 12)
+#define HID_DOCINFO_EDT (HID_BASE + 13)
+#define HID_DBLOGON (HID_BASE + 14)
+#define HID_MAC_ASSIGN (HID_BASE + 15)
+#define HID_CONFIG_MN (HID_BASE + 16)
+#define HID_PAPERSIZE (HID_BASE + 17)
+#define HID_PASSWD (HID_BASE + 18)
+#define HID_SPELLING_OPTIONS (HID_BASE + 19)
+#define HID_HYPHENATE_OPTIONS (HID_BASE + 20)
+#define HID_FORMAT_COLUMN (HID_BASE + 21)
+#define HID_CONFIG_SAVE (HID_BASE + 22)
+#define HID_NUM_NAMES (HID_BASE + 23)
+#define HID_SYMBOL_SELECT (HID_BASE + 24)
+#define HID_CONFIG_KY (HID_BASE + 25)
+#define HID_LINKEDIT (HID_BASE + 26)
+#define HID_GRAPHIC_PREVIEW (HID_BASE + 28)
+#define HID_DICTIONARY (HID_BASE + 29)
+#define HID_SET_STYLE (HID_BASE + 30)
+#define HID_RIBBONBAR (HID_BASE + 31)
+#define HID_STATUSLINE (HID_BASE + 32)
+#define HID_DOCBAR (HID_BASE + 33)
+#define HID_VRULER (HID_BASE + 34)
+#define HID_MAKRO_WINDOW (HID_BASE + 35)
+#define HID_ENVELOP_FORMAT (HID_BASE + 37)
+#define HID_ENVELOP_PRINTER (HID_BASE + 38)
+
+#define HID_HEADER_FOOTER_DLG (HID_BASE + 39)
+#define HID_GRID_DLG (HID_BASE + 40)
+#define HID_USER_ADDRESS_DLG (HID_BASE + 41)
+#define HID_SELECT_FAX_DLG (HID_BASE + 42)
+
+#define HID_LABEL_FORMAT (HID_BASE + 43)
+#define HID_BRSORT (HID_BASE + 44)
+#define HID_BRSEEK (HID_BASE + 45)
+#define HID_BRCFG (HID_BASE + 46)
+
+#define HID_FORMEDT_CONTENT (HID_BASE + 47)
+#define HID_FORMEDT_USER (HID_BASE + 48)
+#define HID_FORMEDT_INDEX (HID_BASE + 49)
+
+#define HID_SCRL_PAGEUP (HID_BASE + 50)
+#define HID_SCRL_PAGEDOWN (HID_BASE + 51)
+
+#define HID_DRAW_WIN (HID_BASE + 52)
+#define HID_EDIT_WIN (HID_BASE + 53)
+
+#define HID_INSERT_CTRL (HID_BASE + 54) // TbxControl Einfuegen
+#define HID_INSERT_OBJ_CTRL (HID_BASE + 55)
+#define HID_INSERT_FIELD_CTRL (HID_BASE + 56)
+
+#define HID_SOURCEVIEW (HID_BASE + 57)
+#define HID_TBL_OPT_CTRL (HID_BASE + 58)
+#define HID_AUTOFORMAT_CLB (HID_BASE + 59)
+
+#define HID_SCRL_NAVI (HID_BASE + 60)
+#define HID_NAVI_DRAG_HYP (HID_BASE + 61)
+#define HID_NAVI_DRAG_LINK (HID_BASE + 62)
+#define HID_NAVI_DRAG_COPY (HID_BASE + 63)
+#define HID_NAVI_OUTLINES (HID_BASE + 64)
+
+#define HID_AUTOFORMAT_EXEC (HID_BASE + 65)
+#define HID_AUTOFORMAT_CLOSE (HID_BASE + 66)
+
+#define HID_PAGEPREVIEW (HID_BASE + 67)
+#define HID_SOURCE_EDITWIN (HID_BASE + 68)
+
+// Dialog Help-IDs **********************************************************
+
+#define HID_CONVERT_FROM (HID_BASE + 200)
+#define HID_CONVERT_TO (HID_BASE + 201)
+#define HID_EDIT_POSTIT (HID_BASE + 202)
+#define HID_INSERT_CHART (HID_BASE + 203)
+#define HID_PAGE_PREVIEW (HID_BASE + 204)
+#define HID_INSERT_HYPERLINK (HID_BASE + 205)
+#define HID_NAVIGATOR_TREELIST (HID_BASE + 206)
+#define HID_DLG_CAPTION (HID_BASE + 207)
+#define HID_DLG_GLOSS_DECIDE (HID_BASE + 208)
+#define HID_NAVIGATOR_TOOLBOX (HID_BASE + 209)
+#define HID_NAVIGATOR_LISTBOX (HID_BASE + 210)
+#define HID_NUM_BULLET_DLG (HID_BASE + 211)
+#define HID_VS_SINGLENUM (HID_BASE + 212)
+#define HID_VS_NUM (HID_BASE + 213)
+#define HID_VS_BULLET (HID_BASE + 214)
+#define HID_VS_NUMBMP (HID_BASE + 215)
+#define HID_VS_RULER (HID_BASE + 216)
+#define HID_RULER_DIALOG (HID_BASE + 217)
+#define HID_INSERT_ABSTRACT (HID_BASE + 218)
+#define HID_NAVI_TBX1 (HID_BASE + 219)
+#define HID_NAVI_TBX2 (HID_BASE + 220)
+#define HID_NAVI_TBX3 (HID_BASE + 221)
+#define HID_NAVI_TBX4 (HID_BASE + 222)
+#define HID_NAVI_TBX5 (HID_BASE + 223)
+#define HID_NAVI_TBX6 (HID_BASE + 224)
+#define HID_NAVI_TBX7 (HID_BASE + 225)
+#define HID_NAVI_TBX8 (HID_BASE + 226)
+#define HID_NAVI_TBX9 (HID_BASE + 227)
+#define HID_NAVI_TBX10 (HID_BASE + 228)
+#define HID_NAVI_TBX11 (HID_BASE + 229)
+#define HID_NAVI_TBX12 (HID_BASE + 230)
+#define HID_NAVI_TBX13 (HID_BASE + 231)
+#define HID_NAVI_TBX14 (HID_BASE + 232)
+#define HID_NAVI_TBX15 (HID_BASE + 233)
+#define HID_NAVI_VS (HID_BASE + 234)
+#define HID_NUM_FORMAT_BTN (HID_BASE + 235)
+#define HID_PPREV_ZOOM (HID_BASE + 236)
+#define HID_NAVI_TBX16 (HID_BASE + 237)
+#define HID_LTEMPL_TEXT (HID_BASE + 238)
+#define HID_LTEMPL_FRAME (HID_BASE + 239)
+#define HID_LTEMPL_PAGE (HID_BASE + 240)
+#define HID_LTEMPL_OVERRIDE (HID_BASE + 241)
+#define HID_LTEMPL_TEMPLATES (HID_BASE + 242)
+#define HID_NAVI_TBX17 (HID_BASE + 243)
+#define HID_NAVI_TBX18 (HID_BASE + 244)
+#define HID_NAVI_TBX19 (HID_BASE + 245)
+#define HID_NAVI_TBX20 (HID_BASE + 246)
+#define HID_NAVI_TBX21 (HID_BASE + 247)
+#define HID_NAVI_TBX22 (HID_BASE + 248)
+#define HID_NAVI_TBX23 (HID_BASE + 249)
+#define HID_NAVI_TBX24 (HID_BASE + 250)
+#define HID_NAVIGATOR_GLOBAL_TOOLBOX (HID_BASE + 251)
+#define HID_NAVIGATOR_GLOB_TREELIST (HID_BASE + 252)
+#define HID_GLOS_GROUP_TREE (HID_BASE + 253)
+#define HID_GLBLTREE_UPDATE (HID_BASE + 254)
+#define HID_GLBLTREE_INSERT (HID_BASE + 255)
+#define HID_GLBLTREE_EDIT (HID_BASE + 256)
+#define HID_GLBLTREE_DEL (HID_BASE + 257)
+#define HID_GLBLTREE_INS_IDX (HID_BASE + 258)
+#define HID_GLBLTREE_INS_CNTIDX (HID_BASE + 259)
+#define HID_GLBLTREE_INS_USRIDX (HID_BASE + 260)
+#define HID_GLBLTREE_INS_FILE (HID_BASE + 261)
+#define HID_GLBLTREE_INS_NEW_FILE (HID_BASE + 262)
+#define HID_GLBLTREE_INS_TEXT (HID_BASE + 263)
+#define HID_GLBLTREE_UPD_SEL (HID_BASE + 264)
+#define HID_GLBLTREE_UPD_IDX (HID_BASE + 265)
+#define HID_GLBLTREE_UPD_LINK (HID_BASE + 266)
+#define HID_GLBLTREEUPD_ALL (HID_BASE + 267)
+#define HID_NUM_OUTL_NAMED_NUMS (HID_BASE + 268)
+#define HID_NUM_OUTL_NUM_SAVEAS (HID_BASE + 269)
+#define HID_NUM_NAMED_NUMS (HID_BASE + 270)
+#define HID_NUM_NUM_SAVEAS (HID_BASE + 271)
+#define HID_NUM_STD_NUMBER (HID_BASE + 272)
+#define HID_NUM_DEL_NUMBER (HID_BASE + 273)
+#define HID_NUM_STD_BULLET (HID_BASE + 274)
+#define HID_NUM_DEL_BULLET (HID_BASE + 275)
+#define HID_NAVI_CONTENT (HID_BASE + 276)
+#define HID_NAVI_GLOBAL (HID_BASE + 277)
+#define HID_LTEMPL_NUMBERING (HID_BASE + 278)
+#define HID_FLDVAR_APPLY (HID_BASE + 279)
+#define HID_FLDVAR_DELETE (HID_BASE + 280)
+#define HID_FLDEDT_ADDRESS (HID_BASE + 281)
+#define HID_SORT_ACTION (HID_BASE + 282)
+#define HID_SORT_AUTHOR (HID_BASE + 283)
+#define HID_SORT_DATE (HID_BASE + 284)
+#define HID_SORT_COMMENT (HID_BASE + 285)
+#define HID_SW_SORT_POSITION (HID_BASE + 286)
+#define HID_SYNC_BTN (HID_BASE + 287)
+#define HID_EDIT_COMMENT (HID_BASE + 288)
+#define HID_SEL_TEMPLATE (HID_BASE + 289)
+#define HID_DLG_SEQUENCE_OPTION (HID_BASE + 290)
+#define HID_DLG_FLDEDT_NEXT (HID_BASE + 291)
+#define HID_DLG_FLDEDT_PREV (HID_BASE + 292)
+#define HID_DLG_FLDEDT_ADDRESS (HID_BASE + 293)
+#define HID_DLG_PRV_PRT_OPTIONS (HID_BASE + 294)
+
+#define HID_FILEDLG_CHARDLG (HID_BASE + 295)
+#define HID_FILEDLG_LOADTEMPLATE (HID_BASE + 296)
+#define HID_FILEDLG_ROMENU (HID_BASE + 297)
+#define HID_FILEDLG_MAILMRGE1 (HID_BASE + 298)
+#define HID_FILEDLG_MAILMRGE2 (HID_BASE + 299)
+#define HID_FILEDLG_FRMPAGE (HID_BASE + 300)
+#define HID_FILEDLG_SRCVIEW (HID_BASE + 301)
+#define HID_FILEDLG_WIZDOKU (HID_BASE + 302)
+#define HID_PREVIEW_ZOOM (HID_BASE + 303)
+
+#define HID_REDLINE_AUTOFMT_ACCEPT (HID_BASE + 304)
+#define HID_MULTI_TOX_DLG (HID_BASE + 305)
+#define HID_ASCII_FILTER (HID_BASE + 306)
+
+// TabPage Help-IDs *********************************************************
+
+#define HID_DROPCAPS (HID_BASE + 400)
+#define HID_FRM_EXT (HID_BASE + 401)
+#define HID_FRM_STD (HID_BASE + 402)
+#define HID_GRF_EXT (HID_BASE + 403)
+#define HID_COLUMN (HID_BASE + 404)
+#define HID_DOC_STAT (HID_BASE + 405)
+#define HID_MACROASSIGN (HID_BASE + 406)
+#define HID_FOOTNOTE_PAGE (HID_BASE + 407)
+#define HID_OPTDOCDISP_PAGE (HID_BASE + 408)
+#define HID_OPTGRID_PAGE (HID_BASE + 409)
+#define HID_OPTTEST_PAGE (HID_BASE + 410)
+#define HID_OPTPRINT_PAGE (HID_BASE + 411)
+#define HID_FORMAT_TABLE (HID_BASE + 412)
+#define HID_TABLE_COLUMN (HID_BASE + 413)
+#define HID_LAB_LAB (HID_BASE + 414)
+#define HID_LAB_PRT (HID_BASE + 415)
+#define HID_ENV_PRT (HID_BASE + 416)
+#define HID_LAB_FMT (HID_BASE + 417)
+#define HID_ENV_ENV (HID_BASE + 418)
+#define HID_ENV_FMT (HID_BASE + 419)
+#define HID_FRM_URL (HID_BASE + 421)
+#define HID_CHAR_URL (HID_BASE + 422)
+#define HID_CONTENT_OPT (HID_BASE + 423)
+#define HID_LAYOUT_OPT (HID_BASE + 424)
+#define HID_STD_FONT (HID_BASE + 425)
+#define HID_COND_COLL (HID_BASE + 426)
+#define HID_FRM_ADD (HID_BASE + 427)
+#define HID_TABLE_TEXTFLOW (HID_BASE + 428)
+#define HID_AUTOFMT_BY_INPUT (HID_BASE + 429)
+#define HID_AUTOFMT_APPLY (HID_BASE + 430)
+#define HID_OPTTABLE_PAGE (HID_BASE + 431)
+#define HID_PICK_SINGLE_NUM (HID_BASE + 432)
+#define HID_PICK_BULLET (HID_BASE + 433)
+#define HID_PICK_NUM (HID_BASE + 434)
+#define HID_PICK_BMP (HID_BASE + 435)
+#define HID_OPTSRCVIEW (HID_BASE + 436)
+#define HID_FLD_DB (HID_BASE + 437)
+#define HID_FLD_DOKINF (HID_BASE + 438)
+#define HID_FLD_VAR (HID_BASE + 439)
+#define HID_FLD_DOK (HID_BASE + 440)
+#define HID_FLD_FUNC (HID_BASE + 441)
+#define HID_FLD_REF (HID_BASE + 442)
+#define HID_OPTSHDWCRSR (HID_BASE + 443)
+#define HID_NUM_OPTIONS (HID_BASE + 444)
+#define HID_NUM_POSITION (HID_BASE + 445)
+#define HID_NUMPARA (HID_BASE + 446)
+#define HID_FOOTNOTE_OPTIONS (HID_BASE + 447)
+#define HID_ENDNOTE_OPTIONS (HID_BASE + 448)
+#define HID_REDLINE_OPT (HID_BASE + 449)
+#define HID_LINENUMBERING (HID_BASE + 450)
+#define HID_REDLINE_ACCEPT (HID_BASE + 451)
+#define HID_EDIT_FLD_DB (HID_BASE + 452)
+#define HID_EDIT_FLD_DOKINF (HID_BASE + 453)
+#define HID_EDIT_FLD_VAR (HID_BASE + 454)
+#define HID_EDIT_FLD_DOK (HID_BASE + 455)
+#define HID_EDIT_FLD_FUNC (HID_BASE + 456)
+#define HID_EDIT_FLD_REF (HID_BASE + 457)
+#define HID_REDLINE_CTRL (HID_BASE + 458)
+#define HID_TP_OUTLINE_NUM (HID_BASE + 459)
+#define HID_OPTINSERT_PAGE (HID_BASE + 460)
+#define HID_OPTCAPTION_PAGE (HID_BASE + 461)
+#define HID_OPTLOAD_PAGE (HID_BASE + 462)
+#define HID_INSERT_TOX_PAGE (HID_BASE + 463)
+#define HID_TOX_FORM_ENTRY_PAGE (HID_BASE + 464)
+#define HID_TOX_FORM_STYLES_PAGE (HID_BASE + 465)
+#define HID_INSERT_TOX_TABDLG (HID_BASE + 466)
+#define HID_INSERT_SECTION_PAGE (HID_BASE + 467)
+#define HID_INSERT_SECTION_DLG (HID_BASE + 468)
+#define HID_SECTION_PROPERTIES_DLG (HID_BASE + 469)
+#define HID_RENAME_XNAMED (HID_BASE + 470)
+#define HID_TP_TOX_SELECT (HID_BASE + 471)
+#define HID_TP_TOX_ENTRY (HID_BASE + 472)
+#define HID_TOX_STYLES_PAGE (HID_BASE + 473)
+#define HID_TP_VISITING_CARDS (HID_BASE + 474)
+#define HID_DLG_ADD_IDX_STYLES (HID_BASE + 475)
+#define HID_ADD_STYLES_TLB (HID_BASE + 476)
+#define HID_OLE_CHECKLB (HID_BASE + 477)
+#define HID_DLG_CREATE_AUTH_ENTRY (HID_BASE + 478)
+#define HID_TP_PRIVATE_DATA (HID_BASE + 479)
+#define HID_TP_BUSINESS_DATA (HID_BASE + 480)
+#define HID_SECTION_FTNENDNOTES_PAGE (HID_BASE + 481)
+
+
+// AutoPilot Help-IDs *********************************************************
+
+#define HID_LETTER_PAGE1 (HID_BASE + 501)
+#define HID_LETTER_PAGE2 (HID_BASE + 502)
+#define HID_LETTER_PAGE3 (HID_BASE + 503)
+#define HID_LETTER_PAGE4 (HID_BASE + 504)
+#define HID_LETTER_PAGE5 (HID_BASE + 505)
+#define HID_LETTER_PAGE6 (HID_BASE + 506)
+#define HID_LETTER_PAGE7 (HID_BASE + 507)
+#define HID_LETTER_PAGE8 (HID_BASE + 508)
+#define HID_LETTER_PAGE9 (HID_BASE + 509)
+
+#define HID_FAX_PAGE1 (HID_BASE + 511)
+#define HID_FAX_PAGE2 (HID_BASE + 512)
+#define HID_FAX_PAGE3 (HID_BASE + 513)
+#define HID_FAX_PAGE4 (HID_BASE + 514)
+#define HID_FAX_PAGE5 (HID_BASE + 515)
+#define HID_FAX_PAGE6 (HID_BASE + 516)
+#define HID_FAX_PAGE7 (HID_BASE + 517)
+#define HID_FAX_PAGE8 (HID_BASE + 518)
+
+#define HID_MEMO_PAGE1 (HID_BASE + 521)
+#define HID_MEMO_PAGE2 (HID_BASE + 522)
+#define HID_MEMO_PAGE3 (HID_BASE + 523)
+#define HID_MEMO_PAGE4 (HID_BASE + 524)
+#define HID_MEMO_PAGE5 (HID_BASE + 525)
+
+#define HID_AGENDA_PAGE1 (HID_BASE + 531)
+#define HID_AGENDA_PAGE2 (HID_BASE + 532)
+#define HID_AGENDA_PAGE3 (HID_BASE + 533)
+#define HID_AGENDA_PAGE4 (HID_BASE + 534)
+#define HID_AGENDA_PAGE5 (HID_BASE + 535)
+#define HID_AGENDA_PAGE6 (HID_BASE + 536)
+
+#define HID_AUTOPILOT_NEXT (HID_BASE + 537)
+#define HID_AUTOPILOT_PREV (HID_BASE + 538)
+#define HID_AUTOPILOT_OK (HID_BASE + 539)
+
+// HelpIds fuers Menue *****************************************************
+
+#define HID_MN_SUB_TBLROW (HID_BASE + 600)
+#define HID_MN_SUB_TBLCOL (HID_BASE + 601)
+#define HID_MN_SUB_AUTOFORMAT (HID_BASE + 602)
+#define HID_MN_SUB_TOOLBAR (HID_BASE + 603)
+#define HID_MN_SUB_FIELD (HID_BASE + 604)
+#define HID_MN_SUB_GRAPHIC (HID_BASE + 605)
+#define HID_MN_SUB_TEMPLATES (HID_BASE + 606)
+#define HID_MN_SUB_ARRANGE (HID_BASE + 607)
+#define HID_MN_SUB_SPELLING (HID_BASE + 608)
+#define HID_MN_SUB_UPDATE (HID_BASE + 609)
+#define HID_MN_SUB_MIRROR (HID_BASE + 610)
+#define HID_MN_SUB_ALIGN (HID_BASE + 611)
+#define HID_MN_SUB_OPTIONS (HID_BASE + 612)
+
+#define HID_MN_CALC_PHD (HID_BASE + 613)
+#define HID_MN_CALC_SQRT (HID_BASE + 614)
+#define HID_MN_CALC_OR (HID_BASE + 615)
+#define HID_MN_CALC_XOR (HID_BASE + 616)
+#define HID_MN_CALC_AND (HID_BASE + 617)
+#define HID_MN_CALC_NOT (HID_BASE + 618)
+#define HID_MN_CALC_EQ (HID_BASE + 619)
+#define HID_MN_CALC_NEQ (HID_BASE + 620)
+#define HID_MN_CALC_LEQ (HID_BASE + 621)
+#define HID_MN_CALC_GEQ (HID_BASE + 622)
+#define HID_MN_CALC_LES (HID_BASE + 623)
+#define HID_MN_CALC_GRE (HID_BASE + 624)
+#define HID_MN_CALC_SUM (HID_BASE + 625)
+#define HID_MN_CALC_MEAN (HID_BASE + 626)
+#define HID_MN_CALC_MIN (HID_BASE + 627)
+#define HID_MN_CALC_MAX (HID_BASE + 628)
+#define HID_MN_CALC_SIN (HID_BASE + 629)
+#define HID_MN_CALC_COS (HID_BASE + 630)
+#define HID_MN_CALC_TAN (HID_BASE + 631)
+#define HID_MN_CALC_ASIN (HID_BASE + 632)
+#define HID_MN_CALC_ACOS (HID_BASE + 633)
+#define HID_MN_CALC_ATAN (HID_BASE + 634)
+#define HID_MN_CALC_POW (HID_BASE + 635)
+#define HID_MN_CALC_LISTSEP (HID_BASE + 636)
+#define HID_MN_POP_OPS (HID_BASE + 637)
+#define HID_MN_POP_STATISTICS (HID_BASE + 638)
+#define HID_MN_POP_FUNC (HID_BASE + 639)
+#define HID_MN_RSC_END (HID_BASE + 640)
+#define HID_MN_CALC_ROUND (HID_BASE + 641)
+
+#define HID_MN_READONLY_DOWNLOAD (HID_BASE + 643)
+#define HID_MN_READONLY_CREATEGRAPHIKLINK (HID_BASE + 644)
+#define HID_MN_READONLY_SAVEGRAPHIC (HID_BASE + 645)
+#define HID_MN_READONLY_GRAPHICTOGALLERY (HID_BASE + 646)
+#define HID_MN_READONLY_TOGALLERYLINK (HID_BASE + 647)
+#define HID_MN_READONLY_TOGALLERYCOPY (HID_BASE + 648)
+#define HID_MN_READONLY_SAVEBACKGROUND (HID_BASE + 649)
+#define HID_MN_READONLY_BACKGROUNDTOGALLERY (HID_BASE + 650)
+#define HID_MN_READONLY_COPYLINK (HID_BASE + 651)
+#define HID_MN_READONLY_COPYGRAPHIC (HID_BASE + 652)
+#define HID_MN_READONLY_LOADGRAPHIC (HID_BASE + 653)
+#define HID_MN_READONLY_GRAPHICOFF (HID_BASE + 654)
+#define HID_MN_READONLY_PLUGINOFF (HID_BASE + 655)
+
+#define HID_MD_GLOS_DEFINE (HID_BASE + 656)
+#define HID_MD_GLOS_REPLACE (HID_BASE + 657)
+#define HID_MD_GLOS_RENAME (HID_BASE + 658)
+#define HID_MD_GLOS_DELETE (HID_BASE + 659)
+#define HID_MD_GLOS_EDIT (HID_BASE + 660)
+#define HID_MD_GLOS_MACRO (HID_BASE + 661)
+#define HID_LINGU_ADD_WORD (HID_BASE + 662)
+#define HID_LINGU_IGNORE_WORD (HID_BASE + 663)
+#define HID_LINGU_SPELLING_DLG (HID_BASE + 664)
+#define HID_LINGU_AUTOCORR (HID_BASE + 665)
+#define HID_LINGU_REPLACE (HID_BASE + 666)
+#define HID_MD_GLOS_CATEGORY (HID_BASE + 667)
+#define HID_REGION_TREE (HID_BASE + 668)
+#define HID_LINGU_WORD_LANGUAGE (HID_BASE + 669)
+#define HID_LINGU_PARA_LANGUAGE (HID_BASE + 670)
+#define HID_MD_GLOS_DEFINE_TEXT (HID_BASE + 671)
+#define HID_DLG_PASSWD_SECTION (HID_BASE + 672)
+#define HID_MD_COPY_TO_CLIPBOARD (HID_BASE + 673)
+#define HID_MD_GLOS_IMPORT (HID_BASE + 674)
+
+// Weiter Help-IDs **********************************************************
+
+#define HID_CLOSE_FILE (HID_BASE + 1001)
+#define HID_LAUNCH_REGISTRY (HID_BASE + 1002)
+#define HID_MERGE_FILE (HID_BASE + 1003)
+#define HID_MERGE_FILE_DLG (HID_BASE + 1004)
+#define HID_NEW_FILE (HID_BASE + 1005)
+#define HID_OPEN_FILE (HID_BASE + 1007)
+#define HID_OPEN_LASTVERSION (HID_BASE + 1009)
+#define HID_PRINT_FILE (HID_BASE + 1010)
+#define HID_PRINT_FILE_OPTIONS (HID_BASE + 1011)
+#define HID_SAVE_FILE_AS (HID_BASE + 1012)
+#define HID_SAVE_FILE (HID_BASE + 1013)
+#define HID_SETUP_PRINTER_DLG (HID_BASE + 1015)
+#define HID_EXIT (HID_BASE + 1017)
+#define HID_CREATE_DOCUMENT (HID_BASE + 1019)
+#define HID_DOCSTAT_DLG (HID_BASE + 1020)
+#define HID_LOAD_TEMPLATE_DLG (HID_BASE + 1021)
+#define HID_SAVE_ALL (HID_BASE + 1023)
+#define HID_NEW_FILE_DEFAULT (HID_BASE + 1024)
+#define HID_PRINT_FILE_DEFAULT (HID_BASE + 1025)
+#define HID_FAX (HID_BASE + 1028)
+#define HID_SELECT_DATABASE (HID_BASE + 1030)
+#define HID_DOC_INFO_DLG (HID_BASE + 1031)
+#define HID_DOC_MGR_DLG (HID_BASE + 1032)
+#define HID_OPTCAPTION_CLB (HID_BASE + 1033)
+
+#define HID_COPY (HID_BASE + 1102)
+#define HID_CUT (HID_BASE + 1103)
+#define HID_EDIT_FIELD (HID_BASE + 1104)
+#define HID_EDIT_FILE_INFO_DLG (HID_BASE + 1107)
+#define HID_EDIT_LINK_DLG (HID_BASE + 1109)
+#define HID_EDIT_OBJECT (HID_BASE + 1110)
+#define HID_GOTO (HID_BASE + 1111)
+#define HID_SET_FIELD_VALUE (HID_BASE + 1112)
+#define HID_PASTE (HID_BASE + 1113)
+#define HID_REDO (HID_BASE + 1116)
+#define HID_SEARCH (HID_BASE + 1117)
+#define HID_REPLACE (HID_BASE + 1118)
+#define HID_SELECT_ALL (HID_BASE + 1119)
+#define HID_UNDO (HID_BASE + 1120)
+#define HID_REPEAT (HID_BASE + 1122)
+#define HID_BUFFER_UPDATE (HID_BASE + 1124)
+#define HID_UPDATE_FIELDS (HID_BASE + 1126)
+#define HID_EXECUTE_MACROFIELD (HID_BASE + 1127)
+#define HID_EDIT_FORMULA (HID_BASE + 1128)
+#define HID_CALC_TABLE (HID_BASE + 1129)
+#define HID_NUM_BULLET_DOWN (HID_BASE + 1130)
+#define HID_NUM_BULLET_UP (HID_BASE + 1131)
+#define HID_NUM_BULLET_PREV (HID_BASE + 1132)
+#define HID_NUM_BULLET_NEXT (HID_BASE + 1133)
+#define HID_NUM_BULLET_MOVEUP (HID_BASE + 1134)
+#define HID_NUM_BULLET_MOVEDOWN (HID_BASE + 1135)
+#define HID_NUM_BULLET_NONUM (HID_BASE + 1136)
+#define HID_NUM_BULLET_OFF (HID_BASE + 1137)
+#define HID_NUM_BULLET_ON (HID_BASE + 1138)
+#define HID_NUM_BULLET_OUTLINE_DOWN (HID_BASE + 1139)
+#define HID_NUM_BULLET_OUTLINE_UP (HID_BASE + 1140)
+#define HID_NUM_BULLET_OUTLINE_MOVEUP (HID_BASE + 1141)
+#define HID_NUM_BULLET_OUTLINE_MOVEDOWN (HID_BASE + 1142)
+#define HID_UPDATE_INPUTFIELDS (HID_BASE + 1143)
+#define HID_NUM_NUMBERING_ON (HID_BASE + 1144)
+#define HID_REPEAT_SEARCH (HID_BASE + 1150)
+#define HID_REPAGINATE (HID_BASE + 1161)
+
+#define HID_REFRESH_VIEW (HID_BASE + 1201)
+#define HID_RIBBON (HID_BASE + 1210)
+#define HID_RULER (HID_BASE + 1211)
+#define HID_STATUSBAR (HID_BASE + 1212)
+#define HID_TOOLBOX (HID_BASE + 1213)
+#define HID_VIEW_BOUNDS (HID_BASE + 1214)
+#define HID_VIEW_FIELDS (HID_BASE + 1215)
+#define HID_VLINEAL (HID_BASE + 1216)
+#define HID_VSCROLLBAR (HID_BASE + 1217)
+#define HID_HSCROLLBAR (HID_BASE + 1218)
+#define HID_VIEW_META_CHARS (HID_BASE + 1224)
+#define HID_VIEW_MARKS (HID_BASE + 1225)
+#define HID_VIEW_FIELDNAME (HID_BASE + 1226)
+#define HID_VIEW_TABLEGRID (HID_BASE + 1227)
+#define HID_ZOOM (HID_BASE + 1231)
+
+#define HID_DELETE_BOOKMARK (HID_BASE + 1301)
+#define HID_INSERT_BREAK (HID_BASE + 1303)
+#define HID_INSERT_COLUMN_BREAK (HID_BASE + 1305)
+#define HID_INSERT_FILE (HID_BASE + 1309)
+#define HID_INSERT_FOOTNOTE (HID_BASE + 1311)
+#define HID_INSERT_GRAFIC (HID_BASE + 1315)
+#define HID_INSERT_LINEBREAK (HID_BASE + 1318)
+#define HID_INSERT_MERGEFIELD_DLG (HID_BASE + 1320)
+#define HID_INSERT_OBJECT_DLG (HID_BASE + 1322)
+#define HID_INSERT_PAGEBREAK (HID_BASE + 1323)
+#define HID_INSERT_RECORD (HID_BASE + 1326)
+#define HID_MERGE_RECORD (HID_BASE + 1327)
+#define HID_INSERT_SYMBOL (HID_BASE + 1328)
+#define HID_INSERT_STRING (HID_BASE + 1331)
+#define HID_INSERT_COLS (HID_BASE + 1332)
+#define HID_INSERT_FRAME_INTERACT (HID_BASE + 1333)
+#define HID_INSERT_FRAME (HID_BASE + 1334)
+#define HID_INSERT_IDX_ENTRY (HID_BASE + 1340)
+#define HID_INSERT_USERIDX_ENTRY (HID_BASE + 1341)
+#define HID_INSERT_CNTNTIDX_ENTRY (HID_BASE + 1342)
+#define HID_INSERT_SOFT_HYPHEN (HID_BASE + 1350)
+#define HID_INSERT_HARD_SPACE (HID_BASE + 1351)
+
+#define HID_SET_FONT (HID_BASE + 1401)
+#define HID_SET_FONT_SIZE (HID_BASE + 1402)
+#define HID_GROW_FONT_SIZE (HID_BASE + 1403)
+#define HID_SHRINK_FONT_SIZE (HID_BASE + 1404)
+#define HID_SET_BOLD (HID_BASE + 1405)
+#define HID_SET_ITALIC (HID_BASE + 1406)
+#define HID_SET_SHADOW (HID_BASE + 1407)
+#define HID_SET_OUTLINE (HID_BASE + 1408)
+#define HID_SET_UNDERLINE (HID_BASE + 1409)
+#define HID_SET_STRIKEOUT (HID_BASE + 1410)
+#define HID_SET_SUPER_SCRIPT (HID_BASE + 1411)
+#define HID_SET_SUB_SCRIPT (HID_BASE + 1412)
+#define HID_SET_COLOR (HID_BASE + 1413)
+#define HID_SET_CASEMAP (HID_BASE + 1414)
+#define HID_SET_LANGUAGE (HID_BASE + 1415)
+#define HID_SET_KERNING (HID_BASE + 1416)
+#define HID_INDENT_TO_TABSTOP (HID_BASE + 1417)
+#define HID_SET_LEFT_PARA (HID_BASE + 1418)
+#define HID_SET_RIGHT_PARA (HID_BASE + 1419)
+#define HID_SET_CENTER_PARA (HID_BASE + 1420)
+#define HID_SET_JUSTIFY_PARA (HID_BASE + 1421)
+#define HID_SET_LINE_SPACE_1 (HID_BASE + 1422)
+#define HID_SET_LINE_SPACE_15 (HID_BASE + 1423)
+#define HID_SET_LINE_SPACE_2 (HID_BASE + 1424)
+#define HID_FLIP_HORZ_GRAFIC (HID_BASE + 1425)
+#define HID_FLIP_VERT_GRAFIC (HID_BASE + 1426)
+#define HID_SET_ADJUST (HID_BASE + 1428)
+#define HID_SET_LRMARGIN (HID_BASE + 1429)
+#define HID_SET_ULMARGIN (HID_BASE + 1430)
+#define HID_UNINDENT_TO_TABSTOP (HID_BASE + 1431)
+#define HID_SET_HYPHEN_ZONE (HID_BASE + 1432)
+#define HID_SET_PAGE_BREAK (HID_BASE + 1433)
+#define HID_SET_KEEP_TOGETHER (HID_BASE + 1434)
+#define HID_SET_WIDOW (HID_BASE + 1436)
+#define HID_SET_ORPHAN (HID_BASE + 1437)
+#define HID_FORMAT_SHADOW (HID_BASE + 1438)
+#define HID_FORMAT_BORDER (HID_BASE + 1439)
+#define HID_FORMAT_CHAR_DLG (HID_BASE + 1441)
+#define HID_FORMAT_PARA_DLG (HID_BASE + 1443)
+#define HID_FORMAT_TAB (HID_BASE + 1444)
+#define HID_FORMAT_TAB_DLG (HID_BASE + 1445)
+#define HID_FORMAT_BORDER_DLG (HID_BASE + 1447)
+#define HID_FORMAT_BACKGROUND (HID_BASE + 1448)
+#define HID_FORMAT_BACKGROUND_DLG (HID_BASE + 1450)
+#define HID_FORMAT_PAGE (HID_BASE + 1451)
+#define HID_FORMAT_PAGE_DLG (HID_BASE + 1452)
+#define HID_FORMAT_DROPCAPS (HID_BASE + 1454)
+#define HID_FORMAT_FRAME_DLG (HID_BASE + 1456)
+#define HID_FORMAT_GRAFIC_DLG (HID_BASE + 1458)
+#define HID_FORMAT_TABLE_DLG (HID_BASE + 1460)
+#define HID_NEW_STYLE_BY_EXAMPLE (HID_BASE + 1462)
+#define HID_UPDATE_STYLE_BY_EXAMPLE (HID_BASE + 1463)
+#define HID_STYLE_SHEET_FRAME_DLG (HID_BASE + 1464)
+#define HID_STYLE_SHEET_DOC_DLG (HID_BASE + 1465)
+#define HID_FORMAT_RESET (HID_BASE + 1469)
+#define HID_FRAME_TO_TOP (HID_BASE + 1470)
+#define HID_FRAME_TO_BOTTOM (HID_BASE + 1471)
+#define HID_FRAME_NOWRAP (HID_BASE + 1472)
+#define HID_FRAME_WRAP (HID_BASE + 1473)
+#define HID_FRAME_WRAPTHRU (HID_BASE + 1474)
+#define HID_FRAME_ALIGN_HORZ_LEFT (HID_BASE + 1475)
+#define HID_FRAME_ALIGN_HORZ_RIGHT (HID_BASE + 1476)
+#define HID_FRAME_ALIGN_HORZ_CENTER (HID_BASE + 1477)
+#define HID_FRAME_ALIGN_VERT_TOP (HID_BASE + 1478)
+#define HID_FRAME_ALIGN_VERT_BOTTOM (HID_BASE + 1479)
+#define HID_FRAME_ALIGN_VERT_CENTER (HID_BASE + 1480)
+#define HID_SET_FRM_SIZE (HID_BASE + 1481)
+#define HID_SET_FRM_POSITION (HID_BASE + 1482)
+#define HID_SET_FRM_ANCHOR (HID_BASE + 1483)
+#define HID_SET_FRM_WRAP (HID_BASE + 1484)
+#define HID_SET_FRM_DIST (HID_BASE + 1485)
+#define HID_SET_FRM_OPTIONS (HID_BASE + 1486)
+#define HID_SET_GRF_MIRROR (HID_BASE + 1488)
+#define HID_SET_TABLE_WIDTH (HID_BASE + 1489)
+#define HID_SET_TABLE_ALIGN (HID_BASE + 1490)
+#define HID_SET_CHAR_STYLE (HID_BASE + 1491)
+#define HID_SET_PARA_STYLE (HID_BASE + 1492)
+#define HID_SET_PAGE_STYLE (HID_BASE + 1493)
+#define HID_SET_FRM_MACRO (HID_BASE + 1494)
+#define HID_SET_FRM_COLUMNS (HID_BASE + 1495)
+#define HID_SET_FRM_COLUMN_WIDTH (HID_BASE + 1496)
+#define HID_UPDATE_STYLES_DIRECT (HID_BASE + 1497)
+
+#define HID_TABLE_INSERT_ROW (HID_BASE + 1501)
+#define HID_TABLE_DELETE_ROW (HID_BASE + 1503)
+#define HID_TABLE_DELETE_COL (HID_BASE + 1504)
+#define HID_TABLE_MERGE_CELLS (HID_BASE + 1506)
+#define HID_AUTOFMT_TABLE (HID_BASE + 1507)
+#define HID_SWDLG_STRINPUT (HID_BASE + 1508)
+#define HID_TABLE_SET_ULSPACE (HID_BASE + 1509)
+#define HID_TABLE_SET_GRID (HID_BASE + 1510)
+#define HID_TABLE_SET_SHADOW (HID_BASE + 1511)
+#define HID_TABLE_SELECT_ROW (HID_BASE + 1513)
+#define HID_TABLE_SELECT_COL (HID_BASE + 1514)
+#define HID_TABLE_SELECT_ALL (HID_BASE + 1515)
+#define HID_TABLE_SET_READ_ONLY_CELLS (HID_BASE + 1517)
+#define HID_TABLE_UNSET_READ_ONLY_CELLS (HID_BASE + 1519)
+#define HID_PAGE_STYLE_SET_COLS (HID_BASE + 1538)
+#define HID_SET_PROP_LINE_SPACE (HID_BASE + 1540)
+#define HID_SET_ABS_LINE_SPACE (HID_BASE + 1541)
+
+#define HID_SPELLING_DLG (HID_BASE + 1601)
+#define HID_THESAURUS_DLG (HID_BASE + 1604)
+#define HID_HYPHENATE_OPT_DLG (HID_BASE + 1607)
+#define HID_SORTING (HID_BASE + 1613)
+#define HID_SORTING_DLG (HID_BASE + 1614)
+#define HID_CALCULATE (HID_BASE + 1615)
+#define HID_RECORD_MACRO_DLG (HID_BASE + 1622)
+#define HID_PLAY_MACRO_DLG (HID_BASE + 1624)
+#define HID_CONFIG_DLG (HID_BASE + 1627)
+#define HID_EXPAND_GLOSSARY (HID_BASE + 1628)
+#define HID_RENAME_GLOSSARY (HID_BASE + 1629)
+#define HID_CONFIG_MENU (HID_BASE + 1630)
+#define HID_CONFIG_KEY (HID_BASE + 1631)
+#define HID_ASSIGN_LOCAL_MACRO_DLG (HID_BASE + 1632)
+#define HID_COMPILE_MACRO (HID_BASE + 1633)
+#define HID_CONFIG_VIEWOPTIONS (HID_BASE + 1635)
+#define HID_CONFIG_COLORS (HID_BASE + 1636)
+#define HID_INSERT_GLOSSARY (HID_BASE + 1640)
+#define HID_AUTO_CORRECT (HID_BASE + 1649)
+#define HID_AUTO_CORRECT_DLG (HID_BASE + 1650)
+#define HID_HELP_PI (HID_BASE + 1655)
+#define HID_NAVIGATION_PI (HID_BASE + 1656)
+#define HID_TEMPLATE_PI (HID_BASE + 1657)
+#define HID_ADDR_PI (HID_BASE + 1658)
+#define HID_NAVIGATION_PI_GOTO_PAGE (HID_BASE + 1659)
+#define HID_LETTER_WIZZARD (HID_BASE + 1660)
+#define HID_FAX_WIZZARD (HID_BASE + 1661)
+#define HID_MEMO_WIZZARD (HID_BASE + 1662)
+#define HID_AGENDA_WIZZARD (HID_BASE + 1663)
+
+#define HID_NEW_WINDOW (HID_BASE + 1701)
+#define HID_ARRANGE_ALL_WIN (HID_BASE + 1702)
+#define HID_ARRANGE_CASCADE_WIN (HID_BASE + 1703)
+#define HID_ARRANGE_HORZ_WIN (HID_BASE + 1704)
+#define HID_ARRANGE_VERT_WIN (HID_BASE + 1705)
+
+#define HID_SHOW_HELP_INDEX (HID_BASE + 1802)
+#define HID_SHOW_KEYBOARD_HELP (HID_BASE + 1803)
+#define HID_SHOW_HELP_MANUAL (HID_BASE + 1804)
+#define HID_SHOW_UPDATE_HELP (HID_BASE + 1805)
+
+#define HID_CHAR_LEFT (HID_BASE + 1901)
+#define HID_CHAR_RIGHT (HID_BASE + 1902)
+#define HID_LINE_UP (HID_BASE + 1903)
+#define HID_LINE_DOWN (HID_BASE + 1904)
+#define HID_START_OF_LINE (HID_BASE + 1905)
+#define HID_END_OF_LINE (HID_BASE + 1906)
+#define HID_START_OF_DOCUMENT (HID_BASE + 1907)
+#define HID_END_OF_DOCUMENT (HID_BASE + 1908)
+#define HID_START_OF_NEXT_PAGE (HID_BASE + 1909)
+#define HID_END_OF_NEXT_PAGE (HID_BASE + 1910)
+#define HID_START_OF_PREV_PAGE (HID_BASE + 1911)
+#define HID_END_OF_PREV_PAGE (HID_BASE + 1912)
+#define HID_START_OF_PAGE (HID_BASE + 1913)
+#define HID_END_OF_PAGE (HID_BASE + 1914)
+#define HID_START_OF_COLUMN (HID_BASE + 1917)
+#define HID_END_OF_COLUMN (HID_BASE + 1918)
+#define HID_START_OF_PARA (HID_BASE + 1919)
+#define HID_END_OF_PARA (HID_BASE + 1920)
+#define HID_NEXT_WORD (HID_BASE + 1921)
+#define HID_PREV_WORD (HID_BASE + 1922)
+#define HID_NEXT_SENT (HID_BASE + 1923)
+#define HID_PREV_SENT (HID_BASE + 1924)
+#define HID_DELETE (HID_BASE + 1925)
+#define HID_BACKSPACE (HID_BASE + 1926)
+#define HID_DELETE_SENT (HID_BASE + 1927)
+#define HID_DELETE_BACK_SENT (HID_BASE + 1928)
+#define HID_DELETE_WORD (HID_BASE + 1929)
+#define HID_DELETE_BACK_WORD (HID_BASE + 1930)
+#define HID_DELETE_LINE (HID_BASE + 1931)
+#define HID_DELETE_BACK_LINE (HID_BASE + 1932)
+#define HID_DELETE_PARA (HID_BASE + 1933)
+#define HID_DELETE_BACK_PARA (HID_BASE + 1934)
+#define HID_DELETE_WHOLE_LINE (HID_BASE + 1935)
+#define HID_SET_INS_MODE (HID_BASE + 1936)
+#define HID_PAGEUP (HID_BASE + 1937)
+#define HID_PAGEDOWN (HID_BASE + 1938)
+#define HID_SET_ADD_MODE (HID_BASE + 1939)
+#define HID_SET_EXT_MODE (HID_BASE + 1940)
+#define HID_ESCAPE (HID_BASE + 1941)
+#define HID_SELECT_WORD (HID_BASE + 1943)
+#define HID_START_TABLE (HID_BASE + 1947)
+#define HID_END_TABLE (HID_BASE + 1948)
+#define HID_NEXT_TABLE (HID_BASE + 1949)
+#define HID_PREV_TABLE (HID_BASE + 1950)
+#define HID_START_OF_NEXT_COLUMN (HID_BASE + 1951)
+#define HID_END_OF_NEXT_COLUMN (HID_BASE + 1952)
+#define HID_START_OF_PREV_COLUMN (HID_BASE + 1953)
+#define HID_END_OF_PREV_COLUMN (HID_BASE + 1954)
+#define HID_FOOTNOTE_TO_ANCHOR (HID_BASE + 1955)
+#define HID_NEXT_FOOTNOTE (HID_BASE + 1956)
+#define HID_PREV_FOOTNOTE (HID_BASE + 1957)
+#define HID_CNTNT_TO_NEXT_FRAME (HID_BASE + 1958)
+#define HID_FRAME_TO_ANCHOR (HID_BASE + 1959)
+#define HID_TO_HEADER (HID_BASE + 1960)
+#define HID_TO_FOOTER (HID_BASE + 1961)
+#define HID_IDX_MARK_TO_IDX (HID_BASE + 1962)
+
+#define HID_ENVELOP (HID_BASE + 2050)
+#define HID_LABEL (HID_BASE + 2051)
+#define HID_ENVELOP_PRINT (HID_BASE + 2052)
+
+#define HID_NAVIGATION_IMGBTN (HID_BASE + 2054)
+#define HID_ENVELOP_INSERT (HID_BASE + 2055)
+
+#define HID_WEBTOOLS_TOOLBOX (HID_BASE + 2056)
+#define HID_WEBTEXT_TOOLBOX (HID_BASE + 2057)
+#define HID_WEBFRAME_TOOLBOX (HID_BASE + 2058)
+#define HID_TEXT_TOOLBOX (HID_BASE + 2059)
+#define HID_TABLE_TOOLBOX (HID_BASE + 2060)
+#define HID_FRAME_TOOLBOX (HID_BASE + 2061)
+#define HID_GRAFIK_TOOLBOX (HID_BASE + 2062)
+#define HID_OLE_TOOLBOX (HID_BASE + 2063)
+#define HID_DRAW_TOOLBOX (HID_BASE + 2064)
+#define HID_BEZIER_TOOLBOX (HID_BASE + 2066)
+#define HID_DRAW_TEXT_TOOLBOX (HID_BASE + 2067)
+#define HID_NUM_TOOLBOX (HID_BASE + 2068)
+#define HID_TOOLS_TOOLBOX (HID_BASE + 2069)
+#define HID_SRCVIEW_TOOLBOX (HID_BASE + 2070)
+
+#define HID_LABEL_INSERT (HID_BASE + 2071)
+#define HID_CALC_TOOLBOX (HID_BASE + 2072)
+#define HID_PVIEW_TOOLBOX (HID_BASE + 2073)
+
+#define HID_FIELD_INSERT (HID_BASE + 2074)
+#define HID_FIELD_CLOSE (HID_BASE + 2075)
+
+#define HID_COND_COLL_TABLIST (HID_BASE + 2076)
+
+#define HID_DB_SELECTION_TLB (HID_BASE + 2077)
+#define HID_FIELD_DINF_TYPE (HID_BASE + 2078)
+
+#define HID_DRAWFORM_TOOLBOX (HID_BASE + 2079)
+#define HID_SELECT_TEMPLATE (HID_BASE + 2080)
+
+#define HID_AP_INSERT_DB_SEL (HID_BASE + 2081)
+#define HID_WEBGRAPHIC_TOOLBOX (HID_BASE + 2082)
+#define HID_OUTLINE_FORM (HID_BASE + 2083)
+#define HID_NUM_RESET (HID_BASE + 2084)
+
+#define HID_AUTOFORMAT_REJECT (HID_BASE + 2085)
+#define HID_AUTOFORMAT_ACCEPT (HID_BASE + 2086)
+#define HID_AUTOFORMAT_EDIT_CHG (HID_BASE + 2087)
+
+//insert index/entries/Pattern buttons and edits
+#define HID_TOX_ENTRY_BUTTON (HID_BASE + 2088)
+#define HID_TOX_ENTRY_EDIT (HID_BASE + 2089)
+
+#define HID_DLG_NEW_USER_IDX (HID_BASE + 2090)
+#define HID_INSERT_IDX_MRK_OK (HID_BASE + 2091)
+#define HID_INSERT_IDX_MRK_CLOSE (HID_BASE + 2092)
+#define HID_INSERT_AUTH_MRK_OK (HID_BASE + 2093)
+#define HID_INSERT_AUTH_MRK_CLOSE (HID_BASE + 2094)
+#define HID_INSERT_IDX_MRK_DELETE (HID_BASE + 2095)
+#define HID_INSERT_IDX_MRK_NEW (HID_BASE + 2096)
+#define HID_INSERT_IDX_MRK_PREV (HID_BASE + 2097)
+#define HID_INSERT_IDX_MRK_PREV_SAME (HID_BASE + 2098)
+#define HID_INSERT_IDX_MRK_NEXT (HID_BASE + 2099)
+#define HID_INSERT_IDX_MRK_NEXT_SAME (HID_BASE + 2100)
+#define HID_INSERT_IDX_MRK_TYPE (HID_BASE + 2101)
+#define HID_INSERT_IDX_MRK_ENTRY (HID_BASE + 2102)
+#define HID_INSERT_IDX_MRK_PRIM_KEY (HID_BASE + 2103)
+#define HID_INSERT_IDX_MRK_SEC_KEY (HID_BASE + 2104)
+#define HID_INSERT_IDX_MRK_LEVEL (HID_BASE + 2105)
+#define HID_INSERT_IDX_MRK_MAIN_ENTRY (HID_BASE + 2106)
+#define HID_INSERT_IDX_MRK_APPLY_ALL (HID_BASE + 2107)
+#define HID_INSERT_AUTH_MRK_ENTRY (HID_BASE + 2108)
+#define HID_INSERT_AUTH_MRK_CREATE_ENTRY (HID_BASE + 2109)
+#define HID_INSERT_AUTH_MRK_EDIT_ENTRY (HID_BASE + 2110)
+#define HID_TOKEN_WINDOW (HID_BASE + 2111)
+
+#define HID_AUTH_FIELD_IDENTIFIER (HID_BASE + 2112 )
+#define HID_AUTH_FIELD_AUTHORITY_TYPE (HID_BASE + 2113 )
+#define HID_AUTH_FIELD_ADDRESS (HID_BASE + 2114 )
+#define HID_AUTH_FIELD_ANNOTE (HID_BASE + 2115 )
+#define HID_AUTH_FIELD_AUTHOR (HID_BASE + 2116 )
+#define HID_AUTH_FIELD_BOOKTITLE (HID_BASE + 2117 )
+#define HID_AUTH_FIELD_CHAPTER (HID_BASE + 2118 )
+#define HID_AUTH_FIELD_EDITION (HID_BASE + 2119 )
+#define HID_AUTH_FIELD_EDITOR (HID_BASE + 2120 )
+#define HID_AUTH_FIELD_HOWPUBLISHED (HID_BASE + 2121 )
+#define HID_AUTH_FIELD_INSTITUTION (HID_BASE + 2122 )
+#define HID_AUTH_FIELD_JOURNAL (HID_BASE + 2123 )
+#define HID_AUTH_FIELD_MONTH (HID_BASE + 2124 )
+#define HID_AUTH_FIELD_NOTE (HID_BASE + 2125 )
+#define HID_AUTH_FIELD_NUMBER (HID_BASE + 2126 )
+#define HID_AUTH_FIELD_ORGANIZATIONS (HID_BASE + 2127 )
+#define HID_AUTH_FIELD_PAGES (HID_BASE + 2128 )
+#define HID_AUTH_FIELD_PUBLISHER (HID_BASE + 2129 )
+#define HID_AUTH_FIELD_SCHOOL (HID_BASE + 2130 )
+#define HID_AUTH_FIELD_SERIES (HID_BASE + 2131 )
+#define HID_AUTH_FIELD_TITLE (HID_BASE + 2132 )
+#define HID_AUTH_FIELD_REPORT_TYPE (HID_BASE + 2133 )
+#define HID_AUTH_FIELD_VOLUME (HID_BASE + 2134 )
+#define HID_AUTH_FIELD_YEAR (HID_BASE + 2135 )
+#define HID_AUTH_FIELD_URL (HID_BASE + 2136 )
+#define HID_AUTH_FIELD_CUSTOM1 (HID_BASE + 2137 )
+#define HID_AUTH_FIELD_CUSTOM2 (HID_BASE + 2138 )
+#define HID_AUTH_FIELD_CUSTOM3 (HID_BASE + 2139 )
+#define HID_AUTH_FIELD_CUSTOM4 (HID_BASE + 2140 )
+#define HID_AUTH_FIELD_CUSTOM5 (HID_BASE + 2141 )
+#define HID_AUTH_FIELD_ISBN (HID_BASE + 2142 )
+
+#define HID_AUTH_MARK_DLG_FROM_COMP_RB (HID_BASE + 2143 )
+#define HID_AUTH_MARK_DLG_FROM_DOC_RB (HID_BASE + 2144 )
+#define HID_AUTH_MARK_DLG_ID_LISTBOX (HID_BASE + 2145 )
+
+#define HID_INSERT_INDEX_ENTRY_LEVEL_LB (HID_BASE + 2146 )
+#define HID_INSERT_IDX_MRK_SRCH_CASESENSITIVE (HID_BASE + 2147 )
+#define HID_INSERT_IDX_MRK_SRCH_WORDONLY (HID_BASE + 2148 )
+#define HID_DLG_CREATE_AUTOMARK (HID_BASE + 2149 )
+#define HID_BUSINESS_CARD_CONTENT (HID_BASE + 2150 )
diff --git a/sw/inc/hintids.hxx b/sw/inc/hintids.hxx
new file mode 100644
index 000000000000..6d77b7a021a5
--- /dev/null
+++ b/sw/inc/hintids.hxx
@@ -0,0 +1,475 @@
+/*************************************************************************
+ *
+ * $RCSfile: hintids.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _HINTIDS_HXX
+#define _HINTIDS_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h> // fuer __FAR_DATA
+#endif
+#ifndef _SAL_TYPES_H_
+#include <sal/types.h> // for sal_Unicode
+#endif
+
+// fuer SwTxtHints ohne Endindex wird folgendes Zeichen eingefuegt:
+//JP 24.05.00: for the new UniCode Version:
+#define CH_TXTATR_BREAKWORD ((sal_Unicode)0x01)
+#define CH_TXTATR_INWORD ((sal_Unicode)0x02)
+
+
+/*
+ * Hier kommen erst mal die enums fuer die Hints
+ */
+
+#define HINT_BEGIN 1
+
+#define POOLATTR_BEGIN HINT_BEGIN
+#define POOLATTR_END RES_UNKNOWNATR_END
+
+// Bereiche fuer die Id's der einzelnen Format-Attribute
+// die Which-Werte fuer die Charakter-Format Attribute
+enum RES_CHRATR
+{
+RES_CHRATR_BEGIN = HINT_BEGIN,
+ RES_CHRATR_CASEMAP = RES_CHRATR_BEGIN, // 1
+ RES_CHRATR_CHARSETCOLOR, // 2
+ RES_CHRATR_COLOR, // 3
+ RES_CHRATR_CONTOUR, // 4
+ RES_CHRATR_CROSSEDOUT, // 5
+ RES_CHRATR_ESCAPEMENT, // 6
+ RES_CHRATR_FONT, // 7
+ RES_CHRATR_FONTSIZE, // 8
+ RES_CHRATR_KERNING, // 9
+ RES_CHRATR_LANGUAGE, // 10
+ RES_CHRATR_POSTURE, // 11
+ RES_CHRATR_PROPORTIONALFONTSIZE, // 12
+ RES_CHRATR_SHADOWED, // 13
+ RES_CHRATR_UNDERLINE, // 14
+ RES_CHRATR_WEIGHT, // 15
+ RES_CHRATR_WORDLINEMODE, // 16
+ RES_CHRATR_AUTOKERN, // 17
+ RES_CHRATR_BLINK, // 18
+ RES_CHRATR_NOHYPHEN, // 19
+ RES_CHRATR_NOLINEBREAK, // 20
+ RES_CHRATR_BACKGROUND, // 21
+ RES_CHRATR_CJK_FONT, // 22
+ RES_CHRATR_CJK_FONTSIZE, // 23
+ RES_CHRATR_CJK_LANGUAGE, // 24
+ RES_CHRATR_CJK_POSTURE, // 25
+ RES_CHRATR_CJK_WEIGHT, // 26
+ RES_CHRATR_CTL_FONT, // 27
+ RES_CHRATR_CTL_FONTSIZE, // 28
+ RES_CHRATR_CTL_LANGUAGE, // 29
+ RES_CHRATR_CTL_POSTURE, // 30
+ RES_CHRATR_CTL_WEIGHT, // 31
+ RES_CHRATR_WRITING_DIRECTION, // 32
+ RES_CHRATR_DUMMY2, // 33
+ RES_CHRATR_DUMMY3, // 34
+ RES_CHRATR_DUMMY4, // 35
+ RES_CHRATR_DUMMY5, // 36
+ RES_CHRATR_DUMMY1, // 37
+RES_CHRATR_END
+};
+
+// diese Attribute stehen nur im SwpAttr-Array vom TextNode
+enum RES_TXTATR
+{
+RES_TXTATR_BEGIN = RES_CHRATR_END,
+
+// alle TextAttribute mit einem Ende
+// JP 12.07.96: die Ids RES_TXTATR_NOLINEBREAK und RES_TXTATR_NOHYPHEN
+// wanderten in den Bereich der CharAttr. Die Ids selbst muessen
+// aber als Dummies noch erhalten bleiben. Der SwG-/Sw3 Reader
+// merkt sich die Ids immer als Offset zum Start der Gruppe!!!
+// Aus dem RES_TXTATR_NOLINEBREAK ist jetzt RES_TXTATR_INETFMT geworden.
+RES_TXTATR_WITHEND_BEGIN = RES_TXTATR_BEGIN ,
+ RES_TXTATR_INETFMT = RES_TXTATR_WITHEND_BEGIN, // 38
+ RES_TXTATR_DUMMY4, // 39
+ RES_TXTATR_REFMARK, // 40
+ RES_TXTATR_TOXMARK, // 41
+ RES_TXTATR_CHARFMT, // 42
+ RES_TXTATR_TWO_LINES, // 43
+ RES_TXTATR_CJK_RUBY, // 44
+ RES_TXTATR_UNKNOWN_CONTAINER, // 45
+ RES_TXTATR_DUMMY5, // 46
+ RES_TXTATR_DUMMY6, // 47
+RES_TXTATR_WITHEND_END,
+
+// alle TextAttribute ohne ein Ende
+RES_TXTATR_NOEND_BEGIN = RES_TXTATR_WITHEND_END,
+ RES_TXTATR_FIELD = RES_TXTATR_NOEND_BEGIN, // 48
+ RES_TXTATR_FLYCNT, // 49
+ RES_TXTATR_FTN, // 50
+ RES_TXTATR_SOFTHYPH, // 51
+ RES_TXTATR_HARDBLANK, // 52
+ RES_TXTATR_DUMMY1, // 53
+ RES_TXTATR_DUMMY2, // 54
+RES_TXTATR_NOEND_END,
+RES_TXTATR_END = RES_TXTATR_NOEND_END
+};
+
+enum RES_PARATR
+{
+RES_PARATR_BEGIN = RES_TXTATR_END,
+ RES_PARATR_LINESPACING = RES_PARATR_BEGIN, // 55
+ RES_PARATR_ADJUST, // 56
+ RES_PARATR_SPLIT, // 57
+ RES_PARATR_ORPHANS, // 58
+ RES_PARATR_WIDOWS, // 59
+ RES_PARATR_TABSTOP, // 60
+ RES_PARATR_HYPHENZONE, // 61
+ RES_PARATR_DROP, // 62
+ RES_PARATR_REGISTER, // 63
+ RES_PARATR_NUMRULE, // 64
+ RES_PARATR_DUMMY2, // 65
+RES_PARATR_END
+};
+
+
+enum RES_FRMATR
+{
+RES_FRMATR_BEGIN = RES_PARATR_END,
+ RES_FILL_ORDER = RES_FRMATR_BEGIN, // 66
+ RES_FRM_SIZE, // 67
+ RES_PAPER_BIN, // 68
+ RES_LR_SPACE, // 69
+ RES_UL_SPACE, // 70
+ RES_PAGEDESC, // 71
+ RES_BREAK, // 72
+ RES_CNTNT, // 73
+ RES_HEADER, // 74
+ RES_FOOTER, // 75
+ RES_PRINT, // 76
+ RES_OPAQUE, // 77
+ RES_PROTECT, // 78
+ RES_SURROUND, // 79
+ RES_VERT_ORIENT, // 80
+ RES_HORI_ORIENT, // 81
+ RES_ANCHOR, // 82
+ RES_BACKGROUND, // 83
+ RES_BOX, // 84
+ RES_SHADOW, // 85
+ RES_FRMMACRO, // 86
+ RES_COL, // 87
+ RES_KEEP, // 88
+ RES_URL, // 89
+ RES_EDIT_IN_READONLY, // 90
+ RES_LAYOUT_SPLIT, // 91
+ RES_CHAIN, // 92
+ RES_FRMATR_DUMMY2, // 93
+ RES_LINENUMBER , // 94
+ RES_FTN_AT_TXTEND, // 95
+ RES_END_AT_TXTEND, // 96
+ RES_COLUMNBALANCE, // 97
+ RES_FRMATR_DUMMY7, // 98
+ RES_FRMATR_DUMMY8, // 99
+ RES_FRMATR_DUMMY9, // 100
+RES_FRMATR_END
+};
+
+enum RES_GRFATR
+{
+RES_GRFATR_BEGIN = RES_FRMATR_END,
+ RES_GRFATR_MIRRORGRF = RES_GRFATR_BEGIN, // 101
+ RES_GRFATR_CROPGRF, // 102
+
+ RES_GRFATR_ROTATION, // 103
+ RES_GRFATR_LUMINANCE, // 104
+ RES_GRFATR_CONTRAST, // 105
+ RES_GRFATR_CHANNELR, // 106
+ RES_GRFATR_CHANNELG, // 107
+ RES_GRFATR_CHANNELB, // 108
+ RES_GRFATR_GAMMA, // 109
+ RES_GRFATR_INVERT, // 110
+ RES_GRFATR_TRANSPARENCY, // 111
+ RES_GRFATR_DRAWMODE, // 112
+
+ RES_GRFATR_DUMMY1, // 113
+ RES_GRFATR_DUMMY2, // 114
+ RES_GRFATR_DUMMY3, // 115
+ RES_GRFATR_DUMMY4, // 116
+ RES_GRFATR_DUMMY5, // 117
+RES_GRFATR_END
+};
+
+enum RES_BOXATR
+{
+RES_BOXATR_BEGIN = RES_GRFATR_END,
+ RES_BOXATR_FORMAT = RES_BOXATR_BEGIN, // 118
+ RES_BOXATR_FORMULA, // 119
+ RES_BOXATR_VALUE, // 120
+RES_BOXATR_END
+};
+
+enum RES_UNKNOWNATR
+{
+RES_UNKNOWNATR_BEGIN = RES_BOXATR_END,
+ RES_UNKNOWNATR_CONTAINER = RES_UNKNOWNATR_BEGIN, // 121
+RES_UNKNOWNATR_END
+};
+
+
+
+// ID-s fuer die Formate
+enum RES_FMT
+{
+RES_FMT_BEGIN = RES_UNKNOWNATR_END,
+ RES_CHRFMT = RES_FMT_BEGIN,
+ RES_FRMFMT,
+ RES_FLYFRMFMT,
+ RES_TXTFMTCOLL,
+ RES_GRFFMTCOLL,
+ RES_DRAWFRMFMT,
+ RES_CONDTXTFMTCOLL,
+RES_FMT_END
+};
+
+// die ID's fuer Messages in den Formaten
+enum RES_MSG
+{
+RES_MSG_BEGIN = RES_FMT_END,
+ RES_OBJECTDYING = RES_MSG_BEGIN,
+ RES_FMT_CHG,
+ RES_ATTRSET_CHG,
+ RES_FRM_SIZECHG,
+ RES_TXTATR_FLDCHG,
+ RES_TXTATR_EMPTYCHG,
+ RES_INS_CHR,
+ RES_INS_TXT,
+ RES_DEL_CHR,
+ RES_DEL_TXT,
+ RES_UPDATE_ATTR,
+ RES_PAGEDESC_FTNINFO,
+ RES_REFMARKFLD_UPDATE,
+ RES_DOCPOS_UPDATE,
+ RES_TABLEFML_UPDATE,
+ RES_UPDATEDDETBL,
+ RES_TBLHEADLINECHG,
+ RES_AUTOFMT_DOCNODE,
+ RES_REPAINT,
+ RES_DOC_DTOR,
+ RES_SECTION_HIDDEN,
+ RES_SECTION_NOT_HIDDEN,
+ RES_GRAPHIC_ARRIVED,
+ RES_GRAPHIC_PIECE_ARRIVED,
+ RES_HIDDENPARA_PRINT,
+ RES_CONDCOLL_CONDCHG,
+ RES_VIRTPAGENUM_INFO,
+ RES_GETNUMNODES,
+ RES_GETLOWERNUMLEVEL,
+ RES_RESET_FMTWRITTEN,
+ RES_REMOVE_UNO_OBJECT,
+ RES_GRF_REREAD_AND_INCACHE,
+ RES_SECTION_RESETHIDDENFLAG,
+ RES_FINDNEARESTNODE,
+ RES_CONTENT_VISIBLE,
+ RES_FOOTNOTE_DELETED,
+ RES_REFMARK_DELETED,
+ RES_MSG_DUMMY7,
+ RES_MSG_DUMMY8,
+ RES_MSG_DUMMY9,
+RES_MSG_END
+};
+
+
+// eine ID fuer den RTF-Reader. Die Stylesheets werden wie
+// Attribute behandelt, d.H. es gibt ein StyleSheet Attribut. Um
+// nicht mit anderen Which()-Werten zu kollidieren, ist der Wert
+// hier mit aufgefuehrt. (Auch das Hilfesystem definiert neue
+// Attribute !!)
+enum RES_FLTRATTR
+{
+RES_FLTRATTR_BEGIN = RES_MSG_END,
+ RES_FLTR_STYLESHEET = RES_FLTRATTR_BEGIN,
+ RES_FLTR_BOOKMARK,
+ RES_FLTR_ANCHOR,
+ RES_FLTR_BORDER,
+ RES_FLTR_NUMRULE,
+ RES_FLTR_NUMRULE_NUM,
+ RES_FLTR_SDR_ANCHOR,
+ RES_FLTR_TOX,
+ RES_FLTR_SECTION,
+ RES_FLTR_REDLINE,
+RES_FLTRATTR_END
+};
+
+#define RES_TBX_DUMMY RES_FLTRATTR_END + 1
+
+#define HINT_END RES_TBX_DUMMY
+
+// Fehler-Erkennung !!
+#define INVALID_HINT HINT_END
+#define RES_WHICHHINT_END HINT_END
+
+
+/*
+ * hole aus der statischen Default-Attribut Tabelle ueber den Which-Wert
+ * das entsprechende default Attribut.
+ * Ist keines vorhanden, returnt ein 0-Pointer !!!
+ *
+ * Diese Funktion ist im Init.CXX implementiert. Damit die Formate darauf
+ * zugreifen koennen, ist sie hier als extern deklariert.
+ * Im PRODUCT ist das Teil inline.
+ */
+class SfxPoolItem;
+struct SfxItemInfo;
+typedef SfxPoolItem* SwDfltAttrTab[ POOLATTR_END - POOLATTR_BEGIN ];
+
+extern SwDfltAttrTab __FAR_DATA aAttrTab;
+extern SfxItemInfo __FAR_DATA aSlotTab[];
+
+
+#ifndef PRODUCT
+const SfxPoolItem* GetDfltAttr( USHORT nWhich );
+#else
+inline const SfxPoolItem* GetDfltAttr( USHORT nWhich )
+{
+ return aAttrTab[ nWhich - POOLATTR_BEGIN ];
+}
+#endif
+
+// return for the given TextAttribut without an end the correct character.
+// This function returns
+// CH_TXTATR_BREAKWORD for Textattribut which breaks a word (default)
+// CH_TXTATR_INWORD for Textattribut which dont breaks a word
+class SwTxtAttr;
+sal_Unicode GetCharOfTxtAttr( const SwTxtAttr& rAttr );
+
+// alle Sets stehen im init.cxx
+
+// AttrSet-Range fuer die 3 Break-Attribute
+extern USHORT __FAR_DATA aBreakSetRange[];
+// AttrSet-Range fuer die TxtFmtColl
+extern USHORT __FAR_DATA aTxtFmtCollSetRange[];
+// AttrSet-Range fuer die GrfFmtColl
+extern USHORT __FAR_DATA aGrfFmtCollSetRange[];
+// AttrSet-Range fuer die TextNode
+extern USHORT __FAR_DATA aTxtNodeSetRange[];
+// AttrSet-Range fuer die NoTxtNode
+extern USHORT __FAR_DATA aNoTxtNodeSetRange[];
+// AttrSet-Range fuer die SwTable
+extern USHORT __FAR_DATA aTableSetRange[];
+// AttrSet-Range fuer die SwTableLine
+extern USHORT __FAR_DATA aTableLineSetRange[];
+// AttrSet-Range fuer die SwTableBox
+extern USHORT __FAR_DATA aTableBoxSetRange[];
+// AttrSet-Range fuer die SwFrmFmt
+extern USHORT __FAR_DATA aFrmFmtSetRange[];
+// AttrSet-Range fuer die SwCharFmt
+extern USHORT __FAR_DATA aCharFmtSetRange[];
+// AttrSet-Range fuer die SwPageDescFmt
+extern USHORT __FAR_DATA aPgFrmFmtSetRange[];
+
+// check if ID is InRange of AttrSet-Ids
+BOOL IsInRange( const USHORT* pRange, const USHORT nId );
+
+
+
+#define ITEMID_FONT RES_CHRATR_FONT
+#define ITEMID_POSTURE RES_CHRATR_POSTURE
+#define ITEMID_WEIGHT RES_CHRATR_WEIGHT
+#define ITEMID_SHADOWED RES_CHRATR_SHADOWED
+#define ITEMID_AUTOKERN RES_CHRATR_AUTOKERN
+#define ITEMID_CONTOUR RES_CHRATR_CONTOUR
+#define ITEMID_CROSSEDOUT RES_CHRATR_CROSSEDOUT
+#define ITEMID_UNDERLINE RES_CHRATR_UNDERLINE
+#define ITEMID_FONTHEIGHT RES_CHRATR_FONTSIZE
+#define ITEMID_PROPSIZE RES_CHRATR_PROPORTIONALFONTSIZE
+#define ITEMID_COLOR RES_CHRATR_COLOR
+#define ITEMID_CHARSETCOLOR RES_CHRATR_CHARSETCOLOR
+#define ITEMID_KERNING RES_CHRATR_KERNING
+#define ITEMID_CASEMAP RES_CHRATR_CASEMAP
+#define ITEMID_LANGUAGE RES_CHRATR_LANGUAGE
+#define ITEMID_ESCAPEMENT RES_CHRATR_ESCAPEMENT
+#define ITEMID_BLINK RES_CHRATR_BLINK
+#define ITEMID_NOHYPHENHERE RES_CHRATR_NOHYPHEN
+#define ITEMID_NOLINEBREAK RES_CHRATR_NOLINEBREAK
+#define ITEMID_WORDLINEMODE RES_CHRATR_WORDLINEMODE
+
+//Defines fuer die ehemaligen FrmAttribute, die jetzt in frmitems.hxx
+//von svx zu finden sind.
+#define ITEMID_PAPERBIN RES_PAPER_BIN
+#define ITEMID_LRSPACE RES_LR_SPACE
+#define ITEMID_ULSPACE RES_UL_SPACE
+#define ITEMID_PRINT RES_PRINT
+#define ITEMID_OPAQUE RES_OPAQUE
+#define ITEMID_PROTECT RES_PROTECT
+#define ITEMID_BRUSH RES_BACKGROUND
+#define ITEMID_BOX RES_BOX
+#define ITEMID_SHADOW RES_SHADOW
+#define ITEMID_MACRO RES_FRMMACRO
+#define ITEMID_FMTKEEP RES_KEEP
+#define ITEMID_FMTBREAK RES_BREAK
+
+//Defines fuer die ehemaligen ParAttribute, die jetzt in paraitem.hxx
+//bzw. tabsitem.hxx von svx zu finden sind.
+
+#define ITEMID_LINESPACING RES_PARATR_LINESPACING
+#define ITEMID_ADJUST RES_PARATR_ADJUST
+#define ITEMID_FMTSPLIT RES_PARATR_SPLIT
+#define ITEMID_WIDOWS RES_PARATR_WIDOWS
+#define ITEMID_ORPHANS RES_PARATR_ORPHANS
+#define ITEMID_TABSTOP RES_PARATR_TABSTOP
+#define ITEMID_HYPHENZONE RES_PARATR_HYPHENZONE
+
+//Defines fuer die ehemaligen GrfAttribute, die jetzt im svx zu finden sind.
+#define ITEMID_GRF_CROP RES_GRFATR_CROPGRF
+
+#endif
diff --git a/sw/inc/hints.hxx b/sw/inc/hints.hxx
new file mode 100644
index 000000000000..458017fa9675
--- /dev/null
+++ b/sw/inc/hints.hxx
@@ -0,0 +1,328 @@
+/*************************************************************************
+ *
+ * $RCSfile: hints.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _HINTS_HXX
+#define _HINTS_HXX
+
+#ifndef _TABLE_HXX //autogen
+#include <tools/table.hxx>
+#endif
+#ifndef _SWATRSET_HXX
+#include <swatrset.hxx>
+#endif
+
+class SwFmt;
+class OutputDevice;
+class SwTable;
+class SwNode;
+class SwNodes;
+class SwCntntNode;
+class SwPageFrm;
+class SwFrm;
+class SwTxtNode;
+class SwHistory;
+
+// Basis-Klasse fuer alle Message-Hints:
+// "Overhead" vom SfxPoolItem wird hier behandelt
+class SwMsgPoolItem : public SfxPoolItem
+{
+public:
+ SwMsgPoolItem( USHORT nWhich );
+
+ // "Overhead" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+};
+
+
+// ---------------------------------------
+// SwPtrMsgPoolItem (altes SwObjectDying!)
+// ---------------------------------------
+
+class SwPtrMsgPoolItem : public SwMsgPoolItem
+{
+public:
+ void * pObject;
+
+ SwPtrMsgPoolItem( USHORT nId, void * pObj )
+ : SwMsgPoolItem( nId ), pObject( pObj )
+ {}
+};
+
+
+
+/*
+ * SwFmtChg wird verschickt, wenn ein Format gegen ein anderes
+ * Format ausgewechselt worden ist. Es werden immer 2. Hints verschickt,
+ * das alte und neue Format.
+ */
+class SwFmtChg: public SwMsgPoolItem
+{
+public:
+ SwFmt *pChangedFmt;
+ SwFmtChg( SwFmt *pFmt );
+};
+
+
+class SwInsChr: public SwMsgPoolItem
+{
+public:
+ xub_StrLen nPos;
+
+ SwInsChr( USHORT nP );
+};
+
+class SwInsTxt: public SwMsgPoolItem
+{
+public:
+ xub_StrLen nPos;
+ xub_StrLen nLen;
+
+ SwInsTxt( xub_StrLen nP, xub_StrLen nL );
+};
+
+class SwDelChr: public SwMsgPoolItem
+{
+public:
+ xub_StrLen nPos;
+
+ SwDelChr( xub_StrLen nP );
+};
+
+class SwDelTxt: public SwMsgPoolItem
+{
+public:
+ xub_StrLen nStart;
+ xub_StrLen nLen;
+
+ SwDelTxt( xub_StrLen nS, xub_StrLen nL );
+};
+
+class SwUpdateAttr: public SwMsgPoolItem
+{
+public:
+ xub_StrLen nStart;
+ xub_StrLen nEnd;
+ USHORT nWhichAttr;
+ SwUpdateAttr( xub_StrLen nS, xub_StrLen nE, USHORT nW );
+};
+
+
+// SwRefMarkFldUpdate wird verschickt, wenn sich die ReferenzMarkierungen
+// Updaten sollen. Um Seiten-/KapitelNummer feststellen zu koennen, muss
+// der akt. Frame befragt werden. Dafuer wird das akt. OutputDevice benoetigt.
+class SwRefMarkFldUpdate : public SwMsgPoolItem
+{
+public:
+ const OutputDevice* pOut; // Pointer auf das aktuelle Output-Device
+ SwRefMarkFldUpdate( const OutputDevice* );
+};
+
+// SwDocPosUpdate wird verschickt, um zu signalisieren, dass nur die
+// Frames ab oder bis zu einer bestimmten dokument-globalen Position
+// geupdated werden brauchen. Zur Zeit wird dies nur beim Updaten
+// von Seitennummernfeldern benoetigt.
+
+class SwDocPosUpdate : public SwMsgPoolItem
+{
+public:
+ const long nDocPos;
+ SwDocPosUpdate( const long nDocPos );
+};
+
+// SwTableFmlUpdate wird verschickt, wenn sich die Tabelle neu berechnen soll
+// JP 16.02.99: oder wenn die Tabelle selbst gemergt oder gesplittet wird
+enum TableFmlUpdtFlags { TBL_CALC = 0,
+ TBL_BOXNAME,
+ TBL_BOXPTR,
+ TBL_RELBOXNAME,
+ TBL_MERGETBL,
+ TBL_SPLITTBL
+ };
+class SwTableFmlUpdate : public SwMsgPoolItem
+{
+public:
+ const SwTable* pTbl; // Pointer auf die zu aktuelle Tabelle
+ union {
+ const SwTable* pDelTbl; // Merge: Ptr auf die zu loeschende Tabelle
+ const String* pNewTblNm; // Split: der Name der neuen Tabelle
+ } DATA;
+ SwHistory* pHistory;
+ USHORT nSplitLine; // Split: ab dieser BaseLine wird gespl.
+ TableFmlUpdtFlags eFlags;
+ BOOL bModified : 1;
+ BOOL bBehindSplitLine : 1;
+
+ SwTableFmlUpdate( const SwTable* );
+};
+
+
+class SwAutoFmtGetDocNode: public SwMsgPoolItem
+{
+public:
+ const SwCntntNode* pCntntNode;
+ const SwNodes* pNodes;
+
+ SwAutoFmtGetDocNode( const SwNodes* pNds );
+};
+
+/*
+ * SwAttrSetChg wird verschicht, wenn sich in dem SwAttrSet rTheChgdSet
+ * etwas veraendert hat. Es werden immer 2. Hints
+ * verschickt, die alten und neuen Items in dem rTheChgdSet.
+ */
+class SwAttrSetChg: public SwMsgPoolItem
+{
+ BOOL bDelSet;
+ SwAttrSet* pChgSet; // was sich veraendert hat
+ const SwAttrSet* pTheChgdSet; // wird nur zum Vergleichen gebraucht !!
+public:
+ SwAttrSetChg( const SwAttrSet& rTheSet, SwAttrSet& rSet );
+ SwAttrSetChg( const SwAttrSetChg& );
+ ~SwAttrSetChg();
+
+ // was sich veraendert hat
+ const SwAttrSet* GetChgSet() const { return pChgSet; }
+ SwAttrSet* GetChgSet() { return pChgSet; }
+
+ // wo es sich geaendert hat
+ const SwAttrSet* GetTheChgdSet() const { return pTheChgdSet; }
+
+ SfxItemState GetItemState( USHORT nWhich, BOOL bSrchInParent = TRUE,
+ const SfxPoolItem **ppItem = 0 ) const
+ { return pChgSet->GetItemState( nWhich, bSrchInParent, ppItem ); }
+
+ USHORT Count() const { return pChgSet->Count(); }
+ void ClearItem( USHORT nWhich = 0 )
+#ifdef PRODUCT
+ { pChgSet->ClearItem( nWhich ); }
+#else
+ ;
+#endif
+};
+
+class SwCondCollCondChg: public SwMsgPoolItem
+{
+public:
+ SwFmt *pChangedFmt;
+ SwCondCollCondChg( SwFmt *pFmt );
+};
+
+class SwVirtPageNumInfo: public SwMsgPoolItem
+{
+ const SwPageFrm *pPage;
+ const SwPageFrm *pOrigPage;
+ const SwFrm *pFrm; //An einem Absatz/Tabelle koennen mehrere
+ //Attribute sitzen. Der Frame muss dann
+ //muss dann letztlich bei bestimmen
+ //welches Attribut gilt und um welche physikalische
+ //Seite es sich handelt.
+public:
+ SwVirtPageNumInfo( const SwPageFrm *pPg );
+
+ const SwPageFrm *GetPage() { return pPage; }
+ const SwPageFrm *GetOrigPage() { return pOrigPage;}
+ const SwFrm *GetFrm() { return pFrm; }
+ void SetInfo( const SwPageFrm *pPg,
+ const SwFrm *pF ) { pFrm = pF, pPage = pPg; }
+};
+
+
+DECLARE_TABLE( SwTxtNodeTable, SwTxtNode* )
+
+class SwNumRuleInfo : public SwMsgPoolItem
+{
+ SwTxtNodeTable aList;
+ const String& rName;
+public:
+ SwNumRuleInfo( const String& rRuleName );
+
+ const String& GetName() const { return rName; }
+ void AddNode( SwTxtNode& rNd );
+
+ // erzeuge die Liste aller Nodes der NumRule in dem angegebenem Doc
+ // Der Code steht im docnum.cxx
+ void MakeList( SwDoc& rDoc );
+ SwTxtNodeTable& GetList() const { return (SwTxtNodeTable&)aList; }
+};
+
+class SwNRuleLowerLevel : public SwMsgPoolItem
+{
+ const String& rName;
+ BYTE nLvl;
+public:
+ SwNRuleLowerLevel( const String& rRuleName, BYTE nLevel );
+
+ const String& GetName() const { return rName; }
+ BYTE GetLevel() const { return nLvl; }
+};
+
+class SwFindNearestNode : public SwMsgPoolItem
+{
+ const SwNode *pNd, *pFnd;
+public:
+ SwFindNearestNode( const SwNode& rNd );
+ void CheckNode( const SwNode& rNd );
+
+ const SwNode* GetFoundNode() const { return pFnd; }
+};
+
+
+#endif
diff --git a/sw/inc/htmltbl.hxx b/sw/inc/htmltbl.hxx
new file mode 100644
index 000000000000..656e11cf2f4c
--- /dev/null
+++ b/sw/inc/htmltbl.hxx
@@ -0,0 +1,530 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmltbl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _HTMLTBL_HXX
+#define _HTMLTBL_HXX
+
+
+#ifndef _TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+#ifndef _SVX_SVXENUM_HXX //autogen
+#include <svx/svxenum.hxx>
+#endif
+
+#include "swtypes.hxx"
+#include "node.hxx" // Fuer SwStartNode
+
+
+class SwTableBox;
+class SwTable;
+class SwHTMLTableLayout;
+class SwDoc;
+class SwFrmFmt;
+
+#define HTMLTABLE_RESIZE_NOW (ULONG_MAX)
+
+class SwHTMLTableLayoutCnts
+{
+ SwHTMLTableLayoutCnts *pNext; // der naechste Inhalt
+
+ // von den beiden naechsten Pointern darf nur einer gesetzt sein!
+ SwTableBox *pBox; // ein Box
+ SwHTMLTableLayout *pTable; // eine "Tabelle in der Tabelle"
+
+ // Beim ersten Durchlauf gibt es noch keine Boxen. Es wird dann
+ // pStartNode anstelle von pBox verwendet.
+ const SwStartNode *pStartNode;
+
+ // Die folgenden Zahler geben an, wie oft ein Pass bereits fuer diesen
+ // Inhalt durchgefuehrt wurde. Dazu werden sie mit einer Soll-Vorgabe
+ // verglichen. Wird 255 erreicht laufen sie bei 0 weiter. So wird
+ // eine Reinitialisierung bei jedem Resize vermieden.
+ BYTE nPass1Done; // Wieoft wurde Pass 1 aufgerufen?
+ BYTE nWidthSet; // Wieoft wurde die Breite gesetzt?
+
+ BOOL bNoBreakTag; // <NOBR>-Tag ueber gesamten Inhalt
+
+public:
+
+ SwHTMLTableLayoutCnts( const SwStartNode* pSttNd, SwHTMLTableLayout* pTab,
+ BOOL bNoBreakTag, SwHTMLTableLayoutCnts* pNxt );
+
+ ~SwHTMLTableLayoutCnts();
+
+ void SetTableBox( SwTableBox *pBx ) { pBox = pBx; }
+ SwTableBox *GetTableBox() const { return pBox; }
+
+ SwHTMLTableLayout *GetTable() const { return pTable; }
+
+ const SwStartNode *GetStartNode() const;
+
+ // Ermitteln des naechsten Knotens
+ SwHTMLTableLayoutCnts *GetNext() const { return pNext; }
+
+ void SetWidthSet( BYTE nRef ) { nWidthSet = nRef; }
+ BOOL IsWidthSet( BYTE nRef ) const { return nRef==nWidthSet; }
+
+ void SetPass1Done( BYTE nRef ) { nPass1Done = nRef; }
+ BOOL IsPass1Done( BYTE nRef ) const { return nRef==nPass1Done; }
+
+ BOOL HasNoBreakTag() const { return bNoBreakTag; }
+};
+
+/* */
+
+class SwHTMLTableLayoutCell
+{
+ SwHTMLTableLayoutCnts *pContents; // der Inhalt der Zelle
+
+ USHORT nRowSpan; // ROWSPAN der Zelle
+ USHORT nColSpan; // COLSPAN der Zelle
+ USHORT nWidthOption;// angegebene Breite der Zelle in Twip oder %
+
+ BOOL bPrcWidthOption : 1;// nWidth ist %-Angabe
+ BOOL bNoWrapOption : 1; // NOWRAP-Option
+
+public:
+
+ SwHTMLTableLayoutCell( SwHTMLTableLayoutCnts *pCnts,
+ USHORT nRSpan, USHORT nCSpan,
+ USHORT nWidthOpt, BOOL bPrcWdthOpt,
+ BOOL nNWrapOpt );
+
+ ~SwHTMLTableLayoutCell();
+
+ // Setzen/Ermitteln des Inhalts einer Zelle
+ void SetContents( SwHTMLTableLayoutCnts *pCnts ) { pContents = pCnts; }
+ SwHTMLTableLayoutCnts *GetContents() const { return pContents; }
+
+ inline void SetProtected();
+
+ // ROWSPAN/COLSPAN der Zelle Setzen/Ermitteln
+ void SetRowSpan( USHORT nRSpan ) { nRowSpan = nRSpan; }
+ USHORT GetRowSpan() const { return nRowSpan; }
+ USHORT GetColSpan() const { return nColSpan; }
+
+ USHORT GetWidthOption() const { return nWidthOption; }
+ BOOL IsPrcWidthOption() const { return bPrcWidthOption; }
+
+ BOOL HasNoWrapOption() const { return bNoWrapOption; }
+};
+
+/* */
+
+class SwHTMLTableLayoutColumn
+{
+ // Zwischenwerte von AutoLayoutPass1
+ ULONG nMinNoAlign, nMaxNoAlign, nAbsMinNoAlign;
+
+ // Ergebnisse von AutoLayoutPass1
+ ULONG nMin, nMax;
+
+ // Ergibnisse von Pass 2
+ USHORT nAbsColWidth; // in Twips
+ USHORT nRelColWidth; // in Twips bzw. relativ zu USHRT_MAX
+
+ USHORT nWidthOption; // Optionen von <COL> oder <TD>/<TH>
+
+ BOOL bRelWidthOption : 1;
+ BOOL bLeftBorder : 1;
+
+public:
+
+ SwHTMLTableLayoutColumn( USHORT nColWidthOpt, BOOL bRelColWidthOpt,
+ BOOL bLBorder );
+
+ ~SwHTMLTableLayoutColumn() {}
+
+ inline void MergeCellWidthOption( USHORT nWidth, BOOL bPrc );
+ inline void SetWidthOption( USHORT nWidth, BOOL bRelWidth, BOOL bTest );
+
+ USHORT GetWidthOption() const { return nWidthOption; }
+ BOOL IsRelWidthOption() const { return bRelWidthOption; }
+
+ inline void MergeMinMaxNoAlign( ULONG nMin, ULONG nMax, ULONG nAbsMin );
+ ULONG GetMinNoAlign() const { return nMinNoAlign; }
+ ULONG GetMaxNoAlign() const { return nMaxNoAlign; }
+ ULONG GetAbsMinNoAlign() const { return nAbsMinNoAlign; }
+ inline void ClearPass1Info( BOOL bWidthOpt );
+
+ inline void SetMinMax( ULONG nMin, ULONG nMax );
+ void SetMax( ULONG nVal ) { nMax = nVal; }
+ void AddToMin( ULONG nVal ) { nMin += nVal; }
+ void AddToMax( ULONG nVal ) { nMax += nVal; }
+ ULONG GetMin() const { return nMin; }
+ ULONG GetMax() const { return nMax; }
+
+ void SetAbsColWidth( USHORT nWidth ) { nAbsColWidth = nWidth; }
+ USHORT GetAbsColWidth() const { return nAbsColWidth; }
+
+ void SetRelColWidth( USHORT nWidth ) { nRelColWidth = nWidth; }
+ USHORT GetRelColWidth() const { return nRelColWidth; }
+
+ BOOL HasLeftBorder() const { return bLeftBorder; }
+};
+
+/* */
+
+class SwHTMLTableLayout
+{
+ Timer aResizeTimer; // Timer fuer DelayedResize
+
+ SwHTMLTableLayoutColumn **aColumns;
+ SwHTMLTableLayoutCell **aCells;
+
+ const SwTable *pSwTable; // die SwTable (nur Top-Table)
+ SwTableBox *pLeftFillerBox; // linke Filler-Zelle (nur Tab in Tab)
+ SwTableBox *pRightFillerBox; // rechte Filler-Zelle (nur Tab-in Tab)
+
+ ULONG nMin; // minimale Breite der Tabelle (Twips)
+ ULONG nMax; // maximale Breite der Tabelle (Twips)
+
+ USHORT nRows; // Anzahl Zeilen
+ USHORT nCols; // Anzahl Spalten
+
+ USHORT nLeftMargin; // Abstand zum linken Rand (aus Absatz)
+ USHORT nRightMargin; // Abstand zum rechten Rand (aus Absatz)
+
+ USHORT nInhAbsLeftSpace; // von umgebender Zelle geerbter Abstand,
+ USHORT nInhAbsRightSpace; // der Zellen zugeschlagen wurde
+
+ USHORT nRelLeftFill; // relative Breiten der Zellen zur
+ USHORT nRelRightFill; // Ausrichtung von Tabellen in Tabellen
+
+ USHORT nRelTabWidth; // Die relative Breite der Tabelle
+
+ USHORT nWidthOption; // die Breite der Tabelle (in Twip oder %)
+ USHORT nCellPadding; // Abstand zum Inhalt (in Twip)
+ USHORT nCellSpacing; // Absatnd zwischen Zellen (in Twip)
+ USHORT nBorder; // Dicke der ausseren Umrandung bzw.
+ // Platz, den Netscape hierfuer einrechnet.
+
+ USHORT nLeftBorderWidth;
+ USHORT nRightBorderWidth;
+ USHORT nInhLeftBorderWidth;
+ USHORT nInhRightBorderWidth;
+ USHORT nBorderWidth;
+
+ USHORT nDelayedResizeAbsAvail; // Param fuer's verzoegerte Resize
+ USHORT nLastResizeAbsAvail;
+
+ BYTE nPass1Done; // Vorgabe-Werte fuer die einzelen
+ BYTE nWidthSet; // Schleifen-Durchlauefe
+
+ SvxAdjust eTableAdjust; // Die Ausrichtung der Tabelle
+
+ BOOL bColsOption : 1; // Tabelle besitzt eine COLS-Option
+ BOOL bColTags : 1; // Tabelle besitzt COL/COLGRP-Tags
+ BOOL bPrcWidthOption : 1; // Breite ist eine %-Angabe
+ BOOL bUseRelWidth : 1; // SwTable bekommt relative Breite
+
+ BOOL bMustResize : 1; // Tabelle muss in der Breite ang. werden
+ BOOL bExportable : 1; // Layout kann zum Export genutzt werden
+ BOOL bBordersChanged : 1; // Umrandung wurde geaendert
+ BOOL bMayBeInFlyFrame : 1; // Die Tabelle koennte im Rahmen sein
+
+ BOOL bDelayedResizeRecalc : 1; // Param fuer's verzoegerte Resize
+ BOOL bMustNotResize : 1; // Die Tabelle darf nicht reseized werden
+ BOOL bMustNotRecalc : 1; // Tabelle darf nicht an Inhalt angepasst
+ // werden
+
+// USHORT GetLeftBorderWidth( USHORT nCol ) const;
+// USHORT GetRightBorderWidth( USHORT nCol, USHORT nColSpan ) const;
+
+ void AddBorderWidth( ULONG &rMin, ULONG &rMax, ULONG& rAbsMin,
+ USHORT nCol, USHORT nColSpan,
+ BOOL bSwBorders=TRUE ) const;
+ void SetBoxWidth( SwTableBox *pBox, USHORT nCol, USHORT nColSpan ) const;
+
+ const SwStartNode *GetAnyBoxStartNode() const;
+ SwFrmFmt *FindFlyFrmFmt() const;
+ const SwDoc *GetDoc() const { return GetAnyBoxStartNode()->GetDoc(); }
+
+ void ClearPass1Info() { nMin = nMax = 0; }
+
+ void _Resize( USHORT nAbsAvail, BOOL bRecalc=FALSE );
+
+ DECL_STATIC_LINK( SwHTMLTableLayout, DelayedResize_Impl, void* );
+
+public:
+
+ SwHTMLTableLayout( const SwTable *pSwTbl,
+ USHORT nRows, USHORT nCols, BOOL bColsOpt, BOOL ColTgs,
+ USHORT nWidth, BOOL bPrcWidth, USHORT nBorderOpt,
+ USHORT nCellPad, USHORT nCellSp, SvxAdjust eAdjust,
+ USHORT nLMargin, USHORT nRMargin, USHORT nBWidth,
+ USHORT nLeftBWidth, USHORT nRightBWidth,
+ USHORT nInhLeftBWidth, USHORT nInhRightBWidth );
+
+ ~SwHTMLTableLayout();
+
+ USHORT GetLeftCellSpace( USHORT nCol, USHORT nColSpan,
+ BOOL bSwBorders=TRUE ) const;
+ USHORT GetRightCellSpace( USHORT nCol, USHORT nColSpan,
+ BOOL bSwBorders=TRUE ) const;
+ inline USHORT GetInhCellSpace( USHORT nCol, USHORT nColSpan ) const;
+
+ inline void SetInhBorderWidths( USHORT nLeft, USHORT nRight );
+
+
+ void GetAvail( USHORT nCol, USHORT nColSpan, USHORT& rAbsAvail,
+ USHORT& rRelAvail ) const;
+
+ void AutoLayoutPass1();
+ void AutoLayoutPass2( USHORT nAbsAvail, USHORT nRelAvail,
+ USHORT nAbsLeftSpace, USHORT nAbsRightSpace,
+ USHORT nParentInhSpace );
+ void SetWidths( BOOL bCallPass2=FALSE, USHORT nAbsAvail=0,
+ USHORT nRelAvail=0, USHORT nAbsLeftSpace=0,
+ USHORT nAbsRightSpace=0,
+ USHORT nParentInhSpace=0 );
+
+ inline SwHTMLTableLayoutColumn *GetColumn( USHORT nCol ) const;
+ inline void SetColumn( SwHTMLTableLayoutColumn *pCol, USHORT nCol );
+
+ inline SwHTMLTableLayoutCell *GetCell( USHORT nRow, USHORT nCol ) const;
+ inline void SetCell( SwHTMLTableLayoutCell *pCell, USHORT nRow, USHORT nCol );
+
+ void SetLeftFillerBox( SwTableBox *pBox ) { pLeftFillerBox = pBox; }
+ void SetRightFillerBox( SwTableBox *pBox ) { pRightFillerBox = pBox; }
+
+ ULONG GetMin() const { return nMin; }
+ ULONG GetMax() const { return nMax; }
+ USHORT GetRelLeftFill() const { return nRelLeftFill; }
+ USHORT GetRelRightFill() const { return nRelRightFill; }
+
+ inline long GetBrowseWidthMin() const;
+
+ BOOL HasColsOption() const { return bColsOption; }
+ BOOL HasColTags() const { return bColTags; }
+
+ BOOL IsTopTable() const { return pSwTable != 0; }
+
+ void SetMustResize( BOOL bSet ) { bMustResize = bSet; }
+ void SetMustNotResize( BOOL bSet ) { bMustNotResize = bSet; }
+ void SetMustNotRecalc( BOOL bSet ) { bMustNotRecalc = bSet; }
+
+ // Neueberechnung der Tabellenbreiten fuer die uebergebene verfuegbare
+ // Breite.
+ // - Wenn bRecalc gesetzt ist, werden auch der Inhalt der Boxen
+ // zur Berechnung herangezogen.
+ // neu berechnet.
+ // - Wenn bForce gesetzt ist, wird die Tabelle auch neu berechnet, wenn
+ // dies mit SetMustNotResize unterdrueckt werden soll.
+ // - Wenn nDelay>0 wird die Berechnung entsprechend verzoegert.
+ // Innerhalb der Verzeoegerung auftretende Resize-Aufrufe werden
+ // ignoriert, die Verzeogerung wird aber ggf. uebernommen.
+ // - Wenn nDelay==HTMLTABLE_RESIZE_NOW ist, wird sofort Resized und
+ // eventuell noch asstehende Resize-Aufrufe werden nicht mehr
+ // ausgefuehrt.
+ // - Der Rueckgabewert gibt an, ob sich die Tabelle geaendert hat.
+ BOOL Resize( USHORT nAbsAvail, BOOL bRecalc=FALSE, BOOL bForce=FALSE,
+ ULONG nDelay=0 );
+
+ void BordersChanged( USHORT nAbsAvail, BOOL bRecalc=FALSE );
+
+ // Ermitteln der verfuegbaren Breite. Das geht nur, wenn ein Layout
+ // oder eine ViewShell vorhanden ist. Sonst wird 0 zurueckgegeben.
+ // (Wird vom HTML-Filter benoetigt, da der nicht an das Layout kommt.)
+ static USHORT GetBrowseWidth( const SwDoc& rDoc );
+ static USHORT GetBrowseWidthByVisArea( const SwDoc& rDoc );
+
+ // Ermitteln der verfuegbaren Breite uber den Tabellen-Frame
+ USHORT GetBrowseWidthByTabFrm( const SwTabFrm& rTabFrm ) const;
+
+ // Ermitteln der verfuegbaren Breite uber den Tabellen-Frame oder
+ // das statische GetBrowseWidth, wenn kein Layout existiert.
+ USHORT GetBrowseWidthByTable( const SwDoc& rDoc ) const;
+
+ // Fuer Export
+ USHORT GetWidthOption() const { return nWidthOption; }
+ BOOL HasPrcWidthOption() const { return bPrcWidthOption; }
+
+ USHORT GetCellPadding() const { return nCellPadding; }
+ USHORT GetCellSpacing() const { return nCellSpacing; }
+ USHORT GetBorder() const { return nBorder; }
+
+ USHORT GetRowCount() const { return nRows; }
+ USHORT GetColCount() const { return nCols; }
+
+ void SetExportable( BOOL bSet ) { bExportable = bSet; }
+ BOOL IsExportable() const { return bExportable; }
+
+ BOOL HaveBordersChanged() const { return bBordersChanged; }
+
+ void SetMayBeInFlyFrame( BOOL bSet ) { bMayBeInFlyFrame = bSet; }
+ BOOL MayBeInFlyFrame() const { return bMayBeInFlyFrame; }
+};
+
+/* */
+
+inline void SwHTMLTableLayoutCell::SetProtected()
+{
+ nRowSpan = 1;
+ nColSpan = 1;
+
+ pContents = 0;
+}
+
+/* */
+
+inline void SwHTMLTableLayoutColumn::MergeMinMaxNoAlign( ULONG nMin,
+ ULONG nMax, ULONG nAbsMin )
+{
+ if( nMin > nMinNoAlign )
+ nMinNoAlign = nMin;
+ if( nMax > nMaxNoAlign )
+ nMaxNoAlign = nMax;
+ if( nAbsMin > nAbsMinNoAlign )
+ nAbsMinNoAlign = nAbsMin;
+}
+
+inline void SwHTMLTableLayoutColumn::ClearPass1Info( BOOL bWidthOpt )
+{
+ nMinNoAlign = nMaxNoAlign = nAbsMinNoAlign = MINLAY;
+ nMin = nMax = 0;
+ if( bWidthOpt )
+ {
+ nWidthOption = 0;
+ bRelWidthOption = FALSE;
+ }
+}
+
+inline void SwHTMLTableLayoutColumn::MergeCellWidthOption(
+ USHORT nWidth, BOOL bRel )
+{
+ if( !nWidthOption ||
+ (bRel==bRelWidthOption && nWidthOption < nWidth) )
+ {
+ nWidthOption = nWidth;
+ bRelWidthOption = bRel;
+ }
+}
+
+inline void SwHTMLTableLayoutColumn::SetMinMax( ULONG nMn, ULONG nMx )
+{
+ nMin = nMn;
+ nMax = nMx;
+}
+
+/* */
+
+inline USHORT SwHTMLTableLayout::GetInhCellSpace( USHORT nCol,
+ USHORT nColSpan ) const
+{
+ USHORT nSpace = 0;
+ if( nCol==0 )
+ nSpace += nInhAbsLeftSpace;
+ if( nCol+nColSpan==nCols )
+ nSpace += nInhAbsRightSpace;
+
+ return nSpace;
+}
+
+inline SwHTMLTableLayoutColumn *SwHTMLTableLayout::GetColumn( USHORT nCol ) const
+{
+ return aColumns[nCol];
+}
+
+inline void SwHTMLTableLayoutColumn::SetWidthOption(
+ USHORT nWidth, BOOL bRelWidth, BOOL bTest )
+{
+ if( bTest && bRelWidthOption==bRelWidth )
+ {
+ if( nWidth > nWidthOption )
+ nWidthOption = nWidth;
+ }
+ else
+ nWidthOption = nWidth;
+ bRelWidthOption = bRelWidth;
+}
+
+inline void SwHTMLTableLayout::SetColumn( SwHTMLTableLayoutColumn *pCol, USHORT nCol )
+{
+ aColumns[nCol] = pCol;
+}
+
+inline SwHTMLTableLayoutCell *SwHTMLTableLayout::GetCell( USHORT nRow, USHORT nCol ) const
+{
+ return aCells[nRow*nCols+nCol];
+}
+
+inline void SwHTMLTableLayout::SetCell( SwHTMLTableLayoutCell *pCell,
+ USHORT nRow, USHORT nCol )
+{
+ aCells[nRow*nCols+nCol] = pCell;
+}
+
+inline long SwHTMLTableLayout::GetBrowseWidthMin() const
+{
+ return (long)( (!nWidthOption || bPrcWidthOption) ? nMin : nRelTabWidth );
+}
+
+void SwHTMLTableLayout::SetInhBorderWidths( USHORT nLeft, USHORT nRight )
+{
+ nInhLeftBorderWidth = nLeft;
+ nInhRightBorderWidth = nRight;
+}
+
+
+#endif
diff --git a/sw/inc/index.hxx b/sw/inc/index.hxx
new file mode 100644
index 000000000000..ec1cff8f1b66
--- /dev/null
+++ b/sw/inc/index.hxx
@@ -0,0 +1,318 @@
+/*************************************************************************
+ *
+ * $RCSfile: index.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _INDEX_HXX
+#define _INDEX_HXX
+
+#include <limits.h>
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+#ifndef _RTTI_HXX
+#include <tools/rtti.hxx> // for RTTI of SwIndexReg
+#endif
+#ifndef _STRING_HXX
+#include <tools/string.hxx> // for xub_StrLen
+#endif
+
+#define INVALID_INDEX STRING_NOTFOUND
+
+// Maximale Anzahl von Indizies im IndexArray (zum Abtesten auf Ueberlaeufe)
+class SwIndex;
+class SwIndexReg;
+
+#ifdef PRODUCT
+#define INLINE inline
+#else
+#define INLINE
+#endif
+
+class SwIndex
+{
+ friend class SwIndexReg;
+
+#ifndef PRODUCT
+ static int nSerial;
+ int MySerial;
+#endif
+
+ xub_StrLen nIndex;
+ SwIndexReg* pArray;
+ SwIndex *pNext, *pPrev;
+
+ SwIndex& ChgValue( const SwIndex& rIdx, xub_StrLen nNewValue );
+ void Remove(); // Ausketten
+
+public:
+ SwIndex( SwIndexReg * pReg, xub_StrLen nIdx = 0 );
+ SwIndex( const SwIndex & );
+ SwIndex( const SwIndex &, short nDiff );
+ ~SwIndex() { Remove(); }
+
+ INLINE xub_StrLen operator++();
+ INLINE xub_StrLen operator--();
+#ifndef CFRONT
+ INLINE xub_StrLen operator++(int);
+ INLINE xub_StrLen operator--(int);
+#endif
+
+ INLINE xub_StrLen operator+=( xub_StrLen );
+ INLINE xub_StrLen operator-=( xub_StrLen );
+ INLINE xub_StrLen operator+=( const SwIndex& );
+ INLINE xub_StrLen operator-=( const SwIndex& );
+
+ INLINE BOOL operator<( const SwIndex& ) const;
+ INLINE BOOL operator<=( const SwIndex& ) const;
+ INLINE BOOL operator>( const SwIndex& ) const;
+ INLINE BOOL operator>=( const SwIndex& ) const;
+ BOOL operator==( const SwIndex& rSwIndex ) const
+ { return (nIndex == rSwIndex.nIndex) && (pArray == rSwIndex.pArray); }
+
+ BOOL operator!=( const SwIndex& rSwIndex ) const
+ { return (nIndex != rSwIndex.nIndex) || (pArray != rSwIndex.pArray); }
+
+ BOOL operator<( xub_StrLen nWert ) const { return nIndex < nWert; }
+ BOOL operator<=( xub_StrLen nWert ) const { return nIndex <= nWert; }
+ BOOL operator>( xub_StrLen nWert ) const { return nIndex > nWert; }
+ BOOL operator>=( xub_StrLen nWert ) const { return nIndex >= nWert; }
+ BOOL operator==( xub_StrLen nWert ) const { return nIndex == nWert; }
+ BOOL operator!=( xub_StrLen nWert ) const { return nIndex != nWert; }
+
+ INLINE SwIndex& operator=( xub_StrLen );
+ SwIndex& operator=( const SwIndex & );
+
+ // gebe den Wert vom Index als xub_StrLen zurueck
+ xub_StrLen GetIndex() const { return nIndex; }
+
+ // ermoeglicht Zuweisungen ohne Erzeugen eines temporaeren
+ // Objektes
+ SwIndex &Assign(SwIndexReg *,xub_StrLen);
+
+ // Herausgabe des Pointers auf das IndexArray,
+ // (fuers RTTI am SwIndexReg)
+ const SwIndexReg* GetIdxReg() const { return pArray; }
+};
+
+#undef INLINE
+
+class SwIndexReg
+{
+ friend class SwIndex;
+ const SwIndex *pFirst, *pLast, *pMiddle;
+
+ // ein globales Array, in das Indizies verschoben werden, die mal
+ // temporaer "ausgelagert" werden muessen; oder die zum Zeitpunkt des
+ // anlegens kein gueltiges Array kennen (SwPaM/SwPosition!)
+ friend void _InitCore();
+ friend void _FinitCore();
+ static SwIndexReg* pEmptyIndexArray;
+
+protected:
+ virtual void Update( const SwIndex & aPos, xub_StrLen nLen,
+ BOOL bNegativ = FALSE );
+
+ void ChkArr();
+
+ BOOL HasAnyIndex() const { return 0 != pFirst; }
+
+ // fuer das Move am RegArray:
+ void MoveIdx( const SwIndex& rOldPos, const SwIndex& rNewPos );
+
+public:
+ SwIndexReg();
+#ifndef PRODUCT
+ ~SwIndexReg();
+#endif
+
+ // rtti, abgeleitete moegens gleichtun oder nicht. Wenn sie es gleichtun
+ // kann ueber das SwIndexReg typsicher gecastet werden.
+ TYPEINFO();
+
+ void SetDefMiddle( const SwIndex* pIdx ) { pMiddle = pIdx; }
+ void MoveTo( SwIndexReg& rArr );
+};
+
+
+#ifdef PRODUCT
+
+inline xub_StrLen SwIndex::operator++()
+{
+ return ChgValue( *this, nIndex+1 ).nIndex;
+}
+inline xub_StrLen SwIndex::operator--()
+{
+ return ChgValue( *this, nIndex-1 ).nIndex;
+}
+#ifndef CFRONT
+inline xub_StrLen SwIndex::operator++(int)
+{
+ xub_StrLen nOldIndex = nIndex;
+ ChgValue( *this, nIndex+1 );
+ return nOldIndex;
+}
+inline xub_StrLen SwIndex::operator--(int)
+{
+ xub_StrLen nOldIndex = nIndex;
+ ChgValue( *this, nIndex-1 );
+ return nOldIndex;
+}
+#endif
+
+inline xub_StrLen SwIndex::operator+=( xub_StrLen nWert )
+{
+ return ChgValue( *this, nIndex + nWert ).nIndex;
+}
+inline xub_StrLen SwIndex::operator-=( xub_StrLen nWert )
+{
+ return ChgValue( *this, nIndex - nWert ).nIndex;
+}
+inline xub_StrLen SwIndex::operator+=( const SwIndex& rIndex )
+{
+ return ChgValue( *this, nIndex + rIndex.nIndex ).nIndex;
+}
+inline xub_StrLen SwIndex::operator-=( const SwIndex& rIndex )
+{
+ return ChgValue( *this, nIndex - rIndex.nIndex ).nIndex;
+}
+
+inline BOOL SwIndex::operator<( const SwIndex& rIndex ) const
+{
+ return nIndex < rIndex.nIndex;
+}
+inline BOOL SwIndex::operator<=( const SwIndex& rIndex ) const
+{
+ return nIndex <= rIndex.nIndex;
+}
+inline BOOL SwIndex::operator>( const SwIndex& rIndex ) const
+{
+ return nIndex > rIndex.nIndex;
+}
+inline BOOL SwIndex::operator>=( const SwIndex& rIndex ) const
+{
+ return nIndex >= rIndex.nIndex;
+}
+inline SwIndex& SwIndex::operator=( xub_StrLen nWert )
+{
+ if( nIndex != nWert )
+ ChgValue( *this, nWert );
+ return *this;
+}
+
+// PRODUCT
+#endif
+
+
+/******************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/inc/index.hxx,v 1.1.1.1 2000-09-18 17:14:26 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.67 2000/09/18 16:03:22 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.66 2000/09/08 13:24:17 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.65 2000/04/12 13:53:23 jp
+ Unicode changes
+
+ Revision 1.64 1999/02/25 08:20:48 JP
+ Task #62314#: Asynchrone DDE-Links/-Requests
+
+
+ Rev 1.63 25 Feb 1999 09:20:48 JP
+ Task #62314#: Asynchrone DDE-Links/-Requests
+
+ Rev 1.62 27 Nov 1997 09:20:28 JP
+ neu: SwIndexReg::MoveTo - move alle Indiezies aus einem Array ins andere
+
+ Rev 1.61 11 Nov 1997 20:36:48 JP
+ SwIndexReg CTOR/DTOR jetzt public
+
+ Rev 1.60 10 Oct 1997 14:03:20 JP
+ SwRange wird nicht mehr benoetigt
+
+ Rev 1.59 09 Oct 1997 15:11:50 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.58 07 Aug 1997 14:41:26 OM
+ Headerfile-Umstellung
+
+ Rev 1.57 18 Jul 1997 12:21:20 MA
+ includes
+
+ Rev 1.56 08 Nov 1995 15:47:10 MA
+ opt: operatoren entfernt
+
+ Rev 1.55 25 Jun 1995 16:49:20 JP
+ Unter Windows nun auch den neuen Index
+
+ Rev 1.54 09 May 1995 08:44:28 KH
+ #ifdef MAC -> #ifdef CFRONT
+
+*******************************************************************/
+
+#endif
diff --git a/sw/inc/inetfld.hxx b/sw/inc/inetfld.hxx
new file mode 100644
index 000000000000..aa6db674a437
--- /dev/null
+++ b/sw/inc/inetfld.hxx
@@ -0,0 +1,142 @@
+/*************************************************************************
+ *
+ * $RCSfile: inetfld.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _INETFLD_HXX
+#define _INETFLD_HXX
+
+
+#include "fldbas.hxx"
+
+class SvxMacro;
+class SvxMacroTableDtor;
+class SwINetField;
+class SwCharFmt;
+class SwDoc;
+
+/*--------------------------------------------------------------------
+ Beschreibung: InterNet-FieldType -> Lade Document mit der URL
+ --------------------------------------------------------------------*/
+
+class SwINetFieldType : public SwFieldType
+{
+ SwDepend aNormalFmt;
+ SwDepend aVisitFmt;
+ SwDoc* pDoc;
+
+public:
+ SwINetFieldType( SwDoc* pDoc );
+
+ virtual SwFieldType* Copy() const;
+
+ SwCharFmt* GetCharFmt( const SwINetField& rFld );
+
+ SwDoc* GetDoc() const { return pDoc; }
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: InterNet-Field -> Lade Document mit der URL
+ --------------------------------------------------------------------*/
+
+class SwINetField : public SwField
+{
+ friend class SwINetFieldType;
+
+ String sTargetFrameName; // in diesen Frame soll die URL
+ String sURL;
+ String sText;
+ SvxMacroTableDtor* pMacroTbl;
+
+public:
+ // Direkte Eingabe alten Wert loeschen
+ SwINetField( SwINetFieldType* pTyp, USHORT nFmt,
+ const String& rURL, const String& rText );
+ virtual ~SwINetField();
+
+ virtual String GetCntnt(BOOL bName = FALSE) const;
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ // URL
+ virtual const String& GetPar1() const;
+ virtual void SetPar1(const String& rStr);
+
+ // HinweisText
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+
+ // das ist das akt. Zeichenformat
+ SwCharFmt* GetCharFmt();
+ const SwCharFmt* GetCharFmt() const
+ { return ((SwINetField*)this)->GetCharFmt(); }
+
+ const String& GetTargetFrameName() const { return sTargetFrameName; }
+ void SetTargetFrameName( const String& rNm ) { sTargetFrameName = rNm; }
+
+ // setze eine neue oder loesche die akt. MakroTabelle
+ void SetMacroTbl( const SvxMacroTableDtor* pTbl = 0 );
+ const SvxMacroTableDtor* GetMacroTbl() const { return pMacroTbl; }
+
+ // setze / erfrage ein Makro
+ void SetMacro( USHORT nEvent, const SvxMacro& rMacro );
+ const SvxMacro* GetMacro( USHORT nEvent ) const;
+};
+
+
+#endif // _INETFLD_HXX
diff --git a/sw/inc/init.hxx b/sw/inc/init.hxx
new file mode 100644
index 000000000000..00a9c814d4f9
--- /dev/null
+++ b/sw/inc/init.hxx
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * $RCSfile: init.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _INIT_HXX
+#define _INIT_HXX
+
+void _InitCore(); // bastyp/init.cxx
+void _FinitCore();
+
+void _InitFilter(); // basflt/fltini.cxx
+void _FinitFilter();
+
+// layout/frame.cxx
+void _FrmInit();
+
+// text/txtfrm.cxx
+void _TextInit();
+void _TextFinit();
+
+
+#endif
diff --git a/sw/inc/io.hxx b/sw/inc/io.hxx
new file mode 100644
index 000000000000..570a43efd28c
--- /dev/null
+++ b/sw/inc/io.hxx
@@ -0,0 +1,221 @@
+/*************************************************************************
+ *
+ * $RCSfile: io.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+// eigene Klasse fuer IO, die die systemunabhaengige Darstellung
+// uebernimmt (bytes dreht, Character konvertiert)
+// das Schreiben erfolgt aus Effizienzgruenden binaer
+#ifndef _IO_HXX
+#define _IO_HXX
+
+#ifndef MAC
+#ifdef UNX
+#include <unistd.h>
+#else
+#include <io.h>
+#endif
+#else
+#include <mac_start.h> // wegen fcntl und sv
+#endif
+
+#include <fcntl.h>
+
+#ifndef MAC
+#include <sys/types.h>
+#include <sys/stat.h>
+#else
+#include <mac_end.h>
+#endif
+
+
+#ifndef _KEYCOD_HXX //autogen
+#include <vcl/keycod.hxx>
+#endif
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+
+/*$
+class BinaryFile {
+ int fd;
+public:
+ enum IO_OpenMode {
+ BF_READ = O_RDONLY,
+ BF_WRITE = O_RDWR,
+ BF_CREATE = O_CREAT,
+ BF_TRUNC = O_TRUNC
+ };
+ // ctor oeffnet File im BinearMode, dtor schliesst es
+ BinaryFile(const String &, int eOpenMode);
+ ~BinaryFile();
+ BOOL Ok() const {
+ return -1 != fd;
+ }
+ operator int() const { return fd; }
+};
+*/
+
+class SwIOin {
+private:
+ SvFileStream aStr; //$ ifstream
+public:
+ // Stream wird im entsprechenden Mode erzeugt.
+ SwIOin(const String &rFilename, StreamMode nMode =
+ STREAM_READ | STREAM_NOCREATE );
+
+ SwIOin& operator>>(char& val);
+ SwIOin& operator>>(unsigned char& val);
+ SwIOin& operator>>(char* val);
+ SwIOin& operator>>(unsigned char* val);
+ SwIOin& operator>>(short& val);
+ SwIOin& operator>>(unsigned short& val);
+ SwIOin& operator>>(long& val);
+ SwIOin& operator>>(unsigned long& val);
+ String ReadString();
+ KeyCode ReadKeyCode();
+ // kann erweitert werden fuer weitere Arrays von
+ // Basistypen; nLen ist die Anzahl der Elemente
+ SwIOin& Read(char *buf, unsigned nLen);
+
+ int operator!() { return aStr.GetError() != SVSTREAM_OK; }
+ SvFileStream &operator()() {
+ return aStr;
+ }
+};
+
+class SwIOout {
+private:
+ void _write(const char *buf, unsigned size);
+ SvFileStream aStr; //$ ofstream
+public:
+ // Stream wird im entsprechenden Mode erzeugt.
+ SwIOout( const String &rFilename, StreamMode nMode =
+ STREAM_WRITE | STREAM_NOCREATE );
+ SwIOout& operator<<(char val);
+ SwIOout& operator<<(unsigned char val);
+ SwIOout& operator<<(char* val);
+ SwIOout& operator<<(unsigned char* val);
+ SwIOout& operator<<(short val);
+ SwIOout& operator<<(unsigned short val);
+ SwIOout& operator<<(long val);
+ SwIOout& operator<<(unsigned long val);
+ SwIOout& operator<<(const String &);
+ SwIOout& operator<<(const KeyCode &);
+ // kann erweitert werden fuer weitere Arrays von
+ // Basistypen; nLen ist die Anzahl der Elemente
+ SwIOout& Write(const char *buf, unsigned nLen);
+
+ int operator!() { return aStr.GetError() != SVSTREAM_OK; }
+ SvFileStream &operator()() {
+ return aStr;
+ }
+};
+
+
+class SwIOinout {
+private:
+ SvFileStream aStr; //$ fstream
+
+public:
+ // Stream wird im entsprechenden Mode erzeugt.
+ SwIOinout(const String &rFilename, StreamMode nMode =
+ STREAM_READWRITE | STREAM_NOCREATE );
+
+ SwIOinout& operator>>(char& val);
+ SwIOinout& operator>>(unsigned char& val);
+ SwIOinout& operator>>(char* val);
+ SwIOinout& operator>>(unsigned char* val);
+ SwIOinout& operator>>(short& val);
+ SwIOinout& operator>>(unsigned short& val);
+ SwIOinout& operator>>(long& val);
+ SwIOinout& operator>>(unsigned long& val);
+ String ReadString();
+ KeyCode ReadKeyCode();
+ // kann erweitert werden fuer weitere Arrays von
+ // Basistypen; nLen ist die Anzahl der Elemente
+ SwIOinout& Read(char *buf, unsigned nLen);
+ SwIOinout& Read(unsigned short *buf, unsigned nLen );
+
+ SwIOinout& operator<<(char val);
+ SwIOinout& operator<<(unsigned char val);
+ SwIOinout& operator<<(char* val);
+ SwIOinout& operator<<(unsigned char* val);
+ SwIOinout& operator<<(short val);
+ SwIOinout& operator<<(unsigned short val);
+ SwIOinout& operator<<(long val);
+ SwIOinout& operator<<(unsigned long val);
+ SwIOinout& operator<<(const String &);
+ SwIOinout& operator<<(const KeyCode &);
+ // kann erweitert werden fuer weitere Arrays von
+ // Basistypen; nLen ist die Anzahl der Elemente
+ SwIOinout& Write(const char *buf, unsigned nLen);
+
+ int operator!() { return aStr.GetError() != SVSTREAM_OK; }
+ SvFileStream &operator()() {
+ return aStr;
+ }
+
+ BOOL Ok();
+};
+
+
+
+#endif
+
diff --git a/sw/inc/itabenum.hxx b/sw/inc/itabenum.hxx
new file mode 100644
index 000000000000..92406bda2647
--- /dev/null
+++ b/sw/inc/itabenum.hxx
@@ -0,0 +1,77 @@
+/*************************************************************************
+ *
+ * $RCSfile: itabenum.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ITABENUM_HXX
+#define _ITABENUM_HXX
+
+enum SwTableInsMode
+{
+ DEFAULT_BORDER = 0x01,
+ HEADLINE = 0x02,
+ REPEAT = 0x04,
+ HEADLINE_REPEAT = 0x06, // Headline + Repeat
+ SPLIT_LAYOUT = 0x08,
+ HEADLINE_NO_BORDER = HEADLINE_REPEAT|SPLIT_LAYOUT,
+ ALL_TBL_INS_ATTR = DEFAULT_BORDER|HEADLINE_REPEAT|SPLIT_LAYOUT
+};
+
+
+#endif
+
diff --git a/sw/inc/lineinfo.hxx b/sw/inc/lineinfo.hxx
new file mode 100644
index 000000000000..4622bec63796
--- /dev/null
+++ b/sw/inc/lineinfo.hxx
@@ -0,0 +1,144 @@
+/*************************************************************************
+ *
+ * $RCSfile: lineinfo.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SW_LINEINFO_HXX
+#define SW_LINEINFO_HXX
+
+
+#ifndef _CALBCK_HXX
+#include "calbck.hxx"
+#endif
+#ifndef _NUMRULE_HXX
+#include "numrule.hxx"
+#endif
+
+class SwCharFmt;
+class SwDoc;
+
+enum LineNumberPosition
+{
+ LINENUMBER_POS_LEFT,
+ LINENUMBER_POS_RIGHT,
+ LINENUMBER_POS_INSIDE,
+ LINENUMBER_POS_OUTSIDE
+};
+
+class SwLineNumberInfo : public SwClient //purpose of derivation from SwClient:
+ //character style for displaying the numbers.
+{
+ SwNumType aType; //e.g. roman linenumbers
+ String aDivider; //String for aditional interval (vert. lines user defined)
+ USHORT nPosFromLeft; //Position for paint
+ USHORT nCountBy; //Paint only for every n line
+ USHORT nDividerCountBy; //Interval for display of an user defined
+ //string every n lines
+ LineNumberPosition ePos; //Where should the display occur (number and divicer)
+ BOOL bPaintLineNumbers; //Should anything be displayed?
+ BOOL bCountBlankLines; //Count empty lines?
+ BOOL bCountInFlys; //Count also within FlyFrames?
+ BOOL bRestartEachPage; //Restart counting at the first paragraph of each page
+ //(even on follows when paragraphs are splitted)
+
+public:
+ SwLineNumberInfo();
+ SwLineNumberInfo(const SwLineNumberInfo&);
+
+ SwLineNumberInfo& operator=(const SwLineNumberInfo&);
+ BOOL operator==( const SwLineNumberInfo& rInf ) const;
+
+ SwCharFmt *GetCharFmt(SwDoc &rDoc) const;
+ void SetCharFmt( SwCharFmt* );
+
+ const SwNumType &GetNumType() const { return aType; }
+ void SetNumType( SwNumType aNew ) { aType = aNew; }
+
+ const String &GetDivider() const { return aDivider; }
+ void SetDivider( const String &r ) { aDivider = r; }
+ USHORT GetDividerCountBy() const { return nDividerCountBy; }
+ void SetDividerCountBy( USHORT n ) { nDividerCountBy = n; }
+
+ USHORT GetPosFromLeft() const { return nPosFromLeft; }
+ void SetPosFromLeft( USHORT n) { nPosFromLeft = n; }
+
+ USHORT GetCountBy() const { return nCountBy; }
+ void SetCountBy( USHORT n) { nCountBy = n; }
+
+ LineNumberPosition GetPos() const { return ePos; }
+ void SetPos( LineNumberPosition eP ){ ePos = eP; }
+
+ BOOL IsPaintLineNumbers() const { return bPaintLineNumbers; }
+ void SetPaintLineNumbers( BOOL b ){ bPaintLineNumbers = b; }
+
+ BOOL IsCountBlankLines() const { return bCountBlankLines; }
+ void SetCountBlankLines( BOOL b ) { bCountBlankLines = b; }
+
+ BOOL IsCountInFlys() const { return bCountInFlys; }
+ void SetCountInFlys( BOOL b ) { bCountInFlys = b; }
+
+ BOOL IsRestartEachPage() const { return bRestartEachPage; }
+ void SetRestartEachPage( BOOL b ) { bRestartEachPage = b; }
+
+ virtual void Modify( SfxPoolItem*, SfxPoolItem* );
+};
+
+
+
+#endif
+
diff --git a/sw/inc/linkenum.hxx b/sw/inc/linkenum.hxx
new file mode 100644
index 000000000000..ea15f28748cd
--- /dev/null
+++ b/sw/inc/linkenum.hxx
@@ -0,0 +1,73 @@
+/*************************************************************************
+ *
+ * $RCSfile: linkenum.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _LINKENUM_HXX
+#define _LINKENUM_HXX
+
+enum UpdateLinks
+{
+ NEVER,
+ MANUAL,
+ AUTOMATIC,
+ GLOBALSETTING
+};
+
+#endif
+
diff --git a/sw/inc/mdiexp.hxx b/sw/inc/mdiexp.hxx
new file mode 100644
index 000000000000..b9e3ee9c4b25
--- /dev/null
+++ b/sw/inc/mdiexp.hxx
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * $RCSfile: mdiexp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _MDIEXP_HXX
+#define _MDIEXP_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class UniString;
+class SwRect;
+class Size;
+class Dialog;
+class ViewShell;
+class SwDoc;
+class SwDocShell;
+class SfxObjectShell;
+class SfxFrame;
+
+extern void ScrollMDI(ViewShell* pVwSh, const SwRect &, USHORT nRangeX, USHORT nRangeY);
+extern BOOL IsScrollMDI(ViewShell* pVwSh, const SwRect &);
+extern void SizeNotify(ViewShell* pVwSh, const Size &);
+
+//Update der Statusleiste, waehrend einer Action.
+extern void PageNumNotify( ViewShell* pVwSh,
+ USHORT nPhyNum,
+ USHORT nVirtNum,
+ const UniString& rPg );
+
+enum FlyMode { FLY_DRAG_START, FLY_DRAG, FLY_DRAG_END };
+extern void FrameNotify( ViewShell* pVwSh, FlyMode eMode = FLY_DRAG );
+
+void StartProgress ( USHORT nMessId, long nStartVal, long nEndVal, SwDocShell *pDocSh = 0 );
+void EndProgress ( SwDocShell *pDocSh = 0 );
+void SetProgressState ( long nPosition, SwDocShell *pDocShell );
+void SetProgressText ( USHORT nMessId, SwDocShell *pDocShell );
+void RescheduleProgress( SwDocShell *pDocShell );
+
+void EnableCmdInterface(BOOL bEnable = TRUE);
+
+Dialog* GetSearchDialog();
+
+void RepaintPagePreview( ViewShell* pVwSh, const SwRect& rRect );
+
+//paintfrm.cxx
+void RemoveFromBackgroundCache( const SfxObjectShell &rDocSh, FASTBOOL bFreeze );
+
+//grfcache.cxx
+// alle QuickDraw-Bitmaps loeschen (pDoc = 0) oder alle des speziellen Docs
+void DelAllGrfCacheEntries( SwDoc* pDoc = 0 );
+
+extern void JavaScriptScrollMDI( SfxFrame* pFrame, INT32 nX, INT32 nY );
+
+// ChgMode fuer Tabellen aus der Konfiguration lesen
+USHORT GetTblChgDefaultMode();
+
+BOOL JumpToSwMark( ViewShell* pVwSh, const UniString& rMark );
+
+
+#endif
diff --git a/sw/inc/ndarr.hxx b/sw/inc/ndarr.hxx
new file mode 100644
index 000000000000..c6958373c493
--- /dev/null
+++ b/sw/inc/ndarr.hxx
@@ -0,0 +1,353 @@
+/*************************************************************************
+ *
+ * $RCSfile: ndarr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _NDARR_HXX
+#define _NDARR_HXX
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef _BPARR_HXX
+#include <bparr.hxx>
+#endif
+#ifndef _NDTYP_HXX
+#include <ndtyp.hxx>
+#endif
+
+class Graphic;
+class UniString;
+class SvInPlaceObject;
+class SwAttrSet;
+class SwCntntFrm;
+class SwCntntNode;
+class SwDoc;
+class SwGrfFmtColl;
+class SwGrfNode;
+class SwHistory;
+class SwNode;
+class SwNodeIndex;
+class SwNodeRange;
+class SwOLENode;
+class SwOutlineNodes;
+class SwPaM;
+class SwSection;
+class SwSectionFmt;
+class SwSectionNode;
+class SwStartNode;
+class SwTableBoxFmt;
+class SwTableFmt;
+class SwTableLine;
+class SwTableLineFmt;
+class SwTableNode;
+class SwTblToTxtSaves;
+class SwTxtFmtColl;
+class SwTxtNode;
+class SwUndoInsNum;
+class SwUndoTblToTxt;
+class SwUndoTxtToTbl;
+struct SwPosition;
+
+
+// --------------------
+// class SwNodes
+// --------------------
+
+typedef SwNode * SwNodePtr;
+typedef BOOL (*FnForEach_SwNodes)( const SwNodePtr&, void* pArgs );
+
+SV_DECL_PTRARR_SORT( SwOutlineNodes, SwNodePtr, 0, 10 )
+
+class SwNodes: private BigPtrArray
+{
+ friend class SwDoc;
+ friend class SwNode;
+ friend class SwNodeIndex;
+
+ SwNodePtr operator[]( USHORT n ) const;
+ SwNodePtr operator[]( int n ) const;
+
+ SwNodeIndex* pRoot; // Liste aller Indizies auf Nodes
+
+ void Insert( const SwNodePtr pNode, const SwNodeIndex& rPos );
+ void Insert( const SwNodePtr pNode, ULONG nPos);
+// void Remove( const SwNodeIndex& rPos, USHORT nLen = 1 );
+// void Remove( ULONG nPos, USHORT nLen = 1 );
+// BOOL Move( const SwIndex & rOldPos, const SwIndex & rNewPos );
+
+
+ SwDoc* pMyDoc; // in diesem Doc ist das Nodes-Array
+
+ SwNode *pEndOfPostIts, *pEndOfInserts, // das sind die festen Bereiche
+ *pEndOfAutotext, *pEndOfRedlines,
+ *pEndOfContent;
+
+ SwOutlineNodes* pOutlineNds; // Array aller GliederiungsNodes
+
+ BOOL bInNodesDel : 1; // falls rekursiv aufgerufen wird
+ // Num/Outline nicht aktualisierem
+ BOOL bInDelUpdOutl : 1; // Flags fuers aktualisieren von Outl.
+ BOOL bInDelUpdNum : 1; // Flags fuers aktualisieren von Outl.
+
+ // fuer dier Verwaltung der Indizies
+ void RegisterIndex( SwNodeIndex& rIdx );
+ void DeRegisterIndex( SwNodeIndex& rIdx );
+ void RemoveNode( ULONG nDelPos, ULONG nLen, FASTBOOL bDel );
+
+ // Aktionen auf die Nodes
+ void SectionUpDown( const SwNodeIndex & aStart, const SwNodeIndex & aEnd );
+ void DelNodes( const SwNodeIndex& rStart, ULONG nCnt = 1 );
+
+ void ChgNode( SwNodeIndex& rDelPos, ULONG nSize,
+ SwNodeIndex& rInsPos, BOOL bNewFrms );
+
+ void UpdtOutlineIdx( const SwNode& ); // Update ab Node alle OutlineNodes
+
+ void _CopyNodes( const SwNodeRange&, const SwNodeIndex&,
+ BOOL bNewFrms = TRUE, BOOL bTblInsDummyNode = FALSE ) const;
+ void _DelDummyNodes( const SwNodeRange& rRg );
+
+protected:
+ SwNodes( SwDoc* pDoc );
+
+public:
+ ~SwNodes();
+
+ SwNodePtr operator[]( ULONG n ) const
+ { return (SwNodePtr)BigPtrArray::operator[] ( n ); }
+
+//JP 29.09.97: impl. steht im ndindex.hxx - sollte moeglichst bald auf die
+// neue Schnittstelle angepasst werden
+ inline SwNodePtr operator[]( const SwNodeIndex& rIdx ) const;
+
+ ULONG Count() const { return BigPtrArray::Count(); }
+ void ForEach( FnForEach_SwNodes fnForEach, void* pArgs = 0 )
+ {
+ BigPtrArray::ForEach( 0, BigPtrArray::Count(),
+ (FnForEach) fnForEach, pArgs );
+ }
+ void ForEach( ULONG nStt, ULONG nEnd, FnForEach_SwNodes fnForEach, void* pArgs = 0 )
+ {
+ BigPtrArray::ForEach( nStt, nEnd, (FnForEach) fnForEach, pArgs );
+ }
+ void ForEach( const SwNodeIndex& rStart, const SwNodeIndex& rEnd,
+ FnForEach_SwNodes fnForEach, void* pArgs = 0 );
+
+ // eine noch leere Section
+ SwNode& GetEndOfPostIts() const { return *pEndOfPostIts; }
+ // Section fuer alle Fussnoten
+ SwNode& GetEndOfInserts() const { return *pEndOfInserts; }
+ // Section fuer alle Flys/Header/Footers
+ SwNode& GetEndOfAutotext() const { return *pEndOfAutotext; }
+ // Section fuer alle Redlines
+ SwNode& GetEndOfRedlines() const { return *pEndOfRedlines; }
+ // das ist der letzte EndNode einer SonderSection. Hier nach kommt nur
+ // noch die normale ContentSection (also der BodyText)
+ SwNode& GetEndOfExtras() const { return *pEndOfRedlines; }
+ // die normale ContentSection (also der BodyText)
+ SwNode& GetEndOfContent() const { return *pEndOfContent; }
+
+ // ist das NodesArray das normale vom Doc? (nicht das UndoNds, .. )
+ // Implementierung steht im doc.hxx (weil man dazu Doc kennen muss) !
+ inline BOOL IsDocNodes() const;
+
+ USHORT GetSectionLevel(const SwNodeIndex &rIndex) const;
+ void Delete(const SwNodeIndex &rPos, ULONG nNodes = 1);
+
+ BOOL _MoveNodes( const SwNodeRange&, SwNodes& rNodes, const SwNodeIndex&,
+ BOOL bNewFrms = TRUE );
+ void Move( SwPaM&, SwPosition&, SwNodes& rNodes, BOOL bSplitNd=TRUE );
+
+ void _Copy( const SwNodeRange& rRg, const SwNodeIndex& rInsPos,
+ BOOL bNewFrms = TRUE ) const
+ { _CopyNodes( rRg, rInsPos, bNewFrms ); }
+
+ void SectionUp( SwNodeRange *);
+ void SectionDown( SwNodeRange *pRange, SwStartNodeType = SwNormalStartNode );
+
+ BOOL CheckNodesRange( const SwNodeIndex& rStt, const SwNodeIndex& rEnd ) const;
+
+ void GoStartOfSection(SwNodeIndex *) const;
+ void GoEndOfSection(SwNodeIndex *) const;
+
+ SwCntntNode* GoNext(SwNodeIndex *) const;
+ SwCntntNode* GoPrevious(SwNodeIndex *) const;
+
+ //Gehe zum naechsten/vorherigen Cntnt/Tabellennode, fuer den
+ //es LayoutFrames gibt, dabei Kopf-/Fusszeilen/Rahmen etc. nicht verlassen
+ SwNode* GoNextWithFrm(SwNodeIndex *) const;
+ SwNode* GoPreviousWithFrm(SwNodeIndex *) const;
+
+ // zum naechsten Content-Node, der nicht geschuetzt oder versteckt ist
+ // (beides auf FALSE ==> GoNext/GoPrevious!!!)
+ SwCntntNode* GoNextSection( SwNodeIndex *, int bSkipHidden = TRUE,
+ int bSkipProtect = TRUE ) const;
+ SwCntntNode* GoPrevSection( SwNodeIndex *, int bSkipHidden = TRUE,
+ int bSkipProtect = TRUE ) const;
+
+ // erzeuge ein leere Section von Start und EndNode. Darf nur gerufen
+ // werden, wenn eine neue Section mit Inhalt erzeugt werden soll.
+ // Zum Beispiel bei den Filtern/Undo/...
+ SwStartNode* MakeEmptySection( const SwNodeIndex& rIdx,
+ SwStartNodeType = SwNormalStartNode );
+
+ SwCntntFrm *MakeFrm(const SwNodeIndex &rIndex);
+
+ // die Impl. von "Make...Node" stehen in den angegebenen .ccx-Files
+ SwTxtNode *MakeTxtNode( const SwNodeIndex & rWhere,
+ SwTxtFmtColl *pColl,
+ SwAttrSet* pAutoAttr = 0 ); // in ndtxt.cxx
+ SwStartNode* MakeTextSection( const SwNodeIndex & rWhere,
+ SwStartNodeType eSttNdTyp,
+ SwTxtFmtColl *pColl,
+ SwAttrSet* pAutoAttr = 0 );
+
+ SwGrfNode *MakeGrfNode( const SwNodeIndex & rWhere,
+ const UniString& rGrfName,
+ const UniString& rFltName,
+ const Graphic* pGraphic,
+ SwGrfFmtColl *pColl,
+ SwAttrSet* pAutoAttr = 0,
+ BOOL bDelayed = FALSE ); // in ndgrf.cxx
+
+ SwOLENode *MakeOLENode( const SwNodeIndex & rWhere,
+ SvInPlaceObject *pObj,
+ SwGrfFmtColl *pColl,
+ SwAttrSet* pAutoAttr = 0 ); // in ndole.cxx
+ SwOLENode *MakeOLENode( const SwNodeIndex & rWhere,
+ UniString &rName,
+ SwGrfFmtColl *pColl,
+ SwAttrSet* pAutoAttr = 0 ); // in ndole.cxx
+
+ // Array aller GliederiungsNodes;
+ const SwOutlineNodes& GetOutLineNds() const { return *pOutlineNds; }
+ // ab einem bestimmten TextNode alle Updaten
+ void UpdateOutlineNode( const SwNode&, BYTE nOldLevel, BYTE nNewLevel );
+ // alle Nodes Updaten - Rule/Format-Aenderung
+ void UpdateOutlineNodes();
+
+ // fuege die Nodes fuer die Tabelle ein
+ // wenn Lines angegeben, erzeuge die Matrix aus Lines & Boxen
+ // ansonsten nur die Anzahl von Boxen.
+ SwTableNode* InsertTable( const SwNodeIndex& rNdIdx,
+ USHORT nBoxes, SwTxtFmtColl* pCntntTxtColl,
+ USHORT nLines=0, SwTxtFmtColl* pHeadlineTxtColl=0 );
+ // erzeuge aus dem makierten Bereich eine ausgeglichene Tabelle
+ SwTableNode* TextToTable( const SwNodeRange& rRange, sal_Unicode cCh,
+ SwTableFmt* pTblFmt,
+ SwTableLineFmt* pLineFmt,
+ SwTableBoxFmt* pBoxFmt,
+ SwTxtFmtColl* pTxtColl,
+ SwUndoTxtToTbl* pUndo = 0 );
+ // erzeuge aus der Tabelle wieder normalen Text
+ BOOL TableToText( const SwNodeRange& rRange, sal_Unicode cCh,
+ SwUndoTblToTxt* = 0 );
+ // steht im untbl.cxx und darf nur vom Undoobject gerufen werden
+ SwTableNode* UndoTableToText( ULONG nStt, ULONG nEnd,
+ const SwTblToTxtSaves& rSavedData );
+
+ // fuege in der Line, vor der InsPos eine neue Box ein. Das Format
+ // wird von der nachfolgenden (vorhergenden;wenn an Ende) genommen
+ // in der Line muss schon eine Box vorhanden sein !
+ BOOL InsBoxen( SwTableNode*, SwTableLine*, SwTableBoxFmt*,
+ // Formate fuer den TextNode der Box
+ SwTxtFmtColl*, SwAttrSet* pAutoAttr,
+ USHORT nInsPos, USHORT nCnt = 1 );
+ // Splittet eine Tabelle in der Grund-Zeile, in der der Index steht.
+ // Alle GrundZeilen dahinter wandern in eine neue Tabelle/-Node.
+ // Ist das Flag bCalcNewSize auf TRUE, wird fuer beide neuen Tabellen
+ // die neue SSize aus dem Max der Boxen errechnet; vorrausgesetzt,
+ // die SSize ist "absolut" gesetzt (LONG_MAX)
+ // (Wird zur Zeit nur fuer den RTF-Parser benoetigt)
+ SwTableNode* SplitTable( const SwNodeIndex& rPos, BOOL bAfter = TRUE,
+ BOOL bCalcNewSize = FALSE );
+ // fuegt 2 Tabellen, die hintereinander stehen, wieder zusammen
+ BOOL MergeTable( const SwNodeIndex& rPos, BOOL bWithPrev = TRUE,
+ USHORT nMode = 0, SwHistory* pHistory = 0 );
+
+ // fuege eine neue SwSection ein
+ SwSectionNode* InsertSection( const SwNodeIndex& rNdIdx,
+ SwSectionFmt& rSectionFmt,
+ const SwSection&,
+ const SwNodeIndex* pEnde,
+ BOOL bInsAtStart = TRUE,
+ BOOL bCreateFrms = TRUE );
+
+ // in welchem Doc steht das Nodes-Array ?
+ SwDoc* GetDoc() { return pMyDoc; }
+ const SwDoc* GetDoc() const { return pMyDoc; }
+
+ // suche den vorhergehenden [/nachfolgenden ] ContentNode oder
+ // TabellenNode mit Frames. Wird kein Ende angeben, dann wird mit
+ // dem FrameIndex begonnen; ansonsten, wird mit dem vor rFrmIdx und
+ // dem hintern pEnd die Suche gestartet. Sollte kein gueltiger Node
+ // gefunden werden, wird 0 returnt. rFrmIdx zeigt auf dem Node mit
+ // Frames
+ SwNode* FindPrvNxtFrmNode( SwNodeIndex& rFrmIdx,
+ const SwNode* pEnd = 0 ) const;
+private:
+ // privater Constructor, weil nie kopiert werden darf !!
+ SwNodes( const SwNodes & rNodes );
+};
+
+
+
+#endif
diff --git a/sw/inc/ndgrf.hxx b/sw/inc/ndgrf.hxx
new file mode 100644
index 000000000000..36bea7f6326c
--- /dev/null
+++ b/sw/inc/ndgrf.hxx
@@ -0,0 +1,373 @@
+/*************************************************************************
+ *
+ * $RCSfile: ndgrf.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _NDGRF_HXX
+#define _NDGRF_HXX
+
+
+#ifndef _LNKBASE_HXX //autogen
+#include <so3/lnkbase.hxx>
+#endif
+#ifndef _GRFMGR_HXX //autogen
+#include <goodies/grfmgr.hxx>
+#endif
+#ifndef _NDNOTXT_HXX
+#include <ndnotxt.hxx>
+#endif
+
+class SwGrfFmtColl;
+class SwDoc;
+class GraphicAttr;
+
+// Code for the new GraphicObject
+#ifdef USE_GRFOBJECT
+
+// --------------------
+// SwGrfNode
+// --------------------
+class SwGrfNode: public SwNoTxtNode
+{
+ friend class SwNodes;
+ friend class SwGrfFrm;
+
+ GraphicObject aGrfObj;
+ SvBaseLinkRef refLink; // falls Grafik nur als Link, dann Pointer gesetzt
+ Size nGrfSize;
+ String aStrmName; // SW3: Name des Storage-Streams fuer Embedded
+ String aNewStrmName; // SW3: name des Storage-Streams bei SaveAs
+ String aLowResGrf; // HTML: LowRes Grafik (Ersatzdarstellung bis
+ // die normale (HighRes) geladen ist.
+
+ BOOL bTransparentFlagValid :1;
+ BOOL bInSwapIn :1;
+ BOOL bGrafikArrived :1;
+ BOOL bChgTwipSize :1;
+ BOOL bLoadLowResGrf :1;
+ BOOL bFrameInPaint :1; //Um Start-/EndActions im Paint (ueber
+ //SwapIn zu verhindern.
+ BOOL bScaleImageMap :1; //Image-Map in SetTwipSize skalieren
+
+ SwGrfNode( const SwNodeIndex& rWhere,
+ const String& rGrfName, const String& rFltName,
+ const Graphic* pGraphic,
+ SwGrfFmtColl* pGrfColl,
+ SwAttrSet* pAutoAttr = 0 );
+ // Ctor fuer Einlesen (SW/G) ohne Grafik
+ SwGrfNode( const SwNodeIndex& rWhere,
+ const String& rGrfName, const String& rFltName,
+ SwGrfFmtColl* pGrfColl,
+ SwAttrSet* pAutoAttr = 0 );
+
+ void InsertLink( const String& rGrfName, const String& rFltName );
+ void DelStreamName();
+
+ DECL_LINK( SwapGraphic, GraphicObject* );
+
+public:
+ virtual ~SwGrfNode();
+
+ const Graphic& GetGrf() const { return aGrfObj.GetGraphic(); }
+ const GraphicObject& GetGrfObj() const { return aGrfObj; }
+ GraphicObject& GetGrfObj() { return aGrfObj; }
+
+ virtual SwCntntNode *SplitNode( const SwPosition & );
+
+ virtual Size GetTwipSize() const;
+#ifndef _FESHVIEW_ONLY_INLINE_NEEDED
+ void SetTwipSize( const Size& rSz );
+
+ inline BOOL IsTransparent() const { return aGrfObj.IsTransparent(); }
+
+ inline BOOL IsAnimated() const { return aGrfObj.IsAnimated(); }
+
+ inline BOOL IsChgTwipSize() const { return bChgTwipSize; }
+ inline void SetChgTwipSize( BOOL b ) { bChgTwipSize = b; }
+
+ inline BOOL IsGrafikArrived() const { return bGrafikArrived; }
+ inline void SetGrafikArrived( BOOL b ) { bGrafikArrived = b; }
+
+ inline BOOL IsFrameInPaint() const { return bFrameInPaint; }
+ inline void SetFrameInPaint( BOOL b ) { bFrameInPaint = b; }
+
+ inline BOOL IsScaleImageMap() const { return bScaleImageMap; }
+ inline void SetScaleImageMap( BOOL b ) { bScaleImageMap = b; }
+
+ // alles fuers Laden der LowRes-Grafiken
+ inline BOOL IsLoadLowResGrf() const { return bLoadLowResGrf; }
+ inline void SetLoadLowResGrf( BOOL b ) { bLoadLowResGrf = b; }
+ const String& GetLowResGrfName() const { return aLowResGrf; }
+ void SetLowResGrfName( const String& r ) { aLowResGrf = r; }
+#endif
+ // steht in ndcopy.cxx
+ virtual SwCntntNode* MakeCopy( SwDoc*, const SwNodeIndex& ) const;
+ // erneutes Einlesen, falls Graphic nicht Ok ist. Die
+ // aktuelle wird durch die neue ersetzt.
+#ifndef _FESHVIEW_ONLY_INLINE_NEEDED
+ BOOL ReRead( const String& rGrfName, const String& rFltName,
+ const Graphic* pGraphic = 0, BOOL bModify = TRUE );
+ // Laden der Grafik unmittelbar vor der Anzeige
+ short SwapIn( BOOL bWaitForData = FALSE );
+ // Entfernen der Grafik, um Speicher freizugeben
+ short SwapOut();
+ // Schreiben der Grafik
+ BOOL StoreGraphics( SvStorage* pDocStg = NULL );
+ // Zugriff auf den Storage-Streamnamen
+ const String& GetStreamName() const;
+ void SetStreamName( const String& r ) { aStrmName = r; }
+ void SaveCompleted( BOOL bClear );
+#endif
+
+ // Der Grafik sagen, dass sich der Node im Undobereich befindet
+ virtual BOOL SavePersistentData();
+ virtual BOOL RestorePersistentData();
+
+#ifndef _FESHVIEW_ONLY_INLINE_NEEDED
+ // Abfrage der Link-Daten
+ BOOL IsGrfLink() const { return refLink.Is(); }
+ inline BOOL IsLinkedFile() const;
+ inline BOOL IsLinkedDDE() const;
+ SvBaseLinkRef GetLink() const { return refLink; }
+ BOOL GetFileFilterNms( String* pFileNm, String* pFilterNm ) const;
+ void ReleaseLink();
+
+ // Prioritaet beim Laden der Grafik setzen. Geht nur, wenn der Link
+ // ein FileObject gesetzt hat
+ void SetTransferPriority( USHORT nPrio );
+
+ // Skalieren einer Image-Map: Die Image-Map wird um den Faktor
+ // zwischen Grafik-Groesse und Rahmen-Groesse vergroessert/verkleinert
+ void ScaleImageMap();
+
+ // returns the with our graphic attributes filled Graphic-Attr-Structure
+ GraphicAttr& GetGraphicAttr( GraphicAttr&, const SwFrm* pFrm ) const;
+
+#endif
+};
+
+/* */
+#else
+// USE_GRFOBJECT
+
+// --------------------
+// SwGrfNode
+// --------------------
+class SwGrfNode: public SwNoTxtNode
+{
+ friend class SwNodes;
+ friend class SwGrfFrm;
+ friend class SwGraphicAccess;
+
+ Graphic aGraphic;
+ SvBaseLinkRef refLink; // falls Grafik nur als Link, dann Pointer gesetzt
+ Size nGrfSize;
+ String aStrmName; // SW3: Name des Storage-Streams fuer Embedded
+ String aNewStrmName; // SW3: name des Storage-Streams bei SaveAs
+ String aLowResGrf; // HTML: LowRes Grafik (Ersatzdarstellung bis
+ // die normale (HighRes) geladen ist.
+
+ const void *pCchMagic; // "MagicNumber" innerhalb des Grafikcaches
+ USHORT nCchIndex; // Index im Grafikcache
+
+ BOOL bTransparentFlagValid :1;
+ BOOL bIsTransparent :1;
+ BOOL bInSwapIn :1;
+ BOOL bGrafikArrived :1;
+ BOOL bChgTwipSize :1;
+ BOOL bLoadLowResGrf :1;
+ BOOL bFrameInPaint :1; //Um Start-/EndActions im Paint (ueber
+ //SwapIn zu verhindern.
+ BOOL bScaleImageMap :1; //Image-Map in SetTwipSize skalieren
+
+ SwGrfNode( const SwNodeIndex& rWhere,
+ const String& rGrfName, const String& rFltName,
+ const Graphic* pGraphic,
+ SwGrfFmtColl* pGrfColl,
+ SwAttrSet* pAutoAttr = 0 );
+ // Ctor fuer Einlesen (SW/G) ohne Grafik
+ SwGrfNode( const SwNodeIndex& rWhere,
+ const String& rGrfName, const String& rFltName,
+ SwGrfFmtColl* pGrfColl,
+ SwAttrSet* pAutoAttr = 0 );
+
+ void InsertLink( const String& rGrfName, const String& rFltName );
+ void DelStreamName();
+
+ void Impl_IsTransparent();
+
+public:
+ ~SwGrfNode();
+
+ const Graphic& GetGrf() const { return aGraphic; }
+
+ virtual SwCntntNode *SplitNode( const SwPosition & );
+
+ virtual Size GetTwipSize() const;
+#ifndef _FESHVIEW_ONLY_INLINE_NEEDED
+ void SetTwipSize( const Size& rSz );
+
+ inline BOOL IsTransparent() const;
+ inline void InvalidateTransparentFlag() { bTransparentFlagValid = FALSE; }
+ inline void SetTransparent( BOOL bFlag )
+ { bIsTransparent = bFlag, bTransparentFlagValid = TRUE; }
+
+ inline BOOL IsChgTwipSize() const { return bChgTwipSize; }
+ inline void SetChgTwipSize( BOOL b ) { bChgTwipSize = b; }
+
+ inline BOOL IsGrafikArrived() const { return bGrafikArrived; }
+ inline void SetGrafikArrived( BOOL b ) { bGrafikArrived = b; }
+
+ inline BOOL IsFrameInPaint() const { return bFrameInPaint; }
+ inline void SetFrameInPaint( BOOL b ) { bFrameInPaint = b; }
+
+ inline BOOL IsScaleImageMap() const { return bScaleImageMap; }
+ inline void SetScaleImageMap( BOOL b ) { bScaleImageMap = b; }
+
+ inline void SetCacheFlags( const void* p, USHORT nIdx = 0 )
+ { pCchMagic = p; nCchIndex = nIdx; }
+ void ClearQBmpCache();
+ inline BOOL HasMagicId() const { return 0 != pCchMagic; }
+
+ // alles fuers Laden der LowRes-Grafiken
+ inline BOOL IsLoadLowResGrf() const { return bLoadLowResGrf; }
+ inline void SetLoadLowResGrf( BOOL b ) { bLoadLowResGrf = b; }
+ const String& GetLowResGrfName() const { return aLowResGrf; }
+ void SetLowResGrfName( const String& r ) { aLowResGrf = r; }
+#endif
+ // steht in ndcopy.cxx
+ virtual SwCntntNode* MakeCopy( SwDoc*, const SwNodeIndex& ) const;
+ // erneutes Einlesen, falls Graphic nicht Ok ist. Die
+ // aktuelle wird durch die neue ersetzt.
+#ifndef _FESHVIEW_ONLY_INLINE_NEEDED
+ BOOL ReRead( const String& rGrfName, const String& rFltName,
+ const Graphic* pGraphic = 0, BOOL bModify = TRUE );
+ // Laden der Grafik unmittelbar vor der Anzeige
+ short SwapIn( BOOL bWaitForData = FALSE );
+ // Entfernen der Grafik, um Speicher freizugeben
+ short SwapOut();
+ // Schreiben der Grafik
+ BOOL StoreGraphics( SvStorage* pDocStg = NULL );
+ // Zugriff auf den Storage-Streamnamen
+ const String& GetStreamName() const;
+ void SetStreamName( const String& r ) { aStrmName = r; }
+ void SaveCompleted( BOOL bClear );
+#endif
+
+ // Der Grafik sagen, dass sich der Node im Undobereich befindet
+ virtual BOOL SavePersistentData();
+ virtual BOOL RestorePersistentData();
+
+#ifndef _FESHVIEW_ONLY_INLINE_NEEDED
+ // Abfrage der Link-Daten
+ BOOL IsGrfLink() const { return refLink.Is(); }
+ inline BOOL IsLinkedFile() const;
+ inline BOOL IsLinkedDDE() const;
+ SvBaseLinkRef GetLink() const { return refLink; }
+ BOOL GetFileFilterNms( String* pFileNm, String* pFilterNm ) const;
+ void ReleaseLink();
+
+ // Prioritaet beim Laden der Grafik setzen. Geht nur, wenn der Link
+ // ein FileObject gesetzt hat
+ void SetTransferPriority( USHORT nPrio );
+
+ // Skalieren einer Image-Map: Die Image-Map wird um den Faktor
+ // zwischen Grafik-Groesse und Rahmen-Groesse vergroessert/verkleinert
+ void ScaleImageMap();
+#endif
+};
+
+#ifndef _FESHVIEW_ONLY_INLINE_NEEDED
+inline BOOL SwGrfNode::IsTransparent() const
+{
+ if ( !bTransparentFlagValid )
+ ((SwGrfNode*)this)->Impl_IsTransparent();
+ return bIsTransparent;
+}
+// fuer den Zugriff auf die CacheDaten
+BOOL FindGrfSizeFromCache( const String& rGrfName, Size& rGrfSz );
+#endif
+
+/* */
+#endif
+// USE_GRFOBJECT
+
+// ----------------------------------------------------------------------
+// Inline Metoden aus Node.hxx - erst hier ist der TxtNode bekannt !!
+inline SwGrfNode *SwNode::GetGrfNode()
+{
+ return ND_GRFNODE == nNodeType ? (SwGrfNode*)this : 0;
+}
+inline const SwGrfNode *SwNode::GetGrfNode() const
+{
+ return ND_GRFNODE == nNodeType ? (const SwGrfNode*)this : 0;
+}
+
+#ifndef _FESHVIEW_ONLY_INLINE_NEEDED
+inline BOOL SwGrfNode::IsLinkedFile() const
+{
+ return refLink.Is() && OBJECT_CLIENT_GRF == refLink->GetObjType();
+}
+inline BOOL SwGrfNode::IsLinkedDDE() const
+{
+ return refLink.Is() && OBJECT_CLIENT_DDE == refLink->GetObjType();
+}
+#endif
+
+
+#endif
diff --git a/sw/inc/ndhints.hxx b/sw/inc/ndhints.hxx
new file mode 100644
index 000000000000..abd81a89d4e8
--- /dev/null
+++ b/sw/inc/ndhints.hxx
@@ -0,0 +1,260 @@
+/*************************************************************************
+ *
+ * $RCSfile: ndhints.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _NDHINTS_HXX
+#define _NDHINTS_HXX
+
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef _SVMEMPOOL_HXX //autogen
+#include <tools/mempool.hxx>
+#endif
+
+#include "numrule.hxx"
+
+class SwTxtNode;
+class SwRegHistory; // steht im RolBck.hxx
+class SwTxtAttr;
+
+/*
+ * Ableitung der Klasse SwpHints ueber den Umweg ueber SwpHts, da
+ * lediglich die Klasse SwTxtNode Attribute einfuegen und
+ * loeschen koennen soll. Anderen Klassen wie den Frames steht
+ * lediglich ein lesender Zugriff ueber den Index-Operator zur
+ * Verfuegung.
+ * Groesse beim Anlegen gleich 1, weil nur dann ein Array erzeug wird, wenn
+ * auch ein Hint eingefuegt wird.
+ */
+
+/*************************************************************************
+ * class SwpHtStart/End
+ *************************************************************************/
+
+SV_DECL_PTRARR_SORT(SwpHtStart,SwTxtAttr*,1,1)
+SV_DECL_PTRARR_SORT(SwpHtEnd,SwTxtAttr*,1,1)
+
+/*************************************************************************
+ * class SwpHintsArr
+ *************************************************************************/
+
+// Das neue Hintsarray:
+class SwpHintsArr : private SwpHtStart
+{
+
+protected:
+ SwpHtEnd aHtEnd;
+
+public:
+ void Insert( const SwTxtAttr *pHt );
+ void Delete( const SwTxtAttr *pHt );
+ void DeleteAtPos( const USHORT nPosInStart );
+ BOOL Resort();
+ SwTxtAttr *Cut( const USHORT nPosInStart );
+
+ inline const SwTxtAttr *GetStart( const USHORT nPos ) const { return (*this)[nPos]; }
+ inline const SwTxtAttr *GetEnd( const USHORT nPos ) const { return aHtEnd[nPos]; }
+ inline SwTxtAttr *GetStart( const USHORT nPos ) { return GetHt(nPos); }
+ inline SwTxtAttr *GetEnd( const USHORT nPos ) { return aHtEnd[nPos]; }
+ inline USHORT GetEndCount() const { return aHtEnd.Count(); }
+ inline USHORT GetStartCount() const { return Count(); }
+ inline USHORT GetStartOf( const SwTxtAttr *pHt ) const;
+ inline USHORT GetEndOf( const SwTxtAttr *pHt ) const;
+ inline USHORT GetPos( const SwTxtAttr *pHt ) const
+// OS: in svmem.hxx wird fuer TCPP GetPos ohne const gerufen
+#ifdef TCPP
+ { return SwpHtStart::GetPos( (SwTxtAttr *)pHt ); }
+#else
+ { return SwpHtStart::GetPos( pHt ); }
+#endif
+
+#ifdef USED
+ // Der Zugriffsoperator soll bald nur noch const sein!
+ inline SwTxtAttr *operator[]( const USHORT nIdx ) { return SwpHtStart::operator[](nIdx); }
+#endif
+
+
+ inline SwTxtAttr *GetHt( const USHORT nIdx ) { return SwpHtStart::operator[](nIdx); }
+ inline const SwTxtAttr *operator[]( const USHORT nIdx )const
+ { return SwpHtStart::operator[](nIdx); }
+ inline USHORT Count() const { return SwpHtStart::Count(); }
+
+ // Methoden vom PtrArr weiterreichen, wird fuer Node::_Cut benoetigt
+ const SwTxtAttr** GetData() const { return SwpHtStart::GetData(); }
+
+#ifndef PRODUCT
+ BOOL Check() const;
+#endif
+};
+
+/*************************************************************************
+ * class SwpHints
+ *************************************************************************/
+
+// Die public-Schnittstelle zum Node hin
+class SwpHints: public SwpHintsArr
+{
+private:
+ SwRegHistory* pHistory;
+ // Numerierung
+ BOOL bVis :1; // HiddenParaFld
+ BOOL bFntChg :1; // Fontwechsel
+ BOOL bFtn :1; // Fussnoten
+ BOOL bInSplitNode: 1; // TRUE: der Node ist im Split und die Frames
+ // werden verschoben!
+ BOOL bDDEFlds : 1; // es sind DDE-Felder am TextNode vorhanden
+ BOOL bCalcVis : 1; // bVis ist invalid, CalcVisibleFlag() rufen
+
+ BOOL Resort( const USHORT nPos );
+ // loescht Hints, die keinen Zustaendigkeitsbereich mehr haben
+ void ClearDummies( SwTxtNode &rNode );
+ // Forget signalisiert, dass es ueberfluessig ist, das Attribut einzu-
+ // fuegen, da es keinen Zustaendigkeitsbereich haette.
+ BOOL Forget( const USHORT i, const USHORT nWhich,
+ const xub_StrLen nStrt, const xub_StrLen nEnd );
+ // Merge verschmilzt aneinanderreichende Hints mit gleichen Attributen
+ // und gleichen Werten, falls nichts dagegen spricht, d.h. wenn dadurch
+ // keine Ueberlappungen mit gleichartigen Attr. entstehen,
+ // Ist der Rueckgabewert TRUE, so wurde verschmolzen und dabei u.a. auch
+ // ein Resort ausgeloest.
+ BOOL Merge( SwTxtNode &rNode );
+ // Haelt ein neues Attribut in pHistory fest.
+ void NoteInHistory( SwTxtAttr *pAttr, const BOOL bNew = FALSE );
+
+ void CalcFlags( );
+
+ // die Delete Methoden duerfen nur vom TextNode gerufen werden !!
+ // Dieser sorgt dafuer, das bei Attributen ohne Ende auch das
+ // entsp. Zeichen entfernt wird !!
+ friend class SwTxtNode;
+ void DeleteAtPos( const USHORT nPos );
+ // Ist der Hint schon bekannt, dann suche die Position und loesche ihn.
+ // Ist er nicht im Array, so gibt es ein ASSERT !!
+ void Delete( SwTxtAttr* pTxtHt );
+
+public:
+ inline BOOL CanBeDeleted() const { return !Count(); }
+
+ // damit das SwDoc::Undo ueber alle Attributaenderungen informiert
+ // wird, gibt es hier einen Pointer auf die History. Nur wenn dieser
+ // != 0 ist, muessen alle Attributaenderungen "gemeldet" werden.
+ void Register( SwRegHistory* pHist ) { pHistory = pHist; }
+ void DeRegister() { Register(0); }
+
+ void Insert( SwTxtAttr *pHt, SwTxtNode &rNode, USHORT nMode = 0 );
+
+ USHORT GetLang( const xub_StrLen nBegin, const xub_StrLen nLen) const;
+ inline void SetCalcVisible(){ bCalcVis = TRUE; }
+ inline void SetVisible( const BOOL bNew ) { bVis = bNew; }
+ inline BOOL IsVisible() const
+ { if( bCalcVis ) ((SwpHints*)this)->CalcVisibleFlag(); return bVis; }
+ inline BOOL HasFntChg() const { return bFntChg; }
+ inline BOOL HasFtn() const { return bFtn; }
+ inline BOOL IsInSplitNode() const { return bInSplitNode; }
+ inline BOOL HasDDEFld() const { return bDDEFlds; }
+
+ // Konstruktor (wird im nur einmal benutzt!)
+ SwpHints()
+ {
+ pHistory = 0;
+ bFntChg = bVis = TRUE;
+ bDDEFlds = bFtn = bInSplitNode = bCalcVis = FALSE;
+ }
+
+ // Berechnung von bVis, return-Wert TRUE bei Aenderung
+ BOOL CalcVisibleFlag();
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwpHints)
+};
+
+// Ausgabeoperator fuer die Texthints
+SvStream &operator<<(SvStream &aS, const SwpHints &rHints); //$ ostream
+
+/*************************************************************************
+ * Inline-Implementationen
+ *************************************************************************/
+
+inline USHORT SwpHintsArr::GetStartOf( const SwTxtAttr *pHt ) const
+{
+ USHORT nPos;
+ if( !Seek_Entry( pHt, &nPos ) )
+ nPos = USHRT_MAX;
+ return nPos;
+}
+
+inline USHORT SwpHintsArr::GetEndOf( const SwTxtAttr *pHt ) const
+{
+ USHORT nPos;
+ if( !aHtEnd.Seek_Entry( pHt, &nPos ) )
+ nPos = USHRT_MAX;
+ return nPos;
+}
+
+inline SwTxtAttr *SwpHintsArr::Cut( const USHORT nPosInStart )
+{
+ SwTxtAttr *pHt = GetHt(nPosInStart);
+ DeleteAtPos( nPosInStart );
+ return pHt;
+}
+
+
+#endif
diff --git a/sw/inc/ndindex.hxx b/sw/inc/ndindex.hxx
new file mode 100644
index 000000000000..d4eaf6a50937
--- /dev/null
+++ b/sw/inc/ndindex.hxx
@@ -0,0 +1,312 @@
+/*************************************************************************
+ *
+ * $RCSfile: ndindex.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _NDINDEX_HXX
+#define _NDINDEX_HXX
+
+#include <limits.h>
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+#include "node.hxx"
+#include "ndarr.hxx"
+
+class SwNode;
+class SwNodes;
+
+class SwNodeIndex
+{
+ friend void SwNodes::RegisterIndex( SwNodeIndex& );
+ friend void SwNodes::DeRegisterIndex( SwNodeIndex& );
+ friend void SwNodes::RemoveNode( ULONG, ULONG, FASTBOOL );
+
+#ifndef PRODUCT
+ static int nSerial;
+ int MySerial;
+#endif
+
+ SwNode* pNd;
+ SwNodeIndex *pNext, *pPrev;
+
+ void Remove(); // Ausketten
+
+ // diese sind nicht erlaubt!
+ SwNodeIndex( SwNodes& rNds, USHORT nIdx );
+ SwNodeIndex( SwNodes& rNds, int nIdx );
+
+public:
+ SwNodeIndex( SwNodes& rNds, ULONG nIdx = 0 );
+ SwNodeIndex( const SwNodeIndex &, long nDiff = 0 );
+ SwNodeIndex( const SwNode&, long nDiff = 0 );
+ ~SwNodeIndex() { Remove(); }
+
+ inline ULONG operator++();
+ inline ULONG operator--();
+#ifndef CFRONT
+ inline ULONG operator++(int);
+ inline ULONG operator--(int);
+#endif
+
+ inline ULONG operator+=( ULONG );
+ inline ULONG operator-=( ULONG );
+ inline ULONG operator+=( const SwNodeIndex& );
+ inline ULONG operator-=( const SwNodeIndex& );
+
+ inline BOOL operator< ( const SwNodeIndex& ) const;
+ inline BOOL operator<=( const SwNodeIndex& ) const;
+ inline BOOL operator> ( const SwNodeIndex& ) const;
+ inline BOOL operator>=( const SwNodeIndex& ) const;
+ inline BOOL operator==( const SwNodeIndex& ) const;
+ inline BOOL operator!=( const SwNodeIndex& ) const;
+
+ inline BOOL operator< ( ULONG nWert ) const;
+ inline BOOL operator<=( ULONG nWert ) const;
+ inline BOOL operator> ( ULONG nWert ) const;
+ inline BOOL operator>=( ULONG nWert ) const;
+ inline BOOL operator==( ULONG nWert ) const;
+ inline BOOL operator!=( ULONG nWert ) const;
+
+ inline SwNodeIndex& operator=( ULONG );
+ SwNodeIndex& operator=( const SwNodeIndex& );
+ SwNodeIndex& operator=( const SwNode& );
+
+ // gebe den Wert vom Index als ULONG zurueck
+ inline ULONG GetIndex() const;
+
+ // ermoeglicht Zuweisungen ohne Erzeugen eines temporaeren Objektes
+ SwNodeIndex& Assign( SwNodes& rNds, ULONG );
+ SwNodeIndex& Assign( const SwNode& rNd, long nOffset = 0 );
+
+ // Herausgabe des Pointers auf das NodesArray,
+ inline const SwNodes& GetNodes() const;
+ inline SwNodes& GetNodes();
+
+ SwNode& GetNode() const { return *pNd; }
+};
+
+/*
+ * SwRange
+ */
+class SwNodeRange
+{
+public:
+ SwNodeIndex aStart;
+ SwNodeIndex aEnd;
+
+ SwNodeRange( const SwNodeIndex &rS, const SwNodeIndex &rE );
+ SwNodeRange( const SwNodeRange &rRange );
+
+ SwNodeRange( SwNodes& rArr, ULONG nSttIdx = 0, ULONG nEndIdx = 0 );
+ SwNodeRange( const SwNodeIndex& rS, long nSttDiff,
+ const SwNodeIndex& rE, long nEndDiff = 0 );
+ SwNodeRange( const SwNode& rS, long nSttDiff,
+ const SwNode& rE, long nEndDiff = 0 );
+};
+
+
+
+
+// fuer die inlines wird aber der node.hxx benoetigt. Dieses braucht aber
+// auch wieder dieses. Also alle Inlines, die auf pNd zugreifen werden
+// hier implementiert.
+
+inline ULONG SwNodeIndex::GetIndex() const
+{
+ return pNd->GetIndex();
+}
+inline const SwNodes& SwNodeIndex::GetNodes() const
+{
+ return pNd->GetNodes();
+}
+inline SwNodes& SwNodeIndex::GetNodes()
+{
+ return pNd->GetNodes();
+}
+inline BOOL SwNodeIndex::operator< ( ULONG nWert ) const
+{
+ return pNd->GetIndex() < nWert;
+}
+inline BOOL SwNodeIndex::operator<=( ULONG nWert ) const
+{
+ return pNd->GetIndex() <= nWert;
+}
+inline BOOL SwNodeIndex::operator> ( ULONG nWert ) const
+{
+ return pNd->GetIndex() > nWert;
+}
+inline BOOL SwNodeIndex::operator>=( ULONG nWert ) const
+{
+ return pNd->GetIndex() >= nWert;
+}
+inline BOOL SwNodeIndex::operator==( ULONG nWert ) const
+{
+ return pNd->GetIndex() == nWert;
+}
+inline BOOL SwNodeIndex::operator!=( ULONG nWert ) const
+{
+ return pNd->GetIndex() != nWert;
+}
+inline BOOL SwNodeIndex::operator<( const SwNodeIndex& rIndex ) const
+{
+ return pNd->GetIndex() < rIndex.GetIndex();
+}
+inline BOOL SwNodeIndex::operator<=( const SwNodeIndex& rIndex ) const
+{
+ return pNd->GetIndex() <= rIndex.GetIndex();
+}
+inline BOOL SwNodeIndex::operator>( const SwNodeIndex& rIndex ) const
+{
+ return pNd->GetIndex() > rIndex.GetIndex();
+}
+inline BOOL SwNodeIndex::operator>=( const SwNodeIndex& rIndex ) const
+{
+ return pNd->GetIndex() >= rIndex.GetIndex();
+}
+inline BOOL SwNodeIndex::operator==( const SwNodeIndex& rIdx ) const
+{
+ return pNd == rIdx.pNd;
+}
+inline BOOL SwNodeIndex::operator!=( const SwNodeIndex& rIdx ) const
+{
+ return pNd != rIdx.pNd;
+}
+
+inline ULONG SwNodeIndex::operator++()
+{
+ return ( pNd = GetNodes()[ pNd->GetIndex()+1 ] )->GetIndex();
+}
+inline ULONG SwNodeIndex::operator--()
+{
+ return ( pNd = GetNodes()[ pNd->GetIndex()-1 ] )->GetIndex();
+}
+#ifndef CFRONT
+inline ULONG SwNodeIndex::operator++(int)
+{
+ ULONG nOldIndex = pNd->GetIndex();
+ pNd = GetNodes()[ nOldIndex + 1 ];
+ return nOldIndex;
+}
+inline ULONG SwNodeIndex::operator--(int)
+{
+ ULONG nOldIndex = pNd->GetIndex();
+ pNd = GetNodes()[ nOldIndex - 1 ];
+ return nOldIndex;
+}
+#endif
+
+inline ULONG SwNodeIndex::operator+=( ULONG nWert )
+{
+ return ( pNd = GetNodes()[ pNd->GetIndex() + nWert ] )->GetIndex();
+}
+inline ULONG SwNodeIndex::operator-=( ULONG nWert )
+{
+ return ( pNd = GetNodes()[ pNd->GetIndex() - nWert ] )->GetIndex();
+}
+inline ULONG SwNodeIndex::operator+=( const SwNodeIndex& rIndex )
+{
+ return ( pNd = GetNodes()[ pNd->GetIndex() + rIndex.GetIndex() ] )->GetIndex();
+}
+inline ULONG SwNodeIndex::operator-=( const SwNodeIndex& rIndex )
+{
+ return ( pNd = GetNodes()[ pNd->GetIndex() - rIndex.GetIndex() ] )->GetIndex();
+}
+
+inline SwNodeIndex& SwNodeIndex::operator=( ULONG nWert )
+{
+ pNd = GetNodes()[ nWert ];
+ return *this;
+}
+
+
+
+//JP 29.09.97: impl. steht im ndindex.hxx - sollte moeglichst bald auf die
+// neue Schnittstelle angepasst werden
+inline SwNode* SwNodes::operator[]( const SwNodeIndex& rIdx ) const
+{
+ return &rIdx.GetNode();
+}
+
+
+/******************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/inc/ndindex.hxx,v 1.1.1.1 2000-09-18 17:14:27 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.3 2000/09/18 16:03:23 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.2 2000/09/08 13:24:18 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.1 1997/10/09 13:12:34 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+
+ Rev 1.0 09 Oct 1997 15:12:34 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+*******************************************************************/
+
+#endif
diff --git a/sw/inc/ndnotxt.hxx b/sw/inc/ndnotxt.hxx
new file mode 100644
index 000000000000..523dd3915436
--- /dev/null
+++ b/sw/inc/ndnotxt.hxx
@@ -0,0 +1,133 @@
+/*************************************************************************
+ *
+ * $RCSfile: ndnotxt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _NDNOTXT_HXX
+#define _NDNOTXT_HXX
+
+#include "node.hxx"
+
+class PolyPolygon;
+
+// --------------------
+// SwNoTxtNode
+// --------------------
+
+class SwNoTxtNode : public SwCntntNode
+{
+ friend class SwNodes;
+ friend class SwNoTxtFrm;
+
+ String aAlternateText; // alternativer Text (HTML)
+
+ PolyPolygon *pContour; // Polygon fuer Konturumlauf
+
+ // erzeugt fuer alle Ableitungen einen AttrSet mit Bereichen
+ // fuer Frame- und Grafik-Attributen (wird nur vom SwCntntNode gerufen)
+ virtual void NewAttrSet( SwAttrPool& );
+
+ SwNoTxtNode( const SwNoTxtNode& ); //nicht erlaubt
+ SwNoTxtNode &operator=( const SwNoTxtNode& ); //nicht erlaubt
+
+protected:
+ SwNoTxtNode( const SwNodeIndex &rWhere, const BYTE nNdType,
+ SwGrfFmtColl *pGrColl, SwAttrSet* pAutoAttr = 0 );
+
+public:
+ ~SwNoTxtNode();
+
+ virtual SwCntntFrm *MakeFrm();
+
+ inline SwGrfFmtColl *GetGrfColl() const;
+
+ virtual Size GetTwipSize() const = 0;
+
+ virtual BOOL SavePersistentData();
+ virtual BOOL RestorePersistentData();
+
+ // alternativen Text abfragen/setzen
+ const String& GetAlternateText() const { return aAlternateText; }
+ void SetAlternateText( const String& rTxt ) { aAlternateText = rTxt; }
+
+ void SetContour( const PolyPolygon *pPoly );
+ const PolyPolygon *HasContour() const { return pContour; }
+ void GetContour( PolyPolygon &rPoly ) const;
+ void CreateContour();
+
+ //Besorgt die Graphic, mit SwapIn fuer GrfNode, per GetData fuer OLE.
+ Graphic GetGraphic() const;
+};
+
+inline SwGrfFmtColl* SwNoTxtNode::GetGrfColl() const
+{
+ return (SwGrfFmtColl*)GetRegisteredIn();
+}
+
+// Inline Metoden aus Node.hxx - erst hier ist der TxtNode bekannt !!
+inline SwNoTxtNode *SwNode::GetNoTxtNode()
+{
+ return ND_NOTXTNODE & nNodeType ? (SwNoTxtNode*)this : 0;
+}
+inline const SwNoTxtNode *SwNode::GetNoTxtNode() const
+{
+ return ND_NOTXTNODE & nNodeType ? (const SwNoTxtNode*)this : 0;
+}
+
+
+#endif // _NDNOTXT_HXX
diff --git a/sw/inc/ndole.hxx b/sw/inc/ndole.hxx
new file mode 100644
index 000000000000..7a00e889080e
--- /dev/null
+++ b/sw/inc/ndole.hxx
@@ -0,0 +1,217 @@
+/*************************************************************************
+ *
+ * $RCSfile: ndole.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _NDOLE_HXX
+#define _NDOLE_HXX
+
+#ifndef _SWBASLNK_HXX
+#include <swbaslnk.hxx> // fuer SwBaseLink
+#endif
+#ifndef _NDNOTXT_HXX
+#include <ndnotxt.hxx>
+#endif
+
+class SwGrfFmtColl;
+class SwDoc;
+class SvInPlaceObjectRef;
+class SvInPlaceObject;
+class SwOLENode;
+class SwOLELink;
+class SwOLELRUCache;
+
+
+class SwOLEObj
+{
+ friend class SwOLENode;
+
+ static SwOLELRUCache* pOLELRU_Cache;
+
+ const SwOLENode* pOLENd;
+ SvBaseLinkRef refLink; // falls Object nur als Link, dann Pointer gesetzt
+
+ //Entweder Ref oder Name sind bekannt, wenn nur der Name bekannt ist, wird
+ //dir Ref bei Anforderung durch GetOleRef() vom Sfx besorgt.
+ SvInPlaceObjectRef *pOLERef; //new/delete, damit so2.hxx wegfaellt.
+ String aName;
+
+ SwOLEObj( const SwOLEObj& rObj ); //nicht erlaubt.
+ SwOLEObj();
+
+ void SetNode( SwOLENode* pNode );
+
+public:
+ SwOLEObj( SvInPlaceObject *pObj );
+ SwOLEObj( const String &rName );
+ ~SwOLEObj();
+
+ // OLE-Object aus dem "Speicher" entfernen
+ void Unload();
+ BOOL RemovedFromLRU();
+
+#ifndef _FESHVIEW_ONLY_INLINE_NEEDED
+ SvInPlaceObjectRef GetOleRef();
+ const String &GetName() const { return aName; }
+
+ BOOL IsOleRef() const; //Damit das Objekt nicht unnoetig geladen werden muss.
+
+ BOOL IsOLELink() const { return refLink.Is(); }
+ inline SwOLELink* GetLink() const;
+ inline void SetLink( SwOLELink* pLink );
+ void ReleaseLink();
+
+#endif
+};
+
+
+// --------------------
+// SwOLENode
+// --------------------
+
+struct SwPersistentOleData;
+
+class SwOLENode: public SwNoTxtNode
+{
+ friend class SwNodes;
+ SwOLEObj aOLEObj;
+ SwPersistentOleData* pSavedData;
+ String sChartTblName; // bei Chart Objecten: Name der ref. Tabelle
+ BOOL bOLESizeInvalid; //Soll beim SwDoc::PrtOLENotify beruecksichtig
+ //werden (zum Beispiel kopiert). Ist nicht
+ //Persistent.
+
+ SwOLENode( const SwNodeIndex &rWhere,
+ SvInPlaceObject *,
+ SwGrfFmtColl *pGrfColl,
+ SwAttrSet* pAutoAttr = 0 );
+
+ SwOLENode( const SwNodeIndex &rWhere,
+ const String &rName,
+ SwGrfFmtColl *pGrfColl,
+ SwAttrSet* pAutoAttr = 0 );
+
+ // aOLEObj besitzt einen privaten Copy-CTOR, wir brauchen auch einen:
+ SwOLENode( const SwOLENode & );
+
+public:
+ const SwOLEObj& GetOLEObj() const { return aOLEObj; }
+ SwOLEObj& GetOLEObj() { return aOLEObj; }
+
+ virtual SwCntntNode *SplitNode( const SwPosition & );
+ // steht in ndcopy.cxx
+ virtual SwCntntNode* MakeCopy( SwDoc*, const SwNodeIndex& ) const;
+
+ virtual Size GetTwipSize() const;
+
+ virtual BOOL SavePersistentData();
+ virtual BOOL RestorePersistentData();
+
+ BOOL IsInGlobalDocSection() const;
+ BOOL IsOLEObjectDeleted() const;
+
+ BOOL IsOLESizeInvalid() const { return bOLESizeInvalid; }
+ void SetOLESizeInvalid( BOOL b ){ bOLESizeInvalid = b; }
+
+ // OLE-Object aus dem "Speicher" entfernen
+ inline void Unload() { aOLEObj.Unload(); }
+
+#ifndef _FESHVIEW_ONLY_INLINE_NEEDED
+ const String& GetChartTblName() const { return sChartTblName; }
+ void SetChartTblName( const String& rNm ) { sChartTblName = rNm; }
+#endif
+};
+
+// --------------------
+// SwOLELink
+// --------------------
+
+class SwOLELink : public SwBaseLink
+{
+ friend class Sw3IoImp;
+ void SetCacheObj( SvEmbeddedObject * pObj )
+ { SvBaseLink::SetCacheObj( pObj ); }
+
+public:
+ SwOLELink( SwOLENode& rNode, SvPseudoObject* pObj )
+ : SwBaseLink( aEmptyStr, OBJECT_CLIENT_OLE_CACHE, pObj, &rNode )
+ {}
+
+ SwOLELink( SwOLENode& rNode )
+ : SwBaseLink( 0, 0, &rNode )
+ {}
+};
+
+
+// Inline Metoden aus Node.hxx - erst hier ist der TxtNode bekannt !!
+inline SwOLENode *SwNode::GetOLENode()
+{
+ return ND_OLENODE == nNodeType ? (SwOLENode*)this : 0;
+}
+inline const SwOLENode *SwNode::GetOLENode() const
+{
+ return ND_OLENODE == nNodeType ? (const SwOLENode*)this : 0;
+}
+
+#ifndef _FESHVIEW_ONLY_INLINE_NEEDED
+inline SwOLELink* SwOLEObj::GetLink() const { return (SwOLELink*)&refLink; }
+inline void SwOLEObj::SetLink( SwOLELink* pLink ) { refLink = pLink; }
+#endif
+
+#endif // _NDOLE_HXX
+
diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx
new file mode 100644
index 000000000000..19794a05e5d2
--- /dev/null
+++ b/sw/inc/ndtxt.hxx
@@ -0,0 +1,377 @@
+/*************************************************************************
+ *
+ * $RCSfile: ndtxt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _NDTXT_HXX
+#define _NDTXT_HXX
+
+#ifndef _NODE_HXX
+#include <node.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _NDHINTS_HXX
+#include <ndhints.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+
+class SwNumRules;
+class SwTxtFmtColl;
+class SwCntntFrm;
+class SwTxtFld; // Fuer GetTxtFld()
+class SwAttrSet;
+
+struct SwSpellArgs; // fuer Spell()
+class SwInterHyphInfo; // Hyphenate(), splargs.hxx
+class SwWrongList; // fuer OnlineSpelling
+class SwNodeNum;
+class OutputDevice;
+
+// Konstanten fuer das Text-Insert:
+#define INS_DEFAULT 0x0000 // keine Extras
+#define INS_EMPTYEXPAND 0x0001 // leere Hints beim Einfuegen aufspannen
+#define INS_NOHINTEXPAND 0x0002 // Hints an der InsPos nicht aufspannen
+
+
+// --------------------
+// SwTxtNode
+// --------------------
+class SwTxtNode: public SwCntntNode
+{
+ // fuer das Erzeugen des ersten TextNode
+ friend class SwDoc; // CTOR und AppendTxtNode()
+ friend class SwNodes;
+ friend class SwTxtFrm;
+ friend void SwpHints::Insert( SwTxtAttr*, SwTxtNode&, USHORT );
+
+ //Kann 0 sein, nur dann nicht 0 wenn harte Attribute drin stehen.
+ //Also niemals direkt zugreifen!
+ SwpHints *pSwpHints;
+ SwWrongList *pWrong; // Rechtschreibfehler nach Online-Spelling
+ SwNodeNum *pNdNum; // Numerierung fuer diesen Absatz
+ SwNodeNum *pNdOutl; // Outline fuer diesen Absatz
+ XubString aText;
+
+ SwTxtNode( const SwNodeIndex &rWhere, SwTxtFmtColl *pTxtColl,
+ SwAttrSet* pAutoAttr = 0 );
+
+ // Kopiert die Attribute an nStart nach pDest.
+ void CopyAttr( SwTxtNode *pDest, const xub_StrLen nStart, const xub_StrLen nOldPos);
+
+ SwTxtNode* _MakeNewTxtNode( const SwNodeIndex&, BOOL bNext = TRUE,
+ BOOL bChgFollow = TRUE );
+
+ void _Cut( SwTxtNode *pDest, const SwIndex &rDestStart,
+ const SwIndex &rStart, xub_StrLen nLen, BOOL bUpdate = TRUE );
+
+ SwTxtAttr* MakeTxtAttr( const SfxPoolItem& rNew, xub_StrLen nStt, xub_StrLen nEnd,
+ BOOL bPool = TRUE );
+
+ // Verlagere alles umfassende harte Attribute in den AttrSet des Absatzes
+ void MoveTxtAttr_To_AttrSet(); // wird von SplitNode gerufen.
+
+ // lege den spz. AttrSet an
+ virtual void NewAttrSet( SwAttrPool& );
+
+ void Replace0xFF( XubString& rTxt, xub_StrLen& rTxtStt,
+ xub_StrLen nEndPos, BOOL bExpandFlds ) const;
+
+public:
+ const String& GetTxt() const { return aText; }
+
+ // Zugriff auf SwpHints
+ inline SwpHints &GetSwpHints();
+ inline const SwpHints &GetSwpHints() const;
+ inline SwpHints *GetpSwpHints() { return pSwpHints; }
+ inline const SwpHints *GetpSwpHints() const { return pSwpHints; }
+ void SetWrong( SwWrongList *pNew );
+ inline SwWrongList *GetWrong() { return pWrong; }
+ inline const SwWrongList *GetWrong() const { return pWrong; }
+ inline BOOL HasHints() const { return pSwpHints ? TRUE : FALSE; }
+ inline SwpHints &GetOrCreateSwpHints();
+
+ virtual ~SwTxtNode();
+
+ virtual xub_StrLen Len() const;
+
+ // steht in itratr
+ void GetMinMaxSize( ULONG nIndex, ULONG& rMin, ULONG &rMax, ULONG &rAbs,
+ OutputDevice* pOut = 0 ) const;
+
+ /*
+ * Einfuegen anderer Datentypen durch Erzeugen eines
+ * temporaeren Strings.
+ */
+ SwTxtNode& Insert( xub_Unicode c, const SwIndex &rIdx );
+ SwTxtNode& Insert( const XubString &rStr, const SwIndex &rIdx,
+ const USHORT nMode = INS_DEFAULT );
+
+ SwTxtNode& Erase( const SwIndex &rIdx, xub_StrLen nCount = STRING_LEN,
+ const USHORT nMode = INS_DEFAULT );
+
+ // Aktionen auf Attributen
+ // loesche alle TextAttribute die als Attribut im Set vorhanden sind
+ // (Set-Pointer != 0 ) oder alle deren Which-Wert mit nWhich mappen
+ // oder wenn Which = 0, alle.
+ void RstAttr( const SwIndex &rIdx, xub_StrLen nLen, USHORT nWhich = 0,
+ const SfxItemSet* pSet = 0, BOOL bInclRefToxMark = FALSE );
+ void GCAttr();
+
+ // loesche das Text-Attribut (muss beim Pool abgemeldet werden!)
+ void DestroyAttr( SwTxtAttr* pAttr );
+
+ // loesche alle Attribute aus dem SwpHintsArray.
+ void ClearSwpHintsArr( int bDelAll = TRUE, int bDelFields = TRUE );
+
+ // uebernehme den Pointer auf das Text-Attribut
+ BOOL Insert( SwTxtAttr *pAttr, USHORT nMode = 0 );
+ // lege ein neues TextAttribut an und fuege es ins SwpHints-Array ein
+ // returne den neuen Pointer (oder 0 bei Fehlern)!
+ SwTxtAttr* Insert( const SfxPoolItem& rAttr,
+ xub_StrLen nStt, xub_StrLen nEnd, USHORT nMode = 0 );
+
+ // setze diese Attribute am TextNode. Wird der gesamte Bereich umspannt,
+ // dann setze sie nur im AutoAttrSet (SwCntntNode:: SetAttr)
+ BOOL SetAttr( const SfxItemSet& rSet,
+ xub_StrLen nStt, xub_StrLen nEnd, USHORT nMode = 0 );
+ // erfrage die Attribute vom TextNode ueber den Bereich
+ BOOL GetAttr( SfxItemSet& rSet, xub_StrLen nStt, xub_StrLen nEnd,
+ BOOL bOnlyTxtAttr = FALSE,
+ BOOL bGetFromChrFmt = TRUE ) const;
+
+ // uebertrage Attribute eines AttrSets ( AutoFmt ) in das SwpHintsArray
+ void FmtToTxtAttr( SwTxtNode* pNd );
+
+ // loeschen eines einzelnen Attributes (fuer SwUndoAttr)
+ // ( nur das Attribut loeschen, dass mit Which,Start und End oder
+ // mit pTxtHint identisch ist (es gibt nur ein gueltiges))
+ // AUSNAHME: ToxMarks !!!
+ void Delete( USHORT nTxtWhich, xub_StrLen nStart, xub_StrLen nEnd = 0 );
+ void Delete( SwTxtAttr * pTxtAttr, BOOL bThisOnly = FALSE );
+
+ // Aktionen auf Text und Attributen
+ void Copy(SwTxtNode *pDest, const SwIndex &rStart, USHORT nLen);
+ void Copy(SwTxtNode *pDest, const SwIndex &rDestStart,
+ const SwIndex &rStart, xub_StrLen nLen);
+ void Cut(SwTxtNode *pDest, const SwIndex &rStart, xub_StrLen nLen);
+ inline void Cut(SwTxtNode *pDest, const SwIndex &rDestStart,
+ const SwIndex &rStart, xub_StrLen nLen);
+ // ersetze im String an Position nIdx das Zeichen
+ void Replace( const SwIndex& rStart, xub_Unicode cCh );
+ void Replace( const SwIndex& rStart, xub_StrLen nLen, const XubString& rText );
+
+ // virtuelle Methoden aus dem CntntNode
+ virtual SwCntntFrm *MakeFrm();
+ virtual SwCntntNode *SplitNode( const SwPosition & );
+ virtual SwCntntNode *JoinNext();
+ virtual SwCntntNode *JoinPrev();
+
+ SwCntntNode *AppendNode( const SwPosition & );
+
+ // setze ggf. das DontExpand-Flag an INet bzw. Zeichenvorlagen
+ BOOL DontExpandFmt( const SwIndex& rIdx, BOOL bFlag = TRUE,
+ BOOL bFmtToTxtAttributes = TRUE );
+
+ // gebe das vorgegebene Attribut, welches an der TextPosition (rIdx)
+ // gesetzt ist zurueck. Gibt es keines, returne 0-Pointer
+ // gesetzt heisst: Start <= rIdx < End
+ SwTxtAttr *GetTxtAttr( const SwIndex& rIdx, USHORT nWhichHt,
+ BOOL bExpand = FALSE ) const;
+
+ // Diese Methode liefert nur Textattribute auf der Position nIdx
+ // zurueck, die kein EndIdx besitzen und denselben Which besitzen.
+ // Ueblicherweise steht an dieser Position ein CH_TXTATR.
+ // Bei RES_TXTATR_END entfaellt die Pruefung auf den Which-Wert.
+ SwTxtAttr *GetTxtAttr( const xub_StrLen nIdx,
+ const USHORT nWhichHt = RES_TXTATR_END ) const;
+
+ SwTxtFld *GetTxtFld( const SwIndex& rIdx )
+ { return (SwTxtFld *)GetTxtAttr( rIdx, RES_TXTATR_FIELD ); }
+
+ // Aktuelles Wort zurueckliefern
+ XubString GetCurWord(xub_StrLen);
+ USHORT Spell(SwSpellArgs*);
+
+ inline SwTxtFmtColl *GetTxtColl() const;
+ virtual SwFmtColl *ChgFmtColl( SwFmtColl* );
+ void _ChgTxtCollUpdateNum( const SwTxtFmtColl* pOld,
+ const SwTxtFmtColl* pNew );
+
+ // kopiere die Collection mit allen Autoformaten zum Dest-Node
+ // dieser kann auch in einem anderen Dokument stehen!
+ // (Methode steht im ndcopy.cxx!!)
+ void CopyCollFmt( SwTxtNode& rDestNd );
+
+ // Numerierung
+ const SwNodeNum* UpdateNum( const SwNodeNum& );
+ const SwNumRule *GetNumRule() const;
+ const SwNodeNum* GetNum() const { return pNdNum; }
+ // OutlineNumerierung
+ const SwNodeNum* UpdateOutlineNum( const SwNodeNum& );
+ const SwNodeNum* GetOutlineNum() const { return pNdOutl; }
+ void NumRuleChgd(); // Frames benachrichtigen
+ XubString GetNumString() const; // returnt Outline oder Num - String
+ long GetLeftMarginWithNum( BOOL bTxtLeft = FALSE ) const;
+ BOOL GetFirstLineOfsWithNum( short& rFirstOffset ) const;
+
+ USHORT GetLang( const xub_StrLen nBegin, const xub_StrLen nLen = 0) const;
+ // steht in ndcopy.cxx
+ BOOL IsSymbol( const xub_StrLen nBegin ) const; // steht in itratr.cxx
+ virtual SwCntntNode* MakeCopy( SwDoc*, const SwNodeIndex& ) const;
+
+ // interaktive Trennung: wir finden den TxtFrm und rufen sein CalcHyph
+ BOOL Hyphenate( SwInterHyphInfo &rHyphInf );
+ void DelSoftHyph( const xub_StrLen nStart, const xub_StrLen nEnd );
+
+ // Liefert einen String mit expandierten Feldern zurueck
+ // opt. die Kapitel/Nummer-String zurueck
+ XubString GetExpandTxt( const xub_StrLen nIdx = 0,
+ const xub_StrLen nLen = STRING_LEN,
+ const BOOL bWithNum = FALSE ) const;
+ BOOL GetExpandTxt( SwTxtNode& rDestNd, const SwIndex* pDestIdx = 0,
+ xub_StrLen nIdx = 0, xub_StrLen nLen = STRING_LEN,
+ BOOL bWithNum = FALSE ) const;
+ XubString GetRedlineTxt( xub_StrLen nIdx = 0,
+ xub_StrLen nLen = STRING_LEN,
+ BOOL bExpandFlds = FALSE,
+ BOOL bWithNum = FALSE ) const;
+ //Liefert fuer die Initalfunktion tatsaechliche Anzahl der Initialzeichen
+ //bei nWishLen == 0 die des ersten Wortes
+ USHORT GetDropLen( USHORT nWishLen) const;
+
+ // Berechnung des Visible-Flags
+ inline BOOL CalcVisibleFlag()
+ { if(pSwpHints) return pSwpHints->CalcVisibleFlag(); return FALSE; }
+ // Setzen des CalcVisible-Flags
+ inline void SetCalcVisible(){ if(pSwpHints) pSwpHints->SetCalcVisible(); }
+
+ // Ist der Absatz sichtbar
+ inline BOOL IsVisible() const
+ { return pSwpHints ? pSwpHints->IsVisible() : TRUE; }
+
+ // Besitzt der Absatz Fussnoten?
+ inline BOOL HasFtn() const {return pSwpHints ? pSwpHints->HasFtn() : FALSE;}
+
+ inline SwTxtAttr* MakeTmpTxtAttr( const SfxPoolItem& rNew )
+ { return MakeTxtAttr( rNew, 0, 0, FALSE ); }
+
+ TYPEINFO(); // fuer rtti
+
+ // fuers Umhaengen der TxtFmtCollections (Outline-Nummerierung!!)
+ virtual void Modify( SfxPoolItem*, SfxPoolItem* );
+// virtual BOOL GetInfo( SfxPoolItem& ) const;
+
+ // aus SwIndexReg
+ virtual void Update( const SwIndex & aPos, USHORT xub_StrLen,
+ BOOL bNegativ = FALSE );
+
+ FASTBOOL IsInSymbolFont( USHORT xub_StrLen ) const;
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwTxtNode)
+};
+
+//-----------------------------------------------------------------------------
+
+inline SwpHints &SwTxtNode::GetSwpHints()
+{
+ ASSERT_ID( pSwpHints, ERR_NOHINTS);
+ return *pSwpHints;
+}
+inline const SwpHints &SwTxtNode::GetSwpHints() const
+{
+ ASSERT_ID( pSwpHints, ERR_NOHINTS);
+ return *pSwpHints;
+}
+
+inline SwpHints& SwTxtNode::GetOrCreateSwpHints()
+{
+ if( !pSwpHints )
+ pSwpHints = new SwpHints;
+ return *pSwpHints;
+}
+
+inline SwTxtFmtColl* SwTxtNode::GetTxtColl() const
+{
+ return (SwTxtFmtColl*)GetRegisteredIn();
+}
+
+// fuer den IBM-Compiler nicht inlinen wg. 42876
+#ifndef ICC
+// Inline Metoden aus Node.hxx - erst hier ist der TxtNode bekannt !!
+inline SwTxtNode *SwNode::GetTxtNode()
+{
+ return ND_TEXTNODE == nNodeType ? (SwTxtNode*)this : 0;
+}
+inline const SwTxtNode *SwNode::GetTxtNode() const
+{
+ return ND_TEXTNODE == nNodeType ? (const SwTxtNode*)this : 0;
+}
+
+#endif
+inline void SwTxtNode::Cut(SwTxtNode *pDest, const SwIndex &rDestStart,
+ const SwIndex &rStart, xub_StrLen nLen)
+{
+ _Cut( pDest, rDestStart, rStart, nLen, TRUE );
+}
+
+
+#endif
diff --git a/sw/inc/ndtyp.hxx b/sw/inc/ndtyp.hxx
new file mode 100644
index 000000000000..5133cad17caf
--- /dev/null
+++ b/sw/inc/ndtyp.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: ndtyp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _NDTYP_HXX
+#define _NDTYP_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+// Ids fuer die verschiedenden Nodes; in der Basisklasse steht der Member,
+// der angibt, um was fuer einen es sich handelt
+const BYTE ND_ENDNODE = 0x01;
+const BYTE ND_STARTNODE = 0x02;
+const BYTE ND_TABLENODE = 0x06;
+const BYTE ND_TEXTNODE = 0x08;
+const BYTE ND_GRFNODE = 0x10;
+const BYTE ND_OLENODE = 0x20;
+
+const BYTE ND_CONTENTNODE = 0x38; // ContentNode (eines von den 3 Bits)
+const BYTE ND_NOTXTNODE = 0x30; // NoTxtNode (eines von den 2 Bits)
+
+const BYTE ND_SECTIONNODE = 0x42;
+// nur fuer internen Gebrauch!!
+const BYTE ND_SECTIONDUMMY = 0x40; //(ND_SECTIONNODE & ~ND_STARTNODE);
+
+// spezielle Types der StartNodes, die keine Ableitungen sind, aber
+// "Bereiche" zusammenhalten.
+enum SwStartNodeType
+{
+ SwNormalStartNode = 0,
+ SwTableBoxStartNode,
+ SwFlyStartNode,
+ SwFootnoteStartNode,
+ SwHeaderStartNode,
+ SwFooterStartNode
+};
+
+// is the node the first and/or last node of a section?
+// This information is used for the export filters. Our layout never have a
+// distance before or after if the node is the first or last in a section.
+const BYTE ND_HAS_PREV_LAYNODE = 0x01;
+const BYTE ND_HAS_NEXT_LAYNODE = 0x02;
+
+
+
+#endif
diff --git a/sw/inc/newhdl.hxx b/sw/inc/newhdl.hxx
new file mode 100644
index 000000000000..ac0ecdf4c7d4
--- /dev/null
+++ b/sw/inc/newhdl.hxx
@@ -0,0 +1,108 @@
+/*************************************************************************
+ *
+ * $RCSfile: newhdl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _NEWHDL_HXX
+#define _NEWHDL_HXX
+
+#ifndef _LINK_HXX //autogen
+#include <tools/link.hxx>
+#endif
+
+#include "errhdl.hxx" // hier kommt auch swtypes rein, was ich brauche
+
+// ----------------------------------------------------------------------------
+
+extern void SW_NEW_HDL();
+
+class SwNewHdl
+{
+ friend void SW_NEW_HDL();
+private:
+ char* pWarnMem;
+ char* pExceptMem;
+ Link aWarnLnk;
+ Link aErrLnk;
+public:
+ void SetWarnLnk( const Link &rLink );
+ void SetErrLnk( const Link &rLink );
+
+ BOOL TryWarnMem();
+
+ BOOL Flush_WarnMem();
+ BOOL Flush_ExceptMem();
+
+ SwNewHdl();
+ ~SwNewHdl();
+};
+
+/******************************************************************************
+ * INLINE
+ ******************************************************************************/
+inline void SwNewHdl::SetWarnLnk( const Link &rLink )
+{
+ aWarnLnk = rLink;
+}
+
+inline void SwNewHdl::SetErrLnk( const Link &rLink )
+{
+ aErrLnk = rLink;
+}
+
+#endif
diff --git a/sw/inc/node.hxx b/sw/inc/node.hxx
new file mode 100644
index 000000000000..a9eb6581a8c7
--- /dev/null
+++ b/sw/inc/node.hxx
@@ -0,0 +1,726 @@
+/*************************************************************************
+ *
+ * $RCSfile: node.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _NODE_HXX
+#define _NODE_HXX
+
+
+#ifndef _SVMEMPOOL_HXX //autogen
+#include <tools/mempool.hxx>
+#endif
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+
+#ifndef _NDARR_HXX
+#include <ndarr.hxx>
+#endif
+#ifndef _NDTYP_HXX
+#include <ndtyp.hxx>
+#endif
+#ifndef _INDEX_HXX
+#include <index.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+
+// ---------------------
+// forward Deklarationen
+// ---------------------
+
+class SvUShorts;
+class SwCntntFrm;
+class SwCntntNode;
+class SwDoc;
+class SwEndNode;
+class SwFrm;
+class SwFrmFmt;
+class SwGrfNode;
+class SwNoTxtNode;
+class SwNodeIndex;
+class SwNodeRange;
+class SwOLENode;
+class SwRect;
+class SwSection;
+class SwSectionFmt;
+class SwSectionNode;
+class SwStartNode;
+class SwTabFrm;
+class SwTable;
+class SwTableNode;
+class SwTableBox;
+class SwTxtNode;
+class SwPageDesc;
+class ViewShell;
+struct SwPosition;
+
+// --------------------
+// class SwNode
+// --------------------
+class SwNode : private /* public*/ BigPtrEntry
+{
+ friend class SwNodes;
+
+ BYTE nNodeType;
+ BOOL bWrongDirty : 1; // Ist das Wrong-Feld auf invalid? (nur TxtNodes)
+ BOOL bACmplWrdDirty : 1; // die ACompl-Liste muss angepasst werden (erstmal nur TxtNodes)
+
+ // JP 28.03.96
+ // fuer Textnodes: Stufungslevel der Autoformatierung. Ist erstmal hier
+ // gelandet, weil noch Bits frei sind
+ BYTE nAFmtNumLvl : 3;
+ BYTE nSetNumLSpace : 1; // fuer Numerierung: TRUE Einzug setzen
+
+protected:
+ SwStartNode* pStartOfSection;
+
+ SwNode( const SwNodeIndex &rWhere, const BYTE nNodeId );
+
+ // fuer den initialen StartNode
+ SwNode( SwNodes& rNodes, ULONG nPos, const BYTE nNodeId );
+
+public:
+ virtual ~SwNode();
+
+ USHORT GetSectionLevel() const;
+ inline ULONG StartOfSectionIndex() const;
+ inline const SwStartNode* StartOfSectionNode() const;
+ inline SwStartNode* StartOfSectionNode();
+ inline ULONG EndOfSectionIndex() const;
+ inline const SwEndNode* EndOfSectionNode() const;
+ inline SwEndNode* EndOfSectionNode();
+
+ inline const BOOL IsWrongDirty() const { return bWrongDirty; }
+ inline void SetWrongDirty( BOOL bNew ) { bWrongDirty = bNew; }
+
+ inline const BOOL IsAutoCompleteWordDirty() const { return bACmplWrdDirty; }
+ inline void SetAutoCompleteWordDirty( BOOL bNew ) { bACmplWrdDirty = bNew; }
+
+ inline const BYTE GetAutoFmtLvl() const { return nAFmtNumLvl; }
+ inline void SetAutoFmtLvl( BYTE nVal ) { nAFmtNumLvl = nVal; }
+
+ inline const BOOL IsSetNumLSpace() const { return 0 != nSetNumLSpace; }
+ inline void SetNumLSpace( BOOL bFlag ) { nSetNumLSpace = bFlag ? 1 : 0; }
+
+ BYTE GetNodeType() const { return nNodeType; }
+
+ inline SwStartNode *GetStartNode();
+ inline const SwStartNode *GetStartNode() const;
+ inline SwCntntNode *GetCntntNode();
+ inline const SwCntntNode *GetCntntNode() const;
+ inline SwEndNode *GetEndNode();
+ inline const SwEndNode *GetEndNode() const;
+#ifndef ICC
+ inline
+#endif
+ SwTxtNode *GetTxtNode();
+
+#ifndef ICC
+ inline
+#endif
+ const SwTxtNode *GetTxtNode() const;
+#ifndef COMPACT
+ inline SwOLENode *GetOLENode();
+ inline const SwOLENode *GetOLENode() const;
+ inline SwNoTxtNode *GetNoTxtNode();
+ inline const SwNoTxtNode *GetNoTxtNode() const;
+ inline SwGrfNode *GetGrfNode();
+ inline const SwGrfNode *GetGrfNode() const;
+#endif
+ inline SwTableNode *GetTableNode();
+ inline const SwTableNode *GetTableNode() const;
+ inline SwSectionNode *GetSectionNode();
+ inline const SwSectionNode *GetSectionNode() const;
+
+ inline BOOL IsStartNode() const;
+ inline BOOL IsCntntNode() const;
+ inline BOOL IsEndNode() const;
+ inline BOOL IsTxtNode() const;
+ inline BOOL IsTableNode() const;
+ inline BOOL IsSectionNode() const;
+#ifndef COMPACT
+ inline BOOL IsOLENode() const;
+ inline BOOL IsNoTxtNode() const;
+ inline BOOL IsGrfNode() const;
+#endif
+
+ // suche den TabellenNode, in dem dieser steht. Wenn in keiner
+ // Tabelle wird 0 returnt.
+ SwTableNode *FindTableNode();
+ inline const SwTableNode *FindTableNode() const;
+
+ // suche den SectionNode, in dem dieser steht. Wenn es in keiner
+ // Section steht wird 0 returnt.
+ SwSectionNode *FindSectionNode();
+ inline const SwSectionNode *FindSectionNode() const;
+
+ const SwStartNode *FindStartNode() const { return pStartOfSection; }
+ SwStartNode *FindStartNode() { return pStartOfSection; }
+
+ SwStartNode* FindSttNodeByType( SwStartNodeType eTyp );
+ inline const SwStartNode* FindSttNodeByType( SwStartNodeType eTyp ) const;
+
+ const SwStartNode* FindTableBoxStartNode() const
+ { return FindSttNodeByType( SwTableBoxStartNode ); }
+ const SwStartNode* FindFlyStartNode() const
+ { return FindSttNodeByType( SwFlyStartNode ); }
+ const SwStartNode* FindFootnoteStartNode() const
+ { return FindSttNodeByType( SwFootnoteStartNode ); }
+ const SwStartNode* FindHeaderStartNode() const
+ { return FindSttNodeByType( SwHeaderStartNode ); }
+ const SwStartNode* FindFooterStartNode() const
+ { return FindSttNodeByType( SwFooterStartNode ); }
+
+ // in welchem Nodes-Array/Doc steht der Node ?
+ inline SwNodes& GetNodes();
+ inline const SwNodes& GetNodes() const;
+ inline SwDoc* GetDoc();
+ inline const SwDoc* GetDoc() const;
+
+ // liegt der Node im Sichtbarenbereich der Shell ?
+ BOOL IsVisible( ViewShell* pSh = 0 ) const;
+ // befindet sich der Node in einem geschuetzten Bereich?
+ BOOL IsInProtectSect() const;
+ // befindet sich der Node in irgendetwas geschuetzten ?
+ // (Bereich/Rahmen/Tabellenzellen/... incl. des Ankers bei
+ // Rahmen/Fussnoten/..)
+ BOOL IsProtect() const;
+ // suche den PageDesc, mit dem dieser Node formatiert ist. Wenn das
+ // Layout vorhanden ist wird ueber das gesucht, ansonsten gibt es nur
+ // die harte Tour ueber die Nodes nach vorne suchen!!
+ const SwPageDesc* FindPageDesc( BOOL bCalcLay ) const;
+
+ // falls der Node in einem Fly steht, dann wird das entsprechende Format
+ // returnt
+ SwFrmFmt* GetFlyFmt() const;
+
+ // liefert das Format, an dem die LayoutFrames des StartNodes registriert sind,
+ // wird von SwSectionNode::MakeFrms benutzt
+ const SwFrmFmt* GetFrmFmt() const;
+
+ // falls der Node in einer Tabelle steht, dann wird die entsprechende
+ // TabellenBox returnt
+ SwTableBox* GetTblBox() const;
+
+ inline ULONG GetIndex() const { return GetPos(); }
+
+ const SwTxtNode* FindOutlineNodeOfLevel( BYTE nLvl ) const;
+
+ BYTE HasPrevNextLayNode() const;
+ BOOL HasPrevLayNode() const
+ { return 0 != (ND_HAS_PREV_LAYNODE & HasPrevNextLayNode()); }
+ BOOL HasNextLayNode() const
+ { return 0 != (ND_HAS_NEXT_LAYNODE & HasPrevNextLayNode()); }
+
+private:
+ // privater Constructor, weil nie kopiert werden darf !!
+ SwNode( const SwNode & rNodes );
+};
+
+// --------------------
+// class SwStartNode
+// --------------------
+class SwStartNode: public SwNode
+{
+ friend class SwNode;
+ friend class SwNodes;
+ friend class SwEndNode; // um theEndOfSection zu setzen !!
+
+ SwEndNode* pEndOfSection;
+ SwStartNodeType eSttNdTyp;
+
+ // fuer den initialen StartNode
+ SwStartNode( SwNodes& rNodes, ULONG nPos );
+
+protected:
+ SwStartNode( const SwNodeIndex &rWhere,
+ const BYTE nNodeType = ND_STARTNODE,
+ SwStartNodeType = SwNormalStartNode );
+public:
+ DECL_FIXEDMEMPOOL_NEWDEL(SwStartNode)
+
+ SwStartNodeType GetStartNodeType() const { return eSttNdTyp; }
+
+ // an alle ContentNodes der Section das ChkCondColl rufen
+ void CheckSectionCondColl() const;
+
+private:
+ // privater Constructor, weil nie kopiert werden darf !!
+ SwStartNode( const SwStartNode & rNode );
+};
+
+
+// --------------------
+// class SwEndNode
+// --------------------
+class SwEndNode : public SwNode
+{
+ friend class SwNodes;
+ friend class SwTableNode; // um seinen EndNode anlegen zukoennen
+ friend class SwSectionNode; // um seinen EndNode anlegen zukoennen
+
+ // fuer den initialen StartNode
+ SwEndNode( SwNodes& rNodes, ULONG nPos, SwStartNode& rSttNd );
+
+protected:
+ SwEndNode( const SwNodeIndex &rWhere, SwStartNode& rSttNd );
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwEndNode)
+
+private:
+ // privater Constructor, weil nie kopiert werden darf !!
+ SwEndNode( const SwEndNode & rNode );
+};
+
+
+// --------------------
+// SwCntntNode
+// --------------------
+class SwCntntNode: public SwModify, public SwNode, public SwIndexReg
+{
+ // Der Reader darf NewAttrSet() aufrufen!
+ friend class SwSwgReader;
+ friend class Sw3IoImp;
+
+//FEATURE::CONDCOLL
+ SwDepend* pCondColl;
+//FEATURE::CONDCOLL
+
+protected:
+ SwCntntNode( const SwNodeIndex &rWhere, const BYTE nNodeType,
+ SwFmtColl *pFmtColl );
+ virtual ~SwCntntNode();
+
+ // Attribut-Set fuer alle AUTO-Attribute eines CntntNodes
+ // ( z.B: TxtNode oder NoTxtNode
+ SwAttrSet *pAttrSet;
+ // lasse von den entsprechenden Nodes die spz. AttrSets anlegen
+ virtual void NewAttrSet( SwAttrPool& ) = 0;
+
+public:
+ TYPEINFO(); //Bereits in Basisklasse Client drin.
+
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ virtual SwCntntFrm *MakeFrm() = 0;
+ virtual SwCntntNode *SplitNode(const SwPosition & ) = 0;
+ virtual SwCntntNode *JoinNext();
+ virtual SwCntntNode *JoinPrev();
+ // koennen 2 Nodes zusammengefasst werden ?
+ // in pIdx kann die 2. Position returnt werden.
+ int CanJoinNext( SwNodeIndex* pIdx =0 ) const;
+ int CanJoinPrev( SwNodeIndex* pIdx =0 ) const;
+
+ void MakeStartIndex( SwIndex * pIdx ) { pIdx->Assign( this, 0 ); }
+ void MakeEndIndex( SwIndex * pIdx ) { pIdx->Assign( this, Len() ); }
+
+ BOOL GoNext(SwIndex *) const;
+ BOOL GoPrevious(SwIndex *) const;
+
+ SwCntntFrm *GetFrm( const Point* pDocPos = 0,
+ const SwPosition *pPos = 0,
+ const BOOL bCalcFrm = TRUE ) const;
+ // Gibt die tatsaechlcheGroesse des Frames zurueck bzw. ein leeres
+ // Rechteck, wenn kein Layout existiert.
+ // Wird fuer die Export Filter benoetigt.
+ SwRect FindLayoutRect( const BOOL bPrtArea = FALSE,
+ const Point* pPoint = 0,
+ const BOOL bCalcFrm = FALSE ) const;
+ SwRect FindPageFrmRect( const BOOL bPrtArea = FALSE,
+ const Point* pPoint = 0,
+ const BOOL bCalcFrm = FALSE ) const;
+ /*
+ * Methode erzeugt fuer den angegebenen Node alle Ansichten vom
+ * Dokument. Die erzeugten Contentframes werden in das entsprechende
+ * Layout gehaengt.
+ */
+ void MakeFrms( SwCntntNode& rNode );
+ /*
+ * Methode loescht fuer den Node alle Ansichten vom
+ * Dokument. Die Contentframes werden aus dem entsprechenden
+ * Layout ausgehaengt.
+ */
+ void DelFrms();
+
+ /*
+ * liefert die Anzahl der Elemente des Inhalts des Nodes;
+ * Default ist 1, Unterschiede gibt es beim TextNode und beim
+ * Formelnode.
+ */
+ virtual xub_StrLen Len() const;
+
+ virtual SwCntntNode* MakeCopy( SwDoc*, const SwNodeIndex& ) const = 0;
+ // erfrage vom Client Informationen
+ virtual BOOL GetInfo( SfxPoolItem& ) const;
+
+ // SS fuer die PoolItems: (Harte-(Fmt)Attrbutierung)
+
+ // Ist bInParent FALSE, wird nur in diesem Node nach dem Attribut gesucht.
+ const SfxPoolItem& GetAttr( USHORT nWhich, BOOL bInParent=TRUE ) const;
+ BOOL GetAttr( SfxItemSet& rSet, BOOL bInParent=TRUE ) const;
+ BOOL SetAttr( const SfxPoolItem& );
+ BOOL SetAttr( const SfxItemSet& rSet );
+ BOOL ResetAttr( USHORT nWhich1, USHORT nWhich2 = 0 );
+ BOOL ResetAttr( const SvUShorts& rWhichArr );
+ USHORT ResetAllAttr();
+ // liefert das Attribut, das nicht ueber die bedingte Vorlage kommt!
+ const SfxPoolItem* GetNoCondAttr( USHORT nWhich, BOOL bInParents ) const;
+
+ // hat der Node schon eigene Auto-Attribute ?
+ // Zugriff auf SwAttrSet
+ inline SwAttrSet &GetSwAttrSet();
+ inline const SwAttrSet &GetSwAttrSet() const;
+ inline SwAttrSet *GetpSwAttrSet() { return pAttrSet; }
+ inline const SwAttrSet *GetpSwAttrSet() const { return pAttrSet; }
+ inline BOOL HasSwAttrSet() const { return pAttrSet ? TRUE : FALSE; }
+
+ virtual SwFmtColl* ChgFmtColl( SwFmtColl* );
+ SwFmtColl* GetFmtColl() const { return (SwFmtColl*)GetRegisteredIn(); }
+
+//FEATURE::CONDCOLL
+ inline SwFmtColl& GetAnyFmtColl() const;
+ void SetCondFmtColl( SwFmtColl* );
+ inline SwFmtColl* GetCondFmtColl() const;
+
+ BOOL IsAnyCondition( SwCollCondition& rTmp ) const;
+ void ChkCondColl();
+//FEATURE::CONDCOLL
+
+ // invalidiert die am Node gesetzte NumRule. Diese wird
+ // spaetestend in EndAction einer Shell geupdatet
+ BOOL InvalidateNumRule();
+
+private:
+ // privater Constructor, weil nie kopiert werden darf !!
+ SwCntntNode( const SwCntntNode & rNode );
+};
+
+
+
+//---------
+// SwTableNode
+//---------
+class SwTableNode : public SwStartNode
+{
+ friend class SwNodes;
+ SwTable* pTable;
+protected:
+ virtual ~SwTableNode();
+
+public:
+ SwTableNode( const SwNodeIndex & );
+
+ const SwTable& GetTable() const { return *pTable; }
+ SwTable& GetTable() { return *pTable; }
+ SwTabFrm *MakeFrm();
+
+ //Legt die Frms fuer den TableNode (also die TabFrms) an.
+ void MakeFrms( SwNodeIndex* pIdxBehind );
+
+ //Methode loescht fuer den Node alle Ansichten vom
+ //Dokument. Die Contentframes werden aus dem entsprechenden
+ //Layout ausgehaengt.
+ void DelFrms();
+
+ //Methode erzeugt fuer den vorhergehenden Node alle Ansichten vom
+ //Dokument. Die erzeugten Contentframes werden in das entsprechende
+ //Layout gehaengt.
+ void MakeFrms( const SwNodeIndex & rIdx );
+
+ SwTableNode* MakeCopy( SwDoc*, const SwNodeIndex& ) const;
+ void SetNewTable( SwTable* , BOOL bNewFrames=TRUE );
+
+private:
+ // privater Constructor, weil nie kopiert werden darf !!
+ SwTableNode( const SwTableNode & rNode );
+};
+
+
+//---------
+// SwSectionNode
+//---------
+class SwSectionNode : public SwStartNode
+{
+ friend class SwNodes;
+ SwSection* pSection;
+protected:
+ virtual ~SwSectionNode();
+
+public:
+ SwSectionNode( const SwNodeIndex&, SwSectionFmt& rFmt );
+
+ const SwSection& GetSection() const { return *pSection; }
+ SwSection& GetSection() { return *pSection; }
+
+ // setze ein neues SectionObject. Erstmal nur gedacht fuer die
+ // neuen VerzeichnisSections. Der geht ueber in den Besitz des Nodes!
+ void SetNewSection( SwSection* pNewSection );
+
+ SwFrm *MakeFrm();
+
+ //Legt die Frms fuer den SectionNode (also die SectionFrms) an.
+ //Im Defaultfall wird bis die Frames bis zum Ende des Bereichs angelegt,
+ //uebergibt man einen weiteren NodeIndex pEnd, so wird bis zu diesem
+ //ein MakeFrms gerufen, genutzt wird dies von TableToText
+ void MakeFrms( SwNodeIndex* pIdxBehind, SwNodeIndex* pEnd = NULL );
+
+ //Methode loescht fuer den Node alle Ansichten vom
+ //Dokument. Die Contentframes werden aus dem entsprechenden
+ //Layout ausgehaengt.
+ void DelFrms();
+
+ //Methode erzeugt fuer den vorhergehenden Node alle Ansichten vom
+ //Dokument. Die erzeugten Contentframes werden in das entsprechende
+ //Layout gehaengt.
+ void MakeFrms( const SwNodeIndex & rIdx );
+
+ SwSectionNode* MakeCopy( SwDoc*, const SwNodeIndex& ) const;
+
+ // setze den Verweis im Format der Section auf sich selbst
+ void NodesArrChgd();
+
+ // ueberprueft bei _nicht_ versteckten Bereichen, ob es Inhalt gibt, der
+ // _nicht_ in einem versteckten (Unter-)Bereich liegt
+ BOOL IsCntntHidden() const;
+
+private:
+ // privater Constructor, weil nie kopiert werden darf !!
+ SwSectionNode( const SwSection& rNode );
+};
+
+
+
+// ---------------------- einige Inline Methoden ----------------------
+inline SwEndNode *SwNode::GetEndNode()
+{
+ return ND_ENDNODE == nNodeType ? (SwEndNode*)this : 0;
+}
+inline const SwEndNode *SwNode::GetEndNode() const
+{
+ return ND_ENDNODE == nNodeType ? (const SwEndNode*)this : 0;
+}
+inline SwStartNode *SwNode::GetStartNode()
+{
+ return ND_STARTNODE & nNodeType ? (SwStartNode*)this : 0;
+}
+inline const SwStartNode *SwNode::GetStartNode() const
+{
+ return ND_STARTNODE & nNodeType ? (const SwStartNode*)this : 0;
+}
+inline SwTableNode *SwNode::GetTableNode()
+{
+ return ND_TABLENODE == nNodeType ? (SwTableNode*)this : 0;
+}
+inline const SwTableNode *SwNode::GetTableNode() const
+{
+ return ND_TABLENODE == nNodeType ? (const SwTableNode*)this : 0;
+}
+inline SwSectionNode *SwNode::GetSectionNode()
+{
+ return ND_SECTIONNODE == nNodeType ? (SwSectionNode*)this : 0;
+}
+inline const SwSectionNode *SwNode::GetSectionNode() const
+{
+ return ND_SECTIONNODE == nNodeType ? (const SwSectionNode*)this : 0;
+}
+inline SwCntntNode *SwNode::GetCntntNode()
+{
+ return ND_CONTENTNODE & nNodeType ? (SwCntntNode*)this : 0;
+}
+inline const SwCntntNode *SwNode::GetCntntNode() const
+{
+ return ND_CONTENTNODE & nNodeType ? (const SwCntntNode*)this : 0;
+}
+
+
+inline BOOL SwNode::IsStartNode() const
+{
+ return ND_STARTNODE & nNodeType ? TRUE : FALSE;
+}
+inline BOOL SwNode::IsCntntNode() const
+{
+ return ND_CONTENTNODE & nNodeType ? TRUE : FALSE;
+}
+inline BOOL SwNode::IsEndNode() const
+{
+ return ND_ENDNODE == nNodeType ? TRUE : FALSE;
+}
+inline BOOL SwNode::IsTxtNode() const
+{
+ return ND_TEXTNODE == nNodeType ? TRUE : FALSE;
+}
+inline BOOL SwNode::IsTableNode() const
+{
+ return ND_TABLENODE == nNodeType ? TRUE : FALSE;
+}
+inline BOOL SwNode::IsSectionNode() const
+{
+ return ND_SECTIONNODE == nNodeType ? TRUE : FALSE;
+}
+#ifndef COMPACT
+inline BOOL SwNode::IsNoTxtNode() const
+{
+ return ND_NOTXTNODE & nNodeType ? TRUE : FALSE;
+}
+inline BOOL SwNode::IsOLENode() const
+{
+ return ND_OLENODE == nNodeType ? TRUE : FALSE;
+}
+inline BOOL SwNode::IsGrfNode() const
+{
+ return ND_GRFNODE == nNodeType ? TRUE : FALSE;
+}
+#endif
+
+inline const SwStartNode* SwNode::FindSttNodeByType( SwStartNodeType eTyp ) const
+{
+ return ((SwNode*)this)->FindSttNodeByType( eTyp );
+}
+inline const SwTableNode* SwNode::FindTableNode() const
+{
+ return ((SwNode*)this)->FindTableNode();
+}
+inline const SwSectionNode* SwNode::FindSectionNode() const
+{
+ return ((SwNode*)this)->FindSectionNode();
+}
+inline ULONG SwNode::StartOfSectionIndex() const
+{
+ return pStartOfSection->GetIndex();
+}
+inline const SwStartNode* SwNode::StartOfSectionNode() const
+{
+ return pStartOfSection;
+}
+inline SwStartNode* SwNode::StartOfSectionNode()
+{
+ return pStartOfSection;
+}
+inline ULONG SwNode::EndOfSectionIndex() const
+{
+ const SwStartNode* pStNd = IsStartNode() ? (SwStartNode*)this : pStartOfSection;
+ return pStNd->pEndOfSection->GetIndex();
+}
+inline const SwEndNode* SwNode::EndOfSectionNode() const
+{
+ const SwStartNode* pStNd = IsStartNode() ? (SwStartNode*)this : pStartOfSection;
+ return pStNd->pEndOfSection;
+}
+inline SwEndNode* SwNode::EndOfSectionNode()
+{
+ SwStartNode* pStNd = IsStartNode() ? (SwStartNode*)this : pStartOfSection;
+ return pStNd->pEndOfSection;
+}
+
+inline SwNodes& SwNode::GetNodes()
+{
+ return (SwNodes&)GetArray();
+}
+inline const SwNodes& SwNode::GetNodes() const
+{
+ return (SwNodes&)GetArray();
+}
+
+inline SwDoc* SwNode::GetDoc()
+{
+ return GetNodes().GetDoc();
+}
+inline const SwDoc* SwNode::GetDoc() const
+{
+ return GetNodes().GetDoc();
+}
+
+inline SwFmtColl* SwCntntNode::GetCondFmtColl() const
+{
+ return pCondColl ? (SwFmtColl*)pCondColl->GetRegisteredIn() : 0;
+}
+
+
+inline SwFmtColl& SwCntntNode::GetAnyFmtColl() const
+{
+ return pCondColl && pCondColl->GetRegisteredIn()
+ ? *(SwFmtColl*)pCondColl->GetRegisteredIn()
+ : *(SwFmtColl*)GetRegisteredIn();
+}
+
+inline SwAttrSet& SwCntntNode::GetSwAttrSet()
+{
+ return pAttrSet ? ( (SwAttrSet &) ( *pAttrSet ) )
+ : ( (SwAttrSet &) ( GetAnyFmtColl().GetAttrSet() ) );
+}
+inline const SwAttrSet& SwCntntNode::GetSwAttrSet() const
+{
+ return pAttrSet ? ( (SwAttrSet &) ( *pAttrSet ) )
+ : ( (SwAttrSet &) ( GetAnyFmtColl().GetAttrSet() ) );
+}
+//FEATURE::CONDCOLL
+
+inline const SfxPoolItem& SwCntntNode::GetAttr( USHORT nWhich,
+ BOOL bInParents ) const
+{
+ return GetSwAttrSet().Get( nWhich, bInParents );
+}
+
+
+
+
+#endif
diff --git a/sw/inc/numrule.hxx b/sw/inc/numrule.hxx
new file mode 100644
index 000000000000..cd0ba88d165c
--- /dev/null
+++ b/sw/inc/numrule.hxx
@@ -0,0 +1,422 @@
+/*************************************************************************
+ *
+ * $RCSfile: numrule.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _NUMRULE_HXX
+#define _NUMRULE_HXX
+
+
+#ifndef _LINK_HXX //autogen
+#include <tools/link.hxx>
+#endif
+#ifndef _SV_GEN_HXX //autogen wg. Size
+#include <tools/gen.hxx>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _SVX_SVXENUM_HXX //autogen
+#include <svx/svxenum.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _CALBCK_HXX
+#include <calbck.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx> // Fuer die inline-ASSERTs
+#endif
+#ifndef _SWERROR_H
+#include <error.h> // Fuer die inline-ASSERTs
+#endif
+
+
+class Font;
+class SvxBrushItem;
+class SvxNumberFormat;
+class SvxNumRule;
+class SwCharFmt;
+class SwDoc;
+class SwFmtVertOrient;
+class SwNodeNum;
+class SwTxtNode;
+
+extern char __FAR_DATA sOutlineStr[]; // SWG-Filter
+
+const sal_Unicode cBulletChar = 0xF000 + 149; // Charakter fuer Aufzaehlungen
+
+inline BYTE GetRealLevel( const BYTE nLvl )
+{
+ return nLvl & (NO_NUMLEVEL - 1);
+}
+
+class SwNumType
+{
+ void GetRomanStr( ULONG nNo, String& rStr ) const;
+ void GetCharStr( ULONG nNo, String& rStr ) const;
+ void GetCharStrN( ULONG nNo, String& rStr ) const;
+public:
+ /* Reihenfolge der Elemente des enums ist fuer die
+ * UI-Seite interesssant -- bitte nicht ohne trifftigen
+ * Grund und Nachricht an die UI-Seite aendern.
+ */
+ SvxExtNumType eType;
+
+ SwNumType() { eType = SVX_NUM_ARABIC; }
+ SwNumType( const SwNumType& rType ) : eType( rType.eType ) {}
+
+ String GetNumStr( ULONG nNo ) const;
+};
+
+
+class SwNumFmt : public SwClient, public SwNumType
+{
+ String aPrefix; // vorangestellter Text
+ String aPostfix; // nachfolgender Text
+
+ // bei eType == USER_BITMAP ist folgendes ganz interessant
+ Size aGrfSize;
+ SvxBrushItem* pGrfBrush;
+ SwFmtVertOrient* pVertOrient;
+ // bei eType == CHAR_SPECIAL ist folgendes ganz interessant
+ Font* pBulletFont; // Pointer auf den BulletFont
+
+ SvxAdjust eNumAdjust; // Ausrichtung (Links/rechts/zent.)
+ short nFirstLineOffset; // Abstand zwischen Linken Rand und Text
+ short nLSpace; // relativer linker Rand
+ USHORT nAbsLSpace; // absoluter linker Rand
+ USHORT nCharTextOffset; // Abstand zwischen Zeichen und Text
+ USHORT nStart; // Startwert fuer die Nummer
+
+ BYTE nInclUpperLevel; // wieviele Levels
+ sal_Unicode cBullet; // das Bullet Char
+ BOOL bRelLSpace : 1; // LSpace als relative Angabe (UI)
+
+ void UpdateNumNodes( SwDoc* pDoc );
+ DECL_STATIC_LINK( SwNumFmt, GraphicArrived, void * );
+
+public:
+ SwNumFmt();
+ SwNumFmt( const SwNumFmt& );
+ SwNumFmt( const SvxNumberFormat&, SwDoc* pDoc);
+ SvxNumberFormat MakeSvxFormat() const;
+ virtual ~SwNumFmt();
+
+ SwNumFmt& operator=( const SwNumFmt& );
+ BOOL operator==( const SwNumFmt& ) const;
+ BOOL operator!=( const SwNumFmt& r ) const { return !(*this == r); }
+
+ SwCharFmt* GetCharFmt() const { return (SwCharFmt*)pRegisteredIn; }
+ void SetCharFmt( SwCharFmt* );
+ virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew );
+
+ // ist der Font* == 0, wird der Font nicht gewechselt
+ void SetBulletFont(const Font*);
+ const Font* GetBulletFont() const { return pBulletFont; }
+
+ sal_Unicode GetBulletChar() const { return cBullet; }
+ void SetBulletChar( sal_Unicode c ) { cBullet = c; }
+
+//------
+// ALT
+ BOOL IsInclUpperLevel() const { return 1 < nInclUpperLevel; }
+ void SetInclUpperLevel( BOOL b ) { nInclUpperLevel = b ? MAXLEVEL : 1; }
+// ALT
+//------
+ BYTE GetUpperLevel() const { return nInclUpperLevel; }
+ void SetUpperLevel( BYTE nValue ) { nInclUpperLevel = nValue; }
+
+ BOOL IsRelLSpace() const { return bRelLSpace; }
+ void SetRelLSpace( BOOL b ) { bRelLSpace = b; }
+
+ SvxAdjust GetAdjust() const { return eNumAdjust; }
+ void SetAdjust( SvxAdjust eAdj ) { eNumAdjust = eAdj; }
+
+ short GetLSpace() const { return nLSpace; }
+ void SetLSpace( short n ) { nLSpace = n; }
+
+ USHORT GetAbsLSpace() const { return nAbsLSpace; }
+ void SetAbsLSpace( USHORT n ) { nAbsLSpace = n; }
+
+ short GetFirstLineOffset() const { return nFirstLineOffset; }
+ void SetFirstLineOffset( short n ) { nFirstLineOffset = n; }
+
+ USHORT GetCharTextOffset() const { return nCharTextOffset; }
+ void SetCharTextOffset( USHORT n ) { nCharTextOffset = n; }
+
+ USHORT GetStartValue() const { return nStart; }
+ void SetStartValue( USHORT n ) { nStart = n; }
+
+ const String& GetPrefix() const { return aPrefix; }
+ void SetPrefix( const String& rS ) { aPrefix = rS; }
+
+ const String& GetPostfix() const { return aPostfix; }
+ void SetPostfix( const String& rS ) { aPostfix = rS; }
+
+ const SvxBrushItem* GetGrfBrush() const { return pGrfBrush; }
+ const SwFmtVertOrient* GetGrfOrient() const { return pVertOrient; }
+ const Size& GetGrfSize() const { return aGrfSize; }
+ void SetGrfBrush( const SvxBrushItem* pGrfBr, const Size* pSz,
+ const SwFmtVertOrient* pVOrient );
+ void SetGraphic( const String& rName );
+ // Graphic ggfs. reinswappen
+ const Graphic* GetGraphic() const;
+ // kann fuer das Format ein Text erzeugt werden?
+ inline BOOL IsTxtFmt() const;
+};
+
+
+enum SwNumRuleType { OUTLINE_RULE = 0, NUM_RULE = 1, RULE_END = 2 };
+class SwNumRule
+{
+ friend void _FinitCore();
+
+ static SwNumFmt* aBaseFmts [ RULE_END ][ MAXLEVEL ];
+ static USHORT aDefNumIndents[ MAXLEVEL ];
+ static USHORT nRefCount;
+ static Font* pDefBulletFont;
+ static char* pDefOutlineName;
+
+ SwNumFmt* aFmts[ MAXLEVEL ];
+ String sName;
+ SwNumRuleType eRuleType;
+ USHORT nPoolFmtId; // Id-fuer "automatich" erzeugte NumRules
+ USHORT nPoolHelpId; // HelpId fuer diese Pool-Vorlage
+ BYTE nPoolHlpFileId; // FilePos ans Doc auf die Vorlagen-Hilfen
+ BOOL bAutoRuleFlag : 1;
+ BOOL bInvalidRuleFlag : 1;
+ BOOL bContinusNum : 1; // Fortlaufende Numerierung - ohne Ebenen
+ BOOL bAbsSpaces : 1; // die Ebenen repraesentieren absol. Einzuege
+
+ static void _MakeDefBulletFont();
+
+public:
+ SwNumRule( const String& rNm, SwNumRuleType = NUM_RULE,
+ BOOL bAutoFlg = TRUE );
+
+ SwNumRule( const SwNumRule& );
+ ~SwNumRule();
+
+ SwNumRule& operator=( const SwNumRule& );
+ BOOL operator==( const SwNumRule& ) const;
+ BOOL operator!=( const SwNumRule& r ) const { return !(*this == r); }
+
+ inline const SwNumFmt* GetNumFmt( USHORT i ) const;
+ inline const SwNumFmt& Get( USHORT i ) const;
+ void Set( USHORT i, const SwNumFmt* );
+ void Set( USHORT i, const SwNumFmt& );
+
+ String MakeNumString( const SwNodeNum&, BOOL bInclStrings = TRUE,
+ BOOL bOnlyArabic = FALSE ) const;
+
+ inline unsigned char GetBulletChar( const SwNodeNum& ) const;
+ inline const Font* GetBulletFont( const SwNodeNum& ) const;
+ static inline const Font& GetDefBulletFont();
+
+ static char* GetOutlineRuleName() { return pDefOutlineName; }
+
+ static inline USHORT GetNumIndent( BYTE nLvl );
+ static inline USHORT GetBullIndent( BYTE nLvl );
+
+ SwNumRuleType GetRuleType() const { return eRuleType; }
+ void SetRuleType( SwNumRuleType eNew ) { eRuleType = eNew;
+ bInvalidRuleFlag = TRUE; }
+
+ // eine Art Copy-Constructor, damit die Num-Formate auch an den
+ // richtigen CharFormaten eines Dokumentes haengen !!
+ // (Kopiert die NumFormate und returnt sich selbst)
+ SwNumRule& CopyNumRule( SwDoc*, const SwNumRule& );
+
+ // testet ob die CharFormate aus dem angegeben Doc sind und kopiert
+ // die gegebenfalls
+ void CheckCharFmts( SwDoc* pDoc );
+
+ // test ob der Einzug von dieser Numerierung kommt.
+ BOOL IsRuleLSpace( SwTxtNode& rNd ) const;
+
+ const String& GetName() const { return sName; }
+ void SetName( const String& rNm ) { sName = rNm; }
+
+ BOOL IsAutoRule() const { return bAutoRuleFlag; }
+ void SetAutoRule( BOOL bFlag ) { bAutoRuleFlag = bFlag; }
+
+ BOOL IsInvalidRule() const { return bInvalidRuleFlag; }
+ void SetInvalidRule( BOOL bFlag ) { bInvalidRuleFlag = bFlag; }
+
+ BOOL IsContinusNum() const { return bContinusNum; }
+ void SetContinusNum( BOOL bFlag ) { bContinusNum = bFlag; }
+
+ BOOL IsAbsSpaces() const { return bAbsSpaces; }
+ void SetAbsSpaces( BOOL bFlag ) { bAbsSpaces = bFlag; }
+
+ // erfragen und setzen der Poolvorlagen-Id's
+ USHORT GetPoolFmtId() const { return nPoolFmtId; }
+ void SetPoolFmtId( USHORT nId ) { nPoolFmtId = nId; }
+
+ // erfragen und setzen der Hilfe-Id's fuer die Document-Vorlagen
+ USHORT GetPoolHelpId() const { return nPoolHelpId; }
+ void SetPoolHelpId( USHORT nId ) { nPoolHelpId = nId; }
+ BYTE GetPoolHlpFileId() const { return nPoolHlpFileId; }
+ void SetPoolHlpFileId( BYTE nId ) { nPoolHlpFileId = nId; }
+
+ void SetSvxRule(const SvxNumRule&, SwDoc* pDoc);
+ SvxNumRule MakeSvxNumRule() const;
+};
+
+
+class SwNodeNum
+{
+ USHORT nLevelVal[ MAXLEVEL ]; // Nummern aller Levels
+ USHORT nSetValue; // vorgegeben Nummer
+ BYTE nMyLevel; // akt. Level
+ BOOL bStartNum; // Numerierung neu starten
+
+public:
+ inline SwNodeNum( BYTE nLevel = NO_NUM, USHORT nSetVal = USHRT_MAX );
+ inline SwNodeNum& operator=( const SwNodeNum& rCpy );
+
+ BOOL operator==( const SwNodeNum& ) const;
+
+ BYTE GetLevel() const { return nMyLevel; }
+ void SetLevel( BYTE nVal ) { nMyLevel = nVal; }
+
+ BOOL IsStart() const { return bStartNum; }
+ void SetStart( BOOL bFlag = TRUE ) { bStartNum = bFlag; }
+
+ USHORT GetSetValue() const { return nSetValue; }
+ void SetSetValue( USHORT nVal ) { nSetValue = nVal; }
+
+ const USHORT* GetLevelVal() const { return nLevelVal; }
+ USHORT* GetLevelVal() { return nLevelVal; }
+};
+
+
+
+
+// ------------ inline Methoden ----------------------------
+
+inline BOOL SwNumFmt::IsTxtFmt() const
+{
+ return SVX_NUM_NUMBER_NONE != eType &&
+ SVX_NUM_CHAR_SPECIAL != eType &&
+ SVX_NUM_BITMAP != eType;
+}
+
+inline const SwNumFmt& SwNumRule::Get( USHORT i ) const
+{
+ ASSERT_ID( i < MAXLEVEL && eRuleType < RULE_END, ERR_NUMLEVEL);
+ return aFmts[ i ] ? *aFmts[ i ]
+ : *aBaseFmts[ eRuleType ][ i ];
+}
+
+inline const SwNumFmt* SwNumRule::GetNumFmt( USHORT i ) const
+{
+ ASSERT_ID( i < MAXLEVEL && eRuleType < RULE_END, ERR_NUMLEVEL);
+ return aFmts[ i ];
+}
+
+inline const Font& SwNumRule::GetDefBulletFont()
+{
+ if( !pDefBulletFont )
+ SwNumRule::_MakeDefBulletFont();
+ return *pDefBulletFont;
+}
+
+inline USHORT SwNumRule::GetNumIndent( BYTE nLvl )
+{
+ ASSERT( MAXLEVEL > nLvl, "NumLevel is out of range" );
+ return aDefNumIndents[ nLvl ];
+}
+inline USHORT SwNumRule::GetBullIndent( BYTE nLvl )
+{
+ ASSERT( MAXLEVEL > nLvl, "NumLevel is out of range" );
+ return aDefNumIndents[ nLvl ];
+}
+
+inline unsigned char SwNumRule::GetBulletChar( const SwNodeNum& rNum ) const
+{
+ return Get( rNum.GetLevel() & ~NO_NUMLEVEL ).GetBulletChar();
+}
+inline const Font* SwNumRule::GetBulletFont( const SwNodeNum& rNum ) const
+{
+ return Get( rNum.GetLevel() & ~NO_NUMLEVEL ).GetBulletFont();
+}
+
+
+
+SwNodeNum::SwNodeNum( BYTE nLevel, USHORT nSetVal )
+ : nMyLevel( nLevel ), nSetValue( nSetVal ), bStartNum( FALSE )
+{
+ memset( nLevelVal, 0, sizeof( nLevelVal ) );
+}
+
+inline SwNodeNum& SwNodeNum::operator=( const SwNodeNum& rCpy )
+{
+ nSetValue = rCpy.nSetValue;
+ nMyLevel = rCpy.nMyLevel;
+ bStartNum = rCpy.bStartNum;
+
+ memcpy( nLevelVal, rCpy.nLevelVal, sizeof( nLevelVal ) );
+ return *this;
+}
+
+
+#endif // _NUMRULE_HXX
diff --git a/sw/inc/pagedesc.hxx b/sw/inc/pagedesc.hxx
new file mode 100644
index 000000000000..4684ceb4ec79
--- /dev/null
+++ b/sw/inc/pagedesc.hxx
@@ -0,0 +1,348 @@
+/*************************************************************************
+ *
+ * $RCSfile: pagedesc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _PAGEDESC_HXX
+#define _PAGEDESC_HXX
+
+#ifndef _FRACT_HXX
+#include <tools/fract.hxx>
+#endif
+
+#ifndef _TOOLS_COLOR_HXX
+#include <tools/color.hxx>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx> //fuer SwTwips
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+
+class SfxPoolItem;
+class SwTxtFmtColl;
+class SwNode;
+
+//Adjustierung der Trennlinie.
+enum SwFtnAdj
+{
+ FTNADJ_LEFT,
+ FTNADJ_CENTER,
+ FTNADJ_RIGHT
+};
+
+//Fussnoteninformationen
+class SwPageFtnInfo
+{
+ SwTwips nMaxHeight; //Maximalraum auf der Seite.
+// Pen aPen; //Pen fuer Trennstrich.
+ ULONG nLineWidth; //width of separator line
+ Color aLineColor; //color of the separator line
+ Fraction aWidth; //Prozentuale Breite des Trennstriches.
+ SwFtnAdj eAdj; //Ausrichtung des Trennstriches.
+ SwTwips nTopDist; //Abstand zwischen Body und Trennstrich.
+ SwTwips nBottomDist; //Abstand zwischen Trennstrich und 1. Fussnote.
+public:
+ SwTwips GetHeight() const { return nMaxHeight; }
+ ULONG GetLineWidth() const { return nLineWidth; }
+ const Color& GetLineColor() const { return aLineColor;}
+// const Pen& GetPen() const { return aPen; }
+ const Fraction& GetWidth() const { return aWidth; }
+ SwFtnAdj GetAdj() const { return eAdj; }
+ SwTwips GetTopDist()const { return nTopDist; }
+ SwTwips GetBottomDist() const { return nBottomDist; }
+
+ void SetHeight( SwTwips nNew ) { nMaxHeight = nNew; }
+// void SetPen ( const Pen& rNew ) { aPen = rNew; }
+ void SetLineWidth(ULONG nSet ) { nLineWidth = nSet; }
+ void SetLineColor(const Color& rCol ) { aLineColor = rCol;}
+ void SetWidth( const Fraction &rNew){ aWidth = rNew; }
+ void SetAdj ( SwFtnAdj eNew ) { eAdj = eNew; }
+ void SetTopDist ( SwTwips nNew ) { nTopDist = nNew; }
+ void SetBottomDist( SwTwips nNew ) { nBottomDist = nNew; }
+
+ SwPageFtnInfo();
+ SwPageFtnInfo( const SwPageFtnInfo& );
+ SwPageFtnInfo& operator=( const SwPageFtnInfo& );
+
+ BOOL operator ==( const SwPageFtnInfo& ) const;
+};
+
+/*
+ * Verwendung des UseOnPage (eUse) und der FrmFmt'e
+ *
+ * RIGHT - aMaster nur fuer rechte Seiten, linke Seiten immer leer.
+ * LEFT - aLeft fuer linke Seiten, rechte Seiten immer leer.
+ * aLeft ist eine Kopie des Master.
+ * ALL - aMaster fuer rechte Seiten, aLeft fuer Linke Seiten.
+ * aLeft ist eine Kopie des Master.
+ * MIRROR - aMaster fuer rechte Seiten, aLeft fuer linke Seiten.
+ * aLeft ist eine Kopie des Master, Raender sind gespiegelt.
+ *
+ * UI dreht auschliesslich am Master! aLeft wird beim Chg am Dokument
+ * enstprechend dem eUse eingestellt.
+ *
+ * Damit es die Filter etwas einfacher haben werden weitere Werte im
+ * eUse untergebracht:
+ *
+ * HEADERSHARE - Headerinhalt auf beiden Seiten gleich
+ * FOOTERSHARE - Footerinhalt auf beiden Seiten gleich
+ *
+ * Die Werte werden bei den entsprechenden Get-/Set-Methden ausmaskiert.
+ * Zugriff auf das volle eUse inclusive der Header-Footer information
+ * per ReadUseOn(), WriteUseOn() (fuer Filter und CopyCTor)!
+ *
+ * Die FrmFormate fuer Header/Footer werden anhand der Attribute fuer
+ * Header/Footer vom UI am Master eingestellt (Hoehe, Raender, Hintergrund...);
+ * Header/Footer fuer die Linke Seite werden entsprechen kopiert bzw.
+ * gespielt (Chg am Dokument).
+ * Das jew. Attribut fuer den Inhalt wird automatisch beim Chg am
+ * Dokument versorgt (entsprechen den SHARE-informationen werden Inhalte
+ * erzeugt bzw. entfernt).
+ *
+ */
+
+enum UseOnPage
+{ PD_NONE = 0x0000, //for internal use only.
+ PD_LEFT = 0x0001,
+ PD_RIGHT = 0x0002,
+ PD_ALL = 0x0003,
+ PD_MIRROR = 0x0007,
+ PD_HEADERSHARE = 0x0040,
+ PD_FOOTERSHARE = 0x0080,
+ PD_NOHEADERSHARE = 0x00BF, //for internal use only
+ PD_NOFOOTERSHARE = 0x007F //for internal use only
+};
+
+class SwPageDesc : public SwModify
+{
+ friend class SwDoc;
+
+ //nicht (mehr) implementiert.
+ SwPageDesc& operator=( const SwPageDesc& );
+
+ String aDescName;
+ SwNumType aNumType;
+ SwFrmFmt aMaster;
+ SwFrmFmt aLeft;
+ SwDepend aDepend; // wg. Registerhaltigkeit
+ SwPageDesc *pFollow;
+ USHORT nRegHeight; // Zeilenabstand und Fontascent der Vorlage
+ USHORT nRegAscent; // fuer die Registerhaltigkeit
+ UseOnPage eUse;
+ BOOL bLandscape;
+
+ //Fussnoteninformationen
+ SwPageFtnInfo aFtnInfo;
+
+ //Wird zum Spiegeln vom Chg (Doc) gerufen.
+ //Kein Abgleich an anderer Stelle.
+ void Mirror();
+
+ SwPageDesc(const String&, SwFrmFmt*, SwDoc *pDc );
+public:
+ const String &GetName() const { return aDescName; }
+ void SetName( const String& rNewName ) { aDescName = rNewName; }
+
+ BOOL GetLandscape() const { return bLandscape; }
+ void SetLandscape( BOOL bNew ) { bLandscape = bNew; }
+
+ const SwNumType &GetNumType() const { return aNumType; }
+ void SetNumType( const SwNumType& rNew ) { aNumType = rNew; }
+
+ const SwPageFtnInfo &GetFtnInfo() const { return aFtnInfo; }
+ SwPageFtnInfo &GetFtnInfo() { return aFtnInfo; }
+ void SetFtnInfo( const SwPageFtnInfo &rNew ) { aFtnInfo = rNew; }
+
+ inline BOOL IsHeaderShared() const;
+ inline BOOL IsFooterShared() const;
+ inline void ChgHeaderShare( BOOL bNew );
+ inline void ChgFooterShare( BOOL bNew );
+
+ inline void SetUseOn( UseOnPage eNew );
+ inline UseOnPage GetUseOn() const;
+
+ void WriteUseOn( UseOnPage eNew ) { eUse = eNew; }
+ UseOnPage ReadUseOn () const { return eUse; }
+
+ SwFrmFmt &GetMaster() { return aMaster; }
+ SwFrmFmt &GetLeft() { return aLeft; }
+ const SwFrmFmt &GetMaster() const { return aMaster; }
+ const SwFrmFmt &GetLeft() const { return aLeft; }
+
+ //Mit den folgenden Methoden besorgt sich das Layout ein Format
+ //um eine Seite erzeugen zu koennen
+ inline SwFrmFmt *GetRightFmt();
+ inline const SwFrmFmt *GetRightFmt() const;
+ inline SwFrmFmt *GetLeftFmt();
+ inline const SwFrmFmt *GetLeftFmt() const;
+
+ USHORT GetRegHeight() const { return nRegHeight; }
+ USHORT GetRegAscent() const { return nRegAscent; }
+ void SetRegHeight( USHORT nNew ){ nRegHeight = nNew; }
+ void SetRegAscent( USHORT nNew ){ nRegAscent = nNew; }
+
+ inline void SetFollow( const SwPageDesc* pNew );
+ const SwPageDesc* GetFollow() const { return pFollow; }
+ SwPageDesc* GetFollow() { return pFollow; }
+
+ void SetRegisterFmtColl( const SwTxtFmtColl* rFmt );
+ const SwTxtFmtColl* GetRegisterFmtColl() const;
+ virtual void Modify( SfxPoolItem *pOldValue, SfxPoolItem *pNewValue );
+ void RegisterChange();
+
+ // erfragen und setzen der PoolFormat-Id
+ USHORT GetPoolFmtId() const { return aMaster.GetPoolFmtId(); }
+ void SetPoolFmtId( USHORT nId ) { aMaster.SetPoolFmtId( nId ); }
+ USHORT GetPoolHelpId() const { return aMaster.GetPoolHelpId(); }
+ void SetPoolHelpId( USHORT nId ) { aMaster.SetPoolHelpId( nId ); }
+ BYTE GetPoolHlpFileId() const { return aMaster.GetPoolHlpFileId(); }
+ void SetPoolHlpFileId( BYTE nId ) { aMaster.SetPoolHlpFileId( nId ); }
+ // erfrage die Attribut-Beschreibung, returnt den reingereichten String
+ void GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String &rText ) const;
+
+ // erfrage vom Client Informationen
+ virtual BOOL GetInfo( SfxPoolItem& ) const;
+
+ const SwFrmFmt* GetPageFmtOfNode( const SwNode& rNd,
+ BOOL bCheckForThisPgDc = TRUE ) const;
+ BOOL IsFollowNextPageOfNode( const SwNode& rNd ) const;
+
+ SwPageDesc( const SwPageDesc& );
+ ~SwPageDesc();
+};
+
+inline void SwPageDesc::SetFollow( const SwPageDesc* pNew )
+{
+ pFollow = pNew ? (SwPageDesc*)pNew : this;
+}
+
+inline BOOL SwPageDesc::IsHeaderShared() const
+{
+ return eUse & PD_HEADERSHARE ? TRUE : FALSE;
+}
+inline BOOL SwPageDesc::IsFooterShared() const
+{
+ return eUse & PD_FOOTERSHARE ? TRUE : FALSE;
+}
+inline void SwPageDesc::ChgHeaderShare( BOOL bNew )
+{
+ if ( bNew )
+ eUse = (UseOnPage) (eUse | PD_HEADERSHARE);
+ // (USHORT&)eUse |= (USHORT)PD_HEADERSHARE;
+ else
+ eUse = (UseOnPage) (eUse & PD_NOHEADERSHARE);
+ // (USHORT&)eUse &= (USHORT)PD_NOHEADERSHARE;
+}
+inline void SwPageDesc::ChgFooterShare( BOOL bNew )
+{
+ if ( bNew )
+ eUse = (UseOnPage) (eUse | PD_FOOTERSHARE);
+ // (USHORT&)eUse |= (USHORT)PD_FOOTERSHARE;
+ else
+ eUse = (UseOnPage) (eUse & PD_NOFOOTERSHARE);
+ // (USHORT&)eUse &= (USHORT)PD_NOFOOTERSHARE;
+}
+inline void SwPageDesc::SetUseOn( UseOnPage eNew )
+{
+ UseOnPage eTmp = PD_NONE;
+ if ( eUse & PD_HEADERSHARE )
+ eTmp = PD_HEADERSHARE;
+ // (USHORT&)eTmp |= (USHORT)PD_HEADERSHARE;
+ if ( eUse & PD_FOOTERSHARE )
+ eTmp = (UseOnPage) (eTmp | PD_FOOTERSHARE);
+ // (USHORT&)eTmp |= (USHORT)PD_FOOTERSHARE;
+ eUse = (UseOnPage) (eTmp | eNew);
+ // (USHORT&)eUse = eTmp | eNew;
+}
+inline UseOnPage SwPageDesc::GetUseOn() const
+{
+ UseOnPage eRet = eUse;
+ eRet = (UseOnPage) (eRet & PD_NOHEADERSHARE);
+ // (USHORT&)eRet &= (USHORT)PD_NOHEADERSHARE;
+ eRet = (UseOnPage) (eRet & PD_NOFOOTERSHARE);
+ // (USHORT&)eRet &= (USHORT)PD_NOFOOTERSHARE;
+ return eRet;
+}
+
+inline SwFrmFmt *SwPageDesc::GetRightFmt()
+{
+ return PD_RIGHT & eUse ? &aMaster : 0;
+}
+inline const SwFrmFmt *SwPageDesc::GetRightFmt() const
+{
+ return PD_RIGHT & eUse ? &aMaster : 0;
+}
+inline SwFrmFmt *SwPageDesc::GetLeftFmt()
+{
+ return PD_LEFT & eUse ? &aLeft : 0;
+}
+inline const SwFrmFmt *SwPageDesc::GetLeftFmt() const
+{
+ return PD_LEFT & eUse ? &aLeft : 0;
+}
+
+#endif //_PAGEDESC_HXX
diff --git a/sw/inc/pageiter.hxx b/sw/inc/pageiter.hxx
new file mode 100644
index 000000000000..bc6c8a57ba29
--- /dev/null
+++ b/sw/inc/pageiter.hxx
@@ -0,0 +1,89 @@
+/*************************************************************************
+ *
+ * $RCSfile: pageiter.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _PAGEITER_HXX
+#define _PAGEITER_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class SwDoc;
+class SwPageFrm;
+struct SwPosition;
+class SwPageDesc;
+
+class SwPageIter {
+ const SwDoc &rPDoc;
+ const SwPageFrm *pPage;
+
+public:
+ SwPageIter( const SwDoc &rDoc, const SwPosition &rStartPos );
+
+ BOOL IsEnd() const { return 0 == pPage; }
+ BOOL NextPage();
+ const SwPageDesc* GetPageDesc() const;
+ BOOL Seek( const SwPosition &rPos );
+ BOOL GetPosition( SwPosition &rPos ) const;
+};
+
+
+#endif
+
diff --git a/sw/inc/pam.hxx b/sw/inc/pam.hxx
new file mode 100644
index 000000000000..c0959fb3f235
--- /dev/null
+++ b/sw/inc/pam.hxx
@@ -0,0 +1,269 @@
+/*************************************************************************
+ *
+ * $RCSfile: pam.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _PAM_HXX
+#define _PAM_HXX
+
+#include <stddef.h> // fuer MemPool
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+#ifndef _SVMEMPOOL_HXX //autogen
+#include <tools/mempool.hxx>
+#endif
+
+#ifndef _CSHTYP_HXX
+#include <cshtyp.hxx> // fuer die Funktions-Definitionen
+#endif
+#ifndef _RING_HXX
+#include <ring.hxx> // Superklasse
+#endif
+#ifndef _INDEX_HXX
+#include <index.hxx> // fuer SwIndex
+#endif
+#ifndef _NDINDEX_HXX
+#include <ndindex.hxx> // fuer SwNodeIndex
+#endif
+
+
+class SwFmt;
+class SfxPoolItem;
+class SfxItemSet;
+class SwDoc;
+class SwNode;
+class SwCntntNode;
+class SearchParam;
+class SearchText;
+class SwNodes;
+class SwPaM;
+
+
+struct SwPosition
+{
+ SwNodeIndex nNode;
+ SwIndex nContent;
+
+ SwPosition( const SwNode& rNode );
+ SwPosition( const SwNodeIndex &rNode );
+ SwPosition( const SwNodeIndex &rNode, const SwIndex &rCntnt );
+ SwPosition( const SwPosition & );
+
+ SwPosition &operator=(const SwPosition &);
+
+ FASTBOOL operator < (const SwPosition &) const;
+ FASTBOOL operator > (const SwPosition &) const;
+ FASTBOOL operator <=(const SwPosition &) const;
+ FASTBOOL operator >=(const SwPosition &) const;
+ FASTBOOL operator ==(const SwPosition &) const;
+ FASTBOOL operator !=(const SwPosition &) const;
+};
+
+
+// das Ergebnis eines Positions Vergleiches
+enum SwComparePosition {
+ POS_BEFORE, // Pos1 liegt vor Pos2
+ POS_BEHIND, // Pos1 liegt hinter Pos2
+ POS_INSIDE, // Pos1 liegt vollstaendig in Pos2
+ POS_OUTSIDE, // Pos2 liegt vollstaendig in Pos1
+ POS_EQUAL, // Pos1 ist genauso gross wie Pos2
+ POS_OVERLAP_BEFORE, // Pos1 ueberlappt Pos2 am Anfang
+ POS_OVERLAP_BEHIND // Pos1 ueberlappt Pos2 am Ende
+};
+SwComparePosition ComparePosition(
+ const SwPosition& rStt1, const SwPosition& rEnd1,
+ const SwPosition& rStt2, const SwPosition& rEnd2 );
+
+
+// SwPointAndMark / SwPaM
+struct SwMoveFnCollection;
+typedef SwMoveFnCollection* SwMoveFn;
+extern SwMoveFn fnMoveForward, fnMoveBackward;
+
+typedef FASTBOOL (*SwGoInDoc)( SwPaM& rPam, SwMoveFn fnMove );
+extern SwGoInDoc fnGoDoc, fnGoSection, fnGoNode, fnGoCntnt;
+
+void _InitPam();
+
+class SwPaM : public Ring
+{
+ friend class SwTxtFrm;
+ friend FASTBOOL GoInDoc( SwPaM&, SwMoveFn );
+ friend FASTBOOL GoInNode( SwPaM&, SwMoveFn );
+ friend FASTBOOL GoInCntnt( SwPaM&, SwMoveFn );
+ friend FASTBOOL GoPrevPara( SwPaM&, SwPosPara );
+ friend FASTBOOL GoCurrPara( SwPaM&, SwPosPara );
+ friend FASTBOOL GoNextPara( SwPaM&, SwPosPara );
+ friend FASTBOOL GoPrevSection( SwPaM&, SwPosSection );
+ friend FASTBOOL GoCurrSection( SwPaM&, SwPosSection );
+ friend FASTBOOL GoNextSection( SwPaM&, SwPosSection );
+
+ SwPosition aBound1;
+ SwPosition aBound2;
+ SwPosition *pPoint;
+ SwPosition *pMark;
+
+ SwPaM* MakeRegion( SwMoveFn fnMove, const SwPaM * pOrigRg = 0 );
+
+public:
+ SwPaM( const SwPosition& rPos, SwPaM* pRing = 0 );
+ SwPaM( const SwPosition& rMk, const SwPosition& rPt, SwPaM* pRing = 0 );
+ SwPaM( SwPaM & );
+ SwPaM( const SwNodeIndex& rMk, const SwNodeIndex& rPt,
+ long nMkOffset = 0, long nPtOffset = 0, SwPaM* pRing = 0 );
+ SwPaM( const SwNode& rMk, const SwNode& rPt,
+ long nMkOffset = 0, long nPtOffset = 0, SwPaM* pRing = 0 );
+ SwPaM( const SwNodeIndex& rMk, xub_StrLen nMkCntnt,
+ const SwNodeIndex& rPt, xub_StrLen nPtCntnt, SwPaM* pRing = 0 );
+ SwPaM( const SwNode& rMk, xub_StrLen nMkCntnt,
+ const SwNode& rPt, xub_StrLen nPtCntnt, SwPaM* pRing = 0 );
+ SwPaM( const SwNode& rNd, xub_StrLen nCntnt = 0, SwPaM* pRing = 0 );
+ SwPaM( const SwNodeIndex& rNd, xub_StrLen nCntnt = 0, SwPaM* pRing = 0 );
+ virtual ~SwPaM();
+
+ // Bewegen des Cursors
+ FASTBOOL Move( SwMoveFn fnMove = fnMoveForward,
+ SwGoInDoc fnGo = fnGoCntnt );
+
+ // Suchen
+ BYTE Find( const SearchParam& rParam, SearchText& rSTxt,
+ SwMoveFn fnMove = fnMoveForward,
+ const SwPaM *pPam =0, FASTBOOL bInReadOnly = FALSE);
+ FASTBOOL Find( const SwFmt& rFmt,
+ SwMoveFn fnMove = fnMoveForward,
+ const SwPaM *pPam =0, FASTBOOL bInReadOnly = FALSE);
+ FASTBOOL Find( const SfxPoolItem& rAttr, FASTBOOL bValue = TRUE,
+ SwMoveFn fnMove = fnMoveForward,
+ const SwPaM *pPam =0, FASTBOOL bInReadOnly = FALSE );
+ FASTBOOL Find( const SfxItemSet& rAttr, FASTBOOL bNoColls = FALSE,
+ SwMoveFn fnMove = fnMoveForward,
+ const SwPaM *pPam =0, FASTBOOL bInReadOnly = FALSE );
+
+ virtual void SetMark();
+ void DeleteMark() { pMark = pPoint; }
+#ifdef PRODUCT
+ void Exchange()
+ {
+ if(pPoint != pMark)
+ {
+ SwPosition *pTmp = pPoint;
+ pPoint = pMark;
+ pMark = pTmp;
+ }
+ }
+#else
+ void Exchange();
+#endif
+ /*
+ * Undokumented Feature: Liefert zurueck, ob das Pam ueber
+ * eine Selektion verfuegt oder nicht. Definition einer
+ * Selektion: Point und Mark zeigen auf unterschiedliche
+ * Puffer.
+ */
+ FASTBOOL HasMark() const { return pPoint == pMark? FALSE : TRUE; }
+
+ const SwPosition *GetPoint() const { return pPoint; }
+ SwPosition *GetPoint() { return pPoint; }
+ const SwPosition *GetMark() const { return pMark; }
+ SwPosition *GetMark() { return pMark; }
+
+ const SwPosition *Start() const
+ { return (*pPoint) <= (*pMark)? pPoint: pMark; }
+ SwPosition *Start()
+ { return (*pPoint) <= (*pMark)? pPoint: pMark; }
+ const SwPosition *End() const
+ { return (*pPoint) > (*pMark)? pPoint: pMark; }
+ SwPosition *End()
+ { return (*pPoint) > (*pMark)? pPoint: pMark; }
+
+ SwPaM& operator=( SwPaM & );
+
+ // erfrage vom SwPaM den aktuellen Node/ContentNode am SPoint / Mark
+ SwNode* GetNode( BOOL bPoint = TRUE ) const
+ {
+ return &( bPoint ? pPoint->nNode : pMark->nNode ).GetNode();
+ }
+ SwCntntNode* GetCntntNode( BOOL bPoint = TRUE ) const
+ {
+ return ( bPoint ? pPoint->nNode : pMark->nNode ).GetNode().GetCntntNode();
+ }
+
+ // erfrage vom SwPaM das Dokument, in dem er angemeldet ist
+ SwDoc* GetDoc() const { return pPoint->nNode.GetNode().GetDoc(); }
+ SwPosition& GetBound( BOOL bOne = TRUE )
+ { return bOne ? aBound1 : aBound2; }
+ const SwPosition& GetBound( BOOL bOne = TRUE ) const
+ { return bOne ? aBound1 : aBound2; }
+
+ // erfrage die Seitennummer auf der der Cursor steht
+ USHORT GetPageNum( BOOL bAtPoint = TRUE, const Point* pLayPos = 0 );
+
+ // steht in etwas geschuetztem oder in die Selektion umspannt
+ // etwas geschuetztes.
+ FASTBOOL HasReadonlySel() const;
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwPaM)
+};
+
+
+FASTBOOL CheckNodesRange( const SwNodeIndex&, const SwNodeIndex&, FASTBOOL );
+FASTBOOL GoInCntnt( SwPaM & rPam, SwMoveFn fnMove );
+
+
+#endif // _PAM_HXX
diff --git a/sw/inc/paratr.hxx b/sw/inc/paratr.hxx
new file mode 100644
index 000000000000..28fd5634e148
--- /dev/null
+++ b/sw/inc/paratr.hxx
@@ -0,0 +1,285 @@
+/*************************************************************************
+ *
+ * $RCSfile: paratr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _PARATR_HXX
+#define _PARATR_HXX
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#include "hintids.hxx"
+#include "calbck.hxx"
+#include "swatrset.hxx"
+#include "format.hxx"
+#include "swtypes.hxx"
+
+class SwCharFmt;
+class International;
+
+/*************************************************************************
+|* class SwFmtDrop
+*************************************************************************/
+
+#define DROP_WHOLEWORD ((USHORT)0x0001)
+
+//Wenn ein SwFmtDrop Client ist, so ist dies das CharFmt welches den Font fuer
+//die DropCaps beschreibt. Ist es kein Client, so wird von der Formatierung
+//das CharFmt des Absatzes benutzt.
+//Wird das CharFmt verandert, so wird diese Aenderung ueber das Modify des
+//SwFmtDrop an die Absatze propagiert.
+class SwFmtDrop: public SfxPoolItem, public SwClient
+{
+ SwModify* pDefinedIn; // Modify-Object, in dem der DropCaps steht
+ // kann nur TxtFmtCollection/TxtNode sein
+ USHORT nDistance; // Abstand zum Textbeginn
+ USHORT nReadFmt; // fuer den Sw3-Reader: CharFormat-Id (Pool laden!)
+ BYTE nLines; // Anzahl der Zeilen
+ BYTE nChars; // Anzahl der Zeichen
+ BOOL bWholeWord; // Erstes Wort als Initialen
+public:
+ TYPEINFO(); //Bereits in der Basisklasse SwClient
+
+ SwFmtDrop();
+ SwFmtDrop( const SwFmtDrop & );
+ ~SwFmtDrop();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0) 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 );
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+
+ inline BYTE GetLines() const { return nLines; }
+ inline BYTE &GetLines() { return nLines; }
+
+ inline BYTE GetChars() const { return nChars; }
+ inline BYTE &GetChars() { return nChars; }
+
+ inline BOOL GetWholeWord() const { return bWholeWord; }
+ inline BYTE &GetWholeWord() { return bWholeWord; }
+
+ inline USHORT GetDistance() const { return nDistance; }
+ inline USHORT &GetDistance() { return nDistance; }
+
+ // fuer den Sw3-Reader: CharFormat-Id (Pool laden!)
+ inline USHORT GetReadFmt() const { return nReadFmt; }
+ inline void SetReadFmt( USHORT n ) { nReadFmt = n; }
+
+ inline const SwCharFmt *GetCharFmt() const { return (SwCharFmt*)pRegisteredIn; }
+ inline SwCharFmt *GetCharFmt() { return (SwCharFmt*)pRegisteredIn; }
+ void SetCharFmt( SwCharFmt *pNew );
+ virtual void Modify( SfxPoolItem*, SfxPoolItem* );
+ // erfrage vom Client Informationen
+ virtual BOOL GetInfo( SfxPoolItem& ) const;
+
+ // erfrage und setze den Modify-Pointer
+ inline const SwModify* GetDefinedIn() const { return pDefinedIn; }
+ inline void ChgDefinedIn( const SwModify* pNew )
+ { pDefinedIn = (SwModify*)pNew; }
+
+ // this item must be ignored while comparing item sets during XML export
+ virtual BOOL equalsXML( const SfxPoolItem& ) const;
+};
+
+class SwRegisterItem : public SfxBoolItem
+{
+public:
+ TYPEINFO();
+
+ inline SwRegisterItem( const BOOL bRegister = FALSE );
+ inline SwRegisterItem& operator=( const SwRegisterItem& rRegister );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream&, USHORT ) const;
+ virtual SvStream& Store( SvStream&, USHORT nIVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+
+ virtual BOOL importXML( const NAMESPACE_RTL(OUString)& rValue,USHORT,
+ const SvXMLUnitConverter& rUnitConv );
+ virtual BOOL exportXML( NAMESPACE_RTL(OUString)& rValue, USHORT,
+ const SvXMLUnitConverter& rUnitConv ) const;
+};
+
+inline SwRegisterItem::SwRegisterItem( const BOOL bRegister ) :
+ SfxBoolItem( RES_PARATR_REGISTER, bRegister )
+{}
+
+inline SwRegisterItem& SwRegisterItem::operator=(
+ const SwRegisterItem& rRegister )
+{
+ SetValue( rRegister.GetValue() );
+ return *this;
+}
+
+class SwNumRuleItem : public SfxStringItem
+{
+ SwModify* pDefinedIn; // Modify-Object, in dem das NumRule steht
+ // kann nur TxtFmtCollection/TxtNode sein
+public:
+ TYPEINFO();
+
+ SwNumRuleItem()
+ : SfxStringItem( RES_PARATR_NUMRULE, aEmptyStr ), pDefinedIn(0) {}
+
+ SwNumRuleItem( const String& rRuleName )
+ : SfxStringItem( RES_PARATR_NUMRULE, rRuleName ), pDefinedIn(0) {}
+
+ SwNumRuleItem( const SwNumRuleItem& rCpy )
+ : SfxStringItem( RES_PARATR_NUMRULE, rCpy.GetValue() ), pDefinedIn(0) {}
+
+
+ SwNumRuleItem& operator=( const SwNumRuleItem& rCpy )
+ { SetValue( rCpy.GetValue() ); pDefinedIn=0; return *this; }
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream&, USHORT ) const;
+ virtual SvStream& Store( SvStream&, USHORT nIVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId );
+
+ // this item must be ignored while comparing item sets during XML export
+ virtual BOOL equalsXML( const SfxPoolItem& ) const;
+
+ // erfrage und setze den Modify-Pointer
+ inline const SwModify* GetDefinedIn() const { return pDefinedIn; }
+ inline void ChgDefinedIn( const SwModify* pNew )
+ { pDefinedIn = (SwModify*)pNew; }
+};
+
+
+
+/******************************************************************************
+ * Implementierung der Paragraph-Attribut Methoden vom SwAttrSet
+ ******************************************************************************/
+
+inline const SvxLineSpacingItem &SwAttrSet::GetLineSpacing(BOOL bInP) const
+ { return (const SvxLineSpacingItem&)Get( RES_PARATR_LINESPACING,bInP); }
+inline const SvxAdjustItem &SwAttrSet::GetAdjust(BOOL bInP) const
+ { return (const SvxAdjustItem&)Get( RES_PARATR_ADJUST,bInP); }
+inline const SvxFmtSplitItem &SwAttrSet::GetSplit(BOOL bInP) const
+ { return (const SvxFmtSplitItem&)Get( RES_PARATR_SPLIT,bInP); }
+inline const SwRegisterItem &SwAttrSet::GetRegister(BOOL bInP) const
+ { return (const SwRegisterItem&)Get( RES_PARATR_REGISTER,bInP); }
+inline const SvxWidowsItem &SwAttrSet::GetWidows(BOOL bInP) const
+ { return (const SvxWidowsItem&)Get( RES_PARATR_WIDOWS,bInP); }
+inline const SvxOrphansItem &SwAttrSet::GetOrphans(BOOL bInP) const
+ { return (const SvxOrphansItem&)Get( RES_PARATR_ORPHANS,bInP); }
+inline const SvxTabStopItem &SwAttrSet::GetTabStops(BOOL bInP) const
+ { return (const SvxTabStopItem&)Get( RES_PARATR_TABSTOP,bInP); }
+inline const SvxHyphenZoneItem &SwAttrSet::GetHyphenZone(BOOL bInP) const
+ { return (const SvxHyphenZoneItem&)Get(RES_PARATR_HYPHENZONE,bInP); }
+inline const SwFmtDrop &SwAttrSet::GetDrop(BOOL bInP) const
+ { return (const SwFmtDrop&)Get(RES_PARATR_DROP,bInP); }
+inline const SwNumRuleItem &SwAttrSet::GetNumRule(BOOL bInP) const
+ { return (const SwNumRuleItem&)Get(RES_PARATR_NUMRULE,bInP); }
+
+/******************************************************************************
+ * Implementierung der Paragraph-Attribut Methoden vom SwFmt
+ ******************************************************************************/
+
+inline const SvxLineSpacingItem &SwFmt::GetLineSpacing(BOOL bInP) const
+ { return aSet.GetLineSpacing(bInP); }
+inline const SvxAdjustItem &SwFmt::GetAdjust(BOOL bInP) const
+ { return aSet.GetAdjust(bInP); }
+inline const SvxFmtSplitItem &SwFmt::GetSplit(BOOL bInP) const
+ { return aSet.GetSplit(bInP); }
+inline const SwRegisterItem &SwFmt::GetRegister(BOOL bInP) const
+ { return aSet.GetRegister(bInP); }
+inline const SvxWidowsItem &SwFmt::GetWidows(BOOL bInP) const
+ { return aSet.GetWidows(bInP); }
+inline const SvxOrphansItem &SwFmt::GetOrphans(BOOL bInP) const
+ { return aSet.GetOrphans(bInP); }
+inline const SvxTabStopItem &SwFmt::GetTabStops(BOOL bInP) const
+ { return aSet.GetTabStops(bInP); }
+inline const SvxHyphenZoneItem &SwFmt::GetHyphenZone(BOOL bInP) const
+ { return aSet.GetHyphenZone(bInP); }
+inline const SwFmtDrop &SwFmt::GetDrop(BOOL bInP) const
+ { return aSet.GetDrop(bInP); }
+inline const SwNumRuleItem &SwFmt::GetNumRule(BOOL bInP) const
+ { return aSet.GetNumRule(bInP); }
+
+
+#endif
diff --git a/sw/inc/poolfmt.awk b/sw/inc/poolfmt.awk
new file mode 100644
index 000000000000..810d714dff95
--- /dev/null
+++ b/sw/inc/poolfmt.awk
@@ -0,0 +1,73 @@
+#*************************************************************************
+#*
+#* $Workfile: dbgxtor.awk
+#*
+#* Ersterstellung JP 05.10.95
+#* Letzte Aenderung $Author: hr $ $Date: 2000-09-18 17:14:27 $
+#* $Revision: 1.1.1.1 $
+#*
+#* $Logfile: T:/sw/inc/poolfmt.awv $
+#*
+#* Copyright (c) 1990-1996, STAR DIVISION
+#*
+#*************************************************************************
+
+#
+# Dieses awk-script generiert ein cxx-file, das alle PoolIds der Vorlage dumpt.
+# wird fuer den HelpPI gebraucht.
+# Aufruf: awk -f poolid.awk poolfmt.hxx > poolid.cxx
+# cl poolid.cxx
+# poolid.exe > ???.hrc
+#
+
+function Header() {
+ print "// This is an outputfile of an awk-script: $Workfile: poolfmt.awk $"
+ print "#include <solar.h> "
+ print
+ print "#include <stdio.h>"
+ print "#include <stdlib.h>"
+ print
+ print "#pragma hdrstop"
+ print
+ print "#include <iostream.hxx> "
+ print "#include \"poolfmt.hxx\""
+ print
+}
+
+function Main() {
+ print
+ print "void main( int , char *[] ) {"
+ sStr = "#define"
+ print " int nSize = (sizeof(ppPoolIds) / sizeof(PoolFmtIds)) - 1;"
+ print " for( int n = 0; n < nSize; n++ )"
+ print " printf( \"" sStr " %s\\t%8d\\n\", ppPoolIds[ n ].pStr, ppPoolIds[ n ].nId );"
+ print "}"
+}
+
+function TableHead() {
+ print
+ print "struct PoolFmtIds { int nId; const char* pStr; };"
+ print "static PoolFmtIds ppPoolIds[] = {"
+}
+
+function TableTail() {
+ print " 0, \"\" };"
+ print
+}
+
+BEGIN {
+ Header();
+ TableHead();
+}
+
+/^[ \t]*RES_/ && !index( $1, "_BEGIN" ) && !index( $1, "_END" ) && !index( $1, "_POOL_" ) {
+ sStr = $1;
+ split( $1, sStr, "," );
+ print " " sStr[1] ", \"" sStr[1] "\","
+}
+
+END {
+ TableTail();
+ Main();
+}
+
diff --git a/sw/inc/poolfmt.hrc b/sw/inc/poolfmt.hrc
new file mode 100644
index 000000000000..285f40e32989
--- /dev/null
+++ b/sw/inc/poolfmt.hrc
@@ -0,0 +1,533 @@
+/*************************************************************************
+ *
+ * $RCSfile: poolfmt.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _POOLFMT_HRC
+#define _POOLFMT_HRC
+
+#include "rcid.hrc"
+
+// ---------------
+// die Formate
+// ---------------
+
+// Zeichenvorlagen:
+#define STR_POOLCHR_FOOTNOTE (RC_POOLCHRFMT_BEGIN+ 0)
+#define STR_POOLCHR_PAGENO (RC_POOLCHRFMT_BEGIN+ 1)
+#define STR_POOLCHR_LABEL (RC_POOLCHRFMT_BEGIN+ 2)
+#define STR_POOLCHR_DROPCAPS (RC_POOLCHRFMT_BEGIN+ 3)
+#define STR_POOLCHR_NUM_LEVEL (RC_POOLCHRFMT_BEGIN+ 4)
+#define STR_POOLCHR_BUL_LEVEL (RC_POOLCHRFMT_BEGIN+ 5)
+#define STR_POOLCHR_INET_NORMAL (RC_POOLCHRFMT_BEGIN+ 6)
+#define STR_POOLCHR_INET_VISIT (RC_POOLCHRFMT_BEGIN+ 7)
+#define STR_POOLCHR_JUMPEDIT (RC_POOLCHRFMT_BEGIN+ 8)
+#define STR_POOLCHR_TOXJUMP (RC_POOLCHRFMT_BEGIN+ 9)
+#define STR_POOLCHR_ENDNOTE (RC_POOLCHRFMT_BEGIN+ 10)
+#define STR_POOLCHR_LINENUM (RC_POOLCHRFMT_BEGIN+ 11)
+#define STR_POOLCHR_IDX_MAIN_ENTRY (RC_POOLCHRFMT_BEGIN+ 12)
+#define STR_POOLCHR_FOOTNOTE_ANCHOR (RC_POOLCHRFMT_BEGIN+ 13)
+#define STR_POOLCHR_ENDNOTE_ANCHOR (RC_POOLCHRFMT_BEGIN+ 14)
+
+#define STR_POOLCHR_HTML_EMPHASIS (RC_POOLCHRFMT_HTML_BEGIN+ 0)
+#define STR_POOLCHR_HTML_CITIATION (RC_POOLCHRFMT_HTML_BEGIN+ 1)
+#define STR_POOLCHR_HTML_STRONG (RC_POOLCHRFMT_HTML_BEGIN+ 2)
+#define STR_POOLCHR_HTML_CODE (RC_POOLCHRFMT_HTML_BEGIN+ 3)
+#define STR_POOLCHR_HTML_SAMPLE (RC_POOLCHRFMT_HTML_BEGIN+ 4)
+#define STR_POOLCHR_HTML_KEYBOARD (RC_POOLCHRFMT_HTML_BEGIN+ 5)
+#define STR_POOLCHR_HTML_VARIABLE (RC_POOLCHRFMT_HTML_BEGIN+ 6)
+#define STR_POOLCHR_HTML_DEFINSTANCE (RC_POOLCHRFMT_HTML_BEGIN+ 7)
+#define STR_POOLCHR_HTML_TELETYPE (RC_POOLCHRFMT_HTML_BEGIN+ 8)
+
+#define STR_POOLCHR_PRGM_FOOTNOTE (RC_POOLCHRFMT_PRGM_BEGIN + 0)
+#define STR_POOLCHR_PRGM_PAGENO (RC_POOLCHRFMT_PRGM_BEGIN + 1)
+#define STR_POOLCHR_PRGM_LABEL (RC_POOLCHRFMT_PRGM_BEGIN + 2)
+#define STR_POOLCHR_PRGM_DROPCAPS (RC_POOLCHRFMT_PRGM_BEGIN + 3)
+#define STR_POOLCHR_PRGM_NUM_LEVEL (RC_POOLCHRFMT_PRGM_BEGIN + 4)
+#define STR_POOLCHR_PRGM_BUL_LEVEL (RC_POOLCHRFMT_PRGM_BEGIN + 5)
+#define STR_POOLCHR_PRGM_INET_NORMAL (RC_POOLCHRFMT_PRGM_BEGIN + 6)
+#define STR_POOLCHR_PRGM_INET_VISIT (RC_POOLCHRFMT_PRGM_BEGIN + 7)
+#define STR_POOLCHR_PRGM_JUMPEDIT (RC_POOLCHRFMT_PRGM_BEGIN + 8)
+#define STR_POOLCHR_PRGM_TOXJUMP (RC_POOLCHRFMT_PRGM_BEGIN + 9)
+#define STR_POOLCHR_PRGM_ENDNOTE (RC_POOLCHRFMT_PRGM_BEGIN + 10)
+#define STR_POOLCHR_PRGM_LINENUM (RC_POOLCHRFMT_PRGM_BEGIN + 11)
+#define STR_POOLCHR_PRGM_IDX_MAIN_ENTRY (RC_POOLCHRFMT_PRGM_BEGIN + 12)
+#define STR_POOLCHR_PRGM_FOOTNOTE_ANCHOR (RC_POOLCHRFMT_PRGM_BEGIN + 13)
+#define STR_POOLCHR_PRGM_ENDNOTE_ANCHOR (RC_POOLCHRFMT_PRGM_BEGIN + 14)
+
+#define STR_POOLCHR_PRGM_CURRENT_END STR_POOLCHR_PRGM_ENDNOTE_ANCHOR
+
+
+#define STR_POOLCHR_PRGM_HTML_EMPHASIS (RC_POOLCHRFMT_PRGM_HTML_BEGIN + 0)
+#define STR_POOLCHR_PRGM_HTML_CITIATION (RC_POOLCHRFMT_PRGM_HTML_BEGIN + 1)
+#define STR_POOLCHR_PRGM_HTML_STRONG (RC_POOLCHRFMT_PRGM_HTML_BEGIN + 2)
+#define STR_POOLCHR_PRGM_HTML_CODE (RC_POOLCHRFMT_PRGM_HTML_BEGIN + 3)
+#define STR_POOLCHR_PRGM_HTML_SAMPLE (RC_POOLCHRFMT_PRGM_HTML_BEGIN + 4)
+#define STR_POOLCHR_PRGM_HTML_KEYBOARD (RC_POOLCHRFMT_PRGM_HTML_BEGIN + 5)
+#define STR_POOLCHR_PRGM_HTML_VARIABLE (RC_POOLCHRFMT_PRGM_HTML_BEGIN + 6)
+#define STR_POOLCHR_PRGM_HTML_DEFINSTANCE (RC_POOLCHRFMT_PRGM_HTML_BEGIN + 7)
+#define STR_POOLCHR_PRGM_HTML_TELETYPE (RC_POOLCHRFMT_PRGM_HTML_BEGIN + 8)
+
+#define STR_POOLCHR_PRGM_HTML_CURRENT_END STR_POOLCHR_PRGM_HTML_TELETYPE
+
+// Rahmen-Vorlagen:
+#define STR_POOLFRM_FRAME (RC_POOLFRMFMT_BEGIN+ 0)
+#define STR_POOLFRM_GRAPHIC (RC_POOLFRMFMT_BEGIN+ 1)
+#define STR_POOLFRM_OLE (RC_POOLFRMFMT_BEGIN+ 2)
+#define STR_POOLFRM_FORMEL (RC_POOLFRMFMT_BEGIN+ 3)
+#define STR_POOLFRM_MARGINAL (RC_POOLFRMFMT_BEGIN+ 4)
+#define STR_POOLFRM_WATERSIGN (RC_POOLFRMFMT_BEGIN+ 5)
+#define STR_POOLFRM_LABEL (RC_POOLFRMFMT_BEGIN+ 6)
+
+#define STR_POOLFRM_PRGM_FRAME (RC_POOLFRMFMT_PRGM_BEGIN+ 0)
+#define STR_POOLFRM_PRGM_GRAPHIC (RC_POOLFRMFMT_PRGM_BEGIN+ 1)
+#define STR_POOLFRM_PRGM_OLE (RC_POOLFRMFMT_PRGM_BEGIN+ 2)
+#define STR_POOLFRM_PRGM_FORMEL (RC_POOLFRMFMT_PRGM_BEGIN+ 3)
+#define STR_POOLFRM_PRGM_MARGINAL (RC_POOLFRMFMT_PRGM_BEGIN+ 4)
+#define STR_POOLFRM_PRGM_WATERSIGN (RC_POOLFRMFMT_PRGM_BEGIN+ 5)
+#define STR_POOLFRM_PRGM_LABEL (RC_POOLFRMFMT_PRGM_BEGIN+ 6)
+
+// ---------------
+// die Vorlagen
+// ---------------
+// Gruppe Text
+#define STR_POOLCOLL_STANDARD (RC_POOLCOLL_TEXT_BEGIN+ 0)
+#define STR_POOLCOLL_TEXT (RC_POOLCOLL_TEXT_BEGIN+ 1)
+#define STR_POOLCOLL_TEXT_IDENT (RC_POOLCOLL_TEXT_BEGIN+ 2)
+#define STR_POOLCOLL_TEXT_NEGIDENT (RC_POOLCOLL_TEXT_BEGIN+ 3)
+#define STR_POOLCOLL_TEXT_MOVE (RC_POOLCOLL_TEXT_BEGIN+ 4)
+#define STR_POOLCOLL_GREETING (RC_POOLCOLL_TEXT_BEGIN+ 5)
+#define STR_POOLCOLL_SIGNATURE (RC_POOLCOLL_TEXT_BEGIN+ 6)
+#define STR_POOLCOLL_CONFRONTATION (RC_POOLCOLL_TEXT_BEGIN+ 7)
+#define STR_POOLCOLL_MARGINAL (RC_POOLCOLL_TEXT_BEGIN+ 8)
+
+ // Untergruppierung Ueberschriften
+#define STR_POOLCOLL_HEADLINE_BASE (RC_POOLCOLL_TEXT_BEGIN+ 9)
+#define STR_POOLCOLL_HEADLINE1 (RC_POOLCOLL_TEXT_BEGIN+ 10)
+#define STR_POOLCOLL_HEADLINE2 (RC_POOLCOLL_TEXT_BEGIN+ 11)
+#define STR_POOLCOLL_HEADLINE3 (RC_POOLCOLL_TEXT_BEGIN+ 12)
+#define STR_POOLCOLL_HEADLINE4 (RC_POOLCOLL_TEXT_BEGIN+ 13)
+#define STR_POOLCOLL_HEADLINE5 (RC_POOLCOLL_TEXT_BEGIN+ 14)
+#define STR_POOLCOLL_HEADLINE6 (RC_POOLCOLL_TEXT_BEGIN+ 15)
+#define STR_POOLCOLL_HEADLINE7 (RC_POOLCOLL_TEXT_BEGIN+ 16)
+#define STR_POOLCOLL_HEADLINE8 (RC_POOLCOLL_TEXT_BEGIN+ 17)
+#define STR_POOLCOLL_HEADLINE9 (RC_POOLCOLL_TEXT_BEGIN+ 18)
+#define STR_POOLCOLL_HEADLINE10 (RC_POOLCOLL_TEXT_BEGIN+ 19)
+
+// Gruppe Listen
+#define STR_POOLCOLL_NUMBUL_BASE (RC_POOLCOLL_LISTS_BEGIN+ 0)
+ // Untergruppe Nummerierung
+#define STR_POOLCOLL_NUM_LEVEL1S (RC_POOLCOLL_LISTS_BEGIN+ 1)
+#define STR_POOLCOLL_NUM_LEVEL1 (RC_POOLCOLL_LISTS_BEGIN+ 2)
+#define STR_POOLCOLL_NUM_LEVEL1E (RC_POOLCOLL_LISTS_BEGIN+ 3)
+#define STR_POOLCOLL_NUM_NONUM1 (RC_POOLCOLL_LISTS_BEGIN+ 4)
+#define STR_POOLCOLL_NUM_LEVEL2S (RC_POOLCOLL_LISTS_BEGIN+ 5)
+#define STR_POOLCOLL_NUM_LEVEL2 (RC_POOLCOLL_LISTS_BEGIN+ 6)
+#define STR_POOLCOLL_NUM_LEVEL2E (RC_POOLCOLL_LISTS_BEGIN+ 7)
+#define STR_POOLCOLL_NUM_NONUM2 (RC_POOLCOLL_LISTS_BEGIN+ 8)
+#define STR_POOLCOLL_NUM_LEVEL3S (RC_POOLCOLL_LISTS_BEGIN+ 9)
+#define STR_POOLCOLL_NUM_LEVEL3 (RC_POOLCOLL_LISTS_BEGIN+ 10)
+#define STR_POOLCOLL_NUM_LEVEL3E (RC_POOLCOLL_LISTS_BEGIN+ 11)
+#define STR_POOLCOLL_NUM_NONUM3 (RC_POOLCOLL_LISTS_BEGIN+ 12)
+#define STR_POOLCOLL_NUM_LEVEL4S (RC_POOLCOLL_LISTS_BEGIN+ 13)
+#define STR_POOLCOLL_NUM_LEVEL4 (RC_POOLCOLL_LISTS_BEGIN+ 14)
+#define STR_POOLCOLL_NUM_LEVEL4E (RC_POOLCOLL_LISTS_BEGIN+ 15)
+#define STR_POOLCOLL_NUM_NONUM4 (RC_POOLCOLL_LISTS_BEGIN+ 16)
+#define STR_POOLCOLL_NUM_LEVEL5S (RC_POOLCOLL_LISTS_BEGIN+ 17)
+#define STR_POOLCOLL_NUM_LEVEL5 (RC_POOLCOLL_LISTS_BEGIN+ 18)
+#define STR_POOLCOLL_NUM_LEVEL5E (RC_POOLCOLL_LISTS_BEGIN+ 19)
+#define STR_POOLCOLL_NUM_NONUM5 (RC_POOLCOLL_LISTS_BEGIN+ 20)
+
+ // Untergruppe Aufzaehlung
+#define STR_POOLCOLL_BUL_LEVEL1S (RC_POOLCOLL_LISTS_BEGIN+ 21)
+#define STR_POOLCOLL_BUL_LEVEL1 (RC_POOLCOLL_LISTS_BEGIN+ 22)
+#define STR_POOLCOLL_BUL_LEVEL1E (RC_POOLCOLL_LISTS_BEGIN+ 23)
+#define STR_POOLCOLL_BUL_NONUM1 (RC_POOLCOLL_LISTS_BEGIN+ 24)
+#define STR_POOLCOLL_BUL_LEVEL2S (RC_POOLCOLL_LISTS_BEGIN+ 25)
+#define STR_POOLCOLL_BUL_LEVEL2 (RC_POOLCOLL_LISTS_BEGIN+ 26)
+#define STR_POOLCOLL_BUL_LEVEL2E (RC_POOLCOLL_LISTS_BEGIN+ 27)
+#define STR_POOLCOLL_BUL_NONUM2 (RC_POOLCOLL_LISTS_BEGIN+ 28)
+#define STR_POOLCOLL_BUL_LEVEL3S (RC_POOLCOLL_LISTS_BEGIN+ 29)
+#define STR_POOLCOLL_BUL_LEVEL3 (RC_POOLCOLL_LISTS_BEGIN+ 30)
+#define STR_POOLCOLL_BUL_LEVEL3E (RC_POOLCOLL_LISTS_BEGIN+ 31)
+#define STR_POOLCOLL_BUL_NONUM3 (RC_POOLCOLL_LISTS_BEGIN+ 32)
+#define STR_POOLCOLL_BUL_LEVEL4S (RC_POOLCOLL_LISTS_BEGIN+ 33)
+#define STR_POOLCOLL_BUL_LEVEL4 (RC_POOLCOLL_LISTS_BEGIN+ 34)
+#define STR_POOLCOLL_BUL_LEVEL4E (RC_POOLCOLL_LISTS_BEGIN+ 35)
+#define STR_POOLCOLL_BUL_NONUM4 (RC_POOLCOLL_LISTS_BEGIN+ 36)
+#define STR_POOLCOLL_BUL_LEVEL5S (RC_POOLCOLL_LISTS_BEGIN+ 37)
+#define STR_POOLCOLL_BUL_LEVEL5 (RC_POOLCOLL_LISTS_BEGIN+ 38)
+#define STR_POOLCOLL_BUL_LEVEL5E (RC_POOLCOLL_LISTS_BEGIN+ 39)
+#define STR_POOLCOLL_BUL_NONUM5 (RC_POOLCOLL_LISTS_BEGIN+ 40)
+
+// Sonderbereiche
+ // Untergruppe Header
+#define STR_POOLCOLL_HEADER (RC_POOLCOLL_EXTRA_BEGIN+ 0)
+#define STR_POOLCOLL_HEADERL (RC_POOLCOLL_EXTRA_BEGIN+ 1)
+#define STR_POOLCOLL_HEADERR (RC_POOLCOLL_EXTRA_BEGIN+ 2)
+
+ // Untergruppe Footer
+#define STR_POOLCOLL_FOOTER (RC_POOLCOLL_EXTRA_BEGIN+ 3)
+#define STR_POOLCOLL_FOOTERL (RC_POOLCOLL_EXTRA_BEGIN+ 4)
+#define STR_POOLCOLL_FOOTERR (RC_POOLCOLL_EXTRA_BEGIN+ 5)
+
+ // Untergruppe Tabelle
+#define STR_POOLCOLL_TABLE (RC_POOLCOLL_EXTRA_BEGIN+ 6)
+#define STR_POOLCOLL_TABLE_HDLN (RC_POOLCOLL_EXTRA_BEGIN+ 7)
+
+ // Untergruppe Labels
+#define STR_POOLCOLL_LABEL (RC_POOLCOLL_EXTRA_BEGIN+ 8)
+#define STR_POOLCOLL_LABEL_ABB (RC_POOLCOLL_EXTRA_BEGIN+ 9)
+#define STR_POOLCOLL_LABEL_TABLE (RC_POOLCOLL_EXTRA_BEGIN+ 10)
+#define STR_POOLCOLL_LABEL_FRAME (RC_POOLCOLL_EXTRA_BEGIN+ 11)
+
+ // sonstiges
+#define STR_POOLCOLL_FRAME (RC_POOLCOLL_EXTRA_BEGIN+ 12)
+#define STR_POOLCOLL_FOOTNOTE (RC_POOLCOLL_EXTRA_BEGIN+ 13)
+#define STR_POOLCOLL_JAKETADRESS (RC_POOLCOLL_EXTRA_BEGIN+ 14)
+#define STR_POOLCOLL_SENDADRESS (RC_POOLCOLL_EXTRA_BEGIN+ 15)
+#define STR_POOLCOLL_ENDNOTE (RC_POOLCOLL_EXTRA_BEGIN+ 16)
+
+#define STR_POOLCOLL_LABEL_DRAWING (RC_POOLCOLL_EXTRA_BEGIN+ 17)
+
+// Gruppe Verzeichnisse
+#define STR_POOLCOLL_REGISTER_BASE (RC_POOLCOLL_REGISTER_BEGIN+ 0)
+ // Untergruppe Index-Verzeichnisse
+#define STR_POOLCOLL_TOX_IDXH (RC_POOLCOLL_REGISTER_BEGIN+ 1)
+#define STR_POOLCOLL_TOX_IDX1 (RC_POOLCOLL_REGISTER_BEGIN+ 2)
+#define STR_POOLCOLL_TOX_IDX2 (RC_POOLCOLL_REGISTER_BEGIN+ 3)
+#define STR_POOLCOLL_TOX_IDX3 (RC_POOLCOLL_REGISTER_BEGIN+ 4)
+#define STR_POOLCOLL_TOX_IDXBREAK (RC_POOLCOLL_REGISTER_BEGIN+ 5)
+
+ // Untergruppe Inhalts-Verzeichnisse
+#define STR_POOLCOLL_TOX_CNTNTH (RC_POOLCOLL_REGISTER_BEGIN+ 6)
+#define STR_POOLCOLL_TOX_CNTNT1 (RC_POOLCOLL_REGISTER_BEGIN+ 7)
+#define STR_POOLCOLL_TOX_CNTNT2 (RC_POOLCOLL_REGISTER_BEGIN+ 8)
+#define STR_POOLCOLL_TOX_CNTNT3 (RC_POOLCOLL_REGISTER_BEGIN+ 9)
+#define STR_POOLCOLL_TOX_CNTNT4 (RC_POOLCOLL_REGISTER_BEGIN+ 10)
+#define STR_POOLCOLL_TOX_CNTNT5 (RC_POOLCOLL_REGISTER_BEGIN+ 11)
+
+ // Untergruppe Benutzer-Verzeichnisse:
+#define STR_POOLCOLL_TOX_USERH (RC_POOLCOLL_REGISTER_BEGIN+ 12)
+#define STR_POOLCOLL_TOX_USER1 (RC_POOLCOLL_REGISTER_BEGIN+ 13)
+#define STR_POOLCOLL_TOX_USER2 (RC_POOLCOLL_REGISTER_BEGIN+ 14)
+#define STR_POOLCOLL_TOX_USER3 (RC_POOLCOLL_REGISTER_BEGIN+ 15)
+#define STR_POOLCOLL_TOX_USER4 (RC_POOLCOLL_REGISTER_BEGIN+ 16)
+#define STR_POOLCOLL_TOX_USER5 (RC_POOLCOLL_REGISTER_BEGIN+ 17)
+
+ // Untergruppe Inhalts-Verzeichnisse mehr Ebenen 5 - 10
+#define STR_POOLCOLL_TOX_CNTNT6 (RC_POOLCOLL_REGISTER_BEGIN+ 18)
+#define STR_POOLCOLL_TOX_CNTNT7 (RC_POOLCOLL_REGISTER_BEGIN+ 19)
+#define STR_POOLCOLL_TOX_CNTNT8 (RC_POOLCOLL_REGISTER_BEGIN+ 20)
+#define STR_POOLCOLL_TOX_CNTNT9 (RC_POOLCOLL_REGISTER_BEGIN+ 21)
+#define STR_POOLCOLL_TOX_CNTNT10 (RC_POOLCOLL_REGISTER_BEGIN+ 22)
+
+// illustrations index
+#define STR_POOLCOLL_TOX_ILLUSH (RC_POOLCOLL_REGISTER_BEGIN+ 23)
+#define STR_POOLCOLL_TOX_ILLUS1 (RC_POOLCOLL_REGISTER_BEGIN+ 24)
+
+// object index
+#define STR_POOLCOLL_TOX_OBJECTH (RC_POOLCOLL_REGISTER_BEGIN+ 25)
+#define STR_POOLCOLL_TOX_OBJECT1 (RC_POOLCOLL_REGISTER_BEGIN+ 26)
+
+// tables index
+#define STR_POOLCOLL_TOX_TABLESH (RC_POOLCOLL_REGISTER_BEGIN+ 27)
+#define STR_POOLCOLL_TOX_TABLES1 (RC_POOLCOLL_REGISTER_BEGIN+ 28)
+
+// index of authorities
+#define STR_POOLCOLL_TOX_AUTHORITIESH (RC_POOLCOLL_REGISTER_BEGIN+ 29)
+#define STR_POOLCOLL_TOX_AUTHORITIES1 (RC_POOLCOLL_REGISTER_BEGIN+ 30)
+
+ // Untergruppe Benutzer-Verzeichnisse mehr Ebenen 5 - 10
+#define STR_POOLCOLL_TOX_USER6 (RC_POOLCOLL_REGISTER_BEGIN+ 31)
+#define STR_POOLCOLL_TOX_USER7 (RC_POOLCOLL_REGISTER_BEGIN+ 32)
+#define STR_POOLCOLL_TOX_USER8 (RC_POOLCOLL_REGISTER_BEGIN+ 33)
+#define STR_POOLCOLL_TOX_USER9 (RC_POOLCOLL_REGISTER_BEGIN+ 34)
+#define STR_POOLCOLL_TOX_USER10 (RC_POOLCOLL_REGISTER_BEGIN+ 35)
+
+
+// Gruppe Kapitel/Dokument
+#define STR_POOLCOLL_DOC_TITEL (RC_POOLCOLL_DOC_BEGIN+ 0)
+#define STR_POOLCOLL_DOC_SUBTITEL (RC_POOLCOLL_DOC_BEGIN+ 1)
+
+// Gruppe HTML-Vorlagen
+#define STR_POOLCOLL_HTML_BLOCKQUOTE (RC_POOLCOLL_HTML_BEGIN+ 0)
+#define STR_POOLCOLL_HTML_PRE (RC_POOLCOLL_HTML_BEGIN+ 1)
+#define STR_POOLCOLL_HTML_HR (RC_POOLCOLL_HTML_BEGIN+ 2)
+#define STR_POOLCOLL_HTML_DD (RC_POOLCOLL_HTML_BEGIN+ 3)
+#define STR_POOLCOLL_HTML_DT (RC_POOLCOLL_HTML_BEGIN+ 4)
+
+// programmatic names of para styles
+
+// Gruppe Text
+#define STR_POCO_PRGM_STANDARD (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 0)
+#define STR_POCO_PRGM_TEXT (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 1)
+#define STR_POCO_PRGM_TEXT_IDENT (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 2)
+#define STR_POCO_PRGM_TEXT_NEGIDENT (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 3)
+#define STR_POCO_PRGM_TEXT_MOVE (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 4)
+#define STR_POCO_PRGM_GREETING (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 5)
+#define STR_POCO_PRGM_SIGNATURE (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 6)
+#define STR_POCO_PRGM_CONFRONTATION (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 7)
+#define STR_POCO_PRGM_MARGINAL (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 8)
+
+ // Untergruppierung Ueberschriften
+#define STR_POCO_PRGM_HEADLINE_BASE (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 9)
+#define STR_POCO_PRGM_HEADLINE1 (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 10)
+#define STR_POCO_PRGM_HEADLINE2 (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 11)
+#define STR_POCO_PRGM_HEADLINE3 (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 12)
+#define STR_POCO_PRGM_HEADLINE4 (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 13)
+#define STR_POCO_PRGM_HEADLINE5 (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 14)
+#define STR_POCO_PRGM_HEADLINE6 (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 15)
+#define STR_POCO_PRGM_HEADLINE7 (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 16)
+#define STR_POCO_PRGM_HEADLINE8 (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 17)
+#define STR_POCO_PRGM_HEADLINE9 (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 18)
+#define STR_POCO_PRGM_HEADLINE10 (RC_POOLCOLL_PRGM_TEXT_BEGIN+ 19)
+
+// Gruppe Listen
+#define STR_POCO_PRGM_NUMBUL_BASE (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 0)
+ // Untergruppe Nummerierung
+#define STR_POCO_PRGM_NUM_LEVEL1S (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 1)
+#define STR_POCO_PRGM_NUM_LEVEL1 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 2)
+#define STR_POCO_PRGM_NUM_LEVEL1E (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 3)
+#define STR_POCO_PRGM_NUM_NONUM1 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 4)
+#define STR_POCO_PRGM_NUM_LEVEL2S (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 5)
+#define STR_POCO_PRGM_NUM_LEVEL2 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 6)
+#define STR_POCO_PRGM_NUM_LEVEL2E (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 7)
+#define STR_POCO_PRGM_NUM_NONUM2 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 8)
+#define STR_POCO_PRGM_NUM_LEVEL3S (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 9)
+#define STR_POCO_PRGM_NUM_LEVEL3 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 10)
+#define STR_POCO_PRGM_NUM_LEVEL3E (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 11)
+#define STR_POCO_PRGM_NUM_NONUM3 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 12)
+#define STR_POCO_PRGM_NUM_LEVEL4S (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 13)
+#define STR_POCO_PRGM_NUM_LEVEL4 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 14)
+#define STR_POCO_PRGM_NUM_LEVEL4E (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 15)
+#define STR_POCO_PRGM_NUM_NONUM4 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 16)
+#define STR_POCO_PRGM_NUM_LEVEL5S (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 17)
+#define STR_POCO_PRGM_NUM_LEVEL5 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 18)
+#define STR_POCO_PRGM_NUM_LEVEL5E (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 19)
+#define STR_POCO_PRGM_NUM_NONUM5 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 20)
+
+ // Untergruppe Aufzaehlung
+#define STR_POCO_PRGM_BUL_LEVEL1S (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 21)
+#define STR_POCO_PRGM_BUL_LEVEL1 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 22)
+#define STR_POCO_PRGM_BUL_LEVEL1E (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 23)
+#define STR_POCO_PRGM_BUL_NONUM1 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 24)
+#define STR_POCO_PRGM_BUL_LEVEL2S (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 25)
+#define STR_POCO_PRGM_BUL_LEVEL2 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 26)
+#define STR_POCO_PRGM_BUL_LEVEL2E (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 27)
+#define STR_POCO_PRGM_BUL_NONUM2 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 28)
+#define STR_POCO_PRGM_BUL_LEVEL3S (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 29)
+#define STR_POCO_PRGM_BUL_LEVEL3 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 30)
+#define STR_POCO_PRGM_BUL_LEVEL3E (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 31)
+#define STR_POCO_PRGM_BUL_NONUM3 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 32)
+#define STR_POCO_PRGM_BUL_LEVEL4S (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 33)
+#define STR_POCO_PRGM_BUL_LEVEL4 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 34)
+#define STR_POCO_PRGM_BUL_LEVEL4E (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 35)
+#define STR_POCO_PRGM_BUL_NONUM4 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 36)
+#define STR_POCO_PRGM_BUL_LEVEL5S (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 37)
+#define STR_POCO_PRGM_BUL_LEVEL5 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 38)
+#define STR_POCO_PRGM_BUL_LEVEL5E (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 39)
+#define STR_POCO_PRGM_BUL_NONUM5 (RC_POOLCOLL_PRGM_LISTS_BEGIN+ 40)
+
+// Sonderbereiche
+ // Untergruppe Header
+#define STR_POCO_PRGM_HEADER (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 0)
+#define STR_POCO_PRGM_HEADERL (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 1)
+#define STR_POCO_PRGM_HEADERR (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 2)
+
+ // Untergruppe Footer
+#define STR_POCO_PRGM_FOOTER (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 3)
+#define STR_POCO_PRGM_FOOTERL (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 4)
+#define STR_POCO_PRGM_FOOTERR (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 5)
+
+ // Untergruppe Tabelle
+#define STR_POCO_PRGM_TABLE (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 6)
+#define STR_POCO_PRGM_TABLE_HDLN (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 7)
+
+ // Untergruppe Labels
+#define STR_POCO_PRGM_LABEL (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 8)
+#define STR_POCO_PRGM_LABEL_ABB (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 9)
+#define STR_POCO_PRGM_LABEL_TABLE (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 10)
+#define STR_POCO_PRGM_LABEL_FRAME (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 11)
+
+ // sonstiges
+#define STR_POCO_PRGM_FRAME (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 12)
+#define STR_POCO_PRGM_FOOTNOTE (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 13)
+#define STR_POCO_PRGM_JAKETADRESS (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 14)
+#define STR_POCO_PRGM_SENDADRESS (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 15)
+#define STR_POCO_PRGM_ENDNOTE (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 16)
+
+#define STR_POCO_PRGM_LABEL_DRAWING (RC_POOLCOLL_PRGM_EXTRA_BEGIN+ 17)
+
+// Gruppe Verzeichnisse
+#define STR_POCO_PRGM_REGISTER_BASE (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 0)
+ // Untergruppe Index-Verzeichnisse
+#define STR_POCO_PRGM_TOX_IDXH (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 1)
+#define STR_POCO_PRGM_TOX_IDX1 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 2)
+#define STR_POCO_PRGM_TOX_IDX2 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 3)
+#define STR_POCO_PRGM_TOX_IDX3 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 4)
+#define STR_POCO_PRGM_TOX_IDXBREAK (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 5)
+
+ // Untergruppe Inhalts-Verzeichnisse
+#define STR_POCO_PRGM_TOX_CNTNTH (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 6)
+#define STR_POCO_PRGM_TOX_CNTNT1 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 7)
+#define STR_POCO_PRGM_TOX_CNTNT2 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 8)
+#define STR_POCO_PRGM_TOX_CNTNT3 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 9)
+#define STR_POCO_PRGM_TOX_CNTNT4 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 10)
+#define STR_POCO_PRGM_TOX_CNTNT5 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 11)
+
+ // Untergruppe Benutzer-Verzeichnisse:
+#define STR_POCO_PRGM_TOX_USERH (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 12)
+#define STR_POCO_PRGM_TOX_USER1 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 13)
+#define STR_POCO_PRGM_TOX_USER2 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 14)
+#define STR_POCO_PRGM_TOX_USER3 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 15)
+#define STR_POCO_PRGM_TOX_USER4 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 16)
+#define STR_POCO_PRGM_TOX_USER5 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 17)
+
+ // Untergruppe Inhalts-Verzeichnisse mehr Ebenen 5 - 10
+#define STR_POCO_PRGM_TOX_CNTNT6 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 18)
+#define STR_POCO_PRGM_TOX_CNTNT7 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 19)
+#define STR_POCO_PRGM_TOX_CNTNT8 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 20)
+#define STR_POCO_PRGM_TOX_CNTNT9 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 21)
+#define STR_POCO_PRGM_TOX_CNTNT10 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 22)
+
+// illustrations index
+#define STR_POCO_PRGM_TOX_ILLUSH (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 23)
+#define STR_POCO_PRGM_TOX_ILLUS1 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 24)
+
+// object index
+#define STR_POCO_PRGM_TOX_OBJECTH (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 25)
+#define STR_POCO_PRGM_TOX_OBJECT1 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 26)
+
+// tables index
+#define STR_POCO_PRGM_TOX_TABLESH (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 27)
+#define STR_POCO_PRGM_TOX_TABLES1 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 28)
+
+// index of authorities
+#define STR_POCO_PRGM_TOX_AUTHORITIESH (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 29)
+#define STR_POCO_PRGM_TOX_AUTHORITIES1 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 30)
+
+ // Untergruppe Benutzer-Verzeichnisse mehr Ebenen 5 - 10
+#define STR_POCO_PRGM_TOX_USER6 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 31)
+#define STR_POCO_PRGM_TOX_USER7 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 32)
+#define STR_POCO_PRGM_TOX_USER8 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 33)
+#define STR_POCO_PRGM_TOX_USER9 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 34)
+#define STR_POCO_PRGM_TOX_USER10 (RC_POOLCOLL_PRGM_REGISTER_BEGIN+ 35)
+
+
+// Gruppe Kapitel/Dokument
+#define STR_POCO_PRGM_DOC_TITEL (RC_POOLCOLL_PRGM_DOC_BEGIN+ 0)
+#define STR_POCO_PRGM_DOC_SUBTITEL (RC_POOLCOLL_PRGM_DOC_BEGIN+ 1)
+
+// Gruppe HTML-Vorlagen
+#define STR_POCO_PRGM_HTML_BLOCKQUOTE (RC_POOLCOLL_PRGM_HTML_BEGIN+ 0)
+#define STR_POCO_PRGM_HTML_PRE (RC_POOLCOLL_PRGM_HTML_BEGIN+ 1)
+#define STR_POCO_PRGM_HTML_HR (RC_POOLCOLL_PRGM_HTML_BEGIN+ 2)
+#define STR_POCO_PRGM_HTML_DD (RC_POOLCOLL_PRGM_HTML_BEGIN+ 3)
+#define STR_POCO_PRGM_HTML_DT (RC_POOLCOLL_PRGM_HTML_BEGIN+ 4)
+
+
+//-----------------
+// Page styles
+//-----------------
+#define STR_POOLPAGE_STANDARD (RC_POOLPAGEDESC_BEGIN+ 0)
+#define STR_POOLPAGE_FIRST (RC_POOLPAGEDESC_BEGIN+ 1)
+#define STR_POOLPAGE_LEFT (RC_POOLPAGEDESC_BEGIN+ 2)
+#define STR_POOLPAGE_RIGHT (RC_POOLPAGEDESC_BEGIN+ 3)
+#define STR_POOLPAGE_JAKET (RC_POOLPAGEDESC_BEGIN+ 4)
+#define STR_POOLPAGE_REGISTER (RC_POOLPAGEDESC_BEGIN+ 5)
+#define STR_POOLPAGE_HTML (RC_POOLPAGEDESC_BEGIN+ 6)
+#define STR_POOLPAGE_FOOTNOTE (RC_POOLPAGEDESC_BEGIN+ 7)
+#define STR_POOLPAGE_ENDNOTE (RC_POOLPAGEDESC_BEGIN+ 8)
+
+#define STR_POOLPAGE_PRGM_STANDARD (RC_POOLPAGEDESC_PRGM_BEGIN+ 0)
+#define STR_POOLPAGE_PRGM_FIRST (RC_POOLPAGEDESC_PRGM_BEGIN+ 1)
+#define STR_POOLPAGE_PRGM_LEFT (RC_POOLPAGEDESC_PRGM_BEGIN+ 2)
+#define STR_POOLPAGE_PRGM_RIGHT (RC_POOLPAGEDESC_PRGM_BEGIN+ 3)
+#define STR_POOLPAGE_PRGM_JAKET (RC_POOLPAGEDESC_PRGM_BEGIN+ 4)
+#define STR_POOLPAGE_PRGM_REGISTER (RC_POOLPAGEDESC_PRGM_BEGIN+ 5)
+#define STR_POOLPAGE_PRGM_HTML (RC_POOLPAGEDESC_PRGM_BEGIN+ 6)
+#define STR_POOLPAGE_PRGM_FOOTNOTE (RC_POOLPAGEDESC_PRGM_BEGIN+ 7)
+#define STR_POOLPAGE_PRGM_ENDNOTE (RC_POOLPAGEDESC_PRGM_BEGIN+ 8)
+
+//-----------------
+// Numbering styles
+//-----------------
+#define STR_POOLNUMRULE_NUM1 (RC_POOLNUMRULE_BEGIN+ 0)
+#define STR_POOLNUMRULE_NUM2 (RC_POOLNUMRULE_BEGIN+ 1)
+#define STR_POOLNUMRULE_NUM3 (RC_POOLNUMRULE_BEGIN+ 2)
+#define STR_POOLNUMRULE_NUM4 (RC_POOLNUMRULE_BEGIN+ 3)
+#define STR_POOLNUMRULE_NUM5 (RC_POOLNUMRULE_BEGIN+ 4)
+#define STR_POOLNUMRULE_BUL1 (RC_POOLNUMRULE_BEGIN+ 5)
+#define STR_POOLNUMRULE_BUL2 (RC_POOLNUMRULE_BEGIN+ 6)
+#define STR_POOLNUMRULE_BUL3 (RC_POOLNUMRULE_BEGIN+ 7)
+#define STR_POOLNUMRULE_BUL4 (RC_POOLNUMRULE_BEGIN+ 8)
+#define STR_POOLNUMRULE_BUL5 (RC_POOLNUMRULE_BEGIN+ 9)
+
+#define STR_POOLNUMRULE_PRGM_NUM1 (RC_POOLNUMRULE_PRGM_BEGIN+ 0)
+#define STR_POOLNUMRULE_PRGM_NUM2 (RC_POOLNUMRULE_PRGM_BEGIN+ 1)
+#define STR_POOLNUMRULE_PRGM_NUM3 (RC_POOLNUMRULE_PRGM_BEGIN+ 2)
+#define STR_POOLNUMRULE_PRGM_NUM4 (RC_POOLNUMRULE_PRGM_BEGIN+ 3)
+#define STR_POOLNUMRULE_PRGM_NUM5 (RC_POOLNUMRULE_PRGM_BEGIN+ 4)
+#define STR_POOLNUMRULE_PRGM_BUL1 (RC_POOLNUMRULE_PRGM_BEGIN+ 5)
+#define STR_POOLNUMRULE_PRGM_BUL2 (RC_POOLNUMRULE_PRGM_BEGIN+ 6)
+#define STR_POOLNUMRULE_PRGM_BUL3 (RC_POOLNUMRULE_PRGM_BEGIN+ 7)
+#define STR_POOLNUMRULE_PRGM_BUL4 (RC_POOLNUMRULE_PRGM_BEGIN+ 8)
+#define STR_POOLNUMRULE_PRGM_BUL5 (RC_POOLNUMRULE_PRGM_BEGIN+ 9)
+
+#endif
diff --git a/sw/inc/poolfmt.hxx b/sw/inc/poolfmt.hxx
new file mode 100644
index 000000000000..a4b31cf51825
--- /dev/null
+++ b/sw/inc/poolfmt.hxx
@@ -0,0 +1,478 @@
+/*************************************************************************
+ *
+ * $RCSfile: poolfmt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _POOLFMT_HXX
+#define _POOLFMT_HXX
+
+#include <limits.h>
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+// POOLCOLL-IDs:
+// +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+// !User! Bereich ! 0 ! Offset !
+// +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+//
+// Bereich: 1 - Text
+// 2 - Listen
+// 3 - Sonderbereiche
+// 4 - Verzeichnisse
+// 5 - Kapitel / Dokument
+// 6 - HTML-Vorlagen
+
+// Andere IDs:
+// +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+// !User! Bereich ! 1 ! Offset !
+// +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+// Bereich: 0 - Zeichenvorlagen
+// 1 - Frame-Vorlagen
+// 2 - Seitenvorlagen
+// 3 - Absatzformate (?)
+// 4 - Grafikformate (?)
+
+// Fr alle IDs gilt:
+// Herkunft: 0 -Pool
+// 1 -Benutzer
+// Offset: innerhalb der Gruppe
+
+
+// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+//
+// ACHTUNG: neue ID's koennen nur noch am Ende der jeweiligen Gruppe
+// zugefuegt werden. Diese Id's werden vom Reader/Writer ge-
+// lesen und geschrieben. Diese kennen nur den Offset zum Start
+//
+// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+// Maske fuer Erkennung von COLLPOOL-Ids:
+
+const USHORT POOLGRP_NOCOLLID = (1 << 10);
+
+// POLLCOLL-Gruppen:
+
+const USHORT USER_FMT = (1 << 15);
+const USHORT POOL_FMT = (0 << 15);
+
+const USHORT COLL_TEXT_BITS = (1 << 11);
+const USHORT COLL_LISTS_BITS = (2 << 11);
+const USHORT COLL_EXTRA_BITS = (3 << 11);
+const USHORT COLL_REGISTER_BITS = (4 << 11);
+const USHORT COLL_DOC_BITS = (5 << 11);
+const USHORT COLL_HTML_BITS = (6 << 11);
+const USHORT COLL_GET_RANGE_BITS = (15 << 11);
+
+// Sonstige Gruppen:
+
+const USHORT POOLGRP_CHARFMT = (0 << 11) + POOLGRP_NOCOLLID;
+const USHORT POOLGRP_FRAMEFMT = (1 << 11) + POOLGRP_NOCOLLID;
+const USHORT POOLGRP_PAGEDESC = (2 << 11) + POOLGRP_NOCOLLID;
+const USHORT POOLGRP_NUMRULE = (3 << 11) + POOLGRP_NOCOLLID;
+//const USHORT POOLGRP_GRFFMT = (4 << 11) + POOLGRP_NOCOLLID; // ?
+
+// fuer Erkennung ob Benutzer-Vorlage oder nicht:
+const USHORT POOL_IDUSER_FMT =
+ USHRT_MAX & ~(COLL_GET_RANGE_BITS + POOLGRP_NOCOLLID);
+
+inline BOOL IsPoolUserFmt( USHORT nId )
+{
+ return POOL_IDUSER_FMT ==
+ (nId & ~(COLL_GET_RANGE_BITS + POOLGRP_NOCOLLID))
+ ? TRUE : FALSE;
+}
+
+
+// ID-s fuer die Bereiche
+enum RES_POOLFMT
+{
+RES_POOLFMT_BEGIN = 1, // HIER GEHT'S LOS !!!
+RES_POOL_CHRFMT = RES_POOLFMT_BEGIN,
+RES_POOL_FRMFMT,
+RES_POOL_TXTCOLL,
+RES_POOL_PAGEFMT,
+
+RES_POOL_PARFMT, // ???
+RES_POOL_GRFFMT, // ???
+RES_POOLFMT_END
+};
+
+// Bereiche fuer die Id's der einzelnen Formate
+
+// die Id's fuer die Zeichen-Vorlagen
+enum RES_POOL_CHRFMT_TYPE
+{
+RES_POOLCHR_BEGIN = POOLGRP_CHARFMT,
+RES_POOLCHR_NORMAL_BEGIN = POOLGRP_CHARFMT,
+
+RES_POOLCHR_FOOTNOTE = RES_POOLCHR_NORMAL_BEGIN, // Fussnote
+RES_POOLCHR_PAGENO, // Seiten/Feld
+RES_POOLCHR_LABEL, // Beschriftung
+RES_POOLCHR_DROPCAPS, // Initialienzeichen
+RES_POOLCHR_NUM_LEVEL, // Nummerierungszeichen
+RES_POOLCHR_BUL_LEVEL, // Aufzaehlungszeichen
+
+RES_POOLCHR_INET_NORMAL, // Internet normal
+RES_POOLCHR_INET_VISIT, // Internet besucht
+RES_POOLCHR_JUMPEDIT, // Platzhalter
+RES_POOLCHR_TOXJUMP, // Sprung aus Verzeichnis
+RES_POOLCHR_ENDNOTE, // Endnote
+RES_POOLCHR_LINENUM, // Zeilennummerierung
+RES_POOLCHR_IDX_MAIN_ENTRY, // main entry in indexes
+RES_POOLCHR_FOOTNOTE_ANCHOR, // Fussnotenanker
+RES_POOLCHR_ENDNOTE_ANCHOR, // Endnotenanker
+
+RES_POOLCHR_NORMAL_END,
+
+RES_POOLCHR_HTML_BEGIN = RES_POOLCHR_BEGIN + 50, // HTML-Vorlagen
+RES_POOLCHR_HTML_EMPHASIS= RES_POOLCHR_HTML_BEGIN,
+RES_POOLCHR_HTML_CITIATION,
+RES_POOLCHR_HTML_STRONG,
+RES_POOLCHR_HTML_CODE,
+RES_POOLCHR_HTML_SAMPLE,
+RES_POOLCHR_HTML_KEYBOARD,
+RES_POOLCHR_HTML_VARIABLE,
+RES_POOLCHR_HTML_DEFINSTANCE,
+RES_POOLCHR_HTML_TELETYPE,
+RES_POOLCHR_HTML_END,
+
+RES_POOLCHR_END = RES_POOLCHR_HTML_END
+};
+
+
+// die Id's fuer die Rahmen-Vorlagen
+enum RES_POOL_FRMFMT_TYPE
+{
+RES_POOLFRM_BEGIN = POOLGRP_FRAMEFMT,
+
+RES_POOLFRM_FRAME = RES_POOLFRM_BEGIN, // Rahmen
+RES_POOLFRM_GRAPHIC, // Graphic
+RES_POOLFRM_OLE, // OLE
+RES_POOLFRM_FORMEL, // Formeln
+RES_POOLFRM_MARGINAL, // Marginalen
+RES_POOLFRM_WATERSIGN, // Wasserzeichen
+RES_POOLFRM_LABEL, // Etikette
+
+RES_POOLFRM_END
+};
+
+// die Id's fuer die Seiten-Vorlagen
+enum RES_POOL_PAGEFMT_TYPE
+{
+RES_POOLPAGE_BEGIN = POOLGRP_PAGEDESC,
+
+RES_POOLPAGE_STANDARD = RES_POOLPAGE_BEGIN, // Standard-Seite
+RES_POOLPAGE_FIRST, // Erste Seite
+RES_POOLPAGE_LEFT, // Linke Seite
+RES_POOLPAGE_RIGHT, // Rechte Seite
+RES_POOLPAGE_JAKET, // Umschlag
+RES_POOLPAGE_REGISTER, // Verzeichnis
+RES_POOLPAGE_HTML, // HTML
+RES_POOLPAGE_FOOTNOTE, // Fussnote bei Dokumentende
+RES_POOLPAGE_ENDNOTE, // Endnotensseite
+
+RES_POOLPAGE_END
+};
+
+// die Id's fuer die NumRule-Vorlagen
+enum RES_POOL_NUMRULE_TYPE
+{
+RES_POOLNUMRULE_BEGIN = POOLGRP_NUMRULE,
+RES_POOLNUMRULE_NUM1 = RES_POOLNUMRULE_BEGIN, // NumRule Numerierung 1
+RES_POOLNUMRULE_NUM2, // NumRule Numerierung 2
+RES_POOLNUMRULE_NUM3, // NumRule Numerierung 3
+RES_POOLNUMRULE_NUM4, // NumRule Numerierung 4
+RES_POOLNUMRULE_NUM5, // NumRule Numerierung 5
+RES_POOLNUMRULE_BUL1, // NumRule Bullets 1
+RES_POOLNUMRULE_BUL2, // NumRule Bullets 2
+RES_POOLNUMRULE_BUL3, // NumRule Bullets 3
+RES_POOLNUMRULE_BUL4, // NumRule Bullets 4
+RES_POOLNUMRULE_BUL5, // NumRule Bullets 5
+RES_POOLNUMRULE_END
+};
+
+// die Id's fuer die Absatz-Vorlagen
+enum RES_POOL_COLLFMT_TYPE
+{
+// Gruppe Text
+RES_POOLCOLL_TEXT_BEGIN = COLL_TEXT_BITS,
+
+RES_POOLCOLL_STANDARD = RES_POOLCOLL_TEXT_BEGIN, // Standard
+RES_POOLCOLL_TEXT, // Textkoerper
+RES_POOLCOLL_TEXT_IDENT, // Textkoerper Einzug
+RES_POOLCOLL_TEXT_NEGIDENT, // Textkoerper neg. Einzug
+RES_POOLCOLL_TEXT_MOVE, // Textkoerper Einrueckung
+RES_POOLCOLL_GREETING, // Grussformel
+RES_POOLCOLL_SIGNATURE, // Unterschrift
+RES_POOLCOLL_CONFRONTATION, // Gegenueberstellung
+RES_POOLCOLL_MARGINAL, // Marginalie
+
+ // Untergruppierung Ueberschriften
+RES_POOLCOLL_HEADLINE_BASE, // Basis-Ueberschrift
+RES_POOLCOLL_HEADLINE1, // Ueberschrift 1
+RES_POOLCOLL_HEADLINE2, // Ueberschrift 2
+RES_POOLCOLL_HEADLINE3, // Ueberschrift 3
+RES_POOLCOLL_HEADLINE4, // Ueberschrift 4
+RES_POOLCOLL_HEADLINE5, // Ueberschrift 5
+RES_POOLCOLL_HEADLINE6, // Ueberschrift 6
+RES_POOLCOLL_HEADLINE7, // Ueberschrift 7
+RES_POOLCOLL_HEADLINE8, // Ueberschrift 8
+RES_POOLCOLL_HEADLINE9, // Ueberschrift 9
+RES_POOLCOLL_HEADLINE10, // Ueberschrift 10
+
+RES_POOLCOLL_TEXT_END,
+
+
+// Gruppe Listen
+RES_POOLCOLL_LISTS_BEGIN = COLL_LISTS_BITS,
+
+RES_POOLCOLL_NUMBUL_BASE = RES_POOLCOLL_LISTS_BEGIN, // Basis-Liste
+
+ // Untergruppe Nummerierung
+RES_POOLCOLL_NUM_LEVEL1S, // Start Level1
+RES_POOLCOLL_NUM_LEVEL1, // 1. Level
+RES_POOLCOLL_NUM_LEVEL1E, // Ende Level1
+RES_POOLCOLL_NUM_NONUM1, // keine Nummerierung
+RES_POOLCOLL_NUM_LEVEL2S, // Start 2. Level
+RES_POOLCOLL_NUM_LEVEL2, // 2. Level
+RES_POOLCOLL_NUM_LEVEL2E, // Ende 2. Level
+RES_POOLCOLL_NUM_NONUM2, // keine Nummerierung
+RES_POOLCOLL_NUM_LEVEL3S, // Start 3. Level
+RES_POOLCOLL_NUM_LEVEL3, // 3. Level
+RES_POOLCOLL_NUM_LEVEL3E, // Ende 3. Level
+RES_POOLCOLL_NUM_NONUM3, // keine Nummerierung
+RES_POOLCOLL_NUM_LEVEL4S, // Start 4. Level
+RES_POOLCOLL_NUM_LEVEL4, // 4. Level
+RES_POOLCOLL_NUM_LEVEL4E, // Ende 4. Level
+RES_POOLCOLL_NUM_NONUM4, // keine Nummerierung
+RES_POOLCOLL_NUM_LEVEL5S, // Start 5. Level
+RES_POOLCOLL_NUM_LEVEL5, // 5. Level
+RES_POOLCOLL_NUM_LEVEL5E, // Ende 5. Level
+RES_POOLCOLL_NUM_NONUM5, // keine Nummerierung
+
+ // Untergruppe Aufzaehlung
+RES_POOLCOLL_BUL_LEVEL1S, // Start Level1
+RES_POOLCOLL_BUL_LEVEL1, // 1. Level
+RES_POOLCOLL_BUL_LEVEL1E, // Ende Level1
+RES_POOLCOLL_BUL_NONUM1, // keine Nummerierung
+RES_POOLCOLL_BUL_LEVEL2S, // Start 2. Level
+RES_POOLCOLL_BUL_LEVEL2, // 2. Level
+RES_POOLCOLL_BUL_LEVEL2E, // Ende 2. Level
+RES_POOLCOLL_BUL_NONUM2, // keine Nummerierung
+RES_POOLCOLL_BUL_LEVEL3S, // Start 3. Level
+RES_POOLCOLL_BUL_LEVEL3, // 3. Level
+RES_POOLCOLL_BUL_LEVEL3E, // Ende 3. Level
+RES_POOLCOLL_BUL_NONUM3, // keine Nummerierung
+RES_POOLCOLL_BUL_LEVEL4S, // Start 4. Level
+RES_POOLCOLL_BUL_LEVEL4, // 4. Level
+RES_POOLCOLL_BUL_LEVEL4E, // Ende 4. Level
+RES_POOLCOLL_BUL_NONUM4, // keine Nummerierung
+RES_POOLCOLL_BUL_LEVEL5S, // Start 5. Level
+RES_POOLCOLL_BUL_LEVEL5, // 5. Level
+RES_POOLCOLL_BUL_LEVEL5E, // Ende 5. Level
+RES_POOLCOLL_BUL_NONUM5, // keine Nummerierung
+
+RES_POOLCOLL_LISTS_END,
+
+
+// Sonderbereiche
+RES_POOLCOLL_EXTRA_BEGIN = COLL_EXTRA_BITS,
+
+ // Untergruppe Header
+RES_POOLCOLL_HEADER = RES_POOLCOLL_EXTRA_BEGIN, // Header Left&Right
+RES_POOLCOLL_HEADERL, // Header Left
+RES_POOLCOLL_HEADERR, // Header Right
+
+ // Untergruppe Footer
+RES_POOLCOLL_FOOTER, // Footer Left&Right
+RES_POOLCOLL_FOOTERL, // Footer Left
+RES_POOLCOLL_FOOTERR, // Footer Right
+
+ // Untergruppe Tabelle
+RES_POOLCOLL_TABLE, // Tabelle "Inhalt"
+RES_POOLCOLL_TABLE_HDLN, // Tabellen-Headline
+
+
+ // Untergruppe Beschriftung
+RES_POOLCOLL_LABEL, // Beschriftung-Basis
+RES_POOLCOLL_LABEL_ABB, // Beschriftung-Abbildung
+RES_POOLCOLL_LABEL_TABLE, // Beschriftung-Tabelle
+RES_POOLCOLL_LABEL_FRAME, // Beschriftung-Rahmen
+
+ // sonstiges
+RES_POOLCOLL_FRAME, // Rahmen
+RES_POOLCOLL_FOOTNOTE, // Fussnoten
+RES_POOLCOLL_JAKETADRESS, // UmschlagAdresse
+RES_POOLCOLL_SENDADRESS, // AbsenderAdresse
+RES_POOLCOLL_ENDNOTE, // Endnoten
+
+RES_POOLCOLL_LABEL_DRAWING, // Beschriftung-Zeichen-Objekte
+RES_POOLCOLL_EXTRA_END,
+
+
+// Gruppe Verzeichnisse
+RES_POOLCOLL_REGISTER_BEGIN = COLL_REGISTER_BITS,
+
+RES_POOLCOLL_REGISTER_BASE = RES_POOLCOLL_REGISTER_BEGIN, // Basis-Verzeichnis
+
+ // Untergruppe Index-Verzeichnisse
+RES_POOLCOLL_TOX_IDXH, // Header
+RES_POOLCOLL_TOX_IDX1, // 1. Ebene
+RES_POOLCOLL_TOX_IDX2, // 2. Ebene
+RES_POOLCOLL_TOX_IDX3, // 3. Ebene
+RES_POOLCOLL_TOX_IDXBREAK, // Trenner
+
+ // Untergruppe Inhalts-Verzeichnisse
+RES_POOLCOLL_TOX_CNTNTH, // Header
+RES_POOLCOLL_TOX_CNTNT1, // 1. Ebene
+RES_POOLCOLL_TOX_CNTNT2, // 2. Ebene
+RES_POOLCOLL_TOX_CNTNT3, // 3. Ebene
+RES_POOLCOLL_TOX_CNTNT4, // 4. Ebene
+RES_POOLCOLL_TOX_CNTNT5, // 5. Ebene
+
+ // Untergruppe Benutzer-Verzeichnisse:
+RES_POOLCOLL_TOX_USERH, // Header
+RES_POOLCOLL_TOX_USER1, // 1. Ebene
+RES_POOLCOLL_TOX_USER2, // 2. Ebene
+RES_POOLCOLL_TOX_USER3, // 3. Ebene
+RES_POOLCOLL_TOX_USER4, // 4. Ebene
+RES_POOLCOLL_TOX_USER5, // 5. Ebene
+
+
+RES_POOLCOLL_TOX_CNTNT6, // Inhalt 6. Ebene
+RES_POOLCOLL_TOX_CNTNT7, // Inhalt 7. Ebene
+RES_POOLCOLL_TOX_CNTNT8, // Inhalt 8. Ebene
+RES_POOLCOLL_TOX_CNTNT9, // Inhalt 9. Ebene
+RES_POOLCOLL_TOX_CNTNT10, // Inhalt 10. Ebene
+
+// illustrations index
+RES_POOLCOLL_TOX_ILLUSH, // illustrations header
+RES_POOLCOLL_TOX_ILLUS1, // illustrations all levels
+
+// object index
+RES_POOLCOLL_TOX_OBJECTH, // objects header
+RES_POOLCOLL_TOX_OBJECT1, // objects all levels
+
+// tables index
+RES_POOLCOLL_TOX_TABLESH, // tables header
+RES_POOLCOLL_TOX_TABLES1, // tables all levels
+
+// index of authorities
+RES_POOLCOLL_TOX_AUTHORITIESH, // authorities header
+RES_POOLCOLL_TOX_AUTHORITIES1, // authorities all levels
+
+// user index 6..10
+RES_POOLCOLL_TOX_USER6, // level 6
+RES_POOLCOLL_TOX_USER7, // level 7
+RES_POOLCOLL_TOX_USER8, // level 8
+RES_POOLCOLL_TOX_USER9, // level 9
+RES_POOLCOLL_TOX_USER10, // level 10
+
+RES_POOLCOLL_REGISTER_END,
+
+
+// Gruppe Kapitel/Dokument
+RES_POOLCOLL_DOC_BEGIN = COLL_DOC_BITS,
+
+RES_POOLCOLL_DOC_TITEL = RES_POOLCOLL_DOC_BEGIN, // Doc. Titel
+RES_POOLCOLL_DOC_SUBTITEL, // Doc. UnterTitel
+
+RES_POOLCOLL_DOC_END,
+
+// Gruppe HTML-Vorlagen
+RES_POOLCOLL_HTML_BEGIN = COLL_HTML_BITS,
+
+RES_POOLCOLL_HTML_BLOCKQUOTE = RES_POOLCOLL_HTML_BEGIN,
+RES_POOLCOLL_HTML_PRE,
+RES_POOLCOLL_HTML_HR,
+RES_POOLCOLL_HTML_DD,
+RES_POOLCOLL_HTML_DT,
+
+RES_POOLCOLL_HTML_END
+
+// Ende der Textformat-Vorlagen Sammlung
+};
+
+
+
+// erfrage den definierten Parent zu einer POOL-Id
+// returnt: 0 -> Standard
+// USHRT_MAX -> kein Parent
+// sonst -> den Parent
+USHORT GetPoolParent( USHORT nId );
+
+// erfrage zu einer PoolId den Namen (steht im poolfmt.cxx)
+class String;
+String& GetDocPoolNm( USHORT nId, String& rFillNm );
+
+inline BOOL IsConditionalByPoolId(USHORT nId)
+ {
+ return RES_POOLCOLL_TEXT == nId;
+ }
+// die Id's fuer die Grafik-Formate
+/*enum RES_POOL_GRFFMT_TYPE
+{
+RES_POOLGRF_BEGIN = RES_POOLPAR_END,
+RES_POOLGRF_1 = RES_POOLGRF_BEGIN,
+RES_POOLGRF_END
+};
+*/
+
+#endif
diff --git a/sw/inc/pvprtdat.hxx b/sw/inc/pvprtdat.hxx
new file mode 100644
index 000000000000..91f784a3ee7d
--- /dev/null
+++ b/sw/inc/pvprtdat.hxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * $RCSfile: pvprtdat.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _PVPRTDAT_HXX
+#define _PVPRTDAT_HXX
+
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class SwPagePreViewPrtData
+{
+ ULONG nLeftSpace, nRightSpace, nTopSpace, nBottomSpace,
+ nHorzSpace, nVertSpace;
+ BYTE nRow, nCol;
+ BOOL bLandscape : 1;
+ BOOL bStretch : 1;
+public:
+ SwPagePreViewPrtData()
+ : nLeftSpace(0), nRightSpace(0), nTopSpace(0), nBottomSpace(0),
+ nHorzSpace(0), nVertSpace(0), nRow(1), nCol(1),
+ bLandscape(0),bStretch(0)
+ {}
+
+ ULONG GetLeftSpace() const { return nLeftSpace; }
+ void SetLeftSpace( ULONG n ) { nLeftSpace = n; }
+
+ ULONG GetRightSpace() const { return nRightSpace; }
+ void SetRightSpace( ULONG n ) { nRightSpace = n; }
+
+ ULONG GetTopSpace() const { return nTopSpace; }
+ void SetTopSpace( ULONG n ) { nTopSpace = n; }
+
+ ULONG GetBottomSpace() const { return nBottomSpace; }
+ void SetBottomSpace( ULONG n ) { nBottomSpace = n; }
+
+ ULONG GetHorzSpace() const { return nHorzSpace; }
+ void SetHorzSpace( ULONG n ) { nHorzSpace = n; }
+
+ ULONG GetVertSpace() const { return nVertSpace; }
+ void SetVertSpace( ULONG n ) { nVertSpace = n; }
+
+ BYTE GetRow() const { return nRow; }
+ void SetRow(BYTE n ) { nRow = n; }
+
+ BYTE GetCol() const { return nCol; }
+ void SetCol( BYTE n ) { nCol = n; }
+
+ BOOL GetLandscape() const { return bLandscape; }
+ void SetLandscape( BOOL b ) { bLandscape = b; }
+
+ // JP 19.08.98: wird zur Zeit nicht ausgewertet, weil der Font sich
+ // nicht enstprechend stretch laesst.
+ BOOL GetStretch() const { return bStretch; }
+ void SetStretch( BOOL b ) { bStretch = b; }
+};
+
+
+#endif
+
+
diff --git a/sw/inc/rcid.hrc b/sw/inc/rcid.hrc
new file mode 100644
index 000000000000..11faf7eb934e
--- /dev/null
+++ b/sw/inc/rcid.hrc
@@ -0,0 +1,316 @@
+/*************************************************************************
+ *
+ * $RCSfile: rcid.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _RDIC_HRC
+#define _RDIC_HRC
+
+#ifndef _SFXSIDS_HRC //autogen
+#include <sfx2/sfxsids.hrc>
+#endif
+
+// ----------------------------------------------------------------
+// Bereiche fuer die UI-Verzeichnisse
+// ----------------------------------------------------------------
+
+#define RC_BASE RID_SW_START // aus solar.hrc
+
+#define RC_APP RC_BASE
+#define RC_DIALOG (RC_BASE + 200)
+#define RC_DOCVW (RC_BASE + 300)
+#define RC_WEB (RC_BASE + 400)
+#define RC_GLOBDOC (RC_BASE + 500)
+#define RC_VIEW (RC_BASE + 600)
+#define RC_CHRDLG (RC_BASE + 700)
+#define RC_RIBBAR (RC_BASE + 720)
+#define RC_GLOBALS (RC_BASE + 820)
+#define RC_FMTUI (RC_BASE + 920)
+#define RC_FRMDLG (RC_BASE + 1000)
+#define RC_FLDDLG (RC_BASE + 1100)
+#define RC_UTLUI (RC_BASE + 1250)
+#define RC_ATTR (RC_BASE + 1350)
+#define RC_TABLE (RC_BASE + 1450)
+#define RC_CONFIG (RC_BASE + 1550)
+#define RC_MISC (RC_BASE + 1650)
+#define RC_WRTSH (RC_BASE + 1750)
+#define RC_INDEX (RC_BASE + 1950)
+#define RC_DBUI (RC_BASE + 2050)
+#define RC_DOCHDL (RC_BASE + 2150)
+#define RC_POOLCHRFMT (RC_BASE + 2250)
+#define RC_POOLHTMLCHRFMT (RC_BASE + 2290)
+#define RC_POOLFRMFMT (RC_BASE + 2330)
+#define RC_POOLTXTCOLL (RC_BASE + 2360)
+#define RC_POOLPAGEDESC (RC_BASE + 2550)
+#define RC_POOLNUMRULE (RC_BASE + 2650)
+#define RC_ENVELP (RC_BASE + 2750)
+#define RC_STATLIN_STR (RC_BASE + 2850)
+#define RC_COMMON_CORE (RC_BASE + 2950)
+#define RC_WIZARD (RC_BASE + 3050)
+#define RC_POPUPS (RC_BASE + 3150)
+#define RC_SHELLS (RC_BASE + 3250)
+#define RC_CFGITEMS (RC_BASE + 3350)
+#define RC_LINGU (RC_BASE + 3450)
+#define RC_POOLCHRFMT_PRGM (RC_BASE + 3550)
+#define RC_POOLHTMLCHRFMT_PRGM (RC_BASE + 3590)
+#define RC_POOLFRMFMT_PRGM (RC_BASE + 3630)
+#define RC_POOLTXTCOLL_PRGM (RC_BASE + 3660)
+#define RC_POOLPAGEDESC_PRGM (RC_BASE + 3850)
+#define RC_POOLNUMRULE_PRGM (RC_BASE + 3900)
+
+/*--------------------------------------------------------------------
+ Beschreibung: Bereiche ausspannen
+ --------------------------------------------------------------------*/
+
+// App-Verzeichnis
+#define RC_APP_BEGIN RC_APP
+#define RC_APP_END (RC_APP_BEGIN + 199)
+
+
+
+// Dialog-Verzeichnis
+#define RC_DIALOG_BEGIN RC_DIALOG
+#define RC_DIALOG_END (RC_DIALOG_BEGIN + 99)
+
+// Editwin & Co
+#define RC_DOCVW_BEGIN RC_DOCVW
+#define RC_DOCVW_END (RC_DOCVW_BEGIN + 99)
+
+// SW/Web
+#define RC_WEB_BEGIN RC_WEB
+#define RC_WEB_END (RC_WEB_BEGIN + 199)
+
+//Globaldocument
+#define RC_GLOBDOC_BEGIN RC_GLOBDOC
+#define RC_GLOBDOC_END (RC_GLOBDOC_BEGIN + 99)
+
+// UI-View
+#define RC_VIEW_BEGIN RC_VIEW
+#define RC_VIEW_END (RC_VIEW_BEGIN + 99)
+
+// Zeichen Absatz Tab-Dialog
+#define RC_CHRDLG_BEGIN RC_CHRDLG
+#define RC_CHRDLG_END (RC_CHRDLG_BEGIN + 9)
+
+// Unsere Shell
+#define RC_WRTSH_BEGIN RC_WRTSH
+#define RC_WRTSH_END (RC_WRTSH_BEGIN + 199)
+
+// Verzeichnisse
+#define RC_INDEX_BEGIN RC_INDEX
+#define RC_INDEX_END (RC_INDEX + 99)
+
+//
+#define RC_RIBBAR_BEGIN RC_RIBBAR
+#define RC_RIBBAR_END (RC_RIBBAR_BEGIN + 99)
+
+// globale Ressourcen
+#define RC_GLOBALS_BEGIN RC_GLOBALS
+#define RC_GLOBALS_END (RC_GLOBALS_BEGIN + 99)
+
+// Format-Vorlagen
+#define RC_FMTUI_BEGIN RC_FMTUI
+#define RC_FMTUI_END (RC_FMTUI_BEGIN + 69)
+
+
+// Grafik Dialoge
+#define RC_GRFDLG_BEGIN RC_GRFDLG
+#define RC_GRFDLG_END (RC_GRFDLG_BEGIN + 99)
+
+// ????
+#define RC_FSTDLG_BEGIN RC_FSTDLG
+#define RC_FSTDLG_END (RC_FSTDLG_BEGIN + 99)
+
+// Rahmen Dialoge
+#define RC_FRMDLG_BEGIN RC_FRMDLG
+#define RC_FRMDLG_END (RC_FRMDLG_BEGIN + 99)
+
+// Feld Dialoge
+#define RC_FLDDLG_BEGIN RC_FLDDLG
+#define RC_FLDDLG_END (RC_FLDDLG_BEGIN + 149)
+
+// Utilities UI
+#define RC_UTLUI_BEGIN RC_UTLUI
+#define RC_UTLUI_END (RC_UTLUI + 99)
+
+// Utilities UI-Attribute
+#define RC_ATTR_BEGIN RC_ATTR
+#define RC_ATTR_END (RC_ATTR + 99)
+
+// Tabellen
+#define RC_TABLE_BEGIN RC_TABLE
+#define RC_TABLE_END (RC_TABLE + 99)
+
+// Konfiguration
+#define RC_CONFIG_BEGIN RC_CONFIG
+#define RC_CONFIG_END (RC_CONFIG + 99)
+
+
+// Verschiedenes
+#define RC_MISC_BEGIN RC_MISC
+#define RC_MISC_END (RC_MISC + 99)
+
+// DBMgr
+#define RC_DBUI_BEGIN RC_DBUI
+#define RC_DBUI_END (RC_DBUI + 99)
+
+// Der Rest der Imp-Klassen
+#define RC_DOCHDL_BEGIN RC_DOCHDL
+#define RC_DOCHDL_END (RC_DOCHDL + 99)
+
+// Zeichenvorlagen
+#define RC_POOLCHRFMT_BEGIN RC_POOLCHRFMT
+#define RC_POOLCHRFMT_END (RC_POOLCHRFMT + 29)
+#define RC_POOLCHRFMT_HTML_BEGIN RC_POOLHTMLCHRFMT
+#define RC_POOLCHRFMT_HTML_END (RC_POOLHTMLCHRFMT+ 30)
+
+#define RC_POOLCHRFMT_PRGM_BEGIN RC_POOLCHRFMT_PRGM
+#define RC_POOLCHRFMT_PRGM_END (RC_POOLCHRFMT_PRGM + 29)
+#define RC_POOLCHRFMT_PRGM_HTML_BEGIN RC_POOLHTMLCHRFMT_PRGM
+#define RC_POOLCHRFMT_PRGM_HTML_END (RC_POOLHTMLCHRFMT_PRGM+ 30)
+
+// Rahmenvorlagen
+#define RC_POOLFRMFMT_BEGIN RC_POOLFRMFMT
+#define RC_POOLFRMFMT_END (RC_POOLFRMFMT + 20)
+
+#define RC_POOLFRMFMT_PRGM_BEGIN RC_POOLFRMFMT_PRGM
+#define RC_POOLFRMFMT_PRGM_END (RC_POOLFRMFMT_PRGM + 20)
+
+// Collections
+#define RC_POOLTXTCOLL_BEGIN RC_POOLTXTCOLL
+
+#define RC_POOLCOLL_TEXT_BEGIN RC_POOLTXTCOLL
+#define RC_POOLCOLL_TEXT_END (RC_POOLTXTCOLL + 19)
+#define RC_POOLCOLL_LISTS_BEGIN (RC_POOLTXTCOLL + 20)
+#define RC_POOLCOLL_LISTS_END (RC_POOLTXTCOLL + 69)
+#define RC_POOLCOLL_EXTRA_BEGIN (RC_POOLTXTCOLL + 70)
+#define RC_POOLCOLL_EXTRA_END (RC_POOLTXTCOLL + 89)
+#define RC_POOLCOLL_REGISTER_BEGIN (RC_POOLTXTCOLL + 90)
+#define RC_POOLCOLL_REGISTER_END (RC_POOLTXTCOLL + 119)
+#define RC_POOLCOLL_DOC_BEGIN (RC_POOLTXTCOLL + 130)
+#define RC_POOLCOLL_DOC_END (RC_POOLTXTCOLL + 139)
+#define RC_POOLCOLL_HTML_BEGIN (RC_POOLTXTCOLL + 140)
+#define RC_POOLCOLL_HTML_END (RC_POOLTXTCOLL + 169)
+
+#define RC_POOLTXTCOLL_END RC_POOLCOLL_HTML_END
+
+#define RC_POOLCOLL_PRGM_PRGM__BEGIN RC_POOLTXTCOLL_PRGM
+
+#define RC_POOLCOLL_PRGM_TEXT_BEGIN RC_POOLTXTCOLL_PRGM
+#define RC_POOLCOLL_PRGM_TEXT_END (RC_POOLTXTCOLL_PRGM + 19)
+#define RC_POOLCOLL_PRGM_LISTS_BEGIN (RC_POOLTXTCOLL_PRGM + 20)
+#define RC_POOLCOLL_PRGM_LISTS_END (RC_POOLTXTCOLL_PRGM + 69)
+#define RC_POOLCOLL_PRGM_EXTRA_BEGIN (RC_POOLTXTCOLL_PRGM + 70)
+#define RC_POOLCOLL_PRGM_EXTRA_END (RC_POOLTXTCOLL_PRGM + 89)
+#define RC_POOLCOLL_PRGM_REGISTER_BEGIN (RC_POOLTXTCOLL_PRGM + 90)
+#define RC_POOLCOLL_PRGM_REGISTER_END (RC_POOLTXTCOLL_PRGM + 119)
+#define RC_POOLCOLL_PRGM_DOC_BEGIN (RC_POOLTXTCOLL_PRGM + 130)
+#define RC_POOLCOLL_PRGM_DOC_END (RC_POOLTXTCOLL_PRGM + 139)
+#define RC_POOLCOLL_PRGM_HTML_BEGIN (RC_POOLTXTCOLL_PRGM + 140)
+#define RC_POOLCOLL_PRGM_HTML_END (RC_POOLTXTCOLL_PRGM + 169)
+
+#define RC_POOLTXTCOLL_PRGM__END RC_POOLCOLL_PRGM_HTML_END
+
+// Poolvorlagen Seite
+#define RC_POOLPAGEDESC_BEGIN RC_POOLPAGEDESC
+#define RC_POOLPAGEDESC_END (RC_POOLPAGEDESC + 10)
+
+#define RC_POOLPAGEDESC_PRGM_BEGIN RC_POOLPAGEDESC_PRGM
+#define RC_POOLPAGEDESC_PRGM_END (RC_POOLPAGEDESC_PRGM + 10)
+
+// Poolvorlagen Numerierung
+#define RC_POOLNUMRULE_BEGIN RC_POOLNUMRULE
+#define RC_POOLNUMRULE_END (RC_POOLNUMRULE + 10)
+
+#define RC_POOLNUMRULE_PRGM_BEGIN RC_POOLNUMRULE_PRGM
+#define RC_POOLNUMRULE_PRGM_END (RC_POOLNUMRULE_PRGM + 10)
+
+// Envelp-Verzeichnis
+#define RC_ENVELP_BEGIN (RC_ENVELP )
+#define RC_ENVELP_END (RC_ENVELP + 99)
+
+// Statuszeile mit Laufbalken
+#define RC_STATLIN_STR_BEGIN (RC_STATLIN_STR)
+#define RC_STATLIN_STR_END (RC_STATLIN_STR + 49)
+
+// Gemeinsame Core-Strings
+#define RC_COMCORE_BEGIN (RC_COMMON_CORE)
+#define RC_COMCORE_END (RC_COMMON_CORE + 49)
+
+// Wizzards
+#define RC_WIZARD_BEGIN RC_WIZARD
+#define RC_WIZARD_END (RC_WIZARD + 99)
+
+// Shell-Verzeichnis
+#define RC_SHELLS_BEGIN RC_SHELLS
+#define RC_SHELLS_END (RC_SHELLS + 99)
+
+// PopUpMenu's
+#define RC_POPUPS_BEGIN RC_POPUPS
+#define RC_POPUPS_END (RC_POPUPS + 99)
+
+// Strings fuer ConfigItems in div. Verzeichnissen
+#define RC_CFGITEMS_BEGIN RC_CFGITEMS
+#define RC_CFGITEMS_END (RC_CFGITEMS + 99)
+
+// Lingu
+#define RC_LINGU_BEGIN RC_LINGU
+#define RC_LINGU_END (RC_LINGU + 99)
+
+
+#endif
diff --git a/sw/inc/redline.hxx b/sw/inc/redline.hxx
new file mode 100644
index 000000000000..51b54f0e1630
--- /dev/null
+++ b/sw/inc/redline.hxx
@@ -0,0 +1,312 @@
+/*************************************************************************
+ *
+ * $RCSfile: redline.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _REDLINE_HXX
+#define _REDLINE_HXX
+
+#ifndef _DATETIME_HXX //autogen
+#include <tools/datetime.hxx>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef _PAM_HXX
+#include "pam.hxx"
+#endif
+#ifndef _REDLENUM_HXX
+#include "redlenum.hxx" // enums
+#endif
+
+class SfxItemSet;
+
+class SwRedlineExtraData
+{
+ SwRedlineExtraData( const SwRedlineExtraData& );
+ SwRedlineExtraData& operator=( const SwRedlineExtraData& );
+
+protected:
+ SwRedlineExtraData() {}
+
+public:
+ virtual ~SwRedlineExtraData();
+ virtual SwRedlineExtraData* CreateNew() const = 0;
+
+ virtual void Accept( SwPaM& rPam ) const;
+ virtual void Reject( SwPaM& rPam ) const;
+ virtual int operator == ( const SwRedlineExtraData& ) const;
+};
+
+class SwRedlineExtraData_FmtColl : public SwRedlineExtraData
+{
+ String sFmtNm;
+ SfxItemSet* pSet;
+ USHORT nPoolId;
+public:
+ SwRedlineExtraData_FmtColl( const String& rColl, USHORT nPoolFmtId,
+ const SfxItemSet* pSet = 0 );
+ virtual ~SwRedlineExtraData_FmtColl();
+ virtual SwRedlineExtraData* CreateNew() const;
+ virtual void Reject( SwPaM& rPam ) const;
+ virtual int operator == ( const SwRedlineExtraData& ) const;
+
+ void SetItemSet( const SfxItemSet& rSet );
+};
+
+class SwRedlineExtraData_Format : public SwRedlineExtraData
+{
+ USHORT nWhich;
+public:
+ SwRedlineExtraData_Format( USHORT nWhich );
+ virtual SwRedlineExtraData* CreateNew() const;
+ virtual void Reject( SwPaM& rPam ) const;
+ virtual int operator == ( const SwRedlineExtraData& ) const;
+};
+
+
+class SwRedlineData
+{
+ friend class SwRedline;
+ SwRedlineData* pNext; // Verweis auf weitere Daten
+ SwRedlineExtraData* pExtraData;
+
+ String sComment;
+ DateTime aStamp;
+ SwRedlineType eType;
+ USHORT nAuthor, nSeqNo;
+
+public:
+ SwRedlineData( SwRedlineType eT, USHORT nAut );
+ SwRedlineData( const SwRedlineData& rCpy, BOOL bCpyNext = TRUE );
+
+ // fuer sw3io: pNext/pExtraData gehen in eigenen Besitz ueber!
+ SwRedlineData( SwRedlineType eT, USHORT nAut, const DateTime& rDT,
+ const String& rCmnt, SwRedlineData* pNxt,
+ SwRedlineExtraData* pExtraData = 0 );
+
+ ~SwRedlineData();
+
+ int operator==( const SwRedlineData& rCmp ) const
+ {
+ return nAuthor == rCmp.nAuthor &&
+ eType == rCmp.eType &&
+ sComment == rCmp.sComment &&
+ (( !pNext && !rCmp.pNext ) ||
+ ( pNext && rCmp.pNext && *pNext == *rCmp.pNext )) &&
+ (( !pExtraData && !rCmp.pExtraData ) ||
+ ( pExtraData && rCmp.pExtraData &&
+ *pExtraData == *rCmp.pExtraData ));
+ }
+ int operator!=( const SwRedlineData& rCmp ) const
+ { return !operator==( rCmp ); }
+
+ SwRedlineType GetType() const
+ { return SwRedlineType( eType & REDLINE_NO_FLAG_MASK); }
+ SwRedlineType GetRealType() const { return eType; }
+ USHORT GetAuthor() const { return nAuthor; }
+ const String& GetComment() const { return sComment; }
+ const DateTime& GetTimeStamp() const { return aStamp; }
+ inline const SwRedlineData* Next() const{ return pNext; }
+
+ void SetTimeStamp( const DateTime& rDT)
+ { aStamp = rDT; aStamp.SetSec( 0 ); aStamp.Set100Sec( 0 ); }
+ void SetComment( const String& rS ) { sComment = rS; }
+ void SetAutoFmtFlag()
+ { eType = SwRedlineType( eType | REDLINE_FORM_AUTOFMT ); }
+ int CanCombine( const SwRedlineData& rCmp ) const
+ {
+ return nAuthor == rCmp.nAuthor &&
+ eType == rCmp.eType &&
+ sComment == rCmp.sComment &&
+ GetTimeStamp() == rCmp.GetTimeStamp() &&
+ (( !pNext && !rCmp.pNext ) ||
+ ( pNext && rCmp.pNext &&
+ pNext->CanCombine( *rCmp.pNext ))) &&
+ (( !pExtraData && !rCmp.pExtraData ) ||
+ ( pExtraData && rCmp.pExtraData &&
+ *pExtraData == *rCmp.pExtraData ));
+ }
+
+ // ExtraData wird kopiert, der Pointer geht also NICHT in den Besitz
+ // des RedlineObjectes!
+ void SetExtraData( const SwRedlineExtraData* pData );
+ const SwRedlineExtraData* GetExtraData() const { return pExtraData; }
+
+ // fuers UI-seitige zusammenfassen von Redline-Actionen. Wird z.Z. nur
+ // fuers Autoformat mit Redline benoetigt. Der Wert != 0 bedeutet dabei,
+ // das es noch weitere geben kann!
+ USHORT GetSeqNo() const { return nSeqNo; }
+ void SetSeqNo( USHORT nNo ) { nSeqNo = nNo; }
+};
+
+
+class SwRedline : public SwPaM
+{
+ SwRedlineData* pRedlineData;
+ SwNodeIndex* pCntntSect;
+ BOOL bDelLastPara : 1;
+ BOOL bIsLastParaDelete : 1;
+ BOOL bIsVisible : 1;
+
+ void MoveToSection();
+ void CopyToSection();
+ void DelCopyOfSection();
+ void MoveFromSection();
+
+public:
+ SwRedline( SwRedlineType eType, const SwPaM& rPam );
+ SwRedline( SwRedlineType eTyp, const SwPosition& rPos );
+ SwRedline( const SwRedlineData& rData, const SwPaM& rPam );
+ SwRedline( const SwRedlineData& rData, const SwPosition& rPos );
+ // fuer sw3io: pData geht in eigenen Besitz ueber!
+ SwRedline( SwRedlineData* pData, const SwPosition& rPos, BOOL bVsbl,
+ BOOL bDelLP, BOOL bIsPD ) :
+ SwPaM( rPos ), pCntntSect( 0 ), pRedlineData( pData ),
+ bIsVisible( bVsbl ), bDelLastPara( bDelLP ), bIsLastParaDelete( bIsPD )
+ {}
+ SwRedline( const SwRedline& );
+ virtual ~SwRedline();
+
+ SwNodeIndex* GetContentIdx() const { return pCntntSect; }
+ // fuers Undo
+ void SetContentIdx( const SwNodeIndex* );
+
+ BOOL IsVisible() const { return bIsVisible; }
+ BOOL IsDelLastPara() const { return bDelLastPara; }
+ BOOL IsLastParaDelete() const { return bIsLastParaDelete; }
+
+ // das BOOL besagt, ob nach dem setzen der Pos kein Bereich mehr
+ // aufgespannt ist. -> TRUE, ansonten Bereich und FALSE
+ void SetStart( const SwPosition& rPos, SwPosition* pSttPtr = 0 )
+ {
+ if( !pSttPtr ) pSttPtr = Start();
+ *pSttPtr = rPos;
+ }
+ void SetEnd( const SwPosition& rPos, SwPosition* pEndPtr = 0 )
+ {
+ if( !pEndPtr ) pEndPtr = End();
+ *pEndPtr = rPos;
+ }
+ // liegt eine gueltige Selektion vor?
+ BOOL HasValidRange() const;
+
+ USHORT GetAuthor() const { return pRedlineData->GetAuthor(); }
+ const DateTime& GetTimeStamp() const { return pRedlineData->GetTimeStamp(); }
+ SwRedlineType GetType() const { return pRedlineData->GetType(); }
+ SwRedlineType GetRealType() const { return pRedlineData->GetRealType(); }
+ const SwRedlineData& GetRedlineData() const { return *pRedlineData; }
+ int operator==( const SwRedlineData& rCmp ) const
+ { return *pRedlineData == rCmp; }
+ int operator!=( const SwRedlineData& rCmp ) const
+ { return *pRedlineData != rCmp; }
+ void SetAutoFmtFlag() { pRedlineData->SetAutoFmtFlag(); }
+
+ USHORT GetStackCount() const;
+ USHORT GetAuthor( USHORT nPos ) const;
+ const String& GetAuthorString( USHORT nPos = 0 ) const;
+ const DateTime& GetTimeStamp( USHORT nPos ) const;
+ SwRedlineType GetRealType( USHORT nPos ) const;
+ SwRedlineType GetType( USHORT nPos ) const
+ { return SwRedlineType( GetRealType( nPos ) & REDLINE_NO_FLAG_MASK); }
+ const String& GetComment( USHORT nPos ) const;
+
+ const String& GetComment() const { return pRedlineData->GetComment(); }
+ void SetComment( const String& rS ) { pRedlineData->SetComment( rS ); }
+
+ // ExtraData wird kopiert, der Pointer geht also NICHT in den Besitz
+ // des RedlineObjectes!
+ void SetExtraData( const SwRedlineExtraData* pData )
+ { pRedlineData->SetExtraData( pData ); }
+ const SwRedlineExtraData* GetExtraData() const
+ { return pRedlineData->GetExtraData(); }
+
+ // fuers UI-seitige zusammenfassen von Redline-Actionen. Wird z.Z. nur
+ // fuers Autoformat mit Redline benoetigt. Der Wert != 0 bedeutet dabei,
+ // das es noch weitere geben kann!
+ USHORT GetSeqNo() const { return pRedlineData->GetSeqNo(); }
+ void SetSeqNo( USHORT nNo ) { pRedlineData->SetSeqNo( nNo ); }
+
+ // Beim Hide/ShowOriginal wird 2 mal ueber die Liste gelaufen, damit
+ // die Del-Redlines per Copy und Delete versteckt werden. Beim Move
+ // wird sonst die Attributierung falsch behandelt.
+ // Alle anderen Aufrufer muessen immer 0 angeben.
+ void CallDisplayFunc( USHORT nLoop = 0 );
+ void Show( USHORT nLoop = 0 );
+ void Hide( USHORT nLoop = 0 );
+ void ShowOriginal( USHORT nLoop = 0 );
+
+ void InvalidateRange(); // das Layout anstossen
+
+ BOOL IsOwnRedline( const SwRedline& rRedl ) const
+ { return GetAuthor() == rRedl.GetAuthor(); }
+ BOOL CanCombine( const SwRedline& rRedl ) const;
+
+ void PushData( const SwRedline& rRedl, BOOL bOwnAsNext = TRUE );
+ BOOL PopData();
+
+ int operator==( const SwRedline& ) const;
+ int operator<( const SwRedline& ) const;
+};
+
+
+
+
+
+#endif
diff --git a/sw/inc/redlnaut.hxx b/sw/inc/redlnaut.hxx
new file mode 100644
index 000000000000..1930c1febe9c
--- /dev/null
+++ b/sw/inc/redlnaut.hxx
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * $RCSfile: redlnaut.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _REDLNAUT_HXX
+#define _REDLNAUT_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _SV_COLOR_HXX //autogen
+#include <vcl/color.hxx>
+#endif
+
+#include "swtypes.hxx"
+
+class SfxItemSet;
+
+class SwRedlineAuthor
+{
+ String sAuthor;
+ Color aChgLineColor;
+ SfxItemSet *pInsAttrSet, *pDelAttrSet, *pFmtAttrSet;
+ SwHoriOrient eChgLineOrient;
+ BYTE cDelChar;
+public:
+ SwRedlineAuthor( SwAttrPool& rPool, const String& );
+ SwRedlineAuthor( const SwRedlineAuthor& );
+ ~SwRedlineAuthor();
+
+ SwRedlineAuthor& operator=( const SwRedlineAuthor& );
+
+ const String& GetAuthor() const { return sAuthor; }
+
+ SfxItemSet& GetInsAttrSet() const { return *pInsAttrSet; }
+ SfxItemSet& GetDelAttrSet() const { return *pDelAttrSet; }
+ SfxItemSet& GetFmtAttrSet() const { return *pFmtAttrSet; }
+
+ const Color& GetChgLineColor() const { return aChgLineColor; }
+ void SetChgLineColor( const Color& rCol ) { aChgLineColor = rCol; }
+
+ SwHoriOrient GetChgLineOrient() const { return eChgLineOrient; }
+ void SetChgLineOrient( SwHoriOrient eVal ) { eChgLineOrient = eVal; }
+
+ BYTE GetDelChar() const { return cDelChar; }
+ void SetDelChar( BYTE cCh = 0 ) { cDelChar = cCh; }
+};
+
+
+#endif
diff --git a/sw/inc/reffld.hxx b/sw/inc/reffld.hxx
new file mode 100644
index 000000000000..f48af6c4901e
--- /dev/null
+++ b/sw/inc/reffld.hxx
@@ -0,0 +1,162 @@
+/*************************************************************************
+ *
+ * $RCSfile: reffld.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _REFFLD_HXX
+#define _REFFLD_HXX
+
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+
+class SfxPoolItem;
+class SwDoc;
+class SwTxtAttr;
+class SwTxtNode;
+
+enum REFERENCESUBTYPE
+{
+ REF_SETREFATTR = 0,
+ REF_SEQUENCEFLD,
+ REF_BOOKMARK,
+ REF_OUTLINE,
+ REF_FOOTNOTE,
+ REF_ENDNOTE
+};
+
+enum REFERENCEMARK
+{
+ REF_BEGIN,
+ REF_PAGE = REF_BEGIN,
+ REF_CHAPTER,
+ REF_CONTENT,
+ REF_UPDOWN,
+ REF_PAGE_PGDESC,
+ REF_ONLYNUMBER,
+ REF_ONLYCAPTION,
+ REF_ONLYSEQNO,
+ REF_END
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Referenz holen
+ --------------------------------------------------------------------*/
+
+class SwGetRefFieldType : public SwFieldType
+{
+ SwDoc* pDoc;
+public:
+ SwGetRefFieldType(SwDoc* pDoc );
+ virtual SwFieldType* Copy() const;
+
+ SwDoc* GetDoc() const { return pDoc; }
+ // ueberlagert, um alle Ref-Felder zu updaten
+ virtual void Modify( SfxPoolItem *, SfxPoolItem * );
+
+ void MergeWithOtherDoc( SwDoc& rDestDoc );
+
+ static SwTxtNode* FindAnchor( SwDoc* pDoc, const String& rRefMark,
+ USHORT nSubType, USHORT nSeqNo,
+ USHORT* pStt, USHORT* pEnd = 0 );
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Referenzfeld
+ --------------------------------------------------------------------*/
+
+class SwGetRefField : public SwField
+{
+ String sSetRefName;
+ String sTxt;
+ USHORT nSubType;
+ USHORT nSeqNo;
+public:
+ SwGetRefField( SwGetRefFieldType*, const String& rSetRef,
+ USHORT nSubType, USHORT nSeqNo, ULONG nFmt );
+
+ virtual String GetCntnt(BOOL bName = FALSE) const;
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+
+ const String& GetSetRefName() const { return sSetRefName; }
+
+ void UpdateField();
+ void SetExpand( const String& rStr ) { sTxt = rStr; }
+
+ // SubType erfragen/setzen
+ virtual USHORT GetSubType() const;
+ virtual void SetSubType( USHORT n );
+
+ // SequenceNo erfragen/setzen (nur fuer REF_SEQUENCEFLD interressant)
+ USHORT GetSeqNo() const { return nSeqNo; }
+ void SetSeqNo( USHORT n ) { nSeqNo = n; }
+
+ // Name der Referenz
+ virtual const String& GetPar1() const;
+ virtual void SetPar1(const String& rStr);
+
+ virtual String GetPar2() const;
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+
+#endif // _REFFLD_HXX
+
diff --git a/sw/inc/ring.hxx b/sw/inc/ring.hxx
new file mode 100644
index 000000000000..750c7ec1a007
--- /dev/null
+++ b/sw/inc/ring.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * $RCSfile: ring.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _RING_HXX
+#define _RING_HXX
+
+class Ring
+{
+ Ring *pNext;
+ Ring* pPrev; // zur Optimierung, damit das ein/ausketten schneller geht!
+
+protected:
+ Ring() { pNext = this; pPrev = this; }
+ Ring( Ring * );
+public:
+ virtual ~Ring();
+ void MoveTo( Ring *pDestRing );
+ void MoveRingTo( Ring *pDestRing );
+
+ Ring* GetNext() const { return pNext; }
+ Ring* GetPrev() const { return pPrev; }
+};
+
+
+#endif
diff --git a/sw/inc/rolbck.hxx b/sw/inc/rolbck.hxx
new file mode 100644
index 000000000000..434d3edc0462
--- /dev/null
+++ b/sw/inc/rolbck.hxx
@@ -0,0 +1,433 @@
+/*************************************************************************
+ *
+ * $RCSfile: rolbck.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ROLBCK_HXX
+#define _ROLBCK_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_USHORTS
+#define _SVSTDARR_USHORTSSORT
+#include <svtools/svstdarr.hxx>
+#endif
+
+#ifndef _SFXITEMSET_HXX
+#include <svtools/itemset.hxx>
+#endif
+
+//Nur die History anziehen, um das docnew.cxx gegen die CLOOK's zu behaupten.
+
+class SwDoc;
+class SwFmt;
+class SwFmtColl;
+class SwHstryHint;
+class SwBookmark;
+class SwTxtAttr;
+class SfxPoolItem;
+class SwTxtNode;
+class SwCntntNode;
+class SwUndoSaveSection;
+class SwTxtFtn;
+class SwTxtFlyCnt;
+class SwUndoDelLayFmt;
+class SwFlyFrmFmt;
+class SwFmtFld;
+class SwTxtFld;
+class SwFieldType;
+class SwTxtTOXMark;
+class SwTxtRefMark;
+class SwFrmFmt;
+class SwNodeIndex;
+class SwpHints;
+class SwFmtChain;
+class SwNode;
+
+#ifndef ROLBCK_HISTORY_ONLY
+
+#ifndef _TOX_HXX
+#include <tox.hxx>
+#endif
+
+#ifndef PRODUCT
+class Writer;
+#define OUT_HSTR_HINT( name ) \
+ friend Writer& OutUndo_Hstr_ ## name( Writer&, const SwHstryHint& );
+#else
+#define OUT_HSTR_HINT( name )
+#endif
+
+enum HISTORY_HINT {
+ HSTRY_SETFMTHNT,
+ HSTRY_RESETFMTHNT,
+ HSTRY_SETTXTHNT,
+ HSTRY_SETTXTFLDHNT,
+ HSTRY_SETREFMARKHNT,
+ HSTRY_SETTOXMARKHNT,
+ HSTRY_RESETTXTHNT,
+ HSTRY_SETFTNHNT,
+ HSTRY_CHGFMTCOLL,
+ HSTRY_FLYCNT,
+ HSTRY_BOOKMARK,
+ HSTRY_SETATTRSET,
+ HSTRY_RESETATTRSET,
+ HSTRY_CHGFLYANCHOR,
+ HSTRY_CHGFLYCHAIN,
+ HSTRY_END
+};
+class SwHstryHint
+{
+ HISTORY_HINT eWhichId;
+public:
+ SwHstryHint( HISTORY_HINT eWh ) : eWhichId( eWh ) {}
+ virtual ~SwHstryHint() {} // jetzt inline
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet ) = 0;
+ HISTORY_HINT Which() const { return eWhichId; }
+};
+
+class SwSetFmtHint : public SwHstryHint
+{
+ SfxPoolItem* pAttr;
+ ULONG nNode;
+ USHORT nSetStt;
+ BYTE nNumLvl;
+ BOOL bNumStt;
+public:
+ SwSetFmtHint( const SfxPoolItem* pFmtHt, ULONG nNode );
+ virtual ~SwSetFmtHint();
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+ OUT_HSTR_HINT(SetFmtHnt)
+};
+
+class SwResetFmtHint : public SwHstryHint
+{
+ ULONG nNode;
+ USHORT nWhich;
+public:
+ SwResetFmtHint( const SfxPoolItem* pFmtHt, ULONG nNode );
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+ OUT_HSTR_HINT(ResetFmtHnt)
+};
+
+class SwSetTxtHint : public SwHstryHint
+{
+ SfxPoolItem *pAttr;
+ ULONG nNode;
+ xub_StrLen nStart, nEnd;
+public:
+ SwSetTxtHint( /*const*/ SwTxtAttr* pTxtHt, ULONG nNode );
+ virtual ~SwSetTxtHint();
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+ OUT_HSTR_HINT(SetTxtHnt)
+};
+
+class SwSetTxtFldHint : public SwHstryHint
+{
+ SwFmtFld* pFld;
+ SwFieldType* pFldType;
+ ULONG nNode;
+ xub_StrLen nPos;
+ USHORT nFldWhich;
+public:
+ SwSetTxtFldHint( SwTxtFld* pTxtFld, ULONG nNode );
+ virtual ~SwSetTxtFldHint();
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+ OUT_HSTR_HINT(SetTxtFldHnt)
+};
+
+class SwSetRefMarkHint : public SwHstryHint
+{
+ String aRefName;
+ ULONG nNode;
+ xub_StrLen nStart, nEnd;
+public:
+ SwSetRefMarkHint( SwTxtRefMark* pTxtHt, ULONG nNode );
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+ OUT_HSTR_HINT(SetRefMarkHnt)
+};
+
+class SwSetTOXMarkHint : public SwHstryHint
+{
+ String aTOXName;
+ TOXTypes eTOXTypes;
+ SwTOXMark aTOXMark;
+ ULONG nNode;
+ xub_StrLen nStart, nEnd;
+public:
+ SwSetTOXMarkHint( SwTxtTOXMark* pTxtHt, ULONG nNode );
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+ int IsEqual( const SwTOXMark& rCmp ) const;
+ OUT_HSTR_HINT(SetToxMarkHnt)
+};
+
+class SwResetTxtHint : public SwHstryHint
+{
+ ULONG nNode;
+ xub_StrLen nStart, nEnd;
+ USHORT nAttr;
+public:
+ SwResetTxtHint( USHORT nWhich, xub_StrLen nStt, xub_StrLen nEnd, ULONG nNode );
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+
+ USHORT GetWhich() const { return nAttr; }
+ ULONG GetNode() const { return nNode; }
+ xub_StrLen GetCntnt() const { return nStart; }
+ OUT_HSTR_HINT(ResetTxtHnt)
+};
+
+class SwSetFtnHint : public SwHstryHint
+{
+ String aFtnStr;
+ SwUndoSaveSection* pUndo;
+ ULONG nNode;
+ xub_StrLen nStart;
+ BOOL bEndNote;
+public:
+ SwSetFtnHint( SwTxtFtn* pTxtFtn, ULONG nNode );
+ SwSetFtnHint( const SwTxtFtn& );
+ ~SwSetFtnHint();
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+
+ const SwUndoSaveSection* GetUndoObj() const { return pUndo; }
+ SwUndoSaveSection* GetUndoObj() { return pUndo; }
+ OUT_HSTR_HINT(SetFtnHnt)
+};
+
+class SwChgFmtColl : public SwHstryHint
+{
+ const SwFmtColl* pColl;
+ ULONG nNode;
+ USHORT nSetStt;
+ BYTE nNdWhich, nNumLvl;
+ BOOL bNumStt;
+public:
+ SwChgFmtColl( const SwFmtColl* pColl, ULONG nNode, BYTE nNodeWhich );
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+ OUT_HSTR_HINT(ChgFmtColl)
+};
+
+class SwHstryTxtFlyCnt : public SwHstryHint
+{
+ SwUndoDelLayFmt* pUndo;
+public:
+ SwHstryTxtFlyCnt( SwTxtFlyCnt* pTxtFly ); // fuer Zeichengebundene
+ SwHstryTxtFlyCnt( SwFlyFrmFmt* pFlyFmt ); // fuer Absatzgebundene
+ ~SwHstryTxtFlyCnt();
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+ SwUndoDelLayFmt* GetUDelLFmt() { return pUndo; }
+ OUT_HSTR_HINT(FlyCnt)
+};
+
+class SwHstryBookmark : public SwHstryHint
+{
+ String aName, aShortName;
+ ULONG nNode1, nNode2;
+ xub_StrLen nCntnt1, nCntnt2;
+ USHORT nKeyCode;
+ BYTE nTyp;
+public:
+ enum { BKMK_POS = 1, BKMK_OTHERPOS = 2 };
+ SwHstryBookmark( const SwBookmark&, BYTE nTyp );
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+ OUT_HSTR_HINT(Bookmark)
+
+ BOOL IsEqualBookmark( const SwBookmark& );
+};
+
+class SwHstrySetAttrSet : public SwHstryHint
+{
+ SfxItemSet aOldSet;
+ SvUShorts aResetArr;
+ ULONG nNode;
+ USHORT nSetStt;
+ BYTE nNumLvl;
+ BOOL bNumStt;
+public:
+ SwHstrySetAttrSet( const SfxItemSet& rSet, ULONG nNode,
+ const SvUShortsSort& rSetArr );
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+ OUT_HSTR_HINT(SetAttrSet)
+};
+
+
+class SwHstryResetAttrSet : public SwHstryHint
+{
+ ULONG nNode;
+ xub_StrLen nStart, nEnd;
+ SvUShorts aArr;
+public:
+ SwHstryResetAttrSet( const SfxItemSet& rSet, ULONG nNode,
+ xub_StrLen nStt = STRING_MAXLEN,
+ xub_StrLen nEnd = STRING_MAXLEN );
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+
+ const SvUShorts& GetArr() const { return aArr; }
+ ULONG GetNode() const { return nNode; }
+ xub_StrLen GetCntnt() const { return nStart; }
+ OUT_HSTR_HINT(ResetAttrSet)
+};
+
+class SwHstryChgFlyAnchor : public SwHstryHint
+{
+ SwFrmFmt* pFmt;
+ ULONG nOldPos;
+ xub_StrLen nOldCnt;
+public:
+ SwHstryChgFlyAnchor( const SwFrmFmt& rFmt );
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+};
+
+class SwHstryChgFlyChain : public SwHstryHint
+{
+ SwFlyFrmFmt *pPrevFmt, *pNextFmt, *pFlyFmt;
+public:
+ SwHstryChgFlyChain( const SwFlyFrmFmt& rFmt, const SwFmtChain& rAttr );
+ virtual void SetInDoc( SwDoc* pDoc, BOOL bTmpSet );
+};
+
+
+#endif
+
+typedef SwHstryHint* SwHstryHintPtr;
+SV_DECL_PTRARR_DEL( SwpHstry, SwHstryHintPtr, 0, 2 )
+class SwHistory : private SwpHstry
+{
+ friend class SwDoc; // eig. darf nur SwDoc::DelUndoObj zugreifen
+ friend class SwUndoWriter; // fuer den Undo/Redo-Writer
+ friend class SwRegHistory; // fuer Insert, von Histoy-Attributen
+
+ USHORT nEndDiff;
+public:
+ SwHistory( USHORT nInitSz = 0, USHORT nGrowSz = 2 );
+ ~SwHistory();
+ // loesche die History ab Start bis zum Ende
+ void Delete( USHORT nStart = 0 );
+ // alle Objecte zwischen nStart und Array-Ende aufrufen und loeschen
+ BOOL Rollback( SwDoc* pDoc, USHORT nStart = 0 );
+ // alle Objecte zwischen nStart und temporaeren Ende aufrufen und
+ // den Start als temporaeres Ende speichern
+ BOOL TmpRollback( SwDoc* pDoc, USHORT nStart, BOOL ToFirst = TRUE );
+
+ void Add( const SfxPoolItem* pOldValue, const SfxPoolItem* pNewValue,
+ ULONG nNodeIdx );
+ void Add( const SwTxtAttr* pTxtHt, ULONG nNodeIdx,
+ BOOL bNewAttr = TRUE );
+ void Add( const SwFmtColl*, ULONG nNodeIdx, BYTE nWhichNd );
+ void Add( const SwFmt*, ULONG nNodeIdx, BYTE nWhichNd );
+ void Add( const SwBookmark&, BYTE );
+ void Add( const SwFrmFmt& rFmt );
+ void Add( const SwFlyFrmFmt&, USHORT& rSetPos );
+ void Add( const SwTxtFtn& );
+
+ USHORT Count() const { return SwpHstry::Count(); }
+ USHORT GetTmpEnd() const { return SwpHstry::Count() - nEndDiff; }
+ USHORT SetTmpEnd( USHORT nTmpEnd ); // returne alten Wert
+ SwHstryHint* operator[]( USHORT nPos ) const { return SwpHstry::operator[](nPos); }
+
+ // fuer SwUndoDelete::Undo/Redo
+ void Move( USHORT nPos, SwHistory *pIns,
+ USHORT nStart = 0, USHORT nEnd = USHRT_MAX )
+ {
+ SwpHstry::Insert( pIns, nPos, nStart, nEnd );
+ SwpHstry* pDel = pIns;
+ pDel->Remove( nStart, nEnd == USHRT_MAX
+ ? pDel->Count() - nStart
+ : nEnd );
+ }
+
+ // Hilfs-Methoden zum Sichern von Attributen in der History.
+ // Wird von UndoKlasse benutzt (Delete/Overwrite/Inserts)
+ void CopyAttr( const SwpHints* pHts, ULONG nNodeIdx, xub_StrLen nStt,
+ xub_StrLen nEnd, BOOL bFields );
+ void CopyFmtAttr( const SfxItemSet& rSet, ULONG nNodeIdx );
+};
+
+#ifndef ROLBCK_HISTORY_ONLY
+
+class SwRegHistory : public SwClient
+{
+ SvUShortsSort aSetWhichIds;
+ SwHistory* pHstry;
+ const SwCntntNode * pNode;
+ ULONG nNodeIdx;
+
+ void _MakeSetWhichIds();
+public:
+ SwRegHistory( SwHistory* pHst );
+ SwRegHistory( SwTxtNode* pTxtNd, SwTxtAttr* pTxtHt,
+ USHORT nFlags, SwHistory* pHst );
+ SwRegHistory( SwTxtNode* pTxtNode, const SfxItemSet& rSet,
+ xub_StrLen nStart, xub_StrLen nEnd, USHORT nFlags,
+ SwHistory* pHst );
+ SwRegHistory( const SwNode& rNd, SwHistory* pHst );
+ SwRegHistory( SwModify* pRegIn, const SwNode& rNd, SwHistory* pHst );
+
+ virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew );
+ void Add( SwTxtAttr* pHt, const BOOL bNew = FALSE );
+
+ void RegisterInModify( SwModify* pRegIn, const SwNode& rNd );
+};
+
+#endif
+
+
+#endif // _ROLBCK_HXX
+
diff --git a/sw/inc/section.hxx b/sw/inc/section.hxx
new file mode 100644
index 000000000000..21ce689c636a
--- /dev/null
+++ b/sw/inc/section.hxx
@@ -0,0 +1,444 @@
+/*************************************************************************
+ *
+ * $RCSfile: section.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SECTION_HXX
+#define _SECTION_HXX
+
+
+#ifndef _LNKBASE_HXX //autogen
+#include <so3/lnkbase.hxx>
+#endif
+#ifndef _RTTI_HXX //autogen
+#include <tools/rtti.hxx>
+#endif
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+#ifndef _SO2REF_HXX //autogen
+#include <so3/so2ref.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+
+// Forward Deklaration
+class SwSectionFmt;
+class SwDoc;
+class SwSection;
+class SwTOXBase;
+
+#ifndef SW_DECL_SWSERVEROBJECT_DEFINED
+#define SW_DECL_SWSERVEROBJECT_DEFINED
+class SvPseudoObject;
+SO2_DECL_REF( SwServerObject )
+#endif
+
+SV_DECL_PTRARR( SwSections, SwSection*, 0, 4 )
+
+enum SectionType { CONTENT_SECTION,
+ TOX_HEADER_SECTION,
+ TOX_CONTENT_SECTION,
+ DDE_LINK_SECTION = OBJECT_CLIENT_DDE,
+ FILE_LINK_SECTION = OBJECT_CLIENT_FILE
+/*
+// verbleiben noch:
+ OBJECT_CLIENT_SO = 0x80,
+ OBJECT_CLIENT_OLE = 0x82,
+ OBJECT_CLIENT_OLE_CACHE = 0x83,
+*/
+ };
+
+enum LinkCreateType
+{
+ CREATE_NONE, // nichts weiter tun
+ CREATE_CONNECT, // Link gleich connecten
+ CREATE_UPDATE // Link connecten und updaten
+};
+
+
+class SwSection : public SwClient
+{
+ // damit beim Anlegen/Loeschen von Frames das Flag richtig gepflegt wird!
+ friend class SwSectionNode;
+ // the "read CTOR" of SwSectionFrm have to change the Hiddenflag
+ friend class SwSectionFrm;
+
+ String sSectionNm;
+ String sCondition; // erstmal, vielleicht auch mal ein Feld ??
+ String sLinkFileName, sLinkFilePassWd;
+
+ SwServerObjectRef refObj; // falls DataServer -> Pointer gesetzt
+ SvBaseLinkRef refLink;
+
+ SectionType eType;
+
+ BOOL bProtectFlag : 1; // Flags fuer schnelle Abfragen, wird ueber
+ // Attribut im Format gesetzt
+ BOOL bHiddenFlag : 1; // Flag: Absaetze versteckt ?
+ BOOL bHidden : 1; // alle Absaetze nicht sichtbar ?
+ BOOL bCondHiddenFlag : 1; // Hiddenflag fuer die Bedingung ?
+ BOOL bConnectFlag : 1; // Flag: "Verbindung zum Server" vorhanden?
+
+
+ void _SetHiddenFlag( int bHidden, int bCondition );
+ void _SetProtectFlag( int bFlag ) { bProtectFlag = bFlag; }
+
+ int _IsProtect() const;
+
+public:
+ TYPEINFO(); // rtti
+
+ SwSection( SectionType eType, const String& rName,
+ SwSectionFmt* pFmt = 0 );
+ ~SwSection();
+
+ // kopiere nur die Daten der Section!
+ // Ableitung bleibt (beim Left) erhalten.
+ SwSection& operator=( const SwSection& );
+ int operator==( const SwSection& rCmp ) const;
+
+ const String& GetName() const { return sSectionNm; }
+ void SetName( const String& rName ) { sSectionNm = rName; }
+ const SectionType GetType() const { return eType; }
+ void SetType( SectionType eNew ) { eType = eNew; }
+
+ SwSectionFmt* GetFmt() { return (SwSectionFmt*)pRegisteredIn; }
+ SwSectionFmt* GetFmt() const { return (SwSectionFmt*)pRegisteredIn; }
+
+ virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew );
+
+ // setze die Hidden/Protected -> gesamten Baum updaten !
+ // (Attribute/Flags werden gesetzt/erfragt)
+ int IsHidden() const { return bHidden; }
+ int IsProtect() const { return GetFmt() ? _IsProtect()
+ : IsProtectFlag(); }
+
+ void SetHidden( int bFlag = TRUE );
+ void SetProtect( int bFlag = TRUE );
+
+ // erfrage die internen Flags (Zustand inklusive Parents nicht, was
+ // aktuell an der Section gesetzt ist!!)
+ int IsHiddenFlag() const { return bHiddenFlag; }
+ int IsProtectFlag() const { return bProtectFlag; }
+
+ void SetCondHidden( int bFlag = TRUE );
+ int IsCondHidden() const { return bCondHiddenFlag; }
+ // erfrage (auch ueber die Parents), ob diese Section versteckt sein soll.
+ int CalcHiddenFlag() const;
+
+
+ inline SwSection* GetParent() const;
+
+ // setze/erfrage die Bedingung
+ const String& GetCondition() const { return sCondition; }
+ void SetCondition( const String& rNew ) { sCondition = rNew; }
+
+ // setze/erfrage den gelinkten FileNamen
+ const String& GetLinkFileName() const;
+ void SetLinkFileName( const String& rNew, const String* pPassWd = 0 );
+ // Passwort des gelinkten Files (nur waehrend der Laufzeit gueltig!)
+ const String& GetLinkFilePassWd() const { return sLinkFilePassWd; }
+ void SetLinkFilePassWd( const String& rS ) { sLinkFilePassWd = rS; }
+
+ // Daten Server-Methoden
+ void SetRefObject( SvPseudoObject* pObj );
+ const SwServerObject* GetObject() const { return &refObj; }
+ SwServerObject* GetObject() { return &refObj; }
+ BOOL IsServer() const { return refObj.Is(); }
+
+ // Methoden fuer gelinkte Bereiche
+ USHORT GetUpdateType() const { return refLink->GetUpdateMode(); }
+ void SetUpdateType( USHORT nType ) { refLink->SetUpdateMode( nType ); }
+
+ BOOL IsConnected() const { return refLink.Is(); }
+ void UpdateNow() { refLink->Update(); }
+ void Disconnect() { refLink->Disconnect(); }
+
+ const SvBaseLink& GetBaseLink() const { return *refLink; }
+
+ void CreateLink( LinkCreateType eType );
+
+ void MakeChildLinksVisible( const SwSectionNode& rSectNd );
+
+ BOOL IsLinkType() const
+ { return DDE_LINK_SECTION == eType || FILE_LINK_SECTION == eType; }
+
+ // Flags fuer UI - Verbindung geklappt?
+ BOOL IsConnectFlag() const { return bConnectFlag; }
+ void SetConnectFlag( BOOL bFlag = TRUE ) { bConnectFlag = bFlag; }
+
+ // return the TOX base class if the section is a TOX section
+ const SwTOXBase* GetTOXBase() const;
+
+private:
+ // privater Constructor, weil nie kopiert werden darf !!
+ SwSection( const SwSection& );
+};
+
+
+enum SectionSort { SORTSECT_NOT, SORTSECT_NAME, SORTSECT_POS };
+
+class SwSectionFmt : public SwFrmFmt
+{
+ friend class SwDoc;
+ SwSection* _GetSection() const;
+ void UpdateParent(); // Parent wurde veraendert
+
+protected:
+ SwSectionFmt( SwSectionFmt* pDrvdFrm, SwDoc *pDoc );
+
+public:
+ TYPEINFO(); //Bereits in Basisklasse Client drin.
+ ~SwSectionFmt();
+
+ //Vernichtet alle Frms in aDepend (Frms werden per PTR_CAST erkannt).
+ virtual void DelFrms();
+
+ //Erzeugt die Ansichten
+ virtual void MakeFrms();
+
+ virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew );
+ // erfrage vom Format Informationen
+ virtual BOOL GetInfo( SfxPoolItem& ) const;
+
+ SwSection* GetSection() const { return (SwSection*)_GetSection(); }
+ inline SwSectionFmt* GetParent() const;
+ inline SwSection* GetParentSection() const;
+
+ // alle Sections, die von dieser abgeleitet sind
+ // - sortiert nach : Name oder Position oder unsortiert
+ // - alle oder nur die, die sich im normalten Nodes-Array befinden
+ USHORT GetChildSections( SwSections& rArr,
+ SectionSort eSort = SORTSECT_NOT,
+ int bAllSections = TRUE ) const;
+
+ // erfrage, ob sich die Section im Nodes-Array oder UndoNodes-Array
+ // befindet.
+ int IsInNodesArr() const;
+
+ SwSectionNode* GetSectionNode( BOOL bAlways = FALSE );
+ const SwSectionNode* GetSectionNode( BOOL bAlways = FALSE ) const
+ { return ((SwSectionFmt*)this)->GetSectionNode( bAlways ); }
+
+ // ist die Section eine gueltige fuers GlobalDocument?
+ const SwSection* GetGlobalDocSection() const;
+};
+
+// -------------- inlines ---------------------------------
+
+inline SwSection* SwSection::GetParent() const
+{
+ register SwSectionFmt* pFmt = GetFmt();
+ register SwSection* pRet = 0;
+ if( pFmt )
+ pRet = pFmt->GetParentSection();
+ return pRet;
+}
+
+inline SwSectionFmt* SwSectionFmt::GetParent() const
+{
+ register SwSectionFmt* pRet = 0;
+ if( GetRegisteredIn() )
+ pRet = PTR_CAST( SwSectionFmt, GetRegisteredIn() );
+ return pRet;
+}
+
+inline SwSection* SwSectionFmt::GetParentSection() const
+{
+ register SwSectionFmt* pParent = GetParent();
+ register SwSection* pRet = 0;
+ if( pParent )
+ pRet = pParent->_GetSection();
+ return pRet;
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.40 2000/09/18 16:03:26 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.39 2000/09/08 13:24:23 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.38 2000/04/19 15:41:58 jp
+ Unicode changes
+
+ Revision 1.37 2000/02/11 14:26:27 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.36 1999/11/18 17:52:28 jp
+ new: GetTOXBase
+
+ Revision 1.35 1999/07/27 18:20:18 JP
+ replace class SwTOXBaseRange with SwTOXBaseSection - TOX use now SwSections
+
+
+ Rev 1.34 27 Jul 1999 20:20:18 JP
+ replace class SwTOXBaseRange with SwTOXBaseSection - TOX use now SwSections
+
+ Rev 1.33 23 Jul 1999 15:53:40 JP
+ Bug #67465#: SwSectionFrm CTOR have to change the hiddenflag
+
+ Rev 1.32 21 Jun 1999 10:08:44 JP
+ new enums for new TOXs
+
+ Rev 1.31 25 Mar 1999 21:20:34 JP
+ Bug #63929#: autom. erzeugen von Tabs im Inhaltsverzeichnis
+
+ Rev 1.30 29 Oct 1998 14:26:18 JP
+ Task #58637#: neu Is-/SetConnectFlag
+
+ Rev 1.29 26 Oct 1998 17:29:44 JP
+ Bug #54342#: Section merkt sich das Passwort der Datei
+
+ Rev 1.28 12 Jun 1998 14:33:16 JP
+ Bug #51097#: im DTOR des SectionFormates ggfs. die ChildLinks sichbar machen
+
+ Rev 1.27 27 Apr 1998 21:16:44 JP
+ Set-/SetCondition: Flag fuers Convertieren entfernt
+
+ Rev 1.26 04 Aug 1997 16:43:06 MH
+ chg: header
+
+ Rev 1.25 23 Jun 1997 15:44:16 JP
+ neu: GetGlobalDocSection
+
+ Rev 1.24 13 Jun 1997 14:54:10 JP
+ neu: CalcHiddenFlag
+
+ Rev 1.23 29 Oct 1996 16:17:58 MA
+ includes
+
+ Rev 1.22 16 Oct 1996 16:31:22 JP
+ unbenutzte Methoden entfernt
+
+ Rev 1.21 10 Jul 1996 17:58:54 OM
+ LocalizeDBName in Expfld verschoben
+
+ Rev 1.20 10 Jul 1996 17:49:02 OM
+ LocalizeDBName in Expfld verschoben
+
+ Rev 1.19 25 Jun 1996 12:24:14 MA
+ headerfiles
+
+ Rev 1.18 11 Jun 1996 16:56:56 JP
+ GetLinkFileName: nicht mehr als Inline muessen ggfs. auf den Link zugreifen
+
+ Rev 1.17 24 May 1996 15:42:14 OM
+ Bedingungen in Bereichen wandeln
+
+ Rev 1.16 07 Mar 1996 18:11:16 JP
+ IsConnect - auf Is() abfragen
+
+ Rev 1.15 12 Feb 1996 18:16:18 JP
+ Erweiterung: gelinkte Bereiche
+
+ Rev 1.14 08 Feb 1996 19:14:26 JP
+ Erweiterung fuer gelinkte Bereiche
+
+ Rev 1.13 30 Nov 1995 12:54:36 JP
+ _SetHiddenFlag - beide Flags ueber geben (Hidden&CondHidden)
+
+ Rev 1.12 08 Nov 1995 10:03:06 OS
+ ChangeCondition => SetCondition
+
+ Rev 1.11 11 Jul 1995 18:39:46 JP
+ neu: GetSectionNode, Set-/IsCondHidden - Bedingung auswerten
+
+ Rev 1.10 29 Jun 1995 21:11:06 JP
+ Section mit Servier-Funktionalitaet
+
+ Rev 1.9 19 Jun 1995 16:45:16 MA
+ Umbau fuer daemliche Compiler
+
+ Rev 1.8 14 Jun 1995 16:07:46 JP
+ inline vor den inline Methoden
+
+ Rev 1.7 06 Apr 1995 12:42:24 JP
+ neu: Member & Methoden fuer den 'gelinkten' Filenamen
+
+ Rev 1.6 23 Feb 1995 17:38:46 JP
+ neu: SetName - setze neuen Namen an der Section
+
+ Rev 1.5 03 Feb 1995 18:17:30 JP
+ IsProtect jetzt inline
+
+ Rev 1.4 01 Feb 1995 10:52:32 JP
+ neu: erfrage/setze Bedingung
+
+ Rev 1.3 26 Jan 1995 18:47:56 JP
+ GetChildSection: erweitert fuer UI
+
+ Rev 1.2 26 Jan 1995 11:35:18 JP
+ SectionNode als friend der Section - zum Pfegen des HiddenFlags
+
+ Rev 1.1 24 Jan 1995 20:03:12 JP
+ neu: IsInNodesArr - abfrage, ob Section nicht im UndoNodes-Array steht
+
+ Rev 1.0 18 Jan 1995 19:22:58 JP
+ Initial revision.
+
+*************************************************************************/
+
+#endif
+ //_SECTION_HXX
+
diff --git a/sw/inc/segdefs.hxx b/sw/inc/segdefs.hxx
new file mode 100644
index 000000000000..5cd2ae79114c
--- /dev/null
+++ b/sw/inc/segdefs.hxx
@@ -0,0 +1,61 @@
+/*************************************************************************
+ *
+ * $RCSfile: segdefs.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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"
diff --git a/sw/inc/segdefs_.hxx b/sw/inc/segdefs_.hxx
new file mode 100644
index 000000000000..0b3e6e3a3e73
--- /dev/null
+++ b/sw/inc/segdefs_.hxx
@@ -0,0 +1,60 @@
+/*************************************************************************
+ *
+ * $RCSfile: segdefs_.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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/sw/inc/shellid.hxx b/sw/inc/shellid.hxx
new file mode 100644
index 000000000000..e6a9a3296e50
--- /dev/null
+++ b/sw/inc/shellid.hxx
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * $RCSfile: shellid.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SHELLID_HXX
+#define _SHELLID_HXX
+
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+
+/*--------------------------------------------------------------------
+ Beschreibung: Mapping fuer UI-Parameter
+ --------------------------------------------------------------------*/
+
+#define SW_BASESHELL (SFX_INTERFACE_SW_START + 1)
+#define SW_TEXTSHELL (SFX_INTERFACE_SW_START + 2)
+#define SW_LISTSHELL (SFX_INTERFACE_SW_START + 3)
+#define SW_TABSHELL (SFX_INTERFACE_SW_START + 4)
+#define SW_FRAMESHELL (SFX_INTERFACE_SW_START + 5)
+#define SW_GRFSHELL (SFX_INTERFACE_SW_START + 6)
+#define SW_OLESHELL (SFX_INTERFACE_SW_START + 7)
+#define SW_DRAWSHELL (SFX_INTERFACE_SW_START + 8)
+#define SW_DRWTXTSHELL (SFX_INTERFACE_SW_START + 9)
+
+#define SW_INTERFACE_MODULE (SFX_INTERFACE_SW_START + 10)
+#define SW_DOCSHELL (SFX_INTERFACE_SW_START + 11)
+#define SW_VIEWSHELL (SFX_INTERFACE_SW_START + 12)
+#define SW_PAGEPREVIEW (SFX_INTERFACE_SW_START + 13)
+#define SW_GLOSDOCSHELL (SFX_INTERFACE_SW_START + 14)
+#define SW_SRC_VIEWSHELL (SFX_INTERFACE_SW_START + 15)
+
+#define SW_BEZIERSHELL (SFX_INTERFACE_SW_START + 16)
+#define SW_DRAWBASESHELL (SFX_INTERFACE_SW_START + 17)
+#define SW_DRAWFORMSHELL (SFX_INTERFACE_SW_START + 18)
+
+#define SW_WEBDOCSHELL (SFX_INTERFACE_SW_START + 19)
+#define SW_WEBVIEWSHELL (SFX_INTERFACE_SW_START + 20)
+#define SW_WEBBASESHELL (SFX_INTERFACE_SW_START + 21)
+#define SW_WEBTEXTSHELL (SFX_INTERFACE_SW_START + 22)
+#define SW_WEBFRAMESHELL (SFX_INTERFACE_SW_START + 23)
+#define SW_WEBGLOSDOCSHELL (SFX_INTERFACE_SW_START + 24)
+#define SW_WEBLISTSHELL (SFX_INTERFACE_SW_START + 25)
+#define SW_WEBTABSHELL (SFX_INTERFACE_SW_START + 26)
+#define SW_WEBGRFSHELL (SFX_INTERFACE_SW_START + 27)
+#define SW_WEBOLESHELL (SFX_INTERFACE_SW_START + 28)
+#define SW_WEBDRAWBASESHELL (SFX_INTERFACE_SW_START + 29)
+#define SW_WEBDRAWFORMSHELL (SFX_INTERFACE_SW_START + 30)
+
+#endif // _UIPARAM_HXX
diff --git a/sw/inc/shellio.hxx b/sw/inc/shellio.hxx
new file mode 100644
index 000000000000..3fe1e4765887
--- /dev/null
+++ b/sw/inc/shellio.hxx
@@ -0,0 +1,696 @@
+/*************************************************************************
+ *
+ * $RCSfile: shellio.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SHELLIO_HXX
+#define _SHELLIO_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _DATE_HXX //autogen
+#include <tools/date.hxx>
+#endif
+#ifndef _TIME_HXX //autogen
+#include <tools/time.hxx>
+#endif
+#ifndef _DATETIME_HXX //autogen
+#include <tools/datetime.hxx>
+#endif
+#ifndef _REF_HXX //autogen
+#include <tools/ref.hxx>
+#endif
+#ifndef _SOT_FORMATS_HXX //autogen
+#include <sot/formats.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _DOCFAC_HXX
+#include <docfac.hxx> // SwDocFac
+#endif
+
+// einige Forward - Deklarationen
+class SfxFactoryFilterContainer;
+class SfxFilter;
+class SfxItemPool;
+class SfxItemSet;
+class SfxMedium;
+class SvPtrarr;
+class SvStorage;
+class SvStorageStreamRef;
+class SvStream;
+class SvStringsSortDtor;
+class SvxFontItem;
+class SvxMacroTableDtor;
+class Sw3Io;
+class SwCntntNode;
+class SwCrsrShell;
+class SwDoc;
+class SwPaM;
+class SwTextBlocks;
+struct SwPosition;
+struct Writer_Impl;
+
+// ab so vielen chars wird ein mit einem ASCII/W4W-Reader eingelesener
+// Absatz zwangsweise umgebrochen. Muss immer groesser als 200 sein !!!
+#define MAX_ASCII_PARA 10000
+
+
+class SwAsciiOptions
+{
+ String sFont;
+ rtl_TextEncoding eCharSet;
+ USHORT nLanguage;
+ LineEnd eCRLF_Flag;
+
+public:
+
+ const String& GetFontName() const { return sFont; }
+ void SetFontName( const String& rFont ) { sFont = rFont; }
+
+ rtl_TextEncoding GetCharSet() const { return eCharSet; }
+ void SetCharSet( rtl_TextEncoding nVal ) { eCharSet = nVal; }
+
+ USHORT GetLanguage() const { return nLanguage; }
+ void SetLanguage( USHORT nVal ) { nLanguage = nVal; }
+
+ LineEnd GetParaFlags() const { return eCRLF_Flag; }
+ void SetParaFlags( LineEnd eVal ) { eCRLF_Flag = eVal; }
+
+ void Reset()
+ {
+ sFont.Erase();
+ eCRLF_Flag = GetSystemLineEnd();
+ eCharSet = ::gsl_getSystemTextEncoding();
+ nLanguage = 0;
+ }
+ // for the automatic conversion (mail/news/...)
+ void ReadUserData( const String& );
+ void WriteUserData( String& );
+
+ SwAsciiOptions() { Reset(); }
+};
+
+/**************** SwReader/Reader ************************/
+// Basisklasse der moeglichen Optionen fuer einen speziellen Reader
+class Reader;
+// Ruft den Reader mit seinen Optionen, Dokument, Cursor etc.
+class SwReader;
+// SwRead ist der Pointer auf die Read-Optionen-Basisklasse
+typedef Reader *SwRead;
+
+class SwgReaderOption
+{
+ SwAsciiOptions aASCIIOpts;
+ union
+ {
+ BOOL bFmtsOnly;
+ struct
+ {
+ BOOL bFrmFmts: 1;
+ BOOL bPageDescs: 1;
+ BOOL bTxtFmts: 1;
+ BOOL bNumRules: 1;
+ BOOL bMerge:1;
+ } Fmts;
+ } What;
+
+public:
+ void ResetAllFmtsOnly() { What.bFmtsOnly = 0; }
+ void SetAllFmtsOnly() { What.bFmtsOnly = (BOOL)0xff; }
+ BOOL IsFmtsOnly() const { return What.bFmtsOnly; }
+
+ BOOL IsFrmFmts() const { return What.Fmts.bFrmFmts; }
+ void SetFrmFmts( const BOOL bNew) { What.Fmts.bFrmFmts = bNew; }
+
+ BOOL IsPageDescs() const { return What.Fmts.bPageDescs; }
+ void SetPageDescs( const BOOL bNew) { What.Fmts.bPageDescs = bNew; }
+
+ BOOL IsTxtFmts() const { return What.Fmts.bTxtFmts; }
+ void SetTxtFmts( const BOOL bNew) { What.Fmts.bTxtFmts = bNew; }
+
+ BOOL IsNumRules() const { return What.Fmts.bNumRules; }
+ void SetNumRules( const BOOL bNew) { What.Fmts.bNumRules = bNew; }
+
+ BOOL IsMerge() const { return What.Fmts.bMerge; }
+ void SetMerge( const BOOL bNew ) { What.Fmts.bMerge = bNew; }
+
+ const SwAsciiOptions& GetASCIIOpts() const { return aASCIIOpts; }
+ void SetASCIIOpts( const SwAsciiOptions& rOpts ) { aASCIIOpts = rOpts; }
+ void ResetASCIIOpts() { aASCIIOpts.Reset(); }
+
+ SwgReaderOption()
+ { ResetAllFmtsOnly(); aASCIIOpts.Reset(); }
+};
+
+class SwReader: public SwDocFac
+{
+ SvStream* pStrm;
+ SvStorage* pStg;
+ SfxMedium* pMedium; // wer ein Medium haben will (W4W)
+
+ SwPaM* pCrsr;
+ String aFileName;
+
+public:
+ /*
+ * Initiales Einlesen. Dokument wird erst beim Read(..) angelegt.
+ * JP 25.04.95: oder falls es mitgegeben wird, in dieses.
+ * Sonderfall fuer Load mit Sw3Reader
+ */
+ SwReader( SvStream&, const String& rFilename, SwDoc *pDoc = 0 );
+ SwReader( SvStorage&, const String& rFilename, SwDoc *pDoc = 0 );
+ SwReader( SfxMedium&, const String& rFilename, SwDoc *pDoc = 0 );
+ /*
+ * In ein existierendes Dokument einlesen, Dokument und
+ * Position im Dokument werden aus dem SwPaM uebernommen.
+ */
+ SwReader( SvStream&, const String& rFilename, SwPaM& );
+ SwReader( SvStorage&, const String& rFilename, SwPaM& );
+ SwReader( SfxMedium&, const String& rFilename, SwPaM& );
+
+ /*
+ * Nur SwReader::Read(...) ist die Export-Schnittstelle!!!
+ */
+ BOOL NeedsPasswd( const Reader& );
+ BOOL CheckPasswd( const String&, const Reader& );
+ ULONG Read( const Reader& );
+
+ // ask for glossaries
+ BOOL HasGlossaries( const Reader& );
+ BOOL ReadGlossaries( const Reader&, SwTextBlocks&, BOOL bSaveRelFiles );
+};
+
+
+
+/* */
+/**************** SPEZIELLE Reader ************************/
+
+// spezielle - Reader koennen beides sein !! (Excel, W4W, .. )
+#define SW_STREAM_READER 1
+#define SW_STORAGE_READER 2
+
+class Reader
+{
+ friend class SwReader;
+ SwDoc* pTemplate;
+ String aTemplateNm;
+ Date aDStamp;
+ Time aTStamp;
+ DateTime aChkDateTime;
+
+protected:
+ SvStream* pStrm;
+ SvStorage* pStg;
+ SfxMedium* pMedium; // wer ein Medium haben will (W4W)
+
+ SwgReaderOption aOpt;
+ BOOL bInsertMode : 1;
+ BOOL bTmplBrowseMode : 1;
+ BOOL bReadUTF8: 1; // Stream als UTF-8 interpretieren
+
+public:
+ Reader();
+ virtual ~Reader();
+
+ virtual int GetReaderType();
+ SwgReaderOption& GetReaderOpt() { return aOpt; }
+
+ virtual void SetFltName( const String& rFltNm );
+ static void SetNoOutlineNum( SwDoc& rDoc );
+
+ // den Item-Set eines Frm-Formats an das alte Format anpassen
+ static void ResetFrmFmtAttrs( SfxItemSet &rFrmSet );
+
+ // die Rahmen-/Grafik-/OLE-Vorlagen an das alte Format (ohne
+ // Umrandung etc.) anpassen
+ static void ResetFrmFmts( SwDoc& rDoc );
+
+ // Die Filter-Vorlage laden, setzen und wieder freigeben
+ SwDoc* GetTemplateDoc();
+ BOOL SetTemplate( SwDoc& rDoc );
+ void ClearTemplate();
+ void SetTemplateName( const String& rDir );
+ void MakeHTMLDummyTemplateDoc();
+
+ BOOL IsReadUTF8() const { return bReadUTF8; }
+ void SetReadUTF8( BOOL bSet ) { bReadUTF8 = bSet; }
+
+ virtual BOOL HasGlossaries() const;
+ virtual BOOL ReadGlossaries( SwTextBlocks&, BOOL bSaveRelFiles ) const;
+
+private:
+ virtual ULONG Read(SwDoc &,SwPaM &,const String &)=0;
+
+ // alle die die Streams / Storages nicht geoeffnet brauchen,
+ // muessen die Methode ueberladen (W4W!!)
+ virtual int SetStrmStgPtr();
+};
+
+class RtfReader: public Reader
+{
+ virtual ULONG Read( SwDoc &,SwPaM &,const String &);
+};
+
+
+class AsciiReader: public Reader
+{
+ friend class SwReader;
+ virtual ULONG Read( SwDoc &,SwPaM &,const String &);
+public:
+ AsciiReader(): Reader() {}
+
+ virtual void SetFltName( const String& rFltNm );
+};
+
+class SwgReader: public Reader
+{
+ virtual ULONG Read( SwDoc &,SwPaM &,const String &);
+};
+
+class StgReader : public Reader
+{
+ String aFltName;
+
+protected:
+ ULONG OpenMainStream( SvStorageStreamRef& rRef, USHORT& rBuffSize );
+
+public:
+ virtual int GetReaderType();
+ const String& GetFltName() { return aFltName; }
+ virtual void SetFltName( const String& r );
+};
+
+
+class Sw3Reader : public StgReader
+{
+ Sw3Io* pIO;
+ virtual ULONG Read( SwDoc &,SwPaM &,const String &);
+public:
+ Sw3Reader() : pIO( 0 ) {}
+
+ Sw3Io* GetSw3Io() { return pIO; }
+ const Sw3Io* GetSw3Io() const { return pIO; }
+ void SetSw3Io( Sw3Io* pIo ) { pIO = pIo; }
+};
+
+/* */
+////////////////////////////////////////////////////////////////////////////
+
+// Der uebergebene Stream muss dynamisch angelegt werden und
+// vor dem Loeschen der Instanz per Stream() angefordert
+// und geloescht werden!
+
+class SwImpBlocks;
+
+class SwTextBlocks
+{
+ friend class Sw2TextBlocks;
+ friend class Sw3IoImp;
+ SwImpBlocks* pImp;
+ ULONG nErr;
+
+public:
+ SwTextBlocks( const String& );
+ SwTextBlocks( SvStorage& );
+ ~SwTextBlocks();
+
+ void Flush(){}
+
+ SwDoc* GetDoc();
+ void ClearDoc(); // Doc-Inhalt loeschen
+ const String& GetName();
+ void SetName( const String& );
+ ULONG GetError() const { return nErr; }
+
+ BOOL IsOld() const;
+ ULONG ConvertToNew(); // Textbausteine konvertieren
+
+ USHORT GetCount() const; // Anzahl Textbausteine ermitteln
+ USHORT GetIndex( const String& ) const; // Index fuer Kurznamen ermitteln
+ USHORT GetLongIndex( const String& ) const; //Index fuer Langnamen ermitteln
+ const String& GetShortName( USHORT ) const; // Kurzname fuer Index zurueck
+ const String& GetLongName( USHORT ) const; // Langname fuer Index zurueck
+
+ BOOL Delete( USHORT ); // Loeschen
+ USHORT Rename( USHORT, const String*, const String* ); // Umbenennen
+ ULONG CopyBlock( SwTextBlocks& rSource, String& rSrcShort,
+ const String& rLong ); // Block kopieren
+
+ BOOL BeginGetDoc( USHORT ); // Textbaustein einlesen
+ void EndGetDoc(); // Textbaustein wieder loslassen
+
+ BOOL BeginPutDoc( const String&, const String& ); // Speichern Beginn
+ USHORT PutDoc(); // Speichern Ende
+
+ const String& GetText( USHORT ); // Textinhalt einlesen
+ USHORT PutText( const String&, const String&, const String& ); // Speichern( Kurzn., Text)
+
+ BOOL IsOnlyTextBlock( USHORT ) const;
+ BOOL IsOnlyTextBlock( const String& rShort ) const;
+
+ const String& GetFileName() const; // Dateiname von pImp
+ BOOL IsReadOnly() const; // ReadOnly-Flag von pImp
+
+ BOOL GetMacroTable( USHORT nIdx, SvxMacroTableDtor& rMacroTbl );
+
+ String GetValidShortCut( const String& rLong,
+ BOOL bCheckInBlock = FALSE ) const;
+
+ BOOL StartPutMuchBlockEntries();
+ void EndPutMuchBlockEntries();
+};
+
+
+extern void _InitFilter();
+extern void _FinitFilter();
+extern SwRead ReadRtf, ReadAscii, ReadSwg, ReadSw3, ReadHTML, ReadXML;
+
+extern BOOL SetHTMLTemplate( SwDoc &rDoc ); //Fuer Vorlagen aus HTML.vor laden shellio.cxx
+
+
+/* */
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * Schreiben, Writer
+ */
+
+
+/* Basis-Klasse aller Writer */
+
+class Writer : public SvRefBase
+{
+ SwAsciiOptions aAscOpts;
+
+ void _AddFontItem( SfxItemPool& rPool, const SvxFontItem& rFont );
+
+protected:
+ Writer_Impl* pImpl;
+
+ SvStream* pStrm;
+ SwPaM* pOrigPam; // der letze zu bearbeitende Pam
+ const String* pOrigFileName;
+
+ void ResetWriter();
+ BOOL CopyNextPam( SwPaM ** );
+
+ void PutNumFmtFontsInAttrPool();
+ void PutEditEngFontsInAttrPool();
+
+ virtual ULONG WriteStream() = 0;
+
+public:
+ SwDoc* pDoc;
+ SwPaM* pCurPam;
+ BOOL bWriteAll : 1;
+ BOOL bShowProgress : 1;
+ BOOL bWriteClipboardDoc : 1;
+ BOOL bWriteOnlyFirstTable : 1;
+ BOOL bASCII_ParaAsCR : 1;
+ BOOL bASCII_ParaAsBlanc : 1;
+ BOOL bASCII_NoLastLineEnd : 1;
+ BOOL bUCS2_WithStartChar : 1;
+
+ Writer();
+ virtual ~Writer();
+
+ virtual ULONG Write( SwPaM&, SfxMedium&, const String* = 0 );
+ ULONG Write( SwPaM&, SvStream&, const String* = 0 );
+ virtual ULONG Write( SwPaM&, SvStorage&, const String* = 0 );
+
+ virtual void SetPasswd( const String& );
+ virtual void SetVersion( const String&, long );
+ virtual BOOL IsStgWriter() const;
+ virtual BOOL IsSw3Writer() const;
+
+ BOOL ShowProgress() const { return bShowProgress; }
+ void SetShowProgress( BOOL bFlag = FALSE ) { bShowProgress = bFlag; }
+
+ const String* GetOrigFileName() const { return pOrigFileName; }
+
+ const SwAsciiOptions& GetAsciiOptions() const { return aAscOpts; }
+ void SetAsciiOptions( const SwAsciiOptions& rOpt ) { aAscOpts = rOpt; }
+
+ // suche die naechste Bookmark-Position aus der Bookmark-Tabelle
+ USHORT FindPos_Bkmk( const SwPosition& rPos ) const;
+ // build a bookmark table, which is sort by the node position. The
+ // OtherPos of the bookmarks also inserted.
+ void CreateBookmarkTbl();
+ // search alle Bookmarks in the range and return it in the Array
+ USHORT GetBookmarks( const SwCntntNode& rNd,
+ xub_StrLen nStt, xub_StrLen nEnd,
+ SvPtrarr& rArr );
+
+ // lege einen neuen PaM an der Position an
+ SwPaM* NewSwPaM( SwDoc & rDoc, ULONG nStartIdx, ULONG nEndIdx,
+ BOOL bNodesArray = TRUE ) const;
+
+ // kopiere ggfs. eine lokale Datei ins Internet
+ BOOL CopyLocalFileToINet( String& rFileNm, BOOL bFileToFile=FALSE );
+
+ // Stream-spezifische Routinen, im Storage-Writer NICHT VERWENDEN!
+
+ // Optimierung der Ausgabe auf den Stream.
+ SvStream& OutLong( SvStream& rStrm, long nVal );
+ SvStream& OutULong( SvStream& rStrm, ULONG nVal );
+
+ // Hex-Zahl ausgeben, default ist 2.stellige Zahl
+ SvStream& OutHex( SvStream& rStrm, ULONG nHex, BYTE nLen = 2 );
+ // 4-st. Hex-Zahl ausgeben
+ inline SvStream& OutHex4( SvStream& rStrm, USHORT nHex )
+ { return OutHex( rStrm, nHex, 4 ); }
+ // 8-st. Hex-Zahl ausgeben
+ inline SvStream& OutHex8( SvStream& rStrm, ULONG nHex )
+ { return OutHex( rStrm, nHex, 8 ); }
+
+ inline SvStream& OutHex( USHORT nHex, BYTE nLen = 2 ) { return OutHex( Strm(), nHex, nLen ); }
+ inline SvStream& OutHex4( USHORT nHex ) { return OutHex( Strm(), nHex, 4 ); }
+ inline SvStream& OutHex8( ULONG nHex ) { return OutHex( Strm(), nHex, 8 ); }
+ inline SvStream& OutLong( long nVal ) { return OutLong( Strm(), nVal ); }
+ inline SvStream& OutULong( ULONG nVal ) { return OutULong( Strm(), nVal ); }
+
+ void SetStrm( SvStream& rStrm ) { pStrm = &rStrm; }
+#ifdef PRODUCT
+ SvStream& Strm() { return *pStrm; }
+#else
+ SvStream& Strm();
+#endif
+};
+
+#ifndef SW_DECL_WRITER_DEFINED
+#define SW_DECL_WRITER_DEFINED
+SV_DECL_REF(Writer)
+#endif
+SV_IMPL_REF(Writer)
+
+// Basisklasse fuer alle Storage-Writer
+
+class StgWriter : public Writer
+{
+protected:
+ String aFltName;
+ SvStorage* pStg;
+
+ // Fehler beim Aufruf erzeugen
+ virtual ULONG WriteStream();
+ virtual ULONG WriteStorage() = 0;
+
+public:
+ StgWriter() : Writer(), pStg( 0 ) {}
+
+ virtual BOOL IsStgWriter() const;
+ virtual ULONG Write( SwPaM&, SvStorage&, const String* = 0 );
+
+ SvStorage& GetStorage() const { return *pStg; }
+ const String& GetFltName() const { return aFltName; }
+ void SetFltName( const String& r ) { aFltName = r; }
+};
+
+class Sw3Writer : public StgWriter
+{
+ Sw3Io* pIO;
+ BOOL bSaveAs : 1;
+
+ virtual ULONG WriteStorage();
+
+public:
+ Sw3Writer() : pIO( 0 ), bSaveAs( FALSE ) {}
+
+ Sw3Io* GetSw3Io() { return pIO; }
+ const Sw3Io* GetSw3Io() const { return pIO; }
+ void SetSw3Io( Sw3Io* pIo, BOOL bSvAs = FALSE )
+ { pIO = pIo; bSaveAs = bSvAs; }
+
+ virtual BOOL IsSw3Writer() const;
+};
+
+
+
+// Schnittstellenklasse fuer den allgemeinen Zugriff auf die
+// speziellen Writer
+
+class SwWriter
+{
+ SvStream* pStrm;
+ SvStorage* pStg;
+ SfxMedium* pMedium;
+
+ SwPaM* pOutPam;
+ SwCrsrShell *pShell;
+ SwDoc &rDoc;
+ BOOL bWriteAll;
+
+public:
+ ULONG Write( WriterRef& rxWriter, const String* = 0);
+
+ SwWriter( SvStream&, SwCrsrShell &,BOOL bWriteAll = FALSE );
+ SwWriter( SvStream&, SwDoc & );
+ SwWriter( SvStream&, SwPaM &, BOOL bWriteAll = FALSE );
+
+// SwWriter( SvStorage&, SwCrsrShell &,BOOL bWriteAll = FALSE );
+ SwWriter( SvStorage&, SwDoc & );
+// SwWriter( SvStorage&, SwPaM&, BOOL bWriteAll = FALSE );
+
+ SwWriter( SfxMedium&, SwCrsrShell &,BOOL bWriteAll = FALSE );
+ SwWriter( SfxMedium&, SwDoc & );
+// SwWriter( SfxMedium&, SwPaM&, BOOL bWriteAll = FALSE );
+};
+
+
+/* */
+/////////////////////////////////////////////////////////////////////////////
+
+void GetRTFWriter( const String&, WriterRef& );
+void GetASCWriter( const String&, WriterRef& );
+void GetSw3Writer( const String&, WriterRef& );
+void GetHTMLWriter( const String&, WriterRef& );
+void GetXMLWriter( const String&, WriterRef& );
+
+// Die folgende Klasse ist ein Wrappe fuer die Basic-I/O-Funktionen
+// des Writer 3.0. Alles ist statisch. Alle u.a. Filternamen sind die
+// Writer-internen Namen, d.h. die namen, die in INSTALL.INI vor dem
+// Gleichheitszeichen stehen, z.b. SWG oder ASCII.
+
+class SwIoSystem
+{
+public:
+ // suche ueber den Filtertext den Filtereintrag
+ static const SfxFilter* GetFilterOfFilterTxt( const String& rFilterNm,
+ const SfxFactoryFilterContainer* pCnt = 0 );
+ // suche ueber den internen FormatNamen den Filtereintrag
+ static const SfxFilter* GetFilterOfFormat( const String& rFormat,
+ const SfxFactoryFilterContainer* pCnt = 0 );
+
+ // Feststellen des zu verwendenden Filters fuer die uebergebene
+ // Datei. Der Filtername wird zurueckgeliefert. Konnte kein Filter
+ // zurueckgeliefert werden, wird der Name des ASCII-Filters geliefert!
+ static const SfxFilter* GetFileFilter( const String& rFileName,
+ const String& rPrefFltName,
+ SfxMedium* pMedium = 0 );
+
+ // Feststellen ob das File in dem vorgegebenen Format vorliegt.
+ // Z.z werden nur unsere eigene Filter unterstuetzt!!
+ static FASTBOOL IsFileFilter( SfxMedium& rMedium, const String& rFmtName,
+ const SfxFilter** ppFlt = 0 );
+
+ static FASTBOOL IsValidStgFilter( SvStorage& , const SfxFilter& );
+
+ // gebe einen bestimmten Reader zurueck
+ static Reader* GetReader( const String& rFltName );
+ // gebe einen bestimmten Writer zurueck
+ static void GetWriter( const String& rFltName, WriterRef& xWrt );
+
+ static const String GetSubStorageName( const SfxFilter& rFltr );
+};
+
+
+// ----------------------------------
+// diese Filter sind immer vorhanden und koennen ueber die
+// Formatnamen gesucht werden. Alle anderen Filter sind nur intern
+// bekannt. Die UI-Seite benutzt die GetReader()/GetWriter() -Funktionen,
+// um die speziellen zu erhalten.
+
+extern sal_Char __FAR_DATA FILTER_SWG[]; // SWG-Filter
+extern sal_Char __FAR_DATA FILTER_RTF[]; // RTF-Filter
+extern sal_Char* FILTER_ANSI; // Ascii-Filter mit Default-CodeSet
+extern sal_Char __FAR_DATA FILTER_BAS[]; // StarBasic (identisch mit ANSI)
+extern sal_Char __FAR_DATA FILTER_W4W[]; // W4W-Filter
+extern sal_Char __FAR_DATA FILTER_WW8[]; // WinWord 97-Filter
+extern sal_Char __FAR_DATA FILTER_SW3[]; // SW3-Storage Filter
+extern sal_Char __FAR_DATA FILTER_SW4[]; // SW4-Storage Filter
+extern sal_Char __FAR_DATA FILTER_SW4[]; // SW4-Storage Filter
+extern sal_Char __FAR_DATA FILTER_SW5[]; // SW5-Storage Filter
+extern sal_Char __FAR_DATA FILTER_SWGV[]; // SWG-Vorlagen Filter
+extern sal_Char __FAR_DATA FILTER_SW3V[]; // SW3-Storage Vorlagen Filter
+extern sal_Char __FAR_DATA FILTER_SW4V[]; // SW4-Storage Vorlagen Filter
+extern sal_Char __FAR_DATA FILTER_SW5V[]; // SW5-Storage Vorlagen Filter
+extern sal_Char __FAR_DATA FILTER_SWW4V[]; // SW/Web Storage Vorlagen Filter
+extern sal_Char __FAR_DATA FILTER_SWW5V[]; // SW/Web Storage Vorlagen Filter
+extern sal_Char __FAR_DATA FILTER_TEXT_DLG[]; // text filter with encoding dialog
+extern sal_Char __FAR_DATA FILTER_XML[]; // XML filter
+
+
+// gebe einen gueltigen temp-Filenamen zurueck
+String GetTmpFileName();
+
+
+#endif
diff --git a/sw/inc/shellres.hxx b/sw/inc/shellres.hxx
new file mode 100644
index 000000000000..97fdb8cb0bf6
--- /dev/null
+++ b/sw/inc/shellres.hxx
@@ -0,0 +1,139 @@
+/*************************************************************************
+ *
+ * $RCSfile: shellres.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SHELLRES_HXX
+#define _SHELLRES_HXX
+
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef _BITMAP_HXX //autogen
+#include <vcl/bitmap.hxx>
+#endif
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+
+struct ShellResource : public Resource
+{
+
+ String aPostItAuthor;
+ String aPostItPage;
+ String aPostItLine;
+
+ // Calc Fehlerstrings
+ String aCalc_Syntax;
+ String aCalc_ZeroDiv;
+ String aCalc_Brack;
+ String aCalc_Pow;
+ String aCalc_VarNFnd;
+ String aCalc_Overflow;
+ String aCalc_WrongTime;
+ String aCalc_Default;
+ String aCalc_Error;
+
+ // fuers GetRefFeld - oben/unten
+ String aGetRefFld_Up, aGetRefFld_Down;
+ // fuer dynamisches Menu - String "alle"
+ String aStrAllPageHeadFoot;
+ // fuer einige Listboxen - String "keine"
+ String aStrNone;
+ // fuer Felder, die Fixiert sind
+ String aFixedStr;
+
+ //names of TOXs
+ String aTOXIndexName;
+ String aTOXUserName;
+ String aTOXContentName;
+ String aTOXIllustrationsName;
+ String aTOXObjectsName;
+ String aTOXTablesName;
+ String aTOXAuthoritiesName;
+
+ SvStringsDtor aDocInfoLst;
+
+ // Fly-Anker Bmps
+// Bitmap aAnchorBmp;
+// Bitmap aDragAnchorBmp;
+
+ // die AutoFormat-Redline-Kommentare
+ inline const SvStringsDtor& GetAutoFmtNameLst() const;
+
+ ShellResource();
+ ~ShellResource();
+
+private:
+ void _GetAutoFmtNameLst() const;
+ SvStringsDtor *pAutoFmtNameLst;
+};
+
+inline const SvStringsDtor& ShellResource::GetAutoFmtNameLst() const
+{
+ if( !pAutoFmtNameLst )
+ _GetAutoFmtNameLst();
+ return *pAutoFmtNameLst;
+}
+
+
+#endif //_SHELLRES_HXX
diff --git a/sw/inc/sortopt.hxx b/sw/inc/sortopt.hxx
new file mode 100644
index 000000000000..f971c5ebaad5
--- /dev/null
+++ b/sw/inc/sortopt.hxx
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
+ * $RCSfile: sortopt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SORTOPT_HXX
+#define _SORTOPT_HXX
+
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+enum SwSortKeyType { SRT_APLHANUM, SRT_NUMERIC };
+enum SwSortOrder { SRT_ASCENDING, SRT_DESCENDING };
+enum SwSortDirection { SRT_COLUMNS, SRT_ROWS };
+
+/*--------------------------------------------------------------------
+ Beschreibung: SortierSchluessel
+ --------------------------------------------------------------------*/
+struct SwSortKey
+{
+ SwSortKey();
+ SwSortKey(USHORT nId, SwSortKeyType eTyp, SwSortOrder eOrder);
+ SwSortKey(const SwSortKey& rOld);
+
+ USHORT nColumnId;
+ SwSortKeyType eSortKeyType;
+ SwSortOrder eSortOrder;
+};
+
+SV_DECL_PTRARR(SwSortKeys, SwSortKey*, 3, 1)
+
+struct SwSortOptions
+{
+ SwSortOptions();
+ ~SwSortOptions();
+ SwSortOptions(const SwSortOptions& rOpt);
+
+ BOOL bTable;
+ char nDeli;
+ SwSortDirection eDirection;
+ SwSortKeys aKeys;
+};
+
+#endif // _SORTOPT_HXX
diff --git a/sw/inc/statstr.hrc b/sw/inc/statstr.hrc
new file mode 100644
index 000000000000..8ed1814fbc36
--- /dev/null
+++ b/sw/inc/statstr.hrc
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * $RCSfile: statstr.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _STATSTR_HRC
+#define _STATSTR_HRC
+
+#include "rcid.hrc"
+
+#define STR_STATSTR_W4WREAD (RC_STATLIN_STR + 0)
+#define STR_STATSTR_W4WWRITE (RC_STATLIN_STR + 1)
+#define STR_STATSTR_SWGREAD (RC_STATLIN_STR + 2)
+#define STR_STATSTR_SWGWRITE (RC_STATLIN_STR + 3)
+#define STR_STATSTR_REFORMAT (RC_STATLIN_STR + 4)
+#define STR_STATSTR_AUTOFORMAT (RC_STATLIN_STR + 5)
+#define STR_STATSTR_IMPGRF (RC_STATLIN_STR + 6)
+#define STR_STATSTR_SEARCH (RC_STATLIN_STR + 7)
+#define STR_STATSTR_FORMAT (RC_STATLIN_STR + 8)
+#define STR_STATSTR_PRINT (RC_STATLIN_STR + 9)
+#define STR_STATSTR_LAYOUTINIT (RC_STATLIN_STR + 10)
+#define STR_STATSTR_LETTER (RC_STATLIN_STR + 11)
+#define STR_STATSTR_SPELL (RC_STATLIN_STR + 12)
+#define STR_STATSTR_HYPHEN (RC_STATLIN_STR + 13)
+#define STR_STATSTR_TOX_INSERT (RC_STATLIN_STR + 14)
+#define STR_STATSTR_TOX_UPDATE (RC_STATLIN_STR + 15)
+#define STR_STATSTR_SUMMARY (RC_STATLIN_STR + 16)
+#define STR_STATSTR_SWGPRTOLENOTIFY (RC_STATLIN_STR + 17)
+
+#endif
+
+
+
diff --git a/sw/inc/sw.mk b/sw/inc/sw.mk
new file mode 100644
index 000000000000..990a5046c51e
--- /dev/null
+++ b/sw/inc/sw.mk
@@ -0,0 +1,150 @@
+#*************************************************************************
+#
+# $RCSfile: sw.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+# CDEFS=$(CDEFS) -DXXX
+
+# Bereiche aktivieren
+
+#CDEFS+=-DXML_CORE_API
+CDEFS+=-DNUM_RELSPACE
+
+# use the new GrahicObject - the old code with our own GraphicCache will be removed
+# if all the new code runs correct.
+CDEFS+=-DUSE_GRFOBJECT
+USE_GRFOBJECT=TRUE
+
+# MakeDepn nicht das segdefs.hxx und die PCHs auswerten lassen
+# PCHs werden nur in den ..._1st Verzeichnissen aufgenommen
+EXCDEPN=segdefs.hxx
+EXCDEPNPCH=core_pch.hxx;filt_pch.hxx;ui_pch.hxx
+MKDEPFLAGS+=-E:$(EXCDEPN);$(EXCDEPNPCH)
+
+.IF "$(GUI)" == "WIN" || "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
+CDEFS+=-DSBASIC
+.ENDIF
+
+.IF "$(GUI)" == "WIN"
+CDEFS+=-DOLE -DOLE2
+.ENDIF
+
+.IF "$(compact)" != ""
+CDEFS+=-DCOMPACT
+.ENDIF
+
+.IF "$(debug)" != ""
+DB=cv
+.ENDIF
+
+.IF "$(prjpch)" != ""
+CDEFS+=-DPRECOMPILED
+.ENDIF
+
+
+# ------------------------------------------------------------------
+# alte defines fuer die Sourcen
+# ------------------------------------------------------------------
+
+.IF "$(GUI)" == "WIN"
+CDEFS+=-DW30
+.ENDIF
+
+.IF "$(GUI)" == "OS2"
+CDEFS+=-DPM2 -DPM20
+RSCFLAGS+=-DPM2 -DPM20
+.IF "$(debug)" != ""
+# fuer OS/2 und debug groessere Pages
+LIBFLAGS=/C /P512
+.ENDIF
+.ENDIF
+
+.IF "$(COM)" == "BLC"
+CDEFS+=-DTCPP
+.ENDIF
+
+.IF "$(COM)" == "STC"
+CDEFS+=-DZTC
+.ENDIF
+
+.IF "$(COM)" == "ICC"
+CDEFS+=-DCSET
+.ENDIF
+
+
+# ------------------------------------------------------------------------
+# WINMSCI Compiler
+# ------------------------------------------------------------------------
+.IF "$(GUI)$(COM)" == "WINMSC"
+
+.IF "$(optimize)" != ""
+CFLAGS+=-OV9
+.ENDIF
+
+# kein -GEfs wegen dann fehlender inlinings
+CFLAGSOBJGUIST=-Alfd -GA -GEd
+
+.ENDIF # WINMSCI
+# ------------------------------------------------------------------------
+
+# ------------------------------------------------------------------------
+# add uno headers to inlude path
+# ------------------------------------------------------------------------
+INCPRE+=$(SOLARINCDIR)$/offuh
diff --git a/sw/inc/swacorr.hxx b/sw/inc/swacorr.hxx
new file mode 100644
index 000000000000..7c86df4274f5
--- /dev/null
+++ b/sw/inc/swacorr.hxx
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * $RCSfile: swacorr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWACORR_HXX
+#define _SWACORR_HXX
+
+#ifndef _MySVXACORR_HXX //autogen
+#include <svx/svxacorr.hxx>
+#endif
+
+
+class SwAutoCorrect : public SvxAutoCorrect
+{
+protected:
+ // - return den Ersetzungstext (nur fuer SWG-Format, alle anderen
+ // koennen aus der Wortliste herausgeholt werden!)
+ // rShort ist der Stream-Name - gecryptet!
+ virtual BOOL GetLongText( SvStorage&, const String& rShort, String& rLong );
+ // - Text mit Attributierung (kann nur der SWG - SWG-Format!)
+ // rShort ist der Stream-Name - gecryptet!
+ virtual BOOL PutText( SvStorage&, const String& rShort, SfxObjectShell& ,
+ String& );
+
+public:
+ TYPEINFO();
+
+ SwAutoCorrect( const String& rAutocorrFile );
+ SwAutoCorrect( const SvxAutoCorrect& rACorr );
+ virtual ~SwAutoCorrect();
+};
+
+
+#endif
+
diff --git a/sw/inc/swatrset.hxx b/sw/inc/swatrset.hxx
new file mode 100644
index 000000000000..792efce4c2d5
--- /dev/null
+++ b/sw/inc/swatrset.hxx
@@ -0,0 +1,382 @@
+/*************************************************************************
+ *
+ * $RCSfile: swatrset.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWATRSET_HXX
+#define _SWATRSET_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+#ifndef _SVMEMPOOL_HXX //autogen
+#include <tools/mempool.hxx>
+#endif
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+#ifndef _SFXITEMPOOL_HXX //autogen
+#include <svtools/itempool.hxx>
+#endif
+class SwModify;
+class SwDoc;
+
+class SfxBoolItem;
+class SvxPostureItem;
+class SvxWeightItem;
+class SvxShadowedItem;
+class SvxAutoKernItem;
+class SvxWordLineModeItem;
+class SvxContourItem;
+class SvxKerningItem;
+class SvxUnderlineItem;
+class SvxCrossedOutItem;
+class SvxFontHeightItem;
+class SvxPropSizeItem;
+class SvxFontItem;
+class SvxColorItem;
+class SvxCharSetColorItem;
+class SvxLanguageItem;
+class SvxEscapementItem;
+class SvxCaseMapItem;
+class SvxNoHyphenItem;
+class SvxBlinkItem;
+
+// Frame-Attribute
+class SwFmtFillOrder;
+class SwFmtFrmSize;
+class SvxPaperBinItem;
+class SvxLRSpaceItem;
+class SvxULSpaceItem;
+class SwFmtCntnt;
+class SwFmtHeader;
+class SwFmtFooter;
+class SvxPrintItem;
+class SvxOpaqueItem;
+class SvxProtectItem;
+class SwFmtSurround;
+class SwFmtVertOrient;
+class SwFmtHoriOrient;
+class SwFmtAnchor;
+class SvxBoxItem;
+class SvxBrushItem;
+class SvxShadowItem;
+class SwFmtPageDesc;
+class SvxFmtBreakItem;
+class SwFmtCol;
+class SvxMacroItem;
+class SvxFmtKeepItem;
+class SwFmtURL;
+class SwFmtLineNumber;
+class SwFmtEditInReadonly;
+class SwFmtLayoutSplit;
+class SwFmtChain;
+class SwFmtFtnAtTxtEnd;
+class SwFmtEndAtTxtEnd;
+class SwFmtNoBalancedColumns;
+
+// Grafik-Attribute
+class SwMirrorGrf;
+class SwCropGrf;
+class SwRotationGrf;
+class SwLuminanceGrf;
+class SwContrastGrf;
+class SwChannelRGrf;
+class SwChannelGGrf;
+class SwChannelBGrf;
+class SwGammaGrf;
+class SwInvertGrf;
+class SwTransparencyGrf;
+class SwDrawModeGrf;
+
+// Paragraph-Attribute
+class SvxLineSpacingItem;
+class SvxAdjustItem;
+class SvxFmtSplitItem;
+class SwRegisterItem;
+class SwNumRuleItem;
+class SvxWidowsItem;
+class SvxOrphansItem;
+class SvxTabStopItem;
+class SvxHyphenZoneItem;
+class SwFmtDrop;
+
+// TabellenBox-Attribute
+class SwTblBoxNumFormat;
+class SwTblBoxFormula;
+class SwTblBoxValue;
+
+
+class SwAttrPool : public SfxItemPool
+{
+ friend void _InitCore(); // fuers anlegen/zerstoeren der
+ friend void _FinitCore(); // Versionsmaps
+ static USHORT* pVersionMap1;
+ static USHORT* pVersionMap2;
+ static USHORT* pVersionMap3;
+
+ SwDoc* pDoc;
+
+public:
+ SwAttrPool( SwDoc* pDoc );
+
+ SwDoc* GetDoc() { return pDoc; }
+ const SwDoc* GetDoc() const { return pDoc; }
+
+ static USHORT* GetVersionMap1() { return pVersionMap1; }
+ static USHORT* GetVersionMap2() { return pVersionMap2; }
+ static USHORT* GetVersionMap3() { return pVersionMap3; }
+};
+
+
+class SwAttrSet : public SfxItemSet
+{
+ // Pointer fuers Modify-System
+ SwAttrSet *pOldSet, *pNewSet;
+
+ // Notification-Callback
+ virtual void Changed( const SfxPoolItem& rOld, const SfxPoolItem& rNew );
+
+ void PutChgd( const SfxPoolItem& rI ) { SfxItemSet::PutDirect( rI ); }
+public:
+ SwAttrSet( SwAttrPool&, USHORT nWhich1, USHORT nWhich2 );
+ SwAttrSet( SwAttrPool&, const USHORT* nWhichPairTable );
+ SwAttrSet( const SwAttrSet& );
+
+ int Put_BC( const SfxPoolItem& rAttr, SwAttrSet* pOld, SwAttrSet* pNew );
+ int Put_BC( const SfxItemSet& rSet, SwAttrSet* pOld, SwAttrSet* pNew );
+
+ // ein Item oder einen Bereich loeschen
+ USHORT ClearItem_BC( USHORT nWhich, SwAttrSet* pOld, SwAttrSet* pNew );
+ USHORT ClearItem_BC( USHORT nWhich1, USHORT nWhich2,
+ SwAttrSet* pOld = 0, SwAttrSet* pNew = 0 );
+
+ int Intersect_BC( const SfxItemSet& rSet, SwAttrSet* pOld, SwAttrSet* pNew );
+ int Differentiate_BC( const SfxItemSet& rSet, SwAttrSet* pOld, SwAttrSet* pNew );
+ int MergeValues_BC( const SfxItemSet& rSet, SwAttrSet* pOld, SwAttrSet* pNew );
+
+ void GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String &rText ) const;
+
+ SwAttrPool* GetPool() const { return (SwAttrPool*)SfxItemSet::GetPool(); }
+
+ // kopiere die Attribute ggfs. ueber Dokumentgrenzen
+ void CopyToModify( SwModify& rMod ) const;
+
+ // ----------------------------------------------------------------
+ // Sonderbehandlung fuer einige Attribute
+ // Setze den Modify-Pointer (alten pDefinedIn) bei folgenden Attributen:
+ // - SwFmtDropCaps
+ // - SwFmtPageDesc
+ // (Wird beim Einfuegen in Formate/Nodes gerufen)
+ void SetModifyAtAttr( const SwModify* pModify );
+
+ // Das Doc wird jetzt am SwAttrPool gesetzt. Dadurch hat man es immer
+ // im Zugriff.
+ const SwDoc *GetDoc() const { return GetPool()->GetDoc(); }
+ SwDoc *GetDoc() { return GetPool()->GetDoc(); }
+
+ // GetMethoden: das Bool gibt an, ob nur im Set (FALSE) oder auch in
+ // den Parents gesucht werden soll. Wird nichts gefunden,
+ // wird das deflt. Attribut returnt.
+ // Charakter-Attribute - impl. steht im charatr.hxx
+ // AMA 12.10.94: Umstellung von SwFmt... auf Svx...
+ inline const SvxPostureItem &GetPosture( BOOL = TRUE ) const;
+ inline const SvxWeightItem &GetWeight( BOOL = TRUE ) const;
+ inline const SvxShadowedItem &GetShadowed( BOOL = TRUE ) const;
+ inline const SvxAutoKernItem &GetAutoKern( BOOL = TRUE ) const;
+ inline const SvxWordLineModeItem &GetWordLineMode( BOOL = TRUE ) const;
+ inline const SvxContourItem &GetContour( BOOL = TRUE ) const;
+ inline const SvxKerningItem &GetKerning( BOOL = TRUE ) const;
+ inline const SvxUnderlineItem &GetUnderline( BOOL = TRUE ) const;
+ inline const SvxCrossedOutItem &GetCrossedOut( BOOL = TRUE ) const;
+ inline const SvxFontHeightItem &GetSize( BOOL = TRUE ) const;
+ inline const SvxPropSizeItem &GetPropSize( BOOL = TRUE ) const;
+ inline const SvxFontItem &GetFont( BOOL = TRUE ) const;
+ inline const SvxColorItem &GetColor( BOOL = TRUE ) const;
+ inline const SvxCharSetColorItem &GetCharSetColor( BOOL = TRUE ) const;
+ inline const SvxLanguageItem &GetLanguage( BOOL = TRUE ) const;
+ inline const SvxEscapementItem &GetEscapement( BOOL = TRUE ) const;
+ inline const SvxCaseMapItem &GetCaseMap( BOOL = TRUE ) const;
+ inline const SvxNoHyphenItem &GetNoHyphenHere( BOOL = TRUE ) const;
+ inline const SvxBlinkItem &GetBlink( BOOL = TRUE ) const;
+ inline const SvxBrushItem &GetChrBackground( BOOL = TRUE ) const;
+ inline const SvxFontItem &GetCJKFont( BOOL = TRUE ) const;
+ inline const SvxFontHeightItem &GetCJKSize( BOOL = TRUE ) const;
+ inline const SvxLanguageItem &GetCJKLanguage( BOOL = TRUE ) const;
+ inline const SvxPostureItem &GetCJKPosture( BOOL = TRUE ) const;
+ inline const SvxWeightItem &GetCJKWeight( BOOL = TRUE ) const;
+ inline const SvxFontItem &GetCTLFont( BOOL = TRUE ) const;
+ inline const SvxFontHeightItem &GetCTLSize( BOOL = TRUE ) const;
+ inline const SvxLanguageItem &GetCTLLanguage( BOOL = TRUE ) const;
+ inline const SvxPostureItem &GetCTLPosture( BOOL = TRUE ) const;
+ inline const SvxWeightItem &GetCTLWeight( BOOL = TRUE ) const;
+ inline const SfxBoolItem &GetWritingDirection( BOOL = TRUE ) const;
+
+ // Frame-Attribute - impl. steht im frmatr.hxx
+ inline const SwFmtFillOrder &GetFillOrder( BOOL = TRUE ) const;
+ inline const SwFmtFrmSize &GetFrmSize( BOOL = TRUE ) const;
+ inline const SvxPaperBinItem &GetPaperBin( BOOL = TRUE ) const;
+ inline const SvxLRSpaceItem &GetLRSpace( BOOL = TRUE ) const;
+ inline const SvxULSpaceItem &GetULSpace( BOOL = TRUE ) const;
+ inline const SwFmtCntnt &GetCntnt( BOOL = TRUE ) const;
+ inline const SwFmtHeader &GetHeader( BOOL = TRUE ) const;
+ inline const SwFmtFooter &GetFooter( BOOL = TRUE ) const;
+ inline const SvxPrintItem &GetPrint( BOOL = TRUE ) const;
+ inline const SvxOpaqueItem &GetOpaque( BOOL = TRUE ) const;
+ inline const SvxProtectItem &GetProtect( BOOL = TRUE ) const;
+ inline const SwFmtSurround &GetSurround( BOOL = TRUE ) const;
+ inline const SwFmtVertOrient &GetVertOrient( BOOL = TRUE ) const;
+ inline const SwFmtHoriOrient &GetHoriOrient( BOOL = TRUE ) const;
+ inline const SwFmtAnchor &GetAnchor( BOOL = TRUE ) const;
+ inline const SvxBoxItem &GetBox( BOOL = TRUE ) const;
+ inline const SvxFmtKeepItem &GetKeep( BOOL = TRUE ) const;
+ inline const SvxBrushItem &GetBackground( BOOL = TRUE ) const;
+ inline const SvxShadowItem &GetShadow( BOOL = TRUE ) const;
+ inline const SwFmtPageDesc &GetPageDesc( BOOL = TRUE ) const;
+ inline const SvxFmtBreakItem &GetBreak( BOOL = TRUE ) const;
+ inline const SwFmtCol &GetCol( BOOL = TRUE ) const;
+ inline const SvxMacroItem &GetMacro( BOOL = TRUE ) const;
+ inline const SwFmtURL &GetURL( BOOL = TRUE ) const;
+ inline const SwFmtEditInReadonly &GetEditInReadonly( BOOL = TRUE ) const;
+ inline const SwFmtLayoutSplit &GetLayoutSplit( BOOL = TRUE ) const;
+ inline const SwFmtChain &GetChain( BOOL = TRUE ) const;
+ inline const SwFmtLineNumber &GetLineNumber( BOOL = TRUE ) const;
+ inline const SwFmtFtnAtTxtEnd &GetFtnAtTxtEnd( BOOL = TRUE ) const;
+ inline const SwFmtEndAtTxtEnd &GetEndAtTxtEnd( BOOL = TRUE ) const;
+ inline const SwFmtNoBalancedColumns &GetBalancedColumns( BOOL = TRUE ) const;
+
+ // Grafik-Attribute - impl. steht im grfatr.hxx
+ inline const SwMirrorGrf &GetMirrorGrf( BOOL = TRUE ) const;
+ inline const SwCropGrf &GetCropGrf( BOOL = TRUE ) const;
+ inline const SwRotationGrf &GetRotationGrf(BOOL = TRUE ) const;
+ inline const SwLuminanceGrf &GetLuminanceGrf(BOOL = TRUE ) const;
+ inline const SwContrastGrf &GetContrastGrf(BOOL = TRUE ) const;
+ inline const SwChannelRGrf &GetChannelRGrf(BOOL = TRUE ) const;
+ inline const SwChannelGGrf &GetChannelGGrf(BOOL = TRUE ) const;
+ inline const SwChannelBGrf &GetChannelBGrf(BOOL = TRUE ) const;
+ inline const SwGammaGrf &GetGammaGrf(BOOL = TRUE ) const;
+ inline const SwInvertGrf &GetInvertGrf(BOOL = TRUE ) const;
+ inline const SwTransparencyGrf &GetTransparencyGrf(BOOL = TRUE ) const;
+ inline const SwDrawModeGrf &GetDrawModeGrf(BOOL = TRUE ) const;
+
+ // Paragraph-Attribute - impl. steht im paratr.hxx
+ inline const SvxLineSpacingItem &GetLineSpacing( BOOL = TRUE ) const;
+ inline const SvxAdjustItem &GetAdjust( BOOL = TRUE ) const;
+ inline const SvxFmtSplitItem &GetSplit( BOOL = TRUE ) const;
+ inline const SwRegisterItem &GetRegister( BOOL = TRUE ) const;
+ inline const SwNumRuleItem &GetNumRule( BOOL = TRUE ) const;
+ inline const SvxWidowsItem &GetWidows( BOOL = TRUE ) const;
+ inline const SvxOrphansItem &GetOrphans( BOOL = TRUE ) const;
+ inline const SvxTabStopItem &GetTabStops( BOOL = TRUE ) const;
+ inline const SvxHyphenZoneItem &GetHyphenZone( BOOL = TRUE ) const;
+ inline const SwFmtDrop &GetDrop( BOOL = TRUE ) const;
+
+ // TabellenBox-Attribute - impl. steht im cellatr.hxx
+ inline const SwTblBoxNumFormat &GetTblBoxNumFmt( BOOL = TRUE ) const;
+ inline const SwTblBoxFormula &GetTblBoxFormula( BOOL = TRUE ) const;
+ inline const SwTblBoxValue &GetTblBoxValue( BOOL = TRUE ) const;
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwAttrSet)
+};
+
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.48 2000/09/18 16:03:29 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.47 2000/09/08 13:24:27 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.46 2000/07/31 19:23:08 jp
+ new attributes for CJK/CTL and graphic
+
+ Revision 1.45 2000/05/26 07:08:20 os
+ old SW Basic API Slots removed
+
+ Revision 1.44 2000/01/03 18:19:55 jp
+ Bug #71411#: new attribut
+
+ Revision 1.43 1999/09/07 14:33:46 ama
+ New #66878#: EndOfTxt-Items for footnotes and endnotes
+
+ Revision 1.42 1999/03/19 12:33:58 OS
+ #63701# unbenutztes Break-Attribut aus den Sections entfernt
+
+
+ Rev 1.41 19 Mar 1999 13:33:58 OS
+ #63701# unbenutztes Break-Attribut aus den Sections entfernt
+
+ Rev 1.40 05 Feb 1999 17:42:26 JP
+ Task #61467#: Attrset ueber Dokumentgrenzen kopieren, dabei PageDesc/Numrule mit erzeugen
+
+ Rev 1.39 28 Jan 1999 18:11:48 JP
+ Task #57749#: Undo von Bereichs-Attributen (Spalten, Hintergr...)
+
+ Rev 1.38 04 Feb 1998 14:09:20 MA
+ new: SwFmtLineNumber
+
+ Rev 1.37 15 Dec 1997 16:23:40 AMA
+ New: SwSectItem: Soll der uebergeordnete Bereich aufgebrochen werden?
+
+*************************************************************************/
+ // #ifndef _SWATRSET_HXX
+#endif
diff --git a/sw/inc/swbaslnk.hxx b/sw/inc/swbaslnk.hxx
new file mode 100644
index 000000000000..34aed0581ced
--- /dev/null
+++ b/sw/inc/swbaslnk.hxx
@@ -0,0 +1,127 @@
+/*************************************************************************
+ *
+ * $RCSfile: swbaslnk.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWBASLNK_HXX
+#define _SWBASLNK_HXX
+
+
+#ifndef _LNKBASE_HXX //autogen
+#include <so3/lnkbase.hxx>
+#endif
+
+class SwNode;
+class SwCntntNode;
+class SwNodeIndex;
+
+class SwBaseLink : public SvBaseLink
+{
+ SwCntntNode* pCntntNode;
+ BOOL bSwapIn : 1;
+ BOOL bNoDataFlag : 1;
+ BOOL bIgnoreDataChanged : 1;
+
+protected:
+ SwBaseLink() {}
+
+ SwBaseLink( const String& rNm, USHORT nObjectType, SvPseudoObject* pObj,
+ SwCntntNode* pNode = 0 )
+ : SvBaseLink( rNm, nObjectType, pObj ), pCntntNode( pNode ),
+ bSwapIn( FALSE ), bNoDataFlag( FALSE ), bIgnoreDataChanged( FALSE )
+ {}
+
+public:
+ TYPEINFO();
+
+ SwBaseLink( USHORT nMode, USHORT nFormat, SwCntntNode* pNode = 0 )
+ : SvBaseLink( nMode, nFormat ), pCntntNode( pNode ),
+ bSwapIn( FALSE ), bNoDataFlag( FALSE ), bIgnoreDataChanged( FALSE )
+ {}
+ virtual ~SwBaseLink();
+
+ virtual void DataChanged( SvData& rData );
+ virtual void Closed();
+
+ virtual const SwNode* GetAnchor() const;
+
+ SwCntntNode *GetCntntNode() { return pCntntNode; }
+
+ // nur fuer Grafiken
+ FASTBOOL SwapIn( BOOL bWaitForData = FALSE, BOOL bNativFormat = FALSE );
+
+ FASTBOOL IsShowQuickDrawBmp() const; // nur fuer Grafiken
+
+ FASTBOOL Connect() { return 0 != SvBaseLink::GetRealObject(); }
+ SvLinkName* GetCacheName() const { return SvBaseLink::GetCacheName(); }
+
+ // nur fuer Grafik-Links ( zum Umschalten zwischen DDE / Grf-Link)
+ void SetObjType( USHORT nType ) { SvBaseLink::SetObjType( nType ); }
+
+ BOOL IsRecursion( const SwBaseLink* pChkLnk ) const;
+ virtual BOOL IsInRange( ULONG nSttNd, ULONG nEndNd, xub_StrLen nStt = 0,
+ xub_StrLen nEnd = STRING_NOTFOUND ) const;
+
+ void SetNoDataFlag() { bNoDataFlag = TRUE; }
+ BOOL ChkNoDataFlag() { return bNoDataFlag ? !(bNoDataFlag = FALSE) : FALSE; }
+ BOOL IsNoDataFlag() const { return bNoDataFlag; }
+};
+
+
+#endif
+
diff --git a/sw/inc/swcrsr.hxx b/sw/inc/swcrsr.hxx
new file mode 100644
index 000000000000..b87b94d2fc21
--- /dev/null
+++ b/sw/inc/swcrsr.hxx
@@ -0,0 +1,348 @@
+/*************************************************************************
+ *
+ * $RCSfile: swcrsr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWCRSR_HXX
+#define _SWCRSR_HXX
+
+#ifndef _WORDSEL_HXX //autogen
+#include <svtools/wordsel.hxx>
+#endif
+#ifndef _PAM_HXX //autogen
+#include <pam.hxx>
+#endif
+#ifndef _TBLSEL_HXX //autogen
+#include <tblsel.hxx>
+#endif
+#ifndef _CSHTYP_HXX //autogen
+#include <cshtyp.hxx>
+#endif
+
+
+class SwShellCrsr;
+class SwShellTableCrsr;
+class SwTableCursor;
+class SwUnoCrsr;
+class SwUnoTableCrsr;
+struct _SwCursor_SavePos;
+
+// ein Basis-Struktur fuer die Parameter der Find-Methoden
+// return - Werte vom Found-Aufruf.
+const int FIND_NOT_FOUND = 0;
+const int FIND_FOUND = 1;
+const int FIND_NO_RING = 2;
+
+struct SwFindParas
+{
+ virtual int Find( SwPaM*, SwMoveFn, const SwPaM*, FASTBOOL ) = 0;
+ virtual int IsReplaceMode() const = 0;
+};
+
+enum SwCursorSelOverFlags
+{
+ SELOVER_NONE = 0x00,
+ SELOVER_CHECKNODESSECTION = 0x01,
+ SELOVER_TOGGLE = 0x02,
+ SELOVER_ENABLEREVDIREKTION = 0x04,
+ SELOVER_CHANGEPOS = 0x08
+};
+
+class SwCursor : public SwPaM
+{
+ friend class SwCrsrSaveState;
+
+ _SwCursor_SavePos* pSavePos;
+
+ ULONG FindAll( SwFindParas& , SwDocPositions, SwDocPositions, FindRanges );
+
+protected:
+ virtual _SwCursor_SavePos* CreateNewSavePos() const;
+ void SaveState();
+ void RestoreState();
+
+ const _SwCursor_SavePos* GetSavePos() const { return pSavePos; }
+
+public:
+ SwCursor( const SwPosition &rPos, SwPaM* pRing = 0 );
+ SwCursor( SwCursor& );
+ virtual ~SwCursor();
+
+ virtual SwCursor* Create( SwPaM* pRing = 0 ) const;
+
+ virtual operator SwShellCrsr* ();
+ virtual operator SwShellTableCrsr* ();
+ virtual operator SwTableCursor* ();
+ virtual operator SwUnoCrsr* ();
+ virtual operator SwUnoTableCrsr* ();
+
+ inline operator const SwShellCrsr* () const;
+ inline operator const SwShellTableCrsr* () const;
+ inline operator const SwTableCursor* () const;
+ inline operator const SwUnoCrsr* () const;
+ inline operator const SwUnoTableCrsr* () const;
+
+ virtual FASTBOOL MaxReplaceArived();
+ virtual void SaveTblBoxCntnt( const SwPosition* pPos = 0 );
+
+ void FillFindPos( SwDocPositions ePos, SwPosition& rPos ) const;
+ SwMoveFnCollection* MakeFindRange( SwDocPositions, SwDocPositions,
+ SwPaM* ) const;
+
+ ULONG Find( const SearchParam& rParam,
+ SwDocPositions nStart, SwDocPositions nEnde,
+ FindRanges = FND_IN_BODY,
+ int bReplace = FALSE );
+
+ ULONG Find( const SwTxtFmtColl& rFmtColl,
+ SwDocPositions nStart, SwDocPositions nEnde,
+ FindRanges = FND_IN_BODY,
+ const SwTxtFmtColl* pReplFmt = 0 );
+
+ ULONG Find( const SfxItemSet& rSet, FASTBOOL bNoCollections,
+ SwDocPositions nStart, SwDocPositions nEnde,
+ FindRanges = FND_IN_BODY,
+ const SearchParam* pTextPara = 0,
+ const SfxItemSet* rReplSet = 0 );
+
+/* int IsWordFNC( FNIsWord fnIsWord ) const;
+ int GoWordFNC( FNGoWord fnGoWord );
+ FASTBOOL IsStartWord()const { return IsWordFNC( WordSelection::IsStartWord ); }
+ FASTBOOL IsEndWord() const { return IsWordFNC( WordSelection::IsEndWord ); }
+ FASTBOOL IsInWord() const { return IsWordFNC( WordSelection::IsInWord ); }
+ FASTBOOL GoStartWord() { return GoWordFNC( WordSelection::GoStartWord ); }
+ FASTBOOL GoEndWord() { return GoWordFNC( WordSelection::GoEndWord ); }
+ FASTBOOL GoNextWord() { return GoWordFNC( WordSelection::GoNextWord ); }
+ FASTBOOL GoPrevWord() { return GoWordFNC( WordSelection::GoPrevWord ); }
+*/
+ FASTBOOL IsStartWord()const;
+ FASTBOOL IsEndWord() const;
+ FASTBOOL IsInWord() const;
+ FASTBOOL GoStartWord();
+ FASTBOOL GoEndWord();
+ FASTBOOL GoNextWord();
+ FASTBOOL GoPrevWord();
+ FASTBOOL SelectWord( const Point* pPt = 0 );
+
+ enum SentenceMoveType
+ {
+ NEXT_SENT,
+ PREV_SENT,
+ START_SENT,
+ END_SENT
+ };
+ FASTBOOL GoSentence(SentenceMoveType eMoveType);
+ FASTBOOL GoNextSentence(){return GoSentence(NEXT_SENT);}
+ FASTBOOL GoPrevSentence(){return GoSentence(PREV_SENT);}
+
+ FASTBOOL LeftRight( BOOL bLeft, USHORT nCnt = 1 );
+ FASTBOOL UpDown( BOOL bUp, USHORT nCnt = 1,
+ Point* pPt = 0, long nUpDownX = 0 );
+ FASTBOOL LeftRightMargin( BOOL bLeftMargin, BOOL bAPI = FALSE );
+ FASTBOOL IsAtLeftRightMargin( BOOL bLeftMargin, BOOL bAPI = FALSE ) const;
+ FASTBOOL SttEndDoc( BOOL bSttDoc );
+ FASTBOOL GoPrevNextCell( BOOL bNext, USHORT nCnt );
+
+ FASTBOOL Left( USHORT nCnt = 1 ) { return LeftRight( TRUE, nCnt ); }
+ FASTBOOL Right( USHORT nCnt = 1 ) { return LeftRight( FALSE, nCnt ); }
+ FASTBOOL Up( USHORT nCnt = 1 ) { return UpDown( TRUE, nCnt ); }
+ FASTBOOL Down( USHORT nCnt = 1 ) { return UpDown( FALSE, nCnt ); }
+ FASTBOOL LeftMargin() { return LeftRightMargin( TRUE ); }
+ FASTBOOL RightMargin() { return LeftRightMargin( FALSE ); }
+ FASTBOOL SttDoc() { return SttEndDoc( TRUE ); }
+ FASTBOOL EndDoc() { return SttEndDoc( FALSE ); }
+ FASTBOOL GoNextCell( USHORT nCnt = 1 ) { return GoPrevNextCell( TRUE, nCnt ); }
+ FASTBOOL GoPrevCell( USHORT nCnt = 1 ) { return GoPrevNextCell( FALSE, nCnt ); }
+ FASTBOOL GotoTable( const String& rName );
+ FASTBOOL GotoTblBox( const String& rName );
+ FASTBOOL GotoRegion( const String& rName );
+ FASTBOOL GotoFtnAnchor();
+ FASTBOOL GotoFtnTxt();
+ FASTBOOL GotoNextFtnAnchor();
+ FASTBOOL GotoPrevFtnAnchor();
+ FASTBOOL GotoNextFtnCntnt();
+ FASTBOOL GotoPrevFtnCntnt();
+
+ FASTBOOL MovePara( SwWhichPara, SwPosPara );
+ FASTBOOL MoveSection( SwWhichSection, SwPosSection );
+ FASTBOOL MoveTable( SwWhichTable, SwPosTable );
+ FASTBOOL MoveRegion( SwWhichRegion, SwPosRegion );
+
+
+ // gibt es eine Selection vom Content in die Tabelle
+ // Return Wert gibt an, ob der Crsr auf der alten Position verbleibt
+ virtual FASTBOOL IsSelOvr( int eFlags =
+ ( SELOVER_CHECKNODESSECTION |
+ SELOVER_TOGGLE | SELOVER_CHANGEPOS ));
+ virtual FASTBOOL IsInProtectTable( FASTBOOL bMove = FALSE,
+ FASTBOOL bChgCrsr = TRUE );
+ FASTBOOL IsNoCntnt() const;
+
+ void RestoreSavePos(); // Point auf die SavePos setzen
+
+ // TRUE: an die Position kann der Cursor gesetzt werden
+ virtual FASTBOOL IsAtValidPos( BOOL bPoint = TRUE ) const;
+
+ // darf der Cursor in ReadOnlyBereiche?
+ FASTBOOL IsReadOnlyAvailable() const;
+
+ DECL_FIXEDMEMPOOL_NEWDEL( SwCursor )
+};
+
+
+class SwCrsrSaveState
+{
+ SwCursor& rCrsr;
+public:
+ SwCrsrSaveState( SwCursor& rC ) : rCrsr( rC ) { rC.SaveState(); }
+ ~SwCrsrSaveState() { rCrsr.RestoreState(); }
+};
+
+struct _SwCursor_SavePos
+{
+ ULONG nNode;
+ xub_StrLen nCntnt;
+ _SwCursor_SavePos* pNext;
+
+ _SwCursor_SavePos( const SwCursor& rCrsr )
+ : nNode( rCrsr.GetPoint()->nNode.GetIndex() ),
+ nCntnt( rCrsr.GetPoint()->nContent.GetIndex() ),
+ pNext( 0 )
+ {}
+ virtual ~_SwCursor_SavePos() {}
+};
+
+
+
+class SwTableCursor : public virtual SwCursor
+{
+
+protected:
+ ULONG nTblPtNd, nTblMkNd;
+ xub_StrLen nTblPtCnt, nTblMkCnt;
+ SwSelBoxes aSelBoxes;
+ BOOL bChg : 1;
+ BOOL bParked : 1; // Tabellen-Cursor wurde geparkt
+
+public:
+ SwTableCursor( const SwPosition &rPos, SwPaM* pRing = 0 );
+ SwTableCursor( SwTableCursor& );
+ virtual ~SwTableCursor();
+
+ virtual operator SwTableCursor* ();
+
+ void InsertBox( const SwTableBox& rTblBox );
+ void DeleteBox( USHORT nPos ) { aSelBoxes.Remove( nPos ); bChg = TRUE; }
+ USHORT GetBoxesCount() const { return aSelBoxes.Count(); }
+ const SwSelBoxes& GetBoxes() const { return aSelBoxes; }
+
+ // Baut fuer alle Boxen die Cursor auf
+ SwCursor* MakeBoxSels( SwCursor* pAktCrsr );
+ // sind irgendwelche Boxen mit einem Schutz versehen?
+ FASTBOOL HasReadOnlyBoxSel() const;
+
+ // wurde der TabelleCursor veraendert ? Wenn ja speicher gleich
+ // die neuen Werte.
+ FASTBOOL IsCrsrMovedUpdt();
+ // wurde der TabelleCursor veraendert ?
+ FASTBOOL IsCrsrMoved() const
+ {
+ return nTblMkNd != GetMark()->nNode.GetIndex() ||
+ nTblPtNd != GetPoint()->nNode.GetIndex() ||
+ nTblMkCnt != GetMark()->nContent.GetIndex() ||
+ nTblPtCnt != GetPoint()->nContent.GetIndex();
+ }
+
+ FASTBOOL IsChgd() const { return bChg; }
+
+ // Parke den Tabellen-Cursor auf dem StartNode der Boxen.
+ void ParkCrsr();
+
+};
+
+
+// --------------------------- inline Methoden ----------------------
+
+inline SwCursor::operator const SwShellCrsr* () const
+{
+ return (SwShellCrsr*)*((SwCursor*)this);
+}
+
+inline SwCursor::operator const SwShellTableCrsr* () const
+{
+ return (SwShellTableCrsr*)*((SwCursor*)this);
+}
+
+inline SwCursor::operator const SwTableCursor* () const
+{
+ return (SwTableCursor*)*((SwCursor*)this);
+}
+
+inline SwCursor::operator const SwUnoCrsr* () const
+{
+ return (SwUnoCrsr*)*((SwCursor*)this);
+}
+
+inline SwCursor::operator const SwUnoTableCrsr* () const
+{
+ return (SwUnoTableCrsr*)*((SwCursor*)this);
+}
+
+
+#endif
+
diff --git a/sw/inc/swddetbl.hxx b/sw/inc/swddetbl.hxx
new file mode 100644
index 000000000000..e26727a8dd16
--- /dev/null
+++ b/sw/inc/swddetbl.hxx
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * $RCSfile: swddetbl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWDDETBL_HXX
+#define _SWDDETBL_HXX
+
+#include "swtable.hxx"
+
+class SwDDEFieldType;
+
+class SwDDETable : public SwTable
+{
+ SwDepend aDepend;
+public:
+ TYPEINFO();
+ // Constructor movet alle Lines/Boxen aus der SwTable zu sich.
+ // Die SwTable ist danach Leer und muss geloescht werden.
+ SwDDETable( SwTable& rTable, SwDDEFieldType* pDDEType );
+ ~SwDDETable();
+
+ void Modify( SfxPoolItem*, SfxPoolItem* );
+ void ChangeContent();
+ BOOL NoDDETable();
+
+ SwDDEFieldType* GetDDEFldType();
+ inline const SwDDEFieldType* GetDDEFldType() const;
+};
+
+
+// ----------- Inlines -----------------------------
+
+inline const SwDDEFieldType* SwDDETable::GetDDEFldType() const
+{
+ return ((SwDDETable*)this)->GetDDEFldType();
+}
+
+#endif
diff --git a/sw/inc/swdll.hxx b/sw/inc/swdll.hxx
new file mode 100644
index 000000000000..bdabfeafdd62
--- /dev/null
+++ b/sw/inc/swdll.hxx
@@ -0,0 +1,171 @@
+/*************************************************************************
+ *
+ * $RCSfile: swdll.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SW_SWDLL_HXX
+#define SW_SWDLL_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
+
+//#include <sal/types.h>
+
+//-------------------------------------------------------------------------
+
+class SwDLL
+
+/* [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.
+*/
+
+{
+
+ static void RegisterFactories();
+ static void RegisterInterfaces();
+ static void RegisterControls();
+public:
+ // Ctor/Dtor must be linked to the application
+ SwDLL();
+ ~SwDLL();
+
+ // 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 );
+ static ULONG GlobDetectFilter( SfxMedium& rMedium, const SfxFilter** ppFilter,
+ SfxFilterFlags nMust, SfxFilterFlags nDont );
+
+ static sal_Bool RegisterFrameLoaders( void* pServiceManager, void* pRegistryKey );
+ static void* CreateFrameLoader( const sal_Char* pImplementationName, void* pServiceManager, void *pRegistryKey );
+};
+
+//-------------------------------------------------------------------------
+
+class SwModuleDummy : 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:
+ virtual ~SwModuleDummy();
+ TYPEINFO();
+ // SvFactory name convention:
+ // 'p' + SfxObjectShell-subclass + 'Factory'
+ SotFactory* pSwDocShellFactory;
+ SotFactory* pSwWebDocShellFactory;
+ SotFactory* pSwGlobalDocShellFactory;
+
+ SwModuleDummy( ResMgr *pResMgr, BOOL bDummy,
+ SotFactory* pFact,
+ SotFactory* pWebFact,
+ SotFactory* pGlobalFact )
+ : SfxModule(pResMgr, bDummy,
+ (SfxObjectFactory*)pFact,
+ (SfxObjectFactory*)pWebFact,
+ (SfxObjectFactory*)pGlobalFact, 0L),
+ pSwDocShellFactory( pFact ),
+ pSwWebDocShellFactory( pWebFact ),
+ pSwGlobalDocShellFactory( pGlobalFact )
+ {}
+
+ virtual SfxModule* Load();
+
+ static SvGlobalName GetID(USHORT nFileFormat);
+ static USHORT HasID(const SvGlobalName& rName);
+};
+
+//-------------------------------------------------------------------------
+
+#define SW_DLL() ( *(SwModuleDummy**) GetAppData(SHL_WRITER) )
+
+#endif
+
diff --git a/sw/inc/swerror.h b/sw/inc/swerror.h
new file mode 100644
index 000000000000..3665609242fc
--- /dev/null
+++ b/sw/inc/swerror.h
@@ -0,0 +1,151 @@
+/*************************************************************************
+ *
+ * $RCSfile: swerror.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWSWERROR_H
+#define _SWSWERROR_H
+
+#ifndef _ERRCODE_HXX
+#include <tools/errcode.hxx>
+#endif
+
+#define ERROR_SW_BASE (ERRCODE_AREA_SW)
+#define ERROR_SW_READ_BASE (ERROR_SW_BASE | ERRCODE_CLASS_READ)
+#define ERROR_SW_WRITE_BASE (ERROR_SW_BASE | ERRCODE_CLASS_WRITE)
+
+#define WARN_SW_BASE (ERRCODE_AREA_SW | ERRCODE_WARNING_MASK)
+#define WARN_SW_READ_BASE (WARN_SW_BASE | ERRCODE_CLASS_READ )
+#define WARN_SW_WRITE_BASE (WARN_SW_BASE | ERRCODE_CLASS_WRITE )
+
+
+// Import Fehler
+#define ERR_SWG_FILE_FORMAT_ERROR (ERROR_SW_READ_BASE | 1 )
+#define ERR_SWG_READ_ERROR (ERROR_SW_READ_BASE | 2 )
+
+#define ERR_SW6_INPUT_FILE (ERROR_SW_READ_BASE | 4 )
+#define ERR_SW6_NOWRITER_FILE (ERROR_SW_READ_BASE | 5 )
+#define ERR_SW6_UNEXPECTED_EOF (ERROR_SW_READ_BASE | 6 )
+#define ERR_SW6_PASSWD (ERROR_SW_READ_BASE | 7 )
+
+#define ERR_WW6_NO_WW6_FILE_ERR (ERROR_SW_READ_BASE | 8 )
+#define ERR_WW6_FASTSAVE_ERR (ERROR_SW_READ_BASE | 9 )
+
+#define ERR_W4W_WRITE_TMP_ERROR (ERROR_SW_READ_BASE | 10 )
+#define ERR_EXCLOT_WRONG_RANGE (ERROR_SW_READ_BASE | 11 )
+
+#define ERR_FORMAT_ROWCOL (ERROR_SW_READ_BASE | 12)
+
+#define ERR_SWG_NEW_VERSION (ERROR_SW_READ_BASE | 13)
+#define ERR_WW8_NO_WW8_FILE_ERR (ERROR_SW_READ_BASE | 14)
+
+// Export Fehler
+#define ERR_SWG_WRITE_ERROR (ERROR_SW_WRITE_BASE | 30 )
+#define ERR_SWG_OLD_GLOSSARY (ERROR_SW_WRITE_BASE | 31 )
+#define ERR_SWG_CANNOT_WRITE (ERROR_SW_WRITE_BASE | 32 )
+#define ERR_W4W_READ_TMP_ERROR (ERROR_SW_WRITE_BASE | 33 )
+#define ERR_SWG_LARGE_DOC_ERROR (ERROR_SW_WRITE_BASE | 34 )
+
+// Import/Export Fehler
+#define ERR_SWG_INTERNAL_ERROR (ERROR_SW_BASE | 50 )
+
+#define ERR_W4W_MEM (ERROR_SW_BASE | 51 )
+#define ERR_W4W_WRITE_FULL (ERROR_SW_BASE | 52 )
+#define ERR_W4W_INTERNAL_ERROR (ERROR_SW_BASE | 53 )
+#define ERR_W4W_DLL_ERROR (ERROR_SW_BASE | 54 )
+
+#define ERR_TXTBLOCK_NEWFILE_ERROR (ERROR_SW_BASE|ERRCODE_CLASS_LOCKING | 55 )
+
+// weitere Fehler und Fehlerklassen
+#define ERR_AUTOPATH_ERROR (ERROR_SW_BASE|ERRCODE_CLASS_PATH | 55 )
+#define ERR_TBLSPLIT_ERROR (ERROR_SW_BASE|ERRCODE_CLASS_NONE| 56 )
+#define ERR_TBLINSCOL_ERROR (ERROR_SW_BASE|ERRCODE_CLASS_NONE| 57 )
+#define ERR_TBLDDECHG_ERROR (ERROR_SW_BASE|ERRCODE_CLASS_NONE| 58 )
+
+// ----- Warnings ---------------------------
+
+// Import - Warnings
+#define WARN_SWG_NO_DRAWINGS (WARN_SW_READ_BASE | 70 )
+#define WARN_WW6_FASTSAVE_ERR (WARN_SW_READ_BASE | 71 )
+
+// Import & Export - Warnings
+#define WARN_SWG_FEATURES_LOST (WARN_SW_BASE | 72 )
+#define WARN_SWG_OLE (WARN_SW_BASE | 73 )
+#define WARN_SWG_POOR_LOAD (WARN_SW_BASE | 74 )
+
+// Export warnings
+#define WARN_SWG_HTML_NO_MACROS (WARN_SW_WRITE_BASE |75)
+
+#ifndef __RSC
+
+inline FASTBOOL IsWarning( ULONG nErr )
+{
+ return 0 != ( nErr & ERRCODE_WARNING_MASK & nErr );
+}
+
+inline FASTBOOL IsError( ULONG nErr )
+{
+ return nErr && 0 == ( ERRCODE_WARNING_MASK & nErr );
+}
+
+#endif
+
+
+#endif
+
diff --git a/sw/inc/swevent.hxx b/sw/inc/swevent.hxx
new file mode 100644
index 000000000000..2dc79cbe6ca8
--- /dev/null
+++ b/sw/inc/swevent.hxx
@@ -0,0 +1,151 @@
+/*************************************************************************
+ *
+ * $RCSfile: swevent.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWEVENT_HXX
+#define _SWEVENT_HXX
+
+// #include *****************************************************************
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+#ifndef _SFX_HRC
+#include <sfx2/sfx.hrc>
+#endif
+
+#define SW_EVENT_OBJECT_SELECT ( EVENT_APP_START + 0 )
+#define SW_EVENT_START_INS_GLOSSARY ( EVENT_APP_START + 1 )
+#define SW_EVENT_END_INS_GLOSSARY ( EVENT_APP_START + 2 )
+#define SW_EVENT_MAIL_MERGE ( EVENT_APP_START + 3 )
+#define SW_EVENT_FRM_KEYINPUT_ALPHA ( EVENT_APP_START + 4 )
+#define SW_EVENT_FRM_KEYINPUT_NOALPHA ( EVENT_APP_START + 5 )
+#define SW_EVENT_FRM_RESIZE ( EVENT_APP_START + 6 )
+#define SW_EVENT_FRM_MOVE ( EVENT_APP_START + 7 )
+#define SW_EVENT_PAGE_COUNT ( EVENT_APP_START + 8 )
+
+
+class SwFrmFmt;
+class SwFmtINetFmt;
+class IMapObject;
+
+// enum fuer Objecte die Events ins Basic oder in JavaScript Callen
+enum SwCallEventObjectType
+{
+ EVENT_OBJECT_NONE = 0, // Null ist garnichts
+ EVENT_OBJECT_IMAGE,
+ EVENT_OBJECT_INETATTR,
+ EVENT_OBJECT_URLITEM,
+ EVENT_OBJECT_IMAGEMAP
+};
+
+// structur fuer den Austausch zwischen UI/CORE
+
+struct SwCallMouseEvent
+{
+ SwCallEventObjectType eType;
+ union
+ {
+ // EVENT_OBJECT_IMAGE/EVENT_OBJECT_URLITEM
+ const SwFrmFmt* pFmt;
+
+ // EVENT_OBJECT_INETATTR
+ const SwFmtINetFmt* pINetAttr;
+
+ // EVENT_OBJECT_IMAGEMAP
+ struct
+ {
+ const SwFrmFmt* pFmt;
+ const IMapObject* pIMapObj;
+ } IMAP;
+ } PTR;
+
+ SwCallMouseEvent()
+ : eType( EVENT_OBJECT_NONE )
+ { PTR.pFmt = 0; PTR.IMAP.pIMapObj = 0; }
+
+ void Set( SwCallEventObjectType eTyp, const SwFrmFmt* pFmt )
+ { eType = eTyp; PTR.pFmt = pFmt; PTR.IMAP.pIMapObj = 0; }
+
+ void Set( const SwFrmFmt* pFmt, const IMapObject* pIMapObj )
+ { eType = EVENT_OBJECT_IMAGEMAP; PTR.pFmt = pFmt; PTR.IMAP.pIMapObj = pIMapObj; }
+
+ void Set( const SwFmtINetFmt* pINetAttr )
+ { eType = EVENT_OBJECT_INETATTR; PTR.pINetAttr = pINetAttr; PTR.IMAP.pIMapObj = 0; }
+
+ int operator==( const SwCallMouseEvent& rEvent ) const
+ {
+ return eType == rEvent.eType &&
+ PTR.pFmt == rEvent.PTR.pFmt &&
+ PTR.IMAP.pIMapObj == rEvent.PTR.IMAP.pIMapObj;
+ }
+ int operator!=( const SwCallMouseEvent& rEvent ) const
+ { return !( *this == rEvent ); }
+
+ void Clear()
+ { eType = EVENT_OBJECT_NONE; PTR.pFmt = 0; PTR.IMAP.pIMapObj = 0; }
+
+ BOOL HasEvent() const { return EVENT_OBJECT_NONE != eType; }
+};
+
+
+#endif
+
diff --git a/sw/inc/swgstr.hxx b/sw/inc/swgstr.hxx
new file mode 100644
index 000000000000..0887529c907b
--- /dev/null
+++ b/sw/inc/swgstr.hxx
@@ -0,0 +1,190 @@
+/*************************************************************************
+ *
+ * $RCSfile: swgstr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWGSTR_HXX
+#define _SWGSTR_HXX
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+
+typedef long long3; // Zur Dokumentation: 3-byte-Longs
+
+#define MAX_BEGIN 64 // Maximale Blockschachtelung
+#define PASSWDLEN 16 // Maximale Passwortlaenge
+
+// Neue Version mit SvStreams
+
+// Passwort- und Codierungs-Funktionalitaet
+
+class swcrypter {
+protected:
+ sal_Char cPasswd[ PASSWDLEN ]; // Passwort-Puffer
+ BOOL bPasswd; // TRUE wenn mit Passwort
+ void encode( sal_Char*, USHORT ); // Puffer codieren/decodieren
+public:
+ swcrypter();
+ BOOL setpasswd( const String& ); // Passwort setzen
+ void copypasswd( const sal_Char* ); // Passwort direkt setzen
+ const sal_Char* getpasswd() { return cPasswd; }
+};
+
+// Reader/Writer-Stream-Basisklasse mit Pufferverwaltung fuer Texte
+// und Spezial-I/O fuer 3-Byte-Longs
+
+class swstreambase : public swcrypter {
+protected:
+ SvStream* pStrm; // eigentlicher Stream
+ sal_Char* pBuf; // Zwischenpuffer
+ USHORT nBuflen; // Laenge des Zwischenpuffers
+ short nLong; // Long-Laenge (3 oder 4)
+ BOOL bTempStrm; // TRUE: Stream loeschen
+ void checkbuf( USHORT ); // Testen der Pufferlaenge
+
+ swstreambase( SvStream& );
+
+ swstreambase( const swstreambase& );
+ int operator=( const swstreambase& );
+public:
+ ~swstreambase();
+ SvStream& Strm() { return *pStrm; }
+ void clear(); // Puffer loeschen
+ sal_Char* GetBuf() { return pBuf; }
+
+ // Zusatzfunktionen zur I/O von LONGs als 3-Byte-Zahlen
+
+ void long3() { nLong = 3; }
+ void long4() { nLong = 4; }
+
+ void sync( swstreambase& r ) { pStrm->Seek( r.tell() ); }
+
+ // Alias- und Hilfsfunktionen
+
+ void seek( long nPos ) { pStrm->Seek( nPos ); }
+ long tell() { return pStrm->Tell(); }
+ long filesize(); // Dateigroesse
+ void flush() { pStrm->Flush(); }
+
+ void setbad();
+ int good() { return ( pStrm->GetError() == SVSTREAM_OK ); }
+ int bad() { return ( pStrm->GetError() != SVSTREAM_OK ); }
+ int operator!() { return ( pStrm->GetError() != SVSTREAM_OK ); }
+ int eof() { return pStrm->IsEof(); }
+
+ BYTE get();
+ void get( void* p, USHORT n ) { pStrm->Read( (sal_Char*) p, n ); }
+
+ inline swstreambase& operator>>( sal_Char& );
+ inline swstreambase& operator>>( BYTE& );
+ inline swstreambase& operator>>( short& );
+ inline swstreambase& operator>>( USHORT& );
+ swstreambase& operator>>( long& );
+ inline swstreambase& operator>>( ULONG& );
+};
+
+inline swstreambase& swstreambase::operator>>( sal_Char& c )
+{
+ *pStrm >> c; return *this;
+}
+
+inline swstreambase& swstreambase::operator>>( BYTE& c )
+{
+ *pStrm >> c; return *this;
+}
+
+inline swstreambase& swstreambase::operator>>( short& c )
+{
+ *pStrm >> c; return *this;
+}
+
+inline swstreambase& swstreambase::operator>>( USHORT& c )
+{
+ *pStrm >> c; return *this;
+}
+
+inline swstreambase& swstreambase::operator>>( ULONG& c )
+{
+ return *this >> (long&) c;
+}
+
+class swistream : public swstreambase {
+ BYTE cType; // Record-Typ
+ ULONG nOffset; // Record-Offset-Portion
+public:
+ swistream( SvStream& );
+
+ BYTE peek(); // 1 Byte testen
+ BYTE next(); // Blockstart
+ BYTE cur() { return cType; } // aktueller Block
+ BYTE skipnext(); // Record ueberspringen
+ void undonext(); // next() rueckgaengig machen
+ long getskip() { return nOffset; }
+ void skip( long = -1L ); // Block ueberspringen
+ sal_Char* text(); // Textstring lesen (nach BEGIN)
+ long size(); // aktuelle Record-Laenge
+
+private:
+ swistream( const swistream& );
+ int operator=( const swistream& );
+};
+
+
+#endif
diff --git a/sw/inc/swhints.hxx b/sw/inc/swhints.hxx
new file mode 100644
index 000000000000..721857bb3bc0
--- /dev/null
+++ b/sw/inc/swhints.hxx
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * $RCSfile: swhints.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SW_HINTS_HXX
+#define SW_HINTS_HXX
+
+#ifndef _SFXSMPLHINT_HXX //autogen
+#include <svtools/smplhint.hxx>
+#endif
+
+#define SW_BROADCASTID_START SFX_HINT_USER00
+#define SW_BROADCAST_DRAWVIEWS_CREATED SW_BROADCASTID_START
+
+
+#endif
diff --git a/sw/inc/swmodule.hxx b/sw/inc/swmodule.hxx
new file mode 100644
index 000000000000..5fecd2cbb7fd
--- /dev/null
+++ b/sw/inc/swmodule.hxx
@@ -0,0 +1,303 @@
+/*************************************************************************
+ *
+ * $RCSfile: swmodule.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWMODULE_HXX
+#define _SWMODULE_HXX
+
+
+#ifndef _LINK_HXX //autogen
+#include <tools/link.hxx>
+#endif
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+#ifndef SW_SWDLL_HXX
+#include <swdll.hxx>
+#endif
+#include "shellid.hxx"
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XDICTIONARYLISTEVENTLISTENER_HPP_
+#include <com/sun/star/linguistic/XDictionaryListEventListener.hpp>
+#endif
+
+class SvStringsDtor;
+class Color;
+class AuthorCharAttr;
+class SfxItemSet;
+class SfxRequest;
+class SfxErrorHandler;
+class SwSrcViewConfig;
+class SwModuleOptions;
+class SwMasterUsrPref;
+class SwViewOption;
+class SwView;
+class SwWrtShell;
+class SwPrintOptions;
+class SwAutoFmtOpt;
+class SwChapterNumRules;
+class SwStdFontConfig;
+class SwNavigationConfig;
+class SwDataExchange;
+class SwToolbarConfigItem;
+class SwAttrPool;
+#define VIEWOPT_DEST_VIEW 0
+#define VIEWOPT_DEST_TEXT 1
+#define VIEWOPT_DEST_WEB 2
+#define VIEWOPT_DEST_VIEW_ONLY 3 //ViewOptions werden nur an der ::com::sun::star::sdbcx::View, nicht an der Appl. gesetzt
+
+namespace com{ namespace sun{ namespace star{ namespace scanner{
+ class XScannerManager;
+}}}}
+
+class SwModule: public SwModuleDummy , public SfxListener
+{
+ String sActAuthor;
+
+ // ConfigItems
+ SwSrcViewConfig* pSrcViewConfig;
+ SwModuleOptions* pModuleConfig;
+ SwMasterUsrPref* pUsrPref;
+ SwMasterUsrPref* pWebUsrPref;
+ SwPrintOptions* pPrtOpt;
+ SwPrintOptions* pWebPrtOpt;
+ SwChapterNumRules* pChapterNumRules;
+ SwStdFontConfig* pStdFontConfig;
+ SwNavigationConfig* pNavigationConfig;
+ SwToolbarConfigItem*pToolbarConfig; //fr gestackte Toolbars, welche
+ SwToolbarConfigItem*pWebToolbarConfig; //war sichtbar?
+
+ SfxErrorHandler* pErrorHdl;
+
+ SwAttrPool *pAttrPool;
+
+ // Die aktuelle ::com::sun::star::sdbcx::View wird hier gehalten um nicht ueber
+ // GetActiveView arbeiten zu muessen
+ // Die ::com::sun::star::sdbcx::View ist solange gueltig bis Sie im Activate
+ // zerstoert oder ausgetauscht wird
+ SwView* pView;
+
+ // Liste aller Redline-Autoren
+ SvStringsDtor* pAuthorNames;
+
+ // DictionaryList listener to trigger spellchecking or hyphenation
+ ::com::sun::star::uno::Reference< ::com::sun::star::linguistic::XDictionaryListEventListener > xDicListEvtListener;
+ ::com::sun::star::uno::Reference< ::com::sun::star::scanner::XScannerManager > m_xScannerManager;
+
+ sal_Bool bAuthorInitialised : 1;
+ sal_Bool bEmbeddedLoadSave : 1;
+
+ virtual void FillStatusBar( StatusBar& );
+
+ // Hint abfangen fuer DocInfo
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+protected:
+ // Briefumschlaege, Etiketten
+ void InsertEnv();
+ void InsertLab(sal_Bool bLabel);
+
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SW_INTERFACE_MODULE);
+
+ // dieser Ctor nur fuer SW-Dll
+ SwModule( SvFactory* pFact,
+ SvFactory* pWebFact,
+ SvFactory* pGlobalFact );
+ // dieser Ctor nur fuer Web-Dll
+ SwModule( SvFactory* pWebFact );
+
+ ~SwModule();
+
+ virtual SfxModule* Load();
+
+ // ::com::sun::star::sdbcx::View setzen nur fuer internen Gebrauch,
+ // aus techn. Gruenden public
+ //
+ inline void SetView(SwView* pVw) { pView = pVw; }
+ inline SwView* GetView() { return pView; }
+
+ //Die Handler fuer die Slots
+ void StateOther(SfxItemSet &); // andere
+ void StateViewOptions(SfxItemSet &);
+ void StateIsView(SfxItemSet &);
+
+ void ExecOther(SfxRequest &); // Felder, Formel ..
+ void ExecViewOptions(SfxRequest &);
+ void ExecWizzard(SfxRequest &);
+ void ExecDB(SfxRequest &); // DBManager
+
+ // Benutzereinstellungen modifizieren
+ const SwMasterUsrPref *GetUsrPref(sal_Bool bWeb);
+ const SwViewOption* GetViewOption(sal_Bool bWeb);
+ void MakeUsrPref( SwViewOption &rToFill, sal_Bool bWeb ) const;
+ void ApplyUsrPref(const SwViewOption &, SwView*,
+ sal_uInt16 nDest = VIEWOPT_DEST_VIEW );
+
+ // ConfigItems erzeugen
+ SwSrcViewConfig* GetSourceViewConfig();
+ SwModuleOptions* GetModuleConfig() { return pModuleConfig;}
+ SwPrintOptions* GetPrtOptions(sal_Bool bWeb);
+ SwChapterNumRules* GetChapterNumRules();
+ SwStdFontConfig* GetStdFontConfig() { return pStdFontConfig; }
+ SwNavigationConfig* GetNavigationConfig();
+ SwToolbarConfigItem*GetToolbarConfig() { return pToolbarConfig; }
+ SwToolbarConfigItem*GetWebToolbarConfig() { return pWebToolbarConfig; }
+
+ // UNO
+// virtual Reflection* GetReflection( UsrUik aUIK );
+
+ // Ueber Sichten iterieren
+ static SwView* GetFirstView();
+ static SwView* GetNextView(SwView*);
+
+ sal_Bool IsEmbeddedLoadSave() const { return bEmbeddedLoadSave; }
+ void SetEmbeddedLoadSave( sal_Bool bFlag ) { bEmbeddedLoadSave = bFlag; }
+
+
+ // Public Data
+ //
+ SwDataExchange* pClipboard;
+ SwDataExchange* pDragDrop;
+
+ void ShowDBObj(SwWrtShell& rShell, const String& rDBName, sal_Bool bShowError = sal_False);
+
+ // Tabellenmodi
+ sal_Bool IsInsTblFormatNum(sal_Bool bHTML) const;
+ sal_Bool IsInsTblChangeNumFormat(sal_Bool bHTML) const;
+ sal_Bool IsInsTblAlignNum(sal_Bool bHTML) const;
+
+ // Redlining
+ sal_uInt16 GetRedlineAuthor();
+ sal_uInt16 GetRedlineAuthorCount();
+ const String& GetRedlineAuthor(sal_uInt16 nPos);
+ sal_uInt16 InsertRedlineAuthor(const String& rAuthor);
+
+ void GetInsertAuthorAttr(sal_uInt16 nAuthor, SfxItemSet &rSet);
+ void GetDeletedAuthorAttr(sal_uInt16 nAuthor, SfxItemSet &rSet);
+ void GetFormatAuthorAttr(sal_uInt16 nAuthor, SfxItemSet &rSet);
+
+ const AuthorCharAttr& GetInsertAuthorAttr() const;
+ const AuthorCharAttr& GetDeletedAuthorAttr() const;
+ const AuthorCharAttr& GetFormatAuthorAttr() const;
+
+ sal_uInt16 GetRedlineMarkPos();
+ const Color& GetRedlineMarkColor();
+
+ // returne den definierten DocStat - WordDelimiter
+ const String& GetDocStatWordDelim() const;
+
+ // Durchreichen der Metric von der ModuleConfig (fuer HTML-Export)
+ sal_uInt16 GetMetric( sal_Bool bWeb ) const;
+
+ // Update-Stati durchreichen
+ sal_uInt16 GetLinkUpdMode( sal_Bool bWeb ) const;
+ sal_uInt16 GetFldUpdateFlags( sal_Bool bWeb ) const;
+
+ //virtuelle Methoden fuer den Optionendialog
+ virtual SfxItemSet* CreateItemSet( sal_uInt16 nId );
+ virtual void ApplyItemSet( sal_uInt16 nId, const SfxItemSet& rSet );
+ virtual SfxTabPage* CreateTabPage( sal_uInt16 nId, Window* pParent, const SfxItemSet& rSet );
+
+ //hier wird der Pool angelegt und an der SfxShell gesetzt
+ void InitAttrPool();
+ //Pool loeschen bevor es zu spaet ist
+ void RemoveAttrPool();
+
+ // Invalidiert ggf. OnlineSpell-WrongListen
+ void CheckSpellChanges( sal_Bool bOnlineSpelling,
+ sal_Bool bIsSpellWrongAgain, sal_Bool bIsSpellAllAgain );
+
+ inline ::com::sun::star::uno::Reference< ::com::sun::star::linguistic::XDictionaryListEventListener > GetDicListEvtListener();
+ inline void SetDicListEvtListener(::com::sun::star::uno::Reference< ::com::sun::star::linguistic::XDictionaryListEventListener > xLstnr);
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::scanner::XScannerManager > GetScannerManager() const {return m_xScannerManager;}
+
+};
+
+
+inline ::com::sun::star::uno::Reference< ::com::sun::star::linguistic::XDictionaryListEventListener > SwModule::GetDicListEvtListener()
+{
+ return xDicListEvtListener;
+}
+
+inline void SwModule::SetDicListEvtListener(::com::sun::star::uno::Reference< ::com::sun::star::linguistic::XDictionaryListEventListener > xLstnr)
+{
+ xDicListEvtListener = xLstnr;
+}
+
+
+/*-----------------08.07.97 10.33-------------------
+ Zugriff auf das SwModule, die ::com::sun::star::sdbcx::View und die Shell
+--------------------------------------------------*/
+
+#define SW_MOD() ( *(SwModule**) GetAppData(SHL_WRITER))
+SwView* GetActiveView();
+SwWrtShell* GetActiveWrtShell();
+
+
+
+#endif
diff --git a/sw/inc/swpre.mk b/sw/inc/swpre.mk
new file mode 100644
index 000000000000..55cb472d2705
--- /dev/null
+++ b/sw/inc/swpre.mk
@@ -0,0 +1,85 @@
+#*************************************************************************
+#
+# $RCSfile: swpre.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+
+#======================================================================
+# standardmaessig mit Optimierung, muss explizit mit nopt=t ausgeschaltet
+# werden, wenn nicht gewuenscht
+#----------------------------------------------------------------------
+
+.IF "$(nopt)"!="" || "$(NOPT)"!=""
+nopt=true
+NOPT=TRUE
+optimize=
+OPTIMIZE=
+.ELSE
+.IF "$(debug)$(DEBUG)"==""
+optimize=true
+OPTIMIZE=TRUE
+.ENDIF
+.ENDIF
+
+# falls dependencies auf s:\solver\... erstellt werden sollen
+# MKDEPENDSOLVER=YES
+PROJECTPCH4DLL=TRUE
+
+
diff --git a/sw/inc/swprtopt.hxx b/sw/inc/swprtopt.hxx
new file mode 100644
index 000000000000..7128fd1eed97
--- /dev/null
+++ b/sw/inc/swprtopt.hxx
@@ -0,0 +1,131 @@
+/*************************************************************************
+ *
+ * $RCSfile: swprtopt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWPRTOPT_HXX
+#define _SWPRTOPT_HXX
+
+#ifndef _SV_MULTISEL_HXX //autogen
+#include <tools/multisel.hxx>
+#endif
+
+#define POSTITS_NONE 0
+#define POSTITS_ONLY 1
+#define POSTITS_ENDDOC 2
+#define POSTITS_ENDPAGE 3
+
+class SwPrtOptions
+{
+ USHORT nJobNo;
+ String sJobName;
+
+public:
+ SwPrtOptions( const String& rJobName ) : aOffset( Point(0,0) ),
+ nMergeCnt( 0 ), nMergeAct( 0 ), sJobName( rJobName ),
+ nJobNo( 1 )
+ {}
+
+ const String& MakeNextJobName(); // steht in vprint.cxx
+ const String& GetJobName() const { return sJobName; }
+
+#if defined(TCPP)
+ // seit neuestem (SV 223) kann der keinen mehr generieren
+ inline SwPrtOptions(const SwPrtOptions& rNew) {*this = rNew;}
+#endif
+
+ MultiSelection aMulti;
+ Point aOffset;
+ ULONG nMergeCnt; // Anzahl der Serienbriefe
+ ULONG nMergeAct; // Aktueller Serienbriefnr.
+ USHORT nCopyCount;
+ USHORT nPrintPostIts;
+ BOOL bPrintGraph, //Grafiken/OLE Drucken
+ bPrintTable, //Tabellen Drucken
+ bPrintDraw, //Zeichenobjekte Drucken
+ bPrintControl, //Controls Drucken
+ bPrintLeftPage,
+ bPrintRightPage,
+ bPrintReverse,
+ bPaperFromSetup,
+ bCollate,
+ bPrintSelection, // Markierung drucken
+ bPrintPageBackground,
+ bPrintBlackFont,
+ bSinglePrtJobs,
+ bJobStartet;
+};
+
+
+#endif //_SWPRTOPT_HXX
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sw/inc/swrect.hxx b/sw/inc/swrect.hxx
new file mode 100644
index 000000000000..1abad52ea72f
--- /dev/null
+++ b/sw/inc/swrect.hxx
@@ -0,0 +1,370 @@
+/*************************************************************************
+ *
+ * $RCSfile: swrect.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWRECT_HXX
+#define _SWRECT_HXX
+
+#include "errhdl.hxx"
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+class SvStream;
+
+
+class SwRect
+{
+ long nX;
+ long nY;
+ long nWidth;
+ long nHeight;
+
+public:
+ inline SwRect();
+ inline SwRect( const SwRect &rRect );
+ inline SwRect( const Point& rLT, const Size& rSize );
+ inline SwRect( const Point& rLT, const Point& rRB );
+ inline SwRect( long X, long Y, long Width, long Height );
+
+ //SV-SS z.B. SwRect( pWin->GetClipRect() );
+ SwRect( const Rectangle &rRect );
+
+ //Set-Methoden
+ inline void Chg( const Point& rNP, const Size &rNS );
+ inline void Pos( const Point& rNew );
+ inline void Pos( const long nNewX, const long nNewY );
+ inline void SSize( const Size& rNew );
+ inline void SSize( const long nHeight, const long nWidth );
+ inline void Width( long nNew );
+ inline void Height( long nNew );
+ inline void Left( const long nLeft );
+ inline void Right( const long nRight );
+ inline void Top( const long nTop );
+ inline void Bottom( const long nBottom );
+
+ //Get-Methoden
+ inline const Point &Pos() const;
+ inline const Size &SSize() const;
+ inline long Width() const;
+ inline long Height() const;
+ inline long Left() const;
+ inline long Right() const;
+ inline long Top() const;
+ inline long Bottom() const;
+
+ //Damit Layoutseitig per Memberpointer auf die Member von Pos und SSize
+ //zugegriffen werden kann.
+ inline Point &Pos();
+ inline Size &SSize();
+
+ Point Center() const;
+
+ void Justify();
+
+ SwRect &Union( const SwRect& rRect );
+ SwRect &Intersection( const SwRect& rRect );
+ //Wie Intersection nur wird davon ausgegangen, dass die Rects ueberlappen!
+ SwRect &_Intersection( const SwRect &rRect );
+ inline SwRect GetUnion( const SwRect& rRect ) const;
+ inline SwRect GetIntersection( const SwRect& rRect ) const;
+
+ BOOL IsInside( const Point& rPOINT ) const;
+ BOOL IsNear(const Point& rPoint, long nTolerance ) const;
+ BOOL IsInside( const SwRect& rRect ) const;
+ BOOL IsOver( const SwRect& rRect ) const;
+ inline BOOL HasArea() const;
+ inline BOOL IsEmpty() const;
+ inline void Clear();
+
+ inline SwRect &operator = ( const SwRect &rRect );
+
+ inline BOOL operator == ( const SwRect& rRect ) const;
+ inline BOOL operator != ( const SwRect& rRect ) const;
+
+ inline SwRect &operator+=( const Point &rPt );
+ inline SwRect &operator-=( const Point &rPt );
+
+ inline SwRect &operator+=( const Size &rSz );
+ inline SwRect &operator-=( const Size &rSz );
+
+ //SV-SS z.B. pWin->DrawRect( aSwRect.SVRect() );
+ inline Rectangle SVRect() const;
+
+ //Zortech wuerde hier fehlerhaften Code erzeugen.
+// inline operator SRectangle() const;
+// inline operator Rectangle() const { return Rectangle( aPos, aSize ); }
+
+ // Ausgabeoperator fuer die Debugging-Gemeinde
+ friend SvStream &operator<<( SvStream &rStream, const SwRect &rRect );
+};
+
+// Implementation in in swrect.cxx
+extern SvStream &operator<<( SvStream &rStream, const SwRect &rRect );
+
+
+
+//---------------------------------- Set-Methoden
+inline void SwRect::Chg( const Point& rNP, const Size &rNS )
+{
+ nX = rNP.X(); nY = rNP.Y();
+ nWidth = rNS.Width(); nHeight = rNS.Height();
+}
+inline void SwRect::Pos( const Point& rNew )
+{
+ nX = rNew.X(); nY = rNew.Y();
+}
+inline void SwRect::Pos( const long nNewX, const long nNewY )
+{
+ nX = nNewX; nY = nNewY;
+}
+inline void SwRect::SSize( const Size& rNew )
+{
+ nWidth = rNew.Width(); nHeight = rNew.Height();
+}
+inline void SwRect::SSize( const long nNewHeight, const long nNewWidth )
+{
+ nWidth = nNewWidth; nHeight = nNewHeight;
+}
+inline void SwRect::Width( long nNew )
+{
+ nWidth = nNew;
+}
+inline void SwRect::Height( long nNew )
+{
+ nHeight = nNew;
+}
+inline void SwRect::Left( const long nLeft )
+{
+ nWidth += nX - nLeft;
+ nX = nLeft;
+}
+inline void SwRect::Right( const long nRight )
+{
+ nWidth = nRight - nX + 1;
+}
+inline void SwRect::Top( const long nTop )
+{
+ nHeight += nY - nTop;
+ nY = nTop;
+}
+inline void SwRect::Bottom( const long nBottom )
+{
+ nHeight = nBottom - nY + 1;
+}
+
+//----------------------------------- Get-Methoden
+inline const Point &SwRect::Pos() const
+{
+ return *(Point*)(&nX);
+}
+inline Point &SwRect::Pos()
+{
+ return *(Point*)(&nX);
+}
+inline const Size &SwRect::SSize() const
+{
+ return *(Size*)(&nWidth);
+}
+inline Size &SwRect::SSize()
+{
+ return *(Size*)(&nWidth);
+}
+inline long SwRect::Width() const
+{
+ return nWidth;
+}
+inline long SwRect::Height() const
+{
+ return nHeight;
+}
+inline long SwRect::Left() const
+{
+ return nX;
+}
+inline long SwRect::Right() const
+{
+ return nWidth ? nX + nWidth - 1 : nX;
+}
+inline long SwRect::Top() const
+{
+ return nY;
+}
+inline long SwRect::Bottom() const
+{
+ return nHeight ? nY + nHeight - 1 : nY;
+}
+
+//----------------------------------- operatoren
+inline SwRect &SwRect::operator = ( const SwRect &rRect )
+{
+ nX = rRect.Left();
+ nY = rRect.Top();
+ nWidth = rRect.Width();
+ nHeight = rRect.Height();
+ return *this;
+}
+inline BOOL SwRect::operator == ( const SwRect& rRect ) const
+{
+ return (nX == rRect.Left() &&
+ nY == rRect.Top() &&
+ nWidth == rRect.Width() &&
+ nHeight == rRect.Height());
+}
+inline BOOL SwRect::operator != ( const SwRect& rRect ) const
+{
+ return (nX != rRect.Left() ||
+ nY != rRect.Top() ||
+ nWidth != rRect.Width() ||
+ nHeight != rRect.Height());
+}
+
+inline SwRect &SwRect::operator+=( const Point &rPt )
+{
+ nX += rPt.X(); nY += rPt.Y();
+ return *this;
+}
+inline SwRect &SwRect::operator-=( const Point &rPt )
+{
+ nX -= rPt.X(); nY -= rPt.Y();
+ return *this;
+}
+
+inline SwRect &SwRect::operator+=( const Size &rSz )
+{
+ nWidth += rSz.Width(); nHeight += rSz.Height();
+ return *this;
+}
+inline SwRect &SwRect::operator-=( const Size &rSz )
+{
+ nWidth -= rSz.Width(); nHeight -= rSz.Height();
+ return *this;
+}
+
+
+//--------------------------- Sonstiges
+inline Rectangle SwRect::SVRect() const
+{
+ ASSERT( nWidth && nHeight, "SVRect() ohne Widht oder Height" );
+ return Rectangle( nX, nY,
+ nX + nWidth - 1, //Right()
+ nY + nHeight - 1 ); //Bottom()
+}
+
+inline SwRect SwRect::GetUnion( const SwRect& rRect ) const
+{
+ return SwRect( *this ).Union( rRect );
+}
+inline SwRect SwRect::GetIntersection( const SwRect& rRect ) const
+{
+ return SwRect( *this ).Intersection( rRect );
+}
+
+inline BOOL SwRect::HasArea() const
+{
+ return nHeight && nWidth;
+}
+inline BOOL SwRect::IsEmpty() const
+{
+ return !(nHeight && nWidth);
+}
+inline void SwRect::Clear()
+{
+ nX = nY = nWidth = nHeight = 0;
+}
+
+//-------------------------- CToren
+inline SwRect::SwRect() :
+ nX( 0 ),
+ nY( 0 ),
+ nWidth ( 0 ),
+ nHeight( 0 )
+{
+}
+inline SwRect::SwRect( const SwRect &rRect ) :
+ nX( rRect.Left() ),
+ nY( rRect.Top() ),
+ nWidth ( rRect.Width() ),
+ nHeight( rRect.Height() )
+{
+}
+inline SwRect::SwRect( const Point& rLT, const Size& rSize ) :
+ nX( rLT.X() ),
+ nY( rLT.Y() ),
+ nWidth ( rSize.Width() ),
+ nHeight( rSize.Height())
+{
+}
+inline SwRect::SwRect( const Point& rLT, const Point& rRB ) :
+ nX( rLT.X() ),
+ nY( rLT.Y() ),
+ nWidth ( rRB.X() - rLT.X() + 1 ),
+ nHeight( rRB.Y() - rLT.Y() + 1 )
+{
+}
+inline SwRect::SwRect( long X, long Y, long Width, long Height ) :
+ nX( X ),
+ nY( Y ),
+ nWidth ( Width ),
+ nHeight( Height )
+{
+}
+
+
+#endif //_SWRECT_HXX
diff --git a/sw/inc/swregion.hxx b/sw/inc/swregion.hxx
new file mode 100644
index 000000000000..ac61ff811e35
--- /dev/null
+++ b/sw/inc/swregion.hxx
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * $RCSfile: swregion.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWREGION_HXX
+#define _SWREGION_HXX
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#include "swrect.hxx"
+
+SV_DECL_VARARR( SwRects, SwRect, 20, 8 );
+
+class SwRegionRects : public SwRects
+{
+ SwRect aOrigin; // die Kopie des StartRects
+
+ inline void InsertRect( const SwRect &rRect, const USHORT nPos, FASTBOOL &rDel);
+
+public:
+ SwRegionRects( const SwRect& rStartRect, USHORT nInit = 20,
+ USHORT nGrow = 8 );
+ // Zum Ausstanzen aus aOrigin.
+ void operator-=( const SwRect& rRect );
+
+ // Aus Loechern werden Flaechen, aus Flaechen werden Loecher.
+ void Invert();
+ // Benachbarte Rechtecke zusammenfassen.
+ void Compress( BOOL bFuzzy = TRUE );
+
+ inline const SwRect &GetOrigin() const { return aOrigin; }
+ inline void ChangeOrigin( const SwRect &rRect ) { aOrigin = rRect; }
+};
+
+#endif //_SWREGION_HXX
diff --git a/sw/inc/swserv.hxx b/sw/inc/swserv.hxx
new file mode 100644
index 000000000000..5e5a51171a18
--- /dev/null
+++ b/sw/inc/swserv.hxx
@@ -0,0 +1,129 @@
+/*************************************************************************
+ *
+ * $RCSfile: swserv.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWSERV_HXX
+#define _SWSERV_HXX
+
+#ifndef _PSEUDO_HXX //autogen
+#include <so3/pseudo.hxx>
+#endif
+
+class SwBookmark;
+class SwSectionNode;
+class SwBaseLink;
+class SwTableNode;
+struct SwPosition;
+class SwPaM;
+
+class SwServerObject : public SvPseudoObject
+{
+protected:
+ enum ServerModes { BOOKMARK_SERVER, TABLE_SERVER, SECTION_SERVER, NONE_SERVER } eType;
+ union {
+ SwBookmark* pBkmk;
+ SwTableNode* pTblNd;
+ SwSectionNode* pSectNd;
+ } CNTNT_TYPE;
+
+ SwServerObject();
+
+public:
+ SwServerObject( SwBookmark& rBookmark )
+ : eType( BOOKMARK_SERVER )
+ {
+ CNTNT_TYPE.pBkmk = &rBookmark;
+ }
+ SwServerObject( SwTableNode& rTableNd )
+ : eType( TABLE_SERVER )
+ {
+ CNTNT_TYPE.pTblNd = &rTableNd;
+ }
+ SwServerObject( SwSectionNode& rSectNd )
+ : eType( SECTION_SERVER )
+ {
+ CNTNT_TYPE.pSectNd = &rSectNd;
+ }
+ virtual ~SwServerObject();
+
+ virtual BOOL GetData( SvData* );
+ virtual BOOL ChangeData( SvData& );
+
+ ULONG GetSelectorCount() const
+ { return SvPseudoObject::GetSelectorCount(); }
+
+ virtual void SendDataChanged( const SwPosition& rPos );
+ virtual void SendDataChanged( const SwPaM& rRange );
+
+ BOOL IsLinkInServer( const SwBaseLink* ) const;
+
+ void SetNoServer()
+ { CNTNT_TYPE.pBkmk = 0, eType = NONE_SERVER; }
+};
+
+#ifndef SW_DECL_SWSERVEROBJECT_DEFINED
+#define SW_DECL_SWSERVEROBJECT_DEFINED
+class SvPseudoObject;
+SO2_DECL_REF( SwServerObject )
+#endif
+
+
+#endif // _SWSERV_HXX
+
diff --git a/sw/inc/swstyle.h b/sw/inc/swstyle.h
new file mode 100644
index 000000000000..cc80cf1af63f
--- /dev/null
+++ b/sw/inc/swstyle.h
@@ -0,0 +1,75 @@
+/*************************************************************************
+ *
+ * $RCSfile: swstyle.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWSTYLE_H
+#define _SWSTYLE_H
+
+
+#define SWSTYLEBIT_TEXT 0x0001
+#define SWSTYLEBIT_CHAPTER 0x0002
+#define SWSTYLEBIT_LIST 0x0004
+#define SWSTYLEBIT_IDX 0x0008
+#define SWSTYLEBIT_EXTRA 0x0010
+#define SWSTYLEBIT_HTML 0x0020
+#define SWSTYLEBIT_CONDCOLL 0x0040
+
+
+#endif
+
diff --git a/sw/inc/swtable.hxx b/sw/inc/swtable.hxx
new file mode 100644
index 000000000000..23ea03e1aa93
--- /dev/null
+++ b/sw/inc/swtable.hxx
@@ -0,0 +1,393 @@
+/*************************************************************************
+ *
+ * $RCSfile: swtable.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWTABLE_HXX
+#define _SWTABLE_HXX
+
+#ifndef _SVMEMPOOL_HXX //autogen
+#include <tools/mempool.hxx>
+#endif
+#ifndef _SO2REF_HXX //autogen
+#include <so3/so2ref.hxx>
+#endif
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+#ifndef _TBLENUM_HXX
+#include <tblenum.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _CALBCK_HXX
+#include <calbck.hxx>
+#endif
+#ifndef _SWRECT_HXX
+#include <swrect.hxx>
+#endif
+
+#ifdef PRODUCT
+#ifndef _NODE_HXX
+#include <node.hxx> // fuer StartNode->GetMyIndex
+#endif
+#else
+class SwStartNode;
+#endif
+
+class Color;
+class SwFrmFmt;
+class SwTableFmt;
+class SwTableLineFmt;
+class SwTableBoxFmt;
+class SwHTMLTableLayout;
+class SwTableLine;
+class SwTableBox;
+class SwTableNode;
+class SwTabCols;
+class SwDoc;
+class SwSelBoxes;
+class SwTblCalcPara;
+class SwChartLines;
+struct SwPosition;
+class SwNodeIndex;
+class SfxPoolItem;
+class SchMemChart;
+class SwUndoTblMerge;
+class SwUndo;
+class SwTableBox_Impl;
+class SwUndoTblCpyTbl;
+
+#ifndef SW_DECL_SWSERVEROBJECT_DEFINED
+#define SW_DECL_SWSERVEROBJECT_DEFINED
+class SvPseudoObject;
+SO2_DECL_REF( SwServerObject )
+#endif
+
+SV_DECL_PTRARR_DEL(SwTableLines, SwTableLine*, 10, 20);
+SV_DECL_PTRARR_DEL(SwTableBoxes, SwTableBox*, 25, 50);
+
+// speicher die Inhaltstragenden Box-Pointer zusaetzlich in einem
+// sortierten Array (fuers rechnen in der Tabelle)
+typedef SwTableBox* SwTableBoxPtr;
+SV_DECL_PTRARR_SORT( SwTableSortBoxes, SwTableBoxPtr, 25, 50 );
+
+class SwTable: public SwClient //Client vom FrmFmt
+{
+protected:
+ SwTableLines aLines;
+ SwTableSortBoxes aSortCntBoxes;
+ SwServerObjectRef refObj; // falls DataServer -> Pointer gesetzt
+
+ SwHTMLTableLayout *pHTMLLayout;
+
+//SOLL das fuer jede Tabelle einstellbar sein?
+ TblChgMode eTblChgMode;
+
+ USHORT nGrfsThatResize; // Anzahl der Grfs, die beim HTML-Import
+ // noch ein Resize der Tbl. anstossen
+
+ BOOL bModifyLocked :1;
+ BOOL bHeadlineRepeat:1;
+
+ BOOL IsModifyLocked(){ return bModifyLocked;}
+
+public:
+ TYPEINFO();
+
+ SwTable( SwTableFmt* );
+ SwTable( const SwTable& rTable ); // kein Copy der Lines !!
+ ~SwTable();
+
+ SwHTMLTableLayout *GetHTMLTableLayout() { return pHTMLLayout; }
+ const SwHTMLTableLayout *GetHTMLTableLayout() const { return pHTMLLayout; }
+ void SetHTMLTableLayout( SwHTMLTableLayout *p ); //Eigentumsuebergang!
+
+ USHORT IncGrfsThatResize() { return ++nGrfsThatResize; }
+ USHORT DecGrfsThatResize() { return nGrfsThatResize ? --nGrfsThatResize : 0; }
+
+ void LockModify() { bModifyLocked = TRUE; } //Muessen _immer_ paarig
+ void UnlockModify() { bModifyLocked = FALSE;} //benutzt werden!
+
+ BOOL IsHeadlineRepeat() const { return bHeadlineRepeat; }
+ void SetHeadlineRepeat( BOOL bSet ) { bHeadlineRepeat = bSet; }
+
+ SwTableLines &GetTabLines() { return aLines; }
+ const SwTableLines &GetTabLines() const { return aLines; }
+
+ SwFrmFmt* GetFrmFmt() { return (SwFrmFmt*)pRegisteredIn; }
+ SwFrmFmt* GetFrmFmt() const { return (SwFrmFmt*)pRegisteredIn; }
+
+ virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew );
+
+ void GetTabCols( SwTabCols &rToFill, const SwTableBox *pStart,
+ FASTBOOL bHidden = FALSE ) const;
+ void SetTabCols( const SwTabCols &rNew, SwTabCols &rOld,
+ const SwTableBox *pStart, BOOL bCurRowOnly );
+
+ BOOL InsertCol( SwDoc*, const SwSelBoxes& rBoxes,
+ USHORT nCnt = 1, BOOL bBehind = TRUE );
+ BOOL InsertRow( SwDoc*, const SwSelBoxes& rBoxes,
+ USHORT nCnt = 1, BOOL bBehind = TRUE );
+ BOOL AppendRow( SwDoc* pDoc, USHORT nCnt = 1 );
+ BOOL DeleteSel( SwDoc*, const SwSelBoxes& rBoxes, SwUndo* pUndo = 0,
+ const BOOL bDelMakeFrms = TRUE,
+ const BOOL bCorrBorder = TRUE );
+ BOOL SplitRow( SwDoc* pDoc, const SwSelBoxes& rBoxes, USHORT nCnt=1 );
+ BOOL SplitCol( SwDoc* pDoc, const SwSelBoxes& rBoxes, USHORT nCnt=1 );
+ BOOL Merge( SwDoc* pDoc, const SwSelBoxes& rBoxes,
+ SwTableBox* pMergeBox, SwUndoTblMerge* = 0 );
+
+ SwTableSortBoxes& GetTabSortBoxes() { return aSortCntBoxes; }
+ const SwTableSortBoxes& GetTabSortBoxes() const { return aSortCntBoxes; }
+
+ // gebe den Zellnamen zu der angebenen Row/Col zurueck. Das ist
+ // nur fuer ausgeglichene Tabellen interessant, weil diese keine
+ // "Sub"Boxen kennen. Es wird z.B. aus (0,0) ein "A1".
+ static String GetBoxName( USHORT nRow, USHORT nCol );
+ // lese die 1. Nummer und loesche sie aus dem String
+ // (wird von GetTblBox und SwTblFld benutzt)
+ static USHORT _GetBoxNum( String& rStr, BOOL bFirst = FALSE );
+ // suche die Inhaltstragende Box mit dem Namen
+ const SwTableBox* GetTblBox( const String& rName ) const;
+ // kopiere die selektierten Boxen in ein anderes Dokument.
+ BOOL MakeCopy( SwDoc*, const SwPosition&, const SwSelBoxes&,
+ BOOL bCpyNds = TRUE, BOOL bCpyName = FALSE ) const;
+ // kopiere die Tabelle in diese. (die Logik steht im TBLRWCL.CXX)
+ BOOL InsTable( const SwTable& rCpyTbl, const SwNodeIndex&,
+ SwUndoTblCpyTbl* pUndo = 0 );
+ BOOL InsTable( const SwTable& rCpyTbl, const SwSelBoxes&,
+ SwUndoTblCpyTbl* pUndo = 0 );
+ // kopiere die Headline (mit Inhalt!) der Tabelle in eine andere
+ BOOL CopyHeadlineIntoTable( SwTableNode& rTblNd );
+
+ // erfrage die Box, dessen Start-Index auf nBoxStt steht
+ SwTableBox* GetTblBox( ULONG nSttIdx );
+ const SwTableBox* GetTblBox( ULONG nSttIdx ) const
+ { return ((SwTable*)this)->GetTblBox( nSttIdx ); }
+
+ // returnt TRUE wenn sich in der Tabelle Verschachtelungen befinden
+ BOOL IsTblComplex() const;
+
+ //returnt TRUE wenn die Tabelle oder Selektion ausgeglichen ist
+ BOOL IsTblComplexForChart( const String& rSel,
+ SwChartLines* pGetCLines = 0 ) const;
+
+ // suche alle Inhaltstragenden-Boxen der Grundline in der diese Box
+ // steht. rBoxes auch als Return-Wert, um es gleich weiter zu benutzen
+ //JP 31.01.97: bToTop = TRUE -> hoch bis zur Grundline,
+ // FALSE-> sonst nur die Line der Box
+ SwSelBoxes& SelLineFromBox( const SwTableBox* pBox,
+ SwSelBoxes& rBoxes, BOOL bToTop = TRUE ) const;
+ // erfrage vom Client Informationen
+ virtual BOOL GetInfo( SfxPoolItem& ) const;
+
+ // suche im Format nach der angemeldeten Tabelle
+ static SwTable* FindTable( SwFrmFmt* pFmt );
+
+ // Struktur ein wenig aufraeumen
+ void GCLines();
+ // BorderLine ein wenig aufraeumen
+ void GCBorderLines();
+
+ SwTableNode* GetTableNode() const;
+
+ // Daten Server-Methoden
+ void SetRefObject( SvPseudoObject* );
+ const SwServerObject* GetObject() const { return &refObj; }
+ SwServerObject* GetObject() { return &refObj; }
+ BOOL IsServer() const { return refObj.Is(); }
+
+ //Daten fuer das Chart fuellen.
+ SchMemChart *UpdateData( SchMemChart *pData,
+ const String* pSelection = 0 ) const;
+
+ TblChgMode GetTblChgMode() const { return eTblChgMode; }
+ void SetTblChgMode( TblChgMode eMode ) { eTblChgMode = eMode; }
+
+ BOOL SetColWidth( SwTableBox& rAktBox, USHORT eType,
+ SwTwips nAbsDiff, SwTwips nRelDiff, SwUndo** ppUndo );
+ BOOL SetRowHeight( SwTableBox& rAktBox, USHORT eType,
+ SwTwips nAbsDiff, SwTwips nRelDiff, SwUndo** ppUndo );
+};
+
+class SwTableLine: public SwClient // Client vom FrmFmt
+{
+ SwTableBoxes aBoxes;
+ SwTableBox *pUpper;
+
+public:
+ TYPEINFO();
+
+ SwTableLine( SwTableLineFmt*, USHORT nBoxes, SwTableBox *pUp );
+ ~SwTableLine();
+
+ SwTableBoxes &GetTabBoxes() { return aBoxes; }
+ const SwTableBoxes &GetTabBoxes() const { return aBoxes; }
+
+ SwTableBox *GetUpper() { return pUpper; }
+ const SwTableBox *GetUpper() const { return pUpper; }
+ void SetUpper( SwTableBox *pNew ) { pUpper = pNew; }
+
+
+ SwFrmFmt* GetFrmFmt() { return (SwFrmFmt*)pRegisteredIn; }
+ SwFrmFmt* GetFrmFmt() const { return (SwFrmFmt*)pRegisteredIn; }
+
+ //Macht ein eingenes FrmFmt wenn noch mehr Lines von ihm abhaengen.
+ SwFrmFmt* ClaimFrmFmt();
+ void ChgFrmFmt( SwTableLineFmt* pNewFmt );
+
+ // suche nach der naechsten/vorherigen Box mit Inhalt
+ SwTableBox* FindNextBox( const SwTable&, const SwTableBox* =0,
+ BOOL bOvrTblLns=TRUE ) const;
+ SwTableBox* FindPreviousBox( const SwTable&, const SwTableBox* =0,
+ BOOL bOvrTblLns=TRUE ) const;
+
+ SwRect GetLineRect( const BOOL bPrtArea = FALSE ) const;
+};
+
+class SwTableBox: public SwClient //Client vom FrmFmt
+{
+ friend class SwNodes; // um den Index umzusetzen !
+ friend void DelBoxNode(SwTableSortBoxes&); // um den StartNode* zu loeschen !
+ friend class SwXMLTableContext;
+
+ //nicht (mehr) implementiert.
+ SwTableBox( const SwTableBox & );
+
+ SwTableLines aLines;
+ const SwStartNode * pSttNd;
+ SwTableLine *pUpper;
+ SwTableBox_Impl* pImpl;
+
+ SwTableBox &operator=( const SwTableBox &); //gibts nicht.
+ // falls das Format schon Formeln/Values enthaelt, muss ein neues
+ // fuer die neue Box erzeugt werden.
+ SwTableBoxFmt* CheckBoxFmt( SwTableBoxFmt* );
+
+public:
+ TYPEINFO();
+
+ SwTableBox( SwTableBoxFmt*, USHORT nLines, SwTableLine *pUp = 0 );
+ SwTableBox( SwTableBoxFmt*, const SwStartNode&, SwTableLine *pUp = 0 );
+ SwTableBox( SwTableBoxFmt*, const SwNodeIndex&, SwTableLine *pUp = 0 );
+ ~SwTableBox();
+
+ SwTableLines &GetTabLines() { return aLines; }
+ const SwTableLines &GetTabLines() const { return aLines; }
+
+ SwTableLine *GetUpper() { return pUpper; }
+ const SwTableLine *GetUpper() const { return pUpper; }
+ void SetUpper( SwTableLine *pNew ) { pUpper = pNew; }
+
+ SwFrmFmt* GetFrmFmt() { return (SwFrmFmt*)pRegisteredIn; }
+ SwFrmFmt* GetFrmFmt() const { return (SwFrmFmt*)pRegisteredIn; }
+
+ //Macht ein eingenes FrmFmt wenn noch mehr Boxen von ihm abhaengen.
+ SwFrmFmt* ClaimFrmFmt();
+ void ChgFrmFmt( SwTableBoxFmt *pNewFmt );
+
+ const SwStartNode *GetSttNd() const { return pSttNd; }
+ ULONG GetSttIdx() const
+#ifdef PRODUCT
+ { return pSttNd ? pSttNd->GetIndex() : 0; }
+#else
+ ;
+#endif
+
+ // suche nach der naechsten/vorherigen Box mit Inhalt
+ SwTableBox* FindNextBox( const SwTable&, const SwTableBox* =0,
+ BOOL bOvrTblLns=TRUE ) const;
+ SwTableBox* FindPreviousBox( const SwTable&, const SwTableBox* =0,
+ BOOL bOvrTblLns=TRUE ) const;
+ // gebe den Namen dieser Box zurueck. Dieser wird dynamisch bestimmt
+ // und ergibt sich aus der Position in den Lines/Boxen/Tabelle
+ String GetName() const;
+ // gebe den "Wert" der Box zurueck (fuers rechnen in der Tabelle)
+ double GetValue( SwTblCalcPara& rPara ) const;
+
+ BOOL IsInHeadline( const SwTable* pTbl = 0 ) const;
+
+ // enthaelt die Box Inhalt, der als Nummer formatiert werden kann?
+ BOOL HasNumCntnt( double& rNum, ULONG& rFmtIndex,
+ BOOL& rIsEmptyTxtNd ) const;
+ ULONG IsValidNumTxtNd( BOOL bCheckAttr = TRUE ) const;
+ // teste ob der BoxInhalt mit der Nummer uebereinstimmt, wenn eine
+ // Tabellenformel gesetzt ist. (fuers Redo des Change vom NumFormat!)
+ BOOL IsNumberChanged() const;
+
+ // ist das eine FormelBox oder eine Box mit numerischen Inhalt (AutoSum)
+ // Was es ist, besagt der ReturnWert - die WhichId des Attributes
+ // Leere Boxen haben den ReturnWert USHRT_MAX !!
+ USHORT IsFormulaOrValueBox() const;
+
+ // fuers Laden - tauscht bei Value Zellen den Inhalt aus, falls sie
+ // fuer die Sprache System formatiert sind.
+ void ChgByLanguageSystem();
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwTableBox)
+
+ // zugriff auf interne Daten - z.Z. benutzt fuer den NumFormatter
+ inline const Color* GetSaveUserColor() const;
+ inline const Color* GetSaveNumFmtColor() const;
+ inline void SetSaveUserColor(const Color* p );
+ inline void SetSaveNumFmtColor( const Color* p );
+};
+
+#endif //_SWTABLE_HXX
diff --git a/sw/inc/swtblfmt.hxx b/sw/inc/swtblfmt.hxx
new file mode 100644
index 000000000000..559db74d7865
--- /dev/null
+++ b/sw/inc/swtblfmt.hxx
@@ -0,0 +1,135 @@
+/*************************************************************************
+ *
+ * $RCSfile: swtblfmt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWTBLFMT_HXX
+#define _SWTBLFMT_HXX
+
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+
+class SwDoc;
+
+class SwTableFmt : public SwFrmFmt
+{
+ friend class SwDoc;
+
+protected:
+ SwTableFmt( SwAttrPool& rPool, const sal_Char* pFmtNm,
+ SwFrmFmt *pDrvdFrm )
+ : SwFrmFmt( rPool, pFmtNm, pDrvdFrm, RES_FRMFMT, aTableSetRange )
+ {}
+ SwTableFmt( SwAttrPool& rPool, const String &rFmtNm,
+ SwFrmFmt *pDrvdFrm )
+ : SwFrmFmt( rPool, rFmtNm, pDrvdFrm, RES_FRMFMT, aTableSetRange )
+ {}
+
+
+public:
+ TYPEINFO(); //Bereits in Basisklasse Client drin.
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwTableFmt)
+};
+
+class SwTableLineFmt : public SwFrmFmt
+{
+ friend class SwDoc;
+
+protected:
+ SwTableLineFmt( SwAttrPool& rPool, const sal_Char* pFmtNm,
+ SwFrmFmt *pDrvdFrm )
+ : SwFrmFmt( rPool, pFmtNm, pDrvdFrm, RES_FRMFMT, aTableLineSetRange )
+ {}
+ SwTableLineFmt( SwAttrPool& rPool, const String &rFmtNm,
+ SwFrmFmt *pDrvdFrm )
+ : SwFrmFmt( rPool, rFmtNm, pDrvdFrm, RES_FRMFMT, aTableLineSetRange )
+ {}
+
+public:
+ TYPEINFO(); //Bereits in Basisklasse Client drin.
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwTableLineFmt)
+};
+
+class SwTableBoxFmt : public SwFrmFmt
+{
+ friend class SwDoc;
+
+protected:
+ SwTableBoxFmt( SwAttrPool& rPool, const sal_Char* pFmtNm,
+ SwFrmFmt *pDrvdFrm )
+ : SwFrmFmt( rPool, pFmtNm, pDrvdFrm, RES_FRMFMT, aTableBoxSetRange )
+ {}
+ SwTableBoxFmt( SwAttrPool& rPool, const String &rFmtNm,
+ SwFrmFmt *pDrvdFrm )
+ : SwFrmFmt( rPool, rFmtNm, pDrvdFrm, RES_FRMFMT, aTableBoxSetRange )
+ {}
+
+public:
+ TYPEINFO(); //Bereits in Basisklasse Client drin.
+
+ // zum Erkennen von Veraenderungen (haupts. TableBoxAttribute)
+ virtual void Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue );
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwTableBoxFmt)
+};
+
+
+#endif
diff --git a/sw/inc/swtypes.hxx b/sw/inc/swtypes.hxx
new file mode 100644
index 000000000000..7feecac77e08
--- /dev/null
+++ b/sw/inc/swtypes.hxx
@@ -0,0 +1,298 @@
+/*************************************************************************
+ *
+ * $RCSfile: swtypes.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWTYPES_HXX
+#define _SWTYPES_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#include <limits.h> //fuer LONG_MAX
+
+#ifdef PM20
+#include <stdlib.h>
+#endif
+#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
+#include <com/sun/star/uno/Reference.h>
+#endif
+#ifndef _HORIORNT_HXX
+#include <horiornt.hxx>
+#endif
+
+// wenn das hier geaendert wird, dann auch im globals.hrc aendern!!!
+//#define SW_FILEFORMAT_40 SOFFICE_FILEFORMAT_40
+
+namespace com{namespace sun{namespace star{
+ namespace linguistic{
+ class XDictionaryList;
+ class XSpellChecker1;
+ class XHyphenator;
+ class XThesaurus;
+ }
+ namespace beans{
+ class XPropertySet;
+ }
+}}}
+class Size;
+class MapMode;
+class ResMgr;
+class UniString;
+class ByteString;
+class SwPathFinder;
+class Graphic;
+class OutputDevice;
+class CharClass;
+
+typedef long SwTwips;
+#define INVALID_TWIPS LONG_MAX
+#define TWIPS_MAX (LONG_MAX - 1)
+
+#define MM50 283 // 1/2 cm in TWIPS
+
+#define MINFLY 23 //Minimalgroesse fuer FlyFrms
+#define MINLAY 23 //Minimalgroesse anderer Frms
+
+// Default-Spaltenabstand zweier Textspalten entspricht 0.3 cm
+#define DEF_GUTTER_WIDTH (MM50 / 5 * 3)
+
+//Minimale Distance (Abstand zum Text) fuer das BorderAttribut, damit
+//die aligned'en Linien nicht geplaettet werden.
+//28 Twips == 0,4mm
+#define MIN_BORDER_DIST 28
+
+ /* minimaler Dokmentrand */
+const SwTwips lMinBorder = 1134;
+
+//Die Wiesenbreite links neben und ueber dem Dokument.
+//Die halbe Wiesenbreite ist der Abstand zwischen den Seiten.
+#define DOCUMENTBORDER 568L
+
+//initiale UndoActionCount
+#define UNDO_ACTION_COUNT 20
+
+// Konstante Strings
+extern UniString aEmptyStr; // ""
+extern ByteString aEmptyByteStr; // ""
+extern UniString aDotStr; // '.'
+
+extern const sal_Char* __FAR_DATA pDefWordDelim; // alle Worttrenner
+extern const sal_Char* __FAR_DATA pGlosExt; // def. Ext. fuer AutoText in glosdoc.cxx
+
+
+//Zum Einfuegen von Beschriftungen (wie bzw. wo soll eingefuegt werden).
+//Hier weil ein eigenes hxx nicht lohnt und es sonst nirgendwo so recht
+//hinpasst.
+enum SwLabelType
+{
+ LTYPE_TABLE, //Beschriftung einer Tabelle
+ LTYPE_OBJECT, //Beschriftung von Grafik oder OLE
+ LTYPE_FLY, //Beschriftung eines (Text-)Rahmens
+ LTYPE_DRAW //Beschriftung eines Zeichen-Objektes
+};
+
+
+const BYTE OLD_MAXLEVEL = 5;
+const BYTE MAXLEVEL = 10; //Ehemals numrule.hxx
+const BYTE NO_NUM = 200; //Ehemals numrule.hxx
+const BYTE NO_NUMBERING = 201; //Ehemals numrule.hxx
+const BYTE NO_INIT = 202; //Ehemals numrule.hxx
+
+// fuer Absaetze mit NO_NUM aber auf unterschiedlichen Leveln
+// DAMIT entfaellt das NO_NUM !!!!
+const BYTE NO_NUMLEVEL = 0x20; // wird mit den Levels verodert
+
+
+/*
+ * Nette Funktionen als MACRO oder inline
+ */
+
+/* ein KiloByte sind 1024 Byte */
+#define KB 1024
+
+#define SET_CURR_SHELL( shell ) CurrShell aCurr( shell )
+
+// pPathFinder wird von der UI initialisiert. Die Klasse liefert alle
+// benoetigten Pfade.
+extern SwPathFinder *pPathFinder;
+
+// Werte fuer die Einzuege an der Nummerierung und BulletListe
+// (fuer die weiteren Ebenen sind die Werte mit den Ebenen+1 zu
+// multiplizieren; Ebenen 0..4 !!!)
+const USHORT lBullIndent = 567 / 2;
+const short lBullFirstLineOffset = -567 / 2;
+const USHORT lNumIndent = 567 / 2;
+const short lNumFirstLineOffset = -567 / 2;
+
+
+ // Enum um am Doc abzufragen, ob es sich bei dem Namen um einem
+ // aus unserem Pool handelt.
+enum SwGetPoolIdFromName
+{
+ GET_POOLID_TXTCOLL = 0x01,
+ GET_POOLID_CHRFMT = 0x02,
+ GET_POOLID_FRMFMT = 0x04,
+ GET_POOLID_PAGEDESC = 0x08,
+ GET_POOLID_NUMRULE = 0x10
+};
+
+// Anzahl der SystemField-Types vom SwDoc
+#define INIT_FLDTYPES 30
+// Anzahl der vordefinierten Seq-Feldtypen. Es handelt sich dabei
+// immer um die letzen Felder vor INIT_FLDTYPES
+#define INIT_SEQ_FLDTYPES 4
+
+//Die ehemaligen Rendevouz-Ids leben weiter:
+//Es gibt Ids fuer die Anker (SwFmtAnchor) und ein paar weitere die nur fuer
+//Schnittstellen Bedeutung haben (SwDoc).
+enum RndStdIds
+{
+ FLY_AT_CNTNT, //Absatzgebundener Rahmen
+ FLY_IN_CNTNT, //Zeichengebundener Rahmen
+ FLY_PAGE, //Seitengebundener Rahmen
+ FLY_AT_FLY, //Rahmengebundener Rahmen ( LAYER_IMPL )
+ FLY_AUTO_CNTNT, //Automatisch positionierter, absatzgebundener Rahmen
+ //Der Rest wird nur fuer SS benutzt.
+ RND_STD_HEADER,
+ RND_STD_FOOTER,
+ RND_STD_HEADERL,
+ RND_STD_HEADERR,
+ RND_STD_FOOTERL,
+ RND_STD_FOOTERR,
+
+ RND_DRAW_OBJECT // ein Draw-Object !! nur fuer die SwDoc-Schnittstelle!
+};
+
+
+extern ResMgr* pSwResMgr; // steht in swapp0.cxx
+#define SW_RES(i) ResId(i,pSwResMgr)
+#define SW_RESSTR(i) UniString(ResId(i,pSwResMgr))
+
+#if defined( WIN ) || defined( WNT ) || defined( PM2 )
+#define DDE_AVAILABLE
+#endif
+
+// SpellChecker, Hyphenator kommen aus der OFA.
+//
+::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XSpellChecker1 > GetSpellChecker();
+::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XHyphenator > GetHyphenator();
+::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XThesaurus > GetThesaurus();
+::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XDictionaryList > GetDictionaryList();
+::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertySet > GetLinguPropertySet();
+
+// reutns the twip size of this graphic
+Size GetGraphicSizeTwip( const Graphic&, OutputDevice* pOutDev );
+
+
+// Seperator fuer Sprunge im Dokument auf verschiedene Inhalttype
+const sal_Unicode cMarkSeperator = '|';
+extern const sal_Char* __FAR_DATA pMarkToTable; // Strings stehen
+extern const sal_Char* __FAR_DATA pMarkToFrame; // im Init.cxx
+extern const sal_Char* __FAR_DATA pMarkToRegion;
+extern const sal_Char* __FAR_DATA pMarkToOutline;
+extern const sal_Char* __FAR_DATA pMarkToText;
+extern const sal_Char* __FAR_DATA pMarkToGraphic;
+extern const sal_Char* __FAR_DATA pMarkToOLE;
+
+#ifndef DB_DELIM // Ist in OFA definiert!!!
+#define DB_DELIM ((sal_Unicode)0xff) // Datenbank <-> Tabellen-Trenner
+#endif
+
+
+enum SetAttrMode
+{
+ SETATTR_DEFAULT = 0x0000, // default
+ SETATTR_DONTEXPAND = 0x0001, // TextAttribute nicht weiter expand.
+ SETATTR_DONTREPLACE = 0x0002, // kein anderes TextAttrib verdraengen
+
+ SETATTR_NOTXTATRCHR = 0x0004, // bei Attr ohne Ende kein 0xFF einfuegen
+ SETATTR_NOHINTADJUST = 0x0008, // keine Zusammenfassung von Bereichen.
+ SETATTR_NOFORMATATTR = 0x0010, // nicht zum FormatAttribut umwandeln
+ SETATTR_DONTCHGNUMRULE = 0x0020 // nicht die NumRule veraendern
+};
+
+//Umrechnung Twip<-> 1/100 mm fuer UNO
+
+#define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L))
+#define MM100_TO_TWIP(MM100) ((MM100) >= 0 ? (((MM100)*72L+63L)/127L) : (((MM100)*72L-63L)/127L))
+
+#define SW_ISPRINTABLE( c ) ( c >= ' ' && 127 != c )
+
+#ifndef SW_CONSTASCII_DECL
+#define SW_CONSTASCII_DECL( n, s ) n[sizeof(s)]
+#endif
+#ifndef SW_CONSTASCII_DEF
+#define SW_CONSTASCII_DEF( n, s ) n[sizeof(s)] = s
+#endif
+
+
+#define CHAR_HARDBLANK ((sal_Unicode)0x00A0)
+#define CHAR_HARDHYPHEN ((sal_Unicode)0x2011)
+#define CHAR_SOFTHYPHEN ((sal_Unicode)0x00AD)
+
+// returns the APP - CharClass instance - used for all ToUpper/ToLower/...
+CharClass& GetAppCharClass();
+
+
+#endif
diff --git a/sw/inc/swundo.hxx b/sw/inc/swundo.hxx
new file mode 100644
index 000000000000..1ee581ef1eae
--- /dev/null
+++ b/sw/inc/swundo.hxx
@@ -0,0 +1,197 @@
+/*************************************************************************
+ *
+ * $RCSfile: swundo.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWUNDO_HXX
+#define _SWUNDO_HXX
+
+// die Ids fuer StdAktionen
+enum SwUndoStdId
+{
+ UNDO_STD_BEGIN = 1,
+ UNDO_START = UNDO_STD_BEGIN, // 1
+ UNDO_END, // 2
+ REPEAT_START, // alle UndoIds zwischen REPEAT_START und
+ // REPEAT_END sind Repeat-Faehig !!
+ UNDO_DELETE = REPEAT_START, // 3
+ UNDO_INSERT, // 4
+ UNDO_OVERWRITE, // 5
+ UNDO_SPLITNODE, // 6
+ UNDO_INSATTR, // 7
+ UNDO_SETFMTCOLL, // 8
+ UNDO_RESETATTR, // 9
+ UNDO_INSFMTATTR, // 10
+ UNDO_INSDOKUMENT, // 11
+ UNDO_COPY, // 12
+ UNDO_INSTABLE, // 13
+ UNDO_TABLETOTEXT, // 14
+ UNDO_TEXTTOTABLE, // 15
+ UNDO_SORT_TXT, // 16
+ UNDO_INSLAYFMT, // 17
+ UNDO_TABLEHEADLINE, // 18
+ UNDO_INSSECTION, // 19
+ UNDO_OUTLINE_LR, // 20
+ UNDO_OUTLINE_UD, // 21
+ UNDO_INSNUM, // 22
+ UNDO_NUMUPDOWN, // 23
+ UNDO_MOVENUM, // 24
+ UNDO_INSDRAWFMT, // 25
+ UNDO_NUMORNONUM, // 26
+ UNDO_INC_LEFTMARGIN, // 27
+ UNDO_DEC_LEFTMARGIN, // 28
+ UNDO_INSERTLABEL, // 29
+ UNDO_SETNUMRULESTART, // 30
+ UNDO_CHGFTN, // 31
+ UNDO_REDLINE, // 32
+ UNDO_ACCEPT_REDLINE, // 33
+ UNDO_REJECT_REDLINE, // 34
+ UNDO_SPLIT_TABLE, // 35
+ UNDO_DONTEXPAND, // 36
+ UNDO_AUTOCORRECT, // 37
+ UNDO_MERGE_TABLE, // 38
+
+ UNDO_REPEAT_DUMMY_3, // 39
+ UNDO_REPEAT_DUMMY_4, // 40
+ UNDO_REPEAT_DUMMY_5, // 41
+ UNDO_REPEAT_DUMMY_6, // 42
+ UNDO_REPEAT_DUMMY_7, // 43
+ UNDO_REPEAT_DUMMY_8, // 44
+ UNDO_REPEAT_DUMMY_9, // 45
+ REPEAT_END,
+
+ UNDO_MOVE = REPEAT_END, // 46
+ UNDO_INSGLOSSARY, // 47
+ UNDO_DELBOOKMARK, // 48
+ UNDO_INSBOOKMARK, // 49
+ UNDO_SORT_TBL, // 50
+ UNDO_DELLAYFMT, // 51
+ UNDO_AUTOFORMAT, // 52
+ UNDO_REPLACE, // 53
+ UNDO_DELSECTION, // 54
+ UNDO_CHGSECTION, // 55
+ UNDO_CHGSECTIONPASSWD, // 56
+ UNDO_SETDEFTATTR, // 57
+ UNDO_DELNUM, // 58
+ UNDO_DRAWUNDO, // 59
+ UNDO_DRAWGROUP, // 60
+ UNDO_DRAWUNGROUP, // 61
+ UNDO_DRAWDELETE, // 62
+ UNDO_REREAD, // 63
+ UNDO_DELGRF, // 64
+ UNDO_DELOLE, // 65
+ UNDO_TABLE_ATTR, // 66
+ UNDO_TABLE_AUTOFMT, // 67
+ UNDO_TABLE_INSCOL, // 68
+ UNDO_TABLE_INSROW, // 69
+ UNDO_TABLE_DELBOX, // 70
+ UNDO_TABLE_SPLIT, // 71
+ UNDO_TABLE_MERGE, // 72
+ UNDO_TBLNUMFMT, // 73
+ UNDO_INSTOX, // 74
+ UNDO_CLEARTOXRANGE, // 75
+ UNDO_TBLCPYTBL, // 76
+ UNDO_CPYTBL, // 77
+ UNDO_INS_FROM_SHADOWCRSR, // 78
+ UNDO_CHAINE, // 79
+ UNDO_UNCHAIN, // 80
+ UNDO_FTNINFO, // 81
+ UNDO_ENDNOTEINFO, // 82
+ UNDO_COMPAREDOC, // 83
+ UNDO_SETFLYFRMFMT, // 84
+
+ UNDO_DUMMY_1, // 85
+ UNDO_DUMMY_2, // 86
+ UNDO_DUMMY_3, // 87
+ UNDO_DUMMY_4, // 88
+ UNDO_DUMMY_5, // 89
+ UNDO_DUMMY_6, // 90
+ UNDO_DUMMY_7, // 91
+ UNDO_DUMMY_8, // 92
+ UNDO_DUMMY_9, // 93
+ UNDO_STD_END // 94
+};
+
+
+/* MA: 24. May. 97, zur Zeit nicht verwendet.
+#define INIT_UNDOIDS 2
+#define GROW_UNDOIDS 2
+// Das Array der verwendeten Undo-Ids
+SV_DECL_VARARR( SwUndoIds, USHORT, INIT_UNDOIDS, GROW_UNDOIDS )
+*/
+
+// Undo-Ids fuer die UI-Seite
+enum SwUIUndoIds
+{
+ UIUNDO_REPLACE = UNDO_STD_END,
+ UIUNDO_INSERT_PAGE_BREAK,
+ UIUNDO_INSERT_COLUMN_BREAK,
+ UIUNDO_PLAY_MACRO,
+ UIUNDO_INSERT_ENVELOPE,
+ UIUNDO_DRAG_AND_COPY,
+ UIUNDO_DRAG_AND_MOVE,
+ UIUNDO_INSERT_RULER,
+ UIUNDO_INSERT_CHART,
+ UIUNDO_INSERT_FOOTNOTE,
+ UIUNDO_INSERT_URLBTN,
+ UIUNDO_INSERT_URLTXT,
+ UIUNDO_DELETE_INVISIBLECNTNT
+};
+
+
+#endif
diff --git a/sw/inc/swurl.hxx b/sw/inc/swurl.hxx
new file mode 100644
index 000000000000..0b107d3230e4
--- /dev/null
+++ b/sw/inc/swurl.hxx
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * $RCSfile: swurl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWURL_HXX
+#define _SWURL_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+
+class UniString;
+class ViewShell;
+
+#define URLLOAD_NOFILTER 0x0000
+#define URLLOAD_DOWNLOADFILTER 0x0001
+#define URLLOAD_CHOOSEFILTER 0x0002
+#define URLLOAD_NEWVIEW 0x8000
+
+
+void LoadURL( const UniString& rName, ViewShell* pSh,
+ USHORT nFilter = URLLOAD_NOFILTER,
+ const UniString *pTargetFrameName = 0 );
+
+
+
+#endif
diff --git a/sw/inc/swwait.hxx b/sw/inc/swwait.hxx
new file mode 100644
index 000000000000..73e009332038
--- /dev/null
+++ b/sw/inc/swwait.hxx
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * $RCSfile: swwait.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWWAIT_HXX
+#define _SWWAIT_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class SwDocShell;
+
+class SwWait
+{
+ SwDocShell &rDoc;
+ BOOL bLock;
+public:
+ SwWait( SwDocShell &rDocShell, BOOL bLockDispatcher );
+ ~SwWait();
+};
+
+#endif
diff --git a/sw/inc/tabcol.hxx b/sw/inc/tabcol.hxx
new file mode 100644
index 000000000000..0110e27c4a66
--- /dev/null
+++ b/sw/inc/tabcol.hxx
@@ -0,0 +1,121 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabcol.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TABCOL_HXX
+#define _TABCOL_HXX
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_LONGS
+#define _SVSTDARR_BOOLS
+#include <svtools/svstdarr.hxx>
+#endif
+
+class SwTabCols : public SvLongs
+{
+ long nLeftMin, //Linker aeusserer Rand (Bezugspunkt) in
+ //Dokumentkordinaten.
+ //Alle anderen Werte relativ zu diesem Punkt!
+ nLeft, //Linker Rand der Tabelle.
+ nRight, //Rechter Rand der Tabelle.
+ nRightMax; //Maximaler rechter Rand der Tabelle.
+
+
+
+ SvBools aHidden; //Fuer jeden Eintrag ein Flag, Hidden oder nicht.
+ //Wenn das Flag Hidden TRUE ist liegt der Spalten-
+ //trenner nicht in der aktuellen Zeile; er muss
+ //mit gepflegt werden, darf aber nicht angezeigt
+ //werden.
+
+public:
+ SwTabCols( USHORT nSize = 0 );
+ SwTabCols( const SwTabCols& );
+ SwTabCols &operator=( const SwTabCols& );
+ BOOL operator==( const SwTabCols& rCmp ) const;
+
+ BOOL IsHidden( USHORT nPos ) const { return aHidden[nPos]; }
+ void SetHidden( USHORT nPos, BOOL bValue ) { aHidden[nPos] = bValue; }
+ inline void InsertHidden( USHORT nPos, BOOL bValue );
+ inline void DeleteHidden( USHORT nPos, USHORT nAnz = 1 );
+
+ //fuer den CopyCTor
+ const SvBools& GetHidden() const { return aHidden; }
+
+ long GetLeftMin() const { return nLeftMin; }
+ long GetLeft() const { return nLeft; }
+ long GetRight() const { return nRight; }
+ long GetRightMax()const { return nRightMax;}
+
+ void SetLeftMin ( long nNew ) { nLeftMin = nNew; }
+ void SetLeft ( long nNew ) { nLeft = nNew; }
+ void SetRight ( long nNew ) { nRight = nNew; }
+ void SetRightMax( long nNew ) { nRightMax = nNew;}
+};
+
+inline void SwTabCols::InsertHidden( USHORT nPos, BOOL bValue )
+{
+ aHidden.Insert( bValue, nPos );
+}
+inline void SwTabCols::DeleteHidden( USHORT nPos, USHORT nAnz )
+{
+ aHidden.Remove( nPos, nAnz );
+}
+
+#endif //_TABCOL_HXX
diff --git a/sw/inc/tblafmt.hxx b/sw/inc/tblafmt.hxx
new file mode 100644
index 000000000000..c0decd5e754c
--- /dev/null
+++ b/sw/inc/tblafmt.hxx
@@ -0,0 +1,383 @@
+/*************************************************************************
+ *
+ * $RCSfile: tblafmt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TBLAFMT_HXX
+#define _TBLAFMT_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 _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#include "hintids.hxx" //_immmer_ vor den solar-items!
+
+#define ITEMID_HORJUSTIFY 0
+#define ITEMID_VERJUSTIFY 0
+#define ITEMID_ORIENTATION 0
+#define ITEMID_MARGIN 0
+
+#ifndef _SVX_ALGITEM_HXX //autogen
+#include <svx/algitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.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_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_CNTRTITEM_HXX //autogen
+#include <svx/cntritem.hxx>
+#endif
+#ifndef _SVX_SHDDITEM_HXX //autogen
+#include <svx/shdditem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_ROTMODIT_HXX //autogen
+#include <svx/rotmodit.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+
+struct SwAfVersions;
+
+class SvNumberFormatter;
+
+class SwBoxAutoFmt
+{
+ // gemeinsamer Teil von StarCalc und StarWriter
+ SvxFontItem aFont;
+
+ SvxFontHeightItem aHeight;
+ SvxWeightItem aWeight;
+ SvxPostureItem aPosture;
+ SvxUnderlineItem aUnderline;
+ SvxCrossedOutItem aCrossedOut;
+ SvxContourItem aContour;
+ SvxShadowedItem aShadowed;
+ SvxColorItem aColor;
+ SvxBoxItem aBox;
+ SvxBrushItem aBackground;
+
+ // StarWriter spezifisches
+ SvxAdjustItem aAdjust;
+
+ // StarCalc spezifisches
+ SvxHorJustifyItem aHorJustify;
+ SvxVerJustifyItem aVerJustify;
+ SvxOrientationItem aOrientation;
+ SvxMarginItem aMargin;
+ SfxBoolItem aLinebreak;
+ SfxInt32Item aRotateAngle;
+ SvxRotateModeItem aRotateMode;
+
+ // und als letzes das Zahlenformat fuer die Box
+ String sNumFmtString;
+ LanguageType eSysLanguage, eNumFmtLanguage;
+
+public:
+ SwBoxAutoFmt();
+ SwBoxAutoFmt( const SwBoxAutoFmt& rNew );
+ ~SwBoxAutoFmt();
+
+ int operator==( const SwBoxAutoFmt& rCmp ) const;
+ SwBoxAutoFmt& operator=( const SwBoxAutoFmt& rNew );
+
+ // die Get-Methoden
+ const SvxFontItem &GetFont() const { return aFont; }
+ const SvxFontHeightItem &GetHeight() const { return aHeight; }
+ const SvxWeightItem &GetWeight() const { return aWeight; }
+ const SvxPostureItem &GetPosture() const { return aPosture; }
+ const SvxUnderlineItem &GetUnderline() const { return aUnderline; }
+ const SvxCrossedOutItem &GetCrossedOut() const { return aCrossedOut; }
+ const SvxContourItem &GetContour() const { return aContour; }
+ const SvxShadowedItem &GetShadowed() const { return aShadowed; }
+ const SvxColorItem &GetColor() const { return aColor; }
+ const SvxAdjustItem &GetAdjust() const { return aAdjust; }
+ const SvxBoxItem &GetBox() const { return aBox; }
+ const SvxBrushItem &GetBackground() const { return aBackground; }
+ void GetValueFormat( String& rFmt, LanguageType& rLng, LanguageType& rSys ) const
+ { rFmt = sNumFmtString; rLng = eNumFmtLanguage; rSys = eSysLanguage; }
+
+ // die SetMethoden
+ void SetFont( const SvxFontItem& rNew ) { aFont = rNew; }
+ void SetHeight( const SvxFontHeightItem& rNew ) { aHeight = rNew; }
+ void SetWeight( const SvxWeightItem& rNew ) { aWeight = rNew; }
+ void SetPosture( const SvxPostureItem& rNew ) { aPosture = rNew; }
+ void SetUnderline( const SvxUnderlineItem& rNew ) { aUnderline = rNew; }
+ void SetCrossedOut( const SvxCrossedOutItem& rNew ) { aCrossedOut = rNew; }
+ void SetContour( const SvxContourItem& rNew ) { aContour = rNew; }
+ void SetShadowed( const SvxShadowedItem& rNew ) { aShadowed = rNew; }
+ void SetColor( const SvxColorItem& rNew ) { aColor = rNew; }
+ void SetAdjust( const SvxAdjustItem& rNew )
+ {
+ aAdjust.SetAdjust( rNew.GetAdjust() );
+ aAdjust.SetOneWord( rNew.GetOneWord() );
+ aAdjust.SetLastBlock( rNew.GetLastBlock() );
+ }
+ void SetBox( const SvxBoxItem& rNew ) { aBox = rNew; }
+ void SetBackground( const SvxBrushItem& rNew ) { aBackground = rNew; }
+ void SetValueFormat( const String& rFmt, LanguageType eLng, LanguageType eSys )
+ { sNumFmtString = rFmt; eNumFmtLanguage = eLng; eSysLanguage = eSys; }
+
+ BOOL Load( SvStream& rStream, const SwAfVersions& rVersions, USHORT nVer );
+ BOOL Save( SvStream& rStream ) const;
+ BOOL SaveVerionNo( SvStream& rStream ) const;
+
+#ifdef READ_OLDVERS
+ // lade alte Version
+ BOOL LoadOld( SvStream& rStream, USHORT aLoadVer[] );
+#endif
+};
+
+class SwTableAutoFmt
+{
+ friend void _FinitCore(); // zum Zerstoeren des dflt. Pointers
+ static SwBoxAutoFmt* pDfltBoxAutoFmt;
+
+ String aName;
+ USHORT nStrResId;
+ BOOL bInclFont : 1;
+ BOOL bInclJustify : 1;
+ BOOL bInclFrame : 1;
+ BOOL bInclBackground : 1;
+ BOOL bInclValueFormat : 1;
+
+ // StarCalc Spezifisches
+ BOOL bInclWidthHeight : 1;
+
+ SwBoxAutoFmt* aBoxAutoFmt[ 16 ];
+
+public:
+ SwTableAutoFmt( const String& rName );
+ SwTableAutoFmt( const SwTableAutoFmt& rNew );
+ ~SwTableAutoFmt();
+
+ SwTableAutoFmt& operator=( const SwTableAutoFmt& rNew );
+
+ void SetBoxFmt( const SwBoxAutoFmt& rNew, BYTE nPos );
+ const SwBoxAutoFmt& GetBoxFmt( BYTE nPos ) const;
+
+ void SetName( const String& rNew ) { aName = rNew; nStrResId = USHRT_MAX; }
+ const String& GetName() const { return aName; }
+
+ enum UpdateFlags { UPDATE_CHAR = 1, UPDATE_BOX = 2, UPDATE_ALL = 3 };
+ SwBoxAutoFmt& UpdateFromSet( BYTE nPos, const SfxItemSet& rSet,
+ UpdateFlags eFlags, SvNumberFormatter* );
+ void UpdateToSet( BYTE nPos, SfxItemSet& rSet, UpdateFlags eFlags,
+ SvNumberFormatter* ) const ;
+
+ BOOL IsFont() const { return bInclFont; }
+ BOOL IsJustify() const { return bInclJustify; }
+ BOOL IsFrame() const { return bInclFrame; }
+ BOOL IsBackground() const { return bInclBackground; }
+ BOOL IsValueFormat() const { return bInclValueFormat; }
+ BOOL IsWidthHeight() const { return bInclWidthHeight; }
+
+ void SetFont( const BOOL bNew ) { bInclFont = bNew; }
+ void SetJustify( const BOOL bNew ) { bInclJustify = bNew; }
+ void SetFrame( const BOOL bNew ) { bInclFrame = bNew; }
+ void SetBackground( const BOOL bNew ) { bInclBackground = bNew; }
+ void SetValueFormat( const BOOL bNew ) { bInclValueFormat = bNew; }
+ void SetWidthHeight( const BOOL bNew ) { bInclWidthHeight = bNew; }
+
+ BOOL Load( SvStream& rStream, const SwAfVersions& );
+ BOOL Save( SvStream& rStream ) const;
+
+#ifdef READ_OLDVERS
+ // lade alte Version
+ BOOL LoadOld( SvStream& rStream, USHORT aLoadVer[] );
+#endif
+};
+typedef SwTableAutoFmt* SwTableAutoFmtPtr ;
+
+SV_DECL_PTRARR_DEL( _SwTableAutoFmtTbl, SwTableAutoFmtPtr, 1, 5 )
+
+class SwTableAutoFmtTbl : public _SwTableAutoFmtTbl
+{
+ BOOL Load( SvStream& rStream );
+ BOOL Save( SvStream& rStream ) const;
+public:
+ SwTableAutoFmtTbl();
+
+ BOOL Load();
+ BOOL Save() const;
+};
+
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/inc/tblafmt.hxx,v 1.1.1.1 2000-09-18 17:14:28 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.22 2000/09/18 16:03:31 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.21 2000/09/08 13:24:29 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.20 1999/10/11 15:23:51 jp
+ TableautoFormatnames with resource ids
+
+ Revision 1.19 1998/09/29 08:12:48 NN
+ #53381# bei Zahlformat Systemsprache beim Erzeugen mitspeichern
+
+
+ Rev 1.18 29 Sep 1998 10:12:48 NN
+ #53381# bei Zahlformat Systemsprache beim Erzeugen mitspeichern
+
+ Rev 1.17 15 Sep 1998 21:23:02 ER
+ #47738# gedrehter Text in Tabellen-AutoFormat
+
+ Rev 1.16 02 Jun 1998 10:35:02 JP
+ TabellenAutoFormat: Load/Save ohne Stream - erzeugen diesen selbst
+
+ Rev 1.15 14 May 1998 15:16:48 JP
+ neu: Numberformat vom Boxen unterstuetzen
+
+ Rev 1.14 12 May 1998 23:34:52 JP
+ neu: Zuweisungsoperator fuer SwTableAutoFmt
+
+ Rev 1.13 04 Sep 1997 09:02:58 MA
+ includes
+
+ Rev 1.12 09 Aug 1997 12:45:06 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.11 07 Aug 1997 14:43:12 OM
+ Headerfile-Umstellung
+
+ Rev 1.10 24 Jun 1996 18:35:28 MA
+ includes
+
+ Rev 1.9 13 Dec 1995 09:55:02 MA
+ opt: Bessere Defaults fuer Arrays
+
+ Rev 1.8 11 Dec 1995 13:38:48 HJS
+ anpassung fuer unix
+
+ Rev 1.7 30 Nov 1995 20:22:30 JP
+ DefaultTblAutoFmt erst auf Bedarf anlegen
+
+ Rev 1.6 31 Jul 1995 10:17:50 AMA
+ International-Umstellung wg. Update 253
+
+ Rev 1.5 20 Jul 1995 19:39:48 JP
+ Aederung fuer gemeinsamen Import/Export der Tabellen-Autoformatierung von Calc/Writer
+
+ Rev 1.4 10 Jun 1995 16:05:20 JP
+ Save/Load nochmals umgestellt
+
+ Rev 1.3 10 Jun 1995 12:51:26 JP
+ SwBoxAutoFmt::Load - Load-Version mit geben
+
+ Rev 1.2 06 Mar 1995 05:07:02 JP
+ Load & Save als Dummy
+
+ Rev 1.1 04 Mar 1995 20:42:22 JP
+ Adjust nachgetragen
+
+ Rev 1.0 04 Mar 1995 15:46:14 JP
+ Initial revision.
+
+*************************************************************************/
+ // #ifndef _...
+#endif
diff --git a/sw/inc/tblenum.hxx b/sw/inc/tblenum.hxx
new file mode 100644
index 000000000000..bd08f50730c2
--- /dev/null
+++ b/sw/inc/tblenum.hxx
@@ -0,0 +1,111 @@
+/*************************************************************************
+ *
+ * $RCSfile: tblenum.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TBLENUM_HXX
+#define _TBLENUM_HXX
+
+//fuers aendern der Tabellen/Spalten/Zeilen Breiten/Hoehen
+enum TblChgWidthHeightType
+{
+ WH_COL_LEFT,
+ WH_COL_RIGHT,
+ WH_ROW_TOP,
+ WH_ROW_BOTTOM,
+ WH_CELL_LEFT,
+ WH_CELL_RIGHT,
+ WH_CELL_TOP,
+ WH_CELL_BOTTOM,
+
+
+ // folgende koennen hinein verodert werden
+ WH_FLAG_INSDEL = 0x4000, // Insert/Del-Modus: das Bigger-Flag
+ // besagt was passiert:
+ // bBigger -> Box wird entfernt
+ // !bBigger-> Box wird eingefuegt
+ WH_FLAG_BIGGER = 0x8000 // Box wird groesser -> sonst kleiner
+};
+
+enum TblChgMode
+{
+ TBLFIX_CHGABS, // Tabelle feste Breite, den Nachbar andern
+ TBLFIX_CHGPROP, // Tabelle feste Breite, alle Nachbarn aendern
+ TBLVAR_CHGABS // Tabelle variable, alle Nachbarn aendern
+};
+
+
+enum SplitTbl_HeadlineOption
+{
+ HEADLINE_NONE = 0, // lasse alles wie es ist
+ HEADLINE_BORDERCOPY, // von der davor obere Line der vorhergehen Line
+ HEADLINE_CNTNTCOPY, // kopiere die 1. Line komplett mit Inhalt
+ HEADLINE_BOXATTRCOPY, // kopiere von der 1. Line die Box Attribute
+ HEADLINE_BOXATRCOLLCOPY // kopiere von der 1. Line die Box Attribute
+ // und die Absatzvorlagen
+};
+
+enum TableMergeErr
+{
+ TBLMERGE_OK,
+ TBLMERGE_NOSELECTION,
+ TBLMERGE_TOOCOMPLEX
+};
+
+
+#endif
diff --git a/sw/inc/tblsel.hxx b/sw/inc/tblsel.hxx
new file mode 100644
index 000000000000..e9c471c472df
--- /dev/null
+++ b/sw/inc/tblsel.hxx
@@ -0,0 +1,269 @@
+/*************************************************************************
+ *
+ * $RCSfile: tblsel.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TBLSEL_HXX
+#define _TBLSEL_HXX
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+#ifndef _SWRECT_HXX
+#include <swrect.hxx>
+#endif
+
+class SwCrsrShell;
+class SwCursor;
+class SwTableCursor;
+class SwFrm;
+class SwTabFrm;
+class SwTableBox;
+class SwTableLine;
+class SwLayoutFrm;
+class SwPaM;
+class SwNode;
+class SwTable;
+class SwUndoTblMerge;
+class SwCellFrm;
+
+SV_DECL_PTRARR( SwCellFrms, SwCellFrm*, 16, 16 )
+SV_DECL_PTRARR_SORT( SwSelBoxes, SwTableBoxPtr, 10, 20 )
+
+
+//Sucht alle Boxen zusammen, die in der Tabelle selektiert sind.
+//Je nach enum-Parameter wird die Selektion in der angegebenen Richtung
+//erweitert.
+//Die Boxen werden ueber das Layout zusammengsucht, es wird auch bei
+//aufgespaltenen Tabellen korrekt gearbeitet (siehe: MakeSelUnions()).
+enum SwTblSearchType
+{
+ TBLSEARCH_NONE = 0x1, // keine Erweiterung
+ TBLSEARCH_ROW = 0x2, // erweiter auf Zeilen
+ TBLSEARCH_COL = 0x3, // erweiter auf Spalten
+
+ // als Flag zu den anderen Werten!!
+ TBLSEARCH_PROTECT = 0x8, // auch geschuetzte Boxen einsammeln
+ TBLSEARCH_NO_UNION_CORRECT = 0x10 // die zusammenges. Union nicht korrigieren
+};
+
+void GetTblSel( const SwCrsrShell& rShell, SwSelBoxes& rBoxes,
+ const SwTblSearchType = TBLSEARCH_NONE );
+
+void GetTblSel( const SwCursor& rCrsr, SwSelBoxes& rBoxes,
+ const SwTblSearchType = TBLSEARCH_NONE );
+
+//wie vor, jedoch wird nicht von der Selektion sondern von den
+//Start- EndFrms ausgegangen.
+void GetTblSel( const SwLayoutFrm* pStart, const SwLayoutFrm* pEnd,
+ SwSelBoxes& rBoxes, const SwTblSearchType = TBLSEARCH_NONE );
+
+// Desgleichen nocheinmal direkt per PaM's
+void GetTblSelCrs( const SwCrsrShell& rShell, SwSelBoxes& rBoxes );
+void GetTblSelCrs( const SwTableCursor& rTblCrsr, SwSelBoxes& rBoxes );
+
+// suche fuer eine AutoSumme die beteiligten Boxen zusammen
+BOOL GetAutoSumSel( const SwCrsrShell&, SwCellFrms& );
+
+// check if the SelBoxes contains protected Boxes
+BOOL HasProtectedCells( const SwSelBoxes& rBoxes );
+
+// teste, ob die Selektion ausgeglichen ist
+SV_DECL_PTRARR( SwChartBoxes, SwTableBoxPtr, 16, 16);
+SV_DECL_PTRARR_DEL( SwChartLines, SwChartBoxes*, 25, 50);
+
+BOOL ChkChartSel( const SwNode& rSttNd, const SwNode& rEndNd,
+ SwChartLines* pGetCLines = 0 );
+
+// teste ob die Celle in die SSelection gehoert
+// (wurde eine Funktion, damit GetTblSel() und MakeTblCrsr() immer
+// das "gleiche Verstaendnis" fuer die Selektion haben)
+BOOL IsFrmInTblSel( const SwRect& rUnion, const SwFrm* pCell );
+
+// bestimme die Boxen, die zusammen gefasst werden sollen.
+// Dabei wird auf Layout Basis das Rechteck "angepasst". D.H. es
+// werden Boxen zugefuegt wenn welche an den Seiten ueberlappen
+// Zusaetzlich wird die neue Box erzeugt und mit dem entsprechenden
+// Inhalt gefuellt.
+void GetMergeSel( const SwPaM& rPam, SwSelBoxes& rBoxes,
+ SwTableBox** ppMergeBox, SwUndoTblMerge* pUndo = 0 );
+
+// teste ob die selektierten Boxen ein gueltiges Merge erlauben
+USHORT CheckMergeSel( const SwPaM& rPam );
+USHORT CheckMergeSel( const SwSelBoxes& rBoxes );
+
+// teste ob ein Split oder InsertCol dazu fuehrt, das eine Box
+// kleiner als MINLAY wird.
+BOOL CheckSplitCells( const SwCrsrShell& rShell, USHORT nDiv,
+ const SwTblSearchType = TBLSEARCH_NONE );
+BOOL CheckSplitCells( const SwCursor& rCrsr, USHORT nDiv,
+ const SwTblSearchType = TBLSEARCH_NONE );
+
+//Fuer das Arbeiten auf TabSelektion auch fuer aufgespaltene Tabellen.
+class SwSelUnion
+{
+ SwRect aUnion; //Das die Sel umschliessende Rechteck.
+ SwTabFrm *pTable; //Die (Follow-)Table zu der Union.
+
+public:
+ SwSelUnion( const SwRect &rRect, SwTabFrm *pTab ) :
+ aUnion( rRect ), pTable( pTab ) {}
+
+ const SwRect& GetUnion() const { return aUnion; }
+ SwRect& GetUnion() { return aUnion; }
+ const SwTabFrm *GetTable() const { return pTable; }
+ SwTabFrm *GetTable() { return pTable; }
+};
+
+SV_DECL_PTRARR_DEL( SwSelUnions, SwSelUnion*, 10, 20 )
+
+//Ermittelt die von einer Tabellenselektion betroffenen Tabellen und die
+//Union-Rechteckte der Selektionen - auch fuer aufgespaltene Tabellen.
+//Wenn ein Parameter != TBLSEARCH_NONE uebergeben wird, so wird die
+//Selektion in der angegebenen Richtung erweitert.
+void MakeSelUnions( SwSelUnions&, const SwLayoutFrm *pStart,
+ const SwLayoutFrm *pEnd,
+ const SwTblSearchType = TBLSEARCH_NONE );
+
+
+// -------------------------------------------------------------------
+// Diese Klassen kopieren die aktuelle Tabellen-Selektion (rBoxes)
+// unter Beibehaltung der Tabellen-Strubktur in eine eigene Struktur
+
+class _FndBox;
+class _FndLine;
+
+SV_DECL_PTRARR_DEL( _FndBoxes, _FndBox*, 10, 20 )
+SV_DECL_PTRARR_DEL( _FndLines, _FndLine*,10, 20 )
+
+class _FndBox
+{
+ SwTableBox* pBox;
+ _FndLines aLines;
+ _FndLine* pUpper;
+
+ SwTableLine *pLineBefore; //Zum Loeschen/Restaurieren des Layouts.
+ SwTableLine *pLineBehind;
+
+public:
+ _FndBox( SwTableBox* pB, _FndLine* pFL ) :
+ pBox(pB), pUpper(pFL), pLineBefore( 0 ), pLineBehind( 0 ) {}
+
+ const _FndLines& GetLines() const { return aLines; }
+ _FndLines& GetLines() { return aLines; }
+ const SwTableBox* GetBox() const { return pBox; }
+ SwTableBox* GetBox() { return pBox; }
+ const _FndLine* GetUpper() const { return pUpper; }
+ _FndLine* GetUpper() { return pUpper; }
+
+ void SetTableLines( const SwSelBoxes &rBoxes, const SwTable &rTable );
+ void SetTableLines( const SwTable &rTable );
+ void DelFrms ( SwTable &rTable );
+ void MakeFrms( SwTable &rTable );
+ void MakeNewFrms( SwTable &rTable, const USHORT nNumber,
+ const BOOL bBehind );
+ BOOL AreLinesToRestore( const SwTable &rTable ) const;
+
+ //Auch die Charts zu der Tabelle muessen etwas von den Veraenderungen
+ //mitbekommen.
+ void SaveChartData( const SwTable &rTable );
+ void RestoreChartData( const SwTable &rTable );
+};
+
+
+class _FndLine
+{
+ SwTableLine* pLine;
+ _FndBoxes aBoxes;
+ _FndBox* pUpper;
+public:
+ _FndLine(SwTableLine* pL, _FndBox* pFB=0) : pLine(pL), pUpper(pFB) {}
+ const _FndBoxes& GetBoxes() const { return aBoxes; }
+ _FndBoxes& GetBoxes() { return aBoxes; }
+ const SwTableLine* GetLine() const { return pLine; }
+ SwTableLine* GetLine() { return pLine; }
+ const _FndBox* GetUpper() const { return pUpper; }
+ _FndBox* GetUpper() { return pUpper; }
+
+ void SetUpper( _FndBox* pUp ) { pUpper = pUp; }
+};
+
+
+struct _FndPara
+{
+ _FndBox* pFndBox;
+ _FndLine* pFndLine;
+ const SwSelBoxes& rBoxes;
+
+ _FndPara( const SwSelBoxes& rBxs, _FndBox* pFB )
+ : rBoxes( rBxs ), pFndBox( pFB ) {}
+ _FndPara( const _FndPara& rPara, _FndBox* pFB )
+ : rBoxes(rPara.rBoxes), pFndLine(rPara.pFndLine), pFndBox(pFB) {}
+ _FndPara( const _FndPara& rPara, _FndLine* pFL )
+ : rBoxes(rPara.rBoxes), pFndLine(pFL), pFndBox(rPara.pFndBox) {}
+};
+
+BOOL _FndBoxCopyCol( const SwTableBox*& rpBox, void* pPara );
+BOOL _FndLineCopyCol( const SwTableLine*& rpLine, void* pPara );
+
+
+#endif // _TBLSEL_HXX
diff --git a/sw/inc/tox.hxx b/sw/inc/tox.hxx
new file mode 100644
index 000000000000..d7d1aecd78ba
--- /dev/null
+++ b/sw/inc/tox.hxx
@@ -0,0 +1,702 @@
+/*************************************************************************
+ *
+ * $RCSfile: tox.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TOX_HXX
+#define _TOX_HXX
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _TOXE_HXX
+#include <toxe.hxx>
+#endif
+#ifndef _CALBCK_HXX
+#include <calbck.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+
+class SwTOXType;
+class SwTOXMark;
+class SwTxtTOXMark;
+class SwDoc;
+
+SV_DECL_PTRARR(SwTOXMarks, SwTOXMark*, 0, 10)
+
+/*--------------------------------------------------------------------
+ Beschreibung: Eintrag fuer Inhaltsverzeichnis oder Benutzerverz.
+ --------------------------------------------------------------------*/
+
+#define IVER_TOXMARK_STRPOOL ((USHORT)1)
+#define IVER_TOXMARK_NEWTOX ((USHORT)2)
+
+class SwTOXMark : public SfxPoolItem, public SwClient
+{
+ friend void _InitCore();
+ friend class SwTxtTOXMark;
+
+ String aAltText; // Der Text des Eintrages ist unterschiedlich
+ String aPrimaryKey, aSecondaryKey;
+
+ SwTxtTOXMark* pTxtAttr;
+
+ USHORT nLevel;
+ BOOL bAutoGenerated : 1; // generated using a concordance file
+ BOOL bMainEntry : 1; // main entry emphasized by character style
+
+
+ SwTOXMark(); // for crete the dflt. atr. in _InitCore
+
+public:
+ TYPEINFO(); // fuers rtti
+
+ SwTOXMark( const SwTOXType* pTyp );
+ SwTOXMark( const SwTOXMark& rCopy );
+ virtual ~SwTOXMark();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual USHORT GetVersion( USHORT nFFVer ) const;
+
+ SwTOXMark& operator=( const SwTOXMark& rCopy );
+ String GetText() const;
+
+ inline BOOL IsAlternativeText() const;
+ inline const String& GetAlternativeText() const;
+
+ inline void SetAlternativeText( const String& rAlt );
+
+ // Inhalts-/Benutzerverzeichnis - spezifisch
+ inline void SetLevel(USHORT nLevel);
+ inline USHORT GetLevel() const;
+
+ // Index - spezifisch
+ inline void SetPrimaryKey(const String& rStr );
+ inline void SetSecondaryKey(const String& rStr);
+ inline const String& GetPrimaryKey() const;
+ inline const String& GetSecondaryKey() const;
+
+ BOOL IsAutoGenerated() const {return bAutoGenerated;}
+ void SetAutoGenerated(BOOL bSet) {bAutoGenerated = bSet;}
+
+ BOOL IsMainEntry() const {return bMainEntry;}
+ void SetMainEntry(BOOL bSet) { bMainEntry = bSet;}
+
+ inline const SwTOXType* GetTOXType() const;
+
+ const SwTxtTOXMark* GetTxtTOXMark() const { return pTxtAttr; }
+ SwTxtTOXMark* GetTxtTOXMark() { return pTxtAttr; }
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Typen einzelner Verzeichnisse
+ --------------------------------------------------------------------*/
+
+class SwTOXType : public SwModify
+{
+public:
+ SwTOXType(TOXTypes eTyp, const String& aName);
+ SwTOXType(const SwTOXType& rCopy);
+
+ inline const String& GetTypeName() const;
+ void SetTypeName(const String& rName);
+ inline TOXTypes GetType() const;
+
+private:
+ String aName;
+ TOXTypes eType;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Muster fuer Zeilen eines Verzeichnisses
+ --------------------------------------------------------------------*/
+
+#define FORM_TITLE 0
+#define FORM_ALPHA_DELIMITTER 1
+#define FORM_PRIMARY_KEY 2
+#define FORM_SECONDARY_KEY 3
+#define FORM_ENTRY 4
+
+/*
+ Pattern structure
+
+ <E#> - entry number <E# CharStyleName,PoolId>
+ <ET> - entry text <ET CharStyleName,PoolId>
+ <E> - entry text and number <E CharStyleName,PoolId>
+ <T> - tab stop <T,,Position,Adjust>
+ <C> - chapter info n = {0, 1, 2, 3, 4 } values of SwChapterFormat <C CharStyleName,PoolId>
+ <TX> - text token <X CharStyleName,PoolId, TOX_STYLE_DELIMITERTextContentTOX_STYLE_DELIMITER>
+ <#> - Page number <# CharStyleName,PoolId>
+ <LS> - Link start <LS>
+ <LE> - Link end <LE>
+ <A00> - Authority entry field <A02 CharStyleName, PoolId>
+ */
+
+// These enum values are stored and must not change!
+enum FormTokenType
+{
+ TOKEN_ENTRY_NO,
+ TOKEN_ENTRY_TEXT,
+ TOKEN_ENTRY,
+ TOKEN_TAB_STOP,
+ TOKEN_TEXT,
+ TOKEN_PAGE_NUMS,
+ TOKEN_CHAPTER_INFO,
+ TOKEN_LINK_START,
+ TOKEN_LINK_END,
+ TOKEN_AUTHORITY,
+ TOKEN_END
+};
+
+struct SwFormToken
+{
+ String sText;
+ String sCharStyleName;
+ SwTwips nTabStopPosition;
+ FormTokenType eTokenType;
+ USHORT nPoolId;
+ USHORT eTabAlign;
+ USHORT nChapterFormat; //SwChapterFormat;
+ USHORT nAuthorityField; //enum ToxAuthorityField
+ sal_Unicode cTabFillChar;
+
+ SwFormToken(FormTokenType eType ) :
+ eTokenType(eType),
+ nTabStopPosition(ULONG_MAX),
+ nPoolId(USHRT_MAX),
+ eTabAlign(0 /*SVX_TAB_ADJUST_LEFT*/),
+ cTabFillChar(' '),
+ nChapterFormat(0 /*CF_NUMBER*/),
+ nAuthorityField(0)/*AUTH_FIELD_IDENTIFIER*/{}
+
+ String GetString() const;
+};
+
+class SwFormTokenEnumerator
+{
+ String sPattern;
+ xub_StrLen nCurPatternPos;
+ xub_StrLen nCurPatternLen;
+
+ FormTokenType _SearchNextToken( xub_StrLen nStt, xub_StrLen& rEnd,
+ xub_StrLen* pTokenLen = 0 ) const;
+ SwFormToken BuildToken( FormTokenType, xub_StrLen ) const;
+
+public:
+ SwFormTokenEnumerator( const String& rPattern );
+ BOOL HasNextToken() const
+ { return nCurPatternPos + nCurPatternLen < sPattern.Len(); }
+
+ SwFormToken GetNextToken();
+ SwFormToken GetCurToken() const;
+
+ FormTokenType GetCurTokenType();
+ FormTokenType GetNextTokenType();
+ FormTokenType GetPrevTokenType();
+ void RemoveCurToken();
+ void InsertToken( const SwFormToken& rToken );
+ const String& GetPattern() const { return sPattern; }
+};
+
+class SwForm
+{
+ String aPattern[ AUTH_TYPE_END + 1 ];
+ String aTemplate[ AUTH_TYPE_END + 1 ];
+ USHORT nType, nFormMaxLevel;
+ //USHORT nFirstTabPos; -> Value in tab token
+// BOOL bHasFirstTabPos : 1;
+ BOOL bGenerateTabPos : 1;
+ BOOL bIsRelTabPos : 1;
+ BOOL bCommaSeparated : 1;
+
+public:
+ SwForm( USHORT nType = TOX_CONTENT );
+ SwForm( const SwForm& rForm );
+
+ SwForm& operator=( const SwForm& rForm );
+
+ inline void SetTemplate(USHORT nLevel, const String& rName);
+ inline const String& GetTemplate(USHORT nLevel) const;
+
+ inline void SetPattern(USHORT nLevel, const String& rName);
+ inline const String& GetPattern(USHORT nLevel) const;
+
+ //convert pattern string from old to new format or vice versa
+ static String ConvertPatternTo51(const String& rSource);
+ static String ConvertPatternFrom51(const String& rSource, TOXTypes eType);
+
+ // fill tab stop positions from template to pattern
+ void AdjustTabStops(SwDoc& rDoc);
+
+ SwFormTokenEnumerator CreateTokenEnumerator(USHORT nLevel) const
+ {return SwFormTokenEnumerator(GetPattern(nLevel));}
+
+ inline USHORT GetTOXType() const;
+ inline USHORT GetFormMax() const;
+
+ USHORT GetFirstTabPos() const ; //{ return nFirstTabPos; }
+ void SetFirstTabPos( USHORT n ); //{ nFirstTabPos = n; }
+
+ BOOL IsFirstTabPosFlag() const ; //{ return bHasFirstTabPos; }
+ void SetFirstTabPosFlag( BOOL b ); //{ bHasFirstTabPos = b; }
+
+ BOOL IsGenerateTabPos() const { return bGenerateTabPos; }
+ void SetGenerateTabPos( BOOL b ) { bGenerateTabPos = b; }
+
+ BOOL IsRelTabPos() const { return bIsRelTabPos; }
+ void SetRelTabPos( BOOL b ) { bIsRelTabPos = b; }
+
+ BOOL IsCommaSeparated() const { return bCommaSeparated;}
+ void SetCommaSeparated( BOOL b) { bCommaSeparated = b;}
+
+ static USHORT GetFormMaxLevel( USHORT nType );
+
+ static const sal_Char* aFormEntry; // <E>
+ static BYTE nFormEntryLen; // 3 Zeichen
+ static const sal_Char* aFormTab; // <T>
+ static BYTE nFormTabLen; // 3 Zeichen
+ static const sal_Char* aFormPageNums; // <P>
+ static BYTE nFormPageNumsLen; // 3 Zeichen
+ static const sal_Char* aFormLinkStt; // <LS>
+ static BYTE nFormLinkSttLen; // 4 Zeichen
+ static const sal_Char* aFormLinkEnd; // <LE>
+ static BYTE nFormLinkEndLen; // 4 Zeichen
+ static const sal_Char* aFormEntryNum; // <E#>
+ static BYTE nFormEntryNumLen; // 4 Zeichen
+ static const sal_Char* aFormEntryTxt; // <ET>
+ static BYTE nFormEntryTxtLen; // 4 Zeichen
+ static const sal_Char* aFormChapterMark; // <C>
+ static BYTE nFormChapterMarkLen; // 3 Zeichen
+ static const sal_Char* aFormText; // <TX>
+ static BYTE nFormTextLen; // 4 Zeichen
+ static const sal_Char* aFormAuth; // <Axx> xx - decimal enum value
+ static BYTE nFormAuthLen; // 3 chars
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Inhalte aus denen Verzeichnisse generiert werden
+ --------------------------------------------------------------------*/
+
+enum SwTOXElement
+{
+ TOX_MARK = 1,
+ TOX_OUTLINELEVEL = 2,
+ TOX_TEMPLATE = 4,
+ TOX_OLE = 8,
+ TOX_TABLE = 16,
+ TOX_GRAPHIC = 32,
+ TOX_FRAME = 64,
+ TOX_SEQUENCE = 128
+};
+
+enum SwTOIOptions
+{
+ TOI_SAME_ENTRY = 1,
+ TOI_FF = 2,
+ TOI_CASE_SENSITIVE = 4,
+ TOI_KEY_AS_ENTRY = 8,
+ TOI_ALPHA_DELIMITTER = 16,
+ TOI_DASH = 32,
+ TOI_INITIAL_CAPS = 64
+};
+
+//which part of the caption is to be displayed
+enum SwCaptionDisplay
+{
+ CAPTION_COMPLETE,
+ CAPTION_NUMBER,
+ CAPTION_TEXT
+};
+
+enum SwTOOElements
+{
+ TOO_MATH = 0x01,
+ TOO_CHART = 0x02,
+ TOO_IMAGE = 0x04,
+ TOO_CALC = 0x08,
+ TOO_DRAW_IMPRESS= 0x10,
+// TOO_IMPRESS = 0x20,
+
+ TOO_OTHER = 0x80
+};
+
+#define TOX_STYLE_DELIMITER ((sal_Unicode)0x01) //JP 19.07.00: use a control char
+
+/*--------------------------------------------------------------------
+ Beschreibung: Klasse aller Verzeichnisse
+ --------------------------------------------------------------------*/
+
+class SwTOXBase : public SwClient
+{
+ // not implemented
+ SwTOXBase& operator=(const SwTOXBase& rSource);
+
+//protected:
+
+ SwForm aForm; // Aussehen der Eintragzeile
+ String aName; // unique name
+ String aTitle; // Der Verzeichnistitel
+
+ String sMainEntryCharStyle; // name of the character style applied to main index entries
+
+ String aStyleNames[MAXLEVEL]; // (additional) style names TOX_CONTENT, TOX_USER
+ String sSequenceName; // FieldTypeName of a caption sequence
+
+ union {
+ USHORT nLevel; // Gliederungsebenen beachten
+ USHORT nOptions; // Optionen fuer Index
+ } aData;
+
+ USHORT nCreateType; // Quellen aus dem das Verzeichnis generiert wird
+ USHORT nOLEOptions; // OLE sources
+ SwCaptionDisplay eCaptionDisplay; //
+ BOOL bProtected : 1; // index protected ?
+ BOOL bFromChapter : 1; // create from chapter or document
+ BOOL bFromObjectNames : 1; // create a table or object index
+ // from the names rather than the caption
+ BOOL bLevelFromChapter : 1; // User index: get the level from the source chapter
+public:
+ SwTOXBase( const SwTOXType* pTyp, const SwForm& rForm,
+ USHORT nCreaType, const String& rTitle );
+ SwTOXBase( const SwTOXBase& rCopy, SwDoc* pDoc = 0 );
+ virtual ~SwTOXBase();
+
+ virtual BOOL GetInfo( SfxPoolItem& rInfo ) const;
+
+ // a kind of CopyCtor - check if the TOXBase is at TOXType of the doc.
+ // If not, so create it an copy all other used things. The return is this
+ SwTOXBase& CopyTOXBase( SwDoc*, const SwTOXBase& );
+
+ const SwTOXType* GetTOXType() const; //
+
+ USHORT GetCreateType() const; // Aus Inhaltsformen generieren
+
+ const String& GetTOXName() const {return aName;}
+ void SetTOXName(const String& rSet) {aName = rSet;}
+
+ const String& GetTitle() const; // Titel des Verzeichnisses
+ const String& GetTypeName() const; // Name des Verzeichnisses
+ const SwForm& GetTOXForm() const; // Aussehen der Zeile
+
+ void SetCreate(USHORT);
+ void SetTitle(const String& rTitle);
+ void SetTOXForm(const SwForm& rForm);
+
+ TOXTypes GetType() const;
+
+ const String& GetMainEntryCharStyle() const {return sMainEntryCharStyle;}
+ void SetMainEntryCharStyle(const String& rSet) {sMainEntryCharStyle = rSet;}
+
+ // Inhaltsverzeichnis - spezifisch
+ inline void SetLevel(USHORT); // Gliederungsebene beachten
+ inline USHORT GetLevel() const;
+
+ // Index - spezifisch
+ inline USHORT GetOptions() const; // Optionen fuer Index
+ inline void SetOptions(USHORT nOpt);
+
+ // index of objects
+ USHORT GetOLEOptions() const {return nOLEOptions;}
+ void SetOLEOptions(USHORT nOpt) {nOLEOptions = nOpt;}
+
+ // index of objects
+
+ // Benutzerverzeichnis - spezifisch
+ inline void SetTemplateName(const String& rName); // Absatzlayout beachten
+ inline String GetTemplateName() const;
+
+ const String& GetStyleNames(USHORT nLevel) const
+ {
+ DBG_ASSERT( nLevel < MAXLEVEL, "Which level?");
+ return aStyleNames[nLevel];
+ }
+ void SetStyleNames(const String& rSet, USHORT nLevel)
+ {
+ DBG_ASSERT( nLevel < MAXLEVEL, "Which level?");
+ aStyleNames[nLevel] = rSet;
+ }
+ BOOL HasAnyStyleNames() const;
+
+ BOOL IsFromChapter() const { return bFromChapter;}
+ void SetFromChapter(BOOL bSet) { bFromChapter = bSet;}
+
+ BOOL IsFromObjectNames() const {return bFromObjectNames;}
+ void SetFromObjectNames(BOOL bSet) {bFromObjectNames = bSet;}
+
+ BOOL IsLevelFromChapter() const {return bLevelFromChapter;}
+ void SetLevelFromChapter(BOOL bSet) {bLevelFromChapter = bSet;}
+
+ BOOL IsProtected() const { return bProtected; }
+ void SetProtected(BOOL bSet) { bProtected = bSet; }
+
+ const String& GetSequenceName() const {return sSequenceName;}
+ void SetSequenceName(const String& rSet) {sSequenceName = rSet;}
+
+ SwCaptionDisplay GetCaptionDisplay() const { return eCaptionDisplay;}
+ void SetCaptionDisplay(SwCaptionDisplay eSet) {eCaptionDisplay = eSet;}
+
+ BOOL IsTOXBaseInReadonly() const;
+
+ const SfxItemSet* GetAttrSet() const;
+ void SetAttrSet( const SfxItemSet& );
+
+ static const String& GetTOXName(TOXTypes eType); // toxmgr.cxx
+
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Inlines
+ --------------------------------------------------------------------*/
+
+//
+//SwTOXMark
+//
+inline const String& SwTOXMark::GetAlternativeText() const
+ { return aAltText; }
+
+inline const SwTOXType* SwTOXMark::GetTOXType() const
+ { return (SwTOXType*)GetRegisteredIn(); }
+
+inline BOOL SwTOXMark::IsAlternativeText() const
+ { return aAltText.Len() > 0; }
+
+inline void SwTOXMark::SetAlternativeText(const String& rAlt)
+{
+ aAltText = rAlt;
+}
+
+inline void SwTOXMark::SetLevel( USHORT nLvl )
+{
+ ASSERT( !GetTOXType() || GetTOXType()->GetType() != TOX_INDEX, "Falscher Feldtyp");
+ nLevel = nLvl;
+}
+
+inline void SwTOXMark::SetPrimaryKey( const String& rKey )
+{
+ ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp");
+ aPrimaryKey = rKey;
+}
+
+inline void SwTOXMark::SetSecondaryKey( const String& rKey )
+{
+ ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp");
+ aSecondaryKey = rKey;
+}
+
+inline USHORT SwTOXMark::GetLevel() const
+{
+ ASSERT( !GetTOXType() || GetTOXType()->GetType() != TOX_INDEX, "Falscher Feldtyp");
+ return nLevel;
+}
+
+inline const String& SwTOXMark::GetPrimaryKey() const
+{
+ ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp");
+ return aPrimaryKey;
+}
+
+inline const String& SwTOXMark::GetSecondaryKey() const
+{
+ ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp");
+ return aSecondaryKey;
+}
+
+
+//
+//SwForm
+//
+inline void SwForm::SetTemplate(USHORT nLevel, const String& rName)
+{
+ ASSERT(nLevel < GetFormMax(), "Index >= FORM_MAX");
+ aTemplate[nLevel] = rName;
+}
+
+inline void SwForm::SetPattern(USHORT nLevel, const String& rName)
+{
+ ASSERT(nLevel < GetFormMax(), "Index >= FORM_MAX");
+ aPattern[nLevel] = rName;
+}
+
+inline const String& SwForm::GetPattern(USHORT nLevel) const
+{
+ ASSERT(nLevel < GetFormMax(), "Index >= FORM_MAX");
+ return aPattern[nLevel];
+}
+
+inline const String& SwForm::GetTemplate(USHORT nLevel) const
+{
+ ASSERT(nLevel < GetFormMax(), "Index >= FORM_MAX");
+ return aTemplate[nLevel];
+}
+
+inline USHORT SwForm::GetTOXType() const
+{
+ return nType;
+}
+
+inline USHORT SwForm::GetFormMax() const
+{
+ return nFormMaxLevel;
+}
+
+
+//
+//SwTOXType
+//
+inline const String& SwTOXType::GetTypeName() const
+ { return aName; }
+
+inline void SwTOXType::SetTypeName(const String& rName)
+ { aName = rName; }
+
+inline TOXTypes SwTOXType::GetType() const
+ { return eType; }
+
+//
+// SwTOXBase
+//
+inline const SwTOXType* SwTOXBase::GetTOXType() const
+ { return (SwTOXType*)GetRegisteredIn(); }
+
+inline USHORT SwTOXBase::GetCreateType() const
+ { return nCreateType; }
+
+inline const String& SwTOXBase::GetTitle() const
+ { return aTitle; }
+
+inline const String& SwTOXBase::GetTypeName() const
+ { return GetTOXType()->GetTypeName(); }
+
+inline const SwForm& SwTOXBase::GetTOXForm() const
+ { return aForm; }
+
+inline void SwTOXBase::SetCreate(USHORT nCreate)
+ { nCreateType = nCreate; }
+
+inline void SwTOXBase::SetTitle(const String& rTitle)
+ { aTitle = rTitle; }
+
+inline void SwTOXBase::SetTOXForm(const SwForm& rForm)
+ { aForm = rForm; }
+
+inline TOXTypes SwTOXBase::GetType() const
+ { return GetTOXType()->GetType(); }
+
+inline void SwTOXBase::SetLevel(USHORT nLev)
+{
+ ASSERT(GetTOXType()->GetType() != TOX_INDEX, "Falscher Feldtyp");
+ aData.nLevel = nLev;
+}
+
+inline USHORT SwTOXBase::GetLevel() const
+{
+ ASSERT(GetTOXType()->GetType() != TOX_INDEX, "Falscher Feldtyp");
+ return aData.nLevel;
+}
+
+inline void SwTOXBase::SetTemplateName(const String& rName)
+{
+// ASSERT(GetTOXType()->GetType() == TOX_USER, "Falscher Feldtyp");
+// ASSERT(aData.pTemplateName, "pTemplateName == 0");
+// (*aData.pTemplateName) = rName;
+ DBG_WARNING("SwTOXBase::SetTemplateName obsolete")
+ aStyleNames[0] = rName;
+
+}
+
+inline String SwTOXBase::GetTemplateName() const
+{
+// ASSERT(GetTOXType()->GetType() == TOX_USER, "Falscher Feldtyp");
+// return *aData.pTemplateName;
+ DBG_WARNING("SwTOXBase::GetTemplateName obsolete")
+ return aStyleNames[0].GetToken(0, TOX_STYLE_DELIMITER);
+}
+
+inline USHORT SwTOXBase::GetOptions() const
+{
+ ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp");
+ return aData.nOptions;
+}
+
+inline void SwTOXBase::SetOptions(USHORT nOpt)
+{
+ ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp");
+ aData.nOptions = nOpt;
+}
+
+
+#endif // _TOX_HXX
diff --git a/sw/inc/toxe.hxx b/sw/inc/toxe.hxx
new file mode 100644
index 000000000000..6a8c8bedf354
--- /dev/null
+++ b/sw/inc/toxe.hxx
@@ -0,0 +1,159 @@
+/*************************************************************************
+ *
+ * $RCSfile: toxe.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TOXE_HXX
+#define _TOXE_HXX
+
+enum SwTOXSearch
+{
+ TOX_NXT,
+ TOX_PRV,
+ TOX_SAME_NXT,
+ TOX_SAME_PRV
+};
+
+enum SwTOIKeyType
+{
+ TOI_PRIMARY,
+ TOI_SECONDARY
+};
+
+enum TOXTypes
+{
+ TOX_INDEX,
+ TOX_USER,
+ TOX_CONTENT,
+ TOX_ILLUSTRATIONS,
+ TOX_OBJECTS,
+ TOX_TABLES,
+ TOX_AUTHORITIES
+};
+// this enum contains all types of sources
+enum ToxAuthorityType
+{
+ //BiBTeX - fields
+ AUTH_TYPE_ARTICLE,
+ AUTH_TYPE_BOOK,
+ AUTH_TYPE_BOOKLET,
+ AUTH_TYPE_CONFERENCE,
+ AUTH_TYPE_INBOOK,
+ AUTH_TYPE_INCOLLECTION,
+ AUTH_TYPE_INPROCEEDINGS,
+ AUTH_TYPE_JOURNAL,
+ AUTH_TYPE_MANUAL,
+ AUTH_TYPE_MASTERSTHESIS,
+ AUTH_TYPE_MISC,
+ AUTH_TYPE_PHDTHESIS,
+ AUTH_TYPE_PROCEEDINGS,
+ AUTH_TYPE_TECHREPORT,
+ AUTH_TYPE_UNPUBLISHED,
+ //additional types
+ AUTH_TYPE_EMAIL,
+ AUTH_TYPE_WWW,
+ AUTH_TYPE_CUSTOM1,
+ AUTH_TYPE_CUSTOM2,
+ AUTH_TYPE_CUSTOM3,
+ AUTH_TYPE_CUSTOM4,
+ AUTH_TYPE_CUSTOM5,
+ AUTH_TYPE_END
+};
+
+//this enum contains the fields of an authority entry
+enum ToxAuthorityField
+{
+ AUTH_FIELD_IDENTIFIER,
+ AUTH_FIELD_AUTHORITY_TYPE, //ToxAuthorityType
+ //BibTex types
+ AUTH_FIELD_ADDRESS,
+ AUTH_FIELD_ANNOTE,
+ AUTH_FIELD_AUTHOR,
+ AUTH_FIELD_BOOKTITLE,
+ AUTH_FIELD_CHAPTER,
+ AUTH_FIELD_EDITION,
+ AUTH_FIELD_EDITOR,
+ AUTH_FIELD_HOWPUBLISHED,
+ AUTH_FIELD_INSTITUTION,
+ AUTH_FIELD_JOURNAL,
+// AUTH_FIELD_KEY, // BiBTeX - Field
+ AUTH_FIELD_MONTH,
+ AUTH_FIELD_NOTE,
+ AUTH_FIELD_NUMBER,
+ AUTH_FIELD_ORGANIZATIONS,
+ AUTH_FIELD_PAGES,
+ AUTH_FIELD_PUBLISHER,
+ AUTH_FIELD_SCHOOL,
+ AUTH_FIELD_SERIES,
+ AUTH_FIELD_TITLE,
+ AUTH_FIELD_REPORT_TYPE,
+ AUTH_FIELD_VOLUME,
+ AUTH_FIELD_YEAR,
+ //additional types
+ AUTH_FIELD_URL,
+ AUTH_FIELD_CUSTOM1,
+ AUTH_FIELD_CUSTOM2,
+ AUTH_FIELD_CUSTOM3,
+ AUTH_FIELD_CUSTOM4,
+ AUTH_FIELD_CUSTOM5,
+ AUTH_FIELD_ISBN,
+ AUTH_FIELD_END
+};
+
+
+#endif
diff --git a/sw/inc/toxinit.hxx b/sw/inc/toxinit.hxx
new file mode 100644
index 000000000000..25128fa9f434
--- /dev/null
+++ b/sw/inc/toxinit.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * $RCSfile: toxinit.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TOXINIT_HXX
+#define _TOXINIT_HXX
+
+class UniString;
+
+void SetTOUTableStr(const UniString& rStr);
+void SetTOUGraphicStr(const UniString& rStr);
+void SetTOUOLEStr(const UniString& rStr);
+
+
+#endif // _TOXINIT_HXX
diff --git a/sw/inc/txatbase.hxx b/sw/inc/txatbase.hxx
new file mode 100644
index 000000000000..81909ed02949
--- /dev/null
+++ b/sw/inc/txatbase.hxx
@@ -0,0 +1,482 @@
+/*************************************************************************
+ *
+ * $RCSfile: txatbase.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TXATBASE_HXX
+#define _TXATBASE_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+class SwFont;
+class SfxItemPool;
+
+class SvxBrushItem;
+class SvxFontItem;
+class SvxPostureItem;
+class SvxWeightItem;
+class SvxUnderlineItem;
+class SvxFontHeightItem;
+class SvxPropSizeItem;
+class SvxShadowedItem;
+class SvxAutoKernItem;
+class SvxWordLineModeItem;
+class SvxContourItem;
+class SvxCrossedOutItem;
+class SvxColorItem;
+class SvxCharSetColorItem;
+class SvXMLAttrContainerItem;
+
+class SwFmtCharFmt;
+class SwFmtINetFmt;
+
+class SvxKerningItem;
+class SvxCaseMapItem;
+class SvxLanguageItem;
+class SvxEscapementItem;
+class SvxBlinkItem;
+class SvxNoHyphenItem;
+
+class SwFmtSoftHyph;
+class SwFmtHardBlank;
+class SwFmtFld;
+class SwFmtFtn;
+class SwFmtFlyCnt;
+class SwTOXMark;
+class SwFmtRefMark;
+
+class SwTxtAttr
+{
+ const SfxPoolItem* pAttr;
+ xub_StrLen nStart;
+ BOOL bDontExpand : 1;
+
+protected:
+ SwTxtAttr( const SfxPoolItem& rAttr, xub_StrLen nStart );
+
+public:
+ virtual ~SwTxtAttr();
+
+ // RemoveFromPool muss immer vorm DTOR Aufruf erfolgen!!
+ void RemoveFromPool( SfxItemPool& rPool );
+
+ // Start Position erfragen
+ xub_StrLen* GetStart() { return &nStart; }
+ const xub_StrLen* GetStart() const { return &nStart; }
+
+ // End Position erfragen
+ virtual xub_StrLen* GetEnd();
+ inline const xub_StrLen* GetEnd() const;
+ inline const xub_StrLen* GetAnyEnd() const;
+
+ BOOL DontExpand() const { return bDontExpand; }
+ void SetDontExpand( BOOL bNew ) { bDontExpand = bNew; }
+
+ inline const SfxPoolItem& GetAttr() const;
+ inline USHORT Which() const { return GetAttr().Which(); }
+
+ virtual int operator==( const SwTxtAttr& ) const;
+
+ virtual void ChgFnt( SwFont * );
+ virtual void RstFnt( SwFont * );
+
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+
+ inline const SvxFontItem &GetFont() const;
+ inline const SvxPostureItem &GetPosture() const;
+ inline const SvxWeightItem &GetWeight() const;
+ inline const SvxUnderlineItem &GetUnderline() const;
+ inline const SvxFontHeightItem &GetFontSize() const;
+ inline const SvxPropSizeItem &GetPropSize() const;
+ inline const SvxShadowedItem &GetShadowed() const;
+ inline const SvxAutoKernItem &GetAutoKern() const;
+ inline const SvxWordLineModeItem &GetWordLineMode() const;
+ inline const SvxContourItem &GetContour() const;
+ inline const SvxCrossedOutItem &GetCrossedOut() const;
+ inline const SvxColorItem &GetColor() const;
+ inline const SvxCharSetColorItem &GetCharSetColor() const;
+ inline const SwFmtCharFmt &GetCharFmt() const;
+ inline const SvxKerningItem &GetKerning() const;
+ inline const SvxCaseMapItem &GetCaseMap() const;
+ inline const SvxLanguageItem &GetLanguage() const;
+ inline const SvxEscapementItem &GetEscapement() const;
+ inline const SvxBlinkItem &GetBlink() const;
+ inline const SvxBrushItem &GetChrBackground() const;
+ inline const SvxNoHyphenItem &GetNoHyphenHere() const;
+ inline const SwFmtSoftHyph &GetSoftHyph() const;
+ inline const SwFmtHardBlank &GetHardBlank() const;
+ inline const SwFmtFld &GetFld() const;
+ inline const SwFmtFtn &GetFtn() const;
+ inline const SwFmtFlyCnt &GetFlyCnt() const;
+ inline const SwTOXMark &GetTOXMark() const;
+ inline const SwFmtRefMark &GetRefMark() const;
+ inline const SwFmtINetFmt &GetINetFmt() const;
+ inline const SvXMLAttrContainerItem &GetXMLAttrContainer() const;
+
+private:
+ SwTxtAttr( const SwTxtAttr& );
+ SwTxtAttr& operator=( const SwTxtAttr& );
+};
+
+class SwTxtAttrEnd : public SwTxtAttr
+{
+protected:
+ xub_StrLen nEnd;
+ SwTxtAttrEnd( const SfxPoolItem& rAttr, USHORT nStart, USHORT nEnd );
+
+public:
+
+ virtual xub_StrLen* GetEnd();
+};
+
+
+// --------------- Inline Implementierungen ------------------------
+
+inline const xub_StrLen* SwTxtAttr::GetEnd() const
+{
+ return ((SwTxtAttr*)this)->GetEnd();
+}
+
+inline const xub_StrLen* SwTxtAttr::GetAnyEnd() const
+{
+ const xub_StrLen* pEnd = GetEnd();
+ return pEnd ? pEnd : &nStart;
+}
+
+inline const SfxPoolItem& SwTxtAttr::GetAttr() const
+{
+ ASSERT( pAttr, "wo ist mein Attribut?" );
+ return *pAttr;
+}
+
+inline const SvxFontItem& SwTxtAttr::GetFont() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_FONT, "Falsche Abfrage" );
+ return (const SvxFontItem&)*pAttr;
+}
+
+inline const SvxPostureItem& SwTxtAttr::GetPosture() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_POSTURE, "Falsche Abfrage" );
+ return (const SvxPostureItem&)*pAttr;
+}
+
+inline const SvxWeightItem& SwTxtAttr::GetWeight() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_WEIGHT, "Falsche Abfrage" );
+ return (const SvxWeightItem&)*pAttr;
+}
+
+inline const SvxUnderlineItem& SwTxtAttr::GetUnderline() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_UNDERLINE, "Falsche Abfrage" );
+ return (const SvxUnderlineItem&)*pAttr;
+}
+
+inline const SvxFontHeightItem& SwTxtAttr::GetFontSize() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_FONTSIZE, "Falsche Abfrage" );
+ return (const SvxFontHeightItem&)*pAttr;
+}
+
+inline const SvxPropSizeItem& SwTxtAttr::GetPropSize() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_PROPORTIONALFONTSIZE, "Falsche Abfrage" );
+ return (const SvxPropSizeItem&)*pAttr;
+}
+
+inline const SvxShadowedItem& SwTxtAttr::GetShadowed() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_SHADOWED, "Falsche Abfrage" );
+ return (const SvxShadowedItem&)*pAttr;
+}
+
+inline const SvxAutoKernItem& SwTxtAttr::GetAutoKern() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_AUTOKERN, "Falsche Abfrage" );
+ return (const SvxAutoKernItem&)*pAttr;
+}
+
+inline const SvxWordLineModeItem& SwTxtAttr::GetWordLineMode() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_WORDLINEMODE, "Falsche Abfrage" );
+ return (const SvxWordLineModeItem&)*pAttr;
+}
+
+inline const SvxContourItem& SwTxtAttr::GetContour() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_CONTOUR, "Falsche Abfrage" );
+ return (const SvxContourItem&)*pAttr;
+}
+
+inline const SvxCrossedOutItem& SwTxtAttr::GetCrossedOut() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_CROSSEDOUT, "Falsche Abfrage" );
+ return (const SvxCrossedOutItem&)*pAttr;
+}
+
+inline const SvxColorItem& SwTxtAttr::GetColor() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_COLOR, "Falsche Abfrage" );
+ return (const SvxColorItem&)*pAttr;
+}
+
+inline const SvxCharSetColorItem& SwTxtAttr::GetCharSetColor() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_CHARSETCOLOR, "Falsche Abfrage" );
+ return (const SvxCharSetColorItem&)*pAttr;
+}
+
+inline const SwFmtCharFmt& SwTxtAttr::GetCharFmt() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_TXTATR_CHARFMT, "Falsche Abfrage" );
+ return (const SwFmtCharFmt&)*pAttr;
+}
+
+inline const SvxKerningItem& SwTxtAttr::GetKerning() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_KERNING, "Falsche Abfrage" );
+ return (const SvxKerningItem&)*pAttr;
+}
+
+inline const SvxCaseMapItem& SwTxtAttr::GetCaseMap() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_CASEMAP, "Falsche Abfrage" );
+ return (const SvxCaseMapItem&)*pAttr;
+}
+
+inline const SvxLanguageItem& SwTxtAttr::GetLanguage() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_LANGUAGE, "Falsche Abfrage" );
+ return (const SvxLanguageItem&)*pAttr;
+}
+
+inline const SvxEscapementItem& SwTxtAttr::GetEscapement() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_ESCAPEMENT, "Falsche Abfrage" );
+ return (const SvxEscapementItem&)*pAttr;
+}
+
+inline const SvxBlinkItem& SwTxtAttr::GetBlink() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_BLINK, "Falsche Abfrage" );
+ return (const SvxBlinkItem&)*pAttr;
+}
+
+inline const SvxBrushItem& SwTxtAttr::GetChrBackground() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_BACKGROUND, "Falsche Abfrage" );
+ return (const SvxBrushItem&)*pAttr;
+}
+
+inline const SvxNoHyphenItem& SwTxtAttr::GetNoHyphenHere() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_CHRATR_NOHYPHEN, "Falsche Abfrage" );
+ return (const SvxNoHyphenItem&)*pAttr;
+}
+
+inline const SwFmtSoftHyph& SwTxtAttr::GetSoftHyph() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_TXTATR_SOFTHYPH, "Falsche Abfrage" );
+ return (const SwFmtSoftHyph&)*pAttr;
+}
+
+inline const SwFmtHardBlank& SwTxtAttr::GetHardBlank() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_TXTATR_HARDBLANK, "Falsche Abfrage" );
+ return (const SwFmtHardBlank&)*pAttr;
+}
+
+inline const SwFmtFld& SwTxtAttr::GetFld() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_TXTATR_FIELD, "Falsche Abfrage" );
+ return (const SwFmtFld&)*pAttr;
+}
+
+inline const SwFmtFtn& SwTxtAttr::GetFtn() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_TXTATR_FTN, "Falsche Abfrage" );
+ return (const SwFmtFtn&)*pAttr;
+}
+
+inline const SwFmtFlyCnt& SwTxtAttr::GetFlyCnt() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_TXTATR_FLYCNT, "Falsche Abfrage" );
+ return (const SwFmtFlyCnt&)*pAttr;
+}
+
+inline const SwTOXMark& SwTxtAttr::GetTOXMark() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_TXTATR_TOXMARK, "Falsche Abfrage" );
+ return (const SwTOXMark&)*pAttr;
+}
+
+inline const SwFmtRefMark& SwTxtAttr::GetRefMark() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_TXTATR_REFMARK, "Falsche Abfrage" );
+ return (const SwFmtRefMark&)*pAttr;
+}
+
+inline const SwFmtINetFmt& SwTxtAttr::GetINetFmt() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_TXTATR_INETFMT, "Falsche Abfrage" );
+ return (const SwFmtINetFmt&)*pAttr;
+}
+
+inline const SvXMLAttrContainerItem& SwTxtAttr::GetXMLAttrContainer() const
+{
+ ASSERT( pAttr && pAttr->Which() == RES_UNKNOWNATR_CONTAINER,
+ "Falsche Abfrage" );
+ return (const SvXMLAttrContainerItem&)*pAttr;
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.23 2000/09/18 16:03:31 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.22 2000/09/08 13:24:29 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.21 2000/05/10 12:47:25 ama
+ Unicode changes
+
+ Revision 1.20 1999/12/07 21:09:51 jp
+ Task #70258#: textattr for XMLAttrContainer
+
+ Revision 1.19 1998/01/23 16:39:36 AMA
+ New: Redlining + Zeichenattribute
+
+
+ Rev 1.18 23 Jan 1998 17:39:36 AMA
+ New: Redlining + Zeichenattribute
+
+ Rev 1.17 04 Aug 1997 16:43:08 MH
+ chg: header
+
+ Rev 1.16 27 Sep 1996 14:21:12 JP
+ bDontExpand Flag in die TxtAttr-Basisklasse verschoben
+
+ Rev 1.15 17 Sep 1996 19:16:44 HJS
+ add: forward
+
+ Rev 1.14 17 Sep 1996 16:51:12 AMA
+ Chg: Zeichenhintergrund als Zeichenattribut
+
+ Rev 1.13 02 Aug 1996 14:50:20 AMA
+ New: INet-Felder werden zu attributiertem Text.
+
+ Rev 1.12 15 Jul 1996 17:16:24 AMA
+ Umbau: NoBlink -> Blink TXTATR -> CHRATR ...
+
+ Rev 1.11 04 Jul 1996 16:33:46 AMA
+ New: Aus dem NoLinebreak wird ein NoBlink-Attribut
+
+ Rev 1.10 24 Jun 1996 18:37:26 MA
+ includes
+
+ Rev 1.9 08 Aug 1995 17:23:26 AMA
+ Umbau: GetPresentation statt GetValueText
+
+ Rev 1.8 19 Jun 1995 16:50:54 MA
+ Umbau fuer daemliche Compiler
+
+ Rev 1.7 27 Jan 1995 17:39:36 AMA
+ Neues Textattribut: SvxAutoKernItem
+
+ Rev 1.6 06 Jan 1995 18:42:36 AMA
+ SEXPORT wg. DLL
+
+ Rev 1.5 02 Nov 1994 12:18:16 AMA
+ Reimport Absatzattr. als Svx (paraitem.hxx)
+ SvxSizeItem->SvxFontHeight (textitem.hxx)
+
+ Rev 1.4 14 Oct 1994 14:18:34 AMA
+ Umstellung auf SvxItems
+
+ Rev 1.3 07 Sep 1994 17:45:02 SWG
+ Umstellung Attribute
+
+ Rev 1.2 29 Aug 1994 19:30:38 JP
+ DTOR muss virtual sein.
+
+ Rev 1.1 29 Aug 1994 10:02:48 JP
+ Ist der Return-Wert eine Referenz, muss auch dereferenziert werden!
+
+ Rev 1.0 25 Aug 1994 16:54:32 JP
+ Umstellung Attribute (von SwHint -> SfxPoolItem)
+
+*************************************************************************/
+ // #ifndef _TXATBASE_HXX
+#endif
diff --git a/sw/inc/txtatr.hxx b/sw/inc/txtatr.hxx
new file mode 100644
index 000000000000..8a7e2935168f
--- /dev/null
+++ b/sw/inc/txtatr.hxx
@@ -0,0 +1,427 @@
+/*************************************************************************
+ *
+ * $RCSfile: txtatr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TXTATR_HXX
+#define _TXTATR_HXX
+
+#ifndef _SV_GEN_HXX
+#include <tools/gen.hxx>
+#endif
+#ifndef _TOOLS_COLOR_HXX
+#include <tools/color.hxx>
+#endif
+#ifndef _LANG_HXX
+#include <tools/lang.hxx>
+#endif
+#ifndef _SV_FONTTYPE_HXX //autogen
+#include <vcl/fonttype.hxx>
+#endif
+#ifndef _SVX_SVXENUM_HXX //autogen
+#include <svx/svxenum.hxx>
+#endif
+
+#ifndef _TXATBASE_HXX
+#include <txatbase.hxx> // SwTxtAttr/SwTxtAttrEnd
+#endif
+
+class SwTxtNode; // fuer SwTxtFld
+class SvxFont;
+class SwCharSetCol;
+
+// ATT_FONT ***********************************************************
+
+class SwTxtFont: public SwTxtAttrEnd
+{
+ // Hier werden die alten Werte aus dem Font bei ChgFnt() gemerkt.
+ FontFamily ePrevFamily;
+ FontPitch ePrevPitch;
+ CharSet ePrevCharSet;
+ String aPrevName;
+ String aPrevStyleName;
+public:
+ SwTxtFont( const SvxFontItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+ ~SwTxtFont( );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_POSTURE ***********************************************************
+
+class SwTxtPosture : public SwTxtAttrEnd
+{
+ FontItalic ePrevPosture;
+public:
+ SwTxtPosture( const SvxPostureItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_WEIGHT ************************************************************
+
+class SwTxtWeight : public SwTxtAttrEnd
+{
+ // Hier merkt es sich das SV-Attribut Weight aus dem Font.
+ FontWeight ePrevWeight;
+public:
+ SwTxtWeight( const SvxWeightItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_SHADOWED **********************************************************
+
+class SwTxtShadowed : public SwTxtAttrEnd
+{
+ BOOL bPrevShadow;
+public:
+ SwTxtShadowed( const SvxShadowedItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_AUTOKERN **********************************************************
+
+class SwTxtAutoKern : public SwTxtAttrEnd
+{
+ BOOL bPrevAutoKern;
+public:
+ SwTxtAutoKern( const SvxAutoKernItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+};
+
+// ATT_WORDLINEMODE **********************************************************
+
+class SwTxtWordLineMode : public SwTxtAttrEnd
+{
+ BOOL bPrevWordLineMode;
+public:
+ SwTxtWordLineMode( const SvxWordLineModeItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_CONTOUR ***********************************************************
+
+class SwTxtContour : public SwTxtAttrEnd
+{
+ BOOL bPrevContour;
+public:
+ SwTxtContour( const SvxContourItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_CROSSEDOUT ********************************************************
+
+class SwTxtCrossedOut : public SwTxtAttrEnd
+{
+ FontStrikeout ePrevCrossedOut;
+public:
+ SwTxtCrossedOut( const SvxCrossedOutItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_UNDERLINE *********************************************************
+
+class SwTxtUnderline : public SwTxtAttrEnd
+{
+ FontUnderline ePrevUnderline;
+public:
+ SwTxtUnderline( const SvxUnderlineItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_SIZE **************************************************************
+
+class SwTxtSize : public SwTxtAttrEnd
+{
+ Size aPrevSize;
+public:
+ SwTxtSize( const SvxFontHeightItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_COLOR *************************************************************
+
+class SwTxtColor : public SwTxtAttrEnd
+{
+ friend class SwTxtCharSetColor;
+ Color aPrevColor;
+public:
+ SwTxtColor( const SvxColorItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_CHARSETCOLOR ******************************************************
+
+class SwTxtCharSetColor : public SwTxtAttrEnd
+{
+ SwCharSetCol *pPrevCharSetCol;
+public:
+ SwTxtCharSetColor( const SvxCharSetColorItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+ ~SwTxtCharSetColor();
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_CHARFMT *********************************************
+
+class SwTxtCharFmt : public SwTxtAttrEnd
+{
+ SvxFont* pPrevFont;
+ const void* pFontNo;
+ SwTxtNode* pMyTxtNd;
+ Color* pPrevColor;
+ USHORT nFntIndex;
+ BOOL bPrevNoHyph : 1;
+ BOOL bPrevBlink : 1;
+ BOOL bPrevURL : 1;
+ BOOL bColor : 1;
+
+public:
+ SwTxtCharFmt( const SwFmtCharFmt& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+ ~SwTxtCharFmt( );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+
+ // werden vom SwFmtCharFmt hierher weitergeleitet
+ virtual void Modify( SfxPoolItem*, SfxPoolItem* ); // SwClient
+ virtual BOOL GetInfo( SfxPoolItem& rInfo ) const;
+
+ // erfrage und setze den TxtNode Pointer
+ inline const SwTxtNode& GetTxtNode() const;
+ void ChgTxtNode( const SwTxtNode* pNew ) { pMyTxtNd = (SwTxtNode*)pNew; }
+
+};
+
+
+// ATT_KERNING ***********************************************************
+
+class SwTxtKerning : public SwTxtAttrEnd
+{
+ short nPrevKern;
+public:
+ SwTxtKerning( const SvxKerningItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_CASEMAP ***********************************************************
+
+class SwTxtCaseMap : public SwTxtAttrEnd
+{
+ SvxCaseMap ePrevCaseMap;
+public:
+ SwTxtCaseMap( const SvxCaseMapItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_LANGUAGE **********************************************************
+
+class SwTxtLanguage : public SwTxtAttrEnd
+{
+ LanguageType ePrevLang;
+public:
+ SwTxtLanguage( const SvxLanguageItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+};
+
+
+// ATT_ESCAPEMENT ********************************************************
+
+class SwTxtEscapement : public SwTxtAttrEnd
+{
+ short nPrevEsc;
+ BYTE nPrevPropr;
+
+public:
+ SwTxtEscapement( const SvxEscapementItem& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_BLINK ***********************
+
+class SwTxtBlink : public SwTxtAttrEnd
+{
+ BOOL bPrev;
+public:
+ SwTxtBlink( const SvxBlinkItem& rAttr,
+ xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_BACKGROUND ***********************
+
+class SwTxtBackground : public SwTxtAttrEnd
+{
+ Color *pPrevColor;
+public:
+ SwTxtBackground( const SvxBrushItem& rAttr,
+ xub_StrLen nStart, xub_StrLen nEnd );
+ ~SwTxtBackground();
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+ virtual void ChgTxtAttr( SwTxtAttr & );
+ virtual void RstTxtAttr( SwTxtAttr & );
+};
+
+// ATT_NOHYPHENHERE **************************
+
+class SwTxtNoHyphenHere : public SwTxtAttrEnd
+{
+ BOOL bPrev;
+public:
+ SwTxtNoHyphenHere( const SvxNoHyphenItem& rAttr,
+ xub_StrLen nStart, xub_StrLen nEnd );
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+};
+
+// ATT_HARDBLANK ******************************
+
+class SwTxtHardBlank : public SwTxtAttr
+{
+ sal_Unicode cChar;
+public:
+ SwTxtHardBlank( const SwFmtHardBlank& rAttr, xub_StrLen nStart );
+ inline sal_Unicode GetChar() const { return cChar; }
+};
+
+
+// ATT_XNLCONTAINERITEM ******************************
+
+class SwTxtXMLAttrContainer : public SwTxtAttrEnd
+{
+public:
+ SwTxtXMLAttrContainer( const SvXMLAttrContainerItem& rAttr,
+ xub_StrLen nStart, xub_StrLen nEnd );
+};
+
+
+
+// --------------- Inline Implementierungen ------------------------
+
+
+inline const SwTxtNode& SwTxtCharFmt::GetTxtNode() const
+{
+ ASSERT( pMyTxtNd, "SwTxtCharFmt:: wo ist mein TextNode?" );
+ return *pMyTxtNd;
+}
+
+
+
+#endif
diff --git a/sw/inc/txtflcnt.hxx b/sw/inc/txtflcnt.hxx
new file mode 100644
index 000000000000..334735e52b19
--- /dev/null
+++ b/sw/inc/txtflcnt.hxx
@@ -0,0 +1,104 @@
+/*************************************************************************
+ *
+ * $RCSfile: txtflcnt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TXTFLCNT_HXX
+#define _TXTFLCNT_HXX
+
+#ifndef _TXATBASE_HXX //autogen
+#include <txatbase.hxx>
+#endif
+
+class SwFlyInCntFrm;
+class SwFrm;
+class SwTxtNode;
+class SwDoc;
+
+// SWTXT_FLYCNT ********************************
+// Attribut fuer zeilengebundene Frames (ohne Endindex)
+
+class SwTxtFlyCnt : public SwTxtAttr
+{
+ SwFlyInCntFrm *_GetFlyFrm( const SwFrm *pCurrFrm );
+
+public:
+ SwTxtFlyCnt( const SwFmtFlyCnt& rAttr, xub_StrLen nStart );
+
+ // Setzt den Anker im pFmt und
+ void SetAnchor( const SwTxtNode *pNode );
+
+ inline SwFlyInCntFrm *GetFlyFrm( const SwFrm *pCurrFrm );
+ inline const SwFlyInCntFrm *GetFlyFrm( const SwFrm *pCurrFrm ) const;
+
+ // erzeugt sich ein neues FlyFrameFormat
+ void CopyFlyFmt( SwDoc* pDoc );
+};
+
+inline SwFlyInCntFrm *SwTxtFlyCnt::GetFlyFrm( const SwFrm *pCurrFrm )
+{
+ return _GetFlyFrm( pCurrFrm );
+}
+
+inline const SwFlyInCntFrm *SwTxtFlyCnt::GetFlyFrm( const SwFrm *pCurrFrm ) const
+{
+ return ((SwTxtFlyCnt*)this)->_GetFlyFrm( pCurrFrm );
+}
+
+#endif
+
diff --git a/sw/inc/txtfld.hxx b/sw/inc/txtfld.hxx
new file mode 100644
index 000000000000..4e73a9a46fe7
--- /dev/null
+++ b/sw/inc/txtfld.hxx
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * $RCSfile: txtfld.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TXTFLD_HXX
+#define _TXTFLD_HXX
+
+#ifndef _TXATBASE_HXX //autogen
+#include <txatbase.hxx>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+class SwTxtNode;
+
+// ATT_FLD ***********************************
+
+class SwTxtFld : public SwTxtAttr
+{
+ String aExpand;
+ SwTxtNode *pMyTxtNd;
+public:
+ SwTxtFld( const SwFmtFld& rAttr, xub_StrLen nStart );
+ ~SwTxtFld();
+
+ void CopyFld( SwTxtFld *pDest ) const;
+ void Expand();
+ inline void ExpandAlways();
+
+ // erfrage und setze den TxtNode Pointer
+ const SwTxtNode* GetpTxtNode() const { return pMyTxtNd; }
+ inline const SwTxtNode& GetTxtNode() const;
+ void ChgTxtNode( const SwTxtNode* pNew ) { pMyTxtNd = (SwTxtNode*)pNew; }
+};
+
+inline const SwTxtNode& SwTxtFld::GetTxtNode() const
+{
+ ASSERT( pMyTxtNd, "SwTxtFld:: wo ist mein TextNode?" );
+ return *pMyTxtNd;
+}
+
+inline void SwTxtFld::ExpandAlways()
+{
+ aExpand += ' ';
+ Expand();
+}
+
+#endif
+
diff --git a/sw/inc/txtftn.hxx b/sw/inc/txtftn.hxx
new file mode 100644
index 000000000000..c04d0e2c7cc8
--- /dev/null
+++ b/sw/inc/txtftn.hxx
@@ -0,0 +1,121 @@
+/*************************************************************************
+ *
+ * $RCSfile: txtftn.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TXTFTN_HXX
+#define _TXTFTN_HXX
+
+#ifndef _TXATBASE_HXX //autogen
+#include <txatbase.hxx>
+#endif
+
+class SwNodeIndex;
+class SwTxtNode;
+class SwNodes;
+class SwDoc;
+
+// ATT_FTN **********************************************************
+
+class SwTxtFtn : public SwTxtAttr
+{
+ SwNodeIndex *pStartNode;
+ SwTxtNode* pMyTxtNd;
+ USHORT nSeqNo;
+
+ // Zuweisung und Copy-Ctor sind nicht erlaubt.
+ SwTxtFtn& operator=( const SwTxtFtn &rTxtFtn );
+ SwTxtFtn( const SwTxtFtn &rTxtFtn );
+
+public:
+ SwTxtFtn( const SwFmtFtn& rAttr, xub_StrLen nStart );
+ ~SwTxtFtn();
+
+ inline SwNodeIndex *GetStartNode() const { return pStartNode; }
+ void SetStartNode( const SwNodeIndex *pNode, BOOL bDelNodes = TRUE );
+ void SetNumber( const USHORT nNumber, const String* = 0 );
+ void CopyFtn( SwTxtFtn *pDest );
+
+ // erfrage und setze den TxtNode Pointer
+ inline const SwTxtNode& GetTxtNode() const;
+ void ChgTxtNode( const SwTxtNode* pNew ) { pMyTxtNd = (SwTxtNode*)pNew; }
+
+ // lege eine neue leere TextSection fuer diese Fussnote an
+ void MakeNewTextSection( SwNodes& rNodes );
+
+ // loesche die FtnFrame aus der Seite
+ void DelFrms();
+ // bedingten Absatzvorlagen checken
+ void CheckCondColl();
+
+ // fuer die Querverweise auf Fussnoten
+ USHORT SetSeqRefNo();
+ void SetSeqNo( USHORT n ) { nSeqNo = n; } // fuer die Reader
+ USHORT GetSeqRefNo() const { return nSeqNo; }
+
+ static void SetUniqueSeqRefNo( SwDoc& rDoc );
+};
+
+inline const SwTxtNode& SwTxtFtn::GetTxtNode() const
+{
+ ASSERT( pMyTxtNd, "SwTxtFtn:: wo ist mein TextNode?" );
+ return *pMyTxtNd;
+}
+
+#endif
+
diff --git a/sw/inc/txtinet.hxx b/sw/inc/txtinet.hxx
new file mode 100644
index 000000000000..a39d7fd1328b
--- /dev/null
+++ b/sw/inc/txtinet.hxx
@@ -0,0 +1,127 @@
+/*************************************************************************
+ *
+ * $RCSfile: txtinet.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TXTINET_HXX
+#define _TXTINET_HXX
+
+#ifndef _TXATBASE_HXX //autogen
+#include <txatbase.hxx>
+#endif
+#ifndef _CALBCK_HXX //autogen
+#include <calbck.hxx>
+#endif
+
+class SvxFont;
+class SwTxtNode;
+class SwCharFmt;
+class Color;
+
+// ATT_INETFMT *********************************************
+
+class SwTxtINetFmt : public SwTxtAttrEnd, public SwClient
+{
+ SvxFont* pPrevFont;
+ Color* pPrevBackColor;
+ SwTxtNode* pMyTxtNd;
+ const void* pFontNo;
+ USHORT nFntIndex;
+ BOOL bPrevNoHyph : 1;
+ BOOL bPrevBlink : 1;
+ BOOL bPrevURL : 1;
+ BOOL bVisited : 1; // Besuchter Link?
+ BOOL bValidVis : 1; // Ist das bVisited-Flag gueltig?
+ BOOL bColor : 1;
+
+public:
+ SwTxtINetFmt( const SwFmtINetFmt& rAttr, xub_StrLen nStart, xub_StrLen nEnd );
+ virtual ~SwTxtINetFmt();
+ TYPEINFO();
+
+ virtual void ChgFnt(SwFont *);
+ virtual void RstFnt(SwFont *);
+
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+ virtual BOOL GetInfo( SfxPoolItem& rInfo ) const;
+
+ // erfrage und setze den TxtNode Pointer
+ const SwTxtNode* GetpTxtNode() const { return pMyTxtNd; }
+ inline const SwTxtNode& GetTxtNode() const;
+ void ChgTxtNode( const SwTxtNode* pNew ) { pMyTxtNd = (SwTxtNode*)pNew; }
+
+ SwCharFmt* GetCharFmt();
+ const SwCharFmt* GetCharFmt() const
+ { return ((SwTxtINetFmt*)this)->GetCharFmt(); }
+
+ const BOOL IsVisited() const { return bVisited; }
+ void SetVisited( BOOL bNew ) { bVisited = bNew; }
+
+ const BOOL IsValidVis() const { return bValidVis; }
+ void SetValidVis( BOOL bNew ) { bValidVis = bNew; }
+
+ BOOL IsProtect() const;
+};
+inline const SwTxtNode& SwTxtINetFmt::GetTxtNode() const
+{
+ ASSERT( pMyTxtNd, "SwTxtINetFmt:: wo ist mein TextNode?" );
+ return *pMyTxtNd;
+}
+
+#endif
+
diff --git a/sw/inc/txtrfmrk.hxx b/sw/inc/txtrfmrk.hxx
new file mode 100644
index 000000000000..52e6ea84a5e6
--- /dev/null
+++ b/sw/inc/txtrfmrk.hxx
@@ -0,0 +1,98 @@
+/*************************************************************************
+ *
+ * $RCSfile: txtrfmrk.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TXTRFMRK_HXX
+#define _TXTRFMRK_HXX
+
+#ifndef _TXATBASE_HXX //autogen
+#include <txatbase.hxx>
+#endif
+
+class SwTxtNode;
+
+// SWTXT_REFMARK *************************************
+// Attribut fuer Inhalts-/Positions-Referenzen im Text
+
+class SwTxtRefMark : public SwTxtAttrEnd
+{
+ SwTxtNode* pMyTxtNd;
+ USHORT* pEnd; // fuer InhaltsReferenz / PositionRef. ohne Ende
+public:
+ SwTxtRefMark( const SwFmtRefMark& rAttr,
+ xub_StrLen nStart, xub_StrLen * pEnd = 0 );
+
+ virtual xub_StrLen *GetEnd(); // SwTxtAttr
+ inline const xub_StrLen* GetEnd() const { return pEnd; }
+
+ virtual void ChgFnt(SwFont *); // SwTxtAttr
+ virtual void RstFnt(SwFont *); // SwTxtAttr
+
+ // erfrage und setze den TxtNode Pointer
+ inline const SwTxtNode& GetTxtNode() const;
+ void ChgTxtNode( const SwTxtNode* pNew ) { pMyTxtNd = (SwTxtNode*)pNew; }
+};
+inline const SwTxtNode& SwTxtRefMark::GetTxtNode() const
+{
+ ASSERT( pMyTxtNd, "SwTxtRefMark:: wo ist mein TextNode?" );
+ return *pMyTxtNd;
+}
+
+#endif
+
diff --git a/sw/inc/txttxmrk.hxx b/sw/inc/txttxmrk.hxx
new file mode 100644
index 000000000000..a65fa3ce33c7
--- /dev/null
+++ b/sw/inc/txttxmrk.hxx
@@ -0,0 +1,104 @@
+/*************************************************************************
+ *
+ * $RCSfile: txttxmrk.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TXTTXMRK_HXX
+#define _TXTTXMRK_HXX
+
+#ifndef _TXATBASE_HXX //autogen
+#include <txatbase.hxx>
+#endif
+
+class SwTxtNode;
+class SwDoc;
+
+// SWTXT_TOXMARK *******************************
+// Attribut fuer die Verzeichnisse
+
+class SwTxtTOXMark : public SwTxtAttrEnd
+{
+ xub_StrLen* pEnd; // wenn AlternativText vom SwTOXMark dann 0 !!
+ SwTxtNode* pMyTxtNd;
+public:
+ SwTxtTOXMark( const SwTOXMark& rAttr,
+ xub_StrLen nStart, xub_StrLen * pEnd = 0 );
+ virtual ~SwTxtTOXMark();
+
+ virtual xub_StrLen *GetEnd(); // SwTxtAttr
+ inline const xub_StrLen* GetEnd() const { return pEnd; }
+
+ virtual void ChgFnt(SwFont *); // SwTxtAttr
+ virtual void RstFnt(SwFont *); // SwTxtAttr
+
+ void CopyTOXMark( SwDoc* pDestDoc );
+
+ // erfrage und setze den TxtNode Pointer
+ inline const SwTxtNode* GetpTxtNd() const { return pMyTxtNd; }
+ inline const SwTxtNode& GetTxtNode() const;
+ void ChgTxtNode( const SwTxtNode* pNew ) { pMyTxtNd = (SwTxtNode*)pNew; }
+};
+
+inline const SwTxtNode& SwTxtTOXMark::GetTxtNode() const
+{
+ ASSERT( pMyTxtNd, "SwTxtTOXMark:: wo ist mein TextNode?" );
+ return *pMyTxtNd;
+}
+
+#endif
+
diff --git a/sw/inc/undobj.hxx b/sw/inc/undobj.hxx
new file mode 100644
index 000000000000..6064c6377af2
--- /dev/null
+++ b/sw/inc/undobj.hxx
@@ -0,0 +1,1624 @@
+/*************************************************************************
+ *
+ * $RCSfile: undobj.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNDOBJ_HXX
+#define _UNDOBJ_HXX
+
+#ifndef _SVMEMPOOL_HXX //autogen
+#include <tools/mempool.hxx>
+#endif
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_USHORTS
+#define _SVSTDARR_ULONGS
+#define _SVSTDARR_BOOLS
+#define _SVSTDARR_BYTES
+#define _SVSTDARR_USHORTSSORT
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+#ifndef _REDLENUM_HXX
+#include <redlenum.hxx>
+#endif
+
+class SwUndoIter;
+class SwHistory;
+
+class SwIndex;
+class SwPaM;
+struct SwPosition;
+class SwDoc;
+class SwNodes;
+class SwFmt;
+class SwFmtColl;
+class SwTxtFmtColl;
+class SwTxtNode;
+class SwpHints;
+class SwBookmark;
+class SwTableNode;
+class SwTable;
+class SwTableBox;
+struct SwSortOptions;
+class SwFrmFmt;
+class SwHstryBookmark;
+class SwSection;
+class SwSectionFmt;
+class SvxTabStopItem;
+class SwNumSection;
+class SwDDEFieldType;
+class Graphic;
+class SwGrfNode;
+class SwUndos;
+class SwUndoRange;
+class SwFtnInfo;
+class SwEndNoteInfo;
+class SwNodeIndex;
+class SwNodeRange;
+
+struct SwUndoGroupObjImpl;
+class SdrMarkList;
+class SdrObject;
+class SdrObjGroup;
+class SdrUndoAction;
+class SwDrawFrmFmt;
+class _SaveTable;
+class SwTableAutoFmt;
+class SwSelBoxes;
+class SwTableSortBoxes;
+class SwUndoSaveSections;
+class SwUndoMoves;
+class SwStartNode;
+class _SaveFlyArr;
+class SwTblToTxtSaves;
+class SwRedlineData;
+class SwRedlineSaveData;
+class SwRedline;
+
+#ifndef PRODUCT
+class Writer;
+class SwUndo;
+#define OUT_UNDOBJ( name ) \
+ friend Writer& OutUndo_ ## name( Writer&, const SwUndo& );
+#else
+#define OUT_UNDOBJ( name )
+#endif
+
+
+typedef SwRedlineSaveData* SwRedlineSaveDataPtr;
+SV_DECL_PTRARR_DEL( SwRedlineSaveDatas, SwRedlineSaveDataPtr, 8, 8 )
+
+class SwUndo
+{
+ USHORT nId;
+ USHORT nOrigRedlineMode;
+protected:
+ void RemoveIdxFromSection( SwDoc&, ULONG nSttIdx, ULONG* pEndIdx = 0 );
+ void RemoveIdxFromRange( SwPaM& rPam, BOOL bMoveNext );
+ void RemoveIdxRel( ULONG, const SwPosition& );
+
+ void SetId( USHORT nNew ) { nId = nNew; }
+
+ static BOOL CanRedlineGroup( SwRedlineSaveDatas& rCurr,
+ const SwRedlineSaveDatas& rCheck,
+ BOOL bCurrIsEnd );
+public:
+ SwUndo( USHORT nI ) { nId = nI; nOrigRedlineMode = REDLINE_NONE; }
+ virtual ~SwUndo();
+
+ USHORT GetId() const { return nId; }
+ virtual void Undo( SwUndoIter& ) = 0;
+ virtual void Redo( SwUndoIter& ) = 0;
+ virtual void Repeat( SwUndoIter& );
+
+ // das UndoObject merkt sich, welcher Mode eingeschaltet war.
+ // In Undo/Redo/Repeat wird dann immer auf diesen zurueck geschaltet
+ USHORT GetRedlineMode() const { return nOrigRedlineMode; }
+ void SetRedlineMode( USHORT eMode ) { nOrigRedlineMode = eMode; }
+
+ // sicher und setze die RedlineDaten
+ static BOOL FillSaveData( const SwPaM& rRange, SwRedlineSaveDatas& rSData,
+ BOOL bDelRange = TRUE, BOOL bCopyNext = TRUE );
+ static BOOL FillSaveDataForFmt( const SwPaM& , SwRedlineSaveDatas& );
+ static void SetSaveData( SwDoc& rDoc, const SwRedlineSaveDatas& rSData );
+ static BOOL HasHiddenRedlines( const SwRedlineSaveDatas& rSData );
+};
+
+
+// diese Klasse muss in ein Undo-Object vererbt werden, wenn dieses Inhalt
+// fuers Redo/Undo ... speichert
+class SwUndoSaveCntnt
+{
+protected:
+
+ SwHistory* pHistory;
+
+ // wird fuer das loeschen von Inhalt benoetigt. Fuer das ReDo werden
+ // Inhalte in das UndoNodesArray verschoben. Diese Methoden fuegen
+ // am Ende eines TextNodes ein Trenner fuer die Attribute. Damit werden
+ // Attribute nicht expandiert.
+ // MoveTo.. verschiebt aus dem NodesArray in das UndoNodesArray
+ // MoveFrom.. verschiebt aus dem UndoNodesArray in das NodesArray
+ void MoveToUndoNds( SwPaM& rPam,
+ SwNodeIndex* pNodeIdx = 0, SwIndex* pCntIdx = 0,
+ ULONG* pEndNdIdx = 0, xub_StrLen * pEndCntIdx = 0 );
+ void MoveFromUndoNds( SwDoc& rDoc, ULONG nNodeIdx, xub_StrLen nCntntIdx,
+ SwPosition& rInsPos,
+ ULONG* pEndNdIdx = 0, xub_StrLen * pEndCntIdx = 0 );
+
+ // diese beiden Methoden bewegen den SPoint vom Pam zurueck/vor. Damit
+ // kann fuer ein Undo/Redo ein Bereich aufgespannt werden. (Der
+ // SPoint liegt dann vor dem manipuliertem Bereich !!)
+ // Das Flag gibt an, ob noch vorm SPoint Inhalt steht.
+ BOOL MovePtBackward( SwPaM& rPam );
+ void MovePtForward( SwPaM& rPam, BOOL bMvBkwrd );
+
+ // vor dem Move ins UndoNodes-Array muss dafuer gesorgt werden, das
+ // die Inhaltstragenden Attribute aus dem Nodes-Array entfernt werden.
+ enum DelCntntType{ DELCNT_FTN = 0x01,
+ DELCNT_FLY = 0x02,
+ DELCNT_TOC = 0x04,
+ DELCNT_BKM = 0x08,
+ DELCNT_ALL = 0x0F,
+ DELCNT_CHKNOCNTNT = 0x80 // nur den NodeIndex beachten
+ };
+ void DelCntntIndex( const SwPosition& pMark, const SwPosition& pPoint,
+ DelCntntType nDelCntntType = DELCNT_ALL );
+
+public:
+ SwUndoSaveCntnt();
+ ~SwUndoSaveCntnt();
+ OUT_UNDOBJ( SaveCntnt )
+};
+
+
+// sicher eine vollstaendige Section im Nodes-Array
+class SwUndoSaveSection : private SwUndoSaveCntnt
+{
+ SwNodeIndex *pMvStt;
+ SwRedlineSaveDatas* pRedlSaveData;
+ ULONG nMvLen; // Index ins UndoNodes-Array
+ ULONG nStartPos;
+
+protected:
+ SwNodeIndex* GetMvSttIdx() const { return pMvStt; }
+ ULONG GetMvNodeCnt() const { return nMvLen; }
+
+public:
+ SwUndoSaveSection();
+ ~SwUndoSaveSection();
+
+ void SaveSection( SwDoc* pDoc, const SwNodeIndex& rSttIdx );
+ void SaveSection( SwDoc* pDoc, const SwNodeRange& rRange );
+ void RestoreSection( SwDoc* pDoc, SwNodeIndex* pIdx, USHORT nSectType );
+ void RestoreSection( SwDoc* pDoc, const SwNodeIndex& rInsPos );
+
+ const SwHistory* GetHistory() const { return pHistory; }
+ SwHistory* GetHistory() { return pHistory; }
+ OUT_UNDOBJ( SaveSection )
+};
+
+
+// Diese Klasse speichert den Pam als USHORT's und kann diese wieder zu
+// einem PaM zusammensetzen
+class SwUndRng
+{
+public:
+ ULONG nSttNode, nEndNode;
+ xub_StrLen nSttCntnt, nEndCntnt;
+
+ SwUndRng();
+ SwUndRng( const SwPaM& );
+
+ void SetValues( const SwPaM& rPam );
+ void SetPaM( SwPaM&, BOOL bCorrToCntnt = FALSE ) const;
+ void SetPaM( SwUndoIter&, BOOL bCorrToCntnt = FALSE ) const;
+};
+
+
+class SwUndoStart: public SwUndo
+{
+ // Um innerhalb von Undo zuerkennen, wann ein Start vorliegt, gibt
+ // GetId() immer die UNDO_START zurueck. Die UserId kann ueber
+ // GetUserId() erfragt werden.
+ USHORT nUserId;
+ // fuer die "Verpointerung" von Start- und End-Undos
+ USHORT nEndOffset;
+public:
+ SwUndoStart( USHORT nId );
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ USHORT GetUserId() const { return nUserId; }
+ // Setzen vom End-Undo-Offset geschieht im Doc::EndUndo
+ USHORT GetEndOffset() const { return nEndOffset; }
+ void SetEndOffset( USHORT n ) { nEndOffset = n; }
+ OUT_UNDOBJ( Start )
+};
+
+class SwUndoEnd: public SwUndo
+{
+ // Um innerhalb von Undo zuerkennen, wann ein Ende vorliegt, gibt
+ // GetId() immer die UNDO_END zurueck. Die UserId kann ueber
+ // GetUserId() erfragt werden.
+ USHORT nUserId;
+ // fuer die "Verpointerung" von Start- und End-Undos
+ USHORT nSttOffset;
+public:
+ SwUndoEnd( USHORT nId );
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ USHORT GetUserId() const { return nUserId; }
+ // Setzen vom Start-Undo-Offset geschieht im Doc::EndUndo
+ USHORT GetSttOffset() const { return nSttOffset; }
+ void SetSttOffset( USHORT n ) { nSttOffset = n; }
+ OUT_UNDOBJ( End )
+};
+
+class SwUndoInsert: public SwUndo, private SwUndoSaveCntnt
+{
+ SwPosition *pPos; // Inhalt fuers Redo
+ String* pTxt;
+ SwRedlineData* pRedlData;
+ ULONG nNode;
+ xub_StrLen nCntnt, nLen;
+ BOOL bIsWordDelim : 1;
+ BOOL bIsAppend : 1;
+
+ friend class SwDoc; // eigentlich nur SwDoc::Insert( String )
+ BOOL CanGrouping( sal_Unicode cIns );
+ BOOL CanGrouping( const SwPosition& rPos );
+
+public:
+ SwUndoInsert( const SwNodeIndex& rNode, xub_StrLen nCntnt, xub_StrLen nLen,
+ BOOL bWDelim = TRUE );
+ SwUndoInsert( const SwNodeIndex& rNode );
+ virtual ~SwUndoInsert();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+
+ BOOL CanGrouping( const SwPosition&, sal_Unicode cIns );
+ OUT_UNDOBJ( Insert )
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwUndoInsert)
+};
+
+
+class SwUndoDelete: public SwUndo, private SwUndRng, private SwUndoSaveCntnt
+{
+ SwNodeIndex* pMvStt; // Position der Nodes im UndoNodes-Array
+ String *pSttStr, *pEndStr;
+ SwRedlineData* pRedlData;
+ SwRedlineSaveDatas* pRedlSaveData;
+
+ ULONG nNode;
+ ULONG nNdDiff; // Differenz von Nodes vor-nach Delete
+ ULONG nSectDiff; // Diff. von Nodes vor/nach Move mit SectionNodes
+ USHORT nSetPos;
+
+ BOOL bGroup : 1; // TRUE: ist schon eine Gruppe; wird in CanGrouping() ausgwertet !!
+ BOOL bBackSp : 1; // TRUE: wenn Gruppierung und der Inhalt davor geloescht wird
+ BOOL bJoinNext: 1; // TRUE: wenn der Bereich von Oben nach unten geht
+ BOOL bSectNdFnd : 1; // TRUE: Sonderbehandlung fuer SectionNodes
+ BOOL bMvAroundSectNd :1;// TRUE: Sonderbehandlung fuer SectionNodes
+ BOOL bTblDelLastNd : 1; // TRUE: TextNode hinter der Tabelle einf./loeschen
+ BOOL bDelFullPara : 1; // TRUE: gesamte Nodes wurden geloescht
+ BOOL bResetPgDesc : 1; // TRUE: am nachfolgenden Node das PgDsc zuruecksetzen
+ BOOL bResetPgBrk : 1; // TRUE: am nachfolgenden Node das PgBreak zuruecksetzen
+
+ BOOL SaveCntnt( const SwPosition* pStt, const SwPosition* pEnd,
+ SwTxtNode* pSttTxtNd, SwTxtNode* pEndTxtNd );
+public:
+ SwUndoDelete( SwPaM&, BOOL bFullPara = FALSE );
+ virtual ~SwUndoDelete();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ BOOL CanGrouping( SwDoc*, const SwPaM& );
+
+ void SetTblDelLastNd() { bTblDelLastNd = TRUE; }
+
+ // fuer die PageDesc/PageBreak Attribute einer Tabelle
+ void SetPgBrkFlags( BOOL bPageBreak, BOOL bPageDesc )
+ { bResetPgDesc = bPageDesc; bResetPgBrk = bPageBreak; }
+
+ OUT_UNDOBJ( Delete )
+
+ DECL_FIXEDMEMPOOL_NEWDEL(SwUndoDelete)
+};
+
+
+class SwUndoOverwrite: public SwUndo, private SwUndoSaveCntnt
+{
+ String aDelStr, aInsStr;
+ SwRedlineSaveDatas* pRedlSaveData;
+ ULONG nSttNode;
+ xub_StrLen nSttCntnt;
+ BOOL bInsChar : 1; // kein Overwrite mehr; sondern Insert
+ BOOL bGroup : 1; // TRUE: ist schon eine Gruppe; wird in
+ // CanGrouping() ausgwertet !!
+public:
+ SwUndoOverwrite( SwDoc*, SwPosition&, sal_Unicode cIns );
+ virtual ~SwUndoOverwrite();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ BOOL CanGrouping( SwDoc*, SwPosition&, sal_Unicode cIns );
+ OUT_UNDOBJ( Overwrite )
+};
+
+
+class SwUndoSplitNode: public SwUndo
+{
+ SwHistory* pHistory;
+ SwRedlineData* pRedlData;
+ ULONG nNode;
+ xub_StrLen nCntnt;
+ BOOL bTblFlag : 1;
+ BOOL bChkTblStt : 1;
+public:
+ SwUndoSplitNode( SwDoc* pDoc, const SwPosition& rPos, BOOL bChkTbl );
+ virtual ~SwUndoSplitNode();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ void SetTblFlag() { bTblFlag = TRUE; }
+ OUT_UNDOBJ( SplitNode )
+};
+
+
+class SwUndoMove : public SwUndo, private SwUndRng, private SwUndoSaveCntnt
+{
+ // nDest.. - Bereich, in den verschoben wurde (nach dem Move!)
+ // nIns.. - Position, von der verschoben wurde und wieder die neue InsPos. ist
+ // nMv.. Position auf die verschoben wird (vor dem Move!) ; fuers REDO
+ ULONG nDestSttNode, nDestEndNode, nInsPosNode, nMvDestNode;
+ xub_StrLen nDestSttCntnt, nDestEndCntnt, nInsPosCntnt, nMvDestCntnt;
+
+ USHORT nFtnStt; // StartPos der Fussnoten in der History
+
+ BOOL bJoinNext : 1,
+ bJoinPrev : 1,
+ bMoveRange : 1;
+
+ void DelFtn( const SwPaM& );
+public:
+ SwUndoMove( const SwPaM&, const SwPosition& );
+ SwUndoMove( SwDoc* pDoc, const SwNodeRange&, const SwNodeIndex& );
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ // setze den Destination-Bereich nach dem Verschieben.
+ void SetDestRange( const SwPaM&, const SwPosition&, BOOL, BOOL );
+ void SetDestRange( const SwNodeIndex& rStt, const SwNodeIndex& rEnd,
+ const SwNodeIndex& rInsPos );
+
+ BOOL IsMoveRange() const { return bMoveRange; }
+ ULONG GetEndNode() const { return nEndNode; }
+ ULONG GetDestSttNode() const { return nDestSttNode; }
+ xub_StrLen GetDestSttCntnt() const { return nDestSttCntnt; }
+ void AddTblMrgFlyHstry( SwHistory& rHstr );
+
+ OUT_UNDOBJ( Move )
+};
+
+
+class SwUndoAttr : public SwUndo, private SwUndRng
+{
+ SfxItemSet aSet; // Attribute fuers Redo
+ SwHistory* pHistory; // History fuers Undo
+ SwRedlineData* pRedlData; // Redlining
+ SwRedlineSaveDatas* pRedlSaveData;
+ ULONG nNdIdx; // fuers Redlining - Offset
+ USHORT nInsFlags; // Einfuege Flags
+
+ void RemoveIdx( SwDoc& rDoc );
+public:
+ SwUndoAttr( const SwPaM&, const SfxItemSet&, USHORT nFlags = 0 );
+ SwUndoAttr( const SwPaM&, const SfxPoolItem&, USHORT nFlags = 0 );
+ virtual ~SwUndoAttr();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ SwHistory* GetHistory() { return pHistory; }
+ void SaveRedlineData( const SwPaM& rPam, BOOL bInsCntnt );
+
+ OUT_UNDOBJ( InsAttr )
+};
+
+class SwUndoRstAttr : public SwUndo, private SwUndRng
+{
+ SwHistory* pHistory;
+ SvUShortsSort aIds;
+ USHORT nFmtId; // Format-Id fuer das Redo
+public:
+ SwUndoRstAttr( const SwPaM&, USHORT nFmtId );
+ SwUndoRstAttr( const SwDoc&, const SwPosition&, USHORT nWhichId );
+ virtual ~SwUndoRstAttr();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ void SetAttrs( const SvUShortsSort& rArr );
+ SwHistory* GetHistory() { return pHistory; }
+ OUT_UNDOBJ( ResetAttr )
+};
+
+
+class SwUndoFmtAttr : public SwUndo
+{
+ friend class SwUndoDefaultAttr;
+ SwFmt* pFmt;
+ SfxItemSet* pOldSet; // die alten Attribute
+ ULONG nNode;
+ USHORT nFmtWhich;
+ BOOL bSaveDrawPt;
+
+ int IsFmtInDoc( SwDoc* ); // ist das Attribut-Format noch im Doc ?
+ void SaveFlyAnchor( BOOL bSaveDrawPt = FALSE );
+ void RestoreFlyAnchor( SwUndoIter& rIter );
+ void Init();
+
+public:
+ // meldet sich im Format an und sichert sich die alten Attribute
+ SwUndoFmtAttr( const SfxItemSet& rOldSet, SwFmt& rFmt,
+ BOOL bSaveDrawPt = TRUE );
+ SwUndoFmtAttr( const SfxPoolItem& rItem, SwFmt& rFmt,
+ BOOL bSaveDrawPt = TRUE );
+ virtual ~SwUndoFmtAttr();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ OUT_UNDOBJ( InsFmtAttr )
+
+ void PutAttr( const SfxPoolItem& rItem );
+ SwFmt* GetFmt( SwDoc& rDoc ); // prueft, ob es noch im Doc ist!
+};
+
+class SwUndoDontExpandFmt : public SwUndo
+{
+ ULONG nNode;
+ xub_StrLen nCntnt;
+public:
+ SwUndoDontExpandFmt( const SwPosition& rPos );
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+};
+
+// Hilfs-Klasse, um die geaenderten Sets zu "empfangen"
+struct _UndoFmtAttr : public SwClient
+{
+ SwUndoFmtAttr* pUndo;
+ BOOL bSaveDrawPt;
+
+ _UndoFmtAttr( SwFmt& rFmt, BOOL bSaveDrawPt = TRUE );
+ virtual void Modify( SfxPoolItem*, SfxPoolItem* );
+};
+
+
+class SwUndoFmtColl : public SwUndo, private SwUndRng
+{
+ SwHistory* pHistory;
+ SwFmtColl* pFmtColl;
+public:
+ SwUndoFmtColl( const SwPaM&, SwFmtColl* );
+ virtual ~SwUndoFmtColl();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ SwHistory* GetHistory() { return pHistory; }
+ OUT_UNDOBJ( SetFmtColl )
+};
+
+
+class SwUndoMoveLeftMargin : public SwUndo, private SwUndRng
+{
+ SwHistory* pHistory;
+ BOOL bModulus;
+public:
+ SwUndoMoveLeftMargin( const SwPaM&, BOOL bRight, BOOL bModulus );
+ virtual ~SwUndoMoveLeftMargin();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ SwHistory* GetHistory() { return pHistory; }
+ OUT_UNDOBJ( MoveLeftMargin )
+};
+
+// Basis-Klasse fuer Insert von Dokument, Glossaries und Kopieren
+class SwUndoInserts : public SwUndo, public SwUndRng, private SwUndoSaveCntnt
+{
+ SwTxtFmtColl *pTxtFmtColl, *pLastNdColl;
+ SvPtrarr* pFrmFmts;
+ SwUndos* pFlyUndos;
+ SwRedlineData* pRedlData;
+ BOOL bSttWasTxtNd;
+protected:
+ ULONG nNdDiff;
+ SwPosition *pPos; // Inhalt fuers Redo
+ USHORT nSetPos; // Start in der History-Liste
+
+ SwUndoInserts( USHORT nUndoId, const SwPaM& );
+public:
+ virtual ~SwUndoInserts();
+
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ // setze den Destination-Bereich nach dem Einlesen.
+ void SetInsertRange( const SwPaM&, BOOL bScanFlys = TRUE,
+ BOOL bSttWasTxtNd = TRUE );
+ OUT_UNDOBJ( Inserts )
+};
+
+class SwUndoInsDoc : public SwUndoInserts
+{
+public:
+ SwUndoInsDoc( const SwPaM& );
+ OUT_UNDOBJ( InsDoc )
+};
+
+class SwUndoCpyDoc : public SwUndoInserts
+{
+public:
+ SwUndoCpyDoc( const SwPaM& );
+ OUT_UNDOBJ( Copy )
+};
+
+class SwUndoInsTbl : public SwUndo
+{
+ String sTblNm;
+ SwDDEFieldType* pDDEFldType;
+ SvUShorts* pColWidth;
+ SwRedlineData* pRedlData;
+ SwTableAutoFmt* pAutoFmt;
+ ULONG nSttNode;
+ USHORT nRows, nCols;
+ USHORT nAdjust;
+ USHORT nInsTblFlags;
+
+public:
+ SwUndoInsTbl( const SwPosition&, USHORT nCols, USHORT nRows,
+ USHORT eAdjust, USHORT nInsert,
+ const SwTableAutoFmt* pTAFmt, const SvUShorts* pColArr );
+ virtual ~SwUndoInsTbl();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ OUT_UNDOBJ( InsTable )
+};
+
+class SwUndoTxtToTbl : public SwUndo, public SwUndRng
+{
+ String sTblNm;
+ SvULongs* pDelBoxes;
+ SwTableAutoFmt* pAutoFmt;
+ SwHistory* pHistory;
+ sal_Unicode cTrenner;
+ USHORT nAdjust;
+ USHORT nInsTblFlags;
+ BOOL bSplitEnd : 1;
+
+public:
+ SwUndoTxtToTbl( const SwPaM&, sal_Unicode , USHORT, USHORT nInsert,
+ const SwTableAutoFmt* pAFmt );
+ virtual ~SwUndoTxtToTbl();
+
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+
+ SwHistory& GetHistory(); // wird ggfs. angelegt
+ void AddFillBox( const SwTableBox& rBox );
+ OUT_UNDOBJ( TextToTable )
+};
+
+class SwUndoTblToTxt : public SwUndo
+{
+ String sTblNm;
+ SwDDEFieldType* pDDEFldType;
+ _SaveTable* pTblSave;
+ SwTblToTxtSaves* pBoxSaves;
+ SwHistory* pHistory;
+ ULONG nSttNd, nEndNd;
+ USHORT nAdjust;
+ sal_Unicode cTrenner;
+ BOOL bCheckNumFmt : 1;
+ BOOL bHdlnRpt : 1;
+
+public:
+ SwUndoTblToTxt( const SwTable& rTbl, sal_Unicode cCh );
+ virtual ~SwUndoTblToTxt();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+
+ void SetRange( const SwNodeRange& );
+ void AddBoxPos( SwDoc& rDoc, ULONG nNdIdx,
+ xub_StrLen nCntntIdx = STRING_MAXLEN);
+ OUT_UNDOBJ( TableToText )
+};
+
+class SwUndoAttrTbl : public SwUndo
+{
+ ULONG nSttNode;
+ _SaveTable* pSaveTbl;
+ BOOL bClearTabCol : 1;
+public:
+ SwUndoAttrTbl( const SwTableNode& rTblNd, BOOL bClearTabCols = FALSE );
+ virtual ~SwUndoAttrTbl();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ OUT_UNDOBJ( SetTableAttr )
+};
+
+class SwUndoTblAutoFmt : public SwUndo
+{
+ ULONG nSttNode;
+ _SaveTable* pSaveTbl;
+ SwUndos* pUndos;
+ BOOL bSaveCntntAttr;
+
+ void UndoRedo( BOOL bUndo, SwUndoIter& rUndoIter );
+
+public:
+ SwUndoTblAutoFmt( const SwTableNode& rTblNd, const SwTableAutoFmt& );
+ virtual ~SwUndoTblAutoFmt();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ void SaveBoxCntnt( const SwTableBox& rBox );
+ OUT_UNDOBJ( TableAutoFmt )
+};
+
+class SwUndoTblNdsChg : public SwUndo
+{
+ _SaveTable* pSaveTbl;
+ SvULongs aBoxes;
+
+ union {
+ SvULongs* pNewSttNds;
+ SwUndoSaveSections* pDelSects;
+ } Ptrs;
+ SvBools aMvBoxes; // fuers SplitRow (aufgeteilte Nodes einer Box)
+
+ ULONG nSttNode, nCurrBox;
+ USHORT nCount, nRelDiff, nAbsDiff, nSetColType;
+ BOOL bFlag;
+public:
+ SwUndoTblNdsChg( USHORT UndoId,
+ const SwSelBoxes& rBoxes,
+ const SwTableNode& rTblNd,
+ USHORT nCnt, BOOL bFlg );
+
+ // fuer SetColWidth
+ SwUndoTblNdsChg( USHORT UndoId, const SwSelBoxes& rBoxes,
+ const SwTableNode& rTblNd );
+
+ virtual ~SwUndoTblNdsChg();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+
+ void SaveNewBoxes( const SwTableNode& rTblNd, const SwTableSortBoxes& rOld );
+ void SaveNewBoxes( const SwTableNode& rTblNd, const SwTableSortBoxes& rOld,
+ const SwSelBoxes& rBoxes, const SvULongs& rNodeCnts );
+ void SaveSection( SwStartNode* pSttNd );
+
+ void SetColWidthParam( ULONG nBoxIdx, USHORT nMode, USHORT nType,
+ SwTwips nAbsDif, SwTwips nRelDif )
+ {
+ nCurrBox = nBoxIdx;
+ nCount = nMode;
+ nSetColType = nType;
+ nAbsDiff = (USHORT)nAbsDif;
+ nRelDiff = (USHORT)nRelDif;
+ }
+ OUT_UNDOBJ( TblNodesChg )
+};
+
+class SwUndoTblMerge : public SwUndo, private SwUndRng
+{
+ ULONG nTblNode;
+ _SaveTable* pSaveTbl;
+ SvULongs aBoxes, aNewSttNds;
+ SwUndoMoves* pMoves;
+ SwHistory* pHistory;
+
+public:
+ SwUndoTblMerge( const SwPaM& rTblSel );
+ virtual ~SwUndoTblMerge();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+
+ void MoveBoxCntnt( SwPaM& rPam, SwPosition& rPos, const _SaveFlyArr& );
+ void MoveBoxCntnt( SwDoc* pDoc, SwNodeRange& rRg, SwNodeIndex& rPos );
+
+ void SetSelBoxes( const SwSelBoxes& rBoxes );
+
+ void AddNewBox( ULONG nSttNdIdx )
+ { aNewSttNds.Insert( nSttNdIdx, aNewSttNds.Count() ); }
+
+ void SaveCollection( const SwTableBox& rBox );
+
+ OUT_UNDOBJ( TblMerge )
+};
+
+
+class SwUndoTblNumFmt : public SwUndo
+{
+ SfxItemSet *pBoxSet;
+ SwHistory* pHistory;
+ String aStr, aNewFml;
+
+ ULONG nFmtIdx, nNewFmtIdx;
+ double fNum, fNewNum;
+ ULONG nNode;
+
+ BOOL bNewFmt : 1;
+ BOOL bNewFml : 1;
+ BOOL bNewValue : 1;
+
+public:
+ SwUndoTblNumFmt( const SwTableBox& rBox, const SfxItemSet* pNewSet = 0 );
+ virtual ~SwUndoTblNumFmt();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+
+ void SetNumFmt( ULONG nNewFmtIdx, const double& rNewNumber )
+ { nFmtIdx = nNewFmtIdx; fNum = rNewNumber; }
+ void SetBox( const SwTableBox& rBox );
+ OUT_UNDOBJ( TblNumFmt )
+};
+
+class _UndoTblCpyTbl_Entries;
+
+class SwUndoTblCpyTbl : public SwUndo
+{
+ _UndoTblCpyTbl_Entries* pArr;
+ SwUndoTblNdsChg* pInsRowUndo;
+public:
+ SwUndoTblCpyTbl();
+ virtual ~SwUndoTblCpyTbl();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+
+ void AddBoxBefore( const SwTableBox& rBox, BOOL bDelCntnt );
+ void AddBoxAfter( const SwTableBox& rBox, BOOL bDelCntnt );
+
+ BOOL IsEmpty() const;
+ BOOL InsertRow( SwTable& rTbl, const SwSelBoxes& rBoxes, USHORT nCnt );
+ OUT_UNDOBJ( TblCpyTbl )
+};
+
+class SwUndoCpyTbl : public SwUndo
+{
+ SwUndoDelete* pDel;
+ ULONG nTblNode;
+public:
+ SwUndoCpyTbl();
+ virtual ~SwUndoCpyTbl();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+
+ void SetTableSttIdx( ULONG nIdx ) { nTblNode = nIdx; }
+ OUT_UNDOBJ( CpyTbl )
+};
+
+class SwUndoSplitTbl : public SwUndo
+{
+ ULONG nTblNode, nOffset;
+ _SaveTable* pSavTbl;
+ SwHistory* pHistory;
+ USHORT nMode, nFmlEnd;
+ BOOL bCalcNewSize;
+public:
+ SwUndoSplitTbl( const SwTableNode& rTblNd, USHORT nMode, BOOL bCalcNewSize );
+ virtual ~SwUndoSplitTbl();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+
+ void SetTblNodeOffset( ULONG nIdx ) { nOffset = nIdx - nTblNode; }
+ SwHistory* GetHistory() { return pHistory; }
+ void SaveFormula( SwHistory& rHistory );
+};
+
+class SwUndoMergeTbl : public SwUndo
+{
+ String aName;
+ ULONG nTblNode;
+ _SaveTable* pSavTbl, *pSavHdl;
+ SwHistory* pHistory;
+ USHORT nMode;
+ BOOL bWithPrev;
+public:
+ SwUndoMergeTbl( const SwTableNode& rTblNd, const SwTableNode& rDelTblNd,
+ BOOL bWithPrev, USHORT nMode );
+ virtual ~SwUndoMergeTbl();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+
+ SwHistory* GetHistory() { return pHistory; }
+ void SaveFormula( SwHistory& rHistory );
+};
+
+
+class SwUndoBookmark : public SwUndo
+{
+ SwHstryBookmark* pHBookmark;
+protected:
+ SwUndoBookmark( USHORT nUndoId, const SwBookmark& );
+
+ void SetInDoc( SwDoc* );
+ void ResetInDoc( SwDoc* );
+
+public:
+ virtual ~SwUndoBookmark();
+};
+
+
+class SwUndoDelBookmark : public SwUndoBookmark
+{
+public:
+ SwUndoDelBookmark( const SwBookmark& );
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ OUT_UNDOBJ( DelBookmark )
+};
+
+class SwUndoInsBookmark : public SwUndoBookmark
+{
+public:
+ SwUndoInsBookmark( const SwBookmark& );
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ OUT_UNDOBJ( InsBookmark )
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Undo auf Sorting
+ --------------------------------------------------------------------*/
+
+struct SwSortUndoElement
+{
+ union {
+ struct {
+ ULONG nKenn;
+ ULONG nSource, nTarget;
+ } TXT;
+ struct {
+ String *pSource, *pTarget;
+ } TBL;
+ } SORT_TXT_TBL;
+
+ SwSortUndoElement( const String& aS, const String& aT )
+ {
+ SORT_TXT_TBL.TBL.pSource = new String( aS );
+ SORT_TXT_TBL.TBL.pTarget = new String( aT );
+ }
+ SwSortUndoElement( ULONG nS, ULONG nT )
+ {
+ SORT_TXT_TBL.TXT.nSource = nS;
+ SORT_TXT_TBL.TXT.nTarget = nT;
+ SORT_TXT_TBL.TXT.nKenn = 0xffffffff;
+ }
+ ~SwSortUndoElement();
+};
+
+SV_DECL_PTRARR_DEL(SwSortList, SwSortUndoElement*, 10,30)
+SV_DECL_PTRARR(SwUndoSortList, SwNodeIndex*, 10,30)
+
+class SwUndoSort : public SwUndo, private SwUndRng
+{
+ SwSortOptions* pSortOpt; // die Optionen mit den Sortier-Kriterien
+ SwSortList aSortList;
+ SwUndoAttrTbl* pUndoTblAttr;
+ SwRedlineData* pRedlData;
+ ULONG nTblNd;
+
+ void RemoveIdx( SwPaM& rPam );
+public:
+ SwUndoSort( const SwPaM&, const SwSortOptions& );
+ SwUndoSort( ULONG nStt, ULONG nEnd, const SwTableNode&,
+ const SwSortOptions&, BOOL bSaveTable );
+ virtual ~SwUndoSort();
+
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+
+ void Insert( const String& rOrgPos, const String& rNewPos );
+ void Insert( ULONG nOrgPos, ULONG nNewPos );
+
+ OUT_UNDOBJ( Sort )
+};
+
+
+
+//--------------------------------------------------------------------
+
+class SwUndoFlyBase : public SwUndo, private SwUndoSaveSection
+{
+protected:
+ SwFrmFmt* pFrmFmt; // das gespeicherte FlyFormat
+ ULONG nNdPgPos;
+ xub_StrLen nCntPos; // Seite/am Absatz/im Absatz
+ USHORT nRndId;
+ BOOL bDelFmt; // loesche das gespeicherte Format
+
+ void InsFly( SwUndoIter&, BOOL bShowSel = TRUE );
+ void DelFly( SwDoc* );
+
+ SwUndoFlyBase( SwFrmFmt* pFormat, USHORT nUndoId );
+
+ SwNodeIndex* GetMvSttIdx() const { return SwUndoSaveSection::GetMvSttIdx(); }
+ ULONG GetMvNodeCnt() const { return SwUndoSaveSection::GetMvNodeCnt(); }
+
+public:
+ virtual ~SwUndoFlyBase();
+
+ virtual void Undo( SwUndoIter& ) = 0;
+ virtual void Redo( SwUndoIter& ) = 0;
+ OUT_UNDOBJ( FlyBase )
+};
+
+class SwUndoInsLayFmt : public SwUndoFlyBase
+{
+public:
+ SwUndoInsLayFmt( SwFrmFmt* pFormat );
+
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ OUT_UNDOBJ( InsLayFmt )
+};
+
+class SwUndoDelLayFmt : public SwUndoFlyBase
+{
+ BOOL bShowSelFrm;
+public:
+ SwUndoDelLayFmt( SwFrmFmt* pFormat );
+
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ void Redo(); // Schnittstelle fuers Rollback
+
+ void ChgShowSel( BOOL bNew ) { bShowSelFrm = bNew; }
+ BOOL GetShowSel() const { return bShowSelFrm; }
+ OUT_UNDOBJ( DelLayFmt )
+};
+
+
+class SwUndoSetFlyFmt : public SwUndo, public SwClient
+{
+ SwFrmFmt* pFrmFmt; // das gespeicherte FlyFormat
+ SwFrmFmt* pOldFmt; // die alte Fly Vorlage
+ SwFrmFmt* pNewFmt; // die neue Fly Vorlage
+ SfxItemSet* pItemSet; // die zurueck-/ gesetzten Attribute
+ ULONG nOldNode, nNewNode;
+ xub_StrLen nOldCntnt, nNewCntnt;
+ USHORT nOldAnchorTyp, nNewAnchorTyp;
+ BOOL bAnchorChgd;
+
+ void PutAttr( USHORT nWhich, const SfxPoolItem* pItem );
+ void Modify( SfxPoolItem*, SfxPoolItem* );
+ void GetAnchor( SwFmtAnchor& rAnhor, ULONG nNode, xub_StrLen nCntnt );
+
+public:
+ SwUndoSetFlyFmt( SwFrmFmt& rFlyFmt, SwFrmFmt& rNewFrmFmt );
+ virtual ~SwUndoSetFlyFmt();
+
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+};
+
+//--------------------------------------------------------------------
+
+class _UnReplaceData;
+SV_DECL_PTRARR_DEL( _UnReplaceDatas, _UnReplaceData*, 10, 25 );
+
+class SwUndoReplace : public SwUndo
+{
+ friend class SwDoc;
+
+ BOOL bOldIterFlag; // Status vom Undo-Iter vorm 1. Aufruf
+ USHORT nAktPos; // fuer GetUndoRange und Undo/Redo
+ _UnReplaceDatas aArr;
+ SwRedlineData* pRedlData;
+
+public:
+ SwUndoReplace();
+ virtual ~SwUndoReplace();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+
+ void AddEntry( const SwPaM& rPam, const String& rInsert, BOOL bRegExp );
+ void SetEntryEnd( const SwPaM& rPam );
+
+ BOOL IsFull() const
+ { return ((USHRT_MAX / sizeof( void* )) - 50 ) < aArr.Count(); }
+
+ OUT_UNDOBJ( Replace )
+};
+
+
+//--------------------------------------------------------------------
+
+
+class SwUndoTblHeadline : public SwUndo
+{
+ ULONG nTblNd;
+ BOOL bOldHeadline;
+public:
+ SwUndoTblHeadline( const SwTable&, BOOL bOldHdl );
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ OUT_UNDOBJ( SwUndoTblHeadline )
+};
+
+
+//------------ Undo von Insert-/Delete-Sections ----------------------
+
+class SwUndoInsSection : public SwUndo, private SwUndRng
+{
+ SwHistory* pHistory;
+ SwSection* pSection;
+ SwRedlineData* pRedlData;
+ SfxItemSet* pAttr;
+ ULONG nSectNodePos;
+ BOOL bSplitAtStt : 1;
+ BOOL bSplitAtEnd : 1;
+ BOOL bUpdateFtn : 1;
+
+ void Join( SwDoc& rDoc, ULONG nNode );
+
+public:
+ SwUndoInsSection( const SwPaM&, const SwSection&,
+ const SfxItemSet* pSet );
+ virtual ~SwUndoInsSection();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ OUT_UNDOBJ( SwUndoInsSection )
+
+ void SetSectNdPos( ULONG nPos ) { nSectNodePos = nPos; }
+ void SaveSplitNode( SwTxtNode* pTxtNd, BOOL bAtStt );
+ void SetUpdtFtnFlag( BOOL bFlag ) { bUpdateFtn = bFlag; }
+};
+
+class SwUndoDelSection : public SwUndo
+{
+ ULONG nSttNd, nEndNd;
+ SwSection* pSection;
+ SfxItemSet* pAttr;
+public:
+ SwUndoDelSection( const SwSectionFmt& );
+ virtual ~SwUndoDelSection();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ OUT_UNDOBJ( SwUndoDelSection )
+};
+
+class SwUndoChgSection : public SwUndo
+{
+ ULONG nSttNd;
+ SwSection* pSection;
+ SfxItemSet* pAttr;
+ BOOL bOnlyAttrChgd;
+public:
+ SwUndoChgSection( const SwSectionFmt&, BOOL bOnlyAttrChgd );
+ virtual ~SwUndoChgSection();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ OUT_UNDOBJ( SwUndoChgSection )
+};
+
+class SwUndoChgSectPsswd : public SwUndo
+{
+ String sPasswd;
+public:
+ SwUndoChgSectPsswd( const String& rOld );
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ OUT_UNDOBJ( SwUndoChgSectPsswd )
+};
+
+//------------ Undo von verschieben/stufen von Gliederung ----------------
+
+class SwUndoOutlineLeftRight : public SwUndo, private SwUndRng
+{
+ short nOffset;
+public:
+ SwUndoOutlineLeftRight( const SwPaM& rPam, short nOffset );
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ OUT_UNDOBJ( SwUndoOutlineLeftRight )
+};
+
+//--------------------------------------------------------------------
+
+class SwUndoDefaultAttr : public SwUndo
+{
+ SfxItemSet* pOldSet; // die alten Attribute
+ SvxTabStopItem* pTabStop;
+public:
+ // meldet sich im Format an und sichert sich die alten Attribute
+ SwUndoDefaultAttr( const SfxItemSet& rOldSet );
+ virtual ~SwUndoDefaultAttr();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ OUT_UNDOBJ( DefaultAttr )
+};
+
+//--------------------------------------------------------------------
+// ---------- Undo fuer Numerierung ----------------------------------
+
+class SwUndoInsNum : public SwUndo, private SwUndRng
+{
+ SwNumRule aNumRule;
+ SwHistory* pHistory;
+ ULONG nSttSet;
+ SwNumRule* pOldNumRule;
+ String sReplaceRule;
+ USHORT nLRSavePos;
+public:
+ SwUndoInsNum( const SwPaM& rPam, const SwNumRule& rRule );
+ SwUndoInsNum( const SwNumRule& rOldRule, const SwNumRule& rNewRule );
+ SwUndoInsNum( const SwPosition& rPos, const SwNumRule& rRule,
+ const String& rReplaceRule );
+ virtual ~SwUndoInsNum();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+
+ SwHistory* GetHistory(); // wird ggfs. neu angelegt!
+ void SetSttNum( ULONG nNdIdx ) { nSttSet = nNdIdx; }
+ void SaveOldNumRule( const SwNumRule& rOld );
+
+ void SetLRSpaceEndPos();
+
+ OUT_UNDOBJ( InsNum )
+};
+
+class SwUndoDelNum : public SwUndo, private SwUndRng
+{
+ SvULongs aNodeIdx;
+ SvBytes aLevels;
+ SvBools aRstLRSpaces;
+ SwHistory* pHistory;
+public:
+ SwUndoDelNum( const SwPaM& rPam );
+ virtual ~SwUndoDelNum();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+
+ void AddNode( const SwTxtNode& rNd, BOOL bResetLRSpace );
+ SwHistory* GetHistory() { return pHistory; }
+
+ OUT_UNDOBJ( DelNum )
+};
+
+class SwUndoMoveNum : public SwUndo, private SwUndRng
+{
+ ULONG nNewStt;
+ long nOffset;
+public:
+ SwUndoMoveNum( const SwPaM& rPam, long nOffset, BOOL bIsOutlMv = FALSE );
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ void SetStartNode( ULONG nValue ) { nNewStt = nValue; }
+ OUT_UNDOBJ( MoveNum )
+};
+
+class SwUndoNumUpDown : public SwUndo, private SwUndRng
+{
+ short nOffset;
+public:
+ SwUndoNumUpDown( const SwPaM& rPam, short nOffset );
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ OUT_UNDOBJ( NumUpDown )
+};
+
+class SwUndoNumOrNoNum : public SwUndo
+{
+ ULONG nIdx;
+ BOOL bDel : 1;
+ BOOL bOutline : 1;
+public:
+ SwUndoNumOrNoNum( const SwNodeIndex& rIdx, BOOL bDelete, BOOL bOutline );
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ OUT_UNDOBJ( NumOrNoNum )
+};
+
+class SwUndoNumRuleStart : public SwUndo
+{
+ ULONG nIdx;
+ USHORT nOldStt, nNewStt;
+ BOOL bSetSttValue : 1;
+ BOOL bFlag : 1;
+public:
+ SwUndoNumRuleStart( const SwPosition& rPos, BOOL bDelete );
+ SwUndoNumRuleStart( const SwPosition& rPos, USHORT nStt );
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+ OUT_UNDOBJ( NumRuleStart )
+};
+
+//--------------------------------------------------------------------
+// ---------- Undo fuer DrawObjecte ----------------------------------
+
+class SwSdrUndo : public SwUndo
+{
+ SdrUndoAction* pSdrUndo;
+ SdrMarkList* pMarkList; // MarkList for all selected SdrObjects
+public:
+ SwSdrUndo( SdrUndoAction* , const SdrMarkList* pMarkList );
+ virtual ~SwSdrUndo();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+
+ String GetComment() const;
+};
+
+class SwUndoDrawGroup : public SwUndo
+{
+ SwUndoGroupObjImpl* pObjArr;
+ USHORT nSize;
+ BOOL bDelFmt;
+
+public:
+ SwUndoDrawGroup( USHORT nCnt );
+ virtual ~SwUndoDrawGroup();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+
+ void AddObj( USHORT nPos, SwDrawFrmFmt*, SdrObject* );
+ void SetGroupFmt( SwDrawFrmFmt* );
+};
+
+class SwUndoDrawUnGroup : public SwUndo
+{
+ SwUndoGroupObjImpl* pObjArr;
+ USHORT nSize;
+ BOOL bDelFmt;
+
+public:
+ SwUndoDrawUnGroup( SdrObjGroup* );
+ virtual ~SwUndoDrawUnGroup();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+
+ void AddObj( USHORT nPos, SwDrawFrmFmt* );
+};
+
+class SwUndoDrawDelete : public SwUndo
+{
+ SwUndoGroupObjImpl* pObjArr;
+ USHORT nSize;
+ BOOL bDelFmt;
+
+public:
+ SwUndoDrawDelete( USHORT nCnt );
+ virtual ~SwUndoDrawDelete();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+
+ void AddObj( USHORT nPos, SwDrawFrmFmt*, SdrObject* );
+};
+
+//--------------------------------------------------------------------
+
+class SwUndoReRead : public SwUndo
+{
+ Graphic *pGrf;
+ String *pNm, *pFltr;
+ ULONG nPos;
+ USHORT nMirr;
+
+ void SaveGraphicData( const SwGrfNode& );
+ void SetAndSave( SwUndoIter& );
+
+public:
+ SwUndoReRead( const SwPaM& rPam, const SwGrfNode& pGrfNd );
+ virtual ~SwUndoReRead();
+
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+};
+
+//--------------------------------------------------------------------
+
+class SwUndoInsertLabel : public SwUndo
+{
+ union {
+ struct {
+ // fuer NoTxtFrms
+ SwUndoInsLayFmt* pUndoFly;
+ SwUndoFmtAttr* pUndoAttr;
+ } OBJECT;
+ struct {
+ // fuer Tabelle/TextRahmen
+ SwUndoDelete* pUndoInsNd;
+ ULONG nNode;
+ } NODE;
+ };
+
+ String sText;
+ Point aPos; // fuer Zeichen-Objekte
+ USHORT nFldId;
+ SwLabelType eType;
+ BYTE nLayerId; // fuer Zeichen-Objekte
+ BOOL bBefore :1;
+ BOOL bUndoKeep :1;
+ BOOL bCpyBrd :1;
+
+public:
+ SwUndoInsertLabel( const SwLabelType eTyp, const String &rText,
+ const BOOL bBefore, const USHORT nId,
+ const BOOL bCpyBrd );
+ virtual ~SwUndoInsertLabel();
+
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+
+ void SetNodePos( ULONG nNd )
+ { if( LTYPE_OBJECT != eType ) NODE.nNode = nNd; }
+
+ void SetUndoKeep() { bUndoKeep = TRUE; }
+ void SetFlys( SwFrmFmt& rOldFly, SfxItemSet& rChgSet, SwFrmFmt& rNewFly );
+ void SetDrawObj( const Point& rPos, BYTE nLayerId );
+};
+
+//--------------------------------------------------------------------
+
+class SwUndoChgFtn : public SwUndo, private SwUndRng
+{
+ SwHistory* pHistory;
+ String sTxt;
+ USHORT nNo;
+ BOOL bEndNote;
+public:
+ SwUndoChgFtn( const SwPaM& rRange, const String& rTxt,
+ USHORT nNum, BOOL bIsEndNote );
+ virtual ~SwUndoChgFtn();
+
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+ virtual void Repeat( SwUndoIter& );
+
+ SwHistory* GetHistory() { return pHistory; }
+};
+
+class SwUndoFtnInfo : public SwUndo
+{
+ SwFtnInfo *pFtnInfo;
+
+public:
+ SwUndoFtnInfo( const SwFtnInfo &rInfo );
+ virtual ~SwUndoFtnInfo();
+
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+};
+
+class SwUndoEndNoteInfo : public SwUndo
+{
+ SwEndNoteInfo *pEndNoteInfo;
+
+public:
+ SwUndoEndNoteInfo( const SwEndNoteInfo &rInfo );
+ virtual ~SwUndoEndNoteInfo();
+
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+};
+
+
+//--------------------------------------------------------------------
+
+class SwUndoRedline : public SwUndo, public SwUndRng
+{
+protected:
+ SwRedlineData* pRedlData;
+ SwRedlineSaveDatas* pRedlSaveData;
+ USHORT nUserId;
+ BOOL bHiddenRedlines;
+
+ virtual void _Undo( SwUndoIter& );
+ virtual void _Redo( SwUndoIter& );
+
+public:
+ SwUndoRedline( USHORT nUserId, const SwPaM& rRange );
+ virtual ~SwUndoRedline();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+
+ USHORT GetUserId() const { return nUserId; }
+ USHORT GetRedlSaveCount() const
+ { return pRedlSaveData ? pRedlSaveData->Count() : 0; }
+};
+
+class SwUndoRedlineDelete : public SwUndoRedline
+{
+ BOOL bCanGroup : 1;
+ BOOL bIsDelim : 1;
+ BOOL bIsBackspace : 1;
+
+ virtual void _Undo( SwUndoIter& );
+ virtual void _Redo( SwUndoIter& );
+
+public:
+ SwUndoRedlineDelete( const SwPaM& rRange, USHORT nUserId = 0 );
+
+ BOOL CanGrouping( const SwUndoRedlineDelete& rPrev );
+};
+
+class SwUndoRedlineSort : public SwUndoRedline
+{
+ SwSortOptions* pOpt;
+ ULONG nSaveEndNode, nOffset;
+ xub_StrLen nSaveEndCntnt;
+
+ virtual void _Undo( SwUndoIter& );
+ virtual void _Redo( SwUndoIter& );
+
+public:
+ SwUndoRedlineSort( const SwPaM& rRange, const SwSortOptions& rOpt );
+ virtual ~SwUndoRedlineSort();
+ virtual void Repeat( SwUndoIter& );
+
+ void SetSaveRange( const SwPaM& rRange );
+ void SetOffset( const SwNodeIndex& rIdx );
+};
+
+class SwUndoAcceptRedline : public SwUndoRedline
+{
+ virtual void _Redo( SwUndoIter& );
+public:
+ SwUndoAcceptRedline( const SwPaM& rRange );
+ virtual void Repeat( SwUndoIter& );
+};
+
+class SwUndoRejectRedline : public SwUndoRedline
+{
+ virtual void _Redo( SwUndoIter& );
+public:
+ SwUndoRejectRedline( const SwPaM& rRange );
+ virtual void Repeat( SwUndoIter& );
+};
+
+//--------------------------------------------------------------------
+
+class SwUndoCompDoc : public SwUndo, public SwUndRng
+{
+ SwRedlineData* pRedlData;
+ SwUndoDelete* pUnDel;
+ SwRedlineSaveDatas* pRedlSaveData;
+ BOOL bInsert;
+public:
+ SwUndoCompDoc( const SwPaM& rRg, BOOL bIns );
+ SwUndoCompDoc( const SwRedline& rRedl );
+
+ virtual ~SwUndoCompDoc();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+};
+
+
+//--------------------------------------------------------------------
+
+// Object der als Iterator durch die Undo-Liste laeuft, bis die
+// letze oder die angegebene Klammerung/Id erreicht ist.
+
+class SwUndoIter
+{
+ friend class SwDoc; // um im SwDoc::Undo bWeiter zu stezen
+ friend void SwUndoEnd::Undo( SwUndoIter& );
+ friend void SwUndoStart::Undo( SwUndoIter& );
+ friend void SwUndoEnd::Redo( SwUndoIter& );
+ friend void SwUndoStart::Redo( SwUndoIter& );
+ friend void SwUndoEnd::Repeat( SwUndoIter& );
+ friend void SwUndoStart::Repeat( SwUndoIter& );
+ friend void SwUndoReplace::Undo( SwUndoIter& );
+ friend void SwUndoReplace::Redo( SwUndoIter& );
+
+ USHORT nUndoId;
+ USHORT nEndCnt;
+ BOOL bWeiter : 1;
+ BOOL bUpdateAttr : 1; // Setze das GCAttr an der CursorShell
+
+public:
+ SwPaM * pAktPam; // Member fuer das Undo
+ SwUndo* pLastUndoObj; // fuers Redo, das vorherige UndoObj.
+ SwFrmFmt* pSelFmt; // ggfs. das Format Rahmen/Object-Selektionen
+ SdrMarkList* pMarkList; // MarkList for all selected SdrObjects
+
+ SwUndoIter( SwPaM * pPam, USHORT nId = 0 );
+
+ BOOL IsNextUndo() const { return bWeiter; }
+ BOOL IsUpdateAttr() const { return bUpdateAttr; }
+ void SetUpdateAttr( BOOL bNew ) { bUpdateAttr = bNew; }
+
+ inline SwDoc& GetDoc() const;
+ USHORT GetId() const { return nUndoId; }
+ USHORT GetLastUndoId() const
+ { return pLastUndoObj ? pLastUndoObj->GetId() : 0 ; }
+ void ClearSelections() { pSelFmt = 0; pMarkList = 0; }
+};
+
+
+
+
+#endif
diff --git a/sw/inc/unoatxt.hxx b/sw/inc/unoatxt.hxx
new file mode 100644
index 000000000000..dd68f25c0e37
--- /dev/null
+++ b/sw/inc/unoatxt.hxx
@@ -0,0 +1,277 @@
+/*************************************************************************
+ *
+ * $RCSfile: unoatxt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOATXT_HXX
+#define _UNOATXT_HXX
+
+#ifndef _COM_SUN_STAR_TEXT_XAUTOTEXTGROUP_HPP_
+#include <com/sun/star/text/XAutoTextGroup.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XAUTOTEXTENTRY_HPP_
+#include <com/sun/star/text/XAutoTextEntry.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XAUTOTEXTCONTAINER_HPP_
+#include <com/sun/star/text/XAutoTextContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXT_HPP_
+#include <com/sun/star/text/XText.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 _COM_SUN_STAR_CONTAINER_XNAMED_HPP_
+#include <com/sun/star/container/XNamed.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_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx> // helper for implementations
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE6_HXX_
+#include <cppuhelper/implbase6.hxx> // helper for implementations
+#endif
+
+
+class SwTextBlocks;
+class SwGlossaries;
+class SwDoc;
+/******************************************************************************
+ *
+ ******************************************************************************/
+::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
+ SAL_CALL SwXAutoTextContainer_CreateInstance(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & );
+
+class SwXAutoTextContainer : public cppu::WeakImplHelper3
+<
+ ::com::sun::star::text::XAutoTextContainer,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::container::XIndexAccess
+>
+{
+ SwGlossaries *pGlossaries;
+public:
+ SwXAutoTextContainer();
+ virtual ~SwXAutoTextContainer();
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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& Name) 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& Name) 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);
+
+ //XAutoTextContainer
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XAutoTextGroup > SAL_CALL insertNewByName(const rtl::OUString& aGroupName) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL removeByName(const rtl::OUString& aGroupName) throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+};
+
+/* -----------------26.05.98 15:55-------------------
+ *
+ * --------------------------------------------------*/
+class SwXAutoTextGroup : public cppu::WeakImplHelper6
+<
+ ::com::sun::star::text::XAutoTextGroup,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::container::XIndexAccess,
+ ::com::sun::star::container::XNamed,
+ ::com::sun::star::lang::XUnoTunnel
+>
+{
+ SfxItemPropertySet aPropSet;
+ SwGlossaries* pGlossaries;
+ rtl::OUString sName;
+ String sGroupName;
+
+public:
+ SwXAutoTextGroup(const rtl::OUString& rName, SwGlossaries* pGloss/*SwTextBlocks* pGroup*/);
+ virtual ~SwXAutoTextGroup();
+
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XAutoTextGroup
+ virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getTitles(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL renameByName(const rtl::OUString& aElementName, const rtl::OUString& aNewElementName, const rtl::OUString& aNewElementTitle) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XAutoTextEntry > SAL_CALL insertNewByName(const rtl::OUString& aName, const rtl::OUString& aTitle, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange) throw( ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL removeByName(const rtl::OUString& aEntryName) throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException );
+
+ //XNamed
+ virtual rtl::OUString SAL_CALL getName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setName(const rtl::OUString& Name_) 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 nIndex) 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& Name) 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& Name) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //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);
+
+ //
+ void Invalidate();
+};
+
+/* -----------------17.06.98 12:03-------------------
+ *
+ * --------------------------------------------------*/
+class SwXAutoTextEntry : public cppu::WeakImplHelper4
+<
+ ::com::sun::star::text::XAutoTextEntry,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::lang::XUnoTunnel,
+ ::com::sun::star::text::XText
+>
+{
+ SwGlossaries* pGlossaries;
+ String sGroupName;
+ String sEntryName;
+
+public:
+ SwXAutoTextEntry(SwGlossaries* , const String& rGroupName, const String& rEntryName);
+ virtual ~SwXAutoTextEntry();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XText
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL createTextCursor(void) 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, 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, BOOL bAbsorb) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+ 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, 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);
+
+ //XTextRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL getText(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getStart(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getEnd(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual rtl::OUString SAL_CALL getString(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setString(const rtl::OUString& aString) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XAutoTextEntry
+ virtual void SAL_CALL applyTo(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xRange)throw( ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ void Invalidate() {pGlossaries = 0;}
+ const String& GetGroupName() {return sGroupName;}
+ const String& GetEntryName() {return sEntryName;}
+
+};
+#endif
+
+
diff --git a/sw/inc/unocoll.hxx b/sw/inc/unocoll.hxx
new file mode 100644
index 000000000000..7a2ccd198197
--- /dev/null
+++ b/sw/inc/unocoll.hxx
@@ -0,0 +1,562 @@
+/*************************************************************************
+ *
+ * $RCSfile: unocoll.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOCOLL_HXX
+#define _UNOCOLL_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#ifndef _FLYENUM_HXX //autogen
+#include <flyenum.hxx>
+#endif
+#ifndef _SV_TIMER_HXX
+#include <vcl/timer.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XPROTECTABLE_HPP_
+#include <com/sun/star/util/XProtectable.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_XINDEXACCESS_HPP_
+#include <com/sun/star/container/XIndexAccess.hpp>
+#endif
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx> // helper for implementations
+#endif
+/***************************************************
+ ***************************************************
+ *
+ ***************************************************/
+class SwDoc;
+class SwFrmFmt;
+namespace com{namespace sun {namespace star {namespace text
+{
+ class XTextTable;
+ class XTextSection;
+ class XFootnote;
+}}}}
+class SwXFrame;
+class SwFrmFmt;
+class SwFmtFtn;
+class XBookmark;
+class SwXReferenceMark;
+class SwSectionFmt;
+class SwBookmark;
+class SwFmtRefMark;
+class SwXReferenceMark;
+class SwXBookmark;
+/*-----------------11.03.98 11:19-------------------
+
+--------------------------------------------------*/
+class SwUnoCollection
+{
+ sal_Bool bObjectValid;
+ SwDoc* pDoc;
+
+ public:
+ SwUnoCollection(SwDoc* p) :
+ pDoc(p),
+ bObjectValid(sal_True){}
+
+ virtual void Invalidate();
+ sal_Bool IsValid() const {return bObjectValid;}
+
+
+ SwDoc* GetDoc() const {return pDoc;}
+};
+
+/******************************************************************************
+ *
+ ******************************************************************************/
+#define SW_SERVICE_TYPE_TEXTTABLE 0 //
+#define SW_SERVICE_TYPE_TEXTFRAME 1 //
+#define SW_SERVICE_TYPE_GRAPHIC 2
+#define SW_SERVICE_TYPE_OLE 3
+#define SW_SERVICE_TYPE_BOOKMARK 4
+#define SW_SERVICE_TYPE_FOOTNOTE 5
+#define SW_SERVICE_TYPE_ENDNOTE 6
+#define SW_SERVICE_TYPE_INDEXMARK 7 // Stichwortverzeichniseintrag
+#define SW_SERVICE_TYPE_INDEX 8 // Stichwortverzeichnis
+#define SW_SERVICE_REFERENCE_MARK 9
+#define SW_SERVICE_STYLE_CHARACTER_STYLE 10
+#define SW_SERVICE_STYLE_PARAGRAPH_STYLE 11
+#define SW_SERVICE_STYLE_FRAME_STYLE 12
+#define SW_SERVICE_STYLE_PAGE_STYLE 13
+#define SW_SERVICE_STYLE_NUMBERING_STYLE 14
+#define SW_SERVICE_CONTENT_INDEX_MARK 15
+#define SW_SERVICE_CONTENT_INDEX 16
+#define SW_SERVICE_USER_INDEX_MARK 17
+#define SW_SERVICE_USER_INDEX 18
+#define SW_SERVICE_TEXT_SECTION 19
+#define SW_SERVICE_FIELDTYPE_DATETIME 20
+#define SW_SERVICE_FIELDTYPE_USER 21
+#define SW_SERVICE_FIELDTYPE_SET_EXP 22
+#define SW_SERVICE_FIELDTYPE_GET_EXP 23
+#define SW_SERVICE_FIELDTYPE_FILE_NAME 24
+#define SW_SERVICE_FIELDTYPE_PAGE_NUM 25
+#define SW_SERVICE_FIELDTYPE_AUTHOR 26
+#define SW_SERVICE_FIELDTYPE_CHAPTER 27
+#define SW_SERVICE_FIELDTYPE_DUMMY_0 28
+#define SW_SERVICE_FIELDTYPE_GET_REFERENCE 29
+#define SW_SERVICE_FIELDTYPE_CONDITIONED_TEXT 30
+#define SW_SERVICE_FIELDTYPE_ANNOTATION 31
+#define SW_SERVICE_FIELDTYPE_INPUT 32
+#define SW_SERVICE_FIELDTYPE_MACRO 33
+#define SW_SERVICE_FIELDTYPE_DDE 34
+#define SW_SERVICE_FIELDTYPE_HIDDEN_PARA 35
+#define SW_SERVICE_FIELDTYPE_DOC_INFO 36
+#define SW_SERVICE_FIELDTYPE_TEMPLATE_NAME 37
+#define SW_SERVICE_FIELDTYPE_USER_EXT 38
+#define SW_SERVICE_FIELDTYPE_REF_PAGE_SET 39
+#define SW_SERVICE_FIELDTYPE_REF_PAGE_GET 40
+#define SW_SERVICE_FIELDTYPE_JUMP_EDIT 41
+#define SW_SERVICE_FIELDTYPE_SCRIPT 42
+#define SW_SERVICE_FIELDTYPE_DATABASE_NEXT_SET 43
+#define SW_SERVICE_FIELDTYPE_DATABASE_NUM_SET 44
+#define SW_SERVICE_FIELDTYPE_DATABASE_SET_NUM 45
+#define SW_SERVICE_FIELDTYPE_DATABASE 46
+#define SW_SERVICE_FIELDTYPE_DATABASE_NAME 47
+#define SW_SERVICE_FIELDTYPE_TABLEFIELD 48
+#define SW_SERVICE_FIELDTYPE_PAGE_COUNT 49
+#define SW_SERVICE_FIELDTYPE_PARAGRAPH_COUNT 50
+#define SW_SERVICE_FIELDTYPE_WORD_COUNT 51
+#define SW_SERVICE_FIELDTYPE_CHARACTER_COUNT 52
+#define SW_SERVICE_FIELDTYPE_TABLE_COUNT 53
+#define SW_SERVICE_FIELDTYPE_GRAPHIC_OBJECT_COUNT 54
+#define SW_SERVICE_FIELDTYPE_EMBEDDED_OBJECT_COUNT 55
+#define SW_SERVICE_FIELDTYPE_DOCINFO_CHANGE_AUTHOR 56
+#define SW_SERVICE_FIELDTYPE_DOCINFO_CHANGE_DATE_TIME 57
+#define SW_SERVICE_FIELDTYPE_DOCINFO_EDIT_TIME 58
+#define SW_SERVICE_FIELDTYPE_DOCINFO_DESCRIPTION 59
+#define SW_SERVICE_FIELDTYPE_DOCINFO_CREATE_AUTHOR 60
+#define SW_SERVICE_FIELDTYPE_DOCINFO_CREATE_DATE_TIME 61
+#define SW_SERVICE_FIELDTYPE_DOCINFO_INFO_0 62
+#define SW_SERVICE_FIELDTYPE_DOCINFO_INFO_1 63
+#define SW_SERVICE_FIELDTYPE_DOCINFO_INFO_2 64
+#define SW_SERVICE_FIELDTYPE_DOCINFO_INFO_3 65
+#define SW_SERVICE_FIELDTYPE_DOCINFO_PRINT_AUTHOR 66
+#define SW_SERVICE_FIELDTYPE_DOCINFO_PRINT_DATE_TIME 67
+#define SW_SERVICE_FIELDTYPE_DOCINFO_KEY_WORDS 68
+#define SW_SERVICE_FIELDTYPE_DOCINFO_SUBJECT 69
+#define SW_SERVICE_FIELDTYPE_DOCINFO_TITLE 70
+#define SW_SERVICE_FIELDTYPE_DOCINFO_REVISION 71
+#define SW_SERVICE_FIELDTYPE_DUMMY_1 72
+#define SW_SERVICE_FIELDTYPE_DUMMY_2 73
+#define SW_SERVICE_FIELDTYPE_DUMMY_3 74
+#define SW_SERVICE_FIELDTYPE_DUMMY_4 75
+#define SW_SERVICE_FIELDTYPE_DUMMY_5 76
+#define SW_SERVICE_FIELDTYPE_DUMMY_6 77
+#define SW_SERVICE_FIELDTYPE_DUMMY_7 78
+#define SW_SERVICE_FIELDTYPE_DUMMY_8 79
+#define SW_SERVICE_FIELDMASTER_USER 80
+#define SW_SERVICE_FIELDMASTER_DDE 81
+#define SW_SERVICE_FIELDMASTER_SET_EXP 82
+#define SW_SERVICE_FIELDMASTER_DATABASE 83
+#define SW_SERVICE_FIELDMASTER_DUMMY1 84
+#define SW_SERVICE_FIELDMASTER_DUMMY2 85
+#define SW_SERVICE_FIELDMASTER_DUMMY3 86
+#define SW_SERVICE_FIELDMASTER_DUMMY4 87
+#define SW_SERVICE_FIELDMASTER_DUMMY5 88
+#define SW_SERVICE_INDEX_ILLUSTRATIONS 89
+#define SW_SERVICE_INDEX_OBJECTS 90
+#define SW_SERVICE_INDEX_TABLES 91
+#define SW_SERVICE_INDEX_BIBLIOGRAPHY 92
+#define SW_SERVICE_PARAGRAPH 93
+#define SW_SERVICE_FIELDTYPE_INPUT_USER 94
+#define SW_SERVICE_FIELDTYPE_HIDDEN_TEXT 95
+#define SW_SERVICE_STYLE_CONDITIONAL_PARAGRAPH_STYLE 96
+#define SW_SERVICE_NUMBERING_RULES 97
+
+#define SW_SERVICE_LAST SW_SERVICE_NUMBERING_RULES
+
+
+#define SW_SERVICE_INVALID USHRT_MAX
+
+class SwXServiceProvider
+{
+public:
+ static rtl::OUString GetProviderName(sal_uInt16 nObjectType);
+ static sal_uInt16 GetProviderType(const rtl::OUString& rServiceName);
+ static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > MakeInstance(sal_uInt16 nObjectType, SwDoc* pDoc);
+ static ::com::sun::star::uno::Sequence<rtl::OUString> GetAllServiceNames();
+
+};
+/*-----------------11.12.97 09:38-------------------
+
+--------------------------------------------------*/
+typedef
+cppu::WeakImplHelper3
+<
+ ::com::sun::star::container::XNameAccess,
+ ::com::sun::star::container::XIndexAccess,
+ ::com::sun::star::lang::XServiceInfo
+>
+SwCollectionBaseClass;
+class SwXTextTables : public SwCollectionBaseClass,
+ public SwUnoCollection
+{
+public:
+ SwXTextTables(SwDoc* pDoc);
+ virtual ~SwXTextTables();
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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& Name) 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& Name) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ static ::com::sun::star::text::XTextTable* GetObject( SwFrmFmt& rFmt );
+};
+
+/*-----------------11.12.97 10:14-------------------
+
+--------------------------------------------------*/
+class SwXFrames : public SwCollectionBaseClass,
+ public SwUnoCollection
+{
+ const FlyCntType eType;
+protected:
+
+ SwXFrame* GetFrmByName( const String& rName );
+ SwXFrame* GetFrmByIndex( sal_Int32 nIndex );
+
+ void RemoveFrame(const rtl::OUString& rName, FlyCntType eType);
+
+public:
+ SwXFrames(SwDoc* pDoc, FlyCntType eSet);
+ virtual ~SwXFrames();
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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& Name) 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& Name) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ FlyCntType GetType()const{return eType;}
+ static SwXFrame* GetObject( SwFrmFmt& rFmt, FlyCntType eType );
+
+};
+
+/*-----------------20.02.98 10:51-------------------
+
+--------------------------------------------------*/
+class SwXTextFrames : public SwXFrames
+{
+public:
+ SwXTextFrames(SwDoc* pDoc);
+ virtual ~SwXTextFrames();
+
+// SMART_UNO_DECLARATION( SwXTextFrames, UsrObject );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+};
+
+/*-----------------20.02.98 10:55-------------------
+
+--------------------------------------------------*/
+class SwXTextGraphicObjects : public SwXFrames
+{
+public:
+ SwXTextGraphicObjects(SwDoc* pDoc);
+ virtual ~SwXTextGraphicObjects();
+
+// SMART_UNO_DECLARATION( SwXTextGraphicObjects, UsrObject );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+};
+
+/*-----------------20.02.98 10:57-------------------
+
+--------------------------------------------------*/
+class SwXTextEmbeddedObjects : public SwXFrames
+{
+
+public:
+ SwXTextEmbeddedObjects(SwDoc* pDoc);
+ virtual ~SwXTextEmbeddedObjects();
+
+// SMART_UNO_DECLARATION( SwXTextEmbeddedObjects, UsrObject );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+};
+
+/*-----------------12.02.98 07:58-------------------
+
+--------------------------------------------------*/
+class SwXTextSections : public cppu::WeakImplHelper4
+<
+ ::com::sun::star::container::XNameAccess,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::container::XIndexAccess,
+ ::com::sun::star::util::XProtectable
+>,
+ public SwUnoCollection
+{
+ Timer aWrongPasswdTimer;
+ sal_uInt16 nWrongPasswd;
+ DECL_LINK(WrongPasswordTimerHdl, Timer*);
+public:
+ SwXTextSections(SwDoc* pDoc);
+ virtual ~SwXTextSections();
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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& Name) 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& Name) 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);
+
+ //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(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ static ::com::sun::star::text::XTextSection* GetObject( SwSectionFmt& rFmt );
+};
+/*-----------------12.02.98 07:51-------------------
+
+--------------------------------------------------*/
+class SwXBookmarks : public SwCollectionBaseClass,
+ public SwUnoCollection
+{
+public:
+ SwXBookmarks(SwDoc* pDoc);
+ virtual ~SwXBookmarks();
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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& Name) 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& Name) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ static SwXBookmark* GetObject( SwBookmark& rBkm, SwDoc* pDoc );
+};
+
+/*-----------------12.02.98 08:01-------------------
+
+--------------------------------------------------*/
+typedef
+cppu::WeakImplHelper2
+<
+ ::com::sun::star::container::XIndexAccess,
+ ::com::sun::star::lang::XServiceInfo
+>
+SwSimpleIndexAccessBaseClass;
+class SwXFootnotes : public SwSimpleIndexAccessBaseClass,
+ public SwUnoCollection
+{
+ sal_Bool bEndnote;
+
+public:
+ SwXFootnotes(sal_Bool bEnd, SwDoc* pDoc);
+ virtual ~SwXFootnotes();
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ static ::com::sun::star::uno::Reference< ::com::sun::star::text::XFootnote> GetObject( SwDoc& rDoc, const SwFmtFtn& rFmt );
+};
+
+/* -----------------27.08.98 13:10-------------------
+ *
+ * --------------------------------------------------*/
+class SwXReferenceMarks : public SwCollectionBaseClass,
+ public SwUnoCollection
+{
+public:
+ SwXReferenceMarks(SwDoc* pDoc);
+ virtual ~SwXReferenceMarks();
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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& Name) 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& Name) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ static SwXReferenceMark* GetObject( SwDoc* pDoc, const SwFmtRefMark* pMark );
+};
+
+/* -----------------01.09.98 14:06-------------------
+ *
+ * --------------------------------------------------*/
+class SwXRedlines : public SwSimpleIndexAccessBaseClass,
+ public SwUnoCollection
+{
+public:
+ SwXRedlines(SwDoc* pDoc);
+ virtual ~SwXRedlines();
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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/sw/inc/unocrsr.hxx b/sw/inc/unocrsr.hxx
new file mode 100644
index 000000000000..558d6644e98e
--- /dev/null
+++ b/sw/inc/unocrsr.hxx
@@ -0,0 +1,124 @@
+/*************************************************************************
+ *
+ * $RCSfile: unocrsr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOCRSR_HXX
+#define _UNOCRSR_HXX
+
+#include "swcrsr.hxx"
+#include "calbck.hxx"
+
+
+class SwUnoCrsr : public virtual SwCursor, public SwModify
+{
+ BOOL bRemainInSection;
+public:
+ SwUnoCrsr( const SwPosition &rPos, SwPaM* pRing = 0 );
+ SwUnoCrsr( SwUnoCrsr& );
+ virtual ~SwUnoCrsr();
+
+ virtual operator SwUnoCrsr* ();
+
+// virtual SwCursor* Create( SwPaM* pRing = 0 ) const;
+
+ // gibt es eine Selection vom Content in die Tabelle
+ // Return Wert gibt an, ob der Crsr auf der alten Position verbleibt
+ virtual FASTBOOL IsSelOvr( int eFlags =
+ ( SELOVER_CHECKNODESSECTION |
+ SELOVER_TOGGLE | SELOVER_CHANGEPOS ));
+
+ BOOL IsRemainInSection() const { return bRemainInSection; }
+ void SetRemainInSection( BOOL bFlag ) { bRemainInSection = bFlag; }
+
+ DECL_FIXEDMEMPOOL_NEWDEL( SwUnoCrsr )
+};
+
+
+
+class SwUnoTableCrsr : public virtual SwUnoCrsr, public virtual SwTableCursor
+{
+ // die Selection hat die gleiche Reihenfolge wie die
+ // TabellenBoxen. D.h., wird aus dem einen Array an einer Position
+ // etwas geloescht, dann muss es auch im anderen erfolgen!!
+ SwCursor aTblSel;
+
+public:
+ SwUnoTableCrsr( const SwPosition& rPos );
+ virtual ~SwUnoTableCrsr();
+
+// virtual SwCursor* Create( SwPaM* pRing = 0 ) const;
+
+ virtual operator SwUnoCrsr* ();
+ virtual operator SwUnoTableCrsr* ();
+ virtual operator SwTableCursor* ();
+
+ // gibt es eine Selection vom Content in die Tabelle
+ // Return Wert gibt an, ob der Crsr auf der alten Position verbleibt
+ virtual FASTBOOL IsSelOvr( int eFlags =
+ ( SELOVER_CHECKNODESSECTION |
+ SELOVER_TOGGLE | SELOVER_CHANGEPOS ));
+
+ void MakeBoxSels();
+ SwCursor& GetSelRing() { return aTblSel; }
+ const SwCursor& GetSelRing() const { return aTblSel; }
+};
+
+
+
+#endif
diff --git a/sw/inc/unodraw.hxx b/sw/inc/unodraw.hxx
new file mode 100644
index 000000000000..00d50c2ecd48
--- /dev/null
+++ b/sw/inc/unodraw.hxx
@@ -0,0 +1,248 @@
+/*************************************************************************
+ *
+ * $RCSfile: unodraw.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNODRAW_HXX
+#define _UNODRAW_HXX
+
+#ifndef _SVX_FMDPAGE_HXX //autogen
+#include <svx/fmdpage.hxx>
+#endif
+#ifndef _CALBCK_HXX //autogen
+#include <calbck.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTCONTENT_HPP_
+#include <com/sun/star/text/XTextContent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XSHAPE_HPP_
+#include <com/sun/star/drawing/XShape.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> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx> // helper for implementations
+#endif
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+
+class SdrMarkList;
+class SdrView;
+class SwDoc;
+/******************************************************************************
+ *
+ ******************************************************************************/
+class SwFmDrawPage : public SvxFmDrawPage
+{
+ SdrPageView* pPageView;
+protected:
+
+ // Erzeugen eines SdrObjects anhand einer Description. Kann von
+ // abgeleiteten Klassen dazu benutzt werden, eigene ::com::sun::star::drawing::Shapes zu
+ // unterstuetzen (z.B. Controls)
+ virtual SdrObject *_CreateSdrObject( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & xShape );
+
+ // Die folgende Methode wird gerufen, wenn ein SvxShape-Objekt angelegt
+ // werden soll. abgeleitete Klassen koennen hier eine Ableitung oder
+ // ein ein SvxShape aggregierendes Objekt anlegen.
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > _CreateShape( SdrObject *pObj ) const;
+
+
+public:
+ SwFmDrawPage( SdrPage* pPage );
+ virtual ~SwFmDrawPage();
+
+ const SdrMarkList& PreGroup(const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > & xShapes);
+ void PreUnGroup(const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapeGroup > xShapeGroup);
+// void PostGroup(); ?? wird es noch gebraucht ??
+
+ SdrView* GetDrawView() {return pView;}
+ SdrPageView* GetPageView();
+ void RemovePageView();
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > GetInterface( SdrObject* pObj );
+};
+
+/* -----------------09.12.98 08:57-------------------
+ *
+ * --------------------------------------------------*/
+typedef cppu::WeakAggImplHelper3
+<
+ ::com::sun::star::drawing::XDrawPage,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::drawing::XShapeGrouper
+>
+SwXDrawPageBaseClass;
+class SwXDrawPage : public SwXDrawPageBaseClass
+{
+ SwDoc* pDoc;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XAggregation > xPageAgg;
+ SwFmDrawPage* pDrawPage;
+public:
+ SwXDrawPage(SwDoc* pDoc);
+ ~SwXDrawPage();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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);
+
+ //XShapes
+ virtual void SAL_CALL add(const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & xShape) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL remove(const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & xShape) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XShapeGrouper
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapeGroup > SAL_CALL group(const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > & xShapes) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL ungroup(const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapeGroup > & aGroup) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ SwFmDrawPage* GetSvxPage();
+ void Invalidate() {pDoc = 0;}
+};
+/* -----------------22.01.99 10:20-------------------
+ *
+ * --------------------------------------------------*/
+class SwShapeDescriptor_Impl;
+typedef
+cppu::WeakAggImplHelper4
+<
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::text::XTextContent,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::lang::XUnoTunnel
+>
+SwXShapeBaseClass;
+class SwXShape : public SwXShapeBaseClass,
+ public SwClient
+{
+ friend class SwHTMLImageWatcher;
+ friend class SwHTMLParser;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XAggregation > xShapeAgg;
+ SfxItemPropertySet aPropSet;
+ const SfxItemPropertyMap* _pMap;
+
+ SwShapeDescriptor_Impl* pImpl;
+
+ sal_Bool m_bDescriptor;
+
+ SwFrmFmt* GetFrmFmt() const { return (SwFrmFmt*)GetRegisteredIn(); }
+
+ SvxShape* GetSvxShape();
+public:
+ SwXShape(::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & xShape);
+ virtual ~SwXShape();
+
+ TYPEINFO();
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) 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);
+
+
+ //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);
+
+ //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(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XComponent
+ virtual void SAL_CALL dispose(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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 );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ SwShapeDescriptor_Impl* GetDescImpl() {return pImpl;}
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XAggregation > GetAggregationInterface() {return xShapeAgg;}
+};
+#endif
+
+
diff --git a/sw/inc/unofield.hxx b/sw/inc/unofield.hxx
new file mode 100644
index 000000000000..74897d9228e9
--- /dev/null
+++ b/sw/inc/unofield.hxx
@@ -0,0 +1,331 @@
+/*************************************************************************
+ *
+ * $RCSfile: unofield.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOFIELD_HXX
+#define _UNOFIELD_HXX
+
+#ifndef _COM_SUN_STAR_TEXT_XDEPENDENTTEXTFIELD_HPP_
+#include <com/sun/star/text/XDependentTextField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XREFRESHABLE_HPP_
+#include <com/sun/star/util/XRefreshable.hpp>
+#endif
+#ifndef _CALBCK_HXX //autogen
+#include <calbck.hxx>
+#endif
+#ifndef _UNOOBJ_HXX
+#include <unoobj.hxx>
+#endif
+#ifndef _UNOCOLL_HXX
+#include <unocoll.hxx>
+#endif
+
+class SwFieldType;
+class SwDoc;
+class SwFmtFld;
+class SwField;
+/* -----------------04.12.98 12:49-------------------
+ *
+ * --------------------------------------------------*/
+class SwXFieldMaster : public cppu::WeakImplHelper4
+<
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::lang::XUnoTunnel,
+ ::com::sun::star::lang::XComponent
+>,
+ public SwClient
+{
+ SwEventListenerContainer aLstnrCntnr;
+ sal_uInt16 nResTypeId;
+ SwDoc* m_pDoc;
+
+ sal_Bool m_bIsDescriptor;
+
+ String sParam1; //Content / Database / NumberingSeparator
+ String sParam2; // - /DataTablename
+ String sParam3; // - /DataFieldName
+ double fParam1; // Value / -
+ sal_Int8 nParam1; // ChapterNumberingLevel
+ sal_Bool bParam1; // IsExpression
+
+public:
+// automatisch auskommentiert - [getImplementation] - Wird von OWeakObject nicht weiter unterstützt!
+// // fuer getImplementation() und fuer den ServiceProvider
+
+ SwXFieldMaster(SwDoc* pDoc, sal_uInt16 nResId);
+ SwXFieldMaster(SwFieldType& rType, SwDoc* pDoc);
+ virtual ~SwXFieldMaster();
+
+ TYPEINFO();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) 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);
+
+ //XComponent
+ virtual void SAL_CALL dispose(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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 );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ SwFieldType* GetFldType() const { return (SwFieldType*)GetRegisteredIn(); }
+ SwDoc* GetDoc() {return m_pDoc;}
+
+ sal_Bool IsDescriptor()const {return m_bIsDescriptor;}
+ sal_uInt16 GetResId() const {return nResTypeId;}
+};
+
+/* -----------------04.12.98 12:49-------------------
+ *
+ * --------------------------------------------------*/
+struct SwFieldProperties_Impl;
+class SwXTextField : public cppu::WeakImplHelper4
+<
+ ::com::sun::star::text::XDependentTextField,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XUnoTunnel
+>,
+ public SwClient
+{
+ SwEventListenerContainer aLstnrCntnr;
+ const SwFmtFld* pFmtFld;
+ SwDoc* m_pDoc;
+
+ sal_Bool m_bIsDescriptor;
+ sal_uInt16 m_nServiceId;
+ SwFieldProperties_Impl* m_pProps;
+ String m_sTypeName;
+
+
+ SwFieldType* GetFldType() const { return (SwFieldType*)GetRegisteredIn(); }
+ SwDoc* GetDoc() {return m_pDoc;}
+public:
+ SwXTextField(sal_uInt16 nServiceId);
+ SwXTextField(const SwFmtFld& rFmt, SwDoc* pDoc);
+ virtual ~SwXTextField();
+
+ TYPEINFO();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XDependentTextField
+ virtual void SAL_CALL attachTextFieldMaster(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & xFieldMaster) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > SAL_CALL getTextFieldMaster(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //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(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XComponent
+ virtual void SAL_CALL dispose(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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);
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ void attachToRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange)throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+
+ const SwField* GetField() const;
+ const SwFmtFld* GetFldFmt(){return GetField() ? pFmtFld : 0; };
+};
+/* -----------------21.12.98 10:26-------------------
+ *
+ * --------------------------------------------------*/
+typedef
+cppu::WeakImplHelper2
+<
+ ::com::sun::star::container::XNameAccess,
+ ::com::sun::star::lang::XServiceInfo
+>
+SwXTextFieldMastersBaseClass;
+class SwXTextFieldMasters : public SwXTextFieldMastersBaseClass,
+ public SwUnoCollection
+{
+public:
+ SwXTextFieldMasters(SwDoc* pDoc);
+ virtual ~SwXTextFieldMasters();
+
+ //XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName(const rtl::OUString& Name) 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& Name) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+};
+
+/* -----------------21.12.98 10:26-------------------
+ *
+ * --------------------------------------------------*/
+typedef
+cppu::WeakImplHelper3
+<
+ ::com::sun::star::container::XEnumerationAccess,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::util::XRefreshable
+>
+SwXTextFieldTypesBaseClass;
+class SwXTextFieldTypes : public SwXTextFieldTypesBaseClass,
+ public SwUnoCollection
+{
+public:
+ SwXTextFieldTypes(SwDoc* pDoc);
+ virtual ~SwXTextFieldTypes();
+
+ //XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration(void) 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);
+
+ // ::com::sun::star::util::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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+};
+
+/* -----------------21.12.98 14:49-------------------
+ *
+ * --------------------------------------------------*/
+class SwXFieldEnumeration : public cppu::WeakImplHelper2
+<
+ ::com::sun::star::container::XEnumeration,
+ ::com::sun::star::lang::XServiceInfo
+>,
+ public SwClient
+{
+ SwDoc* pDoc;
+ const SwFieldType* pLastFieldType;
+ const SwFieldType* pNextFieldType;
+ const SwFmtFld* pLastFieldFmt;
+ const SwFmtFld* pNextFieldFmt;
+
+public:
+ SwXFieldEnumeration(SwDoc* pDoc);
+ virtual ~SwXFieldEnumeration();
+
+ //XEnumeration
+ virtual BOOL SAL_CALL hasMoreElements(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL nextElement(void) throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+};
+#endif
+
+
+
diff --git a/sw/inc/unoframe.hxx b/sw/inc/unoframe.hxx
new file mode 100644
index 000000000000..fff9dd43f080
--- /dev/null
+++ b/sw/inc/unoframe.hxx
@@ -0,0 +1,363 @@
+/*************************************************************************
+ *
+ * $RCSfile: unoframe.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOFRAME_HXX
+#define _UNOFRAME_HXX
+
+#ifndef _UNOOBJ_HXX
+#include <unoobj.hxx>
+#endif
+#ifndef _SFX_OBJSH_HXX
+#include <sfx2/objsh.hxx>
+#endif
+#ifndef _COM_SUN_STAR_DOCUMENT_XEMBEDDEDOBJECTSUPPLIER_HPP_
+#include <com/sun/star/document/XEmbeddedObjectSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTEMBEDDEDOBJECT_HPP_
+#include <com/sun/star/text/XTextEmbeddedObject.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTFRAME_HPP_
+#include <com/sun/star/text/XTextFrame.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XSHAPE_HPP_
+#include <com/sun/star/drawing/XShape.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XMODIFYLISTENER_HPP_
+#include <com/sun/star/util/XModifyListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+
+/*-----------------12.02.98 11:21-------------------
+
+--------------------------------------------------*/
+class BaseFrameProperties_Impl;
+class SwXFrame : public cppu::WeakImplHelper6
+<
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::beans::XPropertyState,
+ ::com::sun::star::drawing::XShape,
+ ::com::sun::star::container::XNamed,
+ ::com::sun::star::lang::XUnoTunnel
+>,
+ public SwClient
+{
+ SwEventListenerContainer aLstnrCntnr;
+ SfxItemPropertySet aPropSet;
+ const SfxItemPropertyMap* _pMap;
+
+ const FlyCntType eType;
+
+ // Descriptor-interface
+ BaseFrameProperties_Impl* pProps;
+ sal_Bool bIsDescriptor;
+ String sName;
+
+public:
+ SwXFrame();
+ SwXFrame(FlyCntType eSet,
+ const SfxItemPropertyMap* pMap); //Descriptor-If
+ SwXFrame(SwFrmFmt& rFrmFmt, FlyCntType eSet,
+ const SfxItemPropertyMap* pMap);
+ virtual ~SwXFrame();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ TYPEINFO();
+
+ //XNamed
+ virtual rtl::OUString SAL_CALL getName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setName(const rtl::OUString& Name_) 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);
+
+ //XShape
+ virtual ::com::sun::star::awt::Point SAL_CALL getPosition( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPosition( const ::com::sun::star::awt::Point& aPosition ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSize( const ::com::sun::star::awt::Size& aSize ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
+
+ //XShapeDescriptor
+ virtual rtl::OUString SAL_CALL getShapeType(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //Basisimplementierung
+ //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);
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getAnchor(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ void attachToRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange)throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+
+ SwFrmFmt* GetFrmFmt() const { return (SwFrmFmt*)GetRegisteredIn(); }
+ FlyCntType GetFlyCntType()const {return eType;}
+
+ sal_Bool IsDescriptor() const {return bIsDescriptor;}
+ void ResetDescriptor();
+};
+/*-----------------20.02.98 11:28-------------------
+
+--------------------------------------------------*/
+typedef cppu::WeakImplHelper2
+<
+ ::com::sun::star::text::XTextFrame,
+ ::com::sun::star::container::XEnumerationAccess
+>
+SwXTextFrameBaseClass;
+
+class SwXTextFrame : public SwXTextFrameBaseClass,
+ public SwXText,
+ public SwXFrame
+{
+ const SfxItemPropertyMap* _pMap;
+
+protected:
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > createCursor();
+public:
+ SwXTextFrame();
+ SwXTextFrame(SwFrmFmt& rFmt);
+ virtual ~SwXTextFrame();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire( ) throw();
+ virtual void SAL_CALL release( ) throw();
+
+ //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);
+
+ //XTextFrame
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL getText(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XText
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL createTextCursor(void) 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 );
+
+ //XEnumerationAccess - frueher XParagraphEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration(void) 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);
+
+ //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);
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ void * SAL_CALL operator new( size_t ) throw();
+ void SAL_CALL operator delete( void * ) throw();
+};
+/*-----------------20.02.98 11:28-------------------
+
+--------------------------------------------------*/
+typedef cppu::WeakImplHelper1
+<
+ ::com::sun::star::text::XTextContent
+>
+SwXTextGraphicObjectBaseClass;
+class SwXTextGraphicObject : public SwXTextGraphicObjectBaseClass,
+ public SwXFrame
+{
+public:
+ SwXTextGraphicObject();
+ SwXTextGraphicObject(SwFrmFmt& rFmt);
+ virtual ~SwXTextGraphicObject();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire( ) throw();
+ virtual void SAL_CALL release( ) throw();
+
+ //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);
+
+ //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(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XComponent
+ virtual void SAL_CALL dispose(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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 );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ void * SAL_CALL operator new( size_t ) throw();
+ void SAL_CALL operator delete( void * ) throw();
+};
+/*-----------------20.02.98 11:28-------------------
+
+--------------------------------------------------*/
+typedef cppu::WeakImplHelper2
+<
+ ::com::sun::star::text::XTextEmbeddedObject,
+ ::com::sun::star::document::XEmbeddedObjectSupplier
+>SwXTextEmbeddedObjectBaseClass;
+
+class SwXTextEmbeddedObject : public SwXTextEmbeddedObjectBaseClass,
+ public SwXFrame
+{
+public:
+ SwXTextEmbeddedObject();
+ SwXTextEmbeddedObject(SwFrmFmt& rFmt);
+ virtual ~SwXTextEmbeddedObject();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire( ) throw();
+ virtual void SAL_CALL release( ) throw();
+
+ //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);
+
+ //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(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XComponent
+ virtual void SAL_CALL dispose(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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 );
+
+ //XEmbeddedObjectSupplier,
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL getEmbeddedObject(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XEmbeddedObject
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getObject( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setObject( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xObject ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ void * SAL_CALL operator new( size_t ) throw();
+ void SAL_CALL operator delete( void * ) throw();
+};
+
+
+
+class SwXOLEListener : public cppu::WeakImplHelper1
+<
+ ::com::sun::star::util::XModifyListener
+>,
+ public SwClient
+{
+ SvPtrarr aFmts;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > GetModel( const SwFmt& rFmt, SwOLENode** ppNd = 0 ) const;
+ SfxObjectShell* GetObjShell( const SwFmt& rFmt,
+ SwOLENode** ppNd = 0 ) const;
+ sal_uInt16 FindEntry( const ::com::sun::star::lang::EventObject& Source, SwOLENode** ppNd = 0 );
+public:
+
+// ::com::sun::star::lang::XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
+
+// ::com::sun::star::util::XModifyListener
+ virtual void SAL_CALL modified( const ::com::sun::star::lang::EventObject& aEvent ) throw(::com::sun::star::uno::RuntimeException);
+
+ sal_Bool AddOLEFmt( SwFrmFmt& rFmt );
+ void Modify( SfxPoolItem*, SfxPoolItem* );
+};
+
+
+
+#endif
+
diff --git a/sw/inc/unoidx.hxx b/sw/inc/unoidx.hxx
new file mode 100644
index 000000000000..ec211a034fcd
--- /dev/null
+++ b/sw/inc/unoidx.hxx
@@ -0,0 +1,366 @@
+/*************************************************************************
+ *
+ * $RCSfile: unoidx.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOIDX_HXX
+#define _UNOIDX_HXX
+
+#ifndef _COM_SUN_STAR_TEXT_XDOCUMENTINDEXMARK_HPP_
+#include <com/sun/star/text/XDocumentIndexMark.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XDOCUMENTINDEX_HPP_
+#include <com/sun/star/text/XDocumentIndex.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXREPLACE_HPP_
+#include <com/sun/star/container/XIndexReplace.hpp>
+#endif
+#ifndef _UNOOBJ_HXX
+#include <unoobj.hxx>
+#endif
+#ifndef _UNOCOLL_HXX
+#include <unocoll.hxx>
+#endif
+#ifndef _TOXE_HXX
+#include <toxe.hxx>
+#endif
+class SwTOXBaseSection;
+class SwTOXMark;
+class SwTOXType;
+/* -----------------07.12.98 10:08-------------------
+ *
+ * --------------------------------------------------*/
+class SwDocIdxProperties_Impl;
+class SwXIndexStyleAccess_Impl;
+class SwXIndexTokenAccess_Impl;
+
+class SwXDocumentIndex : public cppu::WeakImplHelper5
+<
+ ::com::sun::star::text::XDocumentIndex,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::container::XNamed,
+ ::com::sun::star::lang::XUnoTunnel
+>,
+ public SwClient
+{
+ friend class SwXIndexStyleAccess_Impl;
+ friend class SwXIndexTokenAccess_Impl;
+
+ SwEventListenerContainer aLstnrCntnr;
+ const SfxItemPropertyMap* _pMap;
+ SwDoc* m_pDoc;
+ const SwTOXBaseSection* pBase;
+ TOXTypes eTOXType;
+
+ //Descriptor-Interface
+ sal_Bool bIsDescriptor;
+ SwDocIdxProperties_Impl* pProps;
+
+ SwXIndexStyleAccess_Impl* pStyleAccess;
+ SwXIndexTokenAccess_Impl* pTokenAccess;
+
+ SwSectionFmt* GetFmt()const {return (SwSectionFmt*)GetRegisteredIn();}
+
+ sal_Bool IsDescriptor() const {return bIsDescriptor;}
+ const SwDocIdxProperties_Impl* GetProperties_Impl() const { return pProps;}
+ SwDocIdxProperties_Impl* GetProperties_Impl() { return pProps;}
+ TOXTypes GetTOXType() const {return eTOXType;}
+
+ SwXIndexStyleAccess_Impl* GetStyleAccess() const {return pStyleAccess;}
+ void SetStyleAccess(SwXIndexStyleAccess_Impl* pSet)
+ {pStyleAccess = pSet;}
+
+ SwXIndexTokenAccess_Impl* GetTokenAccess() const {return pTokenAccess;}
+ void SetTokenAccess(SwXIndexTokenAccess_Impl* pSet)
+ {pTokenAccess = pSet;}
+public:
+ SwXDocumentIndex(const SwTOXBaseSection* = 0, SwDoc* = 0);
+ //Descriptor-Ctor
+ SwXDocumentIndex(TOXTypes eToxType, SwDoc& rDoc);
+ virtual ~SwXDocumentIndex();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XDocumentIndex
+ virtual ::rtl::OUString SAL_CALL getServiceName( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL update( ) 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);
+
+ //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(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XComponent
+ virtual void SAL_CALL dispose(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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 );
+
+ //XNamed
+ virtual rtl::OUString SAL_CALL getName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setName(const rtl::OUString& Name_) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ void attachToRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange)throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+};
+/* -----------------07.12.98 10:08-------------------
+ *
+ * --------------------------------------------------*/
+class SwXDocumentIndexMark : public cppu::WeakImplHelper4
+<
+ ::com::sun::star::text::XDocumentIndexMark,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XUnoTunnel
+>,
+ public SwClient
+{
+ SwEventListenerContainer aLstnrCntnr;
+ SwDoc* m_pDoc;
+ const SwTOXMark* m_pTOXMark;
+ const SfxItemPropertyMap* _pMap;
+
+ sal_Bool bIsDescriptor;
+ TOXTypes eType;
+ sal_uInt16 nLevel;
+ String sAltText;
+ String sPrimaryKey;
+ String sSecondaryKey;
+ String sUserIndexName;
+
+ void InitMap(TOXTypes eToxType);
+public:
+ SwXDocumentIndexMark(TOXTypes eToxType);
+ SwXDocumentIndexMark(const SwTOXType* pType,
+ const SwTOXMark* pMark,
+ SwDoc* pDc);
+ virtual ~SwXDocumentIndexMark();
+
+ TYPEINFO();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ virtual rtl::OUString SAL_CALL getMarkEntry(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setMarkEntry(const rtl::OUString& aIndexEntry) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XComponent
+ virtual void SAL_CALL dispose(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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);
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ void attachToRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange)throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+
+ SwTOXType* GetTOXType() const {return (SwTOXType*)GetRegisteredIn();}
+ const SwTOXMark* GetTOXMark() const {return m_pTOXMark;}
+
+ static SwXDocumentIndexMark* GetObject(SwTOXType* pType, const SwTOXMark* pMark,
+ SwDoc* pDoc);
+};
+/* -----------------05.05.99 12:27-------------------
+ *
+ * --------------------------------------------------*/
+
+class SwXDocumentIndexes : public SwCollectionBaseClass,
+ public SwUnoCollection
+{
+public:
+ SwXDocumentIndexes(SwDoc* pDoc);
+ virtual ~SwXDocumentIndexes();
+
+// SMART_UNO_DECLARATION( SwXDocumentIndexes, UsrObject );
+
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::reflection::XIdlClass > > getIdlClasses(void)
+
+// throw( ::com::sun::star::uno::RuntimeException );
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// virtual sal_Bool queryInterface( ::com::sun::star::uno::Uik aUik, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & rOut );
+
+
+ //XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName(const rtl::OUString& Name) 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& Name) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+};
+/* -----------------13.09.99 16:39-------------------
+
+ --------------------------------------------------*/
+class SwXIndexStyleAccess_Impl : public cppu::WeakImplHelper2
+<
+ ::com::sun::star::container::XIndexReplace,
+ ::com::sun::star::lang::XServiceInfo
+>
+{
+ SwXDocumentIndex& rParent;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XDocumentIndex > xParent;
+public:
+ SwXIndexStyleAccess_Impl(SwXDocumentIndex& rParentIdx);
+ virtual ~SwXIndexStyleAccess_Impl();
+
+ //XIndexReplace
+ virtual void SAL_CALL replaceByIndex( sal_Int32 Index, const ::com::sun::star::uno::Any& Element ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+};
+
+/* -----------------13.09.99 16:39-------------------
+
+ --------------------------------------------------*/
+class SwXIndexTokenAccess_Impl : public cppu::WeakImplHelper2
+<
+ ::com::sun::star::container::XIndexReplace,
+ ::com::sun::star::lang::XServiceInfo
+>
+{
+ SwXDocumentIndex& rParent;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XDocumentIndex > xParent;
+ sal_Int32 nCount;
+public:
+ SwXIndexTokenAccess_Impl(SwXDocumentIndex& rParentIdx);
+ virtual ~SwXIndexTokenAccess_Impl();
+
+
+ //XIndexReplace
+ virtual void SAL_CALL replaceByIndex( sal_Int32 Index, const ::com::sun::star::uno::Any& Element ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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/sw/inc/unomap.hxx b/sw/inc/unomap.hxx
new file mode 100644
index 000000000000..5259c1c3134c
--- /dev/null
+++ b/sw/inc/unomap.hxx
@@ -0,0 +1,290 @@
+/*************************************************************************
+ *
+ * $RCSfile: unomap.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOMAP_HXX
+#define _UNOMAP_HXX
+
+#ifndef _SFX_ITEMPROP_HXX //autogen
+#include <svtools/itemprop.hxx>
+#endif
+
+#define PROPERTY_NONE 0
+
+#define PROPERTY_MAP_TEXT_CURSOR 0
+#define PROPERTY_MAP_CHAR_STYLE 1
+#define PROPERTY_MAP_PARA_STYLE 2
+#define PROPERTY_MAP_FRAME_STYLE 3
+#define PROPERTY_MAP_PAGE_STYLE 4
+#define PROPERTY_MAP_NUM_STYLE 5
+#define PROPERTY_MAP_SECTION 6
+#define PROPERTY_MAP_TEXT_TABLE 7
+#define PROPERTY_MAP_TABLE_CELL 8
+#define PROPERTY_MAP_TABLE_RANGE 9
+#define PROPERTY_MAP_TEXT_SEARCH 10
+#define PROPERTY_MAP_TEXT_FRAME 11
+#define PROPERTY_MAP_TEXT_GRAPHIC 12
+#define PROPERTY_MAP_TEXT_SHAPE 13
+#define PROPERTY_MAP_INDEX_USER 14
+#define PROPERTY_MAP_INDEX_CNTNT 15
+#define PROPERTY_MAP_INDEX_IDX 16
+#define PROPERTY_MAP_USER_MARK 17
+#define PROPERTY_MAP_CNTIDX_MARK 18
+#define PROPERTY_MAP_INDEX_MARK 19
+#define PROPERTY_MAP_TEXT_TABLE_ROW 20
+#define PROPERTY_MAP_TEXT_SHAPE_DESCRIPTOR 21
+#define PROPERTY_MAP_TEXT_TABLE_CURSOR 22
+#define PROPERTY_MAP_BOOKMARK 23
+#define PROPERTY_MAP_PARAGRAPH_EXTENSIONS 24
+#define PROPERTY_MAP_INDEX_ILLUSTRATIONS 25
+#define PROPERTY_MAP_INDEX_OBJECTS 26
+#define PROPERTY_MAP_INDEX_TABLES 27
+#define PROPERTY_MAP_BIBLIOGRAPHY 28
+#define PROPERTY_MAP_TEXT_DOCUMENT 29
+#define PROPERTY_MAP_LINK_TARGET 30
+#define PROPERTY_MAP_AUTO_TEXT_GROUP 31
+#define PROPERTY_MAP_PRINT_SETTINGS 32
+#define PROPERTY_MAP_VIEW_SETTINGS 33
+#define PROPERTY_MAP_TEXTPORTION_EXTENSIONS 34
+#define PROPERTY_MAP_FOOTNOTE 35
+#define PROPERTY_MAP_END 36
+
+#define PROPERTY_SET_CHAR_STYLE 1
+#define PROPERTY_SET_PARA_STYLE 2
+#define PROPERTY_SET_FRAME_STYLE 3
+#define PROPERTY_SET_PAGE_STYLE 4
+#define PROPERTY_SET_NUM_STYLE 5
+
+//S&E
+#define WID_WORDS 0
+#define WID_BACKWARDS 1
+#define WID_REGULAR_EXPRESSION 2
+#define WID_CASE_SENSITIVE 3
+#define WID_IN_SELECTION 4
+#define WID_STYLES 5
+#define WID_SIMILARITY 6
+#define WID_SIMILARITY_RELAX 7
+#define WID_SIMILARITY_EXCHANGE 8
+#define WID_SIMILARITY_ADD 9
+#define WID_SIMILARITY_REMOVE 10
+#define WID_SEARCH_ALL 11
+
+//Sections
+#define WID_SECT_CONDITION 0
+#define WID_SECT_DDE_TYPE 1
+#define WID_SECT_DDE_FILE 2
+#define WID_SECT_DDE_ELEMENT 3
+#define WID_SECT_LINK 4
+#define WID_SECT_VISIBLE 5
+#define WID_SECT_PROTECTED 6
+#define WID_SECT_REGION 7
+
+//Verzeichnisse
+#define WID_PRIMARY_KEY 1000
+#define WID_SECONDARY_KEY 1001
+#define WID_ALT_TEXT 1002
+#define WID_IDX_TITLE 1003
+#define WID_LEVEL 1004
+#define WID_CREATE_FROM_MARKS 1005
+#define WID_CREATE_FROM_OUTLINE 1006
+//#define WID_PARAGRAPH_STYLE_NAMES 1007
+#define WID_CREATE_FROM_CHAPTER 1008
+#define WID_CREATE_FROM_LABELS 1009
+#define WID_PROTECTED 1000
+#define WID_USE_ALPHABETICAL_SEPARATORS 1010
+#define WID_USE_KEY_AS_ENTRY 1011
+#define WID_USE_COMBINED_ENTRIES 1012
+#define WID_IS_CASE_SENSITIVE 1013
+#define WID_USE_P_P 1014
+#define WID_USE_DASH 1015
+#define WID_USE_UPPER_CASE 1016
+#define WID_INDEX_AUTO_MARK_FILE_U_R_L 1017
+#define WID_LABEL_CATEGORY 1018
+#define WID_LABEL_DISPLAY_TYPE 1019
+#define WID_USE_LEVEL_FROM_SOURCE 1020
+#define WID_LEVEL_FORMAT 1021
+#define WID_LEVEL_PARAGRAPH_STYLES 1022
+#define WID_RECALC_TAB_STOPS 1023
+//#define WID_??? 1024
+#define WID_MAIN_ENTRY_CHARACTER_STYLE_NAME 1025
+#define WID_CREATE_FROM_TABLES 1026
+#define WID_CREATE_FROM_TEXT_FRAMES 1027
+#define WID_CREATE_FROM_GRAPHIC_OBJECTS 1028
+#define WID_CREATE_FROM_EMBEDDED_OBJECTS 1029
+#define WID_CREATE_FROM_STAR_MATH 1030
+#define WID_CREATE_FROM_STAR_IMAGE 1031
+#define WID_CREATE_FROM_STAR_CHART 1032
+#define WID_CREATE_FROM_STAR_CALC 1033
+#define WID_CREATE_FROM_STAR_DRAW 1034
+#define WID_CREATE_FROM_OTHER_EMBEDDED_OBJECTS 1035
+#define WID_USER_IDX_NAME 1036
+#define WID_PARA_HEAD 1037
+#define WID_PARA_SEP 1038
+#define WID_PARA_LEV1 1039
+#define WID_PARA_LEV2 1040
+#define WID_PARA_LEV3 1041
+#define WID_PARA_LEV4 1042
+#define WID_PARA_LEV5 1043
+#define WID_PARA_LEV6 1044
+#define WID_PARA_LEV7 1045
+#define WID_PARA_LEV8 1046
+#define WID_PARA_LEV9 1047
+#define WID_PARA_LEV10 1048
+#define WID_IS_COMMA_SEPARATED 1049
+
+//text document
+#define WID_DOC_CHAR_COUNT 1000
+#define WID_DOC_PARA_COUNT 1001
+#define WID_DOC_WORD_COUNT 1002
+#define WID_DOC_WORD_SEPARATOR 1003
+#define WID_DOC_CHANGES_SHOW 1004
+#define WID_DOC_CHANGES_RECORD 1005
+#define WID_DOC_AUTO_MARK_URL 1006
+
+//AutoText
+#define WID_GROUP_PATH 0
+#define WID_GROUP_TITLE 1
+
+//ViewSettings
+#define WID_VIEWSET_HRULER 0
+#define WID_VIEWSET_VRULER 1
+#define WID_VIEWSET_HSCROLL 2
+#define WID_VIEWSET_VSCROLL 3
+#define WID_VIEWSET_GRAPHICS 4
+#define WID_VIEWSET_TABLES 5
+#define WID_VIEWSET_DRAWINGS 6
+#define WID_VIEWSET_FIELD_COMMANDS 7
+#define WID_VIEWSET_ANNOTATIONS 8
+#define WID_VIEWSET_INDEX_MARK_BACKGROUND 9
+#define WID_VIEWSET_FOOTNOTE_BACKGROUND 10
+#define WID_VIEWSET_TEXT_FIELD_BACKGROUND 11
+#define WID_VIEWSET_PARA_BREAKS 12
+#define WID_VIEWSET_SOFT_HYPHENS 13
+#define WID_VIEWSET_SPACES 14
+#define WID_VIEWSET_PROTECTED_SPACES 15
+#define WID_VIEWSET_TABSTOPS 16
+#define WID_VIEWSET_BREAKS 17
+#define WID_VIEWSET_HIDDEN_TEXT 18
+#define WID_VIEWSET_HIDDEN_PARAGRAPHS 19
+#define WID_VIEWSET_TABLE_BOUNDARIES 20
+#define WID_VIEWSET_TEXT_BOUNDARIES 21
+#define WID_VIEWSET_SMOOTH_SCROLLING 22
+#define WID_VIEWSET_SOLID_MARK_HANDLES 23
+#define WID_VIEWSET_ZOOM 24
+#define WID_VIEWSET_ZOOM_TYPE 25
+#define WID_VIEWSET_ONLINE_LAYOUT 26
+
+//PrintSettings
+#define WID_PRTSET_LEFT_PAGES 0
+#define WID_PRTSET_RIGHT_PAGES 1
+#define WID_PRTSET_REVERSED 2
+#define WID_PRTSET_PROSPECT 3
+#define WID_PRTSET_GRAPHICS 4
+#define WID_PRTSET_TABLES 5
+#define WID_PRTSET_DRAWINGS 6
+#define WID_PRTSET_CONTROLS 7
+#define WID_PRTSET_PAGE_BACKGROUND 8
+#define WID_PRTSET_BLACK_FONTS 9
+#define WID_PRTSET_ANNOTATION_MODE 10
+
+//NumberingRules
+#define WID_IS_AUTOMATIC 0
+#define WID_CONTINUOUS 1
+#define WID_RULE_NAME 2
+#define WID_IS_ABS_MARGINS 3
+
+/* -----------------04.07.98 11:41-------------------
+ *
+ * --------------------------------------------------*/
+class SwItemPropertySet : public SfxItemPropertySet
+{
+protected:
+ virtual sal_Bool FillItem(SfxItemSet& rSet, sal_uInt16 nWhich, sal_Bool bGetProperty) const;
+public:
+ SwItemPropertySet( const SfxItemPropertyMap *pMap ) :
+ SfxItemPropertySet( pMap ){}
+};
+/* -----------------04.07.98 11:41-------------------
+ *
+ * --------------------------------------------------*/
+class SwUnoPropertyMapProvider
+{
+ SfxItemPropertyMap* aMapArr[PROPERTY_MAP_END];
+
+ SfxItemPropertySet* pCharStyleMap;
+ SfxItemPropertySet* pParaStyleMap;
+ SfxItemPropertySet* pFrameStyleMap;
+ SfxItemPropertySet* pPageStyleMap;
+ SfxItemPropertySet* pNumStyleMap;
+
+ void Sort(sal_uInt16 nId);
+public:
+ SwUnoPropertyMapProvider();
+ ~SwUnoPropertyMapProvider();
+
+ const SfxItemPropertyMap* GetPropertyMap(sal_uInt16 PropertyId);
+
+ SfxItemPropertySet& GetPropertySet(sal_Int8 nPropSetId);
+};
+
+extern SwUnoPropertyMapProvider aSwMapProvider;
+
+#endif
+
+
diff --git a/sw/inc/unomid.h b/sw/inc/unomid.h
new file mode 100644
index 000000000000..ee45b744ca12
--- /dev/null
+++ b/sw/inc/unomid.h
@@ -0,0 +1,124 @@
+/*************************************************************************
+ *
+ * $RCSfile: unomid.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SW_UNOMID_HXX
+#define SW_UNOMID_HXX
+
+
+#define MID_MIRROR_VERT 0
+#define MID_MIRROR_HORZ 1
+#define MID_MIRROR_HORZ_PAGETOGGLE 2
+
+#define MID_PAGEDESC_PAGEDESCNAME 0
+#define MID_PAGEDESC_PAGENUMOFFSET 1
+
+#define MID_SURROUND_SURROUNDTYPE 0
+#define MID_SURROUND_ANCHORONLY 1
+#define MID_SURROUND_CONTOUR 2
+#define MID_SURROUND_CONTOUROUTSIDE 3
+
+#define MID_VERTORIENT_ORIENT 0
+#define MID_VERTORIENT_RELATION 1
+#define MID_VERTORIENT_POSITION 2
+
+#define MID_HORIORIENT_ORIENT 0
+#define MID_HORIORIENT_RELATION 1
+#define MID_HORIORIENT_POSITION 2
+#define MID_HORIORIENT_PAGETOGGLE 3
+
+#define MID_ANCHOR_ANCHORTYPE 0
+#define MID_ANCHOR_PAGENUM 1
+
+#define MID_URL_HYPERLINKFORMAT 0
+#define MID_URL_HYPERLINKNAME 1
+#define MID_URL_CLIENTMAP 2
+#define MID_URL_SERVERMAP 3
+#define MID_URL_URL 4
+#define MID_URL_TARGET 5
+#define MID_URL_VISITED_FMT 6
+#define MID_URL_UNVISITED_FMT 7
+
+#define MID_CHAIN_PREVNAME 0
+#define MID_CHAIN_NEXTNAME 1
+
+#define MID_LINENUMBER_COUNT 0
+#define MID_LINENUMBER_STARTVALUE 1
+
+#define MID_DROPCAP_FORMAT 0
+#define MID_DROPCAP_WHOLE_WORD 1
+#define MID_DROPCAP_CHAR_STYLE_NAME 2
+
+#define MID_FRMSIZE_SIZE 0
+#define MID_FRMSIZE_REL_HEIGHT 1
+#define MID_FRMSIZE_REL_WIDTH 2
+#define MID_FRMSIZE_IS_SYNC_REL_SIZE 3
+#define MID_FRMSIZE_WIDTH 4
+#define MID_FRMSIZE_HEIGHT 5
+#define MID_FRMSIZE_SIZE_TYPE 6
+#define MID_FRMSIZE_IS_AUTO_HEIGHT 7
+/* XML only */
+#define MID_FRMSIZE_MIN_HEIGHT 8
+#define MID_FRMSIZE_FIX_HEIGHT 9
+#define MID_FRMSIZE_COL_WIDTH 10
+#define MID_FRMSIZE_REL_COL_WIDTH 11
+
+#define MID_COLUMNS 0
+#define MID_COLUMN_SEPARATOR_LINE 1
+#endif
diff --git a/sw/inc/unomod.hxx b/sw/inc/unomod.hxx
new file mode 100644
index 000000000000..771004c6156f
--- /dev/null
+++ b/sw/inc/unomod.hxx
@@ -0,0 +1,223 @@
+/*************************************************************************
+ *
+ * $RCSfile: unomod.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOMOD_HXX
+#define _UNOMOD_HXX
+
+#ifndef _COM_SUN_STAR_TEXT_XMODULE_HPP_
+#include <com/sun/star/text/XModule.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XPRINTSETTINGSSUPPLIER_HPP_
+#include <com/sun/star/view/XPrintSettingsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XVIEWSETTINGSSUPPLIER_HPP_
+#include <com/sun/star/view/XViewSettingsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.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> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx> // helper for implementations
+#endif
+
+struct SfxItemPropertyMap;
+class SwView;
+/******************************************************************************
+ *
+ ******************************************************************************/
+/*-----------------15.03.98 13:21-------------------
+
+--------------------------------------------------*/
+
+::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL SwXModule_CreateInstance(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & );
+
+class SwXModule : public cppu::WeakImplHelper4
+<
+ ::com::sun::star::text::XModule,
+ ::com::sun::star::view::XViewSettingsSupplier,
+ ::com::sun::star::view::XPrintSettingsSupplier,
+ ::com::sun::star::lang::XServiceInfo
+>
+{
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > * pxViewSettings;
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > * pxPrintSettings;
+
+public:
+ SwXModule();
+ virtual ~SwXModule();
+
+ //XViewSettings
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > SAL_CALL getViewSettings(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XPrintSettings
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > SAL_CALL getPrintSettings(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //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 );
+};
+
+/*-----------------15.03.98 13:21-------------------
+
+--------------------------------------------------*/
+class SwXPrintSettings : public cppu::WeakImplHelper2
+<
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo
+>
+{
+ const SfxItemPropertyMap* _pMap;
+ sal_Bool bWeb : 1;
+public:
+ SwXPrintSettings(sal_Bool bWeb);
+ virtual ~SwXPrintSettings();
+
+ //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(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 );
+
+};
+/*-----------------15.03.98 13:21-------------------
+
+--------------------------------------------------*/
+class SwXViewSettings : public cppu::WeakImplHelper2
+<
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo
+>
+{
+ const SfxItemPropertyMap* _pMap;
+ SwView* pView;
+ sal_Bool bObjectValid : 1;
+ sal_Bool bWeb : 1;
+public:
+ SwXViewSettings(sal_Bool bWeb, SwView* pView);
+ virtual ~SwXViewSettings();
+
+ //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(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 );
+
+ sal_Bool IsValid() const {return bObjectValid;}
+ void Invalidate() {bObjectValid = sal_False;}
+};
+/* -----------------24.09.98 10:47-------------------
+ *
+ * --------------------------------------------------*/
+/*class SwXTerminateListener : public ::com::sun::star::frame::XTerminateListener,
+ public UsrObject
+{
+public:
+ SwXTerminateListener();
+ virtual ~SwXTerminateListener();
+
+ SMART_UNO_DECLARATION( SwXTerminateListener, UsrObject );
+
+ virtual UString getClassName();
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// virtual ::com::sun::star::uno::XInterface * queryInterface( ::com::sun::star::uno::Uik aUik);
+
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::reflection::XIdlClass > > getIdlClasses(void);
+
+
+ //XTerminateListener
+ virtual void queryTermination(const ::com::sun::star::lang::EventObject& aEvent);
+ virtual void notifyTermination(const ::com::sun::star::lang::EventObject& aEvent);
+
+ //XEventListener
+ virtual void disposing(const ::com::sun::star::lang::EventObject& Source);
+};
+
+*/
+#endif
+
+
diff --git a/sw/inc/unoobj.hxx b/sw/inc/unoobj.hxx
new file mode 100644
index 000000000000..98594a3a3918
--- /dev/null
+++ b/sw/inc/unoobj.hxx
@@ -0,0 +1,1483 @@
+/*************************************************************************
+ *
+ * $RCSfile: unoobj.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOOBJ_HXX
+#define _UNOOBJ_HXX
+
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+#ifndef _CALBCK_HXX //autogen
+#include <calbck.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+#ifndef _FLYENUM_HXX //autogen
+#include <flyenum.hxx>
+#endif
+#ifndef _FLDBAS_HXX //autogen
+#include <fldbas.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _PAM_HXX //autogen
+#include <pam.hxx>
+#endif
+#ifndef _TOXE_HXX
+#include <toxe.hxx>
+#endif
+#ifndef _SORTOPT_HXX //autogen
+#include <sortopt.hxx>
+#endif
+#ifndef _COM_SUN_STAR_DOCUMENT_XDOCUMENTINSERTABLE_HPP_
+#include <com/sun/star/document/XDocumentInsertable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTCURSOR_HPP_
+#include <com/sun/star/text/XTextCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XWORDCURSOR_HPP_
+#include <com/sun/star/text/XWordCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XPARAGRAPHCURSOR_HPP_
+#include <com/sun/star/text/XParagraphCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XSENTENCECURSOR_HPP_
+#include <com/sun/star/text/XSentenceCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XFOOTNOTE_HPP_
+#include <com/sun/star/text/XFootnote.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTSECTION_HPP_
+#include <com/sun/star/text/XTextSection.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTFIELD_HPP_
+#include <com/sun/star/text/XTextField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTRANGE_HPP_
+#include <com/sun/star/text/XTextRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXT_HPP_
+#include <com/sun/star/text/XText.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XSORTABLE_HPP_
+#include <com/sun/star/util/XSortable.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_XCONTENTENUMERATIONACCESS_HPP_
+#include <com/sun/star/container/XContentEnumerationAccess.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 _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 _COM_SUN_STAR_TEXT_XTEXTRANGECOMPARE_HPP_
+#include <com/sun/star/text/XTextRangeCompare.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XRELATIVETEXTCONTENTINSERT_HPP_
+#include <com/sun/star/text/XRelativeTextContentInsert.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XRELATIVETEXTCONTENTREMOVE_HPP_
+#include <com/sun/star/text/XRelativeTextContentRemove.hpp>
+#endif
+#ifndef _CPPUHELPER_WEAK_HXX_
+#include <cppuhelper/weak.hxx>
+#endif
+#ifndef _CPPUHELPER_FACTORY_HXX_
+#include <cppuhelper/factory.hxx> // helper for factories
+#endif
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE5_HXX_
+#include <cppuhelper/implbase5.hxx> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE6_HXX_
+#include <cppuhelper/implbase6.hxx> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE8_HXX_
+#include <cppuhelper/implbase8.hxx> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE10_HXX_
+#include <cppuhelper/implbase10.hxx> // helper for implementations
+#endif
+
+#define C2U(cChar) rtl::OUString::createFromAscii(cChar)
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+class SwUnoCrsr;
+class SwBookmark;
+class SwFmtFtn;
+class SwFmtFld;
+class SwFmtRefMark;
+class SwEvtLstnrArray;
+class GetCurTxtFmtColl;
+/* -----------------29.04.98 07:35-------------------
+ *
+ * --------------------------------------------------*/
+enum CursorType
+{
+ CURSOR_INVALID,
+ CURSOR_BODY,
+ CURSOR_FRAME,
+ CURSOR_TBLTEXT,
+ CURSOR_FOOTNOTE,
+ CURSOR_HEADER,
+ CURSOR_FOOTER,
+ CURSOR_ALL // fuer Search&Replace
+};
+
+/* -----------------29.04.98 07:35-------------------
+ *
+ * --------------------------------------------------*/
+#define PUNOPAM (_pStartCrsr)
+
+#define FOREACHUNOPAM_START(pCrsr) \
+ {\
+ SwPaM *_pStartCrsr = pCrsr, *__pStartCrsr = _pStartCrsr; \
+ do {
+
+#define FOREACHUNOPAM_END() \
+ } while( (_pStartCrsr=(SwPaM *)_pStartCrsr->GetNext()) != __pStartCrsr ); \
+ }
+
+/* -----------------26.06.98 16:18-------------------
+ *
+ * --------------------------------------------------*/
+SwPageDesc* GetPageDescByName_Impl(SwDoc& rDoc, const String& rName);
+::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > CreateTextRangeFromPosition(SwDoc* pDoc,
+ const SwPosition& rPos, const SwPosition* pMark);
+
+::com::sun::star::uno::Sequence< sal_Int8 > CreateUnoTunnelId();
+
+/* -----------------29.04.98 07:35-------------------
+ *
+ * --------------------------------------------------*/
+class SwUnoInternalPaM : public SwPaM
+{
+ SwUnoInternalPaM( const SwUnoInternalPaM& );
+public:
+ SwUnoInternalPaM(SwDoc& rDoc);
+ ~SwUnoInternalPaM();
+
+ SwUnoInternalPaM& operator=(const SwPaM& rPaM);
+};
+
+/*-----------------04.03.98 11:54-------------------
+ Start/EndAction oder Start/EndAllAction
+--------------------------------------------------*/
+class UnoActionContext
+{
+ SwDoc* pDoc;
+ public:
+ UnoActionContext(SwDoc* pDoc);
+ ~UnoActionContext();
+
+ void InvalidateDocument() {pDoc = 0;}
+};
+/* -----------------07.07.98 12:03-------------------
+ * Actions kurzfristig unterbrechen
+ * --------------------------------------------------*/
+class UnoActionRemoveContext
+{
+ SwDoc* pDoc;
+ public:
+ UnoActionRemoveContext(SwDoc* pDoc);
+ ~UnoActionRemoveContext();
+};
+
+/******************************************************************************
+ *
+ ******************************************************************************/
+typedef com::sun::star::uno::Reference< com::sun::star::text::XTextRange > * XTextRangeRefPtr;
+SV_DECL_PTRARR(XTextRangeArr, XTextRangeRefPtr, 4, 4);
+
+void ClientModify(SwClient* pClient, SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+/* -----------------22.04.99 11:18-------------------
+ * Verwaltung der EventListener
+ * --------------------------------------------------*/
+class SwEventListenerContainer
+{
+ SwEvtLstnrArray* pListenerArr;
+ ::com::sun::star::uno::XInterface* pxParent;
+ public:
+ SwEventListenerContainer( ::com::sun::star::uno::XInterface* pxParent);
+ ~SwEventListenerContainer();
+
+ void AddListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & rxListener);
+ BOOL RemoveListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & rxListener);
+ void Disposing();
+};
+/* -----------------03.12.98 12:22-------------------
+ *
+ * --------------------------------------------------*/
+class SwXTextRange;
+class SwXTextCursor;
+class SwXText : public ::com::sun::star::text::XText,
+ ::com::sun::star::lang::XTypeProvider,
+ ::com::sun::star::text::XTextRangeCompare,
+ ::com::sun::star::text::XRelativeTextContentInsert,
+ ::com::sun::star::text::XRelativeTextContentRemove
+
+{
+ SwDoc* pDoc;
+ BOOL bObjectValid;
+ CursorType eCrsrType;
+protected:
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > createCursor();
+
+public:
+ SwXText(SwDoc* pDc, CursorType eType) :
+ pDoc(pDc),bObjectValid(0 != pDc), eCrsrType(eType){}
+ virtual ~SwXText();
+
+ const SwDoc* GetDoc()const {return pDoc;}
+ SwDoc* GetDoc() {return pDoc;}
+
+ // wenn ein SwXText attached wird, wird das Doc gesetzt
+ void SetDoc(SwDoc* pDc)
+ {DBG_ASSERT(!pDoc || !pDc, "Doc schon gesetzt?")
+ pDoc = pDc;
+ bObjectValid = 0 != pDc;
+ }
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XText
+ virtual void SAL_CALL insertString(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xRange, const rtl::OUString& aString, 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, BOOL bAbsorb) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+ 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, 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);
+
+ //XTextRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL getText(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getStart(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getEnd(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual rtl::OUString SAL_CALL getString(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setString(const rtl::OUString& aString) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XTextRangeCompare
+ sal_Int16 SAL_CALL compareRegionStarts( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& xR1, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& xR2 ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ sal_Int16 SAL_CALL compareRegionEnds( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& xR1, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& xR2 ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+
+ //XRelativeTextContentInsert
+ virtual void SAL_CALL insertTextContentBefore(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent>& xNewContent, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent>& xSuccessor) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL insertTextContentAfter(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent>& xNewContent, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent>& xPredecessor) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+
+ //XRelativeTextContentRemove
+ virtual void SAL_CALL removeTextContentBefore(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent>& xSuccessor) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeTextContentAfter(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent>& xPredecessor) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+
+ //
+ INT16 ComparePositions(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange>& xPos1, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange>& xPos2) throw (com::sun::star::lang::IllegalArgumentException, com::sun::star::uno::RuntimeException);
+ BOOL CheckForOwnMember(const SwXTextRange* pRange1, const SwXTextCursor* pCursor1)throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ //
+ void Invalidate() {bObjectValid = sal_False;}
+ BOOL IsValid()const {return bObjectValid;}
+
+ CursorType GetTextType() {return eCrsrType;}
+};
+
+/* -----------------03.12.98 12:16-------------------
+ *
+ * --------------------------------------------------*/
+class SwXTextCursor : public cppu::WeakImplHelper10
+<
+ ::com::sun::star::text::XSentenceCursor,
+ ::com::sun::star::text::XWordCursor,
+ ::com::sun::star::text::XParagraphCursor,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::beans::XPropertyState,
+ ::com::sun::star::document::XDocumentInsertable,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::lang::XUnoTunnel,
+ ::com::sun::star::util::XSortable,
+ ::com::sun::star::container::XContentEnumerationAccess
+>,
+ public SwClient
+{
+ SwEventListenerContainer aLstnrCntnr;
+ SfxItemPropertySet aPropSet;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > xParentText;
+ SwSortOptions* pLastSortOptions;
+
+ CursorType eType;
+
+ void DeleteAndInsert(const String& rText);
+
+public:
+ SwXTextCursor(::com::sun::star::uno::Reference< ::com::sun::star::text::XText > xParent, const SwPosition& rPos,
+ CursorType eSet, SwDoc* pDoc, const SwPosition* pMark = 0);
+ SwXTextCursor(::com::sun::star::uno::Reference< ::com::sun::star::text::XText > xParent, SwUnoCrsr* pSourceCrsr, CursorType eSet = CURSOR_ALL);
+ //invalid Cursor!
+ SwXTextCursor(SwXText* pParent = 0);
+ virtual ~SwXTextCursor();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XTextCursor - neu
+ virtual void SAL_CALL collapseToStart( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL collapseToEnd( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL isCollapsed( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL goLeft( sal_Int16 nCount, BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL goRight( sal_Int16 nCount, BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL gotoStart( BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL gotoEnd( BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL gotoRange( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& xRange, BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XWordCursor - neu
+ virtual BOOL SAL_CALL isStartOfWord( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL isEndOfWord( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL gotoNextWord( BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL gotoPreviousWord( BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL gotoEndOfWord( BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL gotoStartOfWord( BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XSentenceCursor - neu
+ virtual BOOL SAL_CALL isStartOfSentence( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL isEndOfSentence( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL gotoNextSentence( BOOL Expand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL gotoPreviousSentence( BOOL Expand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL gotoStartOfSentence( BOOL Expand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL gotoEndOfSentence( BOOL Expand ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XLineCursor - alt
+// virtual BOOL goDown(sal_uInt16 nCount, BOOL Expand);
+// virtual BOOL goUp(sal_uInt16 nCount, BOOL Expand);
+// virtual BOOL isAtStartOfLine(void);
+// virtual BOOL isAtEndOfLine(void);
+// virtual void gotoEndOfLine(BOOL Expand);
+// virtual void gotoStartOfLine(BOOL Expand);
+
+ //ParagraphCursor - neu
+ virtual BOOL SAL_CALL isStartOfParagraph(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual BOOL SAL_CALL isEndOfParagraph(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual BOOL SAL_CALL gotoStartOfParagraph(BOOL Expand) throw( ::com::sun::star::uno::RuntimeException );
+ virtual BOOL SAL_CALL gotoEndOfParagraph(BOOL Expand) throw( ::com::sun::star::uno::RuntimeException );
+ virtual BOOL SAL_CALL gotoNextParagraph(BOOL Expand) throw( ::com::sun::star::uno::RuntimeException );
+ virtual BOOL SAL_CALL gotoPreviousParagraph(BOOL Expand) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XTextRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL getText(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getStart(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getEnd(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual rtl::OUString SAL_CALL getString(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setString(const rtl::OUString& aString) 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);
+
+ static void SwXTextCursor::SetPropertyValue( SwPaM& rPaM, const SfxItemPropertySet& rPropSet, const rtl::OUString& rPropertyName, 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);
+ static ::com::sun::star::uno::Any SwXTextCursor::GetPropertyValue( SwPaM& rPaM, const SfxItemPropertySet& rPropSet, const ::rtl::OUString& rPropertyName) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ static ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SwXTextCursor::GetPropertyStates( SwPaM& rPaM, SfxItemPropertySet& rPropSet, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& PropertyNames) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+ static ::com::sun::star::beans::PropertyState SwXTextCursor::GetPropertyState( SwPaM& rPaM, SfxItemPropertySet& rPropSet, const ::rtl::OUString& rPropertyName) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+ static void SwXTextCursor::SetPropertyToDefault( SwPaM& rPaM, const SfxItemPropertySet& rPropSet, const rtl::OUString& rPropertyName) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+ static ::com::sun::star::uno::Any SwXTextCursor::GetPropertyDefault( SwPaM& rPaM, const SfxItemPropertySet& rPropSet, const ::rtl::OUString& rPropertyName) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ //XPropertySetCloner - alt
+// virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > cloneProperties(void);
+// virtual void applyProperties(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & PropertySet);
+
+ //XDocumentInsertable - neu
+ virtual void SAL_CALL insertDocumentFromURL(const rtl::OUString& rURL, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aOptions) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException );
+
+ //XAutoTextInsertable - alt
+// virtual void insertAutoTextEntry(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XAutoTextEntry > & ::com::sun::star::text::AutoTextEntry);
+
+ //XSortable - neu
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL createSortDescriptor(void) 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 );
+
+ //XContentEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createContentEnumeration(const rtl::OUString& aServiceName) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getAvailableServiceNames(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ const SwPaM* GetPaM() const;
+ const SwDoc* GetDoc()const;
+ SwDoc* GetDoc();
+ SwUnoCrsr* GetCrsr(){return (SwUnoCrsr*)GetRegisteredIn();}
+ const SwUnoCrsr* GetCrsr()const{return (SwUnoCrsr*)GetRegisteredIn();}
+
+ static void SetCrsrAttr(SwPaM& rPam, const SfxItemSet& rSet, BOOL bTableMode = sal_False);
+ static void GetCrsrAttr(SwPaM& rPam, SfxItemSet& rSet, BOOL bCurrentAttrOnly = FALSE);
+ static void getTextFromPam(SwPaM& aCrsr, rtl::OUString& rBuffer);
+ static SwFmtColl* GetCurTxtFmtColl(SwPaM& rPam, BOOL bConditional);
+
+ static void SelectPam(SwPaM& rCrsr, sal_Bool bExpand);
+ static void SetString(SwUnoCrsr& rUnoCrsr, const rtl::OUString& rString);
+};
+
+/*-----------------20.03.98 07:47-------------------
+
+--------------------------------------------------*/
+/* das wird zunaechst nicht gebraucht - bisher fuer den XPropertySetCloner
+class SwXPropertySet : public ::com::sun::star::beans::XPropertySet,
+ public UsrObject
+{
+ ::com::sun::star::uno::Sequence<::com::sun::star::uno::Any>* pAny;
+ ::com::sun::star::uno::Sequence< Property >* pInfo;
+
+public:
+ // Eigentumsuebergang der Pointer!
+ SwXPropertySet( ::com::sun::star::uno::Sequence<::com::sun::star::uno::Any>* pAny,
+ ::com::sun::star::uno::Sequence<Property>* pInfo );
+ virtual ~SwXPropertySet();
+
+ SMART_UNO_DECLARATION( SwXPropertySet, UsrObject );
+
+ //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);
+
+};
+/*-----------------20.03.98 08:26-------------------
+
+--------------------------------------------------*/
+/* das wird zunaechst nicht gebraucht - bisher fuer den XPropertySetCloner
+
+class SwXPropertySetInfo: public ::com::sun::star::beans::XPropertySetInfo, UsrObject
+{
+ ::com::sun::star::uno::Sequence< Property >* pSeq;
+
+public:
+ SwXPropertySetInfo( const ::com::sun::star::uno::Sequence<Property>& rInfo );
+ virtual ~SwXPropertySetInfo();
+
+ SMART_UNO_DECLARATION( SwXPropertySetInfo, UsrObject );
+
+ virtual ::com::sun::star::uno::Sequence< Property > getProperties(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual Property getPropertyByName(const rtl::OUString& Name) throw( ::com::sun::star::uno::RuntimeException );
+ virtual BOOL hasPropertyByName(const rtl::OUString& Name) throw( ::com::sun::star::uno::RuntimeException );
+};
+
+/*-----------------20.02.98 08:45-------------------
+
+--------------------------------------------------*/
+typedef
+cppu::WeakImplHelper5
+<
+ ::com::sun::star::text::XTextContent,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::container::XNamed,
+ ::com::sun::star::lang::XUnoTunnel
+>
+SwRefBookmarkBaseClass;
+class SwXBookmark : public SwRefBookmarkBaseClass,
+ public SwClient
+{
+ SwEventListenerContainer aLstnrCntnr;
+ SwDoc* pDoc;
+ String m_aName;
+ BOOL bIsDescriptor;
+
+public:
+ SwXBookmark(SwBookmark* pBkm = 0, SwDoc* pDoc = 0);
+ virtual ~SwXBookmark();
+ TYPEINFO();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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 );
+
+ //XNamed
+ virtual rtl::OUString SAL_CALL getName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setName(const rtl::OUString& Name_) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //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);
+
+ void attachToRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange)throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ SwBookmark* GetBookmark() const { return (SwBookmark*)GetRegisteredIn(); }
+ SwDoc* GetDoc(){return pDoc;}
+};
+
+/*-----------------23.02.98 10:45-------------------
+
+--------------------------------------------------*/
+
+typedef cppu::WeakAggImplHelper2
+<
+ ::com::sun::star::container::XEnumerationAccess,
+ ::com::sun::star::lang::XServiceInfo
+> SwXBodyTextBaseClass;
+class SwXBodyText : public SwXBodyTextBaseClass,
+ public SwXText
+{
+public:
+ SwXBodyText(SwDoc* pDoc);
+ virtual ~SwXBodyText();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire( ) throw(){OWeakObject::acquire();}
+ virtual void SAL_CALL release( ) throw(){OWeakObject::release();}
+
+ //XAggregation
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& aType ) 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);
+
+ //XText
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL createTextCursor(void) 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 );
+
+ //XEnumerationAccess - frueher XParagraphEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration(void) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > CreateTextCursor(BOOL bIgnoreTables = sal_False);
+};
+/*-----------------23.02.98 12:05-------------------
+
+--------------------------------------------------*/
+class SwXTextRange : public cppu::WeakImplHelper6
+<
+ ::com::sun::star::text::XTextRange,
+ ::com::sun::star::lang::XUnoTunnel,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::container::XContentEnumerationAccess,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::beans::XPropertyState
+>,
+ public SwClient
+{
+ friend class SwXText;
+ enum RangePosition
+ {
+ RANGE_IN_TEXT, // 'normaler' ::com::sun::star::text::TextRange
+ RANGE_IN_FRAME,// TextPosition wurde mit einem Rahmen angelegt, der kein Uno-Objekt besitzt
+ RANGE_IN_CELL, // TextPosition wurde mit einer Zelle angelegt, die kein Uno-Objekt besitzt
+ RANGE_IS_TABLE, // Anker einer Tabelle
+ RANGE_INVALID // von NewInstance erzeugt
+ } eRangePosition;
+
+ SwDoc* pDoc;
+ SwTableBox* pBox;
+ const SwStartNode* pBoxStartNode;
+ SwDepend aObjectDepend; //Format der Tabelle oder des Rahmens anmelden
+ SfxItemPropertySet aPropSet;
+ //SwDepend aFrameDepend;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > xParentText;
+
+
+ void _CreateNewBookmark(SwPaM& rPam);
+ //TODO: new exception type for protected content
+ void DeleteAndInsert(const String& rText) throw( ::com::sun::star::uno::RuntimeException );
+
+public:
+ SwXTextRange();
+ SwXTextRange(SwPaM& rPam, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > & rxParent);
+ SwXTextRange(SwFrmFmt& rFmt, SwPaM& rPam);
+ SwXTextRange(SwFrmFmt& rTblFmt, SwTableBox& rTblBox, SwPaM& rPam);
+ SwXTextRange(SwFrmFmt& rTblFmt, const SwStartNode& rStartNode, SwPaM& rPam);
+ SwXTextRange(SwFrmFmt& rTblFmt);
+
+ virtual ~SwXTextRange();
+ TYPEINFO();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XTextRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL getText(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getStart(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getEnd(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual rtl::OUString SAL_CALL getString(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setString(const rtl::OUString& aString) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XContentEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createContentEnumeration(const rtl::OUString& aServiceName) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getAvailableServiceNames(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //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);
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ BOOL GetPositions(SwPaM& rToFill) const;
+ const SwDoc* GetDoc()const {return pDoc;}
+ SwDoc* GetDoc(){return pDoc;}
+
+ SwBookmark* GetBookmark() const { return (SwBookmark*)GetRegisteredIn(); }
+
+ static BOOL XTextRangeToSwPaM( SwUnoInternalPaM& rToFill,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange);
+};
+
+/* -----------------15.05.98 08:29-------------------
+ *
+ * --------------------------------------------------*/
+typedef cppu::WeakImplHelper3
+<
+ ::com::sun::star::container::XIndexAccess,
+ ::com::sun::star::lang::XUnoTunnel,
+ ::com::sun::star::lang::XServiceInfo
+>
+SwXTextRangesBaseClass;
+class SwXTextRanges : public SwXTextRangesBaseClass,
+ public SwClient
+{
+ XTextRangeArr* pRangeArr;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > xParentText;
+ XTextRangeArr* GetRangesArray();
+ SwUnoCrsr* GetCrsr() const { return (SwUnoCrsr*)GetRegisteredIn(); }
+public:
+ SwXTextRanges();
+ SwXTextRanges( SwUnoCrsr* pCrsr, ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > xParent);
+ SwXTextRanges(SwPaM* pCrsr);
+ virtual ~SwXTextRanges();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+ const SwUnoCrsr* GetCursor() const { return (const SwUnoCrsr*)GetRegisteredIn(); }
+};
+
+/*-----------------09.03.98 13:57-------------------
+
+--------------------------------------------------*/
+struct SwTextSectionProperties_Impl;
+class SwXTextSection : public cppu::WeakImplHelper5
+<
+ ::com::sun::star::text::XTextSection,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::container::XNamed,
+ ::com::sun::star::lang::XUnoTunnel
+>,
+ public SwClient
+{
+ SwEventListenerContainer aLstnrCntnr;
+ SfxItemPropertySet aPropSet;
+
+ BOOL m_bIsDescriptor;
+ String m_sName;
+ SwTextSectionProperties_Impl* pProps;
+public:
+ SwXTextSection(SwSectionFmt* pFmt = 0);
+ virtual ~SwXTextSection();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ TYPEINFO();
+
+ //XTextSection
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextSection > SAL_CALL getParentSection(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextSection > > SAL_CALL getChildSections(void) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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);
+
+ //XNamed
+ virtual rtl::OUString SAL_CALL getName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setName(const rtl::OUString& Name_) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ void attachToRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange)throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+
+ SwSectionFmt* GetFmt()const {return (SwSectionFmt*)GetRegisteredIn();}
+ static SwXTextSection* GetImplementation(::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> xRef );
+};
+/*-----------------12.02.98 08:01-------------------
+
+--------------------------------------------------*/
+typedef
+cppu::WeakImplHelper5
+<
+ ::com::sun::star::text::XFootnote,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::container::XEnumerationAccess,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XUnoTunnel
+>
+SwXFootnoteBaseClass;
+class SwXFootnote : public SwXFootnoteBaseClass,
+ public SwXText,
+ public SwClient
+{
+ friend class SwXFootnotes;
+
+ SwEventListenerContainer aLstnrCntnr;
+ const SwFmtFtn* pFmtFtn;
+ BOOL m_bIsDescriptor;
+ String m_sLabel;
+ BOOL m_bIsEndnote;
+
+protected:
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > createCursor();
+public:
+ SwXFootnote(BOOL bEndnote);
+ SwXFootnote(SwDoc* pDoc, const SwFmtFtn& rFmt);
+ virtual ~SwXFootnote();
+
+ TYPEINFO();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire( ) throw(){SwXFootnoteBaseClass::acquire();}
+ virtual void SAL_CALL release( ) throw(){SwXFootnoteBaseClass::release();}
+
+ //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);
+
+ //XFootnote
+ virtual rtl::OUString SAL_CALL getLabel(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setLabel(const rtl::OUString& aLabel) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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 );
+
+ //XText
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL createTextCursor(void) 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 );
+
+ //XEnumerationAccess - frueher XParagraphEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration(void) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //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);
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ void attachToRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange)throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+
+ const SwFmtFtn* FindFmt() const;
+ void Invalidate();
+};
+
+/*-----------------07.04.98 08:10-------------------
+
+--------------------------------------------------*/
+class SwXParagraphEnumeration : public cppu::WeakImplHelper2
+<
+ ::com::sun::star::container::XEnumeration,
+ ::com::sun::star::lang::XServiceInfo
+>,
+ public SwClient
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > xParentText;
+
+ BOOL bFirstParagraph;
+ SwUnoCrsr* GetCrsr(){return (SwUnoCrsr*)GetRegisteredIn();}
+ CursorType eCursorType;
+public:
+ SwXParagraphEnumeration(SwXText* pParent, SwPosition& rPos, CursorType eType);
+ SwXParagraphEnumeration(SwXText* pParent, SwUnoCrsr* pCrsr, CursorType eType);
+ virtual ~SwXParagraphEnumeration();
+
+
+ //XEnumeration
+ virtual BOOL SAL_CALL hasMoreElements(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL nextElement(void) throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+};
+/*-----------------07.04.98 08:15-------------------
+
+--------------------------------------------------*/
+SV_DECL_PTRARR(SwDependArr, SwDepend*, 2, 2);
+class SwXParagraph : public cppu::WeakImplHelper8
+<
+ ::com::sun::star::text::XTextRange,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::lang::XUnoTunnel,
+ ::com::sun::star::beans::XPropertyState,
+ ::com::sun::star::container::XEnumerationAccess,
+ ::com::sun::star::text::XTextContent,
+ ::com::sun::star::container::XContentEnumerationAccess
+>,
+ public SwClient
+{
+ SwEventListenerContainer aLstnrCntnr;
+ SfxItemPropertySet aPropSet;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > xParentText;
+ rtl::OUString m_sText;
+ BOOL m_bIsDescriptor;
+
+ SwUnoCrsr* GetCrsr(){return (SwUnoCrsr*)GetRegisteredIn();}
+public:
+ SwXParagraph();
+ SwXParagraph(SwXText* pParent, SwUnoCrsr* pCrsr);
+ virtual ~SwXParagraph();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) 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);
+
+ //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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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 );
+
+ //XEnumerationAccess - war XTextPortionEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration(void) 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);
+
+ //XTextRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL getText(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getStart(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getEnd(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual rtl::OUString SAL_CALL getString(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setString(const rtl::OUString& aString) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //XContentEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createContentEnumeration(const rtl::OUString& aServiceName) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getAvailableServiceNames(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ BOOL IsDescriptor() const {return m_bIsDescriptor;}
+
+ static BOOL getDefaultTextContentValue(::com::sun::star::uno::Any& rAny,
+ const rtl::OUString& rPropertyName, USHORT nWID = 0);
+ static SwXParagraph* GetImplementation(::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> xRef );
+ //falls es mal als Service erzeugt werden kann
+ //void attachToRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange)throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+ void attachToText(SwXText* pParent, SwUnoCrsr* pCrsr);
+};
+/* -----------------23.03.99 12:57-------------------
+ *
+ * --------------------------------------------------*/
+#define PARAFRAME_PORTION_PARAGRAPH 0
+#define PARAFRAME_PORTION_CHAR 1
+#define PARAFRAME_PORTION_TEXTRANGE 2
+
+class SwXParaFrameEnumeration : public cppu::WeakImplHelper2
+<
+ ::com::sun::star::container::XEnumeration,
+ ::com::sun::star::lang::XServiceInfo
+>,
+ public SwClient
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent > xNextObject; //hasMoreElements legt das Objekt schon an
+ SwDependArr aFrameArr; //wird im Ctor gefuellt
+
+ SwUnoCrsr* GetCrsr(){return (SwUnoCrsr*)GetRegisteredIn();}
+ BOOL CreateNextObject();
+ void FillFrame(SwUnoCrsr& rUnoCrsr);
+public:
+ SwXParaFrameEnumeration(const SwUnoCrsr& rUnoCrsr, sal_uInt8 nParaFrameMode, SwFrmFmt* pFmt = 0);
+ ~SwXParaFrameEnumeration();
+
+ //XEnumeration
+ virtual BOOL SAL_CALL hasMoreElements(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL nextElement(void) throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+};
+/* -----------------29.05.98 14:42-------------------
+ *
+ * --------------------------------------------------*/
+
+class SwXTextPortionEnumeration : public cppu::WeakImplHelper3
+<
+ ::com::sun::star::container::XEnumeration,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::lang::XUnoTunnel
+>,
+ public SwClient
+{
+ XTextRangeArr aPortionArr; //all portions are created in the ctor
+ SwDependArr aFrameArr; //wird im Ctor gefuellt - mit am Zeichen gebundenen Rahmen
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > xParent;
+ BOOL bAtEnd;
+ BOOL bFirstPortion;
+
+
+ SwUnoCrsr* GetCrsr() const { return (SwUnoCrsr*)GetRegisteredIn(); }
+ SwXTextPortionEnumeration();
+ void CreatePortions();
+public:
+ SwXTextPortionEnumeration(SwPaM& rParaCrsr,
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > xParent);
+ virtual ~SwXTextPortionEnumeration();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XEnumeration
+ virtual BOOL SAL_CALL hasMoreElements(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL nextElement(void) throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+};
+
+/* -----------------29.05.98 14:42-------------------
+ * Keine Anmeldung am Feld - Das Feld muss am Cursor stehen
+ * --------------------------------------------------*/
+enum SwTextPortionType
+{
+ PORTION_TEXT,
+ PORTION_FIELD,
+ PORTION_FRAME,
+ PORTION_FOOTNOTE,
+ PORTION_CONTROL_CHAR,
+ PORTION_REFMARK_START,
+ PORTION_REFMARK_END,
+ PORTION_TOXMARK_START,
+ PORTION_TOXMARK_END,
+ PORTION_BOOKMARK_START,
+ PORTION_BOOKMARK_END
+};
+
+class SwXTextPortion : public cppu::WeakImplHelper6
+<
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::text::XTextRange,
+ ::com::sun::star::text::XTextField,
+ ::com::sun::star::beans::XPropertyState,
+ ::com::sun::star::container::XContentEnumerationAccess,
+ ::com::sun::star::lang::XServiceInfo
+>,
+ public SwClient
+{
+ SwEventListenerContainer aLstnrCntnr;
+ SfxItemPropertySet aPropSet;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > xParentText;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent > xRefMark;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent > xTOXMark;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent > xBookmark;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent > xFootnote;
+ const SwFmtFld* pFmtFld;
+ SwDepend aFrameDepend;
+ SwFrmFmt* pFrameFmt;
+ SwTextPortionType ePortionType;
+ sal_Int16 nControlChar;
+
+ BOOL bIsCollapsed;
+
+ SwFmtFld* GetFldFmt(BOOL bInit = sal_False);
+ SwUnoCrsr* GetCrsr() const { return (SwUnoCrsr*)GetRegisteredIn(); }
+public:
+ SwXTextPortion(const SwUnoCrsr* pPortionCrsr, ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > xParent, SwTextPortionType eType );
+ SwXTextPortion(const SwUnoCrsr* pPortionCrsr, ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > xParent, SwFrmFmt& rFmt );
+ virtual ~SwXTextPortion();
+
+ //XTextRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL getText(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getStart(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getEnd(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual rtl::OUString SAL_CALL getString(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setString(const rtl::OUString& aString) 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);
+
+ //XTextField
+ virtual rtl::OUString SAL_CALL getPresentation(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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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 );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //XContentEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createContentEnumeration(const rtl::OUString& aServiceName) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getAvailableServiceNames(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ void SetRefMark( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent > xMark)
+ {xRefMark = xMark;}
+
+ void SetTOXMark( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent > xMark)
+ {xTOXMark = xMark;}
+
+ void SetBookmark( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent > xMark)
+ {xBookmark = xMark;}
+
+ void SetFootnote( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent > xMark)
+ {xFootnote = xMark;}
+
+ void SetControlChar(sal_Int16 nSet) {nControlChar = nSet;}
+
+ void SetIsCollapsed(BOOL bSet) { bIsCollapsed = bSet;}
+
+ //falls es mal als service erzeugt werden kann
+ //void attachToRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange)throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+};
+/* -----------------29.09.98 09:01-------------------
+ *
+ * --------------------------------------------------*/
+/* os: 04.12.98 11:40 hier gibt es noch keine sinnvolle Definition
+#define MAX_SORT_FIELDS 3 // das ist eher willkuerlich (wie im Dialog)
+class SwXTextSortDescriptor : public XTextSortDescriptor,
+ public UsrObject
+{
+ SwSortOptions aSortOptions;
+ BOOL bUseHeader;
+public:
+ SwXTextSortDescriptor(BOOL bUsedInTable);
+ virtual ~SwXTextSortDescriptor();
+
+ //XTextSortDescriptor
+ virtual sal_Unicode getTextColumnSeparator(void) const;
+ virtual void setTextColumnSeparator(sal_Unicode TextColumnSeparator_);
+
+ //XSortDescriptor
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::util::SortField > getSortFields(void) const;
+ virtual void setSortFields(const ::com::sun::star::uno::Sequence< ::com::sun::star::util::SortField >& SortFields_);
+ virtual sal_uInt16 getMaxFieldCount(void) const;
+ virtual ColumnsOrRows getOrientation(void) const;
+ virtual void setOrientation(ColumnsOrRows Orientation_);
+ virtual BOOL getUseHeader(void) const;
+ virtual void setUseHeader(BOOL UseHeader_);
+
+ const SwSortOptions& GetSortOptions() const {return aSortOptions;}
+ void SetSortOptions(const SwSortOptions& rSortOpt);
+};
+*/
+/* -----------------25.08.98 11:02-------------------
+ *
+ * --------------------------------------------------*/
+typedef
+cppu::WeakImplHelper2
+<
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::container::XEnumerationAccess
+>
+SwXHeadFootTextBaseClass;
+class SwXHeadFootText : public SwXHeadFootTextBaseClass,
+ public SwXText,
+ public SwClient
+{
+ SwFrmFmt* GetFmt() const { return (SwFrmFmt*)GetRegisteredIn(); }
+ BOOL bIsHeader;
+protected:
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > createCursor();
+public:
+ SwXHeadFootText(SwFrmFmt& rHeadFootFmt, BOOL bHeader);
+ ~SwXHeadFootText();
+
+ TYPEINFO();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire( ) throw(){SwXHeadFootTextBaseClass::acquire();}
+ virtual void SAL_CALL release( ) throw(){SwXHeadFootTextBaseClass::release();}
+
+ //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);
+
+ //XText
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL createTextCursor(void) 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 );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //XEnumerationAccess - frueher XParagraphEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration(void) 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);
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+};
+/* -----------------27.08.98 15:11-------------------
+ *
+ * --------------------------------------------------*/
+class SwXReferenceMark : public SwRefBookmarkBaseClass,
+ public SwClient
+{
+ SwEventListenerContainer aLstnrCntnr;
+ SwDoc* pDoc;
+ const SwFmtRefMark* pMark;
+ String sMarkName;
+ BOOL m_bIsDescriptor;
+
+ BOOL IsValid() const {return 0 != GetRegisteredIn();}
+ void InsertRefMark(SwPaM& rPam, SwDoc* pDoc);
+public:
+ SwXReferenceMark(SwDoc* pDoc, const SwFmtRefMark* pMark);
+ ~SwXReferenceMark();
+
+ TYPEINFO();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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 );
+
+ //XNamed
+ virtual rtl::OUString SAL_CALL getName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setName(const rtl::OUString& Name_) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //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);
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ void attachToRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange)throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+
+ const SwFmtRefMark* GetMark()const {return pMark;}
+ const String& GetMarkName() const {return sMarkName;}
+ SwDoc* GetDoc() const{return pDoc;}
+ void Invalidate();
+};
+/* -----------------01.09.98 16:09-------------------
+ *
+ * --------------------------------------------------*/
+// os: 04.12.98 11:44 - keine Definition
+//class SwXRedline : public XRedline,
+/*
+class SwXRedline : public XRedline,
+ public UsrObject,
+ public SwClient
+{
+ SwDoc* pDoc;
+ const SwRedline* pRedline;
+
+ BOOL IsValid() const;
+public:
+ SwXRedline(SwDoc* pDoc, const SwRedline* pRedline);
+ virtual ~SwXRedline();
+
+ //XRedline
+ virtual sal_uInt16 getActionType(void) const;
+ virtual rtl::OUString getAuthor(void) const;
+ virtual ::com::sun::star::util::DateTime getCreationDateTime(void) const;
+ virtual rtl::OUString getDescription(void) const;
+ virtual void setDescription(const rtl::OUString& Description_);
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+};
+
+
+*/
+#endif
+
+
diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx
new file mode 100644
index 000000000000..b50df4f3296b
--- /dev/null
+++ b/sw/inc/unoprnms.hxx
@@ -0,0 +1,536 @@
+/*************************************************************************
+ *
+ * $RCSfile: unoprnms.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOPRNMS_HXX
+#define _UNOPRNMS_HXX
+
+
+#ifndef _SAL_TYPES_H_
+#include <sal/types.h>
+#endif
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+struct SwPropNameLen
+{
+ const char* pName;
+ USHORT nNameLen;
+ SwPropNameLen(const char* pString, USHORT nLen) :
+ pName(pString),
+ nNameLen(nLen){}
+
+ operator const char*()const {return pName;}
+};
+#define SW_PROP_NAME(aPropName) aPropName.pName, aPropName.nNameLen
+
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOLLOW_STYLE;
+
+//extern const sal_Char* __FAR_DATA UNO_NAME_FOLLOW_STYLE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_PHYSICAL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_AUTO_UPDATE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DISPLAY_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_FONT_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_FONT_STYLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_FONT_FAMILY ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_FONT_CHAR_SET ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_FONT_PITCH ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_GRAPHIC_URL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_GRAPHIC_FILTER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_GRAPHIC_URL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_GRAPHIC_FILTER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_GRAPHIC_URL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_GRAPHIC_FILTER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BACK_GRAPHIC_URL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BACK_GRAPHIC_FILTER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BACK_GRAPHIC_LOCATION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BACK_GRAPHIC_BITMAP ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_GRAPHIC_URL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_GRAPHIC_FILTER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_GRAPHIC_LOCATION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_GRAPHIC_SIZE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_GRAPHIC_BITMAP ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BULLET_FONT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_GRAPHIC_LOCATION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_GRAPHIC_LOCATION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_GRAPHIC_LOCATION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_LEFT_PARA_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_RIGHT_PARA_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_LEFT_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_RIGHT_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_LEFT_MARGIN_RELATIVE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_RIGHT_MARGIN_RELATIVE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_FIRST_LINE_INDENT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_FIRST_LINE_INDENT_RELATIVE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_IS_HYPHENATION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_HYPHENATION_MAX_LEADING_CHARS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_HYPHENATION_MAX_TRAILING_CHARS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_HYPHENATION_MAX_HYPHENS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LEFT_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_RIGHT_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_LEFT_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_RIGHT_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_LEFT_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_RIGHT_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TEXT_RANGE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_NUMBERING_ALIGNMENT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BULLET_FONT_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BULLET_ID ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_STYLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_ANCHOR_CHAR_STYLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SUFFIX ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PREFIX ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARENT_NUMBERING ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_START_WITH ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_POSTURE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_WEIGHT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_AUTO_KERNING ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_UNDERLINE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_ESCAPEMENT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_CASE_MAP ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_SHADOWED ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_STRIKEOUT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_CROSSED_OUT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_NO_HYPHENATION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_AUTO_ESCAPEMENT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_HEIGHT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_PROP_FONT_HEIGHT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_DIFF_FONT_HEIGHT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_ESCAPEMENT_HEIGHT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_COLOR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_FLASH ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_KERNING ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_LOCALE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_BACK_COLOR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_TRANSPARENT_BACKGROUND ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_LINE_SPACING ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_TOP_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_BOTTOM_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_TOP_MARGIN_RELATIVE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_BOTTOM_MARGIN_RELATIVE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_EXPAND_SINGLE_WORD ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_END_NOTICE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_EMBEDDED_OBJECTS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_ALPHABETICAL_SEPARATORS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BACKGROUND_COLOR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BEGIN_NOTICE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CASE_SENSITIVE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FRAME_STYLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_NUMBERING_STYLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_NUMBERING_LEVEL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_NUMBERING_START_VALUE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_NUMBERING_IS_NUMBER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_COMBINE_ENTRIES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_COUNT_LINES_IN_FRAMES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DDE_COMMAND_TYPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DDE_COMMAND_FILE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DDE_COMMAND_ELEMENT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_AUTOMATIC_UPDATE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DEFAULT_TABSTOP_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DROP_CAP_FORMAT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DROP_CAP_WHOLE_WORD ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DROP_CAP_CHAR_STYLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FILE_LINK ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_GRAPHIC ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_GRAPHICS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_PROTECTED ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_KEY_AS_ENTRY ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_KEEP_TOGETHER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_KEEP_TOGETHER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LANDSCAPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LINE_SEPARATOR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_MARKS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_NUMBER_POSITION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_OUTLINES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PAGE_STYLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PAGE_STYLE_LAYOUT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_STYLES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_ADJUST ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_REGISTER_MODE_ACTIVE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_STYLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_LAST_LINE_ADJUST ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_LINE_NUMBER_COUNT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_LINE_NUMBER_START_VALUE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BACK_COLOR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_BACK_COLOR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_WIDOWS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_ORPHANS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_TRANSPARENT_BACKGROUND ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_POSITION_END_OF_DOC ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_POSITION_PROTECTED ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_ALTERNATIVE_TEXT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRIMARY_KEY ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRINT_TABLES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRINT_GRAPHICS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRINT_REVERSED ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRINT_PROSPECT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRINT_CONTROLS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRINT_DRAWINGS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRING_RIGHT_PAGES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRINT_BLACK_FONTS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRINTER_PAPER_TRAY ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRINT_PAGE_BACKGROUND ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRINT_ANNOTATION_MODE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_REGISTER_MODE_ACTIVE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_RELATIVE_WIDTH ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_RELATIVE_HEIGHT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_REPEAT_HEADLINE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEARCH_STYLES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEARCH_BACKWARDS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEARCH_SIMILARITY ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEARCH_IN_SELECTION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEARCH_CASE_SENSITIVE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEARCH_SIMILARITY_ADD ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEARCH_SIMILARITY_RELAX ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEARCH_SIMILARITY_REMOVE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEARCH_REGULAR_EXPRESSION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEARCH_SIMILARITY_EXCHANGE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SECONDARY_KEY ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEPARATOR_LINE_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_BREAKS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_SPACES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_TABLES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_GRAPHICS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_DRAWINGS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_TABSTOPS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_VERT_RULER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_PARA_BREAKS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_HIDDEN_TEXT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_ANNOTATIONS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_SOFT_HYPHENS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_VERT_SCROLL_BAR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_HORI_SCROLL_BAR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_FIELD_COMMANDS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_TEXT_BOUNDARIES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_PROTECTED_SPACES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_TABLE_BOUNDARIES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_HIDDEN_PARAGRAPHS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_INDEX_MARK_BACKGROUND ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_FOOTNOTE_BACKGROUND ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_TEXT_FIELD_BACKGROUND ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SIZE_RELATIVE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SIZE_PROTECTED ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SMOOTH_SCROLLING ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SOLID_MARK_HANDLES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TABLES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TEXT_FRAMES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TEXT_COLUMNS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TRANSPARENT_BACKGROUND ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_USE_PP ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_USER_METRIC ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_ANCHOR_TYPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_ANCHOR_TYPES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_ANCHOR_PAGE_NO ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_AUTHOR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BREAK_TYPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAIN_NEXT_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAIN_PREV_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAPTER_FORMAT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CLIENT_MAP ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CONDITION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CONTENT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_CONTOURED ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CONTOUR_OUTSIDE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CONTENT_PROTECTED ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_COUNT_EMPTY_LINES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DATA_BASE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DATA_TABLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DATA_COLUMN_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_DATA_BASE_FORMAT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DATE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DATETIME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_DATE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_EDIT_IN_READONLY ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FALSE_CONTENT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FILE_FORMAT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_FIXED ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTNOTE_COUNTING ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FORMULA ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FRAME_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_GRAPHIC_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FULL_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEIGHT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_AUTO_HEIGHT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SIZE_TYPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HINT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HORI_ORIENT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HORI_MIRRORED ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HORI_ORIENT_RELATION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HORI_ORIENT_POSITION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HYPER_LINK_U_R_L ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HYPER_LINK_TARGET ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HYPER_LINK_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_INFO_TYPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_INFO_FORMAT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_INPUT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LEVEL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LINE_INTERVAL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LINK_REGION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_MACRO ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_MIRROR_PAGE_TOGGLE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SPLIT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_SPLIT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_NUMBER_FORMAT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_NUMBERING_TYPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_NUMBERING_RULES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_OFFSET ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_ON ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_OPAQUE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PAGE_TOGGLE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PAGE_DESC_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PAGE_NUMBER_OFFSET ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PLACEHOLDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PLACEHOLDER_TYPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRINT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PRINT_LEFT_PAGES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_REFERENCE_FIELD_PART ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_REFERENCE_FIELD_SOURCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_REGISTER_PARAGRAPH_STYLE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SCRIPT_TYPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEARCH_ALL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEARCH_WORDS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEQUENCE_VALUE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SERVER_MAP ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SET_NUMBER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHADOW_FORMAT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_HORI_RULER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SIZE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_ACTUAL_SIZE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SOURCE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_START_AT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_STATISTIC_TYPE_ID ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SUB_TYPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SURROUND ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_EXPRESSION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_SHOW_FORMULA ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TEXT_WRAP ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SURROUND_CONTOUR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SURROUND_ANCHORONLY ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TABLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TABSTOPS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TITLE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TOP_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BOTTOM_MARGIN ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TRUE_CONTENT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_URL_CONTENT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_USERTEXT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_USER_DATA_TYPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_VALUE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_VARIABLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_VARIABLE_SUBTYPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_VERT_ORIENT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_VERT_MIRRORED ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_VERT_ORIENT_POSITION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_VERT_ORIENT_RELATION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_VISIBLE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_WIDTH ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_WORD_MODE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_GRAPHIC_CROP ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHARACTER_FORMAT_NONE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TEXT_POSITION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DOCUMENT_INDEX_MARK ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DOCUMENT_INDEX ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TEXT_FIELD ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BOOKMARK ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TEXT_TABLE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CELL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TEXT_FRAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_REFERENCE_MARK ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TEXT_SECTION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTNOTE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_ENDNOTE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHART_ROW_AS_LABEL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHART_COLUMN_AS_LABEL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TABLE_COLUMS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LEFT_BORDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_RIGHT_BORDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TOP_BORDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BOTTOM_BORDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BORDER_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LEFT_BORDER_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_RIGHT_BORDER_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TOP_BORDER_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_BOTTOM_BORDER_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TABLE_BORDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TABLE_COLUMN_SEPARATORS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TABLE_COLUMN_RELATIVE_SUM ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_TEXT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_TEXT_LEFT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_TEXT_RIGHT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_TEXT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_TEXT_LEFT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_TEXT_RIGHT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_BACK_COLOR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_GRAPHIC ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_TRANSPARENT_BACKGROUND ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_LEFT_BORDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_RIGHT_BORDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_TOP_BORDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_BOTTOM_BORDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_BORDER_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_SHADOW_FORMAT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_BODY_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_IS_DYNAMIC_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_SHARE_CONTENT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_HEIGHT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADER_ON ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_BACK_COLOR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_GRAPHIC ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_TRANSPARENT_BACKGROUND ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_LEFT_BORDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_RIGHT_BORDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_TOP_BORDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_BOTTOM_BORDER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_BORDER_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_SHADOW_FORMAT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_BODY_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_IS_DYNAMIC_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_SHARE_CONTENT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_HEIGHT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FOOTER_ON ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_OVERWRITE_STYLES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LOAD_NUMBERING_STYLES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LOAD_PAGE_STYLES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LOAD_FRAME_STYLES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LOAD_TEXT_STYLES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FILE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FILTER_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FILTER_OPTION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PASSWORD ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_COPY_COUNT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_COLLATE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SORT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PAGES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FIRST_LINE_OFFSET ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SYMBOL_TEXT_DISTANCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_USER_INDEX_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_REVISION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_UNVISITED_CHAR_STYLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_VISITED_CHAR_STYLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARAGRAPH_COUNT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_WORD_COUNT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_WORD_SEPARATOR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHARACTER_COUNT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_ZOOM_VALUE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_ZOOM_TYPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_MARKS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_OUTLINE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARAGRAPH_STYLE_NAMES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_CHAPTER ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_LABELS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_USE_ALPHABETICAL_SEPARATORS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_USE_KEY_AS_ENTRY ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_USE_COMBINED_ENTRIES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_CASE_SENSITIVE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_USE_P_P ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_USE_DASH ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_USE_UPPER_CASE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LABEL_CATEGORY ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LABEL_DISPLAY_TYPE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_USE_LEVEL_FROM_SOURCE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LEVEL_FORMAT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_LEVEL_PARAGRAPH_STYLES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_RECALC_TAB_STOPS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_MAIN_ENTRY_CHARACTER_STYLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_TABLES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_TEXT_FRAMES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_GRAPHIC_OBJECTS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_EMBEDDED_OBJECTS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_STAR_MATH ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_STAR_IMAGE ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_STAR_CHART ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_STAR_CALC ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_STAR_DRAW ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CREATE_FROM_OTHER_EMBEDDED_OBJECTS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_INDEX_AUTO_MARK_FILE_U_R_L ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_COMMA_SEPARATED ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_CHANGES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_RECORD_CHANGES ;
+extern const SwPropNameLen __FAR_DATA UNO_LINK_DISPLAY_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_LINK_DISPLAY_BITMAP ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_HEADING_STYLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SHOW_ONLINE_LAYOUT ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_USER_DEFINED_ATTRIBUTES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_USER_DEFINED_ATTRIBUTES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAR_USER_DEFINED_ATTRIBUTES ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_FILE_PATH ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_CHAPTER_NUMBERING_LEVEL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_PARA_CONDITIONAL_STYLE_NAME ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CHAPTER_NUMBERING_LEVEL ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_NUMBERING_SEPARATOR ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_CONTINUOUS_NUMBERING ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_AUTOMATIC ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_ABSOLUTE_MARGINS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CATEGORY ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_DEPENDENT_TEXT_FIELDS ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CURRENT_PRESENTATION ;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_ADJUST ;
+
+extern const SwPropNameLen __FAR_DATA UNO_NAME_TEXT_PORTION_TYPE;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_CONTROL_CHARACTER;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_COLLAPSED;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_IS_START;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_SEQUENCE_NUMBER;
+extern const SwPropNameLen __FAR_DATA UNO_NAME_REFERENCE_ID;
+#endif
+
+
diff --git a/sw/inc/unosett.hxx b/sw/inc/unosett.hxx
new file mode 100644
index 000000000000..deebd8f59cbb
--- /dev/null
+++ b/sw/inc/unosett.hxx
@@ -0,0 +1,326 @@
+/*************************************************************************
+ *
+ * $RCSfile: unosett.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOSETT_HXX
+#define _UNOSETT_HXX
+
+#include <swtypes.hxx>
+#ifndef _CALBCK_HXX //autogen
+#include <calbck.hxx>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTCOLUMNS_HPP_
+#include <com/sun/star/text/XTextColumns.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 _COM_SUN_STAR_CONTAINER_XINDEXREPLACE_HPP_
+#include <com/sun/star/container/XIndexReplace.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 _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx> // helper for implementations
+#endif
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+class SwDoc;
+class SwFmtCol;
+class SwDocShell;
+class SwNumRule;
+struct SfxItemPropertyMap;
+
+/******************************************************************************
+ *
+ ******************************************************************************/
+/* -----------------04.05.98 12:28-------------------
+ *
+ * --------------------------------------------------*/
+class SwXFootnoteProperties : public cppu::WeakAggImplHelper2
+<
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo
+>
+{
+ SwDoc* pDoc;
+ const SfxItemPropertyMap* _pMap;
+
+public:
+ SwXFootnoteProperties(SwDoc* pDoc);
+ virtual ~SwXFootnoteProperties();
+
+ //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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ void Invalidate() {pDoc = 0;}
+};
+
+/* -----------------04.05.98 12:28-------------------
+ *
+ * --------------------------------------------------*/
+class SwXEndnoteProperties : public cppu::WeakAggImplHelper2
+<
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo
+>
+{
+ SwDoc* pDoc;
+ const SfxItemPropertyMap* _pMap;
+
+public:
+ SwXEndnoteProperties(SwDoc* pDoc);
+ virtual ~SwXEndnoteProperties();
+
+ //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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ void Invalidate() {pDoc = 0;}
+};
+
+/* -----------------04.05.98 12:28-------------------
+ *
+ * --------------------------------------------------*/
+class SwXLineNumberingProperties : public cppu::WeakAggImplHelper2
+<
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo
+>
+{
+ SwDoc* pDoc;
+ const SfxItemPropertyMap* _pMap;
+public:
+ SwXLineNumberingProperties(SwDoc* pDoc);
+ virtual ~SwXLineNumberingProperties();
+
+ //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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ void Invalidate() {pDoc = 0;}
+};
+
+/* -----------------25.05.98 08:21-------------------
+ *
+ * --------------------------------------------------*/
+class SwXNumberingRules : public cppu::WeakAggImplHelper4
+<
+ ::com::sun::star::container::XIndexReplace,
+ ::com::sun::star::lang::XUnoTunnel,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo
+>,
+ public SwClient
+{
+ String sNewCharStyleNames[MAXLEVEL];
+ String sNewBulletFontNames[MAXLEVEL];
+ String sCreatedNumRuleName; //connects to a numbering in SwDoc
+ SwDoc* pDoc; // wird nur fuers anmelden gebraucht
+ SwDocShell* pDocShell; //nur, wenn als ChapterNumbering verwendet
+ SwNumRule* pNumRule;
+ const SfxItemPropertyMap* _pMap;
+
+ static String sInvalidStyle;
+
+public:
+ SwXNumberingRules();
+ SwXNumberingRules(SwDocShell& rDocSh); // chapter numbering
+ SwXNumberingRules(const SwNumRule& rRule); // NumRule for paragraphs, numbering styles
+ SwXNumberingRules(SwDoc& rDoc); //create a new instance
+ SwXNumberingRules(SwDoc& rDoc, const String& rName); //XML import
+ virtual ~SwXNumberingRules();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & SwXNumberingRules::getUnoTunnelId();
+
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+
+ //XIndexReplace
+ virtual void SAL_CALL replaceByIndex( sal_Int32 Index, const ::com::sun::star::uno::Any& Element ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::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 nIndex) 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);
+
+ //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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue> getNumberingRuleByIndex(const SwNumRule& rNumRule, sal_Int32 nIndex)const;
+ void setNumberingRuleByIndex(SwNumRule& rNumRule,
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& rProperties, sal_Int32 nIndex)
+ throw( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ const String* GetNewCharStyleNames() const {return sNewCharStyleNames;}
+ const String* GetBulletFontNames() const {return sNewBulletFontNames;}
+ const SwNumRule* GetNumRule() {return pNumRule;}
+
+ static const String& GetInvalidStyle();
+ void Invalidate() {pDocShell = 0;}
+};
+/*-----------------12.02.98 08:27-------------------
+
+--------------------------------------------------*/
+class SwXChapterNumbering : public SwXNumberingRules
+{
+public:
+ SwXChapterNumbering(SwDocShell& rDocSh);
+ virtual ~SwXChapterNumbering();
+
+ void Invalidate() {SwXNumberingRules::Invalidate();}
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+};
+
+/* -----------------27.05.98 15:44-------------------
+ *
+ * --------------------------------------------------*/
+class SwXTextColumns : public cppu::WeakAggImplHelper2
+<
+ ::com::sun::star::text::XTextColumns,
+ ::com::sun::star::lang::XServiceInfo
+>
+{
+ sal_uInt32 nReference;
+ ::com::sun::star::uno::Sequence< ::com::sun::star::text::TextColumn> aTextColumns;
+
+public:
+ SwXTextColumns(const SwFmtCol& rFmtCol);
+ virtual ~SwXTextColumns();
+
+ //XTextColumns
+ virtual sal_Int32 SAL_CALL getReferenceValue( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getColumnCount( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setColumnCount( sal_Int16 nColumns ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::text::TextColumn > SAL_CALL getColumns( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setColumns( const ::com::sun::star::uno::Sequence< ::com::sun::star::text::TextColumn >& Columns ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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/sw/inc/unosrch.hxx b/sw/inc/unosrch.hxx
new file mode 100644
index 000000000000..d45ca317c865
--- /dev/null
+++ b/sw/inc/unosrch.hxx
@@ -0,0 +1,171 @@
+/*************************************************************************
+ *
+ * $RCSfile: unosrch.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOSRCH_HXX
+#define _UNOSRCH_HXX
+
+#ifndef _COM_SUN_STAR_UTIL_XPROPERTYREPLACE_HPP_
+#include <com/sun/star/util/XPropertyReplace.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> // helper for implementations
+#endif
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+/******************************************************************************
+ *
+ ******************************************************************************/
+struct SfxItemPropertyMap;
+class SwXTextDocument;
+class SwSearchProperties_Impl;
+class SfxItemSet;
+/*-----------------19.12.97 12:58-------------------
+
+--------------------------------------------------*/
+class SwXTextSearch : public cppu::WeakImplHelper3
+<
+ ::com::sun::star::util::XPropertyReplace,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::lang::XUnoTunnel
+>
+{
+ friend class SwXTextDocument;
+
+ String sSearchText;
+ String sReplaceText;
+
+ SwSearchProperties_Impl* pSearchProperties;
+ SwSearchProperties_Impl* pReplaceProperties;
+
+
+ const SfxItemPropertyMap* _pMap;
+ sal_Bool bAll : 1;
+ sal_Bool bWord : 1;
+ sal_Bool bBack : 1;
+ sal_Bool bExpr : 1;
+ sal_Bool bCase : 1;
+// sal_Bool bInSel: 1; // wie geht Suchen in Selektionen?
+ sal_Bool bStyles:1;
+ sal_Bool bSimilarity : 1;
+ sal_Bool bLevRelax :1;
+ sal_Int16 nLevExchange;
+ sal_Int16 nLevAdd;
+ sal_Int16 nLevRemove;
+
+ sal_Bool bIsValueSearch :1;
+
+public:
+ SwXTextSearch();
+ virtual ~SwXTextSearch();
+
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) 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);
+
+ //XReplaceDescriptor
+ virtual ::rtl::OUString SAL_CALL getReplaceString(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setReplaceString(const ::rtl::OUString& aReplaceString) 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);
+
+ //XPropertyReplace
+ virtual sal_Bool SAL_CALL getValueSearch(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setValueSearch(sal_Bool ValueSearch_) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > SAL_CALL getSearchAttributes(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setSearchAttributes(const ::com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& aSearchAttribs) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > SAL_CALL getReplaceAttributes(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setReplaceAttributes(const ::com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& aSearchAttribs) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ void FillSearchItemSet(SfxItemSet& rSet) const;
+ void FillReplaceItemSet(SfxItemSet& rSet) const;
+
+ sal_Bool HasSearchAttributes() const;
+ sal_Bool HasReplaceAttributes() const;
+
+};
+
+#endif
+
diff --git a/sw/inc/unostyle.hxx b/sw/inc/unostyle.hxx
new file mode 100644
index 000000000000..8cc7da507600
--- /dev/null
+++ b/sw/inc/unostyle.hxx
@@ -0,0 +1,324 @@
+/*************************************************************************
+ *
+ * $RCSfile: unostyle.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOSTYLE_HXX
+#define _UNOSTYLE_HXX
+
+#ifndef _SFXSTYLE_HXX //autogen
+#include <svtools/style.hxx>
+#endif
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+#ifndef _UNOCOLL_HXX
+#include <unocoll.hxx>
+#endif
+#ifndef _UNOMAP_HXX
+#include <unomap.hxx>
+#endif
+#ifndef _COM_SUN_STAR_STYLE_XSTYLE_HPP_
+#include <com/sun/star/style/XStyle.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_STYLE_XSTYLELOADER_HPP_
+#include <com/sun/star/style/XStyleLoader.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 _CPPUHELPER_IMPLBASE5_HXX_
+#include <cppuhelper/implbase5.hxx> // helper for implementations
+#endif
+
+class SwDocShell;
+struct SfxItemPropertyMap;
+class SwXStyle;
+class SwStyleProperties_Impl;
+class SwStartNode;
+/******************************************************************************
+ *
+ ******************************************************************************/
+/*-----------------12.02.98 08:27-------------------
+
+--------------------------------------------------*/
+class SwXStyleFamilies : public cppu::WeakImplHelper4
+<
+ ::com::sun::star::container::XIndexAccess,
+ ::com::sun::star::container::XNameAccess,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::style::XStyleLoader
+>,
+ public SwUnoCollection
+{
+ SwDocShell* pDocShell;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > * pxCharStyles;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > * pxParaStyles;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > * pxFrameStyles;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > * pxPageStyles;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > * pxNumberingStyles;
+
+ sal_Bool bLoadStyleText : 1;
+ sal_Bool bLoadStyleFrame : 1;
+ sal_Bool bLoadStylePage : 1;
+ sal_Bool bLoadStyleOverwrite : 1;
+ sal_Bool bLoadStyleNumbering : 1;
+
+public:
+ SwXStyleFamilies(SwDocShell& rDocShell);
+ virtual ~SwXStyleFamilies();
+
+ //XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName(const rtl::OUString& Name) 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& Name) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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);
+
+ //XStyleLoader
+ virtual void SAL_CALL loadStylesFromURL(const rtl::OUString& rURL, 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(void) throw( ::com::sun::star::uno::RuntimeException );
+
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ static const String& GetProgrammaticName(const String& rUIName, SfxStyleFamily eFamily);
+ static const String& GetUIName(const String& rProgrammaticName, SfxStyleFamily eFamily);
+};
+
+/* -----------------26.05.98 10:56-------------------
+ *
+ * --------------------------------------------------*/
+class SwXStyleFamily : public cppu::WeakImplHelper3
+<
+ ::com::sun::star::container::XNameContainer,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::container::XIndexAccess
+>,
+ public SfxListener
+{
+ SfxStyleFamily eFamily; // Familie
+ SfxStyleSheetBasePool* pBasePool;
+// const SfxItemPropertyMap* _pPropMap;
+ SwDocShell* pDocShell;
+
+ SwXStyle* _FindStyle(const String& rStyleName) const;
+public:
+ SwXStyleFamily(SwDocShell* pDocShell, sal_uInt16 nFamily);
+ ~SwXStyleFamily();
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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 SAL_CALL getElementType( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL SAL_CALL hasElements( ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName(const rtl::OUString& Name) 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& Name) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XNameContainer
+ virtual void SAL_CALL insertByName(const rtl::OUString& Name, const ::com::sun::star::uno::Any& Element) 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 replaceByName(const rtl::OUString& Name, const ::com::sun::star::uno::Any& Element) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::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 );
+
+ //SfxListener
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+};
+/* -----------------20.05.98 09:51-------------------
+ *
+ * --------------------------------------------------*/
+class SwXStyle : public cppu::WeakImplHelper5
+<
+ ::com::sun::star::style::XStyle,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::lang::XUnoTunnel,
+ ::com::sun::star::beans::XPropertyState
+>,
+ public SfxListener
+{
+ friend class SwXStyleFamily;
+ SwDoc* m_pDoc;
+ String sStyleName;
+ SfxStyleSheetBasePool* pBasePool;
+ SfxStyleFamily eFamily; // fuer Notify
+
+ sal_Bool bIsDescriptor : 1;
+ sal_Bool bIsConditional : 1;
+ String sParentStyleName;
+ SwStyleProperties_Impl* pPropImpl;
+
+ void ApplyDescriptorProperties();
+protected:
+ void Invalidate();
+
+ const SfxStyleSheetBasePool* GetBasePool() const {return pBasePool;}
+ SfxStyleSheetBasePool* GetBasePool() {return pBasePool;}
+
+ void SetStyleName(const String& rSet){ sStyleName = rSet;}
+public:
+ SwXStyle(SfxStyleFamily eFam = SFX_STYLE_FAMILY_PARA, BOOL bConditional = FALSE);
+ SwXStyle(SfxStyleSheetBasePool& rPool, SfxStyleFamily eFam,
+ SwDoc* pDoc,
+ const String& rStyleName);//,
+ //const SfxItemPropertyMap* _pMap);
+ ~SwXStyle();
+
+ TYPEINFO();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XNamed
+ virtual rtl::OUString SAL_CALL getName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setName(const rtl::OUString& Name_) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XStyle
+ virtual sal_Bool SAL_CALL isUserDefined(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL isInUse(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual rtl::OUString SAL_CALL getParentStyle(void) 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 );
+
+ //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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SfxListener
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ const String& GetStyleName() const { return sStyleName;}
+ SfxStyleFamily GetFamily() const {return eFamily;}
+
+ sal_Bool IsDescriptor() const {return bIsDescriptor;}
+ sal_Bool IsConditional() const { return bIsConditional;}
+ const String& GetParentStyleName() const { return sParentStyleName;}
+ void SetDoc(SwDoc* pDc, SfxStyleSheetBasePool* pPool)
+ {
+ bIsDescriptor = sal_False; m_pDoc = pDc;
+ pBasePool = pPool;
+ StartListening(*pBasePool);
+ }
+};
+
+/* -----------------24.08.98 16:04-------------------
+ *
+ * --------------------------------------------------*/
+class SwXPageStyle : public SwXStyle
+{
+ SwDocShell* pDocShell;
+public:
+ SwXPageStyle(SfxStyleSheetBasePool& rPool, SwDocShell* pDocSh, SfxStyleFamily eFam,
+ const String& rStyleName);//,
+ //const SfxItemPropertyMap* _pMap);
+ SwXPageStyle(SwDocShell* pDocSh);
+ ~SwXPageStyle();
+
+ 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);
+
+ const SwStartNode* GetStartNode(sal_Bool bHeader, sal_Bool bLeft);
+};
+#endif
+
+
diff --git a/sw/inc/unotbl.hxx b/sw/inc/unotbl.hxx
new file mode 100644
index 000000000000..01cb5461b56f
--- /dev/null
+++ b/sw/inc/unotbl.hxx
@@ -0,0 +1,584 @@
+/*************************************************************************
+ *
+ * $RCSfile: unotbl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOTBL_HXX
+#define _UNOTBL_HXX
+
+#ifndef _UNOOBJ_HXX
+#include <unoobj.hxx>
+#endif
+#ifndef _COM_SUN_STAR_CHART_XCHARTDATA_HPP_
+#include <com/sun/star/chart/XChartData.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CHART_XCHARTDATAARRAY_HPP_
+#include <com/sun/star/chart/XChartDataArray.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTTABLECURSOR_HPP_
+#include <com/sun/star/text/XTextTableCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTTABLE_HPP_
+#include <com/sun/star/text/XTextTable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XCELLRANGE_HPP_
+#include <com/sun/star/table/XCellRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XAUTOFORMATTABLE_HPP_
+#include <com/sun/star/table/XAutoFormattable.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE9_HXX_
+#include <cppuhelper/implbase9.hxx> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE8_HXX_
+#include <cppuhelper/implbase8.hxx> // helper for implementations
+#endif
+#ifndef _CPPUHELPER_IMPLBASE5_HXX_
+#include <cppuhelper/implbase5.hxx> // helper for implementations
+#endif
+
+class SwTableBoxFmt;
+class SwTableLine;
+class SwTableCursor;
+class SwTableBoxFmt;
+class SwTableLine;
+class SwTableCursor;
+
+typedef
+cppu::WeakImplHelper4
+<
+ ::com::sun::star::table::XCell,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::container::XEnumerationAccess
+>
+SwXCellBaseClass;
+class SwXCell : public SwXCellBaseClass,
+ public SwXText,
+ public SwClient
+{
+ SfxItemPropertySet aPropSet;
+ const String sCellName; //kann auch leer sein!
+ SwTableBox* pBox; // only set in non-XML import
+ const SwStartNode* pStartNode; // only set in XML import
+
+ SwFrmFmt* GetFrmFmt() const { return (SwFrmFmt*)GetRegisteredIn(); }
+
+protected:
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > createCursor();
+ sal_Bool IsValid();
+public:
+ SwXCell(SwFrmFmt* pTblFmt, SwTableBox* pBox, const String& rCellName);
+ SwXCell(SwFrmFmt* pTblFmt, const SwStartNode& rStartNode); // XML import interface
+ virtual ~SwXCell();
+
+ TYPEINFO();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire( ) throw();
+ virtual void SAL_CALL release( ) throw();
+
+ //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);
+
+ //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);
+
+ //XText
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL createTextCursor(void) 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 setString(const rtl::OUString& aString) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ //XEnumerationAccess - frueher XParagraphEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration(void) 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);
+
+ const SwTableBox* GetTblBox()const {return pBox;}
+ static SwXCell* CreateXCell(SwFrmFmt* pTblFmt, SwTableBox* pBox, const String* pCellName = 0);
+ static SwTableBox* FindBox(SwTable* pTable, SwTableBox* pBox);
+};
+/* -----------------27.06.98 15:40-------------------
+ *
+ * --------------------------------------------------*/
+class SwXTextTableRow : public cppu::WeakImplHelper2
+<
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo
+>,
+ public SwClient
+{
+ SfxItemPropertySet aPropSet;
+ SwTableLine* pLine;
+
+ SwFrmFmt* GetFrmFmt() const { return (SwFrmFmt*)GetRegisteredIn(); }
+public:
+ SwXTextTableRow(SwFrmFmt* pFmt, SwTableLine* pLine);
+ virtual ~SwXTextTableRow();
+
+ TYPEINFO();
+
+ //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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ const SwTableLine* GetTblRow() const {return pLine;}
+ static SwTableLine* FindLine(SwTable* pTable, SwTableLine* pLine);
+};
+/* -----------------20.07.98 13:03-------------------
+ *
+ * --------------------------------------------------*/
+class SwXTextTableCursor : public cppu::WeakImplHelper3
+<
+ ::com::sun::star::text::XTextTableCursor,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::beans::XPropertySet
+>,
+ public SwClient
+{
+ SwDepend aCrsrDepend;
+ SfxItemPropertySet aPropSet;
+
+ SwFrmFmt* GetFrmFmt() const { return (SwFrmFmt*)GetRegisteredIn(); }
+ SwUnoCrsr* GetCrsr() const { return (SwUnoCrsr*)aCrsrDepend.GetRegisteredIn(); }
+
+public:
+ SwXTextTableCursor(SwFrmFmt* pFmt, SwTableBox* pBox);
+ SwXTextTableCursor(SwFrmFmt& rTableFmt,
+ const SwTableCursor* pTableSelection);
+ virtual ~SwXTextTableCursor();
+
+ //XTextTableCursor
+ virtual ::rtl::OUString SAL_CALL getRangeName( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL gotoCellByName( const ::rtl::OUString& aCellName, sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL goLeft( sal_Int16 nCount, sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL goRight( sal_Int16 nCount, sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL goUp( sal_Int16 nCount, sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL goDown( sal_Int16 nCount, sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL gotoStart( sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL gotoEnd( sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL mergeRange( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL splitRange( sal_Int16 Count, sal_Bool Horizontal ) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+};
+
+/*-----------------11.12.97 09:38-------------------
+
+--------------------------------------------------*/
+struct SwRangeDescriptor
+{
+ sal_uInt16 nTop;
+ sal_uInt16 nBottom;
+ sal_uInt16 nLeft;
+ sal_uInt16 nRight;
+};
+
+class SwTableProperties_Impl;
+class SwXTextTable : public cppu::WeakImplHelper9
+<
+ ::com::sun::star::text::XTextTable,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::table::XCellRange,
+ ::com::sun::star::chart::XChartDataArray,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::container::XNamed,
+ ::com::sun::star::table::XAutoFormattable,
+ ::com::sun::star::util::XSortable,
+ ::com::sun::star::lang::XUnoTunnel
+>,
+ public SwClient
+{
+ SwEventListenerContainer aLstnrCntnr;
+ SfxItemPropertySet aPropSet;
+ const SfxItemPropertyMap* _pMap;
+ SwSortOptions* pLastSortOptions;
+
+ // Descriptor-interface
+ SwTableProperties_Impl* pTableProps;
+ String m_sTableName;
+ sal_Bool bIsDescriptor;
+ unsigned short nRows;
+ unsigned short nColumns;
+
+
+ sal_Bool bFirstRowAsLabel :1;
+ sal_Bool bFirstColumnAsLabel :1;
+
+public:
+ SwXTextTable();
+ SwXTextTable(SwFrmFmt& rFrmFmt);
+ virtual ~SwXTextTable();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ TYPEINFO();
+
+ //XTextTable
+ virtual void SAL_CALL initialize( sal_Int32 nRows, sal_Int32 nColumns ) 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);
+ 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::XCell > SAL_CALL getCellByName( const ::rtl::OUString& aCellName ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getCellNames( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextTableCursor > SAL_CALL createCursorByCellName( const ::rtl::OUString& aCellName ) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) 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 );
+
+
+ //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);
+
+ //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);
+
+ //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);
+
+ //XSortable
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL createSortDescriptor(void) 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 );
+
+ //XAutoFormattable
+ virtual void SAL_CALL autoFormat(const rtl::OUString& aName) throw( ::com::sun::star::lang::IllegalArgumentException, ::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);
+
+ //XNamed
+ virtual rtl::OUString SAL_CALL getName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setName(const rtl::OUString& Name_) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ void attachToRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange)throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
+
+ sal_uInt16 getRowCount(void);
+ sal_uInt16 getColumnCount(void);
+ ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > GetRangeByName(SwFrmFmt* pFmt, SwTable* pTable,
+ const String& sTLName, const String& sBRName,
+ SwRangeDescriptor& rDesc);
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ SwFrmFmt* GetFrmFmt() const { return (SwFrmFmt*)GetRegisteredIn(); }
+
+ static SwXTextTable* GetImplementation(::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> xRef );
+};
+
+/* -----------------27.04.98 16:41-------------------
+ *
+ * --------------------------------------------------*/
+class SwXCellRange : public cppu::WeakImplHelper6
+<
+ ::com::sun::star::table::XCellRange,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::lang::XUnoTunnel,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::chart::XChartDataArray,
+ ::com::sun::star::util::XSortable
+>,
+ public SwClient
+{
+ SwDepend aCursorDepend; //the cursor is removed after the doc has been removed
+
+ SwRangeDescriptor aRgDesc;
+ SfxItemPropertySet aPropSet;
+
+ SwUnoCrsr* pTblCrsr;
+ SwSortOptions* pLastSortOptions;
+ const SfxItemPropertyMap* _pMap;
+
+ sal_Bool bFirstRowAsLabel :1;
+ sal_Bool bFirstColumnAsLabel :1;
+
+public:
+ SwXCellRange();
+ SwXCellRange(SwUnoCrsr* pCrsr, SwFrmFmt& rFrmFmt, SwRangeDescriptor& rDesc);
+ ~SwXCellRange();
+
+ TYPEINFO();
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) 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
+ 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);
+
+ //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);
+
+ //XSortable
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL createSortDescriptor(void) 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 );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+
+ SwFrmFmt* GetFrmFmt() const { return (SwFrmFmt*)GetRegisteredIn(); }
+ sal_uInt16 getRowCount(void);
+ sal_uInt16 getColumnCount(void);
+};
+/* -----------------03.02.99 07:31-------------------
+ *
+ * --------------------------------------------------*/
+class SwXTableRows : public cppu::WeakImplHelper2
+<
+ ::com::sun::star::table::XTableRows,
+ ::com::sun::star::lang::XServiceInfo
+>,
+ public SwClient
+
+{
+ SwFrmFmt* GetFrmFmt() const { return (SwFrmFmt*)GetRegisteredIn(); }
+public:
+ SwXTableRows(SwFrmFmt& rFrmFmt);
+ virtual ~SwXTableRows();
+
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::reflection::XIdlClass > > getIdlClasses(void) throw( ::com::sun::star::uno::RuntimeException );
+
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// virtual sal_Bool queryInterface( ::com::sun::star::uno::Uik aUik, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & rOut );
+
+// SMART_UNO_DECLARATION( SwXTableRows, UsrObject );
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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);
+
+ //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 );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+};
+
+/* -----------------03.02.99 07:31-------------------
+ *
+ * --------------------------------------------------*/
+class SwXTableColumns : public cppu::WeakImplHelper2
+<
+ ::com::sun::star::table::XTableColumns,
+ ::com::sun::star::lang::XServiceInfo
+>,
+ public SwClient
+
+{
+ SwFrmFmt* GetFrmFmt() const { return (SwFrmFmt*)GetRegisteredIn(); }
+public:
+ SwXTableColumns(SwFrmFmt& rFrmFmt);
+ virtual ~SwXTableColumns();
+
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::reflection::XIdlClass > > getIdlClasses(void) throw( ::com::sun::star::uno::RuntimeException );
+
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// virtual sal_Bool queryInterface( ::com::sun::star::uno::Uik aUik, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & rOut );
+
+// SMART_UNO_DECLARATION( SwXTableColumns, UsrObject );
+
+ //XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 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);
+
+ //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 );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ //SwClient
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew);
+};
+
+#endif
+
+
+
+
diff --git a/sw/inc/usrfld.hxx b/sw/inc/usrfld.hxx
new file mode 100644
index 000000000000..7868ce7be81f
--- /dev/null
+++ b/sw/inc/usrfld.hxx
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * $RCSfile: usrfld.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _USRFLD_HXX
+#define _USRFLD_HXX
+
+#include "fldbas.hxx"
+
+class SfxPoolItem;
+class SwCalc;
+class SwDoc;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Benutzerfelder
+ --------------------------------------------------------------------*/
+
+class SwUserFieldType : public SwValueFieldType
+{
+ BOOL bValidValue : 1;
+ BOOL bDeleted : 1;
+ double nValue;
+ String aName;
+ String aContent;
+ USHORT nType;
+
+public:
+ SwUserFieldType( SwDoc* pDocPtr, const String& );
+
+ virtual const String& GetName() const;
+ virtual SwFieldType* Copy() const;
+
+ String Expand(ULONG nFmt, USHORT nSubType, USHORT nLng);
+
+ String GetContent( ULONG nFmt = 0 );
+ void SetContent( const String& rStr, ULONG nFmt = 0 );
+ void CtrlSetContent( const String& rStr );
+
+ inline BOOL IsValid() const;
+ inline void ChgValid( BOOL bNew );
+
+ virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew );
+
+ double GetValue(SwCalc& rCalc); // Member nValue neu berrechnen
+ inline double GetValue() const;
+ inline void SetValue(const double nVal);
+
+ inline USHORT GetType() const;
+ inline void SetType(USHORT);
+
+ BOOL IsDeleted() const { return bDeleted; }
+ void SetDeleted( BOOL b ) { bDeleted = b; }
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+inline BOOL SwUserFieldType::IsValid() const
+ { return bValidValue; }
+
+inline void SwUserFieldType::ChgValid( BOOL bNew )
+ { bValidValue = bNew; }
+
+inline double SwUserFieldType::GetValue() const
+ { return nValue; }
+
+inline void SwUserFieldType::SetValue(const double nVal)
+ { nValue = nVal; }
+
+inline USHORT SwUserFieldType::GetType() const
+ { return nType; }
+
+inline void SwUserFieldType::SetType(USHORT nSub)
+{
+ nType = nSub;
+ EnableFormat(!(nSub & GSE_STRING));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Benutzerfelder
+ --------------------------------------------------------------------*/
+
+class SwUserField : public SwValueField
+{
+ USHORT nSubType;
+
+public:
+ SwUserField(SwUserFieldType*, USHORT nSub = 0, ULONG nFmt = 0);
+
+ virtual USHORT GetSubType() const;
+ virtual void SetSubType(USHORT nSub);
+
+ virtual double GetValue() const;
+ virtual void SetValue( const double& rVal );
+
+ virtual String Expand() const;
+ virtual SwField* Copy() const;
+ virtual String GetCntnt(BOOL bName = FALSE) const;
+
+ // Name kann nicht geaendert werden
+ virtual const String& GetPar1() const;
+
+ // Inhalt
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty );
+};
+
+#endif // _USRFLD_HXX
diff --git a/sw/inc/viewopt.hxx b/sw/inc/viewopt.hxx
new file mode 100644
index 000000000000..73acc02a7090
--- /dev/null
+++ b/sw/inc/viewopt.hxx
@@ -0,0 +1,602 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewopt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _VIEWOPT_HXX
+#define _VIEWOPT_HXX
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _SV_COLOR_HXX //autogen
+#include <vcl/color.hxx>
+#endif
+#include "authratr.hxx"
+
+class SwRect;
+class Window;
+class OutputDevice;
+class ViewShell;
+class SwDocShell;
+
+#define VIEWOPT_1_IDLE 0x00000001L
+#define VIEWOPT_1_TAB 0x00000002L
+#define VIEWOPT_1_BLANK 0x00000004L
+#define VIEWOPT_1_HARDBLANK 0x00000008L
+#define VIEWOPT_1_PARAGRAPH 0x00000010L
+#define VIEWOPT_1_LINEBREAK 0x00000020L
+#define VIEWOPT_1_PAGEBREAK 0x00000040L
+#define VIEWOPT_1_COLUMNBREAK 0x00000080L
+#define VIEWOPT_1_SOFTHYPH 0x00000100L
+#define VIEWOPT_1_TOX 0x00000200L
+#define VIEWOPT_1_REF 0x00000400L
+#define VIEWOPT_1_FLDNAME 0x00000800L
+#define VIEWOPT_1_FIELD 0x00001000L
+#define VIEWOPT_1_FOOTNOTE 0x00002000L
+#define VIEWOPT_1_POSTITS 0x00004000L
+#define VIEWOPT_1_HIDDEN 0x00008000L
+#define VIEWOPT_1_SUBSLINES 0x00010000L
+#define VIEWOPT_1_GRAPHIC 0x00020000L
+#define VIEWOPT_1_TABLE 0x00040000L
+#define VIEWOPT_1_DRAW 0x00080000L
+#define VIEWOPT_1_CONTROL 0x00100000L
+#define VIEWOPT_1_SUBSTABLE 0x00200000L
+#define VIEWOPT_1_CROSSHAIR 0x00400000L
+#define VIEWOPT_1_SNAP 0x00800000L
+#define VIEWOPT_1_SYNCHRONIZE 0x01000000L
+#define VIEWOPT_1_GRIDVISIBLE 0x02000000L
+#define VIEWOPT_1_ONLINESPELL 0x04000000L
+#define VIEWOPT_1_HIDESPELL 0x08000000L
+#define VIEWOPT_1_RESERVED1 0x10000000L
+#define VIEWOPT_1_VIEWMETACHARS 0x20000000L
+#define VIEWOPT_1_PAGEBACK 0x40000000L
+#define VIEWOPT_1_SOLIDMARKHDL 0x80000000L
+
+#define VIEWOPT_CORE2_BLACKFONT 0x00000001L
+#define VIEWOPT_CORE2_HIDDENPARA 0x00000002L
+#define VIEWOPT_CORE2_SMOOTHSCROLL 0x00000004L
+#define VIEWOPT_CORE2_CRSR_IN_PROT 0x00000008L
+#define VIEWOPT_CORE2_SECTION_BOUNDS 0x00000010L
+#define VIEWOPT_CORE2_INDEX_BACKGROUND 0x00000020L
+#define VIEWOPT_CORE2_BIGMARKHDL 0x00000040L
+
+#define VIEWOPT_2_TOOLBOX 0x00000001L
+#define VIEWOPT_2_TOOLBOXTEXT 0x00000002L
+#define VIEWOPT_2_TOOLBOXBITMAP 0x00000004L
+#define VIEWOPT_2_TOOLBOXBOTH 0x00000008L
+#define VIEWOPT_2_TOOLBOXLEFT 0x00000010L
+#define VIEWOPT_2_TOOLBOXRIGHT 0x00000020L
+#define VIEWOPT_2_TOOLBOXTOP 0x00000040L
+#define VIEWOPT_2_TOOLBOXBOTTOM 0x00000080L
+#define VIEWOPT_2_UNUSED1 0x00000100L
+#define VIEWOPT_2_RIBBONBAR 0x00000200L
+#define VIEWOPT_2_TABWIN 0x00000400L
+#define VIEWOPT_2_VSCROLLBAR 0x00000800L
+#define VIEWOPT_2_HSCROLLBAR 0x00001000L
+#define VIEWOPT_2_STATUSLINE 0x00002000L
+#define VIEWOPT_2_VLIN 0x00004000L
+#define VIEWOPT_2_SVLOOK 0x00008000L
+#define VIEWOPT_2_MODIFIED 0x00010000L
+#define VIEWOPT_2_KEEPASPECTRATIO 0x00020000L
+#define VIEWOPT_2_GRFKEEPZOOM 0x00040000L
+#define VIEWOPT_2_EXECHYPERLINKS 0x00080000L
+#define VIEWOPT_2_RESERVED2 0x00100000L
+#define VIEWOPT_2_RESERVED3 0x00200000L
+#define VIEWOPT_2_RESERVED4 0x00400000L
+#define VIEWOPT_2_PRTFORMAT 0x00800000L
+#define VIEWOPT_2_SHADOWCRSR 0x01000000L
+
+//Tabellenhintergrund
+#define TBL_DEST_CELL 0
+#define TBL_DEST_ROW 1
+#define TBL_DEST_TBL 2
+
+// Implementierung in core/text/txtpaint.cxx
+extern void SyncVout( const OutputDevice *pOut );
+
+class SwViewOption
+{
+protected:
+ static USHORT nPixelTwips;// 1 Pixel == ? Twips
+
+ String sSymbolFont; // Symbolzeichensatz
+ UINT32 nCoreOptions; // Bits fuer die ViewShell
+ UINT32 nCore2Options; // Bits fuer die ViewShell
+ UINT32 nUIOptions; // UI-Bits
+ Color aRetoucheColor; // DefaultBackground fuer BrowseView
+ Color aShdwCrsrCol; // Farbe fuer den ShadowCrsr
+ Color aIdxBackgrndCol; // color of index background
+ Size aSnapSize; // Beschreibt hori. wie vert. Snap
+ short nDivisionX; // Rasterunterteilung
+ short nDivisionY;
+ BYTE nPagePrevRow; // Page Preview Row/Columns
+ BYTE nPagePrevCol; // Page Preview Row/Columns
+ BYTE nShdwCrsrFillMode; // FillMode fuer den ShadowCrsr
+ BOOL bReadonly : 1; // Readonly-Doc
+ BOOL bStarOneSetting : 1;// prevent from UI automatics (no scrollbars in readonly documents)
+
+ // Maszstab
+ USHORT nZoom; // Angaben in Prozent
+ BYTE eZoom; // 'enum' fuer Zoom
+ BYTE nTblDest; // Ziel fuer Tabellenhintergrund
+
+#ifndef PRODUCT
+ // korrespondieren zu den Angaben in ui/config/cfgvw.src
+ BOOL bTest1 :1; // Test-Flag "Layout not loading"
+ BOOL bTest2 :1; // Test-Flag "WYSIWYG++"
+ BOOL bTest3 :1; // Test-Flag ""
+ BOOL bTest4 :1; // Test-Flag "WYSIWYG debug"
+ BOOL bTest5 :1; // Test-Flag "No idle format"
+ BOOL bTest6 :1; // Test-Flag "No screen adj"
+ BOOL bTest7 :1; // Test-Flag "win format"
+ BOOL bTest8 :1; // Test-Flag ""
+ static BOOL bTest9; // Test-Flag "DrawingLayerNotLoading"
+ BOOL bTest10 :1; // Test-Flag "Format by Input"
+#endif
+
+public:
+ SwViewOption(); // CTOR
+ SwViewOption(const SwViewOption&); //
+ ~SwViewOption(); //
+
+ void Init( Window *pWin ); // Initialisierung der statischen Daten
+
+ USHORT GetPixelTwips() const { return nPixelTwips; }
+
+ inline UINT32 GetCoreOptions() const {return nCoreOptions;}
+ inline UINT32 GetUIOptions() const {return nUIOptions;}
+ inline void SetUIOptions( const SwViewOption& );
+
+/*---------------------------------------------------------------------------
+ Optionen aus nCoreOptions
+----------------------------------------------------------------------------*/
+
+ inline BOOL IsIdle() const
+ { return nCoreOptions & VIEWOPT_1_IDLE ? TRUE : FALSE; }
+ inline void SetIdle( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_IDLE ) : ( nCoreOptions &= ~VIEWOPT_1_IDLE); }
+
+ inline BOOL IsTab(BOOL bHard = FALSE) const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_TAB) &&
+ ((nCoreOptions & VIEWOPT_1_VIEWMETACHARS)||bHard)
+ ? TRUE : FALSE; }
+ inline void SetTab( BOOL b ) {
+ (b != 0) ? (nCoreOptions |= VIEWOPT_1_TAB ) : ( nCoreOptions &= ~VIEWOPT_1_TAB); }
+ void PaintTab( OutputDevice *pOut, const SwRect &rRect ) const;
+
+
+ inline BOOL IsBlank(BOOL bHard = FALSE) const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_BLANK) &&
+ ((nCoreOptions & VIEWOPT_1_VIEWMETACHARS)||bHard)
+ ? TRUE : FALSE; }
+ inline void SetBlank( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_BLANK ) : ( nCoreOptions &= ~VIEWOPT_1_BLANK); }
+
+ inline BOOL IsHardBlank() const
+ { return !bReadonly && nCoreOptions & VIEWOPT_1_HARDBLANK ? TRUE : FALSE; }
+ inline void SetHardBlank( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_HARDBLANK ) : ( nCoreOptions &= ~VIEWOPT_1_HARDBLANK); }
+
+ inline BOOL IsParagraph(BOOL bHard = FALSE) const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_PARAGRAPH) &&
+ ((nCoreOptions & VIEWOPT_1_VIEWMETACHARS)||bHard)
+ ? TRUE : FALSE; }
+ inline void SetParagraph( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_PARAGRAPH ) : ( nCoreOptions &= ~VIEWOPT_1_PARAGRAPH); }
+
+ inline BOOL IsLineBreak(BOOL bHard = FALSE) const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_LINEBREAK) &&
+ ((nCoreOptions & VIEWOPT_1_VIEWMETACHARS)||bHard)
+ ? TRUE : FALSE; }
+ inline void SetLineBreak( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_LINEBREAK ) : ( nCoreOptions &= ~VIEWOPT_1_LINEBREAK); }
+ void PaintLineBreak( OutputDevice *pOut, const SwRect &rRect ) const;
+ USHORT GetLineBreakWidth( const OutputDevice *pOut = 0 ) const;
+
+ inline BOOL IsPageBreak() const { return !bReadonly && (nCoreOptions & VIEWOPT_1_PAGEBREAK) ? TRUE : FALSE; }
+ inline void SetPageBreak( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_PAGEBREAK ) : ( nCoreOptions &= ~VIEWOPT_1_PAGEBREAK); }
+
+ inline BOOL IsColumnBreak() const { return !bReadonly && (nCoreOptions & VIEWOPT_1_COLUMNBREAK) ? TRUE : FALSE; }
+ inline void SetColumnBreak( BOOL b)
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_COLUMNBREAK ) : ( nCoreOptions &= ~VIEWOPT_1_COLUMNBREAK); }
+
+ inline BOOL IsSoftHyph() const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_SOFTHYPH) ? TRUE : FALSE; }
+ inline void SetSoftHyph( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_SOFTHYPH ) : ( nCoreOptions &= ~VIEWOPT_1_SOFTHYPH); }
+
+ inline BOOL IsTox() const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_TOX) ? TRUE : FALSE; }
+ inline void SetTox( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_TOX ) : ( nCoreOptions &= ~VIEWOPT_1_TOX); }
+
+ inline BOOL IsRef() const { return !bReadonly && (nCoreOptions & VIEWOPT_1_REF) ? TRUE : FALSE; }
+ inline void SetRef( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_REF ) : ( nCoreOptions &= ~VIEWOPT_1_REF); }
+
+ inline BOOL IsFldName() const { return !bReadonly && (nCoreOptions & VIEWOPT_1_FLDNAME) ? TRUE : FALSE; }
+ inline void SetFldName( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_FLDNAME ) : ( nCoreOptions &= ~VIEWOPT_1_FLDNAME); }
+
+ inline BOOL IsField() const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_FIELD) ? TRUE : FALSE; }
+ inline void SetField( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_FIELD ) : ( nCoreOptions &= ~VIEWOPT_1_FIELD); }
+
+ inline BOOL IsFootNote() const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_FOOTNOTE) ? TRUE : FALSE; }
+ inline void SetFootNote( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_FOOTNOTE) : ( nCoreOptions &= ~VIEWOPT_1_FOOTNOTE); }
+
+ inline BOOL IsPostIts() const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_POSTITS) ? TRUE : FALSE; }
+ inline void SetPostIts( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_POSTITS ) : ( nCoreOptions &= ~VIEWOPT_1_POSTITS); }
+ void PaintPostIts( OutputDevice *pOut, const SwRect &rRect,
+ long nCol ) const;
+ USHORT GetPostItsWidth( const OutputDevice *pOut = 0 ) const;
+
+ inline BOOL IsHidden() const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_HIDDEN) ? TRUE : FALSE; }
+ inline void SetHidden( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_HIDDEN ) : ( nCoreOptions &= ~VIEWOPT_1_HIDDEN); }
+
+ inline BOOL IsSubsLines() const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_SUBSLINES) ? TRUE : FALSE; }
+ inline void SetSubsLines( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_SUBSLINES ) : ( nCoreOptions &= ~VIEWOPT_1_SUBSLINES); }
+
+ inline BOOL IsGraphic() const
+ { return nCoreOptions & VIEWOPT_1_GRAPHIC ? TRUE : FALSE; }
+ inline void SetGraphic( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_GRAPHIC ) : ( nCoreOptions &= ~VIEWOPT_1_GRAPHIC); }
+
+ inline BOOL IsPageBack() const
+ { return nCoreOptions & VIEWOPT_1_PAGEBACK ? TRUE : FALSE; }
+ inline void SetPageBack( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_PAGEBACK) : ( nCoreOptions &= ~VIEWOPT_1_PAGEBACK); }
+
+ inline BOOL IsSolidMarkHdl() const
+ { return nCoreOptions & VIEWOPT_1_SOLIDMARKHDL ? TRUE : FALSE; }
+ inline void SetSolidMarkHdl( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_SOLIDMARKHDL) : ( nCoreOptions &= ~VIEWOPT_1_SOLIDMARKHDL); }
+
+ inline BOOL IsBigMarkHdl() const
+ { return nCore2Options & VIEWOPT_CORE2_BIGMARKHDL ? TRUE : FALSE;}
+ inline void SetBigMarkHdl(BOOL b)
+ { (b != 0) ? (nCore2Options |= VIEWOPT_CORE2_BIGMARKHDL ) : (nCore2Options &= ~VIEWOPT_CORE2_BIGMARKHDL);}
+
+ inline BOOL IsTable() const
+ { return nCoreOptions & VIEWOPT_1_TABLE ? TRUE : FALSE; }
+ inline void SetTable( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_TABLE ) : ( nCoreOptions &= ~VIEWOPT_1_TABLE); }
+
+ inline BOOL IsDraw() const
+ { return nCoreOptions & VIEWOPT_1_DRAW ? TRUE : FALSE; }
+ inline void SetDraw( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_DRAW ) : ( nCoreOptions &= ~VIEWOPT_1_DRAW); }
+
+ inline BOOL IsControl() const
+ { return nCoreOptions & VIEWOPT_1_CONTROL ? TRUE : FALSE; }
+ inline void SetControl( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_CONTROL ) : ( nCoreOptions &= ~VIEWOPT_1_CONTROL); }
+
+ inline BOOL IsSubsTable() const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_SUBSTABLE) ? TRUE : FALSE; }
+ inline void SetSubsTable( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_SUBSTABLE ) : ( nCoreOptions &= ~VIEWOPT_1_SUBSTABLE); }
+
+ inline BOOL IsSnap() const
+ { return nCoreOptions & VIEWOPT_1_SNAP ? TRUE : FALSE; }
+ inline void SetSnap( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_SNAP ) : ( nCoreOptions &= ~VIEWOPT_1_SNAP); }
+
+ inline void SetSnapSize( Size &rSz ){ aSnapSize = rSz; }
+ inline const Size &GetSnapSize() const { return aSnapSize; }
+
+ inline BOOL IsGridVisible() const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_GRIDVISIBLE) ? TRUE : FALSE; }
+ inline void SetGridVisible( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_GRIDVISIBLE ) : ( nCoreOptions &= ~VIEWOPT_1_GRIDVISIBLE); }
+
+ inline BOOL IsOnlineSpell() const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_ONLINESPELL) ? TRUE : FALSE; }
+ inline void SetOnlineSpell( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_ONLINESPELL ) : ( nCoreOptions &= ~VIEWOPT_1_ONLINESPELL); }
+
+ inline BOOL IsHideSpell() const
+ { return nCoreOptions & VIEWOPT_1_HIDESPELL ? TRUE : FALSE; }
+ inline void SetHideSpell( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_HIDESPELL ) : ( nCoreOptions &= ~VIEWOPT_1_HIDESPELL); }
+
+ inline BOOL IsViewMetaChars() const
+ { return !bReadonly && (nCoreOptions & VIEWOPT_1_VIEWMETACHARS) ? TRUE : FALSE; }
+ inline void SetViewMetaChars( BOOL b)
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_VIEWMETACHARS ) : ( nCoreOptions &= ~VIEWOPT_1_VIEWMETACHARS); }
+
+ inline BOOL IsSynchronize() const
+ { return nCoreOptions & VIEWOPT_1_SYNCHRONIZE ? TRUE : FALSE;}
+ inline void SetSynchronize( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_SYNCHRONIZE ) : ( nCoreOptions &= ~VIEWOPT_1_SYNCHRONIZE); }
+
+ inline BOOL IsCrossHair() const
+ { return nCoreOptions & VIEWOPT_1_CROSSHAIR ? TRUE : FALSE; }
+ inline void SetCrossHair( BOOL b )
+ { (b != 0) ? (nCoreOptions |= VIEWOPT_1_CROSSHAIR ) : ( nCoreOptions &= ~VIEWOPT_1_CROSSHAIR); }
+
+/*---------------------------------------------------------------------------
+ Optionen aus nCore2Options
+----------------------------------------------------------------------------*/
+ inline BOOL IsBlackFont() const
+ {return nCore2Options & VIEWOPT_CORE2_BLACKFONT ? TRUE : FALSE;}
+
+ inline void SetBlackFont(BOOL b)
+ { (b != 0) ? (nCore2Options |= VIEWOPT_CORE2_BLACKFONT) : (nCore2Options &= ~VIEWOPT_CORE2_BLACKFONT);}
+
+ inline BOOL IsShowHiddenPara() const
+ {return nCore2Options & VIEWOPT_CORE2_HIDDENPARA ? TRUE : FALSE;}
+
+ inline void SetShowHiddenPara(BOOL b)
+ { (b != 0) ? (nCore2Options |= VIEWOPT_CORE2_HIDDENPARA) : (nCore2Options &= ~VIEWOPT_CORE2_HIDDENPARA);}
+
+ inline BOOL IsSmoothScroll() const
+ {return nCore2Options & VIEWOPT_CORE2_SMOOTHSCROLL ? TRUE : FALSE;}
+
+ inline void SetSmoothScroll(BOOL b)
+ { (b != 0) ? (nCore2Options |= VIEWOPT_CORE2_SMOOTHSCROLL) : (nCore2Options &= ~VIEWOPT_CORE2_SMOOTHSCROLL);}
+
+ inline BOOL IsCursorInProtectedArea() const
+ {return nCore2Options & VIEWOPT_CORE2_CRSR_IN_PROT ? TRUE : FALSE;}
+
+ inline void SetCursorInProtectedArea(BOOL b)
+ { (b != 0) ? (nCore2Options |= VIEWOPT_CORE2_CRSR_IN_PROT) : (nCore2Options &= ~VIEWOPT_CORE2_CRSR_IN_PROT);}
+
+ inline BOOL IsSectionBounds() const
+ {return !bReadonly && (nCore2Options & VIEWOPT_CORE2_SECTION_BOUNDS) ? TRUE : FALSE;}
+
+ inline void SetSectionBounds(BOOL b)
+ { (b != 0) ? (nCore2Options |= VIEWOPT_CORE2_SECTION_BOUNDS) : (nCore2Options &= ~VIEWOPT_CORE2_SECTION_BOUNDS);}
+
+ inline BOOL IsIndexBackground() const
+ {return nCore2Options & VIEWOPT_CORE2_INDEX_BACKGROUND ? TRUE : FALSE;}
+
+ inline void SetIndexBackground(BOOL b)
+ { (b != 0) ? (nCore2Options |= VIEWOPT_CORE2_INDEX_BACKGROUND) : (nCore2Options &= ~VIEWOPT_CORE2_INDEX_BACKGROUND);}
+
+
+
+/*---------------------------------------------------------------------------
+
+----------------------------------------------------------------------------*/
+
+
+ inline short GetDivisionX() const { return nDivisionX; }
+ inline void SetDivisionX( short n ){ nDivisionX = n; }
+ inline short GetDivisionY() const { return nDivisionY; }
+ inline void SetDivisionY( short n ){ nDivisionY = n; }
+
+ inline BYTE GetPagePrevRow() const { return nPagePrevRow; }
+ inline void SetPagePrevRow( BYTE n ) { nPagePrevRow = n; }
+ inline BYTE GetPagePrevCol() const { return nPagePrevCol; }
+ inline void SetPagePrevCol( BYTE n ) { nPagePrevCol = n; }
+ BOOL IsReadonly() const { return bReadonly; }
+ void SetReadonly(BOOL bSet) { bReadonly = bSet; }
+
+ BOOL IsAutoCompleteWords() const;
+
+
+#ifndef PRODUCT
+ // korrespondieren zu den Angaben in ui/config/cfgvw.src
+ inline BOOL IsTest1() const { return bTest1; }
+ inline void SetTest1( BOOL b ) { bTest1 = b; }
+ inline BOOL IsTest2() const { return bTest2; }
+ inline void SetTest2( BOOL b ) { bTest2 = b; }
+ inline BOOL IsTest3() const { return bTest3; }
+ inline void SetTest3( BOOL b ) { bTest3 = b; }
+ inline BOOL IsTest4() const { return bTest4; }
+ inline void SetTest4( BOOL b ) { bTest4 = b; }
+ inline BOOL IsTest5() const { return bTest5; }
+ inline void SetTest5( BOOL b ) { bTest5 = b; }
+ inline BOOL IsTest6() const { return bTest6; }
+ inline void SetTest6( BOOL b ) { bTest6 = b; }
+ inline BOOL IsTest7() const { return bTest7; }
+ inline void SetTest7( BOOL b ) { bTest7 = b; }
+ inline BOOL IsTest8() const { return bTest8; }
+ inline void SetTest8( BOOL b ) { bTest8 = b; }
+ static inline BOOL IsTest9() { return bTest9; }
+ static inline void SetTest9( BOOL b ) { bTest9 = b; }
+ inline BOOL IsTest10() const { return bTest10; }
+ inline void SetTest10( BOOL b ) { bTest10 = b; }
+#endif
+
+ inline USHORT GetZoom() const { return nZoom; }
+ inline void SetZoom( USHORT n ){ nZoom = n; }
+
+ void DrawRect( OutputDevice* pOut, const SwRect &rRect, long nCol ) const;
+ void DrawRectPrinter( OutputDevice* pOut, const SwRect& rRect ) const;
+
+ SwViewOption& operator=( const SwViewOption &rOpt );
+ // Vergleichsmethoden
+ BOOL IsEqualFlags ( const SwViewOption &rOpt ) const;
+ inline BOOL operator==( const SwViewOption &rOpt ) const;
+
+
+/*---------------------------------------------------------------------------
+ Optionen aus nUIOptions
+----------------------------------------------------------------------------*/
+
+ BOOL IsViewToolbox() const
+ { return nUIOptions & VIEWOPT_2_TOOLBOX ? TRUE : FALSE; }
+ BOOL IsViewRibbonBar() const
+ { return nUIOptions & VIEWOPT_2_RIBBONBAR ? TRUE : FALSE; }
+ BOOL IsViewVScrollBar() const
+ { return nUIOptions & VIEWOPT_2_VSCROLLBAR ? TRUE : FALSE; }
+ BOOL IsViewHScrollBar() const
+ { return nUIOptions & VIEWOPT_2_HSCROLLBAR ? TRUE : FALSE; }
+ BOOL IsViewSVLook() const
+ { return nUIOptions & VIEWOPT_2_SVLOOK ? TRUE : FALSE; }
+ BOOL IsKeepRatio() const
+ { return nUIOptions & VIEWOPT_2_KEEPASPECTRATIO ? TRUE : FALSE; }
+ BOOL IsGrfKeepZoom() const
+ { return nUIOptions & VIEWOPT_2_GRFKEEPZOOM ? TRUE : FALSE; }
+ BOOL IsExecHyperlinks() const
+ { return nUIOptions & VIEWOPT_2_EXECHYPERLINKS ? TRUE : FALSE; }
+ BOOL IsPrtFormat() const
+ { return nUIOptions & VIEWOPT_2_PRTFORMAT ? TRUE : FALSE; }
+
+ BYTE GetZoomType() const { return eZoom; }
+
+ BYTE GetTblDest() const { return nTblDest; }
+
+ void SetViewToolbox (BOOL b)
+ { b ? (nUIOptions |= VIEWOPT_2_TOOLBOX ) : ( nUIOptions &= ~VIEWOPT_2_TOOLBOX); }
+ void SetViewRibbonBar (BOOL b)
+ { b ? (nUIOptions |= VIEWOPT_2_RIBBONBAR ) : ( nUIOptions &= ~VIEWOPT_2_RIBBONBAR); }
+ void SetViewVScrollBar(BOOL b)
+ { b ? (nUIOptions |= VIEWOPT_2_VSCROLLBAR ) : ( nUIOptions &= ~VIEWOPT_2_VSCROLLBAR); }
+ void SetViewHScrollBar(BOOL b)
+ { b ? (nUIOptions |= VIEWOPT_2_HSCROLLBAR ) : ( nUIOptions &= ~VIEWOPT_2_HSCROLLBAR); }
+ void SetViewSVLook (BOOL b)
+ { b ? (nUIOptions |= VIEWOPT_2_SVLOOK ) : ( nUIOptions &= ~VIEWOPT_2_SVLOOK); }
+ void SetKeepRatio (BOOL b)
+ { b ? (nUIOptions |= VIEWOPT_2_KEEPASPECTRATIO ) : ( nUIOptions &= ~VIEWOPT_2_KEEPASPECTRATIO); }
+ void SetGrfKeepZoom (BOOL b)
+ { b ? (nUIOptions |= VIEWOPT_2_GRFKEEPZOOM ) : ( nUIOptions &= ~VIEWOPT_2_GRFKEEPZOOM); }
+ void SetExecHyperlinks( BOOL b)
+ { b ? (nUIOptions |= VIEWOPT_2_EXECHYPERLINKS) : (nUIOptions &= ~VIEWOPT_2_EXECHYPERLINKS); }
+ void SetPrtFormat( BOOL b)
+ { b ? (nUIOptions |= VIEWOPT_2_PRTFORMAT) : (nUIOptions &= ~VIEWOPT_2_PRTFORMAT); }
+
+ void SetZoomType (BYTE nZoom){ eZoom = nZoom; }
+ void SetTblDest( BYTE nNew ) { nTblDest = nNew; }
+
+ const String& GetSymbolFont() const {return sSymbolFont;}
+ void SetSymbolFont(const String& sSet) {sSymbolFont = sSet;}
+
+ const Color& GetRetoucheColor() const { return aRetoucheColor;}
+ void SetRetoucheColor(const Color&r) { aRetoucheColor = r; }
+
+ inline BOOL IsViewTabwin() const;
+ inline BOOL IsViewVLin() const;
+ inline void SetViewTabwin (BOOL b);
+ inline void SetViewVLin (BOOL b);
+
+ // ShadowCursor ein schalten/abfragen/Farbe setzen/Modus setzen
+ BOOL IsShadowCursor() const
+ { return nUIOptions & VIEWOPT_2_SHADOWCRSR ? TRUE : FALSE; }
+ void SetShadowCursor(BOOL b)
+ { b ? (nUIOptions |= VIEWOPT_2_SHADOWCRSR ) : ( nUIOptions &= ~VIEWOPT_2_SHADOWCRSR); }
+
+ BOOL IsStarOneSetting() const {return bStarOneSetting; }
+ void SetStarOneSetting(BOOL bSet) {bStarOneSetting = bSet; }
+
+ const Color& GetShdwCrsrColor() const { return aShdwCrsrCol; }
+ void SetShdwCrsrColor( const Color& rCol ) { aShdwCrsrCol = rCol; };
+
+ BYTE GetShdwCrsrFillMode() const { return nShdwCrsrFillMode; }
+ void SetShdwCrsrFillMode( BYTE nMode ) { nShdwCrsrFillMode = nMode; };
+
+ const Color& GetIndexBackgrndColor() const { return aIdxBackgrndCol;}
+ void SetIndexBackgrndColor(const Color& rCol) {aIdxBackgrndCol = rCol;}
+};
+
+
+inline BOOL SwViewOption::operator==( const SwViewOption &rOpt ) const
+{
+ return IsEqualFlags( rOpt ) && nZoom == rOpt.GetZoom();
+}
+
+inline void SwViewOption::SetUIOptions( const SwViewOption& rVOpt )
+{
+ nUIOptions = rVOpt.nUIOptions;
+ nTblDest = rVOpt.nTblDest;
+ nShdwCrsrFillMode = rVOpt.nShdwCrsrFillMode;
+ aShdwCrsrCol = rVOpt.aShdwCrsrCol;
+}
+
+inline BOOL SwViewOption::IsViewTabwin() const
+{
+ return !bReadonly && (nUIOptions & VIEWOPT_2_TABWIN) ? TRUE : FALSE;
+}
+
+inline BOOL SwViewOption::IsViewVLin() const
+{
+ return !bReadonly && (nUIOptions & VIEWOPT_2_VLIN) ? TRUE : FALSE;
+}
+
+inline void SwViewOption::SetViewTabwin(BOOL b)
+{
+ b ? (nUIOptions |= VIEWOPT_2_TABWIN ) : ( nUIOptions &= ~VIEWOPT_2_TABWIN);
+}
+
+inline void SwViewOption::SetViewVLin(BOOL b)
+{
+ b ? (nUIOptions |= VIEWOPT_2_VLIN ) : ( nUIOptions &= ~VIEWOPT_2_VLIN);
+}
+
+
+// Hilfsfunktion zur Ermittlung der HTML-Faehigkeiten
+USHORT GetHtmlMode(const SwDocShell*);
+
+
+#endif
diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx
new file mode 100644
index 000000000000..afca768439d5
--- /dev/null
+++ b/sw/inc/viewsh.hxx
@@ -0,0 +1,490 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _VIEWSH_HXX
+#define _VIEWSH_HXX
+
+#ifndef _RTTI_HXX //autogen
+#include <tools/rtti.hxx>
+#endif
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+
+#include "swtypes.hxx"
+#include "ring.hxx"
+#include "swrect.hxx"
+#include "errhdl.hxx"
+
+class SwDoc;
+class SfxPrinter;
+class SfxProgress;
+class SwRootFrm;
+class SwNodes;
+class SdrView;
+class SfxItemPool;
+class SfxViewShell;
+
+#ifndef _COM_SUN_STAR_LINGUISTIC_XSPELLALTERNATIVES_HPP_
+#include <com/sun/star/linguistic/XSpellAlternatives.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_SPELLFAILURE_HPP_
+#include <com/sun/star/linguistic/SpellFailure.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XSPELLCHECKER1_HPP_
+#include <com/sun/star/linguistic/XSpellChecker1.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XALTERNATIVESPELLING_HPP_
+#include <com/sun/star/linguistic/XAlternativeSpelling.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XPOSSIBLEHYPHENSSUPPLIER_HPP_
+#include <com/sun/star/linguistic/XPossibleHyphensSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XHYPHENATOR_HPP_
+#include <com/sun/star/linguistic/XHyphenator.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XPOSSIBLEHYPHENS_HPP_
+#include <com/sun/star/linguistic/XPossibleHyphens.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XHYPHENATEDWORD_HPP_
+#include <com/sun/star/linguistic/XHyphenatedWord.hpp>
+#endif
+
+
+class SwViewOption;
+class SwViewImp;
+class SwPrtOptions;
+class SwPagePreViewPrtData;
+class Window;
+class OutputDevice;
+class SwLayIdle;
+struct ShellResource;
+class SwRegionRects;
+class SwFrm;
+
+//JP 19.07.98: - Bug 52312
+// define fuer Flags, die im CTOR oder den darunter liegenden Schichten
+// benoetigt werden.
+// Zur Zeit wird fuer die DrawPage das PreView Flag benoetigt
+#define VSHELLFLAG_ISPREVIEW ((long)0x1)
+
+class ViewShell: public Ring
+{
+ friend void SetOutDev( ViewShell *pSh, OutputDevice *pOut );
+ friend void SetOutDevAndWin( ViewShell *pSh, OutputDevice *pOut,
+ Window *pWin, sal_uInt16 nZoom );
+
+ friend class SwViewImp;
+ friend class SwLayIdle;
+
+ //Umsetzen der SwVisArea, damit vor dem Drucken sauber formatiert
+ //werden kann.
+ friend void SetSwVisArea( ViewShell *pSh, const SwRect & );
+
+ static sal_Bool bLstAct; // sal_True wenn Das EndAction der letzten Shell
+ // laeuft; also die EndActions der
+ // anderen Shells auf das Dokument
+ // abgearbeitet sind.
+
+ SfxViewShell *pSfxViewShell;
+ SwViewImp *pImp; //Core-Interna der ViewShell.
+ //Der Pointer ist niemals 0.
+
+ Window *pWin; //Ist 0, wenn gedruckt wird.
+ OutputDevice *pOut; //Fuer alle Ausgaben. Kann sein:
+ //Window, Printer, VirtDev, ...
+ OutputDevice *pRef; //Formatierreferenzdevice, soll zum
+ // Formatieren benutzt werden, wenn gesetzt (Prospekt+Seitenvorschaudruck)
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XSpellChecker1 > xSpell;
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XHyphenator > xHyph;
+ SwViewOption *pOpt;
+
+ Point aPrtOffst; //Ofst fuer den Printer,
+ //nicht bedruckbarer Rand.
+
+ Size aBrowseBorder; //Rand fuer Framedokumente
+ SwRect aInvalidRect;
+
+ sal_Bool bDocSizeChgd :1; //Fuer DocChgNotify(): Neue DocGroesse bei
+ //EndAction an das DocMDI melden.
+ sal_Bool bPaintWorks :1; //Normal Painten wenn sal_True,
+ //Paint merken wenn sal_False
+ sal_Bool bPaintInProgress :1; //Kein zweifaches Paint durchlassen.
+ sal_Bool bViewLocked :1; //Lockt den sichtbaren Bereich,
+ //MakeVisible laeuft dann in's leere.
+ sal_Bool bInEndAction :1; //Fiese unstaende vermeiden, siehe viewsh.cxx
+ sal_Bool bPreView :1; //Ist sal_True wenns eine PreView-ViewShell ist.
+ sal_Bool bFrameView :1; //sal_True wenn es ein (HTML-)Frame ist.
+ sal_Bool bEnableSmooth :1; //Disable des SmoothScroll z.B. fuer
+ //Drag der Scrollbars.
+ sal_Bool bEndActionByVirDev:1; //Paints aus der EndAction immer ueber virtuelles
+ //Device (etwa beim Browsen)
+
+ //Initialisierung, wird von den verschiedenen Konstruktoren gerufen.
+ void Init( const SwViewOption *pNewOpt );
+
+ inline void ResetInvalidRect();
+
+ void SetSubsLines();
+
+ void Reformat(); //Invalidert das ges. Layout (ApplyViewOption)
+
+ void PaintDesktop( const SwRect & ); // sammeln der Werte fuers
+ // Malen der Wiese und rufen
+ // PaintDesktop gesplittet, dieser Teil wird auch von PreViewPage benutzt
+ void _PaintDesktop( const SwRegionRects &rRegion );
+
+ sal_Bool CheckInvalidForPaint( const SwRect & );//Direkt Paint oder lieber
+ //eine Aktion ausloesen.
+
+ void Scroll(); //Scrollen wenn sich aus der LayAction Scrollmoeglichkeiten
+ //ergaben.
+
+ void PrepareForPrint( const SwPrtOptions &rOptions );
+
+ void ImplApplyViewOptions( const SwViewOption &rOpt );
+
+protected:
+ SwDoc *pDoc; //Das Dokument, niemals 0
+ SwRect aVisArea; //Die moderne Ausfuerung der VisArea
+ static ShellResource* pShellRes; // Resourcen fuer die Shell
+ static Window* pCareWindow; // diesem Fenster ausweichen
+
+ sal_uInt16 nStartAction; //ist != 0 wenn mindestens eine ::com::sun::star::chaos::Action laeuft
+ sal_uInt16 nLockPaint; //ist != 0 wenn das Paint gelocked ist.
+
+public:
+ TYPEINFO();
+
+ SwViewImp *Imp() { return pImp; }
+ const SwViewImp *Imp() const { return pImp; }
+
+ const SwNodes& GetNodes() const;
+
+ SfxPrinter* GetPrt( sal_Bool bCreate = sal_False ) const;
+ void InitPrt( SfxPrinter * ); //Nach Druckerwechsel, vom Doc
+
+ //Klammerung von zusammengehoerenden Aktionen.
+ inline void StartAction();
+ void ImplStartAction();
+ inline void EndAction( const sal_Bool bIdleEnd = sal_False );
+ void ImplEndAction( const sal_Bool bIdleEnd = sal_False );
+ sal_uInt16 ActionCount() const { return nStartAction; }
+ sal_Bool ActionPend() const { return nStartAction != 0; }
+ sal_Bool IsInEndAction() const { return bInEndAction; }
+
+ void SetEndActionByVirDev( sal_Bool b ) { bEndActionByVirDev = b; }
+ sal_Bool IsEndActionByVirDev() { return bEndActionByVirDev; }
+
+ // Per UNO wird am RootFrame fuer alle shells der ActionCount kurzfristig
+ // auf Null gesetzt und wieder restauriert
+ void SetRestoreActions(sal_uInt16 nSet);
+ sal_uInt16 GetRestoreActions() const;
+
+ inline sal_Bool HasInvalidRect() const { return aInvalidRect.HasArea(); }
+ void ChgHyphenation() { Reformat(); }
+
+ //Methoden fuer Paint- und Scrollrects, die auf allen Shells im
+ //Ring arbeiten.
+ sal_Bool AddPaintRect( const SwRect &rRect );
+ void AddScrollRect( const SwFrm *pFrm, const SwRect &rRect, long nOffs );
+ void SetNoNextScroll();
+
+ void InvalidateWindows( const SwRect &rRect );
+ virtual void Paint(const Rectangle &rRect);
+ sal_Bool IsPaintInProgress() const { return bPaintInProgress; }
+
+ //Benachrichtung, dass sich der sichtbare Bereich geaendert hat.
+ //VisArea wird neu gesetzt, anschliessend wird gescrollt.
+ //Das uebergebene Rect liegt auf Pixelgrenzen,
+ //um Pixelfehler beim Scrollen zu vermeiden.
+ virtual void VisPortChgd( const SwRect & );
+ sal_Bool SmoothScroll( long lXDiff, long lYDiff, const Rectangle* );//Browser
+ void EnableSmooth( sal_Bool b ) { bEnableSmooth = b; }
+
+ const SwRect &VisArea() const { return aVisArea; }
+ //Es wird, wenn notwendig, soweit gescrollt, dass das
+ //uebergebene Rect im sichtbaren Ausschnitt liegt.
+ void MakeVisible( const SwRect & );
+
+ //Bei naechster Gelegenheit die neue Dokuemntgroesse an das UI weiterreichen.
+ void SizeChgNotify(const Size &);
+ void UISizeNotify(); //Das weiterreichen der aktuellen groesse.
+
+ Point GetPagePos( sal_uInt16 nPageNum ) const;
+
+ sal_uInt16 GetNumPages(); //Anzahl der aktuellen Seiten Layout erfragen.
+
+ //Invalidierung der ersten Sichtbaren Seite fuer alle Shells im Ring.
+ void SetFirstVisPageInvalid();
+
+ SwRootFrm *GetLayout() const;
+ sal_Bool IsNewLayout() const; //Wurde das Layout geladen oder neu
+ //erzeugt?
+
+ Size GetDocSize() const;// erfrage die Groesse des Dokuments
+
+ void CalcLayout(); //Durchformatierung des Layouts erzwingen.
+
+ SwDoc *GetDoc() const { return pDoc; } //niemals 0.
+
+ //'Drei' OutputDevices sind relevant:
+ //Der Drucker (am Dokument). Er bestimmt immer die FontMetriken.
+ //Das Window, gibt es nur wenn nicht gerade gedruckt wird.
+ //Das OutputDevice. Auf diesem Device finden grunds„tzlich alle
+ //Ausgaben statt. Der Pointer zeigt auf das Window, den Drucker oder
+ //auch mal ein VirtualDevice (z.B. Refresh der Scrollrects).
+ inline OutputDevice *GetOut() const { return pOut; }
+ inline Window *GetWin() const { return pWin; }
+
+ inline OutputDevice *GetReferenzDevice() const { return pRef; }
+ inline void SetReferenzDevice( OutputDevice* pNew ) { pRef = pNew; }
+ static inline sal_Bool IsLstEndAction() { return ViewShell::bLstAct; }
+
+ // Setzt Drucker fuer ALLE Sichten im Ring; einschl. Invalidierungen
+ void SetPrt(SfxPrinter *);
+
+ //Andern alle PageDescriptoren
+ void ChgAllPageOrientation( sal_uInt16 eOri );
+ void ChgAllPageSize( Size &rSz );
+
+ //Druckauftrag abwickeln.
+ sal_Bool Prt( SwPrtOptions& rOptions, SfxProgress& rProgress );
+ //"Drucken" fuer OLE 2.0
+ static void PrtOle2( SwDoc *pDoc, const SwViewOption *pOpt,
+ OutputDevice* pOleOut, const Rectangle& rRect );
+
+ //Wird intern fuer die Shell gerufen die Druckt. Formatiert die Seiten.
+ void CalcPagesForPrint( sal_uInt16 nMax, SfxProgress* pProgress = 0,
+ const String* pStr = NULL, sal_uInt32 nMergeAct = 0, sal_uInt32 nMergeCnt = 0 );
+
+ //All about fields.
+ void UpdateFlds(sal_Bool bCloseDB = sal_False);
+ sal_Bool IsAnyFieldInDoc() const;
+ // update all charts, for that exists any table
+ void UpdateAllCharts();
+ sal_Bool HasCharts() const;
+
+ // Sollen Absatzabstaende addiert oder maximiert werden?
+ sal_Bool IsParaSpaceMax() const;
+ sal_Bool IsParaSpaceMaxAtPages() const;
+ void SetParaSpaceMax( sal_Bool bNew, sal_Bool bAtPages );
+
+ //Ruft den Idle-Formatierer des Layouts
+ void LayoutIdle();
+
+ // Linguistik
+ inline ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XSpellChecker1 >
+ GetSpellChecker() const { return xSpell; }
+ inline ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XHyphenator >
+ GetHyphenator() const { return xHyph; }
+
+ inline const SwViewOption *GetViewOptions() const { return pOpt; }
+ void ApplyViewOptions( const SwViewOption &rOpt );
+ void SetUIOptions( const SwViewOption &rOpt );
+ void SetReadonlyOption(sal_Bool bSet); // Readonly-Bit d. ViewOptions setzen
+ void SetPrtFormatOption(sal_Bool bSet); // PrtFormat-Bit d. ViewOptions setzen
+
+ static void SetShellRes( ShellResource* pRes ) { pShellRes = pRes; }
+ static ShellResource* GetShellRes() { return pShellRes; }
+
+ static void SetCareWin( Window* pNew ) { pCareWindow = pNew; }
+ static Window* GetCareWin()
+ { return pCareWindow ? pCareWindow : CareChildWin(); }
+ static Window* CareChildWin();
+
+ inline SfxViewShell *GetSfxViewShell() { return pSfxViewShell; }
+ inline void SetSfxViewShell(SfxViewShell *pNew) { pSfxViewShell = pNew; }
+
+ // Selektion der Draw ::com::sun::star::script::Engine geaendert
+ virtual void DrawSelChanged(SdrView*);
+
+ // SS fuer Seitenvorschau anzeigen
+ void PreViewPage( const Rectangle& rRect, sal_uInt16 nRowCol,
+ sal_uInt16 nSttPage, const Size& rPageSize );
+ void RepaintCoreRect( const SwRect& rRect, sal_uInt16 nRowCol,
+ sal_uInt16 nSttPage, const Size& rPageSize );
+ // und jetzt mal auf den Drucker
+ void PrintPreViewPage( SwPrtOptions& rOptions, sal_uInt16 nRowCol,
+ SfxProgress& rProgress,
+ const SwPagePreViewPrtData* = 0 );
+ Size GetPagePreViewPrtMaxSize() const;
+ // errechnen & MapMode setzen
+ sal_uInt16 CalcPreViewPage( const Size& rWinWidth, sal_uInt16& nRowCol,
+ sal_uInt16 nSttPage, Size& rPageSize,
+ sal_uInt16& rVirtPageNo );
+ sal_Bool IsPreViewDocPos( Point& rDocPt, sal_uInt16 nRowCol, sal_uInt16 nSttPage,
+ const Size& rMaxSize );
+
+ // Prospekt-Format drucken
+ void PrintProspect( SwPrtOptions&, SfxProgress& );
+
+ sal_Bool IsViewLocked() const { return bViewLocked; }
+ void LockView( sal_Bool b ) { bViewLocked = b; }
+
+ inline void LockPaint();
+ void ImplLockPaint();
+ inline void UnlockPaint( sal_Bool bVirDev = sal_False );
+ void ImplUnlockPaint( sal_Bool bVirDev );
+ sal_Bool IsPaintLocked() const { return nLockPaint != 0; }
+
+ // Abfragen/Erzeugen DrawView + PageView
+ const sal_Bool HasDrawView() const;
+ void MakeDrawView();
+
+ //DrawView darf u.U. am UI benutzt werden.
+ SdrView *GetDrawView();
+ const SdrView *GetDrawView() const { return ((ViewShell*)this)->GetDrawView(); }
+
+ //sorge dafuer, das auf jedenfall die MarkListe aktuell ist (Bug 57153)
+ SdrView *GetDrawViewWithValidMarkList();
+
+ // erfrage den Attribut Pool
+ inline const SfxItemPool& GetAttrPool() const;
+ SfxItemPool& GetAttrPool();
+
+ sal_Bool IsPreView() const { return bPreView; }
+
+ sal_Bool IsFrameView() const { return bFrameView; }
+ void SetFrameView( const Size& rBrowseBorder )
+ { bFrameView = sal_True; aBrowseBorder = rBrowseBorder; }
+
+ //Nimmt die notwendigen Invalidierungen vor,
+ //wenn sich der BrowdseModus aendert, bBrowseChgd == sal_True
+ //oder, im BrowseModus, wenn sich die Groessenverhaeltnisse
+ //aendern (bBrowseChgd == sal_False)
+ void CheckBrowseView( FASTBOOL bBrowseChgd );
+
+ //Damit in der UI nicht ueberall das dochxx includet werden muss
+ sal_Bool IsBrowseMode() const;
+
+ sal_Bool IsHeadInBrowse() const;
+ void SetHeadInBrowse( sal_Bool bOn = sal_True );
+ sal_Bool IsFootInBrowse() const;
+ void SetFootInBrowse( sal_Bool bOn = sal_True );
+
+ const Size& GetBrowseBorder() const{ return aBrowseBorder; }
+ void SetBrowseBorder( const Size& rNew );
+
+ ViewShell( ViewShell*, Window *pWin = 0, OutputDevice *pOut = 0,
+ long nFlags = 0 );
+ ViewShell( SwDoc *pDoc,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XSpellChecker1 > xSpell,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XHyphenator > xHyph,
+ Window *pWin,
+ const SwViewOption *pOpt = 0, OutputDevice *pOut = 0,
+ long nFlags = 0 );
+ virtual ~ViewShell();
+
+};
+
+//---- class CurrShell verwaltet den globalen ShellPointer -------------------
+
+class CurrShell
+{
+public:
+ ViewShell *pPrev;
+ SwRootFrm *pRoot;
+
+ CurrShell( ViewShell *pNew );
+ ~CurrShell();
+};
+
+inline void ViewShell::ResetInvalidRect()
+{
+ aInvalidRect.Clear();
+}
+inline void ViewShell::StartAction()
+{
+ if ( !nStartAction++ )
+ ImplStartAction();
+}
+inline void ViewShell::EndAction( const sal_Bool bIdleEnd )
+{
+ if( 0 == (nStartAction - 1) )
+ ImplEndAction( bIdleEnd );
+ --nStartAction;
+}
+
+inline void ViewShell::LockPaint()
+{
+ if ( !nLockPaint++ )
+ ImplLockPaint();
+}
+inline void ViewShell::UnlockPaint( sal_Bool bVirDev )
+{
+ if ( 0 == --nLockPaint )
+ ImplUnlockPaint( bVirDev );
+}
+inline const SfxItemPool& ViewShell::GetAttrPool() const
+{
+ return ((ViewShell*)this)->GetAttrPool();
+}
+
+
+
+#endif //_VIEWSH_HXX
diff --git a/sw/inc/viscrs.hxx b/sw/inc/viscrs.hxx
new file mode 100644
index 000000000000..688a5ac758a3
--- /dev/null
+++ b/sw/inc/viscrs.hxx
@@ -0,0 +1,249 @@
+/*************************************************************************
+ *
+ * $RCSfile: viscrs.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _VISCRS_HXX
+#define _VISCRS_HXX
+
+#ifndef _CURSOR_HXX //autogen
+#include <vcl/cursor.hxx>
+#endif
+#include "swcrsr.hxx"
+#include "swrect.hxx"
+#include "swregion.hxx"
+
+class SwCrsrShell;
+class SwShellCrsr;
+class Window;
+
+
+// -------- Ab hier Klassen / Methoden fuer den nicht Text-Cursor ------
+
+class SwVisCrsr
+#ifdef SW_CRSR_TIMER
+ : private Timer
+#endif
+{
+ friend void _InitCore();
+ friend void _FinitCore();
+
+ BOOL bIsVisible : 1;
+ BOOL bIsDragCrsr : 1;
+
+#ifdef SW_CRSR_TIMER
+ BOOL bTimerOn : 1;
+#endif
+
+ Cursor aTxtCrsr;
+ const SwCrsrShell* pCrsrShell;
+
+#ifdef SW_CRSR_TIMER
+ virtual void Timeout();
+#endif
+ void _SetPosAndShow();
+
+public:
+ SwVisCrsr( const SwCrsrShell * pCShell );
+ ~SwVisCrsr();
+
+ void Show();
+ void Hide();
+
+ FASTBOOL IsVisible() const { return bIsVisible; }
+ FASTBOOL IsDragCrsr() const { return bIsDragCrsr; }
+ void SetDragCrsr( BOOL bFlag = TRUE ) { bIsDragCrsr = bFlag; }
+
+#ifdef SW_CRSR_TIMER
+ FASTBOOL ChgTimerFlag( BOOL bTimerOn = TRUE );
+#endif
+};
+
+
+// ------ Ab hier Klassen / Methoden fuer die Selectionen -------
+
+class SwSelPaintRects : public SwRects
+{
+ friend void _InitCore();
+ friend void _FinitCore();
+
+ static long nPixPtX, nPixPtY;
+ static MapMode *pMapMode;
+
+ // die Shell
+ const SwCrsrShell* pCShell;
+
+ void Paint( const SwRect& rRect );
+
+ virtual void Paint( const Rectangle& rRect );
+ virtual void FillRects() = 0;
+
+public:
+ SwSelPaintRects( const SwCrsrShell& rCSh );
+ ~SwSelPaintRects();
+
+ void Show();
+ void Hide();
+ void Invalidate( const SwRect& rRect );
+
+ const SwCrsrShell* GetShell() const { return pCShell; }
+ // check current MapMode of the shell and set possibly the static members.
+ // Optional set the parameters pX, pY
+ static void Get1PixelInLogic( const ViewShell& rSh,
+ long* pX = 0, long* pY = 0 );
+};
+
+
+class SwShellCrsr : public virtual SwCursor, public SwSelPaintRects
+{
+ // Dokument-Positionen der Start/End-Charakter einer SSelection
+ Point aMkPt, aPtPt;
+ const SwPosition* pPt; // fuer Zuordung vom GetPoint() zum aPtPt
+
+ virtual void FillRects(); // fuer Table- und normalen Crsr
+
+public:
+ SwShellCrsr( const SwCrsrShell& rCrsrSh, const SwPosition &rPos );
+ SwShellCrsr( const SwCrsrShell& rCrsrSh, const SwPosition &rPos,
+ const Point& rPtPos, SwPaM* pRing = 0 );
+ SwShellCrsr( SwShellCrsr& );
+ virtual ~SwShellCrsr();
+
+ virtual operator SwShellCrsr* ();
+
+ void Show(); // Update und zeige alle Selektionen an
+ void Hide(); // verstecke alle Selektionen
+ void Invalidate( const SwRect& rRect );
+
+ const Point& GetPtPos() const { return( SwPaM::GetPoint() == pPt ? aPtPt : aMkPt ); }
+ Point& GetPtPos() { return( SwPaM::GetPoint() == pPt ? aPtPt : aMkPt ); }
+ const Point& GetMkPos() const { return( SwPaM::GetMark() == pPt ? aPtPt : aMkPt ); }
+ Point& GetMkPos() { return( SwPaM::GetMark() == pPt ? aPtPt : aMkPt ); }
+ const Point& GetSttPos() const { return( SwPaM::Start() == pPt ? aPtPt : aMkPt ); }
+ Point& GetSttPos() { return( SwPaM::Start() == pPt ? aPtPt : aMkPt ); }
+ const Point& GetEndPos() const { return( SwPaM::End() == pPt ? aPtPt : aMkPt ); }
+ Point& GetEndPos() { return( SwPaM::End() == pPt ? aPtPt : aMkPt ); }
+
+ virtual void SetMark();
+
+ virtual SwCursor* Create( SwPaM* pRing = 0 ) const;
+
+ virtual FASTBOOL MaxReplaceArived();
+ virtual void SaveTblBoxCntnt( const SwPosition* pPos = 0 );
+
+ FASTBOOL UpDown( BOOL bUp, USHORT nCnt = 1 );
+
+ // TRUE: an die Position kann der Cursor gesetzt werden
+ virtual FASTBOOL IsAtValidPos( BOOL bPoint = TRUE ) const;
+
+#ifndef PRODUCT
+// JP 05.03.98: zum Testen des UNO-Crsr Verhaltens hier die Implementierung
+// am sichtbaren Cursor
+ virtual FASTBOOL IsSelOvr( int eFlags =
+ ( SELOVER_CHECKNODESSECTION |
+ SELOVER_TOGGLE | SELOVER_CHANGEPOS ));
+#endif
+
+ DECL_FIXEDMEMPOOL_NEWDEL( SwShellCrsr )
+};
+
+
+
+class SwShellTableCrsr : public virtual SwShellCrsr, public virtual SwTableCursor
+{
+ // die Selection hat die gleiche Reihenfolge wie die
+ // TabellenBoxen. D.h., wird aus dem einen Array an einer Position
+ // etwas geloescht, dann muss es auch im anderen erfolgen!!
+
+
+public:
+ SwShellTableCrsr( const SwCrsrShell& rCrsrSh, const SwPosition& rPos );
+ SwShellTableCrsr( const SwCrsrShell& rCrsrSh,
+ const SwPosition &rMkPos, const Point& rMkPt,
+ const SwPosition &rPtPos, const Point& rPtPt );
+ virtual ~SwShellTableCrsr();
+
+ virtual operator SwShellTableCrsr* ();
+
+ virtual void FillRects(); // fuer Table- und normalen Crsr
+
+ // Pruefe, ob sich der SPoint innerhalb der Tabellen-SSelection befindet
+ FASTBOOL IsInside( const Point& rPt ) const;
+
+ virtual void SetMark();
+ virtual SwCursor* Create( SwPaM* pRing = 0 ) const;
+ virtual operator SwShellCrsr* ();
+ virtual operator SwTableCursor* ();
+ virtual FASTBOOL MaxReplaceArived();
+ virtual void SaveTblBoxCntnt( const SwPosition* pPos = 0 );
+
+ // TRUE: an die Position kann der Cursor gesetzt werden
+ virtual FASTBOOL IsAtValidPos( BOOL bPoint = TRUE ) const;
+
+#ifndef PRODUCT
+// JP 05.03.98: zum Testen des UNO-Crsr Verhaltens hier die Implementierung
+// am sichtbaren Cursor
+ virtual FASTBOOL IsSelOvr( int eFlags =
+ ( SELOVER_CHECKNODESSECTION |
+ SELOVER_TOGGLE | SELOVER_CHANGEPOS ));
+#endif
+};
+
+
+
+#endif // _VISCRS_HXX
diff --git a/sw/inc/wdocsh.hxx b/sw/inc/wdocsh.hxx
new file mode 100644
index 000000000000..5c53b9f7917f
--- /dev/null
+++ b/sw/inc/wdocsh.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: wdocsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:29 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWWDOCSH_HXX
+#define _SWWDOCSH_HXX
+
+#include "docsh.hxx"
+#ifndef SW_SWDLL_HXX
+#include <swdll.hxx>
+#endif
+
+class SwWebDocShell: public SwDocShell
+{
+ USHORT nSourcePara; // aktive Zeile in der SourceView
+public:
+
+ // aber selbst implementieren
+ SFX_DECL_INTERFACE(SW_WEBDOCSHELL);
+ SFX_DECL_OBJECTFACTORY_DLL(SwWebDocShell, SW_DLL());
+ TYPEINFO();
+
+ SwWebDocShell(SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED);
+ ~SwWebDocShell();
+
+ // Anforderung der pIo-Struktur fuer den Zugriff auf Substorages
+ // und Streams
+ virtual void FillRegInfo( SvEmbeddedRegistryInfo * );
+
+ virtual void FillClass( SvGlobalName * pClassName,
+ ULONG * pClipFormat,
+ String * pAppName,
+ String * pLongUserName,
+ String * pUserName,
+ long nVersion = SOFFICE_FILEFORMAT_NOW ) const;
+ USHORT GetSourcePara()const
+ {return nSourcePara;}
+ void SetSourcePara(USHORT nSet)
+ {nSourcePara = nSet;}
+};
+
+#endif
+
+
diff --git a/sw/prj/d.lst b/sw/prj/d.lst
new file mode 100644
index 000000000000..a66aee0e03c8
--- /dev/null
+++ b/sw/prj/d.lst
@@ -0,0 +1,66 @@
+..\inc\sw.lst %_DEST%\inc%_EXT%\sw.lst
+..\inc\swinter.h %_DEST%\ODK\inc%_EXT%\swinter.h
+..\inc\orntenum.hxx %_DEST%\inc%_EXT%\sw\orntenum.hxx
+..\inc\horiornt.hxx %_DEST%\inc%_EXT%\sw\horiornt.hxx
+..\%__SRC%\inc\swinter.h %_DEST%\ODK\inc%_EXT%\swinter.h
+..\%__SRC%\misc\swinter.c %_DEST%\ODK\src%_EXT%\swinter.c
+..\%__SRC%\bin\sweb.res %_DEST%\bin%_EXT%\sweb.res
+..\%__SRC%\bin\*.ex$ %_DEST%\bin%_EXT%
+..\xml\*.xml %_DEST%\xml\*.xml
+touch: ..\%__SRC%\misc\sw.hid %_DEST%\bin%_EXT%\sw.hid
+..\%__SRC%\bin\soffice.pdb %_DEST%\bin%_EXT%\soffice.pdb
+..\%__SRC%\bin\swslots.tlb %_DEST%\bin%_EXT%\swslots.tlb
+..\%__SRC%\bin\wswslots.tlb %_DEST%\bin%_EXT%\wswslots.tlb
+..\%__SRC%\bin\sw%upd%*.dll %_DEST%\bin%_EXT%\sw%upd%*.dll
+..\%__SRC%\bin\sw%upd%*.res %_DEST%\bin%_EXT%\sw%upd%*.res
+..\%__SRC%\bin\sw%upd%*.res %_DEST%\bin%_EXT%\sw%upd%*.res
+..\%__SRC%\lib\swinter.lib %_DEST%\lib%_EXT%\swinter.lib
+..\%__SRC%\lib\swinter.lib %_DEST%\ODK\lib%_EXT%\swinter.lib
+..\%__SRC%\misc\sw.csv %_DEST%\inc%_EXT%\sw.csv
+..\%__SRC%\lib\swlib.lib %_DEST%\lib%_EXT%\swlib.lib
+..\%__SRC%\slb\lib*.* %_DEST%\lib%_EXT%\lib*.*
+..\%__SRC%\lib\lib*.* %_DEST%\lib%_EXT%\lib*.*
+..\inc\swdll.hxx %_DEST%\inc%_EXT%\swdll.hxx
+..\%__SRC%\lib\swweblib.lib %_DEST%\lib%_EXT%\swweblib.lib
+mkdir: %_DEST%\idl\sw
+hedabu: ..\unoidl\sw\swmap.idl %_DEST%\idl%_EXT%\sw\swmap.idl
+hedabu: ..\unoidl\sw\swtxtdoc.idl %_DEST%\idl%_EXT%\sw\swtxtdoc.idl
+hedabu: ..\unoidl\sw\swdoccol.idl %_DEST%\idl%_EXT%\sw\swdoccol.idl
+hedabu: ..\unoidl\sw\swtxview.idl %_DEST%\idl%_EXT%\sw\swtxview.idl
+hedabu: ..\unoidl\sw\swtxtsel.idl %_DEST%\idl%_EXT%\sw\swtxtsel.idl
+hedabu: ..\unoidl\sw\swtxtbl.idl %_DEST%\idl%_EXT%\sw\swtxtbl.idl
+hedabu: ..\unoidl\sw\swobject.idl %_DEST%\idl%_EXT%\sw\swobject.idl
+hedabu: ..\unoidl\sw\swtxfld.idl %_DEST%\idl%_EXT%\sw\swtxfld.idl
+hedabu: ..\unoidl\sw\swtype.idl %_DEST%\idl%_EXT%\sw\swtype.idl
+hedabu: ..\unoidl\sw\swservc.idl %_DEST%\idl%_EXT%\sw\swservc.idl
+hedabu: ..\unoidl\sw\swmod.idl %_DEST%\idl%_EXT%\sw\swmod.idl
+mkdir: %_DEST%\inc\%_EXT%\sw
+mkdir: %_DEST%\inc\%_EXT%\uno
+mkdir: %_DEST%\inc\%_EXT%\uno\one
+hedabu: ..\inc\swwebdll.hxx %_DEST%\inc%_EXT%\sw\swwebdll.hxx
+hedabu: ..\inc\swdll.hxx %_DEST%\inc%_EXT%\sw\swdll.hxx
+hedabu: ..\inc\swinter.h %_DEST%\inc%_EXT%\sw\swinter.h
+hedabu: ..\%__SRC%\inc\sw\swobject.hxx %_DEST%\inc%_EXT%\sw\swobject.hxx
+hedabu: ..\%__SRC%\inc\sw\swtxtbl.hxx %_DEST%\inc%_EXT%\sw\swtxtbl.hxx
+hedabu: ..\%__SRC%\inc\sw\swtxfld.hxx %_DEST%\inc%_EXT%\sw\swtxfld.hxx
+hedabu: ..\%__SRC%\inc\sw\swdoccol.hxx %_DEST%\inc%_EXT%\sw\swdoccol.hxx
+hedabu: ..\%__SRC%\inc\sw\swtxtdoc.hxx %_DEST%\inc%_EXT%\sw\swtxtdoc.hxx
+hedabu: ..\%__SRC%\inc\sw\swtype.hxx %_DEST%\inc%_EXT%\sw\swtype.hxx
+hedabu: ..\%__SRC%\inc\sw\swtxtsel.hxx %_DEST%\inc%_EXT%\sw\swtxtsel.hxx
+hedabu: ..\%__SRC%\inc\sw\swtxview.hxx %_DEST%\inc%_EXT%\sw\swtxview.hxx
+hedabu: ..\%__SRC%\inc\sw\swservc.hxx %_DEST%\inc%_EXT%\sw\swservc.hxx
+hedabu: ..\%__SRC%\inc\sw\swmod.hxx %_DEST%\inc%_EXT%\sw\swmod.hxx
+hedabu: ..\%__SRC%\inc\sw\swobject.h %_DEST%\inc%_EXT%\uno\one\swobject.h
+hedabu: ..\%__SRC%\inc\sw\swtxtbl.h %_DEST%\inc%_EXT%\uno\one\swtxtbl.h
+hedabu: ..\%__SRC%\inc\sw\swtxfld.h %_DEST%\inc%_EXT%\uno\one\swtxfld.h
+hedabu: ..\%__SRC%\inc\sw\swdoccol.h %_DEST%\inc%_EXT%\uno\one\swdoccol.h
+hedabu: ..\%__SRC%\inc\sw\swtxtdoc.h %_DEST%\inc%_EXT%\uno\one\swtxtdoc.h
+hedabu: ..\%__SRC%\inc\sw\swtype.h %_DEST%\inc%_EXT%\uno\one\swtype.h
+hedabu: ..\%__SRC%\inc\sw\swtxtsel.h %_DEST%\inc%_EXT%\uno\one\swtxtsel.h
+hedabu: ..\%__SRC%\inc\sw\swtxview.h %_DEST%\inc%_EXT%\uno\one\swtxview.h
+hedabu: ..\%__SRC%\inc\sw\swservc.h %_DEST%\inc%_EXT%\uno\one\swservc.h
+hedabu: ..\%__SRC%\inc\sw\swmod.h %_DEST%\inc%_EXT%\uno\one\swmod.h
+
+mkdir: %_DEST%\ucr\sw
+..\%__SRC%\ucr\*.ucr %_DEST%\ucr%_EXT%\sw\*.ucr
+
diff --git a/sw/sdi/_basesh.sdi b/sw/sdi/_basesh.sdi
new file mode 100644
index 000000000000..090f21aad120
--- /dev/null
+++ b/sw/sdi/_basesh.sdi
@@ -0,0 +1,636 @@
+/*-----------------------------------------------------------------------
+
+ $Workfile: _BASESH.SDI $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/_basesh.sdi,v 1.1.1.1 2000-09-18 17:14:29 hr Exp $
+
+ Beschreibung: interface Base - gemeinsame Basisfunktionalitaet
+ fuer SW und SW/WEB
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface BaseTextSelection : Selection
+[
+ Automation = FALSE;
+]
+{
+ SID_DELETE // status(final|play)
+ [
+ ExecMethod = ExecDelete ;
+ StateMethod = GetState ;
+ FastCall = FALSE ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_BACKSPACE // status(final|play)
+ [
+ ExecMethod = ExecDelete ;
+ StateMethod = GetState ;
+ FastCall = FALSE ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_SHIFT_BACKSPACE // status()
+ [
+ ExecMethod = ExecDelete ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_UNDO // status(final|play)
+ [
+ ExecMethod = ExecUndo ;
+ StateMethod = StateUndo ;
+ ]
+
+ SID_REDO // status(final|play)
+ [
+ ExecMethod = ExecUndo ;
+ StateMethod = StateUndo ;
+ ]
+
+ SID_REPEAT // status()
+ [
+ ExecMethod = ExecUndo ;
+ StateMethod = StateUndo ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_CUT // status(final|play)
+ [
+ ExecMethod = ExecClpbrd ;
+ StateMethod = StateClpbrd ;
+ Volatile;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_COPY // status(final|play)
+ [
+ ExecMethod = ExecClpbrd ;
+ StateMethod = StateClpbrd ;
+ Volatile;
+ ]
+
+ SID_PASTE // status(final|play)
+ [
+ ExecMethod = ExecClpbrd ;
+ StateMethod = StateClpbrd ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_PASTESPECIAL // status(final|play)
+ [
+ ExecMethod = ExecClpbrd ;
+ StateMethod = StateClpbrd ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_REPAGINATE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_CHANGE_DBFIELD
+ [
+ ExecMethod = ExecField ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_SBA_BRW_UPDATE
+ [
+ StateMethod = GetState;
+ ExecMethod = ExecDB;
+ Export = FALSE
+ ]
+
+ SID_SBA_BRW_INSERT
+ [
+ StateMethod = GetState;
+ ExecMethod = ExecDB;
+ Export = FALSE
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_SBA_BRW_MERGE
+ [
+ StateMethod = GetState;
+ ExecMethod = ExecDB;
+ Export = FALSE
+ ]
+
+ FN_UPDATE_FIELDS // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_UPDATE_CHARTS // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_UPDATE_ALL // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_UPDATE_INPUTFIELDS // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_FRAME_TO_ANCHOR // status()
+ [
+ /*OS: Datentypen unvertraeglich ?? */
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_GOTO_NEXT_OBJ // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_GOTO_PREV_OBJ // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_GOTO_NEXT_MARK // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_GOTO_PREV_MARK // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_PREV_BOOKMARK // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_NEXT_BOOKMARK // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ SID_GALLERY_FORMATS // status()
+ [
+ Export = FALSE ;
+ ExecMethod = Execute ;
+ ]
+
+ SID_GALLERY_ENABLE_ADDCOPY
+ [
+ Export = FALSE;
+ StateMethod = GetState;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BACKGROUND_COLOR // status()
+ [
+ ExecMethod = ExecBckCol ;
+ StateMethod = GetBckColState ;
+ Cachable , AutoUpdate ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_EDIT_REGION // status(final|play)
+ [
+ ExecMethod = EditRegionDialog ;
+ StateMethod = GetState ;
+ ]
+
+ FN_INSERT_REGION // status(final|play)
+ [
+ ExecMethod = InsertRegionDialog ;
+ StateMethod = GetState;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_INSERT_COLUMN_SECTION // status()
+ [
+ ExecMethod = InsertRegionDialog;
+ StateMethod = GetState;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SfxVoidItem PageDialog FN_FORMAT_PAGE_DLG ( ) // status(final|play)
+ [
+ ExecMethod = ExecDlg ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FORMAT_PAGE_COLUMN_DLG // status(final|play)
+ [
+ ExecMethod = ExecDlg ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_CONVERT_TEXT_TABLE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FORMAT_BORDER_DLG // status(final|play)
+ [
+ ExecMethod = ExecDlg ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_BORDER_INNER // status()
+ [
+ StateMethod = GetBorderState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+/* SID_ATTR_BORDER_OUTER // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetBorderState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+*/
+ FN_FORMAT_BACKGROUND_DLG // status(final|play)
+ [
+ ExecMethod = ExecDlg ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SfxBoolItem StyleWatercanMode SID_STYLE_WATERCAN // status()
+ [
+ SfxUInt16Item WatercanStyleModeOnOff
+ (
+ SfxStringItem Param SID_STYLE_WATERCAN ,
+ SfxUInt16Item Family SID_STYLE_FAMILY
+ ) ;
+ ExecMethod = Execute ;
+ StateMethod = StateStyle ;
+ GroupId = GID_TEMPLATE ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_STYLE_UPDATE_BY_EXAMPLE // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = StateStyle ;
+ ]
+
+ SID_STYLE_NEW_BY_EXAMPLE // status(fina|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = StateStyle ;
+ FastCall = TRUE; // fuer Macroausfuehrung!
+ ]
+ SID_STYLE_APPLY // status(fina|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = StateStyle ;
+ FastCall = TRUE;// fuer Macroausfuehrung!
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_STYLE_FAMILY1 // status(fina|play)
+ [
+ StateMethod = StateStyle ;
+ ]
+
+ SID_STYLE_FAMILY2 // status(fina|play)
+ [
+ StateMethod = StateStyle ;
+ ]
+
+ SID_STYLE_FAMILY3 // status(fina|play)
+ [
+ StateMethod = StateStyle ;
+ ]
+
+ SID_STYLE_FAMILY4 // status(fina|play)
+ [
+ StateMethod = StateStyle ;
+ ]
+
+ SID_STYLE_FAMILY5 // status(fina|play)
+ [
+ StateMethod = StateStyle ;
+ ]
+
+ //OS: Selection.Escape gibt es zusaetzlich zu Window.Escape
+
+ FN_ESCAPE // status(final|play|rec)
+ [
+ ExecMethod = Execute ;
+ ]
+
+ SID_IMAP
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Toggle = FALSE;
+ ]
+
+ SID_IMAP_EXEC
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+// Methode fuer Rahmen und Objekte
+ FN_TOOL_ANKER
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TOOL_ANKER_PARAGRAPH
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TOOL_ANKER_CHAR
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TOOL_ANKER_AT_CHAR
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TOOL_ANKER_FRAME
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_UPDATE_ALL_LINKS // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+
+/*-----------------22.01.97 09.41-------------------
+// ab hier immer Export = FALSE
+--------------------------------------------------*/
+
+ FN_FRAME_WRAP // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE;
+ ]
+
+ FN_FRAME_WRAP_IDEAL // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE;
+ ]
+
+ FN_FRAME_NOWRAP // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE;
+ ]
+
+ FN_FRAME_WRAPTHRU // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE;
+ ]
+
+ FN_FRAME_WRAPTHRU_TRANSP // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE;
+ ]
+
+ FN_FRAME_WRAP_CONTOUR // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE;
+ ]
+
+ FN_WRAP_ANCHOR_ONLY // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE;
+ ]
+
+ FN_FRAME_WRAP_LEFT // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE;
+ ]
+
+ FN_FRAME_WRAP_RIGHT // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE;
+ ]
+
+
+
+ SID_GALLERY_BG_BRUSH
+ [
+ ExecMethod = ExecuteGallery;
+ StateMethod = GetGalleryState;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE;
+ ]
+ SID_ATTR_BORDER_SHADOW // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.46 2000/05/30 10:12:26 os
+ unused slots removed
+
+ Revision 1.45 2000/05/26 07:06:15 os
+ old SW Basic API Slots removed
+
+ Revision 1.44 2000/05/10 12:00:08 os
+ Basic API removed
+
+ Revision 1.43 1999/10/20 16:36:53 jp
+ Bug #68106#: new slot for update all charts in a document
+
+ Revision 1.42 1999/05/27 11:20:10 OS
+ Einf?gen/Bearbeiten von Spalten ueberarbeitet
+
+
+ Rev 1.41 27 May 1999 13:20:10 OS
+ Einf?gen/Bearbeiten von Spalten ueberarbeitet
+
+ Rev 1.40 15 Apr 1999 12:05:52 OS
+ #64766# SID_IMAP: Toggle = FALSE;
+
+ Rev 1.39 23 Mar 1999 12:15:30 MA
+ #63806# ConfigName und HelpText entfernt
+
+ Rev 1.38 12 Feb 1999 13:28:02 MA
+ #61262# Zusaetzliche hidden functions in den Toolbars
+
+ Rev 1.37 26 Jan 1999 14:21:38 OS
+ #61140# neuer Slot fuer Felder-Update
+
+ Rev 1.36 12 Nov 1998 17:29:12 MA
+ #58677# Disable Flag
+
+ Rev 1.35 11 Jun 1998 13:02:54 OM
+ #49467# Rahmen in Inhalt-protecteten Parents nicht bearbeiten
+
+ Rev 1.34 23 Apr 1998 12:29:24 OS
+ PageLeft/Right/Top/BottomMargin #49761#
+
+ Rev 1.33 25 Feb 1998 19:16:00 MA
+ Aktualisieren erweitert
+
+ Rev 1.32 29 Jan 1998 15:00:22 OM
+ Am Zeichen verankern
+
+ Rev 1.31 22 Jan 1998 17:40:30 OS
+ SID_BACKGROUND_PATTERN entsorgt
+
+ Rev 1.30 20 Nov 1997 14:02:42 OS
+ StyleNew/UpdateByExample: FastCall wg. Basic #45671#
+
+ Rev 1.29 11 Nov 1997 13:17:18 JP
+ neu: NumRule-Vorlagen
+
+ Rev 1.28 03 Sep 1997 09:30:54 MBA
+ Interior in SVX
+
+ Rev 1.27 02 Sep 1997 10:58:52 JP
+ neu: UpdateAllLinks - uebers Basic alle Links updaten
+
+ Rev 1.26 28 Aug 1997 12:38:32 MBA
+ Neue Interface-Namen
+
+ Rev 1.25 06 Aug 1997 13:38:42 OS
+ ShowCursor geht wieder #42017#,#41945#
+
+ Rev 1.24 25 Jul 1997 11:27:52 AMA
+ Opt: GroupId und ConfigName aufgeraeumt
+
+ Rev 1.23 23 Jul 1997 16:05:14 AMA
+ Opt: ConfigName etc. aufgeraeumt
+
+ Rev 1.22 18 Jul 1997 09:38:06 OM
+ Fkts nicht exportieren
+
+ Rev 1.21 16 Jul 1997 11:30:10 OM
+ sid_gallery entfernt
+
+ Rev 1.20 14 Jul 1997 14:37:12 OS
+ Ableitung _Base:_Object #41369#
+
+ Rev 1.19 08 Jul 1997 15:10:36 OS
+ FN_SHOW_CURSOR
+
+ Rev 1.18 01 Jul 1997 13:45:56 OS
+ Inhalte aus dem Basic einfuegen
+
+ Rev 1.17 27 Jun 1997 16:21:58 OS
+ SID_JUMPTOMARK von der View an die BaseShell
+
+ Rev 1.16 26 Jun 1997 09:44:48 OM
+ Basic: Datenbank in Feldbefehlen ersetzen
+
+ Rev 1.15 19 Jun 1997 13:32:22 MA
+ State fuer galler
+
+ Rev 1.14 17 Jun 1997 14:54:38 OM
+ Methoden fuer ersetzen von Userfeldern
+
+ Rev 1.13 13 Jun 1997 13:18:52 OM
+ Benutzer- und Expression-Felder per Basic loeschen
+
+ Rev 1.12 12 Jun 1997 15:32:34 JP
+ Feld-Slots aus der TextShell in die BaseShell verschoben
+
+ Rev 1.11 24 Apr 1997 14:40:00 JP
+ neu: SetFixDateTimFields
+
+ Rev 1.10 22 Apr 1997 14:03:42 OS
+ Is/SetRegionPassword
+
+ Rev 1.9 17 Apr 1997 15:44:14 AMA
+ New: Rahmengebundene Rahmen
+
+ Rev 1.8 15 Apr 1997 12:00:30 OS
+ Bedingung der Bereiche setzen/lesen
+
+ Rev 1.7 14 Apr 1997 16:10:16 OS
+ Flags und Link der Bereiche setzen/erfragen
+
+ Rev 1.6 22 Feb 1997 15:11:58 OS
+ neue Slots: Actions setzen/ruecksetzen
+
+ Rev 1.5 13 Feb 1997 22:57:38 MA
+ Datenbankfunktionalitaet wieder hergestellt
+
+ Rev 1.4 13 Feb 1997 09:54:20 MA
+ unnoetige und falsche Texte entfernt
+
+ Rev 1.3 12 Feb 1997 16:56:52 OM
+ Datenbankslots ueber Baseshell rufen
+
+ Rev 1.2 06 Feb 1997 13:48:20 MA
+ new: Gallery-Background
+
+ Rev 1.1 27 Jan 1997 16:37:44 OS
+ Web-Slots aus den allg. interfaces raus
+
+ Rev 1.0 23 Jan 1997 08:14:08 OS
+ Initial revision.
+
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/sdi/_beziers.sdi b/sw/sdi/_beziers.sdi
new file mode 100644
index 000000000000..a3275c38567e
--- /dev/null
+++ b/sw/sdi/_beziers.sdi
@@ -0,0 +1,141 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: _beziers.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/_beziers.sdi,v 1.1.1.1 2000-09-18 17:14:29 hr Exp $
+
+ Beschreibung: Basis-interface fuer Bezier
+
+ (c) Copyright 1989 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface _Bezier : Base
+[ Automation = FALSE; ]
+{
+ SID_DELETE
+ [
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_BACKSPACE
+ [
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_ESCAPE // api:
+ [
+ ExecMethod = Execute;
+ ]
+
+ SID_BEZIER_MOVE
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_INSERT
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_DELETE
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_CUTLINE
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_CONVERT
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_EDGE
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_SMOOTH
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_SYMMTR
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_CLOSE
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_ELIMINATE_POINTS
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.5 1998/11/12 16:28:52 MA
+ #58677# Disable Flag
+
+
+ Rev 1.4 12 Nov 1998 17:28:52 MA
+ #58677# Disable Flag
+
+ Rev 1.3 16 Jul 1997 16:47:26 OM
+ Einige Basic-Fkts nicht exportieren
+
+ Rev 1.2 16 Jun 1997 15:29:08 OM
+ GPF behoben: Backspace wie Delete behandeln
+
+ Rev 1.1 13 Feb 1997 09:54:08 MA
+ unnoetige und falsche Texte entfernt
+
+ Rev 1.0 23 Jan 1997 14:45:12 OS
+ Initial revision.
+
+
+------------------------------------------------------------------------*/
+
+
+
+
diff --git a/sw/sdi/_docsh.sdi b/sw/sdi/_docsh.sdi
new file mode 100644
index 000000000000..c378324fc408
--- /dev/null
+++ b/sw/sdi/_docsh.sdi
@@ -0,0 +1,166 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: _docsh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/_docsh.sdi,v 1.1.1.1 2000-09-18 17:14:29 hr Exp $
+
+ Beschreibung: interface __Document enthaelt gemeinsame Slots fuer
+ SwDocShell und SwWebDocShell
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface BaseTextDocument : OfficeDocument
+[
+ Automation = FALSE;
+]
+{
+ SID_PRINTPREVIEW
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+
+ FN_AUTO_CORRECT_DLG
+ [
+ ExecMethod = Execute ;
+ ]
+
+ SID_STYLE_NEW
+ [
+ ExecMethod = ExecStyleSheet ;
+ StateMethod = NoState ;
+ ]
+
+ SID_STYLE_EDIT
+ [
+ ExecMethod = ExecStyleSheet ;
+ StateMethod = NoState ;
+ ]
+
+ SID_STYLE_DELETE
+ [
+ ExecMethod = ExecStyleSheet ;
+ StateMethod = NoState ;
+ ]
+
+ SID_TEMPLATE_LOAD
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ SID_GET_COLORTABLE
+ [
+ ExecMethod = Execute ;
+ ]
+
+ SID_SPELLCHECKER_CHANGED
+ [
+ ExecMethod = Execute ;
+ ]
+
+ SID_MAIL_PREPAREEXPORT
+ [
+ ExecMethod = Execute ;
+ ]
+
+ //No Export
+ SID_STYLE_FAMILY1
+ [
+ Export = FALSE ;
+ StateMethod = StateStyleSheet ;
+ ]
+
+ SID_STYLE_FAMILY2
+ [
+ Export = FALSE ;
+ StateMethod = StateStyleSheet ;
+ ]
+
+ SID_STYLE_FAMILY3
+ [
+ Export = FALSE ;
+ StateMethod = StateStyleSheet ;
+ ]
+
+ SID_STYLE_FAMILY4
+ [
+ Export = FALSE ;
+ StateMethod = StateStyleSheet ;
+ ]
+ SID_STYLE_FAMILY5
+ [
+ Export = FALSE ;
+ StateMethod = StateStyleSheet ;
+ ]
+
+
+ SID_ATTR_YEAR2000
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState;
+ ]
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.17 2000/05/26 07:06:15 os
+ old SW Basic API Slots removed
+
+ Revision 1.16 1999/09/10 12:16:20 jp
+ AutoCorrectDialog: dont disable by protected cursor
+
+ Revision 1.15 1999/02/02 07:41:38 OS
+ #61027# zweistellige Jahreszahlen
+
+
+ Rev 1.14 02 Feb 1999 08:41:38 OS
+ #61027# zweistellige Jahreszahlen
+
+ Rev 1.13 12 Nov 1998 17:29:28 MA
+ #58677# Disable Flag
+
+ Rev 1.12 28 May 1998 17:39:56 OM
+ Zahlenformat per Basic ermitteln
+
+ Rev 1.11 13 May 1998 14:58:30 OM
+ Autokorrektur/Autoformat umgestaltet und zusammengefasst
+
+ Rev 1.10 24 Apr 1998 15:03:12 OM
+ Seitenvorschau auch im Html-Mode
+
+ Rev 1.9 17 Apr 1998 17:13:10 OM
+ PageCount-Event per Macro setzen: Vorbereitungen
+
+ Rev 1.8 11 Nov 1997 13:17:18 JP
+ neu: NumRule-Vorlagen
+
+ Rev 1.7 04 Sep 1997 13:36:52 MBA
+ Document von OfficeDocument abgeleitet
+
+ Rev 1.6 28 Aug 1997 12:51:22 MBA
+ Neue Interface-Namen
+
+ Rev 1.5 05 Jul 1997 09:42:06 OS
+ Macro und Script an Rahmenvorlagen setzen/lesen
+
+ Rev 1.4 17 Jun 1997 13:24:38 JP
+ neu: Execute vom Slot SID_MAIL_PREPAREEXPORT
+
+ Rev 1.3 06 Mar 1997 08:43:20 OS
+ SID_SPELLCHECKER_CHANGED
+
+ Rev 1.2 13 Feb 1997 09:54:06 MA
+ unnoetige und falsche Texte entfernt
+
+ Rev 1.1 30 Jan 1997 15:28:18 OS
+ SourceView nur noch fuer den Sw/Web
+
+ Rev 1.0 23 Jan 1997 08:14:08 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/_drwbase.sdi b/sw/sdi/_drwbase.sdi
new file mode 100644
index 000000000000..9600b95d4b26
--- /dev/null
+++ b/sw/sdi/_drwbase.sdi
@@ -0,0 +1,164 @@
+/*-----------------------------------------------------------------------
+
+ $Workfile: _drwbase.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/_drwbase.sdi,v 1.1.1.1 2000-09-18 17:14:29 hr Exp $
+
+ Beschreibung: Basis-interface _DrawBase
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface BaseTextDrawBase : Selection
+[
+ Automation = FALSE;
+]
+{
+ FN_DRAW_WRAP_DLG
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_TRANSFORM
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_GROUP
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_UNGROUP
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ENTER_GROUP
+ [
+ AutoUpdate = TRUE ,
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+
+ SID_LEAVE_GROUP
+ [
+ AutoUpdate = TRUE ,
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+
+ SID_FRAME_TO_TOP
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FRAME_TO_BOTTOM
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_UP
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_DOWN
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_DELETE
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ FastCall = FALSE ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_BACKSPACE
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ FastCall = FALSE ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_STYLE_CATALOG // ole(no) api(play/rec)
+ [
+ StateMethod = StateDisableItems ;
+ ]
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.15 2000/05/26 07:06:15 os
+ old SW Basic API Slots removed
+
+ Revision 1.14 1999/03/23 11:16:30 MA
+ #63806# ConfigName und HelpText entfernt
+
+
+ Rev 1.13 23 Mar 1999 12:16:30 MA
+ #63806# ConfigName und HelpText entfernt
+
+ Rev 1.12 12 Nov 1998 17:28:34 MA
+ #58677# Disable Flag
+
+ Rev 1.11 06 Jul 1998 18:10:54 OM
+ AutoUpdate fuer Enter/Leave Group
+
+ Rev 1.10 12 Jun 1998 16:09:52 OM
+ Gruppierung betreten/verlassen
+
+ Rev 1.9 11 Jun 1998 16:13:46 OM
+ Gruppierungsmenue
+
+ Rev 1.8 11 Jun 1998 13:02:54 OM
+ #49467# Rahmen in Inhalt-protecteten Parents nicht bearbeiten
+
+ Rev 1.7 10 Jun 1998 11:20:44 OM
+ Hell/Heaven nicht in FormShell
+
+ Rev 1.6 09 Jun 1998 15:37:06 OM
+ VC-Controls entfernt
+
+ Rev 1.5 15 Apr 1998 15:33:00 OM
+ #49467 Objekte innerhalb von geschuetzten Rahmen duerfen nicht veraendert werden
+
+ Rev 1.4 28 Aug 1997 12:55:08 MBA
+ Neue Interface-Namen
+
+ Rev 1.3 16 Jun 1997 15:29:50 OM
+ GPF behoben: Backspace wie Delete behandeln
+
+ Rev 1.2 12 Mar 1997 10:25:26 OS
+ IsControl muss an die DrawBaseShell !
+
+ Rev 1.1 13 Feb 1997 09:54:18 MA
+ unnoetige und falsche Texte entfernt
+
+ Rev 1.0 23 Jan 1997 14:46:22 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/sdi/_formsh.sdi b/sw/sdi/_formsh.sdi
new file mode 100644
index 000000000000..0d7125faf86b
--- /dev/null
+++ b/sw/sdi/_formsh.sdi
@@ -0,0 +1,38 @@
+interface BaseTextDrawForm : Selection
+[
+ Automation = FALSE;
+]
+{
+ SID_HYPERLINK_SETLINK
+ [
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_HYPERLINK_GETLINK
+ [
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.4 1998/11/26 14:19:08 MA
+ #59896# Raster usw jetzt an der Application
+
+
+ Rev 1.3 26 Nov 1998 15:19:08 MA
+ #59896# Raster usw jetzt an der Application
+
+ Rev 1.2 12 Nov 1998 17:29:28 MA
+ #58677# Disable Flag
+
+ Rev 1.1 02 Nov 1998 09:23:02 MA
+ #58294# Slots fuer Raster, alte Formslots entsorgt
+
+ Rev 1.0 11 Mar 1998 17:14:04 OM
+ DB-FormShell
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/_frmsh.sdi b/sw/sdi/_frmsh.sdi
new file mode 100644
index 000000000000..90fc3d746df6
--- /dev/null
+++ b/sw/sdi/_frmsh.sdi
@@ -0,0 +1,292 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: _frmsh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/_frmsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: Basis-interface fuer Frame
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface BaseTextFrame : Selection
+[
+ Automation = FALSE;
+]
+{
+ FN_FRAME_TO_ANCHOR // status()
+ [
+ /*OS: Datentypen unvertraeglich ?? */
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_FRAME_ALIGN_VERT_CENTER // status(play|final)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_ALIGN_VERT_BOTTOM // status(play|final)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_ALIGN_VERT_TOP // status(play|final)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_ALIGN_VERT_ROW_CENTER // status(play|final)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_ALIGN_VERT_ROW_BOTTOM // status(play|final)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_ALIGN_VERT_ROW_TOP // status(play|final)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_ALIGN_VERT_CHAR_CENTER // status(play|final)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_ALIGN_VERT_CHAR_BOTTOM // status(play|final)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_ALIGN_VERT_CHAR_TOP // status(play|final)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_ALIGN_HORZ_CENTER // status(play|final)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_ALIGN_HORZ_RIGHT // status(play|final)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_ALIGN_HORZ_LEFT // status(play|final)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+
+ SID_FRAME_TO_TOP // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FRAME_TO_BOTTOM // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+
+ FN_FRAME_UP // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_DOWN // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_ULSPACE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_LRSPACE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ GroupId = GID_FRAME;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FORMAT_FRAME_DLG // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FRAME_LINESTYLE // status()
+ [
+ ExecMethod = ExecFrameStyle ;
+ StateMethod = GetLineStyleState ;
+ Export = FALSE; //#44439#
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FRAME_LINECOLOR // status(final|play)
+ [
+ ExecMethod = ExecFrameStyle ;
+ StateMethod = GetLineStyleState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ /*****************************************************
+
+ Abfragefunktionen fuer ImageMaps
+
+ ****************************************************/
+
+//
+// Slots ohne Export
+
+ FN_INSERT_FRAME
+ [
+ ExecMethod = Execute ;
+ StateMethod = StateInsert ;
+ Export = False;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_BORDER // status()
+ [
+ ExecMethod = ExecFrameStyle ;
+ StateMethod = GetLineStyleState ;
+ GroupId = GID_FRAME;
+ Export = False;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_HYPERLINK_SETLINK // status()
+ [
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_HYPERLINK_GETLINK // status()
+ [
+ StateMethod = GetState ;
+ ]
+
+ FN_FRAME_MIRROR_ON_EVEN_PAGES // status(final|play|rec)
+ [
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.21 2000/08/15 13:50:56 os
+ #77616# re-enable border in SwFrameShell
+
+ Revision 1.20 2000/05/26 07:06:15 os
+ old SW Basic API Slots removed
+
+ Revision 1.19 2000/05/10 12:00:08 os
+ Basic API removed
+
+ Revision 1.18 1999/03/23 11:16:28 MA
+ #63806# ConfigName und HelpText entfernt
+
+
+ Rev 1.17 23 Mar 1999 12:16:28 MA
+ #63806# ConfigName und HelpText entfernt
+
+ Rev 1.16 29 Jan 1999 17:15:22 JP
+ Task #58423#: Reports mit Bildern aus der Datenbank
+
+ Rev 1.15 12 Nov 1998 17:29:08 MA
+ #58677# Disable Flag
+
+ Rev 1.14 11 Jun 1998 13:02:54 OM
+ #49467# Rahmen in Inhalt-protecteten Parents nicht bearbeiten
+
+ Rev 1.13 15 May 1998 16:21:34 OM
+ #49467# Geschtzte Rahmen nicht bearbeiten
+
+ Rev 1.12 10 Feb 1998 15:06:06 OM
+ Spiegeln
+
+ Rev 1.11 22 Jan 1998 17:40:30 OS
+ SID_BACKGROUND_PATTERN entsorgt
+
+ Rev 1.10 08 Oct 1997 13:30:52 OS
+ SID_FRAME_LINESTYLE funktioniert nicht ueber die API #44439#
+
+ Rev 1.9 28 Aug 1997 12:38:24 MBA
+ Neue Interface-Namen
+
+ Rev 1.8 28 Jul 1997 16:46:42 OM
+ #42111#Neue Statusmethode fuer Hyperlinkleiste
+
+ Rev 1.7 23 Jul 1997 15:19:12 AMA
+ Opt: ConfigName etc. aufgeraeumt
+
+ Rev 1.6 26 May 1997 14:12:12 OS
+ StateMethod fuer SwFmtSurround
+
+ Rev 1.5 15 May 1997 12:31:22 OS
+ Printable und Opaque am Frame
+
+ Rev 1.4 22 Apr 1997 18:46:52 JP
+ neu: GetSelText/SetText
+
+ Rev 1.3 16 Apr 1997 16:22:28 OS
+ Kontur und erster Absatz per Basic
+
+ Rev 1.2 13 Feb 1997 09:54:08 MA
+ unnoetige und falsche Texte entfernt
+
+ Rev 1.1 23 Jan 1997 16:09:06 OS
+ interface _Frame mit Automation = FALSE
+
+ Rev 1.0 23 Jan 1997 14:46:02 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/sdi/_grfsh.sdi b/sw/sdi/_grfsh.sdi
new file mode 100644
index 000000000000..2df8b810f466
--- /dev/null
+++ b/sw/sdi/_grfsh.sdi
@@ -0,0 +1,153 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: _grfsh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/_grfsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: interface _Graphic
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface BaseTextGraphic : Selection
+[
+ Automation = FALSE;
+]
+{
+ FN_FLIP_VERT_GRAFIC // status(final|play)
+ [
+ ExecMethod = ExecAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FLIP_HORZ_GRAFIC // status(final|play)
+ [
+ ExecMethod = ExecAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FORMAT_GRAFIC_DLG // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_INSERT_GRAPHIC // zeigt auf FN_FORMAT_GRAFIC_DLG
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_SIM_START // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_GRAPHIC_MIRROR_ON_EVEN_PAGES // status(final|play|rec)
+ [
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_GRAF_LUMINANCE // status(final|play|rec)
+ [
+ ExecMethod = ExecAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_GRAF_CONTRAST // status(final|play|rec)
+ [
+ ExecMethod = ExecAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_GRAF_RED // status(final|play|rec)
+ [
+ ExecMethod = ExecAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_GRAF_GREEN // status(final|play|rec)
+ [
+ ExecMethod = ExecAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_GRAF_BLUE // status(final|play|rec)
+ [
+ ExecMethod = ExecAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_GRAF_GAMMA // status(final|play|rec)
+ [
+ ExecMethod = ExecAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_GRAF_TRANSPARENCE // status(final|play|rec)
+ [
+ ExecMethod = ExecAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_GRAF_INVERT // status(final|play|rec)
+ [
+ ExecMethod = ExecAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_GRAF_MODE // status(final|play|rec)
+ [
+ ExecMethod = ExecAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.10 2000/07/31 19:23:40 jp
+ new attributes for CJK/CTL and graphic
+
+ Revision 1.9 2000/05/26 07:06:15 os
+ old SW Basic API Slots removed
+
+ Revision 1.8 1999/03/23 11:16:28 MA
+ #63806# ConfigName und HelpText entfernt
+
+
+ Rev 1.7 23 Mar 1999 12:16:28 MA
+ #63806# ConfigName und HelpText entfernt
+
+ Rev 1.6 12 Nov 1998 17:29:06 MA
+ #58677# Disable Flag
+
+ Rev 1.5 11 Jun 1998 13:02:54 OM
+ #49467# Rahmen in Inhalt-protecteten Parents nicht bearbeiten
+
+ Rev 1.4 10 Feb 1998 15:06:06 OM
+ Spiegeln
+
+ Rev 1.3 28 Aug 1997 12:38:14 MBA
+ Neue Interface-Namen
+
+ Rev 1.2 28 Jul 1997 16:46:40 OM
+ #42111#Neue Statusmethode fuer Hyperlinkleiste
+
+ Rev 1.1 13 Feb 1997 09:54:18 MA
+ unnoetige und falsche Texte entfernt
+
+ Rev 1.0 31 Jan 1997 13:26:24 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/_listsh.sdi b/sw/sdi/_listsh.sdi
new file mode 100644
index 000000000000..6d26a93f330c
--- /dev/null
+++ b/sw/sdi/_listsh.sdi
@@ -0,0 +1,103 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: _listsh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/_listsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: Basis-interface _List
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface BaseTextList : Selection
+[
+ Automation = FALSE
+]
+{
+ FN_NUMBER_NEWSTART // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_NUM_BULLET_DOWN // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_NUM_BULLET_NEXT // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_NUM_BULLET_NONUM // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_NUM_BULLET_OFF // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+
+ FN_NUM_BULLET_OUTLINE_DOWN // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_NUM_BULLET_OUTLINE_MOVEDOWN // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_NUM_BULLET_OUTLINE_MOVEUP // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_NUM_BULLET_OUTLINE_UP // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_NUM_BULLET_PREV // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_NUM_BULLET_UP // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_NUM_OR_NONUM // status(play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+
diff --git a/sw/sdi/_olesh.sdi b/sw/sdi/_olesh.sdi
new file mode 100644
index 000000000000..14085aa71229
--- /dev/null
+++ b/sw/sdi/_olesh.sdi
@@ -0,0 +1,46 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: _olesh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/_olesh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: gemeinsames interface _OleObject
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface BaseTextOLEObject : Selection
+[
+ Automation = FALSE;
+]
+{
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.6 2000/05/26 07:06:15 os
+ old SW Basic API Slots removed
+
+ Revision 1.5 2000/05/10 12:00:08 os
+ Basic API removed
+
+ Revision 1.4 1998/11/12 16:28:52 MA
+ #58677# Disable Flag
+
+
+ Rev 1.3 12 Nov 1998 17:28:52 MA
+ #58677# Disable Flag
+
+ Rev 1.2 28 Aug 1997 12:52:24 MBA
+ Neue Interface-Namen
+
+ Rev 1.1 13 Feb 1997 09:54:08 MA
+ unnoetige und falsche Texte entfernt
+
+ Rev 1.0 31 Jan 1997 13:26:48 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/_tabsh.sdi b/sw/sdi/_tabsh.sdi
new file mode 100644
index 000000000000..bac8dc218838
--- /dev/null
+++ b/sw/sdi/_tabsh.sdi
@@ -0,0 +1,409 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: _tabsh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/_tabsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: Basis-interface _Table
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface BaseTextTable : Selection
+[
+ Automation = FALSE;
+]
+{
+
+ FN_FORMAT_TABLE_DLG // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_NUM_FORMAT_TABLE_DLG // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_CALC_TABLE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_TABLE_AUTOSUM // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+
+ FN_TABLE_VERT_NONE
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_VERT_CENTER
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_VERT_BOTTOM
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_TABLE_SET_COL_WIDTH // status( final|play )
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_ULSPACE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_LRSPACE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ GroupId = GID_TABLE;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_DELETE_COL // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_DELETE_ROW // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_END_TABLE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_START_TABLE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_TABLE_INSERT_COL // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_INSERT_COL_DLG // status(final|play)
+ [
+ Export = FALSE ;
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_INSERT_ROW // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_INSERT_ROW_DLG // status(final|play)
+ [
+ Export = FALSE ;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_MERGE_CELLS // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_OPTIMIZE_TABLE
+ [
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_ADJUST_CELLS // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_BALANCE_CELLS // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_BALANCE_ROWS // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_SELECT_ALL // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_TABLE_SELECT_COL // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ FN_TABLE_SELECT_ROW // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+
+ FN_TABLE_SET_ROW_HEIGHT // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_OPTIMAL_HEIGHT // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_SPLIT_CELLS // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_SPLIT_TABLE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_MERGE_TABLE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_UNSET_READ_ONLY_CELLS // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+
+ SID_AUTOFORMAT // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SvxBoxItem BorderStyle SID_ATTR_BORDER // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetFrmBorderState ;
+ GroupId = GID_TABLE;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FRAME_LINESTYLE // status()
+ [
+ ExecMethod = ExecTableStyle ;
+ StateMethod = GetLineStyleState ;
+ Export = FALSE; //#44439#
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FRAME_LINECOLOR // status(play)
+ [
+ ExecMethod = ExecTableStyle ;
+ StateMethod = GetLineStyleState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TABLE_MODE_FIX
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ ]
+
+ FN_TABLE_MODE_FIX_PROP
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ ]
+
+ FN_TABLE_MODE_VARIABLE
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ ]
+
+ FN_NUMBER_FORMAT
+ [
+ ExecMethod = ExecNumberFormat;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_NUMBER_STANDARD
+ [
+ ExecMethod = ExecNumberFormat;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_NUMBER_TWODEC
+ [
+ ExecMethod = ExecNumberFormat;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_NUMBER_SCIENTIFIC
+ [
+ ExecMethod = ExecNumberFormat;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_NUMBER_DATE
+ [
+ ExecMethod = ExecNumberFormat;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_NUMBER_TIME
+ [
+ ExecMethod = ExecNumberFormat;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_NUMBER_CURRENCY
+ [
+ ExecMethod = ExecNumberFormat;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_NUMBER_PERCENT
+ [
+ ExecMethod = ExecNumberFormat;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+// Slots ohne Export
+
+ FN_INSERT_TABLE
+ [
+ Export = FALSE ;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.20 2000/07/03 20:00:41 jp
+ Bug #70403#: dont delete protected cells
+
+ Revision 1.19 2000/05/26 07:06:15 os
+ old SW Basic API Slots removed
+
+ Revision 1.18 1999/03/23 11:15:24 MA
+ #63806# ConfigName und HelpText entfernt
+
+
+ Rev 1.17 23 Mar 1999 12:15:24 MA
+ #63806# ConfigName und HelpText entfernt
+
+ Rev 1.16 17 Feb 1999 21:11:06 JP
+ Task #61764#: neu: Tabellen zusammenfassen
+
+ Rev 1.15 12 Nov 1998 17:29:12 MA
+ #58677# Disable Flag
+
+ Rev 1.14 18 Mar 1998 19:43:52 MA
+ State fuer Split
+
+ Rev 1.13 25 Feb 1998 12:52:10 MA
+ new: SplitTable
+
+ Rev 1.12 08 Oct 1997 13:30:52 OS
+ SID_FRAME_LINESTYLE funktioniert nicht ueber die API #44439#
+
+ Rev 1.11 28 Aug 1997 12:50:02 MBA
+ Neue Interface-Namen
+
+ Rev 1.10 25 Jul 1997 11:29:00 AMA
+ Opt: GroupId und ConfigName aufgeraeumt
+
+ Rev 1.9 16 Jun 1997 17:38:24 MA
+ fix: State fuer InsertRowDialog
+
+ Rev 1.8 16 Jun 1997 09:25:22 MA
+ #40610# State fuer InsertRow
+
+ Rev 1.7 20 May 1997 21:30:22 JP
+ neu: Tabellenformel uebers Basic setzen
+
+ Rev 1.6 14 May 1997 10:56:52 JP
+ neue Slots fuer die TabShell
+
+ Rev 1.5 15 Mar 1997 21:04:56 JP
+ neuer Slot fuer DB-Reports
+
+ Rev 1.4 18 Feb 1997 16:57:16 OS
+ AutoSum
+
+ Rev 1.3 14 Feb 1997 18:10:00 OM
+ Zahlenformat-Dlg
+
+ Rev 1.2 13 Feb 1997 09:54:08 MA
+ unnoetige und falsche Texte entfernt
+
+ Rev 1.1 27 Jan 1997 16:38:18 OS
+ Web-Slots aus den allg. interfaces raus
+
+ Rev 1.0 23 Jan 1997 14:44:06 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/_textsh.sdi b/sw/sdi/_textsh.sdi
new file mode 100644
index 000000000000..ad52194a0507
--- /dev/null
+++ b/sw/sdi/_textsh.sdi
@@ -0,0 +1,1262 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: _textsh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/_textsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: Basis-interfaces fuer Text
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface BaseText : Selection
+[
+ Automation = FALSE;
+]
+{
+ SID_INSERTDOC // status(final|play|rec)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_BOOKMARK // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_NUM_BULLET_MOVEDOWN // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_NUM_BULLET_MOVEUP // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_EDIT_FORMULA // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_SYMBOL // status(final|play|rec)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_PAGEHEADER // status(final|play|rec)
+ [
+ StateMethod = GetState ;
+ Export = FALSE;
+ ]
+ FN_INSERT_PAGEFOOTER // status(final|play|rec)
+ [
+ StateMethod = GetState ;
+ Export = FALSE;
+ ]
+
+ //--------------------------------------------------------------------------
+ FN_INSERT_SOFT_HYPHEN // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_HARDHYPHEN // status()
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_HARD_SPACE // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_BREAK // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_PAGEBREAK // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SfxVoidItem InsertLinebreak FN_INSERT_LINEBREAK ( ) // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_COLUMN_BREAK // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_BREAK_DLG // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_INSERT_GRAPHIC // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_HRULER // status()
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ ]
+ SID_INSERT_DIAGRAM // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_INSERT_SOUND
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_INSERT_VIDEO
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_SMA // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_SIM // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_INSERT_FLOATINGFRAME // status()
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SfxVoidItem InsertObject SID_INSERT_OBJECT ( ) // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SfxVoidItem InsertPlugin SID_INSERT_PLUGIN ( ) // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SfxVoidItem InsertApplet SID_INSERT_APPLET ( ) // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_TABLE // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_HYPERLINK_SETLINK // status()
+ [
+ ExecMethod = ExecInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_HYPERLINK_GETLINK // status()
+ [
+ StateMethod = StateInsert ;
+ ]
+ FN_INSERT_HYPERLINK // status()
+ [
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_HYPERLINK_DIALOG
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState;
+ ]
+ FN_EDIT_HYPERLINK
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_TABLE_UNSET_READ_ONLY // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_DELETE_SENT // status(final|play)
+ [
+ ExecMethod = ExecDelete ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_DELETE_BACK_SENT // status(final|play)
+ [
+ ExecMethod = ExecDelete ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_DELETE_WORD // status(final|play)
+ [
+ ExecMethod = ExecDelete ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_DELETE_BACK_WORD // status(final|play)
+ [
+ ExecMethod = ExecDelete ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SfxVoidItem DelToEndOfLine FN_DELETE_LINE ( ) // status(final|play)
+ [
+ ExecMethod = ExecDelete ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_DELETE_BACK_LINE // status(final|play)
+ [
+ ExecMethod = ExecDelete ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_DELETE_PARA // status(final|play)
+ [
+ ExecMethod = ExecDelete ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_DELETE_BACK_PARA // status(final|play)
+ [
+ ExecMethod = ExecDelete ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_DELETE_WHOLE_LINE // status(final|play)
+ [
+ ExecMethod = ExecDelete ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_CHAR_LEFT // status(final|play)
+ [
+ ExecMethod = ExecBasicMove ;
+ StateMethod = NoState ;
+ ]
+ FN_CHAR_RIGHT // status(final|play)
+ [
+ ExecMethod = ExecBasicMove ;
+ StateMethod = NoState ;
+ ]
+ FN_LINE_UP // status(final|play)
+ [
+ ExecMethod = ExecBasicMove ;
+ StateMethod = NoState ;
+ ]
+ FN_LINE_DOWN // status(final|play)
+ [
+ ExecMethod = ExecBasicMove ;
+ StateMethod = NoState ;
+ ]
+ FN_SELECT_WORD // status(final|play)
+ [
+ ExecMethod = ExecMove ;
+ StateMethod = NoState ;
+ ]
+ SID_SELECTALL // status(final|play)
+ [
+ ExecMethod = ExecMove ;
+ StateMethod = NoState ;
+ ]
+ //
+ // Goto - Methoden
+ //
+ FN_CNTNT_TO_NEXT_FRAME // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc ;
+ StateMethod = NoState ;
+ ]
+ FN_START_OF_COLUMN // status(final|play)
+ [
+ ExecMethod = ExecMoveCol ;
+ StateMethod = NoState ;
+ ]
+ FN_END_OF_COLUMN // status(final|play)
+ [
+ ExecMethod = ExecMoveCol ;
+ StateMethod = NoState ;
+ ]
+ FN_START_OF_NEXT_COLUMN // status(final|play)
+ [
+ ExecMethod = ExecMoveCol ;
+ StateMethod = NoState ;
+ ]
+ FN_END_OF_NEXT_COLUMN // status(final|play)
+ [
+ ExecMethod = ExecMoveCol ;
+ StateMethod = NoState ;
+ ]
+ FN_START_OF_PREV_COLUMN // status(final|play)
+ [
+ ExecMethod = ExecMoveCol ;
+ StateMethod = NoState ;
+ ]
+ FN_END_OF_PREV_COLUMN // status(final|play)
+ [
+ ExecMethod = ExecMoveCol ;
+ StateMethod = NoState ;
+ ]
+ FN_TO_HEADER // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc ;
+ StateMethod = NoState ;
+ ]
+ FN_TO_FOOTER // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc ;
+ StateMethod = NoState ;
+ ]
+ FN_PREV_TABLE // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc ;
+ StateMethod = NoState ;
+ ]
+ FN_NEXT_TABLE // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc ;
+ StateMethod = NoState ;
+ ]
+ FN_GOTO_PREV_REGION
+ [
+ ExecMethod = ExecMoveMisc ;
+ StateMethod = NoState ;
+ ]
+ FN_GOTO_NEXT_REGION
+ [
+ ExecMethod = ExecMoveMisc ;
+ StateMethod = NoState ;
+ ]
+ FN_NEXT_WORD // status(final|play)
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ ]
+ FN_START_OF_PARA // status(final|play)
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ ]
+ FN_END_OF_PARA // status(final|play)
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ ]
+ FN_PREV_PARA // status(final)
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ ]
+ FN_NEXT_PARA // status(final)
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ ]
+ FN_PREV_WORD // status(final|play)
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ ]
+ FN_NEXT_SENT // status(final|play)
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ ]
+ FN_PREV_SENT // status(final|play)
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ ]
+ FN_START_OF_NEXT_PAGE // status(final|play)
+ [
+ ExecMethod = ExecMovePage ;
+ StateMethod = NoState ;
+ ]
+ FN_END_OF_NEXT_PAGE // status(final|play)
+ [
+ ExecMethod = ExecMovePage ;
+ StateMethod = NoState ;
+ ]
+ FN_START_OF_PREV_PAGE // status(final|play)
+ [
+ ExecMethod = ExecMovePage ;
+ StateMethod = NoState ;
+ ]
+ FN_END_OF_PREV_PAGE // status(final|play)
+ [
+ ExecMethod = ExecMovePage ;
+ StateMethod = NoState ;
+ ]
+ FN_START_OF_PAGE // status(final|play)
+ [
+ ExecMethod = ExecMovePage ;
+ StateMethod = NoState ;
+ ]
+ FN_END_OF_PAGE // status(final|play)
+ [
+ ExecMethod = ExecMovePage ;
+ StateMethod = NoState ;
+ ]
+ FN_START_OF_LINE // status(final|play)
+ [
+ ExecMethod = ExecMove ;
+ StateMethod = NoState ;
+ ]
+ FN_END_OF_LINE // status(final|play)
+ [
+ ExecMethod = ExecMove ;
+ StateMethod = NoState ;
+ ]
+ FN_START_OF_DOCUMENT // status(final|play)
+ [
+ ExecMethod = ExecMove ;
+ StateMethod = NoState ;
+ ]
+ FN_END_OF_DOCUMENT // status(final|play)
+ [
+ ExecMethod = ExecMove ;
+ StateMethod = NoState ;
+ ]
+ FN_NEXT_TOXMARK // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc;
+ StateMethod = NoState ;
+ ]
+
+ FN_PREV_TOXMARK // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc;
+ StateMethod = NoState ;
+ ]
+
+ FN_NEXT_TBLFML // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc;
+ StateMethod = NoState ;
+ ]
+
+ FN_PREV_TBLFML // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc;
+ StateMethod = NoState ;
+ ]
+
+ FN_NEXT_TBLFML_ERR // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc;
+ StateMethod = NoState ;
+ ]
+
+ FN_PREV_TBLFML_ERR // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc;
+ StateMethod = NoState ;
+ ]
+
+
+ //
+ // Get - Properties
+ //
+ FN_AUTOFORMAT_AUTO // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_AUTOFORMAT_APPLY // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_AUTOFORMAT_REDLINE_APPLY // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_AUTO_CORRECT // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SfxVoidItem SortDialog FN_SORTING_DLG ( ) // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SfxVoidItem ChapterNumberingDialog FN_NUMBERING_OUTLINE_DLG ( ) // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+ FN_CALCULATE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_FORMAT_RESET // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_GOTO_REFERENCE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //Parameter kann noch nicht aufgezeichnet werden
+ FN_NUM_NUMBERING_ON // status(final|play)
+ [
+ ExecMethod = ExecEnterNum ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_NUMBER_BULLETS // status(final|play)
+ [
+ ExecMethod = ExecEnterNum ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_NUM_BULLET_ON // status(final|play)
+ [
+ ExecMethod = ExecEnterNum ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_FRAME // status(final|play)
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FORMAT_COLUMN // status()
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_SECTION_APPENDNODE // status()
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ ]
+ FN_INSERT_FOOTNOTE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ /*-----------------24.01.97 07.33-------------------
+ Fussnoten - Befehle
+--------------------------------------------------*/
+
+ FN_INSERT_ENDNOTE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_FORMAT_FOOTNOTE_DLG // status()
+ [
+ ExecMethod = Execute ;
+ ]
+ FN_FOOTNOTE_TO_ANCHOR // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc ;
+ StateMethod = NoState ;
+ ]
+ FN_NEXT_FOOTNOTE // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc ;
+ StateMethod = NoState ;
+ ]
+ FN_PREV_FOOTNOTE // status(final|play)
+ [
+ ExecMethod = ExecMoveMisc ;
+ StateMethod = NoState ;
+ ]
+
+ FN_INSERT_FOOTNOTE_DLG // status(final|play|rec)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ /*-----------------24.01.97 07.34-------------------
+ Ende Fussnoten
+ --------------------------------------------------*/
+ FN_INSERT_FIELD // status(final|play)
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ AutoUpdate ;
+ ]
+ FN_INSERT_REF_FIELD
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ AutoUpdate ;
+ ]
+ FN_INSERT_FIELD_CTRL
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE ;
+ ]
+ //--------------------------------------------------------------------------
+ FN_INSERT_FLD_PGNUMBER
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ReadOnlyDoc = FALSE ;
+ ]
+ FN_INSERT_FLD_PGCOUNT
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ReadOnlyDoc = FALSE ;
+ ]
+
+ FN_INSERT_FLD_TITLE
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ReadOnlyDoc = FALSE ;
+ ]
+ FN_INSERT_FLD_DATE
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ //--------------------------------------------------------------------------
+ FN_INSERT_FLD_TIME
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ //--------------------------------------------------------------------------
+ FN_INSERT_FLD_AUTHOR
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_GOTO_NEXT_INPUTFLD // status(final|play)
+ [
+ ExecMethod = ExecField ;
+ StateMethod = NoState ;
+ ]
+ FN_GOTO_PREV_INPUTFLD // status(final|play)
+ [
+ ExecMethod = ExecField ;
+ StateMethod = NoState ;
+ ]
+ FN_EXECUTE_MACROFIELD // status()
+ [
+ Export = FALSE ;
+ ExecMethod = ExecField ;
+ StateMethod = StateField ;
+ ]
+ FN_EDIT_FIELD // status(final|play)
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField ;
+ ]
+ FN_GLOSSARY_DLG // status()
+ [
+ ExecMethod = ExecGlossary ;
+ StateMethod = GetState ;
+ ]
+ FN_EXPAND_GLOSSARY // status(final|play)
+ [
+ ExecMethod = ExecGlossary ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_POSTIT // status(final|play)
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField;
+ ]
+ FN_REDLINE_COMMENT // status(play)
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR|SW_DISABLE_ON_MAILBOX_EDITOR";
+ ]
+ FN_JAVAEDIT // status(final|play)
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField;
+ ]
+ // Slots mit Export = FALSE
+ //Slots ohne Export
+ FN_CHAR_LEFT_SEL
+ [
+ ExecMethod = ExecBasicMove ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_CHAR_RIGHT_SEL
+ [
+ ExecMethod = ExecBasicMove ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_LINE_UP_SEL
+ [
+ ExecMethod = ExecBasicMove ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_LINE_DOWN_SEL
+ [
+ ExecMethod = ExecBasicMove;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_START_OF_NEXT_PAGE_SEL
+ [
+ ExecMethod = ExecMovePage;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_END_OF_NEXT_PAGE_SEL
+ [
+ ExecMethod = ExecMovePage ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_START_OF_PREV_PAGE_SEL
+ [
+ ExecMethod = ExecMovePage ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_END_OF_PREV_PAGE_SEL
+ [
+ ExecMethod = ExecMovePage ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_START_OF_PAGE_SEL
+ [
+ ExecMethod = ExecMovePage ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_END_OF_PAGE_SEL
+ [
+ ExecMethod = ExecMovePage ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_NEXT_WORD_SEL
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_START_OF_PARA_SEL
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_END_OF_PARA_SEL
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_PREV_WORD_SEL
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_NEXT_SENT_SEL
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_START_OF_LINE_SEL
+ [
+ ExecMethod = ExecMove ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_END_OF_LINE_SEL
+ [
+ ExecMethod = ExecMove ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_START_OF_DOCUMENT_SEL
+ [
+ ExecMethod = ExecMove ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_END_OF_DOCUMENT_SEL
+ [
+ ExecMethod = ExecMove ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_PREV_SENT_SEL
+ [
+ ExecMethod = ExecMoveLingu ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_QRY_INSERT
+ [
+ ExecMethod = ExecDB ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_QRY_MERGE_FIELD
+ [
+ ExecMethod = ExecDB ;
+ StateMethod = NoState ;
+ Export = FALSE ;
+ ]
+ FN_QRY_INSERT_FIELD
+ [
+ ExecMethod = ExecDB ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE ;
+ ]
+ SID_ATTR_PARA_ADJUST_LEFT
+ [
+ ExecMethod = ExecParaAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE ;
+ ]
+ SID_ATTR_PARA_ADJUST_RIGHT
+ [
+ ExecMethod = ExecParaAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE ;
+ ]
+ SID_ATTR_PARA_ADJUST_CENTER
+ [
+ ExecMethod = ExecParaAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE ;
+ ]
+ SID_ATTR_PARA_ADJUST_BLOCK
+ [
+ ExecMethod = ExecParaAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE ;
+ ]
+ SID_ATTR_PARA_LINESPACE_10
+ [
+ ExecMethod = ExecParaAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE ;
+ ]
+ SID_ATTR_PARA_LINESPACE_15
+ [
+ ExecMethod = ExecParaAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE ;
+ ]
+ SID_ATTR_PARA_LINESPACE_20
+ [
+ ExecMethod = ExecParaAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Export = FALSE ;
+ ]
+ SID_ATTR_PARA_ADJUST // status(final|play)
+ [
+ // (0=links, 1=rechts, 2=block, 3=zentriert, )"
+ ExecMethod = ExecParaAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_PARA_LINESPACE // status(final|play)
+ [
+ // SvxLineSpace LineSpace MID_LINESPACE;
+ // UINT16 LineHeight MID_HEIGHT; // % or direct
+ // SvxInterLineSpace InterLineSpace MID_INTER_LINESPACE;
+ // INT16 InterSpace MID_INTER_SPACE;
+ ExecMethod = ExecParaAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_PARA_SPLIT // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_PARA_KEEP // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_PARA_WIDOWS // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_PARA_ORPHANS // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_PARA_PAGEBREAK // status(final|play)
+ [
+ ExecMethod = ExecParaAttrArgs ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_PARA_MODEL // status(final|play)
+ [
+ ExecMethod = ExecParaAttrArgs ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_PARA_DLG // status(final|play)
+ [
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_SELECT_PARA // status(final|play)
+ [
+ ExecMethod = Execute ;
+ ]
+ SID_DEC_INDENT
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_INC_INDENT
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_DEC_INDENT_OFFSET
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INC_INDENT_OFFSET
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FORMAT_DROPCAPS // status(final|play)
+ [
+ ExecMethod = ExecParaAttrArgs ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_PARA_HYPHENZONE // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_FONT // status(final|play)
+ [
+ ExecMethod = ExecTxtCtrl ;
+ StateMethod = GetTxtCtrlState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_FONTHEIGHT // status(final|play)
+ [
+ ExecMethod = ExecTxtCtrl ;
+ StateMethod = GetTxtCtrlState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_COLOR_BACKGROUND // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_COLOR_BACKGROUND_EXT // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_COLOR_EXT // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_COLOR2
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_COLOR // status(final|play)
+ [
+ ExecMethod = ExecTxtCtrl ;
+ StateMethod = GetTxtCtrlState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_WEIGHT // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_POSTURE // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_UNDERLINE // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_FLASH // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_STRIKEOUT // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_UNDERLINE_DOUBLE // status(final|play)
+ [
+ ExecMethod = ExecCharAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_CONTOUR // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_SHADOWED // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_AUTOKERN // // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_ESCAPEMENT // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_SET_SUPER_SCRIPT
+ [
+ ExecMethod = ExecCharAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_SET_SUB_SCRIPT
+ [
+ ExecMethod = ExecCharAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_CASEMAP // status(final|play)
+ [
+ ExecMethod = ExecCharButtonAttr ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_LANGUAGE // status(final|play)
+ [
+ ExecMethod = ExecCharAttrArgs ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_KERNING // status(final|play)
+ [
+ ExecMethod = ExecCharAttrArgs ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_CHAR_DLG // status(final|play)
+ [
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_WORDLINEMODE // status(final|play)
+ [
+ ExecMethod = ExecCharAttrArgs ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_GROW_FONT_SIZE // status(final|play)
+ [
+ ExecMethod = ExecCharAttrArgs ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_SHRINK_FONT_SIZE // status(final|play)
+ [
+ ExecMethod = ExecCharAttrArgs ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+} //ende interface text
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.76 2000/06/20 14:47:51 os
+ #70060# less occurences of columns in HTML
+
+ Revision 1.75 2000/06/20 11:47:28 os
+ #76287# ExecuteMethod name corrected
+
+ Revision 1.74 2000/05/26 07:06:16 os
+ old SW Basic API Slots removed
+
+ Revision 1.73 2000/05/10 12:00:08 os
+ Basic API removed
+
+ Revision 1.72 2000/02/22 14:49:18 os
+ #72894# footnote option dialog in HTML documents
+
+ Revision 1.71 2000/02/10 11:57:08 os
+ #72894# fields pageno, pagecount, title and insert footnote enabled in SW/Web
+
+ Revision 1.70 2000/01/06 07:34:05 os
+ #71436# mail merge dialog: execute via status method disposed
+
+ Revision 1.69 2000/01/03 08:35:56 os
+ #71278# edit hyperlink slot
+
+ Revision 1.68 1999/10/11 20:08:39 jp
+ Bug #68496#: append paragraph behind a section
+
+ Revision 1.67 1999/07/26 08:00:40 OS
+ #58419# insert Sound and Vidoo
+
+
+ Rev 1.66 26 Jul 1999 10:00:40 OS
+ #58419# insert Sound and Vidoo
+
+ Rev 1.65 23 Jun 1999 11:57:00 JP
+ Bug #43028# disableflaf for edit in mailbody
+
+ Rev 1.64 27 May 1999 13:20:14 OS
+ Einf?gen/Bearbeiten von Spalten ueberarbeitet
+
+ Rev 1.63 19 Apr 1999 13:43:44 OS
+ #64780# Notizen und Scripts in geschuetzten Bereichen
+
+ Rev 1.62 23 Mar 1999 12:16:30 MA
+ #63806# ConfigName und HelpText entfernt
+
+ Rev 1.61 01 Mar 1999 16:23:02 MA
+ #62490# Altlast entfernt (Drucken und Briefumschlaege/Etiketten und Datenbank)
+
+ Rev 1.60 29 Jan 1999 17:15:38 JP
+ Task #58423#: Reports mit Bildern aus der Datenbank
+
+ Rev 1.59 22 Jan 1999 11:54:32 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.58 15 Jan 1999 15:47:14 JP
+ Bug #60203#: MoveLeftMargin - optional um Betrag verschieben
+
+ Rev 1.57 14 Jan 1999 15:47:20 JP
+ Bug #60794#: Fehlererkennung beim Tabellenrechnen und anspringen von Formeln
+
+ Rev 1.56 12 Nov 1998 17:28:50 MA
+ #58677# Disable Flag
+
+ Rev 1.55 21 Oct 1998 16:12:48 OM
+ #58157# Querverweise einfuegen
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/_viewsh.sdi b/sw/sdi/_viewsh.sdi
new file mode 100644
index 000000000000..2c05679734e6
--- /dev/null
+++ b/sw/sdi/_viewsh.sdi
@@ -0,0 +1,683 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: _VIEWSH.SDI $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/_viewsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: allgemeine interfaces fuer View
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+
+interface BaseTextEditView : View
+[
+ Automation = FALSE;
+]
+{
+ FN_REFRESH_VIEW // status(final|play)
+ [
+ ExecMethod = Execute ;
+ ]
+ FN_PAGEUP // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_PAGEUP_SEL // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_UNDO // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_CLEARHISTORY // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_CREATE_SW_DRAWVIEW
+ [
+ ExecMethod = Execute;
+ ]
+ FN_PAGEDOWN // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_PAGEDOWN_SEL // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_NAVIGATION_PI_GOTO_PAGE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+ FN_SCROLL_NAVIGATION
+ [
+ ExecMethod = NoExec ;
+ StateMethod = NoState ;
+ ]
+ FN_SCROLL_NEXT_PREV
+ [
+ ExecMethod = Execute;
+ ]
+ FN_SET_PAGE_STYLE // status(final|play)
+ [
+ ExecMethod = ExecColl ;
+ ]
+ SID_OBJECT_SELECT
+ [
+ ExecMethod = ExecDraw ;
+ StateMethod = GetDrawState ;
+ ]
+ SID_SHOW_HIDDEN // status()
+ [
+ Export = FALSE ;
+ ExecMethod = ExecDraw ;
+ ]
+ SID_SHOW_FORMS // status()
+ [
+ ExecMethod = ExecDraw ;
+ StateMethod = GetDrawState ;
+ ]
+ FN_REDLINE_ON // status()
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_MAILBOX_EDITOR";
+ ]
+ FN_REDLINE_SHOW // status()
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_MAILBOX_EDITOR";
+ ]
+ FN_REDLINE_ACCEPT // status(play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_MAILBOX_EDITOR";
+ ]
+ SID_DOCUMENT_COMPARE // status(play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_MAILBOX_EDITOR";
+ ]
+ SID_DOCUMENT_MERGE // status(play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_MAILBOX_EDITOR";
+ ]
+ FN_ESCAPE // status(final|play|rec)
+ [
+ ExecMethod = Execute ;
+ ]
+ FN_FAX // status(final|play)
+ [
+ ExecMethod = ExecutePrint ;
+ ]
+ SID_PRINTDOC // status(final|play)
+ [
+ ExecMethod = ExecutePrint ;
+ StateMethod = GetState ;
+ ]
+ SID_PRINTDOCDIRECT // status(final|play)
+ [
+ ExecMethod = ExecutePrint ;
+ StateMethod = GetState ;
+ ]
+ SID_ATTR_LRSPACE
+ [
+ ExecMethod = ExecTabWin ;
+ StateMethod = StateTabWin ;
+ GroupId = GID_EDIT ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_ULSPACE
+ [
+ ExecMethod = ExecTabWin ;
+ StateMethod = StateTabWin ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_LONG_LRSPACE // status()
+ [
+ ExecMethod = ExecTabWin ;
+ StateMethod = StateTabWin ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_LONG_ULSPACE // status()
+ [
+ ExecMethod = ExecTabWin ;
+ StateMethod = StateTabWin ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_PARA_LRSPACE // status()
+ [
+ ExecMethod = ExecTabWin ;
+ StateMethod = StateTabWin ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_RULER_BORDERS // status()
+ [
+ ExecMethod = ExecTabWin ;
+ StateMethod = StateTabWin ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_RULER_PAGE_POS // status()
+ [
+ ExecMethod = NoExec ;
+ StateMethod = StateTabWin ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_RULER_LR_MIN_MAX // status()
+ [
+ StateMethod = StateTabWin ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_RULER_PROTECT // status()
+ [
+ StateMethod = StateTabWin ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_EDIT_LINK_DLG // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_LINE_NUMBERING_DLG // status()
+ [
+ ExecMethod = Execute;
+ ]
+ FN_UPDATE_TOX // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ MenuConfig , AccelConfig , ToolBoxConfig ;
+
+ ]
+ FN_UPDATE_CUR_TOX // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_EDIT_CURRENT_TOX // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_TWAIN_SELECT
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_TWAIN_TRANSFER
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ //---------------------------------------------------------------------
+ //Ab hier Statusleiste
+ FN_STAT_PAGE // status()
+ [
+ ExecMethod = ExecuteStatusLine ;
+ StateMethod = StateStatusLine ;
+ ]
+ FN_STAT_BOOKMARK // status()
+ [
+ ExecMethod = ExecuteStatusLine ;
+ ]
+ FN_STAT_HYPERLINKS // status()
+ [
+ ExecMethod = ExecuteStatusLine ;
+ StateMethod = StateStatusLine ;
+ ]
+ FN_STAT_TEMPLATE // status(final|play)
+ [
+ ExecMethod = ExecuteStatusLine ;
+ StateMethod = StateStatusLine ;
+ ]
+ FN_STAT_SELMODE // status(final|play)
+ [
+ //Aktueller Selektionsmode: 0 == Normal, 2 == Ergaenzen, 1 == Erweitern
+ ExecMethod = ExecuteStatusLine ;
+ StateMethod = StateStatusLine ;
+ ]
+ FN_SET_ADD_MODE // status()
+ [
+ ExecMethod = ExecuteStatusLine ;
+ StateMethod = NoState ;
+ ]
+ FN_SET_EXT_MODE // status()
+ [
+ ExecMethod = ExecuteStatusLine ;
+ StateMethod = NoState ;
+ ]
+ SID_ATTR_ZOOM // status(final|play)
+ [
+ ExecMethod = ExecuteStatusLine ;
+ StateMethod = StateStatusLine ;
+ ]
+ SID_ATTR_INSERT // status(final|play|rec)
+ [
+ ExecMethod = ExecuteStatusLine ;
+ StateMethod = StateStatusLine ;
+ ]
+ SID_ATTR_SIZE // status()
+ [
+ ExecMethod = ExecuteStatusLine ;
+ StateMethod = StateStatusLine ;
+ ]
+ SID_ATTR_POSITION // status()
+ [
+ StateMethod = StateStatusLine ;
+ ]
+ SID_TABLE_CELL // status()
+ [
+ StateMethod = StateStatusLine ;
+ ]
+ //----------------------------------------------
+ //End mit Statusleiste
+ //----------------------------------------------
+ SID_ATTR_BORDER_SHADOW // status()
+ [
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ /****************************************************/
+ /* */
+ /* Properties Seitenformat */
+ /* */
+ /****************************************************/
+ SID_ATTR_PAGE // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_ATTR_PAGE_SIZE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_ATTR_PAGE_MAXSIZE // status()
+ [
+ Export = FALSE ;
+ ExecMethod = Execute ;
+ ]
+ SID_ATTR_PAGE_PAPERBIN // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_THESAURUS_DLG // status(final|play)
+ [
+ ExecMethod = ExecLingu ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_SPELLING_DLG // status(final|play)
+ [
+ ExecMethod = ExecLingu ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_ADD_UNKNOWN // status(final|play)
+ [
+ ExecMethod = ExecLingu ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ /*
+ suchen und ersetzen
+*/
+
+
+ SID_SEARCH_ITEM // status()
+ [
+ ExecMethod = ExecSearch ;
+ StateMethod = StateSearch ;
+ Export = FALSE;
+ ]
+ FN_REPEAT_SEARCH // status(final|play)
+ [
+ ExecMethod = ExecSearch ;
+ ]
+ FID_SEARCH_NOW // status()
+ [
+ ExecMethod = ExecSearch ;
+ ]
+ SID_SEARCH_OPTIONS // status()
+ [
+ StateMethod = StateSearch ;
+ ]
+ FID_SEARCH_SEARCHSET // status()
+ [
+ ExecMethod = ExecSearch ;
+ ]
+ FID_SEARCH_REPLACESET // status()
+ [
+ ExecMethod = ExecSearch ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_TABSTOP // status()
+ [
+ ExecMethod = ExecTabWin ;
+ StateMethod = StateTabWin ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ // ab hier Export = FALSE;
+ FID_SEARCH_ON // status()
+ [
+ ExecMethod = ExecSearch ;
+ Export = FALSE;
+ ]
+ FID_SEARCH_OFF // status()
+ [
+ ExecMethod = ExecSearch ;
+ Export = FALSE;
+ ]
+ FN_INSERT_CTRL
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ ]
+
+ SID_ATTR_DEFTABSTOP
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_LANGUAGE
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SfxVoidItem JumpToMark SID_JUMPTOMARK
+
+ (
+ SfxStringItem Bookmark SID_JUMPTOMARK
+ ) // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ FastCall , Cachable ;
+ ]
+
+ FN_SYNC_LABELS // status(play)
+ [
+ ExecMethod = Execute ;
+ ]
+ SID_ATTR_BRUSH // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+
+interface GlobalContents : Collection
+[ uuid = "1FD80520-F517-11d0-AC9B-008029E867C6"; ]
+{
+ UINT16 Type FN_COLL_TYPE
+ (
+ UINT16 Position FN_COLL_TYPE
+ )
+ [
+ ]
+
+ // Bereichsname, Index-Titel oder Leerstring
+ String Title FN_COLL_TITLE
+ (
+ UINT16 Position FN_COLL_TITLE
+ )
+ [
+ ]
+ // ohne FileName wird ein TextBereich an der Position eingefuegt
+ BOOL InsertDocument FN_COLL_ADD
+ (
+ UINT16 Position FN_COLL_ADD,
+ UINT16 FileName FN_PARAM_1
+ )
+ [
+ ]
+
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.71 2000/05/29 14:33:20 os
+ OfaDBMgr Basic methods removed
+
+ Revision 1.70 2000/05/26 07:06:16 os
+ old SW Basic API Slots removed
+
+ Revision 1.69 2000/05/23 12:05:06 os
+ SvxTabStopItem is back
+
+ Revision 1.68 2000/05/10 12:00:08 os
+ Basic API removed
+
+ Revision 1.67 2000/01/21 13:33:27 tl
+ #70503# GetState method added for FN_THESAURUS_DLG
+
+ Revision 1.66 1999/09/10 08:51:39 jp
+ LineNumberDialog: dont disable by protected cursor
+
+ Revision 1.65 1999/06/23 09:57:02 JP
+ Bug #43028# disableflaf for edit in mailbody
+
+
+ Rev 1.64 23 Jun 1999 11:57:02 JP
+ Bug #43028# disableflaf for edit in mailbody
+
+ Rev 1.63 09 Jun 1999 12:32:02 OS
+ #66578# new slot: FN_EDIT_CURENT_TOX
+
+ Rev 1.62 23 Mar 1999 12:15:28 MA
+ #63806# ConfigName und HelpText entfernt
+
+ Rev 1.61 27 Jan 1999 13:40:36 JP
+ Bug #59688#: bei GlobalDokumenten gibts kein vergeleichen oder zusammenfuehren
+
+ Rev 1.60 18 Nov 1998 15:07:26 OM
+ #59280# FormController Create Modes verlassen
+
+ Rev 1.59 18 Nov 1998 12:58:26 OM
+ #58385# DrawView ueber Slot anziehen
+
+ Rev 1.58 12 Nov 1998 17:29:26 MA
+ #58677# Disable Flag
+
+ Rev 1.57 11 Jul 1998 12:28:56 MA
+ chg: State fuer scrollbody
+
+ Rev 1.56 01 Jul 1998 12:55:56 JP
+ FN_DOCUMENT - Ids entfernt, werden vom SFX geliefert
+
+ Rev 1.55 28 Jun 1998 12:49:32 MA
+ Mail_Scrollbody
+
+ Rev 1.54 12 Jun 1998 16:09:52 OM
+ Gruppierung betreten/verlassen
+
+ Rev 1.53 09 Jun 1998 15:37:06 OM
+ VC-Controls entfernt
+
+ Rev 1.52 16 Mar 1998 11:02:44 OM
+ Labels: Statusmethode entfernt
+
+ Rev 1.51 15 Mar 1998 14:10:48 OM
+ Synchron-Button
+
+ Rev 1.50 13 Mar 1998 08:32:26 OS
+ SID_NEWWINDOW nicht mehr ueberladen
+
+ Rev 1.49 04 Mar 1998 14:17:04 OM
+ Dokument Merge/Compare
+
+ Rev 1.48 03 Mar 1998 10:41:24 OM
+ Redline-Browser
+
+ Rev 1.47 26 Feb 1998 11:54:30 OM
+ Redline accept/reject
+
+ Rev 1.46 18 Feb 1998 18:54:58 OM
+ Zeilennumerierung
+
+ Rev 1.45 03 Feb 1998 15:26:28 OM
+ Redlining
+
+ Rev 1.44 10 Dec 1997 11:27:30 OS
+ JumpToMark: Parameter heisst jetzt Bookmark wie im SFX
+
+ Rev 1.43 18 Nov 1997 14:30:08 OM
+ Sba-Umstellung 372
+
+ Rev 1.42 10 Oct 1997 14:22:12 OS
+ Search/ReplaceAttributes von Object abgeleitet
+
+ Rev 1.41 03 Sep 1997 09:33:54 MBA
+ OLEObjects in SVX
+
+ Rev 1.40 02 Sep 1997 08:05:08 OS
+ ParaKeepTogether und PageStyle aus den SearchAttributes entfernt #43032#
+ FN_KILL_SELECTION entfernt #43143#
+
+ Rev 1.39 28 Aug 1997 12:43:50 MBA
+ Neue Interface-Namen
+
+ Rev 1.38 15 Aug 1997 11:26:04 OM
+ Draw- und Controlslots Bereichsumstellung
+
+ Rev 1.37 28 Jul 1997 17:00:38 OM
+ Basic: ExpandTableName
+
+ Rev 1.36 25 Jul 1997 11:32:46 AMA
+ Opt: GroupId und ConfigName aufgeraeumt
+
+ Rev 1.35 23 Jul 1997 16:18:10 AMA
+ Opt: ConfigName etc. aufgeraeumt
+
+ Rev 1.34 18 Jul 1997 09:37:30 OM
+ Fkts nicht exportieren
+
+ Rev 1.33 14 Jul 1997 14:36:10 OS
+ SearchItem nicht mehr exportiert, stattdessen SearchSettings auch in der SourceView
+
+ Rev 1.32 14 Jul 1997 11:45:52 OM
+ Basic: QuoteTableName
+
+ Rev 1.31 07 Jul 1997 09:32:00 OS
+ Collection fuer GlobalDoc
+
+ Rev 1.30 27 Jun 1997 16:22:42 OM
+ DB-Basic: DatabaseDelimiter
+
+ Rev 1.29 27 Jun 1997 16:22:00 OS
+ SID_JUMPTOMARK von der View an die BaseShell
+
+ Rev 1.28 26 Jun 1997 13:30:16 AMA
+ New: AddWord mit Window-Handle + Automatisches Aufnehmen unbekannter Woerter
+
+ Rev 1.27 19 Jun 1997 11:41:48 OM
+ Basic: IsTableReadonly, QuoteIdentifier
+
+ Rev 1.26 17 Jun 1997 15:42:04 MA
+ DrawTxtShell nicht von BaseShell ableiten + Opts
+
+ Rev 1.25 22 Apr 1997 09:52:12 OS
+ GroupCount und GroupObject an der ControlsCollection
+
+ Rev 1.24 19 Apr 1997 09:30:02 OS
+ Save in der SourceView reagiert >normal<
+
+ Rev 1.23 15 Apr 1997 10:32:02 OM
+ Neu: GetDatabaseLimits
+
+ Rev 1.22 14 Apr 1997 16:05:14 OS
+ neu: SearchAttributes und ReplaceAttributes
+
+ Rev 1.21 25 Mar 1997 15:49:44 OS
+ SourceView: Clipboard u. Undo-Redo ueber Slots
+
+ Rev 1.20 21 Mar 1997 11:24:16 OM
+ Neue DB-Basic Befehle
+
+ Rev 1.19 11 Mar 1997 16:06:36 OS
+ MN_TOOLBOX_SWITCH entfernt
+
+ Rev 1.18 11 Mar 1997 07:51:06 OS
+ Set/ResetLocks
+
+ Rev 1.17 23 Feb 1997 22:17:18 OM
+ Feld-Controller an Textshell verschoben
+
+ Rev 1.16 23 Feb 1997 15:20:06 OM
+ UpdateWholeRecord
+
+ Rev 1.15 23 Feb 1997 14:34:24 OM
+ Neuer Datenbankslot
+
+ Rev 1.14 22 Feb 1997 20:29:22 OM
+ FormatColumnValue
+
+ Rev 1.13 21 Feb 1997 18:44:16 OM
+ GetSubType
+
+ Rev 1.12 21 Feb 1997 17:47:06 OS
+ FN_SCROLL_NEXT_PREV
+
+ Rev 1.11 20 Feb 1997 16:52:32 OM
+ Neuer Datenbankslot
+
+ Rev 1.10 19 Feb 1997 16:50:38 OM
+ GetTableColumns
+
+ Rev 1.9 19 Feb 1997 16:10:58 OS
+ Slot fuer Navigationscontroller
+
+ Rev 1.8 17 Feb 1997 17:06:32 OM
+ Neue Datenbankslots
+
+ Rev 1.7 17 Feb 1997 17:04:46 OM
+ Neue Datenbankslots
+
+ Rev 1.6 16 Feb 1997 15:23:40 OM
+ DB-Manager an Ofa verschoben
+
+ Rev 1.5 15 Feb 1997 15:25:00 OM
+ Field-Controller nochmal eingetragen
+
+ Rev 1.4 13 Feb 1997 09:54:08 MA
+ unnoetige und falsche Texte entfernt
+
+ Rev 1.3 06 Feb 1997 14:33:38 OM
+ Popup-Controller fuer Feldbefehle einfuegen
+
+ Rev 1.2 28 Jan 1997 16:36:58 OS
+ DrawSelect nicht im WebWriter
+
+ Rev 1.1 27 Jan 1997 16:37:46 OS
+ Web-Slots aus den allg. interfaces raus
+
+ Rev 1.0 23 Jan 1997 08:14:36 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/basesh.sdi b/sw/sdi/basesh.sdi
new file mode 100644
index 000000000000..d11b1704b27b
--- /dev/null
+++ b/sw/sdi/basesh.sdi
@@ -0,0 +1,111 @@
+/*-----------------------------------------------------------------------
+
+ $Workfile: BASESH.SDI $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/basesh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File SwBaseShell fuer Sw3
+
+ (c) Copyright 1989 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface TextSelection : BaseTextSelection
+[
+ uuid = "F23BA0A8-73A0-11d0-89CA-008029E4B0B1"
+]
+{
+ // hier sollen die Slots eingefuegt werden, die vom StarWriter/WEB
+ // nicht unterstuetzt werden
+
+ FN_TOOL_ANKER_PAGE
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_CONTOUR_DLG
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_CONTOUR_EXEC
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+} // end interface Base
+
+
+shell SwBaseShell
+{
+ import TextSelection[Automation];
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.119 2000/05/10 12:00:09 os
+ Basic API removed
+
+ Revision 1.118 1999/01/19 13:58:20 OS
+ #60964# UniqueId fuer TextSelection - BaseShell kann eigenstaendig auftreten
+
+
+ Rev 1.117 19 Jan 1999 14:58:20 OS
+ #60964# UniqueId fuer TextSelection - BaseShell kann eigenstaendig auftreten
+
+ Rev 1.116 12 Nov 1998 17:29:06 MA
+ #58677# Disable Flag
+
+ Rev 1.115 28 Aug 1997 12:51:52 MBA
+ Neue Interface-Namen
+
+ Rev 1.114 13 Feb 1997 12:45:08 MA
+ unnoetige Texte entfernt
+
+ Rev 1.113 12 Feb 1997 12:09:02 MA
+ Kontur bearbeiten
+
+ Rev 1.112 27 Jan 1997 16:37:42 OS
+ Web-Slots aus den allg. interfaces raus
+
+ Rev 1.111 23 Jan 1997 08:35:44 OS
+ Ableitung von _Base
+
+ Rev 1.110 21 Jan 1997 08:22:16 OS
+ unpassende Slots aus interface Interior herausgeschoben
+
+ Rev 1.109 18 Dec 1996 12:15:28 OM
+ Slot fuer Konturumfluss im Draw-Menue
+
+ Rev 1.108 29 Nov 1996 15:55:32 OS
+ FN_TOOL_ANKER in der BaseShell
+
+ Rev 1.107 28 Nov 1996 18:36:24 OS
+ AccelConfig nachgetragen
+
+ Rev 1.106 14 Nov 1996 08:06:54 SWG
+ _TEMPLATE_ -> _STYLE_
+
+ Rev 1.105 07 Nov 1996 16:17:52 OS
+ Wrap- und Anker-Methoden an die BaseShell
+
+ Rev 1.104 26 Sep 1996 19:14:00 OS
+ Statusmethode fuer FNINSERT_REGION
+
+ Rev 1.103 21 Sep 1996 17:36:22 OS
+ Sot-Umstellung beendet
+
+ Rev 1.102 19 Sep 1996 11:29:48 OM
+ Kommentar geaendert
+
+ Rev 1.101 18 Sep 1996 19:06:10 OS
+ Para/Char/-Style wird wieder exportiert
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/beziersh.sdi b/sw/sdi/beziersh.sdi
new file mode 100644
index 000000000000..af73ae66685a
--- /dev/null
+++ b/sw/sdi/beziersh.sdi
@@ -0,0 +1,155 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: beziersh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/beziersh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File SwBezierShell fuer Sw4
+
+ (c) Copyright 1989 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface TextBezier : TextSelection
+[
+ uuid = "68EF7EA0-6876-11D0-A887-008029E86826" ]
+{
+ SID_DELETE
+ [
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_BACKSPACE
+ [
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_ESCAPE // api:
+ [
+ ExecMethod = Execute;
+ ]
+
+ SID_BEZIER_MOVE
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_INSERT
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_DELETE
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_CUTLINE
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_CONVERT
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_EDGE
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_SMOOTH
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_SYMMTR
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_CLOSE
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_ELIMINATE_POINTS
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+
+shell SwBezierShell: SwBaseShell
+{
+ import TextBezier[Automation];
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.9 1998/11/12 16:28:52 MA
+ #58677# Disable Flag
+
+
+ Rev 1.8 12 Nov 1998 17:28:52 MA
+ #58677# Disable Flag
+
+ Rev 1.7 11 Jul 1998 12:47:56 OM
+ #51754# BezierShell ist von SwBaseShell abgeleitet
+
+ Rev 1.6 08 Sep 1997 12:54:08 MBA
+ Bezier von DrawBase abgeleitet
+
+ Rev 1.5 28 Aug 1997 12:52:06 MBA
+ Neue Interface-Namen
+
+ Rev 1.4 13 Feb 1997 12:44:42 MA
+ unnoetige Texte entfernt
+
+ Rev 1.3 23 Jan 1997 14:33:24 OS
+ Ableitung von _Bezier
+
+ Rev 1.2 16 Jan 1997 16:50:34 OM
+ Escape an Bezier-Shell
+
+ Rev 1.1 13 Jan 1997 16:01:42 OM
+ Bezier-Punkte loeschen
+
+ Rev 1.0 08 Jan 1997 12:40:12 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/docsh.sdi b/sw/sdi/docsh.sdi
new file mode 100644
index 000000000000..dcc79c6f4e49
--- /dev/null
+++ b/sw/sdi/docsh.sdi
@@ -0,0 +1,142 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: docsh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/docsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File DocShell fuer Sw3
+
+ (c) Copyright 1995 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface TextDocument : BaseTextDocument
+[
+ uuid = "0D960120-111C-101D-9757-6E74207A7520"
+]
+{
+ // Slots, die nicht in der WebDocShell gebraucht werden
+
+ FN_OUTLINE_TO_IMPRESS
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ ]
+
+ FN_OUTLINE_TO_CLIPBOARD
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ ]
+ FN_ABSTRACT_STARIMPRESS
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ ]
+ FN_ABSTRACT_NEWDOC
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ ]
+ FN_NEW_GLOBAL_DOC
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ ]
+ FN_NEW_HTML_DOC
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ ]
+
+ SID_BROWSER_MODE
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ ]
+}
+
+shell SwDocShell : SfxObjectShell
+{
+ import TextDocument[Automation];
+}
+
+shell SwGlosDocShell : SwDocShell
+{
+ import TextDocument[Automation];
+
+ SID_SAVEDOC // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.87 1999/03/23 11:16:28 MA
+ #63806# ConfigName und HelpText entfernt
+
+
+ Rev 1.86 23 Mar 1999 12:16:28 MA
+ #63806# ConfigName und HelpText entfernt
+
+ Rev 1.85 24 Apr 1998 15:03:12 OM
+ Seitenvorschau auch im Html-Mode
+
+ Rev 1.84 17 Mar 1998 15:41:28 JP
+ neu: NewHTMLDoc - aequivalent zum NewGlobalDoc
+
+ Rev 1.83 28 Aug 1997 12:50:12 MBA
+ Neue Interface-Namen
+
+ Rev 1.82 25 Jul 1997 11:28:26 AMA
+ Opt: GroupId und ConfigName aufgeraeumt
+
+ Rev 1.81 27 Jun 1997 13:38:06 OM
+ Globaldokument erzeugen
+
+ Rev 1.80 16 Jun 1997 13:08:16 MA
+ #40731# falsches Exportverbot entfernt
+
+ Rev 1.79 09 Jun 1997 14:27:08 MA
+ chg: Browse-Flag nur noch am Doc
+
+ Rev 1.78 26 Mar 1997 11:32:04 OS
+ GlosDocShell muss Document importieren
+
+ Rev 1.77 22 Feb 1997 15:14:04 OS
+ Abstract erzeugen
+
+ Rev 1.76 16 Feb 1997 15:19:52 MA
+ new: OutlineToClipboard und OutlineToImpress
+
+ Rev 1.75 13 Feb 1997 12:45:04 MA
+ unnoetige Texte entfernt
+
+ Rev 1.74 23 Jan 1997 08:36:26 OS
+ Ableitung von __Document
+
+ Rev 1.73 10 Dec 1996 16:51:42 OS
+ neu: SID_GET_COLORTABLE
+
+ Rev 1.72 14 Nov 1996 19:11:10 OS
+ SID_TEMPLATE_LOAD wieder aktiviert
+
+ Rev 1.71 14 Nov 1996 08:06:48 SWG
+ _TEMPLATE_ -> _STYLE_
+
+ Rev 1.70 08 Oct 1996 16:45:04 OS
+ neu: Sourceview
+
+ Rev 1.69 01 Oct 1996 13:03:14 AMA
+ Fix: SID_TEMPLATE_DELETE wieder aktiviert.
+
+ Rev 1.68 21 Sep 1996 17:35:38 OS
+ Sot-Umstellung beendet
+
+ Rev 1.67 18 Sep 1996 17:36:56 OS
+ LoadStyles wieder vollstaendig
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/drawsh.sdi b/sw/sdi/drawsh.sdi
new file mode 100644
index 000000000000..b9949987eab6
--- /dev/null
+++ b/sw/sdi/drawsh.sdi
@@ -0,0 +1,317 @@
+interface TextDraw : TextDrawBase
+[
+ uuid = "626DE480-111A-101D-9757-6E74207A7520"
+]
+{
+ SID_ATTR_LINEEND_STYLE
+ [
+ SlotType = SfxBoolItem ;
+ ExecMethod = ExecDrawAttrArgs ;
+ StateMethod = DisableState ;
+ Export = FALSE;
+ ]
+
+ SID_ATTR_LINE_STYLE
+ [
+ Export = FALSE;
+ ExecMethod = ExecDrawAttrArgs ;
+ StateMethod = GetDrawAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_LINE_DASH
+ [
+ ExecMethod = ExecDrawAttrArgs ;
+ StateMethod = GetDrawAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_LINE_WIDTH
+ [
+ ExecMethod = ExecDrawAttrArgs ;
+ StateMethod = GetDrawAttrState ;
+ Export = FALSE;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_LINE_COLOR
+ [
+ Export = FALSE;
+ ExecMethod = ExecDrawAttrArgs ;
+ StateMethod = GetDrawAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_FILL_STYLE
+ [
+ Export = FALSE;
+ ExecMethod = ExecDrawAttrArgs ;
+ StateMethod = GetDrawAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_FILL_COLOR
+ [
+ Export = FALSE;
+ ExecMethod = ExecDrawAttrArgs ;
+ StateMethod = GetDrawAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_FILL_GRADIENT
+ [
+ Export = FALSE;
+ ExecMethod = ExecDrawAttrArgs ;
+ StateMethod = GetDrawAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_FILL_HATCH
+ [
+ Export = FALSE;
+ ExecMethod = ExecDrawAttrArgs ;
+ StateMethod = GetDrawAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_FILL_BITMAP
+ [
+ Export = FALSE;
+ ExecMethod = ExecDrawAttrArgs ;
+ StateMethod = GetDrawAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTRIBUTES_LINE
+ [
+ ExecMethod = ExecDrawDlg ;
+ StateMethod = DisableState ;
+ ]
+
+ SID_ATTRIBUTES_AREA
+ [
+ ExecMethod = ExecDrawDlg ;
+ StateMethod = DisableState ;
+ ]
+
+ FN_DRAWTEXT_ATTR_DLG
+ [
+ ExecMethod = ExecDrawDlg ;
+ StateMethod = DisableState ;
+ ]
+
+ FN_TOOL_HMIRROR
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TOOL_VMIRROR
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_OBJECT_ROTATE
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_BEZIER_EDIT
+ [
+ Export = FALSE;
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FONTWORK
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_OBJECT_HELL
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_OBJECT_HEAVEN
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_TOOL_HIERARCHIE
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+
+shell SwDrawShell : SwDrawBaseShell
+{
+ import TextDraw [Automation];
+
+ // no export
+
+ SID_FORMTEXT_STYLE
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+
+ SID_FORMTEXT_ADJUST
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+
+ SID_FORMTEXT_DISTANCE
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+
+ SID_FORMTEXT_START
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_MIRROR
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+
+ SID_FORMTEXT_HIDEFORM
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_OUTLINE
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_SHDWXVAL
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_SHADOW
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_SHDWCOLOR
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_SHDWYVAL
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_STDFORM
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.77 1999/05/07 12:57:58 JP
+ Bug #66007#: LineEndStyle wieder mit einer Execute-Methode
+
+
+ Rev 1.76 07 May 1999 14:57:58 JP
+ Bug #66007#: LineEndStyle wieder mit einer Execute-Methode
+
+ Rev 1.75 12 Nov 1998 17:28:38 MA
+ #58677# Disable Flag
+
+ Rev 1.74 10 Jun 1998 11:20:44 OM
+ Hell/Heaven nicht in FormShell
+
+ Rev 1.73 28 Aug 1997 12:39:08 MBA
+ Neue Interface-Namen
+
+ Rev 1.72 18 Jul 1997 09:37:22 OM
+ Fkts nicht exportieren
+
+ Rev 1.71 16 Jul 1997 16:47:26 OM
+ Einige Basic-Fkts nicht exportieren
+
+ Rev 1.70 13 Feb 1997 12:44:48 MA
+ unnoetige Texte entfernt
+
+ Rev 1.69 23 Jan 1997 10:49:22 OM
+ Neue Shells: Control- und DrawBaseShell
+
+ Rev 1.68 22 Jan 1997 11:18:24 OM
+ Neue Shells: DrawBaseShell und DrawControlShell
+
+ Rev 1.67 13 Jan 1997 16:01:42 OM
+ Bezier-Punkte loeschen
+
+ Rev 1.66 08 Jan 1997 12:40:30 OM
+ Slots in Bezier-Shell verschoben
+
+ Rev 1.65 13 Dec 1996 12:24:30 OM
+ Slots fuer Bezier-Fkts
+
+ Rev 1.64 11 Dec 1996 12:03:46 OM
+ Bezier-Controller
+
+ Rev 1.63 29 Nov 1996 15:55:34 OS
+ FN_TOOL_ANKER in der BaseShell
+
+ Rev 1.62 18 Nov 1996 13:39:20 MA
+ chg: State fuer align
+
+ Rev 1.61 14 Nov 1996 08:06:50 SWG
+ _TEMPLATE_ -> _STYLE_
+
+ Rev 1.60 07 Nov 1996 16:17:22 OS
+ Anker-Methoden an die BaseShell
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/sdi/drwbassh.sdi b/sw/sdi/drwbassh.sdi
new file mode 100644
index 000000000000..433db34f4b06
--- /dev/null
+++ b/sw/sdi/drwbassh.sdi
@@ -0,0 +1,60 @@
+/*-----------------------------------------------------------------------
+
+ $Workfile: drwbassh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/drwbassh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File SwDrawBaseShell
+
+ (c) Copyright 1989 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface TextDrawBase : BaseTextDrawBase
+[
+ Automation = FALSE;
+]
+{
+ import TextSelection;
+}
+
+shell SwDrawBaseShell: SwBaseShell
+{
+ import TextDrawBase[Automation];
+
+ SID_OBJECT_ALIGN
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.6 1998/11/12 16:28:34 MA
+ #58677# Disable Flag
+
+
+ Rev 1.5 12 Nov 1998 17:28:34 MA
+ #58677# Disable Flag
+
+ Rev 1.4 28 Aug 1997 12:56:24 MBA
+ Neue Interface-Namen
+
+ Rev 1.3 13 Feb 1997 12:44:46 MA
+ unnoetige Texte entfernt
+
+ Rev 1.2 23 Jan 1997 14:39:02 OS
+ Ableitung von _DrawBase
+
+ Rev 1.1 23 Jan 1997 10:49:24 OM
+ Neue Shells: Control- und DrawBaseShell
+
+ Rev 1.0 22 Jan 1997 11:18:06 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/sdi/drwtxtsh.sdi b/sw/sdi/drwtxtsh.sdi
new file mode 100644
index 000000000000..523b30be88e2
--- /dev/null
+++ b/sw/sdi/drwtxtsh.sdi
@@ -0,0 +1,452 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: drwtxtsh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/drwtxtsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File DrawTextshell fuer Sw3
+
+ (c) Copyright 1989 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface TextDrawText : Selection
+[
+ uuid = "CA0C4280-293D-11D1-89CB-008029E4B0B1"
+]
+{
+ SID_SELECTALL // api:
+ [
+ ExecMethod = ExecDraw ;
+ StateMethod = NoState ;
+ ]
+
+ SfxVoidItem Cut SID_CUT ( ) // api:
+ [
+ ExecMethod = ExecClpbrd ;
+ StateMethod = StateClpbrd ;
+ Volatile ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_COPY // api:
+ [
+ ExecMethod = ExecClpbrd ;
+ StateMethod = StateClpbrd ;
+ Volatile ;
+ ]
+
+ SID_PASTE // api:
+ [
+ ExecMethod = ExecClpbrd ;
+ StateMethod = StateClpbrd ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_PASTESPECIAL // api:
+ [
+ StateMethod = StateClpbrd ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_ESCAPE // api:
+ [
+ ExecMethod = ExecDraw ;
+ ]
+
+ SID_UNDO // api:
+ [
+ ExecMethod = ExecUndo ;
+ StateMethod = StateUndo ;
+
+ ToolBoxConfig , MenuConfig , AccelConfig , PlugComm ;
+ ]
+
+ SID_REDO // api:
+ [
+ ExecMethod = ExecUndo ;
+ StateMethod = StateUndo ;
+ ]
+
+ SID_REPEAT // api:
+ [
+ ExecMethod = ExecUndo ;
+ StateMethod = StateUndo ;
+ ]
+
+ FN_FORMAT_RESET // api:
+ [
+ ExecMethod = ExecDraw ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_INSERT_SYMBOL // api:
+ [
+ ExecMethod = ExecDraw ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+
+ SID_ATTR_CHAR_WEIGHT // api:
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetDrawTxtCtrlState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_CHAR_POSTURE // api:
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetDrawTxtCtrlState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_CHAR_UNDERLINE // api:
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetDrawTxtCtrlState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_CHAR_CONTOUR
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetDrawTxtCtrlState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_CHAR_SHADOWED
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetDrawTxtCtrlState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_CHAR_STRIKEOUT
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetDrawTxtCtrlState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_PARA_ADJUST_LEFT // api:
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_PARA_ADJUST_CENTER // api:
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_PARA_ADJUST_RIGHT // api:
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_PARA_ADJUST_BLOCK // api:
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_PARA_LINESPACE_10 // api:
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_PARA_LINESPACE_15 // api:
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_PARA_LINESPACE_20 // api:
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_CHAR_DLG // api:
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_PARA_DLG // api:
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_SET_SUPER_SCRIPT
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_SET_SUB_SCRIPT
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FONTWORK // api:
+ [
+ ExecMethod = ExecFontWork ;
+ StateMethod = StateFontWork ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+
+ SID_FORMTEXT_STYLE // api:
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_ADJUST // api:
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_DISTANCE // api:
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_START // api:
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+
+ SID_FORMTEXT_MIRROR // api:
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+
+ SID_FORMTEXT_HIDEFORM // api:
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_OUTLINE // api:
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_SHADOW // api:
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_SHDWCOLOR // api:
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_SHDWXVAL // api:
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_SHDWYVAL // api:
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_FORMTEXT_STDFORM // api:
+ [
+ ExecMethod = ExecFormText ;
+ StateMethod = GetFormTextState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_THESAURUS_DLG // api:
+ [
+ ExecMethod = ExecDrawLingu ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_SPELLING_DLG // api:
+ [
+ ExecMethod = ExecDrawLingu ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_DRAWTEXT_ATTR_DLG
+ [
+ ExecMethod = ExecDraw ;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_STYLE_CATALOG // ole(no) api(play/rec)
+ [
+ StateMethod = StateDisableItems ;
+ ]
+
+ SID_AUTOSPELL_CHECK
+ [
+ ExecMethod = Execute;
+ StateMethod = GetDrawTxtCtrlState
+ ]
+
+ SID_AUTOSPELL_MARKOFF
+ [
+ ExecMethod = Execute;
+ StateMethod = GetDrawTxtCtrlState
+ ]
+
+ SID_SEARCH_DLG
+ [
+ StateMethod = StateDisableItems
+ ]
+
+ SID_HYPERLINK_SETLINK // status()
+ [
+ ExecMethod = Execute ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_HYPERLINK_GETLINK // status()
+ [
+ StateMethod = StateInsert ;
+ ]
+}
+
+interface TextDrawFont : Object
+[ uuid = "074C35E0-11EF-101D-9757-6E74207A7520"; ]
+{
+ SID_ATTR_CHAR_FONT // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetDrawTxtCtrlState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_CHAR_FONTHEIGHT // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetDrawTxtCtrlState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_ATTR_CHAR_COLOR // api:
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetDrawTxtCtrlState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+
+}
+
+
+
+shell SwDrawTextShell
+{
+ import TextDrawText[Automation];
+ import TextDrawFont ".DrawFont";
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.72 2000/05/26 07:06:16 os
+ old SW Basic API Slots removed
+
+ Revision 1.71 2000/05/10 12:00:09 os
+ Basic API removed
+
+ Revision 1.70 2000/01/21 13:33:54 tl
+ #70503# GetState method added for FN_THESAURUS_DLG
+
+ Revision 1.69 1999/03/23 11:16:26 MA
+ #63806# ConfigName und HelpText entfernt
+
+
+ Rev 1.68 23 Mar 1999 12:16:26 MA
+ #63806# ConfigName und HelpText entfernt
+
+ Rev 1.67 12 Nov 1998 17:28:36 MA
+ #58677# Disable Flag
+
+ Rev 1.66 17 Sep 1997 13:09:54 OM
+ Editierbare Links in DrawText-Objekten
+
+ Rev 1.65 09 Sep 1997 18:04:54 MBA
+ DrawTextShell war nicht exportiert
+
+ Rev 1.64 28 Aug 1997 12:53:42 MBA
+ Neue Interface-Namen
+
+ Rev 1.63 19 Jun 1997 13:54:18 OS
+ doppelten DrawText vermieden
+
+ Rev 1.62 17 Jun 1997 15:42:06 MA
+ DrawTxtShell nicht von BaseShell ableiten + Opts
+
+ Rev 1.61 13 Feb 1997 12:44:48 MA
+ unnoetige Texte entfernt
+
+ Rev 1.60 23 Jan 1997 14:32:28 OS
+ Ableitung von _DrawText
+
+ Rev 1.59 13 Dec 1996 16:37:54 OS
+ Autospell fuer aktives DrawTextObject
+
+ Rev 1.58 22 Nov 1996 14:51:40 OS
+ FN_SET_JUSTIFY_PARA -> SID_ATTR_PARA_ADJUST_BLOCK
+
+ Rev 1.57 14 Nov 1996 08:06:52 SWG
+ _TEMPLATE_ -> _STYLE_
+
+ Rev 1.56 21 Sep 1996 17:36:30 OS
+ Sot-Umstellung beendet
+
+ Rev 1.55 16 Sep 1996 10:25:12 MBA
+ FontDialog RecordPerItem
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/formsh.sdi b/sw/sdi/formsh.sdi
new file mode 100644
index 000000000000..daab58bd9c06
--- /dev/null
+++ b/sw/sdi/formsh.sdi
@@ -0,0 +1,25 @@
+interface TextDrawForm: BaseTextDrawForm
+[
+ uuid = "1D396B40-B8CC-11d1-AB80-006097B418C2"
+]
+{
+ import TextDrawBase;
+}
+
+shell SwDrawFormShell : SwDrawBaseShell
+{
+ import TextDrawForm[Automation];
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.1 1998/03/11 16:14:00 OM
+ DB-FormShell
+
+
+ Rev 1.0 11 Mar 1998 17:14:00 OM
+ DB-FormShell
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/frmsh.sdi b/sw/sdi/frmsh.sdi
new file mode 100644
index 000000000000..6ad8aec01c05
--- /dev/null
+++ b/sw/sdi/frmsh.sdi
@@ -0,0 +1,83 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: frmsh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/frmsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File FrameShell fuer Sw3
+
+ (c) Copyright 1995 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface TextFrame : BaseTextFrame
+[
+ uuid = "564CBAA0-111A-101D-9757-6E74207A7520"
+]
+{
+ import TextSelection;
+}
+
+ //=========================================================================
+
+shell SwFrameShell : SwBaseShell
+{
+ import TextFrame[Automation];
+
+ FN_FRAME_CHAIN
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_FRAME_UNCHAIN
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.86 1998/11/12 16:29:08 MA
+ #58677# Disable Flag
+
+
+ Rev 1.85 12 Nov 1998 17:29:08 MA
+ #58677# Disable Flag
+
+ Rev 1.84 05 Nov 1997 11:49:44 MA
+ chain
+
+ Rev 1.83 28 Aug 1997 12:50:20 MBA
+ Neue Interface-Namen
+
+ Rev 1.82 13 Feb 1997 12:45:02 MA
+ unnoetige Texte entfernt
+
+ Rev 1.81 23 Jan 1997 14:30:30 OS
+ Ableitung von _Frame
+
+ Rev 1.80 07 Nov 1996 16:17:06 OS
+ Wrap-Methoden an die Baseshell
+
+ Rev 1.79 21 Sep 1996 17:35:42 OS
+ Sot-Umstellung beendet
+
+ Rev 1.78 18 Sep 1996 10:35:46 OM
+ Umlauf: Nur Anker
+
+ Rev 1.77 10 Sep 1996 16:39:16 OS
+ Slotvereinheitlichung zu, 1.
+
+ Rev 1.76 20 Aug 1996 17:27:28 HJS
+ eu...
+
+ Rev 1.75 17 Jul 1996 07:31:30 OS
+ ReadOnlyDoc - Flag
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/grfsh.sdi b/sw/sdi/grfsh.sdi
new file mode 100644
index 000000000000..3662d6d8fdc0
--- /dev/null
+++ b/sw/sdi/grfsh.sdi
@@ -0,0 +1,64 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: GRFSH.IDL $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/grfsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File GrafShell fuer Sw3
+
+ (c) Copyright 1989 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+
+interface TextGraphic : BaseTextGraphic
+[
+ uuid = "1885FE00-111C-101D-9757-6E74207A7520"
+]
+{
+}
+
+ //=========================================================================
+
+shell SwGrfShell : SwBaseShell
+
+{
+ import TextGraphic[Automation];
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.45 2000/08/08 13:42:51 os
+ #77423# separate graphic shell
+
+ Revision 1.44 1997/08/28 10:55:24 MBA
+ Neue Interface-Namen
+
+
+ Rev 1.43 28 Aug 1997 12:55:24 MBA
+ Neue Interface-Namen
+
+ Rev 1.42 13 Feb 1997 12:45:04 MA
+ unnoetige Texte entfernt
+
+ Rev 1.41 31 Jan 1997 13:25:22 OS
+ von _Graphic abgeleitet
+
+ Rev 1.40 01 Oct 1996 16:52:26 OM
+ Hyperlinks editieren
+
+ Rev 1.39 21 Sep 1996 17:35:40 OS
+ Sot-Umstellung beendet
+
+ Rev 1.38 20 Aug 1996 17:27:00 HJS
+ eu...
+
+ Rev 1.37 17 Jul 1996 07:31:30 OS
+ ReadOnlyDoc - Flag
+
+ Rev 1.36 05 Jul 1996 13:38:50 OS
+ neue Properities: GrfLinkName, GrfLinkFilterName
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/listsh.sdi b/sw/sdi/listsh.sdi
new file mode 100644
index 000000000000..a1cea8fccfb0
--- /dev/null
+++ b/sw/sdi/listsh.sdi
@@ -0,0 +1,60 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: listSH.IDL $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/listsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File SwBaseShell fuer Sw3
+
+ (c) Copyright 1989 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface TextList : BaseTextList
+[
+ uuid = "509E9100-111A-101D-9757-6E74207A7520"
+]
+{
+ import TextSelection;
+}
+
+ //=========================================================================
+
+shell SwListShell : SwBaseShell
+{
+ import TextList[Automation];
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.31 1997/08/28 10:51:34 MBA
+ Neue Interface-Namen
+
+
+ Rev 1.30 28 Aug 1997 12:51:34 MBA
+ Neue Interface-Namen
+
+ Rev 1.29 13 Feb 1997 12:44:52 MA
+ unnoetige Texte entfernt
+
+ Rev 1.28 23 Jan 1997 14:31:54 OS
+ Ableitung von _List
+
+ Rev 1.27 21 Sep 1996 17:36:34 OS
+ Sot-Umstellung beendet
+
+ Rev 1.26 20 Aug 1996 17:27:42 HJS
+ eu...
+
+ Rev 1.25 17 Jul 1996 07:31:26 OS
+ ReadOnlyDoc - Flag
+
+ Rev 1.24 13 May 1996 11:40:30 OS
+ Ableitung List : Base
+
+ Rev 1.23 28 Mar 1996 14:20:32 OS
+ neu: NumberOrNoNumber
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/makefile.mk b/sw/sdi/makefile.mk
new file mode 100644
index 000000000000..4506f71cb6b3
--- /dev/null
+++ b/sw/sdi/makefile.mk
@@ -0,0 +1,178 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:30 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+# wx mktyplib nur unter Windows aufrufbar
+# VMB.386 und WXSRVR.EXE muessen geladen sein! (n:\mscwini\bin)
+
+PRJ=..
+
+PRJNAME=sw
+TARGET=swslots
+
+# --- Settings -----------------------------------------------------
+
+SVSDIINC=$(PRJ)$/source$/ui$/inc
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+
+SDINAME=$(TARGET)
+SDIEXPORT=swnew
+SIDHRCNAME=swslots.hrc
+
+# --- Files --------------------------------------------------------
+
+SVSDIDEPEND= \
+ $(SOLARINCXDIR)$/ofa.ilb \
+ switems.sdi\
+ swnew.sdi\
+ swriter.sdi\
+ _docsh.sdi\
+ docsh.sdi\
+ wdocsh.sdi\
+ wrtapp.sdi\
+ _basesh.sdi\
+ basesh.sdi\
+ _textsh.sdi\
+ textsh.sdi\
+ wtextsh.sdi\
+ _drwbase.sdi\
+ drwbassh.sdi\
+ wdrwbase.sdi\
+ formsh.sdi\
+ _formsh.sdi\
+ wformsh.sdi\
+ drawsh.sdi\
+ drwtxtsh.sdi\
+ _listsh.sdi\
+ listsh.sdi\
+ wlistsh.sdi\
+ _frmsh.sdi\
+ frmsh.sdi\
+ wfrmsh.sdi\
+ _tabsh.sdi\
+ tabsh.sdi\
+ wtabsh.sdi\
+ _grfsh.sdi\
+ grfsh.sdi\
+ wgrfsh.sdi\
+ _olesh.sdi\
+ olesh.sdi\
+ wolesh.sdi\
+ beziersh.sdi\
+ _viewsh.sdi\
+ viewsh.sdi\
+ wviewsh.sdi\
+ swslots.hrc \
+ $(INC)$/globals.hrc \
+ $(INC)$/cmdid.h
+
+SRCFILES= \
+ swslots.src
+
+# --- Targets -------------------------------------------------------
+
+.IF "$(depend)" == ""
+
+TLBLIST+=\
+ $(BIN)$/$(SDINAME).tlb
+
+ALL: \
+ ALLTAR \
+ $(TLBLIST)
+
+.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 /a 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
+
+.IF "$(GUIBASE)$(VCL)"=="WIN"
+$(BIN)$/$(SDI2NAME).tlb: \
+ $(MISCX)$/$(SDI2NAME).odl
+ rscpp -I.;$(SVSDIINC);$(INC) -DSOLAR_VERSION=$(solar_version) $(MISC)$/$(SDI2NAME).odl $(MISC)$/$(SDI2NAME).odx
+.IF "$(GUI)"=="WIN"
+ wx mktyplib /nocpp /o $(MISC)$/$(SDI2NAME).err /tlb $(BIN)$/$(SDI2NAME).tlb $(MISC)$/$(SDI2NAME).odx
+.ELSE
+ mktyplib /win32 /nocpp /o $(MISC)$/$(SDI2NAME).err /tlb $(BIN)$/$(SDI2NAME).tlb $(MISC)$/$(SDI2NAME).odx
+.ENDIF
+ +type $(MISC)$/$(SDI2NAME).err
+.ELSE
+$(BIN)$/$(SDI2NAME).tlb:
+ @echo nix
+.ENDIF
+
diff --git a/sw/sdi/olesh.sdi b/sw/sdi/olesh.sdi
new file mode 100644
index 000000000000..a1d50876ba61
--- /dev/null
+++ b/sw/sdi/olesh.sdi
@@ -0,0 +1,76 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: OLESH.IDL $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/olesh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File SwBaseShell fuer Sw3
+
+ (c) Copyright 1989 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface TextOLEObject : BaseTextOLEObject
+[
+ uuid = "B156B300-39FC-101D-9757-C667E8298000"
+]
+{
+ import TextFrame;
+}
+
+shell SwOleShell: SwFrameShell
+{
+ import TextOLEObject[Automation];
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.16 1997/09/10 06:56:54 OS
+ OLE importiert Frame
+
+
+ Rev 1.15 10 Sep 1997 08:56:54 OS
+ OLE importiert Frame
+
+ Rev 1.14 28 Aug 1997 12:53:24 MBA
+ Neue Interface-Namen
+
+ Rev 1.13 13 Feb 1997 12:44:42 MA
+ unnoetige Texte entfernt
+
+ Rev 1.12 31 Jan 1997 13:25:46 OS
+ von _OleObject abgeleitet
+
+ Rev 1.11 21 Sep 1996 17:35:42 OS
+ Sot-Umstellung beendet
+
+ Rev 1.10 17 Jul 1996 07:31:32 OS
+ ReadOnlyDoc - Flag
+
+ Rev 1.9 08 Jul 1996 16:59:06 HJS
+ uebersetzung
+
+ Rev 1.8 22 Mar 1996 16:01:16 OS
+ status fuer neue Funktionen nachgetragen
+
+ Rev 1.7 08 Feb 1996 16:26:20 OM
+ OLE-Objekte wieder vertikal zentrieren
+
+ Rev 1.6 06 Feb 1996 15:16:06 OS
+ neu: Activate/Deactivate fuer Objekte
+
+ Rev 1.5 26 Jan 1996 10:56:30 OS
+ neu: Interface Object, um Ole-Object herauszureichen
+
+ Rev 1.4 28 Nov 1995 15:39:06 OS
+ dummy slot
+
+ Rev 1.3 11 Oct 1995 12:26:58 MA
+ Bestimme -> Setze
+
+ Rev 1.2 28 Aug 1995 15:43:36 MA
+ Renovierung: IDL, Shells, Textshell-Doktrin aufgegeben
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/swinterf.c b/sw/sdi/swinterf.c
new file mode 100644
index 000000000000..36010f080099
--- /dev/null
+++ b/sw/sdi/swinterf.c
@@ -0,0 +1,283 @@
+/*************************************************************************
+ *
+ * $RCSfile: swinterf.c,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:30 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 <stdio.h>
+
+#include <svinterf.h>
+#include <cmdid.h>
+
+static char pEmpty[] = "";
+
+extern void *pSvClient;
+
+/* WRITER */
+short SwInsertDocument (void *pHandle,
+ const char *pFileName,
+ const char *pFilter)
+{
+ return 0;
+}
+
+/**************************************************************************/
+
+/* WRITER */
+short SwDeleteTableColumns (void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_TABLE_DELETE_COL | 0x10000,
+ pHandle,0,pEmpty);
+ return 0;
+}
+
+/* WRITER */
+short SwDeleteTableRows (void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_TABLE_DELETE_ROW | 0x10000,
+ pHandle,0,pEmpty);
+ return 0;
+}
+
+/* WRITER */
+short SwGotoStartOfTable (void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_START_TABLE | 0x10000,
+ pHandle,0,pEmpty);
+ return 0;
+}
+
+/* WRITER */
+short SwGotoEndOfTable (void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_END_TABLE | 0x10000,
+ pHandle,0,pEmpty);
+ return 0;
+}
+
+/* WRITER */
+short SwGotoNextTable (void *pHandle)
+{
+ return 0;
+}
+
+/* WRITER */
+short SwGotoPrevTable (void *pHandle)
+{
+ return 0;
+}
+
+/* WRITER */
+short SwSelectTableRow (void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_TABLE_SELECT_ROW | 0x10000,
+ pHandle,0,pEmpty);
+ return 0;
+}
+
+/* WRITER */
+short SwSelectTableColumn (void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_TABLE_SELECT_COL | 0x10000,
+ pHandle,0,pEmpty);
+ return 0;
+}
+
+/* WRITER */
+short SwTableSelect (void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_TABLE_SELECT_ALL | 0x10000,
+ pHandle,0,pEmpty);
+ return 0;
+}
+
+/* WRITER */
+short SwInsertTable (void *pHandle, const char *pName,
+ unsigned short nRow, unsigned short nColumn)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_INSERT_TABLE | 0x10000,
+ pHandle,0,"hh",nRow,nColumn);
+ return 0;
+
+}
+
+/**************************************************************************/
+
+/* WRITER */
+short SwCharLeft(void *pHandle, unsigned short nCount, unsigned short bSelect)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_CHAR_LEFT | 0x10000,
+ pHandle,0,"hb",nCount,bSelect);
+ return 0;
+}
+
+/* WRITER */
+short SwCharRight(void *pHandle, unsigned short nCount, unsigned short bSelect)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_CHAR_RIGHT | 0x10000,
+ pHandle,0,"hb",nCount,bSelect);
+ return 0;
+}
+
+/* WRITER */
+short SwLineUp(void *pHandle, unsigned short nCount, unsigned short bSelect)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_LINE_UP | 0x10000,
+ pHandle,0,"hb",nCount,bSelect);
+ return 0;
+}
+
+/* WRITER */
+short SwLineDown(void *pHandle, unsigned short nCount, unsigned short bSelect)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_LINE_DOWN | 0x10000,
+ pHandle,0,"hb",nCount,bSelect);
+ return 0;
+}
+
+/**************************************************************************/
+
+/* WRITER */
+const char *SwGetSelectedText(void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallStringFunction(SvIPCGetClient(),FN_GET_SELECTED_TEXT,
+ pHandle,0,pEmpty);
+ return NULL;
+}
+
+/* WRITER */
+short SwInsertString(void *pHandle,const char *pString)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_INSERT_STRING | 0x10000,
+ pHandle,0,"s",pString);
+ return 0;
+}
+
+/* WRITER */
+extern short SwInsertLineBreak(void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_INSERT_LINEBREAK | 0x10000,
+ pHandle,0,pEmpty);
+ return 0;
+}
+
+/**************************************************************************/
+
+/* WRITER */
+short SwDelLeft (void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_BACKSPACE | 0x10000,
+ pHandle,0,pEmpty);
+ return 0;
+}
+
+/* WRITER */
+short SwDelRight (void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_DELETE | 0x10000,
+ pHandle,0,pEmpty);
+ return 0;
+}
+
+/* WRITER */
+short SwDelLine (void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_DELETE_WHOLE_LINE | 0x10000,
+ pHandle,0,pEmpty);
+ return 0;
+}
+
+/**************************************************************************/
+
+/* WRITER */
+short SwCharDlg(void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_FORMAT_CHAR_DLG | 0x10000,
+ pHandle,0,pEmpty);
+ return 0;
+}
+
+/* WRITER */
+short SwParagrDlg(void *pHandle)
+{
+ if (SvIPCIsConnected())
+ return pIPCCallShortFunction(SvIPCGetClient(),FN_FORMAT_PARA_DLG | 0x10000,
+ pHandle,0,pEmpty);
+ return 0;
+}
+
+
diff --git a/sw/sdi/switems.sdi b/sw/sdi/switems.sdi
new file mode 100644
index 000000000000..976e0d9ee95a
--- /dev/null
+++ b/sw/sdi/switems.sdi
@@ -0,0 +1,205 @@
+enum SwHoriOrient
+{
+ HORI_NONE,
+ HORI_RIGHT,
+ HORI_CENTER,
+ HORI_LEFT,
+ HORI_INSIDE,
+ HORI_OUTSIDE,
+ HORI_FULL
+};
+enum SwRelationOrient
+{
+ FRAME,
+ PRTAREA
+};
+
+enum SwVertOrient
+{
+ VERT_NONE,
+ VERT_TOP,
+ VERT_CENTER,
+ VERT_BOTTOM,
+ VERT_LINE_TOP,
+ VERT_LINE_CENTER,
+ VERT_LINE_BOTTOM
+};
+
+enum SwSurround
+{
+ SURROUND_BEGIN,
+ SURROUND_THROUGHT,
+ SURROUND_PARALLEL,
+ SURROUND_DYNAMIC,
+ SURROUND_LEFT,
+ SURROUND_RIGHT,
+ SURROUND_END
+};
+
+struct FmtHoriOrient
+{
+ INT32 XPos MID_1;
+ SwHoriOrient HorzOrientation MID_2;
+ SwRelationOrient HorzRelation MID_3;
+};
+
+item FmtHoriOrient SwFmtHoriOrient;
+
+struct FmtVertOrient
+{
+ INT32 YPos MID_1;
+ SwVertOrient VertOrientation MID_2;
+ SwRelationOrient VertRelation MID_3;
+};
+item FmtVertOrient SwFmtVertOrient;
+
+struct FmtFrmSize
+{
+ UINT32 Width MID_WIDTH;
+ UINT32 Height MID_HEIGHT;
+ BYTE WidthPercent MID_1;
+ BYTE HeightPercent MID_2;
+};
+item FmtFrmSize SwFmtFrmSize;
+
+struct Drop
+{
+ BYTE Lines MID_LINES;
+ BYTE Count MID_CHARS;
+ UINT16 Distance MID_DIST;
+};
+item Drop SwFmtDrop;
+
+struct SwDocDisplay
+{
+ BOOL ParagraphEnd MID_1;
+ BOOL Tab MID_2;
+ BOOL Space MID_3;
+ BOOL NonbreakingSpace MID_4;
+ BOOL SoftHyphen MID_5;
+ BOOL HiddenText MID_6;
+ BOOL ManualBreak MID_7;
+ BOOL IndexEntry MID_8;
+ BOOL FootnoteBackground MID_9;
+ BOOL Field MID_A;
+ BOOL Table MID_B;
+ BOOL Graphic MID_C;
+ BOOL Drawing MID_D;
+ BOOL FieldName MID_E;
+ BOOL Notes MID_F;
+ BOOL ShowHiddenPara MID_10;
+}
+
+
+item SwDocDisplay SwDocDisplayItem;
+
+struct SwElem
+{
+ BOOL HorzScrollbar MID_1;
+ BOOL VertScrollbar MID_2;
+ BOOL HorzRuler MID_3;
+ BOOL VertRuler MID_4;
+ BOOL TableBounds MID_5;
+ BOOL Crosshair MID_6;
+ BOOL Bounds MID_7;
+ BOOL StatusLine MID_8;
+ BOOL SolidHandles MID_9;
+ BOOL SmoothScroll MID_A;
+}
+
+item SwElem SwElemItem;
+
+struct SwPrintOpt
+{
+ BOOL PrintGraphic MID_1;
+ BOOL PrintTable MID_2;
+ BOOL PrintDrawing MID_3;
+ BOOL PrintLeftPage MID_4;
+ BOOL PrintRightPage MID_5;
+ BOOL PrintControl MID_6;
+ BOOL PrintReverse MID_7;
+ BOOL PaperFromSetup MID_8;
+ String FaxName MID_9;
+ UINT16 PrintAnnotations MID_A;
+ BOOL PrintProspect MID_B;
+ BOOL PrintBackground MID_C;
+ BOOL PrintBlackFont MID_D;
+
+}
+item SwPrintOpt SwAddPrinterItem;
+
+struct SwPageFtnInfo
+{
+
+ INT32 FtnHeight MID_1;
+ INT32 FtnPenWidth MID_2;
+ INT32 FtnTopDistance MID_3;
+ INT32 FtnBottomDistance MID_4;
+ INT16 FtnWidth MID_5; // in Prozent
+ INT16 FtnAdjust MID_6;
+ INT16 FtnPenStyle MID_7;
+};
+item SwPageFtnInfo SwPageFtnInfoItem;
+
+item String SvxBoxInfoItem; //! Dummy
+
+
+//umdefiniert wg. doppelter Benutzung
+
+struct SwPageLRSpace
+{
+ UINT16 PageLeftMargin MID_LEFT_MARGIN; // % or direct
+ UINT16 PageRightMargin MID_RIGHT_MARGIN; // % or direct
+};
+item SwPageLRSpace SwPageLRSpaceItem;
+
+struct SwPageULSpace
+{
+ UINT16 PageTopMargin MID_UPPER; // % or direct
+ UINT16 PageBottomMargin MID_LOWER; // % or direct
+};
+item SwPageULSpace SwPageULSpaceItem
+
+
+struct SwGraphicSize
+{
+ UINT32 GraphicWidth MID_WIDTH;
+ UINT32 GraphicHeight MID_HEIGHT;
+};
+item SwGraphicSize SwGraphicSizeItem;
+
+struct CropGrf
+{
+ INT32 Left MID_1;
+ INT32 Right MID_2;
+ INT32 Top MID_3;
+ INT32 Bottom MID_4;
+};
+item CropGrf SwCropGrf;
+
+struct INetFmt
+{
+ String URL MID_1;
+ String TargetFrame MID_2;
+ String VisitedFmt MID_3;
+ String UnvisitedFmt MID_4;
+};
+item INetFmt SwFmtINetFmt;
+
+struct FmtSurround
+{
+ SwSurround Surround MID_1;
+ BOOL AnchorOnly MID_3;
+ BOOL Contour MID_4;
+ BOOL Outside MID_5
+};
+
+item FmtSurround SwFmtSurround;
+
+struct SwShadowCursor
+{
+ BOOL ShadowCursor MID_1;
+ BYTE ShadowCursorMode MID_2;
+ INT32 ShadowCursorColor MID_3;
+};
+item SwShadowCursor SwShadowCursorItem;
diff --git a/sw/sdi/swpatch.txt b/sw/sdi/swpatch.txt
new file mode 100644
index 000000000000..2628f81618c0
--- /dev/null
+++ b/sw/sdi/swpatch.txt
@@ -0,0 +1,19 @@
+swinter.h:
+
+unsigned char SYSCALL SwDocumentGetIsPrinting( C_Object ObjHdl );
+
+
+swinter.c:
+
+unsigned char SYSCALL SwDocumentGetIsPrinting( C_Object ObjHdl )
+{
+ if( SvIPCIsConnected() )
+ {
+ return (unsigned char) pIPCCallFunction( SvIPCGetClient(), 136598,
+ ObjHdl , 1, NULL );
+ }
+ return 0;
+}
+
+#pragma code_seg("swinter2","CODE")
+
diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi
new file mode 100644
index 000000000000..104cee5141c1
--- /dev/null
+++ b/sw/sdi/swriter.sdi
@@ -0,0 +1,8432 @@
+//--------------------------------------------------------------------------
+SfxBoolItem GotoPrevObject FN_GOTO_PREV_OBJ
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PrintPagePreView FN_PRINT_PAGEPREVIEW
+()
+[
+ /* 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_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem AcceptRedlining FN_REDLINE_ACCEPT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem CommentRedlining FN_REDLINE_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 JumpToFooter FN_TO_FOOTER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SbaInsert FN_QRY_INSERT
+()
+[
+ /* 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_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GotoNextWrongTableFormula FN_NEXT_TBLFML_ERR
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem BulletsAndNumberingDialog FN_NUMBER_BULLETS
+()
+[
+ /* 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_ENUMERATION;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem JumpToPrevTable FN_PREV_TABLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GotoPrevTableFormula FN_PREV_TBLFML
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem WordLeftSel FN_PREV_WORD_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem JumpToPrevFootnote FN_PREV_FOOTNOTE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem VRuler FN_VLINEAL
+
+[
+ /* 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoToPrevSentence FN_PREV_SENT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PreviewPrintOptions FN_PREVIEW_PRINT_OPTIONS
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DOC;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EndOfDocumentSel FN_END_OF_DOCUMENT_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GotoPrevWrongTableFormula FN_PREV_TBLFML_ERR
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertNeutralParagraph FN_NUM_BULLET_NONUM
+()
+[
+ /* 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_ENUMERATION;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoToPrevWord FN_PREV_WORD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PageStyleApply FN_SET_PAGE_STYLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignCharBottom FN_FRAME_ALIGN_VERT_CHAR_BOTTOM
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxStringItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Repaginate FN_REPAGINATE
+()
+[
+ /* 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_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem ShowHiddenParagraphs FN_VIEW_HIDDEN_PARA
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetMultiSelection FN_SET_ADD_MODE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FormatGroup FN_TOOL_GROUP
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ShowTwoPages FN_SHOW_TWO_PAGES
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertAuthoritiesEntry FN_INSERT_AUTH_ENTRY_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem SuperScript FN_SET_SUPER_SCRIPT
+
+[
+ /* 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 ShadowCursor FN_SHADOWCURSOR
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ShiftBackspace FN_SHIFT_BACKSPACE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GotoPrevSentenceSel FN_PREV_SENT_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem Ruler FN_RULER
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EditCurIndex FN_EDIT_CURRENT_TOX
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem ShowRedlining FN_REDLINE_SHOW
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Refresh FN_REFRESH_VIEW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem ScrollNavigation FN_SCROLL_NAVIGATION
+
+[
+ /* 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;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ScrollNextPrev FN_SCROLL_NEXT_PREV
+()
+[
+ /* 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 SelectText FN_SELECT_PARA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EntireColumn FN_TABLE_SELECT_COL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SwMailMerge FN_SBA_BRW_MERGE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertFrame FN_INSERT_FRAME
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* status: */
+ SlotType = SfxUInt16Item
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Remove FN_NUM_BULLET_OFF
+()
+[
+ /* 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_ENUMERATION;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpDownThisLevel FN_NUM_BULLET_NEXT
+()
+[
+ /* 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_ENUMERATION;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SelectWord FN_SELECT_WORD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem JumpToNextBookmark FN_NEXT_BOOKMARK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoToNextWord FN_NEXT_WORD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem WordRightSel FN_NEXT_WORD_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem IncrementSubLevels FN_NUM_BULLET_OUTLINE_UP
+()
+[
+ /* 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_ENUMERATION;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem IncrementIndentValue FN_INC_INDENT_OFFSET
+()
+[
+ /* 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 IncrementLevel FN_NUM_BULLET_UP
+()
+[
+ /* 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_ENUMERATION;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem ViewBounds FN_VIEW_BOUNDS
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ 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 MoveDownSubItems FN_NUM_BULLET_OUTLINE_MOVEDOWN
+()
+[
+ /* 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_ENUMERATION;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem MoveUpSubItems FN_NUM_BULLET_OUTLINE_MOVEUP
+()
+[
+ /* 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_ENUMERATION;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem JumpToNextFootnote FN_NEXT_FOOTNOTE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoToNextPara FN_NEXT_PARA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GotoPage FN_NAVIGATION_PI_GOTO_PAGE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem NewGlobalDoc FN_NEW_GLOBAL_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 = TRUE,
+ GroupId = GID_APPLICATION;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem NumberingStart FN_NUMBER_NEWSTART
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Asynchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_ENUMERATION;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GotoNextTableFormula FN_NEXT_TBLFML
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem MergeDialog FN_QRY_MERGE
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = TRUE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DOCUMENT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GotoNextIndexMark FN_NEXT_TOXMARK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoToStartOfLine FN_START_OF_LINE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GotoNextSentenceSel FN_NEXT_SENT_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem JumpToNextTable FN_NEXT_TABLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EndOfParaSel FN_END_OF_PARA_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SendOutlineToStarImpress FN_OUTLINE_TO_IMPRESS
+()
+[
+ /* 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_DOCUMENT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PageDown FN_PAGEDOWN
+()
+[
+ /* 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_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpToFootnoteOrAnchor FN_FOOTNOTE_TO_ANCHOR
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ObjectMirrorVertical FN_TOOL_VMIRROR
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item OptimizeTable FN_OPTIMIZE_TABLE
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxInt16Item PasteSpecial FN_PASTESPECIAL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertAnnotation FN_POSTIT
+()
+[
+ /* 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoToNextSentence FN_NEXT_SENT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignLeft FN_FRAME_ALIGN_HORZ_LEFT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DelToEndOfWord FN_DELETE_WORD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PageUpSel FN_PAGEUP_SEL
+()
+[
+ /* 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_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatDate FN_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 PageDownSel FN_PAGEDOWN_SEL
+()
+[
+ /* 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_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem TableNumberFormatDialog FN_NUM_FORMAT_TABLE_DLG
+()
+[
+ /* 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 ShowFourPages FN_SHOW_FOUR_PAGES
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToEndOfPage FN_END_OF_PAGE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatStandard FN_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 InsertDateField FN_INSERT_FLD_DATE
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatDecimal FN_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 GoToStartOfPage FN_START_OF_PAGE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatPercent FN_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 NumberFormatScientific FN_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;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToStartOfNextColumn FN_START_OF_NEXT_COLUMN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetAnchorToFrame FN_TOOL_ANKER_FRAME
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxBoolItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SbaInsertField FN_QRY_INSERT_FIELD
+()
+[
+ /* 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_DATA;
+]
+
+//--------------------------------------------------------------------------
+SvxColorItem BackColor SID_ATTR_CHAR_COLOR_BACKGROUND
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ToggleAnchorType FN_TOOL_ANKER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxUInt16Item
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetAnchorAtChar FN_TOOL_ANKER_AT_CHAR
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxBoolItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ObjectMirrorHorizontal FN_TOOL_HMIRROR
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FormatUngroup FN_TOOL_UNGROUP
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ChapterNumberingDialog FN_NUMBERING_OUTLINE_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetAnchorToPara FN_TOOL_ANKER_PARAGRAPH
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxBoolItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FootnoteDialog FN_FORMAT_FOOTNOTE_DLG
+()
+[
+ /* 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 ToggleObjectLayer FN_TOOL_HIERARCHIE
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ResetTableProtection FN_TABLE_UNSET_READ_ONLY
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem UnsetCellsReadOnly FN_TABLE_UNSET_READ_ONLY_CELLS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoToStartOfPara FN_START_OF_PARA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetRowHeight FN_TABLE_SET_ROW_HEIGHT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem MergeCells FN_TABLE_MERGE_CELLS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ThesaurusDialog FN_THESAURUS_DLG
+()
+[
+ /* 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_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetExtSelection FN_SET_EXT_MODE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpToHeader FN_TO_HEADER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertPageCountField FN_INSERT_FLD_PGCOUNT
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem CellVertCenter FN_TABLE_VERT_CENTER
+
+[
+ /* 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_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem CellVertTop FN_TABLE_VERT_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_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem TableBoundaries FN_VIEW_TABLEGRID
+
+[
+ /* 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GotoNextObject FN_GOTO_NEXT_OBJ
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem VScroll FN_VSCROLLBAR
+
+[
+ /* 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoUp FN_LINE_UP
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem Marks FN_VIEW_MARKS
+
+[
+ /* 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem ControlCodes FN_VIEW_META_CHARS
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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;
+]
+
+//--------------------------------------------------------------------------
+SvxColorItem FontColor SID_ATTR_CHAR_COLOR2
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item HtmlMode SID_HTML_MODE
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem LoadStyles SID_TEMPLATE_LOAD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem WrapAnchorOnly FN_WRAP_ANCHOR_ONLY
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem StateZoom FN_STAT_ZOOM
+()
+[
+ /* 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem CharColorExt SID_ATTR_CHAR_COLOR_EXT
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem UpdateFields FN_UPDATE_FIELDS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem MoveDown FN_NUM_BULLET_MOVEDOWN
+()
+[
+ /* 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_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem UnderlineDouble FN_UNDERLINE_DOUBLE
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem WrapIdeal FN_FRAME_WRAP_IDEAL
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem UpdateAllLinks FN_UPDATE_ALL_LINKS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Hyphenate FN_HYPHENATE_OPT_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem UnhainFrames FN_FRAME_UNCHAIN
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem CharBackgroundExt SID_ATTR_CHAR_COLOR_BACKGROUND_EXT
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem UpdateAllIndexes FN_UPDATE_TOX
+()
+[
+ /* 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_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ExecuteMacroField FN_EXECUTE_MACROFIELD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_MACRO;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem Fieldnames FN_VIEW_FIELDNAME
+
+[
+ /* 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 StartOfParaSel FN_START_OF_PARA_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToStartOfPrevColumn FN_START_OF_PREV_COLUMN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AutoFormatRedlineApply FN_AUTOFORMAT_REDLINE_APPLY
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertMultiIndex FN_INSERT_MULTI_TOX
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ 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 GoToEndOfColumn FN_END_OF_COLUMN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem StateBookmark FN_STAT_BOOKMARK
+()
+[
+ /* 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 PageUp FN_PAGEUP
+()
+[
+ /* 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_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem StatePageNumber FN_STAT_PAGE
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = TRUE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem WrapThroughTransparent FN_FRAME_WRAPTHRU_TRANSP
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToStartOfPrevPageSel FN_START_OF_PREV_PAGE_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToStart FN_START_TABLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToStartOfColumn FN_START_OF_COLUMN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem InsertHeader FN_INSERT_HEADER
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SortDialog FN_SORTING_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoRight FN_CHAR_RIGHT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Spelling FN_SPELLING_DLG
+()
+[
+ /* 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_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem StartAutoCorrect FN_AUTO_CORRECT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToStartOfNextPage FN_START_OF_NEXT_PAGE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToStartOfNextPageSel FN_START_OF_NEXT_PAGE_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem StartOfDocumentSel FN_START_OF_DOCUMENT_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem WrapContour FN_FRAME_WRAP_CONTOUR
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem StartOfLineSel FN_START_OF_LINE_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem Fields FN_VIEW_FIELDS
+
+[
+ /* 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 TableModeFix FN_TABLE_MODE_FIX
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxBoolItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem TableModeFixProp FN_TABLE_MODE_FIX_PROP
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxBoolItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetOptimalColumnWidth FN_TABLE_ADJUST_CELLS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertRowDialog FN_TABLE_INSERT_ROW_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DelToStartOfPara FN_DELETE_BACK_PARA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem Sourceview FN_SOURCEVIEW
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Asynchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetColumnWidth FN_TABLE_SET_COL_WIDTH
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Protect FN_TABLE_SET_READ_ONLY_CELLS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetOptimalRowHeight FN_TABLE_OPTIMAL_HEIGHT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Select FN_TABLE_SELECT_ALL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GotoNextPlacemarker FN_GOTO_NEXT_MARK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AutoSum FN_TABLE_AUTOSUM
+()
+[
+ /* 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_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignTop FN_FRAME_ALIGN_VERT_TOP
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxStringItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item SelectionMode FN_STAT_SELMODE
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = TRUE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem PageStyleName FN_STAT_TEMPLATE
+
+[
+ /* 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem SynchronizeLabelsDlg FN_SYNC_LABELS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FormatColumns FN_FORMAT_COLUMN
+()
+[
+ /* 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 CalculateSel FN_CALCULATE
+()
+[
+ /* 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;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertRows FN_TABLE_INSERT_ROW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DistributeRows FN_TABLE_BALANCE_ROWS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DeleteColumns FN_TABLE_DELETE_COL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EntireRow FN_TABLE_SELECT_ROW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem TextAttributes FN_DRAWTEXT_ATTR_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem MergeTable FN_TABLE_MERGE_TABLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FootnoteDialog FN_EDIT_FOOTNOTE
+()
+[
+ /* 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_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertReferenzField FN_INSERT_REF_FIELD
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DelLine FN_DELETE_WHOLE_LINE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem TextWrap FN_DRAW_WRAP_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpToEndOfDoc FN_END_DOC_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_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PageDialog FN_FORMAT_PAGE_DLG
+()
+[
+ /* 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoToEndOfDoc FN_END_OF_DOCUMENT
+()
+[
+ /* 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_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertFormula FN_EDIT_FORMULA
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem LinkDialog FN_EDIT_LINK_DLG
+()
+[
+ /* 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_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ObjectForwardOne FN_FRAME_DOWN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertColumnBreak FN_INSERT_COLUMN_BREAK
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoLeft FN_CHAR_LEFT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Backspace FN_BACKSPACE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Calc FN_CALC_TABLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ChangeDatabaseField FN_CHANGE_DBFIELD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem UpdateInputFields FN_UPDATE_INPUTFIELDS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ConvertTableText FN_CONVERT_TEXT_TABLE
+()
+[
+ /* 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_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem RepeatSearch FN_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 CharLeftSel FN_CHAR_LEFT_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetAnchorToPage FN_TOOL_ANKER_PAGE
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxBoolItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem CharRightSel FN_CHAR_RIGHT_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem PrintLayout FN_PRINT_LAYOUT
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Volatile,
+ 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem ExpandGlossary FN_EXPAND_GLOSSARY
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem TableDialog FN_FORMAT_TABLE_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToEndOfNextColumn FN_END_OF_NEXT_COLUMN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DecrementIndentValue FN_DEC_INDENT_OFFSET
+()
+[
+ /* 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 InsertEnvelop FN_ENVELOP
+()
+[
+ /* 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 BorderDialog FN_FORMAT_BORDER_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SwFmtDrop FormatDropcap FN_FORMAT_DROPCAPS
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem UpdateCurIndex FN_UPDATE_CUR_TOX
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FlipVertical FN_FLIP_VERT_GRAFIC
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoToEndOfPara FN_END_OF_PARA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem BackgroundDialog FN_FORMAT_BACKGROUND_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertObject FN_INSERT_OBJECT_DLG
+()
+[
+ /* 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 GoToEndOfNextPageSel FN_END_OF_NEXT_PAGE_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem NumberOrNoNumber FN_NUM_OR_NONUM
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ 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_ENUMERATION;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoToEndOfLine FN_END_OF_LINE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EndOfLineSel FN_END_OF_LINE_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToEndOfPrevColumn FN_END_OF_PREV_COLUMN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToEndOfPrevPage FN_END_OF_PREV_PAGE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem InsertField FN_INSERT_FIELD
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoDown FN_LINE_DOWN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToEndOfPageSel FN_END_OF_PAGE_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToEndOfNextPage FN_END_OF_NEXT_PAGE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DelToStartOfLine FN_DELETE_BACK_LINE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DelToStartOfSentence FN_DELETE_BACK_SENT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DelToStartOfWord FN_DELETE_BACK_WORD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DecrementSubLevels FN_NUM_BULLET_OUTLINE_DOWN
+()
+[
+ /* 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_ENUMERATION;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SplitTable FN_TABLE_SPLIT_TABLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem MoveUp FN_NUM_BULLET_MOVEUP
+()
+[
+ /* 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_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem TableModeVariable FN_TABLE_MODE_VARIABLE
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxBoolItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Escape FN_ESCAPE
+()
+[
+ /* 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 NumberFormatTime FN_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;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DelToEndOfLine FN_DELETE_LINE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertLabels FN_LABEL
+()
+[
+ /* 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 DelToEndOfSentence FN_DELETE_SENT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PreviewZoom FN_PREVIEW_ZOOM
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxUInt16Item
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToStartOfPageSel FN_START_OF_PAGE_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem JumpToNextFrame FN_CNTNT_TO_NEXT_FRAME
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DeleteRows FN_TABLE_DELETE_ROW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FlipHorizontal FN_FLIP_HORZ_GRAFIC
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoToPrevPara FN_PREV_PARA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetAnchorToChar FN_TOOL_ANKER_CHAR
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxBoolItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem LineUpSel FN_LINE_UP_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem CellVertBottom FN_TABLE_VERT_BOTTOM
+
+[
+ /* 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_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToStartOfPrevPage FN_START_OF_PREV_PAGE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EditRegion FN_EDIT_REGION
+()
+[
+ /* 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_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataBaseBrowser FN_QRY
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = TRUE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToEndOfPrevPageSel FN_END_OF_PREV_PAGE_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertFrameInteract FN_INSERT_FRAME_INTERACT_NOCOL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignVerticalRowCenter FN_FRAME_ALIGN_VERT_ROW_CENTER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxStringItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem TableNumberRecognition FN_SET_MODOPT_TBLNUMFMT
+
+[
+ /* 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 EditHyperlink FN_EDIT_HYPERLINK
+()
+[
+ /* 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 AutoCorrectDialog FN_AUTO_CORRECT_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AutoFormatApply FN_AUTOFORMAT_APPLY
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem OnlineAutoFormat FN_AUTOFORMAT_AUTO
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem CreateAbstract FN_ABSTRACT_NEWDOC
+()
+[
+ /* 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_DOCUMENT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SendAbstractToStarImpress FN_ABSTRACT_STARIMPRESS
+()
+[
+ /* 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_DOCUMENT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpToStartOfDoc FN_START_DOC_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_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertIndexesEntry FN_INSERT_IDX_ENTRY_DLG
+()
+[
+ /* 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 IndexEntryDialog FN_EDIT_IDX_ENTRY_DLG
+()
+[
+ /* 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_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem InsertColumnSection FN_INSERT_COLUMN_SECTION
+(SfxUInt16Item Columns FN_INSERT_COLUMN_SECTION)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* status: */
+ SlotType = SfxUInt16Item
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertColumns FN_TABLE_INSERT_COL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem ActivateRedlining FN_REDLINE_ON
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem RemoveTableOf FN_REMOVE_CUR_TOX
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem AppendParaBehindTheSection FN_SECTION_APPENDNODE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem ExecHyperlinks FN_STAT_HYPERLINKS
+
+[
+ /* 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 = TRUE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AuthoritiesEntryDialog FN_EDIT_AUTH_ENTRY_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Shrink FN_SHRINK_FONT_SIZE
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertBusinessCard FN_BUSINESS_CARD
+()
+[
+ /* 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 InsertPageNumberField FN_INSERT_FLD_PGNUMBER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertTimeField FN_INSERT_FLD_TIME
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertBookmark FN_INSERT_BOOKMARK
+()
+[
+ /* 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 InsertAuthorField FN_INSERT_FLD_AUTHOR
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertColumnDialog FN_TABLE_INSERT_COL_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertFootnoteDirect FN_INSERT_FOOTNOTE
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertFootnote FN_INSERT_FOOTNOTE_DLG
+()
+[
+ /* 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 SplitCell FN_TABLE_SPLIT_CELLS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertTopicField FN_INSERT_FLD_TOPIC
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem InsertGraphicRuler FN_INSERT_HRULER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem InsertFooter FN_INSERT_FOOTER
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertPara FN_INSERT_BREAK
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertBreak FN_INSERT_BREAK_DLG
+()
+[
+ /* 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 DecrementLevel FN_NUM_BULLET_DOWN
+()
+[
+ /* 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_ENUMERATION;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem IndexMarkToIndex FN_IDX_MARK_TO_IDX
+()
+[
+ /* 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_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem NumberFormat FN_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 InsertEndnoteDirect FN_INSERT_ENDNOTE
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SbaMerge FN_QRY_MERGE_FIELD
+()
+[
+ /* 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_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem InsertFieldCtrl FN_INSERT_FIELD_CTRL
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatCurrency FN_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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem NewHtmlDoc FN_NEW_HTML_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 = TRUE,
+ GroupId = GID_APPLICATION;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item InsertCtrl FN_INSERT_CTRL
+
+[
+ /* 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 InsertObjectStarMath FN_INSERT_SMA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem JumpToPrevBookmark FN_PREV_BOOKMARK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertSymbol FN_INSERT_SYMBOL
+()
+[
+ /* 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GoToStartOfDoc FN_START_OF_DOCUMENT
+()
+[
+ /* 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_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem InsertRegion FN_INSERT_REGION
+()
+[
+ /* 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 InsertObjectStarImage FN_INSERT_SIM
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem LineDownSel FN_LINE_DOWN_SEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem LineNumberingDialog FN_LINE_NUMBERING_DLG
+()
+[
+ /* 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 SwBrwInsert FN_SBA_BRW_INSERT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertTable FN_INSERT_TABLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* status: */
+ SlotType = SfxUInt16Item
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertScript FN_JAVAEDIT
+()
+[
+ /* 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 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 InsertHyperlinkDlg FN_INSERT_HYPERLINK
+()
+[
+ /* 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 InsertLinebreak FN_INSERT_LINEBREAK
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertNonBreakingSpace FN_INSERT_HARD_SPACE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertHardHyphen FN_INSERT_HARDHYPHEN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item PageOffset FN_CHANGE_PAGENUM
+[
+ SfxVoidItem PageOffsetDialog(SfxUInt16Item nOffset FN_CHANGE_PAGENUM);
+
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem InsertPageFooter FN_INSERT_PAGEFOOTER
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem InsertPageHeader FN_INSERT_PAGEHEADER
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FieldDialog FN_EDIT_FIELD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item InsertObjCtrl FN_INSERT_OBJ_CTRL
+
+[
+ /* 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem SubScript FN_SET_SUB_SCRIPT
+
+[
+ /* 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 InsertPagebreak FN_INSERT_PAGEBREAK
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignCharTop FN_FRAME_ALIGN_VERT_CHAR_TOP
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxStringItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignRowBottom FN_FRAME_ALIGN_VERT_ROW_BOTTOM
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxStringItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SwUpdate FN_SBA_BRW_UPDATE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DelToEndOfPara FN_DELETE_PARA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertCaptionDialog FN_INSERT_CAPTION
+()
+[
+ /* 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 AlignVerticalCharCenter FN_FRAME_ALIGN_VERT_CHAR_CENTER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxStringItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SendOutlineToClipboard FN_OUTLINE_TO_CLIPBOARD
+()
+[
+ /* 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_DOCUMENT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem MirrorOnEvenPages FN_FRAME_MIRROR_ON_EVEN_PAGES
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxBoolItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem WrapOff FN_FRAME_NOWRAP
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignRowTop FN_FRAME_ALIGN_VERT_ROW_TOP
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxStringItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AddAllUnknownWords FN_ADD_UNKNOWN
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem ChainFrames FN_FRAME_CHAIN
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Grow FN_GROW_FONT_SIZE
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ResetAttributes FN_FORMAT_RESET
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertSoftHyphen FN_INSERT_SOFT_HYPHEN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FrameDialog FN_FORMAT_FRAME_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GraphicDialog FN_FORMAT_GRAFIC_DLG
+()
+[
+ /* 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_GRAPHIC;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignRight FN_FRAME_ALIGN_HORZ_RIGHT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignBottom FN_FRAME_ALIGN_VERT_BOTTOM
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxStringItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignVerticalCenter FN_FRAME_ALIGN_VERT_CENTER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxStringItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpUpThisLevel FN_NUM_BULLET_PREV
+()
+[
+ /* 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_ENUMERATION;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignHorizontalCenter FN_FRAME_ALIGN_HORZ_CENTER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToEnd FN_END_TABLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem JumpToNextRegion FN_GOTO_NEXT_REGION
+()
+[
+ /* 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_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GotoPrevInputField FN_GOTO_PREV_INPUTFLD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GotoPrevPlacemarker FN_GOTO_PREV_MARK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem WrapOn FN_FRAME_WRAP
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PageColumnDialog FN_FORMAT_PAGE_COLUMN_DLG
+()
+[
+ /* 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;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GotoPrevIndexMark FN_PREV_TOXMARK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem MirrorGraphicOnEvenPages FN_GRAPHIC_MIRROR_ON_EVEN_PAGES
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxBoolItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertFrameInteract FN_INSERT_FRAME_INTERACT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxUInt16Item
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem HScroll FN_HSCROLLBAR
+
+[
+ /* 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 UpdateCharts FN_UPDATE_CHARTS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem JumpToPrevRegion FN_GOTO_PREV_REGION
+()
+[
+ /* 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_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpToReference FN_GOTO_REFERENCE
+()
+[
+ /* 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_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DistributeColumns FN_TABLE_BALANCE_CELLS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_TABLE;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem UpdateAll FN_UPDATE_ALL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToAnchor FN_FRAME_TO_ANCHOR
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem Graphic FN_VIEW_GRAPHIC
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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 ObjectBackOne FN_FRAME_UP
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertTitleField FN_INSERT_FLD_TITLE
+()
+[
+ /* 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_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EditGlossary FN_GLOSSARY_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* status: */
+ SlotType = SfxBoolItem
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem GotoNextInputField FN_GOTO_NEXT_INPUTFLD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem WrapLeft FN_FRAME_WRAP_LEFT
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem WrapRight FN_FRAME_WRAP_RIGHT
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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_FRAME;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem WrapThrough FN_FRAME_WRAPTHRU
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ 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_FRAME;
+]
+
diff --git a/sw/sdi/swslots.hrc b/sw/sdi/swslots.hrc
new file mode 100644
index 000000000000..cb4ec51434cf
--- /dev/null
+++ b/sw/sdi/swslots.hrc
@@ -0,0 +1,68 @@
+/*************************************************************************
+ *
+ * $RCSfile: swslots.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:30 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 <basctl/basicide.hrc>
+#include <offmgr/sba.hrc>
+#include <svx/svxids.hrc>
+#include <offmgr/ofaids.hrc>
+#include "globals.hrc"
+#include "cmdid.h"
+
diff --git a/sw/sdi/swslots.sdi b/sw/sdi/swslots.sdi
new file mode 100644
index 000000000000..e7f3ff61134f
--- /dev/null
+++ b/sw/sdi/swslots.sdi
@@ -0,0 +1,166 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: SWSLOTS.SDI $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/swslots.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: Main - IDL - File fuer Sw3
+
+ (c) Copyright 1989 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+import "ofa.ilb"
+
+module
+"9F76B581-23DD-101C-80B6-000024021835"
+"A1810F00-23DE-101C-80B6-000024021835"
+StarWriter
+[
+HelpText( "StarWriter Application" )
+SlotIdFile( "swslots.hrc" )
+TypeLibFile( "swslots.tlb" )
+ModulePrefix( "Sw" )
+]
+{
+ item String SfxTemplateItem;
+ item String SvxColumnItem;
+ item String SvxLineItem;
+ item String SfxSetItem;
+
+ item String TbxDummyItem;
+
+ item String SvxBoxItem;
+
+ item String XFillAttrSetItem;
+ item String XFillBitmapItem;
+ item String XFillColorItem;
+ item String XFillGradientItem;
+ item String XFillHatchItem;
+ item String XFillStyleItem;
+ item String XLineAttrSetItem;
+ item String XLineColorItem;
+ item String XLineDashItem;
+ item String XLineEndItem;
+ item String XLineEndWidthItem;
+ item String XLineEndCenterItem;
+ item String XLineStartItem;
+ item String XLineStartWidthItem;
+ item String XLineStartCenterItem;
+ item String XLineStyleItem;
+ item String XLineWidthItem;
+
+ enum Language
+ {
+ LANGUAGE_DONTKNOW,
+ LANGUAGE_SYSTEM
+ };
+ item Language SvxLanguageItem;
+
+ include "switems.sdi"
+ include "swnew.sdi"
+ include "swriter.sdi"
+
+ include "_docsh.sdi"
+ include "docsh.sdi"
+ include "wdocsh.sdi"
+
+ include "wrtapp.sdi"
+
+ include "_basesh.sdi"
+ include "basesh.sdi"
+
+ include "_textsh.sdi"
+ include "textsh.sdi"
+ include "wtextsh.sdi"
+
+ include "_drwbase.sdi"
+ include "drwbassh.sdi"
+ include "wdrwbase.sdi"
+
+ include "_formsh.sdi"
+ include "formsh.sdi"
+ include "wformsh.sdi"
+
+ include "drawsh.sdi"
+ include "drwtxtsh.sdi"
+
+ include "_listsh.sdi"
+ include "listsh.sdi"
+ include "wlistsh.sdi"
+
+ include "_frmsh.sdi"
+ include "frmsh.sdi"
+ include "wfrmsh.sdi"
+
+ include "_tabsh.sdi"
+ include "tabsh.sdi"
+ include "wtabsh.sdi"
+
+ include "_grfsh.sdi"
+ include "grfsh.sdi"
+ include "wgrfsh.sdi"
+
+ include "_olesh.sdi"
+ include "olesh.sdi"
+ include "wolesh.sdi"
+
+ include "beziersh.sdi"
+
+ include "_viewsh.sdi"
+ include "viewsh.sdi"
+ include "wviewsh.sdi"
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.38 2000/02/01 09:45:00 os
+ #72282# SwWebBaseShell removed
+
+ Revision 1.37 1998/06/09 13:37:10 OM
+ VC-Controls entfernt
+
+
+ Rev 1.36 09 Jun 1998 15:37:10 OM
+ VC-Controls entfernt
+
+ Rev 1.35 08 Jun 1998 18:08:30 OM
+ Forms im HTML-Mode
+
+ Rev 1.34 11 Mar 1998 17:14:00 OM
+ DB-FormShell
+
+ Rev 1.33 07 Mar 1998 11:31:22 OS
+ idl->sdi - funktioniert aber nicht!
+
+ Rev 1.32 28 Aug 1997 12:37:00 MBA
+ Text+HTML in eine IDL
+
+ Rev 1.31 13 Feb 1997 12:45:06 MA
+ unnoetige Texte entfernt
+
+ Rev 1.30 31 Jan 1997 13:24:10 OS
+ neu: _/wgrfsh _/wolesh
+
+ Rev 1.29 23 Jan 1997 15:41:42 OS
+ +_textsh.idl
+
+ Rev 1.28 23 Jan 1997 14:39:50 OS
+ Umstellung fuer StarWriter/Web
+
+ Rev 1.27 23 Jan 1997 08:37:16 OS
+ neue files fuer Basis-interfaces
+
+ Rev 1.26 22 Jan 1997 11:18:24 OM
+ Neue Shells: DrawBaseShell und DrawControlShell
+
+ Rev 1.25 08 Jan 1997 12:39:46 OM
+ Neu: Bezier-Shell
+
+ Rev 1.24 27 Sep 1996 09:44:56 OS
+ swnew.idl vor swriter.idl
+
+ Rev 1.23 19 Sep 1996 10:53:52 OS
+ neuese File: swnew.idl fuer neue Slots
+
+------------------------------------------------------------------------*/
diff --git a/sw/sdi/swslots.src b/sw/sdi/swslots.src
new file mode 100644
index 000000000000..a86121942638
--- /dev/null
+++ b/sw/sdi/swslots.src
@@ -0,0 +1,8925 @@
+/*************************************************************************
+ *
+ * $RCSfile: swslots.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:30 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "cmdid.h"
+#include "offmgr/ofaids.hrc"
+#include "globals.hrc"
+
+SfxSlotInfo FN_ABSTRACT_NEWDOC
+{
+ SlotName = "Dokument aus Abstrakt";
+ SlotName [ english ] = "Dokument aus Abstrakt";
+ SlotName[ english_us ] = "Document From Abstract";
+ SlotName[ portuguese ] = "Documento a partir de Abstracto";
+ SlotName[ russian ] = "Äîêóìåíò èç ïðîñìîòðà";
+ SlotName[ dutch ] = "Document van extract";
+ SlotName[ french ] = "Document d'après synthèse";
+ SlotName[ spanish ] = "Documento desde extracto";
+ SlotName[ italian ] = "Crea documento dal sunto";
+ SlotName[ danish ] = "Dokument fra abstract";
+ SlotName[ swedish ] = "Dokument ur utdrag";
+ SlotName[ polish ] = "Dokument z Abstraktu";
+ SlotName[ portuguese_brazilian ] = "CreateAbstract";
+ SlotName[ japanese ] = "±³Äײ݂©‚ç‚Ì•¶‘";
+ SlotName[ chinese_simplified ] = "ÎĵµÀ´×ÔÕªÒª";
+ SlotName[ chinese_traditional ] = "¤å¥ó±qºK­n";
+ SlotName[ arabic ] = "ãÓÊäÏ ãä ÇáÊáÎíÕ";
+ SlotName[ dutch ] = "Document van extract";
+ SlotName[ chinese_simplified ] = "ÎĵµÀ´×ÔÕªÒª";
+ SlotName[ greek ] = "¸ããñáöá áðü Abstract";
+ SlotName[ korean ] = "¿ä¾àÀ¸·ÎºÎÅÍ ¹®¼­";
+ SlotName[ turkish ] = "Belge özeti çýkar";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_ABSTRACT_STARIMPRESS
+{
+ SlotName = "Präsentation aus Abstrakt";
+ SlotName [ english ] = "Präsentation aus Abstrakt";
+ SlotName[ english_us ] = "Presentation from Abstract";
+ SlotName[ portuguese ] = "Apresentação a partir do Abstracto";
+ SlotName[ russian ] = "Ïðåçåíòàöèÿ èç ïðîñìîòðà";
+ SlotName[ dutch ] = "Presentatie uit extract";
+ SlotName[ french ] = "Présentation d'après synthèse";
+ SlotName[ spanish ] = "Presentación desde extracto";
+ SlotName[ italian ] = "Presentazione dal sunto";
+ SlotName[ danish ] = "Præsentation fra abstract";
+ SlotName[ swedish ] = "Presentation från Utdrag";
+ SlotName[ polish ] = "Prezentacja z Abstraktu";
+ SlotName[ portuguese_brazilian ] = "SendAbstractToStarOffice Impress";
+ SlotName[ japanese ] = "±³Äײ݂©‚ç‚ÌÌßÚ¾ÞÝð¼®Ý";
+ SlotName[ chinese_simplified ] = "ÑÝʾÎĸåÀ´×ÔÕªÒª";
+ SlotName[ chinese_traditional ] = "²³ø±qºK­n";
+ SlotName[ arabic ] = "ÚÑÖ ÊÞÏíãí ãä ÇáÊáÎíÕ";
+ SlotName[ dutch ] = "Presentatie uit extract";
+ SlotName[ chinese_simplified ] = "ÑÝʾÎĸåÀ´×ÔÕªÒª";
+ SlotName[ greek ] = "Ðáñïõóßáóç áðü Abstract";
+ SlotName[ korean ] = "¿ä¾ÇÀ¸·ÎºÎÅÍ ÇÁ¸®Á¨Å×À̼Ç";
+ SlotName[ turkish ] = "Sunu özeti çýkar";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_ADD_UNKNOWN
+{
+ SlotName = "Unbekannte Wörter aufnehmen";
+ SlotName [ english ] = "Unbekannte Wörter aufnehmen";
+ SlotName[ english_us ] = "Add Unknown Words";
+ SlotName[ portuguese ] = "Adicionar palavras desconhecidas";
+ SlotName[ russian ] = "Äîáàâèòü íåçíàêîìûå ñëîâà";
+ SlotName[ dutch ] = "Onbekende woorden opnemen";
+ SlotName[ french ] = "Ajouter mots inconnus";
+ SlotName[ spanish ] = "Aceptar palabras desconocidas";
+ SlotName[ italian ] = "Preleva le parole sconosciute";
+ SlotName[ danish ] = "Tilføj alle ukendte ord";
+ SlotName[ swedish ] = "Lägg till okända ord";
+ SlotName[ polish ] = "Do³¹cz nieznane s³owa";
+ SlotName[ portuguese_brazilian ] = "AddAllUnknownWords";
+ SlotName[ japanese ] = "Ž«‘‚ɒljÁ";
+ SlotName[ chinese_simplified ] = "ÌíÈë²»Ã÷µÄ×Ö";
+ SlotName[ chinese_traditional ] = "¥[¤J¤£©úªº¦r";
+ SlotName[ arabic ] = "ÅÖÇÝÉ ÇáßáãÇÊ ÇáÛíÑ ãÚÑæÝÉ";
+ SlotName[ dutch ] = "Onbekende woorden opnemen";
+ SlotName[ chinese_simplified ] = "ÌíÈë²»Ã÷µÄ×Ö";
+ SlotName[ greek ] = "Ðñüóèåóç Üãíùóôùí ëÝîåùí";
+ SlotName[ korean ] = "¾Ë·ÁÁöÁö¾ÊÀº ´Ü¾î Ãß°¡";
+ SlotName[ turkish ] = "Bilinmeyen sözcükler ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_AUTO_CORRECT
+{
+ SlotName = "AutoKorrektur";
+ SlotName [ english ] = "AutoKorrektur";
+ SlotName[ english_us ] = "AutoCorrect";
+ SlotName[ portuguese ] = "AutoCorrecção";
+ SlotName[ russian ] = "Àâòîçàìåíà";
+ SlotName[ dutch ] = "AutoCorrectie";
+ SlotName[ french ] = "AutoCorrection";
+ SlotName[ spanish ] = "AutoCorrección";
+ SlotName[ italian ] = "Correzione automatica";
+ SlotName[ danish ] = "AutoKorrektur";
+ SlotName[ swedish ] = "AutoKorrigering";
+ SlotName[ polish ] = "Autokorekta";
+ SlotName[ portuguese_brazilian ] = "StartAutoCorrect";
+ SlotName[ japanese ] = "µ°ÄºÚ¸Ä";
+ SlotName[ chinese_simplified ] = "×Ô¶¯¸üÕý";
+ SlotName[ chinese_traditional ] = "¦Û°Ê®Õ¥¿";
+ SlotName[ arabic ] = "ÊÕÍíÍ ÊáÞÇÆí";
+ SlotName[ dutch ] = "AutoCorrectie";
+ SlotName[ chinese_simplified ] = "×Ô¶¯¸üÕý";
+ SlotName[ greek ] = "ÁõôïÄéüñèùóç";
+ SlotName[ korean ] = "ÀÚµ¿ °íħ";
+ SlotName[ turkish ] = "Otomatik düzeltme";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_AUTO_CORRECT_DLG
+{
+ SlotName = "AutoKorrektur bearbeiten";
+ SlotName [ english ] = "AutoKorrektur bearbeiten";
+ SlotName[ english_us ] = "Edit AutoCorrect";
+ SlotName[ portuguese ] = "Editar AutoCorrecção";
+ SlotName[ russian ] = "Ïðàâêà àâòîçàìåíû";
+ SlotName[ dutch ] = "AutoCorrectie bewerken";
+ SlotName[ french ] = "Modifier AutoCorrection";
+ SlotName[ spanish ] = "Editar AutoCorrección";
+ SlotName[ italian ] = "Modifica correzione automatica";
+ SlotName[ danish ] = "Rediger AutoKorrektur";
+ SlotName[ swedish ] = "Redigera AutoKorrigering";
+ SlotName[ polish ] = "Edytuj autokorektê";
+ SlotName[ portuguese_brazilian ] = "ToolsAutoCorrect";
+ SlotName[ japanese ] = "µ°ÄºÚ¸Ä‚Ì•ÒW";
+ SlotName[ chinese_simplified ] = "±à¼­×Ô¶¯¸üÕý";
+ SlotName[ chinese_traditional ] = "½s¿è¦Û°Ê®Õ¥¿";
+ SlotName[ arabic ] = "ÊÍÑíÑ ÇáÊÕÍíÍ ÇáÊáÞÇÆí";
+ SlotName[ dutch ] = "AutoCorrectie bewerken";
+ SlotName[ chinese_simplified ] = "±à¼­×Ô¶¯¸üÕý";
+ SlotName[ greek ] = "Åðåîåñãáóßá ÁõôïÄéüñèùóç";
+ SlotName[ korean ] = "ÀÚµ¿ °íħ ÆÄÀÏ ¼öÁ¤";
+ SlotName[ turkish ] = "Otomatik düzelt dosyasýný düzenle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_AUTOFORMAT_APPLY
+{
+ SlotName = "AutoFormat-Optionen anwenden";
+ SlotName [ english ] = "AutoFormat-Optionen anwenden";
+ SlotName[ english_us ] = "Apply AutoFormat Options";
+ SlotName[ portuguese ] = "Aplicar opções de AutoFormato";
+ SlotName[ russian ] = "Ïðèìåíèòü ïàðàìåòðû àâòîôîðìàòà";
+ SlotName[ dutch ] = "AutoOpmaak-opties toepassen";
+ SlotName[ french ] = "Utiliser les options de l'AutoFormat";
+ SlotName[ spanish ] = "Aplicar opciones AutoFormato";
+ SlotName[ italian ] = "Applica le opzioni di AutoFormat";
+ SlotName[ danish ] = "Anvend AutoFormat-indstillinger";
+ SlotName[ swedish ] = "Använd AutoFormat";
+ SlotName[ polish ] = "U¿yj opcji autoformatowania";
+ SlotName[ portuguese_brazilian ] = "AutoFormatApply";
+ SlotName[ japanese ] = "µ°ÄÌ«°Ï¯Ä‚̵Ìß¼®Ý‚ð“K—p";
+ SlotName[ chinese_simplified ] = "²ÉÓÃ×Ô¶¯¸ñʽѡÏî";
+ SlotName[ chinese_traditional ] = "¨Ï¥Î¦Û°Ê®æ¦¡¿ï¶µ";
+ SlotName[ arabic ] = "ÇÓÊÎÏÇã ÎíÇÑÇÊ AutoFormat";
+ SlotName[ dutch ] = "AutoOpmaak-opties toepassen";
+ SlotName[ chinese_simplified ] = "²ÉÓÃ×Ô¶¯¸ñʽѡÏî";
+ SlotName[ greek ] = "ÅöáñìïãÞ åðéëïãþí ÁõôïÌïñöïðïßçóçò";
+ SlotName[ korean ] = "ÀÚµ¿ ¼­½Ä ¿É¼Ç Àû¿ë";
+ SlotName[ turkish ] = "Otomatik formatlama seçeneklerini uygula";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_AUTOFORMAT_AUTO
+{
+ SlotName = "AutoFormat";
+ SlotName [ english ] = "AutoFormat";
+ SlotName[ english_us ] = "AutoFormat";
+ SlotName[ portuguese ] = "AutoFormato";
+ SlotName[ russian ] = "Àâòîôîðìàò";
+ SlotName[ dutch ] = "AutoOpmaak";
+ SlotName[ french ] = "AutoFormat";
+ SlotName[ spanish ] = "AutoFormato";
+ SlotName[ italian ] = "Foramttazione automatica";
+ SlotName[ danish ] = "AutoFormat";
+ SlotName[ swedish ] = "AutoFormat";
+ SlotName[ polish ] = "Autoformatowanie";
+ SlotName[ japanese ] = "µ°ÄÌ«°Ï¯Ä";
+ SlotName[ chinese_simplified ] = "×Ô¶¯¸ñʽ";
+ SlotName[ chinese_traditional ] = "¦Û°Ê®æ¦¡";
+ SlotName[ arabic ] = "ÊäÓíÞ ÊáÞÇÆí";
+ SlotName[ dutch ] = "AutoOpmaak";
+ SlotName[ chinese_simplified ] = "×Ô¶¯¸ñʽ";
+ SlotName[ greek ] = "ÁõôïÌïñöïðïßçóç";
+ SlotName[ korean ] = "ÀÚµ¿ ¼­½Ä";
+ SlotName[ turkish ] = "Otomatik formatlama";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_AUTOFORMAT_REDLINE_APPLY
+{
+ SlotName = "AutoFormat-Optionen anwenden und Änderungen bestätigen";
+ SlotName [ english ] = "AutoFormat-Optionen anwenden und Änderungen bestätigen";
+ SlotName[ english_us ] = "Apply AutoFormat Options and confirm Changes";
+ SlotName[ portuguese ] = "Aplicar opções de AutoFormato e confirmar modificações";
+ SlotName[ russian ] = "Ïðèìåíèòü ïàðàìåòðû àâòîôîðìàòà è ïîäòâåðäèòü èçìåíåíèÿ";
+ SlotName[ dutch ] = "AutoOpmaak-opties toepassen en wijzigingen bevestigen";
+ SlotName[ french ] = "Utiliser les options d'AutoFormat et confirmer les modifications";
+ SlotName[ spanish ] = "AutoFormato-Aplicar opciones y confirmar modificaciones";
+ SlotName[ italian ] = "Applica le opzioni della Formattazione automatica e conferma le modifiche";
+ SlotName[ danish ] = "Anvend AutoFormat-indstillinger og bekræft ændringer";
+ SlotName[ swedish ] = "Använd AutoFormat-alternativ och bekräfta ändringar";
+ SlotName[ polish ] = "Zastosuj opcje autoformatowania i potwierdŸ zmiany";
+ SlotName[ portuguese_brazilian ] = "AutoFormatRedlineApply";
+ SlotName[ japanese ] = "µ°ÄÌ«°Ï¯Ä‚̵Ìß¼®Ý‚ð“K—p‚µ‚Ä•ÏX‚ðŠm”F";
+ SlotName[ chinese_simplified ] = "ʹÓÃ×Ô¶¯¸ñʽѡÏȷ¶¨¸ü¸Ä";
+ SlotName[ chinese_traditional ] = "¨Ï¥Î¦Û°Ê®æ¦¡¿ï¶µ¨Ã½T©wÅܧó";
+ SlotName[ arabic ] = "ÇÓÊÎÏÇã ÎíÇÑÇÊ AutoFormat æÊÃßíÏ ÇáÊÛííÑÇÊ";
+ SlotName[ dutch ] = "AutoOpmaak-opties toepassen en wijzigingen bevestigen";
+ SlotName[ chinese_simplified ] = "ʹÓÃ×Ô¶¯¸ñʽѡÏȷ¶¨¸ü¸Ä";
+ SlotName[ greek ] = "ÅöáñìïãÞ åðéëïãþí ÁõôïÌïñöïðïßçóçò êáé åðéâåâáßùóç áëëáãþí";
+ SlotName[ korean ] = "ÀÚµ¿ ¼­½Ä ¿É¼Ç°ú º¯°æÈ®ÀÎ Àû¿ë";
+ SlotName[ turkish ] = "Otomatik formatlama seçeneklerini uygula ve deðiþiklikleri onayla";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_BACKSPACE
+{
+ SlotName = "Rückschritt";
+ SlotName [ english ] = "Rückschritt";
+ SlotName[ english_us ] = "Backspace";
+ SlotName[ portuguese ] = "Retroceder";
+ SlotName[ russian ] = "Âîçâðàò";
+ SlotName[ dutch ] = "Backspace";
+ SlotName[ french ] = "Ret. Arr.";
+ SlotName[ spanish ] = "Retroceder";
+ SlotName[ italian ] = "Backspace";
+ SlotName[ danish ] = "Tilbage";
+ SlotName[ swedish ] = "Backsteg";
+ SlotName[ polish ] = "Cofnij";
+ SlotName[ portuguese_brazilian ] = "Backspace";
+ SlotName[ japanese ] = "ÊÞ¯¸½Íß°½";
+ SlotName[ chinese_simplified ] = "Í˸ñ";
+ SlotName[ chinese_traditional ] = "ºM®ø©R¥O";
+ SlotName[ arabic ] = "ÊÑÇÌÚ";
+ SlotName[ dutch ] = "Backspace";
+ SlotName[ chinese_simplified ] = "Í˸ñ";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ greek ] = "Backspace";
+ SlotName[ korean ] = "¹é ½ºÆäÀ̽º";
+ SlotName[ turkish ] = "Geri al";
+};
+SfxSlotInfo FN_CALC_TABLE
+{
+ SlotName = "Tabelle berechnen";
+ SlotName [ english ] = "Tabelle berechnen";
+ SlotName[ english_us ] = "Calculate Table";
+ SlotName[ portuguese ] = "Calcular tabela";
+ SlotName[ russian ] = "Âû÷èñëèòü òàáëèöó";
+ SlotName[ dutch ] = "Tabel berekenen";
+ SlotName[ french ] = "Calculer le tableau";
+ SlotName[ spanish ] = "Calcular tabla";
+ SlotName[ italian ] = "Calcola tabella";
+ SlotName[ danish ] = "Beregn tabel";
+ SlotName[ swedish ] = "Beräkna tabell";
+ SlotName[ polish ] = "Oblicz tabelê";
+ SlotName[ portuguese_brazilian ] = "CalculateTable";
+ SlotName[ japanese ] = "•\\‚ÌŒvŽZ";
+ SlotName[ chinese_simplified ] = "ÔËË㹤×÷±í";
+ SlotName[ chinese_traditional ] = "¹Bºâ¤u§@ªí";
+ SlotName[ arabic ] = "ÍÓÇÈ ÌÏæá";
+ SlotName[ dutch ] = "Tabel berekenen";
+ SlotName[ chinese_simplified ] = "ÔËË㹤×÷±í";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ greek ] = "Õðïëïãéóìüò ðßíáêá";
+ SlotName[ korean ] = "Ç¥ °è»ê";
+ SlotName[ turkish ] = "Tabloyu hesapla";
+};
+SfxSlotInfo FN_CALCULATE
+{
+ SlotName = "Auswahl berechnen";
+ SlotName [ english ] = "Auswahl berechnen";
+ SlotName[ english_us ] = "Calculate Selection";
+ SlotName[ portuguese ] = "Calcular selecção";
+ SlotName[ russian ] = "Âû÷èñëèòü âûäåëåííîå";
+ SlotName[ dutch ] = "Selectie berekenen";
+ SlotName[ french ] = "Calculer sélection";
+ SlotName[ spanish ] = "Calcular selección";
+ SlotName[ italian ] = "Calcola selezione";
+ SlotName[ danish ] = "Beregn markering";
+ SlotName[ swedish ] = "Beräkna urval";
+ SlotName[ polish ] = "Oblicz selekcjê";
+ SlotName[ portuguese_brazilian ] = "CalculateSel";
+ SlotName[ japanese ] = "‘I‘ð”͈͂̌vŽZ";
+ SlotName[ chinese_simplified ] = "ÔËËãÑ¡¶¨ÇøÓò";
+ SlotName[ chinese_traditional ] = "¹Bºâ¿ï¨ú°Ï°ì";
+ SlotName[ arabic ] = "ÍÓÇÈ ÇáÊÍÏíÏ";
+ SlotName[ dutch ] = "Selectie berekenen";
+ SlotName[ chinese_simplified ] = "ÔËËãÑ¡¶¨ÇøÓò";
+ SlotName[ greek ] = "Õðïëïãïóìüò åðéëïãÞò";
+ SlotName[ korean ] = "¼±Åà °è»ê";
+ SlotName[ turkish ] = "Seçimi hesapla";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_CHANGE_DBFIELD
+{
+ SlotName = "Datenbank ändern";
+ SlotName [ english ] = "Datenbank ändern";
+ SlotName[ english_us ] = "Change Database";
+ SlotName[ portuguese ] = "Alterar base de dados";
+ SlotName[ russian ] = "Èçìåíèòü áàçó äàííûõ";
+ SlotName[ dutch ] = "Database veranderen";
+ SlotName[ french ] = "Modifier base de données";
+ SlotName[ spanish ] = "Modificar base de datos";
+ SlotName[ italian ] = "Cambia database";
+ SlotName[ danish ] = "Modificer database";
+ SlotName[ swedish ] = "Ändra databas";
+ SlotName[ polish ] = "Zmieñ bazê danych";
+ SlotName[ portuguese_brazilian ] = "InsertDatabaseModify";
+ SlotName[ japanese ] = "ÃÞ°ÀÍÞ°½‚Ì•ÏX";
+ SlotName[ chinese_simplified ] = "ÐÞ¸ÄÊý¾Ý¿â";
+ SlotName[ chinese_traditional ] = "­×§ï¸ê®Æ®w";
+ SlotName[ arabic ] = "ÊÚÏíá ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ SlotName[ dutch ] = "Database veranderen";
+ SlotName[ chinese_simplified ] = "ÐÞ¸ÄÊý¾Ý¿â";
+ SlotName[ greek ] = "ÁëëáãÞ âÜóçò äåäïìåíþí";
+ SlotName[ korean ] = "µ¥ÀÌÅͺ£À̽º ¼öÁ¤";
+ SlotName[ turkish ] = "Veritabanýný düzenle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_CHANGE_PAGENUM
+{
+ SlotName = "Seitennummer";
+ SlotName [ english ] = "Seitennummer";
+ SlotName[ english_us ] = "Page Number";
+ SlotName[ portuguese ] = "Número de página";
+ SlotName[ russian ] = "Íîìåð ñòðàíèöû";
+ SlotName[ dutch ] = "Paginanummer";
+ SlotName[ french ] = "Numéro de page";
+ SlotName[ spanish ] = "Número de página";
+ SlotName[ italian ] = "Numeri di pagina";
+ SlotName[ danish ] = "Sidetal";
+ SlotName[ swedish ] = "Sidnummer";
+ SlotName[ polish ] = "Numer strony";
+ SlotName[ portuguese_brazilian ] = "ToolsPageNumber";
+ SlotName[ japanese ] = "Íß°¼Þ”Ô†";
+ SlotName[ chinese_simplified ] = "Ò³Âë";
+ SlotName[ chinese_traditional ] = "­¶½X";
+ SlotName[ arabic ] = "ÑÞã ÇáÕÝÍÉ";
+ SlotName[ dutch ] = "Paginanummer";
+ SlotName[ chinese_simplified ] = "Ò³Âë";
+ SlotName[ greek ] = "Áñéèìüò óåëßäáò";
+ SlotName[ korean ] = "ÆäÀÌÁö ¹øÈ£";
+ SlotName[ turkish ] = "Sayfa numarasý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_CHAR_LEFT
+{
+ SlotName = "Zeichen links";
+ SlotName [ english ] = "Zeichen links";
+ SlotName[ english_us ] = "To Character Left";
+ SlotName[ portuguese ] = "Carácter à esquerda";
+ SlotName[ russian ] = "Çíàê ñëåâà";
+ SlotName[ dutch ] = "Teken links";
+ SlotName[ french ] = "Caractère à gauche";
+ SlotName[ spanish ] = "Carácter a la izquierda";
+ SlotName[ italian ] = "Carattere sinistro";
+ SlotName[ danish ] = "Tegn til venstre";
+ SlotName[ swedish ] = "Tecken till vänster";
+ SlotName[ polish ] = "Znak z lewej strony";
+ SlotName[ portuguese_brazilian ] = "GoLeft";
+ SlotName[ japanese ] = "•¶Žš‚̶";
+ SlotName[ chinese_simplified ] = "תµ½×Ö·û×ó¶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ì¦r¤¸­ººÝ";
+ SlotName[ arabic ] = "ÍÑÝ ááÎáÝ";
+ SlotName[ dutch ] = "Teken links";
+ SlotName[ chinese_simplified ] = "תµ½×Ö·û×ó¶Ë";
+ SlotName[ greek ] = "×áñáêôÞñáò áñéóôåñÜ";
+ SlotName[ korean ] = "¹®ÀÚ ¿ÞÂÊÀ¸·Î";
+ SlotName[ turkish ] = "Soldaki karakter";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_CHAR_LEFT_SEL
+{
+ SlotName = "Zeichen links selektieren";
+ SlotName [ english ] = "Zeichen links selektieren";
+ SlotName[ english_us ] = "Select Character Left";
+ SlotName[ portuguese ] = "Seleccionar carácter à esquerda";
+ SlotName[ russian ] = "Âûäåëèòü çíàê ñëåâà";
+ SlotName[ dutch ] = "Tekens links selecteren";
+ SlotName[ french ] = "Sélect. caratère à gauche";
+ SlotName[ spanish ] = "Seleccionar carácter a la izquierda";
+ SlotName[ italian ] = "Seleziona carattere sinistro";
+ SlotName[ danish ] = "Marker tegn til venstre";
+ SlotName[ swedish ] = "Markera tecken till vänster";
+ SlotName[ polish ] = "Zaznacz znak z lewej strony";
+ SlotName[ portuguese_brazilian ] = "CharLeftMark";
+ SlotName[ japanese ] = "•¶Žš‚̶‚ð‘I‘ð";
+ SlotName[ chinese_simplified ] = "×óÏòÑ¡Ôñ×Ö·û";
+ SlotName[ chinese_traditional ] = "¥ª¦V¿ï¾Ü¦r¤¸";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÇáÍÑÝ ÇáÓÇÈÞ";
+ SlotName[ dutch ] = "Tekens links selecteren";
+ SlotName[ chinese_simplified ] = "×óÏòÑ¡Ôñ×Ö·û";
+ SlotName[ greek ] = "ÅðéëïãÞ áñéóôåñïý ÷áñáêôÞñá";
+ SlotName[ korean ] = "¹®ÀÚ ¿ÞÂÊ ¼±ÅÃ";
+ SlotName[ turkish ] = "Soldaki karakteri seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_CHAR_RIGHT
+{
+ SlotName = "Zeichen rechts";
+ SlotName [ english ] = "Zeichen rechts";
+ SlotName[ english_us ] = "Go Right";
+ SlotName[ portuguese ] = "Carácter à direita";
+ SlotName[ russian ] = "Çíàê ñïðàâà";
+ SlotName[ dutch ] = "Teken rechts";
+ SlotName[ french ] = "Caractère à droite";
+ SlotName[ spanish ] = "Carácter a la derecha";
+ SlotName[ italian ] = "Carattere a destra";
+ SlotName[ danish ] = "Tegn til højre";
+ SlotName[ swedish ] = "Tecken till höger";
+ SlotName[ polish ] = "Znaki z prawej strony";
+ SlotName[ portuguese_brazilian ] = "GoRight";
+ SlotName[ japanese ] = "•¶Žš‚̉E";
+ SlotName[ chinese_simplified ] = "×Ö·ûÏòÓÒ";
+ SlotName[ chinese_traditional ] = "¦r¤¸¦V¥k";
+ SlotName[ arabic ] = "ÃÍÑÝ Åáì Çáíãíä";
+ SlotName[ dutch ] = "Teken rechts";
+ SlotName[ chinese_simplified ] = "×Ö·ûÏòÓÒ";
+ SlotName[ greek ] = "×áñáêôÞñáò äåîéÜ";
+ SlotName[ korean ] = "¿À¸¥ÂÊÀ¸·Î °¡±â";
+ SlotName[ turkish ] = "Saðdaki karakter";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_CHAR_RIGHT_SEL
+{
+ SlotName = "Zeichen rechts selektieren";
+ SlotName [ english ] = "Zeichen rechts selektieren";
+ SlotName[ english_us ] = "Select Character Right";
+ SlotName[ portuguese ] = "Seleccionar carácter à direita";
+ SlotName[ russian ] = "Âûäåëèòü çíàê ñïðàâà";
+ SlotName[ dutch ] = "Teken rechts selecteren";
+ SlotName[ french ] = "Sélect. caractère à droite";
+ SlotName[ spanish ] = "Seleccionar carácter a la derecha";
+ SlotName[ italian ] = "Seleziona carattere destro";
+ SlotName[ danish ] = "Marker tegn til højre";
+ SlotName[ swedish ] = "Markera tecken till höger";
+ SlotName[ polish ] = "Zaznacz znak z prawej strony";
+ SlotName[ portuguese_brazilian ] = "CharRightMark";
+ SlotName[ japanese ] = "•¶Žš‚̉E‚ð‘I‘ð";
+ SlotName[ chinese_simplified ] = "ÓÒÏòÑ¡Ôñ×Ö·û";
+ SlotName[ chinese_traditional ] = "¦V¥k¿ï¾Ü¦r¤¸";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÇáÍÑÝ ÇáÊÇáí";
+ SlotName[ dutch ] = "Teken rechts selecteren";
+ SlotName[ chinese_simplified ] = "ÓÒÏòÑ¡Ôñ×Ö·û";
+ SlotName[ greek ] = "ÅðéëïãÞ äåîéïý ÷áñáêôÞñá";
+ SlotName[ korean ] = "¹®ÀÚ ¿À¸¥ÂÊ ¼±ÅÃ";
+ SlotName[ turkish ] = "Saðdaki karakteri seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_CNTNT_TO_NEXT_FRAME
+{
+ SlotName = "Zum nächsten Rahmen";
+ SlotName [ english ] = "Zum nächsten Rahmen";
+ SlotName[ english_us ] = "To Next Frame";
+ SlotName[ portuguese ] = "Moldura seguinte";
+ SlotName[ russian ] = "Äî ñëåäóþùåé ðàìêè";
+ SlotName[ dutch ] = "Naar het volgende kader";
+ SlotName[ french ] = "Cadre suivant";
+ SlotName[ spanish ] = "Ir al marco siguiente";
+ SlotName[ italian ] = "Alla cornice successiva";
+ SlotName[ danish ] = "Til næste ramme";
+ SlotName[ swedish ] = "Till nästa ram";
+ SlotName[ polish ] = "Do nastêpnej ramki";
+ SlotName[ portuguese_brazilian ] = "ContentsToNextFrame";
+ SlotName[ japanese ] = "ŽŸ‚̘g‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö¿ò";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@­Ó®Ø";
+ SlotName[ arabic ] = "Åáì ÇáÅØÇÑ ÇáÊÇáí";
+ SlotName[ dutch ] = "Naar het volgende kader";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö¿ò";
+ SlotName[ greek ] = "Åðüìåíï ðëáßóéï";
+ SlotName[ korean ] = "´ÙÀº ÇÁ·¹ÀÓÀ¸·Î";
+ SlotName[ turkish ] = "Sonraki çerçeveye git";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_CONVERT_TEXT_TABLE
+{
+ SlotName = "Konvertiere Tabelle/Text";
+ SlotName [ english ] = "Konvertiere Tabelle/Text";
+ SlotName[ english_us ] = "Convert Table/Text";
+ SlotName[ portuguese ] = "Converter Tabela/Texto";
+ SlotName[ russian ] = "Ïðåîáðàçîâàòü òàáëèöó â òåêñò";
+ SlotName[ dutch ] = "Converteer tabel/tekst";
+ SlotName[ french ] = "Conversion tableau/texte";
+ SlotName[ spanish ] = "ConvertirTabla/Texto";
+ SlotName[ italian ] = "Converti tabella/testo";
+ SlotName[ danish ] = "Konverter tabel/tekst";
+ SlotName[ swedish ] = "Konvertera tabell/text";
+ SlotName[ polish ] = "Konwertuj tabelê/tekst";
+ SlotName[ portuguese_brazilian ] = "ConvertTableText";
+ SlotName[ japanese ] = "•\\/÷½Ä‚Ì•ÏŠ·";
+ SlotName[ chinese_simplified ] = "ת»» ±í¸ñ/Îı¾";
+ SlotName[ chinese_traditional ] = "Âà´«¦¨ªí®æ/¤å¦r";
+ SlotName[ arabic ] = "ÊÍæíá ÌÏæá/äÕ";
+ SlotName[ dutch ] = "Converteer tabel/tekst";
+ SlotName[ chinese_simplified ] = "ת»» ±í¸ñ/Îı¾";
+ SlotName[ greek ] = "ÌåôáôñïðÞ ðßíáêá/êåßìåíï";
+ SlotName[ korean ] = "Ç¥/ÅؽºÆ® º¯È¯";
+ SlotName[ turkish ] = "Tablo/metin dönüþtür";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_DEC_INDENT_OFFSET
+{
+ SlotName = "Einzug um Betrag vermindern";
+ SlotName [ english ] = "Einzug um Betrag vermindern";
+ SlotName[ english_us ] = "Decrement Indent Value";
+ SlotName[ portuguese ] = "Diminuir avanço de texto";
+ SlotName[ russian ] = "Óìåíüøèòü îòñóï ñîãëàñíî çíà÷åíèÿ";
+ SlotName[ dutch ] = "Inspringing om getal verkleinen";
+ SlotName[ french ] = "Diminuer le retrait de";
+ SlotName[ spanish ] = "Disminuir sangría en";
+ SlotName[ italian ] = "Riduci rientro valore";
+ SlotName[ danish ] = "Formindsk indrykning om værdi";
+ SlotName[ swedish ] = "Minska indrag med enhet";
+ SlotName[ polish ] = "Zmniejsz wciêcie o wartoœæ";
+ SlotName[ portuguese_brazilian ] = "DecrementIndentValue";
+ SlotName[ japanese ] = "²ÝÃÞÝÄ‚Ì’l‚ðŒ¸‚ç‚·";
+ SlotName[ chinese_simplified ] = "¼õÉÙËõ½øÖµ";
+ SlotName[ chinese_traditional ] = "´î¤ÖÁY±Æ­È";
+ SlotName[ arabic ] = "ÅäÞÇÕ ãÞÏÇÑ ÇáÅÒÇÍÉ";
+ SlotName[ dutch ] = "Inspringing om getal verkleinen";
+ SlotName[ chinese_simplified ] = "¼õÉÙËõ½øÖµ";
+ SlotName[ greek ] = "Ìåßùóç åóï÷Þò êáôÜ ôçí ôéìÞ";
+ SlotName[ korean ] = "µé¿©¾²±â °ª °¨¼Ò";
+ SlotName[ turkish ] = "Girintiyi küçült";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_DELETE_BACK_LINE
+{
+ SlotName = "Bis Zeilenanfang löschen";
+ SlotName [ english ] = "Bis Zeilenanfang löschen";
+ SlotName[ english_us ] = "Delete to Start of Line";
+ SlotName[ portuguese ] = "Eliminar até ao início da linha";
+ SlotName[ russian ] = "Âûäåëèòü äî íà÷àëà ñòðîêè";
+ SlotName[ dutch ] = "Tot regelbegin wissen";
+ SlotName[ french ] = "Supprimer jusq'au début de la ligne";
+ SlotName[ spanish ] = "Eliminar hasta el comienzo de la línea";
+ SlotName[ italian ] = "Cancella fino all'inzio della riga";
+ SlotName[ danish ] = "Slet til begyndelsen af rækken";
+ SlotName[ swedish ] = "Radera till början av rad";
+ SlotName[ polish ] = "Usuñ do pocz¹tku wiersza";
+ SlotName[ portuguese_brazilian ] = "DelToStartOfLine";
+ SlotName[ japanese ] = "s“ª‚Ü‚Åíœ";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁÐÐÊ×";
+ SlotName[ chinese_traditional ] = "§R°£¦Ü¦æ­º";
+ SlotName[ arabic ] = "ÍÐÝ ÍÊì ÈÏÇíÉ ÇáÓØÑ";
+ SlotName[ dutch ] = "Tot regelbegin wissen";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁÐÐÊ×";
+ SlotName[ greek ] = "ÄéáãñáöÞ åþò ôçí áñ÷Þ ôçò ãñáììÞò";
+ SlotName[ korean ] = "ÁÙ ½ÃÀÛ¿¡ »èÁ¦";
+ SlotName[ turkish ] = "Satýr baþýna kadar sil";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_DELETE_BACK_PARA
+{
+ SlotName = "Bis Absatzanfang löschen";
+ SlotName [ english ] = "Bis Absatzanfang löschen";
+ SlotName[ english_us ] = "Delete to Start of Paragraph";
+ SlotName[ portuguese ] = "Eliminar até ao início do parágrafo";
+ SlotName[ russian ] = "Óäàëèòü äî íà÷àëà àáçàöà";
+ SlotName[ dutch ] = "Tot aan begin alinea wissen";
+ SlotName[ french ] = "Supprimer jusqu'au début du paragraphe";
+ SlotName[ spanish ] = "Eliminar hasta el comienzo del párrafo";
+ SlotName[ italian ] = "Cancella fino alla fine del paragrafo";
+ SlotName[ danish ] = "Slet til begyndelsen af afsnittet";
+ SlotName[ swedish ] = "Radera till början av stycke";
+ SlotName[ polish ] = "Usuñ do pocz¹tku akapitu";
+ SlotName[ portuguese_brazilian ] = "DelToStartOfParagraph";
+ SlotName[ japanese ] = "’i—Ž“ª‚Ü‚Åíœ";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁ¶ÎÂäÊ׶Ë";
+ SlotName[ chinese_traditional ] = "§R°£¦Ü¬q¸¨­ººÝ";
+ SlotName[ arabic ] = "ÍÐÝ ÍÊì ÈÏÇíÉ ÇáÝÞÑÉ";
+ SlotName[ dutch ] = "Tot aan begin alinea wissen";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁ¶ÎÂäÊ׶Ë";
+ SlotName[ greek ] = "ÄéáãñáöÞ åþò ôçí áñ÷Þ ôçò ðáñáãñÜöïõ";
+ SlotName[ korean ] = "´Ü¶ôÀÇ ½ÃÀÛ¿¡ »èÁ¦";
+ SlotName[ turkish ] = "Paragraf baþýna kadar sil";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_DELETE_BACK_SENT
+{
+ SlotName = "Bis Satzanfang löschen";
+ SlotName [ english ] = "Bis Satzanfang löschen";
+ SlotName[ english_us ] = "Delete to Start of Sentence";
+ SlotName[ portuguese ] = "Eliminar até ao início da frase";
+ SlotName[ russian ] = "Óäàëèòü äî íà÷àëà ñòðàíèöû";
+ SlotName[ dutch ] = "Tot aan begin van de zin wissen";
+ SlotName[ french ] = "Suppr. jusqu'au début de la page";
+ SlotName[ spanish ] = "Eliminar hasta el comienzo de la frase";
+ SlotName[ italian ] = "Cancella fino all'inizio della frase";
+ SlotName[ danish ] = "Slet til begyndelsen af sætningen";
+ SlotName[ swedish ] = "Radera till början av meningen";
+ SlotName[ polish ] = "Usuñ do pocz¹tku zdania";
+ SlotName[ portuguese_brazilian ] = "DelToStartOfSentence";
+ SlotName[ japanese ] = "•¶“ª‚Ü‚Åíœ";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁ¾äÊ×";
+ SlotName[ chinese_traditional ] = "§R°£¦Ü¬q¸¨­ººÝ";
+ SlotName[ arabic ] = "ÍÐÝ ÍÊì ÈÏÇíÉ ÇáÌãáÉ";
+ SlotName[ dutch ] = "Tot aan begin van de zin wissen";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁ¾äÊ×";
+ SlotName[ greek ] = "ÄéáãñáöÞ åþò ôçí áñ÷Þ ôçò ðñüôáóçò";
+ SlotName[ korean ] = "¹®ÀåÀÇ ½ÃÀÛ¿¡ »èÁ¦";
+ SlotName[ turkish ] = "Cümle baþýna kadar sil";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_DELETE_BACK_WORD
+{
+ SlotName = "Bis Wortanfang löschen";
+ SlotName [ english ] = "Bis Wortanfang löschen";
+ SlotName[ english_us ] = "Delete to Start of Word";
+ SlotName[ portuguese ] = "Eliminar até ao início da palavra";
+ SlotName[ russian ] = "Óäàëèòü äî íà÷àëà ñëîâà";
+ SlotName[ dutch ] = "Tot aan woordbegin wissen";
+ SlotName[ french ] = "Supprimer jusqu'au début du mot";
+ SlotName[ spanish ] = "Eliminar hasta el comienzo de la palabra";
+ SlotName[ italian ] = "Cancella fino all'inizio della parola";
+ SlotName[ danish ] = "Slet til begyndelsen af ordet";
+ SlotName[ swedish ] = "Radera till början av ord";
+ SlotName[ polish ] = "Usuñ do pocz¹tku s³owa";
+ SlotName[ portuguese_brazilian ] = "DelToStartOfWord";
+ SlotName[ japanese ] = "Œê“ª‚Ü‚Åíœ";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁ×ÖÊ×";
+ SlotName[ chinese_traditional ] = "§R°£¦Ü¦r­º";
+ SlotName[ arabic ] = "ÍÐÝ ÍÊì ÈÏÇíÉ ÇáßáãÉ";
+ SlotName[ dutch ] = "Tot aan woordbegin wissen";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁ×ÖÊ×";
+ SlotName[ greek ] = "ÄéáãñáöÞ åþò ôçí áñ÷Þ ôçò ëÝîçò";
+ SlotName[ korean ] = "´Ü¾îÀÇ ½ÃÀÛ¿¡ »èÁ¦";
+ SlotName[ turkish ] = "Sözcük baþýna kadar sil";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_DELETE_LINE
+{
+ SlotName = "Bis Zeilenende löschen";
+ SlotName [ english ] = "Bis Zeilenende löschen";
+ SlotName[ english_us ] = "Delete to End of Line";
+ SlotName[ portuguese ] = "Eliminar até ao fim da linha";
+ SlotName[ russian ] = "Óäàëèòü äî êîíöà ñòðîêè";
+ SlotName[ dutch ] = "Tot regeleinde wissen";
+ SlotName[ french ] = "Suppr. jusqu'à la fin de la ligne";
+ SlotName[ spanish ] = "Eliminar hasta el final de la línea";
+ SlotName[ italian ] = "Cancella fino a fine riga";
+ SlotName[ danish ] = "Slet til slutningen af rækken";
+ SlotName[ swedish ] = "Radera till radslut";
+ SlotName[ polish ] = "Usuñ do koñca wiersza";
+ SlotName[ portuguese_brazilian ] = "DelToEndOfLine";
+ SlotName[ japanese ] = "s––‚Ü‚Åíœ";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁÐÐÄ©";
+ SlotName[ chinese_traditional ] = "§R°£¦Ü¦æ¥½";
+ SlotName[ arabic ] = "ÍÐÝ ÍÊì äåÇíÉ ÇáÓØÑ";
+ SlotName[ dutch ] = "Tot regeleinde wissen";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁÐÐÄ©";
+ SlotName[ greek ] = "ÄéáãñáöÞ åþò ôï ôÝëïò ôçò ãñáììÞò";
+ SlotName[ korean ] = "ÁÙÀÇ ³¡¿¡ »èÁ¦";
+ SlotName[ turkish ] = "Satýr sonuna kadar sil";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_DELETE_PARA
+{
+ SlotName = "Bis Absatzende löschen";
+ SlotName [ english ] = "Bis Absatzende löschen";
+ SlotName[ english_us ] = "Delete to End of Paragraph";
+ SlotName[ portuguese ] = "Eliminar até ao fim do parágrafo";
+ SlotName[ russian ] = "Óäàëèòü äî êîíöà àáçàöà";
+ SlotName[ dutch ] = "Tot aan einde alinea wissen";
+ SlotName[ french ] = "Suppr. jusqu'à la fin du paragraphe";
+ SlotName[ spanish ] = "Eliminar hasta el final del párrafo";
+ SlotName[ italian ] = "Cancella fino alla fine del paragrafo";
+ SlotName[ danish ] = "Slet til slutningen af afsnittet";
+ SlotName[ swedish ] = "Radera till slutet av stycket";
+ SlotName[ polish ] = "Usuñ do koñca akapitu";
+ SlotName[ portuguese_brazilian ] = "DelToEndOfParagraph";
+ SlotName[ japanese ] = "’i—Ž––‚Ü‚Åíœ";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁ¶ÎÂäβ¶Ë";
+ SlotName[ chinese_traditional ] = "§R°£¦Ü¬q¸¨§ÀºÝ";
+ SlotName[ arabic ] = "ÍÐÝ ÍÊì äåÇíÉ ÇáÝÞÑÉ";
+ SlotName[ dutch ] = "Tot aan einde alinea wissen";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁ¶ÎÂäβ¶Ë";
+ SlotName[ greek ] = "ÄéáãñáöÞ åþò ôï ôÝëïò ôçò ðáñáãñÜöïõ";
+ SlotName[ korean ] = "´Ü¶ôÀÇ ³¡¿¡ »èÁ¦";
+ SlotName[ turkish ] = "Paragraf sonuna kadar sil";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_DELETE_SENT
+{
+ SlotName = "Bis Satzende löschen";
+ SlotName [ english ] = "Bis Satzende löschen";
+ SlotName[ english_us ] = "Delete to End of Sentence";
+ SlotName[ portuguese ] = "Eliminar até ao fim da frase";
+ SlotName[ russian ] = "Óäàëèòü äî êîíöà ïðåäëîæåíèÿ";
+ SlotName[ dutch ] = "Tot aan einde zin wissen";
+ SlotName[ french ] = "Supprimer jusqu'à la fin de la phrase";
+ SlotName[ spanish ] = "Eliminar hasta el final de la frase";
+ SlotName[ italian ] = "Cancella fino alla fine della riga";
+ SlotName[ danish ] = "Slet til slutningen af sætningen";
+ SlotName[ swedish ] = "Radera till slutet av mening";
+ SlotName[ polish ] = "Usuñ do koñca zdania";
+ SlotName[ portuguese_brazilian ] = "DelToEndOfSentence";
+ SlotName[ japanese ] = "•¶––‚Ü‚Åíœ";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁ¾äÄ©";
+ SlotName[ chinese_traditional ] = "§R°£¦Ü¥y¥½";
+ SlotName[ arabic ] = "ÍÐÝ ÍÊì äåÇíÉ ÇáÌãáÉ";
+ SlotName[ dutch ] = "Tot aan einde zin wissen";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁ¾äÄ©";
+ SlotName[ greek ] = "ÄéáãñáöÞ åþò ôï ôÝëïò ôçò ðñüôáóçò";
+ SlotName[ korean ] = "¹®ÀåÀÇ ³¡¿¡ »èÁ¦";
+ SlotName[ turkish ] = "Cümle sonuna kadar sil";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_DELETE_WHOLE_LINE
+{
+ SlotName = "Zeile löschen";
+ SlotName [ english ] = "Zeile löschen";
+ SlotName[ english_us ] = "Delete Row";
+ SlotName[ portuguese ] = "Eliminar linha";
+ SlotName[ russian ] = "Óäàëèòü ñòðîêó";
+ SlotName[ dutch ] = "Rij wissen";
+ SlotName[ french ] = "Supprimer la ligne";
+ SlotName[ spanish ] = "Eliminar línea";
+ SlotName[ italian ] = "Elimina riga";
+ SlotName[ danish ] = "Slet rækken";
+ SlotName[ swedish ] = "Radera rad";
+ SlotName[ polish ] = "Usuñ wiersz";
+ SlotName[ portuguese_brazilian ] = "DeleteLine";
+ SlotName[ japanese ] = "s‚Ìíœ";
+ SlotName[ chinese_simplified ] = "ɾ³ýÐÐ";
+ SlotName[ chinese_traditional ] = "§R°£¦æ";
+ SlotName[ arabic ] = "ÍÐÝ ÕÝ";
+ SlotName[ dutch ] = "Rij wissen";
+ SlotName[ chinese_simplified ] = "ɾ³ýÐÐ";
+ SlotName[ greek ] = "ÄéáãñáöÞ ãñáììÞò";
+ SlotName[ korean ] = "¿­ »èÁ¦";
+ SlotName[ turkish ] = "Satýrý sil";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_DELETE_WORD
+{
+ SlotName = "Bis Wortende löschen";
+ SlotName [ english ] = "Bis Wortende löschen";
+ SlotName[ english_us ] = "Delete to End of Word";
+ SlotName[ portuguese ] = "Eliminar até ao fim da palavra";
+ SlotName[ russian ] = "Óäàëèòü äî êîíöà ñëîâà";
+ SlotName[ dutch ] = "Tot aan woordeinde wissen";
+ SlotName[ french ] = "Supprimer jusqu'à la fin du mot";
+ SlotName[ spanish ] = "Eliminar hasta el final de la palabra";
+ SlotName[ italian ] = "Cancella fino alla fine della pagina";
+ SlotName[ danish ] = "Slet til slutningen af ordet";
+ SlotName[ swedish ] = "Radera till slutet av ord";
+ SlotName[ polish ] = "Usuñ do koñca s³owa";
+ SlotName[ portuguese_brazilian ] = "DelToEndOfWord";
+ SlotName[ japanese ] = "Œê––‚Ü‚Åíœ";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁ×ÖÄ©";
+ SlotName[ chinese_traditional ] = "§R°£¦Ü¦r¥½";
+ SlotName[ arabic ] = "ÍÐÝ ÍÊì äåÇíÉ ÇáßáãÉ";
+ SlotName[ dutch ] = "Tot aan woordeinde wissen";
+ SlotName[ chinese_simplified ] = "ɾ³ýÖÁ×ÖÄ©";
+ SlotName[ greek ] = "ÄéáãñáöÞ åþò ôï ôÝëïò ôçò ëÝîåùò";
+ SlotName[ korean ] = "´Ü¾îÀÇ ³¡¿¡ »èÁ¦";
+ SlotName[ turkish ] = "Sözcük sonuna kadar sil";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_DRAW_WRAP_DLG
+{
+ SlotName = "Textumlauf";
+ SlotName [ english ] = "Textumlauf";
+ SlotName[ english_us ] = "Text Wrap";
+ SlotName[ portuguese ] = "Ajustar texto";
+ SlotName[ russian ] = "Îáòåêàíèå òåêñòîì";
+ SlotName[ dutch ] = "Tekstomloop";
+ SlotName[ french ] = "Habillage";
+ SlotName[ spanish ] = "Ajuste de texto";
+ SlotName[ italian ] = "Scorrimento testo";
+ SlotName[ danish ] = "Tekstombrydning";
+ SlotName[ swedish ] = "Textanpassning";
+ SlotName[ polish ] = "Obieg tekstu";
+ SlotName[ portuguese_brazilian ] = "FormatWrap";
+ SlotName[ japanese ] = "÷½Ä‚ÌÜ‚è•Ô‚µ";
+ SlotName[ chinese_simplified ] = "ÎÄ×Ö»·ÈÆ";
+ SlotName[ chinese_traditional ] = "´«¦æ";
+ SlotName[ arabic ] = "ÇáÊÝÇÝ ÇáäÕ";
+ SlotName[ dutch ] = "Tekstomloop";
+ SlotName[ chinese_simplified ] = "ÎÄ×Ö»·ÈÆ";
+ SlotName[ greek ] = "Áíáäßðëùóç êåéìÝíïõ";
+ SlotName[ korean ] = "ÅؽºÆ® ¼øȯ";
+ SlotName[ turkish ] = "Metin daðýlýmý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_DRAWTEXT_ATTR_DLG
+{
+ SlotName = "Textattribute";
+ SlotName [ english ] = "Textattribute";
+ SlotName[ english_us ] = "Text Attributes";
+ SlotName[ portuguese ] = "Atributos de texto";
+ SlotName[ russian ] = "Òåêñòîâûå àòðèáóòû";
+ SlotName[ dutch ] = "Tekstattributen";
+ SlotName[ french ] = "Attributs de texte";
+ SlotName[ spanish ] = "Atributos de texto";
+ SlotName[ italian ] = "Attributi di testo";
+ SlotName[ danish ] = "Tekstattributter";
+ SlotName[ swedish ] = "Textattribut";
+ SlotName[ polish ] = "Atrybuty tekstu";
+ SlotName[ portuguese_brazilian ] = "FormatText";
+ SlotName[ japanese ] = "÷½Ä‚Ì‘®«";
+ SlotName[ chinese_simplified ] = "ÎÄ×ÖÊôÐÔ";
+ SlotName[ chinese_traditional ] = "¤å¦rÄÝ©Ê";
+ SlotName[ arabic ] = "ÓãÇÊ ÇáäÕ";
+ SlotName[ dutch ] = "Tekstattributen";
+ SlotName[ chinese_simplified ] = "ÎÄ×ÖÊôÐÔ";
+ SlotName[ greek ] = "×áñáêôçñéóôéêÜ êåéìÝíïõ";
+ SlotName[ korean ] = "ÅؽºÆ® ¼Ó¼º";
+ SlotName[ turkish ] = "Metin öznitelikleri";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_EDIT_FIELD
+{
+ SlotName = "Feldbefehl";
+ SlotName [ english ] = "Feldbefehl";
+ SlotName[ english_us ] = "Fields";
+ SlotName[ portuguese ] = "Campos";
+ SlotName[ russian ] = "Ïîëå";
+ SlotName[ dutch ] = "Veldopdracht";
+ SlotName[ french ] = "Instruction de champ";
+ SlotName[ spanish ] = "Código de campo";
+ SlotName[ italian ] = "Comando di campo";
+ SlotName[ danish ] = "Felt";
+ SlotName[ swedish ] = "Fältkommando";
+ SlotName[ polish ] = "Pola";
+ SlotName[ portuguese_brazilian ] = "EditFieldCommand";
+ SlotName[ japanese ] = "̨°ÙÄÞ";
+ SlotName[ chinese_simplified ] = "×Ö¶ÎÖ¸Áî";
+ SlotName[ chinese_traditional ] = "Äæ¦ì«ü¥O";
+ SlotName[ arabic ] = "ÍÞá";
+ SlotName[ dutch ] = "Veldopdracht";
+ SlotName[ chinese_simplified ] = "×Ö¶ÎÖ¸Áî";
+ SlotName[ greek ] = "ÅíôïëÞ ðåäßïõ";
+ SlotName[ korean ] = "Çʵå";
+ SlotName[ turkish ] = "Alan öðesi";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_EDIT_FOOTNOTE
+{
+ SlotName = "Fußnote";
+ SlotName [ english ] = "Fußnote";
+ SlotName[ english_us ] = "Footnote";
+ SlotName[ portuguese ] = "Nota de rodapé";
+ SlotName[ russian ] = "Ñíîñêà";
+ SlotName[ dutch ] = "Voetnoot";
+ SlotName[ french ] = "Note de bas de page";
+ SlotName[ spanish ] = "Nota al pie";
+ SlotName[ italian ] = "Nota a piè pagina";
+ SlotName[ danish ] = "Fodnote";
+ SlotName[ swedish ] = "Fotnot";
+ SlotName[ polish ] = "Przypis dolny";
+ SlotName[ portuguese_brazilian ] = "EditFootnotes";
+ SlotName[ japanese ] = "‹r’";
+ SlotName[ chinese_simplified ] = "×¢½Å";
+ SlotName[ chinese_traditional ] = "µù¸}";
+ SlotName[ arabic ] = "ÍÇÔíÉ ÓÝáíÉ";
+ SlotName[ dutch ] = "Voetnoot";
+ SlotName[ chinese_simplified ] = "×¢½Å";
+ SlotName[ greek ] = "Õðïóçìåßùóç";
+ SlotName[ korean ] = "¹Ù´Ú±Û";
+ SlotName[ turkish ] = "Dipnot";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_EDIT_FORMULA
+{
+ SlotName = "Formel einfügen";
+ SlotName [ english ] = "Formel einfügen";
+ SlotName[ english_us ] = "Insert Formula";
+ SlotName[ portuguese ] = "Inserir fórmula";
+ SlotName[ russian ] = "Âñòàâèòü ôîðìóëó";
+ SlotName[ dutch ] = "Formule invoegen";
+ SlotName[ french ] = "Insérer une formule";
+ SlotName[ spanish ] = "Insertar fórmula";
+ SlotName[ italian ] = "Inserisci formula";
+ SlotName[ danish ] = "Indsæt formel";
+ SlotName[ swedish ] = "Infoga formel";
+ SlotName[ polish ] = "Wstaw formu³ê";
+ SlotName[ portuguese_brazilian ] = "InsertFormula";
+ SlotName[ japanese ] = "”Ž®‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈ빫ʽ";
+ SlotName[ chinese_traditional ] = "´¡¤J¤½¦¡";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÕíÛÉ";
+ SlotName[ dutch ] = "Formule invoegen";
+ SlotName[ chinese_simplified ] = "²åÈ빫ʽ";
+ SlotName[ greek ] = "ÅéóáãùãÞ ôýðïõ";
+ SlotName[ korean ] = "¼ö½Ä »ðÀÔ";
+ SlotName[ turkish ] = "Formül ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_EDIT_IDX_ENTRY_DLG
+{
+ SlotName = "Verzeichniseintrag";
+ SlotName [ english ] = "Verzeichniseintrag";
+ SlotName[ english_us ] = "Index Entry";
+ SlotName[ portuguese ] = "Registo de índice";
+ SlotName[ russian ] = "Ýëåìåíò óêàçàòåëÿ";
+ SlotName[ dutch ] = "Indexitem";
+ SlotName[ french ] = "Entrée d'index";
+ SlotName[ spanish ] = "Entrada del índice";
+ SlotName[ italian ] = "Voce di indice";
+ SlotName[ danish ] = "Indekselement";
+ SlotName[ swedish ] = "Förteckningspost";
+ SlotName[ polish ] = "Wpis w indeksie";
+ SlotName[ portuguese_brazilian ] = "EditIndexEntry";
+ SlotName[ japanese ] = "õˆø€–Ú";
+ SlotName[ chinese_simplified ] = "Ŀ¼ÌõÄ¿";
+ SlotName[ chinese_traditional ] = "¥Ø¿ý±ø¥Ø";
+ SlotName[ arabic ] = "ÅÏÎÇá ÝåÑÓí";
+ SlotName[ dutch ] = "Indexitem";
+ SlotName[ chinese_simplified ] = "Ŀ¼ÌõÄ¿";
+ SlotName[ greek ] = "Êáôá÷þñéóç åõñåôçñßïõ";
+ SlotName[ korean ] = "»öÀÎ Ç׸ñ";
+ SlotName[ turkish ] = "Dizin giriþi";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_EDIT_LINK_DLG
+{
+ SlotName = "Verknüpfungen";
+ SlotName [ english ] = "Verknüpfungen";
+ SlotName[ english_us ] = "Links";
+ SlotName[ portuguese ] = "Ligações";
+ SlotName[ russian ] = "Ññûëêè";
+ SlotName[ dutch ] = "Koppelingen";
+ SlotName[ french ] = "Liens";
+ SlotName[ spanish ] = "Vínculos";
+ SlotName[ italian ] = "Collegamenti";
+ SlotName[ danish ] = "Kæder";
+ SlotName[ swedish ] = "Länkar";
+ SlotName[ polish ] = "£¹cza";
+ SlotName[ portuguese_brazilian ] = "EditLink";
+ SlotName[ japanese ] = "Øݸ‚ÌÝ’è";
+ SlotName[ chinese_simplified ] = "Á´½Ó";
+ SlotName[ chinese_traditional ] = "±¶®|";
+ SlotName[ arabic ] = "ãæÇÞÚ ãÑÊÈØÉ";
+ SlotName[ dutch ] = "Koppelingen";
+ SlotName[ chinese_simplified ] = "Á´½Ó";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ greek ] = "ÓõíäÝóåéò";
+ SlotName[ korean ] = "¿¬°á";
+ SlotName[ turkish ] = "Baðlantýlar";
+};
+SfxSlotInfo FN_EDIT_REGION
+{
+ SlotName = "Bereiche";
+ SlotName [ english ] = "Bereiche";
+ SlotName[ english_us ] = "Sections";
+ SlotName[ portuguese ] = "Categorias";
+ SlotName[ russian ] = "Ðàçäåëû";
+ SlotName[ dutch ] = "Bereiken";
+ SlotName[ french ] = "Sections";
+ SlotName[ spanish ] = "Areas";
+ SlotName[ italian ] = "Sezioni";
+ SlotName[ danish ] = "Områder";
+ SlotName[ swedish ] = "Områden";
+ SlotName[ polish ] = "Sekcje";
+ SlotName[ portuguese_brazilian ] = "EditSection";
+ SlotName[ japanese ] = "”͈Í";
+ SlotName[ chinese_simplified ] = "ÇøÓò";
+ SlotName[ chinese_traditional ] = "°Ï°ì";
+ SlotName[ arabic ] = "äØÇÞÇÊ";
+ SlotName[ dutch ] = "Bereiken";
+ SlotName[ chinese_simplified ] = "ÇøÓò";
+ SlotName[ greek ] = "Åíüôçôåò";
+ SlotName[ korean ] = "±¸¿ª";
+ SlotName[ turkish ] = "Bölüm";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_DOC_DIRECT
+{
+ SlotName = "Direkt zum Dokumentende";
+ SlotName [ english ] = "Direkt zum Dokumentende";
+ SlotName[ english_us ] = "Directly to Document End";
+ SlotName[ portuguese ] = "Ir para fim do documento";
+ SlotName[ russian ] = "Íåïîñðåäñòâåííî äî êîíöà äîêóìåíòà";
+ SlotName[ dutch ] = "Direct naar documenteinde";
+ SlotName[ french ] = "À la fin du document";
+ SlotName[ spanish ] = "Final del documento";
+ SlotName[ italian ] = "Direttamente alla fine del documento";
+ SlotName[ danish ] = "Direkte til dokumentets slutning";
+ SlotName[ swedish ] = "Direkt till slutet av dokumentet";
+ SlotName[ polish ] = "Bezpoœrednio na koniec dokumentu";
+ SlotName[ portuguese_brazilian ] = "EndOfDoc";
+ SlotName[ japanese ] = "’¼Ú•¶‘––‚Ö";
+ SlotName[ chinese_simplified ] = "Ö±½Óתµ½ÎĵµÎ²¶Ë";
+ SlotName[ chinese_traditional ] = "ª½±µÂà¨ì¤å¥ó§ÀºÝ";
+ SlotName[ arabic ] = "ãÈÇÔÑÉ ÍÊì äåÇíÉ ÇáãÓÊäÏ";
+ SlotName[ dutch ] = "Direct naar documenteinde";
+ SlotName[ chinese_simplified ] = "Ö±½Óתµ½ÎĵµÎ²¶Ë";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ greek ] = "Áð åõèåßáò ðñïò ôï ôÝëïò ôïõ åããñÜöïõ";
+ SlotName[ korean ] = "¹®¼­³¡¿¡ ¹Ù·Î";
+ SlotName[ turkish ] = "Doðrudan belge sonuna";
+};
+SfxSlotInfo FN_END_OF_COLUMN
+{
+ SlotName = "Zum Spaltenende";
+ SlotName [ english ] = "Zum Spaltenende";
+ SlotName[ english_us ] = "To Column End";
+ SlotName[ portuguese ] = "Ir para fim da coluna";
+ SlotName[ russian ] = "Äî êîíöà ñòîëáöà";
+ SlotName[ dutch ] = "Naar kolomeinde";
+ SlotName[ french ] = "Aller à la fin de la colonne";
+ SlotName[ spanish ] = "Ir al final de la columna";
+ SlotName[ italian ] = "Alla fine della colonna";
+ SlotName[ danish ] = "Til kolonnens slutning";
+ SlotName[ swedish ] = "Till slutet av kolumnen";
+ SlotName[ polish ] = "Do koñca kolumny";
+ SlotName[ portuguese_brazilian ] = "GoToEndOfColumn";
+ SlotName[ japanese ] = "—ñ‚Ì––‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÁÐβ";
+ SlotName[ chinese_traditional ] = "Âà¨ìÄæ§À";
+ SlotName[ arabic ] = "Åáì äåÇíÉ ÇáÚãæÏ";
+ SlotName[ dutch ] = "Naar kolomeinde";
+ SlotName[ chinese_simplified ] = "תµ½ÁÐβ";
+ SlotName[ greek ] = "Ðñïò ôï ôÝëïò ôçò óôÞëçò";
+ SlotName[ korean ] = "¿­ ³¡À¸·Î";
+ SlotName[ turkish ] = "Sütun sonu";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_DOCUMENT
+{
+ SlotName = "Zum Dokumentende";
+ SlotName [ english ] = "Zum Dokumentende";
+ SlotName[ english_us ] = "To Document End";
+ SlotName[ portuguese ] = "Ir para fim do documento";
+ SlotName[ russian ] = "Ê êîíöó äîêóìåíòà";
+ SlotName[ dutch ] = "Naar einde document";
+ SlotName[ french ] = "À la fin du document";
+ SlotName[ spanish ] = "Ir al final del documento";
+ SlotName[ italian ] = "Alla fine del documento";
+ SlotName[ danish ] = "Til dokumentets slutning";
+ SlotName[ swedish ] = "Till slutet av dokumentet";
+ SlotName[ polish ] = "Do koñca dokumentu";
+ SlotName[ portuguese_brazilian ] = "GoToEndOfDoc";
+ SlotName[ japanese ] = "•¶‘––‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÎĵµÎ²¶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤å¥ó§ÀºÝ";
+ SlotName[ arabic ] = "Åáì äåÇíÉ ÇáãÓÊäÏ";
+ SlotName[ dutch ] = "Naar einde document";
+ SlotName[ chinese_simplified ] = "תµ½ÎĵµÎ²¶Ë";
+ SlotName[ greek ] = "Ðñïò ôï ôÝëïò ôïõ åããñÜöïõ";
+ SlotName[ korean ] = "¹®¼­ ³¡À¸·Î";
+ SlotName[ turkish ] = "Belge sonu";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_DOCUMENT_SEL
+{
+ SlotName = "Bis Dokumentende selektieren";
+ SlotName [ english ] = "Bis Dokumentende selektieren";
+ SlotName[ english_us ] = "Select to Document End";
+ SlotName[ portuguese ] = "Seleccionar até fim do documento";
+ SlotName[ russian ] = "Âûäåëèòü äî êîíöà äîêóìåíòà";
+ SlotName[ dutch ] = "Tot aan einde document selecteren";
+ SlotName[ french ] = "Sélectionner jusqu'à la fin du document";
+ SlotName[ spanish ] = "Seleccionar hasta el final del documento";
+ SlotName[ italian ] = "Seleziona fino alla fine del documento";
+ SlotName[ danish ] = "Marker til dokumentets slutning";
+ SlotName[ swedish ] = "Markera till slutet av dokumentet";
+ SlotName[ polish ] = "Zaznacz do koñca dokumentu";
+ SlotName[ portuguese_brazilian ] = "EndOfDocumentSel";
+ SlotName[ japanese ] = "•¶‘––‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÎĵµÎ²¶Ë";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¤å¥ó§ÀºÝ";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì äåÇíÉ ÇáãÓÊäÏ";
+ SlotName[ dutch ] = "Tot aan einde document selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÎĵµÎ²¶Ë";
+ SlotName[ greek ] = "ÅðéëïãÞ åþò ôÝëïò åããñÜöïõ";
+ SlotName[ korean ] = "¹®¼­ ³¡¿¡ ¼±ÅÃ";
+ SlotName[ turkish ] = "Belge sonuna kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_LINE
+{
+ SlotName = "Zum Zeilenende";
+ SlotName [ english ] = "Zum Zeilenende";
+ SlotName[ english_us ] = "To End of Line";
+ SlotName[ portuguese ] = "Ir para fim da linha";
+ SlotName[ russian ] = "Äî êîíöà ñòðîêè";
+ SlotName[ dutch ] = "Naar einde regel";
+ SlotName[ french ] = "A la fin de la ligne";
+ SlotName[ spanish ] = "Ir al final de la línea";
+ SlotName[ italian ] = "Alla fine della riga";
+ SlotName[ danish ] = "Til rækkens slutning";
+ SlotName[ swedish ] = "Till slutet av raden";
+ SlotName[ polish ] = "Do koñca wiersza";
+ SlotName[ portuguese_brazilian ] = "GoToEndOfLine";
+ SlotName[ japanese ] = "s––‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÐÐÄ©";
+ SlotName[ chinese_traditional ] = "Âà¨ì¦æ¥½";
+ SlotName[ arabic ] = "Åáì äåÇíÉ ÇáÓØÑ";
+ SlotName[ dutch ] = "Naar einde regel";
+ SlotName[ chinese_simplified ] = "תµ½ÐÐÄ©";
+ SlotName[ greek ] = "Ðñïò ôï ôÝëïò ôçò ãñáììÞò";
+ SlotName[ korean ] = "¼±ÀÇ ³¡À¸·Î";
+ SlotName[ turkish ] = "Satýr sonu";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_LINE_SEL
+{
+ SlotName = "Bis Zeilenende selektieren";
+ SlotName [ english ] = "Bis Zeilenende selektieren";
+ SlotName[ english_us ] = "Select to End of Line";
+ SlotName[ portuguese ] = "Seleccionar até fim da linha";
+ SlotName[ russian ] = "Âûäåëèòü äî êîíöà ñòðîêè";
+ SlotName[ dutch ] = "Tot aan regeleinde selecteren";
+ SlotName[ french ] = "Sélect. jusqu'à la fin de la ligne";
+ SlotName[ spanish ] = "Seleccionar hasta el final de la línea";
+ SlotName[ italian ] = "Seleziona fino alla fine della linea";
+ SlotName[ danish ] = "Marker til rækkens slutning";
+ SlotName[ swedish ] = "Markera till slutet av raden";
+ SlotName[ polish ] = "Zaznacz do koñca wiersza";
+ SlotName[ portuguese_brazilian ] = "EndOfLineSel";
+ SlotName[ japanese ] = "s––‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÐÐÄ©";
+ SlotName[ chinese_traditional ] = "¦Ü¦æ¥½";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì äåÇíÉ ÇáÓØÑ";
+ SlotName[ dutch ] = "Tot aan regeleinde selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÐÐÄ©";
+ SlotName[ greek ] = "ÅðéëïãÞ åþò ôÝëïò ãñáììÞò";
+ SlotName[ korean ] = "¼±Àdz¡ ¼±ÅÃ";
+ SlotName[ turkish ] = "Satýr sonuna kadara seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_NEXT_COLUMN
+{
+ SlotName = "Zum Ende nächster Spalte";
+ SlotName [ english ] = "Zum Ende nächster Spalte";
+ SlotName[ english_us ] = "To End of Next Column";
+ SlotName[ portuguese ] = "Ir para fim da coluna seguinte";
+ SlotName[ russian ] = "Äî êîíöà ñëåäóþùåãî ñòîëáöà";
+ SlotName[ dutch ] = "Naar einde volgende kolom";
+ SlotName[ french ] = "A la fin de la colonne suivante";
+ SlotName[ spanish ] = "Ir al final de la columna siguiente";
+ SlotName[ italian ] = "Alla fine della colonna successiva";
+ SlotName[ danish ] = "TIl næste kolonnes slutning";
+ SlotName[ swedish ] = "Till slutet av nästa kolumn";
+ SlotName[ polish ] = "Do koñca nastêpnej kolumny";
+ SlotName[ portuguese_brazilian ] = "GoToEndOfNextColumn";
+ SlotName[ japanese ] = "ŽŸ‚Ì—ñ‚Ì––‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»ÁеÄβ¶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@Äæ§À";
+ SlotName[ arabic ] = "Åáì äåÇíÉ ÇáÚãæÏ ÇáÊÇáí";
+ SlotName[ dutch ] = "Naar einde volgende kolom";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»ÁеÄβ¶Ë";
+ SlotName[ greek ] = "Ðñïò ôÝëïò åðüìåíçò óôÞëçò";
+ SlotName[ korean ] = "´ÙÀ½ ¿­ÀÇ ³¡À¸·Î";
+ SlotName[ turkish ] = "Sonraki sütun sonu";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_NEXT_PAGE
+{
+ SlotName = "Zum Ende nächster Seite";
+ SlotName [ english ] = "Zum Ende nächster Seite";
+ SlotName[ english_us ] = "To End of Next Page";
+ SlotName[ portuguese ] = "Ir para fim da página seguinte";
+ SlotName[ russian ] = "Äî êîíöà ñëåäóþùåé ñòðàíèöû";
+ SlotName[ dutch ] = "Naar einde volgende pagina";
+ SlotName[ french ] = "À la fin de la page suivante";
+ SlotName[ spanish ] = "Ir al final de la página siguiente";
+ SlotName[ italian ] = "Alla fine dell pagina successiva";
+ SlotName[ danish ] = "Til næste sides slutning";
+ SlotName[ swedish ] = "Till slutet av nästa sida";
+ SlotName[ polish ] = "Do koñca nastêpnej strony";
+ SlotName[ portuguese_brazilian ] = "GoToEndOfNextPage";
+ SlotName[ japanese ] = "ŽŸ‚ÌÍß°¼Þ––‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂһҳβ¶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@­¶§À";
+ SlotName[ arabic ] = "Åáì äåÇíÉ ÇáÕÝÍÉ ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Naar einde volgende pagina";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂһҳβ¶Ë";
+ SlotName[ greek ] = "Ðñïò ôÝëïò åðüìåíçò óåëßäáò";
+ SlotName[ korean ] = "´ÙÀ½ ÆäÀÌÁöÀÇ ³¡À¸·Î";
+ SlotName[ turkish ] = "Sonraki sayfanýn sonu";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_NEXT_PAGE_SEL
+{
+ SlotName = "Bis Ende nächster Seite selektieren";
+ SlotName [ english ] = "Bis Ende nächster Seite selektieren";
+ SlotName[ english_us ] = "Select to End of Next Page";
+ SlotName[ portuguese ] = "Seleccionar até fim da página seguinte";
+ SlotName[ russian ] = "Âûäåëèòü äî êîíöà ñëåäóþùåé ñòðàíèöû";
+ SlotName[ dutch ] = "Tot aan einde volgende pagina selecteren";
+ SlotName[ french ] = "Sélect. jusqu'à la fin de la page suivante";
+ SlotName[ spanish ] = "Seleccionar hasta el final de la página siguiente";
+ SlotName[ italian ] = "Seleziona fino alla fine della pagina successiva";
+ SlotName[ danish ] = "Marker til næste sides slutning";
+ SlotName[ swedish ] = "Markera till slutet av nästa sida";
+ SlotName[ polish ] = "Zaznacz do koñca nastêpnej strony";
+ SlotName[ portuguese_brazilian ] = "GoToEndOfNextPageSel";
+ SlotName[ japanese ] = "ŽŸ‚ÌÍß°¼Þ––‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÏÂÒ»Ò³µÄβ¶Ë";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¤U¤@­¶§À";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì äåÇíÉ ÇáÕÝÍÉ ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Tot aan einde volgende pagina selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÏÂÒ»Ò³µÄβ¶Ë";
+ SlotName[ greek ] = "ÅðéëïãÞ åþò ôÝëïò åðüìåíçò óåëßäáò";
+ SlotName[ korean ] = "´ÙÀ½ÆäÀÌÁö ³¡ ¼±ÅÃ";
+ SlotName[ turkish ] = "Sonraki sayfanýn sonuna kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_PAGE
+{
+ SlotName = "Zum Seitenende";
+ SlotName [ english ] = "Zum Seitenende";
+ SlotName[ english_us ] = "To Page End";
+ SlotName[ portuguese ] = "Ir para fim da página";
+ SlotName[ russian ] = "Äî êîíöà ñòðàíèöû";
+ SlotName[ dutch ] = "Naar paginaeinde";
+ SlotName[ french ] = "Aller jusqu'à la fin de la page";
+ SlotName[ spanish ] = "Ir al final de la página";
+ SlotName[ italian ] = "Alla fine della pagina";
+ SlotName[ danish ] = "Til sidens slutning";
+ SlotName[ swedish ] = "Till slutet av sidan";
+ SlotName[ polish ] = "Do koñca strony";
+ SlotName[ portuguese_brazilian ] = "GoToEndOfPage";
+ SlotName[ japanese ] = "Íß°¼Þ––‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½Ò³Ãæβ¶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ì­¶§À";
+ SlotName[ arabic ] = "Åáì äåÇíÉ ÇáÕÝÍÉ";
+ SlotName[ dutch ] = "Naar paginaeinde";
+ SlotName[ chinese_simplified ] = "תµ½Ò³Ãæβ¶Ë";
+ SlotName[ greek ] = "Ðñïò ôï ôÝëïò ôçò óåëßäáò";
+ SlotName[ korean ] = "ÆäÀÌÁöÀÇ ³¡À¸·Î";
+ SlotName[ turkish ] = "Sayfa sonu";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_PAGE_SEL
+{
+ SlotName = "Bis Seitenende selektieren";
+ SlotName [ english ] = "Bis Seitenende selektieren";
+ SlotName[ english_us ] = "Select to Page End";
+ SlotName[ portuguese ] = "Seleccionar até fim da página";
+ SlotName[ russian ] = "Âûäåëèòü äî êîíöà ñòðàíèöû";
+ SlotName[ dutch ] = "Tot aan paginaeinde selecteren";
+ SlotName[ french ] = "Sélect. jusqu'à la fin de la page";
+ SlotName[ spanish ] = "Seleccionar hasta el final de la página";
+ SlotName[ italian ] = "Seleziona fino alla fine della pagina";
+ SlotName[ danish ] = "Marker til sidens slutning";
+ SlotName[ swedish ] = "Markera till slutet av sidan";
+ SlotName[ polish ] = "Zaznacz do koñca strony";
+ SlotName[ portuguese_brazilian ] = "GoToEndOfPageSel";
+ SlotName[ japanese ] = "Íß°¼Þ––‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÒ³Ãæβ¶Ë";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü­¶§À";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì äåÇíÉ ÇáÕÝÍÉ";
+ SlotName[ dutch ] = "Tot aan paginaeinde selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÒ³Ãæβ¶Ë";
+ SlotName[ greek ] = "ÅðéëïãÞ åþò ôÝëïò óåëßäáò";
+ SlotName[ korean ] = "ÆäÀÌÁö ³¡ ¼±ÅÃ";
+ SlotName[ turkish ] = "Sayfa sonuna kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_PARA
+{
+ SlotName = "Zum Absatzende";
+ SlotName [ english ] = "Zum Absatzende";
+ SlotName[ english_us ] = "To Paragraph End";
+ SlotName[ portuguese ] = "Para o fim do parágrafo";
+ SlotName[ russian ] = "Äî êîíöà àáçàöà";
+ SlotName[ dutch ] = "Naar einde alinea";
+ SlotName[ french ] = "A la fin du paragraphe";
+ SlotName[ spanish ] = "Ir al final del párrafo";
+ SlotName[ italian ] = "Alla fine del paragrafo";
+ SlotName[ danish ] = "Til afsnittets slutning";
+ SlotName[ swedish ] = "Till slutet av stycket";
+ SlotName[ polish ] = "Do koñca akapitu";
+ SlotName[ portuguese_brazilian ] = "GoToEndOfPara";
+ SlotName[ japanese ] = "’i—Ž––‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½¶ÎÂäβ¶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ì¬q¸¨§ÀºÝ";
+ SlotName[ arabic ] = "Åáì äåÇíÉ ÇáÝÞÑÉ";
+ SlotName[ dutch ] = "Naar einde alinea";
+ SlotName[ chinese_simplified ] = "תµ½¶ÎÂäβ¶Ë";
+ SlotName[ greek ] = "Ðñïò ôï ôÝëïò ôçò ðáñáãñÜöïõ";
+ SlotName[ korean ] = "´Ü¶ôÀÇ ³¡À¸·Î";
+ SlotName[ turkish ] = "Paragraf sonu";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_PARA_SEL
+{
+ SlotName = "Bis Absatzende selektieren";
+ SlotName [ english ] = "Bis Absatzende selektieren";
+ SlotName[ english_us ] = "Select to Paragraph End";
+ SlotName[ portuguese ] = "Seleccionar até fim do parágrafo";
+ SlotName[ russian ] = "Âûäåëèòü äî êîíöà àáçàöà";
+ SlotName[ dutch ] = "Tot aan einde alinea selecteren";
+ SlotName[ french ] = "Sélect. jusqu'à la fin du paragraphe";
+ SlotName[ spanish ] = "Seleccionar hasta final del párrafo";
+ SlotName[ italian ] = "Seleziona fino alla fine del paragrafo";
+ SlotName[ danish ] = "Marker til afsnittets slutning";
+ SlotName[ swedish ] = "Markera till slutet av stycket";
+ SlotName[ polish ] = "Zaznacz do koñca akapitu";
+ SlotName[ portuguese_brazilian ] = "EndOfParaSel";
+ SlotName[ japanese ] = "’i—Ž––‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁ¶ÎÂäβ¶Ë";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¬q¸¨§ÀºÝ";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì äåÇíÉ ÇáÝÞÑÉ";
+ SlotName[ dutch ] = "Tot aan einde alinea selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁ¶ÎÂäβ¶Ë";
+ SlotName[ greek ] = "ÅðéëïãÞ åþò ôÝëïò ðáñáãñÜöïõ";
+ SlotName[ korean ] = "´Ü¶ôÀÇ ³¡ ¼±ÅÃ";
+ SlotName[ turkish ] = "Paragraf sonuna kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_PREV_COLUMN
+{
+ SlotName = "Zur vorherigen Spalte";
+ SlotName [ english ] = "Zur vorherigen Spalte";
+ SlotName[ english_us ] = "To Previous Column";
+ SlotName[ portuguese ] = "Ir para coluna anterior";
+ SlotName[ russian ] = "Äî ïðåäûäóùåãî ñòîëáöà";
+ SlotName[ dutch ] = "Naar vorige kolom";
+ SlotName[ french ] = "A la colonne précédente";
+ SlotName[ spanish ] = "Ir a la columna anterior";
+ SlotName[ italian ] = "Alla colonna precedente";
+ SlotName[ danish ] = "Til forrige kolonne";
+ SlotName[ swedish ] = "Till föregående kolumn";
+ SlotName[ polish ] = "Do poprzedniej kolumny";
+ SlotName[ portuguese_brazilian ] = "GoToEndOfPrevColumn";
+ SlotName[ japanese ] = "‘O‚Ì—ñ‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»ÁÐ";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@Äæ";
+ SlotName[ arabic ] = "Åáì ÇáÚãæÏ ÇáÓÇÈÞ";
+ SlotName[ dutch ] = "Naar vorige kolom";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»ÁÐ";
+ SlotName[ greek ] = "Ðñïò ôçí ðñïçãïýìåíç óôÞëç";
+ SlotName[ korean ] = "ÀÌÀü ¿­À¸·Î";
+ SlotName[ turkish ] = "Önceki sütuna";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_PREV_PAGE
+{
+ SlotName = "Zum Ende vorheriger Seite";
+ SlotName [ english ] = "Zum Ende vorheriger Seite";
+ SlotName[ english_us ] = "To End of Previous Page";
+ SlotName[ portuguese ] = "Ir para fim da página anterior";
+ SlotName[ russian ] = "Äî êîíöà ïðåäûäóùåé ñòðàíèöû";
+ SlotName[ dutch ] = "Naar einde vorige pagina";
+ SlotName[ french ] = "Aller à la fin de la page précédente";
+ SlotName[ spanish ] = "Ir al final de la página anterior";
+ SlotName[ italian ] = "Alla fine della pagina precedente";
+ SlotName[ danish ] = "Til forrige sides slutning";
+ SlotName[ swedish ] = "Till slutet av föregående sidan";
+ SlotName[ polish ] = "Do koñca poprzedniej strony";
+ SlotName[ portuguese_brazilian ] = "GoToEndOfPrevPage";
+ SlotName[ japanese ] = "‘O‚ÌÍß°¼Þ––‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏһҳβ¶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@­¶§À";
+ SlotName[ arabic ] = "Åáì äåÇíÉ ÇáÕÝÍÉ ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Naar einde vorige pagina";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏһҳβ¶Ë";
+ SlotName[ greek ] = "Ðñïò ôÝëïò ðñïçãïýìåíçò óåëßäáò";
+ SlotName[ korean ] = "ÀÌÀü ÆäÀÌÁö ³¡À¸·Î";
+ SlotName[ turkish ] = "Öneki sayfanýn sonuna";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_OF_PREV_PAGE_SEL
+{
+ SlotName = "Bis Ende vorheriger Seite selektieren";
+ SlotName [ english ] = "Bis Ende vorheriger Seite selektieren";
+ SlotName[ english_us ] = "Select to End of Previous Page";
+ SlotName[ portuguese ] = "Seleccionar até fim da página anterior";
+ SlotName[ russian ] = "Âûäåëèòü äî êîíöà ïðåäûäóùåé ñòðàíèöû";
+ SlotName[ dutch ] = "Tot aan einde vorige pagina selecteren";
+ SlotName[ french ] = "Sélect. jusqu'à la fin de la page précédente";
+ SlotName[ spanish ] = "Seleccionar hasta el final de la página anterior";
+ SlotName[ italian ] = "Fino alla fine della pagina precedente";
+ SlotName[ danish ] = "Marker til forrige sides slutning";
+ SlotName[ swedish ] = "Markera till slutet av föregående sidan";
+ SlotName[ polish ] = "Zaznacz do koñca poprzedniej strony";
+ SlotName[ portuguese_brazilian ] = "GoToEndOfPrevPageSel";
+ SlotName[ japanese ] = "‘O‚ÌÍß°¼Þ––‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÉÏһҳβ¶Ë";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¤W¤@­¶§À";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì äåÇíÉ ÇáÕÝÍÉ ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Tot aan einde vorige pagina selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÉÏһҳβ¶Ë";
+ SlotName[ greek ] = "ÅðéëïãÞ åþò ôÝëïò ðñïçãïýìåíçò óåëßäáò";
+ SlotName[ korean ] = "ÀÌÀü ÆäÀÌÁö ³¡ ¼±ÅÃ";
+ SlotName[ turkish ] = "Önceki sayfanýn sonuna kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_END_TABLE
+{
+ SlotName = "Zum Tabellenende";
+ SlotName [ english ] = "Zum Tabellenende";
+ SlotName[ english_us ] = "To Table End";
+ SlotName[ portuguese ] = "Ir para fim da tabela";
+ SlotName[ russian ] = "Äî êîíöà òàáëèöû";
+ SlotName[ dutch ] = "Naar tabeleinde";
+ SlotName[ french ] = "A la fin du tableau";
+ SlotName[ spanish ] = "Ir al final de la tabla";
+ SlotName[ italian ] = "Alla fine della tabella";
+ SlotName[ danish ] = "Til tabellens slutning";
+ SlotName[ swedish ] = "Till slutet av tabell";
+ SlotName[ polish ] = "Do koñca tabeli";
+ SlotName[ portuguese_brazilian ] = "GoToTableEnd";
+ SlotName[ japanese ] = "•\\––‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½±í¸ñβ¶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ìªí®æ§ÀºÝ";
+ SlotName[ arabic ] = "Åáì äåÇíÉ ÇáÌÏæá";
+ SlotName[ dutch ] = "Naar tabeleinde";
+ SlotName[ chinese_simplified ] = "תµ½±í¸ñβ¶Ë";
+ SlotName[ greek ] = "Ðñïò ôï ôÝëïò ôïõ ðßíáêá";
+ SlotName[ korean ] = "Ç¥ ³¡À¸·Î";
+ SlotName[ turkish ] = "Tablo sonu";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_ENVELOP
+{
+ SlotName = "Briefumschlag einfügen";
+ SlotName [ english ] = "Briefumschlag einfügen";
+ SlotName[ english_us ] = "Insert Envelope";
+ SlotName[ portuguese ] = "Inserir envelope";
+ SlotName[ russian ] = "Âñòàâèòü êîíâåðò";
+ SlotName[ dutch ] = "Envelop invoegen";
+ SlotName[ french ] = "Insérer une enveloppe";
+ SlotName[ spanish ] = "Insertar sobre";
+ SlotName[ italian ] = "Inserisci busta";
+ SlotName[ danish ] = "Indsæt konvolut";
+ SlotName[ swedish ] = "Infoga kuvert";
+ SlotName[ polish ] = "Wstaw kopertê";
+ SlotName[ portuguese_brazilian ] = "InsertEnvelope";
+ SlotName[ japanese ] = "••“›‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÐÅ·â";
+ SlotName[ chinese_traditional ] = "´¡¤J«H«Ê";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÙÑÝ";
+ SlotName[ dutch ] = "Envelop invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÐÅ·â";
+ SlotName[ greek ] = "ÅéóáãùãÞ öáêÝëïõ";
+ SlotName[ korean ] = "ºÀÅõ »ðÀÔ";
+ SlotName[ turkish ] = "Zarf ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_ESCAPE
+{
+ SlotName = "Abbrechen";
+ SlotName [ english ] = "Abbrechen";
+ SlotName[ english_us ] = "Cancel";
+ SlotName[ portuguese ] = "Cancelar";
+ SlotName[ russian ] = "Îòìåíà";
+ SlotName[ dutch ] = "Annuleren";
+ SlotName[ french ] = "Annuler";
+ SlotName[ spanish ] = "Cancelar";
+ SlotName[ italian ] = "Escape";
+ SlotName[ danish ] = "Annuller";
+ SlotName[ swedish ] = "Avbryt";
+ SlotName[ polish ] = "Anuluj";
+ SlotName[ portuguese_brazilian ] = "Cancel";
+ SlotName[ japanese ] = "·¬Ý¾Ù";
+ SlotName[ chinese_simplified ] = "È¡Ïû";
+ SlotName[ chinese_traditional ] = "¨ú®ø";
+ SlotName[ arabic ] = "ÅáÛÇÁ ÇáÃãÑ";
+ SlotName[ dutch ] = "Annuleren";
+ SlotName[ chinese_simplified ] = "È¡Ïû";
+ SlotName[ greek ] = "Áêýñùóç";
+ SlotName[ korean ] = "Ãë¼Ò";
+ SlotName[ turkish ] = "Ýptal";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_EXECUTE_MACROFIELD
+{
+ SlotName = "Makrofeld ausführen";
+ SlotName [ english ] = "Makrofeld ausführen";
+ SlotName[ english_us ] = "Run Macro Field";
+ SlotName[ portuguese ] = "Executar campo da macro";
+ SlotName[ russian ] = "Âûïîëíèòü ïîëå ìàêðîñà";
+ SlotName[ dutch ] = "Macroveld uitvoeren";
+ SlotName[ french ] = "Exécuter le champ de macro";
+ SlotName[ spanish ] = "Ejecutar Campo de macro";
+ SlotName[ italian ] = "Esegui un campo macro";
+ SlotName[ danish ] = "Udfør makrofelt";
+ SlotName[ swedish ] = "Utför makrofält";
+ SlotName[ polish ] = "Wykonaj pole makro";
+ SlotName[ portuguese_brazilian ] = "ExecuteMacroField";
+ SlotName[ japanese ] = "Ï¸Û Ì¨°ÙÄÞ‚ÌŽÀs";
+ SlotName[ chinese_simplified ] = "Ö´Ðкê×Ö¶Î";
+ SlotName[ chinese_traditional ] = "°õ¦æ¥¨¶°Äæ¦ì";
+ SlotName[ arabic ] = "ÊäÝíÐ ÍÞá ãÇßÑæ";
+ SlotName[ dutch ] = "Macroveld uitvoeren";
+ SlotName[ chinese_simplified ] = "Ö´Ðкê×Ö¶Î";
+ SlotName[ greek ] = "ÅêôÝëåóç ðåäßïõ ìáêñïåíôïëÞò";
+ SlotName[ korean ] = "¸ÅÅ©·Î ÇÊµå ½ÇÇà";
+ SlotName[ turkish ] = "Makro alanýný çalýþtýr";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_EXPAND_GLOSSARY
+{
+ SlotName = "AutoText-Eintrag ausführen";
+ SlotName [ english ] = "AutoText-Eintrag ausführen";
+ SlotName[ english_us ] = "Run AutoText Entry";
+ SlotName[ portuguese ] = "Executar entrada do AutoTexto";
+ SlotName[ russian ] = "Âûïîëíèòü çàïèñü àâòîòåêñòà";
+ SlotName[ dutch ] = "AutoTekst-item uitvoeren";
+ SlotName[ french ] = "Exécuter entrée AutoTexte";
+ SlotName[ spanish ] = "Ejecutar entrada AutoTexto";
+ SlotName[ italian ] = "Esegui digitazione testo automatico";
+ SlotName[ danish ] = "Udfør Autoekst-element";
+ SlotName[ swedish ] = "Utför AutoText-post";
+ SlotName[ polish ] = "Wykonaj wpis autotekstu";
+ SlotName[ portuguese_brazilian ] = "AutoTextEntryRun";
+ SlotName[ japanese ] = "“ü—ÍŽx‰‡‚ÌŽÀs";
+ SlotName[ chinese_simplified ] = "Ö´ÐÐ×Ô¶¯Í¼Îļ¯ÌõÄ¿";
+ SlotName[ chinese_traditional ] = "°õ¦æ¦Û°Ê¹Ï¤å¶°¶µ¥Ø";
+ SlotName[ arabic ] = "ÊäÝíÐ ÇáÅÏÎÇá ÇáÊáÞÇÆí ááäÕ";
+ SlotName[ dutch ] = "AutoTekst-item uitvoeren";
+ SlotName[ chinese_simplified ] = "Ö´ÐÐ×Ô¶¯Í¼Îļ¯ÌõÄ¿";
+ SlotName[ greek ] = "ÅêôÝëåóç êáôá÷þñéóçò ÁõôïÊåéìÝíïõ";
+ SlotName[ korean ] = "ÀÚµ¿ ÅؽºÆ® Ç׸ñ ½ÇÇà";
+ SlotName[ turkish ] = "Otomatik metin giriþini uygula";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FLIP_HORZ_GRAFIC
+{
+ SlotName = "Horizontal spiegeln";
+ SlotName [ english ] = "Horizontal spiegeln";
+ SlotName[ english_us ] = "Flip Horizontal";
+ SlotName[ portuguese ] = "Reflectir na horizontal";
+ SlotName[ russian ] = "Îòîáðàçèòü ïî ãîðèçîíòàëè";
+ SlotName[ dutch ] = "Horizontaal spiegelen";
+ SlotName[ french ] = "Refléter horizontalement";
+ SlotName[ spanish ] = "Reflejar horizontal";
+ SlotName[ italian ] = "Rispecchia orizzontalmente";
+ SlotName[ danish ] = "Spejlvend vandret";
+ SlotName[ swedish ] = "Spegla horisontellt";
+ SlotName[ polish ] = "Przerzuæ w poziomie";
+ SlotName[ portuguese_brazilian ] = "GraphicFlipHorizontal";
+ SlotName[ japanese ] = "㉺”½“]";
+ SlotName[ chinese_simplified ] = "ˮƽ·½Ïò·´Ó³";
+ SlotName[ chinese_traditional ] = "¤ô¥­¤Ï¬M";
+ SlotName[ arabic ] = "ÇäÚßÇÓ ÃÝÞí";
+ SlotName[ dutch ] = "Horizontaal spiegelen";
+ SlotName[ chinese_simplified ] = "ˮƽ·½Ïò·´Ó³";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ greek ] = "Ïñéæüíôéá áíáóôñïöÞ";
+ SlotName[ korean ] = "¼öÆòÀ¸·Î ´ëĪ";
+ SlotName[ turkish ] = "Yatay yansýt";
+};
+SfxSlotInfo FN_FLIP_VERT_GRAFIC
+{
+ SlotName = "Vertikal spiegeln";
+ SlotName [ english ] = "Vertikal spiegeln";
+ SlotName[ english_us ] = "Flip Vertical";
+ SlotName[ portuguese ] = "Reflectir na vertical";
+ SlotName[ russian ] = "Îòîáðàçèòü ïî âåðòèêàëè";
+ SlotName[ dutch ] = "Verticaal spiegelen";
+ SlotName[ french ] = "Refléter verticalement";
+ SlotName[ spanish ] = "Reflejar verticalmente";
+ SlotName[ italian ] = "Rispecchia verticalmente";
+ SlotName[ danish ] = "Spejlvend lodret";
+ SlotName[ swedish ] = "Spegla vertikalt";
+ SlotName[ polish ] = "Przerzuæ w pionie";
+ SlotName[ portuguese_brazilian ] = "FlipImageVertical";
+ SlotName[ japanese ] = "¶‰E”½“]";
+ SlotName[ chinese_simplified ] = "´¹Ö±·´Ó³";
+ SlotName[ chinese_traditional ] = "««ª½¤Ï¬M";
+ SlotName[ arabic ] = "ÇäÚßÇÓ ÑÃÓí";
+ SlotName[ dutch ] = "Verticaal spiegelen";
+ SlotName[ chinese_simplified ] = "´¹Ö±·´Ó³";
+ SlotName[ greek ] = "ÊÜèåôç áíáóôñïöÞ";
+ SlotName[ korean ] = "¼öÁ÷À¸·Î ´ëĪ";
+ SlotName[ turkish ] = "Dikey yansýt";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FOOTNOTE_TO_ANCHOR
+{
+ SlotName = "Zu Fußnote/Anker";
+ SlotName [ english ] = "Zu Fußnote/Anker";
+ SlotName[ english_us ] = "To Footnote Anchor";
+ SlotName[ portuguese ] = "Ir para nota de rodapé/âncora";
+ SlotName[ russian ] = "Äî ñíîñêè/ïðèâÿçêè";
+ SlotName[ dutch ] = "Naar voetnoot/anker";
+ SlotName[ french ] = "À la note d.b.d. page/l'appel de note";
+ SlotName[ spanish ] = "Ir a la nota al pie/Ancla";
+ SlotName[ italian ] = "Alla nota a piè pagina/richiamo";
+ SlotName[ danish ] = "Til fodnote/anker";
+ SlotName[ swedish ] = "Till fotnot/ankare";
+ SlotName[ polish ] = "Do przypisu dolnego/kotwicy";
+ SlotName[ portuguese_brazilian ] = "GoToFootnoteOrAnchor";
+ SlotName[ japanese ] = "‹r’/±Ý¶°‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½×¢½Å/±ê¼Ç";
+ SlotName[ chinese_traditional ] = "Âà¨ìµù¸}/¼Ð¸¹";
+ SlotName[ arabic ] = "Åáì ÇáÍÇÔíÉ ÇáÓÝáíÉ/ÇáÅÑÓÇÁ";
+ SlotName[ dutch ] = "Naar voetnoot/anker";
+ SlotName[ chinese_simplified ] = "תµ½×¢½Å/±ê¼Ç";
+ SlotName[ greek ] = "Ðñïò Õðïóçìåßùóç/Áãêýñùóç";
+ SlotName[ korean ] = "¹Ù´Ú±Û °íÁ¤ À§Ä¡·Î";
+ SlotName[ turkish ] = "Dipnot/sabitleyici";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FORMAT_BACKGROUND_DLG
+{
+ SlotName = "Hintergrund";
+ SlotName [ english ] = "Hintergrund";
+ SlotName[ english_us ] = "Background";
+ SlotName[ portuguese ] = "Plano de fundo";
+ SlotName[ russian ] = "Ôîí";
+ SlotName[ dutch ] = "Achtergrond";
+ SlotName[ french ] = "Arrière-plan";
+ SlotName[ spanish ] = "Fondo";
+ SlotName[ italian ] = "Sfondo";
+ SlotName[ danish ] = "Baggrund";
+ SlotName[ swedish ] = "Bakgrund";
+ SlotName[ polish ] = "T³o";
+ SlotName[ portuguese_brazilian ] = "Background";
+ SlotName[ japanese ] = "”wŒi";
+ SlotName[ chinese_simplified ] = "±³¾°";
+ SlotName[ chinese_traditional ] = "­I´º";
+ SlotName[ arabic ] = "ÇáÎáÝíÉ";
+ SlotName[ dutch ] = "Achtergrond";
+ SlotName[ chinese_simplified ] = "±³¾°";
+ SlotName[ greek ] = "Öüíôï";
+ SlotName[ korean ] = "¹è°æ";
+ SlotName[ turkish ] = "Artalan";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FORMAT_BORDER_DLG
+{
+ SlotName = "Umrandung";
+ SlotName [ english ] = "Umrandung";
+ SlotName[ english_us ] = "Borders";
+ SlotName[ portuguese ] = "Contornos";
+ SlotName[ russian ] = "Îáðàìëåíèå";
+ SlotName[ dutch ] = "Omranding";
+ SlotName[ french ] = "Bordure";
+ SlotName[ spanish ] = "Borde";
+ SlotName[ italian ] = "Bordo";
+ SlotName[ danish ] = "Ramme";
+ SlotName[ swedish ] = "Inramning";
+ SlotName[ polish ] = "Obramowanie";
+ SlotName[ portuguese_brazilian ] = "Borders";
+ SlotName[ japanese ] = "ŠO˜g";
+ SlotName[ chinese_simplified ] = "±ß¿ò";
+ SlotName[ chinese_traditional ] = "Ãä®Ø";
+ SlotName[ arabic ] = "ÍÏæÏ";
+ SlotName[ dutch ] = "Omranding";
+ SlotName[ chinese_simplified ] = "±ß¿ò";
+ SlotName[ greek ] = "Ðåñßãñáììá";
+ SlotName[ korean ] = "°æ°è¼±";
+ SlotName[ turkish ] = "Kenarlýk";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FORMAT_DROPCAPS
+{
+ SlotName = "Initialien";
+ SlotName [ english ] = "Initialien";
+ SlotName[ english_us ] = "Drop Caps";
+ SlotName[ portuguese ] = "Iniciais";
+ SlotName[ russian ] = "Áóêâèöà";
+ SlotName[ dutch ] = "Initialen";
+ SlotName[ french ] = "Lettrines";
+ SlotName[ spanish ] = "Iniciales";
+ SlotName[ italian ] = "Capolettera";
+ SlotName[ danish ] = "Initialer";
+ SlotName[ swedish ] = "Anfangsbokstäver";
+ SlotName[ polish ] = "Inicja³y";
+ SlotName[ portuguese_brazilian ] = "FormatInitial";
+ SlotName[ japanese ] = "ÄÞÛ¯Ìß·¬¯Ìß";
+ SlotName[ chinese_simplified ] = "µ¥´ÊÊ××Öĸ´óд";
+ SlotName[ chinese_traditional ] = "¦r­º¤j¼g";
+ SlotName[ arabic ] = "ÇáÃÍÑÝ ÇáÇÓÊåáÇáíÉ";
+ SlotName[ dutch ] = "Initialen";
+ SlotName[ chinese_simplified ] = "µ¥´ÊÊ××Öĸ´óд";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ greek ] = "Áñ÷ßãñáììá";
+ SlotName[ korean ] = "´ë¹®ÀÚ ³õ±â";
+ SlotName[ turkish ] = "Baþharfler";
+};
+SfxSlotInfo FN_FORMAT_FOOTNOTE_DLG
+{
+ SlotName = "Fußnoten";
+ SlotName [ english ] = "Fußnoten";
+ SlotName[ english_us ] = "Footnotes";
+ SlotName[ portuguese ] = "Notas de rodapé";
+ SlotName[ russian ] = "Ñíîñêè";
+ SlotName[ dutch ] = "Voetnoten";
+ SlotName[ french ] = "Notes de bas de page";
+ SlotName[ spanish ] = "Notas al pie";
+ SlotName[ italian ] = "Note a piè pagina";
+ SlotName[ danish ] = "Fodnoter";
+ SlotName[ swedish ] = "Fotnoter";
+ SlotName[ polish ] = "Przypisy";
+ SlotName[ portuguese_brazilian ] = "ToolsFootnote";
+ SlotName[ japanese ] = "‹r’";
+ SlotName[ chinese_simplified ] = "×¢½Å";
+ SlotName[ chinese_traditional ] = "µù¸}";
+ SlotName[ arabic ] = "ÍæÇÔí ÓÝáíÉ";
+ SlotName[ dutch ] = "Voetnoten";
+ SlotName[ chinese_simplified ] = "×¢½Å";
+ SlotName[ greek ] = "Õðïóçìåéþóåéò";
+ SlotName[ korean ] = "¹Ù´Ú±Û";
+ SlotName[ turkish ] = "Dipnot";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FORMAT_FRAME_DLG
+{
+ SlotName = "Rahmen Eigenschaften";
+ SlotName [ english ] = "Rahmen Eigenschaften";
+ SlotName[ english_us ] = "Frame Properties";
+ SlotName[ portuguese ] = "Propriedades da moldura";
+ SlotName[ russian ] = "Ñâîéñòâà ðàìêè";
+ SlotName[ dutch ] = "Kadereigenschappen";
+ SlotName[ french ] = "Propriétés du cadre";
+ SlotName[ spanish ] = "Propiedades del marco";
+ SlotName[ italian ] = "Proprietà cornice";
+ SlotName[ danish ] = "Ramme-egenskaber";
+ SlotName[ swedish ] = "Ram egenskaper";
+ SlotName[ polish ] = "Edytuj ramkê";
+ SlotName[ portuguese_brazilian ] = "FormatFrame";
+ SlotName[ japanese ] = "˜g‚ÌÌßÛÊßè";
+ SlotName[ chinese_simplified ] = "Îı¾¿òÊôÐÔ";
+ SlotName[ chinese_traditional ] = "¤å¦r¤è¶ôÄÝ©Ê";
+ SlotName[ arabic ] = "ÎÕÇÆÕ ÇáÅØÇÑ";
+ SlotName[ dutch ] = "Kadereigenschappen";
+ SlotName[ chinese_simplified ] = "Îı¾¿òÊôÐÔ";
+ SlotName[ greek ] = "Éäéüôçôåò ðëáéóßïõ";
+ SlotName[ korean ] = "ÇÁ·¹ÀÓ µî·ÏÁ¤º¸";
+ SlotName[ turkish ] = "Çerçeve özellikleri";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FORMAT_GRAFIC_DLG
+{
+ SlotName = "Grafik bearbeiten";
+ SlotName [ english ] = "Grafik bearbeiten";
+ SlotName[ english_us ] = "Edit Graphics";
+ SlotName[ portuguese ] = "Editar imagem";
+ SlotName[ russian ] = "Ïðàâêà ðèñóíêà";
+ SlotName[ dutch ] = "Afbeelding bewerken";
+ SlotName[ french ] = "Éditer une image";
+ SlotName[ spanish ] = "Editar imagen";
+ SlotName[ italian ] = "Modifica immagine";
+ SlotName[ danish ] = "Rediger billede";
+ SlotName[ swedish ] = "Redigera grafik";
+ SlotName[ polish ] = "Edytuj grafikê";
+ SlotName[ portuguese_brazilian ] = "FormatGraphics";
+ SlotName[ japanese ] = "}‚Ì•ÒW";
+ SlotName[ chinese_simplified ] = "±à¼­Í¼ÐÎ";
+ SlotName[ chinese_traditional ] = "½s¿è¹Ï¤ù";
+ SlotName[ arabic ] = "ÊÍÑíÑ ÕæÑÉ";
+ SlotName[ dutch ] = "Afbeelding bewerken";
+ SlotName[ chinese_simplified ] = "±à¼­Í¼ÐÎ";
+ SlotName[ greek ] = "Åðåîåñãáóßá ãñáöéêïý";
+ SlotName[ korean ] = "±×·¡ÇÈ ÆíÁý";
+ SlotName[ turkish ] = "Grafik düzenle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FORMAT_PAGE_COLUMN_DLG
+{
+ SlotName = "Seitenspalten";
+ SlotName [ english ] = "Seitenspalten";
+ SlotName[ english_us ] = "Page Columns";
+ SlotName[ portuguese ] = "Colunas de página";
+ SlotName[ russian ] = "Êîëîíêè ñòðàíèöû";
+ SlotName[ dutch ] = "Paginakolommen";
+ SlotName[ french ] = "Colonnes de page";
+ SlotName[ spanish ] = "Columnas de la página";
+ SlotName[ italian ] = "Colonne pagina";
+ SlotName[ danish ] = "Sidekolonner";
+ SlotName[ swedish ] = "Sidkolumner";
+ SlotName[ polish ] = "Kolumny na stronie";
+ SlotName[ portuguese_brazilian ] = "FormatPageColumn";
+ SlotName[ japanese ] = "’i‘g‚Ý";
+ SlotName[ chinese_simplified ] = "Ò³ÃæÀ¸";
+ SlotName[ chinese_traditional ] = "­¶­±Äæ";
+ SlotName[ arabic ] = "ÃÚãÏÉ ÇáÕÝÍÉ";
+ SlotName[ dutch ] = "Paginakolommen";
+ SlotName[ chinese_simplified ] = "Ò³ÃæÀ¸";
+ SlotName[ greek ] = "ÓôÞëåò óåëßäáò";
+ SlotName[ korean ] = "ÆäÀÌÁö ¿­";
+ SlotName[ turkish ] = "Sayfa sütunlarý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FORMAT_PAGE_DLG
+{
+ SlotName = "Seiteneinstellungen";
+ SlotName [ english ] = "Seiteneinstellungen";
+ SlotName[ english_us ] = "Page Settings";
+ SlotName[ portuguese ] = "Configurar página";
+ SlotName[ russian ] = "Íàñòðîéêè ñòðàíèöû";
+ SlotName[ dutch ] = "Pagina-instellingen";
+ SlotName[ french ] = "Paramètres de page";
+ SlotName[ spanish ] = "Configuración de página";
+ SlotName[ italian ] = "Impostazioni di pagina";
+ SlotName[ danish ] = "Sideopsætning";
+ SlotName[ swedish ] = "Sidinställningar";
+ SlotName[ polish ] = "Ustawienia strony";
+ SlotName[ portuguese_brazilian ] = "FormatPage";
+ SlotName[ japanese ] = "Íß°¼ÞÝ’è";
+ SlotName[ chinese_simplified ] = "Ò³ÃæÉ趨";
+ SlotName[ chinese_traditional ] = "³]©w­¶­±";
+ SlotName[ arabic ] = "ÅÚÏÇÏÇÊ ÇáÕÝÍÉ";
+ SlotName[ dutch ] = "Pagina-instellingen";
+ SlotName[ chinese_simplified ] = "Ò³ÃæÉ趨";
+ SlotName[ greek ] = "Äéáìüñöùóç óåëßäáò";
+ SlotName[ korean ] = "ÆäÀÌÁö ¼³Á¤";
+ SlotName[ turkish ] = "Sayfa yapýsý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FORMAT_RESET
+{
+ SlotName = "Zeichenattribute zurücksetzen";
+ SlotName [ english ] = "Zeichenattribute zurücksetzen";
+ SlotName[ english_us ] = "Reset Font Attributes";
+ SlotName[ portuguese ] = "Repor atributos dos caracteres";
+ SlotName[ russian ] = "Âîññòàíîâèòü àòðèáóòû øðèôòà";
+ SlotName[ dutch ] = "Tekenattributen terugzetten";
+ SlotName[ french ] = "Restaurer les attributs de caractères";
+ SlotName[ spanish ] = "Restablecer fuentes";
+ SlotName[ italian ] = "Ripristina attributi carattere";
+ SlotName[ danish ] = "Nulstil tegnattributter";
+ SlotName[ swedish ] = "Återställ teckenattribut";
+ SlotName[ polish ] = "Zresetuj atrybuty znaków";
+ SlotName[ portuguese_brazilian ] = "DefaultFont";
+ SlotName[ japanese ] = "•¶Žš‘®«‚Ìؾ¯Ä";
+ SlotName[ chinese_simplified ] = "ÖØÉè×Ö·ûÊôÐÔ";
+ SlotName[ chinese_traditional ] = "­«³]¦r¤¸ÄÝ©Ê";
+ SlotName[ arabic ] = "ÅÚÇÏÉ ÊÚííä ÓãÇÊ ÇáÎØæØ";
+ SlotName[ dutch ] = "Tekenattributen terugzetten";
+ SlotName[ chinese_simplified ] = "ÖØÉè×Ö·ûÊôÐÔ";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ greek ] = "ÅðáíáöïñÜ éäéïôÞôùí ÷áñáêôÞñùí";
+ SlotName[ korean ] = "±Û²Ã ¼Ó¼º ¿ø·¡´ë·Î";
+ SlotName[ turkish ] = "Yazýtipi öznitelikleri";
+};
+SfxSlotInfo FN_FORMAT_TABLE_DLG
+{
+ SlotName = "Tabelle bearbeiten";
+ SlotName [ english ] = "Tabelle bearbeiten";
+ SlotName[ english_us ] = "Edit Table";
+ SlotName[ portuguese ] = "Editar tabela";
+ SlotName[ russian ] = "Ïðàâêà òàáëèöû";
+ SlotName[ dutch ] = "Tabel bewerken";
+ SlotName[ french ] = "Éditer le tableau";
+ SlotName[ spanish ] = "Editar tabla";
+ SlotName[ italian ] = "Modifica tabella";
+ SlotName[ danish ] = "Rediger tabel";
+ SlotName[ swedish ] = "Redigera tabell";
+ SlotName[ polish ] = "Edytuj tabelê";
+ SlotName[ portuguese_brazilian ] = "FormatTable";
+ SlotName[ japanese ] = "•\\‚Ì•ÒW";
+ SlotName[ chinese_simplified ] = "±à¼­±í¸ñ";
+ SlotName[ chinese_traditional ] = "½s¿èªí®æ";
+ SlotName[ arabic ] = "ÊÍÑíÑ ÌÏæá";
+ SlotName[ dutch ] = "Tabel bewerken";
+ SlotName[ chinese_simplified ] = "±à¼­±í¸ñ";
+ SlotName[ greek ] = "Åðåîåñãáóßá ðßíáêá";
+ SlotName[ korean ] = "Ç¥ ÆíÁý";
+ SlotName[ turkish ] = "Tablo düzenle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_ALIGN_HORZ_CENTER
+{
+ SlotName = "Horizontal zentrieren";
+ SlotName [ english ] = "Horizontal zentrieren";
+ SlotName[ english_us ] = "Center Horizontal";
+ SlotName[ portuguese ] = "Centrar horizontalmente";
+ SlotName[ russian ] = "Öåíòðèðîâàòü ïî ãîðèçîíòàëè";
+ SlotName[ dutch ] = "Horizontaal centreren";
+ SlotName[ french ] = "Centrer horizontalement";
+ SlotName[ spanish ] = "Centrar horizontalmente";
+ SlotName[ italian ] = "Allinea orizzontale";
+ SlotName[ danish ] = "Centrer vandret";
+ SlotName[ swedish ] = "Centrera horisontellt";
+ SlotName[ polish ] = "Wyœrodkuj poziomo";
+ SlotName[ portuguese_brazilian ] = "PositionFrameCenteredHorizontal";
+ SlotName[ japanese ] = "’†‰›‘µ‚¦(¶‰E)";
+ SlotName[ chinese_simplified ] = "ˮƽ·½Ïò¾ÓÖÐ";
+ SlotName[ chinese_traditional ] = "¤ô¥­¸m¤¤";
+ SlotName[ arabic ] = "ÊæÓíØ ÃÝÞí";
+ SlotName[ dutch ] = "Horizontaal centreren";
+ SlotName[ chinese_simplified ] = "ˮƽ·½Ïò¾ÓÖÐ";
+ SlotName[ greek ] = "ÊåíôñÜñéóìá ïñéæïíôßùò";
+ SlotName[ korean ] = "°¡¿îµ¥ °¡·Î";
+ SlotName[ turkish ] = "Yatay ortala";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_ALIGN_HORZ_LEFT
+{
+ SlotName = "Links anordnen";
+ SlotName [ english ] = "Links anordnen";
+ SlotName[ english_us ] = "Align Left";
+ SlotName[ portuguese ] = "Alinhar à esquerda";
+ SlotName[ russian ] = "Âûðîâíÿòü ïî ëåâîìó êðàþ";
+ SlotName[ dutch ] = "Links positioneren";
+ SlotName[ french ] = "Aligner à gauche";
+ SlotName[ spanish ] = "Alinear a la izquierda";
+ SlotName[ italian ] = "Disponi a sinistra";
+ SlotName[ danish ] = "Placer til venstre";
+ SlotName[ swedish ] = "Placera till vänster";
+ SlotName[ polish ] = "Wyrównaj do lewej";
+ SlotName[ portuguese_brazilian ] = "PositionFrameLeft";
+ SlotName[ japanese ] = "¶‘µ‚¦";
+ SlotName[ chinese_simplified ] = "Ïò×ó¶ÔÆë";
+ SlotName[ chinese_traditional ] = "¦V¥ª¹ï»ô";
+ SlotName[ arabic ] = "ãÍÇÐÇÉ Åáì ÇáíÓÇÑ";
+ SlotName[ dutch ] = "Links positioneren";
+ SlotName[ chinese_simplified ] = "Ïò×ó¶ÔÆë";
+ SlotName[ greek ] = "Óôïß÷éóç áñéóôåñÜ";
+ SlotName[ korean ] = "¿ÞÂÊ ¸ÂÃã";
+ SlotName[ turkish ] = "Sola hizala";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_ALIGN_HORZ_RIGHT
+{
+ SlotName = "Rechts anordnen";
+ SlotName [ english ] = "Rechts anordnen";
+ SlotName[ english_us ] = "Align Right";
+ SlotName[ portuguese ] = "Alinhar à direita";
+ SlotName[ russian ] = "Âûðîâíÿòü ïî ïðàâîìó êðàþ";
+ SlotName[ dutch ] = "Rechts positioneren";
+ SlotName[ french ] = "Aligner à droite";
+ SlotName[ spanish ] = "Alinear a la derecha";
+ SlotName[ italian ] = "Disponi a destra";
+ SlotName[ danish ] = "Placer til højre";
+ SlotName[ swedish ] = "Placera till höger";
+ SlotName[ polish ] = "Wyrównaj do prawej";
+ SlotName[ portuguese_brazilian ] = "PositionFrameRight";
+ SlotName[ japanese ] = "‰E‘µ‚¦";
+ SlotName[ chinese_simplified ] = "ÏòÓÒ¶ÔÆë";
+ SlotName[ chinese_traditional ] = "¦V¥k¹ï»ô";
+ SlotName[ arabic ] = "ãÍÇÐÇÉ Åáì Çáíãíä";
+ SlotName[ dutch ] = "Rechts positioneren";
+ SlotName[ chinese_simplified ] = "ÏòÓÒ¶ÔÆë";
+ SlotName[ greek ] = "Óôïß÷éóç äåîéÜ";
+ SlotName[ korean ] = "¿À¸¥ÂÊ ¸ÂÃã";
+ SlotName[ turkish ] = "Saða hizala";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_ALIGN_VERT_BOTTOM
+{
+ SlotName = "Unten anordnen";
+ SlotName [ english ] = "Unten anordnen";
+ SlotName[ english_us ] = "Align Bottom";
+ SlotName[ portuguese ] = "Alinhar em baixo";
+ SlotName[ russian ] = "Âûðîâíÿòü ïî íèæíåìó êðàþ";
+ SlotName[ dutch ] = "Beneden positioneren";
+ SlotName[ french ] = "Aligner en bas";
+ SlotName[ spanish ] = "Alinear abajo";
+ SlotName[ italian ] = "Disponi in basso";
+ SlotName[ danish ] = "Placer nederst";
+ SlotName[ swedish ] = "Placera vid underkant";
+ SlotName[ polish ] = "Wyrównaj do do³u";
+ SlotName[ portuguese_brazilian ] = "PositionFrameBottom";
+ SlotName[ japanese ] = "‰º‘µ‚¦";
+ SlotName[ chinese_simplified ] = "Ïò϶ÔÆë";
+ SlotName[ chinese_traditional ] = "¦V¤U¹ï»ô";
+ SlotName[ arabic ] = "ãÍÇÐÇÉ Åáì ÃÓÝá";
+ SlotName[ dutch ] = "Beneden positioneren";
+ SlotName[ chinese_simplified ] = "Ïò϶ÔÆë";
+ SlotName[ greek ] = "Óôïß÷éóç êÜôù";
+ SlotName[ korean ] = "¾Æ·¡ ¸ÂÃã";
+ SlotName[ turkish ] = "Aþaðý hizala";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_ALIGN_VERT_CENTER
+{
+ SlotName = "Vertikal mittig anordnen";
+ SlotName [ english ] = "Vertikal mittig anordnen";
+ SlotName[ english_us ] = "Align Vertical Center";
+ SlotName[ portuguese ] = "Alinhar na vertical ao centro";
+ SlotName[ russian ] = "Âûðîâíÿòü ïî âåðòèêàëè â öåíòðå";
+ SlotName[ dutch ] = "Verticaal gecentreerd positioneren";
+ SlotName[ french ] = "Aligner verticalement au centre";
+ SlotName[ spanish ] = "Alinear al centro vertical";
+ SlotName[ italian ] = "Disponi al centro verticalmente";
+ SlotName[ danish ] = "Juster vandret centreret";
+ SlotName[ swedish ] = "Placera vertikalt centrerat";
+ SlotName[ polish ] = "Wyrównaj pionowo do œrodka";
+ SlotName[ portuguese_brazilian ] = "PositionFrameVerticalCenter";
+ SlotName[ japanese ] = "’†‰›‘µ‚¦(㉺j";
+ SlotName[ chinese_simplified ] = "´¹Ö±¾ÓÖжÔÆë";
+ SlotName[ chinese_traditional ] = "««ª½¸m¤¤¹ï»ô";
+ SlotName[ arabic ] = "ãÍÇÐÇÉ ãÑßÒíÉ ÑÃÓíÉ";
+ SlotName[ dutch ] = "Verticaal gecentreerd positioneren";
+ SlotName[ chinese_simplified ] = "´¹Ö±¾ÓÖжÔÆë";
+ SlotName[ greek ] = "Êáôáêüñõöç êåíôñáñéóìÝíç óôïß÷éóç";
+ SlotName[ korean ] = "¼¼·Î Áß¾Ó¿¡ ¸ÂÃã";
+ SlotName[ turkish ] = "Dikey ortaya hizala";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_ALIGN_VERT_CHAR_BOTTOM
+{
+ SlotName = "Am Zeichen unten anordnen";
+ SlotName [ english ] = "Am Zeichen unten anordnen";
+ SlotName[ english_us ] = "Align to Bottom of Character";
+ SlotName[ portuguese ] = "Alinhar abaixo do carácter";
+ SlotName[ russian ] = "Âûðîâíÿòü ïî çíàêó ñíèçó";
+ SlotName[ dutch ] = "Onder aan teken positioneren";
+ SlotName[ french ] = "Aligner au caractère en bas";
+ SlotName[ spanish ] = "Alinear debajo del carácter";
+ SlotName[ italian ] = "Allinea al carattere in basso";
+ SlotName[ danish ] = "Juster til tegn forneden";
+ SlotName[ swedish ] = "Placera vid tecknets underkant";
+ SlotName[ polish ] = "Wyrównaj do znaku na dole";
+ SlotName[ portuguese_brazilian ] = "PositionFrameCharBottom";
+ SlotName[ japanese ] = "‰º‘µ‚¦(•¶Žš)";
+ SlotName[ chinese_simplified ] = "Ïò×Ö·ûµ×²¿¶ÔÆë";
+ SlotName[ chinese_traditional ] = "¦V¤U©M¦r¤¸¹ï»ô";
+ SlotName[ arabic ] = "ãÍÇÐÇÉ Åáì ÃÓÝá ÇáÃÍÑÝ";
+ SlotName[ dutch ] = "Onder aan teken positioneren";
+ SlotName[ chinese_simplified ] = "Ïò×Ö·ûµ×²¿¶ÔÆë";
+ SlotName[ greek ] = "Óôïß÷éóç ùò ðñïò ÷áñáêôÞñá êÜôù";
+ SlotName[ korean ] = "¹®ÀÚÀÇ ¾Æ·¡¿¡ ¸ÂÃã";
+ SlotName[ turkish ] = "Karakterin alt kenarý ile hizala";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_ALIGN_VERT_CHAR_CENTER
+{
+ SlotName = "Am Zeichen vertikal mittig anordnen";
+ SlotName [ english ] = "Am Zeichen vertikal mittig anordnen";
+ SlotName[ english_us ] = "Align to Vertical Center of Character";
+ SlotName[ portuguese ] = "Alinhar na vertical ao centro do carácter";
+ SlotName[ russian ] = "Âûðîâíÿòü ïî çíàêó âåðòèêàëüíî â öåíòðå";
+ SlotName[ dutch ] = "Verticaal gecentreerd positioneren aan teken";
+ SlotName[ french ] = "Aligner au milieu vertical du caractère";
+ SlotName[ spanish ] = "Alinear al centro vertical del carácter";
+ SlotName[ italian ] = "Allinea al carattere verticalmente al centro";
+ SlotName[ danish ] = "Juster til tegn lodret centreret";
+ SlotName[ swedish ] = "Placera vertikalt centrerat till tecknet";
+ SlotName[ polish ] = "Umieœæ przy znaku pionowo w œrodku";
+ SlotName[ portuguese_brazilian ] = "PositionFrameVerticalCharCenter";
+ SlotName[ japanese ] = "’†‰›‘µ‚¦(•¶Žš¥ã‰º)";
+ SlotName[ chinese_simplified ] = "´¹Ö±¾ÓÖкÍ×Ö·û¶ÔÆë";
+ SlotName[ chinese_traditional ] = "««ª½¸m¤¤©M¦r¤¸¹ï»ô";
+ SlotName[ arabic ] = "ãÍÇÐÇÉ ÑÃÓíÉ ãÑßÒíÉ ÈÇáäÓÈÉ ááÃÍÑÝ";
+ SlotName[ dutch ] = "Verticaal gecentreerd positioneren aan teken";
+ SlotName[ chinese_simplified ] = "´¹Ö±¾ÓÖкÍ×Ö·û¶ÔÆë";
+ SlotName[ greek ] = "Êáôáêüñõöç êåíôñáñéóìÝíç óôïß÷éóç ùò ðñïò ÷áñáêôÞñá";
+ SlotName[ korean ] = "¹®ÀÚÀÇ ¼¼·Î °¡¿îµ¥ ¸ÂÃã";
+ SlotName[ turkish ] = "Karaktere göre dikey ortalayarak hizala";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_ALIGN_VERT_CHAR_TOP
+{
+ SlotName = "Am Zeichen oben anordnen";
+ SlotName [ english ] = "Am Zeichen oben anordnen";
+ SlotName[ english_us ] = "Align to Top of Character";
+ SlotName[ portuguese ] = "Alinhar acima do carácter";
+ SlotName[ russian ] = "Âûðîâíÿòü ïî çíàêó ñâåðõó";
+ SlotName[ dutch ] = "Boven aan teken positioneren";
+ SlotName[ french ] = "Aligner au caractère en haut";
+ SlotName[ spanish ] = "Alinear encima del carácter";
+ SlotName[ italian ] = "Allinea al carattere in alto";
+ SlotName[ danish ] = "Juster til tegn foroven";
+ SlotName[ swedish ] = "Placera vid tecknets överkant";
+ SlotName[ polish ] = "Wyrównaj do znaku w górze";
+ SlotName[ portuguese_brazilian ] = "PositionFrameCharTop";
+ SlotName[ japanese ] = "㑵‚¦(•¶Žš)";
+ SlotName[ chinese_simplified ] = "ºÍ×Ö·ûÉϲ¿¶ÔÆë";
+ SlotName[ chinese_traditional ] = "¦V¤W©M¦r¤¸¹ï»ô";
+ SlotName[ arabic ] = "ãÍÇÐÇÉ Åáì ÃÚáì ÇáÃÍÑÝ";
+ SlotName[ dutch ] = "Boven aan teken positioneren";
+ SlotName[ chinese_simplified ] = "ºÍ×Ö·ûÉϲ¿¶ÔÆë";
+ SlotName[ greek ] = "Óôïß÷éóç ùò ðñïò ÷áñáêôÞñá Üíù";
+ SlotName[ korean ] = "¹®ÀÚÀÇ À§¿¡ ¸ÂÃã";
+ SlotName[ turkish ] = "Karakterin üst kenarý ile hizala";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_ALIGN_VERT_ROW_BOTTOM
+{
+ SlotName = "An Zeile unten anordnen";
+ SlotName [ english ] = "An Zeile unten anordnen";
+ SlotName[ english_us ] = "Align to Bottom of Line";
+ SlotName[ portuguese ] = "Alinhar na linha inferior";
+ SlotName[ russian ] = "Âûðîâíÿòü ïî ñòðîêå ñíèçó";
+ SlotName[ dutch ] = "Onder aan regel positioneren";
+ SlotName[ french ] = "Aligner en bas de la ligne";
+ SlotName[ spanish ] = "Alinear debajo de la línea";
+ SlotName[ italian ] = "Allinea alla riga in basso";
+ SlotName[ danish ] = "Juster til række forneden";
+ SlotName[ swedish ] = "Placera vid radens underkant";
+ SlotName[ polish ] = "Wyrównaj do wiersza w dole";
+ SlotName[ portuguese_brazilian ] = "PositionFrameRowBottom";
+ SlotName[ japanese ] = "‰º‘µ‚¦(sj";
+ SlotName[ chinese_simplified ] = "ºÍÐеĵײ¿¶ÔÆë";
+ SlotName[ chinese_traditional ] = "©M¤U¤@¦æ¹ï»ô";
+ SlotName[ arabic ] = "ãÍÇÐÇÉ Åáì ÃÓÝá ÇáÓØÑ";
+ SlotName[ dutch ] = "Onder aan regel positioneren";
+ SlotName[ chinese_simplified ] = "ºÍÐеĵײ¿¶ÔÆë";
+ SlotName[ greek ] = "Óôïß÷éóç ùò ðñïò ãñáììÞ êÜôù";
+ SlotName[ korean ] = "¼±ÀÇ ¹Ø¿¡ ¸ÂÃã";
+ SlotName[ turkish ] = "Satýrýn alt kenarý ile hizala";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_ALIGN_VERT_ROW_CENTER
+{
+ SlotName = "An Zeile vertikal mittig anordnen";
+ SlotName [ english ] = "An Zeile vertikal mittig anordnen";
+ SlotName[ english_us ] = "Align to Vertical Center of Line";
+ SlotName[ portuguese ] = "Centrar objecto verticalmente na linha";
+ SlotName[ russian ] = "Âûðîâíÿòü ïî ñòðîêå âåðòèêàëüíî â öåíòðå";
+ SlotName[ dutch ] = "Verticaal gecentreerd positioneren aan regel";
+ SlotName[ french ] = "Aligner au milieu vertical de la ligne";
+ SlotName[ spanish ] = "Alinear centro vertical línea";
+ SlotName[ italian ] = "Allinea alla riga verticale al centro";
+ SlotName[ danish ] = "Juster til række lodret centreret";
+ SlotName[ swedish ] = "Placera vertikalt centrerat på raden";
+ SlotName[ polish ] = "Umieœæ przy wierszu pionowo w œrodku";
+ SlotName[ portuguese_brazilian ] = "PositionFrameVerticalRowCenter";
+ SlotName[ japanese ] = "’†‰›‘µ‚¦(s¥ã‰ºj";
+ SlotName[ chinese_simplified ] = "´¹Ö±¾ÓÖкÍÐжÔÆë";
+ SlotName[ chinese_traditional ] = "««ª½¸m¤¤©M¦æ¹ï»ô";
+ SlotName[ arabic ] = "ãÍÇÐÇÉ ÑÃÓíÉ ãÑßÒíÉ ÈÇáäÓÈÉ ááÓØÑ";
+ SlotName[ dutch ] = "Verticaal gecentreerd positioneren aan regel";
+ SlotName[ chinese_simplified ] = "´¹Ö±¾ÓÖкÍÐжÔÆë";
+ SlotName[ greek ] = "Êáôáêüñõöç êåíôñáñéóìÝíç óôïß÷éóç ùò ðñïò ãñáììÞ";
+ SlotName[ korean ] = "¼±ÀÇ ¼¼·Î °¡¿îµ¥ ¸ÂÃã";
+ SlotName[ turkish ] = "Satýra göre dikey ortalayarak hizala";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_ALIGN_VERT_ROW_TOP
+{
+ SlotName = "An Zeile oben anordnen";
+ SlotName [ english ] = "An Zeile oben anordnen";
+ SlotName[ english_us ] = "Align to Top of Line";
+ SlotName[ portuguese ] = "Alinhar na linha superior";
+ SlotName[ russian ] = "Âûðîâíÿòü ïî ñòðîêå ñâåðõó";
+ SlotName[ dutch ] = "Boven aan regel positioneren";
+ SlotName[ french ] = "Aligner en haut de la ligne";
+ SlotName[ spanish ] = "Alinear encima de la línea";
+ SlotName[ italian ] = "Allinea alla riga in alto";
+ SlotName[ danish ] = "Juster til række foroven";
+ SlotName[ swedish ] = "Placera vid radens överkant";
+ SlotName[ polish ] = "Wyrównaj do wiersza w dole";
+ SlotName[ portuguese_brazilian ] = "PositionFrameRowTop";
+ SlotName[ japanese ] = "㑵‚¦(s)";
+ SlotName[ chinese_simplified ] = "ºÍÐеÄÉÏ·½¶ÔÆë";
+ SlotName[ chinese_traditional ] = "¦V¤W©M¦æ¹ï»ô";
+ SlotName[ arabic ] = "ãÍÇÐÇÉ Åáì ÃÚáì ÇáÓØÑ";
+ SlotName[ dutch ] = "Boven aan regel positioneren";
+ SlotName[ chinese_simplified ] = "ºÍÐеÄÉÏ·½¶ÔÆë";
+ SlotName[ greek ] = "Óôïß÷éóç ùò ðñïò ãñáììÞ Üíù";
+ SlotName[ korean ] = "¼±ÀÇ À§¿¡ ¸ÂÃã";
+ SlotName[ turkish ] = "Satýrýn üst kenarý ile hizala";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_ALIGN_VERT_TOP
+{
+ SlotName = "Oben anordnen";
+ SlotName [ english ] = "Oben anordnen";
+ SlotName[ english_us ] = "Align Top";
+ SlotName[ portuguese ] = "Alinhar em cima";
+ SlotName[ russian ] = "Âûðîâíÿòü ïî âåðõíåìó êðàþ";
+ SlotName[ dutch ] = "Boven positioneren";
+ SlotName[ french ] = "Aligner en haut";
+ SlotName[ spanish ] = "Alinear arriba";
+ SlotName[ italian ] = "Disponi in alto";
+ SlotName[ danish ] = "Placer øverst";
+ SlotName[ swedish ] = "Placera vid överkant";
+ SlotName[ polish ] = "Wyrównaj do góry";
+ SlotName[ portuguese_brazilian ] = "PositionFrameTop";
+ SlotName[ japanese ] = "㑵‚¦";
+ SlotName[ chinese_simplified ] = "ÏòÉ϶ÔÆë";
+ SlotName[ chinese_traditional ] = "¦V¤W¹ï»ô";
+ SlotName[ arabic ] = "ãÍÇÐÇÉ Åáì ÃÚáì";
+ SlotName[ dutch ] = "Boven positioneren";
+ SlotName[ chinese_simplified ] = "ÏòÉ϶ÔÆë";
+ SlotName[ greek ] = "Óôïß÷éóç ðÜíù";
+ SlotName[ korean ] = "À§ ¸ÂÃã";
+ SlotName[ turkish ] = "Yukarý hizala";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_CHAIN
+{
+ SlotName = "Verketten";
+ SlotName [ english ] = "Verketten";
+ SlotName[ english_us ] = "Link Frames";
+ SlotName[ portuguese ] = "Ligar molduras";
+ SlotName[ russian ] = "Ñöåïëåíèå";
+ SlotName[ dutch ] = "Koppelen";
+ SlotName[ french ] = "Enchaîner";
+ SlotName[ spanish ] = "Vincular marcos";
+ SlotName[ italian ] = "Concatena";
+ SlotName[ danish ] = "Kæd";
+ SlotName[ swedish ] = "Kedja";
+ SlotName[ polish ] = "Po³¹cz";
+ SlotName[ portuguese_brazilian ] = "ChainFrames";
+ SlotName[ japanese ] = "÷½ÄÎÞ¯¸½‚̘AŒ‹";
+ SlotName[ chinese_simplified ] = "Á¬½Ó";
+ SlotName[ chinese_traditional ] = "³sµ²";
+ SlotName[ arabic ] = "ÑÈØ";
+ SlotName[ dutch ] = "Koppelen";
+ SlotName[ chinese_simplified ] = "Á¬½Ó";
+ SlotName[ greek ] = "Óýíäåóç";
+ SlotName[ korean ] = "ÇÁ·¹ÀÓ ¿¬°á";
+ SlotName[ turkish ] = "Baðla";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_DOWN
+{
+ SlotName = "Nach hinten";
+ SlotName [ english ] = "Nach hinten";
+ SlotName[ english_us ] = "Send Backward";
+ SlotName[ portuguese ] = "Para trás";
+ SlotName[ russian ] = "Íàçàä";
+ SlotName[ dutch ] = "Naar achteren";
+ SlotName[ french ] = "Vers l'arrière";
+ SlotName[ spanish ] = "Hacia atrás";
+ SlotName[ italian ] = "Indietro";
+ SlotName[ danish ] = "Flyt bagud";
+ SlotName[ swedish ] = "Bakåt";
+ SlotName[ polish ] = "Do ty³u";
+ SlotName[ portuguese_brazilian ] = "ObjectBackOne";
+ SlotName[ japanese ] = "Œã‚ë‚Ö";
+ SlotName[ chinese_simplified ] = "ºóÖÃ";
+ SlotName[ chinese_traditional ] = "«á¸m";
+ SlotName[ arabic ] = "ÅÑÓÇá ÎáÝÇð";
+ SlotName[ dutch ] = "Naar achteren";
+ SlotName[ chinese_simplified ] = "ºóÖÃ";
+ SlotName[ greek ] = "Ðßóù";
+ SlotName[ korean ] = "µÚ·Î º¸³»±â";
+ SlotName[ turkish ] = "Geriye gönder";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_MIRROR_ON_EVEN_PAGES
+{
+ SlotName = "Auf geraden Seiten spiegeln";
+ SlotName [ english ] = "Auf geraden Seiten spiegeln";
+ SlotName[ english_us ] = "Mirror Object on Even Pages";
+ SlotName[ portuguese ] = "Reflectir nas páginas pares";
+ SlotName[ russian ] = "Îòîáðàçèòü íà ÷åòíûõ ñòðàíèöàõ";
+ SlotName[ dutch ] = "Op even pagina's spiegelen";
+ SlotName[ french ] = "Refléter sur les pages paires";
+ SlotName[ spanish ] = "Reflejar objeto en páginas pares";
+ SlotName[ italian ] = "Rispecchia sulle pagine pari";
+ SlotName[ danish ] = "Spejlvend på lige sider";
+ SlotName[ swedish ] = "Spegla på jämna sidor";
+ SlotName[ polish ] = "Przerzuæ na parzystych stronach";
+ SlotName[ portuguese_brazilian ] = "MirrorOnEvenPages";
+ SlotName[ japanese ] = "‹ô”Íß°¼Þ‚É”½“]";
+ SlotName[ chinese_simplified ] = "·´Ó³µ½Å¼ÊýÒ³Ãæ";
+ SlotName[ chinese_traditional ] = "¤Ï¬M¨ì°¸¼Æ­¶­±";
+ SlotName[ arabic ] = "ÇäÚßÇÓ Úáì ÇáÕÝÍÇÊ ÇáÒæÌíÉ";
+ SlotName[ dutch ] = "Op even pagina's spiegelen";
+ SlotName[ chinese_simplified ] = "·´Ó³µ½Å¼ÊýÒ³Ãæ";
+ SlotName[ greek ] = "Êáôïðôñéóìüò óå ìïíÝò óåëßäåò";
+ SlotName[ korean ] = "¦¼ö ÆäÀÌÁö¿¡¼­ ´ëĪ";
+ SlotName[ turkish ] = "Çift numaralý sayfalarda yansýt";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_NOWRAP
+{
+ SlotName = "Umlauf aus";
+ SlotName [ english ] = "Umlauf aus";
+ SlotName[ english_us ] = "Wrap Off";
+ SlotName[ portuguese ] = "Desactivar ajuste";
+ SlotName[ russian ] = "Îòêë. îáòåêàíèå";
+ SlotName[ dutch ] = "Omloop uit";
+ SlotName[ french ] = "Pas d'adaptation";
+ SlotName[ spanish ] = "Desactivar Ajuste";
+ SlotName[ italian ] = "Scorrimento off";
+ SlotName[ danish ] = "Deaktiver ombrydning";
+ SlotName[ swedish ] = "Textanpassning av";
+ SlotName[ polish ] = "Wy³¹cz obieg";
+ SlotName[ portuguese_brazilian ] = "FrameWrapOff";
+ SlotName[ japanese ] = "Ü‚è•Ô‚µ@µÌ";
+ SlotName[ chinese_simplified ] = "²»Ê¹Óû·ÈÆ";
+ SlotName[ chinese_traditional ] = "¤£¨Ï¥ÎÀô¶´«¦æ";
+ SlotName[ arabic ] = "ÅíÞÇÝ ÇáÇáÊÝÇÝ";
+ SlotName[ dutch ] = "Omloop uit";
+ SlotName[ chinese_simplified ] = "²»Ê¹Óû·ÈÆ";
+ SlotName[ greek ] = "Áðåíåñãïðïßçóç áíáäßðëùóçò";
+ SlotName[ korean ] = "¼øȯ ÇØÁ¦";
+ SlotName[ turkish ] = "Metin daðýlýmý kapalý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_TO_ANCHOR
+{
+ SlotName = "Setze Cursor auf Anker";
+ SlotName [ english ] = "Setze Cursor auf Anker";
+ SlotName[ english_us ] = "Set Cursor To Anchor";
+ SlotName[ portuguese ] = "Colocar cursor sobre a âncora";
+ SlotName[ russian ] = "Óñòàíîâèòü êóðñîð ê ïðèâÿçêå";
+ SlotName[ dutch ] = "Zet cursor op anker";
+ SlotName[ french ] = "Positionne curseur sur l'ancre";
+ SlotName[ spanish ] = "Colocar cursor sobre ancla";
+ SlotName[ italian ] = "Porta cursore all'ancoraggio";
+ SlotName[ danish ] = "Sæt markør på anker";
+ SlotName[ swedish ] = "Sätt markören på ankaret";
+ SlotName[ polish ] = "Ustaw kursor na kotwicy";
+ SlotName[ portuguese_brazilian ] = "SetCursorToAnchor";
+ SlotName[ japanese ] = "¶°¿Ù‚ð±Ý¶°‚ÉÝ’u";
+ SlotName[ chinese_simplified ] = "Öùâ±êÓÚ±ê¼Ç´¦";
+ SlotName[ chinese_traditional ] = "¥ú¼ÐÂà¨ì¼Ð¸¹";
+ SlotName[ arabic ] = "æÖÚ ÇáãÄÔÑ Úáì ÇáÅÑÓÇÁ";
+ SlotName[ dutch ] = "Zet cursor op anker";
+ SlotName[ chinese_simplified ] = "Öùâ±êÓÚ±ê¼Ç´¦";
+ SlotName[ greek ] = "ÔïðïèÝôçóç äåßêôç óå áãêýñùóç";
+ SlotName[ korean ] = "Ä¿¼­ °íÁ¤ ¼³Á¤";
+ SlotName[ turkish ] = "Ýmleci, sabitleyici üzerine yerleþtir";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_UNCHAIN
+{
+ SlotName = "Verkettung lösen";
+ SlotName [ english ] = "Verkettung lösen";
+ SlotName[ english_us ] = "Unlink Frames";
+ SlotName[ portuguese ] = "Desligar molduras";
+ SlotName[ russian ] = "Îòìåíèòü ñöåïëåíèå";
+ SlotName[ dutch ] = "Koppeling verwijderen";
+ SlotName[ french ] = "Libérer l'enchaînement";
+ SlotName[ spanish ] = "Eliminar vínculo";
+ SlotName[ italian ] = "Annulla concatenazione";
+ SlotName[ danish ] = "Ophæv kæder";
+ SlotName[ swedish ] = "Lösgör sammanfogning";
+ SlotName[ polish ] = "Roz³¹cz ramki";
+ SlotName[ portuguese_brazilian ] = "UnhainFrames";
+ SlotName[ japanese ] = "÷½ÄÎÞ¯¸½˜AŒ‹‚̉ðœ";
+ SlotName[ chinese_simplified ] = "½â¿ªÁ¬½Ó";
+ SlotName[ chinese_traditional ] = "§R°£³sµ²";
+ SlotName[ arabic ] = "Ýß ÇáÊÑÇÈØ";
+ SlotName[ dutch ] = "Koppeling verwijderen";
+ SlotName[ chinese_simplified ] = "½â¿ªÁ¬½Ó";
+ SlotName[ greek ] = "ÊáôÜñãçóç óýíäåóçò";
+ SlotName[ korean ] = "ÇÁ·¹ÀÓ ¿¬°áÁß´Ü";
+ SlotName[ turkish ] = "Baðlamayý çöz";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_UP
+{
+ SlotName = "Nach vorn";
+ SlotName [ english ] = "Nach vorn";
+ SlotName[ english_us ] = "Bring Forward";
+ SlotName[ portuguese ] = "Para a frente";
+ SlotName[ russian ] = "Âïåðåä";
+ SlotName[ dutch ] = "Naar voren";
+ SlotName[ french ] = "Vers l'avant";
+ SlotName[ spanish ] = "Hacia adelante";
+ SlotName[ italian ] = "In avanti";
+ SlotName[ danish ] = "Flyt fremad";
+ SlotName[ swedish ] = "Framåt";
+ SlotName[ polish ] = "Do przodu";
+ SlotName[ portuguese_brazilian ] = "ObjectForwardOne";
+ SlotName[ japanese ] = "‘O‚Ö";
+ SlotName[ chinese_simplified ] = "Ç°ÖÃ";
+ SlotName[ chinese_traditional ] = "«e¸m";
+ SlotName[ arabic ] = "ÅÍÖÇÑ ÃãÇãÇð";
+ SlotName[ dutch ] = "Naar voren";
+ SlotName[ chinese_simplified ] = "Ç°ÖÃ";
+ SlotName[ greek ] = "Ðñïò ôá åìðñüò";
+ SlotName[ korean ] = "¾ÕÀ¸·Î °¡Á®¿À±â";
+ SlotName[ turkish ] = "Öne al";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_WRAP
+{
+ SlotName = "Umlauf ein";
+ SlotName [ english ] = "Umlauf ein";
+ SlotName[ english_us ] = "Wrap On";
+ SlotName[ portuguese ] = "Activar ajuste";
+ SlotName[ russian ] = "Âêë. îáòåêàíèå";
+ SlotName[ dutch ] = "Omloop in";
+ SlotName[ french ] = "Adaptation du texte";
+ SlotName[ spanish ] = "Activar Ajuste";
+ SlotName[ italian ] = "Scorrimento on";
+ SlotName[ danish ] = "Aktiver ombrydning";
+ SlotName[ swedish ] = "Textanpassning på";
+ SlotName[ polish ] = "W³¹cz obieg";
+ SlotName[ portuguese_brazilian ] = "FrameWrapOn";
+ SlotName[ japanese ] = "Ü‚è•Ô‚µ µÝ";
+ SlotName[ chinese_simplified ] = "ʹÓû·ÈÆ";
+ SlotName[ chinese_traditional ] = "¨Ï¥Î´«¦æ";
+ SlotName[ arabic ] = "ÊÔÛíá ÇáÇáÊÝÇÝ";
+ SlotName[ dutch ] = "Omloop in";
+ SlotName[ chinese_simplified ] = "ʹÓû·ÈÆ";
+ SlotName[ greek ] = "Åíåñãïðïßçóç áíáäßðëùóçò";
+ SlotName[ korean ] = "¼øȯ Àû¿ë";
+ SlotName[ turkish ] = "Metin daðýlýmý açýk";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_WRAP_CONTOUR
+{
+ SlotName = "Konturumlauf ein";
+ SlotName [ english ] = "Konturumlauf ein";
+ SlotName[ english_us ] = "Wrap Contour On";
+ SlotName[ portuguese ] = "Activar contornos";
+ SlotName[ russian ] = "Âêë. îáòåêàíèå ïî êîíòóðó";
+ SlotName[ dutch ] = "Contouromloop aan";
+ SlotName[ french ] = "Mode Contour";
+ SlotName[ spanish ] = "Contorno";
+ SlotName[ italian ] = "Scorrimento sul contorno on";
+ SlotName[ danish ] = "Aktiver konturombrydning";
+ SlotName[ swedish ] = "Konturanpassning på";
+ SlotName[ polish ] = "W³¹cz obieg konturu";
+ SlotName[ portuguese_brazilian ] = "WrapContour";
+ SlotName[ japanese ] = "—ÖŠsÜ‚è•Ô‚µ µÝ";
+ SlotName[ chinese_simplified ] = "ÏÔʾÂÖÀª»·ÈÆ";
+ SlotName[ chinese_traditional ] = "Åã¥Ü½ü¹øÀô¶";
+ SlotName[ arabic ] = "ÊÔÛíá ÇáÊÝÇÝ ÇáÍÏæÏ ÇáÎÇÑÌíÉ";
+ SlotName[ dutch ] = "Contouromloop aan";
+ SlotName[ chinese_simplified ] = "ÏÔʾÂÖÀª»·ÈÆ";
+ SlotName[ greek ] = "Ìå áíáäßðëùóç ðåñéãñÜììáôïò";
+ SlotName[ korean ] = "À±°û ¼øȯ Àû¿ë";
+ SlotName[ turkish ] = "Kontur açýk";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_WRAP_IDEAL
+{
+ SlotName = "Umlauf dynamisch";
+ SlotName [ english ] = "Umlauf dynamisch";
+ SlotName[ english_us ] = "Wrap Optimal";
+ SlotName[ portuguese ] = "Ajuste dinâmico";
+ SlotName[ russian ] = "Îáòåêàíèå îïòèìàëüíî";
+ SlotName[ dutch ] = "Omloop dynamisch";
+ SlotName[ french ] = "Adaptation dynamique";
+ SlotName[ spanish ] = "Ajuste dinámico";
+ SlotName[ italian ] = "Scorrimento dinamico";
+ SlotName[ danish ] = "Dynamisk ombrydning";
+ SlotName[ swedish ] = "Dynamisk textanpassning";
+ SlotName[ polish ] = "Obieg dynamiczny";
+ SlotName[ portuguese_brazilian ] = "FrameWrapIdeal";
+ SlotName[ japanese ] = "“®“I‚ÈÜ‚è•Ô‚µ";
+ SlotName[ chinese_simplified ] = "×î¼Ñ»·ÈÆ";
+ SlotName[ chinese_traditional ] = "¦Û°ÊÀô¶´«¦æ";
+ SlotName[ arabic ] = "ÇáÊÝÇÝ ÏíäÇãíßí";
+ SlotName[ dutch ] = "Omloop dynamisch";
+ SlotName[ chinese_simplified ] = "×î¼Ñ»·ÈÆ";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ greek ] = "ÄõíáìéêÞ áíáäßðëùóç";
+ SlotName[ korean ] = "ÃÖÀû ¼øȯ";
+ SlotName[ turkish ] = "Dinamik metin daðýlýmý";
+};
+SfxSlotInfo FN_FRAME_WRAP_LEFT
+{
+ SlotName = "Umlauf links";
+ SlotName [ english ] = "Umlauf links";
+ SlotName[ english_us ] = "Wrap Left";
+ SlotName[ portuguese ] = "Ajuste à esquerda";
+ SlotName[ russian ] = "Îáòåêàíèå ñëåâà";
+ SlotName[ dutch ] = "Omloop links";
+ SlotName[ french ] = "Adaptation à gauche";
+ SlotName[ spanish ] = "Ajuste izquierda";
+ SlotName[ italian ] = "Scorrimento a sinistra";
+ SlotName[ danish ] = "Ombrydning til venstre";
+ SlotName[ swedish ] = "Textanpassning vänster";
+ SlotName[ polish ] = "Obieg z lewej";
+ SlotName[ portuguese_brazilian ] = "WrapLeft";
+ SlotName[ japanese ] = "Ü‚è•Ô‚µ ¶";
+ SlotName[ chinese_simplified ] = "×óÏò»·ÈÆ";
+ SlotName[ chinese_traditional ] = "¥ª¦V´«¦æ";
+ SlotName[ arabic ] = "ÇáÊÝÇÝ Åáì ÇáíÓÇÑ";
+ SlotName[ dutch ] = "Omloop links";
+ SlotName[ chinese_simplified ] = "×óÏò»·ÈÆ";
+ SlotName[ greek ] = "Áíáäßðëùóç áñéóôåñÜ";
+ SlotName[ korean ] = "¿ÞÂÊ ¼øȯ";
+ SlotName[ turkish ] = "Sol metin daðýlýmý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_WRAP_RIGHT
+{
+ SlotName = "Umlauf rechts";
+ SlotName [ english ] = "Umlauf rechts";
+ SlotName[ english_us ] = "Wrap Right";
+ SlotName[ portuguese ] = "Ajuste à direita";
+ SlotName[ russian ] = "Îáòåêàíèå ñïðàâà";
+ SlotName[ dutch ] = "Omloop rechts";
+ SlotName[ french ] = "Adaptation à droite";
+ SlotName[ spanish ] = "Ajuste derecha";
+ SlotName[ italian ] = "Scorrimento a destra";
+ SlotName[ danish ] = "Ombrydning til højre";
+ SlotName[ swedish ] = "Textanpassning höger";
+ SlotName[ polish ] = "Obieg z prawej";
+ SlotName[ portuguese_brazilian ] = "WrapRight";
+ SlotName[ japanese ] = "Ü‚è•Ô‚µ ‰E";
+ SlotName[ chinese_simplified ] = "ÓÒÏò»·ÈÆ";
+ SlotName[ chinese_traditional ] = "¥k¦V´«¦æ";
+ SlotName[ arabic ] = "ÇáÊÝÇÝ Åáì Çáíãíä";
+ SlotName[ dutch ] = "Omloop rechts";
+ SlotName[ chinese_simplified ] = "ÓÒÏò»·ÈÆ";
+ SlotName[ greek ] = "Áíáäßðëùóç äåîéÜ";
+ SlotName[ korean ] = "¿À¸¥ÂÊ ¼øȯ";
+ SlotName[ turkish ] = "Sað metin daðýlýmý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_WRAPTHRU
+{
+ SlotName = "Durchlauf";
+ SlotName [ english ] = "Durchlauf";
+ SlotName[ english_us ] = "Wrap Through";
+ SlotName[ portuguese ] = "Através do objecto";
+ SlotName[ russian ] = "Ñêâîçíîå îáòåêàíèå";
+ SlotName[ dutch ] = "Doorloop";
+ SlotName[ french ] = "À travers";
+ SlotName[ spanish ] = "Continuo";
+ SlotName[ italian ] = "Attraverso";
+ SlotName[ danish ] = "Gennemgående";
+ SlotName[ swedish ] = "Textgenomflöde";
+ SlotName[ polish ] = "Przep³yw tekstu";
+ SlotName[ portuguese_brazilian ] = "FrameWrapThrough";
+ SlotName[ japanese ] = "Ü‚è•Ô‚µ‚È‚µ";
+ SlotName[ chinese_simplified ] = "¹á´©";
+ SlotName[ chinese_traditional ] = "¤£Àô¶";
+ SlotName[ arabic ] = "ÚÈÑ";
+ SlotName[ dutch ] = "Doorloop";
+ SlotName[ chinese_simplified ] = "¹á´©";
+ SlotName[ greek ] = "Äéá ìÝóïõ";
+ SlotName[ korean ] = "Àüü ¼øȯ";
+ SlotName[ turkish ] = "Metin arkasýna gönder";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FRAME_WRAPTHRU_TRANSP
+{
+ SlotName = "Durchlauf transparent";
+ SlotName [ english ] = "Durchlauf transparent";
+ SlotName[ english_us ] = "Wrap Transparent";
+ SlotName[ portuguese ] = "Ajuste contínuo transparente";
+ SlotName[ russian ] = "Ïðîçðà÷íîå ñêâîçíîå îáòåêàíèå";
+ SlotName[ dutch ] = "Doorloop transparant";
+ SlotName[ french ] = "À l'arrière-plan transparent";
+ SlotName[ spanish ] = "Continuo transparente";
+ SlotName[ italian ] = "Attraversa trasparente";
+ SlotName[ danish ] = "Transparent gennemgående";
+ SlotName[ swedish ] = "Tranparent textgenomflöde";
+ SlotName[ polish ] = "Przezroczysty przep³yw tekstu";
+ SlotName[ portuguese_brazilian ] = "FrameWrapThroughTransparent";
+ SlotName[ japanese ] = "”wŒi‚Æ‚µ‚Ä";
+ SlotName[ chinese_simplified ] = "͸Ã÷¹á´©";
+ SlotName[ chinese_traditional ] = "¤£Àô¶³z©ú";
+ SlotName[ arabic ] = "ÇáÊÝÇÝ ÔÝÇÝ";
+ SlotName[ dutch ] = "Doorloop transparant";
+ SlotName[ chinese_simplified ] = "͸Ã÷¹á´©";
+ SlotName[ greek ] = "Áíáäßðëùóç äéáöáíÝò";
+ SlotName[ korean ] = "Åõ¸í ¼øȯ";
+ SlotName[ turkish ] = "Metin arkasýna gönder (saydam)";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_GLOSSARY_DLG
+{
+ SlotName = "Autotext bearbeiten";
+ SlotName [ english ] = "Autotext bearbeiten";
+ SlotName[ english_us ] = "Edit AutoText";
+ SlotName[ portuguese ] = "Editar AutoTexto";
+ SlotName[ russian ] = "Ïðàâêà Àâòîòåêñòà";
+ SlotName[ dutch ] = "AutoTekst bewerken";
+ SlotName[ french ] = "Éditer l'AutoTexte";
+ SlotName[ spanish ] = "Editar AutoTexto";
+ SlotName[ italian ] = "Modifica testo automatico";
+ SlotName[ danish ] = "Rediger AutoTekst";
+ SlotName[ swedish ] = "Redigera AutoText";
+ SlotName[ polish ] = "Edytuj autotekst";
+ SlotName[ portuguese_brazilian ] = "EditAutoText";
+ SlotName[ japanese ] = "“ü—ÍŽx‰‡‚Å•ÒW";
+ SlotName[ chinese_simplified ] = "±à¼­×Ô¶¯Í¼Îļ¯";
+ SlotName[ chinese_traditional ] = "½s¿è¦Û°Ê¹Ï¤å¶°";
+ SlotName[ arabic ] = "ÊÍÑíÑ ÇáäÕ ÇáÊáÞÇÆí";
+ SlotName[ dutch ] = "AutoTekst bewerken";
+ SlotName[ chinese_simplified ] = "±à¼­×Ô¶¯Í¼Îļ¯";
+ SlotName[ greek ] = "ÁõôïÊåßìåíï";
+ SlotName[ korean ] = "ÀÚµ¿ ÅؽºÆ®";
+ SlotName[ turkish ] = "Otomatik metni düzenle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_GOTO_NEXT_INPUTFLD
+{
+ SlotName = "Zum nächsten Eingabefeld";
+ SlotName [ english ] = "Zum nächsten Eingabefeld";
+ SlotName[ english_us ] = "To Next Input Field";
+ SlotName[ portuguese ] = "Ir para campo de entrada seguinte";
+ SlotName[ russian ] = "Ïåðåéòè ê ñëåäóþùåìó ïîëþ ââîäà";
+ SlotName[ dutch ] = "Naar volgend invoerveld";
+ SlotName[ french ] = "Au champ de saisie suivant";
+ SlotName[ spanish ] = "Ir al campo de entrada siguiente";
+ SlotName[ italian ] = "Al campo di digitazione successivo";
+ SlotName[ danish ] = "Til næste input-felt";
+ SlotName[ swedish ] = "Till nästa inmatningsfält";
+ SlotName[ polish ] = "Do nastêpnego pola wprowadzania";
+ SlotName[ portuguese_brazilian ] = "GotoNextInputField";
+ SlotName[ japanese ] = "ŽŸ‚Ì“ü—ÍÎÞ¯¸½‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸öÊäÈë×Ö¶Î";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@­Ó¿é¤JÄæ¦ì";
+ SlotName[ arabic ] = "Åáì ÍÞá ÇáÅÏÎÇá ÇáÊÇáí";
+ SlotName[ dutch ] = "Naar volgend invoerveld";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸öÊäÈë×Ö¶Î";
+ SlotName[ greek ] = "Ðñïò ôï åðüìåíï ðåäßï åéóáãùãÞò";
+ SlotName[ korean ] = "´ÙÀ½ ÀÔ·Â Çʵå·Î";
+ SlotName[ turkish ] = "Sonraki giriþ alaný";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_GOTO_NEXT_MARK
+{
+ SlotName = "Zum nächsten Platzhalter";
+ SlotName [ english ] = "Zum nächsten Platzhalter";
+ SlotName[ english_us ] = "To Next Placeholder";
+ SlotName[ portuguese ] = "Marcador de posição seguinte";
+ SlotName[ russian ] = "Ïåðåéòè ê ñëåäóþùåìó ìåñòîçàïîëíèòåëþ";
+ SlotName[ dutch ] = "Naar volgende plaatsvervanger";
+ SlotName[ french ] = "Au substituant suivant";
+ SlotName[ spanish ] = "Ir al comodín siguiente";
+ SlotName[ italian ] = "Al segnaposto successivo";
+ SlotName[ danish ] = "Til næste pladsholder";
+ SlotName[ swedish ] = "Till nästa platshållare";
+ SlotName[ polish ] = "Do nastêpnego znaku- wype³niacza";
+ SlotName[ portuguese_brazilian ] = "GotoNextPlacemarker";
+ SlotName[ japanese ] = "ŽŸ‚ÌÌßÚ°½ÎÙÀÞ‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸öͨÅä·û";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@­Ó³q°t²Å";
+ SlotName[ arabic ] = "Åáì ÇáÚäÕÑ ÇáäÇÆÈ ÇáÊÇáí";
+ SlotName[ dutch ] = "Naar volgende plaatsvervanger";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸öͨÅä·û";
+ SlotName[ greek ] = "Ðñïò ôï åðüìåíï óýìâïëï êñÜôçóçò èÝóçò";
+ SlotName[ korean ] = "´ÙÀ½ °³Ã¼Æ²·Î";
+ SlotName[ turkish ] = "Sonraki genel arama karakteri";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_GOTO_NEXT_OBJ
+{
+ SlotName = "Zum nächsten Objekt";
+ SlotName [ english ] = "Zum nächsten Objekt";
+ SlotName[ english_us ] = "To Next Object";
+ SlotName[ portuguese ] = "Ir para objecto seguinte";
+ SlotName[ russian ] = "Äî ñëåäóþùåãî îáúåêòà";
+ SlotName[ dutch ] = "Naar volgend object";
+ SlotName[ french ] = "A l'objet suivant";
+ SlotName[ spanish ] = "Ir al objeto siguiente";
+ SlotName[ italian ] = "All'oggetto successivo";
+ SlotName[ danish ] = "Til næste objekt";
+ SlotName[ swedish ] = "Till nästa objekt";
+ SlotName[ polish ] = "Do nastêpnego obiektu";
+ SlotName[ portuguese_brazilian ] = "GotoNextObject";
+ SlotName[ japanese ] = "ŽŸ‚̵ÌÞ¼Þª¸Ä‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö¶ÔÏó";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@­Óª«¥ó";
+ SlotName[ arabic ] = "Åáì ÇáßÇÆä ÇáÊÇáí";
+ SlotName[ dutch ] = "Naar volgend object";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö¶ÔÏó";
+ SlotName[ greek ] = "Åðüìåíï áíôéêåßìåíï";
+ SlotName[ korean ] = "´ÙÀ½ °³Ã¼·Î";
+ SlotName[ turkish ] = "Sonraki nesne";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_GOTO_NEXT_REGION
+{
+ SlotName = "Zum nächsten Bereich";
+ SlotName [ english ] = "Zum nächsten Bereich";
+ SlotName[ english_us ] = "To Next Section";
+ SlotName[ portuguese ] = "Secção seguinte";
+ SlotName[ russian ] = "Äî ñëåäóþùåãî ðàçäåëà";
+ SlotName[ dutch ] = "Naar volgend bereik";
+ SlotName[ french ] = "A la section suivante";
+ SlotName[ spanish ] = "A la área siguiente";
+ SlotName[ italian ] = "All'area successiva";
+ SlotName[ danish ] = "Til næste område";
+ SlotName[ swedish ] = "Till nästa område";
+ SlotName[ polish ] = "Do nastêpnego obszaru";
+ SlotName[ portuguese_brazilian ] = "JumpToNextRegion";
+ SlotName[ japanese ] = "ŽŸ‚̗̈æ‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»ÇøÓò";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@°Ï°ì";
+ SlotName[ arabic ] = "Åáì ÇáäØÇÞ ÇáÊÇáí";
+ SlotName[ dutch ] = "Naar volgend bereik";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»ÇøÓò";
+ SlotName[ greek ] = "Åðüìåíç åíüôçôá";
+ SlotName[ korean ] = "´ÙÀ½ ±¸¿ªÀ¸·Î";
+ SlotName[ turkish ] = "Sonraki bölüm";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_GOTO_PREV_INPUTFLD
+{
+ SlotName = "Zum vorherigen Eingabefeld";
+ SlotName [ english ] = "Zum vorherigen Eingabefeld";
+ SlotName[ english_us ] = "To Previous Input Field";
+ SlotName[ portuguese ] = "Ir para campo de entrada anterior";
+ SlotName[ russian ] = "Äî ïðåäûäóùåãî ïîëÿ ââîäà";
+ SlotName[ dutch ] = "Naar vorig invoerveld";
+ SlotName[ french ] = "Au champ de saisie précédent";
+ SlotName[ spanish ] = "Ir al campo de entrada anterior";
+ SlotName[ italian ] = "Al campo di digitazione precedente";
+ SlotName[ danish ] = "Til forrige input-felt";
+ SlotName[ swedish ] = "Till föregående inmatningsfält";
+ SlotName[ polish ] = "Do poprzedniego pola wprowadzania";
+ SlotName[ portuguese_brazilian ] = "GoToPrevInputField";
+ SlotName[ japanese ] = "‘O‚Ì“ü—ÍÎÞ¯¸½‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸öÊäÈë×Ö¶Î";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@¿é¤JÄæ¦ì";
+ SlotName[ arabic ] = "Åáì ÍÞá ÇáÅÏÎÇá ÇáÓÇÈÞ";
+ SlotName[ dutch ] = "Naar vorig invoerveld";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸öÊäÈë×Ö¶Î";
+ SlotName[ greek ] = "Ðñïò ôï ðñïçãïýìåíï ðåäßï åéóáãùãÞò";
+ SlotName[ korean ] = "ÀÌÀü ÀÔ·Â Çʵå·Î";
+ SlotName[ turkish ] = "Önceki giriþ alaný";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_GOTO_PREV_MARK
+{
+ SlotName = "Zum vorherigen Platzhalter";
+ SlotName [ english ] = "Zum vorherigen Platzhalter";
+ SlotName[ english_us ] = "To Previous Placeholder";
+ SlotName[ portuguese ] = "Marcador de posição anterior";
+ SlotName[ russian ] = "Äî ïðåäûäóùåãî ìåñòîçàïîëíèòåëÿ";
+ SlotName[ dutch ] = "Naar vorige plaatsvervanger";
+ SlotName[ french ] = "Au substituant précédent";
+ SlotName[ spanish ] = "Ir al comodín anterior";
+ SlotName[ italian ] = "Al segnaposto precedente";
+ SlotName[ danish ] = "Til forrige pladsholder";
+ SlotName[ swedish ] = "Till föregående platshållare";
+ SlotName[ polish ] = "Do poprzedniego znaku-wype³niacza";
+ SlotName[ portuguese_brazilian ] = "GoToPrevPlacemarker";
+ SlotName[ japanese ] = "‘O‚ÌÌßÚ°½ÎÙÀÞ‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸öͨÅä·û";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@­Ó³q°t²Å";
+ SlotName[ arabic ] = "Åáì ÇáÚäÕÑ ÇáäÇÆÈ ÇáÓÇÈÞ";
+ SlotName[ dutch ] = "Naar vorige plaatsvervanger";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸öͨÅä·û";
+ SlotName[ greek ] = "Ðñïò ôï ðñïçãïýìåíï óýìâïëï êñÜôçóçò èÝóçò";
+ SlotName[ korean ] = "ÀÌÀü °³Ã¼Æ²·Î";
+ SlotName[ turkish ] = "Önceki genel arama karakteri";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_GOTO_PREV_OBJ
+{
+ SlotName = "Zum vorherigen Objekt";
+ SlotName [ english ] = "Zum vorherigen Objekt";
+ SlotName[ english_us ] = "To Previous Object";
+ SlotName[ portuguese ] = "Ir para objecto anterior";
+ SlotName[ russian ] = "Äî ïðåäûäóùåãî îáúåêòà";
+ SlotName[ dutch ] = "Naar vorig object";
+ SlotName[ french ] = "Aller à l'objet précédent";
+ SlotName[ spanish ] = "Ir al objeto anterior";
+ SlotName[ italian ] = "All'oggetto precedente";
+ SlotName[ danish ] = "Til forrige objekt";
+ SlotName[ swedish ] = "Till föregående objekt";
+ SlotName[ polish ] = "Do poprzedniego objektu";
+ SlotName[ portuguese_brazilian ] = "GoToPrevObject";
+ SlotName[ japanese ] = "‘O‚̵ÌÞ¼Þª¸Ä‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸ö¶ÔÏó";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@­Óª«¥ó";
+ SlotName[ arabic ] = "Åáì ÇáßÇÆä ÇáÓÇÈÞ";
+ SlotName[ dutch ] = "Naar vorig object";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸ö¶ÔÏó";
+ SlotName[ greek ] = "Ðñïçãïýìåíï áíôéêåßìåíï";
+ SlotName[ korean ] = "ÀÌÀü °³Ã¼·Î";
+ SlotName[ turkish ] = "Önceki nesne";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_GOTO_PREV_REGION
+{
+ SlotName = "Zum vorherigen Bereich";
+ SlotName [ english ] = "Zum vorherigen Bereich";
+ SlotName[ english_us ] = "To Previous Section";
+ SlotName[ portuguese ] = "Secção anterior";
+ SlotName[ russian ] = "Äî ïðåäûäóùåãî ðàçäåëà";
+ SlotName[ dutch ] = "Naar vorige bereik";
+ SlotName[ french ] = "A la section précédente";
+ SlotName[ spanish ] = "Ir al área anterior";
+ SlotName[ italian ] = "All'area precedente";
+ SlotName[ danish ] = "Til forrige område";
+ SlotName[ swedish ] = "Till föregående område";
+ SlotName[ polish ] = "Do nastêpnego obszaru";
+ SlotName[ portuguese_brazilian ] = "JumpToPrevRegion";
+ SlotName[ japanese ] = "‘O‚̗̈æ‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸öÇøÓò";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@­Ó°Ï°ì";
+ SlotName[ arabic ] = "Åáì ÇáäØÇÞ ÇáÓÇÈÞ";
+ SlotName[ dutch ] = "Naar vorige bereik";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸öÇøÓò";
+ SlotName[ greek ] = "Ðñïçãïýìåíç åíüôçôá";
+ SlotName[ korean ] = "ÀÌÀü ±¸¿ªÀ¸·Î";
+ SlotName[ turkish ] = "Önceki alan";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_GOTO_REFERENCE
+{
+ SlotName = "Zur Referenz";
+ SlotName [ english ] = "Zur Referenz";
+ SlotName[ english_us ] = "To Reference";
+ SlotName[ portuguese ] = "Ir para referência";
+ SlotName[ russian ] = "Äî ññûëêè";
+ SlotName[ dutch ] = "Bij verwijzing";
+ SlotName[ french ] = "A la référence";
+ SlotName[ spanish ] = "Ir a la referencia";
+ SlotName[ italian ] = "Al riferimento";
+ SlotName[ danish ] = "Til reference";
+ SlotName[ swedish ] = "Till referens";
+ SlotName[ polish ] = "Do odwo³ania";
+ SlotName[ portuguese_brazilian ] = "GoToReference";
+ SlotName[ japanese ] = "ŽQÆ‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÒýÓÃ";
+ SlotName[ chinese_traditional ] = "Âà¨ì°Ñ·Ó";
+ SlotName[ arabic ] = "Åáì ÇáãÑÌÚ";
+ SlotName[ dutch ] = "Bij verwijzing";
+ SlotName[ chinese_simplified ] = "תµ½ÒýÓÃ";
+ SlotName[ greek ] = "Ðñïò áíáöïñÜ";
+ SlotName[ korean ] = "ÂüÁ¶·Î";
+ SlotName[ turkish ] = "Referans";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_GRAPHIC_MIRROR_ON_EVEN_PAGES
+{
+ SlotName = "Grafik auf geraden Seiten spiegeln";
+ SlotName [ english ] = "Grafik auf geraden Seiten spiegeln";
+ SlotName[ english_us ] = "Flip Graphics on Even Pages";
+ SlotName[ portuguese ] = "Reflectir imagem nas páginas pares";
+ SlotName[ russian ] = "Îòîáðàçèòü îáúåêòû íà ÷åòíûõ ñòðàíèöàõ";
+ SlotName[ dutch ] = "Afbeeldingen op even pagina's spiegelen";
+ SlotName[ french ] = "Refléter l'image sur les pages paires";
+ SlotName[ spanish ] = "Reflejar imagen en las páginas pares";
+ SlotName[ italian ] = "Rispecchia le immagini sulle pagine pari";
+ SlotName[ danish ] = "Spejlvend grafik på lige sider";
+ SlotName[ swedish ] = "Spegla grafik på jämna sidor";
+ SlotName[ polish ] = "Przerzuæ grafikê na nieparzystych stronach";
+ SlotName[ portuguese_brazilian ] = "MirrorGraphicOnEvenPages";
+ SlotName[ japanese ] = "¸Þ×̨¯¸‚ð‹ô”Íß°¼Þ‚É”½“]";
+ SlotName[ chinese_simplified ] = "ͼÐη´Ó³µ½Å¼ÊýÒ³Ãæ";
+ SlotName[ chinese_traditional ] = "¹Ï¤ù¤Ï¬M¨ì°¸¼Æ­¶­±";
+ SlotName[ arabic ] = "ÇäÚßÇÓ ÇáÕæÑÉ Úáì ÇáÕÝÍÇÊ ÇáÒæÌíÉ";
+ SlotName[ dutch ] = "Afbeeldingen op even pagina's spiegelen";
+ SlotName[ chinese_simplified ] = "ͼÐη´Ó³µ½Å¼ÊýÒ³Ãæ";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ greek ] = "ÁíáóôñïöÞ ãñáöéêïý óôéò Üñôéåò óåëßäåò";
+ SlotName[ korean ] = "¦¼ö ÆäÀÌÁö»óÀÇ ±×·¡ÇÈ ´ëĪ";
+ SlotName[ turkish ] = "Grafiði çift sayýlý sayfalarda yansýt";
+};
+SfxSlotInfo FN_GROW_FONT_SIZE
+{
+ SlotName = "Zeichen vergrößern";
+ SlotName [ english ] = "Zeichen vergrößern";
+ SlotName[ english_us ] = "Increase Font";
+ SlotName[ portuguese ] = "Aumentar caracteres";
+ SlotName[ russian ] = "Óâåëè÷èòü øðèôò";
+ SlotName[ dutch ] = "Tekens vergroten";
+ SlotName[ french ] = "Agrandir caractère";
+ SlotName[ spanish ] = "Aumentar fuente";
+ SlotName[ italian ] = "Ingrandisci carattere";
+ SlotName[ danish ] = "Forstør tegn";
+ SlotName[ swedish ] = "Förstora tecken";
+ SlotName[ polish ] = "Powiêksz znaki";
+ SlotName[ portuguese_brazilian ] = "IncreaseFontSize";
+ SlotName[ japanese ] = "•¶Žš‚ÌŠg‘å";
+ SlotName[ chinese_simplified ] = "·Å´ó×Ö·û";
+ SlotName[ chinese_traditional ] = "©ñ¤j¦r¤¸";
+ SlotName[ arabic ] = "ÊßÈíÑ ÇáÎØ";
+ SlotName[ dutch ] = "Tekens vergroten";
+ SlotName[ chinese_simplified ] = "·Å´ó×Ö·û";
+ SlotName[ greek ] = "ÌåãÝíèõóç ÷áñáêôÞñùí";
+ SlotName[ korean ] = "±Û²Ã Å©°Ô";
+ SlotName[ turkish ] = "Kürükteri büyüt";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_HSCROLLBAR
+{
+ SlotName = "Horizontal rollen";
+ SlotName [ english ] = "Horizontal rollen";
+ SlotName[ english_us ] = "Scroll Horizontal";
+ SlotName[ portuguese ] = "Deslocamento horizontal";
+ SlotName[ russian ] = "Ïðîêðóòèòü ïî ãîðèçîíòàëè";
+ SlotName[ dutch ] = "Horizontaal scrollen";
+ SlotName[ french ] = "Défilement horizontal";
+ SlotName[ spanish ] = "Desplazamiento Horizontal";
+ SlotName[ italian ] = "Scorrimento orizzontale";
+ SlotName[ danish ] = "Rull vandret";
+ SlotName[ swedish ] = "Rulla horisontellt";
+ SlotName[ polish ] = "Przesuwaj poziomo";
+ SlotName[ portuguese_brazilian ] = "ViewHScroll";
+ SlotName[ japanese ] = "…•½½¸Û°Ù";
+ SlotName[ chinese_simplified ] = "ˮƽ·½Ïò¹ö¶¯";
+ SlotName[ chinese_traditional ] = "¤ô¥­ºu°Ê";
+ SlotName[ arabic ] = "ÊÍÑíß ÇáÕÝÍÉ ÃÝÞíÇð";
+ SlotName[ dutch ] = "Horizontaal scrollen";
+ SlotName[ chinese_simplified ] = "ˮƽ·½Ïò¹ö¶¯";
+ SlotName[ greek ] = "Ïñéæüíôéá êýëéóç";
+ SlotName[ korean ] = "¼öÆò ½ºÅ©·Ñ";
+ SlotName[ turkish ] = "Yatay kaydýr";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_HYPHENATE_OPT_DLG
+{
+ SlotName = "Silbentrennung";
+ SlotName [ english ] = "Silbentrennung";
+ SlotName[ english_us ] = "Hyphenation";
+ SlotName[ portuguese ] = "Divisão silábica";
+ SlotName[ russian ] = "Ðàññòàíîâêà ïåðåíîñîâ";
+ SlotName[ dutch ] = "Woordafbreking";
+ SlotName[ french ] = "Coupure de mots";
+ SlotName[ spanish ] = "Separación silábica";
+ SlotName[ italian ] = "Sillabazione";
+ SlotName[ danish ] = "Orddeling";
+ SlotName[ swedish ] = "Avstavning";
+ SlotName[ polish ] = "Dzielenie wyrazów";
+ SlotName[ portuguese_brazilian ] = "Hyphenate";
+ SlotName[ japanese ] = "ʲÌÈ°¼®Ý";
+ SlotName[ chinese_simplified ] = "Á¬×Ö·û";
+ SlotName[ chinese_traditional ] = "³s¦r²Å";
+ SlotName[ arabic ] = "ÝÕá ÇáãÞÇØÚ";
+ SlotName[ dutch ] = "Woordafbreking";
+ SlotName[ chinese_simplified ] = "Á¬×Ö·û";
+ SlotName[ greek ] = "Óõëëáâéóìüò";
+ SlotName[ korean ] = "ÇÏÀÌÇÂ";
+ SlotName[ turkish ] = "Heceleme";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_IDX_MARK_TO_IDX
+{
+ SlotName = "Indexmarke zum Index";
+ SlotName [ english ] = "Indexmarke zum Index";
+ SlotName[ english_us ] = "Index Mark to Index";
+ SlotName[ portuguese ] = "Marca de índice para o Índice";
+ SlotName[ russian ] = "Ìåòêà èíäåêñà äëÿ èíäåêñà";
+ SlotName[ dutch ] = "Indexwijzer naar index";
+ SlotName[ french ] = "Marque d'index à l'index";
+ SlotName[ spanish ] = "Marca de índice al índice";
+ SlotName[ italian ] = "Contrassegnno per l'indice";
+ SlotName[ danish ] = "Indeksmarkering til indeks";
+ SlotName[ swedish ] = "Indexmärke till index";
+ SlotName[ polish ] = "Znacznik indeksu do indeksu";
+ SlotName[ portuguese_brazilian ] = "IndexMarkToIndex";
+ SlotName[ japanese ] = "²ÝÃÞ¯¸½Ï°¸‚ðõˆø€–Ú‚Ö";
+ SlotName[ chinese_simplified ] = "Ö¸ÏòË÷ÒýµÄË÷Òý±ê¼Ç";
+ SlotName[ chinese_traditional ] = "«ü¦V¯Á¤Þªº¯Á¤Þ¼Ð°O";
+ SlotName[ arabic ] = "ÚáÇãÉ ÇáÝåÑÓ Åáì ÇáÝåÑÓ";
+ SlotName[ dutch ] = "Indexwijzer naar index";
+ SlotName[ chinese_simplified ] = "Ö¸ÏòË÷ÒýµÄË÷Òý±ê¼Ç";
+ SlotName[ greek ] = "ÓçìÜäé åõñåôçñßïõ ðñïò åõñåôÞñéï";
+ SlotName[ korean ] = "»öÀο¡ »öÀΠǥ½Ã";
+ SlotName[ turkish ] = "Dizin için dizin iþareti";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INC_INDENT_OFFSET
+{
+ SlotName = "Einzug um Betrag erhöhen";
+ SlotName [ english ] = "Einzug um Betrag erhöhen";
+ SlotName[ english_us ] = "Increment Indent Value";
+ SlotName[ portuguese ] = "Aumentar avanço de texto";
+ SlotName[ russian ] = "Óâåëè÷èòü îòñóï ñîãëàñíî çíà÷åíèÿ";
+ SlotName[ dutch ] = "Inspringing om getal vergroten";
+ SlotName[ french ] = "Augmenter le retrait de";
+ SlotName[ spanish ] = "Incrementar sangría en";
+ SlotName[ italian ] = "Aumenta rientro valore";
+ SlotName[ danish ] = "Forøg indrykning om værdi";
+ SlotName[ swedish ] = "Öka indrag med enhet";
+ SlotName[ polish ] = "Zwiêksz wciêcie o wartoœæ";
+ SlotName[ portuguese_brazilian ] = "IncrementIndentValue";
+ SlotName[ japanese ] = "²ÝÃÞÝÄ‚Ì’l‚ð‘‚â‚·";
+ SlotName[ chinese_simplified ] = "À©´óËõ½øÖµ";
+ SlotName[ chinese_traditional ] = "ÂX¤jÁY±Æ­È";
+ SlotName[ arabic ] = "ÒíÇÏÉ ãÞÏÇÑ ÇáÅÒÇÍÉ";
+ SlotName[ dutch ] = "Inspringing om getal vergroten";
+ SlotName[ chinese_simplified ] = "À©´óËõ½øÖµ";
+ SlotName[ greek ] = "Áýîçóç åóï÷Þò êáôÜ ôçí ôéìÞ";
+ SlotName[ korean ] = "µé¿©¾²±â °ª Áõ°¡";
+ SlotName[ turkish ] = "Girintiyi büyüt";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_BOOKMARK
+{
+ SlotName = "Textmarke einfügen";
+ SlotName [ english ] = "Textmarke einfügen";
+ SlotName[ english_us ] = "Insert Bookmark";
+ SlotName[ portuguese ] = "Inserir marcador de texto";
+ SlotName[ russian ] = "Âñòàâèòü çàêëàäêó";
+ SlotName[ dutch ] = "Tekstmarkering invoegen";
+ SlotName[ french ] = "Insérer un repère de texte";
+ SlotName[ spanish ] = "Insertar marca";
+ SlotName[ italian ] = "Inserisci segnalibro";
+ SlotName[ danish ] = "Indsæt tekstmarkering";
+ SlotName[ swedish ] = "Infoga bokmärke";
+ SlotName[ polish ] = "Wstaw zak³adkê";
+ SlotName[ portuguese_brazilian ] = "InsertBookmark";
+ SlotName[ japanese ] = "÷½ÄÏ°¸‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÊéÇ©";
+ SlotName[ chinese_traditional ] = "´¡¤J¤º¤å¼ÐÅÒ";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÅÔÇÑÉ ãÑÌÚíÉ";
+ SlotName[ dutch ] = "Tekstmarkering invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÊéÇ©";
+ SlotName[ greek ] = "ÅéóáãùãÞ óåëéäïäåßêôç";
+ SlotName[ korean ] = "Ã¥ °¥ÇÇ »ðÀÔ";
+ SlotName[ turkish ] = "Metin iþareti ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_BREAK
+{
+ SlotName = "Absatz einfügen";
+ SlotName [ english ] = "Absatz einfügen";
+ SlotName[ english_us ] = "Insert Paragraph";
+ SlotName[ portuguese ] = "Inserir parágrafo";
+ SlotName[ russian ] = "Âñòàâèòü àáçàö";
+ SlotName[ dutch ] = "Alinea invoegen";
+ SlotName[ french ] = "Insérer un paragraphe";
+ SlotName[ spanish ] = "Insertar párrafo";
+ SlotName[ italian ] = "Inserisci paragrafo";
+ SlotName[ danish ] = "Indsæt afsnit";
+ SlotName[ swedish ] = "Infoga stycke";
+ SlotName[ polish ] = "Wstaw akapit";
+ SlotName[ portuguese_brazilian ] = "InsertParagraph";
+ SlotName[ japanese ] = "’i—Ž‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë¶ÎÂä";
+ SlotName[ chinese_traditional ] = "´¡¤J¬q¸¨";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÝÞÑÉ";
+ SlotName[ dutch ] = "Alinea invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë¶ÎÂä";
+ SlotName[ greek ] = "ÅéóáãùãÞ ðáñáãñÜöïõ";
+ SlotName[ korean ] = "´Ü¶ô »ðÀÔ";
+ SlotName[ turkish ] = "Paragraf ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_BREAK_DLG
+{
+ SlotName = "Manuellen Umbruch einfügen";
+ SlotName [ english ] = "Manuellen Umbruch einfügen";
+ SlotName[ english_us ] = "Insert Manual Break";
+ SlotName[ portuguese ] = "Inserir quebra manual";
+ SlotName[ russian ] = "Âñòàâèòü âðó÷íóþ ðàçðûâ";
+ SlotName[ dutch ] = "Handmatig einde invoegen";
+ SlotName[ french ] = "Insérer un renvoi à la ligne manuel";
+ SlotName[ spanish ] = "Insertar un salto manual";
+ SlotName[ italian ] = "Inserisci interruzione manuale";
+ SlotName[ danish ] = "Indsæt manuelt skift";
+ SlotName[ swedish ] = "Infoga manuell brytning";
+ SlotName[ polish ] = "Wstaw rêczny podzia³";
+ SlotName[ portuguese_brazilian ] = "InsertBreak";
+ SlotName[ japanese ] = "”CˆÓ‰üÍß°¼Þ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÊÖ¹¤»»Ðзû";
+ SlotName[ chinese_traditional ] = "´¡¤J¤â¤u´«¦æ²Å";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÝÇÕá íÏæí";
+ SlotName[ dutch ] = "Handmatig einde invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÊÖ¹¤»»Ðзû";
+ SlotName[ greek ] = "ÅéóáãùãÞ ÷åéñïêßíçôçò áëëáãÞò";
+ SlotName[ korean ] = "¼öµ¿ ³ª´©±â »ðÀÔ";
+ SlotName[ turkish ] = "Manüel kesme ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_CAPTION
+{
+ SlotName = "Beschriftung einfügen";
+ SlotName [ english ] = "Beschriftung einfügen";
+ SlotName[ english_us ] = "Insert Caption";
+ SlotName[ portuguese ] = "Inserir legenda";
+ SlotName[ russian ] = "Âñòàâèòü íàçâàíèå";
+ SlotName[ dutch ] = "Bijschrift invoegen";
+ SlotName[ french ] = "Insérer une légende";
+ SlotName[ spanish ] = "Insertar etiqueta";
+ SlotName[ italian ] = "Inserisci dicitura";
+ SlotName[ danish ] = "Indsæt billedtekst";
+ SlotName[ swedish ] = "Infoga bildtext";
+ SlotName[ polish ] = "Wstaw opis";
+ SlotName[ portuguese_brazilian ] = "InsertCaption";
+ SlotName[ japanese ] = "×ÍÞÙ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë±êÌâ";
+ SlotName[ chinese_traditional ] = "´¡¤J¼ÐÃD";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÊÓãíÉ ÊæÖíÍíÉ";
+ SlotName[ dutch ] = "Bijschrift invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë±êÌâ";
+ SlotName[ greek ] = "ÅéóáãùãÞ ëåæÜíôáò";
+ SlotName[ korean ] = "ĸ¼Ç »ðÀÔ";
+ SlotName[ turkish ] = "Resim yazýsý ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_COLUMN_BREAK
+{
+ SlotName = "Spaltenwechsel einfügen";
+ SlotName [ english ] = "Spaltenwechsel einfügen";
+ SlotName[ english_us ] = "Insert Column Break";
+ SlotName[ portuguese ] = "Inserir quebra de coluna";
+ SlotName[ russian ] = "Âñòàâèòü ðàçðûâ êîëîíêè";
+ SlotName[ dutch ] = "Kolomeinde invoegen";
+ SlotName[ french ] = "Insérer un saut de colonne";
+ SlotName[ spanish ] = "Insertar cambio de columnas";
+ SlotName[ italian ] = "Inserisci cambio colonna";
+ SlotName[ danish ] = "Indsæt spalteskift";
+ SlotName[ swedish ] = "Infoga kolumnbrytning";
+ SlotName[ polish ] = "Wstaw podzia³ kolumn";
+ SlotName[ portuguese_brazilian ] = "InsertColumnBreak";
+ SlotName[ japanese ] = "‰ü—ñ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë·ÖÀ¸·û";
+ SlotName[ chinese_traditional ] = "´¡¤J¤ÀÄæ²Å";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÝÇÕá ÃÚãÏÉ";
+ SlotName[ dutch ] = "Kolomeinde invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë·ÖÀ¸·û";
+ SlotName[ greek ] = "ÅéóáãùãÞ áëëáãÞò óôÞëçò";
+ SlotName[ korean ] = "¿­ ³ª´©±â »ðÀÔ";
+ SlotName[ turkish ] = "Sütun sonu ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_CTRL
+{
+ SlotName = "Einfügen";
+ SlotName [ english ] = "Einfügen";
+ SlotName[ english_us ] = "Insert";
+ SlotName[ portuguese ] = "Inserir";
+ SlotName[ russian ] = "Âñòàâèòü";
+ SlotName[ dutch ] = "Invoegen";
+ SlotName[ french ] = "Insérer";
+ SlotName[ spanish ] = "Insertar";
+ SlotName[ italian ] = "Inserisci";
+ SlotName[ danish ] = "Indsæt";
+ SlotName[ swedish ] = "Infoga";
+ SlotName[ polish ] = "Wstaw";
+ SlotName[ portuguese_brazilian ] = "InsertCtrl";
+ SlotName[ japanese ] = "‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë";
+ SlotName[ chinese_traditional ] = "´¡¤J";
+ SlotName[ arabic ] = "ÅÏÑÇÌ";
+ SlotName[ dutch ] = "Invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë";
+ SlotName[ greek ] = "ÅéóáãùãÞ";
+ SlotName[ korean ] = "»ðÀÔ";
+ SlotName[ turkish ] = "Ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_ENDNOTE
+{
+ SlotName = "Endnote direkt einfügen";
+ SlotName [ english ] = "Endnote direkt einfügen";
+ SlotName[ english_us ] = "Insert Endnote Directly";
+ SlotName[ portuguese ] = "Inserir nota final directamente";
+ SlotName[ russian ] = "Âñòàâèòü íåïîñðåäñòâåííî êîíöåâóþ ñíîñêó";
+ SlotName[ dutch ] = "Eindnoot direct invoegen";
+ SlotName[ french ] = "Insérer directement une note de fin";
+ SlotName[ spanish ] = "Insertar nota final directamente";
+ SlotName[ italian ] = "Inserisci direttamente nota di chiusura";
+ SlotName[ danish ] = "Indsæt slutnote direkte";
+ SlotName[ swedish ] = "Infoga slutnot direkt";
+ SlotName[ polish ] = "Wstaw bezpoœrednio przypis koñcowy";
+ SlotName[ portuguese_brazilian ] = "InsertEndnoteDirect";
+ SlotName[ japanese ] = "•¶––‹r’‚ð’¼Ú‘}“ü";
+ SlotName[ chinese_simplified ] = "Ö±½Ó²åÈëβע";
+ SlotName[ chinese_traditional ] = "ª½±µ´¡¤J§Àª`";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÊÚáíÞ ÎÊÇãí ãÈÇÔÑÉ";
+ SlotName[ dutch ] = "Eindnoot direct invoegen";
+ SlotName[ chinese_simplified ] = "Ö±½Ó²åÈëβע";
+ SlotName[ greek ] = "Áð åõèåßáò åéóáãùãÞ óçìåßùóçò ôÝëïõò";
+ SlotName[ korean ] = "¹ÌÁÖ Á÷Á¢ »ðÀÔ";
+ SlotName[ turkish ] = "Sonnotu doðrudan ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FIELD
+{
+ SlotName = "Feldbefehl einfügen";
+ SlotName [ english ] = "Feldbefehl einfügen";
+ SlotName[ english_us ] = "Insert Fields";
+ SlotName[ portuguese ] = "Inserir código de campo";
+ SlotName[ russian ] = "Âñòàâèòü ïîëå";
+ SlotName[ dutch ] = "Veldopdracht invoegen";
+ SlotName[ french ] = "Insérer une instruction de champ";
+ SlotName[ spanish ] = "Insertar código de campo";
+ SlotName[ italian ] = "Inserisci comando di campo";
+ SlotName[ danish ] = "Indsæt felt";
+ SlotName[ swedish ] = "Infoga fältkommando";
+ SlotName[ polish ] = "Wstaw pola";
+ SlotName[ portuguese_brazilian ] = "InsertFieldCode";
+ SlotName[ japanese ] = "̨°ÙÄÞ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë×Ö¶ÎÖ¸Áî";
+ SlotName[ chinese_traditional ] = "´¡¤JÄæ¦ì«ü¥O";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÍÞæá";
+ SlotName[ dutch ] = "Veldopdracht invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë×Ö¶ÎÖ¸Áî";
+ SlotName[ greek ] = "ÅéóáãùãÞ åíôïëÞò ðåäßïõ";
+ SlotName[ korean ] = "ÇÊµå »ðÀÔ";
+ SlotName[ turkish ] = "Alan öðesi ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FIELD_CTRL
+{
+ SlotName = "Feldbefehle einfügen";
+ SlotName [ english ] = "Feldbefehle einfügen";
+ SlotName[ english_us ] = "Insert Fields";
+ SlotName[ portuguese ] = "Inserir campos";
+ SlotName[ russian ] = "Âñòàâèòü ïîëå";
+ SlotName[ dutch ] = "Veldopdrachten invoegen";
+ SlotName[ french ] = "Insérer des instructions de champ";
+ SlotName[ spanish ] = "Insertar códigos de campo";
+ SlotName[ italian ] = "Inserisci comandi di campo";
+ SlotName[ danish ] = "Indsæt felter";
+ SlotName[ swedish ] = "Infoga fältkommandon";
+ SlotName[ polish ] = "Wstaw pola";
+ SlotName[ portuguese_brazilian ] = "InsertFieldCtrl";
+ SlotName[ japanese ] = "̨°ÙÄÞ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë×Ö¶ÎÖ¸Áî";
+ SlotName[ chinese_traditional ] = "´¡¤JÄæ¦ì«ü¥O";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÍÞæá";
+ SlotName[ dutch ] = "Veldopdrachten invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë×Ö¶ÎÖ¸Áî";
+ SlotName[ greek ] = "ÅéóáãùãÞ åíôïëÞò ðåäßïõ";
+ SlotName[ korean ] = "ÇÊµå »ðÀÔ";
+ SlotName[ turkish ] = "Alan öðeleri ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FLD_AUTHOR
+{
+ SlotName = "Autorenfeld einfügen";
+ SlotName [ english ] = "Autorenfeld einfügen";
+ SlotName[ english_us ] = "Insert Author Field";
+ SlotName[ portuguese ] = "Inserir campo de autor";
+ SlotName[ russian ] = "Âñòàâèòü ïîëå àâòîðà";
+ SlotName[ dutch ] = "Auteurveld invoegen";
+ SlotName[ french ] = "Insérer un champ d'auteur";
+ SlotName[ spanish ] = "Insertar campo para autor";
+ SlotName[ italian ] = "Inserisci campo autore";
+ SlotName[ danish ] = "Indsæt forfatterfelt";
+ SlotName[ swedish ] = "Infoga författarfält";
+ SlotName[ polish ] = "Wstaw pole autora";
+ SlotName[ portuguese_brazilian ] = "InsertAuthorField";
+ SlotName[ japanese ] = "쬎Ǫ̀°ÙÄÞ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë×÷ÕßÀ¸";
+ SlotName[ chinese_traditional ] = "´¡¤J§@ªÌ¿é¤JÄæ";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÍÞá ãÄáÝ";
+ SlotName[ dutch ] = "Auteurveld invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë×÷ÕßÀ¸";
+ SlotName[ greek ] = "ÅéóáãùãÞ ðåäßï óõããñáöÝá";
+ SlotName[ korean ] = "¸¸µçÀÌ ÇÊµå »ðÀÔ";
+ SlotName[ turkish ] = "Yazan adý alaný ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FLD_DATE
+{
+ SlotName = "Datum einfügen";
+ SlotName [ english ] = "Datum einfügen";
+ SlotName[ english_us ] = "Insert Date";
+ SlotName[ portuguese ] = "Inserir data";
+ SlotName[ russian ] = "Âñòàâèòü äàòó";
+ SlotName[ dutch ] = "Datum invoegen";
+ SlotName[ french ] = "Date";
+ SlotName[ spanish ] = "Insertar fecha";
+ SlotName[ italian ] = "Inserisci data";
+ SlotName[ danish ] = "Indsæt dato";
+ SlotName[ swedish ] = "Infoga datum";
+ SlotName[ polish ] = "Wstaw datê";
+ SlotName[ portuguese_brazilian ] = "Date";
+ SlotName[ japanese ] = "“ú•t‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÈÕÆÚ";
+ SlotName[ chinese_traditional ] = "´¡¤J¤é´Á";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÇáÊÇÑíÎ";
+ SlotName[ dutch ] = "Datum invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÈÕÆÚ";
+ SlotName[ greek ] = "ÅéóáãùãÞ çìåñïìçíßáò";
+ SlotName[ korean ] = "³¯Â¥ »ðÀÔ";
+ SlotName[ turkish ] = "Tarih ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FLD_PGCOUNT
+{
+ SlotName = "Seitenanzahl einfügen";
+ SlotName [ english ] = "Seitenanzahl einfügen";
+ SlotName[ english_us ] = "Insert Page Count";
+ SlotName[ portuguese ] = "Contar páginas";
+ SlotName[ russian ] = "Âñòàâèòü êîëè÷åñòâî ñòðàíèö";
+ SlotName[ dutch ] = "Pagina-aantal invoegen";
+ SlotName[ french ] = "Insérer le nombre de pages";
+ SlotName[ spanish ] = "Insertar contador de páginas";
+ SlotName[ italian ] = "Inserisci numero di pagine";
+ SlotName[ danish ] = "Indsæt sideantal";
+ SlotName[ swedish ] = "Infoga sidantal";
+ SlotName[ polish ] = "Wstaw liczbê stron";
+ SlotName[ portuguese_brazilian ] = "Page Count";
+ SlotName[ japanese ] = "Íß-¼Þ”‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÒ³Êý";
+ SlotName[ chinese_traditional ] = "´¡¤J­¶¼Æ";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÚÏÏ ÇáÕÝÍÇÊ";
+ SlotName[ dutch ] = "Pagina-aantal invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÒ³Êý";
+ SlotName[ greek ] = "ÅéóáãùãÞ óõíïëéêïý áñéèìïý óåëéäþí";
+ SlotName[ korean ] = "ÆäÀÌÁö Ä«¿îÆ® »ðÀÔ";
+ SlotName[ turkish ] = "Sayfa sayýsý ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FLD_PGNUMBER
+{
+ SlotName = "Seitennummer einfügen";
+ SlotName [ english ] = "Seitennummer einfügen";
+ SlotName[ english_us ] = "Insert Page Number";
+ SlotName[ portuguese ] = "Inserir número de página";
+ SlotName[ russian ] = "Âñòàâèòü íîìåðà ñòðàíèö";
+ SlotName[ dutch ] = "Paginanummer invoegen";
+ SlotName[ french ] = "Insérer numéro de page";
+ SlotName[ spanish ] = "Insertar número de página";
+ SlotName[ italian ] = "Inserisci numero di pagina";
+ SlotName[ danish ] = "Indsæt sidetal";
+ SlotName[ swedish ] = "Infoga sidnummer";
+ SlotName[ polish ] = "Wstaw numer strony";
+ SlotName[ portuguese_brazilian ] = "PageNumber";
+ SlotName[ japanese ] = "Íß°¼Þ”Ô†‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÒ³Âë";
+ SlotName[ chinese_traditional ] = "´¡¤J­¶½X";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÃÑÞÇã ÇáÕÝÍÇÊ";
+ SlotName[ dutch ] = "Paginanummer invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÒ³Âë";
+ SlotName[ greek ] = "ÅéóáãùãÞ áñéèìïý óåëßäáò";
+ SlotName[ korean ] = "ÆäÀÌÁö ¹øÈ£ »ðÀÔ";
+ SlotName[ turkish ] = "Sayfa numarasý ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FLD_TIME
+{
+ SlotName = "Uhrzeit einfügen";
+ SlotName [ english ] = "Uhrzeit einfügen";
+ SlotName[ english_us ] = "Insert Time";
+ SlotName[ portuguese ] = "Hora";
+ SlotName[ russian ] = "Âñòàâèòü âðåìÿ";
+ SlotName[ dutch ] = "Tijd invoegen";
+ SlotName[ french ] = "Heure";
+ SlotName[ spanish ] = "Insertar hora";
+ SlotName[ italian ] = "Inserisci orario";
+ SlotName[ danish ] = "Indsæt klokkeslæt";
+ SlotName[ swedish ] = "Infoga klockslag";
+ SlotName[ polish ] = "Wstaw godzinê";
+ SlotName[ portuguese_brazilian ] = "Time";
+ SlotName[ japanese ] = "Žž‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëʱ¼ä";
+ SlotName[ chinese_traditional ] = "´¡¤J®É¶¡";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÇáæÞÊ";
+ SlotName[ dutch ] = "Tijd invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëʱ¼ä";
+ SlotName[ greek ] = "ÅéóáãùãÞ þñáò";
+ SlotName[ korean ] = "½Ã°£ »ðÀÔ";
+ SlotName[ turkish ] = "Saat ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FLD_TITLE
+{
+ SlotName = "Dokumenttitel einfügen";
+ SlotName [ english ] = "Dokumenttitel einfügen";
+ SlotName[ english_us ] = "Insert Document Title";
+ SlotName[ portuguese ] = "Inserir título do documento";
+ SlotName[ russian ] = "Âñòàâèòü çàãîëîâîê äîêóìåíòà";
+ SlotName[ dutch ] = "Documenttitel invoegen";
+ SlotName[ french ] = "Insérer un titre de document";
+ SlotName[ spanish ] = "Insertar título de documento";
+ SlotName[ italian ] = "Inserisci titolo di documento";
+ SlotName[ danish ] = "Indsæt dokumenttitel";
+ SlotName[ swedish ] = "Infoga dokumentrubrik";
+ SlotName[ polish ] = "Wstaw tytu³ dokumentu";
+ SlotName[ portuguese_brazilian ] = "DocumentTitle";
+ SlotName[ japanese ] = "ÄÞ·­ÒÝÄÀ²ÄÙ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÎĵµ±êÌâ";
+ SlotName[ chinese_traditional ] = "´¡¤J¤å¥ó¼ÐÃD";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÚäæÇä ÇáãÓÊäÏ";
+ SlotName[ dutch ] = "Documenttitel invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÎĵµ±êÌâ";
+ SlotName[ greek ] = "ÅéóáãùãÞ ôßôëïõ åããñÜöïõ";
+ SlotName[ korean ] = "¹®¼­ Á¦¸ñ »ðÀÔ";
+ SlotName[ turkish ] = "Belge baþlýðý ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FLD_TOPIC
+{
+ SlotName = "Thema einfügen";
+ SlotName [ english ] = "Thema einfügen";
+ SlotName[ english_us ] = "Insert Subject";
+ SlotName[ portuguese ] = "Inserir assunto";
+ SlotName[ russian ] = "Âñòàâèòü òåìó";
+ SlotName[ dutch ] = "Onderwerp invoegen";
+ SlotName[ french ] = "Insérer l'objet";
+ SlotName[ spanish ] = "Insertar tema";
+ SlotName[ italian ] = "Inserisci argomento";
+ SlotName[ danish ] = "Indsæt emne";
+ SlotName[ swedish ] = "Infoga ämne";
+ SlotName[ polish ] = "Wstaw temat";
+ SlotName[ portuguese_brazilian ] = "Topic";
+ SlotName[ japanese ] = "Œ–¼‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÖ÷Ìâ";
+ SlotName[ chinese_traditional ] = "´¡¤J¥DÃD";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÇáãæÖæÚ";
+ SlotName[ dutch ] = "Onderwerp invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÖ÷Ìâ";
+ SlotName[ greek ] = "ÅéóáãùãÞ èÝìáôïò";
+ SlotName[ korean ] = "ÁÖÁ¦ »ðÀÔ";
+ SlotName[ turkish ] = "Konu ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FOOTER
+{
+ SlotName = "Fußzeile einfügen";
+ SlotName [ english ] = "Fußzeile einfügen";
+ SlotName[ english_us ] = "Insert Footer";
+ SlotName[ portuguese ] = "Inserir rodapé";
+ SlotName[ russian ] = "Âñòàâèòü íèæíèé êîëîíòèòóë";
+ SlotName[ dutch ] = "Voettekst invoegen";
+ SlotName[ french ] = "Insérer un pied de page";
+ SlotName[ spanish ] = "Insertar pie de página";
+ SlotName[ italian ] = "Inserisci piè di pagina";
+ SlotName[ danish ] = "Indsæt sidefod";
+ SlotName[ swedish ] = "Infoga sidfot";
+ SlotName[ polish ] = "Wstaw stopkê";
+ SlotName[ portuguese_brazilian ] = "InsertFooter";
+ SlotName[ japanese ] = "̯À‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÒ³½Å";
+ SlotName[ chinese_traditional ] = "´¡¤Jµù¸}";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÊÐííá ÕÝÍÉ";
+ SlotName[ dutch ] = "Voettekst invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÒ³½Å";
+ SlotName[ greek ] = "ÅéóáãùãÞ õðïóÝëéäïõ";
+ SlotName[ korean ] = "¹Ù´Ú±Û »ðÀÔ";
+ SlotName[ turkish ] = "Altbilgi ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FOOTNOTE
+{
+ SlotName = "Fußnote direkt einfügen";
+ SlotName [ english ] = "Fußnote direkt einfügen";
+ SlotName[ english_us ] = "Insert Footnote Directly";
+ SlotName[ portuguese ] = "Inserir nota de rodapé, directamente";
+ SlotName[ russian ] = "Âñòàâèòü íåïîñðåäñòâåííî ñíîñêó";
+ SlotName[ dutch ] = "Voetnoot direct invoegen";
+ SlotName[ french ] = "Insérer directement une note de bas de page";
+ SlotName[ spanish ] = "Insertar nota al pie, directo";
+ SlotName[ italian ] = "Inserisci nota a piè pagina direttamente";
+ SlotName[ danish ] = "Indsæt sidefod direkte";
+ SlotName[ swedish ] = "Infoga fotnot direkt";
+ SlotName[ polish ] = "Wstaw bezpoœrednio przypis dolny";
+ SlotName[ portuguese_brazilian ] = "InsertFootnoteDirect";
+ SlotName[ japanese ] = "‹r’‚Ì’¼Ú‘}“ü";
+ SlotName[ chinese_simplified ] = "Ö±½Ó²åÈë×¢½Å";
+ SlotName[ chinese_traditional ] = "ª½±µ´¡¤Jµù¸}";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÍÇÔíÉ ÓÝáíÉ ãÈÇÔÑÉ";
+ SlotName[ dutch ] = "Voetnoot direct invoegen";
+ SlotName[ chinese_simplified ] = "Ö±½Ó²åÈë×¢½Å";
+ SlotName[ greek ] = "Áð åõèåßáò åéóáãùãÞ õðïóçìåßùóçò";
+ SlotName[ korean ] = "°¢ÁÖ Á÷Á¢ »ðÀÔ";
+ SlotName[ turkish ] = "Dipnotu doðrudan ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FOOTNOTE_DLG
+{
+ SlotName = "Fußnote einfügen";
+ SlotName [ english ] = "Fußnote einfügen";
+ SlotName[ english_us ] = "Insert Footnote";
+ SlotName[ portuguese ] = "Inserir nota de rodapé";
+ SlotName[ russian ] = "Âñòàâèòü ñíîñêó";
+ SlotName[ dutch ] = "Voetnoot invoegen";
+ SlotName[ french ] = "Insérer une note de bas de page";
+ SlotName[ spanish ] = "Insertar nota al pie";
+ SlotName[ italian ] = "Inserisci nota a piè pagina";
+ SlotName[ danish ] = "Indsæt fodnote";
+ SlotName[ swedish ] = "Infoga fotnot";
+ SlotName[ polish ] = "Wstaw przypis dolny";
+ SlotName[ portuguese_brazilian ] = "InsertFootnote";
+ SlotName[ japanese ] = "‹r’‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë×¢½Å";
+ SlotName[ chinese_traditional ] = "´¡¤Jµù¸}";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÍÇÔíÉ ÓÝáíÉ";
+ SlotName[ dutch ] = "Voetnoot invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë×¢½Å";
+ SlotName[ greek ] = "ÅéóáãùãÞ õðïóçìåßùóçò";
+ SlotName[ korean ] = "°¢ÁÖ »ðÀÔ";
+ SlotName[ turkish ] = "Dipnot ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FRAME
+{
+ SlotName = "Rahmen einfügen";
+ SlotName [ english ] = "Rahmen einfügen";
+ SlotName[ english_us ] = "Insert Frame";
+ SlotName[ portuguese ] = "Inserir moldura";
+ SlotName[ russian ] = "Âñòàâèòü ðàìêó";
+ SlotName[ dutch ] = "Kader invoegen";
+ SlotName[ french ] = "Insérer un cadre";
+ SlotName[ spanish ] = "Insertar marco";
+ SlotName[ italian ] = "Inserisci cornice";
+ SlotName[ danish ] = "Indsæt ramme";
+ SlotName[ swedish ] = "Infoga ram";
+ SlotName[ polish ] = "Wstaw ramkê";
+ SlotName[ portuguese_brazilian ] = "InsertFrame";
+ SlotName[ japanese ] = "˜g‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë¿ò";
+ SlotName[ chinese_traditional ] = "´¡¤J¤å¦r¤è¶ô";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÅØÇÑ";
+ SlotName[ dutch ] = "Kader invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë¿ò";
+ SlotName[ greek ] = "ÅéóáãùãÞ ðëáéóßïõ";
+ SlotName[ korean ] = "ÇÁ·¹ÀÓ »ðÀÔ";
+ SlotName[ turkish ] = "Çerçeve ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_FRAME_INTERACT_NOCOL
+{
+ SlotName = "Einspaltigen Rahmen manuell einfügen";
+ SlotName [ english ] = "Insert single column frame manually";
+ SlotName[ english_us ] = "Insert single-column frame manually";
+ SlotName[ portuguese ] = "Inserir moldura de um coluna manualmente";
+ SlotName[ russian ] = "Insert single column frame manually";
+ SlotName[ greek ] = "×åéñïêßíçôç åéóáãùãÞ ìïíüóôõëïõ ðëáéóßïõ";
+ SlotName[ dutch ] = "Eenkoloms kader handmatig invoegen";
+ SlotName[ french ] = "Insertion manuelle d'un cadre à une colonne";
+ SlotName[ spanish ] = "Insert single column frame manually";
+ SlotName[ italian ] = "Insert single column frame manually";
+ SlotName[ danish ] = "Indsæt enkelt-kolonne ramme manuelt";
+ SlotName[ swedish ] = "Insert single column frame manually";
+ SlotName[ polish ] = "Wstaw rêcznie ramkê z jedn¹ kolumn¹";
+ SlotName[ portuguese_brazilian ] = "Insert single column frame manually";
+ SlotName[ japanese ] = "‚P—ñ˜g‚ðŽè“®‚Å‘}“ü";
+ SlotName[ korean ] = "Insert single column frame manually";
+ SlotName[ chinese_simplified ] = "ÊÖ¹¤²åÈëµ¥À¸Ê½¿ò";
+ SlotName[ chinese_traditional ] = "¤â¤u´¡¤J³æÄæ¤å¦r®Ø¡C";
+ SlotName[ turkish ] = "Insert single column frame manually";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÅØÇÑ ãßæä ãä ÚãæÏ æÇÍÏ íÏæíÇð";
+};
+SfxSlotInfo FN_INSERT_FRAME_INTERACT
+{
+ SlotName = "Rahmen manuell einfügen";
+ SlotName [ english ] = "Rahmen manuell einfügen";
+ SlotName[ english_us ] = "Insert Frame Manually";
+ SlotName[ portuguese ] = "Inserir moldura manualmente";
+ SlotName[ russian ] = "Âñòàâèòü ðàìêó âðó÷íóþ";
+ SlotName[ dutch ] = "Kader handmatig invoegen";
+ SlotName[ french ] = "Insérer un cadre";
+ SlotName[ spanish ] = "Insertar marco manualmente";
+ SlotName[ italian ] = "Inserisci cornice manualmente";
+ SlotName[ danish ] = "Indsæt ramme manuelt";
+ SlotName[ swedish ] = "Infoga ram manuellt";
+ SlotName[ polish ] = "Wstaw rêcznie ramkê";
+ SlotName[ portuguese_brazilian ] = "InsertFrameInteract";
+ SlotName[ japanese ] = "˜g‚ðŽè“®‚Å‘}“ü";
+ SlotName[ chinese_simplified ] = "ÊÖ¹¤²åÈë¿ò";
+ SlotName[ chinese_traditional ] = "´¡¤J¤å¦r¤è¶ô";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÅØÇÑ íÏæíÇð";
+ SlotName[ dutch ] = "Kader handmatig invoegen";
+ SlotName[ chinese_simplified ] = "ÊÖ¹¤²åÈë¿ò";
+ SlotName[ greek ] = "×åéñïêßíçôç åéóáãùãÞ ðëáéóßïõ";
+ SlotName[ korean ] = "ÇÁ·¹ÀÓ ¼öµ¿ »ðÀÔ";
+ SlotName[ turkish ] = "Çerçeveyi manuel olarak ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_HARD_SPACE
+{
+ SlotName = "Geschütztes Leerzeichen einfügen";
+ SlotName [ english ] = "Geschütztes Leerzeichen einfügen";
+ SlotName[ english_us ] = "Insert Non-Breaking Space";
+ SlotName[ portuguese ] = "Inserir um espaço não separável";
+ SlotName[ russian ] = "Âñòàâèòü çàùèùåííûé ïðîáåë";
+ SlotName[ dutch ] = "Harde spatie invoegen";
+ SlotName[ french ] = "Insérer un espace protégé";
+ SlotName[ spanish ] = "Insertar espacio protegido";
+ SlotName[ italian ] = "Inserisci spazio protetto";
+ SlotName[ danish ] = "Indsæt hårdt mellemrum";
+ SlotName[ swedish ] = "Infoga skyddat blanksteg";
+ SlotName[ polish ] = "Wstaw spacjê nie rozdzielaj¹c¹";
+ SlotName[ portuguese_brazilian ] = "InsertNonBreakingSpace";
+ SlotName[ japanese ] = "•ÛŒì½Íß°½‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë¿Õ¸ñ×Ö·û";
+ SlotName[ chinese_traditional ] = "´¡¤J«OÅ@ªºªÅ®æ¦r¤¸";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÍÑÝ ãÓÇÝÉ ãÍãí";
+ SlotName[ dutch ] = "Harde spatie invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë¿Õ¸ñ×Ö·û";
+ SlotName[ greek ] = "ÐñïóèÞêç ðñïóôáôåõüìåíïõ êåíïý";
+ SlotName[ korean ] = "ÁÙ ¹Ù²ÞÇÏÁö ¾Ê´Â °ø¹é »ðÀÔ";
+ SlotName[ turkish ] = "Satýr sonu olmayan boþluk ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_HARDHYPHEN
+{
+ SlotName = "Geschützen Trenner einfügen";
+ SlotName [ english ] = "Geschützen Trenner einfügen";
+ SlotName[ english_us ] = "Insert Hard Hyphen";
+ SlotName[ portuguese ] = "Inserir hífen não separável";
+ SlotName[ russian ] = "Âñòàâèòü æåñòêèå ïåðåíîñû";
+ SlotName[ dutch ] = "Vast scheidingsteken invoegen";
+ SlotName[ french ] = "Insérer une coupure de mot manuelle";
+ SlotName[ spanish ] = "Insertar guión protegido";
+ SlotName[ italian ] = "Inserisci sillabazione protetta";
+ SlotName[ danish ] = "Indsæt hård bindestreg";
+ SlotName[ swedish ] = "Infoga hårda bindestreck";
+ SlotName[ polish ] = "Wstaw twardy znak podzia³u";
+ SlotName[ portuguese_brazilian ] = "InsertHardHyphen";
+ SlotName[ japanese ] = "•ÛŒìʲÌÈ°¼®Ý‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÁ¬×Ö·û";
+ SlotName[ chinese_traditional ] = "´¡¤J«OÅ@ªº³s¦r²Å";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÔÑØÉ ÝÇÕáÉ ãÍãíÉ";
+ SlotName[ dutch ] = "Vast scheidingsteken invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÁ¬×Ö·û";
+ SlotName[ greek ] = "ÐñïóèÞêç Ýíôïíïõ äéá÷ùñéóôéêïý";
+ SlotName[ korean ] = "°íÁ¤ ÇÏÀÌÇ »ðÀÔ";
+ SlotName[ turkish ] = "Bölünemez tire ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_HEADER
+{
+ SlotName = "Kopfzeile einfügen";
+ SlotName [ english ] = "Kopfzeile einfügen";
+ SlotName[ english_us ] = "Insert Header";
+ SlotName[ portuguese ] = "Inserir cabeçalho";
+ SlotName[ russian ] = "Âñòàâèòü âåðõíèé êîëîíòèòóë";
+ SlotName[ dutch ] = "Koptekst invoegen";
+ SlotName[ french ] = "Insérer un en-tête";
+ SlotName[ spanish ] = "Insertar encabezamiento";
+ SlotName[ italian ] = "Inserisci riga d'intestazione ";
+ SlotName[ danish ] = "Indsæt sidehoved";
+ SlotName[ swedish ] = "Infoga sidhuvud";
+ SlotName[ polish ] = "Wstaw nag³ówek";
+ SlotName[ portuguese_brazilian ] = "InsertHeader";
+ SlotName[ japanese ] = "ͯÀÞ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëҳü";
+ SlotName[ chinese_traditional ] = "´¡¤J­¶­º";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÑÃÓ ÕÝÍÉ";
+ SlotName[ dutch ] = "Koptekst invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëҳü";
+ SlotName[ greek ] = "ÅéóáãùãÞ êåöáëßäáò";
+ SlotName[ korean ] = "¸Ó¸®±Û »ðÀÔ";
+ SlotName[ turkish ] = "Üstbilgi ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_HRULER
+{
+ SlotName = "Horizontale Linie einfügen";
+ SlotName [ english ] = "Horizontale Linie einfügen";
+ SlotName[ english_us ] = "Insert Horizontal Ruler";
+ SlotName[ portuguese ] = "Inserir linha horizontal";
+ SlotName[ russian ] = "Âñòàâèòü ãîðèçîíòàëüíóþ ëèíèþ";
+ SlotName[ dutch ] = "Horizontale lijn invoegen";
+ SlotName[ french ] = "Insérer une ligne horizontale";
+ SlotName[ spanish ] = "Insertar líneas horizontales";
+ SlotName[ italian ] = "Inserisci linea orizzontale";
+ SlotName[ danish ] = "Indsæt vandret linje";
+ SlotName[ swedish ] = "Infoga horisontell linje";
+ SlotName[ polish ] = "Wstaw liniê poziom¹";
+ SlotName[ portuguese_brazilian ] = "InsertGraphicRuler";
+ SlotName[ japanese ] = "…•½ü‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëˮƽÏß";
+ SlotName[ chinese_traditional ] = "´¡¤J¤ô¥­½u";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÎØ ÃÝÞí";
+ SlotName[ dutch ] = "Horizontale lijn invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëˮƽÏß";
+ SlotName[ greek ] = "ÅéóáãùãÞ ïñéæüíôéáò ãñáììÞò";
+ SlotName[ korean ] = "¼öÆò ´«±ÝÀÚ »ðÀÔ";
+ SlotName[ turkish ] = "Yatay ayýrma çizgisi ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_HYPERLINK
+{
+ SlotName = "Hyperlink einfügen";
+ SlotName [ english ] = "Hyperlink einfügen";
+ SlotName[ english_us ] = "Insert Hyperlink";
+ SlotName[ portuguese ] = "Inserir hiperligação";
+ SlotName[ russian ] = "Âñòàâèòü ãèïåðññûëêó";
+ SlotName[ dutch ] = "Hyperlink invoegen";
+ SlotName[ french ] = "Insérer un hyperlien";
+ SlotName[ spanish ] = "Insertar hiperenlace";
+ SlotName[ italian ] = "Inserisci Hyperlink";
+ SlotName[ danish ] = "Indsæt hyperlink";
+ SlotName[ swedish ] = "Infoga hyperlänk";
+ SlotName[ polish ] = "Wstaw hiper³¹cze";
+ SlotName[ portuguese_brazilian ] = "InsertHyperlinkDlg";
+ SlotName[ japanese ] = "ʲÊß°Øݸ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈ볬Á´½Ó";
+ SlotName[ chinese_traditional ] = "´¡¤J¶W³sµ²";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÇÑÊÈÇØ ÊÔÚÈí";
+ SlotName[ dutch ] = "Hyperlink invoegen";
+ SlotName[ chinese_simplified ] = "²åÈ볬Á´½Ó";
+ SlotName[ greek ] = "ÅéóáãùãÞ õðåñóýíäåóçò";
+ SlotName[ korean ] = "ÇÏÀÌÆÛ¸µÅ© »ðÀÔ";
+ SlotName[ turkish ] = "Hyperlink ekle";
+};
+SfxSlotInfo FN_INSERT_IDX_ENTRY_DLG
+{
+ SlotName = "Indexmarkierung einfügen";
+ SlotName [ english ] = "Indexmarkierung einfügen";
+ SlotName[ english_us ] = "Insert Index Marker";
+ SlotName[ portuguese ] = "Inserir marcador do índice";
+ SlotName[ russian ] = "Âñòàâèòü ìåòêó óêàçàòåëÿ";
+ SlotName[ dutch ] = "Indexmarkering invoegen";
+ SlotName[ french ] = "Insérer une marque d'index";
+ SlotName[ spanish ] = "Insertar marca en el índice";
+ SlotName[ italian ] = "Inserisci contrassegno indice";
+ SlotName[ danish ] = "Indsæt indeksmarkering";
+ SlotName[ swedish ] = "Infoga indexmarkering";
+ SlotName[ polish ] = "Wstaw znacznik indeksu";
+ SlotName[ portuguese_brazilian ] = "InsertIndexEntry";
+ SlotName[ japanese ] = "²ÝÃÞ¯¸½Ï°¶°‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëË÷Òý±ê¼Ç";
+ SlotName[ chinese_traditional ] = "´¡¤J¯Á¤Þ¿ï¨ú";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÊÍÏíÏ ÝåÑÓí";
+ SlotName[ dutch ] = "Indexmarkering invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëË÷Òý±ê¼Ç";
+ SlotName[ greek ] = "ÅéóáãùãÞ óçìÜäé åõñåôçñßïõ";
+ SlotName[ korean ] = "À妽º ¼±ÅÃÇ¥½Ã »ðÀÔ";
+ SlotName[ turkish ] = "Dizin belirteci ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_LINEBREAK
+{
+ SlotName = "Manuellen Zeilenumbruch einfügen";
+ SlotName [ english ] = "Manuellen Zeilenumbruch einfügen";
+ SlotName[ english_us ] = "Insert Manual Row Break";
+ SlotName[ portuguese ] = "Inserir quebra de linha manual";
+ SlotName[ russian ] = "Âñòàâèòü âðó÷íóþ ðàçðûâ ñòðîêè";
+ SlotName[ dutch ] = "Handmatig regeleinde invoegen";
+ SlotName[ french ] = "Insérer un renvoi à la ligne manuel";
+ SlotName[ spanish ] = "Insertar salto de línea manual";
+ SlotName[ italian ] = "Inserisci interruzione manuale riga";
+ SlotName[ danish ] = "Indsæt manuelt linjeskift";
+ SlotName[ swedish ] = "Infoga manuell radbrytning";
+ SlotName[ polish ] = "Wstaw rêczny podzia³ wierszy";
+ SlotName[ portuguese_brazilian ] = "InsertManualLineBreak";
+ SlotName[ japanese ] = "Žè“®‰üs‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "ÊÖ¹¤²åÈë»»Ðзû";
+ SlotName[ chinese_traditional ] = "¤â¤u´¡¤J´«¦æ²Å";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÝÇÕá ÃÓØÑ íÏæí";
+ SlotName[ dutch ] = "Handmatig regeleinde invoegen";
+ SlotName[ chinese_simplified ] = "ÊÖ¹¤²åÈë»»Ðзû";
+ SlotName[ greek ] = "ÅéóáãùãÞ ÷åéñïêßíçôçò áëëáãÞò ãñáììÞò";
+ SlotName[ korean ] = "¼öµ¿ Çà ³ª´©±â »ðÀÔ";
+ SlotName[ turkish ] = "Manüel satýr sonu ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_OBJ_CTRL
+{
+ SlotName = "Objekte einfügen";
+ SlotName [ english ] = "Objekte einfügen";
+ SlotName[ english_us ] = "Insert Objects";
+ SlotName[ portuguese ] = "Inserir objectos";
+ SlotName[ russian ] = "Âñòàâèòü îáúåêòû";
+ SlotName[ dutch ] = "Objecten invoegen";
+ SlotName[ french ] = "Insérer des objets";
+ SlotName[ spanish ] = "Insertar objetos";
+ SlotName[ italian ] = "Inserisci oggetti";
+ SlotName[ danish ] = "Indsæt objekt";
+ SlotName[ swedish ] = "Infoga objekt";
+ SlotName[ polish ] = "Wstaw obiekty";
+ SlotName[ portuguese_brazilian ] = "InsertObjCtrl";
+ SlotName[ japanese ] = "µÌÞ¼Þª¸Ä‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë¶ÔÏó";
+ SlotName[ chinese_traditional ] = "´¡¤Jª«¥ó";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ßÇÆäÇÊ";
+ SlotName[ dutch ] = "Objecten invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë¶ÔÏó";
+ SlotName[ greek ] = "ÅéóáãùãÞ áíôéêåéìÝíùí";
+ SlotName[ korean ] = "°³Ã¼ »ðÀÔ";
+ SlotName[ turkish ] = "Nesne ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_OBJECT_DLG
+{
+ SlotName = "Weitere Objekte einfügen";
+ SlotName [ english ] = "Weitere Objekte einfügen";
+ SlotName[ english_us ] = "Insert Other Objects";
+ SlotName[ portuguese ] = "Inserir outros objectos";
+ SlotName[ russian ] = "Âñòàâèòü äîïîëíèòåëüíûå îáúåêòû";
+ SlotName[ dutch ] = "Andere objecten invoegen";
+ SlotName[ french ] = "Insérer d'autres objets";
+ SlotName[ spanish ] = "Insertar otros objetos";
+ SlotName[ italian ] = "Inserisci ulteriori oggetti";
+ SlotName[ danish ] = "Indsæt flere objekter";
+ SlotName[ swedish ] = "Infoga andra objekt";
+ SlotName[ polish ] = "Wstaw dalsze obiekty";
+ SlotName[ portuguese_brazilian ] = "InsertObject";
+ SlotName[ japanese ] = "‚Ù‚©‚̵ÌÞ¼Þª¸Ä‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÆäËü¶ÔÏó";
+ SlotName[ chinese_traditional ] = "´¡¤J¨ä¥¦ª«¥ó";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ßÇÆäÇÊ ÃÎÑì";
+ SlotName[ dutch ] = "Andere objecten invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÆäËü¶ÔÏó";
+ SlotName[ greek ] = "ÐñïóèÞêç Üëëùí áíôéêåéìÝíùí";
+ SlotName[ korean ] = "´Ù¸¥ °³Ã¼ »ðÀÔ";
+ SlotName[ turkish ] = "Baþka nesne ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_PAGEBREAK
+{
+ SlotName = "Manuellen Seitenwechsel einfügen";
+ SlotName [ english ] = "Manuellen Seitenwechsel einfügen";
+ SlotName[ english_us ] = "Insert Manual Page Break";
+ SlotName[ portuguese ] = "Inserir quebra de página manual";
+ SlotName[ russian ] = "Âñòàâèòü âðó÷íóþ ðàçðûâ ñòðàíèöû";
+ SlotName[ dutch ] = "Handmatig pagina-einde invoegen";
+ SlotName[ french ] = "Insérer un saut de page manuel";
+ SlotName[ spanish ] = "Insertar un salto de página manual";
+ SlotName[ italian ] = "Inserisci cambio pagina manuale";
+ SlotName[ danish ] = "Indsæt manuelt sideskift";
+ SlotName[ swedish ] = "Infoga manuell sidbrytning";
+ SlotName[ polish ] = "Wstaw rêczne ³amanie stron";
+ SlotName[ portuguese_brazilian ] = "InsertManualPageBreak";
+ SlotName[ japanese ] = "”CˆÓ‰üÍß°¼Þ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "ÊÖ¹¤²åÈë»»Ò³·û";
+ SlotName[ chinese_traditional ] = "¤â¤u´¡¤J´«­¶²Å";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÝÇÕá ÕÝÍÇÊ íÏæí";
+ SlotName[ dutch ] = "Handmatig pagina-einde invoegen";
+ SlotName[ chinese_simplified ] = "ÊÖ¹¤²åÈë»»Ò³·û";
+ SlotName[ greek ] = "ÅéóáãùãÞ ÷åéñïêßíçôçò áëëáãÞò óåëßäáò";
+ SlotName[ korean ] = "ÆäÀÌÁö ³ª´©±â »ðÀÔ";
+ SlotName[ turkish ] = "Manüel sayfa sonu ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_PAGEFOOTER
+{
+ SlotName = "Fußzeile einfügen";
+ SlotName [ english ] = "Fußzeile einfügen";
+ SlotName[ english_us ] = "Insert Footer";
+ SlotName[ portuguese ] = "Inserir rodapé";
+ SlotName[ russian ] = "Âñòàâèòü íèæíèé êîëîíòèòóë";
+ SlotName[ dutch ] = "Voettekst invoegen";
+ SlotName[ french ] = "Insérer un pied de page";
+ SlotName[ spanish ] = "Insertar pie de página";
+ SlotName[ italian ] = "Inserisci piè di pagina";
+ SlotName[ danish ] = "Indsæt sidefod";
+ SlotName[ swedish ] = "Infoga sidfot";
+ SlotName[ polish ] = "Wstaw stopkê";
+ SlotName[ portuguese_brazilian ] = "InsertPageFooter";
+ SlotName[ japanese ] = "̯À‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÒ³½Å";
+ SlotName[ chinese_traditional ] = "´¡¤J­¶¸}";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÊÐííá ÕÝÍÉ";
+ SlotName[ dutch ] = "Voettekst invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÒ³½Å";
+ SlotName[ greek ] = "ÅéóáãùãÞ õðïóÝëéäïõ";
+ SlotName[ korean ] = "¹Ù´Ú±Û »ðÀÔ";
+ SlotName[ turkish ] = "Altbilgi ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_PAGEHEADER
+{
+ SlotName = "Kopfzeile einfügen";
+ SlotName [ english ] = "Kopfzeile einfügen";
+ SlotName[ english_us ] = "Insert Header";
+ SlotName[ portuguese ] = "Inserir cabeçalho";
+ SlotName[ russian ] = "Âñòàâèòü âåðõíèé êîëîíòèòóë";
+ SlotName[ dutch ] = "Koptekst invoegen";
+ SlotName[ french ] = "Insérer un en-tête";
+ SlotName[ spanish ] = "Insertar encabezamiento";
+ SlotName[ italian ] = "Inserisci riga d'intestazione";
+ SlotName[ danish ] = "Indsæt sidehoved";
+ SlotName[ swedish ] = "Infoga sidhuvud";
+ SlotName[ polish ] = "Wstaw nag³ówek";
+ SlotName[ portuguese_brazilian ] = "InsertPageHeader";
+ SlotName[ japanese ] = "ͯÀÞ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëҳü";
+ SlotName[ chinese_traditional ] = "´¡¤J­¶­º";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÑÃÓ ÕÝÍÉ";
+ SlotName[ dutch ] = "Koptekst invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëҳü";
+ SlotName[ greek ] = "ÅéóáãùãÞ êåöáëßäáò";
+ SlotName[ korean ] = "¸Ó¸®±Û »ðÀÔ";
+ SlotName[ turkish ] = "Üstbilgi ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_REF_FIELD
+{
+ SlotName = "Querverweis einfügen";
+ SlotName [ english ] = "Querverweis einfügen";
+ SlotName[ english_us ] = "Insert Field Reference";
+ SlotName[ portuguese ] = "Inserir referência";
+ SlotName[ russian ] = "Âñòàâèòü ïåðåêðåñòíóþ ññûëêó";
+ SlotName[ dutch ] = "Kruisverwijzing invoegen";
+ SlotName[ french ] = "Insérer un renvoi";
+ SlotName[ spanish ] = "Insertar campo referencia";
+ SlotName[ italian ] = "Inserisci riferimento incrociato";
+ SlotName[ danish ] = "Indsæt krydshenvisning";
+ SlotName[ swedish ] = "Infoga korshänvisning";
+ SlotName[ polish ] = "Wstaw odsy³acz";
+ SlotName[ portuguese_brazilian ] = "InsertReferenzField";
+ SlotName[ japanese ] = "ŽQÆ̨°ÙÄÞ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë²ÎÕÕ";
+ SlotName[ chinese_traditional ] = "´¡¤JÄæ¦ì°Ñ·Ó";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÅÓäÇÏÇÊ ÊÑÇÝÞíÉ";
+ SlotName[ dutch ] = "Kruisverwijzing invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë²ÎÕÕ";
+ SlotName[ greek ] = "ÅéóáãùãÞ ðáñáðïìðÞ ðåäßïõ";
+ SlotName[ korean ] = "Çʵå ÂüÁ¶ »ðÀÔ";
+ SlotName[ turkish ] = "Çapraz baþvuru alaný ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_REGION
+{
+ SlotName = "Bereich einfügen";
+ SlotName [ english ] = "Bereich einfügen";
+ SlotName[ english_us ] = "Insert Section";
+ SlotName[ portuguese ] = "Inserir secção";
+ SlotName[ russian ] = "Âñòàâèòü îáëàñòü";
+ SlotName[ dutch ] = "Bereik invoegen";
+ SlotName[ french ] = "Insérer une section";
+ SlotName[ spanish ] = "Insertar área";
+ SlotName[ italian ] = "Inserisci area";
+ SlotName[ danish ] = "Indsæt område";
+ SlotName[ swedish ] = "Infoga område";
+ SlotName[ polish ] = "Wstaw obszar";
+ SlotName[ portuguese_brazilian ] = "InsertRegion";
+ SlotName[ japanese ] = "¾¸¼®Ý‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÇøÓò";
+ SlotName[ chinese_traditional ] = "´¡¤J°Ï°ì";
+ SlotName[ arabic ] = "ÅÏÑÇÌ äØÇÞ";
+ SlotName[ dutch ] = "Bereik invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÇøÓò";
+ SlotName[ greek ] = "ÅéóáãùãÞ åíüôçôáò";
+ SlotName[ korean ] = "±¸¿ª »ðÀÔ";
+ SlotName[ turkish ] = "Bölüm ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_SIM
+{
+ SlotName = "Aus Bildbearbeitung einfügen";
+ SlotName [ english ] = "Aus Bildbearbeitung einfügen";
+ SlotName[ english_us ] = "Insert from Image Editor";
+ SlotName[ portuguese ] = "Inserir imagem";
+ SlotName[ russian ] = "Âñòàâèòü èç ðåäàêòîðà èçîáðàæåíèÿ";
+ SlotName[ dutch ] = "Uit afbeeldingsbewerking invoegen";
+ SlotName[ french ] = "Insérer à partir de l'éditeur d'image";
+ SlotName[ spanish ] = "Insertar desde la edición de imágenes";
+ SlotName[ italian ] = "Inserisci da elaboratore immagini";
+ SlotName[ danish ] = "Indsæt fra billedredigeringen";
+ SlotName[ swedish ] = "Infoga från bildredigering";
+ SlotName[ polish ] = "Wstaw z edytora obrazów";
+ SlotName[ portuguese_brazilian ] = "InsertObjectStarOffice Image";
+ SlotName[ japanese ] = "²Ò°¼Þݸނ©‚ç‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "´ÓͼÏñ±à¼­Æ÷²åÈë";
+ SlotName[ chinese_traditional ] = "±q¤pµe®a´¡¤J";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ãä ãÍÑÑ ÇáÕæÑ";
+ SlotName[ dutch ] = "Uit afbeeldingsbewerking invoegen";
+ SlotName[ chinese_simplified ] = "´ÓͼÏñ±à¼­Æ÷²åÈë";
+ SlotName[ greek ] = "ÅéóáãùãÞ áðü ôçí åðåîåñãáóßá åéêüíáò";
+ SlotName[ korean ] = "À̹ÌÁö ÆíÁý±â·ÎºÎÅÍ °¡Á®¿À±â";
+ SlotName[ turkish ] = "Görüntü düzenleyiciden ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_SMA
+{
+ SlotName = "StarOffice Math Objekt einfügen";
+ SlotName [ english ] = "Insert StarOffice Math object";
+ SlotName[ english_us ] = "Insert StarOffice Math object";
+ SlotName[ portuguese ] = "Inserir objecto do StarOffice Math";
+ SlotName[ russian ] = "Âñòàâèòü îáúåêò StarOffice Math";
+ SlotName[ dutch ] = "StarOffice Math-object invoegen";
+ SlotName[ french ] = "Insérer un objet StarOffice Math";
+ SlotName[ spanish ] = "Insertar objeto StarOffice Math";
+ SlotName[ italian ] = "Inserisci oggetto StarOffice Math";
+ SlotName[ danish ] = "Indsæt StarOffice Math-objekt";
+ SlotName[ swedish ] = "Infoga StarOffice Math-objekt";
+ SlotName[ polish ] = "Wstaw obiekt StarOffice Math";
+ SlotName[ portuguese_brazilian ] = "InsertObjectStarOffice Math";
+ SlotName[ japanese ] = "StarOffice Math µÌÞ¼Þª¸Ä‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë StarOffice Math ¶ÔÏó";
+ SlotName[ chinese_traditional ] = "´¡¤J StarOffice Math ª«¥ó";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ßÇÆä StarOffice Math ";
+ SlotName[ dutch ] = "StarOffice Math-object invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë StarOffice Math ¶ÔÏó";
+ SlotName[ greek ] = "ÅéóáãùãÞ áíôéêåéìÝíïõ StarOffice Math";
+ SlotName[ korean ] = "¼ö½Ä »ðÀÔ";
+ SlotName[ turkish ] = "StarMath nesnesi ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_SOFT_HYPHEN
+{
+ SlotName = "Weichen Trenner einfügen";
+ SlotName [ english ] = "Weichen Trenner einfügen";
+ SlotName[ english_us ] = "Insert Soft Hyphen";
+ SlotName[ portuguese ] = "Inserir hífen opcional";
+ SlotName[ russian ] = "Âñòàâêà ìÿãêèõ ïåðåíîñîâ";
+ SlotName[ dutch ] = "Zacht scheidingsteken invoegen";
+ SlotName[ french ] = "Insérer une coupure automatique";
+ SlotName[ spanish ] = "Insertar guión opcional";
+ SlotName[ italian ] = "Inserisci trattino morbido";
+ SlotName[ danish ] = "Indsæt blød bindestreg";
+ SlotName[ swedish ] = "Infoga mjuka bindestreck";
+ SlotName[ polish ] = "Wstaw miêkki znak podzia³u";
+ SlotName[ portuguese_brazilian ] = "InsertSoftHyphen";
+ SlotName[ japanese ] = "—áŠO‚ÌʲÌÝ‚ð‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÈíÐÔÁ¬×Ö·û";
+ SlotName[ chinese_traditional ] = "´¡¤J³n©Ê³s¦r²Å";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÝÇÕáÉ ÇÎÊíÇÑíÉ";
+ SlotName[ dutch ] = "Zacht scheidingsteken invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÈíÐÔÁ¬×Ö·û";
+ SlotName[ greek ] = "ÐñïóèÞêç Þðéïõ äéá÷ùñéóôéêïý";
+ SlotName[ korean ] = "ÀÓÀÇ ÁöÁ¤ ÇÏÀÌÇ »ðÀÔ";
+ SlotName[ turkish ] = "Tire ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_SYMBOL
+{
+ SlotName = "Sonderzeichen einfügen ";
+ SlotName [ english ] = "Sonderzeichen einfügen ";
+ SlotName[ english_us ] = "Insert Special Character ";
+ SlotName[ portuguese ] = "Inserir símbolo ";
+ SlotName[ russian ] = "Âñòàâèòü ñèìâîë ";
+ SlotName[ dutch ] = "Speciale tekens invoegen ";
+ SlotName[ french ] = "Insérer des caractères spéciaux ";
+ SlotName[ spanish ] = "Insertar símbolo ";
+ SlotName[ italian ] = "Inserisci carattere speciale ";
+ SlotName[ danish ] = "Indsæt specialtegn ";
+ SlotName[ swedish ] = "Infoga specialtecken ";
+ SlotName[ polish ] = "Wstaw znak specjalny ";
+ SlotName[ portuguese_brazilian ] = "InsertSymbol ";
+ SlotName[ japanese ] = "“ÁŽê•¶Žš‚Ì‘}“ü ";
+ SlotName[ chinese_simplified ] = "²åÈëÌØÊâ×Ö·û ";
+ SlotName[ chinese_traditional ] = "´¡¤J¯S®í¦r¤¸ ";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÑãæÒ ÎÇÕÉ ";
+ SlotName[ dutch ] = "Speciale tekens invoegen ";
+ SlotName[ chinese_simplified ] = "²åÈëÌØÊâ×Ö·û ";
+ SlotName[ greek ] = "ÅéóáãùãÞ åéäéêïý ÷áñáêôÞñá ";
+ SlotName[ korean ] = "Ư¼ö¹®ÀÚ »ðÀÔ ";
+ SlotName[ turkish ] = "Özel karakter ekle ";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_TABLE
+{
+ SlotName = "Tabelle einfügen";
+ SlotName [ english ] = "Tabelle einfügen";
+ SlotName[ english_us ] = "Insert Table";
+ SlotName[ portuguese ] = "Inserir tabela";
+ SlotName[ russian ] = "Âñòàâèòü òàáëèöó";
+ SlotName[ dutch ] = "Tabel invoegen";
+ SlotName[ french ] = "Insérer un tableau";
+ SlotName[ spanish ] = "Insertar tabla";
+ SlotName[ italian ] = "Inserisci tabella";
+ SlotName[ danish ] = "Indsæt tabel";
+ SlotName[ swedish ] = "Infoga tabell";
+ SlotName[ polish ] = "Wstaw tabelê";
+ SlotName[ portuguese_brazilian ] = "InsertTable";
+ SlotName[ japanese ] = "•\\‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë±í¸ñ";
+ SlotName[ chinese_traditional ] = "´¡¤Jªí®æ";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÌÏæá";
+ SlotName[ dutch ] = "Tabel invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë±í¸ñ";
+ SlotName[ greek ] = "ÅéóáãùãÞ ðßíáêá";
+ SlotName[ korean ] = "Ç¥»ðÀÔ";
+ SlotName[ turkish ] = "Tablo ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_JAVAEDIT
+{
+ SlotName = "Script einfügen";
+ SlotName [ english ] = "Script einfügen";
+ SlotName[ english_us ] = "Insert Script";
+ SlotName[ portuguese ] = "Inserir Script";
+ SlotName[ russian ] = "Âñòàâèòü Script";
+ SlotName[ dutch ] = "Script invoegen";
+ SlotName[ french ] = "Insérer un script";
+ SlotName[ spanish ] = "Insertar script";
+ SlotName[ italian ] = "Inserisci script";
+ SlotName[ danish ] = "Indsæt script";
+ SlotName[ swedish ] = "Infoga skript";
+ SlotName[ polish ] = "Wstaw Script";
+ SlotName[ portuguese_brazilian ] = "InsertScript";
+ SlotName[ japanese ] = "½¸ØÌßÄ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë½Å±¾";
+ SlotName[ chinese_traditional ] = "´¡¤J©R¥O½Z";
+ SlotName[ arabic ] = "ÅÏÑÇÌ Script";
+ SlotName[ dutch ] = "Script invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë½Å±¾";
+ SlotName[ greek ] = "ÅéóáãùãÞ äÝóìçò åíåñãåéþí";
+ SlotName[ korean ] = "½ºÅ©¸³Æ® »ðÀÔ";
+ SlotName[ turkish ] = "Komut dizisi ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_LABEL
+{
+ SlotName = "Etiketten einfügen";
+ SlotName [ english ] = "Etiketten einfügen";
+ SlotName[ english_us ] = "Insert Labels";
+ SlotName[ portuguese ] = "Inserir rótulos";
+ SlotName[ russian ] = "Âñòàâèòü íàêëåéêè";
+ SlotName[ dutch ] = "Etiketten invoegen";
+ SlotName[ french ] = "Insérer des étiquettes";
+ SlotName[ spanish ] = "Insertar etiquetas";
+ SlotName[ italian ] = "Inserisci etichette";
+ SlotName[ danish ] = "Indsæt etiketter";
+ SlotName[ swedish ] = "Infoga etiketter";
+ SlotName[ polish ] = "Dodaj etykietê";
+ SlotName[ portuguese_brazilian ] = "InsertLabels";
+ SlotName[ japanese ] = "×ÍÞÙ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë±êÇ©";
+ SlotName[ chinese_traditional ] = "´¡¤J¶K¼Ð";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÈØÇÞÇÊ ÚäæäÉ";
+ SlotName[ dutch ] = "Etiketten invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë±êÇ©";
+ SlotName[ greek ] = "ÅéóáãùãÞ åôéêÝôáò";
+ SlotName[ korean ] = "¶óº§ »ðÀÔ";
+ SlotName[ turkish ] = "Etiket ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_BUSINESS_CARD
+{
+ SlotName = "Visitenkarten einfügen";
+ SlotName [ english ] = "Insert business cards";
+ SlotName[ english_us ] = "Insert business cards";
+ SlotName[ portuguese ] = "Inserir cartões de visita";
+ SlotName[ russian ] = "Âñòàâèòü âèçèòíûå êàðòî÷êè";
+ SlotName[ greek ] = "ÐñïóèÞêç êáñôþí ðáñïõóßáóçò";
+ SlotName[ dutch ] = "Visitekaartjes invoegen";
+ SlotName[ french ] = "Insérer des cartes de visite";
+ SlotName[ spanish ] = "Insertar tarjetas de visita";
+ SlotName[ italian ] = "Inserisci biglietti da visita";
+ SlotName[ danish ] = "Indsæt visitkort";
+ SlotName[ swedish ] = "Infoga visitkort";
+ SlotName[ polish ] = "Dodaj wizytówki";
+ SlotName[ portuguese_brazilian ] = "Insert business cards";
+ SlotName[ japanese ] = "–¼Žh‚Ì‘}“ü";
+ SlotName[ korean ] = "¸íÇÔ »ðÀÔ";
+ SlotName[ chinese_simplified ] = "²åÈëÃûƬ";
+ SlotName[ chinese_traditional ] = "´¡¤J¦W¤ù";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÈØÇÞÇÊ ÇáÒíÇÑÉ";
+ SlotName[ turkish ] = "Kartvizit ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_LINE_DOWN
+{
+ SlotName = "Zur Zeile unten";
+ SlotName [ english ] = "Zur Zeile unten";
+ SlotName[ english_us ] = "To Line Below";
+ SlotName[ portuguese ] = "Ir para a linha inferior";
+ SlotName[ russian ] = "Äî íèæíåé ñòðîêè";
+ SlotName[ dutch ] = "Naar regel beneden";
+ SlotName[ french ] = "A la ligne inférieure";
+ SlotName[ spanish ] = "Ir a la línea de abajo";
+ SlotName[ italian ] = "Alla riga in basso";
+ SlotName[ danish ] = "Til række forneden";
+ SlotName[ swedish ] = "Till raden under";
+ SlotName[ polish ] = "Do wiersza na dole";
+ SlotName[ portuguese_brazilian ] = "GoDown";
+ SlotName[ japanese ] = "s‚̉º‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÃæµÄÐÐ";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@¦æ";
+ SlotName[ arabic ] = "Åáì ÇáÓØÑ ÇáÃÓÝá";
+ SlotName[ dutch ] = "Naar regel beneden";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÃæµÄÐÐ";
+ SlotName[ greek ] = "Ðñïò ãñáììÞ êÜôù";
+ SlotName[ korean ] = "¶óÀÎ ¾Æ·¡¿¡";
+ SlotName[ turkish ] = "Alttaki satýr";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_LINE_DOWN_SEL
+{
+ SlotName = "Bis Zeile unten selektieren";
+ SlotName [ english ] = "Bis Zeile unten selektieren";
+ SlotName[ english_us ] = "Select Down";
+ SlotName[ portuguese ] = "Seleccionar até à linha inferior";
+ SlotName[ russian ] = "Âûäåëèòü äî íèæíåé ñòðîêè";
+ SlotName[ dutch ] = "Tot regel beneden selecteren";
+ SlotName[ french ] = "Sélect. vers le bas";
+ SlotName[ spanish ] = "Seleccionar hasta la línea de abajo";
+ SlotName[ italian ] = "Seleziona fino alla riga in basso";
+ SlotName[ danish ] = "Marker til række forneden";
+ SlotName[ swedish ] = "Markera till raden under";
+ SlotName[ polish ] = "Zaznacz do wiersza na dole";
+ SlotName[ portuguese_brazilian ] = "LineDownSel";
+ SlotName[ japanese ] = "s‚̉º‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÏÂÃæµÄÐÐ";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¤U¤@¦æ";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÇáÓØÑ ÇáÃÓÝá";
+ SlotName[ dutch ] = "Tot regel beneden selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÏÂÃæµÄÐÐ";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôç ãñáììÞ êÜôù";
+ SlotName[ korean ] = "¾Æ·¡ ¼±ÅÃ";
+ SlotName[ turkish ] = "Alttaki satýra kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_LINE_NUMBERING_DLG
+{
+ SlotName = "Zeilennummerierung einstellen";
+ SlotName [ english ] = "Zeilennumerierung einstellen";
+ SlotName[ english_us ] = "Set Line Numbering";
+ SlotName[ portuguese ] = "Definir numeração de linhas";
+ SlotName[ russian ] = "Íàñòðîéêà íóìåðàöèè ñòðîê";
+ SlotName[ dutch ] = "Regelnummering instellen";
+ SlotName[ french ] = "Paramétrer la numérotation des lignes";
+ SlotName[ spanish ] = "Definir numeración de líneas";
+ SlotName[ italian ] = "Imposta numerazione linee";
+ SlotName[ danish ] = "Indstil linjenummerering";
+ SlotName[ swedish ] = "Ställ in radnumrering";
+ SlotName[ polish ] = "Ustaw numeracjê wierszy";
+ SlotName[ portuguese_brazilian ] = "LineNumberingDialog";
+ SlotName[ japanese ] = "s‚̔Ԇ•t‚¯‚ÌÝ’è";
+ SlotName[ chinese_simplified ] = "É趨ÐбàºÅ";
+ SlotName[ chinese_traditional ] = "³]©w¦æ½s¸¹";
+ SlotName[ arabic ] = "ÊÚííä ÊÑÞíã ÇáÃÓØÑ";
+ SlotName[ dutch ] = "Regelnummering instellen";
+ SlotName[ chinese_simplified ] = "É趨ÐбàºÅ";
+ SlotName[ greek ] = "Êáèïñéóìüò áñßèìçóçò ãñáììþí";
+ SlotName[ korean ] = "¼± ¹øÈ£¸Å±â±â ¼³Á¤";
+ SlotName[ turkish ] = "Satýr numaralarýný ayarla";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_LINE_UP
+{
+ SlotName = "Zur Zeile oben";
+ SlotName [ english ] = "Zur Zeile oben";
+ SlotName[ english_us ] = "To Top Line";
+ SlotName[ portuguese ] = "Ir para a linha superior";
+ SlotName[ russian ] = "Äî âåðõíåé ñòðîêè";
+ SlotName[ dutch ] = "Naar regel boven";
+ SlotName[ french ] = "Aller à la ligne supérieure";
+ SlotName[ spanish ] = "Ir a la línea de arriba";
+ SlotName[ italian ] = "Alla riga superiore";
+ SlotName[ danish ] = "Til række foroven";
+ SlotName[ swedish ] = "Till raden över";
+ SlotName[ polish ] = "Do górnego wiersza";
+ SlotName[ portuguese_brazilian ] = "GoUp";
+ SlotName[ japanese ] = "s‚Ìã‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÐÐÉÏ·½";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@¦æ";
+ SlotName[ arabic ] = "Åáì ÇáÓØÑ ÇáÃÚáì";
+ SlotName[ dutch ] = "Naar regel boven";
+ SlotName[ chinese_simplified ] = "תµ½ÐÐÉÏ·½";
+ SlotName[ greek ] = "Ðñïò ôçí ãñáììÞ Üíù";
+ SlotName[ korean ] = "À­ÁÙ·Î";
+ SlotName[ turkish ] = "Üsttteki satýr";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_LINE_UP_SEL
+{
+ SlotName = "Bis Zeile oben selektieren";
+ SlotName [ english ] = "Bis Zeile oben selektieren";
+ SlotName[ english_us ] = "Select to Top Line";
+ SlotName[ portuguese ] = "Seleccionar até à linha superior";
+ SlotName[ russian ] = "Âûäåëèòü äî âåðõíåé ñòðîêè";
+ SlotName[ dutch ] = "Tot aan bovenste regel selecteren";
+ SlotName[ french ] = "Sélect. jusqu'à la ligne supérieure";
+ SlotName[ spanish ] = "Seleccionar hasta línea de arriba";
+ SlotName[ italian ] = "Seleziona fino alla riga superiore";
+ SlotName[ danish ] = "Marker til række foroven";
+ SlotName[ swedish ] = "Markera till raden över";
+ SlotName[ polish ] = "Zaznacz do wiersza w górze";
+ SlotName[ portuguese_brazilian ] = "LineUpSel";
+ SlotName[ japanese ] = "s‚Ìã‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÐеÄÉÏ·½";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¤W¤@¦æ";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÇáÓØÑ ÇáÃÚáì";
+ SlotName[ dutch ] = "Tot aan bovenste regel selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÐеÄÉÏ·½";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôçí ãñáììÞ Üíù";
+ SlotName[ korean ] = "À­ÁÙ±îÁö ¼±ÅÃ";
+ SlotName[ turkish ] = "Üstteki satýra kadar ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NAVIGATION_PI_GOTO_PAGE
+{
+ SlotName = "Zur Seite";
+ SlotName [ english ] = "Zur Seite";
+ SlotName[ english_us ] = "To Page";
+ SlotName[ portuguese ] = "Ir para página";
+ SlotName[ russian ] = "Ïåðåéòè íà ñòðàíèöó";
+ SlotName[ dutch ] = "Naar pagina";
+ SlotName[ french ] = "Aller à la page";
+ SlotName[ spanish ] = "Ir a la página";
+ SlotName[ italian ] = "Alla pagina";
+ SlotName[ danish ] = "Til side";
+ SlotName[ swedish ] = "Till sidan";
+ SlotName[ polish ] = "Do strony";
+ SlotName[ portuguese_brazilian ] = "GoToPage";
+ SlotName[ japanese ] = "Íß°¼Þ‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½Ò³Ãæ";
+ SlotName[ chinese_traditional ] = "Âà¨ì­¶­±";
+ SlotName[ arabic ] = "ÅáìÇáÕÝÍÉ";
+ SlotName[ dutch ] = "Naar pagina";
+ SlotName[ chinese_simplified ] = "תµ½Ò³Ãæ";
+ SlotName[ greek ] = "Ðñïò óåëßäá";
+ SlotName[ korean ] = "ÆäÀÌÁö·Î";
+ SlotName[ turkish ] = "Sayfa";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NEW_GLOBAL_DOC
+{
+ SlotName = "Globaldokument erzeugen";
+ SlotName [ english ] = "Globaldokument erzeugen";
+ SlotName[ english_us ] = "Create Master Document";
+ SlotName[ portuguese ] = "Criar documento-mestre";
+ SlotName[ russian ] = "Ñîçäàòü ãëàâíûé äîêóìåíò";
+ SlotName[ dutch ] = "Master-document maken";
+ SlotName[ french ] = "Créer document maître";
+ SlotName[ spanish ] = "Crear un documento maestro";
+ SlotName[ italian ] = "Crea documento master";
+ SlotName[ danish ] = "Opret hoveddokument";
+ SlotName[ swedish ] = "Skapa samlingsdokument";
+ SlotName[ polish ] = "Utwórz dokument g³ówny";
+ SlotName[ portuguese_brazilian ] = "NewGlobalDoc";
+ SlotName[ japanese ] = "ϽÀ°ÄÞ·­ÒÝÄ‚Ìì¬";
+ SlotName[ chinese_simplified ] = "Éú³ÉÖ÷¿ØÎĵµ";
+ SlotName[ chinese_traditional ] = "«Ø¥ß¥D±±¤å¥ó";
+ SlotName[ arabic ] = "ÅäÔÇÁ ãÓÊäÏ ÔÇãá";
+ SlotName[ dutch ] = "Master-document maken";
+ SlotName[ chinese_simplified ] = "Éú³ÉÖ÷¿ØÎĵµ";
+ SlotName[ greek ] = "Äçìéïõñãßá êýñéïõ åããñÜöïõ";
+ SlotName[ korean ] = "¹®¼­ ¸¸µé±â";
+ SlotName[ turkish ] = "Ana belge";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NEW_HTML_DOC
+{
+ SlotName = "HTML Dokument erzeugen";
+ SlotName [ english ] = "HTML Dokument erzeugen";
+ SlotName[ english_us ] = "Create HTML Document";
+ SlotName[ portuguese ] = "Criar documento HTML";
+ SlotName[ russian ] = "Ñîçäàòü äîêóìåíò â ôîðìàòå HTML";
+ SlotName[ dutch ] = "HTLM-document maken";
+ SlotName[ french ] = "Créer un document HTML";
+ SlotName[ spanish ] = "Crear documento HTML";
+ SlotName[ italian ] = "Crea nuovo documento HTML";
+ SlotName[ danish ] = "Opret HTML-dokument";
+ SlotName[ swedish ] = "Skapa HTML-dokument";
+ SlotName[ polish ] = "Utwórz dokument HTML";
+ SlotName[ portuguese_brazilian ] = "NewHtmlDoc";
+ SlotName[ japanese ] = "HTMLŒ`Ž®‚Ì•¶‘ì¬";
+ SlotName[ chinese_simplified ] = "Éú³É HTML Îĵµ";
+ SlotName[ chinese_traditional ] = "»s§@ HTML ¤å¥ó";
+ SlotName[ arabic ] = "ÅäÔÇÁ ãÓÊäÏ HTML";
+ SlotName[ dutch ] = "HTLM-document maken";
+ SlotName[ chinese_simplified ] = "Éú³É HTML Îĵµ";
+ SlotName[ greek ] = "Äçìéïõñãßá åããñÜöïõ HTML";
+ SlotName[ korean ] = "HTML ¹®¼­ ¸¸µé±â";
+ SlotName[ turkish ] = "HTML belgesi oluþtur";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NEXT_BOOKMARK
+{
+ SlotName = "Zur nächsten Textmarke";
+ SlotName [ english ] = "Zur nächsten Textmarke";
+ SlotName[ english_us ] = "To Next Bookmark";
+ SlotName[ portuguese ] = "Marcador de texto seguinte";
+ SlotName[ russian ] = "Äî ñëåäóþùåé çàêëàäêè";
+ SlotName[ dutch ] = "Naar volgende tekstmarkering";
+ SlotName[ french ] = "Aller au repère de texte suivant";
+ SlotName[ spanish ] = "Ir al marcador siguiente";
+ SlotName[ italian ] = "Al segnalibro successivo";
+ SlotName[ danish ] = "Til næste tekstmarkering";
+ SlotName[ swedish ] = "Till nästa textmarkering";
+ SlotName[ polish ] = "Do nastêpnej zak³adki";
+ SlotName[ portuguese_brazilian ] = "JumpToNextBookmark";
+ SlotName[ japanese ] = "ŽŸ‚Ì÷½ÄÏ°¸‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸öÊéÇ©";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@®ÑÅÒ";
+ SlotName[ arabic ] = "Åáì ÇáÅÔÇÑÉ ÇáãÑÌÚíÉ ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Naar volgende tekstmarkering";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸öÊéÇ©";
+ SlotName[ greek ] = "Ðñïò åðüìåíï óåëéäïäåßêôç";
+ SlotName[ korean ] = "´ÙÀ½ Ã¥ °¥ÇÇ·Î";
+ SlotName[ turkish ] = "Sonraki metin belirteci";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NEXT_FOOTNOTE
+{
+ SlotName = "Zur nächsten Fußnote";
+ SlotName [ english ] = "Zur nächsten Fußnote";
+ SlotName[ english_us ] = "To Next Footnote";
+ SlotName[ portuguese ] = "Ir para nota de rodapé seguinte";
+ SlotName[ russian ] = "Äî ñëåäóþùåé ñíîñêè";
+ SlotName[ dutch ] = "Naar volgende voetnoot";
+ SlotName[ french ] = "À la note de bas de page suivante";
+ SlotName[ spanish ] = "Ir a la nota al pie siguiente";
+ SlotName[ italian ] = "Alla nota a piè pagina successiva";
+ SlotName[ danish ] = "Til næste fodnote";
+ SlotName[ swedish ] = "Till nästa fotnot";
+ SlotName[ polish ] = "Do nastêpnego przypisu dolnego";
+ SlotName[ portuguese_brazilian ] = "GoToNextFootnote";
+ SlotName[ japanese ] = "ŽŸ‚Ì‹r’‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö×¢½Å";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@­Óµù¸}";
+ SlotName[ arabic ] = "Åáì ÇáÍÇÔíÉ ÇáÓÝáíÉ ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Naar volgende voetnoot";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö×¢½Å";
+ SlotName[ greek ] = "Ðñïò ôçí åðüìåíç õðïóçìåßùóç";
+ SlotName[ korean ] = "´ÙÀ½ °¢ÁÖ·Î";
+ SlotName[ turkish ] = "Sonraki altbilgi";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NEXT_PARA
+{
+ SlotName = "Zum nächsten Absatz";
+ SlotName [ english ] = "Zum nächsten Absatz";
+ SlotName[ english_us ] = "To Next Paragraph";
+ SlotName[ portuguese ] = "Parágrafo seguinte";
+ SlotName[ russian ] = "Äî ñëåäóþùåãî àáçàöà";
+ SlotName[ dutch ] = "Naar volgende alinea";
+ SlotName[ french ] = "Au paragraphe suivant";
+ SlotName[ spanish ] = "Ir al párrafo siguiente";
+ SlotName[ italian ] = "Al paragrafo successivo";
+ SlotName[ danish ] = "Til næste afsnit";
+ SlotName[ swedish ] = "Till nästa stycke";
+ SlotName[ polish ] = "Do nastêpnego akapitu";
+ SlotName[ portuguese_brazilian ] = "GoToNextPara";
+ SlotName[ japanese ] = "ŽŸ‚Ì’i—Ž‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö¶ÎÂä";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@­Ó¬q¸¨";
+ SlotName[ arabic ] = "Åáì ÇáÝÞÑÉ ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Naar volgende alinea";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö¶ÎÂä";
+ SlotName[ greek ] = "Ðñïò ôçí åðüìåíç ðáñÜãñáöï";
+ SlotName[ korean ] = "´ÙÀ½ ´Ü¶ôÀ¸·Î";
+ SlotName[ turkish ] = "Sonraki paragraf";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NEXT_SENT
+{
+ SlotName = "Zum nächsten Satz";
+ SlotName [ english ] = "Zum nächsten Satz";
+ SlotName[ english_us ] = "To Next Sentence";
+ SlotName[ portuguese ] = "Ir para frase seguinte";
+ SlotName[ russian ] = "Äî ñëåäóþùåãî ïðåäëîæåíèÿ";
+ SlotName[ dutch ] = "Naar volgende zin";
+ SlotName[ french ] = "Aller à la phrase suivante";
+ SlotName[ spanish ] = "Ir la oración siguiente";
+ SlotName[ italian ] = "Alla frase successiva";
+ SlotName[ danish ] = "Til næste sætning";
+ SlotName[ swedish ] = "Till nästa mening";
+ SlotName[ polish ] = "Do nastêpnego zdania";
+ SlotName[ portuguese_brazilian ] = "GoToNextSentence";
+ SlotName[ japanese ] = "ŽŸ‚Ì•¶Í‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö¾ä×Ó";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@­Ó¥y¤l";
+ SlotName[ arabic ] = "ÍÊì ÇáÌãáÉ ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Naar volgende zin";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö¾ä×Ó";
+ SlotName[ greek ] = "Ðñïò ôçí åðüìåíç ðñüôáóç";
+ SlotName[ korean ] = "´ÙÀ½ ¹®ÀåÀ¸·Î";
+ SlotName[ turkish ] = "Sonraki cümle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NEXT_SENT_SEL
+{
+ SlotName = "Bis nächsten Satz selektieren";
+ SlotName [ english ] = "Bis nächsten Satz selektieren";
+ SlotName[ english_us ] = "Select to Next Sentence";
+ SlotName[ portuguese ] = "Seleccionar até frase seguinte";
+ SlotName[ russian ] = "Âûäåëèòü äî ñëåäóþùåãî ïðåäëîæåíèÿ";
+ SlotName[ dutch ] = "Tot aan volgende zin selecteren";
+ SlotName[ french ] = "Sélect. jusqu'à la phrase suivante";
+ SlotName[ spanish ] = "Seleccionar hasta frase siguiente";
+ SlotName[ italian ] = "Seleziona fino alla frase successiva";
+ SlotName[ danish ] = "Marker til næste sætning";
+ SlotName[ swedish ] = "Markera till nästa mening";
+ SlotName[ polish ] = "Zaznacz do nastêpnego zdania";
+ SlotName[ portuguese_brazilian ] = "GotoNextSentenceSel";
+ SlotName[ japanese ] = "ŽŸ‚Ì•¶Í‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÏÂÒ»¸ö¾ä×Ó";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¤U¤@¥y¤l";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÇáÌãáÉ ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Tot aan volgende zin selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÏÂÒ»¸ö¾ä×Ó";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôçí åðüìåíç ðñüôáóç";
+ SlotName[ korean ] = "´ÙÀ½ ¹®Àå ¼±ÅÃ";
+ SlotName[ turkish ] = "Sonraki cümleye kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NEXT_TABLE
+{
+ SlotName = "Zur nächsten Tabelle";
+ SlotName [ english ] = "Zur nächsten Tabelle";
+ SlotName[ english_us ] = "To Next Table";
+ SlotName[ portuguese ] = "Ir para tabela seguinte";
+ SlotName[ russian ] = "Äî ñëåäóþùåé òàáëèöû";
+ SlotName[ dutch ] = "Naar volgende tabel";
+ SlotName[ french ] = "Au tableau suivant";
+ SlotName[ spanish ] = "Ir a la tabla siguiente";
+ SlotName[ italian ] = "Alla tabella successiva";
+ SlotName[ danish ] = "Til næste tabel";
+ SlotName[ swedish ] = "Till nästa tabell";
+ SlotName[ polish ] = "Do nastêpnej tabeli";
+ SlotName[ portuguese_brazilian ] = "GoToNextTable";
+ SlotName[ japanese ] = "ŽŸ‚Ì•\\‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö±í¸ñ";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@­Óªí®æ";
+ SlotName[ arabic ] = "Åáì ÇáÌÏæá ÇáÊÇáí";
+ SlotName[ dutch ] = "Naar volgende tabel";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö±í¸ñ";
+ SlotName[ greek ] = "Ðñïò ôïí åðüìåíï ðßíáêá";
+ SlotName[ korean ] = "´ÙÀ½ Ç¥·Î";
+ SlotName[ turkish ] = "Sonraki tablo";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NEXT_TBLFML
+{
+ SlotName = "Zur nächsten Tabellenformel";
+ SlotName [ english ] = "Zur nächsten Tabellenformel";
+ SlotName[ english_us ] = "Go to next table formula";
+ SlotName[ portuguese ] = "Fórmula de cálculo seguinte";
+ SlotName[ russian ] = "Ïåðåéòè ê ñëåäóþùåé ôîðìóëå òàáëèöû";
+ SlotName[ dutch ] = "Naar volgende tabelformule";
+ SlotName[ french ] = "Aller à la formule de calcul suivante";
+ SlotName[ spanish ] = "Ir a la próxima fórmula";
+ SlotName[ italian ] = "Alla formula di tabella successiva";
+ SlotName[ danish ] = "Til næste tabelformel";
+ SlotName[ swedish ] = "Till nästa tabellformel";
+ SlotName[ polish ] = "PrzejdŸ do nastêpnej formu³y tabeli";
+ SlotName[ portuguese_brazilian ] = "GotoNextTableFormula";
+ SlotName[ japanese ] = "ŽŸ‚Ì•\\‚Ì”Ž®‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö¹¤×÷±í¹«Ê½";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@­Ó¤u§@ªí¤½¦¡";
+ SlotName[ arabic ] = "Åáì ÕíÛÉ ÇáÌÏæá ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Naar volgende tabelformule";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸ö¹¤×÷±í¹«Ê½";
+ SlotName[ greek ] = "Ðñïò ôïí åðüìåíï ôýðï ôïõ ðßíáêá";
+ SlotName[ korean ] = "´ÙÀ½ Å×ÀÌºí ¼ö½ÄÀ¸·Î À̵¿";
+ SlotName[ turkish ] = "Sonraki tablo formulü";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NEXT_TBLFML_ERR
+{
+ SlotName = "Zur nächsten fehlerhaften Tabellenformel";
+ SlotName [ english ] = "Zur nächsten fehlerhaften Tabellenformel";
+ SlotName[ english_us ] = "Go to next faulty table formula";
+ SlotName[ portuguese ] = "Fórmula de cálculo seguinte com defeito";
+ SlotName[ russian ] = "Ïåðåéòè ê ñëåäóþùåé ôîðìóëå òàáëèöû, ñîäåðæàùåé îøèáêè";
+ SlotName[ dutch ] = "Naar volgende foutieve tabelformule";
+ SlotName[ french ] = "Aller à la prochaine formule de calcul erronée";
+ SlotName[ spanish ] = "Ir a fórmula errónea siguiente";
+ SlotName[ italian ] = "Alla formula di tabella errata successiva";
+ SlotName[ danish ] = "Til næste fejlagtige tabelformel";
+ SlotName[ swedish ] = "Till nästa felaktiga tabellformel";
+ SlotName[ polish ] = "PrzejdŸ do nastêpnej b³êdnej formu³y tabeli";
+ SlotName[ portuguese_brazilian ] = "GotoNextWrongTableFormula";
+ SlotName[ japanese ] = "ŽŸ‚̳‚µ‚­‚È‚¢•\\‚Ì‘Ž®‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸öÓдíÎóµÄ¹¤×÷±í¹«Ê½";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@­Ó¦³¿ù»~ªº¤u§@ªí¤½¦¡";
+ SlotName[ arabic ] = "Åáì ÕíÛÉ ÇáÌÏæá ÇáÎÇØÆÉ ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Naar volgende foutieve tabelformule";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸öÓдíÎóµÄ¹¤×÷±í¹«Ê½";
+ SlotName[ greek ] = "Ðñïò ôïí åðüìåíï ëáíèáóìÝíï ôýðï ôïõ ðßíáêá";
+ SlotName[ korean ] = "Ʋ¸° ´ÙÀ½ Å×ÀÌºí ¼ö½ÄÀ¸·Î À̵¿";
+ SlotName[ turkish ] = "Sonraki hatalý tablo formulü";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NEXT_TOXMARK
+{
+ SlotName = "Zur nächsten Indexmarkierung";
+ SlotName [ english ] = "Zur nächsten Indexmarkierung";
+ SlotName[ english_us ] = "Go to Next Index Mark";
+ SlotName[ portuguese ] = "Marca seguinte do índice";
+ SlotName[ russian ] = "Ïåðåéòè ê ñëåäóþùåé ìåòêå óêàçàòåëÿ";
+ SlotName[ dutch ] = "Naar volgende indexmarkering";
+ SlotName[ french ] = "Aller à la marque d'index suivante";
+ SlotName[ spanish ] = "Ir a la marca de índice siguiente";
+ SlotName[ italian ] = "Al contrassegno indice successivo";
+ SlotName[ danish ] = "Til næste indeksmarkering";
+ SlotName[ swedish ] = "Till nästa indexmarkering";
+ SlotName[ polish ] = "PrzejdŸ do nastêpnego znacznika indeksu";
+ SlotName[ portuguese_brazilian ] = "GotoNextIndexMark";
+ SlotName[ japanese ] = "ŽŸ‚̲ÝÃÞ¸½Ï°¸‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸öË÷Òý±ê¼Ç";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@­Ó¯Á¤Þ¼Ð°O";
+ SlotName[ arabic ] = "Åáì ÇáÊÍÏíÏ ÇáÝåÑÓí ÇáÊÇáí";
+ SlotName[ dutch ] = "Naar volgende indexmarkering";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»¸öË÷Òý±ê¼Ç";
+ SlotName[ greek ] = "Ðñïò ôï åðüìåíï óçìÜäé åõñåôçñßïõ";
+ SlotName[ korean ] = "´ÙÀ½ »öÀΠǥ½Ã·Î À̵¿";
+ SlotName[ turkish ] = "Sonraki dizin iþareti";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NEXT_WORD
+{
+ SlotName = "Zum Wort rechts";
+ SlotName [ english ] = "Zum Wort rechts";
+ SlotName[ english_us ] = "To Word Right";
+ SlotName[ portuguese ] = "Ir para palavra à direita";
+ SlotName[ russian ] = "Ê ñëîâó ñïðàâà";
+ SlotName[ dutch ] = "Naar woord rechts";
+ SlotName[ french ] = "Aller au mot à droite";
+ SlotName[ spanish ] = "Ir a la derecha de la palabra";
+ SlotName[ italian ] = "Alla parola destra";
+ SlotName[ danish ] = "Til ordet til højre";
+ SlotName[ swedish ] = "Till höger ord";
+ SlotName[ polish ] = "Do s³owa z prawej strony";
+ SlotName[ portuguese_brazilian ] = "GoToNextWord";
+ SlotName[ japanese ] = "’PŒê‚̉E‘¤‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½×ÖµÄÓÒ·½";
+ SlotName[ chinese_traditional ] = "Âà¨ì¦r­º";
+ SlotName[ arabic ] = "ÍÊì íãíä ÇáßáãÉ";
+ SlotName[ dutch ] = "Naar woord rechts";
+ SlotName[ chinese_simplified ] = "תµ½×ÖµÄÓÒ·½";
+ SlotName[ greek ] = "Ðñïò ôçí ëÝîç äåîéÜ";
+ SlotName[ korean ] = "´Ü¾î ¿À¸¥ÂÊ À̵¿";
+ SlotName[ turkish ] = "Saðdaki sözcük";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NEXT_WORD_SEL
+{
+ SlotName = "Bis Wort rechts selektieren";
+ SlotName [ english ] = "Bis Wort rechts selektieren";
+ SlotName[ english_us ] = "Select to Word Right";
+ SlotName[ portuguese ] = "Seleccionar até ao final da palavra";
+ SlotName[ russian ] = "Âûäåëèòü äî ñëîâà ñïðàâà";
+ SlotName[ dutch ] = "Tot aan woord rechts selecteren";
+ SlotName[ french ] = "Sélect. jusqu'au mot à droite";
+ SlotName[ spanish ] = "Seleccionar hasta el final de la palabra";
+ SlotName[ italian ] = "Seleziona fino alla parola destra";
+ SlotName[ danish ] = "Marker til ordet til højre";
+ SlotName[ swedish ] = "Markera till höger ord";
+ SlotName[ polish ] = "Zaznacz do s³owa z prawej strony";
+ SlotName[ portuguese_brazilian ] = "WordRightSel";
+ SlotName[ japanese ] = "’PŒê‚̉E‘¤‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁ×ÖµÄÓÒ·½";
+ SlotName[ chinese_traditional ] = "¿ï¤¤¦Ü¦r¥½";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÇáßáãÉ ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Tot aan woord rechts selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁ×ÖµÄÓÒ·½";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôçí ëÝîç äåîéÜ";
+ SlotName[ korean ] = "´Ü¿À ¿À¸¥ÂÊ ¼±ÅÃ";
+ SlotName[ turkish ] = "Saðdaki sözcüðe kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_BULLET_DOWN
+{
+ SlotName = "Eine Ebene runter";
+ SlotName [ english ] = "Eine Ebene runter";
+ SlotName[ english_us ] = "Down One Level";
+ SlotName[ portuguese ] = "Baixar um nível";
+ SlotName[ russian ] = "Íà îäèí óðîâåíü âíèç";
+ SlotName[ dutch ] = "Een niveau naar beneden";
+ SlotName[ french ] = "Abaisser d'un niveau";
+ SlotName[ spanish ] = "Bajar un nivel";
+ SlotName[ italian ] = "Un livello più in alto";
+ SlotName[ danish ] = "Et niveau ned";
+ SlotName[ swedish ] = "En nivå nedåt";
+ SlotName[ polish ] = "W dó³ jeden poziom";
+ SlotName[ portuguese_brazilian ] = "BulletsAndNumberLevelDown";
+ SlotName[ japanese ] = "1ÚÍÞÙ‰º‚Ö";
+ SlotName[ chinese_simplified ] = "ÏòÏÂÒ»¼¶";
+ SlotName[ chinese_traditional ] = "¦V¤U¤@¯Å";
+ SlotName[ arabic ] = "ãÓÊæì æÇÍÏ áÃÓÝá";
+ SlotName[ dutch ] = "Een niveau naar beneden";
+ SlotName[ chinese_simplified ] = "ÏòÏÂÒ»¼¶";
+ SlotName[ greek ] = "ÌåôáöïñÜ Ýíá åðßðåäï ÷áìçëüôåñá";
+ SlotName[ korean ] = "¼öÁØ ³·Ãß±â À̵¿";
+ SlotName[ turkish ] = "Bir düzey aþaðý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_BULLET_MOVEDOWN
+{
+ SlotName = "Nach unten schieben";
+ SlotName [ english ] = "Nach unten schieben";
+ SlotName[ english_us ] = "Move Down";
+ SlotName[ portuguese ] = "Mover para baixo";
+ SlotName[ russian ] = "Ïåðåìåñòèòü âíèç";
+ SlotName[ dutch ] = "Naar beneden verplaatsen";
+ SlotName[ french ] = "Déplacer vers le bas";
+ SlotName[ spanish ] = "Desplazar hacia abajo";
+ SlotName[ italian ] = "Sposta verso il basso";
+ SlotName[ danish ] = "Flyt nedad";
+ SlotName[ swedish ] = "Flytta nedåt";
+ SlotName[ polish ] = "Przesuñ w dó³";
+ SlotName[ portuguese_brazilian ] = "BulletsAndNumberContentOneDown";
+ SlotName[ japanese ] = "‰º•û‚ÖˆÚ“®";
+ SlotName[ chinese_simplified ] = "ÏòÏÂÒƶ¯";
+ SlotName[ chinese_traditional ] = "¦V¤U²¾°Ê";
+ SlotName[ arabic ] = "ÅÒÇÍÉ áÃÓÝá";
+ SlotName[ dutch ] = "Naar beneden verplaatsen";
+ SlotName[ chinese_simplified ] = "ÏòÏÂÒƶ¯";
+ SlotName[ greek ] = "Ìåôáêßíçóç ðñïò ôá êÜôù";
+ SlotName[ korean ] = "¾Æ·¡·Î À̵¿";
+ SlotName[ turkish ] = "Aþaðý taþý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_BULLET_MOVEUP
+{
+ SlotName = "Nach oben schieben";
+ SlotName [ english ] = "Nach oben schieben";
+ SlotName[ english_us ] = "Move Up";
+ SlotName[ portuguese ] = "Mover para cima";
+ SlotName[ russian ] = "Ïåðåìåñòèòü ââåðõ";
+ SlotName[ dutch ] = "Naar boven verplaatsen";
+ SlotName[ french ] = "Déplacer vers le haut";
+ SlotName[ spanish ] = "Desplazar hacia arriba";
+ SlotName[ italian ] = "Sposta verso l'alto";
+ SlotName[ danish ] = "Flyt opad";
+ SlotName[ swedish ] = "Flytta uppåt";
+ SlotName[ polish ] = "Przesuñ do góry";
+ SlotName[ portuguese_brazilian ] = "BulletsAndNumberContentOneUp";
+ SlotName[ japanese ] = "ã•û‚ÖˆÚ“®";
+ SlotName[ chinese_simplified ] = "ÏòÉÏÒƶ¯";
+ SlotName[ chinese_traditional ] = "¦V¤W²¾°Ê";
+ SlotName[ arabic ] = "ÅÒÇÍÉ áÃÚáì";
+ SlotName[ dutch ] = "Naar boven verplaatsen";
+ SlotName[ chinese_simplified ] = "ÏòÉÏÒƶ¯";
+ SlotName[ greek ] = "ÌåôáöïñÜ ðñïò ôá Üíù";
+ SlotName[ korean ] = "À§·Î À̵¿";
+ SlotName[ turkish ] = "Yukarý taþý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_BULLET_NEXT
+{
+ SlotName = "Zum nächsten Absatz gleicher Ebene";
+ SlotName [ english ] = "Zum nächsten Absatz gleicher Ebene";
+ SlotName[ english_us ] = "To Next Paragraph in Level";
+ SlotName[ portuguese ] = "Páragrafo seguinte do mesmo nível";
+ SlotName[ russian ] = "Äî ñëåäóþùåãî àáçàöà òîãî æå óðîâíÿ";
+ SlotName[ dutch ] = "Naar de volgende alinea op hetzelfde niveau";
+ SlotName[ french ] = "Au paragraphe suivant du même niveau";
+ SlotName[ spanish ] = "Al párrafo siguiente del mismo nivel";
+ SlotName[ italian ] = "Al paragrafo successivo dello stesso livello";
+ SlotName[ danish ] = "Til næste afsnit samme niveau";
+ SlotName[ swedish ] = "Till nästa stycke i samma nivå";
+ SlotName[ polish ] = "Do nastêpnego akapitu na tym samym poziomie";
+ SlotName[ portuguese_brazilian ] = "BulletsAndNumberNextNumberParagraph";
+ SlotName[ japanese ] = "ŽŸ‚Ì“¯ÚÍÞÙ‚Ì’i—Ž‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½Í¬¼¶µÄÏÂÒ»¸ö¶ÎÂä";
+ SlotName[ chinese_traditional ] = "Âà¨ì¦P¯Åªº¤U¤@­Ó¬q¸¨";
+ SlotName[ arabic ] = "Åáì ÇáÝÞÑÉ ÇáÊÇáíÉ Ýí äÝÓ ÇáãÓÊæì";
+ SlotName[ dutch ] = "Naar de volgende alinea op hetzelfde niveau";
+ SlotName[ chinese_simplified ] = "תµ½Í¬¼¶µÄÏÂÒ»¸ö¶ÎÂä";
+ SlotName[ greek ] = "Ðñïò åðüìåíç ðáñÜãñáöï ßäéïõ åðéðÝäïõ";
+ SlotName[ korean ] = "°°Àº ·¹º§ÀÇ ´ÙÀ½ ´Ü¶ôÀ¸·Î";
+ SlotName[ turkish ] = "Ayný düzeyde bulunan sonraki paragraf";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_BULLET_NONUM
+{
+ SlotName = "Eintrag ohne Nummer einfügen";
+ SlotName [ english ] = "Eintrag ohne Nummer einfügen";
+ SlotName[ english_us ] = "Insert Unnumbered Entry";
+ SlotName[ portuguese ] = "Inserir entrada sem número";
+ SlotName[ russian ] = "Âñòàâèòü ýëåìåíò áåç íîìåðà";
+ SlotName[ dutch ] = "Item zonder nummer invoegen";
+ SlotName[ french ] = "Insérer une entrée sans numéro";
+ SlotName[ spanish ] = "Insertar entrada sin número";
+ SlotName[ italian ] = "Inserisci voce senza numero";
+ SlotName[ danish ] = "Indsæt element uden nummer";
+ SlotName[ swedish ] = "Infoga post utan nummer";
+ SlotName[ polish ] = "Wstaw wpis bez numeru";
+ SlotName[ portuguese_brazilian ] = "BulletAndNumberWithoutNum";
+ SlotName[ japanese ] = "”Ô†‚È‚µ‚Ì“ü—Í‚ð‘}“ü";
+ SlotName[ chinese_simplified ] = "²»´ø±àºÅ²åÈëÌõÄ¿";
+ SlotName[ chinese_traditional ] = "¤£±a½s¸¹´¡¤J¶µ¥Ø";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÅÏÎÇá ÛíÑ ãÑÞã";
+ SlotName[ dutch ] = "Item zonder nummer invoegen";
+ SlotName[ chinese_simplified ] = "²»´ø±àºÅ²åÈëÌõÄ¿";
+ SlotName[ greek ] = "ÅéóáãùãÞ êáôá÷þñéóçò ÷ùñßò áñßèìçóç";
+ SlotName[ korean ] = "¹øÈ£ ¾ø´Â Ç׸ñ »ðÀÔ";
+ SlotName[ turkish ] = "Numarasýz giriþ ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_BULLET_OFF
+{
+ SlotName = "Nummerierung aus";
+ SlotName [ english ] = "Numerierung aus";
+ SlotName[ english_us ] = "Numbering Off";
+ SlotName[ portuguese ] = "Desactivar numeração";
+ SlotName[ russian ] = "Âûêëþ÷èòü íóìåðàöèþ";
+ SlotName[ dutch ] = "Nummering uit";
+ SlotName[ french ] = "Désactiver puces ou numérotation";
+ SlotName[ spanish ] = "Desactivar numeración";
+ SlotName[ italian ] = "Numerazione off";
+ SlotName[ danish ] = "Deaktiver nummerering";
+ SlotName[ swedish ] = "Numrering av";
+ SlotName[ polish ] = "Wy³¹cz numeracjê";
+ SlotName[ portuguese_brazilian ] = "BulletsAndNumberOff";
+ SlotName[ japanese ] = "”Ô†•t‚¯ µÌ";
+ SlotName[ chinese_simplified ] = "ÒþÈë±àºÅ";
+ SlotName[ chinese_traditional ] = "Áô¤J½s¸¹";
+ SlotName[ arabic ] = "ÊÑÞíã ÅíÞÇÝ";
+ SlotName[ dutch ] = "Nummering uit";
+ SlotName[ chinese_simplified ] = "ÒþÈë±àºÅ";
+ SlotName[ greek ] = "Áðåíåñãïðïßçóç áñßèìçóçò";
+ SlotName[ korean ] = "¹øÈ£ ¸Å±â±â ÁßÁö";
+ SlotName[ turkish ] = "Numaralama kapalý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_BULLET_OUTLINE_DOWN
+{
+ SlotName = "Mit Unterpunkten runter";
+ SlotName [ english ] = "Mit Unterpunkten runter";
+ SlotName[ english_us ] = "Move Down with Subpoints";
+ SlotName[ portuguese ] = "Baixar um nível (subníveis incluídos)";
+ SlotName[ russian ] = "Ïåðåìåñòèòü ñ ïîäïóíêòàìè âíèç";
+ SlotName[ dutch ] = "Met subniveaus naar beneden";
+ SlotName[ french ] = "Abaisser d'un niveau (sous-points inclus)";
+ SlotName[ spanish ] = "Bajar un nivel con subniveles";
+ SlotName[ italian ] = "Riduci livello con sottopunti";
+ SlotName[ danish ] = "Nedad med underpunkter";
+ SlotName[ swedish ] = "Nedåt med undernivåer";
+ SlotName[ polish ] = "Przenieœ w dó³ z podpunktami";
+ SlotName[ portuguese_brazilian ] = "BulletsAndNumberDownSublevels";
+ SlotName[ japanese ] = "ÚÍÞÙ‰º‚°";
+ SlotName[ chinese_simplified ] = "Á¬Í¬·Ö¼¶ÏòÏÂ";
+ SlotName[ chinese_traditional ] = "³s¦P¤À¯Å¦V¤U";
+ SlotName[ arabic ] = "Åáì ÃÓÝá ÈÇáäÞÇØ ÇáÝÑÚíÉ";
+ SlotName[ dutch ] = "Met subniveaus naar beneden";
+ SlotName[ chinese_simplified ] = "Á¬Í¬·Ö¼¶ÏòÏÂ";
+ SlotName[ greek ] = "Ìåôáêßíçóç êÜôù ìáæß ìå ôá õðïóçìåßá";
+ SlotName[ korean ] = "¾Æ·¡Á¡À» °¡Áö°í ¹ØÀ¸·Î À̵¿";
+ SlotName[ turkish ] = "Alt noktalarý ile aþaðý taþý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_BULLET_OUTLINE_MOVEDOWN
+{
+ SlotName = "Mit Unterpunkten nach unten schieben";
+ SlotName [ english ] = "Mit Unterpunkten nach unten schieben";
+ SlotName[ english_us ] = "Move Down with Subpoints";
+ SlotName[ portuguese ] = "Mover para baixo com subníveis";
+ SlotName[ russian ] = "Ïåðåìåñòèòü ñ ïîäïóíêòàìè âíèç";
+ SlotName[ dutch ] = "Met subniveaus naar beneden verplaatsen";
+ SlotName[ french ] = "Déplacer vers le bas (sous-points inclus)";
+ SlotName[ spanish ] = "Desplazar hacia abajo con subniveles";
+ SlotName[ italian ] = "Sposta in basso con sottopunti";
+ SlotName[ danish ] = "Flyt nedad med underpunkter";
+ SlotName[ swedish ] = "Flytta nedåt med undernivåer";
+ SlotName[ polish ] = "Przenieœ w dó³ z podpunktami";
+ SlotName[ portuguese_brazilian ] = "BulletsAndNumberContentOneDownSubItems";
+ SlotName[ japanese ] = "ÚÍÞÙ‰º‚°";
+ SlotName[ chinese_simplified ] = "Á¬Í¬·Ö¼¶ÏòÏÂÒƶ¯";
+ SlotName[ chinese_traditional ] = "³s¦P¤ÀÂI¦V¤U²¾°Ê";
+ SlotName[ arabic ] = "ÅÒÇÍÉ Åáì ÃÓÝá ÈÇáäÞÇØ ÇáÝÑÚíÉ";
+ SlotName[ dutch ] = "Met subniveaus naar beneden verplaatsen";
+ SlotName[ chinese_simplified ] = "Á¬Í¬·Ö¼¶ÏòÏÂÒƶ¯";
+ SlotName[ greek ] = "Ìåôáêßíçóç êÜôù ìáæß ìå ôá õðïóçìåßá";
+ SlotName[ korean ] = "¾Æ·¡Á¡À» °¡Áö°í ¹ØÀ¸·Î À̵¿";
+ SlotName[ turkish ] = "Alt noktalarý ile aþaðý taþý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_BULLET_OUTLINE_MOVEUP
+{
+ SlotName = "Mit Unterpunkten nach oben schieben";
+ SlotName [ english ] = "Mit Unterpunkten nach oben schieben";
+ SlotName[ english_us ] = "Move Up with Subpoints";
+ SlotName[ portuguese ] = "Mover para cima com subníveis";
+ SlotName[ russian ] = "Ïåðåìåñòèòü ñ ïîäïóíêòàìè ââåðõ";
+ SlotName[ dutch ] = "Met subniveaus naar boven verplaatsen";
+ SlotName[ french ] = "Déplacer vers le haut (sous-points inclus)";
+ SlotName[ spanish ] = "Desplazar hacia arriba con subniveles";
+ SlotName[ italian ] = "Sposta con sottopunti verso il basso";
+ SlotName[ danish ] = "Flyt opad med underpunkter";
+ SlotName[ swedish ] = "Flytta uppåt med undernivåer";
+ SlotName[ polish ] = "Przenieœ w górê z podpunktami";
+ SlotName[ portuguese_brazilian ] = "BulletsAndNumberContentOneUpSubItems";
+ SlotName[ japanese ] = "ÚÍÞÙ‰º‚°";
+ SlotName[ chinese_simplified ] = "Á¬Í¬·Ö¼¶ÏòÉÏÒƶ¯";
+ SlotName[ chinese_traditional ] = "³s¦P¤À¯Å¦V¤W²¾°Ê";
+ SlotName[ arabic ] = "ÅÒÇÍÉ Åáì ÃÚáì ÈÇáäÞÇØ ÇáÝÑÚíÉ";
+ SlotName[ dutch ] = "Met subniveaus naar boven verplaatsen";
+ SlotName[ chinese_simplified ] = "Á¬Í¬·Ö¼¶ÏòÉÏÒƶ¯";
+ SlotName[ greek ] = "Ìåôáêßíçóç Üíù ìáæß ìå ôá õðïóçìåßá";
+ SlotName[ korean ] = "¾Æ·¡Á¡À» °¡Áö°í À§·Î À̵¿";
+ SlotName[ turkish ] = "Alt noktalarý ile yukarýya taþý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_BULLET_OUTLINE_UP
+{
+ SlotName = "Mit Unterpunkten hoch";
+ SlotName [ english ] = "Mit Unterpunkten hoch";
+ SlotName[ english_us ] = "Move Up with Subpoints";
+ SlotName[ portuguese ] = "Subir um nível (subpontos incluídos)";
+ SlotName[ russian ] = "Ïåðåìåñòèòü ñ ïîäïóíêòàìè ââåðõ";
+ SlotName[ dutch ] = "Met subniveaus naar boven";
+ SlotName[ french ] = "Hausser d'un niveau (sous-points inclus)";
+ SlotName[ spanish ] = "Subir un nivel con subniveles";
+ SlotName[ italian ] = "In alto con sottopunti";
+ SlotName[ danish ] = "Opad med underpunkter";
+ SlotName[ swedish ] = "Uppåt med undernivåer";
+ SlotName[ polish ] = "Przenieœ w górê z podpunktami";
+ SlotName[ portuguese_brazilian ] = "BulletsAndNumberUpSubLevels";
+ SlotName[ japanese ] = "ÚÍÞÙã‚°";
+ SlotName[ chinese_simplified ] = "Á¬Í¬·Ö¼¶ÏòÉÏ";
+ SlotName[ chinese_traditional ] = "³s¦P¤À¯Å¦V¤W";
+ SlotName[ arabic ] = "Åáì ÃÚáì ÈÇáäÞÇØ ÇáÝÑÚíÉ";
+ SlotName[ dutch ] = "Met subniveaus naar boven";
+ SlotName[ chinese_simplified ] = "Á¬Í¬·Ö¼¶ÏòÉÏ";
+ SlotName[ greek ] = "Ìåôáêßíçóç Üíù ìáæß ìå ôá õðïóçìåßá";
+ SlotName[ korean ] = "¾Æ·¡Á¡À» °¡Áö°í À§·Î À̵¿";
+ SlotName[ turkish ] = "Alt noktalarý ile yukarýya taþý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_BULLET_PREV
+{
+ SlotName = "Zum vorherigen Absatz gleicher Ebene";
+ SlotName [ english ] = "Zum vorherigen Absatz gleicher Ebene";
+ SlotName[ english_us ] = "To Previous Paragraph in Level";
+ SlotName[ portuguese ] = "Parágrafo anterior do mesmo nível";
+ SlotName[ russian ] = "Äî ïðåäûäóùåãî àáçàöà òîãî æå óðîâíÿ";
+ SlotName[ dutch ] = "Naar de vorige alinea op hetzelfde niveau";
+ SlotName[ french ] = "Au paragraphe du même niveau";
+ SlotName[ spanish ] = "Al párrafo anterior del mismo nivel";
+ SlotName[ italian ] = "Al paragrafo precedente stesso livello";
+ SlotName[ danish ] = "Til forrige afsnit samme niveau";
+ SlotName[ swedish ] = "Till föregående stycke i samma nivå";
+ SlotName[ polish ] = "Do poprzedniego akapitu na tym samym poziomie ";
+ SlotName[ portuguese_brazilian ] = "BulletsAndNumberPrevNumberParagraph";
+ SlotName[ japanese ] = "‘O‚Ì“¯ÚÍÞÙ‚Ì’i—Ž‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½Í¬¼¶µÄÉÏÒ»¸ö¶ÎÂä";
+ SlotName[ chinese_traditional ] = "Âà¨ì¦P¯Åªº¤W¤@­Ó¬q¸¨";
+ SlotName[ arabic ] = "Åáì ÇáÝÞÑÉ ÇáÓÇÈÞÉ Ýí äÝÓ ÇáãÓÊæì";
+ SlotName[ dutch ] = "Naar de vorige alinea op hetzelfde niveau";
+ SlotName[ chinese_simplified ] = "תµ½Í¬¼¶µÄÉÏÒ»¸ö¶ÎÂä";
+ SlotName[ greek ] = "Ðñïçãïýìåíç ðáñÜãñáöïò ôïõ ßäéïõ åðéðÝäïõ";
+ SlotName[ korean ] = "°°Àº ·¹º§ÀÇ ÀÌÀü ´Ü¶ôÀ¸·Î";
+ SlotName[ turkish ] = "Ayný düzeyde bulunan önceki paragraf";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_BULLET_UP
+{
+ SlotName = "Eine Ebene hoch";
+ SlotName [ english ] = "Eine Ebene hoch";
+ SlotName[ english_us ] = "Up One Level";
+ SlotName[ portuguese ] = "Subir um nível";
+ SlotName[ russian ] = "Íà îäèí óðîâåíü ââåðõ";
+ SlotName[ dutch ] = "Een niveau naar boven";
+ SlotName[ french ] = "Hausser d'un niveau";
+ SlotName[ spanish ] = "Subir un nivel";
+ SlotName[ italian ] = "Un livello più in alto";
+ SlotName[ danish ] = "Et niveau op";
+ SlotName[ swedish ] = "En nivå uppåt";
+ SlotName[ polish ] = "Do góry jeden poziom";
+ SlotName[ portuguese_brazilian ] = "BuletsAndNumberLevelUp";
+ SlotName[ japanese ] = "1ÚÍÞÙ ã‚Ö";
+ SlotName[ chinese_simplified ] = "ÏòÉÏÒ»¼¶";
+ SlotName[ chinese_traditional ] = "¦V¤W¤@¯Å";
+ SlotName[ arabic ] = "ãÓÊæì æÇÍÏ áÃÚáì";
+ SlotName[ dutch ] = "Een niveau naar boven";
+ SlotName[ chinese_simplified ] = "ÏòÉÏÒ»¼¶";
+ SlotName[ greek ] = "¸íá åðßðåäï øçëüôåñá";
+ SlotName[ korean ] = "ÇÑ ·¹º§ À§·Î";
+ SlotName[ turkish ] = "Bir düzey yukarý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_FORMAT_TABLE_DLG
+{
+ SlotName = "Zahlenformat bearbeiten";
+ SlotName [ english ] = "Zahlenformat bearbeiten";
+ SlotName[ english_us ] = "Edit Number Format";
+ SlotName[ portuguese ] = "Formato de números";
+ SlotName[ russian ] = "Ïðàâêà ÷èñëîâîãî ôîðìàòà";
+ SlotName[ dutch ] = "Getalnotatie bewerken";
+ SlotName[ french ] = "Modifier le format numérique";
+ SlotName[ spanish ] = "Editar formato de números";
+ SlotName[ italian ] = "Modifica formato numero";
+ SlotName[ danish ] = "Rediger talformat";
+ SlotName[ swedish ] = "Redigera talformat";
+ SlotName[ polish ] = "Edytuj format liczb";
+ SlotName[ portuguese_brazilian ] = "TableNumberFormatDialog";
+ SlotName[ japanese ] = "”Žš‚Ì‘Ž®•ÒW";
+ SlotName[ chinese_simplified ] = "±à¼­Êý×Ö¸ñʽ";
+ SlotName[ chinese_traditional ] = "½s¿è¼Æ¦r®æ¦¡";
+ SlotName[ arabic ] = "ÊÍÑíÑ ÊäÓíÞ ÇáÃÑÞÇã";
+ SlotName[ dutch ] = "Getalnotatie bewerken";
+ SlotName[ chinese_simplified ] = "±à¼­Êý×Ö¸ñʽ";
+ SlotName[ greek ] = "Åðåîåñãáóßá ìïñöÞò áñéèìþí";
+ SlotName[ korean ] = "¼ö ¼­½Ä ÆíÁý";
+ SlotName[ turkish ] = "Sayý formatýný düzenle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUM_OR_NONUM
+{
+ SlotName = "Nummerierung ein/aus";
+ SlotName [ english ] = "Numerierung ein/aus";
+ SlotName[ english_us ] = "Numbering On/Off";
+ SlotName[ portuguese ] = "Activar/des. numeração";
+ SlotName[ russian ] = "Âêë./âûêë. íóìåðàöèþ";
+ SlotName[ dutch ] = "Nummering aan/uit";
+ SlotName[ french ] = "(Dés)activer numérotation/puces";
+ SlotName[ spanish ] = "Activar/Desact. Numeración";
+ SlotName[ italian ] = "Numerazione on/off";
+ SlotName[ danish ] = "Nummerering til/fra";
+ SlotName[ swedish ] = "Numrering på/av";
+ SlotName[ polish ] = "W³¹cz/Wy³¹cz numeracjê";
+ SlotName[ portuguese_brazilian ] = "NumberOn/Off";
+ SlotName[ japanese ] = "”Ô†•t‚¯ µÝ/µÌ";
+ SlotName[ chinese_simplified ] = "ÏÔʾ/ÒþÈë±àºÅ";
+ SlotName[ chinese_traditional ] = "Åã¥Ü/Áô¤J½s¸¹";
+ SlotName[ arabic ] = "ÅÙåÇÑ/ÅÎÝÇÁ ÇáÊÑÞíã";
+ SlotName[ dutch ] = "Nummering aan/uit";
+ SlotName[ chinese_simplified ] = "ÏÔʾ/ÒþÈë±àºÅ";
+ SlotName[ greek ] = "Áñßèìçóç Íáé/¼÷é";
+ SlotName[ korean ] = "¹øÈ£ ¸Å±â±â ÀÛµ¿/ÁßÁö";
+ SlotName[ turkish ] = "Numaralama açýk/kapalý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUMBER_BULLETS
+{
+ SlotName = "Nummerierung bearbeiten";
+ SlotName [ english ] = "Numerierung bearbeiten";
+ SlotName[ english_us ] = "Edit Numbering";
+ SlotName[ portuguese ] = "Editar numeração";
+ SlotName[ russian ] = "Ïðàâêà íóìåðàöèè";
+ SlotName[ dutch ] = "Nummering bewerken";
+ SlotName[ french ] = "Éditer la numérotation";
+ SlotName[ spanish ] = "Editar numeración";
+ SlotName[ italian ] = "Modifica numerazione";
+ SlotName[ danish ] = "Rediger nummerering";
+ SlotName[ swedish ] = "Redigera numrering";
+ SlotName[ polish ] = "Edytuj numeracjê";
+ SlotName[ portuguese_brazilian ] = "ToolsBulletsAndNumbering";
+ SlotName[ japanese ] = "”Ô†•t‚¯‚Ì•ÒW";
+ SlotName[ chinese_simplified ] = "±à¼­±àºÅ";
+ SlotName[ chinese_traditional ] = "½s¿è½s¸¹";
+ SlotName[ arabic ] = "ÊÍÑíÑ ÇáÊÑÞíã";
+ SlotName[ dutch ] = "Nummering bewerken";
+ SlotName[ chinese_simplified ] = "±à¼­±àºÅ";
+ SlotName[ greek ] = "Åðåîåñãáóßá áñßèìçóçò";
+ SlotName[ korean ] = "¹øÈ£ ¸Å±â±â ÆíÁý";
+ SlotName[ turkish ] = "Numaralamayý düzenle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUMBER_CURRENCY
+{
+ SlotName = "Zahlenformat: Währung";
+ SlotName [ english ] = "Zahlenformat: Währung";
+ SlotName[ english_us ] = "Number Format: Currency";
+ SlotName[ portuguese ] = "Formato numérico: moeda";
+ SlotName[ russian ] = "×èñëîâîé ôîðìàò: âàëþòà";
+ SlotName[ dutch ] = "Getalnotatie: valuta";
+ SlotName[ french ] = "Format numérique : monnaie";
+ SlotName[ spanish ] = "Formato numérico: Moneda";
+ SlotName[ italian ] = "Formato numero: valuta";
+ SlotName[ danish ] = "Talformat: valuta";
+ SlotName[ swedish ] = "Talformat: valuta";
+ SlotName[ polish ] = "Format liczb: Waluta";
+ SlotName[ portuguese_brazilian ] = "NumberFormatCurrency";
+ SlotName[ japanese ] = "”‚Ì‘Ž® : ’ʉÝ";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£º»õ±Ò";
+ SlotName[ chinese_traditional ] = "¼Æ¦r®æ¦¡¡G³f¹ô";
+ SlotName[ arabic ] = "ÊäÓíÞ ÇáÃÑÞÇã: ÚãáÉ";
+ SlotName[ dutch ] = "Getalnotatie: valuta";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£º»õ±Ò";
+ SlotName[ greek ] = "ÌïñöÞ áñéèìïý: ÍïìéóìáôéêÞ";
+ SlotName[ korean ] = "¼ö ¼­½Ä: ÅëÈ­";
+ SlotName[ turkish ] = "Sayý formatý: Para birimi";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUMBER_DATE
+{
+ SlotName = "Zahlenformat: Datum";
+ SlotName [ english ] = "Zahlenformat: Datum";
+ SlotName[ english_us ] = "Number Format : Date";
+ SlotName[ portuguese ] = "Formato numérico : data";
+ SlotName[ russian ] = "×èñëîâîé ôîðìàò : äàòà";
+ SlotName[ dutch ] = "Getalnotatie : datum";
+ SlotName[ french ] = "Format numérique : date";
+ SlotName[ spanish ] = "Formato numérico : Fecha";
+ SlotName[ italian ] = "Formato numero : data";
+ SlotName[ danish ] = "Talformat: dato";
+ SlotName[ swedish ] = "Talformat: datum";
+ SlotName[ polish ] = "Format liczb: Data";
+ SlotName[ portuguese_brazilian ] = "NumberFormatDate";
+ SlotName[ japanese ] = "”‚Ì‘Ž® : “ú•t";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£ºÈÕÆÚ";
+ SlotName[ chinese_traditional ] = "¼Æ¦r®æ¦¡¡G¤é´Á";
+ SlotName[ arabic ] = "ÊäÓíÞ ÇáÃÑÞÇã: ÊÇÑíÎ";
+ SlotName[ dutch ] = "Getalnotatie : datum";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£ºÈÕÆÚ";
+ SlotName[ greek ] = "ÌïñöÞ áñéèìïý: Çìåñïìçíßá";
+ SlotName[ korean ] = "¼ö ¼­½Ä : ³¯Â¥";
+ SlotName[ turkish ] = "Sayý formatý: Tarih";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUMBER_NEWSTART
+{
+ SlotName = "Nummerierung neu beginnen";
+ SlotName [ english ] = "Numerierung neu beginnen";
+ SlotName[ english_us ] = "Restart Numbering";
+ SlotName[ portuguese ] = "Recomeçar numeração";
+ SlotName[ russian ] = "Íà÷àòü íóìåðàöèþ çàíîâî";
+ SlotName[ dutch ] = "Nieuwe nummering";
+ SlotName[ french ] = "Reprendre la numérotation";
+ SlotName[ spanish ] = "Reiniciar numeración";
+ SlotName[ italian ] = "Ricomincia numerazione";
+ SlotName[ danish ] = "Start nummerering forfra";
+ SlotName[ swedish ] = "Starta numrering på nytt";
+ SlotName[ polish ] = "Zacznij na nowo numeracjê";
+ SlotName[ portuguese_brazilian ] = "NumberingStart";
+ SlotName[ japanese ] = "”Ô†•t‚¯‚ðV‚µ‚­ŠJŽn";
+ SlotName[ chinese_simplified ] = "ÖØпªÊ¼±àºÅ";
+ SlotName[ chinese_traditional ] = "­«·s½s¸¹";
+ SlotName[ arabic ] = "ÅÚÇÏÉ ÈÏÁ ÇáÊÑÞíã";
+ SlotName[ dutch ] = "Nieuwe nummering";
+ SlotName[ chinese_simplified ] = "ÖØпªÊ¼±àºÅ";
+ SlotName[ greek ] = "Åðáíåêêßíçóç áñßèìçóçò";
+ SlotName[ korean ] = "¹øÈ£ ´Ù½Ã ¸Å±â±â";
+ SlotName[ turkish ] = "Numaralamayý yeniden baþlat";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUMBER_PERCENT
+{
+ SlotName = "Zahlenformat: Prozent";
+ SlotName [ english ] = "Zahlenformat: Prozent";
+ SlotName[ english_us ] = "Number Format: Percent";
+ SlotName[ portuguese ] = "Formato numérico: percentagem";
+ SlotName[ russian ] = "×èñëîâîé ôîðìàò : ïðîöåíòû";
+ SlotName[ dutch ] = "Getalnotatie: procent";
+ SlotName[ french ] = "Format numérique : pourcentage";
+ SlotName[ spanish ] = "Formato numérico: Porciento";
+ SlotName[ italian ] = "Formato numero: percentuale";
+ SlotName[ danish ] = "Talformat: procent";
+ SlotName[ swedish ] = "Talformat: procent";
+ SlotName[ polish ] = "Format liczb: Procent";
+ SlotName[ portuguese_brazilian ] = "NumberFormatPercent";
+ SlotName[ japanese ] = "”‚Ì‘Ž® : Êß°¾ÝÄ";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£º°Ù·Ö±È";
+ SlotName[ chinese_traditional ] = "¼Æ¦r®æ¦¡¡G¦Ê¤À¤ñ";
+ SlotName[ arabic ] = "ÊäÓíÞ ÇáÃÑÞÇã: Ýí ÇáãÆÉ";
+ SlotName[ dutch ] = "Getalnotatie: procent";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£º°Ù·Ö±È";
+ SlotName[ greek ] = "ÌïñöÞ áñéèìïý: Ðïóïóôü";
+ SlotName[ korean ] = "¼ýÀÚ ¼­½Ä: ¹éºÐÀ²";
+ SlotName[ turkish ] = "Sayý formatý: Yüzde";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUMBER_SCIENTIFIC
+{
+ SlotName = "Zahlenformat: Exponentiell";
+ SlotName [ english ] = "Zahlenformat: Exponential";
+ SlotName[ english_us ] = "Number Format: Exponential";
+ SlotName[ portuguese ] = "Formato numérico: expoente";
+ SlotName[ russian ] = "×èñëîâîé ôîðìàò: ýêñïîíåíöèàëüíûé";
+ SlotName[ dutch ] = "Getalnotatie: exponentieel";
+ SlotName[ french ] = "Format numérique : exponentiel";
+ SlotName[ spanish ] = "Formato numérico: Exponencial";
+ SlotName[ italian ] = "Formato numero: esponenziale";
+ SlotName[ danish ] = "Talformat: eksponentiel";
+ SlotName[ swedish ] = "Talformat: Exponentiellt";
+ SlotName[ polish ] = "Format liczb : Wyk³adniczy";
+ SlotName[ portuguese_brazilian ] = "NumberFormatExponential";
+ SlotName[ japanese ] = "”‚Ì‘Ž®: Žw”";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£ºÖ¸Êý";
+ SlotName[ chinese_traditional ] = "¼Æ¦r®æ¦¡¡G«ü¼Æ";
+ SlotName[ arabic ] = "ÊäÓíÞ ÃÑÞÇã: ÃÓí";
+ SlotName[ dutch ] = "Getalnotatie: exponentieel";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£ºÖ¸Êý";
+ SlotName[ greek ] = "ÌïñöÞ áñéèìïý: ÅêèåôéêÞ";
+ SlotName[ korean ] = "¼ýÀÚ ¼­½Ä: Áö¼ö";
+ SlotName[ turkish ] = "Sayý formatý: Üstel";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUMBER_STANDARD
+{
+ SlotName = "Zahlenformat: Standard";
+ SlotName [ english ] = "Zahlenformat: Standard";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ english_us ] = "Number Format: Standard";
+ SlotName[ portuguese ] = "Formato numérico: padrão";
+ SlotName[ russian ] = "×èñëîâîé ôîðìàò : ñòàíäàðò";
+ SlotName[ dutch ] = "Getalnotatie: standaard";
+ SlotName[ french ] = "Format numérique : standard";
+ SlotName[ spanish ] = "Formato numérico: Estándar";
+ SlotName[ italian ] = "Formato numero: standard";
+ SlotName[ danish ] = "Talformat: standard";
+ SlotName[ swedish ] = "Talformat: standard";
+ SlotName[ polish ] = "Format liczb: Domyœlny";
+ SlotName[ portuguese_brazilian ] = "NumberFormatStandard";
+ SlotName[ japanese ] = "”‚Ì‘Ž® : •W€";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£º±ê×¼";
+ SlotName[ chinese_traditional ] = "¼Æ¦r®æ¦¡¡G¼Ð·Ç";
+ SlotName[ arabic ] = "ÊäÓíÞ ÇáÃÑÞÇã: ÞíÇÓí";
+ SlotName[ dutch ] = "Getalnotatie: standaard";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£º±ê×¼";
+ SlotName[ greek ] = "ÌïñöÞ áñéèìïý: ÃåíéêÞ";
+ SlotName[ korean ] = "¼ö ¼­½Ä: Ç¥ÁØ";
+ SlotName[ turkish ] = "Sayý formatý: Standart";
+};
+SfxSlotInfo FN_NUMBER_TIME
+{
+ SlotName = "Zahlenformat: Zeit";
+ SlotName [ english ] = "Zahlenformat: Zeit";
+ SlotName[ english_us ] = "Number Format: Time";
+ SlotName[ portuguese ] = "Formato numérico: hora";
+ SlotName[ russian ] = "×èñëîâîé ôîðìàò : âðåìÿ";
+ SlotName[ dutch ] = "Getalnotatie: tijd";
+ SlotName[ french ] = "Format numérique : horaire";
+ SlotName[ spanish ] = "Formato numérico: Hora";
+ SlotName[ italian ] = "Formato numero: orario";
+ SlotName[ danish ] = "Talformat: klokkeslæt";
+ SlotName[ swedish ] = "Talformat: tid";
+ SlotName[ polish ] = "Format liczb: Czas";
+ SlotName[ portuguese_brazilian ] = "NumberFormatTime";
+ SlotName[ japanese ] = "”‚Ì‘Ž® : Žž";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£ºÊ±¼ä";
+ SlotName[ chinese_traditional ] = "¼Æ¦r®æ¦¡¡G®É¶¡";
+ SlotName[ arabic ] = "ÊäÓíÞ ÇáÃÑÞÇã: æÞÊ";
+ SlotName[ dutch ] = "Getalnotatie: tijd";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£ºÊ±¼ä";
+ SlotName[ greek ] = "ÌïñöÞ áñéèìïý: ¿ñá";
+ SlotName[ korean ] = "¼ö ¼­½Ä: ½Ã°£";
+ SlotName[ turkish ] = "Sayý formatý: Saat";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_NUMBER_TWODEC
+{
+ SlotName = "Zahlenformat: Dezimal";
+ SlotName [ english ] = "Zahlenformat: Dezimal";
+ SlotName[ english_us ] = "Number Format: Decimal";
+ SlotName[ portuguese ] = "Formato numérico: decimal";
+ SlotName[ russian ] = "×èñëîâîé ôîðìàò : äðîáü";
+ SlotName[ dutch ] = "Getalnotatie: decimaal";
+ SlotName[ french ] = "Format numérique : décimal";
+ SlotName[ spanish ] = "Formato numérico: Decimal";
+ SlotName[ italian ] = "Formato numero: decimale";
+ SlotName[ danish ] = "Talformat: decimal";
+ SlotName[ swedish ] = "Talformat: decimal";
+ SlotName[ polish ] = "Format liczb: Dziesiêtny";
+ SlotName[ portuguese_brazilian ] = "NumberFormatDecimal";
+ SlotName[ japanese ] = "”‚Ì‘Ž® : ¬”";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£ºÊ®½øÖÆ";
+ SlotName[ chinese_traditional ] = "¼Æ¦r®æ¦¡¡G¤Q¶i¨î";
+ SlotName[ arabic ] = "ÊäÓíÞ ÇáÃÑÞÇã: ÚÏÏ ÚÔÑí";
+ SlotName[ dutch ] = "Getalnotatie: decimaal";
+ SlotName[ chinese_simplified ] = "Êý×Ö¸ñʽ£ºÊ®½øÖÆ";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ greek ] = "ÌïñöÞ áñéèìïý: ÄåêáäéêÞ";
+ SlotName[ korean ] = "¼ö ¼­½Ä: ¼Ò¼ö";
+ SlotName[ turkish ] = "Sayý formatý: Ondalýk";
+};
+SfxSlotInfo FN_NUMBERING_OUTLINE_DLG
+{
+ SlotName = "Kapitelnummerierung";
+ SlotName [ english ] = "Kapitelnummerierung";
+ SlotName[ english_us ] = "Outline Numbering";
+ SlotName[ portuguese ] = "Numeração de capítulos";
+ SlotName[ russian ] = "Íóìåðàöèÿ ãëàâ";
+ SlotName[ dutch ] = "Hoofdstuknummering";
+ SlotName[ french ] = "Numérotation de chapitres";
+ SlotName[ spanish ] = "Numeración de capítulos";
+ SlotName[ italian ] = "Numerazione capitolo";
+ SlotName[ danish ] = "Kapitelnummerering";
+ SlotName[ swedish ] = "Kapitelnumrering";
+ SlotName[ polish ] = "Numeracja rozdzia³u";
+ SlotName[ portuguese_brazilian ] = "ToolsChapterNumbering";
+ SlotName[ japanese ] = "͂̔Ԇ•t‚¯";
+ SlotName[ chinese_simplified ] = "Õ±àºÅ";
+ SlotName[ chinese_traditional ] = "³¹½s¸¹";
+ SlotName[ arabic ] = "ÊÑÞíã ÇáÝÕæá";
+ SlotName[ dutch ] = "Hoofdstuknummering";
+ SlotName[ chinese_simplified ] = "Õ±àºÅ";
+ SlotName[ greek ] = "Áñßèìçóç êåöáëáßùí";
+ SlotName[ korean ] = "Àå ¹øÈ£¸Å±â±â";
+ SlotName[ turkish ] = "Bölüm numaralamasý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_OPTIMIZE_TABLE
+{
+ SlotName = "Optimieren";
+ SlotName [ english ] = "Optimieren";
+ SlotName[ english_us ] = "Optimize";
+ SlotName[ portuguese ] = "Optimizar";
+ SlotName[ russian ] = "Îïòèìèçèðîâàòü";
+ SlotName[ dutch ] = "Optimeren";
+ SlotName[ french ] = "Optimiser";
+ SlotName[ spanish ] = "Optimar";
+ SlotName[ italian ] = "Ottimizza";
+ SlotName[ danish ] = "Optimer";
+ SlotName[ swedish ] = "Optimera";
+ SlotName[ polish ] = "Optymalizuj";
+ SlotName[ portuguese_brazilian ] = "Optimize";
+ SlotName[ japanese ] = "Å“K‰»‚·‚é";
+ SlotName[ chinese_simplified ] = "×î¼Ñ»¯";
+ SlotName[ chinese_traditional ] = "³ÌÓì¤Æ";
+ SlotName[ arabic ] = "ÇáÔßá ÇáÃãËá";
+ SlotName[ dutch ] = "Optimeren";
+ SlotName[ chinese_simplified ] = "×î¼Ñ»¯";
+ SlotName[ greek ] = "Âåëôéóôïðïßçóç";
+ SlotName[ korean ] = "ÃÖÀûÈ­";
+ SlotName[ turkish ] = "Optimum";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_OUTLINE_TO_CLIPBOARD
+{
+ SlotName = "Gliederung zum Clipboard";
+ SlotName [ english ] = "Gliederung zum Clipboard";
+ SlotName[ english_us ] = "Outline to Clipboard";
+ SlotName[ portuguese ] = "Esquema para Área de Transferência";
+ SlotName[ russian ] = "Ñòðóêòóðà áóôåðà îáìåíà";
+ SlotName[ dutch ] = "Overzicht naar clipboard";
+ SlotName[ french ] = "Plan vers le presse-papiers";
+ SlotName[ spanish ] = "Esquema al portapapeles";
+ SlotName[ italian ] = "Struttura negli appunti";
+ SlotName[ danish ] = "Disposition til udklipsbakke";
+ SlotName[ swedish ] = "Disposition till urklippet";
+ SlotName[ polish ] = "Konspekt do kosza";
+ SlotName[ portuguese_brazilian ] = "SendOutlineToClipboard";
+ SlotName[ japanese ] = "¸Ø¯ÌßÎÞ°Äނ̱³ÄײÝ";
+ SlotName[ chinese_simplified ] = "´ó¸ÙËÍÖÁ¼ôÌù°å";
+ SlotName[ chinese_traditional ] = "¤jºõ°eµ¹°Å¶Kï";
+ SlotName[ arabic ] = "ÇáÊÞÓíã Åáì ÇáÍÇÝÙÉ";
+ SlotName[ dutch ] = "Overzicht naar clipboard";
+ SlotName[ chinese_simplified ] = "´ó¸ÙËÍÖÁ¼ôÌù°å";
+ SlotName[ greek ] = "ÄéÜñèñùóç ðñïò ôï Clipboard";
+ SlotName[ korean ] = "Ŭ¸³º¸µå °³¿ä";
+ SlotName[ turkish ] = "Anahatlarý panoya gönder";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_OUTLINE_TO_IMPRESS
+{
+ SlotName = "Gliederung an Präsentation";
+ SlotName [ english ] = "Gliederung an Präsentation";
+ SlotName[ english_us ] = "Outline to Presentation";
+ SlotName[ portuguese ] = "Esquema para apresentação";
+ SlotName[ russian ] = "Ñòðóêòóðó â ïðåçåíòàöèþ";
+ SlotName[ dutch ] = "Overzicht bij presentatie";
+ SlotName[ french ] = "Plan vers présentation";
+ SlotName[ spanish ] = "Esquema para presentación";
+ SlotName[ italian ] = "Struttura da presentazione";
+ SlotName[ danish ] = "Disposition til præsentation";
+ SlotName[ swedish ] = "Disposition till presentation";
+ SlotName[ polish ] = "Konspekt do prezentacji";
+ SlotName[ portuguese_brazilian ] = "SendOutlineToStarOffice Impress";
+ SlotName[ japanese ] = "ÌßÚ¾ÞÝð¼®Ý‚̱³ÄײÝ";
+ SlotName[ chinese_simplified ] = "´ó¸ÙË͵½ÑÝʾÎĸå";
+ SlotName[ chinese_traditional ] = "¤jºõ°e¨ì²³ø";
+ SlotName[ arabic ] = "ÇáÊÞÓíã Åáì ÚÑÖ ÊÞÏíãí";
+ SlotName[ dutch ] = "Overzicht bij presentatie";
+ SlotName[ chinese_simplified ] = "´ó¸ÙË͵½ÑÝʾÎĸå";
+ SlotName[ greek ] = "ÄéÜñèñùóç ðñïò ðáñïõóßáóç";
+ SlotName[ korean ] = "ÇÁ¸®Á¨Å×ÀÌ¼Ç °³¿ä";
+ SlotName[ turkish ] = "Anahatlarý sunuya aktar";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PAGE_STYLE_SET_COLS
+{
+ SlotName = "Seitenvorlage: Spalten";
+ SlotName [ english ] = "Seitenvorlage: Spalten";
+ SlotName[ english_us ] = "Page Style: Columns";
+ SlotName[ portuguese ] = "Estilo de página: colunas";
+ SlotName[ russian ] = "Ñòèëü ñòðàíèöû: êîëîíêè";
+ SlotName[ dutch ] = "Pagina-opmaakprofiel: kolommen";
+ SlotName[ french ] = "Style de page : colonnes";
+ SlotName[ spanish ] = "Estilo de página: Columnas";
+ SlotName[ italian ] = "Modello di pagina: colonne";
+ SlotName[ danish ] = "Sidetypografi: kolonner";
+ SlotName[ swedish ] = "Sidformatmall: Kolumner";
+ SlotName[ polish ] = "Styl strony: Kolumny";
+ SlotName[ portuguese_brazilian ] = "SetPageStyleCols";
+ SlotName[ japanese ] = "Íß°¼Þ½À²Ù:—ñ";
+ SlotName[ chinese_simplified ] = "Ò³ÃæÑùʽ£ºÁÐ";
+ SlotName[ chinese_traditional ] = "­¶­±¼Ë¦¡¡G¦C";
+ SlotName[ arabic ] = "ÞÇáÈ ÕÝÍÉ: ÃÚãÏÉ";
+ SlotName[ dutch ] = "Pagina-opmaakprofiel: kolommen";
+ SlotName[ chinese_simplified ] = "Ò³ÃæÑùʽ£ºÁÐ";
+ SlotName[ greek ] = "Ðñüôõðï óåëßäáò: ÓôÞëåò";
+ SlotName[ korean ] = "ÆäÀÌÁö À¯Çü: ¿­";
+ SlotName[ turkish ] = "Sayfa biçimi: Sütunlar";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PAGEDOWN
+{
+ SlotName = "Nächste Seite";
+ SlotName [ english ] = "Nächste Seite";
+ SlotName[ english_us ] = "Next Page";
+ SlotName[ portuguese ] = "Página seguinte";
+ SlotName[ russian ] = "Ñäåäóþùàÿ ñòðàíèöà";
+ SlotName[ dutch ] = "Volgende pagina";
+ SlotName[ french ] = "Page suivante";
+ SlotName[ spanish ] = "Página siguiente";
+ SlotName[ italian ] = "Pagina successiva";
+ SlotName[ danish ] = "Næste side";
+ SlotName[ swedish ] = "Nästa sida";
+ SlotName[ polish ] = "Nastêpna strona";
+ SlotName[ portuguese_brazilian ] = "PageDown";
+ SlotName[ japanese ] = "ŽŸ‚ÌÍß°¼Þ";
+ SlotName[ chinese_simplified ] = "ÏÂÒ»Ò³";
+ SlotName[ chinese_traditional ] = "¤U¤@­¶";
+ SlotName[ arabic ] = "ÇáÕÝÍÉ ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Volgende pagina";
+ SlotName[ chinese_simplified ] = "ÏÂÒ»Ò³";
+ SlotName[ greek ] = "Åðüìåíç óåëßäá";
+ SlotName[ korean ] = "´ÙÀ½ ÆäÀÌÁö";
+ SlotName[ turkish ] = "Sonraki sayfa";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PAGEDOWN_SEL
+{
+ SlotName = "Bis nächste Seite selektieren";
+ SlotName [ english ] = "Bis nächste Seite selektieren";
+ SlotName[ english_us ] = "Select to Next Page";
+ SlotName[ portuguese ] = "Seleccionar até página seguinte";
+ SlotName[ russian ] = "Âûäåëèòü äî ñëåäóþùåé ñòðàíèöû";
+ SlotName[ dutch ] = "Tot aan volgende pagina selecteren";
+ SlotName[ french ] = "Sélect. jusqu'à la page suivante";
+ SlotName[ spanish ] = "Seleccionar hasta la página siguiente";
+ SlotName[ italian ] = "Seleziona fino alla pagina successiva";
+ SlotName[ danish ] = "Marker til næste side";
+ SlotName[ swedish ] = "Markera till nästa sida";
+ SlotName[ polish ] = "Zaznacz do nastêpnej strony";
+ SlotName[ portuguese_brazilian ] = "PageDownSel";
+ SlotName[ japanese ] = "ŽŸ‚ÌÍß°¼Þ‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÏÂÒ»Ò³";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¤U­¶";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÇáÕÝÍÉ ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Tot aan volgende pagina selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÏÂÒ»Ò³";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôçí åðüìåíç óåëßäá";
+ SlotName[ korean ] = "´ÙÀ½ ÆäÀÌÁö ¼±ÅÃ";
+ SlotName[ turkish ] = "Sonraki sayfaya kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PAGEUP
+{
+ SlotName = "Vorherige Seite";
+ SlotName [ english ] = "Vorherige Seite";
+ SlotName[ english_us ] = "Previous Page";
+ SlotName[ portuguese ] = "Página anterior";
+ SlotName[ russian ] = "Ïðåäûäóùàÿ ñòðàíèöà";
+ SlotName[ dutch ] = "Vorige pagina";
+ SlotName[ french ] = "Page précédente";
+ SlotName[ spanish ] = "Página anterior";
+ SlotName[ italian ] = "Pagina precedente";
+ SlotName[ danish ] = "Forrige side";
+ SlotName[ swedish ] = "Föregående sida";
+ SlotName[ polish ] = "Poprzednia strona";
+ SlotName[ portuguese_brazilian ] = "PageUp";
+ SlotName[ japanese ] = "‘O‚ÌÍß°¼Þ";
+ SlotName[ chinese_simplified ] = "ÉÏÒ»Ò³";
+ SlotName[ chinese_traditional ] = "¤W¤@­¶";
+ SlotName[ arabic ] = "ÇáÕÝÍÉ ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Vorige pagina";
+ SlotName[ chinese_simplified ] = "ÉÏÒ»Ò³";
+ SlotName[ greek ] = "Ðñïçãïýìåíç óåëßäá";
+ SlotName[ korean ] = "ÀÌÀü ÆäÀÌÁö";
+ SlotName[ turkish ] = "Önceki sayfa";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PAGEUP_SEL
+{
+ SlotName = "Bis vorherige Seite selektieren";
+ SlotName [ english ] = "Bis vorherige Seite selektieren";
+ SlotName[ english_us ] = "Select to Previous Page";
+ SlotName[ portuguese ] = "Seleccionar até página anterior";
+ SlotName[ russian ] = "Âûäåëèòü äî ïðåäûäóùåé ñòðàíèöû";
+ SlotName[ dutch ] = "Tot aan vorige pagina selecteren";
+ SlotName[ french ] = "Sélect. jusqu'à la page précédente";
+ SlotName[ spanish ] = "Seleccionar hasta la página anterior";
+ SlotName[ italian ] = "Seleziona fino alla pagina precedente";
+ SlotName[ danish ] = "Marker til forrige side";
+ SlotName[ swedish ] = "Markera till föregående sida";
+ SlotName[ polish ] = "Zaznacz do poprzedniej strony";
+ SlotName[ portuguese_brazilian ] = "PageUpSel";
+ SlotName[ japanese ] = "‘O‚ÌÍß°¼Þ‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÉÏÒ»Ò³";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¤W¤@­¶";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÇáÕÝÍÉ ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Tot aan vorige pagina selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÉÏÒ»Ò³";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôçí ðñïçãïýìåíç óåëßäá";
+ SlotName[ korean ] = "ÀÌÀü ÆäÀÌÁö ¼±ÅÃ";
+ SlotName[ turkish ] = "Önceki sayfaya kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PASTESPECIAL
+{
+ SlotName = "Inhalte einfügen";
+ SlotName [ english ] = "Inhalte einfügen";
+ SlotName[ english_us ] = "Paste Special";
+ SlotName[ portuguese ] = "Colar conteúdos";
+ SlotName[ russian ] = "Ñïåöèàëüíàÿ âñòàâêà";
+ SlotName[ dutch ] = "Plakken speciaal";
+ SlotName[ french ] = "Collage spécial";
+ SlotName[ spanish ] = "Pegado especial";
+ SlotName[ italian ] = "Incolla speciale";
+ SlotName[ danish ] = "Indsæt indhold";
+ SlotName[ swedish ] = "Klistra in innehåll";
+ SlotName[ polish ] = "Wklej zawartoϾ";
+ SlotName[ portuguese_brazilian ] = "PasteContents";
+ SlotName[ japanese ] = "Œ`Ž®‚ð‘I‘ð‚µ‚Ä“\\‚è•t‚¯";
+ SlotName[ chinese_simplified ] = "²åÈëÄÚÈÝ";
+ SlotName[ chinese_traditional ] = "´¡¤J¤º®e";
+ SlotName[ arabic ] = "áÕÞ ÎÇÕ";
+ SlotName[ dutch ] = "Plakken speciaal";
+ SlotName[ chinese_simplified ] = "²åÈëÄÚÈÝ";
+ SlotName[ greek ] = "ÅéäéêÞ åðéêüëëçóç";
+ SlotName[ korean ] = "¼±ÅÃÇÏ¿© ºÙ¿©³Ö±â";
+ SlotName[ turkish ] = "Özel yapýþtýr";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_POSTIT
+{
+ SlotName = "Notiz einfügen";
+ SlotName [ english ] = "Notiz einfügen";
+ SlotName[ english_us ] = "Insert Note";
+ SlotName[ portuguese ] = "Inserir anotação";
+ SlotName[ russian ] = "Âñòàâèòü ïðèìå÷àíèå";
+ SlotName[ dutch ] = "Aantekening invoegen";
+ SlotName[ french ] = "Insérer une note";
+ SlotName[ spanish ] = "Insertar nota";
+ SlotName[ italian ] = "Inserisci nota";
+ SlotName[ danish ] = "Indsæt note";
+ SlotName[ swedish ] = "Infoga anteckning";
+ SlotName[ polish ] = "Wstaw notatkê";
+ SlotName[ portuguese_brazilian ] = "InsertNote";
+ SlotName[ japanese ] = "ÒÓ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈ뱸ע";
+ SlotName[ chinese_traditional ] = "´¡¤J³Æª`";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ãáÇÍÙÉ";
+ SlotName[ dutch ] = "Aantekening invoegen";
+ SlotName[ chinese_simplified ] = "²åÈ뱸ע";
+ SlotName[ greek ] = "ÅéóáãùãÞ óçìåßùóçò";
+ SlotName[ korean ] = "¸Þ¸ð »ðÀÔ";
+ SlotName[ turkish ] = "Not ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PREV_BOOKMARK
+{
+ SlotName = "Zur vorherigen Textmarke";
+ SlotName [ english ] = "Zur vorherigen Textmarke";
+ SlotName[ english_us ] = "To Previous Bookmark";
+ SlotName[ portuguese ] = "Ir para marcador de texto anterior";
+ SlotName[ russian ] = "Äî ïðåäûäóùåé çàêëàäêè";
+ SlotName[ dutch ] = "Naar vorige tekstmarkering";
+ SlotName[ french ] = "Aller au repère de texte précédent";
+ SlotName[ spanish ] = "Ir al marcador anterior";
+ SlotName[ italian ] = "Al segnalibro precedente";
+ SlotName[ danish ] = "Til forrige tekstmarkering";
+ SlotName[ swedish ] = "Till föregående textmarkering";
+ SlotName[ polish ] = "Do poprzedniej zak³adki";
+ SlotName[ portuguese_brazilian ] = "GoToPrevBookmark";
+ SlotName[ japanese ] = "‘O‚Ì÷½ÄÏ°¸‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸öÊéÇ©";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@­Ó®ÑÅÒ";
+ SlotName[ arabic ] = "Åáì ÇáÅÔÇÑÉ ÇáãÑÌÚíÉ ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Naar vorige tekstmarkering";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸öÊéÇ©";
+ SlotName[ greek ] = "Ðñïò ôïí ðñïçãïýìåíï óåëéäïäåßêôç";
+ SlotName[ korean ] = "ÀÌÀü Ã¥ °¥ÇÇ·Î";
+ SlotName[ turkish ] = "Önceki metin belirteci";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PREV_FOOTNOTE
+{
+ SlotName = "Zur vorherigen Fußnote";
+ SlotName [ english ] = "Zur vorherigen Fußnote";
+ SlotName[ english_us ] = "To Previous Footnote";
+ SlotName[ portuguese ] = "Ir para nota de rodapé anterior";
+ SlotName[ russian ] = "Äî ïðåäûäóùåé ñíîñêè";
+ SlotName[ dutch ] = "Naar vorige voetnoot";
+ SlotName[ french ] = "À la note de bas de page précédente";
+ SlotName[ spanish ] = "Ir a la nota al pie anterior";
+ SlotName[ italian ] = "Alla nota a piè pagina precedente";
+ SlotName[ danish ] = "Til forrige fodnote";
+ SlotName[ swedish ] = "Till föregående fotnot";
+ SlotName[ polish ] = "Do poprzedniego przypisu dolnego";
+ SlotName[ portuguese_brazilian ] = "GoToPrevFootnote";
+ SlotName[ japanese ] = "‘O‚Ì‹r’‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸ö×¢½Å";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@µù¸}";
+ SlotName[ arabic ] = "Åáì ÇáÍÇÔíÉ ÇáÓÝáíÉ ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Naar vorige voetnoot";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸ö×¢½Å";
+ SlotName[ greek ] = "Ðñïò ôçí ðñïçãïýìåíç õðïóçìåßùóç";
+ SlotName[ korean ] = "ÀÌÀü °¢ÁÖ·Î";
+ SlotName[ turkish ] = "Önceki dipnot";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PREV_PARA
+{
+ SlotName = "Zum vorherigen Absatz";
+ SlotName [ english ] = "Zum vorherigen Absatz";
+ SlotName[ english_us ] = "To Previous Paragraph";
+ SlotName[ portuguese ] = "Ir para parágrafo anterior";
+ SlotName[ russian ] = "Äî ïðåäûäóùåãî àáçàöà";
+ SlotName[ dutch ] = "Naar vorige alinea";
+ SlotName[ french ] = "Aller au paragraphe précédent";
+ SlotName[ spanish ] = "Ir al párrafo anterior";
+ SlotName[ italian ] = "Al paragrafo precedente";
+ SlotName[ danish ] = "Til forrige afsnit";
+ SlotName[ swedish ] = "Till föregående stycke";
+ SlotName[ polish ] = "Do porzedniego akapitu";
+ SlotName[ portuguese_brazilian ] = "GoToPrevPara";
+ SlotName[ japanese ] = "‘O‚Ì’i—Ž‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸ö¶ÎÂä";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@­Ó¬q¸¨";
+ SlotName[ arabic ] = "Åáì ÇáÝÞÑÉ ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Naar vorige alinea";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸ö¶ÎÂä";
+ SlotName[ greek ] = "Ðñïò ôçí ðñïçãïýìåíç ðáñÜãñáöï";
+ SlotName[ korean ] = "ÀÌÀü ´Ü¶ôÀ¸·Î";
+ SlotName[ turkish ] = "Önceki paragraf";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PREV_SENT
+{
+ SlotName = "Zum vorherigen Satz";
+ SlotName [ english ] = "Zum vorherigen Satz";
+ SlotName[ english_us ] = "To Previous Sentence";
+ SlotName[ portuguese ] = "Ir para frase anterior";
+ SlotName[ russian ] = "Ê ïðåäûäóùåìó ïðåäëîæåíèþ";
+ SlotName[ dutch ] = "Naar vorige zin";
+ SlotName[ french ] = "Aller à la phrase précédente";
+ SlotName[ spanish ] = "Ir a frase anterior";
+ SlotName[ italian ] = "Alla frase precedente";
+ SlotName[ danish ] = "Til forrige sætning";
+ SlotName[ swedish ] = "Till föregående mening";
+ SlotName[ polish ] = "Do poprzedniego zdania";
+ SlotName[ portuguese_brazilian ] = "GoToPrevSentence";
+ SlotName[ japanese ] = "‘O‚Ì•¶Í‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸ö¾ä×Ó";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@¥y¤l";
+ SlotName[ arabic ] = "ÍÊì ÇáÌãáÉ ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Naar vorige zin";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸ö¾ä×Ó";
+ SlotName[ greek ] = "Ðñïò ôçí ðñïçãïýìåíç ðñüôáóç";
+ SlotName[ korean ] = "ÀÌÀü ¹®ÀåÀ¸·Î";
+ SlotName[ turkish ] = "Önceki cümle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PREV_SENT_SEL
+{
+ SlotName = "Bis zum vorherigen Satz selektieren";
+ SlotName [ english ] = "Bis zum vorherigen Satz selektieren";
+ SlotName[ english_us ] = "Select to Previous Sentence";
+ SlotName[ portuguese ] = "Seleccionar até frase anterior";
+ SlotName[ russian ] = "Âûäåëèòü äî ïðåäûäóùåãî ïðåäëîæåíèÿ";
+ SlotName[ dutch ] = "Tot aan vorige zin selecteren";
+ SlotName[ french ] = "Sélect. jusqu'à la phrase précédente";
+ SlotName[ spanish ] = "Seleccionar hasta la oración anterior";
+ SlotName[ italian ] = "Seleziona fino alla frase precedente";
+ SlotName[ danish ] = "Marker til forrige sætning";
+ SlotName[ swedish ] = "Markera till föregående mening";
+ SlotName[ polish ] = "Zaznacz do poprzedniego zdania";
+ SlotName[ portuguese_brazilian ] = "GoToPrevSentenceSel";
+ SlotName[ japanese ] = "‘O‚Ì•¶Í‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÉÏÒ»¸ö¾ä×Ó";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¤W¤@­Ó¥y¤l";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÇáÌãáÉ ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Tot aan vorige zin selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÉÏÒ»¸ö¾ä×Ó";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôçí ðñïçãïýìåíç ðñüôáóç";
+ SlotName[ korean ] = "ÀÌÀü ¹®Àå ¼±ÅÃ";
+ SlotName[ turkish ] = "Önceki cümleye kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PREV_TABLE
+{
+ SlotName = "Zur vorherigen Tabelle";
+ SlotName [ english ] = "Zur vorherigen Tabelle";
+ SlotName[ english_us ] = "To Previous Table";
+ SlotName[ portuguese ] = "Tabela anterior";
+ SlotName[ russian ] = "Ê ïðåäûäóùåé òàáëèöå";
+ SlotName[ dutch ] = "Naar vorige tabel";
+ SlotName[ french ] = "Au tableau précédent";
+ SlotName[ spanish ] = "Ir a la tabla anterior";
+ SlotName[ italian ] = "Alla tabella precedente";
+ SlotName[ danish ] = "Til forrige tabel";
+ SlotName[ swedish ] = "Till föregående tabell";
+ SlotName[ polish ] = "Do poprzedniej tabeli";
+ SlotName[ portuguese_brazilian ] = "JumpToPrevTable";
+ SlotName[ japanese ] = "‘O‚Ì•\\‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸ö±í¸ñ";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@ªí®æ";
+ SlotName[ arabic ] = "Åáì ÇáÌÏæá ÇáÓÇÈÞ";
+ SlotName[ dutch ] = "Naar vorige tabel";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸ö±í¸ñ";
+ SlotName[ greek ] = "Ðñïò ôïí ðñïçãïýìåíï ðßíáêá";
+ SlotName[ korean ] = "ÀÌÀü Ç¥·Î";
+ SlotName[ turkish ] = "Önceki tablo";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PREV_TBLFML
+{
+ SlotName = "Zur vorherigen Tabellenformel";
+ SlotName [ english ] = "Zur vorherigen Tabellenformel";
+ SlotName[ english_us ] = "Go to previous table formula";
+ SlotName[ portuguese ] = "Fórmula de cálculo anterior";
+ SlotName[ russian ] = "Ïåðåéòè ê ïðåäûäóùåé ôîðìóëå òàáëèöû";
+ SlotName[ dutch ] = "Naar vorige tabelformule";
+ SlotName[ french ] = "Aller à la formule de calcul précédente";
+ SlotName[ spanish ] = "Ir a la fórmula anterior";
+ SlotName[ italian ] = "Alla formula di tabella precedente";
+ SlotName[ danish ] = "Til forrige tabelformel";
+ SlotName[ swedish ] = "Till föregående tabellformel";
+ SlotName[ polish ] = "PrzejdŸ do nastêpnej formu³y tabeli";
+ SlotName[ portuguese_brazilian ] = "GotoPrevTableFormula";
+ SlotName[ japanese ] = "‘O‚Ì”Ž®‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸ö¹¤×÷±í¹«Ê½";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@­Ó¤u§@ªí¤½¦¡";
+ SlotName[ arabic ] = "Åáì ÕíÛÉ ÇáÌÏæá ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Naar vorige tabelformule";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸ö¹¤×÷±í¹«Ê½";
+ SlotName[ greek ] = "Ðñïò ôïí ðñïçãïýìåíï ôýðï ôïõ ðßíáêá";
+ SlotName[ korean ] = "ÀÌÀü Ç¥ ¼ö½ÄÀ¸·Î À̵¿";
+ SlotName[ turkish ] = "Önceki tablo formulü";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PREV_TBLFML_ERR
+{
+ SlotName = "Zur vorherigen fehlerhaften Tabellenformel";
+ SlotName [ english ] = "Zur vorherigen fehlerhaften Tabellenformel";
+ SlotName[ english_us ] = "Go to previous faulty table formula";
+ SlotName[ portuguese ] = "Fórmula de cálculo anterior com defeito";
+ SlotName[ russian ] = "Ïåðåéòè ê ïðåäûäóùåé ôîðìóëå òàáëèöû, ñîäåðæàùåé îøèáêè";
+ SlotName[ dutch ] = "Naar vorige foutieve tabelformule";
+ SlotName[ french ] = "Aller à la formule de calcul erronée précédente";
+ SlotName[ spanish ] = "Ir a fórmula errónea anterior";
+ SlotName[ italian ] = "Alla formula di tabella errata precedente";
+ SlotName[ danish ] = "Til forrige fejlagtige tabelformel";
+ SlotName[ swedish ] = "Till föregående felaktiga tabellformel";
+ SlotName[ polish ] = "PrzejdŸ do poprzedniej b³êdnej formu³y tabeli";
+ SlotName[ portuguese_brazilian ] = "GotoPrevWrongTableFormula";
+ SlotName[ japanese ] = "‘O‚ÌŠÔˆá‚Á‚½”Ž®‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸öÓдíÎóµÄ¹¤×÷±í¹«Ê½";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@­Ó¦³¿ù»~ªº¤u§@ªí¤½¦¡";
+ SlotName[ arabic ] = "Åáì ÕíÛÉ ÇáÌÏæá ÇáÎÇØÆÉ ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Naar vorige foutieve tabelformule";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸öÓдíÎóµÄ¹¤×÷±í¹«Ê½";
+ SlotName[ greek ] = "Ðñïò ôïí ðñïçãïýìåíï ëáíèáóìÝíï ôýðï ôïõ ðßíáêá";
+ SlotName[ korean ] = "Ʋ¸° ÀÌÀü Ç¥ °ø½ÄÀ¸·Î À̵¿";
+ SlotName[ turkish ] = "Önceki hatalý tablo formulü";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PREV_TOXMARK
+{
+ SlotName = "Zur vorherigen Indexmarkierung";
+ SlotName [ english ] = "Zur vorherigen Indexmarkierung";
+ SlotName[ english_us ] = "Go to Previous Index Mark";
+ SlotName[ portuguese ] = "Marca anterior do índice";
+ SlotName[ russian ] = "Ïåðåéòè ê ïðåäûäóùåé ìåòêå óêàçàòåëÿ";
+ SlotName[ dutch ] = "Naar vorige indexmarkering";
+ SlotName[ french ] = "Aller à la marque d'index précédente";
+ SlotName[ spanish ] = "Ir a la marca de índice anterior";
+ SlotName[ italian ] = "Al contrassegno indice precedente";
+ SlotName[ danish ] = "Til forrige indeksmarkering";
+ SlotName[ swedish ] = "Till föregående indexmarkering";
+ SlotName[ polish ] = "PrzejdŸ do poprzedniego znacznika indeksu";
+ SlotName[ portuguese_brazilian ] = "GotoPrevIndexMark";
+ SlotName[ japanese ] = "‘O‚̲ÝÃÞ¯¸½Ï°¸‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸öË÷Òý±ê¼Ç";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@­Ó¯Á¤Þ¼Ð°O";
+ SlotName[ arabic ] = "Åáì ÇáÊÍÏíÏ ÇáÝåÑÓí ÇáÓÇÈÞ";
+ SlotName[ dutch ] = "Naar vorige indexmarkering";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»¸öË÷Òý±ê¼Ç";
+ SlotName[ greek ] = "Ðñïò ôï ðñïçãïýìåíï óçìÜäé åõñåôçñßïõ";
+ SlotName[ korean ] = "ÀÌÀü »öÀΠǥ½Ã·Î °¡±â";
+ SlotName[ turkish ] = "Önceki dizin belirteci";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PREV_WORD
+{
+ SlotName = "Zum Wort links";
+ SlotName [ english ] = "Zum Wort links";
+ SlotName[ english_us ] = "To Word Left";
+ SlotName[ portuguese ] = "Ir para palavra à esquerda";
+ SlotName[ russian ] = "Äî ñëîâà ñëåâà";
+ SlotName[ dutch ] = "Naar woord links";
+ SlotName[ french ] = "Au mot à gauche";
+ SlotName[ spanish ] = "Ir a la palabra izquierda";
+ SlotName[ italian ] = "Alla parola sinistra";
+ SlotName[ danish ] = "Til ord til venstre";
+ SlotName[ swedish ] = "Till vänster ord";
+ SlotName[ polish ] = "Do s³owa po lewej stronie";
+ SlotName[ portuguese_brazilian ] = "GoToPrevWord";
+ SlotName[ japanese ] = "’PŒê‚̶‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½×ÖµÄ×ó·½";
+ SlotName[ chinese_traditional ] = "Âà¨ì¦r­º";
+ SlotName[ arabic ] = "ÍÊì íÓÇÑ ÇáßáãÉ";
+ SlotName[ dutch ] = "Naar woord links";
+ SlotName[ chinese_simplified ] = "תµ½×ÖµÄ×ó·½";
+ SlotName[ greek ] = "ËÝîç áñéóôåñÜ";
+ SlotName[ korean ] = "´Ü¾î ¿ÞÂÊÀ¸·Î";
+ SlotName[ turkish ] = "Soldaki sözcük";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PREV_WORD_SEL
+{
+ SlotName = "Bis Wort links selektieren";
+ SlotName [ english ] = "Bis Wort links selektieren";
+ SlotName[ english_us ] = "Select to Begin of Word";
+ SlotName[ portuguese ] = "Seleccionar até ao início da palavra";
+ SlotName[ russian ] = "Âûäåëèòü äî ñëîâà ñëåâà";
+ SlotName[ dutch ] = "Tot aan woord links selecteren";
+ SlotName[ french ] = "Sélect. mot à gauche";
+ SlotName[ spanish ] = "Seleccionar hasta el comienzo de la palabra";
+ SlotName[ italian ] = "Seleziona fino alla parola di sinistra";
+ SlotName[ danish ] = "Marker til ord til venstre";
+ SlotName[ swedish ] = "Markera till vänster ord";
+ SlotName[ polish ] = "Zaznacz do s³owa po lewej";
+ SlotName[ portuguese_brazilian ] = "WordLeftSel";
+ SlotName[ japanese ] = "’PŒê‚̶‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁ×ÖµÄ×ó·½";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¦r­º";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÇáßáãÉ ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Tot aan woord links selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁ×ÖµÄ×ó·½";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôçí ëÝîç áñéóôåñÜ";
+ SlotName[ korean ] = "´Ü¾îÀÇ ½ÃÀÛ¿¡ ¼±ÅÃ";
+ SlotName[ turkish ] = "Soldaki sözcüðe kadar seç";
+};
+SfxSlotInfo FN_PREVIEW_PRINT_OPTIONS
+{
+ SlotName = "Druckoptionen Seitenansicht";
+ SlotName [ english ] = "Druckoptionen Seitenansicht";
+ SlotName[ english_us ] = "Print options page view";
+ SlotName[ portuguese ] = "Opções de impressão";
+ SlotName[ russian ] = "Ïàðàìåòðû ïå÷àòè";
+ SlotName[ dutch ] = "Printopties afdrukvoorbeeld";
+ SlotName[ french ] = "Options d'impression : aperçu";
+ SlotName[ spanish ] = "Opciones de impresión";
+ SlotName[ italian ] = "Opzioni di stampa";
+ SlotName[ danish ] = "Udskriftsindstillinger vis udskrift";
+ SlotName[ swedish ] = "Utskriftsalternativ förhandsgranskning";
+ SlotName[ polish ] = "Opcje drukowania Widok strony";
+ SlotName[ portuguese_brazilian ] = "Printing options";
+ SlotName[ japanese ] = "ÌßÚËÞ­°ˆóüµÌß¼®Ý";
+ SlotName[ chinese_simplified ] = "´òÓ¡Ñ¡Ïî Ò³ÃæÊÓͼ";
+ SlotName[ chinese_traditional ] = "¦C¦L¿ï¶µ ­¶­±À˵ø";
+ SlotName[ arabic ] = "ÎíÇÑÇÊ ÇáØÈÇÚÉ: ãÚÇíäÉ ÇáÕÝÍÇÊ";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ dutch ] = "Printopties afdrukvoorbeeld";
+ SlotName[ chinese_simplified ] = "´òÓ¡Ñ¡Ïî Ò³ÃæÊÓͼ";
+ SlotName[ greek ] = "ÅðéëïãÝò åêôýðùóçò/Ðñïåðéóêüðçóç óåëßäáò";
+ SlotName[ korean ] = "Àμ⠿ɼÇ";
+ SlotName[ turkish ] = "Sayfa görünümü yazdýrma seçenekleri";
+};
+SfxSlotInfo FN_PREVIEW_ZOOM
+{
+ SlotName = "Maßstab Seitenansicht";
+ SlotName [ english ] = "Zoom page view";
+ SlotName[ english_us ] = "Preview Zoom";
+ SlotName[ portuguese ] = "Ver Zoom";
+ SlotName[ russian ] = "Ìàñøòàá";
+ SlotName[ greek ] = "Êëßìáêá ðñïâïëÞò óåëßäáò";
+ SlotName[ dutch ] = "Zoom afdrukvoorbeeld";
+ SlotName[ french ] = "Échelle de l'aperçu";
+ SlotName[ spanish ] = "Escala";
+ SlotName[ italian ] = "Zoom";
+ SlotName[ danish ] = "Målestok sidevisning";
+ SlotName[ swedish ] = "Skala sidvy";
+ SlotName[ polish ] = "Skala widoku strony";
+ SlotName[ portuguese_brazilian ] = "Scale";
+ SlotName[ japanese ] = "ÌßÚËÞ­°‚̽ްÑ";
+ SlotName[ korean ] = "È®´ë/Ãà¼Ò";
+ SlotName[ chinese_simplified ] = "Ò³ÃæÊÓͼ±ÈÀý";
+ SlotName[ chinese_traditional ] = "Åã¥Ü¤ñ¨Ò ­¶­±µø¹Ï";
+ SlotName[ turkish ] = "Yakýnlaþtýr";
+ SlotName[ arabic ] = "ÊßÈíÑ æÊÕÛíÑ ãÚÇíäÉ ÇáÕÝÍÉ";
+};
+SfxSlotInfo FN_PRINT_LAYOUT
+{
+ SlotName = "Druck-Layout ein/aus";
+ SlotName [ english ] = "Druck-Layout ein/aus";
+ SlotName[ english_us ] = "Print Layout On/Off";
+ SlotName[ portuguese ] = "Configuração da impressão";
+ SlotName[ russian ] = "Âêë./âûêë. ðàçìåòêó ïå÷àòè";
+ SlotName[ dutch ] = "Afdruklay-out aan/uit";
+ SlotName[ french ] = "Mode Mise en page d'impression";
+ SlotName[ spanish ] = "Diseño de Impresión";
+ SlotName[ italian ] = "Stampa layout on/off";
+ SlotName[ danish ] = "Udskriftslayout til/fra";
+ SlotName[ swedish ] = "Utskriftslayout på/av";
+ SlotName[ polish ] = "W³¹cz/Wy³¹cz uk³ad wydruku";
+ SlotName[ portuguese_brazilian ] = "PrintLayout";
+ SlotName[ japanese ] = "ˆóüÚ²±³Ä µÝ/µÌ";
+ SlotName[ chinese_simplified ] = "ÏÔʾ/ÒþÈë ´òÓ¡°æʽ";
+ SlotName[ chinese_traditional ] = "Åã¥Ü/Áô¤J¦C¦L-ª©¦¡";
+ SlotName[ arabic ] = "ÅÙåÇÑ/ÅÎÝÇÁ ÊÎØíØ ÇáØÈÇÚÉ";
+ SlotName[ dutch ] = "Afdruklay-out aan/uit";
+ SlotName[ chinese_simplified ] = "ÏÔʾ/ÒþÈë ´òÓ¡°æʽ";
+ SlotName[ greek ] = "ÄéÜôáîç åêôýðùóçò Íáé/¼÷é";
+ SlotName[ korean ] = "Àμ⠸ð¾ç ÀÛµ¿/ÇØÁ¦";
+ SlotName[ turkish ] = "Yazdýrma düzeni açýk/kapalý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_PRINT_PAGEPREVIEW
+{
+ SlotName = "Seitenansicht drucken";
+ SlotName [ english ] = "Seitenansicht drucken";
+ SlotName[ english_us ] = "Print page view";
+ SlotName[ portuguese ] = "Imprimir previsualização";
+ SlotName[ russian ] = "Ïå÷àòü";
+ SlotName[ dutch ] = "Afdrukvoorbeeld drukken";
+ SlotName[ french ] = "Imprimer l'aperçu";
+ SlotName[ spanish ] = "Imprimir previsualización";
+ SlotName[ italian ] = "Stampa anteprima pagina";
+ SlotName[ danish ] = "Udskriv vist udskrift";
+ SlotName[ swedish ] = "Skriv ut förhandsgranskning";
+ SlotName[ polish ] = "Drukuj widok strony";
+ SlotName[ portuguese_brazilian ] = "PrintPagePreview";
+ SlotName[ japanese ] = "ÌßÚËÞ­°‚̈óü";
+ SlotName[ chinese_simplified ] = "´òÓ¡Ò³ÃæÊÓͼ";
+ SlotName[ chinese_traditional ] = "¦C¦L­¶­±À˵ø";
+ SlotName[ arabic ] = "ÇáØÈÇÚÉ ÍÓÈ ÇáãÚÇíäÉ";
+ SlotName[ dutch ] = "Afdrukvoorbeeld drukken";
+ SlotName[ chinese_simplified ] = "´òÓ¡Ò³ÃæÊÓͼ";
+ SlotName[ greek ] = "Åêôýðùóç ðñïåðéóêüðçóçò óåëßäáò";
+ SlotName[ korean ] = "Àμâ ÆäÀÌÁö º¸±â";
+ SlotName[ turkish ] = "Sayfa görünümünü yazdýr";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_QRY
+{
+ SlotName = "Datenbankmanager aufrufen";
+ SlotName [ english ] = "Datenbankmanager aufrufen";
+ SlotName[ english_us ] = "Call Database Manager";
+ SlotName[ portuguese ] = "Gestor da Base de Dados";
+ SlotName[ russian ] = "Âûçîâ àäìèíèñòðàòîðà áàçû äàííûõ";
+ SlotName[ dutch ] = "Databasemanager oproepen";
+ SlotName[ french ] = "Gestionnaire de base de données";
+ SlotName[ spanish ] = "Activar administrador de bases de datos";
+ SlotName[ italian ] = "Richiama gestione database";
+ SlotName[ danish ] = "Aktiver databasemanager";
+ SlotName[ swedish ] = "Anropa databas";
+ SlotName[ polish ] = "Wywo³aj mened¿era bazy danych";
+ SlotName[ portuguese_brazilian ] = "InsertDatabase";
+ SlotName[ japanese ] = "ÃÞ°ÀÍÞ°½ÏÈ°¼Þ¬‚ÌŽÀs";
+ SlotName[ chinese_simplified ] = "Æô¶¯Êý¾Ý¿â¹ÜÀí³ÌÐò";
+ SlotName[ chinese_traditional ] = "±Ò°Ê¸ê®Æ®wºÞ²zµ{¦¡";
+ SlotName[ arabic ] = "ãÏíÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ SlotName[ dutch ] = "Databasemanager oproepen";
+ SlotName[ chinese_simplified ] = "Æô¶¯Êý¾Ý¿â¹ÜÀí³ÌÐò";
+ SlotName[ greek ] = "Åíåñãïðïßçóç äéá÷åéñéóôÞ âÜóçò äåäïìÝíùí";
+ SlotName[ korean ] = "µ¥ÀÌÅͺ£À̽º °ü¸®ÀÚ È£Ãâ";
+ SlotName[ turkish ] = "Veritabaný yöneticisini çalýþtýr";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_QRY_MERGE
+{
+ SlotName = "Seriendruck vorbereiten";
+ SlotName [ english ] = "Seriendruck vorbereiten";
+ SlotName[ english_us ] = "Prepare Mail Merge";
+ SlotName[ portuguese ] = "Preparar impressão em série";
+ SlotName[ russian ] = "Ïîäãîòîâêà ê ñëèÿíèþ";
+ SlotName[ dutch ] = "Afdruk standaardbrief voorbereiden";
+ SlotName[ french ] = "Préparer Impression en série";
+ SlotName[ spanish ] = "Preparar impresión en serie";
+ SlotName[ italian ] = "Prepara stampa in serie";
+ SlotName[ danish ] = "Forbered brevfletning";
+ SlotName[ swedish ] = "Förbered serieutskrift";
+ SlotName[ polish ] = "Przygotuj druk korespondencji seryjnej";
+ SlotName[ portuguese_brazilian ] = "MergeDialog";
+ SlotName[ japanese ] = "·‚µž‚݈óü‚Ì€”õ";
+ SlotName[ chinese_simplified ] = "×¼±¸ÓʼþºÏ²¢";
+ SlotName[ chinese_traditional ] = "·Ç³Æ¦X¨Ö¦C¦L";
+ SlotName[ arabic ] = "ÊÌåíÒ ÇáØÈÇÚÉ ÇáãÓáÓáÉ";
+ SlotName[ dutch ] = "Afdruk standaardbrief voorbereiden";
+ SlotName[ chinese_simplified ] = "×¼±¸ÓʼþºÏ²¢";
+ SlotName[ greek ] = "Ðñïåôïéìáóßá ãéá åêôýðùóç ìáæéêÞò áëëçëïãñáößáò";
+ SlotName[ korean ] = "ÀüÀÚ¿ìÆí ÅëÇÕ Áغñ";
+ SlotName[ turkish ] = "Standart mektup yazdýrmayý hazýrla";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_REDLINE_ACCEPT
+{
+ SlotName = "Änderungen akzeptieren oder ablehnen";
+ SlotName [ english ] = "Änderungen akzeptieren oder ablehnen";
+ SlotName[ english_us ] = "Accept or Reject Changes";
+ SlotName[ portuguese ] = "Aceitar ou rejeitar modificações";
+ SlotName[ russian ] = "Ïðèíÿòü èëè îòêëîíèòü èñïðàâëåíèÿ";
+ SlotName[ dutch ] = "Wijzigingen accepteren of weigeren";
+ SlotName[ french ] = "Accepter ou rejeter les modifications";
+ SlotName[ spanish ] = "Aceptar modificaciones o rechazarlas";
+ SlotName[ italian ] = "Accetta o rifiuta modifiche";
+ SlotName[ danish ] = "Accepter eller forkast ændringer";
+ SlotName[ swedish ] = "Acceptera eller ignorera ändringar";
+ SlotName[ polish ] = "Zaakceptuj albo odrzuæ zmiany";
+ SlotName[ portuguese_brazilian ] = "AcceptRedlining";
+ SlotName[ japanese ] = "•ÏX‰ÓŠ‚ÌŠm”F";
+ SlotName[ chinese_simplified ] = "½ÓÊÜ»ò¾Ü¾ø¸ü¸Ä";
+ SlotName[ chinese_traditional ] = "±µ¨ü©Î©Úµ´Åܧó";
+ SlotName[ arabic ] = "ÞÈæá Ãæ ÑÝÖ ÇáÊÛííÑÇÊ";
+ SlotName[ dutch ] = "Wijzigingen accepteren of weigeren";
+ SlotName[ chinese_simplified ] = "½ÓÊÜ»ò¾Ü¾ø¸ü¸Ä";
+ SlotName[ greek ] = "Áðïäï÷Þ Þ áðüññéøç áëëáãþí";
+ SlotName[ korean ] = "º¯°æ ¼ö¶ô ¶Ç´Â °ÅÀý";
+ SlotName[ turkish ] = "Deðiþiklikleri kabul ya da reddet";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_REDLINE_COMMENT
+{
+ SlotName = "Kommentar einfügen";
+ SlotName [ english ] = "Kommentar einfügen";
+ SlotName[ english_us ] = "Insert Comment";
+ SlotName[ portuguese ] = "Inserir comentário";
+ SlotName[ russian ] = "Âñòàâèòü êîììåíòàðèé";
+ SlotName[ dutch ] = "Commentaar invoegen";
+ SlotName[ french ] = "Insérer un commentaire";
+ SlotName[ spanish ] = "Insertar comentario";
+ SlotName[ italian ] = "Inserisci commento";
+ SlotName[ danish ] = "Indsæt kommentar";
+ SlotName[ swedish ] = "Infoga kommentar";
+ SlotName[ polish ] = "Wstaw komentarz";
+ SlotName[ portuguese_brazilian ] = "CommentRedlining";
+ SlotName[ japanese ] = "ºÒÝÄ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈë×¢½â";
+ SlotName[ chinese_traditional ] = "´¡¤Jª`¸Ñ";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÊÚáíÞ";
+ SlotName[ dutch ] = "Commentaar invoegen";
+ SlotName[ chinese_simplified ] = "²åÈë×¢½â";
+ SlotName[ greek ] = "ÅéóáãùãÞ ó÷ïëßïõ";
+ SlotName[ korean ] = "¼³¸í »ðÀÔ";
+ SlotName[ turkish ] = "Açýklama ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_REDLINE_ON
+{
+ SlotName = "Überarbeiten einschalten";
+ SlotName [ english ] = "Überarbeiten einschalten";
+ SlotName[ english_us ] = "Switch on Review";
+ SlotName[ portuguese ] = "Traçar modificações";
+ SlotName[ russian ] = "Âêë. èñïðàâëåíèÿ";
+ SlotName[ dutch ] = "Opnieuw bewerken inschakelen";
+ SlotName[ french ] = "Activer la retouche";
+ SlotName[ spanish ] = "Activar modificaciones";
+ SlotName[ italian ] = "Attiva modifiche";
+ SlotName[ danish ] = "Aktiver modificering";
+ SlotName[ swedish ] = "Aktivera revidering";
+ SlotName[ polish ] = "W³¹cz modyfikacje";
+ SlotName[ portuguese_brazilian ] = "ActivateRedlining";
+ SlotName[ japanese ] = "•ÏX—š—ð‚Ì‹L˜^";
+ SlotName[ chinese_simplified ] = "¼¤»îÐÞ¸Ä";
+ SlotName[ chinese_traditional ] = "¿E¬¡­×§ï";
+ SlotName[ arabic ] = "ÊÊÈÚ ÇáÊäÞíÍ";
+ SlotName[ dutch ] = "Opnieuw bewerken inschakelen";
+ SlotName[ chinese_simplified ] = "¼¤»îÐÞ¸Ä";
+ SlotName[ greek ] = "Åíåñãïðïßçóç åðáíåîÝôáóçò";
+ SlotName[ korean ] = "¼öÁ¤ º¸¿Ï Àû¿ë";
+ SlotName[ turkish ] = "Redaksiyonu çalýþtýr";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_REDLINE_SHOW
+{
+ SlotName = "Überarbeitung anzeigen";
+ SlotName [ english ] = "Überarbeitung anzeigen";
+ SlotName[ english_us ] = "Highlight Changes";
+ SlotName[ portuguese ] = "Destacar modificações";
+ SlotName[ russian ] = "Âûäåëèòü èñïðàâëåíèÿ";
+ SlotName[ dutch ] = "Nieuwe bewerking weergeven";
+ SlotName[ french ] = "Afficher les retouches";
+ SlotName[ spanish ] = "Mostrar modificaciones";
+ SlotName[ italian ] = "Mostra revisione";
+ SlotName[ danish ] = "Vis ændringer";
+ SlotName[ swedish ] = "Visa revidering";
+ SlotName[ polish ] = "Poka¿ modyfikacje";
+ SlotName[ portuguese_brazilian ] = "ShowRedlining";
+ SlotName[ japanese ] = "•ÏX‰ÓŠ‚Ì•\\Ž¦";
+ SlotName[ chinese_simplified ] = "ÏÔʾÐÞ¸Ä";
+ SlotName[ chinese_traditional ] = "Åã¥Ü­×§ï";
+ SlotName[ arabic ] = "ÅÙåÇÑ ÇáÊäÞíÍ";
+ SlotName[ dutch ] = "Nieuwe bewerking weergeven";
+ SlotName[ chinese_simplified ] = "ÏÔʾÐÞ¸Ä";
+ SlotName[ greek ] = "ÅìöÜíéóç áëëáãþí";
+ SlotName[ korean ] = "ÇÏÀ̶óÀÌÆ® º¯°æ";
+ SlotName[ turkish ] = "Redaksiyonu görüntüle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_REFRESH_VIEW
+{
+ SlotName = "Ansicht wiederherstellen";
+ SlotName [ english ] = "Ansicht wiederherstellen";
+ SlotName[ english_us ] = "Restore View";
+ SlotName[ portuguese ] = "Restaurar visualização";
+ SlotName[ russian ] = "Âîññòàíîâèòü ïðåäâàðèòåëüíûé ïðîñìîòð";
+ SlotName[ dutch ] = "Weergave herstellen";
+ SlotName[ french ] = "Restaurer l'affichage";
+ SlotName[ spanish ] = "Restablecer visualización";
+ SlotName[ italian ] = "Ripristina vista";
+ SlotName[ danish ] = "Gendan visning";
+ SlotName[ swedish ] = "Återställ vy";
+ SlotName[ polish ] = "Przywróæ widok";
+ SlotName[ portuguese_brazilian ] = "RestoreView";
+ SlotName[ japanese ] = "•\\Ž¦‚Ì•œŒ³";
+ SlotName[ chinese_simplified ] = "»Ö¸´ÊÓͼ";
+ SlotName[ chinese_traditional ] = "«ì½ÆÀ˵ø";
+ SlotName[ arabic ] = "ÇÓÊÚÇÏÉ ÇáÚÑÖ";
+ SlotName[ dutch ] = "Weergave herstellen";
+ SlotName[ chinese_simplified ] = "»Ö¸´ÊÓͼ";
+ SlotName[ greek ] = "ÅðáíáöïñÜ ðñïâïëÞò";
+ SlotName[ korean ] = "º¹±¸ º¸±â";
+ SlotName[ turkish ] = "Görünümü geri getir";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_REPAGINATE
+{
+ SlotName = "Neuformatierung";
+ SlotName [ english ] = "Neuformatierung";
+ SlotName[ english_us ] = "Repaginate";
+ SlotName[ portuguese ] = "Repaginar";
+ SlotName[ russian ] = "Íîâîå ôîðìàòèðîâàíèå";
+ SlotName[ dutch ] = "Nieuwe opmaak";
+ SlotName[ french ] = "Repaginer";
+ SlotName[ spanish ] = "Reformatear";
+ SlotName[ italian ] = "Reimpagina";
+ SlotName[ danish ] = "Genformatering";
+ SlotName[ swedish ] = "Nyformatering";
+ SlotName[ polish ] = "Nowe formatowanie";
+ SlotName[ portuguese_brazilian ] = "Repaginate";
+ SlotName[ japanese ] = "V‹K‘Ž®Ý’è";
+ SlotName[ chinese_simplified ] = "ÖØÐÂÖÆ×÷¸ñʽ";
+ SlotName[ chinese_traditional ] = "­«·s¨î§@®æ¦¡";
+ SlotName[ arabic ] = "ÅÚÇÏÉ ÇáÊäÓíÞ";
+ SlotName[ dutch ] = "Nieuwe opmaak";
+ SlotName[ chinese_simplified ] = "ÖØÐÂÖÆ×÷¸ñʽ";
+ SlotName[ greek ] = "ÅðáíÜëçøç ìïñöïðïßçóçò";
+ SlotName[ korean ] = "ÆäÀÌÁö ¸Å±è";
+ SlotName[ turkish ] = "Yeniden formatla";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_REPEAT_SEARCH
+{
+ SlotName = "Suche wiederholen";
+ SlotName [ english ] = "Suche wiederholen";
+ SlotName[ english_us ] = "Repeat Search";
+ SlotName[ portuguese ] = "Repetir procura";
+ SlotName[ russian ] = "Ïîâòîð ïîèñêà";
+ SlotName[ dutch ] = "Zoeken herhalen";
+ SlotName[ french ] = "Répéter la recherche";
+ SlotName[ spanish ] = "Repetir búsqueda";
+ SlotName[ italian ] = "Ripeti ricerca";
+ SlotName[ danish ] = "Gentag søgning";
+ SlotName[ swedish ] = "Upprepa sökning";
+ SlotName[ polish ] = "Powtórz wyszukiwanie";
+ SlotName[ portuguese_brazilian ] = "RepeatSearch";
+ SlotName[ japanese ] = "ÄŒŸõ";
+ SlotName[ chinese_simplified ] = "Öظ´ËÑÑ°";
+ SlotName[ chinese_traditional ] = "­«½Æ´M§ä";
+ SlotName[ arabic ] = "ÊßÑÇÑ ÇáÈÍË";
+ SlotName[ dutch ] = "Zoeken herhalen";
+ SlotName[ chinese_simplified ] = "Öظ´ËÑÑ°";
+ SlotName[ greek ] = "ÅðáíÜëçøç áíáæÞôçóçò";
+ SlotName[ korean ] = "ã±â ¹Ýº¹";
+ SlotName[ turkish ] = "Yeniden bul";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_RULER
+{
+ SlotName = "Lineal ein/aus";
+ SlotName [ english ] = "Lineal ein/aus";
+ SlotName[ english_us ] = "Ruler On/Off";
+ SlotName[ portuguese ] = "Mostrar régua";
+ SlotName[ russian ] = "Âêë./âûêë. ëèíåéêó";
+ SlotName[ dutch ] = "Liniaal aan/uit";
+ SlotName[ french ] = "Afficher/masquer la règle";
+ SlotName[ spanish ] = "Regla";
+ SlotName[ italian ] = "Righello on/off";
+ SlotName[ danish ] = "Lineal til/fra";
+ SlotName[ swedish ] = "Linjal på/av";
+ SlotName[ polish ] = "W³¹cz/Wy³¹cz linijkê";
+ SlotName[ portuguese_brazilian ] = "ViewRuler";
+ SlotName[ japanese ] = "Ù°×° µÝ/µÌ";
+ SlotName[ chinese_simplified ] = "ÏÔʾ/ÒþÈë±ê³ß";
+ SlotName[ chinese_traditional ] = "Åã¥Ü/Áô¤J¼Ð¤Ø";
+ SlotName[ arabic ] = "ÅÙåÇÑ/ÅÎÝÇÁ ÇáãÓØÑÉ";
+ SlotName[ dutch ] = "Liniaal aan/uit";
+ SlotName[ chinese_simplified ] = "ÏÔʾ/ÒþÈë±ê³ß";
+ SlotName[ greek ] = "×Üñáêáò Íáé/¼÷é";
+ SlotName[ korean ] = "´«±ÝÀÚ ÀÛµ¿/ÇØÁ¦";
+ SlotName[ turkish ] = "Cetveli görüntüle/gizle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SELECT_PARA
+{
+ SlotName = "Absatz selektieren";
+ SlotName [ english ] = "Absatz selektieren";
+ SlotName[ english_us ] = "Select Paragraph";
+ SlotName[ portuguese ] = "Seleccionar parágrafo";
+ SlotName[ russian ] = "Âûäåëèòü àáçàö";
+ SlotName[ dutch ] = "Alinea selecteren";
+ SlotName[ french ] = "Sélectionner paragraphe";
+ SlotName[ spanish ] = "Seleccionar párrafo";
+ SlotName[ italian ] = "Seleziona paragrafo";
+ SlotName[ danish ] = "Marker afsnit";
+ SlotName[ swedish ] = "Markera stycke";
+ SlotName[ polish ] = "Wybierz akapit";
+ SlotName[ portuguese_brazilian ] = "ParagraphSelect";
+ SlotName[ japanese ] = "’i—Ž‚Ì‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÖжÎÂä";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¬q¸¨";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÝÞÑÉ";
+ SlotName[ dutch ] = "Alinea selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÖжÎÂä";
+ SlotName[ greek ] = "ÅðéëïãÞ ðáñáãñÜöïõ";
+ SlotName[ korean ] = "´Ü¶ô ¼±ÅÃ";
+ SlotName[ turkish ] = "Paragraf seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SELECT_WORD
+{
+ SlotName = "Wort selektieren";
+ SlotName [ english ] = "Wort selektieren";
+ SlotName[ english_us ] = "Select Word";
+ SlotName[ portuguese ] = "Seleccionar palavra";
+ SlotName[ russian ] = "Âûäåëèòü ñëîâî";
+ SlotName[ dutch ] = "Woord selecteren";
+ SlotName[ french ] = "Sélectionner mot";
+ SlotName[ spanish ] = "Seleccionar palabra";
+ SlotName[ italian ] = "Seleziona parola";
+ SlotName[ danish ] = "Marker ord";
+ SlotName[ swedish ] = "Markera ord";
+ SlotName[ polish ] = "Zaznacz s³owo";
+ SlotName[ portuguese_brazilian ] = "WordSelect";
+ SlotName[ japanese ] = "’PŒê‚Ì‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡Ôñ×Ö";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦r";
+ SlotName[ arabic ] = "ÊÍÏíÏ ßáãÉ";
+ SlotName[ dutch ] = "Woord selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡Ôñ×Ö";
+ SlotName[ greek ] = "ÅðéëïãÞ ëÝîçò";
+ SlotName[ korean ] = "´Ü¾î ¼±ÅÃ";
+ SlotName[ turkish ] = "Sözcük seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SET_ADD_MODE
+{
+ SlotName = "Multiselektion ein";
+ SlotName [ english ] = "Multiselektion ein";
+ SlotName[ english_us ] = "MultiSelection On";
+ SlotName[ portuguese ] = "Multiselecção";
+ SlotName[ russian ] = "Âêë. ìóëüòèâûäåëåíèå";
+ SlotName[ dutch ] = "Multiselectie inschakelen";
+ SlotName[ french ] = "Mode Multisélection";
+ SlotName[ spanish ] = "Activar selección múltiple";
+ SlotName[ italian ] = "Attiva selezione multipla";
+ SlotName[ danish ] = "Aktiver multimarkering";
+ SlotName[ swedish ] = "Multipel markering på";
+ SlotName[ polish ] = "W³¹cz wielokrotn¹ selekcjê";
+ SlotName[ portuguese_brazilian ] = "SetMultiSelection";
+ SlotName[ japanese ] = "•¡”‘I‘ð@µÝ";
+ SlotName[ chinese_simplified ] = "¼¤»î¶àÖØÑ¡Ôñ";
+ SlotName[ chinese_traditional ] = "¿E¬¡¦h­«¿ï¨ú";
+ SlotName[ arabic ] = "ÊÔÛíá ÇáÊÍÏíÏ ÇáãÊÚÏÏ";
+ SlotName[ dutch ] = "Multiselectie inschakelen";
+ SlotName[ chinese_simplified ] = "¼¤»î¶àÖØÑ¡Ôñ";
+ SlotName[ greek ] = "Åíåñãïðïßçóç ðïëëáðëÞò åðéëïãÞò";
+ SlotName[ korean ] = "´ÙÁß ¼±Åà ÀÛµ¿";
+ SlotName[ turkish ] = "Çoklu seçim açýk";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SET_EXT_MODE
+{
+ SlotName = "Erweiterte Selektion ein";
+ SlotName [ english ] = "Erweiterte Selektion ein";
+ SlotName[ english_us ] = "Extended Selection On";
+ SlotName[ portuguese ] = "Selecção extensa";
+ SlotName[ russian ] = "Âêë. ðàñøèðåííîå âûäåëåíèå";
+ SlotName[ dutch ] = "Uitgebreide selectie inschakelen";
+ SlotName[ french ] = "Sélection étendue";
+ SlotName[ spanish ] = "Activar Selección Extendida";
+ SlotName[ italian ] = "Attiva selezione ampliata";
+ SlotName[ danish ] = "Aktiver udvidet markering";
+ SlotName[ swedish ] = "Utökad markering på";
+ SlotName[ polish ] = "W³¹cz rozsz. selekcjê";
+ SlotName[ portuguese_brazilian ] = "SetExtSelection";
+ SlotName[ japanese ] = "Šg’£‘I‘ð µÝ";
+ SlotName[ chinese_simplified ] = "¼¤»î¸ß¼¶Ñ¡Ôñ";
+ SlotName[ chinese_traditional ] = "¿E¬¡¶i¶¥¿ï¨ú";
+ SlotName[ arabic ] = "ÊÔÛíá ÇáÊÍÏíÏ ÇáãæÓÚ";
+ SlotName[ dutch ] = "Uitgebreide selectie inschakelen";
+ SlotName[ chinese_simplified ] = "¼¤»î¸ß¼¶Ñ¡Ôñ";
+ SlotName[ greek ] = "Åíåñãïðïßçóç åêôåôáìÝíçò åðéëïãÞò";
+ SlotName[ korean ] = "È®Àå ¼±Åà ÀÛµ¿";
+ SlotName[ turkish ] = "Ayrýntýlý seçim açýk";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SET_PAGE_STYLE
+{
+ SlotName = "Seitenvorlage zuweisen";
+ SlotName [ english ] = "Seitenvorlage zuweisen";
+ SlotName[ english_us ] = "Apply Page Style";
+ SlotName[ portuguese ] = "Aplicar estilo de página";
+ SlotName[ russian ] = "Ïðèìåíèòü ñòèëè ñòðàíèöû";
+ SlotName[ dutch ] = "Pagina-opmaakprofiel toewijzen";
+ SlotName[ french ] = "Assigner le style de page";
+ SlotName[ spanish ] = "Aplicar estilo de página";
+ SlotName[ italian ] = "Assegna modello di pagina";
+ SlotName[ danish ] = "Tildel sidetypografi";
+ SlotName[ swedish ] = "Tilldela sidformatmall";
+ SlotName[ polish ] = "Zastosuj styl strony";
+ SlotName[ portuguese_brazilian ] = "ApplyPageStyle";
+ SlotName[ japanese ] = "Íß°¼Þ½À²Ù‚Ì“K—p";
+ SlotName[ chinese_simplified ] = "ʹÓÃÒ³ÃæÑùʽ";
+ SlotName[ chinese_traditional ] = "¨Ï¥Î­¶­±¼Ë¦¡";
+ SlotName[ arabic ] = "ÊÚííä ÞÇáÈ ÇáÕÝÍÉ";
+ SlotName[ dutch ] = "Pagina-opmaakprofiel toewijzen";
+ SlotName[ chinese_simplified ] = "ʹÓÃÒ³ÃæÑùʽ";
+ SlotName[ greek ] = "ÅöáñìïãÞ ðñüôõðïõ óåëßäáò";
+ SlotName[ korean ] = "ÆäÀÌÁö À¯Çü Àû¿ë";
+ SlotName[ turkish ] = "Sayfa þablonu ata";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SET_SUB_SCRIPT
+{
+ SlotName = "Tiefgestellt";
+ SlotName [ english ] = "Tiefgestellt";
+ SlotName[ english_us ] = "Subscript";
+ SlotName[ portuguese ] = "Inferior à linha";
+ SlotName[ russian ] = "Íèæíèé èíäåêñ";
+ SlotName[ dutch ] = "Subscript";
+ SlotName[ french ] = "Indice";
+ SlotName[ spanish ] = "Subíndice";
+ SlotName[ italian ] = "Pedice";
+ SlotName[ danish ] = "Sænket";
+ SlotName[ swedish ] = "Nedsänkt";
+ SlotName[ polish ] = "Indeks dolny";
+ SlotName[ portuguese_brazilian ] = "Subscript";
+ SlotName[ japanese ] = "‰º•t‚«";
+ SlotName[ chinese_simplified ] = "챐";
+ SlotName[ chinese_traditional ] = "¤U¼Ð";
+ SlotName[ arabic ] = "ãäÎÝÖ";
+ SlotName[ dutch ] = "Subscript";
+ SlotName[ chinese_simplified ] = "챐";
+ SlotName[ greek ] = "Äåßêôçò";
+ SlotName[ korean ] = "¾Æ·¡ ÷ÀÚ";
+ SlotName[ turkish ] = "Alt simge";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SET_SUPER_SCRIPT
+{
+ SlotName = "Hochgestellt";
+ SlotName [ english ] = "Hochgestellt";
+ SlotName[ english_us ] = "Superscript";
+ SlotName[ portuguese ] = "Superior à linha";
+ SlotName[ russian ] = "Âåðõíèé èíäåêñ";
+ SlotName[ dutch ] = "Superscript";
+ SlotName[ french ] = "Exposant";
+ SlotName[ spanish ] = "Superíndice";
+ SlotName[ italian ] = "Apice";
+ SlotName[ danish ] = "Hævet";
+ SlotName[ swedish ] = "Upphöjt";
+ SlotName[ polish ] = "Indeks górny";
+ SlotName[ portuguese_brazilian ] = "Superscript";
+ SlotName[ japanese ] = "ã•t‚«";
+ SlotName[ chinese_simplified ] = "Éϱê";
+ SlotName[ chinese_traditional ] = "¤W¼Ð";
+ SlotName[ arabic ] = "ãÑÊÝÚ";
+ SlotName[ dutch ] = "Superscript";
+ SlotName[ chinese_simplified ] = "Éϱê";
+ SlotName[ greek ] = "ÅêèÝôçò";
+ SlotName[ korean ] = "À­ ÷ÀÚ";
+ SlotName[ turkish ] = "Üst simge";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SHADOWCURSOR
+{
+ SlotName = "Direkt-Cursor ein/aus";
+ SlotName [ english ] = "Direkt-Cursor ein/aus";
+ SlotName[ english_us ] = "Direct Cursor on/off";
+ SlotName[ portuguese ] = "Activar cursor directo";
+ SlotName[ russian ] = "Âêë./âûêë. ñâîáîäíûé êóðñîð";
+ SlotName[ dutch ] = "Direct-cursor aan/uit";
+ SlotName[ french ] = "(Dés)activer le curseur direct";
+ SlotName[ spanish ] = "Activar/desactivar cursor directo";
+ SlotName[ italian ] = "Cursore diretto on/off";
+ SlotName[ danish ] = "Direkt-markør til/fra";
+ SlotName[ swedish ] = "Direktmarkör på/av";
+ SlotName[ polish ] = "W³¹cz/Wy³¹cz kursor bezpoœredni";
+ SlotName[ portuguese_brazilian ] = "ShadowCursor";
+ SlotName[ japanese ] = "ÀÞ²Ú¸Ä ¶°¿Ù µÝ/µÌ";
+ SlotName[ chinese_simplified ] = "¼¤»î»òʧ»îÖ±½Ó¶¨Î»¹â±ê";
+ SlotName[ chinese_traditional ] = "¿E¬¡©Î¥¢¬¡ª½±µ©w¦ì¥ú¼Ð";
+ SlotName[ arabic ] = "ÊÔÛíá/ÅíÞÇÝ ÇáãÄÔÑ ÇáãÈÇÔÑ";
+ SlotName[ dutch ] = "Direct-cursor aan/uit";
+ SlotName[ chinese_simplified ] = "¼¤»î»òʧ»îÖ±½Ó¶¨Î»¹â±ê";
+ SlotName[ greek ] = "¢ìåóïò äñïìÝáò Íáé/¼÷é";
+ SlotName[ korean ] = "Á÷Á¢ Ä¿¼­ ÀÛµ¿/ÇØÁ¦";
+ SlotName[ turkish ] = "Serbest imleç açýk/kapalý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SHIFT_BACKSPACE
+{
+ SlotName = "Rückschritt";
+ SlotName [ english ] = "Rückschritt";
+ SlotName[ english_us ] = "Backspace";
+ SlotName[ portuguese ] = "Retrocesso";
+ SlotName[ russian ] = "Âîçâðàò";
+ SlotName[ dutch ] = "Backspace";
+ SlotName[ french ] = "RET.ARR";
+ SlotName[ spanish ] = "Retroceso";
+ SlotName[ italian ] = "Backspace";
+ SlotName[ danish ] = "Tilbage";
+ SlotName[ swedish ] = "Backsteg";
+ SlotName[ polish ] = "Wstecz";
+ SlotName[ portuguese_brazilian ] = "Backspace";
+ SlotName[ japanese ] = "ÊÞ¯¸½Íß°½";
+ SlotName[ chinese_simplified ] = "Í˸ñ";
+ SlotName[ chinese_traditional ] = "ºM®ø©R¥O";
+ SlotName[ arabic ] = "ÊÑÇÌÚ";
+ SlotName[ dutch ] = "Backspace";
+ SlotName[ chinese_simplified ] = "Í˸ñ";
+ SlotName[ greek ] = "Backspace";
+ SlotName[ korean ] = "¹é ½ºÆäÀ̽º";
+ SlotName[ turkish ] = "Geri al";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SHOW_FOUR_PAGES
+{
+ SlotName = "Seitenansicht: vier Seiten";
+ SlotName [ english ] = "Seitenansicht: vier Seiten";
+ SlotName[ english_us ] = "Page Preview: Four Pages";
+ SlotName[ portuguese ] = "Ver página: quatro páginas";
+ SlotName[ russian ] = "Ïðîñìîòð ñòðàíèöû:÷åòûðå ñòðàíèöû";
+ SlotName[ dutch ] = "Afdrukvoorbeeld: vier pagina´s";
+ SlotName[ french ] = "Aperçu : quatre pages";
+ SlotName[ spanish ] = "Vista preliminar: cuatro páginas";
+ SlotName[ italian ] = "Vista pagina: quattro pagine";
+ SlotName[ danish ] = "Vis udskrift: fire sider";
+ SlotName[ swedish ] = "Förhandsgranskning: fyra sidor";
+ SlotName[ polish ] = "Podgl¹d ustawienia strony: Cztery strony";
+ SlotName[ portuguese_brazilian ] = "ShowFourPages";
+ SlotName[ japanese ] = "4Íß°¼Þ•\\Ž¦";
+ SlotName[ chinese_simplified ] = "Ò³ÃæÊÓͼ£ºËÄÒ³";
+ SlotName[ chinese_traditional ] = "­¶­±À˵ø¡G¥|­¶";
+ SlotName[ arabic ] = "ÇáãÚÇíäÉ: ÃÑÈÚ ÕÝÍÇÊ";
+ SlotName[ dutch ] = "Afdrukvoorbeeld: vier pagina´s";
+ SlotName[ chinese_simplified ] = "Ò³ÃæÊÓͼ£ºËÄÒ³";
+ SlotName[ greek ] = "Ðñïåðéóêüðçóç óåëßäáò: ôÝóóåñéò óåëßäåò";
+ SlotName[ korean ] = "ÆäÀÌÁö ¹Ì¸®º¸±â: 4 ÆäÀÌÁö";
+ SlotName[ turkish ] = "Sayfa ön izleme: Dört sayfa";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SHOW_TWO_PAGES
+{
+ SlotName = "Seitenansicht: zwei Seiten";
+ SlotName [ english ] = "Seitenansicht: zwei Seiten";
+ SlotName[ english_us ] = "Page Preview: Two Pages";
+ SlotName[ portuguese ] = "Ver página: duas páginas";
+ SlotName[ russian ] = "Ïðîñìîòð ñòðàíèöû: äâå ñòðàíèöû";
+ SlotName[ dutch ] = "Afdrukvoorbeeld: twee pagina´s";
+ SlotName[ french ] = "Aperçu : deux pages";
+ SlotName[ spanish ] = "Vista preliminar: dos páginas";
+ SlotName[ italian ] = "Vista pagina: due pagine";
+ SlotName[ danish ] = "Vis udskrift: to sider";
+ SlotName[ swedish ] = "Förhandsgranskning: två sidor";
+ SlotName[ polish ] = "Podgl¹d ustawienia strony:Dwie strony";
+ SlotName[ portuguese_brazilian ] = "ShowTwoPages";
+ SlotName[ japanese ] = "2Íß°¼Þ•\\Ž¦";
+ SlotName[ chinese_simplified ] = "Ò³ÃæÊÓͼ£ºÁ½Ò³";
+ SlotName[ chinese_traditional ] = "­¶­±À˵ø¡G¨â­¶";
+ SlotName[ arabic ] = "ÇáãÚÇíäÉ: ÕÝÍÊÇä";
+ SlotName[ dutch ] = "Afdrukvoorbeeld: twee pagina´s";
+ SlotName[ chinese_simplified ] = "Ò³ÃæÊÓͼ£ºÁ½Ò³";
+ SlotName[ greek ] = "Ðñïåðéóêüðçóç óåëßäáò: Äýï óåëßäåò";
+ SlotName[ korean ] = "ÆäÀÌÁö ¹Ì¸®º¸±â: 2 ÆäÀÌÁö";
+ SlotName[ turkish ] = "Sayfa önizleme: Ýki sayfa";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SHRINK_FONT_SIZE
+{
+ SlotName = "Zeichen verkleinern";
+ SlotName [ english ] = "Zeichen verkleinern";
+ SlotName[ english_us ] = "Reduce Font";
+ SlotName[ portuguese ] = "Reduzir caracteres";
+ SlotName[ russian ] = "Óìåíüøèòü øðèôò";
+ SlotName[ dutch ] = "Tekens verkleinen";
+ SlotName[ french ] = "Réduire taille des caractères";
+ SlotName[ spanish ] = "Reducir fuente";
+ SlotName[ italian ] = "Riduci dim. carattere";
+ SlotName[ danish ] = "Formindsk tegn";
+ SlotName[ swedish ] = "Förminska tecken";
+ SlotName[ polish ] = "Pomniejsz znaki";
+ SlotName[ portuguese_brazilian ] = "ShrinkCharacterSize";
+ SlotName[ japanese ] = "•¶Žš‚Ìk¬";
+ SlotName[ chinese_simplified ] = "ËõС×Ö·û";
+ SlotName[ chinese_traditional ] = "ÁY¤p¦r¤¸";
+ SlotName[ arabic ] = "ÊÕÛíÑ ÇáÎØ";
+ SlotName[ dutch ] = "Tekens verkleinen";
+ SlotName[ chinese_simplified ] = "ËõС×Ö·û";
+ SlotName[ greek ] = "Óìßêñõíóç ÷áñáêôÞñùí";
+ SlotName[ korean ] = "ÆùÆ® ÁÙÀ̱â";
+ SlotName[ turkish ] = "Yazýtipini küçült";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SORTING_DLG
+{
+ SlotName = "Sortieren";
+ SlotName [ english ] = "Sortieren";
+ SlotName[ english_us ] = "Sort";
+ SlotName[ portuguese ] = "Ordenar";
+ SlotName[ russian ] = "Ñîðòèðîâàòü";
+ SlotName[ dutch ] = "Sorteren";
+ SlotName[ french ] = "Trier";
+ SlotName[ spanish ] = "Ordenar";
+ SlotName[ italian ] = "Ordina";
+ SlotName[ danish ] = "Sorter";
+ SlotName[ swedish ] = "Sortera";
+ SlotName[ polish ] = "Sortuj";
+ SlotName[ portuguese_brazilian ] = "ToolsSort";
+ SlotName[ japanese ] = "•À‚בւ¦";
+ SlotName[ chinese_simplified ] = "ÅÅÐò";
+ SlotName[ chinese_traditional ] = "±Æ§Ç";
+ SlotName[ arabic ] = "ÝÑÒ";
+ SlotName[ dutch ] = "Sorteren";
+ SlotName[ chinese_simplified ] = "ÅÅÐò";
+ SlotName[ greek ] = "Ôáîéíüìçóç";
+ SlotName[ korean ] = "Á¤·Ä";
+ SlotName[ turkish ] = "Sýrala";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SOURCEVIEW
+{
+ SlotName = "HTML-Quelltext anzeigen";
+ SlotName [ english ] = "HTML-Quelltext anzeigen";
+ SlotName[ english_us ] = "Show HTML Source";
+ SlotName[ portuguese ] = "Mostrar texto-fonte HTML";
+ SlotName[ russian ] = "Ïîêàçàòü èñõîäíûé òåêñò HTML";
+ SlotName[ dutch ] = "HTML-brontekst weergeven";
+ SlotName[ french ] = "Afficher le texte source HTML";
+ SlotName[ spanish ] = "Mostrar texto fuente HTML";
+ SlotName[ italian ] = "Mostra testo sorgente HTML";
+ SlotName[ danish ] = "Vis HTML-kildetekst";
+ SlotName[ swedish ] = "Visa HTML-källtext";
+ SlotName[ polish ] = "Poka¿ tekst Ÿród³owy HTML";
+ SlotName[ portuguese_brazilian ] = "FileHtmlSourceText";
+ SlotName[ japanese ] = "HTML¿°½‚Ì•\\Ž¦";
+ SlotName[ chinese_simplified ] = "ÏÔʾ HTML Ô´Îı¾";
+ SlotName[ chinese_traditional ] = "Åã¥Ü HTML-­ì©lÀÉ";
+ SlotName[ arabic ] = "ÅÙåÇÑ ãÕÏÑ HTML";
+ SlotName[ dutch ] = "HTML-brontekst weergeven";
+ SlotName[ chinese_simplified ] = "ÏÔʾ HTML Ô´Îı¾";
+ SlotName[ greek ] = "ÅìöÜíéóç êåéìÝíïõ ðñïÝëåõóçò HTML";
+ SlotName[ korean ] = "HTML ¼Ò½º º¸À̱â";
+ SlotName[ turkish ] = "HTML kaynak kodunu görüntüle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_SPELLING_DLG
+{
+ SlotName = "Rechtschreibung";
+ SlotName [ english ] = "Rechtschreibung";
+ SlotName[ english_us ] = "Spellcheck";
+ SlotName[ portuguese ] = "Ortografia";
+ SlotName[ russian ] = "Ïðàâîïèñàíèå";
+ SlotName[ dutch ] = "Spelling";
+ SlotName[ french ] = "Orthographe";
+ SlotName[ spanish ] = "Revisión ortográfica";
+ SlotName[ italian ] = "Controllo ortografico ";
+ SlotName[ danish ] = "Stavekontrol";
+ SlotName[ swedish ] = "Rättstavning";
+ SlotName[ polish ] = "Pisownia";
+ SlotName[ portuguese_brazilian ] = "Spelling";
+ SlotName[ japanese ] = "•¶ÍZ³";
+ SlotName[ chinese_simplified ] = "Õý×Ö·¨";
+ SlotName[ chinese_traditional ] = "«÷¦r";
+ SlotName[ arabic ] = "ÊÏÞíÞ ÅãáÇÆí";
+ SlotName[ dutch ] = "Spelling";
+ SlotName[ chinese_simplified ] = "Õý×Ö·¨";
+ SlotName[ greek ] = "Ïñèïãñáößá";
+ SlotName[ korean ] = "¸ÂÃã¹ý";
+ SlotName[ turkish ] = "Yazým";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_DOC_DIRECT
+{
+ SlotName = "Direkt zum Dokumentanfang";
+ SlotName [ english ] = "Direkt zum Dokumentanfang";
+ SlotName[ english_us ] = "Directly to Document Begin";
+ SlotName[ portuguese ] = "Directamente para início do documento";
+ SlotName[ russian ] = "Íåïîñðåäñòâåííî äî íà÷àëà äîêóìåíòà";
+ SlotName[ dutch ] = "Direct naar documentbegin";
+ SlotName[ french ] = "Au début du document";
+ SlotName[ spanish ] = "Directo al comienzo del documento";
+ SlotName[ italian ] = "Direttamente all'inizio del documento";
+ SlotName[ danish ] = "Direkte til dokumentets begyndelse";
+ SlotName[ swedish ] = "Direkt till början av dokumentet";
+ SlotName[ polish ] = "Bezpoœrednio do pocz¹tku dokumentu";
+ SlotName[ portuguese_brazilian ] = "BeginDocument";
+ SlotName[ japanese ] = "’¼Ú•¶‘‚ÌŽn‚ß‚Ö";
+ SlotName[ chinese_simplified ] = "Ö±½Óתµ½ÎĵµÊ׶Ë";
+ SlotName[ chinese_traditional ] = "ª½±µÂà¨ì¤å¥ó­ººÝ";
+ SlotName[ arabic ] = "Åáì ÈÏÇíÉ ÇáãÓÊäÏ ãÈÇÔÑÉ";
+ SlotName[ dutch ] = "Direct naar documentbegin";
+ SlotName[ chinese_simplified ] = "Ö±½Óתµ½ÎĵµÊ׶Ë";
+ SlotName[ greek ] = "Áðåõèåßáò ðñïò ôçí áñ÷Þ ôïõ åããñÜöïõ";
+ SlotName[ korean ] = "¹®¼­ ½ÃÀÛ¿¡ ¹Ù·Î";
+ SlotName[ turkish ] = "Doðrudan belgenin baþlangýcý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_COLUMN
+{
+ SlotName = "Zum Spaltenanfang";
+ SlotName [ english ] = "Zum Spaltenanfang";
+ SlotName[ english_us ] = "To Column Begin";
+ SlotName[ portuguese ] = "Ir para início de coluna";
+ SlotName[ russian ] = "Äî íà÷àëà ñòîëáöà";
+ SlotName[ dutch ] = "Naar kolombegin";
+ SlotName[ french ] = "Aller au début de la colonne";
+ SlotName[ spanish ] = "Ir al comienzo de la columna";
+ SlotName[ italian ] = "All'inizio della colonna";
+ SlotName[ danish ] = "Til kolonnens begyndelse";
+ SlotName[ swedish ] = "Till början av kolumnen";
+ SlotName[ polish ] = "Do pocz¹tku kolumny";
+ SlotName[ portuguese_brazilian ] = "GoToBeginOfColumn";
+ SlotName[ japanese ] = "—ñ‚ÌŽn‚ß‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÁÐÊ×";
+ SlotName[ chinese_traditional ] = "Âà¨ìÄæ­º";
+ SlotName[ arabic ] = "Åáì ÈÏÇíÉ ÇáÚãæÏ";
+ SlotName[ dutch ] = "Naar kolombegin";
+ SlotName[ chinese_simplified ] = "תµ½ÁÐÊ×";
+ SlotName[ greek ] = "Ðñïò ôçí áñ÷Þ ôçò óôÞëçò";
+ SlotName[ korean ] = "¿­ ½ÃÀÛ¿¡";
+ SlotName[ turkish ] = "Sütun baþlangýcý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_DOCUMENT
+{
+ SlotName = "Zum Dokumentanfang";
+ SlotName [ english ] = "Zum Dokumentanfang";
+ SlotName[ english_us ] = "To Document Begin";
+ SlotName[ portuguese ] = "Ir para início do documento";
+ SlotName[ russian ] = "Ê íà÷àëó äîêóìåíòà";
+ SlotName[ dutch ] = "Naar begin document";
+ SlotName[ french ] = "Au début du document";
+ SlotName[ spanish ] = "Al comienzo del documento";
+ SlotName[ italian ] = "All'inizio del documento";
+ SlotName[ danish ] = "Til dokumentets begyndelse";
+ SlotName[ swedish ] = "Till början av dokument";
+ SlotName[ polish ] = "Do pocz¹tku dokumentu";
+ SlotName[ portuguese_brazilian ] = "GoToStartOfDoc";
+ SlotName[ japanese ] = "•¶‘‚ÌŽn‚ß‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÎĵµÊ׶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤å¥ó­ººÝ";
+ SlotName[ arabic ] = "Åáì ÈÏÇíÉ ÇáãÓÊäÏ";
+ SlotName[ dutch ] = "Naar begin document";
+ SlotName[ chinese_simplified ] = "תµ½ÎĵµÊ׶Ë";
+ SlotName[ greek ] = "Ðñïò ôçí áñ÷Þ ôïõ åããñÜöïõ";
+ SlotName[ korean ] = "¹®¼­ÀÇ ½ÃÀÛ¿¡";
+ SlotName[ turkish ] = "Belgenin baþlangýcý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_DOCUMENT_SEL
+{
+ SlotName = "Bis Dokumentanfang selektieren";
+ SlotName [ english ] = "Bis Dokumentanfang selektieren";
+ SlotName[ english_us ] = "Select to Document Begin";
+ SlotName[ portuguese ] = "Seleccionar até início do documento";
+ SlotName[ russian ] = "Âûäåëèòü äî íà÷àëà äîêóìåíòà";
+ SlotName[ dutch ] = "Tot aan begin document selecteren";
+ SlotName[ french ] = "Sélectionner jusqu'au début du document";
+ SlotName[ spanish ] = "Seleccionar hasta el comienzo del documento";
+ SlotName[ italian ] = "Seleziona fino all'inizio del documento";
+ SlotName[ danish ] = "Marker til dokumentets begyndelse";
+ SlotName[ swedish ] = "Markera till början av dokument";
+ SlotName[ polish ] = "Zaznacz do pocz¹tku dokumentu";
+ SlotName[ portuguese_brazilian ] = "BeginDocumentSel";
+ SlotName[ japanese ] = "•¶‘‚ÌŽn‚ß‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÖÐÖÁÎĵµÊ׶Ë";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¤å¥ó­ººÝ";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÈÏÇíÉ ÇáãÓÊäÏ";
+ SlotName[ dutch ] = "Tot aan begin document selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÖÐÖÁÎĵµÊ׶Ë";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôçí áñ÷Þ ôïõ åããñÜöïõ";
+ SlotName[ korean ] = "¹®¼­ ½ÃÀÛ¿¡ ¼±ÅÃ";
+ SlotName[ turkish ] = "Belgenin baþlangýcýna kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_LINE
+{
+ SlotName = "Zum Zeilenanfang";
+ SlotName [ english ] = "Zum Zeilenanfang";
+ SlotName[ english_us ] = "To Line Begin";
+ SlotName[ portuguese ] = "Ir para início da linha";
+ SlotName[ russian ] = "Äî íà÷àëà ñòðîêè";
+ SlotName[ dutch ] = "Naar begin regel";
+ SlotName[ french ] = "Aller au début de ligne";
+ SlotName[ spanish ] = "Ir al comienzo de la línea";
+ SlotName[ italian ] = "All'inizio riga";
+ SlotName[ danish ] = "Til rækkens begyndelse";
+ SlotName[ swedish ] = "Till början av rad";
+ SlotName[ polish ] = "Do pocz¹tku wiersza";
+ SlotName[ portuguese_brazilian ] = "GoToStartOfLine";
+ SlotName[ japanese ] = "s“ª‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÐÐÊ×";
+ SlotName[ chinese_traditional ] = "Âà¨ì¦æ­º";
+ SlotName[ arabic ] = "Åáì ÈÏÇíÉ ÇáÓØÑ";
+ SlotName[ dutch ] = "Naar begin regel";
+ SlotName[ chinese_simplified ] = "תµ½ÐÐÊ×";
+ SlotName[ greek ] = "Ðñïò ôçí áñ÷Þ ôçò ãñáììÞò";
+ SlotName[ korean ] = "¼± ½ÃÀÛ¿¡";
+ SlotName[ turkish ] = "Satýr baþý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_LINE_SEL
+{
+ SlotName = "Bis Zeilenanfang selektieren";
+ SlotName [ english ] = "Bis Zeilenanfang selektieren";
+ SlotName[ english_us ] = "Select to Begin of Line";
+ SlotName[ portuguese ] = "Seleccionar até início da linha";
+ SlotName[ russian ] = "Âûäåëèòü äî íà÷àëà ñòðîêè";
+ SlotName[ dutch ] = "Tot regelbegin selecteren";
+ SlotName[ french ] = "Sélect. jusqu'au début de ligne";
+ SlotName[ spanish ] = "Seleccionar hasta el comienzo de la línea";
+ SlotName[ italian ] = "Seleziona fino all'inizio della riga";
+ SlotName[ danish ] = "Marker til rækkens begyndelse";
+ SlotName[ swedish ] = "Markera till början av rad";
+ SlotName[ polish ] = "Zaznacz do pocz¹tku wiersza";
+ SlotName[ portuguese_brazilian ] = "BeginLineSel";
+ SlotName[ japanese ] = "s“ª‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡Ôñµ½ÐÐÊ×";
+ SlotName[ chinese_traditional ] = "¿ï¾Ü¨ì¦æ­º";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÈÏÇíÉ ÇáÓØÑ";
+ SlotName[ dutch ] = "Tot regelbegin selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡Ôñµ½ÐÐÊ×";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôçí áñ÷Þ ôçò ãñáììÞò";
+ SlotName[ korean ] = "¼±ÀÇ ½ÃÀÛ¿¡ ¼±ÅÃ";
+ SlotName[ turkish ] = "Satýr baþýna kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_NEXT_COLUMN
+{
+ SlotName = "Zum Anfang nächste Spalte";
+ SlotName [ english ] = "Zum Anfang nächste Spalte";
+ SlotName[ english_us ] = "To Begin of Next Column";
+ SlotName[ portuguese ] = "Ir para início da coluna seguinte";
+ SlotName[ russian ] = "Äî íà÷àëà ñëåäóþùåãî ñòîëáöà";
+ SlotName[ dutch ] = "Naar begin volgende kolom";
+ SlotName[ french ] = "Aller au début de la colonne suivante";
+ SlotName[ spanish ] = "Ir al comienzo de la columna siguiente ";
+ SlotName[ italian ] = "All'inizio della colonna successiva";
+ SlotName[ danish ] = "Til næste kolonnes begyndelse";
+ SlotName[ swedish ] = "Till början av nästa kolumn";
+ SlotName[ polish ] = "Do pocz¹tku nastêpnej kolumny";
+ SlotName[ portuguese_brazilian ] = "GoToBeginOfNextColumn";
+ SlotName[ japanese ] = "ŽŸ‚Ì—ñ‚ÌŽn‚ß‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»ÁеÄÊ׶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@Äæ";
+ SlotName[ arabic ] = "Åáì ÈÏÇíÉ ÇáÚãæÏ ÇáÊÇáí";
+ SlotName[ dutch ] = "Naar begin volgende kolom";
+ SlotName[ chinese_simplified ] = "תµ½ÏÂÒ»ÁеÄÊ׶Ë";
+ SlotName[ greek ] = "Ðñïò áñ÷Þ åðüìåíçò óôÞëçò";
+ SlotName[ korean ] = "´ÙÀ½ ¿­¿¡ ½ÃÀÛ¿¡";
+ SlotName[ turkish ] = "Sonraki sütunun baþlangýcý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_NEXT_PAGE
+{
+ SlotName = "Zum Anfang nächste Seite";
+ SlotName [ english ] = "Zum Anfang nächste Seite";
+ SlotName[ english_us ] = "To Begin of Next Page";
+ SlotName[ portuguese ] = "Ir para início da página seguinte";
+ SlotName[ russian ] = "Äî íà÷àëà ñëåäóþùåé ñòðàíèöû";
+ SlotName[ dutch ] = "Naar begin volgende pagina";
+ SlotName[ french ] = "Aller au début de la page suivante";
+ SlotName[ spanish ] = "Ir al comienzo de la página siguiente";
+ SlotName[ italian ] = "All'inizio della pagina successiva";
+ SlotName[ danish ] = "Til næste sides begyndelse";
+ SlotName[ swedish ] = "Till början av nästa sida";
+ SlotName[ polish ] = "Na pocz¹tek nastêpnej strony";
+ SlotName[ portuguese_brazilian ] = "GoToBeginOfNextPage";
+ SlotName[ japanese ] = "ŽŸÍß°¼Þ‚ÌŽn‚ß‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½Ï¸öÒ³ÃæµÄÊ׶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤U¤@­¶­º";
+ SlotName[ arabic ] = "Åáì ÈÏÇíÉ ÇáÕÝÍÉ ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Naar begin volgende pagina";
+ SlotName[ chinese_simplified ] = "תµ½Ï¸öÒ³ÃæµÄÊ׶Ë";
+ SlotName[ greek ] = "Ðñïò ôçí áñ÷Þ ôçò åðüìåíçò óåëßäáò";
+ SlotName[ korean ] = "´ÙÀ½ ÆäÀÌÁöÀÇ ½ÃÀÛ¿¡";
+ SlotName[ turkish ] = "Sonraki sayfanýn baþlangýcý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_NEXT_PAGE_SEL
+{
+ SlotName = "Bis Anfang nächste Seite selektieren";
+ SlotName [ english ] = "Bis Anfang nächste Seite selektieren";
+ SlotName[ english_us ] = "Select to Begin of Next Page";
+ SlotName[ portuguese ] = "Seleccionar até início da página seguinte";
+ SlotName[ russian ] = "Âûäåëèòü äî íà÷àëà ñëåäóþùåé ñòðàíèöû";
+ SlotName[ dutch ] = "Tot aan begin volgende pagina selecteren";
+ SlotName[ french ] = "Sélect. jusqu'au début de la page suivante";
+ SlotName[ spanish ] = "Seleccionar hasta comienzo de la página siguiente";
+ SlotName[ italian ] = "Seleziona fino all'inizio della pagina successiva";
+ SlotName[ danish ] = "Marker til næste sides begyndelse";
+ SlotName[ swedish ] = "Markera till början av nästa sida";
+ SlotName[ polish ] = "Zaznacz do pocz¹tku nastêpnej strony";
+ SlotName[ portuguese_brazilian ] = "GoToBeginOfNextPageSel";
+ SlotName[ japanese ] = "ŽŸÍß°¼Þ‚ÌŽn‚ß‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÏÂÒ³Ê׶Ë";
+ SlotName[ chinese_traditional ] = "¿ï¤¤¦Ü¤U¤@­¶­º";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÈÏÇíÉ ÇáÕÝÍÉ ÇáÊÇáíÉ";
+ SlotName[ dutch ] = "Tot aan begin volgende pagina selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÏÂÒ³Ê׶Ë";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôçí áñ÷Þ ôçò åðüìåíçò óåëßäáò";
+ SlotName[ korean ] = "´ÙÀ½ ÆäÀÌÁö ½ÃÀÛ¿¡ ¼±ÅÃ";
+ SlotName[ turkish ] = "Sonraki sayfanýn baþlangýcýna kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_PAGE
+{
+ SlotName = "Zum Seitenanfang";
+ SlotName [ english ] = "Zum Seitenanfang";
+ SlotName[ english_us ] = "To Page Begin";
+ SlotName[ portuguese ] = "Ir para início da página";
+ SlotName[ russian ] = "Äî íà÷àëà ñòðàíèöû";
+ SlotName[ dutch ] = "Naar begin pagina";
+ SlotName[ french ] = "Aller au début de la page";
+ SlotName[ spanish ] = "Ir al comienzo de la página";
+ SlotName[ italian ] = "All'inizio pagina";
+ SlotName[ danish ] = "Til sidens begyndelse";
+ SlotName[ swedish ] = "Till början av sidan";
+ SlotName[ polish ] = "Na pocz¹tek strony";
+ SlotName[ portuguese_brazilian ] = "GoToBeginOfPage";
+ SlotName[ japanese ] = "Íß°¼Þ‚ÌŽn‚ß‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½Ò³Ê×";
+ SlotName[ chinese_traditional ] = "Âà¨ì­¶­º";
+ SlotName[ arabic ] = "Åáì ÈÏÇíÉ ÇáÕÝÍÉ";
+ SlotName[ dutch ] = "Naar begin pagina";
+ SlotName[ chinese_simplified ] = "תµ½Ò³Ê×";
+ SlotName[ greek ] = "Ðñïò ôçí áñ÷Þ ôçò óåëßäáò";
+ SlotName[ korean ] = "ÆäÀÌÁö ½ÃÀÛ¿¡";
+ SlotName[ turkish ] = "Sayfa baþlangýcý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_PAGE_SEL
+{
+ SlotName = "Bis Seitenanfang selektieren";
+ SlotName [ english ] = "Bis Seitenanfang selektieren";
+ SlotName[ english_us ] = "Select to Page Begin";
+ SlotName[ portuguese ] = "Seleccionar até início da página";
+ SlotName[ russian ] = "Âûäåëèòü äî íà÷àëà ñòðàíèöû";
+ SlotName[ dutch ] = "Tot aan paginabegin selecteren";
+ SlotName[ french ] = "Sélect. jusqu'au début de la page";
+ SlotName[ spanish ] = "Seleccionar hasta el comienzo de la página";
+ SlotName[ italian ] = "Seleziona fino all'inizio della pagina";
+ SlotName[ danish ] = "Marker til sidens begyndelse";
+ SlotName[ swedish ] = "Markera till början av sidan";
+ SlotName[ polish ] = "Zaznacz do pocz¹tku strony";
+ SlotName[ portuguese_brazilian ] = "GoToBeginOfPageSel";
+ SlotName[ japanese ] = "Íß°¼Þ‚ÌŽn‚ß‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÒ³Ê×";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü­¶­º";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÈÏÇíÉ ÇáÕÝÍÉ";
+ SlotName[ dutch ] = "Tot aan paginabegin selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÒ³Ê×";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôçí áñ÷Þ ôçò óåëßäáò";
+ SlotName[ korean ] = "ÆäÀÌÁö ½ÃÀÛ¿¡ ¼±ÅÃ";
+ SlotName[ turkish ] = "Sayfanýn baþlangýcýna kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_PARA
+{
+ SlotName = "Zum Absatzanfang";
+ SlotName [ english ] = "Zum Absatzanfang";
+ SlotName[ english_us ] = "To Paragraph Begin";
+ SlotName[ portuguese ] = "Ir para início do parágrafo";
+ SlotName[ russian ] = "Äî íà÷àëà àáçàöà";
+ SlotName[ dutch ] = "Naar begin alinea";
+ SlotName[ french ] = "Au début du paragraphe";
+ SlotName[ spanish ] = "Ir al comienzo del párrafo";
+ SlotName[ italian ] = "All'inizio del paragrafo";
+ SlotName[ danish ] = "Til afsnittets begyndelse";
+ SlotName[ swedish ] = "Till början av stycket";
+ SlotName[ polish ] = "Na pocz¹tek akapitu";
+ SlotName[ portuguese_brazilian ] = "GoToStartOfPara";
+ SlotName[ japanese ] = "’i—Ž‚ÌŽn‚ß‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½¶ÎÂäÊ׶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ì¬q¸¨­ººÝ";
+ SlotName[ arabic ] = "Åáì ÈÏÇíÉ ÇáÝÞÑÉ";
+ SlotName[ dutch ] = "Naar begin alinea";
+ SlotName[ chinese_simplified ] = "תµ½¶ÎÂäÊ׶Ë";
+ SlotName[ greek ] = "Ðñïò ôçí áñ÷Þ ôçò ðáñáãñÜöïõ";
+ SlotName[ korean ] = "´Ü¶ô ½ÃÀÛÀ¸·Î";
+ SlotName[ turkish ] = "Paragraf baþlangýcý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_PARA_SEL
+{
+ SlotName = "Bis Absatzanfang selektieren";
+ SlotName [ english ] = "Bis Absatzanfang selektieren";
+ SlotName[ english_us ] = "Select to Paragraph Begin";
+ SlotName[ portuguese ] = "Seleccionar até início do parágrafo";
+ SlotName[ russian ] = "Âûäåëèòü äî íà÷àëà àáçàöà";
+ SlotName[ dutch ] = "Tot aan begin alinea selecteren";
+ SlotName[ french ] = "Sélect. jusqu'au début du paragraphe";
+ SlotName[ spanish ] = "Seleccionar hasta el comienzo del párrafo";
+ SlotName[ italian ] = "Selezioni fini all'inizio del parametro";
+ SlotName[ danish ] = "Marker til afsnittets begyndelse";
+ SlotName[ swedish ] = "Markera till början av stycke";
+ SlotName[ polish ] = "Zaznacz do pocz¹tku akapitu";
+ SlotName[ portuguese_brazilian ] = "BeginParagraphSel";
+ SlotName[ japanese ] = "’i—Ž‚ÌŽn‚ß‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁ¶ÎÂäÊ׶Ë";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¬q¸¨­ººÝ";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÈÏÇíÉ ÇáÝÞÑÉ";
+ SlotName[ dutch ] = "Tot aan begin alinea selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁ¶ÎÂäÊ׶Ë";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôçí áñ÷Þ ôçò ðáñáãñÜöïõ";
+ SlotName[ korean ] = "´Ü¶ô ½ÃÀÛ¿¡ ¼±ÅÃ";
+ SlotName[ turkish ] = "Paragraf baþlangýcýna kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_PREV_COLUMN
+{
+ SlotName = "Zum Anfang vorheriger Spalte";
+ SlotName [ english ] = "Zum Anfang vorheriger Spalte";
+ SlotName[ english_us ] = "To Begin of Previous Column";
+ SlotName[ portuguese ] = "Ir para início da coluna anterior";
+ SlotName[ russian ] = "Äî íà÷àëà ïðåäûäóùåãî ñòîëáöà";
+ SlotName[ dutch ] = "Naar begin vorige kolom";
+ SlotName[ french ] = "Au début de la colonne précédente";
+ SlotName[ spanish ] = "Ir al comienzo de la columna anterior";
+ SlotName[ italian ] = "All'inizio della colonna precedente";
+ SlotName[ danish ] = "Til forrige kolonnes begyndelse";
+ SlotName[ swedish ] = "Till början av föregående kolumn";
+ SlotName[ polish ] = "Na pocz¹tek poprzedniej kolumny";
+ SlotName[ portuguese_brazilian ] = "GoToBeginOfPrevColumn";
+ SlotName[ japanese ] = "‘O‚Ì—ñ‚ÌŽn‚ß‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»ÁÐÊ׶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@Äæ­ººÝ";
+ SlotName[ arabic ] = "Åáì ÈÏÇíÉ ÇáÚãæÏ ÇáÓÇÈÞ";
+ SlotName[ dutch ] = "Naar begin vorige kolom";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»ÁÐÊ׶Ë";
+ SlotName[ greek ] = "Ðñïò ôçí áñ÷Þ ôçò ðñïçãïýìåíçò óôÞëçò";
+ SlotName[ korean ] = "ÀÌÀü ¿­ÀÇ ½ÃÀÛÀ¸·Î";
+ SlotName[ turkish ] = "Önceki sütunun baþlangýcý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_PREV_PAGE
+{
+ SlotName = "Zum Anfang vorheriger Seite";
+ SlotName [ english ] = "Zum Anfang vorheriger Seite";
+ SlotName[ english_us ] = "To Begin of Previous Page";
+ SlotName[ portuguese ] = "Ir para início da página anterior";
+ SlotName[ russian ] = "Äî íà÷àëà ïðåäûäóùåé ñòðàíèöû";
+ SlotName[ dutch ] = "Naar begin vorige pagina";
+ SlotName[ french ] = "Au début de la page précédente";
+ SlotName[ spanish ] = "Ir al comienzo de página anterior";
+ SlotName[ italian ] = "All'inizio della pagina precedente";
+ SlotName[ danish ] = "Til forrige sides begyndelse";
+ SlotName[ swedish ] = "Till början av föregående sida";
+ SlotName[ polish ] = "Na pocz¹tek poprzedniej strony";
+ SlotName[ portuguese_brazilian ] = "GoToBeginOfPrevPage";
+ SlotName[ japanese ] = "‘OÍß°¼Þ‚ÌŽn‚ß‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»Ò³Ê׶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ì¤W¤@­¶­º";
+ SlotName[ arabic ] = "Åáì ÈÏÇíÉ ÇáÕÝÍÉ ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Naar begin vorige pagina";
+ SlotName[ chinese_simplified ] = "תµ½ÉÏÒ»Ò³Ê׶Ë";
+ SlotName[ greek ] = "Ðñïò áñ÷Þ ðñïçãïýìåíçò óåëßäáò";
+ SlotName[ korean ] = "ÀÌÀü ÆäÀÌÁöÀÇ ½ÃÀÛÀ¸·Î";
+ SlotName[ turkish ] = "Önceki sayfanýn baþlangýcý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_OF_PREV_PAGE_SEL
+{
+ SlotName = "Bis Anfang vorheriger Seite selektieren";
+ SlotName [ english ] = "Bis Anfang vorheriger Seite selektieren";
+ SlotName[ english_us ] = "Select to Begin of Previous Page";
+ SlotName[ portuguese ] = "Seleccionar até início da página anterior";
+ SlotName[ russian ] = "Âûäåëèòü äî íà÷àëà ïðåäûäóùåé ñòðàíèöû";
+ SlotName[ dutch ] = "Tot begin vorige pagina selecteren";
+ SlotName[ french ] = "Sélect. jusqu'au début de la page précédente";
+ SlotName[ spanish ] = "Seleccionar hasta el comienzo de la página anterior";
+ SlotName[ italian ] = "Seleziona fino all'inizio della pagina precedente";
+ SlotName[ danish ] = "Marker til forrige sides begyndelse";
+ SlotName[ swedish ] = "Markera till början av föregående sida";
+ SlotName[ polish ] = "Zaznacz do pocz¹tku poprzedniej strony";
+ SlotName[ portuguese_brazilian ] = "GoToBeginOfPrevPageSel";
+ SlotName[ japanese ] = "‘OÍß°¼Þ‚ÌŽn‚ß‚Ü‚Å‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÉÏÒ»Ò³Ê׶Ë";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦Ü¤W¤@­¶­º";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÍÊì ÈÏÇíÉ ÇáÕÝÍÉ ÇáÓÇÈÞÉ";
+ SlotName[ dutch ] = "Tot begin vorige pagina selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÖÁÉÏÒ»Ò³Ê׶Ë";
+ SlotName[ greek ] = "ÅðéëïãÞ Ýùò ôçí áñ÷Þ ôçò ðñïçãïýìåíçò óåëßäáò";
+ SlotName[ korean ] = "ÀÌÀü ÆäÀÌÁöÀÇ ½ÃÀÛ ¼±ÅÃ";
+ SlotName[ turkish ] = "Önceki sayfanýn baþlangýcýna kadar seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_START_TABLE
+{
+ SlotName = "Zum Tabellenanfang";
+ SlotName [ english ] = "Zum Tabellenanfang";
+ SlotName[ english_us ] = "To Table Begin";
+ SlotName[ portuguese ] = "Ir para início da tabela";
+ SlotName[ russian ] = "Äî íà÷àëà òàáëèöû";
+ SlotName[ dutch ] = "Naar tabelbegin";
+ SlotName[ french ] = "Au début du tableau";
+ SlotName[ spanish ] = "Ir al comienzo de la tabla";
+ SlotName[ italian ] = "All'inizio della tabella";
+ SlotName[ danish ] = "Til tabellens begyndelse";
+ SlotName[ swedish ] = "Till början av tabell";
+ SlotName[ polish ] = "Na pocz¹tek tabeli";
+ SlotName[ portuguese_brazilian ] = "GoToBeginOfTable";
+ SlotName[ japanese ] = "•\\‚ÌŽn‚ß‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½±í¸ñÊ׶Ë";
+ SlotName[ chinese_traditional ] = "Âà¨ìªí®æ­ººÝ";
+ SlotName[ arabic ] = "Åáì ÈÏÇíÉ ÇáÌÏæá";
+ SlotName[ dutch ] = "Naar tabelbegin";
+ SlotName[ chinese_simplified ] = "תµ½±í¸ñÊ׶Ë";
+ SlotName[ greek ] = "Ðñïò ôçí áñ÷Þ ôïõ ðßíáêá";
+ SlotName[ korean ] = "Ç¥ ½ÃÀÛ¿¡";
+ SlotName[ turkish ] = "Tablo baþlangýcý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_STAT_HYPERLINKS
+{
+ SlotName = "Hyperlinks aktiv";
+ SlotName [ english ] = "Hyperlinks aktiv";
+ SlotName[ english_us ] = "Hyperlinks Active";
+ SlotName[ portuguese ] = "Activar hiperligações";
+ SlotName[ russian ] = "Àêòèâíûå ãèïåðññûëêè ";
+ SlotName[ dutch ] = "Hyperlinks actief";
+ SlotName[ french ] = "Activer hyperliens";
+ SlotName[ spanish ] = "Activar Hiperenlaces";
+ SlotName[ italian ] = "Hyperlink attivi";
+ SlotName[ danish ] = "Hyperlinks aktive";
+ SlotName[ swedish ] = "Hyperlänkar aktiva";
+ SlotName[ polish ] = "Aktywne hiper³¹cza";
+ SlotName[ portuguese_brazilian ] = "ExecHyperlinks";
+ SlotName[ japanese ] = "ʲÊß°Øݸ µÝ";
+ SlotName[ chinese_simplified ] = "¼¤»î³¬Á´½Ó";
+ SlotName[ chinese_traditional ] = "¿E¬¡¶W³sµ²";
+ SlotName[ arabic ] = "ÇÑÊÈÇØÇÊ ÊÔÚÈíÉ äÔØÉ";
+ SlotName[ dutch ] = "Hyperlinks actief";
+ SlotName[ chinese_simplified ] = "¼¤»î³¬Á´½Ó";
+ SlotName[ greek ] = "Åíåñãïðïßçóç õðåñ-óýíäåóçò";
+ SlotName[ korean ] = "ÇÏÀÌÆÛ ¸µÅ© È°¼ºÈ­";
+ SlotName[ turkish ] = "Hyperlink'ler etkin";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_STAT_PAGE
+{
+ SlotName = "Seitennummer";
+ SlotName [ english ] = "Seitennummer";
+ SlotName[ english_us ] = "Page Number";
+ SlotName[ portuguese ] = "Número de página";
+ SlotName[ russian ] = "Íîìåð ñòðàíèöû";
+ SlotName[ dutch ] = "Paginanummer";
+ SlotName[ french ] = "Numéro de page";
+ SlotName[ spanish ] = "Número de página";
+ SlotName[ italian ] = "Numero di pagina";
+ SlotName[ danish ] = "Sidetal";
+ SlotName[ swedish ] = "Sidnummer";
+ SlotName[ polish ] = "Numer strony";
+ SlotName[ portuguese_brazilian ] = "StatePageNumber";
+ SlotName[ japanese ] = "Íß°¼Þ”Ô†";
+ SlotName[ chinese_simplified ] = "Ò³Âë";
+ SlotName[ chinese_traditional ] = "­¶­±¸¹½X";
+ SlotName[ arabic ] = "ÑÞã ÇáÕÝÍÉ";
+ SlotName[ dutch ] = "Paginanummer";
+ SlotName[ chinese_simplified ] = "Ò³Âë";
+ SlotName[ greek ] = "Áñéèìüò óåëßäáò";
+ SlotName[ korean ] = "ÆäÀÌÁö ¹øÈ£";
+ SlotName[ turkish ] = "Sayfa numarasý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_STAT_SELMODE
+{
+ SlotName = "Selektionsmodus";
+ SlotName [ english ] = "Selektionsmodus";
+ SlotName[ english_us ] = "Selection Mode";
+ SlotName[ portuguese ] = "Modo de selecção";
+ SlotName[ russian ] = "Ðåæèì âûäåëåíèÿ";
+ SlotName[ dutch ] = "Selectiemodus";
+ SlotName[ french ] = "Mode Sélection";
+ SlotName[ spanish ] = "Modo Selección";
+ SlotName[ italian ] = "Modo selezione";
+ SlotName[ danish ] = "Udvalgsmodus";
+ SlotName[ swedish ] = "Markeringsläge";
+ SlotName[ polish ] = "Tryb selekcji";
+ SlotName[ portuguese_brazilian ] = "SelectionMode";
+ SlotName[ japanese ] = "‘I‘ðÓ°ÄÞ";
+ SlotName[ chinese_simplified ] = "Ñ¡Ôñģʽ";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¼Ò¦¡";
+ SlotName[ arabic ] = "æÖÚ ÇáÊÍÏíÏ";
+ SlotName[ dutch ] = "Selectiemodus";
+ SlotName[ chinese_simplified ] = "Ñ¡Ôñģʽ";
+ SlotName[ greek ] = "ÊáôÜóôáóç åðéëïãÞò";
+ SlotName[ korean ] = "¼±Åà ¸ðµå";
+ SlotName[ turkish ] = "Seçim kipi";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_STAT_TEMPLATE
+{
+ SlotName = "Seitenvorlage";
+ SlotName [ english ] = "Seitenvorlage";
+ SlotName[ english_us ] = "Page Style";
+ SlotName[ portuguese ] = "Estilo de página";
+ SlotName[ russian ] = "Ñòèëü ñòðàíèöû";
+ SlotName[ dutch ] = "Pagina-opmaakprofiel";
+ SlotName[ french ] = "Style de page";
+ SlotName[ spanish ] = "Estilo de página";
+ SlotName[ italian ] = "Modello di pagina";
+ SlotName[ danish ] = "Sidetypografi";
+ SlotName[ swedish ] = "Sidformatmall";
+ SlotName[ polish ] = "Styl strony";
+ SlotName[ portuguese_brazilian ] = "PageStyleName";
+ SlotName[ japanese ] = "Íß°¼Þ½À²Ù";
+ SlotName[ chinese_simplified ] = "Ò³ÃæÑùʽ";
+ SlotName[ chinese_traditional ] = "­¶­±¼Ë¦¡";
+ SlotName[ arabic ] = "äãØ ÕÝÍÉ";
+ SlotName[ dutch ] = "Pagina-opmaakprofiel";
+ SlotName[ chinese_simplified ] = "Ò³ÃæÑùʽ";
+ SlotName[ greek ] = "Ðñüôõðï óåëßäáò";
+ SlotName[ korean ] = "ÆäÀÌÁö À¯Çü";
+ SlotName[ turkish ] = "Sayfa þablonu";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_ADJUST_CELLS
+{
+ SlotName = "Optimale Spaltenbreite";
+ SlotName [ english ] = "Optimale Spaltenbreite";
+ SlotName[ english_us ] = "Optimal Column Width";
+ SlotName[ portuguese ] = "Largura da coluna";
+ SlotName[ russian ] = "Îïòèìàëüíàÿ øèðèíà ñòîëáöà";
+ SlotName[ dutch ] = "Optimale kolombreedte";
+ SlotName[ french ] = "Largeur de colonne optimale";
+ SlotName[ spanish ] = "Ancho óptimo de columnas";
+ SlotName[ italian ] = "Larghezza colonna ottimale";
+ SlotName[ danish ] = "Optimal kolonnebredde";
+ SlotName[ swedish ] = "Optimal kolumnbredd";
+ SlotName[ polish ] = "Optymalna szerokoϾ kolumn";
+ SlotName[ portuguese_brazilian ] = "TableCellsAdjust";
+ SlotName[ japanese ] = "Å“K‚È—ñ‚Ì•";
+ SlotName[ chinese_simplified ] = "×î¼ÑÁпí";
+ SlotName[ chinese_traditional ] = "³ÌÓìÄæ¼e";
+ SlotName[ arabic ] = "ÇáÚÑÖ ÇáÃãËá ááÚãæÏ";
+ SlotName[ dutch ] = "Optimale kolombreedte";
+ SlotName[ chinese_simplified ] = "×î¼ÑÁпí";
+ SlotName[ greek ] = "ÂÝëôéóôï ðëÜôïò óôÞëçò";
+ SlotName[ korean ] = "ÃÖÀûÀÇ ¿­ ³Êºñ";
+ SlotName[ turkish ] = "En uygun sütun geniþliði";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_AUTOSUM
+{
+ SlotName = "Summe";
+ SlotName [ english ] = "Sum";
+ SlotName[ english_us ] = "Sum";
+ SlotName[ portuguese ] = "Soma";
+ SlotName[ russian ] = "Sum";
+ SlotName[ greek ] = "¢èñïéóìá";
+ SlotName[ dutch ] = "Som";
+ SlotName[ french ] = "Somme";
+ SlotName[ spanish ] = "Sum";
+ SlotName[ italian ] = "Sum";
+ SlotName[ danish ] = "Sum";
+ SlotName[ swedish ] = "Summa";
+ SlotName[ polish ] = "Suma";
+ SlotName[ portuguese_brazilian ] = "Sum";
+ SlotName[ japanese ] = "µ°Ä Sum";
+ SlotName[ korean ] = "Sum";
+ SlotName[ chinese_simplified ] = "×ܼÆ";
+ SlotName[ chinese_traditional ] = "¤p­p";
+ SlotName[ turkish ] = "Sum";
+ SlotName[ arabic ] = "ÇáãÌãæÚ";
+};
+SfxSlotInfo FN_TABLE_BALANCE_CELLS
+{
+ SlotName = "Spalten gleichmäßig verteilen";
+ SlotName [ english ] = "Spalten gleichmäßig verteilen";
+ SlotName[ english_us ] = "Space Columns Equally";
+ SlotName[ portuguese ] = "Ordenar colunas";
+ SlotName[ russian ] = "Ðàñïðåäåëèòü ñòîëáöû ðàâíîìåðíî";
+ SlotName[ dutch ] = "Kolommen gelijkmatig verdelen";
+ SlotName[ french ] = "Espace équilibré entre les colonnes";
+ SlotName[ spanish ] = "Ordenar columnas";
+ SlotName[ italian ] = "Distribuisci le colonne uniformemente";
+ SlotName[ danish ] = "Fordel kolonner jævnt";
+ SlotName[ swedish ] = "Fördela kolumnerna jämnt";
+ SlotName[ polish ] = "Roz³ó¿ równomiernie kolumny";
+ SlotName[ portuguese_brazilian ] = "ArrangeColumns";
+ SlotName[ japanese ] = "—ñ‚Ì‹Ï“™•ªŠ„";
+ SlotName[ chinese_simplified ] = "ƽ¾ù·ÖÅäÁпí";
+ SlotName[ chinese_traditional ] = "¹ïºÙ½Õ¾ãÄæ¼e";
+ SlotName[ arabic ] = "ÊæÒíÚ ÇáÃÚãÏÉ ÈÇáÊÓÇæí";
+ SlotName[ dutch ] = "Kolommen gelijkmatig verdelen";
+ SlotName[ chinese_simplified ] = "ƽ¾ù·ÖÅäÁпí";
+ SlotName[ greek ] = "ºóç êáôáíïìÞ óôçëþí";
+ SlotName[ korean ] = "¿­ °£°Ý µ¿ÀÏÇÏ°Ô";
+ SlotName[ turkish ] = "Sütunlarý geniþliklerini eþitle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_BALANCE_ROWS
+{
+ SlotName = "Zeilen gleichmäßig verteilen";
+ SlotName [ english ] = "Zeilen gleichmäßig verteilen";
+ SlotName[ english_us ] = "Space Rows Equally ";
+ SlotName[ portuguese ] = "Ordenar linhas";
+ SlotName[ russian ] = "Ðàñïðåäåëèòü ñòðîêè ðàâíîìåðíî";
+ SlotName[ dutch ] = "Rijen gelijkmatig verdelen";
+ SlotName[ french ] = "Espace équilibré entre les lignes";
+ SlotName[ spanish ] = "Ordenar filas";
+ SlotName[ italian ] = "Distribuisci le righe uniformemente";
+ SlotName[ danish ] = "Fordel rækker jævnt";
+ SlotName[ swedish ] = "Fördela raderna jämnt";
+ SlotName[ polish ] = "Roz³ó¿ równomiernie wiersze";
+ SlotName[ portuguese_brazilian ] = "ArrangeRows";
+ SlotName[ japanese ] = "s‚Ì‹Ï“™•ªŠ„";
+ SlotName[ chinese_simplified ] = "ƽ¾ù·ÖÅäÐиß";
+ SlotName[ chinese_traditional ] = "¹ïºÙ¦a½Õ¾ã¦æ°ª";
+ SlotName[ arabic ] = "ÊæÒíÚ ÇáÕÝæÝ ÈÇáÊÓÇæí";
+ SlotName[ dutch ] = "Rijen gelijkmatig verdelen";
+ SlotName[ chinese_simplified ] = "ƽ¾ù·ÖÅäÐиß";
+ SlotName[ greek ] = "ºóç êáôáíïìÞ ãñáììþí";
+ SlotName[ korean ] = "Çà °£°Ý µ¿ÀÏÇÏ°Ô";
+ SlotName[ turkish ] = "Satýr yüksekliklerini eþitle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_DELETE_COL
+{
+ SlotName = "Spalte löschen";
+ SlotName [ english ] = "Spalte löschen";
+ SlotName[ english_us ] = "Delete Column";
+ SlotName[ portuguese ] = "Eliminar coluna";
+ SlotName[ russian ] = "Óäàëèòü ñòîëáåö";
+ SlotName[ dutch ] = "Kolom wissen";
+ SlotName[ french ] = "Supprimer la colonne";
+ SlotName[ spanish ] = "Eliminar columna";
+ SlotName[ italian ] = "Elimina colonna";
+ SlotName[ danish ] = "Slet kolonne";
+ SlotName[ swedish ] = "Radera kolumn";
+ SlotName[ polish ] = "Usuñ kolumnê";
+ SlotName[ portuguese_brazilian ] = "TableColumnsDelete";
+ SlotName[ japanese ] = "—ñ‚Ìíœ";
+ SlotName[ chinese_simplified ] = "ɾ³ýÁÐ";
+ SlotName[ chinese_traditional ] = "§R°£Äæ";
+ SlotName[ arabic ] = "ÍÐÝ ÚãæÏ";
+ SlotName[ dutch ] = "Kolom wissen";
+ SlotName[ chinese_simplified ] = "ɾ³ýÁÐ";
+ SlotName[ greek ] = "ÄéáãñáöÞ óôÞëçò";
+ SlotName[ korean ] = "¿­ »èÁ¦";
+ SlotName[ turkish ] = "Sütunu sil";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_DELETE_ROW
+{
+ SlotName = "Zeile löschen";
+ SlotName [ english ] = "Zeile löschen";
+ SlotName[ english_us ] = "Delete Row";
+ SlotName[ portuguese ] = "Eliminar linha";
+ SlotName[ russian ] = "Óäàëèòü ñòðîêó";
+ SlotName[ dutch ] = "Rij wissen";
+ SlotName[ french ] = "Supprimer la ligne";
+ SlotName[ spanish ] = "Eliminar fila";
+ SlotName[ italian ] = "Elimina riga";
+ SlotName[ danish ] = "Slet række";
+ SlotName[ swedish ] = "Radera rad";
+ SlotName[ polish ] = "Usuñ wiersz";
+ SlotName[ portuguese_brazilian ] = "TableRowDelete";
+ SlotName[ japanese ] = "s‚Ìíœ";
+ SlotName[ chinese_simplified ] = "ɾ³ýÐÐ";
+ SlotName[ chinese_traditional ] = "§R°£¦æ";
+ SlotName[ arabic ] = "ÍÐÝ ÕÝ";
+ SlotName[ dutch ] = "Rij wissen";
+ SlotName[ chinese_simplified ] = "ɾ³ýÐÐ";
+ SlotName[ greek ] = "ÄéáãñáöÞ ãñáììÞò";
+ SlotName[ korean ] = "Çà »èÁ¦";
+ SlotName[ turkish ] = "Satýrý sil";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_INSERT_COL
+{
+ SlotName = "Spalte einfügen";
+ SlotName [ english ] = "Spalte einfügen";
+ SlotName[ english_us ] = "Insert Columns";
+ SlotName[ portuguese ] = "Inserir coluna";
+ SlotName[ russian ] = "Âñòàâèòü ñòîëáåö";
+ SlotName[ dutch ] = "Kolom invoegen";
+ SlotName[ french ] = "Insérer une colonne";
+ SlotName[ spanish ] = "Insertar columna";
+ SlotName[ italian ] = "Inserisci colonna";
+ SlotName[ danish ] = "Indsæt kolonne";
+ SlotName[ swedish ] = "Infoga kolumn";
+ SlotName[ polish ] = "Wstaw kolumnê";
+ SlotName[ portuguese_brazilian ] = "TableColumnsInsert";
+ SlotName[ japanese ] = "—ñ‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÁÐ";
+ SlotName[ chinese_traditional ] = "´¡¤JÄæ";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÚãæÏ";
+ SlotName[ dutch ] = "Kolom invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÁÐ";
+ SlotName[ greek ] = "ÅéóáãùãÞ óôÞëçò";
+ SlotName[ korean ] = "¿­ »ðÀÔ";
+ SlotName[ turkish ] = "Sütun ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_INSERT_ROW
+{
+ SlotName = "Zeile einfügen";
+ SlotName [ english ] = "Zeile einfügen";
+ SlotName[ english_us ] = "Insert Rows";
+ SlotName[ portuguese ] = "Inserir linha";
+ SlotName[ russian ] = "Âñòàâèòü ñòðîêó";
+ SlotName[ dutch ] = "Rij invoegen";
+ SlotName[ french ] = "Insérer une ligne";
+ SlotName[ spanish ] = "Insertar fila";
+ SlotName[ italian ] = "Inserisci righe";
+ SlotName[ danish ] = "Indsæt række";
+ SlotName[ swedish ] = "Infoga rad";
+ SlotName[ polish ] = "Wstaw wiersz";
+ SlotName[ portuguese_brazilian ] = "TableRowsInsert";
+ SlotName[ japanese ] = "s‚Ì‘}“ü";
+ SlotName[ chinese_simplified ] = "²åÈëÐÐ";
+ SlotName[ chinese_traditional ] = "´¡¤J¦C";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÕÝ";
+ SlotName[ dutch ] = "Rij invoegen";
+ SlotName[ chinese_simplified ] = "²åÈëÐÐ";
+ SlotName[ greek ] = "ÅéóáãùãÞ ãñáììÞò";
+ SlotName[ korean ] = "Çà»ðÀÔ";
+ SlotName[ turkish ] = "Satýr ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_MERGE_CELLS
+{
+ SlotName = "Zellen verbinden";
+ SlotName [ english ] = "Zellen verbinden";
+ SlotName[ english_us ] = "Merge Cells";
+ SlotName[ portuguese ] = "Unir células";
+ SlotName[ russian ] = "Îáúåäèíèòü ÿ÷åéêè";
+ SlotName[ dutch ] = "Cellen verbinden";
+ SlotName[ french ] = "Fusionner les cellules ";
+ SlotName[ spanish ] = "Unir celdas";
+ SlotName[ italian ] = "Collega celle";
+ SlotName[ danish ] = "Flet celler";
+ SlotName[ swedish ] = "Förbind celler";
+ SlotName[ polish ] = "Scal komórki";
+ SlotName[ portuguese_brazilian ] = "TableCellsMerge";
+ SlotName[ japanese ] = "¾Ù‚ÌŒ‹‡";
+ SlotName[ chinese_simplified ] = "ºÏ²¢µ¥Ôª¸ñ";
+ SlotName[ chinese_traditional ] = "¦X¨ÖÀx¦s®æ";
+ SlotName[ arabic ] = "ÏãÌ ÇáÎáÇíÇ";
+ SlotName[ dutch ] = "Cellen verbinden";
+ SlotName[ chinese_simplified ] = "ºÏ²¢µ¥Ôª¸ñ";
+ SlotName[ greek ] = "¸íùóç êåëéþí";
+ SlotName[ korean ] = "¼¿ º´ÇÕ";
+ SlotName[ turkish ] = "Hücreleri birleþtir";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_MERGE_TABLE
+{
+ SlotName = "Tabelle zusammenfassen";
+ SlotName [ english ] = "Tabelle zusammenfassen";
+ SlotName[ english_us ] = "Merge Table";
+ SlotName[ portuguese ] = "Unir tabela";
+ SlotName[ russian ] = "Îáúåäèíèòü òàáëèöó";
+ SlotName[ dutch ] = "Tabel samenvatten";
+ SlotName[ french ] = "Fusionner le tableau";
+ SlotName[ spanish ] = "Unir tabla";
+ SlotName[ italian ] = "Unisci tabella";
+ SlotName[ danish ] = "Flet tabeller";
+ SlotName[ swedish ] = "Sammanfatta tabell";
+ SlotName[ polish ] = "Scal tabelê";
+ SlotName[ portuguese_brazilian ] = "MergeTable";
+ SlotName[ japanese ] = "•\\‚ÌŒ‹‡";
+ SlotName[ chinese_simplified ] = "ºÏ²¢±í¸ñ";
+ SlotName[ chinese_traditional ] = "¦X¨Öªí®æ";
+ SlotName[ arabic ] = "ÏãÌ ÌÏæá";
+ SlotName[ dutch ] = "Tabel samenvatten";
+ SlotName[ chinese_simplified ] = "ºÏ²¢±í¸ñ";
+ SlotName[ greek ] = "Óõã÷þíåõóç ðéíÜêùí";
+ SlotName[ korean ] = "Ç¥ º´ÇÕ";
+ SlotName[ turkish ] = "Tabloyu birleþtir";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_MODE_FIX
+{
+ SlotName = "Tabelle: fix";
+ SlotName [ english ] = "Tabelle: fix";
+ SlotName[ english_us ] = "Table: Fixed";
+ SlotName[ portuguese ] = "Tabela: fixa";
+ SlotName[ russian ] = "Òàáëèöà : ôèêñèðîâàíàÿ";
+ SlotName[ dutch ] = "Tabel: vast";
+ SlotName[ french ] = "Tableau : fixe";
+ SlotName[ spanish ] = "Tabla: fija";
+ SlotName[ italian ] = "Tabella: fissa";
+ SlotName[ danish ] = "Tabel: fast";
+ SlotName[ swedish ] = "Tabell: fast";
+ SlotName[ polish ] = "Tabela : sta³a";
+ SlotName[ portuguese_brazilian ] = "TableModeFix";
+ SlotName[ japanese ] = "•\\:ŒÅ’è";
+ SlotName[ chinese_simplified ] = "±í¸ñ¹Ì¶¨";
+ SlotName[ chinese_traditional ] = "ªí®æ©T©w";
+ SlotName[ arabic ] = "ÌÏæá: ËÇÈÊ";
+ SlotName[ dutch ] = "Tabel: vast";
+ SlotName[ chinese_simplified ] = "±í¸ñ¹Ì¶¨";
+ SlotName[ greek ] = "Ðßíáêáò: Óôáèåñüò";
+ SlotName[ korean ] = "Ç¥:°íÁ¤µÊ";
+ SlotName[ turkish ] = "Tablo: Sabit";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_MODE_FIX_PROP
+{
+ SlotName = "Tabelle: fix, proportional";
+ SlotName [ english ] = "Tabelle: fix, proportional";
+ SlotName[ english_us ] = "Table: Fixed, Proportional";
+ SlotName[ portuguese ] = "Tabela: fixa, proporcional";
+ SlotName[ russian ] = "Òàáëèöà: ôèêñèðîâàííàÿ , ïðîïîðöèîíàëüíàÿ";
+ SlotName[ dutch ] = "Tabel; vast, proportioneel";
+ SlotName[ french ] = "Tableau : fixe, proportionnel";
+ SlotName[ spanish ] = "Tabla: fija, proporcional";
+ SlotName[ italian ] = "Tabella: fissa, proporzionale";
+ SlotName[ danish ] = "Tabel: fast, proportional";
+ SlotName[ swedish ] = "Tabell: fast, proportionell";
+ SlotName[ polish ] = "Tabela : sta³a, proporcjonalna";
+ SlotName[ portuguese_brazilian ] = "TableModeFixProp";
+ SlotName[ japanese ] = "•\\:ŒÅ’èA”ä—á";
+ SlotName[ chinese_simplified ] = "±í¸ñ¹Ì¶¨³É±ÈÀý";
+ SlotName[ chinese_traditional ] = "ªí®æ©T©w¦¨¤ñ¨Ò";
+ SlotName[ arabic ] = "ÌÏæá: ËÇÈÊ¡ ãÊäÇÓÈ";
+ SlotName[ dutch ] = "Tabel; vast, proportioneel";
+ SlotName[ chinese_simplified ] = "±í¸ñ¹Ì¶¨³É±ÈÀý";
+ SlotName[ greek ] = "Ðßíáêáò: Óôáèåñüò, áíáëïãéêüò";
+ SlotName[ korean ] = "Ç¥: °íÁ¤,ºñ·Ê";
+ SlotName[ turkish ] = "Tablo: Sabit, orantýlý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_MODE_VARIABLE
+{
+ SlotName = "Tabelle: variabel";
+ SlotName [ english ] = "Tabelle: variabel";
+ SlotName[ english_us ] = "Table: Variable";
+ SlotName[ portuguese ] = "Tabela: variável";
+ SlotName[ russian ] = "Òàáëèöà: èçìåíÿåìàÿ";
+ SlotName[ dutch ] = "Tabel: variabel";
+ SlotName[ french ] = "Tableau : variable";
+ SlotName[ spanish ] = "Tabla: variable";
+ SlotName[ italian ] = "Tabella: variabile";
+ SlotName[ danish ] = "Tabel: variabel";
+ SlotName[ swedish ] = "Tabell: variabel";
+ SlotName[ polish ] = "Tabela: zmienna";
+ SlotName[ portuguese_brazilian ] = "TableModeVariable";
+ SlotName[ japanese ] = "•\\:•Ï”";
+ SlotName[ chinese_simplified ] = "±í¸ñ¿É±ä";
+ SlotName[ chinese_traditional ] = "ªí®æ¥iÅÜ";
+ SlotName[ arabic ] = "ÌÏæá: ãÊÛíÑ";
+ SlotName[ dutch ] = "Tabel: variabel";
+ SlotName[ chinese_simplified ] = "±í¸ñ¿É±ä";
+ SlotName[ greek ] = "Ðßíáêáò: Ìåôáâëçôüò";
+ SlotName[ korean ] = "Ç¥:º¯¼ö";
+ SlotName[ turkish ] = "Tablo: Deðiþken";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_OPTIMAL_HEIGHT
+{
+ SlotName = "Optimale Zeilenhöhe";
+ SlotName [ english ] = "Optimale Zeilenhöhe";
+ SlotName[ english_us ] = "Optimal Row Height";
+ SlotName[ portuguese ] = "Altura da linha";
+ SlotName[ russian ] = "Îïòèìàëüíàÿ âûñîòà ñòðîêè";
+ SlotName[ dutch ] = "Optimale rijhoogte";
+ SlotName[ french ] = "Hauteur de ligne optimale";
+ SlotName[ spanish ] = "Altura óptima de filas";
+ SlotName[ italian ] = "Altezza riga ottimale";
+ SlotName[ danish ] = "Optimal rækkehøjde";
+ SlotName[ swedish ] = "Optimal radhöjd";
+ SlotName[ polish ] = "Optymalna wysokoϾ wierszy";
+ SlotName[ portuguese_brazilian ] = "SetOptimalRowHeight";
+ SlotName[ japanese ] = "Å“K‚Ès‚Ì‚‚³";
+ SlotName[ chinese_simplified ] = "×î¼ÑÐиß";
+ SlotName[ chinese_traditional ] = "³ÌÓìÄæ°ª";
+ SlotName[ arabic ] = "ÇáÇÑÊÝÇÚ ÇáÃãËá ááÕÝ";
+ SlotName[ dutch ] = "Optimale rijhoogte";
+ SlotName[ chinese_simplified ] = "×î¼ÑÐиß";
+ SlotName[ greek ] = "ÂÝëôéóôï ýøïò ãñáììÞò";
+ SlotName[ korean ] = "ÃÖÀûÈ­µÈ Çà ³ôÀÌ";
+ SlotName[ turkish ] = "En uygun satýr yüksekliði";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_SELECT_ALL
+{
+ SlotName = "Tabelle selektieren";
+ SlotName [ english ] = "Tabelle selektieren";
+ SlotName[ english_us ] = "Select Table";
+ SlotName[ portuguese ] = "Seleccionar tabela";
+ SlotName[ russian ] = "Âûäåëèòü òàáëèöó";
+ SlotName[ dutch ] = "Tabel selecteren";
+ SlotName[ french ] = "Sélectionner tableau";
+ SlotName[ spanish ] = "Seleccionar tabla";
+ SlotName[ italian ] = "Seleziona tabella";
+ SlotName[ danish ] = "Marker tabel";
+ SlotName[ swedish ] = "Markera tabell";
+ SlotName[ polish ] = "Zaznacz tabelê";
+ SlotName[ portuguese_brazilian ] = "TableSelect";
+ SlotName[ japanese ] = "•\\‚Ì‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡Ôñ±í¸ñ";
+ SlotName[ chinese_traditional ] = "¿ï¨úªí®æ";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÌÏæá";
+ SlotName[ dutch ] = "Tabel selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡Ôñ±í¸ñ";
+ SlotName[ greek ] = "ÅðéëïãÞ ðßíáêá";
+ SlotName[ korean ] = "Ç¥ ¼±ÅÃ";
+ SlotName[ turkish ] = "Tablo seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_SELECT_COL
+{
+ SlotName = "Spalte selektieren";
+ SlotName [ english ] = "Spalte selektieren";
+ SlotName[ english_us ] = "Select Column";
+ SlotName[ portuguese ] = "Seleccionar coluna";
+ SlotName[ russian ] = "Âûäåëèòü ñòîëáåö";
+ SlotName[ dutch ] = "Kolom selecteren";
+ SlotName[ french ] = "Sélectionner colonne";
+ SlotName[ spanish ] = "Seleccionar columna";
+ SlotName[ italian ] = "Seleziona colonna";
+ SlotName[ danish ] = "Marker kolonne";
+ SlotName[ swedish ] = "Markera kolumn";
+ SlotName[ polish ] = "Zaznacz tabelê";
+ SlotName[ portuguese_brazilian ] = "TableColumnSelect";
+ SlotName[ japanese ] = "—ñ‚Ì‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÁÐ";
+ SlotName[ chinese_traditional ] = "¿ï¨úÄæ";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÚãæÏ";
+ SlotName[ dutch ] = "Kolom selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÁÐ";
+ SlotName[ greek ] = "ÅðéëïãÞ óôÞëçò";
+ SlotName[ korean ] = "¿­ ¼±ÅÃ";
+ SlotName[ turkish ] = "Sütun seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_SELECT_ROW
+{
+ SlotName = "Zeile selektieren";
+ SlotName [ english ] = "Zeile selektieren";
+ SlotName[ english_us ] = "Select Rows";
+ SlotName[ portuguese ] = "Seleccionar linha";
+ SlotName[ russian ] = "Âûäåëèòü ñòðîêó";
+ SlotName[ dutch ] = "Rij selecteren";
+ SlotName[ french ] = "Sélectionner ligne";
+ SlotName[ spanish ] = "Selecionar fila";
+ SlotName[ italian ] = "Seleziona riga";
+ SlotName[ danish ] = "Marker række";
+ SlotName[ swedish ] = "Markera rad";
+ SlotName[ polish ] = "Wybierz wiersz";
+ SlotName[ portuguese_brazilian ] = "TableRowSelect";
+ SlotName[ japanese ] = "s‚Ì‘I‘ð";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÐÐ";
+ SlotName[ chinese_traditional ] = "¿ï¨ú¦æ";
+ SlotName[ arabic ] = "ÊÍÏíÏ ÕÝ";
+ SlotName[ dutch ] = "Rij selecteren";
+ SlotName[ chinese_simplified ] = "Ñ¡ÔñÐÐ";
+ SlotName[ greek ] = "ÅðéëïãÞ ãñáììÞò";
+ SlotName[ korean ] = "Çà ¼±ÅÃ";
+ SlotName[ turkish ] = "Satýr seç";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_SET_READ_ONLY_CELLS
+{
+ SlotName = "Zelle schützen";
+ SlotName [ english ] = "Zelle schützen";
+ SlotName[ english_us ] = "Protect Cells";
+ SlotName[ portuguese ] = "Proteger célula";
+ SlotName[ russian ] = "Çàùèòà ÿ÷åéêè";
+ SlotName[ dutch ] = "Cel beveiligen";
+ SlotName[ french ] = "Protection";
+ SlotName[ spanish ] = "Proteger celda";
+ SlotName[ italian ] = "Proteggi cella";
+ SlotName[ danish ] = "Beskyt celle";
+ SlotName[ swedish ] = "Skydda cell";
+ SlotName[ polish ] = "Chroñ komórkê";
+ SlotName[ portuguese_brazilian ] = "SetTableCellsRead-only";
+ SlotName[ japanese ] = "¾Ù‚Ì•ÛŒì";
+ SlotName[ chinese_simplified ] = "µ¥Ôª¸ñ±£»¤";
+ SlotName[ chinese_traditional ] = "«OÅ@Àx¦s®æ";
+ SlotName[ arabic ] = "ÍãÇíÉ ÇáÎáíÉ";
+ SlotName[ dutch ] = "Cel beveiligen";
+ SlotName[ chinese_simplified ] = "µ¥Ôª¸ñ±£»¤";
+ SlotName[ greek ] = "Ðñïóôáóßá êåëéïý";
+ SlotName[ korean ] = "¼¿ º¸È£";
+ SlotName[ turkish ] = "Hücreyi koru";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_SET_ROW_HEIGHT
+{
+ SlotName = "Zeilenhöhe";
+ SlotName [ english ] = "Zeilenhöhe";
+ SlotName[ english_us ] = "Row Height";
+ SlotName[ portuguese ] = "Altura da linha";
+ SlotName[ russian ] = "Âûñîòà ñòðîêè";
+ SlotName[ dutch ] = "Rijhoogte";
+ SlotName[ french ] = "Hauteur de ligne";
+ SlotName[ spanish ] = "Altura de fila";
+ SlotName[ italian ] = "Altezza riga";
+ SlotName[ danish ] = "Rækkehøjde";
+ SlotName[ swedish ] = "Radhöjd";
+ SlotName[ polish ] = "WysokoϾ wierszy";
+ SlotName[ portuguese_brazilian ] = "SetTableRowHeight";
+ SlotName[ japanese ] = "s‚Ì‚‚³";
+ SlotName[ chinese_simplified ] = "Ðиß";
+ SlotName[ chinese_traditional ] = "¦æ°ª";
+ SlotName[ arabic ] = "ÇÑÊÝÇÚ ÇáÕÝ";
+ SlotName[ dutch ] = "Rijhoogte";
+ SlotName[ chinese_simplified ] = "Ðиß";
+ SlotName[ greek ] = "¾øïò ãñáììÞò";
+ SlotName[ korean ] = "Çà ³ôÀÌ";
+ SlotName[ turkish ] = "Satýr yüksekliði";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_SPLIT_CELLS
+{
+ SlotName = "Zelle teilen";
+ SlotName [ english ] = "Zelle teilen";
+ SlotName[ english_us ] = "Split Cells";
+ SlotName[ portuguese ] = "Dividir células";
+ SlotName[ russian ] = "Ðàçáèòü ÿ÷åéêè";
+ SlotName[ dutch ] = "Cel splitsen";
+ SlotName[ french ] = "Scinder la celulle";
+ SlotName[ spanish ] = "Dividir celdas";
+ SlotName[ italian ] = "Dividi celle";
+ SlotName[ danish ] = "Opdel celle";
+ SlotName[ swedish ] = "Dela cell";
+ SlotName[ polish ] = "Podziel komórkê";
+ SlotName[ portuguese_brazilian ] = "TableCellSplit";
+ SlotName[ japanese ] = "¾Ù‚Ì•ªŠ„";
+ SlotName[ chinese_simplified ] = "·Ö¸ôµ¥Ôª¸ñ";
+ SlotName[ chinese_traditional ] = "¤À¶}Àx¦s®æ";
+ SlotName[ arabic ] = "ÊÞÓíã ÇáÎáíÉ";
+ SlotName[ dutch ] = "Cel splitsen";
+ SlotName[ chinese_simplified ] = "·Ö¸ôµ¥Ôª¸ñ";
+ SlotName[ greek ] = "Äéáßñåóç êåëéïý";
+ SlotName[ korean ] = "¼¿ ³ª´©±â";
+ SlotName[ turkish ] = "Hücreyi böl";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_SPLIT_TABLE
+{
+ SlotName = "Tabelle auftrennen";
+ SlotName [ english ] = "Tabelle auftrennen";
+ SlotName[ english_us ] = "Split Table";
+ SlotName[ portuguese ] = "Dividir tabela";
+ SlotName[ russian ] = "Ðàçáèòü òàáëèöó";
+ SlotName[ dutch ] = "Tabel splitsen";
+ SlotName[ french ] = "Scinder le tableau";
+ SlotName[ spanish ] = "Dividir tabla";
+ SlotName[ italian ] = "Separa tabella";
+ SlotName[ danish ] = "Opdel tabel";
+ SlotName[ swedish ] = "Dela tabell";
+ SlotName[ polish ] = "Rozdziel tabelê";
+ SlotName[ portuguese_brazilian ] = "SplitTable";
+ SlotName[ japanese ] = "•\\‚Ì•ªŠ„";
+ SlotName[ chinese_simplified ] = "·Ö¸ô±í¸ñ";
+ SlotName[ chinese_traditional ] = "¤À¶}ªí®æ";
+ SlotName[ arabic ] = "ÝÕá ÇáÌÏæá";
+ SlotName[ dutch ] = "Tabel splitsen";
+ SlotName[ chinese_simplified ] = "·Ö¸ô±í¸ñ";
+ SlotName[ greek ] = "ÄéÜóðáóç ðßíáêá";
+ SlotName[ korean ] = "Ç¥ ³ª´©±â";
+ SlotName[ turkish ] = "Tabloyu böl";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_UNSET_READ_ONLY
+{
+ SlotName = "Tabellenschutz aufheben";
+ SlotName [ english ] = "Tabellenschutz aufheben";
+ SlotName[ english_us ] = "Unprotect sheet";
+ SlotName[ portuguese ] = "Remover protecção";
+ SlotName[ russian ] = "Ñíÿòü çàùèòó òàáëèöû";
+ SlotName[ dutch ] = "Werkbladbeveiliging opheffen";
+ SlotName[ french ] = "Annuler la protection du tableau";
+ SlotName[ spanish ] = "Desproteger tabla";
+ SlotName[ italian ] = "Disattiva protezione tabella";
+ SlotName[ danish ] = "Ophæv arkbeskyttelse";
+ SlotName[ swedish ] = "Upphäv tabellskydd";
+ SlotName[ polish ] = "Usuñ ochronê arkusza";
+ SlotName[ portuguese_brazilian ] = "ResetTableRead-Only";
+ SlotName[ japanese ] = "•\\‚Ì•ÛŒì‚ð‰ðœ";
+ SlotName[ chinese_simplified ] = "È¡Ïû±í¸ñ±£»¤";
+ SlotName[ chinese_traditional ] = "¨ú®ø«OÅ@ªí®æ";
+ SlotName[ arabic ] = "ÅáÛÇÁ ÍãÇíÉ ÇáÌÏæá";
+ SlotName[ dutch ] = "Werkbladbeveiliging opheffen";
+ SlotName[ chinese_simplified ] = "È¡Ïû±í¸ñ±£»¤";
+ SlotName[ greek ] = "ÊáôÜñãçóç ðñïóôáóßáò ðßíáêá";
+ SlotName[ korean ] = "º¸È£ ÇØÁ¦";
+ SlotName[ turkish ] = "Tablo korumasýný kaldýr";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_UNSET_READ_ONLY_CELLS
+{
+ SlotName = "Zellschutz aufheben";
+ SlotName [ english ] = "Zellschutz aufheben";
+ SlotName[ english_us ] = "Unprotect cells";
+ SlotName[ portuguese ] = "Remover protecção da célula";
+ SlotName[ russian ] = "Ñíÿòü çàùèòó ÿ÷ååê";
+ SlotName[ dutch ] = "Celbeveiliging opheffen";
+ SlotName[ french ] = "Annuler la protection des cellules";
+ SlotName[ spanish ] = "Desproteger celdas";
+ SlotName[ italian ] = "Disattiva protezione celle";
+ SlotName[ danish ] = "Ophæv cellebeskyttelse";
+ SlotName[ swedish ] = "Upphäv cellskydd";
+ SlotName[ polish ] = "Anuluj ochronê komórek";
+ SlotName[ portuguese_brazilian ] = "RemoveTableCellsReadOnly";
+ SlotName[ japanese ] = "¾Ù‚Ì•ÛŒì‚ð‰ðœ";
+ SlotName[ chinese_simplified ] = "È¡Ïûµ¥Ôª¸ñ±£»¤";
+ SlotName[ chinese_traditional ] = "¨ú®ø«OÅ@Àx¦s®æ";
+ SlotName[ arabic ] = "ÅÒÇáÉ ÍãÇíÉ ÇáÎáíÉ";
+ SlotName[ dutch ] = "Celbeveiliging opheffen";
+ SlotName[ chinese_simplified ] = "È¡Ïûµ¥Ôª¸ñ±£»¤";
+ SlotName[ greek ] = "ÊáôÜñãçóç ðñïóôáóßáò êåëéþí";
+ SlotName[ korean ] = "¼¿ º¸È£ ÇØÁ¦";
+ SlotName[ turkish ] = "Hücre korumasýný kaldýr";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_VERT_BOTTOM
+{
+ SlotName = "Unten";
+ SlotName [ english ] = "Unten";
+ SlotName[ english_us ] = "Bottom";
+ SlotName[ portuguese ] = "Em baixo";
+ SlotName[ russian ] = "Âíèçó";
+ SlotName[ dutch ] = "Beneden";
+ SlotName[ french ] = "En bas";
+ SlotName[ spanish ] = "Abajo";
+ SlotName[ italian ] = "In basso";
+ SlotName[ danish ] = "Nederst";
+ SlotName[ swedish ] = "Underst";
+ SlotName[ polish ] = "W dole";
+ SlotName[ portuguese_brazilian ] = "CellVertBottom";
+ SlotName[ japanese ] = "‰º";
+ SlotName[ chinese_simplified ] = "ÏÂ";
+ SlotName[ chinese_traditional ] = "¤U";
+ SlotName[ arabic ] = "ÃÓÝá";
+ SlotName[ dutch ] = "Beneden";
+ SlotName[ chinese_simplified ] = "ÏÂ";
+ SlotName[ greek ] = "ÊÜôù";
+ SlotName[ korean ] = "¾Æ·¡";
+ SlotName[ turkish ] = "Altta";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_VERT_CENTER
+{
+ SlotName = "Mittig (vertikal)";
+ SlotName [ english ] = "Mittig (vertikal)";
+ SlotName[ english_us ] = "Center ( vertical )";
+ SlotName[ portuguese ] = "Centrado (vertical)";
+ SlotName[ russian ] = "Öåíòðèðîâàòü (ïî âåðòèêàëè ) ";
+ SlotName[ dutch ] = "Gecentreerd (verticaal)";
+ SlotName[ french ] = "Centré (verticalement) ";
+ SlotName[ spanish ] = "Centrado (vertical)";
+ SlotName[ italian ] = "Centro (verticale) ";
+ SlotName[ danish ] = "Centreret (lodret)";
+ SlotName[ swedish ] = "Centrerad (vertikal)";
+ SlotName[ polish ] = "Do œrodka ( poziomo ) ";
+ SlotName[ portuguese_brazilian ] = "CellVertCenter ";
+ SlotName[ japanese ] = "’†‰›(㉺)";
+ SlotName[ chinese_simplified ] = "¾ÓÖÐ(´¹Ö±)";
+ SlotName[ chinese_traditional ] = "¸m¤¤(««ª½)";
+ SlotName[ arabic ] = "ÊæÓíØ (ÑÃÓí)";
+ SlotName[ dutch ] = "Gecentreerd (verticaal)";
+ SlotName[ chinese_simplified ] = "¾ÓÖÐ(´¹Ö±)";
+ SlotName[ greek ] = "ÊåíôñáñéóìÝíá (êáôáêüñõöá)";
+ SlotName[ korean ] = "°¡¿îµ¥ (¼öÁ÷ )";
+ SlotName[ turkish ] = "Ortalanmýþ (dikey)";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TABLE_VERT_NONE
+{
+ SlotName = "Oben";
+ SlotName [ english ] = "Oben";
+ SlotName[ english_us ] = "Top";
+ SlotName[ portuguese ] = "Em cima";
+ SlotName[ russian ] = "Ââåðõó";
+ SlotName[ dutch ] = "Boven";
+ SlotName[ french ] = "En haut";
+ SlotName[ spanish ] = "Arriba";
+ SlotName[ italian ] = "Sopra";
+ SlotName[ danish ] = "Øverst";
+ SlotName[ swedish ] = "Överst";
+ SlotName[ polish ] = "W górze";
+ SlotName[ portuguese_brazilian ] = "CellVertTop";
+ SlotName[ japanese ] = "ã";
+ SlotName[ chinese_simplified ] = "ÉÏ";
+ SlotName[ chinese_traditional ] = "¤W";
+ SlotName[ arabic ] = "ÃÚáì";
+ SlotName[ dutch ] = "Boven";
+ SlotName[ chinese_simplified ] = "ÉÏ";
+ SlotName[ greek ] = "ÐÜíù";
+ SlotName[ korean ] = "ˤ";
+ SlotName[ turkish ] = "Üstte";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_THESAURUS_DLG
+{
+ SlotName = "Thesaurus";
+ SlotName [ english ] = "Thesaurus";
+ SlotName[ english_us ] = "Thesaurus";
+ SlotName[ portuguese ] = "Sinónimos";
+ SlotName[ russian ] = "Òåçàóðóñ";
+ SlotName[ dutch ] = "Thesaurus";
+ SlotName[ french ] = "Dictionnaire des synonymes";
+ SlotName[ spanish ] = "Sinónimos";
+ SlotName[ italian ] = "Sinonimi";
+ SlotName[ danish ] = "Synonymordbog";
+ SlotName[ swedish ] = "Synonymordlista";
+ SlotName[ polish ] = "Tezaurus";
+ SlotName[ portuguese_brazilian ] = "ToolsThesaurus";
+ SlotName[ japanese ] = "—Þ‹`ŒêŽ«“T";
+ SlotName[ chinese_simplified ] = "´Êµä";
+ SlotName[ chinese_traditional ] = "µü¨å";
+ SlotName[ arabic ] = "ÞÇãæÓ ÇáãÑÇÏÝÇÊ";
+ SlotName[ dutch ] = "Thesaurus";
+ SlotName[ chinese_simplified ] = "´Êµä";
+ SlotName[ greek ] = "Èçóáõñüò ëÝîåùí";
+ SlotName[ korean ] = "µ¿ÀÇ¾î »çÀü";
+ SlotName[ turkish ] = "Eþanlamlýlar";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TO_FOOTER
+{
+ SlotName = "Zur Fußzeile";
+ SlotName [ english ] = "Zur Fußzeile";
+ SlotName[ english_us ] = "To Footer";
+ SlotName[ portuguese ] = "Ir para rodapé";
+ SlotName[ russian ] = "Äî íèæíåãî êîëîíòèòóëà";
+ SlotName[ dutch ] = "Naar voettekst";
+ SlotName[ french ] = "Aller au pied de page";
+ SlotName[ spanish ] = "Ir al pie de página";
+ SlotName[ italian ] = "Al piè di pagina";
+ SlotName[ danish ] = "Til sidefod";
+ SlotName[ swedish ] = "Till sidfot";
+ SlotName[ polish ] = "Do stopki";
+ SlotName[ portuguese_brazilian ] = "GoToFooter";
+ SlotName[ japanese ] = "̯À‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½Ò³½Å";
+ SlotName[ chinese_traditional ] = "Âà¨ì­¶§À";
+ SlotName[ arabic ] = "Åáì ÊÐííá ÇáÕÝÍÉ";
+ SlotName[ dutch ] = "Naar voettekst";
+ SlotName[ chinese_simplified ] = "תµ½Ò³½Å";
+ SlotName[ greek ] = "Ðñïò õðïóÝëéäï";
+ SlotName[ korean ] = "¹Ù´Ú±Û·Î";
+ SlotName[ turkish ] = "Altbilgi";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TO_HEADER
+{
+ SlotName = "Zur Kopfzeile";
+ SlotName [ english ] = "Zur Kopfzeile";
+ SlotName[ english_us ] = "To Header";
+ SlotName[ portuguese ] = "Ir para cabeçalho";
+ SlotName[ russian ] = "Äî âåðõíåãî êîëîíòèòóëà";
+ SlotName[ dutch ] = "Naar koptekst";
+ SlotName[ french ] = "Aller à l'en-tête";
+ SlotName[ spanish ] = "Ir al encabezamiento";
+ SlotName[ italian ] = "Alla riga d'intestazione ";
+ SlotName[ danish ] = "Til sidehoved";
+ SlotName[ swedish ] = "Till sidhuvud";
+ SlotName[ polish ] = "Do nag³ówka";
+ SlotName[ portuguese_brazilian ] = "GoToHeader";
+ SlotName[ japanese ] = "ͯÀÞ‚Ö";
+ SlotName[ chinese_simplified ] = "תµ½Ò³Ã¼";
+ SlotName[ chinese_traditional ] = "Âà¨ì­¶­º";
+ SlotName[ arabic ] = "Åáì ÑÃÓ ÇáÕÝÍÉ";
+ SlotName[ dutch ] = "Naar koptekst";
+ SlotName[ chinese_simplified ] = "תµ½Ò³Ã¼";
+ SlotName[ greek ] = "Ðñïò êåöáëßäá";
+ SlotName[ korean ] = "¸Ó¸®±Û·Î";
+ SlotName[ turkish ] = "Üstbilgi";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TOOL_ANKER
+{
+ SlotName = "Verankerung wechseln";
+ SlotName [ english ] = "Verankerung wechseln";
+ SlotName[ english_us ] = "Change Anchor";
+ SlotName[ portuguese ] = "Substituir âncora";
+ SlotName[ russian ] = "Èçìåíèòü ïðèâÿçêó";
+ SlotName[ dutch ] = "Verankering wisselen";
+ SlotName[ french ] = "Changer d'ancrage";
+ SlotName[ spanish ] = "Cambiar ancla";
+ SlotName[ italian ] = "Commuta l'ancoraggio";
+ SlotName[ danish ] = "Skift ankerpunkt";
+ SlotName[ swedish ] = "Byt förankring";
+ SlotName[ polish ] = "Wymieñ zakotwiczenie";
+ SlotName[ portuguese_brazilian ] = "AnchorTypeChange";
+ SlotName[ japanese ] = "±Ý¶°‚Ì•ÏX";
+ SlotName[ chinese_simplified ] = "¸ü¸ÄËø¶¨";
+ SlotName[ chinese_traditional ] = "ÅܧóÂê©w";
+ SlotName[ arabic ] = "ÊÛííÑ ÇáÅÑÓÇÁ";
+ SlotName[ dutch ] = "Verankering wisselen";
+ SlotName[ chinese_simplified ] = "¸ü¸ÄËø¶¨";
+ SlotName[ greek ] = "ÁëëáãÞ áãêýñùóçò";
+ SlotName[ korean ] = "°íÁ¤À§Ä¡ º¯°æ";
+ SlotName[ turkish ] = "Sabitleme türünü deðiþtir";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TOOL_ANKER_AT_CHAR
+{
+ SlotName = "Am Zeichen verankern";
+ SlotName [ english ] = "Am Zeichen verankern";
+ SlotName[ english_us ] = "Anchor to Character";
+ SlotName[ portuguese ] = "Âncora no carácter";
+ SlotName[ russian ] = "Ïðèâÿçàòü ê çíàêó";
+ SlotName[ dutch ] = "Aan teken verankeren";
+ SlotName[ french ] = "Ancrage au caractère";
+ SlotName[ spanish ] = "Anclar al carácter";
+ SlotName[ italian ] = "Ancora al carattere";
+ SlotName[ danish ] = "Forankring til tegnet";
+ SlotName[ swedish ] = "Förankra vid tecknet";
+ SlotName[ polish ] = "Zakotwicz przy znaku";
+ SlotName[ portuguese_brazilian ] = "Anchor at Character";
+ SlotName[ japanese ] = "•¶Žš‚ɱݶ°‚·‚é";
+ SlotName[ chinese_simplified ] = "±ê¼ÇÔÚ×Ö·ûÉÏ";
+ SlotName[ chinese_traditional ] = "¼Ð°O¦b¦r¤¸¤W";
+ SlotName[ arabic ] = "ÅÑÓÇÁ Úáì ÇáÃÍÑÝ";
+ SlotName[ dutch ] = "Aan teken verankeren";
+ SlotName[ chinese_simplified ] = "±ê¼ÇÔÚ×Ö·ûÉÏ";
+ SlotName[ greek ] = "Áãêýñùóç óôïí ÷áñáêôÞñá";
+ SlotName[ korean ] = "¹®ÀÚ¿¡ À§Ä¡°íÁ¤";
+ SlotName[ turkish ] = "Karaktere sabitle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TOOL_ANKER_CHAR
+{
+ SlotName = "Am Zeichen verankern";
+ SlotName [ english ] = "Am Zeichen verankern";
+ SlotName[ english_us ] = "Anchor to Character";
+ SlotName[ portuguese ] = "Âncora no carácter";
+ SlotName[ russian ] = "Ïðèâÿçàòü ê çíàêó";
+ SlotName[ dutch ] = "Aan teken verankeren";
+ SlotName[ french ] = "Ancrage au caractère";
+ SlotName[ spanish ] = "Anclar al carácter";
+ SlotName[ italian ] = "Ancora al carattere";
+ SlotName[ danish ] = "Forankring til tegnet";
+ SlotName[ swedish ] = "Förankra vid tecknet";
+ SlotName[ polish ] = "Zakotwicz przy znaku";
+ SlotName[ portuguese_brazilian ] = "SetAnchorToCharachter";
+ SlotName[ japanese ] = "•¶Žš‚ɱݶ°‚·‚é";
+ SlotName[ chinese_simplified ] = "Ëø¶¨ÔÚ×Ö·ûÉÏ";
+ SlotName[ chinese_traditional ] = "¦b¦r¤¸§@¼Ð¸¹";
+ SlotName[ arabic ] = "ÅÑÓÇÁ Úáì ÇáÃÍÑÝ";
+ SlotName[ dutch ] = "Aan teken verankeren";
+ SlotName[ chinese_simplified ] = "Ëø¶¨ÔÚ×Ö·ûÉÏ";
+ SlotName[ greek ] = "Áãêýñùóç óôïí ÷áñáêôÞñá";
+ SlotName[ korean ] = "¹®ÀÚ¿¡ À§Ä¡°íÁ¤";
+ SlotName[ turkish ] = "Karaktere sabitle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TOOL_ANKER_FRAME
+{
+ SlotName = "Am Rahmen verankern";
+ SlotName [ english ] = "Am Rahmen verankern";
+ SlotName[ english_us ] = "Anchor To Frame";
+ SlotName[ portuguese ] = "Âncora na moldura";
+ SlotName[ russian ] = "Ïðèâÿçàòü ê ðàìêå";
+ SlotName[ dutch ] = "Aan kader verankeren";
+ SlotName[ french ] = "Ancrage au cadre";
+ SlotName[ spanish ] = "Anclar al marco";
+ SlotName[ italian ] = "Ancora alla cornice";
+ SlotName[ danish ] = "Forankring til rammen";
+ SlotName[ swedish ] = "Förankra vid ramen";
+ SlotName[ polish ] = "Zakotwicz przy ramce";
+ SlotName[ portuguese_brazilian ] = "SetAnchorToFrame";
+ SlotName[ japanese ] = "˜g‚ɱݶ°‚·‚é";
+ SlotName[ chinese_simplified ] = "Ëø¶¨ÔÚ¿òÉÏ";
+ SlotName[ chinese_traditional ] = "¦b®Ø¤W§@¼Ð¸¹";
+ SlotName[ arabic ] = "ÅÑÓÇÁ Úáì ÇáÅØÇÑ";
+ SlotName[ dutch ] = "Aan kader verankeren";
+ SlotName[ chinese_simplified ] = "Ëø¶¨ÔÚ¿òÉÏ";
+ SlotName[ greek ] = "Áãêýñùóç óôï ðëáßóéï";
+ SlotName[ korean ] = "ÇÁ·¹ÀÓ¿¡ À§Ä¡°íÁ¤";
+ SlotName[ turkish ] = "Çerçeveye sabitle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TOOL_ANKER_PAGE
+{
+ SlotName = "An der Seite verankern";
+ SlotName [ english ] = "An der Seite verankern";
+ SlotName[ english_us ] = "Anchor To Page";
+ SlotName[ portuguese ] = "Âncora na página";
+ SlotName[ russian ] = "Ïðèâÿçàòü ê ñòðàíèöå";
+ SlotName[ dutch ] = "Aan pagina verankeren";
+ SlotName[ french ] = "Ancrage à la page";
+ SlotName[ spanish ] = "Anclar a la página";
+ SlotName[ italian ] = "Ancora alla pagina";
+ SlotName[ danish ] = "Forankring til siden";
+ SlotName[ swedish ] = "Förankra vid sidan";
+ SlotName[ polish ] = "Zakotwicz przy stronie";
+ SlotName[ portuguese_brazilian ] = "SetAnchorToPage";
+ SlotName[ japanese ] = "Íß°¼Þ‚ɱݶ°‚·‚é";
+ SlotName[ chinese_simplified ] = "Ëø¶¨ÔÚÒ³ÃæÉÏ";
+ SlotName[ chinese_traditional ] = "Âê©w¦b­¶­±¤W";
+ SlotName[ arabic ] = "ÅÑÓÇÁ Úáì ÇáÕÝÍÉ";
+ SlotName[ dutch ] = "Aan pagina verankeren";
+ SlotName[ chinese_simplified ] = "Ëø¶¨ÔÚÒ³ÃæÉÏ";
+ SlotName[ greek ] = "Áãêýñùóç óôç óåëßäá";
+ SlotName[ korean ] = "ÆäÀÌÁö À§Ä¡°íÁ¤";
+ SlotName[ turkish ] = "Sayfaya sabitle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TOOL_ANKER_PARAGRAPH
+{
+ SlotName = "Am Absatz verankern";
+ SlotName [ english ] = "Am Absatz verankern";
+ SlotName[ english_us ] = "Anchor To Paragraph";
+ SlotName[ portuguese ] = "Âncora no parágrafo";
+ SlotName[ russian ] = "Ïðèâÿçàòü ê àáçàöó";
+ SlotName[ dutch ] = "Aan alinea verankeren";
+ SlotName[ french ] = "Ancrage au paragraphe";
+ SlotName[ spanish ] = "Anclar en el párrafo";
+ SlotName[ italian ] = "Ancora al paragrafo";
+ SlotName[ danish ] = "Forankring til afsnittet";
+ SlotName[ swedish ] = "Förankra vid stycket";
+ SlotName[ polish ] = "Zakotwicz przy akapicie";
+ SlotName[ portuguese_brazilian ] = "SetAnchorToParagraph";
+ SlotName[ japanese ] = "’i—Ž‚ɱݶ°‚·‚é";
+ SlotName[ chinese_simplified ] = "Ëø¶¨ÔÚ¶ÎÂäÉÏ";
+ SlotName[ chinese_traditional ] = "¦b¬q¸¨¤W§@¼Ð¸¹";
+ SlotName[ arabic ] = "ÅÑÓÇÁ Úáì ÇáÝÞÑÉ";
+ SlotName[ dutch ] = "Aan alinea verankeren";
+ SlotName[ chinese_simplified ] = "Ëø¶¨ÔÚ¶ÎÂäÉÏ";
+ SlotName[ greek ] = "Áãêýñùóç óôç ðáñÜãñáöï";
+ SlotName[ korean ] = "´Ü¶ô¿¡ À§Ä¡°íÁ¤";
+ SlotName[ turkish ] = "Paragrafa sabitle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TOOL_GROUP
+{
+ SlotName = "Gruppierung";
+ SlotName [ english ] = "Gruppierung";
+ SlotName[ english_us ] = "Group";
+ SlotName[ portuguese ] = "Agrupar";
+ SlotName[ russian ] = "Ãðóïïèðîâàíèå";
+ SlotName[ dutch ] = "Groepering";
+ SlotName[ french ] = "Grouper";
+ SlotName[ spanish ] = "Agrupar";
+ SlotName[ italian ] = "Raggruppa";
+ SlotName[ danish ] = "Gruppering";
+ SlotName[ swedish ] = "Gruppering";
+ SlotName[ polish ] = "Zgrupowanie";
+ SlotName[ portuguese_brazilian ] = "FormatGroup";
+ SlotName[ japanese ] = "¸ÞÙ°Ì߉»";
+ SlotName[ chinese_simplified ] = "·Ö×é";
+ SlotName[ chinese_traditional ] = "¸s²Õ";
+ SlotName[ arabic ] = "ÊÌãíÚ";
+ SlotName[ dutch ] = "Groepering";
+ SlotName[ chinese_simplified ] = "·Ö×é";
+ SlotName[ greek ] = "Ïìáäïðïßçóç";
+ SlotName[ korean ] = "±×·ì";
+ SlotName[ turkish ] = "Grup";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TOOL_HIERARCHIE
+{
+ SlotName = "Lage wechseln";
+ SlotName [ english ] = "Lage wechseln";
+ SlotName[ english_us ] = "Change Position";
+ SlotName[ portuguese ] = "Mudar posição";
+ SlotName[ russian ] = "Ñìåíèòü ïîëîæåíèå";
+ SlotName[ dutch ] = "Positie veranderen";
+ SlotName[ french ] = "Changer la position";
+ SlotName[ spanish ] = "Cambiar posición";
+ SlotName[ italian ] = "Cambia posizione";
+ SlotName[ danish ] = "Modificer placering";
+ SlotName[ swedish ] = "Växla läge";
+ SlotName[ polish ] = "Zmieniæ po³o¿enie";
+ SlotName[ portuguese_brazilian ] = "ObjectLayerChange";
+ SlotName[ japanese ] = "ˆÊ’u‚Ì•ÏX";
+ SlotName[ chinese_simplified ] = "¸ü¸ÄλÖÃ";
+ SlotName[ chinese_traditional ] = "Åܧó¦ì¸m";
+ SlotName[ arabic ] = "ÊÛííÑ ÇáãæÖÚ";
+ SlotName[ dutch ] = "Positie veranderen";
+ SlotName[ chinese_simplified ] = "¸ü¸ÄλÖÃ";
+ SlotName[ greek ] = "ÁëëáãÞ èÝóçò";
+ SlotName[ korean ] = "À§Ä¡ º¯°æ";
+ SlotName[ turkish ] = "Konum deðiþtir";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TOOL_HMIRROR
+{
+ SlotName = "Horizontal spiegeln";
+ SlotName [ english ] = "Horizontal spiegeln";
+ SlotName[ english_us ] = "Flip Horizontal";
+ SlotName[ portuguese ] = "Reflectir na horizontal";
+ SlotName[ russian ] = "Îòîáðàçèòü ïî ãîðèçîíòàëè";
+ SlotName[ dutch ] = "Horizontaal spiegelen";
+ SlotName[ french ] = "Refléter horizontalement";
+ SlotName[ spanish ] = "Reflejar horizontalmente";
+ SlotName[ italian ] = "Rispecchia orizzontalmente";
+ SlotName[ danish ] = "Spejlvend vandret";
+ SlotName[ swedish ] = "Spegla horisontellt";
+ SlotName[ polish ] = "Przerzuæ w poziomie";
+ SlotName[ portuguese_brazilian ] = "ObjectFlipHorizontal";
+ SlotName[ japanese ] = "㉺”½“]";
+ SlotName[ chinese_simplified ] = "ˮƽ·½Ïò·´Ó³";
+ SlotName[ chinese_traditional ] = "¤ô¥­¤Ï¬M";
+ SlotName[ arabic ] = "ÇäÚßÇÓ ÃÝÞí";
+ SlotName[ dutch ] = "Horizontaal spiegelen";
+ SlotName[ chinese_simplified ] = "ˮƽ·½Ïò·´Ó³";
+ SlotName[ greek ] = "ÁíáóôñïöÞ ïñéæüíôéá";
+ SlotName[ korean ] = "¼öÆò ´ëĪ";
+ SlotName[ turkish ] = "Yatay yansýt";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TOOL_UNGROUP
+{
+ SlotName = "Gruppierung aufheben";
+ SlotName [ english ] = "Gruppierung aufheben";
+ SlotName[ english_us ] = "Ungroup";
+ SlotName[ portuguese ] = "Desagrupar";
+ SlotName[ russian ] = "Ðàçãðóïïèðîâàòü";
+ SlotName[ dutch ] = "Groepering opheffen";
+ SlotName[ french ] = "Dissocier";
+ SlotName[ spanish ] = "Desagrupar";
+ SlotName[ italian ] = "Sciogli gruppo";
+ SlotName[ danish ] = "Ophæv gruppering";
+ SlotName[ swedish ] = "Upphäv gruppering";
+ SlotName[ polish ] = "Rozgrupuj";
+ SlotName[ portuguese_brazilian ] = "FormatUngroup";
+ SlotName[ japanese ] = "¸ÞÙ°Ì߉ðœ";
+ SlotName[ chinese_simplified ] = "È¡Ïû·Ö×é";
+ SlotName[ chinese_traditional ] = "¨ú®ø¸s²Õ";
+ SlotName[ arabic ] = "ÅÒÇáÉ ÇáÊÌãíÚ";
+ SlotName[ dutch ] = "Groepering opheffen";
+ SlotName[ chinese_simplified ] = "È¡Ïû·Ö×é";
+ SlotName[ greek ] = "ÊáôÜñãçóç ïìáäïðïßçóçò";
+ SlotName[ korean ] = "±×·ì ÇØü";
+ SlotName[ turkish ] = "Grubu çöz";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_TOOL_VMIRROR
+{
+ SlotName = "Vertikal spiegeln";
+ SlotName [ english ] = "Vertikal spiegeln";
+ SlotName[ english_us ] = "Flip Vertical";
+ SlotName[ portuguese ] = "Reflectir na vertical";
+ SlotName[ russian ] = "Îòîáðàçèòü ïî âåðòèêàëè";
+ SlotName[ dutch ] = "Verticaal spiegelen";
+ SlotName[ french ] = "Refléter verticalement";
+ SlotName[ spanish ] = "Reflejar verticalmente";
+ SlotName[ italian ] = "Rispecchia verticalmente";
+ SlotName[ danish ] = "Spejlvend lodret";
+ SlotName[ swedish ] = "Spegla vertikalt";
+ SlotName[ polish ] = "Przerzuæ w pionie";
+ SlotName[ portuguese_brazilian ] = "ObjectFlipVertical";
+ SlotName[ japanese ] = "¶‰E”½“]";
+ SlotName[ chinese_simplified ] = "´¹Ö±·½Ïò·´Ó³";
+ SlotName[ chinese_traditional ] = "««ª½¤Ï¬M";
+ SlotName[ arabic ] = "ÇáÇäÚßÇÓ ÑÃÓíÇð";
+ SlotName[ dutch ] = "Verticaal spiegelen";
+ SlotName[ chinese_simplified ] = "´¹Ö±·½Ïò·´Ó³";
+ SlotName[ greek ] = "ÁíáóôñïöÞ êáôáêüñõöá";
+ SlotName[ korean ] = "¼öÁ÷ ´ëĪ";
+ SlotName[ turkish ] = "Dikey yansýt";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_UNDERLINE_DOUBLE
+{
+ SlotName = "Doppelt unterstrichen";
+ SlotName [ english ] = "Doppelt unterstrichen";
+ SlotName[ english_us ] = "Double Underline ";
+ SlotName[ portuguese ] = "Sublinhado duplo";
+ SlotName[ russian ] = "Äâîéíîå ïîä÷åðêèâàíèå";
+ SlotName[ dutch ] = "Dubbel onderstreept";
+ SlotName[ french ] = "Soulignage double";
+ SlotName[ spanish ] = "Subrayado doble";
+ SlotName[ italian ] = "Sottolinea doppio";
+ SlotName[ danish ] = "Dobbelt understreget";
+ SlotName[ swedish ] = "Dubbelt understruket";
+ SlotName[ polish ] = "Podwójne podkreœlenie";
+ SlotName[ portuguese_brazilian ] = "UnderlineDouble";
+ SlotName[ japanese ] = "Җd伟";
+ SlotName[ chinese_simplified ] = "Ë«Ï»®Ïß";
+ SlotName[ chinese_traditional ] = "Âù¹º½u";
+ SlotName[ arabic ] = "ÎØ ÊÍÊí ãÒÏæÌ";
+ SlotName[ dutch ] = "Dubbel onderstreept";
+ SlotName[ chinese_simplified ] = "Ë«Ï»®Ïß";
+ SlotName[ greek ] = "ÄéðëÞ õðïãñÜììéóç";
+ SlotName[ korean ] = "2Áß ¹ØÁÙ";
+ SlotName[ turkish ] = "Çift çizgi";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_UPDATE_ALL
+{
+ SlotName = "Alles Aktualisieren";
+ SlotName [ english ] = "Alles Aktualisieren";
+ SlotName[ english_us ] = "Update All";
+ SlotName[ portuguese ] = "Actualizar tudo";
+ SlotName[ russian ] = "Îáíîâèòü âñå";
+ SlotName[ dutch ] = "Alles actualiseren";
+ SlotName[ french ] = "Tout actualiser";
+ SlotName[ spanish ] = "Actualizar todo";
+ SlotName[ italian ] = "Aggiorna tutto";
+ SlotName[ danish ] = "Opdater alt";
+ SlotName[ swedish ] = "Uppdatera allt";
+ SlotName[ polish ] = "Aktualizuj wszystko";
+ SlotName[ portuguese_brazilian ] = "UpdateAll";
+ SlotName[ japanese ] = "‚·‚ׂĂðXV";
+ SlotName[ chinese_simplified ] = "È«²¿¸üÐÂ";
+ SlotName[ chinese_traditional ] = "¥þ³¡§ó·s";
+ SlotName[ arabic ] = "ÊÍÏíË Çáßá";
+ SlotName[ dutch ] = "Alles actualiseren";
+ SlotName[ chinese_simplified ] = "È«²¿¸üÐÂ";
+ SlotName[ greek ] = "ÅíçìÝñùóç üëùí";
+ SlotName[ korean ] = "Àüü ¾÷ µ¥ÀÌÆ®";
+ SlotName[ turkish ] = "Tümünü güncelle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_UPDATE_ALL_LINKS
+{
+ SlotName = "Verknüpfungen aktualisieren";
+ SlotName [ english ] = "Verknüpfungen aktualisieren";
+ SlotName[ english_us ] = "Update All Links";
+ SlotName[ portuguese ] = "Actualizar ligações";
+ SlotName[ russian ] = "Îáíîâèòü ññûëêè";
+ SlotName[ dutch ] = "Koppelingen actualiseren";
+ SlotName[ french ] = "Actualiser les liens";
+ SlotName[ spanish ] = "Actualizar todos los vínculos";
+ SlotName[ italian ] = "Aggiorna collegamenti";
+ SlotName[ danish ] = "Opdater kæder";
+ SlotName[ swedish ] = "Uppdatera länkar";
+ SlotName[ polish ] = "Aktualizuj ³¹cza";
+ SlotName[ portuguese_brazilian ] = "UpdateAllLinks";
+ SlotName[ japanese ] = "Øݸ‚ÌXV";
+ SlotName[ chinese_simplified ] = "¸üÐÂÁ´½Ó";
+ SlotName[ chinese_traditional ] = "§ó·s±¶®|";
+ SlotName[ arabic ] = "ÊÍÏíË ßá ÇáÇÑÊÈÇØÇÊ";
+ SlotName[ dutch ] = "Koppelingen actualiseren";
+ SlotName[ chinese_simplified ] = "¸üÐÂÁ´½Ó";
+ SlotName[ greek ] = "ÅíçìÝñùóç üëùí ôùí óõíäÝóåùí";
+ SlotName[ korean ] = "¸ðµç ¿¬°á ¾÷ µ¥ÀÌÆ®";
+ SlotName[ turkish ] = "Baðlantýlarý güncelle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_UPDATE_CUR_TOX
+{
+ SlotName = "Verzeichnis aktualisieren";
+ SlotName [ english ] = "Verzeichnis aktualisieren";
+ SlotName[ english_us ] = "Update Index";
+ SlotName[ portuguese ] = "Actualizar índice";
+ SlotName[ russian ] = "Îáíîâèòü óêàçàòåëü";
+ SlotName[ dutch ] = "Index actualiseren";
+ SlotName[ french ] = "Actualiser l'index";
+ SlotName[ spanish ] = "Actualizar índice";
+ SlotName[ italian ] = "Aggiorna indice";
+ SlotName[ danish ] = "Opdater indeks";
+ SlotName[ swedish ] = "Uppdatera förteckning";
+ SlotName[ polish ] = "Aktualizuj indeks";
+ SlotName[ portuguese_brazilian ] = "Optimize";
+ SlotName[ japanese ] = "õˆø€–Ú‚ÌXV";
+ SlotName[ chinese_simplified ] = "¸üÐÂĿ¼";
+ SlotName[ chinese_traditional ] = "§ó·s¥Ø¿ý";
+ SlotName[ arabic ] = "ÊÍÏíË ÇáÝåÑÓ";
+ SlotName[ dutch ] = "Index actualiseren";
+ SlotName[ chinese_simplified ] = "¸üÐÂĿ¼";
+ SlotName[ greek ] = "ÅíçìÝñùóç åõñåôçñßïõ";
+ SlotName[ korean ] = "»öÀÎ ¾÷ µ¥ÀÌÆ®";
+ SlotName[ turkish ] = "Dizini güncelle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_EDIT_CURRENT_TOX
+{
+ SlotName = "Verzeichnis bearbeiten";
+ SlotName [ english ] = "Edit index";
+ SlotName[ english_us ] = "Edit index";
+ SlotName[ portuguese ] = "Editar índice";
+ SlotName[ greek ] = "Åðåîåñãáóßá åõñåôçñßïõ";
+ SlotName[ dutch ] = "Index bewerken";
+ SlotName[ french ] = "Modifier l'index";
+ SlotName[ spanish ] = "Editar índice";
+ SlotName[ swedish ] = "Redigera förteckning";
+ SlotName[ russian ] = "Ïðàâêà óêàçàòåëÿ";
+ SlotName[ italian ] = "Modifica indice";
+ SlotName[ danish ] = "Rediger indeks";
+ SlotName[ polish ] = "Edytuj indeks";
+ SlotName[ portuguese_brazilian ] = "Edit index";
+ SlotName[ japanese ] = "õˆø‚Ì•ÒW";
+ SlotName[ korean ] = "»öÀÎ ÆíÁý";
+ SlotName[ chinese_simplified ] = "±à¼­Ä¿Â¼";
+ SlotName[ chinese_traditional ] = "½s¿è¥Ø¿ý";
+ SlotName[ arabic ] = "ÊÍÑíÑ ÝåÑÓ";
+ SlotName[ turkish ] = "Dizini düzenle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_UPDATE_FIELDS
+{
+ SlotName = "Felder aktualisieren";
+ SlotName [ english ] = "Felder aktualisieren";
+ SlotName[ english_us ] = "Update Fields";
+ SlotName[ portuguese ] = "Actualizar campos";
+ SlotName[ russian ] = "Îáíîâèòü ïîëÿ";
+ SlotName[ dutch ] = "Velden actualisern";
+ SlotName[ french ] = "Actualiser les champs";
+ SlotName[ spanish ] = "Actualizar campos";
+ SlotName[ italian ] = "UpdateFields";
+ SlotName[ danish ] = "Opdater felter";
+ SlotName[ swedish ] = "Uppdatera fält";
+ SlotName[ polish ] = "Aktualizuj pola";
+ SlotName[ portuguese_brazilian ] = "FieldsUpdate";
+ SlotName[ japanese ] = "̨°ÙÄÞ‚ÌXV";
+ SlotName[ chinese_simplified ] = "¸üÐÂ×Ö¶Î";
+ SlotName[ chinese_traditional ] = "§ó·sÄæ¦ì";
+ SlotName[ arabic ] = "ÊÍÏíË ÇáÍÞæá";
+ SlotName[ dutch ] = "Velden actualisern";
+ SlotName[ chinese_simplified ] = "¸üÐÂ×Ö¶Î";
+ SlotName[ greek ] = "ÅíçìÝñùóç ðåäßùí";
+ SlotName[ korean ] = "ÇÊµå ¾÷ µ¥ÀÌÆ®";
+ SlotName[ turkish ] = "Alanlarý güncelle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_UPDATE_INPUTFIELDS
+{
+ SlotName = "Eingabefelder aktualisieren";
+ SlotName [ english ] = "Eingabefelder aktualisieren";
+ SlotName[ english_us ] = "Update Input Fields";
+ SlotName[ portuguese ] = "Actualizar campos de entrada";
+ SlotName[ russian ] = "Îáíîâèòü ïîëÿ ââîäà";
+ SlotName[ dutch ] = "Invoervelden actualiseren";
+ SlotName[ french ] = "Actualiser les champs de saisie";
+ SlotName[ spanish ] = "Actualizar campos para entradas";
+ SlotName[ italian ] = "Aggiorna caselle digitazione";
+ SlotName[ danish ] = "Opdater input-felter";
+ SlotName[ swedish ] = "Uppdatera inmatningsfält";
+ SlotName[ polish ] = "Aktualizuj pola wprowadzania";
+ SlotName[ portuguese_brazilian ] = "InputfieldsUpdate";
+ SlotName[ japanese ] = "“ü—ÍÎÞ¯¸½‚ÌXV";
+ SlotName[ chinese_simplified ] = "¸üÐÂÊäÈë×Ö¶Î";
+ SlotName[ chinese_traditional ] = "§ó·s¿é¤JÄæ¦ì";
+ SlotName[ arabic ] = "ÊÍÏíË ÍÞæá ÇáÅÏÎÇá";
+ SlotName[ dutch ] = "Invoervelden actualiseren";
+ SlotName[ chinese_simplified ] = "¸üÐÂÊäÈë×Ö¶Î";
+ SlotName[ greek ] = "ÅíçìÝñùóç ðåäßùí åéóáãùãÞò";
+ SlotName[ korean ] = "ÀÔ·Â ÇÊµå ¾÷ µ¥ÀÌÆ®";
+ SlotName[ turkish ] = "Giriþ alanlarýný güncelle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_UPDATE_TOX
+{
+ SlotName = "Verzeichnisse aktualisieren";
+ SlotName [ english ] = "Verzeichnisse aktualisieren";
+ SlotName[ english_us ] = "Update Indexes";
+ SlotName[ portuguese ] = "Actualizar índices";
+ SlotName[ russian ] = "Îáíîâèòü óêàçàòåëè";
+ SlotName[ dutch ] = "Indices actualiseren";
+ SlotName[ french ] = "Actualiser les index";
+ SlotName[ spanish ] = "Actualizar índices";
+ SlotName[ italian ] = "Aggiorna indici";
+ SlotName[ danish ] = "Opdater alle indeks";
+ SlotName[ swedish ] = "Uppdatera förteckningar";
+ SlotName[ polish ] = "Aktualizuj indeksy";
+ SlotName[ portuguese_brazilian ] = "UpdateAllIndexes";
+ SlotName[ japanese ] = "–ÚŽŸ‚Æõˆø‚ÌXV";
+ SlotName[ chinese_simplified ] = "¸üÐÂĿ¼";
+ SlotName[ chinese_traditional ] = "§ó·s¥Ø¿ý";
+ SlotName[ arabic ] = "ÊÍÏíË ÇáÝåÇÑÓ";
+ SlotName[ dutch ] = "Indices actualiseren";
+ SlotName[ chinese_simplified ] = "¸üÐÂĿ¼";
+ SlotName[ greek ] = "ÅíçìÝñùóç åõñåôçñßùí";
+ SlotName[ korean ] = "»öÀÎ ¾÷ µ¥ÀÌÆ®";
+ SlotName[ turkish ] = "Dizinleri güncelle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_VIEW_BOUNDS
+{
+ SlotName = "Textbegrenzungen";
+ SlotName [ english ] = "Textbegrenzungen";
+ SlotName[ english_us ] = "Text Limits";
+ SlotName[ portuguese ] = "Limites do texto";
+ SlotName[ russian ] = "Ãðàíèöû òåêñòà";
+ SlotName[ dutch ] = "Tekstbegrenzingen";
+ SlotName[ french ] = "Délimitations du texte";
+ SlotName[ spanish ] = "Límites del texto";
+ SlotName[ italian ] = "Margini del testo";
+ SlotName[ danish ] = "Tekstmargener";
+ SlotName[ swedish ] = "Textbegränsningar";
+ SlotName[ polish ] = "Granice tekstu";
+ SlotName[ portuguese_brazilian ] = "ViewTextBounds";
+ SlotName[ japanese ] = "÷½Ä‚Ì‹«ŠE";
+ SlotName[ chinese_simplified ] = "ÕýÎı߽ç";
+ SlotName[ chinese_traditional ] = "¤º¤åÃä¬É";
+ SlotName[ arabic ] = "ÍÏæÏ ÇáäÕ";
+ SlotName[ dutch ] = "Tekstbegrenzingen";
+ SlotName[ chinese_simplified ] = "ÕýÎı߽ç";
+ SlotName[ greek ] = "¼ñéá êåéìÝíïõ";
+ SlotName[ korean ] = "ÅؽºÆ® °æ°è¼±";
+ SlotName[ turkish ] = "Metin sýnýrlarý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_VIEW_FIELDNAME
+{
+ SlotName = "Feldnamen ein/aus";
+ SlotName [ english ] = "Feldnamen ein/aus";
+ SlotName[ english_us ] = "Field Names On/Off";
+ SlotName[ portuguese ] = "Mostrar nomes de campos";
+ SlotName[ russian ] = "Âêë./Îòêë. èìåíà ïîëÿ";
+ SlotName[ dutch ] = "Veldnamen aan/uit";
+ SlotName[ french ] = "Afficher/masquer les noms de champ";
+ SlotName[ spanish ] = "Mostrar/ocultar nombre de campos";
+ SlotName[ italian ] = "Mostra/nascondi i nomi di campo ";
+ SlotName[ danish ] = "Feltnavn til/fra";
+ SlotName[ swedish ] = "Fältnamn på/av";
+ SlotName[ polish ] = "W³¹cz/Wy³¹cz nazwy pól";
+ SlotName[ portuguese_brazilian ] = "ViewFieldNames";
+ SlotName[ japanese ] = "̨°ÙÄÞ–¼ µÝ/µÌ";
+ SlotName[ chinese_simplified ] = "ÏÔʾ/ÒþÈë×Ö¶ÎÃû³Æ";
+ SlotName[ chinese_traditional ] = "Åã¥Ü/Áô¤JÄæ¦ì¦WºÙ";
+ SlotName[ arabic ] = "ÅÙåÇÑ/ÅÎÝÇÁ ÃÓãÇÁ ÇáÍÞæá";
+ SlotName[ dutch ] = "Veldnamen aan/uit";
+ SlotName[ chinese_simplified ] = "ÏÔʾ/ÒþÈë×Ö¶ÎÃû³Æ";
+ SlotName[ greek ] = "Ïíüìáôá ðåäßùí Íáé/¼÷é";
+ SlotName[ korean ] = "Çʵå À̸§ ÀÛµ¿/ÇØÁ¦";
+ SlotName[ turkish ] = "Alan adlarýný görüntüle/gizle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_VIEW_FIELDS
+{
+ SlotName = "Feldbefehle";
+ SlotName [ english ] = "Feldbefehle";
+ SlotName[ english_us ] = "Fields";
+ SlotName[ portuguese ] = "Códigos de campo";
+ SlotName[ russian ] = "Ïîëå";
+ SlotName[ dutch ] = "Veldopdrachten";
+ SlotName[ french ] = "Instructions de champ";
+ SlotName[ spanish ] = "Códigos de campo";
+ SlotName[ italian ] = "Comandi di campo";
+ SlotName[ danish ] = "Felter";
+ SlotName[ swedish ] = "Fältkommandon";
+ SlotName[ polish ] = "Pola";
+ SlotName[ portuguese_brazilian ] = "ViewFieldCodes";
+ SlotName[ japanese ] = "̨°ÙÄÞ";
+ SlotName[ chinese_simplified ] = "×Ö¶ÎÖ¸Áî";
+ SlotName[ chinese_traditional ] = "Äæ¦ì«ü¥O";
+ SlotName[ arabic ] = "ÍÞæá";
+ SlotName[ dutch ] = "Veldopdrachten";
+ SlotName[ chinese_simplified ] = "×Ö¶ÎÖ¸Áî";
+ SlotName[ greek ] = "ÅíôïëÝò ðåäßïõ";
+ SlotName[ korean ] = "Çʵå";
+ SlotName[ turkish ] = "Alan öðeleri";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_VIEW_GRAPHIC
+{
+ SlotName = "Grafik ein/aus";
+ SlotName [ english ] = "Graphics On/Off";
+ SlotName[ english_us ] = "Graphics on/off";
+ SlotName[ portuguese ] = "Mostrar/Ocultar imagem";
+ SlotName[ russian ] = "Ðèñóíîê";
+ SlotName[ greek ] = "Ãñáöéêü Íáé/¼÷é";
+ SlotName[ dutch ] = "Afbeelding aan/uit";
+ SlotName[ french ] = "Afficher/masquer les images";
+ SlotName[ spanish ] = "Imagen";
+ SlotName[ italian ] = "Immagine";
+ SlotName[ danish ] = "Grafik til/fra";
+ SlotName[ swedish ] = "Grafik på/av";
+ SlotName[ polish ] = "W³¹cz/Wy³¹cz grafikê";
+ SlotName[ portuguese_brazilian ] = "ViewGraphic";
+ SlotName[ japanese ] = "} µÝ/µÌ";
+ SlotName[ korean ] = "±×·¡ÇÈ";
+ SlotName[ chinese_simplified ] = "ÏÔʾ/ÒþÈë ͼÐÎ";
+ SlotName[ chinese_traditional ] = "Åã¥Ü©ÎÁô¤J¹Ï¤ù";
+ SlotName[ turkish ] = "Grafik";
+ SlotName[ arabic ] = "ÅÙåÇÑ/ÅÎÝÇÁ ÇáÕæÑÉ";
+};
+SfxSlotInfo FN_VIEW_HIDDEN_PARA
+{
+ SlotName = "Versteckte Absätze";
+ SlotName [ english ] = "Versteckte Absätze";
+ SlotName[ english_us ] = "Hidden Paragraphs";
+ SlotName[ portuguese ] = "Parágrafos ocultos";
+ SlotName[ russian ] = "Ñêðûòûå àáçàöû";
+ SlotName[ dutch ] = "Verborgen alinea´s";
+ SlotName[ french ] = "Afficher paragraphes masqués";
+ SlotName[ spanish ] = "Párrafos ocultos";
+ SlotName[ italian ] = "Paragrafi nascosti";
+ SlotName[ danish ] = "Skjulte afsnit";
+ SlotName[ swedish ] = "Dolda stycken";
+ SlotName[ polish ] = "Ukryte akapity";
+ SlotName[ portuguese_brazilian ] = "ShowHiddenParagraphs";
+ SlotName[ japanese ] = "‰B‚µ’i—Ž";
+ SlotName[ chinese_simplified ] = "ÒþÈëµÄ¶ÎÂä";
+ SlotName[ chinese_traditional ] = "Áô¤Jªº¬q¸¨";
+ SlotName[ arabic ] = "ÝÞÑÇÊ ãÎÝíÉ";
+ SlotName[ dutch ] = "Verborgen alinea´s";
+ SlotName[ chinese_simplified ] = "ÒþÈëµÄ¶ÎÂä";
+ SlotName[ greek ] = "ÊñõöÞ ðáñÜãñáöïò";
+ SlotName[ korean ] = "¼û°ÜÁø ´Ü¶ô";
+ SlotName[ turkish ] = "Gizli paragraflar";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_VIEW_MARKS
+{
+ SlotName = "Marken";
+ SlotName [ english ] = "Marken";
+ SlotName[ english_us ] = "Field Shadings";
+ SlotName[ portuguese ] = "Destaques";
+ SlotName[ russian ] = "Ìåòêè";
+ SlotName[ dutch ] = "Markeringen";
+ SlotName[ french ] = "Marques";
+ SlotName[ spanish ] = "Marcas";
+ SlotName[ italian ] = "Selezioni";
+ SlotName[ danish ] = "Markeringer";
+ SlotName[ swedish ] = "Markeringar";
+ SlotName[ polish ] = "Znaczniki";
+ SlotName[ portuguese_brazilian ] = "ViewMarks";
+ SlotName[ japanese ] = "‘I‘ð";
+ SlotName[ chinese_simplified ] = "Óòµ×ÎÆ";
+ SlotName[ chinese_traditional ] = "°ì©³¯¾";
+ SlotName[ arabic ] = "ÚáÇãÇÊ";
+ SlotName[ dutch ] = "Markeringen";
+ SlotName[ chinese_simplified ] = "Óòµ×ÎÆ";
+ SlotName[ greek ] = "ÓçìÜäé";
+ SlotName[ korean ] = "Çʵå À½¿µ";
+ SlotName[ turkish ] = "Belirteçler";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_VIEW_META_CHARS
+{
+ SlotName = "Steuerzeichen ein/aus";
+ SlotName [ english ] = "Nonprinting Characters on/off";
+ SlotName[ english_us ] = "Nonprinting Characters on/off";
+ SlotName[ portuguese ] = "Mostrar/Ocultar caracteres não imprimíveis";
+ SlotName[ russian ] = "Íåïå÷àòàåìûå ñèìâîëû";
+ SlotName[ greek ] = "Ìç åêôõðþóéìïé ÷áñáêôÞñåò Íáé/¼÷é";
+ SlotName[ dutch ] = "Besturingstekens aan/uit";
+ SlotName[ french ] = "Afficher/masquer les caractères non imprimables";
+ SlotName[ spanish ] = "Caracteres no imprimibles";
+ SlotName[ italian ] = "Caratteri non stampabili";
+ SlotName[ danish ] = "Kontroltegn til/fra";
+ SlotName[ swedish ] = "Styrtecken";
+ SlotName[ polish ] = "W³¹cz/Wy³¹cz znaki niedrukowalne";
+ SlotName[ portuguese_brazilian ] = "ViewControlCodes";
+ SlotName[ japanese ] = "•ÒW‹L† µÝ/µÌ";
+ SlotName[ korean ] = "ÀμâÇÒ¼ö ¾ø´Â ¹®ÀÚ";
+ SlotName[ chinese_simplified ] = "ÏÔʾ/ÒþÈë ¿ØÖÆ·û";
+ SlotName[ chinese_traditional ] = "Åã¥Ü©ÎÁô¤J±±¨î²Å¸¹";
+ SlotName[ turkish ] = "Denetim karakterleri";
+ SlotName[ arabic ] = "ÅÙåÇÑ/ÅÎÝÇÁ ÇáÃÍÑÝ ÇáÊí áÇ ÊõØÈÚ";
+};
+SfxSlotInfo FN_VIEW_TABLEGRID
+{
+ SlotName = "Tabellenbegrenzungen";
+ SlotName [ english ] = "Tabellenbegrenzungen";
+ SlotName[ english_us ] = "Table Limits";
+ SlotName[ portuguese ] = "Margens da tabela";
+ SlotName[ russian ] = "Îãðàíè÷åíèÿ òàáëèöû";
+ SlotName[ dutch ] = "Tabelbegrenzingen";
+ SlotName[ french ] = "Limiteurs de tableaux";
+ SlotName[ spanish ] = "Límites de la tabla";
+ SlotName[ italian ] = "Limiti tabella";
+ SlotName[ danish ] = "Tabelgrænser";
+ SlotName[ swedish ] = "Tabellbegränsningar";
+ SlotName[ polish ] = "Obramowanie tabeli";
+ SlotName[ portuguese_brazilian ] = "ViewTableBoundaries";
+ SlotName[ japanese ] = "•\\‚Ì‹«ŠE";
+ SlotName[ chinese_simplified ] = "±í¸ñ±ß½ç";
+ SlotName[ chinese_traditional ] = "ªí®æÃä¬É";
+ SlotName[ arabic ] = "ÍÏæÏ ÇáÌÏæá";
+ SlotName[ dutch ] = "Tabelbegrenzingen";
+ SlotName[ chinese_simplified ] = "±í¸ñ±ß½ç";
+ SlotName[ greek ] = "¼ñéá ðßíáêá";
+ SlotName[ korean ] = "Ç¥ °æ°è¼±";
+ SlotName[ turkish ] = "Tablo sýnýrlarý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_VLINEAL
+{
+ SlotName = "Vertikales Lineal";
+ SlotName [ english ] = "Vertikales Lineal";
+ SlotName[ english_us ] = "Vertical Ruler";
+ SlotName[ portuguese ] = "Mostrar régua vertical";
+ SlotName[ russian ] = "Âåðòèêàëüíàÿ ëèíåéêà";
+ SlotName[ dutch ] = "Verticale liniaal";
+ SlotName[ french ] = "Règle verticale";
+ SlotName[ spanish ] = "Regla vertical";
+ SlotName[ italian ] = "Righello verticale";
+ SlotName[ danish ] = "Lodret lineal";
+ SlotName[ swedish ] = "Vertikal linjal";
+ SlotName[ polish ] = "Pionowa linijka";
+ SlotName[ portuguese_brazilian ] = "ViewVertRuler";
+ SlotName[ japanese ] = "‚’¼Ù°×";
+ SlotName[ chinese_simplified ] = "´¹Ö±±ê³ß";
+ SlotName[ chinese_traditional ] = "««ª½¼Ð¤Ø";
+ SlotName[ arabic ] = "ãÓØÑÉ ÑÃÓíÉ";
+ SlotName[ dutch ] = "Verticale liniaal";
+ SlotName[ chinese_simplified ] = "´¹Ö±±ê³ß";
+ SlotName[ greek ] = "Êáôáêüñõöïò ÷Üñáêáò";
+ SlotName[ korean ] = "¼öÁ÷ ´«±ÝÀÚ";
+ SlotName[ turkish ] = "Dikey cetvel";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_VSCROLLBAR
+{
+ SlotName = "Vertikale Bildlaufleiste";
+ SlotName [ english ] = "Vertikale Bildlaufleiste";
+ SlotName[ english_us ] = "Vertical Scroll bar";
+ SlotName[ portuguese ] = "Barra de deslocamento vertical";
+ SlotName[ russian ] = "Âåðòèêàëüíàÿ ïîëîñà ïðîêðóòêè";
+ SlotName[ dutch ] = "Verticale schuifbalk";
+ SlotName[ french ] = "Barre de défilement verticale";
+ SlotName[ spanish ] = "Barra de desplazamiento vertical";
+ SlotName[ italian ] = "Barra di scorrimento verticale";
+ SlotName[ danish ] = "Lodret rullepanel";
+ SlotName[ swedish ] = "Vertikal bildrullningslist";
+ SlotName[ polish ] = "Pionowy pasek przewijania obrazu";
+ SlotName[ portuguese_brazilian ] = "ViewVertScroll";
+ SlotName[ japanese ] = "‚’¼½¸Û°ÙÊÞ°";
+ SlotName[ chinese_simplified ] = "´¹Ö±Ïò¹ö¶¯À¸";
+ SlotName[ chinese_traditional ] = "««ª½¼v¹³¨÷¶b";
+ SlotName[ arabic ] = "ÔÑíØ ÊÍÑíß ÇáÕÝÍÉ ÑÃÓíÇð";
+ SlotName[ dutch ] = "Verticale schuifbalk";
+ SlotName[ chinese_simplified ] = "´¹Ö±Ïò¹ö¶¯À¸";
+ SlotName[ greek ] = "Êáôáêüñõöç ãñáììÞ êýëéóçò";
+ SlotName[ korean ] = "¼öÁ÷ ½ºÅ©·Ñ ¹Ù";
+ SlotName[ turkish ] = "Dikey kaydýrma çubuðu";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_WRAP_ANCHOR_ONLY
+{
+ SlotName = "Umlauf erster Absatz";
+ SlotName [ english ] = "Umlauf erster Absatz";
+ SlotName[ english_us ] = "Wrap First Paragraph";
+ SlotName[ portuguese ] = "Ajuste do primeiro parágrafo";
+ SlotName[ russian ] = "Îáòåêàíèå ïåðâîãî àáçàöà";
+ SlotName[ dutch ] = "Omloop eerste alinea";
+ SlotName[ french ] = "Adaptation premier paragraphe";
+ SlotName[ spanish ] = "Ajuste del primer párrafo";
+ SlotName[ italian ] = "Scorrimento primo paragrafo";
+ SlotName[ danish ] = "Ombryd første afsnit";
+ SlotName[ swedish ] = "Textanpassning första stycket";
+ SlotName[ polish ] = "Obieg pierwszego akapitu";
+ SlotName[ portuguese_brazilian ] = "FrameWrapAnchorOnly";
+ SlotName[ japanese ] = "ʼn‚Ì’i—Ž‚ÅÜ‚è•Ô‚µ";
+ SlotName[ chinese_simplified ] = "»·ÈƵÚÒ»¸ö¶ÎÂä";
+ SlotName[ chinese_traditional ] = "²Ä¤@¬q¸¨´«¦æ";
+ SlotName[ arabic ] = "ÇáÊÝÇÝ ÇáÝÞÑÉ ÇáÃæáì";
+ SlotName[ dutch ] = "Omloop eerste alinea";
+ SlotName[ chinese_simplified ] = "»·ÈƵÚÒ»¸ö¶ÎÂä";
+ SlotName[ greek ] = "Áíáäßðëùóç ðñþôçò ðáñáãñÜöïõ";
+ SlotName[ korean ] = "ù ´Ü¶ô ¼øȯ";
+ SlotName[ turkish ] = "Ýlk paragrafta metin daðýlýmý";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo SID_ATTR_CHAR_COLOR_BACKGROUND
+{
+ SlotName = "Zeichenhintergrund";
+ SlotName [ english ] = "Zeichenhintergrund";
+ SlotName[ english_us ] = "Highlighting";
+ SlotName[ portuguese ] = "Cor de fundo dos caracteres";
+ SlotName[ russian ] = "Ïîäöâåòêà";
+ SlotName[ dutch ] = "Tekenachtergrond";
+ SlotName[ french ] = "Trame de fond";
+ SlotName[ spanish ] = "Fondo de carácter";
+ SlotName[ italian ] = "Sfondo caratteri";
+ SlotName[ danish ] = "Tegnbaggrund";
+ SlotName[ swedish ] = "Teckenbakgrund";
+ SlotName[ polish ] = "T³o znaków";
+ SlotName[ portuguese_brazilian ] = "BackColor";
+ SlotName[ japanese ] = "•¶Žš‚Ì”wŒi";
+ SlotName[ chinese_simplified ] = "×Ö·û±³¾°";
+ SlotName[ chinese_traditional ] = "¦r¤¸­I´º";
+ SlotName[ arabic ] = "ÎáÝíÉ ÇáÎØ";
+ SlotName[ dutch ] = "Tekenachtergrond";
+ SlotName[ chinese_simplified ] = "×Ö·û±³¾°";
+ SlotName[ greek ] = "Öüíôï ãñáììáôïóåéñÜò";
+ SlotName[ korean ] = "°­Á¶";
+ SlotName[ turkish ] = "Vurgu";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo SID_ATTR_CHAR_COLOR_BACKGROUND_EXT
+{
+ SlotName = "Zeichenhintergrund-Gießkanne";
+ SlotName [ english ] = "Zeichenhintergrund-Gießkanne";
+ SlotName[ english_us ] = "Highlight Fill";
+ SlotName[ portuguese ] = "Cor de fundo da letra";
+ SlotName[ russian ] = "Ïîäöâåòêà-Çàëèâêà";
+ SlotName[ dutch ] = "Tekenachtergrond gieter";
+ SlotName[ french ] = "Trame de fond verseuse";
+ SlotName[ spanish ] = "Fondo de carácter";
+ SlotName[ italian ] = "Colore sfondo caratteri";
+ SlotName[ danish ] = "Tegnbaggrund-fyld";
+ SlotName[ swedish ] = "Teckenbakgrundsvattenkanna";
+ SlotName[ polish ] = "T³o znaków-Polewaczka";
+ SlotName[ portuguese_brazilian ] = "CharBackgroundExt";
+ SlotName[ japanese ] = "•¶Žš”wŒi-…‚â‚è";
+ SlotName[ chinese_simplified ] = "×Ö·û±³¾°ÌîÉ«";
+ SlotName[ chinese_traditional ] = "¦r¤¸­I´º-¶ñ¦â";
+ SlotName[ arabic ] = "ÊÚÈÆÉ ÎáÝíÉ ÇáÎØ";
+ SlotName[ dutch ] = "Tekenachtergrond gieter";
+ SlotName[ chinese_simplified ] = "×Ö·û±³¾°ÌîÉ«";
+ SlotName[ greek ] = "ÐïôéóôÞñé öüíôïõ ÷áñáêôÞñùí";
+ SlotName[ korean ] = "ÇÏÀ̶óÀÌÆ® ä¿ì±â";
+ SlotName[ turkish ] = "Vurgu renk doldurma";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo SID_ATTR_CHAR_COLOR_EXT
+{
+ SlotName = "Zeichenfarbe-Gießkanne";
+ SlotName [ english ] = "Zeichenfarbe-Gießkanne";
+ SlotName[ english_us ] = "Font Color Fill";
+ SlotName[ portuguese ] = "Cor de preenchimento";
+ SlotName[ russian ] = "Öâåò øðèôòà-Çàëèâêà";
+ SlotName[ dutch ] = "Tekenkleur-gieter";
+ SlotName[ french ] = "Couleur de caractère - Verseuse";
+ SlotName[ spanish ] = "Color de relleno del carácter";
+ SlotName[ italian ] = "Colore riempimento carattere";
+ SlotName[ danish ] = "Tegnefarve-fyld";
+ SlotName[ swedish ] = "Teckenfärgvattenkanna";
+ SlotName[ polish ] = "Kolor znaków-Polewaczka";
+ SlotName[ portuguese_brazilian ] = "CharColorExt";
+ SlotName[ japanese ] = "•¶Žš‚ÌF-…‚â‚è";
+ SlotName[ chinese_simplified ] = "×Ö·ûÑÕÉ«ÌîÉ«";
+ SlotName[ chinese_traditional ] = "¦r¤¸ÃC¦â-¶ñ¦â";
+ SlotName[ arabic ] = "ÊÚÈÆÉ ÃáæÇä ÇáÎØ";
+ SlotName[ dutch ] = "Tekenkleur-gieter";
+ SlotName[ chinese_simplified ] = "×Ö·ûÑÕÉ«ÌîÉ«";
+ SlotName[ greek ] = "ÐïôéóôÞñé ÷ñþìáôïò ÷áñáêôÞñùí";
+ SlotName[ korean ] = "±Û²Ã »ö ä¿ì±â";
+ SlotName[ turkish ] = "Yazýtipi rengi doldurma";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo SID_ATTR_CHAR_COLOR2
+{
+ SlotName = "Zeichenfarbe";
+ SlotName [ english ] = "Zeichenfarbe";
+ SlotName[ english_us ] = "Font Color";
+ SlotName[ portuguese ] = "Cor dos caracteres";
+ SlotName[ russian ] = "Öâåò øðèôòà";
+ SlotName[ dutch ] = "Tekenkleur";
+ SlotName[ french ] = "Couleur de caractères";
+ SlotName[ spanish ] = "Color del carácter";
+ SlotName[ italian ] = "Colore carattere";
+ SlotName[ danish ] = "Tegnfarve";
+ SlotName[ swedish ] = "Teckenfärg";
+ SlotName[ polish ] = "Kolor znaków";
+ SlotName[ portuguese_brazilian ] = "FontColor";
+ SlotName[ japanese ] = "Ì«ÝÄ‚ÌF";
+ SlotName[ chinese_simplified ] = "×Ö·ûÑÕÉ«";
+ SlotName[ chinese_traditional ] = "¦r¤¸ÃC¦â";
+ SlotName[ arabic ] = "áæä ÇáÎØ";
+ SlotName[ dutch ] = "Tekenkleur";
+ SlotName[ chinese_simplified ] = "×Ö·ûÑÕÉ«";
+ SlotName[ greek ] = "×ñþìá ãñáììáôïóåéñÜò";
+ SlotName[ korean ] = "±Û²Ã »ö";
+ SlotName[ turkish ] = "Yazýtipi rengi";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo SID_TEMPLATE_LOAD
+{
+ SlotName = "Vorlagen laden";
+ SlotName [ english ] = "Vorlagen laden";
+ SlotName[ english_us ] = "Load Template";
+ SlotName[ portuguese ] = "Carregar estilos";
+ SlotName[ russian ] = "Çàãðóçèòü øàáëîíû";
+ SlotName[ dutch ] = "Opmaakprofielen laden";
+ SlotName[ french ] = "Charger styles";
+ SlotName[ spanish ] = "Cargar estilos";
+ SlotName[ italian ] = "Carica modelli";
+ SlotName[ danish ] = "Indlæs typografier";
+ SlotName[ swedish ] = "Ladda mallar";
+ SlotName[ polish ] = "£aduj style";
+ SlotName[ portuguese_brazilian ] = "FormatStylesLoad";
+ SlotName[ japanese ] = "½À²Ù‚Ì“Ç‚Ýž‚Ý";
+ SlotName[ chinese_simplified ] = "×°ÔØÑùʽ";
+ SlotName[ chinese_traditional ] = "¸Ë¸ü¼Ë¦¡";
+ SlotName[ arabic ] = "ÊÍãíá ÃäãÇØ";
+ SlotName[ dutch ] = "Opmaakprofielen laden";
+ SlotName[ chinese_simplified ] = "×°ÔØÑùʽ";
+ SlotName[ greek ] = "Öüñôùóç ðñïôýðùí";
+ SlotName[ korean ] = "·Îµå À¯Çü";
+ SlotName[ turkish ] = "Þablonlarý yükle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_COLUMN_SECTION
+{
+ SlotName = "Bereich einfügen";
+ SlotName [ english ] = "Insert Section";
+ SlotName[ english_us ] = "Insert Section";
+ SlotName[ portuguese ] = "Inserir secção";
+ SlotName[ greek ] = "ÅéóáãùãÞ åíüôçôáò";
+ SlotName[ dutch ] = "Bereik invoegen";
+ SlotName[ french ] = "Insérer une section";
+ SlotName[ spanish ] = "Insertar área";
+ SlotName[ swedish ] = "Infoga område";
+ SlotName[ russian ] = "Âñòàâèòü îáëàñòü";
+ SlotName[ italian ] = "Inserisci sezione";
+ SlotName[ danish ] = "Indsæt område";
+ SlotName[ polish ] = "Wstaw obszar";
+ SlotName[ portuguese_brazilian ] = "Insert Section";
+ SlotName[ japanese ] = "”͈͂̑}“ü";
+ SlotName[ korean ] = "±¸¿ª »ðÀÔ";
+ SlotName[ chinese_simplified ] = "²åÈëÇøÓò";
+ SlotName[ chinese_traditional ] = "´¡¤J°Ï°ì";
+ SlotName[ arabic ] = "ÅÏÑÇÌ äØÇÞ";
+ SlotName[ turkish ] = "Bölüm ekle";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_FORMAT_COLUMN
+{
+ SlotName = "Spalten";
+ SlotName [ english ] = "Spalten";
+ SlotName[ english_us ] = "Columns";
+ SlotName[ portuguese ] = "Colunas";
+ SlotName[ greek ] = "ÓôÞëåò";
+ SlotName[ dutch ] = "Kolommen";
+ SlotName[ french ] = "Colonnes";
+ SlotName[ spanish ] = "Columnas";
+ SlotName[ swedish ] = "Kolumner";
+ SlotName[ russian ] = "Êîëîíêè";
+ SlotName[ italian ] = "Colonne";
+ SlotName[ danish ] = "Kolonner";
+ SlotName[ polish ] = "Kolumny";
+ SlotName[ portuguese_brazilian ] = "Spalten";
+ SlotName[ japanese ] = "’i‘g‚Ý";
+ SlotName[ korean ] = "¿­";
+ SlotName[ chinese_simplified ] = "ÁÐ";
+ SlotName[ chinese_traditional ] = "Äæ";
+ SlotName[ arabic ] = "ÃÚãÏÉ";
+ SlotName[ turkish ] = "Sütun";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_INSERT_MULTI_TOX
+{
+ SlotName = "Verzeichnis einfügen";
+ SlotName [ english ] = "Insert Table of";
+
+ SlotName[ english_us ] = "Insert Index";
+ SlotName[ portuguese ] = "Inserir índice";
+ SlotName[ greek ] = "ÅéóáãùãÞ åõñåôçñßïõ";
+ SlotName[ dutch ] = "Index invoegen";
+ SlotName[ french ] = "Insérer un index";
+ SlotName[ spanish ] = "Insertar índice";
+ SlotName[ swedish ] = "Infoga förteckning";
+ SlotName[ language_user1 ] = " ";
+ SlotName[ russian ] = "Âñòàâèòü óêàçàòåëü";
+ SlotName[ italian ] = "Inserisci indice";
+ SlotName[ danish ] = "Indsæt indeks";
+ SlotName[ polish ] = "Wstaw indeks";
+ SlotName[ portuguese_brazilian ] = "Insert Table of";
+ SlotName[ japanese ] = "õˆø‚Ì‘}“ü";
+ SlotName[ korean ] = "»öÀλðÀÔ";
+ SlotName[ chinese_simplified ] = "²åÈëĿ¼";
+ SlotName[ chinese_traditional ] = "´¡¤J¥Ø¿ý";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÝåÑÓ";
+ SlotName[ turkish ] = "Dizin ekle";
+};
+SfxSlotInfo FN_INSERT_AUTH_ENTRY_DLG
+{
+ SlotName = "Literaturverzeichniseintrag einfügen";
+ SlotName [ english ] = "Insert Authorities entry";
+ SlotName[ english_us ] = "Insert Bibliography Entry";
+ SlotName[ portuguese ] = "Inserir entrada bibliográfica";
+ SlotName[ russian ] = "Âñòàâèòü ýëåìåíò ñïèñêà ëèòåðàòóðû";
+ SlotName[ greek ] = "ÐñïóèÞêç åããñáöÞò âéâëéïãñáößáò";
+ SlotName[ dutch ] = "Item voor literatuurlijst invoegen";
+ SlotName[ french ] = "Insérer une entrée de bibliographie";
+ SlotName[ spanish ] = "Insertar entrada de bibliografía";
+ SlotName[ italian ] = "Inserisci voce bibliografica";
+ SlotName[ danish ] = "Indsæt litteraturlisteelement";
+ SlotName[ swedish ] = "Infoga litteraturförteckningspost";
+ SlotName[ polish ] = "Dodaj wpis bibliograficzny";
+ SlotName[ portuguese_brazilian ] = "Insert Authorities entry";
+ SlotName[ japanese ] = "ŽQl•¶Œ£‚Ì‘}“ü";
+ SlotName[ korean ] = "Âü°í¹®Çå Ç׸ñ »ðÀÔ";
+ SlotName[ chinese_simplified ] = "²åÈëÎÄÏ×Ŀ¼ÌõÄ¿";
+ SlotName[ chinese_traditional ] = "´¡¤J°Ñ¦Ò¤åÄm¥Ø¿ý";
+ SlotName[ arabic ] = "ÅÏÑÇÌ ÅÏÎÇá Ýí ÝåÑÓ ÇáãÑÇÌÚ";
+ SlotName[ turkish ] = "Kaynakça giriþi ekle";
+ SlotName[ language_user1 ] = " ";
+};
+
+SfxSlotInfo FN_EDIT_AUTH_ENTRY_DLG
+{
+ SlotName = "Literaturverzeichniseintrag bearbeiten";
+ SlotName [ english ] = "Edit Authorities entry";
+ SlotName[ english_us ] = "Edit Bibliography Entry";
+ SlotName[ portuguese ] = "Editar entrada bibliográfica";
+ SlotName[ russian ] = "Ïðàâêà ýëåìåíòà ñïèñêà ëèòåðàòóðû";
+ SlotName[ greek ] = "Åðåîåñãáóßá åããñáöÞò âéâëéïãñáößáò";
+ SlotName[ dutch ] = "Item voor literatuurlijst bewerken";
+ SlotName[ french ] = "Éditer une entrée de bibliographie";
+ SlotName[ spanish ] = "Editar entrada de bibliografía";
+ SlotName[ italian ] = "Modifica voce bibliografica";
+ SlotName[ danish ] = "Rediger litteraturlisteelement";
+ SlotName[ swedish ] = "Redigera litteraturförteckningspost";
+ SlotName[ polish ] = "Edytuj wpis bibliograficzny";
+ SlotName[ portuguese_brazilian ] = "Edit Authorities entry";
+ SlotName[ japanese ] = "ŽQl•¶Œ£•\\‚Ì•ÒW";
+ SlotName[ korean ] = "Âü°í¹®Çå Ç׸ñÆíÁý";
+ SlotName[ chinese_simplified ] = "±à¼­ÎÄÏ×Ŀ¼ÌõÄ¿";
+ SlotName[ chinese_traditional ] = "½s¿è°Ñ¦Ò¤åÄm¥Ø¿ýªº±ø¥Ø";
+ SlotName[ arabic ] = "ÊÍÑíÑ ÅÏÎÇá Ýí ÝåÑÓ ÇáãÑÇÌÚ";
+ SlotName[ turkish ] = "Kaynakça giriþini düzenle";
+ SlotName[ language_user1 ] = " ";
+};
+
+SfxSlotInfo FN_REMOVE_CUR_TOX
+{
+ SlotName = "Verzeichnis löschen";
+ SlotName [ english ] = "Remove index";
+ SlotName[ english_us ] = "Delete index";
+ SlotName[ portuguese ] = "Eliminar índice";
+ SlotName[ russian ] = "Óäàëèòü óêàçàòåëü";
+ SlotName[ greek ] = "ÄéáãñáöÞ åõñåôçñßïõ";
+ SlotName[ dutch ] = "Index wissen";
+ SlotName[ french ] = "Supprimer l'index";
+ SlotName[ spanish ] = "Eliminar índice";
+ SlotName[ italian ] = "Rimuovi indice";
+ SlotName[ danish ] = "Slet indeks";
+ SlotName[ swedish ] = "Radera förteckning";
+ SlotName[ polish ] = "Usuñ ideks.";
+ SlotName[ portuguese_brazilian ] = "Remove index";
+ SlotName[ japanese ] = "–ÚŽŸ‚Æõˆø‚Ìíœ";
+ SlotName[ korean ] = "»öÀÎ Á¦°Å";
+ SlotName[ chinese_simplified ] = "ɾ³ýĿ¼";
+ SlotName[ chinese_traditional ] = "§R°£¥Ø¿ý";
+ SlotName[ arabic ] = "ÍÐÝ ÇáÝåÑÓ";
+ SlotName[ turkish ] = "Dizini sil";
+ SlotName[ language_user1 ] = " ";
+};
+SfxSlotInfo FN_EDIT_HYPERLINK
+{
+ SlotName = "Hyperlink bearbeiten";
+ SlotName [ english ] = "Edit hyperlink";
+ SlotName[ english_us ] = "Edit hyperlink";
+ SlotName[ portuguese ] = "Editar hiperligação";
+ SlotName[ russian ] = "Ïðàâêà ãèïåðññûëêè";
+ SlotName[ greek ] = "Åðåîåñãáóßá õðåñ-óýíäåóçò";
+ SlotName[ dutch ] = "Hyperlink bewerken";
+ SlotName[ french ] = "Éditer l'hyperlien";
+ SlotName[ spanish ] = "Editar hiperenlace";
+ SlotName[ italian ] = "Modifica hyperlink";
+ SlotName[ danish ] = "Rediger hyperlink";
+ SlotName[ swedish ] = "Redigera hyperlänk";
+ SlotName[ polish ] = "Edytuj hiper³¹cze";
+ SlotName[ portuguese_brazilian ] = "Edit hyperlink";
+ SlotName[ japanese ] = "ʲÊß°Øݸ‚Ì•ÒW";
+ SlotName[ korean ] = "ÇÏÀÌÆÛ¸µÅ© ÆíÁý";
+ SlotName[ chinese_simplified ] = "±à¼­³¬Á´½Ó";
+ SlotName[ chinese_traditional ] = "½s¿è¶W³sµ²";
+ SlotName[ arabic ] = "ÊÍÑíÑ ÇáÇÑÊÈÇØ ÇáÊÔÚÈí";
+ SlotName[ turkish ] = "Hyperlink'i düzenle";
+};
+
+
diff --git a/sw/sdi/tabsh.sdi b/sw/sdi/tabsh.sdi
new file mode 100644
index 000000000000..a35ba2a7e3e4
--- /dev/null
+++ b/sw/sdi/tabsh.sdi
@@ -0,0 +1,100 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: tabsh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/tabsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File fuer TabShell
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface TextTable : BaseTextTable
+[
+ uuid = "49CE7CA0-111A-101D-9757-6E74207A7520"
+]
+{
+ // hier sollen die Slots eingefuegt werden, die vom StarWriter/WEB
+ // nicht unterstuetzt werden
+
+ import TextSelection;
+
+ FN_TABLE_SET_READ_ONLY_CELLS // status(final|play)
+ [
+ ExecMethod = Execute;
+ StateMethod = NoState;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+/*
+ SvxFmtSplitItem TableSplit SID_ATTR_PARA_SPLIT // status(final|play)
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ GroupId = GID_TABLE ;
+ ]
+ SvxFmtKeepItem TableKeepTogether SID_ATTR_PARA_KEEP // status(final|play)
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ GroupId = GID_TABLE ;
+ ]
+*/
+}
+
+ //=========================================================================
+
+shell SwTableShell : SwBaseShell
+
+{
+ import TextTable[Automation];
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.98 1998/11/12 16:29:10 MA
+ #58677# Disable Flag
+
+
+ Rev 1.97 12 Nov 1998 17:29:10 MA
+ #58677# Disable Flag
+
+ Rev 1.96 28 Aug 1997 12:49:52 MBA
+ Neue Interface-Namen
+
+ Rev 1.95 13 Jun 1997 16:39:58 MA
+ fix: Kommentar statt if
+
+ Rev 1.94 04 Jun 1997 13:01:04 MA
+ chg: Keep und Split vorerst 'raus
+
+ Rev 1.93 11 Apr 1997 15:55:58 MA
+ new: Split+Keep
+
+ Rev 1.92 13 Feb 1997 12:44:46 MA
+ unnoetige Texte entfernt
+
+ Rev 1.91 27 Jan 1997 16:38:16 OS
+ Web-Slots aus den allg. interfaces raus
+
+ Rev 1.90 23 Jan 1997 14:30:12 OS
+ Ableitung von _Table
+
+ Rev 1.89 18 Jan 1997 15:32:34 OS
+ neu: CellName an Tabellen
+
+ Rev 1.88 15 Jan 1997 14:56:26 MA
+ chg: State fuer merge
+
+ Rev 1.87 09 Jan 1997 15:53:46 OS
+ neue Slots fuer Zellen/Spalten/Zeilen verschieben/einfuegen/loeschen
+
+ Rev 1.86 20 Dec 1996 14:34:20 OS
+ V-Alignment auch aus dem Basic
+
+ Rev 1.85 18 Dec 1996 14:53:20 OS
+ BoxAlign eingebaut
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/textsh.sdi b/sw/sdi/textsh.sdi
new file mode 100644
index 000000000000..a78f08ee8c4e
--- /dev/null
+++ b/sw/sdi/textsh.sdi
@@ -0,0 +1,214 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: TEXTSH.SDI $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/textsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File Textshell fuer Sw3
+
+ (c) Copyright 1995 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+
+
+/*
+F23BA0A1-73A0-11d0-89CA-008029E4B0B1
+F23BA0A2-73A0-11d0-89CA-008029E4B0B1
+F23BA0A3-73A0-11d0-89CA-008029E4B0B1
+F23BA0A4-73A0-11d0-89CA-008029E4B0B1
+F23BA0A5-73A0-11d0-89CA-008029E4B0B1
+F23BA0A6-73A0-11d0-89CA-008029E4B0B1
+F23BA0A7-73A0-11d0-89CA-008029E4B0B1
+F23BA0A8-73A0-11d0-89CA-008029E4B0B1
+
+
+ */
+
+interface Text : BaseText
+[
+ uuid = "1BD56200-111A-101D-9757-6E74207A7520"
+]
+{
+ FN_INSERT_FRAME_INTERACT // status()
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Cachable ;
+ ]
+ // hier sollen die Slots eingefuegt werden, die vom StarWriter/WEB
+ // nicht unterstuetzt werden
+
+ import TextSelection;
+
+ /*-----------------24.01.97 08.13-------------------
+ Spezielle Feldbefehle
+--------------------------------------------------*/
+
+ FN_INSERT_FLD_TOPIC
+ [
+ ExecMethod = ExecField ;
+ StateMethod = StateField ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ReadOnlyDoc = FALSE ;
+ ]
+ /*-----------------24.01.97 08.13-------------------
+ Ende Spezielle Feldbefehle
+--------------------------------------------------*/
+
+ /*-----------------24.01.97 07.36-------------------
+ Verzeichnisse
+--------------------------------------------------*/
+
+ /*
+enum TOXTypes
+{
+ TOX_INDEX,
+ TOX_USER,
+ TOX_CONTENT
+};
+
+ */
+
+ FN_INSERT_IDX_ENTRY_DLG // status(final|play)
+ [
+ ExecMethod = ExecIdx ;
+ StateMethod = GetIdxState ;
+ ]
+
+ FN_INSERT_AUTH_ENTRY_DLG
+ [
+ ExecMethod = ExecIdx ;
+ StateMethod = GetIdxState ;
+ ]
+ FN_EDIT_AUTH_ENTRY_DLG
+ [
+ ExecMethod = ExecIdx ;
+ StateMethod = GetIdxState ;
+ ]
+ FN_EDIT_IDX_ENTRY_DLG // status(final|play)
+ [
+ ExecMethod = ExecIdx ;
+ StateMethod = GetIdxState ;
+ ]
+ FN_INSERT_MULTI_TOX // status(final|play)
+ [
+ ExecMethod = ExecIdx ;
+ StateMethod = GetIdxState ;
+ ]
+ FN_REMOVE_CUR_TOX
+ [
+ ExecMethod = ExecIdx ;
+ StateMethod = GetIdxState ;
+ ]
+ FN_IDX_MARK_TO_IDX // status(final|play)
+ [
+ ExecMethod = ExecIdx ;
+ ]
+
+ /*-----------------24.01.97 08.01-------------------
+ Absatzeinstellungen
+--------------------------------------------------*/
+
+ /*-----------------24.01.97 08.01-------------------
+ Ende Absatzeinstellungen
+--------------------------------------------------*/
+
+}
+
+shell SwTextShell : SwBaseShell
+{
+ import Text[Automation];
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.239 2000/06/20 14:47:52 os
+ #70060# less occurences of columns in HTML
+
+ Revision 1.238 2000/05/26 07:06:19 os
+ old SW Basic API Slots removed
+
+ Revision 1.237 2000/02/22 14:49:18 os
+ #72894# footnote option dialog in HTML documents
+
+ Revision 1.236 2000/02/10 11:57:08 os
+ #72894# fields pageno, pagecount, title and insert footnote enabled in SW/Web
+
+ Revision 1.235 2000/01/13 09:20:14 os
+ #71814# FN_INSERT_IDX_ENTRY allowed on protected cursor
+
+ Revision 1.234 1999/12/10 15:16:35 os
+ #70711# readonly check for index entries now in GetIdxState
+
+ Revision 1.233 1999/10/15 11:25:59 os
+ new: FN_REMOVE_TOX
+
+ Revision 1.232 1999/09/15 13:56:36 os
+ dialog for authorities
+
+ Revision 1.231 1999/09/10 08:51:10 jp
+ FormatFootnoteDialog: dont disable by protected cursor
+
+ Revision 1.230 1999/07/30 11:14:16 OS
+ indexes: check readonly in status method
+
+
+ Rev 1.229 30 Jul 1999 13:14:16 OS
+ indexes: check readonly in status method
+
+ Rev 1.228 21 Jun 1999 09:56:24 OS
+ extended indexes
+
+ Rev 1.227 23 Mar 1999 12:15:10 MA
+ #63806# ConfigName und HelpText entfernt
+
+ Rev 1.226 05 Feb 1999 17:04:48 OS
+ #61547# InsertEndnoteDirect
+
+ Rev 1.225 22 Jan 1999 11:54:08 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.224 12 Nov 1998 17:29:18 MA
+ #58677# Disable Flag
+
+ Rev 1.223 06 Apr 1998 09:45:00 OS
+ INSERT_FRAME_INTERACT fuer manche HTML-Exports erlaubt
+
+ Rev 1.222 28 Aug 1997 12:53:10 MBA
+ Neue Interface-Namen
+
+ Rev 1.221 25 Jul 1997 11:31:04 AMA
+ Opt: GroupId und ConfigName aufgeraeumt
+
+ Rev 1.220 13 Feb 1997 12:44:56 MA
+ unnoetige Texte entfernt
+
+ Rev 1.219 05 Feb 1997 13:26:50 OS
+ Blocksatz auch wieder fuer Web
+
+ Rev 1.218 04 Feb 1997 13:40:20 HJS
+ merge 04.02.97
+
+ Rev 1.217 28 Jan 1997 13:27:40 HJS
+ merge 28.01.97
+
+ Rev 1.216 24 Jan 1997 14:58:28 OS
+ nicht-Web-Slots verschoben
+
+ Rev 1.215 23 Jan 1997 14:31:24 OS
+ Ableitung von _Text
+
+ Rev 1.214 21 Jan 1997 12:32:40 HJS
+ merge 21.01.97
+
+ Rev 1.213 15 Jan 1997 16:05:54 OM
+ Neue OLE-Dialog
+
+ Rev 1.212 14 Jan 1997 13:43:24 JP
+ SID_INC_INDENT/_DEC: StatusMethode
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/viewsh.sdi b/sw/sdi/viewsh.sdi
new file mode 100644
index 000000000000..f074d44d6182
--- /dev/null
+++ b/sw/sdi/viewsh.sdi
@@ -0,0 +1,305 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: viewsh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/viewsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File ViewShell fuer Sw3
+
+ (c) Copyright 1989 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface TextInTable : Selection
+[ uuid = "63C33940-69D8-101D-9757-C667E8298000" ]
+{
+ import Text;
+ import TextTable;
+}
+
+interface ListInTable : Selection
+[ uuid="7F1A6E20-69D8-101D-9757-C667E8298000" ]
+{
+ import Text;
+ import TextList;
+ import TextTable;
+}
+
+interface ListInText : Selection
+[ uuid = "8A4C07E0-69D8-101D-9757-C667E8298000"]
+{
+ import TextList;
+ import Text;
+}
+
+interface TextEditView : BaseTextEditView
+[
+ uuid = "09782660-111A-101D-9757-6E74207A7520"
+]
+{
+ // Slots, die nicht in der WebDocShell gebraucht werden
+ FN_INSERT_OBJ_CTRL
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_CAPTION // status()
+ [
+ ExecMethod = ExecDlgExt ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_EDIT_FOOTNOTE // status(final|play)
+ [
+ ExecMethod = ExecDlgExt ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_HYPHENATE_OPT_DLG // status(final|play)
+ [
+ ExecMethod = ExecLingu ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_CHANGE_PAGENUM // status(final)
+ [
+ ExecMethod = ExecDlg ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SvxDrawToolItem DrawSelect SID_INSERT_DRAW // status()
+ [
+ ExecMethod = ExecDraw ;
+ StateMethod = GetDrawState ;
+ ]
+ SfxBoolItem CreateControl SID_FM_CREATE_CONTROL // status()
+ [
+ ExecMethod = ExecDraw ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+ //=========================================================================
+
+shell SwView : SfxViewShell
+
+{
+ import TextEditView [Automation];
+// import TextPage "Page";
+// import SearchSettings;
+// import SearchAttributes;
+// import ReplaceAttributes;
+}
+
+interface TextPrintPreview : View
+[ uuid = "1622A480-111A-101D-9757-6E74207A7520" ]
+{
+ FN_REFRESH_VIEW // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_CHAR_LEFT // status(final|play)
+ [
+ ExecMethod = Execute;
+ StateMethod = NoState ;
+ ]
+ FN_CHAR_RIGHT // status(final|play)
+ [
+ ExecMethod = Execute;
+ StateMethod = NoState ;
+ ]
+ FN_LINE_UP // status(final|play)
+ [
+ ExecMethod = Execute;
+ StateMethod = NoState ;
+ ]
+ FN_LINE_DOWN // status(final|play)
+ [
+ ExecMethod = Execute;
+ StateMethod = NoState ;
+ ]
+ FN_PAGEUP // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_PAGEDOWN // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_START_OF_DOCUMENT // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_END_OF_DOCUMENT // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_SHOW_TWO_PAGES // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_SHOW_FOUR_PAGES // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_PREVIEW_PRINT_OPTIONS //status()
+ [
+ ExecMethod = Execute ;
+ ]
+ FN_PRINT_PAGEPREVIEW // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_PRINTDOC // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_PRINTDOCDIRECT // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_PRINTPREVIEW // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_PREVIEW_ZOOM
+ [
+ ExecMethod = Execute ;
+ ]
+ SID_UNDO // status()
+ [
+ StateMethod = StateUndo ;
+ ]
+ SID_REDO // status()
+ [
+ StateMethod = StateUndo ;
+ ]
+ SID_REPEAT // status()
+ [
+ StateMethod = StateUndo ;
+ ]
+ //---------------------------------------------------------------------
+ //Ab hier Statusleiste
+ FN_STAT_ZOOM // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_ATTR_ZOOM // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ FN_STAT_PAGE // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //----------------------------------------------
+ //End mit Statusleiste
+}
+
+ //=========================================================================
+
+shell SwPagePreView : SfxViewShell
+{
+ import TextPrintPreview[Automation];
+}
+
+
+
+/*
+
+9D84FD80-69D8-101D-9757-C667E8298000
+
+A53B7A40-69D8-101D-9757-C667E8298000
+
+AA3EBDE0-69D8-101D-9757-C667E8298000
+
+
+
+ */
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.245 2000/08/07 11:49:25 jp
+ PagePreView replace the current view
+
+ Revision 1.244 2000/05/26 07:06:19 os
+ old SW Basic API Slots removed
+
+ Revision 1.243 2000/05/10 12:00:10 os
+ Basic API removed
+
+ Revision 1.242 1998/11/12 16:28:58 MA
+ #58677# Disable Flag
+
+
+ Rev 1.241 12 Nov 1998 17:28:58 MA
+ #58677# Disable Flag
+
+ Rev 1.240 29 Sep 1998 14:35:18 OS
+ #57281#, #57264# Zoom der Preview mit Controller, Preview-Close ueber eigenen Slot
+
+ Rev 1.239 21 Aug 1998 15:44:10 OS
+ Seitendruck PagePreview #55252#
+
+ Rev 1.238 10 Mar 1998 14:22:38 OM
+ Konstruktionsmodul fuer Forms
+
+ Rev 1.237 30 Oct 1997 15:16:46 JP
+ neu: LineUp/-Down und CharLeft/CharRight fuer PagePreView
+
+ Rev 1.236 28 Aug 1997 12:37:34 MBA
+ Neue Interface-Namen
+
+ Rev 1.235 14 Apr 1997 16:02:58 OS
+ neu: SearchAttributes und ReplaceAttributes
+
+ Rev 1.234 24 Feb 1997 16:56:32 OM
+ Silbentrennung in Draw-Objekten
+
+ Rev 1.233 13 Feb 1997 12:44:50 MA
+ unnoetige Texte entfernt
+
+ Rev 1.232 04 Feb 1997 13:42:20 HJS
+ merge 04.02.97
+
+ Rev 1.231 30 Jan 1997 12:40:46 HJS
+ quickmerge 30.01.97
+
+ Rev 1.230 28 Jan 1997 16:37:02 OS
+ DrawSelect nicht im WebWriter
+
+ Rev 1.229 27 Jan 1997 16:37:34 OS
+ Web-Slots aus den allg. interfaces raus
+
+ Rev 1.228 23 Jan 1997 08:35:04 OS
+ Ableitung von __View
+
+ Rev 1.227 21 Jan 1997 12:31:42 HJS
+ merge 21.01.97
+
+ Rev 1.226 17 Jan 1997 13:08:24 OS
+ alte Slot-defines entfernt, xxxConfig fuer FN_UPDATE_TOX
+
+ Rev 1.225 14 Jan 1997 12:12:26 HJS
+ merge 14.01.97
+
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/wbasesh.sdi b/sw/sdi/wbasesh.sdi
new file mode 100644
index 000000000000..1d17dfef524d
--- /dev/null
+++ b/sw/sdi/wbasesh.sdi
@@ -0,0 +1,48 @@
+/*-----------------------------------------------------------------------
+
+ $Workfile: WBASESH.IDL $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/wbasesh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File SwWebBaseShell fuer StarWriter/WEB
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface WebSelection : BaseTextSelection
+[
+ Automation = FALSE;
+]
+{
+ // hier kommt nur dann etwas hinein, wenn es im
+ // kompletten StarWriter nicht benoetigt wird
+}
+
+shell SwWebBaseShell
+{
+ import WebSelection[Automation];
+ import Interior "Interior";
+ import Shadow "Shadow";
+
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.3 1997/08/28 10:52:44 MBA
+ Neue Interface-Namen
+
+
+ Rev 1.2 28 Aug 1997 12:52:44 MBA
+ Neue Interface-Namen
+
+ Rev 1.1 23 Jan 1997 14:41:16 OS
+ jetzt SwWebBaseShell
+
+ Rev 1.0 23 Jan 1997 08:41:06 OS
+ Initial revision.
+
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/sdi/wbeziers.sdi b/sw/sdi/wbeziers.sdi
new file mode 100644
index 000000000000..464bdc49e62d
--- /dev/null
+++ b/sw/sdi/wbeziers.sdi
@@ -0,0 +1,38 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: wbeziers.idl $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/wbeziers.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File SwBezierShell fuer StarWriter/Web
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface Bezier : _Bezier
+[ uuid = "68EF7EA0-6876-11D0-A887-008029E86826" ]
+{
+}
+
+shell SwBezierShell: SwBaseShell
+{
+ import Bezier[Automation];
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.2 2000/02/01 09:45:00 os
+ #72282# SwWebBaseShell removed
+
+ Revision 1.1 1997/01/23 13:48:58 OS
+ Initial revision.
+
+
+ Rev 1.0 23 Jan 1997 14:48:58 OS
+ Initial revision.
+
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/wdocsh.sdi b/sw/sdi/wdocsh.sdi
new file mode 100644
index 000000000000..a0789f713174
--- /dev/null
+++ b/sw/sdi/wdocsh.sdi
@@ -0,0 +1,97 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: wdocsh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/wdocsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: SwWebDocShell
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface WebDocument : BaseTextDocument
+[
+ uuid = "B47F0DE4-1E1F-11d1-89CA-008029E4B0B1"
+]
+{
+ // hier nur Slots, die der vollstaendige Writer nicht braucht
+ SID_SOURCEVIEW
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Volatile = TRUE;
+ Asynchron = TRUE;
+ ]
+
+ SID_HTML_MODE
+ [
+ StateMethod = GetState ;
+ ]
+
+ FN_PRINT_LAYOUT
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ ]
+}
+
+shell SwWebDocShell : SfxObjectShell
+{
+ import WebDocument[Automation];
+}
+
+shell SwWebGlosDocShell : SwWebDocShell
+{
+ SID_SAVEDOC // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.12 1999/03/23 11:15:06 MA
+ #63806# ConfigName und HelpText entfernt
+
+
+ Rev 1.11 23 Mar 1999 12:15:06 MA
+ #63806# ConfigName und HelpText entfernt
+
+ Rev 1.10 01 Oct 1997 12:03:12 OS
+ SID_SOURCEVIEW im Writer immer asynchron #44269#
+
+ Rev 1.9 28 Aug 1997 12:38:46 MBA
+ Neue Interface-Namen
+
+ Rev 1.8 06 Aug 1997 14:50:48 OS
+ FN_SOURCEVIEW -> SID_SOURCEVIEW
+
+ Rev 1.7 23 Jul 1997 16:08:00 AMA
+ Opt: ConfigName etc. aufgeraeumt
+
+ Rev 1.6 16 Jun 1997 13:08:16 MA
+ #40731# falsches Exportverbot entfernt
+
+ Rev 1.5 09 Jun 1997 14:27:16 MA
+ chg: Browse-Flag nur noch am Doc
+
+ Rev 1.4 26 May 1997 12:45:10 OS
+ FN_SOURCEVIEW waehrend des Ladens disabled (Volatile)
+
+ Rev 1.3 12 Feb 1997 11:58:44 JP
+ neu: WebGlossryDocShell
+
+ Rev 1.2 03 Feb 1997 12:04:06 OS
+ SID_HTML_MODE an der WebDocShell
+
+ Rev 1.1 30 Jan 1997 15:28:20 OS
+ SourceView nur noch fuer den Sw/Web
+
+ Rev 1.0 23 Jan 1997 08:42:06 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/wdrwbase.sdi b/sw/sdi/wdrwbase.sdi
new file mode 100644
index 000000000000..5ceadf58a86b
--- /dev/null
+++ b/sw/sdi/wdrwbase.sdi
@@ -0,0 +1,60 @@
+/*-----------------------------------------------------------------------
+
+ $Workfile: wdrwbase.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/wdrwbase.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: WebDrawBaseShell
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface WebDrawBase : BaseTextDrawBase
+[
+ Automation = FALSE;
+]
+{
+ import BaseTextSelection;
+}
+
+
+shell SwWebDrawBaseShell: SwBaseShell
+{
+ import WebDrawBase[Automation];
+
+ SID_OBJECT_ALIGN
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.6 2000/02/01 09:45:00 os
+ #72282# SwWebBaseShell removed
+
+ Revision 1.5 1998/11/12 16:28:52 MA
+ #58677# Disable Flag
+
+
+ Rev 1.4 12 Nov 1998 17:28:52 MA
+ #58677# Disable Flag
+
+ Rev 1.3 03 Sep 1997 16:51:40 MBA
+ Neue Shell
+
+ Rev 1.2 28 Aug 1997 12:37:14 MBA
+ Neue Interface-Namen
+
+ Rev 1.1 12 Feb 1997 19:00:52 MA
+ unnoetige Texte
+
+ Rev 1.0 23 Jan 1997 14:43:06 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/wformsh.sdi b/sw/sdi/wformsh.sdi
new file mode 100644
index 000000000000..75252f1c8df8
--- /dev/null
+++ b/sw/sdi/wformsh.sdi
@@ -0,0 +1,25 @@
+interface WebDrawForm: BaseTextDrawForm
+[
+ uuid = "4bac4490-fede-11d1-abff-006097b418c2"
+]
+{
+ import WebDrawBase;
+}
+
+shell SwWebDrawFormShell : SwWebDrawBaseShell
+{
+ import WebDrawForm[Automation];
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.1 1998/06/08 16:07:30 OM
+ Initial revision.
+
+
+ Rev 1.0 08 Jun 1998 18:07:30 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/wfrmsh.sdi b/sw/sdi/wfrmsh.sdi
new file mode 100644
index 000000000000..3450f490183f
--- /dev/null
+++ b/sw/sdi/wfrmsh.sdi
@@ -0,0 +1,50 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: wfrmSH.IDL $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/wfrmsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: FrameShell fuer StarWriter/Web
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface WebFrame : BaseTextFrame
+[
+ uuid = "B47F0DE6-1E1F-11d1-89CA-008029E4B0B1"
+]
+{
+ import BaseTextSelection;
+}
+
+
+ //=========================================================================
+
+shell SwWebFrameShell : SwBaseShell
+{
+ import WebFrame[Automation];
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.4 2000/02/01 09:45:00 os
+ #72282# SwWebBaseShell removed
+
+ Revision 1.3 1997/08/28 10:51:42 MBA
+ Neue Interface-Namen
+
+
+ Rev 1.2 28 Aug 1997 12:51:42 MBA
+ Neue Interface-Namen
+
+ Rev 1.1 31 Jan 1997 13:24:50 OS
+ SwWebFrameShell
+
+ Rev 1.0 23 Jan 1997 14:46:46 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/wgrfsh.sdi b/sw/sdi/wgrfsh.sdi
new file mode 100644
index 000000000000..42837d30ff80
--- /dev/null
+++ b/sw/sdi/wgrfsh.sdi
@@ -0,0 +1,49 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: WGRFSH.IDL $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/wgrfsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: GraphicShell fuer StarWriter/Web
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface WebGraphic : BaseTextGraphic
+[
+ uuid = "B47F0DEB-1E1F-11d1-89CA-008029E4B0B1"
+]
+{
+}
+
+
+ //=========================================================================
+
+shell SwWebGrfShell : SwBaseShell
+{
+ import WebGraphic[Automation];
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.4 2000/08/08 13:42:52 os
+ #77423# separate graphic shell
+
+ Revision 1.3 1997/09/03 14:53:42 MBA
+ Neue Shell
+
+
+ Rev 1.2 03 Sep 1997 16:53:42 MBA
+ Neue Shell
+
+ Rev 1.1 28 Aug 1997 12:52:56 MBA
+ Neue Interface-Namen
+
+ Rev 1.0 31 Jan 1997 13:29:24 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/wlistsh.sdi b/sw/sdi/wlistsh.sdi
new file mode 100644
index 000000000000..e205a0b60a88
--- /dev/null
+++ b/sw/sdi/wlistsh.sdi
@@ -0,0 +1,48 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: WLISTSH.IDL $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/wlistsh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: IDL - File SwWebBaseShell fuer StarWriter /Web
+
+ (c) Copyright 1989 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface WebList : BaseTextList
+[
+ uuid = "B47F0DE3-1E1F-11d1-89CA-008029E4B0B1"
+]
+{
+ import TextSelection;
+}
+
+ //=========================================================================
+
+shell SwWebListShell : SwBaseShell
+{
+ import WebList[Automation];
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.4 2000/02/01 09:45:00 os
+ #72282# SwWebBaseShell removed
+
+ Revision 1.3 1997/09/03 14:52:36 MBA
+ Neue Shell
+
+
+ Rev 1.2 03 Sep 1997 16:52:36 MBA
+ Neue Shell
+
+ Rev 1.1 28 Aug 1997 12:38:04 MBA
+ Neue Interface-Namen
+
+ Rev 1.0 23 Jan 1997 14:43:32 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/wolesh.sdi b/sw/sdi/wolesh.sdi
new file mode 100644
index 000000000000..3caf840718fa
--- /dev/null
+++ b/sw/sdi/wolesh.sdi
@@ -0,0 +1,47 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: WOLESH.IDL $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/wolesh.sdi,v 1.1.1.1 2000-09-18 17:14:30 hr Exp $
+
+ Beschreibung: OleShell fuer StarWriter/Web
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface WebOLEObject : BaseTextOLEObject
+[
+ uuid = "B47F0DE2-1E1F-11d1-89CA-008029E4B0B1"
+]
+{
+ import WebFrame;
+}
+
+
+ //=========================================================================
+
+shell SwWebOleShell : SwWebFrameShell
+{
+ import WebOLEObject[Automation];
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.3 1997/09/10 06:56:54 OS
+ OLE importiert Frame
+
+
+ Rev 1.2 10 Sep 1997 08:56:54 OS
+ OLE importiert Frame
+
+ Rev 1.1 28 Aug 1997 12:37:54 MBA
+ Neue Interface-Namen
+
+ Rev 1.0 31 Jan 1997 13:29:02 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/wrtapp.sdi b/sw/sdi/wrtapp.sdi
new file mode 100644
index 000000000000..25aebdba00db
--- /dev/null
+++ b/sw/sdi/wrtapp.sdi
@@ -0,0 +1,367 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: wrtapp.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/wrtapp.sdi,v 1.1.1.1 2000-09-18 17:14:31 hr Exp $
+
+ Beschreibung: IDL - File SwWriterApp - Shell fuer Sw3
+
+ (c) Copyright 1989 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+
+interface StarWriter : Module
+[
+ uuid ( "4BF0AA20-E6B9-101C-8A0E-040224007802" )
+]
+{
+ FN_ENVELOP // status(final|play)
+ [
+ ExecMethod = ExecOther ;
+ StateMethod = StateOther ;
+ DisableFlags="SW_DISABLE_ON_MAILBOX_EDITOR";
+ ]
+
+ FN_LABEL // status(final|play)
+ [
+ ExecMethod = ExecOther ;
+ StateMethod = StateOther ;
+ DisableFlags="SW_DISABLE_ON_MAILBOX_EDITOR";
+ ]
+ FN_BUSINESS_CARD // status()
+ [
+ ExecMethod = ExecOther ;
+ StateMethod = StateOther ;
+ DisableFlags="SW_DISABLE_ON_MAILBOX_EDITOR";
+ ]
+
+ SID_SW_DOCMAN_PATH // status()
+ [
+ // nur fuer Autopilot
+ ExecMethod = ExecOther ;
+ StateMethod = NoState ;
+ ]
+
+ SID_ATTR_METRIC // status(final|play)
+ [
+ ExecMethod = ExecOther ;
+ StateMethod = StateOther ;
+ ]
+ SID_SW_AGENDA_WIZZARD
+ [
+ ExecMethod = ExecWizzard ;
+ StateMethod = NoState ;
+ ]
+ SID_SW_FAX_WIZZARD
+ [
+ ExecMethod = ExecWizzard ;
+ StateMethod = NoState ;
+ ]
+ SID_SW_LETTER_WIZZARD
+ [
+ ExecMethod = ExecWizzard ;
+ StateMethod = NoState ;
+ ]
+ SID_SW_MEMO_WIZZARD
+ [
+ ExecMethod = ExecWizzard ;
+ StateMethod = NoState ;
+ ]
+
+/* SID_SW_EDITOPTIONS
+ [
+ ExecMethod = ExecOptionsDialog ;
+ StateMethod = NoState ;
+ ]
+
+ SID_SW_ONLINEOPTIONS
+ [
+ ExecMethod = ExecOptionsDialog ;
+ StateMethod = NoState ;
+ ]*/
+
+ FN_QRY // status()
+ [
+ ExecMethod = ExecDB ;
+ StateMethod = StateIsView ;
+ ]
+
+ FN_QRY_MERGE // status()
+ [
+ ExecMethod = ExecDB ;
+ StateMethod = StateIsView ;
+ DisableFlags="SW_DISABLE_ON_MAILBOX_EDITOR";
+ ]
+
+ SID_ATTR_UNDO_COUNT // ole(no) api(final/play)
+ [
+ ExecMethod = ExecOther ;
+ StateMethod = StateOther ;
+ ]
+
+ SID_AUTOSPELL_CHECK
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ ]
+
+ SID_AUTOSPELL_MARKOFF
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ ]
+
+ FN_SET_MODOPT_TBLNUMFMT // status()
+ [
+ ExecMethod = ExecOther ;
+ StateMethod = StateOther ;
+ ]
+ //Extra/Optionen/Ansicht
+ //Wird zusammen zum Property ViewSettings
+ FN_VIEW_HIDDEN_PARA
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ Export = FALSE;
+ ]
+
+ FN_PRINT_LAYOUT
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ Export = FALSE;
+ ]
+ // alles ab hier kann weg (Export = FALSE;), wenn die vorangehenden funktionieren
+ SfxBoolItem Ruler FN_RULER // status()
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ Export = FALSE;
+ Cachable;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_VIEW_BOUNDS // status()
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ Export = FALSE;
+ Cachable;
+ ]
+
+ FN_VIEW_GRAPHIC // status()
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ Export = FALSE ;
+ ]
+
+ FN_VIEW_FIELDS // status()
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ Export = FALSE;
+ ]
+
+ FN_VIEW_FIELDNAME // status()
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ Cachable ;
+ Export = FALSE;
+ ]
+
+ FN_VIEW_MARKS // status()
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ Cachable ;
+ Export = FALSE;
+ ]
+
+ FN_VIEW_META_CHARS // status()
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ Cachable ;
+ Export = FALSE;
+ ]
+
+ FN_VIEW_TABLEGRID // status()
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ ]
+
+ SID_GRID_VISIBLE
+ [
+ ExecMethod = ExecViewOptions;
+ StateMethod = StateViewOptions ;
+ ]
+ SID_GRID_USE
+ [
+ ExecMethod = ExecViewOptions;
+ StateMethod = StateViewOptions ;
+ ]
+ SID_HELPLINES_MOVE
+ [
+ ExecMethod = ExecViewOptions;
+ StateMethod = StateViewOptions ;
+ ]
+
+ FN_VLINEAL // status()
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ Export = FALSE;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ FN_HSCROLLBAR // status()
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ Export = FALSE;
+ ]
+
+ FN_VSCROLLBAR // status()
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ Export = FALSE;
+ ]
+
+ FN_SHADOWCURSOR // status(final|play)
+ [
+ ExecMethod = ExecViewOptions ;
+ StateMethod = StateViewOptions ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+} //end interface Application
+
+shell SwModule
+{
+ import StarWriter[Automation];
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.136 2000/05/26 07:06:20 os
+ old SW Basic API Slots removed
+
+ Revision 1.135 2000/05/10 12:00:10 os
+ Basic API removed
+
+ Revision 1.134 1999/11/30 10:19:58 jp
+ Task #70259#: more entries into to the popup menus
+
+ Revision 1.133 1999/09/28 13:17:11 os
+ #67382# separate dialog for business cards
+
+ Revision 1.132 1999/06/22 15:36:04 JP
+ Bug #43028#: disableflag for edit in mailbody
+
+
+ Rev 1.131 22 Jun 1999 17:36:04 JP
+ Bug #43028#: disableflag for edit in mailbody
+
+ Rev 1.130 23 Mar 1999 12:15:22 MA
+ #63806# ConfigName und HelpText entfernt
+
+ Rev 1.129 17 Feb 1999 15:06:42 OS
+ #61890# Methoden fuer alte Optionsdialoge geloescht
+
+ Rev 1.128 26 Nov 1998 15:19:08 MA
+ #59896# Raster usw jetzt an der Application
+
+ Rev 1.127 12 Nov 1998 17:29:00 MA
+ #58677# Disable Flag
+
+ Rev 1.126 26 Jan 1998 09:12:10 OS
+ neu: WebViewSettings
+
+ Rev 1.125 22 Dec 1997 17:18:54 MA
+ ShadowCursor
+
+ Rev 1.124 03 Nov 1997 16:09:42 JP
+ neu: Optionen/-Page/Basic-Schnittst. fuer ShadowCursor
+
+ Rev 1.123 28 Aug 1997 12:52:34 MBA
+ Neue Interface-Namen
+
+ Rev 1.122 11 Jun 1997 14:57:44 OS
+ SpellOnline und HideSpell nicht mehr mit Exportverbot #40529#
+
+ Rev 1.121 09 Jun 1997 14:27:20 MA
+ chg: Browse-Flag nur noch am Doc
+
+ Rev 1.120 06 Jun 1997 12:42:38 MA
+ chg: versteckte Absaetze ausblenden
+
+ Rev 1.119 30 May 1997 15:36:46 OS
+ FN_CONFIG_DLG raus
+
+ Rev 1.118 28 May 1997 08:13:48 OS
+ SID_ATTR_METRIC am SwModule ausfuehren fr #40192#
+
+ Rev 1.117 16 Feb 1997 15:23:38 OM
+ DB-Manager an Ofa verschoben
+
+ Rev 1.116 30 Jan 1997 11:01:00 OS
+ neu: PRINT_LAYOUT
+
+ Rev 1.115 27 Jan 1997 16:38:38 OS
+ HtmlMode entfernt
+
+ Rev 1.114 04 Dec 1996 14:01:32 OS
+ neue Ids fuer Optionendialoge
+
+ Rev 1.113 26 Nov 1996 19:43:42 OS
+ GetDocManPath mit SID_SW_DOCMAN_PATH
+
+ Rev 1.112 22 Nov 1996 13:03:46 OS
+ neue Ids fuer Wizards
+
+ Rev 1.111 01 Nov 1996 17:59:38 MA
+ Umstellung zum Module
+
+ Rev 1.110 27 Sep 1996 13:58:28 OS
+ +StateMethod fuer FN_LABEL
+
+ Rev 1.109 21 Sep 1996 17:36:42 OS
+ Sot-Umstellung beendet
+
+ Rev 1.108 18 Sep 1996 10:37:14 OM
+ Slots entfernt
+
+ Rev 1.107 17 Sep 1996 18:17:48 OS
+ EditOptionsDialog noch nicht in swriter.idl
+
+ Rev 1.106 16 Sep 1996 10:26:50 MBA
+ Erste Anpassungen an swriter.idl
+
+ Rev 1.105 10 Sep 1996 16:39:44 OS
+ Slotvereinheitlichung zu, 1.
+
+ Rev 1.104 31 Aug 1996 17:13:02 OS
+ neue Optionendialoge
+
+ Rev 1.103 20 Aug 1996 17:28:38 HJS
+ eu...
+
+ Rev 1.102 13 Aug 1996 12:35:16 OS
+ neu: InternetDialog
+
+ Rev 1.101 06 Aug 1996 11:09:56 OM
+ Hyperlinkleiste auf bei Readonly-Doks
+
+ Rev 1.100 29 Jul 1996 11:09:18 OS
+ FN_SET_HTMLMODE -> SID_HTML_MODE
+
+ Rev 1.99 25 Jul 1996 15:26:28 OS
+ neu: FN_SET_HTMLMODE
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/wtabsh.sdi b/sw/sdi/wtabsh.sdi
new file mode 100644
index 000000000000..e228dbe51c79
--- /dev/null
+++ b/sw/sdi/wtabsh.sdi
@@ -0,0 +1,46 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: WTABSH.IDL $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/wtabsh.sdi,v 1.1.1.1 2000-09-18 17:14:31 hr Exp $
+
+ Beschreibung: IDL - File fuer TabShell StarWriter /Web
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface WebTable : BaseTextTable
+[ uuid = "B47F0DEC-1E1F-11d1-89CA-008029E4B0B1" ]
+{
+ import BaseTextSelection;
+}
+
+ //=========================================================================
+
+shell SwWebTableShell : SwBaseShell
+{
+ import WebTable[Automation];
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.4 2000/02/01 09:45:00 os
+ #72282# SwWebBaseShell removed
+
+ Revision 1.3 1997/09/03 14:42:08 MBA
+ Neue Shell
+
+
+ Rev 1.2 03 Sep 1997 16:42:08 MBA
+ Neue Shell
+
+ Rev 1.1 28 Aug 1997 12:53:54 MBA
+ Neue Interface-Namen
+
+ Rev 1.0 23 Jan 1997 14:42:32 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/sdi/wtextsh.sdi b/sw/sdi/wtextsh.sdi
new file mode 100644
index 000000000000..880f5196387b
--- /dev/null
+++ b/sw/sdi/wtextsh.sdi
@@ -0,0 +1,61 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: WTEXTSH.IDL $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/wtextsh.sdi,v 1.1.1.1 2000-09-18 17:14:31 hr Exp $
+
+ Beschreibung: IDL - File Textshell fuer StarWriter/WEB
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+
+interface WebText : BaseText
+[
+ uuid = "B47F0DE5-1E1F-11d1-89CA-008029E4B0B1";
+]
+{
+ FN_INSERT_FRAME_INTERACT_NOCOL
+ [
+ ExecMethod = ExecInsert ;
+ StateMethod = StateInsert ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ Cachable ;
+ ]
+ // hier sollen die Slots eingefuegt werden, die n u r vom StarWriter/WEB
+ // unterstuetzt werden
+ import TextSelection;
+}
+
+shell SwWebTextShell : SwBaseShell
+{
+ import WebText[Automation];
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.5 2000/06/20 14:47:52 os
+ #70060# less occurences of columns in HTML
+
+ Revision 1.4 2000/05/26 07:06:20 os
+ old SW Basic API Slots removed
+
+ Revision 1.3 2000/02/01 09:45:00 os
+ #72282# SwWebBaseShell removed
+
+ Revision 1.2 1997/08/28 10:39:20 MBA
+ Neue Interface-Namen
+
+
+ Rev 1.1 28 Aug 1997 12:39:20 MBA
+ Neue Interface-Namen
+
+ Rev 1.0 23 Jan 1997 14:41:50 OS
+ WebTextShell
+
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/sdi/wviewsh.sdi b/sw/sdi/wviewsh.sdi
new file mode 100644
index 000000000000..8e22b606abd8
--- /dev/null
+++ b/sw/sdi/wviewsh.sdi
@@ -0,0 +1,223 @@
+/*------------------------------------------------------------------------
+
+ $Workfile: wviewsh.sdi $
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/sdi/wviewsh.sdi,v 1.1.1.1 2000-09-18 17:14:31 hr Exp $
+
+ Beschreibung: allgemeine interfaces fuer View
+
+ (c) Copyright 1997 - 2000, Star Division GmbH, Hamburg
+
+------------------------------------------------------------------------*/
+
+interface WebTextInTable : Selection
+[ uuid = "B47F0DE7-1E1F-11d1-89CA-008029E4B0B1" ]
+{
+ import WebText;
+ import WebTable;
+}
+
+interface WebListInTable : Selection
+[ uuid="B47F0DE8-1E1F-11d1-89CA-008029E4B0B1" ]
+{
+ import WebText;
+ import WebList;
+ import WebTable;
+}
+
+interface WebListInText : Selection
+[ uuid = "B47F0DE9-1E1F-11d1-89CA-008029E4B0B1"]
+{
+ import WebList;
+ import WebText;
+}
+
+interface WebEditView : BaseTextEditView
+[
+ uuid = "B47F0DEA-1E1F-11d1-89CA-008029E4B0B1"
+]
+{
+ SID_DRAW_TEXT_MARQUEE // status()
+ [
+ ExecMethod = ExecDraw ;
+ StateMethod = GetDrawState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ FN_INSERT_HEADER
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState ;
+ ]
+ FN_INSERT_FOOTER
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState ;
+ ]
+}
+
+shell SwWebView : SfxViewShell
+{
+ import WebEditView [Automation];
+// import SearchSettings;
+// import TextPage "Page";
+// import SearchAttributes;
+// import ReplaceAttributes;
+
+}
+
+interface WebSourceView : View
+[ uuid = "95069CE0-69D8-101D-9757-C667E8298000"]
+{
+ SID_TABLE_CELL // status()
+ [
+ StateMethod = GetState ;
+ ]
+ SID_SAVEASDOC // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_SAVEDOC // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_PRINTDOC // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_PRINTDOCDIRECT // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_ATTR_CHAR_FONT // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_ATTR_CHAR_FONTHEIGHT // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_SEARCH_OPTIONS
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_SEARCH_ITEM
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ ]
+ FID_SEARCH_NOW
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_UNDO // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+
+ SID_REDO // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+
+ SID_REPEAT // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_CUT // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Volatile;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_COPY // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Volatile;
+ ]
+
+ SID_PASTE // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_SELECTALL // status(final|play)
+ [
+ ExecMethod = Execute ;
+ StateMethod = NoState ;
+ ]
+}
+
+shell SwSrcView : SfxViewShell
+
+{
+ import WebSourceView [Automation];
+}
+
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.12 2000/05/26 07:06:20 os
+ old SW Basic API Slots removed
+
+ Revision 1.11 2000/05/10 12:00:11 os
+ Basic API removed
+
+ Revision 1.10 1999/03/23 11:16:34 MA
+ #63806# ConfigName und HelpText entfernt
+
+
+ Rev 1.9 23 Mar 1999 12:16:34 MA
+ #63806# ConfigName und HelpText entfernt
+
+ Rev 1.8 12 Nov 1998 17:29:12 MA
+ #58677# Disable Flag
+
+ Rev 1.7 11 Jul 1998 15:28:30 OS
+ HTML-Quelltext ins Medium der DocShell speichern #52379#
+
+ Rev 1.6 13 Mar 1998 08:32:26 OS
+ SID_NEWWINDOW nicht mehr ueberladen
+
+ Rev 1.5 28 Aug 1997 12:52:16 MBA
+ Neue Interface-Namen
+
+ Rev 1.4 14 Apr 1997 16:03:00 OS
+ neu: SearchAttributes und ReplaceAttributes
+
+ Rev 1.3 12 Feb 1997 12:19:16 OM
+ Kopf/Fusszeilen im Webmode
+
+ Rev 1.2 11 Feb 1997 14:04:06 OM
+ Lauftext im Webmode
+
+ Rev 1.1 10 Feb 1997 17:28:50 OM
+ Lauftext
+
+ Rev 1.0 23 Jan 1997 08:41:46 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/filter/ascii/ascatr.cxx b/sw/source/filter/ascii/ascatr.cxx
new file mode 100644
index 000000000000..bdb0a7398675
--- /dev/null
+++ b/sw/source/filter/ascii/ascatr.cxx
@@ -0,0 +1,486 @@
+/*************************************************************************
+ *
+ * $RCSfile: ascatr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_USHORTS
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX
+#include <svx/fontitem.hxx>
+#endif
+
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _WRTASC_HXX
+#include <wrtasc.hxx>
+#endif
+#ifndef _TXATBASE_HXX
+#include <txatbase.hxx>
+#endif
+#ifndef _FCHRFMT_HXX
+#include <fchrfmt.hxx>
+#endif
+#ifndef _TXTFLD_HXX
+#include <txtfld.hxx>
+#endif
+#ifndef _TXTATR_HXX
+#include <txtatr.hxx>
+#endif
+#ifndef _FMTFTN_HXX
+#include <fmtftn.hxx>
+#endif
+#ifndef _CHARFMT_HXX
+#include <charfmt.hxx>
+#endif
+#ifndef _FMTFLD_HXX
+#include <fmtfld.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _FTNINFO_HXX //autogen
+#include <ftninfo.hxx>
+#endif
+
+/*
+ * Dieses File enthaelt alle Ausgabe-Funktionen des ASCII-Writers;
+ * fuer alle Nodes, Attribute, Formate und Chars.
+ */
+
+void lcl_WriteString( SvStream& rOut, const String& rStr,
+ rtl_TextEncoding eSrcSet, rtl_TextEncoding eDest );
+
+class SwASC_AttrIter
+{
+ SvPtrarr aTxtAtrArr;
+ SvUShorts aChrSetArr;
+ SwASCWriter& rWrt;
+ const SwTxtNode& rNd;
+ xub_StrLen nAktSwPos;
+ rtl_TextEncoding eNdChrSet;
+
+ xub_StrLen SearchNext( xub_StrLen nStartPos );
+ BOOL SetCharSet( const SwTxtAttr& rTxtAttr, BOOL bStart );
+
+public:
+ SwASC_AttrIter( SwASCWriter& rWrt, const SwTxtNode& rNd, xub_StrLen nStt );
+
+ void NextPos() { nAktSwPos = SearchNext( nAktSwPos + 1 ); }
+
+ xub_StrLen WhereNext() const { return nAktSwPos; }
+ rtl_TextEncoding GetNextCharSet() const;
+ rtl_TextEncoding GetNodeCharSet() const { return eNdChrSet; }
+
+ BOOL OutAttr( xub_StrLen nSwPos, rtl_TextEncoding eChrSet );
+};
+
+
+SwASC_AttrIter::SwASC_AttrIter( SwASCWriter& rWr, const SwTxtNode& rTxtNd,
+ xub_StrLen nStt )
+ : rWrt( rWr ), rNd( rTxtNd ), nAktSwPos( 0 ),
+ aTxtAtrArr( 0, 4 ), aChrSetArr( 0, 4 )
+{
+ // Attributwechsel an Pos 0 wird ignoriert, da davon ausgegangen
+ // wird, dass am Absatzanfang sowieso die Attribute neu ausgegeben
+ // werden.
+ eNdChrSet = ((SvxFontItem&)rNd.SwCntntNode::GetAttr(
+ RES_CHRATR_FONT )).GetCharSet();
+ nAktSwPos = SearchNext( nStt + 1 );
+}
+
+rtl_TextEncoding SwASC_AttrIter::GetNextCharSet() const
+{
+ if( aChrSetArr.Count() )
+ return (rtl_TextEncoding )aChrSetArr[ aChrSetArr.Count() - 1 ];
+ return eNdChrSet;
+}
+
+xub_StrLen SwASC_AttrIter::SearchNext( xub_StrLen nStartPos )
+{
+ register xub_StrLen nMinPos = STRING_MAXLEN;
+ const SwpHints* pTxtAttrs = rNd.GetpSwpHints();
+ if( pTxtAttrs )
+ {
+ register USHORT i;
+ register xub_StrLen nPos;
+ const xub_StrLen * pPos;
+
+// kann noch optimiert werden, wenn ausgenutzt wird, dass die TxtAttrs
+// nach der Anfangsposition geordnet sind. Dann muessten
+// allerdings noch 2 Indices gemerkt werden
+ for( i = 0; i < pTxtAttrs->Count(); i++ )
+ {
+ const SwTxtAttr* pHt = (*pTxtAttrs)[i];
+ nPos = *pHt->GetStart(); // gibt erstes Attr-Zeichen
+ pPos = pHt->GetEnd();
+
+ if( nPos >= nStartPos && nPos <= nMinPos &&
+ ( !pPos || SetCharSet( *pHt, TRUE ) ) )
+ nMinPos = nPos;
+
+ if( pPos ? ( (nPos = *pPos) >= nStartPos && nPos <= nMinPos &&
+ SetCharSet( *pHt, FALSE ) )
+ : (( ++nPos ) >= nStartPos && nPos < nMinPos) )
+ nMinPos = nPos;
+ }
+ }
+ return nMinPos;
+}
+
+BOOL SwASC_AttrIter::SetCharSet( const SwTxtAttr& rAttr, BOOL bStart )
+{
+ void* p = 0;
+ rtl_TextEncoding eChrSet;
+ const SfxPoolItem& rItem = rAttr.GetAttr();
+ switch( rItem.Which() )
+ {
+ case RES_CHRATR_FONT:
+ p = (void*)&rAttr;
+ eChrSet = ((SvxFontItem&)rItem).GetCharSet();
+ break;
+
+ case RES_TXTATR_CHARFMT:
+ {
+ const SfxPoolItem* pItem;
+ if( ((SwFmtCharFmt&)rItem).GetCharFmt() && SFX_ITEM_SET ==
+ ((SwFmtCharFmt&)rItem).GetCharFmt()->GetItemState(
+ RES_CHRATR_FONT, TRUE, &pItem ))
+ {
+ eChrSet = ((SvxFontItem*)pItem)->GetCharSet();
+ p = (void*)&rAttr;
+ }
+ }
+ break;
+ }
+
+ if( p )
+ {
+ USHORT nPos;
+ if( bStart )
+ {
+ nPos = aChrSetArr.Count();
+ aChrSetArr.Insert( eChrSet, nPos );
+ aTxtAtrArr.Insert( p, nPos );
+ }
+ else if( USHRT_MAX != ( nPos = aTxtAtrArr.GetPos( p )) )
+ {
+ aTxtAtrArr.Remove( nPos );
+ aChrSetArr.Remove( nPos );
+ }
+ }
+ return 0 != p;
+}
+
+BOOL SwASC_AttrIter::OutAttr( xub_StrLen nSwPos, rtl_TextEncoding eChrSet )
+{
+ BOOL bRet = FALSE;
+ const SwpHints* pTxtAttrs = rNd.GetpSwpHints();
+ if( pTxtAttrs )
+ {
+ register USHORT i;
+ for( i = 0; i < pTxtAttrs->Count(); i++ )
+ {
+ const SwTxtAttr* pHt = (*pTxtAttrs)[i];
+ const xub_StrLen * pEnd = pHt->GetEnd();
+ if( !pEnd && nSwPos == *pHt->GetStart() )
+ {
+ bRet = TRUE;
+ String sOut;
+ switch( pHt->Which() )
+ {
+ case RES_TXTATR_FIELD:
+ sOut = ((SwTxtFld*)pHt)->GetFld().GetFld()->Expand();
+ break;
+
+ case RES_TXTATR_HARDBLANK:
+ sOut = ((SwTxtHardBlank*)pHt)->GetChar();
+ break;
+
+ case RES_TXTATR_FTN:
+ {
+ const SwFmtFtn& rFtn = pHt->GetFtn();
+ if( rFtn.GetNumStr().Len() )
+ sOut = rFtn.GetNumStr();
+ else if( rFtn.IsEndNote() )
+ sOut = rWrt.pDoc->GetEndNoteInfo().aFmt.
+ GetNumStr( rFtn.GetNumber() );
+ else
+ sOut = rWrt.pDoc->GetFtnInfo().aFmt.
+ GetNumStr( rFtn.GetNumber() );
+ }
+ break;
+ }
+ if( sOut.Len() )
+ ::lcl_WriteString( rWrt.Strm(), sOut, eChrSet,
+ rWrt.GetAsciiOptions().GetCharSet() );
+ }
+ else if( nSwPos < *pHt->GetStart() )
+ break;
+ }
+ }
+ return bRet;
+}
+
+
+//------------------------
+/* Ausgabe der Nodes */
+//------------------------
+
+static Writer& OutASC_SwTxtNode( Writer& rWrt, SwCntntNode& rNode )
+{
+ const SwTxtNode& rNd = (SwTxtNode&)rNode;
+
+ xub_StrLen nStrPos = rWrt.pCurPam->GetPoint()->nContent.GetIndex();
+ xub_StrLen nNodeEnde = rNd.Len(), nEnde = nNodeEnde;
+ BOOL bLastNd = rWrt.pCurPam->GetPoint()->nNode == rWrt.pCurPam->GetMark()->nNode;
+ if( bLastNd )
+ nEnde = rWrt.pCurPam->GetMark()->nContent.GetIndex();
+
+ SwASC_AttrIter aAttrIter( (SwASCWriter&)rWrt, rNd, nStrPos );
+ rtl_TextEncoding eChrSet = aAttrIter.GetNodeCharSet();
+ rtl_TextEncoding eSet = rWrt.GetAsciiOptions().GetCharSet();
+
+ if( !nStrPos )
+ ::lcl_WriteString( rWrt.Strm(), rNd.GetNumString(), eChrSet, eSet );
+
+ String aStr( rNd.GetTxt() );
+ if( rWrt.bASCII_ParaAsBlanc )
+ aStr.SearchAndReplaceAll( 0x0A, ' ' );
+
+ do {
+ xub_StrLen nNextAttr = aAttrIter.WhereNext();
+ rtl_TextEncoding eNextChrSet = aAttrIter.GetNextCharSet();
+
+ if( nNextAttr > nEnde )
+ nNextAttr = nEnde;
+
+ if( !aAttrIter.OutAttr( nStrPos, eChrSet ))
+ ::lcl_WriteString( rWrt.Strm(),
+ aStr.Copy( nStrPos, nNextAttr - nStrPos ),
+ eChrSet, eSet );
+ nStrPos = nNextAttr;
+ eChrSet = eNextChrSet;
+ aAttrIter.NextPos();
+ } while( nStrPos < nEnde );
+
+ if( !bLastNd ||
+ ( !rWrt.bWriteClipboardDoc && !rWrt.bASCII_NoLastLineEnd )
+ && !nStrPos && nEnde == nNodeEnde )
+ ::lcl_WriteString( rWrt.Strm(), ((SwASCWriter&)rWrt).GetLineEnd(),
+ RTL_TEXTENCODING_MS_1252, eSet );
+
+ return rWrt;
+}
+
+void lcl_WriteString( SvStream& rStream, const String& rStr,
+ rtl_TextEncoding eSrcSet, rtl_TextEncoding eDestSet )
+{
+ if( rStr.Len() )
+ {
+ if( RTL_TEXTENCODING_UCS2 == eDestSet )
+ rStream.Write( rStr.GetBuffer(), rStr.Len() * sizeof( sal_Unicode ));
+ else if( RTL_TEXTENCODING_UCS4 == eDestSet )
+ {
+ // ????
+ }
+ else
+ {
+ ByteString sOut( rStr, eDestSet );
+ rStream << sOut.GetBuffer();
+ }
+ }
+}
+
+/*
+ * lege hier jetzt die Tabellen fuer die ASCII-Funktions-Pointer auf
+ * die Ausgabe-Funktionen an.
+ * Es sind lokale Strukturen, die nur innerhalb der ASCII-DLL
+ * bekannt sein muessen.
+ */
+
+SwNodeFnTab aASCNodeFnTab = {
+/* RES_TXTNODE */ OutASC_SwTxtNode,
+/* RES_GRFNODE */ 0,
+/* RES_OLENODE */ 0
+};
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ascii/ascatr.cxx,v 1.1.1.1 2000-09-18 17:14:53 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.59 2000/09/18 16:04:38 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.58 2000/05/08 17:36:58 jp
+ Changes for Unicode
+
+ Revision 1.57 2000/02/11 14:36:19 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.56 1999/11/01 17:49:58 jp
+ own convert from char to UNICODE char
+
+ Revision 1.55 1999/11/01 11:11:14 jp
+ call string-convert with the CharSet of the font
+
+ Revision 1.54 1999/08/26 18:34:10 JP
+ load and save Text with more options (charset/language/lineend/font)
+
+
+ Rev 1.53 26 Aug 1999 20:34:10 JP
+ load and save Text with more options (charset/language/lineend/font)
+
+ Rev 1.52 27 Jun 1998 16:01:50 JP
+ Writer mit neuen Flags; fuer den ASCII-Writer, etwas aufgeraeumt
+
+ Rev 1.51 27 Jan 1998 19:37:12 HR
+ Ueberfluessige Klammern weg, HPUX mag sie nicht
+
+ Rev 1.50 25 Nov 1997 18:55:18 MA
+ includes
+
+ Rev 1.49 03 Nov 1997 14:03:46 MA
+ precomp entfernt
+
+ Rev 1.48 10 Oct 1997 12:19:46 JP
+ beim Clipboard das letzte CR/LF nicht schreiben
+
+ Rev 1.47 14 Jan 1997 08:43:32 MA
+ includes
+
+ Rev 1.46 23 Oct 1996 19:49:00 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.45 28 Jun 1996 13:59:08 MA
+ includes
+
+ Rev 1.44 03 Apr 1996 12:32:26 JP
+ OutSwTxtNode: nur im letzten Node entscheiden, ob CRLF geschrieben wird
+
+ Rev 1.43 26 Mar 1996 15:24:08 JP
+ Bugfix: unbeannte Zeichen richtig schreiben
+
+ Rev 1.42 13 Feb 1996 19:41:30 JP
+ Bug #25428#: LineEnd von SV holen und entsp. auswerten
+
+ Rev 1.41 31 Jan 1996 14:27:36 mk
+ SINIX
+
+ Rev 1.40 24 Nov 1995 17:24:46 OM
+ PCH->PRECOMPILED
+
+ Rev 1.39 30 Oct 1995 13:03:38 MA
+ chg: ConvertUnknown direkt eingebaut.
+
+ Rev 1.38 02 Oct 1995 13:10:48 JP
+ Umstellung auf schreiben verschiedener CodeSets
+
+ Rev 1.37 25 Oct 1994 15:10:22 MA
+ PreHdr.
+
+ Rev 1.36 21 Jul 1994 09:29:52 JP
+ OutASC_SwTxtNode: fuer den ZeilenUmbruch im Translate die Laenge vom Node
+ benutzen und nicht die vom String. Stehen Felder/Nummern/usw. im String
+ kann es nie passen!
+
+ Rev 1.35 04 Mar 1994 10:58:28 JP
+ Translate: auf const char* casten.
+
+ Rev 1.34 25 Feb 1994 12:54:46 JP
+ schreibe mit expandierten Feldern und Numerierung
+
+ Rev 1.33 15 Feb 1994 08:24:10 MI
+ Filter ab jetzt handsegmentiert
+
+ Rev 1.32 28 Jan 1994 11:28:36 MI
+ TCOV() entfernt, SW_... nach SEG_... umbenannt
+
+ Rev 1.31 13 Jan 1994 08:28:28 MI
+ Segmentierung per #define ermoeglicht
+
+ Rev 1.30 12 Jan 1994 11:22:46 MI
+ Segmentierungs-Probleme
+
+*************************************************************************/
diff --git a/sw/source/filter/ascii/makefile.mk b/sw/source/filter/ascii/makefile.mk
new file mode 100644
index 000000000000..eb6f9e64164d
--- /dev/null
+++ b/sw/source/filter/ascii/makefile.mk
@@ -0,0 +1,94 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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=sw
+TARGET=ascii
+
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\filt_1st\filt_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ ascatr.cxx \
+ parasc.cxx \
+ wrtasc.cxx
+
+
+
+SLOFILES = \
+ $(SLO)$/ascatr.obj \
+ $(SLO)$/parasc.obj \
+ $(SLO)$/wrtasc.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/filter/ascii/parasc.cxx b/sw/source/filter/ascii/parasc.cxx
new file mode 100644
index 000000000000..b26616ec668b
--- /dev/null
+++ b/sw/source/filter/ascii/parasc.cxx
@@ -0,0 +1,1180 @@
+/*************************************************************************
+ *
+ * $RCSfile: parasc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "filt_pch.hxx"
+#endif
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SFX_PRINTER_HXX
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen wg. SvxFontItem
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen wg. SvxLanguageItem
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _FLTINI_HXX
+#include <fltini.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+
+#ifndef _SWSWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _STATSTR_HRC
+#include <statstr.hrc> // ResId fuer Statusleiste
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx> // ...Percent()
+#endif
+
+#define ASC_BUFFLEN 4096
+
+
+#ifdef ASYNCHRON
+
+class _SvLockBytes
+{
+ AutoTimer aTimer;
+ SvStream& rIn;
+
+ ULONG nDataRead;
+ Link aCallDataRead;
+
+ DECL_STATIC_LINK( _SvLockBytes, DataRead, Timer* );
+
+public:
+ _SvLockBytes( SvStream& rInput, const Link& rCallBack );
+ ~_SvLockBytes();
+
+ ErrCode ReadAt( ULONG nPos, void* pArr, ULONG nCount, ULONG* pReadCnt );
+
+ SvStream& GetStream() const { return rIn; }
+};
+
+
+// client vom Standard SwPageDesc. Wird dieser geloescht, dann
+// der Reader auch beendet werden!!
+class SwAsynchLoader : public SvRefBase, public SwClient
+{
+protected:
+
+ SwDoc* pDoc;
+ SwPaM* pPam;
+
+ BOOL bInCall;
+ _SvLockBytes* pLoader;
+
+ DECL_STATIC_LINK( SwAsynchLoader, NewData, _SvLockBytes* );
+
+protected:
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew );
+ virtual ~SwAsynchLoader();
+
+ virtual ULONG NextData() = 0;
+
+public:
+ SwAsynchLoader( SvStream& rIn, const SwPaM& rCrsr );
+
+ ULONG CallParser();
+};
+
+SV_DECL_REF(SwAsynchLoader)
+SV_IMPL_REF(SwAsynchLoader)
+
+
+class SwASCIIParser : public SwAsynchLoader
+{
+ char* pArr, *pStt, *pEnd, *pLastStt;
+
+ long nLineLen;
+ ULONG nError, nReadCnt, nFileSize;
+
+ const SwAsciiOptions& rOpt;
+ char cLastCRLF;
+
+ virtual ULONG NextData();
+
+protected:
+ virtual ~SwASCIIParser();
+
+public:
+ SwASCIIParser( SwDoc* pD, const SwPaM& rCrsr, SvStream& rIn,
+ int bReadNewDoc, const SwAsciiOptions& rOpts);
+};
+
+SV_DECL_REF(SwASCIIParser)
+SV_IMPL_REF(SwASCIIParser)
+
+
+// Aufruf fuer die allg. Reader-Schnittstelle
+ULONG AsciiReader::Read( SwDoc &rDoc, SwPaM &rPam, const String & )
+{
+ if( !pStrm )
+ {
+ ASSERT( !this, "ASCII-Read ohne Stream" );
+ return ERR_SWG_READ_ERROR;
+ }
+
+ //JP 18.01.96: Alle Ueberschriften sind normalerweise ohne
+ // Kapitelnummer. Darum hier explizit abschalten
+ // weil das Default jetzt wieder auf AN ist.
+ if( !bInsertMode )
+ Reader::SetNoOutlineNum( rDoc );
+
+ SwASCIIParserRef xParser( new SwASCIIParser( &rDoc, rPam, *pStrm,
+ !bInsertMode, eCodeSet ));
+ ULONG nRet = xParser->CallParser();
+ // nach dem Lesen sofort wieder defaulten
+ eCodeSet = GetSystemCharSet();
+ return ERRCODE_IO_PENDING == nRet ? 0 : nRet;
+}
+
+
+/* */
+
+SwASCIIParser::SwASCIIParser( SwDoc* pD, const SwPaM& rCrsr, SvStream& rIn,
+ int bReadNewDoc, CharSet eSrc )
+ : SwAsynchLoader( rIn, rCrsr ),
+ eCodeSet( eSrc )
+{
+ pArr = new char [ ASC_BUFFLEN + 1 ];
+
+ pStt = pEnd = pLastStt = pArr;
+
+ cLastCRLF = 0;
+ nLineLen = 0;
+ nError = 0;
+ nReadCnt = 0;
+
+ rIn.Seek(STREAM_SEEK_TO_END);
+ rIn.ResetError();
+
+ nFileSize = rIn.Tell();
+ rIn.Seek(STREAM_SEEK_TO_BEGIN);
+ rIn.ResetError();
+
+}
+
+SwASCIIParser::~SwASCIIParser()
+{
+ delete pArr;
+}
+
+
+ULONG SwASCIIParser::NextData()
+{
+ SvStream& rInput = pLoader->GetStream();
+ do {
+ if( pStt >= pEnd )
+ {
+ if( pLastStt != pStt )
+ {
+ pDoc->Insert( *pPam, pLastStt, eCodeSet );
+ pLastStt = pStt;
+ }
+
+ // lese einen neuen Block ein
+ ULONG lGCount;
+
+ if (SVSTREAM_OK != rInput.GetError() || 0 != ( nError = pLoader->
+ ReadAt( nReadCnt, pArr, ASC_BUFFLEN, &lGCount )) ||
+ ( rInput.IsEof() && !lGCount ))
+ {
+ if( ERRCODE_IO_PENDING != nError || !lGCount )
+ break; // aus der WHILE-Schleife heraus
+ }
+
+ pEnd = pArr + lGCount;
+ nReadCnt += lGCount;
+ *pEnd = 0;
+ pStt = pLastStt = pArr;
+
+ ::SetProgressState( nReadCnt, pDoc->GetDocShell() );
+
+ if( cLastCRLF )
+ {
+ if( ( 0x0a == *pStt && 0x0d == cLastCRLF ) ||
+ ( 0x0d == *pStt && 0x0a == cLastCRLF ))
+ pLastStt = ++pStt;
+ cLastCRLF = 0;
+ nLineLen = 0;
+ // JP 03.04.96: das letze am Ende nehmen wir nicht
+ if( !rInput.IsEof() || !(pEnd == pStt ||
+ ( !*pEnd && pEnd == pStt+1 ) ) )
+ pDoc->SplitNode( *pPam->GetPoint() );
+ }
+ }
+
+ BOOL bIns = TRUE, bSplitNode = FALSE;
+ switch( *pStt )
+ {
+ case 0:
+ pEnd = pStt;
+ bIns = FALSE;
+ break;
+
+ case 0x0a:
+ bIns = FALSE;
+ *pStt = 0;
+ if( ++pStt == pEnd )
+ cLastCRLF = 0x0a;
+ else
+ {
+ if( 0x0d == *pStt )
+ pStt++;
+ // JP 03.04.96: das letze am Ende nehmen wir nicht
+ if( !rInput.IsEof() || !(pEnd == pStt ||
+ ( !*pEnd && pEnd == pStt+1 ) ) )
+ bSplitNode = TRUE;
+ }
+ break;
+
+ case 0x0d:
+ bIns = FALSE;
+ *pStt = 0;
+ if( ++pStt == pEnd )
+ cLastCRLF = 0x0d;
+ else
+ {
+ if( 0x0a == *pStt )
+ pStt++;
+ // JP 03.04.96: das letze am Ende nehmen wir nicht
+ if( !rInput.IsEof() || !(pEnd == pStt ||
+ ( !*pEnd && pEnd == pStt+1 ) ) )
+ bSplitNode = TRUE;
+ }
+ break;
+
+ case '\t': break;
+
+ case 0x0c:
+ {
+ // dann mal einen harten Seitenumbruch einfuegen
+ *pStt++ = 0;
+ if( nLineLen )
+ pDoc->Insert( *pPam, pLastStt, eCodeSet );
+ pDoc->SplitNode( *pPam->GetPoint() );
+ pDoc->Insert( *pPam, SvxFmtBreakItem(
+ SVX_BREAK_PAGE_BEFORE ));
+ pLastStt = pStt;
+ nLineLen = 0;
+ bIns = FALSE;
+ }
+ break;
+
+ case 0x1a:
+ if( nReadCnt == nFileSize && pStt+1 == pEnd )
+ *pStt = 0;
+ else
+ *pStt = '#'; // Ersatzdarstellung
+ break;
+
+ default:
+
+ if( (BYTE)' ' > (BYTE)*pStt )
+ // Ctrl-Zchn gefunden ersetze durch '#'
+ *pStt = '#';
+ }
+
+ if( bIns )
+ {
+ if( ( nLineLen >= MAX_ASCII_PARA - 100 ) &&
+ ( ( *pStt == ' ' ) || ( nLineLen >= MAX_ASCII_PARA - 1 ) ) )
+ {
+ char c = *pStt;
+ *pStt = 0;
+ pDoc->Insert( *pPam, pLastStt, eCodeSet );
+ pDoc->SplitNode( *pPam->GetPoint() );
+ pLastStt = pStt;
+ nLineLen = 0;
+ *pStt = c;
+ }
+ ++pStt;
+ ++nLineLen;
+ }
+ else if( bSplitNode )
+ {
+ // es wurde ein CR/LF erkannt, also speichere den Text
+ pDoc->Insert( *pPam, pLastStt, eCodeSet );
+ pDoc->SplitNode( *pPam->GetPoint() );
+ pLastStt = pStt;
+ nLineLen = 0;
+ }
+ } while( TRUE );
+
+ return nError;
+}
+
+
+/* */
+
+SwAsynchLoader::SwAsynchLoader( SvStream& rIn, const SwPaM& rCrsr )
+ : SwClient( 0 )
+{
+ bInCall = FALSE;
+ pDoc = (SwDoc*)rCrsr.GetDoc();
+ pPam = new SwPaM( pDoc, *rCrsr.GetPoint() );
+
+ SwPageDesc& rDesc = pDoc->_GetPageDesc( 0 );
+ rDesc.Add( this );
+
+ pLoader = new _SvLockBytes( rIn,
+ STATIC_LINK( this, SwAsynchLoader, NewData ) );
+}
+
+SwAsynchLoader::~SwAsynchLoader()
+{
+ delete pPam;
+ delete pLoader;
+}
+
+void SwAsynchLoader::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew )
+{
+ switch( pOld ? pOld->Which() : pNew ? pNew->Which() : 0 )
+ {
+ case RES_OBJECTDYING:
+ if( ((SwPtrMsgPoolItem *)pOld)->pObject == pRegisteredIn )
+ {
+ // dann uns selbst beenden
+ pRegisteredIn->Remove( this );
+ ReleaseRef(); // ansonsten sind wir fertig!
+ }
+ break;
+ }
+}
+
+IMPL_STATIC_LINK( SwAsynchLoader, NewData, _SvLockBytes*, p )
+{
+ ULONG nRet = 0;
+ if( !pThis->bInCall ) // kein mehrfaches Aufrufen
+ {
+ pThis->bInCall = TRUE;
+
+ BOOL bModify = pThis->pDoc->IsModified();
+ nRet = pThis->NextData();
+ if( !bModify )
+ pThis->pDoc->ResetModified();
+
+ if( ERRCODE_IO_PENDING != nRet )
+ pThis->ReleaseRef(); // ansonsten sind wir fertig!
+
+ pThis->bInCall = FALSE;
+ }
+
+ return nRet;
+}
+
+
+ULONG SwAsynchLoader::CallParser()
+{
+ bInCall = TRUE;
+ AddRef();
+ ULONG nRet = NextData();
+ if( ERRCODE_IO_PENDING != nRet )
+ ReleaseRef(); // ansonsten sind wir fertig!
+
+ // Sind wir im Pending-Status, wird ueber den Callback "geidelt" bis
+ // alles gelesen ist oder ein Fehler aufgetreten ist!
+
+ // Was passiert dann ???
+
+ bInCall = FALSE;
+ return nRet;
+}
+
+/* */
+
+_SvLockBytes::_SvLockBytes( SvStream& rInput, const Link& rCallback )
+ : rIn( rInput ), aCallDataRead( rCallback )
+{
+ nDataRead = 0;
+
+ aTimer.SetTimeout( 1000 ); // jede Sekunde 100 Zeichen lesen
+ aTimer.SetTimeoutHdl( STATIC_LINK( this, _SvLockBytes, DataRead ));
+ aTimer.Start();
+}
+
+_SvLockBytes::~_SvLockBytes()
+{
+ aTimer.Stop();
+}
+
+ErrCode _SvLockBytes::ReadAt( ULONG nPos, void* pArr, ULONG nCount,
+ ULONG* pReadCnt )
+{
+ ErrCode nRet = 0;
+ if( nPos + nCount > nDataRead )
+ {
+ nCount = nDataRead - nPos;
+ nRet = ERRCODE_IO_PENDING;
+ }
+
+ if( nCount )
+ {
+ rIn.Seek( nPos );
+ *pReadCnt = rIn.Read( pArr, nCount );
+ }
+ else
+ *pReadCnt = 0;
+ return rIn.GetError() ? rIn.GetError()
+ : ( rIn.IsEof() ? 0 : nRet );
+}
+
+IMPL_STATIC_LINK( _SvLockBytes, DataRead, Timer*, pTimer )
+{
+ pThis->nDataRead += 100;
+ pThis->aCallDataRead.Call( pThis );
+
+ return 0;
+}
+
+/* */
+
+#else
+
+class SwASCIIParser
+{
+ SwDoc* pDoc;
+ SwPaM* pPam;
+ SvStream& rInput;
+ sal_Char* pArr;
+ const SwAsciiOptions& rOpt;
+ SfxItemSet* pItemSet;
+ long nFileSize;
+ BOOL bNewDoc;
+
+ void ReadChars();
+ void ReadUnicode();
+
+public:
+ SwASCIIParser( SwDoc* pD, const SwPaM& rCrsr, SvStream& rIn,
+ int bReadNewDoc, const SwAsciiOptions& rOpts );
+ ~SwASCIIParser();
+
+ ULONG CallParser();
+};
+
+
+// Aufruf fuer die allg. Reader-Schnittstelle
+ULONG AsciiReader::Read( SwDoc &rDoc, SwPaM &rPam, const String & )
+{
+ if( !pStrm )
+ {
+ ASSERT( !this, "ASCII-Read ohne Stream" );
+ return ERR_SWG_READ_ERROR;
+ }
+
+ //JP 18.01.96: Alle Ueberschriften sind normalerweise ohne
+ // Kapitelnummer. Darum hier explizit abschalten
+ // weil das Default jetzt wieder auf AN ist.
+ if( !bInsertMode )
+ Reader::SetNoOutlineNum( rDoc );
+
+ SwASCIIParser* pParser = new SwASCIIParser( &rDoc, rPam, *pStrm,
+ !bInsertMode, aOpt.GetASCIIOpts() );
+ ULONG nRet = pParser->CallParser();
+
+ delete pParser;
+ // after Read reset the options
+ aOpt.ResetASCIIOpts();
+ return nRet;
+}
+
+void AsciiReader::SetFltName( const String& rFltNm )
+{
+ if( 5 <= rFltNm.Len() )
+ {
+ SwAsciiOptions aNewOpts;
+ switch( rFltNm.GetChar( 4 ) )
+ {
+ case 'D': aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_850 );
+ aNewOpts.SetParaFlags( LINEEND_CRLF );
+ if( 5 < rFltNm.Len() )
+ switch( rFltNm.Copy( 5 ).ToInt32() )
+ {
+ case 437: aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_437 ); break;
+ case 850: aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_850 ); break;
+ case 860: aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_860 ); break;
+ case 861: aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_861 ); break;
+ case 863: aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_863 ); break;
+ case 865: aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_865 ); break;
+ }
+ break;
+
+ case 'A': aNewOpts.SetCharSet( RTL_TEXTENCODING_MS_1252 );
+ aNewOpts.SetParaFlags( LINEEND_CRLF );
+ break;
+ case 'M': aNewOpts.SetCharSet( RTL_TEXTENCODING_APPLE_ROMAN );
+ aNewOpts.SetParaFlags( LINEEND_CR );
+ break;
+ case 'X': aNewOpts.SetCharSet( RTL_TEXTENCODING_MS_1252 );
+ aNewOpts.SetParaFlags( LINEEND_LF );
+ break;
+
+ default:
+ if( rFltNm.Copy( 4 ).EqualsAscii( "_DLG" ))
+ {
+ // use the options
+ aNewOpts = aOpt.GetASCIIOpts();
+ }
+ }
+ aOpt.SetASCIIOpts( aNewOpts );
+ }
+}
+
+
+SwASCIIParser::SwASCIIParser( SwDoc* pD, const SwPaM& rCrsr, SvStream& rIn,
+ int bReadNewDoc, const SwAsciiOptions& rOpts )
+ : pDoc( pD ), rInput( rIn ), rOpt( rOpts ), bNewDoc( bReadNewDoc ),
+ pItemSet( 0 )
+{
+ pPam = new SwPaM( *rCrsr.GetPoint() );
+ pArr = new sal_Char [ ASC_BUFFLEN + 1 ];
+
+ SfxItemSet aDfltSet( pDoc->GetAttrPool(), RES_CHRATR_FONT,
+ RES_CHRATR_LANGUAGE );
+
+ // set defaults from the options
+ if( rOpt.GetLanguage() )
+ {
+ aDfltSet.Put( SvxLanguageItem( (LanguageType)rOpt.GetLanguage(),
+ RES_CHRATR_LANGUAGE ) );
+ }
+ if( rOpt.GetFontName().Len() )
+ {
+ BOOL bDelete = FALSE;
+ const SfxFont* pFnt = 0;
+ if( pDoc->GetPrt() )
+ pFnt = pDoc->GetPrt()->GetFontByName( rOpt.GetFontName() );
+
+ if( !pFnt )
+ {
+ pFnt = new SfxFont( FAMILY_DONTKNOW, rOpt.GetFontName() );
+ bDelete = TRUE;
+ }
+
+ aDfltSet.Put( SvxFontItem( pFnt->GetFamily(), pFnt->GetName(),
+ aEmptyStr, pFnt->GetPitch(), pFnt->GetCharSet() ) );
+ }
+
+ if( aDfltSet.Count() )
+ {
+ if( bNewDoc )
+ pDoc->SetDefault( aDfltSet );
+ else
+ pItemSet = new SfxItemSet( aDfltSet );
+ }
+}
+
+SwASCIIParser::~SwASCIIParser()
+{
+ delete pPam;
+ delete pArr;
+ delete pItemSet;
+}
+
+
+// Aufruf des Parsers
+ULONG SwASCIIParser::CallParser()
+{
+ rInput.Seek(STREAM_SEEK_TO_END);
+ rInput.ResetError();
+
+ nFileSize = rInput.Tell();
+ rInput.Seek(STREAM_SEEK_TO_BEGIN);
+ rInput.ResetError();
+
+ ULONG nError = 0;
+ ::StartProgress( STR_STATSTR_W4WREAD, 0, nFileSize, pDoc->GetDocShell() );
+
+ SwPaM* pInsPam = 0;
+ xub_StrLen nSttCntnt;
+ if( !bNewDoc )
+ {
+ const SwNodeIndex& rTmp = pPam->GetPoint()->nNode;
+ pInsPam = new SwPaM( rTmp, rTmp, 0, -1 );
+ nSttCntnt = pPam->GetPoint()->nContent.GetIndex();
+ }
+
+ if( RTL_TEXTENCODING_UCS2 == rOpt.GetCharSet() )
+ ReadUnicode();
+ else
+ ReadChars();
+
+ if( pInsPam )
+ {
+ if( pItemSet )
+ {
+ // then set over the insert range the defined attributes
+ *pInsPam->GetMark() = *pPam->GetPoint();
+ pInsPam->GetPoint()->nNode++;
+ SwNode* pNd = pInsPam->GetNode();
+ if( pNd->IsCntntNode() )
+ pInsPam->GetPoint()->nContent.Assign(
+ (SwCntntNode*)pNd, nSttCntnt );
+ else
+ pInsPam->GetPoint()->nContent.Assign( 0, 0 );
+
+ // !!!!!
+ ASSERT( !this, "Have to change - hard attr. to para. style" );
+ pDoc->Insert( *pInsPam, *pItemSet );
+
+ delete pItemSet, pItemSet = 0;
+ }
+ delete pInsPam;
+ }
+
+ ::EndProgress( pDoc->GetDocShell() );
+ return nError;
+}
+
+void SwASCIIParser::ReadChars()
+{
+ sal_Char *pStt = pArr, *pEnd = pArr, *pLastStt = pArr;
+ long nReadCnt = 0;
+
+ sal_Char cLastCR = 0;
+ long nLineLen = 0;
+
+ do {
+ if( pStt >= pEnd )
+ {
+ if( pLastStt != pStt )
+ pDoc->Insert( *pPam, String( pLastStt, rOpt.GetCharSet() ));
+
+ // lese einen neuen Block ein
+ ULONG lGCount;
+ if (SVSTREAM_OK != rInput.GetError() ||
+ ((lGCount = rInput.Read(pArr, ASC_BUFFLEN)) == 0))
+ break; // aus der WHILE-Schleife heraus
+
+ if( lGCount == ASC_BUFFLEN )
+ {
+ if( RTL_TEXTENCODING_UTF8 == rOpt.GetCharSet() &&
+ 0 != ( pArr[ ASC_BUFFLEN - 1 ] & 0x80 ) )
+ {
+ // check the last char and skip before the start of it
+ long nBack = 0;
+ while( 0x80 == ( pArr[ ASC_BUFFLEN - 1 + nBack ] & 0xC0 ))
+ --nBack;
+ --nBack;
+ lGCount += nBack;
+ rInput.SeekRel( nBack );
+ }
+ else if( RTL_TEXTENCODING_UTF7 == rOpt.GetCharSet() )
+ {
+ // search any char that may not be convertet
+ long nBack = 0;
+ sal_Char c;
+ while( ' ' < ( c = pArr[ ASC_BUFFLEN - 1 + nBack ] ) &&
+ '+' != c )
+ --nBack;
+ if( '+' == c )
+ --nBack;
+ lGCount += nBack;
+ rInput.SeekRel( nBack );
+ }
+ }
+
+ pEnd = pArr + lGCount;
+ nReadCnt += lGCount;
+ *pEnd = 0;
+ pStt = pLastStt = pArr;
+
+ ::SetProgressState( nReadCnt, pDoc->GetDocShell() );
+
+ if( cLastCR )
+ {
+ if( 0x0a == *pStt && 0x0d == cLastCR )
+ pLastStt = ++pStt;
+ cLastCR = 0;
+ nLineLen = 0;
+ // JP 03.04.96: das letze am Ende nehmen wir nicht
+ if( !rInput.IsEof() || !(pEnd == pStt ||
+ ( !*pEnd && pEnd == pStt+1 ) ) )
+ pDoc->SplitNode( *pPam->GetPoint() );
+ }
+ }
+
+ BOOL bIns = TRUE, bSplitNode = FALSE;
+ switch( *pStt )
+ {
+ case 0:
+ pEnd = pStt;
+ bIns = FALSE;
+ break;
+
+ case 0x0a: if( LINEEND_LF == rOpt.GetParaFlags() )
+ {
+ bIns = FALSE;
+ *pStt = 0;
+ ++pStt;
+
+ // JP 03.04.96: das letze am Ende nehmen wir nicht
+ if( !rInput.IsEof() || !(pEnd == pStt ||
+ ( !*pEnd && pEnd == pStt+1 ) ) )
+ bSplitNode = TRUE;
+ }
+ break;
+
+ case 0x0d: if( LINEEND_LF != rOpt.GetParaFlags() )
+ {
+ bIns = FALSE;
+ *pStt = 0;
+ ++pStt;
+
+ BOOL bChkSplit = FALSE;
+ if( LINEEND_CRLF == rOpt.GetParaFlags() )
+ {
+ if( pStt == pEnd )
+ cLastCR = 0x0d;
+ else if( 0x0a == *pStt )
+ {
+ ++pStt;
+ bChkSplit = TRUE;
+ }
+ }
+ else
+ bChkSplit = TRUE;
+
+ // JP 03.04.96: das letze am Ende nehmen wir nicht
+ if( bChkSplit && ( !rInput.IsEof() ||
+ !(pEnd == pStt || ( !*pEnd && pEnd == pStt+1 ))))
+ bSplitNode = TRUE;
+ }
+ break;
+
+ case 0x0c:
+ {
+ // dann mal einen harten Seitenumbruch einfuegen
+ *pStt++ = 0;
+ if( nLineLen )
+ {
+ // Change to charset system!!!!
+ //rOpt.GetCharSet();
+ pDoc->Insert( *pPam, String( pLastStt,
+ rOpt.GetCharSet() ));
+ }
+ pDoc->SplitNode( *pPam->GetPoint() );
+ pDoc->Insert( *pPam, SvxFmtBreakItem(
+ SVX_BREAK_PAGE_BEFORE ));
+ pLastStt = pStt;
+ nLineLen = 0;
+ bIns = FALSE;
+ }
+ break;
+
+ case 0x1a:
+ if( nReadCnt == nFileSize && pStt+1 == pEnd )
+ *pStt = 0;
+ else
+ *pStt = '#'; // Ersatzdarstellung
+ break;
+
+ case '\t': break;
+
+ default:
+ if( (BYTE)' ' > (BYTE)*pStt )
+ // Ctrl-Zchn gefunden ersetze durch '#'
+ *pStt = '#';
+ break;
+ }
+
+ if( bIns )
+ {
+ if( ( nLineLen >= MAX_ASCII_PARA - 100 ) &&
+ ( ( *pStt == ' ' ) || ( nLineLen >= MAX_ASCII_PARA - 1 ) ) )
+ {
+ sal_Char c = *pStt;
+ *pStt = 0;
+
+ // Change to charset system!!!!
+ //rOpt.GetCharSet();
+ pDoc->Insert( *pPam, String( pLastStt, rOpt.GetCharSet() ));
+
+ pDoc->SplitNode( *pPam->GetPoint() );
+ pLastStt = pStt;
+ nLineLen = 0;
+ *pStt = c;
+ }
+ ++pStt;
+ ++nLineLen;
+ }
+ else if( bSplitNode )
+ {
+ // es wurde ein CR/LF erkannt, also speichere den Text
+
+ // Change to charset system!!!!
+ //rOpt.GetCharSet();
+ pDoc->Insert( *pPam, String( pLastStt, rOpt.GetCharSet() ));
+
+ pDoc->SplitNode( *pPam->GetPoint() );
+ pLastStt = pStt;
+ nLineLen = 0;
+ }
+ } while( TRUE );
+}
+
+void SwASCIIParser::ReadUnicode()
+{
+ BOOL bSwapUnicode = FALSE;
+ long nReadCnt = 0;
+
+ sal_Int16 nFlag;
+ rInput >> nFlag;
+
+ if( -2 == nFlag )
+ bSwapUnicode = TRUE; // must be swapped
+ else if( -257 != nFlag ) // notthing to do
+ rInput.SeekRel( sizeof( nFlag ) ); // no tag at start
+
+ sal_Unicode *pStt = (sal_Unicode*)pArr, *pEnd = pStt, *pLastStt = pStt;
+
+ sal_Unicode cLastCR = 0;
+ long nLineLen = 0;
+
+ do {
+ if( pStt >= pEnd )
+ {
+ if( pLastStt != pStt )
+ pDoc->Insert( *pPam, String( pLastStt ));
+
+ // lese einen neuen Block ein
+ ULONG lGCount;
+ if (SVSTREAM_OK != rInput.GetError() ||
+ ((lGCount = rInput.Read(pArr, ASC_BUFFLEN)) == 0))
+ break; // aus der WHILE-Schleife heraus
+
+ pEnd = (sal_Unicode*)(pArr + lGCount);
+ nReadCnt += lGCount;
+ *pEnd = 0;
+ pStt = pLastStt = (sal_Unicode*)pArr;
+
+ if( bSwapUnicode )
+ {
+ sal_Char* pF = pArr, *pN = pArr + 1;
+ for( ULONG n = 0; n < lGCount; n += 2, pF += 2, pN += 2 )
+ {
+ sal_Char c = *pF;
+ *pF = *pN;
+ *pN = c;
+ }
+ }
+
+ ::SetProgressState( nReadCnt, pDoc->GetDocShell() );
+
+ if( cLastCR )
+ {
+ if( 0x0a == *pStt && 0x0d == cLastCR )
+ pLastStt = ++pStt;
+ cLastCR = 0;
+ nLineLen = 0;
+ // JP 03.04.96: das letze am Ende nehmen wir nicht
+ if( !rInput.IsEof() || !(pEnd == pStt ||
+ ( !*pEnd && pEnd == pStt+1 ) ) )
+ pDoc->SplitNode( *pPam->GetPoint() );
+ }
+ }
+
+ BOOL bIns = TRUE, bSplitNode = FALSE;
+ switch( *pStt )
+ {
+ case 0:
+ pEnd = pStt;
+ bIns = FALSE;
+ break;
+
+ case 0x0a: if( LINEEND_LF == rOpt.GetParaFlags() )
+ {
+ bIns = FALSE;
+ *pStt = 0;
+ ++pStt;
+
+ // JP 03.04.96: das letze am Ende nehmen wir nicht
+ if( !rInput.IsEof() || !(pEnd == pStt ||
+ ( !*pEnd && pEnd == pStt+1 ) ) )
+ bSplitNode = TRUE;
+ }
+ break;
+
+ case 0x0d: if( LINEEND_LF != rOpt.GetParaFlags() )
+ {
+ bIns = FALSE;
+ *pStt = 0;
+ ++pStt;
+
+ BOOL bChkSplit = FALSE;
+ if( LINEEND_CRLF == rOpt.GetParaFlags() )
+ {
+ if( pStt == pEnd )
+ cLastCR = 0x0d;
+ else if( 0x0a == *pStt )
+ {
+ ++pStt;
+ bChkSplit = TRUE;
+ }
+ }
+ else
+ bChkSplit = TRUE;
+
+ // JP 03.04.96: das letze am Ende nehmen wir nicht
+ if( bChkSplit && ( !rInput.IsEof() ||
+ !(pEnd == pStt || ( !*pEnd && pEnd == pStt+1 ))))
+ bSplitNode = TRUE;
+ }
+ break;
+
+ case 0x0c:
+ {
+ // dann mal einen harten Seitenumbruch einfuegen
+ *pStt++ = 0;
+ if( nLineLen )
+ {
+ // Change to charset system!!!!
+ //rOpt.GetCharSet();
+ pDoc->Insert( *pPam, String( pLastStt ));
+ }
+ pDoc->SplitNode( *pPam->GetPoint() );
+ pDoc->Insert( *pPam, SvxFmtBreakItem(
+ SVX_BREAK_PAGE_BEFORE ));
+ pLastStt = pStt;
+ nLineLen = 0;
+ bIns = FALSE;
+ }
+ break;
+
+ case 0x1a:
+ if( nReadCnt == nFileSize && pStt+1 == pEnd )
+ *pStt = 0;
+ else
+ *pStt = '#'; // Ersatzdarstellung
+ break;
+
+ case '\t': break;
+
+ default:
+ if( ' ' > *pStt )
+ // Ctrl-Zchn gefunden ersetze durch '#'
+ *pStt = '#';
+ break;
+ }
+
+ if( bIns )
+ {
+ if( ( nLineLen >= MAX_ASCII_PARA - 100 ) &&
+ ( ( *pStt == ' ' ) || ( nLineLen >= MAX_ASCII_PARA - 1 ) ) )
+ {
+ sal_Unicode c = *pStt;
+ *pStt = 0;
+
+ // Change to charset system!!!!
+ //rOpt.GetCharSet();
+ pDoc->Insert( *pPam, String( pLastStt ));
+
+ pDoc->SplitNode( *pPam->GetPoint() );
+ pLastStt = pStt;
+ nLineLen = 0;
+ *pStt = c;
+ }
+ ++pStt;
+ ++nLineLen;
+ }
+ else if( bSplitNode )
+ {
+ // es wurde ein CR/LF erkannt, also speichere den Text
+
+ pDoc->Insert( *pPam, String( pLastStt ));
+
+ pDoc->SplitNode( *pPam->GetPoint() );
+ pLastStt = pStt;
+ nLineLen = 0;
+ }
+ } while( TRUE );
+}
+
+#endif
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ascii/parasc.cxx,v 1.1.1.1 2000-09-18 17:14:53 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.25 2000/09/18 16:04:39 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.24 2000/08/04 16:25:28 jp
+ read/write unicode ascii files
+
+ Revision 1.23 2000/05/08 17:37:02 jp
+ Changes for Unicode
+
+ Revision 1.22 2000/03/16 16:42:31 kz
+ chg. include to sfx2/printer
+
+ Revision 1.21 1999/10/25 19:26:58 jp
+ Bug #69048#: dont change LF to #
+
+ Revision 1.20 1999/10/08 16:31:54 jp
+ Bug #69048#: dont change tab to #
+
+ Revision 1.19 1999/08/26 18:34:10 JP
+ load and save Text with more options (charset/language/lineend/font)
+
+
+ Rev 1.18 26 Aug 1999 20:34:10 JP
+ load and save Text with more options (charset/language/lineend/font)
+
+ Rev 1.17 23 Jul 1998 11:11:14 JP
+ Task #52654#: Einfuegen Doc nicht mit einer CrsrShell sondern mit einen PaM
+
+ Rev 1.16 29 Jun 1998 13:01:16 JP
+ SvxFmtBreakItem ohne Flag!
+
+ Rev 1.15 29 Apr 1998 08:17:14 MIB
+ MUSS-Aenderung: SvStream::operator!() faellt weg
+
+ Rev 1.14 27 Feb 1998 09:19:56 JP
+ ObjectDying-MessageItem umbenannt
+
+ Rev 1.13 22 Jan 1998 20:00:10 JP
+ CTOR des SwPaM umgestellt
+
+ Rev 1.12 30 Oct 1997 17:13:52 AMA
+ Chg: Kein AutoFlag mehr an Break bzw. PageDesc-Attributen
+
+ Rev 1.11 10 Oct 1997 12:20:22 JP
+ Warnings vom Ueberlauf entfernt
+
+ Rev 1.10 09 Oct 1997 14:26:02 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.9 12 Aug 1997 10:06:46 OS
+ Header-Umstellung
+
+ Rev 1.8 07 Aug 1997 15:07:08 OM
+ Headerfile-Umstellung
+
+ Rev 1.7 06 Aug 1997 12:46:52 HJS
+ includes
+
+ Rev 1.6 13 Dec 1996 12:18:58 JP
+ Bug #34482#: nach dem Lesen auf SystemCodeSet umschalten
+
+ Rev 1.5 29 Oct 1996 12:10:24 JP
+ am Doc ist das NodesArray nur noch ueber Get..() zugaenglich
+
+ Rev 1.4 09 Oct 1996 17:58:46 MA
+ Progress
+
+ Rev 1.3 28 Jun 1996 13:59:08 MA
+ includes
+
+ Rev 1.2 02 May 1996 11:48:46 JP
+ zum Testen: asynchrones Laden erweitert
+
+ Rev 1.1 30 Apr 1996 12:09:38 JP
+ Vorbereitung fuer asynchrones laden
+
+ Rev 1.0 29 Apr 1996 18:11:00 JP
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/ascii/wrtasc.cxx b/sw/source/filter/ascii/wrtasc.cxx
new file mode 100644
index 000000000000..463c0ba50560
--- /dev/null
+++ b/sw/source/filter/ascii/wrtasc.cxx
@@ -0,0 +1,293 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtasc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _STREAM_HXX
+#include <tools/stream.hxx>
+#endif
+
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx> // ...Percent()
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+#ifndef _WRTASC_HXX
+#include <wrtasc.hxx>
+#endif
+
+#ifndef _STATSTR_HRC
+#include <statstr.hrc> // ResId fuer Statusleiste
+#endif
+
+
+//-----------------------------------------------------------------
+
+SwASCWriter::SwASCWriter( const String& rFltNm )
+{
+ SwAsciiOptions aNewOpts;
+
+ switch( 5 <= rFltNm.Len() ? rFltNm.GetChar( 4 ) : 0 )
+ {
+ case 'D': aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_850 );
+ aNewOpts.SetParaFlags( LINEEND_CRLF );
+ if( 5 < rFltNm.Len() )
+ switch( rFltNm.Copy( 5 ).ToInt32() )
+ {
+ case 437: aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_437 ); break;
+ case 850: aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_850 ); break;
+ case 860: aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_860 ); break;
+ case 861: aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_861 ); break;
+ case 863: aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_863 ); break;
+ case 865: aNewOpts.SetCharSet( RTL_TEXTENCODING_IBM_865 ); break;
+ }
+ break;
+
+ case 'A': aNewOpts.SetCharSet( RTL_TEXTENCODING_MS_1252 );
+ aNewOpts.SetParaFlags( LINEEND_CRLF );
+ break;
+ case 'M': aNewOpts.SetCharSet( RTL_TEXTENCODING_APPLE_ROMAN );
+ aNewOpts.SetParaFlags( LINEEND_CR );
+ break;
+ case 'X': aNewOpts.SetCharSet( RTL_TEXTENCODING_MS_1252 );
+ aNewOpts.SetParaFlags( LINEEND_LF );
+ break;
+
+ default:
+ if( rFltNm.Copy( 4 ).EqualsAscii( "_DLG" ))
+ {
+ // use the options
+ aNewOpts = GetAsciiOptions();
+ }
+ }
+ SetAsciiOptions( aNewOpts );
+}
+
+SwASCWriter::~SwASCWriter() {}
+
+ULONG SwASCWriter::WriteStream()
+{
+ sal_Char cLineEnd[ 3 ];
+ sal_Char* pCEnd = cLineEnd;
+ if( bASCII_ParaAsCR ) // falls vorgegeben ist.
+ *pCEnd++ = '\015';
+ else if( bASCII_ParaAsBlanc )
+ *pCEnd++ = ' ';
+ else
+ switch( GetAsciiOptions().GetParaFlags() )
+ {
+ case LINEEND_CR: *pCEnd++ = '\015'; break;
+ case LINEEND_LF: *pCEnd++ = '\012'; break;
+ case LINEEND_CRLF: *pCEnd++ = '\015', *pCEnd++ = '\012'; break;
+ }
+ *pCEnd = 0;
+
+ sLineEnd.AssignAscii( cLineEnd );
+
+ long nMaxNode = pDoc->GetNodes().Count();
+
+ if( bShowProgress )
+ ::StartProgress( STR_STATSTR_W4WWRITE, 0, nMaxNode, pDoc->GetDocShell() );
+
+ SwPaM* pPam = pOrigPam;
+
+ BOOL bWriteSttTag = bUCS2_WithStartChar &&
+ RTL_TEXTENCODING_UCS2 == GetAsciiOptions().GetCharSet();
+
+ // gebe alle Bereich des Pams in das ASC-File aus.
+ do {
+ BOOL bTstFly = TRUE;
+ while( pCurPam->GetPoint()->nNode.GetIndex() < pCurPam->GetMark()->nNode.GetIndex() ||
+ (pCurPam->GetPoint()->nNode.GetIndex() == pCurPam->GetMark()->nNode.GetIndex() &&
+ pCurPam->GetPoint()->nContent.GetIndex() <= pCurPam->GetMark()->nContent.GetIndex()) )
+ {
+ SwTxtNode* pNd = pCurPam->GetPoint()->nNode.GetNode().GetTxtNode();
+ if( pNd )
+ {
+ // sollten nur Rahmen vorhanden sein?
+ // (Moeglich, wenn Rahmen-Selektion ins Clipboard
+ // gestellt wurde)
+ if( bTstFly && bWriteAll &&
+ // keine Laenge
+ !pNd->GetTxt().Len() &&
+ // Rahmen vorhanden
+ pDoc->GetSpzFrmFmts()->Count() &&
+ // nur ein Node im Array
+ pDoc->GetNodes().GetEndOfExtras().GetIndex() + 3 ==
+ pDoc->GetNodes().GetEndOfContent().GetIndex() &&
+ // und genau der ist selektiert
+ pDoc->GetNodes().GetEndOfContent().GetIndex() - 1 ==
+ pCurPam->GetPoint()->nNode.GetIndex() )
+ {
+ // dann den Inhalt vom Rahmen ausgeben.
+ // dieser steht immer an Position 0 !!
+ SwFrmFmt* pFmt = (*pDoc->GetSpzFrmFmts())[ 0 ];
+ const SwNodeIndex* pIdx = pFmt->GetCntnt().GetCntntIdx();
+ if( pIdx )
+ {
+ delete pCurPam;
+ pCurPam = NewSwPaM( *pDoc, pIdx->GetIndex(),
+ pIdx->GetNode().EndOfSectionIndex() );
+ pCurPam->Exchange();
+ continue; // while-Schleife neu aufsetzen !!
+ }
+ }
+ else
+ {
+ if( bWriteSttTag )
+ {
+ Strm() << short(-257);
+ bWriteSttTag = FALSE;
+ }
+ Out( aASCNodeFnTab, *pNd, *this );
+ }
+ bTstFly = FALSE; // eimal Testen reicht
+ }
+
+ if( !pCurPam->Move( fnMoveForward, fnGoNode ) )
+ break;
+
+ if( bShowProgress )
+ ::SetProgressState( pCurPam->GetPoint()->nNode.GetIndex(),
+ pDoc->GetDocShell() ); // Wie weit ?
+
+ }
+ } while( CopyNextPam( &pPam ) ); // bis alle Pam bearbeitet
+
+ if( bShowProgress )
+ ::EndProgress( pDoc->GetDocShell() );
+
+ return 0;
+}
+
+
+void GetASCWriter( const String& rFltNm, WriterRef& xRet )
+{
+ xRet = new SwASCWriter( rFltNm );
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ascii/wrtasc.cxx,v 1.1.1.1 2000-09-18 17:14:53 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.61 2000/09/18 16:04:39 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.60 2000/08/04 16:25:32 jp
+ read/write unicode ascii files
+
+ Revision 1.59 2000/05/08 17:37:06 jp
+ Changes for Unicode
+
+ Revision 1.58 2000/03/03 16:23:14 pl
+ #73771# workaround for c50 intel compiler
+
+ Revision 1.57 1999/08/30 08:01:52 JP
+ WriteStream - set lineend string
+
+
+ Rev 1.56 30 Aug 1999 10:01:52 JP
+ WriteStream - set lineend string
+
+ Rev 1.55 26 Aug 1999 20:34:10 JP
+ load and save Text with more options (charset/language/lineend/font)
+
+ Rev 1.54 16 Jun 1999 19:47:26 JP
+ Change interface of base class Writer
+
+ Rev 1.53 04 May 1999 14:59:40 JP
+ FilterExportklasse Writer von SvRef abgeleitet, damit sie immer zerstoert wird
+
+ Rev 1.52 27 Jun 1998 16:01:50 JP
+ Writer mit neuen Flags; fuer den ASCII-Writer, etwas aufgeraeumt
+
+*************************************************************************/
+
+
diff --git a/sw/source/filter/ascii/wrtasc.hxx b/sw/source/filter/ascii/wrtasc.hxx
new file mode 100644
index 000000000000..25fc7a0fcf60
--- /dev/null
+++ b/sw/source/filter/ascii/wrtasc.hxx
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtasc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _WRTASC_HXX
+#define _WRTASC_HXX
+
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _WRT_FN_HXX
+#include <wrt_fn.hxx>
+#endif
+
+extern SwNodeFnTab aASCNodeFnTab;
+
+
+// der ASC-Writer
+
+class SwASCWriter : public Writer
+{
+ String sLineEnd;
+
+ virtual ULONG WriteStream();
+
+public:
+ SwASCWriter( const String& rFilterName );
+ virtual ~SwASCWriter();
+
+ const String& GetLineEnd() const { return sLineEnd; }
+};
+
+
+#endif // _WRTASC_HXX
diff --git a/sw/source/filter/html/css1atr.cxx b/sw/source/filter/html/css1atr.cxx
new file mode 100644
index 000000000000..fac011d27ea5
--- /dev/null
+++ b/sw/source/filter/html/css1atr.cxx
@@ -0,0 +1,3536 @@
+/*************************************************************************
+ *
+ * $RCSfile: css1atr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#include "hintids.hxx"
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_BLNKITEM_HXX //autogen
+#include <svx/blnkitem.hxx>
+#endif
+#ifndef _SVX_CMAPITEM_HXX //autogen
+#include <svx/cmapitem.hxx>
+#endif
+#ifndef _SVX_CMAPITEM_HXX //autogen
+#include <svx/cmapitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_KERNITEM_HXX //autogen
+#include <svx/kernitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_LSPCITEM_HXX //autogen
+#include <svx/lspcitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_KEEPITEM_HXX //autogen
+#include <svx/keepitem.hxx>
+#endif
+#ifndef _SVX_WIDWITEM_HXX //autogen
+#include <svx/widwitem.hxx>
+#endif
+#ifndef _SVX_SPLTITEM_HXX //autogen
+#include <svx/spltitem.hxx>
+#endif
+#ifndef _SVX_ORPHITEM_HXX //autogen
+#include <svx/orphitem.hxx>
+#endif
+#ifndef _XOUTBMP_HXX //autogen
+#include <svx/xoutbmp.hxx>
+#endif
+#ifndef _HTMLOUT_HXX //autogen
+#include <svtools/htmlout.hxx>
+#endif
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _INTN_HXX //autogen
+#include <tools/intn.hxx>
+#endif
+#ifndef _BIGINT_HXX //autogen
+#include <tools/bigint.hxx>
+#endif
+#ifndef _UNOTOOLS_CHARCLASS_HXX
+#include <unotools/charclass.hxx>
+#endif
+
+#ifndef _CHARFMT_HXX //autogen
+#include <charfmt.hxx>
+#endif
+#ifndef _FMTCOL_HXX //autogen
+#include <fmtcol.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTTSPLT_HXX //autogen
+#include <fmtlsplt.hxx>
+#endif
+#ifndef _PAGEDESC_HXX //autogen
+#include <pagedesc.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _PAM_HXX //autogen
+#include <pam.hxx>
+#endif
+#ifndef _VIEWSH_HXX //autogen
+#include <viewsh.hxx>
+#endif
+#ifndef _VIEWOPT_HXX //autogen
+#include <viewopt.hxx>
+#endif
+#ifndef _SWTABLE_HXX //autogen
+#include <swtable.hxx>
+#endif
+// FOOTNOTES
+#ifndef _FTNINFO_HXX //autogen
+#include <ftninfo.hxx>
+#endif
+#ifndef _FTNIDX_HXX //autogen
+#include <ftnidx.hxx>
+#endif
+#ifndef _TXTFTN_HXX //autogen
+#include <txtftn.hxx>
+#endif
+#ifndef _FMTFTN_HXX //autogen
+#include <fmtftn.hxx>
+#endif
+// FOOTNOTES
+
+#ifndef _DCONTACT_HXX //autogen
+#include <dcontact.hxx>
+#endif
+
+#include "doc.hxx"
+#include "swerror.h"
+#include "charatr.hxx"
+#include "paratr.hxx"
+#include "frmatr.hxx"
+#include "poolfmt.hxx"
+#include "fltini.hxx"
+#include "css1kywd.hxx"
+#include "wrthtml.hxx"
+#include "htmlnum.hxx"
+
+/*
+ * um nicht immer wieder nach einem Update festzustellen, das irgendwelche
+ * Hint-Ids dazugekommen sind, wird hier definiert, die Groesse der Tabelle
+ * definiert und mit der akt. verglichen. Bei unterschieden wird der
+ * Compiler schon meckern.
+ *
+ * diese Section und die dazugeherigen Tabellen muessen in folgenden Files
+ * gepflegt werden: rtf\rtfatr.cxx, sw6\sw6atr.cxx, w4w\w4watr.cxx
+ */
+#if !defined(UNX) && !defined(MSC) && !defined(PPC) && !defined(CSET) && !defined(__MWERKS__) && !defined(WTC)
+
+#define ATTRFNTAB_SIZE 121
+#if ATTRFNTAB_SIZE != POOLATTR_END - POOLATTR_BEGIN
+#error Attribut-Tabelle ist ungueltigt. Wurden neue Hint-IDs zugefuegt ??
+#endif
+
+#endif
+
+#define HTML_HEADSPACE (12*20)
+
+#define CSS1_BACKGROUND_ATTR 1
+#define CSS1_BACKGROUND_PAGE 2
+#define CSS1_BACKGROUND_TABLE 3
+#define CSS1_BACKGROUND_FLY 4
+#define CSS1_BACKGROUND_SECTION 5
+
+#define CSS1_FRMSIZE_WIDTH 0x01
+#define CSS1_FRMSIZE_VARHEIGHT 0x02
+#define CSS1_FRMSIZE_MINHEIGHT 0x04
+#define CSS1_FRMSIZE_FIXHEIGHT 0x08
+#define CSS1_FRMSIZE_ANYHEIGHT 0x0e
+#define CSS1_FRMSIZE_PIXEL 0x10
+
+
+//-----------------------------------------------------------------------
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_rule_end, " }" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_span_tag_end, "\">" );
+const sal_Char cCSS1_style_opt_end = '\"';
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sHTML_FTN_fontheight, "57%" );
+
+extern SwAttrFnTab aCSS1AttrFnTab;
+
+static Writer& OutCSS1_SwFmt( Writer& rWrt, const SwFmt& rFmt,
+ SwDoc *pDoc, SwDoc *pTemplate );
+static Writer& OutCSS1_SwPageDesc( Writer& rWrt, const SwPageDesc& rFmt,
+ SwDoc *pDoc, SwDoc *pTemplate,
+ USHORT nRefPoolId, BOOL bExtRef,
+ BOOL bPseudo=TRUE );
+static Writer& OutCSS1_SwFtnInfo( Writer& rWrt, const SwEndNoteInfo& rInfo,
+ SwDoc *pDoc, USHORT nNotes, BOOL bEndNote );
+static void OutCSS1_SwFmtDropAttrs( SwHTMLWriter& rHWrt,
+ const SwFmtDrop& rDrop );
+static Writer& OutCSS1_SvxUnderl_SvxCrOut_SvxBlink( Writer& rWrt,
+ const SvxUnderlineItem *pUItem,
+ const SvxCrossedOutItem *pCOItem,
+ const SvxBlinkItem *pBItem );
+static Writer& OutCSS1_SvxFontWeight( Writer& rWrt, const SfxPoolItem& rHt );
+static Writer& OutCSS1_SvxPosture( Writer& rWrt, const SfxPoolItem& rHt );
+static Writer& OutCSS1_SvxULSpace( Writer& rWrt, const SfxPoolItem& rHt );
+static Writer& OutCSS1_SvxLRSpace( Writer& rWrt, const SfxPoolItem& rHt );
+static Writer& OutCSS1_SvxULSpace_SvxLRSpace( Writer& rWrt,
+ const SvxULSpaceItem *pULSpace,
+ const SvxLRSpaceItem *pLRSpace );
+static Writer& OutCSS1_SvxULSpace_SvxLRSpace( Writer& rWrt,
+ const SfxItemSet& rItemSet,
+ BOOL bDeep );
+static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt,
+ USHORT nMode, const String *pGrfName );
+static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt );
+static Writer& OutCSS1_SvxBox( Writer& rWrt, const SfxPoolItem& rHt );
+static Writer& OutCSS1_SwFmtFrmSize( Writer& rWrt, const SfxPoolItem& rHt,
+ USHORT nMode );
+static Writer& OutCSS1_SvxFmtBreak_SwFmtPDesc_SvxFmtKeep( Writer& rWrt,
+ const SfxItemSet& rItemSet,
+ BOOL bDeep );
+static Writer& OutCSS1_SwFmtLayoutSplit( Writer& rWrt, const SfxPoolItem& rHt );
+
+static void ConvToHex( USHORT nHex, ByteString& rStr )
+{
+ sal_Char aNToABuf[] = "00";
+
+ // Pointer an das Bufferende setzen
+ sal_Char *pStr = aNToABuf + (sizeof(aNToABuf)-1);
+ for( BYTE n = 0; n < 2; ++n )
+ {
+ *(--pStr) = (sal_Char)(nHex & 0xf ) + 48;
+ if( *pStr > '9' )
+ *pStr += 39;
+ nHex >>= 4;
+ }
+
+ rStr.Append( aNToABuf );
+}
+
+static void GetCSS1Color( const Color& rColor, ByteString& rStr )
+{
+ rStr += '#';
+
+ ConvToHex( rColor.GetRed(), rStr );
+ ConvToHex( rColor.GetGreen(), rStr );
+ ConvToHex( rColor.GetBlue(), rStr );
+}
+
+class SwCSS1OutMode
+{
+ SwHTMLWriter& rWrt;
+ USHORT nOldMode;
+
+public:
+
+ SwCSS1OutMode( SwHTMLWriter& rHWrt, USHORT nMode, BOOL bStartFirst=TRUE,
+ const String *pSelector=0 ) :
+ rWrt( rHWrt ),
+ nOldMode( rHWrt.nCSS1OutMode )
+ {
+ rWrt.nCSS1OutMode = nMode;
+ if( bStartFirst )
+ rWrt.bFirstCSS1Property = TRUE;
+ if( pSelector )
+ rWrt.aCSS1Selector = *pSelector;
+ }
+
+ ~SwCSS1OutMode()
+ {
+ rWrt.nCSS1OutMode = nOldMode;
+ }
+};
+
+
+
+void SwHTMLWriter::OutCSS1_Property( const sal_Char *pProp,
+ const sal_Char *pVal,
+ const String *pSVal )
+{
+ ByteString sOut;
+
+ if( bFirstCSS1Rule && (nCSS1OutMode & CSS1_OUTMODE_RULE_ON)!=0 )
+ {
+ bFirstCSS1Rule = FALSE;
+ OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_style );
+ OutNewLine();
+ Strm() << '<' << sHTML_comment;
+
+ IncIndentLevel();
+ }
+
+ if( bFirstCSS1Property )
+ {
+ switch( nCSS1OutMode & CSS1_OUTMODE_ANY_ON )
+ {
+ case CSS1_OUTMODE_SPAN_TAG_ON:
+ case CSS1_OUTMODE_SPAN_TAG1_ON:
+ if( bTagOn )
+ {
+ ((((sOut += '<') += sHTML_span) += ' ') += sHTML_O_style) += "=\"";
+ }
+ else
+ {
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_span, FALSE );
+ return;
+ }
+ break;
+
+ case CSS1_OUTMODE_RULE_ON:
+ {
+ ByteString sTmp( aCSS1Selector, eDestEnc );
+ OutNewLine();
+ (sOut = sTmp) += " { ";
+ }
+ break;
+
+ case CSS1_OUTMODE_STYLE_OPT_ON:
+ ((sOut = ' ') += sHTML_O_style) += "=\"";
+ break;
+ }
+ bFirstCSS1Property = FALSE;
+ }
+ else
+ {
+ sOut += "; ";
+ }
+
+
+ (sOut += pProp) += ": ";
+ if( nCSS1OutMode & CSS1_OUTMODE_ENCODE )
+ {
+ // In STYLE-Optionen den String codieren
+ Strm() << sOut.GetBuffer();
+ sOut.Erase();
+ if( pVal )
+ HTMLOutFuncs::Out_String( Strm(), String::CreateFromAscii(pVal),
+ eDestEnc );
+ else if( pSVal )
+ HTMLOutFuncs::Out_String( Strm(), *pSVal, eDestEnc );
+ }
+ else
+ {
+ // Im STYLE-Tag des String direct ausgeben
+ if( pVal )
+ sOut += pVal;
+ else if( pVal )
+ {
+ ByteString sTmp( *pSVal, eDestEnc );
+ sOut += sTmp;
+ }
+ }
+
+ if( sOut.Len() )
+ Strm() << sOut.GetBuffer();
+}
+
+static void AddUnitPropertyValue( long nVal, FieldUnit eUnit, ByteString& rOut )
+{
+ if( nVal < 0 )
+ {
+ // Vorzeichen extra behandeln
+ nVal = -nVal;
+ rOut += '-';
+ }
+
+ // Die umgerechnete Einheit ergibt sich aus (x * nMul)/(nDiv*nFac*10)
+ long nMul = 1000;
+ long nDiv = 1;
+ long nFac = 100;
+ const sal_Char *pUnit;
+ switch( eUnit )
+ {
+ case FUNIT_100TH_MM:
+ ASSERT( FUNIT_MM == eUnit, "Masseinheit wird nicht unterstuetzt" );
+ case FUNIT_MM:
+ // 0.01mm = 0.57twip
+ nMul = 25400; // 25.4 * 1000
+ nDiv = 1440; // 72 * 20;
+ nFac = 100;
+ pUnit = sCSS1_UNIT_mm;
+ break;
+
+ case FUNIT_M:
+ case FUNIT_KM:
+ ASSERT( FUNIT_CM == eUnit, "Masseinheit wird nicht unterstuetzt" );
+ case FUNIT_CM:
+#ifdef EXACT_VALUES
+ // 0.001cm = 0.57twip
+ nMul = 25400; // 2.54 * 10000
+ nDiv = 1440; // 72 * 20;
+ nFac = 1000;
+#else
+ // 0.01cm = 5.7twip (ist zwar ungenau, aber die UI ist auch ungenau)
+ nMul = 2540; // 2.54 * 1000
+ nDiv = 1440; // 72 * 20;
+ nFac = 100;
+#endif
+ pUnit = sCSS1_UNIT_cm;
+ break;
+
+ case FUNIT_TWIP:
+ ASSERT( FUNIT_POINT == eUnit, "Masseinheit wird nicht unterstuetzt" );
+ case FUNIT_POINT:
+#ifdef EXACT_VALUES
+ // 0.01pt = 0.2twip
+ nMul = 1000;
+ nDiv = 20;
+ nFac = 100;
+#else
+ // 0.1pt = 2.0twip (ist zwar ungenau, aber die UI ist auch ungenau)
+ nMul = 100;
+ nDiv = 20;
+ nFac = 10;
+#endif
+ pUnit = sCSS1_UNIT_pt;
+ break;
+
+ case FUNIT_PICA:
+#ifdef EXACT_VALUES
+ // 0.001pc = 0.24twip
+ nMul = 10000;
+ nDiv = 12 * 20;
+ nFac = 1000;
+#else
+ // 0.01pc = 2.40twip (ist zwar ungenau, aber die UI ist auch ungenau)
+ nMul = 1000;
+ nDiv = 240; // 12 * 20;
+ nFac = 100;
+#endif
+ pUnit = sCSS1_UNIT_pc;
+ break;
+
+ case FUNIT_NONE:
+ case FUNIT_FOOT:
+ case FUNIT_MILE:
+ case FUNIT_CUSTOM:
+ case FUNIT_PERCENT:
+ case FUNIT_INCH:
+ default:
+ ASSERT( FUNIT_INCH == eUnit, "Masseinheit wird nicht unterstuetzt" );
+#ifdef EXACT_VALUES
+ // 0.0001in = 0.144twip
+ nMul = 100000;
+ nDiv = 1440; // 72 * 20;
+ nFac = 10000;
+#else
+ // 0.01in = 14.4twip (ist zwar ungenau, aber die UI ist auch ungenau)
+ nMul = 1000;
+ nDiv = 1440; // 72 * 20;
+ nFac = 100;
+#endif
+ pUnit = sCSS1_UNIT_inch;
+ break;
+ }
+
+ long nLongVal;
+ BOOL bOutLongVal = TRUE;
+ if( nVal > LONG_MAX / nMul )
+ {
+ // Zum Unrechnen der Einheit wird ein BigInt benoetigt
+#ifdef SAL_INT64_IS_STRUCT
+ BigInt nBigVal( nVal );
+ nBigVal *= nMul;
+ nBigVal /= nDiv;
+ nBigVal += 5;
+ nBigVal /= 10;
+
+ if( nBigVal.IsLong() )
+ {
+ // Zum Ausgeben des Wertes reicht ein long.
+ nLongVal = (long)nBigVal;
+ }
+ else
+ {
+ BigInt nBigFac( nFac );
+ BigInt nBig10( 10 );
+ rOut += (long)(nBigVal / nBigFac);
+ if( !(nBigVal % nBigFac).IsZero() )
+ {
+ rOut += '.';
+ while( nFac > 1 && !(nBigVal % nBigFac).IsZero() )
+ {
+ nFac /= 10;
+ nBigFac = nFac;
+ rOut += (int)((nBigVal / nBigFac) % nBig10 );
+ }
+ }
+ bOutLongVal = FALSE;
+ }
+#else
+ sal_Int64 nBigVal( nVal );
+ nBigVal *= nMul;
+ nBigVal /= nDiv;
+ nBigVal += 5;
+ nBigVal /= 10;
+
+ if( nBigVal <= LONG_MAX )
+ {
+ // Zum Ausgeben des Wertes reicht ein long.
+ nLongVal = (long)nBigVal;
+ }
+ else
+ {
+ rOut += ByteString::CreateFromInt64( nBigVal / (sal_Int64)nFac );
+ if( (nBigVal % (sal_Int64)nFac) != 0 )
+ {
+ rOut += '.';
+ while( nFac > 1 && (nBigVal % (sal_Int64)nFac) != 0 )
+ {
+ nFac /= 10;
+ rOut += ByteString::CreateFromInt64(
+ (nBigVal / (sal_Int64)nFac) % (sal_Int64)10 );
+ }
+ }
+ bOutLongVal = FALSE;
+ }
+#endif
+ }
+ else
+ {
+ nLongVal = nVal * nMul;
+ nLongVal /= nDiv;
+ nLongVal += 5;
+ nLongVal /= 10;
+ }
+
+ if( bOutLongVal )
+ {
+ rOut += ByteString::CreateFromInt32( nLongVal/nFac );
+ if( (nLongVal % nFac) != 0 )
+ {
+ rOut += '.';
+ while( nFac > 1 && (nLongVal % nFac) != 0 )
+ {
+ nFac /= 10;
+ rOut += ByteString::CreateFromInt32( (nLongVal / nFac) % 10 );
+ }
+ }
+ }
+
+ rOut.Append( pUnit );
+}
+
+void SwHTMLWriter::OutCSS1_UnitProperty( const sal_Char *pProp, long nVal )
+{
+ ByteString sOut;
+ AddUnitPropertyValue( nVal, eCSS1Unit, sOut );
+ OutCSS1_PropertyAscii( pProp, sOut );
+}
+
+void SwHTMLWriter::OutCSS1_PixelProperty( const sal_Char *pProp, long nVal,
+ BOOL bVert )
+{
+ if( nVal && Application::GetDefaultDevice() )
+ {
+ Size aSz( bVert ? 0 : nVal, bVert ? nVal : 0 );
+ aSz = Application::GetDefaultDevice()->LogicToPixel( aSz, MapMode( MAP_TWIP) );
+ nVal = bVert ? aSz.Height() : aSz.Width();
+ if( !nVal )
+ nVal = 1;
+ }
+
+ ByteString sOut( ByteString::CreateFromInt32( nVal ) );
+ sOut.Append( sCSS1_UNIT_px );
+ OutCSS1_PropertyAscii( pProp, sOut );
+}
+
+void SwHTMLWriter::OutCSS1_SfxItemSet( const SfxItemSet& rItemSet,
+ BOOL bDeep )
+{
+ // den ItemSet ausgeben, und zwar inklusive aller Attribute
+ Out_SfxItemSet( aCSS1AttrFnTab, *this, rItemSet, bDeep );
+
+ // ein par Attribute benoetigen eine Spezial-Behandlung
+ const SfxPoolItem *pItem = 0;
+
+ // Underline, CrossedOut und Blink bilden zusammen eine CSS1-Property
+ // (geht natuerlich nicht bei Hints)
+ if( !IsCSS1Source(CSS1_OUTMODE_HINT) )
+ {
+ const SvxUnderlineItem *pUnderlineItem = 0;
+ if( SFX_ITEM_SET==rItemSet.GetItemState( RES_CHRATR_UNDERLINE, bDeep, &pItem ))
+ pUnderlineItem = (const SvxUnderlineItem *)pItem;
+
+ const SvxCrossedOutItem *pCrossedOutItem = 0;
+ if( SFX_ITEM_SET==rItemSet.GetItemState( RES_CHRATR_CROSSEDOUT, bDeep, &pItem ))
+ pCrossedOutItem = (const SvxCrossedOutItem *)pItem;
+
+ const SvxBlinkItem *pBlinkItem = 0;
+ if( SFX_ITEM_SET==rItemSet.GetItemState( RES_CHRATR_BLINK, bDeep, &pItem ))
+ pBlinkItem = (const SvxBlinkItem *)pItem;
+
+ if( pUnderlineItem || pCrossedOutItem || pBlinkItem )
+ OutCSS1_SvxUnderl_SvxCrOut_SvxBlink( *this, pUnderlineItem,
+ pCrossedOutItem,
+ pBlinkItem );
+
+ OutCSS1_SvxFmtBreak_SwFmtPDesc_SvxFmtKeep( *this, rItemSet, bDeep );
+ }
+
+ if( !bFirstCSS1Property )
+ {
+ // wenn eine Property als Bestandteil einer Style-Option
+ // ausgegeben wurde, muss die Optiomn noch beendet werden
+ ByteString sOut;
+ switch( nCSS1OutMode & CSS1_OUTMODE_ANY_OFF )
+ {
+ case CSS1_OUTMODE_SPAN_TAG_OFF:
+ sOut = sCSS1_span_tag_end;
+ break;
+
+ case CSS1_OUTMODE_STYLE_OPT_OFF:
+ sOut = cCSS1_style_opt_end;
+ break;
+
+ case CSS1_OUTMODE_RULE_OFF:
+ sOut = sCSS1_rule_end;
+ break;
+ }
+ if( sOut.Len() )
+ Strm() << sOut.GetBuffer();
+ }
+}
+
+#if USED
+void SwHTMLWriter::OutCSS1_SfxItem( USHORT nMode,
+ const SfxPoolItem *pItem1,
+ const SfxPoolItem *pItem2 )
+{
+ // den ItemSet ausgeben, und zwar inklusive aller Attribute
+ nSaveMode = nCSS1OutMode;
+ nCSS1OutMode = nMode;
+ bFirstCSS1Property = TRUE;
+
+ Out( aCSS1AttrFnTab, *pItem1, *this );
+ if( pItem2 )
+ Out( aCSS1AttrFnTab, *pItem2, *this );
+
+
+ if( !bFirstCSS1Property )
+ {
+ // wenn eine Property als Bestandteil einer Style-Option
+ // ausgegeben wurde, muss die Optiomn noch beendet werden
+ ByteString sOut;
+ switch( nCSS1OutMode & CSS1_OUTMODE_ANY_OFF )
+ {
+ case CSS1_OUTMODE_SPAN_TAG_OFF:
+ sOut = sCSS1_span_tag_end;
+ break;
+
+ case CSS1_OUTMODE_STYLE_OPT_OFF:
+ sOut = cCSS1_style_opt_end;
+ break;
+
+ case CSS1_OUTMODE_RULE:
+ sOut = sCSS1_rule_end;
+ break;
+ }
+ if( sOut.Len() )
+ rStrm << sOut.GetBuffer();
+ }
+
+ nCSS1OutMode = nSaveMode;
+}
+#endif
+
+void SwHTMLWriter::OutStyleSheet( const SwPageDesc& rPageDesc, BOOL bUsed )
+{
+ bFirstCSS1Rule = TRUE;
+
+// Feature: PrintExt
+ if( IsHTMLMode(HTMLMODE_PRINT_EXT) )
+ {
+ const SwPageDesc *pFirstPageDesc = 0;
+ USHORT nFirstRefPoolId = RES_POOLPAGE_HTML;
+ bCSS1IgnoreFirstPageDesc = TRUE;
+
+ // Erstmal versuchen wir zu erraten, wie das Dokument so augebaut ist.
+ // Erlaubt sind nur die Vorlagen HTML, erste Seite, linke Seite und
+ // rechte Seite.
+ // Eine erste Seite wird nur exportiert, wenn die erste Seite auch
+ // wirklich die Vorlage "erste Seite" ist.
+ // Linke und rechte Seiten werden nur exportiert, wenn diese beiden
+ // Vorlagen untereinander verkettet werden.
+ // Wenn andere Vorlagen verwendet werden, wird nur in sehr einfachen
+ // Faellen etwas exportiert.
+ const SwPageDesc *pPageDesc = &rPageDesc;
+ const SwPageDesc *pFollow = rPageDesc.GetFollow();
+ if( RES_POOLPAGE_FIRST == pPageDesc->GetPoolFmtId() &&
+ pFollow != pPageDesc &&
+ !IsPoolUserFmt( pFollow->GetPoolFmtId() ) )
+ {
+ // Das Dokument hat eine erste Seite
+ pFirstPageDesc = pPageDesc;
+ pPageDesc = pFollow;
+ pFollow = pPageDesc->GetFollow();
+ }
+ if( pPageDesc == pFollow )
+ {
+ // Das Dokument ist einseitig. Egal welche Seite verwendet wird,
+ // es wird kein zweiseitiges Dokument daraus gemacht.
+ // Die Attributierung wird relativ zur HTML-Seitenvorlage
+ // aus der HTML-Vorlage exportiert.
+ OutCSS1_SwPageDesc( *this, *pPageDesc, pDoc, pTemplate,
+ RES_POOLPAGE_HTML, TRUE, FALSE );
+ nFirstRefPoolId = pFollow->GetPoolFmtId();
+ }
+ else if( (RES_POOLPAGE_LEFT == pPageDesc->GetPoolFmtId() &&
+ RES_POOLPAGE_RIGHT == pFollow->GetPoolFmtId()) ||
+ (RES_POOLPAGE_RIGHT == pPageDesc->GetPoolFmtId() &&
+ RES_POOLPAGE_LEFT == pFollow->GetPoolFmtId()) )
+ {
+ // Das Dokument ist zweiseitig
+ OutCSS1_SwPageDesc( *this, *pPageDesc, pDoc, pTemplate,
+ RES_POOLPAGE_HTML, TRUE );
+ OutCSS1_SwPageDesc( *this, *pFollow, pDoc, pTemplate,
+ RES_POOLPAGE_HTML, TRUE );
+ nFirstRefPoolId = RES_POOLPAGE_RIGHT;
+ bCSS1IgnoreFirstPageDesc = FALSE;
+ }
+ // Alles andere bekommen wir nicht hin.
+
+ if( pFirstPageDesc )
+ OutCSS1_SwPageDesc( *this, *pFirstPageDesc, pDoc, pTemplate,
+ nFirstRefPoolId, FALSE );
+ }
+// /Feature: PrintExt
+
+
+ // das Default-TextStyle wir nicht mit ausgegeben !!
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+ USHORT nArrLen = pDoc->GetTxtFmtColls()->Count();
+ for( USHORT i=1; i<nArrLen; i++ )
+ {
+ const SwTxtFmtColl* pColl = (*pDoc->GetTxtFmtColls())[i];
+ if( !bUsed || pDoc->IsUsed( *pColl ) )
+ OutCSS1_SwFmt( *this, *pColl, pDoc, pTemplate );
+ }
+
+ // das Default-TextStyle wir nicht mit ausgegeben !!
+ nArrLen = pDoc->GetCharFmts()->Count();
+ for( i=1; i<nArrLen; i++ )
+ {
+ const SwCharFmt *pCFmt = (*pDoc->GetCharFmts())[i];
+ USHORT nPoolId = pCFmt->GetPoolFmtId();
+ if( !bUsed || nPoolId == RES_POOLCHR_INET_NORMAL ||
+ nPoolId == RES_POOLCHR_INET_VISIT ||
+ pDoc->IsUsed( *pCFmt ) )
+ OutCSS1_SwFmt( *this, *pCFmt, pDoc, pTemplate );
+ }
+
+ const SwFtnIdxs& rIdxs = pDoc->GetFtnIdxs();
+ nArrLen = rIdxs.Count();
+ USHORT nEnd = 0, nFtn = 0;
+ for( i=0; i < nArrLen; i++ )
+ {
+ if( rIdxs[i]->GetFtn().IsEndNote() )
+ nEnd++;
+ else
+ nFtn++;
+ }
+ OutCSS1_SwFtnInfo( *this, pDoc->GetFtnInfo(), pDoc, nFtn, FALSE );
+ OutCSS1_SwFtnInfo( *this, pDoc->GetEndNoteInfo(), pDoc, nEnd, TRUE );
+
+ if( !bFirstCSS1Rule )
+ {
+ DecIndentLevel();
+ OutNewLine();
+ Strm() << "-->";
+
+ OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_style, FALSE );
+ }
+ else
+ {
+ bFirstCSS1Rule = FALSE;
+ }
+
+ nDfltTopMargin = 0;
+ nDfltBottomMargin = 0;
+}
+
+#ifdef OLD_MS_IE
+
+BOOL SwHTMLWriter::IsDfltLRSpace( const SvxLRSpaceItem& rLRItem ) const
+{
+ // Einen linken Rand kann es durch eine Liste bereits in der
+ // Umgebung geben
+ USHORT nLeft = rLRItem.GetTxtLeft() - nLeftMargin;
+
+ // Der Erstzeilen-Einzug kann den Platz fuer eine Numerierung
+ // enthalten
+ short nIndent = rLRItem.GetTxtFirstLineOfst() - nFirstLineIndent;
+
+ // Wenn Spacer exportiert werden, wird ein psositiver Erstzeilen-Einzug
+ // als Spacer exportiert.
+ return nDfltLeftMargin == nLeft &&
+ nDfltRightMargin == rLRItem.GetRight() &&
+ ( (bCfgSpacer && nIndent > 0) ||
+ nDfltFirstLineIndent == nIndent );
+}
+
+BOOL SwHTMLWriter::IsDfltULSpace( const SvxULSpaceItem& rULItem ) const
+{
+ return nDfltTopMargin == rULItem.GetUpper() &&
+ nDfltBottomMargin == rULItem.GetLower();
+}
+
+#endif
+
+//-----------------------------------------------------------------------
+
+// wenn pPseudo gesetzt ist werden Styles-Sheets ausgegeben,
+// sonst wird nur nach Token und Class fuer ein Format gesucht
+USHORT SwHTMLWriter::GetCSS1Selector( const SwFmt *pFmt, ByteString& rToken,
+ String& rClass, USHORT& rRefPoolId,
+ String *pPseudo )
+{
+ USHORT nDeep = 0;
+ rToken.Erase(); rClass.Erase();
+ rRefPoolId = 0;
+ if( pPseudo )
+ pPseudo->Erase();
+
+ BOOL bChrFmt = RES_CHRFMT==pFmt->Which();
+
+ // Nach oben die Formate abklappern, bis man auf eine Standard-
+ // oder eine HTML-Tag-Vorlage trifft
+ const SwFmt *pPFmt = pFmt;
+ while( pPFmt && !pPFmt->IsDefault() )
+ {
+ BOOL bStop = FALSE;
+ USHORT nPoolId = pPFmt->GetPoolFmtId();
+ if( USER_FMT & nPoolId )
+ {
+ // Benutzer-Vorlagen
+ const String& rNm = pPFmt->GetName();
+ switch( rNm.GetChar(0) )
+ {
+ // nicht mehr unterstuetzt:
+ // sHTML_author
+ // sHTML_acronym
+ // sHTML_abbreviation
+ // sHTML_deletedtext
+ // sHTML_insertedtext
+ // sHTML_language
+ // sHTML_person
+ case 'B': if( !bChrFmt && rNm.EqualsAscii(sHTML_blockquote) )
+ {
+ rRefPoolId = RES_POOLCOLL_HTML_BLOCKQUOTE;
+ rToken.Assign( sHTML_blockquote );
+ }
+ break;
+ case 'C': if( bChrFmt )
+ {
+ if( rNm.EqualsAscii(sHTML_citiation) )
+ {
+ rRefPoolId = RES_POOLCHR_HTML_CITIATION;
+ rToken.Assign( sHTML_citiation );
+ }
+ else if( rNm.EqualsAscii(sHTML_code) )
+ {
+ rRefPoolId = RES_POOLCHR_HTML_CODE;
+ rToken.Assign( sHTML_code );
+ }
+ }
+ break;
+ case 'D': if( bChrFmt && rNm.EqualsAscii(sHTML_definstance) )
+ {
+ rRefPoolId = RES_POOLCHR_HTML_DEFINSTANCE;
+ rToken.Assign( sHTML_definstance);
+ }
+ else if( !bChrFmt )
+ {
+ USHORT nDefListLvl = GetDefListLvl( rNm, nPoolId );
+ // Die Vorlagen DD 1/DT 1 werden ausgegeben,
+ // aber keine von ihnen abgeleiteten Vorlagen,
+ // auch nicht DD 2/DT 2 etc.
+ if( nDefListLvl )
+ {
+ if( pPseudo &&
+ (nDeep || (nDefListLvl & 0x0fff) > 1) )
+ {
+ bStop = TRUE;
+ }
+ else if( nDefListLvl & HTML_DLCOLL_DD )
+ {
+ rRefPoolId = RES_POOLCOLL_HTML_DD;
+ rToken.Assign( sHTML_dd );
+ }
+ else
+ {
+ rRefPoolId = RES_POOLCOLL_HTML_DT;
+ rToken.Assign( sHTML_dt );
+ }
+ }
+ }
+ break;
+ case 'E': if( bChrFmt && rNm.EqualsAscii( sHTML_emphasis ) )
+ {
+ rRefPoolId = RES_POOLCHR_HTML_EMPHASIS;
+ rToken.Assign( sHTML_emphasis );
+ }
+ break;
+ case 'H': if( !bChrFmt && rNm.EqualsAscii( sHTML_horzrule ) )
+ // HR nicht ausgeben!
+ bStop = (nDeep==0);
+ break;
+ case 'K': if( bChrFmt && rNm.EqualsAscii( sHTML_keyboard ) )
+ {
+ rRefPoolId = RES_POOLCHR_HTML_KEYBOARD;
+ rToken.Assign( sHTML_keyboard );
+ }
+ break;
+ case 'L': if( !bChrFmt && rNm.EqualsAscii( sHTML_listing ) )
+ {
+ // Listing als PRE exportieren bzw. von
+ // PRE abgeleitete Vorlage exportieren
+ rToken.Assign( sHTML_preformtxt );
+ rRefPoolId = RES_POOLCOLL_HTML_PRE;
+ nDeep = CSS1_FMT_CMPREF;
+ }
+ break;
+ case 'P': if( !bChrFmt && rNm.EqualsAscii( sHTML_preformtxt ) )
+ {
+ rRefPoolId = RES_POOLCOLL_HTML_PRE;
+ rToken.Assign( sHTML_preformtxt );
+ }
+ break;
+ case 'S': if( bChrFmt )
+ {
+ if( rNm.EqualsAscii( sHTML_sample ) )
+ {
+ rRefPoolId = RES_POOLCHR_HTML_SAMPLE;
+ rToken.Assign( sHTML_sample );
+ }
+ else if( rNm.EqualsAscii( sHTML_strong ) )
+ {
+ rRefPoolId = RES_POOLCHR_HTML_STRONG;
+ rToken.Assign( sHTML_strong );
+ }
+ }
+ break;
+ case 'T': if( bChrFmt && rNm.EqualsAscii( sHTML_teletype ) )
+ {
+ rRefPoolId = RES_POOLCHR_HTML_TELETYPE;
+ rToken.Assign( sHTML_teletype );
+ }
+ break;
+ case 'V': if( bChrFmt && rNm.EqualsAscii( sHTML_variable ) )
+ {
+ rRefPoolId = RES_POOLCHR_HTML_VARIABLE;
+ rToken.Assign( sHTML_variable );
+ }
+ break;
+ case 'X': if( !bChrFmt && rNm.EqualsAscii( sHTML_xmp ) )
+ {
+ // XMP als PRE exportieren (aber nicht die
+ // Vorlage als Style)
+ rToken.Assign( sHTML_preformtxt );
+ rRefPoolId = RES_POOLCOLL_HTML_PRE;
+ nDeep = CSS1_FMT_CMPREF;
+ }
+ break;
+ }
+
+ // Wenn eine PoolId gesetzt ist, entspricht der Name der
+ // Vorlage dem szugehoerigen Token
+ ASSERT( rRefPoolId != 0 == rToken.Len() > 0,
+ "Token missing" );
+ }
+ else
+ {
+ // Pool-Vorlagen
+ switch( nPoolId )
+ {
+ // Absatz-Vorlagen
+ case RES_POOLCOLL_HEADLINE_BASE:
+ case RES_POOLCOLL_STANDARD:
+ // diese Vorlagen nicht ausgeben
+ bStop = (nDeep==0);
+ break;
+ case RES_POOLCOLL_TEXT:
+ rToken.Assign( sHTML_parabreak );
+ break;
+ case RES_POOLCOLL_HEADLINE1:
+ rToken.Assign( sHTML_head1 );
+ break;
+ case RES_POOLCOLL_HEADLINE2:
+ rToken.Assign( sHTML_head2 );
+ break;
+ case RES_POOLCOLL_HEADLINE3:
+ rToken.Assign( sHTML_head3 );
+ break;
+ case RES_POOLCOLL_HEADLINE4:
+ rToken.Assign( sHTML_head4 );
+ break;
+ case RES_POOLCOLL_HEADLINE5:
+ rToken.Assign( sHTML_head5 );
+ break;
+ case RES_POOLCOLL_HEADLINE6:
+ rToken.Assign( sHTML_head6 );
+ break;
+ case RES_POOLCOLL_SENDADRESS:
+ rToken.Assign( sHTML_address );
+ break;
+ case RES_POOLCOLL_HTML_BLOCKQUOTE:
+ rToken.Assign( sHTML_blockquote );
+ break;
+ case RES_POOLCOLL_HTML_PRE:
+ rToken.Assign( sHTML_preformtxt );
+ break;
+
+ case RES_POOLCOLL_HTML_DD:
+ rToken.Assign( sHTML_dd );
+ break;
+ case RES_POOLCOLL_HTML_DT:
+ rToken.Assign( sHTML_dt );
+ break;
+
+ case RES_POOLCOLL_TABLE:
+ if( pPseudo )
+ {
+ rToken.Assign( sHTML_tabledata );
+ rToken.Append( ' ' );
+ rToken.Assign( sHTML_parabreak );
+ }
+ else
+ rToken.Assign( sHTML_parabreak );
+ break;
+ case RES_POOLCOLL_TABLE_HDLN:
+ if( pPseudo )
+ {
+ rToken.Assign( sHTML_tableheader );
+ rToken.Assign( ' ' );
+ rToken.Assign( sHTML_parabreak );
+ }
+ else
+ rToken.Assign( sHTML_parabreak );
+ break;
+ case RES_POOLCOLL_HTML_HR:
+ // HR nicht ausgeben!
+ bStop = (nDeep==0);
+ break;
+ case RES_POOLCOLL_FOOTNOTE:
+ if( !nDeep )
+ {
+ rToken.Assign( sHTML_parabreak );
+ rClass.AssignAscii( sHTML_sdfootnote );
+ rRefPoolId = RES_POOLCOLL_TEXT;
+ nDeep = CSS1_FMT_CMPREF;
+ }
+ break;
+ case RES_POOLCOLL_ENDNOTE:
+ if( !nDeep )
+ {
+ rToken.Assign( sHTML_parabreak );
+ rClass.AssignAscii( sHTML_sdendnote );
+ rRefPoolId = RES_POOLCOLL_TEXT;
+ nDeep = CSS1_FMT_CMPREF;
+ }
+ break;
+
+ // Zeichen-Vorlagen
+ case RES_POOLCHR_HTML_EMPHASIS:
+ rToken.Assign( sHTML_emphasis );
+ break;
+ case RES_POOLCHR_HTML_CITIATION:
+ rToken.Assign( sHTML_citiation );
+ break;
+ case RES_POOLCHR_HTML_STRONG:
+ rToken.Assign( sHTML_strong );
+ break;
+ case RES_POOLCHR_HTML_CODE:
+ rToken.Assign( sHTML_code );
+ break;
+ case RES_POOLCHR_HTML_SAMPLE:
+ rToken.Assign( sHTML_sample );
+ break;
+ case RES_POOLCHR_HTML_KEYBOARD:
+ rToken.Assign( sHTML_keyboard );
+ break;
+ case RES_POOLCHR_HTML_VARIABLE:
+ rToken.Assign( sHTML_variable );
+ break;
+ case RES_POOLCHR_HTML_DEFINSTANCE:
+ rToken.Assign( sHTML_definstance );
+ break;
+ case RES_POOLCHR_HTML_TELETYPE:
+ rToken.Assign( sHTML_teletype );
+ break;
+
+ case RES_POOLCHR_INET_NORMAL:
+ if( pPseudo )
+ {
+ rToken.Assign( sHTML_anchor );
+ pPseudo->AssignAscii( sCSS1_link );
+ }
+ break;
+ case RES_POOLCHR_INET_VISIT:
+ if( pPseudo )
+ {
+ rToken.Assign( sHTML_anchor );
+ pPseudo->AssignAscii( sCSS1_visited );
+ }
+ break;
+ }
+
+ // Wenn ein Token gesetzt ist, enthaelt nPoolId die dazugehoerige
+ // Vorlage
+ if( rToken.Len() && !rRefPoolId )
+ rRefPoolId = nPoolId;
+ }
+
+ if( rToken.Len() || bStop )
+ {
+ // Anhalten wenn eine HTML-Tag-Vorlage gefunden wurde
+ break;
+ }
+ else
+ {
+ // sonst weitersuchen
+ nDeep++;
+ pPFmt = pPFmt->DerivedFrom();
+ }
+ }
+
+ if( rToken.Len() )
+ {
+ // Es ist eine HTML-Tag-Vorlage
+ if( !nDeep )
+ nDeep = CSS1_FMT_ISTAG;
+ }
+ else
+ {
+ // Es ist keine HTML-Tag-Vorlage und auch keine davon abgeleitete
+ nDeep = 0;
+ }
+ if( nDeep > 0 && nDeep < CSS1_FMT_SPECIAL )
+ {
+ // Wenn die Vorlage von einer HTML-Vorlage abgeleitet ist,
+ // wird sie als <TOKEN>.<CLASS> exportiert, sonst als .<CLASS>.
+ // <CLASS> ergibt sich aus dem Namen der Vorlage durch entfernen
+ // aller Zeichen vor und inklusive dem ersten '.'
+ rClass = pFmt->GetName();
+ xub_StrLen nPos = rClass.Search( '.' );
+ if( nPos != STRING_NOTFOUND && rClass.Len() > nPos+1 )
+ {
+ rClass.Erase( 0, nPos+1 );
+ }
+
+ GetAppCharClass().toLower( rClass );
+ while( STRING_NOTFOUND != rClass.SearchAndReplace( '.', '-' ) )
+ ;
+ while( STRING_NOTFOUND != rClass.SearchAndReplace( ' ', '-' ) )
+ ;
+ while( STRING_NOTFOUND != rClass.SearchAndReplace( '_', '-' ) )
+ ;
+ }
+
+ return nDeep;
+}
+
+static USHORT GetCSS1Selector( const SwFmt *pFmt, String& rSelector,
+ USHORT& rRefPoolId )
+{
+ ByteString aToken;
+ String aClass;
+ String aPseudo;
+
+ USHORT nDeep = SwHTMLWriter::GetCSS1Selector( pFmt, aToken, aClass,
+ rRefPoolId, &aPseudo );
+ if( nDeep )
+ {
+ if( aToken.Len() )
+ rSelector = String( aToken, RTL_TEXTENCODING_ASCII_US );
+ else
+ rSelector.Erase();
+
+ if( aClass.Len() )
+ (rSelector += '.') += aClass;
+ if( aPseudo.Len() )
+ (rSelector += ':') += aPseudo;
+ }
+
+ return nDeep;
+}
+
+const SwFmt *SwHTMLWriter::GetTemplateFmt( USHORT nPoolFmtId,
+ SwDoc *pTemplate )
+{
+ const SwFmt *pRefFmt = 0;
+
+ if( pTemplate )
+ {
+ ASSERT( !(USER_FMT & nPoolFmtId),
+ "In der Dok-Vorlage gibt es keine Benutzer-Vorlagen" );
+ if( POOLGRP_NOCOLLID & nPoolFmtId )
+ pRefFmt = pTemplate->GetCharFmtFromPool( nPoolFmtId );
+ else
+ pRefFmt = pTemplate->GetTxtCollFromPool( nPoolFmtId );
+ }
+
+ return pRefFmt;
+}
+
+const SwFmt *SwHTMLWriter::GetParentFmt( const SwFmt& rFmt, USHORT nDeep )
+{
+ ASSERT( nDeep != USHRT_MAX, "GetParent fuer HTML-Vorlage aufgerufen!" );
+ const SwFmt *pRefFmt = 0;
+
+ if( nDeep > 0 )
+ {
+ // hier wird die HTML-Tag-Vorlage, von der die Vorlage abgeleitet
+ // ist als Referenz geholt
+ pRefFmt = &rFmt;
+ for( USHORT i=nDeep; i>0; i-- )
+ pRefFmt = pRefFmt->DerivedFrom();
+
+ if( pRefFmt && pRefFmt->IsDefault() )
+ pRefFmt = 0;
+ }
+
+ return pRefFmt;
+}
+
+BOOL lcl_css1atr_equalFontItems( const SfxPoolItem& r1, const SfxPoolItem& r2 )
+{
+ return ((const SvxFontItem &)r1).GetFamilyName() ==
+ ((const SvxFontItem &)r2).GetFamilyName() &&
+ ((const SvxFontItem &)r1).GetFamily() ==
+ ((const SvxFontItem &)r2).GetFamily() &&
+ ((const SvxFontItem &)r1).GetPitch() ==
+ ((const SvxFontItem &)r2).GetPitch();
+}
+
+void SwHTMLWriter::SubtractItemSet( SfxItemSet& rItemSet,
+ const SfxItemSet& rRefItemSet,
+ BOOL bSetDefaults,
+ BOOL bClearSame )
+{
+ ASSERT( bSetDefaults || bClearSame,
+ "SwHTMLWriter::SubtractItemSet: Bei diesen Flags passiert nix" );
+ SfxItemSet aRefItemSet( *rRefItemSet.GetPool(), rRefItemSet.GetRanges() );
+ aRefItemSet.Set( rRefItemSet );
+
+ // und mit dem Attr-Set der Vorlage vergleichen
+ SfxWhichIter aIter( rItemSet );
+ USHORT nWhich = aIter.FirstWhich();
+ while( nWhich )
+ {
+ const SfxPoolItem *pRefItem, *pItem;
+ BOOL bItemSet = ( SFX_ITEM_SET ==
+ rItemSet.GetItemState( nWhich, FALSE, &pItem) );
+ BOOL bRefItemSet = ( SFX_ITEM_SET ==
+ aRefItemSet.GetItemState( nWhich, FALSE, &pRefItem) );
+ if( bItemSet )
+ {
+ if( bClearSame && bRefItemSet &&
+ ( *pItem == *pRefItem ||
+ (RES_CHRATR_FONT == nWhich &&
+ lcl_css1atr_equalFontItems( *pItem, *pRefItem )) ) )
+ {
+ // das Attribut ist mit dem gleichen Wert in beiden
+ // Vorlagen vorhanden und muss nicht ausgegeben werden
+ rItemSet.ClearItem( nWhich );
+ }
+ }
+ else
+ {
+ if( bSetDefaults && bRefItemSet )
+ {
+ // das Attribut ist nur in der Referenz vorhanden. Das
+ // Default muss ggf. ausgegeben werden
+ rItemSet.Put( rItemSet.GetPool()->GetDefaultItem(nWhich) );
+ }
+ }
+
+ nWhich = aIter.NextWhich();
+ }
+}
+
+void SwHTMLWriter::PrepareFontList( const SvxFontItem& rFontItem,
+ String& rNames,
+ sal_Unicode cQuote, BOOL bGeneric )
+{
+ rNames = aEmptyStr;
+ const String& rName = rFontItem.GetFamilyName();
+ BOOL bContainsKeyword = FALSE;
+ if( rName.Len() )
+ {
+ xub_StrLen nStrPos = 0;
+ while( nStrPos != STRING_NOTFOUND )
+ {
+ String aName = rName.GetToken( 0, ';', nStrPos );
+ aName.EraseTrailingChars().EraseLeadingChars();
+ if( !aName.Len() )
+ continue;
+
+ BOOL bIsKeyword = FALSE;
+ switch( aName.GetChar( 0 ) )
+ {
+ case 'c':
+ case 'C':
+ bIsKeyword = aName.EqualsIgnoreCaseAscii( sCSS1_PV_cursive );
+ break;
+
+ case 'f':
+ case 'F':
+ bIsKeyword = aName.EqualsIgnoreCaseAscii( sCSS1_PV_fantasy );
+ break;
+
+ case 'm':
+ case 'M':
+ bIsKeyword = aName.EqualsIgnoreCaseAscii( sCSS1_PV_monospace );
+ break;
+
+ case 's':
+ case 'S':
+ bIsKeyword =
+ aName.EqualsIgnoreCaseAscii( sCSS1_PV_serif ) ||
+ aName.EqualsIgnoreCaseAscii( sCSS1_PV_sans_serif );
+ break;
+ }
+
+ bContainsKeyword |= bIsKeyword;
+
+ if( rNames.Len() )
+ rNames.AppendAscii( ", " );
+ if( cQuote && !bIsKeyword )
+ rNames += cQuote;
+ rNames += aName;
+ if( cQuote && !bIsKeyword )
+ rNames += cQuote;
+ }
+ }
+
+ if( !bContainsKeyword && bGeneric )
+ {
+ const sal_Char *pStr = 0;
+ switch( rFontItem.GetFamily() )
+ {
+ case FAMILY_ROMAN: pStr = sCSS1_PV_serif; break;
+ case FAMILY_SWISS: pStr = sCSS1_PV_sans_serif; break;
+ case FAMILY_SCRIPT: pStr = sCSS1_PV_cursive; break;
+ case FAMILY_DECORATIVE: pStr = sCSS1_PV_fantasy; break;
+ case FAMILY_MODERN: pStr = sCSS1_PV_monospace; break;
+ }
+
+ if( pStr )
+ {
+ if( rNames.Len() )
+ rNames.AppendAscii( ", " );
+ rNames.AppendAscii( pStr );
+ }
+ }
+}
+
+static Writer& OutCSS1_SwFmt( Writer& rWrt, const SwFmt& rFmt,
+ SwDoc *pDoc, SwDoc *pTemplate )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ BOOL bCharFmt = FALSE;
+ switch( rFmt.Which() )
+ {
+ case RES_CHRFMT:
+ bCharFmt = TRUE;
+ break;
+
+ case RES_TXTFMTCOLL:
+ case RES_CONDTXTFMTCOLL:
+ // diese Vorlagen-Typen koennen exportiert werden
+ break;
+
+ default:
+ // und diese nicht
+ return rWrt;
+ }
+
+ // den Selector und die auszugebende Attr-Set-Tiefe ermitteln
+ String aSelector;
+ USHORT nRefPoolId = 0;
+ USHORT nDeep = GetCSS1Selector( &rFmt, aSelector, nRefPoolId );
+ if( !nDeep )
+ return rWrt; // von keiner HTML-Vorlage abgeleitet
+
+ USHORT nPoolFmtId = rFmt.GetPoolFmtId();
+
+ // Den auszugebenden Attr-Set bestimmen. Hier muessen 3 Faelle
+ // unterschieden werden:
+ // - HTML-Tag-Vorlagen (nDeep==USHRT_MAX):
+ // Es werden die Attrs ausgegeben
+ // - die in der Vorlage gesetzt sind, aber nicht im Original aus
+ // der HTML-Vorlage
+ // - die Default-Attrs fuer die Attrs, die im Original aus der
+ // HTML-Vorlage gesetzt sind, aber nicht in der vorliegeden Vorlage.
+ // - direkt von HTML-Vorlagen abgeleitete Vorlagen (nDeep==1):
+ // Es weren nur die Attribute des Vorlagen-Item-Set ohne seine
+ // Parents ausgegeben.
+ // - indirekt von HTML-Tag-Vorlagen abgeleitete Vorlagen (nDeep>1)
+ // Es werden die Attribute des Vorlagen-Item-Sets inkl. seiner Parents,
+ // aber ohne die Attribute, die in der HTML-Tag-Vorlage gesetzt sind,
+ // ausgegeben.
+
+ // einen Item-Set mit allen Attributen aus der Vorlage anlegen
+ // (ausser fuer nDeep==1)
+ const SfxItemSet& rFmtItemSet = rFmt.GetAttrSet();
+ SfxItemSet aItemSet( *rFmtItemSet.GetPool(), rFmtItemSet.GetRanges() );
+ aItemSet.Set( rFmtItemSet, nDeep!=1 );
+
+ BOOL bSetDefaults = TRUE, bClearSame = TRUE;
+ const SwFmt *pRefFmt = 0;
+ switch( nDeep )
+ {
+ case CSS1_FMT_ISTAG:
+ pRefFmt = SwHTMLWriter::GetTemplateFmt( nRefPoolId, pTemplate );
+ break;
+ case CSS1_FMT_CMPREF:
+ pRefFmt = SwHTMLWriter::GetTemplateFmt( nRefPoolId, pDoc );
+ bClearSame = FALSE;
+ break;
+ default:
+ pRefFmt = SwHTMLWriter::GetParentFmt( rFmt, nDeep );
+ bSetDefaults = FALSE;
+ break;
+ }
+
+ if( pRefFmt )
+ {
+ // Den Item-Set der Referenz-Vorlage (inkl. seiner Parents) vom
+ // ItemSet abziehen
+ SwHTMLWriter::SubtractItemSet( aItemSet, pRefFmt->GetAttrSet(),
+ bSetDefaults, bClearSame );
+ if( !bCharFmt )
+ {
+ const SvxULSpaceItem& rULItem = pRefFmt->GetULSpace();
+ rHTMLWrt.nDfltTopMargin = rULItem.GetUpper();
+ rHTMLWrt.nDfltBottomMargin = rULItem.GetLower();
+ }
+ }
+ else if( CSS1_FMT_ISTAG==nDeep && !bCharFmt )
+ {
+ // die Default-Abstaende nach oben und unten setzen (fuer den
+ // Fall, dass es keine Vorlage als Referenz gibt)
+ rHTMLWrt.nDfltTopMargin = 0;
+ rHTMLWrt.nDfltBottomMargin = HTML_PARSPACE;
+ if( USER_FMT & nPoolFmtId )
+ {
+ // Benutzer-Vorlagen
+ const String& rNm = rFmt.GetName();
+ switch( rNm.GetChar(0) )
+ {
+ case 'D': if( rNm.EqualsAscii("DD 1") || rNm.EqualsAscii("DT 1") )
+ rHTMLWrt.nDfltBottomMargin = 0;
+ break;
+ case 'L': if(rNm.EqualsAscii(sHTML_listing) )
+ rHTMLWrt.nDfltBottomMargin = 0;
+ break;
+ case 'P': if( rNm.EqualsAscii(sHTML_preformtxt) )
+ rHTMLWrt.nDfltBottomMargin = 0;
+ break;
+ case 'X': if( rNm.EqualsAscii(sHTML_xmp) )
+ rHTMLWrt.nDfltBottomMargin = 0;
+ break;
+ }
+ }
+ else
+ {
+ // Pool-Vorlagen
+ switch( nPoolFmtId )
+ {
+ case RES_POOLCOLL_HEADLINE1:
+ case RES_POOLCOLL_HEADLINE2:
+ case RES_POOLCOLL_HEADLINE3:
+ case RES_POOLCOLL_HEADLINE4:
+ case RES_POOLCOLL_HEADLINE5:
+ case RES_POOLCOLL_HEADLINE6:
+ rHTMLWrt.nDfltTopMargin = HTML_HEADSPACE;
+ break;
+ case RES_POOLCOLL_SENDADRESS:
+ case RES_POOLCOLL_HTML_DT:
+ case RES_POOLCOLL_HTML_DD:
+ case RES_POOLCOLL_HTML_PRE:
+ rHTMLWrt.nDfltBottomMargin = 0;
+ break;
+ }
+ }
+ }
+
+ // wo nicht auszugeben ist ...
+ if( !aItemSet.Count() )
+ return rWrt;
+
+ // jetzt die Attribute (inkl. Selektor) ausgeben
+ {
+ SwCSS1OutMode aMode( rHTMLWrt, CSS1_OUTMODE_RULE|CSS1_OUTMODE_TEMPLATE,
+ TRUE, &aSelector );
+ rHTMLWrt.OutCSS1_SfxItemSet( aItemSet, FALSE );
+
+ if( nPoolFmtId==RES_POOLCOLL_TEXT && !rHTMLWrt.bFirstCSS1Property )
+ rHTMLWrt.bPoolCollTextModified = TRUE;
+ }
+
+ // Drop-Caps ausgeben
+ const SfxPoolItem *pItem;
+ if( rHTMLWrt.IsHTMLMode(HTMLMODE_DROPCAPS) &&
+ SFX_ITEM_SET==aItemSet.GetItemState( RES_PARATR_DROP, FALSE, &pItem ))
+ {
+ String sOut( aSelector );
+ sOut.Append( ':');
+ sOut.AppendAscii( sCSS1_first_letter );
+ SwCSS1OutMode aMode( rHTMLWrt, CSS1_OUTMODE_RULE|CSS1_OUTMODE_DROPCAP,
+ TRUE, &sOut );
+
+ const SwFmtDrop *pDrop = (const SwFmtDrop *)pItem;
+
+ OutCSS1_SwFmtDropAttrs( rHTMLWrt, *pDrop );
+ }
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SwPageDesc( Writer& rWrt, const SwPageDesc& rPageDesc,
+ SwDoc *pDoc, SwDoc *pTemplate,
+ USHORT nRefPoolId, BOOL bExtRef,
+ BOOL bPseudo )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const SwPageDesc* pRefPageDesc = 0;
+ if( !bExtRef )
+ pRefPageDesc = pDoc->GetPageDescFromPool( nRefPoolId );
+ else if( pTemplate )
+ pRefPageDesc = pTemplate->GetPageDescFromPool( nRefPoolId );
+
+ String aSelector( '@' );
+ aSelector.AppendAscii( sCSS1_page );
+
+ if( bPseudo )
+ {
+ const sal_Char *pPseudo = 0;
+ switch( rPageDesc.GetPoolFmtId() )
+ {
+ case RES_POOLPAGE_FIRST: pPseudo = sCSS1_first; break;
+ case RES_POOLPAGE_LEFT: pPseudo = sCSS1_left; break;
+ case RES_POOLPAGE_RIGHT: pPseudo = sCSS1_right; break;
+ }
+ if( pPseudo )
+ {
+ aSelector.Append( ':' );
+ aSelector.AppendAscii( pPseudo );
+ }
+ }
+
+ SwCSS1OutMode aMode( rHTMLWrt, CSS1_OUTMODE_RULE_ON|CSS1_OUTMODE_TEMPLATE,
+ TRUE, &aSelector );
+
+ // Die Groesse: Wenn sie sich nur durch das Landscape-Flag unterscheidet,
+ // wird nur Portrait oder Landscape exportiert. Sonst wird die Groesse
+ // exportiert.
+ BOOL bRefLandscape = pRefPageDesc ? pRefPageDesc->GetLandscape() : FALSE;
+ Size aRefSz;
+ const Size& rSz = rPageDesc.GetMaster().GetFrmSize().GetSize();
+ if( pRefPageDesc )
+ {
+ aRefSz = pRefPageDesc->GetMaster().GetFrmSize().GetSize();
+ if( bRefLandscape != rPageDesc.GetLandscape() )
+ {
+ long nTmp = aRefSz.Height();
+ aRefSz.Height() = aRefSz.Width();
+ aRefSz.Width() = nTmp;
+ }
+ }
+
+ // Boeser uebler Hack: Auf der Seiten-Tabpage gibt es leichte
+ // Rundungsfehler bei der Seitengroesse. Unter anderem wegen bug
+ // 25535 wird dummerweise auch noch immer Size-Item vom Dialog geputtet,
+ // auch wenn man gar nichts geaendert hat. Folge: Sobald man einmal im
+ // Seiten-Dialog war und ihn mit OK verlassen hat, bekommt man eine
+ // neue Seitengroesse, die dann hier exportiert wuerde. Um das
+ // vermeiden erlauben wir hier kleine Abweichungen.
+ if( Abs( rSz.Width() - aRefSz.Width() ) <= 2 &&
+ Abs( rSz.Height() - aRefSz.Height() ) <= 2 )
+ {
+ if( bRefLandscape != rPageDesc.GetLandscape() )
+ {
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_size,
+ rPageDesc.GetLandscape() ? sCSS1_PV_landscape
+ : sCSS1_PV_portrait );
+ }
+ }
+ else
+ {
+ ByteString sVal;
+ AddUnitPropertyValue( rSz.Width(), rHTMLWrt.GetCSS1Unit(), sVal );
+ sVal += ' ';
+ AddUnitPropertyValue( rSz.Height(), rHTMLWrt.GetCSS1Unit(), sVal );
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_size, sVal );
+ }
+
+ // Die Abstand-Attribute koennen auf gwohnte Weise exportiert werden
+ const SwFrmFmt &rMaster = rPageDesc.GetMaster();
+ SfxItemSet aItemSet( *rMaster.GetAttrSet().GetPool(),
+ RES_LR_SPACE, RES_UL_SPACE );
+ aItemSet.Set( rMaster.GetAttrSet(), TRUE );
+
+ if( pRefPageDesc )
+ {
+ SwHTMLWriter::SubtractItemSet( aItemSet,
+ pRefPageDesc->GetMaster().GetAttrSet(),
+ TRUE );
+ }
+
+ OutCSS1_SvxULSpace_SvxLRSpace( rWrt, aItemSet, FALSE );
+
+ // Wenn fuer einen Pseudo-Selektor keine Property ausgegeben wurde, muessen
+ // wir trotzdem etwas ausgeben, damit beim Import die entsprechende
+ // Vorlage angelegt wird.
+ if( rHTMLWrt.bFirstCSS1Property && bPseudo )
+ {
+ rHTMLWrt.OutNewLine();
+ ByteString sTmp( aSelector, rHTMLWrt.eDestEnc );
+ rWrt.Strm() << sTmp.GetBuffer() << " {";
+ rHTMLWrt.bFirstCSS1Property = FALSE;
+ }
+
+ if( !rHTMLWrt.bFirstCSS1Property )
+ rWrt.Strm() << sCSS1_rule_end;
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SwFtnInfo( Writer& rWrt, const SwEndNoteInfo& rInfo,
+ SwDoc *pDoc, USHORT nNotes, BOOL bEndNote )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ String aSelector;
+
+ if( nNotes > 0 )
+ {
+ aSelector.AssignAscii( sHTML_anchor );
+ aSelector.Append( '.');
+ aSelector.AppendAscii( bEndNote ? sHTML_sdendnote_anc
+ : sHTML_sdfootnote_anc );
+ SwCSS1OutMode aMode( rHTMLWrt, CSS1_OUTMODE_RULE|CSS1_OUTMODE_TEMPLATE,
+ TRUE, &aSelector );
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_font_size,
+ sHTML_FTN_fontheight );
+ rHTMLWrt.Strm() << sCSS1_rule_end;
+ }
+
+ const SwCharFmt *pSymCharFmt = rInfo.GetCharFmt( *pDoc );
+ if( pSymCharFmt )
+ {
+ const SfxItemSet& rFmtItemSet = pSymCharFmt->GetAttrSet();
+ SfxItemSet aItemSet( *rFmtItemSet.GetPool(), rFmtItemSet.GetRanges() );
+ aItemSet.Set( rFmtItemSet, TRUE );
+
+ USHORT nPoolFmtId = pSymCharFmt->GetPoolFmtId();
+ // Wenn es Fuss- bzw. Endnoten gibt, dann muessen alles Attribute
+ // ausgegeben werden, damit Netscape das Dokument richtig anzeigt.
+ // Anderenfalls genuegt es, die Unterschiede zur Fuss-/Endnoten
+ // Vorlage rauszuschreiben.
+ if( nNotes == 0 && rHTMLWrt.pTemplate )
+ {
+ SwFmt *pRefFmt = rHTMLWrt.pTemplate->GetCharFmtFromPool(
+ bEndNote ? RES_POOLCHR_ENDNOTE : RES_POOLCHR_FOOTNOTE );
+ if( pRefFmt )
+ SwHTMLWriter::SubtractItemSet( aItemSet, pRefFmt->GetAttrSet(),
+ TRUE );
+ }
+ if( aItemSet.Count() )
+ {
+ aSelector.AssignAscii( sHTML_anchor );
+ aSelector.Append( '.');
+ aSelector.AppendAscii( bEndNote ? sHTML_sdendnote_sym
+ : sHTML_sdfootnote_sym );
+ SwCSS1OutMode aMode( rHTMLWrt,
+ CSS1_OUTMODE_RULE|CSS1_OUTMODE_TEMPLATE,
+ TRUE, &aSelector );
+ rHTMLWrt.OutCSS1_SfxItemSet( aItemSet, FALSE );
+ }
+ }
+
+ return rWrt;
+}
+
+Writer& OutCSS1_BodyTagStyleOpt( Writer& rWrt, const SfxItemSet& rItemSet,
+ String aEmbBGGrfName )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ SwCSS1OutMode aMode( rHTMLWrt, CSS1_OUTMODE_STYLE_OPT_ON |
+ CSS1_OUTMODE_ENCODE|CSS1_OUTMODE_BODY );
+
+
+ // Es werden nur die Attribute der Seiten-Vorlage ausgegeben.
+ // Die Attribute der Standard-Absatz-Vorlage werden schon beim
+ // Export der Absatz-Vorlagen beruecksichtigt.
+
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BACKGROUND, FALSE,
+ &pItem ) )
+ {
+ OutCSS1_SvxBrush( rWrt, *pItem, CSS1_BACKGROUND_PAGE,
+ &aEmbBGGrfName );
+ }
+
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BOX, FALSE,
+ &pItem ))
+ {
+ OutCSS1_SvxBox( rWrt, *pItem );
+ }
+
+ if( !rHTMLWrt.bFirstCSS1Property )
+ {
+ // wenn eine Property als Bestandteil einer Style-Option
+ // ausgegeben wurde, muss die Optiomn noch beendet werden
+ rWrt.Strm() << '\"';
+ }
+
+ return rWrt;
+}
+
+Writer& OutCSS1_ParaTagStyleOpt( Writer& rWrt, const SfxItemSet& rItemSet )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ SwCSS1OutMode aMode( rHTMLWrt, CSS1_OUTMODE_STYLE_OPT |
+ CSS1_OUTMODE_ENCODE|CSS1_OUTMODE_PARA );
+ rHTMLWrt.OutCSS1_SfxItemSet( rItemSet, FALSE );
+
+ return rWrt;
+}
+
+Writer& OutCSS1_HintSpanTag( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ SwCSS1OutMode aMode( rHTMLWrt, CSS1_OUTMODE_SPAN_TAG |
+ CSS1_OUTMODE_ENCODE|CSS1_OUTMODE_HINT );
+
+ Out( aCSS1AttrFnTab, rHt, rWrt );
+
+ if( !rHTMLWrt.bFirstCSS1Property && rHTMLWrt.bTagOn )
+ rWrt.Strm() << sCSS1_span_tag_end;
+
+ return rWrt;
+}
+
+Writer& OutCSS1_HintStyleOpt( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ SwCSS1OutMode aMode( rHTMLWrt, CSS1_OUTMODE_STYLE_OPT_ON |
+ CSS1_OUTMODE_ENCODE|
+ CSS1_OUTMODE_HINT );
+
+ Out( aCSS1AttrFnTab, rHt, rWrt );
+
+ if( !rHTMLWrt.bFirstCSS1Property )
+ rWrt.Strm() << '\"';
+
+ return rWrt;
+}
+
+// Wrapper fuer die Ausgabe von Tabellen-Hintergruenden
+Writer& OutCSS1_TableBGStyleOpt( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ SwCSS1OutMode aMode( rHTMLWrt, CSS1_OUTMODE_STYLE_OPT_ON |
+ CSS1_OUTMODE_ENCODE|
+ CSS1_OUTMODE_TABLEBOX );
+ OutCSS1_SvxBrush( rWrt, rHt, CSS1_BACKGROUND_TABLE, 0 );
+
+ if( !rHTMLWrt.bFirstCSS1Property )
+ rWrt.Strm() << '\"';
+
+ return rWrt;
+}
+
+
+Writer& OutCSS1_NumBulListStyleOpt( Writer& rWrt, const SwNumRule& rNumRule,
+ BYTE nLevel )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ SwCSS1OutMode aMode( rHTMLWrt, CSS1_OUTMODE_STYLE_OPT |
+ CSS1_OUTMODE_ENCODE|CSS1_OUTMODE_PARA );
+
+ const SwNumFmt& rNumFmt = rNumRule.Get( nLevel );
+
+ long nLSpace = rNumFmt.GetAbsLSpace();
+ long nFirstLineOffset = rNumFmt.GetFirstLineOffset();
+ long nDfltFirstLineOffset = HTML_NUMBUL_INDENT;
+ if( nLevel > 0 )
+ {
+ const SwNumFmt& rPrevNumFmt = rNumRule.Get( nLevel-1 );
+ nLSpace -= rPrevNumFmt.GetAbsLSpace();
+ nDfltFirstLineOffset = rPrevNumFmt.GetFirstLineOffset();
+ }
+
+ if( rHTMLWrt.IsHTMLMode(HTMLMODE_LSPACE_IN_NUMBUL) &&
+ nLSpace != HTML_NUMBUL_MARGINLEFT )
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_margin_left, nLSpace );
+
+ if( rHTMLWrt.IsHTMLMode(HTMLMODE_FRSTLINE_IN_NUMBUL) &&
+ nFirstLineOffset != nDfltFirstLineOffset )
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_text_indent, nFirstLineOffset );
+
+ if( !rHTMLWrt.bFirstCSS1Property )
+ rWrt.Strm() << '\"';
+
+ return rWrt;
+}
+
+//-----------------------------------------------------------------------
+
+void SwHTMLWriter::OutCSS1_FrmFmtOptions( const SwFrmFmt& rFrmFmt,
+ ULONG nFrmOpts,
+ const SdrObject *pSdrObj,
+ const SfxItemSet *pItemSet )
+{
+ SwCSS1OutMode aMode( *this, CSS1_OUTMODE_STYLE_OPT_ON |
+ CSS1_OUTMODE_ENCODE|
+ CSS1_OUTMODE_FRAME );
+
+ const SwFmtHoriOrient& rHoriOri = rFrmFmt.GetHoriOrient();
+ SvxLRSpaceItem aLRItem( rFrmFmt.GetLRSpace() );
+ SvxULSpaceItem aULItem( rFrmFmt.GetULSpace() );
+ if( nFrmOpts & HTML_FRMOPT_S_ALIGN )
+ {
+ const SwFmtAnchor& rAnchor = rFrmFmt.GetAnchor();
+ switch( rAnchor.GetAnchorId() )
+ {
+ case FLY_AT_CNTNT:
+ case FLY_AUTO_CNTNT:
+ if( FRAME == rHoriOri.GetRelationOrient() ||
+ PRTAREA == rHoriOri.GetRelationOrient() )
+ {
+ if( !(nFrmOpts & HTML_FRMOPT_ALIGN) )
+ {
+ // float
+ const sal_Char *pStr = HORI_RIGHT==rHoriOri.GetHoriOrient()
+ ? sCSS1_PV_right
+ : sCSS1_PV_left;
+ OutCSS1_PropertyAscii( sCSS1_P_float, pStr );
+ }
+ break;
+ }
+
+ case FLY_PAGE:
+ case FLY_AT_FLY:
+ {
+ // position
+ OutCSS1_PropertyAscii( sCSS1_P_position, sCSS1_PV_absolute );
+
+ // Fuer top/left muessen die Abstaende des Rahmens von
+ // der Position abgezogen werden, da sie in CSS1 noch
+ // zur Position addiert werden.
+ // Das funktioniert auch fuer automatisch ausgerichtete
+ // Rahmen, obwohl der Abstand da ja auch im Writer noch
+ // addiert wird. Denn auch in diesem Fall enthalten
+ // die Orient-Attribute die korrekte Position
+
+ // top
+ long nXPos=0, nYPos=0;
+ BOOL bOutXPos = FALSE, bOutYPos = FALSE;
+ if( RES_DRAWFRMFMT == rFrmFmt.Which() )
+ {
+ ASSERT( pSdrObj, "Kein SdrObject uebergeben. Ineffizient" );
+ if( !pSdrObj )
+ pSdrObj = rFrmFmt.FindSdrObject();
+ ASSERT( pSdrObj, "Wo ist das SdrObject" );
+ if( pSdrObj )
+ {
+ Point aPos( pSdrObj->GetRelativePos() );
+ nXPos = aPos.A();
+ nYPos = aPos.B();
+ }
+ bOutXPos = bOutYPos = TRUE;
+ }
+ else
+ {
+ bOutXPos = REL_CHAR != rHoriOri.GetRelationOrient();
+ nXPos = HORI_NONE == rHoriOri.GetHoriOrient()
+ ? rHoriOri.GetPos() : 0;
+
+ const SwFmtVertOrient& rVertOri = rFrmFmt.GetVertOrient();
+ bOutYPos = REL_CHAR != rVertOri.GetRelationOrient();
+ nYPos = VERT_NONE == rVertOri.GetVertOrient()
+ ? rVertOri.GetPos() : 0;
+ }
+
+ if( bOutYPos )
+ {
+ if( IsHTMLMode( HTMLMODE_FLY_MARGINS) )
+ {
+ nYPos -= aULItem.GetUpper();
+ if( nYPos < 0 )
+ {
+ aULItem.SetUpper( (USHORT)(aULItem.GetUpper() + nYPos) );
+ nYPos = 0;
+ }
+ }
+
+ OutCSS1_UnitProperty( sCSS1_P_top, nYPos );
+ }
+
+ if( bOutXPos )
+ {
+ // left
+ if( IsHTMLMode( HTMLMODE_FLY_MARGINS) )
+ {
+ nXPos -= aLRItem.GetLeft();
+ if( nXPos < 0 )
+ {
+ aLRItem.SetLeft( (USHORT)(aLRItem.GetLeft() + nXPos) );
+ nXPos = 0;
+ }
+ }
+
+ OutCSS1_UnitProperty( sCSS1_P_left, nXPos );
+ }
+ }
+ break;
+ }
+ }
+
+ // width/height
+ if( nFrmOpts & HTML_FRMOPT_S_SIZE )
+ {
+ if( RES_DRAWFRMFMT == rFrmFmt.Which() )
+ {
+ ASSERT( pSdrObj, "Kein SdrObject uebergeben. Ineffizient" );
+ if( !pSdrObj )
+ pSdrObj = rFrmFmt.FindSdrObject();
+ ASSERT( pSdrObj, "Wo ist das SdrObject" );
+ if( pSdrObj )
+ {
+ Size aTwipSz( pSdrObj->GetLogicRect().GetSize() );
+ if( nFrmOpts & HTML_FRMOPT_S_WIDTH )
+ {
+ if( nFrmOpts & HTML_FRMOPT_S_PIXSIZE )
+ OutCSS1_PixelProperty( sCSS1_P_width, aTwipSz.Width(),
+ FALSE );
+ else
+ OutCSS1_UnitProperty( sCSS1_P_width, aTwipSz.Width() );
+ }
+ if( nFrmOpts & HTML_FRMOPT_S_HEIGHT )
+ {
+ if( nFrmOpts & HTML_FRMOPT_S_PIXSIZE )
+ OutCSS1_PixelProperty( sCSS1_P_height, aTwipSz.Height(),
+ TRUE );
+ else
+ OutCSS1_UnitProperty( sCSS1_P_height, aTwipSz.Height() );
+ }
+ }
+ }
+ else
+ {
+ ASSERT( HTML_FRMOPT_ABSSIZE & nFrmOpts,
+ "Absolute Groesse wird exportiert" );
+ ASSERT( HTML_FRMOPT_ANYSIZE & nFrmOpts,
+ "Jede Groesse wird exportiert" );
+ USHORT nMode = 0;
+ if( nFrmOpts & HTML_FRMOPT_S_WIDTH )
+ nMode |= CSS1_FRMSIZE_WIDTH;
+ if( nFrmOpts & HTML_FRMOPT_S_HEIGHT )
+ nMode |= (CSS1_FRMSIZE_MINHEIGHT|CSS1_FRMSIZE_FIXHEIGHT);
+ if( nFrmOpts & HTML_FRMOPT_S_PIXSIZE )
+ nMode |= CSS1_FRMSIZE_PIXEL;
+
+ OutCSS1_SwFmtFrmSize( *this, rFrmFmt.GetFrmSize(), nMode );
+ }
+ }
+
+ const SfxItemSet& rItemSet = rFrmFmt.GetAttrSet();
+ // margin-*
+ if( (nFrmOpts & HTML_FRMOPT_S_SPACE) &&
+ IsHTMLMode( HTMLMODE_FLY_MARGINS) )
+ {
+ const SvxLRSpaceItem *pLRItem = 0;
+ const SvxULSpaceItem *pULItem = 0;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_LR_SPACE, TRUE ) )
+ pLRItem = &aLRItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_UL_SPACE, TRUE ) )
+ pULItem = &aULItem;
+ if( pLRItem || pULItem )
+ OutCSS1_SvxULSpace_SvxLRSpace( *this, pULItem, pLRItem );
+ }
+
+ // border
+ if( nFrmOpts & HTML_FRMOPT_S_BORDER )
+ {
+ const SfxPoolItem* pItem;
+ if( nFrmOpts & HTML_FRMOPT_S_NOBORDER )
+ OutCSS1_SvxBox( *this, rFrmFmt.GetBox() );
+ else if( SFX_ITEM_SET==rItemSet.GetItemState( RES_BOX, TRUE, &pItem ) )
+ OutCSS1_SvxBox( *this, *pItem );
+ }
+
+ // background (wenn, dann muss auch eine Farbe ausgegeben werden)
+ if( nFrmOpts & HTML_FRMOPT_S_BACKGROUND )
+ OutCSS1_FrmFmtBackground( rFrmFmt );
+
+ if( pItemSet )
+ OutCSS1_SfxItemSet( *pItemSet, FALSE );
+
+ if( !bFirstCSS1Property )
+ Strm() << '\"';
+}
+
+void SwHTMLWriter::OutCSS1_TableFrmFmtOptions( const SwFrmFmt& rFrmFmt )
+{
+ SwCSS1OutMode aMode( *this, CSS1_OUTMODE_STYLE_OPT_ON |
+ CSS1_OUTMODE_ENCODE|
+ CSS1_OUTMODE_TABLE );
+
+ const SfxPoolItem *pItem;
+ const SfxItemSet& rItemSet = rFrmFmt.GetAttrSet();
+ if( SFX_ITEM_SET==rItemSet.GetItemState( RES_BACKGROUND, FALSE, &pItem ) )
+ OutCSS1_SvxBrush( *this, *pItem, CSS1_BACKGROUND_TABLE, 0 );
+
+ if( IsHTMLMode( HTMLMODE_PRINT_EXT ) )
+ OutCSS1_SvxFmtBreak_SwFmtPDesc_SvxFmtKeep( *this, rItemSet, FALSE );
+
+ if( SFX_ITEM_SET==rItemSet.GetItemState( RES_LAYOUT_SPLIT, FALSE, &pItem ) )
+ OutCSS1_SwFmtLayoutSplit( *this, *pItem );
+
+ if( !bFirstCSS1Property )
+ Strm() << '\"';
+}
+
+void SwHTMLWriter::OutCSS1_SectionFmtOptions( const SwFrmFmt& rFrmFmt )
+{
+ SwCSS1OutMode aMode( *this, CSS1_OUTMODE_STYLE_OPT_ON |
+ CSS1_OUTMODE_ENCODE|
+ CSS1_OUTMODE_SECTION );
+
+ const SfxPoolItem *pItem;
+ const SfxItemSet& rItemSet = rFrmFmt.GetAttrSet();
+ if( SFX_ITEM_SET==rItemSet.GetItemState( RES_BACKGROUND, FALSE, &pItem ) )
+ OutCSS1_SvxBrush( *this, *pItem, CSS1_BACKGROUND_SECTION, 0 );
+
+ if( !bFirstCSS1Property )
+ Strm() << '\"';
+}
+
+static BOOL OutCSS1_FrmFmtBrush( SwHTMLWriter& rWrt,
+ const SvxBrushItem& rBrushItem )
+{
+ BOOL bWritten = FALSE;
+ if( rBrushItem.GetColor().GetTransparency() ||
+ 0 != rBrushItem.GetGraphicLink() ||
+ 0 != rBrushItem.GetGraphicPos() )
+ {
+ OutCSS1_SvxBrush( rWrt, rBrushItem, CSS1_BACKGROUND_FLY, 0 );
+ bWritten = TRUE;
+ }
+ return bWritten;
+}
+
+void SwHTMLWriter::OutCSS1_FrmFmtBackground( const SwFrmFmt& rFrmFmt )
+{
+ // Wenn der Rahmen selbst einen Hintergrund hat, wird der ausgegeben.
+ if( OutCSS1_FrmFmtBrush( *this, rFrmFmt.GetBackground() ) )
+ return;
+
+ // Wenn der Rahmen nicht seitengebunden ist, wird sonst muss der
+ // Hintergrund vom Anker betrachtet
+ const SwFmtAnchor& rAnchor = rFrmFmt.GetAnchor();
+ RndStdIds eAnchorId = rAnchor.GetAnchorId();
+ const SwPosition *pAnchorPos = rAnchor.GetCntntAnchor();
+ if( FLY_PAGE != eAnchorId && pAnchorPos )
+ {
+ const SwNode& rNode = pAnchorPos->nNode.GetNode();
+ if( rNode.IsCntntNode() )
+ {
+ // Wenn der Rahmen in einem Content-Node verankert ist,
+ // wird der Hintergrund von Content-Node ausgegeben, wenn
+ // der einen hat.
+ if( OutCSS1_FrmFmtBrush( *this,
+ rNode.GetCntntNode()->GetSwAttrSet().GetBackground()) )
+ return;
+
+ // Sonst koennen wir evtl. auch in einer Tabelle stehen
+ const SwTableNode *pTableNd = rNode.FindTableNode();
+ if( pTableNd )
+ {
+ const SwStartNode *pBoxSttNd = rNode.FindTableBoxStartNode();
+ const SwTableBox *pBox =
+ pTableNd->GetTable().GetTblBox( pBoxSttNd->GetIndex() );
+
+ // Wenn die Box einen Hintergrund hat, nehmen wir den.
+ if( OutCSS1_FrmFmtBrush( *this,
+ pBox->GetFrmFmt()->GetBackground() ) )
+ return;
+
+ // Sonst betrachten wir den der Lines
+ const SwTableLine *pLine = pBox->GetUpper();
+ while( pLine )
+ {
+ if( OutCSS1_FrmFmtBrush( *this,
+ pLine->GetFrmFmt()->GetBackground() ) )
+ return;
+ pBox = pLine->GetUpper();
+ pLine = pBox ? pBox->GetUpper() : 0;
+ }
+
+ // Wenn da auch nichts war den der Tabelle.
+ if( OutCSS1_FrmFmtBrush( *this,
+ pTableNd->GetTable().GetFrmFmt()->GetBackground() ) )
+ return;
+ }
+
+ }
+
+ // Wenn der Anker wieder in einem Fly-Frame steht, dann
+ // wird der Hintergrund des Fly-Frames ausgegeben.
+ const SwFrmFmt *pFrmFmt = rNode.GetFlyFmt();
+ if( pFrmFmt )
+ {
+ OutCSS1_FrmFmtBackground( *pFrmFmt );
+ return;
+ }
+ }
+
+ // Schliesslich bleibt noch der Hintergrund der Seite uebrig und als
+ // letzte Rettung das Item der Config.
+ ASSERT( pCurrPageDesc, "Keine Seiten-Vorlage gemerkt" );
+ if( !OutCSS1_FrmFmtBrush( *this,
+ pCurrPageDesc->GetMaster().GetBackground() ) )
+ {
+ Color aColor( COL_WHITE );
+
+ // Die Hintergrund-Farbe wird normalerweise nur in Browse-Mode
+ // benutzt. Wir benutzen si bei einem HTML-Dokument immer und
+ // bei einem Text-Dokument nur, wenn es im Browse-Mode angezeigt
+ // wird.
+ if( pDoc->IsHTMLMode() || pDoc->IsBrowseMode() )
+ {
+ ViewShell *pVSh = 0;
+ pDoc->GetEditShell( &pVSh );
+ if ( pVSh &&
+ COL_TRANSPARENT != pVSh->GetViewOptions()->GetRetoucheColor().GetColor())
+ aColor = pVSh->GetViewOptions()->GetRetoucheColor().GetColor();
+ }
+
+ ByteString sOut;
+ GetCSS1Color( aColor, sOut );
+ OutCSS1_PropertyAscii( sCSS1_P_background, sOut );
+ }
+}
+
+//-----------------------------------------------------------------------
+
+static Writer& OutCSS1_SvxUnderl_SvxCrOut_SvxBlink( Writer& rWrt,
+ const SvxUnderlineItem *pUItem,
+ const SvxCrossedOutItem *pCOItem,
+ const SvxBlinkItem *pBItem )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const sal_Char *pUStr = 0;
+ if( pUItem )
+ {
+ switch( pUItem->GetUnderline() )
+ {
+ case UNDERLINE_NONE:
+ pUStr = sCSS1_PV_none;
+ break;
+ case UNDERLINE_DONTKNOW:
+ break;
+ default:
+ if( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
+ {
+ // das geht auch in HTML und muss nicht als STYLE-Option
+ // und darf nicht als Hint geschrieben werden
+ ASSERT( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT),
+ "Underline als Hint schreiben?" );
+ pUStr = sCSS1_PV_underline;
+ }
+ break;
+ }
+ }
+
+ const sal_Char *pCOStr = 0;
+ if( pCOItem )
+ {
+ switch( pCOItem->GetStrikeout() )
+ {
+ case STRIKEOUT_DONTKNOW:
+ break;
+ case STRIKEOUT_NONE:
+ if( !pUStr )
+ pUStr = sCSS1_PV_none;
+ break;
+ default:
+ if( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
+ {
+ // das geht auch in HTML und muss nicht als STYLE-Option
+ // und darf nicht als Hint geschrieben werden
+ ASSERT( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT),
+ "CrossedOut als Hint schreiben?" );
+ pCOStr = sCSS1_PV_line_through;
+ if( pUStr && sCSS1_PV_none == pUStr )
+ pUStr = 0;
+ }
+ break;
+ }
+ }
+
+ const sal_Char *pBStr = 0;
+ if( pBItem && rHTMLWrt.IsHTMLMode(HTMLMODE_BLINK) )
+ {
+ if( !pBItem->GetValue() )
+ {
+ if( !pUStr && !pCOStr )
+ pBStr = sCSS1_PV_none;
+ }
+ else if( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
+ {
+ // das geht auch in HTML und muss nicht als STYLE-Option
+ // und darf nicht als Hint geschrieben werden
+ ASSERT( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT),
+ "Blink als Hint schreiben?" );
+ pBStr = sCSS1_PV_blink;
+ if( pUStr && sCSS1_PV_none == pUStr )
+ pUStr = 0;
+ if( pCOStr && sCSS1_PV_none == pCOStr )
+ pCOStr = 0;
+ }
+ }
+
+ ByteString sOut;
+ if( pUStr )
+ sOut.Append( pUStr );
+
+ if( pCOStr )
+ {
+ if( sOut.Len() )
+ sOut += ' ';
+
+ sOut.Append( pCOStr );
+ }
+
+ if( pBStr )
+ {
+ if( sOut.Len() )
+ sOut += ' ';
+
+ sOut.Append( pBStr );
+ }
+
+ if( sOut.Len() )
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_text_decoration, sOut );
+
+ return rWrt;
+}
+
+
+static Writer& OutCSS1_SvxCaseMap( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ if( !rHTMLWrt.IsHTMLMode(HTMLMODE_SMALL_CAPS) )
+ return rWrt;
+
+ const sal_Char *pStr = 0;
+ switch( ((const SvxCaseMapItem&)rHt).GetCaseMap() )
+ {
+ case SVX_CASEMAP_NOT_MAPPED: pStr = sCSS1_PV_normal; break;
+ case SVX_CASEMAP_KAPITAELCHEN: pStr = sCSS1_PV_small_caps; break;
+ }
+
+ if( pStr )
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_font_variant, pStr );
+
+ return rWrt;
+}
+
+
+static Writer& OutCSS1_SvxColor( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // Farben muessen nicht in der Style-Option ausgegeben werden.
+ if( rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) &&
+ !rHTMLWrt.bCfgPreferStyles )
+ return rWrt;
+ ASSERT( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT),
+ "Farbe wirklich als Hint ausgeben?" );
+
+ const Color& rColor = ((const SvxColorItem&)rHt).GetValue();
+
+ ByteString sOut;
+ GetCSS1Color( rColor, sOut );
+
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_color, sOut );
+
+ return rWrt;
+}
+
+
+static Writer& OutCSS1_SvxCrossedOut( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ // Mit dieser Methode werden nur Hints ausgegeben!
+ // Sonst wird OutCSS1_SvxUnderl_SvxCrOut_SvxBlink() direkt aufgerufen.
+
+ if( ((SwHTMLWriter&)rWrt).IsCSS1Source(CSS1_OUTMODE_HINT) )
+ OutCSS1_SvxUnderl_SvxCrOut_SvxBlink( rWrt, 0,
+ (const SvxCrossedOutItem *)&rHt, 0 );
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxFont( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // Fonts muessen nicht in der Style-Option ausgegeben werden.
+ if( rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
+ return rWrt;
+
+ ASSERT( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT),
+ "Font wirklich als Hint ausgeben?" );
+
+ String sOut;
+ // MS IE3b1 hat mit einfachen Haekchen Probleme
+ USHORT nMode = rHTMLWrt.nCSS1OutMode & CSS1_OUTMODE_ANY_ON;
+ sal_Unicode cQuote = nMode == CSS1_OUTMODE_RULE_ON ? '\"' : '\'';
+ SwHTMLWriter::PrepareFontList( ((const SvxFontItem&)rHt), sOut, cQuote,
+ TRUE );
+
+ rHTMLWrt.OutCSS1_Property( sCSS1_P_font_family, sOut );
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxFontHeight( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // Font-Hoehen muessen nicht in der Style-Option ausgegeben werden.
+ // Fuer Drop-Caps wird ein andewres font-size ausgegeben
+ if( rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) ||
+ rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_DROPCAP ) )
+ return rWrt;
+
+ UINT32 nHeight = ((const SvxFontHeightItem&)rHt).GetHeight();
+ if( rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT) )
+ {
+ // einen Hint nur dann ausgeben wenn es auch was bringt
+ USHORT nSize = rHTMLWrt.GetHTMLFontSize( nHeight );
+ if( rHTMLWrt.aFontHeights[nSize-1] == nHeight )
+ return rWrt;
+ }
+ ByteString sHeight( ByteString::CreateFromInt32(
+ (sal_Int32)(nHeight/20) ) );
+ sHeight.Append( sCSS1_UNIT_pt );
+
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_font_size, sHeight );
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxPosture( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const sal_Char *pStr = 0;
+ switch( ((const SvxPostureItem&)rHt).GetPosture() )
+ {
+ case ITALIC_NONE: pStr = sCSS1_PV_normal; break;
+ case ITALIC_OBLIQUE: pStr = sCSS1_PV_oblique; break;
+ case ITALIC_NORMAL:
+ if( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
+ {
+ // das geht auch in HTML und muss nicht als STYLE-Option
+ // und darf nicht als Hint geschrieben werden
+ ASSERT( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT),
+ "Italic als Hint schreiben?" );
+ pStr = sCSS1_PV_italic;
+ }
+ break;
+ }
+
+ if( pStr )
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_font_style, pStr );
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxKerning( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // Kerning-Item nur ausgeben, wenn volle Style-Untersttzung da ist
+ if( !rHTMLWrt.IsHTMLMode(HTMLMODE_FULL_STYLES) )
+ return rWrt;
+
+ INT16 nValue = ((const SvxKerningItem&)rHt).GetValue();
+ if( nValue )
+ {
+ ByteString sOut;
+ if( nValue < 0 )
+ {
+ sOut = '-';
+ nValue = -nValue;
+ }
+
+ // Breite als n.n pt
+ nValue = (nValue + 1) / 2; // 1/10pt
+ sOut.Append( ByteString::CreateFromInt32( (sal_Int32)(nValue / 10) ) );
+ sOut.Append( '.' );
+ sOut.Append( ByteString::CreateFromInt32( (sal_Int32)(nValue % 10) ) );
+ sOut.Append( sCSS1_UNIT_pt );
+
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_letter_spacing, sOut );
+ }
+ else
+ {
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_letter_spacing,
+ sCSS1_PV_normal );
+ }
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxUnderline( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ // Mit dieser Methode werden nur Hints ausgegeben!
+ // Sonst wird OutCSS1_SvxUnderl_SvxCrOut_SvxBlink() direkt aufgerufen.
+
+ if( ((SwHTMLWriter&)rWrt).IsCSS1Source(CSS1_OUTMODE_HINT) )
+ OutCSS1_SvxUnderl_SvxCrOut_SvxBlink( rWrt,
+ (const SvxUnderlineItem *)&rHt, 0, 0 );
+
+ return rWrt;
+}
+
+
+static Writer& OutCSS1_SvxFontWeight( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const sal_Char *pStr = 0;
+ switch( ((const SvxWeightItem&)rHt).GetWeight() )
+ {
+ case WEIGHT_ULTRALIGHT: pStr = sCSS1_PV_extra_light; break;
+ case WEIGHT_LIGHT: pStr = sCSS1_PV_light; break;
+ case WEIGHT_SEMILIGHT: pStr = sCSS1_PV_demi_light; break;
+ case WEIGHT_NORMAL: pStr = sCSS1_PV_medium; break;
+ case WEIGHT_SEMIBOLD: pStr = sCSS1_PV_demi_bold; break;
+ case WEIGHT_BOLD:
+ if( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
+ {
+ // das geht auch in HTML und muss nicht als STYLE-Option
+ // und darf nicht als Hint geschrieben werden
+ ASSERT( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT),
+ "Fett als Hint schreiben?" );
+ pStr = sCSS1_PV_bold;
+ }
+ break;
+ case WEIGHT_ULTRABOLD: pStr = sCSS1_PV_extra_bold; break;
+ }
+
+ if( pStr )
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_font_weight, pStr );
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxBlink( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ // Mit dieser Methode werden nur Hints ausgegeben!
+ // Sonst wird OutCSS1_SvxUnderl_SvxCrOut_SvxBlink() direkt aufgerufen.
+
+ if( ((SwHTMLWriter&)rWrt).IsCSS1Source(CSS1_OUTMODE_HINT) )
+ OutCSS1_SvxUnderl_SvxCrOut_SvxBlink( rWrt,
+ 0, 0, (const SvxBlinkItem *)&rHt );
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxLineSpacing( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // #60393#: Netscape4 hat massive Probleme mit den Zellenhoehen
+ // wenn der Zeilenabstand innerhalb einer Tabelle geaendert wird
+ // und die Breite der Tabelle nicht automatisch berechnet wird
+ // (also wenn eine WIDTH-Option vorhanden ist).
+ if( rHTMLWrt.bOutTable && rHTMLWrt.bCfgNetscape4 )
+ return rWrt;
+
+ const SvxLineSpacingItem& rLSItem = (const SvxLineSpacingItem&)rHt;
+
+ USHORT nHeight = 0;
+ USHORT nPrcHeight = 0;
+ SvxLineSpace eLineSpace = rLSItem.GetLineSpaceRule();
+ switch( rLSItem.GetInterLineSpaceRule() )
+ {
+ case SVX_INTER_LINE_SPACE_OFF:
+ case SVX_INTER_LINE_SPACE_FIX:
+ {
+ switch( eLineSpace )
+ {
+ case SVX_LINE_SPACE_MIN:
+ case SVX_LINE_SPACE_FIX:
+ nHeight = rLSItem.GetLineHeight();
+ break;
+ case SVX_LINE_SPACE_AUTO:
+ nPrcHeight = 100;
+ break;
+ }
+ }
+ break;
+ case SVX_INTER_LINE_SPACE_PROP:
+ nPrcHeight = rLSItem.GetPropLineSpace();
+ break;
+ }
+
+ if( nHeight )
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_line_height, (long)nHeight );
+ else if( nPrcHeight )
+ {
+ ByteString sHeight(
+ ByteString::CreateFromInt32( (sal_Int32)nPrcHeight ) );
+ sHeight += '%';
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_line_height, sHeight );
+ }
+
+ return rWrt;
+
+}
+
+static Writer& OutCSS1_SvxAdjust( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // Alignment in Style-Option nur ausgeben, wenn das Tag kein
+ // ALIGN=xxx zulaesst
+ if( rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) &&
+ !rHTMLWrt.bNoAlign)
+ return rWrt;
+
+ const sal_Char* pStr = 0;
+ switch( ((const SvxAdjustItem&)rHt).GetAdjust() )
+ {
+ case SVX_ADJUST_LEFT: pStr = sCSS1_PV_left; break;
+ case SVX_ADJUST_RIGHT: pStr = sCSS1_PV_right; break;
+ case SVX_ADJUST_BLOCK: pStr = sCSS1_PV_justify; break;
+ case SVX_ADJUST_CENTER: pStr = sCSS1_PV_center; break;
+ }
+
+ if( pStr )
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_text_align, pStr );
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxFmtSplit( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const sal_Char *pStr = ((const SvxFmtSplitItem&)rHt).GetValue()
+ ? sCSS1_PV_auto
+ : sCSS1_PV_avoid;
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_page_break_inside, pStr );
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SwFmtLayoutSplit( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const sal_Char *pStr = ((const SwFmtLayoutSplit&)rHt).GetValue()
+ ? sCSS1_PV_auto
+ : sCSS1_PV_avoid;
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_page_break_inside, pStr );
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxWidows( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ ByteString aStr(
+ ByteString::CreateFromInt32( ((const SvxWidowsItem&)rHt).GetValue() ) );
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_widows, aStr );
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxOrphans( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ ByteString aStr(
+ ByteString::CreateFromInt32( ((const SvxOrphansItem&)rHt).GetValue() ) );
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_orphans, aStr );
+
+ return rWrt;
+}
+
+static void OutCSS1_SwFmtDropAttrs( SwHTMLWriter& rHWrt,
+ const SwFmtDrop& rDrop )
+{
+ // Text fliesst rechts drumrum
+ rHWrt.OutCSS1_PropertyAscii( sCSS1_P_float, sCSS1_PV_left );
+
+ // Anzahl der Zeilen -> %-Angabe fuer Font-Hoehe!
+ ByteString sOut( ByteString::CreateFromInt32( rDrop.GetLines()*100 ) );
+ sOut += '%';
+ rHWrt.OutCSS1_PropertyAscii( sCSS1_P_font_size, sOut );
+
+ // Abstand zum Text = rechter Rand
+ USHORT nDistance = rDrop.GetDistance();
+ if( nDistance > 0 )
+ rHWrt.OutCSS1_UnitProperty( sCSS1_P_margin_right, nDistance );
+
+ const SwCharFmt *pDCCharFmt = rDrop.GetCharFmt();
+ if( pDCCharFmt )
+ rHWrt.OutCSS1_SfxItemSet( pDCCharFmt->GetAttrSet() );
+}
+
+static Writer& OutCSS1_SwFmtDrop( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // nie als Option eines Absatzes ausgeben, sondern nur als Hints
+ if( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT) )
+ return rWrt;
+
+ if( rHTMLWrt.bTagOn )
+ {
+ SwCSS1OutMode aMode( rHTMLWrt,
+ CSS1_OUTMODE_SPAN_TAG1_ON|CSS1_OUTMODE_ENCODE|
+ CSS1_OUTMODE_DROPCAP );
+
+ OutCSS1_SwFmtDropAttrs( rHTMLWrt, (const SwFmtDrop&)rHt );
+ // Ein "> wird schon vom aufrufenden OutCSS1_HintAsSpanTag geschrieben.
+ }
+ else
+ {
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_span, FALSE );
+ }
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SwFmtFrmSize( Writer& rWrt, const SfxPoolItem& rHt,
+ USHORT nMode )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ ByteString sOut;
+ const SwFmtFrmSize& rFSItem = (const SwFmtFrmSize&)rHt;
+
+ if( nMode & CSS1_FRMSIZE_WIDTH )
+ {
+ BYTE nPrcWidth = rFSItem.GetWidthPercent();
+ if( nPrcWidth )
+ {
+ (sOut = ByteString::CreateFromInt32( nPrcWidth) ) += '%';
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_width, sOut );
+ }
+ else if( nMode & CSS1_FRMSIZE_PIXEL )
+ {
+ rHTMLWrt.OutCSS1_PixelProperty( sCSS1_P_width,
+ rFSItem.GetSize().Width(), FALSE );
+ }
+ else
+ {
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_width,
+ rFSItem.GetSize().Width() );
+ }
+ }
+
+ if( nMode & CSS1_FRMSIZE_ANYHEIGHT )
+ {
+ BOOL bOutHeight = FALSE;
+ switch( rFSItem.GetSizeType() )
+ {
+ case ATT_FIX_SIZE:
+ bOutHeight = (nMode & CSS1_FRMSIZE_FIXHEIGHT) != 0;
+ break;
+ case ATT_MIN_SIZE:
+ bOutHeight = (nMode & CSS1_FRMSIZE_MINHEIGHT) != 0;
+ break;
+ case ATT_VAR_SIZE:
+ bOutHeight = (nMode & CSS1_FRMSIZE_VARHEIGHT) != 0;
+ break;
+ default:
+ ASSERT( bOutHeight, "Hoehe wird nicht exportiert" );
+ break;
+ }
+
+ if( bOutHeight )
+ {
+ BYTE nPrcHeight = rFSItem.GetHeightPercent();
+ if( nPrcHeight )
+ {
+ (sOut = ByteString::CreateFromInt32( nPrcHeight ) ) += '%';
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_height, sOut );
+ }
+ else if( nMode & CSS1_FRMSIZE_PIXEL )
+ {
+ rHTMLWrt.OutCSS1_PixelProperty( sCSS1_P_height,
+ rFSItem.GetSize().Width(),
+ TRUE );
+ }
+ else
+ {
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_height,
+ rFSItem.GetSize().Height() );
+ }
+ }
+ }
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxLRSpace( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const SvxLRSpaceItem& rLRItem = (const SvxLRSpaceItem&)rHt;
+
+ // Der Export der harten Attributierung ist unnoetig, wenn die
+ // neuen Werte denen der aktuellen Vorlage entsprechen
+
+ // Einen linken Rand kann es durch eine Liste bereits in der
+ // Umgebung geben
+ long nLeftMargin = (long)rLRItem.GetTxtLeft() - rHTMLWrt.nLeftMargin;
+ if( rHTMLWrt.nDfltLeftMargin != nLeftMargin )
+ {
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_margin_left, nLeftMargin );
+ }
+
+ if( rHTMLWrt.nDfltRightMargin != rLRItem.GetRight() )
+ {
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_margin_right,
+ (long)rLRItem.GetRight() );
+ }
+
+ // Der Erstzeilen-Einzug kann den Platz fuer eine Numerierung
+ // enthalten
+ long nFirstLineIndent = (long)rLRItem.GetTxtFirstLineOfst() -
+ rHTMLWrt.nFirstLineIndent;
+ if( rHTMLWrt.nDfltFirstLineIndent != nFirstLineIndent )
+ {
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_text_indent,
+ nFirstLineIndent );
+ }
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxULSpace( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const SvxULSpaceItem& rULItem = (const SvxULSpaceItem&)rHt;
+
+ if( rHTMLWrt.nDfltTopMargin != rULItem.GetUpper() )
+ {
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_margin_top,
+ (long)rULItem.GetUpper() );
+ }
+
+ if( rHTMLWrt.nDfltBottomMargin != rULItem.GetLower() )
+ {
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_margin_bottom,
+ (long)rULItem.GetLower() );
+ }
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxULSpace_SvxLRSpace( Writer& rWrt,
+ const SvxULSpaceItem *pULItem,
+ const SvxLRSpaceItem *pLRItem )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ if( pLRItem && pULItem &&
+ pLRItem->GetLeft() == pLRItem->GetRight() &&
+ pLRItem->GetLeft() == pULItem->GetUpper() &&
+ pLRItem->GetLeft() == pULItem->GetLower() &&
+ pLRItem->GetLeft() != rHTMLWrt.nDfltLeftMargin &&
+ pLRItem->GetRight() != rHTMLWrt.nDfltRightMargin &&
+ pULItem->GetUpper() != rHTMLWrt.nDfltTopMargin &&
+ pULItem->GetLower() != rHTMLWrt.nDfltBottomMargin )
+ {
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_margin, (long)pLRItem->GetLeft() );
+ }
+ else
+ {
+ if( pLRItem )
+ OutCSS1_SvxLRSpace( rWrt, *pLRItem );
+ if( pULItem )
+ OutCSS1_SvxULSpace( rWrt, *pULItem );
+ }
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxULSpace_SvxLRSpace( Writer& rWrt,
+ const SfxItemSet& rItemSet,
+ BOOL bDeep )
+{
+ const SvxULSpaceItem *pULSpace = 0;
+ const SvxLRSpaceItem *pLRSpace = 0;
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_LR_SPACE, bDeep, &pItem ) )
+ pLRSpace = (const SvxLRSpaceItem *)pItem;
+
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_UL_SPACE, bDeep, &pItem ) )
+ pULSpace = (const SvxULSpaceItem *)pItem;
+
+ if( pLRSpace || pULSpace )
+ OutCSS1_SvxULSpace_SvxLRSpace( rWrt, pULSpace, pLRSpace );
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxFmtBreak_SwFmtPDesc_SvxFmtKeep( Writer& rWrt,
+ const SvxFmtBreakItem *pBreakItem,
+ const SwFmtPageDesc *pPDescItem,
+ const SvxFmtKeepItem *pKeepItem )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ if( !rHTMLWrt.IsHTMLMode(HTMLMODE_PRINT_EXT) )
+ return rWrt;
+
+ const sal_Char *pBreakBefore = 0;
+ const sal_Char *pBreakAfter = 0;
+
+ if( pKeepItem )
+ {
+ pBreakAfter = pKeepItem->GetValue() ? sCSS1_PV_avoid : sCSS1_PV_auto;
+ }
+ if( pBreakItem )
+ {
+ switch( pBreakItem->GetBreak() )
+ {
+ case SVX_BREAK_NONE:
+ pBreakBefore = sCSS1_PV_auto;
+ if( !pBreakAfter )
+ pBreakAfter = sCSS1_PV_auto;
+ break;
+
+ case SVX_BREAK_PAGE_BEFORE:
+ pBreakBefore = sCSS1_PV_always;
+ break;
+
+ case SVX_BREAK_PAGE_AFTER:
+ pBreakAfter= sCSS1_PV_always;
+ break;
+ }
+ }
+ if( pPDescItem )
+ {
+ const SwPageDesc *pPDesc = pPDescItem->GetPageDesc();
+ if( pPDesc )
+ {
+ switch( pPDesc->GetPoolFmtId() )
+ {
+ case RES_POOLPAGE_LEFT: pBreakBefore = sCSS1_PV_left; break;
+ case RES_POOLPAGE_RIGHT: pBreakBefore = sCSS1_PV_right; break;
+ default: pBreakBefore = sCSS1_PV_always; break;
+ }
+ }
+ else if( !pBreakBefore )
+ {
+ pBreakBefore = sCSS1_PV_auto;
+ }
+ }
+
+ if( pBreakBefore )
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_page_break_before,
+ pBreakBefore );
+ if( pBreakAfter )
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_page_break_after,
+ pBreakAfter );
+
+ return rWrt;
+}
+
+static Writer& OutCSS1_SvxFmtBreak_SwFmtPDesc_SvxFmtKeep( Writer& rWrt,
+ const SfxItemSet& rItemSet,
+ BOOL bDeep )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+ const SfxPoolItem *pItem;
+ const SvxFmtBreakItem *pBreakItem = 0;
+ if( SFX_ITEM_SET==rItemSet.GetItemState( RES_BREAK, bDeep, &pItem ))
+ pBreakItem = (const SvxFmtBreakItem *)pItem;
+
+ const SwFmtPageDesc *pPDescItem = 0;
+ if( ( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) ||
+ !rHTMLWrt.bCSS1IgnoreFirstPageDesc ||
+ rHTMLWrt.pStartNdIdx->GetIndex() !=
+ rHTMLWrt.pCurPam->GetPoint()->nNode.GetIndex() ) &&
+ SFX_ITEM_SET==rItemSet.GetItemState( RES_PAGEDESC, bDeep, &pItem ))
+ pPDescItem = (const SwFmtPageDesc*)pItem;
+
+ const SvxFmtKeepItem *pKeepItem = 0;
+ if( SFX_ITEM_SET==rItemSet.GetItemState( RES_KEEP, bDeep, &pItem ))
+ pKeepItem = (const SvxFmtKeepItem *)pItem;
+
+ if( pBreakItem || pPDescItem || pKeepItem )
+ OutCSS1_SvxFmtBreak_SwFmtPDesc_SvxFmtKeep( rWrt, pBreakItem,
+ pPDescItem, pKeepItem );
+
+ return rWrt;
+}
+
+// Wrapper fuer OutCSS1_SfxItemSet etc.
+static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // Absatz-Hintergruende werden nur fuer den SW ausgegeben
+ if( rHt.Which() < RES_CHRATR_END ||
+ rHTMLWrt.IsHTMLMode(HTMLMODE_FULL_STYLES) )
+ OutCSS1_SvxBrush( rWrt, rHt, CSS1_BACKGROUND_ATTR, 0 );
+
+ return rWrt;
+}
+
+
+static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt,
+ USHORT nMode, const String *pGrfName )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // Das Zeichen-Attribut wird nicht ausgegeben, wenn gerade
+ // Optionen ausgegeben werden
+ if( rHt.Which() < RES_CHRATR_END &&
+ rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
+ return rWrt;
+
+ // Erstmal ein par Werte holen
+// const Brush &rBrush = ((const SvxBrushItem &)rHt).GetBrush();
+ const Color & rColor = ((const SvxBrushItem &)rHt).GetColor();
+ const String *pLink = pGrfName ? pGrfName
+ : ((const SvxBrushItem &)rHt).GetGraphicLink();
+ SvxGraphicPosition ePos = ((const SvxBrushItem &)rHt).GetGraphicPos();
+
+ if( CSS1_BACKGROUND_PAGE==nMode )
+ {
+ // Fuer Seitenvorlagen wurde der Grafik-Name uebergeben. Es wird
+ // nur ein Attribut ausgegeben, wenn die Grafik nicht gekachelt ist.
+ ASSERT( pLink, "Wo ist der Grafik-Name der Seitenvorlage?" );
+ if( !pLink || !pLink->Len() || GPOS_TILED==ePos )
+ return rWrt;
+ }
+
+ // Erstmal die Farbe holen
+ BOOL bColor = FALSE;
+ BOOL bTransparent = rColor.GetTransparency() > 0;
+ Color aColor;
+ if( !bTransparent )
+ {
+ aColor = rColor;
+ bColor = TRUE;
+ }
+
+ // und jetzt eine Grafik
+ String sGrfNm;
+
+ if( !pLink )
+ {
+ // embeddete Grafik -> WriteEmbedded schreiben
+ const Graphic* pGrf = ((const SvxBrushItem &)rHt).GetGraphic();
+ if( pGrf )
+ {
+ // Grafik als (JPG-)File speichern
+ const String* pTempFileName = rHTMLWrt.GetOrigFileName();
+ if(pTempFileName)
+ sGrfNm = *pTempFileName;
+ USHORT nErr = XOutBitmap::WriteGraphic( *pGrf, sGrfNm,
+ String::CreateFromAscii("JPG") );
+ if( !nErr ) // fehlerhaft, da ist nichts auszugeben
+ {
+ sGrfNm = URIHelper::SmartRelToAbs( sGrfNm );
+ if( rHTMLWrt.HasCId() )
+ rHTMLWrt.MakeCIdURL( sGrfNm );
+ pLink = &sGrfNm;
+ }
+ else
+ {
+ rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
+ }
+ }
+ }
+ else if( !pGrfName && (rHTMLWrt.bCfgCpyLinkedGrfs || rHTMLWrt.HasCId()) )
+ {
+ sGrfNm = *pLink;
+ rWrt.CopyLocalFileToINet( sGrfNm, rHTMLWrt.HasCId() );
+ if( rHTMLWrt.HasCId() )
+ rHTMLWrt.MakeCIdURL( sGrfNm );
+ pLink = &sGrfNm;
+ }
+
+ // In Tabellen wird nur dann etwas exportiert, wenn eine Grafik
+ // existiert.
+ if( CSS1_BACKGROUND_TABLE==nMode && !pLink )
+ return rWrt;
+
+ // ggf. noch die Ausrichtung der Grafik
+ const sal_Char *pRepeat = 0, *pHori = 0, *pVert = 0;
+ if( pLink )
+ {
+ if( GPOS_TILED==ePos )
+ {
+ pRepeat = sCSS1_PV_repeat;
+ }
+ else
+ {
+ switch( ePos )
+ {
+ case GPOS_LT:
+ case GPOS_MT:
+ case GPOS_RT:
+ pHori = sCSS1_PV_top;
+ break;
+
+ case GPOS_LM:
+ case GPOS_MM:
+ case GPOS_RM:
+ pHori = sCSS1_PV_middle;
+ break;
+
+ case GPOS_LB:
+ case GPOS_MB:
+ case GPOS_RB:
+ pHori = sCSS1_PV_bottom;
+ break;
+ }
+
+ switch( ePos )
+ {
+ case GPOS_LT:
+ case GPOS_LM:
+ case GPOS_LB:
+ pVert = sCSS1_PV_left;
+ break;
+
+ case GPOS_MT:
+ case GPOS_MM:
+ case GPOS_MB:
+ pVert = sCSS1_PV_center;
+ break;
+
+ case GPOS_RT:
+ case GPOS_RM:
+ case GPOS_RB:
+ pVert = sCSS1_PV_right;
+ break;
+ }
+
+ if( pHori || pVert )
+ pRepeat = sCSS1_PV_no_repeat;
+ }
+ }
+
+ // jetzt den String zusammen bauen
+ String sOut;
+ if( !pLink && !bColor )
+ {
+ // keine Farbe und kein Link, aber ein transparenter Brush
+ if( bTransparent && CSS1_BACKGROUND_FLY != nMode )
+ sOut.AssignAscii( sCSS1_PV_transparent );
+ }
+ else
+ {
+ if( bColor )
+ {
+ ByteString sTmp;
+ GetCSS1Color( aColor, sTmp );
+ sOut += String( sTmp, RTL_TEXTENCODING_ASCII_US );
+ }
+
+ if( pLink )
+ {
+ if( bColor )
+ sOut += ' ';
+
+ sOut.AppendAscii( sCSS1_url );
+ sOut.Append( '(' );
+ sOut.Append( INetURLObject::AbsToRel( *pLink,
+ INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET ));
+ sOut.Append( ')' );
+
+ if( pRepeat )
+ {
+ sOut.Append( ' ' );
+ sOut.AppendAscii( pRepeat );
+ }
+
+ if( pHori )
+ {
+ sOut.Append( ' ' );
+ sOut.AppendAscii( pHori );
+ }
+ if( pVert )
+ {
+ sOut.Append( ' ' );
+ sOut.AppendAscii( pVert );
+ }
+
+ sOut.Append( ' ' );
+ sOut.AppendAscii( sCSS1_PV_scroll );
+ }
+ }
+
+ if( sOut.Len() )
+ rHTMLWrt.OutCSS1_Property( sCSS1_P_background, sOut );
+
+ return rWrt;
+}
+
+static void OutCSS1_SvxBorderLine( SwHTMLWriter& rHTMLWrt,
+ const sal_Char *pProperty,
+ const SvxBorderLine *pLine )
+{
+ if( !pLine )
+ {
+ rHTMLWrt.OutCSS1_PropertyAscii( pProperty, sCSS1_PV_none );
+ return;
+ }
+
+ BOOL bDouble = FALSE;
+ USHORT nWidth = pLine->GetOutWidth();
+ if( pLine->GetInWidth() )
+ {
+ nWidth += pLine->GetDistance();
+ nWidth += pLine->GetInWidth();
+ bDouble = TRUE;
+ }
+
+ ByteString sOut;
+ if( Application::GetDefaultDevice() &&
+ nWidth <= Application::GetDefaultDevice()->PixelToLogic(
+ Size( 1, 1 ), MapMode( MAP_TWIP) ).Width() )
+ {
+ // Wenn die Breite kleiner ist als ein Pixel, dann als 1px
+ // ausgeben, damit Netscape und IE die Linie auch darstellen.
+ sOut += "1px";
+ }
+ else
+ {
+#ifdef USE_MAPMODE_MM100
+ nWidth = (USHORT)((double)nWidth * (25.4/72)); // 1/100pt
+#else
+ nWidth *= 5; // 1/100pt
+#endif
+
+ // Breite als n.nn pt
+ sOut += ByteString::CreateFromInt32( nWidth / 100 );
+ (((sOut += '.')
+ += ByteString::CreateFromInt32((nWidth/10) % 10))
+ += ByteString::CreateFromInt32(nWidth % 10)) += sCSS1_UNIT_pt;
+ }
+
+ // Linien-Stil: solid oder double
+ ((sOut += ' ')
+ += (bDouble ? sCSS1_PV_double : sCSS1_PV_solid)) += ' ';
+
+ // und noch die Farbe
+ GetCSS1Color( pLine->GetColor(), sOut );
+
+ rHTMLWrt.OutCSS1_PropertyAscii( pProperty, sOut );
+}
+
+static Writer& OutCSS1_SvxBox( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // Das Zeichen-Attribut wird nicht ausgegeben, wenn gerade
+ // Optionen ausgegeben werden
+ if( !rHTMLWrt.IsHTMLMode(HTMLMODE_PARA_BORDER))
+ return rWrt;
+
+ const SvxBoxItem& rBoxItem = (const SvxBoxItem&)rHt;
+ const SvxBorderLine *pTop = rBoxItem.GetTop();
+ const SvxBorderLine *pBottom = rBoxItem.GetBottom();
+ const SvxBorderLine *pLeft = rBoxItem.GetLeft();
+ const SvxBorderLine *pRight = rBoxItem.GetRight();
+
+ if( (pTop && pBottom && pLeft && pRight &&
+ *pTop == *pBottom && *pTop == *pLeft && *pTop == *pRight) ||
+ (!pTop && !pBottom && !pLeft && !pRight) )
+ {
+ // alle Linien gesetzt und gleich oder alle Linien nicht gesetzt
+ // => border : ...
+ OutCSS1_SvxBorderLine( rHTMLWrt, sCSS1_P_border, pTop );
+ }
+ else
+ {
+ // sonst alle Linien individuell ausgeben
+ OutCSS1_SvxBorderLine( rHTMLWrt, sCSS1_P_border_top, pTop );
+ OutCSS1_SvxBorderLine( rHTMLWrt, sCSS1_P_border_bottom, pBottom );
+ OutCSS1_SvxBorderLine( rHTMLWrt, sCSS1_P_border_left, pLeft );
+ OutCSS1_SvxBorderLine( rHTMLWrt, sCSS1_P_border_right, pRight );
+ }
+
+ long nTopDist = pTop ? rBoxItem.GetDistance( BOX_LINE_TOP ) : 0;
+ long nBottomDist = pBottom ? rBoxItem.GetDistance( BOX_LINE_BOTTOM ) : 0;
+ long nLeftDist = pLeft ? rBoxItem.GetDistance( BOX_LINE_LEFT ) : 0;
+ long nRightDist = pRight ? rBoxItem.GetDistance( BOX_LINE_RIGHT ) : 0;
+
+ if( nTopDist == nBottomDist && nLeftDist == nRightDist )
+ {
+ ByteString sVal;
+ AddUnitPropertyValue( nTopDist, rHTMLWrt.GetCSS1Unit(), sVal );
+ if( nTopDist != nLeftDist )
+ {
+ sVal += ' ';
+ AddUnitPropertyValue( nLeftDist, rHTMLWrt.GetCSS1Unit(), sVal );
+ }
+ rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_padding, sVal );
+ }
+ else
+ {
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_padding_top, nTopDist );
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_padding_bottom, nBottomDist );
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_padding_left, nLeftDist );
+ rHTMLWrt.OutCSS1_UnitProperty( sCSS1_P_padding_right, nRightDist );
+ }
+
+ return rWrt;
+}
+
+/*
+ * lege hier die Tabellen fuer die HTML-Funktions-Pointer auf
+ * die Ausgabe-Funktionen an.
+ * Es sind lokale Strukturen, die nur innerhalb der HTML-DLL
+ * bekannt sein muessen.
+ */
+
+
+SwAttrFnTab aCSS1AttrFnTab = {
+/* RES_CHRATR_CASEMAP */ OutCSS1_SvxCaseMap,
+/* RES_CHRATR_CHARSETCOLOR */ 0,
+/* RES_CHRATR_COLOR */ OutCSS1_SvxColor,
+/* RES_CHRATR_CONTOUR */ 0,
+/* RES_CHRATR_CROSSEDOUT */ OutCSS1_SvxCrossedOut,
+/* RES_CHRATR_ESCAPEMENT */ 0,
+/* RES_CHRATR_FONT */ OutCSS1_SvxFont,
+/* RES_CHRATR_FONTSIZE */ OutCSS1_SvxFontHeight,
+/* RES_CHRATR_KERNING */ OutCSS1_SvxKerning,
+/* RES_CHRATR_LANGUAGE */ 0,
+/* RES_CHRATR_POSTURE */ OutCSS1_SvxPosture,
+/* RES_CHRATR_PROPORTIONALFONTSIZE*/0,
+/* RES_CHRATR_SHADOWED */ 0,
+/* RES_CHRATR_UNDERLINE */ OutCSS1_SvxUnderline,
+/* RES_CHRATR_WEIGHT */ OutCSS1_SvxFontWeight,
+/* RES_CHRATR_WORDLINEMODE */ 0,
+/* RES_CHRATR_AUTOKERN */ 0,
+/* RES_CHRATR_BLINK */ OutCSS1_SvxBlink,
+/* RES_CHRATR_NOHYPHEN */ 0, // Neu: nicht trennen
+/* RES_CHRATR_NOLINEBREAK */ 0, // Neu: nicht umbrechen
+/* RES_CHRATR_BACKGROUND */ OutCSS1_SvxBrush, // Neu: Zeichenhintergrund
+/* RES_CHRATR_CJK_FONT */ 0,
+/* RES_CHRATR_CJK_FONTSIZE */ 0,
+/* RES_CHRATR_CJK_LANGUAGE */ 0,
+/* RES_CHRATR_CJK_POSTURE */ 0,
+/* RES_CHRATR_CJK_WEIGHT */ 0,
+/* RES_CHRATR_CTL_FONT */ 0,
+/* RES_CHRATR_CTL_FONTSIZE */ 0,
+/* RES_CHRATR_CTL_LANGUAGE */ 0,
+/* RES_CHRATR_CTL_POSTURE */ 0,
+/* RES_CHRATR_CTL_WEIGHT */ 0,
+/* RES_CHRATR_WRITING_DIRECTION */ 0,
+/* RES_CHRATR_DUMMY2 */ 0,
+/* RES_CHRATR_DUMMY3 */ 0,
+/* RES_CHRATR_DUMMY4 */ 0,
+/* RES_CHRATR_DUMMY5 */ 0,
+/* RES_CHRATR_DUMMY1 */ 0, // Dummy:
+
+/* RES_TXTATR_NOLINEBREAK */ 0,
+/* RES_TXTATR_NOHYPHEN */ 0,
+/* RES_TXTATR_REFMARK*/ 0,
+/* RES_TXTATR_TOXMARK */ 0,
+/* RES_TXTATR_CHARFMT */ 0,
+/* RES_TXTATR_TWO_LINES */ 0,
+/* RES_TXTATR_CJK_RUBY */ 0,
+/* RES_TXTATR_UNKNOWN_CONTAINER */ 0,
+/* RES_TXTATR_DUMMY5 */ 0,
+/* RES_TXTATR_DUMMY6 */ 0,
+
+/* RES_TXTATR_FIELD */ 0,
+/* RES_TXTATR_FLYCNT */ 0,
+/* RES_TXTATR_FTN */ 0,
+/* RES_TXTATR_SOFTHYPH */ 0,
+/* RES_TXTATR_HARDBLANK*/ 0,
+/* RES_TXTATR_DUMMY1 */ 0, // Dummy:
+/* RES_TXTATR_DUMMY2 */ 0, // Dummy:
+
+/* RES_PARATR_LINESPACING */ OutCSS1_SvxLineSpacing,
+/* RES_PARATR_ADJUST */ OutCSS1_SvxAdjust,
+/* RES_PARATR_SPLIT */ OutCSS1_SvxFmtSplit,
+/* RES_PARATR_WIDOWS */ OutCSS1_SvxWidows,
+/* RES_PARATR_ORPHANS */ OutCSS1_SvxOrphans,
+/* RES_PARATR_TABSTOP */ 0,
+/* RES_PARATR_HYPHENZONE*/ 0,
+/* RES_PARATR_DROP */ OutCSS1_SwFmtDrop,
+/* RES_PARATR_REGISTER */ 0, // neu: Registerhaltigkeit
+/* RES_PARATR_DUMMY1 */ 0, // Dummy:
+/* RES_PARATR_DUMMY2 */ 0, // Dummy:
+
+/* RES_FILL_ORDER */ 0,
+/* RES_FRM_SIZE */ 0,
+/* RES_PAPER_BIN */ 0,
+/* RES_LR_SPACE */ OutCSS1_SvxLRSpace,
+/* RES_UL_SPACE */ OutCSS1_SvxULSpace,
+/* RES_PAGEDESC */ 0,
+/* RES_BREAK */ 0,
+/* RES_CNTNT */ 0,
+/* RES_HEADER */ 0,
+/* RES_FOOTER */ 0,
+/* RES_PRINT */ 0,
+/* RES_OPAQUE */ 0,
+/* RES_PROTECT */ 0,
+/* RES_SURROUND */ 0,
+/* RES_VERT_ORIENT */ 0,
+/* RES_HORI_ORIENT */ 0,
+/* RES_ANCHOR */ 0,
+/* RES_BACKGROUND */ OutCSS1_SvxBrush,
+/* RES_BOX */ OutCSS1_SvxBox,
+/* RES_SHADOW */ 0,
+/* RES_FRMMACRO */ 0,
+/* RES_COL */ 0,
+/* RES_KEEP */ 0,
+/* RES_URL */ 0,
+/* RES_EDIT_IN_READONLY */ 0,
+/* RES_LAYOUT_SPLIT */ 0,
+/* RES_FRMATR_DUMMY1 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY2 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY3 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY4 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY5 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY6 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY7 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY8 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY9 */ 0, // Dummy:
+
+/* RES_GRFATR_MIRRORGRF */ 0,
+/* RES_GRFATR_CROPGRF */ 0,
+/* RES_GRFATR_ROTATION */ 0,
+/* RES_GRFATR_LUMINANCE */ 0,
+/* RES_GRFATR_CONTRAST */ 0,
+/* RES_GRFATR_CHANNELR */ 0,
+/* RES_GRFATR_CHANNELG */ 0,
+/* RES_GRFATR_CHANNELB */ 0,
+/* RES_GRFATR_GAMMA */ 0,
+/* RES_GRFATR_INVERT */ 0,
+/* RES_GRFATR_TRANSPARENCY */ 0,
+/* RES_GRFATR_DRWAMODE */ 0,
+/* RES_GRFATR_DUMMY1 */ 0,
+/* RES_GRFATR_DUMMY2 */ 0,
+/* RES_GRFATR_DUMMY3 */ 0,
+/* RES_GRFATR_DUMMY4 */ 0,
+/* RES_GRFATR_DUMMY5 */ 0,
+
+/* RES_BOXATR_FORMAT */ 0,
+/* RES_BOXATR_FORMULA */ 0,
+/* RES_BOXATR_VALUE */ 0
+};
+
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.110 2000/09/18 16:04:42 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.109 2000/08/30 16:46:22 jp
+ use CharClass instead of international
+
+ Revision 1.108 2000/08/18 13:03:06 jp
+ don't export escaped URLs
+
+ Revision 1.107 2000/07/31 19:24:15 jp
+ new attributes for CJK/CTL and graphic
+
+ Revision 1.106 2000/06/26 12:55:05 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.105 2000/06/26 09:51:49 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.104 2000/05/15 10:06:56 os
+ Chg: GetOrigFileName()
+
+ Revision 1.103 2000/04/28 14:29:10 mib
+ unicode
+
+ Revision 1.102 2000/04/10 12:20:54 mib
+ unicode
+
+ Revision 1.101 2000/03/03 15:21:00 os
+ StarView remainders removed
+
+ Revision 1.100 2000/02/11 14:36:48 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.99 1999/09/21 09:48:39 mib
+ multiple text encodings
+
+ Revision 1.98 1999/09/20 13:16:17 mib
+ COL_WINDOWWORKSPACE->COL-WHITE
+
+ Revision 1.97 1999/07/23 13:34:28 MIB
+ #67578#: Export multicolumned sections as <MULTICOL>, section backgrounds
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/css1kywd.cxx b/sw/source/filter/html/css1kywd.cxx
new file mode 100644
index 000000000000..7a115b661ee3
--- /dev/null
+++ b/sw/source/filter/html/css1kywd.cxx
@@ -0,0 +1,400 @@
+/*************************************************************************
+ *
+ * $RCSfile: css1kywd.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "css1kywd.hxx"
+
+/* */
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS_mimetype, "text/css" );
+
+/* */
+
+// ein par allgemeine Strings
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_import, "import" );
+
+// Feature: PrintExt
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_page, "page" );
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_media, "media" );
+// /Feature: PrintExt
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_important, "important" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_link, "link" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_visited, "visited" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_first_letter, "first-letter" );
+
+// Feature: PrintExt
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_left, "left" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_right, "right" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_first, "first" );
+// /Feature: PrintExt
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_url, "url" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_rgb, "rgb" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_UNIT_pt, "pt" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_UNIT_mm, "mm" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_UNIT_cm, "cm" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_UNIT_pc, "pc" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_UNIT_inch, "in" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_UNIT_px, "px" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_UNIT_em, "em" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_UNIT_ex, "ex" );
+
+/* */
+
+// Strings fuer Font-Properties
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_font_family, "font-family" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_serif, "serif" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_sans_serif, "sans-serif" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_cursive, "cursive" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_fantasy, "fantasy" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_monospace, "monospace" );
+
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_font_style, "font-style" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_normal, "normal" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_italic, "italic" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_oblique, "oblique" );
+
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_font_variant, "font-variant" );
+
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_normal, "normal" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_small_caps, "small-caps" );
+
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_font_weight, "font-weight" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_extra_light, "extra-light" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_light, "light" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_demi_light, "demi-light" );
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_medium, "medium" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_demi_bold, "demi-bold" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_bold, "bold" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_extra_bold, "extra-bold" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_lighter, "lighter" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_bolder, "bolder" );
+
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_font_size, "font-size" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_xx_small, "xx-small" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_x_small, "x-small" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_small, "small" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_medium, "medium" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_large, "large" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_x_large, "x-large" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_xx_large, "xx-large" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_larger, "larger" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_smaller, "smaller" );
+
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_font, "font" );
+
+
+
+/* */
+
+// Strings fuer Farb- und Hintergrund-Properties
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_color, "color" );
+
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_background, "background" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_background_color, "background-color" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_transparent, "transparent" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_repeat, "repeat" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_repeat_x, "repeat-x" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_repeat_y, "repeat-y" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_no_repeat, "no-repeat" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_top, "top" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_middle, "middle" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_bottom, "bottom" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_scroll, "scroll" );
+
+
+/* */
+
+// Strings fuer Text-Properties
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_letter_spacing, "letter-spacing" );
+
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_text_decoration, "text-decoration" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_none, "none" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_underline, "underline" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_line_through, "line-through" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_blink, "blink" );
+
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_text_align, "text-align" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_left, "left" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_center, "center" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_right, "right" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_justify, "justify" );
+
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_text_indent, "text-indent" );
+
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_line_height, "line-height" );
+
+
+/* */
+
+// Strings fuer Box-Properties
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_margin_left, "margin-left" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_margin_right, "margin-right" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_margin_top, "margin-top" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_margin_bottom, "margin-bottom" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_margin, "margin" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_padding_top, "padding-top" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_padding_bottom, "padding-bottom" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_padding_left, "padding-left" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_padding_right, "padding-right" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_padding, "padding" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_auto, "auto" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_border_left_width, "border-left-width" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_border_right_width, "border-right-width" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_border_top_width, "border-top-width" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_border_bottom_width, "border-bottom-width" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_border_width, "border-width" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_border_color, "border-color" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_border_style, "border-style" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_border_left, "border-left" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_border_right, "border-right" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_border_top, "border-top" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_border_bottom, "border-bottom" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_border, "border" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_thin, "thin" );
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_medium, "medium" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_thick, "thick" );
+
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_none, "none" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_dotted, "dotted" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_dashed, "dashed" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_solid, "solid" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_double, "double" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_groove, "groove" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_ridge, "ridge" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_inset, "inset" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_outset, "outset" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_width, "width" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_height, "height" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_float, "float" );
+
+/* */
+
+// Strings fuer Positioning
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_position, "position" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_absolute, "absolute" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_relative, "relative" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_static, "static" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_left, "left" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_top, "top" );
+
+/* */
+
+// Feature: PrintExt
+
+// Strings fuer Printing Extensions
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_page_break_before, "page-break-before" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_page_break_after, "page-break-after" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_page_break_inside, "page-break-inside" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_size, "size" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_widows, "widows" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_orphans, "orphans" );
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_P_marks, "marks" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_always, "always" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_avoid, "avoid" );
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_portrait, "portrait" );
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_landscape, "landscape" );
+
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_crop, "crop" );
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_PV_cross, "cross" );
+
+// /Feature: PrintExt
+
+sal_Char __FAR_DATA CSS1_CONSTASCII_DEF( sCSS1_class_abs_pos, "sd-abs-pos" );
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/css1kywd.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.25 2000/09/18 16:04:43 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.24 2000/04/10 12:20:55 mib
+ unicode
+
+ Revision 1.23 1999/06/11 14:44:00 MIB
+ Individuelle Umrandungs-Abstaende
+
+
+ Rev 1.22 11 Jun 1999 16:44:00 MIB
+ Individuelle Umrandungs-Abstaende
+
+ Rev 1.21 15 Apr 1999 13:44:52 MIB
+ background-color
+
+ Rev 1.20 15 Apr 1998 14:40:44 MIB
+ Zwei-seitige Printing-Extensions
+
+ Rev 1.19 03 Apr 1998 15:11:32 MIB
+ CSS1-Padding
+
+ Rev 1.18 26 Nov 1997 19:09:04 MA
+ includes
+
+ Rev 1.17 10 Oct 1997 10:14:22 MIB
+ CSS1-Printing-Ext: @page,page-break-before/after (noch kein left/right)
+
+ Rev 1.16 30 Jul 1997 12:27:18 MIB
+ absolute positioning
+
+ Rev 1.15 02 Jul 1997 17:11:28 MIB
+ neue CSS1-Border-Properties
+
+ Rev 1.14 21 May 1997 11:11:42 MIB
+ <LINK REL=STYLESHEET> zum Enbinden von externen Style-Sheets
+
+ Rev 1.13 22 Oct 1996 10:28:38 MIB
+ Umstellung von CSS1 auf Klein-Buchstaben (u.a. wegen Amaya)
+
+ Rev 1.12 15 Oct 1996 13:35:40 MIB
+ letter-spacing/Laufweite imp./exp.
+
+ Rev 1.11 14 Oct 1996 16:42:24 MIB
+ Import CSS1-Umrandung (border)
+
+ Rev 1.10 13 Oct 1996 12:12:40 MIB
+ first-letter-Pseudo-Element/DropCaps
+
+ Rev 1.9 11 Oct 1996 16:48:00 MIB
+ font-variant
+
+ Rev 1.8 24 Sep 1996 12:47:42 MIB
+ bug fix: Einheit fuer Inch ist in nicht inch
+
+ Rev 1.7 19 Aug 1996 18:04:56 MIB
+ Anpassungen an Draft vom 26.Juli 96
+
+ Rev 1.6 12 Aug 1996 10:29:56 MIB
+ Anpassungen an draft vom 26.7.96, Background-Property
+
+ Rev 1.5 07 Aug 1996 13:21:30 MIB
+ Import von color und text-decoration
+
+ Rev 1.4 10 Jul 1996 15:41:36 MIB
+ Includes fuer precompiled header gerichtet
+
+ Rev 1.3 03 Jul 1996 16:51:48 MIB
+ visited und link
+
+ Rev 1.2 18 Jun 1996 12:19:28 MIB
+ margin[-[left|right|top|bottom]]?, text-indent
+
+ Rev 1.1 17 Jun 1996 15:57:26 MIB
+ restliche Keywords fuer Font-Properties
+
+ Rev 1.0 16 Jun 1996 14:32:30 MIB
+ Initial revision.
+
+*************************************************************************/
+
+
diff --git a/sw/source/filter/html/css1kywd.hxx b/sw/source/filter/html/css1kywd.hxx
new file mode 100644
index 000000000000..3c884a56604d
--- /dev/null
+++ b/sw/source/filter/html/css1kywd.hxx
@@ -0,0 +1,320 @@
+/*************************************************************************
+ *
+ * $RCSfile: css1kywd.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _CSS1KYWD_HXX
+#define _CSS1KYWD_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef CSS1_CONSTASCII_DECL
+#define CSS1_CONSTASCII_DECL( n, s ) n[sizeof(s)]
+#endif
+#ifndef CSS1_CONSTASCII_DEF
+#define CSS1_CONSTASCII_DEF( n, s ) n[sizeof(s)] = s
+#endif
+
+/* */
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS_mimetype, "text/css" );
+
+/* */
+
+// ein par allgemeine Strings
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_import, "import" );
+
+// Feature: PrintExt
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_page, "page" );
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_media, "media" );
+// /Feature: PrintExt
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_important, "important" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_link, "link" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_visited, "visited" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_first_letter, "first-letter" );
+
+// Feature: PrintExt
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_left, "left" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_right, "right" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_first, "first" );
+// /Feature: PrintExt
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_url, "url" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_rgb, "rgb" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_UNIT_pt, "pt" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_UNIT_mm, "mm" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_UNIT_cm, "cm" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_UNIT_pc, "pc" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_UNIT_inch, "in" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_UNIT_px, "px" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_UNIT_em, "em" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_UNIT_ex, "ex" );
+
+/* */
+
+// Strings fuer Font-Properties
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_font_family, "font-family" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_serif, "serif" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_sans_serif, "sans-serif" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_cursive, "cursive" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_fantasy, "fantasy" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_monospace, "monospace" );
+
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_font_style, "font-style" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_normal, "normal" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_italic, "italic" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_oblique, "oblique" );
+
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_font_variant, "font-variant" );
+
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_normal, "normal" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_small_caps, "small-caps" );
+
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_font_weight, "font-weight" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_extra_light, "extra-light" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_light, "light" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_demi_light, "demi-light" );
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_medium, "medium" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_demi_bold, "demi-bold" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_bold, "bold" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_extra_bold, "extra-bold" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_lighter, "lighter" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_bolder, "bolder" );
+
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_font_size, "font-size" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_xx_small, "xx-small" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_x_small, "x-small" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_small, "small" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_medium, "medium" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_large, "large" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_x_large, "x-large" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_xx_large, "xx-large" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_larger, "larger" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_smaller, "smaller" );
+
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_font, "font" );
+
+
+
+/* */
+
+// Strings fuer Farb- und Hintergrund-Properties
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_color, "color" );
+
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_background, "background" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_background_color, "background-color" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_transparent, "transparent" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_repeat, "repeat" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_repeat_x, "repeat-x" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_repeat_y, "repeat-y" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_no_repeat, "no-repeat" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_top, "top" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_middle, "middle" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_bottom, "bottom" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_scroll, "scroll" );
+
+
+/* */
+
+// Strings fuer Text-Properties
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_letter_spacing, "letter-spacing" );
+
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_text_decoration, "text-decoration" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_none, "none" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_underline, "underline" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_line_through, "line-through" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_blink, "blink" );
+
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_text_align, "text-align" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_left, "left" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_center, "center" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_right, "right" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_justify, "justify" );
+
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_text_indent, "text-indent" );
+
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_line_height, "line-height" );
+
+
+/* */
+
+// Strings fuer Box-Properties
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_margin_left, "margin-left" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_margin_right, "margin-right" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_margin_top, "margin-top" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_margin_bottom, "margin-bottom" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_margin, "margin" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_padding_top, "padding-top" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_padding_bottom, "padding-bottom" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_padding_left, "padding-left" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_padding_right, "padding-right" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_padding, "padding" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_auto, "auto" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_border_left_width, "border-left-width" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_border_right_width, "border-right-width" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_border_top_width, "border-top-width" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_border_bottom_width, "border-bottom-width" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_border_width, "border-width" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_border_color, "border-color" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_border_style, "border-style" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_border_left, "border-left" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_border_right, "border-right" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_border_top, "border-top" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_border_bottom, "border-bottom" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_border, "border" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_thin, "thin" );
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_medium, "medium" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_thick, "thick" );
+
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_none, "none" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_dotted, "dotted" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_dashed, "dashed" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_solid, "solid" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_double, "double" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_groove, "groove" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_ridge, "ridge" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_inset, "inset" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_outset, "outset" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_width, "width" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_height, "height" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_float, "float" );
+
+/* */
+
+// Strings fuer Positioning
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_position, "position" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_absolute, "absolute" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_relative, "relative" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_static, "static" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_left, "left" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_top, "top" );
+
+/* */
+
+// Feature: PrintExt
+
+// Strings fuer Printing Extensions
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_page_break_before, "page-break-before" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_page_break_after, "page-break-after" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_page_break_inside, "page-break-inside" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_size, "size" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_widows, "widows" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_orphans, "orphans" );
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_P_marks, "marks" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_always, "always" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_avoid, "avoid" );
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_portrait, "portrait" );
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_landscape, "landscape" );
+
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_crop, "crop" );
+//sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_PV_cross, "cross" );
+
+// /Feature: PrintExt
+
+extern sal_Char __FAR_DATA CSS1_CONSTASCII_DECL( sCSS1_class_abs_pos, "sd-abs-pos" );
+
+
+#endif
+
+
diff --git a/sw/source/filter/html/htmlatr.cxx b/sw/source/filter/html/htmlatr.cxx
new file mode 100644
index 000000000000..1d270c8ca988
--- /dev/null
+++ b/sw/source/filter/html/htmlatr.cxx
@@ -0,0 +1,3165 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlatr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+
+#ifndef _HTMLOUT_HXX //autogen
+#include <svtools/htmlout.hxx>
+#endif
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFXMACITEM_HXX //autogen
+#include <svtools/macitem.hxx>
+#endif
+
+#ifndef _SVX_HTMLMODE_HXX
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SVX_ESCPITEM_HXX //autogen
+#include <svx/escpitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_BLNKITEM_HXX //autogen
+#include <svx/blnkitem.hxx>
+#endif
+#ifndef _SVX_CMAPITEM_HXX //autogen
+#include <svx/cmapitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_KERNITEM_HXX //autogen
+#include <svx/kernitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_LSPCITEM_HXX //autogen
+#include <svx/lspcitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+
+
+#ifndef _FCHRFMT_HXX //autogen
+#include <fchrfmt.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTFLCNT_HXX //autogen
+#include <fmtflcnt.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _FMTFTN_HXX //autogen
+#include <fmtftn.hxx>
+#endif
+#ifndef _TXATBASE_HXX //autogen
+#include <txatbase.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _CHARFMT_HXX //autogen
+#include <charfmt.hxx>
+#endif
+#ifndef _FMTHBSH_HXX //autogen
+#include <fmthbsh.hxx>
+#endif
+
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _SWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+
+#ifndef _WRTTXATR_HXX
+#include <wrttxatr.hxx>
+#endif
+#ifndef _HTMLNUM_HXX
+#include <htmlnum.hxx>
+#endif
+#ifndef _WRTHTML_HXX
+#include <wrthtml.hxx>
+#endif
+#ifndef _HTMLFLY_HXX
+#include <htmlfly.hxx>
+#endif
+
+
+/*
+ * um nicht immer wieder nach einem Update festzustellen, das irgendwelche
+ * Hint-Ids dazugekommen sind, wird hier definiert, die Groesse der Tabelle
+ * definiert und mit der akt. verglichen. Bei unterschieden wird der
+ * Compiler schon meckern.
+ *
+ * diese Section und die dazugeherigen Tabellen muessen in folgenden Files
+ * gepflegt werden: rtf\rtfatr.cxx, sw6\sw6atr.cxx, w4w\w4watr.cxx
+ */
+#if !defined(UNX) && !defined(MSC) && !defined(PPC) && !defined(CSET) && !defined(__MWERKS__) && !defined(WTC)
+
+#define ATTRFNTAB_SIZE 121
+#if ATTRFNTAB_SIZE != POOLATTR_END - POOLATTR_BEGIN
+#error Attribut-Tabelle ist ungueltigt. Wurden neue Hint-IDs zugefuegt ??
+#endif
+
+#ifdef FORMAT_TABELLE
+// da sie nicht benutzt wird!
+#define FORMATTAB_SIZE 7
+#if FORMATTAB_SIZE != RES_FMT_END - RES_FMT_BEGIN
+#error Format-Tabelle ist ungueltigt. Wurden neue Hint-IDs zugefuegt ??
+#endif
+#endif
+
+#define NODETAB_SIZE 3
+#if NODETAB_SIZE != RES_NODE_END - RES_NODE_BEGIN
+#error Node-Tabelle ist ungueltigt. Wurden neue Hint-IDs zugefuegt ??
+#endif
+
+#endif
+
+#define HTML_BULLETCHAR_DISC 34
+#define HTML_BULLETCHAR_CIRCLE 38
+#define HTML_BULLETCHAR_SQUARE 36
+
+#define COLFUZZY 20
+
+//-----------------------------------------------------------------------
+
+HTMLOutEvent __FAR_DATA aAnchorEventTable[] =
+{
+ { sHTML_O_SDonclick, sHTML_O_onclick, SFX_EVENT_MOUSECLICK_OBJECT },
+ { sHTML_O_SDonmouseover, sHTML_O_onmouseover, SFX_EVENT_MOUSEOVER_OBJECT },
+ { sHTML_O_SDonmouseout, sHTML_O_onmouseout, SFX_EVENT_MOUSEOUT_OBJECT },
+ { 0, 0, 0 }
+};
+
+static Writer& OutHTML_SvxAdjust( Writer& rWrt, const SfxPoolItem& rHt );
+
+static Writer& OutHTML_HoriSpacer( Writer& rWrt, INT16 nSize )
+{
+ ASSERT( nSize>0, "horizontaler SPACER mit negativem Wert?" )
+ if( nSize <= 0 )
+ return rWrt;
+
+ if( Application::GetDefaultDevice() )
+ {
+ nSize = (INT16)Application::GetDefaultDevice()
+ ->LogicToPixel( Size(nSize,0), MapMode(MAP_TWIP) ).Width();
+ }
+
+ ByteString sOut( '<' );
+ (((((((((sOut += sHTML_spacer)
+ += ' ') += sHTML_O_type) += '=') += sHTML_SPTYPE_horizontal)
+ += ' ') += sHTML_O_size) += '=')
+ +=ByteString::CreateFromInt32(nSize)) += '>';
+
+ rWrt.Strm() << sOut.GetBuffer();
+
+ return rWrt;
+}
+
+USHORT SwHTMLWriter::GetDefListLvl( const String& rNm, USHORT nPoolId )
+{
+ if( nPoolId == RES_POOLCOLL_HTML_DD )
+ {
+ return 1 | HTML_DLCOLL_DD;
+ }
+ else if( nPoolId == RES_POOLCOLL_HTML_DT )
+ {
+ return 1 | HTML_DLCOLL_DT;
+ }
+
+ String sDTDD( String::CreateFromAscii(sHTML_dt) );
+ sDTDD += ' ';
+ if( COMPARE_EQUAL == sDTDD.CompareTo( rNm, sDTDD.Len() ) )
+ // DefinitionList - term
+ return (USHORT)rNm.Copy( sDTDD.Len() ).ToInt32() | HTML_DLCOLL_DT;
+
+ sDTDD.AssignAscii( sHTML_dd );
+ sDTDD += ' ';
+ if( COMPARE_EQUAL == sDTDD.CompareTo( rNm, sDTDD.Len() ) )
+ // DefinitionList - definition
+ return (USHORT)rNm.Copy( sDTDD.Len() ).ToInt32() | HTML_DLCOLL_DD;
+
+ return 0;
+}
+
+void SwHTMLWriter::OutAndSetDefList( USHORT nNewLvl )
+{
+ // eventuell muss erst mal eine Liste aufgemacht werden
+ if( nDefListLvl < nNewLvl )
+ {
+ // entsprechend dem Level-Unterschied schreiben!
+ for( USHORT i=nDefListLvl; i<nNewLvl; i++ )
+ {
+ if( bLFPossible )
+ OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_deflist, TRUE );
+ IncIndentLevel();
+ bLFPossible = TRUE;
+ }
+ }
+ else if( nDefListLvl > nNewLvl )
+ {
+ for( USHORT i=nNewLvl ; i < nDefListLvl; i++ )
+ {
+ DecIndentLevel();
+ if( bLFPossible )
+ OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_deflist, FALSE );
+ bLFPossible = TRUE;
+ }
+ }
+
+ nDefListLvl = nNewLvl;
+}
+
+
+void SwHTMLWriter::ChangeParaToken( USHORT nNew )
+{
+ if( nNew != nLastParaToken && HTML_PREFORMTXT_ON == nLastParaToken )
+ {
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_preformtxt, FALSE );
+ bLFPossible = TRUE;
+ }
+ nLastParaToken = nNew;
+}
+
+// fuer die Formate muesste eine einzige Ausgabe-Funktion genuegen !
+/*
+ * Formate wie folgt ausgeben:
+ * - fuer Formate, fuer die es entsprechende HTML-Tags gibt wird das
+ * Tag ausgegeben
+ * - fuer alle anderen wird ein Absatz-Tag <P> ausgegeben und bUserFmt
+ * gesetzt
+ * - Wenn eine Absatz-Ausrichtung am uebergebenen Item-Set des Nodes
+ * oder im Item-Set des Format gesetzt ist, wird ein ALIGN=xxx ausgegeben,
+ * sofern HTML es zulaesst
+ * - in jedem Fall wird harte Attributierung als STYLE-Option geschrieben.
+ * Wenn bUserFmt nicht gesetzt ist, wird nur der uebergebene Item-Set
+ * betrachtet. Sonst werden auch Attribute des Formats ausgegeben.
+ */
+
+struct SwHTMLTxtCollOutputInfo
+{
+ ByteString aToken; // auszugendens End-Token
+ SfxItemSet *pItemSet; // harte Attributierung
+
+ BOOL bInNumBulList; // in einer Aufzaehlungs-Liste;
+ BOOL bParaPossible; // ein </P> darf zusaetzlich ausgegeben werden
+ BOOL bOutPara; // ein </P> soll ausgegeben werden
+ BOOL bOutDiv; // write a </DIV>
+
+ SwHTMLTxtCollOutputInfo() :
+ pItemSet( 0 ),
+ bInNumBulList( FALSE ),
+ bParaPossible( FALSE ),
+ bOutPara( FALSE ),
+ bOutDiv( FALSE )
+ {}
+
+ ~SwHTMLTxtCollOutputInfo();
+
+ BOOL HasParaToken() const { return aToken.Len()==1 && aToken.GetChar(0)=='P'; }
+ BOOL ShouldOutputToken() const { return bOutPara || !HasParaToken(); }
+};
+
+SwHTMLTxtCollOutputInfo::~SwHTMLTxtCollOutputInfo()
+{
+ delete pItemSet;
+}
+
+struct SwHTMLFmtInfo
+{
+ const SwFmt *pFmt; // das Format selbst
+ const SwFmt *pRefFmt; // das Vergleichs-Format
+
+ ByteString aToken; // das auszugebende Token
+ String aClass; // die auszugebende Klasse
+
+ SfxItemSet *pItemSet; // der auszugebende Attribut-Set
+
+ USHORT nLeftMargin; // ein par default-Werte fuer
+ USHORT nRightMargin; // Absatz-Vorlagen
+ short nFirstLineIndent;
+
+ USHORT nTopMargin;
+ USHORT nBottomMargin;
+
+ // Konstruktor fuer einen Dummy zum Suchen
+ SwHTMLFmtInfo( const SwFmt *pF ) :
+ pFmt( pF ), pItemSet( 0 )
+ {}
+
+
+ // Konstruktor zum Erstellen der Format-Info
+ SwHTMLFmtInfo( const SwFmt *pFmt, SwDoc *pDoc, SwDoc *pTemlate,
+ BOOL bOutStyles, BOOL bHardDrop=FALSE );
+ ~SwHTMLFmtInfo();
+
+ friend BOOL operator==( const SwHTMLFmtInfo& rInfo1,
+ const SwHTMLFmtInfo& rInfo2 )
+ {
+ return (long)rInfo1.pFmt == (long)rInfo2.pFmt;
+ }
+
+ friend BOOL operator<( const SwHTMLFmtInfo& rInfo1,
+ const SwHTMLFmtInfo& rInfo2 )
+ {
+ return (long)rInfo1.pFmt < (long)rInfo2.pFmt;
+ }
+
+};
+
+SV_IMPL_OP_PTRARR_SORT( SwHTMLFmtInfos, SwHTMLFmtInfo* )
+
+SwHTMLFmtInfo::SwHTMLFmtInfo( const SwFmt *pF, SwDoc *pDoc, SwDoc *pTemplate,
+ BOOL bOutStyles, BOOL bHardDrop ) :
+ pFmt( pF ), pItemSet( 0 )
+{
+ USHORT nRefPoolId = 0;
+ // Den Selektor des Formats holen
+ USHORT nDeep = SwHTMLWriter::GetCSS1Selector( pFmt, aToken, aClass,
+ nRefPoolId );
+ ASSERT( nDeep ? aToken.Len()>0 : aToken.Len()==0,
+ "Hier stimmt doch was mit dem Token nicht!" );
+ ASSERT( nDeep ? nRefPoolId : !nRefPoolId,
+ "Hier stimmt doch was mit der Vergleichs-Vorlage nicht!" );
+
+ BOOL bTxtColl = pFmt->Which() == RES_TXTFMTCOLL ||
+ pFmt->Which() == RES_CONDTXTFMTCOLL;
+
+ const SwFmt *pRefFmt = 0; // Vergleichs-Format
+ if( nDeep != 0 )
+ {
+ // Es ist eine HTML-Tag-Vorlage oder die Vorlage ist von einer
+ // solchen abgeleitet
+ if( !bOutStyles )
+ {
+ // wenn keine Styles exportiert werden, muss evtl. zusaetlich
+ // harte Attributierung geschrieben werden
+ switch( nDeep )
+ {
+ case CSS1_FMT_ISTAG:
+ case CSS1_FMT_CMPREF:
+ // fuer HTML-Tag-Vorlagen die Unterscheide zum Original
+ // (sofern verfuegbar)
+ if( pTemplate )
+ pRefFmt = SwHTMLWriter::GetTemplateFmt( nRefPoolId,
+ pTemplate );
+ break;
+
+ default:
+ // sonst die zur HTML-Tag-Vorlage des Originals oder des
+ // aktuellen Doks, wenn die nicht verfuegbar ist
+ if( pTemplate )
+ pRefFmt = SwHTMLWriter::GetTemplateFmt( nRefPoolId,
+ pTemplate );
+ else
+ pRefFmt = SwHTMLWriter::GetParentFmt( *pFmt, nDeep );
+ break;
+ }
+ }
+ }
+ else if( bTxtColl )
+ {
+ // Nicht von einer HTML-Tag-Vorlage abgeleitete Absatz-Vorlagen
+ // muessen als harte Attributierung relativ zur Textkoerper-Volage
+ // exportiert werden. Fuer Nicht-Styles-Export sollte die der
+ // HTML-Vorlage als Referenz dienen
+ if( !bOutStyles && pTemplate )
+ pRefFmt = pTemplate->GetTxtCollFromPool( RES_POOLCOLL_TEXT );
+ else
+ pRefFmt = pDoc->GetTxtCollFromPool( RES_POOLCOLL_TEXT );
+ }
+
+ if( pRefFmt || nDeep==0 )
+ {
+ // wenn Unterschiede zu einer anderen Vorlage geschrieben werden
+ // sollen ist harte Attributierung noetig. Fuer Vorlagen, die
+ // nicht von HTML-Tag-Vorlagen abgeleitet sind, gilt das immer
+ pItemSet = new SfxItemSet( *pFmt->GetAttrSet().GetPool(),
+ pFmt->GetAttrSet().GetRanges() );
+
+ pItemSet->Set( pFmt->GetAttrSet(), TRUE );
+ if( pRefFmt )
+ SwHTMLWriter::SubtractItemSet( *pItemSet, pRefFmt->GetAttrSet(), TRUE );
+
+ // einen leeren Item-Set gleich loeschen, das spart speater
+ // Arbeit
+ if( !pItemSet->Count() )
+ {
+ delete pItemSet;
+ pItemSet = 0;
+ }
+ }
+
+ if( bTxtColl )
+ {
+ // Ggf. noch ein DropCap-Attribut uebernehmen
+ if( bOutStyles && bHardDrop && nDeep != 0 )
+ {
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET==pFmt->GetAttrSet().GetItemState(
+ RES_PARATR_DROP, TRUE, &pItem ) )
+ {
+ BOOL bPut = TRUE;
+ if( pTemplate )
+ {
+ pRefFmt = SwHTMLWriter::GetTemplateFmt( nRefPoolId, pTemplate );
+ const SfxPoolItem *pRefItem;
+ BOOL bRefItemSet =
+ SFX_ITEM_SET==pRefFmt->GetAttrSet().GetItemState(
+ RES_PARATR_DROP, TRUE, &pRefItem );
+ bPut = !bRefItemSet || *pItem!=*pRefItem;
+ }
+ if( bPut )
+ {
+ ASSERT( !pItemSet, "Wo kommt der ItemSet her?" );
+ pItemSet = new SfxItemSet( *pFmt->GetAttrSet().GetPool(),
+ pFmt->GetAttrSet().GetRanges() );
+ pItemSet->Put( *pItem );
+ }
+ }
+ }
+
+
+ // Die diversen default-Abstaende aus der Vorlage oder der
+ // Vergleischs-Vorlage merken
+ const SvxLRSpaceItem &rLRSpace =
+ (pRefFmt ? pRefFmt : pFmt)->GetLRSpace();
+ nLeftMargin = rLRSpace.GetTxtLeft();
+ nRightMargin = rLRSpace.GetRight();
+ nFirstLineIndent = rLRSpace.GetTxtFirstLineOfst();
+
+ const SvxULSpaceItem &rULSpace =
+ (pRefFmt ? pRefFmt : pFmt)->GetULSpace();
+ nTopMargin = rULSpace.GetUpper();
+ nBottomMargin = rULSpace.GetLower();
+ }
+}
+
+SwHTMLFmtInfo::~SwHTMLFmtInfo()
+{
+ delete pItemSet;
+}
+
+void OutHTML_SwFmt( Writer& rWrt, const SwFmt& rFmt,
+ const SfxItemSet *pNodeItemSet,
+ SwHTMLTxtCollOutputInfo& rInfo )
+{
+ ASSERT( RES_CONDTXTFMTCOLL==rFmt.Which() || RES_TXTFMTCOLL==rFmt.Which(),
+ "keine Absatz-Vorlage" );
+
+ SwHTMLWriter & rHWrt = (SwHTMLWriter&)rWrt;
+
+ // Erstmal ein par Flags ...
+ USHORT nNewDefListLvl = 0;
+ USHORT nNumStart = USHRT_MAX;
+ BOOL bForceDL = FALSE;
+ BOOL bDT = FALSE;
+ rInfo.bInNumBulList = FALSE; // Wir sind in einer Liste?
+ BOOL bNumbered = FALSE; // Der aktuelle Absatz ist numeriert
+ BOOL bPara = FALSE; // das aktuelle Token ist <P>
+ rInfo.bParaPossible = FALSE; // ein <P> darf zusaetzlich ausgegeben werden
+ BOOL bNoEndTag = FALSE; // kein End-Tag ausgeben
+
+ rHWrt.bNoAlign = FALSE; // kein ALIGN=... moeglich
+ BOOL bNoStyle = FALSE; // kein STYLE=... moeglich
+ BYTE nBulletGrfLvl = 255; // Die auszugebende Bullet-Grafik
+
+ // Sind wir in einer Aufzaehlungs- oder Numerierungliste?
+ const SwTxtNode* pTxtNd = rWrt.pCurPam->GetNode()->GetTxtNode();
+ ULONG nPos = pTxtNd->GetIndex();
+
+ SwHTMLNumRuleInfo aNumInfo;
+ if( rHWrt.GetNextNumInfo() )
+ {
+ aNumInfo = *rHWrt.GetNextNumInfo();
+ rHWrt.ClearNextNumInfo();
+ }
+ else
+ {
+ aNumInfo.Set( *pTxtNd );
+ }
+
+ if( aNumInfo.GetNumRule() )
+ {
+ rInfo.bInNumBulList = TRUE;
+ nNewDefListLvl = 0;
+
+ // ist der aktuelle Absatz numeriert?
+ bNumbered = aNumInfo.IsNumbered();
+ BYTE nLvl = aNumInfo.GetLevel();
+
+ const SwNodeNum& rAktNum = *pTxtNd->GetNum();
+ ASSERT( GetRealLevel( rAktNum.GetLevel() ) == nLvl,
+ "Gemerkter Num-Level ist falsch" );
+ ASSERT( bNumbered == ((rAktNum.GetLevel() & NO_NUMLEVEL) == 0),
+ "Gemerkter Numerierungs-Zustand ist falsch" );
+
+ if( bNumbered )
+ {
+ nBulletGrfLvl = nLvl; // nur veruebergehend!!!
+ nNumStart = rAktNum.GetSetValue();
+ DBG_ASSERT( rHWrt.nLastParaToken == 0,
+ "<PRE> wurde nicht vor <LI> beendet." );
+ }
+
+#ifndef NUM_RELSPACE
+ // die Absatz-Abstaende/Einzuege muessen beruecksichtigen,
+ // dass wir in einer Liste sind
+ rHWrt.nLeftMargin = (nLvl+1) * HTML_NUMBUL_MARGINLEFT;
+
+ rHWrt.nFirstLineIndent = bNumbered ? HTML_NUMBUL_INDENT : 0;
+#endif
+ }
+
+ // Jetzt holen wir das Token und ggf. die Klasse
+ SwHTMLFmtInfo aFmtInfo( &rFmt );
+ USHORT nArrayPos;
+ const SwHTMLFmtInfo *pFmtInfo;
+ if( rHWrt.aTxtCollInfos.Seek_Entry( &aFmtInfo, &nArrayPos ) )
+ {
+ pFmtInfo = rHWrt.aTxtCollInfos[nArrayPos];
+ }
+ else
+ {
+ pFmtInfo = new SwHTMLFmtInfo( &rFmt, rWrt.pDoc, rHWrt.pTemplate,
+ rHWrt.bCfgOutStyles,
+ !rHWrt.IsHTMLMode(HTMLMODE_DROPCAPS) );
+ rHWrt.aTxtCollInfos.C40_PTR_INSERT( SwHTMLFmtInfo, pFmtInfo );
+ }
+
+ // Jetzt wird festgelegt, was aufgrund des Tokens so moeglich ist
+ USHORT nToken = 0; // Token fuer Tag-Wechsel
+ BOOL bOutNewLine = FALSE; // nur ein LF ausgeben?
+ if( pFmtInfo->aToken.Len() )
+ {
+ // Es ist eine HTML-Tag-Vorlage oder die Vorlage ist von einer
+ // solchen abgeleitet
+ rInfo.aToken = pFmtInfo->aToken;
+
+ // der erste Buchstabe reicht meistens
+ switch( rInfo.aToken.GetChar( 0 ) )
+ {
+ case 'A': ASSERT( rInfo.aToken.Equals(sHTML_address),
+ "Doch kein ADDRESS?" );
+ rInfo.bParaPossible = TRUE;
+ rHWrt.bNoAlign = TRUE;
+ break;
+
+ case 'B': ASSERT( rInfo.aToken.Equals(sHTML_blockquote),
+ "Doch kein BLOCKQUOTE?" );
+ rInfo.bParaPossible = TRUE;
+ rHWrt.bNoAlign = TRUE;
+ break;
+
+ case 'P': if( rInfo.aToken.Len() == 1 )
+ {
+ bPara = TRUE;
+ }
+ else
+ {
+ ASSERT( rInfo.aToken.Equals(sHTML_preformtxt),
+ "Doch kein PRE?" );
+ if( HTML_PREFORMTXT_ON == rHWrt.nLastParaToken )
+ {
+ bOutNewLine = TRUE;
+ }
+ else
+ {
+ nToken = HTML_PREFORMTXT_ON;
+ rHWrt.bNoAlign = TRUE;
+ bNoEndTag = TRUE;
+ }
+ }
+ break;
+
+ case 'D': ASSERT( rInfo.aToken.Equals(sHTML_dt) ||
+ rInfo.aToken.Equals(sHTML_dd),
+ "Doch kein DD/DT?" );
+ bDT = rInfo.aToken.Equals(sHTML_dt);
+ rInfo.bParaPossible = !bDT;
+ rHWrt.bNoAlign = TRUE;
+ bForceDL = TRUE;
+ break;
+ }
+ }
+ else
+ {
+ // alle Vorlagen, die nicht einem HTML-Tag entsprechen oder von
+ // diesem abgeleitet sind, werden als <P> exportiert
+
+ rInfo.aToken = sHTML_parabreak;
+ bPara = TRUE;
+ }
+
+ // Falls noetig, die harte Attributierung der Vorlage uebernehmen
+ if( pFmtInfo->pItemSet )
+ {
+ ASSERT( !rInfo.pItemSet, "Wo kommt der Item-Set her?" );
+ rInfo.pItemSet = new SfxItemSet( *pFmtInfo->pItemSet );
+ }
+
+ // und noch die harte Attributierung des Absatzes dazunehmen
+ if( pNodeItemSet )
+ {
+ if( rInfo.pItemSet )
+ rInfo.pItemSet->Put( *pNodeItemSet );
+ else
+ rInfo.pItemSet = new SfxItemSet( *pNodeItemSet );
+ }
+
+ // den unteren Absatz-Abstand brauchen wir noch
+ const SvxULSpaceItem& rULSpace =
+ pNodeItemSet ? ((const SvxULSpaceItem &)pNodeItemSet->Get(RES_UL_SPACE))
+ : rFmt.GetULSpace();
+
+ if( (rHWrt.bOutHeader &&
+ rWrt.pCurPam->GetPoint()->nNode.GetIndex() ==
+ rWrt.pCurPam->GetMark()->nNode.GetIndex()) ||
+ rHWrt.bOutFooter )
+ {
+ if( rHWrt.bCfgOutStyles )
+ {
+ SvxULSpaceItem aULSpaceItem( rULSpace );
+ if( rHWrt.bOutHeader )
+ aULSpaceItem.SetLower( rHWrt.nHeaderFooterSpace );
+ else
+ aULSpaceItem.SetUpper( rHWrt.nHeaderFooterSpace );
+
+ if( !rInfo.pItemSet )
+ rInfo.pItemSet = new SfxItemSet(
+ *rFmt.GetAttrSet().GetPool(),
+ RES_UL_SPACE, RES_UL_SPACE );
+ rInfo.pItemSet->Put( aULSpaceItem );
+ }
+ rHWrt.bOutHeader = FALSE;
+ rHWrt.bOutFooter = FALSE;
+ }
+
+ if( bOutNewLine )
+ {
+ // nur einen Zeilen-Umbruch (ohne Einrueckung) am Absatz-Anfang
+ // ausgeben
+ rInfo.aToken.Erase(); // kein End-Tag ausgeben
+ rWrt.Strm() << SwHTMLWriter::sNewLine;
+
+ return;
+ }
+
+
+ // soll ein ALIGN=... geschrieben werden?
+ const SfxPoolItem* pAdjItem = 0;
+ const SfxPoolItem* pItem;
+
+ if( rInfo.pItemSet &&
+ SFX_ITEM_SET == rInfo.pItemSet->GetItemState( RES_PARATR_ADJUST,
+ FALSE, &pItem ) )
+ {
+ pAdjItem = pItem;
+ }
+
+ // Unteren Absatz-Abstand beachten ? (nie im letzen Absatz von
+ // Tabellen)
+ BOOL bUseParSpace = !rHWrt.bOutTable ||
+ (rWrt.pCurPam->GetPoint()->nNode.GetIndex() !=
+ rWrt.pCurPam->GetMark()->nNode.GetIndex());
+ // Wenn Styles exportiert werden, wird aus eingerueckten Absaetzen
+ // eine Definitions-Liste
+ const SvxLRSpaceItem& rLRSpace =
+ pNodeItemSet ? ((const SvxLRSpaceItem &)pNodeItemSet->Get(RES_LR_SPACE))
+ : rFmt.GetLRSpace();
+ if( (!rHWrt.bCfgOutStyles || bForceDL) && !rInfo.bInNumBulList )
+ {
+ USHORT nLeftMargin;
+ if( bForceDL )
+ nLeftMargin = rLRSpace.GetTxtLeft();
+ else
+ nLeftMargin = rLRSpace.GetTxtLeft() > pFmtInfo->nLeftMargin
+ ? rLRSpace.GetTxtLeft() - pFmtInfo->nLeftMargin
+ : 0;
+
+ nNewDefListLvl = (nLeftMargin + (rHWrt.nDefListMargin/2)) /
+ rHWrt.nDefListMargin;
+
+ BOOL bIsNextTxtNode =
+ rWrt.pDoc->GetNodes()[rWrt.pCurPam->GetPoint()->nNode.GetIndex()+1]
+ ->IsTxtNode();
+
+ if( bForceDL && bDT )
+ {
+ // Statt eines DD muessen wir hier auch ein DT der Ebene
+ // darueber nehmen
+ nNewDefListLvl++;
+ }
+ else if( !nNewDefListLvl && !rHWrt.bCfgOutStyles && bPara &&
+ rULSpace.GetLower()==0 &&
+ ((bUseParSpace && bIsNextTxtNode) || rHWrt.nDefListLvl==1) &&
+ (!pAdjItem || SVX_ADJUST_LEFT==
+ ((const SvxAdjustItem *)pAdjItem)->GetAdjust()) )
+ {
+ // Absaetze ohne unteren Abstand als DT exportieren
+ nNewDefListLvl = 1;
+ bDT = TRUE;
+ rInfo.bParaPossible = FALSE;
+ rHWrt.bNoAlign = TRUE;
+ }
+ }
+
+ if( nNewDefListLvl != rHWrt.nDefListLvl )
+ rHWrt.OutAndSetDefList( nNewDefListLvl );
+
+ // ggf. eine Aufzaehlung- oder Numerierungsliste beginnen
+ if( rInfo.bInNumBulList )
+ {
+ ASSERT( !rHWrt.nDefListLvl, "DL in OL geht nicht!" );
+ OutHTML_NumBulListStart( rHWrt, aNumInfo );
+
+ if( bNumbered )
+ {
+ if( rHWrt.aBulletGrfs[nBulletGrfLvl].Len() )
+ bNumbered = FALSE;
+ else
+ nBulletGrfLvl = 255;
+ }
+
+#ifndef NUM_RELSPACE
+ // Wenn der Ziel-Browser mit horizontalen Absatz-Abstaenden in
+ // Listen nicht zurechtkommt, loeschen wir das Item.
+ if( !rHWrt.IsHTMLMode( HTMLMODE_LRSPACE_IN_NUMBUL ) &&
+ rInfo.pItemSet )
+ {
+ rInfo.pItemSet->ClearItem( RES_LR_SPACE );
+ }
+#endif
+ }
+
+ // Die Defaults aus der Vorlage merken, denn sie muessen nicht
+ // exportiert werden
+ rHWrt.nDfltLeftMargin = pFmtInfo->nLeftMargin;
+ rHWrt.nDfltRightMargin = pFmtInfo->nRightMargin;
+ rHWrt.nDfltFirstLineIndent = pFmtInfo->nFirstLineIndent;
+
+#ifdef NUM_RELSPACE
+ if( rInfo.bInNumBulList )
+ {
+ if( !rHWrt.IsHTMLMode( HTMLMODE_LSPACE_IN_NUMBUL ) )
+ rHWrt.nDfltLeftMargin = rLRSpace.GetTxtLeft();
+
+ // In Numerierungs-Listen keinen Ertzeilen-Einzug ausgeben.
+ rHWrt.nFirstLineIndent = rLRSpace.GetTxtFirstLineOfst();
+ }
+#endif
+
+ if( rInfo.bInNumBulList && bNumbered && bPara && !rHWrt.bCfgOutStyles )
+ {
+ // ein einzelnes LI hat keinen Abstand
+ rHWrt.nDfltTopMargin = 0;
+ rHWrt.nDfltBottomMargin = 0;
+ }
+ else if( rHWrt.nDefListLvl && bPara )
+ {
+ // ein einzelnes DD hat auch keinen Abstand
+ rHWrt.nDfltTopMargin = 0;
+ rHWrt.nDfltBottomMargin = 0;
+ }
+ else
+ {
+ rHWrt.nDfltTopMargin = pFmtInfo->nTopMargin;
+ // #60393#: Wenn im letzten Absatz einer Tabelle der
+ // untere Absatz-Abstand veraendert wird, vertut sich
+ // Netscape total. Deshalb exportieren wir hier erstmal
+ // nichts, indem wir den Abstand aus dem Absatz als Default
+ // setzen.
+ if( rHWrt.bCfgNetscape4 && !bUseParSpace )
+ rHWrt.nDfltBottomMargin = rULSpace.GetLower();
+ else
+ rHWrt.nDfltBottomMargin = pFmtInfo->nBottomMargin;
+ }
+
+ if( rHWrt.nDefListLvl )
+ {
+ rHWrt.nLeftMargin =
+ (rHWrt.nDefListLvl-1) * rHWrt.nDefListMargin;
+ }
+
+ if( rHWrt.bLFPossible )
+ rHWrt.OutNewLine(); // Absatz-Tag in neue Zeile
+ rInfo.bOutPara = FALSE;
+
+ // das ist jetzt unser neues Token
+ rHWrt.ChangeParaToken( nToken );
+
+ BOOL bHasParSpace = bUseParSpace && rULSpace.GetLower() > 0;
+
+ // ggf ein List-Item aufmachen
+ if( rInfo.bInNumBulList && bNumbered )
+ {
+ ByteString sOut( '<' );
+ sOut += sHTML_li;
+ if( USHRT_MAX != nNumStart )
+ (((sOut += ' ') += sHTML_O_value) += '=')
+ += ByteString::CreateFromInt32(nNumStart);
+ sOut += '>';
+ rWrt.Strm() << sOut.GetBuffer();
+ }
+
+ if( rHWrt.nDefListLvl > 0 && !bForceDL )
+ {
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), bDT ? sHTML_dt : sHTML_dd );
+ }
+
+ if( pAdjItem &&
+ rHWrt.IsHTMLMode( HTMLMODE_NO_CONTROL_CENTERING ) &&
+ rHWrt.HasControls() )
+ {
+ // #64687#: The align=... attribute does behave strange in netscape
+ // if there are controls in a paragraph, because the control and
+ // all text behind the control does not recognize this attribute.
+ ByteString sOut( '<' );
+ sOut += sHTML_division;
+ rWrt.Strm() << sOut.GetBuffer();
+
+ rHWrt.bTxtAttr = FALSE;
+ rHWrt.bOutOpts = TRUE;
+ OutHTML_SvxAdjust( rWrt, *pAdjItem );
+ rWrt.Strm() << '>';
+ pAdjItem = 0;
+ rHWrt.bNoAlign = FALSE;
+ rInfo.bOutDiv = TRUE;
+ rHWrt.IncIndentLevel();
+ rHWrt.bLFPossible = TRUE;
+ rHWrt.OutNewLine();
+ }
+
+ // fuer BLOCKQUOTE, ADDRESS und DD wird noch ein Absatz-Token
+ // ausgegeben, wenn,
+ // - keine Styles geschrieben werden, und
+ // - ein untere Abstand oder eine Absatz-Ausrichtung existiert
+ ByteString aToken = rInfo.aToken;
+ if( !rHWrt.bCfgOutStyles && rInfo.bParaPossible && !bPara &&
+ (bHasParSpace || pAdjItem) )
+ {
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), rInfo.aToken.GetBuffer() );
+ aToken = sHTML_parabreak;
+ bPara = TRUE;
+ rHWrt.bNoAlign = FALSE;
+ bNoStyle = FALSE;
+ }
+
+ // Ein <P> wird nur geschrieben, wenn
+ // - wir in keiner OL/UL/DL sind, oder
+ // - der Absatz einer OL/UL nicht numeriert ist, oder
+ // - keine Styles exportiert werden und
+ // - ein unterer Abstand oder
+ // - eine Absatz-Ausrichtung existiert, ode
+ // - Styles exportiert werden und,
+ // - die Textkoerper-Vorlage geaendert wurde, oder
+ // - ein Benutzer-Format exportiert wird, oder
+ // - Absatz-Attribute existieren
+ if( !bPara ||
+ (!rInfo.bInNumBulList && !rHWrt.nDefListLvl) ||
+ (rInfo.bInNumBulList && !bNumbered) ||
+ (!rHWrt.bCfgOutStyles && (bHasParSpace || pAdjItem)) ||
+ (rHWrt.bCfgOutStyles /*&& rHWrt.bPoolCollTextModified*/) )
+ {
+ // jetzt werden Optionen ausgegeben
+ rHWrt.bTxtAttr = FALSE;
+ rHWrt.bOutOpts = TRUE;
+
+ ByteString sOut( '<' );
+ sOut += aToken;
+
+ if( rHWrt.bCfgOutStyles && pFmtInfo->aClass.Len() )
+ {
+ ((sOut += ' ') += sHTML_O_class) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), pFmtInfo->aClass,
+ rHWrt.eDestEnc );
+ sOut = '\"';
+ }
+ rWrt.Strm() << sOut.GetBuffer();
+
+ // ggf. Ausrichtung ausgeben.
+ if( !rHWrt.bNoAlign && pAdjItem )
+ OutHTML_SvxAdjust( rWrt, *pAdjItem );
+
+ // und nun ggf. noch die STYLE-Option
+ if( rHWrt.bCfgOutStyles && rInfo.pItemSet && !bNoStyle)
+ {
+ OutCSS1_ParaTagStyleOpt( rWrt, *rInfo.pItemSet );
+ }
+
+ rWrt.Strm() << '>';
+
+ // Soll ein </P> geschrieben wenrden
+ rInfo.bOutPara =
+ bPara &&
+ ( rHWrt.bCfgOutStyles ||
+ (!rHWrt.bCfgOutStyles && bHasParSpace) );
+
+ // wenn kein End-Tag geschrieben werden soll, es loeschen
+ if( bNoEndTag )
+ rInfo.aToken.Erase();
+ }
+
+ // ??? Warum nicht ueber den Hint-Mechanismus ???
+ if( rHWrt.IsHTMLMode(HTMLMODE_FIRSTLINE) )
+ {
+ const SvxLRSpaceItem& rLRSpace =
+ pNodeItemSet ? ((const SvxLRSpaceItem &)pNodeItemSet->Get(RES_LR_SPACE))
+ : rFmt.GetLRSpace();
+ if( rLRSpace.GetTxtFirstLineOfst() > 0 )
+ {
+ OutHTML_HoriSpacer( rWrt, rLRSpace.GetTxtFirstLineOfst() );
+ }
+ }
+
+ if( nBulletGrfLvl != 255 )
+ {
+ ASSERT( aNumInfo.GetNumRule(), "Wo ist die Numerierung geblieben???" );
+ ASSERT( nBulletGrfLvl < MAXLEVEL, "So viele Ebenen gibt's nicht" );
+ const SwNumFmt& rNumFmt = aNumInfo.GetNumRule()->Get(nBulletGrfLvl);
+
+ OutHTML_BulletImage( rWrt, sHTML_image, 0,
+ rHWrt.aBulletGrfs[nBulletGrfLvl],
+ rNumFmt.GetGrfSize(), rNumFmt.GetGrfOrient() );
+ }
+
+ rHWrt.GetNumInfo() = aNumInfo;
+
+ // die Defaults zuruecksetzen
+ rHWrt.nDfltLeftMargin = 0;
+ rHWrt.nDfltRightMargin = 0;
+ rHWrt.nDfltFirstLineIndent = 0;
+ rHWrt.nDfltTopMargin = 0;
+ rHWrt.nDfltBottomMargin = 0;
+ rHWrt.nLeftMargin = 0;
+ rHWrt.nFirstLineIndent = 0;
+}
+
+void OutHTML_SwFmtOff( Writer& rWrt, const SwHTMLTxtCollOutputInfo& rInfo )
+{
+ SwHTMLWriter & rHWrt = (SwHTMLWriter&)rWrt;
+
+ // wenn es kein Token gibt haben wir auch nichts auszugeben
+ if( !rInfo.aToken.Len() )
+ {
+ rHWrt.FillNextNumInfo();
+ const SwHTMLNumRuleInfo& rNextInfo = *rHWrt.GetNextNumInfo();
+ // Auch in PRE muss eine Bullet-Liste beendet werden
+ if( rInfo.bInNumBulList )
+ {
+
+ const SwHTMLNumRuleInfo& rInfo = rHWrt.GetNumInfo();
+ if( rNextInfo.GetNumRule() != rInfo.GetNumRule() ||
+ rNextInfo.GetDepth() != rInfo.GetDepth() ||
+ rNextInfo.IsNumbered() || rNextInfo.IsRestart() )
+ rHWrt.ChangeParaToken( 0 );
+ OutHTML_NumBulListEnd( rHWrt, rNextInfo );
+ }
+ else if( rNextInfo.GetNumRule() != 0 )
+ rHWrt.ChangeParaToken( 0 );
+
+ return;
+ }
+
+ if( rInfo.ShouldOutputToken() )
+ {
+ if( rHWrt.bLFPossible )
+ rHWrt.OutNewLine( TRUE );
+
+ // fuer BLOCKQUOTE, ADDRESS und DD wird ggf noch ein
+ // Absatz-Token ausgegeben, wenn
+ // - keine Styles geschrieben werden, und
+ // - ein untere Abstand existiert
+ if( rInfo.bParaPossible && rInfo.bOutPara )
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_parabreak, FALSE );
+
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), rInfo.aToken.GetBuffer(),
+ FALSE );
+ rHWrt.bLFPossible = !rInfo.aToken.Equals( sHTML_dt ) &&
+ !rInfo.aToken.Equals( sHTML_dd ) &&
+ !rInfo.aToken.Equals( sHTML_li );
+ }
+ if( rInfo.bOutDiv )
+ {
+ rHWrt.DecIndentLevel();
+ if( rHWrt.bLFPossible )
+ rHWrt.OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_division, FALSE );
+ rHWrt.bLFPossible = TRUE;
+ }
+
+ // ggf. eine Aufzaehlung- oder Numerierungsliste beenden
+ if( rInfo.bInNumBulList )
+ {
+ rHWrt.FillNextNumInfo();
+ OutHTML_NumBulListEnd( rHWrt, *rHWrt.GetNextNumInfo() );
+ }
+}
+
+
+class HTMLSttEndPos
+{
+ xub_StrLen nStart;
+ xub_StrLen nEnd;
+ SfxPoolItem* pItem;
+
+public:
+
+ HTMLSttEndPos( const SfxPoolItem& rItem, xub_StrLen nStt, xub_StrLen nE );
+ ~HTMLSttEndPos();
+
+ const SfxPoolItem *GetItem() const { return pItem; }
+
+ void SetStart( xub_StrLen nStt ) { nStart = nStt; }
+ xub_StrLen GetStart() const { return nStart; }
+
+ xub_StrLen GetEnd() const { return nEnd; }
+ void SetEnd( xub_StrLen nE ) { nEnd = nE; }
+};
+
+HTMLSttEndPos::HTMLSttEndPos( const SfxPoolItem& rItem, xub_StrLen nStt,
+ xub_StrLen nE ) :
+ nStart( nStt ),
+ nEnd( nE ),
+ pItem( rItem.Clone() )
+{}
+
+HTMLSttEndPos::~HTMLSttEndPos()
+{
+ delete pItem;
+}
+
+typedef HTMLSttEndPos *HTMLSttEndPosPtr;
+SV_DECL_PTRARR( _HTMLEndLst, HTMLSttEndPosPtr, 5, 5 )
+
+enum HTMLOnOffState { HTML_NOT_SUPPORTED, // nicht unterst. Attribut
+ HTML_REAL_VALUE, // Attribut mit Wert
+ HTML_ON_VALUE, // Attribut entspricht On-Tag
+ HTML_OFF_VALUE, // Attribut entspricht Off-Tag
+ HTML_CHRFMT_VALUE, // Attribut fuer Zeichenvorlage
+ HTML_COLOR_VALUE, // Attribut fuer Vordergrundfarbe
+ HTML_STYLE_VALUE, // Attribut muss als Style exp.
+ HTML_DROPCAP_VALUE }; // DropCap-Attributs
+
+
+class HTMLEndPosLst
+{
+ _HTMLEndLst aStartLst; // nach Anfangs-Psoitionen sortierte Liste
+ _HTMLEndLst aEndLst; // nach End-Psotionen sortierte Liste
+
+ SwDoc *pDoc; // das aktuelle Dokument
+ SwDoc* pTemplate; // die HTML-Vorlage (oder 0)
+ const Color* pDfltColor;// die Default-Vordergrund-Farbe
+
+ ULONG nHTMLMode;
+ BOOL bOutStyles : 1; // werden Styles exportiert
+
+
+ // die Position eines Items in der Start-/Ende-Liste suchen
+ USHORT _FindStartPos( const HTMLSttEndPos *pPos ) const;
+ USHORT _FindEndPos( const HTMLSttEndPos *pPos ) const;
+
+ // Eine SttEndPos in die Start- und Ende-Listen eintragen bzw. aus
+ // ihnen loeschen, wobei die Ende-Position bekannt ist
+ void _InsertItem( HTMLSttEndPos *pPos, USHORT nEndPos );
+ void _RemoveItem( USHORT nEndPos );
+
+ // die "Art" es Attributs ermitteln
+ HTMLOnOffState GetHTMLItemState( const SfxPoolItem& rItem );
+
+ // Existiert ein bestimmtes On-Tag-Item
+ BOOL ExistsOnTagItem( USHORT nWhich, xub_StrLen nPos );
+
+ // Existiert ein Item zum ausschalten eines Attributs, das genauso
+ // exportiert wird wie das uebergebene Item im gleichen Bereich?
+ BOOL ExistsOffTagItem( USHORT nWhich, xub_StrLen nStartPos,
+ xub_StrLen nEndPos );
+
+
+ // das Ende eines gesplitteten Items anpassen
+ void FixSplittedItem( HTMLSttEndPos *pPos, USHORT nStartPos,
+ xub_StrLen nNewEnd );
+
+ // Ein Attribut in die Listen eintragen und ggf. aufteilen
+ void InsertItem( const SfxPoolItem& rItem, xub_StrLen nStart,
+ xub_StrLen nEnd );
+
+ // Ein bereits vorhandenes Attribut aufteilen
+ void SplitItem( const SfxPoolItem& rItem, xub_StrLen nStart,
+ xub_StrLen nEnd );
+
+
+public:
+
+ HTMLEndPosLst( SwDoc *pDoc, SwDoc* pTemplate, const Color* pDfltColor,
+ BOOL bOutStyles, ULONG nHTMLMode );
+ ~HTMLEndPosLst();
+
+ // Ein Attribut einfuegen
+ void Insert( const SfxPoolItem& rItem, xub_StrLen nStart, xub_StrLen nEnd,
+ SwHTMLFmtInfos& rFmtInfos, BOOL bParaAttrs=FALSE );
+ void Insert( const SfxItemSet& rItemSet, xub_StrLen nStart, xub_StrLen nEnd,
+ SwHTMLFmtInfos& rFmtInfos, BOOL bDeep,
+ BOOL bParaAttrs=FALSE );
+ void Insert( const SwDrawFrmFmt& rFmt, xub_StrLen nPos,
+ SwHTMLFmtInfos& rFmtInfos );
+
+ void OutStartAttrs( SwHTMLWriter& rHWrt, xub_StrLen nPos );
+ void OutEndAttrs( SwHTMLWriter& rHWrt, xub_StrLen nPos );
+
+ USHORT Count() const { return aEndLst.Count(); }
+
+ BOOL IsHTMLMode( ULONG nMode ) const { return (nHTMLMode & nMode) != 0; }
+};
+
+
+USHORT HTMLEndPosLst::_FindStartPos( const HTMLSttEndPos *pPos ) const
+{
+ for( USHORT i=0; i<aStartLst.Count() && aStartLst[i]!=pPos; i++ )
+ ;
+
+ ASSERT( i != aStartLst.Count(), "Item nicht in Start-Liste gefunden!" );
+
+ return i==aStartLst.Count() ? USHRT_MAX : i;
+}
+
+USHORT HTMLEndPosLst::_FindEndPos( const HTMLSttEndPos *pPos ) const
+{
+ for( USHORT i=0; i<aEndLst.Count() && aEndLst[i]!=pPos; i++ )
+ ;
+
+ ASSERT( i != aEndLst.Count(), "Item nicht in Ende-Liste gefunden" );
+
+ return i==aEndLst.Count() ? USHRT_MAX : i;
+}
+
+
+void HTMLEndPosLst::_InsertItem( HTMLSttEndPos *pPos, USHORT nEndPos )
+{
+ // In der Start-Liste das Attribut hinter allen vorher und an
+ // der gleichen Position gestarteten Attributen einfuegen
+ xub_StrLen nStart = pPos->GetStart();
+ for( USHORT i=0; i < aStartLst.Count() &&
+ aStartLst[i]->GetStart() <= nStart; i++ )
+ ;
+ aStartLst.Insert( pPos, i );
+
+ // die Position in der Ende-Liste wurde uebergeben
+ aEndLst.Insert( pPos, nEndPos );
+}
+
+void HTMLEndPosLst::_RemoveItem( USHORT nEndPos )
+{
+ HTMLSttEndPos *pPos = aEndLst[nEndPos];
+
+ // jetzt Suchen wir es in der Start-Liste
+ USHORT nStartPos = _FindStartPos( pPos );
+ if( nStartPos != USHRT_MAX )
+ aStartLst.Remove( nStartPos, 1 );
+
+ aEndLst.Remove( nEndPos, 1 );
+
+ delete pPos;
+}
+
+HTMLOnOffState HTMLEndPosLst::GetHTMLItemState( const SfxPoolItem& rItem )
+{
+ HTMLOnOffState eState = HTML_NOT_SUPPORTED;
+ switch( rItem.Which() )
+ {
+ case RES_CHRATR_POSTURE:
+ switch( ((const SvxPostureItem&)rItem).GetPosture() )
+ {
+ case ITALIC_NORMAL:
+ eState = HTML_ON_VALUE;
+ break;
+ case ITALIC_NONE:
+ eState = HTML_OFF_VALUE;
+ break;
+ default:
+ if( IsHTMLMode(HTMLMODE_SOME_STYLES) )
+ eState = HTML_STYLE_VALUE;
+ break;
+ }
+ break;
+
+ case RES_CHRATR_CROSSEDOUT:
+ switch( ((const SvxCrossedOutItem&)rItem).GetStrikeout() )
+ {
+ case STRIKEOUT_SINGLE:
+ case STRIKEOUT_DOUBLE:
+ eState = HTML_ON_VALUE;
+ break;
+ case STRIKEOUT_NONE:
+ eState = HTML_OFF_VALUE;
+ break;
+ }
+ break;
+
+ case RES_CHRATR_ESCAPEMENT:
+ switch( (const SvxEscapement)
+ ((const SvxEscapementItem&)rItem).GetEnumValue() )
+ {
+ case SVX_ESCAPEMENT_SUPERSCRIPT:
+ case SVX_ESCAPEMENT_SUBSCRIPT:
+ eState = HTML_ON_VALUE;
+ break;
+ case SVX_ESCAPEMENT_OFF:
+ eState = HTML_OFF_VALUE;
+ break;
+ }
+ break;
+
+ case RES_CHRATR_UNDERLINE:
+ switch( ((const SvxUnderlineItem&)rItem).GetUnderline() )
+ {
+ case UNDERLINE_SINGLE:
+ eState = HTML_ON_VALUE;
+ break;
+ case UNDERLINE_NONE:
+ eState = HTML_OFF_VALUE;
+ break;
+ default:
+ if( IsHTMLMode(HTMLMODE_SOME_STYLES) )
+ eState = HTML_STYLE_VALUE;
+ break;
+ }
+ break;
+
+ case RES_CHRATR_WEIGHT:
+ switch( ((const SvxWeightItem&)rItem).GetWeight() )
+ {
+ case WEIGHT_BOLD:
+ eState = HTML_ON_VALUE;
+ break;
+ case WEIGHT_NORMAL:
+ eState = HTML_OFF_VALUE;
+ break;
+ default:
+ if( IsHTMLMode(HTMLMODE_SOME_STYLES) )
+ eState = HTML_STYLE_VALUE;
+ break;
+ }
+ break;
+
+ case RES_CHRATR_BLINK:
+ if( IsHTMLMode(HTMLMODE_BLINK) )
+ eState = ((const SvxBlinkItem&)rItem).GetValue() ? HTML_ON_VALUE
+ : HTML_OFF_VALUE;
+ break;
+
+ case RES_CHRATR_COLOR:
+ eState = HTML_COLOR_VALUE;
+ break;
+
+ case RES_CHRATR_FONT:
+ case RES_CHRATR_FONTSIZE:
+ case RES_TXTATR_INETFMT:
+ eState = HTML_REAL_VALUE;
+ break;
+
+ case RES_TXTATR_CHARFMT:
+ eState = HTML_CHRFMT_VALUE;
+ break;
+
+ case RES_CHRATR_CASEMAP:
+ if( IsHTMLMode(HTMLMODE_SMALL_CAPS) )
+ eState = HTML_STYLE_VALUE;
+
+ case RES_CHRATR_KERNING:
+ if( IsHTMLMode(HTMLMODE_FULL_STYLES) )
+ eState = HTML_STYLE_VALUE;
+ break;
+
+ case RES_CHRATR_BACKGROUND:
+ if( IsHTMLMode(HTMLMODE_SOME_STYLES) )
+ eState = HTML_STYLE_VALUE;
+ break;
+
+ case RES_PARATR_DROP:
+ eState = HTML_DROPCAP_VALUE;
+ break;
+
+// default:
+// eState = HTML_NOT_SUPPORTED;
+// break;
+ }
+
+ return eState;
+}
+
+BOOL HTMLEndPosLst::ExistsOnTagItem( USHORT nWhich, xub_StrLen nPos )
+{
+ for( USHORT i=0; i<aStartLst.Count(); i++ )
+ {
+ HTMLSttEndPos *pTest = aStartLst[i];
+
+ if( pTest->GetStart() > nPos )
+ {
+ // dieses uns alle folgenden Attribute beginnen spaeter
+ break;
+ }
+ else if( pTest->GetEnd() > nPos )
+ {
+ // das Attribut beginnt vor oder an der aktuellen Position
+ // und endet hinter ihr
+ const SfxPoolItem *pItem = pTest->GetItem();
+ if( pItem->Which() == nWhich &&
+ HTML_ON_VALUE == GetHTMLItemState(*pItem) )
+ {
+ // ein On-Tag-Attibut wurde gefunden
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+BOOL HTMLEndPosLst::ExistsOffTagItem( USHORT nWhich, xub_StrLen nStartPos,
+ xub_StrLen nEndPos )
+{
+ if( nWhich != RES_CHRATR_CROSSEDOUT &&
+ nWhich != RES_CHRATR_UNDERLINE &&
+ nWhich != RES_CHRATR_BLINK )
+ {
+ return FALSE;
+ }
+
+ for( USHORT i=0; i<aStartLst.Count(); i++ )
+ {
+ HTMLSttEndPos *pTest = aStartLst[i];
+
+ if( pTest->GetStart() > nStartPos )
+ {
+ // dieses uns alle folgenden Attribute beginnen spaeter
+ break;
+ }
+ else if( pTest->GetStart()==nStartPos &&
+ pTest->GetEnd()==nEndPos )
+ {
+ // das Attribut beginnt vor oder an der aktuellen Position
+ // und endet hinter ihr
+ const SfxPoolItem *pItem = pTest->GetItem();
+ USHORT nTstWhich = pItem->Which() ;
+ if( (nTstWhich == RES_CHRATR_CROSSEDOUT ||
+ nTstWhich == RES_CHRATR_UNDERLINE ||
+ nTstWhich == RES_CHRATR_BLINK) &&
+ HTML_OFF_VALUE == GetHTMLItemState(*pItem) )
+ {
+ // Ein Off-Tag-Attibut wurde gefunden, das genauso
+ // exportiert wird, wie das aktuelle Item
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+void HTMLEndPosLst::FixSplittedItem( HTMLSttEndPos *pPos, xub_StrLen nNewEnd,
+ USHORT nStartPos )
+{
+ // die End-Position entsprechend fixen
+ pPos->SetEnd( nNewEnd );
+
+ // das Item aus der End-Liste entfernen
+ USHORT nEndPos = _FindEndPos( pPos );
+ if( nEndPos != USHRT_MAX )
+ aEndLst.Remove( nEndPos, 1 );
+
+ // es wird von nun an als letztes an der entsprechenden Position
+ // beendet
+ for( nEndPos=0; nEndPos < aEndLst.Count() &&
+ aEndLst[nEndPos]->GetEnd() <= nNewEnd; nEndPos++ )
+ ;
+ aEndLst.Insert( pPos, nEndPos );
+
+ // jetzt noch die spaeter gestarteten Attribute anpassen
+ for( USHORT i=nStartPos+1; i<aStartLst.Count(); i++ )
+ {
+ HTMLSttEndPos *pTest = aStartLst[i];
+ xub_StrLen nTestEnd = pTest->GetEnd();
+ if( pTest->GetStart() >= nNewEnd )
+ {
+ // das Test-Attribut und alle folgenden beginnen, nachdem das
+ // gesplittete Attribut endet
+ break;
+ }
+ else if( nTestEnd > nNewEnd )
+ {
+ // das Test-Attribut beginnt, bevor das gesplittete Attribut
+ // endet und endet danach, muss also auch gesplittet werden
+
+ // das neue Ende setzen
+ pTest->SetEnd( nNewEnd );
+
+ // das Attribut aus der End-Liste entfernen
+ USHORT nEPos = _FindEndPos( pTest );
+ if( nEPos != USHRT_MAX )
+ aEndLst.Remove( nEPos, 1 );
+
+ // es endet jetzt als erstes Attribut an der entsprechenden
+ // Position. Diese Position in der Ende-Liste kennen wir schon.
+ aEndLst.Insert(pTest, nEndPos );
+
+ // den "Rest" des Attributs neu einfuegen
+ InsertItem( *pTest->GetItem(), nNewEnd, nTestEnd );
+ }
+ }
+}
+
+
+void HTMLEndPosLst::InsertItem( const SfxPoolItem& rItem, xub_StrLen nStart,
+ xub_StrLen nEnd )
+{
+ for( USHORT i=0; i<aEndLst.Count(); i++ )
+ {
+ HTMLSttEndPos *pTest = aEndLst[i];
+ xub_StrLen nTestEnd = pTest->GetEnd();
+ if( nTestEnd <= nStart )
+ {
+ // das Test-Attribut endet, bevor das neue beginnt
+ continue;
+ }
+ else if( nTestEnd < nEnd )
+ {
+ // das Test-Attribut endet, bevor das neue endet. Das
+ // neue Attribut muss deshalb aufgesplittet werden
+ _InsertItem( new HTMLSttEndPos( rItem, nStart, nTestEnd ), i );
+ nStart = nTestEnd;
+ }
+ else
+ {
+ // das Test-Attribut (und alle folgenden) endet, bevor das neue
+ // endet
+ break;
+ }
+ }
+
+ // ein Attribut muss noch eingefuegt werden
+ _InsertItem( new HTMLSttEndPos( rItem, nStart, nEnd ), i );
+}
+
+
+
+void HTMLEndPosLst::SplitItem( const SfxPoolItem& rItem, xub_StrLen nStart,
+ xub_StrLen nEnd )
+{
+ USHORT nWhich = rItem.Which();
+
+ // erstmal muessen wir die alten Items anhand der Startliste suchen
+ // und die neuen Item-Bereiche festlegen
+
+ for( USHORT i=0; i<aStartLst.Count(); i++ )
+ {
+ HTMLSttEndPos *pTest = aStartLst[i];
+ xub_StrLen nTestStart = pTest->GetStart();
+ xub_StrLen nTestEnd = pTest->GetEnd();
+
+ if( nTestStart >= nEnd )
+ {
+ // dieses und alle nachfolgenden Attribute beginnen spaeter
+ break;
+ }
+ else if( nTestEnd > nStart )
+ {
+ // das Test Attribut endet im zu loeschenenden Bereich
+ const SfxPoolItem *pItem = pTest->GetItem();
+
+ // nur entsprechende On-Tag Attribute muessen beruecksichtigt
+ // werden
+ if( pItem->Which() == nWhich &&
+ HTML_ON_VALUE == GetHTMLItemState( *pItem ) )
+ {
+ BOOL bDelete = TRUE;
+
+ if( nTestStart < nStart )
+ {
+ // der Start des neuen Attribut entspricht
+ // dem neuen Ende des Attribts
+ FixSplittedItem( pTest, nStart, i );
+ bDelete = FALSE;
+ }
+ else
+ {
+ // das Test-Item beginnt erst hinter dem neuen
+ // Ende des Attribts und kann deshalb komplett
+ // geloescht werden
+ aStartLst.Remove( i, 1 );
+ i--;
+
+ USHORT nEndPos = _FindEndPos( pTest );
+ if( nEndPos != USHRT_MAX )
+ aEndLst.Remove( nEndPos, 1 );
+ }
+
+ // ggf den zweiten Teil des gesplitteten Attribts einfuegen
+ if( nTestEnd > nEnd )
+ {
+ InsertItem( *pTest->GetItem(), nEnd, nTestEnd );
+ }
+
+ if( bDelete )
+ delete pTest;
+ }
+ }
+ }
+}
+
+HTMLEndPosLst::HTMLEndPosLst( SwDoc *pD, SwDoc* pTempl,
+ const Color* pDfltCol, BOOL bStyles,
+ ULONG nMode ):
+ pDoc( pD ), pTemplate( pTempl ), pDfltColor( pDfltCol ),
+ bOutStyles( bStyles ), nHTMLMode( nMode )
+{}
+
+HTMLEndPosLst::~HTMLEndPosLst()
+{
+ ASSERT( !aStartLst.Count(), "Start-Liste im Destruktor nicht leer" );
+ ASSERT( !aEndLst.Count(), "End-Liste im Destruktor nicht leer" );
+}
+
+
+
+void HTMLEndPosLst::Insert( const SfxPoolItem& rItem,
+ xub_StrLen nStart, xub_StrLen nEnd,
+ SwHTMLFmtInfos& rFmtInfos, BOOL bParaAttrs )
+{
+ // kein Bereich ?? dann nicht aufnehmen, wird nie wirksam !!
+ if( nStart != nEnd )
+ {
+ BOOL bSet = FALSE, bSplit = FALSE;
+ switch( GetHTMLItemState(rItem) )
+ {
+ case HTML_ON_VALUE:
+ // das Attribut wird ausgegeben, wenn es nicht sowieso
+ // schon an ist
+ if( !ExistsOnTagItem( rItem.Which(), nStart ) )
+ bSet = TRUE;
+ break;
+
+ case HTML_OFF_VALUE:
+ // wenn das entsprechne Attribut an ist, wird es gesplittet,
+ // Zusaetlich wird es aber als Style ausgegeben, wenn es nicht
+ // am ganzen Absatz gesetzt ist, weil es dann ja schon mit dem
+ // ABsatz-Tag ausgegeben wurde.
+ if( ExistsOnTagItem( rItem.Which(), nStart ) )
+ bSplit = TRUE;
+ bSet = bOutStyles && !bParaAttrs &&
+ !ExistsOffTagItem( rItem.Which(), nStart, nEnd );
+ break;
+
+ case HTML_REAL_VALUE:
+ // das Attribut kann immer ausgegeben werden
+ bSet = TRUE;
+ break;
+
+ case HTML_STYLE_VALUE:
+ // Das Attribut kann nur als CSS1 ausgegeben werden. Wenn
+ // es am Absatz gesetzt ist, wurde es schon mit dem
+ // Absatz-Tag ausgegeben. Einzige Ausnahme ist das
+ // Zeichen-Hintergrund-Attribut. Es muss immer wie ein
+ // Hint behandelt werden.
+ bSet = bOutStyles &&
+ (!bParaAttrs || rItem.Which()==RES_CHRATR_BACKGROUND);
+ break;
+
+ case HTML_CHRFMT_VALUE:
+ {
+ ASSERT( RES_TXTATR_CHARFMT == rItem.Which(),
+ "Doch keine Zeichen-Vorlage" );
+ const SwFmtCharFmt& rChrFmt = (const SwFmtCharFmt&)rItem;
+ const SwCharFmt* pFmt = rChrFmt.GetCharFmt();
+
+ const SwHTMLFmtInfo *pFmtInfo;
+ SwHTMLFmtInfo aFmtInfo( pFmt );
+ USHORT nPos;
+ if( rFmtInfos.Seek_Entry( &aFmtInfo, &nPos ) )
+ {
+ pFmtInfo = rFmtInfos[nPos];
+ }
+ else
+ {
+ pFmtInfo = new SwHTMLFmtInfo( pFmt, pDoc, pTemplate,
+ bOutStyles );
+ rFmtInfos.C40_PTR_INSERT( SwHTMLFmtInfo, pFmtInfo );
+ }
+ if( pFmtInfo->aToken.Len() )
+ {
+ // das Zeichenvorlagen-Tag muss vor den harten
+ // Attributen ausgegeben werden
+ InsertItem( rItem, nStart, nEnd );
+ }
+ if( pFmtInfo->pItemSet )
+ {
+ Insert( *pFmtInfo->pItemSet, nStart, nEnd,
+ rFmtInfos, TRUE, bParaAttrs );
+ }
+ }
+ break;
+
+ case HTML_COLOR_VALUE:
+ // Eine Vordergrund-Farbe als Absatz-Attribut wird nur
+ // exportiert, wenn sie nicht der Default-Farbe entspricht.
+ ASSERT( RES_CHRATR_COLOR == rItem.Which(),
+ "Doch keine Vordergrund-Farbe" );
+ bSet = !bParaAttrs || !pDfltColor ||
+ !pDfltColor->IsRGBEqual(
+ ((const SvxColorItem&)rItem).GetValue() );
+ break;
+
+ case HTML_DROPCAP_VALUE:
+ {
+ ASSERT( RES_PARATR_DROP == rItem.Which(),
+ "Doch kein Drop-Cap" );
+ const SwFmtDrop& rDrop = (const SwFmtDrop&)rItem;
+ nEnd = nStart + rDrop.GetChars();
+ if( !bOutStyles )
+ {
+ // Zumindest die Attribute der Zeichenvorlage uebernehmen
+ const SwCharFmt *pCharFmt = rDrop.GetCharFmt();
+ if( pCharFmt )
+ {
+ Insert( pCharFmt->GetAttrSet(), nStart, nEnd,
+ rFmtInfos, TRUE, bParaAttrs );
+ }
+ }
+ else
+ {
+ bSet = TRUE;
+ }
+ }
+ break;
+ }
+
+ if( bSet )
+ InsertItem( rItem, nStart, nEnd );
+ if( bSplit )
+ SplitItem( rItem, nStart, nEnd );
+ }
+}
+
+void HTMLEndPosLst::Insert( const SfxItemSet& rItemSet,
+ xub_StrLen nStart, xub_StrLen nEnd,
+ SwHTMLFmtInfos& rFmtInfos,
+ BOOL bDeep, BOOL bParaAttrs )
+{
+ SfxWhichIter aIter( rItemSet );
+
+ USHORT nWhich = aIter.FirstWhich();
+ while( nWhich )
+ {
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( nWhich, bDeep, &pItem ) )
+ {
+ Insert( *pItem, nStart, nEnd, rFmtInfos, bParaAttrs );
+ }
+
+ nWhich = aIter.NextWhich();
+ }
+}
+
+void HTMLEndPosLst::Insert( const SwDrawFrmFmt& rFmt, xub_StrLen nPos,
+ SwHTMLFmtInfos& rFmtInfos )
+{
+ // der Type-Cast ist nur noetig, um nicht seinetwegen
+ // svdrwobt.hxx zu includem
+ const SdrObject* pTextObj =
+ (const SdrObject *)SwHTMLWriter::GetMarqueeTextObj( rFmt );
+
+ if( pTextObj )
+ {
+ // die Edit-Engine-Attribute des Objekts als SW-Attribute holen
+ // und als Hints einsortieren. Wegen der Menge der Hints werden
+ // Styles hierbei nicht beruecksichtigt!
+ const SfxItemSet& rFmtItemSet = rFmt.GetAttrSet();
+ SfxItemSet aItemSet( *rFmtItemSet.GetPool(), RES_CHRATR_BEGIN,
+ RES_CHRATR_END );
+ SwHTMLWriter::GetEEAttrsFromDrwObj( aItemSet, pTextObj, TRUE );
+ BOOL bOutStylesOld = bOutStyles;
+ bOutStyles = FALSE;
+ Insert( aItemSet, nPos, nPos+1, rFmtInfos, FALSE, FALSE );
+ bOutStyles = bOutStylesOld;
+ }
+}
+
+void HTMLEndPosLst::OutStartAttrs( SwHTMLWriter& rHWrt, xub_StrLen nPos )
+{
+ rHWrt.bTagOn = TRUE;
+
+ // die Attribute in der Start-Liste sind aufsteigend sortiert
+ for( USHORT i=0; i< aStartLst.Count(); i++ )
+ {
+ HTMLSttEndPos *pPos = aStartLst[i];
+ xub_StrLen nStart = pPos->GetStart();
+ if( nStart > nPos )
+ {
+ // dieses und alle folgenden Attribute werden erst noch geoeffnet
+ break;
+ }
+ else if( nStart == nPos )
+ {
+ // das Attribut ausgeben
+ Out( aHTMLAttrFnTab, *pPos->GetItem(), rHWrt );
+ }
+ }
+}
+
+void HTMLEndPosLst::OutEndAttrs( SwHTMLWriter& rHWrt, xub_StrLen nPos )
+{
+ rHWrt.bTagOn = FALSE;
+
+ // die Attribute in der End-Liste sind aufsteigend sortiert
+ USHORT i=0;
+ while( i < aEndLst.Count() )
+ {
+ HTMLSttEndPos *pPos = aEndLst[i];
+ xub_StrLen nEnd = pPos->GetEnd();
+
+ if( STRING_MAXLEN==nPos || nEnd == nPos )
+ {
+ Out( aHTMLAttrFnTab, *pPos->GetItem(), rHWrt );
+ _RemoveItem( i );
+ }
+ else if( nEnd > nPos )
+ {
+ // dieses und alle folgenden Attribute werden erst spaeter beendet
+ break;
+ }
+ else
+ {
+ // Das Attribut wird vor der aktuellen Position beendet. Das
+ // darf nicht sein, aber wie koennen trotzdem damit umgehen
+ ASSERT( nEnd >= nPos,
+ "Das Attribut sollte schon laengst beendet sein" );
+ i++;
+ }
+ }
+}
+
+
+/* Ausgabe der Nodes */
+Writer& OutHTML_SwTxtNode( Writer& rWrt, const SwCntntNode& rNode )
+{
+ SwTxtNode * pNd = &((SwTxtNode&)rNode);
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const String& rStr = pNd->GetTxt();
+ xub_StrLen nEnde = rStr.Len();
+
+ // Besonderheit: leere Node und HR-Vorlage (horizontaler Strich)
+ // nur ein <HR> ausgeben
+ USHORT nPoolId = pNd->GetAnyFmtColl().GetPoolFmtId();
+
+ if( !nEnde && (RES_POOLCOLL_HTML_HR==nPoolId ||
+ pNd->GetAnyFmtColl().GetName().EqualsAscii( sHTML_horzrule) ) )
+ {
+ // dann die absatz-gebundenen Grafiken/OLE-Objekte im Absatz
+ // MIB 8.7.97: Ein <PRE> spannen wir um die Linie auf. Dann stimmen
+ // zwar die Abstaende nicht, aber sonst bekommen wir einen leeren
+ // Absatz hinter dem <HR> und das ist noch unschoener.
+ rHTMLWrt.ChangeParaToken( 0 );
+
+ // Alle an dem Node verankerten Rahmen ausgeben
+ rHTMLWrt.OutFlyFrm( rNode.GetIndex(), 0, HTML_POS_ANY );
+
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine(); // Absatz-Tag in eine neue Zeile
+
+ rHTMLWrt.bLFPossible = TRUE;
+
+ ByteString sOut( '<' );
+ sOut += sHTML_horzrule;
+
+ const SfxItemSet* pItemSet = pNd->GetpSwAttrSet();
+ if( !pItemSet )
+ {
+ rWrt.Strm() << sOut.GetBuffer() << '>';
+ return rHTMLWrt;
+ }
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pItemSet->GetItemState( RES_LR_SPACE, FALSE, &pItem ))
+ {
+ USHORT nLeft = ((SvxLRSpaceItem*)pItem)->GetLeft();
+ USHORT nRight = ((SvxLRSpaceItem*)pItem)->GetRight();
+ if( nLeft || nRight )
+ {
+ const SwFrmFmt& rPgFmt =
+ rHTMLWrt.pDoc->GetPageDescFromPool( RES_POOLPAGE_HTML )->GetMaster();
+
+ const SwFmtFrmSize& rSz = rPgFmt.GetFrmSize();
+ const SvxLRSpaceItem& rLR = rPgFmt.GetLRSpace();
+ const SwFmtCol& rCol = rPgFmt.GetCol();
+
+ long nPageWidth = rSz.GetWidth() - rLR.GetLeft() - rLR.GetRight();
+
+ if( 1 < rCol.GetNumCols() )
+ nPageWidth /= rCol.GetNumCols();
+
+ const SwTableNode* pTblNd = pNd->FindTableNode();
+ if( pTblNd )
+ {
+ const SwTableBox* pBox = pTblNd->GetTable().GetTblBox(
+ pNd->StartOfSectionIndex() );
+ if( pBox )
+ nPageWidth = pBox->GetFrmFmt()->GetFrmSize().GetWidth();
+ }
+
+ ((sOut += ' ') += sHTML_O_width) += '=';
+ rWrt.Strm() << sOut.GetBuffer();
+ rWrt.OutULong( rHTMLWrt.ToPixel(nPageWidth-nLeft-nRight) );
+
+ ((sOut = ' ') += sHTML_O_align) += '=';
+ if( !nLeft )
+ sOut += sHTML_AL_left;
+ else if( !nRight )
+ sOut += sHTML_AL_right;
+ else
+ sOut += sHTML_AL_center;
+ }
+ }
+ rWrt.Strm() << sOut.GetBuffer();
+ if( SFX_ITEM_SET == pItemSet->GetItemState( RES_BOX, FALSE, &pItem ))
+ {
+ const SvxBoxItem* pBoxItem = (const SvxBoxItem*)pItem;
+ const SvxBorderLine* pBorderLine = pBoxItem->GetBottom();
+ if( pBorderLine )
+ {
+ USHORT nWidth = pBorderLine->GetOutWidth() +
+ pBorderLine->GetInWidth() +
+ pBorderLine->GetDistance();
+ ((sOut = ' ') += sHTML_O_size) += '=';
+ rWrt.Strm() << sOut.GetBuffer();
+ rWrt.OutULong( rHTMLWrt.ToPixel(nWidth) );
+
+ const Color& rBorderColor = pBorderLine->GetColor();
+ if( !rBorderColor.IsRGBEqual( Color(COL_GRAY) ) )
+ {
+ ((sOut = ' ') += sHTML_O_color) += '=';
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_Color( rWrt.Strm(), rBorderColor,
+ rHTMLWrt.eDestEnc );
+ }
+
+ if( !pBorderLine->GetInWidth() )
+ {
+ (sOut = ' ') += sHTML_O_noshade;
+ rWrt.Strm() << sOut.GetBuffer();
+ }
+ }
+ }
+ rWrt.Strm() << '>';
+ return rHTMLWrt;
+ }
+
+ // Die leeren Nodes mit 2pt Font-Hoehe und der Stand-Vorlage, die
+ // vor Tabellen und Bereichen eingefuegt werden, nicht exportieren,
+ // Bookmarks oder absatzgebundene Grafiken aber schon.
+ // MIB 21.7.97: Ausserdem auch keine leeren Tabellen-Zellen exportieren.
+ if( !nEnde && (nPoolId == RES_POOLCOLL_STANDARD ||
+ nPoolId == RES_POOLCOLL_TABLE ||
+ nPoolId == RES_POOLCOLL_TABLE_HDLN) )
+ {
+ // Der aktuelle Node ist leer und enthaelt Standard-Vorlage ...
+ const SfxPoolItem* pItem;
+ const SfxItemSet *pItemSet = pNd->GetpSwAttrSet();
+ if( pItemSet && pItemSet->Count() &&
+ SFX_ITEM_SET == pItemSet->GetItemState( RES_CHRATR_FONTSIZE, FALSE, &pItem ) &&
+ 40 == ((const SvxFontHeightItem *)pItem)->GetHeight() )
+ {
+ // ... ausserdem ist die 2pt Schrift eingestellt ...
+ ULONG nNdPos = rWrt.pCurPam->GetPoint()->nNode.GetIndex();
+ const SwNode *pNextNd = rWrt.pDoc->GetNodes()[nNdPos+1];
+ const SwNode *pPrevNd = rWrt.pDoc->GetNodes()[nNdPos-1];
+ BOOL bStdColl = nPoolId == RES_POOLCOLL_STANDARD;
+ if( ( bStdColl && (pNextNd->IsTableNode() ||
+ pNextNd->IsSectionNode()) ) ||
+ ( !bStdColl && pNextNd->IsEndNode() &&
+ pPrevNd->IsStartNode() &&
+ SwTableBoxStartNode==
+ pPrevNd->GetStartNode()->GetStartNodeType() ) )
+ {
+ // ... und er steht vor einer Tabelle ohne einem Bereich
+ rHTMLWrt.OutBookmarks();
+ rHTMLWrt.bLFPossible = !rHTMLWrt.nLastParaToken;
+
+ // Alle an dem Node verankerten Rahmen ausgeben
+ rHTMLWrt.OutFlyFrm( rNode.GetIndex(), 0, HTML_POS_ANY );
+ rHTMLWrt.bLFPossible = FALSE;
+
+ return rWrt;
+ }
+ }
+ }
+
+ // PagePreaks uns PagDescs abfangen
+ BOOL bPageBreakBehind = FALSE;
+ if( rHTMLWrt.bCfgFormFeed &&
+ !(rHTMLWrt.bOutTable || rHTMLWrt.GetFlyFrmFmt()) &&
+ rHTMLWrt.pStartNdIdx->GetIndex() !=
+ rHTMLWrt.pCurPam->GetPoint()->nNode.GetIndex() )
+ {
+ BOOL bPageBreakBefore = FALSE;
+ const SfxPoolItem* pItem;
+ const SfxItemSet* pItemSet = pNd->GetpSwAttrSet();
+
+ if( pItemSet )
+ {
+ if( SFX_ITEM_SET ==
+ pItemSet->GetItemState( RES_PAGEDESC, TRUE, &pItem ) &&
+ ((SwFmtPageDesc *)pItem)->GetPageDesc() )
+ bPageBreakBefore = TRUE;
+ else if( SFX_ITEM_SET ==
+ pItemSet->GetItemState( RES_BREAK, TRUE, &pItem ) )
+ {
+ switch( ((SvxFmtBreakItem *)pItem)->GetBreak() )
+ {
+ case SVX_BREAK_PAGE_BEFORE:
+ bPageBreakBefore = TRUE;
+ break;
+ case SVX_BREAK_PAGE_AFTER:
+ bPageBreakBehind = TRUE;
+ break;
+ case SVX_BREAK_PAGE_BOTH:
+ bPageBreakBefore = TRUE;
+ bPageBreakBehind = TRUE;
+ break;
+ }
+ }
+ }
+
+ if( bPageBreakBefore )
+ rWrt.Strm() << '\f';
+ }
+
+ // eventuell eine Form oeffnen
+ rHTMLWrt.OutForm();
+
+ // An dem Node "verankerte" Seitenegebunde Rahmen ausgeben
+ BOOL bFlysLeft = rHTMLWrt.OutFlyFrm( rNode.GetIndex(),
+ 0, HTML_POS_PREFIX );
+ // An dem Node verankerte Rahmen ausgeben, die vor dem
+ // Absatz-Tag geschrieben werden sollen.
+ if( bFlysLeft )
+ bFlysLeft = rHTMLWrt.OutFlyFrm( rNode.GetIndex(),
+ 0, HTML_POS_BEFORE );
+
+ if( rHTMLWrt.pCurPam->GetPoint()->nNode == rHTMLWrt.pCurPam->GetMark()->nNode )
+ nEnde = rHTMLWrt.pCurPam->GetMark()->nContent.GetIndex();
+
+ // gibt es harte Attribute, die als Optionen geschrieben werden muessen?
+ rHTMLWrt.bTagOn = TRUE;
+
+ // jetzt das Tag des Absatzes ausgeben
+ const SwFmt& rFmt = pNd->GetAnyFmtColl();
+ SwHTMLTxtCollOutputInfo aFmtInfo;
+ BOOL bOldLFPossible = rHTMLWrt.bLFPossible;
+ OutHTML_SwFmt( rWrt, rFmt, pNd->GetpSwAttrSet(), aFmtInfo );
+
+ // Wenn vor dem Absatz-Tag keine neue Zeile aufgemacht wurde, dann
+ // tun wir das jetzt
+ rHTMLWrt.bLFPossible = !rHTMLWrt.nLastParaToken;
+ if( !bOldLFPossible && rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine();
+
+
+ // dann die Bookmarks (inkl. End-Tag)
+ rHTMLWrt.bOutOpts = FALSE;
+ rHTMLWrt.OutBookmarks();
+
+ // jetzt ist noch mal eine gute Gelegenheit fuer ein LF, sofern es noch
+ // erlaubt ist
+ if( rHTMLWrt.bLFPossible &&
+ rHTMLWrt.GetLineLen() >= rHTMLWrt.nWhishLineLen )
+ {
+ rHTMLWrt.OutNewLine();
+ }
+ rHTMLWrt.bLFPossible = FALSE;
+
+ // Text, der aus einer Outline-Numerierung kommt ermitteln
+ xub_StrLen nOffset = 0;
+ String aOutlineTxt;
+ if( pNd->GetOutlineNum() && !pNd->GetNum() )
+ {
+ aOutlineTxt = pNd->GetNumString();
+ nOffset += aOutlineTxt.Len();
+ }
+ if( rHTMLWrt.pFmtFtn )
+ nOffset += rHTMLWrt.GetFootEndNoteSymLen( *rHTMLWrt.pFmtFtn );
+
+ // gibt es harte Attribute, die als Tags geschrieben werden muessen?
+ HTMLEndPosLst aEndPosLst( rWrt.pDoc, rHTMLWrt.pTemplate,
+ rHTMLWrt.pDfltColor, rHTMLWrt.bCfgOutStyles,
+ rHTMLWrt.GetHTMLMode() );
+ if( aFmtInfo.pItemSet )
+ {
+ aEndPosLst.Insert( *aFmtInfo.pItemSet, 0, nEnde + nOffset,
+ rHTMLWrt.aChrFmtInfos, FALSE, TRUE );
+ }
+
+
+ if( aOutlineTxt.Len() || rHTMLWrt.pFmtFtn )
+ {
+ // Absatz-Attribute ausgeben, damit der Text die Attribute des
+ // Absatzes bekommt.
+ aEndPosLst.OutStartAttrs( rHTMLWrt, 0 );
+
+ // Theoretisch muesste man hier die Zeichen-Vorlage der Numerierung
+ // beachten. Da man die ueber die UI nicht setzen kann, ignorieren
+ // wir sie erstmal.
+
+ if( aOutlineTxt.Len() )
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aOutlineTxt,
+ rHTMLWrt.eDestEnc );
+
+ if( rHTMLWrt.pFmtFtn )
+ {
+ rHTMLWrt.OutFootEndNoteSym( *rHTMLWrt.pFmtFtn );
+ rHTMLWrt.pFmtFtn = 0;
+ }
+ }
+
+ // erstmal den Start berichtigen. D.h. wird nur ein Teil vom Satz
+ // ausgegeben, so muessen auch da die Attribute stimmen!!
+ rHTMLWrt.bTxtAttr = TRUE;
+
+ USHORT nAttrPos = 0;
+ xub_StrLen nStrPos = rHTMLWrt.pCurPam->GetPoint()->nContent.GetIndex();
+ const SwTxtAttr * pHt = 0;
+ USHORT nCntAttr = pNd->HasHints() ? pNd->GetSwpHints().Count() : 0;
+ if( nCntAttr && nStrPos > *( pHt = pNd->GetSwpHints()[ 0 ] )->GetStart() )
+ {
+ // Ok, es gibt vorher Attribute, die ausgegeben werden muessen
+ do {
+ aEndPosLst.OutEndAttrs( rHTMLWrt, nStrPos + nOffset );
+
+ nAttrPos++;
+ if( RES_TXTATR_FIELD == pHt->Which() ) // Felder nicht
+ continue; // ausgeben
+
+ if( pHt->GetEnd() )
+ {
+ xub_StrLen nHtEnd = *pHt->GetEnd(),
+ nHtStt = *pHt->GetStart();
+ if( !rHTMLWrt.bWriteAll && nHtEnd <= nStrPos )
+ continue;
+
+ // leere Hints am Anfang nicht beachten, oder ??
+ if( nHtEnd == nHtStt )
+ continue;
+
+ // Attribut in die Liste aufnehemen
+ if( rHTMLWrt.bWriteAll )
+ aEndPosLst.Insert( pHt->GetAttr(), nHtStt + nOffset,
+ nHtEnd + nOffset,
+ rHTMLWrt.aChrFmtInfos );
+ else
+ {
+ xub_StrLen nTmpStt = nHtStt < nStrPos ? nStrPos : nHtStt;
+ xub_StrLen nTmpEnd = nHtEnd < nEnde ? nHtEnd : nEnde;
+ aEndPosLst.Insert( pHt->GetAttr(), nTmpStt + nOffset,
+ nTmpEnd + nOffset,
+ rHTMLWrt.aChrFmtInfos );
+ }
+ continue;
+ // aber nicht ausgeben, das erfolgt spaeter !!
+ }
+
+ } while( nAttrPos < nCntAttr && nStrPos >
+ *( pHt = pNd->GetSwpHints()[ nAttrPos ] )->GetStart() );
+
+ // dann gebe mal alle gesammelten Attribute von der String-Pos aus
+ aEndPosLst.OutEndAttrs( rHTMLWrt, nStrPos + nOffset );
+ aEndPosLst.OutStartAttrs( rHTMLWrt, nStrPos + nOffset );
+ }
+
+ BOOL bWriteBreak = (HTML_PREFORMTXT_ON != rHTMLWrt.nLastParaToken);
+ if( bWriteBreak && pNd->GetNum() &&
+ NO_NUMBERING != pNd->GetNum()->GetLevel() )
+ bWriteBreak = FALSE;
+
+ xub_StrLen nPreSplitPos = 0;
+ for( ; nStrPos < nEnde; nStrPos++ )
+ {
+ aEndPosLst.OutEndAttrs( rHTMLWrt, nStrPos + nOffset );
+
+ // Die an der aktuellen Position verankerten Rahmen ausgeben
+ if( bFlysLeft )
+ bFlysLeft = rHTMLWrt.OutFlyFrm( rNode.GetIndex(),
+ nStrPos, HTML_POS_INSIDE );
+
+ BOOL bOutChar = TRUE;
+ const SwTxtAttr * pTxtHt = 0;
+ if( nAttrPos < nCntAttr && *pHt->GetStart() == nStrPos
+ && nStrPos != nEnde )
+ {
+ do {
+ if( pHt->GetEnd() )
+ {
+ if( RES_CHRATR_KERNING == pHt->Which() &&
+ rHTMLWrt.IsHTMLMode(HTMLMODE_FIRSTLINE) &&
+ *pHt->GetEnd() - nStrPos == 1 &&
+ ' ' == rStr.GetChar(nStrPos) &&
+ ((const SvxKerningItem&)pHt->GetAttr()).GetValue() > 0 )
+ {
+ // Wenn erlaubt, wird das Ding als Spacer exportiert
+
+ bOutChar = FALSE; // Space nicht ausgeben
+ bWriteBreak = FALSE; // der Absatz ist aber auch nicht leer
+
+ OutHTML_HoriSpacer( rWrt,
+ ((const SvxKerningItem&)pHt->GetAttr()).GetValue() );
+
+ // Der Hint braucht nun doch nicht weiter
+ // beruecksichtigt werden.
+ }
+ else if( *pHt->GetEnd() != nStrPos )
+ {
+ // Hints mit Ende einsortieren, wenn sie keinen
+ // leeren Bereich aufspannen (Hints, die keinen
+ // Bereich aufspannen werden ignoriert
+ aEndPosLst.Insert( pHt->GetAttr(), nStrPos + nOffset,
+ *pHt->GetEnd() + nOffset,
+ rHTMLWrt.aChrFmtInfos );
+ }
+ else
+ {
+#if 0
+ // leere Hinst gleich ausgeben
+ rHTMLWrt.bTagOn = TRUE;
+ Out( aHTMLAttrFnTab, pHt->GetAttr(), rHTMLWrt );
+ rHTMLWrt.bTagOn = FALSE;
+ Out( aHTMLAttrFnTab, pHt->GetAttr(), rHTMLWrt );
+#endif
+ }
+ }
+ else
+ {
+ // Hints ohne-Ende werden als letztes ausgebeben
+ ASSERT( !pTxtHt,
+ "Wieso gibt es da schon ein Attribut ohne Ende?" );
+ if( rHTMLWrt.nTxtAttrsToIgnore>0 )
+ {
+ rHTMLWrt.nTxtAttrsToIgnore--;
+ }
+ else
+ {
+ pTxtHt = pHt;
+ bWriteBreak = FALSE; // der Absatz ist aber auch nicht leer
+ }
+ bOutChar = FALSE; // keine 255 ausgeben
+ }
+ } while( ++nAttrPos < nCntAttr && nStrPos ==
+ *( pHt = pNd->GetSwpHints()[ nAttrPos ] )->GetStart() );
+ }
+
+ // Manche Draw-Formate koennen auch noch Attribute mitbringen
+ if( pTxtHt && RES_TXTATR_FLYCNT == pTxtHt->Which() )
+ {
+ const SwFrmFmt* pFrmFmt =
+ ((const SwFmtFlyCnt &)pTxtHt->GetAttr()).GetFrmFmt();
+
+ if( RES_DRAWFRMFMT == pFrmFmt->Which() )
+ aEndPosLst.Insert( *((const SwDrawFrmFmt *)pFrmFmt),
+ nStrPos + nOffset,
+ rHTMLWrt.aChrFmtInfos );
+ }
+
+ aEndPosLst.OutEndAttrs( rHTMLWrt, nStrPos + nOffset );
+ aEndPosLst.OutStartAttrs( rHTMLWrt, nStrPos + nOffset );
+
+ if( pTxtHt )
+ {
+ rHTMLWrt.bLFPossible = !rHTMLWrt.nLastParaToken && nStrPos > 0 &&
+ rStr.GetChar(nStrPos-1) == ' ';
+ Out( aHTMLAttrFnTab, pTxtHt->GetAttr(), rHTMLWrt );
+ rHTMLWrt.bLFPossible = FALSE;
+ }
+
+ if( bOutChar )
+ {
+ sal_Unicode c = rStr.GetChar( nStrPos );
+ // versuche nach ungefaehr 255 Zeichen eine neue Zeile zu
+ // beginnen, aber nicht in PRE und nur bei Spaces
+ // MIB 15.4.99: Auf Wunsch von ST wird in Mails auch in einem
+ // PRE ganz bewusst umgebrocheni (#64159#).
+ if( ' '==c && (!rHTMLWrt.nLastParaToken || rHTMLWrt.HasCId()) )
+ {
+ xub_StrLen nLineLen;
+ if( rHTMLWrt.nLastParaToken )
+ nLineLen = nStrPos - nPreSplitPos;
+ else
+ nLineLen = rHTMLWrt.GetLineLen();
+
+ xub_StrLen nWordLen = rStr.Search( ' ', nStrPos+1 );
+ if( nWordLen == STRING_NOTFOUND )
+ nWordLen = nEnde;
+ nWordLen -= nStrPos;
+
+ if( nLineLen >= rHTMLWrt.nWhishLineLen ||
+ (nLineLen+nWordLen) >= rHTMLWrt.nWhishLineLen )
+ {
+ rHTMLWrt.OutNewLine();
+ bOutChar = FALSE;
+ if( rHTMLWrt.nLastParaToken )
+ nPreSplitPos = nStrPos+1;
+ }
+ }
+
+ if( bOutChar )
+ {
+ if( 0x0a == c )
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_linebreak );
+ else
+ HTMLOutFuncs::Out_Char( rWrt.Strm(), c, rHTMLWrt.eDestEnc );
+
+ // Wenn das letzte Zeichen eines Absatzed ein harter
+ // Zeilen-Umbruch ist brauchen wir noch ein <BR> mehr, weil
+ // Netscape & Co in diesem Fall fuer den naechsten Absatz
+ // nicht in die naechste Zeile gehen.
+ bWriteBreak = (0x0a == c) &&
+ (HTML_PREFORMTXT_ON != rHTMLWrt.nLastParaToken);
+ }
+ }
+ }
+
+
+ BOOL bEndAttrsWritten = aEndPosLst.Count() > 0;
+ aEndPosLst.OutEndAttrs( rHTMLWrt, STRING_MAXLEN );
+
+ // Die an der letzten Position verankerten Rahmen ausgeben
+ if( bFlysLeft )
+ bFlysLeft = rHTMLWrt.OutFlyFrm( rNode.GetIndex(),
+ nEnde, HTML_POS_INSIDE );
+ ASSERT( !bFlysLeft, "Es wurden nicht alle Rahmen gespeichert!" );
+
+ rHTMLWrt.bTxtAttr = FALSE;
+
+ if( bWriteBreak )
+ {
+ BOOL bEndOfCell = rHTMLWrt.bOutTable &&
+ rWrt.pCurPam->GetPoint()->nNode.GetIndex() ==
+ rWrt.pCurPam->GetMark()->nNode.GetIndex();
+
+ if( bEndOfCell && !nEnde &&
+ rHTMLWrt.IsHTMLMode(HTMLMODE_NBSP_IN_TABLES) )
+ {
+ // Wenn der letzte Absatz einer Tabellezelle leer ist und
+ // wir fuer den MS-IE exportieren, schreiben wir statt eines
+ // <BR> ein &nbsp;
+ rWrt.Strm() << '&' << sHTML_S_nbsp << ';';
+ }
+ else
+ {
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_linebreak );
+ const SvxULSpaceItem& rULSpace =
+ (const SvxULSpaceItem &)pNd->GetSwAttrSet().Get(RES_UL_SPACE);
+ if( rULSpace.GetLower() > 0 && !bEndOfCell &&
+ !rHTMLWrt.IsHTMLMode(HTMLMODE_NO_BR_AT_PAREND) )
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_linebreak );
+ rHTMLWrt.bLFPossible = TRUE;
+ }
+ }
+
+ if( rHTMLWrt.bClearLeft || rHTMLWrt.bClearRight )
+ {
+ const sal_Char *pStr;
+ if( rHTMLWrt.bClearLeft )
+ {
+ if( rHTMLWrt.bClearRight )
+ pStr = sHTML_AL_all;
+ else
+ pStr = sHTML_AL_left;
+ }
+ else
+ pStr = sHTML_AL_right;
+
+ ByteString sOut( sHTML_linebreak );
+ (((sOut += ' ') += sHTML_O_clear) += '=') += pStr;
+
+ HTMLOutFuncs::Out_AsciiTag( rHTMLWrt.Strm(), sOut.GetBuffer() );
+ rHTMLWrt.bClearLeft = FALSE;
+ rHTMLWrt.bClearRight = FALSE;
+
+ rHTMLWrt.bLFPossible = TRUE;
+ }
+
+ // wenn ein LF nicht schon erlaubt ist wird es erlaubt, wenn der
+ // Absatz mit einem ' ' endet
+ if( !rHTMLWrt.bLFPossible && !rHTMLWrt.nLastParaToken &&
+ nEnde > 0 && ' ' == rStr.GetChar(nEnde-1) )
+ rHTMLWrt.bLFPossible = TRUE;
+
+ rHTMLWrt.bTagOn = FALSE;
+ OutHTML_SwFmtOff( rWrt, aFmtInfo );
+
+ // eventuell eine Form schliessen
+ rHTMLWrt.OutForm( FALSE );
+
+ if( bPageBreakBehind )
+ rWrt.Strm() << '\f';
+
+ return rHTMLWrt;
+}
+
+
+ULONG SwHTMLWriter::ToPixel( ULONG nVal ) const
+{
+ if( Application::GetDefaultDevice() && nVal )
+ {
+ nVal = Application::GetDefaultDevice()->LogicToPixel(
+ Size( nVal, nVal ), MapMode( MAP_TWIP ) ).Width();
+ if( !nVal ) // wo ein Twip ist sollte auch ein Pixel sein
+ nVal = 1;
+ }
+ return nVal;
+}
+
+
+static Writer& OutHTML_CSS1Attr( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ // wenn gerade Hints geschrieben werden versuchen wir den Hint als
+ // CSS1-Attribut zu schreiben
+
+ if( ((SwHTMLWriter&)rWrt).bCfgOutStyles && ((SwHTMLWriter&)rWrt).bTxtAttr )
+ OutCSS1_HintSpanTag( rWrt, rHt );
+
+ return rWrt;
+}
+
+
+/* File CHRATR.HXX: */
+
+static Writer& OutHTML_SvxColor( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+ if( rHTMLWrt.bOutOpts )
+ return rWrt;
+
+ const Color& rColor = ((const SvxColorItem&)rHt).GetValue();
+
+ // die Default-Farbe nur Schreiben, wenn sie als Hint vorkommt
+ //if( rHTMLWrt.bTagOn && !rHTMLWrt.bTxtAttr && rHTMLWrt.pDfltColor
+ // && rColor == *rHTMLWrt.pDfltColor )
+ // return rWrt;
+
+ if( !rHTMLWrt.bTxtAttr && rHTMLWrt.bCfgOutStyles && rHTMLWrt.bCfgPreferStyles )
+ {
+ // Font-Farbe nicht als Tag schreiben, wenn Styles normalen Tags
+ // vorgezogen werden
+ return rWrt;
+ }
+
+ if( rHTMLWrt.bTagOn )
+ {
+ ByteString sOut( '<' );
+ (((sOut += sHTML_font) += ' ') += sHTML_O_color) += '=';
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_Color( rWrt.Strm(), rColor ) << '>';
+ }
+ else
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_font, FALSE );
+
+ return rWrt;
+}
+
+
+static Writer& OutHTML_SwPosture( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+ if( rHTMLWrt.bOutOpts )
+ return rWrt;
+
+ const FontItalic nPosture = ((const SvxPostureItem&)rHt).GetPosture();
+ if( ITALIC_NORMAL == nPosture )
+ {
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_italic, rHTMLWrt.bTagOn );
+ }
+ else if( rHTMLWrt.bCfgOutStyles && rHTMLWrt.bTxtAttr )
+ {
+ // vielleicht als CSS1-Attribut ?
+ OutCSS1_HintSpanTag( rWrt, rHt );
+ }
+
+ return rWrt;
+}
+
+static Writer& OutHTML_SvxFont( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+ if( rHTMLWrt.bOutOpts )
+ return rWrt;
+
+ if( rHTMLWrt.bTagOn )
+ {
+ String aNames;
+ SwHTMLWriter::PrepareFontList( ((const SvxFontItem&)rHt), aNames, 0,
+ rHTMLWrt.IsHTMLMode(HTMLMODE_FONT_GENERIC) );
+ ByteString sOut( '<' );
+ (((sOut += sHTML_font) += ' ') += sHTML_O_face) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aNames, rHTMLWrt.eDestEnc )
+ << "\">";
+ }
+ else
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_font , FALSE );
+
+ return rWrt;
+}
+
+static Writer& OutHTML_SvxFontHeight( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+ if( rHTMLWrt.bOutOpts )
+ return rWrt;
+
+ if( rHTMLWrt.bTagOn )
+ {
+ ByteString sOut( '<' );
+ sOut += sHTML_font;
+
+ UINT32 nHeight = ((const SvxFontHeightItem&)rHt).GetHeight();
+ USHORT nSize = rHTMLWrt.GetHTMLFontSize( nHeight );
+ (((sOut += ' ') += sHTML_O_size) += '=')
+ += ByteString::CreateFromInt32( nSize );
+ rWrt.Strm() << sOut.GetBuffer();
+
+ if( rHTMLWrt.bCfgOutStyles && rHTMLWrt.bTxtAttr &&
+ rHTMLWrt.aFontHeights[nSize-1] != nHeight )
+ {
+ // wenn die Groesse keiner HTML-Groesse entspricht,
+ // wird sie noch zusatzlich als Style-Option exportiert
+ OutCSS1_HintStyleOpt( rWrt, rHt );
+ }
+ rWrt.Strm() << '>';
+ }
+ else
+ {
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_font, FALSE );
+ }
+
+ return rWrt;
+}
+
+static Writer& OutHTML_SwWeight( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+ if( rHTMLWrt.bOutOpts )
+ return rWrt;
+
+ const FontWeight nBold = ((const SvxWeightItem&)rHt).GetWeight();
+ if( WEIGHT_BOLD == nBold )
+ {
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_bold, rHTMLWrt.bTagOn );
+ }
+ else if( rHTMLWrt.bCfgOutStyles && rHTMLWrt.bTxtAttr )
+ {
+ // vielleicht als CSS1-Attribut ?
+ OutCSS1_HintSpanTag( rWrt, rHt );
+ }
+
+ return rWrt;
+}
+
+
+static Writer& OutHTML_SwCrossedOut( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+ if( rHTMLWrt.bOutOpts )
+ return rWrt;
+
+ // Wegen Netscape schrieben wir hier STRIKE und nicht S raus!
+ const FontStrikeout nStrike = ((const SvxCrossedOutItem&)rHt).GetStrikeout();
+ if( STRIKEOUT_NONE != nStrike )
+ {
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_strike, rHTMLWrt.bTagOn );
+ }
+ else if( rHTMLWrt.bCfgOutStyles && rHTMLWrt.bTxtAttr )
+ {
+ // vielleicht als CSS1-Attribut ?
+ OutCSS1_HintSpanTag( rWrt, rHt );
+ }
+
+ return rWrt;
+}
+
+
+static Writer& OutHTML_SvxEscapement( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+ if( rHTMLWrt.bOutOpts )
+ return rWrt;
+
+ const SvxEscapement eEscape =
+ (const SvxEscapement)((const SvxEscapementItem&)rHt).GetEnumValue();
+ const sal_Char *pStr = 0;
+ switch( eEscape )
+ {
+ case SVX_ESCAPEMENT_SUPERSCRIPT: pStr = sHTML_superscript; break;
+ case SVX_ESCAPEMENT_SUBSCRIPT: pStr = sHTML_subscript; break;
+ }
+
+ if( pStr )
+ {
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), pStr, rHTMLWrt.bTagOn );
+ }
+ else if( rHTMLWrt.bCfgOutStyles && rHTMLWrt.bTxtAttr )
+ {
+ // vielleicht als CSS1-Attribut ?
+ OutCSS1_HintSpanTag( rWrt, rHt );
+ }
+
+ return rWrt;
+}
+
+
+
+static Writer& OutHTML_SwUnderline( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+ if( rHTMLWrt.bOutOpts )
+ return rWrt;
+
+ const FontUnderline eUnder = ((const SvxUnderlineItem&)rHt).GetUnderline();
+ if( UNDERLINE_NONE != eUnder )
+ {
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_underline, rHTMLWrt.bTagOn );
+ }
+ else if( rHTMLWrt.bCfgOutStyles && rHTMLWrt.bTxtAttr )
+ {
+ // vielleicht als CSS1-Attribut ?
+ OutCSS1_HintSpanTag( rWrt, rHt );
+ }
+
+ return rWrt;
+}
+
+
+static Writer& OutHTML_SwFlyCnt( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+ SwFmtFlyCnt& rFlyCnt = (SwFmtFlyCnt&)rHt;
+
+ const SwFrmFmt& rFmt = *rFlyCnt.GetFrmFmt();
+ const SdrObject *pSdrObj = 0;
+
+ SwHTMLFrmType eType =
+ (SwHTMLFrmType)rHTMLWrt.GuessFrmType( rFmt, pSdrObj );
+ BYTE nMode = aHTMLOutFrmAsCharTable[eType][rHTMLWrt.nExportMode];
+ rHTMLWrt.OutFrmFmt( nMode, rFmt, pSdrObj );
+ return rWrt;
+}
+
+static Writer& OutHTML_SwHardBlank( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ HTMLOutFuncs::Out_Char( rWrt.Strm(), ((SwFmtHardBlank&)rHt).GetChar(),
+ ((SwHTMLWriter&)rWrt).eDestEnc );
+ return rWrt;
+}
+
+// Das ist jetzt unser Blink-Item. Blinkend wird eingeschaltet, indem man
+// das Item auf TRUE setzt!
+static Writer& OutHTML_SwBlink( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+ if( rHTMLWrt.bOutOpts || !rHTMLWrt.IsHTMLMode(HTMLMODE_BLINK) )
+ return rWrt;
+
+ if( ((const SvxBlinkItem&)rHt).GetValue() )
+ {
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_blink, rHTMLWrt.bTagOn );
+ }
+ else if( rHTMLWrt.bCfgOutStyles && rHTMLWrt.bTxtAttr )
+ {
+ // vielleicht als CSS1-Attribut ?
+ OutCSS1_HintSpanTag( rWrt, rHt );
+ }
+
+ return rWrt;
+}
+
+Writer& OutHTML_INetFmt( Writer& rWrt, const SwFmtINetFmt& rINetFmt, BOOL bOn )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ String aURL( rINetFmt.GetValue() );
+ const SvxMacroTableDtor *pMacTable = rINetFmt.GetMacroTbl();
+ BOOL bEvents = pMacTable != 0 && pMacTable->Count() > 0;
+
+ // Gibt es ueberhaupt etwas auszugeben?
+ if( !aURL.Len() && !bEvents && !rINetFmt.GetName().Len() )
+ return rWrt;
+
+ // Tag aus? Dann nur ein </A> ausgeben.
+ if( !bOn )
+ {
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_anchor, FALSE );
+ return rWrt;
+ }
+
+ ByteString sOut( '<' );
+ sOut += sHTML_anchor;
+ rWrt.Strm() << sOut.GetBuffer();
+
+#define REL_HACK
+#ifdef REL_HACK
+ String sRel;
+#endif
+
+ if( aURL.Len() || bEvents )
+ {
+#ifdef REL_HACK
+ String sTmp( aURL );
+ sTmp.ToUpperAscii();
+ xub_StrLen nPos = sTmp.SearchAscii( "\" REL=" );
+ if( nPos!=STRING_NOTFOUND )
+ {
+ sRel = aURL.Copy( nPos+1 );
+ aURL.Erase( nPos );
+ }
+#endif
+ aURL.EraseLeadingChars().EraseTrailingChars();
+
+ ((sOut = ' ') += sHTML_O_href) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ aURL = INetURLObject::AbsToRel( aURL, INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET );
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aURL, rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+ else
+ sOut.Erase();
+
+ if( rINetFmt.GetName().Len() )
+ {
+ ((sOut += ' ') += sHTML_O_name) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), rINetFmt.GetName(),
+ rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+
+ const String& rTarget = rINetFmt.GetTargetFrame();
+ if( rTarget.Len() )
+ {
+ ((sOut += ' ') += sHTML_O_target) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), rTarget, rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+
+#ifdef REL_HACK
+ if( sRel.Len() )
+ sOut += ByteString( sRel, RTL_TEXTENCODING_ASCII_US );
+#endif
+ if( sOut.Len() )
+ rWrt.Strm() << sOut.GetBuffer();
+
+ if( bEvents )
+ HTMLOutFuncs::Out_Events( rWrt.Strm(), *pMacTable, aAnchorEventTable,
+ rHTMLWrt.bCfgStarBasic, rHTMLWrt.eDestEnc );
+ rWrt.Strm() << ">";
+
+ return rWrt;
+}
+
+static Writer& OutHTML_SwFmtINetFmt( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ if( rHTMLWrt.bOutOpts )
+ return rWrt;
+
+ const SwFmtINetFmt& rINetFmt = (const SwFmtINetFmt&)rHt;
+
+ if( rHTMLWrt.bTagOn )
+ {
+ // ggf. ein noch offenes Attribut voruebergehend beenden
+ if( rHTMLWrt.aINetFmts.Count() )
+ {
+ SwFmtINetFmt *pINetFmt =
+ rHTMLWrt.aINetFmts[ rHTMLWrt.aINetFmts.Count()-1 ];
+ OutHTML_INetFmt( rWrt, *pINetFmt, FALSE );
+ }
+
+ // jetzt das neue aufmachen
+ OutHTML_INetFmt( rWrt, rINetFmt, TRUE );
+
+ // und merken
+ const SwFmtINetFmt *pINetFmt = new SwFmtINetFmt( rINetFmt );
+ rHTMLWrt.aINetFmts.C40_INSERT( SwFmtINetFmt, pINetFmt,
+ rHTMLWrt.aINetFmts.Count() );
+ }
+ else
+ {
+ // das
+ OutHTML_INetFmt( rWrt, rINetFmt, FALSE );
+
+ ASSERT( rHTMLWrt.aINetFmts.Count(), "da fehlt doch ein URL-Attribut" );
+ if( rHTMLWrt.aINetFmts.Count() )
+ {
+ // das eigene Attribut vom Stack holen
+ SwFmtINetFmt *pINetFmt =
+ rHTMLWrt.aINetFmts[ rHTMLWrt.aINetFmts.Count()-1 ];
+
+ rHTMLWrt.aINetFmts.Remove( rHTMLWrt.aINetFmts.Count()-1, 1 );
+ delete pINetFmt;
+ }
+
+ if( rHTMLWrt.aINetFmts.Count() )
+ {
+ // es ist noch ein Attribut auf dem Stack, das wieder geoeffnet
+ // werden muss
+ SwFmtINetFmt *pINetFmt =
+ rHTMLWrt.aINetFmts[ rHTMLWrt.aINetFmts.Count()-1 ];
+ OutHTML_INetFmt( rWrt, *pINetFmt, TRUE );
+ }
+ }
+
+ return rWrt;
+}
+
+static Writer& OutHTML_SwTxtCharFmt( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+ if( rHTMLWrt.bOutOpts )
+ return rWrt;
+
+ const SwFmtCharFmt& rChrFmt = (const SwFmtCharFmt&)rHt;
+ const SwCharFmt* pFmt = rChrFmt.GetCharFmt();
+
+ if( !pFmt )
+ {
+ return rWrt;
+ }
+
+ SwHTMLFmtInfo aFmtInfo( pFmt );
+ USHORT nPos;
+ if( !rHTMLWrt.aChrFmtInfos.Seek_Entry( &aFmtInfo, &nPos ) )
+ return rWrt;
+
+ const SwHTMLFmtInfo *pFmtInfo = rHTMLWrt.aChrFmtInfos[nPos];
+ ASSERT( pFmtInfo, "Wieso gint es keine Infos ueber die Zeichenvorlage?" );
+
+ if( rHTMLWrt.bTagOn )
+ {
+ ByteString sOut( '<' );
+ if( pFmtInfo->aToken.Len() > 0 )
+ sOut += pFmtInfo->aToken;
+ else
+ sOut += sHTML_span;
+ if( rHTMLWrt.bCfgOutStyles && pFmtInfo->aClass.Len() )
+ {
+ ((sOut += ' ') += sHTML_O_class) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), pFmtInfo->aClass,
+ rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+ sOut += '>';
+ rWrt.Strm() << sOut.GetBuffer();
+ }
+ else
+ {
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(),
+ pFmtInfo->aToken.Len() ? pFmtInfo->aToken.GetBuffer()
+ : sHTML_span,
+ FALSE );
+ }
+
+ return rWrt;
+}
+
+static Writer& OutHTML_SvxAdjust( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+ if( !rHTMLWrt.bOutOpts || !rHTMLWrt.bTagOn )
+ return rWrt;
+
+ SvxAdjustItem& rAdjust = (SvxAdjustItem&)rHt;
+ const sal_Char* pStr = 0;
+ switch( rAdjust.GetAdjust() )
+ {
+ case SVX_ADJUST_CENTER: pStr = sHTML_AL_center; break;
+ case SVX_ADJUST_LEFT: pStr = sHTML_AL_left; break;
+ case SVX_ADJUST_RIGHT: pStr = sHTML_AL_right; break;
+ case SVX_ADJUST_BLOCK: pStr = sHTML_AL_justify; break;
+ }
+ if( pStr )
+ {
+ ByteString sOut( ' ' );
+ ((sOut += sHTML_O_align) += '=') += pStr;
+ rWrt.Strm() << sOut.GetBuffer();
+ }
+
+ return rWrt;
+}
+
+/*
+ * lege hier die Tabellen fuer die HTML-Funktions-Pointer auf
+ * die Ausgabe-Funktionen an.
+ * Es sind lokale Strukturen, die nur innerhalb der HTML-DLL
+ * bekannt sein muessen.
+ */
+
+
+SwAttrFnTab aHTMLAttrFnTab = {
+/* RES_CHRATR_CASEMAP */ OutHTML_CSS1Attr,
+/* RES_CHRATR_CHARSETCOLOR */ 0,
+/* RES_CHRATR_COLOR */ OutHTML_SvxColor,
+/* RES_CHRATR_CONTOUR */ 0,
+/* RES_CHRATR_CROSSEDOUT */ OutHTML_SwCrossedOut,
+/* RES_CHRATR_ESCAPEMENT */ OutHTML_SvxEscapement,
+/* RES_CHRATR_FONT */ OutHTML_SvxFont,
+/* RES_CHRATR_FONTSIZE */ OutHTML_SvxFontHeight,
+/* RES_CHRATR_KERNING */ OutHTML_CSS1Attr,
+/* RES_CHRATR_LANGUAGE */ 0,
+/* RES_CHRATR_POSTURE */ OutHTML_SwPosture,
+/* RES_CHRATR_PROPORTIONALFONTSIZE*/0,
+/* RES_CHRATR_SHADOWED */ 0,
+/* RES_CHRATR_UNDERLINE */ OutHTML_SwUnderline,
+/* RES_CHRATR_WEIGHT */ OutHTML_SwWeight,
+/* RES_CHRATR_WORDLINEMODE */ 0,
+/* RES_CHRATR_AUTOKERN */ 0,
+/* RES_CHRATR_BLINK */ OutHTML_SwBlink,
+/* RES_CHRATR_NOHYPHEN */ 0, // Neu: nicht trennen
+/* RES_CHRATR_NOLINEBREAK */ 0, // Neu: nicht umbrechen
+/* RES_CHRATR_BACKGROUND */ OutHTML_CSS1Attr, // Neu: Zeichenhintergrund
+/* RES_CHRATR_CJK_FONT */ 0,
+/* RES_CHRATR_CJK_FONTSIZE */ 0,
+/* RES_CHRATR_CJK_LANGUAGE */ 0,
+/* RES_CHRATR_CJK_POSTURE */ 0,
+/* RES_CHRATR_CJK_WEIGHT */ 0,
+/* RES_CHRATR_CTL_FONT */ 0,
+/* RES_CHRATR_CTL_FONTSIZE */ 0,
+/* RES_CHRATR_CTL_LANGUAGE */ 0,
+/* RES_CHRATR_CTL_POSTURE */ 0,
+/* RES_CHRATR_CTL_WEIGHT */ 0,
+/* RES_CHRATR_WRITING_DIRECTION */ 0,
+/* RES_CHRATR_DUMMY2 */ 0,
+/* RES_CHRATR_DUMMY3 */ 0,
+/* RES_CHRATR_DUMMY4 */ 0,
+/* RES_CHRATR_DUMMY5 */ 0,
+/* RES_CHRATR_DUMMY1 */ 0, // Dummy:
+
+/* RES_TXTATR_INETFMT */ OutHTML_SwFmtINetFmt,
+/* RES_TXTATR_DUMMY4 */ 0,
+/* RES_TXTATR_REFMARK*/ 0,
+/* RES_TXTATR_TOXMARK */ 0,
+/* RES_TXTATR_CHARFMT */ OutHTML_SwTxtCharFmt,
+/* RES_TXTATR_TWO_LINES */ 0,
+/* RES_TXTATR_CJK_RUBY */ 0,
+/* RES_TXTATR_UNKNOWN_CONTAINER */ 0,
+/* RES_TXTATR_DUMMY5 */ 0,
+/* RES_TXTATR_DUMMY6 */ 0,
+
+/* RES_TXTATR_FIELD */ OutHTML_SwFmtFld,
+/* RES_TXTATR_FLYCNT */ OutHTML_SwFlyCnt,
+/* RES_TXTATR_FTN */ OutHTML_SwFmtFtn,
+/* RES_TXTATR_SOFTHYPH */ 0,
+/* RES_TXTATR_HARDBLANK*/ OutHTML_SwHardBlank,
+/* RES_TXTATR_DUMMY1 */ 0, // Dummy:
+/* RES_TXTATR_DUMMY2 */ 0, // Dummy:
+
+/* RES_PARATR_LINESPACING */ 0,
+/* RES_PARATR_ADJUST */ OutHTML_SvxAdjust,
+/* RES_PARATR_SPLIT */ 0,
+/* RES_PARATR_WIDOWS */ 0,
+/* RES_PARATR_ORPHANS */ 0,
+/* RES_PARATR_TABSTOP */ 0,
+/* RES_PARATR_HYPHENZONE*/ 0,
+/* RES_PARATR_DROP */ OutHTML_CSS1Attr,
+/* RES_PARATR_REGISTER */ 0, // neu: Registerhaltigkeit
+/* RES_PARATR_DUMMY1 */ 0, // Dummy:
+/* RES_PARATR_DUMMY2 */ 0, // Dummy:
+
+/* RES_FILL_ORDER */ 0,
+/* RES_FRM_SIZE */ 0,
+/* RES_PAPER_BIN */ 0,
+/* RES_LR_SPACE */ 0,
+/* RES_UL_SPACE */ 0,
+/* RES_PAGEDESC */ 0,
+/* RES_BREAK */ 0,
+/* RES_CNTNT */ 0,
+/* RES_HEADER */ 0,
+/* RES_FOOTER */ 0,
+/* RES_PRINT */ 0,
+/* RES_OPAQUE */ 0,
+/* RES_PROTECT */ 0,
+/* RES_SURROUND */ 0,
+/* RES_VERT_ORIENT */ 0,
+/* RES_HORI_ORIENT */ 0,
+/* RES_ANCHOR */ 0,
+/* RES_BACKGROUND */ 0,
+/* RES_BOX */ 0,
+/* RES_SHADOW */ 0,
+/* RES_FRMMACRO */ 0,
+/* RES_COL */ 0,
+/* RES_KEEP */ 0,
+/* RES_URL */ 0,
+/* RES_EDIT_IN_READONLY */ 0,
+/* RES_LAYOUT_SPLIT */ 0,
+/* RES_FRMATR_DUMMY1 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY2 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY3 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY4 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY5 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY6 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY7 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY8 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY9 */ 0, // Dummy:
+
+/* RES_GRFATR_MIRRORGRF */ 0,
+/* RES_GRFATR_CROPGRF */ 0,
+/* RES_GRFATR_ROTATION */ 0,
+/* RES_GRFATR_LUMINANCE */ 0,
+/* RES_GRFATR_CONTRAST */ 0,
+/* RES_GRFATR_CHANNELR */ 0,
+/* RES_GRFATR_CHANNELG */ 0,
+/* RES_GRFATR_CHANNELB */ 0,
+/* RES_GRFATR_GAMMA */ 0,
+/* RES_GRFATR_INVERT */ 0,
+/* RES_GRFATR_TRANSPARENCY */ 0,
+/* RES_GRFATR_DRWAMODE */ 0,
+/* RES_GRFATR_DUMMY1 */ 0,
+/* RES_GRFATR_DUMMY2 */ 0,
+/* RES_GRFATR_DUMMY3 */ 0,
+/* RES_GRFATR_DUMMY4 */ 0,
+/* RES_GRFATR_DUMMY5 */ 0,
+
+/* RES_BOXATR_FORMAT */ 0,
+/* RES_BOXATR_FORMULA */ 0,
+/* RES_BOXATR_VALUE */ 0
+};
+
+
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmlatr.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.246 2000/09/18 16:04:43 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.245 2000/08/18 13:03:11 jp
+ don't export escaped URLs
+
+ Revision 1.244 2000/08/04 10:55:10 jp
+ Soft-/HardHyphens & HardBlanks changed from attribute to unicode character
+
+ Revision 1.243 2000/07/31 19:24:25 jp
+ new attributes for CJK/CTL and graphic
+
+ Revision 1.242 2000/06/26 09:51:53 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.241 2000/04/28 14:29:10 mib
+ unicode
+
+ Revision 1.240 2000/04/10 12:20:55 mib
+ unicode
+
+ Revision 1.239 2000/02/11 14:36:52 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.238 1999/12/08 13:50:39 jp
+ Task #70258#: textattr for XMLAttrContainer
+
+ Revision 1.237 1999/09/21 09:48:43 mib
+ multiple text encodings
+
+ Revision 1.236 1999/06/22 06:30:08 MIB
+ #64687#: if a center paragraph contains controls add a div tag
+
+
+ Rev 1.235 22 Jun 1999 08:30:08 MIB
+ #64687#: if a center paragraph contains controls add a div tag
+
+ Rev 1.234 10 Jun 1999 10:33:52 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.233 09 Jun 1999 19:35:54 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+ Rev 1.232 15 Apr 1999 13:25:30 MIB
+ #64159#: Beim Versenden von Mails auch in PRE umbrechen
+
+ Rev 1.231 23 Mar 1999 15:27:32 MIB
+ #63049#: Relative Einzuege in Numerierungen
+
+ Rev 1.230 17 Mar 1999 16:45:20 MIB
+ #63049#: Numerierungen mit relativen Abstaenden
+
+ Rev 1.229 18 Jan 1999 10:14:38 MIB
+ #60806#: Auch bei <FONT FACE=...> generische Fontnamen exportieren
+
+ Rev 1.228 06 Jan 1999 13:54:42 MIB
+ #60393#: Fuer Nscp4 in Tabellen keine line-spacing und margin-bottom exportieren
+
+ Rev 1.227 06 Jan 1999 10:33:38 MIB
+ #60311#: In Listen fuer nicht-numerierte Absaetze keine <PRE> ausgeben
+
+ Rev 1.226 02 Nov 1998 17:25:58 MIB
+ #58480#: Fuss-/Endnoten
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmlbas.cxx b/sw/source/filter/html/htmlbas.cxx
new file mode 100644
index 000000000000..371b46911d18
--- /dev/null
+++ b/sw/source/filter/html/htmlbas.cxx
@@ -0,0 +1,689 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlbas.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SFXINIMGR_HXX //autogen
+#include <svtools/iniman.hxx>
+#endif
+#define _SVSTDARR_STRINGSSORTDTOR
+#include <svtools/svstdarr.hxx>
+#ifndef _SBXCLASS_HXX //autogen
+#include <svtools/sbx.hxx>
+#endif
+#ifndef _BASMGR_HXX //autogen
+#include <basic/basmgr.hxx>
+#endif
+#ifndef _SB_SBSTAR_HXX //autogen
+#include <basic/sbstar.hxx>
+#endif
+#ifndef _SB_SBMOD_HXX //autogen
+#include <basic/sbmod.hxx>
+#endif
+#ifndef _SFX_EVENTCONF_HXX //autogen
+#include <sfx2/evntconf.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _HTMLOUT_HXX //autogen
+#include <svtools/htmlout.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+
+
+
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTFLD_HXX //autogen
+#include <fmtfld.hxx>
+#endif
+
+#ifndef _SFX_OBJUNO_HXX //autogen
+#include <sfx2/objuno.hxx>
+#endif
+
+#include "doc.hxx"
+#include "docsh.hxx"
+#include "docufld.hxx"
+#include "wrthtml.hxx"
+#include "swhtml.hxx"
+
+
+static HTMLOutEvent __FAR_DATA aBodyEventTable[] =
+{
+ { sHTML_O_SDonload, sHTML_O_onload, SFX_EVENT_OPENDOC },
+ { sHTML_O_SDonunload, sHTML_O_onunload, SFX_EVENT_PREPARECLOSEDOC },
+ { sHTML_O_SDonfocus, sHTML_O_onfocus, SFX_EVENT_ACTIVATEDOC },
+ { sHTML_O_SDonblur, sHTML_O_onblur, SFX_EVENT_DEACTIVATEDOC },
+ { 0, 0, 0 }
+};
+
+
+void SwHTMLParser::NewScript()
+{
+ ParseScriptOptions( aScriptType, eScriptLang, aScriptURL,
+ aBasicLib, aBasicModule );
+
+ BOOL bDownload = aScriptURL.Len();
+ if( bDownload )
+ {
+ // Den Inhalt des Script-Tags ignorieren
+ bIgnoreRawData = TRUE;
+ }
+}
+
+void SwHTMLParser::EndScript()
+{
+ BOOL bInsIntoBasic = FALSE,
+ bInsSrcIntoFld = FALSE;
+
+ switch( eScriptLang )
+ {
+ case HTML_SL_STARBASIC:
+ bInsIntoBasic = TRUE;
+ break;
+ default:
+ bInsSrcIntoFld = TRUE;
+ break;
+ }
+
+
+ bIgnoreRawData = FALSE;
+ aScriptSource.ConvertLineEnd();
+
+// MIB 23.5.97: SGML-Kommentare brauchen nicht mehr entfernt zu werden,
+// weil JS das jetzt selber kann.
+// RemoveSGMLComment( aScriptSource, TRUE );
+
+ // Ausser StarBasic und unbenutzem JavaScript jedes Script oder den
+ // Modulnamen in einem Feld merken merken
+ if( bInsSrcIntoFld )
+ {
+ SwScriptFieldType *pType =
+ (SwScriptFieldType*)pDoc->GetSysFldType( RES_SCRIPTFLD );
+
+ SwScriptField aFld( pType, aScriptType,
+ aScriptURL.Len() ? aScriptURL : aScriptSource,
+ aScriptURL.Len()!=0 );
+ InsertAttr( SwFmtFld( aFld ) );
+ }
+
+ SwDocShell *pDocSh = pDoc->GetDocShell();
+ if( aScriptSource.Len() && pDocSh &&
+ bInsIntoBasic && IsNewDoc() )
+ {
+ // Fuer JavaScript und StarBasic noch ein Basic-Modul anlegen
+ // Das Basic entfernt natuerlich weiterhin keine SGML-Kommentare
+ RemoveSGMLComment( aScriptSource, TRUE );
+
+ SFX_APP()->EnterBasicCall();
+
+ BasicManager *pBasicMan = pDocSh->GetBasicManager();
+ ASSERT( pBasicMan, "Wo ist der BasicManager?" );
+ if( pBasicMan )
+ {
+ StarBASIC *pBasic;
+ if( aBasicLib.Len() )
+ {
+ pBasic = pBasicMan->GetLib( aBasicLib );
+ if( !pBasic )
+ pBasic = pBasicMan->CreateLib( aBasicLib );
+ }
+ else
+ pBasic = pBasicMan->GetStdLib();
+
+ if( pBasic )
+ {
+ if( !aBasicModule.Len() )
+ {
+ BOOL bFound = TRUE;
+ while( bFound )
+ {
+ aBasicModule.AssignAscii( "Modul" );
+ aBasicModule += String::CreateFromInt32(
+ (sal_Int32)(++nSBModuleCnt) );
+ bFound = (pBasic->FindModule( aBasicModule ) != 0);
+ }
+ }
+
+ SbModule *pModule =
+ pBasic->MakeModule( aBasicModule, aScriptSource );
+ if( pModule )
+ pModule->Compile();
+ }
+ }
+
+ SFX_APP()->LeaveBasicCall();
+ }
+
+ aScriptSource.Erase();
+ aScriptType.Erase();
+ aScriptURL.Erase();
+
+ aBasicLib.Erase();
+ aBasicModule.Erase();
+}
+
+void SwHTMLParser::AddScriptSource()
+{
+ // Hier merken wir und nur ein par Strings
+ if( aToken.Len() > 2 &&
+ (HTML_SL_STARBASIC==eScriptLang && aToken.GetChar( 0 ) == '\'') )
+ {
+ xub_StrLen nPos = STRING_NOTFOUND;
+ if( !aBasicLib.Len() )
+ {
+ nPos = aToken.SearchAscii( sHTML_SB_library );
+ if( nPos != STRING_NOTFOUND )
+ {
+ aBasicLib =
+ aToken.Copy( nPos + sizeof(sHTML_SB_library) - 1 );
+ aBasicLib.EraseLeadingChars().EraseTrailingChars();
+ }
+ }
+
+ if( !aBasicModule.Len() && nPos==STRING_NOTFOUND )
+ {
+ nPos = aToken.SearchAscii( sHTML_SB_module );
+ if( nPos != STRING_NOTFOUND )
+ {
+ aBasicModule =
+ aToken.Copy( nPos + sizeof(sHTML_SB_module) - 1 );
+ aBasicModule.EraseLeadingChars().EraseTrailingChars();
+ }
+ }
+
+ if( nPos==STRING_NOTFOUND )
+ {
+ if( aScriptSource.Len() )
+ aScriptSource += '\n';
+ (aScriptSource += aToken);
+ }
+ }
+ else if( aScriptSource.Len() || aToken.Len() )
+ {
+ // Leerzeilen am Anfang werden ignoriert
+ if( aScriptSource.Len() )
+ {
+ aScriptSource += '\n';
+ }
+ else
+ {
+ // Wir stehen hinter dem CR/LF der Zeile davor
+ nScriptStartLineNr = GetLineNr() - 1;
+ }
+ aScriptSource += aToken;
+ }
+}
+
+void SwHTMLParser::InsertBasicDocEvent( USHORT nEvent, const String& rName,
+ ScriptType eScrType,
+ const String& rScrType )
+{
+ ASSERT( rName.Len(), "InsertBasicDocEvent() ohne Macro gerufen" );
+ if( !rName.Len() )
+ return;
+
+ SwDocShell *pDocSh = pDoc->GetDocShell();
+ ASSERT( pDocSh, "Wo ist die DocShell?" );
+ if( !pDocSh )
+ return;
+
+ String sEvent( rName );
+ sEvent.ConvertLineEnd();
+ String sScriptType;
+ if( EXTENDED_STYPE == eScrType )
+ sScriptType = rScrType;
+
+ SfxEventConfiguration* pECfg = SFX_APP()->GetEventConfig();
+ pECfg->ConfigureEvent( nEvent, SvxMacro( sEvent, sScriptType, eScrType ),
+ pDocSh );
+}
+
+void SwHTMLWriter::OutBasic()
+{
+ if( !bCfgStarBasic )
+ return;
+
+ SFX_APP()->EnterBasicCall();
+
+ BasicManager *pBasicMan = pDoc->GetDocShell()->GetBasicManager();
+ ASSERT( pBasicMan, "Wo ist der Basic-Manager?" );
+ //JP 17.07.96: Bug 29538 - nur das DocumentBasic schreiben
+ if( !pBasicMan || pBasicMan == SFX_APP()->GetBasicManager() )
+ {
+ SFX_APP()->LeaveBasicCall();
+ return;
+ }
+
+ // und jetzt alle StarBasic-Module und alle unbenutzen JavaSrript-Module
+ // ausgeben
+ for( USHORT i=0; i<pBasicMan->GetLibCount(); i++ )
+ {
+ StarBASIC *pBasic = pBasicMan->GetLib( i );
+ const String& rLibName = pBasic->GetName();
+
+ SbxArray *pModules = pBasic->GetModules();
+ for( USHORT j=0; j<pModules->Count(); j++ )
+ {
+ const SbModule *pModule = PTR_CAST( SbModule, pModules->Get(j) );
+ ASSERT( pModule, "Wo ist das Modul?" );
+
+ String sLang(
+ String::CreateFromAscii( SVX_MACRO_LANGUAGE_STARBASIC ) );
+ ScriptType eType = STARBASIC;
+
+ if( 0==i && 0==j )
+ {
+ OutNewLine();
+ ByteString sOut( '<' );
+ sOut.Append( sHTML_meta );
+ sOut.Append( ' ' );
+ sOut.Append( sHTML_O_httpequiv );
+ sOut.Append( "=\"" );
+ sOut.Append( sHTML_META_content_script_type );
+ sOut.Append( "\" " );
+ sOut.Append( sHTML_O_content );
+ sOut.Append( "=\"text/x-" );
+ Strm() << sOut.GetBuffer();
+ // Entities aren't welcome here
+ ByteString sLang8( sLang, eDestEnc );
+ Strm() << sLang8.GetBuffer() << "\">";
+ }
+
+ const String& rModName = pModule->GetName();
+ Strm() << SwHTMLWriter::sNewLine; // nicht einruecken!
+ HTMLOutFuncs::OutScript( Strm(), pModule->GetSource(),
+ sLang, eType, aEmptyStr,
+ &rLibName, &rModName,
+ eDestEnc );
+ }
+ }
+
+ SFX_APP()->LeaveBasicCall();
+}
+
+
+void SwHTMLWriter::OutBasicBodyEvents()
+{
+ SwDocShell *pDocSh = pDoc->GetDocShell();
+ if( !pDocSh )
+ return;
+
+ SfxEventConfiguration* pECfg = SFX_APP()->GetEventConfig();
+ ASSERT( pECfg, "Wo ist die Event-Konfiguration?" );
+ if( !pECfg )
+ return;
+
+ SvxMacroTableDtor *pMacTable = pECfg->GetDocEventTable( pDocSh );
+ if( pMacTable && pMacTable->Count() )
+ HTMLOutFuncs::Out_Events( Strm(), *pMacTable, aBodyEventTable,
+ bCfgStarBasic, eDestEnc );
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmlbas.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.92 2000/09/18 16:04:43 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.91 2000/08/24 20:17:16 jp
+ Bug #78047#: EndScript - no assert
+
+ Revision 1.90 2000/05/15 10:07:15 os
+ Basic removed
+
+ Revision 1.89 2000/04/28 14:29:11 mib
+ unicode
+
+ Revision 1.88 2000/04/10 12:20:55 mib
+ unicode
+
+ Revision 1.87 2000/03/30 07:31:01 os
+ UNO III
+
+ Revision 1.86 2000/03/16 16:40:32 kz
+ remove include sbjsmod.hxx
+
+ Revision 1.85 2000/03/03 12:44:32 mib
+ Removed JavaScript
+
+ Revision 1.84 1999/11/19 16:40:19 os
+ modules renamed
+
+ Revision 1.83 1999/09/21 09:48:47 mib
+ multiple text encodings
+
+ Revision 1.82 1999/09/17 12:12:45 mib
+ support of multiple and non system text encodings
+
+ Revision 1.81 1999/04/27 14:47:32 JP
+ Bug #65314#: neu: IsJavaScriptEnabled
+
+
+ Rev 1.80 27 Apr 1999 16:47:32 JP
+ Bug #65314#: neu: IsJavaScriptEnabled
+
+ Rev 1.79 27 Jan 1999 09:43:32 OS
+ #56371# TF_ONE51
+
+ Rev 1.78 22 Sep 1998 13:46:50 MIB
+ #56943#: Bei String-Ueberlauf im JavaScript Fehlermeldung ausgeben
+
+ Rev 1.77 11 Sep 1998 15:04:50 MIB
+ generische Events wieder fuer alle Script-Typen erlauben
+
+ Rev 1.76 09 Sep 1998 17:58:10 MIB
+ #55407#: Stat onclosedoc inprepareclodedoc fuer unload-Event benutzen
+
+ Rev 1.75 28 Jul 1998 12:07:12 MIB
+ #52559#: JavaScript-Zeilennummern
+
+ Rev 1.74 27 Jul 1998 10:55:28 MIB
+ #50320#: <SCRIPT SRC=...> wieder aktiviert
+
+ Rev 1.73 08 Jul 1998 17:20:24 MIB
+ StarScript
+
+ Rev 1.72 04 Jul 1998 17:43:48 MIB
+ StarScript in IDE, StarScript-Events
+
+ Rev 1.71 05 May 1998 13:09:28 MIB
+ Scripte aus ANSI-Zeichensetz konvertieren
+
+ Rev 1.70 21 Apr 1998 11:21:46 RG
+ String -> UString
+
+ Rev 1.69 24 Mar 1998 12:36:18 MIB
+ fix #47774#: Nur Dokument-Events exportieren
+
+ Rev 1.68 20 Feb 1998 19:04:28 MA
+ header
+
+ Rev 1.67 20 Feb 1998 15:11:16 MIB
+ include
+
+ Rev 1.66 19 Feb 1998 16:15:02 MIB
+ StarOne-TF: StarOne-Scripte
+
+ Rev 1.65 26 Nov 1997 19:09:18 MA
+ includes
+
+ Rev 1.64 24 Nov 1997 13:49:26 TJ
+ include svhtml.hxx
+
+ Rev 1.63 21 Nov 1997 09:42:40 MIB
+ fix #45422#: Dokument-Basic beim Basic-Import immer anlegen
+
+ Rev 1.62 03 Nov 1997 14:08:42 MA
+ precomp entfernt
+
+ Rev 1.61 09 Oct 1997 14:33:50 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.60 16 Sep 1997 11:11:56 MIB
+ unbenutzte Funktionen entfernt
+
+ Rev 1.59 12 Sep 1997 11:51:58 MIB
+ fix #41136#: &(xxx);-Makros
+
+ Rev 1.58 01 Sep 1997 13:52:46 MIB
+ Zeichensetz-/Zeilenende-Konvertierung fuer Event-Optionen
+
+ Rev 1.57 29 Aug 1997 16:50:28 OS
+ DLL-Umstellung
+
+ Rev 1.56 15 Aug 1997 12:47:48 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.55 11 Aug 1997 14:05:04 OM
+ Headerfile-Umstellung
+
+ Rev 1.54 07 Aug 1997 15:08:56 OM
+ Headerfile-Umstellung
+
+ Rev 1.53 15 Jul 1997 14:07:20 MIB
+ fix: Scripte in System-Zeichensatz wandeln
+
+ Rev 1.52 02 Jul 1997 10:34:40 MIB
+ Assert weg
+
+ Rev 1.51 23 May 1997 16:04:34 MIB
+ Nur noch SGML-Kommentare fuer StarBASIC entfernen
+
+ Rev 1.50 22 May 1997 11:01:30 MIB
+ URL-Flag am Script-Feld
+
+ Rev 1.49 21 May 1997 11:15:04 MIB
+ fix #39768#: <SCRIPT SRC=...> zum Eibindenen externer Scripte
+
+ Rev 1.48 02 May 1997 20:53:00 NF
+ includes weil SfxApplication unbekannt!
+
+ Rev 1.47 11 Apr 1997 14:45:14 MIB
+ fix: Kein Basic/JsvaScript beim einfuegen, JAVA-Basic-IDE-Stuff entfernt
+
+ Rev 1.46 24 Mar 1997 17:41:36 MIB
+ fix #37936#: SCRIPT in SELECT erlauben, opt: OutBasic aus Goodies nutzen
+
+ Rev 1.45 19 Mar 1997 14:43:48 MIB
+ fix #37904#: Vor --> ein // exportieren
+
+ Rev 1.44 23 Feb 1997 14:03:04 MIB
+ LiveScript wie JavaScript behandeln
+
+ Rev 1.43 20 Feb 1997 11:04:52 MIB
+ fix: Script-Sourcen fuer Nicht-JS immer loeschen
+
+ Rev 1.42 11 Feb 1997 16:14:06 HJS
+ fuer segprag
+
+ Rev 1.41 11 Feb 1997 15:53:38 MIB
+ fix #35907# Basic-Source-String loeschen
+
+ Rev 1.40 10 Feb 1997 16:50:20 JP
+ Umstellung JavaScript aufrufen und FrameSet Erkennung
+
+ Rev 1.39 30 Jan 1997 17:31:38 MIB
+ kein JavaScript mehr in Basic-Module
+
+ Rev 1.38 23 Jan 1997 15:02:52 MIB
+ falsches Assert weg
+
+ Rev 1.37 22 Jan 1997 09:27:30 MIB
+ Hack fuer Erkennung von unbenutztem JavaScript richtig gemacht
+
+ Rev 1.36 21 Jan 1997 17:48:44 MIB
+ Events ueber HTMLParser ausgeben
+
+ Rev 1.35 17 Jan 1997 16:44:08 MIB
+ ONFOCUS und ONBLUR am Body-Tag exportieren
+
+ Rev 1.34 16 Jan 1997 19:23:26 MIB
+ JavaScript in Basic-Modulen, unbenutztes JavaScript erkennen
+
+ Rev 1.33 15 Jan 1997 15:34:22 MIB
+ bug fix: auch JavaScript1.1 erkennen, Script-Typ erkennung des HTMLParser nutzen
+
+ Rev 1.32 15 Jan 1997 14:22:40 MIB
+ bug fix: Ohne Medium keine JavaScript laden
+
+ Rev 1.31 13 Jan 1997 12:17:06 MIB
+ JavaScript in Basic Modulen speichern (noch nicht aktiviert)
+
+ Rev 1.30 08 Jan 1997 21:23:00 HJS
+ includes
+
+ Rev 1.29 19 Dec 1996 11:33:56 MIB
+ JavaScript nicht ausfuehren, wenn die Filter-Detection das schon getan hat
+
+ Rev 1.28 18 Dec 1996 14:49:52 MIB
+ Macro-Unstellung am SFX/Script-Unterstuetung am HTMLParser
+
+ Rev 1.27 16 Dec 1996 16:23:36 MIB
+ Bug fix: Script-Felder und Kommentare vor Tabellen
+
+ Rev 1.26 05 Dec 1996 14:44:24 JP
+ Unterscheidung von Basic/JavaScript an den SvxMacros
+
+ Rev 1.25 04 Dec 1996 15:01:16 JP
+ SW_EVENT -> SVX_EVENT/SFX_EVENT
+
+ Rev 1.24 01 Dec 1996 07:51:02 JP
+ JavaScript bis zur 347 ausgebaut (MM)
+
+ Rev 1.23 25 Nov 1996 15:19:14 JP
+ InsertBasicModul: Kommentar an Anfang bis zum ZeilenUmbruch entfernen
+
+ Rev 1.22 23 Nov 1996 13:37:54 JP
+ InsertBasicINetFmtEvent entfernt; wurde ueberfluessig
+
+ Rev 1.21 21 Nov 1996 16:29:10 JP
+ Handler an den Anchor/Images immer speichern
+
+ Rev 1.20 20 Nov 1996 15:09:52 JP
+ Java ueber Eintrag in der Ini freischalten
+
+ Rev 1.19 19 Nov 1996 14:06:18 JP
+ ImageEvents schreiben
+
+ Rev 1.18 15 Nov 1996 18:44:20 JP
+ InsertAndCreate erstmal nur zum Testen
+
+ Rev 1.17 15 Nov 1996 18:25:06 JP
+ JavaScript einfuegen und laufen lassen
+
+ Rev 1.16 13 Nov 1996 14:50:04 JP
+ neu: ScriptFeld am Doc setzen
+
+ Rev 1.15 23 Oct 1996 19:49:00 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.14 09 Oct 1996 13:40:12 MIB
+ Pretty-Printing: Einrueckung auf Absatz-Ebene
+
+ Rev 1.13 19 Sep 1996 12:16:00 MIB
+ StarBasic-Export-Option beachten
+
+ Rev 1.12 02 Sep 1996 18:40:18 JP
+ INetFeld entfernt
+
+ Rev 1.11 21 Aug 1996 16:55:26 MIB
+ Probleme mit dem URLATR-define behoben
+
+ Rev 1.10 21 Aug 1996 14:59:30 MIB
+ Verwendung des URLATTR-defines vervollstaenigt
+
+ Rev 1.9 15 Aug 1996 10:10:46 MIB
+ URL-Attribut exportieren
+
+ Rev 1.8 14 Aug 1996 16:22:22 MIB
+ gcc und msvc: statt *aStr nicht aStr[0] sondern aStr[(USHORT)0]
+
+ Rev 1.7 13 Aug 1996 20:33:14 sdo
+ GCC
+
+ Rev 1.6 06 Aug 1996 12:54:44 MIB
+ Umstellung INet-Felder in INet-Attribut verbereitet
+
+ Rev 1.5 02 Aug 1996 18:41:30 MIB
+ Verwendung von pFlyFmt typsicherer gemacht = bug fix fuer Draw-Formate
+
+ Rev 1.4 19 Jul 1996 15:08:12 JP
+ Bug #29538#: nur das DocBasis schreiben
+
+ Rev 1.3 01 Jul 1996 16:45:12 JP
+ statt SFX_APP pApp benutzen, DocShell muss nicht vorhanden sein (Clipboard)
+
+ Rev 1.2 27 Jun 1996 16:41:38 MIB
+ Kommentare um Basic-Source verbessert entfernen, Includes aufgeraeumt
+
+ Rev 1.1 07 Jun 1996 12:43:10 MIB
+ Macros an INetField/NoTxtNode lesen und schreiben
+
+ Rev 1.0 30 May 1996 15:02:46 MIB
+ Initial revision.
+
+
+
+*************************************************************************/
+
+
diff --git a/sw/source/filter/html/htmlcss1.cxx b/sw/source/filter/html/htmlcss1.cxx
new file mode 100644
index 000000000000..8a20f433d93a
--- /dev/null
+++ b/sw/source/filter/html/htmlcss1.cxx
@@ -0,0 +1,2596 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlcss1.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define ITEMID_FONTLIST SID_ATTR_CHAR_FONTLIST
+#include "hintids.hxx"
+
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _INTN_HXX //autogen
+#include <tools/intn.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_FLSTITEM_HXX //autogen
+#include <svx/flstitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_KEEPITEM_HXX //autogen
+#include <svx/keepitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include "frmatr.hxx"
+#endif
+#ifndef _CHARFMT_HXX //autogen
+#include <charfmt.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+
+
+#include "doc.hxx"
+#include "pam.hxx"
+#include "ndtxt.hxx"
+#include "poolfmt.hxx"
+#include "docsh.hxx"
+#include "paratr.hxx"
+#include "pagedesc.hxx"
+#include "css1kywd.hxx"
+#include "swcss1.hxx"
+#include "htmlnum.hxx"
+#include "swhtml.hxx"
+
+// Wie viele Zeilen/Zeichen sind fuer DropCaps erlaubt?
+// (Gibt es vielleicht woanders entsprechende Werte?)
+#define MAX_DROPCAP_LINES 9
+#define MAX_DROPCAP_CHARS 9
+
+void lcl_swcss1_setEncoding( SwFmt& rFmt, rtl_TextEncoding eEnc );
+
+/* */
+
+// Implementierung des SwCSS1Parsers (eigentlich swcss1.cxx)
+static struct SwCSS1ItemIds
+{
+ USHORT nFmtBreak;
+ USHORT nFmtPageDesc;
+ USHORT nFmtKeep;
+
+ SwCSS1ItemIds() :
+ nFmtBreak( RES_BREAK ),
+ nFmtPageDesc( RES_PAGEDESC ),
+ nFmtKeep( RES_KEEP )
+ {}
+
+} aItemIds;
+
+void SwCSS1Parser::ChgPageDesc( const SwPageDesc *pPageDesc,
+ const SwPageDesc& rNewPageDesc )
+{
+ USHORT nPageDescs = pDoc->GetPageDescCnt();
+ for( USHORT i=0; i<nPageDescs; i++ )
+ if( pPageDesc == &(pDoc->GetPageDesc(i)) )
+ {
+ pDoc->ChgPageDesc( i, rNewPageDesc );
+ return;
+ }
+
+ ASSERT( i<nPageDescs, "Seitenvorlage nicht gefunden" );
+}
+
+SwCSS1Parser::SwCSS1Parser( SwDoc *pD, ULONG aFHeights[7], BOOL bNewDoc ) :
+ SvxCSS1Parser( pD->GetAttrPool(), MM50/2,
+ (USHORT*)&aItemIds, sizeof(aItemIds) / sizeof(USHORT) ),
+ nDropCapCnt( 0 ), bIsNewDoc( bNewDoc ), pDoc( pD ),
+ bBodyBGColorSet( FALSE ), bBodyBackgroundSet( FALSE ),
+ bBodyTextSet( FALSE ), bBodyLinkSet( FALSE ), bBodyVLinkSet( FALSE ),
+ bSetFirstPageDesc( FALSE ), bSetRightPageDesc( FALSE ),
+ bTableHeaderTxtCollSet( FALSE ), bTableTxtCollSet( FALSE ),
+ bLinkCharFmtsSet( FALSE )
+{
+ aFontHeights[0] = aFHeights[0];
+ aFontHeights[1] = aFHeights[1];
+ aFontHeights[2] = aFHeights[2];
+ aFontHeights[3] = aFHeights[3];
+ aFontHeights[4] = aFHeights[4];
+ aFontHeights[5] = aFHeights[5];
+ aFontHeights[6] = aFHeights[6];
+}
+
+SwCSS1Parser::~SwCSS1Parser()
+{
+}
+
+
+/* */
+
+// Feature: PrintExt
+BOOL SwCSS1Parser::SetFmtBreak( SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rPropInfo )
+{
+ SvxBreak eBreak = SVX_BREAK_NONE;
+ BOOL bKeep = FALSE;
+ BOOL bSetKeep = FALSE, bSetBreak = FALSE, bSetPageDesc = FALSE;
+ const SwPageDesc *pPageDesc = 0;
+ switch( rPropInfo.ePageBreakBefore )
+ {
+ case SVX_CSS1_PBREAK_ALWAYS:
+ eBreak = SVX_BREAK_PAGE_BEFORE;
+ bSetBreak = TRUE;
+ break;
+ case SVX_CSS1_PBREAK_LEFT:
+ pPageDesc = GetLeftPageDesc( TRUE );
+ bSetPageDesc = TRUE;
+ break;
+ case SVX_CSS1_PBREAK_RIGHT:
+ pPageDesc = GetRightPageDesc( TRUE );
+ bSetPageDesc = TRUE;
+ break;
+ case SVX_CSS1_PBREAK_AUTO:
+ bSetBreak = bSetPageDesc = TRUE;
+ break;
+// case SVX_CSS1_PBREAK_AVOID:
+ // Hier koennte man SvxKeepItem am Absatz davor einfuegen
+// break;
+ }
+ switch( rPropInfo.ePageBreakAfter )
+ {
+ case SVX_CSS1_PBREAK_ALWAYS:
+ case SVX_CSS1_PBREAK_LEFT:
+ case SVX_CSS1_PBREAK_RIGHT:
+ // LEFT/RIGHT koennte man auch am Absatz davor setzen
+ eBreak = SVX_BREAK_PAGE_AFTER;
+ bSetBreak = TRUE;
+ break;
+ case SVX_CSS1_PBREAK_AUTO:
+ bSetBreak = bSetKeep = bSetPageDesc = TRUE;
+ break;
+ case SVX_CSS1_PBREAK_AVOID:
+ bKeep = bSetKeep = TRUE;
+ break;
+ }
+
+ if( bSetBreak )
+ rItemSet.Put( SvxFmtBreakItem( eBreak ) );
+ if( bSetPageDesc )
+ rItemSet.Put( SwFmtPageDesc( pPageDesc ) );
+ if( bSetKeep )
+ rItemSet.Put( SvxFmtKeepItem( bKeep ) );
+
+ return bSetBreak;
+}
+// /Feature: PrintExt
+
+static void SetCharFmtAttrs( SwCharFmt *pCharFmt, SfxItemSet& rItemSet )
+{
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_CHRATR_FONTSIZE, FALSE, &pItem ) &&
+ ((const SvxFontHeightItem *)pItem)->GetProp() != 100)
+ {
+ // %-Angaben beim FontHeight-Item werden nicht unterstuetzt
+ rItemSet.ClearItem( RES_CHRATR_FONTSIZE );
+ }
+
+ pCharFmt->SetAttr( rItemSet );
+
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BACKGROUND, FALSE, &pItem ) )
+ {
+ // Ein Brush-Item mit RES_BACKGROUND muss noch in eines mit
+ // RES_CHRATR_BACKGROUND gewandelt werden
+
+ SvxBrushItem aBrushItem( *(const SvxBrushItem *)pItem );
+ aBrushItem.SetWhich( RES_CHRATR_BACKGROUND );
+ pCharFmt->SetAttr( aBrushItem );
+ }
+}
+
+void SwCSS1Parser::SetLinkCharFmts()
+{
+ ASSERT( !bLinkCharFmtsSet, "Aufruf von SetLinkCharFmts unnoetig" );
+
+ SvxCSS1MapEntry *pStyleEntry =
+ GetTag( String::CreateFromAscii(sHTML_anchor) );
+ SwCharFmt *pUnvisited = 0, *pVisited = 0;
+ if( pStyleEntry )
+ {
+ SfxItemSet& rItemSet = pStyleEntry->GetItemSet();
+ BOOL bColorSet = (SFX_ITEM_SET==rItemSet.GetItemState(RES_CHRATR_COLOR,
+ FALSE));
+ pUnvisited = GetCharFmtFromPool( RES_POOLCHR_INET_NORMAL );
+ SetCharFmtAttrs( pUnvisited, rItemSet );
+ bBodyLinkSet |= bColorSet;
+
+ pVisited = GetCharFmtFromPool( RES_POOLCHR_INET_VISIT );
+ SetCharFmtAttrs( pVisited, rItemSet );
+ bBodyVLinkSet |= bColorSet;
+ }
+
+ String sTmp( String::CreateFromAscii(sHTML_anchor) );
+ sTmp.Append( ':' );
+ sTmp.AppendAscii( sCSS1_link );
+ pStyleEntry = GetTag( sTmp );
+ if( pStyleEntry )
+ {
+ SfxItemSet& rItemSet = pStyleEntry->GetItemSet();
+ BOOL bColorSet = (SFX_ITEM_SET==rItemSet.GetItemState(RES_CHRATR_COLOR,
+ FALSE));
+ if( !pUnvisited )
+ pUnvisited = GetCharFmtFromPool( RES_POOLCHR_INET_NORMAL );
+ SetCharFmtAttrs( pUnvisited, rItemSet );
+ bBodyLinkSet |= bColorSet;
+ }
+
+ sTmp.AssignAscii( sHTML_anchor );
+ sTmp.Assign( ':' );
+ sTmp.AppendAscii( sCSS1_visited );
+ pStyleEntry = GetTag( sTmp );
+ if( pStyleEntry )
+ {
+ SfxItemSet& rItemSet = pStyleEntry->GetItemSet();
+ BOOL bColorSet = (SFX_ITEM_SET==rItemSet.GetItemState(RES_CHRATR_COLOR,
+ FALSE));
+ if( !pVisited )
+ pVisited = GetCharFmtFromPool( RES_POOLCHR_INET_VISIT );
+ SetCharFmtAttrs( pVisited, rItemSet );
+ bBodyVLinkSet |= bColorSet;
+ }
+
+ bLinkCharFmtsSet = TRUE;
+}
+
+static void SetTxtCollAttrs( SwTxtFmtColl *pColl, SfxItemSet& rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ SwCSS1Parser *pCSS1Parser )
+{
+ const SfxItemSet& rCollItemSet = pColl->GetAttrSet();
+ const SfxPoolItem *pCollItem, *pItem;
+
+ // linker, rechter Rand und Erstzeilen-Einzug
+ if( (rPropInfo.bLeftMargin || rPropInfo.bRightMargin ||
+ rPropInfo.bTextIndent) &&
+ (!rPropInfo.bLeftMargin || !rPropInfo.bRightMargin ||
+ !rPropInfo.bTextIndent) &&
+ SFX_ITEM_SET == rCollItemSet.GetItemState(RES_LR_SPACE,TRUE,&pCollItem) &&
+ SFX_ITEM_SET == rItemSet.GetItemState(RES_LR_SPACE,FALSE,&pItem) )
+ {
+ const SvxLRSpaceItem *pLRItem = (const SvxLRSpaceItem *)pItem;
+
+ SvxLRSpaceItem aLRItem( *((const SvxLRSpaceItem *)pCollItem) );
+ if( rPropInfo.bLeftMargin )
+ aLRItem.SetTxtLeft( pLRItem->GetTxtLeft() );
+ if( rPropInfo.bRightMargin )
+ aLRItem.SetRight( pLRItem->GetRight() );
+ if( rPropInfo.bTextIndent )
+ aLRItem.SetTxtFirstLineOfst( pLRItem->GetTxtFirstLineOfst() );
+
+ rItemSet.Put( aLRItem );
+ }
+
+ // oberer und unterer Rand
+ if( (rPropInfo.bTopMargin || rPropInfo.bBottomMargin) &&
+ (!rPropInfo.bTopMargin || !rPropInfo.bBottomMargin) &&
+ SFX_ITEM_SET == rCollItemSet.GetItemState(RES_UL_SPACE,TRUE,
+ &pCollItem) &&
+ SFX_ITEM_SET == rItemSet.GetItemState(RES_UL_SPACE,FALSE,&pItem) )
+ {
+ const SvxULSpaceItem *pULItem = (const SvxULSpaceItem *)pItem;
+
+ SvxULSpaceItem aULItem( *((const SvxULSpaceItem *)pCollItem) );
+ if( rPropInfo.bTopMargin )
+ aULItem.SetUpper( pULItem->GetUpper() );
+ if( rPropInfo.bBottomMargin )
+ aULItem.SetLower( pULItem->GetLower() );
+
+ rItemSet.Put( aULItem );
+ }
+
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_CHRATR_FONTSIZE, FALSE,
+ &pItem ) &&
+ ((const SvxFontHeightItem *)pItem)->GetProp() != 100)
+ {
+ // %-Angaben beim FontHeight-Item werden nicht unterstuetzt
+ rItemSet.ClearItem( RES_CHRATR_FONTSIZE );
+ }
+
+// Feature: PrintExt
+ pCSS1Parser->SetFmtBreak( rItemSet, rPropInfo );
+// /Feature: PrintExt
+
+ pColl->SetAttr( rItemSet );
+}
+
+void SwCSS1Parser::SetTableTxtColl( BOOL bHeader )
+{
+ ASSERT( !(bHeader ? bTableHeaderTxtCollSet : bTableTxtCollSet),
+ "Aufruf von SetTableTxtColl unnoetig" );
+
+ USHORT nPoolId;
+ String sTag;
+ if( bHeader )
+ {
+ nPoolId = RES_POOLCOLL_TABLE_HDLN;
+ sTag.AssignAscii( sHTML_tableheader );
+ }
+ else
+ {
+ nPoolId = RES_POOLCOLL_TABLE;
+ sTag.AssignAscii( sHTML_tabledata );
+ }
+
+ SwTxtFmtColl *pColl = 0;
+
+ // The following entries will never be used again and may be changed.
+ SvxCSS1MapEntry *pStyleEntry = GetTag( sTag );
+ if( pStyleEntry )
+ {
+ pColl = GetTxtFmtColl( nPoolId, aEmptyStr );
+ SetTxtCollAttrs( pColl, pStyleEntry->GetItemSet(),
+ pStyleEntry->GetPropertyInfo(), this );
+ }
+
+ String sTmp( sTag );
+ sTmp.Append( ' ' );
+ sTmp.AppendAscii( sHTML_parabreak );
+ pStyleEntry = GetTag( sTmp );
+ if( pStyleEntry )
+ {
+ if( !pColl )
+ pColl = GetTxtFmtColl( nPoolId, aEmptyStr );
+ SetTxtCollAttrs( pColl, pStyleEntry->GetItemSet(),
+ pStyleEntry->GetPropertyInfo(), this );
+ }
+
+ if( bHeader )
+ bTableHeaderTxtCollSet = TRUE;
+ else
+ bTableTxtCollSet = TRUE;
+}
+
+void SwCSS1Parser::SetPageDescAttrs( const SvxBrushItem *pBrush,
+ SfxItemSet *pItemSet )
+{
+ SvxBrushItem aBrushItem;
+ SvxBoxItem aBoxItem;
+ BOOL bSetBrush = pBrush!=0, bSetBox = FALSE;
+ if( pBrush )
+ aBrushItem = *pBrush;
+
+ if( pItemSet )
+ {
+ const SfxPoolItem *pItem = 0;
+ if( SFX_ITEM_SET == pItemSet->GetItemState( RES_BACKGROUND, FALSE,
+ &pItem ) )
+ {
+ // ein Hintergrund wird gesetzt
+ aBrushItem = *((const SvxBrushItem *)pItem);
+ pItemSet->ClearItem( RES_BACKGROUND );
+ bSetBrush = TRUE;
+ }
+
+ if( SFX_ITEM_SET == pItemSet->GetItemState( RES_BOX, FALSE, &pItem ) )
+ {
+ // eine Umrandung wird gesetzt
+ aBoxItem = *((const SvxBoxItem *)pItem);
+ pItemSet->ClearItem( RES_BOX );
+ bSetBox = TRUE;
+ }
+ }
+
+ if( bSetBrush || bSetBox )
+ {
+ static USHORT aPoolIds[] = { RES_POOLPAGE_HTML, RES_POOLPAGE_FIRST,
+ RES_POOLPAGE_LEFT, RES_POOLPAGE_RIGHT };
+ for( USHORT i=0; i<4; i++ )
+ {
+ const SwPageDesc *pPageDesc = GetPageDesc( aPoolIds[i], FALSE );
+ if( pPageDesc )
+ {
+ SwPageDesc aNewPageDesc( *pPageDesc );
+ SwFrmFmt &rMaster = aNewPageDesc.GetMaster();
+ if( bSetBrush )
+ rMaster.SetAttr( aBrushItem );
+ if( bSetBox )
+ rMaster.SetAttr( aBoxItem );
+
+ ChgPageDesc( pPageDesc, aNewPageDesc );
+ }
+ }
+ }
+}
+
+// Feature: PrintExt
+void SwCSS1Parser::SetPageDescAttrs( const SwPageDesc *pPageDesc,
+ SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rPropInfo )
+{
+ if( !pPageDesc )
+ return;
+
+ SwPageDesc aNewPageDesc( *pPageDesc );
+ SwFrmFmt &rMaster = aNewPageDesc.GetMaster();
+ const SfxItemSet& rPageItemSet = rMaster.GetAttrSet();
+ const SfxPoolItem *pPageItem, *pItem;
+ BOOL bChanged = FALSE;
+
+ // linker, rechter Rand und Erstzeilen-Einzug
+ if( (rPropInfo.bLeftMargin || rPropInfo.bRightMargin) &&
+ SFX_ITEM_SET == rItemSet.GetItemState(RES_LR_SPACE,FALSE,&pItem) )
+ {
+ if( (!rPropInfo.bLeftMargin || !rPropInfo.bRightMargin) &&
+ SFX_ITEM_SET == rPageItemSet.GetItemState(RES_LR_SPACE,
+ TRUE,&pPageItem) )
+ {
+ const SvxLRSpaceItem *pLRItem = (const SvxLRSpaceItem *)pItem;
+
+ SvxLRSpaceItem aLRItem( *((const SvxLRSpaceItem *)pPageItem) );
+ if( rPropInfo.bLeftMargin )
+ aLRItem.SetLeft( pLRItem->GetLeft() );
+ if( rPropInfo.bRightMargin )
+ aLRItem.SetRight( pLRItem->GetRight() );
+
+ rMaster.SetAttr( aLRItem );
+ }
+ else
+ {
+ rMaster.SetAttr( *pItem );
+ }
+ bChanged = TRUE;
+ }
+
+ // oberer und unterer Rand
+ if( (rPropInfo.bTopMargin || rPropInfo.bBottomMargin) &&
+ SFX_ITEM_SET == rItemSet.GetItemState(RES_UL_SPACE,FALSE,&pItem) )
+ {
+ if( (!rPropInfo.bTopMargin || !rPropInfo.bBottomMargin) &&
+ SFX_ITEM_SET == rPageItemSet.GetItemState(RES_UL_SPACE,
+ TRUE,&pPageItem) )
+ {
+ const SvxULSpaceItem *pULItem = (const SvxULSpaceItem *)pItem;
+
+ SvxULSpaceItem aULItem( *((const SvxULSpaceItem *)pPageItem) );
+ if( rPropInfo.bTopMargin )
+ aULItem.SetUpper( pULItem->GetUpper() );
+ if( rPropInfo.bBottomMargin )
+ aULItem.SetLower( pULItem->GetLower() );
+
+ rMaster.SetAttr( aULItem );
+ }
+ else
+ {
+ rMaster.SetAttr( *pItem );
+ }
+ bChanged = TRUE;
+ }
+
+ // die Groesse
+ if( rPropInfo.eSizeType != SVX_CSS1_STYPE_NONE )
+ {
+ if( rPropInfo.eSizeType == SVX_CSS1_STYPE_TWIP )
+ {
+ rMaster.SetAttr( SwFmtFrmSize( ATT_FIX_SIZE, rPropInfo.nWidth,
+ rPropInfo.nHeight ) );
+ bChanged = TRUE;
+ }
+ else
+ {
+ // Bei "size: auto|portrait|landscape" bleibt die bisherige
+ // Groesse der Vorlage erhalten. Bei "landscape" und "portrait"
+ // wird das Landscape-Flag gesetzt und evtl. die Breite/Hoehe
+ // vertauscht.
+ SwFmtFrmSize aFrmSz( rMaster.GetFrmSize() );
+ BOOL bLandscape = aNewPageDesc.GetLandscape();
+ if( ( bLandscape &&
+ rPropInfo.eSizeType == SVX_CSS1_STYPE_PORTRAIT ) ||
+ ( !bLandscape &&
+ rPropInfo.eSizeType == SVX_CSS1_STYPE_LANDSCAPE ) )
+ {
+ SwTwips nTmp = aFrmSz.GetHeight();
+ aFrmSz.SetHeight( aFrmSz.GetWidth() );
+ aFrmSz.SetWidth( nTmp );
+ rMaster.SetAttr( aFrmSz );
+ aNewPageDesc.SetLandscape( !bLandscape );
+ bChanged = TRUE;
+ }
+ }
+ }
+
+ // Geht das wirklich?
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BACKGROUND, FALSE, &pItem ) )
+ {
+ // eine Umrandung wird gesetzt
+ rMaster.SetAttr( *pItem );
+ rItemSet.ClearItem( RES_BACKGROUND );
+ bChanged = TRUE;
+ }
+
+ if( bChanged )
+ ChgPageDesc( pPageDesc, aNewPageDesc );
+}
+// /Feature: PrintExt
+
+const SvxBrushItem& SwCSS1Parser::GetPageDescBackground() const
+{
+ return pDoc->GetPageDescFromPool( RES_POOLPAGE_HTML )
+ ->GetMaster().GetBackground();
+}
+
+static void GetTokenAndClass( const CSS1Selector *pSelector,
+ String& rToken, String& rClass )
+{
+ rToken = pSelector->GetString();
+ rClass.Erase();
+
+ if( CSS1_SELTYPE_ELEM_CLASS == pSelector->GetType() )
+ {
+ xub_StrLen nPos = rToken.Search( '.' );
+ ASSERT( nPos != STRING_NOTFOUND, "kein Punkt in Class-Selektor???" );
+ if( nPos != STRING_NOTFOUND )
+ {
+ rClass = rToken.Copy( nPos+1 );
+ rToken.Erase( nPos );
+ }
+ }
+
+ rToken.ToUpperAscii();
+}
+
+BOOL SwCSS1Parser::StyleParsed( const CSS1Selector *pSelector,
+ SfxItemSet& rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo )
+{
+ if( !bIsNewDoc )
+ return TRUE;
+
+ CSS1SelectorType eSelType = pSelector->GetType();
+ const CSS1Selector *pNext = pSelector->GetNext();
+
+ if( CSS1_SELTYPE_ID==eSelType && !pNext )
+ {
+ InsertId( pSelector->GetString(), rItemSet, rPropInfo );
+ }
+ else if( CSS1_SELTYPE_CLASS==eSelType && !pNext )
+ {
+ InsertClass( pSelector->GetString(), rItemSet, rPropInfo );
+ }
+ else if( CSS1_SELTYPE_PAGE==eSelType )
+ {
+ if( !pNext ||
+ (CSS1_SELTYPE_PSEUDO == pNext->GetType() &&
+ (pNext->GetString().EqualsIgnoreCaseAscii(sCSS1_left) ||
+ pNext->GetString().EqualsIgnoreCaseAscii(sCSS1_right) ||
+ pNext->GetString().EqualsIgnoreCaseAscii(sCSS1_first)) ) )
+ // || CSS1_SELTYPE_ELEMENT == pNext->GetType() )
+ {
+ String aName;
+ if( pNext )
+ aName = pNext->GetString();
+ InsertPage( aName,
+ pNext != 0 /*CSS1_SELTYPE_PSEUDO == pNext->GetType()*/,
+ rItemSet, rPropInfo );
+ }
+ }
+
+ if( CSS1_SELTYPE_ELEMENT != eSelType &&
+ CSS1_SELTYPE_ELEM_CLASS != eSelType)
+ return TRUE;
+
+ // Token und Class zu dem Selektor holen
+ String aToken, aClass;
+ GetTokenAndClass( pSelector, aToken, aClass );
+ int nToken = GetHTMLToken( aToken );
+
+ // und noch ein ganz par Infos zum naechsten Element
+ CSS1SelectorType eNextType = pNext ? pNext->GetType()
+ : CSS1_SELTYPE_ELEMENT;
+
+ // Erstmal ein par Spezialfaelle
+ if( CSS1_SELTYPE_ELEMENT==eSelType )
+ {
+ switch( nToken )
+ {
+ case HTML_ANCHOR_ON:
+ if( !pNext )
+ {
+ InsertTag( aToken, rItemSet, rPropInfo );
+ return FALSE;
+ }
+ else if( pNext && CSS1_SELTYPE_PSEUDO == eNextType )
+ {
+ // vielleicht A:visited oder A:link
+
+ String aPseudo( pNext->GetString() );
+ aPseudo.ToLowerAscii();
+
+ BOOL bInsert = FALSE;
+ switch( aPseudo.GetChar( 0 ))
+ {
+ case 'l':
+ if( aPseudo.EqualsAscii(sCSS1_link) )
+ {
+ bInsert = TRUE;
+ }
+ break;
+ case 'v':
+ if( aPseudo.EqualsAscii(sCSS1_visited) )
+ {
+ bInsert = TRUE;
+ }
+ break;
+ }
+ if( bInsert )
+ {
+ String sTmp( aToken );
+ (sTmp += ':') += aPseudo;
+ InsertTag( sTmp, rItemSet, rPropInfo );
+ return FALSE;
+ }
+ }
+ break;
+ case HTML_BODY_ON:
+ if( !pNext )
+ {
+ // BODY
+
+ // Den Hintergrund muessen wir vor dem Setzen abfragen,
+ // denn in SetPageDescAttrs wird er geloescht.
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET==rItemSet.GetItemState(RES_BACKGROUND,FALSE,&pItem) )
+ {
+ const SvxBrushItem *pBrushItem =
+ (const SvxBrushItem *)pItem;
+
+ if( !pBrushItem->GetColor().GetTransparency() )
+ bBodyBGColorSet = TRUE;
+ if( GPOS_NONE != pBrushItem->GetGraphicPos() )
+ bBodyBackgroundSet = TRUE;
+ }
+
+ // Border and Padding
+ rPropInfo.SetBoxItem( rItemSet, MIN_BORDER_DIST );
+
+ // Ein par Attribute muessen an der Seitenvorlage gesetzt werden,
+ // und zwar die, die nicht vererbt werden
+ SetPageDescAttrs( 0, &rItemSet );
+
+ // alle noch uebrigen Optionen koennen an der Standard-Vorlage
+ // gesetzt werden und gelten dann automatisch als defaults
+ if( SFX_ITEM_SET==rItemSet.GetItemState(RES_CHRATR_COLOR,FALSE) )
+ bBodyTextSet = TRUE;
+ SetTxtCollAttrs(
+ GetTxtCollFromPool( RES_POOLCOLL_STANDARD ),
+ rItemSet, rPropInfo, this );
+
+ return FALSE;
+ }
+ break;
+ }
+ }
+ else if( CSS1_SELTYPE_ELEM_CLASS==eSelType && HTML_ANCHOR_ON==nToken &&
+ !pNext && aClass.Len() >= 9 &&
+ ('s' == aClass.GetChar(0) || 'S' == aClass.GetChar(0)) )
+ {
+ USHORT nPoolFmtId = 0;
+ if( aClass.EqualsIgnoreCaseAscii(sHTML_sdendnote_sym) )
+ nPoolFmtId = RES_POOLCHR_ENDNOTE;
+ else if( aClass.EqualsIgnoreCaseAscii(sHTML_sdfootnote_sym) )
+ nPoolFmtId = RES_POOLCHR_FOOTNOTE;
+ if( nPoolFmtId )
+ {
+ SetCharFmtAttrs( GetCharFmtFromPool(nPoolFmtId), rItemSet );
+ return FALSE;
+ }
+ }
+
+ // Jetzt werden die Selektoren verarbeitet, die zu einer Absatz-Vorlage
+ // gehoehren
+ USHORT nPoolCollId = 0;
+ switch( nToken )
+ {
+ case HTML_HEAD1_ON:
+ nPoolCollId = RES_POOLCOLL_HEADLINE1;
+ break;
+ case HTML_HEAD2_ON:
+ nPoolCollId = RES_POOLCOLL_HEADLINE2;
+ break;
+ case HTML_HEAD3_ON:
+ nPoolCollId = RES_POOLCOLL_HEADLINE3;
+ break;
+ case HTML_HEAD4_ON:
+ nPoolCollId = RES_POOLCOLL_HEADLINE4;
+ break;
+ case HTML_HEAD5_ON:
+ nPoolCollId = RES_POOLCOLL_HEADLINE5;
+ break;
+ case HTML_HEAD6_ON:
+ nPoolCollId = RES_POOLCOLL_HEADLINE6;
+ break;
+ case HTML_PARABREAK_ON:
+ if( aClass.Len() >= 9 &&
+ ('s' == aClass.GetChar(0) || 'S' == aClass.GetChar(0)) )
+ {
+ if( aClass.EqualsIgnoreCaseAscii(sHTML_sdendnote) )
+ nPoolCollId = RES_POOLCOLL_ENDNOTE;
+ else if( aClass.EqualsIgnoreCaseAscii(sHTML_sdfootnote) )
+ nPoolCollId = RES_POOLCOLL_FOOTNOTE;
+
+ if( nPoolCollId )
+ aClass = aEmptyStr;
+ else
+ nPoolCollId = RES_POOLCOLL_TEXT;
+ }
+ else
+ {
+ nPoolCollId = RES_POOLCOLL_TEXT;
+ }
+ break;
+ case HTML_ADDRESS_ON:
+ nPoolCollId = RES_POOLCOLL_SENDADRESS;
+ break;
+ case HTML_BLOCKQUOTE_ON:
+ nPoolCollId = RES_POOLCOLL_HTML_BLOCKQUOTE;
+ break;
+ case HTML_DT_ON:
+ nPoolCollId = RES_POOLCOLL_HTML_DT;
+ break;
+ case HTML_DD_ON:
+ nPoolCollId = RES_POOLCOLL_HTML_DD;
+ break;
+ case HTML_PREFORMTXT_ON:
+ nPoolCollId = RES_POOLCOLL_HTML_PRE;
+ break;
+ case HTML_TABLEHEADER_ON:
+ case HTML_TABLEDATA_ON:
+ if( CSS1_SELTYPE_ELEMENT==eSelType && !pNext )
+ {
+ InsertTag( aToken, rItemSet, rPropInfo );
+ return FALSE;
+ }
+ else if( CSS1_SELTYPE_ELEMENT==eSelType && pNext &&
+ (CSS1_SELTYPE_ELEMENT==eNextType ||
+ CSS1_SELTYPE_ELEM_CLASS==eNextType) )
+ {
+ // nicht TH und TD, aber TH P und TD P
+ String aSubToken, aSubClass;
+ GetTokenAndClass( pNext, aSubToken, aSubClass );
+ if( HTML_PARABREAK_ON == GetHTMLToken( aSubToken ) )
+ {
+ aClass = aSubClass;
+ pNext = pNext->GetNext();
+ eNextType = pNext ? pNext->GetType() : CSS1_SELTYPE_ELEMENT;
+
+ if( aClass.Len() || pNext )
+ {
+ nPoolCollId =
+ HTML_TABLEHEADER_ON == nToken ? RES_POOLCOLL_TABLE_HDLN
+ : RES_POOLCOLL_TABLE;
+ }
+ else
+ {
+ String sTmp( aToken );
+ sTmp += ' ';
+ sTmp.AppendAscii( sHTML_parabreak );
+ InsertTag( sTmp, rItemSet, rPropInfo );
+
+ return FALSE;
+ }
+ }
+ }
+ break;
+ }
+
+ if( nPoolCollId )
+ {
+ if( !pNext ||
+ (CSS1_SELTYPE_PSEUDO==eNextType &&
+#ifdef FULL_FIRST_LETTER
+ pNext->GetString().EqualsIgnoreCaseAscii(sCSS1_first_letter)) )
+#else
+ pNext->GetString().EqualsIgnoreCaseAscii(sCSS1_first_letter) &&
+ SVX_ADJUST_LEFT == rPropInfo.eFloat) )
+#endif
+ {
+ // Entweder kein zusammengesetzter Selektor oder
+ // ein X:first-line { float: left; ... }
+
+ // Die Vorlage Suchen bzw. Anlegen
+ SwTxtFmtColl *pColl = GetTxtFmtColl( nPoolCollId, aEmptyStr );
+ if( aClass.Len() )
+ {
+ String aName( pColl->GetName() );
+ AddClassName( aName, aClass );
+
+ SwTxtFmtColl* pParentColl = pColl;
+ pColl = pDoc->FindTxtFmtCollByName( aName );
+ if( !pColl )
+ pColl = pDoc->MakeTxtFmtColl( aName, pParentColl );
+ }
+ if( !pNext )
+ {
+ // nur die Attribute an der Vorlage setzen
+ const SfxPoolItem *pItem;
+ const SvxBoxItem *pBoxItem = 0;
+ if( SFX_ITEM_SET ==
+ pColl->GetAttrSet().GetItemState(RES_BOX,TRUE,&pItem) )
+ pBoxItem = (const SvxBoxItem *)pItem;
+ rPropInfo.SetBoxItem( rItemSet, MIN_BORDER_DIST, pBoxItem );
+ SetTxtCollAttrs( pColl, rItemSet, rPropInfo, this );
+ }
+ else
+ {
+ // ein Drop-Cap-Attribut basteln
+ SwFmtDrop aDrop;
+ aDrop.GetChars() = 1;
+
+ // die Attribute in das DropCap-Attribut einfuegen
+ FillDropCap( aDrop, rItemSet, &pColl->GetName() );
+
+ // Das Attribut nur setzen, wenn float: left angegeben wurde
+ // und das Initial ueber mehrere Zeilen geht. Sonst wird die
+ // ggf. angelegte Zeichen-Vorlage spaeter ueber den Namen
+ // gesucht und gesetzt.
+ if( SVX_ADJUST_LEFT == rPropInfo.eFloat &&
+ aDrop.GetLines() > 1 )
+ {
+ pColl->SetAttr( aDrop );
+ }
+ }
+
+ return FALSE;
+ }
+
+ return TRUE;
+ }
+
+ // Jetzt werden die Selektoten verarbeitet, die zu einer Zechenvorlage
+ // gehoehren. Zusammengesetzte gibt es hier allerdings nich nicht.
+ if( pNext )
+ return TRUE;
+
+ SwCharFmt *pCFmt = GetChrFmt( nToken, aEmptyStr );
+ if( pCFmt )
+ {
+ if( aClass.Len() )
+ {
+ String aName( pCFmt->GetName() );
+ AddClassName( aName, aClass );
+ SwCharFmt *pParentCFmt = pCFmt;
+
+ pCFmt = pDoc->FindCharFmtByName( aName );
+ if( !pCFmt )
+ {
+ pCFmt = pDoc->MakeCharFmt( aName, pParentCFmt );
+ pCFmt->SetAuto( FALSE );
+ }
+ }
+
+ SetCharFmtAttrs( pCFmt, rItemSet );
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+#ifdef USED
+void SwCSS1Parser::SetFmtAttrs( const SfxItemSet& rItemSet,
+ SwFmt *pChildFmt1,
+ SwFmt *pChildFmt2 )
+{
+ SfxItemIter aIter( rItemSet );
+
+ const SfxItemSet& rItemSet1 = pChildFmt1->GetAttrSet();
+ const SfxItemSet* pItemSet2 = pChildFmt2 ? &pChildFmt2->GetAttrSet() : 0;
+ const SfxPoolItem *pPItem = aIter.FirstItem();
+ while( pPItem )
+ {
+ // wenn das Attribut an einer der abhaengigen Vorlagen nicht gesetzt
+ // ist, muss es dort explizit auf den Wrt gesetzt werden, der
+ // dort bereits aus der Parent-Vorlage geerbt wird.
+
+ USHORT nWhich = pPItem->Which();
+ const SfxPoolItem *pCItem;
+ if( SFX_ITEM_SET != rItemSet1.GetItemState( nWhich, FALSE, &pCItem ) )
+ pChildFmt1->SetAttr( pChildFmt1->GetAttr(nWhich) );
+
+ if( pChildFmt2 &&
+ SFX_ITEM_SET != pItemSet2->GetItemState( nWhich, FALSE, &pCItem ) )
+ pChildFmt2->SetAttr( pChildFmt2->GetAttr(nWhich) );
+
+ // auf zum naechsten Item
+ pPItem = aIter.NextItem();
+ }
+}
+#endif
+
+ULONG SwCSS1Parser::GetFontHeight( USHORT nSize ) const
+{
+ return aFontHeights[ nSize>6 ? 6 : nSize ];
+}
+
+const FontList *SwCSS1Parser::GetFontList() const
+{
+ const FontList *pFList = 0;
+ SwDocShell *pDocSh = pDoc->GetDocShell();
+ if( pDocSh )
+ {
+ const SvxFontListItem *pFListItem =
+ (const SvxFontListItem *)pDocSh->GetItem(SID_ATTR_CHAR_FONTLIST);
+ if( pFListItem )
+ pFList = pFListItem->GetFontList();
+ }
+
+ return pFList;
+}
+
+/* */
+
+SwCharFmt* SwCSS1Parser::GetChrFmt( USHORT nToken, const String& rClass ) const
+{
+ // die entsprechende Vorlage suchen
+ USHORT nPoolId = 0;
+ const sal_Char* sName = 0;
+ switch( nToken )
+ {
+ case HTML_EMPHASIS_ON: nPoolId = RES_POOLCHR_HTML_EMPHASIS; break;
+ case HTML_CITIATION_ON: nPoolId = RES_POOLCHR_HTML_CITIATION; break;
+ case HTML_STRONG_ON: nPoolId = RES_POOLCHR_HTML_STRONG; break;
+ case HTML_CODE_ON: nPoolId = RES_POOLCHR_HTML_CODE; break;
+ case HTML_SAMPLE_ON: nPoolId = RES_POOLCHR_HTML_SAMPLE; break;
+ case HTML_KEYBOARD_ON: nPoolId = RES_POOLCHR_HTML_KEYBOARD; break;
+ case HTML_VARIABLE_ON: nPoolId = RES_POOLCHR_HTML_VARIABLE; break;
+ case HTML_DEFINSTANCE_ON: nPoolId = RES_POOLCHR_HTML_DEFINSTANCE; break;
+ case HTML_TELETYPE_ON: nPoolId = RES_POOLCHR_HTML_TELETYPE; break;
+
+ case HTML_SHORTQUOTE_ON: sName = sHTML_shortquote; break;
+ case HTML_LANGUAGE_ON: sName = sHTML_language; break;
+ case HTML_AUTHOR_ON: sName = sHTML_author; break;
+ case HTML_PERSON_ON: sName = sHTML_person; break;
+ case HTML_ACRONYM_ON: sName = sHTML_acronym; break;
+ case HTML_ABBREVIATION_ON: sName = sHTML_abbreviation; break;
+ case HTML_INSERTEDTEXT_ON: sName = sHTML_insertedtext; break;
+ case HTML_DELETEDTEXT_ON: sName = sHTML_deletedtext; break;
+ }
+
+ // die Vorlage suchen oder anlegen (geht nur mit Namen)
+ if( !nPoolId && !sName )
+ return 0;
+
+ // Die Vorlage (ohne Class) suchen oder anlegen
+ SwCharFmt *pCFmt = 0;
+ if( nPoolId )
+ {
+ pCFmt = GetCharFmtFromPool( nPoolId );
+ }
+ else
+ {
+ String sCName( String::CreateFromAscii(sName) );
+ pCFmt = pDoc->FindCharFmtByName( sCName );
+ if( !pCFmt )
+ {
+ pCFmt = pDoc->MakeCharFmt( sCName, pDoc->GetDfltCharFmt() );
+ pCFmt->SetAuto( FALSE );
+ }
+ }
+
+ ASSERT( pCFmt, "Keine Zeichen-Vorlage???" );
+
+ // Wenn es eine Klasse gibt, die Klassen-Vorlage suchen aber nicht
+ // neu anlegen.
+ if( rClass.Len() )
+ {
+ String aTmp( pCFmt->GetName() );
+ AddClassName( aTmp, rClass );
+ SwCharFmt *pClassCFmt = pDoc->FindCharFmtByName( aTmp );
+ if( pClassCFmt )
+ {
+ pCFmt = pClassCFmt;
+ }
+ else
+ {
+ SvxCSS1MapEntry *pClass = GetClass( rClass );
+ if( pClass )
+ {
+ pCFmt = pDoc->MakeCharFmt( aTmp, pCFmt );
+ pCFmt->SetAuto( FALSE );
+ SfxItemSet aItemSet( pClass->GetItemSet() );
+ SetCharFmtAttrs( pCFmt, aItemSet );
+ }
+ }
+ }
+
+ return pCFmt;
+}
+
+
+/* */
+
+SwTxtFmtColl *SwCSS1Parser::GetTxtCollFromPool( USHORT nPoolId ) const
+{
+ USHORT nOldArrLen = pDoc->GetTxtFmtColls()->Count();
+
+ SwTxtFmtColl *pColl = pDoc->GetTxtCollFromPool( nPoolId );
+
+ if( bIsNewDoc )
+ {
+ USHORT nArrLen = pDoc->GetTxtFmtColls()->Count();
+ for( USHORT i=nOldArrLen; i<nArrLen; i++ )
+ lcl_swcss1_setEncoding( *(*pDoc->GetTxtFmtColls())[i],
+ GetDfltEncoding() );
+ }
+
+ return pColl;
+}
+
+SwCharFmt *SwCSS1Parser::GetCharFmtFromPool( USHORT nPoolId ) const
+{
+ USHORT nOldArrLen = pDoc->GetCharFmts()->Count();
+
+ SwCharFmt *pCharFmt = pDoc->GetCharFmtFromPool( nPoolId );
+
+ if( bIsNewDoc )
+ {
+ USHORT nArrLen = pDoc->GetCharFmts()->Count();
+
+ for( USHORT i=nOldArrLen; i<nArrLen; i++ )
+ lcl_swcss1_setEncoding( *(*pDoc->GetCharFmts())[i],
+ GetDfltEncoding() );
+ }
+
+ return pCharFmt;
+}
+
+SwTxtFmtColl *SwCSS1Parser::GetTxtFmtColl( USHORT nTxtColl,
+ const String& rClass )
+{
+ SwTxtFmtColl* pColl = 0;
+
+ String aClass( rClass );
+ if( RES_POOLCOLL_TEXT == nTxtColl && aClass.Len() >= 9 &&
+ ('s' == aClass.GetChar(0) || 'S' == aClass.GetChar(0) ) )
+ {
+ if( aClass.EqualsIgnoreCaseAscii(sHTML_sdendnote) )
+ {
+ nTxtColl = RES_POOLCOLL_ENDNOTE;
+ aClass = aEmptyStr;
+ }
+ else if( aClass.EqualsIgnoreCaseAscii(sHTML_sdfootnote) )
+ {
+ nTxtColl = RES_POOLCOLL_FOOTNOTE;
+ aClass = aEmptyStr;
+ }
+ }
+
+ String sName;
+ if( USER_FMT & nTxtColl ) // eine vom Reader angelegte
+ {
+ ASSERT( !this, "Wo kommt die Benutzer-Vorlage her?" );
+ pColl = GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+ }
+ else
+ {
+ pColl = GetTxtCollFromPool( nTxtColl );
+ }
+
+ ASSERT( pColl, "Keine Absatz-Vorlage???" );
+ if( aClass.Len() )
+ {
+ String aTmp( pColl->GetName() );
+ AddClassName( aTmp, aClass );
+ SwTxtFmtColl* pClassColl = pDoc->FindTxtFmtCollByName( aTmp );
+
+ if( !pClassColl &&
+ (nTxtColl==RES_POOLCOLL_TABLE ||
+ nTxtColl==RES_POOLCOLL_TABLE_HDLN) )
+ {
+ // Wenn dieser Fall eintritt, dann wurde ein <TD><P CLASS=foo>
+ // gelesen, aber die TD.foo Vorlage nicht gefunden. Dann muessen
+ // wir P.foo nehmen, wenn es sie gibt.
+ SwTxtFmtColl* pCollText =
+ GetTxtCollFromPool( RES_POOLCOLL_TEXT );
+ aTmp = pCollText->GetName();
+ AddClassName( aTmp, aClass );
+ pClassColl = pDoc->FindTxtFmtCollByName( aTmp );
+ }
+
+ if( pClassColl )
+ {
+ pColl = pClassColl;
+ }
+ else
+ {
+ const SvxCSS1MapEntry *pClass = GetClass( aClass );
+ if( pClass )
+ {
+ pColl = pDoc->MakeTxtFmtColl( aTmp, pColl );
+ SfxItemSet aItemSet( pClass->GetItemSet() );
+ SvxCSS1PropertyInfo aPropInfo( pClass->GetPropertyInfo() );
+ aPropInfo.SetBoxItem( aItemSet, MIN_BORDER_DIST );
+ BOOL bPositioned = MayBePositioned( pClass->GetPropertyInfo() );
+ if( bPositioned )
+ aItemSet.ClearItem( RES_BACKGROUND );
+ SetTxtCollAttrs( pColl, aItemSet, aPropInfo,
+ this );
+ }
+ }
+
+ }
+
+ if( pColl )
+ lcl_swcss1_setEncoding( *pColl, GetDfltEncoding() );
+
+ return pColl;
+}
+
+SwPageDesc *SwCSS1Parser::GetMasterPageDesc()
+{
+ return pDoc->GetPageDescFromPool( RES_POOLPAGE_HTML );
+}
+
+static SwPageDesc *FindPageDesc( SwDoc *pDoc, USHORT nPoolId, USHORT& rPage )
+{
+ USHORT nPageDescs = pDoc->GetPageDescCnt();
+ for( rPage=0; rPage < nPageDescs &&
+ pDoc->GetPageDesc(rPage).GetPoolFmtId() != nPoolId; rPage++ )
+ ;
+
+ return rPage < nPageDescs ? &pDoc->_GetPageDesc( rPage ) : 0;
+}
+
+const SwPageDesc *SwCSS1Parser::GetPageDesc( USHORT nPoolId, BOOL bCreate )
+{
+ if( RES_POOLPAGE_HTML == nPoolId )
+ return pDoc->GetPageDescFromPool( RES_POOLPAGE_HTML );
+
+ USHORT nPage;
+ const SwPageDesc *pPageDesc = FindPageDesc( pDoc, nPoolId, nPage );
+ if( !pPageDesc && bCreate )
+ {
+ // Die erste Seite wird aus der rechten Seite erzeugt, wenn es die
+ // gibt.
+ SwPageDesc *pMasterPageDesc = 0;
+ if( RES_POOLPAGE_FIRST == nPoolId )
+ pMasterPageDesc = FindPageDesc( pDoc, RES_POOLPAGE_RIGHT, nPage );
+ if( !pMasterPageDesc )
+ pMasterPageDesc = pDoc->GetPageDescFromPool( RES_POOLPAGE_HTML );
+
+ // Die neue Seitenvorlage entsteht aus dem Master durch kopieren.
+ SwPageDesc *pNewPageDesc = pDoc->GetPageDescFromPool( nPoolId );
+
+ // dazu brauchen wir auch die Nummer der neuen Vorlage
+ pPageDesc = FindPageDesc( pDoc, nPoolId, nPage );
+ ASSERT( pPageDesc==pNewPageDesc, "Seitenvorlage nicht gefunden" );
+
+ pDoc->CopyPageDesc( *pMasterPageDesc, *pNewPageDesc, FALSE );
+
+ // Die Vorlagen an ihren neuen Zweck anpassen.
+ const SwPageDesc *pFollow = 0;
+ BOOL bSetFollowFollow = FALSE;
+ switch( nPoolId )
+ {
+ case RES_POOLPAGE_FIRST:
+ // Wenn es schon eine linke Seite gibt, dann ist das die
+ // Folge-Vorlage, sonst ist es die HTML-Vorlage.
+ pFollow = GetLeftPageDesc();
+ if( !pFollow )
+ pFollow = pMasterPageDesc;
+ break;
+
+ case RES_POOLPAGE_RIGHT:
+ // Wenn die linke Vorlage schon angelegt ist, passiert hier gar
+ // nichts. Sonst wird die linke Vorlage angelegt und sorgt auch
+ // fuer die richtige Verkettung mit der rechten Voralge.
+ GetLeftPageDesc( TRUE );
+ break;
+
+ case RES_POOLPAGE_LEFT:
+ // Die rechte Vorlage wird angelegt, wenn sie noch nicht existiert.
+ // Es findet aber keine Verkettung statt.
+ // Wenn schon eine erste Seitenvorlage existiert, wird die linke
+ // Vorlage die Folge-Vorlage der ersten Seite.
+ pFollow = GetRightPageDesc( TRUE );
+ bSetFollowFollow = TRUE;
+ {
+ const SwPageDesc *pFirstPageDesc = GetFirstPageDesc();
+ if( pFirstPageDesc )
+ {
+ SwPageDesc aNewFirstPageDesc( *pFirstPageDesc );
+ aNewFirstPageDesc.SetFollow( pNewPageDesc );
+ ChgPageDesc( pFirstPageDesc, aNewFirstPageDesc );
+ }
+ }
+ break;
+ }
+
+ if( pFollow )
+ {
+ SwPageDesc aNewPageDesc( *pNewPageDesc );
+ aNewPageDesc.SetFollow( pFollow );
+ ChgPageDesc( pNewPageDesc, aNewPageDesc );
+
+ if( bSetFollowFollow )
+ {
+ SwPageDesc aNewFollowPageDesc( *pFollow );
+ aNewFollowPageDesc.SetFollow( pNewPageDesc );
+ ChgPageDesc( pFollow, aNewFollowPageDesc );
+ }
+ }
+ pPageDesc = pNewPageDesc;
+ }
+
+ return pPageDesc;
+}
+
+
+BOOL SwCSS1Parser::MayBePositioned( const SvxCSS1PropertyInfo& rPropInfo,
+ BOOL bAutoWidth )
+{
+ // abs-pos
+ // left/top none auto twip perc
+ //
+ // none Z Z - -
+ // auto Z Z - -
+ // twip Z Z S/R -
+ // perc - - - -
+ //
+ // - das Tag wird absolut positioniert und left/top sind beide
+ // gegeben und enthalten auch keine %-Angabe, oder
+ // - das Tag soll fliessen, und
+ // - es wurde eine Breite angegeben (in beiden Faellen noetig)
+ return ( ( SVX_CSS1_POS_ABSOLUTE == rPropInfo.ePosition &&
+ SVX_CSS1_LTYPE_PERCENTAGE != rPropInfo.eLeftType &&
+ SVX_CSS1_LTYPE_PERCENTAGE != rPropInfo.eTopType &&
+ (SVX_CSS1_LTYPE_TWIP == rPropInfo.eLeftType ||
+ SVX_CSS1_LTYPE_TWIP != rPropInfo.eTopType) ) ||
+ ( SVX_ADJUST_END != rPropInfo.eFloat ) ) &&
+ ( bAutoWidth ||
+ SVX_CSS1_LTYPE_TWIP == rPropInfo.eWidthType ||
+ SVX_CSS1_LTYPE_PERCENTAGE == rPropInfo.eWidthType );
+}
+
+
+/* */
+
+void SwCSS1Parser::AddClassName( String& rFmtName, const String& rClass )
+{
+ ASSERT( rClass.Len(), "Style-Klasse ohne Laenge?" );
+
+// ??????????
+// String aTmp( rClass );
+// GetpApp()->GetAppInternational().ToLower( aTmp );
+
+ (rFmtName += '.') += rClass;
+}
+
+/* */
+
+void SwCSS1Parser::FillDropCap( SwFmtDrop& rDrop,
+ SfxItemSet& rItemSet,
+ const String *pName )
+{
+ // die Anzahl der Zeilen entspricht in etwa einer %-Angabe
+ // fuer die Hoehe (was passiert mit absoluten Hoehen???)
+ BYTE nLines = 1;
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_CHRATR_FONTSIZE, FALSE, &pItem ) )
+ {
+ USHORT nProp = ((const SvxFontHeightItem *)pItem)->GetProp();
+ nLines = (BYTE)((nProp + 50) / 100);
+ if( nLines < 1 )
+ nLines = 1;
+ else if( nLines > MAX_DROPCAP_LINES )
+ nLines = MAX_DROPCAP_LINES;
+
+ // Nur wenn nLines>1 ist, wird das Attribut auch gesetzt. Dann
+ // brauchen wir die Font-Hoehe aber auch nicht in der Zeichen-Vorlage.
+ if( nLines > 1 )
+ rItemSet.ClearItem( RES_CHRATR_FONTSIZE );
+ }
+
+ // Bei harter Attributierung (pName==0) koennen wir aufhoehren, wenn
+ // das Initial nur ueber eine Zeile geht.
+#ifdef FULL_FIRST_LETTER
+ if( nLines==1 && !pName )
+#else
+ if( nLines==1 )
+#endif
+ return;
+
+ rDrop.GetLines() = nLines;
+
+ // ein rechter Rand wird der Abstand zum Text!
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_LR_SPACE, FALSE, &pItem ) )
+ {
+ rDrop.GetDistance() =
+ ((const SvxLRSpaceItem *)pItem)->GetRight();
+ rItemSet.ClearItem( RES_LR_SPACE );
+ }
+
+ // Fuer alle anderen Attribute eine Zeichen-Vorlage anlegen
+ if( rItemSet.Count() )
+ {
+ SwCharFmt *pCFmt = 0;
+ String aName;
+ if( pName )
+ {
+ aName = *pName;
+ AddFirstLetterExt( aName );
+ pCFmt = pDoc->FindCharFmtByName( aName );
+ }
+ else
+ {
+ do
+ {
+ aName.AssignAscii( sCSS1_first_letter );
+ aName.Append( ' ' );
+ aName.Append(
+ String::CreateFromInt32( (sal_Int32)(++nDropCapCnt) ) );
+ }
+ while( pDoc->FindCharFmtByName(aName) );
+ }
+
+ if( !pCFmt )
+ {
+ pCFmt = pDoc->MakeCharFmt( aName, pDoc->GetDfltCharFmt() );
+ pCFmt->SetAuto( FALSE );
+ }
+ SetCharFmtAttrs( pCFmt, rItemSet );
+
+ // Die Zeichenvorlage braucht nur im Attribut gesetzt werden, wenn
+ // auch das Attribut gesetzt wird.
+ if( nLines > 1 )
+ rDrop.SetCharFmt( pCFmt );
+ }
+}
+
+/* */
+
+// CSS1-sezifisches des SwHTMLParsers
+
+_HTMLAttr **SwHTMLParser::GetAttrTabEntry( USHORT nWhich )
+{
+ // den zu dem Item gehoehrenden Tabellen-Eintrag ermitteln ...
+ _HTMLAttr **ppAttr = 0;
+ switch( nWhich )
+ {
+ case RES_CHRATR_BLINK:
+ ppAttr = &aAttrTab.pBlink;
+ break;
+ case RES_CHRATR_CASEMAP:
+ ppAttr = &aAttrTab.pCaseMap;
+ break;
+ case RES_CHRATR_COLOR:
+ ppAttr = &aAttrTab.pFontColor;
+ break;
+ case RES_CHRATR_CROSSEDOUT:
+ ppAttr = &aAttrTab.pStrike;
+ break;
+ case RES_CHRATR_ESCAPEMENT:
+ ppAttr = &aAttrTab.pEscapement;
+ break;
+ case RES_CHRATR_FONT:
+ ppAttr = &aAttrTab.pFont;
+ break;
+ case RES_CHRATR_FONTSIZE:
+ ppAttr = &aAttrTab.pFontHeight;
+ break;
+ case RES_CHRATR_KERNING:
+ ppAttr = &aAttrTab.pKerning;
+ break;
+ case RES_CHRATR_POSTURE:
+ ppAttr = &aAttrTab.pItalic;
+ break;
+ case RES_CHRATR_UNDERLINE:
+ ppAttr = &aAttrTab.pUnderline;
+ break;
+ case RES_CHRATR_WEIGHT:
+ ppAttr = &aAttrTab.pBold;
+ break;
+ case RES_CHRATR_BACKGROUND:
+ ppAttr = &aAttrTab.pCharBrush;
+ break;
+
+ case RES_PARATR_LINESPACING:
+ ppAttr = &aAttrTab.pLineSpacing;
+ break;
+ case RES_PARATR_ADJUST:
+ ppAttr = &aAttrTab.pAdjust;
+ break;
+
+ case RES_LR_SPACE:
+ ppAttr = &aAttrTab.pLRSpace;
+ break;
+ case RES_UL_SPACE:
+ ppAttr = &aAttrTab.pULSpace;
+ break;
+ case RES_BOX:
+ ppAttr = &aAttrTab.pBox;
+ break;
+ case RES_BACKGROUND:
+ ppAttr = &aAttrTab.pBrush;
+ break;
+ case RES_BREAK:
+ ppAttr = &aAttrTab.pBreak;
+ break;
+ case RES_PAGEDESC:
+ ppAttr = &aAttrTab.pPageDesc;
+ break;
+ case RES_PARATR_SPLIT:
+ ppAttr = &aAttrTab.pSplit;
+ break;
+ case RES_PARATR_WIDOWS:
+ ppAttr = &aAttrTab.pWidows;
+ break;
+ case RES_PARATR_ORPHANS:
+ ppAttr = &aAttrTab.pOrphans;
+ break;
+ case RES_KEEP:
+ ppAttr = &aAttrTab.pKeep;
+ break;
+ }
+
+ return ppAttr;
+}
+
+void SwHTMLParser::NewStyle()
+{
+ String sType;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ if( HTML_O_TYPE==pOption->GetToken() )
+ sType = pOption->GetString();
+ }
+
+ bIgnoreRawData = sType.Len() &&
+ !sType.GetToken(0,';').EqualsAscii(sCSS_mimetype);
+}
+
+void SwHTMLParser::EndStyle()
+{
+ bIgnoreRawData = FALSE;
+
+ if( aStyleSource.Len() )
+ {
+ pCSS1Parser->ParseStyleSheet( aStyleSource );
+ aStyleSource.Erase();
+ }
+}
+
+BOOL SwHTMLParser::FileDownload( const String& rURL,
+ String& rStr )
+{
+ // View wegschmeissen (wegen Reschedule)
+ ViewShell *pOldVSh = CallEndAction();
+ SetSaveBaseURL();
+
+ // Ein Medium anlegen
+ SfxMedium aDLMedium( rURL, STREAM_READ | STREAM_SHARE_DENYWRITE, FALSE );
+ aDLMedium.SetTransferPriority( SFX_TFPRIO_SYNCHRON );
+
+ // Medium registrieren, damit abgebrochen werden kann
+ if( pDoc->GetDocShell() )
+ pDoc->GetDocShell()->RegisterTransfer( aDLMedium );
+
+ SvStream* pStream = aDLMedium.GetInStream();
+ if( pStream )
+ {
+ SvMemoryStream aStream;
+ aStream << *pStream;
+
+ aStream.Seek( STREAM_SEEK_TO_END );
+ DBG_ASSERT( aStream.Tell() < STRING_MAXLEN,
+ "File zu lang fuer einen String, Ende abgeschnitten" );
+ xub_StrLen nLen = aStream.Tell() < STRING_MAXLEN
+ ? (xub_StrLen)aStream.Tell()
+ : STRING_MAXLEN;
+
+ rStr = String( (const sal_Char *)aStream.GetData(), nLen,
+ GetSrcEncoding() );
+ }
+
+ GetSaveAndSetOwnBaseURL();
+
+ // wurde abgebrochen?
+ if( ( pDoc->GetDocShell() && pDoc->GetDocShell()->IsAbortingImport() )
+ || 1 == pDoc->GetLinkCnt() )
+ {
+ // wurde der Import vom SFX abgebrochen?
+ eState = SVPAR_ERROR;
+ pStream = 0;
+ }
+
+ // View wieder anlgen
+#ifdef DEBUG
+ ViewShell *pVSh =
+#endif
+ CallStartAction( pOldVSh );
+#ifdef DEBUG
+ ASSERT( pOldVSh == pVSh, "FileDownload: ViewShell wurde ausgetauscht" );
+#endif
+
+ return pStream!=0;
+}
+
+void SwHTMLParser::InsertLink()
+{
+ BOOL bFinishDownload = FALSE;
+ if( pPendStack )
+ {
+ ASSERT( ShouldFinishFileDownload(),
+ "Pending-Stack ohne File-Download?" );
+
+ SwPendingStack* pTmp = pPendStack->pNext;
+ delete pPendStack;
+ pPendStack = pTmp;
+ ASSERT( !pPendStack, "Wo kommt der Pending-Stack her?" );
+
+ bFinishDownload = TRUE;
+ }
+ else
+ {
+ String sRel, sHRef, sType;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_REL:
+ sRel = pOption->GetString();
+ break;
+ case HTML_O_HREF:
+ ASSERT( INetURLObject::GetBaseURL() == sBaseURL,
+ "<LINK>: Base URL ist zerschossen" );
+ sHRef = INetURLObject::RelToAbs( pOption->GetString() );
+ break;
+ case HTML_O_TYPE:
+ sType = pOption->GetString();
+ break;
+ }
+ }
+
+ if( sHRef.Len() && sRel.EqualsIgnoreCaseAscii( "STYLESHEET" ) &&
+ ( !sType.Len() ||
+ sType.GetToken(0,';').EqualsAscii(sCSS_mimetype) ) )
+ {
+ if( GetMedium() )
+ {
+ // Download des Style-Source starten
+ StartFileDownload( sHRef, 0, pDoc->GetDocShell() );
+ if( IsParserWorking() )
+ {
+ // Der Style wurde synchron geladen und wir koennen
+ // es direkt aufrufen.
+ bFinishDownload = TRUE;
+ }
+ else
+ {
+ // Der Style wird asynchron geladen und ist erst beim
+ // naechsten Continue-Aufruf da. Wir muessen deshalb einen
+ // Pending-Stack anlegen, damit wir hierher zurueckkehren
+ pPendStack = new SwPendingStack( HTML_LINK, pPendStack );
+ }
+ }
+ else
+ {
+ // File synchron holen
+ String sSource;
+ if( FileDownload( sHRef, sSource ) )
+ pCSS1Parser->ParseStyleSheet( sSource );
+ }
+ }
+ }
+
+ if( bFinishDownload )
+ {
+ String sSource;
+ if( FinishFileDownload(sSource) && sSource.Len() )
+ pCSS1Parser->ParseStyleSheet( sSource );
+ }
+}
+
+BOOL SwCSS1Parser::ParseStyleSheet( const String& rIn )
+{
+ if( !SvxCSS1Parser::ParseStyleSheet( rIn ) )
+ return FALSE;
+
+ SwPageDesc *pMasterPageDesc =
+ pDoc->GetPageDescFromPool( RES_POOLPAGE_HTML );
+
+ SvxCSS1MapEntry *pPageEntry = GetPage( aEmptyStr, FALSE );
+ if( pPageEntry )
+ {
+ // @page (wirkt auf alle Seiten, die es schon gibt
+
+ SetPageDescAttrs( pMasterPageDesc, pPageEntry->GetItemSet(),
+ pPageEntry->GetPropertyInfo() );
+
+ // Fuer alle anderen Seiten-Vorlagen, die es schon gibt,
+ // muessen die Attribute auch noch gesetzt werden
+
+ SetPageDescAttrs( GetFirstPageDesc(), pPageEntry->GetItemSet(),
+ pPageEntry->GetPropertyInfo() );
+ SetPageDescAttrs( GetLeftPageDesc(), pPageEntry->GetItemSet(),
+ pPageEntry->GetPropertyInfo() );
+ SetPageDescAttrs( GetRightPageDesc(), pPageEntry->GetItemSet(),
+ pPageEntry->GetPropertyInfo() );
+// if( pNamedPageDescs )
+// {
+// for( USHORT i=0; i<pNamedPageDescs->Count(); i++ )
+// SetPageDescAttrs( (*pNamedPageDescs)[i],
+// pPageEntry->GetItemSet(),
+// pPageEntry->GetPropertyInfo() );
+// }
+
+ }
+
+ pPageEntry = GetPage( String::CreateFromAscii(sCSS1_first), TRUE );
+ if( pPageEntry )
+ {
+ SetPageDescAttrs( GetFirstPageDesc(TRUE), pPageEntry->GetItemSet(),
+ pPageEntry->GetPropertyInfo() );
+ bSetFirstPageDesc = TRUE;
+ }
+
+ pPageEntry = GetPage( String::CreateFromAscii(sCSS1_right), TRUE );
+ if( pPageEntry )
+ {
+ SetPageDescAttrs( GetRightPageDesc(TRUE), pPageEntry->GetItemSet(),
+ pPageEntry->GetPropertyInfo() );
+ bSetRightPageDesc = TRUE;
+ }
+
+ pPageEntry = GetPage( String::CreateFromAscii(sCSS1_left), TRUE );
+ if( pPageEntry )
+ SetPageDescAttrs( GetLeftPageDesc(TRUE), pPageEntry->GetItemSet(),
+ pPageEntry->GetPropertyInfo() );
+
+ // und jetzt noch die benannten Vorlagen
+// for( USHORT i=0; i < GetPageCount(); i++ )
+// {
+// pPageEntry = GetPage( i );
+// const String& rKey = pPageEntry->GetKey();
+// if( !rKey.Len() || rKey.GetChar(0) == ':' )
+// continue;
+//
+// String aName( rKey );
+// GetpApp()->GetAppInternational().ToLower( aName );
+// USHORT nPage = pDoc->MakePageDesc( aName );
+// SwPageDesc *pPageDesc = &pDoc->_GetPageDesc( nPage );
+//
+// // Die neue Seitenvorlage entsteht aus dem Master durch kopieren.
+// pDoc->CopyPageDesc( *pMasterPageDesc, *pPageDesc );
+// SetPageDescAttrs( pPageDesc, pPageEntry->GetItemSet(),
+// pPageEntry->GetPropertyInfo() );
+//
+// if( !pNamedPageDescs )
+// pNamedPageDescs = new SwHTMLPageDescs;
+// pNamedPageDescs->Insert( pPageDesc, pNamedPageDescs->Count() );
+// }
+
+ return TRUE;
+}
+
+BOOL SwHTMLParser::ParseStyleOptions( const String &rStyle,
+ const String &rId,
+ const String &rClass,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo &rPropInfo )
+{
+ BOOL bRet = FALSE;
+
+ if( rClass.Len() )
+ {
+ SvxCSS1MapEntry *pClass = pCSS1Parser->GetClass( rClass );
+ if( pClass )
+ {
+ pCSS1Parser->MergeStyles( pClass->GetItemSet(),
+ pClass->GetPropertyInfo(),
+ rItemSet, rPropInfo, FALSE );
+ bRet = TRUE;
+ }
+ }
+
+ if( rId.Len() )
+ {
+ SvxCSS1MapEntry *pId = pCSS1Parser->GetId( rId );
+ if( pId )
+ pCSS1Parser->MergeStyles( pId->GetItemSet(),
+ pId->GetPropertyInfo(),
+ rItemSet, rPropInfo, rClass.Len()!=0 );
+ rPropInfo.aId = rId;
+ bRet = TRUE;
+ }
+
+ if( rStyle.Len() )
+ {
+ pCSS1Parser->ParseStyleOption( rStyle, rItemSet, rPropInfo );
+ bRet = TRUE;
+ }
+
+ if( bRet )
+ rPropInfo.SetBoxItem( rItemSet, MIN_BORDER_DIST );
+
+ return bRet;
+}
+
+void SwHTMLParser::SetAnchorAndAdjustment( const SfxItemSet &rItemSet,
+ const SvxCSS1PropertyInfo &rPropInfo,
+ SfxItemSet &rFrmItemSet )
+{
+ SwFmtAnchor aAnchor;
+
+ SwHoriOrient eHoriOri = HORI_NONE;
+ SwVertOrient eVertOri = VERT_NONE;
+ SwRelationOrient eHoriRel = FRAME;
+ SwRelationOrient eVertRel = FRAME;
+ SwTwips nHoriPos = 0, nVertPos = 0;
+ SwSurround eSurround = SURROUND_THROUGHT;
+ if( SVX_CSS1_POS_ABSOLUTE == rPropInfo.ePosition )
+ {
+ if( SVX_CSS1_LTYPE_TWIP == rPropInfo.eLeftType &&
+ SVX_CSS1_LTYPE_TWIP == rPropInfo.eTopType )
+ {
+ // Absolut positionierte Objekte sind seitengebunden, wenn
+ // sie nicht schon in einem Rahmen stehen und sonst
+ // Rahmengebunden.
+ const SwStartNode *pFlySttNd =
+ pDoc->GetNodes()[pPam->GetPoint()->nNode]->FindFlyStartNode();
+ if( pFlySttNd )
+ {
+ aAnchor.SetType( FLY_AT_FLY );
+ SwPosition aPos( *pFlySttNd );
+ aAnchor.SetAnchor( &aPos );
+ }
+ else
+ {
+ aAnchor.SetType( FLY_PAGE );
+ aAnchor.SetPageNum( 1 );
+ }
+ nHoriPos = rPropInfo.nLeft;
+ nVertPos = rPropInfo.nTop;
+ }
+ else
+ {
+ aAnchor.SetType( FLY_AT_CNTNT );
+ aAnchor.SetAnchor( pPam->GetPoint() );
+ eVertOri = VERT_TOP;
+ eVertRel = REL_CHAR;
+ if( SVX_CSS1_LTYPE_TWIP == rPropInfo.eLeftType )
+ {
+ eHoriOri = HORI_NONE;
+ eHoriRel = REL_PG_FRAME;
+ nHoriPos = rPropInfo.nLeft;
+ }
+ else
+ {
+ eHoriOri = HORI_LEFT;
+ eHoriRel = FRAME; // wird noch umgeschossen
+ }
+ }
+ }
+ else
+ {
+ // fliessende Objekte werden Absatzgebunden eingefuegt, wenn
+ // der Absatz noch leer ist und sonst auto-gebunden.
+ // Auto-gebundene Rahmen werden zunaechst an der Position davor
+ // eingefuegt und erst spaeter verschoben.
+ xub_StrLen nCntnt = pPam->GetPoint()->nContent.GetIndex();
+ if( nCntnt )
+ {
+ aAnchor.SetType( FLY_AUTO_CNTNT );
+ pPam->Move( fnMoveBackward );
+ eVertOri = VERT_CHAR_BOTTOM;
+ eVertRel = REL_CHAR;
+ }
+ else
+ {
+ aAnchor.SetType( FLY_AT_CNTNT );
+ eVertOri = VERT_TOP;
+ eVertRel = PRTAREA;
+ }
+
+ aAnchor.SetAnchor( pPam->GetPoint() );
+
+ if( nCntnt )
+ pPam->Move( fnMoveForward );
+
+ USHORT nLeftSpace = 0, nRightSpace = 0;
+ short nIndent = 0;
+ GetMarginsFromContextWithNumBul( nLeftSpace, nRightSpace, nIndent );
+
+ if( SVX_ADJUST_RIGHT==rPropInfo.eFloat )
+ {
+ eHoriOri = HORI_RIGHT;
+ eHoriRel = nRightSpace ? PRTAREA : FRAME;
+ eSurround = SURROUND_LEFT;
+ }
+ else
+ {
+ eHoriOri = HORI_LEFT;
+ eHoriRel = nLeftSpace ? PRTAREA : FRAME;
+ eSurround = SURROUND_RIGHT;
+ }
+ }
+ rFrmItemSet.Put( aAnchor );
+
+ // Absolut Positioniert mit Durchlauf
+ rFrmItemSet.Put( SwFmtHoriOrient( nHoriPos, eHoriOri, eHoriRel ) );
+ rFrmItemSet.Put( SwFmtVertOrient( nVertPos, eVertOri, eVertRel ) );
+ rFrmItemSet.Put( SwFmtSurround( eSurround ) );
+}
+
+void SwHTMLParser::SetVarSize( SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo &rPropInfo,
+ SfxItemSet &rFrmItemSet,
+ SwTwips nDfltWidth, BYTE nDfltPrcWidth )
+{
+ SwFrmSize eSize = ATT_MIN_SIZE;
+ SwTwips nWidth = nDfltWidth, nHeight = MINFLY;
+ BYTE nPrcWidth = nDfltPrcWidth, nPrcHeight = 0;
+ switch( rPropInfo.eWidthType )
+ {
+ case SVX_CSS1_LTYPE_PERCENTAGE:
+ nPrcWidth = rPropInfo.nWidth > 0 ? (BYTE)rPropInfo.nWidth : 1;
+ nWidth = MINFLY;
+ break;
+ case SVX_CSS1_LTYPE_TWIP:
+ nWidth = rPropInfo.nWidth > MINFLY ? rPropInfo.nWidth : MINFLY;
+ nPrcWidth = 0;
+ break;
+ }
+ switch( rPropInfo.eHeightType )
+ {
+ case SVX_CSS1_LTYPE_PERCENTAGE:
+ nPrcHeight = rPropInfo.nHeight > 0 ? (BYTE)rPropInfo.nHeight : 1;
+ break;
+ case SVX_CSS1_LTYPE_TWIP:
+ // Netscape und MS-IE interpretieren die Hoehe regelwiedrig
+ // als Mindest-Hoehe, also machwn wir das auch so.
+ nHeight = rPropInfo.nHeight > MINFLY ? rPropInfo.nHeight : MINFLY;
+ break;
+ }
+
+ SwFmtFrmSize aFrmSize( eSize, nWidth, nHeight );
+ aFrmSize.SetWidthPercent( nPrcWidth );
+ aFrmSize.SetHeightPercent( nPrcHeight );
+ rFrmItemSet.Put( aFrmSize );
+}
+
+void SwHTMLParser::SetFrmFmtAttrs( SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo &rPropInfo,
+ USHORT nFlags,
+ SfxItemSet &rFrmItemSet )
+{
+ const SfxPoolItem *pItem;
+ if( (nFlags & HTML_FF_BOX) != 0 &&
+ SFX_ITEM_SET==rItemSet.GetItemState( RES_BOX, TRUE, &pItem ) )
+ {
+ if( (nFlags & HTML_FF_PADDING) == 0 )
+ {
+ SvxBoxItem aBoxItem( *(const SvxBoxItem *)pItem );
+ // Alle 4 Seiten gleichzeitig auf 0 setzen
+ aBoxItem.SetDistance( 0 );
+ rFrmItemSet.Put( aBoxItem );
+ }
+ else
+ {
+ rFrmItemSet.Put( *pItem );
+ }
+ rItemSet.ClearItem( RES_BOX );
+ }
+
+ if( (nFlags & HTML_FF_BACKGROUND) != 0 &&
+ SFX_ITEM_SET==rItemSet.GetItemState( RES_BACKGROUND, TRUE, &pItem ) )
+ {
+ rFrmItemSet.Put( *pItem );
+ rItemSet.ClearItem( RES_BACKGROUND );
+ }
+}
+
+
+/* */
+
+_HTMLAttrContext *SwHTMLParser::PopContext( USHORT nToken, USHORT nLimit,
+ BOOL bRemove )
+{
+ USHORT nPos = aContexts.Count();
+ if( nPos <= nContextStMin )
+ return 0;
+
+ BOOL bFound = 0==nToken;
+ if( nToken )
+ {
+ // Stack-Eintrag zu dem Token suchen
+ while( nPos > nContextStMin )
+ {
+ USHORT nCntxtToken = aContexts[--nPos]->GetToken();
+ if( nCntxtToken == nToken )
+ {
+ bFound = TRUE;
+ break;
+ }
+ else if( nCntxtToken == nLimit ) // 0 als Token kommt nicht vor
+ {
+ break;
+ }
+ }
+ }
+ else
+ {
+ nPos--;
+ }
+
+ _HTMLAttrContext *pCntxt = 0;
+ if( bFound )
+ {
+ pCntxt = aContexts[nPos];
+ if( bRemove )
+ aContexts.Remove( nPos, 1 );
+ }
+
+ return pCntxt;
+}
+
+#ifdef USED
+USHORT SwHTMLParser::GetTxtFmtCollFromContext() const
+{
+ USHORT nPos = aContexts.Count();
+ USHORT nPoolId = 0;
+
+ while( !nPoolId && nPos>0 ) // nicht nMinStack wg. Tabellen!!!
+ nPoolId = aContexts[--nPos]->GetTxtFmtColl();
+
+ if( !nPoolId )
+ nPoolId = aDfltContext.GetTxtFmtColl();
+
+ return nPoolId;
+}
+#endif
+
+BOOL SwHTMLParser::GetMarginsFromContext( USHORT& nLeft,
+ USHORT& nRight,
+ short& nIndent,
+ BOOL bIgnoreTopContext ) const
+{
+ USHORT nPos = aContexts.Count();
+ if( bIgnoreTopContext )
+ {
+ if( !nPos )
+ return FALSE;
+ else
+ nPos--;
+ }
+
+ while( nPos > nContextStAttrMin )
+ {
+ const _HTMLAttrContext *pCntxt = aContexts[--nPos];
+ if( pCntxt->IsLRSpaceChanged() )
+ {
+ pCntxt->GetMargins( nLeft, nRight, nIndent );
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+BOOL SwHTMLParser::GetMarginsFromContextWithNumBul( USHORT& nLeft,
+ USHORT& nRight,
+ short& nIndent ) const
+{
+ BOOL bRet = GetMarginsFromContext( nLeft, nRight, nIndent );
+#ifdef NUM_RELSPACE
+ const SwHTMLNumRuleInfo& rInfo = ((SwHTMLParser*)this)->GetNumInfo();
+ if( rInfo.GetDepth() )
+ {
+ BYTE nLevel = (BYTE)( (rInfo.GetDepth() <= MAXLEVEL ? rInfo.GetDepth()
+ : MAXLEVEL) - 1 );
+ const SwNumFmt& rNumFmt = rInfo.GetNumRule()->Get(nLevel);
+ nLeft += rNumFmt.GetAbsLSpace();
+ nIndent = rNumFmt.GetFirstLineOffset();
+ }
+#endif
+
+ return bRet;
+}
+
+void SwHTMLParser::GetULSpaceFromContext( USHORT& nUpper,
+ USHORT& nLower ) const
+{
+ USHORT nDfltColl = 0;
+ String aDfltClass;
+
+ USHORT nPos = aContexts.Count();
+ while( nPos > nContextStAttrMin )
+ {
+ const _HTMLAttrContext *pCntxt = aContexts[--nPos];
+ if( pCntxt->IsULSpaceChanged() )
+ {
+ pCntxt->GetULSpace( nUpper, nLower );
+ return;
+ }
+ else if( !nDfltColl )
+ {
+ nDfltColl = pCntxt->GetDfltTxtFmtColl();
+ if( nDfltColl )
+ aDfltClass = pCntxt->GetClass();
+ }
+ }
+
+ if( !nDfltColl )
+ nDfltColl = RES_POOLCOLL_TEXT;
+
+ const SwTxtFmtColl *pColl =
+ pCSS1Parser->GetTxtFmtColl( nDfltColl, aDfltClass );
+ const SvxULSpaceItem& rULSpace = pColl->GetULSpace();
+ nUpper = rULSpace.GetUpper();
+ nLower = rULSpace.GetLower();
+}
+
+void SwHTMLParser::EndContextAttrs( _HTMLAttrContext *pContext, BOOL bRemove )
+{
+ _HTMLAttrs &rAttrs = pContext->GetAttrs();
+ for( USHORT i=0; i<rAttrs.Count(); i++ )
+ {
+ _HTMLAttr *pAttr = rAttrs[i];
+
+ if( RES_PARATR_DROP==pAttr->GetItem().Which() )
+ {
+ // Fuer DropCaps noch die Anzahl der Zeichen anpassen. Wenn
+ // es am Ende 0 sind, wird das Attribut invalidiert und dann
+ // von _SetAttr gar nicht erst gesetzt.
+ xub_StrLen nChars = pPam->GetPoint()->nContent.GetIndex();
+ if( nChars < 1 )
+ pAttr->Invalidate();
+ else if( nChars > MAX_DROPCAP_CHARS )
+ nChars = MAX_DROPCAP_CHARS;
+ ((SwFmtDrop&)pAttr->GetItem()).GetChars() = (BYTE)nChars;
+ }
+
+ EndAttr( pAttr );
+ }
+
+ if( bRemove && rAttrs.Count() )
+ rAttrs.Remove( 0, rAttrs.Count() );
+}
+
+void SwHTMLParser::InsertParaAttrs( const SfxItemSet& rItemSet )
+{
+ SfxItemIter aIter( rItemSet );
+
+ const SfxPoolItem *pItem = aIter.FirstItem();
+ while( pItem )
+ {
+ // den zu dem Item gehoehrenden Tabellen-Eintrag ermitteln ...
+ USHORT nWhich = pItem->Which();
+ _HTMLAttr **ppAttr = GetAttrTabEntry( nWhich );
+
+ if( ppAttr )
+ {
+ NewAttr( ppAttr, *pItem );
+ if( RES_PARATR_BEGIN > nWhich )
+ (*ppAttr)->SetLikePara();
+ aParaAttrs.Insert( *ppAttr, aParaAttrs.Count() );
+ EndAttr( *ppAttr, 0, FALSE );
+ }
+
+ pItem = aIter.NextItem();
+ }
+}
+
+void SwHTMLParser::AddFormatAttrs( SfxItemSet& rItemSet,
+ const SwFmt& rFmt ) const
+{
+ const SfxItemSet& rFmtItemSet = rFmt.GetAttrSet();
+ const SfxPoolItem *pFmtItem, *pItem;
+ SfxWhichIter aIter( rItemSet );
+
+ USHORT nWhich = aIter.FirstWhich();
+ while( nWhich )
+ {
+ if( SFX_ITEM_SET != rItemSet.GetItemState(nWhich,FALSE,&pItem) &&
+ SFX_ITEM_SET == rFmtItemSet.GetItemState(nWhich,TRUE,&pFmtItem) )
+ {
+ rItemSet.Put( *pFmtItem );
+ }
+
+ nWhich = aIter.NextWhich();
+ }
+}
+
+void SwHTMLParser::RemoveFormatAttrs( SfxItemSet& rItemSet,
+ const SwFmt& rFmt ) const
+{
+ const SfxItemSet& rFmtItemSet = rFmt.GetAttrSet();
+ const SfxPoolItem *pItem;
+ SfxWhichIter aIter( rItemSet );
+
+ USHORT nWhich = aIter.FirstWhich();
+ while( nWhich )
+ {
+ if( SFX_ITEM_SET == rItemSet.GetItemState(nWhich,FALSE,&pItem) &&
+ SFX_ITEM_SET == rFmtItemSet.GetItemState(nWhich,TRUE,&pItem) )
+ {
+ rItemSet.ClearItem( nWhich );
+ }
+
+ nWhich = aIter.NextWhich();
+ }
+}
+
+void lcl_swcss1_setEncoding( SwFmt& rFmt, rtl_TextEncoding eEnc )
+{
+ if( RTL_TEXTENCODING_DONTKNOW == eEnc )
+ return;
+
+ const SfxItemSet& rItemSet = rFmt.GetAttrSet();
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_CHRATR_FONT, FALSE,&pItem ) )
+ {
+ const SvxFontItem& rFont = *(const SvxFontItem *)pItem;
+ if( RTL_TEXTENCODING_SYMBOL != rFont.GetCharSet() )
+ {
+ SvxFontItem aFont( rFont.GetFamily(), rFont.GetFamilyName(),
+ rFont.GetStyleName(), rFont.GetPitch(),
+ eEnc );
+ rFmt.SetAttr( aFont );
+ }
+ }
+}
+
+void SwCSS1Parser::SetDfltEncoding( rtl_TextEncoding eEnc )
+{
+ if( eEnc != GetDfltEncoding() )
+ {
+ if( bIsNewDoc )
+ {
+ // Set new encoding as pool default
+ const SvxFontItem& rDfltFont =
+ (const SvxFontItem&)pDoc->GetDefault( RES_CHRATR_FONT );
+ SvxFontItem aFont( rDfltFont.GetFamily(), rDfltFont.GetFamilyName(),
+ rDfltFont.GetStyleName(), rDfltFont.GetPitch(),
+ eEnc );
+ pDoc->SetDefault( aFont );
+
+ // Change all paragraph styles that do specify a font.
+ USHORT nArrLen = pDoc->GetTxtFmtColls()->Count();
+ for( USHORT i=1; i<nArrLen; i++ )
+ lcl_swcss1_setEncoding( *(*pDoc->GetTxtFmtColls())[i], eEnc );
+
+ // Change all character styles that do specify a font.
+ nArrLen = pDoc->GetCharFmts()->Count();
+ for( i=1; i<nArrLen; i++ )
+ lcl_swcss1_setEncoding( *(*pDoc->GetCharFmts())[i], eEnc );
+ }
+
+ SvxCSS1Parser::SetDfltEncoding( eEnc );
+ }
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmlcss1.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.96 2000/09/18 16:04:43 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.95 2000/08/30 16:46:26 jp
+ use CharClass instead of international
+
+ Revision 1.94 2000/04/28 14:29:11 mib
+ unicode
+
+ Revision 1.93 2000/04/10 12:20:55 mib
+ unicode
+
+ Revision 1.92 2000/03/03 15:21:00 os
+ StarView remainders removed
+
+ Revision 1.91 2000/02/11 14:37:03 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.90 1999/09/17 12:12:49 mib
+ support of multiple and non system text encodings
+
+ Revision 1.89 1999/06/11 14:45:26 MIB
+ Individuelle Umrandungs-Abstaende
+
+
+ Rev 1.88 11 Jun 1999 16:45:26 MIB
+ Individuelle Umrandungs-Abstaende
+
+ Rev 1.87 15 Apr 1999 13:51:30 MIB
+ #41833#: Styles fuer A-Tag
+
+ Rev 1.86 08 Apr 1999 17:35:36 MIB
+ #64522#: Styles fuer TD/TH auswerten
+
+ Rev 1.85 17 Mar 1999 16:45:22 MIB
+ #63049#: Numerierungen mit relativen Abstaenden
+
+ Rev 1.84 25 Feb 1999 16:00:44 MIB
+ #61949#: globale Shell entsorgt
+
+ Rev 1.83 22 Feb 1999 08:40:26 MA
+ 1949globale Shell entsorgt, Shells am RootFrm
+
+ Rev 1.82 27 Jan 1999 09:43:38 OS
+ #56371# TF_ONE51
+
+ Rev 1.81 14 Jan 1999 13:28:26 MIB
+ #60776#: Festen statt minimalen Zeilen-Abstand einstellen
+
+ Rev 1.80 11 Jan 1999 16:05:34 JP
+ Bug #60765#: CopyPageDesc - ggfs die PoolIds nicht mit kopieren
+
+ Rev 1.79 02 Nov 1998 17:28:30 MIB
+ #58480#: Fuss-/Endnoten
+
+ Rev 1.78 21 Apr 1998 13:46:10 MIB
+ fix: Keine Bookmark fuer abs-pos Objekte mit ID einfuegen
+
+ Rev 1.77 20 Apr 1998 08:43:44 MIB
+ fix: @page wieder auswerten
+
+ Rev 1.76 15 Apr 1998 14:46:48 MIB
+ Zwei-seitige Printing-Extensions
+
+ Rev 1.75 03 Apr 1998 12:18:42 MIB
+ Rahmenhoehe MIN_SIZE statt VAR_SIZE
+
+ Rev 1.74 02 Apr 1998 19:41:00 MIB
+ Positionierung von spaltigen Rahmen
+
+ Rev 1.73 27 Mar 1998 10:01:52 MIB
+ direkte Positionierung von Grafiken etc.
+
+ Rev 1.72 25 Mar 1998 12:08:16 MIB
+ abs.-pos. Container angefangen
+
+ Rev 1.71 24 Mar 1998 14:31:28 MIB
+ obsolete ParseStyleOptions-Methode entfernt
+
+ Rev 1.70 20 Mar 1998 10:42:44 MIB
+ Font-Listen in Font-Attributen
+
+ Rev 1.69 24 Feb 1998 11:31:24 MIB
+ Jetzt auch HTML_LISTING und HTML_XMP vernichtet (wegen #42029#)
+
+ Rev 1.68 20 Feb 1998 19:04:30 MA
+ header
+
+ Rev 1.67 17 Feb 1998 10:51:08 MIB
+ HTML-H6 -> HEADLINE6
+
+ Rev 1.66 19 Jan 1998 16:27:18 MIB
+ Numerierungs-Umbau
+
+ Rev 1.65 26 Nov 1997 19:09:20 MA
+ includes
+
+ Rev 1.64 17 Nov 1997 10:16:48 JP
+ Umstellung Numerierung
+
+ Rev 1.63 21 Oct 1997 09:18:06 MIB
+ Seitengroesse der HTML-Vorlage als Ausgangsbasis verwenden
+
+ Rev 1.62 20 Oct 1997 09:51:02 MIB
+ Nur fuer absolute positioning benoetigten Code groesstenteils auskommentiert
+
+ Rev 1.61 17 Oct 1997 13:20:06 MIB
+ page-break-xxx auch uber STYLE/CLASS und ID-Optionen
+
+ Rev 1.60 14 Oct 1997 14:31:22 MIB
+ fix #44228#: ViewShell-Zerstoerung/Rekonstruktion ueber Clients
+
+ Rev 1.59 10 Oct 1997 10:16:20 MIB
+ CSS1-Printing-Ext: @page,page-break-before/after (noch kein left/right)
+
+ Rev 1.58 16 Sep 1997 17:24:40 MIB
+ abs. Positioning fuer Absatz-Tags
+
+ Rev 1.57 16 Sep 1997 14:55:24 MIB
+ ITEMID_BOXINFOITEM (voreubergendend) definieren
+
+ Rev 1.56 16 Sep 1997 11:13:32 MIB
+ unbenutzte Funktionen entfernt
+
+ Rev 1.55 12 Sep 1997 11:55:22 MIB
+ fix #41136#: &(xxx);-Makros, Nicht benutzen Code entfernt
+
+ Rev 1.54 18 Aug 1997 11:36:14 OS
+ includes
+
+ Rev 1.53 15 Aug 1997 12:47:48 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.52 12 Aug 1997 13:47:00 OS
+ Header-Umstellung
+
+ Rev 1.51 11 Aug 1997 14:07:06 OM
+ Headerfile-Umstellung
+
+ Rev 1.50 07 Aug 1997 15:08:36 OM
+ Headerfile-Umstellung
+
+ Rev 1.49 04 Aug 1997 13:54:06 MIB
+ aboslute psoitioning (fuer fast alle Zeichen-Attribute/-Vorlagen)
+
+ Rev 1.48 31 Jul 1997 10:43:40 MIB
+ absolute positioning (sehr rudimentaer, nicht freigeschaltet)
+
+ Rev 1.47 18 Jul 1997 10:55:08 MIB
+ fix #40951#: In Reschedule/DocDetected absichtlich geaenderte URLs beachten
+
+ Rev 1.46 02 Jul 1997 10:11:40 MIB
+ Transfer-Prio fuer File-Download setzen
+
+ Rev 1.45 01 Jul 1997 08:30:50 MIB
+ fix #41120#: Beim synchronen Laden (Source-View) Styles synchron laden
+
+ Rev 1.44 16 Jun 1997 08:27:56 MIB
+ CLASS/ID auch fier Tabellen
+
+ Rev 1.43 13 Jun 1997 11:55:38 MIB
+ CLASS und ID CSS1-Optionen auswerten
+
+ Rev 1.42 21 May 1997 11:12:22 MIB
+ <LINK REL=STYLESHEET> zum Enbinden von externen Style-Sheets
+
+ Rev 1.41 23 Apr 1997 15:03:48 MIB
+ fixes #39160# und #39162#: BODY-Style und Text, Fontnamen ohne Haekchen
+
+ Rev 1.40 08 Apr 1997 11:06:48 MIB
+ fix #37219#: In Tabellen-Beschriftung alles erlauben
+
+ Rev 1.39 13 Feb 1997 13:03:26 JP
+ DT1-5 und DD1-5 entfernt, es gibt nur noch DD/DT
+
+ Rev 1.38 12 Feb 1997 10:56:00 MIB
+ DL-Ebene ueber harte Attributierung
+
+ Rev 1.37 28 Jan 1997 11:29:00 MIB
+ Hart attributierte DropCaps, neue Namen fuer Class-Vorlagen
+
+ Rev 1.36 10 Dec 1996 15:01:48 MIB
+ Umstellung HTML-Vorlagen aus Pool
+
+ Rev 1.35 09 Dec 1996 20:10:24 JP
+ erstellen/modifizieren der Vorlagen entfernt, umgestellt auf die neuen PoolVorlagen
+
+ Rev 1.34 27 Nov 1996 14:35:34 MIB
+ fix #32725#: Bei harter Attr. oberern/unteren Abstand aus Vorlagen beruecks.
+
+ Rev 1.33 26 Nov 1996 16:22:48 MIB
+ keine abhaengigen Attribute mehr
+
+ Rev 1.32 01 Nov 1996 04:37:04 MH
+ aNodes -> GetNodes()
+
+ Rev 1.31 30 Oct 1996 18:28:58 MIB
+ Zeichenvorlagen fuer DropCaps nur anlegen wenn noetig
+
+ Rev 1.30 29 Oct 1996 16:34:58 MIB
+ DropCaps wieder aktiviert
+
+ Rev 1.29 29 Oct 1996 15:35:26 MIB
+ Flags fuer gesetzte/nicht-gesetzte Attribut-Werte
+
+ Rev 1.28 28 Oct 1996 19:51:44 MIB
+ CLASS an Absatzvorlagen importieren
+
+ Rev 1.27 24 Oct 1996 17:09:56 JP
+ Optimierung: Find...ByName
+
+ Rev 1.26 23 Oct 1996 19:49:00 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.25 23 Oct 1996 09:33:20 MIB
+ Klassen-Namen in Kleinbuchstaben wandeln
+
+ Rev 1.24 22 Oct 1996 10:28:38 MIB
+ Umstellung von CSS1 auf Klein-Buchstaben (u.a. wegen Amaya)
+
+ Rev 1.23 21 Oct 1996 08:56:36 MIB
+ CLASS fuer Zeichen-Vorlagen, STYLE am BODY-Tag
+
+ Rev 1.22 15 Oct 1996 18:44:34 MIB
+ unbenutzte Funktionen entfernt
+
+ Rev 1.21 15 Oct 1996 17:48:34 MIB
+ unbenutzte Funktionen entfernt
+
+ Rev 1.20 15 Oct 1996 13:42:06 MIB
+ letter-spacing/Laufweite imp./exp.
+
+ Rev 1.19 14 Oct 1996 18:49:14 MIB
+ Am Box-Item Abstand zur Umrandung setzen
+
+ Rev 1.18 14 Oct 1996 16:49:54 MIB
+ fix(?) #32660#: BLOCKQUOTE nicht mehr im Blocksatz ausrichten
+
+ Rev 1.17 14 Oct 1996 16:43:02 MIB
+ Import CSS1-Umrandung (border)
+
+ Rev 1.16 13 Oct 1996 12:19:30 MIB
+ first-letter-Pseudo-Element/DropCaps
+
+ Rev 1.15 24 Sep 1996 12:49:42 MIB
+ Tabellenvorlagen wieder von Textkoerper abhaengig
+
+ Rev 1.14 20 Sep 1996 17:59:28 MIB
+ Zeichen-Hintergrund-Farbe/Itemset-Optimierungen
+
+ Rev 1.13 29 Aug 1996 14:12:20 MIB
+ bug fixes: Attrs in Tabellen ausserhalb Zelle loeschen, kein Mem-Verl. bei HR
+
+ Rev 1.12 20 Aug 1996 16:58:20 MIB
+ HTML-Absatzvorlagen importieren
+
+ Rev 1.11 14 Aug 1996 16:22:24 MIB
+ gcc und msvc: statt *aStr nicht aStr[0] sondern aStr[(USHORT)0]
+
+ Rev 1.10 13 Aug 1996 21:20:50 sdo
+ GCC
+
+ Rev 1.9 12 Aug 1996 10:33:22 MIB
+ CSS1-Background-Property
+
+ Rev 1.8 07 Aug 1996 14:41:02 MIB
+ Import von color und text-decoration
+
+ Rev 1.7 29 Jul 1996 15:57:12 MIB
+ Numerierungs-Umbau: linker/rechte Raender und Erstzeilen-Einzug
+
+ Rev 1.6 17 Jul 1996 10:35:00 MIB
+ Umbau: Setzen von Absatz-Vorlagen und deren Attributen
+
+ Rev 1.5 10 Jul 1996 15:06:20 MIB
+ Includes fuer precompiled header gerichtet
+
+ Rev 1.4 09 Jul 1996 13:31:14 MIB
+ Attributierung von Textkoerper in abgleiteten Vorlagen setzen
+
+ Rev 1.3 05 Jul 1996 11:20:18 MIB
+ BLINK-Zeichenvorlage entfernt
+
+ Rev 1.2 03 Jul 1996 16:55:36 MIB
+ Zeichenvorlagen durch Styles aendern
+
+ Rev 1.1 02 Jul 1996 19:18:28 MIB
+ harte CSS1-Attributierung (noch nicht fertig)
+
+ Rev 1.0 28 Jun 1996 18:08:52 MIB
+ Initial revision.
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmlctxt.cxx b/sw/source/filter/html/htmlctxt.cxx
new file mode 100644
index 000000000000..b25d5b2c4e42
--- /dev/null
+++ b/sw/source/filter/html/htmlctxt.cxx
@@ -0,0 +1,934 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlctxt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+
+#include "doc.hxx"
+#include "pam.hxx"
+#include "ndtxt.hxx"
+#include "shellio.hxx"
+#include "paratr.hxx"
+#include "htmlnum.hxx"
+#include "css1kywd.hxx"
+#include "swcss1.hxx"
+#include "swhtml.hxx"
+
+/* */
+
+
+class _HTMLAttrContext_SaveDoc
+{
+ SwHTMLNumRuleInfo aNumRuleInfo; // In Umgebung gueltige Numerierung
+ SwPosition *pPos; // hierhin beim verlassen den
+ // Kontexts zurueckgesprungen
+ _HTMLAttrTable *pAttrTab; // In Umgebung gueltige Attribute,
+ // wenn Attributierung nicht
+ // beibehalten werden soll.
+
+ USHORT nContextStMin; // In Umgebung gueltige Stack-
+ // Untergrenze, wenn der Stack
+ // geschuetzt werden soll.
+ USHORT nContextStAttrMin; // In Umgebung gueltige Stack-
+ // Untergrenze, wenn die Attribute
+ // nicht beibehalten werden sollen.
+
+ BOOL bStripTrailingPara : 1; // letzen Absatz entfernen?
+ BOOL bKeepNumRules : 1; // Numerierung beibehalten?
+ BOOL bPopStack : 1; // Stack-Elemente oberhalb des
+ // zu schliessenden entfernen?
+ BOOL bFixHeaderDist : 1;
+ BOOL bFixFooterDist : 1;
+
+public:
+
+ _HTMLAttrContext_SaveDoc() :
+ pPos( 0 ), pAttrTab( 0 ),
+ nContextStMin( USHRT_MAX ), nContextStAttrMin( USHRT_MAX ),
+ bStripTrailingPara( FALSE ), bKeepNumRules( FALSE ),
+ bPopStack( FALSE ),
+ bFixHeaderDist( FALSE ), bFixFooterDist( FALSE )
+ {}
+
+ ~_HTMLAttrContext_SaveDoc() { delete pPos; delete pAttrTab; }
+
+ // Die Position gehoert uns, muss also angelegt und zerstoert werden
+ void SetPos( const SwPosition& rPos ) { pPos = new SwPosition(rPos); }
+ const SwPosition *GetPos() const { return pPos; }
+
+ // Der Index gehoert uns nicht. Kein Anlgen und Zerstoeren.
+ void SetNumInfo( const SwHTMLNumRuleInfo& rInf ) { aNumRuleInfo.Set(rInf); }
+ const SwHTMLNumRuleInfo& GetNumInfo() const { return aNumRuleInfo; }
+
+ _HTMLAttrTable *GetAttrTab( BOOL bCreate= FALSE );
+
+ void SetContextStMin( USHORT nMin ) { nContextStMin = nMin; }
+ USHORT GetContextStMin() const { return nContextStMin; }
+
+ void SetContextStAttrMin( USHORT nMin ) { nContextStAttrMin = nMin; }
+ USHORT GetContextStAttrMin() const { return nContextStAttrMin; }
+
+ void SetStripTrailingPara( BOOL bSet ) { bStripTrailingPara = bSet; }
+ BOOL GetStripTrailingPara() const { return bStripTrailingPara; }
+
+ void SetKeepNumRules( BOOL bSet ) { bKeepNumRules = bSet; }
+ BOOL GetKeepNumRules() const { return bKeepNumRules; }
+
+ void SetFixHeaderDist( BOOL bSet ) { bFixHeaderDist = bSet; }
+ BOOL GetFixHeaderDist() const { return bFixHeaderDist; }
+
+ void SetFixFooterDist( BOOL bSet ) { bFixFooterDist = bSet; }
+ BOOL GetFixFooterDist() const { return bFixFooterDist; }
+};
+
+_HTMLAttrTable *_HTMLAttrContext_SaveDoc::GetAttrTab( BOOL bCreate )
+{
+ if( !pAttrTab && bCreate )
+ {
+ pAttrTab = new _HTMLAttrTable;
+ memset( pAttrTab, 0, sizeof( _HTMLAttrTable ));
+ }
+ return pAttrTab;
+}
+
+/* */
+
+_HTMLAttrContext_SaveDoc *_HTMLAttrContext::GetSaveDocContext( BOOL bCreate )
+{
+ if( !pSaveDocContext && bCreate )
+ pSaveDocContext = new _HTMLAttrContext_SaveDoc;
+
+ return pSaveDocContext;
+}
+
+void _HTMLAttrContext::ClearSaveDocContext()
+{
+ delete pSaveDocContext;
+ pSaveDocContext = 0;
+}
+
+/* */
+
+void SwHTMLParser::SplitAttrTab( const SwPosition& rNewPos )
+{
+ // Hier darf es keine vorlauefigen Absatz-Attribute geben, den die
+ // koennten jetzt gesetzt werden und dann sind die Zeiger ungueltig!!!
+ ASSERT( !aParaAttrs.Count(),
+ "Hoechste Gefahr: Es gibt noch nicht-endgueltige Absatz-Attribute" );
+ if( aParaAttrs.Count() )
+ aParaAttrs.Remove( 0, aParaAttrs.Count() );
+
+ const SwNodeIndex* pOldEndPara = &pPam->GetPoint()->nNode;
+ xub_StrLen nOldEndCnt = pPam->GetPoint()->nContent.GetIndex();
+
+ const SwNodeIndex& rNewSttPara = rNewPos.nNode;
+ xub_StrLen nNewSttCnt = rNewPos.nContent.GetIndex();
+
+ BOOL bMoveBack = FALSE;
+
+ // alle noch offenen Attribute beenden und hinter der Tabelle
+ // neu aufspannen
+ _HTMLAttr** pTbl = (_HTMLAttr**)&aAttrTab;
+ for( USHORT nCnt = sizeof( _HTMLAttrTable ) / sizeof( _HTMLAttr* );
+ nCnt--; ++pTbl )
+ {
+ _HTMLAttr *pAttr = *pTbl;
+ while( pAttr )
+ {
+ _HTMLAttr *pNext = pAttr->GetNext();
+ _HTMLAttr *pPrev = pAttr->GetPrev();
+
+ USHORT nWhich = pAttr->pItem->Which();
+ if( !nOldEndCnt && RES_PARATR_BEGIN <= nWhich &&
+ pAttr->GetSttParaIdx() < pOldEndPara->GetIndex() )
+ {
+ // Das Attribut muss eine Content-Position weiter vorne
+ // beendet werden
+ if( !bMoveBack )
+ {
+ bMoveBack = pPam->Move( fnMoveBackward );
+ nOldEndCnt = pPam->GetPoint()->nContent.GetIndex();
+ }
+ }
+ else if( bMoveBack )
+ {
+ pPam->Move( fnMoveForward );
+ nOldEndCnt = pPam->GetPoint()->nContent.GetIndex();
+ }
+
+ if( RES_PARATR_BEGIN <= nWhich && bMoveBack ||
+ pAttr->GetSttParaIdx() < pOldEndPara->GetIndex() ||
+ (pAttr->GetSttPara() == *pOldEndPara &&
+ pAttr->GetSttCnt() != nOldEndCnt) )
+ {
+ // Das Attribut muss gesetzt werden. Da wir
+ // das Original noch brauchen, weil Zeiger auf das Attribut
+ // noch in den Kontexten existieren, muessen wir es clonen.
+ // Die Next-Liste geht dabei verloren, aber die
+ // Previous-Liste bleibt erhalten
+ _HTMLAttr *pSetAttr = pAttr->Clone( *pOldEndPara, nOldEndCnt );
+
+ if( pNext )
+ pNext->InsertPrev( pSetAttr );
+ else
+ {
+ USHORT nTmp =
+ pSetAttr->bInsAtStart ? 0 : aSetAttrTab.Count();
+ aSetAttrTab.Insert( pSetAttr, nTmp );
+ }
+ }
+ else if( pPrev )
+ {
+ // Wenn das Attribut nicht gesetzt vor der Tabelle
+ // gesetzt werden muss, muessen der Previous-Attribute
+ // trotzdem gesetzt werden.
+ if( pNext )
+ pNext->InsertPrev( pPrev );
+ else
+ {
+ USHORT nTmp = pPrev->bInsAtStart ? 0 : aSetAttrTab.Count();
+ aSetAttrTab.Insert( pPrev, nTmp );
+ }
+ }
+
+ // den Start des Attributs neu setzen
+ pAttr->nSttPara = rNewSttPara;
+ pAttr->nEndPara = rNewSttPara;
+ pAttr->nSttCntnt = nNewSttCnt;
+ pAttr->nEndCntnt = nNewSttCnt;
+ pAttr->pPrev = 0;
+
+ pAttr = pNext;
+ }
+ }
+
+ if( bMoveBack )
+ pPam->Move( fnMoveForward );
+
+}
+
+void SwHTMLParser::SaveDocContext( _HTMLAttrContext *pCntxt,
+ USHORT nFlags,
+ const SwPosition *pNewPos )
+{
+ _HTMLAttrContext_SaveDoc *pSave = pCntxt->GetSaveDocContext( TRUE );
+ pSave->SetStripTrailingPara( (HTML_CNTXT_STRIP_PARA & nFlags) != 0 );
+ pSave->SetKeepNumRules( (HTML_CNTXT_KEEP_NUMRULE & nFlags) != 0 );
+ pSave->SetFixHeaderDist( (HTML_CNTXT_HEADER_DIST & nFlags) != 0 );
+ pSave->SetFixFooterDist( (HTML_CNTXT_FOOTER_DIST & nFlags) != 0 );
+
+ if( pNewPos )
+ {
+ // Wenn der PaM an eine andere Position gesetzt wird, muss
+ // die Numerierung gerettet werden..
+ if( !pSave->GetKeepNumRules() )
+ {
+ // Die Numerierung soll nicht beibehalten werden. Also muss
+ // der aktuelle Zustand gerettet und die Numerierung
+ // anschliessend ausgeschaltet werden.
+ pSave->SetNumInfo( GetNumInfo() );
+ GetNumInfo().Clear();
+ }
+#ifndef NUM_RELSPACE
+ else if( GetNumInfo().GetNumRule() && pTable )
+ {
+ // Die NumRule befindet sich nicht mehr unbedingt in einem
+ // zusammenhaengenden Bereich und muss deshalb vollst.
+ // aktualisiert werden.
+ GetNumInfo().SetUpdateWholeNum( TRUE );
+ }
+#endif
+
+ if( (HTML_CNTXT_KEEP_ATTRS & nFlags) != 0 )
+ {
+ // Attribute an aktueller Position beenden und an neuer neu anfangen
+ SplitAttrTab( *pNewPos );
+ }
+ else
+ {
+ _HTMLAttrTable *pSaveAttrTab = pSave->GetAttrTab( TRUE );
+ SaveAttrTab( *pSaveAttrTab );
+ }
+
+
+ pSave->SetPos( *pPam->GetPoint() );
+ *pPam->GetPoint() = *pNewPos;
+ }
+
+ // Mit dem Setzen von nContextStMin koennen automatisch auch
+ // keine gerade offenen Listen (DL/OL/UL) mehr beendet werden.
+ if( (HTML_CNTXT_PROTECT_STACK & nFlags) != 0 )
+ {
+ pSave->SetContextStMin( nContextStMin );
+ nContextStMin = aContexts.Count();
+
+ if( (HTML_CNTXT_KEEP_ATTRS & nFlags) == 0 )
+ {
+ pSave->SetContextStAttrMin( nContextStAttrMin );
+ nContextStAttrMin = aContexts.Count();
+ }
+ }
+}
+
+void SwHTMLParser::RestoreDocContext( _HTMLAttrContext *pCntxt )
+{
+ _HTMLAttrContext_SaveDoc *pSave = pCntxt->GetSaveDocContext();
+ if( !pSave )
+ return;
+
+ if( pSave->GetStripTrailingPara() )
+ StripTrailingPara();
+
+ if( pSave->GetPos() )
+ {
+ if( pSave->GetFixHeaderDist() || pSave->GetFixFooterDist() )
+ FixHeaderFooterDistance( pSave->GetFixHeaderDist(),
+ pSave->GetPos() );
+
+ _HTMLAttrTable *pSaveAttrTab = pSave->GetAttrTab();
+ if( !pSaveAttrTab )
+ {
+ // Attribute an aktueller Position beenden und an alter neu
+ // anfangen.
+ SplitAttrTab( *pSave->GetPos() );
+ }
+ else
+ {
+ RestoreAttrTab( *pSaveAttrTab );
+ }
+
+ *pPam->GetPoint() = *pSave->GetPos();
+
+ // Die bisherigen Attribute koennen wir schonmal setzen.
+ SetAttr();
+ }
+
+ if( USHRT_MAX != pSave->GetContextStMin() )
+ {
+ nContextStMin = pSave->GetContextStMin();
+ if( USHRT_MAX != pSave->GetContextStAttrMin() )
+ nContextStAttrMin = pSave->GetContextStAttrMin();
+ }
+
+ if( !pSave->GetKeepNumRules() )
+ {
+ // Die bisherige gemerkte Numerierung wieder setzen
+ GetNumInfo().Set( pSave->GetNumInfo() );
+ }
+#ifndef NUM_RELSPACE
+ else if( GetNumInfo().GetNumRule() && pTable )
+ {
+ // Die NumRule befindet sich nicht mehr unbedingt in einem
+ // zusammenhaengenden Bereich und muss deshalb vollst.
+ // aktualisiert werden.
+ GetNumInfo().SetUpdateWholeNum( TRUE );
+ }
+#endif
+
+ pCntxt->ClearSaveDocContext();
+}
+
+/* */
+
+void SwHTMLParser::EndContext( _HTMLAttrContext *pContext )
+{
+ if( pContext->GetPopStack() )
+ {
+ // Alle noch offenen Kontexte beenden. Der eigene
+ // Kontext muss bereits geloscht sein!
+ while( aContexts.Count() > nContextStMin )
+ {
+ _HTMLAttrContext *pCntxt = PopContext();
+ ASSERT( pCntxt != pContext,
+ "Kontext noch im Stack" );
+ if( pCntxt == pContext )
+ break;
+
+ EndContext( pCntxt );
+ delete pCntxt;
+ }
+ }
+
+ // Alle noch offenen Attribute beenden
+ if( pContext->HasAttrs() )
+ EndContextAttrs( pContext );
+
+ // Falls ein Bereich geoeffnet wurde, den verlassen. Da Bereiche
+ // auch innerhalb von absolut positionierten Objekten angelegt werden,
+ // muss das passieren, bever ein alter Dokument-Kontext restauriert wird.
+ if( pContext->GetSpansSection() )
+ EndSection();
+
+ // Rahmen und sonstige Sonderbereiche verlassen.
+ if( pContext->HasSaveDocContext() )
+ RestoreDocContext( pContext );
+
+ // Ggf. noch einen Ansatz-Umbruch einfuegen
+ if( AM_NONE != pContext->GetAppendMode() &&
+ pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( pContext->GetAppendMode() );
+
+ // PRE-/LISTING- und XMP-Umgebungen wieder starten
+ if( pContext->IsFinishPREListingXMP() )
+ FinishPREListingXMP();
+
+ if( pContext->IsRestartPRE() )
+ StartPRE();
+
+ if( pContext->IsRestartXMP() )
+ StartXMP();
+
+ if( pContext->IsRestartListing() )
+ StartListing();
+}
+
+void SwHTMLParser::ClearContext( _HTMLAttrContext *pContext )
+{
+ _HTMLAttrs &rAttrs = pContext->GetAttrs();
+ for( USHORT i=0; i<rAttrs.Count(); i++ )
+ {
+ // einfaches Loeschen reicht hier nicht, weil das
+ // Attribut auch aus seiner Liste ausgetragen werden
+ // muss. Theoretisch koennt man natuerlich auch die Liste
+ // und die Attribute getrennt loeschen, aber wenn man
+ // dann was falsch gemacht hat, sieht es uebel aus.
+ DeleteAttr( rAttrs[i] );
+ }
+
+ ASSERT( !pContext->GetSpansSection(),
+ "Bereich kann nicht mehr verlassen werden" );
+
+ ASSERT( !pContext->HasSaveDocContext(),
+ "Rahmen kann nicht mehr verlassen werden" );
+
+ // PRE-/LISTING- und XMP-Umgebungen wieder starten
+ if( pContext->IsFinishPREListingXMP() )
+ FinishPREListingXMP();
+
+ if( pContext->IsRestartPRE() )
+ StartPRE();
+
+ if( pContext->IsRestartXMP() )
+ StartXMP();
+
+ if( pContext->IsRestartListing() )
+ StartListing();
+}
+
+/* */
+
+BOOL SwHTMLParser::DoPositioning( SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo &rPropInfo,
+ _HTMLAttrContext *pContext )
+{
+ BOOL bRet = FALSE;
+
+ // Unter folgenden Umstaenden wird jetzt ein Rahmen aufgemacht:
+ // - das Tag wird absolut positioniert und left/top sind beide
+ // gegeben und enthalten auch keine %-Angabe, oder
+ // - das Tag soll fliessen, und
+ // - es wurde eine Breite angegeben (in beiden Faellen noetig)
+ if( SwCSS1Parser::MayBePositioned( rPropInfo ) )
+ {
+ SfxItemSet aFrmItemSet( pDoc->GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ if( !IsNewDoc() )
+ Reader::ResetFrmFmtAttrs(aFrmItemSet );
+
+ // Ausrichtung setzen
+ SetAnchorAndAdjustment( VERT_NONE, HORI_NONE, rItemSet, rPropInfo,
+ aFrmItemSet );
+
+ // Groesse setzen
+ SetVarSize( rItemSet, rPropInfo, aFrmItemSet );
+
+ // Abstaende setzen
+ SetSpace( Size(0,0), rItemSet, rPropInfo, aFrmItemSet );
+
+ // Sonstige CSS1-Attribute Setzen
+ SetFrmFmtAttrs( rItemSet, rPropInfo,
+ HTML_FF_BOX|HTML_FF_PADDING|HTML_FF_BACKGROUND,
+ aFrmItemSet );
+
+ InsertFlyFrame( aFrmItemSet, pContext, rPropInfo.aId,
+ CONTEXT_FLAGS_ABSPOS );
+ pContext->SetPopStack( TRUE );
+ rPropInfo.aId.Erase();
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+BOOL SwHTMLParser::CreateContainer( const String& rClass,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo &rPropInfo,
+ _HTMLAttrContext *pContext )
+{
+ BOOL bRet = FALSE;
+ if( rClass.EqualsIgnoreCaseAscii(sCSS1_class_abs_pos) &&
+ pCSS1Parser->MayBePositioned( rPropInfo ) )
+ {
+ // Container-Klasse
+ SfxItemSet *pFrmItemSet = pContext->GetFrmItemSet( pDoc );
+ if( !IsNewDoc() )
+ Reader::ResetFrmFmtAttrs( *pFrmItemSet );
+
+ SetAnchorAndAdjustment( VERT_NONE, HORI_NONE,
+ rItemSet, rPropInfo, *pFrmItemSet );
+ Size aDummy(0,0);
+ SetFixSize( aDummy, aDummy, FALSE, FALSE, rItemSet, rPropInfo,
+ *pFrmItemSet );
+ SetSpace( aDummy, rItemSet, rPropInfo, *pFrmItemSet );
+ SetFrmFmtAttrs( rItemSet, rPropInfo, HTML_FF_BOX|HTML_FF_BACKGROUND,
+ *pFrmItemSet );
+
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+/* */
+
+void SwHTMLParser::InsertAttrs( SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo &rPropInfo,
+ _HTMLAttrContext *pContext,
+ BOOL bCharLvl )
+{
+ // Ein DropCap-Attribut basteln, wenn auf Zeichen-Ebene vor dem
+ // ersten Zeichen ein float: left vorkommt
+ if( bCharLvl && !pPam->GetPoint()->nContent.GetIndex() &&
+ SVX_ADJUST_LEFT == rPropInfo.eFloat )
+ {
+ SwFmtDrop aDrop;
+ aDrop.GetChars() = 1;
+
+ pCSS1Parser->FillDropCap( aDrop, rItemSet );
+
+ // Nur wenn das Initial auch ueber mehrere Zeilen geht, wird das
+ // DropCap-Attribut gesetzt. Sonst setzten wir die Attribute hart.
+ if( aDrop.GetLines() > 1 )
+ {
+ NewAttr( &aAttrTab.pDropCap, aDrop );
+
+ _HTMLAttrs &rAttrs = pContext->GetAttrs();
+ rAttrs.Insert( aAttrTab.pDropCap, rAttrs.Count() );
+
+ return;
+ }
+ }
+
+// Feature: PrintExt
+ if( !bCharLvl )
+ pCSS1Parser->SetFmtBreak( rItemSet, rPropInfo );
+// /Feature: PrintExt
+
+ ASSERT( aContexts.Count() <= nContextStAttrMin ||
+ aContexts[aContexts.Count()-1] != pContext,
+ "SwHTMLParser::InsertAttrs: Kontext doch schon auf dem Stack" );
+
+ SfxItemIter aIter( rItemSet );
+
+ const SfxPoolItem *pItem = aIter.FirstItem();
+ while( pItem )
+ {
+ _HTMLAttr **ppAttr = 0;
+
+ switch( pItem->Which() )
+ {
+ case RES_LR_SPACE:
+ {
+ // Absatz-Einzuege muessen addiert werden und werden immer
+ // nur absatzweise gesetzt (fuer den ersten Absatz hier,
+ // fuer alle folgenden in SetTxtCollAttrs)
+
+ const SvxLRSpaceItem *pLRItem =
+ (const SvxLRSpaceItem *)pItem;
+
+ // die bisherigen Absatz-Abstaende holen (ohne die vom
+ // obersten Kontext, denn den veraendern wir ja gerade) ...
+ USHORT nOldLeft = 0, nOldRight = 0;
+ short nOldIndent = 0;
+ BOOL bIgnoreTop = aContexts.Count() > nContextStMin &&
+ aContexts[aContexts.Count()-1] == pContext;
+ GetMarginsFromContext( nOldLeft, nOldRight, nOldIndent,
+ bIgnoreTop );
+
+
+ // und noch die aktuell gueltigen
+ USHORT nLeft = nOldLeft, nRight = nOldRight;
+ short nIndent = nOldIndent;
+ pContext->GetMargins( nLeft, nRight, nIndent );
+
+ // ... und die neuen Abstaende zu den alten addieren
+ // Hier werden nicht die aus dem Item genommen, sondern die
+ // extra gemerkten, weil die auch negativ sein koennen. Die
+ // Abfrage ueber das Item funktioniert aber trotzdem, denn
+ // fuer negative Werte wird das Item (mit Wert 0) auch
+ // eingefuegt.
+ if( rPropInfo.bLeftMargin )
+ {
+ ASSERT( rPropInfo.nLeftMargin < 0 ||
+ rPropInfo.nLeftMargin == pLRItem->GetTxtLeft(),
+ "linker Abstand stimmt nicht mit Item ueberein" );
+ if( rPropInfo.nLeftMargin < 0 &&
+ -rPropInfo.nLeftMargin > nOldLeft )
+ nLeft = 0;
+ else
+ nLeft = nOldLeft + rPropInfo.nLeftMargin;
+ }
+ if( rPropInfo.bRightMargin )
+ {
+ ASSERT( rPropInfo.nRightMargin < 0 ||
+ rPropInfo.nRightMargin == pLRItem->GetRight(),
+ "rechter Abstand stimmt nicht mit Item ueberein" );
+ if( rPropInfo.nRightMargin < 0 &&
+ -rPropInfo.nRightMargin > nOldRight )
+ nRight = 0;
+ else
+ nRight = nOldRight + rPropInfo.nRightMargin;
+ }
+ if( rPropInfo.bTextIndent )
+ nIndent = pLRItem->GetTxtFirstLineOfst();
+
+ // und die Werte fuer nachfolgende Absaetze merken
+ pContext->SetMargins( nLeft, nRight, nIndent );
+
+#ifndef NUM_RELSPACE
+ // Numerierungen erfordern etwas mehr Aufwand
+ if( GetNumInfo().GetNumRule() )
+ {
+ SwTxtNode *pNumTxtNode = pPam->GetNode()->GetTxtNode();
+
+ if( pNumTxtNode->GetNum() &&
+ !(NO_NUMLEVEL & pNumTxtNode->GetNum()->GetLevel()) )
+ nIndent += HTML_NUMBUL_INDENT;
+
+ // den Absatz muessen wir jetzt selbst attributieren
+ pNumTxtNode->SetNumLSpace( FALSE );
+ }
+#endif
+
+ // das Attribut noch am aktuellen Absatz setzen
+ SvxLRSpaceItem aLRItem( *pLRItem );
+ aLRItem.SetTxtFirstLineOfst( nIndent );
+ aLRItem.SetTxtLeft( nLeft );
+ aLRItem.SetRight( nRight );
+ NewAttr( &aAttrTab.pLRSpace, aLRItem );
+ EndAttr( aAttrTab.pLRSpace, 0, FALSE );
+ }
+ break;
+
+ case RES_UL_SPACE:
+ if( !rPropInfo.bTopMargin || !rPropInfo.bBottomMargin )
+ {
+ USHORT nUpper = 0, nLower = 0;
+ GetULSpaceFromContext( nUpper, nLower );
+ SvxULSpaceItem aULSpace( *((const SvxULSpaceItem *)pItem) );
+ if( !rPropInfo.bTopMargin )
+ aULSpace.SetUpper( nUpper );
+ if( !rPropInfo.bBottomMargin )
+ aULSpace.SetLower( nLower );
+
+ NewAttr( &aAttrTab.pULSpace, aULSpace );
+
+ // ... und noch die Kontext-Information speichern
+ _HTMLAttrs &rAttrs = pContext->GetAttrs();
+ rAttrs.Insert( aAttrTab.pULSpace, rAttrs.Count() );
+
+ pContext->SetULSpace( aULSpace.GetUpper(), aULSpace.GetLower() );
+ }
+ else
+ {
+ ppAttr = &aAttrTab.pULSpace;
+ }
+ break;
+ case RES_CHRATR_FONTSIZE:
+ // es werden keine Attribute mit %-Angaben gesetzt
+ if( ((const SvxFontHeightItem *)pItem)->GetProp() == 100 )
+ ppAttr = &aAttrTab.pFontHeight;
+ break;
+
+ case RES_BACKGROUND:
+ if( bCharLvl )
+ {
+ // das Frame-Attr ggf. in ein Char-Attr umwandeln
+ SvxBrushItem aBrushItem( *(const SvxBrushItem *)pItem );
+ aBrushItem.SetWhich( RES_CHRATR_BACKGROUND );
+
+ // Das Attribut setzen ...
+ NewAttr( &aAttrTab.pCharBrush, aBrushItem );
+
+ // ... und noch die Kontext-Information speichern
+ _HTMLAttrs &rAttrs = pContext->GetAttrs();
+ rAttrs.Insert( aAttrTab.pCharBrush, rAttrs.Count() );
+ }
+ else if( pContext->GetToken() != HTML_TABLEHEADER_ON &&
+ pContext->GetToken() != HTML_TABLEDATA_ON )
+ {
+ ppAttr = &aAttrTab.pBrush;
+ }
+ break;
+
+ default:
+ // den zu dem Item gehoehrenden Tabellen-Eintrag ermitteln ...
+ ppAttr = GetAttrTabEntry( pItem->Which() );
+ break;
+ }
+
+ if( ppAttr )
+ {
+ // Das Attribut setzen ...
+ NewAttr( ppAttr, *pItem );
+
+ // ... und noch die Kontext-Information speichern
+ _HTMLAttrs &rAttrs = pContext->GetAttrs();
+ rAttrs.Insert( *ppAttr, rAttrs.Count() );
+ }
+
+ // auf zum naechsten Item
+ pItem = aIter.NextItem();
+ }
+
+ if( rPropInfo.aId.Len() )
+ InsertBookmark( rPropInfo.aId );
+}
+
+void SwHTMLParser::InsertAttr( _HTMLAttr **ppAttr, const SfxPoolItem & rItem,
+ _HTMLAttrContext *pCntxt )
+{
+ if( !ppAttr )
+ {
+ ppAttr = GetAttrTabEntry( rItem.Which() );
+ if( !ppAttr )
+ return;
+ }
+
+ // das Attribut setzen
+ NewAttr( ppAttr, rItem );
+
+ // und im Kontext merken
+ _HTMLAttrs &rAttrs = pCntxt->GetAttrs();
+ rAttrs.Insert( *ppAttr, rAttrs.Count() );
+}
+
+void SwHTMLParser::SplitPREListingXMP( _HTMLAttrContext *pCntxt )
+{
+ // PRE/Listing/XMP soll beim beenden des Kontexts beendet werden.
+ pCntxt->SetFinishPREListingXMP( TRUE );
+
+ // Und die jetzt gueltigen Flags sollen wieder gesetzt werden.
+ if( IsReadPRE() )
+ pCntxt->SetRestartPRE( TRUE );
+ if( IsReadXMP() )
+ pCntxt->SetRestartXMP( TRUE );
+ if( IsReadListing() )
+ pCntxt->SetRestartListing( TRUE );
+
+ // PRE/Listing/XMP wird auuserdem sofort beendet
+ FinishPREListingXMP();
+}
+
+SfxItemSet *_HTMLAttrContext::GetFrmItemSet( SwDoc *pCreateDoc )
+{
+ if( !pFrmItemSet && pCreateDoc )
+ pFrmItemSet = new SfxItemSet( pCreateDoc->GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ return pFrmItemSet;
+}
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmlctxt.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.33 2000/09/18 16:04:44 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.32 2000/04/10 12:20:55 mib
+ unicode
+
+ Revision 1.31 1999/03/26 10:37:28 MIB
+ #63049#: Sofortige Numerierungs-Aktualisierung in Tabellen ist jetzt unnoetig
+
+
+ Rev 1.30 26 Mar 1999 11:37:28 MIB
+ #63049#: Sofortige Numerierungs-Aktualisierung in Tabellen ist jetzt unnoetig
+
+ Rev 1.29 23 Mar 1999 15:28:14 MIB
+ #63049#: Relative Einzuege in Numerierungen
+
+ Rev 1.28 17 Mar 1999 16:46:20 MIB
+ #63049#: Numerierungen mit relativen Abstaenden
+
+ Rev 1.27 06 Nov 1998 15:33:36 MIB
+ #59043#: negative Absatz-Einzuege
+
+ Rev 1.26 21 Apr 1998 13:46:10 MIB
+ fix: Keine Bookmark fuer abs-pos Objekte mit ID einfuegen
+
+ Rev 1.25 15 Apr 1998 14:47:42 MIB
+ Zwei-seitige Printing-Extensions
+
+ Rev 1.24 03 Apr 1998 12:21:46 MIB
+ Export des Rahmen-Namens als ID
+
+ Rev 1.23 02 Apr 1998 19:43:24 MIB
+ Positionierung von spaltigen Rahmen
+
+ Rev 1.22 27 Mar 1998 10:04:10 MIB
+ direkte Positionierung von Grafiken etc.
+
+ Rev 1.21 25 Mar 1998 12:08:18 MIB
+ abs.-pos. Container angefangen
+
+ Rev 1.20 19 Mar 1998 09:03:28 MIB
+ Abs.-Pos.: Attributierung nicht in Rahmen uebernehmen, Hoehe nun Mindest-Hoehe
+
+ Rev 1.19 15 Mar 1998 16:51:14 MIB
+ abs.-pos.: Abstaende bei Positionierung beachten, Hoehe nur noch Mindest-Hoehe
+
+ Rev 1.18 13 Mar 1998 09:25:52 MIB
+ Abs-Pos: margins als Rahmen-Abstaende uebernehmen
+
+ Rev 1.17 11 Mar 1998 18:25:38 MIB
+ abs. Pos.: Verankerung angepassr
+
+ Rev 1.16 20 Feb 1998 19:04:30 MA
+ header
+
+ Rev 1.15 19 Jan 1998 16:25:56 MIB
+ Numerierungs-Umbau
+
+ Rev 1.14 26 Nov 1997 19:09:22 MA
+ includes
+
+ Rev 1.13 17 Nov 1997 10:16:48 JP
+ Umstellung Numerierung
+
+ Rev 1.12 20 Oct 1997 09:51:56 MIB
+ Nur fuer absolute positioning benoetigten Code groesstenteils auskommentiert
+
+ Rev 1.11 17 Oct 1997 13:20:32 MIB
+ page-break-xxx auch uber STYLE/CLASS und ID-Optionen
+
+ Rev 1.10 09 Oct 1997 14:36:10 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.9 16 Sep 1997 17:25:10 MIB
+ abs. Positioning fuer Absatz-Tags
+
+ Rev 1.8 16 Sep 1997 11:15:00 MIB
+ Kopf-/Fusszeilen ohne Moven von Nodes, autom. Beenden von Bereichen/Rahmen
+
+ Rev 1.7 12 Sep 1997 11:56:16 MIB
+ fix #41253#: Script in PRE (keine Schleifen), MULTICOL ohne Move von Nodes
+
+ Rev 1.6 08 Sep 1997 17:49:12 MIB
+ Verankerung von AUTO_CNTNT-Rahmen nicht mehr verschieben
+
+ Rev 1.5 08 Sep 1997 10:33:44 MIB
+ Keine Schleifen fuer PRE mehr (auch fix #41253#) (nicht freigeschaltet)
+
+ Rev 1.4 15 Aug 1997 12:47:48 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.3 12 Aug 1997 13:44:18 OS
+ Header-Umstellung
+
+ Rev 1.2 07 Aug 1997 15:07:50 OM
+ Headerfile-Umstellung
+
+ Rev 1.1 04 Aug 1997 13:54:08 MIB
+ aboslute psoitioning (fuer fast alle Zeichen-Attribute/-Vorlagen)
+
+ Rev 1.0 04 Aug 1997 13:02:32 MIB
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmldraw.cxx b/sw/source/filter/html/htmldraw.cxx
new file mode 100644
index 000000000000..be480628676e
--- /dev/null
+++ b/sw/source/filter/html/htmldraw.cxx
@@ -0,0 +1,1070 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmldraw.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SVDMODEL_HXX //autogen
+#include <svx/svdmodel.hxx>
+#endif
+#ifndef _SVDPAGE_HXX //autogen
+#include <svx/svdpage.hxx>
+#endif
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+#ifndef _SVDOTEXT_HXX //autogen
+#include <svx/svdotext.hxx>
+#endif
+#ifndef _EEITEM_HXX //autogen
+#include <svx/eeitem.hxx>
+#endif
+#ifndef _OUTLINER_HXX //autogen
+#define _EEITEMID_HXX
+#include <svx/outliner.hxx>
+#endif
+#ifndef SVX_XFILLIT0_HXX //autogen
+#include <svx/xfillit0.hxx>
+#endif
+#ifndef _SVX_FILLITEM_HXX //autogen
+#include <svx/xfillit.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _HTMLOUT_HXX //autogen
+#include <svtools/htmlout.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+#ifndef _SVDPOOL_HXX //autogen
+#include <svx/svdpool.hxx>
+#endif
+
+
+#ifndef _CHARATR_HXX
+#include "charatr.hxx"
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#include "ndtxt.hxx"
+#include "doc.hxx"
+#include "dcontact.hxx"
+#include "poolfmt.hxx"
+#include "swcss1.hxx"
+#include "swhtml.hxx"
+#include "wrthtml.hxx"
+
+
+const sal_uInt32 HTML_FRMOPTS_MARQUEE =
+ HTML_FRMOPT_ALIGN |
+ HTML_FRMOPT_SPACE;
+
+const sal_uInt32 HTML_FRMOPTS_MARQUEE_CSS1 =
+ HTML_FRMOPT_S_ALIGN |
+ HTML_FRMOPT_S_SPACE;
+
+static HTMLOptionEnum __FAR_DATA aHTMLMarqBehaviorTable[] =
+{
+ { sHTML_BEHAV_scroll, SDRTEXTANI_SCROLL },
+ { sHTML_BEHAV_alternate, SDRTEXTANI_ALTERNATE },
+ { sHTML_BEHAV_slide, SDRTEXTANI_SLIDE },
+ { 0, 0 }
+};
+
+static HTMLOptionEnum __FAR_DATA aHTMLMarqDirectionTable[] =
+{
+ { sHTML_AL_left, SDRTEXTANI_LEFT },
+ { sHTML_AL_right, SDRTEXTANI_RIGHT },
+ { 0, 0 }
+};
+
+/* */
+void SwHTMLParser::InsertDrawObject( SdrObject* pNewDrawObj,
+ const Size& rPixSpace,
+ SwVertOrient eVertOri,
+ SwHoriOrient eHoriOri,
+ SfxItemSet& rCSS1ItemSet,
+ SvxCSS1PropertyInfo& rCSS1PropInfo,
+ sal_Bool bHidden )
+{
+ // immer ueber dem Text stehen
+ pNewDrawObj->SetLayer( pDoc->GetHeavenId() );
+
+ SfxItemSet aFrmSet( pDoc->GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ if( !IsNewDoc() )
+ Reader::ResetFrmFmtAttrs( aFrmSet );
+
+ sal_uInt16 nLeftSpace = 0, nRightSpace = 0, nUpperSpace = 0, nLowerSpace = 0;
+ if( (rPixSpace.Width() || rPixSpace.Height()) && Application::GetDefaultDevice() )
+ {
+ Size aTwipSpc( rPixSpace.Width(), rPixSpace.Height() );
+ aTwipSpc =
+ Application::GetDefaultDevice()->PixelToLogic( aTwipSpc,
+ MapMode(MAP_TWIP) );
+ nLeftSpace = nRightSpace = (sal_uInt16)aTwipSpc.Width();
+ nUpperSpace = nLowerSpace = (sal_uInt16)aTwipSpc.Height();
+ }
+
+ // linken/rechten Rand setzen
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_LR_SPACE, sal_True, &pItem ) )
+ {
+ // Ggf. den Erstzeilen-Einzug noch plaetten
+ const SvxLRSpaceItem *pLRItem = (const SvxLRSpaceItem *)pItem;
+ SvxLRSpaceItem aLRItem( *pLRItem );
+ aLRItem.SetTxtFirstLineOfst( 0 );
+ if( rCSS1PropInfo.bLeftMargin )
+ {
+ nLeftSpace = aLRItem.GetLeft();
+ rCSS1PropInfo.bLeftMargin = sal_False;
+ }
+ if( rCSS1PropInfo.bRightMargin )
+ {
+ nRightSpace = aLRItem.GetRight();
+ rCSS1PropInfo.bRightMargin = sal_False;
+ }
+ rCSS1ItemSet.ClearItem( RES_LR_SPACE );
+ }
+ if( nLeftSpace || nRightSpace )
+ {
+ SvxLRSpaceItem aLRItem;
+ aLRItem.SetLeft( nLeftSpace );
+ aLRItem.SetRight( nRightSpace );
+ aFrmSet.Put( aLRItem );
+ }
+
+ // oberen/unteren Rand setzen
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_UL_SPACE, sal_True, &pItem ) )
+ {
+ // Ggf. den Erstzeilen-Einzug noch plaetten
+ const SvxULSpaceItem *pULItem = (const SvxULSpaceItem *)pItem;
+ if( rCSS1PropInfo.bTopMargin )
+ {
+ nUpperSpace = pULItem->GetUpper();
+ rCSS1PropInfo.bTopMargin = sal_False;
+ }
+ if( rCSS1PropInfo.bBottomMargin )
+ {
+ nLowerSpace = pULItem->GetLower();
+ rCSS1PropInfo.bBottomMargin = sal_False;
+ }
+
+ rCSS1ItemSet.ClearItem( RES_UL_SPACE );
+ }
+ if( nUpperSpace || nLowerSpace )
+ {
+ SvxULSpaceItem aULItem;
+ aULItem.SetUpper( nUpperSpace );
+ aULItem.SetLower( nLowerSpace );
+ aFrmSet.Put( aULItem );
+ }
+
+ SwFmtAnchor aAnchor( FLY_IN_CNTNT );
+ if( SVX_CSS1_POS_ABSOLUTE == rCSS1PropInfo.ePosition &&
+ SVX_CSS1_LTYPE_TWIP == rCSS1PropInfo.eLeftType &&
+ SVX_CSS1_LTYPE_TWIP == rCSS1PropInfo.eTopType )
+ {
+ const SwStartNode *pFlySttNd =
+ pDoc->GetNodes()[pPam->GetPoint()->nNode]->FindFlyStartNode();
+
+ if( pFlySttNd )
+ {
+ aAnchor.SetType( FLY_AT_FLY );
+ SwPosition aPos( *pFlySttNd );
+ aAnchor.SetAnchor( &aPos );
+ }
+ else
+ {
+ aAnchor.SetType( FLY_PAGE );
+ }
+ pNewDrawObj->SetRelativePos( Point(rCSS1PropInfo.nLeft + nLeftSpace,
+ rCSS1PropInfo.nTop + nUpperSpace) );
+ aFrmSet.Put( SwFmtSurround(SURROUND_THROUGHT) );
+ }
+ else if( SVX_ADJUST_LEFT == rCSS1PropInfo.eFloat ||
+ HORI_LEFT == eHoriOri )
+ {
+ aAnchor.SetType( FLY_AT_CNTNT );
+ aFrmSet.Put( SwFmtSurround(bHidden ? SURROUND_THROUGHT
+ : SURROUND_RIGHT) );
+ pNewDrawObj->SetRelativePos( Point(nLeftSpace, nUpperSpace) );
+ }
+ else if( VERT_NONE != eVertOri )
+ {
+ aFrmSet.Put( SwFmtVertOrient( 0, eVertOri ) );
+ }
+
+ if( FLY_PAGE == aAnchor.GetAnchorId() )
+ aAnchor.SetPageNum( 1 );
+ else if( FLY_AT_FLY != aAnchor.GetAnchorId() )
+ aAnchor.SetAnchor( pPam->GetPoint() );
+ aFrmSet.Put( aAnchor );
+
+ pDoc->Insert( *pPam, *pNewDrawObj, &aFrmSet );
+}
+
+/* */
+
+static void PutEEPoolItem( SfxItemSet &rEEItemSet,
+ const SfxPoolItem& rSwItem )
+{
+
+ sal_uInt16 nEEWhich = 0;
+
+ switch( rSwItem.Which() )
+ {
+ case RES_CHRATR_COLOR: nEEWhich = EE_CHAR_COLOR; break;
+ case RES_CHRATR_CROSSEDOUT: nEEWhich = EE_CHAR_STRIKEOUT; break;
+ case RES_CHRATR_ESCAPEMENT: nEEWhich = EE_CHAR_ESCAPEMENT; break;
+ case RES_CHRATR_FONT: nEEWhich = EE_CHAR_FONTINFO; break;
+ case RES_CHRATR_FONTSIZE: nEEWhich = EE_CHAR_FONTHEIGHT; break;
+ case RES_CHRATR_KERNING: nEEWhich = EE_CHAR_KERNING; break;
+ case RES_CHRATR_POSTURE: nEEWhich = EE_CHAR_ITALIC; break;
+ case RES_CHRATR_UNDERLINE: nEEWhich = EE_CHAR_UNDERLINE; break;
+ case RES_CHRATR_WEIGHT: nEEWhich = EE_CHAR_WEIGHT; break;
+ case RES_BACKGROUND:
+ case RES_CHRATR_BACKGROUND:
+ {
+ const SvxBrushItem& rBrushItem = (const SvxBrushItem&)rSwItem;
+ rEEItemSet.Put( XFillStyleItem(XFILL_SOLID) );
+ rEEItemSet.Put( XFillColorItem(aEmptyStr,
+ rBrushItem.GetColor()) );
+ }
+ break;
+ }
+
+ if( nEEWhich )
+ {
+ SfxPoolItem *pEEItem = rSwItem.Clone();
+ pEEItem->SetWhich( nEEWhich );
+ rEEItemSet.Put( *pEEItem );
+ delete pEEItem;
+ }
+}
+
+void SwHTMLParser::NewMarquee( HTMLTable *pCurTable )
+{
+
+ ASSERT( !pMarquee, "Marquee in Marquee???" );
+ aContents.Erase();
+
+ String aId, aStyle, aClass;
+
+ long nWidth=0, nHeight=0;
+ sal_Bool bPrcWidth = sal_False, bDirection = sal_False, bBGColor = sal_False;
+ Size aSpace( 0, 0 );
+ SwVertOrient eVertOri = VERT_TOP;
+ SwHoriOrient eHoriOri = HORI_NONE;
+ SdrTextAniKind eAniKind = SDRTEXTANI_SCROLL;
+ SdrTextAniDirection eAniDir = SDRTEXTANI_LEFT;
+ sal_uInt16 nCount = 0, nDelay = 60;
+ sal_Int16 nAmount = -6;
+ Color aBGColor;
+
+ const HTMLOptions *pOptions = GetOptions();
+ sal_uInt16 nArrLen = pOptions->Count();
+ for ( sal_uInt16 i=0; i<nArrLen; i++ )
+ {
+ const HTMLOption *pOption = (*pOptions)[i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+
+ case HTML_O_BEHAVIOR:
+ eAniKind =
+ (SdrTextAniKind)pOption->GetEnum( aHTMLMarqBehaviorTable,
+ eAniKind );
+ break;
+
+ case HTML_O_BGCOLOR:
+ pOption->GetColor( aBGColor );
+ bBGColor = sal_True;
+ break;
+
+ case HTML_O_DIRECTION:
+ eAniDir =
+ (SdrTextAniDirection)pOption->GetEnum( aHTMLMarqDirectionTable,
+ eAniDir );
+ bDirection = sal_True;
+ break;
+
+ case HTML_O_LOOP:
+ if( pOption->GetString().
+ EqualsIgnoreCaseAscii(sHTML_LOOP_infinite) )
+ {
+ nCount = 0;
+ }
+ else
+ {
+ sal_uInt32 nLoop = pOption->GetSNumber();
+ nCount = (sal_uInt16)(nLoop>0 ? nLoop : 0 );
+ }
+ break;
+
+ case HTML_O_SCROLLAMOUNT:
+ nAmount = -((sal_Int16)pOption->GetNumber());
+ break;
+
+ case HTML_O_SCROLLDELAY:
+ nDelay = (sal_uInt16)pOption->GetNumber();
+ break;
+
+ case HTML_O_WIDTH:
+ // erstmal nur als Pixelwerte merken!
+ nWidth = pOption->GetNumber();
+ bPrcWidth = pOption->GetString().Search('%') != STRING_NOTFOUND;
+ if( bPrcWidth && nWidth>100 )
+ nWidth = 100;
+ break;
+
+ case HTML_O_HEIGHT:
+ // erstmal nur als Pixelwerte merken!
+ nHeight = pOption->GetNumber();
+ if( pOption->GetString().Search('%') != STRING_NOTFOUND )
+ nHeight = 0;
+ break;
+
+ case HTML_O_HSPACE:
+ // erstmal nur als Pixelwerte merken!
+ aSpace.Height() = pOption->GetNumber();
+ break;
+
+ case HTML_O_VSPACE:
+ // erstmal nur als Pixelwerte merken!
+ aSpace.Width() = pOption->GetNumber();
+ break;
+
+ case HTML_O_ALIGN:
+ eVertOri =
+ (SwVertOrient)pOption->GetEnum( aHTMLImgVAlignTable,
+ VERT_TOP );
+ eHoriOri =
+ (SwHoriOrient)pOption->GetEnum( aHTMLImgHAlignTable,
+ HORI_NONE );
+ break;
+ }
+ }
+
+ // Ein DrawTxtobj anlegen
+ SdrModel* pModel = pDoc->MakeDrawModel();
+ SdrPage* pPg = pModel->GetPage( 0 );
+ pMarquee = SdrObjFactory::MakeNewObject( SdrInventor,
+ OBJ_TEXT, pPg, pModel );
+ if( !pMarquee )
+ return;
+
+ pPg->InsertObject( pMarquee );
+
+ if( aId.Len() )
+ InsertBookmark( aId );
+
+ // (Nur) Alternate leueft per Default von links nach rechts
+ if( SDRTEXTANI_ALTERNATE==eAniKind && !bDirection )
+ eAniDir = SDRTEXTANI_RIGHT;
+
+ // die fuer das Scrollen benoetigten Attribute umsetzen
+ sal_uInt16 aWhichMap[7] = { XATTR_FILL_FIRST, XATTR_FILL_LAST,
+ SDRATTR_MISC_FIRST, SDRATTR_MISC_LAST,
+ EE_CHAR_START, EE_CHAR_END,
+ 0 };
+ SfxItemSet aItemSet( pModel->GetItemPool(), aWhichMap );
+ aItemSet.Put( SdrTextAutoGrowWidthItem( sal_False ) );
+ aItemSet.Put( SdrTextAutoGrowHeightItem( sal_True ) );
+ aItemSet.Put( SdrTextAniKindItem( eAniKind ) );
+ aItemSet.Put( SdrTextAniDirectionItem( eAniDir ) );
+ aItemSet.Put( SdrTextAniCountItem( nCount ) );
+ aItemSet.Put( SdrTextAniDelayItem( nDelay ) );
+ aItemSet.Put( SdrTextAniAmountItem( nAmount ) );
+ if( SDRTEXTANI_ALTERNATE==eAniKind )
+ {
+ // (Nur) Alternate startet und stoppt per default Inside
+ aItemSet.Put( SdrTextAniStartInsideItem(sal_True) );
+ aItemSet.Put( SdrTextAniStopInsideItem(sal_True) );
+ if( SDRTEXTANI_LEFT==eAniDir )
+ aItemSet.Put( SdrTextHorzAdjustItem(SDRTEXTHORZADJUST_RIGHT) );
+ }
+
+ // die Default-Farbe (aus der Standard-Vorlage) setzen, damit ueberhaupt
+ // eine sinnvolle Farbe gesetzt ist.
+ const Color& rDfltColor =
+ pCSS1Parser->GetTxtCollFromPool( RES_POOLCOLL_STANDARD )
+ ->GetColor().GetValue();
+ aItemSet.Put( SvxColorItem( rDfltColor, EE_CHAR_COLOR ) );
+
+ // Die Attribute der aktuellen Absatzvorlage setzen
+ sal_uInt16 nWhichIds[] =
+ {
+ RES_CHRATR_COLOR, RES_CHRATR_CROSSEDOUT, RES_CHRATR_ESCAPEMENT,
+ RES_CHRATR_FONT, RES_CHRATR_FONTSIZE, RES_CHRATR_KERNING,
+ RES_CHRATR_POSTURE, RES_CHRATR_UNDERLINE, RES_CHRATR_WEIGHT,
+ RES_CHRATR_BACKGROUND, 0
+ };
+ const SwTxtNode *pTxtNd = pDoc->GetNodes()[pPam->GetPoint()->nNode]
+ ->GetTxtNode();
+ if( pTxtNd )
+ {
+ const SfxItemSet& rItemSet = pTxtNd->GetAnyFmtColl().GetAttrSet();
+ const SfxPoolItem *pItem;
+ for( sal_uInt16 i=0; nWhichIds[i]; i++ )
+ {
+ if( SFX_ITEM_SET == rItemSet.GetItemState( nWhichIds[i], sal_True, &pItem ) )
+ PutEEPoolItem( aItemSet, *pItem );
+ }
+ }
+
+ // die Attribute der Umgebung am Draw-Objekt setzen
+ _HTMLAttr** pTbl = (_HTMLAttr**)&aAttrTab;
+ for( sal_uInt16 nCnt = sizeof( _HTMLAttrTable ) / sizeof( _HTMLAttr* );
+ nCnt--; ++pTbl )
+ {
+ _HTMLAttr *pAttr = *pTbl;
+ if( pAttr )
+ PutEEPoolItem( aItemSet, pAttr->GetItem() );
+ }
+
+ if( bBGColor )
+ {
+ aItemSet.Put( XFillStyleItem(XFILL_SOLID) );
+ aItemSet.Put( XFillColorItem(aEmptyStr, aBGColor) );
+ }
+
+ // Styles parsen (funktioniert hier nur fuer Attribute, die auch
+ // am Zeichen-Objekt gesetzt werden koennen)
+ SfxItemSet aStyleItemSet( pDoc->GetAttrPool(),
+ pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+ if( HasStyleOptions( aStyle, aId, aClass ) &&
+ ParseStyleOptions( aStyle, aId, aClass, aStyleItemSet, aPropInfo ) )
+ {
+ SfxItemIter aIter( aStyleItemSet );
+
+ const SfxPoolItem *pItem = aIter.FirstItem();
+ while( pItem )
+ {
+ PutEEPoolItem( aItemSet, *pItem );
+ pItem = aIter.NextItem();
+ }
+ }
+
+ // jetzt noch die Groesse setzen
+ Size aTwipSz( bPrcWidth ? 0 : nWidth, nHeight );
+ if( (aTwipSz.Width() || aTwipSz.Height()) && Application::GetDefaultDevice() )
+ {
+ aTwipSz = Application::GetDefaultDevice()
+ ->PixelToLogic( aTwipSz, MapMode( MAP_TWIP ) );
+ }
+
+ if( SVX_CSS1_LTYPE_TWIP== aPropInfo.eWidthType )
+ {
+ aTwipSz.Width() = aPropInfo.nWidth;
+ nWidth = 1; // != 0;
+ bPrcWidth = sal_False;
+ }
+ if( SVX_CSS1_LTYPE_TWIP== aPropInfo.eHeightType )
+ aTwipSz.Height() = aPropInfo.nHeight;
+
+ bFixMarqueeWidth = sal_False;
+ if( !nWidth || bPrcWidth )
+ {
+ if( pTable )
+ {
+ if( !pCurTable )
+ {
+ // Die Laufschrift steht in einer Tabelle, aber nicht
+ // in einer Zelle. Da jetzt keine vernuenftige Zuordung
+ // zu einer Zelle moeglich ist, passen wir hir die
+ // Breite dem Inhalt der Laufschrift an.
+ bFixMarqueeWidth = sal_True;
+ }
+ else if( !nWidth )
+ {
+ // Da wir wissen, in welcher Zelle die Laufschrift ist,
+ // koennen wir die Breite auch anpassen. Keine Breitenangabe
+ // wird wie 100% behandelt.
+ nWidth = 100;
+ bPrcWidth = sal_True;
+ }
+ aTwipSz.Width() = MINLAY;
+ }
+ else
+ {
+ long nBrowseWidth = GetCurrentBrowseWidth();
+ aTwipSz.Width() = !nWidth ? nBrowseWidth
+ : (nWidth*nBrowseWidth) / 100;
+ }
+ }
+
+ // Die Hoehe ist nur eine Mindest-Hoehe
+ if( aTwipSz.Height() < MINFLY )
+ aTwipSz.Height() = MINFLY;
+ aItemSet.Put( SdrTextMinFrameHeightItem( aTwipSz.Height() ) );
+
+ pMarquee->SetAttributes( aItemSet, sal_False );
+
+ if( aTwipSz.Width() < MINFLY )
+ aTwipSz.Width() = MINFLY;
+ pMarquee->SetLogicRect( Rectangle( 0, 0, aTwipSz.Width(), aTwipSz.Height() ) );
+
+ // und das Objekt in das Dok einfuegen
+ InsertDrawObject( pMarquee, aSpace, eVertOri, eHoriOri, aStyleItemSet,
+ aPropInfo );
+
+ // Das Zeichen-Objekt der Tabelle bekanntmachen. Ist ein bisserl
+ // umstaendlich, weil noch ueber den Parser gegangen wird, obwohl die
+ // Tabelle bekannt ist, aber anderenfalls muesste man die Tabelle
+ // oeffentlich machen, und das ist auch nicht schoen. Das globale
+ // pTable kann uebrigens auch nicht verwendet werden, denn die
+ // Laufschrift kann sich auch mal in einer Sub-Tabelle befinden.
+ if( pCurTable && bPrcWidth)
+ RegisterDrawObjectToTable( pCurTable, pMarquee, (sal_uInt8)nWidth );
+}
+
+void SwHTMLParser::EndMarquee()
+{
+ ASSERT( pMarquee && OBJ_TEXT==pMarquee->GetObjIdentifier(),
+ "kein Marquee oder falscher Typ" );
+
+ if( bFixMarqueeWidth )
+ {
+ // Da es keine fixe Hoehe gibt, das Text-Objekt erstmal breiter
+ // als den Text machen, damit nicht umgebrochen wird.
+ const Rectangle& rOldRect = pMarquee->GetLogicRect();
+ pMarquee->SetLogicRect( Rectangle( rOldRect.TopLeft(),
+ Size( USHRT_MAX, 240 ) ) );
+ }
+
+ // den gesammelten Text einfuegen
+ ((SdrTextObj*)pMarquee)->SetText( aContents );
+
+ if( bFixMarqueeWidth )
+ {
+ // die Groesse dem Text anpassen.
+ ((SdrTextObj*)pMarquee)->FitFrameToTextSize();
+ }
+
+ aContents.Erase();
+ pMarquee = 0;
+}
+
+void SwHTMLParser::InsertMarqueeText()
+{
+ ASSERT( pMarquee && OBJ_TEXT==pMarquee->GetObjIdentifier(),
+ "kein Marquee oder falscher Typ" );
+
+ // das akteulle Textstueck an den Text anhaengen
+ aContents += aToken;
+}
+
+void SwHTMLParser::ResizeDrawObject( SdrObject* pObj, SwTwips nWidth )
+{
+ ASSERT( OBJ_TEXT==pObj->GetObjIdentifier(),
+ "kein Marquee oder falscher Typ" );
+
+ if( OBJ_TEXT!=pObj->GetObjIdentifier() )
+ return;
+
+ // die alte Groesse
+ const Rectangle& rOldRect = pObj->GetLogicRect();
+ Size aNewSz( nWidth, rOldRect.GetSize().Height() );
+ pObj->SetLogicRect( Rectangle( rOldRect.TopLeft(), aNewSz ) );
+}
+
+/* */
+
+const SdrObject *SwHTMLWriter::GetMarqueeTextObj( const SwDrawFrmFmt& rFmt )
+{
+ const SdrObject* pObj = rFmt.FindSdrObject();
+ return (pObj && ::IsMarqueeTextObj( *pObj )) ? pObj : 0;
+}
+
+void SwHTMLWriter::GetEEAttrsFromDrwObj( SfxItemSet& rItemSet,
+ const SdrObject *pObj,
+ sal_Bool bSetDefaults )
+{
+ // die Edit ::com::sun::star::script::Engine-Attribute aus dem Objekt holen
+ SfxItemSet aObjItemSet( *pObj->GetItemPool(), EE_CHAR_START,
+ EE_CHAR_END );
+ pObj->TakeAttributes( aObjItemSet, sal_False, sal_False );
+
+ // ueber die Edit ::com::sun::star::script::Engine-Attribute iterieren und die Attribute
+ // in SW-Attrs wandeln bzw. default setzen
+ SfxWhichIter aIter( aObjItemSet );
+ sal_uInt16 nEEWhich = aIter.FirstWhich();
+ while( nEEWhich )
+ {
+ const SfxPoolItem *pEEItem;
+ sal_Bool bSet = SFX_ITEM_SET == aObjItemSet.GetItemState( nEEWhich, sal_False,
+ &pEEItem );
+
+ if( bSet || bSetDefaults )
+ {
+ sal_uInt16 nSwWhich = 0;
+ switch( nEEWhich )
+ {
+ case EE_CHAR_COLOR: nSwWhich = RES_CHRATR_COLOR; break;
+ case EE_CHAR_STRIKEOUT: nSwWhich = RES_CHRATR_CROSSEDOUT; break;
+ case EE_CHAR_ESCAPEMENT: nSwWhich = RES_CHRATR_ESCAPEMENT; break;
+ case EE_CHAR_FONTINFO: nSwWhich = RES_CHRATR_FONT; break;
+ case EE_CHAR_FONTHEIGHT: nSwWhich = RES_CHRATR_FONTSIZE; break;
+ case EE_CHAR_KERNING: nSwWhich = RES_CHRATR_KERNING; break;
+ case EE_CHAR_ITALIC: nSwWhich = RES_CHRATR_POSTURE; break;
+ case EE_CHAR_UNDERLINE: nSwWhich = RES_CHRATR_UNDERLINE; break;
+ case EE_CHAR_WEIGHT: nSwWhich = RES_CHRATR_WEIGHT; break;
+ }
+
+ if( nSwWhich )
+ {
+ // wenn das Item nicht gesetzt ist nehmen wir ggf. das
+ // Default-Item
+ if( !bSet )
+ pEEItem = &aObjItemSet.GetPool()->GetDefaultItem(nEEWhich);
+
+ // jetzt Clonen wir das Item mit der Which-Id des Writers
+ SfxPoolItem *pSwItem = pEEItem->Clone();
+ pSwItem->SetWhich( nSwWhich );
+ rItemSet.Put( *pSwItem );
+ delete pSwItem;
+ }
+ }
+
+ nEEWhich = aIter.NextWhich();
+ }
+}
+
+
+Writer& OutHTML_DrawFrmFmtAsMarquee( Writer& rWrt,
+ const SwDrawFrmFmt& rFmt,
+ const SdrObject& rSdrObject )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ SdrModel* pModel = rWrt.pDoc->GetDrawModel();
+ ASSERT( pModel, "Da gibt's ein Draw-Obj ohne ein Draw-Model zu haben?" );
+ const SdrTextObj *pTextObj = (const SdrTextObj *)&rSdrObject;
+
+ // Gibt es ueberhaupt auszugebenden Text
+ const OutlinerParaObject *pOutlinerParaObj =
+ pTextObj->GetOutlinerParaObject();
+ if( !pOutlinerParaObj )
+ return rWrt;
+
+ ByteString sOut( '<' );
+ sOut += sHTML_marquee;
+
+ // Die Attribute des Objektd holen
+ sal_uInt16 aWhichMap[5] = { XATTR_FILL_FIRST, XATTR_FILL_LAST,
+ SDRATTR_MISC_FIRST, SDRATTR_MISC_LAST,
+ 0 };
+ SfxItemSet aItemSet( *pTextObj->GetItemPool(), aWhichMap );
+ pTextObj->TakeAttributes( aItemSet, sal_False, sal_False );
+
+ // BEHAVIOUR
+ SdrTextAniKind eAniKind = pTextObj->GetTextAniKind();
+ ASSERT( SDRTEXTANI_SCROLL==eAniKind ||
+ SDRTEXTANI_ALTERNATE==eAniKind ||
+ SDRTEXTANI_SLIDE==eAniKind,
+ "Text-Draw-Objekt nicht fuer Marquee geeignet" )
+
+ const sal_Char *pStr = 0;
+ switch( eAniKind )
+ {
+ case SDRTEXTANI_SCROLL: pStr = sHTML_BEHAV_scroll; break;
+ case SDRTEXTANI_SLIDE: pStr = sHTML_BEHAV_slide; break;
+ case SDRTEXTANI_ALTERNATE: pStr = sHTML_BEHAV_alternate; break;
+ }
+
+ if( pStr )
+ (((sOut += ' ') += sHTML_O_behavior) += '=') += pStr;
+
+ // DIRECTION
+ pStr = 0;
+ SdrTextAniDirection eAniDir = pTextObj->GetTextAniDirection();
+ switch( eAniDir )
+ {
+ case SDRTEXTANI_LEFT: pStr = sHTML_AL_left; break;
+ case SDRTEXTANI_RIGHT: pStr = sHTML_AL_right; break;
+ }
+
+ if( pStr )
+ (((sOut += ' ') += sHTML_O_direction) += '=') += pStr;
+
+ // LOOP
+ sal_Int32 nCount =
+ ((const SdrTextAniCountItem&)aItemSet.Get( SDRATTR_TEXT_ANICOUNT ))
+ .GetValue();
+ if( 0==nCount )
+ nCount = SDRTEXTANI_SLIDE==eAniKind ? 1 : -1;
+ (((sOut += ' ') += sHTML_O_loop) += '=')
+ += ByteString::CreateFromInt32( nCount );
+
+ // SCROLLDELAY
+ sal_uInt16 nDelay =
+ ((const SdrTextAniDelayItem&)aItemSet.Get( SDRATTR_TEXT_ANIDELAY ))
+ .GetValue();
+ (((sOut += ' ') += sHTML_O_scrolldelay) += '=')
+ += ByteString::CreateFromInt32( nDelay );
+
+ // SCROLLAMOUNT
+ sal_Int16 nAmount =
+ ((const SdrTextAniAmountItem&)aItemSet.Get( SDRATTR_TEXT_ANIAMOUNT ))
+ .GetValue();
+ if( nAmount < 0 )
+ {
+ nAmount = -nAmount;
+ }
+ else if( nAmount && Application::GetDefaultDevice() )
+ {
+ nAmount = (sal_uInt16)(Application::GetDefaultDevice()
+ ->LogicToPixel( Size(nAmount,0),
+ MapMode(MAP_TWIP) ).Width());
+ }
+ if( nAmount )
+ (((sOut += ' ') += sHTML_O_scrollamount) += '=')
+ += ByteString::CreateFromInt32( nAmount );
+
+ Size aTwipSz( pTextObj->GetLogicRect().GetSize() );
+ if( pTextObj->IsAutoGrowWidth() )
+ aTwipSz.Width() = 0;
+ // Die Hoehe ist bei MS eine Mindesthoehe, also geben wir auch die
+ // Mindestheoehe aus, wenn es sie gibt. Da eine Mindesthoehe MINFLY
+ // mit hoher Wahrscheinlichkeit vom Import kommt, wird sie nicht mit
+ // ausgegeben. Falsch machen kann man da nichst, denn jeder Font ist
+ // hoeher.
+ if( pTextObj->IsAutoGrowHeight() )
+ {
+ aTwipSz.Height() = pTextObj->GetMinTextFrameHeight();
+ if( MINFLY==aTwipSz.Height() )
+ aTwipSz.Height() = 0;
+ }
+
+ if( (aTwipSz.Width() || aTwipSz.Height()) &&
+ Application::GetDefaultDevice() )
+ {
+ Size aPixelSz =
+ Application::GetDefaultDevice()->LogicToPixel( aTwipSz,
+ MapMode(MAP_TWIP) );
+ if( !aPixelSz.Width() && aTwipSz.Width() )
+ aPixelSz.Width() = 1;
+ if( !aPixelSz.Height() && aTwipSz.Height() )
+ aPixelSz.Height() = 1;
+
+ if( aPixelSz.Width() )
+ (((sOut += ' ') += sHTML_O_width) += '=')
+ += ByteString::CreateFromInt32( aPixelSz.Width() );
+
+ if( aPixelSz.Height() )
+ (((sOut += ' ') += sHTML_O_height) += '=')
+ += ByteString::CreateFromInt32( aPixelSz.Height() );
+ }
+
+ // BGCOLOR
+ XFillStyle eFillStyle =
+ ((const XFillStyleItem&)aItemSet.Get(XATTR_FILLSTYLE)).GetValue();
+ if( XFILL_SOLID==eFillStyle )
+ {
+ const Color& rFillColor =
+ ((const XFillColorItem&)aItemSet.Get(XATTR_FILLCOLOR)).GetValue();
+
+ ((sOut += ' ') += sHTML_O_bgcolor) += '=';
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_Color( rWrt.Strm(), rFillColor, rHTMLWrt.eDestEnc );
+ sOut.Erase();
+ }
+
+ if( sOut.Len() )
+ rWrt.Strm() << sOut.GetBuffer();
+
+ // und nun noch ALIGN, HSPACE und VSPACE
+ ByteString aEndTags;
+ sal_uInt32 nFrmFlags = HTML_FRMOPTS_MARQUEE;
+ if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_DRAW ) )
+ nFrmFlags |= HTML_FRMOPTS_MARQUEE_CSS1;
+ rHTMLWrt.OutFrmFmtOptions( rFmt, aEmptyStr, aEndTags, nFrmFlags );
+ if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_DRAW ) )
+ rHTMLWrt.OutCSS1_FrmFmtOptions( rFmt, nFrmFlags, &rSdrObject );
+
+
+ rWrt.Strm() << '>';
+
+ // Was jetzt kommt ist das Gegenstueck zu SdrTextObjectt::SetText()
+#if SUPD>601
+ Outliner aOutliner(0, OUTLINERMODE_TEXTOBJECT);
+#else
+ Outliner aOutliner;
+#endif
+ aOutliner.SetUpdateMode( sal_False );
+ aOutliner.SetText( *pOutlinerParaObj );
+#if SUPD>601
+ String aText( aOutliner.GetText( aOutliner.GetParagraph(0),
+ aOutliner.GetParagraphCount() ) );
+#else
+ String aText( aOutliner.GetText( aOutliner.First(),
+ aOutliner.GetParagraphCount() ) );
+#endif
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aText,
+ rHTMLWrt.eDestEnc );
+
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_marquee, sal_False );
+
+ if( aEndTags.Len() )
+ rWrt.Strm() << aEndTags.GetBuffer();
+
+ return rWrt;
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmldraw.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.45 2000/09/18 16:04:44 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.44 2000/08/24 07:53:38 os
+ Outliner changes
+
+ Revision 1.43 2000/06/26 09:51:57 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.42 2000/04/10 12:20:55 mib
+ unicode
+
+ Revision 1.41 2000/03/21 15:06:17 os
+ UNOIII
+
+ Revision 1.40 2000/03/03 15:21:00 os
+ StarView remainders removed
+
+ Revision 1.39 2000/02/11 14:37:07 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.38 1999/11/19 16:40:20 os
+ modules renamed
+
+ Revision 1.37 1999/09/21 09:48:50 mib
+ multiple text encodings
+
+ Revision 1.36 1999/09/17 12:12:52 mib
+ support of multiple and non system text encodings
+
+ Revision 1.35 1999/06/10 08:33:54 JP
+ have to change: no AppWin from SfxApp
+
+
+ Rev 1.34 10 Jun 1999 10:33:54 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.33 09 Jun 1999 19:36:36 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+ Rev 1.32 27 Jan 1999 19:00:04 JP
+ Task #61014#: FindSdrObject/FindContactObject als Methoden vom SwFrmFmt
+
+ Rev 1.31 27 Jan 1999 09:43:28 OS
+ #56371# TF_ONE51
+
+ Rev 1.30 11 Dec 1998 09:34:56 JP
+ Bug #58217#: MarqueeTextObjecte erkennen
+
+ Rev 1.29 20 May 1998 15:22:18 MIB
+ Zeichen-Objekte ueber Schnittstelle am Dok einfuegen
+
+ Rev 1.28 02 Apr 1998 19:44:24 MIB
+ Frm-Flags: sal_uInt16 -> sal_uInt32
+
+ Rev 1.27 27 Mar 1998 17:24:34 MIB
+ direkte absolute Positionierung und Groessen-Export von Controls und Marquee
+
+ Rev 1.26 27 Mar 1998 10:03:38 MIB
+ direkte Positionierung von Grafiken etc.
+
+ Rev 1.25 20 Mar 1998 10:49:50 MIB
+ abs.-pos. fuer Zeichen-Objektei, Optimierungen
+
+ Rev 1.24 14 Mar 1998 19:02:34 MIB
+ Export-Umstellung fuer am-zeichen gebundene Rahmen und abs.-pos.
+
+ Rev 1.23 20 Feb 1998 19:04:32 MA
+ header
+
+ Rev 1.22 16 Feb 1998 16:06:18 MIB
+ fix #45523#: Hoehe von Laufschriften als Mindesthoehe interpretieren
+
+ Rev 1.21 16 Feb 1998 12:31:08 MIB
+ DokInfo-Feld jetzt auch fixed
+
+ Rev 1.20 26 Nov 1997 19:09:24 MA
+ includes
+
+ Rev 1.19 03 Nov 1997 14:08:52 MA
+ precomp entfernt
+
+ Rev 1.18 19 Sep 1997 08:38:00 MIB
+ fix #41185#: Laufschrift an Tabellenzellen-Breite anpassen
+
+ Rev 1.17 10 Sep 1997 15:22:06 MIB
+ Styles fuer Marquee
+
+ Rev 1.16 09 Sep 1997 14:13:24 MIB
+ Ueberall Browse-View-Breite statt Seitenbreite verwenden
+
+ Rev 1.15 29 Aug 1997 16:49:50 OS
+ DLL-Umstellung
+
+ Rev 1.14 18 Aug 1997 11:36:14 OS
+ includes
+
+ Rev 1.13 15 Aug 1997 12:47:42 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.12 12 Aug 1997 13:47:02 OS
+ Header-Umstellung
+
+ Rev 1.11 07 Aug 1997 15:08:28 OM
+ Headerfile-Umstellung
+
+ Rev 1.10 05 Aug 1997 14:56:36 TJ
+ include
+
+ Rev 1.9 28 Jul 1997 12:39:00 MIB
+ fix #37237#: Bei Laufschrift auch Attrs aus Absatz-Vorlage uebernehmen
+
+ Rev 1.8 29 Apr 1997 11:21:48 MH
+ add: header
+
+ Rev 1.7 10 Apr 1997 16:45:50 TRI
+ includes
+
+ Rev 1.6 10 Apr 1997 13:15:46 MH
+ add: header
+
+ Rev 1.5 09 Jan 1997 11:20:44 MIB
+ fix #34862#: -Angaben groesser 100 bei MARQUEE abfangen
+
+ Rev 1.4 22 Nov 1996 09:37:50 MIB
+ fix #33414#: MARQUEE in Tabellen an Textbreite anpassen, Farbe aus Standard-Vor
+
+ Rev 1.3 07 Nov 1996 19:06:58 JP
+ NoTxtNode hat Altern.Text, Namen am HREF
+
+ Rev 1.2 07 Nov 1996 16:24:30 MIB
+ Laufschrift exportieren
+
+ Rev 1.1 06 Nov 1996 11:50:24 MIB
+ neue defaults fuer Alternate-Marquee, Anpassung an die 344
+
+ Rev 1.0 05 Nov 1996 12:03:58 MIB
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmlfld.cxx b/sw/source/filter/html/htmlfld.cxx
new file mode 100644
index 000000000000..5752acd53ebf
--- /dev/null
+++ b/sw/source/filter/html/htmlfld.cxx
@@ -0,0 +1,787 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlfld.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#ifndef _SFXDOCINF_HXX //autogen
+#include <sfx2/docinf.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _ZFORMAT_HXX //autogen
+#include <svtools/zformat.hxx>
+#endif
+
+
+#ifndef _FMTFLD_HXX //autogen
+#include <fmtfld.hxx>
+#endif
+#ifndef _NDTXT_HXX //autogen
+#include <ndtxt.hxx>
+#endif
+#include "doc.hxx"
+#include "finder.hxx"
+#include "fldbas.hxx"
+#include "docufld.hxx"
+#include "flddat.hxx"
+#include "htmlfld.hxx"
+#include "swhtml.hxx"
+
+struct HTMLNumFmtTblEntry
+{
+ const sal_Char *pName;
+ NfIndexTableOffset eFmt;
+};
+
+static HTMLOptionEnum __FAR_DATA aHTMLFldTypeTable[] =
+{
+ { sHTML_FT_author, RES_AUTHORFLD },
+ { sHTML_FT_sender, RES_EXTUSERFLD },
+ { sHTML_FT_date, RES_DATEFLD },
+ { sHTML_FT_time, RES_TIMEFLD },
+ { sHTML_FT_datetime,RES_DATETIMEFLD },
+ { sHTML_FT_page, RES_PAGENUMBERFLD },
+ { sHTML_FT_docinfo, RES_DOCINFOFLD },
+ { sHTML_FT_docstat, RES_DOCSTATFLD },
+ { sHTML_FT_filename,RES_FILENAMEFLD },
+ { 0, 0 }
+};
+
+static HTMLNumFmtTblEntry __FAR_DATA aHTMLDateFldFmtTable[] =
+{
+ { sHTML_FF_ssys, NF_DATE_SYSTEM_SHORT },
+ { sHTML_FF_lsys, NF_DATE_SYSTEM_LONG },
+ { sHTML_FF_dmy, NF_DATE_SYS_DDMMYY, },
+ { sHTML_FF_dmyy, NF_DATE_SYS_DDMMYYYY, },
+ { sHTML_FF_dmmy, NF_DATE_SYS_DMMMYY, },
+ { sHTML_FF_dmmyy, NF_DATE_SYS_DMMMYYYY, },
+ { sHTML_FF_dmmmy, NF_DATE_DIN_DMMMMYYYY },
+ { sHTML_FF_dmmmyy, NF_DATE_DIN_DMMMMYYYY },
+ { sHTML_FF_ddmmy, NF_DATE_SYS_NNDMMMYY },
+ { sHTML_FF_ddmmmy, NF_DATE_SYS_NNDMMMMYYYY },
+ { sHTML_FF_ddmmmyy, NF_DATE_SYS_NNDMMMMYYYY },
+ { sHTML_FF_dddmmmy, NF_DATE_SYS_NNNNDMMMMYYYY },
+ { sHTML_FF_dddmmmyy, NF_DATE_SYS_NNNNDMMMMYYYY },
+ { sHTML_FF_my, NF_DATE_SYS_MMYY },
+ { sHTML_FF_md, NF_DATE_DIN_MMDD },
+ { sHTML_FF_ymd, NF_DATE_DIN_YYMMDD },
+ { sHTML_FF_yymd, NF_DATE_DIN_YYYYMMDD },
+ { 0, NF_NUMERIC_START }
+};
+
+static HTMLNumFmtTblEntry __FAR_DATA aHTMLTimeFldFmtTable[] =
+{
+ { sHTML_FF_sys, NF_TIME_HHMMSS },
+ { sHTML_FF_ssmm24, NF_TIME_HHMM },
+ { sHTML_FF_ssmm12, NF_TIME_HHMMAMPM },
+ { 0, NF_NUMERIC_START }
+};
+
+static HTMLOptionEnum __FAR_DATA aHTMLPageNumFldFmtTable[] =
+{
+ { sHTML_FF_uletter, SVX_NUM_CHARS_UPPER_LETTER },
+ { sHTML_FF_lletter, SVX_NUM_CHARS_LOWER_LETTER },
+ { sHTML_FF_uroman, SVX_NUM_ROMAN_UPPER },
+ { sHTML_FF_lroman, SVX_NUM_ROMAN_LOWER },
+ { sHTML_FF_arabic, SVX_NUM_ARABIC },
+ { sHTML_FF_none, SVX_NUM_NUMBER_NONE },
+ { sHTML_FF_char, SVX_NUM_CHAR_SPECIAL },
+ { sHTML_FF_page, SVX_NUM_PAGEDESC },
+ { sHTML_FF_ulettern, SVX_NUM_CHARS_UPPER_LETTER_N },
+ { sHTML_FF_llettern, SVX_NUM_CHARS_LOWER_LETTER_N },
+ { 0, 0 }
+};
+
+
+static HTMLOptionEnum __FAR_DATA aHTMLExtUsrFldSubTable[] =
+{
+ { sHTML_FS_company, EU_COMPANY },
+ { sHTML_FS_firstname, EU_FIRSTNAME },
+ { sHTML_FS_name, EU_NAME },
+ { sHTML_FS_shortcut, EU_SHORTCUT },
+ { sHTML_FS_street, EU_STREET },
+ { sHTML_FS_country, EU_COUNTRY },
+ { sHTML_FS_zip, EU_ZIP },
+ { sHTML_FS_city, EU_CITY },
+ { sHTML_FS_title, EU_TITLE },
+ { sHTML_FS_position, EU_POSITION },
+ { sHTML_FS_pphone, EU_PHONE_PRIVATE },
+ { sHTML_FS_cphone, EU_PHONE_COMPANY },
+ { sHTML_FS_fax, EU_FAX },
+ { sHTML_FS_email, EU_EMAIL },
+ { sHTML_FS_state, EU_STATE },
+ { 0, 0 }
+};
+
+static HTMLOptionEnum __FAR_DATA aHTMLAuthorFldFmtTable[] =
+{
+ { sHTML_FF_name, AF_NAME },
+ { sHTML_FF_shortcut, AF_SHORTCUT },
+ { 0, 0 }
+};
+
+static HTMLOptionEnum __FAR_DATA aHTMLPageNumFldSubTable[] =
+{
+ { sHTML_FS_random, PG_RANDOM },
+ { sHTML_FS_next, PG_NEXT },
+ { sHTML_FS_prev, PG_PREV },
+ { 0, 0 }
+};
+
+static HTMLOptionEnum __FAR_DATA aHTMLDocInfoFldSubTable[] =
+{
+ { sHTML_FS_title, DI_TITEL },
+ { sHTML_FS_theme, DI_THEMA },
+ { sHTML_FS_keys, DI_KEYS },
+ { sHTML_FS_comment, DI_COMMENT },
+ { sHTML_FS_info1, DI_INFO1 },
+ { sHTML_FS_info2, DI_INFO2 },
+ { sHTML_FS_info3, DI_INFO3 },
+ { sHTML_FS_info4, DI_INFO4 },
+ { sHTML_FS_create, DI_CREATE },
+ { sHTML_FS_change, DI_CHANGE },
+ { 0, 0 }
+};
+
+static HTMLOptionEnum __FAR_DATA aHTMLDocInfoFldFmtTable[] =
+{
+ { sHTML_FF_author, DI_SUB_AUTHOR },
+ { sHTML_FF_time, DI_SUB_TIME },
+ { sHTML_FF_date, DI_SUB_DATE },
+ { 0, 0 }
+};
+
+static HTMLOptionEnum __FAR_DATA aHTMLDocStatFldSubTable[] =
+{
+ { sHTML_FS_page, DS_PAGE },
+ { sHTML_FS_para, DS_PARA },
+ { sHTML_FS_word, DS_WORD },
+ { sHTML_FS_char, DS_CHAR },
+ { sHTML_FS_tbl, DS_TBL },
+ { sHTML_FS_grf, DS_GRF },
+ { sHTML_FS_ole, DS_OLE },
+ { 0, 0 }
+};
+
+static HTMLOptionEnum __FAR_DATA aHTMLFileNameFldFmtTable[] =
+{
+ { sHTML_FF_name, FF_NAME },
+ { sHTML_FF_pathname, FF_PATHNAME },
+ { sHTML_FF_path, FF_PATH },
+ { sHTML_FF_name_noext, FF_NAME_NOEXT },
+ { 0, 0 }
+};
+
+/* */
+
+USHORT SwHTMLParser::GetNumType( const String& rStr, USHORT nDfltType )
+{
+ USHORT nType = nDfltType;
+ const HTMLOptionEnum *pOptEnums = aHTMLPageNumFldFmtTable;
+ while( pOptEnums->pName )
+ if( !rStr.EqualsIgnoreCaseAscii( pOptEnums->pName ) )
+ pOptEnums++;
+ else
+ break;
+
+ if( pOptEnums->pName )
+ nType = pOptEnums->nValue;
+
+ return nType;
+}
+
+
+void SwHTMLParser::NewField()
+{
+ BOOL bKnownType = FALSE, bFixed = FALSE,
+ bHasNumFmt = FALSE, bHasNumValue = FALSE;
+ USHORT nType;
+ String aValue, aNumFmt, aNumValue ;
+ const HTMLOption *pSubOption=0, *pFmtOption=0;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_TYPE:
+ bKnownType = pOption->GetEnum( nType, aHTMLFldTypeTable );
+ break;
+ case HTML_O_SUBTYPE:
+ pSubOption = pOption;
+ break;
+ case HTML_O_FORMAT:
+ pFmtOption = pOption;
+ break;
+ case HTML_O_VALUE:
+ aValue = pOption->GetString();
+ break;
+ case HTML_O_SDNUM:
+ aNumFmt = pOption->GetString();
+ bHasNumFmt = TRUE;
+ break;
+ case HTML_O_SDVAL:
+ aNumValue = pOption->GetString();
+ bHasNumValue = TRUE;
+ break;
+ case HTML_O_SDFIXED:
+ bFixed = TRUE;
+ break;
+ }
+ }
+
+ if( !bKnownType )
+ return;
+
+ // Autor und Absender werden nur als als variables Feld eingefuegt,
+ // wenn man das Dok selbst als letztes geaendert hat oder es noch
+ // niemend geandert hat und man das Dok erstellt hat. Sonst
+ // wird ein Fixed-Feld daraus gemacht.
+ if( !bFixed &&
+ (RES_EXTUSERFLD == (RES_FIELDS)nType ||
+ RES_AUTHORFLD == (RES_FIELDS)nType) )
+ {
+ String aUser( pPathFinder->GetUserName() );
+ const SfxDocumentInfo *pDocInfo = pDoc->GetInfo();
+ const String& rChanged = pDocInfo->GetChanged().GetName();
+ const String& rCreated = pDocInfo->GetCreated().GetName();
+ if( !aUser.Len() ||
+ (rChanged.Len() ? aUser!=rChanged : aUser!=rCreated) )
+ bFixed = TRUE;
+ }
+
+ USHORT nWhich = nType;
+ if( RES_DATEFLD==nType || RES_TIMEFLD==nType )
+ nWhich = RES_DATETIMEFLD;
+
+ SwFieldType* pType = pDoc->GetSysFldType( nWhich );
+ SwField *pFld = 0;
+ BOOL bInsOnEndTag = FALSE;
+
+ switch( (RES_FIELDS)nType )
+ {
+ case RES_EXTUSERFLD:
+ if( pSubOption )
+ {
+ USHORT nSub;
+ ULONG nFmt = 0;
+ if( bFixed )
+ {
+ nFmt |= AF_FIXED;
+ bInsOnEndTag = TRUE;
+ }
+ if( pSubOption->GetEnum( nSub, aHTMLExtUsrFldSubTable ) )
+ pFld = new SwExtUserField( (SwExtUserFieldType*)pType,
+ nSub, nFmt );
+ }
+ break;
+
+ case RES_AUTHORFLD:
+ {
+ USHORT nFmt = AF_NAME;
+ if( pFmtOption )
+ pFmtOption->GetEnum( nFmt, aHTMLAuthorFldFmtTable );
+ if( bFixed )
+ {
+ nFmt |= AF_FIXED;
+ bInsOnEndTag = TRUE;
+ }
+
+ pFld = new SwAuthorField( (SwAuthorFieldType *)pType, nFmt );
+ }
+ break;
+
+ case RES_DATEFLD:
+ case RES_TIMEFLD:
+ {
+ ULONG nNumFmt;
+ ULONG nTime = Time().GetTime(), nDate = Date().GetDate();
+ USHORT nSub;
+ BOOL bValidFmt = FALSE;
+ HTMLNumFmtTblEntry * pFmtTbl;
+
+ if( RES_DATEFLD==nType )
+ {
+ nSub = DATEFLD;
+ pFmtTbl = aHTMLDateFldFmtTable;
+ if( aValue.Len() )
+ nDate = (ULONG)aValue.ToInt32();
+ }
+ else
+ {
+ nSub = TIMEFLD;
+ pFmtTbl = aHTMLTimeFldFmtTable;
+ if( aValue.Len() )
+ nTime = (ULONG)aValue.ToInt32();
+ }
+ if( aValue.Len() )
+ nSub |= FIXEDFLD;
+
+ SvNumberFormatter *pFormatter = pDoc->GetNumberFormatter();
+ if( pFmtOption )
+ {
+ const String& rFmt = pFmtOption->GetString();
+ for( USHORT i=0; pFmtTbl[i].pName; i++ )
+ {
+ if( rFmt.EqualsIgnoreCaseAscii( pFmtTbl[i].pName ) )
+ {
+ nNumFmt = pFormatter->GetFormatIndex(
+ pFmtTbl[i].eFmt, LANGUAGE_SYSTEM);
+ bValidFmt = TRUE;
+ break;
+ }
+ }
+ }
+ if( !bValidFmt )
+ nNumFmt = pFormatter->GetFormatIndex( pFmtTbl[i].eFmt,
+ LANGUAGE_SYSTEM);
+
+ pFld = new SwDateTimeField( (SwDateTimeFieldType *)pType,
+ nSub, nNumFmt );
+
+ if (nSub & FIXEDFLD)
+ ((SwDateTimeField *)pFld)->SetDateTime( nDate, nTime );
+ }
+ break;
+
+ case RES_DATETIMEFLD:
+ if( bHasNumFmt )
+ {
+ USHORT nSub = 0;
+
+ SvNumberFormatter *pFormatter = pDoc->GetNumberFormatter();
+ ULONG nNumFmt;
+ LanguageType eLang;
+ double dValue = GetTableDataOptionsValNum(
+ nNumFmt, eLang, aNumValue, aNumFmt,
+ *pDoc->GetNumberFormatter() );
+ short nFmtType = pFormatter->GetType( nNumFmt );
+ switch( nFmtType )
+ {
+ case NUMBERFORMAT_DATE: nSub = DATEFLD; break;
+ case NUMBERFORMAT_TIME: nSub = TIMEFLD; break;
+ }
+
+ if( nSub )
+ {
+ if( bHasNumValue )
+ nSub |= FIXEDFLD;
+
+ pFld = new SwDateTimeField( (SwDateTimeFieldType *)pType,
+ nSub, nNumFmt );
+ if( bHasNumValue )
+ ((SwDateTimeField *)pFld)->SetValue( dValue );
+ }
+ }
+ break;
+
+ case RES_PAGENUMBERFLD:
+ if( pSubOption )
+ {
+ USHORT nSub;
+ if( pSubOption->GetEnum( nSub, aHTMLPageNumFldSubTable ) )
+ {
+ USHORT nFmt = SVX_NUM_PAGEDESC;
+ if( pFmtOption )
+ pFmtOption->GetEnum( nFmt, aHTMLPageNumFldFmtTable );
+
+ short nOff = 0;
+
+ if( (SvxExtNumType)nFmt!=SVX_NUM_CHAR_SPECIAL && aValue.Len() )
+ nOff = (short)aValue.ToInt32();
+ else if( (SwPageNumSubType)nSub == PG_NEXT )
+ nOff = 1;
+ else if( (SwPageNumSubType)nSub == PG_PREV )
+ nOff = -1;
+
+ if( (SvxExtNumType)nFmt==SVX_NUM_CHAR_SPECIAL &&
+ (SwPageNumSubType)nSub==PG_RANDOM )
+ nFmt = SVX_NUM_PAGEDESC;
+
+ pFld = new SwPageNumberField( (SwPageNumberFieldType *)pType, nSub, nFmt, nOff );
+ if( (SvxExtNumType)nFmt==SVX_NUM_CHAR_SPECIAL )
+ ((SwPageNumberField *)pFld)->SetUserString( aValue );
+ }
+ }
+ break;
+
+ case RES_DOCINFOFLD:
+ if( pSubOption )
+ {
+ USHORT nSub;
+ if( pSubOption->GetEnum( nSub, aHTMLDocInfoFldSubTable ) )
+ {
+ USHORT nExtSub = 0;
+ if( DI_CREATE==(SwExtUserSubType)nSub ||
+ DI_CHANGE==(SwExtUserSubType)nSub )
+ {
+ nExtSub = DI_SUB_AUTHOR;
+ if( pFmtOption )
+ pFmtOption->GetEnum( nExtSub, aHTMLDocInfoFldFmtTable );
+ nSub |= nExtSub;
+ }
+
+ ULONG nNumFmt = 0;
+ double dValue = 0;
+ if( bHasNumFmt && (DI_SUB_DATE==nExtSub || DI_SUB_TIME==nExtSub) )
+ {
+ LanguageType eLang;
+ dValue = GetTableDataOptionsValNum(
+ nNumFmt, eLang, aNumValue, aNumFmt,
+ *pDoc->GetNumberFormatter() );
+ bFixed &= bHasNumValue;
+ }
+ else
+ bHasNumValue = FALSE;
+
+ if( bFixed )
+ {
+ nSub |= DI_SUB_FIXED;
+ bInsOnEndTag = TRUE;
+ }
+
+ pFld = new SwDocInfoField( (SwDocInfoFieldType *)pType,
+ nSub, nNumFmt );
+ if( bHasNumValue )
+ ((SwDocInfoField*)pFld)->SetValue( dValue );
+ }
+ }
+ break;
+
+ case RES_DOCSTATFLD:
+ if( pSubOption )
+ {
+ USHORT nSub;
+ if( pSubOption->GetEnum( nSub, aHTMLDocStatFldSubTable ) )
+ {
+ USHORT nFmt = SVX_NUM_ARABIC;
+ if( pFmtOption )
+ pFmtOption->GetEnum( nFmt, aHTMLPageNumFldFmtTable );
+ pFld = new SwDocStatField( (SwDocStatFieldType *)pType,
+ nSub, nFmt );
+ bUpdateDocStat |= (DS_PAGE != nFmt);
+ }
+ }
+ break;
+
+ case RES_FILENAMEFLD:
+ {
+ USHORT nFmt = FF_NAME;
+ if( pFmtOption )
+ pFmtOption->GetEnum( nFmt, aHTMLFileNameFldFmtTable );
+ if( bFixed )
+ {
+ nFmt |= FF_FIXED;
+ bInsOnEndTag = TRUE;
+ }
+
+ pFld = new SwFileNameField( (SwFileNameFieldType *)pType, nFmt );
+ }
+ break;
+ }
+
+ if( pFld )
+ {
+ if( bInsOnEndTag )
+ {
+ pField = pFld;
+ }
+ else
+ {
+ pDoc->Insert( *pPam, SwFmtFld(*pFld) );
+ delete pFld;
+ }
+ bInField = TRUE;
+ }
+}
+
+void SwHTMLParser::EndField()
+{
+ if( pField )
+ {
+ switch( pField->Which() )
+ {
+ case RES_DOCINFOFLD:
+ ASSERT( ((SwDocInfoField*)pField)->IsFixed(),
+ "DokInfo-Feld haette nicht gemerkt werden muessen" );
+ ((SwDocInfoField*)pField)->SetExpansion( aContents );
+ break;
+
+ case RES_EXTUSERFLD:
+ ASSERT( ((SwExtUserField*)pField)->IsFixed(),
+ "ExtUser-Feld haette nicht gemerkt werden muessen" );
+ ((SwExtUserField*)pField)->SetExpansion( aContents );
+ break;
+
+ case RES_AUTHORFLD:
+ ASSERT( ((SwAuthorField*)pField)->IsFixed(),
+ "Author-Feld haette nicht gemerkt werden muessen" );
+ ((SwAuthorField*)pField)->SetExpansion( aContents );
+ break;
+
+ case RES_FILENAMEFLD:
+ ASSERT( ((SwFileNameField*)pField)->IsFixed(),
+ "FileName-Feld haette nicht gemerkt werden muessen" );
+ ((SwFileNameField*)pField)->SetExpansion( aContents );
+ break;
+ }
+
+ pDoc->Insert( *pPam, SwFmtFld(*pField) );
+ delete pField;
+ pField = 0;
+ }
+
+ bInField = FALSE;
+ aContents.Erase();
+}
+
+void SwHTMLParser::InsertFieldText()
+{
+ if( pField )
+ {
+ // das aktuelle Textstueck an den Text anhaengen
+ aContents += aToken;
+ }
+}
+
+void SwHTMLParser::InsertCommentText( const sal_Char *pTag )
+{
+ BOOL bEmpty = aContents.Len() == 0;
+ if( !bEmpty )
+ aContents += '\n';
+
+ aContents += aToken;
+ if( bEmpty && pTag )
+ {
+ String aTmp( aContents );
+ aContents.AssignAscii( "HTML: <" );
+ aContents.AppendAscii( pTag );
+ aContents.Append( '>' );
+ aContents.Append( aTmp );
+ }
+}
+
+void SwHTMLParser::InsertComment( const String& rComment, const sal_Char *pTag )
+{
+ String aComment( rComment );
+ if( pTag )
+ {
+ aComment.AppendAscii( "</" );
+ aComment.AppendAscii( pTag );
+ aComment.Append( '>' );
+ }
+
+ // MIB 24.06.97: Wenn ein PostIt nach einen Space eingefuegt
+ // werden soll, fuegen wir es vor dem Space ein. Dann gibt es
+ // weniger Probleme beim Formatieren (bug #40483#)
+ xub_StrLen nPos = pPam->GetPoint()->nContent.GetIndex();
+ SwTxtNode *pTxtNd = pPam->GetNode()->GetTxtNode();
+ BOOL bMoveFwd = FALSE;
+ if( nPos>0 && pTxtNd && ' '==pTxtNd->GetTxt().GetChar(nPos-1) )
+ {
+ bMoveFwd = TRUE;
+
+ ULONG nNodeIdx = pPam->GetPoint()->nNode.GetIndex();
+ xub_StrLen nIdx = pPam->GetPoint()->nContent.GetIndex();
+ for( USHORT i = aSetAttrTab.Count(); i > 0; )
+ {
+ _HTMLAttr *pAttr = aSetAttrTab[--i];
+ if( pAttr->GetSttParaIdx() != nNodeIdx ||
+ pAttr->GetSttCnt() != nIdx )
+ break;
+
+ if( RES_TXTATR_FIELD == pAttr->pItem->Which() &&
+ RES_SCRIPTFLD == ((const SwFmtFld *)pAttr->pItem)->GetFld()
+ ->GetTyp()->Which() )
+ {
+ bMoveFwd = FALSE;
+ break;
+ }
+ }
+
+ if( bMoveFwd )
+ pPam->Move( fnMoveBackward );
+ }
+
+ SwPostItField aPostItFld(
+ (SwPostItFieldType*)pDoc->GetSysFldType( RES_POSTITFLD ),
+ aEmptyStr, aComment, Date() );
+ InsertAttr( SwFmtFld( aPostItFld ) );
+
+ if( bMoveFwd )
+ pPam->Move( fnMoveForward );
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmlfld.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.30 2000/09/18 16:04:44 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.29 2000/04/10 12:20:56 mib
+ unicode
+
+ Revision 1.28 2000/03/02 11:28:52 mib
+ #73744#: state of ext user field
+
+ Revision 1.27 1999/09/21 13:53:35 os
+ SwExtUserSubType: language
+
+ Revision 1.26 1999/09/17 12:12:56 mib
+ support of multiple and non system text encodings
+
+ Revision 1.25 1998/11/20 10:53:36 MIB
+ #59064#: Unbekannte Token/<NOSCRIPT> und <NOEMEBED> beibehalten
+
+
+ Rev 1.24 20 Nov 1998 11:53:36 MIB
+ #59064#: Unbekannte Token/<NOSCRIPT> und <NOEMEBED> beibehalten
+
+ Rev 1.23 17 Nov 1998 10:44:32 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.22 03 Nov 1998 14:01:14 MIB
+ #58427#: Fixe Filename-Felder
+
+ Rev 1.21 02 Nov 1998 17:17:50 MIB
+ #58480#: Fuss-/Endnoten
+
+ Rev 1.20 25 Mar 1998 12:14:40 MIB
+ Statistk-Feld
+
+ Rev 1.19 05 Mar 1998 17:41:24 OS
+ AF_SHORCUT->AF_SHORTCUT
+
+ Rev 1.18 02 Mar 1998 09:48:58 MIB
+ Fixe Author- und ExtUser-Felder
+
+ Rev 1.17 20 Feb 1998 19:03:28 MA
+ header
+
+ Rev 1.16 20 Feb 1998 12:27:34 MIB
+ SDFIELD-Token/String erst ab 382 aktiviert
+
+ Rev 1.15 16 Feb 1998 12:28:46 MIB
+ DokInfo-Feld jetzt auch fixed
+
+ Rev 1.14 13 Feb 1998 19:18:34 MIB
+ Feldumstelling Teil 1: Date/Time und nicht-fixe Dok-Info
+
+ Rev 1.13 26 Nov 1997 19:09:24 MA
+ includes
+
+ Rev 1.12 25 Nov 1997 11:50:14 TJ
+ include svhtml.hxx
+
+ Rev 1.11 21 Nov 1997 17:22:26 OM
+ Feldbefehl-Umstellung: DocInfo
+
+ Rev 1.10 03 Nov 1997 14:08:52 MA
+ precomp entfernt
+
+ Rev 1.9 14 Oct 1997 14:13:06 OM
+ Feldumstellung
+
+ Rev 1.8 29 Sep 1997 12:16:38 OM
+ Feldumstellung
+
+ Rev 1.7 24 Sep 1997 15:25:02 OM
+ Feldumstellung
+
+ Rev 1.6 15 Aug 1997 12:48:52 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.5 07 Aug 1997 15:07:44 OM
+ Headerfile-Umstellung
+
+ Rev 1.4 26 Jun 1997 14:13:52 OM
+ Feldbefehl Dateiname ohne Extension
+
+ Rev 1.3 11 Jun 1997 11:40:48 OM
+ Neue Datumsformate fuer Datums-Feldbefehl
+
+ Rev 1.2 18 Feb 1997 11:08:02 MIB
+ Optimierung
+
+ Rev 1.1 17 Feb 1997 12:37:22 MIB
+ FileName-Feld im- und exportieren
+
+ Rev 1.0 07 Feb 1997 18:05:10 MIB
+ Initial revision.
+
+*************************************************************************/
+
+
diff --git a/sw/source/filter/html/htmlfld.hxx b/sw/source/filter/html/htmlfld.hxx
new file mode 100644
index 000000000000..41c50e1ee597
--- /dev/null
+++ b/sw/source/filter/html/htmlfld.hxx
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlfld.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _HTMLFLD_HXX
+#define _HTMLFLD_HXX
+
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FT_author, "AUTHOR" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FT_sender, "SENDER" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FT_date, "DATE" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FT_time, "TIME" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FT_datetime, "DATETIME" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FT_page, "PAGE" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FT_docinfo, "DOCINFO" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FT_docstat, "DOCSTAT" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FT_filename, "FILENAME" );
+
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_company, "COMPANY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_firstname, "FIRSTNAME" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_name, "NAME" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_shortcut, "SHORTCUT" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_street, "STREET" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_country, "COUNTRY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_zip, "ZIP" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_city, "CITY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_title, "TITLE" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_position, "POSITION" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_pphone, "PPHONE" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_cphone, "CPHONE" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_fax, "FAX" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_email, "EMAIL" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_state, "STATE" );
+
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_random, "RANDOM" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_next, "NEXT" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_prev, "PREV" );
+
+//sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_title, "TITLE" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_theme, "THEME" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_keys, "KEYS" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_comment, "COMMENT" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_info1, "INFO1" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_info2, "INFO2" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_info3, "INFO3" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_info4, "INFO4" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_create, "CREATE" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_change, "CHANGE" );
+
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_page, "PAGE" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_para, "PARAGRAPH" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_word, "WORD" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_char, "CHAR" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_tbl, "TABLE" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_grf, "GRAPHIC" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FS_ole, "OLE" );
+
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_name, "NAME" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_shortcut, "SHORTCUT" );
+
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_ssys, "SSYS" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_lsys, "LSYS" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_dmy, "DMY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_dmyy, "DMYY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_dmmy, "DMMY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_dmmyy, "DMMYY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_dmmmy, "DMMMY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_dmmmyy, "DMMMYY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_ddmmy, "DDMMY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_ddmmmy, "DDMMMY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_ddmmmyy, "DDMMMYY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_dddmmmy, "DDDMMMY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_dddmmmyy, "DDDMMMYY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_my, "MY" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_md, "MD" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_ymd, "YMD" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_yymd, "YYMD" );
+
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_sys, "SYS" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_ssmm24, "SSMM24" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_ssmm12, "SSMM12" );
+
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_uletter, "ULETTER" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_lletter, "LLETTER" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_uroman, "UROMAN" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_lroman, "LROMAN" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_arabic, "ARABIC" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_none, "NONE" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_char, "CHAR" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_page, "PAGE" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_ulettern, "ULETTERN" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_llettern, "LLETTERN" );
+
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_author, "AUTHOR" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_time, "TIME" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_date, "DATE" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_all, "ALL" );
+
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_pathname, "PATHNAME" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_path, "PATH" );
+extern sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DECL( sHTML_FF_name_noext, "NAME-NOEXT" );
+
+
+#endif
+
+
diff --git a/sw/source/filter/html/htmlfldw.cxx b/sw/source/filter/html/htmlfldw.cxx
new file mode 100644
index 000000000000..f1eb6b2deecf
--- /dev/null
+++ b/sw/source/filter/html/htmlfldw.cxx
@@ -0,0 +1,667 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlfldw.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _HTMLOUT_HXX //autogen
+#include <svtools/htmlout.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _FMTFLD_HXX //autogen
+#include <fmtfld.hxx>
+#endif
+#ifndef _DOC_HXX //autogen
+#include <doc.hxx>
+#endif
+#include "fldbas.hxx"
+#include "docufld.hxx"
+#include "flddat.hxx"
+#include "htmlfld.hxx"
+#include "wrthtml.hxx"
+
+//-----------------------------------------------------------------------
+
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FT_author, "AUTHOR" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FT_sender, "SENDER" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FT_date, "DATE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FT_time, "TIME" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FT_datetime, "DATETIME" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FT_page, "PAGE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FT_docinfo, "DOCINFO" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FT_docstat, "DOCSTAT" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FT_filename, "FILENAME" );
+
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_company, "COMPANY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_firstname, "FIRSTNAME" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_name, "NAME" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_shortcut, "SHORTCUT" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_street, "STREET" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_country, "COUNTRY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_zip, "ZIP" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_city, "CITY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_title, "TITLE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_position, "POSITION" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_pphone, "PPHONE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_cphone, "CPHONE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_fax, "FAX" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_email, "EMAIL" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_state, "STATE" );
+
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_random, "RANDOM" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_next, "NEXT" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_prev, "PREV" );
+
+//sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_title, "TITLE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_theme, "THEME" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_keys, "KEYS" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_comment, "COMMENT" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_info1, "INFO1" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_info2, "INFO2" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_info3, "INFO3" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_info4, "INFO4" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_create, "CREATE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_change, "CHANGE" );
+
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_page, "PAGE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_para, "PARAGRAPH" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_word, "WORD" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_char, "CHAR" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_tbl, "TABLE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_grf, "GRAPHIC" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FS_ole, "OLE" );
+
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_name, "NAME" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_shortcut, "SHORTCUT" );
+
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_ssys, "SSYS" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_lsys, "LSYS" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_dmy, "DMY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_dmyy, "DMYY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_dmmy, "DMMY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_dmmyy, "DMMYY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_dmmmy, "DMMMY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_dmmmyy, "DMMMYY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_ddmmy, "DDMMY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_ddmmmy, "DDMMMY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_ddmmmyy, "DDMMMYY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_dddmmmy, "DDDMMMY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_dddmmmyy, "DDDMMMYY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_my, "MY" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_md, "MD" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_ymd, "YMD" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_yymd, "YYMD" );
+
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_sys, "SYS" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_ssmm24, "SSMM24" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_ssmm12, "SSMM12" );
+
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_uletter, "ULETTER" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_lletter, "LLETTER" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_uroman, "UROMAN" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_lroman, "LROMAN" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_arabic, "ARABIC" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_none, "NONE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_char, "CHAR" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_page, "PAGE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_ulettern, "ULETTERN" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_llettern, "LLETTERN" );
+
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_author, "AUTHOR" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_time, "TIME" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_date, "DATE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_all, "ALL" );
+
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_pathname, "PATHNAME" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_path, "PATH" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_FF_name_noext, "NAME-NOEXT" );
+
+
+const sal_Char *SwHTMLWriter::GetNumFormat( USHORT nFmt )
+{
+ const sal_Char *pFmtStr = 0;
+
+ switch( (SvxExtNumType)nFmt )
+ {
+ case SVX_NUM_CHARS_UPPER_LETTER: pFmtStr = sHTML_FF_uletter; break;
+ case SVX_NUM_CHARS_LOWER_LETTER: pFmtStr = sHTML_FF_lletter; break;
+ case SVX_NUM_ROMAN_UPPER: pFmtStr = sHTML_FF_uroman; break;
+ case SVX_NUM_ROMAN_LOWER: pFmtStr = sHTML_FF_lroman; break;
+ case SVX_NUM_ARABIC: pFmtStr = sHTML_FF_arabic; break;
+ case SVX_NUM_NUMBER_NONE: pFmtStr = sHTML_FF_none; break;
+ case SVX_NUM_CHAR_SPECIAL: pFmtStr = sHTML_FF_char; break;
+ case SVX_NUM_PAGEDESC: pFmtStr = sHTML_FF_page; break;
+ case SVX_NUM_CHARS_UPPER_LETTER_N: pFmtStr = sHTML_FF_ulettern; break;
+ case SVX_NUM_CHARS_LOWER_LETTER_N: pFmtStr = sHTML_FF_llettern; break;
+ }
+
+ return pFmtStr;
+}
+
+static Writer& OutHTML_SwField( Writer& rWrt, const SwField* pFld )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const SwFieldType* pFldTyp = pFld->GetTyp();
+ USHORT nField = pFldTyp->Which();
+ ULONG nFmt = pFld->GetFormat();
+
+ const sal_Char *pTypeStr=0, // TYPE
+ *pSubStr=0, // SUBTYPE
+ *pFmtStr=0; // FORMAT (SW)
+ String aValue; // VALUE (SW)
+ BOOL bNumFmt=FALSE; // SDNUM (Number-Formatter-Format)
+ BOOL bNumValue=FALSE; // SDVAL (Number-Formatter-Value)
+ double dNumValue; // SDVAL (Number-Formatter-Value)
+ BOOL bFixed=FALSE; // SDFIXED
+
+ switch( nField )
+ {
+ case RES_EXTUSERFLD:
+ pTypeStr = sHTML_FT_sender;
+ switch( (SwExtUserSubType)pFld->GetSubType() )
+ {
+ case EU_COMPANY: pSubStr = sHTML_FS_company; break;
+ case EU_FIRSTNAME: pSubStr = sHTML_FS_firstname; break;
+ case EU_NAME: pSubStr = sHTML_FS_name; break;
+ case EU_SHORTCUT: pSubStr = sHTML_FS_shortcut; break;
+ case EU_STREET: pSubStr = sHTML_FS_street; break;
+ case EU_COUNTRY: pSubStr = sHTML_FS_country; break;
+ case EU_ZIP: pSubStr = sHTML_FS_zip; break;
+ case EU_CITY: pSubStr = sHTML_FS_city; break;
+ case EU_TITLE: pSubStr = sHTML_FS_title; break;
+ case EU_POSITION: pSubStr = sHTML_FS_position; break;
+ case EU_PHONE_PRIVATE: pSubStr = sHTML_FS_pphone; break;
+ case EU_PHONE_COMPANY: pSubStr = sHTML_FS_cphone; break;
+ case EU_FAX: pSubStr = sHTML_FS_fax; break;
+ case EU_EMAIL: pSubStr = sHTML_FS_email; break;
+ case EU_STATE: pSubStr = sHTML_FS_state; break;
+ }
+ ASSERT( pSubStr, "ubekannter Subtyp fuer SwExtUserField" );
+ bFixed = ((const SwExtUserField*)pFld)->IsFixed();
+ break;
+
+ case RES_AUTHORFLD:
+ pTypeStr = sHTML_FT_author;
+ switch( (SwAuthorFormat)nFmt & 0xff)
+ {
+ case AF_NAME: pFmtStr = sHTML_FF_name; break;
+ case AF_SHORTCUT: pFmtStr = sHTML_FF_shortcut; break;
+ }
+ ASSERT( pFmtStr, "ubekanntes Format fuer SwAuthorField" );
+ bFixed = ((const SwAuthorField*)pFld)->IsFixed();
+ break;
+
+ case RES_DATETIMEFLD:
+ pTypeStr = sHTML_FT_datetime;
+ bNumFmt = TRUE;
+ if( ((SwDateTimeField*)pFld)->IsFixed() )
+ {
+ bNumValue = TRUE;
+ dNumValue = ((SwDateTimeField*)pFld)->GetValue();
+ }
+ break;
+
+ case RES_PAGENUMBERFLD:
+ {
+ pTypeStr = sHTML_FT_page;
+ SwPageNumSubType eSubType = (SwPageNumSubType)pFld->GetSubType();
+ switch( eSubType )
+ {
+ case PG_RANDOM: pSubStr = sHTML_FS_random; break;
+ case PG_NEXT: pSubStr = sHTML_FS_next; break;
+ case PG_PREV: pSubStr = sHTML_FS_prev; break;
+ }
+ ASSERT( pSubStr, "ubekannter Subtyp fuer SwPageNumberField" );
+ pFmtStr = SwHTMLWriter::GetNumFormat( (SvxExtNumType)nFmt );
+
+ if( (SvxExtNumType)nFmt==SVX_NUM_CHAR_SPECIAL )
+ {
+ aValue = ((const SwPageNumberField *)pFld)->GetUserString();
+ }
+ else
+ {
+ const String& rValue = pFld->GetPar2();
+ short nValue = (short)rValue.ToInt32();
+ if( (eSubType == PG_NEXT && nValue!=1) ||
+ (eSubType == PG_PREV && nValue!=-1) ||
+ (eSubType == PG_RANDOM && nValue!=0) )
+ {
+ aValue = rValue;
+ }
+ }
+ }
+ break;
+ case RES_DOCINFOFLD:
+ {
+ USHORT nSubType = pFld->GetSubType();
+ pTypeStr = sHTML_FT_docinfo;
+ USHORT nExtSubType = nSubType & 0x0f00;
+ nSubType &= 0x00ff;
+
+ switch( nSubType )
+ {
+ case DI_TITEL: pSubStr = sHTML_FS_title; break;
+ case DI_THEMA: pSubStr = sHTML_FS_theme; break;
+ case DI_KEYS: pSubStr = sHTML_FS_keys; break;
+ case DI_COMMENT: pSubStr = sHTML_FS_comment; break;
+ case DI_INFO1: pSubStr = sHTML_FS_info1; break;
+ case DI_INFO2: pSubStr = sHTML_FS_info2; break;
+ case DI_INFO3: pSubStr = sHTML_FS_info3; break;
+ case DI_INFO4: pSubStr = sHTML_FS_info4; break;
+ case DI_CREATE: pSubStr = sHTML_FS_create; break;
+ case DI_CHANGE: pSubStr = sHTML_FS_change; break;
+ default: pTypeStr = 0; break;
+ }
+ if( DI_CREATE == nSubType || DI_CHANGE == nSubType )
+ {
+ switch( nExtSubType )
+ {
+ case DI_SUB_AUTHOR:
+ pFmtStr = sHTML_FF_author;
+ break;
+ case DI_SUB_TIME:
+ pFmtStr = sHTML_FF_time;
+ bNumFmt = TRUE;
+ break;
+ case DI_SUB_DATE:
+ pFmtStr = sHTML_FF_date;
+ bNumFmt = TRUE;
+ break;
+ }
+ }
+ bFixed = ((const SwDocInfoField*)pFld)->IsFixed();
+ if( bNumFmt )
+ {
+ if( bFixed )
+ {
+ // Fuer ein fixes Feld och den Num-Value ausgeben.
+ // Fixe Felder ohne Zahlenformate sollte es
+ // eigentlich nicht geben. ASSERT ist unten.
+ dNumValue = ((const SwDocInfoField*)pFld)->GetValue();
+ bNumValue = TRUE;
+ }
+ else if( !nFmt )
+ {
+ // Nicht fixe Felder muessen kein Zahlenformat haben,
+ // wenn sie aus 4.0-Dokumenten stammen.
+ bNumFmt = FALSE;
+ }
+ }
+ }
+ break;
+
+ case RES_DOCSTATFLD:
+ {
+ pTypeStr = sHTML_FT_docstat;
+ USHORT nSubType = pFld->GetSubType();
+ switch( nSubType )
+ {
+ case DS_PAGE: pSubStr = sHTML_FS_page; break;
+ case DS_PARA: pSubStr = sHTML_FS_para; break;
+ case DS_WORD: pSubStr = sHTML_FS_word; break;
+ case DS_CHAR: pSubStr = sHTML_FS_char; break;
+ case DS_TBL: pSubStr = sHTML_FS_tbl; break;
+ case DS_GRF: pSubStr = sHTML_FS_grf; break;
+ case DS_OLE: pSubStr = sHTML_FS_ole; break;
+ default: pTypeStr = 0; break;
+ }
+ pFmtStr = SwHTMLWriter::GetNumFormat( (SvxExtNumType)nFmt );
+ }
+ break;
+
+ case RES_FILENAMEFLD:
+ pTypeStr = sHTML_FT_filename;
+ switch( (SwFileNameFormat)(nFmt & ~FF_FIXED) )
+ {
+ case FF_NAME: pFmtStr = sHTML_FF_name; break;
+ case FF_PATHNAME: pFmtStr = sHTML_FF_pathname; break;
+ case FF_PATH: pFmtStr = sHTML_FF_path; break;
+ case FF_NAME_NOEXT: pFmtStr = sHTML_FF_name_noext; break;
+ }
+ bFixed = ((const SwFileNameField*)pFld)->IsFixed();
+ ASSERT( pFmtStr, "unbekanntes Format fuer SwFileNameField" );
+ break;
+ }
+
+ // <SDFIELD>-Tag ausgeben
+ if( pTypeStr )
+ {
+ ByteString sOut( '<' );
+ ((((sOut += sHTML_sdfield) += ' ') += sHTML_O_type) += '=')
+ += pTypeStr;
+ if( pSubStr )
+ (((sOut += ' ') += sHTML_O_subtype) += '=') += pSubStr;
+ if( pFmtStr )
+ (((sOut += ' ') += sHTML_O_format) += '=') += pFmtStr;
+ if( aValue.Len() )
+ {
+ ((sOut += ' ') += sHTML_O_value) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aValue, rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+ if( bNumFmt )
+ {
+ ASSERT( nFmt, "Zahlenformat ist 0" );
+ sOut = HTMLOutFuncs::CreateTableDataOptionsValNum( sOut,
+ bNumValue, dNumValue, nFmt,
+ *rHTMLWrt.pDoc->GetNumberFormatter(),
+ rHTMLWrt.eDestEnc );
+
+ }
+ if( bFixed )
+ (sOut += ' ') += sHTML_O_sdfixed;
+ sOut += '>';
+ rWrt.Strm() << sOut.GetBuffer();
+ }
+
+ // Inhalt des Feldes ausgeben
+ HTMLOutFuncs::Out_String( rWrt.Strm(), pFld->Expand(),
+ rHTMLWrt.eDestEnc );
+
+ // Off-Tag ausgeben
+ if( pTypeStr )
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_sdfield, FALSE );
+
+ return rWrt;
+}
+
+
+Writer& OutHTML_SwFmtFld( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwFmtFld & rFld = (SwFmtFld&)rHt;
+ const SwField* pFld = rFld.GetFld();
+ const SwFieldType* pFldTyp = pFld->GetTyp();
+
+ if( RES_SETEXPFLD == pFldTyp->Which() &&
+ (GSE_STRING & pFld->GetSubType()) )
+ {
+ int bOn = FALSE;
+ if( pFldTyp->GetName().EqualsAscii("HTML_ON" ) )
+ bOn = TRUE;
+ else if( !pFldTyp->GetName().EqualsAscii( "HTML_OFF" ) )
+ return rWrt;
+
+ String rTxt( pFld->GetPar2() );
+ rTxt.EraseLeadingChars().EraseTrailingChars();
+ rWrt.Strm() << '<';
+ if( !bOn )
+ rWrt.Strm() << '/';
+ // TODO: HTML-Tags are written without entitities, that for, characters
+ // not contained in the destination encoding are lost!
+ ByteString sTmp( rTxt, ((SwHTMLWriter&)rWrt).eDestEnc );
+ rWrt.Strm() << sTmp.GetBuffer() << '>';
+ }
+ else if( RES_POSTITFLD == pFldTyp->Which() )
+ {
+ // Kommentare werden im ANSI-Zeichensetz, aber mit System-Zeilen-
+ // Umbruechen gesschrieben.
+ const String& rComment = pFld->GetPar2();
+ BOOL bWritten = FALSE;
+
+ if( rComment.Len() >= 6 && '<' == rComment.GetChar(0) &&
+ '>' == rComment.GetChar(rComment.Len()-1) &&
+ rComment.Copy( 1, 4 ).EqualsIgnoreCaseAscii(sHTML_meta) )
+ {
+ // META-Tags direkt ausgeben
+ String sComment( rComment );
+ sComment.ConvertLineEnd( GetSystemLineEnd() );
+ // TODO: HTML-Tags are written without entitities, that for,
+ // characters not contained in the destination encoding are lost!
+ ByteString sTmp( sComment, ((SwHTMLWriter&)rWrt).eDestEnc );
+ rWrt.Strm() << sTmp.GetBuffer();
+ bWritten = TRUE;
+ }
+ else if( rComment.Len() >= 7 &&
+ '>' == rComment.GetChar(rComment.Len()-1) &&
+ rComment.Copy(0,5).EqualsIgnoreCaseAscii("HTML:") )
+ {
+ String sComment( rComment.Copy(5) );
+ sComment.EraseLeadingChars();
+ if( '<' == sComment.GetChar(0) )
+ {
+ sComment.ConvertLineEnd( GetSystemLineEnd() );
+ // TODO: HTML-Tags are written without entitities, that for,
+ // characters not contained in the destination encoding are
+ // lost!
+ ByteString sTmp( sComment, ((SwHTMLWriter&)rWrt).eDestEnc );
+ rWrt.Strm() << sTmp.GetBuffer();
+ bWritten = TRUE;
+ }
+
+ }
+
+ if( !bWritten )
+ {
+ ByteString sOut( '<' );
+
+ String sComment( rComment );
+ sComment.ConvertLineEnd( GetSystemLineEnd() );
+ // TODO: ???
+ (((sOut += sHTML_comment) += ' ')
+ += ByteString( sComment, ((SwHTMLWriter&)rWrt).eDestEnc ))
+ += " -->";
+ rWrt.Strm() << sOut.GetBuffer();
+ }
+ }
+ else if( RES_SCRIPTFLD == pFldTyp->Which() )
+ {
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine( TRUE );
+
+ BOOL bURL = ((const SwScriptField *)pFld)->IsCodeURL();
+ const String& rType = pFld->GetPar1();
+ String aContents, aURL;
+ if(bURL)
+ aURL = pFld->GetPar2();
+ else
+ aContents = pFld->GetPar2();
+
+ // sonst ist es der Script-Inhalt selbst. Da nur noh JavaScript
+ // in Feldern landet, muss es sich um JavaSrript handeln ...:)
+ HTMLOutFuncs::OutScript( rWrt.Strm(), aContents, rType, JAVASCRIPT,
+ aURL, 0, 0, rHTMLWrt.eDestEnc );
+
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine( TRUE );
+ }
+ else
+ {
+ OutHTML_SwField( rWrt, pFld );
+ }
+ return rWrt;
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmlfldw.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.36 2000/09/18 16:04:44 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.35 2000/04/10 12:20:56 mib
+ unicode
+
+ Revision 1.34 2000/03/02 11:28:52 mib
+ #73744#: state of ext user field
+
+ Revision 1.33 1999/09/21 13:53:35 os
+ SwExtUserSubType: language
+
+ Revision 1.32 1999/09/21 09:48:54 mib
+ multiple text encodings
+
+ Revision 1.31 1998/11/20 10:53:36 MIB
+ #59064#: Unbekannte Token/<NOSCRIPT> und <NOEMEBED> beibehalten
+
+
+ Rev 1.30 20 Nov 1998 11:53:36 MIB
+ #59064#: Unbekannte Token/<NOSCRIPT> und <NOEMEBED> beibehalten
+
+ Rev 1.29 17 Nov 1998 10:44:38 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.28 03 Nov 1998 14:01:14 MIB
+ #58427#: Fixe Filename-Felder
+
+ Rev 1.27 02 Nov 1998 17:17:52 MIB
+ #58480#: Fuss-/Endnoten
+
+ Rev 1.26 08 Jul 1998 17:21:38 MIB
+ StarScript
+
+ Rev 1.25 26 Jun 1998 12:21:56 OM
+ #51184# SubType an ExpressionFields richtig setzen und abfragen
+
+ Rev 1.24 27 Mar 1998 09:33:44 MIB
+ englisch ist besser
+
+ Rev 1.23 25 Mar 1998 12:14:42 MIB
+ Statistk-Feld
+
+ Rev 1.22 05 Mar 1998 17:41:24 OS
+ AF_SHORCUT->AF_SHORTCUT
+
+ Rev 1.21 02 Mar 1998 09:48:58 MIB
+ Fixe Author- und ExtUser-Felder
+
+ Rev 1.20 25 Feb 1998 16:52:16 OM
+ Includes
+
+ Rev 1.19 25 Feb 1998 16:50:54 OM
+ Fixe Author- und ExtUser-Felder
+
+ Rev 1.18 20 Feb 1998 19:04:32 MA
+ header
+
+ Rev 1.17 20 Feb 1998 12:27:34 MIB
+ SDFIELD-Token/String erst ab 382 aktiviert
+
+ Rev 1.16 16 Feb 1998 12:28:50 MIB
+ DokInfo-Feld jetzt auch fixed
+
+ Rev 1.15 13 Feb 1998 19:18:34 MIB
+ Feldumstelling Teil 1: Date/Time und nicht-fixe Dok-Info
+
+ Rev 1.14 26 Nov 1997 19:09:24 MA
+ includes
+
+ Rev 1.13 21 Nov 1997 17:22:26 OM
+ Feldbefehl-Umstellung: DocInfo
+
+ Rev 1.12 03 Nov 1997 14:08:48 MA
+ precomp entfernt
+
+ Rev 1.11 15 Oct 1997 12:00:16 OM
+ Feldumstellung
+
+ Rev 1.10 29 Sep 1997 12:16:38 OM
+ Feldumstellung
+
+ Rev 1.9 24 Sep 1997 15:25:02 OM
+ Feldumstellung
+
+ Rev 1.8 15 Aug 1997 12:46:34 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.7 08 Jul 1997 14:06:20 MIB
+ PostIts und Script-Felder aus 1. Absatz in Header exportieren
+
+ Rev 1.6 26 Jun 1997 14:13:52 OM
+ Feldbefehl Dateiname ohne Extension
+
+ Rev 1.5 11 Jun 1997 11:40:48 OM
+ Neue Datumsformate fuer Datums-Feldbefehl
+
+ Rev 1.4 05 Jun 1997 09:13:42 OS
+ ternaeren Ausdruck aufgeloest
+
+ Rev 1.3 22 May 1997 11:04:22 MIB
+ URL-Flag am Script-Feld
+
+ Rev 1.2 24 Mar 1997 17:42:44 MIB
+ fix: Kommentare uncodiert exportieren, opt: OutBasic aus goodies nutzen
+
+ Rev 1.1 17 Feb 1997 12:37:22 MIB
+ FileName-Feld im- und exportieren
+
+ Rev 1.0 07 Feb 1997 18:00:40 MIB
+ manche Felder als SDFIELD exportieren
+
+ -------------------------------------------------------------------------*/
+
diff --git a/sw/source/filter/html/htmlfly.cxx b/sw/source/filter/html/htmlfly.cxx
new file mode 100644
index 000000000000..159630f2e1c5
--- /dev/null
+++ b/sw/source/filter/html/htmlfly.cxx
@@ -0,0 +1,2008 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlfly.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#include "hintids.hxx"
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+
+#ifndef _APP_HXX
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+#ifndef _HTMLOUT_HXX //autogen
+#include <svtools/htmlout.hxx>
+#endif
+#ifndef _IMAP_HXX //autogen
+#include <svtools/imap.hxx>
+#endif
+#ifndef _GOODIES_IMAPOBJ_HXX
+#include <svtools/imapobj.hxx>
+#endif
+
+#ifndef _XOUTBMP_HXX //autogen
+#include <svx/xoutbmp.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+
+
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTURL_HXX //autogen
+#include <fmturl.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _TXTINET_HXX //autogen
+#include <txtinet.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include "frmatr.hxx"
+#endif
+#ifndef _GRFATR_HXX //autogen
+#include <grfatr.hxx>
+#endif
+#ifndef _FLYPOS_HXX //autogen
+#include <flypos.hxx>
+#endif
+
+#ifndef _DOCARY_HXX //autogen
+#include <docary.hxx>
+#endif
+
+#ifndef _NDGRF_HXX //autogen
+#include <ndgrf.hxx>
+#endif
+
+#include "doc.hxx"
+#include "ndtxt.hxx"
+#include "pam.hxx"
+#include "swerror.h"
+#include "frmfmt.hxx"
+#include "wrthtml.hxx"
+#include "css1kywd.hxx"
+#include "htmlfly.hxx"
+
+const ULONG HTML_FRMOPTS_IMG_ALL =
+ HTML_FRMOPT_ALT |
+ HTML_FRMOPT_SIZE |
+ HTML_FRMOPT_ANYSIZE |
+ HTML_FRMOPT_BORDER |
+ HTML_FRMOPT_NAME;
+const ULONG HTML_FRMOPTS_IMG_CNTNR =
+ HTML_FRMOPTS_IMG_ALL |
+ HTML_FRMOPT_ABSSIZE;
+const ULONG HTML_FRMOPTS_IMG =
+ HTML_FRMOPTS_IMG_ALL |
+ HTML_FRMOPT_ALIGN |
+ HTML_FRMOPT_SPACE |
+ HTML_FRMOPT_BRCLEAR;
+const ULONG HTML_FRMOPTS_IMG_CSS1 =
+ HTML_FRMOPT_S_ALIGN |
+ HTML_FRMOPT_S_SPACE;
+
+const ULONG HTML_FRMOPTS_DIV =
+ HTML_FRMOPT_ID |
+ HTML_FRMOPT_S_ALIGN |
+ HTML_FRMOPT_S_SIZE |
+ HTML_FRMOPT_ANYSIZE |
+ HTML_FRMOPT_ABSSIZE |
+ HTML_FRMOPT_S_SPACE |
+ HTML_FRMOPT_S_BORDER |
+ HTML_FRMOPT_S_BACKGROUND |
+ HTML_FRMOPT_BRCLEAR;
+
+const ULONG HTML_FRMOPTS_MULTICOL =
+ HTML_FRMOPT_ID |
+ HTML_FRMOPT_WIDTH |
+ HTML_FRMOPT_ANYSIZE |
+ HTML_FRMOPT_ABSSIZE;
+const ULONG HTML_FRMOPTS_MULTICOL_CNTNR =
+ HTML_FRMOPTS_MULTICOL;
+const ULONG HTML_FRMOPTS_MULTICOL_CSS1 =
+ HTML_FRMOPT_S_ALIGN |
+ HTML_FRMOPT_S_SIZE |
+ HTML_FRMOPT_S_SPACE |
+ HTML_FRMOPT_S_BORDER|
+ HTML_FRMOPT_S_BACKGROUND;
+
+const ULONG HTML_FRMOPTS_SPACER =
+ HTML_FRMOPT_ALIGN |
+ HTML_FRMOPT_SIZE |
+ HTML_FRMOPT_ANYSIZE |
+ HTML_FRMOPT_BRCLEAR |
+ HTML_FRMOPT_MARGINSIZE |
+ HTML_FRMOPT_ABSSIZE;
+
+const ULONG HTML_FRMOPTS_CNTNR =
+ HTML_FRMOPT_S_ALIGN |
+ HTML_FRMOPT_S_SPACE |
+ HTML_FRMOPT_S_WIDTH |
+ HTML_FRMOPT_ANYSIZE |
+ HTML_FRMOPT_ABSSIZE |
+ HTML_FRMOPT_S_PIXSIZE;
+
+
+static Writer& OutHTML_FrmFmtTableNode( Writer& rWrt, const SwFrmFmt& rFrmFmt );
+static Writer& OutHTML_FrmFmtAsMulticol( Writer& rWrt, const SwFrmFmt& rFmt,
+ BOOL bInCntnr );
+static Writer& OutHTML_FrmFmtAsSpacer( Writer& rWrt, const SwFrmFmt& rFmt );
+static Writer& OutHTML_FrmFmtAsDivOrSpan( Writer& rWrt,
+ const SwFrmFmt& rFrmFmt, BOOL bSpan );
+static Writer& OutHTML_FrmFmtAsImage( Writer& rWrt, const SwFrmFmt& rFmt,
+ BOOL bInCntnr );
+
+static Writer& OutHTML_FrmFmtGrfNode( Writer& rWrt, const SwFrmFmt& rFmt,
+ BOOL bInCntnr );
+
+static Writer& OutHTML_FrmFmtAsMarquee( Writer& rWrt, const SwFrmFmt& rFrmFmt,
+ const SdrObject& rSdrObj );
+//-----------------------------------------------------------------------
+
+extern HTMLOutEvent __FAR_DATA aAnchorEventTable[];
+
+static HTMLOutEvent __FAR_DATA aImageEventTable[] =
+{
+ { sHTML_O_SDonload, sHTML_O_onload, SVX_EVENT_IMAGE_LOAD },
+ { sHTML_O_SDonabort, sHTML_O_onabort, SVX_EVENT_IMAGE_ABORT },
+ { sHTML_O_SDonerror, sHTML_O_onerror, SVX_EVENT_IMAGE_ERROR },
+ { 0, 0, 0 }
+};
+
+static HTMLOutEvent __FAR_DATA aIMapEventTable[] =
+{
+ { sHTML_O_SDonmouseover, sHTML_O_onmouseover, SFX_EVENT_MOUSEOVER_OBJECT },
+ { sHTML_O_SDonmouseout, sHTML_O_onmouseout, SFX_EVENT_MOUSEOUT_OBJECT },
+ { 0, 0, 0 }
+};
+
+
+
+SV_IMPL_OP_PTRARR_SORT( SwHTMLPosFlyFrms, SwHTMLPosFlyFrmPtr )
+
+USHORT SwHTMLWriter::GuessFrmType( const SwFrmFmt& rFrmFmt,
+ const SdrObject*& rpSdrObj )
+{
+ SwHTMLFrmType eType;
+
+ if( RES_DRAWFRMFMT == rFrmFmt.Which() )
+ {
+ // Als Default irgendein Zeichen-Objekt
+ eType = HTML_FRMTYPE_DRAW;
+
+ const SdrObject *pObj =
+ SwHTMLWriter::GetMarqueeTextObj( (const SwDrawFrmFmt &)rFrmFmt );
+ if( pObj )
+ {
+ // Laufschrift
+ rpSdrObj = pObj;
+ eType = HTML_FRMTYPE_MARQUEE;
+ }
+ else
+ {
+ pObj = GetHTMLControl( (const SwDrawFrmFmt &)rFrmFmt );
+
+ if( pObj )
+ {
+ // Form-Control
+ rpSdrObj = pObj;
+ eType = HTML_FRMTYPE_CONTROL;
+ }
+ }
+ }
+ else
+ {
+ // Als Default ein Textrahmen
+ eType = HTML_FRMTYPE_TEXT;
+
+ const SwFmtCntnt& rFlyCntnt = rFrmFmt.GetCntnt();
+ ULONG nStt = rFlyCntnt.GetCntntIdx()->GetIndex()+1;
+ const SwNode* pNd = pDoc->GetNodes()[ nStt ];
+
+ if( pNd->IsGrfNode() )
+ {
+ // Grafik - Node
+ eType = HTML_FRMTYPE_GRF;
+ }
+ else if( pNd->IsOLENode() )
+ {
+ // Applet, Plugin, Floating-Frame
+ eType = (SwHTMLFrmType)GuessOLENodeFrmType( *pNd );
+ }
+ else
+ {
+ ULONG nEnd = pDoc->GetNodes()[nStt-1]->EndOfSectionIndex();
+
+ const SfxPoolItem* pItem;
+ const SfxItemSet& rItemSet = rFrmFmt.GetAttrSet();
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_COL,
+ TRUE, &pItem ) &&
+ ((const SwFmtCol *)pItem)->GetNumCols() > 1 )
+ {
+ // spaltiger Rahmen
+ eType = HTML_FRMTYPE_MULTICOL;
+ }
+ else if( pNd->IsTableNode() )
+ {
+ const SwTableNode *pTblNd = pNd->GetTableNode();
+ ULONG nTblEnd = pTblNd->EndOfSectionIndex();
+
+ if( nTblEnd+1 == nEnd )
+ {
+ // Tabelle
+ eType = HTML_FRMTYPE_TABLE;
+ }
+ else if( nTblEnd+2 == nEnd )
+ {
+ // Tabelle mit Unterschrft
+ eType = HTML_FRMTYPE_TABLE_CAP;
+ }
+ }
+ else if( pNd->IsTxtNode() )
+ {
+ const SwTxtNode *pTxtNd = pNd->GetTxtNode();
+
+ BOOL bEmpty = FALSE;
+ if( nStt==nEnd-1 && !pTxtNd->Len() )
+ {
+ // leerer Rahmen? Nur wenn kein Rahmen am
+ // Text- oder Start-Node verankert ist.
+ bEmpty = TRUE;
+ if( pHTMLPosFlyFrms )
+ {
+ for( USHORT i=0; i<pHTMLPosFlyFrms->Count(); i++ )
+ {
+ ULONG nIdx = (*pHTMLPosFlyFrms)[i]
+ ->GetNdIndex().GetIndex();
+ bEmpty = (nIdx != nStt) && (nIdx != nStt-1);
+ if( !bEmpty || nIdx > nStt )
+ break;
+ }
+ }
+ }
+ if( bEmpty )
+ {
+ // leerer Rahmen
+ eType = HTML_FRMTYPE_EMPTY;
+ }
+ else if( pDoc->GetNodes()[nStt+1]->IsTableNode() )
+ {
+ const SwTableNode *pTblNd =
+ pDoc->GetNodes()[nStt+1]->GetTableNode();
+ if( pTblNd->EndOfSectionIndex()+1 == nEnd )
+ {
+ // Tabelle mit Ueberschrift
+ eType = HTML_FRMTYPE_TABLE_CAP;
+ }
+ }
+ }
+ }
+ }
+
+ return eType;
+}
+
+void SwHTMLWriter::CollectFlyFrms()
+{
+ BYTE nSz = (BYTE)Min( pDoc->GetSpzFrmFmts()->Count(), USHORT(255) );
+ SwPosFlyFrms aFlyPos( nSz, nSz );
+ pDoc->GetAllFlyFmts( aFlyPos, bWriteAll ? 0 : pCurPam, TRUE );
+
+ for( USHORT i=0; i< aFlyPos.Count(); i++ )
+ {
+ const SwFrmFmt& rFrmFmt = aFlyPos[i]->GetFmt();
+ const SdrObject *pSdrObj = 0;
+ const SwPosition *pAPos;
+ const SwCntntNode *pACNd;
+ SwHTMLFrmType eType = (SwHTMLFrmType)GuessFrmType( rFrmFmt, pSdrObj );
+
+ BYTE nMode;
+ const SwFmtAnchor& rAnchor = rFrmFmt.GetAnchor();
+ SwRelationOrient eHoriRel = rFrmFmt.GetHoriOrient().GetRelationOrient();
+ switch( rAnchor.GetAnchorId() )
+ {
+ case FLY_PAGE:
+ case FLY_AT_FLY:
+ nMode = aHTMLOutFrmPageFlyTable[eType][nExportMode];
+ break;
+
+ case FLY_AT_CNTNT:
+ // Absatz-gebundene Rahmen werden nur dann vor den
+ // Absatz geschrieben, wenn der Absatz einen Abstand
+ // hat.
+ if( FRAME == eHoriRel &&
+ (pAPos = rAnchor.GetCntntAnchor()) != 0 &&
+ (pACNd = pAPos->nNode.GetNode().GetCntntNode()) != 0 )
+ {
+ const SvxLRSpaceItem& rLRItem =
+ (const SvxLRSpaceItem&)pACNd->GetAttr(RES_LR_SPACE);
+ if( rLRItem.GetTxtLeft() || rLRItem.GetRight() )
+ {
+ nMode = aHTMLOutFrmParaFrameTable[eType][nExportMode];
+ break;
+ }
+ }
+ nMode = aHTMLOutFrmParaPrtAreaTable[eType][nExportMode];
+ break;
+
+ case FLY_AUTO_CNTNT:
+ if( FRAME == eHoriRel || PRTAREA == eHoriRel )
+ nMode = aHTMLOutFrmParaPrtAreaTable[eType][nExportMode];
+ else
+ nMode = aHTMLOutFrmParaOtherTable[eType][nExportMode];
+ break;
+
+ default:
+ nMode = aHTMLOutFrmParaPrtAreaTable[eType][nExportMode];
+ break;
+ }
+
+ if( !pHTMLPosFlyFrms )
+ pHTMLPosFlyFrms = new SwHTMLPosFlyFrms;
+
+ SwHTMLPosFlyFrm *pNew =
+ new SwHTMLPosFlyFrm( *aFlyPos[i], pSdrObj, nMode );
+ pHTMLPosFlyFrms->Insert( pNew );
+ }
+}
+
+BOOL SwHTMLWriter::OutFlyFrm( ULONG nNdIdx, xub_StrLen nCntntIdx, BYTE nPos )
+{
+ BOOL bFlysLeft = FALSE; // Noch Flys an aktueller Node-Position da?
+
+ // OutFlyFrm kan rekursiv aufgerufen werden. Deshalb muss man
+ // manchmal wieder von vorne anfangen, nachdem ein Fly ausgegeben
+ // wurde.
+ BOOL bRestart = TRUE;
+ while( pHTMLPosFlyFrms && bRestart )
+ {
+ bFlysLeft = bRestart = FALSE;
+
+ // suche nach dem Anfang der FlyFrames
+ for( USHORT i=0; i<pHTMLPosFlyFrms->Count() &&
+ (*pHTMLPosFlyFrms)[i]->GetNdIndex().GetIndex() < nNdIdx; i++ )
+ ;
+ for( ; !bRestart && i < pHTMLPosFlyFrms->Count() &&
+ (*pHTMLPosFlyFrms)[i]->GetNdIndex().GetIndex() == nNdIdx; i++ )
+ {
+ SwHTMLPosFlyFrm *pPosFly = (*pHTMLPosFlyFrms)[i];
+ if( ( HTML_POS_ANY == nPos ||
+ pPosFly->GetOutPos() == nPos ) &&
+ pPosFly->GetCntntIndex() == nCntntIdx )
+ {
+ // Erst entfernen ist wichtig, weil in tieferen
+ // Rekursionen evtl. weitere Eintraege oder das
+ // ganze Array geloscht werden koennte.
+ pHTMLPosFlyFrms->Remove( i, 1 );
+ i--;
+ if( !pHTMLPosFlyFrms->Count() )
+ {
+ delete pHTMLPosFlyFrms;
+ pHTMLPosFlyFrms = 0;
+ bRestart = TRUE; // nicht wirklich, nur raus
+ // aus der Schleife
+ }
+
+ OutFrmFmt( pPosFly->GetOutMode(), pPosFly->GetFmt(),
+ pPosFly->GetSdrObject() );
+ switch( pPosFly->GetOutFn() )
+ {
+ case HTML_OUT_DIV:
+ case HTML_OUT_SPAN:
+ case HTML_OUT_MULTICOL:
+ case HTML_OUT_TBLNODE:
+ bRestart = TRUE; // Hier wird's evtl rekursiv
+ break;
+ }
+ delete pPosFly;
+ }
+ else
+ {
+ bFlysLeft = TRUE;
+ }
+ }
+ }
+
+ return bFlysLeft;
+}
+
+void SwHTMLWriter::OutFrmFmt( BYTE nMode, const SwFrmFmt& rFrmFmt,
+ const SdrObject *pSdrObject )
+{
+ BYTE nCntnrMode = SwHTMLPosFlyFrm::GetOutCntnr( nMode );
+ BYTE nOutMode = SwHTMLPosFlyFrm::GetOutFn(nMode);
+ const sal_Char *pCntnrStr = 0;
+ if( HTML_CNTNR_NONE != nCntnrMode )
+ {
+
+ if( bLFPossible && HTML_CNTNR_DIV == nCntnrMode )
+ OutNewLine();
+
+ ByteString sOut( '<' );
+ pCntnrStr = (HTML_CNTNR_DIV == nCntnrMode)
+ ? sHTML_division
+ : sHTML_span;
+ sOut += pCntnrStr;
+ ((((sOut += ' ') += sHTML_O_class) += "=\"")
+ += sCSS1_class_abs_pos) += '\"';
+ Strm() << sOut.GetBuffer();
+
+ // Fuer Nicht-Zeichenobekte eine Breite ausgeben
+ ULONG nFrmFlags = HTML_FRMOPTS_CNTNR;
+
+ // Fuer spaltige Rahmen koennen wir auch noch den Hintergrund ausgeben.
+ if( HTML_OUT_MULTICOL == nOutMode )
+ nFrmFlags |= HTML_FRMOPT_S_BACKGROUND|HTML_FRMOPT_S_BORDER;
+
+ if( IsHTMLMode( HTMLMODE_BORDER_NONE ) )
+ nFrmFlags |= HTML_FRMOPT_S_NOBORDER;
+ OutCSS1_FrmFmtOptions( rFrmFmt, nFrmFlags, pSdrObject );
+ Strm() << '>';
+
+ if( HTML_CNTNR_DIV == nCntnrMode )
+ {
+ IncIndentLevel();
+ bLFPossible = TRUE;
+ }
+ }
+
+ switch( nOutMode )
+ {
+ case HTML_OUT_TBLNODE: // OK
+ ASSERT( !pCntnrStr, "Table: Container ist hier nicht vorgesehen" );
+ OutHTML_FrmFmtTableNode( *this, rFrmFmt );
+ break;
+ case HTML_OUT_GRFNODE: // OK
+ OutHTML_FrmFmtGrfNode( *this, rFrmFmt, pCntnrStr != 0 );
+ break;
+ case HTML_OUT_OLENODE: // OK
+ OutHTML_FrmFmtOLENode( *this, rFrmFmt, pCntnrStr != 0 );
+ break;
+ case HTML_OUT_OLEGRF: // OK
+ OutHTML_FrmFmtOLENodeGrf( *this, rFrmFmt, pCntnrStr != 0 );
+ break;
+ case HTML_OUT_DIV:
+ case HTML_OUT_SPAN:
+ ASSERT( !pCntnrStr, "Div: Container ist hier nicht vorgesehen" );
+ OutHTML_FrmFmtAsDivOrSpan( *this, rFrmFmt, HTML_OUT_SPAN==nOutMode );
+ break;
+ case HTML_OUT_MULTICOL: // OK
+ OutHTML_FrmFmtAsMulticol( *this, rFrmFmt, pCntnrStr != 0 );
+ break;
+ case HTML_OUT_SPACER: // OK
+ ASSERT( !pCntnrStr, "Spacer: Container ist hier nicht vorgesehen" );
+ OutHTML_FrmFmtAsSpacer( *this, rFrmFmt );
+ break;
+ case HTML_OUT_CONTROL: // OK
+ OutHTML_DrawFrmFmtAsControl( *this,
+ (const SwDrawFrmFmt &)rFrmFmt, *pSdrObject,
+ pCntnrStr != 0 );
+ break;
+ case HTML_OUT_AMARQUEE:
+ OutHTML_FrmFmtAsMarquee( *this, rFrmFmt, *pSdrObject );
+ break;
+ case HTML_OUT_MARQUEE:
+ ASSERT( !pCntnrStr, "Marquee: Container ist hier nicht vorgesehen" );
+ OutHTML_DrawFrmFmtAsMarquee( *this,
+ (const SwDrawFrmFmt &)rFrmFmt, *pSdrObject );
+ break;
+ case HTML_OUT_GRFFRM:
+ OutHTML_FrmFmtAsImage( *this, rFrmFmt, pCntnrStr != 0 );
+ break;
+ }
+
+ if( HTML_CNTNR_DIV == nCntnrMode )
+ {
+ DecIndentLevel();
+ if( bLFPossible )
+ OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_division, FALSE );
+ bLFPossible = TRUE;
+ }
+ else if( HTML_CNTNR_SPAN == nCntnrMode )
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_span, FALSE );
+}
+
+
+void SwHTMLWriter::OutFrmFmtOptions( const SwFrmFmt &rFrmFmt,
+ const String& rAlternateTxt,
+ ByteString &rEndTags,
+ ULONG nFrmOpts )
+{
+ ByteString sOut;
+ const SfxPoolItem* pItem;
+ const SfxItemSet& rItemSet = rFrmFmt.GetAttrSet();
+
+ // Name
+ if( (nFrmOpts & (HTML_FRMOPT_ID|HTML_FRMOPT_NAME)) &&
+ rFrmFmt.GetName().Len() )
+ {
+ const sal_Char *pStr =
+ (nFrmOpts & HTML_FRMOPT_ID) ? sHTML_O_id : sHTML_O_name;
+ ((sOut += ' ') += pStr) += "=\"";
+ Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( Strm(), rFrmFmt.GetName(), eDestEnc );
+ sOut = '\"';
+ }
+
+ // ALT
+ if( (nFrmOpts & HTML_FRMOPT_ALT) && rAlternateTxt.Len() )
+ {
+ ((sOut += ' ') += sHTML_O_alt) += "=\"";
+ Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( Strm(), rAlternateTxt, eDestEnc );
+ sOut = '\"';
+ }
+
+ // ALIGN
+ const sal_Char *pStr = 0;
+ RndStdIds eAnchorId = rFrmFmt.GetAnchor().GetAnchorId();
+ if( (nFrmOpts & HTML_FRMOPT_ALIGN) &&
+ (FLY_AT_CNTNT == eAnchorId || FLY_AUTO_CNTNT == eAnchorId) )
+ {
+ // MIB 12.3.98: Ist es nicht schlauer, absatzgebundene
+ // Rahmen notfalls links auszurichten als sie
+ // zeichengebunden einzufuegen???
+ const SwFmtHoriOrient& rHoriOri = rFrmFmt.GetHoriOrient();
+ if( !(nFrmOpts & HTML_FRMOPT_S_ALIGN) ||
+ FRAME == rHoriOri.GetRelationOrient() ||
+ PRTAREA == rHoriOri.GetRelationOrient() )
+ {
+ pStr = HORI_RIGHT == rHoriOri.GetHoriOrient()
+ ? sHTML_AL_right
+ : sHTML_AL_left;
+ }
+ }
+ if( (nFrmOpts & HTML_FRMOPT_ALIGN) && !pStr &&
+ ( (nFrmOpts & HTML_FRMOPT_S_ALIGN) == 0 ||
+ FLY_IN_CNTNT == eAnchorId ) &&
+ SFX_ITEM_SET == rItemSet.GetItemState( RES_VERT_ORIENT, TRUE, &pItem ))
+ {
+ switch( ((SwFmtVertOrient*)pItem)->GetVertOrient() )
+ {
+ case VERT_LINE_TOP: pStr = sHTML_VA_top; break;
+ case VERT_CHAR_TOP:
+ case VERT_BOTTOM: pStr = sHTML_VA_texttop; break; // geht nicht
+ case VERT_LINE_CENTER:
+ case VERT_CHAR_CENTER: pStr = sHTML_VA_absmiddle; break; // geht nicht
+ case VERT_CENTER: pStr = sHTML_VA_middle; break;
+ case VERT_LINE_BOTTOM:
+ case VERT_CHAR_BOTTOM: pStr = sHTML_VA_absbottom; break; // geht nicht
+ case VERT_TOP: pStr = sHTML_VA_bottom; break;
+ }
+ }
+ if( pStr )
+ (((sOut += ' ') += sHTML_O_align) += '=') += pStr;
+
+
+ // HSPACE und VSPACE
+ Size aTwipSpc( 0, 0 );
+ if( (nFrmOpts & (HTML_FRMOPT_SPACE|HTML_FRMOPT_MARGINSIZE)) &&
+ SFX_ITEM_SET == rItemSet.GetItemState( RES_LR_SPACE, TRUE, &pItem ))
+ {
+ aTwipSpc.Width() =
+ ( ((SvxLRSpaceItem*)pItem)->GetLeft() +
+ ((SvxLRSpaceItem*)pItem)->GetRight() ) / 2;
+ nDfltLeftMargin = nDfltRightMargin = (USHORT)aTwipSpc.Width();
+ }
+ if( (nFrmOpts & (HTML_FRMOPT_SPACE|HTML_FRMOPT_MARGINSIZE)) &&
+ SFX_ITEM_SET == rItemSet.GetItemState( RES_UL_SPACE, TRUE, &pItem ))
+ {
+ aTwipSpc.Height() =
+ ( ((SvxULSpaceItem*)pItem)->GetUpper() +
+ ((SvxULSpaceItem*)pItem)->GetLower() ) / 2;
+ nDfltTopMargin = nDfltBottomMargin = (USHORT)aTwipSpc.Height();
+ }
+
+ if( (nFrmOpts & HTML_FRMOPT_SPACE) &&
+ (aTwipSpc.Width() || aTwipSpc.Height()) &&
+ Application::GetDefaultDevice() )
+ {
+ Size aPixelSpc =
+ Application::GetDefaultDevice()->LogicToPixel( aTwipSpc,
+ MapMode(MAP_TWIP) );
+ if( !aPixelSpc.Width() && aTwipSpc.Width() )
+ aPixelSpc.Width() = 1;
+ if( !aPixelSpc.Height() && aTwipSpc.Height() )
+ aPixelSpc.Height() = 1;
+
+ if( aPixelSpc.Width() )
+ {
+ (((sOut += ' ') += sHTML_O_hspace) += '=')
+ += ByteString::CreateFromInt32( aPixelSpc.Width() );
+ }
+
+ if( aPixelSpc.Height() )
+ {
+ (((sOut += ' ') += sHTML_O_vspace) += '=')
+ += ByteString::CreateFromInt32( aPixelSpc.Height() );
+ }
+ }
+
+ // Der Abstand muss bei der Groesse beruecksichtigt, wenn das entsprechende
+ // Flag gesetzt ist.
+ if( (nFrmOpts & HTML_FRMOPT_MARGINSIZE) )
+ {
+ aTwipSpc.Width() *= -2;
+ aTwipSpc.Height() *= -2;
+ }
+ else
+ {
+ aTwipSpc.Width() = 0;
+ aTwipSpc.Height() = 0;
+ }
+
+ if( !(nFrmOpts & HTML_FRMOPT_ABSSIZE) &&
+ SFX_ITEM_SET == rItemSet.GetItemState( RES_BOX, TRUE, &pItem ))
+ {
+ const SvxBoxItem* pBoxItem = (const SvxBoxItem*)pItem;
+
+ aTwipSpc.Width() += pBoxItem->CalcLineSpace( BOX_LINE_LEFT );
+ aTwipSpc.Width() += pBoxItem->CalcLineSpace( BOX_LINE_RIGHT );
+ aTwipSpc.Height() += pBoxItem->CalcLineSpace( BOX_LINE_TOP );
+ aTwipSpc.Height() += pBoxItem->CalcLineSpace( BOX_LINE_BOTTOM );
+ }
+
+ // WIDTH und/oder HEIGHT
+ // ATT_VAR_SIZE/ATT_MIN_SIZE nur ausgeben, wenn ANYSIZE gesezut ist
+ if( (nFrmOpts & HTML_FRMOPT_SIZE) &&
+ SFX_ITEM_SET == rItemSet.GetItemState( RES_FRM_SIZE, TRUE, &pItem ) &&
+ ( (nFrmOpts & HTML_FRMOPT_ANYSIZE) ||
+ ATT_FIX_SIZE == ((const SwFmtFrmSize *)pItem)->GetSizeType()) )
+ {
+ const SwFmtFrmSize *pFSItem = (const SwFmtFrmSize *)pItem;
+ BYTE nPrcWidth = pFSItem->GetWidthPercent();
+ BYTE nPrcHeight = pFSItem->GetHeightPercent();
+
+ // Groesse des Objekts Twips ohne Raender
+ Size aTwipSz( (nPrcWidth ? 0
+ : pFSItem->GetWidth()-aTwipSpc.Width()),
+ (nPrcHeight ? 0
+ : pFSItem->GetHeight()-aTwipSpc.Height()) );
+
+ ASSERT( aTwipSz.Width() >= 0 && aTwipSz.Height() >= 0,
+ "Rahmengroesse minus Abstand < 0!!!???" );
+ if( aTwipSz.Width() < 0 )
+ aTwipSz.Width() = 0;
+ if( aTwipSz.Height() < 0 )
+ aTwipSz.Height() = 0;
+
+ Size aPixelSz( 0, 0 );
+ if( (aTwipSz.Width() || aTwipSz.Height()) &&
+ Application::GetDefaultDevice() )
+ {
+ aPixelSz =
+ Application::GetDefaultDevice()->LogicToPixel( aTwipSz,
+ MapMode(MAP_TWIP) );
+ if( !aPixelSz.Width() && aTwipSz.Width() )
+ aPixelSz.Width() = 1;
+ if( !aPixelSz.Height() && aTwipSz.Height() )
+ aPixelSz.Height() = 1;
+ }
+
+ if( (nFrmOpts & HTML_FRMOPT_WIDTH) &&
+ ((nPrcWidth && nPrcWidth!=255) || aPixelSz.Width()) )
+ {
+ ((sOut += ' ') += sHTML_O_width) += '=';
+ if( nPrcWidth )
+ (sOut += ByteString::CreateFromInt32( nPrcWidth )) += '%';
+ else
+ sOut += ByteString::CreateFromInt32( aPixelSz.Width() );
+ }
+
+ if( (nFrmOpts & HTML_FRMOPT_HEIGHT) &&
+ ((nPrcHeight && nPrcHeight!=255) || aPixelSz.Height()) )
+ {
+ ((sOut += ' ') += sHTML_O_height) += '=';
+ if( nPrcHeight )
+ (sOut += ByteString::CreateFromInt32( nPrcHeight )) += '%';
+ else
+ sOut += ByteString::CreateFromInt32( aPixelSz.Height() );
+ }
+ }
+
+ if( sOut.Len() )
+ Strm() << sOut.GetBuffer();
+
+ // Umlauf fuer absatzgeb. Grafiken als <BR CLEAR=...> in den String
+ // schreiben
+ if( (nFrmOpts & HTML_FRMOPT_BRCLEAR) &&
+ (FLY_AT_CNTNT== rFrmFmt.GetAnchor().GetAnchorId() ||
+ FLY_AUTO_CNTNT== rFrmFmt.GetAnchor().GetAnchorId()) &&
+ SFX_ITEM_SET == rItemSet.GetItemState( RES_SURROUND, TRUE, &pItem ))
+ {
+ const SwFmtSurround* pSurround = (const SwFmtSurround*)pItem;
+ SwHoriOrient eHoriOri = rFrmFmt.GetHoriOrient().GetHoriOrient();
+ pStr = 0;
+ SwSurround eSurround = pSurround->GetSurround();
+ BOOL bAnchorOnly = pSurround->IsAnchorOnly();
+ switch( eHoriOri )
+ {
+ case HORI_RIGHT:
+ {
+ switch( eSurround )
+ {
+ case SURROUND_NONE:
+ case SURROUND_RIGHT:
+ pStr = sHTML_AL_right;
+ break;
+ case SURROUND_LEFT:
+ case SURROUND_PARALLEL:
+ if( bAnchorOnly )
+ bClearRight = TRUE;
+ break;
+ }
+ }
+ break;
+
+ default:
+ // #67508#: If a frame is centered, it gets left aligned. This
+ // should be taken into account here, too.
+ {
+ switch( eSurround )
+ {
+ case SURROUND_NONE:
+ case SURROUND_LEFT:
+ pStr = sHTML_AL_left;
+ break;
+ case SURROUND_RIGHT:
+ case SURROUND_PARALLEL:
+ if( bAnchorOnly )
+ bClearLeft = TRUE;
+ break;
+ }
+ }
+ break;
+
+ }
+
+ if( pStr )
+ {
+ (((((((sOut = '<') += sHTML_linebreak) += ' ')
+ += sHTML_O_clear) += '=') += pStr) += '>') += rEndTags;
+ rEndTags = sOut;
+ }
+ }
+}
+
+
+Writer& OutHTML_Image( Writer& rWrt, const SwFrmFmt &rFrmFmt,
+ const String &rGrfName, const String& rAlternateTxt,
+ const Size &rRealSize, ULONG nFrmOpts,
+ const sal_Char *pMarkType,
+ const ImageMap *pAltImgMap )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // ggf. ein noch offenes Attribut voruebergehend beenden
+ if( rHTMLWrt.aINetFmts.Count() )
+ {
+ SwFmtINetFmt *pINetFmt =
+ rHTMLWrt.aINetFmts[ rHTMLWrt.aINetFmts.Count()-1 ];
+ OutHTML_INetFmt( rWrt, *pINetFmt, FALSE );
+ }
+
+ String aGrfNm( rGrfName );
+ if( !HTMLOutFuncs::PrivateURLToInternalImg(aGrfNm) )
+ aGrfNm = INetURLObject::AbsToRel( aGrfNm, INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET );
+
+ const SfxPoolItem* pItem;
+ const SfxItemSet& rItemSet = rFrmFmt.GetAttrSet();
+
+ const SwFmtURL *pURLItem = 0;
+
+ // das URL-Attribut nur beruecksichtigen, wenn keine Image-Map
+ // uebergeben wurde
+ if( !pAltImgMap &&
+ SFX_ITEM_SET == rItemSet.GetItemState( RES_URL, TRUE, &pItem ))
+ {
+ pURLItem = (const SwFmtURL *)pItem;
+ }
+
+ // Image-Map rausschreiben
+ const ImageMap *pIMap = pAltImgMap;
+ if( !pIMap && pURLItem )
+ {
+ pIMap = pURLItem->GetMap();
+ }
+
+ String aIMapName;
+ if( pIMap )
+ {
+ // den Namen eindeutig machen
+ aIMapName = pIMap->GetName();
+ String aNameBase;
+ if( aIMapName.Len() )
+ aNameBase = aIMapName;
+ else
+ aNameBase.AssignAscii( sHTML_map );
+ if( !aIMapName.Len() )
+ (aIMapName = aNameBase)
+ += String::CreateFromInt32( rHTMLWrt.nImgMapCnt );
+
+ BOOL bFound;
+ do
+ {
+ bFound = FALSE;
+ for( USHORT i=0; i<rHTMLWrt.aImgMapNames.Count(); i++ )
+ {
+ // TODO: Unicode: Comparison is case insensitive for ASCII
+ // characters only now!
+ if( aIMapName.EqualsIgnoreCaseAscii(*rHTMLWrt.aImgMapNames[i]) )
+ {
+ bFound = TRUE;
+ break;
+ }
+ }
+ if( bFound )
+ {
+ rHTMLWrt.nImgMapCnt++;
+ (aIMapName = aNameBase)
+ += String::CreateFromInt32( rHTMLWrt.nImgMapCnt );
+ }
+
+ } while( bFound );
+
+ BOOL bScale = FALSE;
+ //Size aGrfSize( rNode.GetTwipSize() );
+ Fraction aScaleX( 1, 1 );
+ Fraction aScaleY( 1, 1 );
+
+ const SwFmtFrmSize& rFrmSize = rFrmFmt.GetFrmSize();
+ const SvxBoxItem& rBox = rFrmFmt.GetBox();
+
+ if( !rFrmSize.GetWidthPercent() && rRealSize.Width() )
+ {
+ SwTwips nWidth = rFrmSize.GetWidth();
+ nWidth -= ( rBox.CalcLineSpace(BOX_LINE_LEFT) +
+ rBox.CalcLineSpace(BOX_LINE_RIGHT) );
+
+ ASSERT( nWidth>0, "Gibt es 0 twip breite Grafiken!?" );
+ if( nWidth<=0 ) // sollte nicht passieren
+ nWidth = 1;
+
+ if( rRealSize.Width() != nWidth )
+ {
+ aScaleX = Fraction( nWidth, rRealSize.Width() );
+ bScale = TRUE;
+ }
+ }
+ if( !rFrmSize.GetHeightPercent() && rRealSize.Height() )
+ {
+ SwTwips nHeight = rFrmSize.GetHeight();
+ nHeight -= ( rBox.CalcLineSpace(BOX_LINE_TOP) +
+ rBox.CalcLineSpace(BOX_LINE_BOTTOM) );
+
+ ASSERT( nHeight>0, "Gibt es 0 twip hohe Grafiken!?" );
+ if( nHeight<=0 )
+ nHeight = 1;
+
+ if( rRealSize.Height() != nHeight )
+ {
+ aScaleY = Fraction( nHeight, rRealSize.Height() );
+ bScale = TRUE;
+ }
+ }
+
+ rHTMLWrt.aImgMapNames.Insert( new String(aIMapName),
+ rHTMLWrt.aImgMapNames.Count() );
+
+ ByteString aIndMap, aIndArea;
+ const sal_Char *pLF = 0, *pIndArea = 0, *pIndMap = 0;
+#if defined(MAC) || defined(UNX)
+ sal_Char aLF[2] = "\x00";
+#endif
+
+ if( rHTMLWrt.bLFPossible )
+ {
+ rHTMLWrt.OutNewLine( TRUE );
+ rHTMLWrt.GetIndentString( aIndMap );
+ rHTMLWrt.GetIndentString( aIndArea, 1 );
+#if defined(MAC) || defined(UNX)
+ aLF[0] = SwHTMLWriter::sNewLine;
+ pLF = aLF;
+#else
+ pLF = SwHTMLWriter::sNewLine;
+#endif
+ pIndArea = aIndArea.GetBuffer();
+ pIndMap = aIndMap.GetBuffer();
+ }
+
+ if( bScale )
+ {
+ ImageMap aScaledIMap( *pIMap );
+ aScaledIMap.Scale( aScaleX, aScaleY );
+ HTMLOutFuncs::Out_ImageMap( rWrt.Strm(), aScaledIMap, aIMapName,
+ aIMapEventTable,
+ rHTMLWrt.bCfgStarBasic,
+ pLF, pIndArea, pIndMap,
+ rHTMLWrt.eDestEnc );
+ }
+ else
+ {
+ HTMLOutFuncs::Out_ImageMap( rWrt.Strm(), *pIMap, aIMapName,
+ aIMapEventTable,
+ rHTMLWrt.bCfgStarBasic,
+ pLF, pIndArea, pIndMap,
+ rHTMLWrt.eDestEnc );
+ }
+ }
+
+ // wenn meoglich vor der Grafik einen Zeilen-Umbruch ausgeben
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine( TRUE );
+
+ // Attribute die ausserhelb der Grafik geschreiben werden muessen sammeln
+ ByteString sOut;
+ ByteString aEndTags;
+
+ // implizite Sprungmarke -> <A NAME=...></A>...<IMG ...>
+ if( pMarkType && rFrmFmt.GetName().Len() )
+ rHTMLWrt.OutImplicitMark( rFrmFmt.GetName(), pMarkType );
+
+ // URL -> <A>...<IMG ... >...</A>
+ const SvxMacroItem *pMacItem = 0;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_FRMMACRO, TRUE, &pItem ))
+ pMacItem = (const SvxMacroItem *)pItem;
+
+ if( pURLItem || pMacItem )
+ {
+ String aMapURL;
+ String aName;
+ String aTarget;
+ if( pURLItem )
+ {
+ aMapURL = pURLItem->GetURL();
+ aName = pURLItem->GetName();
+ aTarget = pURLItem->GetTargetFrameName();
+ }
+ BOOL bEvents = pMacItem && pMacItem->GetMacroTable().Count();
+
+ if( aMapURL.Len() || aName.Len() || aTarget.Len() || bEvents )
+ {
+ (sOut = '<') += sHTML_anchor;
+
+ // Ein HREF nur Ausgaben, wenn es einen Link oder Makros gibt
+ if( aMapURL.Len() || bEvents )
+ {
+ ((sOut += ' ') += sHTML_O_href) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(),
+ INetURLObject::AbsToRel( aMapURL,
+ INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET ),
+ rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+
+ if( aName.Len() )
+ {
+ ((sOut += ' ') += sHTML_O_name) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aName,
+ rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+
+ if( aTarget.Len() )
+ {
+ ((sOut += ' ') += sHTML_O_target) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aTarget,
+ rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+ if( sOut.Len() )
+ {
+ rWrt.Strm() << sOut.GetBuffer();
+ sOut.Erase();
+ }
+
+ if( pMacItem )
+ {
+ const SvxMacroTableDtor& rMacTable = pMacItem->GetMacroTable();
+ if( rMacTable.Count() )
+ HTMLOutFuncs::Out_Events( rWrt.Strm(), rMacTable,
+ aAnchorEventTable,
+ rHTMLWrt.bCfgStarBasic,
+ rHTMLWrt.eDestEnc );
+ }
+
+ rWrt.Strm() << ">";
+ (((sOut = "</") += sHTML_anchor) += ">") += aEndTags;
+ aEndTags = sOut;
+ }
+ }
+
+ // Umrandung -> <FONT COLOR = ...>...<IMG ... >...</FONT>
+ USHORT nBorderWidth = 0;
+ if( (nFrmOpts & HTML_FRMOPT_BORDER) &&
+ SFX_ITEM_SET == rItemSet.GetItemState( RES_BOX, TRUE, &pItem ))
+ {
+ Size aTwipBorder( 0, 0 );
+ const SvxBoxItem* pBoxItem = (const SvxBoxItem*)pItem;
+
+ const SvxBorderLine *pColBorderLine = 0;
+ const SvxBorderLine *pBorderLine = pBoxItem->GetLeft();
+ if( pBorderLine )
+ {
+ pColBorderLine = pBorderLine;
+ aTwipBorder.Width() += pBorderLine->GetOutWidth();
+ }
+
+ pBorderLine = pBoxItem->GetRight();
+ if( pBorderLine )
+ {
+ pColBorderLine = pBorderLine;
+ aTwipBorder.Width() += pBorderLine->GetOutWidth();
+ }
+
+ pBorderLine = pBoxItem->GetTop();
+ if( pBorderLine )
+ {
+ pColBorderLine = pBorderLine;
+ aTwipBorder.Height() += pBorderLine->GetOutWidth();
+ }
+
+ pBorderLine = pBoxItem->GetBottom();
+ if( pBorderLine )
+ {
+ pColBorderLine = pBorderLine;
+ aTwipBorder.Height() += pBorderLine->GetOutWidth();
+ }
+
+ aTwipBorder.Width() /= 2;
+ aTwipBorder.Height() /= 2;
+
+ if( (aTwipBorder.Width() || aTwipBorder.Height()) &&
+ Application::GetDefaultDevice() )
+ {
+ Size aPixelBorder =
+ Application::GetDefaultDevice()->LogicToPixel( aTwipBorder,
+ MapMode(MAP_TWIP) );
+ if( !aPixelBorder.Width() && aTwipBorder.Width() )
+ aPixelBorder.Width() = 1;
+ if( !aPixelBorder.Height() && aTwipBorder.Height() )
+ aPixelBorder.Height() = 1;
+
+ if( aPixelBorder.Width() )
+ aPixelBorder.Height() = 0;
+
+ nBorderWidth =
+ (USHORT)(aPixelBorder.Width() + aPixelBorder.Height());
+ }
+
+ if( pColBorderLine )
+ {
+ sOut = '<';
+ (((sOut += sHTML_font) += ' ') += sHTML_O_color) += '=';
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_Color( rWrt.Strm(),
+ pColBorderLine->GetColor() ) << '>';
+
+ (((sOut = "</" ) += sHTML_font) += '>') += aEndTags;
+ aEndTags = sOut;
+ }
+ }
+
+ sOut = '<';
+ (((sOut += sHTML_image) += ' ') += sHTML_O_src) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aGrfNm, rHTMLWrt.eDestEnc ) << '\"';
+
+ // Events
+ sOut.Erase();
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_FRMMACRO, TRUE, &pItem ))
+ {
+ const SvxMacroTableDtor& rMacTable =
+ ((const SvxMacroItem *)pItem)->GetMacroTable();
+ if( rMacTable.Count() )
+ HTMLOutFuncs::Out_Events( rWrt.Strm(), rMacTable, aImageEventTable,
+ rHTMLWrt.bCfgStarBasic, rHTMLWrt.eDestEnc );
+ }
+
+ // ALT, ALIGN, WIDTH, HEIGHT, HSPACE, VSPACE
+ rHTMLWrt.OutFrmFmtOptions( rFrmFmt, rAlternateTxt, aEndTags, nFrmOpts );
+ if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_FLY ) )
+ rHTMLWrt.OutCSS1_FrmFmtOptions( rFrmFmt, nFrmOpts );
+
+
+ if( nFrmOpts & HTML_FRMOPT_BORDER )
+ {
+ (((sOut = ' ') += sHTML_O_border) += '=')
+ += ByteString::CreateFromInt32( nBorderWidth );
+ rWrt.Strm() << sOut.GetBuffer();
+ }
+
+ if( pURLItem && pURLItem->IsServerMap() )
+ {
+ (sOut = ' ') += sHTML_O_ismap;
+ rWrt.Strm() << sOut.GetBuffer();
+ }
+ if( aIMapName.Len() )
+ {
+ ((sOut = ' ') += sHTML_O_usemap) += "=\"#";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aIMapName, rHTMLWrt.eDestEnc ) << '\"';
+ }
+
+ rHTMLWrt.Strm() << '>';
+
+ if( aEndTags.Len() )
+ rWrt.Strm() << aEndTags.GetBuffer();
+
+ if( rHTMLWrt.aINetFmts.Count() )
+ {
+ // es ist noch ein Attribut auf dem Stack, das wieder geoeffnet
+ // werden muss
+ SwFmtINetFmt *pINetFmt =
+ rHTMLWrt.aINetFmts[ rHTMLWrt.aINetFmts.Count()-1 ];
+ OutHTML_INetFmt( rWrt, *pINetFmt, TRUE );
+ }
+
+ return rHTMLWrt;
+}
+
+Writer& OutHTML_BulletImage( Writer& rWrt,
+ const sal_Char *pTag,
+ const SvxBrushItem* pBrush,
+ String &rGrfName,
+ const Size &rSize,
+ const SwFmtVertOrient* pVertOrient )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // Wenn es ein BrushItem gibt, muss die Grafiknoch exportiert werden
+ const String *pLink = 0;
+ if( pBrush )
+ {
+ pLink = pBrush->GetGraphicLink();
+
+ // embeddete Grafik -> WriteEmbedded schreiben
+ if( !pLink )
+ {
+ const Graphic* pGrf = pBrush->GetGraphic();
+ if( pGrf )
+ {
+ // Grafik als (JPG-)File speichern
+ if( rHTMLWrt.GetOrigFileName() )
+ rGrfName = *rHTMLWrt.GetOrigFileName();
+ USHORT nErr = XOutBitmap::WriteGraphic( *pGrf, rGrfName,
+ String::CreateFromAscii("JPG"),
+ XOUTBMP_USE_GIF_IF_SENSIBLE);
+ if( !nErr )
+ {
+ rGrfName = URIHelper::SmartRelToAbs( rGrfName );
+ if( rHTMLWrt.HasCId() )
+ rHTMLWrt.MakeCIdURL( rGrfName );
+ pLink = &rGrfName;
+ }
+ else
+ {
+ rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
+ }
+ }
+ }
+ else
+ {
+ rGrfName = *pLink;
+ if( rHTMLWrt.bCfgCpyLinkedGrfs || rHTMLWrt.HasCId() )
+ {
+ rHTMLWrt.CopyLocalFileToINet( rGrfName, rHTMLWrt.HasCId() );
+ if( rHTMLWrt.HasCId() )
+ rHTMLWrt.MakeCIdURL( rGrfName );
+ pLink = &rGrfName;
+ }
+ }
+ }
+ else
+ {
+ pLink = &rGrfName;
+ }
+
+ ByteString sOut;
+ if( pTag )
+ (sOut += '<') += pTag;
+
+ if( pLink )
+ {
+ sOut += ' ';
+ String s( *pLink );
+ if( !HTMLOutFuncs::PrivateURLToInternalImg(s) )
+ s = INetURLObject::AbsToRel( s, INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET );
+ (sOut += sHTML_O_src) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), s, rHTMLWrt.eDestEnc );
+ sOut = '\"';
+
+ // Groesse des Objekts Twips ohne Raender
+ Size aPixelSz( 0, 0 );
+ if( (rSize.Width() || rSize.Height()) && Application::GetDefaultDevice() )
+ {
+ aPixelSz =
+ Application::GetDefaultDevice()->LogicToPixel( rSize,
+ MapMode(MAP_TWIP) );
+ if( !aPixelSz.Width() && rSize.Width() )
+ aPixelSz.Width() = 1;
+ if( !aPixelSz.Height() && rSize.Height() )
+ aPixelSz.Height() = 1;
+ }
+
+ if( aPixelSz.Width() )
+ (((sOut += ' ') += sHTML_O_width) += '=')
+ += ByteString::CreateFromInt32( aPixelSz.Width() );
+
+ if( aPixelSz.Height() )
+ (((sOut += ' ') += sHTML_O_height) += '=')
+ += ByteString::CreateFromInt32( aPixelSz.Height() );
+
+ if( pVertOrient )
+ {
+ const sal_Char *pStr = 0;
+ switch( pVertOrient->GetVertOrient() )
+ {
+ case VERT_LINE_TOP: pStr = sHTML_VA_top; break;
+ case VERT_CHAR_TOP:
+ case VERT_BOTTOM: pStr = sHTML_VA_texttop; break; // geht nicht
+ case VERT_LINE_CENTER:
+ case VERT_CHAR_CENTER: pStr = sHTML_VA_absmiddle; break; // geht nicht
+ case VERT_CENTER: pStr = sHTML_VA_middle; break;
+ case VERT_LINE_BOTTOM:
+ case VERT_CHAR_BOTTOM: pStr = sHTML_VA_absbottom; break; // geht nicht
+ case VERT_TOP: pStr = sHTML_VA_bottom; break;
+ }
+ if( pStr )
+ (((sOut += ' ') += sHTML_O_align) += '=') += pStr;
+ }
+ }
+
+ if( pTag )
+ sOut += '>';
+ rWrt.Strm() << sOut.GetBuffer();
+
+ return rWrt;
+}
+
+
+//-----------------------------------------------------------------------
+
+static Writer& OutHTML_FrmFmtTableNode( Writer& rWrt, const SwFrmFmt& rFrmFmt )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const SwFmtCntnt& rFlyCntnt = rFrmFmt.GetCntnt();
+ ULONG nStt = rFlyCntnt.GetCntntIdx()->GetIndex()+1;
+ ULONG nEnd = rHTMLWrt.pDoc->GetNodes()[nStt-1]->EndOfSectionIndex();
+
+ String aCaption;
+ BOOL bTopCaption = FALSE;
+
+ // Nicht const, weil GetTable spater mal nicht const ist
+ SwNode *pNd = rHTMLWrt.pDoc->GetNodes()[ nStt ];
+ SwTableNode *pTblNd = pNd->GetTableNode();
+ const SwTxtNode *pTxtNd = pNd->GetTxtNode();
+ if( !pTblNd && pTxtNd )
+ {
+ // Tabelle mit Ueberschrift
+ bTopCaption = TRUE;
+ pTblNd = rHTMLWrt.pDoc->GetNodes()[nStt+1]->GetTableNode();
+ }
+ ASSERT( pTblNd, "Rahmen enthaelt keine Tabelle" );
+ if( pTblNd )
+ {
+ ULONG nTblEnd = pTblNd->EndOfSectionIndex();
+ ASSERT( nTblEnd == nEnd - 1 ||
+ (nTblEnd == nEnd - 2 && !bTopCaption),
+ "Ungeuelter Rahmen-Inhalt fuer Tabelle" );
+
+ if( nTblEnd == nEnd - 2 )
+ pTxtNd = rHTMLWrt.pDoc->GetNodes()[nTblEnd+1]->GetTxtNode();
+ }
+ if( pTxtNd )
+ aCaption = pTxtNd->GetTxt();
+
+ {
+ HTMLSaveData aSaveData( rHTMLWrt, pTblNd->GetIndex()+1,
+ pTblNd->EndOfSectionIndex(),
+ (SwFlyFrmFmt*)&rFrmFmt );
+ OutHTML_SwTblNode( rHTMLWrt, *pTblNd, &rFrmFmt, &aCaption,
+ bTopCaption );
+ }
+
+ return rWrt;
+}
+
+static Writer & OutHTML_FrmFmtAsMulticol( Writer& rWrt,
+ const SwFrmFmt& rFrmFmt,
+ BOOL bInCntnr )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ rHTMLWrt.ChangeParaToken( 0 );
+
+ // Die aktulle <DL> beenden!
+ rHTMLWrt.OutAndSetDefList( 0 );
+
+ // als Multicol ausgeben
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine();
+
+ ByteString sOut( '<' );
+ sOut += sHTML_multicol;
+
+ const SwFmtCol& rFmtCol = rFrmFmt.GetCol();
+
+ // die Anzahl der Spalten als COLS ausgeben
+ USHORT nCols = rFmtCol.GetNumCols();
+ if( nCols )
+ (((sOut += ' ') += sHTML_O_cols) += '=')
+ += ByteString::CreateFromInt32( nCols );
+
+ // die Gutter-Breite (Minimalwert) als GUTTER
+ USHORT nGutter = rFmtCol.GetGutterWidth( TRUE );
+ if( nGutter!=USHRT_MAX )
+ {
+ if( nGutter && Application::GetDefaultDevice() )
+ {
+ nGutter = (USHORT)Application::GetDefaultDevice()
+ ->LogicToPixel( Size(nGutter,0),
+ MapMode(MAP_TWIP) ).Width();
+ }
+ (((sOut += ' ') += sHTML_O_gutter) += '=')
+ += ByteString::CreateFromInt32( nGutter );
+ }
+
+ rWrt.Strm() << sOut.GetBuffer();
+
+ // WIDTH
+ ULONG nFrmFlags = bInCntnr ? HTML_FRMOPTS_MULTICOL_CNTNR
+ : HTML_FRMOPTS_MULTICOL;
+ if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_FLY ) && !bInCntnr )
+ nFrmFlags |= HTML_FRMOPTS_MULTICOL_CSS1;
+ ByteString aEndTags;
+ rHTMLWrt.OutFrmFmtOptions( rFrmFmt, aEmptyStr, aEndTags, nFrmFlags );
+ if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_FLY ) && !bInCntnr )
+ rHTMLWrt.OutCSS1_FrmFmtOptions( rFrmFmt, nFrmFlags );
+
+ rWrt.Strm() << '>';
+
+ rHTMLWrt.bLFPossible = TRUE;
+ rHTMLWrt.IncIndentLevel(); // den Inhalt von Multicol einruecken;
+
+ const SwFmtCntnt& rFlyCntnt = rFrmFmt.GetCntnt();
+ ULONG nStt = rFlyCntnt.GetCntntIdx()->GetIndex();
+ const SwStartNode* pSttNd = rWrt.pDoc->GetNodes()[nStt]->GetStartNode();
+ ASSERT( pSttNd, "Wo ist der Start-Node" );
+
+ {
+ // in einem Block damit rechtzeitig vor dem Ende der alte Zustand
+ // wieder hergestellt wird.
+ HTMLSaveData aSaveData( rHTMLWrt, nStt+1,
+ pSttNd->EndOfSectionIndex(),
+ (const SwFlyFrmFmt*)&rFrmFmt );
+ rHTMLWrt.Out_SwDoc( rWrt.pCurPam );
+ }
+
+// rHTMLWrt.ChangeParaToken( 0 ); // MIB 8.7.97: Passiert jetzt in Out_SwDoc
+
+ rHTMLWrt.DecIndentLevel(); // den Inhalt von Multicol einruecken;
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_multicol, FALSE );
+ rHTMLWrt.bLFPossible = TRUE;
+
+ return rWrt;
+}
+
+static Writer& OutHTML_FrmFmtAsSpacer( Writer& rWrt, const SwFrmFmt& rFrmFmt )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // wenn meoglich vor der Grafik einen Zeilen-Umbruch ausgeben
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine( TRUE );
+
+ ByteString sOut('<');
+ ((((sOut += sHTML_spacer) += ' ') += sHTML_O_type) += '=')
+ += sHTML_SPTYPE_block;
+ rWrt.Strm() << sOut.GetBuffer();
+
+ // ALIGN, WIDTH, HEIGHT
+ ByteString aEndTags;
+ rHTMLWrt.OutFrmFmtOptions( rFrmFmt, aEmptyStr, aEndTags,
+ HTML_FRMOPTS_SPACER );
+
+ rWrt.Strm() << '>';
+ if( aEndTags.Len() )
+ rWrt.Strm() << aEndTags.GetBuffer();
+
+ return rWrt;
+}
+
+static Writer& OutHTML_FrmFmtAsDivOrSpan( Writer& rWrt,
+ const SwFrmFmt& rFrmFmt, BOOL bSpan)
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const sal_Char *pStr = 0;
+ if( !bSpan )
+ {
+ rHTMLWrt.ChangeParaToken( 0 );
+
+ // Die aktulle <DL> beenden!
+ rHTMLWrt.OutAndSetDefList( 0 );
+ pStr = sHTML_division;
+ }
+ else
+ pStr = sHTML_span;
+
+ // als DIV ausgeben
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine();
+
+ ByteString sOut( '<' );
+ sOut += pStr;
+
+ rWrt.Strm() << sOut.GetBuffer();
+ ByteString aEndTags;
+ ULONG nFrmFlags = HTML_FRMOPTS_DIV;
+ if( rHTMLWrt.IsHTMLMode( HTMLMODE_BORDER_NONE ) )
+ nFrmFlags |= HTML_FRMOPT_S_NOBORDER;
+ rHTMLWrt.OutFrmFmtOptions( rFrmFmt, aEmptyStr, aEndTags, nFrmFlags );
+ rHTMLWrt.OutCSS1_FrmFmtOptions( rFrmFmt, nFrmFlags );
+ rWrt.Strm() << '>';
+
+ rHTMLWrt.IncIndentLevel(); // den Inhalt einruecken
+ rHTMLWrt.bLFPossible = TRUE;
+
+ const SwFmtCntnt& rFlyCntnt = rFrmFmt.GetCntnt();
+ ULONG nStt = rFlyCntnt.GetCntntIdx()->GetIndex();
+
+ // Am Start-Node verankerte Rahmen-gebundene Rahmen ausgeben
+ rHTMLWrt.OutFlyFrm( nStt, 0, HTML_POS_ANY );
+
+ const SwStartNode* pSttNd = rWrt.pDoc->GetNodes()[nStt]->GetStartNode();
+ ASSERT( pSttNd, "Wo ist der Start-Node" );
+
+ {
+ // in einem Block damit rechtzeitig vor dem Ende der alte Zustand
+ // wieder hergestellt wird.
+ HTMLSaveData aSaveData( rHTMLWrt, nStt+1,
+ pSttNd->EndOfSectionIndex(),
+ (const SwFlyFrmFmt*)&rFrmFmt );
+ rHTMLWrt.Out_SwDoc( rWrt.pCurPam );
+ }
+
+ rHTMLWrt.DecIndentLevel(); // den Inhalt von Multicol einruecken;
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), pStr, FALSE );
+
+ if( aEndTags.Len() )
+ rWrt.Strm() << aEndTags.GetBuffer();
+
+ return rWrt;
+}
+
+static Writer & OutHTML_FrmFmtAsImage( Writer& rWrt, const SwFrmFmt& rFrmFmt,
+ BOOL bInCntnr )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ ImageMap aIMap;
+ Graphic aGrf( ((SwFrmFmt &)rFrmFmt).MakeGraphic( &aIMap ) );
+
+ String aGrfNm;
+ if( rHTMLWrt.GetOrigFileName() )
+ aGrfNm = *rHTMLWrt.GetOrigFileName();
+ if( aGrf.GetType() == GRAPHIC_NONE ||
+ XOutBitmap::WriteGraphic( aGrf, aGrfNm,
+ String::CreateFromAscii( "JPG" ),
+ XOUTBMP_USE_GIF_IF_POSSIBLE ) != 0 )
+ {
+ // leer oder fehlerhaft, da ist nichts auszugeben
+ rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
+ return rWrt;
+ }
+
+ aGrfNm = URIHelper::SmartRelToAbs( aGrfNm );
+ if( rHTMLWrt.HasCId() )
+ rHTMLWrt.MakeCIdURL( aGrfNm );
+ Size aSz( 0, 0 );
+ ULONG nFrmFlags = bInCntnr ? HTML_FRMOPTS_GENIMG_CNTNR
+ : HTML_FRMOPTS_GENIMG;
+ OutHTML_Image( rWrt, rFrmFmt, aGrfNm, rFrmFmt.GetName(), aSz,
+ HTML_FRMOPTS_GENIMG, pMarkToFrame,
+ aIMap.GetIMapObjectCount() ? &aIMap : 0 );
+ return rWrt;
+}
+
+
+static Writer& OutHTML_FrmFmtGrfNode( Writer& rWrt, const SwFrmFmt& rFrmFmt,
+ BOOL bInCntnr )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const SwFmtCntnt& rFlyCntnt = rFrmFmt.GetCntnt();
+ ULONG nStt = rFlyCntnt.GetCntntIdx()->GetIndex()+1;
+ SwGrfNode *pGrfNd = rHTMLWrt.pDoc->GetNodes()[ nStt ]->GetGrfNode();
+ ASSERT( pGrfNd, "Grf-Node erwartet" );
+ if( !pGrfNd )
+ return rWrt;
+
+ const SwMirrorGrf& rMirror = pGrfNd->GetSwAttrSet().GetMirrorGrf();
+
+ String aGrfNm;
+ if( !pGrfNd->IsLinkedFile() || RES_DONT_MIRROR_GRF != rMirror.GetValue() )
+ {
+ // Grafik als File-Referenz speichern (als JPEG-Grafik speichern)
+ if( rHTMLWrt.GetOrigFileName() )
+ aGrfNm = *rHTMLWrt.GetOrigFileName();
+ pGrfNd->SwapIn( TRUE );
+
+ ULONG nFlags = XOUTBMP_USE_GIF_IF_SENSIBLE;
+ switch( rMirror.GetValue() )
+ {
+ case RES_MIRROR_GRF_VERT: nFlags = XOUTBMP_MIRROR_HORZ; break;
+ case RES_MIRROR_GRF_HOR: nFlags = XOUTBMP_MIRROR_VERT; break;
+ case RES_MIRROR_GRF_BOTH:
+ nFlags = XOUTBMP_MIRROR_VERT | XOUTBMP_MIRROR_HORZ;
+ break;
+ }
+
+ Size aMM100Size;
+ const SwFmtFrmSize& rSize = rFrmFmt.GetFrmSize();
+ aMM100Size = OutputDevice::LogicToLogic( rSize.GetSize(),
+ MapMode( MAP_TWIP ), MapMode( MAP_100TH_MM ));
+
+ USHORT nErr = XOutBitmap::WriteGraphic( pGrfNd->GetGrf(), aGrfNm,
+ String::CreateFromAscii("JPG"), nFlags, &aMM100Size );
+ if( nErr ) // fehlerhaft, da ist nichts auszugeben
+ {
+ rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
+ return rWrt;
+ }
+ aGrfNm = URIHelper::SmartRelToAbs( aGrfNm );
+ }
+ else
+ {
+ pGrfNd->GetFileFilterNms( &aGrfNm, 0 );
+ if( rHTMLWrt.bCfgCpyLinkedGrfs || rHTMLWrt.HasCId() )
+ rWrt.CopyLocalFileToINet( aGrfNm, rHTMLWrt.HasCId() );
+ }
+ if( rHTMLWrt.HasCId() )
+ rHTMLWrt.MakeCIdURL( aGrfNm );
+
+ ULONG nFrmFlags = bInCntnr ? HTML_FRMOPTS_IMG_CNTNR : HTML_FRMOPTS_IMG;
+ if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_FLY ) && !bInCntnr )
+ nFrmFlags |= HTML_FRMOPTS_IMG_CSS1;
+ OutHTML_Image( rWrt, rFrmFmt, aGrfNm, pGrfNd->GetAlternateText(),
+ pGrfNd->GetTwipSize(), nFrmFlags, pMarkToGraphic );
+
+ return rWrt;
+}
+
+
+static Writer& OutHTML_FrmFmtAsMarquee( Writer& rWrt, const SwFrmFmt& rFrmFmt,
+ const SdrObject& rSdrObj )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // die Edit-Engine-Attribute des Objekts als SW-Attribute holen
+ // und als Hints einsortieren
+ const SfxItemSet& rFmtItemSet = rFrmFmt.GetAttrSet();
+ SfxItemSet aItemSet( *rFmtItemSet.GetPool(), RES_CHRATR_BEGIN,
+ RES_CHRATR_END );
+ SwHTMLWriter::GetEEAttrsFromDrwObj( aItemSet, &rSdrObj, TRUE );
+ BOOL bCfgOutStylesOld = rHTMLWrt.bCfgOutStyles;
+ rHTMLWrt.bCfgOutStyles = FALSE;
+ rHTMLWrt.bTxtAttr = TRUE;
+ rHTMLWrt.bTagOn = TRUE;
+ Out_SfxItemSet( aHTMLAttrFnTab, rWrt, aItemSet, FALSE );
+ rHTMLWrt.bTxtAttr = FALSE;
+
+ OutHTML_DrawFrmFmtAsMarquee( rHTMLWrt,
+ (const SwDrawFrmFmt &)rFrmFmt,
+ rSdrObj );
+ rHTMLWrt.bTxtAttr = TRUE;
+ rHTMLWrt.bTagOn = FALSE;
+ Out_SfxItemSet( aHTMLAttrFnTab, rWrt, aItemSet, FALSE );
+ rHTMLWrt.bTxtAttr = FALSE;
+ rHTMLWrt.bCfgOutStyles = bCfgOutStylesOld;
+
+ return rWrt;
+}
+
+//-----------------------------------------------------------------------
+
+Writer& OutHTML_HeaderFooter( Writer& rWrt, const SwFrmFmt& rFrmFmt,
+ BOOL bHeader )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // als Multicol ausgeben
+ rHTMLWrt.OutNewLine();
+ ByteString sOut( sHTML_division );
+ ((sOut += ' ') += sHTML_O_type) += '=';
+ sOut += (bHeader ? "HEADER" : "FOOTER" );
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sOut.GetBuffer() );
+
+ rHTMLWrt.IncIndentLevel(); // den Inhalt von Multicol einruecken;
+
+ // Einen Spacer fuer den Absatnd zusammenbasteln. Da durch das
+ // <DL> bzw. </DL> immer einer Absatz-Abstand entsteht, wird der
+ // ggf. abgezogen.
+ const SvxULSpaceItem& rULSpace = rFrmFmt.GetULSpace();
+ USHORT nSize = bHeader ? rULSpace.GetLower() : rULSpace.GetUpper();
+ rHTMLWrt.nHeaderFooterSpace = nSize;
+
+ ByteString aSpacer;
+ if( rHTMLWrt.IsHTMLMode(HTMLMODE_VERT_SPACER) &&
+ nSize > HTML_PARSPACE && Application::GetDefaultDevice() )
+ {
+ nSize -= HTML_PARSPACE;
+ nSize = (INT16)Application::GetDefaultDevice()
+ ->LogicToPixel( Size(nSize,0), MapMode(MAP_TWIP) ).Width();
+
+ ((((((((aSpacer = sHTML_spacer) += ' ')
+ += sHTML_O_type) += '=') += sHTML_SPTYPE_vertical) += ' ')
+ += sHTML_O_size) += '=') += ByteString::CreateFromInt32(nSize);
+ }
+
+ const SwFmtCntnt& rFlyCntnt = rFrmFmt.GetCntnt();
+ ULONG nStt = rFlyCntnt.GetCntntIdx()->GetIndex();
+ const SwStartNode* pSttNd = rWrt.pDoc->GetNodes()[nStt]->GetStartNode();
+ ASSERT( pSttNd, "Wo ist der Start-Node" );
+
+ if( !bHeader && aSpacer.Len() )
+ {
+ rHTMLWrt.OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), aSpacer.GetBuffer() );
+ }
+
+ {
+ // in einem Block damit rechtzeitig vor dem Ende der alte Zustand
+ // wieder hergestellt wird. pFlyFmt braucht hier nicht gestzt zu
+ // werden, denn PageDesc-Attribute koennen hier nicht vorkommen
+ HTMLSaveData aSaveData( rHTMLWrt, nStt+1,
+ pSttNd->EndOfSectionIndex(),
+ rHTMLWrt.GetFlyFrmFmt() );
+
+ if( bHeader )
+ rHTMLWrt.bOutHeader = TRUE;
+ else
+ rHTMLWrt.bOutFooter = TRUE;
+
+ rHTMLWrt.Out_SwDoc( rWrt.pCurPam );
+ }
+
+ if( bHeader && aSpacer.Len() )
+ {
+ rHTMLWrt.OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), aSpacer.GetBuffer() );
+ }
+
+ rHTMLWrt.DecIndentLevel(); // den Inhalt von Multicol einruecken;
+ rHTMLWrt.OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_division, FALSE );
+
+ rHTMLWrt.nHeaderFooterSpace = 0;
+
+ return rWrt;
+}
+
+
+void SwHTMLWriter::AddLinkTarget( const String& rURL )
+{
+ if( !rURL.Len() || rURL.GetChar(0) != '#' )
+ return;
+
+ xub_StrLen nLastPos, nPos = rURL.Search( cMarkSeperator );
+ if( STRING_NOTFOUND == nPos )
+ return;
+
+ while( STRING_NOTFOUND !=
+ ( nLastPos = rURL.Search( cMarkSeperator, nPos + 1 )) )
+ nPos = nLastPos;
+
+ if( nPos<2 ) // mindetsens "#a|..."
+ return;
+
+ String aURL( rURL );
+ aURL.Erase( 0, 1 );
+
+ String sCmp( aURL.Copy( nPos ) ); // nPos-1+1 (-1 wg. Erase)
+ sCmp.EraseAllChars();
+ if( !sCmp.Len() )
+ return;
+
+ sCmp.ToLowerAscii();
+
+ if( sCmp.EqualsAscii( pMarkToRegion ) ||
+ sCmp.EqualsAscii( pMarkToFrame ) ||
+ sCmp.EqualsAscii( pMarkToGraphic ) ||
+ sCmp.EqualsAscii( pMarkToOLE ) ||
+ sCmp.EqualsAscii( pMarkToTable ) )
+ {
+ // Einfach nur in einem sortierten Array merken
+ aImplicitMarks.Insert( new String( aURL ) );
+ }
+ else if( sCmp.EqualsAscii( pMarkToOutline ) )
+ {
+ // Hier brauchen wir Position und Name. Deshalb sortieren wir
+ // ein USHORT und ein String-Array selbst
+ String aOutline( aURL.Copy( 0, nPos-1 ) );
+ SwPosition aPos( *pCurPam->GetPoint() );
+ if( pDoc->GotoOutline( aPos, aOutline ) )
+ {
+ ULONG nIdx = aPos.nNode.GetIndex();
+
+ USHORT nPos=0;
+ while( nPos < aOutlineMarkPoss.Count() &&
+ aOutlineMarkPoss[nPos] < nIdx )
+ nPos++;
+
+ aOutlineMarkPoss.Insert( nIdx, nPos );
+ aOutlineMarks.Insert( new String( aURL ), nPos );
+ }
+ }
+ else if( sCmp.EqualsAscii( pMarkToText ) )
+ {
+ //
+ }
+}
+
+void SwHTMLWriter::CollectLinkTargets()
+{
+ const SwFmtINetFmt* pINetFmt;
+ const SwTxtINetFmt* pTxtAttr;
+ const SwTxtNode* pTxtNd;
+
+ USHORT n, nMaxItems = pDoc->GetAttrPool().GetItemCount( RES_TXTATR_INETFMT );
+ for( n = 0; n < nMaxItems; ++n )
+ {
+ if( 0 != (pINetFmt = (SwFmtINetFmt*)pDoc->GetAttrPool().GetItem(
+ RES_TXTATR_INETFMT, n ) ) &&
+ 0 != ( pTxtAttr = pINetFmt->GetTxtINetFmt()) &&
+ 0 != ( pTxtNd = pTxtAttr->GetpTxtNode() ) &&
+ pTxtNd->GetNodes().IsDocNodes() )
+ {
+ AddLinkTarget( pINetFmt->GetValue() );
+ }
+ }
+
+ const SwFmtURL *pURL;
+ nMaxItems = pDoc->GetAttrPool().GetItemCount( RES_URL );
+ for( n = 0; n < nMaxItems; ++n )
+ {
+ if( 0 != (pURL = (SwFmtURL*)pDoc->GetAttrPool().GetItem(
+ RES_URL, n ) ) )
+ {
+ AddLinkTarget( pURL->GetURL() );
+ const ImageMap *pIMap = pURL->GetMap();
+ if( pIMap )
+ {
+ for( USHORT i=0; i<pIMap->GetIMapObjectCount(); i++ )
+ {
+ const IMapObject* pObj = pIMap->GetIMapObject( i );
+ if( pObj )
+ {
+ AddLinkTarget( pObj->GetURL() );
+ }
+ }
+ }
+ }
+ }
+}
+
+//-----------------------------------------------------------------------
+
+SwHTMLPosFlyFrm::SwHTMLPosFlyFrm( const SwPosFlyFrm& rPosFly,
+ const SdrObject *pSdrObj,
+ BYTE nOutMode ) :
+ pFrmFmt( &rPosFly.GetFmt() ),
+ pSdrObject( pSdrObj ),
+ pNdIdx( new SwNodeIndex( rPosFly.GetNdIndex() ) ),
+ nOrdNum( rPosFly.GetOrdNum() ),
+ nCntntIdx( 0 ),
+ nOutputMode( nOutMode )
+{
+ const SwFmtAnchor& rAnchor = rPosFly.GetFmt().GetAnchor();
+ if( FLY_AUTO_CNTNT==rAnchor.GetAnchorId() &&
+ HTML_POS_INSIDE == GetOutPos() )
+ {
+ // Auto-gebundene Rahmen werden ein Zeichen weiter hinten
+ // ausgegeben, weil dann die Positionierung mit Netscape
+ // uebereinstimmt.
+ ASSERT( rAnchor.GetCntntAnchor(), "Keine Anker-Position?" );
+ if( rAnchor.GetCntntAnchor() )
+ {
+ nCntntIdx = rAnchor.GetCntntAnchor()->nContent.GetIndex();
+ SwRelationOrient eHoriRel = rPosFly.GetFmt().GetHoriOrient().
+ GetRelationOrient();
+ if( FRAME == eHoriRel || PRTAREA == eHoriRel )
+ {
+ const SwCntntNode *pCNd = pNdIdx->GetNode().GetCntntNode();
+ ASSERT( pCNd, "Kein Content-Node an PaM-Position" );
+ if( pCNd && nCntntIdx < pCNd->Len() )
+ nCntntIdx++;
+ }
+ }
+ }
+}
+
+BOOL SwHTMLPosFlyFrm::operator<( const SwHTMLPosFlyFrm& rFrm ) const
+{
+ if( pNdIdx->GetIndex() == rFrm.pNdIdx->GetIndex() )
+ {
+ if( nCntntIdx == rFrm.nCntntIdx )
+ {
+ if( GetOutPos() == rFrm.GetOutPos() )
+ return nOrdNum < rFrm.nOrdNum;
+ else
+ return GetOutPos() < rFrm.GetOutPos();
+ }
+ else
+ return nCntntIdx < rFrm.nCntntIdx;
+ }
+ else
+ return pNdIdx->GetIndex() < rFrm.pNdIdx->GetIndex();
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmlfly.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.81 2000/09/18 16:04:44 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.80 2000/08/18 13:03:15 jp
+ don't export escaped URLs
+
+ Revision 1.79 2000/06/26 12:55:05 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.78 2000/06/26 09:52:01 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.77 2000/05/15 16:35:52 jp
+ Changes for Unicode
+
+ Revision 1.76 2000/04/28 14:29:11 mib
+ unicode
+
+ Revision 1.75 2000/04/10 12:20:56 mib
+ unicode
+
+ Revision 1.74 2000/02/11 14:36:57 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.73 1999/09/21 09:49:42 mib
+ multiple text encodings
+
+ Revision 1.72 1999/07/09 10:40:20 MIB
+ #67508#: <BR CLEAR> for Frames that are centered
+
+
+ Rev 1.71 09 Jul 1999 12:40:20 MIB
+ #67508#: <BR CLEAR> for Frames that are centered
+
+ Rev 1.70 16 Jun 1999 19:48:10 JP
+ Change interface of base class Writer
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmlfly.hxx b/sw/source/filter/html/htmlfly.hxx
new file mode 100644
index 000000000000..3b8c2346f81c
--- /dev/null
+++ b/sw/source/filter/html/htmlfly.hxx
@@ -0,0 +1,175 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlfly.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _HTMLFLY_HXX
+#define _HTMLFLY_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+#ifndef _SVARRAY_H
+#include <svtools/svarray.hxx>
+#endif
+
+class SdrObject;
+class SwFrmFmt;
+class SwNodeIndex;
+class SwPosFlyFrm;
+
+// ACHTUNG: Die Werte dieses Enumgs gehen direkt in die
+// Augabe Tabelle!!!
+enum SwHTMLFrmType
+{
+ HTML_FRMTYPE_TABLE,
+ HTML_FRMTYPE_TABLE_CAP,
+ HTML_FRMTYPE_MULTICOL,
+ HTML_FRMTYPE_EMPTY,
+ HTML_FRMTYPE_TEXT,
+ HTML_FRMTYPE_GRF,
+ HTML_FRMTYPE_PLUGIN,
+ HTML_FRMTYPE_APPLET,
+ HTML_FRMTYPE_IFRAME,
+ HTML_FRMTYPE_OLE,
+ HTML_FRMTYPE_MARQUEE,
+ HTML_FRMTYPE_CONTROL,
+ HTML_FRMTYPE_DRAW,
+ HTML_FRMTYPE_END
+};
+
+#define HTML_OUT_TBLNODE 0x00
+#define HTML_OUT_GRFNODE 0x01
+#define HTML_OUT_OLENODE 0x02
+#define HTML_OUT_DIV 0x03
+#define HTML_OUT_MULTICOL 0x04
+#define HTML_OUT_SPACER 0x05
+#define HTML_OUT_CONTROL 0x06
+#define HTML_OUT_AMARQUEE 0x07
+#define HTML_OUT_MARQUEE 0x08
+#define HTML_OUT_GRFFRM 0x09
+#define HTML_OUT_OLEGRF 0x0a
+#define HTML_OUT_SPAN 0x0b
+#define HTML_OUT_MASK 0x0f
+
+#define HTML_POS_PREFIX 0x00
+#define HTML_POS_BEFORE 0x10
+#define HTML_POS_INSIDE 0x20
+#define HTML_POS_ANY 0x30
+#define HTML_POS_MASK 0x30
+
+#define HTML_CNTNR_NONE 0x00
+#define HTML_CNTNR_SPAN 0x40
+#define HTML_CNTNR_DIV 0x80
+#define HTML_CNTNR_MASK 0xc0
+
+
+const USHORT MAX_FRMTYPES = HTML_FRMTYPE_END;
+const USHORT MAX_BROWSERS = 5;
+
+extern BYTE aHTMLOutFrmPageFlyTable[MAX_FRMTYPES][MAX_BROWSERS];
+extern BYTE aHTMLOutFrmParaFrameTable[MAX_FRMTYPES][MAX_BROWSERS];
+extern BYTE aHTMLOutFrmParaPrtAreaTable[MAX_FRMTYPES][MAX_BROWSERS];
+extern BYTE aHTMLOutFrmParaOtherTable[MAX_FRMTYPES][MAX_BROWSERS];
+extern BYTE aHTMLOutFrmAsCharTable[MAX_FRMTYPES][MAX_BROWSERS];
+
+class SwHTMLPosFlyFrm
+{
+ const SwFrmFmt *pFrmFmt; // der Rahmen
+ const SdrObject *pSdrObject; // ggf. Sdr-Objekt
+ SwNodeIndex *pNdIdx; // Node-Index
+ UINT32 nOrdNum; // Aus SwPosFlyFrm
+ xub_StrLen nCntntIdx; // seine Position im Content
+ BYTE nOutputMode; // Ausgabe-Infos
+
+public:
+
+ SwHTMLPosFlyFrm( const SwPosFlyFrm& rPosFly,
+ const SdrObject *pSdrObj, BYTE nOutMode );
+
+ BOOL operator==( const SwHTMLPosFlyFrm& ) const { return FALSE; }
+ BOOL operator<( const SwHTMLPosFlyFrm& ) const;
+
+ const SwFrmFmt& GetFmt() const { return *pFrmFmt; }
+ const SdrObject *GetSdrObject() const { return pSdrObject; }
+
+ const SwNodeIndex& GetNdIndex() const { return *pNdIdx; }
+
+ xub_StrLen GetCntntIndex() const { return nCntntIdx; }
+
+ BYTE GetOutMode() const { return nOutputMode; }
+
+ static BYTE GetOutFn( BYTE nMode ) { return nMode & HTML_OUT_MASK; }
+ static BYTE GetOutPos( BYTE nMode ) { return nMode & HTML_POS_MASK; }
+ static BYTE GetOutCntnr( BYTE nMode ) { return nMode & HTML_CNTNR_MASK; }
+
+ BYTE GetOutFn() const { return nOutputMode & HTML_OUT_MASK; }
+ BYTE GetOutPos() const { return nOutputMode & HTML_POS_MASK; }
+ BYTE GetOutCntnr() const { return nOutputMode & HTML_CNTNR_MASK; }
+};
+
+typedef SwHTMLPosFlyFrm *SwHTMLPosFlyFrmPtr;
+SV_DECL_PTRARR_SORT( SwHTMLPosFlyFrms, SwHTMLPosFlyFrmPtr, 10, 10 )
+
+
+#endif
diff --git a/sw/source/filter/html/htmlflyt.cxx b/sw/source/filter/html/htmlflyt.cxx
new file mode 100644
index 000000000000..e174f6be41b9
--- /dev/null
+++ b/sw/source/filter/html/htmlflyt.cxx
@@ -0,0 +1,673 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlflyt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "htmlfly.hxx"
+
+#define TE(t,p,c) (BYTE)( HTML_OUT_##t | HTML_POS_##p | HTML_CNTNR_##c )
+
+BYTE aHTMLOutFrmPageFlyTable[MAX_FRMTYPES][MAX_BROWSERS] =
+{
+ {
+ // Textrahmen mit Tabelle
+ TE(TBLNODE, BEFORE, NONE), // HTML 3.2
+ TE(DIV, PREFIX, NONE), // IE 4
+ TE(TBLNODE, BEFORE, NONE), // Netscape 3
+ TE(DIV, PREFIX, NONE), // SW
+ TE(DIV, PREFIX, NONE) // Netscape 4!
+ },
+ {
+ // Textrahmen mit Tabelle und Ueberschrift
+ TE(TBLNODE, BEFORE, NONE), // HTML 3.2
+ TE(DIV, PREFIX, NONE), // IE 4
+ TE(TBLNODE, BEFORE, NONE), // Netscape 3
+ TE(DIV, PREFIX, NONE), // SW
+ TE(DIV, PREFIX, NONE) // Netscape 4
+ },
+ {
+ // spaltiger Rahmen
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(GRFFRM, PREFIX, NONE), // IE 4
+ TE(MULTICOL,BEFORE, NONE), // Netscape 3
+ TE(MULTICOL,PREFIX, NONE), // SW
+ TE(MULTICOL,PREFIX, DIV) // Netscape 4
+ },
+ {
+ // leerer Textreahmen
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(DIV, PREFIX, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(DIV, PREFIX, NONE), // SW
+ TE(DIV, PREFIX, NONE) // Netscape 4
+ },
+ {
+ // sonstiger Textreahmen
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(DIV, PREFIX, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(DIV, PREFIX, NONE), // SW
+ TE(DIV, PREFIX, NONE) // Netscape 4
+ },
+ {
+ // Grafik-Node
+ TE(GRFNODE, INSIDE, NONE), // HTML 3.2
+ TE(GRFNODE, PREFIX, NONE), // IE 4
+ TE(GRFNODE, INSIDE, NONE), // Netscape 3
+ TE(GRFNODE, PREFIX, NONE), // SW
+ TE(GRFNODE, PREFIX, SPAN) // Netscape 4
+ },
+ {
+ // Plugin
+ TE(OLENODE, INSIDE, NONE), // HTML 3.2
+ TE(OLENODE, PREFIX, NONE), // IE 4
+ TE(OLENODE, INSIDE, NONE), // Netscape 3
+ TE(OLENODE, PREFIX, NONE), // SW
+ TE(OLENODE, PREFIX, SPAN) // Netscape 4
+ },
+ {
+ // Applet
+ TE(OLENODE, INSIDE, NONE), // HTML 3.2
+ TE(OLENODE, PREFIX, NONE), // IE 4
+ TE(OLENODE, INSIDE, NONE), // Netscape 3
+ TE(OLENODE, PREFIX, NONE), // SW
+ TE(OLENODE, PREFIX, SPAN) // Netscape 4
+ },
+ {
+ // Floating-Frame
+ TE(OLEGRF, INSIDE, NONE), // HTML 3.2
+ TE(OLENODE, PREFIX, NONE), // IE 4
+ TE(OLEGRF, INSIDE, NONE), // Netscape 3
+ TE(OLENODE, PREFIX, NONE), // SW
+ TE(OLEGRF, PREFIX, SPAN) // Netscape 4
+ },
+ {
+ // sonstige OLE-Objekte
+ TE(OLEGRF, INSIDE, NONE), // HTML 3.2
+ TE(OLEGRF, PREFIX, NONE), // IE 4
+ TE(OLEGRF, INSIDE, NONE), // Netscape 3
+ TE(OLEGRF, PREFIX, NONE), // SW
+ TE(OLEGRF, PREFIX, SPAN) // Netscape 4
+ },
+ {
+ // Laufschrift
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(AMARQUEE,PREFIX, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(AMARQUEE,PREFIX, NONE), // SW
+ TE(GRFFRM, PREFIX, SPAN) // Netscape 4
+ },
+ {
+ // Controls
+ TE(CONTROL, INSIDE, NONE), // HTML 3.2
+ TE(CONTROL, PREFIX, NONE), // IE 4
+ TE(CONTROL, INSIDE, NONE), // Netscape 3
+ TE(CONTROL, PREFIX, NONE), // SW
+ // Netscape schaltet FORM bei Controls in abs.-pos. SPAN aus.
+ TE(CONTROL, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // sonstige Zeichen-Objekte
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(GRFFRM, PREFIX, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(GRFFRM, PREFIX, NONE), // SW
+ TE(GRFFRM, PREFIX, SPAN) // Netscape 4
+ }
+};
+
+BYTE aHTMLOutFrmParaFrameTable[MAX_FRMTYPES][MAX_BROWSERS] =
+{
+ {
+ // Textrahmen mit Tabelle
+ TE(TBLNODE, BEFORE, NONE), // HTML 3.2
+ TE(TBLNODE, BEFORE, NONE), // IE 4
+ TE(TBLNODE, BEFORE, NONE), // Netscape 3
+ TE(TBLNODE, BEFORE, NONE), // SW
+ TE(TBLNODE, BEFORE, NONE) // Netscape 4
+ },
+ {
+ // Textrahmen mit Tabelle und Ueberschrift
+ TE(TBLNODE, BEFORE, NONE), // HTML 3.2
+ TE(DIV, BEFORE, NONE), // IE 4
+ TE(TBLNODE, BEFORE, NONE), // Netscape 3
+ TE(DIV, BEFORE, NONE), // SW
+ TE(TBLNODE, BEFORE, NONE) // Netscape 4
+ },
+ {
+ // spaltiger Rahmen
+ TE(GRFFRM, BEFORE, NONE), // HTML 3.2
+ TE(GRFFRM, BEFORE, NONE), // IE 4
+ TE(MULTICOL,BEFORE, NONE), // Netscape 3
+ TE(MULTICOL,BEFORE, NONE), // SW
+ TE(MULTICOL,BEFORE, DIV) // Netscape 4
+ },
+ {
+ // leerer Textreahmen
+ TE(GRFFRM, BEFORE, NONE), // HTML 3.2
+ TE(DIV, BEFORE, NONE), // IE 4
+ TE(SPACER, BEFORE, NONE), // Netscape 3
+ TE(SPACER, BEFORE, NONE), // SW
+ TE(SPACER, BEFORE, NONE) // Netscape 4
+ },
+ {
+ // sonstiger Textreahmen
+ TE(GRFFRM, BEFORE, NONE), // HTML 3.2
+ TE(DIV, BEFORE, NONE), // IE 4
+ TE(GRFFRM, BEFORE, NONE), // Netscape 3
+ TE(DIV, BEFORE, NONE), // SW
+ TE(DIV, BEFORE, NONE) // Netscape 4
+ },
+ {
+ // Grafik-Node
+ TE(GRFNODE, BEFORE, NONE), // HTML 3.2
+ TE(GRFNODE, BEFORE, NONE), // IE 4
+ TE(GRFNODE, BEFORE, NONE), // Netscape 3
+ TE(GRFNODE, BEFORE, NONE), // SW
+ TE(GRFNODE, BEFORE, NONE) // Netscape 4
+ },
+ {
+ // Plugin
+ TE(OLENODE, BEFORE, NONE), // HTML 3.2
+ TE(OLENODE, BEFORE, NONE), // IE 4
+ TE(OLENODE, BEFORE, NONE), // Netscape 3
+ TE(OLENODE, BEFORE, NONE), // SW
+ TE(OLENODE, BEFORE, NONE) // Netscape 4
+ },
+ {
+ // Applet
+ TE(OLENODE, BEFORE, NONE), // HTML 3.2
+ TE(OLENODE, BEFORE, NONE), // IE 4
+ TE(OLENODE, BEFORE, NONE), // Netscape 3
+ TE(OLENODE, BEFORE, NONE), // SW
+ TE(OLENODE, BEFORE, NONE) // Netscape 4
+ },
+ {
+ // Floating-Frame
+ TE(OLEGRF, BEFORE, NONE), // HTML 3.2
+ TE(OLENODE, BEFORE, NONE), // IE 4
+ TE(OLEGRF, BEFORE, NONE), // Netscape 3
+ TE(OLENODE, BEFORE, NONE), // SW
+ TE(OLEGRF, BEFORE, NONE) // Netscape 4
+ },
+ {
+ // sonstige OLE-Objekte
+ TE(OLEGRF, BEFORE, NONE), // HTML 3.2
+ TE(OLEGRF, BEFORE, NONE), // IE 4
+ TE(OLEGRF, BEFORE, NONE), // Netscape 3
+ TE(OLEGRF, BEFORE, NONE), // SW
+ TE(OLEGRF, BEFORE, NONE) // Netscape 4
+ },
+ {
+ // Laufschrift (fuer Netscape 4 im Container, damit
+ // die LAufschrift an der richtigen Stelle erscheint
+ TE(GRFFRM, BEFORE, NONE), // HTML 3.2
+ TE(AMARQUEE,BEFORE, NONE), // IE 4
+ TE(GRFFRM, BEFORE, NONE), // Netscape 3
+ TE(AMARQUEE,BEFORE, NONE), // SW
+ TE(GRFFRM, BEFORE, NONE) // Netscape 4
+ },
+ {
+ // Controls
+ TE(CONTROL, INSIDE, NONE), // HTML 3.2
+ TE(CONTROL, BEFORE, NONE), // IE 4
+ TE(CONTROL, INSIDE, NONE), // Netscape 3
+ TE(CONTROL, BEFORE, NONE), // SW
+ // hier koennte man einen Container draus machen (Import fehlt)
+ TE(CONTROL, BEFORE, NONE) // Netscape 4
+ },
+ {
+ // sonstige Zeichen-Objekte
+ TE(GRFFRM, BEFORE, NONE), // HTML 3.2
+ TE(GRFFRM, BEFORE, NONE), // IE 4
+ TE(GRFFRM, BEFORE, NONE), // Netscape 3
+ TE(GRFFRM, BEFORE, NONE), // SW
+ TE(GRFFRM, BEFORE, NONE) // Netscape 4
+ }
+};
+
+BYTE aHTMLOutFrmParaPrtAreaTable[MAX_FRMTYPES][MAX_BROWSERS] =
+{
+ {
+ // Textrahmen mit Tabelle
+#if 0
+ TE(TBLNODE, BEFORE, NONE), // HTML 3.2
+ TE(TBLNODE, BEFORE, NONE), // IE 4
+ TE(TBLNODE, BEFORE, NONE), // Netscape 3
+ TE(TBLNODE, BEFORE, NONE), // SW
+ TE(TBLNODE, BEFORE, NONE) // Netscape 4
+#endif
+ TE(TBLNODE, INSIDE, NONE), // HTML 3.2
+ TE(TBLNODE, INSIDE, NONE), // IE 4
+ TE(TBLNODE, INSIDE, NONE), // Netscape 3
+ TE(TBLNODE, INSIDE, NONE), // SW
+ TE(TBLNODE, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Textrahmen mit Tabelle und Ueberschrift
+#if 0
+ TE(TBLNODE, BEFORE, NONE), // HTML 3.2
+ TE(DIV, BEFORE, NONE), // IE 4
+ TE(TBLNODE, BEFORE, NONE), // Netscape 3
+ TE(DIV, BEFORE, NONE), // SW
+ TE(DIV, BEFORE, NONE) // Netscape 4
+#endif
+ TE(TBLNODE, INSIDE, NONE), // HTML 3.2
+ TE(SPAN, INSIDE, NONE), // IE 4
+ TE(TBLNODE, INSIDE, NONE), // Netscape 3
+ TE(SPAN, INSIDE, NONE), // SW
+ TE(SPAN, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // spaltiger Rahmen
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(GRFFRM, INSIDE, NONE), // IE 4
+ TE(MULTICOL,INSIDE, NONE), // Netscape 3
+ TE(MULTICOL,INSIDE, NONE), // SW
+ TE(MULTICOL,INSIDE, SPAN) // Netscape 4
+ },
+ {
+ // leerer Textreahmen
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(SPAN, INSIDE, NONE), // IE 4
+ TE(SPACER, INSIDE, NONE), // Netscape 3
+ TE(SPACER, INSIDE, NONE), // SW
+ TE(SPACER, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // sonstiger Textreahmen
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(SPAN, INSIDE, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(SPAN, INSIDE, NONE), // SW
+ TE(SPAN, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Grafik-Node
+ TE(GRFNODE, INSIDE, NONE), // HTML 3.2
+ TE(GRFNODE, INSIDE, NONE), // IE 4
+ TE(GRFNODE, INSIDE, NONE), // Netscape 3
+ TE(GRFNODE, INSIDE, NONE), // SW
+ TE(GRFNODE, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Plugin
+ TE(OLENODE, INSIDE, NONE), // HTML 3.2
+ TE(OLENODE, INSIDE, NONE), // IE 4
+ TE(OLENODE, INSIDE, NONE), // Netscape 3
+ TE(OLENODE, INSIDE, NONE), // SW
+ TE(OLENODE, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Applet
+ TE(OLENODE, INSIDE, NONE), // HTML 3.2
+ TE(OLENODE, INSIDE, NONE), // IE 4
+ TE(OLENODE, INSIDE, NONE), // Netscape 3
+ TE(OLENODE, INSIDE, NONE), // SW
+ TE(OLENODE, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Floating-Frame
+ TE(OLEGRF, INSIDE, NONE), // HTML 3.2
+ TE(OLENODE, INSIDE, NONE), // IE 4
+ TE(OLEGRF, INSIDE, NONE), // Netscape 3
+ TE(OLENODE, INSIDE, NONE), // SW
+ TE(OLEGRF, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // sonstige OLE-Objekte
+ TE(OLEGRF, INSIDE, NONE), // HTML 3.2
+ TE(OLEGRF, INSIDE, NONE), // IE 4
+ TE(OLEGRF, INSIDE, NONE), // Netscape 3
+ TE(OLEGRF, INSIDE, NONE), // SW
+ TE(OLEGRF, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Laufschrift
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(AMARQUEE,INSIDE, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(AMARQUEE,INSIDE, NONE), // SW
+ TE(GRFFRM, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Controls
+ TE(CONTROL, INSIDE, NONE), // HTML 3.2
+ TE(CONTROL, INSIDE, NONE), // IE 4
+ TE(CONTROL, INSIDE, NONE), // Netscape 3
+ TE(CONTROL, INSIDE, NONE), // SW
+ // hier koennte man einen Container draus machen (Import fehlt)
+ TE(CONTROL, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // sonstige Zeichen-Objekte
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(GRFFRM, INSIDE, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(GRFFRM, INSIDE, NONE), // SW
+ TE(GRFFRM, INSIDE, NONE) // Netscape 4
+ }
+};
+
+BYTE aHTMLOutFrmParaOtherTable[MAX_FRMTYPES][MAX_BROWSERS] =
+{
+ {
+ // Textrahmen mit Tabelle
+ TE(TBLNODE, BEFORE, NONE), // HTML 3.2
+ TE(SPAN, INSIDE, NONE), // IE 4
+ TE(TBLNODE, BEFORE, NONE), // Netscape 3
+ TE(SPAN, INSIDE, NONE), // SW
+ TE(SPAN, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Textrahmen mit Tabelle und Ueberschrift
+ TE(TBLNODE, BEFORE, NONE), // HTML 3.2
+ TE(SPAN, INSIDE, NONE), // IE 4
+ TE(TBLNODE, BEFORE, NONE), // Netscape 3
+ TE(SPAN, INSIDE, NONE), // SW
+ TE(SPAN, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // spaltiger Rahmen
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(GRFFRM, INSIDE, NONE), // IE 4
+ TE(MULTICOL,BEFORE, NONE), // Netscape 3
+ TE(MULTICOL,INSIDE, NONE), // SW
+ TE(MULTICOL,INSIDE, SPAN) // Netscape 4
+ },
+ {
+ // leerer Textreahmen
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(SPAN, INSIDE, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(SPAN, INSIDE, NONE), // SW
+ TE(SPAN, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // sonstiger Textreahmen
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(SPAN, INSIDE, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(SPAN, INSIDE, NONE), // SW
+ TE(SPAN, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Grafik-Node
+ TE(GRFNODE, INSIDE, NONE), // HTML 3.2
+ TE(GRFNODE, INSIDE, NONE), // IE 4
+ TE(GRFNODE, INSIDE, NONE), // Netscape 3
+ TE(GRFNODE, INSIDE, NONE), // SW
+ TE(GRFNODE, INSIDE, SPAN) // Netscape 4
+ },
+ {
+ // Plugin
+ TE(OLENODE, INSIDE, NONE), // HTML 3.2
+ TE(OLENODE, INSIDE, NONE), // IE 4
+ TE(OLENODE, INSIDE, NONE), // Netscape 3
+ TE(OLENODE, INSIDE, NONE), // SW
+ TE(OLENODE, INSIDE, SPAN) // Netscape 4
+ },
+ {
+ // Applet
+ TE(OLENODE, INSIDE, NONE), // HTML 3.2
+ TE(OLENODE, INSIDE, NONE), // IE 4
+ TE(OLENODE, INSIDE, NONE), // Netscape 3
+ TE(OLENODE, INSIDE, NONE), // SW
+ TE(OLENODE, INSIDE, SPAN) // Netscape 4
+ },
+ {
+ // Floating-Frame
+ TE(OLEGRF, INSIDE, NONE), // HTML 3.2
+ TE(OLENODE, INSIDE, NONE), // IE 4
+ TE(OLEGRF, INSIDE, NONE), // Netscape 3
+ TE(OLENODE, INSIDE, NONE), // SW
+ TE(OLEGRF, INSIDE, SPAN) // Netscape 4
+ },
+ {
+ // sonstige OLE-Objekte
+ TE(OLEGRF, INSIDE, NONE), // HTML 3.2
+ TE(OLEGRF, INSIDE, NONE), // IE 4
+ TE(OLEGRF, INSIDE, NONE), // Netscape 3
+ TE(OLEGRF, INSIDE, NONE), // SW
+ TE(OLEGRF, INSIDE, SPAN) // Netscape 4
+ },
+ {
+ // Laufschrift
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(AMARQUEE,INSIDE, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(AMARQUEE,INSIDE, NONE), // SW
+ TE(GRFFRM, INSIDE, SPAN) // Netscape 4
+ },
+ {
+ // Controls
+ TE(CONTROL, INSIDE, NONE), // HTML 3.2
+ TE(CONTROL, INSIDE, NONE), // IE 4
+ TE(CONTROL, INSIDE, NONE), // Netscape 3
+ TE(CONTROL, INSIDE, NONE), // SW
+ // Netscape schaltet FORM bei Controls in abs.-pos. SPAN aus.
+ TE(CONTROL, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // sonstige Zeichen-Objekte
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(GRFFRM, INSIDE, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(GRFFRM, INSIDE, NONE), // SW
+ TE(GRFFRM, INSIDE, SPAN) // Netscape 4
+ }
+};
+
+BYTE aHTMLOutFrmAsCharTable[MAX_FRMTYPES][MAX_BROWSERS] =
+{
+ {
+ // Textrahmen mit Tabelle
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(GRFFRM, INSIDE, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(GRFFRM, INSIDE, NONE), // SW
+ TE(GRFFRM, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Textrahmen mit Tabelle und Ueberschrift
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(GRFFRM, INSIDE, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(GRFFRM, INSIDE, NONE), // SW
+ TE(GRFFRM, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // spaltiger Rahmen
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(GRFFRM, INSIDE, NONE), // IE 4
+ TE(MULTICOL,INSIDE, NONE), // Netscape 3
+ TE(MULTICOL,INSIDE, NONE), // SW
+ TE(MULTICOL,INSIDE, NONE) // Netscape 4
+ },
+ {
+ // leerer Textreahmen
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(GRFFRM, INSIDE, NONE), // IE 4
+ TE(SPACER, INSIDE, NONE), // Netscape 3
+ TE(SPACER, INSIDE, NONE), // SW
+ TE(SPACER, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // sonstiger Textreahmen
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(GRFFRM, INSIDE, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(GRFFRM, INSIDE, NONE), // SW
+ TE(GRFFRM, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Grafik-Node
+ TE(GRFNODE, INSIDE, NONE), // HTML 3.2
+ TE(GRFNODE, INSIDE, NONE), // IE 4
+ TE(GRFNODE, INSIDE, NONE), // Netscape 3
+ TE(GRFNODE, INSIDE, NONE), // SW
+ TE(GRFNODE, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Plugin
+ TE(OLENODE, INSIDE, NONE), // HTML 3.2
+ TE(OLENODE, INSIDE, NONE), // IE 4
+ TE(OLENODE, INSIDE, NONE), // Netscape 3
+ TE(OLENODE, INSIDE, NONE), // SW
+ TE(OLENODE, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Applet
+ TE(OLENODE, INSIDE, NONE), // HTML 3.2
+ TE(OLENODE, INSIDE, NONE), // IE 4
+ TE(OLENODE, INSIDE, NONE), // Netscape 3
+ TE(OLENODE, INSIDE, NONE), // SW
+ TE(OLENODE, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Floating-Frame
+ TE(OLEGRF, INSIDE, NONE), // HTML 3.2
+ TE(OLENODE, INSIDE, NONE), // IE 4
+ TE(OLEGRF, INSIDE, NONE), // Netscape 3
+ TE(OLENODE, INSIDE, NONE), // SW
+ TE(OLEGRF, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // sonstige OLE-Objekte
+ TE(OLEGRF, INSIDE, NONE), // HTML 3.2
+ TE(OLEGRF, INSIDE, NONE), // IE 4
+ TE(OLEGRF, INSIDE, NONE), // Netscape 3
+ TE(OLEGRF, INSIDE, NONE), // SW
+ TE(OLEGRF, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Laufschrift (kann immer als MARQUEE exportiert werden, weil
+ // der Inhalt an der richtigen Stelle erscheint
+ TE(MARQUEE, INSIDE, NONE), // HTML 3.2
+ TE(MARQUEE, INSIDE, NONE), // IE 4
+ TE(MARQUEE, INSIDE, NONE), // Netscape 3
+ TE(MARQUEE, INSIDE, NONE), // SW
+ TE(MARQUEE, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // Controls
+ TE(CONTROL, INSIDE, NONE), // HTML 3.2
+ TE(CONTROL, INSIDE, NONE), // IE 4
+ TE(CONTROL, INSIDE, NONE), // Netscape 3
+ TE(CONTROL, INSIDE, NONE), // SW
+ TE(CONTROL, INSIDE, NONE) // Netscape 4
+ },
+ {
+ // sonstige Zeichen-Objekte
+ TE(GRFFRM, INSIDE, NONE), // HTML 3.2
+ TE(GRFFRM, INSIDE, NONE), // IE 4
+ TE(GRFFRM, INSIDE, NONE), // Netscape 3
+ TE(GRFFRM, INSIDE, NONE), // SW
+ TE(GRFFRM, INSIDE, NONE) // Netscape 4
+ }
+};
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmlflyt.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.9 2000/09/18 16:04:44 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.8 1999/11/17 16:53:54 mib
+ #67938#: Export columned frames as images in MS-IE mode
+
+ Revision 1.7 1998/04/20 07:46:02 MIB
+ IE3-Export weg
+
+
+ Rev 1.6 20 Apr 1998 09:46:02 MIB
+ IE3-Export weg
+
+ Rev 1.5 02 Apr 1998 19:48:30 MIB
+ Spaltige Rahmen fuer SW ohne Container exportieren
+
+ Rev 1.4 31 Mar 1998 11:23:36 MIB
+ Keine Verschiebung von manchen am Zeichen geb. Rahmen und anderes
+
+ Rev 1.3 27 Mar 1998 17:25:50 MIB
+ direkte absolute Positionierung und Groessen-Export von Controls und Marquee
+
+ Rev 1.2 20 Mar 1998 10:50:14 MIB
+ Anpassungen an Netscape
+
+ Rev 1.1 19 Mar 1998 09:18:58 MIB
+ Rahmen-Export verbessert/aufgeraeumt
+
+ Rev 1.0 14 Mar 1998 19:05:18 MIB
+ Initial revision.
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmlform.cxx b/sw/source/filter/html/htmlform.cxx
new file mode 100644
index 000000000000..76f4b92c2001
--- /dev/null
+++ b/sw/source/filter/html/htmlform.cxx
@@ -0,0 +1,3209 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlform.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SV_SYSTEM_HXX //autogen
+#include <vcl/system.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _IMGCONS_HXX //autogen
+#include <vcl/imgcons.hxx>
+#endif
+
+#ifndef _TOOLKIT_UNOHLP_HXX
+#include <toolkit/helper/vclunohelper.hxx>
+#endif
+
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _SFX_OBJUNO_HXX //autogen
+#include <sfx2/objuno.hxx>
+#endif
+#ifndef _SFXAPP_HXX
+#include <sfx2/app.hxx>
+#endif
+
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.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_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVDOUNO_HXX //autogen
+#include <svx/svdouno.hxx>
+#endif
+#ifndef _SVX_FMGLOB_HXX
+#include <svx/fmglob.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_FORM_LISTSOURCETYPE_HPP_
+#include <com/sun/star/form/ListSourceType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_FORMBUTTONTYPE_HPP_
+#include <com/sun/star/form/FormButtonType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_FORMSUBMITENCODING_HPP_
+#include <com/sun/star/form/FormSubmitEncoding.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_FORMSUBMITMETHOD_HPP_
+#include <com/sun/star/form/FormSubmitMethod.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XDRAWPAGESUPPLIER_HPP_
+#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_XEVENTATTACHERMANAGER_HPP_
+#include <com/sun/star/script/XEventAttacherManager.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_SCRIPTEVENTDESCRIPTOR_HPP_
+#include <com/sun/star/script/ScriptEventDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_WRAPTEXTMODE_HPP_
+#include <com/sun/star/text/WrapTextMode.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_HORIORIENTATION_HPP_
+#include <com/sun/star/text/HoriOrientation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_VERTORIENTATION_HPP_
+#include <com/sun/star/text/VertOrientation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_TEXTCONTENTANCHORTYPE_HPP_
+#include <com/sun/star/text/TextContentAnchorType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXCONTAINER_HPP_
+#include <com/sun/star/container/XIndexContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XCONTROLSHAPE_HPP_
+#include <com/sun/star/drawing/XControlShape.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTEXTLAYOUTCONSTRAINS_HPP_
+#include <com/sun/star/awt/XTextLayoutConstrains.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XLAYOUTCONSTRAINS_HPP_
+#include <com/sun/star/awt/XLayoutConstrains.hpp>
+#endif
+
+#ifndef _DOC_HXX //autogen
+#include <doc.hxx>
+#endif
+#ifndef _PAM_HXX //autogen
+#include <pam.hxx>
+#endif
+#ifndef _SWTABLE_HXX //autogen
+#include <swtable.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _HTMLTBL_HXX //autogen
+#include <htmltbl.hxx>
+#endif
+
+#ifndef _SWDOCSH_HXX //autogen
+#include <docsh.hxx>
+#endif
+#ifndef _VIEWSH_HXX //autogen
+#include <viewsh.hxx>
+#endif
+
+#ifndef _UNODRAW_HXX //autogen
+#include <unodraw.hxx>
+#endif
+#ifndef _UNOOBJ_HXX //autogen
+#include <unoobj.hxx>
+#endif
+#include "dcontact.hxx"
+
+#include "swcss1.hxx"
+#include "swhtml.hxx"
+#include "htmlform.hxx"
+
+
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx> // helper for implementations
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::form;
+using namespace ::rtl;
+
+const sal_uInt16 TABINDEX_MIN = 0;
+const sal_uInt16 TABINDEX_MAX = 32767;
+
+static HTMLOptionEnum __FAR_DATA aHTMLFormMethodTable[] =
+{
+ { sHTML_METHOD_get, FormSubmitMethod_GET },
+ { sHTML_METHOD_post, FormSubmitMethod_POST },
+ { 0, 0 }
+};
+
+static HTMLOptionEnum __FAR_DATA aHTMLFormEncTypeTable[] =
+{
+ { sHTML_ET_url, FormSubmitEncoding_URL },
+ { sHTML_ET_multipart, FormSubmitEncoding_MULTIPART },
+ { sHTML_ET_text, FormSubmitEncoding_TEXT },
+ { 0, 0 }
+};
+
+enum HTMLWordWrapMode { HTML_WM_OFF, HTML_WM_HARD, HTML_WM_SOFT };
+
+static HTMLOptionEnum __FAR_DATA aHTMLTextAreaWrapTable[] =
+{
+ { sHTML_WW_off, HTML_WM_OFF },
+ { sHTML_WW_hard, HTML_WM_HARD },
+ { sHTML_WW_soft, HTML_WM_SOFT },
+ { sHTML_WW_physical,HTML_WM_HARD },
+ { sHTML_WW_virtual, HTML_WM_SOFT },
+ { 0, 0 }
+};
+
+HTMLEventType __FAR_DATA aEventTypeTable[] =
+{
+ HTML_ET_ONSUBMITFORM,
+ HTML_ET_ONRESETFORM,
+ HTML_ET_ONGETFOCUS,
+ HTML_ET_ONLOSEFOCUS,
+ HTML_ET_ONCLICK,
+ HTML_ET_ONCLICK_ITEM,
+ HTML_ET_ONCHANGE,
+ HTML_ET_ONSELECT,
+ HTML_ET_END
+};
+
+const sal_Char * __FAR_DATA aEventListenerTable[] =
+{
+ "XSubmitListener",
+ "XResetListener",
+ "XFocusListener",
+ "XFocusListener",
+ "XApproveActionListener",
+ "XItemListener",
+ "XChangeListener",
+ ""
+};
+
+const sal_Char * __FAR_DATA aEventMethodTable[] =
+{
+ "approveSubmit",
+ "approveReset",
+ "focusGained",
+ "focusLost",
+ "approveAction",
+ "itemStateChanged",
+ "changed",
+ ""
+};
+
+const sal_Char * __FAR_DATA aEventSDOptionTable[] =
+{
+ sHTML_O_SDonsubmit,
+ sHTML_O_SDonreset,
+ sHTML_O_SDonfocus,
+ sHTML_O_SDonblur,
+ sHTML_O_SDonclick,
+ sHTML_O_SDonclick,
+ sHTML_O_SDonchange,
+ 0
+};
+
+const sal_Char * __FAR_DATA aEventOptionTable[] =
+{
+ sHTML_O_onsubmit,
+ sHTML_O_onreset,
+ sHTML_O_onfocus,
+ sHTML_O_onblur,
+ sHTML_O_onclick,
+ sHTML_O_onclick,
+ sHTML_O_onchange,
+ 0
+};
+
+/* */
+
+class SwHTMLForm_Impl
+{
+ SwDocShell *pDocSh;
+
+ SvKeyValueIterator *pHeaderAttrs;
+
+ // gecachte Interfaces
+ Reference< drawing::XDrawPage > xDrawPage;
+ Reference< container::XIndexContainer > xForms;
+ Reference< drawing::XShapes > xShapes;
+ Reference< XMultiServiceFactory > xServiceFactory;
+
+ Reference< script::XEventAttacherManager > xControlEventManager;
+ Reference< script::XEventAttacherManager > xFormEventManager;
+
+ // Kontext-Informationen
+ Reference< container::XIndexContainer > xFormComps;
+ Reference< beans::XPropertySet > xFCompPropSet;
+ Reference< drawing::XShape > xShape;
+
+ String sText;
+ SvStringsDtor aStringList;
+ SvStringsDtor aValueList;
+ SvUShorts aSelectedList;
+
+public:
+
+ SwHTMLForm_Impl( SwDocShell *pDSh ) :
+ pDocSh( pDSh ),
+ pHeaderAttrs( pDSh ? pDSh->GetHeaderAttributes() : 0 )
+ {
+ ASSERT( pDocSh, "Keine DocShell, keine Controls" );
+ }
+
+ const Reference< XMultiServiceFactory >& GetServiceFactory();
+ const Reference< drawing::XDrawPage >& GetDrawPage();
+ const Reference< drawing::XShapes >& GetShapes();
+ const Reference< script::XEventAttacherManager >& GetControlEventManager();
+ const Reference< script::XEventAttacherManager >& GetFormEventManager();
+ const Reference< container::XIndexContainer >& GetForms();
+
+ const Reference< container::XIndexContainer >& GetFormComps() const
+ {
+ return xFormComps;
+ }
+
+ void SetFormComps( const Reference< container::XIndexContainer >& r )
+ {
+ xFormComps = r;
+ }
+
+ void ReleaseFormComps() { xFormComps = 0; xControlEventManager = 0; }
+
+ const Reference< beans::XPropertySet >& GetFCompPropSet() const
+ {
+ return xFCompPropSet;
+ }
+
+ void SetFCompPropSet( const Reference< beans::XPropertySet >& r )
+ {
+ xFCompPropSet = r;
+ }
+
+ void ReleaseFCompPropSet() { xFCompPropSet = 0; }
+
+ const Reference< drawing::XShape >& GetShape() const { return xShape; }
+ void SetShape( const Reference< drawing::XShape >& r ) { xShape = r; }
+ void ReleaseShape() { xShape = 0; }
+
+ String& GetText() { return sText; }
+ void EraseText() { sText = aEmptyStr; }
+
+ SvStringsDtor& GetStringList() { return aStringList; }
+ void EraseStringList()
+ {
+ aStringList.DeleteAndDestroy( 0, aStringList.Count() );
+ }
+
+ SvStringsDtor& GetValueList() { return aValueList; }
+ void EraseValueList()
+ {
+ aValueList.DeleteAndDestroy( 0, aValueList.Count() );
+ }
+
+ SvUShorts& GetSelectedList() { return aSelectedList; }
+ void EraseSelectedList()
+ {
+ aSelectedList.Remove( 0, aSelectedList.Count() );
+ }
+
+ SvKeyValueIterator *GetHeaderAttrs() const { return pHeaderAttrs; }
+};
+
+const Reference< XMultiServiceFactory >& SwHTMLForm_Impl::GetServiceFactory()
+{
+ if( !xServiceFactory.is() && pDocSh )
+ {
+ xServiceFactory =
+ Reference< XMultiServiceFactory >( pDocSh->GetBaseModel(),
+ UNO_QUERY );
+ ASSERT( xServiceFactory.is(),
+ "XServiceFactory nicht vom Model erhalten" );
+ }
+ return xServiceFactory;
+}
+
+
+const Reference< drawing::XDrawPage >& SwHTMLForm_Impl::GetDrawPage()
+{
+ if( !xDrawPage.is() && pDocSh )
+ {
+ Reference< drawing::XDrawPageSupplier > xTxtDoc( pDocSh->GetBaseModel(),
+ UNO_QUERY );
+ ASSERT( xTxtDoc.is(),
+ "drawing::XDrawPageSupplier nicht vom XModel erhalten" );
+ xDrawPage = xTxtDoc->getDrawPage();
+ ASSERT( xDrawPage.is(), "drawing::XDrawPage nicht erhalten" );
+ }
+ return xDrawPage;
+}
+
+const Reference< container::XIndexContainer >& SwHTMLForm_Impl::GetForms()
+{
+ if( !xForms.is() )
+ {
+ GetDrawPage();
+ if( xDrawPage.is() )
+ {
+ Reference< XFormsSupplier > xFormsSupplier( xDrawPage, UNO_QUERY );
+ ASSERT( xFormsSupplier.is(),
+ "XFormsSupplier nicht vom drawing::XDrawPage erhalten" );
+
+ Reference< container::XNameContainer > xNameCont =
+ xFormsSupplier->getForms();
+ xForms = Reference< container::XIndexContainer >( xNameCont,
+ UNO_QUERY );
+
+ ASSERT( xForms.is(), "XForms nicht erhalten" );
+ }
+ }
+ return xForms;
+}
+
+
+const Reference< drawing::XShapes > & SwHTMLForm_Impl::GetShapes()
+{
+ if( !xShapes.is() )
+ {
+ GetDrawPage();
+ if( xDrawPage.is() )
+ {
+ xShapes = Reference< drawing::XShapes >( xDrawPage, UNO_QUERY );
+ ASSERT( xShapes.is(),
+ "XShapes nicht vom drawing::XDrawPage erhalten" );
+ }
+ }
+ return xShapes;
+}
+
+const Reference< script::XEventAttacherManager >&
+ SwHTMLForm_Impl::GetControlEventManager()
+{
+ if( !xControlEventManager.is() && xFormComps.is() )
+ {
+ xControlEventManager =
+ Reference< script::XEventAttacherManager >( xFormComps, UNO_QUERY );
+ ASSERT( xControlEventManager.is(),
+ "Reference< XEventAttacherManager > nicht von xFormComps erhalten" );
+ }
+
+ return xControlEventManager;
+}
+
+const Reference< script::XEventAttacherManager >&
+ SwHTMLForm_Impl::GetFormEventManager()
+{
+ if( !xFormEventManager.is() )
+ {
+ GetForms();
+ if( xForms.is() )
+ {
+ xFormEventManager =
+ Reference< script::XEventAttacherManager >( xForms, UNO_QUERY );
+ ASSERT( xFormEventManager.is(),
+ "Reference< XEventAttacherManager > nicht von xForms erhalten" );
+ }
+ }
+
+ return xFormEventManager;
+}
+
+class SwHTMLImageWatcher :
+ public cppu::WeakImplHelper2< awt::XImageConsumer, XEventListener >
+{
+ Reference< drawing::XShape > xShape; // das control
+ Reference< XImageProducerSupplier > xSrc;
+ Reference< awt::XImageConsumer > xThis; // man selbst
+ sal_Bool bSetWidth;
+ sal_Bool bSetHeight;
+
+ void clear();
+
+public:
+
+ SwHTMLImageWatcher( const Reference< drawing::XShape > & rShape,
+ sal_Bool bWidth, sal_Bool bHeight );
+ ~SwHTMLImageWatcher();
+
+ // startProduction darf nicht im Konstruktor gerufen werden, weil
+ // wir und ggf. selbst zerstoeren ... Deshlab eine eigene Methode.
+ void start() { xSrc->getImageProducer()->startProduction(); }
+
+ // UNO Anbindung
+
+ // XImageConsumer
+ virtual void SAL_CALL init( sal_Int32 Width, sal_Int32 Height)
+ throw( uno::RuntimeException );
+ virtual void SAL_CALL setColorModel(
+ sal_Int16 BitCount, const uno::Sequence< sal_Int32 >& RGBAPal,
+ sal_Int32 RedMask, sal_Int32 GreenMask, sal_Int32 BlueMask,
+ sal_Int32 AlphaMask)
+ throw( uno::RuntimeException );
+ virtual void SAL_CALL setPixelsByBytes(
+ sal_Int32 X, sal_Int32 Y, sal_Int32 Width, sal_Int32 Height,
+ const uno::Sequence< sal_Int8 >& ProducerData,
+ sal_Int32 Offset, sal_Int32 Scansize)
+ throw( uno::RuntimeException );
+ virtual void SAL_CALL setPixelsByLongs(
+ sal_Int32 X, sal_Int32 Y, sal_Int32 Width, sal_Int32 Height,
+ const uno::Sequence< sal_Int32 >& ProducerData,
+ sal_Int32 Offset, sal_Int32 Scansize)
+ throw( uno::RuntimeException );
+ virtual void SAL_CALL complete(
+ sal_Int32 Status,
+ const Reference< awt::XImageProducer > & Producer)
+ throw( uno::RuntimeException );
+
+ // XEventListener
+ virtual void SAL_CALL disposing( const EventObject& Source );
+};
+
+SwHTMLImageWatcher::SwHTMLImageWatcher(
+ const Reference< drawing::XShape >& rShape,
+ sal_Bool bWidth, sal_Bool bHeight ) :
+ xShape( rShape ),
+ bSetWidth( bWidth ), bSetHeight( bHeight )
+{
+ // Die Quelle des Images merken
+ Reference< drawing::XControlShape > xControlShape( xShape, UNO_QUERY );
+ Reference< awt::XControlModel > xControlModel(
+ xControlShape->getControl() );
+ xSrc = Reference< XImageProducerSupplier >( xControlModel, UNO_QUERY );
+ ASSERT( xSrc.is(), "Kein XImageProducerSupplier" );
+
+ // Als Event-Listener am Shape anmelden, damit wir es beim dispose
+ // loslassen k”nnen ...
+ Reference< XEventListener > xEvtLstnr = (XEventListener *)this;
+ Reference< XComponent > xComp( xShape, UNO_QUERY );
+ xComp->addEventListener( xEvtLstnr );
+
+ // Zum Schluss halten wir noch eine Referenz auf uns selbst, damit
+ // wir am Leben bleiben ... (eigentlich sollte das nicht neotig sein,
+ // weil wir ja noch an diversen anderen Stellen angemeldet sind)
+ xThis = (awt::XImageConsumer *)this;
+
+ // und am ImageProducer anmelden, um die Groesse zu erehalten ...
+ xSrc->getImageProducer()->addConsumer( xThis );
+}
+
+SwHTMLImageWatcher::~SwHTMLImageWatcher()
+{
+}
+
+void SwHTMLImageWatcher::clear()
+{
+ // Am Shape als Event-Listener abmelden
+ Reference< XEventListener > xEvtLstnr = (XEventListener *)this;
+ Reference< XComponent > xComp( xShape, UNO_QUERY );
+ xComp->removeEventListener( xEvtLstnr );
+
+ // Am ImageProducer abmelden
+ xSrc->getImageProducer()->removeConsumer( xThis );
+}
+
+//------------------------------------------------------------------------------
+
+void SwHTMLImageWatcher::init( sal_Int32 Width, sal_Int32 Height )
+ throw( uno::RuntimeException )
+{
+ ASSERT( bSetWidth || bSetHeight,
+ "Breite oder Hoehe muss angepasst werden" );
+
+ // Wenn keine Breite oder Hoehe angegeben ist, ist das das init von
+ // der leeren Grafik, die angezeigt wird, bevor der Stream einer
+ // asynchron anzuzeigenden Grfik verfuegbar ist.
+ if( !Width && !Height )
+ return;
+
+ awt::Size aNewSz;
+ aNewSz.Width = Width;
+ aNewSz.Height = Height;
+ if( Application::GetDefaultDevice() )
+ {
+ Size aTmp(aNewSz.Width, aNewSz.Height);
+ aTmp = Application::GetDefaultDevice()
+ ->PixelToLogic( aTmp, MapMode( MAP_100TH_MM ) );
+ aNewSz.Width = aTmp.Width();
+ aNewSz.Height = aTmp.Height();
+ }
+
+ if( !bSetWidth || !bSetHeight )
+ {
+ awt::Size aSz( xShape->getSize() );
+ if( bSetWidth && aNewSz.Height )
+ {
+ aNewSz.Width *= aSz.Height;
+ aNewSz.Width /= aNewSz.Height;
+ aNewSz.Height = aSz.Height;
+ }
+ if( bSetHeight && aNewSz.Width )
+ {
+ aNewSz.Height *= aSz.Width;
+ aNewSz.Height /= aNewSz.Width;
+ aNewSz.Width = aSz.Width;
+ }
+ }
+ if( aNewSz.Width < MINFLY )
+ aNewSz.Width = MINFLY;
+ if( aNewSz.Height < MINFLY )
+ aNewSz.Height = MINFLY;
+
+ xShape->setSize( aNewSz );
+ if( bSetWidth )
+ {
+ // Wenn das Control in einer Tabelle verankert ist, muesen
+ // die Tabellen-Spalten neu berechnet werden
+
+ // Um an den SwXShape* zu gelangen, brauchen wir ein Interface,
+ // das auch vom SwXShape implementiert wird.
+
+ Reference< beans::XPropertySet > xPropSet( xShape, UNO_QUERY );
+
+ Reference< XUnoTunnel> xTunnel( xPropSet, UNO_QUERY );
+ SwXShape *pSwShape = xTunnel.is()
+ ? (SwXShape *)xTunnel->getSomething(SwXShape::getUnoTunnelId())
+ : 0;
+
+ ASSERT( pSwShape, "Wo ist das SW-Shape?" );
+ if( pSwShape )
+ {
+ SwFrmFmt *pFrmFmt = pSwShape->GetFrmFmt();
+
+ const SwDoc *pDoc = pFrmFmt->GetDoc();
+ const SwPosition* pAPos = pFrmFmt->GetAnchor().GetCntntAnchor();
+ SwNode *pANd;
+ SwTableNode *pTblNd;
+ if( pAPos &&
+ 0 != (pANd = pDoc->GetNodes()[pAPos->nNode]) &&
+ 0 != (pTblNd = pANd->FindTableNode()) )
+ {
+ sal_Bool bLastGrf = !pTblNd->GetTable().DecGrfsThatResize();
+ SwHTMLTableLayout *pLayout =
+ pTblNd->GetTable().GetHTMLTableLayout();
+ if( pLayout )
+ {
+ sal_uInt16 nBrowseWidth =
+ pLayout->GetBrowseWidthByTable( *pDoc );
+
+ if( nBrowseWidth )
+ pLayout->Resize( nBrowseWidth, sal_True, sal_True,
+ bLastGrf ? HTMLTABLE_RESIZE_NOW
+ : 500 );
+ }
+ }
+ }
+ }
+
+ // uns selbst abmelden und loeschen
+ clear();
+ Reference< awt::XImageConsumer > xTmp = (awt::XImageConsumer*)this;
+ xThis = 0;
+}
+
+void SwHTMLImageWatcher::setColorModel(
+ sal_Int16, const Sequence< sal_Int32 >&, sal_Int32, sal_Int32,
+ sal_Int32, sal_Int32 )
+ throw( uno::RuntimeException )
+{
+}
+
+void SwHTMLImageWatcher::setPixelsByBytes(
+ sal_Int32, sal_Int32, sal_Int32, sal_Int32,
+ const Sequence< sal_Int8 >&, sal_Int32, sal_Int32 )
+ throw( uno::RuntimeException )
+{
+}
+
+
+void SwHTMLImageWatcher::setPixelsByLongs(
+ sal_Int32, sal_Int32, sal_Int32, sal_Int32,
+ const Sequence< sal_Int32 >&, sal_Int32, sal_Int32 )
+ throw( uno::RuntimeException )
+{
+}
+
+
+void SwHTMLImageWatcher::complete( sal_Int32 Status,
+ const Reference< awt::XImageProducer >& )
+ throw( uno::RuntimeException )
+{
+ if( IMAGEERROR == Status || IMAGEABORTED == Status )
+ {
+ // uns selbst abmelden und loeschen
+ clear();
+ Reference< awt::XImageConsumer > xTmp = (awt::XImageConsumer*)this;
+ xThis = 0;
+ }
+}
+
+void SwHTMLImageWatcher::disposing(const lang::EventObject& evt)
+{
+ Reference< awt::XImageConsumer > xTmp;
+
+ // Wenn das Shape verschwindet soll muessen wir es loslassen
+ Reference< drawing::XShape > xTmpShape;
+ if( evt.Source == xShape )
+ {
+ clear();
+ xTmp = (awt::XImageConsumer*)this;
+ xThis = 0;
+ }
+}
+
+void SwHTMLParser::DeleteFormImpl()
+{
+ delete pFormImpl;
+ pFormImpl = 0;
+}
+
+static void lcl_html_setFixedFontProperty(
+ const Reference< beans::XPropertySet >& rPropSet )
+{
+ Font aFixedFont( System::GetStandardFont( STDFONT_FIXED ) );
+
+ Any aTmp;
+ aTmp <<= OUString( aFixedFont.GetName() );
+ rPropSet->setPropertyValue( OUString::createFromAscii("FontName"), aTmp );
+
+ aTmp <<= OUString( aFixedFont.GetStyleName() );
+ rPropSet->setPropertyValue( OUString::createFromAscii("FontStyleName"),
+ aTmp );
+
+ aTmp <<= (sal_Int16) aFixedFont.GetFamily();
+ rPropSet->setPropertyValue( OUString::createFromAscii("FontFamily"), aTmp );
+
+ aTmp <<= (sal_Int16) aFixedFont.GetCharSet();
+ rPropSet->setPropertyValue( OUString::createFromAscii("FontCharset"),
+ aTmp );
+
+ aTmp <<= (sal_Int16) aFixedFont.GetPitch();
+ rPropSet->setPropertyValue( OUString::createFromAscii("FontPitch"), aTmp );
+
+ float fVal(10.);
+ aTmp.setValue( &fVal, ::getCppuType(&fVal ));
+ rPropSet->setPropertyValue( OUString::createFromAscii("FontHeight"), aTmp );
+}
+
+class SwHTMLFormPendingStackData_Impl: public SwPendingStackData
+{
+ Reference< drawing::XShape > xShape;
+ Size aTextSz;
+ sal_Bool bMinWidth;
+ sal_Bool bMinHeight;
+
+public:
+
+ SwHTMLFormPendingStackData_Impl(
+ const Reference< drawing::XShape > & rShape, const Size& rTextSz,
+ sal_Bool bMinW, sal_Bool bMinH ) :
+ xShape( rShape ),
+ aTextSz( rTextSz ),
+ bMinWidth( bMinW ),
+ bMinHeight( bMinH )
+ {}
+
+ const Reference< drawing::XShape >& GetShape() const { return xShape; }
+ const Size& GetTextSize() const { return aTextSz; }
+ sal_Bool IsMinWidth() const { return bMinWidth; }
+ sal_Bool IsMinHeight() const { return bMinHeight; }
+};
+
+void SwHTMLParser::SetPendingControlSize( int nToken )
+{
+ ASSERT( pPendStack, "Wo ist der Pending Stack?" );
+ SwHTMLFormPendingStackData_Impl *pData =
+ (SwHTMLFormPendingStackData_Impl *)pPendStack->pData;
+
+ SwPendingStack* pTmp = pPendStack->pNext;
+ delete pPendStack;
+ pPendStack = pTmp;
+ ASSERT( !pPendStack, "Wo kommt der Pending-Stack her?" );
+
+ SetControlSize( pData->GetShape(), pData->GetTextSize(),
+ pData->IsMinWidth(), pData->IsMinHeight(),
+ nToken );
+ delete pData;
+}
+
+void SwHTMLParser::SetControlSize( const Reference< drawing::XShape >& rShape,
+ const Size& rTextSz,
+ sal_Bool bMinWidth,
+ sal_Bool bMinHeight,
+ int nToken )
+{
+ if( !rTextSz.Width() && !rTextSz.Height() && !bMinWidth && !bMinHeight )
+ return;
+
+ // Um an den SwXShape* zu gelangen, brauchen wir ein Interface,
+ // das auch vom SwXShape implementiert wird.
+ Reference< beans::XPropertySet > xPropSet( rShape, UNO_QUERY );
+
+ ViewShell *pVSh;
+ pDoc->GetEditShell( &pVSh );
+ if( !pVSh && !aLoadEnv.Is() )
+ {
+ // If there is no view shell by now and the doc shell is an internal
+ // one, no view shell will be created. That for, we have to do that of
+ // our own. This happens if a linked section is inserted or refreshed.
+ SwDocShell *pDocSh = pDoc->GetDocShell();
+ if( pDocSh && SFX_CREATE_MODE_INTERNAL == pDocSh->GetCreateMode() )
+ {
+ SFX_APP()->CreateViewFrame( *pDocSh, 0, sal_True );
+ CallStartAction();
+ pDoc->GetEditShell( &pVSh );
+ }
+ }
+ if( !pVSh )
+ {
+ // If there is no view shell by now, but the document is loaded
+ // asynchronous, the view shell will be created delayed because
+ // the view was locked during the call to DocumentDetected. If this
+ // is the case we wait until another call to our DataAvailable
+ // link, because the SFX calls it if it creates the view.
+ ASSERT( bDocInitalized, "DocumentDetected nocht nicht augerufen" );
+ ASSERT( !IsParserWorking() || bDataAvailableLinkSet,
+ "Keine ViewShell bei nicht gesetztem DataAvailable-Link" );
+ if( IsParserWorking() && bDocInitalized && bDataAvailableLinkSet )
+ {
+ pPendStack = new SwPendingStack( nToken, pPendStack );
+ pPendStack->pData =
+ new SwHTMLFormPendingStackData_Impl( rShape, rTextSz,
+ bMinWidth, bMinHeight );
+ SaveState( nToken );
+ eState = SVPAR_PENDING;
+ }
+
+ return;
+ }
+
+ Reference< XUnoTunnel> xTunnel( xPropSet, UNO_QUERY );
+ SwXShape *pSwShape = xTunnel.is()
+ ? (SwXShape *)xTunnel->getSomething(SwXShape::getUnoTunnelId())
+ : 0;
+
+ ASSERT( pSwShape, "Wo ist das SW-Shape?" );
+
+ // es muss ein Draw-Format sein
+ SwFrmFmt *pFrmFmt = pSwShape->GetFrmFmt();
+ ASSERT( RES_DRAWFRMFMT == pFrmFmt->Which(), "Kein DrawFrmFmt" );
+
+ // Schauen, ob es ein SdrObject dafuer gibt
+ const SdrObject *pObj = pFrmFmt->FindSdrObject();
+ ASSERT( pObj, "SdrObject nicht gefunden" );
+ ASSERT( FmFormInventor == pObj->GetObjInventor(), "falscher Inventor" );
+
+ SdrUnoObj *pFormObj = PTR_CAST( SdrUnoObj, pObj );
+ Reference< awt::XControl > xControl =
+ pFormObj->GetUnoControl( pVSh->GetWin() );
+
+ awt::Size aSz( rShape->getSize() );
+ awt::Size aNewSz( 0, 0 );
+ if( bMinWidth || bMinHeight )
+ {
+ Reference< awt::XLayoutConstrains > xLC( xControl, UNO_QUERY );
+ awt::Size aTmpSz( xLC->getPreferredSize() );
+ if( bMinWidth )
+ aNewSz.Width = aTmpSz.Width;
+ if( bMinHeight )
+ aNewSz.Height = aTmpSz.Height;
+ }
+ if( rTextSz.Width() || rTextSz.Height())
+ {
+ Reference< awt::XTextLayoutConstrains > xLC( xControl, UNO_QUERY );
+ ASSERT( xLC.is(), "kein XTextLayoutConstrains" );
+ if( xLC.is() )
+ {
+ awt::Size aTmpSz( rTextSz.Width(), rTextSz.Height() );
+ if( -1 == rTextSz.Width() )
+ {
+ aTmpSz.Width = 0;
+ aTmpSz.Height = nSelectEntryCnt;
+ }
+ aTmpSz = xLC->getMinimumSize( aTmpSz.Width, aTmpSz.Height );
+ if( rTextSz.Width() )
+ aNewSz.Width = aTmpSz.Width;
+ if( rTextSz.Height() )
+ aNewSz.Height = aTmpSz.Height;
+ }
+ }
+
+ if( Application::GetDefaultDevice() )
+ {
+ Size aTmpSz( aNewSz.Width, aNewSz.Height );
+ aTmpSz = Application::GetDefaultDevice()
+ ->PixelToLogic( aTmpSz, MapMode( MAP_100TH_MM ) );
+ aNewSz.Width = aTmpSz.Width();
+ aNewSz.Height = aTmpSz.Height();
+ }
+ if( aNewSz.Width )
+ {
+ if( aNewSz.Width < MINLAY )
+ aNewSz.Width = MINLAY;
+ aSz.Width = aNewSz.Width;
+ }
+ if( aNewSz.Height )
+ {
+ if( aNewSz.Height < MINLAY )
+ aNewSz.Height = MINLAY;
+ aSz.Height = aNewSz.Height;
+ }
+
+ rShape->setSize( aSz );
+}
+
+static void lcl_html_setEvents(
+ const Reference< script::XEventAttacherManager > & rEvtMn,
+ sal_uInt32 nPos, const SvxMacroTableDtor& rMacroTbl,
+ const SvStringsDtor& rUnoMacroTbl,
+ const SvStringsDtor& rUnoMacroParamTbl,
+ const String& rType )
+{
+ // Erstmal muss die Anzahl der Events ermittelt werden ...
+ sal_Int32 nEvents = 0;
+ for( sal_uInt16 i=0; HTML_ET_END != aEventTypeTable[i]; i++ )
+ {
+ const SvxMacro *pMacro = rMacroTbl.Get( aEventTypeTable[i] );
+ // Solange nicht alle Events implementiert sind, enthaelt die
+ // Tabelle auch Leerstrings!
+ if( pMacro && aEventListenerTable[i] )
+ nEvents++;
+ }
+ for( i=0; i< rUnoMacroTbl.Count(); i++ )
+ {
+ const String& rStr = *rUnoMacroTbl[i];
+ xub_StrLen nPos = 0;
+ if( !rStr.GetToken( 0, '-', nPos ).Len() || STRING_NOTFOUND == nPos )
+ continue;
+ if( !rStr.GetToken( 0, '-', nPos ).Len() || STRING_NOTFOUND == nPos )
+ continue;
+ if( nPos < rStr.Len() )
+ nEvents++;
+ }
+
+ if( 0==nEvents )
+ return;
+
+ Sequence<script::ScriptEventDescriptor> aDescs( nEvents );
+ script::ScriptEventDescriptor* pDescs = aDescs.getArray();
+ sal_Int32 nEvent = 0;
+
+ for( i=0; HTML_ET_END != aEventTypeTable[i]; i++ )
+ {
+ const SvxMacro *pMacro = rMacroTbl.Get( aEventTypeTable[i] );
+ if( pMacro && aEventListenerTable[i] )
+ {
+ script::ScriptEventDescriptor& rDesc = pDescs[nEvent++];
+ rDesc.ListenerType =
+ OUString::createFromAscii(aEventListenerTable[i]);
+ rDesc.EventMethod = OUString::createFromAscii(aEventMethodTable[i]);
+ rDesc.ScriptType = pMacro->GetLanguage();
+ rDesc.ScriptCode = pMacro->GetMacName();
+ }
+ }
+
+ for( i=0; i< rUnoMacroTbl.Count(); i++ )
+ {
+ const String& rStr = *rUnoMacroTbl[i];
+ xub_StrLen nPos = 0;
+ String sListener( rStr.GetToken( 0, '-', nPos ) );
+ if( !sListener.Len() || STRING_NOTFOUND == nPos )
+ continue;
+
+ String sMethod( rStr.GetToken( 0, '-', nPos ) );
+ if( !sMethod.Len() || STRING_NOTFOUND == nPos )
+ continue;
+
+ String sCode( rStr.Copy( nPos ) );
+ if( !sCode.Len() )
+ continue;
+
+ script::ScriptEventDescriptor& rDesc = pDescs[nEvent++];
+ rDesc.ListenerType = sListener;
+ rDesc.EventMethod = sMethod;
+ rDesc.ScriptType = rType;
+ rDesc.ScriptCode = sCode;
+ rDesc.AddListenerParam = OUString();
+
+ if( rUnoMacroParamTbl.Count() )
+ {
+ String sSearch( sListener );
+ sSearch += '-';
+ sSearch += sMethod;
+ sSearch += '-';
+ xub_StrLen nLen = sSearch.Len();
+ for( sal_uInt16 j=0; j < rUnoMacroParamTbl.Count(); j++ )
+ {
+ const String& rParam = *rUnoMacroParamTbl[j];
+ if( rParam.CompareTo( sSearch, nLen ) == COMPARE_EQUAL &&
+ rParam.Len() > nLen )
+ {
+ rDesc.AddListenerParam = rParam.Copy(nLen);
+ break;
+ }
+ }
+ }
+ }
+ rEvtMn->registerScriptEvents( nPos, aDescs );
+}
+
+static void lcl_html_getEvents( const String& rOption, const String& rValue,
+ SvStringsDtor& rUnoMacroTbl,
+ SvStringsDtor& rUnoMacroParamTbl )
+{
+ if( rOption.CompareIgnoreCaseToAscii( sHTML_O_sdevent,
+ sizeof(sHTML_O_sdevent)-1 ) == COMPARE_EQUAL )
+ {
+ String *pEvent = new String( rOption.Copy(sizeof(sHTML_O_sdevent)-1) );
+ *pEvent += '-';
+ *pEvent += rValue;
+ rUnoMacroTbl.Insert( pEvent, rUnoMacroTbl.Count() );
+ }
+ else if( rOption.CompareIgnoreCaseToAscii( sHTML_O_sdaddparam,
+ sizeof(sHTML_O_sdaddparam)-1 ) == COMPARE_EQUAL )
+ {
+ String *pParam =
+ new String( rOption.Copy( sizeof(sHTML_O_sdaddparam)-1 ) );
+ *pParam += '-';
+ *pParam += rValue;
+ rUnoMacroParamTbl.Insert( pParam, rUnoMacroParamTbl.Count() );
+ }
+}
+
+Reference< drawing::XShape > SwHTMLParser::InsertControl(
+ const Reference< XFormComponent > & rFComp,
+ const Reference< beans::XPropertySet > & rFCompPropSet,
+ const Size& rSize, SwVertOrient eVertOri, SwHoriOrient eHoriOri,
+ SfxItemSet& rCSS1ItemSet, SvxCSS1PropertyInfo& rCSS1PropInfo,
+ const SvxMacroTableDtor& rMacroTbl, const SvStringsDtor& rUnoMacroTbl,
+ const SvStringsDtor& rUnoMacroParamTbl, sal_Bool bSetFCompPropSet,
+ sal_Bool bHidden )
+{
+ Reference< drawing::XShape > xShape;
+
+ const Reference< container::XIndexContainer > & rFormComps =
+ pFormImpl->GetFormComps();
+ Any aAny( &rFComp, ::getCppuType( (Reference< XFormComponent>*)0 ) );
+ rFormComps->insertByIndex( rFormComps->getCount(), aAny );
+
+ if( !bHidden )
+ {
+ Any aTmp;
+ sal_uInt16 nLeftSpace = 0, nRightSpace = 0,
+ nUpperSpace = 0, nLowerSpace = 0;
+
+ const Reference< XMultiServiceFactory > & rServiceFactory =
+ pFormImpl->GetServiceFactory();
+ if( !rServiceFactory.is() )
+ return xShape;
+
+ Reference< XInterface > xCreate =
+ rServiceFactory ->createInstance(
+ OUString::createFromAscii("com.sun.star.drawing.ControlShape"));
+ if( !xCreate.is() )
+ return xShape;
+
+ xShape = Reference< drawing::XShape >( xCreate, UNO_QUERY );
+
+ DBG_ASSERT( xShape.is(), "XShape nicht erhalten" );
+ awt::Size aTmpSz;
+ aTmpSz.Width = rSize.Width();
+ aTmpSz.Height = rSize.Height();
+ xShape->setSize( aTmpSz );
+
+ Reference< beans::XPropertySet > xShapePropSet( xCreate, UNO_QUERY );
+
+ // linken/rechten Rand setzen
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_LR_SPACE, sal_True,
+ &pItem ) )
+ {
+ // Ggf. den Erstzeilen-Einzug noch plaetten
+ const SvxLRSpaceItem *pLRItem = (const SvxLRSpaceItem *)pItem;
+ SvxLRSpaceItem aLRItem( *pLRItem );
+ aLRItem.SetTxtFirstLineOfst( 0 );
+ if( rCSS1PropInfo.bLeftMargin )
+ {
+ nLeftSpace = TWIP_TO_MM100( aLRItem.GetLeft() );
+ rCSS1PropInfo.bLeftMargin = sal_False;
+ }
+ if( rCSS1PropInfo.bRightMargin )
+ {
+ nRightSpace = TWIP_TO_MM100( aLRItem.GetRight() );
+ rCSS1PropInfo.bRightMargin = sal_False;
+ }
+ rCSS1ItemSet.ClearItem( RES_LR_SPACE );
+ }
+ if( nLeftSpace || nRightSpace )
+ {
+ Any aTmp;
+ aTmp <<= (sal_Int32)nLeftSpace;
+ xShapePropSet->setPropertyValue(
+ OUString::createFromAscii( "LeftMargin" ), aTmp );
+
+ aTmp <<= (sal_Int32)nRightSpace;
+ xShapePropSet->setPropertyValue(
+ OUString::createFromAscii( "RightMargin" ), aTmp );
+ }
+
+ // oberen/unteren Rand setzen
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_UL_SPACE, sal_True,
+ &pItem ) )
+ {
+ // Ggf. den Erstzeilen-Einzug noch plaetten
+ const SvxULSpaceItem *pULItem = (const SvxULSpaceItem *)pItem;
+ if( rCSS1PropInfo.bTopMargin )
+ {
+ nUpperSpace = TWIP_TO_MM100( pULItem->GetUpper() );
+ rCSS1PropInfo.bTopMargin = sal_False;
+ }
+ if( rCSS1PropInfo.bBottomMargin )
+ {
+ nLowerSpace = TWIP_TO_MM100( pULItem->GetLower() );
+ rCSS1PropInfo.bBottomMargin = sal_False;
+ }
+
+ rCSS1ItemSet.ClearItem( RES_UL_SPACE );
+ }
+ if( nUpperSpace || nLowerSpace )
+ {
+ uno::Any aTmp;
+ aTmp <<= (sal_Int32)nUpperSpace;
+ xShapePropSet->setPropertyValue(
+ OUString::createFromAscii( "TopMargin" ), aTmp );
+
+ aTmp <<= (sal_Int32)nLowerSpace;
+ xShapePropSet->setPropertyValue(
+ OUString::createFromAscii( "BottomMargin" ), aTmp );
+ }
+
+ Reference< beans::XPropertySetInfo > xPropSetInfo =
+ rFCompPropSet->getPropertySetInfo();
+ OUString sPropName = OUString::createFromAscii( "BackgroundColor" );
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_BACKGROUND, sal_True,
+ &pItem ) &&
+ xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ const Color &rColor = ((const SvxBrushItem *)pItem)->GetColor();
+ if( !rColor.GetTransparency() )
+ {
+ aTmp <<= (sal_Int32)rColor.GetRGBColor();
+ rFCompPropSet->setPropertyValue( sPropName, aTmp );
+ }
+
+ }
+
+ sPropName = OUString::createFromAscii( "TextColor" );
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_CHRATR_COLOR, sal_True,
+ &pItem ) &&
+ xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp <<= (sal_Int32)((const SvxColorItem *)pItem)->GetValue()
+ .GetRGBColor();
+ rFCompPropSet->setPropertyValue( sPropName, aTmp );
+ }
+
+ sPropName = OUString::createFromAscii( "FontHeight" );
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_CHRATR_FONTSIZE,
+ sal_True, &pItem ) &&
+ xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ float fVal =
+ ((float)((SvxFontHeightItem *)pItem)->GetHeight()) / 20.;
+ aTmp.setValue( &fVal, ::getCppuType(&fVal));
+ rFCompPropSet->setPropertyValue( sPropName, aTmp );
+ }
+
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_CHRATR_FONT, sal_True,
+ &pItem ) )
+ {
+ const SvxFontItem *pFontItem = (SvxFontItem *)pItem;
+ sPropName = OUString::createFromAscii( "FontName" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp <<= OUString( pFontItem->GetFamilyName() );
+ rFCompPropSet->setPropertyValue( sPropName, aTmp );
+ }
+ sPropName = OUString::createFromAscii( "FontStyleName" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp <<= OUString( pFontItem->GetStyleName() );
+ rFCompPropSet->setPropertyValue( sPropName, aTmp );
+ }
+ sPropName = OUString::createFromAscii( "FontFamily" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp <<= (sal_Int16)pFontItem->GetFamily() ;
+ rFCompPropSet->setPropertyValue( sPropName, aTmp );
+ }
+ sPropName = OUString::createFromAscii( "FontCharset" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp <<= (sal_Int16)pFontItem->GetCharSet() ;
+ rFCompPropSet->setPropertyValue( sPropName, aTmp );
+ }
+ sPropName = OUString::createFromAscii( "FontPitch" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp <<= (sal_Int16)pFontItem->GetPitch() ;
+ rFCompPropSet->setPropertyValue( sPropName, aTmp );
+ }
+ }
+
+ sPropName = OUString::createFromAscii( "FontWeight" );
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_CHRATR_WEIGHT,
+ sal_True, &pItem ) &&
+ xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ float fVal = VCLUnoHelper::ConvertFontWeight(
+ ((SvxWeightItem *)pItem)->GetWeight() );
+ aTmp.setValue( &fVal, ::getCppuType(&fVal));
+ rFCompPropSet->setPropertyValue( sPropName, aTmp );
+ }
+
+ sPropName = OUString::createFromAscii( "FontSlant" );
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_CHRATR_POSTURE,
+ sal_True, &pItem ) &&
+ xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp <<= (sal_Int16)((SvxPostureItem *)pItem)->GetPosture();
+ rFCompPropSet->setPropertyValue( sPropName, aTmp );
+ }
+
+ sPropName = OUString::createFromAscii( "FontUnderline" );
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_CHRATR_UNDERLINE,
+ sal_True, &pItem ) &&
+ xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp <<= (sal_Int16)((SvxUnderlineItem *)pItem)->GetUnderline();
+ rFCompPropSet->setPropertyValue( sPropName, aTmp );
+ }
+
+ sPropName = OUString::createFromAscii( "FontStrikeout" );
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_CHRATR_CROSSEDOUT,
+ sal_True, &pItem ) &&
+ xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp <<= (sal_Int16)((SvxCrossedOutItem *)pItem)->GetStrikeout();
+ rFCompPropSet->setPropertyValue( sPropName, aTmp );
+ }
+
+ Reference< text::XTextRange > xTxtRg;
+ sal_Int16 nAnchorType = text::TextContentAnchorType_AS_CHARACTER;
+ sal_Int16 nSurround;
+ sal_Bool bSetPos = sal_False, bSetSurround = sal_False;
+ sal_Int32 nXPos, nYPos;
+ if( SVX_CSS1_POS_ABSOLUTE == rCSS1PropInfo.ePosition &&
+ SVX_CSS1_LTYPE_TWIP == rCSS1PropInfo.eLeftType &&
+ SVX_CSS1_LTYPE_TWIP == rCSS1PropInfo.eTopType )
+ {
+ const SwStartNode *pFlySttNd =
+ pDoc->GetNodes()[pPam->GetPoint()->nNode]->FindFlyStartNode();
+
+ if( pFlySttNd )
+ {
+ nAnchorType = text::TextContentAnchorType_AT_FRAME;
+ SwPaM aPaM( *pFlySttNd );
+
+ Reference< text::XText > xDummyTxtRef; // unsauber, aber laut OS geht das ...
+ xTxtRg = new SwXTextRange( aPaM, xDummyTxtRef );
+ }
+ else
+ {
+ nAnchorType = text::TextContentAnchorType_AT_PAGE;
+ }
+ nXPos = TWIP_TO_MM100( rCSS1PropInfo.nLeft ) + nLeftSpace;
+ nYPos = TWIP_TO_MM100( rCSS1PropInfo.nTop ) + nUpperSpace;
+ bSetPos = sal_True;
+
+ nSurround = text::WrapTextMode_THROUGHT;
+ bSetSurround = sal_True;
+ }
+ else if( SVX_ADJUST_LEFT == rCSS1PropInfo.eFloat ||
+ HORI_LEFT == eHoriOri )
+ {
+ nAnchorType = text::TextContentAnchorType_AT_PARAGRAPH;
+ nXPos = nLeftSpace;
+ nYPos = nUpperSpace;
+ bSetPos = sal_True;
+ nSurround = text::WrapTextMode_RIGHT;
+ bSetSurround = sal_True;
+ }
+ else if( VERT_NONE != eVertOri )
+ {
+ sal_Int16 nVertOri;
+ switch( eVertOri )
+ {
+ case VERT_NONE:
+ nVertOri = text::VertOrientation::NONE;
+ break;
+ case VERT_TOP:
+ nVertOri = text::VertOrientation::TOP;
+ break;
+ case VERT_CENTER:
+ nVertOri = text::VertOrientation::CENTER;
+ break;
+ case VERT_BOTTOM:
+ nVertOri = text::VertOrientation::BOTTOM;
+ break;
+ case VERT_CHAR_TOP:
+ nVertOri = text::VertOrientation::CHAR_TOP;
+ break;
+ case VERT_CHAR_CENTER:
+ nVertOri = text::VertOrientation::CHAR_CENTER;
+ break;
+ case VERT_CHAR_BOTTOM:
+ nVertOri = text::VertOrientation::CHAR_BOTTOM;
+ break;
+ case VERT_LINE_TOP:
+ nVertOri = text::VertOrientation::LINE_TOP;
+ break;
+ case VERT_LINE_CENTER:
+ nVertOri = text::VertOrientation::LINE_CENTER;
+ break;
+ case VERT_LINE_BOTTOM:
+ nVertOri = text::VertOrientation::LINE_BOTTOM;
+ break;
+ }
+ aTmp <<= (sal_Int16)nVertOri ;
+ xShapePropSet->setPropertyValue(
+ OUString::createFromAscii( "VertOrient" ), aTmp );
+ }
+
+ aTmp <<= (sal_Int16)nAnchorType ;
+ xShapePropSet->setPropertyValue(
+ OUString::createFromAscii( "AnchorType" ), aTmp );
+
+ if( text::TextContentAnchorType_AT_PAGE == nAnchorType )
+ {
+ aTmp <<= (sal_Int16) 1 ;
+ xShapePropSet->setPropertyValue(
+ OUString::createFromAscii( "AnchorPageNo" ), aTmp );
+ }
+ else
+ {
+ if( !xTxtRg.is() )
+ {
+ Reference< text::XText > xDummyTxtRef; // unsauber, aber laut OS geht das ...
+ xTxtRg = new SwXTextRange( *pPam, xDummyTxtRef );
+ }
+
+ aTmp.setValue( &xTxtRg,
+ ::getCppuType((Reference< text::XTextRange>*)0));
+ xShapePropSet->setPropertyValue(
+ OUString::createFromAscii( "TextRange" ), aTmp );
+ }
+
+ if( bSetPos )
+ {
+ aTmp <<= (sal_Int16)text::HoriOrientation::NONE;
+ xShapePropSet->setPropertyValue(
+ OUString::createFromAscii( "HoriOrient" ), aTmp );
+ aTmp <<= (sal_Int32)nXPos ;
+ xShapePropSet->setPropertyValue(
+ OUString::createFromAscii( "HoriOrientPosition" ), aTmp );
+
+ aTmp <<= (sal_Int16)text::VertOrientation::NONE;
+ xShapePropSet->setPropertyValue(
+ OUString::createFromAscii( "VertOrient" ), aTmp );
+ aTmp <<= (sal_Int32)nYPos ;
+ xShapePropSet->setPropertyValue(
+ OUString::createFromAscii( "VertOrientPosition" ), aTmp );
+ }
+ if( bSetSurround )
+ {
+ aTmp <<= (sal_Int16)nSurround ;
+ xShapePropSet->setPropertyValue(
+ OUString::createFromAscii( "Surround" ), aTmp );
+ }
+
+ pFormImpl->GetShapes()->add(xShape);
+
+ // Das Control-Model am Control-Shape setzen
+ Reference< drawing::XControlShape > xControlShape( xShape, UNO_QUERY );
+ Reference< awt::XControlModel > xControlModel( rFComp, UNO_QUERY );
+ xControlShape->setControl( xControlModel );
+ }
+
+ // Da beim Einfuegen der Controls der Fokus gesetzt wird, werden
+ // auch schon Fokus-Events verschickt. Damit die nicht evtl. schon
+ // vorhendene JavaSCript-Eents rufen, werden die Events nachtraeglich
+ // gesetzt.
+ if( rMacroTbl.Count() || rUnoMacroTbl.Count() )
+ {
+ lcl_html_setEvents( pFormImpl->GetControlEventManager(),
+ rFormComps->getCount() - 1,
+ rMacroTbl, rUnoMacroTbl, rUnoMacroParamTbl,
+ GetScriptTypeString(pFormImpl->GetHeaderAttrs()) );
+ }
+
+ if( bSetFCompPropSet )
+ {
+ pFormImpl->SetFCompPropSet( rFCompPropSet );
+ }
+
+ return xShape;
+}
+
+void SwHTMLParser::NewForm( sal_Bool bAppend )
+{
+ // Gibt es schon eine Form?
+ if( pFormImpl && pFormImpl->GetFormComps().is() )
+ return;
+
+ if( bAppend )
+ {
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( AM_SPACE );
+ else
+ AddParSpace();
+ }
+
+ if( !pFormImpl )
+ pFormImpl = new SwHTMLForm_Impl( pDoc->GetDocShell() );
+
+ String aAction( sBaseURL );
+ String sName, sTarget;
+ sal_uInt16 nEncType = FormSubmitEncoding_URL;
+ sal_uInt16 nMethod = FormSubmitMethod_GET;
+ SvxMacroTableDtor aMacroTbl;
+ SvStringsDtor aUnoMacroTbl;
+ SvStringsDtor aUnoMacroParamTbl;
+ SvKeyValueIterator *pHeaderAttrs = pFormImpl->GetHeaderAttrs();
+ ScriptType eDfltScriptType = GetScriptType( pHeaderAttrs );
+ const String& rDfltScriptType = GetScriptTypeString( pHeaderAttrs );
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ ScriptType eScriptType = eDfltScriptType;
+ sal_uInt16 nEvent;
+ sal_Bool bSetEvent = sal_False;
+
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ACTION:
+ aAction = pOption->GetString();
+ break;
+ case HTML_O_METHOD:
+ nMethod = pOption->GetEnum( aHTMLFormMethodTable, nMethod );
+ break;
+ case HTML_O_ENCTYPE:
+ nEncType = pOption->GetEnum( aHTMLFormEncTypeTable, nEncType );
+ break;
+ case HTML_O_TARGET:
+ sTarget = pOption->GetString();
+ break;
+ case HTML_O_NAME:
+ sName = pOption->GetString();
+ break;
+
+ case HTML_O_SDONSUBMIT:
+ eScriptType = STARBASIC;
+ case HTML_O_ONSUBMIT:
+ nEvent = HTML_ET_ONSUBMITFORM;
+ bSetEvent = sal_True;
+ break;
+
+ case HTML_O_SDONRESET:
+ eScriptType = STARBASIC;
+ case HTML_O_ONRESET:
+ nEvent = HTML_ET_ONRESETFORM;
+ bSetEvent = sal_True;
+ break;
+
+ default:
+ lcl_html_getEvents( pOption->GetTokenString(),
+ pOption->GetString(),
+ aUnoMacroTbl, aUnoMacroParamTbl );
+ break;
+ }
+
+ if( bSetEvent )
+ {
+ String sEvent( pOption->GetString() );
+ if( sEvent.Len() )
+ {
+ sEvent.ConvertLineEnd();
+ String aScriptType;
+ if( EXTENDED_STYPE==eScriptType )
+ aScriptType = rDfltScriptType;
+ aMacroTbl.Insert( nEvent, new SvxMacro( sEvent, aScriptType,
+ eScriptType ) );
+ }
+ }
+ }
+
+ const Reference< XMultiServiceFactory > & rSrvcMgr =
+ pFormImpl->GetServiceFactory();
+ if( !rSrvcMgr.is() )
+ return;
+
+ Reference< XInterface > xInt = rSrvcMgr->createInstance(
+ OUString::createFromAscii( "com.sun.star.form.component.Form" ) );
+ if( !xInt.is() )
+ return;
+
+ Reference< XForm > xForm( xInt, UNO_QUERY );
+ DBG_ASSERT( xForm.is(), "keine Form?" );
+
+ Reference< container::XIndexContainer > xFormComps( xForm, UNO_QUERY );
+ pFormImpl->SetFormComps( xFormComps );
+
+ Reference< beans::XPropertySet > xFormPropSet( xForm, UNO_QUERY );
+
+ Any aTmp;
+ aTmp <<= OUString(sName);
+ xFormPropSet->setPropertyValue( OUString::createFromAscii( "Name" ), aTmp );
+
+ if( aAction.Len() )
+ {
+ aAction = INetURLObject::RelToAbs(aAction);
+ }
+ else
+ {
+ // Bei leerer URL das Directory nehmen
+ INetURLObject aURLObj( aPathToFile );
+ aAction = aURLObj.GetPartBeforeLastName();
+ }
+ aTmp <<= OUString(aAction);
+ xFormPropSet->setPropertyValue( OUString::createFromAscii( "TargetURL" ),
+ aTmp );
+
+ FormSubmitMethod eMethod = (FormSubmitMethod)nMethod;
+ aTmp.setValue( &eMethod, ::getCppuType((const FormSubmitMethod*)0) );
+ xFormPropSet->setPropertyValue( OUString::createFromAscii( "SubmitMethod" ),
+ aTmp );
+
+ FormSubmitEncoding eEncType = (FormSubmitEncoding)nEncType;
+ aTmp.setValue( &eEncType, ::getCppuType((const FormSubmitEncoding*)0) );
+ xFormPropSet->setPropertyValue(
+ OUString::createFromAscii( "SubmitEncoding" ), aTmp );
+
+ if( sTarget.Len() )
+ {
+ aTmp <<= OUString(sTarget);
+ xFormPropSet->setPropertyValue(
+ OUString::createFromAscii( "TargetFrame" ), aTmp );
+ }
+
+ const Reference< container::XIndexContainer > & rForms =
+ pFormImpl->GetForms();
+ Any aAny( &xForm, ::getCppuType((Reference< XForm>*)0) );
+ rForms->insertByIndex( rForms->getCount(), aAny );
+ if( aMacroTbl.Count() )
+ lcl_html_setEvents( pFormImpl->GetFormEventManager(),
+ rForms->getCount() - 1,
+ aMacroTbl, aUnoMacroTbl, aUnoMacroParamTbl,
+ rDfltScriptType );
+}
+
+void SwHTMLParser::EndForm( sal_Bool bAppend )
+{
+ if( pFormImpl && pFormImpl->GetFormComps().is() )
+ {
+ if( bAppend )
+ {
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( AM_SPACE );
+ else
+ AddParSpace();
+ }
+
+ pFormImpl->ReleaseFormComps();
+ }
+}
+
+void SwHTMLParser::InsertInput()
+{
+ if( pPendStack )
+ {
+ SetPendingControlSize( HTML_INPUT );
+ return;
+ }
+
+ if( !pFormImpl || !pFormImpl->GetFormComps().is() )
+ return;
+
+ String sImgSrc, aId, aClass, aStyle, sText;
+ String sName;
+ SvxMacroTableDtor aMacroTbl;
+ SvStringsDtor aUnoMacroTbl;
+ SvStringsDtor aUnoMacroParamTbl;
+ sal_uInt16 nSize = 0;
+ sal_Int16 nMaxLen = 0;
+ sal_Int16 nChecked = STATE_NOCHECK;
+ sal_Int32 nTabIndex = TABINDEX_MAX + 1;
+ HTMLInputType eType = HTML_IT_TEXT;
+ sal_Bool bDisabled = sal_False, bValue = sal_False;
+ sal_Bool bSetGrfWidth = sal_False, bSetGrfHeight = sal_False;
+ sal_Bool bHidden = sal_False;
+ long nWidth=0, nHeight=0;
+ SwVertOrient eVertOri = VERT_TOP;
+ SwHoriOrient eHoriOri = HORI_NONE;
+ SvKeyValueIterator *pHeaderAttrs = pFormImpl->GetHeaderAttrs();
+ ScriptType eDfltScriptType = GetScriptType( pHeaderAttrs );
+ const String& rDfltScriptType = GetScriptTypeString( pHeaderAttrs );
+
+ sal_uInt16 nKeepCRLFToken = HTML_O_VALUE;
+ const HTMLOptions *pOptions = GetOptions( &nKeepCRLFToken );
+ for( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ ScriptType eScriptType = eDfltScriptType;
+ sal_uInt16 nEvent;
+ sal_Bool bSetEvent = sal_False;
+
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ case HTML_O_TYPE:
+ eType = pOption->GetInputType();
+ break;
+ case HTML_O_NAME:
+ sName = pOption->GetString();
+ break;
+ case HTML_O_VALUE:
+ sText = pOption->GetString();
+ bValue = sal_True;
+ break;
+ case HTML_O_CHECKED:
+ nChecked = STATE_CHECK;
+ break;
+ case HTML_O_DISABLED:
+ bDisabled = sal_True;
+ break;
+ case HTML_O_MAXLENGTH:
+ nMaxLen = (sal_Int16)pOption->GetNumber();
+ break;
+ case HTML_O_SIZE:
+ nSize = (sal_uInt16)pOption->GetNumber();
+ break;
+ case HTML_O_SRC:
+ sImgSrc = pOption->GetString();
+ break;
+ case HTML_O_WIDTH:
+ // erstmal nur als Pixelwerte merken!
+ nWidth = pOption->GetNumber();
+ break;
+ case HTML_O_HEIGHT:
+ // erstmal nur als Pixelwerte merken!
+ nHeight = pOption->GetNumber();
+ break;
+ case HTML_O_ALIGN:
+ eVertOri =
+ (SwVertOrient)pOption->GetEnum( aHTMLImgVAlignTable,
+ eVertOri );
+ eHoriOri =
+ (SwHoriOrient)pOption->GetEnum( aHTMLImgHAlignTable,
+ eHoriOri );
+ break;
+ case HTML_O_TABINDEX:
+ // erstmal nur als Pixelwerte merken!
+ nTabIndex = pOption->GetNumber();
+ break;
+
+ case HTML_O_SDONFOCUS:
+ eScriptType = STARBASIC;
+ case HTML_O_ONFOCUS:
+ nEvent = HTML_ET_ONGETFOCUS;
+ bSetEvent = sal_True;
+ break;
+
+ case HTML_O_SDONBLUR: // eigtl. nur EDIT
+ eScriptType = STARBASIC;
+ case HTML_O_ONBLUR:
+ nEvent = HTML_ET_ONLOSEFOCUS;
+ bSetEvent = sal_True;
+ break;
+
+ case HTML_O_SDONCLICK:
+ eScriptType = STARBASIC;
+ case HTML_O_ONCLICK:
+ nEvent = HTML_ET_ONCLICK;
+ bSetEvent = sal_True;
+ break;
+
+ case HTML_O_SDONCHANGE: // eigtl. nur EDIT
+ eScriptType = STARBASIC;
+ case HTML_O_ONCHANGE:
+ nEvent = HTML_ET_ONCHANGE;
+ bSetEvent = sal_True;
+ break;
+
+ case HTML_O_SDONSELECT: // eigtl. nur EDIT
+ eScriptType = STARBASIC;
+ case HTML_O_ONSELECT:
+ nEvent = HTML_ET_ONSELECT;
+ bSetEvent = sal_True;
+ break;
+
+ default:
+ lcl_html_getEvents( pOption->GetTokenString(),
+ pOption->GetString(),
+ aUnoMacroTbl, aUnoMacroParamTbl );
+ break;
+ }
+
+ if( bSetEvent )
+ {
+ String sEvent( pOption->GetString() );
+ if( sEvent.Len() )
+ {
+ sEvent.ConvertLineEnd();
+ String aScriptType;
+ if( EXTENDED_STYPE==eScriptType )
+ aScriptType = rDfltScriptType;
+ aMacroTbl.Insert( nEvent, new SvxMacro( sEvent, aScriptType,
+ eScriptType ) );
+ }
+ }
+ }
+
+ if( HTML_IT_IMAGE==eType )
+ {
+ // Image-Controls ohne Image-URL werden ignoriert (wie bei MS)
+ if( !sImgSrc.Len() )
+ return;
+ }
+#if 0
+ else if( HTML_IT_HIDDEN!=eType )
+ {
+ // Obwohl Netscape und MS-IE nur Iamge-Buttons ausrichten koennen,
+ // werten wir ALIGN fuer alle Controls aus.
+ if( VERT_NONE == eVertOri )
+ eVertOri = VERT_TOP;
+ }
+#else
+ else
+ {
+ // ALIGN fuer alle Controls auszuwerten ist keine so gute Idee,
+ // solange Absatz-gebundene Controls die Hoehe von Tabellen-Zellen
+ // nicht beeinflussen
+ // (#64110#, http://www.telekom.de/katalog-online/onlineshop.html)
+ eVertOri = VERT_TOP;
+ eHoriOri = HORI_NONE;
+ }
+#endif
+
+ // Defaults entsprechen HTML_IT_TEXT
+ const sal_Char *pType = "TextField";
+ sal_Bool bKeepCRLFInValue = sal_False;
+ switch( eType )
+ {
+ case HTML_IT_CHECKBOX:
+ pType = "CheckBox";
+ bKeepCRLFInValue = sal_True;
+ break;
+
+ case HTML_IT_RADIO:
+ pType = "RadioButton";
+ bKeepCRLFInValue = sal_True;
+ break;
+
+ case HTML_IT_PASSWORD:
+ bKeepCRLFInValue = sal_True;
+ break;
+
+ case HTML_IT_BUTTON:
+ bKeepCRLFInValue = sal_True;
+ case HTML_IT_SUBMIT:
+ case HTML_IT_RESET:
+ pType = "CommandButton";
+ break;
+
+ case HTML_IT_IMAGE:
+ pType = "ImageButton";
+ break;
+
+ case HTML_IT_FILE:
+ pType = "FileControl";
+ break;
+
+ case HTML_IT_HIDDEN:
+ pType = "HiddenControl";
+ bKeepCRLFInValue = sal_True;
+ break;
+ }
+
+ // Fuer ein par Controls mussen CR/LF noch aus dem VALUE
+ // geloescht werden.
+ if( !bKeepCRLFInValue )
+ {
+ sText.EraseAllChars( _CR );
+ sText.EraseAllChars( _LF );
+ }
+
+ const Reference< XMultiServiceFactory > & rServiceFactory =
+ pFormImpl->GetServiceFactory();
+ if( !rServiceFactory.is() )
+ return;
+
+ String sServiceName(
+ OUString::createFromAscii("com.sun.star.form.component.") );
+ sServiceName.AppendAscii( pType );
+ Reference< XInterface > xInt =
+ rServiceFactory->createInstance( sServiceName );
+ if( !xInt.is() )
+ return;
+
+ Reference< XFormComponent > xFComp( xInt, UNO_QUERY );
+ if( !xFComp.is() )
+ return;
+
+ Reference< beans::XPropertySet > xPropSet( xFComp, UNO_QUERY );
+
+ Any aTmp;
+ aTmp <<= OUString(sName);
+ xPropSet->setPropertyValue( OUString::createFromAscii( "Name" ), aTmp );
+
+ if( HTML_IT_HIDDEN != eType )
+ {
+ if( nTabIndex >= TABINDEX_MIN && nTabIndex <= TABINDEX_MAX )
+ {
+ aTmp <<= (sal_Int16) (sal_Int16)nTabIndex ;
+ xPropSet->setPropertyValue( OUString::createFromAscii( "TabIndex" ), aTmp );
+ }
+
+ if( bDisabled )
+ {
+ BOOL bFalse = sal_False;
+ aTmp.setValue(&bFalse, ::getBooleanCppuType() );
+ xPropSet->setPropertyValue( OUString::createFromAscii( "Enabled" ), aTmp );
+ }
+ }
+
+ aTmp <<= OUString(sText);
+
+ Size aSz( 0, 0 ); // defaults
+ Size aTextSz( 0, 0 ); // Text-Size
+ sal_Bool bMinWidth = sal_False, bMinHeight = sal_False;
+ sal_Bool bUseSize = sal_False;
+ switch( eType )
+ {
+ case HTML_IT_CHECKBOX:
+ case HTML_IT_RADIO:
+ {
+ if( !bValue )
+ aTmp <<= OUString::createFromAscii( sHTML_on );
+ xPropSet->setPropertyValue( OUString::createFromAscii( "RefValue" ),
+ aTmp );
+ aTmp <<= OUString();
+ xPropSet->setPropertyValue( OUString::createFromAscii( "Label" ),
+ aTmp );
+ // #53559#: Beim RadioButton darf die DefaultChecked-Property
+ // erst gesetzt werden, wenn das Control angelegt und ein
+ // activateTabOrder gerufen wurde, weil es sonst noch zu der
+ // vorhergehenden Gruppe gehoert.
+ if( HTML_IT_CHECKBOX == eType )
+ {
+ aTmp <<= (sal_Int16) nChecked ;
+ xPropSet->setPropertyValue(
+ OUString::createFromAscii( "DefaultState" ), aTmp );
+ }
+
+ SvxMacro *pMacro = aMacroTbl.Get( HTML_ET_ONCLICK );
+ if( pMacro )
+ {
+ aMacroTbl.Remove( HTML_ET_ONCLICK );
+ aMacroTbl.Insert( HTML_ET_ONCLICK_ITEM, pMacro );
+ }
+ // SIZE auszuwerten duerfte hier keinen Sinn machen???
+ bMinWidth = bMinHeight = sal_True;
+ }
+ break;
+
+ case HTML_IT_IMAGE:
+ {
+ // SIZE = WIDTH
+ aSz.Width() = nSize ? nSize : nWidth;
+ aSz.Width() = nWidth;
+ aSz.Height() = nHeight;
+ if( (aSz.Width() || aSz.Height()) && Application::GetDefaultDevice() )
+ {
+ aSz = Application::GetDefaultDevice()
+ ->PixelToLogic( aSz, MapMode( MAP_100TH_MM ) );
+ }
+ FormButtonType eButtonType = FormButtonType_SUBMIT;
+ aTmp.setValue( &eButtonType,
+ ::getCppuType((const FormButtonType*)0));
+ xPropSet->setPropertyValue(
+ OUString::createFromAscii( "ButtonType" ), aTmp );
+
+ aTmp <<= (sal_Int16) 0 ;
+ xPropSet->setPropertyValue( OUString::createFromAscii( "Border" ),
+ aTmp );
+ }
+ break;
+
+ case HTML_IT_BUTTON:
+ case HTML_IT_SUBMIT:
+ case HTML_IT_RESET:
+ {
+ FormButtonType eButtonType;
+ switch( eType )
+ {
+ case HTML_IT_BUTTON:
+ eButtonType = FormButtonType_PUSH;
+ break;
+ case HTML_IT_SUBMIT:
+ eButtonType = FormButtonType_SUBMIT;
+ if( !sText.Len() )
+ sText.AssignAscii( sHTML_IT_submit );
+ break;
+ case HTML_IT_RESET:
+ eButtonType = FormButtonType_RESET;
+ if( !sText.Len() )
+ sText.AssignAscii( sHTML_IT_reset );
+ break;
+ }
+ aTmp <<= OUString(sText);
+ xPropSet->setPropertyValue( OUString::createFromAscii( "Label" ),
+ aTmp );
+
+ aTmp.setValue( &eButtonType,
+ ::getCppuType((const FormButtonType*)0));
+ xPropSet->setPropertyValue(
+ OUString::createFromAscii( "ButtonType" ), aTmp );
+
+ bMinWidth = bMinHeight = sal_True;
+ bUseSize = sal_True;
+ }
+ break;
+
+ case HTML_IT_PASSWORD:
+ case HTML_IT_TEXT:
+ case HTML_IT_FILE:
+ if( HTML_IT_FILE != eType )
+ {
+ // Beim File-Control wird der VALUE aus Sicherheitsgruenden ignoriert.
+ xPropSet->setPropertyValue(
+ OUString::createFromAscii( "DefaultText" ), aTmp );
+ if( nMaxLen != 0 )
+ {
+ aTmp <<= (sal_Int16) nMaxLen ;
+ xPropSet->setPropertyValue(
+ OUString::createFromAscii( "MaxTextLen" ), aTmp );
+ }
+ }
+
+ if( HTML_IT_PASSWORD == eType )
+ {
+ aTmp <<= (sal_Int16)'*' ;
+ xPropSet->setPropertyValue( OUString::createFromAscii( "EchoChar" ),
+ aTmp );
+ }
+
+ lcl_html_setFixedFontProperty( xPropSet );
+
+ if( !nSize )
+ nSize = 20;
+ aTextSz.Width() = nSize;
+ bMinHeight = sal_True;
+ break;
+
+ case HTML_IT_HIDDEN:
+ xPropSet->setPropertyValue( OUString::createFromAscii( "HiddenValue" ),
+ aTmp );
+ bHidden = sal_True;
+ break;
+ }
+
+ if( bUseSize && nSize>0 )
+ {
+ if( Application::GetDefaultDevice() )
+ {
+ Size aNewSz( nSize, 0 );
+ aNewSz = Application::GetDefaultDevice()
+ ->PixelToLogic( aNewSz, MapMode( MAP_100TH_MM ) );
+ aSz.Width() = aNewSz.Width();
+ ASSERT( !aTextSz.Width(), "Text-Breite ist gegeben" );
+ bMinWidth = sal_False;
+ }
+ }
+
+ SfxItemSet aCSS1ItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aCSS1PropInfo;
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ ParseStyleOptions( aStyle, aId, aClass, aCSS1ItemSet, aCSS1PropInfo );
+ if( aId.Len() )
+ InsertBookmark( aId );
+ }
+
+ if( SVX_CSS1_LTYPE_TWIP== aCSS1PropInfo.eWidthType )
+ {
+ aSz.Width() = TWIP_TO_MM100( aCSS1PropInfo.nWidth );
+ aTextSz.Width() = 0;
+ bMinWidth = sal_False;
+ }
+ if( SVX_CSS1_LTYPE_TWIP== aCSS1PropInfo.eHeightType )
+ {
+ aSz.Height() = TWIP_TO_MM100( aCSS1PropInfo.nHeight );
+ aTextSz.Height() = 0;
+ bMinHeight = sal_False;
+ }
+
+ // Beim Image-Button bei nicht gegebern Groesse einen sinnvollen Default
+ // setzen
+ if( HTML_IT_IMAGE== eType )
+ {
+ if( !aSz.Width() )
+ {
+ aSz.Width() = HTML_DFLT_IMG_WIDTH;
+ bSetGrfWidth = sal_True;
+ if( pTable != 0 )
+ IncGrfsThatResizeTable();
+ }
+ if( !aSz.Height() )
+ {
+ aSz.Height() = HTML_DFLT_IMG_HEIGHT;
+ bSetGrfHeight = sal_True;
+ }
+ }
+ if( aSz.Width() < MINFLY )
+ aSz.Width() = MINFLY;
+ if( aSz.Height() < MINFLY )
+ aSz.Height() = MINFLY;
+
+ Reference< drawing::XShape > xShape = InsertControl(
+ xFComp, xPropSet, aSz,
+ eVertOri, eHoriOri,
+ aCSS1ItemSet, aCSS1PropInfo,
+ aMacroTbl, aUnoMacroTbl,
+ aUnoMacroParamTbl, sal_False,
+ bHidden );
+ if( aTextSz.Width() || aTextSz.Height() || bMinWidth || bMinHeight )
+ {
+ ASSERT( !(bSetGrfWidth || bSetGrfHeight), "Grafikgroesse anpassen???" );
+ SetControlSize( xShape, aTextSz, bMinWidth, bMinHeight, HTML_INPUT );
+ }
+
+ if( HTML_IT_RADIO == eType )
+ {
+ aTmp <<= (sal_Int16) nChecked ;
+ xPropSet->setPropertyValue( OUString::createFromAscii( "DefaultState" ), aTmp );
+ }
+
+ if( HTML_IT_IMAGE == eType )
+ {
+ // Die URL erst nach dem Einfuegen setzen, weil sich der
+ // Download der Grafik erst dann am XModel anmelden kann,
+ // wenn das Control eingefuegt ist.
+ aTmp <<= OUString(INetURLObject::RelToAbs(sImgSrc));
+ xPropSet->setPropertyValue( OUString::createFromAscii( "ImageURL" ),
+ aTmp );
+ }
+
+ if( bSetGrfWidth || bSetGrfHeight )
+ {
+ SwHTMLImageWatcher* pWatcher =
+ new SwHTMLImageWatcher( xShape, bSetGrfWidth, bSetGrfHeight );
+ Reference< awt::XImageConsumer > xCons = pWatcher;
+ pWatcher->start();
+ }
+}
+
+void SwHTMLParser::NewTextArea()
+{
+ if( pPendStack )
+ {
+ SetPendingControlSize( HTML_TEXTAREA_ON );
+ return;
+ }
+
+ ASSERT( !bTextArea, "TextArea in TextArea???" );
+ ASSERT( !pFormImpl || !pFormImpl->GetFCompPropSet().is(),
+ "TextArea in Control???" );
+
+ if( !pFormImpl || !pFormImpl->GetFormComps().is() )
+ {
+ // Spezialbehandlung fuer TextArea auch untem im Parser beenden
+ FinishTextArea();
+ return;
+ }
+
+ String aId, aClass, aStyle;
+ String sName;
+ sal_Int32 nTabIndex = TABINDEX_MAX + 1;
+ SvxMacroTableDtor aMacroTbl;
+ SvStringsDtor aUnoMacroTbl;
+ SvStringsDtor aUnoMacroParamTbl;
+ sal_uInt16 nRows = 0, nCols = 0;
+ sal_uInt16 nWrap = HTML_WM_OFF;
+ sal_Bool bDisabled = sal_False;
+ SvKeyValueIterator *pHeaderAttrs = pFormImpl->GetHeaderAttrs();
+ ScriptType eDfltScriptType = GetScriptType( pHeaderAttrs );
+ const String& rDfltScriptType = GetScriptTypeString( pHeaderAttrs );
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ ScriptType eScriptType = eDfltScriptType;
+ sal_uInt16 nEvent;
+ sal_Bool bSetEvent = sal_False;
+
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ case HTML_O_NAME:
+ sName = pOption->GetString();
+ break;
+ case HTML_O_DISABLED:
+ bDisabled = sal_True;
+ break;
+ case HTML_O_ROWS:
+ nRows = (sal_uInt16)pOption->GetNumber();
+ break;
+ case HTML_O_COLS:
+ nCols = (sal_uInt16)pOption->GetNumber();
+ break;
+ case HTML_O_WRAP:
+ nWrap = pOption->GetEnum( aHTMLTextAreaWrapTable, nWrap );
+ break;
+
+ case HTML_O_TABINDEX:
+ nTabIndex = pOption->GetSNumber();
+ break;
+
+ case HTML_O_SDONFOCUS:
+ eScriptType = STARBASIC;
+ case HTML_O_ONFOCUS:
+ nEvent = HTML_ET_ONGETFOCUS;
+ bSetEvent = sal_True;
+ break;
+
+ case HTML_O_SDONBLUR:
+ eScriptType = STARBASIC;
+ case HTML_O_ONBLUR:
+ nEvent = HTML_ET_ONLOSEFOCUS;
+ bSetEvent = sal_True;
+ break;
+
+ case HTML_O_SDONCLICK:
+ eScriptType = STARBASIC;
+ case HTML_O_ONCLICK:
+ nEvent = HTML_ET_ONCLICK;
+ bSetEvent = sal_True;
+ break;
+
+ case HTML_O_SDONCHANGE:
+ eScriptType = STARBASIC;
+ case HTML_O_ONCHANGE:
+ nEvent = HTML_ET_ONCHANGE;
+ bSetEvent = sal_True;
+ break;
+
+ case HTML_O_SDONSELECT:
+ eScriptType = STARBASIC;
+ case HTML_O_ONSELECT:
+ nEvent = HTML_ET_ONSELECT;
+ bSetEvent = sal_True;
+ break;
+
+ default:
+ lcl_html_getEvents( pOption->GetTokenString(),
+ pOption->GetString(),
+ aUnoMacroTbl, aUnoMacroParamTbl );
+ break;
+ }
+
+ if( bSetEvent )
+ {
+ String sEvent( pOption->GetString() );
+ if( sEvent.Len() )
+ {
+ sEvent.ConvertLineEnd();
+ if( EXTENDED_STYPE==eScriptType )
+ aScriptType = rDfltScriptType;
+ aMacroTbl.Insert( nEvent, new SvxMacro( sEvent, aScriptType,
+ eScriptType ) );
+ }
+ }
+ }
+
+
+ const Reference< lang::XMultiServiceFactory > & rSrvcMgr =
+ pFormImpl->GetServiceFactory();
+ if( !rSrvcMgr.is() )
+ {
+ FinishTextArea();
+ return;
+ }
+ Reference< uno::XInterface > xInt = rSrvcMgr->createInstance(
+ OUString::createFromAscii( "com.sun.star.form.component.TextField" ) );
+ if( !xInt.is() )
+ {
+ FinishTextArea();
+ return;
+ }
+
+ Reference< XFormComponent > xFComp( xInt, UNO_QUERY );
+ DBG_ASSERT( xFComp.is(), "keine FormComponent?" );
+
+ Reference< beans::XPropertySet > xPropSet( xFComp, UNO_QUERY );
+
+ Any aTmp;
+ aTmp <<= OUString(sName);
+ xPropSet->setPropertyValue( OUString::createFromAscii( "Name" ), aTmp );
+
+ BOOL bTrue = sal_True;
+ aTmp.setValue( &bTrue, ::getBooleanCppuType() );
+ xPropSet->setPropertyValue( OUString::createFromAscii( "MultiLine" ),
+ aTmp );
+ xPropSet->setPropertyValue( OUString::createFromAscii( "VScroll" ), aTmp );
+ if( HTML_WM_OFF == nWrap )
+ xPropSet->setPropertyValue( OUString::createFromAscii( "HScroll" ),
+ aTmp );
+ if( HTML_WM_HARD == nWrap )
+ xPropSet->setPropertyValue(
+ OUString::createFromAscii( "HardLineBreaks" ), aTmp );
+
+ if( nTabIndex >= TABINDEX_MIN && nTabIndex <= TABINDEX_MAX )
+ {
+ aTmp <<= (sal_Int16)nTabIndex ;
+ xPropSet->setPropertyValue( OUString::createFromAscii( "TabIndex" ),
+ aTmp );
+ }
+
+ lcl_html_setFixedFontProperty( xPropSet );
+
+ if( bDisabled )
+ {
+ BOOL bFalse = sal_False;
+ aTmp.setValue( &bFalse, ::getBooleanCppuType() );
+ xPropSet->setPropertyValue( OUString::createFromAscii( "Enabled" ),
+ aTmp );
+ }
+
+ ASSERT( !pFormImpl->GetText().Len(), "Text ist nicht leer!" );
+
+ if( !nCols )
+ nCols = 20;
+ if( !nRows )
+ nRows = 1;
+
+ Size aTextSz( nCols, nRows );
+
+ SfxItemSet aCSS1ItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aCSS1PropInfo;
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ ParseStyleOptions( aStyle, aId, aClass, aCSS1ItemSet, aCSS1PropInfo );
+ if( aId.Len() )
+ InsertBookmark( aId );
+ }
+
+ Size aSz( MINFLY, MINFLY );
+ if( SVX_CSS1_LTYPE_TWIP== aCSS1PropInfo.eWidthType )
+ {
+ aSz.Width() = TWIP_TO_MM100( aCSS1PropInfo.nWidth );
+ aTextSz.Width() = 0;
+ }
+ if( SVX_CSS1_LTYPE_TWIP== aCSS1PropInfo.eHeightType )
+ {
+ aSz.Height() = TWIP_TO_MM100( aCSS1PropInfo.nHeight );
+ aTextSz.Height() = 0;
+ }
+ if( aSz.Width() < MINFLY )
+ aSz.Width() = MINFLY;
+ if( aSz.Height() < MINFLY )
+ aSz.Height() = MINFLY;
+
+ Reference< drawing::XShape > xShape = InsertControl( xFComp, xPropSet, aSz,
+ VERT_TOP, HORI_NONE,
+ aCSS1ItemSet, aCSS1PropInfo,
+ aMacroTbl, aUnoMacroTbl,
+ aUnoMacroParamTbl );
+ if( aTextSz.Width() || aTextSz.Height() )
+ SetControlSize( xShape, aTextSz, sal_False, sal_False,
+ HTML_TEXTAREA_ON );
+
+ // einen neuen Kontext anlegen
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( HTML_TEXTAREA_ON );
+
+ // und PRE/Listing/XMP voruebergehend aussetzen
+ SplitPREListingXMP( pCntxt );
+ PushContext( pCntxt );
+
+ bTextArea = sal_True;
+ bTAIgnoreNewPara = sal_True;
+}
+
+void SwHTMLParser::EndTextArea()
+{
+ ASSERT( bTextArea, "keine TextArea oder falscher Typ" );
+ ASSERT( pFormImpl && pFormImpl->GetFCompPropSet().is(),
+ "TextArea fehlt" );
+
+ const Reference< beans::XPropertySet > & rPropSet =
+ pFormImpl->GetFCompPropSet();
+
+ Any aTmp;
+ aTmp <<= OUString(pFormImpl->GetText());
+ rPropSet->setPropertyValue( OUString::createFromAscii( "DefaultText" ),
+ aTmp );
+ pFormImpl->EraseText();
+
+ pFormImpl->ReleaseFCompPropSet();
+
+ // den Kontext holen
+ _HTMLAttrContext *pCntxt = PopContext( HTML_TEXTAREA_ON );
+ if( pCntxt )
+ {
+ // und ggf. die Attribute beenden
+ EndContext( pCntxt );
+ delete pCntxt;
+ }
+
+ bTextArea = sal_False;
+}
+
+
+void SwHTMLParser::InsertTextAreaText( sal_uInt16 nToken )
+{
+ ASSERT( bTextArea, "keine TextArea oder falscher Typ" );
+ ASSERT( pFormImpl && pFormImpl->GetFCompPropSet().is(),
+ "TextArea fehlt" );
+
+ String& rText = pFormImpl->GetText();
+ switch( nToken)
+ {
+ case HTML_TEXTTOKEN:
+ rText += aToken;
+ break;
+ case HTML_NEWPARA:
+ if( !bTAIgnoreNewPara )
+ rText += '\n'; // das ist hier richtig!!!
+ break;
+ default:
+ rText += '<';
+ rText += sSaveToken;
+ if( aToken.Len() )
+ {
+ rText += ' ';
+ rText += aToken;
+ }
+ rText += '>';
+ }
+
+ bTAIgnoreNewPara = sal_False;
+}
+
+void SwHTMLParser::NewSelect()
+{
+ if( pPendStack )
+ {
+ SetPendingControlSize( HTML_SELECT_ON );
+ return;
+ }
+
+ ASSERT( !bSelect, "Select in Select???" );
+ ASSERT( !pFormImpl || !pFormImpl->GetFCompPropSet().is(),
+ "Select in Control???" );
+
+ if( !pFormImpl || !pFormImpl->GetFormComps().is() )
+ return;
+
+ String aId, aClass, aStyle;
+ String sName;
+ sal_Int32 nTabIndex = TABINDEX_MAX + 1;
+ SvxMacroTableDtor aMacroTbl;
+ SvStringsDtor aUnoMacroTbl;
+ SvStringsDtor aUnoMacroParamTbl;
+ sal_Bool bMultiple = sal_False;
+ sal_Bool bDisabled = sal_False;
+ nSelectEntryCnt = 1;
+ SvKeyValueIterator *pHeaderAttrs = pFormImpl->GetHeaderAttrs();
+ ScriptType eDfltScriptType = GetScriptType( pHeaderAttrs );
+ const String& rDfltScriptType = GetScriptTypeString( pHeaderAttrs );
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ ScriptType eScriptType = eDfltScriptType;
+ sal_uInt16 nEvent;
+ sal_Bool bSetEvent = sal_False;
+
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ case HTML_O_NAME:
+ sName = pOption->GetString();
+ break;
+ case HTML_O_MULTIPLE:
+ bMultiple = sal_True;
+ break;
+ case HTML_O_DISABLED:
+ bDisabled = sal_True;
+ break;
+ case HTML_O_SIZE:
+ nSelectEntryCnt = (sal_uInt16)pOption->GetNumber();
+ break;
+
+ case HTML_O_TABINDEX:
+ nTabIndex = pOption->GetSNumber();
+ break;
+
+ case HTML_O_SDONFOCUS:
+ eScriptType = STARBASIC;
+ case HTML_O_ONFOCUS:
+ nEvent = HTML_ET_ONGETFOCUS;
+ bSetEvent = sal_True;
+ break;
+
+ case HTML_O_SDONBLUR:
+ eScriptType = STARBASIC;
+ case HTML_O_ONBLUR:
+ nEvent = HTML_ET_ONLOSEFOCUS;
+ bSetEvent = sal_True;
+ break;
+
+ case HTML_O_SDONCLICK:
+ eScriptType = STARBASIC;
+ case HTML_O_ONCLICK:
+ nEvent = HTML_ET_ONCLICK;
+ bSetEvent = sal_True;
+ break;
+
+ case HTML_O_SDONCHANGE:
+ eScriptType = STARBASIC;
+ case HTML_O_ONCHANGE:
+ nEvent = HTML_ET_ONCHANGE;
+ bSetEvent = sal_True;
+ break;
+
+ default:
+ lcl_html_getEvents( pOption->GetTokenString(),
+ pOption->GetString(),
+ aUnoMacroTbl, aUnoMacroParamTbl );
+ break;
+ }
+
+ if( bSetEvent )
+ {
+ String sEvent( pOption->GetString() );
+ if( sEvent.Len() )
+ {
+ sEvent.ConvertLineEnd();
+ if( EXTENDED_STYPE==eScriptType )
+ aScriptType = rDfltScriptType;
+ aMacroTbl.Insert( nEvent, new SvxMacro( sEvent, aScriptType,
+ eScriptType ) );
+ }
+ }
+ }
+
+ const Reference< lang::XMultiServiceFactory > & rSrvcMgr =
+ pFormImpl->GetServiceFactory();
+ if( !rSrvcMgr.is() )
+ {
+ FinishTextArea();
+ return;
+ }
+ Reference< uno::XInterface > xInt = rSrvcMgr->createInstance(
+ OUString::createFromAscii( "com.sun.star.form.component.ListBox" ) );
+ if( !xInt.is() )
+ {
+ FinishTextArea();
+ return;
+ }
+
+ Reference< XFormComponent > xFComp( xInt, UNO_QUERY );
+ DBG_ASSERT(xFComp.is(), "keine FormComponent?")
+
+ Reference< beans::XPropertySet > xPropSet( xFComp, UNO_QUERY );
+
+ Any aTmp;
+ aTmp <<= OUString(sName);
+ xPropSet->setPropertyValue( OUString::createFromAscii( "Name" ), aTmp );
+
+ if( nTabIndex >= TABINDEX_MIN && nTabIndex <= TABINDEX_MAX )
+ {
+ aTmp <<= (sal_Int16)nTabIndex ;
+ xPropSet->setPropertyValue( OUString::createFromAscii( "TabIndex" ),
+ aTmp );
+ }
+
+ if( bDisabled )
+ {
+ BOOL bFalse = sal_False;
+ aTmp.setValue( &bFalse, ::getBooleanCppuType() );
+ xPropSet->setPropertyValue( OUString::createFromAscii( "Enabled" ),
+ aTmp );
+ }
+
+ Size aTextSz( 0, 0 );
+ sal_Bool bMinWidth = sal_True, bMinHeight = sal_True;
+ if( !bMultiple && 1==nSelectEntryCnt )
+ {
+ BOOL bTrue = sal_True;
+ aTmp.setValue( &bTrue, ::getBooleanCppuType() );
+ xPropSet->setPropertyValue( OUString::createFromAscii( "Dropdown" ),
+ aTmp );
+ }
+ else
+ {
+ if( nSelectEntryCnt <= 1 ) // 4 Zeilen als default
+ nSelectEntryCnt = 4;
+
+ if( bMultiple )
+ {
+ BOOL bTrue = sal_True;
+ aTmp.setValue( &bTrue, ::getBooleanCppuType() );
+ xPropSet->setPropertyValue(
+ OUString::createFromAscii( "MultiSelection" ), aTmp );
+ }
+ aTextSz.Height() = nSelectEntryCnt;
+ bMinHeight = sal_False;
+ }
+
+ SfxItemSet aCSS1ItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aCSS1PropInfo;
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ ParseStyleOptions( aStyle, aId, aClass, aCSS1ItemSet, aCSS1PropInfo );
+ if( aId.Len() )
+ InsertBookmark( aId );
+ }
+
+ Size aSz( MINFLY, MINFLY );
+ bFixSelectWidth = bFixSelectHeight = sal_True;
+ if( SVX_CSS1_LTYPE_TWIP== aCSS1PropInfo.eWidthType )
+ {
+ aSz.Width() = TWIP_TO_MM100( aCSS1PropInfo.nWidth );
+ bFixSelectWidth = sal_False;
+ bMinWidth = sal_False;
+ }
+ if( SVX_CSS1_LTYPE_TWIP== aCSS1PropInfo.eHeightType )
+ {
+ aSz.Height() = TWIP_TO_MM100( aCSS1PropInfo.nHeight );
+ aTextSz.Height() = sal_False;
+ bMinHeight = sal_False;
+ }
+ if( aSz.Width() < MINFLY )
+ aSz.Width() = MINFLY;
+ if( aSz.Height() < MINFLY )
+ aSz.Height() = MINFLY;
+
+ Reference< drawing::XShape > xShape = InsertControl( xFComp, xPropSet, aSz,
+ VERT_TOP, HORI_NONE,
+ aCSS1ItemSet, aCSS1PropInfo,
+ aMacroTbl, aUnoMacroTbl,
+ aUnoMacroParamTbl );
+ if( bFixSelectWidth )
+ pFormImpl->SetShape( xShape );
+ if( aTextSz.Height() || bMinWidth || bMinHeight )
+ SetControlSize( xShape, aTextSz, bMinWidth, bMinHeight,
+ HTML_SELECT_ON );
+
+ // einen neuen Kontext anlegen
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( HTML_SELECT_ON );
+
+ // und PRE/Listing/XMP voruebergehend aussetzen
+ SplitPREListingXMP( pCntxt );
+ PushContext( pCntxt );
+
+ bSelect = sal_True;
+}
+
+void SwHTMLParser::EndSelect()
+{
+ if( pPendStack )
+ {
+ SetPendingControlSize( HTML_SELECT_OFF );
+ return;
+ }
+
+ ASSERT( bSelect, "keine Select" );
+ ASSERT( pFormImpl && pFormImpl->GetFCompPropSet().is(),
+ "kein Select-Control" );
+
+ const Reference< beans::XPropertySet > & rPropSet =
+ pFormImpl->GetFCompPropSet();
+
+ // die Groesse anpassen
+ Size aNewSz( MINFLY, MINFLY );
+
+ sal_uInt16 nEntryCnt = pFormImpl->GetStringList().Count();
+ if( nEntryCnt )
+ {
+ Sequence<OUString> aList( (sal_Int32)nEntryCnt );
+ Sequence<OUString> aValueList( (sal_Int32)nEntryCnt );
+ OUString *pStrings = aList.getArray();
+ OUString *pValues = aValueList.getArray();
+ for( sal_uInt16 i=0; i<nEntryCnt; i++ )
+ {
+ String sText( *pFormImpl->GetStringList()[i] );
+ sText.EraseTrailingChars();
+ pStrings[i] = sText;
+
+ sText = *pFormImpl->GetValueList()[i];
+ pValues[i] = sText;
+ }
+
+ Any aAny( &aList, ::getCppuType((uno::Sequence<OUString>*)0) );
+
+ rPropSet->setPropertyValue(
+ OUString::createFromAscii( "StringItemList" ), aAny );
+
+ aAny <<= ListSourceType_VALUELIST;
+ rPropSet->setPropertyValue(
+ OUString::createFromAscii( "ListSourceType" ), aAny );
+
+ aAny.setValue( &aValueList, ::getCppuType((uno::Sequence<OUString>*)0) );
+
+ rPropSet->setPropertyValue( OUString::createFromAscii( "ListSource" ),
+ aAny );
+
+ sal_uInt16 nSelCnt = pFormImpl->GetSelectedList().Count();
+ if( !nSelCnt && 1 == nSelectEntryCnt && nEntryCnt )
+ {
+ // In einer DropDown-Listbox sollte immer ein Eintrag selektiert
+ // sein.
+ pFormImpl->GetSelectedList().Insert( (sal_uInt16)0, (sal_uInt16)0 );
+ nSelCnt = 1;
+ }
+ Sequence<sal_Int16> aSelList( (sal_Int32)nSelCnt );
+ sal_Int16 *pSels = aSelList.getArray();
+ for( i=0; i<nSelCnt; i++ )
+ {
+ pSels[i] = (sal_Int16)pFormImpl->GetSelectedList()[i];
+ }
+ aAny.setValue( &aSelList,
+ ::getCppuType((uno::Sequence<sal_Int16>*)0) );
+
+ rPropSet->setPropertyValue(
+ OUString::createFromAscii( "DefaultSelection" ), aAny );
+
+ pFormImpl->EraseStringList();
+ pFormImpl->EraseValueList();
+ }
+
+ pFormImpl->EraseSelectedList();
+
+ if( bFixSelectWidth )
+ {
+ ASSERT( pFormImpl->GetShape().is(), "Kein Shape gemerkt" );
+ Size aTextSz( -1, 0 );
+ SetControlSize( pFormImpl->GetShape(), aTextSz, sal_False, sal_False,
+ HTML_SELECT_OFF );
+ }
+
+ pFormImpl->ReleaseFCompPropSet();
+
+ // den Kontext holen
+ _HTMLAttrContext *pCntxt = PopContext( HTML_SELECT_ON );
+ if( pCntxt )
+ {
+ // und ggf. die Attribute beenden
+ EndContext( pCntxt );
+ delete pCntxt;
+ }
+
+ bSelect = sal_False;
+}
+
+void SwHTMLParser::InsertSelectOption()
+{
+ ASSERT( bSelect, "keine Select" );
+ ASSERT( pFormImpl && pFormImpl->GetFCompPropSet().is(),
+ "kein Select-Control" );
+
+ bLBEntrySelected = sal_False;
+ String aValue;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ // erstmal weglassen!!!
+ break;
+ case HTML_O_SELECTED:
+ bLBEntrySelected = sal_True;
+ break;
+ case HTML_O_VALUE:
+ aValue = pOption->GetString();
+ if( !aValue.Len() )
+ aValue.AssignAscii( "$$$empty$$$" );
+ break;
+ }
+ }
+
+ sal_uInt16 nEntryCnt = pFormImpl->GetStringList().Count();
+ pFormImpl->GetStringList().Insert( new String( aEmptyStr ), nEntryCnt );
+ pFormImpl->GetValueList().Insert( new String( aValue ), nEntryCnt );
+ if( bLBEntrySelected )
+ pFormImpl->GetSelectedList().Insert( nEntryCnt,
+ pFormImpl->GetSelectedList().Count() );
+}
+
+void SwHTMLParser::InsertSelectText()
+{
+ ASSERT( bSelect, "keine Select" );
+ ASSERT( pFormImpl && pFormImpl->GetFCompPropSet().is(),
+ "kein Select-Control" );
+
+ sal_uInt16 nEntryCnt = pFormImpl->GetStringList().Count();
+ if( nEntryCnt )
+ {
+ String& rText = *pFormImpl->GetStringList()[nEntryCnt-1];
+
+ if( aToken.Len() && ' '==aToken.GetChar( 0 ) )
+ {
+ xub_StrLen nLen = rText.Len();
+ if( !nLen || ' '==rText.GetChar( nLen-1 ))
+ aToken.Erase( 0, 1 );
+ }
+ if( aToken.Len() )
+ rText += aToken;
+ }
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmlform.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.232 2000/09/18 16:04:44 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.231 2000/06/26 09:52:06 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.230 2000/06/16 12:28:26 os
+ UNO3 error removed
+
+ Revision 1.229 2000/05/16 09:23:09 os
+ project usr removed
+
+ Revision 1.228 2000/04/28 14:29:11 mib
+ unicode
+
+ Revision 1.227 2000/04/11 10:46:28 mib
+ unicode
+
+ Revision 1.226 2000/04/10 12:20:56 mib
+ unicode
+
+ Revision 1.225 2000/03/31 06:16:24 os
+ UNO III: toolkit includes
+
+ Revision 1.224 2000/03/30 07:31:01 os
+ UNO III
+
+ Revision 1.223 2000/03/21 15:06:17 os
+ UNOIII
+
+ Revision 1.222 2000/03/03 15:21:00 os
+ StarView remainders removed
+
+ Revision 1.221 2000/02/14 13:59:45 mib
+ #70473#: unicode
+
+ Revision 1.220 2000/02/10 09:51:53 mib
+ #68571#: text/plain encoding for submit
+
+ Revision 1.219 1999/11/29 11:29:08 os
+ include
+
+ Revision 1.218 1999/11/25 11:46:11 os
+ ...component.Hidden -> ...component.HiddenControl; include clean-up
+
+ Revision 1.217 1999/11/25 11:20:16 os
+ ...component.Edit -> ...component.TextField
+
+ Revision 1.216 1999/11/22 14:04:13 os
+ headers added
+
+ Revision 1.215 1999/11/19 16:40:20 os
+ modules renamed
+
+ Revision 1.214 1999/09/17 12:13:21 mib
+ support of multiple and non system text encodings
+
+ Revision 1.213 1999/07/22 16:46:44 MIB
+ Create hidden view on demand if doc shell is an internal one
+
+
+ Rev 1.212 22 Jul 1999 18:46:44 MIB
+ Create hidden view on demand if doc shell is an internal one
+
+ Rev 1.211 10 Jun 1999 10:34:08 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.210 09 Jun 1999 19:36:52 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+ Rev 1.209 06 May 1999 08:49:02 MIB
+ #65851#: Keinen TabIndex fuer Hidden-Controls setzen
+
+ Rev 1.208 07 Apr 1999 13:50:56 MIB
+ #64327#: GetBrowseWidth fuer Tabellen in Rahmen richtig
+
+ Rev 1.207 31 Mar 1999 09:07:08 MIB
+ #64110#: ALIGN nur noch bei Image-Buttons auswerten
+
+ Rev 1.206 29 Mar 1999 08:09:32 MIB
+ #63283#: Img-URL wg. Stopp-Knopf/Reload nach dem Einfuegen des Controls setzen
+
+ Rev 1.205 15 Mar 1999 13:10:36 OS
+ #62266# FontHeight float
+
+ Rev 1.204 12 Mar 1999 16:59:08 OS
+ #62845# ServiceManager->ServiceFactory
+
+ Rev 1.203 10 Mar 1999 15:44:04 MIB
+ #62682#: Beim Setzen der Control-Groesse wenn noetig auf die ViewShell warten
+
+ Rev 1.202 05 Mar 1999 20:45:14 HJS
+ muss fuer os
+
+ Rev 1.201 05 Mar 1999 13:49:52 OS
+ HoriOrientation - UPD515
+
+ Rev 1.200 04 Mar 1999 15:02:16 OS
+ #62191# UINT nicht mehr verwenden
+
+ Rev 1.199 03 Mar 1999 11:16:34 MIB
+ #62251#: Fehlende Font-Properties setzen
+
+ Rev 1.198 23 Feb 1999 10:27:04 MIB
+ #61968#: Positionierung von Controls
+
+ Rev 1.197 22 Feb 1999 08:40:46 MA
+ 1949globale Shell entsorgt, Shells am RootFrm
+
+ Rev 1.196 12 Feb 1999 13:04:00 MIB
+ #56371#: TF_ONE51: OS/2
+
+ Rev 1.195 09 Feb 1999 15:36:10 MIB
+ #56371#: TF_ONE51 aufgeraeumt
+
+ Rev 1.194 05 Feb 1999 10:09:26 MIB
+ #56371#: File-Control
+
+ Rev 1.193 04 Feb 1999 19:25:48 MIB
+ #56371#: sal_uInt16-Properties umgetsellt
+
+ Rev 1.192 04 Feb 1999 19:03:34 MIB
+ #56371#: sal_uInt16-Properties umgetsellt
+
+ Rev 1.191 04 Feb 1999 10:18:48 OS
+ #56371# FontDescriptor ist nicht immer im Set, DefaultState sal_Int16
+
+ Rev 1.190 04 Feb 1999 09:18:14 OS
+ #56371# Import funktioniert
+
+ Rev 1.189 01 Feb 1999 11:10:04 MIB
+ #56371#: Listener- und Property-Namen berichtigt
+
+ Rev 1.188 01 Feb 1999 08:26:52 OS
+ #56371# Service- u. Property-Namen berichtigt
+
+ Rev 1.187 27 Jan 1999 19:00:12 JP
+ Task #61014#: FindSdrObject/FindContactObject als Methoden vom SwFrmFmt
+
+ Rev 1.186 27 Jan 1999 12:05:46 OS
+ #56371# TF_ONE51
+
+ Rev 1.185 25 Jan 1999 16:19:04 OS
+ #56371# TF_ONE51 - uebersetzbar
+
+ Rev 1.184 26 Nov 1998 15:20:18 MIB
+ #59904#: Event-sind-noch-nicht-implementiert-Assert weg
+
+ Rev 1.183 26 Nov 1998 10:21:30 MIB
+ #59882#: bei ACTION='' das Verzeichnis als URL nehmen
+
+ Rev 1.182 19 Oct 1998 17:22:50 MIB
+ #57901# Standard-Font, #55311# leerer Listbox-Value, #54997# leerer Checkbox-Value
+
+ Rev 1.181 14 Sep 1998 13:55:52 MIB
+ #55436#: generische Events, #56435#: Event-Setzen opntimiert
+
+ Rev 1.180 10 Sep 1998 08:31:08 MIB
+ #51303#: Zeichen-Attribute fuer Controls uebernehmen
+
+ Rev 1.179 01 Sep 1998 10:22:52 MIB
+ #54997#: VALUE von Checkboxen/Radiobuttons mit 'on' defaulten
+
+ Rev 1.178 24 Aug 1998 16:00:22 MIB
+ #54606#: resetted -> afterReset
+
+ Rev 1.177 24 Aug 1998 15:27:20 MIB
+ #54532#, #55313#: Beim Anpassen der ImageButton-Groesse leere Grafik beachten
+
+ Rev 1.176 27 Jul 1998 15:59:50 MIB
+ 53936#: Events erst nach dem Einfuegen des Controls registrieren (wegen Fokus-Events)
+
+ Rev 1.175 27 Jul 1998 14:52:46 MIB
+ #54008#: In DropDown-Listbox ersten EIntrag selektieren
+
+ Rev 1.174 24 Jul 1998 09:56:20 MIB
+ #53718#: und fuer das Hidden-Control nehmen wir jetzt HiddenValue statt Text
+
+ Rev 1.173 23 Jul 1998 12:25:00 MIB
+ #53611#: Heute nehmen wir statt der ValueSeq mal dir Listbox-Property
+
+ Rev 1.172 23 Jul 1998 09:44:50 MIB
+ fix #53493#: sheet::Border am ImageButton ausschalten
+
+ Rev 1.171 22 Jul 1998 12:01:06 MIB
+ fix #53559#: DefaultChecked-Property bei RadioButtons erst nach dem Einfuegen setzen
+
+ Rev 1.170 15 Jul 1998 20:08:16 MIB
+ #52554#: StarOne-Schnittstelle arbeitet jetzt mit 1/100mm
+
+ Rev 1.169 15 Jul 1998 19:49:02 MIB
+ #52660#: SelectedItems, #52664#: neue Behandlung von Default-Werten
+
+ Rev 1.168 15 Jul 1998 10:12:42 MIB
+ #52098#: Listbox-Select-Property geaender, #52729#: Controls ohne Form ignorieren
+
+ Rev 1.167 14 Jul 1998 18:39:18 MIB
+ #51982#: genererische Events nicht fuer JavaScript/StarBasic zulassen
+
+ Rev 1.166 14 Jul 1998 09:07:04 MIB
+ fix #52729#: Controls gar nicht erst einfuegen, wenn es keine Form gibt
+
+ Rev 1.165 10 Jul 1998 13:55:40 TJ
+ include fuer attacher
+
+ Rev 1.164 08 Jul 1998 17:20:10 MIB
+ StarScript
+
+ Rev 1.163 07 Jul 1998 15:15:54 OM
+ Muss Aenderung SubmitAction->TargetURL u.a.
+
+ Rev 1.162 04 Jul 1998 17:43:50 MIB
+ StarScript in IDE, StarScript-Events
+
+ Rev 1.161 02 Jul 1998 10:43:16 MIB
+ Controls wegen Event-Registrierung erst in dir Form und dann in die Page einfuegen
+
+ Rev 1.160 01 Jul 1998 10:27:18 MIB
+ Muss-Aenderung: Font-Hoehen nun in pt
+
+ Rev 1.159 30 Jun 1998 12:23:18 MIB
+ Muss-Aenderung: Multi-Property
+
+ Rev 1.158 29 Jun 1998 15:07:08 MIB
+ Event-Export, kein Value bei File-Control
+
+ Rev 1.157 26 Jun 1998 17:06:20 MIB
+ ItemListener statt ActionListener bei Checkboxen/radiobuttons
+
+ Rev 1.156 26 Jun 1998 09:57:06 MIB
+ Sumit- und Reset-Events
+
+ Rev 1.155 24 Jun 1998 09:36:54 MIB
+ fix: Hidden-Controls nun wirklich einfuegen
+
+ Rev 1.154 22 Jun 1998 14:26:44 MIB
+ Listbox-Groessenberechnung jetzt richtig
+
+ Rev 1.153 19 Jun 1998 08:32:06 OS
+ SfxModel auf XModel casten
+
+ Rev 1.152 19 Jun 1998 08:28:28 MIB
+ Events setzen
+
+ Rev 1.151 18 Jun 1998 09:37:24 MIB
+ Hidden-Control freigeschaltet, Groessenberchnung verbessert, Events begonnen
+
+ Rev 1.150 15 Jun 1998 18:18:46 MIB
+ Compiler-Fehler
+
+ Rev 1.149 15 Jun 1998 08:57:04 OS
+ Headeraenderung
+
+ Rev 1.148 15 Jun 1998 08:53:16 MIB
+ Groessenberechnungen
+
+ Rev 1.147 14 Jun 1998 19:52:06 MIB
+ Groessenberechnung vorbereitet
+
+ Rev 1.146 14 Jun 1998 17:43:32 MIB
+ Neue Properties, Hidden-Control durch Edit simuliert
+
+ Rev 1.145 12 Jun 1998 11:36:56 MIB
+ form, ImageButton mit URL
+
+ Rev 1.144 10 Jun 1998 10:15:22 OS
+ Package-Umstellung
+
+ Rev 1.143 09 Jun 1998 19:02:26 MIB
+ Form ueber FormComponentFactory erzeugen
+
+ Rev 1.142 09 Jun 1998 13:26:42 MIB
+ insertShape -> insertShapeAtTextPosition
+
+ Rev 1.141 09 Jun 1998 10:15:20 MIB
+ SIZE auch fuer Nicht-Edits auswerten
+
+ Rev 1.140 04 Jun 1998 16:13:20 MIB
+ ImageButton-Verbesserungen
+
+ Rev 1.139 03 Jun 1998 12:49:38 MIB
+ Value-Liste vorbereitet
+
+ Rev 1.138 02 Jun 1998 16:04:16 MIB
+ neue Form-Control-Anbindung
+
+ Rev 1.137 29 May 1998 14:32:56 MIB
+ ImageButton (noch nicht fertig)
+
+ Rev 1.136 26 May 1998 18:08:42 MIB
+ TABINDEX, Multiline-Scrollbars, Checkbox-/Readio-Button-Default, etc.
+
+ Rev 1.135 26 May 1998 12:23:30 MIB
+ Scrollbars an Multiline-Edits aktiviert
+
+ Rev 1.134 20 May 1998 15:22:18 MIB
+ Zeichen-Objekte ueber Schnittstelle am Dok einfuegen
+
+ Rev 1.133 19 May 1998 19:15:02 MIB
+ SW-Properties nun komplett
+
+ Rev 1.132 19 May 1998 14:49:16 MIB
+ HIDDEN-Control erstmal wieder raus, RefValue- statt Value-Property
+
+ Rev 1.131 18 May 1998 16:54:32 MIB
+ SW-Properties setzen
+
+ Rev 1.130 18 May 1998 08:41:10 MIB
+ mehr Properties setzen
+
+ Rev 1.129 15 May 1998 11:31:50 MIB
+ Interface-Aenderungen
+
+ Rev 1.128 15 May 1998 10:04:32 MIB
+ UNO-Controls statt VC-Controls (noch geht nicht viel)
+
+ Rev 1.127 21 Apr 1998 13:46:12 MIB
+ fix: Keine Bookmark fuer abs-pos Objekte mit ID einfuegen
+
+ Rev 1.126 31 Mar 1998 11:19:58 MIB
+ Controls auch Rahmengebunden einfuegen
+
+ Rev 1.125 27 Mar 1998 17:27:40 MIB
+ direkte absolute Positionierung und Groessen-Export von Controls und Marquee
+
+ Rev 1.124 27 Mar 1998 10:03:28 MIB
+ direkte Positionierung von Grafiken etc.
+
+ Rev 1.123 27 Feb 1998 14:05:06 MIB
+ Auto-gebundene Rahmen
+
+ Rev 1.122 20 Feb 1998 19:03:28 MA
+ header
+
+ Rev 1.121 26 Nov 1997 19:09:30 MA
+ includes
+
+ Rev 1.120 08 Sep 1997 10:38:20 MIB
+ Keine Schleifen fuer PRE mehr (auch fix #41253#)
+
+ Rev 1.119 01 Sep 1997 13:52:48 MIB
+ Zeichensetz-/Zeilenende-Konvertierung fuer Event-Optionen
+
+ Rev 1.118 29 Aug 1997 16:50:32 OS
+ DLL-Umstellung
+
+ Rev 1.117 18 Aug 1997 11:36:16 OS
+ includes
+
+ Rev 1.116 15 Aug 1997 12:46:30 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.115 12 Aug 1997 13:42:58 OS
+ Header-Umstellung
+
+ Rev 1.114 07 Aug 1997 15:08:52 OM
+ Headerfile-Umstellung
+
+ Rev 1.113 29 Jul 1997 20:38:42 TJ
+ includes - fuer tj
+
+ Rev 1.112 10 Jul 1997 10:29:04 MIB
+ fix #41516#: Hidden-Controls mit Durchlauf versehen
+
+ Rev 1.111 10 Jun 1997 10:32:10 MIB
+ Bei Fonts keine Breite mehr angeben
+
+ Rev 1.110 06 Jun 1997 11:56:08 MIB
+ <TEXTAREA WRAP=PHYSICAL/VIRTUAL> wie HARD/SOFT
+
+ Rev 1.109 06 Jun 1997 09:57:58 MIB
+ WRAP-Option fuer <TEXTAREA>
+
+ Rev 1.108 22 May 1997 13:23:28 MIB
+ In Combo-Boxen selektierten Eintrag ueber uber das Space-Loeschen hinaus retten
+
+ Rev 1.107 22 May 1997 13:06:32 TRI
+ includes
+
+ Rev 1.106 09 Apr 1997 14:22:18 MIB
+ in htmlform.cxx (nur noch Import) und htmlforw.cxx (nur Export) aufgeteilt
+
+ Rev 1.105 04 Apr 1997 17:43:04 NF
+ includes
+
+ Rev 1.104 25 Mar 1997 16:01:50 MIB
+ fix #36224#: CR/LF in machen VALUE-Optionen beibehalten
+
+ Rev 1.103 05 Mar 1997 14:46:06 MIB
+ Absatz-Abstaende verbessert
+
+ Rev 1.102 21 Feb 1997 15:28:28 MIB
+ fix #36692#: Fuer Forms in Tabellen ausserhalb von Zellen keine neuen Absaetze
+
+ Rev 1.101 12 Feb 1997 16:48:04 MIB
+ erstmal keine Warnungen
+
+ Rev 1.100 31 Jan 1997 14:36:38 MIB
+ SDONRESET aktiviert
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmlform.hxx b/sw/source/filter/html/htmlform.hxx
new file mode 100644
index 000000000000..9f2318864275
--- /dev/null
+++ b/sw/source/filter/html/htmlform.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlform.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _HTMLFORM_HXX
+#define _HTMLFORM_HXX
+
+
+enum HTMLEventType
+{
+ HTML_ET_ONSUBMITFORM, HTML_ET_ONRESETFORM,
+ HTML_ET_ONGETFOCUS, HTML_ET_ONLOSEFOCUS,
+ HTML_ET_ONCLICK, HTML_ET_ONCLICK_ITEM,
+ HTML_ET_ONCHANGE, HTML_ET_ONSELECT,
+ HTML_ET_END
+};
+
+extern HTMLEventType __FAR_DATA aEventTypeTable[];
+extern const sal_Char * __FAR_DATA aEventListenerTable[];
+extern const sal_Char * __FAR_DATA aEventMethodTable[];
+extern const sal_Char * __FAR_DATA aEventSDOptionTable[];
+extern const sal_Char * __FAR_DATA aEventOptionTable[];
+
+
+
+
+#endif
+
+
diff --git a/sw/source/filter/html/htmlforw.cxx b/sw/source/filter/html/htmlforw.cxx
new file mode 100644
index 000000000000..a54155e7127f
--- /dev/null
+++ b/sw/source/filter/html/htmlforw.cxx
@@ -0,0 +1,1635 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlforw.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_FORMSUBMITENCODING_HPP_
+#include <com/sun/star/form/FormSubmitEncoding.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_FORMSUBMITMETHOD_HPP_
+#include <com/sun/star/form/FormSubmitMethod.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_FORMBUTTONTYPE_HPP_
+#include <com/sun/star/form/FormButtonType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_XEVENTATTACHER_HPP_
+#include <com/sun/star/script/XEventAttacher.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_XEVENTATTACHERMANAGER_HPP_
+#include <com/sun/star/script/XEventAttacherManager.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XDRAWPAGESUPPLIER_HPP_
+#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XDRAWPAGESUPPLIER_HPP_
+#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMSSUPPLIER_HPP_
+#include <com/sun/star/form/XFormsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORM_HPP_
+#include <com/sun/star/form/XForm.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCOMPONENT_HPP_
+#include <com/sun/star/form/XFormComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_FORMCOMPONENTTYPE_HPP_
+#include <com/sun/star/form/FormComponentType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XCHILD_HPP_
+#include <com/sun/star/container/XChild.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_SCRIPTEVENTDESCRIPTOR_HPP_
+#include <com/sun/star/script/ScriptEventDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTEXTLAYOUTCONSTRAINS_HPP_
+#include <com/sun/star/awt/XTextLayoutConstrains.hpp>
+#endif
+
+#ifndef _SV_SYSTEM_HXX //autogen
+#include <vcl/system.hxx>
+#endif
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SFXMACITEM_HXX
+#include <svtools/macitem.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _HTMLOUT_HXX //autogen
+#include <svtools/htmlout.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+#ifndef _TOOLKIT_UNOHLP_HXX
+#include <toolkit/helper/vclunohelper.hxx>
+#endif
+
+#ifndef _SVDOUNO_HXX //autogen
+#include <svx/svdouno.hxx>
+#endif
+#ifndef _SVX_FMGLOB_HXX
+#include <svx/fmglob.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.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_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _UNOOBJ_HXX //autogen
+#include <unoobj.hxx>
+#endif
+#ifndef _SWDOCSH_HXX //autogen
+#include <docsh.hxx>
+#endif
+
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+
+
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+
+#ifndef _VIEWSH_HXX //autogen
+#include <viewsh.hxx>
+#endif
+#include "pam.hxx"
+#include "doc.hxx"
+#include "ndtxt.hxx"
+#include "dcontact.hxx"
+#include "flypos.hxx"
+#include "wrthtml.hxx"
+#include "htmlfly.hxx"
+#include "htmlform.hxx"
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::rtl;
+/* */
+
+const sal_uInt32 HTML_FRMOPTS_CONTROL =
+ 0;
+const sal_uInt32 HTML_FRMOPTS_CONTROL_CSS1 =
+ HTML_FRMOPT_S_ALIGN |
+ HTML_FRMOPT_S_SIZE |
+ HTML_FRMOPT_S_SPACE |
+ HTML_FRMOPT_BRCLEAR;
+const sal_uInt32 HTML_FRMOPTS_IMG_CONTROL =
+ HTML_FRMOPT_ALIGN |
+ HTML_FRMOPT_BRCLEAR;
+const sal_uInt32 HTML_FRMOPTS_IMG_CONTROL_CSS1 =
+ HTML_FRMOPT_S_ALIGN |
+ HTML_FRMOPT_S_SPACE;
+
+
+/* */
+
+struct HTMLControl
+{
+ // die Form, zu der das Control gehoert
+ Reference< container::XIndexContainer > xFormComps;
+ sal_uInt32 nNdIdx; // der Node, in dem es verankert ist
+ xub_StrLen nCount; // wie viele Controls sind in dem Node
+
+ HTMLControl( const Reference< container::XIndexContainer > & rForm,
+ sal_uInt32 nIdx );
+ ~HTMLControl();
+
+ // operatoren fuer das Sort-Array
+ sal_Bool operator==( const HTMLControl& rCtrl )
+ {
+ return nNdIdx == rCtrl.nNdIdx;
+ }
+ sal_Bool operator<( const HTMLControl& rCtrl )
+ {
+ return nNdIdx < rCtrl.nNdIdx;
+ }
+};
+
+SV_IMPL_OP_PTRARR_SORT( HTMLControls, HTMLControl* )
+
+/* */
+
+void lcl_html_outEvents( SvStream& rStrm,
+ const Reference< form::XFormComponent > rFormComp,
+ sal_Bool bCfgStarBasic,
+ rtl_TextEncoding eDestEnc )
+{
+ Reference< container::XChild > xChild( rFormComp, UNO_QUERY );
+ Reference< XInterface > xParentIfc = xChild->getParent();
+ ASSERT( xParentIfc.is(), "lcl_html_outEvents: no parent interface" );
+ if( !xParentIfc.is() )
+ return;
+ Reference< container::XIndexAccess > xIndexAcc( xParentIfc, UNO_QUERY );
+ Reference< script::XEventAttacherManager > xEventManager( xParentIfc,
+ UNO_QUERY );
+ if( !xIndexAcc.is() || !xEventManager.is() )
+ return;
+
+ // Und die Position des ControlModel darin suchen
+ sal_Int32 nCount = xIndexAcc->getCount(), nPos;
+ for( nPos = 0 ; nPos < nCount; nPos++ )
+ {
+ Any aTmp = xIndexAcc->getByIndex(nPos);
+ ASSERT( aTmp.getValueType() ==
+ ::getCppuType( (Reference<form::XFormComponent>*)0 ) ||
+ aTmp.getValueType() ==
+ ::getCppuType( (Reference<form::XForm>*)0 ),
+ "lcl_html_outEvents: falsche Reflection" );
+ if( aTmp.getValueType() ==
+ ::getCppuType( (Reference< form::XFormComponent >*)0) )
+
+ {
+ if( rFormComp ==
+ *(Reference< form::XFormComponent > *)aTmp.getValue() )
+ break;
+ }
+ else if( aTmp.getValueType() ==
+ ::getCppuType( (Reference< form::XForm>*)0) )
+ {
+ Reference< form::XFormComponent > xFC(
+ *(Reference< form::XForm > *)aTmp.getValue(), UNO_QUERY );
+ if( rFormComp == xFC )
+ break;
+ }
+ }
+
+ if( nPos == nCount )
+ return;
+
+ Sequence< script::ScriptEventDescriptor > aDescs =
+ xEventManager->getScriptEvents( nPos );
+ nCount = aDescs.getLength();
+ if( !nCount )
+ return;
+
+ const script::ScriptEventDescriptor *pDescs = aDescs.getConstArray();
+ for( sal_Int32 i = 0; i < nCount; i++ )
+ {
+ ScriptType eScriptType = EXTENDED_STYPE;
+ String aScriptType( pDescs[i].ScriptType );
+ if( aScriptType.EqualsIgnoreCaseAscii(SVX_MACRO_LANGUAGE_JAVASCRIPT) )
+ eScriptType = JAVASCRIPT;
+ else if( aScriptType.EqualsIgnoreCaseAscii(SVX_MACRO_LANGUAGE_STARBASIC ) )
+ eScriptType = STARBASIC;
+ if( JAVASCRIPT != eScriptType && !bCfgStarBasic )
+ continue;
+
+ String sListener( pDescs[i].ListenerType );
+ xub_StrLen nTok = sListener.GetTokenCount( '.' );
+ if( nTok )
+ sListener = sListener.GetToken( nTok-1, '.' );
+ String sMethod( pDescs[i].EventMethod );
+
+ const sal_Char *pOpt = 0;
+ for( sal_uInt16 j=0; aEventListenerTable[j]; j++ )
+ {
+ if( sListener.EqualsAscii( aEventListenerTable[j] ) &&
+ sMethod.EqualsAscii( aEventMethodTable[j] ) )
+ {
+ pOpt = (STARBASIC==eScriptType ? aEventSDOptionTable
+ : aEventOptionTable)[j];
+ break;
+ }
+ }
+
+ ByteString sOut( ' ' );
+ if( pOpt && (EXTENDED_STYPE != eScriptType ||
+ !pDescs[i].AddListenerParam.getLength()) )
+ sOut += pOpt;
+ else
+ (((sOut += sHTML_O_sdevent)
+ += ByteString( sListener, RTL_TEXTENCODING_ASCII_US)) += '-')
+ += ByteString( sMethod, RTL_TEXTENCODING_ASCII_US);
+ sOut += "=\"";
+ rStrm << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rStrm, pDescs[i].ScriptCode, eDestEnc );
+ rStrm << '\"';
+ if( EXTENDED_STYPE == eScriptType &&
+ pDescs[i].AddListenerParam.getLength() )
+ {
+ (((((sOut = ' ') += sHTML_O_sdaddparam)
+ += ByteString( sListener, RTL_TEXTENCODING_ASCII_US)) += '-')
+ += ByteString( sMethod, RTL_TEXTENCODING_ASCII_US))
+ += "=\"";
+ rStrm << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rStrm, pDescs[i].AddListenerParam,
+ eDestEnc );
+ rStrm << '\"';
+ }
+ }
+}
+
+sal_Bool lcl_html_isHTMLControl( sal_Int16 nClassId )
+{
+ sal_Bool bRet = sal_False;
+
+ switch( nClassId )
+ {
+ case form::FormComponentType::TEXTFIELD:
+ case form::FormComponentType::COMMANDBUTTON:
+ case form::FormComponentType::RADIOBUTTON:
+ case form::FormComponentType::CHECKBOX:
+ case form::FormComponentType::LISTBOX:
+ case form::FormComponentType::IMAGEBUTTON:
+ case form::FormComponentType::FILECONTROL:
+ bRet = sal_True;
+ break;
+ }
+
+ return bRet;
+}
+
+sal_Bool SwHTMLWriter::HasControls() const
+{
+ sal_uInt32 nStartIdx = pCurPam->GetPoint()->nNode.GetIndex();
+
+ // Skip all controls in front of the current paragraph
+ for( sal_uInt16 i=0; i < aHTMLControls.Count() &&
+ aHTMLControls[i]->nNdIdx < nStartIdx; i++ )
+ ;
+
+ return i < aHTMLControls.Count() && aHTMLControls[i]->nNdIdx == nStartIdx;
+}
+
+void SwHTMLWriter::OutForm( sal_Bool bTagOn, const SwStartNode *pStartNd )
+{
+ if( bPreserveForm ) // wir sind in einer Tabelle oder einem Bereich
+ return; // ueber dem eine Form aufgespannt wurde
+
+ if( !bTagOn )
+ {
+ // die Form beenden wenn alle Controls ausgegeben wurden
+ if( pxFormComps && pxFormComps->is() &&
+ (*pxFormComps)->getCount() == nFormCntrlCnt )
+ {
+ OutForm( sal_False, *pxFormComps );
+ (*pxFormComps) = 0;
+ }
+ return;
+ }
+
+ Reference< container::XIndexContainer > xNewFormComps; // die neue Form
+ sal_uInt32 nStartIdx = pStartNd ? pStartNd->GetIndex()
+ : pCurPam->GetPoint()->nNode.GetIndex();
+
+ // Ueberspringen von Controls vor dem interesanten Bereich
+ for( sal_uInt16 i=0; i < aHTMLControls.Count() &&
+ aHTMLControls[i]->nNdIdx < nStartIdx; i++ )
+ ;
+
+ if( !pStartNd )
+ {
+ // Check fuer einen einzelnen Node: da ist nur interessant, ob
+ // es zu dem Node ein Control gibt und zu welcher Form es gehoert
+ if( i < aHTMLControls.Count() &&
+ aHTMLControls[i]->nNdIdx == nStartIdx )
+ xNewFormComps = aHTMLControls[i]->xFormComps;
+ }
+ else
+ {
+ // wir klappern eine Tabelle/einen Bereich ab: hier interessiert uns:
+ // - ob es Controls mit unterschiedlichen Start-Nodes gibt
+ // - ob es eine Form gibt, fuer die nicht alle Controls in der
+ // Tabelle/dem Bereich liegen
+
+ Reference< container::XIndexContainer > xCurrentFormComps;// die aktuelle Form in der Tabelle
+ const SwStartNode *pCurrentStNd = 0; // und der Start-Node eines Ctrls
+ xub_StrLen nCurrentCtrls = 0; // und die in ihr gefundenen Controls
+ sal_uInt32 nEndIdx = pStartNd->EndOfSectionIndex();
+ for( ; i < aHTMLControls.Count() &&
+ aHTMLControls[i]->nNdIdx <= nEndIdx; i++ )
+ {
+ const SwStartNode *pCntrlStNd =
+ pDoc->GetNodes()[aHTMLControls[i]->nNdIdx]->FindStartNode();
+
+ if( xCurrentFormComps.is() )
+ {
+ // Wir befinden uns bereits in einer Form ...
+ if( xCurrentFormComps==aHTMLControls[i]->xFormComps )
+ {
+ // ... und das Control befindet sich auch darin ...
+ if( pCurrentStNd!=pCntrlStNd )
+ {
+ // ... aber es liegt in einer anderen Zelle:
+ // Dann muessen eir eine Form ueber der Tabelle
+ // aufmachen
+ xNewFormComps = xCurrentFormComps;
+ break;
+ }
+ nCurrentCtrls += aHTMLControls[i]->nCount;
+ }
+ else
+ {
+ // ... aber das Control liegt in einer anderen Zelle:
+ // Da tun wir so, als ob wir eine neue Form aufmachen
+ // und suchen weiter.
+ xCurrentFormComps = aHTMLControls[i]->xFormComps;
+ pCurrentStNd = pCntrlStNd;
+ nCurrentCtrls = aHTMLControls[i]->nCount;
+ }
+ }
+ else
+ {
+ // Wir befinden uns noch in keiner Form:
+ // Da tun wir mal so, als ob wie wir die Form aufmachen.
+ xCurrentFormComps = aHTMLControls[i]->xFormComps;
+ pCurrentStNd = pCntrlStNd;
+ nCurrentCtrls = aHTMLControls[i]->nCount;
+ }
+ }
+ if( !xNewFormComps.is() && xCurrentFormComps.is() &&
+ nCurrentCtrls != xCurrentFormComps->getCount() )
+ {
+ // In der Tablle/dem Bereich sollte eine Form aufgemacht werden,
+ // die nicht vollstaendig in der Tabelle liegt. Dan muessen
+ // wie die Form jetzt ebenfalls oeffen.
+ xNewFormComps = xCurrentFormComps;
+ }
+ }
+
+ if( xNewFormComps.is() &&
+ (!pxFormComps || !(xNewFormComps == *pxFormComps)) )
+ {
+ // Es soll eine Form aufgemacht werden ...
+ if( pxFormComps && pxFormComps->is() )
+ {
+ // .. es ist aber noch eine Form offen: Das ist in
+ // jedem Fall eine Fehler, aber wir schliessen die alte
+ // Form trotzdem
+ OutForm( sal_False, *pxFormComps );
+
+ //!!!nWarn = 1; // Control wird falscher Form zugeordnet
+ }
+
+ if( !pxFormComps )
+ pxFormComps = new Reference< container::XIndexContainer > ;
+ *pxFormComps = xNewFormComps;
+
+ OutForm( sal_True, *pxFormComps );
+ Reference< beans::XPropertySet > xTmp;
+ OutHiddenControls( *pxFormComps, xTmp );
+ }
+}
+
+void SwHTMLWriter::OutHiddenForms()
+{
+ // Ohne DrawModel kann es auch keine Controls geben. Dann darf man
+ // auch nicht per UNO auf das Dok zugreifen, weil sonst ein DrawModel
+ // angelegt wird.
+ if( !pDoc->GetDrawModel() )
+ return;
+
+ SwDocShell *pDocSh = pDoc->GetDocShell();
+ if( !pDocSh )
+ return;
+
+ Reference< drawing::XDrawPageSupplier > xDPSupp( pDocSh->GetBaseModel(),
+ UNO_QUERY );
+ ASSERT( xDPSupp.is(), "XTextDocument nicht vom XModel erhalten" );
+ Reference< drawing::XDrawPage > xDrawPage = xDPSupp->getDrawPage();
+
+ ASSERT( xDrawPage.is(), "XDrawPage nicht erhalten" );
+ if( !xDrawPage.is() )
+ return;
+
+ Reference< form::XFormsSupplier > xFormsSupplier( xDrawPage, UNO_QUERY );
+ ASSERT( xFormsSupplier.is(),
+ "XFormsSupplier nicht vom XDrawPage erhalten" );
+
+ Reference< container::XNameContainer > xTmp = xFormsSupplier->getForms();
+ ASSERT( xTmp.is(), "XForms nicht erhalten" );
+ Reference< container::XIndexContainer > xForms( xTmp, UNO_QUERY );
+ ASSERT( xForms.is(), "XForms ohne container::XIndexContainer?" );
+
+ sal_Int32 nCount = xForms->getCount();
+ for( sal_Int32 i=0; i<nCount; i++)
+ {
+ Any aTmp = xForms->getByIndex( i );
+ ASSERT( aTmp.getValueType() ==
+ ::getCppuType((Reference< form::XForm >*)0),
+ "OutHiddenForms: falsche Reflection" );
+ if( aTmp.getValueType() ==
+ ::getCppuType((Reference< form::XForm >*)0) )
+ OutHiddenForm( *(Reference< form::XForm > *)aTmp.getValue() );
+ }
+}
+
+void SwHTMLWriter::OutHiddenForm( const Reference< form::XForm > & rForm )
+{
+ Reference< container::XIndexContainer > xFormComps( rForm, UNO_QUERY );
+ if( !xFormComps.is() )
+ return;
+
+ sal_Int32 nCount = xFormComps->getCount();
+ sal_Bool bHiddenOnly = nCount > 0, bHidden = sal_False;
+ for( sal_Int32 i=0; i<nCount; i++ )
+ {
+ Any aTmp = xFormComps->getByIndex( i );
+ ASSERT( aTmp.getValueType() ==
+ ::getCppuType((Reference<form::XFormComponent>*)0),
+ "OutHiddenForm: falsche Reflection" );
+ if( aTmp.getValueType() !=
+ ::getCppuType((Reference<form::XFormComponent>*)0) )
+ continue;
+
+ Reference< form::XFormComponent > xFormComp =
+ *(Reference< form::XFormComponent > *)aTmp.getValue();
+ Reference< form::XForm > xForm( xFormComp, UNO_QUERY );
+ if( xForm.is() )
+ OutHiddenForm( xForm );
+
+ if( bHiddenOnly )
+ {
+ Reference< beans::XPropertySet > xPropSet( xFormComp, UNO_QUERY );
+ OUString sPropName = OUString::createFromAscii( "ClassId" );
+ if( xPropSet->getPropertySetInfo()->hasPropertyByName( sPropName ) )
+ {
+ Any aTmp = xPropSet->getPropertyValue( sPropName );
+ if( aTmp.getValueType() == ::getCppuType((sal_Int16*)0) )
+ {
+ if( form::FormComponentType::HIDDENCONTROL ==
+ *(sal_Int16*)aTmp.getValue() )
+ bHidden = sal_True;
+ else if( lcl_html_isHTMLControl(
+ *(sal_Int16*)aTmp.getValue() ) )
+ bHiddenOnly = sal_False;
+ }
+ }
+ }
+ }
+
+ if( bHidden && bHiddenOnly )
+ {
+ OutForm( sal_True, xFormComps );
+ Reference< beans::XPropertySet > xTmp;
+ OutHiddenControls( xFormComps, xTmp );
+ OutForm( sal_False, xFormComps );
+ }
+}
+
+void SwHTMLWriter::OutForm( sal_Bool bOn,
+ const Reference< container::XIndexContainer > & rFormComps )
+{
+ nFormCntrlCnt = 0;
+
+ if( !bOn )
+ {
+ DecIndentLevel(); // Inhalt der Form einruecken
+ if( bLFPossible )
+ OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_form, sal_False );
+ bLFPossible = sal_True;
+
+ return;
+ }
+
+ // die neue Form wird geoeffnet
+ if( bLFPossible )
+ OutNewLine();
+ ByteString sOut( '<' );
+ sOut += sHTML_form;
+
+ Reference< beans::XPropertySet > xFormPropSet( rFormComps, UNO_QUERY );
+
+ Any aTmp = xFormPropSet->getPropertyValue(
+ OUString::createFromAscii( "Name" ) );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0) &&
+ ((OUString*)aTmp.getValue())->getLength() )
+ {
+ ((sOut += ' ') += sHTML_O_name) += "=\"";
+ Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( Strm(), *(OUString*)aTmp.getValue(),
+ eDestEnc );
+ sOut = '\"';
+ }
+
+ aTmp = xFormPropSet->getPropertyValue(
+ OUString::createFromAscii( "TargetURL" ) );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0) &&
+ ((OUString*)aTmp.getValue())->getLength() )
+ {
+ ((sOut += ' ') += sHTML_O_action) += "=\"";
+ Strm() << sOut.GetBuffer();
+ String aURL( *(OUString*)aTmp.getValue() );
+ aURL = INetURLObject::AbsToRel( aURL, INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET );
+ HTMLOutFuncs::Out_String( Strm(), aURL, eDestEnc );
+ sOut = '\"';
+ }
+
+ aTmp = xFormPropSet->getPropertyValue(
+ OUString::createFromAscii( "SubmitMethod" ) );
+ if( aTmp.getValueType() == ::getCppuType((const form::FormSubmitMethod*)0) )
+ {
+ form::FormSubmitMethod eMethod =
+ *( form::FormSubmitMethod*)aTmp.getValue();
+ if( form::FormSubmitMethod_POST==eMethod )
+ {
+ ((((sOut += ' ')
+ += sHTML_O_method) += "=\"")
+ += sHTML_METHOD_post) += '\"';
+ }
+ }
+ aTmp = xFormPropSet->getPropertyValue(
+ OUString::createFromAscii( "SubmitEncoding" ) );
+ if( aTmp.getValueType()==::getCppuType((const form::FormSubmitEncoding*)0) )
+ {
+ form::FormSubmitEncoding eEncType =
+ *( form::FormSubmitEncoding*)aTmp.getValue();
+ const sal_Char *pStr = 0;
+ switch( eEncType )
+ {
+ case form::FormSubmitEncoding_MULTIPART:
+ pStr = sHTML_ET_multipart;
+ break;
+ case form::FormSubmitEncoding_TEXT:
+ pStr = sHTML_ET_text;
+ break;
+ }
+
+ if( pStr )
+ {
+ ((((sOut += ' ')
+ += sHTML_O_enctype) += "=\"")
+ += pStr) += '\"';
+ }
+ }
+
+ aTmp = xFormPropSet->getPropertyValue(
+ OUString::createFromAscii( "TargetFrame" ) );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0)&&
+ ((OUString*)aTmp.getValue())->getLength() )
+ {
+ ((sOut += ' ') += sHTML_O_target) += "=\"";
+ Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( Strm(), *(OUString*)aTmp.getValue(),
+ eDestEnc );
+ sOut = '\"';
+ }
+
+ Strm() << sOut.GetBuffer();
+ Reference< form::XFormComponent > xFormComp( rFormComps, UNO_QUERY );
+ lcl_html_outEvents( Strm(), xFormComp, bCfgStarBasic, eDestEnc );
+ Strm() << '>';
+
+ IncIndentLevel(); // Inhalt der Form einruecken
+ bLFPossible = sal_True;
+}
+
+void SwHTMLWriter::OutHiddenControls(
+ const Reference< container::XIndexContainer > & rFormComps,
+ const Reference< beans::XPropertySet > & rPropSet )
+{
+ sal_Int32 nCount = rFormComps->getCount();
+ sal_Int32 nPos = 0;
+ sal_Bool bDone = sal_False;
+ if( rPropSet.is() )
+ {
+ Reference< form::XFormComponent > xFC( rPropSet, UNO_QUERY );
+ for( nPos=0; !bDone && nPos < nCount; nPos++ )
+ {
+ Any aTmp = rFormComps->getByIndex( nPos );
+ ASSERT( aTmp.getValueType() ==
+ ::getCppuType((Reference< form::XFormComponent>*)0),
+ "OutHiddenControls: falsche Reflection" );
+ bDone = aTmp.getValueType() ==
+ ::getCppuType((Reference< form::XFormComponent>*)0) &&
+ *(Reference< form::XFormComponent > *)aTmp.getValue() ==
+ xFC;
+ }
+ }
+
+ for( ; nPos < nCount; nPos++ )
+ {
+ Any aTmp = rFormComps->getByIndex( nPos );
+ ASSERT( aTmp.getValueType() ==
+ ::getCppuType((Reference< form::XFormComponent>*)0),
+ "OutHiddenControls: falsche Reflection" );
+ if( aTmp.getValueType() !=
+ ::getCppuType((Reference< form::XFormComponent>*)0) )
+ continue;
+ Reference< form::XFormComponent > xFC =
+ *(Reference< form::XFormComponent > *)aTmp.getValue();
+ Reference< beans::XPropertySet > xPropSet( xFC, UNO_QUERY );
+
+ OUString sPropName = OUString::createFromAscii( "ClassId" );
+ if( !xPropSet->getPropertySetInfo()->hasPropertyByName( sPropName ) )
+ continue;
+
+ aTmp = xPropSet->getPropertyValue( sPropName );
+ if( aTmp.getValueType() != ::getCppuType((const sal_Int16*)0) )
+ continue;
+
+ if( form::FormComponentType::HIDDENCONTROL ==
+ *(sal_Int16*) aTmp.getValue() )
+ {
+ if( bLFPossible )
+ OutNewLine( sal_True );
+ ByteString sOut( '<' );
+ ((((sOut += sHTML_input) += ' ') +=
+ sHTML_O_type) += '=') += sHTML_IT_hidden;
+
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "Name" ) );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0) &&
+ ((OUString*)aTmp.getValue())->getLength() )
+ {
+ (( sOut += ' ' ) += sHTML_O_name ) += "=\"";
+ Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( Strm(), *(OUString*)aTmp.getValue(),
+ eDestEnc );
+ sOut = '\"';
+ }
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "HiddenValue" ) );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0) &&
+ ((OUString*)aTmp.getValue())->getLength() )
+ {
+ ((sOut += ' ') += sHTML_O_value) += "=\"";
+ Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( Strm(), *(OUString*)aTmp.getValue(),
+ eDestEnc );
+ sOut = '\"';
+ }
+ sOut += '>';
+ Strm() << sOut.GetBuffer();
+
+ nFormCntrlCnt++;
+ }
+ else if( lcl_html_isHTMLControl( *(sal_Int16*) aTmp.getValue() ) )
+ {
+ break;
+ }
+ }
+}
+
+/* */
+
+// hier folgen die Ausgabe-Routinen, dadurch sind die form::Forms gebuendelt:
+
+const SdrObject *SwHTMLWriter::GetHTMLControl( const SwDrawFrmFmt& rFmt )
+{
+ // es muss ein Draw-Format sein
+ ASSERT( RES_DRAWFRMFMT == rFmt.Which(),
+ "GetHTMLControl nuer fuer Draw-Formate erlaubt" );
+
+ // Schauen, ob es ein SdrObject dafuer gibt
+ const SdrObject *pObj = rFmt.FindSdrObject();
+ if( !pObj || FmFormInventor != pObj->GetObjInventor() )
+ return 0;
+
+ SdrUnoObj *pFormObj = PTR_CAST( SdrUnoObj, pObj );
+ Reference< awt::XControlModel > xControlModel =
+ pFormObj->GetUnoControlModel();
+
+ ASSERT( xControlModel.is(), "UNO-Control ohne Model" );
+ if( !xControlModel.is() )
+ return 0;
+
+ Reference< beans::XPropertySet > xPropSet( xControlModel, UNO_QUERY );
+
+ OUString sPropName = OUString::createFromAscii( "ClassId" );
+ if( !xPropSet->getPropertySetInfo()->hasPropertyByName( sPropName ) )
+ return 0;
+
+ Any aTmp = xPropSet->getPropertyValue( sPropName );
+ if( aTmp.getValueType() == ::getCppuType((const sal_Int16*)0)&&
+ lcl_html_isHTMLControl( *(sal_Int16*) aTmp.getValue() ) )
+ {
+ return pObj;
+ }
+
+ return 0;
+}
+
+static void GetControlSize( const SdrObject& rSdrObj, Size& rSz,
+ SwDoc *pDoc )
+{
+ ViewShell *pVSh = 0;
+ pDoc->GetEditShell( &pVSh );
+ if( !pVSh )
+ return;
+
+ SdrUnoObj *pFormObj = PTR_CAST( SdrUnoObj, &rSdrObj );
+ Reference< awt::XControl > xControl =
+ pFormObj->GetUnoControl( pVSh->GetWin() );
+ Reference< awt::XTextLayoutConstrains > xLC( xControl, UNO_QUERY );
+ ASSERT( xLC.is(), "kein XTextLayoutConstrains" );
+ if( !xLC.is() )
+ return;
+
+ sal_Int16 nCols=0, nLines=0;
+ xLC->getColumnsAndLines( nCols, nLines );
+ rSz.Width() = nCols;
+ rSz.Height() = nLines;
+}
+
+Writer& OutHTML_DrawFrmFmtAsControl( Writer& rWrt,
+ const SwDrawFrmFmt& rFmt,
+ const SdrObject& rSdrObject,
+ sal_Bool bInCntnr )
+{
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ SdrUnoObj *pFormObj = PTR_CAST( SdrUnoObj, &rSdrObject );
+ Reference< awt::XControlModel > xControlModel =
+ pFormObj->GetUnoControlModel();
+
+ ASSERT( xControlModel.is(), "UNO-Control ohne Model" );
+ if( !xControlModel.is() )
+ return rWrt;
+
+ Reference< beans::XPropertySet > xPropSet( xControlModel, UNO_QUERY );
+
+//!!! if( rHTMLWrt.pForm != pVCSbxCtrl->GetVCForm() )
+//!!! rHTMLWrt.nWarn = 1; // Control wird falscher Form zugeordnet
+ rHTMLWrt.nFormCntrlCnt++;
+
+ const sal_Char *pTag = sHTML_input, *pType = 0;
+ OUString sValue;
+ ByteString sOptions;
+ sal_Bool bEmptyValue = sal_False;
+ Any aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "ClassId" ) );
+ sal_Int16 nClassId = *(sal_Int16*) aTmp.getValue();
+ sal_uInt32 nFrmOpts = HTML_FRMOPTS_CONTROL;
+ switch( nClassId )
+ {
+ case form::FormComponentType::CHECKBOX:
+ case form::FormComponentType::RADIOBUTTON:
+ pType = (form::FormComponentType::CHECKBOX == nClassId
+ ? sHTML_IT_checkbox
+ : sHTML_IT_radio);
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "DefaultState" ) );
+ if( aTmp.getValueType() == ::getCppuType((const sal_Int16*)0) &&
+ STATE_NOCHECK != *(sal_Int16*) aTmp.getValue() )
+ {
+ (sOptions += ' ') += sHTML_O_checked;
+ }
+
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "RefValue" ) );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0) )
+
+ {
+ const OUString& rVal = *(OUString*)aTmp.getValue();
+ if( !rVal.len() )
+ bEmptyValue = sal_True;
+ else if( rVal.compareToAscii( sHTML_on ) != 0 )
+ sValue = rVal;
+ }
+ break;
+
+ case form::FormComponentType::COMMANDBUTTON:
+ {
+ form::FormButtonType eButtonType = form::FormButtonType_PUSH;
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "ButtonType" ) );
+ if( aTmp.getValueType() ==
+ ::getCppuType((const form::FormButtonType*)0) )
+ eButtonType = *( form::FormButtonType*)aTmp.getValue();
+
+ switch( eButtonType )
+ {
+ case form::FormButtonType_RESET:
+ pType = sHTML_IT_reset;
+ break;
+ case form::FormButtonType_SUBMIT:
+ pType = sHTML_IT_submit;
+ break;
+ case form::FormButtonType_PUSH:
+ default:
+ pType = sHTML_IT_button;
+ }
+
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "Label" ) );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0) &&
+ ((OUString*)aTmp.getValue())->getLength() )
+ {
+ sValue = *(OUString*)aTmp.getValue();
+ }
+ }
+ break;
+
+ case form::FormComponentType::LISTBOX:
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine( sal_True );
+ pTag = sHTML_select;
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "Dropdown" ) );
+ if( aTmp.getValueType() == ::getBooleanCppuType() &&
+ !*(sal_Bool*)aTmp.getValue() )
+ {
+ Size aSz( 0, 0 );
+ GetControlSize( rSdrObject, aSz, rWrt.pDoc );
+
+ // wieviele sind sichtbar ??
+ if( aSz.Height() )
+ (((sOptions += ' ' ) += sHTML_O_size ) += '=' )
+ += ByteString::CreateFromInt32( aSz.Height() );
+
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "MultiSelection" ) );
+ if( aTmp.getValueType() == ::getBooleanCppuType() &&
+ *(sal_Bool*)aTmp.getValue() )
+ {
+ (sOptions += ' ' ) += sHTML_O_multiple;
+ }
+ }
+ break;
+
+ case form::FormComponentType::TEXTFIELD:
+ {
+ Size aSz( 0, 0 );
+ GetControlSize( rSdrObject, aSz, rWrt.pDoc );
+
+ sal_Bool bMultiLine = sal_False;
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "MultiLine" ) );
+ bMultiLine = aTmp.getValueType() == ::getBooleanCppuType() &&
+ *(sal_Bool*)aTmp.getValue();
+
+ if( bMultiLine )
+ {
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine( sal_True );
+ pTag = sHTML_textarea;
+
+ if( aSz.Height() )
+ (((sOptions += ' ' ) += sHTML_O_rows ) += '=' )
+ += ByteString::CreateFromInt32( aSz.Height() );
+ if( aSz.Width() )
+ (((sOptions += ' ' ) += sHTML_O_cols ) += '=' )
+ += ByteString::CreateFromInt32( aSz.Width() );
+
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "HScroll" ) );
+ if( aTmp.getValueType() == ::getVoidCppuType() ||
+ (aTmp.getValueType() == ::getBooleanCppuType() &&
+ !*(sal_Bool*)aTmp.getValue()) )
+ {
+ const sal_Char *pWrapStr = 0;
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "HardLineBreaks" ) );
+ pWrapStr =
+ (aTmp.getValueType() == ::getBooleanCppuType() &&
+ *(sal_Bool*)aTmp.getValue()) ? sHTML_WW_hard
+ : sHTML_WW_soft;
+ (((sOptions += ' ') += sHTML_O_wrap) += '=') += pWrapStr;
+ }
+ }
+ else
+ {
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "EchoChar" ) );
+ if( aTmp.getValueType() == ::getCppuType((const sal_Int16*)0) &&
+ *(sal_Int16*)aTmp.getValue() != 0 )
+ pType = sHTML_IT_password;
+ else
+ pType = sHTML_IT_text;
+
+ if( aSz.Width() )
+ (((sOptions += ' ' ) += sHTML_O_size ) += '=' )
+ += ByteString::CreateFromInt32( aSz.Width() );
+
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "MaxTextLen" ) );
+ if( aTmp.getValueType() == ::getCppuType((const sal_Int16*)0) &&
+ *(sal_Int16*) aTmp.getValue() != 0 )
+ {
+ (((sOptions += ' ' ) += sHTML_O_maxlength ) += '=' )
+ += ByteString::CreateFromInt32(
+ *(sal_Int16*) aTmp.getValue() );
+ }
+
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "DefaultText" ) );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0) &&
+ ((OUString*)aTmp.getValue())->getLength() )
+ {
+ sValue = *(OUString*)aTmp.getValue();
+ }
+ }
+ }
+ break;
+
+ case form::FormComponentType::FILECONTROL:
+ {
+ Size aSz( 0, 0 );
+ GetControlSize( rSdrObject, aSz, rWrt.pDoc );
+ pType = sHTML_IT_file;
+
+ if( aSz.Width() )
+ (((sOptions += ' ' ) += sHTML_O_size ) += '=' )
+ += ByteString::CreateFromInt32( aSz.Width() );
+
+ // VALUE vim form aus Sicherheitsgruenden nicht exportieren
+ }
+ break;
+
+
+ case form::FormComponentType::IMAGEBUTTON:
+ pType = sHTML_IT_image;
+ nFrmOpts = HTML_FRMOPTS_IMG_CONTROL;
+ break;
+
+#if 0
+ case FORMCOMPONENT_URLBUTTON:
+ {
+ // in einen Hyperlink wandeln
+ ((((sOut = '<') += sHTML_anchor) += ' ' ) += sHTML_O_href )
+ += "=\"";
+ rWrt.Strm() << sOut.GetStr();
+ HTMLOutFuncs::Out_String( rWrt.Strm(),
+ INetURLObject::AbsToRel( ((VCURLButton*)pVCSbxCtrl)->GetURL(),
+ INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET),
+ rHTMLWrt.eDestEnc, rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ const String& rTarget =
+ ((VCURLButton*)pVCSbxCtrl)->GetTargetFrame();
+ if( rTarget.Len() )
+ {
+ ((sOut += ' ') += sHTML_O_target) += "=\"";
+ rWrt.Strm() << sOut.GetStr();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), rTarget,
+ rHTMLWrt.eDestEnc, rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+ sOut += ">";
+ rWrt.Strm() << sOut.GetStr();
+
+ HTMLOutFuncs::Out_String( rWrt.Strm(),
+ ((VCURLButton*)pVCSbxCtrl)->GetText(),
+ rHTMLWrt.eDestEnc, rHTMLWrt.eDestEnc );
+ HTMLOutFuncs::Out_Tag( rWrt.Strm(), sHTML_anchor, sal_False ) << ' ';
+ }
+ break;
+#endif
+ default: // kennt HTML nicht
+ pTag = 0; // also ueberspringen
+ break;
+ }
+
+ if( !pTag )
+ return rWrt;
+
+ ByteString sOut( '<' );
+ sOut += pTag;
+ if( pType )
+ (((sOut += ' ') += sHTML_O_type) += '=') += pType;
+
+ aTmp = xPropSet->getPropertyValue( OUString::createFromAscii( "Name" ) );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0) &&
+ ((OUString*)aTmp.getValue())->getLength() )
+ {
+ (( sOut += ' ' ) += sHTML_O_name ) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), *(OUString*)aTmp.getValue(),
+ rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+
+ aTmp = xPropSet->getPropertyValue( OUString::createFromAscii( "Enabled" ) );
+ if( aTmp.getValueType() == ::getBooleanCppuType() &&
+ !*(sal_Bool*)aTmp.getValue() )
+ {
+ (( sOut += ' ' ) += sHTML_O_disabled );
+ }
+
+ if( sValue.getLength() || bEmptyValue )
+ {
+ ((sOut += ' ') += sHTML_O_value) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), sValue, rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+
+ sOut += sOptions;
+
+ if( sHTML_IT_image == pType )
+ {
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "ImageURL" ) );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0) &&
+ ((OUString*)aTmp.getValue())->getLength() )
+ {
+ ((sOut += ' ') += sHTML_O_src) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+
+ HTMLOutFuncs::Out_String( rWrt.Strm(),
+ INetURLObject::AbsToRel( *(OUString*)aTmp.getValue(),
+ INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET ),
+ rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+
+ Size aTwipSz( rSdrObject.GetLogicRect().GetSize() );
+ Size aPixelSz( 0, 0 );
+ if( (aTwipSz.Width() || aTwipSz.Height()) &&
+ Application::GetDefaultDevice() )
+ {
+ aPixelSz =
+ Application::GetDefaultDevice()->LogicToPixel( aTwipSz,
+ MapMode(MAP_TWIP) );
+ if( !aPixelSz.Width() && aTwipSz.Width() )
+ aPixelSz.Width() = 1;
+ if( !aPixelSz.Height() && aTwipSz.Height() )
+ aPixelSz.Height() = 1;
+ }
+
+ if( aPixelSz.Width() )
+ (((sOut += ' ') += sHTML_O_width) += '=')
+ += ByteString::CreateFromInt32( aPixelSz.Width() );
+
+ if( aPixelSz.Height() )
+ (((sOut += ' ') += sHTML_O_height) += '=')
+ += ByteString::CreateFromInt32( aPixelSz.Height() );
+ }
+
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "TabIndex" ) );
+ if( aTmp.getValueType() == ::getCppuType((const sal_Int16*)0) )
+ {
+ sal_Int16 nTabIndex = *(sal_Int16*) aTmp.getValue();
+ if( nTabIndex > 0 )
+ {
+ if( nTabIndex >= 32767 )
+ nTabIndex = 32767;
+
+ (((sOut += ' ') += sHTML_O_tabindex) += '=')
+ += ByteString::CreateFromInt32( nTabIndex );
+ }
+ }
+
+ if( sOut.Len() )
+ {
+ rWrt.Strm() << sOut.GetBuffer();
+ sOut.Erase();
+ }
+
+ ASSERT( !bInCntnr, "Container wird fuer Controls nicht unterstuertzt" );
+ if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_DRAW ) && !bInCntnr )
+ {
+ // Wenn Zeichen-Objekte nicht absolut positioniert werden duerfen,
+ // das entsprechende Flag loeschen.
+ nFrmOpts |= (sHTML_IT_image == pType
+ ? HTML_FRMOPTS_IMG_CONTROL_CSS1
+ : HTML_FRMOPTS_CONTROL_CSS1);
+ }
+ ByteString aEndTags;
+ if( nFrmOpts != 0 )
+ rHTMLWrt.OutFrmFmtOptions( rFmt, aEmptyStr, aEndTags, nFrmOpts );
+
+ if( rHTMLWrt.bCfgOutStyles )
+ {
+ sal_Bool bEdit = sHTML_textarea == pTag || sHTML_IT_file == pType ||
+ sHTML_IT_text == pType;
+
+ Reference< beans::XPropertySetInfo > xPropSetInfo =
+ xPropSet->getPropertySetInfo();
+ SfxItemSet aItemSet( rHTMLWrt.pDoc->GetAttrPool(), RES_CHRATR_BEGIN,
+ RES_CHRATR_END );
+ OUString sPropName = OUString::createFromAscii( "BackgroundColor" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp = xPropSet->getPropertyValue( sPropName );
+ if( aTmp.getValueType() == ::getCppuType((const sal_Int32*)0) )
+ {
+ Color aCol(*(sal_Int32*)aTmp .getValue());
+ aItemSet.Put( SvxBrushItem( aCol, RES_CHRATR_BACKGROUND ) );
+ }
+ }
+ sPropName = OUString::createFromAscii( "TextColor" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp = xPropSet->getPropertyValue( sPropName );
+ if( aTmp.getValueType() == ::getCppuType((const sal_Int32*)0) )
+ {
+ Color aColor( *(sal_Int32*)aTmp .getValue() );
+ aItemSet.Put( SvxColorItem( aColor ) );
+ }
+ }
+ sPropName = OUString::createFromAscii( "FontHeight" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp = xPropSet->getPropertyValue( sPropName );
+ if( aTmp.getValueType() == ::getCppuType((const Float*)0) )
+
+ {
+ float nHeight = *(float*)aTmp.getValue();
+ if( nHeight > 0 && (!bEdit || nHeight != 10.) )
+ aItemSet.Put( SvxFontHeightItem( sal_Int16(nHeight * 20.) ) );
+ }
+ }
+ sPropName = OUString::createFromAscii( "FontName" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp = xPropSet->getPropertyValue( sPropName );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0) &&
+ ((OUString*)aTmp.getValue())->getLength() )
+ {
+ Font aFixedFont( System::GetStandardFont( STDFONT_FIXED ) );
+ String aFName( *(OUString*)aTmp.getValue() );
+ if( !bEdit || aFName != aFixedFont.GetName() )
+ {
+ FontFamily eFamily = FAMILY_DONTKNOW;
+ sPropName = OUString::createFromAscii( "FontFamily" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp = xPropSet->getPropertyValue( sPropName );
+ if( aTmp.getValueType() == ::getCppuType((const sal_Int16*)0))
+ eFamily = (FontFamily)*(sal_Int16*) aTmp.getValue();
+ }
+ SvxFontItem aItem( eFamily, aFName, aEmptyStr );
+ aItemSet.Put( aItem );
+ }
+ }
+ }
+ sPropName = OUString::createFromAscii( "FontWeight" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp = xPropSet->getPropertyValue( sPropName );
+ if( aTmp.getValueType() == ::getCppuType((const Float*)0) )
+ {
+ FontWeight eWeight =
+ VCLUnoHelper::ConvertFontWeight( *(float*)aTmp.getValue() );
+ if( eWeight != WEIGHT_DONTKNOW && eWeight != WEIGHT_NORMAL )
+ aItemSet.Put( SvxWeightItem( eWeight ) );
+ }
+ }
+ sPropName = OUString::createFromAscii( "FontSlant" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp = xPropSet->getPropertyValue( sPropName );
+ if( aTmp.getValueType() == ::getCppuType((const sal_Int16*)0))
+ {
+ FontItalic eItalic = (FontItalic)*(sal_Int16*)aTmp.getValue();
+ if( eItalic != ITALIC_DONTKNOW && eItalic != ITALIC_NONE )
+ aItemSet.Put( SvxPostureItem( eItalic ) );
+ }
+ }
+ sPropName = OUString::createFromAscii( "FontUnderline" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp = xPropSet->getPropertyValue( sPropName );
+ if( aTmp.getValueType() == ::getCppuType((const sal_Int16*)0) )
+ {
+ FontUnderline eUnderline =
+ (FontUnderline)*(sal_Int16*)aTmp.getValue();
+ if( eUnderline != UNDERLINE_DONTKNOW &&
+ eUnderline != UNDERLINE_NONE )
+ aItemSet.Put( SvxUnderlineItem( eUnderline ) );
+ }
+ }
+ sPropName = OUString::createFromAscii( "FontStrikeout" );
+ if( xPropSetInfo->hasPropertyByName( sPropName ) )
+ {
+ aTmp = xPropSet->getPropertyValue( sPropName );
+ if( aTmp.getValueType() == ::getCppuType((const sal_Int16*)0))
+ {
+ FontStrikeout eStrikeout =
+ (FontStrikeout)*(sal_Int16*)aTmp.getValue();
+ if( eStrikeout != STRIKEOUT_DONTKNOW &&
+ eStrikeout != STRIKEOUT_NONE )
+ aItemSet.Put( SvxCrossedOutItem( eStrikeout ) );
+ }
+ }
+
+ rHTMLWrt.OutCSS1_FrmFmtOptions( rFmt, nFrmOpts, &rSdrObject,
+ &aItemSet );
+ }
+
+ Reference< form::XFormComponent > xFormComp( xControlModel, UNO_QUERY );
+ lcl_html_outEvents( rWrt.Strm(), xFormComp, rHTMLWrt.bCfgStarBasic,
+ rHTMLWrt.eDestEnc );
+
+ rWrt.Strm() << '>';
+
+ if( sHTML_select == pTag )
+ {
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "StringItemList" ) );
+ if( aTmp.getValueType() == ::getCppuType((Sequence<OUString>*)0) )
+ {
+ rHTMLWrt.IncIndentLevel(); // der Inhalt von Select darf
+ // eingerueckt werden
+ Sequence<OUString> aList( *(Sequence<OUString>*)aTmp.getValue() );
+ sal_Int32 nCnt = aList.getLength();
+ const OUString *pStrings = aList.getConstArray();
+
+ const OUString *pValues = 0;
+ sal_Int32 nValCnt = 0;
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "ListSource" ) );
+ Sequence<OUString> aValList;
+ if( aTmp.getValueType() == ::getCppuType((Sequence<OUString>*)0) )
+ {
+ aValList = *(Sequence<OUString>*)aTmp.getValue();
+ nValCnt = aValList.getLength();
+ pValues = aValList.getConstArray();
+ }
+
+ Any aSelTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "DefaultSelection" ) );
+ const sal_Int16 *pSels = 0;
+ sal_Int32 nSel = 0;
+ sal_Int32 nSelCnt = 0;
+ Sequence<sal_Int16> aSelList;
+ if( aSelTmp.getValueType() ==::getCppuType((Sequence<sal_Int16>*)0))
+ {
+ aSelList = *(Sequence<sal_Int16>*)aSelTmp.getValue();
+ nSelCnt = aSelList.getLength();
+ pSels = aSelList.getConstArray();
+ }
+
+ for( sal_Int32 i = 0; i < nCnt; i++ )
+ {
+ OUString sValue;
+ sal_Bool bSelected = sal_False, bEmptyVal = sal_False;
+ if( i < nValCnt )
+ {
+ const OUString& rVal = pValues[i];
+ if( rVal.compareToAscii( "$$$empty$$$" ) == 0 )
+ bEmptyVal = sal_True;
+ else
+ sValue = rVal;
+ }
+
+ bSelected = (nSel < nSelCnt) && pSels[nSel] == i;
+ if( bSelected )
+ nSel++;
+
+ rHTMLWrt.OutNewLine(); // jede Option bekommt eine eigene Zeile
+ (sOut = '<') += sHTML_option;
+ if( sValue.getLength() || bEmptyVal )
+ {
+ ((sOut += ' ') += sHTML_O_value) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), sValue,
+ rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+ if( bSelected )
+ (sOut += ' ') += sHTML_O_selected;
+
+ sOut += '>';
+ rWrt.Strm() << sOut.GetBuffer();
+
+ HTMLOutFuncs::Out_String( rWrt.Strm(), pStrings[i],
+ rHTMLWrt.eDestEnc );
+ }
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_option, sal_False );
+
+ rHTMLWrt.DecIndentLevel();
+ rHTMLWrt.OutNewLine();// das </SELECT> bekommt eine eigene Zeile
+ }
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_select, sal_False );
+ }
+ else if( sHTML_textarea == pTag )
+ {
+ // In TextAreas duerfen keine zusaetzlichen Spaces oder LF exportiert
+ // werden!
+ String sValue;
+ aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii( "DefaultText" ) );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0)&&
+ ((OUString*)aTmp.getValue())->getLength() )
+ {
+ sValue = String( *(OUString*)aTmp.getValue() );
+ }
+ if( sValue.Len() )
+ {
+ sValue.ConvertLineEnd( LINEEND_LF );
+ xub_StrLen nPos = 0;
+ while ( nPos != STRING_NOTFOUND )
+ {
+ if( nPos )
+ rWrt.Strm() << SwHTMLWriter::sNewLine;
+ String aLine = sValue.GetToken( 0, 0x0A, nPos );
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aLine,
+ rHTMLWrt.eDestEnc );
+ }
+ }
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_textarea, sal_False );
+ }
+ else if( sHTML_IT_checkbox == pType || sHTML_IT_radio == pType )
+ {
+ aTmp = xPropSet->getPropertyValue( OUString::createFromAscii("Label") );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0) &&
+ ((OUString*)aTmp.getValue())->getLength() )
+ {
+ sValue = *(OUString*)aTmp.getValue();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), sValue,
+ rHTMLWrt.eDestEnc ) << ' ';
+ }
+ }
+
+ if( aEndTags.Len() )
+ rWrt.Strm() << aEndTags.GetBuffer();
+
+ // Controls sind nicht absatz-gebunden, deshalb kein LF mehr ausgeben!
+ rHTMLWrt.bLFPossible = sal_False;
+
+ if( rHTMLWrt.pxFormComps && rHTMLWrt.pxFormComps->is() )
+ rHTMLWrt.OutHiddenControls( *rHTMLWrt.pxFormComps, xPropSet );
+ return rWrt;
+}
+
+/* */
+
+// Ermitteln, ob eine Format zu einem Control gehoert und wenn ja
+// dessen Form zurueckgeben
+static void AddControl( HTMLControls& rControls,
+ const SdrObject *pSdrObj,
+ sal_uInt32 nNodeIdx )
+{
+ SdrUnoObj *pFormObj = PTR_CAST( SdrUnoObj, pSdrObj );
+ ASSERT( pFormObj, "Doch kein FormObj" );
+ Reference< awt::XControlModel > xControlModel =
+ pFormObj->GetUnoControlModel();
+ if( !xControlModel.is() )
+ return;
+
+ Reference< form::XFormComponent > xFormComp( xControlModel, UNO_QUERY );
+ Reference< XInterface > xIfc = xFormComp->getParent();
+ Reference< form::XForm > xForm(xIfc, UNO_QUERY);
+
+ ASSERT( xForm.is(), "Wo ist die Form?" );
+ if( xForm.is() )
+ {
+ Reference< container::XIndexContainer > xFormComps( xForm, UNO_QUERY );
+ HTMLControl *pHCntrl = new HTMLControl( xFormComps, nNodeIdx );
+ if( !rControls.C40_PTR_INSERT( HTMLControl, pHCntrl ) )
+ {
+ sal_uInt16 nPos = 0;
+ if( rControls.Seek_Entry(pHCntrl,&nPos) &&
+ rControls[nPos]->xFormComps==xFormComps )
+ rControls[nPos]->nCount++;
+ delete pHCntrl;
+ }
+ }
+}
+
+
+void SwHTMLWriter::GetControls()
+{
+ // Idee: die absatz- und zeichengebundenen Controls werden erst einmal
+ // eingesammelt. Dabei wird fuer jedes Control des Absatz-Position
+ // und VCForm in einem Array gemerkt.
+ // Ueber dieses Array laesst sich dann feststellen, wo form::Forms geoeffnet
+ // und geschlossen werden muessen.
+ sal_uInt16 i;
+ if( pHTMLPosFlyFrms )
+ {
+ // die absatz-gebundenen Controls einsammeln
+ for( i=0; i<pHTMLPosFlyFrms->Count(); i++ )
+ {
+ const SwHTMLPosFlyFrm* pPosFlyFrm = pHTMLPosFlyFrms->GetObject( i );
+ if( HTML_OUT_CONTROL != pPosFlyFrm->GetOutFn() )
+ continue;
+
+ const SdrObject *pSdrObj = pPosFlyFrm->GetSdrObject();
+ ASSERT( pSdrObj, "Wo ist das SdrObject?" );
+ if( !pSdrObj )
+ continue;
+
+ AddControl( aHTMLControls, pSdrObj,
+ pPosFlyFrm->GetNdIndex().GetIndex() );
+ }
+ }
+
+ // und jetzt die in einem zeichengebundenen Rahmen
+ const SwSpzFrmFmts* pSpzFrmFmts = pDoc->GetSpzFrmFmts();
+ for( i=0; i<pSpzFrmFmts->Count(); i++ )
+ {
+ const SwFrmFmt *pFrmFmt = (*pSpzFrmFmts)[i];
+ if( RES_DRAWFRMFMT != pFrmFmt->Which() )
+ continue;
+
+ const SwFmtAnchor& rAnchor = pFrmFmt->GetAnchor();
+ const SwPosition *pPos = rAnchor.GetCntntAnchor();
+ if( FLY_IN_CNTNT != rAnchor.GetAnchorId() || !pPos )
+ continue;
+
+ const SdrObject *pSdrObj =
+ SwHTMLWriter::GetHTMLControl( *(const SwDrawFrmFmt*)pFrmFmt );
+ if( !pSdrObj )
+ continue;
+
+ AddControl( aHTMLControls, pSdrObj, pPos->nNode.GetIndex() );
+ }
+}
+
+/* */
+
+HTMLControl::HTMLControl(
+ const Reference< container::XIndexContainer > & rFormComps,
+ sal_uInt32 nIdx ) :
+ xFormComps( rFormComps ), nNdIdx( nIdx ), nCount( 1 )
+{}
+
+
+HTMLControl::~HTMLControl()
+{}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmlforw.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.77 2000/09/18 16:04:45 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.76 2000/08/18 13:03:18 jp
+ don't export escaped URLs
+
+ Revision 1.75 2000/06/26 09:52:10 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.74 2000/04/28 14:29:11 mib
+ unicode
+
+ Revision 1.73 2000/04/11 10:46:30 mib
+ unicode
+
+ Revision 1.72 2000/03/31 06:16:25 os
+ UNO III: toolkit includes
+
+ Revision 1.71 2000/03/30 07:31:01 os
+ UNO III
+
+ Revision 1.70 2000/03/21 15:06:17 os
+ UNOIII
+
+ Revision 1.69 2000/03/03 15:21:00 os
+ StarView remainders removed
+
+ Revision 1.68 2000/02/14 13:59:45 mib
+ #70473#: unicode
+
+ Revision 1.67 2000/02/10 09:51:54 mib
+ #68571#: text/plain encoding for submit
+
+ Revision 1.66 1999/11/22 14:25:04 os
+ headers added
+
+ Revision 1.65 1999/11/19 16:40:20 os
+ modules renamed
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmlftn.cxx b/sw/source/filter/html/htmlftn.cxx
new file mode 100644
index 000000000000..7ce227737f62
--- /dev/null
+++ b/sw/source/filter/html/htmlftn.cxx
@@ -0,0 +1,689 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlftn.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HTMLOUT_HXX //autogen
+#include <svtools/htmlout.hxx>
+#endif
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+
+#ifndef _ERRHDL_HXX //autogen
+#include <errhdl.hxx>
+#endif
+#ifndef _NDINDEX_HXX //autogen
+#include <ndindex.hxx>
+#endif
+#ifndef _FMTFTN_HXX //autogen
+#include <fmtftn.hxx>
+#endif
+#ifndef _TXTFTN_HXX //autogen
+#include <txtftn.hxx>
+#endif
+#ifndef _FTNINFO_HXX //autogen
+#include <ftninfo.hxx>
+#endif
+#ifndef _DOC_HXX //autogen
+#include <doc.hxx>
+#endif
+#ifndef _NDTXT_HXX //autogen
+#include <ndtxt.hxx>
+#endif
+
+#include "swhtml.hxx"
+#include "wrthtml.hxx"
+
+typedef SwTxtFtn *SwTxtFtnPtr;
+SV_DECL_PTRARR( SwHTMLTxtFtns, SwTxtFtnPtr, 1, 1 )
+
+struct SwHTMLFootEndNote_Impl
+{
+ SwHTMLTxtFtns aTxtFtns;
+ SvStringsDtor aNames;
+
+ String sName;
+ String sContent; // Infos fuer die letzte Fussnote
+ BOOL bEndNote;
+ BOOL bFixed;
+};
+
+
+xub_StrLen lcl_html_getNextPart( String& rPart, const String& rContent,
+ xub_StrLen nPos )
+{
+ rPart = aEmptyStr;
+ xub_StrLen nLen = rContent.Len();
+ if( nPos >= nLen )
+ {
+ nPos = STRING_MAXLEN;
+ }
+ else
+ {
+ BOOL bQuoted = FALSE, bDone = FALSE;
+ for( ; nPos < nLen && !bDone; nPos++ )
+ {
+ sal_Unicode c = rContent.GetChar( nPos );
+ switch( c )
+ {
+ case '\\':
+ if( bQuoted )
+ rPart += c;
+ bQuoted = !bQuoted;
+ break;
+
+ case ';':
+ if( bQuoted )
+ rPart += c;
+ else
+ bDone = TRUE;
+ bQuoted = FALSE;
+ break;
+
+ default:
+ rPart += c;
+ bQuoted = FALSE;
+ break;
+ }
+ }
+ }
+
+ return nPos;
+}
+
+xub_StrLen lcl_html_getEndNoteInfo( SwEndNoteInfo& rInfo,
+ const String& rContent,
+ BOOL bEndNote )
+{
+ xub_StrLen nStrPos = 0;
+ for( USHORT nPart = 0; nPart < 4; nPart++ )
+ {
+ String aPart;
+ if( STRING_MAXLEN != nStrPos )
+ nStrPos = lcl_html_getNextPart( aPart, rContent, nStrPos );
+
+ switch( nPart )
+ {
+ case 0:
+ rInfo.aFmt.eType = bEndNote ? SVX_NUM_ROMAN_LOWER : SVX_NUM_ARABIC;
+ if( aPart.Len() )
+ rInfo.aFmt.eType = (SvxExtNumType)SwHTMLParser::GetNumType( aPart,
+ rInfo.aFmt.eType );
+ break;
+
+ case 1:
+ rInfo.nFtnOffset = aPart.Len() == 0 ? 0 : (USHORT)aPart.ToInt32();
+ break;
+
+ case 2:
+ rInfo.SetPrefix( aPart );
+ break;
+
+ case 3:
+ rInfo.SetSuffix( aPart );
+ break;
+ }
+ }
+
+ return nStrPos;
+}
+
+void SwHTMLParser::FillEndNoteInfo( const String& rContent )
+{
+ SwEndNoteInfo aInfo( pDoc->GetEndNoteInfo() );
+ lcl_html_getEndNoteInfo( aInfo, rContent, TRUE );
+ pDoc->SetEndNoteInfo( aInfo );
+}
+
+void SwHTMLParser::FillFootNoteInfo( const String& rContent )
+{
+ SwFtnInfo aInfo( pDoc->GetFtnInfo() );
+
+ xub_StrLen nStrPos = lcl_html_getEndNoteInfo( aInfo, rContent, FALSE );
+
+ for( USHORT nPart = 4; nPart < 8; nPart++ )
+ {
+ String aPart;
+ if( STRING_MAXLEN != nStrPos )
+ nStrPos = lcl_html_getNextPart( aPart, rContent, nStrPos );
+
+ switch( nPart )
+ {
+ case 4:
+ aInfo.eNum = FTNNUM_DOC;
+ if( aPart.Len() )
+ {
+ switch( aPart.GetChar(0) )
+ {
+ case 'D': aInfo.eNum = FTNNUM_DOC; break;
+ case 'C': aInfo.eNum = FTNNUM_CHAPTER; break;
+ case 'P': aInfo.eNum = FTNNUM_PAGE; break;
+ }
+ }
+ break;
+
+ case 5:
+ aInfo.ePos = FTNPOS_PAGE;
+ if( aPart.Len() )
+ {
+ switch( aPart.GetChar(0) )
+ {
+ case 'C': aInfo.ePos = FTNPOS_CHAPTER; break;
+ case 'P': aInfo.ePos = FTNPOS_PAGE; break;
+ }
+ }
+ break;
+
+ case 6:
+ aInfo.aQuoVadis = aPart;
+ break;
+
+ case 7:
+ aInfo.aErgoSum = aPart;
+ break;
+ }
+ }
+
+ pDoc->SetFtnInfo( aInfo );
+}
+
+void SwHTMLParser::InsertFootEndNote( const String& rName, BOOL bEndNote,
+ BOOL bFixed )
+{
+ if( !pFootEndNoteImpl )
+ pFootEndNoteImpl = new SwHTMLFootEndNote_Impl;
+
+ pFootEndNoteImpl->sName = rName;
+ if( pFootEndNoteImpl->sName.Len() > 3 )
+ pFootEndNoteImpl->sName.Erase( pFootEndNoteImpl->sName.Len() - 3 );
+ // TODO: ToUpperAscii???
+ pFootEndNoteImpl->sName.ToUpperAscii();
+
+ pFootEndNoteImpl->bEndNote = bEndNote;
+ pFootEndNoteImpl->bFixed = bFixed;
+ pFootEndNoteImpl->sContent = aEmptyStr;
+}
+
+void SwHTMLParser::FinishFootEndNote()
+{
+ if( !pFootEndNoteImpl )
+ return;
+
+ SwFmtFtn aFtn( pFootEndNoteImpl->bEndNote );
+ if( pFootEndNoteImpl->bFixed )
+ aFtn.SetNumStr( pFootEndNoteImpl->sContent );
+
+ pDoc->Insert( *pPam, aFtn );
+ SwTxtFtn *pTxtFtn =
+ (SwTxtFtn *)pPam->GetNode()->GetTxtNode()->GetTxtAttr(
+ pPam->GetPoint()->nContent.GetIndex() - 1,
+ RES_TXTATR_FTN );
+ // In Kopf- und Fusszeilen duerfen keine Fussnoten eingefuegt werden.
+ if( pTxtFtn )
+ {
+ pFootEndNoteImpl->aTxtFtns.Insert( pTxtFtn,
+ pFootEndNoteImpl->aTxtFtns.Count() );
+
+ pFootEndNoteImpl->aNames.Insert( new String(pFootEndNoteImpl->sName),
+ pFootEndNoteImpl->aNames.Count() );
+ }
+ pFootEndNoteImpl->sName = aEmptyStr;
+ pFootEndNoteImpl->sContent = aEmptyStr;
+ pFootEndNoteImpl->bFixed = FALSE;
+}
+
+void SwHTMLParser::InsertFootEndNoteText()
+{
+ if( pFootEndNoteImpl && pFootEndNoteImpl->bFixed )
+ pFootEndNoteImpl->sContent += aToken;
+}
+
+void SwHTMLParser::DeleteFootEndNoteImpl()
+{
+ delete pFootEndNoteImpl;
+ pFootEndNoteImpl = 0;
+}
+
+SwNodeIndex *SwHTMLParser::GetFootEndNoteSection( const String& rName )
+{
+ SwNodeIndex *pSttNdIdx = 0;
+
+ if( pFootEndNoteImpl )
+ {
+ String aName( rName );
+ // TODO: ToUpperAscii
+ aName.ToUpperAscii();
+
+ USHORT nCount = pFootEndNoteImpl->aNames.Count();
+ for( USHORT i=0; i<nCount; i++ )
+ {
+ if( *pFootEndNoteImpl->aNames[i] == aName )
+ {
+ pSttNdIdx = pFootEndNoteImpl->aTxtFtns[i]->GetStartNode();
+ pFootEndNoteImpl->aNames.DeleteAndDestroy( i, 1 );
+ pFootEndNoteImpl->aTxtFtns.Remove( i, 1 );
+ if( !pFootEndNoteImpl->aNames.Count() )
+ {
+ delete pFootEndNoteImpl;
+ pFootEndNoteImpl = 0;
+ }
+
+ break;
+ }
+ }
+ }
+
+ return pSttNdIdx;
+}
+
+Writer& OutHTML_SwFmtFtn( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ SwFmtFtn& rFmtFtn = (SwFmtFtn&)rHt;
+ SwTxtFtn *pTxtFtn = rFmtFtn.GetTxtFtn();
+ if( !pTxtFtn )
+ return rWrt;
+
+ String sFtnName, sClass;
+ USHORT nPos;
+ if( rFmtFtn.IsEndNote() )
+ {
+ nPos = rHTMLWrt.pFootEndNotes ? rHTMLWrt.pFootEndNotes->Count() : 0;
+ ASSERT( nPos == rHTMLWrt.nFootNote + rHTMLWrt.nEndNote,
+ "OutHTML_SwFmtFtn: Position falsch" );
+ sClass.AssignAscii( sHTML_sdendnote_anc );
+ sFtnName.AssignAscii( sHTML_sdendnote );
+ sFtnName += String::CreateFromInt32( (sal_Int32)(++rHTMLWrt.nEndNote) );
+ }
+ else
+ {
+ nPos = rHTMLWrt.nFootNote;
+ sClass.AssignAscii( sHTML_sdfootnote_anc );
+ sFtnName.AssignAscii( sHTML_sdfootnote);
+ sFtnName += String::CreateFromInt32( (sal_Int32)(++rHTMLWrt.nFootNote));
+ }
+
+ if( !rHTMLWrt.pFootEndNotes )
+ rHTMLWrt.pFootEndNotes = new SwHTMLTxtFtns;
+ rHTMLWrt.pFootEndNotes->Insert( pTxtFtn, nPos );
+
+ ByteString sOut( '<' );
+ (((sOut += sHTML_anchor) += ' ') += sHTML_O_class) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), sClass, rHTMLWrt.eDestEnc );
+ ((sOut += "\" ") += sHTML_O_name) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), sFtnName, rHTMLWrt.eDestEnc );
+ (((sOut += sHTML_FTN_anchor) += "\" ") += sHTML_O_href) += "=\"#";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), sFtnName, rHTMLWrt.eDestEnc );
+ (sOut += sHTML_FTN_symbol)+= '\"';
+ if( rFmtFtn.GetNumStr().Len() )
+ (sOut += ' ') += sHTML_O_sdfixed;
+ sOut += '>';
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_superscript, TRUE );
+
+ HTMLOutFuncs::Out_String( rWrt.Strm(), rFmtFtn.GetViewNumStr(*rWrt.pDoc),
+ rHTMLWrt.eDestEnc );
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_superscript, FALSE );
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_anchor, FALSE );
+
+ return rWrt;
+}
+
+void SwHTMLWriter::OutFootEndNotes()
+{
+ ASSERT( pFootEndNotes,
+ "SwHTMLWriter::OutFootEndNotes(): unnoetiger Aufruf" );
+ if( !pFootEndNotes )
+ return;
+
+#ifndef PRODUCT
+ USHORT nFtn = nFootNote, nEn = nEndNote;
+#endif
+ nFootNote = 0, nEndNote = 0;
+
+ for( USHORT i=0; i<pFootEndNotes->Count(); i++ )
+ {
+ SwTxtFtn *pTxtFtn = (*pFootEndNotes)[i];
+ pFmtFtn = &pTxtFtn->GetFtn();
+
+ String sFtnName, sClass;
+ if( pFmtFtn->IsEndNote() )
+ {
+ sClass.AssignAscii( sHTML_sdendnote );
+ sFtnName.AssignAscii( sHTML_sdendnote );
+ sFtnName.Append( String::CreateFromInt32((sal_Int32)(++nEndNote)) );
+ }
+ else
+ {
+ sClass.AssignAscii( sHTML_sdfootnote );
+ sFtnName.AssignAscii( sHTML_sdfootnote );
+ sFtnName.Append( String::CreateFromInt32((sal_Int32)(++nFootNote)));
+ }
+
+ if( bLFPossible )
+ OutNewLine();
+ ByteString sOut( '<' );
+ (((sOut += sHTML_division) += ' ') += sHTML_O_id) += "=\"";
+ Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( Strm(), sFtnName, eDestEnc );
+ Strm() << "\">";
+
+ bLFPossible = TRUE;
+ IncIndentLevel(); // Inhalt von <DIV> einruecken
+
+ ASSERT( pTxtFtn, "SwHTMLWriter::OutFootEndNotes: SwTxtFtn fehlt" );
+ SwNodeIndex *pSttNdIdx = pTxtFtn->GetStartNode();
+ ASSERT( pSttNdIdx,
+ "SwHTMLWriter::OutFootEndNotes: StartNode-Index fehlt" );
+ if( pSttNdIdx )
+ {
+ HTMLSaveData aSaveData( *this, pSttNdIdx->GetIndex()+1,
+ pSttNdIdx->GetNode().EndOfSectionIndex(), GetFlyFrmFmt(),
+ FALSE );
+ Out_SwDoc( pCurPam );
+ }
+
+ DecIndentLevel(); // Inhalt von <DIV> einruecken
+ if( bLFPossible )
+ OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_division, FALSE );
+ bLFPossible = TRUE;
+
+ ASSERT( !pFmtFtn,
+ "SwHTMLWriter::OutFootEndNotes: Ftn wurde nicht ausgegeben" );
+ if( pFmtFtn )
+ {
+ if( pFmtFtn->IsEndNote() )
+ nEndNote++;
+ else
+ nFootNote++;
+
+ pFmtFtn = 0;
+ }
+ }
+
+#ifndef PRODUCT
+ ASSERT( nFtn == nFootNote,
+ "SwHTMLWriter::OutFootEndNotes: Anzahl Fussnoten stimmt nicht" );
+ ASSERT( nEn == nEndNote,
+ "SwHTMLWriter::OutFootEndNotes: Anzahl Endnoten stimmt nicht" );
+#endif
+
+ delete pFootEndNotes;
+ pFootEndNotes = 0;
+ nFootNote = nEndNote = 0;
+}
+
+xub_StrLen SwHTMLWriter::GetFootEndNoteSymLen( const SwFmtFtn& rFmtFtn )
+{
+ xub_StrLen nLen = rFmtFtn.GetViewNumStr( *pDoc ).Len();
+
+ if( rFmtFtn.GetNumStr().Len() == 0 )
+ {
+ const SwEndNoteInfo * pInfo =
+ rFmtFtn.IsEndNote() ? &pDoc->GetEndNoteInfo() : &pDoc->GetFtnInfo();
+
+ nLen += pInfo->GetPrefix().Len();
+ nLen += pInfo->GetSuffix().Len();
+ }
+
+ return nLen;
+}
+
+void SwHTMLWriter::OutFootEndNoteSym( const SwFmtFtn& rFmtFtn )
+{
+ const SwEndNoteInfo *pInfo;
+
+ String sFtnName, sClass, sPrefix, sSuffix;
+ if( rFmtFtn.IsEndNote() )
+ {
+ sClass.AssignAscii( sHTML_sdendnote_sym );
+ sFtnName.AssignAscii( sHTML_sdendnote );
+ sFtnName.Append( String::CreateFromInt32((sal_Int32)nEndNote) );
+ pInfo = &pDoc->GetEndNoteInfo();
+ }
+ else
+ {
+ sClass.AssignAscii( sHTML_sdfootnote_sym );
+ sFtnName.AssignAscii( sHTML_sdfootnote );
+ sFtnName.Append( String::CreateFromInt32((sal_Int32)nFootNote));
+ pInfo = &pDoc->GetFtnInfo();
+ }
+
+ ByteString sOut( '<' );
+ (((sOut += sHTML_anchor) += ' ') += sHTML_O_class) += "=\"";
+ Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( Strm(), sClass, eDestEnc );
+ ((sOut += "\" ") += sHTML_O_name) += "=\"";
+ Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( Strm(), sFtnName, eDestEnc );
+ (((sOut += sHTML_FTN_symbol) +="\" ") += sHTML_O_href) += "=\"#";
+ Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( Strm(), sFtnName, eDestEnc );
+ (sOut += sHTML_FTN_anchor) += "\">";
+ Strm() << sOut.GetBuffer();
+
+ BOOL bAuto = rFmtFtn.GetNumStr().Len() == 0;
+ String sNum;
+ if( bAuto )
+ sNum += pInfo->GetPrefix();
+ sNum += rFmtFtn.GetViewNumStr(*pDoc);
+ if( bAuto )
+ sNum += pInfo->GetSuffix();
+ HTMLOutFuncs::Out_String( Strm(), sNum, eDestEnc );
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_anchor, FALSE );
+}
+
+USHORT lcl_html_fillEndNoteInfo( const SwEndNoteInfo& rInfo,
+ String *pParts,
+ BOOL bEndNote )
+{
+ USHORT nParts = 0;
+ SvxExtNumType eFmt = rInfo.aFmt.eType;
+ if( (bEndNote ? SVX_NUM_ROMAN_LOWER : SVX_NUM_ARABIC) != eFmt )
+ {
+ const sal_Char *pStr = SwHTMLWriter::GetNumFormat( eFmt );
+ if( pStr )
+ {
+ pParts[0] = String::CreateFromAscii( pStr );
+ nParts = 1;
+ }
+ }
+ if( rInfo.nFtnOffset > 0 )
+ {
+ pParts[1] = String::CreateFromInt32( (sal_Int32)rInfo.nFtnOffset );
+ nParts = 2;
+ }
+ if( rInfo.GetPrefix().Len() > 0 )
+ {
+ pParts[2] = rInfo.GetPrefix();
+ nParts = 3;
+ }
+ if( rInfo.GetSuffix().Len() > 0 )
+ {
+ pParts[3] = rInfo.GetSuffix();
+ nParts = 4;
+ }
+
+ return nParts;
+}
+
+void lcl_html_outFootEndNoteInfo( Writer& rWrt, String *pParts,
+ USHORT nParts, const sal_Char *pName )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ String aContent;
+ for( USHORT i=0; i<nParts; i++ )
+ {
+ xub_StrLen nPos = 0;
+ String aTmp( pParts[i] );
+ String aRep( String::CreateFromAscii("\\\\") );
+ while( STRING_NOTFOUND != (nPos = aTmp.SearchAndReplaceAscii( "\\",
+ aRep, nPos ) ) )
+ nPos += 2;
+ nPos = 0;
+ aRep.AssignAscii( "\\;" );
+ while( STRING_NOTFOUND != (nPos = aTmp.SearchAndReplaceAscii( ";",
+ aRep, nPos ) ) )
+ nPos += 2;
+ if( i > 0 )
+ aContent += ';';
+ aContent += aTmp;
+ }
+
+ rHTMLWrt.OutNewLine();
+ ByteString sOut( '<' );
+ (((((((sOut += sHTML_meta) += ' ')
+ += sHTML_O_name) += "=\"") += pName) += "\" ")
+ += sHTML_O_content) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aContent, rHTMLWrt.eDestEnc );
+ rWrt.Strm() << "\">";
+}
+
+void SwHTMLWriter::OutFootEndNoteInfo()
+{
+ // Nummerntyp (1 bzw. i)
+ // Offset (0)
+ // Davor
+ // Dahinter
+ // Dok/Seite/Kap (D)
+ // Position (S)
+ // Folgeseite
+ // Beginn
+
+ {
+ const SwFtnInfo& rInfo = pDoc->GetFtnInfo();
+ String aParts[8];
+ USHORT nParts = lcl_html_fillEndNoteInfo( rInfo, aParts, FALSE );
+ if( rInfo.eNum != FTNNUM_DOC )
+ {
+ aParts[4] = rInfo.eNum == FTNNUM_CHAPTER ? 'C' : 'P';
+ nParts = 5;
+ }
+ if( rInfo.ePos != FTNPOS_PAGE)
+ {
+ aParts[5] = 'C';
+ nParts = 6;
+ }
+ if( rInfo.aQuoVadis.Len() > 0 )
+ {
+ aParts[6] = rInfo.aQuoVadis;
+ nParts = 7;
+ }
+ if( rInfo.aErgoSum.Len() > 0 )
+ {
+ aParts[7] = rInfo.aErgoSum;
+ nParts = 8;
+ }
+ if( nParts > 0 )
+ lcl_html_outFootEndNoteInfo( *this, aParts, nParts,
+ sHTML_META_sdfootnote );
+ }
+
+ {
+ const SwEndNoteInfo& rInfo = pDoc->GetEndNoteInfo();
+ String aParts[4];
+ USHORT nParts = lcl_html_fillEndNoteInfo( rInfo, aParts, TRUE );
+ if( nParts > 0 )
+ lcl_html_outFootEndNoteInfo( *this, aParts, nParts,
+ sHTML_META_sdendnote );
+ }
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.6 2000/09/18 16:04:45 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.5 2000/04/10 12:20:56 mib
+ unicode
+
+ Revision 1.4 1999/09/21 09:49:49 mib
+ multiple text encodings
+
+ Revision 1.3 1999/09/17 12:13:24 mib
+ support of multiple and non system text encodings
+
+ Revision 1.2 1998/11/17 09:44:36 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+
+ Rev 1.1 17 Nov 1998 10:44:36 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.0 02 Nov 1998 17:21:20 MIB
+ #58480#: Fuss-/Endnoten
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmlgrin.cxx b/sw/source/filter/html/htmlgrin.cxx
new file mode 100644
index 000000000000..49fa2c68a175
--- /dev/null
+++ b/sw/source/filter/html/htmlgrin.cxx
@@ -0,0 +1,1656 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlgrin.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+
+#include "hintids.hxx"
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _IMAP_HXX //autogen
+#include <svtools/imap.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+
+
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTURL_HXX //autogen
+#include <fmturl.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include "frmatr.hxx"
+#endif
+#ifndef _CHARATR_HXX
+#include "charatr.hxx"
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+#ifndef _CHARFMT_HXX //autogen
+#include <charfmt.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _SWDOCSH_HXX //autogen
+#include <docsh.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _BOOKMRK_HXX
+#include <bookmrk.hxx>
+#endif
+#ifndef _NDGRF_HXX
+#include <ndgrf.hxx>
+#endif
+#ifndef _HTMLNUM_HXX
+#include <htmlnum.hxx>
+#endif
+#ifndef _SWCSS1_HXX
+#include <swcss1.hxx>
+#endif
+#ifndef _SWHTML_HXX
+#include <swhtml.hxx>
+#endif
+
+
+HTMLOptionEnum __FAR_DATA aHTMLImgHAlignTable[] =
+{
+ { sHTML_AL_left, HORI_LEFT },
+ { sHTML_AL_right, HORI_RIGHT },
+ { 0, 0 }
+};
+
+
+HTMLOptionEnum __FAR_DATA aHTMLImgVAlignTable[] =
+{
+ { sHTML_VA_top, VERT_LINE_TOP },
+ { sHTML_VA_texttop, VERT_CHAR_TOP },
+ { sHTML_VA_middle, VERT_CENTER },
+ { sHTML_AL_center, VERT_CENTER },
+ { sHTML_VA_absmiddle, VERT_LINE_CENTER },
+ { sHTML_VA_bottom, VERT_TOP },
+ { sHTML_VA_baseline, VERT_TOP },
+ { sHTML_VA_absbottom, VERT_LINE_BOTTOM },
+ { 0, 0 }
+};
+
+SV_IMPL_PTRARR( ImageMaps, ImageMapPtr )
+
+ImageMap *SwHTMLParser::FindImageMap( const String& rName ) const
+{
+ ImageMap *pImageMap = 0;
+
+ ASSERT( rName.GetChar(0) != '#', "FindImageName: Name beginnt mit #!" );
+
+ if( pImageMaps )
+ {
+ for( USHORT i=0; i<pImageMaps->Count(); i++ )
+ {
+ ImageMap *pIMap = (*pImageMaps)[i];
+ if( rName.EqualsIgnoreCaseAscii( pIMap->GetName() ) )
+ {
+ pImageMap = pIMap;
+ break;
+ }
+ }
+ }
+ return pImageMap;
+}
+
+void SwHTMLParser::ConnectImageMaps()
+{
+ SwNodes& rNds = pDoc->GetNodes();
+ // auf den Start-Node der 1. Section
+ ULONG nIdx = rNds.GetEndOfAutotext().StartOfSectionIndex() + 1;
+ ULONG nEndIdx = rNds.GetEndOfAutotext().GetIndex();
+
+ SwGrfNode* pGrfNd;
+ while( nMissingImgMaps > 0 && nIdx < nEndIdx )
+ {
+ SwNode *pNd = rNds[nIdx + 1];
+ if( 0 != (pGrfNd = pNd->GetGrfNode()) )
+ {
+ SwFrmFmt *pFmt = pGrfNd->GetFlyFmt();
+ SwFmtURL aURL( pFmt->GetURL() );
+ const ImageMap *pIMap = aURL.GetMap();
+ if( pIMap && pIMap->GetIMapObjectCount()==0 )
+ {
+ // Die (leere) Image-Map des Nodes wird entweder
+ // durch die jetzt gefundene Image-Map ersetzt
+ // oder geloescht.
+ ImageMap *pNewIMap =
+ FindImageMap( pIMap->GetName() );
+ aURL.SetMap( pNewIMap );
+ pFmt->SetAttr( aURL );
+ if( !pGrfNd->IsScaleImageMap() )
+ {
+ // die Grafikgroesse ist mitlerweile da oder dir
+ // Grafik muss nicht skaliert werden
+ pGrfNd->ScaleImageMap();
+ }
+ nMissingImgMaps--; // eine Map weniger suchen
+ }
+ }
+ nIdx = rNds[nIdx]->EndOfSectionIndex() + 1;
+ }
+}
+
+
+/* */
+
+void SwHTMLParser::SetAnchorAndAdjustment( SwVertOrient eVertOri,
+ SwHoriOrient eHoriOri,
+ const SfxItemSet &rCSS1ItemSet,
+ const SvxCSS1PropertyInfo &rCSS1PropInfo,
+ SfxItemSet& rFrmItemSet )
+{
+ const SfxItemSet *pCntnrItemSet = 0;
+ USHORT i = aContexts.Count();
+ while( !pCntnrItemSet && i > nContextStMin )
+ pCntnrItemSet = aContexts[--i]->GetFrmItemSet();
+
+ if( pCntnrItemSet )
+ {
+ // Wenn wir und in einem Container befinden wird die Verankerung
+ // des Containers uebernommen.
+ rFrmItemSet.Put( *pCntnrItemSet );
+ }
+ else if( pCSS1Parser->MayBePositioned( rCSS1PropInfo, TRUE ) )
+ {
+ // Wenn die Ausrichtung anhand der CSS1-Optionen gesetzt werden kann
+ // werden die benutzt.
+ SetAnchorAndAdjustment( rCSS1ItemSet, rCSS1PropInfo, rFrmItemSet );
+ }
+ else
+ {
+ // Sonst wird die Ausrichtung entsprechend der normalen HTML-Optionen
+ // gesetzt.
+ SetAnchorAndAdjustment( eVertOri, eHoriOri, rFrmItemSet );
+ }
+}
+
+void SwHTMLParser::SetAnchorAndAdjustment( SwVertOrient eVertOri,
+ SwHoriOrient eHoriOri,
+ SfxItemSet& rFrmSet,
+ BOOL bDontAppend )
+{
+ BOOL bMoveBackward = FALSE;
+ SwFmtAnchor aAnchor( FLY_IN_CNTNT );
+ SwRelationOrient eVertRel = FRAME;
+
+ if( HORI_NONE != eHoriOri )
+ {
+ // den Absatz-Einzug bestimmen
+ USHORT nLeftSpace = 0, nRightSpace = 0;
+ short nIndent = 0;
+ GetMarginsFromContextWithNumBul( nLeftSpace, nRightSpace, nIndent );
+
+ // Horizonale Ausrichtung und Umlauf bestimmen.
+ SwRelationOrient eHoriRel;
+ SwSurround eSurround;
+ switch( eHoriOri )
+ {
+ case HORI_LEFT:
+ eHoriRel = nLeftSpace ? PRTAREA : FRAME;
+ eSurround = SURROUND_RIGHT;
+ break;
+ case HORI_RIGHT:
+ eHoriRel = nRightSpace ? PRTAREA : FRAME;
+ eSurround = SURROUND_LEFT;
+ break;
+ case HORI_CENTER: // fuer Tabellen
+ eHoriRel = FRAME;
+ eSurround = SURROUND_NONE;
+ break;
+ default:
+ eHoriRel = FRAME;
+ eSurround = SURROUND_PARALLEL;
+ break;
+ }
+
+ // Einen neuen Absatz aufmachen, wenn der aktuelle
+ // absatzgebundene Rahmen ohne Umlauf enthaelt.
+ if( !bDontAppend && HasCurrentParaFlys( TRUE ) )
+ {
+ // Wenn der Absatz nur Grafiken enthaelt, braucht er
+ // auch keinen unteren Absatz-Abstand. Da hier auch bei
+ // Verwendung von Styles kein Abstand enstehen soll, wird
+ // hier auch geweohnlich attributiert !!!
+ USHORT nUpper=0, nLower=0;
+ GetULSpaceFromContext( nUpper, nLower );
+ InsertAttr( SvxULSpaceItem( nUpper, 0 ), FALSE, TRUE );
+
+ AppendTxtNode( AM_NOSPACE );
+
+ if( nUpper )
+ {
+ NewAttr( &aAttrTab.pULSpace, SvxULSpaceItem( 0, nLower ) );
+ aParaAttrs.Insert( aAttrTab.pULSpace, aParaAttrs.Count() );
+ EndAttr( aAttrTab.pULSpace, 0, FALSE );
+ }
+ }
+
+ // Vertikale Ausrichtung und Verankerung bestimmen.
+ xub_StrLen nCntnt = pPam->GetPoint()->nContent.GetIndex();
+ if( nCntnt )
+ {
+ aAnchor.SetType( FLY_AUTO_CNTNT );
+ bMoveBackward = TRUE;
+ eVertOri = VERT_CHAR_BOTTOM;
+ eVertRel = REL_CHAR;
+ }
+ else
+ {
+ aAnchor.SetType( FLY_AT_CNTNT );
+ eVertOri = VERT_TOP;
+ eVertRel = PRTAREA;
+ }
+
+ rFrmSet.Put( SwFmtHoriOrient( 0, eHoriOri, eHoriRel) );
+
+ rFrmSet.Put( SwFmtSurround( eSurround ) );
+ }
+ rFrmSet.Put( SwFmtVertOrient( 0, eVertOri, eVertRel) );
+
+ if( bMoveBackward )
+ pPam->Move( fnMoveBackward );
+
+ aAnchor.SetAnchor( pPam->GetPoint() );
+
+ if( bMoveBackward )
+ pPam->Move( fnMoveForward );
+
+ rFrmSet.Put( aAnchor );
+}
+
+void SwHTMLParser::RegisterFlyFrm( SwFrmFmt *pFlyFmt )
+{
+ // automatisch verankerte Rahmen muessen noch um eine Position
+ // nach vorne verschoben werden.
+ if( RES_DRAWFRMFMT != pFlyFmt->Which() &&
+ FLY_AT_CNTNT == pFlyFmt->GetAnchor().GetAnchorId() &&
+ SURROUND_THROUGHT == pFlyFmt->GetSurround().GetSurround() )
+ {
+ aMoveFlyFrms.Insert( pFlyFmt, aMoveFlyFrms.Count() );
+ aMoveFlyCnts.Insert( pPam->GetPoint()->nContent.GetIndex(),
+ aMoveFlyCnts.Count() );
+ }
+}
+
+/* */
+
+void SwHTMLParser::GetDefaultScriptType( ScriptType& rType,
+ String& rTypeStr ) const
+{
+ SwDocShell *pDocSh = pDoc->GetDocShell();
+ SvKeyValueIterator* pHeaderAttrs = pDocSh ? pDocSh->GetHeaderAttributes()
+ : 0;
+ rType = GetScriptType( pHeaderAttrs );
+ rTypeStr = GetScriptTypeString( pHeaderAttrs );
+}
+
+/* */
+
+void SwHTMLParser::InsertImage()
+{
+ // und jetzt auswerten
+ String sGrfNm, sAltNm, aId, aClass, aStyle, aMap, sHTMLGrfName;
+ SwVertOrient eVertOri = VERT_TOP;
+ SwHoriOrient eHoriOri = HORI_NONE;
+ long nWidth=0, nHeight=0;
+ long nVSpace=0, nHSpace=0;
+
+ USHORT nBorder = (aAttrTab.pINetFmt ? 1 : 0);
+ BOOL bIsMap = FALSE;
+ BOOL bPrcWidth = FALSE;
+ BOOL bPrcHeight = FALSE;
+ SvxMacroItem aMacroItem;
+
+ ScriptType eDfltScriptType;
+ String sDfltScriptType;
+ GetDefaultScriptType( eDfltScriptType, sDfltScriptType );
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ USHORT nEvent = 0;
+ ScriptType eScriptType = eDfltScriptType;
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ case HTML_O_SRC:
+ ASSERT( INetURLObject::GetBaseURL() == sBaseURL,
+ "<IMG>: Base URL ist zerschossen" );
+ sGrfNm = pOption->GetString();
+ if( !InternalImgToPrivateURL(sGrfNm) )
+ sGrfNm = INetURLObject::RelToAbs( sGrfNm );
+ break;
+ case HTML_O_ALIGN:
+ eVertOri =
+ (SwVertOrient)pOption->GetEnum( aHTMLImgVAlignTable,
+ VERT_TOP );
+ eHoriOri =
+ (SwHoriOrient)pOption->GetEnum( aHTMLImgHAlignTable,
+ HORI_NONE );
+ break;
+ case HTML_O_WIDTH:
+ // erstmal nur als Pixelwerte merken!
+ nWidth = pOption->GetNumber();
+ bPrcWidth = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ if( bPrcWidth && nWidth>100 )
+ nWidth = 100;
+ break;
+ case HTML_O_HEIGHT:
+ // erstmal nur als Pixelwerte merken!
+ nHeight = pOption->GetNumber();
+ bPrcHeight = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ if( bPrcHeight && nHeight>100 )
+ nHeight = 100;
+ break;
+ case HTML_O_VSPACE:
+ nVSpace = pOption->GetNumber();
+ break;
+ case HTML_O_HSPACE:
+ nHSpace = pOption->GetNumber();
+ break;
+ case HTML_O_ALT:
+ sAltNm = pOption->GetString();
+ break;
+ case HTML_O_BORDER:
+ nBorder = (USHORT)pOption->GetNumber();
+ break;
+ case HTML_O_ISMAP:
+ bIsMap = TRUE;
+ break;
+ case HTML_O_USEMAP:
+ aMap = pOption->GetString();
+ break;
+ case HTML_O_NAME:
+ sHTMLGrfName = pOption->GetString();
+ break;
+
+ case HTML_O_SDONLOAD:
+ eScriptType = STARBASIC;
+ case HTML_O_ONLOAD:
+ nEvent = SVX_EVENT_IMAGE_LOAD;
+ goto IMAGE_SETEVENT;
+
+ case HTML_O_SDONABORT:
+ eScriptType = STARBASIC;
+ case HTML_O_ONABORT:
+ nEvent = SVX_EVENT_IMAGE_ABORT;
+ goto IMAGE_SETEVENT;
+
+ case HTML_O_SDONERROR:
+ eScriptType = STARBASIC;
+ case HTML_O_ONERROR:
+ nEvent = SVX_EVENT_IMAGE_ERROR;
+ goto IMAGE_SETEVENT;
+IMAGE_SETEVENT:
+ {
+ String sTmp( pOption->GetString() );
+ if( sTmp.Len() )
+ {
+ sTmp.ConvertLineEnd();
+ String sScriptType;
+ if( EXTENDED_STYPE == eScriptType )
+ sScriptType = sDfltScriptType;
+ aMacroItem.SetMacro( nEvent,
+ SvxMacro( sTmp, sScriptType, eScriptType ));
+ }
+ }
+ break;
+ }
+ }
+
+ if( !sGrfNm.Len() )
+ return;
+
+ // Wenn wir in einer Numerierung stehen und der Absatz noch leer und
+ // nicht numeriert ist, handelt es sich vielleicht um die Grafik
+ // einer Bullet-Liste
+ if( !pPam->GetPoint()->nContent.GetIndex() &&
+ GetNumInfo().GetDepth() > 0 && GetNumInfo().GetDepth() <= MAXLEVEL &&
+ aBulletGrfs[GetNumInfo().GetDepth()-1].Len() &&
+ aBulletGrfs[GetNumInfo().GetDepth()-1]==sGrfNm )
+ {
+ SwTxtNode* pTxtNode = pPam->GetNode()->GetTxtNode();
+ if( pTxtNode && pTxtNode->GetNum() &&
+ NO_NUMLEVEL & pTxtNode->GetNum()->GetLevel() )
+ {
+ SwNodeNum aNum( *pTxtNode->GetNum() );
+ aNum.SetLevel( aNum.GetLevel() & ~NO_NUMLEVEL );
+ ASSERT( aNum.GetLevel() == GetNumInfo().GetLevel(),
+ "Numerierungs-Ebene stimmt nicht" );
+ pTxtNode->UpdateNum( aNum );
+
+ // Rule invalisieren ist noetig, weil zwischem dem einlesen
+ // des LI und der Grafik ein EndAction gerufen worden sein kann.
+ if( GetNumInfo().GetNumRule() )
+ GetNumInfo().GetNumRule()->SetInvalidRule( TRUE );
+
+ // Die Vorlage novh mal setzen. Ist noetig, damit der
+ // Erstzeilen-Einzug stimmt.
+ SetTxtCollAttrs();
+
+ return;
+ }
+ }
+
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo );
+
+ SfxItemSet aFrmSet( pDoc->GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ if( !IsNewDoc() )
+ Reader::ResetFrmFmtAttrs( aFrmSet );
+
+ // Umrandung setzen
+ long nHBorderWidth = 0, nVBorderWidth = 0;
+ if( nBorder )
+ {
+ nHBorderWidth = (long)nBorder;
+ nVBorderWidth = (long)nBorder;
+ SvxCSS1Parser::PixelToTwip( nVBorderWidth, nHBorderWidth );
+
+ SvxBorderLine aHBorderLine;
+ SvxBorderLine aVBorderLine;
+
+ SvxCSS1Parser::SetBorderWidth( aHBorderLine,
+ (USHORT)nHBorderWidth, FALSE );
+ if( nHBorderWidth == nVBorderWidth )
+ aVBorderLine.SetOutWidth( aHBorderLine.GetOutWidth() );
+ else
+ SvxCSS1Parser::SetBorderWidth( aVBorderLine,
+ (USHORT)nVBorderWidth, FALSE );
+
+ // die tatsaechlich gesetzter Rahmenbreite benutzen und nicht die
+ // Wunschbreite!
+ nHBorderWidth = aHBorderLine.GetOutWidth();
+ nVBorderWidth = aVBorderLine.GetOutWidth();
+
+ if( aAttrTab.pINetFmt )
+ {
+ const String& rURL =
+ ((const SwFmtINetFmt&)aAttrTab.pINetFmt->GetItem()).GetValue();
+
+ pCSS1Parser->SetATagStyles();
+ USHORT nPoolId = pDoc->IsVisitedURL( rURL )
+ ? RES_POOLCHR_INET_VISIT
+ : RES_POOLCHR_INET_NORMAL;
+ const SwCharFmt *pCharFmt = pCSS1Parser->GetCharFmtFromPool( nPoolId );
+ aHBorderLine.SetColor( pCharFmt->GetColor().GetValue() );
+ aVBorderLine.SetColor( aHBorderLine.GetColor() );
+ }
+ else
+ {
+ const SvxColorItem& rColorItem = aAttrTab.pFontColor ?
+ (const SvxColorItem &)aAttrTab.pFontColor->GetItem() :
+ (const SvxColorItem &)pDoc->GetDefault(RES_CHRATR_COLOR);
+ aHBorderLine.SetColor( rColorItem.GetValue() );
+ aVBorderLine.SetColor( aHBorderLine.GetColor() );
+ }
+
+
+ SvxBoxItem aBoxItem;
+ aBoxItem.SetLine( &aHBorderLine, BOX_LINE_TOP );
+ aBoxItem.SetLine( &aHBorderLine, BOX_LINE_BOTTOM );
+ aBoxItem.SetLine( &aVBorderLine, BOX_LINE_LEFT );
+ aBoxItem.SetLine( &aVBorderLine, BOX_LINE_RIGHT );
+ aFrmSet.Put( aBoxItem );
+ }
+
+ // Ausrichtung setzen
+ SetAnchorAndAdjustment( eVertOri, eHoriOri, aItemSet, aPropInfo, aFrmSet );
+
+ // Abstaende setzen
+ SetSpace( Size( nHSpace, nVSpace), aItemSet, aPropInfo, aFrmSet );
+
+ // Sonstige CSS1-Attribute Setzen
+ SetFrmFmtAttrs( aItemSet, aPropInfo, HTML_FF_BOX, aFrmSet );
+
+ Size aTwipSz( bPrcWidth ? 0 : nWidth, bPrcHeight ? 0 : nHeight );
+ if( (aTwipSz.Width() || aTwipSz.Height()) && Application::GetDefaultDevice() )
+ {
+ aTwipSz = Application::GetDefaultDevice()
+ ->PixelToLogic( aTwipSz, MapMode( MAP_TWIP ) );
+ }
+
+ // CSS1-Groesse auf "normale" Groesse umrechnen
+ switch( aPropInfo.eWidthType )
+ {
+ case SVX_CSS1_LTYPE_TWIP:
+ aTwipSz.Width() = aPropInfo.nWidth;
+ nWidth = 1; // != 0
+ bPrcWidth = FALSE;
+ break;
+ case SVX_CSS1_LTYPE_PERCENTAGE:
+ aTwipSz.Width() = 0;
+ nWidth = aPropInfo.nWidth;
+ bPrcWidth = TRUE;
+ break;
+ }
+ switch( aPropInfo.eHeightType )
+ {
+ case SVX_CSS1_LTYPE_TWIP:
+ aTwipSz.Height() = aPropInfo.nHeight;
+ nHeight = 1; // != 0
+ bPrcHeight = FALSE;
+ break;
+ case SVX_CSS1_LTYPE_PERCENTAGE:
+ aTwipSz.Height() = 0;
+ nHeight = aPropInfo.nHeight;
+ bPrcHeight = TRUE;
+ break;
+ }
+
+ Size aGrfSz( 0, 0 );
+ BOOL bSetTwipSize = TRUE; // Twip-Size am Node setzen?
+ BOOL bChangeFrmSize = FALSE; // Frame-Format nachtraeglich anpassen?
+ BOOL bGrfSzValid = FALSE; // aGrfSz enthaelt die Grafik-Groesse
+ BOOL bRequestGrfNow = FALSE;
+ BOOL bSetScaleImageMap = FALSE;
+ BYTE nPrcWidth = 0, nPrcHeight = 0;
+
+ if( !nWidth || !nHeight )
+ {
+ // Es fehlt die Breite oder die Hoehe
+
+ // JP 28.05.96: dann suche doch mal in unserem QuickDraw-Cache, ob
+ // die Groesse dieser Grafik schon vorhanden ist.
+
+// Code for the new GraphicObject
+#ifdef USE_GRFOBJECT
+
+ bGrfSzValid =
+#ifdef NEW_GRFOBJ
+ FindGrfSizeFromCache( sGrfNm, aGrfSz )
+#else
+ FALSE;
+#endif
+ ;
+
+#else
+// USE_GRFOBJECT
+
+ bGrfSzValid = FindGrfSizeFromCache( sGrfNm, aGrfSz );
+
+#endif
+// USE_GRFOBJECT
+
+ // Wenn die Grfik in einer Tabelle steht, wird sie gleich
+ // angefordert, damit sie eventuell schon da ist, bevor die
+ // Tabelle layoutet wird.
+ if( !bGrfSzValid && pTable!=0 && !nWidth )
+ {
+ bRequestGrfNow = TRUE;
+ IncGrfsThatResizeTable();
+ }
+
+ if( bGrfSzValid && aGrfSz.Width() && aGrfSz.Height() )
+ {
+ // wir haben eine Groesse und koenen sie setzen
+ if( !nWidth && !nHeight )
+ {
+ // Hoehe und Breite fehlen
+ aTwipSz = aGrfSz;
+ }
+ else if( nWidth )
+ {
+ // nur die Breite fehlt
+ if( bPrcWidth )
+ {
+ // %-Breite uebernehmen und Hoehe skalieren
+ nPrcWidth = (BYTE)nWidth;
+ nPrcHeight = 255;
+ }
+ else
+ {
+ // Breite uebernehmen und Hoehe berechnen
+ aTwipSz.Height() = (aGrfSz.Height() * aTwipSz.Width())
+ / aGrfSz.Width();
+ }
+ }
+ else if( nHeight )
+ {
+ // nur die Hoehe fehlt
+ if( bPrcHeight )
+ {
+ // %-Hoehe lassen und Breite skalieren
+ nPrcHeight = (BYTE)nHeight;
+ nPrcWidth = 255;
+ }
+ else
+ {
+ // Hoehe uebernehmen und Breite berechnen
+ aTwipSz.Width() = (aGrfSz.Width() * aTwipSz.Height())
+ / aGrfSz.Height();
+ }
+ }
+ }
+ else
+ {
+ // wir haben keine Groesse gefunden (und sind in keiner
+ // Tabelle oder haben zumindest die Breite der Grafik)
+
+ // Die Groesse des Rahmens wird nachtraeglich gesetzt
+ bChangeFrmSize = TRUE;
+ aGrfSz = aTwipSz;
+ if( !nWidth && !nHeight )
+ {
+ aTwipSz.Width() = HTML_DFLT_IMG_WIDTH;
+ aTwipSz.Height() = HTML_DFLT_IMG_HEIGHT;
+ }
+ else if( nWidth )
+ {
+ // eine %-Angabe
+ if( bPrcWidth )
+ {
+ nPrcWidth = (BYTE)nWidth;
+ nPrcHeight = 255;
+ }
+ else
+ {
+ aTwipSz.Height() = HTML_DFLT_IMG_HEIGHT;
+ }
+ }
+ else if( nHeight )
+ {
+ if( bPrcHeight )
+ {
+ nPrcHeight = (BYTE)nHeight;
+ nPrcWidth = 255;
+ }
+ else
+ {
+ aTwipSz.Width() = HTML_DFLT_IMG_WIDTH;
+ }
+ }
+ }
+ }
+ else
+ {
+ // Breite und Hoehe wurden angegeben und brauchen nicht gesetzt
+ // zu werden
+// Code for the new GraphicObject
+#ifdef USE_GRFOBJECT
+
+ bGrfSzValid =
+#ifdef NEW_GRFOBJ
+ FindGrfSizeFromCache( sGrfNm, aGrfSz )
+#else
+ FALSE;
+#endif
+ ;
+
+
+#else
+// USE_GRFOBJECT
+
+ bGrfSzValid = FindGrfSizeFromCache( sGrfNm, aGrfSz );
+#endif
+// USE_GRFOBJECT
+
+ bSetTwipSize = FALSE;
+
+ if( bPrcWidth )
+ nPrcWidth = (BYTE)nWidth;
+
+ if( bPrcHeight )
+ nPrcHeight = (BYTE)nHeight;
+ }
+
+ // Image-Map setzen
+ aMap.EraseTrailingChars();
+ if( aMap.Len() )
+ {
+ // Da wir nur lokale Image-Maps kennen nehmen wireinfach alles
+ // hinter dem # als Namen
+ xub_StrLen nPos = aMap.Search( '#' );
+ String aName;
+ if ( STRING_NOTFOUND==nPos )
+ aName = aMap ;
+ else
+ aName = aMap.Copy(nPos+1);
+
+ ImageMap *pImgMap = FindImageMap( aName );
+ if( pImgMap )
+ {
+ SwFmtURL aURL; aURL.SetMap( pImgMap );//wird kopieiert
+ if( bGrfSzValid )
+ {
+ BOOL bScale = FALSE;
+
+ Fraction aScaleX( 1, 1 ), aScaleY( 1, 1);
+
+ if( !nPrcWidth && aGrfSz.Width() && aTwipSz.Width() &&
+ aGrfSz.Width() != aTwipSz.Width() )
+ {
+ aScaleX = Fraction( aGrfSz.Width(), aTwipSz.Width() );
+ bScale = TRUE;
+ }
+
+ if( !nPrcHeight && aGrfSz.Height() && aTwipSz.Height() &&
+ aGrfSz.Height() != aTwipSz.Height() )
+ {
+ aScaleY = Fraction( aGrfSz.Height(), aTwipSz.Height() );
+ bScale = TRUE;
+ }
+
+ if( bScale )
+ aURL.GetMap()->Scale( aScaleX, aScaleY );
+ }
+ else
+ bSetScaleImageMap = !nPrcWidth || !nPrcHeight;
+ aFrmSet.Put( aURL );
+ }
+ else
+ {
+ ImageMap aEmptyImgMap( aName );
+ SwFmtURL aURL; aURL.SetMap( &aEmptyImgMap );//wird kopieiert
+ aFrmSet.Put( aURL );
+ nMissingImgMaps++; // es fehlen noch Image-Maps
+
+ // die Grafik muss beim SetTwipSize skaliert werden, wenn
+ // wir keine Groesse am Node gesetzt haben oder die Groesse
+ // nicht der Grafikgroesse entsprach.
+ bSetScaleImageMap = !bSetTwipSize || !bGrfSzValid ||
+ !nPrcWidth || !nPrcHeight;
+ }
+ }
+
+ // min. Werte einhalten !!
+ if( nPrcWidth )
+ {
+ ASSERT( !aTwipSz.Width(),
+ "Wieso ist da trotz %-Angabe eine Breite gesetzt?" );
+ aTwipSz.Width() = aGrfSz.Width() ? aGrfSz.Width()
+ : HTML_DFLT_IMG_WIDTH;
+ }
+ else
+ {
+ aTwipSz.Width() += 2*nVBorderWidth;
+ if( aTwipSz.Width() < MINFLY )
+ aTwipSz.Width() = MINFLY;
+ }
+ if( nPrcHeight )
+ {
+ ASSERT( !aTwipSz.Height(),
+ "Wieso ist da trotz %-Angabe eine Hoehe gesetzt?" );
+ aTwipSz.Height() = aGrfSz.Height() ? aGrfSz.Height()
+ : HTML_DFLT_IMG_HEIGHT;
+ }
+ else
+ {
+ aTwipSz.Height() += 2*nHBorderWidth;
+ if( aTwipSz.Height() < MINFLY )
+ aTwipSz.Height() = MINFLY;
+ }
+
+ SwFmtFrmSize aFrmSize( ATT_FIX_SIZE, aTwipSz.Width(), aTwipSz.Height() );
+ aFrmSize.SetWidthPercent( nPrcWidth );
+ aFrmSize.SetHeightPercent( nPrcHeight );
+ aFrmSet.Put( aFrmSize );
+
+ Graphic aEmptyGrf;
+ aEmptyGrf.SetDefaultType();
+ SwFrmFmt *pFlyFmt = pDoc->Insert( *pPam, sGrfNm, aEmptyStr, &aEmptyGrf,
+ &aFrmSet );
+ SwGrfNode *pGrfNd = pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
+ ->GetIndex()+1 ]->GetGrfNode();
+
+ if( sHTMLGrfName.Len() )
+ {
+ pFlyFmt->SetName( sHTMLGrfName );
+
+ // ggfs. eine Grafik anspringen
+ if( JUMPTO_GRAPHIC == eJumpTo && sHTMLGrfName == sJmpMark )
+ {
+ bChkJumpMark = TRUE;
+ eJumpTo = JUMPTO_NONE;
+ }
+ }
+
+ if( sAltNm.Len() )
+ pGrfNd->SetAlternateText( sAltNm );
+
+ if( bSetTwipSize )
+ pGrfNd->SetTwipSize( aGrfSz );
+
+ pGrfNd->SetChgTwipSize( bChangeFrmSize );
+
+ if( bSetScaleImageMap )
+ pGrfNd->SetScaleImageMap( TRUE );
+
+ if( aAttrTab.pINetFmt )
+ {
+ const SwFmtINetFmt &rINetFmt =
+ (const SwFmtINetFmt&)aAttrTab.pINetFmt->GetItem();
+
+ SwFmtURL aURL( pFlyFmt->GetURL() );
+
+ aURL.SetURL( rINetFmt.GetValue(), bIsMap );
+ aURL.SetTargetFrameName( rINetFmt.GetTargetFrame() );
+ aURL.SetName( rINetFmt.GetName() );
+ pFlyFmt->SetAttr( aURL );
+
+ {
+ const SvxMacro *pMacro;
+ static USHORT __READONLY_DATA aEvents[] = {
+ SFX_EVENT_MOUSEOVER_OBJECT,
+ SFX_EVENT_MOUSECLICK_OBJECT,
+ SFX_EVENT_MOUSEOUT_OBJECT,
+ 0 };
+
+ for( USHORT n = 0; aEvents[ n ]; ++n )
+ if( 0 != ( pMacro = rINetFmt.GetMacro( aEvents[ n ] ) ))
+ aMacroItem.SetMacro( aEvents[ n ], *pMacro );
+ }
+
+ if( FLY_IN_CNTNT == pFlyFmt->GetAnchor().GetAnchorId() &&
+ aAttrTab.pINetFmt->GetSttPara() ==
+ pPam->GetPoint()->nNode &&
+ aAttrTab.pINetFmt->GetSttCnt() ==
+ pPam->GetPoint()->nContent.GetIndex() - 1 )
+ {
+ // das Attribut wurde unmitellbar vor einer zeichengeb.
+ // Grafik eingefuegt, also verschieben wir es
+ aAttrTab.pINetFmt->SetStart( *pPam->GetPoint() );
+
+ // Wenn das Attribut auch ein Sprungziel ist, fuegen
+ // wir noch eine Bookmark vor der Grafik ein, weil das
+ // SwFmtURL kein Sprungziel ist.
+ if( rINetFmt.GetName().Len() )
+ {
+ pPam->Move( fnMoveBackward );
+ InsertBookmark( rINetFmt.GetName() );
+ pPam->Move( fnMoveForward );
+ }
+ }
+
+ }
+
+ if( aMacroItem.GetMacroTable().Count() )
+ pFlyFmt->SetAttr( aMacroItem );
+
+ // Wenn die Grafik gleich angeforder wird, muss dies geschehen,
+ // nachdem das Format vollstaendig aufgebaut ist, weil es evtl.
+ // gleich (synchron) angepasst wird (war bug #40983#)
+ if( bRequestGrfNow )
+ {
+ pGrfNd->SetTransferPriority( SFX_TFPRIO_VISIBLE_LOWRES_GRAPHIC );
+ pGrfNd->SwapIn();
+ }
+
+ // Ggf. Frames anlegen und Auto-gebundenen Rahmen registrieren
+ RegisterFlyFrm( pFlyFmt );
+
+ if( aId.Len() )
+ InsertBookmark( aId );
+}
+
+/* */
+
+void SwHTMLParser::InsertBodyOptions()
+{
+ pDoc->SetTxtFmtColl( *pPam,
+ pCSS1Parser->GetTxtCollFromPool( RES_POOLCOLL_TEXT ) );
+
+ String aBackGround, aId, aStyle;
+ Color aBGColor, aTextColor, aLinkColor, aVLinkColor;
+ BOOL bBGColor=FALSE, bTextColor=FALSE;
+ BOOL bLinkColor=FALSE, bVLinkColor=FALSE;
+
+ ScriptType eDfltScriptType;
+ String sDfltScriptType;
+ GetDefaultScriptType( eDfltScriptType, sDfltScriptType );
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ ScriptType eScriptType = eDfltScriptType;
+ USHORT nEvent;
+ BOOL bSetEvent = FALSE;
+
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_BACKGROUND:
+ aBackGround = pOption->GetString();
+ break;
+ case HTML_O_BGCOLOR:
+ pOption->GetColor( aBGColor );
+ bBGColor = TRUE;
+ break;
+ case HTML_O_TEXT:
+ pOption->GetColor( aTextColor );
+ bTextColor = TRUE;
+ break;
+ case HTML_O_LINK:
+ pOption->GetColor( aLinkColor );
+ bLinkColor = TRUE;
+ break;
+ case HTML_O_VLINK:
+ pOption->GetColor( aVLinkColor );
+ bVLinkColor = TRUE;
+ break;
+
+ case HTML_O_SDONLOAD:
+ eScriptType = STARBASIC;
+ case HTML_O_ONLOAD:
+ nEvent = SFX_EVENT_OPENDOC;
+ bSetEvent = TRUE;
+ break;
+
+ case HTML_O_SDONUNLOAD:
+ eScriptType = STARBASIC;
+ case HTML_O_ONUNLOAD:
+ nEvent = SFX_EVENT_PREPARECLOSEDOC;
+ bSetEvent = TRUE;
+ break;
+
+ case HTML_O_SDONFOCUS:
+ eScriptType = STARBASIC;
+ case HTML_O_ONFOCUS:
+ nEvent = SFX_EVENT_ACTIVATEDOC;
+ bSetEvent = TRUE;
+ break;
+
+ case HTML_O_SDONBLUR:
+ eScriptType = STARBASIC;
+ case HTML_O_ONBLUR:
+ nEvent = SFX_EVENT_DEACTIVATEDOC;
+ bSetEvent = TRUE;
+ break;
+
+ case HTML_O_ONERROR:
+// if( bAnyStarBasic )
+// InsertBasicDocEvent( SFX_EVENT_ACTIVATEDOC,
+// pOption->GetString() );
+ break;
+
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ bTextColor = TRUE;
+ break;
+ }
+
+ if( bSetEvent )
+ {
+ const String& rEvent = pOption->GetString();
+ if( rEvent.Len() )
+ InsertBasicDocEvent( nEvent, rEvent, eScriptType,
+ sDfltScriptType );
+ }
+ }
+
+ if( bTextColor && !pCSS1Parser->IsBodyTextSet() )
+ {
+ // Die Textfarbe wird an der Standard-Vorlage gesetzt
+ pCSS1Parser->GetTxtCollFromPool( RES_POOLCOLL_STANDARD )
+ ->SetAttr( SvxColorItem(aTextColor) );
+ pCSS1Parser->SetBodyTextSet();
+ }
+
+
+ // Die Item fuer die Seitenvorlage vorbereiten (Hintergrund, Umrandung)
+ // Beim BrushItem muessen schon gesetzte werte erhalten bleiben!
+ SvxBrushItem aBrushItem( pCSS1Parser->GetPageDescBackground() );
+ BOOL bSetBrush = FALSE;
+
+ if( bBGColor && !pCSS1Parser->IsBodyBGColorSet() )
+ {
+ // Hintergrundfarbe aus "BGCOLOR"
+ String aLink;
+ if( aBrushItem.GetGraphicLink() )
+ aLink = *aBrushItem.GetGraphicLink();
+ SvxGraphicPosition ePos = aBrushItem.GetGraphicPos();
+
+ aBrushItem.SetColor( aBGColor );
+
+ if( aLink.Len() )
+ {
+ aBrushItem.SetGraphicLink( aLink );
+ aBrushItem.SetGraphicPos( ePos );
+ }
+ bSetBrush = TRUE;
+ pCSS1Parser->SetBodyBGColorSet();
+ }
+
+ if( aBackGround.Len() && !pCSS1Parser->IsBodyBackgroundSet() )
+ {
+ // Hintergrundgrafik aus "BACKGROUND"
+ ASSERT( INetURLObject::GetBaseURL() == sBaseURL,
+ "<BODY>: Base URL ist zerschossen" );
+ aBrushItem.SetGraphicLink( INetURLObject::RelToAbs( aBackGround ) );
+ aBrushItem.SetGraphicPos( GPOS_TILED );
+ bSetBrush = TRUE;
+ pCSS1Parser->SetBodyBackgroundSet();
+ }
+
+ if( aStyle.Len() )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+ pCSS1Parser->ParseStyleOption( aStyle, aItemSet, aPropInfo );
+
+ // Ein par Attribute muessen an der Seitenvorlage gesetzt werden,
+ // und zwar die, die nicht vererbit werden
+ pCSS1Parser->SetPageDescAttrs( bSetBrush ? &aBrushItem : 0,
+ &aItemSet );
+
+ // alle noch uebrigen Optionen koennen an der Standard-Vorlage
+ // gesetzt werden und gelten dann automatisch als defaults
+ pCSS1Parser->GetTxtCollFromPool( RES_POOLCOLL_STANDARD )
+ ->SetAttr( aItemSet );
+ }
+ else if( bSetBrush )
+ {
+ pCSS1Parser->SetPageDescAttrs( &aBrushItem );
+ }
+
+ if( bLinkColor && !pCSS1Parser->IsBodyLinkSet() )
+ {
+ SwCharFmt *pCharFmt =
+ pCSS1Parser->GetCharFmtFromPool(RES_POOLCHR_INET_NORMAL);
+ pCharFmt->SetAttr( SvxColorItem(aLinkColor) );
+ pCSS1Parser->SetBodyLinkSet();
+ }
+ if( bVLinkColor && !pCSS1Parser->IsBodyVLinkSet() )
+ {
+ SwCharFmt *pCharFmt =
+ pCSS1Parser->GetCharFmtFromPool(RES_POOLCHR_INET_VISIT);
+ pCharFmt->SetAttr( SvxColorItem(aVLinkColor) );
+ pCSS1Parser->SetBodyVLinkSet();
+ }
+
+ if( aId.Len() )
+ InsertBookmark( aId );
+}
+
+/* */
+
+void SwHTMLParser::NewAnchor()
+{
+ // den voherigen Link beenden, falls es einen gab
+ _HTMLAttrContext *pOldCntxt = PopContext( HTML_ANCHOR_ON );
+ if( pOldCntxt )
+ {
+ // und ggf. die Attribute beenden
+ EndContext( pOldCntxt );
+ delete pOldCntxt;
+ }
+
+ SvxMacroTableDtor aMacroTbl;
+ String sHRef, aName, sTarget;
+ String aId, aStyle, aClass;
+ BOOL bHasHRef = FALSE, bFixed = FALSE;
+
+ ScriptType eDfltScriptType;
+ String sDfltScriptType;
+ GetDefaultScriptType( eDfltScriptType, sDfltScriptType );
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ USHORT nEvent = 0;
+ ScriptType eScriptType = eDfltScriptType;
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_NAME:
+ aName = pOption->GetString();
+ break;
+
+ case HTML_O_HREF:
+ sHRef = pOption->GetString();
+ bHasHRef = TRUE;
+ break;
+ case HTML_O_TARGET:
+ sTarget = pOption->GetString();
+ break;
+
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ case HTML_O_SDFIXED:
+ bFixed = TRUE;
+ break;
+
+ case HTML_O_SDONCLICK:
+ eScriptType = STARBASIC;
+ case HTML_O_ONCLICK:
+ nEvent = SFX_EVENT_MOUSECLICK_OBJECT;
+ goto ANCHOR_SETEVENT;
+
+ case HTML_O_SDONMOUSEOVER:
+ eScriptType = STARBASIC;
+ case HTML_O_ONMOUSEOVER:
+ nEvent = SFX_EVENT_MOUSEOVER_OBJECT;
+ goto ANCHOR_SETEVENT;
+
+ case HTML_O_SDONMOUSEOUT:
+ eScriptType = STARBASIC;
+ case HTML_O_ONMOUSEOUT:
+ nEvent = SFX_EVENT_MOUSEOUT_OBJECT;
+ goto ANCHOR_SETEVENT;
+ANCHOR_SETEVENT:
+ {
+ String sTmp( pOption->GetString() );
+ if( sTmp.Len() )
+ {
+ sTmp.ConvertLineEnd();
+ String sScriptType;
+ if( EXTENDED_STYPE == eScriptType )
+ sScriptType = sDfltScriptType;
+ aMacroTbl.Insert( nEvent,
+ new SvxMacro( sTmp, sScriptType, eScriptType ));
+ }
+ }
+ break;
+
+ }
+ }
+
+ // Sprungziele, die unseren ipmliziten Zielen entsprechen, schmeissen
+ // wir hier ganz rigoros raus.
+ if( aName.Len() )
+ {
+ xub_StrLen nLastPos, nPos = aName.Search( cMarkSeperator );
+ if( STRING_NOTFOUND != nPos )
+ {
+ while( STRING_NOTFOUND !=
+ ( nLastPos = aName.Search( cMarkSeperator, nPos + 1 )) )
+ nPos = nLastPos;
+
+ String sCmp( aName.Copy( nPos+1 ) );
+ sCmp.EraseAllChars();
+ if( sCmp.Len() )
+ {
+ sCmp.ToLowerAscii();
+ if( sCmp.EqualsAscii( pMarkToRegion ) ||
+ sCmp.EqualsAscii( pMarkToFrame ) ||
+ sCmp.EqualsAscii( pMarkToGraphic ) ||
+ sCmp.EqualsAscii( pMarkToOLE ) ||
+ sCmp.EqualsAscii( pMarkToTable ) ||
+ sCmp.EqualsAscii( pMarkToOutline ) ||
+ sCmp.EqualsAscii( pMarkToText ) )
+ {
+ aName.Erase();
+ }
+ }
+ }
+ }
+
+ // einen neuen Kontext anlegen
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( HTML_ANCHOR_ON );
+
+ BOOL bEnAnchor = FALSE, bFtnAnchor = FALSE, bFtnEnSymbol = FALSE;
+ String aFtnName;
+ if( aClass.Len() >=9 && bHasHRef && sHRef.Len() > 1 &&
+ ('s' == aClass.GetChar(0) || 'S' == aClass.GetChar(0)) &&
+ ('d' == aClass.GetChar(1) || 'D' == aClass.GetChar(1)) )
+ {
+ if( aClass.EqualsIgnoreCaseAscii( sHTML_sdendnote_anc ) )
+ bEnAnchor = TRUE;
+ else if( aClass.EqualsIgnoreCaseAscii( sHTML_sdfootnote_anc ) )
+ bFtnAnchor = TRUE;
+ else if( aClass.EqualsIgnoreCaseAscii( sHTML_sdendnote_sym ) ||
+ aClass.EqualsIgnoreCaseAscii( sHTML_sdfootnote_sym ) )
+ bFtnEnSymbol = TRUE;
+ if( bEnAnchor || bFtnAnchor || bFtnEnSymbol )
+ {
+ aFtnName = sHRef.Copy( 1 );
+ aClass = aName = aEmptyStr;
+ bHasHRef = FALSE;
+ }
+ }
+
+ // Styles parsen
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ if( ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo ) )
+ {
+ DoPositioning( aItemSet, aPropInfo, pCntxt );
+ InsertAttrs( aItemSet, aPropInfo, pCntxt, TRUE );
+ }
+ }
+
+ if( bHasHRef )
+ {
+ if( sHRef.Len() )
+ {
+ ASSERT( INetURLObject::GetBaseURL() == sBaseURL,
+ "<A>: Base URL ist zerschossen" );
+ sHRef = INetURLObject::RelToAbs( sHRef );
+ }
+ else
+ {
+ // Bei leerer URL das Directory nehmen
+ INetURLObject aURLObj( aPathToFile );
+ sHRef = aURLObj.GetPartBeforeLastName();
+ }
+
+ pCSS1Parser->SetATagStyles();
+ SwFmtINetFmt aINetFmt( sHRef, sTarget );
+ aINetFmt.SetName( aName );
+
+ if( aMacroTbl.Count() )
+ aINetFmt.SetMacroTbl( &aMacroTbl );
+
+ // das Default-Attribut setzen
+ InsertAttr( &aAttrTab.pINetFmt, aINetFmt, pCntxt );
+ }
+ else if( aName.Len() )
+ {
+ InsertBookmark( aName );
+ }
+
+ if( bEnAnchor || bFtnAnchor )
+ {
+ InsertFootEndNote( aFtnName, bEnAnchor, bFixed );
+ bInFootEndNoteAnchor = bCallNextToken = TRUE;
+ }
+ else if( bFtnEnSymbol )
+ {
+ bInFootEndNoteSymbol = bCallNextToken = TRUE;
+ }
+
+ // den Kontext merken
+ PushContext( pCntxt );
+}
+
+void SwHTMLParser::EndAnchor()
+{
+ if( bInFootEndNoteAnchor )
+ {
+ FinishFootEndNote();
+ bInFootEndNoteAnchor = FALSE;
+ }
+ else if( bInFootEndNoteSymbol )
+ {
+ bInFootEndNoteSymbol = FALSE;
+ }
+
+ EndTag( HTML_ANCHOR_OFF );
+}
+
+/* */
+
+void SwHTMLParser::InsertBookmark( const String& rName )
+{
+ _HTMLAttr* pTmp = new _HTMLAttr( *pPam->GetPoint(),
+ SfxStringItem( RES_FLTR_BOOKMARK, rName ));
+ aSetAttrTab.Insert( pTmp, aSetAttrTab.Count() );
+}
+
+BOOL SwHTMLParser::HasCurrentParaBookmarks( BOOL bIgnoreStack ) const
+{
+ BOOL bHasMarks = FALSE;
+ ULONG nNodeIdx = pPam->GetPoint()->nNode.GetIndex();
+
+ // 1. Schritt: befinden sich noch Bookmarks m Attribut-Stack?
+ // Bookmarks werden hinten in den Stack geschrieben. Wir muessen
+ // also nur die letzte Bookmark betrachten
+ if( !bIgnoreStack )
+ {
+ _HTMLAttr* pAttr;
+ for( USHORT i = aSetAttrTab.Count(); i; )
+ {
+ pAttr = aSetAttrTab[ --i ];
+ if( RES_FLTR_BOOKMARK == pAttr->pItem->Which() )
+ {
+ if( pAttr->GetSttParaIdx() == nNodeIdx )
+ bHasMarks = TRUE;
+ break;
+ }
+ }
+ }
+
+ if( !bHasMarks )
+ {
+ // 2. Schritt: Wenn wir keine Bookmark gefunden haben, schauen wir,
+ // ob schon eine gesetzt ist
+ const SwBookmarks& rBookmarks = pDoc->GetBookmarks();
+ for( USHORT i=0; i<rBookmarks.Count(); i++ )
+ {
+ const SwBookmark* pBookmark = rBookmarks[i];
+ ULONG nBookNdIdx = pBookmark->GetPos().nNode.GetIndex();
+ if( nBookNdIdx==nNodeIdx )
+ {
+ bHasMarks = TRUE;
+ break;
+ }
+ else if( nBookNdIdx > nNodeIdx )
+ break;
+ }
+ }
+
+ return bHasMarks;
+}
+
+/* */
+
+void SwHTMLParser::StripTrailingPara()
+{
+ BOOL bSetSmallFont = FALSE;
+
+ SwCntntNode* pCNd = pPam->GetCntntNode();
+ if( !pPam->GetPoint()->nContent.GetIndex() )
+ {
+ if( pCNd && pCNd->StartOfSectionIndex()+2 <
+ pCNd->EndOfSectionIndex() )
+ {
+ ULONG nNodeIdx = pPam->GetPoint()->nNode.GetIndex();
+
+ USHORT i;
+
+ const SwFrmFmt* pFmt;
+ const SwFmtAnchor* pAnchor;
+ const SwPosition* pAPos;
+ const SwSpzFrmFmts& rFrmFmtTbl = *pDoc->GetSpzFrmFmts();
+
+ for( i=0; i<rFrmFmtTbl.Count(); i++ )
+ {
+ pFmt = rFrmFmtTbl[i];
+ pAnchor = &pFmt->GetAnchor();
+ if( 0 != ( pAPos = pAnchor->GetCntntAnchor()) &&
+ (FLY_AT_CNTNT == pAnchor->GetAnchorId() ||
+ FLY_AUTO_CNTNT == pAnchor->GetAnchorId()) &&
+ pAPos->nNode == nNodeIdx )
+
+ return; // den Knoten duerfen wir nicht loeschen
+ }
+
+ SetAttr( FALSE ); // die noch offenen Attribute muessen
+ // beendet werden, bevor der Node
+ // geloescht wird, weil sonst der
+ // End-Index in die Botanik zeigt
+
+ if( pCNd->Len() && pCNd->IsTxtNode() )
+ {
+ // es wurden Felder in den Node eingefuegt, die muessen
+ // wir jetzt verschieben
+ SwTxtNode *pPrvNd = pDoc->GetNodes()[nNodeIdx-1]->GetTxtNode();
+ if( pPrvNd )
+ {
+ SwIndex aSrc( pCNd, 0 );
+ pCNd->GetTxtNode()->Cut( pPrvNd, aSrc, pCNd->Len() );
+ }
+ }
+
+ // jetz muessen wir noch eventuell vorhandene Bookmarks
+ // verschieben
+ const SwBookmarks& rBookmarks = pDoc->GetBookmarks();
+ for( i=0; i<rBookmarks.Count(); i++ )
+ {
+ const SwBookmark* pBookmark = rBookmarks[i];
+ ULONG nBookNdIdx = pBookmark->GetPos().nNode.GetIndex();
+ if( nBookNdIdx==nNodeIdx )
+ {
+ SwPosition &rBookmkPos =
+ (SwPosition&)pBookmark->GetPos();
+
+ SwNodeIndex nNewNdIdx( pPam->GetPoint()->nNode );
+ SwCntntNode* pCNd = pDoc->GetNodes().GoPrevious( &nNewNdIdx );
+ if( !pCNd )
+ {
+ ASSERT( !this, "Hoppla, wo ist mein Vorgaenger-Node" );
+ return;
+ }
+
+ rBookmkPos.nNode = nNewNdIdx;
+ rBookmkPos.nContent.Assign( pCNd, pCNd->Len() );
+ }
+ else if( nBookNdIdx > nNodeIdx )
+ break;
+ }
+
+ pPam->GetPoint()->nContent.Assign( 0, 0 );
+ pPam->SetMark();
+ pPam->DeleteMark();
+ pDoc->GetNodes().Delete( pPam->GetPoint()->nNode );
+ pPam->Move( fnMoveBackward, fnGoNode );
+ }
+ else if( pCNd && pCNd->IsTxtNode() && pTable )
+ {
+ // In leeren Zellen stellen wir einen kleinen Font ein, damit die
+ // Zelle nicht hoeher wird als die Grafik bzw. so niedrig wie
+ // moeglich bleibt.
+ bSetSmallFont = TRUE;
+ }
+ }
+ else if( pCNd && pCNd->IsTxtNode() && pTable &&
+ pCNd->StartOfSectionIndex()+2 ==
+ pCNd->EndOfSectionIndex() )
+ {
+ // Wenn die Zelle nur zeichengebundene Grafiken/Rahmen enthaelt
+ // stellen wir ebenfalls einen kleinen Font ein.
+ bSetSmallFont = TRUE;
+ SwTxtNode* pTxtNd = pCNd->GetTxtNode();
+
+ xub_StrLen nPos = pPam->GetPoint()->nContent.GetIndex();
+ while( bSetSmallFont && nPos>0 )
+ {
+ bSetSmallFont = CH_TXTATR_BREAKWORD ==
+ pTxtNd->GetTxt().GetChar( --nPos ) &&
+ 0 != pTxtNd->GetTxtAttr( nPos, RES_TXTATR_FLYCNT );
+ }
+ }
+
+ if( bSetSmallFont )
+ {
+ pCNd->SetAttr( SvxFontHeightItem(40) );
+ }
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmlgrin.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.130 2000/09/18 16:04:45 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.129 2000/08/31 10:59:55 jp
+ add missing include
+
+ Revision 1.128 2000/07/20 13:16:10 jp
+ change old txtatr-character to the two new characters
+
+ Revision 1.127 2000/06/26 09:52:14 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.126 2000/04/10 12:20:56 mib
+ unicode
+
+ Revision 1.125 2000/03/03 15:21:01 os
+ StarView remainders removed
+
+ Revision 1.124 2000/03/03 12:44:32 mib
+ Removed JavaScript
+
+ Revision 1.123 2000/02/11 14:37:12 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.122 1999/12/03 08:40:07 jp
+ Task #70407#: use new GrfObj instead of Grafik with Cache (first only with define)
+
+ Revision 1.121 1999/11/19 16:40:20 os
+ modules renamed
+
+ Revision 1.120 1999/09/17 12:13:28 mib
+ support of multiple and non system text encodings
+
+ Revision 1.119 1999/06/10 08:34:12 JP
+ have to change: no AppWin from SfxApp
+
+
+ Rev 1.118 10 Jun 1999 10:34:12 JP
+ have to change: no AppWin from SfxApp
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmlnum.cxx b/sw/source/filter/html/htmlnum.cxx
new file mode 100644
index 000000000000..8af84175b4aa
--- /dev/null
+++ b/sw/source/filter/html/htmlnum.cxx
@@ -0,0 +1,997 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlnum.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+#ifndef _HTMLOUT_HXX //autogen
+#include <svtools/htmlout.hxx>
+#endif
+
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+
+#ifndef _SV_SVAPP_HXX
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SV_WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+
+#include "htmlnum.hxx"
+#include "swcss1.hxx"
+#include "swhtml.hxx"
+#include "wrthtml.hxx"
+
+// TODO: Unicode: Are these characters the correct ones?
+#define HTML_BULLETCHAR_DISC (0xf000 + 34)
+#define HTML_BULLETCHAR_CIRCLE (0xf000 + 38)
+#define HTML_BULLETCHAR_SQUARE (0xf000 + 36)
+
+
+// <UL TYPE=...>
+static HTMLOptionEnum __FAR_DATA aHTMLULTypeTable[] =
+{
+ { sHTML_ULTYPE_disc, HTML_BULLETCHAR_DISC },
+ { sHTML_ULTYPE_circle, HTML_BULLETCHAR_CIRCLE },
+ { sHTML_ULTYPE_square, HTML_BULLETCHAR_SQUARE },
+ { 0, 0 }
+};
+
+/* */
+
+void SwHTMLNumRuleInfo::Set( const SwTxtNode& rTxtNd )
+{
+ if( rTxtNd.GetNum() )
+ {
+ pNumRule = (SwNumRule *)rTxtNd.GetNumRule();
+ const SwNodeNum& rNum = *rTxtNd.GetNum();
+ nDeep = pNumRule ? GetRealLevel( rNum.GetLevel() )+1 : 0;
+ bNumbered = (rNum.GetLevel() & NO_NUMLEVEL) == 0;
+ bRestart = rTxtNd.GetNum()->IsStart();
+ }
+ else
+ {
+ pNumRule = 0;
+ nDeep = 0;
+ bNumbered = bRestart = sal_False;
+ }
+
+#ifndef NUM_RELSPACE
+ bUpdateWholeNum = sal_False;
+#endif
+}
+
+/* */
+
+void SwHTMLParser::NewNumBulList( int nToken )
+{
+ SwHTMLNumRuleInfo& rInfo = GetNumInfo();
+
+ // Erstmal einen neuen Absatz aufmachen
+ sal_Bool bSpace = (rInfo.GetDepth() + nDefListDeep) == 0;
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( bSpace ? AM_SPACE : AM_NOSPACE, sal_False );
+ else if( bSpace )
+ AddParSpace();
+
+ // Die Numerierung-Ebene erhoehen
+ rInfo.IncDepth();
+ sal_uInt8 nLevel = (sal_uInt8)( (rInfo.GetDepth() <= MAXLEVEL ? rInfo.GetDepth()
+ : MAXLEVEL) - 1 );
+
+ // ggf. ein Regelwerk anlegen
+ if( !rInfo.GetNumRule() )
+ {
+ sal_uInt16 nPos = pDoc->MakeNumRule( pDoc->GetUniqueNumRuleName() );
+ rInfo.SetNumRule( pDoc->GetNumRuleTbl()[nPos] );
+ }
+
+ // das Format anpassen, falls es fuer den Level noch nicht
+ // geschehen ist!
+ sal_Bool bNewNumFmt = rInfo.GetNumRule()->GetNumFmt( nLevel ) == 0;
+ sal_Bool bChangeNumFmt = sal_False;
+
+ // das default Numerierungsformat erstellen
+ SwNumFmt aNumFmt( rInfo.GetNumRule()->Get(nLevel) );
+ rInfo.SetNodeStartValue( nLevel );
+ if( bNewNumFmt )
+ {
+ sal_uInt16 nChrFmtPoolId = 0;
+ if( HTML_ORDERLIST_ON == nToken )
+ {
+ aNumFmt.eType = SVX_NUM_ARABIC;
+ nChrFmtPoolId = RES_POOLCHR_NUM_LEVEL;
+ }
+ else
+ {
+ // Wir setzen hier eine Zeichenvorlage, weil die UI das auch
+ // so macht. Dadurch wurd immer auch eine 9pt-Schrift
+ // eingestellt, was in Netscape nicht der Fall ist. Bisher hat
+ // das noch niemanden gestoert.
+ aNumFmt.SetBulletFont( &rInfo.GetNumRule()->GetDefBulletFont() );
+ aNumFmt.eType = SVX_NUM_CHAR_SPECIAL;
+ aNumFmt.SetBulletChar( cBulletChar ); // das Bulletzeichen !!
+ nChrFmtPoolId = RES_POOLCHR_BUL_LEVEL;
+ }
+
+#ifdef NUM_RELSPACE
+ sal_uInt16 nAbsLSpace = HTML_NUMBUL_MARGINLEFT;
+ short nFirstLineIndent = HTML_NUMBUL_INDENT;
+ if( nLevel > 0 )
+ {
+ const SwNumFmt& rPrevNumFmt = rInfo.GetNumRule()->Get( nLevel-1 );
+ nAbsLSpace += rPrevNumFmt.GetAbsLSpace();
+ nFirstLineIndent = rPrevNumFmt.GetFirstLineOffset();
+ }
+ aNumFmt.SetAbsLSpace( nAbsLSpace );
+ aNumFmt.SetFirstLineOffset( nFirstLineIndent );
+#else
+ aNumFmt.SetAbsLSpace( (nLevel+1) * HTML_NUMBUL_MARGINLEFT );
+ aNumFmt.SetFirstLineOffset( HTML_NUMBUL_INDENT );
+#endif
+ aNumFmt.SetCharFmt( pCSS1Parser->GetCharFmtFromPool(nChrFmtPoolId) );
+ bChangeNumFmt = sal_True;
+ }
+ else if( 1 != aNumFmt.GetStartValue() )
+ {
+ // Wenn die Ebene schon mal benutzt wurde, muss der Start-Wert
+ // ggf. hart am Absatz gesetzt werden.
+ rInfo.SetNodeStartValue( nLevel, 1 );
+ }
+
+ // und es ggf. durch die Optionen veraendern
+ String aId, aStyle, aClass, aBulletSrc;
+ SwVertOrient eVertOri = VERT_NONE;
+ sal_uInt16 nWidth=USHRT_MAX, nHeight=USHRT_MAX;
+ const HTMLOptions *pOptions = GetOptions();
+ for( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_TYPE:
+ if( bNewNumFmt && pOption->GetString().Len() )
+ {
+ switch( nToken )
+ {
+ case HTML_ORDERLIST_ON:
+ bChangeNumFmt = sal_True;
+ switch( pOption->GetString().GetChar(0) )
+ {
+ case 'A': aNumFmt.eType = SVX_NUM_CHARS_UPPER_LETTER; break;
+ case 'a': aNumFmt.eType = SVX_NUM_CHARS_LOWER_LETTER; break;
+ case 'I': aNumFmt.eType = SVX_NUM_ROMAN_UPPER; break;
+ case 'i': aNumFmt.eType = SVX_NUM_ROMAN_LOWER; break;
+ default: bChangeNumFmt = sal_False;
+ }
+ break;
+
+ case HTML_UNORDERLIST_ON:
+ aNumFmt.SetBulletChar( (sal_Unicode)pOption->GetEnum(
+ aHTMLULTypeTable,aNumFmt.GetBulletChar() ) );
+ bChangeNumFmt = sal_True;
+ break;
+ }
+ }
+ break;
+ case HTML_O_START:
+ {
+ sal_uInt16 nStart = (sal_uInt16)pOption->GetNumber();
+ if( bNewNumFmt )
+ {
+ aNumFmt.SetStartValue( nStart );
+ bChangeNumFmt = sal_True;
+ }
+ else
+ {
+ rInfo.SetNodeStartValue( nLevel, nStart );
+ }
+ }
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ case HTML_O_SRC:
+ if( bNewNumFmt )
+ {
+ aBulletSrc = pOption->GetString();
+ if( !InternalImgToPrivateURL(aBulletSrc) )
+ aBulletSrc = INetURLObject::RelToAbs( aBulletSrc );
+ }
+ break;
+ case HTML_O_WIDTH:
+ nWidth = (sal_uInt16)pOption->GetNumber();
+ break;
+ case HTML_O_HEIGHT:
+ nHeight = (sal_uInt16)pOption->GetNumber();
+ break;
+ case HTML_O_ALIGN:
+ eVertOri =
+ (SwVertOrient)pOption->GetEnum( aHTMLImgVAlignTable,
+ eVertOri );
+ break;
+ }
+ }
+
+ if( aBulletSrc.Len() )
+ {
+ // Eine Bullet-Liste mit Grafiken
+ aNumFmt.eType = SVX_NUM_BITMAP;
+
+ // Die Grafik als Brush anlegen
+ SvxBrushItem aBrushItem;
+ aBrushItem.SetGraphicLink( aBulletSrc );
+ aBrushItem.SetGraphicPos( GPOS_AREA );
+
+ // Die Groesse nur beachten, wenn Breite und Hoehe vorhanden sind
+ Size aTwipSz( nWidth, nHeight), *pTwipSz=0;
+ if( nWidth!=USHRT_MAX && nHeight!=USHRT_MAX )
+ {
+ aTwipSz =
+ Application::GetDefaultDevice()->PixelToLogic( aTwipSz,
+ MapMode(MAP_TWIP) );
+ pTwipSz = &aTwipSz;
+ }
+
+ // Die Ausrichtung auch nur beachten, wenn eine Ausrichtung
+ // angegeben wurde
+ SwFmtVertOrient aVertOri( 0, eVertOri );
+ SwFmtVertOrient *pVertOri = VERT_NONE!=eVertOri ? &aVertOri : 0;
+
+ aNumFmt.SetGrfBrush( &aBrushItem, pTwipSz, pVertOri );
+
+ // Und noch die Grafik merken, um sie in den Absaetzen nicht
+ // einzufuegen
+ aBulletGrfs[nLevel] = aBulletSrc;
+ bChangeNumFmt = sal_True;
+ }
+ else
+ aBulletGrfs[nLevel].Erase();
+
+ // den aktuellen Absatz erst einmal nicht numerieren
+ SetNodeNum( nLevel | NO_NUMLEVEL );
+
+ // einen neuen Kontext anlegen
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( nToken );
+
+#ifndef NUM_RELSPACE
+ // darin auch die Raender merken
+ sal_uInt16 nLeft=0, nRight=0;
+ short nIndent=0;
+ GetMarginsFromContext( nLeft, nRight, nIndent );
+ nLeft += HTML_NUMBUL_MARGINLEFT;
+ pCntxt->SetMargins( nLeft, nRight, nIndent );
+#endif
+
+ // Styles parsen
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ if( ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo ) )
+ {
+#ifdef NUM_RELSPACE
+ if( bNewNumFmt )
+ {
+ if( aPropInfo.bLeftMargin )
+ {
+ // Der Der Default-Einzug wurde schon eingefuegt.
+ sal_uInt16 nAbsLSpace =
+ aNumFmt.GetAbsLSpace() - HTML_NUMBUL_MARGINLEFT;
+ if( aPropInfo.nLeftMargin < 0 &&
+ nAbsLSpace < -aPropInfo.nLeftMargin )
+ nAbsLSpace = 0U;
+ else if( aPropInfo.nLeftMargin > USHRT_MAX ||
+ (long)nAbsLSpace +
+ aPropInfo.nLeftMargin > USHRT_MAX )
+ nAbsLSpace = USHRT_MAX;
+ else
+ nAbsLSpace = nAbsLSpace + (sal_uInt16)aPropInfo.nLeftMargin;
+
+ aNumFmt.SetAbsLSpace( nAbsLSpace );
+ bChangeNumFmt = sal_True;
+ }
+ if( aPropInfo.bTextIndent )
+ {
+ short nTextIndent =
+ ((const SvxLRSpaceItem &)aItemSet.Get( RES_LR_SPACE ))
+ .GetTxtFirstLineOfst();
+ aNumFmt.SetFirstLineOffset( nTextIndent );
+ bChangeNumFmt = sal_True;
+ }
+ }
+ aPropInfo.bLeftMargin = aPropInfo.bTextIndent = sal_False;
+ if( !aPropInfo.bRightMargin )
+ aItemSet.ClearItem( RES_LR_SPACE );
+#endif
+ DoPositioning( aItemSet, aPropInfo, pCntxt );
+ InsertAttrs( aItemSet, aPropInfo, pCntxt );
+ }
+ }
+
+ if( bChangeNumFmt )
+ {
+ rInfo.GetNumRule()->Set( nLevel, aNumFmt );
+ pDoc->ChgNumRuleFmts( *rInfo.GetNumRule() );
+ }
+
+ PushContext( pCntxt );
+
+ // die Attribute der neuen Vorlage setzen
+ SetTxtCollAttrs( pCntxt );
+}
+
+void SwHTMLParser::EndNumBulList( int nToken )
+{
+ SwHTMLNumRuleInfo& rInfo = GetNumInfo();
+
+ // Ein neuer Absatz muss aufgemacht werden, wenn
+ // - der aktuelle nicht leer ist, also Text oder absatzgebundene Objekte
+ // enthaelt.
+ // - der aktuelle Absatz numeriert ist.
+ sal_Bool bAppend = pPam->GetPoint()->nContent.GetIndex() > 0;
+ if( !bAppend )
+ {
+ SwTxtNode* pTxtNode = pPam->GetNode()->GetTxtNode();
+ bAppend = (pTxtNode && pTxtNode->GetNum() &&
+ !(NO_NUMLEVEL & pTxtNode->GetNum()->GetLevel())) ||
+ HasCurrentParaFlys();
+ }
+
+ sal_Bool bSpace = (rInfo.GetDepth() + nDefListDeep) == 1;
+ if( bAppend )
+ AppendTxtNode( bSpace ? AM_SPACE : AM_NOSPACE, sal_False );
+ else if( bSpace )
+ AddParSpace();
+
+ // den aktuellen Kontext vom Stack holen
+ _HTMLAttrContext *pCntxt = nToken!=0 ? PopContext( nToken & ~1 ) : 0;
+
+ // Keine Liste aufgrund eines Tokens beenden, wenn der Kontext
+ // nie angelgt wurde oder nicht beendet werden darf.
+ if( rInfo.GetDepth()>0 && (!nToken || pCntxt) )
+ {
+ rInfo.DecDepth();
+ if( !rInfo.GetDepth() ) // wars der letze Level ?
+ {
+ // Die noch nicht angepassten Formate werden jetzt noch
+ // angepasst, damit es sich besser Editieren laesst.
+ const SwNumFmt *pRefNumFmt = 0;
+ sal_Bool bChanged = sal_False;
+ for( sal_uInt16 i=0; i<MAXLEVEL; i++ )
+ {
+ const SwNumFmt *pNumFmt = rInfo.GetNumRule()->GetNumFmt(i);
+ if( pNumFmt )
+ {
+ pRefNumFmt = pNumFmt;
+ }
+ else if( pRefNumFmt )
+ {
+ SwNumFmt aNumFmt( rInfo.GetNumRule()->Get(i) );
+ aNumFmt.eType = pRefNumFmt->eType != SVX_NUM_BITMAP
+ ? pRefNumFmt->eType : SVX_NUM_CHAR_SPECIAL;
+ if( SVX_NUM_CHAR_SPECIAL == aNumFmt.eType )
+ {
+ aNumFmt.SetBulletFont(
+ &rInfo.GetNumRule()->GetDefBulletFont() );
+ aNumFmt.SetBulletChar( cBulletChar );
+ }
+ aNumFmt.SetAbsLSpace( (i+1) * HTML_NUMBUL_MARGINLEFT );
+ aNumFmt.SetFirstLineOffset( HTML_NUMBUL_INDENT );
+ aNumFmt.SetCharFmt( pRefNumFmt->GetCharFmt() );
+ rInfo.GetNumRule()->Set( i, aNumFmt );
+ bChanged = sal_True;
+ }
+ }
+ if( bChanged )
+ pDoc->ChgNumRuleFmts( *rInfo.GetNumRule() );
+
+ // Beim letzen Append wurde das NumRule-Item und das
+ // NodeNum-Objekt mit kopiert. Beides muessen wir noch
+ // loeschen. Das ResetAttr loescht das NodeNum-Objekt mit!
+ pPam->GetNode()->GetTxtNode()->ResetAttr( RES_PARATR_NUMRULE );
+
+#ifndef NUM_RELSPACE
+ // Die Numerierung komplett beenden.
+ if( pTable )
+ UpdateNumRuleInTable();
+#endif
+ rInfo.Clear();
+ }
+ else
+ {
+ // den naechsten Absatz erstmal nicht numerieren
+ SetNodeNum( rInfo.GetLevel() | NO_NUMLEVEL );
+ }
+ }
+
+ // und noch Attribute beenden
+ sal_Bool bSetAttrs = sal_False;
+ if( pCntxt )
+ {
+ EndContext( pCntxt );
+ delete pCntxt;
+ bSetAttrs = sal_True;
+ }
+
+ if( nToken )
+ SetTxtCollAttrs();
+
+ if( bSetAttrs )
+ SetAttr(); // Absatz-Atts wegen JavaScript moeglichst schnell setzen
+
+}
+
+/* */
+
+void SwHTMLParser::NewNumBulListItem( int nToken )
+{
+ sal_uInt8 nLevel = GetNumInfo().GetLevel();
+ String aId, aStyle, aClass;
+ sal_uInt16 nStart = HTML_LISTHEADER_ON != nToken
+ ? GetNumInfo().GetNodeStartValue( nLevel )
+ : USHRT_MAX;
+ if( USHRT_MAX != nStart )
+ GetNumInfo().SetNodeStartValue( nLevel );
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_VALUE:
+ nStart = (sal_uInt16)pOption->GetNumber();
+ break;
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ }
+ }
+
+ // einen neuen Absatz aufmachen
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( AM_NOSPACE, sal_False );
+ bNoParSpace = sal_False; // In <LI> wird kein Abstand eingefuegt!
+
+ if( HTML_LISTHEADER_ON==nToken )
+ nLevel = nLevel | NO_NUMLEVEL;
+
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( nToken );
+
+ String aNumRuleName;
+ if( GetNumInfo().GetNumRule() )
+ {
+ aNumRuleName = GetNumInfo().GetNumRule()->GetName();
+ }
+ else
+ {
+ aNumRuleName = pDoc->GetUniqueNumRuleName();
+ SwNumRule aNumRule( aNumRuleName );
+ SwNumFmt aNumFmt( aNumRule.Get( 0 ) );
+ aNumFmt.SetBulletFont( &SwNumRule::GetDefBulletFont() );
+ aNumFmt.eType = SVX_NUM_CHAR_SPECIAL;
+ aNumFmt.SetBulletChar( cBulletChar ); // das Bulletzeichen !!
+ aNumFmt.SetCharFmt( pCSS1Parser->GetCharFmtFromPool(RES_POOLCHR_BUL_LEVEL) );
+ aNumFmt.SetLSpace( (sal_uInt16)(-HTML_NUMBUL_INDENT) );
+ aNumFmt.SetFirstLineOffset( HTML_NUMBUL_INDENT );
+ aNumRule.Set( 0, aNumFmt );
+
+ pDoc->MakeNumRule( aNumRuleName, &aNumRule );
+
+#ifndef NUM_RELSPACE
+ // Hier muessen wir hart attributieren
+ sal_uInt16 nLeft=0, nRight=0;
+ short nIndent=0;
+ GetMarginsFromContext( nLeft, nRight, nIndent );
+ nLeft += (sal_uInt16)(-HTML_NUMBUL_INDENT);
+ pCntxt->SetMargins( nLeft, nRight, nIndent );
+#endif
+
+ ASSERT( !nOpenParaToken,
+ "Jetzt geht ein offenes Absatz-Element verloren" );
+ // Wir tun so, als ob wir in einem Absatz sind. Dann wird
+ // beim naechsten Absatz wenigstens die Numerierung
+ // weggeschmissen, die nach dem naechsten AppendTxtNode uebernommen
+ // wird.
+ nOpenParaToken = nToken;
+ }
+
+ SwTxtNode* pTxtNode = pPam->GetNode()->GetTxtNode();
+ ((SwCntntNode *)pTxtNode)->SetAttr( SwNumRuleItem(aNumRuleName) );
+ pTxtNode->UpdateNum( SwNodeNum( nLevel, nStart ) );
+#ifndef NUM_RELSPACE
+ pTxtNode->SetNumLSpace( GetNumInfo().GetNumRule()!=0 );
+#endif
+ if( GetNumInfo().GetNumRule() )
+ GetNumInfo().GetNumRule()->SetInvalidRule( sal_True );
+
+ // Styles parsen
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ if( ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo ) )
+ {
+ DoPositioning( aItemSet, aPropInfo, pCntxt );
+ InsertAttrs( aItemSet, aPropInfo, pCntxt );
+ }
+ }
+
+ PushContext( pCntxt );
+
+ // die neue Vorlage setzen
+ SetTxtCollAttrs( pCntxt );
+
+ // Laufbalkenanzeige aktualisieren
+ ShowStatline();
+}
+
+void SwHTMLParser::EndNumBulListItem( int nToken, sal_Bool bSetColl,
+ sal_Bool bLastPara )
+{
+ // einen neuen Absatz aufmachen
+ if( !nToken && pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( AM_NOSPACE );
+
+ // Kontext zu dem Token suchen und vom Stack holen
+ _HTMLAttrContext *pCntxt = 0;
+ sal_uInt16 nPos = aContexts.Count();
+ nToken &= ~1;
+ while( !pCntxt && nPos>nContextStMin )
+ {
+ sal_uInt16 nCntxtToken = aContexts[--nPos]->GetToken();
+ switch( nCntxtToken )
+ {
+ case HTML_LI_ON:
+ case HTML_LISTHEADER_ON:
+ if( !nToken || nToken == nCntxtToken )
+ {
+ pCntxt = aContexts[nPos];
+ aContexts.Remove( nPos, 1 );
+ }
+ break;
+ case HTML_ORDERLIST_ON:
+ case HTML_UNORDERLIST_ON:
+ case HTML_MENULIST_ON:
+ case HTML_DIRLIST_ON:
+ // keine LI/LH ausserhalb der aktuellen Liste betrachten
+ nPos = nContextStMin;
+ break;
+ }
+ }
+
+ // und noch Attribute beenden
+ if( pCntxt )
+ {
+ EndContext( pCntxt );
+ SetAttr(); // Absatz-Atts wegen JavaScript moeglichst schnell setzen
+ delete pCntxt;
+ }
+
+ // und die bisherige Vorlage setzen
+ if( bSetColl )
+ SetTxtCollAttrs();
+}
+
+/* */
+
+void SwHTMLParser::SetNodeNum( sal_uInt8 nLevel )
+{
+ SwTxtNode* pTxtNode = pPam->GetNode()->GetTxtNode();
+ ASSERT( pTxtNode, "Kein Text-Node an PaM-Position" );
+
+ ASSERT( GetNumInfo().GetNumRule(), "Kein Numerierungs-Regel" );
+ const String& rName = GetNumInfo().GetNumRule()->GetName();
+ ((SwCntntNode *)pTxtNode)->SetAttr( SwNumRuleItem(rName) );
+
+ pTxtNode->UpdateNum( SwNodeNum( nLevel ) );
+#ifndef NUM_RELSPACE
+ pTxtNode->SetNumLSpace( sal_True );
+#endif
+
+ // NumRule invalidieren, weil sie durch ein EndAction bereits
+ // auf valid geschaltet worden sein kann.
+ GetNumInfo().GetNumRule()->SetInvalidRule( sal_False );
+}
+
+
+#ifndef NUM_RELSPACE
+void SwHTMLParser::UpdateNumRuleInTable()
+{
+ // Wenn wir in einer Tabelle sind, muss die Numerierung wegen
+ // GetMixMaxSize gliech updatet werden. Wenn die Numerierung
+ // in einen Rahmen rein oder aus einem Rahmen heraus geschoben
+ // muss sie komplett updatet werden. Sonst genuegt es, sie
+ // innerhalb der aktuellen Zelle zu updaten.
+
+ ASSERT( GetNumInfo().GetNumRule(), "UpdateNumRuleInTable: Keine NumRule" );
+ ASSERT( pTable, "UpdateNumRuleInTable: Keine Tabele, Aufruf unneotig" );
+
+ sal_uInt32 nPos = ULONG_MAX;
+ if( !GetNumInfo().IsUpdateWholeNum() )
+ {
+ const SwStartNode *pSttNd = pPam->GetNode()->FindTableBoxStartNode();
+ ASSERT( pSttNd || pPam->GetNode()->FindFlyStartNode(),
+ "UpdateNumRuleInTable: Doch keine Tabelle?" );
+ if( pSttNd )
+ nPos = pSttNd->GetIndex();
+ }
+ pDoc->UpdateNumRule( GetNumInfo().GetNumRule()->GetName(), nPos );
+}
+#endif
+
+/* */
+
+void SwHTMLWriter::FillNextNumInfo()
+{
+ pNextNumRuleInfo = 0;
+
+ sal_uInt32 nPos = pCurPam->GetPoint()->nNode.GetIndex() + 1;
+
+ sal_Bool bDone = sal_False;
+ sal_Bool bTable = sal_False;
+ do
+ {
+ const SwNode* pNd = pDoc->GetNodes()[nPos];
+ if( pNd->IsTxtNode() )
+ {
+ // Der naechste wird als naechstes ausgegeben.
+ pNextNumRuleInfo = new SwHTMLNumRuleInfo( *pNd->GetTxtNode() );
+
+ // Vor einer Tabelle behalten wir erst einmal die alte Ebene bei,
+ // wenn die gleiche Numerierung hinter der Tabelle
+ // fortgesetzt wird und dort nicht von vorne numeriert
+ // wird. Die Tabelle wird ann beim Import so weit eingeruckt,
+ // wie es der Num-Ebene entspricht.
+ if( bTable &&
+ pNextNumRuleInfo->GetNumRule()==GetNumInfo().GetNumRule() &&
+ !pNextNumRuleInfo->IsRestart() )
+ {
+ pNextNumRuleInfo->SetDepth( GetNumInfo().GetDepth() );
+ }
+ }
+ else if( pNd->IsTableNode() )
+ {
+ // Eine Tabelle wird uebersprungen, also den Node
+ // hinter der Tabelle betrachten.
+ nPos = pNd->EndOfSectionIndex() + 1;
+ bTable = sal_True;
+ }
+ else
+ {
+ // In allen anderen Faellen ist die Numerierung erstmal
+ // zu Ende.
+ pNextNumRuleInfo = new SwHTMLNumRuleInfo;
+ }
+ }
+ while( !pNextNumRuleInfo );
+}
+
+void SwHTMLWriter::ClearNextNumInfo()
+{
+ delete pNextNumRuleInfo;
+ pNextNumRuleInfo = 0;
+}
+
+Writer& OutHTML_NumBulListStart( SwHTMLWriter& rWrt,
+ const SwHTMLNumRuleInfo& rInfo )
+{
+ SwHTMLNumRuleInfo& rPrevInfo = rWrt.GetNumInfo();
+ sal_Bool bSameRule = rPrevInfo.GetNumRule() == rInfo.GetNumRule();
+ if( bSameRule && rPrevInfo.GetDepth() >= rInfo.GetDepth() &&
+ !rInfo.IsRestart() )
+ {
+ return rWrt;
+ }
+
+ DBG_ASSERT( rWrt.nLastParaToken == 0,
+ "<PRE> wurde nicht vor <OL> beendet." );
+ sal_uInt16 nPrevDepth =
+ (bSameRule && !rInfo.IsRestart()) ? rPrevInfo.GetDepth() : 0;
+
+ for( sal_uInt16 i=nPrevDepth; i<rInfo.GetDepth(); i++ )
+ {
+ rWrt.OutNewLine(); // <OL>/<UL> in eine neue Zeile
+
+ rWrt.aBulletGrfs[i].Erase();
+ ByteString sOut( '<' );
+ const SwNumFmt& rNumFmt = rInfo.GetNumRule()->Get( i );
+ SvxExtNumType eType = rNumFmt.eType;
+ if( SVX_NUM_CHAR_SPECIAL == eType )
+ {
+ // Aufzaehlungs-Liste: <OL>
+ sOut += sHTML_unorderlist;
+
+ // den Typ ueber das Bullet-Zeichen bestimmen
+ const sal_Char *pStr = 0;
+ switch( rNumFmt.GetBulletChar() )
+ {
+ case HTML_BULLETCHAR_DISC:
+ pStr = sHTML_ULTYPE_disc;
+ break;
+ case HTML_BULLETCHAR_CIRCLE:
+ pStr = sHTML_ULTYPE_circle;
+ break;
+ case HTML_BULLETCHAR_SQUARE:
+ pStr = sHTML_ULTYPE_square;
+ break;
+ }
+
+ if( pStr )
+ (((sOut += ' ') += sHTML_O_type) += '=') += pStr;
+ }
+ else if( SVX_NUM_BITMAP == eType )
+ {
+ // Aufzaehlungs-Liste: <OL>
+ sOut += sHTML_unorderlist;
+ rWrt.Strm() << sOut.GetBuffer();
+ sOut.Erase();
+
+ OutHTML_BulletImage( rWrt,
+ 0,
+ rNumFmt.GetGrfBrush(),
+ rWrt.aBulletGrfs[i],
+ rNumFmt.GetGrfSize(),
+ rNumFmt.GetGrfOrient() );
+ }
+ else
+ {
+ // Numerierungs-Liste: <UL>
+ sOut += sHTML_orderlist;
+
+ // den Typ ueber das Format bestimmen
+ sal_Char cType = 0;
+ switch( eType )
+ {
+ case SVX_NUM_CHARS_UPPER_LETTER: cType = 'A'; break;
+ case SVX_NUM_CHARS_LOWER_LETTER: cType = 'a'; break;
+ case SVX_NUM_ROMAN_UPPER: cType = 'I'; break;
+ case SVX_NUM_ROMAN_LOWER: cType = 'i'; break;
+ }
+ if( cType )
+ (((sOut += ' ') += sHTML_O_type) += '=') += cType;
+
+ // und evtl. den Startwert mit ausgeben
+ if( rNumFmt.GetStartValue() != 1 )
+ {
+ (((sOut += ' ') += sHTML_O_start) += '=')
+ += ByteString::CreateFromInt32( rNumFmt.GetStartValue() );
+ }
+ }
+
+ if( sOut.Len() )
+ rWrt.Strm() << sOut.GetBuffer();
+
+#ifdef NUM_RELSPACE
+ if( rWrt.bCfgOutStyles )
+ OutCSS1_NumBulListStyleOpt( rWrt, *rInfo.GetNumRule(), i );
+#endif
+
+ rWrt.Strm() << '>';
+
+ rWrt.IncIndentLevel(); // Inhalt von <OL> einruecken
+ }
+
+ return rWrt;
+}
+
+Writer& OutHTML_NumBulListEnd( SwHTMLWriter& rWrt,
+ const SwHTMLNumRuleInfo& rNextInfo )
+{
+ SwHTMLNumRuleInfo& rInfo = rWrt.GetNumInfo();
+ sal_Bool bSameRule = rNextInfo.GetNumRule() == rInfo.GetNumRule();
+ if( bSameRule && rNextInfo.GetDepth() >= rInfo.GetDepth() &&
+ !rNextInfo.IsRestart() )
+ {
+ return rWrt;
+ }
+
+ DBG_ASSERT( rWrt.nLastParaToken == 0,
+ "<PRE> wurde nicht vor </OL> beendet." );
+ sal_uInt16 nNextDepth =
+ (bSameRule && !rNextInfo.IsRestart()) ? rNextInfo.GetDepth() : 0;
+
+ // MIB 23.7.97: Die Schleife muss doch rueckwaerts durchlaufen
+ // werden, weil die Reihenfolge von </OL>/</UL> stimmen muss
+ for( sal_uInt16 i=rInfo.GetDepth(); i>nNextDepth; i-- )
+ {
+ rWrt.DecIndentLevel(); // Inhalt von <OL> einruecken
+ if( rWrt.bLFPossible )
+ rWrt.OutNewLine(); // </OL>/</UL> in eine neue Zeile
+
+ // es wird also eine Liste angefangen oder beendet:
+ SvxExtNumType eType = rInfo.GetNumRule()->Get( i-1 ).eType;
+ const sal_Char *pStr;
+ if( SVX_NUM_CHAR_SPECIAL == eType || SVX_NUM_BITMAP == eType)
+ pStr = sHTML_unorderlist;
+ else
+ pStr = sHTML_orderlist;
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), pStr, sal_False );
+ rWrt.bLFPossible = sal_True;
+ }
+
+ return rWrt;
+}
+
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.21 2000/09/18 16:04:45 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.20 2000/06/26 09:52:17 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.19 2000/04/10 12:20:56 mib
+ unicode
+
+ Revision 1.18 2000/03/21 15:06:18 os
+ UNOIII
+
+ Revision 1.17 2000/02/11 14:37:16 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.16 1999/11/19 16:40:20 os
+ modules renamed
+
+ Revision 1.15 1999/09/17 12:13:32 mib
+ support of multiple and non system text encodings
+
+ Revision 1.14 1999/03/26 10:37:28 MIB
+ #63049#: Sofortige Numerierungs-Aktualisierung in Tabellen ist jetzt unnoetig
+
+
+ Rev 1.13 26 Mar 1999 11:37:28 MIB
+ #63049#: Sofortige Numerierungs-Aktualisierung in Tabellen ist jetzt unnoetig
+
+ Rev 1.12 23 Mar 1999 15:28:16 MIB
+ #63049#: Relative Einzuege in Numerierungen
+
+ Rev 1.11 17 Mar 1999 16:47:10 MIB
+ #63049#: Numerierungen mit relativen Abstaenden
+
+ Rev 1.10 27 Jan 1999 09:43:54 OS
+ #56371# TF_ONE51
+
+ Rev 1.9 06 Jan 1999 10:33:40 MIB
+ #60311#: In Listen fuer nicht-numerierte Absaetze keine <PRE> ausgeben
+
+ Rev 1.8 17 Nov 1998 10:44:30 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.7 05 Nov 1998 12:34:30 MIB
+ #59042#: Fuer nicht verwendete Numerierungs-Ebenen sinnvolle Defaults setzen
+
+ Rev 1.6 21 Apr 1998 13:46:58 MIB
+ fix: Keine ::com::sun::star::text::Bookmark fuer abs-pos Objekte mit ID einfuegen
+
+ Rev 1.5 03 Apr 1998 12:21:48 MIB
+ Export des Rahmen-Namens als ID
+
+ Rev 1.4 25 Mar 1998 12:09:24 MIB
+ unneotige defines weg
+
+ Rev 1.3 02 Mar 1998 18:32:16 MIB
+ fix #47671#: Erste Numerierung auf einer Ebene gewinnt, Startwert
+
+ Rev 1.2 20 Feb 1998 19:01:50 MA
+ header
+
+ Rev 1.1 10 Feb 1998 09:51:24 MIB
+ fix: Fuer Absatz-Abstand am Start-/Ende von Listen auch OL/UL/DL beachten
+
+ Rev 1.0 19 Jan 1998 16:16:26 MIB
+ Initial revision.
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmlnum.hxx b/sw/source/filter/html/htmlnum.hxx
new file mode 100644
index 000000000000..e032210d25b0
--- /dev/null
+++ b/sw/source/filter/html/htmlnum.hxx
@@ -0,0 +1,189 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlnum.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _HTMLNUM_HXX
+#define _HTMLNUM_HXX
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#include <string.h>
+
+#define HTML_NUMBUL_MARGINLEFT (MM50*2 + MM50/2)
+#define HTML_NUMBUL_INDENT (-MM50)
+
+class SwTxtNode;
+class SwNumRule;
+
+class SwHTMLNumRuleInfo
+{
+ sal_uInt16 aNumStarts[MAXLEVEL];
+ SwNumRule * pNumRule; // Aktuelle Numerierung
+ sal_uInt16 nDeep; // aktuelle Num-Tiefe (1, 2, 3, ...)
+ sal_Bool bRestart : 1; // Export: Numerierung neu starten
+ sal_Bool bNumbered : 1; // Export: Absatz ist numeriert
+#ifndef NUM_RELSPACE
+ sal_Bool bUpdateWholeNum : 1; // Import: Muss die NumRule
+ // vollstaendig aktualisiert werden
+#endif
+
+public:
+
+ inline void Set( const SwHTMLNumRuleInfo& rInf );
+ void Set( const SwTxtNode& rTxtNd );
+
+ SwHTMLNumRuleInfo() :
+ pNumRule( 0 ), nDeep( 0 ),
+#ifndef NUM_RELSPACE
+ bUpdateWholeNum( sal_False ),
+#endif
+ bRestart( sal_False ), bNumbered( sal_False )
+ {
+ memset( &aNumStarts, 0xff, sizeof( aNumStarts ) );
+ }
+
+ SwHTMLNumRuleInfo( const SwHTMLNumRuleInfo& rInf ) :
+ pNumRule( rInf.pNumRule ), nDeep( rInf.nDeep ),
+#ifndef NUM_RELSPACE
+ bUpdateWholeNum( rInf.bUpdateWholeNum ),
+#endif
+ bRestart( rInf.bRestart ), bNumbered( rInf.bNumbered )
+ {
+ memcpy( &aNumStarts, &rInf.aNumStarts, sizeof( aNumStarts ) );
+ }
+
+ SwHTMLNumRuleInfo( const SwTxtNode& rTxtNd ) { Set( rTxtNd ); }
+ inline SwHTMLNumRuleInfo& operator=( const SwHTMLNumRuleInfo& rInf );
+
+ inline void Clear();
+
+ void SetNumRule( const SwNumRule *pRule ) { pNumRule = (SwNumRule *)pRule; }
+ SwNumRule *GetNumRule() { return pNumRule; }
+ const SwNumRule *GetNumRule() const { return pNumRule; }
+
+ void SetDepth( sal_uInt16 nDepth ) { nDeep = nDepth; }
+ sal_uInt16 GetDepth() const { return nDeep; }
+ sal_uInt16 IncDepth() { return ++nDeep; }
+ sal_uInt16 DecDepth() { return nDeep==0 ? 0 : --nDeep; }
+ inline sal_uInt8 GetLevel() const;
+
+#ifndef NUM_RELSPACE
+ void SetUpdateWholeNum( sal_Bool bSet ) { bUpdateWholeNum = bSet; }
+ sal_Bool IsUpdateWholeNum() const { return bUpdateWholeNum; }
+#endif
+
+ void SetRestart( sal_Bool bSet ) { bRestart = bSet; }
+ sal_Bool IsRestart() const { return bRestart; }
+
+ void SetNumbered( sal_Bool bSet ) { bNumbered = bSet; }
+ sal_Bool IsNumbered() const { return bNumbered; }
+
+ inline void SetNodeStartValue( sal_uInt8 nLvl, sal_uInt16 nVal=USHRT_MAX );
+ sal_uInt16 GetNodeStartValue( sal_uInt8 nLvl ) const { return aNumStarts[nLvl]; }
+};
+
+inline SwHTMLNumRuleInfo& SwHTMLNumRuleInfo::operator=(
+ const SwHTMLNumRuleInfo& rInf )
+{
+ Set( rInf );
+ return *this;
+}
+
+inline void SwHTMLNumRuleInfo::Set( const SwHTMLNumRuleInfo& rInf )
+{
+ pNumRule = rInf.pNumRule;
+ nDeep = rInf.nDeep;
+#ifndef NUM_RELSPACE
+ bUpdateWholeNum = rInf.bUpdateWholeNum;
+#endif
+ bRestart = rInf.bRestart;
+ bNumbered = rInf.bNumbered;
+ memcpy( &aNumStarts, &rInf.aNumStarts, sizeof( aNumStarts ) );
+}
+
+inline void SwHTMLNumRuleInfo::Clear()
+{
+ pNumRule = 0;
+ nDeep = 0;
+#ifndef NUM_RELSPACE
+ bUpdateWholeNum = sal_False;
+#endif
+ bRestart = bNumbered = sal_False;
+ memset( &aNumStarts, 0xff, sizeof( aNumStarts ) );
+}
+
+inline sal_uInt8 SwHTMLNumRuleInfo::GetLevel() const
+{
+ return
+ (sal_uInt8)( pNumRule!=0 && nDeep != 0
+ ? ( nDeep<=MAXLEVEL ? nDeep-1 : MAXLEVEL - 1 )
+ : 0 );
+}
+
+inline void SwHTMLNumRuleInfo::SetNodeStartValue( sal_uInt8 nLvl, sal_uInt16 nVal )
+{
+ aNumStarts[nLvl] = nVal;
+}
+
+
+#endif
+
+
diff --git a/sw/source/filter/html/htmlplug.cxx b/sw/source/filter/html/htmlplug.cxx
new file mode 100644
index 000000000000..81e8112a42d5
--- /dev/null
+++ b/sw/source/filter/html/htmlplug.cxx
@@ -0,0 +1,1360 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlplug.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#define _SVSTDARR_ULONGS
+#include <svtools/svstdarr.hxx>
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _FRMHTML_HXX //autogen
+#include <sfx2/frmhtml.hxx>
+#endif
+#ifndef _FRAMEOBJ_HXX //autogen
+#include <sfx2/frameobj.hxx>
+#endif
+#ifndef _FRMHTMLW_HXX //autogen
+#include <sfx2/frmhtmlw.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+#ifndef _APPLET_HXX //autogen
+#include <so3/applet.hxx>
+#endif
+#ifndef _PLUGIN_HXX //autogen
+#include <so3/plugin.hxx>
+#endif
+#ifndef _XOUTBMP_HXX //autogen
+#include <svx/xoutbmp.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+
+
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+
+
+#include "pam.hxx"
+#include "doc.hxx"
+#include "ndtxt.hxx"
+#include "swerror.h"
+#include "ndole.hxx"
+#include "swtable.hxx"
+#include "swhtml.hxx"
+#include "wrthtml.hxx"
+#include "htmlfly.hxx"
+#include "swcss1.hxx"
+
+#define HTML_DFLT_EMBED_WIDTH ((MM50*5)/2)
+#define HTML_DFLT_EMBED_HEIGHT ((MM50*5)/2)
+
+#define HTML_DFLT_APPLET_WIDTH ((MM50*5)/2)
+#define HTML_DFLT_APPLET_HEIGHT ((MM50*5)/2)
+
+const ULONG HTML_FRMOPTS_EMBED_ALL =
+ HTML_FRMOPT_ALT |
+ HTML_FRMOPT_SIZE |
+ HTML_FRMOPT_NAME;
+const ULONG HTML_FRMOPTS_EMBED_CNTNR =
+ HTML_FRMOPTS_EMBED_ALL |
+ HTML_FRMOPT_ABSSIZE;
+const ULONG HTML_FRMOPTS_EMBED =
+ HTML_FRMOPTS_EMBED_ALL |
+ HTML_FRMOPT_ALIGN |
+ HTML_FRMOPT_SPACE |
+ HTML_FRMOPT_BRCLEAR |
+ HTML_FRMOPT_NAME;
+const ULONG HTML_FRMOPTS_HIDDEN_EMBED =
+ HTML_FRMOPT_ALT |
+ HTML_FRMOPT_NAME;
+
+const ULONG HTML_FRMOPTS_APPLET_ALL =
+ HTML_FRMOPT_ALT |
+ HTML_FRMOPT_SIZE;
+const ULONG HTML_FRMOPTS_APPLET_CNTNR =
+ HTML_FRMOPTS_APPLET_ALL |
+ HTML_FRMOPT_ABSSIZE;
+const ULONG HTML_FRMOPTS_APPLET =
+ HTML_FRMOPTS_APPLET_ALL |
+ HTML_FRMOPT_ALIGN |
+ HTML_FRMOPT_SPACE |
+ HTML_FRMOPT_BRCLEAR;
+
+const ULONG HTML_FRMOPTS_IFRAME_ALL =
+ HTML_FRMOPT_ALT |
+ HTML_FRMOPT_SIZE;
+const ULONG HTML_FRMOPTS_IFRAME_CNTNR =
+ HTML_FRMOPTS_IFRAME_ALL |
+ HTML_FRMOPT_ABSSIZE;
+const ULONG HTML_FRMOPTS_IFRAME =
+ HTML_FRMOPTS_IFRAME_ALL |
+ HTML_FRMOPT_ALIGN |
+ HTML_FRMOPT_SPACE |
+ HTML_FRMOPT_BORDER |
+ HTML_FRMOPT_BRCLEAR;
+
+const ULONG HTML_FRMOPTS_OLE_CSS1 =
+ HTML_FRMOPT_S_ALIGN |
+ HTML_FRMOPT_S_SPACE;
+
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_O_hidden, "HIDDEN" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_HIDDEN_false, "FALSE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_O_archive, "ARCHIVE" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_O_archives, "ARCHIVES" );
+sal_Char __FAR_DATA SVTOOLS_CONSTASCII_DEF( sHTML_O_object, "OBJECT" );
+
+/* */
+
+void SwHTMLParser::SetFixSize( const Size& rPixSize,
+ const Size& rTwipDfltSize,
+ BOOL bPrcWidth, BOOL bPrcHeight,
+ SfxItemSet& rCSS1ItemSet,
+ SvxCSS1PropertyInfo& rCSS1PropInfo,
+ SfxItemSet& rFlyItemSet )
+{
+ // absolulte Groessenangaben in Twip umrechnen
+ BYTE nPrcWidth = 0, nPrcHeight = 0;
+ Size aTwipSz( bPrcWidth || USHRT_MAX==rPixSize.Width() ? 0 : rPixSize.Width(),
+ bPrcHeight || USHRT_MAX==rPixSize.Height() ? 0 : rPixSize.Height() );
+ if( (aTwipSz.Width() || aTwipSz.Height()) && Application::GetDefaultDevice() )
+ {
+ aTwipSz =
+ Application::GetDefaultDevice()->PixelToLogic( aTwipSz,
+ MapMode(MAP_TWIP) );
+ }
+
+ // die Breite bearbeiten
+ if( SVX_CSS1_LTYPE_PERCENTAGE == rCSS1PropInfo.eWidthType )
+ {
+ nPrcWidth = (BYTE)rCSS1PropInfo.nWidth;
+ aTwipSz.Width() = rTwipDfltSize.Width();
+ }
+ else if( SVX_CSS1_LTYPE_TWIP== rCSS1PropInfo.eWidthType )
+ {
+ aTwipSz.Width() = rCSS1PropInfo.nWidth;
+ }
+ else if( bPrcWidth && rPixSize.Width() )
+ {
+ nPrcWidth = (BYTE)rPixSize.Width();
+ if( nPrcWidth > 100 )
+ nPrcWidth = 100;
+
+ aTwipSz.Width() = rTwipDfltSize.Width();
+ }
+ else if( USHRT_MAX==rPixSize.Width() )
+ {
+ aTwipSz.Width() = rTwipDfltSize.Width();
+ }
+ if( aTwipSz.Width() < MINFLY )
+ {
+ aTwipSz.Width() = MINFLY;
+ }
+
+ // Hoehe bearbeiten
+ if( SVX_CSS1_LTYPE_PERCENTAGE == rCSS1PropInfo.eHeightType )
+ {
+ nPrcHeight = (BYTE)rCSS1PropInfo.nHeight;
+ aTwipSz.Height() = rTwipDfltSize.Height();
+ }
+ else if( SVX_CSS1_LTYPE_TWIP== rCSS1PropInfo.eHeightType )
+ {
+ aTwipSz.Height() = rCSS1PropInfo.nHeight;
+ }
+ else if( bPrcHeight && rPixSize.Height() )
+ {
+ nPrcHeight = (BYTE)rPixSize.Height();
+ if( nPrcHeight > 100 )
+ nPrcHeight = 100;
+
+ aTwipSz.Height() = rTwipDfltSize.Height();
+ }
+ else if( USHRT_MAX==rPixSize.Height() )
+ {
+ aTwipSz.Height() = rTwipDfltSize.Height();
+ }
+ if( aTwipSz.Height() < MINFLY )
+ {
+ aTwipSz.Height() = MINFLY;
+ }
+
+ // Size setzen
+ SwFmtFrmSize aFrmSize( ATT_FIX_SIZE, aTwipSz.Width(), aTwipSz.Height() );
+ aFrmSize.SetWidthPercent( nPrcWidth );
+ aFrmSize.SetHeightPercent( nPrcHeight );
+ rFlyItemSet.Put( aFrmSize );
+}
+
+void SwHTMLParser::SetSpace( const Size& rPixSpace,
+ SfxItemSet& rCSS1ItemSet,
+ SvxCSS1PropertyInfo& rCSS1PropInfo,
+ SfxItemSet& rFlyItemSet )
+{
+ USHORT nLeftSpace = 0, nRightSpace = 0, nUpperSpace = 0, nLowerSpace = 0;
+ if( (rPixSpace.Width() || rPixSpace.Height()) && Application::GetDefaultDevice() )
+ {
+ Size aTwipSpc( rPixSpace.Width(), rPixSpace.Height() );
+ aTwipSpc =
+ Application::GetDefaultDevice()->PixelToLogic( aTwipSpc,
+ MapMode(MAP_TWIP) );
+ nLeftSpace = nRightSpace = (USHORT)aTwipSpc.Width();
+ nUpperSpace = nLowerSpace = (USHORT)aTwipSpc.Height();
+ }
+
+ // linken/rechten Rand setzen
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_LR_SPACE, TRUE, &pItem ) )
+ {
+ // Ggf. den Erstzeilen-Einzug noch plaetten
+ const SvxLRSpaceItem *pLRItem = (const SvxLRSpaceItem *)pItem;
+ SvxLRSpaceItem aLRItem( *pLRItem );
+ aLRItem.SetTxtFirstLineOfst( 0 );
+ if( rCSS1PropInfo.bLeftMargin )
+ {
+ nLeftSpace = aLRItem.GetLeft();
+ rCSS1PropInfo.bLeftMargin = FALSE;
+ }
+ if( rCSS1PropInfo.bRightMargin )
+ {
+ nRightSpace = aLRItem.GetRight();
+ rCSS1PropInfo.bRightMargin = FALSE;
+ }
+ rCSS1ItemSet.ClearItem( RES_LR_SPACE );
+ }
+ if( nLeftSpace || nRightSpace )
+ {
+ SvxLRSpaceItem aLRItem;
+ aLRItem.SetLeft( nLeftSpace );
+ aLRItem.SetRight( nRightSpace );
+ rFlyItemSet.Put( aLRItem );
+ if( nLeftSpace )
+ {
+ const SwFmtHoriOrient& rHoriOri =
+ (const SwFmtHoriOrient&)rFlyItemSet.Get( RES_HORI_ORIENT );
+ if( HORI_NONE == rHoriOri.GetHoriOrient() )
+ {
+ SwFmtHoriOrient aHoriOri( rHoriOri );
+ aHoriOri.SetPos( aHoriOri.GetPos() + nLeftSpace );
+ rFlyItemSet.Put( aHoriOri );
+ }
+ }
+ }
+
+ // oberen/unteren Rand setzen
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_UL_SPACE, TRUE, &pItem ) )
+ {
+ // Ggf. den Erstzeilen-Einzug noch plaetten
+ const SvxULSpaceItem *pULItem = (const SvxULSpaceItem *)pItem;
+ if( rCSS1PropInfo.bTopMargin )
+ {
+ nUpperSpace = pULItem->GetUpper();
+ rCSS1PropInfo.bTopMargin = FALSE;
+ }
+ if( rCSS1PropInfo.bBottomMargin )
+ {
+ nLowerSpace = pULItem->GetLower();
+ rCSS1PropInfo.bBottomMargin = FALSE;
+ }
+ rCSS1ItemSet.ClearItem( RES_UL_SPACE );
+ }
+ if( nUpperSpace || nLowerSpace )
+ {
+ SvxULSpaceItem aULItem;
+ aULItem.SetUpper( nUpperSpace );
+ aULItem.SetLower( nLowerSpace );
+ rFlyItemSet.Put( aULItem );
+ if( nUpperSpace )
+ {
+ const SwFmtVertOrient& rVertOri =
+ (const SwFmtVertOrient&)rFlyItemSet.Get( RES_VERT_ORIENT );
+ if( VERT_NONE == rVertOri.GetVertOrient() )
+ {
+ SwFmtVertOrient aVertOri( rVertOri );
+ aVertOri.SetPos( aVertOri.GetPos() + nUpperSpace );
+ rFlyItemSet.Put( aVertOri );
+ }
+ }
+ }
+}
+
+/* */
+
+void SwHTMLParser::InsertEmbed()
+{
+ String aURL, aType, aName, aAlt, aId, aStyle, aClass;
+ Size aSize( USHRT_MAX, USHRT_MAX );
+ Size aSpace( USHRT_MAX, USHRT_MAX );
+ BOOL bPrcWidth = FALSE, bPrcHeight = FALSE, bHidden = FALSE;
+ SwVertOrient eVertOri = VERT_NONE;
+ SwHoriOrient eHoriOri = HORI_NONE;
+ SvCommandList aCmdLst;
+ const HTMLOptions *pOptions = GetOptions();
+
+ // Die Optionen werden vorwaerts gelesen, weil die Plugins sie in
+ // dieser Reihenfolge erwarten. Trotzdem darf immer nur der erste
+ // Wert einer Option beruecksichtigt werden.
+ USHORT nArrLen = pOptions->Count();
+ for( USHORT i=0; i<nArrLen; i++ )
+ {
+ const HTMLOption *pOption = (*pOptions)[i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ case HTML_O_NAME:
+ aName = pOption->GetString();
+ break;
+ case HTML_O_SRC:
+ if( !aURL.Len() )
+ aURL = pOption->GetString();
+ break;
+ case HTML_O_ALT:
+ aAlt = pOption->GetString();
+ break;
+ case HTML_O_TYPE:
+ if( !aType.Len() )
+ aType = pOption->GetString();
+ break;
+ case HTML_O_ALIGN:
+ if( eVertOri==VERT_NONE && eHoriOri==HORI_NONE )
+ {
+ eVertOri = (SwVertOrient)pOption->GetEnum( aHTMLImgVAlignTable, eVertOri );
+ eHoriOri = (SwHoriOrient)pOption->GetEnum( aHTMLImgHAlignTable, eHoriOri );
+ }
+ break;
+ case HTML_O_WIDTH:
+ if( USHRT_MAX==aSize.Width() )
+ {
+ bPrcWidth = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ aSize.Width() = (long)pOption->GetNumber();
+ }
+ break;
+ case HTML_O_HEIGHT:
+ if( USHRT_MAX==aSize.Height() )
+ {
+ bPrcHeight = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ aSize.Height() = (long)pOption->GetNumber();
+ }
+ break;
+ case HTML_O_HSPACE:
+ if( USHRT_MAX==aSpace.Width() )
+ aSpace.Width() = (long)pOption->GetNumber();
+ break;
+ case HTML_O_VSPACE:
+ if( USHRT_MAX==aSpace.Height() )
+ aSpace.Height() = (long)pOption->GetNumber();
+ break;
+ case HTML_O_UNKNOWN:
+ if( pOption->GetTokenString().EqualsIgnoreCaseAscii( sHTML_O_hidden ) )
+ bHidden =
+ !pOption->GetString().EqualsIgnoreCaseAscii( sHTML_HIDDEN_false );
+ break;
+ }
+
+ // Es werden alle Parameter an das Plugin weitergereicht
+ aCmdLst.Append( pOption->GetTokenString(), pOption->GetString() );
+ }
+
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo );
+
+ // Die Default-Werte umsetzen (ausser Hoehe/Breite, das macht schon
+ // SetFrmSize() fuer uns)
+ if( eVertOri==VERT_NONE && eHoriOri==HORI_NONE )
+ eVertOri = VERT_TOP;
+ if( USHRT_MAX==aSpace.Width() )
+ aSpace.Width() = 0;
+ if( USHRT_MAX==aSpace.Height() )
+ aSpace.Height() = 0;
+ if( bHidden )
+ {
+ // Size (0,0) wird in SetFrmSize auf (MINFLY, MINFLY) umgebogen
+ aSize.Width() = 0; aSize.Height() = 0;
+ aSpace.Width() = 0; aSpace.Height() = 0;
+ bPrcWidth = bPrcHeight = FALSE;
+ }
+
+ // die URL aufbereiten
+ INetURLObject aURLObj;
+ if( aURL.Len() && !aURLObj.SetURL( INetURLObject::RelToAbs(aURL) ) )
+ return;
+
+ // das Plugin anlegen
+ SvStorageRef pStor = new SvStorage( aEmptyStr, STREAM_STD_READWRITE);
+ SvFactory *pPlugInFactory = SvFactory::GetDefaultPlugInFactory();
+ SvPlugInObjectRef pPlugin =
+ &pPlugInFactory->CreateAndInit( *pPlugInFactory, pStor );
+
+ pPlugin->EnableSetModified( FALSE );
+ pPlugin->SetPlugInMode( (USHORT)PLUGIN_EMBEDED );
+ pPlugin->SetURL( aURLObj );
+ pPlugin->SetMimeType( aType );
+ pPlugin->SetCommandList( aCmdLst );
+ pPlugin->EnableSetModified( TRUE );
+
+ SfxItemSet aFrmSet( pDoc->GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ if( !IsNewDoc() )
+ Reader::ResetFrmFmtAttrs( aFrmSet );
+
+ // den Anker setzen
+ if( !bHidden )
+ {
+ SetAnchorAndAdjustment( eVertOri, eHoriOri, aItemSet, aPropInfo, aFrmSet );
+ }
+ else
+ {
+ SwFmtAnchor aAnchor( FLY_AT_CNTNT );
+ aAnchor.SetAnchor( pPam->GetPoint() );
+ aFrmSet.Put( aAnchor );
+ aFrmSet.Put( SwFmtHoriOrient( 0, HORI_LEFT, FRAME) );
+ aFrmSet.Put( SwFmtSurround( SURROUND_THROUGHT ) );
+ aFrmSet.Put( SwFmtVertOrient( 0, VERT_TOP, PRTAREA ) );
+ }
+
+ // und noch die Groesse des Rahmens
+ Size aDfltSz( HTML_DFLT_EMBED_WIDTH, HTML_DFLT_EMBED_HEIGHT );
+ SetFixSize( aSize, aDfltSz, bPrcWidth, bPrcHeight, aItemSet, aPropInfo,
+ aFrmSet );
+ SetSpace( aSpace, aItemSet, aPropInfo, aFrmSet );
+
+ // und in das Dok einfuegen
+ SwFrmFmt* pFlyFmt = pDoc->Insert( *pPam, pPlugin, &aFrmSet );
+
+ // Namen am FrmFmt setzen
+ if( aName.Len() )
+ pFlyFmt->SetName( aName );
+
+ // den alternativen Text setzen
+ SwNoTxtNode *pNoTxtNd =
+ pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
+ ->GetIndex()+1 ]->GetNoTxtNode();
+ pNoTxtNd->SetAlternateText( aAlt );
+
+ // Ggf Frames anlegen und auto-geb. Rahmen registrieren
+ if( !bHidden )
+ {
+ // HIDDEN-Plugins sollen absatzgebunden bleiben. Da RegisterFlyFrm
+ // absatzgebundene Rahmen mit DUrchlauf in am Zeichen gebundene
+ // Rahmen umwandelt, muessen die Frames hier von Hand angelegt werden.
+ RegisterFlyFrm( pFlyFmt );
+ }
+}
+
+/* */
+
+#ifdef SOLAR_JAVA
+class SwHTMLApplet_Impl
+{
+ SvAppletObjectRef xApplet; // das aktuelle Applet
+ SvCommandList aCommandList; // und die szugehorige Command-List
+ SfxItemSet aItemSet;
+ String sAlt;
+
+public:
+
+ SwHTMLApplet_Impl( SfxItemPool& rPool, USHORT nWhich1, USHORT nWhich2 ) :
+ aItemSet( rPool, nWhich1, nWhich2 )
+ {
+ }
+
+ ~SwHTMLApplet_Impl()
+ {
+ xApplet.Clear();
+ }
+
+#ifndef DEBUG
+inline
+#endif
+ void CreateApplet( const String& rCode, const String& rName,
+ BOOL bMayScript, const String& rCodeBase,
+ const String& rAlt );
+
+ void FinishApplet()
+ {
+ xApplet->SetCommandList( aCommandList );
+ xApplet->EnableSetModified( TRUE );
+ }
+
+
+ void AppendParam( const String& rName, const String& rValue )
+ {
+ aCommandList.Append( rName, rValue );
+ }
+
+
+ SvAppletObject* GetApplet() { return &xApplet; }
+ SfxItemSet& GetItemSet() { return aItemSet; }
+ const String& GetAltText() { return sAlt; }
+};
+
+#ifndef DEBUG
+inline
+#endif
+void SwHTMLApplet_Impl::CreateApplet( const String& rCode, const String& rName,
+ BOOL bMayScript, const String& rCodeBase,
+ const String& rAlt )
+{
+ SvStorageRef pStor = new SvStorage( aEmptyStr, STREAM_STD_READWRITE );
+ xApplet = new SvAppletObject();
+ xApplet->DoInitNew( pStor );
+
+ xApplet->EnableSetModified( FALSE );
+ xApplet->SetClass( rCode );
+ xApplet->SetName( rName );
+ xApplet->SetMayScript( bMayScript );
+ xApplet->SetDocBase( INetURLObject::GetBaseURL() );
+
+ String sCodeBase;
+ if( rCodeBase.Len() )
+ {
+ INetURLObject aTmpURL;
+
+ INetProtocol eProt = aTmpURL.CompareProtocolScheme( rCodeBase );
+ if( eProt==INET_PROT_NOT_VALID &&
+ rCodeBase.Search( ':' ) != STRING_NOTFOUND )
+ {
+ // The codebase contains an unknown protocol rather than
+ // a relative URL.
+ sCodeBase = rCodeBase;
+ }
+ else
+ {
+ sCodeBase = INetURLObject::RelToAbs( rCodeBase );
+ }
+ }
+ else
+ {
+ INetURLObject aTmpURL( INetURLObject::GetBaseURL() );
+ sCodeBase = aTmpURL.GetPartBeforeLastName();
+ }
+
+ xApplet->SetCodeBase( sCodeBase );
+
+ sAlt = rAlt;
+}
+
+#endif
+
+void SwHTMLParser::InsertApplet()
+{
+#ifdef SOLAR_JAVA
+ String aCodeBase, aCode, aName, aAlt, aId, aStyle, aClass;
+ Size aSize( USHRT_MAX, USHRT_MAX );
+ Size aSpace( 0, 0 );
+ BOOL bPrcWidth = FALSE, bPrcHeight = FALSE, bMayScript = FALSE;
+ SwVertOrient eVertOri = VERT_TOP;
+ SwHoriOrient eHoriOri = HORI_NONE;
+
+ // Eine neue Command-List anlegen
+ if( pAppletImpl )
+ delete pAppletImpl;
+ pAppletImpl = new SwHTMLApplet_Impl( pDoc->GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ case HTML_O_CODEBASE:
+ aCodeBase = pOption->GetString();
+ break;
+ case HTML_O_CODE:
+ aCode = pOption->GetString();
+ break;
+ case HTML_O_NAME:
+ aName = pOption->GetString();
+ break;
+ case HTML_O_ALT:
+ aAlt = pOption->GetString();
+ break;
+ case HTML_O_ALIGN:
+ eVertOri = (SwVertOrient)pOption->GetEnum( aHTMLImgVAlignTable, eVertOri );
+ eHoriOri = (SwHoriOrient)pOption->GetEnum( aHTMLImgHAlignTable, eHoriOri );
+ break;
+ case HTML_O_WIDTH:
+ bPrcWidth = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ aSize.Width() = (long)pOption->GetNumber();
+ break;
+ case HTML_O_HEIGHT:
+ bPrcHeight = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ aSize.Height() = (long)pOption->GetNumber();
+ break;
+ case HTML_O_HSPACE:
+ aSpace.Width() = (long)pOption->GetNumber();
+ break;
+ case HTML_O_VSPACE:
+ aSpace.Height() = (long)pOption->GetNumber();
+ break;
+ case HTML_O_MAYSCRIPT:
+ bMayScript = TRUE;
+ break;
+ }
+
+ // Es werden alle Parameter auch an das Applet weitergereicht
+ pAppletImpl->AppendParam( pOption->GetTokenString(),
+ pOption->GetString() );
+ }
+
+ if( !aCode.Len() )
+ {
+ delete pAppletImpl;
+ pAppletImpl = 0;
+ return;
+ }
+
+ pAppletImpl->CreateApplet( aCode, aName, bMayScript, aCodeBase, aAlt );
+
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo );
+
+ SfxItemSet& rFrmSet = pAppletImpl->GetItemSet();
+ if( !IsNewDoc() )
+ Reader::ResetFrmFmtAttrs( rFrmSet );
+
+ // den Anker und die Ausrichtung setzen
+ SetAnchorAndAdjustment( eVertOri, eHoriOri, aItemSet, aPropInfo, rFrmSet );
+
+ // und noch die Groesse des Rahmens
+ Size aDfltSz( HTML_DFLT_APPLET_WIDTH, HTML_DFLT_APPLET_HEIGHT );
+ SetFixSize( aSize, aDfltSz, bPrcWidth, bPrcHeight, aItemSet, aPropInfo,
+ rFrmSet );
+ SetSpace( aSpace, aItemSet, aPropInfo, rFrmSet );
+#endif
+}
+
+void SwHTMLParser::EndApplet()
+{
+#ifdef SOLAR_JAVA
+ if( !pAppletImpl )
+ return;
+
+ pAppletImpl->FinishApplet();
+
+ // und in das Dok einfuegen
+ SwFrmFmt* pFlyFmt = pDoc->Insert( *pPam, pAppletImpl->GetApplet(),
+ &pAppletImpl->GetItemSet() );
+
+ // den alternativen Namen setzen
+ SwNoTxtNode *pNoTxtNd =
+ pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
+ ->GetIndex()+1 ]->GetNoTxtNode();
+ pNoTxtNd->SetAlternateText( pAppletImpl->GetAltText() );
+
+ // Ggf Frames anlegen und auto-geb. Rahmen registrieren
+ RegisterFlyFrm( pFlyFmt );
+
+ delete pAppletImpl;
+ pAppletImpl = 0;
+#endif
+}
+
+void SwHTMLParser::InsertParam()
+{
+#ifdef SOLAR_JAVA
+ if( !pAppletImpl )
+ return;
+
+ String aName, aValue;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_NAME:
+ aName = pOption->GetString();
+ break;
+ case HTML_O_VALUE:
+ aValue = pOption->GetString();
+ break;
+ }
+ }
+
+ if( !aName.Len() )
+ return;
+
+ pAppletImpl->AppendParam( aName, aValue );
+#endif
+}
+
+
+/* */
+
+void SwHTMLParser::InsertFloatingFrame()
+{
+ String aAlt, aId, aStyle, aClass;
+ Size aSize( USHRT_MAX, USHRT_MAX );
+ Size aSpace( 0, 0 );
+ BOOL bPrcWidth = FALSE, bPrcHeight = FALSE;
+ SwVertOrient eVertOri = VERT_TOP;
+ SwHoriOrient eHoriOri = HORI_NONE;
+
+ const HTMLOptions *pOptions = GetOptions();
+
+ // Erstmal die Optionen fr das Writer-Frame-Format holen
+ USHORT nArrLen = pOptions->Count();
+ for ( USHORT i=0; i<nArrLen; i++ )
+ {
+ const HTMLOption *pOption = (*pOptions)[i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ case HTML_O_ALT:
+ aAlt = pOption->GetString();
+ break;
+ case HTML_O_ALIGN:
+ eVertOri = (SwVertOrient)pOption->GetEnum( aHTMLImgVAlignTable, eVertOri );
+ eHoriOri = (SwHoriOrient)pOption->GetEnum( aHTMLImgHAlignTable, eHoriOri );
+ break;
+ case HTML_O_WIDTH:
+ bPrcWidth = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ aSize.Width() = (long)pOption->GetNumber();
+ break;
+ case HTML_O_HEIGHT:
+ bPrcHeight = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ aSize.Height() = (long)pOption->GetNumber();
+ break;
+ case HTML_O_HSPACE:
+ aSpace.Width() = (long)pOption->GetNumber();
+ break;
+ case HTML_O_VSPACE:
+ aSpace.Height() = (long)pOption->GetNumber();
+ break;
+ }
+ }
+
+ // und jetzt die fuer den SfxFrame
+ SfxFrameDescriptor *pFrameDesc = new SfxFrameDescriptor( 0 );
+
+ SfxFrameHTMLParser::ParseFrameOptions( pFrameDesc, pOptions );
+
+ // den Floating-Frame anlegen
+ SvStorageRef pStor = new SvStorage( aEmptyStr, STREAM_STD_READWRITE );
+ SfxFrameObjectRef pFrame = new SfxFrameObject();
+ pFrame->DoInitNew( pStor );
+
+ pFrame->EnableSetModified( FALSE );
+ pFrame->SetFrameDescriptor( pFrameDesc );
+ pFrame->EnableSetModified( TRUE );
+
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo );
+
+ // den Itemset holen
+ SfxItemSet aFrmSet( pDoc->GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ if( !IsNewDoc() )
+ Reader::ResetFrmFmtAttrs( aFrmSet );
+
+ // den Anker und die Ausrichtung setzen
+ SetAnchorAndAdjustment( eVertOri, eHoriOri, aItemSet, aPropInfo, aFrmSet );
+
+ // und noch die Groesse des Rahmens
+ Size aDfltSz( HTML_DFLT_APPLET_WIDTH, HTML_DFLT_APPLET_HEIGHT );
+ SetFixSize( aSize, aDfltSz, bPrcWidth, bPrcHeight, aItemSet, aPropInfo,
+ aFrmSet );
+ SetSpace( aSpace, aItemSet, aPropInfo, aFrmSet );
+
+ // und in das Dok einfuegen
+ SwFrmFmt* pFlyFmt = pDoc->Insert( *pPam, pFrame, &aFrmSet );
+
+ // den alternativen Namen setzen
+ SwNoTxtNode *pNoTxtNd =
+ pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
+ ->GetIndex()+1 ]->GetNoTxtNode();
+ pNoTxtNd->SetAlternateText( aAlt );
+
+ // Ggf Frames anlegen und auto-geb. Rahmen registrieren
+ RegisterFlyFrm( pFlyFmt );
+
+ bInFloatingFrame = TRUE;
+}
+
+/* */
+
+#define HTML_OPTTYPE_IGNORE 0
+#define HTML_OPTTYPE_TAG 1
+#define HTML_OPTTYPE_PARAM 2
+
+static USHORT GetOptionType( const String& rName, BOOL bApplet )
+{
+ USHORT nType = bApplet ? HTML_OPTTYPE_PARAM : HTML_OPTTYPE_TAG;
+
+ switch( rName.GetChar(0) )
+ {
+ case 'A':
+ case 'a':
+ if( rName.EqualsIgnoreCaseAscii( sHTML_O_align ) ||
+ rName.EqualsIgnoreCaseAscii( sHTML_O_alt ) )
+ nType = HTML_OPTTYPE_IGNORE;
+ else if( bApplet &&
+ (rName.EqualsIgnoreCaseAscii( sHTML_O_archive ) ||
+ rName.EqualsIgnoreCaseAscii( sHTML_O_archives )) )
+ nType = HTML_OPTTYPE_TAG;
+ break;
+ case 'C':
+ case 'c':
+ if( rName.EqualsIgnoreCaseAscii( sHTML_O_class ) ||
+ (bApplet && (rName.EqualsIgnoreCaseAscii( sHTML_O_code ) ||
+ rName.EqualsIgnoreCaseAscii( sHTML_O_codebase ))) )
+ nType = HTML_OPTTYPE_IGNORE;
+ break;
+ case 'H':
+ case 'h':
+ if( rName.EqualsIgnoreCaseAscii( sHTML_O_height ) ||
+ rName.EqualsIgnoreCaseAscii( sHTML_O_hspace ) ||
+ (!bApplet && rName.EqualsIgnoreCaseAscii( sHTML_O_hidden )) )
+ nType = HTML_OPTTYPE_IGNORE;
+ break;
+ case 'I':
+ case 'i':
+ if( rName.EqualsIgnoreCaseAscii( sHTML_O_id ) )
+ nType = HTML_OPTTYPE_IGNORE;
+ break;
+ case 'M':
+ case 'm':
+ if( bApplet && rName.EqualsIgnoreCaseAscii( sHTML_O_mayscript ) )
+ nType = HTML_OPTTYPE_IGNORE;
+ break;
+ case 'N':
+ case 'n':
+ if( rName.EqualsIgnoreCaseAscii( sHTML_O_name ) )
+ nType = HTML_OPTTYPE_IGNORE;
+ break;
+ case 'O':
+ case 'o':
+ if( bApplet && rName.EqualsIgnoreCaseAscii( sHTML_O_object ) )
+ nType = HTML_OPTTYPE_TAG;
+ break;
+ case 'S':
+ case 's':
+ if( rName.EqualsIgnoreCaseAscii( sHTML_O_style ) ||
+ (!bApplet && rName.EqualsIgnoreCaseAscii( sHTML_O_src )) )
+ nType = HTML_OPTTYPE_IGNORE;
+ break;
+ case 'T':
+ case 't':
+ if( !bApplet && rName.EqualsIgnoreCaseAscii( sHTML_O_type ) )
+ nType = HTML_OPTTYPE_IGNORE;
+ break;
+ case 'V':
+ case 'v':
+ if( rName.EqualsIgnoreCaseAscii( sHTML_O_vspace ) )
+ nType = HTML_OPTTYPE_IGNORE;
+ break;
+ case 'W':
+ case 'w':
+ if( rName.EqualsIgnoreCaseAscii( sHTML_O_width ) )
+ nType = HTML_OPTTYPE_IGNORE;
+ break;
+ }
+
+ return nType;
+}
+
+USHORT SwHTMLWriter::GuessOLENodeFrmType( const SwNode& rNode )
+{
+ SwOLEObj& rObj = ((SwOLENode*)rNode.GetOLENode())->GetOLEObj();
+
+ SwHTMLFrmType eType = HTML_FRMTYPE_OLE;
+
+ SvPlugInObjectRef pPlugin( rObj.GetOleRef() );
+ if( pPlugin.Is() )
+ {
+ eType = HTML_FRMTYPE_PLUGIN;
+ }
+ else
+ {
+ SfxFrameObjectRef pFrame( rObj.GetOleRef() );
+ if( pFrame.Is() )
+ {
+ eType = HTML_FRMTYPE_IFRAME;
+ }
+#ifdef SOLAR_JAVA
+ else
+ {
+ SvAppletObjectRef pApplet( rObj.GetOleRef() );
+ if( pApplet.Is() )
+ eType = HTML_FRMTYPE_APPLET;
+ }
+#endif
+ }
+
+ return eType;
+}
+
+Writer& OutHTML_FrmFmtOLENode( Writer& rWrt, const SwFrmFmt& rFrmFmt,
+ BOOL bInCntnr )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const SwFmtCntnt& rFlyCntnt = rFrmFmt.GetCntnt();
+ ULONG nStt = rFlyCntnt.GetCntntIdx()->GetIndex()+1;
+ SwOLENode *pOLENd = rHTMLWrt.pDoc->GetNodes()[ nStt ]->GetOLENode();
+
+ ASSERT( pOLENd, "OLE-Node erwartet" );
+ if( !pOLENd )
+ return rWrt;
+
+ SwOLEObj &rObj = pOLENd->GetOLEObj();
+ SvPlugInObjectRef pPlugin( rObj.GetOleRef() );
+#ifdef SOLAR_JAVA
+ SvAppletObjectRef pApplet( rObj.GetOleRef() );
+#endif
+ SfxFrameObjectRef pFrame( rObj.GetOleRef() );
+ BOOL bHiddenEmbed = FALSE;
+
+ ASSERT( !pFrame.Is() || rHTMLWrt.IsHTMLMode(HTMLMODE_FLOAT_FRAME),
+ "Floating-Frame wird exportiert, aber Modus ist nicht aktiviert" );
+
+ if( !pPlugin.Is() &&
+#ifdef SOLAR_JAVA
+ !pApplet.Is() &&
+#endif
+ !pFrame.Is() )
+ {
+ ASSERT( pPlugin.Is(), "unbekanntes Inplace-Object" );
+ return rWrt;
+ }
+
+ ByteString aEndTags;
+ ULONG nFrmOpts;
+
+ // wenn meoglich vor dem "Objekt" einen Zeilen-Umbruch ausgeben
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine( TRUE );
+
+ if( rFrmFmt.GetName().Len() )
+ rHTMLWrt.OutImplicitMark( rFrmFmt.GetName(),
+ pMarkToOLE );
+
+ ByteString sOut('<');
+ if( pPlugin.Is() )
+ {
+ // erstmal das Plug-spezifische
+ sOut += sHTML_embed;
+
+ String aURL(
+ INetURLObject::AbsToRel(pPlugin->GetURL()->GetMainURL(),
+ INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET) );
+
+ if( aURL.Len() )
+ {
+ ((sOut += ' ') += sHTML_O_src) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aURL, rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+
+ const String& aType = pPlugin->GetMimeType();
+ if( aType.Len() )
+ {
+ ((sOut += ' ') += sHTML_O_type) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aType, rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+
+ if( FLY_AT_CNTNT == rFrmFmt.GetAnchor().GetAnchorId() &&
+ SURROUND_THROUGHT == rFrmFmt.GetSurround().GetSurround() )
+ {
+ // Das Plugin ist HIDDEN
+ (sOut += ' ') += sHTML_O_hidden;
+ nFrmOpts = HTML_FRMOPTS_HIDDEN_EMBED;
+ bHiddenEmbed = TRUE;
+ }
+ else
+ {
+ nFrmOpts = bInCntnr ? HTML_FRMOPTS_EMBED_CNTNR
+ : HTML_FRMOPTS_EMBED;
+ }
+ }
+#ifdef SOLAR_JAVA
+ else if( pApplet.Is() )
+ {
+ // oder das Applet-Spezifische
+
+ sOut += sHTML_applet;
+
+ // CODEBASE
+ const XubString& rURL = pApplet->GetCodeBase();
+ if( rURL.Len() )
+ {
+#ifdef DEBUG
+ String sTmp( INetURLObject::GetBaseURL() );
+#endif
+ String sCodeBase( INetURLObject::AbsToRel(rURL,
+ INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET) );
+ if( sCodeBase.Len() )
+ {
+ ((sOut += ' ') += sHTML_O_codebase) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), sCodeBase, rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+ }
+
+ // CODE
+ ((sOut += ' ') += sHTML_O_code) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), pApplet->GetClass(), rHTMLWrt.eDestEnc );
+ sOut = '\"';
+
+ // NAME
+ const String &rName = pApplet->GetName();
+ if( rName.Len() )
+ {
+ ((sOut += ' ') += sHTML_O_name) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), rName, rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+
+ if( pApplet->IsMayScript() )
+ (sOut += ' ') += sHTML_O_mayscript;
+
+ nFrmOpts = bInCntnr ? HTML_FRMOPTS_APPLET_CNTNR
+ : HTML_FRMOPTS_APPLET;
+ }
+#endif
+ else
+ {
+ // oder das Flating-Frame spezifische
+
+ sOut += sHTML_iframe;
+ rWrt.Strm() << sOut.GetBuffer();
+
+ SfxFrameHTMLWriter::Out_FrameDescriptor( rWrt.Strm(),
+ pFrame->GetFrameDescriptor(),
+ FALSE, 0, rHTMLWrt.eDestEnc );
+ sOut.Erase();
+
+ nFrmOpts = bInCntnr ? HTML_FRMOPTS_IFRAME_CNTNR
+ : HTML_FRMOPTS_IFRAME;
+ }
+
+ rWrt.Strm() << sOut.GetBuffer();
+
+ // ALT, WIDTH, HEIGHT, HSPACE, VSPACE, ALIGN
+ if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_FLY ) && !bHiddenEmbed )
+ nFrmOpts |= HTML_FRMOPTS_OLE_CSS1;
+ rHTMLWrt.OutFrmFmtOptions( rFrmFmt, pOLENd->GetAlternateText(),
+ aEndTags, nFrmOpts );
+ if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_FLY ) && !bHiddenEmbed )
+ rHTMLWrt.OutCSS1_FrmFmtOptions( rFrmFmt, nFrmOpts );
+
+#ifdef SOLAR_JAVA
+ if( pApplet.Is() )
+ {
+ // fuer Applets die Parameter als eigene Tags ausgeben
+ // und ein </APPLET> schreiben
+
+ const SvCommandList& rCommands = pApplet->GetCommandList();
+ SvULongs aParams;
+ ULONG i = rCommands.Count();
+ while( i > 0 )
+ {
+ const SvCommand& rCommand = rCommands[ --i ];
+ const String& rName = rCommand.GetCommand();
+ USHORT nType = GetOptionType( rName, TRUE );
+ if( HTML_OPTTYPE_TAG == nType )
+ {
+ const String& rValue = rCommand.GetArgument();
+ rWrt.Strm() << ' ';
+ HTMLOutFuncs::Out_String( rWrt.Strm(), rName, rHTMLWrt.eDestEnc );
+ rWrt.Strm() << "=\"";
+ HTMLOutFuncs::Out_String( rWrt.Strm(), rValue, rHTMLWrt.eDestEnc ) << '\"';
+ }
+ else if( HTML_OPTTYPE_PARAM == nType )
+ {
+ aParams.Insert( i, aParams.Count() );
+ }
+ }
+
+ rHTMLWrt.Strm() << '>';
+
+ rHTMLWrt.IncIndentLevel(); // Inhalt von Applet einruecken
+
+ USHORT ii = aParams.Count();
+ while( ii > 0 )
+ {
+ const SvCommand& rCommand = rCommands[ aParams[--ii] ];
+ const String& rName = rCommand.GetCommand();
+ const String& rValue = rCommand.GetArgument();
+ rHTMLWrt.OutNewLine();
+ ((((sOut = '<') += sHTML_param) += ' ') += sHTML_O_name)
+ += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), rName, rHTMLWrt.eDestEnc );
+ ((sOut = "\" ") += sHTML_O_value) += "=\"";
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rWrt.Strm(), rValue, rHTMLWrt.eDestEnc ) << "\">";
+ }
+
+ rHTMLWrt.DecIndentLevel(); // Inhalt von Applet einruecken
+ if( rCommands.Count() )
+ rHTMLWrt.OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_applet, FALSE );
+ }
+ else
+#endif
+ if( pPlugin.Is() )
+ {
+ // fuer Plugins die Paramater als Optionen schreiben
+
+ const SvCommandList& rCommands = pPlugin->GetCommandList();
+ for( ULONG i=0; i<rCommands.Count(); i++ )
+ {
+ const SvCommand& rCommand = rCommands[ i ];
+ const String& rName = rCommand.GetCommand();
+
+ if( GetOptionType( rName, FALSE ) == HTML_OPTTYPE_TAG )
+ {
+ const String& rValue = rCommand.GetArgument();
+ rWrt.Strm() << ' ';
+ HTMLOutFuncs::Out_String( rWrt.Strm(), rName, rHTMLWrt.eDestEnc );
+ rWrt.Strm() << "=\"";
+ HTMLOutFuncs::Out_String( rWrt.Strm(), rValue, rHTMLWrt.eDestEnc ) << '\"';
+ }
+ }
+ rHTMLWrt.Strm() << '>';
+ }
+ else
+ {
+ // und fuer Floating-Frames einfach noch ein </IFRAME>
+ // ausgeben
+
+ rHTMLWrt.Strm() << '>';
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_iframe, FALSE );
+ }
+
+ if( aEndTags.Len() )
+ rWrt.Strm() << aEndTags.GetBuffer();
+
+ return rWrt;
+}
+
+Writer& OutHTML_FrmFmtOLENodeGrf( Writer& rWrt, const SwFrmFmt& rFrmFmt,
+ BOOL bInCntnr )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ const SwFmtCntnt& rFlyCntnt = rFrmFmt.GetCntnt();
+ ULONG nStt = rFlyCntnt.GetCntntIdx()->GetIndex()+1;
+ SwOLENode *pOLENd = rHTMLWrt.pDoc->GetNodes()[ nStt ]->GetOLENode();
+
+ ASSERT( pOLENd, "OLE-Node erwartet" );
+ if( !pOLENd )
+ return rWrt;
+
+ // Inhalt des Nodes als Grafik speichern
+ SvInPlaceObjectRef xRef = pOLENd->GetOLEObj().GetOleRef();;
+ GDIMetaFile* pPic = NULL;
+ SvData aData( FORMAT_GDIMETAFILE );
+ if( xRef->GetData( &aData ) )
+ aData.GetData( &pPic, TRANSFER_REFERENCE );
+ if( pPic )
+ {
+ Graphic aGrf( *pPic );
+ String aGrfNm;
+ const String* pTempFileName = rHTMLWrt.GetOrigFileName();
+ if(pTempFileName)
+ aGrfNm = *pTempFileName;
+
+ USHORT nErr = XOutBitmap::WriteGraphic( aGrf, aGrfNm,
+ String::CreateFromAscii("JPG"),
+ XOUTBMP_USE_GIF_IF_POSSIBLE );
+ if( nErr ) // fehlerhaft, da ist nichts auszugeben
+ {
+ rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
+ return rWrt;
+ }
+ aGrfNm = URIHelper::SmartRelToAbs( aGrfNm );
+ if( rHTMLWrt.HasCId() )
+ rHTMLWrt.MakeCIdURL( aGrfNm );
+ ULONG nFlags = bInCntnr ? HTML_FRMOPTS_GENIMG_CNTNR
+ : HTML_FRMOPTS_GENIMG;
+ OutHTML_Image( rWrt, rFrmFmt, aGrfNm,
+ pOLENd->GetAlternateText(), pOLENd->GetTwipSize(),
+ nFlags, pMarkToOLE );
+ }
+
+ return rWrt;
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmlplug.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.95 2000/09/18 16:04:45 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.94 2000/08/18 13:03:22 jp
+ don't export escaped URLs
+
+ Revision 1.93 2000/06/26 12:55:06 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.92 2000/06/26 09:52:22 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.91 2000/05/15 10:06:56 os
+ Chg: GetOrigFileName()
+
+ Revision 1.90 2000/04/28 14:29:11 mib
+ unicode
+
+ Revision 1.89 2000/04/10 12:20:56 mib
+ unicode
+
+ Revision 1.88 2000/02/11 14:37:20 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.87 1999/09/21 09:49:53 mib
+ multiple text encodings
+
+ Revision 1.86 1999/09/17 12:14:02 mib
+ support of multiple and non system text encodings
+
+ Revision 1.85 1999/07/12 07:01:58 MIB
+ #34644#: Applet\'s codebase is set to document base if not specified
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmlsect.cxx b/sw/source/filter/html/htmlsect.cxx
new file mode 100644
index 000000000000..d390a2675c3b
--- /dev/null
+++ b/sw/source/filter/html/htmlsect.cxx
@@ -0,0 +1,1063 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlsect.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _HTMLKYWD_H
+#include <svtools/htmlkywd.hxx>
+#endif
+
+
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTFLCNT_HXX //autogen
+#include <fmtflcnt.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include "frmatr.hxx"
+#endif
+#include "doc.hxx"
+#include "pam.hxx"
+#include "ndtxt.hxx"
+#include "shellio.hxx"
+#include "section.hxx"
+#include "poolfmt.hxx"
+#include "pagedesc.hxx"
+#include "swtable.hxx"
+#include "viewsh.hxx"
+#include "swcss1.hxx"
+#include "swhtml.hxx"
+
+#define CONTEXT_FLAGS_MULTICOL (HTML_CNTXT_STRIP_PARA | \
+ HTML_CNTXT_KEEP_NUMRULE | \
+ HTML_CNTXT_KEEP_ATTRS)
+//#define CONTEXT_FLAGS_HDRFTR (HTML_CNTXT_STRIP_PARA|HTML_CNTXT_PROTECT_STACK)
+#define CONTEXT_FLAGS_HDRFTR (CONTEXT_FLAGS_MULTICOL)
+#define CONTEXT_FLAGS_FTN (CONTEXT_FLAGS_MULTICOL)
+
+/* */
+
+void SwHTMLParser::NewDivision( int nToken )
+{
+ String aId, aHRef, aStyle, aClass;
+ SvxAdjust eAdjust = HTML_CENTER_ON==nToken ? SVX_ADJUST_CENTER
+ : SVX_ADJUST_END;
+
+ sal_Bool bHeader=sal_False, bFooter=sal_False;
+ const HTMLOptions *pOptions = GetOptions();
+ for( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_ALIGN:
+ if( HTML_DIVISION_ON==nToken )
+ eAdjust = (SvxAdjust)pOption->GetEnum( aHTMLPAlignTable,
+ eAdjust );
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ case HTML_O_HREF:
+ aHRef = INetURLObject::RelToAbs( pOption->GetString() );
+ break;
+ case HTML_O_TYPE:
+ {
+ const String& rType = pOption->GetString();
+ if( rType.EqualsIgnoreCaseAscii( "HEADER" ) )
+ bHeader = sal_True;
+ else if( rType.EqualsIgnoreCaseAscii( "FOOTER" ) )
+ bFooter = sal_True;
+ }
+ }
+ }
+
+ sal_Bool bAppended = sal_False;
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ {
+ AppendTxtNode( bHeader||bFooter||aId.Len()||aHRef.Len() ? AM_NORMAL
+ : AM_NOSPACE );
+ bAppended = sal_True;
+ }
+
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( nToken );
+
+ sal_Bool bStyleParsed = sal_False, bPositioned = sal_False;
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ bStyleParsed = ParseStyleOptions( aStyle, aId, aClass,
+ aItemSet, aPropInfo );
+ if( bStyleParsed )
+ {
+ bPositioned = HTML_DIVISION_ON == nToken && aClass.Len() &&
+ CreateContainer( aClass, aItemSet, aPropInfo,
+ pCntxt );
+ if( !bPositioned )
+ bPositioned = DoPositioning( aItemSet, aPropInfo, pCntxt );
+ }
+ }
+
+ if( !bPositioned && (bHeader || bFooter) && IsNewDoc() )
+ {
+ SwPageDesc *pPageDesc = pCSS1Parser->GetMasterPageDesc();
+ SwFrmFmt& rPageFmt = pPageDesc->GetMaster();
+
+ SwFrmFmt *pHdFtFmt;
+ sal_Bool bNew = sal_False;
+ sal_uInt16 nFlags = CONTEXT_FLAGS_HDRFTR;
+ if( bHeader )
+ {
+ pHdFtFmt = (SwFrmFmt*)rPageFmt.GetHeader().GetHeaderFmt();
+ if( !pHdFtFmt )
+ {
+ // noch keine Header, dann erzeuge einen.
+ rPageFmt.SetAttr( SwFmtHeader( sal_True ));
+ pHdFtFmt = (SwFrmFmt*)rPageFmt.GetHeader().GetHeaderFmt();
+ bNew = sal_True;
+ }
+ nFlags |= HTML_CNTXT_HEADER_DIST;
+ }
+ else
+ {
+ pHdFtFmt = (SwFrmFmt*)rPageFmt.GetFooter().GetFooterFmt();
+ if( !pHdFtFmt )
+ {
+ // noch keine Footer, dann erzeuge einen.
+ rPageFmt.SetAttr( SwFmtFooter( sal_True ));
+ pHdFtFmt = (SwFrmFmt*)rPageFmt.GetFooter().GetFooterFmt();
+ bNew = sal_True;
+ }
+ nFlags |= HTML_CNTXT_FOOTER_DIST;
+ }
+
+ const SwFmtCntnt& rFlyCntnt = pHdFtFmt->GetCntnt();
+ const SwNodeIndex& rCntntStIdx = *rFlyCntnt.GetCntntIdx();
+ SwCntntNode *pCNd;
+
+ if( bNew )
+ {
+ pCNd = pDoc->GetNodes()[rCntntStIdx.GetIndex()+1]
+ ->GetCntntNode();
+ }
+ else
+ {
+ // Einen neuen Node zu Beginn der Section anlegen
+ SwNodeIndex aSttIdx( rCntntStIdx, 1 );
+ pCNd = pDoc->GetNodes().MakeTxtNode( aSttIdx,
+ pCSS1Parser->GetTxtCollFromPool(RES_POOLCOLL_TEXT));
+
+ // Den bisherigen Inhalt der Section loeschen
+ SwPaM aDelPam( aSttIdx );
+ aDelPam.SetMark();
+
+ const SwStartNode *pStNd =
+ (const SwStartNode *)pDoc->GetNodes()[rCntntStIdx];
+ aDelPam.GetPoint()->nNode = pStNd->EndOfSectionIndex() - 1;
+
+ pDoc->DelFullPara( aDelPam );
+
+ // Die Seitenvorlage aktualisieren
+ for( sal_uInt16 i=0; i < pDoc->GetPageDescCnt(); i++ )
+ {
+ if( RES_POOLPAGE_HTML==pDoc->GetPageDesc(i).GetPoolFmtId() )
+ {
+ pDoc->ChgPageDesc( i, *pPageDesc );
+ break;
+ }
+ }
+ }
+
+ // Kopf- bzw. Fusszeile im Browse-Mode aktivieren
+ ViewShell* pVSh = 0;
+ pDoc->GetEditShell( &pVSh );
+ if( pVSh )
+ {
+ if( bHeader )
+ pVSh->SetHeadInBrowse();
+ else
+ pVSh->SetFootInBrowse();
+ }
+ else
+ {
+ if( bHeader )
+ pDoc->SetHeadInBrowse();
+ else
+ pDoc->SetFootInBrowse();
+ }
+
+ SwPosition aNewPos( SwNodeIndex( rCntntStIdx, 1 ), SwIndex( pCNd, 0 ) );
+ SaveDocContext( pCntxt, nFlags, &aNewPos );
+ }
+ else if( !bPositioned && aId.Len() > 9 &&
+ ('s' == aId.GetChar(0) || 'S' == aId.GetChar(0) ) &&
+ ('d' == aId.GetChar(1) || 'D' == aId.GetChar(1) ) )
+ {
+ sal_Bool bEndNote = sal_False, bFootNote = sal_False;
+ if( aId.CompareIgnoreCaseToAscii( sHTML_sdendnote, 9 ) == COMPARE_EQUAL )
+ bEndNote = sal_True;
+ else if( aId.CompareIgnoreCaseToAscii( sHTML_sdfootnote, 10 ) == COMPARE_EQUAL )
+ bFootNote = sal_True;
+ if( bFootNote || bEndNote )
+ {
+ SwNodeIndex *pSttNdIdx = GetFootEndNoteSection( aId );
+ if( pSttNdIdx )
+ {
+ SwCntntNode *pCNd =
+ pDoc->GetNodes()[pSttNdIdx->GetIndex()+1]->GetCntntNode();
+ SwNodeIndex aTmpSwNodeIndex = SwNodeIndex(*pCNd);
+ SwPosition aNewPos( aTmpSwNodeIndex, SwIndex( pCNd, 0 ) );
+ SaveDocContext( pCntxt, CONTEXT_FLAGS_FTN, &aNewPos );
+ aId = aPropInfo.aId = aEmptyStr;
+ }
+ }
+ }
+
+ // Bereiche fuegen wir in Rahmen nur dann ein, wenn der Bereich gelinkt ist.
+ if( (aId.Len() && !bPositioned) || aHRef.Len() )
+ {
+ // Bereich einfuegen (muss vor dem Setzten von Attributen erfolgen,
+ // weil die Section vor der PaM-Position eingefuegt.
+
+ // wenn wir im ersten Node einer Section stehen, wir die neue
+ // Section nicht in der aktuellen, sondern vor der aktuellen
+ // Section eingefuegt. Deshalb muessen wir dann einen Node
+ // einfuegen. UND IN LOESCHEN!!!
+ if( !bAppended )
+ {
+ SwNodeIndex aPrvNdIdx( pPam->GetPoint()->nNode, -1 );
+ if( (pDoc->GetNodes()[aPrvNdIdx])->IsSectionNode() )
+ {
+ AppendTxtNode();
+ bAppended = sal_True;
+ }
+ }
+ _HTMLAttrs *pPostIts = bAppended ? 0 : new _HTMLAttrs;
+ SetAttr( sal_True, sal_True, pPostIts );
+
+ // Namen der Section eindeutig machen
+ String aName( pDoc->GetUniqueSectionName( aId.Len() ? &aId : 0 ) );
+
+ SwSection aSection( aHRef.Len() ? FILE_LINK_SECTION
+ : CONTENT_SECTION, aName );
+ if( aHRef.Len() )
+ {
+ aSection.SetLinkFileName( aHRef );
+ aSection.SetProtect();
+ }
+
+ SfxItemSet aFrmItemSet( pDoc->GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ if( !IsNewDoc() )
+ Reader::ResetFrmFmtAttrs(aFrmItemSet );
+
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == aItemSet.GetItemState( RES_BACKGROUND, sal_False,
+ &pItem ) )
+ {
+ aFrmItemSet.Put( *pItem );
+ aItemSet.ClearItem( RES_BACKGROUND );
+ }
+
+ pDoc->Insert( *pPam, aSection, &aFrmItemSet, sal_False );
+
+ // ggfs. einen Bereich anspringen
+ if( JUMPTO_REGION == eJumpTo && aName == sJmpMark )
+ {
+ bChkJumpMark = sal_True;
+ eJumpTo = JUMPTO_NONE;
+ }
+
+ SwTxtNode* pOldTxtNd =
+ bAppended ? 0 : pDoc->GetNodes()[pPam->GetPoint()->nNode]
+ ->GetTxtNode();
+
+ pPam->Move( fnMoveBackward );
+
+ // PageDesc- und SwFmtBreak Attribute vom aktuellen Node in den
+ // (ersten) Node des Bereich verschieben.
+ if( pOldTxtNd )
+ MovePageDescAttrs( pOldTxtNd, pPam->GetPoint()->nNode.GetIndex(),
+ sal_True );
+
+ if( pPostIts )
+ {
+ // noch vorhandene PostIts in den ersten Absatz
+ // der Tabelle setzen
+ InsertAttrs( *pPostIts );
+ delete pPostIts;
+ pPostIts = 0;
+ }
+
+ pCntxt->SetSpansSection( sal_True );
+
+ // keine ::com::sun::star::text::Bookmarks mit dem gleichen Namen wie Bereiche einfuegen
+ if( aPropInfo.aId.Len() && aPropInfo.aId==aName )
+ aPropInfo.aId.Erase();
+ }
+ else
+ {
+ pCntxt->SetAppendMode( AM_NOSPACE );
+ }
+
+ if( SVX_ADJUST_END != eAdjust )
+ {
+ InsertAttr( &aAttrTab.pAdjust, SvxAdjustItem(eAdjust), pCntxt );
+ }
+
+ // Style parsen
+ if( bStyleParsed )
+ InsertAttrs( aItemSet, aPropInfo, pCntxt, sal_True );
+
+ PushContext( pCntxt );
+}
+
+void SwHTMLParser::EndDivision( int nToken )
+{
+ // Stack-Eintrag zu dem Token suchen (weil wir noch den Div-Stack
+ // haben unterscheiden wir erst einmal nicht zwischen DIV und CENTER
+ _HTMLAttrContext *pCntxt = 0;
+ sal_uInt16 nPos = aContexts.Count();
+ while( !pCntxt && nPos>nContextStMin )
+ {
+ switch( aContexts[--nPos]->GetToken() )
+ {
+ case HTML_CENTER_ON:
+ case HTML_DIVISION_ON:
+ pCntxt = aContexts[nPos];
+ aContexts.Remove( nPos, 1 );
+ break;
+ }
+ }
+
+ if( pCntxt )
+ {
+ // Attribute beenden
+ EndContext( pCntxt );
+ SetAttr(); // Absatz-Atts wegen JavaScript moeglichst schnell setzen
+
+ delete pCntxt;
+ }
+}
+
+void SwHTMLParser::FixHeaderFooterDistance( sal_Bool bHeader,
+ const SwPosition *pOldPos )
+{
+ SwPageDesc *pPageDesc = pCSS1Parser->GetMasterPageDesc();
+ SwFrmFmt& rPageFmt = pPageDesc->GetMaster();
+
+ SwFrmFmt *pHdFtFmt =
+ bHeader ? (SwFrmFmt*)rPageFmt.GetHeader().GetHeaderFmt()
+ : (SwFrmFmt*)rPageFmt.GetFooter().GetFooterFmt();
+ ASSERT( pHdFtFmt, "Doch keine Kopf- oder Fusszeile" );
+
+ const SwFmtCntnt& rFlyCntnt = pHdFtFmt->GetCntnt();
+ const SwNodeIndex& rCntntStIdx = *rFlyCntnt.GetCntntIdx();
+
+ sal_uInt32 nPrvNxtIdx;
+ if( bHeader )
+ {
+ nPrvNxtIdx = pDoc->GetNodes()[rCntntStIdx]->EndOfSectionIndex()-1;
+ }
+ else
+ {
+ nPrvNxtIdx = pOldPos->nNode.GetIndex() - 1;
+ }
+
+ sal_uInt16 nSpace = 0;
+ SwTxtNode *pTxtNode = pDoc->GetNodes()[nPrvNxtIdx]->GetTxtNode();
+ if( pTxtNode )
+ {
+ const SvxULSpaceItem& rULSpace =
+ ((const SvxULSpaceItem&)pTxtNode
+ ->SwCntntNode::GetAttr( RES_UL_SPACE ));
+
+ // Der untere Absatz-Abstand wird zum Abstand zur
+ // Kopf- oder Fusszeile
+ nSpace = rULSpace.GetLower();
+
+ // und anschliessend auf einen vernuenftigen Wert
+ // gesetzt
+ const SvxULSpaceItem& rCollULSpace =
+ pTxtNode->GetAnyFmtColl().GetULSpace();
+ if( rCollULSpace.GetUpper() == rULSpace.GetUpper() )
+ pTxtNode->ResetAttr( RES_UL_SPACE );
+ else
+ pTxtNode->SwCntntNode::SetAttr(
+ SvxULSpaceItem( rULSpace.GetUpper(),
+ rCollULSpace.GetLower() ) );
+ }
+
+ if( bHeader )
+ {
+ nPrvNxtIdx = pOldPos->nNode.GetIndex();
+ }
+ else
+ {
+ nPrvNxtIdx = rCntntStIdx.GetIndex() + 1;
+ }
+
+ pTxtNode = pDoc->GetNodes()[nPrvNxtIdx]
+ ->GetTxtNode();
+ if( pTxtNode )
+ {
+ const SvxULSpaceItem& rULSpace =
+ ((const SvxULSpaceItem&)pTxtNode
+ ->SwCntntNode::GetAttr( RES_UL_SPACE ));
+
+ // Der obere Absatz-Abstand wird zum Abstand zur
+ // Kopf- oder Fusszeile, wenn er groesser ist als
+ // der untere vom Absatz davor
+ if( rULSpace.GetUpper() > nSpace )
+ nSpace = rULSpace.GetUpper();
+
+ // und anschliessend auf einen vernuenftigen Wert gesetzt
+ const SvxULSpaceItem& rCollULSpace =
+ pTxtNode->GetAnyFmtColl().GetULSpace();
+ if( rCollULSpace.GetLower() == rULSpace.GetLower() )
+ pTxtNode->ResetAttr( RES_UL_SPACE );
+ else
+ pTxtNode->SwCntntNode::SetAttr(
+ SvxULSpaceItem( rCollULSpace.GetUpper(),
+ rULSpace.GetLower() ) );
+ }
+
+ SvxULSpaceItem aULSpace;
+ if( bHeader )
+ aULSpace.SetLower( nSpace );
+ else
+ aULSpace.SetUpper( nSpace );
+
+ pHdFtFmt->SetAttr( aULSpace );
+}
+
+sal_Bool SwHTMLParser::EndSection( sal_Bool bLFStripped )
+{
+ SwEndNode *pEndNd = pDoc->GetNodes()[pPam->GetPoint()->nNode.GetIndex()+1]
+ ->GetEndNode();
+ if( pEndNd && pEndNd->FindStartNode()->IsSectionNode() )
+ {
+ // den Bereich beenden
+ if( !bLFStripped )
+ StripTrailingPara();
+ pPam->Move( fnMoveForward );
+ return sal_True;
+ }
+
+ ASSERT( !this, "Falsche PaM Position Beenden eines Bereichs" );
+
+ return sal_False;
+}
+
+sal_Bool SwHTMLParser::EndSections( sal_Bool bLFStripped )
+{
+ sal_Bool bSectionClosed = sal_False;
+ sal_uInt16 nPos = aContexts.Count();
+ while( nPos>nContextStMin )
+ {
+ _HTMLAttrContext *pCntxt = aContexts[--nPos];
+ if( pCntxt->GetSpansSection() && EndSection( bLFStripped ) )
+ {
+ bSectionClosed = sal_True;
+ pCntxt->SetSpansSection( sal_False );
+ bLFStripped = sal_False;
+ }
+ }
+
+ return bSectionClosed;
+}
+
+/* */
+
+void SwHTMLParser::NewMultiCol()
+{
+ String aId, aStyle, aClass;
+ long nWidth = 100;
+ sal_uInt16 nCols = 0, nGutter = 10;
+ sal_Bool bPrcWidth = sal_True;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ case HTML_O_COLS:
+ nCols = (sal_uInt16)pOption->GetNumber();
+ break;
+ case HTML_O_WIDTH:
+ nWidth = pOption->GetNumber();
+ bPrcWidth = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ if( bPrcWidth && nWidth>100 )
+ nWidth = 100;
+ break;
+ case HTML_O_GUTTER:
+ nGutter = (sal_uInt16)pOption->GetNumber();
+ break;
+
+ }
+ }
+
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( HTML_MULTICOL_ON );
+
+ //.is the multicol elememt contained in a container? That may be the
+ // case for 5.0 documents.
+ sal_Bool bInCntnr = sal_False;
+ i = aContexts.Count();
+ while( !bInCntnr && i > nContextStMin )
+ bInCntnr = 0 != aContexts[--i]->GetFrmItemSet();
+
+ // Parse style sheets, but don't position anything by now.
+ sal_Bool bStyleParsed = sal_False;
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ bStyleParsed = ParseStyleOptions( aStyle, aId, aClass,
+ aItemSet, aPropInfo );
+
+ // Calculate width.
+ sal_uInt8 nPrcWidth = bPrcWidth ? (sal_uInt8)nWidth : 0;
+ sal_uInt16 nTwipWidth = 0;
+ if( !bPrcWidth && nWidth && Application::GetDefaultDevice() )
+ {
+ nTwipWidth = (sal_uInt16)Application::GetDefaultDevice()
+ ->PixelToLogic( Size(nWidth, 0),
+ MapMode(MAP_TWIP) ).Width();
+ }
+
+ if( !nPrcWidth && nTwipWidth < MINFLY )
+ nTwipWidth = MINFLY;
+
+ // Do positioning.
+ sal_Bool bPositioned = sal_False;
+ if( bInCntnr || pCSS1Parser->MayBePositioned( aPropInfo, sal_True ) )
+ {
+ SfxItemSet aFrmItemSet( pDoc->GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ if( !IsNewDoc() )
+ Reader::ResetFrmFmtAttrs(aFrmItemSet );
+
+ SetAnchorAndAdjustment( VERT_NONE, HORI_NONE, aItemSet, aPropInfo,
+ aFrmItemSet );
+
+ // The width is either the WIDTH attribute's value or contained
+ // in some style option.
+ SetVarSize( aItemSet, aPropInfo, aFrmItemSet, nTwipWidth, nPrcWidth );
+
+ SetSpace( Size(0,0), aItemSet, aPropInfo, aFrmItemSet );
+
+ // Set some other frame attributes. If the background is set, its
+ // it will be cleared here. That for, it won't be set at the section,
+ // too.
+ SetFrmFmtAttrs( aItemSet, aPropInfo,
+ HTML_FF_BOX|HTML_FF_BACKGROUND|HTML_FF_PADDING,
+ aFrmItemSet );
+
+ // Insert fly frame. If the are columns, the fly frame's name is not
+ // the sections name but a generated one.
+ String aFlyName( aEmptyStr );
+ if( nCols < 2 )
+ {
+ aFlyName = aId;
+ aPropInfo.aId.Erase();
+ }
+
+ InsertFlyFrame( aFrmItemSet, pCntxt, aFlyName, CONTEXT_FLAGS_ABSPOS );
+
+ pCntxt->SetPopStack( sal_True );
+ bPositioned = sal_True;
+ }
+
+ sal_Bool bAppended = sal_False;
+ if( !bPositioned )
+ {
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ {
+ AppendTxtNode( AM_SPACE );
+ bAppended = sal_True;
+ }
+ else
+ {
+ AddParSpace();
+ }
+ }
+
+ // If there are less then 2 columns, no section is inserted.
+ if( nCols >= 2 )
+ {
+ if( !bAppended )
+ {
+ // If the pam is at the start of a section, a additional text
+ // node must be inserted. Otherwise, the new section will be
+ // inserted in front of the old one.
+ SwNodeIndex aPrvNdIdx( pPam->GetPoint()->nNode, -1 );
+ if( (pDoc->GetNodes()[aPrvNdIdx])->IsSectionNode() )
+ {
+ AppendTxtNode();
+ bAppended = sal_True;
+ }
+ }
+ _HTMLAttrs *pPostIts = bAppended ? 0 : new _HTMLAttrs;
+ SetAttr( sal_True, sal_True, pPostIts );
+
+ // Make section name unique.
+ String aName( pDoc->GetUniqueSectionName( aId.Len() ? &aId : 0 ) );
+ SwSection aSection( CONTENT_SECTION, aName );
+
+ SfxItemSet aFrmItemSet( pDoc->GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ if( !IsNewDoc() )
+ Reader::ResetFrmFmtAttrs(aFrmItemSet );
+
+ if( nGutter && Application::GetDefaultDevice() )
+ {
+ nGutter = (sal_uInt16)Application::GetDefaultDevice()
+ ->PixelToLogic( Size(nGutter, 0),
+ MapMode(MAP_TWIP) ).Width();
+ }
+
+ SwFmtCol aFmtCol;
+#ifndef WIDTH_SUPPORTED_BY_SECTIONS
+ nPrcWidth = 100;
+#endif
+
+ aFmtCol.Init( nCols, nGutter, nPrcWidth ? USHRT_MAX : nTwipWidth );
+ aFrmItemSet.Put( aFmtCol );
+
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == aItemSet.GetItemState( RES_BACKGROUND, sal_False,
+ &pItem ) )
+ {
+ aFrmItemSet.Put( *pItem );
+ aItemSet.ClearItem( RES_BACKGROUND );
+ }
+ pDoc->Insert( *pPam, aSection, &aFrmItemSet, sal_False );
+
+ // Jump to section, if this is requested.
+ if( JUMPTO_REGION == eJumpTo && aName == sJmpMark )
+ {
+ bChkJumpMark = sal_True;
+ eJumpTo = JUMPTO_NONE;
+ }
+
+ SwTxtNode* pOldTxtNd =
+ bAppended ? 0 : pDoc->GetNodes()[pPam->GetPoint()->nNode]
+ ->GetTxtNode();
+
+ pPam->Move( fnMoveBackward );
+
+ // Move PageDesc and SwFmtBreak attributes of the current node
+ // to the section's first node.
+ if( pOldTxtNd )
+ MovePageDescAttrs( pOldTxtNd, pPam->GetPoint()->nNode.GetIndex(),
+ sal_True );
+
+ if( pPostIts )
+ {
+ // Move pending PostIts into the section.
+ InsertAttrs( *pPostIts );
+ delete pPostIts;
+ pPostIts = 0;
+ }
+
+ pCntxt->SetSpansSection( sal_True );
+
+ // Insert a bookmark if its name differs from the section's name only.
+ if( aPropInfo.aId.Len() && aPropInfo.aId==aName )
+ aPropInfo.aId.Erase();
+ }
+
+ // Additional attributes must be set as hard ones.
+ if( bStyleParsed )
+ InsertAttrs( aItemSet, aPropInfo, pCntxt, sal_True );
+
+ PushContext( pCntxt );
+}
+
+/* */
+
+void SwHTMLParser::InsertFlyFrame( const SfxItemSet& rItemSet,
+ _HTMLAttrContext *pCntxt,
+ const String& rName,
+ sal_uInt16 nFlags )
+{
+ RndStdIds eAnchorId =
+ ((const SwFmtAnchor&)rItemSet.Get( RES_ANCHOR )).GetAnchorId();
+
+ // Den Rahmen anlegen
+ SwFlyFrmFmt* pFlyFmt = pDoc->MakeFlySection( eAnchorId, pPam->GetPoint(),
+ &rItemSet );
+ // Ggf. den Namen setzen
+ if( rName.Len() )
+ pFlyFmt->SetName( rName );
+
+ RegisterFlyFrm( pFlyFmt );
+
+ const SwFmtCntnt& rFlyCntnt = pFlyFmt->GetCntnt();
+ const SwNodeIndex& rFlyCntIdx = *rFlyCntnt.GetCntntIdx();
+ SwCntntNode *pCNd = pDoc->GetNodes()[rFlyCntIdx.GetIndex()+1]
+ ->GetCntntNode();
+
+ SwPosition aNewPos( SwNodeIndex( rFlyCntIdx, 1 ), SwIndex( pCNd, 0 ) );
+ SaveDocContext( pCntxt, nFlags, &aNewPos );
+}
+
+
+/* */
+
+void SwHTMLParser::MovePageDescAttrs( SwNode *pSrcNd,
+ sal_uInt32 nDestIdx,
+ sal_Bool bFmtBreak )
+{
+ SwCntntNode* pDestCntntNd =
+ pDoc->GetNodes()[nDestIdx]->GetCntntNode();
+
+ ASSERT( pDestCntntNd, "Wieso ist das Ziel kein Content-Node?" );
+
+ if( pSrcNd->IsCntntNode() )
+ {
+ SwCntntNode* pSrcCntntNd = pSrcNd->GetCntntNode();
+
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pSrcCntntNd->GetSwAttrSet()
+ .GetItemState( RES_PAGEDESC, sal_False, &pItem ) &&
+ ((SwFmtPageDesc *)pItem)->GetPageDesc() )
+ {
+ pDestCntntNd->SetAttr( *pItem );
+ pSrcCntntNd->ResetAttr( RES_PAGEDESC );
+ }
+ if( SFX_ITEM_SET == pSrcCntntNd->GetSwAttrSet()
+ .GetItemState( RES_BREAK, sal_False, &pItem ) )
+ {
+ switch( ((SvxFmtBreakItem *)pItem)->GetBreak() )
+ {
+ case SVX_BREAK_PAGE_BEFORE:
+ case SVX_BREAK_PAGE_AFTER:
+ case SVX_BREAK_PAGE_BOTH:
+ if( bFmtBreak )
+ pDestCntntNd->SetAttr( *pItem );
+ pSrcCntntNd->ResetAttr( RES_BREAK );
+ }
+ }
+ }
+ else if( pSrcNd->IsTableNode() )
+ {
+ SwFrmFmt *pFrmFmt = pSrcNd->GetTableNode()->GetTable().GetFrmFmt();
+
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pFrmFmt->GetAttrSet().
+ GetItemState( RES_PAGEDESC, sal_False, &pItem ) )
+ {
+ pDestCntntNd->SetAttr( *pItem );
+ pFrmFmt->ResetAttr( RES_PAGEDESC );
+ }
+ }
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmlsect.cxx,v 1.1.1.1 2000-09-18 17:14:55 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.57 2000/09/18 16:04:46 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.56 2000/06/26 09:52:25 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.55 2000/04/10 12:20:57 mib
+ unicode
+
+ Revision 1.54 2000/03/21 15:06:18 os
+ UNOIII
+
+ Revision 1.53 2000/02/11 14:37:23 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.52 1999/11/19 16:40:20 os
+ modules renamed
+
+ Revision 1.51 1999/09/17 12:14:05 mib
+ support of multiple and non system text encodings
+
+ Revision 1.50 1999/07/23 13:35:08 MIB
+ #67578#: Use multicolumned sections for <MULTICOL>, section backgrounds
+
+
+ Rev 1.49 23 Jul 1999 15:35:08 MIB
+ #67578#: Use multicolumned sections for <MULTICOL>, section backgrounds
+
+ Rev 1.48 22 Jul 1999 18:59:24 MIB
+ Parameters to SwDoc::Insert call for section fixed to avoid updating links
+
+ Rev 1.47 10 Jun 1999 10:34:24 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.46 09 Jun 1999 19:37:46 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+ Rev 1.45 27 Jan 1999 09:43:26 OS
+ #56371# TF_ONE51
+
+ Rev 1.44 19 Nov 1998 16:42:44 HJS
+ tempobj fuer linux
+
+ Rev 1.43 13 Nov 1998 14:39:02 MIB
+ Nachtrag zu #58450#: Fuss-/Endnoten: Keine ::com::sun::star::text::Bookmark einfuegen
+
+ Rev 1.42 02 Nov 1998 17:23:46 MIB
+ #58480#: Fuss-/Endnoten
+
+ Rev 1.41 05 Jun 1998 13:57:02 JP
+ Bug #42487#: Sprung zum Mark schon waehrend des Ladens ausfuehren
+
+ Rev 1.40 12 May 1998 15:50:18 JP
+ rund um Flys/DrawObjs im Doc/FESh umgestellt/optimiert
+
+ Rev 1.39 21 Apr 1998 13:46:58 MIB
+ fix: Keine ::com::sun::star::text::Bookmark fuer abs-pos Objekte mit ID einfuegen
+
+ Rev 1.38 20 Apr 1998 12:58:06 MIB
+ fix: Fuer DIVs mit IS keinen Bereich einfuegen, wenn ein Rahmen eingefuegt wird
+
+ Rev 1.37 15 Apr 1998 14:47:58 MIB
+ Zwei-seitige Printing-Extensions
+
+ Rev 1.36 03 Apr 1998 15:11:52 MIB
+ CSS1-Padding
+
+ Rev 1.35 03 Apr 1998 12:22:16 MIB
+ Export des Rahmen-Namens als ID
+
+ Rev 1.34 02 Apr 1998 19:41:40 MIB
+ Positionierung von spaltigen Rahmen
+
+ Rev 1.33 25 Mar 1998 12:09:24 MIB
+ unneotige defines weg
+
+ Rev 1.32 19 Mar 1998 09:03:30 MIB
+ Abs.-Pos.: Attributierung nicht in Rahmen uebernehmen, Hoehe nun Mindest-Hoehe
+
+ Rev 1.31 11 Mar 1998 18:28:56 MIB
+ fix #47846#: auto-gebundenen Rahmen korrekt verankern
+
+ Rev 1.30 20 Feb 1998 19:01:50 MA
+ header
+
+ Rev 1.29 13 Feb 1998 18:42:48 HR
+ C40_INSERT
+
+ Rev 1.28 22 Jan 1998 19:58:30 JP
+ CTOR des SwPaM umgestellt
+
+ Rev 1.27 02 Dec 1997 09:13:02 MA
+ includes
+
+ Rev 1.26 20 Oct 1997 09:53:32 MIB
+ Nur fuer absolute positioning benoetigten Code groesstenteils auskommentiert
+
+ Rev 1.25 09 Oct 1997 14:35:34 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.24 16 Sep 1997 17:48:58 MIB
+ gleiche Methoden zusammengefasst
+
+ Rev 1.23 16 Sep 1997 11:17:44 MIB
+ Kopf-/Fusszeilen ohne Moven von Nodes, autom. Beenden von Bereichen/Rahmen
+
+ Rev 1.22 12 Sep 1997 11:56:48 MIB
+ MULTICOL ohne Move von Nodes
+
+ Rev 1.21 08 Sep 1997 17:47:56 MIB
+ Verankerung von AUTO_CNTNT-Rahmen nicht mehr verschieben
+
+ Rev 1.20 29 Aug 1997 16:49:42 OS
+ DLL-Umstellung
+
+ Rev 1.19 15 Aug 1997 12:46:40 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.18 12 Aug 1997 13:47:12 OS
+ Header-Umstellung
+
+ Rev 1.17 11 Aug 1997 14:06:46 OM
+ Headerfile-Umstellung
+
+ Rev 1.16 07 Aug 1997 15:07:48 OM
+ Headerfile-Umstellung
+
+ Rev 1.15 04 Aug 1997 13:54:22 MIB
+ aboslute psoitioning (fuer fast alle Zeichen-Attribute/-Vorlagen)
+
+ Rev 1.14 31 Jul 1997 10:44:02 MIB
+ DIV-STack weg, absolute positioning (sehr rudimentaer, nicht freigeschaltet)
+
+ Rev 1.13 08 Jul 1997 14:16:40 MIB
+ Meta-Tags als PostIts und die immer im ersten Body-Absatz verankern
+
+ Rev 1.12 13 Jun 1997 11:55:38 MIB
+ CLASS und ID CSS1-Optionen auswerten
+
+ Rev 1.11 16 Apr 1997 16:36:36 MIB
+ fix #38018#: Attribute wegen JavaScript hauefiger setzen
+
+ Rev 1.10 11 Apr 1997 14:42:48 MIB
+ fix #38645#: Keine Kopf-/fusszeilen beim Einfuegen einfuegen
+
+ Rev 1.9 10 Apr 1997 11:48:00 MIB
+ fix: gelinkte Bereiche nicht updaten aber schutzen
+
+ Rev 1.8 07 Apr 1997 14:42:54 MIB
+ fix: Vor Verschieben von Nodes auf StartNode und nicht auf EndIfIcons testen
+
+ Rev 1.7 05 Mar 1997 14:49:34 MIB
+ Absatz-Abstaende verbessert
+
+ Rev 1.6 20 Feb 1997 10:23:36 MIB
+ Absatnd von Kopf-/Fusszeilen am Absatz loeschen
+
+ Rev 1.5 19 Feb 1997 16:35:14 MIB
+ Absatz-Abstand als Abstand an Kopf- und Fusszeilen uebernehmen
+
+ Rev 1.4 16 Feb 1997 12:15:12 MIB
+ PageDesc-Atts in Kopf-/Fusszeilen und spaltige Bereichen richtig behandeln
+
+ Rev 1.3 14 Feb 1997 15:48:54 MIB
+ bug fix: Referenz auf PageFmt fuer Kopf-/Fusszeilen nehmen
+
+ Rev 1.2 14 Feb 1997 15:16:32 MIB
+ Kopf- und Fusszeilen importieren
+
+ Rev 1.1 05 Feb 1997 15:44:36 MIB
+ keine ::com::sun::star::text::Bookmarks fuer Bereiche anlegen (wegen gelinkten Bereichen)
+
+ Rev 1.0 05 Feb 1997 13:57:54 MIB
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmltab.cxx b/sw/source/filter/html/htmltab.cxx
new file mode 100644
index 000000000000..4b1f09167f6d
--- /dev/null
+++ b/sw/source/filter/html/htmltab.cxx
@@ -0,0 +1,6187 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmltab.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 TEST_RESIZE
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_SPLTITEM_HXX //autogen
+#include <svx/spltitem.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+
+
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTTSPLT_HXX //autogen
+#include <fmtlsplt.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include "frmatr.hxx"
+#endif
+#include "pam.hxx"
+#include "doc.hxx"
+#include "ndtxt.hxx"
+#include "shellio.hxx"
+#include "poolfmt.hxx"
+#include "swtable.hxx"
+#include "cellatr.hxx"
+#ifdef TEST_RESIZE
+#include "viewsh.hxx"
+#endif
+#include "htmltbl.hxx"
+#include "swtblfmt.hxx"
+#include "htmlnum.hxx"
+#include "swhtml.hxx"
+#include "swcss1.hxx"
+
+#define NETSCAPE_DFLT_BORDER 1
+#define NETSCAPE_DFLT_CELLPADDING 1
+#define NETSCAPE_DFLT_CELLSPACING 2
+
+//#define FIX56334
+
+static HTMLOptionEnum __FAR_DATA aHTMLTblVAlignTable[] =
+{
+ { sHTML_VA_top, VERT_NONE },
+ { sHTML_VA_middle, VERT_CENTER },
+ { sHTML_VA_bottom, VERT_BOTTOM },
+ { 0, 0 }
+};
+
+
+/* */
+
+// Die Optionen eines Table-Tags
+
+struct HTMLTableOptions
+{
+ sal_uInt16 nCols;
+ sal_uInt16 nWidth;
+ sal_uInt16 nHeight;
+ sal_uInt16 nCellPadding;
+ sal_uInt16 nCellSpacing;
+ sal_uInt16 nBorder;
+ sal_uInt16 nHSpace;
+ sal_uInt16 nVSpace;
+
+ SvxAdjust eAdjust;
+ SwVertOrient eVertOri;
+ HTMLTableFrame eFrame;
+ HTMLTableRules eRules;
+
+ sal_Bool bPrcWidth : 1;
+ sal_Bool bTableAdjust : 1;
+ sal_Bool bBGColor : 1;
+
+ Color aBorderColor;
+ Color aBGColor;
+
+ String aBGImage, aStyle, aId, aClass;
+
+ HTMLTableOptions( const HTMLOptions *pOptions, SvxAdjust eParentAdjust );
+};
+
+/* */
+
+class _HTMLTableContext
+{
+ SwHTMLNumRuleInfo aNumRuleInfo; // Vor der Tabelle gueltige Numerierung
+
+ SwTableNode *pTblNd; // der Tabellen-Node
+ SwFrmFmt *pFrmFmt; // der Fly ::com::sun::star::frame::Frame, in dem die Tabelle steht
+ SwPosition *pPos; // die Position hinter der Tabelle
+
+ sal_uInt16 nContextStAttrMin;
+ sal_uInt16 nContextStMin;
+
+ sal_Bool bRestartPRE : 1;
+ sal_Bool bRestartXMP : 1;
+ sal_Bool bRestartListing : 1;
+
+public:
+
+ _HTMLAttrTable aAttrTab; // und die Attribute
+
+ _HTMLTableContext( SwPosition *pPs, sal_uInt16 nCntxtStMin,
+ sal_uInt16 nCntxtStAttrMin ) :
+ pTblNd( 0 ), pFrmFmt( 0 ), pPos( pPs ),
+ nContextStMin( nCntxtStMin ), nContextStAttrMin( nCntxtStAttrMin ),
+ bRestartPRE( sal_False ), bRestartXMP( sal_False ), bRestartListing( sal_False )
+ {
+ memset( &aAttrTab, 0, sizeof( _HTMLAttrTable ));
+ }
+
+ ~_HTMLTableContext();
+
+ void SetNumInfo( const SwHTMLNumRuleInfo& rInf ) { aNumRuleInfo.Set(rInf); }
+ const SwHTMLNumRuleInfo& GetNumInfo() const { return aNumRuleInfo; };
+
+ void SavePREListingXMP( SwHTMLParser& rParser );
+ void RestorePREListingXMP( SwHTMLParser& rParser );
+
+ SwPosition *GetPos() const { return pPos; }
+
+ void SetTableNode( SwTableNode *pNd ) { pTblNd = pNd; }
+ SwTableNode *GetTableNode() const { return pTblNd; }
+
+ void SetFrmFmt( SwFrmFmt *pFmt ) { pFrmFmt = pFmt; }
+ SwFrmFmt *GetFrmFmt() const { return pFrmFmt; }
+
+ sal_uInt16 GetContextStMin() const { return nContextStMin; }
+ sal_uInt16 GetContextStAttrMin() const { return nContextStAttrMin; }
+};
+
+/* */
+
+// der Inhalt einer Zelle ist eine verkettete Liste mit SwStartNodes und
+// HTMLTables.
+
+class HTMLTableCnts
+{
+ HTMLTableCnts *pNext; // der naechste Inhalt
+
+ // von den beiden naechsten Pointern darf nur einer gesetzt sein!
+ const SwStartNode *pStartNode; // ein Abastz
+ HTMLTable *pTable; // eine Tabelle
+
+ SwHTMLTableLayoutCnts* pLayoutInfo;
+
+ sal_Bool bNoBreak;
+
+ void InitCtor();
+
+public:
+
+ HTMLTableCnts( const SwStartNode* pStNd );
+ HTMLTableCnts( HTMLTable* pTab );
+
+ ~HTMLTableCnts(); // nur in ~HTMLTableCell erlaubt
+
+ // Ermitteln des SwStartNode bzw. der HTMLTable
+ const SwStartNode *GetStartNode() const { return pStartNode; }
+ const HTMLTable *GetTable() const { return pTable; }
+ HTMLTable *GetTable() { return pTable; }
+
+ // hinzufuegen eines neuen Knotens am Listenende
+ void Add( HTMLTableCnts* pNewCnts );
+
+ // Ermitteln des naechsten Knotens
+ const HTMLTableCnts *Next() const { return pNext; }
+ HTMLTableCnts *Next() { return pNext; }
+
+ inline void SetTableBox( SwTableBox *pBox );
+
+ void SetNoBreak() { bNoBreak = sal_True; }
+
+ SwHTMLTableLayoutCnts *CreateLayoutInfo();
+};
+
+/* */
+
+// Eine Zelle der HTML-Tabelle
+
+class HTMLTableCell
+{
+ // !!!ACHTUNG!!!!! Fuer jeden neuen Pointer muss die SetProtected-
+ // Methode (und natuerlich der Destruktor) bearbeitet werden.
+ HTMLTableCnts *pContents; // der Inhalt der Zelle
+ SvxBrushItem *pBGBrush; // Hintergrund der Zelle
+ // !!!ACHTUNG!!!!!
+
+ sal_uInt32 nNumFmt;
+ sal_uInt16 nRowSpan; // ROWSPAN der Zelle
+ sal_uInt16 nColSpan; // COLSPAN der Zelle
+ sal_uInt16 nWidth; // WIDTH der Zelle
+ double nValue;
+ SwVertOrient eVertOri; // vertikale Ausrichtung der Zelle
+ sal_Bool bProtected : 1; // Zelle darf nicht belegt werden
+ sal_Bool bRelWidth : 1; // nWidth ist %-Angabe
+ sal_Bool bHasNumFmt : 1;
+ sal_Bool bHasValue : 1;
+ sal_Bool bNoWrap : 1;
+
+public:
+
+ HTMLTableCell(); // neue Zellen sind immer leer
+
+ ~HTMLTableCell(); // nur in ~HTMLTableRow erlaubt
+
+ // Belegen einer nicht-leeren Zelle
+ void Set( HTMLTableCnts *pCnts, sal_uInt16 nRSpan, sal_uInt16 nCSpan,
+ SwVertOrient eVertOri, SvxBrushItem *pBGBrush,
+ sal_Bool bHasNumFmt, sal_uInt32 nNumFmt,
+ sal_Bool bHasValue, double nValue, sal_Bool bNoWrap );
+
+ // Schuetzen einer leeren 1x1-Zelle
+ void SetProtected();
+
+ // Setzen/Ermitteln des Inhalts einer Zelle
+ void SetContents( HTMLTableCnts *pCnts ) { pContents = pCnts; }
+ const HTMLTableCnts *GetContents() const { return pContents; }
+ HTMLTableCnts *GetContents() { return pContents; }
+
+ // ROWSPAN/COLSPAN der Zelle Setzen/Ermitteln
+ void SetRowSpan( sal_uInt16 nRSpan ) { nRowSpan = nRSpan; }
+ sal_uInt16 GetRowSpan() const { return nRowSpan; }
+
+ void SetColSpan( sal_uInt16 nCSpan ) { nColSpan = nCSpan; }
+ sal_uInt16 GetColSpan() const { return nColSpan; }
+
+ inline void SetWidth( sal_uInt16 nWidth, sal_Bool bRelWidth );
+
+ const SvxBrushItem *GetBGBrush() const { return pBGBrush; }
+
+ inline sal_Bool GetNumFmt( sal_uInt32& rNumFmt ) const;
+ inline sal_Bool GetValue( double& rValue ) const;
+
+ SwVertOrient GetVertOri() const { return eVertOri; }
+
+ // Ist die Zelle belegt oder geschuetzt?
+ sal_Bool IsUsed() const { return pContents!=0 || bProtected; }
+
+ SwHTMLTableLayoutCell *CreateLayoutInfo();
+};
+
+/* */
+
+// Eine Zeile der HTML-Tabelle
+
+typedef HTMLTableCell* HTMLTableCellPtr;
+SV_DECL_PTRARR_DEL(HTMLTableCells,HTMLTableCellPtr,5,5)
+
+class HTMLTableRow
+{
+ HTMLTableCells *pCells; // die Zellen der Zeile
+
+ sal_Bool bIsEndOfGroup : 1;
+ sal_Bool bSplitable : 1;
+
+ sal_uInt16 nHeight; // Optionen von <TR>/<TD>
+ sal_uInt16 nEmptyRows; // wieviele Leere Zeilen folgen
+
+ SvxAdjust eAdjust;
+ SwVertOrient eVertOri;
+ SvxBrushItem *pBGBrush; // Hintergrund der Zelle aus STYLE
+
+public:
+
+ sal_Bool bBottomBorder; // kommt hinter der Zeile eine Linie?
+
+ HTMLTableRow( sal_uInt16 nCells=0 ); // die Zellen der Zeile sind leer
+
+ ~HTMLTableRow();
+
+ inline void SetHeight( sal_uInt16 nHeight );
+ sal_uInt16 GetHeight() const { return nHeight; }
+
+ // Ermitteln einer Zelle
+ inline HTMLTableCell *GetCell( sal_uInt16 nCell ) const;
+ inline const HTMLTableCells *GetCells() const { return pCells; }
+
+
+ inline void SetAdjust( SvxAdjust eAdj ) { eAdjust = eAdj; }
+ inline SvxAdjust GetAdjust() const { return eAdjust; }
+
+ inline void SetVertOri( SwVertOrient eV) { eVertOri = eV; }
+ inline SwVertOrient GetVertOri() const { return eVertOri; }
+
+ void SetBGBrush( SvxBrushItem *pBrush ) { pBGBrush = pBrush; }
+ const SvxBrushItem *GetBGBrush() const { return pBGBrush; }
+
+ inline void SetEndOfGroup() { bIsEndOfGroup = sal_True; }
+ inline sal_Bool IsEndOfGroup() const { return bIsEndOfGroup; }
+
+ void IncEmptyRows() { nEmptyRows++; }
+ sal_uInt16 GetEmptyRows() const { return nEmptyRows; }
+
+ // Expandieren einer Zeile durch hinzufuegen leerer Zellen
+ void Expand( sal_uInt16 nCells, sal_Bool bOneCell=sal_False );
+
+ // Verkuerzen einer Zeile durch loesen von leeren Zellen
+ void Shrink( sal_uInt16 nCells );
+
+ void SetSplitable( sal_Bool bSet ) { bSplitable = bSet; }
+ sal_Bool IsSplitable() const { return bSplitable; }
+};
+
+/* */
+
+// Eine Spalte der HTML-Tabelle
+
+class HTMLTableColumn
+{
+ sal_Bool bIsEndOfGroup;
+
+ sal_uInt16 nWidth; // Optionen von <COL>
+ sal_Bool bRelWidth;
+
+ SvxAdjust eAdjust;
+ SwVertOrient eVertOri;
+
+ SwFrmFmt *aFrmFmts[6];
+
+ inline sal_uInt16 GetFrmFmtIdx( sal_Bool bBorderLine,
+ SwVertOrient eVertOri ) const;
+
+public:
+
+ sal_Bool bLeftBorder; // kommt vor der Spalte eine Linie
+
+ HTMLTableColumn();
+
+ inline void SetWidth( sal_uInt16 nWidth, sal_Bool bRelWidth);
+
+ inline void SetAdjust( SvxAdjust eAdj ) { eAdjust = eAdj; }
+ inline SvxAdjust GetAdjust() const { return eAdjust; }
+
+ inline void SetVertOri( SwVertOrient eV) { eVertOri = eV; }
+ inline SwVertOrient GetVertOri() const { return eVertOri; }
+
+ inline void SetEndOfGroup() { bIsEndOfGroup = sal_True; }
+ inline sal_Bool IsEndOfGroup() const { return bIsEndOfGroup; }
+
+ inline void SetFrmFmt( SwFrmFmt *pFmt, sal_Bool bBorderLine,
+ SwVertOrient eVertOri );
+ inline SwFrmFmt *GetFrmFmt( sal_Bool bBorderLine,
+ SwVertOrient eVertOri ) const;
+
+ SwHTMLTableLayoutColumn *CreateLayoutInfo();
+};
+
+/* */
+
+// eine HTML-Tabelle
+
+typedef HTMLTableRow* HTMLTableRowPtr;
+SV_DECL_PTRARR_DEL(HTMLTableRows,HTMLTableRowPtr,5,5)
+
+typedef HTMLTableColumn* HTMLTableColumnPtr;
+SV_DECL_PTRARR_DEL(HTMLTableColumns,HTMLTableColumnPtr,5,5)
+
+SV_DECL_PTRARR(SdrObjects,SdrObject *,1,1)
+
+class HTMLTable
+{
+ String aId;
+ String aStyle;
+ String aClass;
+
+ SdrObjects *pResizeDrawObjs;// SDR-Objekte
+ SvUShorts *pDrawObjPrcWidths; // Spalte des Zeichen-Objekts und dessen
+ // relative Breite
+
+ HTMLTableRows *pRows; // die Zeilen der Tabelle
+ HTMLTableColumns *pColumns; // die Spalten der Tabelle
+
+ sal_uInt16 nRows; // Anzahl Zeilen
+ sal_uInt16 nCols; // Anzahl Spalten
+ sal_uInt16 nFilledCols; // Anzahl tatsaechlich gefuellter Spalten
+
+ sal_uInt16 nCurRow; // aktuelle Zeile
+ sal_uInt16 nCurCol; // aktuelle Spalte
+
+ sal_uInt16 nLeftMargin; // Abstand zum linken Rand (aus Absatz)
+ sal_uInt16 nRightMargin; // Abstand zum rechten Rand (aus Absatz)
+
+ sal_uInt16 nCellPadding; // Abstand Umrandung zum Text
+ sal_uInt16 nCellSpacing; // Abstand zwischen zwei Zellen
+ sal_uInt16 nHSpace;
+ sal_uInt16 nVSpace;
+
+ sal_uInt16 nBoxes; // Wievele Boxen enthaelt die Tabelle
+
+ const SwStartNode *pPrevStNd; // der Table-Node oder der Start-Node
+ // der vorhergehenden Section
+ const SwTable *pSwTable; // die SW-Tabelle (nur auf dem Top-Level)
+ SwTableBox *pBox1; // die TableBox, die beim Erstellen
+ // der Top-Level-Tabelle angelegt wird
+
+ SwTableBoxFmt *pBoxFmt; // das ::com::sun::star::frame::Frame-Format einer SwTableBox
+ SwTableLineFmt *pLineFmt; // das ::com::sun::star::frame::Frame-Format einer SwTableLine
+ SwTableLineFmt *pLineFrmFmtNoHeight;
+ SvxBrushItem *pBGBrush; // Hintergrund der Tabelle
+ SvxBrushItem *pInhBGBrush; // "geerbter" Hintergrund der Tabelle
+ const SwStartNode *pCaptionStartNode; // Start-Node der Tabellen-Ueberschrift
+
+ SvxBorderLine aTopBorderLine; // die Linie fuer die Umrandung
+ SvxBorderLine aBottomBorderLine;// die Linie fuer die Umrandung
+ SvxBorderLine aLeftBorderLine; // die Linie fuer die Umrandung
+ SvxBorderLine aRightBorderLine; // die Linie fuer die Umrandung
+ SvxBorderLine aBorderLine; // die Linie fuer die Umrandung
+ SvxBorderLine aInhLeftBorderLine; // die Linie fuer die Umrandung
+ SvxBorderLine aInhRightBorderLine; // die Linie fuer die Umrandung
+ sal_Bool bTopBorder; // besitzt die Tabelle oben eine Linie
+ sal_Bool bRightBorder; // besitzt die Tabelle rechts eine Linie
+ sal_Bool bTopAlwd; // duerfen die Raender gesetzt werden?
+ sal_Bool bRightAlwd;
+ sal_Bool bFillerTopBorder; // bekommt eine linke/rechter Filler-
+ sal_Bool bFillerBottomBorder; // Zelle eine obere/untere Umrandung?
+ sal_Bool bInhLeftBorder;
+ sal_Bool bInhRightBorder;
+ sal_Bool bBordersSet; // die Umrandung wurde bereits gesetzt
+ sal_Bool bForceFrame;
+ sal_Bool bTableAdjustOfTag; // stammt nTableAdjust aus <TABLE>?
+ sal_Bool bHeadlineRepeat; // Ueberschrift wiederholen
+ sal_Bool bIsParentHead;
+ sal_Bool bHasParentSection;
+ sal_Bool bMakeTopSubTable;
+ sal_Bool bHasToFly;
+ sal_Bool bFixedCols;
+ sal_Bool bColSpec; // Gab es COL(GROUP)-Elemente?
+ sal_Bool bPrcWidth; // Breite ist eine %-Angabe
+
+ SwHTMLParser *pParser; // der aktuelle Parser
+ HTMLTable *pTopTable; // die Tabelle auf dem Top-Level
+ HTMLTableCnts *pParentContents;
+
+ _HTMLTableContext *pContext; // der Kontext der Tabelle
+
+ SwHTMLTableLayout *pLayoutInfo;
+
+
+ // die folgenden Parameter stammen aus der dem <TABLE>-Tag
+ sal_uInt16 nWidth; // die Breite der Tabelle
+ sal_uInt16 nHeight; // absolute Hoehe der Tabelle
+ SvxAdjust eTableAdjust; // ::com::sun::star::drawing::Alignment der Tabelle
+ SwVertOrient eVertOri; // Default vertikale Ausr. der Zellen
+ sal_uInt16 nBorder; // Breite der auesseren Umrandung
+ HTMLTableFrame eFrame; // Rahmen um die Tabelle
+ HTMLTableRules eRules; // Ramhen in der Tabelle
+ sal_Bool bTopCaption; // Ueberschrift ueber der Tabelle
+
+ void InitCtor( const HTMLTableOptions *pOptions );
+
+ // Korigieren des Row-Spans fuer alle Zellen oberhalb der
+ // angegeben Zelle und der Zelle selbst, fuer die den anegebenen
+ // Inhalt besitzen. Die angegeben Zelle bekommt den Row-Span 1
+ void FixRowSpan( sal_uInt16 nRow, sal_uInt16 nCol, const HTMLTableCnts *pCnts );
+
+ // Schuetzen der angegeben Zelle und den darunterliegenden
+ void ProtectRowSpan( sal_uInt16 nRow, sal_uInt16 nCol, sal_uInt16 nRowSpan );
+
+ // Suchen des SwStartNodes der logisch vorhergehenden Box
+ // bei nRow==nCell==USHRT_MAX wird der allerletzte Start-Node
+ // der Tabelle zurueckgegeben
+ const SwStartNode* GetPrevBoxStartNode( sal_uInt16 nRow, sal_uInt16 nCell ) const;
+
+ sal_uInt16 GetTopCellSpace( sal_uInt16 nRow, sal_uInt16 nRowSpan,
+ sal_Bool bSwBorders=sal_True ) const;
+ sal_uInt16 GetBottomCellSpace( sal_uInt16 nRow, sal_uInt16 nRowSpan,
+ sal_Bool bSwBorders=sal_True ) const;
+
+ // Anpassen des ::com::sun::star::frame::Frame-Formates einer Box
+ void FixFrameFmt( SwTableBox *pBox, sal_uInt16 nRow, sal_uInt16 nCol,
+ sal_uInt16 nRowSpan, sal_uInt16 nColSpan,
+ sal_Bool bFirstPara=sal_True, sal_Bool bLastPara=sal_True ) const;
+ void FixFillerFrameFmt( SwTableBox *pBox, sal_Bool bRight ) const;
+
+ // den Inhalt (Lines/Boxen) eine Tabelle erstellen
+ void _MakeTable( SwTableBox *pUpper=0 );
+
+ // Anlegen einer neuen SwTableBox, die einen SwStartNode enthaelt
+ SwTableBox *NewTableBox( const SwStartNode *pStNd,
+ SwTableLine *pUpper ) const;
+
+ // Erstellen einer SwTableLine aus den Zellen des Rechtecks
+ // (nTopRow/nLeftCol) inklusive bis (nBottomRow/nRightRow) exklusive
+ SwTableLine *MakeTableLine( SwTableBox *pUpper,
+ sal_uInt16 nTopRow, sal_uInt16 nLeftCol,
+ sal_uInt16 nBottomRow, sal_uInt16 nRightCol );
+
+ // Erstellen einer SwTableBox aus den Zellen des Rechtecks
+ // (nTopRow/nLeftCol) inklusive bis (nBottomRow/nRightRow) exklusive
+ SwTableBox *MakeTableBox( SwTableLine *pUpper,
+ sal_uInt16 nTopRow, sal_uInt16 nLeftCol,
+ sal_uInt16 nBottomRow, sal_uInt16 nRightCol );
+
+ // Erstellen einer SwTableBox aus dem Inhalt einer Zelle
+ SwTableBox *MakeTableBox( SwTableLine *pUpper,
+ HTMLTableCnts *pCnts,
+ sal_uInt16 nTopRow, sal_uInt16 nLeftCol,
+ sal_uInt16 nBootomRow, sal_uInt16 nRightCol );
+
+ // der Autolayout-Algorithmus
+
+ // Setzen der Umrandung anhand der Vorgaben der Parent-Tabelle
+ void InheritBorders( const HTMLTable *pParent,
+ sal_uInt16 nRow, sal_uInt16 nCol,
+ sal_uInt16 nRowSpan, sal_uInt16 nColSpan,
+ sal_Bool bFirstPara, sal_Bool bLastPara );
+
+ // Linke und rechte Umrandung der umgebenen Tabelle erben
+ void InheritVertBorders( const HTMLTable *pParent,
+ sal_uInt16 nCol, sal_uInt16 nColSpan );
+
+
+ // Setzen der Umrandung anhand der Benutzervorgaben
+ void SetBorders();
+
+ // wurde die Umrandung der Tabelle schon gesetzt
+ sal_Bool BordersSet() const { return bBordersSet; }
+
+ const SvxBrushItem *GetBGBrush() const { return pBGBrush; }
+ const SvxBrushItem *GetInhBGBrush() const { return pInhBGBrush; }
+
+ sal_uInt16 GetBorderWidth( const SvxBorderLine& rBLine,
+ sal_Bool bWithDistance=sal_False ) const;
+
+public:
+
+ sal_Bool bFirstCell; // wurde schon eine Zelle angelegt?
+
+ HTMLTable( SwHTMLParser* pPars, HTMLTable *pTopTab,
+ sal_Bool bParHead, sal_Bool bHasParentSec,
+ sal_Bool bTopTbl, sal_Bool bHasToFly,
+ const HTMLTableOptions *pOptions );
+
+ ~HTMLTable();
+
+ // Ermitteln einer Zelle
+ inline HTMLTableCell *GetCell( sal_uInt16 nRow, sal_uInt16 nCell ) const;
+
+ // Ueberschrift setzen/ermitteln
+ inline void SetCaption( const SwStartNode *pStNd, sal_Bool bTop );
+ const SwStartNode *GetCaptionStartNode() const { return pCaptionStartNode; }
+ sal_Bool IsTopCaption() const { return bTopCaption; }
+
+ SvxAdjust GetTableAdjust( sal_Bool bAny ) const
+ {
+ return (bTableAdjustOfTag || bAny) ? eTableAdjust : SVX_ADJUST_END;
+ }
+ SwVertOrient GetVertOri() const { return eVertOri; }
+
+ sal_uInt16 GetHSpace() const { return nHSpace; }
+ sal_uInt16 GetVSpace() const { return nVSpace; }
+
+ sal_Bool HasPrcWidth() const { return bPrcWidth; }
+ sal_uInt8 GetPrcWidth() const { return bPrcWidth ? (sal_uInt8)nWidth : 0; }
+
+ sal_uInt16 GetMinWidth() const
+ {
+ sal_uInt32 nMin = pLayoutInfo->GetMin();
+ return nMin < USHRT_MAX ? (sal_uInt16)nMin : USHRT_MAX;
+ }
+
+ // von Zeilen oder Spalten geerbtes ::com::sun::star::drawing::Alignment holen
+ SvxAdjust GetInheritedAdjust() const;
+ SwVertOrient GetInheritedVertOri() const;
+
+ // Einfuegen einer Zelle an der aktuellen Position
+ void InsertCell( HTMLTableCnts *pCnts, sal_uInt16 nRowSpan, sal_uInt16 nColSpan,
+ sal_uInt16 nWidth, sal_Bool bRelWidth, sal_uInt16 nHeight,
+ SwVertOrient eVertOri, SvxBrushItem *pBGBrush,
+ sal_Bool bHasNumFmt, sal_uInt32 nNumFmt,
+ sal_Bool bHasValue, double nValue, sal_Bool bNoWrap );
+
+ // Start/Ende einer neuen Zeile bekanntgeben
+ void OpenRow( SvxAdjust eAdjust, SwVertOrient eVertOri,
+ SvxBrushItem *pBGBrush );
+ void CloseRow( sal_Bool bEmpty );
+
+ // Ende einer neuen Section bekanntgeben
+ inline void CloseSection( sal_Bool bHead );
+
+ // Ende einer Spalten-Gruppe bekanntgeben
+ inline void CloseColGroup( sal_uInt16 nSpan, sal_uInt16 nWidth, sal_Bool bRelWidth,
+ SvxAdjust eAdjust, SwVertOrient eVertOri );
+
+ // Einfuegen einer Spalte
+ void InsertCol( sal_uInt16 nSpan, sal_uInt16 nWidth, sal_Bool bRelWidth,
+ SvxAdjust eAdjust, SwVertOrient eVertOri );
+
+ // Beenden einer Tab-Definition (MUSS fuer ALLE Tabs aufgerufen werden)
+ void CloseTable();
+
+ // SwTable konstruieren (inkl. der Child-Tabellen)
+ void MakeTable( SwTableBox *pUpper, sal_uInt16 nAbsAvail,
+ sal_uInt16 nRelAvail=0, sal_uInt16 nAbsLeftSpace=0,
+ sal_uInt16 nAbsRightSpace=0, sal_uInt16 nInhAbsSpace=0 );
+
+ inline sal_Bool IsNewDoc() const { return pParser->IsNewDoc(); }
+
+ void SetHasParentSection( sal_Bool bSet ) { bHasParentSection = bSet; }
+ sal_Bool HasParentSection() const { return bHasParentSection; }
+
+ void SetParentContents( HTMLTableCnts *pCnts ) { pParentContents = pCnts; }
+ HTMLTableCnts *GetParentContents() const { return pParentContents; }
+
+ void MakeParentContents();
+
+ sal_Bool GetIsParentHeader() const { return bIsParentHead; }
+
+ sal_Bool IsMakeTopSubTable() const { return bMakeTopSubTable; }
+ void SetHasToFly() { bHasToFly=sal_True; }
+ sal_Bool HasToFly() const { return bHasToFly; }
+
+ void SetTable( const SwStartNode *pStNd, _HTMLTableContext *pCntxt,
+ sal_uInt16 nLeft, sal_uInt16 nRight,
+ const SwTable *pSwTab=0, sal_Bool bFrcFrame=sal_False );
+
+ _HTMLTableContext *GetContext() const { return pContext; }
+
+ SwHTMLTableLayout *CreateLayoutInfo();
+
+ sal_Bool HasColTags() const { return bColSpec; }
+
+ sal_uInt16 IncGrfsThatResize() { return pSwTable ? ((SwTable *)pSwTable)->IncGrfsThatResize() : 0; }
+
+ void RegisterDrawObject( SdrObject *pObj, sal_uInt8 nPrcWidth );
+
+ const SwTable *GetSwTable() const { return pSwTable; }
+
+ void SetBGBrush( const SvxBrushItem& rBrush ) { delete pBGBrush; pBGBrush = new SvxBrushItem( rBrush ); }
+
+ const String& GetId() const { return aId; }
+ const String& GetClass() const { return aClass; }
+ const String& GetStyle() const { return aStyle; }
+
+ void IncBoxCount() { nBoxes++; }
+ sal_Bool IsOverflowing() const { return nBoxes > 64000; }
+};
+
+SV_IMPL_PTRARR(HTMLTableCells,HTMLTableCellPtr)
+SV_IMPL_PTRARR(HTMLTableRows,HTMLTableRowPtr)
+SV_IMPL_PTRARR(HTMLTableColumns,HTMLTableColumnPtr)
+
+/* */
+
+
+void HTMLTableCnts::InitCtor()
+{
+ pNext = 0;
+ pLayoutInfo = 0;
+
+ bNoBreak = sal_False;
+}
+
+HTMLTableCnts::HTMLTableCnts( const SwStartNode* pStNd ):
+ pStartNode(pStNd), pTable(0)
+{
+ InitCtor();
+}
+
+HTMLTableCnts::HTMLTableCnts( HTMLTable* pTab ):
+ pStartNode(0), pTable(pTab)
+{
+ InitCtor();
+}
+
+HTMLTableCnts::~HTMLTableCnts()
+{
+ delete pTable; // die Tabellen brauchen wir nicht mehr
+ delete pNext;
+}
+
+void HTMLTableCnts::Add( HTMLTableCnts* pNewCnts )
+{
+ HTMLTableCnts *pCnts = this;
+
+ while( pCnts->pNext )
+ pCnts = pCnts->pNext;
+
+ pCnts->pNext = pNewCnts;
+}
+
+inline void HTMLTableCnts::SetTableBox( SwTableBox *pBox )
+{
+ ASSERT( pLayoutInfo, "Da sit noch keine Layout-Info" );
+ if( pLayoutInfo )
+ pLayoutInfo->SetTableBox( pBox );
+}
+
+SwHTMLTableLayoutCnts *HTMLTableCnts::CreateLayoutInfo()
+{
+ if( !pLayoutInfo )
+ {
+ SwHTMLTableLayoutCnts *pNextInfo = pNext ? pNext->CreateLayoutInfo() : 0;
+ SwHTMLTableLayout *pTableInfo = pTable ? pTable->CreateLayoutInfo() : 0;
+
+ pLayoutInfo = new SwHTMLTableLayoutCnts( pStartNode, pTableInfo,
+ bNoBreak, pNextInfo );
+ }
+
+ return pLayoutInfo;
+}
+
+/* */
+
+HTMLTableCell::HTMLTableCell():
+ pContents(0),
+ pBGBrush(0),
+ nRowSpan(1), nColSpan(1), nWidth( 0 ),
+ eVertOri( VERT_NONE ),
+ bProtected(sal_False), bRelWidth( sal_False ),
+ bHasNumFmt(sal_False), nNumFmt(0),
+ bHasValue(sal_False), nValue(0)
+{}
+
+HTMLTableCell::~HTMLTableCell()
+{
+ // der Inhalt ist in mehrere Zellen eingetragen, darf aber nur einmal
+ // geloescht werden
+ if( 1==nRowSpan && 1==nColSpan )
+ {
+ delete pContents;
+ delete pBGBrush;
+ }
+}
+
+void HTMLTableCell::Set( HTMLTableCnts *pCnts, sal_uInt16 nRSpan, sal_uInt16 nCSpan,
+ SwVertOrient eVert, SvxBrushItem *pBrush,
+ sal_Bool bHasNF, sal_uInt32 nNF, sal_Bool bHasV, double nVal,
+ sal_Bool bNWrap )
+{
+ pContents = pCnts;
+ nRowSpan = nRSpan;
+ nColSpan = nCSpan;
+ bProtected = sal_False;
+ eVertOri = eVert;
+ pBGBrush = pBrush;
+
+ bHasNumFmt = bHasNF;
+ bHasValue = bHasV;
+ nNumFmt = nNF;
+ nValue = nVal;
+
+ bNoWrap = bNWrap;
+}
+
+inline void HTMLTableCell::SetWidth( sal_uInt16 nWdth, sal_Bool bRelWdth )
+{
+ nWidth = nWdth;
+ bRelWidth = bRelWdth;
+}
+
+void HTMLTableCell::SetProtected()
+{
+ // Die Inhalte dieser Zelle mussen nich irgenwo anders verankert
+ // sein, weil sie nicht geloescht werden!!!
+
+ // Inhalt loeschen
+ pContents = 0;
+
+ // Hintergrundfarbe kopieren.
+ if( pBGBrush )
+ pBGBrush = new SvxBrushItem( *pBGBrush );
+
+ nRowSpan = 1;
+ nColSpan = 1;
+ bProtected = sal_True;
+}
+
+inline sal_Bool HTMLTableCell::GetNumFmt( sal_uInt32& rNumFmt ) const
+{
+ rNumFmt = nNumFmt;
+ return bHasNumFmt;
+}
+
+inline sal_Bool HTMLTableCell::GetValue( double& rValue ) const
+{
+ rValue = nValue;
+ return bHasValue;
+}
+
+SwHTMLTableLayoutCell *HTMLTableCell::CreateLayoutInfo()
+{
+ SwHTMLTableLayoutCnts *pCntInfo = pContents ? pContents->CreateLayoutInfo() : 0;
+
+ return new SwHTMLTableLayoutCell( pCntInfo, nRowSpan, nColSpan, nWidth,
+ bRelWidth, bNoWrap );
+}
+
+/* */
+
+HTMLTableRow::HTMLTableRow( sal_uInt16 nCells ):
+ pCells(new HTMLTableCells), bIsEndOfGroup(sal_False),
+ eAdjust(SVX_ADJUST_END), eVertOri(VERT_TOP), pBGBrush(0),
+ bBottomBorder(sal_False), nHeight(0), nEmptyRows(0), bSplitable( sal_False )
+{
+ for( sal_uInt16 i=0; i<nCells; i++ )
+ {
+ pCells->Insert( new HTMLTableCell, pCells->Count() );
+ }
+
+ ASSERT( nCells==pCells->Count(),
+ "Zellenzahl in neuer HTML-Tabellenzeile stimmt nicht" );
+}
+
+HTMLTableRow::~HTMLTableRow()
+{
+ delete pCells;
+ delete pBGBrush;
+}
+
+inline void HTMLTableRow::SetHeight( sal_uInt16 nHght )
+{
+ if( nHght > nHeight )
+ nHeight = nHght;
+}
+
+inline HTMLTableCell *HTMLTableRow::GetCell( sal_uInt16 nCell ) const
+{
+ ASSERT( nCell<pCells->Count(),
+ "ungueltiger Zellen-Index in HTML-Tabellenzeile" );
+ return (*pCells)[nCell];
+}
+
+void HTMLTableRow::Expand( sal_uInt16 nCells, sal_Bool bOneCell )
+{
+ // die Zeile wird mit einer einzigen Zelle aufgefuellt, wenn
+ // bOneCell gesetzt ist. Das geht, nur fuer Zeilen, in die keine
+ // Zellen mehr eingefuegt werden!
+
+ sal_uInt16 nColSpan = nCells-pCells->Count();
+ for( sal_uInt16 i=pCells->Count(); i<nCells; i++ )
+ {
+ HTMLTableCell *pCell = new HTMLTableCell;
+ if( bOneCell )
+ pCell->SetColSpan( nColSpan );
+
+ pCells->Insert( pCell, pCells->Count() );
+ nColSpan--;
+ }
+
+ ASSERT( nCells==pCells->Count(),
+ "Zellenzahl in expandierter HTML-Tabellenzeile stimmt nicht" );
+}
+
+void HTMLTableRow::Shrink( sal_uInt16 nCells )
+{
+ ASSERT( nCells < pCells->Count(), "Anzahl Zellen falsch" );
+
+#ifdef DEBUG
+ sal_uInt16 nEnd = pCells->Count();
+ for( sal_uInt16 i=nCells; i<nEnd; i++ )
+ {
+ HTMLTableCell *pCell = (*pCells)[i];
+ ASSERT( pCell->GetRowSpan() == 1,
+ "RowSpan von zu loesender Zelle ist falsch" );
+ ASSERT( pCell->GetColSpan() == nEnd - i,
+ "ColSpan von zu loesender Zelle ist falsch" );
+ ASSERT( !pCell->GetContents(), "Zu loeschende Zelle hat Inhalt" );
+ }
+#endif
+
+ pCells->DeleteAndDestroy( nCells, pCells->Count()-nCells );
+}
+
+/* */
+
+HTMLTableColumn::HTMLTableColumn():
+ bIsEndOfGroup(sal_False),
+ nWidth(0), bRelWidth(sal_False),
+ eAdjust(SVX_ADJUST_END), eVertOri(VERT_TOP),
+ bLeftBorder(sal_False)
+{
+ for( sal_uInt16 i=0; i<6; i++ )
+ aFrmFmts[i] = 0;
+}
+
+inline void HTMLTableColumn::SetWidth( sal_uInt16 nWdth, sal_Bool bRelWdth )
+{
+ if( bRelWidth==bRelWdth )
+ {
+ if( nWdth > nWidth )
+ nWidth = nWdth;
+ }
+ else
+ nWidth = nWdth;
+ bRelWidth = bRelWdth;
+}
+
+inline SwHTMLTableLayoutColumn *HTMLTableColumn::CreateLayoutInfo()
+{
+ return new SwHTMLTableLayoutColumn( nWidth, bRelWidth, bLeftBorder );
+}
+
+inline sal_uInt16 HTMLTableColumn::GetFrmFmtIdx( sal_Bool bBorderLine,
+ SwVertOrient eVertOri ) const
+{
+ ASSERT( VERT_TOP != eVertOri, "Top ist nicht erlaubt" );
+ sal_uInt16 n = bBorderLine ? 3 : 0;
+ switch( eVertOri )
+ {
+ case VERT_CENTER: n+=1; break;
+ case VERT_BOTTOM: n+=2; break;
+ }
+ return n;
+}
+
+inline void HTMLTableColumn::SetFrmFmt( SwFrmFmt *pFmt, sal_Bool bBorderLine,
+ SwVertOrient eVertOri )
+{
+ aFrmFmts[GetFrmFmtIdx(bBorderLine,eVertOri)] = pFmt;
+}
+
+inline SwFrmFmt *HTMLTableColumn::GetFrmFmt( sal_Bool bBorderLine,
+ SwVertOrient eVertOri ) const
+{
+ return aFrmFmts[GetFrmFmtIdx(bBorderLine,eVertOri)];
+}
+
+/* */
+
+
+void HTMLTable::InitCtor( const HTMLTableOptions *pOptions )
+{
+ pResizeDrawObjs = 0;
+ pDrawObjPrcWidths = 0;
+
+ pRows = new HTMLTableRows;
+ pColumns = new HTMLTableColumns;
+ nRows = 0;
+ nCurRow = 0; nCurCol = 0;
+
+ pBox1 = 0;
+ pBoxFmt = 0; pLineFmt = 0;
+ pLineFrmFmtNoHeight = 0;
+ pInhBGBrush = 0;
+
+ pPrevStNd = 0;
+ pSwTable = 0;
+
+ bTopBorder = sal_False; bRightBorder = sal_False;
+ bTopAlwd = sal_True; bRightAlwd = sal_True;
+ bFillerTopBorder = sal_False; bFillerBottomBorder = sal_False;
+ bInhLeftBorder = sal_False; bInhRightBorder = sal_False;
+ bBordersSet = sal_False;
+ bForceFrame = sal_False;
+ bHeadlineRepeat = sal_False;
+
+ nLeftMargin = 0;
+ nRightMargin = 0;
+
+ const Color& rBorderColor = pOptions->aBorderColor;
+
+ long nBorderOpt = (long)pOptions->nBorder;
+ long nPWidth = nBorderOpt==USHRT_MAX ? NETSCAPE_DFLT_BORDER
+ : nBorderOpt;
+ long nPHeight = nBorderOpt==USHRT_MAX ? 0 : nBorderOpt;
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+
+ // nBorder gibt die Breite der Umrandung an, wie sie in die
+ // Breitenberechnung in Netscape einfliesst. Wenn pOption->nBorder
+ // == USHRT_MAX, wurde keine BORDER-Option angegeben. Trotzdem fliesst
+ // eine 1 Pixel breite Umrandung in die Breitenberechnung mit ein.
+ nBorder = (sal_uInt16)nPWidth;
+ if( nBorderOpt==USHRT_MAX )
+ nPWidth = 0;
+
+ // HACK: ein Pixel-breite Linien sollen zur Haarlinie werden, wenn
+ // wir mit doppelter Umrandung arbeiten
+ if( pOptions->nCellSpacing!=0 && nBorderOpt==1 )
+ {
+ nPWidth = 1;
+ nPHeight = 1;
+ }
+
+ SvxCSS1Parser::SetBorderWidth( aTopBorderLine, (sal_uInt16)nPHeight,
+ pOptions->nCellSpacing!=0, sal_True );
+ aTopBorderLine.SetColor( rBorderColor );
+ aBottomBorderLine = aTopBorderLine;
+
+ if( nPWidth == nPHeight )
+ {
+ aLeftBorderLine = aTopBorderLine;
+ }
+ else
+ {
+ SvxCSS1Parser::SetBorderWidth( aLeftBorderLine, (sal_uInt16)nPWidth,
+ pOptions->nCellSpacing!=0, sal_True );
+ aLeftBorderLine.SetColor( rBorderColor );
+ }
+ aRightBorderLine = aLeftBorderLine;
+
+ if( pOptions->nCellSpacing != 0 )
+ {
+ aBorderLine.SetOutWidth( DEF_DOUBLE_LINE7_OUT );
+ aBorderLine.SetInWidth( DEF_DOUBLE_LINE7_IN );
+ aBorderLine.SetDistance( DEF_DOUBLE_LINE7_DIST );
+ }
+ else
+ {
+ aBorderLine.SetOutWidth( DEF_LINE_WIDTH_1 );
+ }
+ aBorderLine.SetColor( rBorderColor );
+
+ if( nCellPadding )
+ {
+ if( nCellPadding==USHRT_MAX )
+ nCellPadding = MIN_BORDER_DIST; // default
+ else
+ {
+ nCellPadding = pParser->ToTwips( nCellPadding );
+ if( nCellPadding<MIN_BORDER_DIST )
+ nCellPadding = MIN_BORDER_DIST;
+ }
+ }
+ if( nCellSpacing )
+ {
+ if( nCellSpacing==USHRT_MAX )
+ nCellSpacing = NETSCAPE_DFLT_CELLSPACING;
+ nCellSpacing = pParser->ToTwips( nCellSpacing );
+ }
+
+ nPWidth = pOptions->nHSpace;
+ nPHeight = pOptions->nVSpace;
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+ nHSpace = (sal_uInt16)nPWidth;
+ nVSpace = (sal_uInt16)nPHeight;
+
+ bColSpec = sal_False;
+
+ pBGBrush = pParser->CreateBrushItem(
+ pOptions->bBGColor ? &(pOptions->aBGColor) : 0,
+ pOptions->aBGImage, aEmptyStr, aEmptyStr, aEmptyStr );
+
+ pContext = 0;
+ pParentContents = 0;
+
+ aId = pOptions->aId;
+ aClass = pOptions->aClass;
+ aStyle = pOptions->aStyle;
+}
+
+HTMLTable::HTMLTable( SwHTMLParser* pPars, HTMLTable *pTopTab,
+ sal_Bool bParHead,
+ sal_Bool bHasParentSec, sal_Bool bTopTbl, sal_Bool bHasToFlw,
+ const HTMLTableOptions *pOptions ) :
+ nCols( pOptions->nCols ),
+ nFilledCols( 0 ),
+ nWidth( pOptions->nWidth ), bPrcWidth( pOptions->bPrcWidth ),
+ nHeight( pTopTab ? 0 : pOptions->nHeight ),
+ nBoxes( 1 ),
+ eTableAdjust( pOptions->eAdjust ),
+ bTableAdjustOfTag( pTopTab ? sal_False : pOptions->bTableAdjust ),
+ eVertOri( pOptions->eVertOri ),
+ eFrame( pOptions->eFrame ), eRules( pOptions->eRules ),
+ nCellPadding( pOptions->nCellPadding ),
+ nCellSpacing( pOptions->nCellSpacing ),
+ pParser( pPars ), pTopTable( pTopTab ? pTopTab : this ),
+ pCaptionStartNode( 0 ),
+ bFirstCell( !pTopTab ),
+ bIsParentHead( bParHead ),
+ bHasParentSection( bHasParentSec ), bMakeTopSubTable( bTopTbl ),
+ bHasToFly( bHasToFlw ),
+ bFixedCols( pOptions->nCols>0 ), bTopCaption( sal_False ),
+ pLayoutInfo( 0 )
+{
+ InitCtor( pOptions );
+
+ for( sal_uInt16 i=0; i<nCols; i++ )
+ pColumns->Insert( new HTMLTableColumn, pColumns->Count() );
+}
+
+
+HTMLTable::~HTMLTable()
+{
+ delete pResizeDrawObjs;
+ delete pDrawObjPrcWidths;
+
+ delete pRows;
+ delete pColumns;
+ delete pBGBrush;
+ delete pInhBGBrush;
+
+ delete pContext;
+
+ // pLayoutInfo wurde entweder bereits geloescht oder muss aber es
+ // in den Besitz der SwTable uebergegangen.
+}
+
+SwHTMLTableLayout *HTMLTable::CreateLayoutInfo()
+{
+ sal_uInt16 nW = bPrcWidth ? nWidth : pParser->ToTwips( nWidth );
+
+ sal_uInt16 nBorderWidth = GetBorderWidth( aBorderLine, sal_True );
+ sal_uInt16 nLeftBorderWidth =
+ ((*pColumns)[0])->bLeftBorder ? GetBorderWidth( aLeftBorderLine, sal_True ) : 0;
+ sal_uInt16 nRightBorderWidth =
+ bRightBorder ? GetBorderWidth( aRightBorderLine, sal_True ) : 0;
+ sal_uInt16 nInhLeftBorderWidth = 0;
+ sal_uInt16 nInhRightBorderWidth = 0;
+
+ pLayoutInfo = new SwHTMLTableLayout(
+ pSwTable,
+ nRows, nCols, bFixedCols, bColSpec,
+ nW, bPrcWidth, nBorder, nCellPadding,
+ nCellSpacing, eTableAdjust,
+ nLeftMargin, nRightMargin,
+ nBorderWidth, nLeftBorderWidth, nRightBorderWidth,
+ nInhLeftBorderWidth, nInhRightBorderWidth );
+
+ sal_Bool bExportable = sal_True;
+ sal_uInt16 i;
+ for( i=0; i<nRows; i++ )
+ {
+ HTMLTableRow *pRow = (*pRows)[i];
+ for( sal_uInt16 j=0; j<nCols; j++ )
+ {
+ SwHTMLTableLayoutCell *pLayoutCell =
+ pRow->GetCell(j)->CreateLayoutInfo();
+
+ pLayoutInfo->SetCell( pLayoutCell, i, j );
+
+ if( bExportable )
+ {
+ SwHTMLTableLayoutCnts *pLayoutCnts =
+ pLayoutCell->GetContents();
+ bExportable = !pLayoutCnts ||
+ ( pLayoutCnts->GetStartNode() &&
+ !pLayoutCnts->GetNext() );
+ }
+ }
+ }
+
+ pLayoutInfo->SetExportable( bExportable );
+
+ for( i=0; i<nCols; i++ )
+ pLayoutInfo->SetColumn( ((*pColumns)[i])->CreateLayoutInfo(), i );
+
+ return pLayoutInfo;
+}
+
+inline void HTMLTable::SetCaption( const SwStartNode *pStNd, sal_Bool bTop )
+{
+ pCaptionStartNode = pStNd;
+ bTopCaption = bTop;
+}
+
+void HTMLTable::FixRowSpan( sal_uInt16 nRow, sal_uInt16 nCol,
+ const HTMLTableCnts *pCnts )
+{
+ sal_uInt16 nRowSpan=1;
+ HTMLTableCell *pCell;
+ while( ( pCell=GetCell(nRow,nCol), pCell->GetContents()==pCnts ) )
+ {
+ pCell->SetRowSpan( nRowSpan );
+ if( pLayoutInfo )
+ pLayoutInfo->GetCell(nRow,nCol)->SetRowSpan( nRowSpan );
+
+ if( !nRow ) break;
+ nRowSpan++; nRow--;
+ }
+}
+
+void HTMLTable::ProtectRowSpan( sal_uInt16 nRow, sal_uInt16 nCol, sal_uInt16 nRowSpan )
+{
+ for( sal_uInt16 i=0; i<nRowSpan; i++ )
+ {
+ GetCell(nRow+i,nCol)->SetProtected();
+ if( pLayoutInfo )
+ pLayoutInfo->GetCell(nRow+i,nCol)->SetProtected();
+ }
+}
+
+
+// Suchen des SwStartNodes der letzten belegten Vorgaengerbox
+const SwStartNode* HTMLTable::GetPrevBoxStartNode( sal_uInt16 nRow, sal_uInt16 nCol ) const
+{
+ const HTMLTableCnts *pPrevCnts = 0;
+
+ if( 0==nRow )
+ {
+ // immer die Vorgaenger-Zelle
+ if( nCol>0 )
+ pPrevCnts = GetCell( 0, nCol-1 )->GetContents();
+ else
+ return pPrevStNd;
+ }
+ else if( USHRT_MAX==nRow && USHRT_MAX==nCol )
+ // der Contents der letzten Zelle
+ pPrevCnts = GetCell( nRows-1, nCols-1 )->GetContents();
+ else
+ {
+ sal_uInt16 i;
+ HTMLTableRow *pPrevRow = (*pRows)[nRow-1];
+
+ // evtl. eine Zelle in der aktuellen Zeile
+ i = nCol;
+ while( i )
+ {
+ i--;
+ if( 1 == pPrevRow->GetCell(i)->GetRowSpan() )
+ {
+ pPrevCnts = GetCell(nRow,i)->GetContents();
+ break;
+ }
+ }
+
+ // sonst die letzte gefuellte Zelle der Zeile davor suchen
+ if( !pPrevCnts )
+ {
+ i = nCols;
+ while( !pPrevCnts && i )
+ {
+ i--;
+ pPrevCnts = pPrevRow->GetCell(i)->GetContents();
+ }
+ }
+ }
+ ASSERT( pPrevCnts, "keine gefuellte Vorgaenger-Zelle gefunden" );
+ if( !pPrevCnts )
+ {
+ pPrevCnts = GetCell(0,0)->GetContents();
+ if( !pPrevCnts )
+ return pPrevStNd;
+ }
+
+ while( pPrevCnts->Next() )
+ pPrevCnts = pPrevCnts->Next();
+
+ return ( pPrevCnts->GetStartNode() ? pPrevCnts->GetStartNode()
+ : pPrevCnts->GetTable()->GetPrevBoxStartNode( USHRT_MAX, USHRT_MAX ) );
+}
+
+
+static sal_Bool IsBoxEmpty( const SwTableBox *pBox )
+{
+ const SwStartNode *pSttNd = pBox->GetSttNd();
+ if( pSttNd &&
+ pSttNd->GetIndex() + 2 == pSttNd->EndOfSectionIndex() )
+ {
+ const SwCntntNode *pCNd =
+ pSttNd->GetNodes()[pSttNd->GetIndex()+1]->GetCntntNode();
+ if( pCNd && !pCNd->Len() )
+ return sal_True;
+ }
+
+ return sal_False;
+}
+
+sal_uInt16 HTMLTable::GetTopCellSpace( sal_uInt16 nRow, sal_uInt16 nRowSpan,
+ sal_Bool bSwBorders ) const
+{
+ sal_uInt16 nSpace = nCellPadding;
+
+ if( nRow == 0 )
+ {
+ nSpace += nBorder + nCellSpacing;
+ if( bSwBorders )
+ {
+ sal_uInt16 nTopBorderWidth =
+ GetBorderWidth( aTopBorderLine, sal_True );
+ if( nSpace < nTopBorderWidth )
+ nSpace = nTopBorderWidth;
+ }
+ }
+ else if( bSwBorders && ((*pRows)[nRow+nRowSpan-1])->bBottomBorder &&
+ nSpace < MIN_BORDER_DIST )
+ {
+ ASSERT( !nCellPadding, "GetTopCellSpace: CELLPADDING!=0" );
+ // Wenn die Gegenueberliegende Seite umrandet ist muessen
+ // wir zumindest den minimalen Abstand zum Inhalt
+ // beruecksichtigen. (Koennte man zusaetzlich auch an
+ // nCellPadding festmachen.)
+ nSpace = MIN_BORDER_DIST;
+ }
+
+ return nSpace;
+}
+
+sal_uInt16 HTMLTable::GetBottomCellSpace( sal_uInt16 nRow, sal_uInt16 nRowSpan,
+ sal_Bool bSwBorders ) const
+{
+ sal_uInt16 nSpace = nCellSpacing + nCellPadding;
+
+ if( nRow+nRowSpan == nRows )
+ {
+ nSpace += nBorder;
+
+ if( bSwBorders )
+ {
+ sal_uInt16 nBottomBorderWidth =
+ GetBorderWidth( aBottomBorderLine, sal_True );
+ if( nSpace < nBottomBorderWidth )
+ nSpace = nBottomBorderWidth;
+ }
+ }
+ else if( bSwBorders )
+ {
+ if( ((*pRows)[nRow+nRowSpan+1])->bBottomBorder )
+ {
+ sal_uInt16 nBorderWidth = GetBorderWidth( aBorderLine, sal_True );
+ if( nSpace < nBorderWidth )
+ nSpace = nBorderWidth;
+ }
+ else if( nRow==0 && bTopBorder && nSpace < MIN_BORDER_DIST )
+ {
+ ASSERT( GetBorderWidth( aTopBorderLine, sal_True ) > 0,
+ "GetBottomCellSpace: |aTopLine| == 0" );
+ ASSERT( !nCellPadding, "GetBottomCellSpace: CELLPADDING!=0" );
+ // Wenn die Gegenueberliegende Seite umrandet ist muessen
+ // wir zumindest den minimalen Abstand zum Inhalt
+ // beruecksichtigen. (Koennte man zusaetzlich auch an
+ // nCellPadding festmachen.)
+ nSpace = MIN_BORDER_DIST;
+ }
+ }
+
+ return nSpace;
+}
+
+void HTMLTable::FixFrameFmt( SwTableBox *pBox,
+ sal_uInt16 nRow, sal_uInt16 nCol,
+ sal_uInt16 nRowSpan, sal_uInt16 nColSpan,
+ sal_Bool bFirstPara, sal_Bool bLastPara ) const
+{
+ SwFrmFmt *pFrmFmt = 0; // ::com::sun::star::frame::Frame-Format
+ SwVertOrient eVOri = VERT_NONE;
+ const SvxBrushItem *pBGBrush = 0; // Hintergrund
+ sal_Bool bTopLine = sal_False, bBottomLine = sal_False, bLastBottomLine = sal_False;
+ sal_Bool bReUsable = sal_False; // Format nochmals verwendbar?
+ sal_uInt16 nEmptyRows = 0;
+ sal_Bool bHasNumFmt = sal_False;
+ sal_Bool bHasValue = sal_False;
+ sal_uInt32 nNumFmt;
+ double nValue;
+
+ HTMLTableColumn *pColumn = (*pColumns)[nCol];
+
+ if( pBox->GetSttNd() )
+ {
+ // die Hintergrundfarbe/-grafik bestimmen
+ const HTMLTableCell *pCell = GetCell( nRow, nCol );
+ pBGBrush = pCell->GetBGBrush();
+ if( !pBGBrush )
+ {
+ // Wenn die Zelle ueber mehrere Zeilen geht muss ein evtl.
+ // an der Zeile gesetzter Hintergrund an die Zelle uebernommen
+ // werden.
+#ifndef FIX56334
+ // Wenn es sich um eine Tabelle in der Tabelle handelt und
+ // die Zelle ueber die gesamte Heoehe der Tabelle geht muss
+ // ebenfalls der Hintergrund der Zeile uebernommen werden, weil
+ // die Line von der GC (zu Recht) wegoptimiert wird.
+ if( nRowSpan > 1 || (this != pTopTable && nRowSpan==nRows) )
+#else
+ if( nRowSpan > 1 )
+#endif
+ {
+ pBGBrush = ((*pRows)[nRow])->GetBGBrush();
+ if( !pBGBrush && this != pTopTable )
+ {
+ pBGBrush = GetBGBrush();
+ if( !pBGBrush )
+ pBGBrush = GetInhBGBrush();
+ }
+ }
+ }
+
+ bTopLine = 0==nRow && bTopBorder && bFirstPara;
+ if( ((*pRows)[nRow+nRowSpan-1])->bBottomBorder && bLastPara )
+ {
+ nEmptyRows = ((*pRows)[nRow+nRowSpan-1])->GetEmptyRows();
+ if( nRow+nRowSpan == nRows )
+ bLastBottomLine = sal_True;
+ else
+ bBottomLine = sal_True;
+ }
+
+ eVOri = pCell->GetVertOri();
+ bHasNumFmt = pCell->GetNumFmt( nNumFmt );
+ if( bHasNumFmt )
+ bHasValue = pCell->GetValue( nValue );
+
+ if( nColSpan==1 && !bTopLine && !bLastBottomLine && !nEmptyRows &&
+ !pBGBrush && !bHasNumFmt )
+ {
+ pFrmFmt = pColumn->GetFrmFmt( bBottomLine, eVOri );
+ bReUsable = !pFrmFmt;
+ }
+ }
+
+ if( !pFrmFmt )
+ {
+ pFrmFmt = pBox->ClaimFrmFmt();
+
+ // die Breite der Box berechnen
+ SwTwips nFrmWidth = (SwTwips)pLayoutInfo->GetColumn(nCol)
+ ->GetRelColWidth();
+ for( sal_uInt16 i=1; i<nColSpan; i++ )
+ nFrmWidth += (SwTwips)pLayoutInfo->GetColumn(nCol+i)
+ ->GetRelColWidth();
+
+ // die Umrandung nur an Edit-Boxen setzen (bei der oberen und unteren
+ // Umrandung muss beruecks. werden, ob es sich um den ersten oder
+ // letzen Absatz der Zelle handelt)
+ if( pBox->GetSttNd() )
+ {
+ sal_Bool bSet = (nCellPadding > 0);
+
+ SvxBoxItem aBoxItem;
+ long nInnerFrmWidth = nFrmWidth;
+
+ if( bTopLine )
+ {
+ aBoxItem.SetLine( &aTopBorderLine, BOX_LINE_TOP );
+ bSet = sal_True;
+ }
+ if( bLastBottomLine )
+ {
+ aBoxItem.SetLine( &aBottomBorderLine, BOX_LINE_BOTTOM );
+ bSet = sal_True;
+ }
+ else if( bBottomLine )
+ {
+ if( nEmptyRows && !aBorderLine.GetInWidth() )
+ {
+ // Leere Zeilen koennen zur Zeit nur dann ueber
+ // dicke Linien simuliert werden, wenn die Linie
+ // einfach ist.
+ SvxBorderLine aThickBorderLine( aBorderLine );
+
+ sal_uInt16 nBorderWidth = aBorderLine.GetOutWidth();
+ nBorderWidth *= (nEmptyRows + 1);
+ SvxCSS1Parser::SetBorderWidth( aThickBorderLine,
+ nBorderWidth, sal_False );
+ aBoxItem.SetLine( &aThickBorderLine, BOX_LINE_BOTTOM );
+ }
+ else
+ {
+ aBoxItem.SetLine( &aBorderLine, BOX_LINE_BOTTOM );
+ }
+ bSet = sal_True;
+ }
+ if( ((*pColumns)[nCol])->bLeftBorder )
+ {
+ const SvxBorderLine& rBorderLine =
+ 0==nCol ? aLeftBorderLine : aBorderLine;
+ aBoxItem.SetLine( &rBorderLine, BOX_LINE_LEFT );
+ nInnerFrmWidth -= GetBorderWidth( rBorderLine );
+ bSet = sal_True;
+ }
+ if( nCol+nColSpan == nCols && bRightBorder )
+ {
+ aBoxItem.SetLine( &aRightBorderLine, BOX_LINE_RIGHT );
+ nInnerFrmWidth -= GetBorderWidth( aRightBorderLine );
+ bSet = sal_True;
+ }
+
+ if( bSet )
+ {
+ // fix #30588#: BorderDist nicht mehr Bestandteil
+ // einer Zelle mit fixer Breite
+ sal_uInt16 nBDist =
+ (2*nCellPadding <= nInnerFrmWidth) ? nCellPadding
+ : (nInnerFrmWidth / 2);
+ // wir setzen das Item nur, wenn es eine Umrandung gibt
+ // oder eine ::com::sun::star::sheet::Border-Distanz vorgegeben ist. Fehlt letztere,
+ // dann gibt es eine Umrandung, und wir muessen die Distanz
+ // setzen
+ aBoxItem.SetDistance( nBDist ? nBDist : MIN_BORDER_DIST );
+ pFrmFmt->SetAttr( aBoxItem );
+ }
+ else
+ pFrmFmt->ResetAttr( RES_BOX );
+
+ if( pBGBrush )
+ {
+ pFrmFmt->SetAttr( *pBGBrush );
+ }
+ else
+ pFrmFmt->ResetAttr( RES_BACKGROUND );
+
+ // fix #41003#: Format nur setzten, wenn es auch einen Value
+ // gibt oder die Box leer ist.
+ if( bHasNumFmt && (bHasValue || IsBoxEmpty(pBox)) )
+ {
+ sal_Bool bLock = pFrmFmt->GetDoc()->GetNumberFormatter()
+ ->IsTextFormat( nNumFmt );
+ SfxItemSet aItemSet( *pFrmFmt->GetAttrSet().GetPool(),
+ RES_BOXATR_FORMAT, RES_BOXATR_VALUE );
+ SvxAdjust eAdjust = SVX_ADJUST_END;
+ SwCntntNode *pCNd = 0;
+ if( !bLock )
+ {
+ const SwStartNode *pSttNd = pBox->GetSttNd();
+ pCNd = pSttNd->GetNodes()[pSttNd->GetIndex()+1]
+ ->GetCntntNode();
+ const SfxPoolItem *pItem;
+ if( pCNd && pCNd->GetpSwAttrSet() &&
+ SFX_ITEM_SET==pCNd->GetpSwAttrSet()->GetItemState(
+ RES_PARATR_ADJUST, sal_False, &pItem ) )
+ {
+ eAdjust = ((const SvxAdjustItem *)pItem)
+ ->GetAdjust();
+ }
+ }
+ aItemSet.Put( SwTblBoxNumFormat(nNumFmt) );
+ if( bHasValue )
+ aItemSet.Put( SwTblBoxValue(nValue) );
+
+ if( bLock )
+ pFrmFmt->LockModify();
+ pFrmFmt->SetAttr( aItemSet );
+ if( bLock )
+ pFrmFmt->UnlockModify();
+ else if( pCNd && SVX_ADJUST_END != eAdjust )
+ {
+ SvxAdjustItem aAdjItem( eAdjust );
+ pCNd->SetAttr( aAdjItem );
+ }
+ }
+ else
+ pFrmFmt->ResetAttr( RES_BOXATR_FORMAT );
+
+ ASSERT( eVOri != VERT_TOP, "VERT_TOP ist nicht erlaubt!" );
+ if( VERT_NONE != eVOri )
+ {
+ pFrmFmt->SetAttr( SwFmtVertOrient( 0, eVOri ) );
+ }
+ else
+ pFrmFmt->ResetAttr( RES_VERT_ORIENT );
+
+ if( bReUsable )
+ pColumn->SetFrmFmt( pFrmFmt, bBottomLine, eVOri );
+ }
+ else
+ {
+ pFrmFmt->ResetAttr( RES_BOX );
+ pFrmFmt->ResetAttr( RES_BACKGROUND );
+ pFrmFmt->ResetAttr( RES_VERT_ORIENT );
+ pFrmFmt->ResetAttr( RES_BOXATR_FORMAT );
+ }
+ }
+ else
+ {
+ ASSERT( pBox->GetSttNd() ||
+ SFX_ITEM_SET!=pFrmFmt->GetAttrSet().GetItemState(
+ RES_VERT_ORIENT, sal_False ),
+ "Box ohne Inhalt hat vertikale Ausrichtung" );
+ pBox->ChgFrmFmt( (SwTableBoxFmt*)pFrmFmt );
+ }
+
+}
+
+void HTMLTable::FixFillerFrameFmt( SwTableBox *pBox, sal_Bool bRight ) const
+{
+ SwFrmFmt *pFrmFmt = pBox->ClaimFrmFmt();
+
+ if( bFillerTopBorder || bFillerBottomBorder ||
+ (!bRight && bInhLeftBorder) || (bRight && bInhRightBorder) )
+ {
+ SvxBoxItem aBoxItem;
+ if( bFillerTopBorder )
+ aBoxItem.SetLine( &aTopBorderLine, BOX_LINE_TOP );
+ if( bFillerBottomBorder )
+ aBoxItem.SetLine( &aBottomBorderLine, BOX_LINE_BOTTOM );
+ if( !bRight && bInhLeftBorder )
+ aBoxItem.SetLine( &aInhLeftBorderLine, BOX_LINE_LEFT );
+ if( bRight && bInhRightBorder )
+ aBoxItem.SetLine( &aInhRightBorderLine, BOX_LINE_RIGHT );
+ aBoxItem.SetDistance( MIN_BORDER_DIST );
+ pFrmFmt->SetAttr( aBoxItem );
+ }
+ else
+ {
+ pFrmFmt->ResetAttr( RES_BOX );
+ }
+
+ if( GetInhBGBrush() )
+ pFrmFmt->SetAttr( *GetInhBGBrush() );
+ else
+ pFrmFmt->ResetAttr( RES_BACKGROUND );
+
+ pFrmFmt->ResetAttr( RES_VERT_ORIENT );
+ pFrmFmt->ResetAttr( RES_BOXATR_FORMAT );
+}
+
+SwTableBox *HTMLTable::NewTableBox( const SwStartNode *pStNd,
+ SwTableLine *pUpper ) const
+{
+ SwTableBox *pBox;
+
+ if( pTopTable->pBox1 &&
+ pTopTable->pBox1->GetSttNd() == pStNd )
+ {
+ // wenn der StartNode dem StartNode der initial angelegten Box
+ // entspricht nehmen wir diese Box
+ pBox = pTopTable->pBox1;
+ pBox->SetUpper( pUpper );
+ pTopTable->pBox1 = 0;
+ }
+ else
+ pBox = new SwTableBox( pBoxFmt, *pStNd, pUpper );
+
+ return pBox;
+}
+
+
+static void ResetLineFrmFmtAttrs( SwFrmFmt *pFrmFmt )
+{
+ pFrmFmt->ResetAttr( RES_FRM_SIZE );
+ pFrmFmt->ResetAttr( RES_BACKGROUND );
+ ASSERT( SFX_ITEM_SET!=pFrmFmt->GetAttrSet().GetItemState(
+ RES_VERT_ORIENT, sal_False ),
+ "Zeile hat vertikale Ausrichtung" );
+}
+
+// !!! kann noch vereinfacht werden
+SwTableLine *HTMLTable::MakeTableLine( SwTableBox *pUpper,
+ sal_uInt16 nTopRow, sal_uInt16 nLeftCol,
+ sal_uInt16 nBottomRow, sal_uInt16 nRightCol )
+{
+ SwTableLine *pLine;
+ if( this==pTopTable && !pUpper && 0==nTopRow )
+ pLine = (pSwTable->GetTabLines())[0];
+ else
+ pLine = new SwTableLine( pLineFrmFmtNoHeight ? pLineFrmFmtNoHeight
+ : pLineFmt,
+ 0, pUpper );
+
+ HTMLTableRow *pTopRow = (*pRows)[nTopRow];
+ sal_uInt16 nHeight = pTopRow->GetHeight();
+ const SvxBrushItem *pBGBrush = 0;
+#ifndef FIX56334
+ if( this == pTopTable || nTopRow>0 || nBottomRow<nRows )
+ {
+ // An der Line eine Frabe zu setzen macht keinen Sinn, wenn sie
+ // die auesserste und gleichzeitig einzige Zeile einer Tabelle in
+ // der Tabelle ist.
+#endif
+ pBGBrush = pTopRow->GetBGBrush();
+
+ if( !pBGBrush && this != pTopTable )
+ {
+ // Ein an einer Tabellen in der Tabelle gesetzter Hintergrund
+ // wird an den Rows gesetzt. Das gilt auch fuer den Hintergrund
+ // der Zelle, in dem die Tabelle vorkommt.
+ pBGBrush = GetBGBrush();
+ if( !pBGBrush )
+ pBGBrush = GetInhBGBrush();
+ }
+#ifndef FIX56334
+ }
+#endif
+ if( nTopRow==nBottomRow-1 && (nHeight || pBGBrush) )
+ {
+ SwTableLineFmt *pFrmFmt = (SwTableLineFmt*)pLine->ClaimFrmFmt();
+ ResetLineFrmFmtAttrs( pFrmFmt );
+
+ if( nHeight )
+ {
+ // Tabellenhoehe einstellen. Da es sich um eine
+ // Mindesthoehe handelt, kann sie genauso wie in
+ // Netscape berechnet werden, also ohne Beruecksichtigung
+ // der tatsaechlichen Umrandungsbreite.
+ nHeight += GetTopCellSpace( nTopRow, 1, sal_False ) +
+ GetBottomCellSpace( nTopRow, 1, sal_False );
+
+ pFrmFmt->SetAttr( SwFmtFrmSize( ATT_MIN_SIZE, 0, nHeight ) );
+ }
+
+ if( pBGBrush )
+ {
+ pFrmFmt->SetAttr( *pBGBrush );
+ }
+
+ }
+ else if( !pLineFrmFmtNoHeight )
+ {
+ // sonst muessen wir die Hoehe aus dem Attribut entfernen
+ // und koennen uns das Format merken
+ pLineFrmFmtNoHeight = (SwTableLineFmt*)pLine->ClaimFrmFmt();
+
+ ResetLineFrmFmtAttrs( pLineFrmFmtNoHeight );
+ }
+
+
+ SwTableBoxes& rBoxes = pLine->GetTabBoxes();
+
+ sal_uInt16 nStartCol = nLeftCol;
+ while( nStartCol<nRightCol )
+ {
+ for( sal_uInt16 nRow=nTopRow; nRow<nBottomRow; nRow++ )
+ (*pRows)[nRow]->SetSplitable( sal_True );
+
+ sal_uInt16 nCol = nStartCol;
+ sal_uInt16 nSplitCol = nRightCol;
+ sal_Bool bSplitted = sal_False;
+ while( !bSplitted )
+ {
+ ASSERT( nCol < nRightCol, "Zu weit gelaufen" );
+
+ // Kann hinter der aktuellen HTML-Tabellen-Spalte gesplittet
+ // werden? Wenn ja, koennte der enstehende Bereich auch noch
+ // in Zeilen zerlegt werden, wenn man die naechste Spalte
+ // hinzunimmt?
+ sal_Bool bSplit = sal_True;
+ sal_Bool bHoriSplitMayContinue = sal_False;
+ sal_Bool bHoriSplitPossible = sal_False;
+ for( sal_uInt16 nRow=nTopRow; nRow<nBottomRow; nRow++ )
+ {
+ HTMLTableCell *pCell = GetCell(nRow,nCol);
+ // Gibt es in allen vorhergehenden Spalten und der gerade
+ // btrachteten Zeile eine gemeinsame Zeile?
+ sal_Bool bHoriSplit = (*pRows)[nRow]->IsSplitable() &&
+ nRow+1 < nBottomRow &&
+ 1 == pCell->GetRowSpan();
+ (*pRows)[nRow]->SetSplitable( bHoriSplit );
+
+ bSplit &= ( 1 == pCell->GetColSpan() );
+ if( bSplit )
+ {
+ bHoriSplitPossible |= bHoriSplit;
+
+ // Gilt das eventuell auch noch, wenn man die naechste
+ // Spalte hinzunimmt?
+ bHoriSplit &= (nCol+1 < nRightCol &&
+ 1 == GetCell(nRow,nCol+1)->GetRowSpan());
+ bHoriSplitMayContinue |= bHoriSplit;
+ }
+ }
+
+#ifndef PRODUCT
+ if( nCol == nRightCol-1 )
+ {
+ ASSERT( bSplit, "Split-Flag falsch" );
+ ASSERT( !bHoriSplitMayContinue,
+ "HoriSplitMayContinue-Flag falsch" );
+ HTMLTableCell *pCell = GetCell( nTopRow, nStartCol );
+ ASSERT( pCell->GetRowSpan() != (nBottomRow-nTopRow) ||
+ !bHoriSplitPossible, "HoriSplitPossible-Flag falsch" );
+ }
+#endif
+ ASSERT( !bHoriSplitMayContinue || bHoriSplitPossible,
+ "bHoriSplitMayContinue, aber nicht bHoriSplitPossible" );
+
+ if( bSplit )
+ {
+ SwTableBox* pBox = 0;
+ HTMLTableCell *pCell = GetCell( nTopRow, nStartCol );
+ if( pCell->GetRowSpan() == (nBottomRow-nTopRow) &&
+ pCell->GetColSpan() == (nCol+1-nStartCol) )
+ {
+ // Die HTML-Tabellen-Zellen bilden genau eine Box.
+ // Dann muss hinter der Box gesplittet werden
+ nSplitCol = nCol + 1;
+
+ // eventuell ist die Zelle noch leer
+ if( !pCell->GetContents() )
+ {
+ ASSERT( 1==pCell->GetRowSpan(),
+ "leere Box ist nicht 1 Zeile hoch" );
+ const SwStartNode* pPrevStNd =
+ GetPrevBoxStartNode( nTopRow, nStartCol );
+ HTMLTableCnts *pCnts = new HTMLTableCnts(
+ pParser->InsertTableSection(pPrevStNd) );
+ SwHTMLTableLayoutCnts *pCntsLayoutInfo =
+ pCnts->CreateLayoutInfo();
+
+ pCell->SetContents( pCnts );
+ pLayoutInfo->GetCell( nTopRow, nStartCol )
+ ->SetContents( pCntsLayoutInfo );
+
+ // ggf. COLSPAN beachten
+ for( sal_uInt16 j=nStartCol+1; j<nSplitCol; j++ )
+ {
+ GetCell(nTopRow,j)->SetContents( pCnts );
+ pLayoutInfo->GetCell( nTopRow, j )
+ ->SetContents( pCntsLayoutInfo );
+ }
+ }
+ pBox = MakeTableBox( pLine, pCell->GetContents(),
+ nTopRow, nStartCol,
+ nBottomRow, nSplitCol );
+ bSplitted = sal_True;
+ }
+ else if( bHoriSplitPossible && bHoriSplitMayContinue )
+ {
+ // Bis hierher lies sich die Box noch in Zeilen zerlegen
+ // und evetutell gillt das auch noch, wenn man die
+ // naechste hinzunimmt. Dann suchen wir weiter, merken
+ // uns aber die Position als moegliche Split-Position.
+ nSplitCol = nCol + 1;
+ }
+ else
+ {
+ // Wenn sich die Box bis hier her noch in Zeilen
+ // zerlegen lies, durch hinzunahmen noch einer
+ // Spalte aber nicht mehr, dann wird genau hinter
+ // dieser Splate gesplittet. (#55447#: Das gilt
+ // insbesondere auch fuer die letzte Spalte).
+ // Hinter der aktuellen Spalte wurd ausserdem gesplittet,
+ // wenn bisher noch gar keine andere Split-Position
+ // gefunden wurde.
+ // In allen anderen Faellen wird die bisher gemerkte
+ // Split-Position benutzt.
+ if( bHoriSplitPossible || nSplitCol > nCol+1 )
+ {
+ ASSERT( !bHoriSplitMayContinue,
+ "bHoriSplitMayContinue==sal_True" );
+ ASSERT( bHoriSplitPossible || nSplitCol == nRightCol,
+ "bHoriSplitPossible-Flag sollte gesetzt sein" );
+
+ nSplitCol = nCol + 1;
+ }
+
+ // Wenn die enstehende Box nicht mehr in Zeilen zerlegt
+ // werden kann, wenn man die naechste Spalte hinzunimmt
+ // muss man ebenfalls Splitten.
+ pBox = MakeTableBox( pLine, nTopRow, nStartCol,
+ nBottomRow, nSplitCol );
+ bSplitted = sal_True;
+ }
+ if( pBox )
+ rBoxes.C40_INSERT( SwTableBox, pBox, rBoxes.Count() );
+ }
+ nCol++;
+ }
+ nStartCol = nSplitCol;
+ }
+
+ return pLine;
+}
+
+// Fuellen einer SwTableBox
+// !!! kann noch vereinfacht werden
+SwTableBox *HTMLTable::MakeTableBox( SwTableLine *pUpper,
+ sal_uInt16 nTopRow, sal_uInt16 nLeftCol,
+ sal_uInt16 nBottomRow, sal_uInt16 nRightCol )
+{
+ SwTableBox *pBox = new SwTableBox( pBoxFmt, 0, pUpper );
+ FixFrameFmt( pBox, nTopRow, nLeftCol,
+ nTopRow-nBottomRow, nRightCol-nLeftCol );
+
+ SwTableLines& rLines = pBox->GetTabLines();
+ sal_Bool bSplitted = sal_False;
+
+ while( !bSplitted )
+ {
+ sal_uInt16 nStartRow = nTopRow;
+ for( sal_uInt16 i=nTopRow; i<nBottomRow; i++ )
+ {
+ // kann hinter der aktuellen HTML-Tabellen-Zeile gesplittet werden?
+ sal_Bool bSplit = sal_True;
+ HTMLTableRow *pRow = (*pRows)[i];
+ for( sal_uInt16 j=nLeftCol; j<nRightCol; j++ )
+ {
+ bSplit = ( 1 == pRow->GetCell(j)->GetRowSpan() );
+ if( !bSplit )
+ break;
+ }
+ if( bSplit && (nStartRow>nTopRow || i+1<nBottomRow) )
+ {
+ // kein Spezialfall fuer die erste Zeile neotig, da wir hier
+ // in einer Box und nicht in der Tabelle sind
+ SwTableLine *pLine = MakeTableLine( pBox, nStartRow, nLeftCol, i+1, nRightCol );
+
+ rLines.C40_INSERT( SwTableLine, pLine, rLines.Count() );
+
+ nStartRow = i+1;
+ bSplitted = sal_True;
+ }
+ }
+ if( !bSplitted )
+ {
+ // jetzt muessen wir die Zelle mit Gewalt Teilen
+
+ nStartRow = nTopRow;
+ while( nStartRow < nBottomRow )
+ {
+ sal_uInt16 nMaxRowSpan=0;
+ HTMLTableRow *pStartRow = (*pRows)[nStartRow];
+ HTMLTableCell *pCell;
+ for( i=nLeftCol; i<nRightCol; i++ )
+ if( ( pCell=pStartRow->GetCell(i),
+ pCell->GetRowSpan() > nMaxRowSpan ) )
+ nMaxRowSpan = pCell->GetRowSpan();
+
+ nStartRow += nMaxRowSpan;
+ if( nStartRow<nBottomRow )
+ {
+ HTMLTableRow *pPrevRow = (*pRows)[nStartRow-1];
+ for( i=nLeftCol; i<nRightCol; i++ )
+ {
+ if( pPrevRow->GetCell(i)->GetRowSpan() > 1 )
+ {
+ // Die Inhalte sind in der Zeile darueber (also
+ // der durch FixRowSpan bearbeiteten) verankert
+ // und koennen/mussen deshalb in den mit
+ // ProtectRowSpan bearbeitetebn Zeilen
+ // geloescht oder kopiert werden
+ HTMLTableCell *pCell = GetCell( nStartRow, i );
+ FixRowSpan( nStartRow-1, i, pCell->GetContents() );
+ ProtectRowSpan( nStartRow, i,
+ pCell->GetRowSpan() );
+ }
+ }
+ }
+ }
+ // und jetzt nochmal von vorne ...
+ }
+ }
+
+ return pBox;
+}
+
+
+SwTableBox *HTMLTable::MakeTableBox( SwTableLine *pUpper,
+ HTMLTableCnts *pCnts,
+ sal_uInt16 nTopRow, sal_uInt16 nLeftCol,
+ sal_uInt16 nBottomRow, sal_uInt16 nRightCol )
+{
+ SwTableBox *pBox;
+ sal_uInt16 nColSpan = nRightCol - nLeftCol;
+ sal_uInt16 nRowSpan = nBottomRow - nTopRow;
+
+ if( !pCnts->Next() )
+ {
+ // nur eine Inhalts-Section
+ if( pCnts->GetStartNode() )
+ {
+ // und die ist keine Tabelle
+ pBox = NewTableBox( pCnts->GetStartNode(), pUpper );
+ pCnts->SetTableBox( pBox );
+ }
+ else
+ {
+ pCnts->GetTable()->InheritVertBorders( this, nLeftCol,
+ nRightCol-nLeftCol );
+ // und die ist eine Tabelle: dann bauen wir eine neue
+ // Box und fuegen die Zeilen der Tabelle in die Zeilen
+ // der Box ein
+ pBox = new SwTableBox( pBoxFmt, 0, pUpper );
+ sal_uInt16 nAbs, nRel;
+ pLayoutInfo->GetAvail( nLeftCol, nColSpan, nAbs, nRel );
+ sal_uInt16 nLSpace = pLayoutInfo->GetLeftCellSpace( nLeftCol, nColSpan );
+ sal_uInt16 nRSpace = pLayoutInfo->GetRightCellSpace( nLeftCol, nColSpan );
+ sal_uInt16 nInhSpace = pLayoutInfo->GetInhCellSpace( nLeftCol, nColSpan );
+ pCnts->GetTable()->MakeTable( pBox, nAbs, nRel, nLSpace, nRSpace,
+ nInhSpace );
+ }
+ }
+ else
+ {
+ // mehrere Inhalts Sections: dann brauchen wir eine Box mit Zeilen
+ pBox = new SwTableBox( pBoxFmt, 0, pUpper );
+ SwTableLines& rLines = pBox->GetTabLines();
+ sal_Bool bFirstPara = sal_True;
+
+ while( pCnts )
+ {
+ if( pCnts->GetStartNode() )
+ {
+ // normale Absaetze werden zu einer Box in einer Zeile
+ SwTableLine *pLine =
+ new SwTableLine( pLineFrmFmtNoHeight ? pLineFrmFmtNoHeight
+ : pLineFmt, 0, pBox );
+ if( !pLineFrmFmtNoHeight )
+ {
+ // Wenn es noch kein Line-Format ohne Hoehe gibt, koennen
+ // wir uns dieses her als soleches merken
+ pLineFrmFmtNoHeight = (SwTableLineFmt*)pLine->ClaimFrmFmt();
+
+ ResetLineFrmFmtAttrs( pLineFrmFmtNoHeight );
+ }
+
+ SwTableBox* pCntBox = NewTableBox( pCnts->GetStartNode(),
+ pLine );
+ pCnts->SetTableBox( pCntBox );
+ FixFrameFmt( pCntBox, nTopRow, nLeftCol, nRowSpan, nColSpan,
+ bFirstPara, 0==pCnts->Next() );
+ pLine->GetTabBoxes().C40_INSERT( SwTableBox, pCntBox,
+ pLine->GetTabBoxes().Count() );
+
+ rLines.C40_INSERT( SwTableLine, pLine, rLines.Count() );
+ }
+ else
+ {
+ pCnts->GetTable()->InheritVertBorders( this, nLeftCol,
+ nRightCol-nLeftCol );
+ // Tabellen werden direkt eingetragen
+ sal_uInt16 nAbs, nRel;
+ pLayoutInfo->GetAvail( nLeftCol, nColSpan, nAbs, nRel );
+ sal_uInt16 nLSpace = pLayoutInfo->GetLeftCellSpace( nLeftCol,
+ nColSpan );
+ sal_uInt16 nRSpace = pLayoutInfo->GetRightCellSpace( nLeftCol,
+ nColSpan );
+ sal_uInt16 nInhSpace = pLayoutInfo->GetInhCellSpace( nLeftCol, nColSpan );
+ pCnts->GetTable()->MakeTable( pBox, nAbs, nRel, nLSpace,
+ nRSpace, nInhSpace );
+ }
+
+ pCnts = pCnts->Next();
+ bFirstPara = sal_False;
+ }
+ }
+
+ FixFrameFmt( pBox, nTopRow, nLeftCol, nRowSpan, nColSpan );
+
+ return pBox;
+}
+
+void HTMLTable::InheritBorders( const HTMLTable *pParent,
+ sal_uInt16 nRow, sal_uInt16 nCol,
+ sal_uInt16 nRowSpan, sal_uInt16 nColSpan,
+ sal_Bool bFirstPara, sal_Bool bLastPara )
+{
+ ASSERT( nRows>0 && nCols>0 && nCurRow==nRows,
+ "Wurde CloseTable nicht aufgerufen?" );
+
+ // Die Child-Tabelle muss einen Rahmen bekommen, wenn die umgebende
+ // Zelle einen Rand an der betreffenden Seite besitzt.
+ // Der obere bzw. untere Rand wird nur gesetzt, wenn die Tabelle
+ // ale erster bzw. letzter Absatz in der Zelle vorkommt. Ansonsten
+ // Fuer den linken/rechten Rand kann noch nicht entschieden werden,
+ // ob eine Umrandung der Tabelle noetig/moeglich ist, weil das davon
+ // abhaengt, ob "Filler"-Zellen eingefuegt werden. Hier werden deshalb
+ // erstmal nur Informationen gesammelt
+ //
+ if( 0==nRow && pParent->bTopBorder && bFirstPara )
+ {
+ bTopBorder = sal_True;
+ bFillerTopBorder = sal_True; // auch Filler bekommt eine Umrandung
+ aTopBorderLine = pParent->aTopBorderLine;
+ }
+ if( ((*pParent->pRows)[nRow+nRowSpan-1])->bBottomBorder && bLastPara )
+ {
+ ((*pRows)[nRows-1])->bBottomBorder = sal_True;
+ bFillerBottomBorder = sal_True; // auch Filler bekommt eine Umrandung
+ aBottomBorderLine =
+ nRow+nRowSpan==pParent->nRows ? pParent->aBottomBorderLine
+ : pParent->aBorderLine;
+ }
+
+
+ // Die Child Tabelle darf keinen oberen oder linken Rahmen bekommen,
+ // wenn der bereits durch die umgebende Tabelle gesetzt ist.
+ // Sie darf jedoch immer einen oberen Rand bekommen, wenn die Tabelle
+ // nicht der erste Absatz in der Zelle ist.
+ bTopAlwd = ( !bFirstPara || (pParent->bTopAlwd &&
+ (0==nRow || !((*pParent->pRows)[nRow-1])->bBottomBorder)) );
+
+ // die Child-Tabelle muss die Farbe der Zelle erben, in der sie
+ // vorkommt, wenn sie keine eigene besitzt
+ const SvxBrushItem *pInhBG = pParent->GetCell(nRow,nCol)->GetBGBrush();
+ if( !pInhBG && pParent != pTopTable &&
+ pParent->GetCell(nRow,nCol)->GetRowSpan() == pParent->nRows )
+ {
+ // die ganze umgebende Tabelle ist eine Tabelle in der Tabelle
+ // und besteht nur aus einer Line, die bei der GC (zu Recht)
+ // wegoptimiert wird. Deshalb muss der Hintergrund der Line in
+ // diese Tabelle uebernommen werden.
+ pInhBG = ((*pParent->pRows)[nRow])->GetBGBrush();
+ if( !pInhBG )
+ pInhBG = pParent->GetBGBrush();
+ if( !pInhBG )
+ pInhBG = pParent->GetInhBGBrush();
+ }
+ if( pInhBG )
+ pInhBGBrush = new SvxBrushItem( *pInhBG );
+}
+
+void HTMLTable::InheritVertBorders( const HTMLTable *pParent,
+ sal_uInt16 nCol, sal_uInt16 nColSpan )
+{
+ sal_uInt16 nInhLeftBorderWidth = 0;
+ sal_uInt16 nInhRightBorderWidth = 0;
+
+ if( nCol+nColSpan==pParent->nCols && pParent->bRightBorder )
+ {
+ bInhRightBorder = sal_True; // erstmal nur merken
+ aInhRightBorderLine = pParent->aRightBorderLine;
+ nInhRightBorderWidth =
+ GetBorderWidth( aInhRightBorderLine, sal_True ) + MIN_BORDER_DIST;
+ }
+
+ if( ((*pParent->pColumns)[nCol])->bLeftBorder )
+ {
+ bInhLeftBorder = sal_True; // erstmal nur merken
+ aInhLeftBorderLine = 0==nCol ? pParent->aLeftBorderLine
+ : pParent->aBorderLine;
+ nInhLeftBorderWidth =
+ GetBorderWidth( aInhLeftBorderLine, sal_True ) + MIN_BORDER_DIST;
+ }
+
+ if( !bInhLeftBorder && (bFillerTopBorder || bFillerBottomBorder) )
+ nInhLeftBorderWidth = 2 * MIN_BORDER_DIST;
+ if( !bInhRightBorder && (bFillerTopBorder || bFillerBottomBorder) )
+ nInhRightBorderWidth = 2 * MIN_BORDER_DIST;
+ pLayoutInfo->SetInhBorderWidths( nInhLeftBorderWidth,
+ nInhRightBorderWidth );
+
+ bRightAlwd = ( pParent->bRightAlwd &&
+ (nCol+nColSpan==pParent->nCols ||
+ !((*pParent->pColumns)[nCol+nColSpan])->bLeftBorder) );
+}
+
+void HTMLTable::SetBorders()
+{
+ sal_uInt16 i;
+ for( i=1; i<nCols; i++ )
+ if( HTML_TR_ALL==eRules || HTML_TR_COLS==eRules ||
+ ((HTML_TR_ROWS==eRules || HTML_TR_GROUPS==eRules) &&
+ ((*pColumns)[i-1])->IsEndOfGroup()) )
+ ((*pColumns)[i])->bLeftBorder = sal_True;
+
+ for( i=0; i<nRows-1; i++ )
+ if( HTML_TR_ALL==eRules || HTML_TR_ROWS==eRules ||
+ ((HTML_TR_COLS==eRules || HTML_TR_GROUPS==eRules) &&
+ ((*pRows)[i])->IsEndOfGroup()) )
+ ((*pRows)[i])->bBottomBorder = sal_True;
+
+ if( bTopAlwd && (HTML_TF_ABOVE==eFrame || HTML_TF_HSIDES==eFrame ||
+ HTML_TF_BOX==eFrame) )
+ bTopBorder = sal_True;
+ if( HTML_TF_BELOW==eFrame || HTML_TF_HSIDES==eFrame ||
+ HTML_TF_BOX==eFrame )
+ ((*pRows)[nRows-1])->bBottomBorder = sal_True;
+ if( /*bRightAlwd &&*/ (HTML_TF_RHS==eFrame || HTML_TF_VSIDES==eFrame ||
+ HTML_TF_BOX==eFrame) )
+ bRightBorder = sal_True;
+ if( HTML_TF_LHS==eFrame || HTML_TF_VSIDES==eFrame || HTML_TF_BOX==eFrame )
+ ((*pColumns)[0])->bLeftBorder = sal_True;
+
+ for( i=0; i<nRows; i++ )
+ {
+ HTMLTableRow *pRow = (*pRows)[i];
+ for( sal_uInt16 j=0; j<nCols; j++ )
+ {
+ HTMLTableCell *pCell = pRow->GetCell(j);
+ if( pCell->GetContents() )
+ {
+ HTMLTableCnts *pCnts = pCell->GetContents();
+ sal_Bool bFirstPara = sal_True;
+ while( pCnts )
+ {
+ HTMLTable *pTable = pCnts->GetTable();
+ if( pTable && !pTable->BordersSet() )
+ {
+ pTable->InheritBorders( this, i, j,
+ pCell->GetRowSpan(),
+ pCell->GetColSpan(),
+ bFirstPara,
+ 0==pCnts->Next() );
+ pTable->SetBorders();
+ }
+ bFirstPara = sal_False;
+ pCnts = pCnts->Next();
+ }
+ }
+ }
+ }
+
+ bBordersSet = sal_True;
+}
+
+sal_uInt16 HTMLTable::GetBorderWidth( const SvxBorderLine& rBLine,
+ sal_Bool bWithDistance ) const
+{
+ sal_uInt16 nWidth = rBLine.GetOutWidth() + rBLine.GetInWidth() +
+ rBLine.GetDistance();
+ if( bWithDistance )
+ {
+ if( nCellPadding )
+ nWidth += nCellPadding;
+ else if( nWidth )
+ nWidth += MIN_BORDER_DIST;
+ }
+
+ return nWidth;
+}
+
+inline HTMLTableCell *HTMLTable::GetCell( sal_uInt16 nRow,
+ sal_uInt16 nCell ) const
+{
+ ASSERT( nRow<pRows->Count(),
+ "ungueltiger Zeilen-Index in HTML-Tabelle" );
+ return ((*pRows)[nRow])->GetCell( nCell );
+}
+
+
+
+SvxAdjust HTMLTable::GetInheritedAdjust() const
+{
+ SvxAdjust eAdjust = (nCurCol<nCols ? ((*pColumns)[nCurCol])->GetAdjust()
+ : SVX_ADJUST_END );
+ if( SVX_ADJUST_END==eAdjust )
+ eAdjust = ((*pRows)[nCurRow])->GetAdjust();
+
+ return eAdjust;
+}
+
+SwVertOrient HTMLTable::GetInheritedVertOri() const
+{
+ // VERT_TOP ist der default!
+ SwVertOrient eVOri = ((*pRows)[nCurRow])->GetVertOri();
+ if( VERT_TOP==eVOri && nCurCol<nCols )
+ eVOri = ((*pColumns)[nCurCol])->GetVertOri();
+ if( VERT_TOP==eVOri )
+ eVOri = eVertOri;
+
+ ASSERT( eVertOri != VERT_TOP, "VERT_TOP ist nicht erlaubt!" );
+ return eVOri;
+}
+
+void HTMLTable::InsertCell( HTMLTableCnts *pCnts,
+ sal_uInt16 nRowSpan, sal_uInt16 nColSpan,
+ sal_uInt16 nWidth, sal_Bool bRelWidth, sal_uInt16 nHeight,
+ SwVertOrient eVertOri, SvxBrushItem *pBGBrush,
+ sal_Bool bHasNumFmt, sal_uInt32 nNumFmt,
+ sal_Bool bHasValue, double nValue, sal_Bool bNoWrap )
+{
+ if( !nRowSpan || (sal_uInt32)nCurRow + nRowSpan > USHRT_MAX )
+ nRowSpan = 1;
+
+ if( !nColSpan || (sal_uInt32)nCurCol + nColSpan > USHRT_MAX )
+ nColSpan = 1;
+
+ sal_uInt16 nColsReq = nCurCol + nColSpan; // benoetigte Spalten
+ sal_uInt16 nRowsReq = nCurRow + nRowSpan; // benoetigte Zeilen
+ sal_uInt16 i, j;
+
+ // falls wir mehr Spalten benoetigen als wir zur Zeit haben,
+ // muessen wir in allen Zeilen noch Zellen hinzufuegen
+ if( nCols < nColsReq )
+ {
+ for( i=nCols; i<nColsReq; i++ )
+ pColumns->Insert( new HTMLTableColumn, pColumns->Count() );
+ for( i=0; i<nRows; i++ )
+ ((*pRows)[i])->Expand( nColsReq, i<nCurRow );
+ nCols = nColsReq;
+ ASSERT( pColumns->Count()==nCols,
+ "Anzahl der Spalten nach Expandieren stimmt nicht" );
+ }
+ if( nColsReq > nFilledCols )
+ nFilledCols = nColsReq;
+
+ // falls wir mehr Zeilen benoetigen als wir zur Zeit haben,
+ // muessen wir noch neue Zeilen hinzufuegen
+ if( nRows < nRowsReq )
+ {
+ for( i=nRows; i<nRowsReq; i++ )
+ pRows->Insert( new HTMLTableRow(nCols), pRows->Count() );
+ nRows = nRowsReq;
+ ASSERT( nRows==pRows->Count(), "Zeilenzahl in Insert stimmt nicht" );
+ }
+
+ // Testen, ob eine Ueberschneidung vorliegt und diese
+ // gegebenfalls beseitigen
+ sal_uInt16 nSpanedCols = 0;
+ if( nCurRow>0 )
+ {
+ HTMLTableRow *pCurRow = (*pRows)[nCurRow];
+ for( i=nCurCol; i<nColsReq; i++ )
+ {
+ HTMLTableCell *pCell = pCurRow->GetCell(i);
+ if( pCell->GetContents() )
+ {
+ // Der Inhalt reicht von einer weiter oben stehenden Zelle
+ // hier herein. Inhalt und Farbe der Zelle sind deshalb in
+ // jedem Fall noch dort verankert und koennen deshalb
+ // ueberschrieben werden bzw. von ProtectRowSpan geloescht
+ // (Inhalt) oder kopiert (Farbe) werden.
+ nSpanedCols = i + pCell->GetColSpan();
+ FixRowSpan( nCurRow-1, i, pCell->GetContents() );
+ if( pCell->GetRowSpan() > nRowSpan )
+ ProtectRowSpan( nRowsReq, i,
+ pCell->GetRowSpan()-nRowSpan );
+ }
+ }
+ for( i=nColsReq; i<nSpanedCols; i++ )
+ {
+ // Auch diese Inhalte sind in jedem Fall nich in der Zeile
+ // darueber verankert.
+ HTMLTableCell *pCell = pCurRow->GetCell(i);
+ FixRowSpan( nCurRow-1, i, pCell->GetContents() );
+ ProtectRowSpan( nCurRow, i, pCell->GetRowSpan() );
+ }
+ }
+
+ // die Zellen fuellen
+ for( i=nColSpan; i>0; i-- )
+ for( j=nRowSpan; j>0; j-- )
+ GetCell( nRowsReq-j, nColsReq-i )
+ ->Set( pCnts, j, i, eVertOri, pBGBrush,
+ bHasNumFmt, nNumFmt, bHasValue, nValue, bNoWrap );
+
+ Size aTwipSz( bRelWidth ? 0 : nWidth, nHeight );
+ if( (aTwipSz.Width() || aTwipSz.Height()) && Application::GetDefaultDevice() )
+ {
+ aTwipSz = Application::GetDefaultDevice()
+ ->PixelToLogic( aTwipSz, MapMode( MAP_TWIP ) );
+ }
+
+ // die Breite nur in die erste Zelle setzen!
+ if( nWidth )
+ {
+ sal_uInt16 nTmp = bRelWidth ? nWidth : (sal_uInt16)aTwipSz.Width();
+ GetCell( nCurRow, nCurCol )->SetWidth( nTmp, bRelWidth );
+ }
+
+ // Ausserdem noch die Hoehe merken
+ if( nHeight && 1==nRowSpan )
+ {
+ if( nHeight < MINLAY )
+ nHeight = MINLAY;
+ ((*pRows)[nCurRow])->SetHeight( (sal_uInt16)aTwipSz.Height() );
+ }
+
+ // den Spaltenzaehler hinter die neuen Zellen setzen
+ nCurCol = nColsReq;
+ if( nSpanedCols > nCurCol )
+ nCurCol = nSpanedCols;
+
+ // und die naechste freie Zelle suchen
+ while( nCurCol<nCols && GetCell(nCurRow,nCurCol)->IsUsed() )
+ nCurCol++;
+}
+
+inline void HTMLTable::CloseSection( sal_Bool bHead )
+{
+ // die vorhergende Section beenden, falls es schon eine Zeile gibt
+ ASSERT( nCurRow<=nRows, "ungeultige aktuelle Zeile" );
+ if( nCurRow>0 && nCurRow<=nRows )
+ ((*pRows)[nCurRow-1])->SetEndOfGroup();
+ if( bHead /*&& nCurRow==1*/ )
+ bHeadlineRepeat = sal_True;
+}
+
+void HTMLTable::OpenRow( SvxAdjust eAdjust, SwVertOrient eVertOri,
+ SvxBrushItem *pBGBrush )
+{
+ sal_uInt16 nRowsReq = nCurRow+1; // Anzahl benoetigter Zeilen;
+
+ // die naechste Zeile anlegen, falls sie nicht schon da ist
+ if( nRows<nRowsReq )
+ {
+ for( sal_uInt16 i=nRows; i<nRowsReq; i++ )
+ pRows->Insert( new HTMLTableRow(nCols), pRows->Count() );
+ nRows = nRowsReq;
+ ASSERT( nRows==pRows->Count(),
+ "Zeilenzahl in OpenRow stimmt nicht" );
+ }
+
+ HTMLTableRow *pCurRow = ((*pRows)[nCurRow]);
+ pCurRow->SetAdjust( eAdjust );
+ pCurRow->SetVertOri( eVertOri );
+ if( pBGBrush )
+ ((*pRows)[nCurRow])->SetBGBrush( pBGBrush );
+
+ // den Spaltenzaehler wieder an den Anfang setzen
+ nCurCol=0;
+
+ // und die naechste freie Zelle suchen
+ while( nCurCol<nCols && GetCell(nCurRow,nCurCol)->IsUsed() )
+ nCurCol++;
+}
+
+void HTMLTable::CloseRow( sal_Bool bEmpty )
+{
+ ASSERT( nCurRow<nRows, "aktulle Zeile hinter dem Tabellenende" );
+
+ // leere Zellen bekommen einfach einen etwas dickeren unteren Rand!
+ if( bEmpty )
+ {
+ if( nCurRow > 0 )
+ ((*pRows)[nCurRow-1])->IncEmptyRows();
+ return;
+ }
+
+ HTMLTableRow *pRow = (*pRows)[nCurRow];
+
+ // den COLSPAN aller leeren Zellen am Zeilenende so anpassen, dass
+ // eine Zelle daraus wird. Das kann man hier machen (und auf keinen
+ // Fall frueher), weill jetzt keine Zellen mehr in die Zeile eingefuegt
+ // werden.
+ sal_uInt16 i=nCols;
+ while( i )
+ {
+ HTMLTableCell *pCell = pRow->GetCell(--i);
+ if( !pCell->GetContents() )
+ {
+ sal_uInt16 nColSpan = nCols-i;
+ if( nColSpan > 1 )
+ pCell->SetColSpan( nColSpan );
+ }
+ else
+ break;
+ }
+
+
+ nCurRow++;
+}
+
+inline void HTMLTable::CloseColGroup( sal_uInt16 nSpan, sal_uInt16 nWidth,
+ sal_Bool bRelWidth, SvxAdjust eAdjust,
+ SwVertOrient eVertOri )
+{
+ if( nSpan )
+ InsertCol( nSpan, nWidth, bRelWidth, eAdjust, eVertOri );
+
+ ASSERT( nCurCol<=nCols, "ungueltige Spalte" );
+ if( nCurCol>0 && nCurCol<=nCols )
+ ((*pColumns)[nCurCol-1])->SetEndOfGroup();
+}
+
+void HTMLTable::InsertCol( sal_uInt16 nSpan, sal_uInt16 nWidth, sal_Bool bRelWidth,
+ SvxAdjust eAdjust, SwVertOrient eVertOri )
+{
+ sal_uInt16 i;
+
+ if( !nSpan )
+ nSpan = 1;
+
+ sal_uInt16 nColsReq = nCurCol + nSpan; // benoetigte Spalten
+
+ if( nCols < nColsReq )
+ {
+ for( i=nCols; i<nColsReq; i++ )
+ pColumns->Insert( new HTMLTableColumn, pColumns->Count() );
+ nCols = nColsReq;
+ }
+
+ Size aTwipSz( bRelWidth ? 0 : nWidth, 0 );
+ if( aTwipSz.Width() && Application::GetDefaultDevice() )
+ {
+ aTwipSz = Application::GetDefaultDevice()
+ ->PixelToLogic( aTwipSz, MapMode( MAP_TWIP ) );
+ }
+
+ for( i=nCurCol; i<nColsReq; i++ )
+ {
+ HTMLTableColumn *pCol = (*pColumns)[i];
+ sal_uInt16 nTmp = bRelWidth ? nWidth : (sal_uInt16)aTwipSz.Width();
+ pCol->SetWidth( nTmp, bRelWidth );
+ pCol->SetAdjust( eAdjust );
+ pCol->SetVertOri( eVertOri );
+ }
+
+ bColSpec = sal_True;
+
+ nCurCol = nColsReq;
+}
+
+
+void HTMLTable::CloseTable()
+{
+ sal_uInt16 i;
+
+ // Die Anzahl der Tabellenzeilen richtet sich nur nach den
+ // <TR>-Elementen (d.h. nach nCurRow). Durch ROWSPAN aufgespannte
+ // Zeilen hinter Zeile nCurRow muessen wir deshalb loeschen
+ // und vor allem aber den ROWSPAN in den darueberliegenden Zeilen
+ // anpassen.
+ if( nRows>nCurRow )
+ {
+ HTMLTableRow *pPrevRow = (*pRows)[nCurRow-1];
+ HTMLTableCell *pCell;
+ for( i=0; i<nCols; i++ )
+ if( ( pCell=pPrevRow->GetCell(i), pCell->GetRowSpan() > 1 ) )
+ {
+ FixRowSpan( nCurRow-1, i, pCell->GetContents() );
+ ProtectRowSpan( nCurRow, i, (*pRows)[nCurRow]->GetCell(i)->GetRowSpan() );
+ }
+ for( i=nRows-1; i>=nCurRow; i-- )
+ pRows->DeleteAndDestroy(i);
+ nRows = nCurRow;
+ }
+
+ // falls die Tabelle keine Spalte hat, muessen wir eine hinzufuegen
+ if( 0==nCols )
+ {
+ pColumns->Insert( new HTMLTableColumn, pColumns->Count() );
+ for( i=0; i<nRows; i++ )
+ ((*pRows)[i])->Expand(1);
+ nCols = 1;
+ nFilledCols = 1;
+ }
+
+ // falls die Tabelle keine Zeile hat, muessen wir eine hinzufuegen
+ if( 0==nRows )
+ {
+ pRows->Insert( new HTMLTableRow(nCols), pRows->Count() );
+ nRows = 1;
+ nCurRow = 1;
+ }
+
+ if( nFilledCols < nCols )
+ {
+ pColumns->DeleteAndDestroy( nFilledCols, nCols-nFilledCols );
+ for( i=0; i<nRows; i++ )
+ ((*pRows)[i])->Shrink( nFilledCols );
+ nCols = nFilledCols;
+ }
+}
+
+void HTMLTable::_MakeTable( SwTableBox *pBox )
+{
+ SwTableLines& rLines = (pBox ? pBox->GetTabLines()
+ : ((SwTable *)pSwTable)->GetTabLines() );
+
+ // jetzt geht's richtig los ...
+ sal_uInt16 nStartRow = 0;
+
+ for( sal_uInt16 i=0; i<nRows; i++ )
+ {
+ // kann hinter der aktuellen HTML-Tabellen-Zeile gesplittet werden?
+ sal_Bool bSplit = sal_True;
+ HTMLTableRow *pRow = (*pRows)[i];
+ for( sal_uInt16 j=0; j<nCols; j++ )
+ {
+ bSplit = ( 1 == pRow->GetCell(j)->GetRowSpan() );
+ if( !bSplit )
+ break;
+ }
+
+ if( bSplit )
+ {
+ SwTableLine *pLine = MakeTableLine( pBox, nStartRow, 0, i+1, nCols );
+ if( pBox || nStartRow>0 )
+ {
+ rLines.C40_INSERT( SwTableLine, pLine, rLines.Count() );
+ }
+ nStartRow = i+1;
+ }
+ }
+}
+
+/* Wie werden Tabellen ausgerichtet?
+
+erste Zeile: ohne Absatz-Einzuege
+zweite Zeile: mit Absatz-Einzuegen
+
+ALIGN= LEFT RIGHT CENTER -
+-------------------------------------------------------------------------
+xxx bei Tabellen mit WIDTH=nn% ist die Prozent-Angabe von Bedeutung:
+xxx nn = 100 HORI_FULL HORI_FULL HORI_FULL HORI_FULL %
+xxx HORI_NONE HORI_NONE HORI_NONE % HORI_NONE %
+xxx nn < 100 Rahmen F Rahmen F HORI_CENTER % HORI_LEFT %
+xxx Rahmen F Rahmen F HORI_CENTER % HORI_NONE %
+
+bei Tabellen mit WIDTH=nn% ist die Prozent-Angabe von Bedeutung:
+nn = 100 HORI_LEFT HORI_RIGHT HORI_CENTER % HORI_LEFT %
+ HORI_LEFT_AND HORI_RIGHT HORI_CENTER % HORI_LEFT_AND %
+nn < 100 Rahmen F Rahmen F HORI_CENTER % HORI_LEFT %
+ Rahmen F Rahmen F HORI_CENTER % HORI_NONE %
+
+sonst die berechnete Breite w
+w = avail* HORI_LEFT HORI_RIGHT HORI_CENTER HORI_LEFT
+ HORI_LEDT_AND HORI_RIGHT HORI_CENTER HORI_LEFT_AND
+w < avail Rahmen L Rahmen L HORI_CENTER HORI_LEFT
+ Rahmen L Rahmen L HORI_CENTER HORI_NONE
+
+xxx *) wenn fuer die Tabelle keine Groesse angegeben wurde, wird immer
+xxx HORI_FULL genommen
+
+*/
+
+void HTMLTable::MakeTable( SwTableBox *pBox, sal_uInt16 nAbsAvail,
+ sal_uInt16 nRelAvail, sal_uInt16 nAbsLeftSpace,
+ sal_uInt16 nAbsRightSpace, sal_uInt16 nInhAbsSpace )
+{
+ ASSERT( nRows>0 && nCols>0 && nCurRow==nRows,
+ "Wurde CloseTable nicht aufgerufen?" );
+
+ ASSERT( (pLayoutInfo==0) == (this==pTopTable),
+ "Top-Tabelle hat keine Layout-Info oder umgekehrt" );
+
+ if( this==pTopTable )
+ {
+ // Umrandung der Tabelle und aller in ihr enthaltenen berechnen
+ SetBorders();
+
+ // Schritt 1: Die benoetigten Layout-Strukturen werden angelegt
+ // (inklusive Tabellen in Tabellen).
+ CreateLayoutInfo();
+
+ // Schritt 2: Die minimalen und maximalen Spaltenbreiten werden
+ // berechnet (inklusive Tabellen in Tabellen). Da wir noch keine
+ // Boxen haben, arabeiten wir noch auf den Start-Nodes.
+ pLayoutInfo->AutoLayoutPass1();
+ }
+
+ // Schritt 3: Die tatsaechlichen Spaltenbreiten dieser Tabelle werden
+ // berechnet (nicht von Tabellen in Tabellen). Dies muss jetzt schon
+ // sein, damit wir entscheiden koennen ob Filler-Zellen benoetigt werden
+ // oder nicht (deshalb war auch Pass1 schon noetig).
+ pLayoutInfo->AutoLayoutPass2( nAbsAvail, nRelAvail, nAbsLeftSpace,
+ nAbsRightSpace, nInhAbsSpace );
+
+ if( this!=pTopTable )
+ {
+ // die linke und rechte Umrandung der Tabelle kann jetzt entgueltig
+ // festgelegt werden
+ if( pLayoutInfo->GetRelRightFill() == 0 )
+ {
+ if( !bRightBorder )
+ {
+ // linke Umrandung von auesserer Tabelle uebernehmen
+ if( bInhRightBorder )
+ {
+ bRightBorder = sal_True;
+ aRightBorderLine = aInhRightBorderLine;
+ }
+ }
+ else
+ {
+ // Umrandung nur setzen, wenn es erlaubt ist
+ bRightBorder = bRightAlwd;
+ }
+ }
+
+ if( pLayoutInfo->GetRelLeftFill() == 0 &&
+ !((*pColumns)[0])->bLeftBorder &&
+ bInhLeftBorder )
+ {
+ // ggf. rechte Umrandung von auesserer Tabelle uebernehmen
+ ((*pColumns)[0])->bLeftBorder = sal_True;
+ aLeftBorderLine = aInhLeftBorderLine;
+ }
+ }
+
+ // Fuer die Top-Table muss die Ausrichtung gesetzt werden
+ if( this==pTopTable )
+ {
+ SwHoriOrient eHoriOri;
+ if( bForceFrame )
+ {
+ // Die Tabelle soll in einen Rahmen und ist auch schmaler
+ // als der verfuegbare Platz und nicht 100% breit.
+ // Dann kommt sie in einen Rahmen
+ eHoriOri = bPrcWidth ? HORI_FULL : HORI_LEFT;
+ }
+ else switch( eTableAdjust )
+ {
+ // Die Tabelle passt entweder auf die Seite, soll aber in keinen
+ // Rahmen oder sie ist Breiter als die Seite und soll deshalb
+ // in keinen Rahmen
+
+ case SVX_ADJUST_RIGHT:
+ // in rechtsbuendigen Tabellen kann nicht auf den rechten
+ // Rand Ruecksicht genommen werden
+ eHoriOri = HORI_RIGHT;
+ break;
+ case SVX_ADJUST_CENTER:
+ // zentrierte Tabellen nehmen keine Ruecksicht auf Raender!
+ eHoriOri = HORI_CENTER;
+ break;
+ case SVX_ADJUST_LEFT:
+ default:
+ // linksbuendige Tabellen nehmen nur auf den linken Rand
+ // Ruecksicht
+ eHoriOri = nLeftMargin ? HORI_LEFT_AND_WIDTH : HORI_LEFT;
+ break;
+ }
+
+ // das Tabellenform holen und anpassen
+ SwFrmFmt *pFrmFmt = pSwTable->GetFrmFmt();
+ pFrmFmt->SetAttr( SwFmtHoriOrient(0,eHoriOri) );
+ if( HORI_LEFT_AND_WIDTH==eHoriOri )
+ {
+ ASSERT( nLeftMargin || nRightMargin,
+ "Da gibt's wohl noch Reste von relativen Breiten" );
+
+ // The right margin will be ignored anyway.
+ SvxLRSpaceItem aLRItem( pSwTable->GetFrmFmt()->GetLRSpace() );
+ aLRItem.SetLeft( nLeftMargin );
+ aLRItem.SetRight( nRightMargin );
+ pFrmFmt->SetAttr( aLRItem );
+ }
+
+ if( bPrcWidth && HORI_FULL!=eHoriOri )
+ {
+ pFrmFmt->LockModify();
+ SwFmtFrmSize aFrmSize( pFrmFmt->GetFrmSize() );
+ aFrmSize.SetWidthPercent( (sal_uInt8)nWidth );
+ pFrmFmt->SetAttr( aFrmSize );
+ pFrmFmt->UnlockModify();
+ }
+ }
+
+ // die Default Line- und Box-Formate holen
+ if( this==pTopTable )
+ {
+ // die erste Box merken und aus der ersten Zeile ausketten
+ SwTableLine *pLine1 = (pSwTable->GetTabLines())[0];
+ pBox1 = (pLine1->GetTabBoxes())[0];
+ pLine1->GetTabBoxes().Remove(0);
+
+ pLineFmt = (SwTableLineFmt*)pLine1->GetFrmFmt();
+ pBoxFmt = (SwTableBoxFmt*)pBox1->GetFrmFmt();
+ }
+ else
+ {
+ pLineFmt = (SwTableLineFmt*)pTopTable->pLineFmt;
+ pBoxFmt = (SwTableBoxFmt*)pTopTable->pBoxFmt;
+ }
+
+ // ggf. muessen fuer Tabellen in Tabellen "Filler"-Zellen eingefuegt
+ // werden
+ if( this != pTopTable &&
+ ( pLayoutInfo->GetRelLeftFill() > 0 ||
+ pLayoutInfo->GetRelRightFill() > 0 ) )
+ {
+ ASSERT( pBox, "kein TableBox fuer Tabelle in Tabelle" );
+
+ SwTableLines& rLines = pBox->GetTabLines();
+
+ // dazu brauchen wir erstmal ein eine neue Table-Line in der Box
+ SwTableLine *pLine =
+ new SwTableLine( pLineFrmFmtNoHeight ? pLineFrmFmtNoHeight
+ : pLineFmt, 0, pBox );
+ rLines.C40_INSERT( SwTableLine, pLine, rLines.Count() );
+
+ // Sicherstellen, dass wie ein Format ohne Hoehe erwischt haben
+ if( !pLineFrmFmtNoHeight )
+ {
+ // sonst muessen wir die Hoehe aus dem Attribut entfernen
+ // und koennen uns das Format merken
+ pLineFrmFmtNoHeight = (SwTableLineFmt*)pLine->ClaimFrmFmt();
+
+ ResetLineFrmFmtAttrs( pLineFrmFmtNoHeight );
+ }
+
+ SwTableBoxes& rBoxes = pLine->GetTabBoxes();
+ SwTableBox *pNewBox;
+
+ // ggf. links eine Zelle einfuegen
+ if( pLayoutInfo->GetRelLeftFill() > 0 )
+ {
+ // pPrevStNd ist der Vorgaenger-Start-Node der Tabelle. Den
+ // "Filler"-Node fuegen wir einfach dahinter ein ...
+ pPrevStNd = pParser->InsertTableSection( pPrevStNd );
+
+ pNewBox = NewTableBox( pPrevStNd, pLine );
+ rBoxes.C40_INSERT( SwTableBox, pNewBox, rBoxes.Count() );
+ FixFillerFrameFmt( pNewBox, sal_False );
+ pLayoutInfo->SetLeftFillerBox( pNewBox );
+ }
+
+ // jetzt die Tabelle bearbeiten
+ pNewBox = new SwTableBox( pBoxFmt, 0, pLine );
+ rBoxes.C40_INSERT( SwTableBox, pNewBox, rBoxes.Count() );
+
+ SwFrmFmt *pFrmFmt = pNewBox->ClaimFrmFmt();
+ pFrmFmt->ResetAttr( RES_BOX );
+ pFrmFmt->ResetAttr( RES_BACKGROUND );
+ pFrmFmt->ResetAttr( RES_VERT_ORIENT );
+ pFrmFmt->ResetAttr( RES_BOXATR_FORMAT );
+
+
+ _MakeTable( pNewBox );
+
+ // und noch ggf. rechts eine Zelle einfuegen
+ if( pLayoutInfo->GetRelRightFill() > 0 )
+ {
+ const SwStartNode *pStNd =
+ GetPrevBoxStartNode( USHRT_MAX, USHRT_MAX );
+ pStNd = pParser->InsertTableSection( pStNd );
+
+ pNewBox = NewTableBox( pStNd, pLine );
+ rBoxes.C40_INSERT( SwTableBox, pNewBox, rBoxes.Count() );
+
+ FixFillerFrameFmt( pNewBox, sal_True );
+ pLayoutInfo->SetRightFillerBox( pNewBox );
+ }
+ }
+ else
+ {
+ _MakeTable( pBox );
+ }
+
+ // zum Schluss fuehren wir noch eine Garbage-Collection fuer die
+ // Top-Level-Tabelle durch
+ if( this==pTopTable )
+ {
+ if( 1==nRows && nHeight && 1==pSwTable->GetTabLines().Count() )
+ {
+ // Hoehe einer einzeiligen Tabelle als Mindesthoehe der
+ // Zeile setzen. (War mal fixe Hoehe, aber das gibt manchmal
+ // Probleme (fix #34972#) und ist auch nicht Netscape 4.0
+ // konform
+ nHeight = pParser->ToTwips( nHeight );
+ if( nHeight < MINLAY )
+ nHeight = MINLAY;
+
+ (pSwTable->GetTabLines())[0]->ClaimFrmFmt();
+ (pSwTable->GetTabLines())[0]->GetFrmFmt()
+ ->SetAttr( SwFmtFrmSize( ATT_MIN_SIZE, 0, nHeight ) );
+ }
+
+ if( GetBGBrush() )
+ pSwTable->GetFrmFmt()->SetAttr( *GetBGBrush() );
+
+ ((SwTable *)pSwTable)->SetHeadlineRepeat( bHeadlineRepeat );
+ ((SwTable *)pSwTable)->GCLines();
+
+ sal_Bool bIsInFlyFrame = pContext && pContext->GetFrmFmt();
+ if( bIsInFlyFrame && !nWidth )
+ {
+ SvxAdjust eTblAdjust = GetTableAdjust(sal_False);
+ if( eTblAdjust != SVX_ADJUST_LEFT &&
+ eTblAdjust != SVX_ADJUST_RIGHT )
+ {
+ // Wenn eine Tabelle ohne Breitenangabe nicht links oder
+ // rechts umflossen werden soll, dann stacken wir sie
+ // in einem Rahmen mit 100%-Breite, damit ihre Groesse
+ // angepasst wird. Der Rahmen darf nicht angepasst werden.
+ ASSERT( HasToFly(), "Warum ist die Tabelle in einem Rahmen?" );
+ sal_uInt32 nMin = pLayoutInfo->GetMin();
+ if( nMin > USHRT_MAX )
+ nMin = USHRT_MAX;
+ SwFmtFrmSize aFlyFrmSize( ATT_VAR_SIZE, (SwTwips)nMin, MINLAY );
+ aFlyFrmSize.SetWidthPercent( 100 );
+ pContext->GetFrmFmt()->SetAttr( aFlyFrmSize );
+ bIsInFlyFrame = sal_False;
+ }
+ else
+ {
+ // Links und rechts ausgerichtete Tabellen ohne Breite
+ // duerfen leider nicht in der Breite angepasst werden, denn
+ // sie wuerden nur schrumpfen aber nie wachsen.
+ pLayoutInfo->SetMustNotRecalc( sal_True );
+ if( pContext->GetFrmFmt()->GetAnchor().GetCntntAnchor()
+ ->nNode.GetNode().FindTableNode() )
+ {
+ sal_uInt32 nMax = pLayoutInfo->GetMax();
+ if( nMax > USHRT_MAX )
+ nMax = USHRT_MAX;
+ SwFmtFrmSize aFlyFrmSize( ATT_VAR_SIZE, (SwTwips)nMax, MINLAY );
+ pContext->GetFrmFmt()->SetAttr( aFlyFrmSize );
+ bIsInFlyFrame = sal_False;
+ }
+ else
+ {
+ pLayoutInfo->SetMustNotResize( sal_True );
+ }
+ }
+ }
+ pLayoutInfo->SetMayBeInFlyFrame( bIsInFlyFrame );
+
+ // Nur Tabellen mit relativer Breite oder ohne Breite muessen
+ // angepasst werden.
+ pLayoutInfo->SetMustResize( bPrcWidth || !nWidth );
+
+ pLayoutInfo->SetWidths();
+
+ ((SwTable *)pSwTable)->SetHTMLTableLayout( pLayoutInfo );
+
+ if( pResizeDrawObjs )
+ {
+ sal_uInt16 nCount = pResizeDrawObjs->Count();
+ for( sal_uInt16 i=0; i<nCount; i++ )
+ {
+ SdrObject *pObj = (*pResizeDrawObjs)[i];
+ sal_uInt16 nRow = (*pDrawObjPrcWidths)[3*i];
+ sal_uInt16 nCol = (*pDrawObjPrcWidths)[3*i+1];
+ sal_uInt8 nPrcWidth = (sal_uInt8)(*pDrawObjPrcWidths)[3*i+2];
+
+ SwHTMLTableLayoutCell *pLayoutCell =
+ pLayoutInfo->GetCell( nRow, nCol );
+ sal_uInt16 nColSpan = pLayoutCell->GetColSpan();
+
+ sal_uInt16 nWidth, nDummy;
+ pLayoutInfo->GetAvail( nCol, nColSpan, nWidth, nDummy );
+ nWidth -= pLayoutInfo->GetLeftCellSpace( nCol, nColSpan );
+ nWidth -= pLayoutInfo->GetRightCellSpace( nCol, nColSpan );
+ nWidth = ((long)nWidth * nPrcWidth) / 100;
+
+ pParser->ResizeDrawObject( pObj, nWidth );
+ }
+ }
+ }
+}
+
+void HTMLTable::SetTable( const SwStartNode *pStNd, _HTMLTableContext *pCntxt,
+ sal_uInt16 nLeft, sal_uInt16 nRight,
+ const SwTable *pSwTab, sal_Bool bFrcFrame )
+{
+ pPrevStNd = pStNd;
+ pSwTable = pSwTab;
+ pContext = pCntxt;
+
+ nLeftMargin = nLeft;
+ nRightMargin = nRight;
+
+ bForceFrame = bFrcFrame;
+}
+
+void HTMLTable::RegisterDrawObject( SdrObject *pObj, sal_uInt8 nPrcWidth )
+{
+ if( !pResizeDrawObjs )
+ pResizeDrawObjs = new SdrObjects;
+ pResizeDrawObjs->C40_INSERT( SdrObject, pObj, pResizeDrawObjs->Count() );
+
+ if( !pDrawObjPrcWidths )
+ pDrawObjPrcWidths = new SvUShorts;
+ pDrawObjPrcWidths->Insert( nCurRow, pDrawObjPrcWidths->Count() );
+ pDrawObjPrcWidths->Insert( nCurCol, pDrawObjPrcWidths->Count() );
+ pDrawObjPrcWidths->Insert( (sal_uInt16)nPrcWidth, pDrawObjPrcWidths->Count() );
+}
+
+void HTMLTable::MakeParentContents()
+{
+ if( !GetContext() && !HasParentSection() )
+ {
+ SetParentContents(
+ pParser->InsertTableContents( GetIsParentHeader() ) );
+
+ SetHasParentSection( sal_True );
+ }
+}
+
+_HTMLTableContext::~_HTMLTableContext()
+{
+ delete pPos;
+}
+
+void _HTMLTableContext::SavePREListingXMP( SwHTMLParser& rParser )
+{
+ bRestartPRE = rParser.IsReadPRE();
+ bRestartXMP = rParser.IsReadXMP();
+ bRestartListing = rParser.IsReadListing();
+ rParser.FinishPREListingXMP();
+}
+
+void _HTMLTableContext::RestorePREListingXMP( SwHTMLParser& rParser )
+{
+ rParser.FinishPREListingXMP();
+
+ if( bRestartPRE )
+ rParser.StartPRE();
+
+ if( bRestartXMP )
+ rParser.StartXMP();
+
+ if( bRestartListing )
+ rParser.StartListing();
+}
+
+/* */
+
+const SwStartNode *SwHTMLParser::InsertTableSection
+ ( const SwStartNode *pPrevStNd )
+{
+ ASSERT( pPrevStNd, "Start-Node ist NULL" );
+
+ pCSS1Parser->SetTDTagStyles();
+ SwTxtFmtColl *pColl = pCSS1Parser->GetTxtCollFromPool( RES_POOLCOLL_TABLE );
+
+ const SwStartNode *pStNd;
+ if( pTable && pTable->bFirstCell )
+ {
+ SwNode *pNd = pDoc->GetNodes()[pPam->GetPoint()->nNode];
+ pNd->GetTxtNode()->ChgFmtColl( pColl );
+ pStNd = pNd->FindTableBoxStartNode();
+ pTable->bFirstCell = sal_False;
+ }
+ else
+ {
+ const SwNode* pNd;
+ if( pPrevStNd->IsTableNode() )
+ pNd = pPrevStNd;
+ else
+ pNd = pPrevStNd->EndOfSectionNode();
+ SwNodeIndex nIdx( *pNd, 1 );
+ pStNd = pDoc->GetNodes().MakeTextSection( nIdx, SwTableBoxStartNode,
+ pColl );
+ pTable->IncBoxCount();
+ }
+
+ pDoc->GetNodes()[pStNd->GetIndex()+1]
+ ->GetCntntNode()->SetAttr( SvxFontHeightItem(40) );
+
+ return pStNd;
+}
+
+const SwStartNode *SwHTMLParser::InsertTableSection( sal_uInt16 nPoolId )
+{
+ switch( nPoolId )
+ {
+ case RES_POOLCOLL_TABLE_HDLN:
+ pCSS1Parser->SetTHTagStyles();
+ break;
+ case RES_POOLCOLL_TABLE:
+ pCSS1Parser->SetTDTagStyles();
+ break;
+ }
+
+ SwTxtFmtColl *pColl = pCSS1Parser->GetTxtCollFromPool( nPoolId );
+
+ SwNode *pNd = pDoc->GetNodes()[pPam->GetPoint()->nNode];
+ const SwStartNode *pStNd;
+ if( pTable && pTable->bFirstCell )
+ {
+ pNd->GetTxtNode()->ChgFmtColl( pColl );
+ pTable->bFirstCell = sal_False;
+ pStNd = pNd->FindTableBoxStartNode();
+ }
+ else
+ {
+ SwTableNode *pTblNd = pNd->FindTableNode();
+ SwNodeIndex aIdx( *pTblNd->EndOfSectionNode() );
+ pStNd = pDoc->GetNodes().MakeTextSection( aIdx, SwTableBoxStartNode,
+ pColl );
+
+ pPam->GetPoint()->nNode = pStNd->GetIndex() + 1;
+ SwTxtNode *pTxtNd = pPam->GetPoint()->nNode.GetNode().GetTxtNode();
+ pPam->GetPoint()->nContent.Assign( pTxtNd, 0 );
+ pTable->IncBoxCount();
+ }
+
+ return pStNd;
+}
+
+const SwStartNode *SwHTMLParser::InsertEmptyTableSection()
+{
+ ASSERT( !pTable || !pTable->bFirstCell,
+ "erste Zelle der Tabelle nicht genutzt" );
+
+ const SwNode *pNd = pDoc->GetNodes()[pPam->GetPoint()->nNode];
+ const SwTableNode *pTblNd = pNd->FindTableNode();
+ pTable->IncBoxCount();
+
+ return pDoc->GetNodes().MakeEmptySection(
+ SwNodeIndex( *pTblNd->EndOfSectionNode() ), SwTableBoxStartNode );
+}
+
+SwStartNode *SwHTMLParser::InsertTempTableCaptionSection()
+{
+ SwTxtFmtColl *pColl = pCSS1Parser->GetTxtCollFromPool( RES_POOLCOLL_TEXT );
+ SwNodeIndex& rIdx = pPam->GetPoint()->nNode;
+ rIdx = pDoc->GetNodes().GetEndOfExtras();
+ SwStartNode *pStNd = pDoc->GetNodes().MakeTextSection( rIdx,
+ SwNormalStartNode, pColl );
+
+ rIdx = pStNd->GetIndex() + 1;
+ pPam->GetPoint()->nContent.Assign( rIdx.GetNode().GetTxtNode(), 0 );
+
+ return pStNd;
+}
+
+
+xub_StrLen SwHTMLParser::StripTrailingLF()
+{
+ xub_StrLen nStripped = 0;
+
+ xub_StrLen nLen = pPam->GetPoint()->nContent.GetIndex();
+ if( nLen )
+ {
+ SwTxtNode* pTxtNd = pPam->GetPoint()->nNode.GetNode().GetTxtNode();
+ // vorsicht, wenn Kommentare nicht uebrlesen werden!!!
+ if( pTxtNd )
+ {
+ xub_StrLen nPos = nLen;
+ xub_StrLen nLFCount = 0;
+ while( nPos && '\x0a' == (pTxtNd->GetTxt()).GetChar(--nPos) )
+ nLFCount++;
+
+ if( nLFCount )
+ {
+// MIB 6.6.97: Warum sollte man bei leeren Absaetzen nur ein LF loeschen?
+// Das stimmt doch irgendwi nicht ...
+// if( nLFCount == nLen )
+// {
+// // nur Lfs, dann nur ein LF loeschen
+// nLFCount = 1;
+// }
+// else if( nLFCount > 2 )
+ if( nLFCount > 2 )
+ {
+ // Bei Netscape entspricht ein Absatz-Ende zwei LFs
+ // (mit einem kommt man in die naechste Zeile, das
+ // zweite erzeugt eine Leerzeile) Diesen Abstand
+ // erreichen wie aber schon mit dem unteren
+ // Absatz-Abstand. Wenn nach den <BR> ein neuer
+ // Absatz aufgemacht wird, wird das Maximum des Abstands,
+ // der sich aus den BR und dem P ergibt genommen.
+ // Deshalb muessen wir 2 bzw. alle bei weniger
+ // als zweien loeschen
+ nLFCount = 2;
+ }
+
+ nPos = nLen - nLFCount;
+ SwIndex nIdx( pTxtNd, nPos );
+ pTxtNd->Erase( nIdx, nLFCount );
+ nStripped = nLFCount;
+ }
+ }
+ }
+
+ return nStripped;
+}
+
+SvxBrushItem* SwHTMLParser::CreateBrushItem( const Color *pColor,
+ const String& rImageURL,
+ const String& rStyle,
+ const String& rId,
+ const String& rClass )
+{
+ SvxBrushItem *pBrushItem = 0;
+
+ if( rStyle.Len() || rId.Len() || rClass.Len() )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), RES_BACKGROUND,
+ RES_BACKGROUND );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ if( rClass.Len() )
+ {
+ SvxCSS1MapEntry *pClass = pCSS1Parser->GetClass( rClass );
+ if( pClass )
+ aItemSet.Put( pClass->GetItemSet() );
+ }
+
+ if( rId.Len() )
+ {
+ SvxCSS1MapEntry *pId = pCSS1Parser->GetId( rId );
+ if( pId )
+ aItemSet.Put( pId->GetItemSet() );
+ }
+
+ pCSS1Parser->ParseStyleOption( rStyle, aItemSet, aPropInfo );
+ const SfxPoolItem *pItem = 0;
+ if( SFX_ITEM_SET == aItemSet.GetItemState( RES_BACKGROUND, sal_False,
+ &pItem ) )
+ {
+ pBrushItem = new SvxBrushItem( *((const SvxBrushItem *)pItem) );
+ }
+ }
+
+ if( !pBrushItem && (pColor || rImageURL.Len()) )
+ {
+ pBrushItem = new SvxBrushItem();
+
+ if( pColor )
+ pBrushItem->SetColor(*pColor);
+
+ if( rImageURL.Len() )
+ {
+ pBrushItem->SetGraphicLink( INetURLObject::RelToAbs(rImageURL) );
+ pBrushItem->SetGraphicPos( GPOS_TILED );
+ }
+ }
+
+ return pBrushItem;
+}
+
+/* */
+
+class _SectionSaveStruct : public SwPendingStackData
+{
+ sal_uInt16 nBaseFontStMinSave, nFontStMinSave, nFontStHeadStartSave;
+ sal_uInt16 nDefListDeepSave, nContextStMinSave, nContextStAttrMinSave;
+
+public:
+
+ HTMLTable *pTable;
+
+ _SectionSaveStruct( SwHTMLParser& rParser );
+ virtual ~_SectionSaveStruct();
+
+ sal_uInt16 GetContextStAttrMin() const { return nContextStAttrMinSave; }
+
+ void Restore( SwHTMLParser& rParser );
+};
+
+_SectionSaveStruct::_SectionSaveStruct( SwHTMLParser& rParser ) :
+ nBaseFontStMinSave(0), nFontStMinSave(0), nFontStHeadStartSave(0),
+ nDefListDeepSave(0), nContextStMinSave(0), nContextStAttrMinSave(0),
+ pTable( 0 )
+{
+ // Font-Stacks einfrieren
+ nBaseFontStMinSave = rParser.nBaseFontStMin;
+ rParser.nBaseFontStMin = rParser.aBaseFontStack.Count();
+
+ nFontStMinSave = rParser.nFontStMin;
+ nFontStHeadStartSave = rParser.nFontStHeadStart;
+ rParser.nFontStMin = rParser.aFontStack.Count();
+
+ // Kontext-Stack einfrieren
+ nContextStMinSave = rParser.nContextStMin;
+ nContextStAttrMinSave = rParser.nContextStAttrMin;
+ rParser.nContextStMin = rParser.aContexts.Count();
+ rParser.nContextStAttrMin = rParser.nContextStMin;
+
+ // und noch ein par Zaehler retten
+ nDefListDeepSave = rParser.nDefListDeep;
+ rParser.nDefListDeep = 0;
+}
+
+_SectionSaveStruct::~_SectionSaveStruct()
+{}
+
+void _SectionSaveStruct::Restore( SwHTMLParser& rParser )
+{
+ // Font-Stacks wieder auftauen
+ sal_uInt16 nMin = rParser.nBaseFontStMin;
+ if( rParser.aBaseFontStack.Count() > nMin )
+ rParser.aBaseFontStack.Remove( nMin,
+ rParser.aBaseFontStack.Count() - nMin );
+ rParser.nBaseFontStMin = nBaseFontStMinSave;
+
+
+ nMin = rParser.nFontStMin;
+ if( rParser.aFontStack.Count() > nMin )
+ rParser.aFontStack.Remove( nMin,
+ rParser.aFontStack.Count() - nMin );
+ rParser.nFontStMin = nFontStMinSave;
+ rParser.nFontStHeadStart = nFontStHeadStartSave;
+
+ // Der Kontext-Stack muss schon aufgeraeumt sein!
+ ASSERT( rParser.aContexts.Count() == rParser.nContextStMin &&
+ rParser.aContexts.Count() == rParser.nContextStAttrMin,
+ "Der Kontext-Stack wurde nicht aufgeraeumt" );
+ rParser.nContextStMin = nContextStMinSave;
+ rParser.nContextStAttrMin = nContextStAttrMinSave;
+
+ // und noch ein par Zaehler rekonstruieren
+ rParser.nDefListDeep = nDefListDeepSave;
+
+ // und ein par Flags zuruecksetzen
+ rParser.bNoParSpace = sal_False;
+ rParser.nOpenParaToken = 0;
+
+ if( rParser.aParaAttrs.Count() )
+ rParser.aParaAttrs.Remove( 0, rParser.aParaAttrs.Count() );
+}
+
+/* */
+
+class _CellSaveStruct : public _SectionSaveStruct
+{
+ String aStyle, aId, aClass;
+ String aBGImage;
+ Color aBGColor;
+
+ HTMLTableCnts* pCnts; // Liste aller Inhalte
+ HTMLTableCnts* pCurrCnts; // der aktuelle Inhalt oder 0
+ SwNodeIndex *pNoBreakEndParaIdx;// Absatz-Index eines </NOBR>
+
+ double nValue;
+
+ sal_uInt32 nNumFmt;
+
+ sal_uInt16 nRowSpan, nColSpan, nWidth, nHeight;
+ xub_StrLen nNoBreakEndCntntPos; // Zeichen-Index eines </NOBR>
+
+ SvxAdjust eAdjust;
+ SwVertOrient eVertOri;
+
+ sal_Bool bHead : 1;
+ sal_Bool bPrcWidth : 1;
+ sal_Bool bHasNumFmt : 1;
+ sal_Bool bHasValue : 1;
+ sal_Bool bBGColor : 1;
+ sal_Bool bNoWrap : 1; // NOWRAP-Option
+ sal_Bool bNoBreak : 1; // NOBREAK-Tag
+
+public:
+
+ _CellSaveStruct( SwHTMLParser& rParser, HTMLTable *pCurTable, sal_Bool bHd,
+ sal_Bool bReadOpt );
+
+ virtual ~_CellSaveStruct();
+
+ void AddContents( HTMLTableCnts *pNewCnts );
+ HTMLTableCnts *GetFirstContents() { return pCnts; }
+
+ void ClearIsInSection() { pCurrCnts = 0; }
+ sal_Bool IsInSection() const { return pCurrCnts!=0; }
+ HTMLTableCnts *GetCurrContents() const { return pCurrCnts; }
+
+ void InsertCell( SwHTMLParser& rParser, HTMLTable *pCurTable );
+
+ sal_Bool IsHeaderCell() const { return bHead; }
+
+ void StartNoBreak( const SwPosition& rPos );
+ void EndNoBreak( const SwPosition& rPos );
+ void CheckNoBreak( const SwPosition& rPos, SwDoc *pDoc );
+};
+
+
+_CellSaveStruct::_CellSaveStruct( SwHTMLParser& rParser, HTMLTable *pCurTable,
+ sal_Bool bHd, sal_Bool bReadOpt ) :
+ _SectionSaveStruct( rParser ),
+ pCnts( 0 ), pCurrCnts( 0 ), pNoBreakEndParaIdx( 0 ),
+ nValue( 0.0 ),
+ nNumFmt( 0 ),
+ nRowSpan( 1 ), nColSpan( 1 ), nWidth( 0 ), nHeight( 0 ),
+ nNoBreakEndCntntPos( 0 ),
+ eAdjust( pCurTable->GetInheritedAdjust() ),
+ bHead( bHd ),
+ eVertOri( pCurTable->GetInheritedVertOri() ),
+ bPrcWidth( sal_False ), bBGColor( sal_False ),
+ bHasNumFmt( sal_False ), bHasValue( sal_False ),
+ bNoWrap( sal_False ), bNoBreak( sal_False )
+{
+ String aNumFmt, aValue;
+
+ if( bReadOpt )
+ {
+ const HTMLOptions *pOptions = rParser.GetOptions();
+ for( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_COLSPAN:
+ nColSpan = (sal_uInt16)pOption->GetNumber();
+ break;
+ case HTML_O_ROWSPAN:
+ nRowSpan = (sal_uInt16)pOption->GetNumber();
+ break;
+ case HTML_O_ALIGN:
+ eAdjust = (SvxAdjust)pOption->GetEnum(
+ aHTMLPAlignTable, eAdjust );
+ break;
+ case HTML_O_VALIGN:
+ eVertOri = (SwVertOrient)pOption->GetEnum(
+ aHTMLTblVAlignTable, eVertOri );
+ break;
+ case HTML_O_WIDTH:
+ nWidth = (sal_uInt16)pOption->GetNumber(); // nur fuer Netscape
+ bPrcWidth = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ if( bPrcWidth && nWidth>100 )
+ nWidth = 100;
+ break;
+ case HTML_O_HEIGHT:
+ nHeight = (sal_uInt16)pOption->GetNumber(); // nur fuer Netscape
+ if( pOption->GetString().Search('%') != STRING_NOTFOUND)
+ nHeight = 0; // keine %-Angaben beruecksichtigen
+ break;
+ case HTML_O_BGCOLOR:
+ // Leere BGCOLOR bei <TABLE>, <TR> und <TD>/<TH> wie Netscape
+ // ignorieren, bei allen anderen Tags *wirklich* nicht.
+ if( pOption->GetString().Len() )
+ {
+ pOption->GetColor( aBGColor );
+ bBGColor = sal_True;
+ }
+ break;
+ case HTML_O_BACKGROUND:
+ aBGImage = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ case HTML_O_SDNUM:
+ aNumFmt = pOption->GetString();
+ bHasNumFmt = sal_True;
+ break;
+ case HTML_O_SDVAL:
+ bHasValue = sal_True;
+ aValue = pOption->GetString();
+ break;
+ case HTML_O_NOWRAP:
+ bNoWrap = sal_True;
+ break;
+ }
+ }
+
+ if( aId.Len() )
+ rParser.InsertBookmark( aId );
+ }
+
+ if( bHasNumFmt )
+ {
+ LanguageType eLang;
+ nValue = rParser.GetTableDataOptionsValNum(
+ nNumFmt, eLang, aValue, aNumFmt,
+ *rParser.pDoc->GetNumberFormatter() );
+ }
+
+ // einen neuen Kontext anlegen, aber das ::com::sun::star::drawing::Alignment-Attribut
+ // nicht dort verankern, weil es noch ger keine Section gibt, in der
+ // es gibt.
+ sal_uInt16 nToken, nColl;
+ if( bHead )
+ {
+ nToken = HTML_TABLEHEADER_ON;
+ nColl = RES_POOLCOLL_TABLE_HDLN;
+ }
+ else
+ {
+ nToken = HTML_TABLEDATA_ON;
+ nColl = RES_POOLCOLL_TABLE;
+ }
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( nToken, nColl, aEmptyStr, sal_True );
+ if( SVX_ADJUST_END != eAdjust )
+ rParser.InsertAttr( &rParser.aAttrTab.pAdjust, SvxAdjustItem(eAdjust),
+ pCntxt );
+
+ if( rParser.HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ SfxItemSet aItemSet( rParser.pDoc->GetAttrPool(),
+ rParser.pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ if( rParser.ParseStyleOptions( aStyle, aId, aClass, aItemSet,
+ aPropInfo ) )
+ rParser.InsertAttrs( aItemSet, aPropInfo, pCntxt );
+ }
+
+ rParser.SplitPREListingXMP( pCntxt );
+
+ rParser.PushContext( pCntxt );
+}
+
+_CellSaveStruct::~_CellSaveStruct()
+{
+ delete pNoBreakEndParaIdx;
+}
+
+void _CellSaveStruct::AddContents( HTMLTableCnts *pNewCnts )
+{
+ if( pCnts )
+ pCnts->Add( pNewCnts );
+ else
+ pCnts = pNewCnts;
+
+ pCurrCnts = pNewCnts;
+}
+
+void _CellSaveStruct::InsertCell( SwHTMLParser& rParser,
+ HTMLTable *pCurTable )
+{
+#ifndef PRODUCT
+ // Die Attribute muessen schon beim Auefrauemen des Kontext-Stacks
+ // entfernt worden sein, sonst ist etwas schiefgelaufen. Das
+ // Checken wir mal eben ...
+ // MIB 8.1.98: Wenn ausserhalb einer Zelle Attribute geoeffnet
+ // wurden stehen diese noch in der Attribut-Tabelle und werden erst
+ // ganz zum Schluss durch die CleanContext-Aufrufe in BuildTable
+ // geloescht. Damit es in diesem Fall keine Asserts gibt findet dann
+ // keine Ueberpruefung statt. Erkennen tut man diesen Fall an
+ // nContextStAttrMin: Der gemerkte Wert nContextStAttrMinSave ist der
+ // Wert, den nContextStAttrMin beim Start der Tabelle hatte. Und
+ // der aktuelle Wert von nContextStAttrMin entspricht der Anzahl der
+ // Kontexte, die beim Start der Zelle vorgefunden wurden. Sind beide
+ // Werte unterschiedlich, wurden ausserhalb der Zelle Kontexte
+ // angelegt und wir ueberpruefen nichts.
+
+ if( rParser.nContextStAttrMin == GetContextStAttrMin() )
+ {
+ _HTMLAttr** pTbl = (_HTMLAttr**)&rParser.aAttrTab;
+
+ for( sal_uInt16 nCnt = sizeof( _HTMLAttrTable ) / sizeof( _HTMLAttr* );
+ nCnt--; ++pTbl )
+ {
+ ASSERT( !*pTbl, "Die Attribut-Tabelle ist nicht leer" );
+ }
+ }
+#endif
+
+ // jetzt muessen wir noch die Zelle an der aktuellen Position einfuegen
+ SvxBrushItem *pBrushItem =
+ rParser.CreateBrushItem( bBGColor ? &aBGColor : 0, aBGImage,
+ aStyle, aId, aClass );
+ pCurTable->InsertCell( pCnts, nRowSpan, nColSpan, nWidth,
+ bPrcWidth, nHeight, eVertOri, pBrushItem,
+ bHasNumFmt, nNumFmt, bHasValue, nValue,
+ bNoWrap );
+ Restore( rParser );
+}
+
+void _CellSaveStruct::StartNoBreak( const SwPosition& rPos )
+{
+ if( !pCnts ||
+ (!rPos.nContent.GetIndex() && pCurrCnts==pCnts &&
+ pCnts->GetStartNode() &&
+ pCnts->GetStartNode()->GetIndex() + 1 ==
+ rPos.nNode.GetIndex()) )
+ {
+ bNoBreak = sal_True;
+ }
+}
+
+void _CellSaveStruct::EndNoBreak( const SwPosition& rPos )
+{
+ if( bNoBreak )
+ {
+ delete pNoBreakEndParaIdx;
+ pNoBreakEndParaIdx = new SwNodeIndex( rPos.nNode );
+ nNoBreakEndCntntPos = rPos.nContent.GetIndex();
+ bNoBreak = sal_False;
+ }
+}
+
+void _CellSaveStruct::CheckNoBreak( const SwPosition& rPos, SwDoc *pDoc )
+{
+ if( pCnts && pCurrCnts==pCnts )
+ {
+ if( bNoBreak )
+ {
+ // <NOBR> wurde nicht beendet
+ pCnts->SetNoBreak();
+ }
+ else if( pNoBreakEndParaIdx &&
+ pNoBreakEndParaIdx->GetIndex() == rPos.nNode.GetIndex() )
+ {
+ if( nNoBreakEndCntntPos == rPos.nContent.GetIndex() )
+ {
+ // <NOBR> wurde unmittelbar vor dem Zellen-Ende beendet
+ pCnts->SetNoBreak();
+ }
+ else if( nNoBreakEndCntntPos + 1 == rPos.nContent.GetIndex() )
+ {
+ const SwTxtNode *pTxtNd =
+ pDoc->GetNodes()[rPos.nNode]->GetTxtNode();
+ if( pTxtNd )
+ {
+ register sal_Unicode cLast =
+ pTxtNd->GetTxt().GetChar(nNoBreakEndCntntPos);
+ if( ' '==cLast || '\x0a'==cLast )
+ {
+ // Zwischem dem </NOBR> und dem Zellen-Ende gibt es nur
+ // ein Blank oder einen Zeilenumbruch.
+ pCnts->SetNoBreak();
+ }
+ }
+ }
+ }
+ }
+}
+
+
+
+HTMLTableCnts *SwHTMLParser::InsertTableContents(
+ sal_Bool bHead )
+{
+ // eine neue Section anlegen, der PaM steht dann darin
+ const SwStartNode *pStNd =
+ InsertTableSection( bHead ? RES_POOLCOLL_TABLE_HDLN
+ : RES_POOLCOLL_TABLE );
+
+ if( GetNumInfo().GetNumRule() )
+ {
+ // 1. Absatz auf nicht numeriert setzen
+ SetNodeNum( GetNumInfo().GetLevel() | NO_NUMLEVEL );
+ }
+
+ // Attributierungs-Anfang neu setzen
+ const SwNodeIndex& rSttPara = pPam->GetPoint()->nNode;
+ xub_StrLen nSttCnt = pPam->GetPoint()->nContent.GetIndex();
+
+ _HTMLAttr** pTbl = (_HTMLAttr**)&aAttrTab;
+ for( sal_uInt16 nCnt = sizeof( _HTMLAttrTable ) / sizeof( _HTMLAttr* );
+ nCnt--; ++pTbl )
+ {
+
+ _HTMLAttr *pAttr = *pTbl;
+ while( pAttr )
+ {
+ ASSERT( !pAttr->GetPrev(), "Attribut hat Previous-Liste" );
+ pAttr->nSttPara = rSttPara;
+ pAttr->nEndPara = rSttPara;
+ pAttr->nSttCntnt = nSttCnt;
+ pAttr->nEndCntnt = nSttCnt;
+
+ pAttr = pAttr->GetNext();
+ }
+ }
+
+ return new HTMLTableCnts( pStNd );
+}
+
+sal_uInt16 SwHTMLParser::IncGrfsThatResizeTable()
+{
+ return pTable ? pTable->IncGrfsThatResize() : 0;
+}
+
+void SwHTMLParser::RegisterDrawObjectToTable( HTMLTable *pCurTable,
+ SdrObject *pObj, sal_uInt8 nPrcWidth )
+{
+ pCurTable->RegisterDrawObject( pObj, nPrcWidth );
+}
+
+void SwHTMLParser::BuildTableCell( HTMLTable *pCurTable, sal_Bool bReadOptions,
+ sal_Bool bHead )
+{
+ if( !IsParserWorking() && !pPendStack )
+ return;
+
+ _CellSaveStruct* pSaveStruct;
+
+ int nToken = 0;
+ sal_Bool bPending = sal_False;
+ if( pPendStack )
+ {
+ pSaveStruct = (_CellSaveStruct*)pPendStack->pData;
+
+ SwPendingStack* pTmp = pPendStack->pNext;
+ delete pPendStack;
+ pPendStack = pTmp;
+ nToken = pPendStack ? pPendStack->nToken : GetSaveToken();
+ bPending = SVPAR_ERROR == eState && pPendStack != 0;
+
+ SaveState( nToken );
+ }
+ else
+ {
+ // <TH> bzw. <TD> wurde bereits gelesen
+ if( pTable->IsOverflowing() )
+ {
+ SaveState( 0 );
+ return;
+ }
+
+ if( !pCurTable->GetContext() )
+ {
+// MIB: 5.9.2000: Do we need this any longer?
+// bIsWriterDoc = sal_True;
+ sal_Bool bTopTable = pTable==pCurTable;
+
+ // die Tabelle besitzt noch keinen Inhalt, d.h. die eigentliche
+ // Tabelle muss erst noch angelegt werden
+
+ String aStyle, aId, aClass;
+ static sal_uInt16 aWhichIds[] =
+ {
+ RES_PARATR_SPLIT, RES_PARATR_SPLIT,
+ RES_PAGEDESC, RES_PAGEDESC,
+ RES_BREAK, RES_BREAK,
+ RES_BACKGROUND, RES_BACKGROUND,
+ RES_KEEP, RES_KEEP,
+ RES_LAYOUT_SPLIT, RES_LAYOUT_SPLIT,
+ 0
+ };
+
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), aWhichIds );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ sal_Bool bStyleParsed = ParseStyleOptions( pCurTable->GetStyle(),
+ pCurTable->GetId(),
+ pCurTable->GetClass(),
+ aItemSet, aPropInfo );
+ const SfxPoolItem *pItem = 0;
+ if( bStyleParsed )
+ {
+ if( SFX_ITEM_SET == aItemSet.GetItemState(
+ RES_BACKGROUND, sal_False, &pItem ) )
+ {
+ pCurTable->SetBGBrush( *(const SvxBrushItem *)pItem );
+ aItemSet.ClearItem( RES_BACKGROUND );
+ }
+ if( SFX_ITEM_SET == aItemSet.GetItemState(
+ RES_PARATR_SPLIT, sal_False, &pItem ) )
+ {
+ aItemSet.Put(
+ SwFmtLayoutSplit( ((const SvxFmtSplitItem *)pItem)
+ ->GetValue() ) );
+ aItemSet.ClearItem( RES_PARATR_SPLIT );
+ }
+ }
+
+ // Den linken/rechten Absatzeinzug ermitteln
+ sal_uInt16 nLeftSpace = 0;
+ sal_uInt16 nRightSpace = 0;
+ short nIndent;
+ GetMarginsFromContextWithNumBul( nLeftSpace, nRightSpace, nIndent );
+
+ // die aktuelle Position an die wir irgendwann zurueckkehren
+ SwPosition *pSavePos = 0;
+ sal_Bool bForceFrame = sal_False;
+ sal_Bool bAppended = sal_False;
+ sal_Bool bParentLFStripped = sal_False;
+ if( bTopTable )
+ {
+ // Sind wir in einer Tabelle in der Tabelle?
+ const SwNode *pNd = pDoc->GetNodes()[pPam->GetPoint()->nNode];
+ const SwTableNode *pTblNd = pNd->FindTableNode();
+
+ SvxAdjust eTblAdjust = pTable->GetTableAdjust(sal_False);
+
+ // Wenn das Table-Tag in einem Rahmen stand, den es nicht
+ // mehr gibt, muessen wir die Tabelle in einen Rahmen
+ // stecken.
+ if( pCurTable->IsMakeTopSubTable() && pTblNd!=0 )
+ pCurTable->SetHasToFly();
+
+ // Wenn die Tabelle links oder rechts ausgerivchtet ist,
+ // oder in einen Rahmen soll, dann kommt sie auch in einen
+ // solchen.
+ bForceFrame = eTblAdjust == SVX_ADJUST_LEFT ||
+ eTblAdjust == SVX_ADJUST_RIGHT ||
+ pCurTable->HasToFly();
+
+ // Da Tabelle in Tabelle nicht geht, muss die Tabelle
+ // entweder in einen Rahmen, oder sie steht in einem
+ // Rahmen sie steht in keiner anderen Tabelle.
+ ASSERT( bForceFrame || !pTblNd,
+ "Tabelle in der Tabelle geht nur mit oder in Rahmen" );
+
+ // Entweder kommt die Tabelle in keinen Rahmen und befindet
+ // sich in keinem Rahmen (wird also durch Zellen simuliert),
+ // oder es gibt bereits Inhalt an der entsprechenden Stelle.
+ ASSERT( !bForceFrame || pCurTable->HasParentSection(),
+ "Tabelle im Rahmen hat keine Umgebung!" );
+// SCHOEN WAER'S, aber wie bekommen den Inhalt nicht zurueck
+// in die umgebende Zelle
+// if( bForceFrame && !pCurTable->HasParentSection() )
+// {
+// pCurTable->SetParentContents(
+// InsertTableContents( sal_False, SVX_ADJUST_END ) );
+// pCurTable->SetHasParentSection( sal_True );
+// }
+
+ sal_Bool bAppend = sal_False;
+ if( bForceFrame )
+ {
+ // Wenn die Tabelle in einen Rahmen kommt, muss
+ // nur ein neuer Absatz aufgemacht werden, wenn
+ // der Absatz Rahmen ohne Umlauf enthaelt.
+ bAppend = HasCurrentParaFlys(sal_True);
+ }
+ else
+ {
+ // Sonst muss ein neuer Absatz aufgemacht werden,
+ // wenn der Absatz nicht leer ist, oder Rahmen
+ // oder ::com::sun::star::text::Bookmarks enthaelt.
+ bAppend =
+ pPam->GetPoint()->nContent.GetIndex() ||
+ HasCurrentParaFlys() ||
+ HasCurrentParaBookmarks();
+ }
+ if( bAppend )
+ {
+ if( !pPam->GetPoint()->nContent.GetIndex() )
+ {
+ pDoc->SetTxtFmtColl( *pPam,
+ pCSS1Parser->GetTxtCollFromPool(RES_POOLCOLL_STANDARD) );
+ _HTMLAttr* pTmp =
+ new _HTMLAttr( *pPam->GetPoint(),
+ SvxFontHeightItem( 40 ) );
+ aSetAttrTab.Insert( pTmp, aSetAttrTab.Count() );
+ pTmp = new _HTMLAttr( *pPam->GetPoint(),
+ SvxULSpaceItem( 0, 0 ) );
+ aSetAttrTab.Insert( pTmp, 0 ); // ja, 0, weil schon
+ // vom Tabellenende vorher
+ // was gesetzt sein kann.
+ }
+ AppendTxtNode( AM_NOSPACE );
+ bAppended = sal_True;
+ }
+ else if( aParaAttrs.Count() )
+ {
+ if( !bForceFrame )
+ {
+ // Der Absatz wird gleich hinter die Tabelle
+ // verschoben. Deshalb entfernen wir alle harten
+ // Attribute des Absatzes
+
+ for( sal_uInt16 i=0; i<aParaAttrs.Count(); i++ )
+ aParaAttrs[i]->Invalidate();
+ }
+
+ aParaAttrs.Remove( 0, aParaAttrs.Count() );
+ }
+
+ pSavePos = new SwPosition( *pPam->GetPoint() );
+ }
+ else if( pCurTable->HasParentSection() )
+ {
+ bParentLFStripped = StripTrailingLF() > 0;
+
+ // Absaetze bzw. ueberschriften beeenden
+ nOpenParaToken = 0;
+ nFontStHeadStart = nFontStMin;
+
+ // die harten Attribute an diesem Absatz werden nie mehr ungueltig
+ if( aParaAttrs.Count() )
+ aParaAttrs.Remove( 0, aParaAttrs.Count() );
+
+#ifndef NUM_RELSPACE
+ if( GetNumInfo().GetNumRule() )
+ UpdateNumRuleInTable();
+#endif
+ }
+
+ // einen Tabellen Kontext anlegen
+ _HTMLTableContext *pTCntxt =
+ new _HTMLTableContext( pSavePos, nContextStMin,
+ nContextStAttrMin );
+
+ // alle noch offenen Attribute beenden und hinter der Tabelle
+ // neu aufspannen
+ _HTMLAttrs *pPostIts = 0;
+ if( !bForceFrame && (bTopTable || pCurTable->HasParentSection()) )
+ {
+ SplitAttrTab( pTCntxt->aAttrTab, bTopTable );
+ // Wenn wir einen schon vorhandenen Absatz verwenden, duerfen
+ // in den keine PostIts eingefuegt werden, weil der Absatz
+ // ja hinter die Tabelle wandert. Sie werden deshalb in den
+ // ersten Absatz der Tabelle verschoben.
+ // Bei Tabellen in Tabellen duerfen ebenfalls keine PostIts
+ // in einen noch leeren Absatz eingefuegt werden, weil
+ // der sonat nicht geloescht wird.
+ if( (bTopTable && !bAppended) ||
+ (!bTopTable && !bParentLFStripped &&
+ !pPam->GetPoint()->nContent.GetIndex()) )
+ pPostIts = new _HTMLAttrs;
+ SetAttr( bTopTable, bTopTable, pPostIts );
+ }
+ else
+ {
+ SaveAttrTab( pTCntxt->aAttrTab );
+ if( bTopTable && !bAppended )
+ {
+ pPostIts = new _HTMLAttrs;
+ SetAttr( sal_True, sal_True, pPostIts );
+ }
+ }
+ bNoParSpace = sal_False;
+
+ // Aktuelle Numerierung retten und auschalten.
+ pTCntxt->SetNumInfo( GetNumInfo() );
+ GetNumInfo().Clear();
+ pTCntxt->SavePREListingXMP( *this );
+
+ if( bTopTable )
+ {
+ if( bForceFrame )
+ {
+ // Die Tabelle soll in einen Rahmen geschaufelt werden.
+
+ SfxItemSet aFrmSet( pDoc->GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ if( !pCurTable->IsNewDoc() )
+ Reader::ResetFrmFmtAttrs( aFrmSet );
+
+ SwSurround eSurround = SURROUND_NONE;
+ SwHoriOrient eHori;
+
+ switch( pCurTable->GetTableAdjust(sal_True) )
+ {
+ case SVX_ADJUST_RIGHT:
+ eHori = HORI_RIGHT;
+ eSurround = SURROUND_LEFT;
+ break;
+ case SVX_ADJUST_CENTER:
+ eHori = HORI_CENTER;
+ break;
+ case SVX_ADJUST_LEFT:
+ eSurround = SURROUND_RIGHT;
+ default:
+ eHori = HORI_LEFT;
+ break;
+ }
+ SetAnchorAndAdjustment( VERT_NONE, eHori, aFrmSet,
+ sal_True );
+ aFrmSet.Put( SwFmtSurround(eSurround) );
+
+ SwFmtFrmSize aFrmSize( ATT_VAR_SIZE, 20*MM50, MINLAY );
+ aFrmSize.SetWidthPercent( 100 );
+ aFrmSet.Put( aFrmSize );
+
+ sal_uInt16 nSpace = pCurTable->GetHSpace();
+ if( nSpace )
+ aFrmSet.Put( SvxLRSpaceItem(nSpace,nSpace) );
+ nSpace = pCurTable->GetVSpace();
+ if( nSpace )
+ aFrmSet.Put( SvxULSpaceItem(nSpace,nSpace) );
+
+ RndStdIds eAnchorId = ((const SwFmtAnchor&)aFrmSet.
+ Get( RES_ANCHOR )).
+ GetAnchorId();
+ SwFrmFmt *pFrmFmt = pDoc->MakeFlySection(
+ eAnchorId, pPam->GetPoint(), &aFrmSet );
+
+ pTCntxt->SetFrmFmt( pFrmFmt );
+ const SwFmtCntnt& rFlyCntnt = pFrmFmt->GetCntnt();
+ pPam->GetPoint()->nNode = *rFlyCntnt.GetCntntIdx();
+ SwCntntNode *pCNd =
+ pDoc->GetNodes().GoNext( &(pPam->GetPoint()->nNode) );
+ pPam->GetPoint()->nContent.Assign( pCNd, 0 );
+
+ // automatisch verankerte Rahmen muessen noch um
+ // eine Position nach vorne verschoben werden.
+ //if( FLY_AUTO_CNTNT==eAnchorId )
+ // aMoveFlyFrms.C40_INSERT( SwFrmFmt, pFrmFmt,
+ // aMoveFlyFrms.Count() );
+ }
+
+ // eine SwTable mit einer Box anlegen und den PaM in den
+ // Inhalt der Box-Section bewegen (der Ausrichtungs-Parameter
+ // ist erstmal nur ein Dummy und wird spaeter noch richtig
+ // gesetzt)
+ ASSERT( !pPam->GetPoint()->nContent.GetIndex(),
+ "Der Absatz hinter der Tabelle ist nicht leer!" );
+ const SwTable* pSwTable = pDoc->InsertTable( *pPam->GetPoint(),
+ 1, 1, HORI_LEFT );
+
+ if( bForceFrame )
+ {
+ SwNodeIndex aDstIdx( pPam->GetPoint()->nNode );
+ pPam->Move( fnMoveBackward );
+ pDoc->GetNodes().Delete( aDstIdx );
+ }
+ else
+ {
+ if( bStyleParsed )
+ {
+ pCSS1Parser->SetFmtBreak( aItemSet, aPropInfo );
+ pSwTable->GetFrmFmt()->SetAttr( aItemSet );
+ }
+ pPam->Move( fnMoveBackward );
+ }
+
+ const SwNode *pNd = pDoc->GetNodes()[pPam->GetPoint()->nNode];
+ if( !bAppended && !bForceFrame )
+ {
+ SwTxtNode* pOldTxtNd =
+ pDoc->GetNodes()[pSavePos->nNode]->GetTxtNode();
+ ASSERT( pOldTxtNd, "Wieso stehen wir in keinem Txt-Node?" );
+ SwFrmFmt *pFrmFmt = pSwTable->GetFrmFmt();
+
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pOldTxtNd->GetSwAttrSet()
+ .GetItemState( RES_PAGEDESC, sal_False, &pItem ) &&
+ ((SwFmtPageDesc *)pItem)->GetPageDesc() )
+ {
+ pFrmFmt->SetAttr( *pItem );
+ pOldTxtNd->ResetAttr( RES_PAGEDESC );
+ }
+ if( SFX_ITEM_SET == pOldTxtNd->GetSwAttrSet()
+ .GetItemState( RES_BREAK, sal_True, &pItem ) )
+ {
+ switch( ((SvxFmtBreakItem *)pItem)->GetBreak() )
+ {
+ case SVX_BREAK_PAGE_BEFORE:
+ case SVX_BREAK_PAGE_AFTER:
+ case SVX_BREAK_PAGE_BOTH:
+ pFrmFmt->SetAttr( *pItem );
+ pOldTxtNd->ResetAttr( RES_BREAK );
+ }
+ }
+ }
+
+ if( !bAppended && pPostIts )
+ {
+ // noch vorhandene PostIts in den ersten Absatz
+ // der Tabelle setzen
+ InsertAttrs( *pPostIts );
+ delete pPostIts;
+ pPostIts = 0;
+ }
+
+ pTCntxt->SetTableNode( (SwTableNode *)pNd->FindTableNode() );
+
+ pCurTable->SetTable( pTCntxt->GetTableNode(), pTCntxt,
+ nLeftSpace, nRightSpace,
+ pSwTable, bForceFrame );
+
+ ASSERT( !pPostIts, "ubenutzte PostIts" );
+ }
+ else
+ {
+ // noch offene Bereiche muessen noch entfernt werden
+ if( EndSections( bParentLFStripped ) )
+ bParentLFStripped = sal_False;
+
+ if( pCurTable->HasParentSection() )
+ {
+ // dannach entfernen wir ein ggf. zu viel vorhandenen
+ // leeren Absatz, aber nur, wenn er schon vor dem
+ // entfernen von LFs leer war
+ if( !bParentLFStripped )
+ StripTrailingPara();
+
+ if( pPostIts )
+ {
+ // noch vorhandene PostIts an das Ende des jetzt
+ // aktuellen Absatzes schieben
+ InsertAttrs( *pPostIts );
+ delete pPostIts;
+ pPostIts = 0;
+ }
+ }
+
+ const SwNode *pNd = pDoc->GetNodes()[pPam->GetPoint()->nNode];
+ const SwStartNode *pStNd = (pTable->bFirstCell ? pNd->FindTableNode()
+ : pNd->FindTableBoxStartNode() );
+
+ pCurTable->SetTable( pStNd, pTCntxt, nLeftSpace, nRightSpace );
+ }
+
+ // Den Kontext-Stack einfrieren, denn es koennen auch mal
+ // irgendwo ausserhalb von Zellen Attribute gesetzt werden.
+ // Darf nicht frueher passieren, weil eventuell noch im
+ // Stack gesucht wird!!!
+ nContextStMin = aContexts.Count();
+ nContextStAttrMin = nContextStMin;
+ }
+
+ pSaveStruct = new _CellSaveStruct( *this, pCurTable, bHead,
+ bReadOptions );
+
+ // ist beim ersten GetNextToken schon pending, muss bei
+ // wiederaufsetzen auf jedenfall neu gelesen werden!
+ SaveState( 0 );
+ }
+
+ if( !nToken )
+ nToken = GetNextToken(); // Token nach <TABLE>
+
+ sal_Bool bDone = sal_False;
+ while( (IsParserWorking() && !bDone) || bPending )
+ {
+ SaveState( nToken );
+
+ nToken = FilterToken( nToken );
+
+ ASSERT( pPendStack || !bCallNextToken || pSaveStruct->IsInSection(),
+ "Wo ist die Section gebieben?" );
+ if( !pPendStack && bCallNextToken && pSaveStruct->IsInSection() )
+ {
+ // NextToken direkt aufrufen (z.B. um den Inhalt von
+ // Floating-Frames oder Applets zu ignorieren)
+ NextToken( nToken );
+ }
+ else switch( nToken )
+ {
+ case HTML_TABLEHEADER_ON:
+ case HTML_TABLEDATA_ON:
+ case HTML_TABLEROW_ON:
+ case HTML_TABLEROW_OFF:
+ case HTML_THEAD_ON:
+ case HTML_THEAD_OFF:
+ case HTML_TFOOT_ON:
+ case HTML_TFOOT_OFF:
+ case HTML_TBODY_ON:
+ case HTML_TBODY_OFF:
+ case HTML_TABLE_OFF:
+ SkipToken(-1);
+ case HTML_TABLEHEADER_OFF:
+ case HTML_TABLEDATA_OFF:
+ bDone = sal_True;
+ break;
+ case HTML_TABLE_ON:
+ {
+ sal_Bool bTopTable = sal_False;
+ sal_Bool bHasToFly = sal_False;
+ SvxAdjust eTabAdjust = SVX_ADJUST_END;
+ if( !pPendStack )
+ {
+ // nur wenn eine neue Tabelle aufgemacht wird, aber
+ // nicht wenn nach einem Pending in der Tabelle
+ // weitergelesen wird!
+ pSaveStruct->pTable = pTable;
+
+ // HACK: Eine Section fuer eine Tabelle anlegen, die
+ // in einen Rahmen kommt.
+ if( !pSaveStruct->IsInSection() )
+ {
+ // Diese Schleife muss vorwartes sein, weil die
+ // erste Option immer gewinnt.
+ sal_Bool bNeedsSection = sal_False;
+ const HTMLOptions *pOptions = GetOptions();
+ for( sal_uInt16 i=0; i<pOptions->Count(); i++ )
+ {
+ const HTMLOption *pOption = (*pOptions)[i];
+ if( HTML_O_ALIGN==pOption->GetToken() )
+ {
+ SvxAdjust eAdjust =
+ (SvxAdjust)pOption->GetEnum(
+ aHTMLPAlignTable, SVX_ADJUST_END );
+ bNeedsSection = SVX_ADJUST_LEFT == eAdjust ||
+ SVX_ADJUST_RIGHT == eAdjust;
+ break;
+ }
+ }
+ if( bNeedsSection )
+ {
+ pSaveStruct->AddContents(
+ InsertTableContents(bHead ) );
+ }
+ }
+ else
+ {
+ // Wenn wir mitlerweile in einem Rahmen stehen
+ // koennen wir erneut eine echte Tabelle aufmachen.
+ // Wir erkennen das daran, dass wir keinen
+ // Tabellen-Node mehr finden.
+ bTopTable = pDoc->GetNodes()[pPam->GetPoint()->nNode]
+ ->FindTableNode() == 0;
+
+ // Wenn im aktuellen Absatz Flys verankert sind,
+ // muss die neue Tabelle in einen Rahmen.
+ bHasToFly = HasCurrentParaFlys(sal_False,sal_True);
+ }
+
+ // in der Zelle kann sich ein Bereich befinden!
+ eTabAdjust = aAttrTab.pAdjust
+ ? ((const SvxAdjustItem&)aAttrTab.pAdjust->GetItem()).
+ GetAdjust()
+ : SVX_ADJUST_END;
+ }
+
+ HTMLTable *pSubTable = BuildTable( eTabAdjust,
+ bHead,
+ pSaveStruct->IsInSection(),
+ bTopTable, bHasToFly );
+ if( SVPAR_PENDING != GetStatus() )
+ {
+ // nur wenn die Tabelle wirklich zu Ende ist!
+ if( pSubTable )
+ {
+ ASSERT( pSubTable->GetTableAdjust(sal_False)!= SVX_ADJUST_LEFT &&
+ pSubTable->GetTableAdjust(sal_False)!= SVX_ADJUST_RIGHT,
+ "links oder rechts ausgerichtete Tabellen gehoehren in Rahmen" );
+
+
+ HTMLTableCnts *pParentContents =
+ pSubTable->GetParentContents();
+ if( pParentContents )
+ {
+ ASSERT( !pSaveStruct->IsInSection(),
+ "Wo ist die Section geblieben" );
+
+ // Wenn jetzt keine Tabelle kommt haben wir eine
+ // Section
+ pSaveStruct->AddContents( pParentContents );
+ }
+
+ const SwStartNode *pCapStNd =
+ pSubTable->GetCaptionStartNode();
+
+ if( pSubTable->GetContext() )
+ {
+ ASSERT( !pSubTable->GetContext()->GetFrmFmt(),
+ "Tabelle steht im Rahmen" );
+
+ if( pCapStNd && pSubTable->IsTopCaption() )
+ {
+ pSaveStruct->AddContents(
+ new HTMLTableCnts(pCapStNd) );
+ }
+
+ pSaveStruct->AddContents(
+ new HTMLTableCnts(pSubTable) );
+
+ if( pCapStNd && !pSubTable->IsTopCaption() )
+ {
+ pSaveStruct->AddContents(
+ new HTMLTableCnts(pCapStNd) );
+ }
+
+ // Jetzt haben wir keine Section mehr
+ pSaveStruct->ClearIsInSection();
+ }
+ else if( pCapStNd )
+ {
+ // Da wir diese Sction nicht mehr loeschen
+ // koennen (sie koeente zur erster Box
+ // gehoeren), fuegen wir sie ein.
+ pSaveStruct->AddContents(
+ new HTMLTableCnts(pCapStNd) );
+
+ // Jetzt haben wir keine Section mehr
+ pSaveStruct->ClearIsInSection();
+ }
+ }
+
+ pTable = pSaveStruct->pTable;
+ }
+ }
+ break;
+
+ case HTML_NOBR_ON:
+ // HACK fuer MS: Steht das <NOBR> zu beginn der Zelle?
+ pSaveStruct->StartNoBreak( *pPam->GetPoint() );
+ break;
+
+ case HTML_NOBR_OFF:
+ pSaveStruct->EndNoBreak( *pPam->GetPoint() );
+ break;
+
+ case HTML_COMMENT:
+ // Mit Kommentar-Feldern werden Spaces nicht mehr geloescht
+ // ausserdem wollen wir fuer einen Kommentar keine neue Zelle
+ // anlegen !!!
+ NextToken( nToken );
+ break;
+
+ case HTML_MARQUEE_ON:
+ if( !pSaveStruct->IsInSection() )
+ {
+ // eine neue Section anlegen, der PaM steht dann darin
+ pSaveStruct->AddContents(
+ InsertTableContents( bHead ) );
+ }
+ bCallNextToken = sal_True;
+ NewMarquee( pCurTable );
+ break;
+
+ case HTML_TEXTTOKEN:
+ // keine Section fuer einen leeren String anlegen
+ if( !pSaveStruct->IsInSection() && 1==aToken.Len() &&
+ ' '==aToken.GetChar(0) )
+ break;
+ default:
+ if( !pSaveStruct->IsInSection() )
+ {
+ // eine neue Section anlegen, der PaM steht dann darin
+ pSaveStruct->AddContents(
+ InsertTableContents( bHead ) );
+ }
+
+ if( IsParserWorking() || bPending )
+ NextToken( nToken );
+ break;
+ }
+
+ ASSERT( !bPending || !pPendStack,
+ "SwHTMLParser::BuildTableCell: Es gibt wieder einen Pend-Stack" );
+ bPending = sal_False;
+ if( IsParserWorking() )
+ SaveState( 0 );
+
+ if( !bDone )
+ nToken = GetNextToken();
+ }
+
+ if( SVPAR_PENDING == GetStatus() )
+ {
+ pPendStack = new SwPendingStack( bHead ? HTML_TABLEHEADER_ON
+ : HTML_TABLEDATA_ON, pPendStack );
+ pPendStack->pData = pSaveStruct;
+
+ return;
+ }
+
+ // Falls der Inhalt der Zelle leer war, muessen wir noch einen
+ // leeren Inhalt anlegen. Ausserdem legen wir einen leeren Inhalt
+ // an, wenn die Zelle mit einer Tabelle aufgehoert hat und keine
+ // COL-Tags hatte (sonst wurde sie wahrscheinlich von uns exportiert,
+ // und dann wollen wir natuerlich keinen zusaetzlichen Absatz haben).
+ if( !pSaveStruct->GetFirstContents() ||
+ (!pSaveStruct->IsInSection() && !pCurTable->HasColTags()) )
+ {
+ ASSERT( pSaveStruct->GetFirstContents() ||
+ !pSaveStruct->IsInSection(),
+ "Section oder nicht, das ist hier die Frage" );
+ const SwStartNode *pStNd =
+ InsertTableSection( pSaveStruct->IsHeaderCell()
+ ? RES_POOLCOLL_TABLE_HDLN
+ : RES_POOLCOLL_TABLE );
+ pDoc->GetNodes()[pStNd->GetIndex()+1]
+ ->GetCntntNode()->SetAttr( SvxFontHeightItem(40) );
+ pSaveStruct->AddContents( new HTMLTableCnts(pStNd) );
+ pSaveStruct->ClearIsInSection();
+ }
+
+ sal_Bool bLFStripped = sal_False;
+ if( pSaveStruct->IsInSection() )
+ {
+ pSaveStruct->CheckNoBreak( *pPam->GetPoint(), pDoc );
+
+ // Alle noch offenen Kontexte beenden. Wir nehmen hier
+ // AttrMin, weil nContxtStMin evtl. veraendert wurde.
+ // Da es durch EndContext wieder restauriert wird, geht das.
+ while( aContexts.Count() > nContextStAttrMin+1 )
+ {
+ _HTMLAttrContext *pCntxt = PopContext();
+ EndContext( pCntxt );
+ delete pCntxt;
+ }
+
+ // LFs am Absatz-Ende entfernen
+ if( StripTrailingLF()==0 && !pPam->GetPoint()->nContent.GetIndex() )
+ StripTrailingPara();
+
+#ifndef NUM_RELSPACE
+ if( GetNumInfo().GetNumRule() )
+ UpdateNumRuleInTable();
+#endif
+
+ // falls fuer die Zelle eine Ausrichtung gesetzt wurde, muessen
+ // wir die beenden
+ _HTMLAttrContext *pCntxt = PopContext();
+ EndContext( pCntxt );
+ delete pCntxt;
+ }
+ else
+ {
+ // Alle noch offenen Kontexte beenden
+ while( aContexts.Count() > nContextStAttrMin )
+ {
+ _HTMLAttrContext *pCntxt = PopContext();
+ ClearContext( pCntxt );
+ delete pCntxt;
+ }
+ }
+
+ // auch eine Numerierung muss beendet werden
+ GetNumInfo().Clear();
+
+ SetAttr( sal_False );
+
+ pSaveStruct->InsertCell( *this, pCurTable );
+
+ // wir stehen jetzt (wahrschenlich) vor <TH>, <TD>, <TR> oder </TABLE>
+ delete pSaveStruct;
+}
+
+
+class _RowSaveStruct : public SwPendingStackData
+{
+public:
+ SvxAdjust eAdjust;
+ SwVertOrient eVertOri;
+ sal_Bool bHasCells;
+
+ _RowSaveStruct() :
+ bHasCells( sal_False ), eAdjust( SVX_ADJUST_END ), eVertOri( VERT_TOP )
+ {}
+};
+
+
+void SwHTMLParser::BuildTableRow( HTMLTable *pCurTable, sal_Bool bReadOptions,
+ SvxAdjust eGrpAdjust,
+ SwVertOrient eGrpVertOri )
+{
+ // <TR> wurde bereist gelesen
+
+ if( !IsParserWorking() && !pPendStack )
+ return;
+
+ int nToken = 0;
+ _RowSaveStruct* pSaveStruct;
+
+ sal_Bool bPending = sal_False;
+ if( pPendStack )
+ {
+ pSaveStruct = (_RowSaveStruct*)pPendStack->pData;
+
+ SwPendingStack* pTmp = pPendStack->pNext;
+ delete pPendStack;
+ pPendStack = pTmp;
+ nToken = pPendStack ? pPendStack->nToken : GetSaveToken();
+ bPending = SVPAR_ERROR == eState && pPendStack != 0;
+
+ SaveState( nToken );
+ }
+ else
+ {
+ SvxAdjust eAdjust = eGrpAdjust;
+ SwVertOrient eVertOri = eGrpVertOri;
+ Color aBGColor;
+ String aBGImage, aStyle, aId, aClass;
+ sal_Bool bBGColor = sal_False;
+ pSaveStruct = new _RowSaveStruct;
+
+ if( bReadOptions )
+ {
+ const HTMLOptions *pOptions = GetOptions();
+ for( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_ALIGN:
+ eAdjust = (SvxAdjust)pOption->GetEnum(
+ aHTMLPAlignTable, eAdjust );
+ break;
+ case HTML_O_VALIGN:
+ eVertOri = (SwVertOrient)pOption->GetEnum(
+ aHTMLTblVAlignTable, eVertOri );
+ break;
+ case HTML_O_BGCOLOR:
+ // Leere BGCOLOR bei <TABLE>, <TR> und <TD>/<TH> wie Netsc.
+ // ignorieren, bei allen anderen Tags *wirklich* nicht.
+ if( pOption->GetString().Len() )
+ {
+ pOption->GetColor( aBGColor );
+ bBGColor = sal_True;
+ }
+ break;
+ case HTML_O_BACKGROUND:
+ aBGImage = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass= pOption->GetString();
+ break;
+ }
+ }
+ }
+
+ if( aId.Len() )
+ InsertBookmark( aId );
+
+ SvxBrushItem *pBrushItem =
+ CreateBrushItem( bBGColor ? &aBGColor : 0, aBGImage, aStyle,
+ aId, aClass );
+ pCurTable->OpenRow( eAdjust, eVertOri, pBrushItem );
+ // ist beim ersten GetNextToken schon pending, muss bei
+ // wiederaufsetzen auf jedenfall neu gelesen werden!
+ SaveState( 0 );
+ }
+
+ if( !nToken )
+ nToken = GetNextToken(); // naechstes Token
+
+ sal_Bool bDone = sal_False;
+ while( (IsParserWorking() && !bDone) || bPending )
+ {
+ SaveState( nToken );
+
+ nToken = FilterToken( nToken );
+
+ ASSERT( pPendStack || !bCallNextToken ||
+ pCurTable->GetContext() || pCurTable->HasParentSection(),
+ "Wo ist die Section gebieben?" );
+ if( !pPendStack && bCallNextToken &&
+ (pCurTable->GetContext() || pCurTable->HasParentSection()) )
+ {
+ // NextToken direkt aufrufen (z.B. um den Inhalt von
+ // Floating-Frames oder Applets zu ignorieren)
+ NextToken( nToken );
+ }
+ else switch( nToken )
+ {
+ case HTML_TABLE_ON:
+ if( !pCurTable->GetContext() )
+ {
+ SkipToken( -1 );
+ bDone = sal_True;
+ }
+// else
+// {
+// NextToken( nToken );
+// }
+ break;
+ case HTML_TABLEROW_ON:
+ case HTML_THEAD_ON:
+ case HTML_THEAD_OFF:
+ case HTML_TBODY_ON:
+ case HTML_TBODY_OFF:
+ case HTML_TFOOT_ON:
+ case HTML_TFOOT_OFF:
+ case HTML_TABLE_OFF:
+ SkipToken( -1 );
+ case HTML_TABLEROW_OFF:
+ bDone = sal_True;
+ break;
+ case HTML_TABLEHEADER_ON:
+ case HTML_TABLEDATA_ON:
+ BuildTableCell( pCurTable, sal_True, HTML_TABLEHEADER_ON==nToken );
+ if( SVPAR_PENDING != GetStatus() )
+ {
+ pSaveStruct->bHasCells = sal_True;
+ bDone = pTable->IsOverflowing();
+ }
+ break;
+ case HTML_CAPTION_ON:
+ BuildTableCaption( pCurTable );
+ bDone = pTable->IsOverflowing();
+ break;
+ case HTML_CAPTION_OFF:
+ case HTML_TABLEHEADER_OFF:
+ case HTML_TABLEDATA_OFF:
+ case HTML_COLGROUP_ON:
+ case HTML_COLGROUP_OFF:
+ case HTML_COL_ON:
+ case HTML_COL_OFF:
+ // wo keine Zelle anfing kann auch keine aufhoehren, oder?
+ // und die ganzen anderen Tokens haben hier auch nicht zu
+ // suchen und machen nur die Tabelle kaputt
+ break;
+ case HTML_MULTICOL_ON:
+ // spaltige Rahmen koennen wir hier leider nicht einguegen
+ break;
+ case HTML_FORM_ON:
+ NewForm( sal_False ); // keinen neuen Absatz aufmachen!
+ break;
+ case HTML_FORM_OFF:
+ EndForm( sal_False ); // keinen neuen Absatz aufmachen!
+ break;
+ case HTML_COMMENT:
+ NextToken( nToken );
+ break;
+ case HTML_MAP_ON:
+ // eine Image-Map fuegt nichts ein, deshalb koennen wir sie
+ // problemlos auch ohne Zelle parsen
+ NextToken( nToken );
+ break;
+ case HTML_TEXTTOKEN:
+ if( (pCurTable->GetContext() ||
+ !pCurTable->HasParentSection()) &&
+ 1==aToken.Len() && ' '==aToken.GetChar(0) )
+ break;
+ default:
+ pCurTable->MakeParentContents();
+ NextToken( nToken );
+ break;
+ }
+
+ ASSERT( !bPending || !pPendStack,
+ "SwHTMLParser::BuildTableRow: Es gibt wieder einen Pend-Stack" );
+ bPending = sal_False;
+ if( IsParserWorking() )
+ SaveState( 0 );
+
+ if( !bDone )
+ nToken = GetNextToken();
+ }
+
+ if( SVPAR_PENDING == GetStatus() )
+ {
+ pPendStack = new SwPendingStack( HTML_TABLEROW_ON, pPendStack );
+ pPendStack->pData = pSaveStruct;
+ }
+ else
+ {
+ pCurTable->CloseRow( !pSaveStruct->bHasCells );
+ delete pSaveStruct;
+ }
+
+ // wir stehen jetzt (wahrscheinlich) vor <TR> oder </TABLE>
+}
+
+void SwHTMLParser::BuildTableSection( HTMLTable *pCurTable,
+ sal_Bool bReadOptions,
+ sal_Bool bHead )
+{
+ // <THEAD>, <TBODY> bzw. <TFOOT> wurde bereits gelesen
+ if( !IsParserWorking() && !pPendStack )
+ return;
+
+ int nToken = 0;
+ sal_Bool bPending = sal_False;
+ _RowSaveStruct* pSaveStruct;
+
+ if( pPendStack )
+ {
+ pSaveStruct = (_RowSaveStruct*)pPendStack->pData;
+
+ SwPendingStack* pTmp = pPendStack->pNext;
+ delete pPendStack;
+ pPendStack = pTmp;
+ nToken = pPendStack ? pPendStack->nToken : GetSaveToken();
+ bPending = SVPAR_ERROR == eState && pPendStack != 0;
+
+ SaveState( nToken );
+ }
+ else
+ {
+ pSaveStruct = new _RowSaveStruct;
+
+ if( bReadOptions )
+ {
+ const HTMLOptions *pOptions = GetOptions();
+ for( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ InsertBookmark( pOption->GetString() );
+ break;
+ case HTML_O_ALIGN:
+ pSaveStruct->eAdjust =
+ (SvxAdjust)pOption->GetEnum( aHTMLPAlignTable,
+ pSaveStruct->eAdjust );
+ break;
+ case HTML_O_VALIGN:
+ pSaveStruct->eVertOri =
+ (SwVertOrient)pOption->GetEnum( aHTMLTblVAlignTable,
+ pSaveStruct->eVertOri );
+ break;
+ }
+ }
+ }
+
+ // ist beim ersten GetNextToken schon pending, muss bei
+ // wiederaufsetzen auf jedenfall neu gelesen werden!
+ SaveState( 0 );
+ }
+
+ if( !nToken )
+ nToken = GetNextToken(); // naechstes Token
+
+ sal_Bool bDone = sal_False;
+ while( (IsParserWorking() && !bDone) || bPending )
+ {
+ SaveState( nToken );
+
+ nToken = FilterToken( nToken );
+
+ ASSERT( pPendStack || !bCallNextToken ||
+ pCurTable->GetContext() || pCurTable->HasParentSection(),
+ "Wo ist die Section gebieben?" );
+ if( !pPendStack && bCallNextToken &&
+ (pCurTable->GetContext() || pCurTable->HasParentSection()) )
+ {
+ // NextToken direkt aufrufen (z.B. um den Inhalt von
+ // Floating-Frames oder Applets zu ignorieren)
+ NextToken( nToken );
+ }
+ else switch( nToken )
+ {
+ case HTML_TABLE_ON:
+ if( !pCurTable->GetContext() )
+ {
+ SkipToken( -1 );
+ bDone = sal_True;
+ }
+// else
+// {
+// NextToken( nToken );
+// }
+ break;
+ case HTML_THEAD_ON:
+ case HTML_TFOOT_ON:
+ case HTML_TBODY_ON:
+ case HTML_TABLE_OFF:
+ SkipToken( -1 );
+ case HTML_THEAD_OFF:
+ case HTML_TBODY_OFF:
+ case HTML_TFOOT_OFF:
+ bDone = sal_True;
+ break;
+ case HTML_CAPTION_ON:
+ BuildTableCaption( pCurTable );
+ bDone = pTable->IsOverflowing();
+ break;
+ case HTML_CAPTION_OFF:
+ break;
+ case HTML_TABLEHEADER_ON:
+ case HTML_TABLEDATA_ON:
+ SkipToken( -1 );
+ BuildTableRow( pCurTable, sal_False, pSaveStruct->eAdjust,
+ pSaveStruct->eVertOri );
+ bDone = pTable->IsOverflowing();
+ break;
+ case HTML_TABLEROW_ON:
+ BuildTableRow( pCurTable, sal_True, pSaveStruct->eAdjust,
+ pSaveStruct->eVertOri );
+ bDone = pTable->IsOverflowing();
+ break;
+ case HTML_MULTICOL_ON:
+ // spaltige Rahmen koennen wir hier leider nicht einguegen
+ break;
+ case HTML_FORM_ON:
+ NewForm( sal_False ); // keinen neuen Absatz aufmachen!
+ break;
+ case HTML_FORM_OFF:
+ EndForm( sal_False ); // keinen neuen Absatz aufmachen!
+ break;
+ case HTML_TEXTTOKEN:
+ // Blank-Strings sind Folge von CR+LF und kein Text
+ if( (pCurTable->GetContext() ||
+ !pCurTable->HasParentSection()) &&
+ 1==aToken.Len() && ' '==aToken.GetChar(0) )
+ break;
+ default:
+ pCurTable->MakeParentContents();
+ NextToken( nToken );
+ }
+
+ ASSERT( !bPending || !pPendStack,
+ "SwHTMLParser::BuildTableSection: Es gibt wieder einen Pend-Stack" );
+ bPending = sal_False;
+ if( IsParserWorking() )
+ SaveState( 0 );
+
+ if( !bDone )
+ nToken = GetNextToken();
+ }
+
+ if( SVPAR_PENDING == GetStatus() )
+ {
+ pPendStack = new SwPendingStack( bHead ? HTML_THEAD_ON
+ : HTML_TBODY_ON, pPendStack );
+ pPendStack->pData = pSaveStruct;
+ }
+ else
+ {
+ pCurTable->CloseSection( bHead );
+ delete pSaveStruct;
+ }
+
+ // wir stehen jetzt (wahrscheinlich) vor <TBODY>,... oder </TABLE>
+}
+
+struct _TblColGrpSaveStruct : public SwPendingStackData
+{
+ sal_uInt16 nColGrpSpan;
+ sal_uInt16 nColGrpWidth;
+ sal_Bool bRelColGrpWidth;
+ SvxAdjust eColGrpAdjust;
+ SwVertOrient eColGrpVertOri;
+
+ inline _TblColGrpSaveStruct();
+
+
+ inline void CloseColGroup( HTMLTable *pTable );
+};
+
+inline _TblColGrpSaveStruct::_TblColGrpSaveStruct() :
+ nColGrpSpan( 1 ), nColGrpWidth( 0 ),
+ bRelColGrpWidth( sal_False ), eColGrpAdjust( SVX_ADJUST_END ),
+ eColGrpVertOri( VERT_TOP )
+{}
+
+
+inline void _TblColGrpSaveStruct::CloseColGroup( HTMLTable *pTable )
+{
+ pTable->CloseColGroup( nColGrpSpan, nColGrpWidth,
+ bRelColGrpWidth, eColGrpAdjust, eColGrpVertOri );
+}
+
+void SwHTMLParser::BuildTableColGroup( HTMLTable *pCurTable,
+ sal_Bool bReadOptions )
+{
+ // <COLGROUP> wurde bereits gelesen, wenn bReadOptions
+
+ if( !IsParserWorking() && !pPendStack )
+ return;
+
+ int nToken = 0;
+ sal_Bool bPending = sal_False;
+ _TblColGrpSaveStruct* pSaveStruct;
+
+ if( pPendStack )
+ {
+ pSaveStruct = (_TblColGrpSaveStruct*)pPendStack->pData;
+
+ SwPendingStack* pTmp = pPendStack->pNext;
+ delete pPendStack;
+ pPendStack = pTmp;
+ nToken = pPendStack ? pPendStack->nToken : GetSaveToken();
+ bPending = SVPAR_ERROR == eState && pPendStack != 0;
+
+ SaveState( nToken );
+ }
+ else
+ {
+
+ pSaveStruct = new _TblColGrpSaveStruct;
+ if( bReadOptions )
+ {
+ const HTMLOptions *pColGrpOptions = GetOptions();
+ for( sal_uInt16 i = pColGrpOptions->Count(); i; )
+ {
+ const HTMLOption *pColGrpOption = (*pColGrpOptions)[--i];
+ switch( pColGrpOption->GetToken() )
+ {
+ case HTML_O_ID:
+ InsertBookmark( pColGrpOption->GetString() );
+ break;
+ case HTML_O_SPAN:
+ pSaveStruct->nColGrpSpan = (sal_uInt16)pColGrpOption->GetNumber();
+ break;
+ case HTML_O_WIDTH:
+ pSaveStruct->nColGrpWidth = (sal_uInt16)pColGrpOption->GetNumber();
+ pSaveStruct->bRelColGrpWidth =
+ (pColGrpOption->GetString().Search('*') != STRING_NOTFOUND);
+ break;
+ case HTML_O_ALIGN:
+ pSaveStruct->eColGrpAdjust =
+ (SvxAdjust)pColGrpOption->GetEnum( aHTMLPAlignTable,
+ pSaveStruct->eColGrpAdjust );
+ break;
+ case HTML_O_VALIGN:
+ pSaveStruct->eColGrpVertOri =
+ (SwVertOrient)pColGrpOption->GetEnum( aHTMLTblVAlignTable,
+ pSaveStruct->eColGrpVertOri );
+ break;
+ }
+ }
+ }
+ // ist beim ersten GetNextToken schon pending, muss bei
+ // wiederaufsetzen auf jedenfall neu gelesen werden!
+ SaveState( 0 );
+ }
+
+ if( !nToken )
+ nToken = GetNextToken(); // naechstes Token
+
+ sal_Bool bDone = sal_False;
+ while( (IsParserWorking() && !bDone) || bPending )
+ {
+ SaveState( nToken );
+
+ nToken = FilterToken( nToken );
+
+ ASSERT( pPendStack || !bCallNextToken ||
+ pCurTable->GetContext() || pCurTable->HasParentSection(),
+ "Wo ist die Section gebieben?" );
+ if( !pPendStack && bCallNextToken &&
+ (pCurTable->GetContext() || pCurTable->HasParentSection()) )
+ {
+ // NextToken direkt aufrufen (z.B. um den Inhalt von
+ // Floating-Frames oder Applets zu ignorieren)
+ NextToken( nToken );
+ }
+ else switch( nToken )
+ {
+ case HTML_TABLE_ON:
+ if( !pCurTable->GetContext() )
+ {
+ SkipToken( -1 );
+ bDone = sal_True;
+ }
+// else
+// {
+// NextToken( nToken );
+// }
+ break;
+ case HTML_COLGROUP_ON:
+ case HTML_THEAD_ON:
+ case HTML_TFOOT_ON:
+ case HTML_TBODY_ON:
+ case HTML_TABLEROW_ON:
+ case HTML_TABLE_OFF:
+ SkipToken( -1 );
+ case HTML_COLGROUP_OFF:
+ bDone = sal_True;
+ break;
+ case HTML_COL_ON:
+ {
+ sal_uInt16 nColSpan = 1;
+ sal_uInt16 nColWidth = pSaveStruct->nColGrpWidth;
+ sal_Bool bRelColWidth = pSaveStruct->bRelColGrpWidth;
+ SvxAdjust eColAdjust = pSaveStruct->eColGrpAdjust;
+ SwVertOrient eColVertOri = pSaveStruct->eColGrpVertOri;
+
+ const HTMLOptions *pColOptions = GetOptions();
+ for( sal_uInt16 i = pColOptions->Count(); i; )
+ {
+ const HTMLOption *pColOption = (*pColOptions)[--i];
+ switch( pColOption->GetToken() )
+ {
+ case HTML_O_ID:
+ InsertBookmark( pColOption->GetString() );
+ break;
+ case HTML_O_SPAN:
+ nColSpan = (sal_uInt16)pColOption->GetNumber();
+ break;
+ case HTML_O_WIDTH:
+ nColWidth = (sal_uInt16)pColOption->GetNumber();
+ bRelColWidth =
+ (pColOption->GetString().Search('*') != STRING_NOTFOUND);
+ break;
+ case HTML_O_ALIGN:
+ eColAdjust =
+ (SvxAdjust)pColOption->GetEnum( aHTMLPAlignTable,
+ eColAdjust );
+ break;
+ case HTML_O_VALIGN:
+ eColVertOri =
+ (SwVertOrient)pColOption->GetEnum( aHTMLTblVAlignTable,
+ eColVertOri );
+ break;
+ }
+ }
+ pCurTable->InsertCol( nColSpan, nColWidth, bRelColWidth,
+ eColAdjust, eColVertOri );
+
+ // die Angaben in <COLGRP> sollen ignoriert werden, wenn
+ // <COL>-Elemente existieren
+ pSaveStruct->nColGrpSpan = 0;
+ }
+ break;
+ case HTML_COL_OFF:
+ break; // Ignorieren
+ case HTML_MULTICOL_ON:
+ // spaltige Rahmen koennen wir hier leider nicht einguegen
+ break;
+ case HTML_TEXTTOKEN:
+ if( (pCurTable->GetContext() ||
+ !pCurTable->HasParentSection()) &&
+ 1==aToken.Len() && ' '==aToken.GetChar(0) )
+ break;
+ default:
+ pCurTable->MakeParentContents();
+ NextToken( nToken );
+ }
+
+ ASSERT( !bPending || !pPendStack,
+ "SwHTMLParser::BuildTableColGrp: Es gibt wieder einen Pend-Stack" );
+ bPending = sal_False;
+ if( IsParserWorking() )
+ SaveState( 0 );
+
+ if( !bDone )
+ nToken = GetNextToken();
+ }
+
+ if( SVPAR_PENDING == GetStatus() )
+ {
+ pPendStack = new SwPendingStack( HTML_COL_ON, pPendStack );
+ pPendStack->pData = pSaveStruct;
+ }
+ else
+ {
+ pSaveStruct->CloseColGroup( pCurTable );
+ delete pSaveStruct;
+ }
+}
+
+class _CaptionSaveStruct : public _SectionSaveStruct
+{
+ SwPosition aSavePos;
+ SwHTMLNumRuleInfo aNumRuleInfo; // gueltige Numerierung
+
+public:
+
+ _HTMLAttrTable aAttrTab; // und die Attribute
+
+ _CaptionSaveStruct( SwHTMLParser& rParser, const SwPosition& rPos ) :
+ _SectionSaveStruct( rParser ), aSavePos( rPos )
+ {
+ rParser.SaveAttrTab( aAttrTab );
+
+ // Die aktuelle Numerierung wurde gerettet und muss nur
+ // noch beendet werden.
+#ifndef NUM_RELSPACE
+ if( rParser.GetNumInfo().GetNumRule() )
+ rParser.UpdateNumRuleInTable();
+#endif
+ aNumRuleInfo.Set( rParser.GetNumInfo() );
+ rParser.GetNumInfo().Clear();
+ }
+
+ const SwPosition& GetPos() const { return aSavePos; }
+
+ void RestoreAll( SwHTMLParser& rParser )
+ {
+ // Die alten Stack wiederherstellen
+ Restore( rParser );
+
+ // Die alte Attribut-Tabelle wiederherstellen
+ rParser.RestoreAttrTab( aAttrTab );
+
+ // Die alte Numerierung wieder aufspannen
+ rParser.GetNumInfo().Set( aNumRuleInfo );
+ }
+
+ virtual ~_CaptionSaveStruct();
+};
+
+_CaptionSaveStruct::~_CaptionSaveStruct()
+{}
+
+void SwHTMLParser::BuildTableCaption( HTMLTable *pCurTable )
+{
+ // <CAPTION> wurde bereits gelesen
+
+ if( !IsParserWorking() && !pPendStack )
+ return;
+
+ int nToken = 0;
+ _CaptionSaveStruct* pSaveStruct;
+
+ if( pPendStack )
+ {
+ pSaveStruct = (_CaptionSaveStruct*)pPendStack->pData;
+
+ SwPendingStack* pTmp = pPendStack->pNext;
+ delete pPendStack;
+ pPendStack = pTmp;
+ nToken = pPendStack ? pPendStack->nToken : GetSaveToken();
+ ASSERT( !pPendStack, "Wo kommt hier ein Pending-Stack her?" );
+
+ SaveState( nToken );
+ }
+ else
+ {
+ if( pTable->IsOverflowing() )
+ {
+ SaveState( 0 );
+ return;
+ }
+
+ sal_Bool bTop = sal_True;
+ const HTMLOptions *pOptions = GetOptions();
+ for ( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ if( HTML_O_ALIGN == pOption->GetToken() )
+ {
+ if( pOption->GetString().EqualsIgnoreCaseAscii(sHTML_VA_bottom))
+ bTop = sal_False;
+ }
+ }
+
+ // Alte PaM-Position retten.
+ pSaveStruct = new _CaptionSaveStruct( *this, *pPam->GetPoint() );
+
+ // Eine Text-Section im Icons-Bereich als Container fuer die
+ // Ueberschrift anlegen und PaM dort reinstellen.
+ const SwStartNode *pStNd;
+ if( pTable == pCurTable )
+ pStNd = InsertTempTableCaptionSection();
+ else
+ pStNd = InsertTableSection( RES_POOLCOLL_TEXT );
+
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( HTML_CAPTION_ON );
+
+ // Tabellen-Ueberschriften sind immer zentriert.
+ NewAttr( &aAttrTab.pAdjust, SvxAdjustItem(SVX_ADJUST_CENTER) );
+
+ _HTMLAttrs &rAttrs = pCntxt->GetAttrs();
+ rAttrs.Insert( aAttrTab.pAdjust, rAttrs.Count() );
+
+ PushContext( pCntxt );
+
+ // StartNode der Section an der Tabelle merken.
+ pCurTable->SetCaption( pStNd, bTop );
+
+ // ist beim ersten GetNextToken schon pending, muss bei
+ // wiederaufsetzen auf jedenfall neu gelesen werden!
+ SaveState( 0 );
+ }
+
+ if( !nToken )
+ nToken = GetNextToken(); // naechstes Token
+
+ // </CAPTION> wird laut DTD benoetigt
+ sal_Bool bDone = sal_False;
+ while( IsParserWorking() && !bDone )
+ {
+ SaveState( nToken );
+
+ nToken = FilterToken( nToken );
+
+ switch( nToken )
+ {
+ case HTML_TABLE_ON:
+ if( !pPendStack )
+ {
+ pSaveStruct->pTable = pTable;
+ sal_Bool bHasToFly = pSaveStruct->pTable!=pCurTable;
+ BuildTable( pCurTable->GetTableAdjust( sal_True ),
+ sal_False, sal_True, sal_True, bHasToFly );
+ }
+ else
+ {
+ BuildTable( SVX_ADJUST_END );
+ }
+ if( SVPAR_PENDING != GetStatus() )
+ {
+ pTable = pSaveStruct->pTable;
+ }
+ break;
+ case HTML_TABLE_OFF:
+ case HTML_COLGROUP_ON:
+ case HTML_THEAD_ON:
+ case HTML_TFOOT_ON:
+ case HTML_TBODY_ON:
+ case HTML_TABLEROW_ON:
+ SkipToken( -1 );
+ bDone = sal_True;
+ break;
+
+ case HTML_CAPTION_OFF:
+ bDone = sal_True;
+ break;
+ default:
+ int nNxtToken = nToken;
+ if( pPendStack )
+ {
+ SwPendingStack* pTmp = pPendStack->pNext;
+ delete pPendStack;
+ pPendStack = pTmp;
+
+ ASSERT( !pTmp, "weiter kann es nicht gehen!" );
+ nNxtToken = 0; // neu lesen
+ }
+
+ if( IsParserWorking() )
+ NextToken( nToken );
+ break;
+ }
+
+ if( IsParserWorking() )
+ SaveState( 0 );
+
+ if( !bDone )
+ nToken = GetNextToken();
+ }
+
+ if( SVPAR_PENDING==GetStatus() )
+ {
+ pPendStack = new SwPendingStack( HTML_CAPTION_ON, pPendStack );
+ pPendStack->pData = pSaveStruct;
+ return;
+ }
+
+ // Alle noch offenen Kontexte beenden
+ while( aContexts.Count() > nContextStAttrMin+1 )
+ {
+ _HTMLAttrContext *pCntxt = PopContext();
+ EndContext( pCntxt );
+ delete pCntxt;
+ }
+
+ // LF am Absatz-Ende entfernen
+ sal_Bool bLFStripped = StripTrailingLF() > 0;
+
+ if( pTable==pCurTable )
+ {
+ // Beim spaeteren verschieben der Beschriftung vor oder hinter
+ // die Tabelle wird der letzte Absatz nicht mitverschoben.
+ // Deshalb muss sich am Ende der Section immer ein leerer
+ // Absatz befinden.
+ if( pPam->GetPoint()->nContent.GetIndex() || bLFStripped )
+ AppendTxtNode( AM_NOSPACE );
+ }
+ else
+ {
+ // LFs am Absatz-Ende entfernen
+ if( !pPam->GetPoint()->nContent.GetIndex() && !bLFStripped )
+ StripTrailingPara();
+ }
+
+ // falls fuer die Zelle eine Ausrichtung gesetzt wurde, muessen
+ // wir die beenden
+ _HTMLAttrContext *pCntxt = PopContext();
+ EndContext( pCntxt );
+ delete pCntxt;
+
+ SetAttr( sal_False );
+
+ // Stacks und Attribut-Tabelle wiederherstellen
+ pSaveStruct->RestoreAll( *this );
+
+ // PaM wiederherstellen.
+ *pPam->GetPoint() = pSaveStruct->GetPos();
+
+ delete pSaveStruct;
+}
+
+class _TblSaveStruct : public SwPendingStackData
+{
+public:
+ HTMLTable *pCurTable;
+
+ _TblSaveStruct( HTMLTable *pCurTbl ) :
+ pCurTable( pCurTbl )
+ {}
+
+ virtual ~_TblSaveStruct();
+
+ // Aufbau der Tabelle anstossen und die Tabelle ggf. in einen
+ // Rahmen packen. Wenn sal_True zurueckgegeben wird muss noch ein
+ // Absatz eingefuegt werden!
+ void MakeTable( sal_uInt16 nWidth, SwPosition& rPos, SwDoc *pDoc );
+};
+
+_TblSaveStruct::~_TblSaveStruct()
+{}
+
+
+void _TblSaveStruct::MakeTable( sal_uInt16 nWidth, SwPosition& rPos, SwDoc *pDoc )
+{
+ pCurTable->MakeTable( 0, nWidth );
+
+ _HTMLTableContext *pTCntxt = pCurTable->GetContext();
+ ASSERT( pTCntxt, "Wo ist der Tabellen-Kontext" );
+
+ SwTableNode *pTblNd = pTCntxt->GetTableNode();
+ ASSERT( pTblNd, "Wo ist der Tabellen-Node" );
+
+ if( pDoc->GetRootFrm() && pTblNd )
+ {
+ // Existiert schon ein Layout, dann muss an dieser Tabelle die
+ // BoxFrames neu erzeugt werden.
+
+ if( pTCntxt->GetFrmFmt() )
+ {
+ pTCntxt->GetFrmFmt()->DelFrms();
+ pTblNd->DelFrms();
+ pTCntxt->GetFrmFmt()->MakeFrms();
+ }
+ else
+ {
+ pTblNd->DelFrms();
+ SwNodeIndex aIdx( *pTblNd->EndOfSectionNode(), 1 );
+ ASSERT( aIdx.GetIndex() <= pTCntxt->GetPos()->nNode.GetIndex(),
+ "unerwarteter Node fuer das Tabellen-Layout" );
+ pTblNd->MakeFrms( &aIdx );
+ }
+ }
+
+ rPos = *pTCntxt->GetPos();
+}
+
+
+HTMLTableOptions::HTMLTableOptions( const HTMLOptions *pOptions,
+ SvxAdjust eParentAdjust ) :
+ nCols( 0 ),
+ nWidth( 0 ), nHeight( 0 ),
+ nCellPadding( USHRT_MAX ), nCellSpacing( USHRT_MAX ),
+ nBorder( USHRT_MAX ),
+ nHSpace( 0 ), nVSpace( 0 ),
+ eAdjust( eParentAdjust ), eVertOri( VERT_CENTER ),
+ eFrame( HTML_TF_VOID ), eRules( HTML_TR_NONE ),
+ bPrcWidth( sal_False ),
+ bTableAdjust( sal_False ),
+ bBGColor( sal_False ),
+ aBorderColor( COL_GRAY )
+{
+ sal_Bool bBorderColor = sal_False;
+ sal_Bool bHasFrame = sal_False, bHasRules = sal_False;
+
+ for( sal_uInt16 i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_COLS:
+ nCols = (sal_uInt16)pOption->GetNumber();
+ break;
+ case HTML_O_WIDTH:
+ nWidth = (sal_uInt16)pOption->GetNumber();
+ bPrcWidth = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ if( bPrcWidth && nWidth>100 )
+ nWidth = 100;
+ break;
+ case HTML_O_HEIGHT:
+ nHeight = (sal_uInt16)pOption->GetNumber();
+ if( pOption->GetString().Search('%') != STRING_NOTFOUND )
+ nHeight = 0; // keine %-Anagben benutzen!!!
+ break;
+ case HTML_O_CELLPADDING:
+ nCellPadding = (sal_uInt16)pOption->GetNumber();
+ break;
+ case HTML_O_CELLSPACING:
+ nCellSpacing = (sal_uInt16)pOption->GetNumber();
+ break;
+ case HTML_O_ALIGN:
+ {
+ sal_uInt16 nAdjust = eAdjust;
+ if( pOption->GetEnum( nAdjust, aHTMLPAlignTable ) )
+ {
+ eAdjust = (SvxAdjust)nAdjust;
+ bTableAdjust = sal_True;
+ }
+ }
+ break;
+ case HTML_O_VALIGN:
+ eVertOri = (SwVertOrient)pOption->GetEnum( aHTMLTblVAlignTable,
+ eVertOri );
+ break;
+ case HTML_O_BORDER:
+ // BORDER und BORDER=BORDER wie BORDER=1 behandeln
+ if( pOption->GetString().Len() &&
+ !pOption->GetString().EqualsIgnoreCaseAscii(sHTML_O_border) )
+ nBorder = (sal_uInt16)pOption->GetNumber();
+ else
+ nBorder = 1;
+
+ if( !bHasFrame )
+ eFrame = ( nBorder ? HTML_TF_BOX : HTML_TF_VOID );
+ if( !bHasRules )
+ eRules = ( nBorder ? HTML_TR_ALL : HTML_TR_NONE );
+ break;
+ case HTML_O_FRAME:
+ eFrame = pOption->GetTableFrame();
+ bHasFrame = sal_True;
+ break;
+ case HTML_O_RULES:
+ eRules = pOption->GetTableRules();
+ bHasRules = sal_True;
+ break;
+ case HTML_O_BGCOLOR:
+ // Leere BGCOLOR bei <TABLE>, <TR> und <TD>/<TH> wie Netscape
+ // ignorieren, bei allen anderen Tags *wirklich* nicht.
+ if( pOption->GetString().Len() )
+ {
+ pOption->GetColor( aBGColor );
+ bBGColor = sal_True;
+ }
+ break;
+ case HTML_O_BACKGROUND:
+ aBGImage = pOption->GetString();
+ break;
+ case HTML_O_BORDERCOLOR:
+ pOption->GetColor( aBorderColor );
+ bBorderColor = sal_True;
+ break;
+ case HTML_O_BORDERCOLORDARK:
+ if( !bBorderColor )
+ pOption->GetColor( aBorderColor );
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ case HTML_O_HSPACE:
+ nHSpace = (sal_uInt16)pOption->GetNumber();
+ break;
+ case HTML_O_VSPACE:
+ nVSpace = (sal_uInt16)pOption->GetNumber();
+ break;
+ }
+ }
+
+ if( nCols && !nWidth )
+ {
+ nWidth = 100;
+ bPrcWidth = sal_True;
+ }
+
+ // Wenn BORDER=0 oder kein BORDER gegeben ist, daan darf es auch
+ // keine Umrandung geben
+ if( 0==nBorder || USHRT_MAX==nBorder )
+ {
+ eFrame = HTML_TF_VOID;
+ eRules = HTML_TR_NONE;
+ }
+}
+
+
+HTMLTable *SwHTMLParser::BuildTable( SvxAdjust eParentAdjust,
+ sal_Bool bIsParentHead,
+ sal_Bool bHasParentSection,
+ sal_Bool bMakeTopSubTable,
+ sal_Bool bHasToFly )
+{
+ if( !IsParserWorking() && !pPendStack )
+ return 0;
+
+ int nToken = 0;
+ sal_Bool bPending = sal_False;
+ _TblSaveStruct* pSaveStruct;
+
+ if( pPendStack )
+ {
+ pSaveStruct = (_TblSaveStruct*)pPendStack->pData;
+
+ SwPendingStack* pTmp = pPendStack->pNext;
+ delete pPendStack;
+ pPendStack = pTmp;
+ nToken = pPendStack ? pPendStack->nToken : GetSaveToken();
+ bPending = SVPAR_ERROR == eState && pPendStack != 0;
+
+ SaveState( nToken );
+ }
+ else
+ {
+ HTMLTableOptions *pTblOptions =
+ new HTMLTableOptions( GetOptions(), eParentAdjust );
+
+ if( pTblOptions->aId.Len() )
+ InsertBookmark( pTblOptions->aId );
+
+ // Wenn die Tabelle in einem Rahmen steht oder link oder rechts
+ // ausgerichtet ist, wird in jedem Fall eine "echte" Tabelle daraus.
+ if( bMakeTopSubTable || bHasToFly ||
+ (pTblOptions->bTableAdjust &&
+ (SVX_ADJUST_LEFT==pTblOptions->eAdjust ||
+ SVX_ADJUST_RIGHT==pTblOptions->eAdjust)) )
+ {
+ pTable = 0;
+ }
+
+ HTMLTable *pCurTable = new HTMLTable( this, pTable,
+ bIsParentHead,
+ bHasParentSection,
+ bMakeTopSubTable,
+ bHasToFly,
+ pTblOptions );
+ if( !pTable )
+ pTable = pCurTable;
+
+ pSaveStruct = new _TblSaveStruct( pCurTable );
+
+ delete pTblOptions;
+
+ // ist beim ersten GetNextToken schon pending, muss bei
+ // wiederaufsetzen auf jedenfall neu gelesen werden!
+ SaveState( 0 );
+ }
+
+ HTMLTable *pCurTable = pSaveStruct->pCurTable;
+
+ // </TABLE> wird laut DTD benoetigt
+ if( !nToken )
+ nToken = GetNextToken(); // naechstes Token
+
+ sal_Bool bDone = sal_False;
+ while( (IsParserWorking() && !bDone) || bPending )
+ {
+ SaveState( nToken );
+
+ nToken = FilterToken( nToken );
+
+ ASSERT( pPendStack || !bCallNextToken ||
+ pCurTable->GetContext() || pCurTable->HasParentSection(),
+ "Wo ist die Section gebieben?" );
+ if( !pPendStack && bCallNextToken &&
+ (pCurTable->GetContext() || pCurTable->HasParentSection()) )
+ {
+ // NextToken direkt aufrufen (z.B. um den Inhalt von
+ // Floating-Frames oder Applets zu ignorieren)
+ NextToken( nToken );
+ }
+ else switch( nToken )
+ {
+ case HTML_TABLE_ON:
+ if( !pCurTable->GetContext() )
+ {
+ // Wenn noch keine Tabelle eingefuegt wurde,
+ // die naechste Tabelle lesen
+ SkipToken( -1 );
+ bDone = sal_True;
+ }
+// else
+// {
+// NextToken( nToken );
+// }
+ break;
+ case HTML_TABLE_OFF:
+ bDone = sal_True;
+ break;
+ case HTML_CAPTION_ON:
+ BuildTableCaption( pCurTable );
+ bDone = pTable->IsOverflowing();
+ break;
+ case HTML_COL_ON:
+ SkipToken( -1 );
+ BuildTableColGroup( pCurTable, sal_False );
+ break;
+ case HTML_COLGROUP_ON:
+ BuildTableColGroup( pCurTable, sal_True );
+ break;
+ case HTML_TABLEROW_ON:
+ case HTML_TABLEHEADER_ON:
+ case HTML_TABLEDATA_ON:
+ SkipToken( -1 );
+ BuildTableSection( pCurTable, sal_False, sal_False );
+ bDone = pTable->IsOverflowing();
+ break;
+ case HTML_THEAD_ON:
+ case HTML_TFOOT_ON:
+ case HTML_TBODY_ON:
+ BuildTableSection( pCurTable, sal_True, HTML_THEAD_ON==nToken );
+ bDone = pTable->IsOverflowing();
+ break;
+ case HTML_MULTICOL_ON:
+ // spaltige Rahmen koennen wir hier leider nicht einguegen
+ break;
+ case HTML_FORM_ON:
+ NewForm( sal_False ); // keinen neuen Absatz aufmachen!
+ break;
+ case HTML_FORM_OFF:
+ EndForm( sal_False ); // keinen neuen Absatz aufmachen!
+ break;
+ case HTML_TEXTTOKEN:
+ // Blank-Strings sind u. U. eine Folge von CR+LF und kein Text
+ if( (pCurTable->GetContext() ||
+ !pCurTable->HasParentSection()) &&
+ 1==aToken.Len() && ' '==aToken.GetChar(0) )
+ break;
+ default:
+ pCurTable->MakeParentContents();
+ NextToken( nToken );
+ break;
+ }
+
+ ASSERT( !bPending || !pPendStack,
+ "SwHTMLParser::BuildTable: Es gibt wieder einen Pend-Stack" );
+ bPending = sal_False;
+ if( IsParserWorking() )
+ SaveState( 0 );
+
+ if( !bDone )
+ nToken = GetNextToken();
+ }
+
+ if( SVPAR_PENDING == GetStatus() )
+ {
+ pPendStack = new SwPendingStack( HTML_TABLE_ON, pPendStack );
+ pPendStack->pData = pSaveStruct;
+ return 0;
+ }
+
+ _HTMLTableContext *pTCntxt = pCurTable->GetContext();
+ if( pTCntxt )
+ {
+ // Die Tabelle wurde auch angelegt
+
+ // Tabellen-Struktur anpassen
+ pCurTable->CloseTable();
+
+ // ausserhalb von Zellen begonnene Kontexte beenden
+ // muss vor(!) dem Umsetzten der Attribut Tabelle existieren,
+ // weil die aktuelle danach nicht mehr existiert
+ while( aContexts.Count() > nContextStAttrMin )
+ {
+ _HTMLAttrContext *pCntxt = PopContext();
+ ClearContext( pCntxt );
+ delete pCntxt;
+ }
+
+ nContextStMin = pTCntxt->GetContextStMin();
+ nContextStAttrMin = pTCntxt->GetContextStAttrMin();
+
+ if( pTable==pCurTable )
+ {
+ // Tabellen-Beschriftung setzen
+ const SwStartNode *pCapStNd = pTable->GetCaptionStartNode();
+ if( pCapStNd )
+ {
+ // Der letzte Absatz der Section wird nie mitkopiert. Deshalb
+ // muss die Section mindestens zwei Absaetze enthalten.
+
+ if( pCapStNd->EndOfSectionIndex() - pCapStNd->GetIndex() > 2 )
+ {
+ // Start-Node und letzten Absatz nicht mitkopieren.
+ SwNodeRange aSrcRg( *pCapStNd, 1,
+ *pCapStNd->EndOfSectionNode(), -1 );
+
+ sal_Bool bTop = pTable->IsTopCaption();
+ SwStartNode *pTblStNd = pTCntxt->GetTableNode();
+
+ ASSERT( pTblStNd, "Wo ist der Tabellen-Node" );
+ ASSERT( pTblStNd==pPam->GetNode()->FindTableNode(),
+ "Stehen wir in der falschen Tabelle?" );
+
+ SwNode* pNd;
+ if( bTop )
+ pNd = pTblStNd;
+ else
+ pNd = pTblStNd->EndOfSectionNode();
+ SwNodeIndex aDstIdx( *pNd, bTop ? 0 : 1 );
+
+ pDoc->Move( aSrcRg, aDstIdx );
+
+ // Wenn die Caption vor der Tabelle eingefuegt wurde muss
+ // eine an der Tabelle gestzte Seitenvorlage noch in den
+ // ersten Absatz der Ueberschrift verschoben werden.
+ // Ausserdem muessen alle gemerkten Indizes, die auf den
+ // Tabellen-Node zeigen noch verschoben werden.
+ if( bTop )
+ {
+ MovePageDescAttrs( pTblStNd, aSrcRg.aStart.GetIndex(),
+ sal_False );
+ }
+ }
+
+ // Die Section wird jetzt nicht mehr gebraucht.
+ pPam->SetMark();
+ pPam->DeleteMark();
+ pDoc->DeleteSection( (SwStartNode *)pCapStNd );
+ pTable->SetCaption( 0, sal_False );
+ }
+
+ // SwTable aufbereiten
+ sal_uInt16 nBrowseWidth = (sal_uInt16)GetCurrentBrowseWidth();
+ pSaveStruct->MakeTable( nBrowseWidth, *pPam->GetPoint(), pDoc );
+
+#ifdef TEST_RESIZE
+ const SwTable *pSwTable = pTable->GetSwTable();
+ SwHTMLTableLayout *pLayoutInfo =
+ pSwTable ? ((SwTable *)pSwTable)->GetHTMLTableLayout() : 0;
+ if( pLayoutInfo )
+ {
+ ViewShell *pVSh = CheckActionViewShell();
+ if( pVSh )
+ {
+ CallEndAction( sal_False, sal_False );
+ CallStartAction( pVSh, sal_False );
+
+ sal_uInt16 nNewBrwoseWidth =
+ (sal_uInt16)GetCurrentBrowseWidth();
+ if( nBrowseWidth != nNewBrowseWidth )
+ pLayoutInfo->Resize( nNewBrowseWidth );
+ }
+ }
+#endif
+ }
+
+ GetNumInfo().Set( pTCntxt->GetNumInfo() );
+ pTCntxt->RestorePREListingXMP( *this );
+ RestoreAttrTab( pTCntxt->aAttrTab );
+
+ if( pTable==pCurTable )
+ {
+ // oberen Absatz-Abstand einstellen
+ bUpperSpace = sal_True;
+ SetTxtCollAttrs();
+
+ nParaCnt -= Min(nParaCnt, pTCntxt->GetTableNode()->GetTable().GetTabSortBoxes().Count());
+
+ // ggfs. eine Tabelle anspringen
+ if( JUMPTO_TABLE == eJumpTo && pTable->GetSwTable() &&
+ pTable->GetSwTable()->GetFrmFmt()->GetName() == sJmpMark )
+ {
+ bChkJumpMark = sal_True;
+ eJumpTo = JUMPTO_NONE;
+ }
+
+ // fix #37886#: Wenn Import abgebrochen wurde kein erneutes Show
+ // aufrufen, weil die ViewShell schon geloescht wurde!
+ // fix #41669#: Genuegt nicht. Auch im ACCEPTING_STATE darf
+ // kein Show aufgerufen werden, weil sonst waehrend des
+ // Reschedules der Parser zerstoert wird, wenn noch ein
+ // DataAvailable-Link kommt. Deshalb: Nur im WORKING-State.
+ if( !nParaCnt && SVPAR_WORKING == GetStatus() )
+ Show();
+ }
+ }
+ else if( pTable==pCurTable )
+ {
+ // Es wurde gar keine Tabelle gelesen.
+
+ // Dann muss eine evtl gelesene Beschriftung noch geloescht werden.
+ const SwStartNode *pCapStNd = pCurTable->GetCaptionStartNode();
+ if( pCapStNd )
+ {
+ pPam->SetMark();
+ pPam->DeleteMark();
+ pDoc->DeleteSection( (SwStartNode *)pCapStNd );
+ pCurTable->SetCaption( 0, sal_False );
+ }
+ }
+
+ if( pTable == pCurTable )
+ {
+ delete pSaveStruct->pCurTable;
+ pSaveStruct->pCurTable = 0;
+ pTable = 0;
+ }
+
+ HTMLTable* pRetTbl = pSaveStruct->pCurTable;
+ delete pSaveStruct;
+
+ return pRetTbl;
+}
+
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmltab.cxx,v 1.1.1.1 2000-09-18 17:14:56 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.295 2000/09/18 16:04:46 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.294 2000/09/05 14:01:28 mib
+ #78294#: removed support for frameset documents
+
+ Revision 1.293 2000/06/26 09:52:30 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.292 2000/04/28 14:29:12 mib
+ unicode
+
+ Revision 1.291 2000/04/10 12:20:57 mib
+ unicode
+
+ Revision 1.290 2000/03/21 15:06:18 os
+ UNOIII
+
+ Revision 1.289 2000/03/03 15:21:01 os
+ StarView remainders removed
+
+ Revision 1.288 2000/02/11 14:37:28 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.287 2000/02/07 08:24:58 mib
+ #72727#: HORI_LEFT_AND_WIDTH
+
+ Revision 1.286 1999/11/19 16:40:20 os
+ modules renamed
+
+ Revision 1.285 1999/09/17 12:14:09 mib
+ support of multiple and non system text encodings
+
+ Revision 1.284 1999/07/29 06:21:52 MIB
+ fix LHS means left border and RHS right border, not vice versa
+
+
+ Rev 1.283 29 Jul 1999 08:21:52 MIB
+ fix LHS means left border and RHS right border, not vice versa
+
+ Rev 1.282 10 Jun 1999 10:34:26 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.281 09 Jun 1999 19:37:00 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+ Rev 1.280 20 Apr 1999 10:07:50 MIB
+ bCallNextToken auch in Rows etc. auswerten
+
+ Rev 1.279 15 Apr 1999 13:48:20 MIB
+ #41833#: Styles fuer A-Tag
+
+ Rev 1.278 12 Apr 1999 09:23:28 MIB
+ Korrekt horizontal splitten (auch #64460#)
+
+ Rev 1.277 09 Apr 1999 10:30:36 MIB
+ #64522#: Styles fuer TD/TH auswerten
+
+ Rev 1.276 08 Apr 1999 11:13:10 MIB
+ #56334#: Optimierung fuer Hintergrundfarben wieder ausgebaut
+
+ Rev 1.275 06 Apr 1999 12:07:14 MIB
+ #64308#: ALIGN=? an Tabelle
+
+ Rev 1.274 01 Apr 1999 10:20:08 MIB
+ bug fix: Leere BGColor nicht auswerten
+
+ Rev 1.273 01 Apr 1999 08:57:02 MIB
+ #56334#: Keine Spezialbehandlung der Hintergruende fuer die GC mehr noetig
+
+ Rev 1.272 30 Mar 1999 11:58:36 MIB
+ #62977#: Nicht mehr Spalten einfuegen als Zellen je Zeile vorhanden
+
+ Rev 1.271 30 Mar 1999 11:44:26 MIB
+ #62977#: Nicht mehr Spalten einfuegen als Zellen je Zeile vorhanden (nur>529)
+
+ Rev 1.270 26 Mar 1999 11:39:46 MIB
+ #63049#: Sofortige Numerierungs-Aktualisierung in Tabellen ist jetzt unnoetig
+
+ Rev 1.269 17 Mar 1999 16:47:10 MIB
+ #63049#: Numerierungen mit relativen Abstaenden
+
+ Rev 1.268 10 Mar 1999 15:44:10 MIB
+ #62682#: Beim Setzen der Control-Groesse wenn noetig auf die ViewShell warten
+
+ Rev 1.267 25 Feb 1999 16:00:42 MIB
+ #61949#: globale Shell entsorgt
+
+ Rev 1.266 27 Jan 1999 09:43:56 OS
+ #56371# TF_ONE51
+
+ Rev 1.265 11 Jan 1999 11:17:08 MIB
+ Attribut-Tabellen-Ueberpruefung in NonPro wegen Asserts nicht immer
+
+ Rev 1.264 05 Jan 1999 14:48:00 MIB
+ #60429#: Zeilenhoehe korrekt berechnen
+
+ Rev 1.263 11 Nov 1998 17:42:10 MIB
+ #59059#: Beim Abbrechen Pendung-Stack noch aufraeumen
+
+ Rev 1.262 09 Nov 1998 11:35:18 MIB
+ #59159#: Pending-Stack von fremden Token nicht loeschen
+
+ Rev 1.261 03 Nov 1998 15:37:10 MIB
+ #58840#: bHoriSplittAll-Assert war falsch
+
+ Rev 1.260 25 Sep 1998 08:36:04 MIB
+ #45631#: Tabellen nach 64000 Zellen beenden
+
+ Rev 1.259 14 Sep 1998 11:41:12 MIB
+ #51238#: Beim Setzen des Zeilen-Hintergrundes ROWSPAN>1 beachten
+
+ Rev 1.258 31 Aug 1998 11:19:44 MIB
+ ##: Beim vertikalen Zerlegen auch letzte Spalte auf moegliche vert. Zerlegeung pruefen
+
+ Rev 1.257 27 Aug 1998 09:45:52 MIB
+ #54170#: Line-Format-Attribute zuruecksetzen, bevor Hoehe oder Hintergrund gesetzt wird
+
+ Rev 1.256 26 Aug 1998 09:30:36 MIB
+ #55144#: Umlauf bei Tabellen in Rahmen richtig setzen und beachten
+
+ Rev 1.255 21 Jul 1998 16:55:46 JP
+ Bug #53456#: nie per Add eine Box im Format anmelden, sondern per Box::ChgFrmFmt
+
+ Rev 1.254 05 Jun 1998 13:56:54 JP
+ Bug #42487#: Sprung zum Mark schon waehrend des Ladens ausfuehren
+
+ Rev 1.253 12 May 1998 15:50:24 JP
+ rund um Flys/DrawObjs im Doc/FESh umgestellt/optimiert
+
+ Rev 1.252 15 Apr 1998 14:56:46 MIB
+ Zwei-seitige Printing-Extensions
+
+ Rev 1.251 27 Mar 1998 18:02:42 MIB
+ HSPACE/VSPACE
+
+ Rev 1.250 24 Mar 1998 14:31:24 MIB
+ obsolete ParseStyleOptions-Methode entfernt
+
+ Rev 1.249 11 Mar 1998 18:28:54 MIB
+ fix #47846#: auto-gebundenen Rahmen korrekt verankern
+
+ Rev 1.248 02 Mar 1998 18:43:16 MIB
+ fix #45489#: Umrandung ueber mehrere Ebenenen vererben
+
+ Rev 1.247 27 Feb 1998 16:42:38 MIB
+ fix #46450#: Horizontale une vertikale Ausrichtung von Zellen mit NumFmt
+
+ Rev 1.246 27 Feb 1998 14:05:10 MIB
+ Auto-gebundene Rahmen
+
+ Rev 1.245 25 Feb 1998 12:17:36 MIB
+ I like ME and its 0xffs
+
+ Rev 1.244 25 Feb 1998 10:49:54 MIB
+ fix: Tabellen-Ueberschriften in Sub-Tabellen gleich in eine eigene Box packen
+
+ Rev 1.243 24 Feb 1998 17:45:50 MIB
+ Attribute von Tabellen-Zellen ueber AttrTab setzen
+
+ Rev 1.242 20 Feb 1998 18:52:04 MIB
+ fix #45328#: Bessere Behandlung von Styles an Tabellen-Zellen
+
+ Rev 1.241 20 Feb 1998 12:25:12 MIB
+ fix #45631#: Weniger ::com::sun::star::frame::Frame-Formate anlegen
+
+ Rev 1.240 19 Feb 1998 15:14:52 MIB
+ fix #47394#: Tabellen-Zellen wurden unnoetig geteilt
+
+ Rev 1.239 18 Feb 1998 10:57:30 MIB
+ fix #45153#: Bei fixer Tabellenhoehe Tabelle in Tabelle beachten
+
+ Rev 1.238 13 Feb 1998 18:48:42 HR
+ C40_INSERT
+
+ Rev 1.237 29 Jan 1998 21:34:18 JP
+ GetEndOfIcons ersetzt durch GetEndOfExtras, das auf GetEndOfRedlines mappt
+
+ Rev 1.236 19 Jan 1998 16:27:14 MIB
+ Numerierungs-Umbau
+
+ Rev 1.235 26 Nov 1997 19:09:42 MA
+ includes
+
+ Rev 1.234 17 Nov 1997 10:16:40 JP
+ Umstellung Numerierung
+
+ Rev 1.233 09 Oct 1997 14:34:14 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.232 19 Sep 1997 08:40:34 MIB
+ fix #41185#: Laufschrift an Tabellenzellen-Breite anpassen
+
+ Rev 1.231 16 Sep 1997 14:55:28 MIB
+ ITEMID_BOXINFOITEM (voreubergendend) definieren
+
+ Rev 1.230 16 Sep 1997 13:05:08 MIB
+ Abs.-Pos. Rahmen am Tabellen-Ende beenden
+
+ Rev 1.229 16 Sep 1997 11:19:12 MIB
+ Kopf-/Fusszeilen ohne Moven von Nodes, autom. Beenden von Bereichen/Rahmen
+
+ Rev 1.228 12 Sep 1997 11:54:02 MIB
+ fix #41253#: Script in PRE (keine Schleifen)
+
+ Rev 1.227 09 Sep 1997 14:10:48 MIB
+ Ueberall Browse-View-Breite statt Seitenbreite verwenden
+
+ Rev 1.226 08 Sep 1997 10:38:54 MIB
+ Keine Schleifen fuer PRE mehr (auch fix #41253#) (nicht freigeschaltet)
+
+ Rev 1.225 04 Sep 1997 15:45:30 MIB
+ fix: <NOBR> auch beachten, wenn danach ein <BR> folgt
+
+ Rev 1.224 04 Sep 1997 09:37:40 MIB
+ fix #42771#: Tabellen in Rahmen beachten
+
+ Rev 1.223 29 Aug 1997 16:49:44 OS
+ DLL-Umstellung
+
+ Rev 1.222 15 Aug 1997 12:47:38 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.221 12 Aug 1997 13:42:50 OS
+ Header-Umstellung
+
+ Rev 1.220 11 Aug 1997 14:04:42 OM
+ Headerfile-Umstellung
+
+ Rev 1.219 07 Aug 1997 15:08:18 OM
+ Headerfile-Umstellung
+
+ Rev 1.218 04 Aug 1997 13:54:24 MIB
+ aboslute psoitioning (fuer fast alle Zeichen-Attribute/-Vorlagen)
+
+ Rev 1.217 31 Jul 1997 10:44:32 MIB
+ DIV-Stack weg
+
+ Rev 1.216 25 Jul 1997 11:08:30 MIB
+ fix #42109#: Kommentare bei Tabellen in Tabellen beachten
+
+ Rev 1.215 21 Jul 1997 10:55:22 MIB
+ fix #41869#: Keile zusaetlichen Splaten bei selbst exportierten Tabellen
+
+ Rev 1.214 16 Jul 1997 18:33:04 MIB
+ fix #41669#: Kein Show im Accepted-State, weil Parser sonst zerst. werden kann
+
+ Rev 1.213 15 Jul 1997 13:11:54 MIB
+ fix: Tabellen-Ueberschriften immer zentrieren
+
+ Rev 1.212 11 Jul 1997 11:51:30 MIB
+ fix: Bei RULES=COLS auch Zeilen-Gruppen umranden
+
+ Rev 1.211 10 Jul 1997 10:30:30 MIB
+ fix #41516#: Keine Umrandung bei FRAME ohne BORDER
+
+ Rev 1.210 09 Jul 1997 08:45:16 MIB
+ 'Ueberschrift wiederholen' uanhaengig von </THEAD>-Position abktivieren
+
+ Rev 1.209 08 Jul 1997 14:16:42 MIB
+ Meta-Tags als PostIts und die immer im ersten Body-Absatz verankern
+
+ Rev 1.208 03 Jul 1997 09:37:00 MIB
+ HTML-Tabellen: Bei letzter Grafik ohne Groesse sofort anpassen
+
+ Rev 1.207 01 Jul 1997 12:39:14 MIB
+ fix: Beim Vergeben von Filler-Boxen tatsaechliche Umrandung betrachten
+
+ Rev 1.206 28 Jun 1997 11:32:00 MIB
+ fix: Bei Umrandung und CELLPADDING=0 minimalen Abstand zum Inhalte beachten
+
+ Rev 1.205 27 Jun 1997 15:57:40 MIB
+ fix: Pending-Stack bei bCallNextToken beachten
+
+ Rev 1.204 26 Jun 1997 11:54:52 MIB
+ fix #41003#: Nimber-Format nur bei Value oder leerer Zelle setzen
+
+ Rev 1.203 26 Jun 1997 10:56:32 MIB
+ fix #40941#: Tabellen In Tabellen in Rahmen, wenn sie ausweichen muessen
+
+ Rev 1.202 24 Jun 1997 08:59:54 MIB
+ fix: Beim Splitten von Zelle auch Tabellen-Layout anpassen
+
+ Rev 1.201 20 Jun 1997 13:36:08 MIB
+ Auch Grafiken in Tabellen asynchron laden
+
+ Rev 1.200 19 Jun 1997 11:57:04 MIB
+ Tabellen weichen jetzt Rahmen aus
+
+ Rev 1.199 16 Jun 1997 08:27:56 MIB
+ CLASS/ID auch fier Tabellen
+
+ Rev 1.198 12 Jun 1997 15:55:36 MIB
+ 358-Tabellen korrekt importieren
+
+ Rev 1.197 12 Jun 1997 09:13:42 MIB
+ fix: PostIts auch vor Tabellen in Rahmen in die Tabelle verschieben
+
+ Rev 1.196 09 Jun 1997 18:14:08 MIB
+ fix: leere Zellen und Zellen, die nur Grafiken enthalten, bekommen einen 2pt-Font
+
+ Rev 1.195 09 Jun 1997 12:56:46 MIB
+ fix: Kein GPF beim berechnen der Exportierbarkeit des Layouts mehr
+
+ Rev 1.194 09 Jun 1997 09:07:22 MIB
+ fix: Auch aus leeren Absatzen 2 LF entfernen
+
+ Rev 1.193 05 Jun 1997 17:42:38 MIB
+ fix: <NOBR> auch mit Space dahinter, Anpassungen an Export-Moeglichkeit
+
+ Rev 1.192 02 Jun 1997 12:01:18 MIB
+ fix: Bei vorhandener Umrandung deren Breite doch beruecksichtigen
+
+ Rev 1.191 30 May 1997 18:02:42 MIB
+ NOWRAP/NOBR, Einhalten der Mindestbreite bei rel. Tabellen
+
+ Rev 1.190 28 May 1997 19:14:26 MIB
+ fix: Layout-Info nicht im Destr. loeschen, TEST_RESIZE entfernt
+
+ Rev 1.189 28 May 1997 16:11:52 MIB
+ fix: Numerierung ueber Tabellen-Ueberschrift retten
+
+ Rev 1.188 28 May 1997 15:35:34 MIB
+ fix: -Angabe aus dem Format fuer Rahmen zu nehmen war keine gute Idee
+
+ Rev 1.187 27 May 1997 11:47:08 MIB
+ Netscape-konformere Beruecksichtigung von BORDER/CELLPADDING/CELLSPACING
+
+ Rev 1.186 15 May 1997 15:42:36 MIB
+ HTML-Tabellen-Layout an SwTable merken
+
+ Rev 1.185 06 May 1997 12:07:54 MA
+ swtablehxx aufgeteilt
+
+ Rev 1.184 30 Apr 1997 18:10:02 MIB
+ Ermitteln der verfuegbaren Breite ueber Layout
+
+ Rev 1.183 30 Apr 1997 14:54:46 MIB
+ Tabellen-Layout ausgelagert
+
+ Rev 1.182 23 Apr 1997 14:57:04 MIB
+ memory leak beseitig (wie 1.171.1.0)
+
+ Rev 1.181 21 Apr 1997 18:08:18 MIB
+ fix #38931#: 1. Absaetze hinter Tab in Tab nicht numerieren, Zelle hinter T in T
+
+ Rev 1.180 16 Apr 1997 18:23:12 MIB
+ fix #37769#: Tabellenbreite sinnvoll begrenzen und USHRT_MAX-Ueberlauf vermeiden
+
+ Rev 1.179 16 Apr 1997 15:19:26 MIB
+ fix #36787#: Ersatzdarstellung von Frames, Applets etc. auch in Tabellen ignorieren
+
+ Rev 1.178 14 Apr 1997 16:44:48 MIB
+ fixes #36418#, #36819#: Tabellen mit relativen/nicht relativen Spalten gleichz.
+
+ Rev 1.177 11 Apr 1997 17:58:52 MIB
+ fix #36820#: Bei Tabellen in Rahmen Absatz-Abstand beachten
+
+ Rev 1.176 10 Apr 1997 16:40:00 MIB
+ fix #37987#: Andere Berechnung der Spalten-Mindestbreite
+
+ Rev 1.175 09 Apr 1997 16:50:50 MIB
+ fix #38575#: Nicht immer einen Absatz vor Tabellen in Rahmen aufmachen
+
+ Rev 1.174 08 Apr 1997 11:07:02 MIB
+ fix #37219#: In Tabellen-Beschriftung alles erlauben
+
+ Rev 1.173 04 Apr 1997 11:04:22 AMA
+ Chg: Ein weiterer Parameter fuer GetMinMaxSize: das absolute Minimum
+
+ Rev 1.172 01 Apr 1997 10:47:08 MIB
+ fix #38284#: keine gelegentlich vertikale Ausrichtung an Zellen ohne Inhalt mehr
+
+ Rev 1.171 18 Mar 1997 19:06:44 MIB
+ fix #37886#: Kein Show beim Abbrechen mehr aufrufen, weil ViewShell tot sein koennte
+
+ Rev 1.170 18 Mar 1997 09:42:50 MIB
+ fix #37795#: Tabellen in Tabellen-Ueberschriften abfangen
+
+ Rev 1.169 05 Mar 1997 14:48:36 MIB
+ Absatz-Abstaende verbessert
+
+ Rev 1.168 22 Feb 1997 20:30:32 MIB
+ Tabellen-Layout an Netscape 4.0 Preview 2 anpassen
+
+ Rev 1.167 21 Feb 1997 15:28:26 MIB
+ fix #36692#: Fuer ::com::sun::star::form::Forms in Tabellen ausserhalb von Zellen keine neuen Absaetze
+
+ Rev 1.166 20 Feb 1997 17:04:46 MIB
+ bug fix: SaveState auch fuer Col-Groups
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmltabw.cxx b/sw/source/filter/html/htmltabw.cxx
new file mode 100644
index 000000000000..6ef8019da3b6
--- /dev/null
+++ b/sw/source/filter/html/htmltabw.cxx
@@ -0,0 +1,1571 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmltabw.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _HTMLOUT_HXX //autogen
+#include <svtools/htmlout.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_FORM_XFORMSSUPPLIER_HPP_
+#include <com/sun/star/form/XFormsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORM_HPP_
+#include <com/sun/star/form/XForm.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XIMAGEPRODUCERSUPPLIER_HPP_
+#include <com/sun/star/form/XImageProducerSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCONTROLLER_HPP_
+#include <com/sun/star/form/XFormController.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCOMPONENT_HPP_
+#include <com/sun/star/form/XFormComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCONTROLLERLISTENER_HPP_
+#include <com/sun/star/form/XFormControllerListener.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 _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _SWRECT_HXX
+#include <swrect.hxx>
+#endif
+#ifndef _CELLATR_HXX
+#include <cellatr.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+#ifndef _HTMLTBL_HXX
+#include <htmltbl.hxx>
+#endif
+#ifndef _HTMLNUM_HXX
+#include <htmlnum.hxx>
+#endif
+#ifndef _WRTHTML_HXX
+#include <wrthtml.hxx>
+#endif
+#ifndef _WRTSWTBL_HXX
+#include <wrtswtbl.hxx>
+#endif
+
+
+
+#ifndef PRODUCT
+#ifndef _VIEWSH_HXX
+#include <viewsh.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#endif
+
+
+//#define MAX_DEPTH (USHRT_MAX)
+#define MAX_DEPTH (3)
+
+
+class SwHTMLWrtTable : public SwWriteTable
+{
+ void Pixelize( sal_uInt16& rValue );
+ void PixelizeBorders();
+
+ void OutTableCell( SwHTMLWriter& rWrt, const SwWriteTableCell *pCell,
+ sal_Bool bOutVAlign ) const;
+
+ void OutTableCells( SwHTMLWriter& rWrt,
+ const SwWriteTableCells& rCells,
+ const SvxBrushItem *pBrushItem ) const;
+
+ virtual sal_Bool ShouldExpandSub( const SwTableBox *pBox,
+ sal_Bool bExpandedBefore, sal_uInt16 nDepth ) const;
+
+ static sal_Bool HasTabBackground( const SwTableLine& rLine,
+ sal_Bool bTop, sal_Bool bBottom, sal_Bool bLeft, sal_Bool bRight );
+ static sal_Bool HasTabBackground( const SwTableBox& rBox,
+ sal_Bool bTop, sal_Bool bBottom, sal_Bool bLeft, sal_Bool bRight );
+
+public:
+ SwHTMLWrtTable( const SwTableLines& rLines, long nWidth, sal_uInt16 nBWidth,
+ sal_Bool bRel, sal_uInt16 nLeftSub=0, sal_uInt16 nRightSub=0 );
+ SwHTMLWrtTable( const SwHTMLTableLayout *pLayoutInfo );
+
+ void Write( SwHTMLWriter& rWrt, SwHoriOrient eAlign=HORI_NONE,
+ sal_Bool bTHead=sal_False, const SwFrmFmt *pFrmFmt=0,
+ const String *pCaption=0, sal_Bool bTopCaption=sal_False,
+ sal_uInt16 nHSpace=0, sal_uInt16 nVSpace=0 ) const;
+};
+
+
+SwHTMLWrtTable::SwHTMLWrtTable( const SwTableLines& rLines, long nWidth,
+ sal_uInt16 nBWidth, sal_Bool bRel,
+ sal_uInt16 nLSub, sal_uInt16 nRSub )
+ : SwWriteTable( rLines, nWidth, nBWidth, bRel, MAX_DEPTH, nLSub, nRSub )
+{
+ PixelizeBorders();
+}
+
+SwHTMLWrtTable::SwHTMLWrtTable( const SwHTMLTableLayout *pLayoutInfo )
+ : SwWriteTable( pLayoutInfo )
+{
+ // Einige Twip-Werte an Pixel-Grenzen anpassen
+ if( bCollectBorderWidth )
+ PixelizeBorders();
+}
+
+void SwHTMLWrtTable::Pixelize( sal_uInt16& rValue )
+{
+ if( rValue && Application::GetDefaultDevice() )
+ {
+ Size aSz( rValue, 0 );
+ aSz = Application::GetDefaultDevice()->LogicToPixel( aSz, MapMode(MAP_TWIP) );
+ if( !aSz.Width() )
+ aSz.Width() = 1;
+ aSz = Application::GetDefaultDevice()->PixelToLogic( aSz, MapMode(MAP_TWIP) );
+ rValue = (sal_uInt16)aSz.Width();
+ }
+}
+
+void SwHTMLWrtTable::PixelizeBorders()
+{
+ Pixelize( nBorder );
+ Pixelize( nCellSpacing );
+ Pixelize( nCellPadding );
+}
+
+sal_Bool SwHTMLWrtTable::HasTabBackground( const SwTableBox& rBox,
+ sal_Bool bTop, sal_Bool bBottom, sal_Bool bLeft, sal_Bool bRight )
+{
+ ASSERT( bTop || bBottom || bLeft || bRight,
+ "HasTabBackground: darf nicht aufgerufen werden" );
+
+ sal_Bool bRet = sal_False;
+ if( rBox.GetSttNd() )
+ {
+ const SvxBrushItem& rBrushItem =
+ rBox.GetFrmFmt()->GetBackground();
+
+ bRet = !rBrushItem.GetColor().GetTransparency() ||
+ rBrushItem.GetGraphicLink() || rBrushItem.GetGraphic();
+ }
+ else
+ {
+ const SwTableLines& rLines = rBox.GetTabLines();
+ sal_uInt16 nCount = rLines.Count();
+ sal_Bool bLeftRight = bLeft || bRight;
+ for( sal_uInt16 i=0; !bRet && i<nCount; i++ )
+ {
+ sal_Bool bT = bTop && 0 == i;
+ sal_Bool bB = bBottom && nCount-1 == i;
+ if( bT || bB || bLeftRight )
+ bRet = HasTabBackground( *rLines[i], bT, bB, bLeft, bRight);
+ }
+ }
+
+ return bRet;
+}
+
+sal_Bool SwHTMLWrtTable::HasTabBackground( const SwTableLine& rLine,
+ sal_Bool bTop, sal_Bool bBottom, sal_Bool bLeft, sal_Bool bRight )
+{
+ ASSERT( bTop || bBottom || bLeft || bRight,
+ "HasTabBackground: darf nicht aufgerufen werden" );
+
+ sal_Bool bRet = sal_False;
+ const SvxBrushItem& rBrushItem = rLine.GetFrmFmt()->GetBackground();
+ bRet = !rBrushItem.GetColor().GetTransparency() ||
+ rBrushItem.GetGraphicLink() || rBrushItem.GetGraphic();
+
+ if( !bRet )
+ {
+ const SwTableBoxes& rBoxes = rLine.GetTabBoxes();
+ sal_uInt16 nCount = rBoxes.Count();
+ sal_Bool bTopBottom = bTop || bBottom;
+ for( sal_uInt16 i=0; !bRet && i<nCount; i++ )
+ {
+ sal_Bool bL = bLeft && 0 == i;
+ sal_Bool bR = bRight && nCount-1 == i;
+ if( bTopBottom || bL || bR )
+ bRet = HasTabBackground( *rBoxes[i], bTop, bBottom, bL, bR );
+ }
+ }
+
+ return bRet;
+}
+
+sal_Bool lcl_WrtHTMLTbl_HasTabBorders( const SwTableLine*& rpLine, void* pPara );
+
+sal_Bool lcl_WrtHTMLTbl_HasTabBorders( const SwTableBox*& rpBox, void* pPara )
+{
+ sal_Bool *pBorders = (sal_Bool *)pPara;
+ if( *pBorders )
+ return sal_False;
+
+ if( !rpBox->GetSttNd() )
+ {
+ ((SwTableBox *)rpBox)->GetTabLines().ForEach(
+ &lcl_WrtHTMLTbl_HasTabBorders, pPara );
+ }
+ else
+ {
+ const SvxBoxItem& rBoxItem =
+ (const SvxBoxItem&)rpBox->GetFrmFmt()->GetAttr( RES_BOX );
+
+ *pBorders = rBoxItem.GetTop() || rBoxItem.GetBottom() ||
+ rBoxItem.GetLeft() || rBoxItem.GetRight();
+ }
+
+ return !*pBorders;
+}
+
+sal_Bool lcl_WrtHTMLTbl_HasTabBorders( const SwTableLine*& rpLine, void* pPara )
+{
+ sal_Bool *pBorders = (sal_Bool *)pPara;
+ if( *pBorders )
+ return sal_False;
+
+ ((SwTableLine *)rpLine)->GetTabBoxes().ForEach(
+ &lcl_WrtHTMLTbl_HasTabBorders, pPara );
+ return !*pBorders;
+}
+
+
+sal_Bool SwHTMLWrtTable::ShouldExpandSub( const SwTableBox *pBox,
+ sal_Bool bExpandedBefore,
+ sal_uInt16 nDepth ) const
+{
+ sal_Bool bExpand = !pBox->GetSttNd() && nDepth>0;
+ if( bExpand && bExpandedBefore )
+ {
+ // MIB 30.6.97: Wenn schon eine Box expandiert wurde, wird eine
+ // weitere nur expandiert, wenn sie Umrandungen besitzt.
+ sal_Bool bBorders = sal_False;
+ lcl_WrtHTMLTbl_HasTabBorders( pBox, &bBorders );
+ if( !bBorders )
+ bBorders = HasTabBackground( *pBox, sal_True, sal_True, sal_True, sal_True );
+ bExpand = bBorders;
+ }
+
+ return bExpand;
+}
+
+
+// Eine Box als einzelne Zelle schreiben
+void SwHTMLWrtTable::OutTableCell( SwHTMLWriter& rWrt,
+ const SwWriteTableCell *pCell,
+ sal_Bool bOutVAlign ) const
+{
+ const SwTableBox *pBox = pCell->GetBox();
+ sal_uInt16 nRow = pCell->GetRow();
+ sal_uInt16 nCol = pCell->GetCol();
+ sal_uInt16 nRowSpan = pCell->GetRowSpan();
+ sal_uInt16 nColSpan = pCell->GetColSpan();
+
+ SwWriteTableCol *pCol = aCols[nCol];
+
+// sal_Bool bOutWidth = nColSpan>1 || pCol->GetOutWidth();
+ sal_Bool bOutWidth = sal_True; //nColSpan==1 && pCol->GetOutWidth();
+
+ const SwStartNode* pSttNd = pBox->GetSttNd();
+ sal_Bool bHead = sal_False;
+ if( pSttNd )
+ {
+ sal_uInt32 nNdPos = pSttNd->GetIndex()+1;
+
+ // Art der Zelle (TD/TH) bestimmen
+ SwNode* pNd;
+ while( !( pNd = rWrt.pDoc->GetNodes()[nNdPos])->IsEndNode() )
+ {
+ if( pNd->IsTxtNode() )
+ {
+ // nur Absaetzte betrachten, an denen man was erkennt
+ // Das ist der Fall, wenn die Vorlage eine der Tabellen-Vorlagen
+ // ist oder von einer der beiden abgelitten ist.
+ const SwFmt *pFmt = &((SwTxtNode*)pNd)->GetAnyFmtColl();
+ sal_uInt16 nPoolId = pFmt->GetPoolFmtId();
+ while( !pFmt->IsDefault() &&
+ RES_POOLCOLL_TABLE_HDLN!=nPoolId &&
+ RES_POOLCOLL_TABLE!=nPoolId )
+ {
+ pFmt = pFmt->DerivedFrom();
+ nPoolId = pFmt->GetPoolFmtId();
+ }
+
+ if( !pFmt->IsDefault() )
+ {
+ bHead = (RES_POOLCOLL_TABLE_HDLN==nPoolId);
+ break;
+ }
+ }
+ nNdPos++;
+ }
+ }
+
+ rWrt.OutNewLine(); // <TH>/<TD> in neue Zeile
+ ByteString sOut( '<' );
+ sOut += (bHead ? sHTML_tableheader : sHTML_tabledata );
+
+ // ROW- und COLSPAN ausgeben
+ if( nRowSpan>1 )
+ (((sOut += ' ' ) += sHTML_O_rowspan ) += '=')
+ += ByteString::CreateFromInt32( nRowSpan );
+ if( nColSpan > 1 )
+ (((sOut += ' ' ) += sHTML_O_colspan ) += '=')
+ += ByteString::CreateFromInt32( nColSpan );
+
+#ifndef PURE_HTML
+ long nWidth = 0;
+ sal_uInt16 nPrcWidth = USHRT_MAX;
+ if( bOutWidth )
+ {
+ if( bLayoutExport )
+ {
+ if( pCell->HasPrcWidthOpt() )
+ {
+ nPrcWidth = pCell->GetWidthOpt();
+ }
+ else
+ {
+ nWidth = pCell->GetWidthOpt();
+ if( !nWidth )
+ bOutWidth = sal_False;
+ }
+ }
+ else
+ {
+ if( HasRelWidths() )
+ nPrcWidth = (sal_uInt16)GetPrcWidth(nCol,nColSpan);
+ else
+ nWidth = GetAbsWidth( nCol, nColSpan );
+ }
+ }
+
+ long nHeight = pCell->GetHeight() > 0
+ ? GetAbsHeight( pCell->GetHeight(), nRow, nRowSpan )
+ : 0;
+ Size aPixelSz( nWidth, nHeight );
+
+ // WIDTH ausgeben (Grrr: nur fuer Netscape)
+ if( (aPixelSz.Width() || aPixelSz.Height()) && Application::GetDefaultDevice() )
+ {
+ Size aOldSz( aPixelSz );
+ aPixelSz = Application::GetDefaultDevice()->LogicToPixel( aPixelSz,
+ MapMode(MAP_TWIP) );
+ if( aOldSz.Width() && !aPixelSz.Width() )
+ aPixelSz.Width() = 1;
+ if( aOldSz.Height() && !aPixelSz.Height() )
+ aPixelSz.Height() = 1;
+ }
+
+ // WIDTH ausgeben: Aus Layout oder berechnet
+ if( bOutWidth )
+ {
+ ((sOut += ' ' ) += sHTML_O_width ) += '=';
+ if( nPrcWidth != USHRT_MAX )
+ (sOut += ByteString::CreateFromInt32(nPrcWidth)) += '%';
+ else
+ sOut += ByteString::CreateFromInt32(aPixelSz.Width());
+ if( !bLayoutExport && nColSpan==1 )
+ pCol->SetOutWidth( sal_False );
+ }
+
+ if( nHeight )
+ {
+ (((sOut += ' ') += sHTML_O_height) += '=')
+ += ByteString::CreateFromInt32(aPixelSz.Height());
+ }
+#endif
+
+ const SfxItemSet& rItemSet = pBox->GetFrmFmt()->GetAttrSet();
+ const SfxPoolItem *pItem;
+
+ // ALIGN wird jetzt nur noch an den Absaetzen ausgegeben
+
+ // VALIGN ausgeben
+ if( bOutVAlign )
+ {
+ SwVertOrient eVertOri = pCell->GetVertOri();
+ if( VERT_TOP==eVertOri || VERT_BOTTOM==eVertOri )
+ {
+ (((sOut += ' ') += sHTML_O_valign) += '=')
+ += (VERT_TOP==eVertOri ? sHTML_VA_top : sHTML_VA_bottom);
+ }
+ }
+
+ rWrt.Strm() << sOut.GetBuffer();
+ sOut.Erase();
+
+ rWrt.bTxtAttr = sal_False;
+ rWrt.bOutOpts = sal_True;
+ const SvxBrushItem *pBrushItem = 0;
+ if( SFX_ITEM_SET==rItemSet.GetItemState( RES_BACKGROUND, sal_False, &pItem ) )
+ {
+ pBrushItem = (const SvxBrushItem *)pItem;
+ }
+ if( !pBrushItem )
+ pBrushItem = pCell->GetBackground();
+
+ if( pBrushItem )
+ {
+ // Hintergrund ausgeben
+ String aDummy;
+ rWrt.OutBackground( pBrushItem, aDummy, sal_False );
+
+ if( rWrt.bCfgOutStyles )
+ OutCSS1_TableBGStyleOpt( rWrt, *pBrushItem );
+ }
+
+ sal_uInt32 nNumFmt;
+ double nValue = 0.0;
+ sal_Bool bNumFmt = sal_False, bValue = sal_False;
+ if( SFX_ITEM_SET==rItemSet.GetItemState( RES_BOXATR_FORMAT, sal_False, &pItem ) )
+ {
+ nNumFmt = ((const SwTblBoxNumFormat *)pItem)->GetValue();
+ bNumFmt = sal_True;
+ }
+ if( SFX_ITEM_SET==rItemSet.GetItemState( RES_BOXATR_VALUE, sal_False, &pItem ) )
+ {
+ nValue = ((const SwTblBoxValue *)pItem)->GetValue();
+ bValue = sal_True;
+ if( !bNumFmt )
+ nNumFmt = pBox->GetFrmFmt()->GetTblBoxNumFmt().GetValue();
+ }
+
+ if( bNumFmt || bValue )
+ sOut = HTMLOutFuncs::CreateTableDataOptionsValNum( sOut,
+ bValue, nValue, nNumFmt, *rWrt.pDoc->GetNumberFormatter(),
+ rWrt.eDestEnc );
+ sOut += '>';
+ rWrt.Strm() << sOut.GetBuffer();
+ rWrt.bLFPossible = sal_True;
+
+ rWrt.IncIndentLevel(); // den Inhalt von <TD>...</TD> einruecken
+
+ if( pSttNd )
+ {
+ HTMLSaveData aSaveData( rWrt, pSttNd->GetIndex()+1,
+ pSttNd->EndOfSectionIndex(),
+ rWrt.GetFlyFrmFmt() );
+ rWrt.Out_SwDoc( rWrt.pCurPam );
+// rWrt.ChangeParaToken( 0 ); // MIB 8.7.97: Passiert jetzt in Out_SwDoc
+ }
+ else
+ {
+ sal_uInt16 nTWidth, nBWidth, nLSub, nRSub;
+ if( HasRelWidths() )
+ {
+ nTWidth = 100;
+ nBWidth = GetRawWidth( nCol, nColSpan );
+ nLSub = 0;
+ nRSub = 0;
+ }
+ else
+ {
+ nTWidth = GetAbsWidth( nCol, nColSpan );
+ nBWidth = nTWidth;
+ nLSub = GetLeftSpace( nCol );
+ nRSub = GetRightSpace( nCol, nColSpan );
+ }
+
+ SwHTMLWrtTable aTableWrt( pBox->GetTabLines(), nTWidth,
+ nBWidth, HasRelWidths(), nLSub, nRSub );
+ aTableWrt.Write( rWrt );
+ }
+
+ rWrt.DecIndentLevel(); // den Inhalt von <TD>...</TD> einruecken
+
+ if( rWrt.bLFPossible )
+ rWrt.OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), bHead ? sHTML_tableheader
+ : sHTML_tabledata,
+ sal_False );
+ rWrt.bLFPossible = sal_True;
+}
+
+
+// Eine Line als Zeilen ausgeben
+void SwHTMLWrtTable::OutTableCells( SwHTMLWriter& rWrt,
+ const SwWriteTableCells& rCells,
+ const SvxBrushItem *pBrushItem ) const
+{
+ // Wenn die Zeile mehr als eine Zelle nethaelt und alle Zellen
+ // die gleiche Ausrichtung besitzen, das VALIGN an der Zeile statt der
+ // Zelle ausgeben
+ SwVertOrient eRowVertOri = VERT_NONE;
+ if( rCells.Count() > 1 )
+ {
+ for( sal_uInt16 nCell = 0; nCell<rCells.Count(); nCell++ )
+ {
+ SwVertOrient eCellVertOri = rCells[nCell]->GetVertOri();
+ if( 0==nCell )
+ {
+ eRowVertOri = eCellVertOri;
+ }
+ else if( eRowVertOri != eCellVertOri )
+ {
+ eRowVertOri = VERT_NONE;
+ break;
+ }
+ }
+ }
+
+ rWrt.OutNewLine(); // <TR> in neuer Zeile
+ rWrt.Strm() << '<' << sHTML_tablerow;
+ if( pBrushItem )
+ {
+ String aDummy;
+ rWrt.OutBackground( pBrushItem, aDummy, sal_False );
+
+ rWrt.bTxtAttr = sal_False;
+ rWrt.bOutOpts = sal_True;
+ if( rWrt.bCfgOutStyles )
+ OutCSS1_TableBGStyleOpt( rWrt, *pBrushItem );
+ }
+
+ if( VERT_TOP==eRowVertOri || VERT_BOTTOM==eRowVertOri )
+ {
+ ByteString sOut( ' ' );
+ ((sOut += sHTML_O_valign) += '=')
+ += (VERT_TOP==eRowVertOri ? sHTML_VA_top : sHTML_VA_bottom);
+ rWrt.Strm() << sOut.GetBuffer();
+ }
+
+ rWrt.Strm() << '>';
+
+ rWrt.IncIndentLevel(); // Inhalt von <TR>...</TR> einruecken
+
+ for( sal_uInt16 nCell = 0; nCell<rCells.Count(); nCell++ )
+ OutTableCell( rWrt, rCells[nCell], VERT_NONE==eRowVertOri );
+
+ rWrt.DecIndentLevel(); // Inhalt von <TR>...</TR> einruecken
+
+ rWrt.OutNewLine(); // </TR> in neuer Zeile
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_tablerow, sal_False );
+}
+
+
+
+void SwHTMLWrtTable::Write( SwHTMLWriter& rWrt, SwHoriOrient eAlign,
+ sal_Bool bTHead, const SwFrmFmt *pFrmFmt,
+ const String *pCaption, sal_Bool bTopCaption,
+ sal_uInt16 nHSpace, sal_uInt16 nVSpace ) const
+{
+ sal_uInt16 nRow;
+
+ // Wert fuer FRAME bestimmen
+ sal_uInt16 nFrameMask = 15;
+ if( !(aRows[0])->bTopBorder )
+ nFrameMask &= ~1;
+ if( !(aRows[aRows.Count()-1])->bBottomBorder )
+ nFrameMask &= ~2;
+ if( !(aCols[0])->bLeftBorder )
+ nFrameMask &= ~4;
+ if( !(aCols[aCols.Count()-1])->bRightBorder )
+ nFrameMask &= ~8;
+
+ // Wert fur RULES bestimmen
+ sal_Bool bRowsHaveBorder = sal_False;
+ sal_Bool bRowsHaveBorderOnly = sal_True;
+ SwWriteTableRow *pRow = aRows[0];
+ for( nRow=1; nRow < aRows.Count(); nRow++ )
+ {
+ SwWriteTableRow *pNextRow = aRows[nRow];
+ sal_Bool bBorder = ( pRow->bBottomBorder || pNextRow->bTopBorder );
+ bRowsHaveBorder |= bBorder;
+ bRowsHaveBorderOnly &= bBorder;
+
+ sal_uInt16 nBorder = pRow->bBottomBorder ? pRow->nBottomBorder : USHRT_MAX;
+ if( pNextRow->bTopBorder && pNextRow->nTopBorder < nBorder )
+ nBorder = pNextRow->nTopBorder;
+
+ pRow->bBottomBorder = bBorder;
+ pRow->nBottomBorder = nBorder;
+
+ pNextRow->bTopBorder = bBorder;
+ pNextRow->nTopBorder = nBorder;
+
+ pRow = pNextRow;
+ }
+
+ sal_Bool bColsHaveBorder = sal_False;
+ sal_Bool bColsHaveBorderOnly = sal_True;
+ SwWriteTableCol *pCol = aCols[0];
+ sal_uInt16 nCol;
+ for( nCol=1; nCol<aCols.Count(); nCol++ )
+ {
+ SwWriteTableCol *pNextCol = aCols[nCol];
+ sal_Bool bBorder = ( pCol->bRightBorder || pNextCol->bLeftBorder );
+ bColsHaveBorder |= bBorder;
+ bColsHaveBorderOnly &= bBorder;
+ pCol->bRightBorder = bBorder;
+ pNextCol->bLeftBorder = bBorder;
+ pCol = pNextCol;
+ }
+
+
+ // vorhergende Aufzaehlung etc. beenden
+ rWrt.ChangeParaToken( 0 );
+
+ if( rWrt.bLFPossible )
+ rWrt.OutNewLine(); // <TABLE> in neue Zeile
+ ByteString sOut( '<' );
+ sOut += sHTML_table;
+
+ // COLS ausgeben: Nur bei Export ueber Layout, wenn es beim Import
+ // vorhanden war.
+ if( bColsOption )
+ (((sOut += ' ') += sHTML_O_cols) += '=')
+ += ByteString::CreateFromInt32( aCols.Count() );
+
+ // ALIGN= ausgeben
+ if( HORI_RIGHT == eAlign )
+ (((sOut += ' ') += sHTML_O_align ) += '=') += sHTML_AL_right;
+ else if( HORI_CENTER == eAlign )
+ (((sOut += ' ') += sHTML_O_align ) += '=') += sHTML_AL_center;
+ else if( HORI_LEFT == eAlign )
+ (((sOut += ' ') += sHTML_O_align ) += '=') += sHTML_AL_left;
+
+ // WIDTH ausgeben: Stammt aus Layout oder ist berechnet
+ if( nTabWidth )
+ {
+ ((sOut += ' ') += sHTML_O_width ) += '=';
+ if( HasRelWidths() )
+ (sOut += ByteString::CreateFromInt32( nTabWidth )) += '%';
+ else if( Application::GetDefaultDevice() )
+ {
+ long nPixWidth = Application::GetDefaultDevice()->LogicToPixel(
+ Size(nTabWidth,0), MapMode(MAP_TWIP) ).Width();
+ if( !nPixWidth )
+ nPixWidth = 1;
+
+ sOut += ByteString::CreateFromInt32( nPixWidth );
+ }
+ else
+ {
+ ASSERT( Application::GetDefaultDevice(), "kein Application-Window!?" );
+ sOut += "100%";
+ }
+ }
+
+ if( (nHSpace || nVSpace) && Application::GetDefaultDevice())
+ {
+ Size aPixelSpc =
+ Application::GetDefaultDevice()->LogicToPixel( Size(nHSpace,nVSpace),
+ MapMode(MAP_TWIP) );
+ if( !aPixelSpc.Width() && nHSpace )
+ aPixelSpc.Width() = 1;
+ if( !aPixelSpc.Height() && nVSpace )
+ aPixelSpc.Height() = 1;
+
+ if( aPixelSpc.Width() )
+ {
+ (((sOut += ' ') += sHTML_O_hspace) += '=')
+ += ByteString::CreateFromInt32( aPixelSpc.Width() );
+ }
+
+ if( aPixelSpc.Height() )
+ {
+ (((sOut += ' ') += sHTML_O_vspace) += '=')
+ += ByteString::CreateFromInt32( aPixelSpc.Height() );
+ }
+ }
+
+ // BORDER ausgeben, aber nur wenn wir die Umrandung selbst berechnet
+ // haben oder die Umrandung 0 ist oder es irgendwelche Umrandungen gibt.
+ // Anderenfalls enthaelt nBorder naemlich nur die Breite der Umrandung,
+ // die genutzt wird, wenn gar kein ::com::sun::star::sheet::Border angegeben ist.
+ sal_Bool bHasAnyBorders = nFrameMask || bColsHaveBorder || bRowsHaveBorder;
+ if( bCollectBorderWidth || nBorder==0 || bHasAnyBorders )
+ (((sOut += ' ' ) += sHTML_O_border ) += '=')
+ += ByteString::CreateFromInt32( rWrt.ToPixel( nBorder ) );
+
+ // BORDERCOLOR ausgeben
+
+ if( (sal_uInt32)-1 != nBorderColor && rWrt.bCfgOutStyles && bHasAnyBorders )
+ {
+ ((sOut += ' ' ) += sHTML_O_bordercolor ) += '=';
+ rWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_Color( rWrt.Strm(), nBorderColor );
+ sOut.Erase();
+ }
+
+ // CELLPADDING ausgeben: Stammt aus Layout oder ist berechnet
+ (((sOut += ' ' ) += sHTML_O_cellpadding ) += '=')
+ += ByteString::CreateFromInt32( rWrt.ToPixel( nCellPadding ) );
+
+ // CELLSPACING ausgeben: Stammt aus Layout oder ist berechnet
+ (((sOut += ' ' ) += sHTML_O_cellspacing ) += '=')
+ += ByteString::CreateFromInt32( rWrt.ToPixel( nCellSpacing ) );
+
+ // FRAME/RULES ausgeben (nur sinnvoll, wenn border!=0)
+ if( nBorder!=0 && (bCollectBorderWidth || bHasAnyBorders) )
+ {
+ const sal_Char *pFrame = 0;
+ switch( nFrameMask )
+ {
+ case 0: pFrame = sHTML_TF_void ;break;
+ case 1: pFrame = sHTML_TF_above ;break;
+ case 2: pFrame = sHTML_TF_below ;break;
+ case 3: pFrame = sHTML_TF_hsides ;break;
+ case 4: pFrame = sHTML_TF_lhs ;break;
+ case 8: pFrame = sHTML_TF_rhs ;break;
+ case 12: pFrame = sHTML_TF_vsides ;break;
+ //FRAME=BOX ist der default wenn BORDER>0
+ //case 15:
+ //default: pFrame = sHTML_TF_box ;break; // geht nicht
+ };
+ if( pFrame )
+ (((sOut += ' ' ) += sHTML_O_frame ) += '=') += pFrame;
+
+ const sal_Char *pRules = 0;
+ if( aCols.Count() > 1 && aRows.Count() > 1 )
+ {
+ if( !bColsHaveBorder )
+ {
+ if( !bRowsHaveBorder )
+ pRules = sHTML_TR_none;
+ else if( bRowsHaveBorderOnly )
+ pRules = sHTML_TR_rows;
+ else
+ pRules = sHTML_TR_groups;
+ }
+ else if( bColsHaveBorderOnly )
+ {
+ if( !bRowsHaveBorder || !bRowsHaveBorderOnly )
+ pRules = sHTML_TR_cols;
+ }
+ else
+ {
+ if( !bRowsHaveBorder )
+ pRules = sHTML_TR_groups;
+ else if( bRowsHaveBorderOnly )
+ pRules = sHTML_TR_rows;
+ else
+ pRules = sHTML_TR_groups;
+ }
+ }
+ else if( aRows.Count() > 1 )
+ {
+ if( !bRowsHaveBorder )
+ pRules = sHTML_TR_none;
+ else if( !bRowsHaveBorderOnly )
+ pRules = sHTML_TR_groups;
+ }
+ else if( aCols.Count() > 1 )
+ {
+ if( !bColsHaveBorder )
+ pRules = sHTML_TR_none;
+ else if( !bColsHaveBorderOnly )
+ pRules = sHTML_TR_groups;
+ }
+
+ if( pRules )
+ (((sOut += ' ' ) += sHTML_O_rules ) += '=') += pRules;
+ }
+ rWrt.Strm() << sOut.GetBuffer();
+
+ // Hintergrund ausgeben
+ if( pFrmFmt )
+ {
+ String aDummy;
+ rWrt.OutBackground( pFrmFmt->GetAttrSet(), aDummy, sal_False );
+
+ if( rWrt.bCfgOutStyles && pFrmFmt )
+ rWrt.OutCSS1_TableFrmFmtOptions( *pFrmFmt );
+ }
+
+ sOut = '>';
+ rWrt.Strm() << sOut.GetBuffer();
+
+ rWrt.IncIndentLevel(); // Inhalte von Table einruecken
+
+ // Ueberschrift ausgeben
+ if( pCaption && pCaption->Len() )
+ {
+ rWrt.OutNewLine(); // <CAPTION> in neue Zeile
+ ByteString sOut( sHTML_caption );
+ (((sOut += ' ') += sHTML_O_align) += '=')
+ += (bTopCaption ? sHTML_VA_top : sHTML_VA_bottom);
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sOut.GetBuffer(), sal_True );
+ HTMLOutFuncs::Out_String( rWrt.Strm(), *pCaption, rWrt.eDestEnc );
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_caption, sal_False );
+ }
+
+ sal_uInt16 nCols = aCols.Count();
+
+ // <COLGRP>/<COL> ausgeben: Bei Export ueber Layout nur wenn beim
+ // Import welche da waren, sonst immer.
+ sal_Bool bColGroups = (bColsHaveBorder && !bColsHaveBorderOnly);
+ if( bColTags )
+ {
+ if( bColGroups )
+ {
+ rWrt.OutNewLine(); // <COLGRP> in neue Zeile
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_colgroup, sal_True );
+
+ rWrt.IncIndentLevel(); // Inhalt von <COLGRP> einruecken
+ }
+
+ for( nCol=0; nCol<nCols; nCol++ )
+ {
+ rWrt.OutNewLine(); // <COL> in neue Zeile
+
+ const SwWriteTableCol *pCol = aCols[nCol];
+
+ ByteString sOut( '<' );
+ sOut += sHTML_col;
+
+ sal_uInt16 nWidth;
+ sal_Bool bRel;
+ if( bLayoutExport )
+ {
+ bRel = pCol->HasRelWidthOpt();
+ nWidth = pCol->GetWidthOpt();
+ }
+ else
+ {
+ bRel = HasRelWidths();
+ nWidth = bRel ? GetRelWidth(nCol,1) : GetAbsWidth(nCol,1);
+ }
+
+ ((sOut += ' ' ) += sHTML_O_width ) += '=';
+ if( bRel )
+ {
+ (sOut += ByteString::CreateFromInt32( nWidth ) ) += '*';
+ }
+ else
+ {
+ sOut += ByteString::CreateFromInt32( rWrt.ToPixel( nWidth ) );
+ }
+ sOut += '>';
+ rWrt.Strm() << sOut.GetBuffer();
+
+ if( bColGroups && pCol->bRightBorder && nCol<nCols-1 )
+ {
+ rWrt.DecIndentLevel(); // Inhalt von <COLGRP> einruecken
+ rWrt.OutNewLine(); // </COLGRP> in neue Zeile
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_colgroup,
+ sal_False );
+ rWrt.OutNewLine(); // <COLGRP> in neue Zeile
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_colgroup,
+ sal_True );
+ rWrt.IncIndentLevel(); // Inhalt von <COLGRP> einruecken
+ }
+ }
+ if( bColGroups )
+ {
+ rWrt.DecIndentLevel(); // Inhalt von <COLGRP> einruecken
+
+ rWrt.OutNewLine(); // </COLGRP> in neue Zeile
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_colgroup,
+ sal_False );
+ }
+ }
+
+ // die Lines als Tabellenzeilen rausschreiben
+
+ // <TBODY> ausgeben?
+ sal_Bool bTSections = (bRowsHaveBorder && !bRowsHaveBorderOnly);
+ sal_Bool bTBody = bTSections;
+
+ // Wenn Sections ausgegeben werden muessen darf ein THEAD um die erste
+ // Zeile nur ausgegeben werden, wenn unter der Zeile eine Linie ist
+ if( bTHead &&
+ (bTSections || bColGroups) &&
+ nHeadEndRow<aRows.Count()-1 && !aRows[nHeadEndRow]->bBottomBorder )
+ bTHead = sal_False;
+
+ // <TBODY> aus ausgeben, wenn <THEAD> ausgegeben wird.
+ bTSections |= bTHead;
+
+ if( bTSections )
+ {
+ rWrt.OutNewLine(); // <THEAD>/<TDATA> in neue Zeile
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(),
+ bTHead ? sHTML_thead : sHTML_tbody, sal_True );
+
+ rWrt.IncIndentLevel(); // Inhalt von <THEAD>/<TDATA> einr.
+ }
+
+ for( nRow = 0; nRow < aRows.Count(); nRow++ )
+ {
+ const SwWriteTableRow *pRow = aRows[nRow];
+ const SwWriteTableCells& rCells = pRow->GetCells();
+
+ OutTableCells( rWrt, pRow->GetCells(), pRow->GetBackground() );
+ if( !nCellSpacing && nRow < aRows.Count()-1 && pRow->bBottomBorder &&
+ pRow->nBottomBorder > DEF_LINE_WIDTH_1 )
+ {
+ sal_uInt16 nCnt = (pRow->nBottomBorder / DEF_LINE_WIDTH_1) - 1;
+ for( ; nCnt; nCnt-- )
+ {
+ rWrt.OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_tablerow,
+ sal_True );
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_tablerow,
+ sal_False );
+ }
+ }
+ if( ( (bTHead && nRow==nHeadEndRow) ||
+ (bTBody && pRow->bBottomBorder) ) &&
+ nRow < aRows.Count()-1 )
+ {
+ rWrt.DecIndentLevel(); // Inhalt von <THEAD>/<TDATA> einr.
+ rWrt.OutNewLine(); // </THEAD>/</TDATA> in neue Zeile
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(),
+ bTHead ? sHTML_thead : sHTML_tbody, sal_False );
+ rWrt.OutNewLine(); // <THEAD>/<TDATA> in neue Zeile
+
+ if( bTHead && nRow==nHeadEndRow )
+ bTHead = sal_False;
+
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(),
+ bTHead ? sHTML_thead : sHTML_tbody, sal_True );
+ rWrt.IncIndentLevel(); // Inhalt von <THEAD>/<TDATA> einr.
+ }
+ }
+
+ if( bTSections )
+ {
+ rWrt.DecIndentLevel(); // Inhalt von <THEAD>/<TDATA> einr.
+
+ rWrt.OutNewLine(); // </THEAD>/</TDATA> in neue Zeile
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(),
+ bTHead ? sHTML_thead : sHTML_tbody, sal_False );
+ }
+
+ rWrt.DecIndentLevel(); // Inhalt von <TABLE> einr.
+
+ rWrt.OutNewLine(); // </TABLE> in neue Zeile
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_table, sal_False );
+}
+
+Writer& OutHTML_SwTblNode( Writer& rWrt, SwTableNode & rNode,
+ const SwFrmFmt *pFlyFrmFmt,
+ const String *pCaption, sal_Bool bTopCaption )
+{
+
+ SwTable& rTbl = rNode.GetTable();
+
+ SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
+ rHTMLWrt.bOutTable = sal_True;
+
+ // die horizontale Ausrichtung des Rahmens hat (falls vorhanden)
+ // Prioritaet. NONE bedeutet, dass keine horizontale
+ // Ausrichtung geschrieben wird.
+ SwHoriOrient eFlyHoriOri = HORI_NONE;
+ SwSurround eSurround = SURROUND_NONE;
+ sal_uInt8 nFlyPrcWidth = 0;
+ long nFlyWidth;
+ sal_uInt16 nFlyHSpace = 0;
+ sal_uInt16 nFlyVSpace = 0;
+ if( pFlyFrmFmt )
+ {
+ eSurround = pFlyFrmFmt->GetSurround().GetSurround();
+ const SwFmtFrmSize& rFrmSize = pFlyFrmFmt->GetFrmSize();
+ nFlyPrcWidth = rFrmSize.GetWidthPercent();
+ nFlyWidth = rFrmSize.GetSize().Width();
+
+ eFlyHoriOri = pFlyFrmFmt->GetHoriOrient().GetHoriOrient();
+ if( HORI_NONE == eFlyHoriOri )
+ eFlyHoriOri = HORI_LEFT;
+
+ const SvxLRSpaceItem& rLRSpace = pFlyFrmFmt->GetLRSpace();
+ nFlyHSpace = (rLRSpace.GetLeft() + rLRSpace.GetRight()) / 2;
+
+ const SvxULSpaceItem& rULSpace = pFlyFrmFmt->GetULSpace();
+ nFlyVSpace = (rULSpace.GetUpper() + rULSpace.GetLower()) / 2;
+ }
+
+ // ggf. eine FORM oeffnen
+ sal_Bool bPreserveForm = sal_False;
+ if( !rHTMLWrt.bPreserveForm )
+ {
+ rHTMLWrt.OutForm( sal_True, &rNode );
+ bPreserveForm = (rHTMLWrt.pxFormComps && rHTMLWrt.pxFormComps->is() );
+ rHTMLWrt.bPreserveForm = bPreserveForm;
+ }
+
+ SwFrmFmt *pFmt = rTbl.GetFrmFmt();
+
+ const SwFmtFrmSize& rFrmSize = pFmt->GetFrmSize();
+ long nWidth = rFrmSize.GetSize().Width();
+ sal_uInt8 nPrcWidth = rFrmSize.GetWidthPercent();
+ sal_uInt16 nBaseWidth = (sal_uInt16)nWidth;
+
+ SwHoriOrient eTabHoriOri = pFmt->GetHoriOrient().GetHoriOrient();
+
+ // HORI_NONE und HORI_FULL Tabellen benoetigen relative Breiten
+ sal_uInt16 nNewDefListLvl = 0;
+ sal_Bool bRelWidths = sal_False;
+ sal_Bool bCheckDefList = sal_False;
+ switch( eTabHoriOri )
+ {
+ case HORI_FULL:
+ // Tabellen mit automatischer Ausrichtung werden zu Tabellen
+ // mit 100%-Breite
+ bRelWidths = sal_True;
+ nWidth = 100;
+ eTabHoriOri = HORI_LEFT;
+ break;
+ case HORI_NONE:
+ {
+ const SvxLRSpaceItem& aLRItem = pFmt->GetLRSpace();
+ if( aLRItem.GetRight() )
+ {
+ // Die Tabellenbreite wird anhand des linken und rechten
+ // Abstandes bestimmt. Deshalb versuchen wir die
+ // tatsaechliche Breite der Tabelle zu bestimmen. Wenn
+ // das nicht geht, machen wir eine 100% breite Tabelle
+ // draus.
+ nWidth = pFmt->FindLayoutRect(sal_True).Width();
+ if( !nWidth )
+ {
+ bRelWidths = sal_True;
+ nWidth = 100;
+ }
+
+ }
+ else if( nPrcWidth )
+ {
+ // Ohne rechten Rand bleibt die %-Breite erhalten
+ nWidth = nPrcWidth;
+ bRelWidths = sal_True;
+ }
+ else
+ {
+ // Ohne rechten Rand bleibt auch eine absolute Breite erhalten
+ // Wir versuchen aber trotzdem ueber das Layout die
+ // tatsachliche Breite zu ermitteln.
+ long nRealWidth = pFmt->FindLayoutRect(sal_True).Width();
+ if( nRealWidth )
+ nWidth = nRealWidth;
+ }
+ bCheckDefList = sal_True;
+ }
+ break;
+ case HORI_LEFT_AND_WIDTH:
+ eTabHoriOri = HORI_LEFT;
+ bCheckDefList = sal_True;
+ // no break
+ default:
+ // In allen anderen Faellen kann eine absolute oder relative
+ // Breite direkt uebernommen werden.
+ if( nPrcWidth )
+ {
+ bRelWidths = sal_True;
+ nWidth = nPrcWidth;
+ }
+ break;
+ }
+
+ if( bCheckDefList )
+ {
+ ASSERT( !rHTMLWrt.GetNumInfo().GetNumRule() ||
+ rHTMLWrt.GetNextNumInfo(),
+ "NumInfo fuer naechsten Absatz fehlt!" );
+ const SvxLRSpaceItem& aLRItem = pFmt->GetLRSpace();
+ if( aLRItem.GetLeft() &&
+ ( !rHTMLWrt.GetNumInfo().GetNumRule() ||
+ ( rHTMLWrt.GetNextNumInfo() &&
+ (rHTMLWrt.GetNextNumInfo()->IsRestart() ||
+ rHTMLWrt.GetNumInfo().GetNumRule() !=
+ rHTMLWrt.GetNextNumInfo()->GetNumRule()) ) ) )
+ {
+ // Wenn der Absatz vor der Tabelle nicht numeriert ist oder
+ // der Absatz nach der Tabelle mit einer anderen oder
+ // (gar keiner) Regel numeriert ist, koennen wir
+ // die Einrueckung ueber eine DL regeln. Sonst behalten wir
+ // die Einrueckung der Numerierung bei.
+ nNewDefListLvl =
+ (aLRItem.GetLeft() + (rHTMLWrt.nDefListMargin/2)) /
+ rHTMLWrt.nDefListMargin;
+ }
+ }
+
+ if( !pFlyFrmFmt && nNewDefListLvl != rHTMLWrt.nDefListLvl )
+ rHTMLWrt.OutAndSetDefList( nNewDefListLvl );
+
+ if( nNewDefListLvl )
+ {
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_dd );
+ }
+
+ // eFlyHoriOri und eTabHoriOri besitzen nun nur noch die Werte
+ // LEFT/CENTER und RIGHT!
+ if( eFlyHoriOri!=HORI_NONE )
+ {
+ eTabHoriOri = eFlyHoriOri;
+ // MIB 4.7.97: Wenn die Tabelle eine relative Breite besitzt,
+ // dann richtet sich ihre Breite nach der des Rahmens, also
+ // exportieren wir dessen Breite. Bei fixer Breite ist die Breite
+ // der Tabelle massgeblich. Wer Tabellen mit relativer Breite <100%
+ // in Rahmen steckt, ist selber schuld wenn nix Gutes bei rauskommt.
+ if( bRelWidths )
+ {
+ nWidth = nFlyPrcWidth ? nFlyPrcWidth : nFlyWidth;
+ bRelWidths = nFlyPrcWidth > 0;
+ }
+ }
+
+ SwHoriOrient eDivHoriOri = HORI_NONE;
+ switch( eTabHoriOri )
+ {
+ case HORI_LEFT:
+ // Wenn eine linksbuendigeTabelle keinen rechtsseiigen Durchlauf
+ // hat, brauchen wir auch kein ALIGN=LEFT in der Tabelle.
+ if( eSurround==SURROUND_NONE || eSurround==SURROUND_LEFT )
+ eTabHoriOri = HORI_NONE;
+ break;
+ case HORI_RIGHT:
+ // Aehnliches gilt fuer rechtsbuendigeTabelle, hier nehmen wir
+ // stattdessen ein <DIV ALIGN=RIGHT>.
+ if( eSurround==SURROUND_NONE || eSurround==SURROUND_RIGHT )
+ {
+ eDivHoriOri = HORI_RIGHT;
+ eTabHoriOri = HORI_NONE;
+ }
+ break;
+ case HORI_CENTER:
+ // ALIGN=CENTER versteht so gut wie keiner, deshalb verzichten wir
+ // daruf und nehmen ein <CENTER>.
+ eDivHoriOri = HORI_CENTER;
+ eTabHoriOri = HORI_NONE;
+ break;
+ }
+ if( HORI_NONE==eTabHoriOri )
+ nFlyHSpace = nFlyVSpace = 0;
+
+ if( pFmt->GetName().Len() )
+ rHTMLWrt.OutImplicitMark( pFmt->GetName(), pMarkToTable );
+
+ if( HORI_NONE!=eDivHoriOri )
+ {
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine(); // <CENTER> in neuer Zeile
+ if( HORI_CENTER==eDivHoriOri )
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sHTML_center, sal_True );
+ else
+ {
+ ByteString sOut( sHTML_division );
+ (((sOut += ' ') += sHTML_O_align) += '=') += sHTML_AL_right;
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), sOut.GetBuffer(),
+ sal_True );
+ }
+ rHTMLWrt.IncIndentLevel(); // Inhalt von <CENTER> einruecken
+ rHTMLWrt.bLFPossible = sal_True;
+ }
+
+ // Wenn die Tabelle in keinem Rahmen ist kann man immer ein LF ausgeben.
+ if( HORI_NONE==eTabHoriOri )
+ rHTMLWrt.bLFPossible = sal_True;
+
+ const SwHTMLTableLayout *pLayout = rTbl.GetHTMLTableLayout();
+
+#ifndef PRODUCT
+ ViewShell *pSh;
+ rWrt.pDoc->GetEditShell( &pSh );
+ if ( pSh && pSh->GetViewOptions()->IsTest1() )
+ pLayout = 0;
+#endif
+
+ if( pLayout && pLayout->IsExportable() )
+ {
+ SwHTMLWrtTable aTableWrt( pLayout );
+ aTableWrt.Write( rHTMLWrt, eTabHoriOri, rTbl.IsHeadlineRepeat(),
+ pFmt, pCaption, bTopCaption,
+ nFlyHSpace, nFlyVSpace );
+ }
+ else
+ {
+ SwHTMLWrtTable aTableWrt( rTbl.GetTabLines(), nWidth,
+ nBaseWidth, bRelWidths );
+ aTableWrt.Write( rHTMLWrt, eTabHoriOri, rTbl.IsHeadlineRepeat(),
+ pFmt, pCaption, bTopCaption,
+ nFlyHSpace, nFlyVSpace );
+ }
+
+ // Wenn die Tabelle in keinem Rahmen war kann man immer ein LF ausgeben.
+ if( HORI_NONE==eTabHoriOri )
+ rHTMLWrt.bLFPossible = sal_True;
+
+ if( HORI_NONE!=eDivHoriOri )
+ {
+ rHTMLWrt.DecIndentLevel(); // Inhalt von <CENTER> einruecken
+ rHTMLWrt.OutNewLine(); // </CENTER> in neue Teile
+ HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(),
+ HORI_CENTER==eDivHoriOri ? sHTML_center
+ : sHTML_division, sal_False );
+ rHTMLWrt.bLFPossible = sal_True;
+ }
+
+ // Pam hinter die Tabelle verschieben
+ rHTMLWrt.pCurPam->GetPoint()->nNode = *rNode.EndOfSectionNode();
+
+ if( bPreserveForm )
+ {
+ rHTMLWrt.bPreserveForm = sal_False;
+ rHTMLWrt.OutForm( sal_False );
+ }
+
+ rHTMLWrt.bOutTable = sal_False;
+
+ if( rHTMLWrt.GetNextNumInfo() &&
+ !rHTMLWrt.GetNextNumInfo()->IsRestart() &&
+ rHTMLWrt.GetNextNumInfo()->GetNumRule() ==
+ rHTMLWrt.GetNumInfo().GetNumRule() )
+ {
+ // Wenn der Absatz hinter der Tabelle mit der gleichen Regel
+ // numeriert ist wie der Absatz vor der Tabelle, dann steht in
+ // der NumInfo des naechsten Absatzes noch die Ebene des Absatzes
+ // vor der Tabelle. Es muss deshalb die NumInfo noch einmal geholt
+ // werden um ggf. die Num-Liste noch zu beenden.
+ rHTMLWrt.ClearNextNumInfo();
+ rHTMLWrt.FillNextNumInfo();
+ OutHTML_NumBulListEnd( rHTMLWrt, *rHTMLWrt.GetNextNumInfo() );
+ }
+ return rWrt;
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/htmltabw.cxx,v 1.1.1.1 2000-09-18 17:14:56 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.60 2000/09/18 16:04:46 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.59 2000/06/26 09:52:33 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.58 2000/04/28 14:29:12 mib
+ unicode
+
+ Revision 1.57 2000/04/10 12:20:57 mib
+ unicode
+
+ Revision 1.56 2000/03/21 15:06:18 os
+ UNOIII
+
+ Revision 1.55 2000/03/03 15:21:01 os
+ StarView remainders removed
+
+ Revision 1.54 2000/02/11 14:37:33 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.53 2000/02/07 08:24:58 mib
+ #72727#: HORI_LEFT_AND_WIDTH
+
+ Revision 1.52 1999/11/19 16:40:20 os
+ modules renamed
+
+ Revision 1.51 1999/10/29 17:35:38 jp
+ export the class for build a '2D-Table' from a SwTable
+
+ Revision 1.50 1999/09/21 09:49:57 mib
+ multiple text encodings
+
+ Revision 1.49 1999/06/11 14:43:36 MIB
+ Individuelle Umrandungs-Abstaende
+
+
+ Rev 1.48 11 Jun 1999 16:43:36 MIB
+ Individuelle Umrandungs-Abstaende
+
+ Rev 1.47 10 Jun 1999 10:34:30 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.46 09 Jun 1999 19:37:04 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+ Rev 1.45 22 Feb 1999 08:40:42 MA
+ 1949globale Shell entsorgt, Shells am RootFrm
+
+ Rev 1.44 25 Jan 1999 16:19:10 OS
+ #56371# TF_ONE51 - uebersetzbar
+
+ Rev 1.43 05 Jan 1999 14:48:04 MIB
+ #60429#: Zeilenhoehe korrekt berechnen
+
+ Rev 1.42 09 Nov 1998 11:40:30 MIB
+ #56461#: Keine Tabelle in Tabelle exportieren, wenn Hintergrund vorhanden
+
+ Rev 1.41 04 Nov 1998 15:04:26 MIB
+ #56461#: Keine Zellen mit Hintergrund als Tabelle in Tabelle exportieren
+
+ Rev 1.40 17 Sep 1998 16:28:36 MIB
+ CSS1-Export aufgeraeumt
+
+ Rev 1.39 10 Jun 1998 10:15:38 OS
+ Package-Umstellung
+
+ Rev 1.38 19 May 1998 14:47:30 MIB
+ VC-Controls raus, UNO-Controls rein
+
+ Rev 1.37 15 Apr 1998 14:57:56 MIB
+ Zwei-seitige Printing-Extensions
+
+ Rev 1.36 08 Apr 1998 16:53:22 MIB
+ NumberForamtter-Value mit 0 initialsiert (vielleicht hilft's ja gegen #49395#)
+
+ Rev 1.35 19 Mar 1998 09:28:26 MIB
+ Rahmen-Export verbessert/aufgeraeumt
+
+ Rev 1.34 20 Feb 1998 19:01:52 MA
+ header
+
+ Rev 1.33 13 Feb 1998 19:11:50 HR
+ C42 (Solaris) wie ICC
+
+ Rev 1.32 19 Jan 1998 16:21:50 MIB
+ Numerierungs-Umbau
+
+ Rev 1.31 26 Nov 1997 19:09:46 MA
+ includes
+
+ Rev 1.30 09 Oct 1997 14:35:42 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.29 12 Sep 1997 11:16:24 OS
+ ITEMID_* definiert
+
+ Rev 1.28 29 Aug 1997 16:49:48 OS
+ DLL-Umstellung
+
+ Rev 1.27 15 Aug 1997 12:46:32 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.26 12 Aug 1997 13:42:56 OS
+ Header-Umstellung
+
+ Rev 1.25 07 Aug 1997 15:08:06 OM
+ Headerfile-Umstellung
+
+ Rev 1.24 22 Jul 1997 11:31:10 MIB
+ Zwei Zeilen vertauscht, wegen Opt-Fehler im OS/2 C-Set-Compiler
+
+ Rev 1.23 11 Jul 1997 13:34:18 MIB
+ VALIGN an Zeile ausgeben, wenn Ausr. an allen Zellen gleich, kein VALIGN=MIDDLE
+
+ Rev 1.22 11 Jul 1997 11:54:52 MIB
+ COLGROUP/TBODY nur wo wirklich noetig, FRAMES/RULES fuer einzeile/spaltige Tbls
+
+ Rev 1.21 11 Jul 1997 09:17:50 MIB
+ fix: BORDER/CELLSP bei nur innerer Umrandung, FRAME/RULES nur wenn noetig
+
+ Rev 1.20 11 Jul 1997 07:42:20 MIB
+ Rechts-ausgerichtete Tabellen (auch im Rahmen ohne Umlauf) durch DIV ausrichten
+
+ Rev 1.19 09 Jul 1997 08:46:08 MIB
+ Fix: Bei Export ueber Layout </THEAD> nach 1. nicht 2. Zeile
+
+ Rev 1.18 09 Jul 1997 08:15:30 MIB
+ Kein ALIGN=CENTER in mit <CENTER> zentrierten Tabellen
+
+ Rev 1.17 08 Jul 1997 18:10:44 MIB
+ fix: <PRE> vor Bereichen, spaltigen Rahmen und am Dokende beenden
+
+ Rev 1.16 04 Jul 1997 12:40:16 MIB
+ Verbess. Tbl. in Rahmen: Bei rel. Breite immmer die Rahmenbreite exportieren.
+
+ Rev 1.15 04 Jul 1997 09:23:12 MIB
+ fix: Beim Export ueber Layout kein BORDER ausgeben, wenn keine Umrandung ex.
+
+ Rev 1.14 30 Jun 1997 16:25:16 MIB
+ Die erste Box ohne Inhalt nie als Tabelle in Tabelle exportieren
+
+ Rev 1.13 30 Jun 1997 12:01:52 MIB
+ Tabellen ohne Umrandung immer als Tab in Tab exportieren
+
+ Rev 1.12 21 Jun 1997 12:40:08 MIB
+ Nach <TD> darf ein LF ausgegeben werden
+
+ Rev 1.11 17 Jun 1997 11:45:28 MIB
+ Sprungmarken fuer generierte Links in Verzeichnissen
+
+ Rev 1.10 12 Jun 1997 15:58:42 MIB
+ Ab bestimmter Tiefe Tabellen in Tabellen exportieren
+
+ Rev 1.9 11 Jun 1997 18:11:52 MIB
+ fix: Twip-Werte der Umrandung an Pixel-Breite anpassen
+
+ Rev 1.8 10 Jun 1997 09:49:20 TRI
+ Borland Anpassung
+
+ Rev 1.7 09 Jun 1997 09:35:14 MIB
+ bug fixes fuer Export ueber Layout
+
+ Rev 1.6 05 Jun 1997 17:44:12 MIB
+ Tabellen-Export ueber Layout
+
+ Rev 1.5 05 Jun 1997 11:25:50 MIB
+ keine inlines fuer Borland C
+
+ Rev 1.4 27 May 1997 12:58:40 TRI
+ PRODCT nach PRODUCT
+
+ Rev 1.3 06 May 1997 11:01:04 TRI
+ operatoren bei ICC nicht inline
+
+ Rev 1.2 24 Apr 1997 12:50:04 MIB
+ kleinere Verbesserungen
+
+ Rev 1.1 21 Apr 1997 11:27:58 MIB
+ jetzt mit Hoehenberechnung ueber Layout
+
+ Rev 1.0 19 Apr 1997 13:23:38 MIB
+ Initial revision.
+
+ Rev 1.178 14 Apr 1997 17:33:46 MIB
+ fix #36953#: Keine Tricks gegen Absatz-Abstaende im letzten Tabellen-Absatz
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/htmlvsh.hxx b/sw/source/filter/html/htmlvsh.hxx
new file mode 100644
index 000000000000..f500e738998a
--- /dev/null
+++ b/sw/source/filter/html/htmlvsh.hxx
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlvsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _HTMLVSH_HXX
+#define _HTMLVSH_HXX
+
+#ifndef _CALBCK_HXX
+#include <calbck.hxx>
+#endif
+class ViewShell;
+
+
+class SwHTMLViewShellClient : public SwClient
+{
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew );
+
+public:
+
+ SwHTMLViewShellClient( ViewShell *pVSh );
+
+ virtual ~SwHTMLViewShellClient();
+
+ void Register( ViewShell *pVsh );
+ void DeRegister();
+
+ /*inline*/ ViewShell *GetViewShell(); // im swhtml.cxx
+};
+
+
+
+#endif
+
+
diff --git a/sw/source/filter/html/makefile.mk b/sw/source/filter/html/makefile.mk
new file mode 100644
index 000000000000..43a1cd934faa
--- /dev/null
+++ b/sw/source/filter/html/makefile.mk
@@ -0,0 +1,138 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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=sw
+TARGET=html
+
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\filt_1st\filt_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+.IF "$(mydebug)" != ""
+CDEFS=$(CDEFS) -Dmydebug
+.ENDIF
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ css1atr.cxx \
+ css1kywd.cxx \
+ htmlatr.cxx \
+ htmlbas.cxx \
+ htmlcss1.cxx \
+ htmlctxt.cxx \
+ htmldraw.cxx \
+ htmlfld.cxx \
+ htmlfldw.cxx \
+ htmlfly.cxx \
+ htmlflyt.cxx \
+ htmlform.cxx \
+ htmlforw.cxx \
+ htmlftn.cxx \
+ htmlgrin.cxx \
+ htmlnum.cxx \
+ htmlplug.cxx \
+ htmlsect.cxx \
+ htmltab.cxx \
+ htmltabw.cxx \
+ parcss1.cxx \
+ svxcss1.cxx \
+ swhtml.cxx \
+ wrthtml.cxx \
+
+SLOFILES = \
+ $(SLO)$/css1atr.obj \
+ $(SLO)$/css1kywd.obj \
+ $(SLO)$/htmlatr.obj \
+ $(SLO)$/htmlbas.obj \
+ $(SLO)$/htmlcss1.obj \
+ $(SLO)$/htmlctxt.obj \
+ $(SLO)$/htmldraw.obj \
+ $(SLO)$/htmlfld.obj \
+ $(SLO)$/htmlfldw.obj \
+ $(SLO)$/htmlfly.obj \
+ $(SLO)$/htmlflyt.obj \
+ $(SLO)$/htmlform.obj \
+ $(SLO)$/htmlforw.obj \
+ $(SLO)$/htmlftn.obj \
+ $(SLO)$/htmlgrin.obj \
+ $(SLO)$/htmlnum.obj \
+ $(SLO)$/htmlplug.obj \
+ $(SLO)$/htmlsect.obj \
+ $(SLO)$/htmltab.obj \
+ $(SLO)$/htmltabw.obj \
+ $(SLO)$/parcss1.obj \
+ $(SLO)$/svxcss1.obj \
+ $(SLO)$/swhtml.obj \
+ $(SLO)$/wrthtml.obj \
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/filter/html/parcss1.cxx b/sw/source/filter/html/parcss1.cxx
new file mode 100644
index 000000000000..912cbddbd6ea
--- /dev/null
+++ b/sw/source/filter/html/parcss1.cxx
@@ -0,0 +1,1598 @@
+/*************************************************************************
+ *
+ * $RCSfile: parcss1.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <limits.h>
+
+#ifndef _RTL_USTRBUF_HXX_
+#include <rtl/ustrbuf.hxx>
+#endif
+
+#ifndef _TOOLS_DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+#ifndef _INTN_HXX //autogen
+#include <tools/intn.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SV_COLOR_HXX //autogen
+#include <vcl/color.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+
+
+
+#include "css1kywd.hxx"
+#include "parcss1.hxx"
+
+
+// Loop-Check: Um Endlos-Schleifen zu vermeiden, wird in jeder
+// Schalife geprueft, ob ein Fortschritt in der Eingabe-Position
+// stattgefunden hat
+#define LOOP_CHECK
+
+#ifdef LOOP_CHECK
+
+#define LOOP_CHECK_DECL \
+ xub_StrLen nOldInPos = STRING_MAXLEN;
+#define LOOP_CHECK_RESTART \
+ nOldInPos = STRING_MAXLEN;
+#define LOOP_CHECK_CHECK( where ) \
+ DBG_ASSERT( nOldInPos!=nInPos || cNextCh==(sal_Unicode)EOF, where ); \
+ if( nOldInPos==nInPos && cNextCh!=(sal_Unicode)EOF ) \
+ break; \
+ else \
+ nOldInPos = nInPos;
+
+#else
+
+#define LOOP_CHECK_DECL
+#define LOOP_CHECK_RESTART
+#define LOOP_CHECK_CHECK( where )
+
+#endif
+
+
+
+const sal_Int32 MAX_LEN = 1024;
+
+/* */
+
+void CSS1Parser::InitRead( const String& rIn )
+{
+ nlLineNr = 0;
+ nlLinePos = 0;
+
+ bWhiteSpace = TRUE; // Wenn noch nichts gelesen wurde ist das wie WS
+ bEOF = FALSE;
+ eState = CSS1_PAR_WORKING;
+ nValue = 0.;
+
+ aIn = rIn;
+ nInPos = 0;
+ cNextCh = GetNextChar();
+ nToken = GetNextToken();
+}
+
+sal_Unicode CSS1Parser::GetNextChar()
+{
+ if( nInPos >= aIn.Len() )
+ {
+ bEOF = TRUE;
+ return (sal_Unicode)EOF;
+ }
+
+ sal_Unicode c = aIn.GetChar( nInPos );
+ nInPos++;
+
+ if( c == '\n' )
+ {
+ IncLineNr();
+ SetLinePos( 1L );
+ }
+ else
+ IncLinePos();
+
+ return c;
+}
+
+/* */
+
+// Diese Funktion realisiert den in
+//
+// http://www.w3.orh/pub/WWW/TR/WD-css1.html
+// bzw. http://www.w3.orh/pub/WWW/TR/WD-css1-960220.html
+//
+// beschriebenen Scanner fuer CSS1. Es handelt sich um eine direkte
+// Umsetzung der dort beschriebenen Lex-Grammatik
+//
+CSS1Token CSS1Parser::GetNextToken()
+{
+ CSS1Token nRet = CSS1_NULL;
+ aToken.Erase();
+
+ do {
+ // Merken, ob davor White-Space gelesen wurde
+ BOOL bPrevWhiteSpace = bWhiteSpace;
+ bWhiteSpace = FALSE;
+
+ BOOL bNextCh = TRUE;
+ switch( cNextCh )
+ {
+ case '/': // COMMENT | '/'
+ {
+ cNextCh = GetNextChar();
+ if( '*' == cNextCh )
+ {
+ // COMMENT
+ cNextCh = GetNextChar();
+
+ BOOL bAsterix = FALSE;
+ while( !(bAsterix && '/'==cNextCh) && !IsEOF() )
+ {
+ bAsterix = ('*'==cNextCh);
+ cNextCh = GetNextChar();
+ }
+ }
+ else
+ {
+ // '/'
+ bNextCh = FALSE;
+ nRet = CSS1_SLASH;
+ }
+ }
+ break;
+
+ case '@': // '@import' | '@XXX'
+ {
+ cNextCh = GetNextChar();
+ if( ('A' <= cNextCh && cNextCh <= 'Z') ||
+ ('a' <= cNextCh && cNextCh <= 'z') )
+ {
+ // den naechsten Identifer scannen
+ ::rtl::OUStringBuffer sTmpBuffer( 32L );
+ do {
+ sTmpBuffer.append( cNextCh );
+ cNextCh = GetNextChar();
+ } while( ('A' <= cNextCh && cNextCh <= 'Z') ||
+ ('a' <= cNextCh && cNextCh <= 'z') ||
+ ('0' <= cNextCh && cNextCh <= '9') ||
+ '-'==cNextCh && !IsEOF() );
+
+ aToken += String(sTmpBuffer.makeStringAndClear());
+
+ // und schauen, ob wir ihn kennen
+ switch( aToken.GetChar(0) )
+ {
+ case 'i':
+ case 'I':
+ if( aToken.EqualsIgnoreCaseAscii(sCSS1_import) )
+ nRet = CSS1_IMPORT_SYM;
+ break;
+// /Feature: PrintExt
+ case 'p':
+ case 'P':
+ if( aToken.EqualsIgnoreCaseAscii(sCSS1_page) )
+ nRet = CSS1_PAGE_SYM;
+ break;
+// /Feature: PrintExt
+ }
+
+ // Fehlerbehandlung: '@ident' und alles bis
+ // zu einem Semikolon der dem Ende des folgenden
+ // Blocks ignorieren
+ if( CSS1_NULL==nRet )
+ {
+ aToken.Erase();
+ USHORT nBlockLvl = 0;
+ sal_Unicode cQuoteCh = 0;
+ BOOL bDone = FALSE, bEscape = FALSE;
+ while( !bDone && !IsEOF() )
+ {
+ BOOL bOldEscape = bEscape;
+ bEscape = FALSE;
+ switch( cNextCh )
+ {
+ case '{':
+ if( !cQuoteCh && !bOldEscape )
+ nBlockLvl++;;
+ break;
+ case ';':
+ if( !cQuoteCh && !bOldEscape )
+ bDone = nBlockLvl==0;
+ break;
+ case '}':
+ if( !cQuoteCh && !bOldEscape )
+ bDone = --nBlockLvl==0;
+ break;
+ case '\"':
+ case '\'':
+ if( !bOldEscape )
+ {
+ if( cQuoteCh )
+ {
+ if( cQuoteCh == cNextCh )
+ cQuoteCh = 0;
+ }
+ else
+ {
+ cQuoteCh = cNextCh;
+ }
+ }
+ break;
+ case '\\':
+ if( !bOldEscape )
+ bEscape = TRUE;
+ break;
+ }
+ cNextCh = GetNextChar();
+ }
+ }
+
+ bNextCh = FALSE;
+ }
+ }
+ break;
+
+ case '!': // '!' 'legal' | '!' 'important' | syntax error
+ {
+ // White Space ueberlesen
+ cNextCh = GetNextChar();
+ while( ( ' ' == cNextCh ||
+ (cNextCh >= 0x09 && cNextCh <= 0x0d) ) && !IsEOF() )
+ {
+ bWhiteSpace = TRUE;
+ cNextCh = GetNextChar();
+ }
+
+ if( 'i'==cNextCh || 'I'==cNextCh)
+ {
+ // den naechsten Identifer scannen
+ ::rtl::OUStringBuffer sTmpBuffer( 32L );
+ do {
+ sTmpBuffer.append( cNextCh );
+ cNextCh = GetNextChar();
+ } while( ('A' <= cNextCh && cNextCh <= 'Z') ||
+ ('a' <= cNextCh && cNextCh <= 'z') ||
+ ('0' <= cNextCh && cNextCh <= '9') ||
+ '-' == cNextCh && !IsEOF() );
+
+ aToken += String(sTmpBuffer.makeStringAndClear());
+
+ if( ('i'==aToken.GetChar(0) || 'I'==aToken.GetChar(0)) &&
+ aToken.EqualsIgnoreCaseAscii(sCSS1_important) )
+ {
+ // '!' 'important'
+ nRet = CSS1_IMPORTANT_SYM;
+ }
+ else
+ {
+ // Fehlerbehandlung: '!' ignorieren, IDENT nicht
+ nRet = CSS1_IDENT;
+ }
+
+ bWhiteSpace = FALSE;
+ bNextCh = FALSE;
+ }
+ else
+ {
+ // Fehlerbehandlung: '!' ignorieren
+ bNextCh = FALSE;
+ }
+ }
+ break;
+
+ case '\"':
+ case '\'': // STRING
+ {
+ // \... geht noch nicht!!!
+ sal_Unicode cQuoteChar = cNextCh;
+ cNextCh = GetNextChar();
+
+ ::rtl::OUStringBuffer sTmpBuffer( MAX_LEN );
+ do {
+ sTmpBuffer.append( cNextCh );
+ cNextCh = GetNextChar();
+ } while( cQuoteChar != cNextCh && !IsEOF() );
+
+ aToken += String(sTmpBuffer.makeStringAndClear());
+
+ nRet = CSS1_STRING;
+ }
+ break;
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': // NUMBER | PERCENTAGE | LENGTH
+ {
+ // die aktuelle Position retten
+ xub_StrLen nInPosSave = nInPos;
+ sal_Unicode cNextChSave = cNextCh;
+ sal_uInt32 nlLineNrSave = nlLineNr;
+ sal_uInt32 nlLinePosSave = nlLinePos;
+ BOOL bEOFSave = bEOF;
+
+ // erstmal versuchen eine Hex-Zahl zu scannen
+ ::rtl::OUStringBuffer sTmpBuffer( 16 );
+ do {
+ sTmpBuffer.append( cNextCh );
+ cNextCh = GetNextChar();
+ } while( sTmpBuffer.getLength() < 7 &&
+ ( ('0'<=cNextCh && '9'>=cNextCh) ||
+ ('A'<=cNextCh && 'F'>=cNextCh) ||
+ ('a'<=cNextCh && 'f'>=cNextCh) ) &&
+ !IsEOF() );
+
+ if( sTmpBuffer.getLength()==6 )
+ {
+ // wir haben eine hexadezimale Farbe gefunden
+ aToken += String(sTmpBuffer.makeStringAndClear());
+ nRet = CSS1_HEXCOLOR;
+ bNextCh = FALSE;
+
+ break;
+ }
+
+ // sonst versuchen wir es mit einer Zahl
+ nInPos = nInPosSave;
+ cNextCh = cNextChSave;
+ nlLineNr = nlLineNrSave;
+ nlLinePos = nlLinePosSave;
+ bEOF = bEOFSave;
+
+ // erstmal die Zahl scannen
+ sTmpBuffer.setLength( 0L );
+ do {
+ sTmpBuffer.append( cNextCh );
+ cNextCh = GetNextChar();
+ } while( (('0'<=cNextCh && '9'>=cNextCh) || '.'==cNextCh) &&
+ !IsEOF() );
+
+ aToken += String(sTmpBuffer.makeStringAndClear());
+ nValue = aToken.ToDouble();
+
+ // White Space ueberlesen
+ while( ( ' ' == cNextCh ||
+ (cNextCh >= 0x09 && cNextCh <= 0x0d) ) && !IsEOF() )
+ {
+ bWhiteSpace = TRUE;
+ cNextCh = GetNextChar();
+ }
+
+ // und nun Schauen, ob es eine Einheit gibt
+ switch( cNextCh )
+ {
+ case '%': // PERCENTAGE
+ bWhiteSpace = FALSE;
+ nRet = CSS1_PERCENTAGE;
+ break;
+
+ case 'c':
+ case 'C': // LENGTH cm | LENGTH IDENT
+ case 'e':
+ case 'E': // LENGTH (em | ex) | LENGTH IDENT
+ case 'i':
+ case 'I': // LENGTH inch | LENGTH IDENT
+ case 'p':
+ case 'P': // LENGTH (pt | px | pc) | LENGTH IDENT
+ case 'm':
+ case 'M': // LENGTH mm | LENGTH IDENT
+ {
+ // die aktuelle Position retten
+ xub_StrLen nInPosSave = nInPos;
+ sal_Unicode cNextChSave = cNextCh;
+ ULONG nlLineNrSave = nlLineNr;
+ ULONG nlLinePosSave = nlLinePos;
+ BOOL bEOFSave = bEOF;
+
+ // den naechsten Identifer scannen
+ String aIdent;
+ ::rtl::OUStringBuffer sTmpBuffer( 64L );
+ do {
+ sTmpBuffer.append( cNextCh );
+ cNextCh = GetNextChar();
+ } while( ( ('A' <= cNextCh && cNextCh <= 'Z') ||
+ ('a' <= cNextCh && cNextCh <= 'z') ||
+ ('0' <= cNextCh && cNextCh <= '9') ||
+ '-'==cNextCh) && !IsEOF() );
+
+ aIdent += String(sTmpBuffer.makeStringAndClear());
+
+ // Ist es eine Einheit?
+ const sal_Char *pCmp1 = 0, *pCmp2 = 0, *pCmp3 = 0;
+ double nScale1 = 1., nScale2 = 1., nScale3 = 1.;
+ CSS1Token nToken1 = CSS1_LENGTH,
+ nToken2 = CSS1_LENGTH,
+ nToken3 = CSS1_LENGTH;
+ switch( aIdent.GetChar(0) )
+ {
+ case 'c':
+ case 'C':
+ pCmp1 = sCSS1_UNIT_cm;
+ nScale1 = (72.*20.)/2.54; // twip
+ break;
+ case 'e':
+ case 'E':
+ pCmp1 = sCSS1_UNIT_em;
+ nToken1 = CSS1_EMS;
+
+ pCmp2 = sCSS1_UNIT_ex;
+ nToken2 = CSS1_EMX;
+ break;
+ case 'i':
+ case 'I':
+ pCmp1 = sCSS1_UNIT_inch;
+ nScale1 = 72.*20.; // twip
+ break;
+ case 'm':
+ case 'M':
+ pCmp1 = sCSS1_UNIT_mm;
+ nScale1 = (72.*20.)/25.4; // twip
+ break;
+ case 'p':
+ case 'P':
+ pCmp1 = sCSS1_UNIT_pt;
+ nScale1 = 20.; // twip
+
+ pCmp2 = sCSS1_UNIT_pc;
+ nScale2 = 12.*20.; // twip
+
+ pCmp3 = sCSS1_UNIT_px;
+ nToken3 = CSS1_PIXLENGTH;
+ break;
+ }
+
+ double nScale;
+ DBG_ASSERT( pCmp1, "Wo kommt das erste Zeichen her?" );
+ if( aIdent.EqualsIgnoreCaseAscii(pCmp1) )
+ {
+ nScale = nScale1;
+ nRet = nToken1;
+ }
+ else if( pCmp2 &&
+ aIdent.EqualsIgnoreCaseAscii(pCmp2) )
+ {
+ nScale = nScale2;
+ nRet = nToken2;
+ }
+ else if( pCmp3 &&
+ aIdent.EqualsIgnoreCaseAscii(pCmp3) )
+ {
+ nScale = nScale3;
+ nRet = nToken3;
+ }
+ else
+ {
+ nRet = CSS1_NUMBER;
+ }
+
+ if( CSS1_LENGTH==nRet && nScale!=1. )
+ nValue *= nScale;
+
+ if( nRet == CSS1_NUMBER )
+ {
+ nInPos = nInPosSave;
+ cNextCh = cNextChSave;
+ nlLineNr = nlLineNrSave;
+ nlLinePos = nlLinePosSave;
+ bEOF = bEOFSave;
+ }
+ else
+ {
+ bWhiteSpace = FALSE;
+ }
+ bNextCh = FALSE;
+ }
+ break;
+ default: // NUMBER IDENT
+ bNextCh = FALSE;
+ nRet = CSS1_NUMBER;
+ break;
+ }
+ }
+ break;
+
+ case ':': // ':'
+ // link/visited/active abfangen !!!
+ nRet = CSS1_COLON;
+ break;
+
+ case '.': // DOT_W_WS | DOT_WO_WS
+ nRet = bPrevWhiteSpace ? CSS1_DOT_W_WS : CSS1_DOT_WO_WS;
+ break;
+
+ // case '/': siehe oben
+
+ case '+': // '+'
+ nRet = CSS1_PLUS;
+ break;
+
+ case '-': // '-'
+ nRet = CSS1_MINUS;
+ break;
+
+ case '{': // '{'
+ nRet = CSS1_OBRACE;
+ break;
+
+ case '}': // '}'
+ nRet = CSS1_CBRACE;
+ break;
+
+ case ';': // ';'
+ nRet = CSS1_SEMICOLON;
+ break;
+
+ case ',': // ','
+ nRet = CSS1_COMMA;
+ break;
+
+ case '#': // '#'
+ cNextCh = GetNextChar();
+ if( ('0'<=cNextCh && '9'>=cNextCh) ||
+ ('a'<=cNextCh && 'f'>=cNextCh) ||
+ ('A'<=cNextCh && 'F'>=cNextCh) )
+ {
+ // die aktuelle Position retten
+ xub_StrLen nInPosSave = nInPos;
+ sal_Unicode cNextChSave = cNextCh;
+ ULONG nlLineNrSave = nlLineNr;
+ ULONG nlLinePosSave = nlLinePos;
+ BOOL bEOFSave = bEOF;
+
+ // erstmal versuchen eine Hex-Zahl zu scannen
+ ::rtl::OUStringBuffer sTmpBuffer( 6L );
+ do {
+ sTmpBuffer.append( cNextCh );
+ cNextCh = GetNextChar();
+ } while( sTmpBuffer.getLength() < 7 &&
+ ( ('0'<=cNextCh && '9'>=cNextCh) ||
+ ('A'<=cNextCh && 'F'>=cNextCh) ||
+ ('a'<=cNextCh && 'f'>=cNextCh) ) &&
+ !IsEOF() );
+
+ if( sTmpBuffer.getLength()==6 || sTmpBuffer.getLength()==3 )
+ {
+ // wir haben eine hexadezimale Farbe gefunden
+ aToken += String(sTmpBuffer.makeStringAndClear());
+ nRet = CSS1_HEXCOLOR;
+ bNextCh = FALSE;
+
+ break;
+ }
+
+ // sonst versuchen wir es mit einer Zahl
+ nInPos = nInPosSave;
+ cNextCh = cNextChSave;
+ nlLineNr = nlLineNrSave;
+ nlLinePos = nlLinePosSave;
+ bEOF = bEOFSave;
+ }
+
+ nRet = CSS1_HASH;
+ bNextCh = FALSE;
+ break;
+
+ case ' ':
+ case '\t':
+ case '\r':
+ case '\n': // White-Space
+ bWhiteSpace = TRUE;
+ break;
+
+ case (sal_Unicode)EOF:
+ if( IsEOF() )
+ {
+ eState = CSS1_PAR_ACCEPTED;
+ bNextCh = FALSE;
+ break;
+ }
+ // kein break;
+
+ default: // IDENT | syntax error
+ // TODO IsAlpha
+ if( ('A' <= cNextCh && cNextCh <= 'Z') ||
+ ('a' <= cNextCh && cNextCh <= 'z') )
+ {
+ // IDENT
+
+ BOOL bHexColor = TRUE;
+
+ // den naechsten Identifer scannen
+ ::rtl::OUStringBuffer sTmpBuffer( 64L );
+ do {
+ sTmpBuffer.append( cNextCh );
+ if( bHexColor )
+ {
+ bHexColor = sTmpBuffer.getLength()<7 &&
+ ( ('0'<=cNextCh && '9'>=cNextCh) ||
+ ('A'<=cNextCh && 'F'>=cNextCh) ||
+ ('a'<=cNextCh && 'f'>=cNextCh) );
+ }
+ cNextCh = GetNextChar();
+ // TODO: AlphaNumeric
+ } while( ( ('0'<=cNextCh && '9'>=cNextCh) ||
+ ('A'<=cNextCh && 'Z'>=cNextCh) ||
+ ('a'<=cNextCh && 'z'>=cNextCh) ||
+ '-'==cNextCh ) &&
+ !IsEOF() );
+
+ aToken += String(sTmpBuffer.makeStringAndClear());
+
+ if( bHexColor && sTmpBuffer.getLength()==6 )
+ {
+ bNextCh = FALSE;
+ nRet = CSS1_HEXCOLOR;
+
+ break;
+ }
+ if( '('==cNextCh &&
+ ( (('u'==aToken.GetChar(0) || 'U'==aToken.GetChar(0)) &&
+ aToken.EqualsIgnoreCaseAscii(sCSS1_url)) ||
+ (('r'==aToken.GetChar(0) || 'R'==aToken.GetChar(0)) &&
+ aToken.EqualsIgnoreCaseAscii(sCSS1_rgb)) ) )
+ {
+ USHORT nNestCnt = 0;
+ ::rtl::OUStringBuffer sTmpBuffer( 64L );
+ do {
+ sTmpBuffer.append( cNextCh );
+ switch( cNextCh )
+ {
+ case '(': nNestCnt++; break;
+ case ')': nNestCnt--; break;
+ }
+ cNextCh = GetNextChar();
+ } while( (nNestCnt>1 || ')'!=cNextCh) && !IsEOF() );
+ sTmpBuffer.append( cNextCh );
+ aToken += String(sTmpBuffer.makeStringAndClear());
+ bNextCh = TRUE;
+ nRet = 'u'==aToken.GetChar(0) || 'U'==aToken.GetChar(0)
+ ? CSS1_URL
+ : CSS1_RGB;
+ }
+ else
+ {
+ bNextCh = FALSE;
+ nRet = CSS1_IDENT;
+ }
+ }
+ // Fehlerbehandlung: Zeichen ignorieren
+ break;
+ }
+ if( bNextCh )
+ cNextCh = GetNextChar();
+
+ } while( CSS1_NULL==nRet && IsParserWorking() );
+
+ return nRet;
+}
+
+
+/* */
+
+
+// Dies folegenden Funktionen realisieren den in
+//
+// http://www.w3.orh/pub/WWW/TR/WD-css1.html
+// bzw. http://www.w3.orh/pub/WWW/TR/WD-css1-960220.html
+//
+// beschriebenen Parser fuer CSS1. Es handelt sich um eine direkte
+// Umsetzung der dort beschriebenen Grammatik
+
+// stylesheet
+// : import* rule*
+//
+// import
+// : IMPORT_SYM url
+//
+// url
+// : STRING
+//
+void CSS1Parser::ParseStyleSheet()
+{
+ LOOP_CHECK_DECL
+
+ // import*
+ BOOL bDone = FALSE;
+ while( !bDone && IsParserWorking() )
+ {
+ LOOP_CHECK_CHECK( "Endlos-Schleife in ParseStyleSheet()/import *" )
+
+ switch( nToken )
+ {
+ case CSS1_IMPORT_SYM:
+ // IMPORT_SYM url
+ // url ueberspringen wir ungeprueft
+ nToken = GetNextToken();
+ break;
+ case CSS1_IDENT: // Look-Aheads
+ case CSS1_DOT_W_WS:
+ case CSS1_HASH:
+// /Feature: PrintExt
+ case CSS1_PAGE_SYM:
+// /Feature: PrintExt
+ // rule
+ bDone = TRUE;
+ break;
+ default:
+ // Fehlerbehandlung: ueberlesen
+ break;
+ }
+
+ if( !bDone )
+ nToken = GetNextToken();
+ }
+
+ LOOP_CHECK_RESTART
+
+ // rule *
+ while( IsParserWorking() )
+ {
+ LOOP_CHECK_CHECK( "Endlos-Schleife in ParseStyleSheet()/rule *" )
+
+ switch( nToken )
+ {
+ case CSS1_IDENT: // Look-Aheads
+ case CSS1_DOT_W_WS:
+ case CSS1_HASH:
+// /Feature: PrintExt
+ case CSS1_PAGE_SYM:
+// /Feature: PrintExt
+ // rule
+ ParseRule();
+ break;
+ default:
+ // Fehlerbehandlung: ueberlesen
+ nToken = GetNextToken();
+ break;
+ }
+ }
+}
+
+// rule
+// : selector [ ',' selector ]*
+// '{' declaration [ ';' declaration ]* '}'
+//
+void CSS1Parser::ParseRule()
+{
+ // selector
+ CSS1Selector *pSelector = ParseSelector();
+ if( !pSelector )
+ return;
+
+ // Selektor verarbeiten
+ if( SelectorParsed( pSelector, TRUE ) )
+ delete pSelector;
+
+ LOOP_CHECK_DECL
+
+ // [ ',' selector ]*
+ while( CSS1_COMMA==nToken && IsParserWorking() )
+ {
+ LOOP_CHECK_CHECK( "Endlos-Schleife in ParseRule()/selector *" )
+
+ // ',' ueberelesen
+ nToken = GetNextToken();
+
+ // selector
+ pSelector = ParseSelector();
+ if( !pSelector )
+ return;
+
+ // Selektor verarbeiten
+ if( SelectorParsed( pSelector, FALSE ) )
+ delete pSelector;
+ }
+
+ // '{'
+ if( CSS1_OBRACE != nToken )
+ return;
+ nToken = GetNextToken();
+
+ // declaration
+ String aProperty;
+ CSS1Expression *pExpr = ParseDeclaration( aProperty );
+ if( !pExpr )
+ return;
+
+ // expression verarbeiten
+ if( DeclarationParsed( aProperty, pExpr ) )
+ delete pExpr;
+
+ LOOP_CHECK_RESTART
+
+ // [ ';' declaration ]*
+ while( CSS1_SEMICOLON==nToken && IsParserWorking() )
+ {
+ LOOP_CHECK_CHECK( "Endlos-Schleife in ParseRule()/declaration *" )
+
+ // ';'
+ nToken = GetNextToken();
+
+ // declaration
+ if( CSS1_IDENT == nToken )
+ {
+ CSS1Expression *pExpr = ParseDeclaration( aProperty );
+ if( pExpr )
+ {
+ // expression verarbeiten
+ if( DeclarationParsed( aProperty, pExpr ) )
+ delete pExpr;
+ }
+ }
+ }
+
+ // '}'
+ if( CSS1_CBRACE == nToken )
+ nToken = GetNextToken();
+}
+
+// selector
+// : simple_selector+ [ ':' pseudo_element ]?
+//
+// simple_selector
+// : element_name [ DOT_WO_WS class ]?
+// | DOT_W_WS class
+// | id_selector
+//
+// element_name
+// : IDENT
+//
+// class
+// : IDENT
+//
+// id_selector
+// : '#' IDENT
+//
+// pseude_element
+// : IDENT
+//
+CSS1Selector *CSS1Parser::ParseSelector()
+{
+ CSS1Selector *pRoot = 0, *pLast = 0;
+
+ BOOL bDone = FALSE;
+ CSS1Selector *pNew = 0;
+
+ LOOP_CHECK_DECL
+
+ // simple_selector+
+ while( !bDone && IsParserWorking() )
+ {
+ LOOP_CHECK_CHECK( "Endlos-Schleife in ParseSelector()" )
+
+ BOOL bNextToken = TRUE;
+
+ switch( nToken )
+ {
+ case CSS1_IDENT:
+ {
+ // element_name [ DOT_WO_WS class ]?
+
+ // element_name
+ String aElement = aToken;
+ CSS1SelectorType eType = CSS1_SELTYPE_ELEMENT;
+ nToken = GetNextToken();
+
+ if( CSS1_DOT_WO_WS == nToken )
+ {
+ // DOT_WO_WS
+ nToken = GetNextToken();
+
+ // class
+ if( CSS1_IDENT == nToken )
+ {
+ (aElement += '.') += aToken;
+ eType = CSS1_SELTYPE_ELEM_CLASS;
+ }
+ else
+ {
+ // class fehlt
+ return pRoot;
+ }
+ }
+ else
+ {
+ // das war jetzt ein Look-Ahead
+ bNextToken = FALSE;
+ }
+ pNew = new CSS1Selector( eType, aElement );
+ }
+ break;
+ case CSS1_DOT_W_WS:
+ // DOT_W_WS class
+
+ // DOT_W_WS
+ nToken = GetNextToken();
+
+ if( CSS1_IDENT==nToken )
+ {
+ // class
+ pNew = new CSS1Selector( CSS1_SELTYPE_CLASS, aToken );
+ }
+ else
+ {
+ // class fehlt
+ return pRoot;
+ }
+ break;
+ case CSS1_HASH:
+ // '#' id_selector
+
+ // '#'
+ nToken = GetNextToken();
+
+ if( CSS1_IDENT==nToken )
+ {
+ // id_selector
+ pNew = new CSS1Selector( CSS1_SELTYPE_ID, aToken );
+ }
+ else
+ {
+ // id_selector fehlt
+ return pRoot;
+ }
+ break;
+
+// /Feature: PrintExt
+ case CSS1_PAGE_SYM:
+ {
+ // @page
+ pNew = new CSS1Selector( CSS1_SELTYPE_PAGE, aToken );
+ }
+ break;
+// /Feature: PrintExt
+
+ default:
+ // wir wissen nicht was kommt, also aufhoehren
+ bDone = TRUE;
+ break;
+ }
+
+ // falls ein Selektor angelegt wurd, ihn speichern
+ if( pNew )
+ {
+ DBG_ASSERT( (pRoot!=0) == (pLast!=0),
+ "Root-Selektor, aber kein Last" );
+ if( pLast )
+ pLast->SetNext( pNew );
+ else
+ pRoot = pNew;
+
+ pLast = pNew;
+ pNew = 0;
+ }
+
+ if( bNextToken && !bDone )
+ nToken = GetNextToken();
+ }
+
+ if( !pRoot )
+ {
+ // simple_selector fehlt
+ return pRoot;
+ }
+
+ // [ ':' pseudo_element ]?
+ if( CSS1_COLON==nToken && IsParserWorking() )
+ {
+ // ':' pseudo element
+ nToken = GetNextToken();
+ if( CSS1_IDENT==nToken )
+ {
+ pLast->SetNext( new CSS1Selector(CSS1_SELTYPE_PSEUDO,aToken) );
+ nToken = GetNextToken();
+ }
+ else
+ {
+ // pseudo_element fehlt
+ return pRoot;
+ }
+ }
+
+ return pRoot;
+}
+
+// declaration
+// : property ':' expr prio?
+// | /* empty */
+//
+// expression
+// : term [ operator term ]*
+//
+// term
+// : unary_operator?
+// [ NUMBER | STRING | PERCENTAGE | LENGTH | EMS | EXS | IDENT |
+// HEXCOLOR | URL | RGB ]
+//
+// operator
+// : '/' | ',' | /* empty */
+//
+// unary_operator
+// : '-' | '+'
+//
+// property
+// : ident
+//
+// das Vorzeichen wird nur fuer numerische Werte (ausser PERCENTAGE)
+// beruecksichtigt und wird auf nValue angewendet!
+CSS1Expression *CSS1Parser::ParseDeclaration( String& rProperty )
+{
+ CSS1Expression *pRoot = 0, *pLast = 0;
+
+ // property
+ if( CSS1_IDENT != nToken )
+ {
+ // property fehlt
+ return pRoot;
+ }
+ rProperty = aToken;
+
+ nToken = GetNextToken();
+
+
+ // ':'
+ if( CSS1_COLON != nToken )
+ {
+ // ':' fehlt
+ return pRoot;
+ }
+ nToken = GetNextToken();
+
+ // term [operator term]*
+ // hier sind wir sehr lax, was die Syntax angeht, sollte aber kein
+ // Problem sein
+ BOOL bDone = FALSE;
+ sal_Unicode cSign = 0, cOp = 0;
+ CSS1Expression *pNew = 0;
+
+ LOOP_CHECK_DECL
+
+ while( !bDone && IsParserWorking() )
+ {
+ LOOP_CHECK_CHECK( "Endlos-Schleife in ParseDeclaration()" )
+
+ switch( nToken )
+ {
+ case CSS1_MINUS:
+ cSign = '-';
+ break;
+
+ case CSS1_PLUS:
+ cSign = '+';
+ break;
+
+ case CSS1_NUMBER:
+ case CSS1_LENGTH:
+ case CSS1_PIXLENGTH:
+ case CSS1_EMS:
+ case CSS1_EMX:
+ if( '-'==cSign )
+ nValue = -nValue;
+ case CSS1_STRING:
+ case CSS1_PERCENTAGE:
+ case CSS1_IDENT:
+ case CSS1_URL:
+ case CSS1_RGB:
+ case CSS1_HEXCOLOR:
+ pNew = new CSS1Expression( nToken, aToken, nValue, cOp );
+ nValue = 0; // sonst landet das auch im naechsten Ident
+ cSign = 0;
+ cOp = 0;
+ break;
+
+ case CSS1_SLASH:
+ cOp = '/';
+ cSign = 0;
+ break;
+
+ case CSS1_COMMA:
+ cOp = ',';
+ cSign = 0;
+ break;
+
+ default:
+ bDone = TRUE;
+ break;
+ }
+
+ // falls ein Expression angelegt wurde, diesen speichern
+ if( pNew )
+ {
+ DBG_ASSERT( (pRoot!=0) == (pLast!=0),
+ "Root-Selektor, aber kein Last" );
+ if( pLast )
+ pLast->SetNext( pNew );
+ else
+ pRoot = pNew;
+
+ pLast = pNew;
+ pNew = 0;
+ }
+
+ if( !bDone )
+ nToken = GetNextToken();
+ }
+
+ if( !pRoot )
+ {
+ // term fehlt
+ return pRoot;
+ }
+
+ // prio?
+ if( CSS1_IMPORTANT_SYM==nToken )
+ {
+ // IMPORTANT_SYM
+ nToken = GetNextToken();
+ }
+
+ return pRoot;
+}
+
+/* */
+
+CSS1Parser::CSS1Parser()
+{
+}
+
+CSS1Parser::~CSS1Parser()
+{
+}
+
+/* */
+
+BOOL CSS1Parser::ParseStyleSheet( const String& rIn )
+{
+ String aTmp( rIn );
+
+ sal_Unicode c;
+ while( aTmp.Len() &&
+ ( ' '==(c=aTmp.GetChar(0)) || '\t'==c || '\r'==c || '\n'==c ) )
+ aTmp.Erase( 0, 1 );
+
+ while( aTmp.Len() && ( ' '==(c=aTmp.GetChar( aTmp.Len()-1))
+ || '\t'==c || '\r'==c || '\n'==c ) )
+ aTmp.Erase( aTmp.Len()-1 );
+
+ // SGML-Kommentare entfernen
+ if( aTmp.Len() >= 4 &&
+ aTmp.CompareToAscii("<!--",4) == COMPARE_EQUAL )
+ aTmp.Erase( 0, 4 );
+
+ if( aTmp.Len() >=3 &&
+ aTmp.Copy(aTmp.Len()-3).CompareToAscii("-->") == COMPARE_EQUAL )
+ aTmp.Erase( aTmp.Len()-3 );
+
+ if( !aTmp.Len() )
+ return TRUE;
+
+ InitRead( aTmp );
+
+ ParseStyleSheet();
+
+ return TRUE;
+}
+
+
+BOOL CSS1Parser::ParseStyleOption( const String& rIn )
+{
+ if( !rIn.Len() )
+ return TRUE;
+
+ InitRead( rIn );
+
+ String aProperty;
+ CSS1Expression *pExpr = ParseDeclaration( aProperty );
+ if( !pExpr )
+ {
+ return FALSE;
+ }
+
+ // expression verarbeiten
+ if( DeclarationParsed( aProperty, pExpr ) )
+ delete pExpr;
+
+ LOOP_CHECK_DECL
+
+ // [ ';' declaration ]*
+ while( CSS1_SEMICOLON==nToken && IsParserWorking() )
+ {
+ LOOP_CHECK_CHECK( "Endlos-Schleife in ParseStyleOption()" )
+
+ nToken = GetNextToken();
+ if( CSS1_IDENT==nToken )
+ {
+ CSS1Expression *pExpr = ParseDeclaration( aProperty );
+ if( pExpr )
+ {
+ // expression verarbeiten
+ if( DeclarationParsed( aProperty, pExpr ) )
+ delete pExpr;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+BOOL CSS1Parser::SelectorParsed( const CSS1Selector *pSelector, BOOL bFirst )
+{
+ // Selektor loeschen
+ return TRUE;
+}
+
+BOOL CSS1Parser::DeclarationParsed( const String& rProperty,
+ const CSS1Expression *pExpr )
+{
+ // Deklaration loeschen
+ return TRUE;
+}
+
+
+/* */
+
+CSS1Selector::~CSS1Selector()
+{
+ delete pNext;
+}
+
+/* */
+
+CSS1Expression::~CSS1Expression()
+{
+ delete pNext;
+}
+
+BOOL CSS1Expression::GetURL( String& rURL ) const
+{
+ DBG_ASSERT( CSS1_URL==eType, "CSS1-Ausruck ist keine Farbe URL" );
+
+ DBG_ASSERT( aValue.CompareIgnoreCaseToAscii( sCSS1_url, 3 ) ==
+ COMPARE_EQUAL &&
+ aValue.Len() > 5 &&
+ '(' == aValue.GetChar(3) &&
+ ')' == aValue.GetChar(aValue.Len()-1),
+ "keine gueltiges URL(...)" );
+
+ BOOL bRet = FALSE;
+
+ if( aValue.Len() > 5 )
+ {
+ rURL = aValue.Copy( 4, aValue.Len()-5 );
+ rURL.EraseTrailingChars();
+ rURL.EraseLeadingChars();
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+BOOL CSS1Expression::GetColor( Color &rColor ) const
+{
+ DBG_ASSERT( CSS1_IDENT==eType || CSS1_RGB==eType ||
+ CSS1_HEXCOLOR==eType || CSS1_STRING==eType,
+ "CSS1-Ausruck kann keine Farbe sein" );
+
+ BOOL bRet = FALSE;
+ ULONG nColor = ULONG_MAX;
+
+ switch( eType )
+ {
+ case CSS1_RGB:
+ {
+ BYTE aColors[3] = { 0, 0, 0 };
+
+ DBG_ASSERT( aValue.CompareIgnoreCaseToAscii( sCSS1_rgb, 3 )
+ == COMPARE_EQUAL &&
+ aValue.Len() > 5 &&
+ '(' == aValue.GetChar( 3 ) &&
+ ')' == aValue.GetChar( aValue.Len()-1),
+ "keine gueltiges RGB(...)" );
+
+ String aColorStr( aValue.Copy( 4, aValue.Len()-1 ) );
+
+ xub_StrLen nPos = 0;
+ USHORT nColor = 0;
+
+ while( nColor<3 && nPos<aColorStr.Len() )
+ {
+ register sal_Unicode c;
+ while( nPos < aColorStr.Len() &&
+ ((c=aColorStr.GetChar(nPos)) == ' ' || c == '\t' ||
+ c == '\n' || c== '\r' ) )
+ nPos++;
+
+ xub_StrLen nEnd = aColorStr.Search( ',', nPos );
+ String aNumber;
+ if( STRING_NOTFOUND==nEnd )
+ {
+ aNumber = aColorStr.Copy(nPos);
+ nPos = aColorStr.Len();
+ }
+ else
+ {
+ aNumber = aColorStr.Copy( nPos, nEnd-nPos );
+ nPos = nEnd+1;
+ }
+
+ USHORT nNumber = (USHORT)aNumber.ToInt32();
+ if( aNumber.Search('%') != STRING_NOTFOUND )
+ {
+ if( nNumber > 100 )
+ nNumber = 100;
+ nNumber *= 255;
+ nNumber /= 100;
+ }
+ else if( nNumber > 255 )
+ nNumber = 255;
+
+ aColors[nColor] = (BYTE)nNumber;
+ nColor ++;
+ }
+
+ rColor.SetRed( aColors[0] );
+ rColor.SetGreen( aColors[1] );
+ rColor.SetBlue( aColors[2] );
+
+ bRet = TRUE; // etwas anderes als eine Farbe kann es nicht sein
+ }
+ break;
+
+ case CSS1_IDENT:
+ case CSS1_STRING:
+ {
+ String aTmp( aValue );
+ aTmp.ToUpperAscii();
+ nColor = GetHTMLColor( aTmp );
+ bRet = nColor != ULONG_MAX;
+ }
+ if( bRet || CSS1_STRING != eType || !aValue.Len() ||
+ aValue.GetChar( 0 )!='#' )
+ break;
+
+ case CSS1_HEXCOLOR:
+ {
+ // HACK fuer MS-IE: DIe Farbe kann auch in einem String stehen
+ xub_StrLen nOffset = CSS1_STRING==eType ? 1 : 0;
+ BOOL bDouble = aValue.Len()-nOffset == 3;
+ xub_StrLen i = nOffset, nEnd = (bDouble ? 3 : 6) + nOffset;
+
+ nColor = 0;
+ for( ; i<nEnd; i++ )
+ {
+ register sal_Unicode c = (i<aValue.Len() ? aValue.GetChar(i)
+ : '0' );
+ if( c >= '0' && c <= '9' )
+ c -= 48;
+ else if( c >= 'A' && c <= 'F' )
+ c -= 55;
+ else if( c >= 'a' && c <= 'f' )
+ c -= 87;
+ else
+ c = 16;
+
+ nColor *= 16;
+ if( c<16 )
+ nColor += c;
+ if( bDouble )
+ {
+ nColor *= 16;
+ if( c<16 )
+ nColor += c;
+ }
+ }
+ // bRet = i==6;
+ bRet = TRUE;
+ }
+ break;
+ }
+
+
+ if( bRet && nColor!=ULONG_MAX )
+ {
+ rColor.SetRed( (BYTE)((nColor & 0x00ff0000UL) >> 16) );
+ rColor.SetGreen( (BYTE)((nColor & 0x0000ff00UL) >> 8) );
+ rColor.SetBlue( (BYTE)(nColor & 0x000000ffUL) );
+ }
+
+ return bRet;
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/parcss1.cxx,v 1.1.1.1 2000-09-18 17:14:56 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.35 2000/09/18 16:04:47 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.34 2000/06/16 13:01:33 os
+ Unicode error corrected
+
+ Revision 1.33 2000/04/10 12:20:57 mib
+ unicode
+
+ Revision 1.32 2000/02/11 14:37:36 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.31 1999/04/19 10:46:32 MIB
+ #64963#: EOF beim Zurueckseeken loeschen
+
+
+ Rev 1.30 19 Apr 1999 12:46:32 MIB
+ #64963#: EOF beim Zurueckseeken loeschen
+
+ Rev 1.29 20 Feb 1998 19:02:20 MA
+ header
+
+ Rev 1.28 26 Nov 1997 19:09:48 MA
+ includes
+
+ Rev 1.27 03 Nov 1997 14:08:50 MA
+ precomp entfernt
+
+ Rev 1.26 10 Oct 1997 10:14:36 MIB
+ CSS1-Printing-Ext: @page,page-break-before/after (noch kein left/right)
+
+ Rev 1.25 19 Sep 1997 13:57:54 MIB
+ unbekannte @-Bloecke werden jetzt ueberlesen
+
+ Rev 1.24 29 Aug 1997 13:32:22 JP
+ VCL Color Anpassung
+
+ Rev 1.23 15 Jul 1997 16:52:24 MIB
+ fix: Auch 3-stellige Farben erlauben (fuer www.w3.org/Style
+
+ Rev 1.22 02 Jul 1997 17:13:14 MIB
+ fix: r??() nicht wie rgb() behandeln
+
+ Rev 1.21 13 Jun 1997 17:08:12 MIB
+ Ein par MS-IE Syntax-Goodies nachgebaut
+
+ Rev 1.20 13 Jun 1997 11:58:32 MIB
+ fix: .foo auch am Anfang erkennen
+
+ Rev 1.19 07 May 1997 15:46:38 MIB
+ Destruktoren nicht inline, sonst GPF unter Win16 (Warum auch immer?)
+
+ Rev 1.18 20 Dec 1996 14:00:46 MIB
+ Warnings
+
+ Rev 1.17 28 Oct 1996 19:12:14 MIB
+ Umaute in Identifiern-Erlauben, EOF-Behandlung
+
+ Rev 1.16 23 Oct 1996 19:49:06 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.15 21 Oct 1996 08:57:42 MIB
+ bug fix: H1.foo wurde falsch geparsed
+
+ Rev 1.14 13 Oct 1996 12:31:26 MIB
+ Argument von unbekannten @ident ueberlesen
+
+ Rev 1.13 20 Aug 1996 16:55:40 MIB
+ bug-fix: Hexzahlen muessen 6 Zeichen lang sein
+
+ Rev 1.12 19 Aug 1996 18:11:22 MIB
+ bugfix: PIXLENGTH durchlassen
+
+ Rev 1.11 14 Aug 1996 16:22:24 MIB
+ gcc und msvc: statt *aStr nicht aStr[0] sondern aStr[(USHORT)0]
+
+ Rev 1.10 13 Aug 1996 21:08:32 sdo
+ GCC
+
+ Rev 1.9 12 Aug 1996 10:32:16 MIB
+ Anpassungen an draft vom 26.7.96, Background-Property, Scannen von Farben verb.
+
+ Rev 1.8 07 Aug 1996 13:21:46 MIB
+ Import von color und text-decoration
+
+ Rev 1.7 17 Jul 1996 10:22:50 MIB
+ Loop-Check verbessert
+
+ Rev 1.6 27 Jun 1996 16:44:16 MIB
+ fix #29184#: Endlosschleife bei SGML-Kommentaren und andere Verbesserungen
+
+ Rev 1.5 26 Jun 1996 15:24:24 MIB
+ Anpassung an 324, Includes aufgeraeumt
+
+ Rev 1.4 20 Jun 1996 12:33:26 MIB
+ bug fix: Einheiten sind jetzt case-insensitiv
+
+ Rev 1.3 17 Jun 1996 15:59:50 MIB
+ Length nun in Twips, bug fixes und Erweiterungen
+
+ Rev 1.2 16 Jun 1996 14:32:58 MIB
+ Loops sicherer gemacht, Strings ausgelagert
+
+ Rev 1.1 14 Jun 1996 20:12:56 MIB
+ die erste Endlos-Schleife gefixed
+
+ Rev 1.0 14 Jun 1996 17:42:34 MIB
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/parcss1.hxx b/sw/source/filter/html/parcss1.hxx
new file mode 100644
index 000000000000..b1a9c384d93d
--- /dev/null
+++ b/sw/source/filter/html/parcss1.hxx
@@ -0,0 +1,342 @@
+/*************************************************************************
+ *
+ * $RCSfile: parcss1.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _PARCSS1_HXX
+#define _PARCSS1_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+class Color;
+
+/* */
+
+// Die Tokens des CSS1-Parsers
+enum CSS1Token
+{
+ CSS1_NULL,
+ CSS1_UNKOWN,
+
+ CSS1_IDENT,
+ CSS1_STRING,
+ CSS1_NUMBER,
+ CSS1_PERCENTAGE,
+ CSS1_LENGTH, // eine absolute Groesse in 1/100 MM
+ CSS1_PIXLENGTH, // eine Pixel-Groesse
+ CSS1_EMS,
+ CSS1_EMX,
+ CSS1_HEXCOLOR,
+
+ CSS1_DOT_W_WS,
+ CSS1_DOT_WO_WS,
+ CSS1_COLON,
+ CSS1_SLASH,
+ CSS1_PLUS,
+ CSS1_MINUS,
+ CSS1_OBRACE,
+ CSS1_CBRACE,
+ CSS1_SEMICOLON,
+ CSS1_COMMA,
+ CSS1_HASH,
+
+ CSS1_IMPORT_SYM,
+// Feature: PrintExt
+ CSS1_PAGE_SYM,
+// /Feature: PrintExt
+
+ CSS1_IMPORTANT_SYM,
+
+ CSS1_URL,
+ CSS1_RGB
+};
+
+
+// die Zustaende des Parsers
+enum CSS1ParserState
+{
+ CSS1_PAR_ACCEPTED = 0,
+ CSS1_PAR_WORKING,
+ CSS1_PAR_ERROR
+};
+
+
+/* */
+
+enum CSS1SelectorType
+{
+ CSS1_SELTYPE_ELEMENT,
+ CSS1_SELTYPE_ELEM_CLASS,
+ CSS1_SELTYPE_CLASS,
+ CSS1_SELTYPE_ID,
+ CSS1_SELTYPE_PSEUDO,
+// Feature: PrintExt
+ CSS1_SELTYPE_PAGE
+// /Feature: PrintExt
+
+};
+
+// Die folegende Klasse beschreibt einen Simple-Selector, also
+// - einen HTML-Element-Namen
+// - einen HTML-Element-Namen mit Klasse (durch '.' getrennt)
+// - eine Klasse (ohne Punkt)
+// - eine mit ID=xxx gesetzte ID aus einem HTML-Dokument
+// oder
+// - ein Pseudo-Element
+//
+// Die Simple-Sektoren werden in einer Liste zu vollstaendigen
+// Selektoren verkettet
+class CSS1Selector
+{
+ CSS1SelectorType eType; // Art des Selektors
+ String aSelector; // der Selektor selbst
+ CSS1Selector *pNext; // die naechste Komponente
+
+public:
+
+ CSS1Selector( CSS1SelectorType eTyp, const String &rSel )
+ : eType(eTyp), aSelector( rSel ), pNext( 0 )
+ {}
+
+ ~CSS1Selector();
+
+ CSS1SelectorType GetType() const { return eType; }
+ const String& GetString() const { return aSelector; }
+
+ void SetNext( CSS1Selector *pNxt ) { pNext = pNxt; }
+ const CSS1Selector *GetNext() const { return pNext; }
+};
+
+
+/* */
+
+// Die folegende Klasse beschreibt einen Teil-Ausdruck einer
+// CSS1-Deklaration sie besteht aus
+//
+// - dem Typ des Ausdrucks (entspricht dem Token)
+// - dem eigentlichen Wert als String und ggf. double
+// der double-Wert enthaelt das Vorzeichen fuer NUMBER und LENGTH
+// - und dem Operator, mit dem er mit dem *Vorganger*-Ausdruck
+// verknuepft ist.
+//
+struct CSS1Expression
+{
+ sal_Unicode cOp; // Art der Verkuepfung mit dem Vorgaenger
+ CSS1Token eType; // der Typ des Wertes
+ String aValue; // und sein Wert als String
+ double nValue; // und als Zahl (TWIPs fuer LENGTH)
+ CSS1Expression *pNext; // die naechste Komponente
+
+public:
+
+ CSS1Expression( CSS1Token eTyp, const String &rVal,
+ double nVal, sal_Unicode cO = 0 )
+ : cOp(cO), eType(eTyp), aValue(rVal), nValue(nVal), pNext(0)
+ {}
+
+ ~CSS1Expression();
+
+ inline void Set( CSS1Token eTyp, const String &rVal, double nVal,
+ sal_Unicode cO = 0 );
+
+ CSS1Token GetType() const { return eType; }
+ const String& GetString() const { return aValue; }
+ double GetNumber() const { return nValue; }
+ inline sal_uInt32 GetULength() const;
+ inline sal_Int32 GetSLength() const;
+ sal_Unicode GetOp() const { return cOp; }
+
+
+ sal_Bool GetURL( String& rURL ) const;
+ sal_Bool GetColor( Color &rRGB ) const;
+
+ void SetNext( CSS1Expression *pNxt ) { pNext = pNxt; }
+ const CSS1Expression *GetNext() const { return pNext; }
+};
+
+inline void CSS1Expression::Set( CSS1Token eTyp, const String &rVal,
+ double nVal, sal_Unicode cO )
+{
+ cOp = cO; eType = eTyp; aValue = rVal; nValue = nVal; pNext = 0;
+}
+
+inline sal_uInt32 CSS1Expression::GetULength() const
+{
+ return nValue < 0. ? 0UL : (sal_uInt32)(nValue + .5);
+}
+
+inline sal_Int32 CSS1Expression::GetSLength() const
+{
+ return (sal_Int32)(nValue + (nValue < 0. ? -.5 : .5 ));
+}
+
+/* */
+
+// Diese Klasse parst den Inhalt eines Style-Elements oder eine Style-Option
+// und bereitet ihn ein wenig auf.
+//
+// Das Ergebnis des Parsers wird durch die Mehtoden SelectorParsed()
+// und DeclarationParsed() an abgeleitete Parser uebergeben. Bsp:
+//
+// H1, H2 { font-weight: bold; text-align: right }
+// | | | |
+// | | | DeclP( 'text-align', 'right' )
+// | | DeclP( 'font-weight', 'bold' )
+// | SelP( 'H2', sal_False )
+// SelP( 'H1', sal_True )
+//
+class CSS1Parser
+{
+ sal_Bool bWhiteSpace : 1; // White-Space gelesen?
+ sal_Bool bEOF : 1; // Ende des "Files" ?
+
+ sal_Unicode cNextCh; // naechstes Zeichen
+
+ xub_StrLen nInPos; // aktuelle Position im Input-String
+
+ sal_uInt32 nlLineNr; // akt. Zeilen Nummer
+ sal_uInt32 nlLinePos; // akt. Spalten Nummer
+
+ double nValue; // der Wert des Tokens als Zahl
+
+ CSS1ParserState eState; // der akteulle Zustand der Parsers
+ CSS1Token nToken; // das aktuelle Token
+
+ String aIn; // der zu parsende String
+ String aToken; // das Token als String
+
+ // Parsen vorbereiten
+ void InitRead( const String& rIn );
+
+ // das naechste Zeichen holen
+ sal_Unicode GetNextChar();
+
+ // das naechste Token holen
+ CSS1Token GetNextToken();
+
+ // arbeitet der Parser noch?
+ sal_Bool IsParserWorking() const { return CSS1_PAR_WORKING == eState; }
+
+ sal_Bool IsEOF() const { return bEOF; }
+
+ sal_uInt32 IncLineNr() { return ++nlLineNr; }
+ sal_uInt32 IncLinePos() { return ++nlLinePos; }
+ inline sal_uInt32 SetLineNr( sal_uInt32 nlNum ); // inline unten
+ inline sal_uInt32 SetLinePos( sal_uInt32 nlPos ); // inline unten
+
+ // Parsen von Teilen der Grammatik
+ void ParseStyleSheet();
+ void ParseRule();
+ CSS1Selector *ParseSelector();
+ CSS1Expression *ParseDeclaration( String& rProperty );
+
+protected:
+
+ // Den Inhalt eines HTML-Style-Elements parsen.
+ // Fuer jeden Selektor und jede Deklaration wird
+ // SelectorParsed() bzw. DeclarationParsed() aufgerufen.
+ sal_Bool ParseStyleSheet( const String& rIn );
+
+ // Den Inhalt einer HTML-Style-Option parsen.
+ // Fr jede Deklaration wird DeclarationParsed() aufgerufen.
+ sal_Bool ParseStyleOption( const String& rIn );
+
+ // Diese Methode wird aufgerufen, wenn ein Selektor geparsed wurde
+ // Wenn 'bFirst' gesetzt ist, beginnt mit dem Selektor eine neue
+ // Deklaration. Wird sal_True zurueckgegeben, wird der Selektor
+ // geloscht, sonst nicht.
+ // Die Implementierung dieser Methode gibt nur sal_True zuruck.
+ virtual sal_Bool SelectorParsed( const CSS1Selector *pSelector,
+ sal_Bool bFirst );
+
+ // Diese Methode wird fuer jede geparsete Property aufgerufen. Wird
+ // sal_True zurueckgegeben wird der Selektor geloscht, sonst nicht.
+ // Die Implementierung dieser Methode gibt nur sal_True zuruck.
+ virtual sal_Bool DeclarationParsed( const String& rProperty,
+ const CSS1Expression *pExpr );
+
+public:
+
+ CSS1Parser();
+ virtual ~CSS1Parser();
+
+ inline sal_uInt32 GetLineNr() const { return nlLineNr; }
+ inline sal_uInt32 GetLinePos() const { return nlLinePos; }
+};
+
+inline sal_uInt32 CSS1Parser::SetLineNr( sal_uInt32 nlNum )
+{
+ sal_uInt32 nlOld = nlLineNr;
+ nlLineNr = nlNum;
+ return nlOld;
+}
+
+inline sal_uInt32 CSS1Parser::SetLinePos( sal_uInt32 nlPos )
+{
+ sal_uInt32 nlOld = nlLinePos;
+ nlLinePos = nlPos;
+ return nlOld;
+}
+
+
+#endif
+
+
diff --git a/sw/source/filter/html/svxcss1.cxx b/sw/source/filter/html/svxcss1.cxx
new file mode 100644
index 000000000000..015925ede94a
--- /dev/null
+++ b/sw/source/filter/html/svxcss1.cxx
@@ -0,0 +1,3378 @@
+/*************************************************************************
+ *
+ * $RCSfile: svxcss1.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <stdlib.h>
+
+#ifndef _SVX_SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+
+#ifndef _HINTIDS_HXX
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#define ITEMID_FONT SID_ATTR_CHAR_FONT
+#define ITEMID_POSTURE SID_ATTR_CHAR_POSTURE
+#define ITEMID_WEIGHT SID_ATTR_CHAR_WEIGHT
+#define ITEMID_FONTHEIGHT SID_ATTR_CHAR_FONTHEIGHT
+#define ITEMID_UNDERLINE SID_ATTR_CHAR_UNDERLINE
+#define ITEMID_CROSSEDOUT SID_ATTR_CHAR_STRIKEOUT
+#define ITEMID_COLOR SID_ATTR_CHAR_COLOR
+#define ITEMID_KERNING SID_ATTR_CHAR_KERNING
+#define ITEMID_CASEMAP SID_ATTR_CHAR_CASEMAP
+#define ITEMID_BLINK SID_ATTR_FLASH
+
+#define ITEMID_LINESPACING SID_ATTR_PARA_LINESPACE
+#define ITEMID_ADJUST SID_ATTR_PARA_ADJUST
+#define ITEMID_WIDOWS SID_ATTR_PARA_WIDOWS
+#define ITEMID_ORPHANS SID_ATTR_PARA_ORPHANS
+#define ITEMID_FMTSPLIT SID_ATTR_PARA_SPLIT
+
+#define ITEMID_LRSPACE SID_ATTR_LRSPACE
+#define ITEMID_ULSPACE SID_ATTR_ULSPACE
+#define ITEMID_BOX SID_ATTR_BORDER_OUTER
+#define ITEMID_BRUSH SID_ATTR_BRUSH
+#endif
+
+#ifndef _CTRLTOOL_HXX
+#include <svtools/ctrltool.hxx>
+#endif
+
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_BLNKITEM_HXX //autogen
+#include <svx/blnkitem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_KERNITEM_HXX //autogen
+#include <svx/kernitem.hxx>
+#endif
+#ifndef _SVX_LSPCITEM_HXX //autogen
+#include <svx/lspcitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_CMAPITEM_HXX //autogen
+#include <svx/cmapitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SFXITEMPOOL_HXX //autogen
+#include <svtools/itempool.hxx>
+#endif
+#ifndef _SVX_SPLTITEM_HXX //autogen
+#include <svx/spltitem.hxx>
+#endif
+#ifndef _SVX_WIDWITEM_HXX //autogen
+#include <svx/widwitem.hxx>
+#endif
+#ifndef _SVX_ORPHITEM_HXX //autogen
+#include <svx/orphitem.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SVPARSER_HXX //autogen
+#include <svtools/svparser.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SV_WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+
+#include "css1kywd.hxx"
+#include "svxcss1.hxx"
+
+// die Funktionen zum Parsen einer CSS1-Property sind von folgendem Typ:
+typedef void (*FnParseCSS1Prop)( const CSS1Expression *pExpr,
+ SfxItemSet& rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser );
+
+SV_IMPL_PTRARR( CSS1Selectors, CSS1Selector* )
+
+
+/* */
+
+static CSS1PropertyEnum __READONLY_DATA aFontSizeTable[] =
+{
+ { sCSS1_PV_xx_small, 0 },
+ { sCSS1_PV_x_small, 1 },
+ { sCSS1_PV_small, 2 },
+ { sCSS1_PV_medium, 3 },
+ { sCSS1_PV_large, 4 },
+ { sCSS1_PV_x_large, 5 },
+ { sCSS1_PV_xx_large, 6 },
+ { 0, 0 }
+};
+
+static CSS1PropertyEnum __READONLY_DATA aFontFamilyTable[] =
+{
+ { sCSS1_PV_serif, FAMILY_ROMAN },
+ { sCSS1_PV_sans_serif, FAMILY_SWISS },
+ { sCSS1_PV_cursive, FAMILY_SCRIPT },
+ { sCSS1_PV_fantasy, FAMILY_DECORATIVE },
+ { sCSS1_PV_monospace, FAMILY_MODERN },
+ { 0, 0 }
+};
+
+static CSS1PropertyEnum __READONLY_DATA aFontWeightTable[] =
+{
+ { sCSS1_PV_extra_light, WEIGHT_NORMAL }, // WEIGHT_ULTRALIGHT (OBS)
+ { sCSS1_PV_light, WEIGHT_NORMAL }, // WEIGHT_LIGHT (OBSOLETE)
+ { sCSS1_PV_demi_light, WEIGHT_NORMAL }, // WEIGHT_SEMILIGHT (OBS)
+ { sCSS1_PV_medium, WEIGHT_NORMAL }, // WEIGHT_MEDIUM (OBS)
+ { sCSS1_PV_normal, WEIGHT_NORMAL }, // WEIGHT_MEDIUM
+ { sCSS1_PV_demi_bold, WEIGHT_NORMAL }, // WEIGHT_SEMIBOLD (OBS)
+ { sCSS1_PV_bold, WEIGHT_BOLD }, // WEIGHT_BOLD (OBSOLETE)
+ { sCSS1_PV_extra_bold, WEIGHT_BOLD }, // WEIGHT_ULTRABOLD (OBS)
+ { sCSS1_PV_bolder, WEIGHT_BOLD },
+ { sCSS1_PV_lighter, WEIGHT_NORMAL },
+ { 0, 0 }
+};
+
+static CSS1PropertyEnum __READONLY_DATA aFontStyleTable[] =
+{
+ { sCSS1_PV_normal, ITALIC_NONE },
+ { sCSS1_PV_italic, ITALIC_NORMAL },
+ { sCSS1_PV_oblique, ITALIC_NORMAL },
+ { 0, 0 }
+};
+
+static CSS1PropertyEnum __READONLY_DATA aFontVariantTable[] =
+{
+ { sCSS1_PV_normal, SVX_CASEMAP_NOT_MAPPED },
+ { sCSS1_PV_small_caps, SVX_CASEMAP_KAPITAELCHEN },
+ { 0, 0 }
+};
+
+/* */
+
+static CSS1PropertyEnum __READONLY_DATA aBGRepeatTable[] =
+{
+ { sCSS1_PV_repeat, GPOS_TILED },
+ { sCSS1_PV_repeat_x, GPOS_TILED },
+ { sCSS1_PV_repeat_y, GPOS_TILED },
+ { sCSS1_PV_no_repeat, GPOS_NONE },
+ { 0, 0 }
+};
+
+static CSS1PropertyEnum __READONLY_DATA aBGHoriPosTable[] =
+{
+ { sCSS1_PV_left, GPOS_LT },
+ { sCSS1_PV_center, GPOS_MT },
+ { sCSS1_PV_right, GPOS_RT },
+ { 0, 0 }
+};
+
+static CSS1PropertyEnum __READONLY_DATA aBGVertPosTable[] =
+{
+ { sCSS1_PV_top, GPOS_LT },
+ { sCSS1_PV_middle, GPOS_LM },
+ { sCSS1_PV_bottom, GPOS_LB },
+ { 0, 0 }
+};
+
+/* */
+
+static CSS1PropertyEnum __READONLY_DATA aTextAlignTable[] =
+{
+ { sCSS1_PV_left, SVX_ADJUST_LEFT },
+ { sCSS1_PV_center, SVX_ADJUST_CENTER },
+ { sCSS1_PV_right, SVX_ADJUST_RIGHT },
+ { sCSS1_PV_justify, SVX_ADJUST_BLOCK },
+ { 0, 0 }
+};
+
+/* */
+
+static CSS1PropertyEnum __READONLY_DATA aBorderWidthTable[] =
+{
+ { sCSS1_PV_thin, 0 }, // DEF_LINE_WIDTH_0 / DEF_DOUBLE_LINE0
+ { sCSS1_PV_medium, 1 }, // DEF_LINE_WIDTH_1 / DEF_DOUBLE_LINE1
+ { sCSS1_PV_thick, 2 }, // DEF_LINE_WIDTH_2 / DEF_DOUBLE_LINE2
+ { 0, 0 }
+};
+
+enum CSS1BorderStyle { CSS1_BS_NONE, CSS1_BS_SINGLE, CSS1_BS_DOUBLE };
+
+static CSS1PropertyEnum __READONLY_DATA aBorderStyleTable[] =
+{
+ { sCSS1_PV_none, CSS1_BS_NONE },
+ { sCSS1_PV_dotted, CSS1_BS_SINGLE },
+ { sCSS1_PV_dashed, CSS1_BS_SINGLE },
+ { sCSS1_PV_solid, CSS1_BS_SINGLE },
+ { sCSS1_PV_double, CSS1_BS_DOUBLE },
+ { sCSS1_PV_groove, CSS1_BS_SINGLE },
+ { sCSS1_PV_ridge, CSS1_BS_SINGLE },
+ { sCSS1_PV_inset, CSS1_BS_SINGLE },
+ { sCSS1_PV_outset, CSS1_BS_SINGLE },
+ { 0, 0 }
+};
+
+static CSS1PropertyEnum __READONLY_DATA aFloatTable[] =
+{
+ { sCSS1_PV_left, SVX_ADJUST_LEFT },
+ { sCSS1_PV_right, SVX_ADJUST_RIGHT },
+ { sCSS1_PV_none, SVX_ADJUST_END },
+ { 0, 0 }
+};
+
+static CSS1PropertyEnum __READONLY_DATA aPositionTable[] =
+{
+ { sCSS1_PV_absolute, SVX_CSS1_POS_ABSOLUTE },
+ { sCSS1_PV_relative, SVX_CSS1_POS_RELATIVE },
+ { sCSS1_PV_static, SVX_CSS1_POS_STATIC },
+ { 0, 0 }
+};
+
+// Feature: PrintExt
+static CSS1PropertyEnum __READONLY_DATA aSizeTable[] =
+{
+ { sCSS1_PV_auto, SVX_CSS1_STYPE_AUTO },
+ { sCSS1_PV_landscape, SVX_CSS1_STYPE_LANDSCAPE },
+ { sCSS1_PV_portrait, SVX_CSS1_STYPE_PORTRAIT },
+ { 0, 0 }
+};
+
+static CSS1PropertyEnum __READONLY_DATA aPageBreakTable[] =
+{
+ { sCSS1_PV_auto, SVX_CSS1_PBREAK_AUTO },
+ { sCSS1_PV_always, SVX_CSS1_PBREAK_ALWAYS },
+ { sCSS1_PV_avoid, SVX_CSS1_PBREAK_AVOID },
+ { sCSS1_PV_left, SVX_CSS1_PBREAK_LEFT },
+ { sCSS1_PV_right, SVX_CSS1_PBREAK_RIGHT },
+ { 0, 0 }
+};
+
+// /Feature: PrintExt
+
+/* */
+
+// Ein Eintrag besteht aus vier USHORTs. Der erste ist die Gesamtbreite,
+// die anderen sind die 3 Einzelbreiten
+
+#define SBORDER_ENTRY( n ) \
+ DEF_LINE_WIDTH_##n, DEF_LINE_WIDTH_##n, 0, 0
+
+#define DBORDER_ENTRY( n ) \
+ DEF_DOUBLE_LINE##n##_OUT + DEF_DOUBLE_LINE##n##_IN + \
+ DEF_DOUBLE_LINE##n##_DIST, \
+ DEF_DOUBLE_LINE##n##_OUT, \
+ DEF_DOUBLE_LINE##n##_IN, \
+ DEF_DOUBLE_LINE##n##_DIST
+
+#define TDBORDER_ENTRY( n ) \
+ DEF_DOUBLE_LINE##n##_OUT, \
+ DEF_DOUBLE_LINE##n##_OUT, \
+ DEF_DOUBLE_LINE##n##_IN, \
+ DEF_DOUBLE_LINE##n##_DIST
+
+
+static USHORT __READONLY_DATA aSBorderWidths[] =
+{
+ SBORDER_ENTRY( 0 ), SBORDER_ENTRY( 1 ), SBORDER_ENTRY( 2 ),
+ SBORDER_ENTRY( 3 ), SBORDER_ENTRY( 4 )
+};
+
+static USHORT __READONLY_DATA aDBorderWidths[] =
+{
+ DBORDER_ENTRY( 0 ),
+ DBORDER_ENTRY( 7 ),
+ DBORDER_ENTRY( 1 ),
+ DBORDER_ENTRY( 8 ),
+ DBORDER_ENTRY( 4 ),
+ DBORDER_ENTRY( 9 ),
+ DBORDER_ENTRY( 3 ),
+ DBORDER_ENTRY( 10 ),
+ DBORDER_ENTRY( 2 ),
+ DBORDER_ENTRY( 5 )
+};
+
+static USHORT __READONLY_DATA aTDBorderWidths[] =
+{
+ TDBORDER_ENTRY( 7 ), TDBORDER_ENTRY( 8 ), TDBORDER_ENTRY( 9 ),
+ TDBORDER_ENTRY( 10 )
+};
+
+#undef SBORDER_ENTRY
+#undef DBORDER_ENTRY
+
+/* */
+
+struct SvxCSS1ItemIds
+{
+ USHORT nFont;
+ USHORT nPosture;
+ USHORT nWeight;
+ USHORT nFontHeight;
+ USHORT nUnderline;
+ USHORT nCrossedOut;
+ USHORT nColor;
+ USHORT nKerning;
+ USHORT nCaseMap;
+ USHORT nBlink;
+
+ USHORT nLineSpacing;
+ USHORT nAdjust;
+ USHORT nWidows;
+ USHORT nOrphans;
+ USHORT nFmtSplit;
+
+ USHORT nLRSpace;
+ USHORT nULSpace;
+ USHORT nBox;
+ USHORT nBrush;
+};
+
+
+static SvxCSS1ItemIds aItemIds;
+
+
+/* */
+
+struct SvxCSS1BorderInfo
+{
+ Color aColor;
+ USHORT nAbsWidth;
+ USHORT nNamedWidth;
+ CSS1BorderStyle eStyle;
+
+ SvxCSS1BorderInfo() :
+ aColor( COL_BLACK ), nAbsWidth( USHRT_MAX ),
+ nNamedWidth( USHRT_MAX ), eStyle( CSS1_BS_NONE )
+ {}
+
+ SvxCSS1BorderInfo( const SvxCSS1BorderInfo& rInfo ) :
+ aColor( rInfo.aColor ), nAbsWidth( rInfo.nAbsWidth ),
+ nNamedWidth( rInfo.nNamedWidth ), eStyle( rInfo.eStyle )
+ {}
+
+ void SetBorderLine( USHORT nLine, SvxBoxItem &rBoxItem ) const;
+};
+
+void SvxCSS1BorderInfo::SetBorderLine( USHORT nLine, SvxBoxItem &rBoxItem ) const
+{
+ if( CSS1_BS_NONE==eStyle || nAbsWidth==0 ||
+ (nAbsWidth==USHRT_MAX && nNamedWidth==USHRT_MAX) )
+ {
+ rBoxItem.SetLine( 0, nLine );
+ return;
+ }
+
+ SvxBorderLine aBorderLine( &aColor );
+
+ // Linien-Stil doppelt oder einfach?
+ BOOL bDouble = eStyle == CSS1_BS_DOUBLE;
+
+ // benannte Breite umrechnenen, wenn keine absolute gegeben ist
+ if( nAbsWidth==USHRT_MAX )
+ {
+ const USHORT *aWidths = bDouble ? aDBorderWidths : aSBorderWidths;
+ USHORT nNWidth = nNamedWidth * 4;
+ aBorderLine.SetOutWidth( aWidths[nNWidth+1] );
+ aBorderLine.SetInWidth( aWidths[nNWidth+2] );
+ aBorderLine.SetDistance( aWidths[nNWidth+3] );
+ }
+ else
+ {
+ SvxCSS1Parser::SetBorderWidth( aBorderLine, nAbsWidth, bDouble );
+ }
+
+ rBoxItem.SetLine( &aBorderLine, nLine );
+}
+
+
+/* */
+
+SvxCSS1PropertyInfo::SvxCSS1PropertyInfo()
+{
+ for( USHORT i=0; i<4; i++ )
+ aBorderInfos[i] = 0;
+
+ Clear();
+}
+
+SvxCSS1PropertyInfo::SvxCSS1PropertyInfo( const SvxCSS1PropertyInfo& rProp ) :
+ aId( rProp.aId ),
+ bTopMargin( rProp.bTopMargin ), bBottomMargin( rProp.bBottomMargin ),
+ bLeftMargin( rProp.bLeftMargin ), bRightMargin( rProp.bRightMargin ),
+ bTextIndent( rProp.bTextIndent ),
+ nLeftMargin( rProp.nLeftMargin ), nRightMargin( rProp.nRightMargin ),
+ eFloat( rProp.eFloat ),
+ ePosition( rProp.ePosition ),
+ nTopBorderDistance( rProp.nTopBorderDistance ),
+ nBottomBorderDistance( rProp.nBottomBorderDistance ),
+ nLeftBorderDistance( rProp.nLeftBorderDistance ),
+ nRightBorderDistance( rProp.nRightBorderDistance ),
+ nLeft( rProp.nLeft ), nTop( rProp.nTop ),
+ nWidth( rProp.nWidth ), nHeight( rProp.nHeight ),
+ eLeftType( rProp.eLeftType ), eTopType( rProp.eTopType ),
+ eWidthType( rProp.eWidthType ), eHeightType( rProp.eHeightType ),
+// Feature: PrintExt
+ eSizeType( rProp.eSizeType ),
+ ePageBreakBefore( rProp.ePageBreakBefore ),
+ ePageBreakAfter( rProp.ePageBreakAfter )
+// /Feature: PrintExt
+{
+ for( USHORT i=0; i<4; i++ )
+ aBorderInfos[i] = rProp.aBorderInfos[i]
+ ? new SvxCSS1BorderInfo( *rProp.aBorderInfos[i] )
+ : 0;
+}
+
+SvxCSS1PropertyInfo::~SvxCSS1PropertyInfo()
+{
+ DestroyBorderInfos();
+}
+
+void SvxCSS1PropertyInfo::DestroyBorderInfos()
+{
+ for( USHORT i=0; i<4; i++ )
+ {
+ delete aBorderInfos[i];
+ aBorderInfos[i] = 0;
+ }
+}
+
+void SvxCSS1PropertyInfo::Clear()
+{
+ aId.Erase();
+ bTopMargin = bBottomMargin = FALSE;
+ bLeftMargin = bRightMargin = bTextIndent = FALSE;
+ nLeftMargin = nRightMargin = 0;
+ eFloat = SVX_ADJUST_END;
+
+ ePosition = SVX_CSS1_POS_NONE;
+ nTopBorderDistance = nBottomBorderDistance =
+ nLeftBorderDistance = nRightBorderDistance = USHRT_MAX;
+ nLeft = nTop = nWidth = nHeight = 0;
+ eLeftType = eTopType = eWidthType = eHeightType = SVX_CSS1_LTYPE_NONE;
+
+// Feature: PrintExt
+ eSizeType = SVX_CSS1_STYPE_NONE;
+ ePageBreakBefore = SVX_CSS1_PBREAK_NONE;
+ ePageBreakAfter = SVX_CSS1_PBREAK_NONE;
+
+ DestroyBorderInfos();
+}
+
+void SvxCSS1PropertyInfo::Merge( const SvxCSS1PropertyInfo& rProp )
+{
+ if( rProp.bTopMargin )
+ bTopMargin = TRUE;
+ if( rProp.bBottomMargin )
+ bBottomMargin = TRUE;
+
+ if( rProp.bLeftMargin )
+ {
+ bLeftMargin = TRUE;
+ nLeftMargin = rProp.nLeftMargin;
+ }
+ if( rProp.bRightMargin )
+ {
+ bRightMargin = TRUE;
+ nRightMargin = rProp.nRightMargin;
+ }
+ if( rProp.bTextIndent )
+ bTextIndent = TRUE;
+
+ for( USHORT i=0; i<4; i++ )
+ {
+ if( rProp.aBorderInfos[i] )
+ {
+ if( aBorderInfos[i] )
+ delete aBorderInfos[i];
+
+ aBorderInfos[i] = new SvxCSS1BorderInfo( *rProp.aBorderInfos[i] );
+ }
+ }
+
+ if( USHRT_MAX != rProp.nTopBorderDistance )
+ nTopBorderDistance = rProp.nTopBorderDistance;
+ if( USHRT_MAX != rProp.nBottomBorderDistance )
+ nBottomBorderDistance = rProp.nBottomBorderDistance;
+ if( USHRT_MAX != rProp.nLeftBorderDistance )
+ nLeftBorderDistance = rProp.nLeftBorderDistance;
+ if( USHRT_MAX != rProp.nRightBorderDistance )
+ nRightBorderDistance = rProp.nRightBorderDistance;
+
+ if( rProp.eFloat != SVX_ADJUST_END )
+ eFloat = rProp.eFloat;
+
+ if( rProp.ePosition != SVX_CSS1_POS_NONE )
+ ePosition = rProp.ePosition;
+
+// Feature: PrintExt
+ if( rProp.eSizeType != SVX_CSS1_STYPE_NONE )
+ {
+ eSizeType = rProp.eSizeType;
+ nWidth = rProp.nWidth;
+ nHeight = rProp.nHeight;
+ }
+
+ if( rProp.ePageBreakBefore != SVX_CSS1_PBREAK_NONE )
+ ePageBreakBefore = rProp.ePageBreakBefore;
+
+ if( rProp.ePageBreakAfter != SVX_CSS1_PBREAK_NONE )
+ ePageBreakAfter = rProp.ePageBreakAfter;
+
+// /Feature: PrintExt
+
+ if( rProp.eLeftType != SVX_CSS1_LTYPE_NONE )
+ {
+ eLeftType = rProp.eLeftType;
+ nLeft = rProp.nLeft;
+ }
+
+ if( rProp.eTopType != SVX_CSS1_LTYPE_NONE )
+ {
+ eTopType = rProp.eTopType;
+ nTop = rProp.nTop;
+ }
+
+ if( rProp.eWidthType != SVX_CSS1_LTYPE_NONE )
+ {
+ eWidthType = rProp.eWidthType;
+ nWidth = rProp.nWidth;
+ }
+
+ if( rProp.eHeightType != SVX_CSS1_LTYPE_NONE )
+ {
+ eHeightType = rProp.eHeightType;
+ nHeight = rProp.nHeight;
+ }
+}
+
+SvxCSS1BorderInfo *SvxCSS1PropertyInfo::GetBorderInfo( USHORT nLine, BOOL bCreate )
+{
+ USHORT nPos = 0;
+ switch( nLine )
+ {
+ case BOX_LINE_TOP: nPos = 0; break;
+ case BOX_LINE_BOTTOM: nPos = 1; break;
+ case BOX_LINE_LEFT: nPos = 2; break;
+ case BOX_LINE_RIGHT: nPos = 3; break;
+ }
+
+ if( !aBorderInfos[nPos] && bCreate )
+ aBorderInfos[nPos] = new SvxCSS1BorderInfo;
+
+ return aBorderInfos[nPos];
+}
+
+void SvxCSS1PropertyInfo::CopyBorderInfo( USHORT nSrcLine, USHORT nDstLine,
+ USHORT nWhat )
+{
+ SvxCSS1BorderInfo *pSrcInfo = GetBorderInfo( nSrcLine, FALSE );
+ if( !pSrcInfo )
+ return;
+
+ SvxCSS1BorderInfo *pDstInfo = GetBorderInfo( nDstLine );
+ if( (nWhat & SVX_CSS1_BORDERINFO_WIDTH) != 0 )
+ {
+ pDstInfo->nAbsWidth = pSrcInfo->nAbsWidth;
+ pDstInfo->nNamedWidth = pSrcInfo->nNamedWidth;
+ }
+
+ if( (nWhat & SVX_CSS1_BORDERINFO_COLOR) != 0 )
+ pDstInfo->aColor = pSrcInfo->aColor;
+
+ if( (nWhat & SVX_CSS1_BORDERINFO_STYLE) != 0 )
+ pDstInfo->eStyle = pSrcInfo->eStyle;
+}
+
+void SvxCSS1PropertyInfo::CopyBorderInfo( USHORT nCount, USHORT nWhat )
+{
+ if( nCount==0 )
+ {
+ CopyBorderInfo( BOX_LINE_BOTTOM, BOX_LINE_TOP, nWhat );
+ CopyBorderInfo( BOX_LINE_TOP, BOX_LINE_LEFT, nWhat );
+ }
+ if( nCount<=1 )
+ {
+ CopyBorderInfo( BOX_LINE_LEFT, BOX_LINE_RIGHT, nWhat );
+ }
+}
+
+void SvxCSS1PropertyInfo::SetBoxItem( SfxItemSet& rItemSet,
+ USHORT nMinBorderDist,
+ const SvxBoxItem *pDfltItem,
+ BOOL bTable )
+{
+ BOOL bChg = nTopBorderDistance != USHRT_MAX ||
+ nBottomBorderDistance != USHRT_MAX ||
+ nLeftBorderDistance != USHRT_MAX ||
+ nRightBorderDistance != USHRT_MAX;
+ for( USHORT i=0; !bChg && i<4; i++ )
+ bChg = aBorderInfos[i]!=0;
+
+ if( !bChg )
+ return;
+
+ SvxBoxItem aBoxItem( aItemIds.nBox );
+ if( pDfltItem )
+ aBoxItem = *pDfltItem;
+
+ SvxCSS1BorderInfo *pInfo = GetBorderInfo( BOX_LINE_TOP, FALSE );
+ if( pInfo )
+ pInfo->SetBorderLine( BOX_LINE_TOP, aBoxItem );
+
+ pInfo = GetBorderInfo( BOX_LINE_BOTTOM, FALSE );
+ if( pInfo )
+ pInfo->SetBorderLine( BOX_LINE_BOTTOM, aBoxItem );
+
+ pInfo = GetBorderInfo( BOX_LINE_LEFT, FALSE );
+ if( pInfo )
+ pInfo->SetBorderLine( BOX_LINE_LEFT, aBoxItem );
+
+ pInfo = GetBorderInfo( BOX_LINE_RIGHT, FALSE );
+ if( pInfo )
+ pInfo->SetBorderLine( BOX_LINE_RIGHT, aBoxItem );
+
+ for( i=0; i<4; i++ )
+ {
+ USHORT nLine, nDist;
+ switch( i )
+ {
+ case 0: nLine = BOX_LINE_TOP;
+ nDist = nTopBorderDistance;
+ nTopBorderDistance = USHRT_MAX;
+ break;
+ case 1: nLine = BOX_LINE_BOTTOM;
+ nDist = nBottomBorderDistance;
+ nBottomBorderDistance = USHRT_MAX;
+ break;
+ case 2: nLine = BOX_LINE_LEFT;
+ nDist = nLeftBorderDistance;
+ nLeftBorderDistance = USHRT_MAX;
+ break;
+ case 3: nLine = BOX_LINE_RIGHT;
+ nDist = nRightBorderDistance;
+ nRightBorderDistance = USHRT_MAX;
+ break;
+ }
+
+ if( aBoxItem.GetLine( nLine ) )
+ {
+ if( USHRT_MAX == nDist )
+ nDist = aBoxItem.GetDistance( nLine );
+
+ if( nDist < nMinBorderDist )
+ nDist = nMinBorderDist;
+ }
+ else
+ {
+ if( USHRT_MAX == nDist )
+ nDist = aBoxItem.GetDistance( nLine );
+
+ if( !bTable )
+ nDist = 0U;
+ else if( nDist && nDist < nMinBorderDist )
+ nDist = nMinBorderDist;
+ }
+
+ aBoxItem.SetDistance( nDist, nLine );
+ }
+
+ rItemSet.Put( aBoxItem );
+
+ DestroyBorderInfos();
+}
+
+
+/* */
+
+SvxCSS1MapEntry::SvxCSS1MapEntry( const String& rKey, const SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rProp ) :
+ aKey( rKey ),
+ aItemSet( rItemSet ),
+ aPropInfo( rProp )
+{
+ // TODO: ToUpperAscii
+ aKey.ToUpperAscii();
+}
+
+#if defined( MAC ) || defined( ICC ) || defined( BLC )
+BOOL operator==( const SvxCSS1MapEntry& rE1, const SvxCSS1MapEntry& rE2 )
+{
+ return rE1.aKey==rE2.aKey;
+}
+
+BOOL operator<( const SvxCSS1MapEntry& rE1, const SvxCSS1MapEntry& rE2 )
+{
+ return rE1.aKey<rE2.aKey;
+}
+#endif
+
+SV_IMPL_OP_PTRARR_SORT( SvxCSS1Map, SvxCSS1MapEntryPtr )
+
+/* */
+
+BOOL SvxCSS1Parser::StyleParsed( const CSS1Selector *pSelector,
+ SfxItemSet& rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo )
+{
+ // wie man sieht passiert hier gar nichts
+ return TRUE;
+}
+
+BOOL SvxCSS1Parser::SelectorParsed( const CSS1Selector *pSelector,
+ BOOL bFirst )
+{
+ if( bFirst )
+ {
+ DBG_ASSERT( pSheetItemSet, "Wo ist der Item-Set fuer Style-Sheets?" );
+
+ // Dieses ist der erste Selektor einer Rule, also muessen
+ // die bisher geparsten Items auf die Styles verteilt werden
+// pSheetPropInfo->CreateBoxItem( *pSheetItemSet, GetDfltBorderDist() );
+ for( USHORT i=0; i<aSelectors.Count(); i++ )
+ {
+ StyleParsed( aSelectors[i], *pSheetItemSet, *pSheetPropInfo );
+ }
+ pSheetItemSet->ClearItem();
+ pSheetPropInfo->Clear();
+
+ // und die naechste Rule vorbereiten
+ if( aSelectors.Count() )
+ aSelectors.DeleteAndDestroy( 0, aSelectors.Count() );
+ }
+
+ aSelectors.C40_INSERT( CSS1Selector, pSelector, aSelectors.Count() );
+
+ return FALSE; // den Selektor haben wir gespeichert. Loeschen toedlich!
+}
+
+
+BOOL SvxCSS1Parser::DeclarationParsed( const String& rProperty,
+ const CSS1Expression *pExpr )
+{
+ DBG_ASSERT( pExpr, "DeclarationParsed() ohne Expression" );
+
+ if( !pExpr )
+ return TRUE;
+
+ ParseProperty( rProperty, pExpr );
+
+ return TRUE; // die Deklaration brauchen wir nicht mehr. Loeschen!
+}
+
+/* */
+
+SvxCSS1Parser::SvxCSS1Parser( SfxItemPool& rPool, USHORT nMinFixLineSp,
+ USHORT *pWhichIds, USHORT nWhichIds ) :
+ CSS1Parser(),
+ pSheetItemSet(0), pItemSet(0),
+ nMinFixLineSpace( nMinFixLineSp ),
+ pSearchEntry( 0 ), bIgnoreFontFamily( FALSE ),
+ eDfltEnc( RTL_TEXTENCODING_DONTKNOW )
+{
+ // Item-Ids auch initialisieren
+ aItemIds.nFont = rPool.GetTrueWhich( SID_ATTR_CHAR_FONT, FALSE );
+ aItemIds.nPosture = rPool.GetTrueWhich( SID_ATTR_CHAR_POSTURE, FALSE );
+ aItemIds.nWeight = rPool.GetTrueWhich( SID_ATTR_CHAR_WEIGHT, FALSE );
+ aItemIds.nFontHeight = rPool.GetTrueWhich( SID_ATTR_CHAR_FONTHEIGHT, FALSE );
+ aItemIds.nUnderline = rPool.GetTrueWhich( SID_ATTR_CHAR_UNDERLINE, FALSE );
+ aItemIds.nCrossedOut = rPool.GetTrueWhich( SID_ATTR_CHAR_STRIKEOUT, FALSE );
+ aItemIds.nColor = rPool.GetTrueWhich( SID_ATTR_CHAR_COLOR, FALSE );
+ aItemIds.nKerning = rPool.GetTrueWhich( SID_ATTR_CHAR_KERNING, FALSE );
+ aItemIds.nCaseMap = rPool.GetTrueWhich( SID_ATTR_CHAR_CASEMAP, FALSE );
+ aItemIds.nBlink = rPool.GetTrueWhich( SID_ATTR_FLASH, FALSE );
+
+ aItemIds.nLineSpacing = rPool.GetTrueWhich( SID_ATTR_PARA_LINESPACE, FALSE );
+ aItemIds.nAdjust = rPool.GetTrueWhich( SID_ATTR_PARA_ADJUST, FALSE );
+ aItemIds.nWidows = rPool.GetTrueWhich( SID_ATTR_PARA_WIDOWS, FALSE );
+ aItemIds.nOrphans = rPool.GetTrueWhich( SID_ATTR_PARA_ORPHANS, FALSE );
+ aItemIds.nFmtSplit = rPool.GetTrueWhich( SID_ATTR_PARA_SPLIT, FALSE );
+
+ aItemIds.nLRSpace = rPool.GetTrueWhich( SID_ATTR_LRSPACE, FALSE );
+ aItemIds.nULSpace = rPool.GetTrueWhich( SID_ATTR_ULSPACE, FALSE );
+ aItemIds.nBox = rPool.GetTrueWhich( SID_ATTR_BORDER_OUTER, FALSE );
+ aItemIds.nBrush = rPool.GetTrueWhich( SID_ATTR_BRUSH, FALSE );
+
+ aWhichMap.Insert( (USHORT)0, (USHORT)0 );
+ SvParser::BuildWhichTbl( aWhichMap, (USHORT *)&aItemIds,
+ sizeof(aItemIds) / sizeof(USHORT) );
+ if( pWhichIds && nWhichIds )
+ SvParser::BuildWhichTbl( aWhichMap, pWhichIds, nWhichIds );
+
+ pSheetItemSet = new SfxItemSet( rPool, aWhichMap.GetData() );
+ pSheetPropInfo = new SvxCSS1PropertyInfo;
+ pSearchEntry = new SvxCSS1MapEntry( rPool, aWhichMap.GetData() );
+}
+
+SvxCSS1Parser::~SvxCSS1Parser()
+{
+ delete pSheetItemSet;
+ delete pSheetPropInfo;
+ delete pSearchEntry;
+}
+
+
+/* */
+
+BOOL SvxCSS1Parser::ParseStyleSheet( const String& rIn )
+{
+ pItemSet = pSheetItemSet;
+ pPropInfo = pSheetPropInfo;
+
+ BOOL bSuccess = CSS1Parser::ParseStyleSheet( rIn );
+
+ // die bisher geparsten Items auf die Styles verteilt werden
+// pSheetPropInfo->CreateBoxItem( *pSheetItemSet, GetDfltBorderDist() );
+ for( USHORT i=0; i<aSelectors.Count(); i++ )
+ {
+ StyleParsed( aSelectors[i], *pSheetItemSet, *pSheetPropInfo );
+ }
+
+ // und etwas aufrauemen
+ if( aSelectors.Count() )
+ aSelectors.DeleteAndDestroy( 0, aSelectors.Count() );
+ pSheetItemSet->ClearItem();
+ pSheetPropInfo->Clear();
+
+ pItemSet = 0;
+ pPropInfo = 0;
+
+ return bSuccess;
+}
+
+BOOL SvxCSS1Parser::ParseStyleOption( const String& rIn,
+ SfxItemSet& rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo )
+{
+ pItemSet = &rItemSet;
+ pPropInfo = &rPropInfo;
+
+ BOOL bSuccess = CSS1Parser::ParseStyleOption( rIn );
+// pPropInfo->CreateBoxItem( *pItemSet, GetDfltBorderDist() );
+
+ pItemSet = 0;
+ pPropInfo = 0;
+
+ return bSuccess;
+}
+
+/* */
+
+BOOL SvxCSS1Parser::GetEnum( const CSS1PropertyEnum *pPropTable,
+ const String &rValue, USHORT& rEnum )
+{
+ String aValue( rValue );
+ aValue.ToLowerAscii();
+ while( pPropTable->pName )
+ {
+ if( !rValue.EqualsIgnoreCaseAscii( pPropTable->pName ) )
+ pPropTable++;
+ else
+ break;
+ }
+
+ if( pPropTable->pName )
+ rEnum = pPropTable->nEnum;
+
+ return (pPropTable->pName != 0);
+}
+
+void SvxCSS1Parser::PixelToTwip( long &rWidth, long &rHeight )
+{
+ if( Application::GetDefaultDevice() )
+ {
+ Size aTwipSz( rWidth, rHeight );
+ aTwipSz = Application::GetDefaultDevice()->PixelToLogic( aTwipSz,
+ MapMode(MAP_TWIP) );
+
+ rWidth = aTwipSz.Width();
+ rHeight = aTwipSz.Height();
+ }
+}
+
+void SvxCSS1Parser::SetBorderWidth( SvxBorderLine& aBorderLine, USHORT nWidth,
+ BOOL bDouble, BOOL bTable )
+{
+ const USHORT *aWidths;
+ USHORT nSize;
+ if( !bDouble )
+ {
+ aWidths = aSBorderWidths;
+ nSize = sizeof( aSBorderWidths );
+ }
+ else if( bTable )
+ {
+ aWidths = aTDBorderWidths;
+ nSize = sizeof( aTDBorderWidths );
+ }
+ else
+ {
+ aWidths = aDBorderWidths;
+ nSize = sizeof( aDBorderWidths );
+ }
+
+ USHORT i = (nSize / sizeof(USHORT)) - 4;
+ while( i>0 &&
+ nWidth <= ((aWidths[i] + aWidths[i-4]) / 2) )
+ {
+ DBG_ASSERT( aWidths[i] > aWidths[i-4],
+ "Linienbreiten sind nicht sortiert!" );
+ i -= 4;
+ }
+
+ aBorderLine.SetOutWidth( aWidths[i+1] );
+ aBorderLine.SetInWidth( aWidths[i+2] );
+ aBorderLine.SetDistance( aWidths[i+3] );
+}
+
+ULONG SvxCSS1Parser::GetFontHeight( USHORT nSize ) const
+{
+ USHORT nHeight;
+
+ switch( nSize )
+ {
+ case 0: nHeight = 8*20; break;
+ case 1: nHeight = 10*20; break;
+ case 2: nHeight = 11*20; break;
+ case 3: nHeight = 12*20; break;
+ case 4: nHeight = 17*20; break;
+ case 5: nHeight = 20*20; break;
+ case 6:
+ default: nHeight = 32*20; break;
+ }
+
+ return nHeight;
+}
+
+const FontList *SvxCSS1Parser::GetFontList() const
+{
+ return 0;
+}
+
+SvxCSS1MapEntry *SvxCSS1Parser::GetMapEntry( const String& rKey,
+ const SvxCSS1Map& rMap ) const
+{
+ pSearchEntry->SetKey( rKey );
+
+ SvxCSS1MapEntry *pRet = 0;
+ USHORT nPos;
+ if( rMap.Seek_Entry( pSearchEntry, &nPos ) )
+ pRet = rMap[nPos];
+
+ return pRet;
+}
+
+void SvxCSS1Parser::InsertMapEntry( const String& rKey,
+ const SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rProp,
+ SvxCSS1Map& rMap )
+{
+ SvxCSS1MapEntry *pEntry = GetMapEntry( rKey, rMap );
+ if( pEntry )
+ {
+ MergeStyles( rItemSet, rProp,
+ pEntry->GetItemSet(), pEntry->GetPropertyInfo(), TRUE );
+ }
+ else
+ {
+ rMap.Insert( new SvxCSS1MapEntry( rKey, rItemSet, rProp ) );
+ }
+}
+
+
+void SvxCSS1Parser::MergeStyles( const SfxItemSet& rSrcSet,
+ const SvxCSS1PropertyInfo& rSrcInfo,
+ SfxItemSet& rTargetSet,
+ SvxCSS1PropertyInfo& rTargetInfo,
+ BOOL bSmart )
+{
+ if( !bSmart )
+ {
+ rTargetSet.Put( rSrcSet );
+ }
+ else
+ {
+ SvxLRSpaceItem aLRSpace( (const SvxLRSpaceItem&)rTargetSet.Get(aItemIds.nLRSpace) );
+ SvxULSpaceItem aULSpace( (const SvxULSpaceItem&)rTargetSet.Get(aItemIds.nULSpace) );
+ SvxBoxItem aBox( (const SvxBoxItem&)rTargetSet.Get(aItemIds.nBox) );
+
+ rTargetSet.Put( rSrcSet );
+
+ if( rSrcInfo.bLeftMargin || rSrcInfo.bRightMargin ||
+ rSrcInfo.bTextIndent )
+ {
+ const SvxLRSpaceItem& rNewLRSpace =
+ (const SvxLRSpaceItem&)rSrcSet.Get( aItemIds.nLRSpace );
+
+ if( rSrcInfo.bLeftMargin )
+ aLRSpace.SetLeft( rNewLRSpace.GetLeft() );
+ if( rSrcInfo.bRightMargin )
+ aLRSpace.SetRight( rNewLRSpace.GetRight() );
+ if( rSrcInfo.bTextIndent )
+ aLRSpace.SetTxtFirstLineOfst( rNewLRSpace.GetTxtFirstLineOfst() );
+
+ rTargetSet.Put( aLRSpace );
+ }
+
+ if( rSrcInfo.bTopMargin || rSrcInfo.bBottomMargin )
+ {
+ const SvxULSpaceItem& rNewULSpace =
+ (const SvxULSpaceItem&)rSrcSet.Get( aItemIds.nULSpace );
+
+ if( rSrcInfo.bTopMargin )
+ aULSpace.SetUpper( rNewULSpace.GetUpper() );
+ if( rSrcInfo.bBottomMargin )
+ aULSpace.SetLower( rNewULSpace.GetLower() );
+
+ rTargetSet.Put( aULSpace );
+ }
+ }
+
+ rTargetInfo.Merge( rSrcInfo );
+}
+
+void SvxCSS1Parser::SetDfltEncoding( rtl_TextEncoding eEnc )
+{
+ eDfltEnc = eEnc;
+}
+
+/* */
+
+static void ParseCSS1_font_size( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ ULONG nHeight = 0;
+ USHORT nPropHeight = 100;
+
+ switch( pExpr->GetType() )
+ {
+ case CSS1_LENGTH:
+ nHeight = pExpr->GetULength();
+ break;
+ case CSS1_PIXLENGTH:
+ {
+ long nPWidth = 0;
+ long nPHeight = (long)pExpr->GetNumber();
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+ nHeight = (ULONG)nPHeight;
+ }
+ break;
+//#ifdef PERCENTAGE_POSSIBLE
+ case CSS1_PERCENTAGE:
+ // nur fuer Drop-Caps!
+ nPropHeight = (USHORT)pExpr->GetNumber();
+ break;
+//#endif
+ case CSS1_IDENT:
+ {
+ USHORT nSize;
+#ifdef PERCENTAGE_POSSIBLE
+ const String& rValue = pExpr->GetString();
+#endif
+ if( SvxCSS1Parser::GetEnum( aFontSizeTable, pExpr->GetString(),
+ nSize ) )
+ {
+ nHeight = rParser.GetFontHeight( nSize );
+ }
+#ifdef PERCENTAGE_POSSIBLE
+ else if( rValue.EqualsIgnoreCaseAscii( sCSS1_PV_larger ) )
+ {
+ nPropHeight = 150;
+ }
+ else if( rValue.EqualsIgnoreCaseAscii( sCSS1_PV_smaller ) )
+ {
+ nPropHeight = 67;
+ }
+#endif
+ }
+ break;
+ }
+
+ if( nHeight || nPropHeight!=100 )
+ {
+ rItemSet.Put( SvxFontHeightItem( nHeight, nPropHeight,
+ aItemIds.nFontHeight ) );
+ }
+}
+
+/* */
+
+static void ParseCSS1_font_family( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ String aName, aStyleName, aDfltName;
+ FontFamily eFamily = FAMILY_DONTKNOW;
+ FontPitch ePitch = PITCH_DONTKNOW;
+ rtl_TextEncoding eEnc = rParser.GetDfltEncoding();
+ const FontList *pFList = rParser.GetFontList();
+ BOOL bFirst = TRUE;
+ BOOL bFound = FALSE;
+ while( pExpr && (bFirst || ','==pExpr->GetOp() || !pExpr->GetOp()) )
+ {
+ CSS1Token eType = pExpr->GetType();
+ if( CSS1_IDENT==eType || CSS1_STRING==eType )
+ {
+ String aIdent( pExpr->GetString() );
+
+ if( CSS1_IDENT==eType )
+ {
+ // Alle nachfolgenden id's sammeln und mit einem
+ // Space getrennt hintendranhaengen
+ const CSS1Expression *pNext = pExpr->GetNext();
+ while( pNext && !pNext->GetOp() &&
+ CSS1_IDENT==pNext->GetType() )
+ {
+ (aIdent += ' ') += pNext->GetString();
+ pExpr = pNext;
+ pNext = pExpr->GetNext();
+ }
+ }
+ if( aIdent.Len() )
+ {
+ if( !bFound && pFList )
+ {
+ sal_Handle hFont = pFList->GetFirstFontInfo( aIdent );
+ if( 0 != hFont )
+ {
+ const FontInfo& rFInfo = pFList->GetFontInfo( hFont );
+ if( RTL_TEXTENCODING_DONTKNOW != rFInfo.GetCharSet() )
+ {
+ bFound = TRUE;
+ if( RTL_TEXTENCODING_SYMBOL == rFInfo.GetCharSet() )
+ eEnc = RTL_TEXTENCODING_SYMBOL;
+ }
+ }
+ }
+ if( !bFirst )
+ aName += ';';
+ aName += aIdent;
+ }
+ }
+
+ pExpr = pExpr->GetNext();
+ bFirst = FALSE;
+ }
+
+ if( aName.Len() && !rParser.IsIgnoreFontFamily() )
+ rItemSet.Put( SvxFontItem( eFamily, aName, aStyleName, ePitch,
+ eEnc, aItemIds.nFont ) );
+}
+
+/* */
+
+static void ParseCSS1_font_weight( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ switch( pExpr->GetType() )
+ {
+ case CSS1_IDENT:
+ case CSS1_STRING: // MS-IE, was sonst
+ {
+ USHORT nWeight;
+ if( SvxCSS1Parser::GetEnum( aFontWeightTable, pExpr->GetString(),
+ nWeight ) )
+ {
+ rItemSet.Put( SvxWeightItem( (FontWeight)nWeight,
+ aItemIds.nWeight ) );
+ }
+ }
+ break;
+ case CSS1_NUMBER:
+ {
+ USHORT nWeight = (USHORT)pExpr->GetNumber();
+ rItemSet.Put( SvxWeightItem( nWeight>400 ? WEIGHT_BOLD
+ : WEIGHT_NORMAL,
+ aItemIds.nWeight ) );
+ }
+ break;
+ }
+}
+
+/* */
+
+static void ParseCSS1_font_style( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ BOOL bPosture = FALSE;
+ BOOL bCaseMap = FALSE;
+ FontItalic eItalic;
+ SvxCaseMap eCaseMap;
+
+ // normal | italic || small-caps | oblique || small-caps | small-caps
+ // (wobei nor noch normal | italic und oblique zulaessig sind
+
+ // der Wert kann zwei Werte enthalten!
+ for( USHORT i=0; pExpr && i<2; i++ )
+ {
+ // Auch hier hinterlaesst MS-IEs Parser seine Spuren
+ if( (CSS1_IDENT==pExpr->GetType() || CSS1_STRING==pExpr->GetType()) &&
+ !pExpr->GetOp() )
+ {
+ const String& rValue = pExpr->GetString();
+ // erstmal pruefen, ob es ein Italic-Wert oder 'normal' ist
+ USHORT nItalic;
+ if( SvxCSS1Parser::GetEnum( aFontStyleTable, rValue, nItalic ) )
+ {
+ eItalic = (FontItalic)nItalic;
+ if( !bCaseMap && ITALIC_NONE==eItalic )
+ {
+ // fuer 'normal' muessen wir auch die case-map aussch.
+ eCaseMap = SVX_CASEMAP_NOT_MAPPED;
+ bCaseMap = TRUE;
+ }
+ bPosture = TRUE;
+ }
+ else if( !bCaseMap &&
+ rValue.EqualsIgnoreCaseAscii(sCSS1_PV_small_caps) )
+ {
+ eCaseMap = SVX_CASEMAP_KAPITAELCHEN;
+ bCaseMap = TRUE;
+ }
+ }
+
+ // den naechsten Ausdruck holen
+ pExpr = pExpr->GetNext();
+ }
+
+ if( bPosture )
+ rItemSet.Put( SvxPostureItem( eItalic, aItemIds.nPosture ) );
+
+ if( bCaseMap )
+ rItemSet.Put( SvxCaseMapItem( eCaseMap, aItemIds.nCaseMap ) );
+}
+
+/* */
+
+static void ParseCSS1_font_variant( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ // normal | small-caps
+
+ switch( pExpr->GetType() )
+ {
+ case CSS1_IDENT:
+ {
+ USHORT nCaseMap;
+ if( SvxCSS1Parser::GetEnum( aFontVariantTable, pExpr->GetString(),
+ nCaseMap ) )
+ {
+ rItemSet.Put( SvxCaseMapItem( (SvxCaseMap)nCaseMap,
+ aItemIds.nCaseMap ) );
+ }
+ }
+ }
+}
+
+/* */
+
+static void ParseCSS1_color( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ switch( pExpr->GetType() )
+ {
+ case CSS1_IDENT:
+ case CSS1_RGB:
+ case CSS1_HEXCOLOR:
+ case CSS1_STRING: // Wegen MS-IE
+ {
+ Color aColor;
+ if( pExpr->GetColor( aColor ) )
+ rItemSet.Put( SvxColorItem( aColor, aItemIds.nColor ) );
+ }
+ break;
+
+ }
+}
+
+/* */
+
+static void MergeHori( SvxGraphicPosition& ePos, SvxGraphicPosition eHori )
+{
+ DBG_ASSERT( GPOS_LT==eHori || GPOS_MT==eHori || GPOS_RT==eHori,
+ "vertikale Position nicht oben" );
+
+ switch( ePos )
+ {
+ case GPOS_LT:
+ case GPOS_MT:
+ case GPOS_RT:
+ ePos = eHori;
+ break;
+
+ case GPOS_LM:
+ case GPOS_MM:
+ case GPOS_RM:
+ ePos = GPOS_LT==eHori ? GPOS_LM : (GPOS_MT==eHori ? GPOS_MM : GPOS_RM);
+ break;
+
+ case GPOS_LB:
+ case GPOS_MB:
+ case GPOS_RB:
+ ePos = GPOS_LT==eHori ? GPOS_LB : (GPOS_MT==eHori ? GPOS_MB : GPOS_RB);
+ break;
+ }
+}
+
+static void MergeVert( SvxGraphicPosition& ePos, SvxGraphicPosition eVert )
+{
+ DBG_ASSERT( GPOS_LT==eVert || GPOS_LM==eVert || GPOS_LB==eVert,
+ "horizontale Position nicht links" );
+
+ switch( ePos )
+ {
+ case GPOS_LT:
+ case GPOS_LM:
+ case GPOS_LB:
+ ePos = eVert;
+ break;
+
+ case GPOS_MT:
+ case GPOS_MM:
+ case GPOS_MB:
+ ePos = GPOS_LT==eVert ? GPOS_MT : (GPOS_LM==eVert ? GPOS_MM : GPOS_MB);
+ break;
+
+ case GPOS_RT:
+ case GPOS_RM:
+ case GPOS_RB:
+ ePos = GPOS_LT==eVert ? GPOS_RT : (GPOS_LM==eVert ? GPOS_RM : GPOS_RB);
+ break;
+ }
+}
+
+static void ParseCSS1_background( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ Color aColor;
+ String aURL;
+
+ BOOL bColor = FALSE, bTransparent = FALSE;
+ SvxGraphicPosition eRepeat = GPOS_TILED;
+ SvxGraphicPosition ePos = GPOS_LT;
+ BOOL bHori = FALSE, bVert = FALSE;
+
+ while( pExpr && !pExpr->GetOp() )
+ {
+ switch( pExpr->GetType() )
+ {
+ case CSS1_URL:
+ pExpr->GetURL( aURL );
+ break;
+
+ case CSS1_RGB:
+ bColor = pExpr->GetColor( aColor );
+ break;
+
+ case CSS1_LENGTH:
+ case CSS1_PIXLENGTH:
+ {
+ // da wir keine absolute Positionierung koennen,
+ // unterscheiden wir nur zwischen 0 und !0. Deshalb
+ // koennen Pixel auch wie alle anderen Einheiten behandelt
+ // werden.
+
+ ULONG nLength = (ULONG)pExpr->GetNumber();
+ if( !bHori )
+ {
+ ePos = nLength ? GPOS_MM : GPOS_LT;
+ bHori = TRUE;
+ }
+ else if( !bVert )
+ {
+ MergeVert( ePos, (nLength ? GPOS_LM : GPOS_LT) );
+ bVert = TRUE;
+ }
+ }
+ break;
+
+ case CSS1_PERCENTAGE:
+ {
+ // die %-Angabe wird auf den enum abgebildet
+
+ USHORT nPerc = (USHORT)pExpr->GetNumber();
+ if( !bHori )
+ {
+ ePos = nPerc < 25 ? GPOS_LT
+ : (nPerc < 75 ? GPOS_MM
+ : GPOS_RB);
+ }
+ else if( !bVert )
+ {
+ SvxGraphicPosition eVert =
+ nPerc < 25 ? GPOS_LT: (nPerc < 75 ? GPOS_LM
+ : GPOS_LB);
+ MergeVert( ePos, eVert );
+ }
+ }
+ break;
+
+ case CSS1_IDENT:
+ case CSS1_HEXCOLOR:
+ case CSS1_STRING: // Wegen MS-IE
+ {
+ USHORT nEnum;
+ const String &rValue = pExpr->GetString();
+ if( rValue.EqualsIgnoreCaseAscii( sCSS1_PV_transparent ) )
+ {
+ bTransparent = TRUE;
+ }
+ if( SvxCSS1Parser::GetEnum( aBGRepeatTable, rValue, nEnum ) )
+ {
+ eRepeat = (SvxGraphicPosition)nEnum;
+ }
+ else if( SvxCSS1Parser::GetEnum( aBGHoriPosTable, rValue, nEnum ) )
+ {
+ // <position>, horizontal
+ MergeHori( ePos, (SvxGraphicPosition)nEnum );
+ }
+ else if( SvxCSS1Parser::GetEnum( aBGVertPosTable, rValue, nEnum ) )
+ {
+ // <position>, vertikal
+ MergeVert( ePos, (SvxGraphicPosition)nEnum );
+ }
+ else if( !bColor )
+ {
+ // <color>
+ bColor = pExpr->GetColor( aColor );
+ }
+ // <scroll> kennen wir nicht
+ }
+ break;
+ }
+
+ pExpr = pExpr->GetNext();
+ }
+
+ // transparent schlaegt alles
+ if( bTransparent )
+ {
+ bColor = FALSE;
+ aURL.Erase();
+ }
+
+ // repeat hat prio gegenueber einer Position
+ if( GPOS_NONE == eRepeat )
+ eRepeat = ePos;
+
+ if( bTransparent || bColor || aURL.Len() )
+ {
+ SvxBrushItem aBrushItem( aItemIds.nBrush );
+
+ if( bTransparent )
+ aBrushItem.SetColor( Color(COL_TRANSPARENT));
+ else if( bColor )
+ aBrushItem.SetColor( aColor );
+
+ if( aURL.Len() )
+ {
+ aBrushItem.SetGraphicLink( INetURLObject::RelToAbs( aURL ) );
+ aBrushItem.SetGraphicPos( eRepeat );
+ }
+
+ rItemSet.Put( aBrushItem );
+ }
+}
+
+static void ParseCSS1_background_color( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ Color aColor;
+
+ BOOL bColor = FALSE, bTransparent = FALSE;
+
+ switch( pExpr->GetType() )
+ {
+ case CSS1_RGB:
+ bColor = pExpr->GetColor( aColor );
+ break;
+ case CSS1_IDENT:
+ case CSS1_HEXCOLOR:
+ case CSS1_STRING: // Wegen MS-IE
+ if( pExpr->GetString().EqualsIgnoreCaseAscii( sCSS1_PV_transparent ) )
+ {
+ bTransparent = TRUE;
+ }
+ else
+ {
+ // <color>
+ bColor = pExpr->GetColor( aColor );
+ }
+ break;
+ }
+
+ if( bTransparent || bColor )
+ {
+ SvxBrushItem aBrushItem( aItemIds.nBrush );
+
+ if( bTransparent )
+ aBrushItem.SetColor( Color(COL_TRANSPARENT) );
+ else if( bColor )
+ aBrushItem.SetColor( aColor);
+
+ rItemSet.Put( aBrushItem );
+ }
+}
+
+/* */
+
+static void ParseCSS1_line_height( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ USHORT nHeight = 0;
+ BYTE nPropHeight = 0;
+
+ switch( pExpr->GetType() )
+ {
+ case CSS1_LENGTH:
+ nHeight = (USHORT)pExpr->GetULength();
+ break;
+ case CSS1_PIXLENGTH:
+ {
+ long nPWidth = 0;
+ long nPHeight = (long)pExpr->GetNumber();
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+ nHeight = (USHORT)nPHeight;
+ }
+ break;
+ case CSS1_PERCENTAGE:
+ {
+ USHORT nPHeight = (USHORT)pExpr->GetNumber();
+ nPropHeight = nPHeight <= 200 ? (BYTE)nPHeight : 200;
+ }
+ break;
+ case CSS1_NUMBER:
+ {
+ USHORT nPHeight = (USHORT)(pExpr->GetNumber() * 100);
+ nPropHeight = nPHeight <= 200 ? (BYTE)nPHeight : 200;
+ }
+ break;
+ }
+
+ if( nHeight )
+ {
+ if( nHeight < rParser.GetMinFixLineSpace() )
+ nHeight = rParser.GetMinFixLineSpace();
+ SvxLineSpacingItem aLSItem( nHeight, aItemIds.nLineSpacing );
+ aLSItem.SetLineHeight( nHeight );
+ aLSItem.GetLineSpaceRule() = SVX_LINE_SPACE_FIX;
+ aLSItem.GetInterLineSpaceRule() = SVX_INTER_LINE_SPACE_OFF;
+ rItemSet.Put( aLSItem );
+ }
+ else if( nPropHeight )
+ {
+ SvxLineSpacingItem aLSItem( nPropHeight, aItemIds.nLineSpacing );
+ aLSItem.GetLineSpaceRule() = SVX_LINE_SPACE_AUTO;
+ if( 100 == nPropHeight )
+ aLSItem.GetInterLineSpaceRule() = SVX_INTER_LINE_SPACE_OFF;
+ else
+ aLSItem.SetPropLineSpace( nPropHeight );
+ rItemSet.Put( aLSItem );
+ }
+
+}
+
+/* */
+
+static void ParseCSS1_font( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ FontItalic eItalic = ITALIC_NONE;
+ SvxCaseMap eCaseMap = SVX_CASEMAP_NOT_MAPPED;
+ FontWeight eWeight = WEIGHT_NORMAL;
+
+ // [ <font-style> || <font-variant> || <font-weight> ] ?
+ while( pExpr && !pExpr->GetOp() &&
+ (CSS1_IDENT==pExpr->GetType() ||
+ CSS1_STRING==pExpr->GetType() ||
+ CSS1_NUMBER==pExpr->GetType()) )
+ {
+ if( CSS1_IDENT==pExpr->GetType() ||
+ CSS1_STRING==pExpr->GetType() )
+ {
+ const String& rValue = pExpr->GetString();
+
+ USHORT nEnum;
+
+ if( SvxCSS1Parser::GetEnum( aFontStyleTable, rValue, nEnum ) )
+ {
+ eItalic = (FontItalic)nEnum;
+ }
+ else if( SvxCSS1Parser::GetEnum( aFontVariantTable, rValue, nEnum ) )
+ {
+ eCaseMap = (SvxCaseMap)nEnum;
+ }
+ else if( SvxCSS1Parser::GetEnum( aFontWeightTable, rValue, nEnum ) )
+ {
+ eWeight = (FontWeight)nEnum;
+ }
+ }
+ else
+ {
+ eWeight = (USHORT)pExpr->GetNumber() > 400 ? WEIGHT_BOLD
+ : WEIGHT_NORMAL;
+ }
+
+ pExpr = pExpr->GetNext();
+ }
+
+ if( !pExpr || pExpr->GetOp() )
+ return;
+
+ // Da "font" alle Werte zurecksetzt, fuer die nichts angegeben ist,
+ // tun wir das hier.
+ rItemSet.Put( SvxPostureItem( eItalic, aItemIds.nPosture ) );
+ rItemSet.Put( SvxCaseMapItem( eCaseMap, aItemIds.nCaseMap ) );
+ rItemSet.Put( SvxWeightItem( eWeight, aItemIds.nWeight ) );
+
+
+ // font-size
+ CSS1Expression aExpr( pExpr->GetType(), pExpr->GetString(),
+ pExpr->GetNumber() );
+ ParseCSS1_font_size( &aExpr, rItemSet, rPropInfo, rParser );
+ pExpr = pExpr->GetNext();
+
+ if( !pExpr )
+ return;
+
+ // [ '/' line-height ]?
+ if( '/' == pExpr->GetOp() )
+ {
+ // '/' line-height
+ aExpr.Set( pExpr->GetType(), pExpr->GetString(), pExpr->GetNumber() );
+ ParseCSS1_line_height( &aExpr, rItemSet, rPropInfo, rParser );
+
+ pExpr = pExpr->GetNext();
+ }
+
+ if( !pExpr || pExpr->GetOp() )
+ return;
+
+ // font-family
+ ParseCSS1_font_family( pExpr, rItemSet, rPropInfo, rParser );
+}
+
+/* */
+
+static void ParseCSS1_letter_spacing( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ switch( pExpr->GetType() )
+ {
+ case CSS1_LENGTH:
+ rItemSet.Put( SvxKerningItem( (short)pExpr->GetSLength(),
+ aItemIds.nKerning ) );
+ break;
+
+ case CSS1_PIXLENGTH:
+ {
+ long nPWidth = (long)pExpr->GetNumber();
+ long nPHeight = 0;
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+ rItemSet.Put( SvxKerningItem( (short)nPWidth, aItemIds.nKerning ) );
+ }
+ break;
+
+ case CSS1_NUMBER:
+ if( pExpr->GetNumber() == 0 )
+ {
+ // eigentlich unnoetig, aber wir sind ja tollerant
+ rItemSet.Put( SvxKerningItem( (short)0, aItemIds.nKerning ) );
+ }
+ break;
+
+ case CSS1_IDENT:
+ case CSS1_STRING: // Vorschtshalber auch MS-IE
+ if( pExpr->GetString().EqualsIgnoreCaseAscii(sCSS1_PV_normal) )
+ {
+ rItemSet.Put( SvxKerningItem( (short)0, aItemIds.nKerning ) );
+ }
+ break;
+ }
+}
+
+/* */
+
+static void ParseCSS1_text_decoration( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ BOOL bUnderline = FALSE;
+ BOOL bCrossedOut = FALSE;
+ BOOL bBlink = FALSE;
+ BOOL bBlinkOn;
+ FontUnderline eUnderline;
+ FontStrikeout eCrossedOut;
+
+ // der Wert kann zwei Werte enthalten! Und MS-IE auch Strings
+ while( pExpr && (pExpr->GetType() == CSS1_IDENT ||
+ pExpr->GetType() == CSS1_STRING) && !pExpr->GetOp() )
+ {
+ String aValue = pExpr->GetString();
+ aValue.ToLowerAscii();
+ BOOL bKnown = FALSE;
+
+ switch( aValue.GetChar( 0 ) )
+ {
+ case 'n':
+ if( aValue.EqualsAscii( sCSS1_PV_none ) )
+ {
+ bUnderline = TRUE;
+ eUnderline = UNDERLINE_NONE;
+
+ bCrossedOut = TRUE;
+ eCrossedOut = STRIKEOUT_NONE;
+
+ bBlink = TRUE;
+ bBlinkOn = FALSE;
+
+ bKnown = TRUE;
+ }
+ break;
+
+ case 'u':
+ if( aValue.EqualsAscii( sCSS1_PV_underline ) )
+ {
+ bUnderline = TRUE;
+ eUnderline = UNDERLINE_SINGLE;
+
+ bKnown = TRUE;
+ }
+ break;
+
+ case 'l':
+ if( aValue.EqualsAscii( sCSS1_PV_line_through ) )
+ {
+ bCrossedOut = TRUE;
+ eCrossedOut = STRIKEOUT_SINGLE;
+
+ bKnown = TRUE;
+ }
+ break;
+
+ case 'b':
+ if( aValue.EqualsAscii( sCSS1_PV_blink ) )
+ {
+ bBlink = TRUE;
+ bBlinkOn = TRUE;
+
+ bKnown = TRUE;
+ }
+ break;
+ }
+
+ if( !bKnown )
+ {
+ bUnderline = TRUE;
+ eUnderline = UNDERLINE_SINGLE;
+ }
+
+ pExpr = pExpr->GetNext();
+ }
+
+ if( bUnderline )
+ rItemSet.Put( SvxUnderlineItem( eUnderline, aItemIds.nUnderline ) );
+
+ if( bCrossedOut )
+ rItemSet.Put( SvxCrossedOutItem( eCrossedOut, aItemIds.nCrossedOut ) );
+
+ if( bBlink )
+ rItemSet.Put( SvxBlinkItem( bBlinkOn, aItemIds.nBlink ) );
+}
+
+/* */
+
+static void ParseCSS1_text_align( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ if( CSS1_IDENT==pExpr->GetType() ||
+ CSS1_STRING==pExpr->GetType() ) // MS-IE, mal wieder
+ {
+ USHORT nAdjust;
+ if( SvxCSS1Parser::GetEnum( aTextAlignTable, pExpr->GetString(),
+ nAdjust ) )
+ {
+ rItemSet.Put( SvxAdjustItem( (SvxAdjust)nAdjust,
+ aItemIds.nAdjust ) );
+ }
+ }
+}
+
+/* */
+
+static void ParseCSS1_text_indent( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ short nIndent = 0;
+ BOOL bSet = FALSE;
+ switch( pExpr->GetType() )
+ {
+ case CSS1_LENGTH:
+ nIndent = (short)pExpr->GetSLength();
+ bSet = TRUE;
+ break;
+ case CSS1_PIXLENGTH:
+ {
+ long nPWidth = (long)pExpr->GetNumber();
+ long nPHeight = 0;
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+ nIndent = (short)nPWidth;
+ bSet = TRUE;
+ }
+ break;
+ case CSS1_PERCENTAGE:
+ // koennen wir nicht
+ break;
+ }
+
+ if( bSet )
+ {
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( aItemIds.nLRSpace, FALSE,
+ &pItem ) )
+ {
+ SvxLRSpaceItem aLRItem( *((const SvxLRSpaceItem*)pItem) );
+ aLRItem.SetTxtFirstLineOfst( nIndent );
+ rItemSet.Put( aLRItem );
+ }
+ else
+ {
+ SvxLRSpaceItem aLRItem( aItemIds.nLRSpace );
+ aLRItem.SetTxtFirstLineOfst( nIndent );
+ rItemSet.Put( aLRItem );
+ }
+ rPropInfo.bTextIndent = TRUE;
+ }
+}
+
+/* */
+
+static void ParseCSS1_margin_left( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ long nLeft = 0;
+ BOOL bSet = FALSE;
+ switch( pExpr->GetType() )
+ {
+ case CSS1_LENGTH:
+ {
+ nLeft = pExpr->GetSLength();
+ bSet = TRUE;
+ }
+ break;
+ case CSS1_PIXLENGTH:
+ {
+ nLeft = (long)pExpr->GetNumber();
+ long nPHeight = 0;
+ SvxCSS1Parser::PixelToTwip( nLeft, nPHeight );
+ bSet = TRUE;
+ }
+ break;
+ case CSS1_PERCENTAGE:
+ // koennen wir nicht
+ break;
+ }
+
+ if( bSet )
+ {
+ rPropInfo.nLeftMargin = nLeft;
+ if( nLeft < 0 )
+ nLeft = 0;
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( aItemIds.nLRSpace, FALSE,
+ &pItem ) )
+ {
+ SvxLRSpaceItem aLRItem( *((const SvxLRSpaceItem*)pItem) );
+ aLRItem.SetTxtLeft( (USHORT)nLeft );
+ rItemSet.Put( aLRItem );
+ }
+ else
+ {
+ SvxLRSpaceItem aLRItem( aItemIds.nLRSpace );
+ aLRItem.SetTxtLeft( (USHORT)nLeft );
+ rItemSet.Put( aLRItem );
+ }
+ rPropInfo.bLeftMargin = TRUE;
+ }
+}
+
+/* */
+
+static void ParseCSS1_margin_right( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ long nRight = 0;
+ BOOL bSet = FALSE;
+ switch( pExpr->GetType() )
+ {
+ case CSS1_LENGTH:
+ {
+ nRight = pExpr->GetSLength();
+ bSet = TRUE;
+ }
+ break;
+ case CSS1_PIXLENGTH:
+ {
+ nRight = (long)pExpr->GetNumber();
+ long nPHeight = 0;
+ SvxCSS1Parser::PixelToTwip( nRight, nPHeight );
+ bSet = TRUE;
+ }
+ break;
+ case CSS1_PERCENTAGE:
+ // koennen wir nicht
+ break;
+ }
+
+ if( bSet )
+ {
+ rPropInfo.nRightMargin = nRight;
+ if( nRight < 0 )
+ nRight = 0;
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( aItemIds.nLRSpace, FALSE,
+ &pItem ) )
+ {
+ SvxLRSpaceItem aLRItem( *((const SvxLRSpaceItem*)pItem) );
+ aLRItem.SetRight( (USHORT)nRight );
+ rItemSet.Put( aLRItem );
+ }
+ else
+ {
+ SvxLRSpaceItem aLRItem( aItemIds.nLRSpace );
+ aLRItem.SetRight( (USHORT)nRight );
+ rItemSet.Put( aLRItem );
+ }
+ rPropInfo.bRightMargin = TRUE;
+ }
+}
+
+/* */
+
+static void ParseCSS1_margin_top( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ USHORT nUpper = 0;
+ BOOL bSet = FALSE;
+ switch( pExpr->GetType() )
+ {
+ case CSS1_LENGTH:
+ {
+ long nTmp = pExpr->GetSLength();
+ if( nTmp < 0 )
+ nTmp = 0;
+ nUpper = (USHORT)nTmp;
+ bSet = TRUE;
+ }
+ break;
+ case CSS1_PIXLENGTH:
+ {
+ long nPWidth = 0;
+ long nPHeight = (long)pExpr->GetNumber();
+ if( nPHeight < 0 )
+ nPHeight = 0;
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+ nUpper = (USHORT)nPHeight;
+ bSet = TRUE;
+ }
+ break;
+ case CSS1_PERCENTAGE:
+ // koennen wir nicht
+ break;
+ }
+
+ if( bSet )
+ {
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( aItemIds.nULSpace, FALSE,
+ &pItem ) )
+ {
+ SvxULSpaceItem aULItem( *((const SvxULSpaceItem*)pItem) );
+ aULItem.SetUpper( nUpper );
+ rItemSet.Put( aULItem );
+ }
+ else
+ {
+ SvxULSpaceItem aULItem( aItemIds.nULSpace );
+ aULItem.SetUpper( nUpper );
+ rItemSet.Put( aULItem );
+ }
+ rPropInfo.bTopMargin = TRUE;
+ }
+}
+
+/* */
+
+static void ParseCSS1_margin_bottom( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ USHORT nLower = 0;
+ BOOL bSet = FALSE;
+ switch( pExpr->GetType() )
+ {
+ case CSS1_LENGTH:
+ {
+ long nTmp = pExpr->GetSLength();
+ if( nTmp < 0 )
+ nTmp = 0;
+ nLower = (USHORT)nTmp;
+ bSet = TRUE;
+ }
+ break;
+ case CSS1_PIXLENGTH:
+ {
+ long nPWidth = 0;
+ long nPHeight = (long)pExpr->GetNumber();
+ if( nPHeight < 0 )
+ nPHeight = 0;
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+ nLower = (USHORT)nPHeight;
+ bSet = TRUE;
+ }
+ break;
+ case CSS1_PERCENTAGE:
+ // koennen wir nicht
+ break;
+ }
+
+ if( bSet )
+ {
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( aItemIds.nULSpace, FALSE,
+ &pItem ) )
+ {
+ SvxULSpaceItem aULItem( *((const SvxULSpaceItem*)pItem) );
+ aULItem.SetLower( nLower );
+ rItemSet.Put( aULItem );
+ }
+ else
+ {
+ SvxULSpaceItem aULItem( aItemIds.nULSpace );
+ aULItem.SetLower( nLower );
+ rItemSet.Put( aULItem );
+ }
+ rPropInfo.bBottomMargin = TRUE;
+ }
+}
+
+/* */
+
+static void ParseCSS1_margin( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ long nMargins[4] = { 0, 0, 0, 0 };
+ BOOL bSetMargins[4] = { FALSE, FALSE, FALSE, FALSE };
+
+ for( USHORT i=0; pExpr && i<4 && !pExpr->GetOp(); i++ )
+ {
+ BOOL bSetThis = FALSE;
+ long nMargin;
+
+ switch( pExpr->GetType() )
+ {
+ case CSS1_LENGTH:
+ {
+ nMargin = pExpr->GetSLength();
+ bSetThis = TRUE;
+ }
+ break;
+ case CSS1_PIXLENGTH:
+ {
+ long nPWidth = 0;
+ nMargin = (long)pExpr->GetNumber();
+ SvxCSS1Parser::PixelToTwip( nPWidth, nMargin );
+ bSetThis = TRUE;
+ }
+ break;
+ case CSS1_PERCENTAGE:
+ // koennen wir nicht
+ break;
+ }
+
+ if( bSetThis )
+ {
+ // 0 = top
+ // 1 = right
+ // 2 = bottom
+ // 3 = left
+ switch( i )
+ {
+ case 0:
+ nMargins[0] = nMargins[1] =nMargins[2] = nMargins[3] = nMargin;
+ bSetMargins[0] = bSetMargins[1] =
+ bSetMargins[2] = bSetMargins[3] = TRUE;
+ break;
+ case 1:
+ nMargins[1] = nMargins[3] = nMargin; // right + left
+ bSetMargins[1] = bSetMargins[3] = TRUE;
+ break;
+ case 2:
+ nMargins[2] = nMargin; // bottom
+ bSetMargins[2] = TRUE;
+ break;
+ case 3:
+ nMargins[3] = nMargin; // left
+ bSetMargins[3] = TRUE;
+ break;
+ }
+ }
+ pExpr = pExpr->GetNext();
+ }
+
+ if( bSetMargins[3] || bSetMargins[1] )
+ {
+ if( bSetMargins[3] )
+ {
+ rPropInfo.bLeftMargin = TRUE;
+ rPropInfo.nLeftMargin = nMargins[3];
+ if( nMargins[3] < 0 )
+ nMargins[3] = 0;
+ }
+ if( bSetMargins[1] )
+ {
+ rPropInfo.bRightMargin = TRUE;
+ rPropInfo.nRightMargin = nMargins[1];
+ if( nMargins[1] < 0 )
+ nMargins[1] = 0;
+ }
+
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( aItemIds.nLRSpace, FALSE,
+ &pItem ) )
+ {
+ SvxLRSpaceItem aLRItem( *((const SvxLRSpaceItem*)pItem) );
+ if( bSetMargins[3] )
+ aLRItem.SetLeft( (USHORT)nMargins[3] );
+ if( bSetMargins[1] )
+ aLRItem.SetRight( (USHORT)nMargins[1] );
+ rItemSet.Put( aLRItem );
+ }
+ else
+ {
+ SvxLRSpaceItem aLRItem( aItemIds.nLRSpace );
+ if( bSetMargins[3] )
+ aLRItem.SetLeft( (USHORT)nMargins[3] );
+ if( bSetMargins[1] )
+ aLRItem.SetRight( (USHORT)nMargins[1] );
+ rItemSet.Put( aLRItem );
+ }
+ }
+
+ if( bSetMargins[0] || bSetMargins[2] )
+ {
+ if( nMargins[0] < 0 )
+ nMargins[0] = 0;
+ if( nMargins[2] < 0 )
+ nMargins[2] = 0;
+
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( aItemIds.nULSpace, FALSE,
+ &pItem ) )
+ {
+ SvxULSpaceItem aULItem( *((const SvxULSpaceItem*)pItem) );
+ if( bSetMargins[0] )
+ aULItem.SetUpper( (USHORT)nMargins[0] );
+ if( bSetMargins[2] )
+ aULItem.SetLower( (USHORT)nMargins[2] );
+ rItemSet.Put( aULItem );
+ }
+ else
+ {
+ SvxULSpaceItem aULItem( aItemIds.nULSpace );
+ if( bSetMargins[0] )
+ aULItem.SetUpper( (USHORT)nMargins[0] );
+ if( bSetMargins[2] )
+ aULItem.SetLower( (USHORT)nMargins[2] );
+ rItemSet.Put( aULItem );
+ }
+
+ rPropInfo.bTopMargin |= bSetMargins[0];
+ rPropInfo.bBottomMargin |= bSetMargins[2];
+ }
+}
+
+/* */
+
+static BOOL ParseCSS1_padding_xxx( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser,
+ USHORT nWhichLine )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ BOOL bSet = FALSE;
+ USHORT nDist = 0;
+
+ switch( pExpr->GetType() )
+ {
+ case CSS1_LENGTH:
+ {
+ long nTmp = pExpr->GetSLength();
+ if( nTmp < 0 )
+ nTmp = 0;
+ else if( nTmp > USHRT_MAX-1 )
+ nTmp = USHRT_MAX-1;
+ nDist = (USHORT)nTmp;
+ bSet = TRUE;
+ }
+ break;
+ case CSS1_PIXLENGTH:
+ {
+ long nPWidth = (long)pExpr->GetNumber();
+ long nPHeight = 0;
+ if( nPWidth < 0 )
+ nPWidth = 0;
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+ if( nPWidth > USHRT_MAX-1 )
+ nPWidth = USHRT_MAX-1;
+ nDist = (USHORT)nPWidth;
+ bSet = TRUE;
+ }
+ break;
+ case CSS1_PERCENTAGE:
+ // koennen wir nicht
+ break;
+ }
+
+ if( bSet )
+ {
+ switch( nWhichLine )
+ {
+ case BOX_LINE_TOP: rPropInfo.nTopBorderDistance = nDist; break;
+ case BOX_LINE_BOTTOM: rPropInfo.nBottomBorderDistance = nDist;break;
+ case BOX_LINE_LEFT: rPropInfo.nLeftBorderDistance = nDist; break;
+ case BOX_LINE_RIGHT: rPropInfo.nRightBorderDistance = nDist; break;
+ }
+ }
+
+ return bSet;
+}
+
+/* */
+
+static void ParseCSS1_padding_top( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_padding_xxx( pExpr, rItemSet, rPropInfo, rParser, BOX_LINE_TOP );
+}
+
+static void ParseCSS1_padding_bottom( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_padding_xxx( pExpr, rItemSet, rPropInfo, rParser,
+ BOX_LINE_BOTTOM );
+}
+
+static void ParseCSS1_padding_left( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_padding_xxx( pExpr, rItemSet, rPropInfo, rParser, BOX_LINE_LEFT );
+}
+
+static void ParseCSS1_padding_right( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_padding_xxx( pExpr, rItemSet, rPropInfo, rParser,
+ BOX_LINE_RIGHT );
+}
+
+static void ParseCSS1_padding( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ USHORT n=0;
+ while( n<4 && pExpr && !pExpr->GetOp() )
+ {
+ USHORT nLine = n==0 || n==2 ? BOX_LINE_BOTTOM : BOX_LINE_LEFT;
+ if( ParseCSS1_padding_xxx( pExpr, rItemSet, rPropInfo, rParser,
+ nLine ) )
+ {
+ if( n==0 )
+ {
+ rPropInfo.nTopBorderDistance = rPropInfo.nBottomBorderDistance;
+ rPropInfo.nLeftBorderDistance = rPropInfo.nTopBorderDistance;
+ }
+ if( n <= 1 )
+ rPropInfo.nRightBorderDistance = rPropInfo.nLeftBorderDistance;
+ }
+
+ pExpr = pExpr->GetNext();
+ n++;
+ }
+}
+
+/* */
+
+static void ParseCSS1_border_xxx( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser,
+ USHORT nWhichLine, BOOL bAll )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ USHORT nWidth = USHRT_MAX; // die Linien-Dicke
+ USHORT nNWidth = 1; // benannte Linien-Dicke (und default)
+ CSS1BorderStyle eStyle = CSS1_BS_NONE; // Linien-Style
+ Color aColor;
+ BOOL bColor = FALSE;
+
+ while( pExpr && !pExpr->GetOp() )
+ {
+ switch( pExpr->GetType() )
+ {
+ case CSS1_RGB:
+ case CSS1_HEXCOLOR:
+ if( pExpr->GetColor( aColor ) )
+ bColor = TRUE;
+ break;
+
+ case CSS1_IDENT:
+ {
+ const String& rValue = pExpr->GetString();
+ USHORT nValue;
+ if( SvxCSS1Parser::GetEnum( aBorderWidthTable, rValue, nValue ) )
+ {
+ nNWidth = nValue;
+ }
+ else if( SvxCSS1Parser::GetEnum( aBorderStyleTable, rValue, nValue ) )
+ {
+ eStyle = (CSS1BorderStyle)nValue;
+ }
+ else if( pExpr->GetColor( aColor ) )
+ {
+ bColor = TRUE;
+ }
+ }
+ break;
+
+ case CSS1_LENGTH:
+ nWidth = (USHORT)pExpr->GetULength();
+ break;
+
+ case CSS1_PIXLENGTH:
+ {
+ BOOL bHori = nWhichLine == BOX_LINE_TOP ||
+ nWhichLine == BOX_LINE_BOTTOM;
+ // Ein Pixel wird zur Haarlinie (ist huebscher)
+ long nWidthL = (long)pExpr->GetNumber();
+ if( nWidthL > 1 )
+ {
+ long nPWidth = bHori ? 0 : nWidthL;
+ long nPHeight = bHori ? nWidthL : 0;
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+ nWidth = (USHORT)(bHori ? nPHeight : nPWidth);
+ }
+ else
+ nWidth = 1;
+ }
+ break;
+ }
+
+ pExpr = pExpr->GetNext();
+ }
+
+ for( USHORT i=0; i<4; i++ )
+ {
+ USHORT nLine;
+ switch( i )
+ {
+ case 0: nLine = BOX_LINE_TOP; break;
+ case 1: nLine = BOX_LINE_BOTTOM; break;
+ case 2: nLine = BOX_LINE_LEFT; break;
+ case 3: nLine = BOX_LINE_RIGHT; break;
+ }
+
+ if( bAll || nLine == nWhichLine )
+ {
+ SvxCSS1BorderInfo *pInfo = rPropInfo.GetBorderInfo( nLine );
+ pInfo->eStyle = eStyle;
+ pInfo->nAbsWidth = nWidth;
+ pInfo->nNamedWidth = nNWidth;
+ if( bColor )
+ pInfo->aColor = aColor;
+ }
+ }
+}
+
+static void ParseCSS1_border_xxx_width( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser,
+ USHORT nWhichLine )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ USHORT nWidth = USHRT_MAX; // die Linien-Dicke
+ USHORT nNWidth = 1; // benannte Linien-Dicke (und default)
+
+ switch( pExpr->GetType() )
+ {
+ case CSS1_IDENT:
+ {
+ USHORT nValue;
+ if( SvxCSS1Parser::GetEnum( aBorderWidthTable, pExpr->GetString(), nValue ) )
+ {
+ nNWidth = nValue;
+ }
+ }
+ break;
+
+ case CSS1_LENGTH:
+ nWidth = (USHORT)pExpr->GetULength();
+ break;
+
+ case CSS1_PIXLENGTH:
+ {
+ BOOL bHori = nWhichLine == BOX_LINE_TOP ||
+ nWhichLine == BOX_LINE_BOTTOM;
+ long nWidthL = (long)pExpr->GetNumber();
+ long nPWidth = bHori ? 0 : nWidthL;
+ long nPHeight = bHori ? nWidthL : 0;
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+ nWidth = (USHORT)(bHori ? nPHeight : nPWidth);
+ }
+ break;
+ }
+
+ SvxCSS1BorderInfo *pInfo = rPropInfo.GetBorderInfo( nWhichLine );
+ pInfo->nAbsWidth = nWidth;
+ pInfo->nNamedWidth = nNWidth;
+}
+
+/* */
+
+static void ParseCSS1_border_top_width( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_border_xxx_width( pExpr, rItemSet, rPropInfo, rParser, BOX_LINE_TOP );
+}
+
+static void ParseCSS1_border_right_width( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_border_xxx_width( pExpr, rItemSet, rPropInfo, rParser, BOX_LINE_RIGHT );
+}
+
+static void ParseCSS1_border_bottom_width( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_border_xxx_width( pExpr, rItemSet, rPropInfo, rParser, BOX_LINE_BOTTOM );
+}
+
+static void ParseCSS1_border_left_width( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_border_xxx_width( pExpr, rItemSet, rPropInfo, rParser, BOX_LINE_LEFT );
+}
+
+static void ParseCSS1_border_width( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ USHORT n=0;
+ while( n<4 && pExpr && !pExpr->GetOp() )
+ {
+ USHORT nLine = n==0 || n==2 ? BOX_LINE_BOTTOM : BOX_LINE_LEFT;
+ ParseCSS1_border_xxx_width( pExpr, rItemSet, rPropInfo, rParser, nLine );
+ rPropInfo.CopyBorderInfo( n, SVX_CSS1_BORDERINFO_WIDTH );
+
+ pExpr = pExpr->GetNext();
+ n++;
+ }
+}
+
+static void ParseCSS1_border_color( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ USHORT n=0;
+ while( n<4 && pExpr && !pExpr->GetOp() )
+ {
+ USHORT nLine = n==0 || n==2 ? BOX_LINE_BOTTOM : BOX_LINE_LEFT;
+ Color aColor;
+ switch( pExpr->GetType() )
+ {
+ case CSS1_RGB:
+ case CSS1_HEXCOLOR:
+ case CSS1_IDENT:
+ if( pExpr->GetColor( aColor ) )
+ rPropInfo.GetBorderInfo( nLine )->aColor = aColor;
+ break;
+ }
+ rPropInfo.CopyBorderInfo( n, SVX_CSS1_BORDERINFO_COLOR );
+
+ pExpr = pExpr->GetNext();
+ n++;
+ }
+}
+
+static void ParseCSS1_border_style( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ USHORT n=0;
+ while( n<4 && pExpr && !pExpr->GetOp() )
+ {
+ USHORT nLine = n==0 || n==2 ? BOX_LINE_BOTTOM : BOX_LINE_LEFT;
+ USHORT nValue;
+ if( CSS1_IDENT==pExpr->GetType() &&
+ SvxCSS1Parser::GetEnum( aBorderStyleTable, pExpr->GetString(),
+ nValue ) )
+ {
+ rPropInfo.GetBorderInfo( nLine )->eStyle = (CSS1BorderStyle)nValue;
+ }
+ rPropInfo.CopyBorderInfo( n, SVX_CSS1_BORDERINFO_STYLE );
+
+ pExpr = pExpr->GetNext();
+ n++;
+ }
+}
+
+
+static void ParseCSS1_border_top( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_border_xxx( pExpr, rItemSet, rPropInfo, rParser, BOX_LINE_TOP, FALSE );
+}
+
+static void ParseCSS1_border_right( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_border_xxx( pExpr, rItemSet, rPropInfo, rParser, BOX_LINE_RIGHT, FALSE );
+}
+
+static void ParseCSS1_border_bottom( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_border_xxx( pExpr, rItemSet, rPropInfo, rParser, BOX_LINE_BOTTOM, FALSE );
+}
+
+static void ParseCSS1_border_left( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_border_xxx( pExpr, rItemSet, rPropInfo, rParser, BOX_LINE_LEFT, FALSE );
+}
+
+static void ParseCSS1_border( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_border_xxx( pExpr, rItemSet, rPropInfo, rParser, 0, TRUE );
+}
+
+/* */
+
+static void ParseCSS1_float( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ if( CSS1_IDENT==pExpr->GetType() )
+ {
+ USHORT nFloat;
+ if( SvxCSS1Parser::GetEnum( aFloatTable, pExpr->GetString(), nFloat ) )
+ rPropInfo.eFloat = (SvxAdjust)nFloat;
+ }
+}
+
+
+/* */
+
+static void ParseCSS1_position( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ DBG_ASSERT( pExpr, "kein Ausdruck" );
+
+ if( CSS1_IDENT==pExpr->GetType() )
+ {
+ USHORT nPos;
+ if( SvxCSS1Parser::GetEnum( aPositionTable, pExpr->GetString(), nPos ) )
+ rPropInfo.ePosition = (SvxCSS1Position)nPos;
+ }
+}
+
+/* */
+
+static void ParseCSS1_length( const CSS1Expression *pExpr,
+ long& rLength,
+ SvxCSS1LengthType& rLengthType,
+ BOOL bHori )
+{
+ switch( pExpr->GetType() )
+ {
+ case CSS1_IDENT:
+ if( pExpr->GetString().EqualsIgnoreCaseAscii( sCSS1_PV_auto ) )
+ {
+ rLength = 0;
+ rLengthType = SVX_CSS1_LTYPE_AUTO;
+ }
+ break;
+
+ case CSS1_LENGTH:
+ rLength = pExpr->GetSLength();
+ rLengthType = SVX_CSS1_LTYPE_TWIP;
+ break;
+
+ case CSS1_PIXLENGTH:
+ case CSS1_NUMBER: // wegen Netscape und IE
+ {
+ long nWidthL = (long)pExpr->GetNumber();
+ long nPWidth = bHori ? 0 : nWidthL;
+ long nPHeight = bHori ? nWidthL : 0;
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+ rLength = (bHori ? nPHeight : nPWidth);
+ rLengthType = SVX_CSS1_LTYPE_TWIP;
+ }
+ break;
+
+ case CSS1_PERCENTAGE:
+ rLength = (long)pExpr->GetNumber();
+ if( rLength > 100 )
+ rLength = 100;
+ rLengthType = SVX_CSS1_LTYPE_PERCENTAGE;
+ break;
+ }
+}
+
+/* */
+
+static void ParseCSS1_width( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_length( pExpr, rPropInfo.nWidth, rPropInfo.eWidthType, TRUE );
+}
+
+static void ParseCSS1_height( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_length( pExpr, rPropInfo.nHeight, rPropInfo.eHeightType, FALSE );
+}
+
+static void ParseCSS1_left( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_length( pExpr, rPropInfo.nLeft, rPropInfo.eLeftType, TRUE );
+}
+
+static void ParseCSS1_top( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_length( pExpr, rPropInfo.nTop, rPropInfo.eTopType, FALSE );
+}
+
+/* */
+
+// Feature: PrintExt
+static void ParseCSS1_size( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ USHORT n=0;
+ while( n<2 && pExpr && !pExpr->GetOp() )
+ {
+ switch( pExpr->GetType() )
+ {
+ case CSS1_IDENT:
+ {
+ USHORT nValue;
+ if( SvxCSS1Parser::GetEnum( aSizeTable, pExpr->GetString(),
+ nValue ) )
+ {
+ rPropInfo.eSizeType = (SvxCSS1SizeType)nValue;
+ }
+ }
+ break;
+
+ case CSS1_LENGTH:
+ rPropInfo.nHeight = pExpr->GetSLength();
+ if( n==0 )
+ rPropInfo.nWidth = rPropInfo.nHeight;
+ rPropInfo.eSizeType = SVX_CSS1_STYPE_TWIP;
+ break;
+
+ case CSS1_PIXLENGTH:
+ {
+ long nPHeight = (long)pExpr->GetNumber();
+ long nPWidth = n==0 ? nPHeight : 0;
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+ rPropInfo.nHeight = nPHeight;
+ if( n==0 )
+ rPropInfo.nWidth = nPWidth;
+ rPropInfo.eSizeType = SVX_CSS1_STYPE_TWIP;
+ }
+ break;
+ }
+
+ pExpr = pExpr->GetNext();
+ n++;
+ }
+}
+
+// /Feature: PrintExt
+
+/* */
+
+// Feature: PrintExt
+
+static void ParseCSS1_page_break_xxx( const CSS1Expression *pExpr,
+ SvxCSS1PageBreak& rPBreak )
+{
+ if( CSS1_IDENT == pExpr->GetType() )
+ {
+ USHORT nValue;
+ if( SvxCSS1Parser::GetEnum( aPageBreakTable, pExpr->GetString(),
+ nValue ) )
+ {
+ rPBreak = (SvxCSS1PageBreak)nValue;
+ }
+ }
+}
+
+static void ParseCSS1_page_break_before( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_page_break_xxx( pExpr, rPropInfo.ePageBreakBefore );
+}
+
+static void ParseCSS1_page_break_after( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ ParseCSS1_page_break_xxx( pExpr, rPropInfo.ePageBreakAfter );
+}
+
+static void ParseCSS1_page_break_inside( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ SvxCSS1PageBreak eBreak;
+ ParseCSS1_page_break_xxx( pExpr, eBreak );
+
+ BOOL bSetSplit = FALSE, bSplit = TRUE;
+ switch( eBreak )
+ {
+ case SVX_CSS1_PBREAK_AUTO:
+ bSetSplit = TRUE;
+ break;
+ case SVX_CSS1_PBREAK_AVOID:
+ bSplit = FALSE;
+ bSetSplit = TRUE;
+ break;
+ }
+
+ if( bSetSplit )
+ rItemSet.Put( SvxFmtSplitItem( bSplit, aItemIds.nFmtSplit ) );
+}
+
+static void ParseCSS1_widows( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ if( CSS1_NUMBER == pExpr->GetType() )
+ {
+ BYTE nVal = pExpr->GetNumber() <= 255
+ ? (BYTE)pExpr->GetNumber()
+ : 255;
+ SvxWidowsItem aWidowsItem( nVal, aItemIds.nWidows );
+ rItemSet.Put( aWidowsItem );
+ }
+}
+
+static void ParseCSS1_orphans( const CSS1Expression *pExpr,
+ SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo,
+ const SvxCSS1Parser& rParser )
+{
+ if( CSS1_NUMBER == pExpr->GetType() )
+ {
+ BYTE nVal = pExpr->GetNumber() <= 255
+ ? (BYTE)pExpr->GetNumber()
+ : 255;
+ SvxOrphansItem aOrphansItem( nVal, aItemIds.nOrphans );
+ rItemSet.Put( aOrphansItem );
+ }
+}
+// /Feature: PrintExt
+
+/* */
+
+// die Zuordung Property zu parsender Funktion
+struct CSS1PropEntry
+{
+ union
+ {
+ const sal_Char *sName;
+ String *pName;
+ };
+ FnParseCSS1Prop pFunc;
+};
+
+#define CSS1_PROP_ENTRY(p) \
+ { sCSS1_P_##p, ParseCSS1_##p }
+
+
+// die Tabelle mit den Zuordnungen
+static CSS1PropEntry __FAR_DATA aCSS1PropFnTab[] =
+{
+ CSS1_PROP_ENTRY(background),
+ CSS1_PROP_ENTRY(background_color),
+ CSS1_PROP_ENTRY(border_top_width),
+ CSS1_PROP_ENTRY(border_right_width),
+ CSS1_PROP_ENTRY(border_bottom_width),
+ CSS1_PROP_ENTRY(border_left_width),
+ CSS1_PROP_ENTRY(border_width),
+ CSS1_PROP_ENTRY(border_color),
+ CSS1_PROP_ENTRY(border_style),
+ CSS1_PROP_ENTRY(border_top),
+ CSS1_PROP_ENTRY(border_right),
+ CSS1_PROP_ENTRY(border_bottom),
+ CSS1_PROP_ENTRY(border_left),
+ CSS1_PROP_ENTRY(border),
+ CSS1_PROP_ENTRY(color),
+ CSS1_PROP_ENTRY(float),
+ CSS1_PROP_ENTRY(font_size),
+ CSS1_PROP_ENTRY(font_family),
+ CSS1_PROP_ENTRY(font_style),
+ CSS1_PROP_ENTRY(font_variant),
+ CSS1_PROP_ENTRY(font_weight),
+ CSS1_PROP_ENTRY(letter_spacing),
+ CSS1_PROP_ENTRY(line_height),
+ CSS1_PROP_ENTRY(font),
+ CSS1_PROP_ENTRY(text_align),
+ CSS1_PROP_ENTRY(text_decoration),
+ CSS1_PROP_ENTRY(text_indent),
+ CSS1_PROP_ENTRY(margin_left),
+ CSS1_PROP_ENTRY(margin_right),
+ CSS1_PROP_ENTRY(margin_top),
+ CSS1_PROP_ENTRY(margin_bottom),
+ CSS1_PROP_ENTRY(margin),
+ CSS1_PROP_ENTRY(padding_top),
+ CSS1_PROP_ENTRY(padding_bottom),
+ CSS1_PROP_ENTRY(padding_left),
+ CSS1_PROP_ENTRY(padding_right),
+ CSS1_PROP_ENTRY(padding),
+ CSS1_PROP_ENTRY(position),
+ CSS1_PROP_ENTRY(left),
+ CSS1_PROP_ENTRY(top),
+ CSS1_PROP_ENTRY(width),
+ CSS1_PROP_ENTRY(height),
+// Feature: PrintExt
+ CSS1_PROP_ENTRY(size),
+ CSS1_PROP_ENTRY(page_break_before),
+ CSS1_PROP_ENTRY(page_break_after),
+ CSS1_PROP_ENTRY(page_break_inside),
+ CSS1_PROP_ENTRY(widows),
+ CSS1_PROP_ENTRY(orphans)
+// /Feature: PrintExt
+};
+
+/* */
+
+static int __FAR_DATA bSortedPropFns = FALSE;
+
+extern "C"
+{
+static int
+#if defined( WNT )
+ __cdecl
+#endif
+#if defined( ICC )
+ _Optlink
+#endif
+ CSS1PropEntryCompare( const void *pFirst, const void *pSecond)
+{
+ int nRet;
+ if( ((CSS1PropEntry*)pFirst)->pFunc )
+ {
+ if( ((CSS1PropEntry*)pSecond)->pFunc )
+ nRet = strcmp( ((CSS1PropEntry*)pFirst)->sName ,
+ ((CSS1PropEntry*)pSecond)->sName );
+ else
+ nRet = -1 * ((CSS1PropEntry*)pSecond)->pName->CompareToAscii(
+ ((CSS1PropEntry*)pFirst)->sName );
+ }
+ else
+ {
+ if( ((CSS1PropEntry*)pSecond)->pFunc )
+ nRet = ((CSS1PropEntry*)pFirst)->pName->CompareToAscii(
+ ((CSS1PropEntry*)pSecond)->sName );
+ else
+ nRet = ((CSS1PropEntry*)pFirst)->pName->CompareTo(
+ *((CSS1PropEntry*)pSecond)->pName );
+ }
+
+ return nRet;
+}
+}
+
+void SvxCSS1Parser::ParseProperty( const String& rProperty,
+ const CSS1Expression *pExpr )
+{
+ DBG_ASSERT( pItemSet, "DeclarationParsed() ohne ItemSet" );
+
+ if( !bSortedPropFns )
+ {
+ qsort( (void*) aCSS1PropFnTab,
+ sizeof( aCSS1PropFnTab ) / sizeof( CSS1PropEntry ),
+ sizeof( CSS1PropEntry ),
+ CSS1PropEntryCompare );
+ bSortedPropFns = TRUE;
+ }
+
+ String aTmp( rProperty );
+ aTmp.ToLowerAscii();
+
+ CSS1PropEntry aSrch;
+ aSrch.pName = &aTmp;
+
+ void* pFound;
+ if( 0 != ( pFound = bsearch( (char *) &aSrch,
+ (void*) aCSS1PropFnTab,
+ sizeof( aCSS1PropFnTab ) / sizeof( CSS1PropEntry ),
+ sizeof( CSS1PropEntry ),
+ CSS1PropEntryCompare )))
+ {
+ (((CSS1PropEntry*)pFound)->pFunc)( pExpr, *pItemSet, *pPropInfo, *this );
+ }
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/svxcss1.cxx,v 1.1.1.1 2000-09-18 17:14:56 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.70 2000/09/18 16:04:47 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.69 2000/06/26 09:52:38 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.68 2000/04/10 12:20:57 mib
+ unicode
+
+ Revision 1.67 2000/03/03 15:21:01 os
+ StarView remainders removed
+
+ Revision 1.66 2000/02/11 14:37:41 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.65 1999/09/17 12:14:44 mib
+ support of multiple and non system text encodings
+
+ Revision 1.64 1999/06/11 14:44:24 MIB
+ Individuelle Umrandungs-Abstaende
+
+
+ Rev 1.63 11 Jun 1999 16:44:24 MIB
+ Individuelle Umrandungs-Abstaende
+
+ Rev 1.62 15 Apr 1999 13:44:52 MIB
+ background-color
+
+ Rev 1.61 26 Jan 1999 14:44:58 MIB
+ #60875#: Beim Umrechnen von Lanegen in Twip Rundung beachten
+
+ Rev 1.60 14 Jan 1999 13:28:28 MIB
+ #60776#: Festen statt minimalen Zeilen-Abstand einstellen
+
+ Rev 1.59 06 Nov 1998 15:33:36 MIB
+ #59043#: negative Absatz-Einzuege
+
+ Rev 1.58 19 Oct 1998 11:07:00 MIB
+ #58088#: top/left/width/height: Zahlen ohne Einheit wie Pixel behandeln
+
+ Rev 1.57 09 Oct 1998 16:02:50 MIB
+ #57813#: Memory-Leak beseitigt
+
+ Rev 1.56 08 Sep 1998 16:22:52 MIB
+ #56120#: margin-Property kommt jetzt auch mit nicht unterstuetzten Einheiten zurecht
+
+ Rev 1.55 13 Jul 1998 09:20:26 MIB
+ #50966#: Fonts optional ignorieren
+
+ Rev 1.54 21 Apr 1998 13:47:24 MIB
+ fix: Keine Bookmark fuer abs-pos Objekte mit ID einfuegen
+
+ Rev 1.53 15 Apr 1998 14:50:48 MIB
+ Zwei-seitige Printing-Extensions
+
+ Rev 1.52 03 Apr 1998 15:11:08 MIB
+ CSS1-Padding
+
+ Rev 1.51 31 Mar 1998 11:14:44 MIB
+ 1 Pixel berite Linie wird Haarlinie
+
+ Rev 1.50 25 Mar 1998 12:10:58 MIB
+ unneotige defines weg
+
+ Rev 1.49 20 Mar 1998 10:42:42 MIB
+ Font-Listen in Font-Attributen
+
+ Rev 1.48 14 Mar 1998 19:01:06 MIB
+ Absolute-Positioning freigeschaltet
+
+ Rev 1.47 13 Mar 1998 09:24:30 MIB
+ Item-Ids nur definieren, wenn hintids.hxx nicht includet wird
+
+ Rev 1.46 20 Feb 1998 19:02:22 MA
+ header
+
+ Rev 1.45 02 Dec 1997 09:16:20 MA
+ includes
+
+ Rev 1.44 20 Oct 1997 09:50:24 MIB
+ Nur fuer absolute positioning benoetigten Code groesstenteils auskommentiert
+
+ Rev 1.43 17 Oct 1997 13:18:40 MIB
+ SvxXSS1Parser um fremde Which-Ids erweiterbar
+
+ Rev 1.42 10 Oct 1997 10:15:56 MIB
+ CSS1-Printing-Ext: @page,page-break-before/after (noch kein left/right)
+
+ Rev 1.41 12 Sep 1997 11:16:00 OS
+ ITEMID_* definiert
+
+ Rev 1.40 12 Aug 1997 13:47:08 OS
+ Header-Umstellung
+
+ Rev 1.39 11 Aug 1997 14:05:30 OM
+ Headerfile-Umstellung
+
+ Rev 1.38 31 Jul 1997 10:42:24 MIB
+ absolute poaitioning auch fuer id/class
+
+ Rev 1.37 30 Jul 1997 12:29:00 MIB
+ absolute positioning
+
+ Rev 1.36 02 Jul 1997 17:13:46 MIB
+ neue CSS1-Border-Properties
+
+ Rev 1.35 01 Jul 1997 14:10:56 MIB
+ font-Property an W3C-Recommandation/Netscape 4.0 angepasst
+
+ Rev 1.34 13 Jun 1997 17:07:56 MIB
+ Ein par MS-IE Syntax-Goodies nachgebaut
+
+ Rev 1.33 13 Jun 1997 11:56:24 MIB
+ CLASS und ID CSS1-Optionen auswerten
+
+ Rev 1.32 06 May 1997 11:06:24 TRI
+ ICC brauchte Optlink
+
+ Rev 1.31 23 Apr 1997 12:31:14 MIB
+ fix: font-family: 'sans-serif' wie font-family: sans-serif behandeln
+
+ Rev 1.30 22 Apr 1997 17:44:50 MIB
+ fix #39160#: In font-family auch zusammengestzte Namen ohne Haekchen parsen
+
+ Rev 1.29 17 Apr 1997 19:31:28 MIB
+ memory leak beseitigt
+
+ Rev 1.28 10 Mar 1997 16:57:50 MIB
+ fix #37356#: negative Absatz-Abstaende auf 0 abbilden
+
+ Rev 1.27 28 Jan 1997 11:10:34 MIB
+ float parsen
+
+ Rev 1.26 20 Dec 1996 14:00:44 MIB
+ Warnings
+
+ Rev 1.25 17 Dec 1996 10:41:06 MIB
+ neue Linienstiele ausnutzen
+
+ Rev 1.24 12 Dec 1996 16:55:54 MIB
+ Tabellen mit doppelter Umrandung
+
+ Rev 1.23 25 Nov 1996 16:55:44 MIB
+ fix #32725#: Oberer Absatz-Abstand wurde ignoriert
+
+ Rev 1.22 29 Oct 1996 15:35:28 MIB
+ Flags fuer gesetzte/nicht-gesetzte Attribut-Werte
+
+ Rev 1.21 23 Oct 1996 19:49:06 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.20 22 Oct 1996 10:28:38 MIB
+ Umstellung von CSS1 auf Klein-Buchstaben (u.a. wegen Amaya)
+
+ Rev 1.19 21 Oct 1996 08:58:18 MIB
+ bug fix: boder: solid ging nicht
+
+ Rev 1.18 16 Oct 1996 09:59:22 NF
+ includes...
+
+ Rev 1.17 15 Oct 1996 13:42:36 MIB
+ letter-spacing/Laufweite imp./exp.
+
+ Rev 1.16 14 Oct 1996 18:49:14 MIB
+ Am Box-Item Abstand zur Umrandung setzen
+
+ Rev 1.15 14 Oct 1996 16:42:50 MIB
+ Import CSS1-Umrandung (border)
+
+ Rev 1.14 13 Oct 1996 12:14:16 MIB
+ first-letter-Pseudo-Element/DropCaps
+
+ Rev 1.13 11 Oct 1996 16:49:04 MIB
+ font-variant und andere Anpassungen an Draft vom 11.09.96
+
+ Rev 1.12 20 Sep 1996 18:00:48 MIB
+ Itemset-Optimierungen
+
+ Rev 1.11 19 Aug 1996 18:21:02 MIB
+ Anpassungen an Draft vom 26.Juli 96
+
+ Rev 1.10 14 Aug 1996 16:22:24 MIB
+ gcc und msvc: statt *aStr nicht aStr[0] sondern aStr[(USHORT)0]
+
+ Rev 1.9 13 Aug 1996 21:11:44 sdo
+ GCC
+
+ Rev 1.8 12 Aug 1996 10:31:16 MIB
+ Anpassungen an draft vom 26.7.96, Background-Property, Scannen von Farben verb.
+
+ Rev 1.7 07 Aug 1996 13:21:30 MIB
+ Import von color und text-decoration
+
+ Rev 1.6 10 Jul 1996 15:42:04 MIB
+ Includes fuer precompiled header gerichtet
+
+ Rev 1.5 20 Jun 1996 12:34:16 MIB
+ font-style: oblique nun wie italic
+
+ Rev 1.4 18 Jun 1996 12:19:28 MIB
+ margin[-[left|right|top|bottom]]?, text-indent
+
+ Rev 1.3 17 Jun 1996 16:00:56 MIB
+ Erweiterung um Font-Properties
+
+ Rev 1.2 16 Jun 1996 14:33:36 MIB
+ Loops ausgealgert
+
+ Rev 1.1 14 Jun 1996 20:13:58 MIB
+ Properties koennen mehrere Items erzeugen, font-style-Property
+
+ Rev 1.0 14 Jun 1996 17:43:12 MIB
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/svxcss1.hxx b/sw/source/filter/html/svxcss1.hxx
new file mode 100644
index 000000000000..85863f5bf82f
--- /dev/null
+++ b/sw/source/filter/html/svxcss1.hxx
@@ -0,0 +1,462 @@
+/*************************************************************************
+ *
+ * $RCSfile: svxcss1.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SVXCSS1_HXX
+#define _SVXCSS1_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+
+#ifndef _SVX_SVXENUM_HXX //autogen
+#include <svx/svxenum.hxx>
+#endif
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_USHORTS
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _RTL_TEXTENC_H
+#include <rtl/textenc.h>
+#endif
+
+#ifndef _PARCSS1_HXX
+#include "parcss1.hxx"
+#endif
+
+class SfxItemPool;
+class SvxBoxItem;
+class FontList;
+
+/* */
+
+enum SvxCSS1Position
+{
+ SVX_CSS1_POS_NONE, // nichts angegeben
+ SVX_CSS1_POS_STATIC, // normal
+ SVX_CSS1_POS_ABSOLUTE, // absolut
+ SVX_CSS1_POS_RELATIVE, // relativ
+ SVX_CSS1_POS_END
+};
+
+
+enum SvxCSS1LengthType
+{
+ SVX_CSS1_LTYPE_NONE, // nichts angegeben
+ SVX_CSS1_LTYPE_AUTO, // automatisch
+ SVX_CSS1_LTYPE_TWIP, // twip
+ SVX_CSS1_LTYPE_PERCENTAGE, // %-Angabe
+ SVX_CSS1_LTYPE_END
+};
+
+// Feature: PrintExt
+enum SvxCSS1SizeType
+{
+ SVX_CSS1_STYPE_NONE, // nichts angegeben
+ SVX_CSS1_STYPE_AUTO, // automatisch
+ SVX_CSS1_STYPE_TWIP, // twip
+ SVX_CSS1_STYPE_LANDSCAPE, // Landscape
+ SVX_CSS1_STYPE_PORTRAIT, // Landscape
+ SVX_CSS1_STYPE_END
+};
+
+enum SvxCSS1PageBreak
+{
+ SVX_CSS1_PBREAK_NONE, // nichts angegeben
+ SVX_CSS1_PBREAK_AUTO, // automatisch
+ SVX_CSS1_PBREAK_ALWAYS, // immer
+ SVX_CSS1_PBREAK_AVOID, // nie
+ SVX_CSS1_PBREAK_LEFT, // naechste Seite ist eine linke
+ SVX_CSS1_PBREAK_RIGHT, // naechste Seite ist eine rechte
+ SVX_CSS1_PBREAK_END
+};
+
+// /Feature: PrintExt
+
+/* */
+
+struct CSS1PropertyEnum
+{
+ const sal_Char *pName; // Wert einer Property
+ sal_uInt16 nEnum; // und der dazugehoerige Wert eines Enums
+};
+
+
+/* */
+
+class SvxBorderLine;
+
+SV_DECL_PTRARR_DEL( CSS1Selectors, CSS1Selector*, 1, 1 )
+
+#define SVX_CSS1_BORDERINFO_WIDTH 1
+#define SVX_CSS1_BORDERINFO_COLOR 2
+#define SVX_CSS1_BORDERINFO_STYLE 4
+
+struct SvxCSS1BorderInfo;
+class SvxCSS1PropertyInfo
+{
+ SvxCSS1BorderInfo *aBorderInfos[4];
+
+ void DestroyBorderInfos();
+
+public:
+
+ String aId; // ID fuer Bookmarks, Rahmen etc.
+
+ sal_Bool bTopMargin : 1;
+ sal_Bool bBottomMargin : 1;
+
+ sal_Bool bLeftMargin : 1;
+ sal_Bool bRightMargin : 1;
+ sal_Bool bTextIndent : 1;
+
+ SvxAdjust eFloat;
+
+ SvxCSS1Position ePosition;
+
+ sal_uInt16 nTopBorderDistance;
+ sal_uInt16 nBottomBorderDistance;
+ sal_uInt16 nLeftBorderDistance;
+ sal_uInt16 nRightBorderDistance;
+
+ long nLeft, nTop;
+ long nWidth, nHeight;
+ long nLeftMargin, nRightMargin;
+
+ SvxCSS1LengthType eLeftType, eTopType;
+ SvxCSS1LengthType eWidthType, eHeightType;
+
+// Feature: PrintExt
+ SvxCSS1SizeType eSizeType;
+
+ SvxCSS1PageBreak ePageBreakBefore;
+ SvxCSS1PageBreak ePageBreakAfter;
+// /Feature: PrintExt
+
+ SvxCSS1PropertyInfo();
+ SvxCSS1PropertyInfo( const SvxCSS1PropertyInfo& rProp );
+ ~SvxCSS1PropertyInfo();
+
+ void Merge( const SvxCSS1PropertyInfo& rProp );
+
+ void Clear();
+
+ SvxCSS1BorderInfo *GetBorderInfo( sal_uInt16 nLine, sal_Bool bCreate=sal_True );
+ void CopyBorderInfo( sal_uInt16 nSrcLine, sal_uInt16 nDstLine, sal_uInt16 nWhat );
+ void CopyBorderInfo( sal_uInt16 nCount, sal_uInt16 nWhat );
+
+ void SetBoxItem( SfxItemSet& rItemSet, sal_uInt16 nMinBorderDist,
+ const SvxBoxItem* pDflt=0, sal_Bool bTable = sal_False );
+};
+
+class SvxCSS1MapEntry
+{
+ String aKey;
+ SfxItemSet aItemSet;
+ SvxCSS1PropertyInfo aPropInfo;
+
+public:
+
+ SvxCSS1MapEntry( SfxItemPool& rPool, const sal_uInt16 *pWhichMap ) :
+ aItemSet( rPool, pWhichMap )
+ {}
+
+ SvxCSS1MapEntry( const String& rKey, const SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rProp );
+
+
+ const SfxItemSet& GetItemSet() const { return aItemSet; }
+ SfxItemSet& GetItemSet() { return aItemSet; }
+
+ const SvxCSS1PropertyInfo& GetPropertyInfo() const { return aPropInfo; }
+ SvxCSS1PropertyInfo& GetPropertyInfo() { return aPropInfo; }
+
+ const String& GetKey() const { return aKey; }
+ // TODO: ToUpperAscii -> ???
+ void SetKey( const String& rKey ) { aKey = rKey; aKey.ToUpperAscii(); }
+
+ friend sal_Bool operator==( const SvxCSS1MapEntry& rE1,
+ const SvxCSS1MapEntry& rE2 );
+ friend sal_Bool operator<( const SvxCSS1MapEntry& rE1,
+ const SvxCSS1MapEntry& rE2 );
+};
+
+typedef SvxCSS1MapEntry *SvxCSS1MapEntryPtr;
+SV_DECL_PTRARR_SORT_DEL( SvxCSS1Map, SvxCSS1MapEntryPtr, 5, 5 )
+
+
+#if !defined( MAC ) && !defined( ICC ) && !defined( BLC )
+inline sal_Bool operator==( const SvxCSS1MapEntry& rE1, const SvxCSS1MapEntry& rE2 )
+{
+ return rE1.aKey==rE2.aKey;
+}
+
+inline sal_Bool operator<( const SvxCSS1MapEntry& rE1, const SvxCSS1MapEntry& rE2 )
+{
+ return rE1.aKey<rE2.aKey;
+}
+#endif
+
+// Diese Klasse bereitet den Output des CSS1-Parsers auf,
+// indem die CSS1-Properties in SvxItem(Set)s umgewandelt werden.
+// Ausserdem werden die Selektoren samt zugehoeriger Item-Set
+// gespeichert.
+// Ein abgeleiteter Parser kann dies fuer einzelne Selektoren unterdruecken,
+// indem er die Methode StyleParsed ueberlaed.
+
+class SvxCSS1Parser : public CSS1Parser
+{
+ CSS1Selectors aSelectors; // Liste der "offenen" Selectoren
+
+ SvxCSS1Map aIds;
+ SvxCSS1Map aClasses;
+ SvxCSS1Map aPages;
+ SvxCSS1Map aTags;
+
+ SfxItemSet *pSheetItemSet; // der Item-Set fuer Style-Sheets
+ SfxItemSet *pItemSet; // der aktuelle Item-Set
+ SvxCSS1MapEntry *pSearchEntry;
+
+ SvxCSS1PropertyInfo *pSheetPropInfo;
+ SvxCSS1PropertyInfo *pPropInfo;
+
+ sal_uInt16 nMinFixLineSpace; // Mindest-Abstand fuer festen Zeilenabstand
+
+ rtl_TextEncoding eDfltEnc;
+
+ sal_Bool bIgnoreFontFamily;
+
+ void ParseProperty( const String& rProperty,
+ const CSS1Expression *pExpr );
+
+ SvUShorts aWhichMap; // Which-Map des Parser
+
+protected:
+
+ // Diese Methode wird fuer jeden Selektor mit dem zugehoerigen
+ // Item-Set aufgerufen. Fuer einen Selektor koennen mehrere
+ // Aufrufe erfolgen.
+ // wenn sal_True zuruckgegeben wird, wird der Item-Set bzw. der
+ // Selektor nicht mehr gespeichert!
+ // Der ItemSet darf entsprechend modifiziert werden!
+ // Die Implementierung dieser Methode gibt sal_False zurueck.
+ virtual sal_Bool StyleParsed( const CSS1Selector *pSelector,
+ SfxItemSet& rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo );
+
+ // Diese Methode wird aufgerufen, wenn ein Selektor geparst wurde
+ // Wenn bFirst gesetzt ist, wird der Inhalt von aItemSet in alle
+ // zuletzt angelegten Styles kopiert.
+ // Diese Methode sollte in abgleiteten Parsern nicht mehr
+ // ueberladen werden!
+ virtual sal_Bool SelectorParsed( const CSS1Selector *pSelector,
+ sal_Bool bFirst );
+
+ // Diese Methode wird fuer jede geparste Property aufgerufen
+ // sie fuegt das Item in den ItemSet 'pItemSet' ein
+ // Sie sollte in abgeleiteten Parsern nicht mehr ueberladen werden!
+ virtual sal_Bool DeclarationParsed( const String& rProperty,
+ const CSS1Expression *pExpr );
+
+public:
+
+
+ SvxCSS1Parser( SfxItemPool& rPool,
+ sal_uInt16 nMinFixLineSp,
+ sal_uInt16 *pWhichIds=0, sal_uInt16 nWhichIds=0 );
+ virtual ~SvxCSS1Parser();
+
+ sal_Bool IsIgnoreFontFamily() const { return bIgnoreFontFamily; }
+ void SetIgnoreFontFamily( sal_Bool bSet ) { bIgnoreFontFamily = bSet; }
+
+ // Parsen eines Style-Sheets. Fuer jeden gefundenen Selektor
+ // wird StyleParsed mit dem entsprechenem Item-Set aufgerufen
+ virtual sal_Bool ParseStyleSheet( const String& rIn );
+
+ // Parsen einer Style-Option. Hier wird einfach nur der Item-Set
+ // gefuellt.
+ sal_Bool ParseStyleOption( const String& rIn, SfxItemSet& rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo );
+
+ // Umwandeln eines Strings in den Wert eines Enums
+ static sal_Bool GetEnum( const CSS1PropertyEnum *pPropTable,
+ const String& rValue, sal_uInt16 &rEnum );
+
+ // Pixel in Twips wandeln
+ static void PixelToTwip( long &nWidth, long &nHeight );
+
+ // Die Breite einer Umrandung einstellen
+ static void SetBorderWidth( SvxBorderLine& aBorderLine, sal_uInt16 nWidth,
+ sal_Bool bDouble, sal_Bool bTable=sal_False );
+
+ // Die Font-Hoehe fuer eine bestimmte Font-Groesse (0-6) ermitteln
+ virtual sal_uInt32 GetFontHeight( sal_uInt16 nSize ) const;
+
+ virtual const FontList *GetFontList() const;
+
+ const sal_uInt16 *GetWhichMap() const { return aWhichMap.GetData(); }
+
+ SvxCSS1MapEntry *GetMapEntry( const String& rKey,
+ const SvxCSS1Map& rMap ) const;
+
+ void InsertMapEntry( const String& rKey, const SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rProp, SvxCSS1Map& rMap );
+
+ void InsertId( const String& rId, const SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rProp );
+
+ inline SvxCSS1MapEntry *GetId( const String& rId ) const;
+
+ void InsertClass( const String& rClass, const SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rProp );
+
+ inline SvxCSS1MapEntry *GetClass( const String& rClass ) const;
+
+ inline void InsertPage( const String& rPage, sal_Bool bPseudo,
+ const SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rProp );
+
+ inline SvxCSS1MapEntry *GetPage( const String& rPage, sal_Bool bPseudo ) const;
+
+ inline SvxCSS1MapEntry *GetPage( sal_uInt16 i ) const { return aPages[i]; }
+ sal_uInt16 GetPageCount() const { return aPages.Count(); }
+
+ void InsertTag( const String& rTag, const SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rProp );
+
+ inline SvxCSS1MapEntry *GetTag( const String& rTag ) const;
+
+ void MergeStyles( const SfxItemSet& rSrcSet,
+ const SvxCSS1PropertyInfo& rSrcInfo,
+ SfxItemSet& rTargetSet,
+ SvxCSS1PropertyInfo& rTargetInfo,
+ sal_Bool bSmart );
+
+ sal_uInt16 GetMinFixLineSpace() const { return nMinFixLineSpace; }
+
+ virtual void SetDfltEncoding( rtl_TextEncoding eEnc );
+ rtl_TextEncoding GetDfltEncoding() const { return eDfltEnc; }
+};
+
+inline void SvxCSS1Parser::InsertId( const String& rId,
+ const SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rProp )
+{
+ InsertMapEntry( rId, rItemSet, rProp, aIds );
+}
+
+inline SvxCSS1MapEntry *SvxCSS1Parser::GetId( const String& rId ) const
+{
+ return GetMapEntry( rId, aIds );
+}
+
+inline void SvxCSS1Parser::InsertClass( const String& rClass,
+ const SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rProp )
+{
+ InsertMapEntry( rClass, rItemSet, rProp, aClasses );
+}
+
+inline SvxCSS1MapEntry *SvxCSS1Parser::GetClass( const String& rClass ) const
+{
+ return GetMapEntry( rClass, aClasses );
+}
+
+inline void SvxCSS1Parser::InsertPage( const String& rPage,
+ sal_Bool bPseudo,
+ const SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rProp )
+{
+ String aKey( rPage );
+ if( bPseudo )
+ aKey.Insert( ':', 0 );
+ InsertMapEntry( aKey, rItemSet, rProp, aPages );
+}
+
+inline SvxCSS1MapEntry *SvxCSS1Parser::GetPage( const String& rPage,
+ sal_Bool bPseudo ) const
+{
+ String aKey( rPage );
+ if( bPseudo )
+ aKey.Insert( ':', 0 );
+ return GetMapEntry( aKey, aPages );
+}
+
+inline void SvxCSS1Parser::InsertTag( const String& rTag,
+ const SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rProp )
+{
+ InsertMapEntry( rTag, rItemSet, rProp, aTags );
+}
+
+inline SvxCSS1MapEntry *SvxCSS1Parser::GetTag( const String& rTag ) const
+{
+ return GetMapEntry( rTag, aTags );
+}
+
+
+#endif
+
+
diff --git a/sw/source/filter/html/swcss1.hxx b/sw/source/filter/html/swcss1.hxx
new file mode 100644
index 000000000000..386045d04c1b
--- /dev/null
+++ b/sw/source/filter/html/swcss1.hxx
@@ -0,0 +1,257 @@
+/*************************************************************************
+ *
+ * $RCSfile: swcss1.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWCSS1_HXX
+#define _SWCSS1_HXX
+
+#ifndef _POOLFMT_HXX
+#include "poolfmt.hxx"
+#endif
+
+#include "svxcss1.hxx"
+
+class SwDoc;
+class SwFmt;
+class SwCharFmt;
+class SwTxtFmtColl;
+class SvxBrushItem;
+class SwFmtDrop;
+class SwPageDesc;
+
+// Dieser Header seiht zwar harmlos aus, included aber eben doch
+// ganz unauffaellig das ein oder andere! Andererseits wird diese
+// Klasse recht selten benoetigt. Deshalb ein eigener Header.
+
+
+class SwCSS1Parser : public SvxCSS1Parser
+{
+ SwDoc *pDoc;
+
+ ULONG aFontHeights[7];
+
+ USHORT nDropCapCnt;
+
+ BOOL bIsNewDoc : 1;
+
+ BOOL bBodyBGColorSet : 1;
+ BOOL bBodyBackgroundSet : 1;
+ BOOL bBodyTextSet : 1;
+ BOOL bBodyLinkSet : 1;
+ BOOL bBodyVLinkSet : 1;
+
+ BOOL bSetFirstPageDesc : 1;
+ BOOL bSetRightPageDesc : 1;
+
+ BOOL bTableHeaderTxtCollSet : 1;
+ BOOL bTableTxtCollSet : 1;
+
+ BOOL bLinkCharFmtsSet : 1;
+
+ // die Vorlagen fuer DL anlegen
+ SwTxtFmtColl* GetDefListTxtFmtColl( USHORT nCollId, USHORT nDeep );
+
+ const SwPageDesc* GetPageDesc( USHORT nPoolId, BOOL bCreate );
+
+ void SetTableTxtColl( BOOL bHeader );
+ void SetLinkCharFmts();
+
+protected:
+ virtual BOOL StyleParsed( const CSS1Selector *pSelector,
+ SfxItemSet& rItemSet,
+ SvxCSS1PropertyInfo& rPropInfo );
+public:
+ SwCSS1Parser( SwDoc *pDoc, ULONG aFHeight[7], BOOL bNewDoc );
+ virtual ~SwCSS1Parser();
+
+ virtual BOOL ParseStyleSheet( const String& rIn );
+
+ // Die Font-Hoehe fuer eine bestimmte Font-Groesse (0-6) ermitteln
+ virtual ULONG GetFontHeight( USHORT nSize ) const;
+
+ // Die aktuelle Font-Liste holen (auch 0 ist erlaubt)
+ virtual const FontList *GetFontList() const;
+
+ // das Zeichen-Format zu einem Token und einer ggf leeren Klasse
+ // ermitteln
+ SwCharFmt* GetChrFmt( USHORT nToken, const String& rClass ) const;
+
+ // eine TextFmtColl zu einer Pool-Id ermitteln
+ SwTxtFmtColl *GetTxtFmtColl( USHORT nTxtColl, const String& rClass );
+
+ // This methods do the same as the one of SwDoc, but change the
+ // encoding if required.
+ SwTxtFmtColl *GetTxtCollFromPool( USHORT nPoolId ) const;
+ SwCharFmt *GetCharFmtFromPool( USHORT nPoolId ) const;
+
+ // Die linke oder rechte Seiten-Vorlage holen. In Dokumenten mit nur
+ // einer Vorlage gibt es nur eine rechtee Seite.
+ // Ansonsten ist die rechte Seite die HTML-Poolvorlage und die linke
+ // eine Benutzter-Vorlage, die on-demand angelegt wird, wenn
+ // bCreate gesetzt ist.
+ SwPageDesc* GetMasterPageDesc();
+ inline const SwPageDesc* GetFirstPageDesc( BOOL bCreate=FALSE );
+ inline const SwPageDesc* GetRightPageDesc( BOOL bCreate=FALSE );
+ inline const SwPageDesc* GetLeftPageDesc( BOOL bCreate=FALSE );
+
+ // Attribute an der HTML-Seitenvorlage setzen (gesetzte Attribute
+ // werden aus dem Item-Set geloescht ). Wird fuer's BODY-Tag
+ // aufgerufen.
+ void SetPageDescAttrs( const SvxBrushItem *pBrush,
+ SfxItemSet *pItemSet=0 );
+
+ void ChgPageDesc( const SwPageDesc *pPageDesc,
+ const SwPageDesc& rNewPageDesc );
+
+ // Wird fuer @page aufgerufen.
+ void SetPageDescAttrs( const SwPageDesc *pPageDesc, SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rPropInfo );
+
+ // Fuellen eines DropCap-Attributs
+ void FillDropCap( SwFmtDrop& rDrop, SfxItemSet& rItemSet,
+ const String *pName=0 );
+
+ BOOL SetFmtBreak( SfxItemSet& rItemSet,
+ const SvxCSS1PropertyInfo& rPropInfo );
+
+
+ static void AddClassName( String& rFmtName, const String& rClass );
+
+ static inline void AddFirstLetterExt( String& rFmtName );
+
+ static BOOL MayBePositioned( const SvxCSS1PropertyInfo& rPropInfo,
+ BOOL bAutoWidth=FALSE );
+
+ BOOL IsBodyBGColorSet() const { return bBodyBGColorSet; }
+ BOOL IsBodyBackgroundSet() const { return bBodyBackgroundSet; }
+ BOOL IsBodyTextSet() const { return bBodyTextSet; }
+ BOOL IsBodyLinkSet() const { return bBodyLinkSet; }
+ BOOL IsBodyVLinkSet() const { return bBodyVLinkSet; }
+
+ BOOL IsSetFirstPageDesc() const { return bSetFirstPageDesc; }
+ BOOL IsSetRightPageDesc() const { return bSetRightPageDesc; }
+
+ void SetBodyBGColorSet() { bBodyBGColorSet = TRUE; }
+ void SetBodyBackgroundSet() { bBodyBackgroundSet = TRUE; }
+ void SetBodyTextSet() { bBodyTextSet = TRUE; }
+ void SetBodyLinkSet() { bBodyLinkSet = TRUE; }
+ void SetBodyVLinkSet() { bBodyVLinkSet = TRUE; }
+
+ const SvxBrushItem& GetPageDescBackground() const;
+
+ inline void SetTHTagStyles();
+ inline void SetTDTagStyles();
+ inline void SetATagStyles();
+ inline void SetDelayedStyles();
+
+ virtual void SetDfltEncoding( rtl_TextEncoding eEnc );
+};
+
+
+inline void SwCSS1Parser::AddFirstLetterExt( String& rFmtName )
+{
+ rFmtName.AppendAscii( ".FL", 3 ); // first letter
+}
+
+inline const SwPageDesc* SwCSS1Parser::GetFirstPageDesc( BOOL bCreate )
+{
+ return GetPageDesc( RES_POOLPAGE_FIRST, bCreate );
+}
+
+inline const SwPageDesc* SwCSS1Parser::GetRightPageDesc( BOOL bCreate )
+{
+ return GetPageDesc( RES_POOLPAGE_RIGHT, bCreate );
+}
+
+inline const SwPageDesc* SwCSS1Parser::GetLeftPageDesc( BOOL bCreate )
+{
+ return GetPageDesc( RES_POOLPAGE_LEFT, bCreate );
+}
+
+inline void SwCSS1Parser::SetTHTagStyles()
+{
+ if( !bTableHeaderTxtCollSet )
+ SetTableTxtColl( TRUE );
+}
+
+inline void SwCSS1Parser::SetTDTagStyles()
+{
+ if( !bTableTxtCollSet )
+ SetTableTxtColl( FALSE );
+}
+
+
+inline void SwCSS1Parser::SetATagStyles()
+{
+ if( !bLinkCharFmtsSet )
+ SetLinkCharFmts();
+}
+
+inline void SwCSS1Parser::SetDelayedStyles()
+{
+ SetTHTagStyles();
+ SetTDTagStyles();
+ SetATagStyles();
+}
+
+
+#endif
+
+
diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx
new file mode 100644
index 000000000000..767de5bd214e
--- /dev/null
+++ b/sw/source/filter/html/swhtml.cxx
@@ -0,0 +1,5646 @@
+/*************************************************************************
+ *
+ * $RCSfile: swhtml.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PRODUCT
+#include <stdlib.h>
+#endif
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#define _SVSTDARR_STRINGS
+#include <svtools/svstdarr.hxx>
+
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _IMAP_HXX //autogen
+#include <svtools/imap.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _HTMLKYWD_HXX
+#include <svtools/htmlkywd.hxx>
+#endif
+#ifndef _CTRLTOOL_HXX
+#include <svtools/ctrltool.hxx>
+#endif
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SFX_INIMGR_HXX
+#include <sfx2/inimgr.hxx>
+#endif
+#ifndef _FSETOBJSH_HXX //autogen
+#include <sfx2/fsetobsh.hxx>
+#endif
+#ifndef _SFX_FCONTNR_HXX //autogen
+#include <sfx2/fcontnr.hxx>
+#endif
+#ifndef _SFXDOCINF_HXX //autogen
+#include <sfx2/docinf.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _OFA_HTMLCFG_HXX //autogen
+#include <offmgr/htmlcfg.hxx>
+#endif
+
+#ifndef _SVXLINKMGR_HXX
+#include <svx/linkmgr.hxx>
+#endif
+#ifndef _SVX_KERNITEM_HXX //autogen
+#include <svx/kernitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_ESCPITEM_HXX //autogen
+#include <svx/escpitem.hxx>
+#endif
+#ifndef _SVX_BLNKITEM_HXX //autogen
+#include <svx/blnkitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_PROTITEM_HXX //autogen
+#include <svx/protitem.hxx>
+#endif
+#ifndef _SVX_FLSTITEM_HXX
+#include <svx/flstitem.hxx>
+#endif
+
+
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _CHARATR_HXX
+#include <charatr.hxx>
+#endif
+#ifndef _FMTFLD_HXX //autogen
+#include <fmtfld.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTHBSH_HXX //autogen
+#include <fmthbsh.hxx>
+#endif
+#ifndef _TXTFLD_HXX //autogen
+#include <txtfld.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FCHRFMT_HXX //autogen
+#include <fchrfmt.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _DOCSTAT_HXX //autogen
+#include <docstat.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx> // ...Percent()
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _BOOKMRK_HXX
+#include <bookmrk.hxx> // fuer SwBookmark ...
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _EDITSH_HXX
+#include <editsh.hxx> // fuer Start/EndAction
+#endif
+#ifndef _HINTS_HXX
+#include <hints.hxx> // fuer SwObjectDying
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _SWCSS1_HXX
+#include <swcss1.hxx>
+#endif
+#ifndef _HTMLVSH_HXX
+#include <htmlvsh.hxx>
+#endif
+#ifndef _FLTINI_HXX
+#include <fltini.hxx>
+#endif
+#ifndef _HTMLTBL_HXX
+#include <htmltbl.hxx>
+#endif
+#ifndef _HTMLNUM_HXX
+#include <htmlnum.hxx>
+#endif
+#ifndef _SWHTML_HXX
+#include <swhtml.hxx>
+#endif
+#ifndef _LINKENUM_HXX
+#include <linkenum.hxx>
+#endif
+
+#ifndef _STATSTR_HRC
+#include <statstr.hrc> // ResId fuer Statusleiste
+#endif
+#ifndef _SWSWERROR_H
+#include <swerror.h>
+#endif
+
+#define FONTSIZE_MASK 7
+#define FONTCOLOR_MASK (1<<15)
+#define FONT_MASK (1<<14)
+
+#define HTML_ESC_PROP 80
+#define HTML_ESC_SUPER DFLT_ESC_SUPER
+#define HTML_ESC_SUB DFLT_ESC_SUB
+
+#define HTML_SPTYPE_NONE 0
+#define HTML_SPTYPE_BLOCK 1
+#define HTML_SPTYPE_HORI 2
+#define HTML_SPTYPE_VERT 3
+
+#ifndef TOOLS_CONSTASCII_STRINGPARAM
+#define TOOLS_CONSTASCII_STRINGPARAM( constAsciiStr ) constAsciiStr, sizeof( constAsciiStr )-1
+#endif
+
+// <P ALIGN=xxx>, <Hn ALIGN=xxx>, <TD ALIGN=xxx> usw.
+HTMLOptionEnum __FAR_DATA aHTMLPAlignTable[] =
+{
+ { sHTML_AL_left, SVX_ADJUST_LEFT },
+ { sHTML_AL_center, SVX_ADJUST_CENTER },
+ { sHTML_AL_middle, SVX_ADJUST_CENTER }, // Netscape
+ { sHTML_AL_right, SVX_ADJUST_RIGHT },
+ { sHTML_AL_justify, SVX_ADJUST_BLOCK },
+ { sHTML_AL_char, SVX_ADJUST_LEFT },
+ { 0, 0 }
+};
+
+// <SPACER TYPE=...>
+static HTMLOptionEnum __FAR_DATA aHTMLSpacerTypeTable[] =
+{
+ { sHTML_SPTYPE_block, HTML_SPTYPE_BLOCK },
+ { sHTML_SPTYPE_horizontal, HTML_SPTYPE_HORI },
+ { sHTML_SPTYPE_vertical, HTML_SPTYPE_VERT },
+ { 0, 0 }
+};
+
+SV_IMPL_PTRARR( _HTMLAttrs, _HTMLAttrPtr )
+
+HTMLReader::HTMLReader()
+{
+ bTmplBrowseMode = TRUE;
+
+ String sTemplate(
+ String::CreateFromAscii(TOOLS_CONSTASCII_STRINGPARAM("internal")) );
+ sTemplate += INET_PATH_TOKEN;
+ sTemplate.AppendAscii( TOOLS_CONSTASCII_STRINGPARAM("html") );
+#ifndef MAC_WITHOUT_EXT
+ sTemplate.AppendAscii( TOOLS_CONSTASCII_STRINGPARAM(".vor") );
+#endif
+
+ if( SFX_INIMANAGER()->SearchFile( sTemplate, SFX_KEY_TEMPLATE_PATH ))
+ SetTemplateName( sTemplate );
+#ifndef PRODUCT
+ else
+ ASSERT( !this,
+ "Die html.vor befindet sich nicht mehr im definierten Directory!");
+#endif
+}
+
+int HTMLReader::SetStrmStgPtr()
+{
+ ASSERT( pMedium, "Wo ist das Medium??" );
+
+ if( pMedium->IsRemote() || !pMedium->IsStorage() )
+ {
+ pStrm = pMedium->GetInStream();
+ return TRUE;
+ }
+ return FALSE;
+
+}
+
+ // Aufruf fuer die allg. Reader-Schnittstelle
+ULONG HTMLReader::Read( SwDoc &rDoc,SwPaM &rPam, const String & rName )
+{
+ if( !pStrm )
+ {
+ ASSERT( pStrm, "HTML-Read ohne Stream" );
+ return ERR_SWG_READ_ERROR;
+ }
+
+ if( !bInsertMode )
+ {
+ Reader::SetNoOutlineNum( rDoc );
+ Reader::ResetFrmFmts( rDoc );
+
+ rDoc.SetBrowseMode( TRUE );
+
+ // Die HTML-Seitenvorlage setzen, wenn des kein HTML-Dokument ist,
+ // sonst ist sie schon gesetzt.
+ if( !rDoc.IsHTMLMode() )
+ {
+ rDoc.Insert( rPam, SwFmtPageDesc(
+ rDoc.GetPageDescFromPool( RES_POOLPAGE_HTML )) );
+ }
+ }
+
+ // damit keiner das Doc klaut!
+ rDoc.AddLink();
+ ULONG nRet = 0;
+ SvParserRef xParser = new SwHTMLParser( &rDoc, rPam, *pStrm,
+ rName, !bInsertMode, pMedium,
+ IsReadUTF8() );
+
+ SvParserState eState = xParser->CallParser();
+
+ if( SVPAR_PENDING == eState )
+ pStrm->ResetError();
+ else if( SVPAR_ACCEPTED != eState )
+ {
+ String sErr( String::CreateFromInt32((sal_Int32)xParser->GetLineNr()));
+ sErr += ',';
+ sErr += String::CreateFromInt32((sal_Int32)xParser->GetLinePos());
+
+ // den Stream als Fehlernummer Transporter benutzen
+ nRet = *new StringErrorInfo( ERR_FORMAT_ROWCOL, sErr,
+ ERRCODE_BUTTON_OK | ERRCODE_MSG_ERROR );
+ }
+
+
+ return nRet;
+}
+
+
+/* */
+
+SwHTMLParser::SwHTMLParser( SwDoc* pD, const SwPaM& rCrsr, SvStream& rIn,
+ const String& rPath, int bReadNewDoc,
+ SfxMedium* pMed, BOOL bReadUTF8 )
+ : SfxHTMLParser( rIn, bReadNewDoc, pMed ),
+ SwClient( 0 ),
+ aPathToFile( rPath ),
+ pDoc( pD ),
+ pTable(0), pFormImpl( 0 ), pMarquee( 0 ),
+ pField( 0 ),
+ pCSS1Parser( 0 ), pNumRuleInfo( new SwHTMLNumRuleInfo ),
+ eParaAdjust( SVX_ADJUST_END ),
+ nScriptStartLineNr( 0 ),
+ nBaseFontStMin( 0 ), nFontStMin( 0 ),
+ nDefListDeep( 0 ),
+ nFontStHeadStart( 0 ),
+ nSBModuleCnt( 0 ),
+ nMissingImgMaps( 0 ),
+ nOpenParaToken( 0 ),
+ pImageMap( 0 ),
+ pImageMaps( 0 ),
+ pSttNdIdx( 0 ),
+ pPendStack( 0 ),
+ nParaCnt( 5 ),
+ pActionViewShell( 0 ),
+ pAppletImpl( 0 ),
+ pFootEndNoteImpl( 0 ),
+ nContextStMin( 0 ),
+ nContextStAttrMin( 0 ),
+ bInFloatingFrame( FALSE ),
+ bInNoEmbed( FALSE ),
+ bInField( FALSE ), bInTitle( FALSE ),
+ bInFootEndNoteAnchor( FALSE ), bInFootEndNoteSymbol( FALSE ),
+ bNoParSpace( FALSE ), bDocInitalized( FALSE ), bCallNextToken( FALSE ),
+ bDataAvailableLinkSet( FALSE ),
+ bIgnoreRawData( FALSE ),
+ bUpdateDocStat( FALSE ),
+ bFixSelectWidth( FALSE ),
+ bFixSelectHeight( FALSE ),
+ bTextArea( FALSE ), bSelect( FALSE ),
+ bSetModEnabled( FALSE ),
+ eJumpTo( JUMPTO_NONE )
+#ifndef PRODUCT
+ ,nContinue( 0 )
+#endif
+{
+
+ bUpperSpace = bViewCreated = bChkJumpMark =
+ bSetCrsr = FALSE;
+
+ eScriptLang = HTML_SL_UNKNOWN;
+ bAnyStarBasic = TRUE;
+
+ pPam = new SwPaM( *rCrsr.GetPoint() );
+ memset( &aAttrTab, 0, sizeof( _HTMLAttrTable ));
+
+ // Die Font-Groessen 1-7 aus der INI-Datei lesen
+ OfaHtmlOptions* pHtmlOptions = OFF_APP()->GetHtmlOptions();
+ aFontHeights[0] = pHtmlOptions->GetFontSize( 0 ) * 20;
+ aFontHeights[1] = pHtmlOptions->GetFontSize( 1 ) * 20;
+ aFontHeights[2] = pHtmlOptions->GetFontSize( 2 ) * 20;
+ aFontHeights[3] = pHtmlOptions->GetFontSize( 3 ) * 20;
+ aFontHeights[4] = pHtmlOptions->GetFontSize( 4 ) * 20;
+ aFontHeights[5] = pHtmlOptions->GetFontSize( 5 ) * 20;
+ aFontHeights[6] = pHtmlOptions->GetFontSize( 6 ) * 20;
+
+ bKeepUnknown = pHtmlOptions->IsImportUnknown();
+
+ pDoc->SetDefault( SvxFontHeightItem(aFontHeights[2]) );
+
+ // Waehrend des Imports in den HTML-Modus schalten, damit die
+ // richrigen Vorlagen angelegt werden
+ bOldIsHTMLMode = pDoc->IsHTMLMode();
+ pDoc->SetHTMLMode( TRUE );
+
+ pCSS1Parser = new SwCSS1Parser( pDoc, aFontHeights, IsNewDoc() );
+ pCSS1Parser->SetIgnoreFontFamily( pHtmlOptions->IsIgnoreFontFamily() );
+
+ if( bReadUTF8 )
+ {
+ SetSrcEncoding( RTL_TEXTENCODING_UTF8 );
+ }
+ else
+ {
+ SwDocShell *pDocSh = pDoc->GetDocShell();
+ SvKeyValueIterator *pHeaderAttrs =
+ pDocSh->GetHeaderAttributes();
+ if( pHeaderAttrs )
+ SetEncodingByHTTPHeader( pHeaderAttrs );
+ }
+ pCSS1Parser->SetDfltEncoding( gsl_getSystemTextEncoding() );
+ sBaseURL = INetURLObject::GetBaseURL();
+
+ // Timer nur bei ganz normalen Dokumenten aufsetzen!
+ SwDocShell* pDocSh = pDoc->GetDocShell();
+ if( pDocSh )
+ {
+ if( SFX_CREATE_MODE_INTERNAL == pDocSh->GetCreateMode() ||
+ SFX_CREATE_MODE_PREVIEW == pDocSh->GetCreateMode() )
+ bViewCreated = TRUE; // dann nicht, synchron laden
+
+ // es ist ein Sprungziel vorgegeben.
+
+ if( pMed )
+ {
+ sJmpMark = pMed->GetURLObject().GetMark();
+ if( sJmpMark.Len() )
+ {
+ eJumpTo = JUMPTO_MARK;
+ String sCmp;
+ xub_StrLen nLastPos, nPos = 0;
+ while( STRING_NOTFOUND != ( nLastPos =
+ sJmpMark.Search( cMarkSeperator, nPos + 1 )) )
+ nPos = nLastPos;
+
+ if( nPos && ( sCmp = sJmpMark.Copy( nPos + 1 ) ).
+ EraseAllChars().Len() )
+ {
+ sCmp.ToLowerAscii();
+ if( sCmp.EqualsAscii( pMarkToRegion ) )
+ eJumpTo = JUMPTO_REGION;
+ else if( sCmp.EqualsAscii( pMarkToTable ) )
+ eJumpTo = JUMPTO_TABLE;
+ else if( sCmp.EqualsAscii( pMarkToGraphic ) )
+ eJumpTo = JUMPTO_GRAPHIC;
+ else if( sCmp.EqualsAscii( pMarkToOutline ) ||
+ sCmp.EqualsAscii( pMarkToText ) ||
+ sCmp.EqualsAscii( pMarkToFrame ) )
+ eJumpTo = JUMPTO_NONE; // das ist nichts gueltiges!
+ else
+ // ansonsten ist das ein normaler (Book)Mark
+ nPos = STRING_LEN;
+ }
+ else
+ nPos = STRING_LEN;
+
+ sJmpMark.Erase( nPos );
+ if( !sJmpMark.Len() )
+ eJumpTo = JUMPTO_NONE;
+ }
+ }
+ }
+}
+
+__EXPORT SwHTMLParser::~SwHTMLParser()
+{
+#ifndef PRODUCT
+ ASSERT( !nContinue, "DTOR im Continue - Das geht schief!!!" );
+#endif
+ BOOL bAsync = pDoc->IsInLoadAsynchron();
+ pDoc->SetInLoadAsynchron( FALSE );
+ pDoc->SetHTMLMode( bOldIsHTMLMode );
+
+ if( pDoc->GetDocShell() && aLoadEnv.Is() )
+ {
+ // Den Link vor dem DocumentDetected austragen, damit
+ // wir waehrend des DocumentDetected nicht noch irgendwelche
+ // Daten bekommen, die zum nochmaligen Aufruf von
+ // DocumentDetected (in NextToken) fuehren.
+ ((SfxLoadEnvironment*)&aLoadEnv)->SetDataAvailableLink( Link() );
+ bDataAvailableLinkSet = FALSE;
+
+ // wenn noch nichts entschieden ist, dann aber hier
+ if( !bDocInitalized )
+ {
+ ErrCode eError = ((SfxLoadEnvironment*)&aLoadEnv)->
+ DocumentDetected( pDoc->GetDocShell(), 0 );
+ }
+ }
+
+ // das DocumentDetected kann ggfs. die DocShells loeschen, darum nochmals
+ // abfragen
+ if( pDoc->GetDocShell() )
+ {
+ // Gelinkte Bereiche updaten
+ USHORT nLinkMode = pDoc->GetLinkUpdMode();
+ if( nLinkMode != NEVER && bAsync &&
+ SFX_CREATE_MODE_INTERNAL!=pDoc->GetDocShell()->GetCreateMode() )
+ pDoc->GetLinkManager().UpdateAllLinks( nLinkMode == MANUAL,
+ TRUE, FALSE );
+
+ if( pDoc->GetDocShell()->IsLoading() )
+ pDoc->GetDocShell()->StartLoadFinishedTimer();
+ }
+
+ delete pSttNdIdx;
+
+ if( aSetAttrTab.Count() )
+ {
+ ASSERT( !aSetAttrTab.Count(),"Es stehen noch Attribute auf dem Stack" );
+ aSetAttrTab.DeleteAndDestroy( 0, aSetAttrTab.Count() );
+ }
+
+ delete pPam;
+ delete pCSS1Parser;
+ delete pNumRuleInfo;
+ DeleteFormImpl();
+ DeleteFootEndNoteImpl();
+
+ ASSERT( !pTable, "Es existiert noch eine offene Tabelle" );
+ delete pImageMaps;
+ //delete pTable;
+
+ ASSERT( !pPendStack,
+ "SwHTMLParser::~SwHTMLParser: Hier sollte es keinen Pending-Stack mehr geben" );
+ while( pPendStack )
+ {
+ SwPendingStack* pTmp = pPendStack;
+ pPendStack = pPendStack->pNext;
+ delete pTmp->pData;
+ delete pTmp;
+ }
+
+ if( !pDoc->RemoveLink() )
+ {
+ // keiner will mehr das Doc haben, also weg damit
+ delete pDoc;
+ }
+}
+
+SvParserState __EXPORT SwHTMLParser::CallParser()
+{
+ // einen temporaeren Index anlegen, auf Pos 0 so wird er nicht bewegt!
+ pSttNdIdx = new SwNodeIndex( pDoc->GetNodes() );
+ if( !IsNewDoc() ) // in ein Dokument einfuegen ?
+ {
+ const SwPosition* pPos = pPam->GetPoint();
+ SwTxtNode* pSttNd = pPos->nNode.GetNode().GetTxtNode();
+
+ pDoc->SplitNode( *pPos );
+
+ *pSttNdIdx = pPos->nNode.GetIndex()-1;
+ pDoc->SplitNode( *pPos );
+
+ pPam->Move( fnMoveBackward );
+ pDoc->SetTxtFmtColl( *pPam,
+ pCSS1Parser->GetTxtCollFromPool( RES_POOLCOLL_STANDARD ));
+ }
+
+ if( GetMedium() )
+ {
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == GetMedium()->GetItemSet()->GetItemState(
+ SID_LOADENVIRONMENT, FALSE, &pItem ))
+ {
+ aLoadEnv = &((SfxRefItem*)pItem)->GetValue();
+ }
+
+ if( !bViewCreated && aLoadEnv.Is() )
+ {
+ ((SfxLoadEnvironment*)&aLoadEnv)->
+ SetDataAvailableLink( GetAsynchCallLink() );
+ bDataAvailableLinkSet = TRUE;
+ }
+ else
+ bViewCreated = TRUE;
+ }
+
+ // Laufbalken anzeigen
+ else if( !GetMedium() || !GetMedium()->IsRemote() )
+ {
+ rInput.Seek(STREAM_SEEK_TO_END);
+ rInput.ResetError();
+ ::StartProgress( STR_STATSTR_W4WREAD, 0, rInput.Tell(),
+ pDoc->GetDocShell() );
+ rInput.Seek(STREAM_SEEK_TO_BEGIN);
+ rInput.ResetError();
+ }
+
+ SwPageDesc& rDesc = pDoc->_GetPageDesc( 0 );
+ rDesc.Add( this );
+
+ SvParserState eRet = HTMLParser::CallParser();
+
+ return eRet;
+}
+
+void __EXPORT SwHTMLParser::Continue( int nToken )
+{
+#ifndef PRODUCT
+ ASSERT( !nContinue, "Continue im Continue - Das sollte doch nicht sein, oder?" );
+ nContinue++;
+#endif
+
+ // Wenn der Import (vom SFX) abgebrochen wurde, wird ein Fehler
+ // gesetzt aber trotzdem noch weiter gemacht, damit vernuenftig
+ // aufgeraeumt wird.
+ ASSERT( SVPAR_ERROR!=eState,
+ "SwHTMLParser::Continue: bereits ein Fehler gesetzt" );
+ if( pDoc->GetDocShell() && pDoc->GetDocShell()->IsAbortingImport() )
+ eState = SVPAR_ERROR;
+
+ // Die ViewShell vom Dokument holen, merken und als aktuelle setzen.
+ ViewShell *pInitVSh = CallStartAction();
+
+ if( SVPAR_ERROR != eState && !pInitVSh && GetMedium() && !bViewCreated )
+ {
+ // Beim ersten Aufruf erstmal returnen, Doc anzeigen
+ // und auf Timer Callback warten.
+ // An dieser Stelle wurde im CallParser gerade mal ein Zeichen
+ // gelesen und ein SaveState(0) gerufen.
+ eState = SVPAR_PENDING;
+ bViewCreated = TRUE;
+ pDoc->SetInLoadAsynchron( TRUE );
+
+#ifndef PRODUCT
+ nContinue--;
+#endif
+
+ return;
+ }
+
+ bSetModEnabled = FALSE;
+ if( pDoc->GetDocShell() &&
+ 0 != (bSetModEnabled = pDoc->GetDocShell()->IsEnableSetModified()) )
+ {
+ pDoc->GetDocShell()->EnableSetModified( FALSE );
+ }
+
+ // waehrend des einlesens kein OLE-Modified rufen
+ Link aOLELink( pDoc->GetOle2Link() );
+ pDoc->SetOle2Link( Link() );
+
+ BOOL bModified = pDoc->IsModified();
+ BOOL bWasUndo = pDoc->DoesUndo();
+ pDoc->DoUndo( FALSE );
+
+ GetSaveAndSetOwnBaseURL();
+
+ // Wenn der Import abgebrochen wird, kein Continue mehr rufen.
+ // Falls ein Pending-Stack existiert aber durch einen Aufruf
+ // von NextToken dafuer sorgen, dass der Pending-Stack noch
+ // beendet wird.
+ if( SVPAR_ERROR == eState )
+ {
+ ASSERT( !pPendStack || pPendStack->nToken,
+ "SwHTMLParser::Continue: Pending-Stack ohne Token" );
+ if( pPendStack && pPendStack->nToken )
+ NextToken( pPendStack->nToken );
+ ASSERT( !pPendStack,
+ "SwHTMLParser::Continue: Es gibt wieder einen Pend-Stack" );
+ }
+ else
+ {
+ HTMLParser::Continue( pPendStack ? pPendStack->nToken : nToken );
+ }
+
+ SetSaveBaseURL();
+
+ // Laufbalken wieder abschalten
+ EndProgress( pDoc->GetDocShell() );
+
+ BOOL bLFStripped = FALSE;
+ if( SVPAR_PENDING != GetStatus() )
+ {
+ // noch die letzten Attribute setzen
+ {
+ if( aScriptSource.Len() )
+ {
+ SwScriptFieldType *pType =
+ (SwScriptFieldType*)pDoc->GetSysFldType( RES_SCRIPTFLD );
+
+ SwScriptField aFld( pType, aScriptType, aScriptSource,
+ FALSE );
+ InsertAttr( SwFmtFld( aFld ) );
+ }
+
+ if( pAppletImpl )
+ EndApplet();
+
+ // ggf. ein noch vorhandes LF hinter dem letzen Absatz entfernen
+ if( IsNewDoc() )
+ bLFStripped = StripTrailingLF() > 0;
+
+ // noch offene Nummerierungen beenden.
+ while( GetNumInfo().GetNumRule() )
+ EndNumBulList();
+
+ ASSERT( !nContextStMin, "Es gibt geschuetzte Kontexte" );
+ nContextStMin = 0;
+ while( aContexts.Count() )
+ {
+ _HTMLAttrContext *pCntxt = PopContext();
+ if( pCntxt )
+ {
+ EndContext( pCntxt );
+ delete pCntxt;
+ }
+ }
+
+ if( aParaAttrs.Count() )
+ aParaAttrs.Remove( 0, aParaAttrs.Count() );
+
+ SetAttr( FALSE );
+
+ // Noch die erst verzoegert gesetzten Styles setzen
+ pCSS1Parser->SetDelayedStyles();
+ }
+
+ // den Start wieder korrigieren
+ if( !IsNewDoc() && pSttNdIdx->GetIndex() )
+ {
+ SwTxtNode* pTxtNode = pSttNdIdx->GetNode().GetTxtNode();
+ SwNodeIndex aNxtIdx( *pSttNdIdx );
+ if( pTxtNode && pTxtNode->CanJoinNext( &aNxtIdx ))
+ {
+ xub_StrLen nStt = pTxtNode->GetTxt().Len();
+ // wenn der Cursor noch in dem Node steht, dann setze in an das Ende
+ if( pPam->GetPoint()->nNode == aNxtIdx )
+ {
+ pPam->GetPoint()->nNode = *pSttNdIdx;
+ pPam->GetPoint()->nContent.Assign( pTxtNode, nStt );
+ }
+
+#ifndef PRODUCT
+// !!! sollte nicht moeglich sein, oder ??
+ASSERT( pSttNdIdx->GetIndex()+1 != pPam->GetBound( TRUE ).nNode.GetIndex(),
+ "Pam.Bound1 steht noch im Node" );
+ASSERT( pSttNdIdx->GetIndex()+1 != pPam->GetBound( FALSE ).nNode.GetIndex(),
+ "Pam.Bound2 steht noch im Node" );
+
+if( pSttNdIdx->GetIndex()+1 == pPam->GetBound( TRUE ).nNode.GetIndex() )
+{
+ register xub_StrLen nCntPos = pPam->GetBound( TRUE ).nContent.GetIndex();
+ pPam->GetBound( TRUE ).nContent.Assign( pTxtNode,
+ pTxtNode->GetTxt().Len() + nCntPos );
+}
+if( pSttNdIdx->GetIndex()+1 == pPam->GetBound( FALSE ).nNode.GetIndex() )
+{
+ register xub_StrLen nCntPos = pPam->GetBound( FALSE ).nContent.GetIndex();
+ pPam->GetBound( FALSE ).nContent.Assign( pTxtNode,
+ pTxtNode->GetTxt().Len() + nCntPos );
+}
+#endif
+ // Zeichen Attribute beibehalten!
+ SwTxtNode* pDelNd = aNxtIdx.GetNode().GetTxtNode();
+ if( pTxtNode->GetTxt().Len() )
+ pDelNd->FmtToTxtAttr( pTxtNode );
+ else
+ pTxtNode->ChgFmtColl( pDelNd->GetTxtColl() );
+ pTxtNode->JoinNext();
+ }
+ }
+ }
+
+ if( SVPAR_ACCEPTED == eState )
+ {
+ if( nMissingImgMaps )
+ {
+ // es fehlen noch ein paar Image-Map zuordungen.
+ // vielleicht sind die Image-Maps ja jetzt da?
+ ConnectImageMaps();
+ }
+
+ // jetzt noch den letzten ueberfluessigen Absatz loeschen
+ SwPosition* pPos = pPam->GetPoint();
+ if( !pPos->nContent.GetIndex() && !bLFStripped )
+ {
+ SwTxtNode* pAktNd;
+ ULONG nNodeIdx = pPos->nNode.GetIndex();
+
+ BOOL bHasFlysOrMarks =
+ HasCurrentParaFlys() || HasCurrentParaBookmarks( TRUE );
+
+ if( IsNewDoc() )
+ {
+ if( pDoc->GetNodes()[ nNodeIdx -1 ]->IsCntntNode() &&
+ !pPam->GetPoint()->nContent.GetIndex() )
+ {
+ nNodeIdx = pPam->GetPoint()->nNode.GetIndex();
+ SwCntntNode* pCNd = pPam->GetCntntNode();
+ if( pCNd && pCNd->StartOfSectionIndex()+2 <
+ pCNd->EndOfSectionIndex() && !bHasFlysOrMarks )
+ {
+ pPam->GetBound(TRUE).nContent.Assign( 0, 0 );
+ pPam->GetBound(FALSE).nContent.Assign( 0, 0 );
+ pDoc->GetNodes().Delete( pPam->GetPoint()->nNode );
+ }
+ }
+ }
+ else if( 0 != ( pAktNd = pDoc->GetNodes()[ nNodeIdx ]->GetTxtNode()) && !bHasFlysOrMarks )
+ {
+ if( pAktNd->CanJoinNext( &pPos->nNode ))
+ {
+ SwTxtNode* pNextNd = pPos->nNode.GetNode().GetTxtNode();
+ pPos->nContent.Assign( pNextNd, 0 );
+ pPam->SetMark(); pPam->DeleteMark();
+ pNextNd->JoinPrev();
+ }
+ else if( !pAktNd->GetTxt().Len() )
+ {
+ pPos->nContent.Assign( 0, 0 );
+ pPam->SetMark(); pPam->DeleteMark();
+ pDoc->GetNodes().Delete( pPos->nNode, 1 );
+ pPam->Move( fnMoveBackward );
+ }
+ }
+ }
+
+ // nun noch das SplitNode vom Anfang aufheben
+ else if( !IsNewDoc() )
+ {
+ if( pPos->nContent.GetIndex() ) // dann gabs am Ende kein <P>,
+ pPam->Move( fnMoveForward, fnGoNode ); // als zum naechsten Node
+ SwTxtNode* pTxtNode = pPos->nNode.GetNode().GetTxtNode();
+ SwNodeIndex aPrvIdx( pPos->nNode );
+ if( pTxtNode && pTxtNode->CanJoinPrev( &aPrvIdx ) &&
+ *pSttNdIdx <= aPrvIdx )
+ {
+ // eigentlich muss hier ein JoinNext erfolgen, aber alle Cursor
+ // usw. sind im pTxtNode angemeldet, so dass der bestehen
+ // bleiben MUSS.
+
+ // Absatz in Zeichen-Attribute umwandeln, aus dem Prev die
+ // Absatzattribute und die Vorlage uebernehmen!
+ SwTxtNode* pPrev = aPrvIdx.GetNode().GetTxtNode();
+ pTxtNode->ChgFmtColl( pPrev->GetTxtColl() );
+ pTxtNode->FmtToTxtAttr( pPrev );
+ pTxtNode->SwCntntNode::ResetAllAttr();
+
+ if( pPrev->GetpSwAttrSet() )
+ pTxtNode->SwCntntNode::SetAttr( *pPrev->GetpSwAttrSet() );
+
+ if( &pPam->GetBound(TRUE).nNode.GetNode() == pPrev )
+ pPam->GetBound(TRUE).nContent.Assign( pTxtNode, 0 );
+ if( &pPam->GetBound(FALSE).nNode.GetNode() == pPrev )
+ pPam->GetBound(FALSE).nContent.Assign( pTxtNode, 0 );
+
+ pTxtNode->JoinPrev();
+ }
+ }
+
+ // und noch die DocumentInfo aufbereiten
+ if( IsNewDoc() )
+ {
+ const SfxDocumentInfo *pInfo = pDoc->GetInfo();
+ if( pInfo->IsReloadEnabled() &&
+ !pInfo->GetReloadURL().Len() )
+ {
+ SfxDocumentInfo aInfo( *pDoc->GetInfo() );
+ aInfo.SetReloadURL( aPathToFile );
+ pDoc->SetInfo( aInfo );
+ }
+ }
+
+ if( bUpdateDocStat )
+ {
+ SwDocStat aStat( pDoc->GetDocStat() );
+ ViewShell *pTmpVSh = 0;
+ pDoc->GetEditShell( &pTmpVSh );
+ USHORT nPages = pTmpVSh ? pTmpVSh->GetNumPages() : 1;
+ pDoc->UpdateDocStat( aStat, nPages );
+ }
+ }
+
+ if( SVPAR_PENDING != GetStatus() )
+ delete pSttNdIdx, pSttNdIdx = 0;
+
+ // sollte der Parser der Letzte sein, der das Doc haelt, dann braucht
+ // man hier auch nichts mehr tun, Doc wird gleich zerstoert!
+ if( 1 < pDoc->GetLinkCnt() )
+ {
+ if( bWasUndo )
+ {
+ pDoc->DelAllUndoObj();
+ pDoc->DoUndo( TRUE );
+ }
+ else if( !pInitVSh )
+ {
+ // Wenn zu Beginn des Continue keine Shell vorhanden war,
+ // kann trotzdem mitlerweile eine angelegt worden sein.
+ // In dieses Fall stimmt das bWasUndo-Flag nicht und
+ // wir muessen das Undo noch anschalten.
+ ViewShell *pTmpVSh = CheckActionViewShell();
+ if( pTmpVSh )
+ pDoc->DoUndo( TRUE );
+ }
+
+ pDoc->SetOle2Link( aOLELink );
+ if( !bModified )
+ pDoc->ResetModified();
+ if( bSetModEnabled && pDoc->GetDocShell() )
+ {
+ pDoc->GetDocShell()->EnableSetModified( TRUE );
+ bSetModEnabled = FALSE; // this is unnecessary here
+ }
+ }
+
+
+ // Wenn die Dokuemnt-ViewShell noch existiert und eine Action
+ // offen ist (muss bei Abbruch nicht sein), die Action beenden,
+ // uns von der Shell abmelden und schliesslich die alte Shell
+ // wieder rekonstruieren.
+ CallEndAction( TRUE );
+
+#ifndef PRODUCT
+ nContinue--;
+#endif
+}
+
+void SwHTMLParser::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew )
+{
+ switch( pOld ? pOld->Which() : pNew ? pNew->Which() : 0 )
+ {
+ case RES_OBJECTDYING:
+ if( ((SwPtrMsgPoolItem *)pOld)->pObject == pRegisteredIn )
+ {
+ // dann uns selbst beenden
+ pRegisteredIn->Remove( this );
+ ReleaseRef(); // ansonsten sind wir fertig!
+ }
+ break;
+ }
+}
+
+void SwHTMLParser::DocumentDetected()
+{
+ ASSERT( !bDocInitalized, "DocumentDetected mehrfach aufgerufen" );
+ bDocInitalized = TRUE;
+ if( IsNewDoc() )
+ {
+ if( IsInHeader() )
+ FinishHeader( TRUE );
+
+ CallEndAction( TRUE, TRUE );
+
+ SetSaveBaseURL();
+
+#ifndef PRODUCT
+ ViewShell *pTmpVSh = 0;
+ pDoc->GetEditShell( &pTmpVSh );
+ ASSERT( pTmpVSh==0,
+ "Dok-ViewShell existiert schon vor DocDetected" );
+#endif
+ ErrCode eError = ((SfxLoadEnvironment*)&aLoadEnv)->
+ DocumentDetected( pDoc->GetDocShell(), 0 );
+ if( eError )
+ {
+ eState = SVPAR_ERROR;
+ return;
+ }
+ GetSaveAndSetOwnBaseURL();
+
+ pDoc->DoUndo( FALSE );
+ // Durch das DocumentDetected wurde im allgemeinen eine
+ // ViewShell angelegt. Es kann aber auch sein, dass sie
+ // erst spaeter angelegt wird, naemlich dann, wenn die UI
+ // gecaptured ist.
+ CallStartAction();
+ }
+}
+
+// wird fuer jedes Token gerufen, das in CallParser erkannt wird
+void __EXPORT SwHTMLParser::NextToken( int nToken )
+{
+ if( ( pDoc->GetDocShell() && pDoc->GetDocShell()->IsAbortingImport() )
+ || 1 == pDoc->GetLinkCnt() )
+ {
+ // wurde der Import vom SFX abgebrochen? Wenn ein Pending-Stack
+ // existiert den noch aufraumen
+ eState = SVPAR_ERROR;
+ ASSERT( !pPendStack || pPendStack->nToken,
+ "SwHTMLParser::NextToken: Pending-Stack ohne Token" );
+ if( 1 == pDoc->GetLinkCnt() || !pPendStack )
+ return ;
+ }
+
+#ifndef PRODUCT
+ if( pPendStack )
+ {
+ switch( nToken )
+ {
+ // Tabellen werden ueber rekusive Methodenaufrufe gelesen
+ case HTML_TABLE_ON:
+ // Bei CSS-Deklarationen muss evtl. noch auf das
+ // Ende eines File-Downloads gewartet werden.
+ case HTML_LINK:
+ // Bei Controls muss evtl. noch die Groesse gesetzt werden.
+ case HTML_INPUT:
+ case HTML_TEXTAREA_ON:
+ case HTML_SELECT_ON:
+ case HTML_SELECT_OFF:
+ break;
+ default:
+ ASSERT( !pPendStack, "Unbekanntes Token fuer Pending-Stack" );
+ break;
+ }
+ }
+#endif
+
+ // Die folgeneden Spezialfaelle muessen vor der Filter-Detection behandelt
+ // werden, denn der Inhalt des Titels, etc. wird auch in Netcape nicht
+ // zur Filter-Detection herangezogen.
+ if( !pPendStack )
+ {
+ if( bInTitle )
+ {
+ switch( nToken )
+ {
+ case HTML_TITLE_OFF:
+ if( IsNewDoc() && sTitle.Len() )
+ {
+ SfxDocumentInfo aInfo( *pDoc->GetInfo() );
+ aInfo.SetTitle( sTitle );
+ pDoc->SetInfo( aInfo );
+
+ if( pDoc->GetDocShell() )
+ pDoc->GetDocShell()->SetTitle( sTitle );
+ }
+ bInTitle = FALSE;
+ sTitle.Erase();
+ break;
+
+ case HTML_NONBREAKSPACE:
+ sTitle += ' ';
+ break;
+
+ case HTML_SOFTHYPH:
+ sTitle += '-';
+ break;
+
+ case HTML_TEXTTOKEN:
+ sTitle += aToken;
+ break;
+
+ default:
+ sTitle += '<';
+ if( (HTML_TOKEN_ONOFF & nToken) && (1 & nToken) )
+ sTitle += '/';
+ sTitle += sSaveToken;
+ if( aToken.Len() )
+ {
+ sTitle += ' ';
+ sTitle += aToken;
+ }
+ sTitle += '>';
+ break;
+ }
+
+ return;
+ }
+ }
+
+ // Wenn wir noch nicht wissen, was fuer ein Dokument wir vor uns haben,
+ // versuchen wir das erstmal rauszufinden. Das muss fuer Controls in
+ // Fall vor dem Einfuegen des Controls passieren, weil beim Einfuegen
+ // bereits eine View benoetigt wird.
+ if( !bDocInitalized && aLoadEnv.Is() )
+ DocumentDetected();
+
+ BOOL bGetIDOption = FALSE, bInsertUnknown = FALSE;
+ BOOL bUpperSpaceSave = bUpperSpace;
+ bUpperSpace = FALSE;
+
+ // Die folgenden Speziallfaelle muessen oder koennen nach der
+ // Filter-Detection erfolgen.
+ if( !pPendStack )
+ {
+ if( bInFloatingFrame )
+ {
+ // <SCRIPT> wird hier (von uns) ignoriert, weil es auch in
+ // Applets ignoriert wird!
+ if( HTML_IFRAME_OFF == nToken )
+ {
+ bCallNextToken = FALSE;
+ EndFloatingFrame();
+ }
+
+ return;
+ }
+ else if( bInNoEmbed )
+ {
+ switch( nToken )
+ {
+ case HTML_NOEMBED_OFF:
+ aContents.ConvertLineEnd();
+ InsertComment( aContents, sHTML_noembed );
+ aContents.Erase();
+ bCallNextToken = FALSE;
+ bInNoEmbed = FALSE;
+ break;
+
+ case HTML_RAWDATA:
+ InsertCommentText( sHTML_noembed );
+ break;
+
+ default:
+ ASSERT( !this, "SwHTMLParser::NextToken: ungueltiges Tag" );
+ break;
+ }
+
+ return;
+ }
+ else if( pAppletImpl )
+ {
+ // in einem Applet interessieren uns (erstmal) nur <PARAM>-Tags
+ // und das </APPLET>.
+ // <SCRIPT> wird hier (von Netscape) ignoriert!
+
+ switch( nToken )
+ {
+ case HTML_APPLET_OFF:
+ bCallNextToken = FALSE;
+ EndApplet();
+ break;
+
+ case HTML_PARAM:
+ InsertParam();
+ break;
+ }
+
+ return;
+ }
+ else if( bTextArea )
+ {
+ // in einer TextArea wird alles bis zum </TEXTAREA> als Text
+ // eingefuegt
+ // <SCRIPT> wird hier (von Netscape) ignoriert!
+
+ switch( nToken )
+ {
+ case HTML_TEXTAREA_OFF:
+ bCallNextToken = FALSE;
+ EndTextArea();
+ break;
+
+ default:
+ InsertTextAreaText( nToken );
+ break;
+ }
+
+ return;
+ }
+ else if( bSelect )
+ {
+ // MUSS nach bNoScript kommen!
+ switch( nToken )
+ {
+ case HTML_SELECT_OFF:
+ bCallNextToken = FALSE;
+ EndSelect();
+ return;
+
+ case HTML_OPTION:
+ InsertSelectOption();
+ return;
+
+ case HTML_TEXTTOKEN:
+ InsertSelectText();
+ return;
+
+ case HTML_INPUT:
+ case HTML_SCRIPT_ON:
+ case HTML_SCRIPT_OFF:
+ case HTML_NOSCRIPT_ON:
+ case HTML_NOSCRIPT_OFF:
+ case HTML_RAWDATA:
+ // im normalen switch bahandeln
+ break;
+
+ default:
+ // ignorieren
+ return;
+ }
+ }
+ else if( pMarquee )
+ {
+ // in einer TextArea wird alles bis zum </TEXTAREA> als Text
+ // eingefuegt
+ // Die <SCRIPT>-Tags werden vom MS-IE ignoriert, von uns das
+ // geasmte Script
+ switch( nToken )
+ {
+ case HTML_MARQUEE_OFF:
+ bCallNextToken = FALSE;
+ EndMarquee();
+ break;
+
+ case HTML_TEXTTOKEN:
+ InsertMarqueeText();
+ break;
+ }
+
+ return;
+ }
+ else if( bInField )
+ {
+ switch( nToken )
+ {
+ case HTML_SDFIELD_OFF:
+ bCallNextToken = FALSE;
+ EndField();
+ break;
+
+ case HTML_TEXTTOKEN:
+ InsertFieldText();
+ break;
+ }
+
+ return;
+ }
+ else if( bInFootEndNoteAnchor || bInFootEndNoteSymbol )
+ {
+ switch( nToken )
+ {
+ case HTML_ANCHOR_OFF:
+ EndAnchor();
+ bCallNextToken = FALSE;
+ break;
+
+ case HTML_TEXTTOKEN:
+ InsertFootEndNoteText();
+ break;
+ }
+ return;
+ }
+ else if( aUnknownToken.Len() )
+ {
+ // Unbekannte Token im Header werden nur durch ein passendes
+ // End-Token, </HEAD> oder <BODY> wieder beendet. Darin wird Text
+ // ignoriert.
+ switch( nToken )
+ {
+ case HTML_UNKNOWNCONTROL_OFF:
+ if( aUnknownToken.CompareTo(sSaveToken) != COMPARE_EQUAL )
+ return;
+ case HTML_FRAMESET_ON:
+ case HTML_HEAD_OFF:
+ case HTML_BODY_ON:
+ case HTML_IMAGE: // Warum auch immer Netscape das tut.
+ aUnknownToken.Erase();
+ break;
+ case HTML_TEXTTOKEN:
+ return;
+ default:
+ break;
+ }
+ }
+ }
+
+ switch( nToken )
+ {
+ case HTML_BODY_ON:
+ if( aStyleSource.Len() )
+ {
+ pCSS1Parser->ParseStyleSheet( aStyleSource );
+ aStyleSource.Erase();
+ }
+ if( IsNewDoc() )
+ {
+ InsertBodyOptions();
+ // Falls es eine Vorlage fuer die erste oder rechte Seite gibt,
+ // setzen wir die hier.
+ const SwPageDesc *pPageDesc = 0;
+ if( pCSS1Parser->IsSetFirstPageDesc() )
+ pPageDesc = pCSS1Parser->GetFirstPageDesc();
+ else if( pCSS1Parser->IsSetRightPageDesc() )
+ pPageDesc = pCSS1Parser->GetRightPageDesc();
+
+ if( pPageDesc )
+ pDoc->Insert( *pPam, SwFmtPageDesc( pPageDesc ) );
+ }
+ break;
+
+ case HTML_LINK:
+ InsertLink();
+ break;
+
+ case HTML_BASE:
+ {
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[ --i ];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_HREF:
+ sBaseURL = pOption->GetString();
+ INetURLObject::SetBaseURL( sBaseURL );
+ break;
+ case HTML_O_TARGET:
+ if( IsNewDoc() )
+ {
+ SfxDocumentInfo aInfo( *pDoc->GetInfo() );
+ aInfo.SetDefaultTarget( pOption->GetString() );
+ pDoc->SetInfo( aInfo );
+ }
+ break;
+ }
+ }
+ }
+ break;
+
+ case HTML_META:
+ if( IsNewDoc() )
+ {
+ SwDocShell *pDocSh = pDoc->GetDocShell();
+ SvKeyValueIterator *pHTTPHeader =
+ pDocSh ? pDocSh->GetHeaderAttributes() : 0;
+ SfxDocumentInfo aInfo( *pDoc->GetInfo() );
+
+ if( ParseMetaOptions( &aInfo, pHTTPHeader ) )
+ {
+ pDoc->SetInfo( aInfo );
+ }
+ else
+ {
+ ParseMoreMetaOptions();
+ }
+ }
+ break;
+
+ case HTML_TITLE_ON:
+ bInTitle = TRUE;
+ break;
+
+ case HTML_SCRIPT_ON:
+ NewScript();
+ break;
+
+ case HTML_SCRIPT_OFF:
+ EndScript();
+ break;
+
+ case HTML_NOSCRIPT_ON:
+ case HTML_NOSCRIPT_OFF:
+ bInsertUnknown = TRUE;
+ break;
+
+ case HTML_STYLE_ON:
+ NewStyle();
+ break;
+
+ case HTML_STYLE_OFF:
+ EndStyle();
+ break;
+
+ case HTML_RAWDATA:
+ if( !bIgnoreRawData )
+ {
+ if( IsReadScript() )
+ {
+ AddScriptSource();
+ }
+ else if( IsReadStyle() )
+ {
+ if( aStyleSource.Len() )
+ aStyleSource += '\n';
+ aStyleSource += aToken;
+ }
+ }
+ break;
+
+ case HTML_APPLET_ON:
+#ifdef SOLAR_JAVA
+ InsertApplet();
+ bCallNextToken = pAppletImpl!=0 && pTable!=0;
+#endif
+ break;
+
+ case HTML_IFRAME_ON:
+ InsertFloatingFrame();
+ bCallNextToken = bInFloatingFrame && pTable!=0;
+ break;
+
+ case HTML_LINEBREAK:
+ if( !IsReadPRE() )
+ {
+ InsertLineBreak();
+ break;
+ }
+ else
+ bGetIDOption = TRUE;
+ // <BR>s in <PRE> aehneln echten LFs, deshalb kein break
+
+ case HTML_NEWPARA:
+ // CR in PRE/LISTING/XMP
+ {
+ if( HTML_NEWPARA==nToken ||
+ pPam->GetPoint()->nContent.GetIndex() )
+ {
+ AppendTxtNode(); // lf gibts hier nicht, deshalb unkritisch
+ SetTxtCollAttrs();
+ }
+ // Laufbalkenanzeige
+ if( !GetMedium() || !GetMedium()->IsRemote() )
+ ::SetProgressState( rInput.Tell(), pDoc->GetDocShell() );
+ }
+ break;
+
+ case HTML_NONBREAKSPACE:
+ pDoc->Insert( *pPam, CHAR_HARDBLANK );
+ break;
+
+ case HTML_SOFTHYPH:
+ pDoc->Insert( *pPam, CHAR_SOFTHYPHEN );
+ break;
+
+ case HTML_LINEFEEDCHAR:
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode();
+ if( !pTable && !pDoc->IsInHeaderFooter( pPam->GetPoint()->nNode ) )
+ {
+ NewAttr( &aAttrTab.pBreak, SvxFmtBreakItem(SVX_BREAK_PAGE_BEFORE) );
+ EndAttr( aAttrTab.pBreak, 0, FALSE );
+ }
+ break;
+
+ case HTML_TEXTTOKEN:
+ // dann fuege den String ein, ohne das Attribute am Ende
+ // aufgespannt werden.
+ if( aToken.Len() && ' '==aToken.GetChar(0) && !IsReadPRE() )
+ {
+ xub_StrLen nPos = pPam->GetPoint()->nContent.GetIndex();
+ if( nPos )
+ {
+ const String& rText =
+ pDoc->GetNodes()[ pPam->GetPoint()->nNode ]->GetTxtNode()
+ ->GetTxt();
+ register sal_Unicode cLast = rText.GetChar(--nPos);
+ if( ' ' == cLast || '\x0a' == cLast)
+ aToken.Erase(0,1);
+ }
+ else
+ aToken.Erase(0,1);
+
+ if( !aToken.Len() )
+ {
+ bUpperSpace = bUpperSpaceSave;
+ break;
+ }
+ }
+
+ if( aToken.Len() )
+ {
+ if( !bDocInitalized && aLoadEnv.Is() )
+ DocumentDetected();
+ pDoc->Insert( *pPam, aToken );
+
+ // wenn es noch vorlaefige Absatz-Attribute gibt, der Absatz aber
+ // nicht leer ist, dann sind die Absatz-Attribute entgueltig.
+ if( aParaAttrs.Count() )
+ aParaAttrs.Remove( 0, aParaAttrs.Count() );
+
+ SetAttr();
+ }
+ break;
+
+ case HTML_HORZRULE:
+ InsertHorzRule();
+ break;
+
+ case HTML_IMAGE:
+ InsertImage();
+ // sollte der Parser der Letzte sein, der das Doc haelt, dann kann
+ // man hier abbrechen und einen Fehler setzen.
+ if( 1 == pDoc->GetLinkCnt() )
+ {
+ eState = SVPAR_ERROR;
+ }
+ break;
+
+ case HTML_SPACER:
+ InsertSpacer();
+ break;
+
+ case HTML_EMBED:
+ InsertEmbed();
+ break;
+
+ case HTML_NOEMBED_ON:
+ bInNoEmbed = TRUE;
+ bCallNextToken = pTable!=0;
+ ReadRawData( sHTML_noembed );
+ break;
+
+ case HTML_DEFLIST_ON:
+ if( nOpenParaToken )
+ EndPara();
+ NewDefList();
+ break;
+ case HTML_DEFLIST_OFF:
+ if( nOpenParaToken )
+ EndPara();
+ EndDefListItem( 0, FALSE, 1==nDefListDeep );
+ EndDefList();
+ break;
+
+ case HTML_DD_ON:
+ case HTML_DT_ON:
+ if( nOpenParaToken )
+ EndPara();
+ EndDefListItem( 0, FALSE );// <DD>/<DT> beenden und keine Vorl. setzen
+ NewDefListItem( nToken );
+ break;
+
+ case HTML_DD_OFF:
+ case HTML_DT_OFF:
+ // siehe HTML_LI_OFF
+ // eigentlich muesste man ein DD/DT jetzt beenden. Da aber sowhl
+ // Netscape als auch Microsoft das nicht tun, machen wir das eben
+ // auch nicht.
+ EndDefListItem( nToken, FALSE );
+ break;
+
+ // Bereiche
+ case HTML_DIVISION_ON:
+ case HTML_CENTER_ON:
+ if( nOpenParaToken )
+ {
+ if( IsReadPRE() )
+ nOpenParaToken = 0;
+ else
+ EndPara();
+ }
+ NewDivision( nToken );
+ break;
+
+ case HTML_DIVISION_OFF:
+ case HTML_CENTER_OFF:
+ if( nOpenParaToken )
+ {
+ if( IsReadPRE() )
+ nOpenParaToken = 0;
+ else
+ EndPara();
+ }
+ EndDivision( nToken );
+ break;
+
+ case HTML_MULTICOL_ON:
+ if( nOpenParaToken )
+ EndPara();
+ NewMultiCol();
+ break;
+
+ case HTML_MULTICOL_OFF:
+ if( nOpenParaToken )
+ EndPara();
+ EndTag( HTML_MULTICOL_ON );
+ break;
+
+ case HTML_MARQUEE_ON:
+ NewMarquee();
+ bCallNextToken = pMarquee!=0 && pTable!=0;
+ break;
+
+ case HTML_FORM_ON:
+ NewForm();
+ break;
+ case HTML_FORM_OFF:
+ EndForm();
+ break;
+
+ // Vorlagen:
+ case HTML_PARABREAK_ON:
+ if( nOpenParaToken )
+ EndPara( TRUE );
+ NewPara();
+ break;
+
+ case HTML_PARABREAK_OFF:
+ EndPara( TRUE );
+ break;
+
+ case HTML_ADDRESS_ON:
+ if( nOpenParaToken )
+ EndPara();
+ NewTxtFmtColl( HTML_ADDRESS_ON, RES_POOLCOLL_SENDADRESS );
+ break;
+
+ case HTML_ADDRESS_OFF:
+ if( nOpenParaToken )
+ EndPara();
+ EndTxtFmtColl( HTML_ADDRESS_OFF );
+ break;
+
+ case HTML_BLOCKQUOTE_ON:
+ case HTML_BLOCKQUOTE30_ON:
+ if( nOpenParaToken )
+ EndPara();
+ NewTxtFmtColl( HTML_BLOCKQUOTE_ON, RES_POOLCOLL_HTML_BLOCKQUOTE );
+ break;
+
+ case HTML_BLOCKQUOTE_OFF:
+ case HTML_BLOCKQUOTE30_OFF:
+ if( nOpenParaToken )
+ EndPara();
+ EndTxtFmtColl( HTML_BLOCKQUOTE_ON );
+ break;
+
+ case HTML_PREFORMTXT_ON:
+ case HTML_LISTING_ON:
+ case HTML_XMP_ON:
+ if( nOpenParaToken )
+ EndPara();
+ NewTxtFmtColl( nToken, RES_POOLCOLL_HTML_PRE );
+ break;
+
+ case HTML_PREFORMTXT_OFF:
+ bNoParSpace = TRUE; // der letzte PRE-Absatz muss einen Zeilenabstand bekommen
+ EndTxtFmtColl( HTML_PREFORMTXT_OFF );
+ break;
+
+ case HTML_LISTING_OFF:
+ case HTML_XMP_OFF:
+ EndTxtFmtColl( nToken );
+ break;
+
+ case HTML_HEAD1_ON:
+ case HTML_HEAD2_ON:
+ case HTML_HEAD3_ON:
+ case HTML_HEAD4_ON:
+ case HTML_HEAD5_ON:
+ case HTML_HEAD6_ON:
+ if( nOpenParaToken )
+ {
+ if( IsReadPRE() )
+ nOpenParaToken = 0;
+ else
+ EndPara();
+ }
+ NewHeading( nToken );
+ break;
+
+ case HTML_HEAD1_OFF:
+ case HTML_HEAD2_OFF:
+ case HTML_HEAD3_OFF:
+ case HTML_HEAD4_OFF:
+ case HTML_HEAD5_OFF:
+ case HTML_HEAD6_OFF:
+ EndHeading();
+ break;
+
+ case HTML_TABLE_ON:
+ if( pPendStack )
+ BuildTable( SVX_ADJUST_END );
+ else
+ {
+ if( nOpenParaToken )
+ EndPara();
+ ASSERT( !pTable, "Tabelle in Tabelle darf hier nicht vorkommen" );
+ if( !pTable && (IsNewDoc() || !pPam->GetNode()->FindTableNode()) &&
+ (pPam->GetPoint()->nNode.GetIndex() >
+ pDoc->GetNodes().GetEndOfExtras().GetIndex() ||
+ !pPam->GetNode()->FindFootnoteStartNode() ) )
+ {
+ if ( nParaCnt < 5 )
+ Show(); // bis hierhin schon mal anzeigen
+
+ SvxAdjust eAdjust = aAttrTab.pAdjust
+ ? ((const SvxAdjustItem&)aAttrTab.pAdjust->GetItem()).
+ GetAdjust()
+ : SVX_ADJUST_END;
+ BuildTable( eAdjust );
+ }
+ else
+ bInsertUnknown = bKeepUnknown;
+ }
+ break;
+
+ // Listen
+ case HTML_DIRLIST_ON:
+ case HTML_MENULIST_ON:
+ case HTML_ORDERLIST_ON:
+ case HTML_UNORDERLIST_ON:
+ if( nOpenParaToken )
+ EndPara();
+ NewNumBulList( nToken );
+ break;
+
+ case HTML_DIRLIST_OFF:
+ case HTML_MENULIST_OFF:
+ case HTML_ORDERLIST_OFF:
+ case HTML_UNORDERLIST_OFF:
+ if( nOpenParaToken )
+ EndPara();
+ EndNumBulListItem( 0, TRUE, GetNumInfo().GetDepth()==1 );
+ EndNumBulList( nToken );
+ break;
+
+ case HTML_LI_ON:
+ case HTML_LISTHEADER_ON:
+ if( nOpenParaToken &&
+ (pPam->GetPoint()->nContent.GetIndex()
+ || HTML_PARABREAK_ON==nOpenParaToken) )
+ {
+ // nure bei <P><LI> den Absatz beenden, aber nicht bei <DD><LI>
+ EndPara();
+ }
+
+ EndNumBulListItem( 0, FALSE );// <LI>/<LH> beenden und keine Vorl. setzen
+ NewNumBulListItem( nToken );
+ break;
+
+ case HTML_LI_OFF:
+ case HTML_LISTHEADER_OFF:
+ EndNumBulListItem( nToken, FALSE );
+ break;
+
+ // Attribute :
+ case HTML_ITALIC_ON:
+ {
+ NewStdAttr( HTML_ITALIC_ON, &aAttrTab.pItalic,
+ SvxPostureItem(ITALIC_NORMAL) );
+ }
+ break;
+
+ case HTML_BOLD_ON:
+ {
+ NewStdAttr( HTML_BOLD_ON, &aAttrTab.pBold,
+ SvxWeightItem(WEIGHT_BOLD) );
+ }
+ break;
+
+
+ case HTML_STRIKE_ON:
+ case HTML_STRIKETHROUGH_ON:
+ {
+ NewStdAttr( HTML_STRIKE_ON, &aAttrTab.pStrike,
+ SvxCrossedOutItem(STRIKEOUT_SINGLE) );
+ }
+ break;
+
+ case HTML_UNDERLINE_ON:
+ {
+ NewStdAttr( HTML_UNDERLINE_ON, &aAttrTab.pUnderline,
+ SvxUnderlineItem(UNDERLINE_SINGLE) );
+ }
+ break;
+
+ case HTML_SUPERSCRIPT_ON:
+ {
+ NewStdAttr( HTML_SUPERSCRIPT_ON, &aAttrTab.pEscapement,
+ SvxEscapementItem(HTML_ESC_SUPER,HTML_ESC_PROP) );
+ }
+ break;
+
+ case HTML_SUBSCRIPT_ON:
+ {
+ NewStdAttr( HTML_SUBSCRIPT_ON, &aAttrTab.pEscapement,
+ SvxEscapementItem(HTML_ESC_SUB,HTML_ESC_PROP) );
+ }
+ break;
+
+ case HTML_BLINK_ON:
+ {
+ NewStdAttr( HTML_BLINK_ON, &aAttrTab.pBlink,
+ SvxBlinkItem( TRUE ) );
+ }
+ break;
+
+ case HTML_SPAN_ON:
+ NewStdAttr( HTML_SPAN_ON );
+ break;
+
+
+ case HTML_ITALIC_OFF:
+ case HTML_BOLD_OFF:
+ case HTML_STRIKE_OFF:
+ case HTML_UNDERLINE_OFF:
+ case HTML_SUPERSCRIPT_OFF:
+ case HTML_SUBSCRIPT_OFF:
+ case HTML_BLINK_OFF:
+ case HTML_SPAN_OFF:
+ EndTag( nToken );
+ break;
+
+ case HTML_STRIKETHROUGH_OFF:
+ EndTag( HTML_STRIKE_OFF );
+ break;
+
+ case HTML_BASEFONT_ON:
+ NewBasefontAttr();
+ break;
+ case HTML_BASEFONT_OFF:
+ EndBasefontAttr();
+ break;
+ case HTML_FONT_ON:
+ case HTML_BIGPRINT_ON:
+ case HTML_SMALLPRINT_ON:
+ NewFontAttr( nToken );
+ break;
+ case HTML_FONT_OFF:
+ case HTML_BIGPRINT_OFF:
+ case HTML_SMALLPRINT_OFF:
+ EndFontAttr( nToken );
+ break;
+
+ case HTML_EMPHASIS_ON:
+ case HTML_CITIATION_ON:
+ case HTML_STRONG_ON:
+ case HTML_CODE_ON:
+ case HTML_SAMPLE_ON:
+ case HTML_KEYBOARD_ON:
+ case HTML_VARIABLE_ON:
+ case HTML_DEFINSTANCE_ON:
+ case HTML_SHORTQUOTE_ON:
+ case HTML_LANGUAGE_ON:
+ case HTML_AUTHOR_ON:
+ case HTML_PERSON_ON:
+ case HTML_ACRONYM_ON:
+ case HTML_ABBREVIATION_ON:
+ case HTML_INSERTEDTEXT_ON:
+ case HTML_DELETEDTEXT_ON:
+
+ case HTML_TELETYPE_ON:
+ NewCharFmt( nToken );
+ break;
+
+ case HTML_SDFIELD_ON:
+ NewField();
+ bCallNextToken = bInField && pTable!=0;
+ break;
+
+ case HTML_EMPHASIS_OFF:
+ case HTML_CITIATION_OFF:
+ case HTML_STRONG_OFF:
+ case HTML_CODE_OFF:
+ case HTML_SAMPLE_OFF:
+ case HTML_KEYBOARD_OFF:
+ case HTML_VARIABLE_OFF:
+ case HTML_DEFINSTANCE_OFF:
+ case HTML_SHORTQUOTE_OFF:
+ case HTML_LANGUAGE_OFF:
+ case HTML_AUTHOR_OFF:
+ case HTML_PERSON_OFF:
+ case HTML_ACRONYM_OFF:
+ case HTML_ABBREVIATION_OFF:
+ case HTML_INSERTEDTEXT_OFF:
+ case HTML_DELETEDTEXT_OFF:
+
+ case HTML_TELETYPE_OFF:
+ EndTag( nToken );
+ break;
+
+ case HTML_HEAD_OFF:
+ if( aStyleSource.Len() )
+ {
+ pCSS1Parser->ParseStyleSheet( aStyleSource );
+ aStyleSource.Erase();
+ }
+ break;
+
+ case HTML_DOCTYPE:
+ case HTML_BODY_OFF:
+ case HTML_HTML_ON:
+ case HTML_HTML_OFF:
+ case HTML_HEAD_ON:
+ case HTML_TITLE_OFF:
+ break; // nicht weiter auswerten, oder???
+
+ case HTML_INPUT:
+ InsertInput();
+ break;
+
+ case HTML_TEXTAREA_ON:
+ NewTextArea();
+ bCallNextToken = bTextArea && pTable!=0;
+ break;
+
+ case HTML_SELECT_ON:
+ NewSelect();
+ bCallNextToken = bSelect && pTable!=0;
+ break;
+
+ case HTML_ANCHOR_ON:
+ NewAnchor();
+ break;
+
+ case HTML_ANCHOR_OFF:
+ EndAnchor();
+ break;
+
+ case HTML_COMMENT:
+ if( aToken.Len() > 5 )
+ {
+ // als Post-It einfuegen
+ String aComment( aToken.Copy( 3, aToken.Len()-5 ) );
+ aComment.EraseLeadingChars().EraseTrailingChars();
+ InsertComment( aComment );
+ }
+ break;
+
+ case HTML_MAP_ON:
+ // Image Maps werden asynchron gelesen: Zunaechst wird nur eine
+ // ImageMap angelegt. Die Bereiche kommen spaeter. Trozdem wird
+ // die ImageMap schon in das IMap-Array eingetragen, denn sie
+ // koennte ja schon verwendet werden.
+ pImageMap = new ImageMap;
+ if( ParseMapOptions( pImageMap) )
+ {
+ if( !pImageMaps )
+ pImageMaps = new ImageMaps;
+ pImageMaps->Insert( pImageMap, pImageMaps->Count() );
+ }
+ else
+ {
+ delete pImageMap;
+ pImageMap = 0;
+ }
+ break;
+
+ case HTML_MAP_OFF:
+ // jetzt gibt es keine ImageMap mehr (IMap nicht Loeschen, denn
+ // die stckt ja schon in dem Array!)
+ pImageMap = 0;
+ break;
+
+ case HTML_AREA:
+ if( pImageMap )
+ ParseAreaOptions( pImageMap, SFX_EVENT_MOUSEOVER_OBJECT,
+ SFX_EVENT_MOUSEOUT_OBJECT );
+ break;
+
+ case HTML_FRAMESET_ON:
+ bInsertUnknown = bKeepUnknown;
+ break;
+
+ case HTML_NOFRAMES_ON:
+ if( IsInHeader() )
+ FinishHeader( TRUE );
+ bInsertUnknown = bKeepUnknown;
+ break;
+
+ case HTML_UNKNOWNCONTROL_ON:
+ // Im Header muss der Inhalt von unbekannten Token ignoriert werden,
+ // es sei denn, das Token faengt mit einem '!' an.
+ if( IsInHeader() && !IsReadPRE() && !aUnknownToken.Len() &&
+ sSaveToken.Len() && '!' != sSaveToken.GetChar(0) &&
+ '%' != sSaveToken.GetChar(0) )
+ aUnknownToken = sSaveToken;
+ // kein break
+
+ default:
+ bInsertUnknown = bKeepUnknown;
+ break;
+ }
+
+ if( bGetIDOption )
+ InsertIDOption();
+
+ if( bInsertUnknown )
+ {
+ String aComment(
+ String::CreateFromAscii(TOOLS_CONSTASCII_STRINGPARAM("HTML: <")) );
+ if( (HTML_TOKEN_ONOFF & nToken) != 0 && (1 & nToken) != 0 )
+ aComment += '/';
+ aComment += sSaveToken;
+ if( aToken.Len() )
+ {
+ UnescapeToken();
+ (aComment += ' ') += aToken;
+ }
+ aComment += '>';
+ InsertComment( aComment );
+ }
+
+ // wenn es noch vorlaefige Absatz-Attribute gibt, der Absatz aber
+ // nicht leer ist, dann sind die Absatz-Attribute entgueltig.
+ if( aParaAttrs.Count() && pPam->GetPoint()->nContent.GetIndex() )
+ aParaAttrs.Remove( 0, aParaAttrs.Count() );
+}
+
+/* */
+
+BOOL SwHTMLParser::AppendTxtNode( SwHTMLAppendMode eMode, BOOL bUpdateNum )
+{
+ // Ein harter Zeilen-Umbruch am Ende muss immer entfernt werden.
+ // Einen zweiten ersetzen wir durch einen Absatz-Abstand.
+ xub_StrLen nLFStripped = StripTrailingLF();
+ if( (AM_NOSPACE==eMode || AM_SOFTNOSPACE==eMode) && nLFStripped > 1 )
+ eMode = AM_SPACE;
+
+ // die harten Attribute an diesem Absatz werden nie mehr ungueltig
+ if( aParaAttrs.Count() )
+ aParaAttrs.Remove( 0, aParaAttrs.Count() );
+
+ if( AM_SPACE==eMode || AM_NOSPACE==eMode )
+ {
+ SwTxtNode *pTxtNode =
+ pDoc->GetNodes()[pPam->GetPoint()->nNode]->GetTxtNode();
+
+ const SvxULSpaceItem& rULSpace =
+ (const SvxULSpaceItem&)pTxtNode->SwCntntNode::GetAttr( RES_UL_SPACE );
+
+ BOOL bChange = AM_NOSPACE==eMode ? rULSpace.GetLower() > 0
+ : rULSpace.GetLower() == 0;
+
+ if( bChange )
+ {
+ const SvxULSpaceItem& rCollULSpace =
+ pTxtNode->GetAnyFmtColl().GetULSpace();
+
+ BOOL bMayReset = AM_NOSPACE==eMode ? rCollULSpace.GetLower() == 0
+ : rCollULSpace.GetLower() > 0;
+
+ if( bMayReset &&
+ rCollULSpace.GetUpper() == rULSpace.GetUpper() )
+ {
+ pTxtNode->ResetAttr( RES_UL_SPACE );
+ }
+ else
+ {
+ pTxtNode->SwCntntNode::SetAttr(
+ SvxULSpaceItem( rULSpace.GetUpper(),
+ AM_NOSPACE==eMode ? 0 : HTML_PARSPACE ) );
+ }
+ }
+ }
+ bNoParSpace = AM_NOSPACE==eMode || AM_SOFTNOSPACE==eMode;
+
+ SwPosition aOldPos( *pPam->GetPoint() );
+
+ BOOL bRet = pDoc->AppendTxtNode( *pPam->GetPoint() );
+
+ // Zeichen-Attribute aufspalten und ggf keine setzen, die ueber den
+ // ganzen Absatz gesetzt sind
+ const SwNodeIndex& rEndIdx = aOldPos.nNode;
+ xub_StrLen nEndCnt = aOldPos.nContent.GetIndex();
+ const SwPosition& rPos = *pPam->GetPoint();
+
+ _HTMLAttr** pTbl = (_HTMLAttr**)&aAttrTab;
+ for( USHORT nCnt = sizeof( _HTMLAttrTable ) / sizeof( _HTMLAttr* );
+ nCnt--; ++pTbl )
+ {
+ _HTMLAttr *pAttr = *pTbl;
+ if( pAttr && pAttr->GetItem().Which() < RES_PARATR_BEGIN )
+ {
+ BOOL bWholePara = FALSE;
+
+ while( pAttr )
+ {
+ _HTMLAttr *pNext = pAttr->GetNext();
+ if( pAttr->GetSttParaIdx() < rEndIdx.GetIndex() ||
+ (!bWholePara &&
+ pAttr->GetSttPara() == rEndIdx &&
+ pAttr->GetSttCnt() != nEndCnt) )
+ {
+ // den besehrigen Teil setzen
+ _HTMLAttr *pSetAttr =
+ pAttr->Clone( rEndIdx, nEndCnt );
+ pAttr->ClearPrev();
+
+ bWholePara =
+ pAttr->GetSttPara() == rEndIdx &&
+ pAttr->GetSttCnt() == 0;
+
+ // Wenn das Attribut den gesamten Absatz umspannt, werden
+ // alle auesseren Attribute nicht mehr beachtet. Deshalb
+ // darf es auch nicht in die Prev-Liste eines ausseren
+ // Attributs eingetragen werden, denn dieses wird ja
+ // erstmal nicht gesetzt. Das fuehrt zu verschiebenungen,
+ // wenn Felder ins Rennen kommen (siehe #51020#)
+ if( !pNext || bWholePara )
+ {
+ USHORT nTmp = pAttr->bInsAtStart ? 0
+ : aSetAttrTab.Count();
+ aSetAttrTab.Insert( pSetAttr, nTmp );
+ }
+ else
+ pNext->InsertPrev( pSetAttr );
+ }
+
+ pAttr->SetStart( rPos );
+ pAttr = pNext;
+ }
+ }
+ }
+
+ if( bUpdateNum )
+ {
+ if( GetNumInfo().GetDepth() )
+ SetNodeNum( GetNumInfo().GetLevel() | NO_NUMLEVEL );
+ else
+ pPam->GetNode()->GetTxtNode()->ResetAttr( RES_PARATR_NUMRULE );
+ }
+
+ // Attrubute im Absatz davor sollte man jetzt setzen (wegen JavaScript)
+ SetAttr();
+
+ if( !pTable && !--nParaCnt )
+ Show();
+
+ return bRet;
+}
+
+void SwHTMLParser::AddParSpace()
+{
+ if( !bNoParSpace )
+ return;
+
+ bNoParSpace = FALSE;
+
+ ULONG nNdIdx = pPam->GetPoint()->nNode.GetIndex() - 1;
+
+ SwTxtNode *pTxtNode = pDoc->GetNodes()[nNdIdx]->GetTxtNode();
+ if( !pTxtNode )
+ return;
+
+ SvxULSpaceItem rULSpace =
+ (const SvxULSpaceItem&)pTxtNode->SwCntntNode::GetAttr( RES_UL_SPACE );
+ if( !rULSpace.GetLower() )
+ {
+ const SvxULSpaceItem& rCollULSpace =
+ pTxtNode->GetAnyFmtColl().GetULSpace();
+ if( rCollULSpace.GetLower() &&
+ rCollULSpace.GetUpper() == rULSpace.GetUpper() )
+ {
+ pTxtNode->ResetAttr( RES_UL_SPACE );
+ }
+ else
+ {
+ pTxtNode->SwCntntNode::SetAttr(
+ SvxULSpaceItem( rULSpace.GetUpper(), HTML_PARSPACE ) );
+ }
+ }
+}
+
+
+void SwHTMLParser::Show()
+{
+ // Hier wird
+ // - ein EndAction gerufen, damit formatiert wird
+ // - ein Reschedule gerufen,
+ // - die eiegen View-Shell wieder gesetzt
+ // - und Start-Action gerufen
+
+ ASSERT( SVPAR_WORKING==eState, "Show nicht im Working-State - Das kann ins Auge gehen" );
+ ViewShell *pOldVSh = CallEndAction();
+
+ SetSaveBaseURL();
+ GetpApp()->Reschedule();
+ GetSaveAndSetOwnBaseURL();
+
+ if( ( pDoc->GetDocShell() && pDoc->GetDocShell()->IsAbortingImport() )
+ || 1 == pDoc->GetLinkCnt() )
+ {
+ // wurde der Import vom SFX abgebrochen?
+ eState = SVPAR_ERROR;
+ }
+
+ // Die ViewShell nochmal holen, denn sie koennte im Reschedule
+ // zerstoert wirden sein.
+ ViewShell *pVSh = CallStartAction( pOldVSh );
+ ASSERT( pOldVSh == pVSh, "Show:: Shell wurde ausgetauscht" );
+
+ // ist der aktuelle Node nicht mehr sichtbar, dann benutzen wir
+ // eine groessere Schrittweite
+ if( pVSh )
+ nParaCnt = pDoc->GetNodes()[pPam->GetPoint()->nNode]
+ ->IsVisible(pVSh) ? 5 : 50;
+}
+
+void SwHTMLParser::ShowStatline()
+{
+ // Hier wird
+ // - ein Reschedule gerufen, damit gescrollt werden kann
+ // - die eiegen View-Shell wieder gesetzt
+ // - ein Start/End-Action gerufen, wenn gescrollt wurde.
+
+ ASSERT( SVPAR_WORKING==eState, "ShowStatLine nicht im Working-State - Das kann ins Auge gehen" );
+
+ // Laufbalkenanzeige
+ SetSaveBaseURL();
+ if( !GetMedium() || !GetMedium()->IsRemote() )
+ {
+ ::SetProgressState( rInput.Tell(), pDoc->GetDocShell() );
+ GetSaveAndSetOwnBaseURL();
+ CheckActionViewShell();
+ }
+ else
+ {
+ GetpApp()->Reschedule();
+ GetSaveAndSetOwnBaseURL();
+
+ if( ( pDoc->GetDocShell() && pDoc->GetDocShell()->IsAbortingImport() )
+ || 1 == pDoc->GetLinkCnt() )
+ // wurde der Import vom SFX abgebrochen?
+ eState = SVPAR_ERROR;
+
+ ViewShell *pVSh = CheckActionViewShell();
+ if( pVSh && pVSh->HasInvalidRect() )
+ {
+ CallEndAction( FALSE, FALSE );
+ CallStartAction( pVSh, FALSE );
+ }
+ }
+}
+
+ViewShell *SwHTMLParser::CallStartAction( ViewShell *pVSh, BOOL bChkPtr )
+{
+ ASSERT( !pActionViewShell, "CallStartAction: ViewShell schon gesetzt" );
+
+ if( !pVSh || bChkPtr )
+ {
+ ViewShell *pOldVSh = pVSh;
+ pDoc->GetEditShell( &pVSh );
+ ASSERT( !pVSh || !pOldVSh || pOldVSh == pVSh,
+ "CallStartAction: Wer hat die ViewShell ausgetauscht?" );
+#ifdef DEBUG
+ if( pOldVSh && !pVSh )
+ pVSh = 0;
+#endif
+ }
+ pActionViewShell = pVSh;
+
+ if( pActionViewShell )
+ {
+ if( pActionViewShell->ISA( SwEditShell ) )
+ ((SwEditShell*)pActionViewShell)->StartAction();
+ else
+ pActionViewShell->StartAction();
+ }
+
+ return pActionViewShell;
+}
+
+ViewShell *SwHTMLParser::CallEndAction( BOOL bChkAction, BOOL bChkPtr )
+{
+ if( bChkPtr )
+ {
+ ViewShell *pVSh = 0;
+ pDoc->GetEditShell( &pVSh );
+ ASSERT( !pVSh || pActionViewShell == pVSh,
+ "CallEndAction: Wer hat die ViewShell ausgetauscht?" );
+#ifdef DEBUG
+ if( pActionViewShell && !pVSh )
+ pVSh = 0;
+#endif
+ if( pVSh != pActionViewShell )
+ pActionViewShell = 0;
+ }
+
+ if( !pActionViewShell || (bChkAction && !pActionViewShell->ActionPend()) )
+ return pActionViewShell;
+
+ if( bSetCrsr )
+ {
+ // an allen CrsrEditShells die Cursor auf den Doc-Anfang setzen
+ ViewShell *pSh = pActionViewShell;
+ do {
+ if( pSh->IsA( TYPE( SwCrsrShell ) ) )
+ ((SwCrsrShell*)pSh)->SttDoc();
+ pSh = (ViewShell *)pSh->GetNext();
+ } while( pSh != pActionViewShell );
+
+ bSetCrsr = FALSE;
+ }
+ if( pActionViewShell->ISA( SwEditShell ) )
+ {
+ //Schon gescrollt?, dann dafuer sorgen, dass die View sich nicht bewegt!
+ const FASTBOOL bOldLock = pActionViewShell->IsViewLocked();
+ pActionViewShell->LockView( TRUE );
+ const FASTBOOL bOldEndActionByVirDev = pActionViewShell->IsEndActionByVirDev();
+ pActionViewShell->SetEndActionByVirDev( TRUE );;
+ ((SwEditShell*)pActionViewShell)->EndAction();
+ pActionViewShell->SetEndActionByVirDev( bOldEndActionByVirDev );
+ pActionViewShell->LockView( bOldLock );
+
+ // bChkJumpMark ist nur gesetzt, wenn das Object auch gefunden wurde
+ if( bChkJumpMark )
+ {
+ const Point aVisSttPos( DOCUMENTBORDER, DOCUMENTBORDER );
+ if( GetMedium() && aVisSttPos == pActionViewShell->VisArea().Pos() )
+ ::JumpToSwMark( pActionViewShell,
+ GetMedium()->GetURLObject().GetMark() );
+ bChkJumpMark = FALSE;
+ }
+ }
+ else
+ pActionViewShell->EndAction();
+
+ // sollte der Parser der Letzte sein, der das Doc haelt, dann kann
+ // man hier abbrechen und einen Fehler setzen.
+ if( 1 == pDoc->GetLinkCnt() )
+ {
+ eState = SVPAR_ERROR;
+ }
+
+ ViewShell *pVSh = pActionViewShell;
+ pActionViewShell = 0;
+
+ return pVSh;
+}
+
+ViewShell *SwHTMLParser::CheckActionViewShell()
+{
+ ViewShell *pVSh = 0;
+ pDoc->GetEditShell( &pVSh );
+ ASSERT( !pVSh || pActionViewShell == pVSh,
+ "CheckActionViewShell: Wer hat die ViewShell ausgetauscht?" );
+#ifdef DEBUG
+ if( pActionViewShell && !pVSh )
+ pVSh = 0;
+#endif
+ if( pVSh != pActionViewShell )
+ pActionViewShell = 0;
+
+ return pActionViewShell;
+}
+
+/* */
+
+void SwHTMLParser::_SetAttr( BOOL bChkEnd, BOOL bBeforeTable,
+ _HTMLAttrs *pPostIts )
+{
+ SwPaM* pAttrPam = new SwPaM( *pPam->GetPoint() );
+ const SwNodeIndex& rEndIdx = pPam->GetPoint()->nNode;
+ xub_StrLen nEndCnt = pPam->GetPoint()->nContent.GetIndex();
+ _HTMLAttr* pAttr;
+ SwCntntNode* pCNd;
+
+ _HTMLAttrs aFields( 5, 5 );
+
+ for( USHORT n = aSetAttrTab.Count(); n; )
+ {
+ pAttr = aSetAttrTab[ --n ];
+ USHORT nWhich = pAttr->pItem->Which();
+
+ ULONG nEndParaIdx = pAttr->GetEndParaIdx();
+ BOOL bSetAttr;
+ if( bChkEnd )
+ {
+ // fix #42192#: Zechen-Attribute mit Ende moeglich frueh,
+ // also noch im aktuellen Absatz setzen (wegen JavaScript
+ // und diversen Chats). das darf man aber nicht fuer Attribute,
+ // die ueber den ganzen Absatz aufgspannt werden sollen, weil
+ // sie aus Absatzvorlgen stammen, die nicht gesetzt werden
+ // koennen. Weil die Attribute mit SETATTR_DONTREPLACE
+ // eingefuegt werden, sollte man sie auch anchtraeglich
+ // noch setzen koennen.
+ bSetAttr = ( nEndParaIdx < rEndIdx.GetIndex() &&
+ (RES_LR_SPACE != nWhich || !GetNumInfo().GetNumRule()) ) ||
+ ( !pAttr->IsLikePara() &&
+ nEndParaIdx == rEndIdx.GetIndex() &&
+ pAttr->GetEndCnt() < nEndCnt &&
+ RES_CHRATR_BEGIN <= nWhich &&
+ RES_TXTATR_WITHEND_END > nWhich ) ||
+ ( bBeforeTable &&
+ nEndParaIdx == rEndIdx.GetIndex() &&
+ !pAttr->GetEndCnt() );
+ }
+ else
+ {
+ // Attribiute im Content-Bereich duerfen nicht gesetzt
+ // werden, wenn wir in einem Sonderbereich stehen, aber
+ // umgekekehrt schon.
+ ULONG nEndOfIcons = pDoc->GetNodes().GetEndOfExtras().GetIndex();
+ bSetAttr = nEndParaIdx < rEndIdx.GetIndex() ||
+ rEndIdx.GetIndex() > nEndOfIcons ||
+ nEndParaIdx <= nEndOfIcons;
+ }
+
+ if( bSetAttr )
+ {
+ // Das Attribute darf nicht in der liste der vorlaeufigen
+ // Absatz-Attribute stehen, weil es sonst geloescht wurde.
+ USHORT ii = aParaAttrs.Count();
+ while( ii-- )
+ {
+ ASSERT( pAttr != aParaAttrs[ii],
+ "SetAttr: Attribut duerfte noch nicht gesetzt werden" );
+ aParaAttrs.Remove( ii );
+ }
+
+
+ // dann also setzen
+ aSetAttrTab.Remove( n, 1 );
+
+ while( pAttr )
+ {
+ _HTMLAttr *pPrev = pAttr->GetPrev();
+ if( !pAttr->bValid )
+ {
+ // ungueltige Attribute koennen gloescht werden
+ delete pAttr;
+ pAttr = pPrev;
+ continue; //break;
+ }
+
+
+ pCNd = pDoc->GetNodes()[ pAttr->nSttPara ]->GetCntntNode();
+ if( !pCNd )
+ {
+ // durch die elende Loescherei von Nodes kann auch mal
+ // ein Index auf einen End-Node zeigen :-(
+ if( pAttr->GetSttPara() == pAttr->GetEndPara() &&
+ (nWhich < RES_TXTATR_NOEND_BEGIN ||
+ nWhich >= RES_TXTATR_NOEND_END) )
+ {
+ // wenn der End-Index auch auf den Node zeigt
+ // brauchen wir auch kein Attribut mehr zu setzen,
+ // es sei denn, es ist ein Text-Attribut.
+ delete pAttr;
+ pAttr = pPrev;
+ continue; //break;
+ }
+ pCNd = pDoc->GetNodes().GoNext( &(pAttr->nSttPara) );
+ if( pCNd )
+ pAttr->nSttCntnt = 0;
+ else
+ {
+ ASSERT( !this, "SetAttr: GoNext() failed!" );
+ delete pAttr;
+ pAttr = pPrev;
+ continue; // break;
+ }
+ }
+ pAttrPam->GetPoint()->nNode = pAttr->nSttPara;
+
+
+
+ // durch das Loeschen von BRs kann der Start-Index
+ // auch mal hinter das Ende des Textes zeigen
+ if( pAttr->nSttCntnt > pCNd->Len() )
+ pAttr->nSttCntnt = pCNd->Len();
+ pAttrPam->GetPoint()->nContent.Assign( pCNd, pAttr->nSttCntnt );
+
+ pAttrPam->SetMark();
+ if( pAttr->GetSttPara() != pAttr->GetEndPara() &&
+ (nWhich < RES_TXTATR_NOEND_BEGIN ||
+ nWhich >= RES_TXTATR_NOEND_END) )
+ {
+ pCNd = pDoc->GetNodes()[ pAttr->nEndPara ]->GetCntntNode();
+ if( !pCNd )
+ {
+ pCNd = pDoc->GetNodes().GoPrevious( &(pAttr->nEndPara) );
+ if( pCNd )
+ pAttr->nEndCntnt = pCNd->Len();
+ else
+ {
+ ASSERT( !this, "SetAttr: GoPrevious() failed!" );
+ pAttrPam->DeleteMark();
+ delete pAttr;
+ pAttr = pPrev;
+ continue; // break;
+ }
+ }
+
+ pAttrPam->GetPoint()->nNode = pAttr->nEndPara;
+ }
+ else if( pAttr->IsLikePara() )
+ {
+ pAttr->nEndCntnt = pCNd->Len();
+ }
+
+ // durch das Loeschen von BRs kann der End-Index
+ // auch mal hinter das Ende des Textes zeigen
+ if( pAttr->nEndCntnt > pCNd->Len() )
+ pAttr->nEndCntnt = pCNd->Len();
+
+ pAttrPam->GetPoint()->nContent.Assign( pCNd, pAttr->nEndCntnt );
+ if( bBeforeTable &&
+ pAttrPam->GetPoint()->nNode.GetIndex() ==
+ rEndIdx.GetIndex() )
+ {
+ // wenn wir vor dem Einfuegen einer Tabelle stehen
+ // und das Attribut im aktuellen Node beendet wird,
+ // muessen wir es im Node davor beenden oder wegschmeissen,
+ // wenn es erst in dem Node beginnt
+ if( nWhich != RES_BREAK && nWhich != RES_PAGEDESC &&
+ (nWhich < RES_TXTATR_NOEND_BEGIN ||
+ nWhich >= RES_TXTATR_NOEND_END) )
+ {
+ if( pAttrPam->GetMark()->nNode.GetIndex() !=
+ rEndIdx.GetIndex() )
+ {
+ ASSERT( !pAttrPam->GetPoint()->nContent.GetIndex(),
+ "Content-Position vor Tabelle nicht 0???" );
+ pAttrPam->Move( fnMoveBackward );
+ }
+ else
+ {
+ pAttrPam->DeleteMark();
+ delete pAttr;
+ pAttr = pPrev;
+ continue;
+ }
+ }
+ }
+
+ switch( nWhich )
+ {
+ case RES_FLTR_BOOKMARK: // dann also ein Bookmark einfuegen
+ {
+ String aName( ((SfxStringItem*)pAttr->pItem)->GetValue() );
+ USHORT nBookPos = pDoc->FindBookmark( aName );
+ if( nBookPos != USHRT_MAX )
+ {
+ const SwBookmark *pBkMk =
+ pDoc->GetBookmarks()[nBookPos];
+ if( pBkMk->GetPos() != *pAttrPam->GetPoint() )
+ pDoc->MakeUniqueBookmarkName( aName );
+ else
+ break; // keine doppelte Bookmark an dieser Pos
+ }
+ pAttrPam->DeleteMark();
+ pDoc->MakeBookmark( *pAttrPam, KeyCode(),
+ aName, aEmptyStr );
+
+ // ggfs. ein Bookmark anspringen
+ if( JUMPTO_MARK == eJumpTo &&
+ aName == sJmpMark )
+ {
+ bChkJumpMark = TRUE;
+ eJumpTo = JUMPTO_NONE;
+ }
+ }
+ break;
+ case RES_TXTATR_FIELD:
+ {
+ USHORT nFldWhich =
+ pPostIts ? ((const SwFmtFld *)pAttr->pItem)
+ ->GetFld()->GetTyp()->Which() : 0;
+ if( pPostIts && (RES_POSTITFLD == nFldWhich ||
+ RES_SCRIPTFLD == nFldWhich) )
+ {
+ pPostIts->Insert( pAttr, 0 );
+ }
+ else
+ {
+ aFields.Insert( pAttr, aFields.Count() );
+ }
+ }
+ pAttrPam->DeleteMark();
+ pAttr = pPrev;
+ continue;
+
+ case RES_LR_SPACE:
+ if( pAttrPam->GetPoint()->nNode.GetIndex() ==
+ pAttrPam->GetMark()->nNode.GetIndex() &&
+ pCNd )
+ {
+ // wegen Numerierungen dieses Attribut direkt
+ // am Node setzen
+ pCNd->SetAttr( *pAttr->pItem );
+ break;
+ }
+ ASSERT( !this,
+ "LRSpace ueber mehrere Absaetze gesetzt!" );
+ // kein break (hier sollen wir trotzdem nie hinkommen;
+ default:
+
+ // ggfs. ein Bookmark anspringen
+ if( RES_TXTATR_INETFMT == nWhich &&
+ JUMPTO_MARK == eJumpTo &&
+ sJmpMark == ((SwFmtINetFmt*)pAttr->pItem)->GetName() )
+ {
+ bChkJumpMark = TRUE;
+ eJumpTo = JUMPTO_NONE;
+ }
+
+ pDoc->Insert( *pAttrPam, *pAttr->pItem, SETATTR_DONTREPLACE );
+ }
+ pAttrPam->DeleteMark();
+
+ delete pAttr;
+ pAttr = pPrev;
+ }
+ }
+ }
+
+ for( n = aMoveFlyFrms.Count(); n; )
+ {
+ SwFrmFmt *pFrmFmt = aMoveFlyFrms[ --n ];
+
+ const SwFmtAnchor& rAnchor = pFrmFmt->GetAnchor();
+ ASSERT( FLY_AT_CNTNT==rAnchor.GetAnchorId(),
+ "Nur Auto-Rahmen brauchen eine Spezialbehandlung" );
+ const SwPosition *pFlyPos = rAnchor.GetCntntAnchor();
+ ULONG nFlyParaIdx = pFlyPos->nNode.GetIndex();
+ BOOL bMoveFly;
+ if( bChkEnd )
+ {
+ bMoveFly = nFlyParaIdx < rEndIdx.GetIndex() ||
+ ( nFlyParaIdx == rEndIdx.GetIndex() &&
+ aMoveFlyCnts[n] < nEndCnt );
+ }
+ else
+ {
+ ULONG nEndOfIcons = pDoc->GetNodes().GetEndOfExtras().GetIndex();
+ bMoveFly = nFlyParaIdx < rEndIdx.GetIndex() ||
+ rEndIdx.GetIndex() > nEndOfIcons ||
+ nFlyParaIdx <= nEndOfIcons;
+ }
+ if( bMoveFly )
+ {
+ pFrmFmt->DelFrms();
+ *pAttrPam->GetPoint() = *pFlyPos;
+ pAttrPam->GetPoint()->nContent.Assign( pAttrPam->GetCntntNode(),
+ aMoveFlyCnts[n] );
+ SwFmtAnchor aAnchor( rAnchor );
+ aAnchor.SetType( FLY_AUTO_CNTNT );
+ aAnchor.SetAnchor( pAttrPam->GetPoint() );
+ pFrmFmt->SetAttr( aAnchor );
+
+ const SwFmtHoriOrient& rHoriOri = pFrmFmt->GetHoriOrient();
+ if( HORI_LEFT == rHoriOri.GetHoriOrient() )
+ {
+ SwFmtHoriOrient aHoriOri( rHoriOri );
+ aHoriOri.SetRelationOrient( REL_CHAR );
+ pFrmFmt->SetAttr( aHoriOri );
+ }
+ const SwFmtVertOrient& rVertOri = pFrmFmt->GetVertOrient();
+ if( VERT_TOP == rVertOri.GetVertOrient() )
+ {
+ SwFmtVertOrient aVertOri( rVertOri );
+ aVertOri.SetRelationOrient( REL_CHAR );
+ pFrmFmt->SetAttr( aVertOri );
+ }
+
+ pFrmFmt->MakeFrms();
+ aMoveFlyFrms.Remove( n, 1 );
+ aMoveFlyCnts.Remove( n, 1 );
+ }
+ }
+ while( aFields.Count() )
+ {
+ pAttr = aFields[0];
+
+ pCNd = pDoc->GetNodes()[ pAttr->nSttPara ]->GetCntntNode();
+ pAttrPam->GetPoint()->nNode = pAttr->nSttPara;
+ pAttrPam->GetPoint()->nContent.Assign( pCNd, pAttr->nSttCntnt );
+
+ if( bBeforeTable &&
+ pAttrPam->GetPoint()->nNode.GetIndex() == rEndIdx.GetIndex() )
+ {
+ ASSERT( !bBeforeTable, "Aha, der Fall tritt also doch ein" );
+ ASSERT( !pAttrPam->GetPoint()->nContent.GetIndex(),
+ "Content-Position vor Tabelle nicht 0???" );
+ // !!!
+ pAttrPam->Move( fnMoveBackward );
+ }
+
+ pDoc->Insert( *pAttrPam, *pAttr->pItem );
+
+ aFields.Remove( 0, 1 );
+ delete pAttr;
+ }
+
+ delete pAttrPam;
+}
+
+void SwHTMLParser::NewAttr( _HTMLAttr **ppAttr, const SfxPoolItem& rItem )
+{
+ // Font-Hoehen und -Farben- sowie Escapement-Attribute duerfen nicht
+ // zusammengefasst werden. Sie werden deshalb in einer Liste gespeichert,
+ // in der das zuletzt aufgespannte Attribut vorne steht und der Count
+ // immer 1 ist. Fuer alle anderen Attribute wird der Count einfach
+ // hochgezaehlt.
+ if( *ppAttr )
+ {
+ _HTMLAttr *pAttr = new _HTMLAttr( *pPam->GetPoint(), rItem,
+ ppAttr );
+ pAttr->InsertNext( *ppAttr );
+ (*ppAttr) = pAttr;
+ }
+ else
+ (*ppAttr) = new _HTMLAttr( *pPam->GetPoint(), rItem, ppAttr );
+}
+
+void SwHTMLParser::EndAttr( _HTMLAttr* pAttr, _HTMLAttr **ppDepAttr,
+ BOOL bChkEmpty )
+{
+ ASSERT( !ppDepAttr, "SwHTMLParser::EndAttr: ppDepAttr-Feature ungetestet?" );
+ // Der Listenkopf ist im Attribut gespeichert
+ _HTMLAttr **ppHead = pAttr->ppHead;
+
+ ASSERT( ppHead, "keinen Attributs-Listenkopf gefunden!" );
+
+ // die aktuelle Psoition als Ende-Position merken
+ const SwNodeIndex* pEndIdx = &pPam->GetPoint()->nNode;
+ xub_StrLen nEndCnt = pPam->GetPoint()->nContent.GetIndex();
+
+ // WIrd das zueltzt gestartete oder ein frueher gestartetes Attribut
+ // beendet?
+ _HTMLAttr *pLast = 0;
+ if( ppHead && pAttr != *ppHead )
+ {
+ // Es wird nicht das zuletzt gestartete Attribut beendet
+
+ // Dann suche wir das unmittelbar danach gestartete Attribut, das
+ // ja ebenfalls noch nicht beendet wurde (sonst stuende es nicht
+ // mehr in der Liste
+ pLast = *ppHead;
+ while( pLast && pLast->GetNext() != pAttr )
+ pLast = pLast->GetNext();
+
+ ASSERT( pLast, "Attribut nicht in eigener Liste gefunden!" );
+
+ // das Attribut nicht an der PaM-Psoition beenden, sondern da,
+ // wo das danch gestartete Attribut anfing???
+ //pEndIdx = &pPrev->GetSttPara();
+ //nEndCnt = pPrev->GetSttCnt();
+ }
+
+ BOOL bMoveBack = FALSE;
+ USHORT nWhich = pAttr->pItem->Which();
+ if( /*!pLast &&*/ !nEndCnt && RES_PARATR_BEGIN <= nWhich &&
+ *pEndIdx != pAttr->GetSttPara() )
+ {
+ // dann eine Cntntnt Position zurueck!
+ bMoveBack = pPam->Move( fnMoveBackward );
+ nEndCnt = pPam->GetPoint()->nContent.GetIndex();
+ }
+
+ // nun das Attrubut beenden
+ _HTMLAttr *pNext = pAttr->GetNext();
+
+ // ein Bereich ??
+ if( !bChkEmpty || (RES_PARATR_BEGIN <= nWhich && bMoveBack) ||
+ RES_PAGEDESC == nWhich || RES_BREAK == nWhich ||
+ *pEndIdx != pAttr->GetSttPara() ||
+ nEndCnt != pAttr->GetSttCnt() )
+ {
+ pAttr->nEndPara = *pEndIdx;
+ pAttr->nEndCntnt = nEndCnt;
+ pAttr->bInsAtStart = RES_TXTATR_INETFMT != nWhich &&
+ RES_TXTATR_CHARFMT != nWhich;
+
+ if( !pNext )
+ {
+ // keine offenen Attribute dieses Typs mehr da,
+ // dann koennen alle gesetzt werden, es sei denn
+ // sie haengen noch von einem anderen Attribut ab,
+ // dann werden sie dort angehaengt
+ if( ppDepAttr && *ppDepAttr )
+ (*ppDepAttr)->InsertPrev( pAttr );
+ else
+ {
+ USHORT nTmp = pAttr->bInsAtStart ? 0 : aSetAttrTab.Count();
+ aSetAttrTab.Insert( pAttr, nTmp );
+ }
+ }
+ else
+ {
+ // es gibt noch andere offene Attribute des Typs,
+ // daher muss das Setzen zurueckgestellt werden.
+ // das aktuelle Attribut wird deshalb hinten an die
+ // Previous-Liste des Nachfolgers angehaengt
+ pNext->InsertPrev( pAttr );
+ }
+ }
+ else
+ {
+ // dann nicht einfuegen, sondern Loeschen. Durch das "tuerken" von
+ // Vorlagen durch harte Attributierung koennen sich auch mal andere
+ // leere Attribute in der Prev-Liste befinden, die dann trotzdem
+ // gesetzt werden muessen
+ _HTMLAttr *pPrev = pAttr->GetPrev();
+ delete pAttr;
+
+ if( pPrev )
+ {
+ // Die Previous-Attribute muessen trotzdem gesetzt werden.
+ if( pNext )
+ pNext->InsertPrev( pPrev );
+ else
+ {
+ USHORT nTmp = pPrev->bInsAtStart ? 0 : aSetAttrTab.Count();
+ aSetAttrTab.Insert( pPrev, nTmp );
+ }
+ }
+
+ }
+
+ // wenn das erste Attribut der Liste gesetzt wurde muss noch der
+ // Listenkopf korrigiert werden.
+ if( pLast )
+ pLast->pNext = pNext;
+ else if( ppHead )
+ *ppHead = pNext;
+
+ if( bMoveBack )
+ pPam->Move( fnMoveForward );
+}
+
+void SwHTMLParser::DeleteAttr( _HTMLAttr* pAttr )
+{
+ // Hier darf es keine vorlauefigen Absatz-Attribute geben, den die
+ // koennten jetzt gesetzt werden und dann sind die Zeiger ungueltig!!!
+ ASSERT( !aParaAttrs.Count(),
+ "Hoechste Gefahr: Es gibt noch nicht-endgueltige Absatz-Attribute" );
+ if( aParaAttrs.Count() )
+ aParaAttrs.Remove( 0, aParaAttrs.Count() );
+
+ // Der Listenkopf ist im Attribut gespeichert
+ _HTMLAttr **ppHead = pAttr->ppHead;
+
+ ASSERT( ppHead, "keinen Attributs-Listenkopf gefunden!" );
+
+ // Wird das zueltzt gestartete oder ein frueher gestartetes Attribut
+ // entfernt?
+ _HTMLAttr *pLast = 0;
+ if( ppHead && pAttr != *ppHead )
+ {
+ // Es wird nicht das zuletzt gestartete Attribut beendet
+
+ // Dann suche wir das unmittelbar danach gestartete Attribut, das
+ // ja ebenfalls noch nicht beendet wurde (sonst stuende es nicht
+ // mehr in der Liste
+ pLast = *ppHead;
+ while( pLast && pLast->GetNext() != pAttr )
+ pLast = pLast->GetNext();
+
+ ASSERT( pLast, "Attribut nicht in eigener Liste gefunden!" );
+ }
+
+ // nun das Attrubut entfernen
+ _HTMLAttr *pNext = pAttr->GetNext();
+ _HTMLAttr *pPrev = pAttr->GetPrev();
+ delete pAttr;
+
+ if( pPrev )
+ {
+ // Die Previous-Attribute muessen trotzdem gesetzt werden.
+ if( pNext )
+ pNext->InsertPrev( pPrev );
+ else
+ {
+ USHORT nTmp = pPrev->bInsAtStart ? 0 : aSetAttrTab.Count();
+ aSetAttrTab.Insert( pPrev, nTmp );
+ }
+ }
+
+ // wenn das erste Attribut der Liste entfernt wurde muss noch der
+ // Listenkopf korrigiert werden.
+ if( pLast )
+ pLast->pNext = pNext;
+ else if( ppHead )
+ *ppHead = pNext;
+}
+
+void SwHTMLParser::SaveAttrTab( _HTMLAttrTable& rNewAttrTab )
+{
+ // Hier darf es keine vorlauefigen Absatz-Attribute geben, den die
+ // koennten jetzt gesetzt werden und dann sind die Zeiger ungueltig!!!
+ ASSERT( !aParaAttrs.Count(),
+ "Hoechste Gefahr: Es gibt noch nicht-endgueltige Absatz-Attribute" );
+ if( aParaAttrs.Count() )
+ aParaAttrs.Remove( 0, aParaAttrs.Count() );
+
+ _HTMLAttr** pTbl = (_HTMLAttr**)&aAttrTab;
+ _HTMLAttr** pSaveTbl = (_HTMLAttr**)&rNewAttrTab;
+
+ for( USHORT nCnt = sizeof( _HTMLAttrTable ) / sizeof( _HTMLAttr* );
+ nCnt--; (++pTbl, ++pSaveTbl) )
+ {
+ *pSaveTbl = *pTbl;
+
+ _HTMLAttr *pAttr = *pSaveTbl;
+ while( pAttr )
+ {
+ pAttr->SetHead( pSaveTbl );
+ pAttr = pAttr->GetNext();
+ }
+
+ *pTbl = 0;
+ }
+}
+
+void SwHTMLParser::SplitAttrTab( _HTMLAttrTable& rNewAttrTab,
+ BOOL bMoveEndBack )
+{
+ // Hier darf es keine vorlauefigen Absatz-Attribute geben, den die
+ // koennten jetzt gesetzt werden und dann sind die Zeiger ungueltig!!!
+ ASSERT( !aParaAttrs.Count(),
+ "Hoechste Gefahr: Es gibt noch nicht-endgueltige Absatz-Attribute" );
+ if( aParaAttrs.Count() )
+ aParaAttrs.Remove( 0, aParaAttrs.Count() );
+
+ const SwNodeIndex& nSttIdx = pPam->GetPoint()->nNode;
+ SwNodeIndex nEndIdx( nSttIdx );
+
+ // alle noch offenen Attribute beenden und hinter der Tabelle
+ // neu aufspannen
+ _HTMLAttr** pTbl = (_HTMLAttr**)&aAttrTab;
+ _HTMLAttr** pSaveTbl = (_HTMLAttr**)&rNewAttrTab;
+ BOOL bSetAttr = TRUE;
+ xub_StrLen nSttCnt = pPam->GetPoint()->nContent.GetIndex();
+ xub_StrLen nEndCnt = nSttCnt;
+
+ if( bMoveEndBack )
+ {
+ ULONG nOldEnd = nEndIdx.GetIndex();
+ ULONG nTmpIdx;
+ if( ( nTmpIdx = pDoc->GetNodes().GetEndOfExtras().GetIndex()) >= nOldEnd ||
+ ( nTmpIdx = pDoc->GetNodes().GetEndOfAutotext().GetIndex()) >= nOldEnd )
+ {
+ nTmpIdx = pDoc->GetNodes().GetEndOfInserts().GetIndex();
+ }
+ SwCntntNode* pCNd = pDoc->GetNodes().GoPrevious(&nEndIdx);
+
+ // keine Attribute setzen, wenn der PaM aus dem Content-Bereich
+ // herausgeschoben wurde.
+ bSetAttr = pCNd && nTmpIdx < nEndIdx.GetIndex();
+
+ nEndCnt = (bSetAttr ? pCNd->Len() : 0);
+ }
+ for( USHORT nCnt = sizeof( _HTMLAttrTable ) / sizeof( _HTMLAttr* );
+ nCnt--; (++pTbl, ++pSaveTbl) )
+ {
+ _HTMLAttr *pAttr = *pTbl;
+ *pSaveTbl = 0;
+ while( pAttr )
+ {
+ _HTMLAttr *pNext = pAttr->GetNext();
+ _HTMLAttr *pPrev = pAttr->GetPrev();
+
+ if( bSetAttr &&
+ ( pAttr->GetSttParaIdx() < nEndIdx.GetIndex() ||
+ (pAttr->GetSttPara() == nEndIdx &&
+ pAttr->GetSttCnt() != nEndCnt) ) )
+ {
+ // das Attribut muss vor der Liste gesetzt werden. Da wir
+ // das Original noch brauchen, weil Zeiger auf das Attribut
+ // noch in den Kontexten existieren, muessen wir es clonen.
+ // Die Next-Liste geht dabei verloren, aber die
+ // Previous-Liste bleibt erhalten
+ _HTMLAttr *pSetAttr = pAttr->Clone( nEndIdx, nEndCnt );
+
+ if( pNext )
+ pNext->InsertPrev( pSetAttr );
+ else
+ {
+ USHORT nTmp = pSetAttr->bInsAtStart ? 0
+ : aSetAttrTab.Count();
+ aSetAttrTab.Insert( pSetAttr, nTmp );
+ }
+ }
+ else if( pPrev )
+ {
+ // Wenn das Attribut nicht gesetzt vor der Tabelle
+ // gesetzt werden muss, muessen der Previous-Attribute
+ // trotzdem gesetzt werden.
+ if( pNext )
+ pNext->InsertPrev( pPrev );
+ else
+ {
+ USHORT nTmp = pPrev->bInsAtStart ? 0 : aSetAttrTab.Count();
+ aSetAttrTab.Insert( pPrev, nTmp );
+ }
+ }
+
+ // den Start des Attributs neu setzen und die Verkettungen
+ // aufbrechen
+ pAttr->Reset( nSttIdx, nSttCnt, pSaveTbl );
+
+ if( *pSaveTbl )
+ {
+ _HTMLAttr *pSAttr = *pSaveTbl;
+ while( pSAttr->GetNext() )
+ pSAttr = pSAttr->GetNext();
+ pSAttr->InsertNext( pAttr );
+ }
+ else
+ *pSaveTbl = pAttr;
+
+ pAttr = pNext;
+ }
+
+ *pTbl = 0;
+ }
+}
+
+void SwHTMLParser::RestoreAttrTab( const _HTMLAttrTable& rNewAttrTab,
+ BOOL bSetNewStart )
+{
+ // Hier darf es keine vorlauefigen Absatz-Attribute geben, den die
+ // koennten jetzt gesetzt werden und dann sind die Zeiger ungueltig!!!
+ ASSERT( !aParaAttrs.Count(),
+ "Hoechste Gefahr: Es gibt noch nicht-endgueltige Absatz-Attribute" );
+ if( aParaAttrs.Count() )
+ aParaAttrs.Remove( 0, aParaAttrs.Count() );
+
+ _HTMLAttr** pTbl = (_HTMLAttr**)&aAttrTab;
+ _HTMLAttr** pSaveTbl = (_HTMLAttr**)&rNewAttrTab;
+
+ for( USHORT nCnt = sizeof( _HTMLAttrTable ) / sizeof( _HTMLAttr* );
+ nCnt--; (++pTbl, ++pSaveTbl) )
+ {
+ ASSERT( !*pTbl, "Die Attribut-Tabelle ist nicht leer!" );
+
+ const SwPosition *pPos = pPam->GetPoint();
+ const SwNodeIndex& rSttPara = pPos->nNode;
+ xub_StrLen nSttCnt = pPos->nContent.GetIndex();
+
+ *pTbl = *pSaveTbl;
+
+ _HTMLAttr *pAttr = *pTbl;
+ while( pAttr )
+ {
+ ASSERT( !pAttr->GetPrev() || !pAttr->GetPrev()->ppHead,
+ "Previous-Attribut hat noch einen Header" );
+ pAttr->SetHead( pTbl );
+ if( bSetNewStart )
+ {
+ pAttr->nSttPara = rSttPara;
+ pAttr->nEndPara = rSttPara;
+ pAttr->nSttCntnt = nSttCnt;
+ pAttr->nEndCntnt = nSttCnt;
+ }
+ pAttr = pAttr->GetNext();
+ }
+
+ *pSaveTbl = 0;
+ }
+}
+
+void SwHTMLParser::InsertAttr( const SfxPoolItem& rItem, BOOL bLikePara,
+ BOOL bInsAtStart )
+{
+ _HTMLAttr* pTmp = new _HTMLAttr( *pPam->GetPoint(),
+ rItem );
+ if( bLikePara )
+ pTmp->SetLikePara();
+ USHORT nTmp = bInsAtStart ? 0 : aSetAttrTab.Count();
+ aSetAttrTab.Insert( pTmp, nTmp );
+}
+
+void SwHTMLParser::InsertAttrs( _HTMLAttrs& rAttrs )
+{
+ while( rAttrs.Count() )
+ {
+ _HTMLAttr *pAttr = rAttrs[0];
+ InsertAttr( pAttr->GetItem() );
+ rAttrs.Remove( 0, 1 );
+ delete pAttr;
+ }
+}
+
+/* */
+
+void SwHTMLParser::NewStdAttr( int nToken )
+{
+ String aId, aStyle, aClass;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ }
+ }
+
+ // einen neuen Kontext anlegen
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( nToken );
+
+ // Styles parsen
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ if( ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo ) )
+ {
+ if( HTML_SPAN_ON != nToken || !aClass.Len() ||
+ !CreateContainer( aClass, aItemSet, aPropInfo, pCntxt ) )
+ DoPositioning( aItemSet, aPropInfo, pCntxt );
+ InsertAttrs( aItemSet, aPropInfo, pCntxt, TRUE );
+ }
+ }
+
+ // den Kontext merken
+ PushContext( pCntxt );
+}
+
+void SwHTMLParser::NewStdAttr( int nToken, _HTMLAttr **ppAttr,
+ const SfxPoolItem & rItem )
+{
+ String aId, aStyle, aClass;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ }
+ }
+
+ // einen neuen Kontext anlegen
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( nToken );
+
+ // Styles parsen
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ aItemSet.Put( rItem );
+
+ if( ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo ) )
+ DoPositioning( aItemSet, aPropInfo, pCntxt );
+
+ InsertAttrs( aItemSet, aPropInfo, pCntxt, TRUE );
+ }
+ else
+ {
+ InsertAttr( ppAttr ,rItem, pCntxt );
+ }
+
+ // den Kontext merken
+ PushContext( pCntxt );
+}
+
+void SwHTMLParser::EndTag( int nToken )
+{
+ // den Kontext holen
+ _HTMLAttrContext *pCntxt = PopContext( nToken & ~1 );
+ if( pCntxt )
+ {
+ // und ggf. die Attribute beenden
+ EndContext( pCntxt );
+ delete pCntxt;
+ }
+}
+
+
+void SwHTMLParser::NewBasefontAttr()
+{
+ String aId, aStyle, aClass;
+ USHORT nSize = 3;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_SIZE:
+ nSize = (USHORT)pOption->GetNumber();
+ break;
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ }
+ }
+
+ if( nSize < 1 )
+ nSize = 1;
+
+ if( nSize > 7 )
+ nSize = 7;
+
+ // einen neuen Kontext anlegen
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( HTML_BASEFONT_ON );
+
+ // Styles parsen
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ aItemSet.Put( SvxFontHeightItem( aFontHeights[nSize-1] ) );
+
+ if( ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo ) )
+ DoPositioning( aItemSet, aPropInfo, pCntxt );
+
+ InsertAttrs( aItemSet, aPropInfo, pCntxt, TRUE );
+ }
+ else
+ {
+ InsertAttr( &aAttrTab.pFontHeight, SvxFontHeightItem( aFontHeights[nSize-1] ), pCntxt );
+ }
+
+ // den Kontext merken
+ PushContext( pCntxt );
+
+ // die Font-Size merken
+ aBaseFontStack.Insert( nSize, aBaseFontStack.Count() );
+}
+
+void SwHTMLParser::EndBasefontAttr()
+{
+ EndTag( HTML_BASEFONT_ON );
+
+ // Stack-Unterlauf in Tabellen vermeiden
+ if( aBaseFontStack.Count() > nBaseFontStMin )
+ aBaseFontStack.Remove( aBaseFontStack.Count()-1, 1 );
+}
+
+void SwHTMLParser::NewFontAttr( int nToken )
+{
+ USHORT nBaseSize =
+ ( aBaseFontStack.Count() > nBaseFontStMin
+ ? (aBaseFontStack[aBaseFontStack.Count()-1] & FONTSIZE_MASK)
+ : 3 );
+ USHORT nFontSize =
+ ( aFontStack.Count() > nFontStMin
+ ? (aFontStack[aFontStack.Count()-1] & FONTSIZE_MASK)
+ : nBaseSize );
+
+ String aFace, aId, aStyle, aClass;
+ Color aColor;
+ ULONG nFontHeight = 0; // tatsaechlich einzustellende Font-Hoehe
+ USHORT nSize = 0; // Fontgroesse in Netscape-Notation (1-7)
+ BOOL bColor = FALSE;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_SIZE:
+ if( HTML_FONT_ON==nToken && pOption->GetString().Len() )
+ {
+ INT32 nSSize;
+ if( '+' == pOption->GetString().GetChar(0) ||
+ '-' == pOption->GetString().GetChar(0) )
+ nSSize = nBaseSize + pOption->GetSNumber();
+ else
+ nSSize = (INT32)pOption->GetNumber();
+
+ if( nSSize < 1 )
+ nSSize = 1;
+ else if( nSSize > 7 )
+ nSSize = 7;
+
+ nSize = (USHORT)nSSize;
+ nFontHeight = aFontHeights[nSize-1];
+ }
+ break;
+ case HTML_O_COLOR:
+ if( HTML_FONT_ON==nToken )
+ {
+ pOption->GetColor( aColor );
+ bColor = TRUE;
+ }
+ break;
+ case HTML_O_FACE:
+ if( HTML_FONT_ON==nToken )
+ aFace = pOption->GetString();
+ break;
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ }
+ }
+
+ if( HTML_FONT_ON != nToken )
+ {
+ // HTML_BIGPRINT_ON oder HTML_SMALLPRINT_ON
+
+ // in Ueberschriften bestimmt die aktuelle Ueberschrift
+ // die Font-Hoehe und nicht BASEFONT
+ USHORT nPoolId = GetCurrFmtColl()->GetPoolFmtId();
+ if( (nPoolId>=RES_POOLCOLL_HEADLINE1 &&
+ nPoolId<=RES_POOLCOLL_HEADLINE6) )
+ {
+ // wenn die Schriftgroesse in der Ueberschrift noch
+ // nicht veraendert ist, die aus der Vorlage nehmen
+ if( nFontStHeadStart==aFontStack.Count() )
+ nFontSize = 6 - (nPoolId - RES_POOLCOLL_HEADLINE1);
+ }
+ else
+ nPoolId = 0;
+
+ if( HTML_BIGPRINT_ON == nToken )
+ nSize = ( nFontSize<7 ? nFontSize+1 : 7 );
+ else
+ nSize = ( nFontSize>1 ? nFontSize-1 : 1 );
+
+ // in Ueberschriften wird die neue Fonthoehe wenn moeglich aus
+ // den Vorlagen geholt.
+ if( nPoolId && nSize>=1 && nSize <=6 )
+ nFontHeight =
+ pCSS1Parser->GetTxtCollFromPool(
+ RES_POOLCOLL_HEADLINE1+6-nSize )->GetSize().GetHeight();
+ else
+ nFontHeight = aFontHeights[nSize-1];
+ }
+
+ ASSERT( !nSize == !nFontHeight, "HTML-Font-Size != Font-Height" );
+
+ String aFontName, aStyleName;
+ FontFamily eFamily = FAMILY_DONTKNOW; // Family und Pitch,
+ FontPitch ePitch = PITCH_DONTKNOW; // falls nicht gefunden
+ rtl_TextEncoding eEnc = gsl_getSystemTextEncoding();
+
+ if( aFace.Len() && !pCSS1Parser->IsIgnoreFontFamily() )
+ {
+ const FontList *pFList = 0;
+ SwDocShell *pDocSh = pDoc->GetDocShell();
+ if( pDocSh )
+ {
+ const SvxFontListItem *pFListItem =
+ (const SvxFontListItem *)pDocSh->GetItem(SID_ATTR_CHAR_FONTLIST);
+ if( pFListItem )
+ pFList = pFListItem->GetFontList();
+ }
+
+ BOOL bFound = FALSE;
+ xub_StrLen nStrPos = 0;
+ while( nStrPos!=STRING_NOTFOUND )
+ {
+ String aFName = aFace.GetToken( 0, ',', nStrPos );
+ aFName.EraseTrailingChars().EraseLeadingChars();
+ if( aFName.Len() )
+ {
+ if( !bFound && pFList )
+ {
+ sal_Handle hFont = pFList->GetFirstFontInfo( aFName );
+ if( 0 != hFont )
+ {
+ const FontInfo& rFInfo = pFList->GetFontInfo( hFont );
+ if( RTL_TEXTENCODING_DONTKNOW != rFInfo.GetCharSet() )
+ {
+ bFound = TRUE;
+ if( RTL_TEXTENCODING_SYMBOL == rFInfo.GetCharSet() )
+ eEnc = RTL_TEXTENCODING_SYMBOL;
+ }
+ }
+ }
+ if( aFontName.Len() )
+ aFontName += ';';
+ aFontName += aFName;
+ }
+ }
+ }
+
+
+ // einen neuen Kontext anlegen
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( nToken );
+
+ // Styles parsen
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ if( nFontHeight )
+ aItemSet.Put( SvxFontHeightItem( nFontHeight ) );
+ if( bColor )
+ aItemSet.Put( SvxColorItem(aColor) );
+ if( aFontName.Len() )
+ aItemSet.Put( SvxFontItem( eFamily, aFontName, aStyleName,
+ ePitch, eEnc ) );
+
+
+ if( ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo ) )
+ DoPositioning( aItemSet, aPropInfo, pCntxt );
+
+ InsertAttrs( aItemSet, aPropInfo, pCntxt, TRUE );
+ }
+ else
+ {
+ if( nFontHeight )
+ InsertAttr( &aAttrTab.pFontHeight,
+ SvxFontHeightItem( nFontHeight ), pCntxt );
+ if( bColor )
+ InsertAttr( &aAttrTab.pFontColor, SvxColorItem(aColor), pCntxt );
+ if( aFontName.Len() )
+ InsertAttr( &aAttrTab.pFont,
+ SvxFontItem( eFamily, aFontName, aStyleName, ePitch,
+ eEnc ), pCntxt );
+ }
+
+ // den Kontext merken
+ PushContext( pCntxt );
+
+ aFontStack.Insert( nSize, aFontStack.Count() );
+}
+
+void SwHTMLParser::EndFontAttr( int nToken )
+{
+ EndTag( nToken );
+
+ // Stack-Unterlauf in Tabellen vermeiden
+ if( aFontStack.Count() > nFontStMin )
+ aFontStack.Remove( aFontStack.Count()-1, 1 );
+}
+
+/* */
+
+void SwHTMLParser::NewPara()
+{
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( AM_SPACE );
+ else
+ AddParSpace();
+
+ eParaAdjust = SVX_ADJUST_END;
+ String aId, aStyle, aClass;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_ALIGN:
+ eParaAdjust = (SvxAdjust)pOption->GetEnum( aHTMLPAlignTable, eParaAdjust );
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ }
+ }
+
+ // einen neuen Kontext anlegen
+ _HTMLAttrContext *pCntxt =
+ aClass.Len() ? new _HTMLAttrContext( HTML_PARABREAK_ON,
+ RES_POOLCOLL_TEXT, aClass )
+ : new _HTMLAttrContext( HTML_PARABREAK_ON );
+
+ // Styles parsen (Class nicht beruecksichtigen. Das geht nur, solange
+ // keine der CSS1-Properties der Klasse hart formatiert werden muss!!!)
+ if( HasStyleOptions( aStyle, aId, aEmptyStr ) )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ if( ParseStyleOptions( aStyle, aId, aEmptyStr, aItemSet, aPropInfo ) )
+ {
+ ASSERT( !aClass.Len() || !pCSS1Parser->GetClass( aClass ),
+ "Class wird nicht beruecksichtigt" );
+ DoPositioning( aItemSet, aPropInfo, pCntxt );
+ InsertAttrs( aItemSet, aPropInfo, pCntxt );
+ }
+ }
+
+ if( SVX_ADJUST_END != eParaAdjust )
+ InsertAttr( &aAttrTab.pAdjust, SvxAdjustItem(eParaAdjust), pCntxt );
+
+ // und auf den Stack packen
+ PushContext( pCntxt );
+
+ // die aktuelle Vorlage oder deren Attribute setzen
+ SetTxtCollAttrs( aClass.Len() ? pCntxt : 0 );
+
+ // Laufbalkenanzeige
+ ShowStatline();
+
+ ASSERT( !nOpenParaToken, "Jetzt geht ein offenes Absatz-Element verloren" );
+ nOpenParaToken = HTML_PARABREAK_ON;
+}
+
+void SwHTMLParser::EndPara( BOOL bReal )
+{
+ if( HTML_LI_ON==nOpenParaToken && pTable )
+ {
+ const SwNumRule *pNumRule = pPam->GetNode()->GetTxtNode()->GetNumRule();
+ ASSERT( pNumRule, "Wo ist die Numrule geblieben" );
+ if( pNumRule )
+ pDoc->UpdateNumRule( pNumRule->GetName(),
+ pPam->GetPoint()->nNode.GetIndex() );
+ }
+
+ // leere Absaetze werden von Netscape uebersprungen, von uns jetzt auch
+ if( bReal )
+ {
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( AM_SPACE );
+ else
+ AddParSpace();
+ }
+
+ // wenn ein DD oder DT offen war, handelt es sich um eine
+ // implizite Def-Liste, die jetzt beendet werden muss
+ if( (nOpenParaToken==HTML_DT_ON || nOpenParaToken==HTML_DD_ON) &&
+ nDefListDeep)
+ {
+ nDefListDeep--;
+ }
+
+ // den Kontext vom Stack holen. Er kann auch von einer implizit
+ // geoeffneten Definitionsliste kommen
+ _HTMLAttrContext *pCntxt =
+ PopContext( nOpenParaToken ? (nOpenParaToken & ~1)
+ : HTML_PARABREAK_ON );
+
+ // Attribute beenden
+ if( pCntxt )
+ {
+ EndContext( pCntxt );
+ SetAttr(); // Absatz-Atts wegen JavaScript moeglichst schnell setzen
+ delete pCntxt;
+ }
+
+ // und die bisherige Vorlage neu setzen
+ if( bReal )
+ SetTxtCollAttrs();
+
+ nOpenParaToken = 0;
+}
+
+
+void SwHTMLParser::NewHeading( int nToken )
+{
+ eParaAdjust = SVX_ADJUST_END;
+
+ String aId, aStyle, aClass;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_ALIGN:
+ eParaAdjust = (SvxAdjust)pOption->GetEnum( aHTMLPAlignTable, eParaAdjust );
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ }
+ }
+
+ // einen neuen Absatz aufmachen
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( AM_SPACE );
+ else
+ AddParSpace();
+
+ // die passende Vorlage suchen
+ USHORT nTxtColl;
+ switch( nToken )
+ {
+ case HTML_HEAD1_ON: nTxtColl = RES_POOLCOLL_HEADLINE1; break;
+ case HTML_HEAD2_ON: nTxtColl = RES_POOLCOLL_HEADLINE2; break;
+ case HTML_HEAD3_ON: nTxtColl = RES_POOLCOLL_HEADLINE3; break;
+ case HTML_HEAD4_ON: nTxtColl = RES_POOLCOLL_HEADLINE4; break;
+ case HTML_HEAD5_ON: nTxtColl = RES_POOLCOLL_HEADLINE5; break;
+ case HTML_HEAD6_ON: nTxtColl = RES_POOLCOLL_HEADLINE6; break;
+ default: nTxtColl = RES_POOLCOLL_STANDARD; break;
+ }
+
+ // den Kontext anlegen
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( nToken, nTxtColl, aClass );
+
+ // Styles parsen (zu Class siehe auch NewPara)
+ if( HasStyleOptions( aStyle, aId, aEmptyStr ) )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ if( ParseStyleOptions( aStyle, aId, aEmptyStr, aItemSet, aPropInfo ) )
+ {
+ ASSERT( !aClass.Len() || !pCSS1Parser->GetClass( aClass ),
+ "Class wird nicht beruecksichtigt" );
+ DoPositioning( aItemSet, aPropInfo, pCntxt );
+ InsertAttrs( aItemSet, aPropInfo, pCntxt );
+ }
+ }
+
+ if( SVX_ADJUST_END != eParaAdjust )
+ InsertAttr( &aAttrTab.pAdjust, SvxAdjustItem(eParaAdjust), pCntxt );
+
+ // udn auf den Stack packen
+ PushContext( pCntxt );
+
+ // und die Vorlage oder deren Attribute setzen
+ SetTxtCollAttrs( pCntxt );
+
+ nFontStHeadStart = aFontStack.Count();
+
+ // Laufbalkenanzeige
+ ShowStatline();
+}
+
+void SwHTMLParser::EndHeading()
+{
+ // einen neuen Absatz aufmachen
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( AM_SPACE );
+ else
+ AddParSpace();
+
+ // Kontext zu dem Token suchen und vom Stack holen
+ _HTMLAttrContext *pCntxt = 0;
+ USHORT nPos = aContexts.Count();
+ while( !pCntxt && nPos>nContextStMin )
+ {
+ switch( aContexts[--nPos]->GetToken() )
+ {
+ case HTML_HEAD1_ON:
+ case HTML_HEAD2_ON:
+ case HTML_HEAD3_ON:
+ case HTML_HEAD4_ON:
+ case HTML_HEAD5_ON:
+ case HTML_HEAD6_ON:
+ pCntxt = aContexts[nPos];
+ aContexts.Remove( nPos, 1 );
+ break;
+ }
+ }
+
+ // und noch Attribute beenden
+ if( pCntxt )
+ {
+ EndContext( pCntxt );
+ SetAttr(); // Absatz-Atts wegen JavaScript moeglichst schnell setzen
+ delete pCntxt;
+ }
+
+ // die bisherige Vorlage neu setzen
+ SetTxtCollAttrs();
+
+ nFontStHeadStart = nFontStMin;
+}
+
+/* */
+
+void SwHTMLParser::NewTxtFmtColl( int nToken, USHORT nColl )
+{
+ String aId, aStyle, aClass;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ }
+ }
+
+ // einen neuen Absatz aufmachen
+ SwHTMLAppendMode eMode = AM_NORMAL;
+ switch( nToken )
+ {
+ case HTML_LISTING_ON:
+ case HTML_XMP_ON:
+ // Diese beiden Tags werden jetzt auf die PRE-Vorlage gemappt.
+ // Fuer dem Fall, dass ein CLASS angegeben ist, loeschen wir
+ // es damit wir nicht die CLASS der PRE-Vorlage bekommen.
+ aClass = aEmptyStr;
+ case HTML_BLOCKQUOTE_ON:
+ case HTML_BLOCKQUOTE30_ON:
+ case HTML_PREFORMTXT_ON:
+ eMode = AM_SPACE;
+ break;
+ case HTML_ADDRESS_ON:
+ eMode = AM_NOSPACE; // ADDRESS kann auf einen <P> ohne </P> folgen
+ break;
+ case HTML_DT_ON:
+ case HTML_DD_ON:
+ eMode = AM_SOFTNOSPACE;
+ break;
+ default:
+ ASSERT( !this, "unbekannte Vorlage" );
+ break;
+ }
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( eMode );
+ else if( AM_SPACE==eMode )
+ AddParSpace();
+
+ // ... und in einem Kontext merken
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( nToken, nColl, aClass );
+
+ // Styles parsen (zu Class siehe auch NewPara)
+ if( HasStyleOptions( aStyle, aId, aEmptyStr ) )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ if( ParseStyleOptions( aStyle, aId, aEmptyStr, aItemSet, aPropInfo ) )
+ {
+ ASSERT( !aClass.Len() || !pCSS1Parser->GetClass( aClass ),
+ "Class wird nicht beruecksichtigt" );
+ DoPositioning( aItemSet, aPropInfo, pCntxt );
+ InsertAttrs( aItemSet, aPropInfo, pCntxt );
+ }
+ }
+
+ PushContext( pCntxt );
+
+ // die neue Vorlage setzen
+ SetTxtCollAttrs( pCntxt );
+
+ // Laufbalkenanzeige aktualisieren
+ ShowStatline();
+}
+
+void SwHTMLParser::EndTxtFmtColl( int nToken )
+{
+ SwHTMLAppendMode eMode = AM_NORMAL;
+ switch( nToken & ~1 )
+ {
+ case HTML_BLOCKQUOTE_ON:
+ case HTML_BLOCKQUOTE30_ON:
+ case HTML_PREFORMTXT_ON:
+ case HTML_LISTING_ON:
+ case HTML_XMP_ON:
+ eMode = AM_SPACE;
+ break;
+ case HTML_ADDRESS_ON:
+ case HTML_DT_ON:
+ case HTML_DD_ON:
+ eMode = AM_SOFTNOSPACE;
+ break;
+ default:
+ ASSERT( !this, "unbekannte Vorlage" );
+ break;
+ }
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( eMode );
+ else if( AM_SPACE==eMode )
+ AddParSpace();
+
+ // den aktuellen Kontext vom Stack holen
+ _HTMLAttrContext *pCntxt = PopContext( nToken & ~1 );
+
+ // und noch Attribute beenden
+ if( pCntxt )
+ {
+ EndContext( pCntxt );
+ SetAttr(); // Absatz-Atts wegen JavaScript moeglichst schnell setzen
+ delete pCntxt;
+ }
+
+ // und die bisherige Vorlage setzen
+ SetTxtCollAttrs();
+}
+
+/* */
+
+void SwHTMLParser::NewDefList()
+{
+ String aId, aStyle, aClass;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ }
+ }
+
+ // einen neuen Absatz aufmachen
+ BOOL bSpace = (GetNumInfo().GetDepth() + nDefListDeep) == 0;
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( bSpace ? AM_SPACE : AM_SOFTNOSPACE );
+ else if( bSpace )
+ AddParSpace();
+
+ // ein Level mehr
+ nDefListDeep++;
+
+
+ BOOL bInDD = FALSE, bNotInDD = FALSE;
+ USHORT nPos = aContexts.Count();
+ while( !bInDD && !bNotInDD && nPos>nContextStMin )
+ {
+ USHORT nCntxtToken = aContexts[--nPos]->GetToken();
+ switch( nCntxtToken )
+ {
+ case HTML_DEFLIST_ON:
+ case HTML_DIRLIST_ON:
+ case HTML_MENULIST_ON:
+ case HTML_ORDERLIST_ON:
+ case HTML_UNORDERLIST_ON:
+ bNotInDD = TRUE;
+ break;
+ case HTML_DD_ON:
+ bInDD = TRUE;
+ break;
+ }
+ }
+
+
+ // ... und in einem Kontext merken
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( HTML_DEFLIST_ON );
+
+ // darin auch die Raender merken
+ USHORT nLeft=0, nRight=0;
+ short nIndent=0;
+ GetMarginsFromContext( nLeft, nRight, nIndent );
+
+ // Die Einrueckung, die sich schon aus einem DL-ergibt, entspricht der
+ // eines DT auf dem aktuellen Level, und die entspricht der eines
+ // DD auf dem Level davor. Fue einen Level >=2 muss also ein DD-Abstand
+ // hinzugefuegt werden
+ if( !bInDD && nDefListDeep > 1 )
+ {
+
+ // und den der DT-Vorlage des aktuellen Levels
+ SvxLRSpaceItem rLRSpace =
+ pCSS1Parser->GetTxtFmtColl( RES_POOLCOLL_HTML_DD, aEmptyStr )
+ ->GetLRSpace();
+ nLeft += rLRSpace.GetTxtLeft();
+ }
+
+ pCntxt->SetMargins( nLeft, nRight, nIndent );
+
+ // Styles parsen
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ if( ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo ) )
+ {
+ DoPositioning( aItemSet, aPropInfo, pCntxt );
+ InsertAttrs( aItemSet, aPropInfo, pCntxt );
+ }
+ }
+
+ PushContext( pCntxt );
+
+ // die Attribute der neuen Vorlage setzen
+ if( nDefListDeep > 1 )
+ SetTxtCollAttrs( pCntxt );
+}
+
+void SwHTMLParser::EndDefList()
+{
+ BOOL bSpace = (GetNumInfo().GetDepth() + nDefListDeep) == 1;
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( bSpace ? AM_SPACE : AM_SOFTNOSPACE );
+ else if( bSpace )
+ AddParSpace();
+
+ // ein Level weniger
+ if( nDefListDeep > 0 )
+ nDefListDeep--;
+
+ // den aktuellen Kontext vom Stack holen
+ _HTMLAttrContext *pCntxt = PopContext( HTML_DEFLIST_ON );
+
+ // und noch Attribute beenden
+ if( pCntxt )
+ {
+ EndContext( pCntxt );
+ SetAttr(); // Absatz-Atts wegen JavaScript moeglichst schnell setzen
+ delete pCntxt;
+ }
+
+ // und Vorlage setzen
+ SetTxtCollAttrs();
+}
+
+void SwHTMLParser::NewDefListItem( int nToken )
+{
+ // festellen, ob das DD/DT in einer DL vorkommt
+ BOOL bInDefList = FALSE, bNotInDefList = FALSE;
+ USHORT nPos = aContexts.Count();
+ while( !bInDefList && !bNotInDefList && nPos>nContextStMin )
+ {
+ USHORT nCntxtToken = aContexts[--nPos]->GetToken();
+ switch( nCntxtToken )
+ {
+ case HTML_DEFLIST_ON:
+ bInDefList = TRUE;
+ break;
+ case HTML_DIRLIST_ON:
+ case HTML_MENULIST_ON:
+ case HTML_ORDERLIST_ON:
+ case HTML_UNORDERLIST_ON:
+ bNotInDefList = TRUE;
+ break;
+ }
+ }
+
+ // wenn nicht, implizit eine neue DL aufmachen
+ if( !bInDefList )
+ {
+ nDefListDeep++;
+ ASSERT( !nOpenParaToken,
+ "Jetzt geht ein offenes Absatz-Element verloren" );
+ nOpenParaToken = nToken;
+ }
+
+ NewTxtFmtColl( nToken, nToken==HTML_DD_ON ? RES_POOLCOLL_HTML_DD
+ : RES_POOLCOLL_HTML_DT );
+}
+
+void SwHTMLParser::EndDefListItem( int nToken, BOOL bSetColl,
+ BOOL bLastPara )
+{
+ // einen neuen Absatz aufmachen
+ if( !nToken && pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( AM_SOFTNOSPACE );
+
+ // Kontext zu dem Token suchen und vom Stack holen
+ nToken &= ~1;
+ _HTMLAttrContext *pCntxt = 0;
+ USHORT nPos = aContexts.Count();
+ while( !pCntxt && nPos>nContextStMin )
+ {
+ USHORT nCntxtToken = aContexts[--nPos]->GetToken();
+ switch( nCntxtToken )
+ {
+ case HTML_DD_ON:
+ case HTML_DT_ON:
+ if( !nToken || nToken == nCntxtToken )
+ {
+ pCntxt = aContexts[nPos];
+ aContexts.Remove( nPos, 1 );
+ }
+ break;
+ case HTML_DEFLIST_ON:
+ // keine DD/DT ausserhalb der aktuelen DefListe betrachten
+ case HTML_DIRLIST_ON:
+ case HTML_MENULIST_ON:
+ case HTML_ORDERLIST_ON:
+ case HTML_UNORDERLIST_ON:
+ // und auch nicht ausserhalb einer anderen Liste
+ nPos = nContextStMin;
+ break;
+ }
+ }
+
+ // und noch Attribute beenden
+ if( pCntxt )
+ {
+ EndContext( pCntxt );
+ SetAttr(); // Absatz-Atts wegen JavaScript moeglichst schnell setzen
+ delete pCntxt;
+ }
+
+ // und die bisherige Vorlage setzen
+ if( bSetColl )
+ SetTxtCollAttrs();
+}
+
+/* */
+
+BOOL SwHTMLParser::HasCurrentParaFlys( BOOL bNoSurroundOnly,
+ BOOL bSurroundOnly ) const
+{
+ // bNoSurroundOnly: Der Absatz enthaelt mindestens einen Rahmen
+ // ohne Umlauf
+ // bSurroundOnly: Der Absatz enthaelt mindestens einen Rahmen
+ // mit Umlauf aber keinen ohne Umlauf
+ // sonst: Der Absatz enthaelt irgendeinen Rahmen
+ SwNodeIndex& rNodeIdx = pPam->GetPoint()->nNode;
+
+ SwFrmFmt* pFmt;
+ const SwFmtAnchor* pAnchor;
+ const SwPosition* pAPos;
+ const SwSpzFrmFmts& rFrmFmtTbl = *pDoc->GetSpzFrmFmts();
+
+ USHORT i;
+ BOOL bFound = FALSE;
+ for( i=0; i<rFrmFmtTbl.Count(); i++ )
+ {
+ pFmt = rFrmFmtTbl[i];
+ pAnchor = &pFmt->GetAnchor();
+ // Ein Rahmen wurde gefunden, wenn
+ // - er absatzgebunden ist, und
+ // - im aktuellen Absatz verankert ist, und
+ // - jeder absatzgebunene Rahmen zaehlt, oder
+ // - (nur Rahmen oder umlauf zaehlen und ) der Rahmen keinen
+ // Umlauf besitzt
+
+ if( 0 != ( pAPos = pAnchor->GetCntntAnchor()) &&
+ (FLY_AT_CNTNT == pAnchor->GetAnchorId() ||
+ FLY_AUTO_CNTNT == pAnchor->GetAnchorId()) &&
+ pAPos->nNode == rNodeIdx )
+ {
+ if( !(bNoSurroundOnly || bSurroundOnly) )
+ {
+ bFound = TRUE;
+ break;
+ }
+ else
+ {
+ // fix #42282#: Wenn Rahmen mit Umlauf gesucht sind,
+ // auch keine mit Durchlauf beachten. Dabei handelt es
+ // sich (noch) um HIDDEN-Controls, und denen weicht man
+ // besser auch nicht aus.
+ SwSurround eSurround = pFmt->GetSurround().GetSurround();
+ if( bNoSurroundOnly )
+ {
+ if( SURROUND_NONE==eSurround )
+ {
+ bFound = TRUE;
+ break;
+ }
+ }
+ if( bSurroundOnly )
+ {
+ if( SURROUND_NONE==eSurround )
+ {
+ bFound = FALSE;
+ break;
+ }
+ else if( SURROUND_THROUGHT!=eSurround )
+ {
+ bFound = TRUE;
+ // weitersuchen: Es koennten ja noch welche ohne
+ // Umlauf kommen ...
+ }
+ }
+ }
+ }
+ }
+
+ return bFound;
+}
+
+/* */
+
+// die speziellen Methoden zum Einfuegen von Objecten
+
+const SwFmtColl *SwHTMLParser::GetCurrFmtColl() const
+{
+ const SwCntntNode* pCNd = pPam->GetCntntNode();
+ return &pCNd->GetAnyFmtColl();
+}
+
+
+void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
+{
+ SwTxtFmtColl *pCollToSet = 0; // die zu setzende Vorlage
+ SfxItemSet *pItemSet = 0; // der Set fuer harte Attrs
+ USHORT nTopColl = pContext ? pContext->GetTxtFmtColl() : 0;
+ const String& rTopClass = pContext ? pContext->GetClass() : (const String&) aEmptyStr;
+ USHORT nDfltColl = RES_POOLCOLL_TEXT;
+
+ BOOL bInPRE=FALSE; // etwas Kontext Info
+
+ USHORT nLeftMargin = 0, nRightMargin = 0; // die Einzuege und
+ short nFirstLineIndent = 0; // Abstaende
+
+ for( USHORT i=nContextStAttrMin; i<aContexts.Count(); i++ )
+ {
+ const _HTMLAttrContext *pCntxt = aContexts[i];
+
+ USHORT nColl = pCntxt->GetTxtFmtColl();
+ if( nColl )
+ {
+ // Es gibt eine Vorlage, die zu setzen ist. Dann
+ // muss zunaechst einmal entschieden werden,
+ // ob die Vorlage auch gesetzt werden kann
+ BOOL bSetThis = TRUE;
+ switch( nColl )
+ {
+ case USHORT(RES_POOLCOLL_HTML_PRE):
+ bInPRE = TRUE;
+ break;
+ case USHORT(RES_POOLCOLL_TEXT):
+ // <TD><P CLASS=xxx> muss TD.xxx werden
+ if( nDfltColl==RES_POOLCOLL_TABLE ||
+ nDfltColl==RES_POOLCOLL_TABLE_HDLN )
+ nColl = nDfltColl;
+ break;
+ case USHORT(RES_POOLCOLL_HTML_HR):
+ // <HR> auch in <PRE> als Vorlage setzen, sonst kann man sie
+ // nicht mehr exportieren
+ break;
+ default:
+ if( bInPRE )
+ bSetThis = FALSE;
+ break;
+ }
+
+ SwTxtFmtColl *pNewColl =
+ pCSS1Parser->GetTxtFmtColl( nColl, pCntxt->GetClass() );
+
+ if( bSetThis )
+ {
+ // wenn jetzt eine andere Vorlage gesetzt werden soll als
+ // bisher, muss die bishere Vorlage durch harte Attributierung
+ // ersetzt werden
+
+ if( pCollToSet )
+ {
+ // die Attribute, die die bisherige Vorlage setzt
+ // hart einfuegen
+ if( !pItemSet )
+ pItemSet = new SfxItemSet( pCollToSet->GetAttrSet() );
+ else
+ {
+ const SfxItemSet& rCollSet = pCollToSet->GetAttrSet();
+ SfxItemSet aItemSet( *rCollSet.GetPool(),
+ rCollSet.GetRanges() );
+ aItemSet.Set( rCollSet );
+ pItemSet->Put( aItemSet );
+ }
+ // aber die Attribute, die aktuelle Vorlage setzt
+ // entfernen, weil sie sonst spaeter ueberschrieben
+ // werden
+ pItemSet->Differentiate( pNewColl->GetAttrSet() );
+ }
+
+ pCollToSet = pNewColl;
+ }
+ else
+ {
+ // hart Attributieren
+ if( !pItemSet )
+ pItemSet = new SfxItemSet( pNewColl->GetAttrSet() );
+ else
+ {
+ const SfxItemSet& rCollSet = pNewColl->GetAttrSet();
+ SfxItemSet aItemSet( *rCollSet.GetPool(),
+ rCollSet.GetRanges() );
+ aItemSet.Set( rCollSet );
+ pItemSet->Put( aItemSet );
+ }
+ }
+ }
+ else
+ {
+ // vielliecht gibt es ja eine Default-Vorlage?
+ nColl = pCntxt->GetDfltTxtFmtColl();
+ if( nColl )
+ nDfltColl = nColl;
+ }
+
+ // ggf. neue Absatz-Einzuege holen
+ if( pCntxt->IsLRSpaceChanged() )
+ {
+ USHORT nLeft=0, nRight=0;
+
+ pCntxt->GetMargins( nLeft, nRight, nFirstLineIndent );
+ nLeftMargin = nLeft;
+ nRightMargin = nRight;
+ }
+ }
+
+ // wenn im aktuellen Kontext eine neue Vorlage gesetzt werden soll,
+ // muessen deren Absatz-Abstaende noch in den Kontext eingetragen werden
+ if( pContext && nTopColl )
+ {
+ // <TD><P CLASS=xxx> muss TD.xxx werden
+ if( nTopColl==RES_POOLCOLL_TEXT &&
+ (nDfltColl==RES_POOLCOLL_TABLE ||
+ nDfltColl==RES_POOLCOLL_TABLE_HDLN) )
+ nTopColl = nDfltColl;
+
+ const SwTxtFmtColl *pTopColl =
+ pCSS1Parser->GetTxtFmtColl( nTopColl, rTopClass );
+ const SfxItemSet& rItemSet = pTopColl->GetAttrSet();
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState(RES_LR_SPACE,TRUE, &pItem) )
+ {
+ const SvxLRSpaceItem *pLRItem =
+ (const SvxLRSpaceItem *)pItem;
+
+ USHORT nLeft = pLRItem->GetTxtLeft();
+ USHORT nRight = pLRItem->GetRight();
+ nFirstLineIndent = pLRItem->GetTxtFirstLineOfst();
+
+ // In Definitions-Listen enthalten die Abstaende auch die der
+ // vorhergehenden Level
+ if( RES_POOLCOLL_HTML_DD == nTopColl )
+ {
+ const SvxLRSpaceItem& rDTLRSpace = pCSS1Parser
+ ->GetTxtFmtColl( RES_POOLCOLL_HTML_DT, aEmptyStr )
+ ->GetLRSpace();
+ nLeft -= rDTLRSpace.GetTxtLeft();
+ nRight -= rDTLRSpace.GetRight();
+ }
+ else if( RES_POOLCOLL_HTML_DT == nTopColl )
+ {
+ nLeft = 0;
+ nRight = 0;
+ }
+
+ // die Absatz-Abstaende addieren sich
+ nLeftMargin += nLeft;
+ nRightMargin += nRight;
+
+ pContext->SetMargins( nLeftMargin, nRightMargin,
+ nFirstLineIndent );
+ }
+ if( SFX_ITEM_SET == rItemSet.GetItemState(RES_UL_SPACE,TRUE, &pItem) )
+ {
+ const SvxULSpaceItem *pULItem =
+ (const SvxULSpaceItem *)pItem;
+ pContext->SetULSpace( pULItem->GetUpper(), pULItem->GetLower() );
+ }
+ }
+
+ // wenn gar keine Vorlage im Kontext gesetzt ist, Textkoerper nehmen
+ if( !pCollToSet )
+ {
+ pCollToSet = pCSS1Parser->GetTxtCollFromPool( nDfltColl );
+ const SvxLRSpaceItem& rLRItem = pCollToSet->GetLRSpace();
+ if( !nLeftMargin )
+ nLeftMargin = rLRItem.GetTxtLeft();
+ if( !nRightMargin )
+ nRightMargin = rLRItem.GetRight();
+ if( !nFirstLineIndent )
+ nFirstLineIndent = rLRItem.GetTxtFirstLineOfst();
+ }
+
+ // bisherige harte Attributierung des Absatzes entfernen
+ if( aParaAttrs.Count() )
+ {
+ for( i=0; i<aParaAttrs.Count(); i++ )
+ aParaAttrs[i]->Invalidate();
+
+ aParaAttrs.Remove( 0, aParaAttrs.Count() );
+ }
+
+ // Die Vorlage setzen
+ pDoc->SetTxtFmtColl( *pPam, pCollToSet );
+
+ // ggf. noch den Absatz-Einzug korrigieren
+ const SvxLRSpaceItem& rLRItem = pCollToSet->GetLRSpace();
+ BOOL bSetLRSpace;
+
+#ifndef NUM_RELSPACE
+ SwTxtNode* pTxtNode = pPam->GetNode()->GetTxtNode();
+ ASSERT( pTxtNode, "TxtFmtColl an Nicht-Text-Node setzen???" );
+ const SwNodeNum *pNodeNum = pTxtNode->GetNum();
+ if( GetNumInfo().GetDepth() > 0 || pNodeNum )
+ {
+ // Die Werte fuer den linken Rand und den Einzug koennte man auch
+ // aus der NumRule holen. Berechnen ist aber einfacher.
+
+ ASSERT( (GetNumInfo().GetDepth() > 0) ==
+ (GetNumInfo().GetNumRule() != 0),
+ "Keine NumRule in Aufzaehlung oder umgekehrt" );
+
+ ASSERT( pNodeNum, "Kein SwNodeNum am Absatz in Aufzaehlung" );
+
+ BOOL bNumbered = FALSE;
+ if( pNodeNum && !(NO_NUMLEVEL & pNodeNum->GetLevel()) )
+ {
+ // der Erstzeilen-Einzug des List-Items muss noch zu dem
+ // sowieso schon bestehenden addiert werden, weil er im
+ // LI-Kontext nicht gesetzt wurde. Das ist leider nicht moeglich,
+ // weil auch nicht-numerierte Absaetze in diesem Kontext
+ // vorkommen koennen.
+ nFirstLineIndent += HTML_NUMBUL_INDENT;
+ bNumbered = TRUE;
+ }
+
+ // In LI-Absaetzen ausserhalb von OL/UL ist nNumBulListDeep 0, aber
+ // es muss trotzdem um die Breite des Bullet-Zeichens eingerueckt
+ // werden.
+ USHORT nLeftMarginNumBul = (GetNumInfo().GetDepth() * HTML_NUMBUL_MARGINLEFT);
+ if( !nLeftMarginNumBul )
+ nLeftMarginNumBul = (USHORT)(-HTML_NUMBUL_INDENT);
+
+ bSetLRSpace = nLeftMargin != nLeftMarginNumBul ||
+ (bNumbered && nFirstLineIndent != HTML_NUMBUL_INDENT) ||
+ (!bNumbered && nFirstLineIndent) ||
+ nRightMargin != rLRItem.GetRight();
+
+ pTxtNode->SetNumLSpace( !bSetLRSpace );
+ }
+ else
+ {
+#endif
+ bSetLRSpace = nLeftMargin != rLRItem.GetTxtLeft() ||
+ nFirstLineIndent != rLRItem.GetTxtFirstLineOfst() ||
+ nRightMargin != rLRItem.GetRight();
+#ifndef NUM_RELSPACE
+ }
+#endif
+
+ if( bSetLRSpace )
+ {
+ SvxLRSpaceItem aLRItem( rLRItem );
+ aLRItem.SetTxtLeft( nLeftMargin );
+ aLRItem.SetRight( nRightMargin );
+ aLRItem.SetTxtFirstLineOfst( nFirstLineIndent );
+ if( pItemSet )
+ pItemSet->Put( aLRItem );
+ else
+ {
+ NewAttr( &aAttrTab.pLRSpace, aLRItem );
+ aAttrTab.pLRSpace->SetLikePara();
+ aParaAttrs.Insert( aAttrTab.pLRSpace, aParaAttrs.Count() );
+ EndAttr( aAttrTab.pLRSpace, 0, FALSE );
+ }
+ }
+
+ // und nun noch die Attribute setzen
+ if( pItemSet )
+ {
+ InsertParaAttrs( *pItemSet );
+ delete pItemSet;
+ }
+}
+
+/* */
+
+void SwHTMLParser::NewCharFmt( int nToken )
+{
+ String aId, aStyle, aClass;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ }
+ }
+
+ // einen neuen Kontext anlegen
+ _HTMLAttrContext *pCntxt = new _HTMLAttrContext( nToken );
+
+ // die Vorlage setzen und im Kontext merken
+ SwCharFmt* pCFmt = pCSS1Parser->GetChrFmt( nToken, aClass );
+ ASSERT( pCFmt, "keine Zeichenvorlage zu Token gefunden" );
+
+
+ // Styles parsen (zu Class siehe auch NewPara)
+ if( HasStyleOptions( aStyle, aId, aEmptyStr ) )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ if( ParseStyleOptions( aStyle, aId, aEmptyStr, aItemSet, aPropInfo ) )
+ {
+ ASSERT( !aClass.Len() || !pCSS1Parser->GetClass( aClass ),
+ "Class wird nicht beruecksichtigt" );
+ DoPositioning( aItemSet, aPropInfo, pCntxt );
+ InsertAttrs( aItemSet, aPropInfo, pCntxt, TRUE );
+ }
+ }
+
+ // Zeichen-Vorlagen werden in einem eigenen Stack gehalten und
+ // koennen nie durch Styles eingefuegt werden. Das Attribut ist deshalb
+ // auch gar nicht im CSS1-Which-Range enthalten
+ if( pCFmt )
+ InsertAttr( &aAttrTab.pCharFmts, SwFmtCharFmt( pCFmt ), pCntxt );
+
+ // den Kontext merken
+ PushContext( pCntxt );
+}
+
+
+/* */
+
+void SwHTMLParser::InsertSpacer()
+{
+ // und es ggf. durch die Optionen veraendern
+ String aId;
+ SwVertOrient eVertOri = VERT_TOP;
+ SwHoriOrient eHoriOri = HORI_NONE;
+ Size aSize( 0, 0);
+ long nSize = 0;
+ BOOL bPrcWidth = FALSE;
+ BOOL bPrcHeight = FALSE;
+ USHORT nType = HTML_SPTYPE_HORI;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_TYPE:
+ pOption->GetEnum( nType, aHTMLSpacerTypeTable );
+ break;
+ case HTML_O_ALIGN:
+ eVertOri =
+ (SwVertOrient)pOption->GetEnum( aHTMLImgVAlignTable,
+ eVertOri );
+ eHoriOri =
+ (SwHoriOrient)pOption->GetEnum( aHTMLImgHAlignTable,
+ eHoriOri );
+ break;
+ case HTML_O_WIDTH:
+ // erstmal nur als Pixelwerte merken!
+ bPrcWidth = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ aSize.Width() = (long)pOption->GetNumber();
+ break;
+ case HTML_O_HEIGHT:
+ // erstmal nur als Pixelwerte merken!
+ bPrcHeight = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ aSize.Height() = (long)pOption->GetNumber();
+ break;
+ case HTML_O_SIZE:
+ // erstmal nur als Pixelwerte merken!
+ nSize = pOption->GetNumber();
+ break;
+ }
+ }
+
+ switch( nType )
+ {
+ case HTML_SPTYPE_BLOCK:
+ {
+ // einen leeren Textrahmen anlegen
+
+ // den Itemset holen
+ SfxItemSet aFrmSet( pDoc->GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ if( !IsNewDoc() )
+ Reader::ResetFrmFmtAttrs( aFrmSet );
+
+ // den Anker und die Ausrichtung setzen
+ SetAnchorAndAdjustment( eVertOri, eHoriOri, aFrmSet );
+
+ // und noch die Groesse des Rahmens
+ Size aDfltSz( MINFLY, MINFLY );
+ Size aSpace( 0, 0 );
+ SfxItemSet aDummyItemSet( pDoc->GetAttrPool(),
+ pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aDummyPropInfo;
+
+ SetFixSize( aSize, aDfltSz, bPrcWidth, bPrcHeight,
+ aDummyItemSet, aDummyPropInfo, aFrmSet );
+ SetSpace( aSpace, aDummyItemSet, aDummyPropInfo, aFrmSet );
+
+ // den Inhalt schuetzen
+ SvxProtectItem aProtectItem;
+ aProtectItem.SetCntntProtect( TRUE );
+ aFrmSet.Put( aProtectItem );
+
+ // der Rahmen anlegen
+ RndStdIds eAnchorId =
+ ((const SwFmtAnchor &)aFrmSet.Get(RES_ANCHOR)).GetAnchorId();
+ SwFrmFmt *pFlyFmt = pDoc->MakeFlySection( eAnchorId,
+ pPam->GetPoint(), &aFrmSet );
+ // Ggf Frames anlegen und auto-geb. Rahmen registrieren
+ RegisterFlyFrm( pFlyFmt );
+ }
+ break;
+ case HTML_SPTYPE_VERT:
+ if( nSize > 0 )
+ {
+ if( nSize && Application::GetDefaultDevice() )
+ {
+ nSize = Application::GetDefaultDevice()
+ ->PixelToLogic( Size(0,nSize),
+ MapMode(MAP_TWIP) ).Height();
+ }
+
+ // einen Absatz-Abstand setzen
+ SwTxtNode *pTxtNode = 0;
+ if( !pPam->GetPoint()->nContent.GetIndex() )
+ {
+ // den unteren Absatz-Abstand des vorherigen Nodes aendern,
+ // wenn moeglich
+
+ SetAttr(); // noch offene Absatz-Attribute setzen
+
+ pTxtNode = pDoc->GetNodes()[pPam->GetPoint()->nNode.GetIndex()-1]
+ ->GetTxtNode();
+
+ // Wenn der Abstz davor kein Txtenode ist, dann wird jetzt
+ // ein leere Absatz angelegt, der eh schon eine Zeilenhoehe
+ // Abstand erzeugt.
+ if( !pTxtNode )
+ nSize = nSize>HTML_PARSPACE ? nSize-HTML_PARSPACE : 0;
+ }
+
+ if( pTxtNode )
+ {
+ SvxULSpaceItem aULSpace( (const SvxULSpaceItem&)pTxtNode
+ ->SwCntntNode::GetAttr( RES_UL_SPACE ) );
+ aULSpace.SetLower( aULSpace.GetLower() + (USHORT)nSize );
+ pTxtNode->SwCntntNode::SetAttr( aULSpace );
+ }
+ else
+ {
+ NewAttr( &aAttrTab.pULSpace, SvxULSpaceItem( 0, (USHORT)nSize ) );
+ EndAttr( aAttrTab.pULSpace, 0, FALSE );
+
+ AppendTxtNode(); // nicht am Abstand drehen!
+ }
+ }
+ break;
+ case HTML_SPTYPE_HORI:
+ if( nSize > 0 )
+ {
+ // wenn der Absatz noch leer ist, einen Erstzeilen-Einzug
+ // setzen, sondern Sperrschrift ueber einem Space aufspannen
+
+ if( nSize && Application::GetDefaultDevice() )
+ {
+ nSize = Application::GetDefaultDevice()
+ ->PixelToLogic( Size(nSize,0),
+ MapMode(MAP_TWIP) ).Width();
+ }
+
+ if( !pPam->GetPoint()->nContent.GetIndex() )
+ {
+ USHORT nLeft=0, nRight=0;
+ short nIndent = 0;
+
+ GetMarginsFromContextWithNumBul( nLeft, nRight, nIndent );
+ nIndent += (short)nSize;
+
+ SvxLRSpaceItem aLRItem;
+ aLRItem.SetTxtLeft( nLeft );
+ aLRItem.SetRight( nRight );
+ aLRItem.SetTxtFirstLineOfst( nIndent );
+
+ NewAttr( &aAttrTab.pLRSpace, aLRItem );
+ EndAttr( aAttrTab.pLRSpace, 0, FALSE );
+ }
+ else
+ {
+ NewAttr( &aAttrTab.pKerning, SvxKerningItem( (short)nSize ) );
+ String aTmp( ' ' );
+ pDoc->Insert( *pPam, aTmp /*, CHARSET_ANSI*/ );
+ EndAttr( aAttrTab.pKerning );
+ }
+ }
+ }
+}
+
+USHORT SwHTMLParser::ToTwips( USHORT nPixel ) const
+{
+ if( nPixel && Application::GetDefaultDevice() )
+ {
+ long nTwips = Application::GetDefaultDevice()->PixelToLogic(
+ Size( nPixel, nPixel ), MapMode( MAP_TWIP ) ).Width();
+ return nTwips <= USHRT_MAX ? (USHORT)nTwips : USHRT_MAX;
+ }
+ else
+ return nPixel;
+}
+
+const SwTwips SwHTMLParser::GetCurrentBrowseWidth()
+{
+ SwTwips nWidth = SwHTMLTableLayout::GetBrowseWidth( *pDoc );
+ if( nWidth )
+ return nWidth;
+
+ if( !aHTMLPageSize.Width() )
+ {
+ const SwFrmFmt& rPgFmt = pCSS1Parser->GetMasterPageDesc()->GetMaster();
+
+ const SwFmtFrmSize& rSz = rPgFmt.GetFrmSize();
+ const SvxLRSpaceItem& rLR = rPgFmt.GetLRSpace();
+ const SvxULSpaceItem& rUL = rPgFmt.GetULSpace();
+ const SwFmtCol& rCol = rPgFmt.GetCol();
+
+ aHTMLPageSize.Width() = rSz.GetWidth() - rLR.GetLeft() - rLR.GetRight();
+ aHTMLPageSize.Height() = rSz.GetHeight() - rUL.GetUpper() - rUL.GetLower();
+
+ if( 1 < rCol.GetNumCols() )
+ aHTMLPageSize.Width() /= rCol.GetNumCols();
+ }
+
+ return aHTMLPageSize.Width();
+}
+
+
+/* */
+
+void SwHTMLParser::InsertIDOption()
+{
+ String aId;
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ if( HTML_O_ID==pOption->GetToken() )
+ {
+ aId = pOption->GetString();
+ break;
+ }
+ }
+
+ if( aId.Len() )
+ InsertBookmark( aId );
+}
+
+
+/* */
+
+
+void SwHTMLParser::InsertLineBreak()
+{
+ // <BR CLEAR=xxx> wird wie folgt behandelt:
+ // 1.) Es werden nur nur absatzgebundene Rahmen betrachtet, die
+ // im aktuellen Absatz verankert sind.
+ // 2.) Fuer linksbuendig ausgerichtete Rahmen wird bei CLEAR=LEFT
+ // oder ALL und auf rechtsbuendige ausgerichtete Rahmen bei
+ // CLEAR=RIGHT oder ALL der Durchlauf wie folgt geaendert:
+ // 3.) Wenn der Absatz keinen Text enthaelt, bekommt der Rahmen keinen
+ // Umlauf
+ // 4.) sonst erhaelt ein links ausgerichteter Rahmen eine rechten
+ // "nur Anker" Umlauf und recht rechst ausg. Rahmen einen linken
+ // "nur Anker" Umlauf.
+ // 5.) wenn in einem nicht-leeren Absatz der Umlauf eines Rahmens
+ // geaendert wird, wird ein neuer Absatz aufgemacht
+ // 6.) Wenn von keinem Rahmen der Umlauf geaendert wird, wird ein
+ // harter Zeilenumbruch eingefuegt
+
+ String aId, aStyle, aClass; // die ID der Bookmark
+ BOOL bClearLeft = FALSE, bClearRight = FALSE;
+ BOOL bCleared = FALSE; // wurde ein CLEAR ausgefuehrt?
+
+ // dann holen wir mal die Optionen
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_CLEAR:
+ {
+ const String &aClear = pOption->GetString();
+ if( aClear.EqualsIgnoreCaseAscii( sHTML_AL_all ) )
+ {
+ bClearLeft = TRUE;
+ bClearRight = TRUE;
+ }
+ else if( aClear.EqualsIgnoreCaseAscii( sHTML_AL_left ) )
+ bClearLeft = TRUE;
+ else if( aClear.EqualsIgnoreCaseAscii( sHTML_AL_right ) )
+ bClearRight = TRUE;
+ }
+ break;
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = pOption->GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = pOption->GetString();
+ break;
+ }
+ }
+
+ // CLEAR wird nur fuer den aktuellen Absaetz unterstuetzt
+ if( bClearLeft || bClearRight )
+ {
+ SwNodeIndex& rNodeIdx = pPam->GetPoint()->nNode;
+ SwTxtNode* pTxtNd = rNodeIdx.GetNode().GetTxtNode();
+ if( pTxtNd )
+ {
+ SwFrmFmt* pFmt;
+ const SwFmtAnchor* pAnchor;
+ const SwPosition* pAPos;
+ const SwSpzFrmFmts& rFrmFmtTbl = *pDoc->GetSpzFrmFmts();
+
+ for( USHORT i=0; i<rFrmFmtTbl.Count(); i++ )
+ {
+ pFmt = rFrmFmtTbl[i];
+ pAnchor = &pFmt->GetAnchor();
+ if( 0 != ( pAPos = pAnchor->GetCntntAnchor()) &&
+ (FLY_AT_CNTNT == pAnchor->GetAnchorId() ||
+ FLY_AUTO_CNTNT == pAnchor->GetAnchorId()) &&
+ pAPos->nNode == rNodeIdx &&
+ pFmt->GetSurround().GetSurround() != SURROUND_NONE )
+ {
+ SwHoriOrient eHori = RES_DRAWFRMFMT == pFmt->Which()
+ ? HORI_LEFT
+ : pFmt->GetHoriOrient().GetHoriOrient();
+
+ SwSurround eSurround = SURROUND_PARALLEL;
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ {
+ if( bClearLeft && HORI_LEFT==eHori )
+ eSurround = SURROUND_RIGHT;
+ else if( bClearRight && HORI_RIGHT==eHori )
+ eSurround = SURROUND_LEFT;
+ }
+ else if( (bClearLeft && HORI_LEFT==eHori) ||
+ (bClearRight && HORI_RIGHT==eHori) )
+ {
+ eSurround = SURROUND_NONE;
+ }
+
+ if( SURROUND_PARALLEL != eSurround )
+ {
+ SwFmtSurround aSurround( eSurround );
+ if( SURROUND_NONE != eSurround )
+ aSurround.SetAnchorOnly( TRUE );
+ pFmt->SetAttr( aSurround );
+ bCleared = TRUE;
+ }
+ } // Anker ist nicht im Node
+ } // Schleife ueber Fly-Frames
+ } // kein Text-Node
+ } // kein CLEAR
+
+ // Styles parsen
+ SvxFmtBreakItem aBreakItem;
+ BOOL bBreakItem = FALSE;
+ if( HasStyleOptions( aStyle, aId, aClass ) )
+ {
+ SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+
+ if( ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo ) )
+ {
+ if( pCSS1Parser->SetFmtBreak( aItemSet, aPropInfo ) )
+ {
+ aBreakItem = (const SvxFmtBreakItem &)aItemSet.Get( RES_BREAK );
+ bBreakItem = TRUE;
+ }
+ if( aPropInfo.aId.Len() )
+ InsertBookmark( aPropInfo.aId );
+ }
+ }
+
+ if( bBreakItem && SVX_BREAK_PAGE_AFTER==aBreakItem.GetBreak() )
+ {
+ NewAttr( &aAttrTab.pBreak, aBreakItem );
+ EndAttr( aAttrTab.pBreak, 0, FALSE );
+ }
+
+ if( !bCleared && !bBreakItem )
+ {
+ // wenn kein CLEAR ausgefuehrt werden sollte oder konnte, wird
+ // ein Zeilenumbruch eingefgt
+ String sTmp( (sal_Unicode)0x0a ); // make the Mac happy :-)
+ pDoc->Insert( *pPam, sTmp );
+ }
+ else if( pPam->GetPoint()->nContent.GetIndex() )
+ {
+ // wenn ein Claer in einem nicht-leeren Absatz ausgefuehrt wurde,
+ // muss anschliessen ein neuer Absatz aufgemacht werden
+ // MIB 21.02.97: Eigentlich muesste man hier den unteren Absatz-
+ // Absatnd auf 0 drehen. Das geht aber bei sowas wie <BR ..><P>
+ // schief (>Netacpe). Deshalb lassen wir das erstmal.
+ AppendTxtNode( AM_NOSPACE );
+ }
+ if( bBreakItem && SVX_BREAK_PAGE_BEFORE==aBreakItem.GetBreak() )
+ {
+ NewAttr( &aAttrTab.pBreak, aBreakItem );
+ EndAttr( aAttrTab.pBreak, 0, FALSE );
+ }
+}
+
+void SwHTMLParser::InsertHorzRule()
+{
+ USHORT nSize = 0;
+ USHORT nWidth = 0;
+
+ SvxAdjust eAdjust = SVX_ADJUST_END;
+
+ BOOL bPrcWidth = FALSE;
+ BOOL bNoShade = FALSE;
+ BOOL bColor = FALSE;
+
+ Color aColor;
+ String aId;
+
+ // dann holen wir mal die Optionen
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[--i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_ID:
+ aId = pOption->GetString();
+ break;
+ case HTML_O_SIZE:
+ nSize = (USHORT)pOption->GetNumber();
+ break;
+ case HTML_O_WIDTH:
+ bPrcWidth = (pOption->GetString().Search('%') != STRING_NOTFOUND);
+ nWidth = (USHORT)pOption->GetNumber();
+ if( bPrcWidth && nWidth>=100 )
+ {
+ // 100%-Linien sind der default-Fall (keine Attrs neotig)
+ nWidth = 0;
+ bPrcWidth = FALSE;
+ }
+ break;
+ case HTML_O_ALIGN:
+ eAdjust =
+ (SvxAdjust)pOption->GetEnum( aHTMLPAlignTable, eAdjust );
+ break;
+ case HTML_O_NOSHADE:
+ bNoShade = TRUE;
+ break;
+ case HTML_O_COLOR:
+ pOption->GetColor( aColor );
+ bColor = TRUE;
+ break;
+ }
+ }
+
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ AppendTxtNode( AM_NOSPACE );
+ if( nOpenParaToken )
+ EndPara();
+ AppendTxtNode();
+ pPam->Move( fnMoveBackward );
+
+ // ... und in einem Kontext merken
+ _HTMLAttrContext *pCntxt =
+ new _HTMLAttrContext( HTML_HORZRULE, RES_POOLCOLL_HTML_HR, aEmptyStr );
+
+ PushContext( pCntxt );
+
+ // die neue Vorlage setzen
+ SetTxtCollAttrs( pCntxt );
+
+ // die harten Attribute an diesem Absatz werden nie mehr ungueltig
+ if( aParaAttrs.Count() )
+ aParaAttrs.Remove( 0, aParaAttrs.Count() );
+
+ if( nSize>0 || bColor || bNoShade )
+ {
+ // Farbe und/oder Breite der Linie setzen
+ if( !bColor )
+ aColor.SetColor( COL_GRAY );
+
+ SvxBorderLine aBorderLine( &aColor );
+ if( nSize )
+ {
+ long nPWidth = 0;
+ long nPHeight = (long)nSize;
+ SvxCSS1Parser::PixelToTwip( nPWidth, nPHeight );
+ SvxCSS1Parser::SetBorderWidth( aBorderLine, (USHORT)nPHeight,
+ !bNoShade );
+ }
+ else if( bNoShade )
+ {
+ aBorderLine.SetOutWidth( DEF_LINE_WIDTH_2 );
+ }
+ else
+ {
+ aBorderLine.SetOutWidth( DEF_DOUBLE_LINE0_OUT );
+ aBorderLine.SetInWidth( DEF_DOUBLE_LINE0_IN );
+ aBorderLine.SetDistance( DEF_DOUBLE_LINE0_DIST );
+ }
+
+ SvxBoxItem aBoxItem;
+ aBoxItem.SetLine( &aBorderLine, BOX_LINE_BOTTOM );
+ _HTMLAttr* pTmp = new _HTMLAttr( *pPam->GetPoint(), aBoxItem );
+ aSetAttrTab.Insert( pTmp, aSetAttrTab.Count() );
+ }
+ if( nWidth )
+ {
+ // Wenn wir in keiner Tabelle sind, wird die Breitenangabe durch
+ // Absatz-Einzuege "getuerkt". In einer Tabelle macht das wenig
+ // Sinn. Um zu Vermeiden, dass die Linie bei der Breitenberechnung
+ // beruecksichtigt wird, bekommt sie aber trotzdem entsprechendes
+ // LRSpace-Item verpasst.
+#ifdef FIX41370
+ const SwFmtColl *pColl = GetCurrFmtColl();
+ SvxLRSpaceItem aLRItem( pColl->GetLRSpace() );
+#endif
+ if( !pTable )
+ {
+ // Laenge und Ausrichtung der Linie ueber Absatz-Einzuege "tuerken"
+ long nBrowseWidth = GetCurrentBrowseWidth();
+ nWidth = bPrcWidth ? (USHORT)((nWidth*nBrowseWidth) / 100)
+ : ToTwips( (USHORT)nBrowseWidth );
+ if( nWidth < MINLAY )
+ nWidth = MINLAY;
+
+ if( (long)nWidth < nBrowseWidth )
+ {
+#ifndef FIX41370
+ const SwFmtColl *pColl = GetCurrFmtColl();
+ SvxLRSpaceItem aLRItem( pColl->GetLRSpace() );
+#endif
+ long nDist = nBrowseWidth - nWidth;
+
+ switch( eAdjust )
+ {
+ case SVX_ADJUST_RIGHT:
+ aLRItem.SetTxtLeft( (USHORT)nDist );
+ break;
+ case SVX_ADJUST_LEFT:
+ aLRItem.SetRight( (USHORT)nDist );
+ break;
+ case SVX_ADJUST_CENTER:
+ default:
+ nDist /= 2;
+ aLRItem.SetTxtLeft( (USHORT)nDist );
+ aLRItem.SetRight( (USHORT)nDist );
+ break;
+ }
+
+#ifndef FIX41370
+ _HTMLAttr* pTmp = new _HTMLAttr( *pPam->GetPoint(), aLRItem );
+ aSetAttrTab.Insert( pTmp, aSetAttrTab.Count() );
+#endif
+ }
+ }
+
+#ifdef FIX41370
+ _HTMLAttr* pTmp = new _HTMLAttr( *pPam->GetPoint(), aLRItem );
+ aSetAttrTab.Insert( pTmp, aSetAttrTab.Count() );
+#endif
+ }
+
+ // Bookmarks koennen nicht in Hyperlinks eingefueht werden
+ if( aId.Len() )
+ InsertBookmark( aId );
+
+ // den aktuellen Kontext vom Stack holen
+ _HTMLAttrContext *pPoppedContext = PopContext( HTML_HORZRULE );
+ ASSERT( pPoppedContext==pCntxt, "wo kommt denn da ein HR-Kontext her?" );
+ delete pPoppedContext;
+
+ pPam->Move( fnMoveForward );
+
+ // und im Absatz danach die dort aktuelle Vorlage setzen
+ SetTxtCollAttrs();
+}
+
+void SwHTMLParser::ParseMoreMetaOptions()
+{
+ String aName, aContent;
+ BOOL bHTTPEquiv = FALSE, bChanged = FALSE;
+
+ const HTMLOptions *pOptions = GetOptions();
+ for( USHORT i = pOptions->Count(); i; )
+ {
+ const HTMLOption *pOption = (*pOptions)[ --i ];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_NAME:
+ aName = pOption->GetString();
+ bHTTPEquiv = FALSE;
+ break;
+ case HTML_O_HTTPEQUIV:
+ aName = pOption->GetString();
+ bHTTPEquiv = TRUE;
+ break;
+ case HTML_O_CONTENT:
+ aContent = pOption->GetString();
+ break;
+ }
+ }
+
+ // Hier wird es etwas tricky: Wir wissen genau, daá die Dok-Info
+ // nicht geaendert wurde. Deshalb genuegt es, auf Generator und
+ // auf refresh abzufragen, um noch nicht verarbeitete Token zu finden,
+ // denn das sind die einzigen, die die Dok-Info nicht modifizieren.
+ if( aName.EqualsIgnoreCaseAscii( sHTML_META_generator ) ||
+ aName.EqualsIgnoreCaseAscii( sHTML_META_refresh ) ||
+ aName.EqualsIgnoreCaseAscii( sHTML_META_content_type ) ||
+ aName.EqualsIgnoreCaseAscii( sHTML_META_content_script_type ) )
+ return;
+
+ aContent.EraseAllChars( _CR );
+ aContent.EraseAllChars( _LF );
+
+ if( aName.EqualsIgnoreCaseAscii( sHTML_META_sdendnote ) )
+ {
+ FillEndNoteInfo( aContent );
+ return;
+ }
+
+ if( aName.EqualsIgnoreCaseAscii( sHTML_META_sdfootnote ) )
+ {
+ FillFootNoteInfo( aContent );
+ return;
+ }
+
+ String sText(
+ String::CreateFromAscii(TOOLS_CONSTASCII_STRINGPARAM("HTML: <")) );
+ sText.AppendAscii( TOOLS_CONSTASCII_STRINGPARAM(sHTML_meta) );
+ sText.Append( ' ' );
+ if( bHTTPEquiv )
+ sText.AppendAscii( TOOLS_CONSTASCII_STRINGPARAM(sHTML_O_httpequiv) );
+ else
+ sText.AppendAscii( TOOLS_CONSTASCII_STRINGPARAM(sHTML_O_name) );
+ sText.AppendAscii( TOOLS_CONSTASCII_STRINGPARAM("=\"") );
+ sText.Append( aName );
+ sText.AppendAscii( TOOLS_CONSTASCII_STRINGPARAM("\" ") );
+ sText.AppendAscii( TOOLS_CONSTASCII_STRINGPARAM(sHTML_O_content) );
+ sText.AppendAscii( TOOLS_CONSTASCII_STRINGPARAM("=\"") );
+ sText.Append( aContent );
+ sText.AppendAscii( TOOLS_CONSTASCII_STRINGPARAM("\">") );
+
+ SwPostItField aPostItFld(
+ (SwPostItFieldType*)pDoc->GetSysFldType( RES_POSTITFLD ),
+ aEmptyStr, sText, Date() );
+ SwFmtFld aFmtFld( aPostItFld );
+ InsertAttr( aFmtFld );
+}
+
+/* */
+
+#ifdef USED
+void __EXPORT SwHTMLParser::SaveState( int nToken )
+{
+ HTMLParser::SaveState( nToken );
+}
+
+void __EXPORT SwHTMLParser::RestoreState()
+{
+ HTMLParser::RestoreState();
+}
+#endif
+
+/* */
+
+_HTMLAttr::_HTMLAttr( const SwPosition& rPos, const SfxPoolItem& rItem,
+ _HTMLAttr **ppHd )
+ : nSttPara( rPos.nNode ), nEndPara( rPos.nNode ),
+ nSttCntnt( rPos.nContent.GetIndex() ),
+ nEndCntnt(rPos.nContent.GetIndex() ),
+ nCount( 1 ), pNext( 0 ), pPrev( 0 ), ppHead( ppHd ),
+ bInsAtStart( TRUE ), bLikePara( FALSE ), bValid( TRUE )
+{
+ pItem = rItem.Clone();
+}
+
+_HTMLAttr::_HTMLAttr( const _HTMLAttr &rAttr, const SwNodeIndex &rEndPara,
+ USHORT nEndCnt, _HTMLAttr **ppHd ) :
+ nSttPara( rAttr.nSttPara ), nEndPara( rEndPara ),
+ nSttCntnt( rAttr.nSttCntnt ), nEndCntnt( nEndCnt ),
+ nCount( rAttr.nCount ), pNext( 0 ), pPrev( 0 ), ppHead( ppHd ),
+ bInsAtStart( rAttr.bInsAtStart ), bLikePara( rAttr.bLikePara ),
+ bValid( rAttr.bValid )
+{
+ pItem = rAttr.pItem->Clone();
+}
+
+_HTMLAttr::~_HTMLAttr()
+{
+ delete pItem;
+}
+
+_HTMLAttr *_HTMLAttr::Clone( const SwNodeIndex& rEndPara, USHORT nEndCnt ) const
+{
+ // das Attribut mit der alten Start-Position neu anlegen
+ _HTMLAttr *pNew = new _HTMLAttr( *this, rEndPara, nEndCnt, ppHead );
+
+ // die Previous-Liste muss uebernommen werden, die Next-Liste nicht!
+ pNew->pPrev = pPrev;
+
+ return pNew;
+}
+
+void _HTMLAttr::Reset( const SwNodeIndex& rSttPara, USHORT nSttCnt,
+ _HTMLAttr **ppHd )
+{
+ // den Anfang (und das Ende) neu setzen
+ nSttPara = rSttPara;
+ nSttCntnt = nSttCnt;
+ nEndPara = rSttPara;
+ nEndCntnt = nSttCnt;
+
+ // den Head korrigieren und die Verkettungen aufheben
+ pNext = 0;
+ pPrev = 0;
+ ppHead = ppHd;
+}
+
+void _HTMLAttr::InsertPrev( _HTMLAttr *pPrv )
+{
+ ASSERT( !pPrv->pNext || pPrv->pNext == this,
+ "_HTMLAttr::InsertPrev: pNext falsch" );
+ pPrv->pNext = 0;
+
+ ASSERT( 0 == pPrv->ppHead || ppHead == pPrv->ppHead,
+ "_HTMLAttr::InsertPrev: ppHead falsch" );
+ pPrv->ppHead = 0;
+
+ _HTMLAttr *pAttr = this;
+ while( pAttr->GetPrev() )
+ pAttr = pAttr->GetPrev();
+
+ pAttr->pPrev = pPrv;
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.494 2000/09/18 16:04:47 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.493 2000/09/05 14:01:29 mib
+ #78294#: removed support for frameset documents
+
+ Revision 1.492 2000/08/04 10:55:23 jp
+ Soft-/HardHyphens & HardBlanks changed from attribute to unicode character
+
+ Revision 1.491 2000/06/26 09:52:42 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.490 2000/06/13 09:37:51 os
+ using UCB
+
+ Revision 1.489 2000/04/10 12:20:58 mib
+ unicode
+
+ Revision 1.488 2000/03/17 15:19:53 mib
+ #74249#: Call EndAction before collaing DocumentDetected
+
+ Revision 1.487 2000/03/13 15:07:03 jp
+ remove JavaScript
+
+ Revision 1.486 2000/03/03 15:21:01 os
+ StarView remainders removed
+
+ Revision 1.485 2000/03/03 12:44:32 mib
+ Removed JavaScript
+
+ Revision 1.484 2000/02/11 15:41:10 hr
+ #70473# changes for unicode
+
+ Revision 1.483 2000/01/20 11:48:38 jp
+ Bug #72119#: HTML-Template is moved into an other directory
+
+ Revision 1.482 1999/10/21 17:50:12 jp
+ have to change - SearchFile with SfxIniManager, dont use SwFinder for this
+
+ Revision 1.481 1999/09/21 09:50:36 mib
+ multiple text encodings
+
+ Revision 1.480 1999/09/17 12:14:52 mib
+ support of multiple and non system text encodings
+
+ Revision 1.479 1999/07/21 14:11:18 JP
+ Bug #67779#: set any MsgBoxType at the StringErrorInfo
+
+
+ Rev 1.478 21 Jul 1999 16:11:18 JP
+ Bug #67779#: set any MsgBoxType at the StringErrorInfo
+
+ Rev 1.477 11 Jun 1999 10:27:36 MIB
+ #66744#: EnableModified flag
+
+ Rev 1.476 10 Jun 1999 10:34:32 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.475 27 Apr 1999 16:42:26 JP
+ Bug #65314#: neu: IsJavaScriptEnabled
+
+ Rev 1.474 15 Apr 1999 13:48:30 MIB
+ #41833#: Styles fuer A-Tag
+
+ Rev 1.473 13 Apr 1999 10:58:56 MIB
+ #64638#: ASP-tags wie unbekannte Tags behandeln
+
+ Rev 1.472 09 Apr 1999 17:52:00 MA
+ #64467# EndAction und VirDev
+
+ Rev 1.471 08 Apr 1999 17:33:44 MIB
+ #64522#: Styles fuer TD/TH auswerten
+
+ Rev 1.470 08 Apr 1999 12:45:54 MA
+ #64467# F?r die EndAction immer alles per VirDev painten
+
+ Rev 1.469 07 Apr 1999 13:50:46 MIB
+ #64327#: GetBrowseWidth fuer Tabellen in Rahmen richtig
+
+ Rev 1.468 29 Mar 1999 16:06:08 MIB
+ #64051#: Undo auch nach JavaScript anschalten
+
+ Rev 1.467 17 Mar 1999 16:41:52 MIB
+ #63049#: Numerierungen mit relativen Abstaenden
+
+ Rev 1.466 15 Mar 1999 13:14:30 JP
+ Bug #63339#: Einfuegen Doc - Absaetze richtig zusammenfassen
+
+ Rev 1.465 11 Mar 1999 23:55:22 JP
+ Task #63171#: Optionen fuer Feld-/LinkUpdate Doc oder Modul lokal
+
+ Rev 1.464 10 Mar 1999 15:43:22 MIB
+ #62682#: Beim Setzen der Control-Groesse wenn noetig auf die ViewShell warten
+
+ Rev 1.463 25 Feb 1999 17:27:10 MIB
+ #61691#: falscher Assert
+
+ Rev 1.462 25 Feb 1999 16:01:58 MIB
+ #61949#: globale Shell entsorgti, #62261#: <BR CLEAR> auch fuer Controls
+
+ Rev 1.461 23 Feb 1999 08:56:34 MA
+ Syntaxfehler fuer Update
+
+ Rev 1.460 22 Feb 1999 08:40:30 MA
+ 1949globale Shell entsorgt, Shells am RootFrm
+
+ Rev 1.459 11 Jan 1999 10:45:30 MIB
+ #60137#: UCS2-/UTF8-Unterstuetzung jetzt auch fuer F-Sets richtig
+
+ Rev 1.458 18 Dec 1998 09:23:34 MIB
+ #60137#: UTF-8-/UCS-2-Unterstuetzung fuer HTML
+
+ Rev 1.457 04 Dec 1998 14:23:58 MIB
+ #54626#: <LH> ausserhalb von <OL>/<UL> verbessert, entspricht #55072#
+
+ Rev 1.456 02 Dec 1998 10:55:12 MIB
+ #59886#: Kein Assert bei Attributen in Previous-Listen mehr
+
+ Rev 1.455 23 Nov 1998 13:12:46 OM
+ #58216# Enum fuer Aktualisieren von Verknuepfungen
+
+ Rev 1.454 20 Nov 1998 11:51:24 MIB
+ #59064#: Unbekannte Token/<NOSCRIPT> und <NOEMEBED> beibehalten
+
+ Rev 1.453 18 Nov 1998 10:24:30 MIB
+ #59579#: Inhalt von <TITLE> und <NOSCRIPT> nicht zur Filter-Detection heranziehen
+
+ Rev 1.452 13 Nov 1998 14:38:26 MIB
+ Nachtrag zu #58450#: Fuss-/Endnoten: Assert bei Verwendung der Vorlegen weg
+
+ Rev 1.451 11 Nov 1998 17:42:02 MIB
+ #59059#: Beim Abbrechen Pendung-Stack noch aufraeumen
+
+ Rev 1.450 02 Nov 1998 17:14:26 MIB
+ #58480#: Fuss-/Endnoten
+
+ Rev 1.449 23 Oct 1998 09:47:16 MIB
+ #58172#: Nach JS-Aufruf falls vorhanden zuletzt aktive ViewShell wieder setzten
+
+ Rev 1.448 13 Oct 1998 17:28:34 MIB
+ #57901#: Fixed-Font-Namen vom System holen, alten Namen entfernt
+
+ Rev 1.447 07 Oct 1998 11:07:26 MIB
+ #57559#: Erstes Token immer im Continue behandeln, 55072 erstmal raus
+
+ Rev 1.446 01 Sep 1998 12:06:50 MIB
+ #55072#: <LI> ohne <OL>/<UL> verbessert
+
+ Rev 1.445 01 Sep 1998 09:52:02 MIB
+ #55248#: Header beenden, wenn Dokuemnttyp erkannt wurde
+
+ Rev 1.444 31 Aug 1998 18:43:54 MIB
+ #55134#: DocumentDetected zum Anlegen der View aufrufen, bevor Controls eingef. werden
+
+ Rev 1.443 26 Aug 1998 13:29:00 MIB
+ #54970#: bCallNextToken nicht setzen, wenn keine Listbox, Applet, etc. einefuegt wurde
+
+ Rev 1.442 26 Aug 1998 09:30:42 MIB
+ #55144#: Umlauf bei Tabellen in Rahmen richtig setzen und beachten
+
+ Rev 1.441 25 Aug 1998 11:09:42 MIB
+ #50455#: Applet erst beim </APPLET> anlegen, weil erst dann alle Parameter da sind
+
+ Rev 1.440 28 Jul 1998 12:04:58 MIB
+ #54025#: Auf ObjectDying der ViewShell achten, #52559#: JavaScript-Zeilennummern
+
+ Rev 1.439 23 Jul 1998 11:14:12 JP
+ Task #52654#: Einfuegen Doc nicht mit einer CrsrShell sondern mit einen PaM
+
+ Rev 1.438 13 Jul 1998 09:20:28 MIB
+ #50966#: Fonts optional ignorieren
+
+ Rev 1.437 08 Jul 1998 17:19:46 MIB
+ StarScript
+
+ Rev 1.436 02 Jul 1998 15:50:10 JP
+ Modules Path ueber den PathFinder herausfinden
+
+ Rev 1.435 26 Jun 1998 12:21:48 OM
+ #51184# SubType an ExpressionFields richtig setzen und abfragen
+
+ Rev 1.434 15 Jun 1998 15:39:02 JP
+ Bug #51132#: _SetAttr - nicht pAttr sonder pAttr->pItem ist das Attribut
+
+ Rev 1.433 15 Jun 1998 13:13:28 MIB
+ fix #51020#: Im AppendTxtNode Attrs die den ganzen Absatz sofort setzen
+
+ Rev 1.432 08 Jun 1998 12:08:42 MIB
+ fix #50795#: <BODY>-Tag ist sicheres Indiz fuer Text-Dokument
+
+ Rev 1.431 05 Jun 1998 14:04:32 JP
+ Bug #42487#: Sprung zum Mark schon waehrend des Ladens ausfuehren
+
+ Rev 1.430 20 May 1998 10:41:04 MIB
+ fix #50341#: Script-Feld fuer nicht beendetes Script einfuegen
+
+ Rev 1.429 15 May 1998 11:31:02 MIB
+ UNO-Controls statt VC-Controls (noch geht nicht viel)
+
+ Rev 1.428 12 May 1998 15:50:44 JP
+ rund um Flys/DrawObjs im Doc/FESh umgestellt/optimiert
+
+ Rev 1.427 29 Apr 1998 17:37:52 MIB
+ fix: HTML-Seitenvorlage in SW-Doks wieder setzen
+
+ Rev 1.426 21 Apr 1998 13:47:26 MIB
+ fix: Keine Bookmark fuer abs-pos Objekte mit ID einfuegen
+
+ Rev 1.425 16 Apr 1998 11:36:42 MIB
+ Keine HTML-Seiten-Vorlage mehr setzen, Warnings
+
+ Rev 1.424 15 Apr 1998 14:54:36 MIB
+ Zwei-seitige Printing-Extensions
+
+ Rev 1.423 03 Apr 1998 12:22:16 MIB
+ Export des Rahmen-Namens als ID
+
+ Rev 1.422 02 Apr 1998 19:42:40 MIB
+ Positionierung von spaltigen Rahmen
+
+ Rev 1.421 27 Mar 1998 17:28:54 MIB
+ direkte absolute Positionierung und Groessen-Export von Controls und Marquee
+
+ Rev 1.420 27 Mar 1998 09:58:32 MIB
+ direkte Positionierung von Grafiken etc.
+
+ Rev 1.419 25 Mar 1998 12:13:26 MIB
+ abs.-pos. Container angefangen, Statistik-Feld
+
+ Rev 1.418 20 Mar 1998 10:46:12 MIB
+ Font-Listen in Font-Attributen
+
+ Rev 1.417 13 Mar 1998 09:29:36 MIB
+ Rahmen-Anker-Verschiebung entfernt
+
+ Rev 1.416 28 Feb 1998 07:28:58 MH
+ chg: [OW|MTF] -> UNX
+
+ Rev 1.415 27 Feb 1998 16:22:42 JP
+ ObjectDying-MessageItem umbenannt
+
+ Rev 1.414 27 Feb 1998 14:05:42 MIB
+ Auto-gebundene Rahmen
+
+ Rev 1.413 24 Feb 1998 11:31:22 MIB
+ Jetzt auch HTML_LISTING und HTML_XMP vernichtet (wegen #42029#)
+
+ Rev 1.412 20 Feb 1998 19:02:22 MA
+ header
+
+ Rev 1.411 20 Feb 1998 13:27:14 MA
+ headerfiles gewandert
+
+ Rev 1.410 17 Feb 1998 10:51:04 MIB
+ HTML-H6 -> HEADLINE6
+
+ Rev 1.409 16 Feb 1998 12:28:42 MIB
+ DokInfo-Feld jetzt auch fixed
+
+ Rev 1.408 10 Feb 1998 09:51:20 MIB
+ fix: Fuer Absatz-Abstand am Start-/Ende von Listen auch OL/UL/DL beachten
+
+ Rev 1.407 29 Jan 1998 21:34:22 JP
+ GetEndOfIcons ersetzt durch GetEndOfExtras, das auf GetEndOfRedlines mappt
+
+ Rev 1.406 23 Jan 1998 16:10:04 MA
+ includes
+
+ Rev 1.405 22 Jan 1998 19:58:26 JP
+ CTOR des SwPaM umgestellt
+
+ Rev 1.404 19 Jan 1998 16:24:02 MIB
+ Numerierungs-Umbau
+
+ Rev 1.403 17 Dec 1997 15:48:26 ER
+ cast fuer IRIX
+
+ Rev 1.402 16 Dec 1997 18:09:04 JP
+ GetSearchDelim gegen SFX_SEARCH_DELIMITER ausgetauscht
+
+ Rev 1.401 03 Dec 1997 12:42:50 JP
+ Extensions auf dem MAC zulassen
+
+ Rev 1.400 26 Nov 1997 19:09:52 MA
+ includes
+
+ Rev 1.399 25 Nov 1997 11:53:20 TJ
+ include svhtml.hxx
+
+ Rev 1.398 17 Nov 1997 10:17:28 JP
+ Umstellung Numerierung
+
+ Rev 1.397 30 Oct 1997 18:19:26 JP
+ DocumentVorlagen-Verwaltung in die Basisklasse verschoben
+
+ Rev 1.396 20 Oct 1997 12:21:42 MIB
+ fix: Kleine CSS1-Attribute aus Class hart setzen, wenn Vorlage benutzt wird.
+
+ Rev 1.395 20 Oct 1997 09:52:58 MIB
+ Nur fuer absolute positioning benoetigten Code groesstenteils auskommentiert
+
+ Rev 1.394 17 Oct 1997 13:21:30 MIB
+ page-break-xxx auch uber STYLE/CLASS und ID-Optionen
+
+ Rev 1.393 14 Oct 1997 14:36:42 JP
+ pNext vom Ring wurde privat; zugriff ueber GetNext()
+
+ Rev 1.392 14 Oct 1997 14:30:20 MIB
+ fix #44228#: ViewShell-Zerstoerung/Rekonstruktion ueber Clients
+
+ Rev 1.391 09 Oct 1997 14:40:46 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.390 06 Oct 1997 15:41:24 OM
+ Feldumstellung
+
+ Rev 1.389 06 Oct 1997 15:27:24 MIB
+ Kein NewApplet aufrufen, wenn SOLAR_JAVA nicht gesetzt
+
+ Rev 1.388 19 Sep 1997 12:20:24 MIB
+ fix: Seiten-Umbruch auch vor Tabellen temporaer setzen
+
+ Rev 1.387 19 Sep 1997 11:27:38 MIB
+ fix #41370#: HRs in Tabellen-Zellen (nicht freigeschaltet)
+
+ Rev 1.386 18 Sep 1997 16:38:12 JP
+ Continue: beim Einfuegen von nur einem Node nicht falsch zusammenfassen
+
+ Rev 1.385 18 Sep 1997 09:18:34 JP
+ Teilfix fuer Bug 42487
+
+ Rev 1.384 16 Sep 1997 17:23:52 MIB
+ abs. Positioning fuer Absatz-Tags
+
+ Rev 1.383 16 Sep 1997 14:55:36 MIB
+ ITEMID_BOXINFOITEM (voreubergendend) definieren
+
+ Rev 1.382 16 Sep 1997 11:00:44 MIB
+ Kopf-/Fusszeilen ohne Moven von Nodes, autom. Beenden von Bereichen/Rahmen
+
+ Rev 1.381 12 Sep 1997 11:51:20 MIB
+ fix #41136#: &(xxx);-Makros
+
+ Rev 1.380 10 Sep 1997 11:00:24 MIB
+ HTMLReader::IsFormat() wieder raus
+
+ Rev 1.379 09 Sep 1997 14:09:48 MIB
+ Ueberall Browse-View-Breite statt Seitenbreite verwenden
+
+ Rev 1.378 08 Sep 1997 17:41:40 MIB
+ Verankerung von AUTO_CNTNT-Rahmen nicht mehr verschieben
+
+ Rev 1.377 04 Sep 1997 12:36:54 JP
+ Umstellungen fuer FilterDetection im SwModule und SwDLL
+
+ Rev 1.376 02 Sep 1997 20:45:32 OS
+ Header
+
+ Rev 1.375 02 Sep 1997 11:12:08 MIB
+ fix #42192#: Attribute schnellstmoeglich setzen
+
+ Rev 1.374 01 Sep 1997 11:54:46 MIB
+ fix #42679#: Im Titel nur auf </TITLE> achten, keine Schleife mehr.
+
+ Rev 1.373 29 Aug 1997 16:50:20 OS
+ DLL-Umstellung
+
+ Rev 1.372 15 Aug 1997 12:47:46 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.371 14 Aug 1997 13:38:10 MA
+ #42534# Error in NextToken abfragen und State setzen
+
+ Rev 1.370 12 Aug 1997 13:44:22 OS
+ Header-Umstellung
+
+ Rev 1.369 11 Aug 1997 14:06:24 OM
+ Headerfile-Umstellung
+
+ Rev 1.368 07 Aug 1997 13:15:18 MIB
+ fix #42192#: Zeichen-Attribute moeglicht frueh setzen. Noch nicht freigeschaltet
+
+ Rev 1.367 04 Aug 1997 13:53:42 MIB
+ aboslute psoitioning (fuer fast alle Zeichen-Attribute/-Vorlagen)
+
+ Rev 1.366 31 Jul 1997 10:44:44 MIB
+ DIV-Stack weg
+
+ Rev 1.365 25 Jul 1997 13:00:38 MIB
+ fix #40408#: <NOEMBED>-Tag
+
+ Rev 1.364 18 Jul 1997 10:54:32 MIB
+ fix #40951#: In Reschedule/DocDetected absichtlich geaenderte URLs beachten
+
+ Rev 1.363 16 Jul 1997 18:38:40 MIB
+ non-pro: Asserts zur Call-Stack-Kontrolle, kein Assert f. frueher gesetze Attrs
+
+ Rev 1.362 10 Jul 1997 16:44:46 MIB
+ fix #41379#: Keine Absatz-Attribute fuer leere Absaetze (auch hinter Tabellen)
+
+ Rev 1.361 10 Jul 1997 12:02:50 MIB
+ fix #41547#: Keine Tabellen in Tabellen einfuegen
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/swhtml.hxx b/sw/source/filter/html/swhtml.hxx
new file mode 100644
index 000000000000..929243d52c51
--- /dev/null
+++ b/sw/source/filter/html/swhtml.hxx
@@ -0,0 +1,1068 @@
+/*************************************************************************
+ *
+ * $RCSfile: swhtml.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWHTML_HXX
+#define _SWHTML_HXX
+
+#if !defined(_SVSTDARR_XUB_STRLEN_DECL) || !defined(_SVSTDARR_LONGS_DECL) || \
+ !defined(_SVSTDARR_USHORTS_DECL) || !defined(_SVSTDARR_STRINGSDTOR_DECL)
+#ifndef _SVSTDARR_XUB_STRLEN_DECL
+#define _SVSTDARR_XUB_STRLEN
+#endif
+#ifndef _SVSTDARR_LONGS_DECL
+#define _SVSTDARR_LONGS
+#endif
+#ifndef _SVSTDARR_USHORTS_DECL
+#define _SVSTDARR_USHORTS
+#endif
+#ifndef _SVSTDARR_STRINGSDTOR_DECL
+#define _SVSTDARR_STRINGSDTOR
+#endif
+#include <svtools/svstdarr.hxx>
+#endif
+
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+
+#ifndef _SFXHTML_HXX //autogen
+#include <sfx2/sfxhtml.hxx>
+#endif
+
+#ifndef _SFXMACITEM_HXX //autogen
+#include <svtools/macitem.hxx>
+#endif
+
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+
+#ifndef _SVX_SVXENUM_HXX //autogen
+#include <svx/svxenum.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_DRAWING_XSHAPE_HPP_
+#include <com/sun/star/drawing/XShape.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCOMPONENT_HPP_
+#include <com/sun/star/form/XFormComponent.hpp>
+#endif
+
+#include "doc.hxx"
+#include "pam.hxx"
+#include "calbck.hxx"
+
+#include "htmlvsh.hxx"
+
+class SfxMedium;
+class SdrObject;
+class SvxMacroTableDtor;
+class SvStringsDtor;
+
+class ViewShell;
+
+class SwStartNode;
+class SwTxtNode;
+class SwFmtColl;
+class SwTxtFmtColl;
+class SwFmtFld;
+class SwFmtINetFmt;
+class SwField;
+class _HTMLTableContext;
+class SwHTMLForm_Impl;
+class SwHTMLApplet_Impl;
+struct SwHTMLFootEndNote_Impl;
+class HTMLTableCnts;
+struct SwPendingStack;
+class SvxCSS1PropertyInfo;
+
+#define HTML_PARSPACE (MM50)
+
+#define HTML_DFLT_IMG_WIDTH (MM50*4)
+#define HTML_DFLT_IMG_HEIGHT (MM50*2)
+
+// ein par Sachen, die man oefter mal braucht
+extern HTMLOptionEnum __FAR_DATA aHTMLPAlignTable[];
+extern HTMLOptionEnum __FAR_DATA aHTMLImgHAlignTable[];
+extern HTMLOptionEnum __FAR_DATA aHTMLImgVAlignTable[];
+
+
+// der Attribut Stack:
+
+class _HTMLAttr;
+typedef _HTMLAttr *_HTMLAttrPtr;
+SV_DECL_PTRARR( _HTMLAttrs, _HTMLAttrPtr, 5, 5 )
+
+class _HTMLAttr
+{
+ friend class SwHTMLParser;
+ friend class _CellSaveStruct;
+
+ SwNodeIndex nSttPara, nEndPara;
+ xub_StrLen nSttCntnt, nEndCntnt;
+ sal_Bool bInsAtStart : 1;
+ sal_Bool bLikePara : 1; // Attribut ueber dem gesamten Absatz setzen
+ sal_Bool bValid : 1; // ist das Attribut gueltig?
+
+ SfxPoolItem* pItem;
+ sal_uInt16 nCount; // Anzahl noch zu schliessender Attrs mit einem Wert
+ _HTMLAttr *pNext; // noch zu schliessene Attrs mit unterschiedl. Werten
+ _HTMLAttr *pPrev; // bereits geschlossene aber noch nicht gesetze Attrs
+ _HTMLAttr **ppHead; // der Listenkopf
+
+ _HTMLAttr( const SwPosition& rPos, const SfxPoolItem& rItem,
+ _HTMLAttr **pHd=0 );
+
+ _HTMLAttr( const _HTMLAttr &rAttr, const SwNodeIndex &rEndPara,
+ xub_StrLen nEndCnt, _HTMLAttr **pHd );
+
+public:
+
+ ~_HTMLAttr();
+
+ _HTMLAttr *Clone( const SwNodeIndex& rEndPara, xub_StrLen nEndCnt ) const;
+ void Reset( const SwNodeIndex& rSttPara, xub_StrLen nSttCnt,
+ _HTMLAttr **pHd );
+ inline void SetStart( const SwPosition& rPos );
+
+ sal_uInt32 GetSttParaIdx() const { return nSttPara.GetIndex(); }
+ sal_uInt32 GetEndParaIdx() const { return nEndPara.GetIndex(); }
+
+ const SwNodeIndex& GetSttPara() const { return nSttPara; }
+ const SwNodeIndex& GetEndPara() const { return nEndPara; }
+
+ xub_StrLen GetSttCnt() const { return nSttCntnt; }
+ xub_StrLen GetEndCnt() const { return nEndCntnt; }
+
+ sal_Bool IsLikePara() const { return bLikePara; }
+ void SetLikePara( sal_Bool bPara=sal_True ) { bLikePara = sal_True; }
+
+ SfxPoolItem& GetItem() { return *pItem; }
+ const SfxPoolItem& GetItem() const { return *pItem; }
+
+ _HTMLAttr *GetNext() const { return pNext; }
+ void InsertNext( _HTMLAttr *pNxt ) { pNext = pNxt; }
+
+ _HTMLAttr *GetPrev() const { return pPrev; }
+ void InsertPrev( _HTMLAttr *pPrv );
+ void ClearPrev() { pPrev = 0; }
+
+ void SetHead( _HTMLAttr **ppHd ) { ppHead = ppHd; }
+
+ // Beim Setzen von Attributen aus Vorlagen kann es passieren,
+ // dass Attribute doch nicht mehr gesetzt werden sollen. Die zu loeschen
+ // waere sehr aufwendig, da man nicht so genau weiss, wo sie eingekettet
+ // sind. Sie werden deshalb einfach invalidiert und erst beim naechsten
+ // _SetAttr() geloescht.
+ void Invalidate() { bValid = sal_False; }
+ sal_Bool IsValid() const { return bValid; }
+};
+
+// Tabelle der Attribute: Hier ist die Reihenfolge wichtig: Die Attribute
+// vorne in der Tabelle werden in EndAllAttrs auch zuerst gesetzt.
+struct _HTMLAttrTable
+{
+ _HTMLAttr
+ *pKeep, // ::com::sun::star::frame::Frame-Attribure
+ *pBox,
+ *pBrush,
+ *pBreak,
+ *pPageDesc,
+
+ *pLRSpace, // Absatz-Attribute
+ *pULSpace,
+ *pLineSpacing,
+ *pAdjust,
+ *pDropCap,
+ *pSplit,
+ *pWidows,
+ *pOrphans,
+
+ *pCharFmts, // Text-Attribute
+ *pINetFmt,
+
+ *pBold, // Zeichen-Attribute
+ *pItalic,
+ *pStrike,
+ *pUnderline,
+ *pBlink,
+ *pFont,
+ *pFontHeight,
+ *pFontColor,
+ *pEscapement,
+ *pCaseMap,
+ *pKerning, // (nur fuer SPACER)
+ *pCharBrush // Zeichen-Hintergrund
+ ;
+};
+
+class _HTMLAttrContext_SaveDoc;
+
+enum SwHTMLAppendMode {
+ AM_NORMAL, // keine Absatz-Abstand-Behandlung
+ AM_NOSPACE, // Abstand hart auf 0cm setzen
+ AM_SPACE, // Abstand hart auf 0.5cm setzen
+ AM_SOFTNOSPACE, // Abstand nicht setzen aber 0cm merken
+ AM_NONE // gar kein Append
+};
+
+class _HTMLAttrContext
+{
+ _HTMLAttrs aAttrs; // die in dem Kontext gestarteten Attribute
+
+ String aClass; // die Klasse des Kontexts
+
+ _HTMLAttrContext_SaveDoc *pSaveDocContext;
+ SfxItemSet *pFrmItemSet;
+
+ sal_uInt16 nToken; // das Token, zu dem der Kontext gehoehrt
+
+ sal_uInt16 nTxtFmtColl; // eine in dem Kontext begonnene Vorlage oder 0
+
+ sal_uInt16 nLeftMargin; // ein veraenderter linker Rand
+ sal_uInt16 nRightMargin; // ein veraenderter rechter Rand
+ sal_uInt16 nFirstLineIndent; // ein veraenderter Erstzeilen-Einzug
+
+ sal_uInt16 nUpperSpace;
+ sal_uInt16 nLowerSpace;
+
+ SwHTMLAppendMode eAppend;
+
+ sal_Bool bLRSpaceChanged : 1;// linker/rechtr Rand, Einzug veraendert?
+ sal_Bool bULSpaceChanged : 1;// oberer/unterer Rand veraendert?
+ sal_Bool bDfltTxtFmtColl : 1;// nTxtFmtColl ist nur ein default
+ sal_Bool bSpansSection : 1; // Der Kontext spannt eine SwSection auf
+ sal_Bool bPopStack : 1; // Oberhalb liegende Stack-Elemente entf.
+ sal_Bool bFinishPREListingXMP : 1;
+ sal_Bool bRestartPRE : 1;
+ sal_Bool bRestartXMP : 1;
+ sal_Bool bRestartListing : 1;
+
+public:
+ void ClearSaveDocContext();
+
+ _HTMLAttrContext( sal_uInt16 nTokn, sal_uInt16 nPoolId, const String& rClass,
+ sal_Bool bDfltColl=sal_False ) :
+ aClass( rClass ),
+ pSaveDocContext( 0 ), pFrmItemSet( 0 ),
+ nToken( nTokn ), nTxtFmtColl( nPoolId ),
+ nLeftMargin( 0 ), nRightMargin( 0 ), nFirstLineIndent( 0 ),
+ nUpperSpace( 0 ), nLowerSpace( 0 ),
+ eAppend( AM_NONE ),
+ bLRSpaceChanged( sal_False ), bULSpaceChanged( sal_False ),
+ bSpansSection( sal_False ), bPopStack( sal_False ),
+ bFinishPREListingXMP( sal_False ),
+ bRestartPRE( sal_False ), bRestartXMP( sal_False ), bRestartListing( sal_False ),
+ bDfltTxtFmtColl( bDfltColl )
+ {}
+
+ _HTMLAttrContext( sal_uInt16 nTokn ) :
+ pSaveDocContext( 0 ), pFrmItemSet( 0 ),
+ nToken( nTokn ), nTxtFmtColl( 0 ),
+ nLeftMargin( 0 ), nRightMargin( 0 ), nFirstLineIndent( 0 ),
+ nUpperSpace( 0 ), nLowerSpace( 0 ),
+ eAppend( AM_NONE ),
+ bLRSpaceChanged( sal_False ), bULSpaceChanged( sal_False ),
+ bSpansSection( sal_False ), bPopStack( sal_False ),
+ bFinishPREListingXMP( sal_False ),
+ bRestartPRE( sal_False ), bRestartXMP( sal_False ), bRestartListing( sal_False ),
+ bDfltTxtFmtColl( sal_False )
+ {}
+
+ ~_HTMLAttrContext() { ClearSaveDocContext(); delete pFrmItemSet; }
+
+ sal_uInt16 GetToken() const { return nToken; }
+
+ sal_uInt16 GetTxtFmtColl() const { return bDfltTxtFmtColl ? 0 : nTxtFmtColl; }
+ sal_uInt16 GetDfltTxtFmtColl() const { return bDfltTxtFmtColl ? nTxtFmtColl : 0; }
+
+ const String& GetClass() const { return aClass; }
+
+ inline void SetMargins( sal_uInt16 nLeft, sal_uInt16 nRight, short nIndent );
+
+ inline sal_Bool IsLRSpaceChanged() const { return bLRSpaceChanged; }
+ inline void GetMargins( sal_uInt16& nLeft, sal_uInt16& nRight,
+ short &nIndent ) const;
+
+ inline void SetULSpace( sal_uInt16 nUpper, sal_uInt16 nLower );
+ inline sal_Bool IsULSpaceChanged() const { return bULSpaceChanged; }
+ inline void GetULSpace( sal_uInt16& rUpper, sal_uInt16& rLower ) const;
+
+ sal_Bool HasAttrs() const { return aAttrs.Count() != 0; }
+ const _HTMLAttrs& GetAttrs() const { return aAttrs; }
+ _HTMLAttrs& GetAttrs() { return aAttrs; }
+
+ void SetSpansSection( sal_Bool bSet ) { bSpansSection = bSet; }
+ sal_Bool GetSpansSection() const { return bSpansSection; }
+
+ void SetPopStack( sal_Bool bSet ) { bPopStack = bSet; }
+ sal_Bool GetPopStack() const { return bPopStack; }
+
+ sal_Bool HasSaveDocContext() const { return pSaveDocContext!=0; }
+ _HTMLAttrContext_SaveDoc *GetSaveDocContext( sal_Bool bCreate=sal_False );
+
+ const SfxItemSet *GetFrmItemSet() const { return pFrmItemSet; }
+ SfxItemSet *GetFrmItemSet( SwDoc *pCreateDoc );
+
+ void SetFinishPREListingXMP( sal_Bool bSet ) { bFinishPREListingXMP = bSet; }
+ sal_Bool IsFinishPREListingXMP() const { return bFinishPREListingXMP; }
+
+ void SetRestartPRE( sal_Bool bSet ) { bRestartPRE = bSet; }
+ sal_Bool IsRestartPRE() const { return bRestartPRE; }
+
+ void SetRestartXMP( sal_Bool bSet ) { bRestartXMP = bSet; }
+ sal_Bool IsRestartXMP() const { return bRestartXMP; }
+
+ void SetRestartListing( sal_Bool bSet ) { bRestartListing = bSet; }
+ sal_Bool IsRestartListing() const { return bRestartListing; }
+
+ void SetAppendMode( SwHTMLAppendMode eMode=AM_NORMAL ) { eAppend = eMode; }
+ SwHTMLAppendMode GetAppendMode() const { return eAppend; }
+};
+
+typedef _HTMLAttrContext *_HTMLAttrContextPtr;
+SV_DECL_PTRARR( _HTMLAttrContexts, _HTMLAttrContextPtr, 5, 5 )
+
+class HTMLTable;
+class SwCSS1Parser;
+class SwHTMLNumRuleInfo;
+
+typedef ImageMap *ImageMapPtr;
+SV_DECL_PTRARR_DEL( ImageMaps, ImageMapPtr, 1, 1 )
+typedef SwFrmFmt *SwFrmFmtPtr;
+SV_DECL_PTRARR( SwHTMLFrmFmts, SwFrmFmtPtr, 2, 2 )
+
+#define HTML_CNTXT_PROTECT_STACK 0x0001
+#define HTML_CNTXT_STRIP_PARA 0x0002
+#define HTML_CNTXT_KEEP_NUMRULE 0x0004
+#define HTML_CNTXT_HEADER_DIST 0x0008
+#define HTML_CNTXT_FOOTER_DIST 0x0010
+#define HTML_CNTXT_KEEP_ATTRS 0x0020
+
+#define CONTEXT_FLAGS_ABSPOS \
+ (HTML_CNTXT_PROTECT_STACK | \
+ HTML_CNTXT_STRIP_PARA)
+
+#define HTML_FF_BOX 0x0001
+#define HTML_FF_BACKGROUND 0x0002
+#define HTML_FF_PADDING 0x0004
+
+class SwHTMLParser : public SfxHTMLParser, public SwClient
+{
+ friend class _SectionSaveStruct;
+ friend class _CellSaveStruct;
+ friend class _CaptionSaveStruct;
+
+ String aPathToFile;
+ String sBaseURL;
+ String sSaveBaseURL;
+ String aBasicLib;
+ String aBasicModule;
+ String aScriptSource; // Inhalt des aktuellen Script-Blocks
+ String aScriptType; // Type des gelesenen Scripts (StarBasic/VB/JAVA)
+ String aScriptURL; // URL eines Scripts
+ String aStyleSource; // Inhalt des aktuellen Style-Sheets
+ String aContents; // Text des akteullen Marquee, Feldes etc.
+ String sTitle;
+ String aUnknownToken; // ein gestartetes unbekanntes Token
+ String aBulletGrfs[MAXLEVEL];
+ String sJmpMark;
+
+ SvUShorts aBaseFontStack; // Stack fuer <BASEFONT>
+ // Bit 0-2: Fontgroesse (1-7)
+ SvUShorts aFontStack; // Stack fuer <FONT>, <BIG>, <SMALL>
+ // Bit 0-2: Fontgroesse (1-7)
+ // Bit 15: Fontfarbe wurde gesetzt
+
+ _HTMLAttrs aSetAttrTab;// "geschlossene", noch nicht gesetzte Attr.
+ _HTMLAttrs aParaAttrs; // vorlauefige Absatz-Attribute
+ _HTMLAttrTable aAttrTab; // "offene" Attribute
+ _HTMLAttrContexts aContexts;// der aktuelle Attribut/Token-Kontext
+ SwHTMLFrmFmts aMoveFlyFrms;// Fly-Frames, deren Anker verschoben wird
+ SvXub_StrLens aMoveFlyCnts;// und deren Content-Positionen
+
+ SwHTMLApplet_Impl *pAppletImpl; // das aktuelle Applet
+
+ SwCSS1Parser *pCSS1Parser; // der Style-Sheet-Parser
+ SwHTMLNumRuleInfo *pNumRuleInfo;
+ SwPendingStack *pPendStack;
+
+ SwDoc *pDoc;
+ SwPaM *pPam; // SwPosition duerfte doch reichen, oder ??
+ ViewShell *pActionViewShell; // ViewShell, an der das StartAction
+ // gerufen wurde.
+ SwNodeIndex *pSttNdIdx;
+
+ HTMLTable *pTable; // die aktuelle "auesserste" Tabelle
+ SwHTMLForm_Impl *pFormImpl;// die aktuelle Form
+ SdrObject *pMarquee; // aktuelles Marquee
+ SwField *pField; // aktuelles Feld
+ ImageMap *pImageMap; // aktuelle Image-Map
+ ImageMaps *pImageMaps;// alle gelesenen Image-Maps
+ SwHTMLFootEndNote_Impl *pFootEndNoteImpl;
+
+ Size aHTMLPageSize; // die Seitengroesse der HTML-Vorlage
+
+ sal_uInt32 aFontHeights[7]; // die Font-Hoehen 1-7
+ sal_uInt32 nScriptStartLineNr; // Zeilennummer eines Script-Blocks
+
+ sal_uInt16 nBaseFontStMin; //
+ sal_uInt16 nFontStMin; //
+ sal_uInt16 nDefListDeep; //
+ sal_uInt16 nFontStHeadStart; // Elemente im Font-Stack bei <Hn>
+ sal_uInt16 nSBModuleCnt; // Zaehler fuer Basic-Module
+ sal_uInt16 nMissingImgMaps; // Wie viele Image-Maps fehlen noch?
+ sal_uInt16 nParaCnt;
+ sal_uInt16 nContextStMin; // Untergrenze fuer PopContext
+ sal_uInt16 nContextStAttrMin; // Untergrenze fuer Attributierung
+ sal_uInt16 nSelectEntryCnt; // Anzahl der Eintraege der akt. Listbox
+ sal_uInt16 nOpenParaToken; // ein geoeffnetes Absatz-Element
+
+ enum JumpToMarks { JUMPTO_NONE, JUMPTO_MARK, JUMPTO_TABLE, JUMPTO_FRAME,
+ JUMPTO_REGION, JUMPTO_GRAPHIC } eJumpTo;
+
+#ifndef PRODUCT
+ sal_uInt16 nContinue; // Tiefe der Continue-Aufrufe
+#endif
+
+ SvxAdjust eParaAdjust; // Ausrichtung des aktuellen Absatz
+ HTMLScriptLanguage eScriptLang; // die aktuelle Script-Language
+
+ sal_Bool bOldIsHTMLMode : 1; // War's mal ein HTML-Dokument?
+
+ sal_Bool bDocInitalized : 1; // Dokument bzw. Shell wurden initialisiert
+ // Flag um doppeltes init durch Rekursion
+ // zu verhindern.
+ sal_Bool bViewCreated : 1; // die View wurde schon erzeugt (asynchron)
+ sal_Bool bSetCrsr : 1; // Crsr wieder auf den Anfang setzen
+ sal_Bool bSetModEnabled : 1;
+
+ sal_Bool bInFloatingFrame : 1; // Wir sind in einen Floating ::com::sun::star::frame::Frame
+ sal_Bool bInField : 1;
+ sal_Bool bKeepUnknown : 1; // unbekannte/nicht unterstuetze Tokens beh.
+ // 8
+ sal_Bool bCallNextToken : 1; // In Tabellen: NextToken in jedem Fall rufen
+ sal_Bool bIgnoreRawData : 1; // Inhalt eines Scripts/Styles ignorieren.
+ sal_Bool bLBEntrySelected : 1; // Ist der aktuelle Listbox-Eintrag selekt.
+ sal_Bool bTAIgnoreNewPara : 1; // naechstes LF in TextArea ignorieren?
+ sal_Bool bFixMarqueeWidth : 1; // Groesse einer Laufschrift anpassen?
+ sal_Bool bFixMarqueeHeight : 1;
+
+ sal_Bool bUpperSpace : 1; // obererer Absatz-Abstand wird benoetigt
+ sal_Bool bNoParSpace : 1;
+ // 16
+
+ sal_Bool bAnyStarBasic : 1; // gibt es ueberhaupt ein StarBasic-Modul
+ sal_Bool bInNoEmbed : 1; // Wir sind in einem NOEMBED-Bereich
+
+ sal_Bool bInTitle : 1; // Wir sind im Titel
+
+ sal_Bool bChkJumpMark : 1; // springe ggfs. zu einem vorgegebenem Mark
+ sal_Bool bUpdateDocStat : 1;
+ sal_Bool bFixSelectWidth : 1; // Breite eines Selects neu setzen?
+ sal_Bool bFixSelectHeight : 1; // Breite eines Selects neu setzen?
+ sal_Bool bTextArea : 1;
+ // 24
+ sal_Bool bSelect : 1;
+ sal_Bool bInFootEndNoteAnchor : 1;
+ sal_Bool bInFootEndNoteSymbol : 1;
+ sal_Bool bDataAvailableLinkSet : 1;
+
+ SvRefBaseRef aLoadEnv;
+
+ void DeleteFormImpl();
+
+ void DocumentDetected();
+ void Show();
+ void ShowStatline();
+ ViewShell *CallStartAction( ViewShell *pVSh = 0, sal_Bool bChkPtr = sal_True );
+ ViewShell *CallEndAction( sal_Bool bChkAction = sal_False, sal_Bool bChkPtr = sal_True );
+ ViewShell *CheckActionViewShell();
+
+ inline void GetSaveAndSetOwnBaseURL();
+ inline void SetSaveBaseURL();
+
+ // Attribute am Dok setzen
+ void _SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable, _HTMLAttrs *pPostIts );
+ inline void SetAttr( sal_Bool bChkEnd = sal_True, sal_Bool bBeforeTable = sal_False,
+ _HTMLAttrs *pPostIts = 0 )
+ {
+ if( aSetAttrTab.Count() || aMoveFlyFrms.Count() )
+ _SetAttr( bChkEnd, bBeforeTable, pPostIts );
+ }
+
+ _HTMLAttr **GetAttrTabEntry( sal_uInt16 nWhich );
+
+ // Einen neuen Textknoten an PaM-Position anlegen
+ sal_Bool AppendTxtNode( SwHTMLAppendMode eMode=AM_NORMAL, sal_Bool bUpdateNum=sal_True );
+ void AddParSpace();
+
+ // Ein Attribut beginnen/beenden
+ // ppDepAttr gibt einen Attribut-Tabellen-Eintrag an, dessen Attribute
+ // gesetzt sein muessen, bevor das Attribut beendet werden darf
+ void NewAttr( _HTMLAttr **ppAttr, const SfxPoolItem& rItem );
+ void EndAttr( _HTMLAttr *pAttr, _HTMLAttr **ppDepAttr=0,
+ sal_Bool bChkEmpty=sal_True );
+ void DeleteAttr( _HTMLAttr* pAttr );
+
+ void EndContextAttrs( _HTMLAttrContext *pContext, sal_Bool bRemove=sal_False );
+ void SaveAttrTab( _HTMLAttrTable& rNewAttrTab );
+ void SplitAttrTab( const SwPosition& rNewPos );
+ void SplitAttrTab( _HTMLAttrTable& rNewAttrTab, sal_Bool bMoveEndBack = sal_True );
+ void RestoreAttrTab( const _HTMLAttrTable& rNewAttrTab,
+ sal_Bool bSetNewStart = sal_False );
+ void InsertAttr( const SfxPoolItem& rItem, sal_Bool bLikePara = sal_False,
+ sal_Bool bInsAtStart=sal_False );
+ void InsertAttrs( _HTMLAttrs& rAttrs );
+
+ sal_Bool DoPositioning( SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo &rPropInfo,
+ _HTMLAttrContext *pContext );
+ sal_Bool CreateContainer( const String& rClass, SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo &rPropInfo,
+ _HTMLAttrContext *pContext );
+ sal_Bool EndSection( sal_Bool bLFStripped=sal_False );
+
+ void InsertAttrs( SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo,
+ _HTMLAttrContext *pContext, sal_Bool bCharLvl=sal_False );
+ void InsertAttr( _HTMLAttr **ppAttr, const SfxPoolItem & rItem,
+ _HTMLAttrContext *pCntxt );
+ void SplitPREListingXMP( _HTMLAttrContext *pCntxt );
+ void FixHeaderFooterDistance( sal_Bool bHeader, const SwPosition *pOldPos );
+
+ void EndContext( _HTMLAttrContext *pContext );
+ void ClearContext( _HTMLAttrContext *pContext );
+
+ const SwFmtColl *GetCurrFmtColl() const;
+
+ const SwTwips GetCurrentBrowseWidth() /* const */;
+
+ SwHTMLNumRuleInfo& GetNumInfo() { return *pNumRuleInfo; }
+ void SetNodeNum( sal_uInt8 nLevel );
+#ifndef NUM_RELSPACE
+ void UpdateNumRuleInTable();
+#endif
+
+ // Verwalten von Absatz-Vorlagen
+
+ // die Vorlagen auf dem Stack bzw. deren Attribute setzen
+ void SetTxtCollAttrs( _HTMLAttrContext *pContext = 0 );
+
+ // die Attribute eine Vorlage zu dem Item-Set hinzufuegen
+ void AddFormatAttrs( SfxItemSet& rItemSet, const SwFmt& rFmt ) const;
+
+ // die Attribute einer Vorlage aus dem Item-Set entfernen
+ void RemoveFormatAttrs( SfxItemSet& rItemSet, const SwFmt& rFmt ) const;
+
+ void InsertParaAttrs( const SfxItemSet& rItemSet );
+
+ // Verwalten des Attribut-Kontexts
+
+ // aktuellen Kontext merken
+ inline void PushContext( _HTMLAttrContext *pCntxt );
+
+ // den obersten/spezifizierten Kontext holen, aber nicht ausserhalb
+ // des Kontexts mit Token nLimit suchen. Wenn bRemove gesetzt ist,
+ // wird er entfernt
+ _HTMLAttrContext *PopContext( sal_uInt16 nToken=0, sal_uInt16 nLimit=0,
+ sal_Bool bRemove=sal_True );
+ inline const _HTMLAttrContext *GetTopContext() const;
+
+ sal_Bool GetMarginsFromContext( sal_uInt16 &nLeft, sal_uInt16 &nRight, short& nIndent,
+ sal_Bool bIgnoreCurrent=sal_False ) const;
+ sal_Bool GetMarginsFromContextWithNumBul( sal_uInt16 &nLeft, sal_uInt16 &nRight,
+ short& nIndent ) const;
+ void GetULSpaceFromContext( sal_uInt16 &rUpper, sal_uInt16 &rLower ) const;
+
+
+ void MovePageDescAttrs( SwNode *pSrcNd, sal_uInt32 nDestIdx, sal_Bool bFmtBreak );
+
+ // Behandlung von Tags auf Absatz-Ebene
+
+ // <P> und <H1> bis <H6>
+ void NewPara();
+ void EndPara( sal_Bool bReal = sal_False );
+ void NewHeading( int nToken );
+ void EndHeading();
+
+ // <ADDRESS>, <BLOCKQUOTE> und <PRE>
+ void NewTxtFmtColl( int nToken, sal_uInt16 nPoolId );
+ void EndTxtFmtColl( int nToken );
+
+ // <DIV> und <CENTER>
+ void NewDivision( int nToken );
+ void EndDivision( int nToken );
+
+ // Fly-Frames einfuegen/verlassen
+ void InsertFlyFrame( const SfxItemSet& rItemSet, _HTMLAttrContext *pCntxt,
+ const String& rId, sal_uInt16 nFlags );
+
+ void SaveDocContext( _HTMLAttrContext *pCntxt, sal_uInt16 nFlags,
+ const SwPosition *pNewPos );
+ void RestoreDocContext( _HTMLAttrContext *pCntxt );
+
+ // alle durch <DIV> aufgespannten Bereiche verlassen
+ sal_Bool EndSections( sal_Bool bLFStripped );
+
+ // <MULTICOL>
+ void NewMultiCol();
+ void EndMultiCol();
+
+ // <MARQUEE>
+ void NewMarquee( HTMLTable *pCurTable=0 );
+ void EndMarquee();
+ void InsertMarqueeText();
+
+ // Behandluung von Listen
+
+ // Numerierungs <OL> und Aufzaehlungs-Listen <UL> mit <LI>
+ void NewNumBulList( int nToken );
+ void EndNumBulList( int nToken=0 );
+ void NewNumBulListItem( int nToken );
+ void EndNumBulListItem( int nToken=0, sal_Bool bSetColl=sal_True,
+ sal_Bool bLastPara=sal_False );
+
+ // Definitions-Listen <DL> mit <DD>, <DT>
+ void NewDefList();
+ void EndDefList();
+ void NewDefListItem( int nToken );
+ void EndDefListItem( int nToken=0, sal_Bool bSetColl=sal_True,
+ sal_Bool bLastPara=sal_False );
+
+
+ // Behandlung von Tags auf Zeichen-Ebene
+
+ // Tags wie <B>, <I> etc behandeln, die ein bestimmtes Attribut
+ // an und ausschalten, oder die wie SPAN nur Attribute aus Styles holen
+ void NewStdAttr( int nToken );
+ void NewStdAttr( int nToken, _HTMLAttr **ppAttr,
+ const SfxPoolItem & rItem );
+ void EndTag( int nToken );
+
+ // Font-Attribute behandeln
+ void NewBasefontAttr(); // fuer <BASEFONT>
+ void EndBasefontAttr();
+ void NewFontAttr( int nToken ); // fuer <FONT>, <BIG> und <SMALL>
+ void EndFontAttr( int nToken );
+
+ // Tags, die durch Zeichenvorlagen realisiert werden
+ void NewCharFmt( int nToken );
+
+ // <SDFIELD>
+public:
+ static sal_uInt16 GetNumType( const String& rStr, sal_uInt16 eDfltType );
+private:
+ void NewField();
+ void EndField();
+ void InsertFieldText();
+
+ // <SPACER>
+ void InsertSpacer();
+
+ // Einfuegen von Grafiken, Plugins und Applets
+
+ // Image-Maps suchen und mit Grafik-Nodes verbinden
+ ImageMap *FindImageMap( const String& rURL ) const;
+ void ConnectImageMaps();
+
+ // Verankerung eines Fly-Frames bestimmen und entsprechende Attribute
+ // in den Attrset setzen (htmlgrin.cxx)
+ void SetAnchorAndAdjustment( SwVertOrient eVertOri,
+ SwHoriOrient eHoriOri,
+ const SfxItemSet &rItemSet,
+ const SvxCSS1PropertyInfo &rPropInfo,
+ SfxItemSet& rFrmSet );
+ void SetAnchorAndAdjustment( SwVertOrient eVertOri,
+ SwHoriOrient eHoriOri,
+ SfxItemSet& rFrmSet,
+ sal_Bool bDontAppend=sal_False );
+ void SetAnchorAndAdjustment( const SfxItemSet &rItemSet,
+ const SvxCSS1PropertyInfo &rPropInfo,
+ SfxItemSet &rFrmItemSet );
+
+ void SetFrmFmtAttrs( SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo,
+ sal_uInt16 nFlags, SfxItemSet &rFrmItemSet );
+
+ // Frames anlegen und Auto-gebundene Rahmen registrieren
+ void RegisterFlyFrm( SwFrmFmt *pFlyFrm );
+
+ // Die Groesse des Fly-Frames an die Vorgaben und Gegebenheiten anpassen
+ // (nicht fuer Grafiken, deshalb htmlplug.cxx)
+ void SetFixSize( const Size& rPixSize, const Size& rTwipDfltSize,
+ sal_Bool bPrcWidth, sal_Bool bPrcHeight,
+ SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo,
+ SfxItemSet& rFlyItemSet );
+ void SetVarSize( SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo,
+ SfxItemSet& rFlyItemSet, SwTwips nDfltWidth=MINLAY,
+ sal_uInt8 nDltPrcWidth=0 );
+ void SetSpace( const Size& rPixSpace, SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo &rPropInfo, SfxItemSet& rFlyItemSet );
+
+ sal_uInt16 IncGrfsThatResizeTable();
+
+ void GetDefaultScriptType( ScriptType& rType,
+ String& rTypeStr ) const;
+
+ // die eigentlichen Einfuege-Methoden fuer <IMG>, <EMBED> und <APPLET>
+ // und <PARAM>
+ void InsertImage(); // htmlgrin.cxx
+ void InsertEmbed(); // htmlplug.cxx
+
+ void InsertApplet(); // htmlplug.cxx
+ void EndApplet(); // CommandLine mit Applet verkn. (htmlplug.cxx)
+ void InsertParam(); // htmlplug.cxx
+
+ void InsertFloatingFrame();
+ void EndFloatingFrame() { bInFloatingFrame = sal_False; }
+
+ // <BODY>-Tag auswerten: Hintergrund-Grafiken und -Farben setzen (htmlgrin.cxx)
+ void InsertBodyOptions();
+
+
+ // Einfuegen von Links und ::com::sun::star::text::Bookmarks (htmlgrin.cxx)
+
+ // <A>-Tag auswerten: einen Link bzw. eine ::com::sun::star::text::Bookmark einfuegen
+ void NewAnchor();
+ void EndAnchor();
+
+ // eine ::com::sun::star::text::Bookmark einfuegen
+ void InsertBookmark( const String& rName );
+
+
+ void InsertCommentText( const sal_Char *pTag = 0 );
+ void InsertComment( const String& rName, const sal_Char *pTag = 0 );
+
+ // sind im aktuellen Absatz ::com::sun::star::text::Bookmarks vorhanden?
+ sal_Bool HasCurrentParaBookmarks( sal_Bool bIgnoreStack=sal_False ) const;
+
+
+ // Einfuegen von Script/Basic-Elementen
+
+ // das zueletzt gelsene Basic-Modul parsen (htmlbas.cxx)
+ void NewScript();
+ void EndScript();
+
+ void AddScriptSource();
+
+ // ein Event in die SFX-Konfiguation eintragen (htmlbas.cxx)
+ void InsertBasicDocEvent( sal_uInt16 nEvent, const String& rName,
+ ScriptType eScrType, const String& rScrType );
+
+ // ein Event an ein VC-Control anhaengen (htmlform.cxx)
+ void InsertBasicCtrlEvent( sal_uInt16 nEvent, const String& rName );
+
+ // Einfuegen von Styles
+
+ // <STYLE>
+ void NewStyle();
+ void EndStyle();
+
+ inline sal_Bool HasStyleOptions( const String &rStyle, const String &rId,
+ const String &rClass );
+ sal_Bool ParseStyleOptions( const String &rStyle, const String &rId,
+ const String &rClass, SfxItemSet &rItemSet,
+ SvxCSS1PropertyInfo &rPropInfo );
+
+
+ // Einfuegen von Controls und ::com::sun::star::form::Forms (htmlform.cxx)
+
+ // Ein Draw-Objekt in das Dokuement eintragen
+ void InsertDrawObject( SdrObject* pNewDrawObj, const Size& rSpace,
+ SwVertOrient eVertOri,
+ SwHoriOrient eHoriOri,
+ SfxItemSet& rCSS1ItemSet,
+ SvxCSS1PropertyInfo& rCSS1PropInfo,
+ sal_Bool bHidden=sal_False );
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > InsertControl( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent > & rFormComp,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rFCompPropSet,
+ const Size& rSize,
+ SwVertOrient eVertOri,
+ SwHoriOrient eHoriOri,
+ SfxItemSet& rCSS1ItemSet,
+ SvxCSS1PropertyInfo& rCSS1PropInfo,
+ const SvxMacroTableDtor& rMacroTbl,
+ const SvStringsDtor& rUnoMacroTbl,
+ const SvStringsDtor& rUnoMacroParamTbl,
+ sal_Bool bSetPropSet = sal_True,
+ sal_Bool bHidden = sal_False );
+ void SetControlSize( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rShape, const Size& rTextSz,
+ sal_Bool bMinWidth, sal_Bool bMinHeight, int nToken );
+ void SetPendingControlSize( int nToken );
+
+public:
+ void ResizeDrawObject( SdrObject* pObj, SwTwips nWidth );
+private:
+ void RegisterDrawObjectToTable( HTMLTable *pCurTable, SdrObject* pObj,
+ sal_uInt8 nWidth );
+
+
+ // eine neue Form beginnen
+ void NewForm( sal_Bool bAppend=sal_True );
+ void EndForm( sal_Bool bAppend=sal_True );
+
+ // die Einfuege-Methoden fuer <INPUT>, <TEXTAREA> und <SELECT>
+ void InsertInput();
+
+ void NewTextArea();
+ void InsertTextAreaText( sal_uInt16 nToken );
+ void EndTextArea();
+
+ void NewSelect();
+ void InsertSelectOption();
+ void InsertSelectText();
+ void EndSelect();
+
+ // Einfuegen von Tabellen (htmltab.cxx)
+
+public: // wird in Tabellen benoetigt
+
+ // einen Boxen-Inhalt hinter dem angegebenen Node einfuegen
+ const SwStartNode *InsertTableSection( const SwStartNode *pPrevStNd );
+
+ // Einen Boxen-Inhalt am Ende der Tabelle einfuegen, in der der PaM
+ // steht un den PaM in die Zelle schieben
+ const SwStartNode *InsertTableSection( sal_uInt16 nPoolId );
+
+ // Einfeuge-Methoden fuer die diversen Tabellen-Tags
+ HTMLTableCnts *InsertTableContents( sal_Bool bHead );
+
+private:
+
+ // Eine leere Boxen am Ende der Tabelle einfuegen. Der PaM wird
+ // NICHT in die Zelle verschoben!
+ const SwStartNode *InsertEmptyTableSection();
+
+
+ // Eine Section fuer die voruebergende Aufnahme der Tabellen-Ueberschrift
+ // anlegen
+ SwStartNode *InsertTempTableCaptionSection();
+
+ void BuildTableCell( HTMLTable *pTable, sal_Bool bReadOptions, sal_Bool bHead );
+ void BuildTableRow( HTMLTable *pTable, sal_Bool bReadOptions,
+ SvxAdjust eGrpAdjust, SwVertOrient eVertOri );
+ void BuildTableSection( HTMLTable *pTable, sal_Bool bReadOptions, sal_Bool bHead );
+ void BuildTableColGroup( HTMLTable *pTable, sal_Bool bReadOptions );
+ void BuildTableCaption( HTMLTable *pTable );
+ HTMLTable *BuildTable( SvxAdjust eCellAdjust,
+ sal_Bool bIsParentHead = sal_False,
+ sal_Bool bHasParentSection=sal_True,
+ sal_Bool bIsInMulticol = sal_False,
+ sal_Bool bHasToFlow = sal_False );
+
+
+ // sonstiges ...
+
+ void ParseMoreMetaOptions();
+
+ sal_Bool FileDownload( const String& rURL, String& rStr );
+ void InsertLink();
+
+ void InsertIDOption();
+ void InsertLineBreak();
+ void InsertHorzRule();
+
+ void FillEndNoteInfo( const String& rContent );
+ void FillFootNoteInfo( const String& rContent );
+ void InsertFootEndNote( const String& rName, sal_Bool bEndNote, sal_Bool bFixed );
+ void FinishFootEndNote();
+ void InsertFootEndNoteText();
+ SwNodeIndex *GetFootEndNoteSection( const String& rName );
+ void DeleteFootEndNoteImpl();
+
+ // Line-Break am Ende eines Absatzes entfernen
+ xub_StrLen StripTrailingLF();
+
+ // Einen leeren Absatz an der PaM-Position entfernen
+ void StripTrailingPara();
+
+ // sind im aktuellen Absatz Fly-Frames vorhanden?
+ sal_Bool HasCurrentParaFlys( sal_Bool bNoSurroundOnly = sal_False,
+ sal_Bool bSurroundOnly = sal_False ) const;
+
+public: // wird in Tabellen benoetigt
+
+ // generieren eines BrushItems (mit new) oder 0
+ SvxBrushItem* CreateBrushItem( const Color *pColor,
+ const String &rImageURL,
+ const String &rStyle,
+ const String &rId,
+ const String &rClass );
+
+protected:
+ // wird fuer jedes Token gerufen, das in CallParser erkannt wird
+ virtual void NextToken( int nToken );
+ virtual ~SwHTMLParser();
+
+ // wird das Dok geloescht, ist auch der Parser zu loeschen
+ virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew );
+
+public:
+
+ SwHTMLParser( SwDoc* pD, const SwPaM& rCrsr, SvStream& rIn,
+ const String& rFileName, int bReadNewDoc = sal_True,
+ SfxMedium* pMed = 0, sal_Bool bReadUTF8 = sal_False );
+
+ virtual SvParserState CallParser(); // Aufruf des Parsers
+
+
+ sal_uInt16 ToTwips( sal_uInt16 nPixel ) const;
+
+ // fuers asynchrone lesen aus dem SvStream
+ virtual void Continue( int nToken );
+};
+
+
+struct SwPendingStackData
+{
+ virtual ~SwPendingStackData() {}
+};
+
+struct SwPendingStack
+{
+ int nToken;
+ SwPendingStackData* pData;
+ SwPendingStack* pNext;
+
+ SwPendingStack( int nTkn, SwPendingStack* pNxt )
+ : nToken( nTkn ), pData( 0 ), pNext( pNxt )
+ {}
+};
+
+inline void _HTMLAttr::SetStart( const SwPosition& rPos )
+{
+ nSttPara = rPos.nNode;
+ nSttCntnt = rPos.nContent.GetIndex();
+ nEndPara = nSttPara;
+ nEndCntnt = nSttCntnt;
+}
+
+inline void _HTMLAttrContext::SetMargins( sal_uInt16 nLeft, sal_uInt16 nRight,
+ short nIndent )
+{
+ nLeftMargin = nLeft;
+ nRightMargin = nRight;
+ nFirstLineIndent = nIndent;
+ bLRSpaceChanged = sal_True;
+}
+
+inline void _HTMLAttrContext::GetMargins( sal_uInt16& nLeft,
+ sal_uInt16& nRight,
+ short& nIndent ) const
+{
+ if( bLRSpaceChanged )
+ {
+ nLeft = nLeftMargin;
+ nRight = nRightMargin;
+ nIndent = nFirstLineIndent;
+ }
+}
+
+inline void _HTMLAttrContext::SetULSpace( sal_uInt16 nUpper, sal_uInt16 nLower )
+{
+ nUpperSpace = nUpper;
+ nLowerSpace = nLower;
+ bULSpaceChanged = sal_True;
+}
+
+inline void _HTMLAttrContext::GetULSpace( sal_uInt16& rUpper,
+ sal_uInt16& rLower ) const
+{
+ if( bULSpaceChanged )
+ {
+ rUpper = nUpperSpace;
+ rLower = nLowerSpace;
+ }
+}
+
+inline sal_Bool SwHTMLParser::HasStyleOptions( const String &rStyle,
+ const String &rId,
+ const String &rClass )
+{
+ return rStyle.Len() || rId.Len() || rClass.Len();
+}
+
+inline const _HTMLAttrContext *SwHTMLParser::GetTopContext() const
+{
+ return aContexts.Count() > nContextStMin
+ ? aContexts[aContexts.Count()-1] : 0;
+}
+
+inline void SwHTMLParser::PushContext( _HTMLAttrContext *pCntxt )
+{
+ aContexts.Insert( pCntxt, aContexts.Count() );
+}
+
+
+inline void SwHTMLParser::GetSaveAndSetOwnBaseURL()
+{
+ sSaveBaseURL = INetURLObject::GetBaseURL();
+ INetURLObject::SetBaseURL( sBaseURL );
+}
+
+inline void SwHTMLParser::SetSaveBaseURL()
+{
+ INetURLObject::SetBaseURL( sSaveBaseURL );
+}
+
+
+#endif
+
+
diff --git a/sw/source/filter/html/wrthtml.cxx b/sw/source/filter/html/wrthtml.cxx
new file mode 100644
index 000000000000..b04a90e8c68b
--- /dev/null
+++ b/sw/source/filter/html/wrthtml.cxx
@@ -0,0 +1,1477 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrthtml.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <stdlib.h>
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _RTL_TENCINFO_H
+#include <rtl/tencinfo.h>
+#endif
+#ifndef _SV_WRKWIN_HXX
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _LINKMGR_HXX //autogen
+#include <so3/linkmgr.hxx>
+#endif
+#ifndef _OFA_HTMLCFG_HXX //autogen
+#include <offmgr/htmlcfg.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _FRMHTMLW_HXX //autogen
+#include <sfx2/frmhtmlw.hxx>
+#endif
+#ifndef _XOUTBMP_HXX //autogen
+#include <svx/xoutbmp.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_FORM_XFORMSSUPPLIER_HPP_
+#include <com/sun/star/form/XFormsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORM_HPP_
+#include <com/sun/star/form/XForm.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XIMAGEPRODUCERSUPPLIER_HPP_
+#include <com/sun/star/form/XImageProducerSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCONTROLLER_HPP_
+#include <com/sun/star/form/XFormController.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCOMPONENT_HPP_
+#include <com/sun/star/form/XFormComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCONTROLLERLISTENER_HPP_
+#include <com/sun/star/form/XFormControllerListener.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 _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FMTFLD_HXX //autogen
+#include <fmtfld.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _TXATBASE_HXX //autogen
+#include <txatbase.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include "frmatr.hxx"
+#endif
+#ifndef _CHARFMT_HXX //autogen
+#include <charfmt.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifdef TF_ONE51
+#endif
+
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx> // ...Percent()
+#endif
+#ifndef _FLTINI_HXX
+#include <fltini.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _BOOKMRK_HXX
+#include <bookmrk.hxx> // fuer SwBookmark ...
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _FMTCLDS_HXX
+#include <fmtclds.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _WRTHTML_HXX
+#include <wrthtml.hxx>
+#endif
+#ifndef _HTMLNUM_HXX
+#include <htmlnum.hxx>
+#endif
+#ifndef _HTMLFLY_HXX
+#include <htmlfly.hxx>
+#endif
+
+#ifndef _SWMODULE_HXX //autogen
+#include <swmodule.hxx>
+#endif
+
+#ifndef _STATSTR_HRC
+#include <statstr.hrc> // ResId fuer Statusleiste
+#endif
+#ifndef _SWSWERROR_H
+#include <swerror.h>
+#endif
+
+#define MAX_INDENT_LEVEL 20
+
+#if defined(MAC)
+const sal_Char SwHTMLWriter::sNewLine = '\015';
+#elif defined(UNX)
+const sal_Char SwHTMLWriter::sNewLine = '\012';
+#else
+const sal_Char __FAR_DATA SwHTMLWriter::sNewLine[] = "\015\012";
+#endif
+
+static sal_Char __FAR_DATA sIndentTabs[MAX_INDENT_LEVEL+2] =
+ "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
+
+SwHTMLWriter::SwHTMLWriter()
+{
+ bFirstLine = sal_True;
+ nBkmkTabPos = USHRT_MAX;
+ pFlyFrmFmt = 0;
+ pDfltColor = 0;
+ nImgMapCnt = 1;
+ pStartNdIdx = 0;
+ pTemplate = 0;
+ pNumRuleInfo = new SwHTMLNumRuleInfo;
+ pNextNumRuleInfo = 0;
+ pFootEndNotes = 0;
+ pFmtFtn = 0;
+ eDestEnc = RTL_TEXTENCODING_MS_1252;
+}
+
+
+__EXPORT SwHTMLWriter::~SwHTMLWriter()
+{
+ delete pNumRuleInfo;
+}
+
+sal_uInt32 SwHTMLWriter::WriteStream()
+{
+ // neue Konfiguration setzen
+ OfaHtmlOptions* pHtmlOptions = OFF_APP()->GetHtmlOptions();
+
+ // die Fontgroessen 1-7
+ aFontHeights[0] = pHtmlOptions->GetFontSize( 0 ) * 20;
+ aFontHeights[1] = pHtmlOptions->GetFontSize( 1 ) * 20;
+ aFontHeights[2] = pHtmlOptions->GetFontSize( 2 ) * 20;
+ aFontHeights[3] = pHtmlOptions->GetFontSize( 3 ) * 20;
+ aFontHeights[4] = pHtmlOptions->GetFontSize( 4 ) * 20;
+ aFontHeights[5] = pHtmlOptions->GetFontSize( 5 ) * 20;
+ aFontHeights[6] = pHtmlOptions->GetFontSize( 6 ) * 20;
+
+ // ueberhaupt Styles ausgeben
+ // (dann auch obere und untere Absatz-Abstaende)
+ nExportMode = pHtmlOptions->GetExportMode();
+ nHTMLMode = GetHtmlMode(0);
+ if( HTML_CFG_WRITER==nExportMode || HTML_CFG_NS30==nExportMode ||
+ HTML_CFG_NS40==nExportMode )
+ nHTMLMode |= HTMLMODE_BLOCK_SPACER;
+
+ if( HTML_CFG_WRITER==nExportMode || HTML_CFG_MSIE==nExportMode )
+ nHTMLMode |= (HTMLMODE_FLOAT_FRAME | HTMLMODE_LSPACE_IN_NUMBUL);
+
+ if( HTML_CFG_NS30==nExportMode )
+ nHTMLMode |= HTMLMODE_VERT_SPACER;
+
+ if( HTML_CFG_MSIE==nExportMode )
+ nHTMLMode |= HTMLMODE_NBSP_IN_TABLES;
+
+ if( HTML_CFG_WRITER==nExportMode || HTML_CFG_NS40==nExportMode ||
+ HTML_CFG_MSIE==nExportMode )
+ nHTMLMode |= HTMLMODE_ABS_POS_FLY;
+
+ if( HTML_CFG_WRITER==nExportMode || HTML_CFG_MSIE==nExportMode )
+ nHTMLMode |= HTMLMODE_ABS_POS_DRAW;
+
+ if( HTML_CFG_WRITER==nExportMode )
+// nHTMLMode |= HTMLMODE_FLY_MARGINS | HTMLMODE_FRSTLINE_IN_NUMBUL;
+ nHTMLMode |= HTMLMODE_FLY_MARGINS;
+
+ if( HTML_CFG_NS40==nExportMode )
+ nHTMLMode |= HTMLMODE_BORDER_NONE;
+
+ if( HTML_CFG_HTML32!=nExportMode )
+ nHTMLMode |= HTMLMODE_FONT_GENERIC;
+
+ if( HTML_CFG_NS30==nExportMode || HTML_CFG_NS40==nExportMode )
+ nHTMLMode |= HTMLMODE_NO_CONTROL_CENTERING;
+
+ bCfgOutStyles = IsHTMLMode(HTMLMODE_SOME_STYLES |
+ HTMLMODE_FULL_STYLES);
+ bCfgNetscape4 = (HTML_CFG_NS40==nExportMode);
+
+ if( IsHTMLMode(HTMLMODE_SOME_STYLES | HTMLMODE_FULL_STYLES) )
+ nHTMLMode |= HTMLMODE_PRINT_EXT;
+
+ const sal_Char *pHelpHack = getenv( "HelpEx" );
+ if( pHelpHack )
+ {
+ ByteString aTmp( pHelpHack );
+ if( aTmp.EqualsIgnoreCaseAscii( "Hilfe" ) )
+ nHTMLMode |= HTMLMODE_NO_BR_AT_PAREND;
+ }
+
+ eCSS1Unit = (FieldUnit)SW_MOD()->GetMetric( pDoc->IsHTMLMode() );
+
+ const sal_Char *pCharSet =
+ rtl_getBestMimeCharsetFromTextEncoding( gsl_getSystemTextEncoding() );
+ eDestEnc = rtl_getTextEncodingFromMimeCharset( pCharSet );
+
+ // fuer Netscape optimieren heisst Spacer- und Multicol ausgeben
+// bCfgMultiCol = pHtmlOptions->IsNetscape3();
+// bCfgSpacer = pHtmlOptions->IsNetscape3();
+
+ // wenn Styles exportiert werden, wird ein Style einem HTML-Tag manchmal
+ // vorgezogen, wenn nicht fuer Netscape exportiert wird
+ // bCfgPreferStyles = bCfgOutStyles; // && !pHtmlOptions->IsNetscape3();
+
+ // Nur noch fuer den MS-IE ziehen wir den Export von Styles vor.
+ bCfgPreferStyles = HTML_CFG_MSIE==nExportMode;
+
+ bCfgStarBasic = pHtmlOptions->IsStarBasic();
+
+ bCfgFormFeed = !IsHTMLMode(HTMLMODE_PRINT_EXT);
+ bCfgCpyLinkedGrfs = pHtmlOptions->IsSaveGraphicsLocal();
+
+ // die HTML-Vorlage holen
+ sal_Bool bOldHTMLMode;
+ sal_uInt16 nOldTxtFmtCollCnt, nOldCharFmtCnt;
+
+ ASSERT( !pTemplate, "Wo kommt denn die HTML-Vorlage hier her?" );
+ pTemplate = ((HTMLReader*)ReadHTML)->GetTemplateDoc();
+ if( pTemplate )
+ {
+ pTemplate->AddLink();
+ bOldHTMLMode = pTemplate->IsHTMLMode();
+ pTemplate->SetHTMLMode( sal_True );
+
+ nOldTxtFmtCollCnt = pTemplate->GetTxtFmtColls()->Count();
+ nOldCharFmtCnt = pTemplate->GetCharFmts()->Count();
+ }
+
+ if( bShowProgress )
+ ::StartProgress( STR_STATSTR_W4WWRITE, 0, pDoc->GetNodes().Count(),
+ pDoc->GetDocShell());
+
+ pFlyFrmFmt = 0; // kein FlyFrmFormat gesetzt
+ pDfltColor = 0;
+ pFootEndNotes = 0;
+ pFmtFtn = 0;
+ bOutTable = bOutHeader = bOutFooter = sal_False;
+ pxFormComps = 0;
+ nFormCntrlCnt = 0;
+ bPreserveForm = sal_False;
+ bClearLeft = bClearRight = sal_False;
+ bLFPossible = sal_False;
+
+ nLeftMargin = nDfltLeftMargin = nDfltRightMargin = 0;
+ nDfltTopMargin = nDfltBottomMargin = 0;
+ nFirstLineIndent = nDfltFirstLineIndent = 0;
+ bPoolCollTextModified = sal_False;
+ bFirstCSS1Property = bFirstCSS1Rule = sal_False;
+ bCSS1IgnoreFirstPageDesc = sal_False;
+ nIndentLvl = 0;
+ nWhishLineLen = 70;
+ nLastLFPos = 0;
+ nDefListLvl = 0;
+ nDefListMargin = ((pTemplate && !bCfgOutStyles) ? pTemplate : pDoc)
+ ->GetTxtCollFromPool( RES_POOLCOLL_HTML_DD )
+ ->GetLRSpace().GetTxtLeft();
+ nHeaderFooterSpace = 0;
+ nTxtAttrsToIgnore = 0;
+ nCSS1OutMode = 0;
+ nFootNote = nEndNote = 0;
+
+ nWarn = 0;
+ GetNumInfo().Clear();
+ pNextNumRuleInfo = 0;
+
+ // Content-Id setzen
+ aCId.Erase();
+ SwDocShell *pDocSh = pDoc->GetDocShell();
+ if( pDocSh )
+ {
+ const SfxPoolItem *pItem = pDocSh->GetItem( SID_ORIGURL );
+ if( pItem )
+ {
+ aCId = ((const SfxStringItem *)pItem)->GetValue();
+ ASSERT( aCId.Len(), "CID ohne Laenge!" );
+ nWhishLineLen = 72;
+ }
+ }
+
+ ByteString aStartTags;
+
+ // Tabellen und Bereiche am Doc.-Anfang beachten
+ {
+ SwTableNode * pTNd = pCurPam->GetNode()->FindTableNode();
+ if( pTNd && bWriteAll )
+ {
+ // mit dem Tabellen-Node anfangen !!
+ pCurPam->GetPoint()->nNode = *pTNd;
+
+ if( bWriteOnlyFirstTable )
+ pCurPam->GetMark()->nNode = *pTNd->EndOfSectionNode();
+ }
+
+ // erster Node (der einen Seitenumbruch enthalten darf)
+ pStartNdIdx = new SwNodeIndex( pCurPam->GetPoint()->nNode );
+
+ SwSectionNode * pSNd = pCurPam->GetNode()->FindSectionNode();
+ while( pSNd )
+ {
+ if( bWriteAll )
+ {
+ // mit dem Section-Node anfangen !!
+ pCurPam->GetPoint()->nNode = *pSNd;
+ }
+ else
+ {
+ ASSERT( FILE_LINK_SECTION != pSNd->GetSection().GetType(),
+ "Export gelinkter Bereiche am Dok-Anfang ist nicht implemntiert" );
+
+ // nur das Tag fuer die Section merken
+ ByteString aName;
+ HTMLOutFuncs::ConvertStringToHTML( pSNd->GetSection().GetName(),
+ aName, eDestEnc );
+
+ ByteString sOut( '<' );
+ (((((((sOut += sHTML_division)
+ += ' ') += sHTML_O_id) += "=\"")
+ += aName) += '\"')
+ += '>') += aStartTags;
+
+ aStartTags = sOut;
+ }
+ // FindSectionNode() an einem SectionNode liefert den selben!
+ pSNd = pSNd->FindStartNode()->FindSectionNode();
+ }
+ }
+
+
+ // Tabelle fuer die freifliegenden Rahmen erzeugen, aber nur wenn
+ // das gesamte Dokument geschrieben wird
+ pHTMLPosFlyFrms = 0;
+ CollectFlyFrms();
+ nLastParaToken = 0;
+ GetControls();
+ CollectLinkTargets();
+
+ sal_uInt16 nHeaderAttrs = 0;
+ pCurrPageDesc = MakeHeader( nHeaderAttrs );
+
+ bLFPossible = sal_True;
+
+ // Formulare, die nur HiddenControls enthalten ausgeben.
+ OutHiddenForms();
+
+ if( aStartTags.Len() )
+ Strm() << aStartTags.GetBuffer();
+
+ const SfxPoolItem *pItem;
+ const SfxItemSet& rPageItemSet = pCurrPageDesc->GetMaster().GetAttrSet();
+ if( !bWriteClipboardDoc && pDoc->GetDocShell() &&
+ ( pDoc->IsHeadInBrowse() ||
+ (!pDoc->IsHTMLMode() && !pDoc->IsBrowseMode()) ) &&
+ SFX_ITEM_SET == rPageItemSet.GetItemState( RES_HEADER, sal_True, &pItem) )
+ {
+ const SwFrmFmt *pHeaderFmt =
+ ((const SwFmtHeader *)pItem)->GetHeaderFmt();
+ if( pHeaderFmt )
+ OutHTML_HeaderFooter( *this, *pHeaderFmt, sal_True );
+ }
+
+ nTxtAttrsToIgnore = nHeaderAttrs;
+ Out_SwDoc( pOrigPam );
+ nTxtAttrsToIgnore = 0;
+
+ if( pxFormComps && pxFormComps->is() )
+ OutForm( sal_False, *pxFormComps );
+
+ if( pFootEndNotes )
+ OutFootEndNotes();
+
+ if( !bWriteClipboardDoc && pDoc->GetDocShell() &&
+ ( pDoc->IsFootInBrowse() ||
+ (!pDoc->IsHTMLMode() && !pDoc->IsBrowseMode()) ) &&
+ SFX_ITEM_SET == rPageItemSet.GetItemState( RES_FOOTER, sal_True, &pItem) )
+ {
+ const SwFrmFmt *pFooterFmt =
+ ((const SwFmtFooter *)pItem)->GetFooterFmt();
+ if( pFooterFmt )
+ OutHTML_HeaderFooter( *this, *pFooterFmt, sal_False );
+ }
+
+ if( bLFPossible )
+ OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_body, sal_False );
+ OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_html, sal_False );
+
+ // loesche die Tabelle mit den freifliegenden Rahmen
+ sal_uInt16 i;
+ ASSERT( !pHTMLPosFlyFrms, "Wurden nicht alle Rahmen ausgegeben" );
+ if( pHTMLPosFlyFrms )
+ {
+ pHTMLPosFlyFrms->DeleteAndDestroy( 0, pHTMLPosFlyFrms->Count() );
+ delete pHTMLPosFlyFrms;
+ pHTMLPosFlyFrms = 0;
+ }
+
+ if( aHTMLControls.Count() )
+ aHTMLControls.DeleteAndDestroy( sal_uInt16(0), aHTMLControls.Count() );
+
+ if( aChrFmtInfos.Count() )
+ aChrFmtInfos.DeleteAndDestroy( sal_uInt16(0), aChrFmtInfos.Count() );
+
+ if( aTxtCollInfos.Count() )
+ aTxtCollInfos.DeleteAndDestroy( sal_uInt16(0), aTxtCollInfos.Count() );
+
+ if( aImgMapNames.Count() )
+ aImgMapNames.DeleteAndDestroy( sal_uInt16(0), aImgMapNames.Count() );
+
+ if( aImplicitMarks.Count() )
+ aImplicitMarks.DeleteAndDestroy( sal_uInt16(0), aImplicitMarks.Count() );
+
+ if( aOutlineMarks.Count() )
+ aOutlineMarks.DeleteAndDestroy( sal_uInt16(0), aOutlineMarks.Count() );
+
+ if( aOutlineMarkPoss.Count() )
+ aOutlineMarkPoss.Remove( sal_uInt16(0), aOutlineMarkPoss.Count() );
+
+ delete pDfltColor;
+ pDfltColor = 0;
+
+ delete pStartNdIdx;
+ pStartNdIdx = 0;
+
+ delete pxFormComps;
+ pxFormComps = 0;
+
+ ASSERT( !pFootEndNotes,
+ "SwHTMLWriter::Write: Ftns nicht durch OutFootEndNotes geloescht" );
+
+ pCurrPageDesc = 0;
+
+ ClearNextNumInfo();
+
+ for( i=0; i<MAXLEVEL; i++ )
+ aBulletGrfs[i].Erase();
+
+ if( bShowProgress )
+ ::EndProgress( pDoc->GetDocShell() );
+
+ if( pTemplate )
+ {
+ // Waehrend des Exports angelegte Zeichen- und Abastzvorlagen
+ // loeschen
+ sal_uInt16 nTxtFmtCollCnt = pTemplate->GetTxtFmtColls()->Count();
+ while( nTxtFmtCollCnt > nOldTxtFmtCollCnt )
+ pTemplate->DelTxtFmtColl( --nTxtFmtCollCnt );
+ ASSERT( pTemplate->GetTxtFmtColls()->Count() == nOldTxtFmtCollCnt,
+ "falsche Anzahl TxtFmtColls geloescht" );
+
+ sal_uInt16 nCharFmtCnt = pTemplate->GetCharFmts()->Count();
+ while( nCharFmtCnt > nOldCharFmtCnt )
+ pTemplate->DelCharFmt( --nCharFmtCnt );
+ ASSERT( pTemplate->GetCharFmts()->Count() == nOldCharFmtCnt,
+ "falsche Anzahl CharFmts geloescht" );
+
+ // HTML-Modus wieder restaurieren
+ pTemplate->SetHTMLMode( bOldHTMLMode );
+
+ if( 0 == pTemplate->RemoveLink() )
+ delete pTemplate;
+
+ pTemplate = 0;
+ }
+
+ return nWarn;
+}
+
+const SwFmtCol *lcl_html_GetFmtCol( const SwHTMLWriter& rHTMLWrt,
+ const SwSection& rSection,
+ const SwSectionFmt& rFmt )
+{
+ const SwFmtCol *pCol = 0;
+
+ const SfxPoolItem* pItem;
+ if( rHTMLWrt.IsHTMLMode( HTMLMODE_FRM_COLUMNS ) &&
+ FILE_LINK_SECTION != rSection.GetType() &&
+ SFX_ITEM_SET == rFmt.GetAttrSet().GetItemState(RES_COL,sal_False,&pItem) &&
+ ((const SwFmtCol *)pItem)->GetNumCols() > 1 )
+ {
+ pCol = (const SwFmtCol *)pItem;
+ }
+
+ return pCol;
+}
+
+sal_Bool lcl_html_IsMultiColStart( const SwHTMLWriter& rHTMLWrt, sal_uInt32 nIndex )
+{
+ sal_Bool bRet = sal_False;
+ const SwSectionNode *pSectNd =
+ rHTMLWrt.pDoc->GetNodes()[nIndex]->GetSectionNode();
+ if( pSectNd )
+ {
+ const SwSection& rSection = pSectNd->GetSection();
+ const SwSectionFmt *pFmt = rSection.GetFmt();
+ if( pFmt && lcl_html_GetFmtCol( rHTMLWrt, rSection, *pFmt ) )
+ bRet = sal_True;
+ }
+
+ return bRet;
+}
+
+sal_Bool lcl_html_IsMultiColEnd( const SwHTMLWriter& rHTMLWrt, sal_uInt32 nIndex )
+{
+ sal_Bool bRet = sal_False;
+ const SwEndNode *pEndNd = rHTMLWrt.pDoc->GetNodes()[nIndex]->GetEndNode();
+ if( pEndNd )
+ bRet = lcl_html_IsMultiColStart( rHTMLWrt,
+ pEndNd->StartOfSectionIndex() );
+
+ return bRet;
+}
+
+
+void lcl_html_OutSectionStartTag( SwHTMLWriter& rHTMLWrt,
+ const SwSection& rSection,
+ const SwSectionFmt& rFmt,
+ const SwFmtCol *pCol,
+ sal_Bool bContinued=sal_False )
+{
+ ASSERT( pCol || !bContinued, "Continuation of DIV" );
+
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine();
+
+ const sal_Char *pTag = pCol ? sHTML_multicol : sHTML_division;
+
+ ByteString sOut( '<' );
+ sOut += pTag;
+
+ const String& rName = rSection.GetName();
+ if( rName.Len() && !bContinued )
+ {
+ ((sOut += ' ') += sHTML_O_id) += "=\"";
+ rHTMLWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( rHTMLWrt.Strm(), rName, rHTMLWrt.eDestEnc );
+ sOut = '\"';
+ }
+
+ if( FILE_LINK_SECTION == rSection.GetType() )
+ {
+ ((sOut += ' ') += sHTML_O_href) += "=\"";
+ rHTMLWrt.Strm() << sOut.GetBuffer();
+
+ const String& aFName = rSection.GetLinkFileName();
+ String aURL( aFName.GetToken(0,cTokenSeperator) );
+ String aFilter( aFName.GetToken(1,cTokenSeperator) );
+ String aSection( aFName.GetToken(2,cTokenSeperator) );
+
+ HTMLOutFuncs::Out_String( rHTMLWrt.Strm(),
+ INetURLObject::AbsToRel(aURL,
+ INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET),
+ rHTMLWrt.eDestEnc );
+ const sal_Char *pDelim = "&#255;";
+ if( aFilter.Len() )
+ {
+ rHTMLWrt.Strm() << pDelim;
+ HTMLOutFuncs::Out_String( rHTMLWrt.Strm(), aFilter,
+ rHTMLWrt.eDestEnc );
+ }
+ if( aSection.Len() )
+ {
+ if( !aFilter.Len() )
+ rHTMLWrt.Strm() << pDelim;
+ rHTMLWrt.Strm() << pDelim;
+ HTMLOutFuncs::Out_String( rHTMLWrt.Strm(), aSection,
+ rHTMLWrt.eDestEnc );
+ }
+ sOut = '\"';
+ }
+ else if( pCol )
+ {
+ (((sOut += ' ') += sHTML_O_cols) += '=')
+ += ByteString::CreateFromInt32( pCol->GetNumCols() );
+
+ // minumum gutter width
+ sal_uInt16 nGutter = pCol->GetGutterWidth( sal_True );
+ if( nGutter!=USHRT_MAX )
+ {
+ if( nGutter && Application::GetDefaultDevice() )
+ {
+ nGutter = (sal_uInt16)Application::GetDefaultDevice()
+ ->LogicToPixel( Size(nGutter,0),
+ MapMode(MAP_TWIP) ).Width();
+ }
+ (((sOut += ' ') += sHTML_O_gutter) += '=')
+ += ByteString::CreateFromInt32( nGutter );
+ }
+ }
+
+ rHTMLWrt.Strm() << sOut.GetBuffer();
+ if( rHTMLWrt.IsHTMLMode( rHTMLWrt.bCfgOutStyles ) )
+ rHTMLWrt.OutCSS1_SectionFmtOptions( rFmt );
+
+ rHTMLWrt.Strm() << '>';
+
+ rHTMLWrt.bLFPossible = sal_True;
+ if( rName.Len() && !bContinued )
+ rHTMLWrt.OutImplicitMark( rName, pMarkToRegion );
+
+ rHTMLWrt.IncIndentLevel();
+}
+
+void lcl_html_OutSectionEndTag( SwHTMLWriter& rHTMLWrt,
+ const SwFmtCol *pCol )
+{
+ const sal_Char *pTag = pCol ? sHTML_multicol : sHTML_division;
+
+ rHTMLWrt.DecIndentLevel();
+ if( rHTMLWrt.bLFPossible )
+ rHTMLWrt.OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( rHTMLWrt.Strm(), pTag, sal_False );
+ rHTMLWrt.bLFPossible = sal_True;
+}
+
+static Writer& OutHTML_Section( Writer& rWrt, const SwSectionNode& rSectNd )
+{
+ SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
+
+ // End <PRE> and any <DL>, because a definition list's level may
+ // change inside the section.
+ rHTMLWrt.ChangeParaToken( 0 );
+ rHTMLWrt.OutAndSetDefList( 0 );
+
+ const SwSection& rSection = rSectNd.GetSection();
+ const SwSectionFmt *pFmt = rSection.GetFmt();
+ ASSERT( pFmt, "Section without a format?" );
+
+ sal_Bool bStartTag = sal_True;
+ sal_Bool bEndTag = sal_True;
+ const SwSectionFmt *pSurrFmt = 0;
+ const SwSectionNode *pSurrSectNd = 0;
+ const SwSection *pSurrSection = 0;
+ const SwFmtCol *pSurrCol = 0;
+
+ sal_uInt32 nSectSttIdx = rSectNd.GetIndex();
+ sal_uInt32 nSectEndIdx = rSectNd.EndOfSectionIndex();
+ const SwFmtCol *pCol = lcl_html_GetFmtCol( rHTMLWrt, rSection, *pFmt );
+ if( pCol )
+ {
+ // If the next node is a columned section node, too, don't export
+ // an empty section.
+ if( lcl_html_IsMultiColStart( rHTMLWrt, nSectSttIdx+1 ) )
+ bStartTag = sal_False;
+
+ // The same applies if the section end with another columned section.
+ if( lcl_html_IsMultiColEnd( rHTMLWrt, nSectEndIdx-1 ) )
+ bEndTag = sal_False;
+
+ //.is there a columned section arround this one?
+ const SwStartNode *pSttNd = rSectNd.FindStartNode();
+ if( pSttNd )
+ {
+ pSurrSectNd = pSttNd->FindSectionNode();
+ if( pSurrSectNd )
+ {
+ const SwStartNode *pBoxSttNd = pSttNd->FindTableBoxStartNode();
+ if( !pBoxSttNd ||
+ pBoxSttNd->GetIndex() < pSurrSectNd->GetIndex() )
+ {
+ pSurrSection = &pSurrSectNd->GetSection();
+ pSurrFmt = pSurrSection->GetFmt();
+ if( pSurrFmt )
+ pSurrCol = lcl_html_GetFmtCol( rHTMLWrt, *pSurrSection,
+ *pSurrFmt );
+ }
+ }
+ }
+ }
+
+ // The surrounding section must be closed before the current one is
+ // opended, except that it start immediatly before the current one or
+ // another end immediately before the current one
+ if( pSurrCol && nSectSttIdx - pSurrSectNd->GetIndex() > 1 &&
+ !lcl_html_IsMultiColEnd( rHTMLWrt, nSectSttIdx-1 ) )
+ lcl_html_OutSectionEndTag( rHTMLWrt, pSurrCol );
+
+ if( bStartTag )
+ lcl_html_OutSectionStartTag( rHTMLWrt, rSection, *pFmt, pCol );
+
+ {
+ HTMLSaveData aSaveData( rHTMLWrt,
+ rHTMLWrt.pCurPam->GetPoint()->nNode.GetIndex()+1,
+ rSectNd.EndOfSectionIndex(),
+ rHTMLWrt.GetFlyFrmFmt(),
+ sal_False );
+ rHTMLWrt.Out_SwDoc( rHTMLWrt.pCurPam );
+ }
+
+ rHTMLWrt.pCurPam->GetPoint()->nNode = *rSectNd.EndOfSectionNode();
+
+ if( bEndTag )
+ lcl_html_OutSectionEndTag( rHTMLWrt, pCol );
+
+ // The surrounding section must be started again, except that it ends
+ // immeditaly behind the current one.
+ if( pSurrCol &&
+ pSurrSectNd->EndOfSectionIndex() - nSectEndIdx > 1 &&
+ !lcl_html_IsMultiColStart( rHTMLWrt, nSectEndIdx+1 ) )
+ lcl_html_OutSectionStartTag( rHTMLWrt, *pSurrSection, *pSurrFmt,
+ pSurrCol, sal_True );
+
+ return rWrt;
+}
+
+void SwHTMLWriter::Out_SwDoc( SwPaM* pPam )
+{
+ sal_Bool bSaveWriteAll = bWriteAll; // sichern
+
+
+ // suche die naechste ::com::sun::star::text::Bookmark-Position aus der ::com::sun::star::text::Bookmark-Tabelle
+ nBkmkTabPos = bWriteAll ? FindPos_Bkmk( *pCurPam->GetPoint() ) : USHRT_MAX;
+
+ // gebe alle Bereiche des Pams in das HTML-File aus.
+ do {
+ bWriteAll = bSaveWriteAll;
+ bFirstLine = sal_True;
+
+ // suche den ersten am Pam-auszugebenen FlyFrame
+ // fehlt noch:
+
+ while( pCurPam->GetPoint()->nNode.GetIndex() < pCurPam->GetMark()->nNode.GetIndex() ||
+ (pCurPam->GetPoint()->nNode.GetIndex() == pCurPam->GetMark()->nNode.GetIndex() &&
+ pCurPam->GetPoint()->nContent.GetIndex() <= pCurPam->GetMark()->nContent.GetIndex()) )
+ {
+ SwNode * pNd = pCurPam->GetNode();
+
+ ASSERT( !(pNd->IsGrfNode() || pNd->IsOLENode()),
+ "Grf- oder OLE-Node hier unerwartet" );
+ if( pNd->IsTxtNode() )
+ {
+ SwTxtNode* pTxtNd = pNd->GetTxtNode();
+
+ if( !bFirstLine )
+ pCurPam->GetPoint()->nContent.Assign( pTxtNd, 0 );
+
+ OutHTML_SwTxtNode( *this, *pTxtNd );
+ }
+ else if( pNd->IsTableNode() )
+ {
+ OutHTML_SwTblNode( *this, *pNd->GetTableNode(), 0 );
+ }
+ else if( pNd->IsSectionNode() )
+ {
+ OutHTML_Section( *this, *pNd->GetSectionNode() );
+ }
+ else if( pNd == &pDoc->GetNodes().GetEndOfContent() )
+ break;
+
+ pCurPam->GetPoint()->nNode++; // Bewegen
+ sal_uInt32 nPos = pCurPam->GetPoint()->nNode.GetIndex();
+
+ if( bShowProgress )
+ ::SetProgressState( nPos, pDoc->GetDocShell() ); // Wie weit ?
+
+ /* sollen nur die Selectierten Bereiche gesichert werden, so
+ * duerfen nur die vollstaendigen Nodes gespeichert werde,
+ * d.H. der 1. und n. Node teilweise, der 2. bis n-1. Node
+ * vollstaendig. (vollstaendig heisst mit allen Formaten! )
+ */
+ bWriteAll = bSaveWriteAll ||
+ nPos != pCurPam->GetMark()->nNode.GetIndex();
+ bFirstLine = sal_False;
+ bOutFooter = sal_False; // Nach einem Node keine Fusszeile mehr
+ }
+
+ ChangeParaToken( 0 ); // MIB 8.7.97: Machen wir jetzt hier und nicht
+ // beim Aufrufer
+ OutAndSetDefList( 0 );
+
+ } while( CopyNextPam( &pPam ) ); // bis alle PaM's bearbeitet
+
+ bWriteAll = bSaveWriteAll; // wieder auf alten Wert zurueck
+}
+
+
+// schreibe die StyleTabelle, algemeine Angaben,Header/Footer/Footnotes
+static void OutBodyColor( const sal_Char *pTag, const SwFmt *pFmt,
+ SwHTMLWriter& rHWrt )
+{
+ const SwFmt *pRefFmt = 0;
+
+ if( rHWrt.pTemplate )
+ pRefFmt = SwHTMLWriter::GetTemplateFmt( pFmt->GetPoolFmtId(),
+ rHWrt.pTemplate );
+
+ const SvxColorItem *pColorItem = 0;
+
+ const SfxItemSet& rItemSet = pFmt->GetAttrSet();
+ const SfxPoolItem *pRefItem, *pItem;
+ sal_Bool bItemSet = SFX_ITEM_SET == rItemSet.GetItemState( RES_CHRATR_COLOR,
+ sal_True, &pItem);
+ sal_Bool bRefItemSet = pRefFmt &&
+ SFX_ITEM_SET == pRefFmt->GetAttrSet().GetItemState( RES_CHRATR_COLOR,
+ sal_True, &pRefItem);
+ if( bItemSet )
+ {
+ // wenn das Item nur in der Vorlage des aktuellen Doks gesetzt
+ // ist oder einen anderen Wert hat, als in der HTML-Vorlage,
+ // wird es gesetzt
+ const SvxColorItem *pCItem = (const SvxColorItem*)pItem;
+ if( !bRefItemSet ||
+ !pCItem->GetValue().IsRGBEqual(
+ ((const SvxColorItem*)pRefItem)->GetValue() ) )
+ pColorItem = pCItem;
+ }
+ else if( bRefItemSet )
+ {
+ // Das Item war in der HTML-Vorlage noch gesetzt, also geben wir
+ // das Default aus
+ pColorItem = (const SvxColorItem*)&rItemSet.GetPool()
+ ->GetDefaultItem( RES_CHRATR_COLOR );
+ }
+
+ if( pColorItem )
+ {
+ ByteString sOut( ' ' );
+ (sOut += pTag) += '=';
+ rHWrt.Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_Color( rHWrt.Strm(), pColorItem->GetValue() );
+ if( RES_POOLCOLL_STANDARD==pFmt->GetPoolFmtId() )
+ rHWrt.pDfltColor = new Color( pColorItem->GetValue() );
+ }
+}
+
+sal_uInt16 SwHTMLWriter::OutHeaderAttrs()
+{
+ sal_uInt32 nIdx = pCurPam->GetPoint()->nNode.GetIndex();
+ sal_uInt32 nEndIdx = pCurPam->GetMark()->nNode.GetIndex();
+
+ SwTxtNode *pTxtNd = 0;
+ while( nIdx<=nEndIdx &&
+ 0==(pTxtNd=pDoc->GetNodes()[nIdx]->GetTxtNode()) )
+ nIdx++;
+
+ ASSERT( pTxtNd, "Kein Text-Node gefunden" );
+ if( !pTxtNd || !pTxtNd->HasHints() )
+ return 0;
+
+ sal_uInt16 nAttrs = 0;
+ sal_uInt16 nCntAttr = pTxtNd->GetSwpHints().Count();
+ xub_StrLen nOldPos = 0;
+ for( sal_uInt16 i=0; i<nCntAttr; i++ )
+ {
+ const SwTxtAttr *pHt = pTxtNd->GetSwpHints()[i];
+ if( !pHt->GetEnd() )
+ {
+ xub_StrLen nPos = *pHt->GetStart();
+ if( nPos-nOldPos > 1 || RES_TXTATR_FIELD != pHt->Which() )
+ break;
+
+ sal_uInt16 nFldWhich = ((const SwFmtFld&)pHt->GetAttr()).GetFld()
+ ->GetTyp()->Which();
+ if( RES_POSTITFLD!=nFldWhich &&
+ RES_SCRIPTFLD!=nFldWhich )
+ break;
+
+ OutNewLine();
+ OutHTML_SwFmtFld( *this, pHt->GetAttr() );
+ nOldPos = nPos;
+ nAttrs++;
+ }
+ }
+
+ return nAttrs;
+}
+
+const SwPageDesc *SwHTMLWriter::MakeHeader( sal_uInt16 &rHeaderAttrs )
+{
+ ByteString sOut( sHTML_doctype );
+ (sOut += ' ') += sHTML_doctype32;
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sOut.GetBuffer() );
+
+ // baue den Vorspann
+ OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_html );
+
+ OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_head );
+
+ IncIndentLevel(); // Inhalt von <HEAD> einruecken
+
+ // DokumentInfo
+ ByteString sIndent;
+ GetIndentString( sIndent );
+// OutNewLine();
+ SfxFrameHTMLWriter::Out_DocInfo( Strm(), pDoc->GetpInfo(),
+ sIndent.GetBuffer(), eDestEnc );
+
+ // Kommentare und Meta-Tags des ersten Absatzes
+ rHeaderAttrs = OutHeaderAttrs();
+
+ OutFootEndNoteInfo();
+
+ const SwPageDesc *pPageDesc = 0;
+ //if( !pDoc->IsHTMLMode() )
+ //{
+ // In Nicht-HTML-Dokumenten wird die erste gesetzte Seitenvorlage
+ // exportiert und wenn keine gesetzt ist die Standard-Vorlage
+ sal_uInt32 nNodeIdx = pCurPam->GetPoint()->nNode.GetIndex();
+
+ while( nNodeIdx < pDoc->GetNodes().Count() )
+ {
+ SwNode *pNd = pDoc->GetNodes()[ nNodeIdx ];
+ if( pNd->IsCntntNode() )
+ {
+ pPageDesc = ((const SwFmtPageDesc &)pNd->GetCntntNode()
+ ->GetAttr(RES_PAGEDESC)).GetPageDesc();
+ break;
+ }
+ else if( pNd->IsTableNode() )
+ {
+ pPageDesc = pNd->GetTableNode()->GetTable().GetFrmFmt()
+ ->GetPageDesc().GetPageDesc();
+ break;
+ }
+
+ nNodeIdx++;
+ }
+
+ if( !pPageDesc )
+ pPageDesc = &pDoc->GetPageDesc( 0 );
+ //}
+ //else
+ //{
+ // In HTML-Dokumenten nehmen wir immer die HTML-Vorlage
+ // pPageDesc = pDoc->GetPageDescFromPool( RES_POOLPAGE_HTML );
+ //}
+
+ // und nun ... das Style-Sheet!!!
+ if( bCfgOutStyles )
+ {
+ OutStyleSheet( *pPageDesc );
+ }
+
+ // und nun ... das BASIC und JavaScript!
+ if( pDoc->GetDocShell() ) // nur mit DocShell ist Basic moeglich
+ OutBasic();
+
+ DecIndentLevel(); // Inhalt von <HEAD> einruecken
+ OutNewLine();
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_head, sal_False );
+
+ // der Body wird nicht eingerueckt, weil sonst alles eingerueckt waere!
+ OutNewLine();
+ sOut = '<';
+ sOut += sHTML_body;
+ Strm() << sOut.GetBuffer();
+ sOut.Erase();
+
+ // Textfarbe ausgeben, wenn sie an der Standard-Vorlage gesetzt ist
+ // und sich geaendert hat.
+ OutBodyColor( sHTML_O_text,
+ pDoc->GetTxtCollFromPool( RES_POOLCOLL_STANDARD ),
+ *this );
+
+ // Farben fuer (un)besuchte Links
+ OutBodyColor( sHTML_O_link,
+ pDoc->GetCharFmtFromPool( RES_POOLCHR_INET_NORMAL ),
+ *this );
+ OutBodyColor( sHTML_O_vlink,
+ pDoc->GetCharFmtFromPool( RES_POOLCHR_INET_VISIT ),
+ *this );
+
+ const SfxItemSet& rItemSet = pPageDesc->GetMaster().GetAttrSet();
+
+ String aEmbGrfName;
+ OutBackground( rItemSet, aEmbGrfName, sal_True );
+
+ if( bCfgOutStyles )
+ OutCSS1_BodyTagStyleOpt( *this, rItemSet, aEmbGrfName );
+
+ // Events anhaengen
+ if( pDoc->GetDocShell() ) // nur mit DocShell ist Basic moeglich
+ OutBasicBodyEvents();
+
+ Strm() << '>';
+
+ return pPageDesc;
+}
+
+void SwHTMLWriter::OutAnchor( const String& rName )
+{
+ ByteString sOut( '<' );
+ (((sOut += sHTML_anchor) += ' ') += sHTML_O_name) += "=\"";
+ Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( Strm(), rName, eDestEnc ) << "\">";
+ HTMLOutFuncs::Out_AsciiTag( Strm(), sHTML_anchor, sal_False );
+}
+
+void SwHTMLWriter::OutBookmarks()
+{
+ // hole das aktuelle Bookmark
+ const SwBookmark* pBookmark = USHRT_MAX != nBkmkTabPos ?
+ pDoc->GetBookmarks()[ nBkmkTabPos ] : 0;
+ // Ausgabe aller Bookmarks in diesem Absatz. Die Content-Position
+ // wird vorerst nicht beruecksichtigt!
+ sal_uInt32 nNode = pCurPam->GetPoint()->nNode.GetIndex();
+ while( USHRT_MAX != nBkmkTabPos &&
+ pBookmark->GetPos().nNode.GetIndex() == nNode )
+ {
+ // Der Bereich derBookmark wird erstam ignoriert, da er von uns
+ // auch nicht eingelesen wird.
+
+ // erst die SWG spezifischen Daten:
+ if( pBookmark->IsBookMark() && pBookmark->GetName().Len() )
+ OutAnchor( pBookmark->GetName() );
+
+ if( ++nBkmkTabPos >= pDoc->GetBookmarks().Count() )
+ nBkmkTabPos = USHRT_MAX;
+ else
+ pBookmark = pDoc->GetBookmarks()[ nBkmkTabPos ];
+ }
+
+ sal_uInt16 nPos;
+ for( nPos = 0; nPos < aOutlineMarkPoss.Count() &&
+ aOutlineMarkPoss[nPos] < nNode; nPos++ )
+ ;
+
+ while( nPos < aOutlineMarkPoss.Count() && aOutlineMarkPoss[nPos] == nNode )
+ {
+ OutAnchor( *aOutlineMarks[nPos] );
+ aOutlineMarkPoss.Remove( nPos, 1 );
+ aOutlineMarks.DeleteAndDestroy( nPos, 1 );
+ }
+}
+
+void SwHTMLWriter::OutImplicitMark( const String& rMark,
+ const sal_Char *pMarkType )
+{
+ if( rMark.Len() && aImplicitMarks.Count() )
+ {
+ String sMark( rMark );
+ sMark.Append( cMarkSeperator );
+ sMark.AppendAscii( pMarkType );
+ sal_uInt16 nPos;
+ if( aImplicitMarks.Seek_Entry( &sMark, &nPos ) )
+ {
+ OutAnchor( sMark );
+ aImplicitMarks.DeleteAndDestroy( nPos, 1 );
+ }
+ }
+}
+
+void SwHTMLWriter::OutBackground( const SvxBrushItem *pBrushItem,
+ String& rEmbGrfNm, sal_Bool bGraphic )
+{
+ const Color &rBackColor = pBrushItem->GetColor();
+ if( !rBackColor.GetTransparency() )
+ {
+ ByteString sOut( ' ' );
+ (sOut += sHTML_O_bgcolor) += '=';
+ Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_Color( Strm(), rBackColor );
+ }
+
+ if( !bGraphic )
+ return;
+
+ const String *pLink = pBrushItem->GetGraphicLink();
+
+ // embeddete Grafik -> WriteEmbedded schreiben
+ if( !pLink )
+ {
+ const Graphic* pGrf = pBrushItem->GetGraphic();
+ if( pGrf )
+ {
+ // Grafik als (JPG-)File speichern
+ const String* pTempFileName = GetOrigFileName();
+ if(pTempFileName)
+ rEmbGrfNm = *pTempFileName;
+ sal_uInt16 nErr = XOutBitmap::WriteGraphic( *pGrf, rEmbGrfNm,
+ String::CreateFromAscii( "JPG" ) );
+ if( !nErr ) // fehlerhaft, da ist nichts auszugeben
+ {
+ rEmbGrfNm = URIHelper::SmartRelToAbs( rEmbGrfNm );
+ if( HasCId() )
+ MakeCIdURL( rEmbGrfNm );
+ pLink = &rEmbGrfNm;
+ }
+ else
+ {
+ nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
+ }
+ }
+ }
+ else
+ {
+ rEmbGrfNm = *pLink;
+ if( HasCId() || bCfgCpyLinkedGrfs )
+ {
+ CopyLocalFileToINet( rEmbGrfNm, HasCId() );
+ if( HasCId() )
+ MakeCIdURL( rEmbGrfNm );
+ pLink = &rEmbGrfNm;
+ }
+ }
+
+ if( pLink )
+ {
+ ByteString sOut( ' ' );
+ String s( INetURLObject::AbsToRel( *pLink,
+ INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET ));
+ (sOut += sHTML_O_background) += "=\"";
+ Strm() << sOut.GetBuffer();
+ HTMLOutFuncs::Out_String( Strm(), s, eDestEnc ) << '\"';
+ }
+}
+
+void SwHTMLWriter::OutBackground( const SfxItemSet& rItemSet,
+ String& rEmbGrfNm, sal_Bool bGraphic )
+{
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BACKGROUND, sal_False,
+ &pItem ))
+ {
+ OutBackground( ((const SvxBrushItem*)pItem), rEmbGrfNm, bGraphic );
+ }
+}
+
+void SwHTMLWriter::GetIndentString( ByteString& rStr, sal_uInt16 nIncLvl )
+{
+ // etwas umstaendlich, aber wir haben nur einen Indent-String!
+ sal_uInt16 nLevel = nIndentLvl + nIncLvl;
+
+ if( nLevel && nLevel <= MAX_INDENT_LEVEL)
+ {
+ sIndentTabs[nLevel] = 0;
+ rStr = sIndentTabs;
+ sIndentTabs[nLevel] = '\t';
+ }
+}
+
+void SwHTMLWriter::OutNewLine( sal_Bool bCheck )
+{
+ if( !bCheck || (Strm().Tell()-nLastLFPos) > nIndentLvl )
+ {
+ Strm() << sNewLine;
+ nLastLFPos = Strm().Tell();
+ }
+
+ if( nIndentLvl && nIndentLvl <= MAX_INDENT_LEVEL)
+ {
+ sIndentTabs[nIndentLvl] = 0;
+ Strm() << sIndentTabs;
+ sIndentTabs[nIndentLvl] = '\t';
+ }
+}
+
+sal_uInt16 SwHTMLWriter::GetHTMLFontSize( sal_uInt32 nHeight ) const
+{
+ sal_uInt16 nSize = 1;
+ for( sal_uInt16 i=6; i>0; i-- )
+ {
+ if( nHeight > (aFontHeights[i] + aFontHeights[i-1])/2 )
+ {
+ nSize = i+1;
+ break;
+ }
+ }
+
+ return nSize;
+}
+
+
+void SwHTMLWriter::MakeCIdURL( String& rURL )
+{
+ if( !aCId.Len() )
+ return;
+
+ INetURLObject aURLObj( rURL );
+ if( INET_PROT_FILE!=aURLObj.GetProtocol() )
+ return;
+
+ String aLastName( aURLObj.GetLastName() );
+ ASSERT( aLastName.Len(), "Dateiname ohne Laenge!" );
+ // TODO: unicode?
+ aLastName.ToLowerAscii();
+
+ rURL.AssignAscii( "cid:" );
+ ((rURL += aLastName) += '.') += aCId;
+}
+
+
+// Struktur speichert die aktuellen Daten des Writers zwischen, um
+// einen anderen Dokument-Teil auszugeben, wie z.B. Header/Footer
+HTMLSaveData::HTMLSaveData( SwHTMLWriter& rWriter, sal_uInt32 nStt, sal_uInt32 nEnd,
+ const SwFlyFrmFmt *pFly, sal_Bool bSaveNum )
+ : rWrt( rWriter ),
+ pOldPam( rWrt.pCurPam ), pOldEnd( rWrt.GetEndPaM() ),
+ pOldFlyFmt( rWrt.GetFlyFrmFmt() ), pOldNumRuleInfo( 0 ),
+ pOldNextNumRuleInfo( 0 ),
+ nOldDefListLvl( rWrt.nDefListLvl ),
+ bOldOutHeader( rWrt.bOutHeader ), bOldOutFooter( rWrt.bOutFooter )
+{
+ bOldWriteAll = rWrt.bWriteAll;
+
+ rWrt.pCurPam = rWrt.NewSwPaM( *rWrt.pDoc, nStt, nEnd );
+
+ // Tabelle in Sonderbereichen erkennen
+ if( nStt != rWrt.pCurPam->GetMark()->nNode.GetIndex() )
+ {
+ const SwNode *pNd = rWrt.pDoc->GetNodes()[ nStt ];
+ if( pNd->IsTableNode() || pNd->IsSectionNode() )
+ rWrt.pCurPam->GetMark()->nNode = nStt;
+ }
+
+ rWrt.SetEndPaM( rWrt.pCurPam );
+ rWrt.pCurPam->Exchange( );
+ rWrt.bWriteAll = sal_True;
+ rWrt.nDefListLvl = 0;
+ rWrt.bOutHeader = rWrt.bOutFooter = sal_False;
+
+ // Ggf. die aktuelle Numerierungs-Info merken, damit sie wieder
+ // neu aufgenommen werden kann. Nur dann belibt auch die Numerierungs-
+ // Info des nachsten Absatz gueltig.
+ if( bSaveNum )
+ {
+ pOldNumRuleInfo = new SwHTMLNumRuleInfo( rWrt.GetNumInfo() );
+ pOldNextNumRuleInfo = rWrt.GetNextNumInfo();
+ rWrt.SetNextNumInfo( 0 );
+ }
+ else
+ {
+ rWrt.ClearNextNumInfo();
+ }
+
+ // Die Numerierung wird in jedem Fall unterbrochen.
+ rWrt.GetNumInfo().Clear();
+ rWrt.SetFlyFrmFmt( pFly );
+}
+
+
+HTMLSaveData::~HTMLSaveData()
+{
+ delete rWrt.pCurPam; // Pam wieder loeschen
+
+ rWrt.pCurPam = pOldPam;
+ rWrt.SetEndPaM( pOldEnd );
+ rWrt.bWriteAll = bOldWriteAll;
+ rWrt.nLastParaToken = 0;
+ rWrt.nDefListLvl = nOldDefListLvl;
+ rWrt.bOutHeader = bOldOutHeader;
+ rWrt.bOutFooter = bOldOutFooter;
+
+ // Ggf. die Numerierung von vor der Section fortsetzen. Die Numerierung
+ // des naecshten Absatz wird in jedem Fall ungueltig.
+ if( pOldNumRuleInfo )
+ {
+ rWrt.GetNumInfo().Set( *pOldNumRuleInfo );
+ delete pOldNumRuleInfo;
+ rWrt.SetNextNumInfo( pOldNextNumRuleInfo );
+ }
+ else
+ {
+ rWrt.GetNumInfo().Clear();
+ rWrt.ClearNextNumInfo();
+ }
+ rWrt.SetFlyFrmFmt( pOldFlyFmt );
+}
+
+
+void GetHTMLWriter( const String&, WriterRef& xRet )
+{
+ xRet = new SwHTMLWriter;
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/html/wrthtml.cxx,v 1.1.1.1 2000-09-18 17:14:56 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.163 2000/09/18 16:04:48 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.162 2000/08/18 13:03:26 jp
+ don't export escaped URLs
+
+ Revision 1.161 2000/08/16 15:51:33 jp
+ OutSectionStartTag: write correct HTML
+
+ Revision 1.160 2000/06/26 12:55:06 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.159 2000/06/26 09:52:46 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.158 2000/05/15 10:06:57 os
+ Chg: GetOrigFileName()
+
+ Revision 1.157 2000/04/10 12:20:58 mib
+ unicode
+
+ Revision 1.156 2000/03/21 15:06:18 os
+ UNOIII
+
+ Revision 1.155 2000/03/03 16:29:44 pl
+ #73771# workaround for c50 intel compiler
+
+ Revision 1.154 2000/03/03 15:21:01 os
+ StarView remainders removed
+
+ Revision 1.153 2000/02/11 14:37:47 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.152 1999/11/22 08:31:09 mib
+ #67578#: wrong assert
+
+*************************************************************************/
+
diff --git a/sw/source/filter/html/wrthtml.hxx b/sw/source/filter/html/wrthtml.hxx
new file mode 100644
index 000000000000..71407a1f1dcf
--- /dev/null
+++ b/sw/source/filter/html/wrthtml.hxx
@@ -0,0 +1,614 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrthtml.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _WRTHTML_HXX
+#define _WRTHTML_HXX
+
+
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXCONTAINER_HPP_
+#include <com/sun/star/container/XIndexContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORM_HPP_
+#include <com/sun/star/form/XForm.hpp>
+#endif
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#define _SVSTDARR_STRINGSDTOR
+#define _SVSTDARR_STRINGSSORTDTOR
+#define _SVSTDARR_ULONGS
+#include <svtools/svstdarr.hxx>
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+
+#include "shellio.hxx"
+#include "wrt_fn.hxx"
+
+// einige Forward Deklarationen
+class Color;
+class SwFrmFmt;
+class SwFlyFrmFmt;
+class SwDrawFrmFmt;
+class SwFmtINetFmt;
+class SwFmtVertOrient;
+class SwFmtFtn;
+class SwStartNode;
+class SwTableNode;
+class SwNoTxtNode;
+class SwPageDesc;
+class SwNodeIndex;
+class ImageMap;
+class SwNumRule;
+class SdrObject;
+class SvxBrushItem;
+class SvxFontItem;
+class SwHTMLNumRuleInfo;
+class SwHTMLPosFlyFrms;
+class SwHTMLTxtFtns;
+
+extern SwAttrFnTab aHTMLAttrFnTab;
+
+//#define HTML_PARSPACE ((MM50 * 7) / 10)
+#define HTML_PARSPACE (MM50)
+
+// Flags fuer die Ausgabe von Rahmen aller Art
+// BORDER geht nur bei OutHTML_Image
+// ANYSIZE gibt an, ob auch VAR_SIZE und MIN_SIZE angaben exportiert werden
+// ABSSIZE gibt an, ob Abstand und Umrandung ignoriert werden sollen
+const sal_uInt32 HTML_FRMOPT_ALIGN = 1<<0;
+const sal_uInt32 HTML_FRMOPT_S_ALIGN = 1<<1;
+
+const sal_uInt32 HTML_FRMOPT_WIDTH = 1<<2;
+const sal_uInt32 HTML_FRMOPT_HEIGHT = 1<<3;
+const sal_uInt32 HTML_FRMOPT_SIZE = HTML_FRMOPT_WIDTH|HTML_FRMOPT_HEIGHT;
+const sal_uInt32 HTML_FRMOPT_S_WIDTH = 1<<4;
+const sal_uInt32 HTML_FRMOPT_S_HEIGHT = 1<<5;
+const sal_uInt32 HTML_FRMOPT_S_SIZE = HTML_FRMOPT_S_WIDTH|HTML_FRMOPT_S_HEIGHT;
+const sal_uInt32 HTML_FRMOPT_ANYSIZE = 1<<6;
+const sal_uInt32 HTML_FRMOPT_ABSSIZE = 1<<7;
+const sal_uInt32 HTML_FRMOPT_MARGINSIZE = 1<<8;
+
+const sal_uInt32 HTML_FRMOPT_SPACE = 1<<9;
+const sal_uInt32 HTML_FRMOPT_S_SPACE = 1<<10;
+
+const sal_uInt32 HTML_FRMOPT_BORDER = 1<<11;
+const sal_uInt32 HTML_FRMOPT_S_BORDER = 1<<12;
+const sal_uInt32 HTML_FRMOPT_S_NOBORDER = 1<<13;
+
+const sal_uInt32 HTML_FRMOPT_S_BACKGROUND = 1<<14;
+
+const sal_uInt32 HTML_FRMOPT_NAME = 1<<15;
+const sal_uInt32 HTML_FRMOPT_ALT = 1<<16;
+const sal_uInt32 HTML_FRMOPT_BRCLEAR = 1<<17;
+const sal_uInt32 HTML_FRMOPT_S_PIXSIZE = 1<<18;
+const sal_uInt32 HTML_FRMOPT_ID = 1<<19;
+
+
+const sal_uInt32 HTML_FRMOPTS_GENIMG_ALL =
+ HTML_FRMOPT_ALT |
+ HTML_FRMOPT_SIZE |
+ HTML_FRMOPT_ABSSIZE |
+ HTML_FRMOPT_NAME;
+const sal_uInt32 HTML_FRMOPTS_GENIMG_CNTNR = HTML_FRMOPTS_GENIMG_ALL;
+const sal_uInt32 HTML_FRMOPTS_GENIMG =
+ HTML_FRMOPTS_GENIMG_ALL |
+ HTML_FRMOPT_ALIGN |
+ HTML_FRMOPT_SPACE |
+ HTML_FRMOPT_BRCLEAR;
+
+#define HTMLMODE_BLOCK_SPACER 0x00010000
+#define HTMLMODE_FLOAT_FRAME 0x00020000
+#define HTMLMODE_VERT_SPACER 0x00040000
+#define HTMLMODE_NBSP_IN_TABLES 0x00080000
+#define HTMLMODE_LSPACE_IN_NUMBUL 0x00100000
+#define HTMLMODE_NO_BR_AT_PAREND 0x00200000
+#define HTMLMODE_PRINT_EXT 0x00400000
+#define HTMLMODE_ABS_POS_FLY 0x00800000
+#define HTMLMODE_ABS_POS_DRAW 0x01000000
+#define HTMLMODE_FLY_MARGINS 0x02000000
+#define HTMLMODE_BORDER_NONE 0x04000000
+#define HTMLMODE_FONT_GENERIC 0x08000000
+#define HTMLMODE_FRSTLINE_IN_NUMBUL 0x10000000
+#define HTMLMODE_NO_CONTROL_CENTERING 0x20000000
+
+#define HTML_DLCOLL_DD 0x4000
+#define HTML_DLCOLL_DT 0x8000
+
+#define CSS1_FMT_ISTAG (USHRT_MAX)
+#define CSS1_FMT_CMPREF (USHRT_MAX-1)
+#define CSS1_FMT_SPECIAL (USHRT_MAX-1)
+
+// Die folgenden Flags bestimmen nur, welche Descriptoren, Tags, Optionen etc.
+// ausgegeben werden ...
+#define CSS1_OUTMODE_SPAN_NO_ON 0x0000
+#define CSS1_OUTMODE_SPAN_TAG_ON 0x0001
+#define CSS1_OUTMODE_STYLE_OPT_ON 0x0002
+#define CSS1_OUTMODE_RULE_ON 0x0003
+#define CSS1_OUTMODE_SPAN_TAG1_ON 0x0004
+#define CSS1_OUTMODE_ANY_ON 0x0007
+
+#define CSS1_OUTMODE_SPAN_NO_OFF 0x0000
+#define CSS1_OUTMODE_SPAN_TAG_OFF (0x0001 << 3)
+#define CSS1_OUTMODE_STYLE_OPT_OFF (0x0002 << 3)
+#define CSS1_OUTMODE_RULE_OFF (0x0003 << 3)
+#define CSS1_OUTMODE_SPAN_TAG1_OFF (0x0004 << 3)
+#define CSS1_OUTMODE_ANY_OFF (0x0007 << 3)
+
+#define CSS1_OUTMODE_ONOFF(a) (CSS1_OUTMODE_##a##_ON|CSS1_OUTMODE_##a##_OFF)
+#define CSS1_OUTMODE_SPAN_TAG CSS1_OUTMODE_ONOFF(SPAN_TAG)
+#define CSS1_OUTMODE_STYLE_OPT CSS1_OUTMODE_ONOFF(STYLE_OPT)
+#define CSS1_OUTMODE_RULE CSS1_OUTMODE_ONOFF(RULE)
+#define CSS1_OUTMODE_SPAN_TAG1 CSS1_OUTMODE_ONOFF(TAG1)
+
+// Die folgenden Flags legen fest, was ausgegeben wird
+#define CSS1_OUTMODE_TEMPLATE 0x0000
+#define CSS1_OUTMODE_BODY (0x0001 << 6)
+#define CSS1_OUTMODE_PARA (0x0002 << 6)
+#define CSS1_OUTMODE_HINT (0x0003 << 6)
+#define CSS1_OUTMODE_FRAME (0x0004 << 6)
+#define CSS1_OUTMODE_TABLE (0x0005 << 6)
+#define CSS1_OUTMODE_TABLEBOX (0x0006 << 6)
+#define CSS1_OUTMODE_DROPCAP (0x0007 << 6)
+#define CSS1_OUTMODE_SECTION (0x0008 << 6)
+#define CSS1_OUTMODE_SOURCE (0x000f << 6)
+
+#define CSS1_OUTMODE_ENCODE (0x0001 << 10)
+
+
+// der HTML-Writer
+struct HTMLControl;
+SV_DECL_PTRARR_SORT_DEL( HTMLControls, HTMLControl*, 1, 1 )
+SV_DECL_PTRARR( INetFmts, SwFmtINetFmt*, 1, 1 )
+
+struct SwHTMLFmtInfo;
+SV_DECL_PTRARR_SORT_DEL( SwHTMLFmtInfos, SwHTMLFmtInfo*, 1, 1 )
+
+class SwHTMLWriter : public Writer
+{
+ String aCId; // Content-Id fuer Mail-Export
+
+ SwHTMLPosFlyFrms *pHTMLPosFlyFrms;
+ SwHTMLNumRuleInfo *pNumRuleInfo;// aktuelle Numerierung
+ SwHTMLNumRuleInfo *pNextNumRuleInfo;
+ const SwFlyFrmFmt* pFlyFrmFmt; // liegt der Node in einem FlyFrame, ist
+ // das Format gesetzt, sonst 0. In Tabellen
+ // nur dann, wenn die Tabelle alleine
+ // im Rahmen ist.
+
+ sal_uInt32 nHTMLMode; // Beschreibung der Export-Konfiguration
+
+ FieldUnit eCSS1Unit;
+
+ sal_uInt16 OutHeaderAttrs();
+ const SwPageDesc *MakeHeader( sal_uInt16& rHeaderAtrs );
+ void GetControls();
+
+ void AddLinkTarget( const String& rURL );
+ void CollectLinkTargets();
+
+protected:
+ sal_uInt32 WriteStream();
+
+public:
+#if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+#else
+ static const sal_Char __FAR_DATA sNewLine[]; // \015\012
+#endif
+
+ SvStringsDtor aImgMapNames; // geschriebene Image Maps
+ SvStringsSortDtor aImplicitMarks;// implizite Stprungmarken
+ SvStringsDtor aOutlineMarks; // geschriebene Image Maps
+ SvULongs aOutlineMarkPoss;
+ HTMLControls aHTMLControls; // die zu schreibenden ::com::sun::star::form::Forms
+ SwHTMLFmtInfos aChrFmtInfos;
+ SwHTMLFmtInfos aTxtCollInfos;
+ INetFmts aINetFmts; // die "offenen" INet-Attribute
+ SwHTMLTxtFtns *pFootEndNotes;
+
+ String aCSS1Selector; // der Selektor eines Styles
+ String aBulletGrfs[MAXLEVEL]; // die Grafiken fuer Listen
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > *pxFormComps; // die aktuelle Form
+
+ SwDoc *pTemplate; // die HTML-Vorlage
+ Color *pDfltColor; // default Farbe
+ SwNodeIndex *pStartNdIdx; // Index des ersten Absatz
+ const SwPageDesc *pCurrPageDesc;// Die aktuelle Seiten-Vorlage
+ const SwFmtFtn *pFmtFtn;
+
+ sal_uInt32 aFontHeights[7]; // die Font-Hoehen 1-7
+
+ sal_uInt32 nWarn; // Result-Code fuer Warnungen
+ xub_StrLen nLastLFPos; // letzte Position eines LF
+
+ sal_uInt16 nLastParaToken; // fuers Absaetze zusammenhalten
+ sal_uInt16 nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ sal_uInt16 nImgMapCnt; // zum eindeutig
+ sal_uInt16 nFormCntrlCnt;
+ sal_uInt16 nEndNote;
+ sal_uInt16 nFootNote;
+ sal_uInt16 nLeftMargin; // linker Einzug (z.B. aus Listen)
+ sal_uInt16 nDfltLeftMargin; // die dafaults, der nicht geschrieben
+ sal_uInt16 nDfltRightMargin; // werden muessen (aus der Vorlage)
+ short nFirstLineIndent; // Erstzeilen-Einzug (aus Listen)
+ short nDfltFirstLineIndent; // nicht zu schreibender default
+ sal_uInt16 nDfltTopMargin; // die defaults, der nicht geschrieben
+ sal_uInt16 nDfltBottomMargin; // werden muessen (aus der Vorlage)
+ sal_uInt16 nIndentLvl; // wie weit ist eingerueckt?
+ xub_StrLen nWhishLineLen; // wie lang darf eine Zeile werden?
+ sal_uInt16 nDefListLvl; // welcher DL-Level existiert gerade
+ sal_uInt16 nDefListMargin; // Wie weit wird in DL eingerueckt
+ sal_uInt16 nHeaderFooterSpace;
+ sal_uInt16 nTxtAttrsToIgnore;
+ sal_uInt16 nExportMode;
+ sal_uInt16 nCSS1OutMode;
+
+ rtl_TextEncoding eDestEnc;
+
+ // Beschreibung der Export-Konfiguration
+ // 0
+ sal_Bool bCfgOutStyles : 1; // Styles exportieren
+ sal_Bool bCfgPreferStyles : 1; // Styles herkoemmlichen Tags vorziehen
+ sal_Bool bCfgFormFeed : 1; // Form-Feeds exportieren
+ sal_Bool bCfgStarBasic : 1; // StarBasic exportieren
+ sal_Bool bCfgCpyLinkedGrfs : 1;
+
+ // Beschreibung dessen, was exportiert wird
+
+ sal_Bool bFirstLine : 1; // wird die 1. Zeile ausgegeben ?
+ sal_Bool bTagOn : 1; // Tag an oder aus/Attr-Start oder -Ende
+
+ // Die folgenden beiden Flags geben an, wir Attribute exportiert werden:
+ // bTxtAttr bOutOpts
+ // 0 0 Style-Sheets
+ // 1 0 Hints: Jedes Attribut wird als eignes Tag
+ // geschrieben und es gibt ein End-Tag
+ // 0 1 (Absatz-)Attribute: Das Attribut wird als Option
+ // eines bereits geschrieben Tags exportiert. Es
+ // gibt kein End-Tag.
+ sal_Bool bTxtAttr : 1;
+ // 8
+ sal_Bool bOutOpts : 1;
+
+ sal_Bool bOutTable : 1; // wird der Tabelleninhalt geschrieben?
+ sal_Bool bOutHeader : 1;
+ sal_Bool bOutFooter : 1;
+
+ // Flags fuer Style-Export
+
+ sal_Bool bFirstCSS1Rule : 1; // wurde schon eine Property ausgegeben
+ sal_Bool bFirstCSS1Property : 1; // wurde schon eine Property ausgegeben
+ sal_Bool bPoolCollTextModified : 1; // die Textkoerper-Vorlage wurde
+ // modifiziert.
+ sal_Bool bCSS1IgnoreFirstPageDesc : 1;
+ // 16
+
+ // was muss/kann/darf nicht ausgegeben werden?
+
+ sal_Bool bNoAlign : 1; // HTML-Tag erlaubt kein ALIGN=...
+ sal_Bool bClearLeft : 1; // <BR CLEAR=LEFT> am Absatz-Ende ausg.
+ sal_Bool bClearRight : 1; // <BR CLEAR=RIGHT> am Absatz-Ende ausg.
+ sal_Bool bLFPossible : 1; // ein Zeilenumbruch darf eingef. werden
+
+ // sonstiges
+
+ sal_Bool bPreserveForm : 1; // die aktuelle Form beibehalten
+
+ sal_Bool bCfgNetscape4 : 1; // Netscape4 Hacks
+ // 22
+
+ SwHTMLWriter();
+ virtual ~SwHTMLWriter();
+
+ void Out_SwDoc( SwPaM* ); // schreibe den makierten Bereich
+
+ // gebe alle an in aktuellen Ansatz stehenden ::com::sun::star::text::Bookmarks aus
+ void OutAnchor( const String& rName );
+ void OutBookmarks();
+ void OutImplicitMark( const String& rMark, const sal_Char *pMarkType );
+
+ // gebe die evt. an der akt. Position stehenden FlyFrame aus.
+ sal_Bool OutFlyFrm( sal_uInt32 nNdIdx, xub_StrLen nCntntIdx,
+ sal_uInt8 nPos );
+ void OutFrmFmt( sal_uInt8 nType, const SwFrmFmt& rFmt,
+ const SdrObject *pSdrObj );
+
+ void OutForm( sal_Bool bTagOn=sal_True, const SwStartNode *pStNd=0 );
+ void OutHiddenForms();
+ void OutHiddenForm( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::form::XForm > & rForm );
+
+ void OutForm( sal_Bool bOn, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > & rFormComps );
+ void OutHiddenControls( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::container::XIndexContainer > & rFormComps,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertySet > & rPropSet );
+ sal_Bool HasControls() const;
+
+ void OutFootEndNoteInfo();
+ void OutFootEndNotes();
+ xub_StrLen GetFootEndNoteSymLen( const SwFmtFtn& rFmtFtn );
+ void OutFootEndNoteSym( const SwFmtFtn& rFmtFtn );
+
+#ifdef JAVA_BASIC_IDE
+ void OutBasicModule( const String& rName, const String& rLanguage );
+#endif
+ void OutBasic();
+
+ void OutAndSetDefList( sal_uInt16 nNewLvl );
+
+ void OutStyleSheet( const SwPageDesc& rPageDesc, sal_Bool bUsed=sal_True );
+
+ inline void OutCSS1_PropertyAscii( const sal_Char *pProp,
+ const sal_Char *pVal );
+ inline void OutCSS1_PropertyAscii( const sal_Char *pProp,
+ const ByteString& rVal );
+ inline void OutCSS1_Property( const sal_Char *pProp, const String& rVal );
+ void OutCSS1_Property( const sal_Char *pProp, const sal_Char *pVal,
+ const String *pSVal );
+ void OutCSS1_UnitProperty( const sal_Char *pProp, long nVal );
+ void OutCSS1_PixelProperty( const sal_Char *pProp, long nVal, sal_Bool bVert );
+ void OutCSS1_SfxItemSet( const SfxItemSet& rItemSet, sal_Bool bDeep=sal_True );
+#if USED
+ void OutCSS1_SfxItem( const SfxPoolItem *pItem1,
+ const SfxPoolItem *pItem2 = 0 );
+#endif
+
+ // BODY-Tag-Events aus der SFX-Konfigaurion
+ void OutBasicBodyEvents();
+
+ // BACKGROUND/BGCOLOR-Option
+ void OutBackground( const SvxBrushItem *pBrushItem, String& rEmbGrfNm,
+ sal_Bool bGraphic );
+ void OutBackground( const SfxItemSet& rItemSet, String &rEmbGrfName,
+ sal_Bool bGraphic );
+
+ // ALT/ALIGN/WIDTH/HEIGHT/HSPACE/VSPACE-Optionen des aktuellen
+ // Frame-Formats ausgeben und ggf. ein <BR CLEAR=...> vorne an
+ // rEndTags anhaengen
+ void OutFrmFmtOptions( const SwFrmFmt& rFrmFmt, const String& rAltTxt,
+ ByteString &rEndTags, sal_uInt32 nFrmOpts );
+ void OutCSS1_TableFrmFmtOptions( const SwFrmFmt& rFrmFmt );
+ void OutCSS1_SectionFmtOptions( const SwFrmFmt& rFrmFmt );
+ void OutCSS1_FrmFmtOptions( const SwFrmFmt& rFrmFmt, sal_uInt32 nFrmOpts,
+ const SdrObject *pSdrObj=0,
+ const SfxItemSet *pItemSet=0 );
+ void OutCSS1_FrmFmtBackground( const SwFrmFmt& rFrmFmt );
+
+ void ChangeParaToken( sal_uInt16 nNew );
+
+ // Umgebendes FlyFrmFmt
+ const SwFlyFrmFmt *GetFlyFrmFmt() const { return pFlyFrmFmt; }
+ void SetFlyFrmFmt( const SwFlyFrmFmt *pFly ) { pFlyFrmFmt = pFly; }
+
+ void IncIndentLevel() { nIndentLvl++; }
+ void DecIndentLevel() { if ( nIndentLvl ) nIndentLvl--; }
+ void GetIndentString( ByteString& rStr, sal_uInt16 nIncLvl=0 );
+
+ xub_StrLen GetLineLen() { return (xub_StrLen)(Strm().Tell()-nLastLFPos); }
+ void OutNewLine( sal_Bool bCheck=sal_False );
+
+ // fuer HTMLSaveData
+ SwPaM* GetEndPaM() { return pOrigPam; }
+ void SetEndPaM( SwPaM* pPam ) { pOrigPam = pPam; }
+
+ sal_uInt32 ToPixel( sal_uInt32 nVal ) const;
+
+ sal_uInt16 GuessFrmType( const SwFrmFmt& rFrmFmt,
+ const SdrObject*& rpStrObj );
+ sal_uInt16 GuessOLENodeFrmType( const SwNode& rNd );
+
+ void CollectFlyFrms();
+
+ sal_uInt16 GetHTMLFontSize( sal_uInt32 nFontHeight ) const;
+
+ // Die aktuelle Numerierungs-Information holen.
+ SwHTMLNumRuleInfo& GetNumInfo() { return *pNumRuleInfo; }
+
+ // Die Numerierungs-Information des naechsten Absatz holen. Sie
+ // muss noch nicht vorhanden sein!
+ SwHTMLNumRuleInfo *GetNextNumInfo() { return pNextNumRuleInfo; }
+
+ // Die Numerierungs-Information des naechsten Absatz setzen.
+ void SetNextNumInfo( SwHTMLNumRuleInfo *pNxt ) { pNextNumRuleInfo=pNxt; }
+
+ // Die Numerierungs-Information des naeschten Absatz fuellen.
+ void FillNextNumInfo();
+
+ // Die Numerierungs-Information des naeschten Absatz loeschen.
+ void ClearNextNumInfo();
+
+ static const SdrObject *GetHTMLControl( const SwDrawFrmFmt& rFmt );
+ static const SdrObject *GetMarqueeTextObj( const SwDrawFrmFmt& rFmt );
+ static sal_uInt16 GetCSS1Selector( const SwFmt *pFmt, ByteString& rToken,
+ String& rClass, sal_uInt16& rRefPoolId,
+ String *pPseudo=0 );
+
+ static const SwFmt *GetTemplateFmt( sal_uInt16 nPoolId, SwDoc *pTemplate );
+ static const SwFmt *GetParentFmt( const SwFmt& rFmt, sal_uInt16 nDeep );
+
+ static void SubtractItemSet( SfxItemSet& rItemSet,
+ const SfxItemSet& rRefItemSet,
+ sal_Bool bSetDefaults,
+ sal_Bool bClearSame = sal_True );
+
+ static void GetEEAttrsFromDrwObj( SfxItemSet& rItemSet,
+ const SdrObject *pObj,
+ sal_Bool bSetDefaults );
+
+ static sal_uInt16 GetDefListLvl( const String& rNm, sal_uInt16 nPoolId );
+
+ sal_uInt32 GetHTMLMode() const { return nHTMLMode; }
+ sal_Bool IsHTMLMode( sal_uInt32 nMode ) const { return (nHTMLMode & nMode) != 0; }
+
+ inline sal_Bool IsCSS1Source( sal_uInt16 n ) const;
+ sal_Bool HasCId() const { return aCId.Len() > 0; }
+ void MakeCIdURL( String& rURL );
+
+ static const sal_Char *GetNumFormat( sal_uInt16 nFmt );
+ static void PrepareFontList( const SvxFontItem& rFontItem, String& rNames,
+ sal_Unicode cQuote, sal_Bool bGeneric );
+
+ FieldUnit GetCSS1Unit() const { return eCSS1Unit; }
+};
+
+inline sal_Bool SwHTMLWriter::IsCSS1Source( sal_uInt16 n ) const
+{
+ return n == (nCSS1OutMode & CSS1_OUTMODE_SOURCE);
+}
+
+inline void SwHTMLWriter::OutCSS1_PropertyAscii( const sal_Char *pProp,
+ const sal_Char *pVal )
+{
+ OutCSS1_Property( pProp, pVal, 0 );
+}
+
+inline void SwHTMLWriter::OutCSS1_PropertyAscii( const sal_Char *pProp,
+ const ByteString& rVal )
+{
+ OutCSS1_Property( pProp, rVal.GetBuffer(), 0 );
+}
+
+inline void SwHTMLWriter::OutCSS1_Property( const sal_Char *pProp,
+ const String& rVal )
+{
+ OutCSS1_Property( pProp, 0, &rVal );
+}
+
+// Struktur speichert die aktuellen Daten des Writers zwischen, um
+// einen anderen Dokument-Teil auszugeben, wie z.B. Header/Footer
+// Mit den beiden USHORTs im CTOR wird ein neuer PaM erzeugt und auf
+// die Position im Dokument gesetzt.
+// Im Destructor werden alle Daten wieder restauriert und der angelegte
+// Pam wieder geloescht.
+
+struct HTMLSaveData
+{
+ SwHTMLWriter& rWrt;
+ SwPaM* pOldPam, *pOldEnd;
+ SwHTMLNumRuleInfo *pOldNumRuleInfo; // Owner = this
+ SwHTMLNumRuleInfo *pOldNextNumRuleInfo; // Owner = HTML-Writer
+ sal_uInt16 nOldDefListLvl;
+ sal_Bool bOldWriteAll : 1;
+ sal_Bool bOldOutHeader : 1;
+ sal_Bool bOldOutFooter : 1;
+ const SwFlyFrmFmt* pOldFlyFmt;
+
+ HTMLSaveData( SwHTMLWriter&, sal_uInt32 nStt, sal_uInt32 nEnd,
+ const SwFlyFrmFmt* pFly, sal_Bool bSaveNum=sal_True );
+ ~HTMLSaveData();
+};
+
+
+// einige Funktions-Deklarationen
+Writer& OutHTML_FrmFmtOLENode( Writer& rWrt, const SwFrmFmt& rFmt,
+ sal_Bool bInCntnr );
+Writer& OutHTML_FrmFmtOLENodeGrf( Writer& rWrt, const SwFrmFmt& rFmt,
+ sal_Bool bInCntnr );
+
+Writer& OutHTML_SwTxtNode( Writer&, const SwCntntNode& );
+Writer& OutHTML_SwTblNode( Writer& , SwTableNode &, const SwFrmFmt *,
+ const String* pCaption=0, sal_Bool bTopCaption=sal_False );
+
+Writer& OutHTML_DrawFrmFmtAsControl( Writer& rWrt, const SwDrawFrmFmt& rFmt,
+ const SdrObject& rSdrObj, sal_Bool bInCntnr );
+Writer& OutHTML_DrawFrmFmtAsMarquee( Writer& rWrt, const SwDrawFrmFmt& rFmt,
+ const SdrObject& rSdrObj );
+
+Writer& OutHTML_HeaderFooter( Writer& rWrt, const SwFrmFmt& rFrmFmt,
+ sal_Bool bHeader );
+
+Writer& OutHTML_Image( Writer&, const SwFrmFmt& rFmt,
+ const String& rGrfName, const String& rAlternateTxt,
+ const Size& rRealSize, sal_uInt32 nFrmOpts,
+ const sal_Char *pMarkType = 0,
+ const ImageMap *pGenImgMap = 0 );
+Writer& OutHTML_BulletImage( Writer& rWrt, const sal_Char *pTag,
+ const SvxBrushItem* pBrush, String &rGrfName,
+ const Size &rSize,
+ const SwFmtVertOrient* pVertOrient );
+
+Writer& OutHTML_SwFmtFld( Writer& rWrt, const SfxPoolItem& rHt );
+Writer& OutHTML_SwFmtFtn( Writer& rWrt, const SfxPoolItem& rHt );
+Writer& OutHTML_INetFmt( Writer&, const SwFmtINetFmt& rINetFmt, sal_Bool bOn );
+
+Writer& OutCSS1_BodyTagStyleOpt( Writer& rWrt, const SfxItemSet& rItemSet,
+ String aEmbBGGrfName );
+Writer& OutCSS1_ParaTagStyleOpt( Writer& rWrt, const SfxItemSet& rItemSet );
+
+Writer& OutCSS1_HintSpanTag( Writer& rWrt, const SfxPoolItem& rHt );
+Writer& OutCSS1_HintStyleOpt( Writer& rWrt, const SfxPoolItem& rHt );
+
+Writer& OutCSS1_TableBGStyleOpt( Writer& rWrt, const SfxPoolItem& rHt );
+Writer& OutCSS1_NumBulListStyleOpt( Writer& rWrt, const SwNumRule& rNumRule,
+ sal_uInt8 nLevel );
+
+Writer& OutHTML_NumBulListStart( SwHTMLWriter& rWrt,
+ const SwHTMLNumRuleInfo& rInfo );
+Writer& OutHTML_NumBulListEnd( SwHTMLWriter& rWrt,
+ const SwHTMLNumRuleInfo& rNextInfo );
+
+
+#endif // _WRTHTML_HXX
+
diff --git a/sw/source/filter/inc/fltbase.hxx b/sw/source/filter/inc/fltbase.hxx
new file mode 100644
index 000000000000..b739718d7b42
--- /dev/null
+++ b/sw/source/filter/inc/fltbase.hxx
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * $RCSfile: fltbase.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef __FLTBASE_HXX__
+#define __FLTBASE_HXX__
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+class SwFilterBase
+{
+protected:
+ SvStream *pIn;
+ sal_Char *pReadBuff; // Groessenangabe
+ INT32 nBytesLeft; // noch zu lesende Bytes des aktuelle Records
+
+ CharSet eQuellChar; // Quell-Zeichensatz (interner Zeichensatz)
+// CharSet eZielChar; // Ziel-Zeichensatz
+
+ USHORT nTab; // z.Zt. bearbeitete Tabelle
+ USHORT nReadBuffSize;// temporaerer Lesepuffer mit
+
+ // ----------------------------------------------------------
+ inline void ReadChar( char &rC );
+ inline void ReadByte( BYTE &rN );
+ inline void Read( short &rN );
+ inline void ReadUnicode( sal_Unicode &rU );
+ inline void Read( BYTE &rN0, USHORT &rN1, USHORT &rN2 );
+ inline void Read( USHORT &rN );
+ inline void Read( USHORT &rN1, USHORT &rN2 );
+ inline void Read( USHORT &rN1, USHORT &rN2, USHORT &rN3, USHORT &rN4 );
+ inline void Read( double &rF );
+ void Read( String &rS ); // liest 0-terminierten C-String!
+ inline void ClearBytesLeft( void );
+};
+
+
+inline void SwFilterBase::ReadChar( char &rC )
+ {
+ *pIn >> rC;
+ nBytesLeft--;
+ }
+
+inline void SwFilterBase::ReadByte( BYTE &rN )
+ {
+ *pIn >> rN;
+ nBytesLeft--;
+ }
+
+inline void SwFilterBase::ReadUnicode( sal_Unicode &rU )
+{
+ {
+ sal_Char cC;
+ *pIn >> cC;
+ rU = ByteString::ConvertToUnicode(cC, eQuellChar);
+ nBytesLeft--;
+ }
+}
+
+inline void SwFilterBase::Read( short &rN )
+ {
+ *pIn >> rN;
+ nBytesLeft -= 2;
+ }
+
+inline void SwFilterBase::Read( BYTE &rN0, USHORT &rN1, USHORT &rN2 )
+ {
+ *pIn >> rN0 >> rN1 >> rN2;
+ nBytesLeft -= 5;
+ }
+
+inline void SwFilterBase::Read( USHORT &rN )
+ {
+ *pIn >> rN;
+ nBytesLeft -= 2;
+ }
+
+inline void SwFilterBase::Read( USHORT &rN1, USHORT &rN2 )
+ {
+ *pIn >> rN1 >> rN2;
+ nBytesLeft -= 4;
+ }
+
+inline void SwFilterBase::Read( USHORT &rN1, USHORT &rN2, USHORT &rN3, USHORT &rN4 )
+ {
+ *pIn >> rN1 >> rN2 >> rN3 >> rN4;
+ nBytesLeft -= 8;
+ }
+
+inline void SwFilterBase::Read( double &rF )
+ {
+ *pIn >> rF;
+ nBytesLeft -= 8;
+ }
+
+inline void SwFilterBase::ClearBytesLeft( void )
+ {
+ pIn->SeekRel( nBytesLeft );
+ nBytesLeft = 0;
+ }
+
+
+#endif
+
diff --git a/sw/source/filter/inc/fltglbls.hxx b/sw/source/filter/inc/fltglbls.hxx
new file mode 100644
index 000000000000..e0d1f2f80dc4
--- /dev/null
+++ b/sw/source/filter/inc/fltglbls.hxx
@@ -0,0 +1,218 @@
+/*************************************************************************
+ *
+ * $RCSfile: fltglbls.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FLTGLBS_HXX
+#define _FLTGLBS_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _LANG_HXX //autogen
+#include <tools/lang.hxx>
+#endif
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+
+class SfxPoolItem;
+class SwDoc;
+class SwPaM;
+class SwTable;
+
+class XF_Buffer;
+class ColorBuffer;
+class FontBuffer;
+class SvNumberFormatter;
+
+
+class ExcGlob;
+extern ExcGlob *pExcGlob;
+
+class LotGlob;
+extern LotGlob *pLotGlob;
+
+// ----- Basis-Klasse ----------------------------------------------------
+class FilterGlobals
+{
+protected:
+ SvPtrarr aTblFmts;
+ USHORT nColStart;
+ USHORT nColEnd;
+ USHORT nRowStart;
+ USHORT nRowEnd;
+ USHORT nAnzCols;
+ USHORT nAnzRows;
+
+public:
+ FilterGlobals( SwDoc& rDoc, const SwPaM& rPam );
+ ~FilterGlobals();
+
+ SwDoc *pD;
+ SwPaM *pPam;
+ const SwTable *pTable;
+
+ SvNumberFormatter *pNumFormatter;
+ LanguageType eDefLanguage;
+ String aStandard; // fuer Excel-Standard-Format
+ ULONG nStandard;
+ ULONG nDefFormat; // = 0xFFFFFFFF
+
+ void SetRange( USHORT nCS, USHORT nCE, USHORT nRS, USHORT nRE );
+
+ BOOL IsInColRange( USHORT nCol )
+ { return ( nCol >= nColStart && nCol <= nColEnd ); }
+ BOOL IsInRowRange( USHORT nRow )
+ { return ( nRow >= nRowStart && nRow <= nRowEnd ); }
+ BOOL IsInRange( USHORT nCol, USHORT nRow )
+ { return IsInRowRange(nRow) && IsInColRange(nCol); }
+
+ void NormalizeCol( USHORT &rCol ) { rCol -= nColStart; }
+ void NormalizeRow( USHORT &rRow ) { rRow -= nRowStart; }
+ void Normalize( USHORT &rCol, USHORT &rRow )
+ { NormalizeCol( rCol ); NormalizeRow( rRow ); }
+
+ USHORT AnzCols() const { return nAnzCols; }
+ USHORT AnzRows() const { return nAnzRows; }
+
+ BOOL ColRangeLimitter( USHORT &rCS, USHORT &rCE );
+
+ void InsertText( USHORT nCol, USHORT nRow, const String& rStr );
+ void CreateTable();
+ void InsertAttr( const SfxPoolItem& rItem );
+
+ inline void ColLimitter( USHORT &rCol );
+ inline void RowLimitter( USHORT &rRow );
+#ifdef USED
+// inline BOOL RowRangeLimitter( USHORT &rRS, USHORT &rRE );
+#endif
+};
+
+
+
+
+
+// ----- for Excel-Import only -------------------------------------------
+
+enum ExcelRecordTypes { ERT_Biff2, ERT_Biff3, ERT_Biff4, ERT_Biff5 };
+
+class ExcGlob : public FilterGlobals
+{
+public:
+ ExcGlob( SwDoc& rDoc, const SwPaM& rPam );
+ ~ExcGlob();
+
+ XF_Buffer *pXF_Buff;
+ FontBuffer *pFontBuff;
+ ColorBuffer *pColorBuff;
+ ExcelRecordTypes eHauptDateiTyp;
+};
+
+// ----- for Lotus-Import only -------------------------------------------
+class LotGlob : public FilterGlobals
+{
+public:
+ LotGlob( SwDoc& rDoc, const SwPaM& rPam )
+ : FilterGlobals( rDoc, rPam ) {}
+};
+
+
+
+
+inline void FilterGlobals::ColLimitter( USHORT &rCol )
+{
+ if( rCol < nColStart )
+ rCol = nColStart;
+ else if( rCol > nColEnd )
+ rCol = nColEnd;
+}
+
+inline void FilterGlobals::RowLimitter( USHORT &rRow )
+{
+ if( rRow < nRowStart )
+ rRow = nRowStart;
+ else if( rRow > nRowEnd )
+ rRow = nRowEnd;
+}
+
+#ifdef USED
+
+inline BOOL FilterGlobals::RowRangeLimitter( USHORT &rRS, USHORT &rRE )
+ {
+ // PREC / POST: analog zu ColRangeLimitter
+ BOOL bRet;
+ DBG_ASSERT( rRS <= rRE,
+ "-FilterGlobals::RowRangeLimitter(): Startzeile > Endzeile!" );
+ if( rRS > nRowEnd || rRE < nRowStart )
+ bRet = FALSE;
+ else
+ {
+ bRet = TRUE;
+ if( rRS < nRowStart ) rRS = nRowStart;
+ if( rRE > nRowEnd ) rRE = nRowEnd;
+ }
+ return bRet;
+ }
+
+#endif
+
+
+#endif
+
diff --git a/sw/source/filter/inc/fltini.hxx b/sw/source/filter/inc/fltini.hxx
new file mode 100644
index 000000000000..05abeedfe43c
--- /dev/null
+++ b/sw/source/filter/inc/fltini.hxx
@@ -0,0 +1,219 @@
+/*************************************************************************
+ *
+ * $RCSfile: fltini.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FLTINI_HXX
+#define _FLTINI_HXX
+
+
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _TOOLS_COLOR_HXX
+#include <tools/color.hxx>
+#endif
+
+class SwNumRuleTbl;
+class SwDoc;
+class SwTxtNode;
+class SwNodeNum;
+class SwNumRule;
+class SwNodeIndex;
+
+
+// die speziellen Reader
+
+class Sw6Reader: public Reader
+{
+ virtual ULONG Read( SwDoc &,SwPaM &,const String &);
+};
+
+class W4WReader: public StgReader
+{
+ String sVersion;
+ USHORT nFilter;
+ BOOL bStorageFlag;
+ virtual ULONG Read(SwDoc &,SwPaM &,const String &);
+ // wir wollen die Streams / Storages nicht geoeffnet haben
+ virtual int SetStrmStgPtr();
+public:
+ W4WReader() : StgReader(), nFilter(0), bStorageFlag(FALSE) {}
+ virtual int GetReaderType();
+ virtual void SetFltName( const String& rFltName );
+
+ USHORT GetFilter() const { return nFilter; }
+ const String& GetVersion() const { return sVersion; }
+};
+
+#ifdef DEBUG_SH
+
+class Internal_W4WReader: public W4WReader
+{
+ virtual ULONG Read(SwDoc &,SwPaM &,const String &);
+};
+
+#endif
+
+class ExcelReader : public StgReader
+{
+ virtual ULONG Read(SwDoc &,SwPaM &,const String &);
+public:
+ virtual int GetReaderType();
+};
+
+class LotusReader : public Reader
+{
+ CharSet eCodeSet;
+ virtual ULONG Read(SwDoc &,SwPaM &,const String &);
+public:
+ virtual void SetFltName( const String& rFltNm );
+};
+
+class HTMLReader: public Reader
+{
+ // wir wollen die Streams / Storages nicht geoeffnet haben
+ virtual int SetStrmStgPtr();
+ virtual ULONG Read(SwDoc &,SwPaM &,const String &);
+public:
+ HTMLReader();
+};
+
+class WW1Reader : public Reader
+{
+ virtual ULONG Read(SwDoc &,SwPaM &,const String &);
+};
+
+class WW8Reader : public StgReader
+{
+ virtual ULONG Read(SwDoc &,SwPaM &,const String &);
+public:
+ virtual int GetReaderType();
+
+ virtual BOOL HasGlossaries() const;
+ virtual BOOL ReadGlossaries( SwTextBlocks&, BOOL bSaveRelFiles ) const;
+};
+
+class XMLReader : public Reader
+{
+ virtual ULONG Read(SwDoc &,SwPaM &,const String &);
+public:
+ XMLReader();
+};
+
+// die speziellen Writer
+
+#if 0
+WriterRef GetW4WWriter( const String& );
+WriterRef GetStgWriter( const String& );
+WriterRef GetWWWriter( const String& );
+WriterRef GetWW8Writer( const String& );
+#if !( defined(PRODUCT) || defined(MAC) || defined(PM2) )
+WriterRef GetDebugWriter( const String& );
+WriterRef GetUndoWriter( const String& );
+#endif
+#else
+void GetW4WWriter( const String&, WriterRef& );
+void GetStgWriter( const String&, WriterRef& );
+void GetWWWriter( const String&, WriterRef& );
+void GetWW8Writer( const String&, WriterRef& );
+#if !( defined(PRODUCT) || defined(MAC) || defined(PM2) )
+void GetDebugWriter( const String&, WriterRef& );
+void GetUndoWriter( const String&, WriterRef& );
+#endif
+#endif
+
+// Zugriff auf die Ini-Datei
+ULONG ReadFilterFlags( const sal_Char* pName, const sal_Char* pAltName = 0 );
+
+// JP 17.03.99 - 63049
+// Umsetzen der LRSpaces im aktuell importierten Doc. Die Fremd-Filter
+// liefern immer absolute Werte fuer die Ebenen einer NumRule. Wir
+// verarbeiten jetzt aber relative Werte bezogen auf das LR-Space-Item.
+// Das hat zur Folge, das bei allen Absaetzen die EInzuege der NumRule vom
+// Absatz-Einzug abgezogen werden muss.
+class SwRelNumRuleSpaces
+{
+ SwNumRuleTbl* pNumRuleTbl; // Liste aller benannten NumRules
+ BOOL bNewDoc;
+
+ void SetNumLSpace( SwTxtNode& rNd, const SwNumRule& rRule );
+
+public:
+ SwRelNumRuleSpaces( SwDoc& rDoc, BOOL bNewDoc );
+ ~SwRelNumRuleSpaces();
+
+ void SetNumRelSpaces( SwDoc& rDoc );
+ void SetOultineRelSpaces( const SwNodeIndex& rStt,
+ const SwNodeIndex& rEnd );
+};
+
+#define SW_SV_BRUSH_25 0
+#define SW_SV_BRUSH_50 1
+#define SW_SV_BRUSH_75 2
+#define SW_SV_BRUSH_NULL 3
+#define SW_SV_BRUSH_SOLID 4
+#define SW_SV_BRUSH_INVALID 5
+
+Color ConvertBrushStyle(const Color& rCol, const Color& rFillCol, BYTE nStyle);
+
+// Get size of fly (if 'automatic' in WW) and check if not too small
+void CalculateFlySize( SfxItemSet& rFlySet, SwNodeIndex& rAnchor,
+ SwTwips nPageWidth );
+
+#endif _FLTINI_HXX
diff --git a/sw/source/filter/inc/fltshell.hxx b/sw/source/filter/inc/fltshell.hxx
new file mode 100644
index 000000000000..7b1379928320
--- /dev/null
+++ b/sw/source/filter/inc/fltshell.hxx
@@ -0,0 +1,675 @@
+/*************************************************************************
+ *
+ * $RCSfile: fltshell.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FLTSHELL_HXX
+#define _FLTSHELL_HXX
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _KEYCOD_HXX //autogen
+#include <vcl/keycod.hxx>
+#endif
+#ifndef _DATETIME_HXX //autogen
+#include <tools/datetime.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+
+
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+
+class SwFlyFrmFmt;
+class SwTOXBase;
+class SwNumRule;
+class SwFltShell;
+class SwFmtFld;
+class SwField;
+class Graphic;
+class SwTableLines;
+class SwTableBoxes;
+class SwTableBox;
+class SwTableLine;
+class International;
+class DateTime;
+
+
+inline void SwFltClearFlag(ULONG& rFieldFlags, int no)
+ { rFieldFlags &= ~(1L << no); }
+
+inline void SwFltSetFlag(ULONG& rFieldFlags, int no)
+ { rFieldFlags |= 1L << no; }
+
+inline BOOL SwFltGetFlag(ULONG nFieldFlags, int no)
+ { return (nFieldFlags & (1L << no)) != 0; }
+
+// Stack-Eintrag fuer die Attribute Es werden immer Pointer auf neue Attribute uebergeben.
+class SwFltStackEntry
+{
+public:
+ SwNodeIndex nMkNode;
+ SwNodeIndex nPtNode;
+ SfxPoolItem * pAttr;// Format Attribute
+ long nHandle; // fuer verschachtelte Attrs, z.B. Bookmarks
+ xub_StrLen nMkCntnt;// Nachbildung von Mark()
+ xub_StrLen nPtCntnt;// Nachbildung von GetPoint()
+
+ BOOL bOld; // to mark Attributes *before* skipping field results
+ BOOL bLocked;
+ BOOL bCopied;
+
+ SwFltStackEntry(const SwPosition & rStartPos, SfxPoolItem* pHt );
+ SwFltStackEntry(const SwFltStackEntry& rEntry);
+ ~SwFltStackEntry();
+
+ void SetStartPos(const SwPosition & rStartPos);
+ void SetEndPos( const SwPosition & rEndPos);
+ BOOL MakeRegion(SwDoc* pDoc, SwPaM& rRegion, BOOL bCheck );
+};
+
+// ein Stack fuer die gesamten Text-Attribute
+typedef SwFltStackEntry* SwFltStackEntryPtr;
+
+SV_DECL_PTRARR(SwFltControlStackEntries,SwFltStackEntryPtr,5,10)
+
+class SwFltControlStack : public SwFltControlStackEntries
+{
+ friend SwFltShell;
+
+ ULONG nFieldFlags;
+ KeyCode aEmptyKeyCode; // fuer Bookmarks
+
+ BOOL IsAttrOpen(USHORT nAttrId);
+
+ void MoveAttrs( const SwPosition& rPos );
+
+protected:
+ SwDoc* pDoc;
+ BOOL bIsEndStack;
+
+ virtual void SetAttrInDoc(const SwPosition& rTmpPos, SwFltStackEntry* pEntry);
+
+public:
+ enum Flags
+ {
+ HYPO,
+ TAGS_DO_ID,
+ TAGS_VISIBLE,
+ BOOK_TO_VAR_REF,
+ BOOK_AND_REF,
+ TAGS_IN_TEXT,
+ ALLOW_FLD_CR,
+ NO_FLD_CR,
+ DONT_HARD_PROTECT
+ };
+
+ SwFltControlStack(SwDoc* pDo, ULONG nFieldFl);
+ ~SwFltControlStack();
+
+ BOOL IsFlagSet(Flags no) const { return ::SwFltGetFlag(nFieldFlags, no);}
+
+ void NewAttr(const SwPosition& rPos, const SfxPoolItem & rAttr );
+// BOOL SetAttr(const SwPosition& rPos, USHORT nAttrId=0, BOOL bTstEnde=TRUE);
+ // SetAttr mit Handle fuer verschachtelte Attrs, z.B. Bookmarks
+ BOOL SetAttr(const SwPosition& rPos, USHORT nAttrId=0, BOOL bTstEnde=TRUE,
+ long nHand = LONG_MAX);
+
+ void StealAttr(const SwPosition* pPos, USHORT nAttrId = 0);
+ void MoveAttrsToNextNode( const SwNodeIndex& rNdIdx );
+ void MarkAllAttrsOld();
+ void KillUnlockedAttrs(const SwPosition& pPos);
+ SfxPoolItem* GetFmtStackAttr(USHORT nWhich, USHORT * pPos = 0);
+ const SfxPoolItem* GetOpenStackAttr(const SwPosition& rPos, USHORT nWhich);
+ const SfxPoolItem* GetFmtAttr(const SwPosition& rPos, USHORT nWhich);
+};
+
+class SwFltAnchor : public SfxPoolItem
+{
+ SwFrmFmt* pFrmFmt;
+public:
+ SwFltAnchor(SwFrmFmt* pFlyFmt);
+ SwFltAnchor(const SwFltAnchor&);
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==(const SfxPoolItem&) const;
+ virtual SfxPoolItem* Clone(SfxItemPool* = 0) const;
+ const SwFrmFmt* GetFrmFmt() const { return pFrmFmt; }
+ SwFrmFmt* GetFrmFmt() { return pFrmFmt; }
+};
+
+class SwFltRedline : public SfxPoolItem
+{
+public:
+ DateTime aStamp;
+ DateTime aStampPrev;
+ SwRedlineType eType;
+ SwRedlineType eTypePrev;
+ USHORT nAutorNo;
+ USHORT nAutorNoPrev;
+
+ SwFltRedline(SwRedlineType eType_,
+ USHORT nAutorNo_,
+ const DateTime& rStamp_,
+ SwRedlineType eTypePrev_ = REDLINE_INSERT,
+ USHORT nAutorNoPrev_ = USHRT_MAX,
+ const DateTime* pStampPrev_ = 0)
+ : eType( eType_ ), nAutorNo( nAutorNo_ ), aStamp( rStamp_ ),
+ eTypePrev( eTypePrev_ ), nAutorNoPrev( nAutorNoPrev_ )
+ {
+ if( pStampPrev_ )
+ aStampPrev = *pStampPrev_;
+ }
+
+ SwFltRedline(const SwFltRedline& rCpy):
+ SfxPoolItem(RES_FLTR_REDLINE),
+ eType( rCpy.eType ),
+ nAutorNo( rCpy.nAutorNo ),
+ aStamp( rCpy.aStamp ),
+ eTypePrev( rCpy.eTypePrev ),
+ nAutorNoPrev( rCpy.nAutorNoPrev ),
+ aStampPrev( rCpy.aStampPrev )
+ {}
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==(const SfxPoolItem& rItem) const;
+ virtual SfxPoolItem* Clone(SfxItemPool* = 0) const;
+};
+
+class SwFltBookmark : public SfxPoolItem
+{
+friend class SwFltShell; // darf aName und aVal uebersetzen
+ long nHandle;
+ String aName;
+ String aVal;
+ BOOL bOnlyRef; // "FRAGE"-Feld, Ref/Seitenrf oder nichts
+ BOOL bRef;
+ BOOL bPgRef;
+public:
+ SwFltBookmark( const String& rNa, const String& rVa,
+ long nHand, BOOL bOnlyR );
+ SwFltBookmark( const SwFltBookmark& );
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==(const SfxPoolItem&) const;
+ virtual SfxPoolItem* Clone(SfxItemPool* = 0) const;
+ const String& GetName() const { return aName; }
+ const String& GetValSys() const { return aVal; }
+ BOOL IsOnlyRef() const { return bOnlyRef; }
+ BOOL IsRef() const { return bRef; }
+ void SetRef(BOOL b = TRUE) { bRef = b; }
+ BOOL IsPgRef() const { return bPgRef; }
+ void SetPgRef(BOOL b = TRUE) { bPgRef = b; }
+ long GetHandle() const { return nHandle; }
+};
+
+class SwFltTOX : public SfxPoolItem
+{
+ SwTOXBase* pTOXBase;
+ USHORT nCols;
+ BOOL bHadBreakItem; // there was a break item BEFORE insertion of the TOX
+ BOOL bHadPageDescItem; // ...
+public:
+ SwFltTOX(SwTOXBase* pBase, USHORT _nCols = 0);
+ SwFltTOX(const SwFltTOX&);
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==(const SfxPoolItem&) const;
+ virtual SfxPoolItem* Clone(SfxItemPool* = 0) const;
+ SwTOXBase* GetBase() { return pTOXBase; }
+ USHORT GetCols() const { return nCols; }
+ void SetHadBreakItem( BOOL bVal ) { bHadBreakItem = bVal; }
+ void SetHadPageDescItem( BOOL bVal ) { bHadPageDescItem = bVal; }
+ BOOL HadBreakItem() const { return bHadBreakItem; }
+ BOOL HadPageDescItem() const { return bHadPageDescItem; }
+};
+
+class SwFltSection : public SfxPoolItem
+{
+ SwSection* pSection;
+public:
+ SwFltSection( SwSection* pSect );
+ SwFltSection( const SwFltSection& );
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==(const SfxPoolItem&) const;
+ virtual SfxPoolItem* Clone(SfxItemPool* = 0) const;
+ SwSection* GetSection() { return pSection; }
+};
+// Der WWEndStack verhaelt sich wie der WWControlStck, nur dass die Attribute
+// auf ihm bis ans Ende des Dokuments gehortet werden, falls auf sie noch
+// zugegriffen werden muss (z.B. Book/RefMarks, Index u.s.w.)
+class SwFltEndStack : public SwFltControlStack
+{
+public:
+ SwFltEndStack(SwDoc* pDo, ULONG nFieldFl)
+ :SwFltControlStack(pDo, nFieldFl)
+ {
+ bIsEndStack = TRUE;
+ }
+
+ void SetBookRef( const String& rName, BOOL bPgRef = FALSE );
+};
+
+///////////////////////////////////////////////////////////////////////////////////////////
+//
+// hier beginnen die fuer ww1-filter neu erstellten klassen. diese
+// sollen eine simple oberflaeche fuer die komplexen strukturen des
+// writers speziell fuer filter sein. soll etwas in den writer gegeben
+// werden, soll ein << reichen. hierfuer sind neue typen erzeugt
+// worden. ausserdem soll moeglich sein das objekt nach vielen
+// zustaenden der momentanen formatierung zu fragen, sodasz diese der
+// filter nicht selbst verwalten musz.
+//
+// den anfang macht eine vorlagen-oberklasse, die einfachen umgang mit
+// formatvorlagen ermoeglicht:
+//
+
+class SwFltOutBase
+{
+ SwDoc& rDoc;
+protected:
+ RndStdIds eFlyAnchor;
+ BOOL bFlyAbsPos;
+
+ SwDoc& GetDoc() { return rDoc; }
+ SfxItemSet* NewFlyDefaults();
+
+ SwFltOutBase(SwDoc& rDocu)
+ : rDoc(rDocu), bFlyAbsPos(FALSE), eFlyAnchor(FLY_AT_CNTNT)
+ {}
+
+public:
+ virtual SwFltOutBase& operator << (const SfxPoolItem& rItem) = 0;
+
+ virtual const SfxPoolItem& GetAttr(USHORT nWhich) = 0;
+ virtual const SfxPoolItem& GetNodeOrStyAttr(USHORT nWhich) = 0;
+
+ virtual const SfxPoolItem& GetCellAttr(USHORT nWhich);
+ virtual BOOL BeginTable();
+ virtual void NextTableCell();
+ virtual void NextTableRow();
+ virtual void SetTableWidth(SwTwips nW);
+ virtual void SetTableOrient(SwHoriOrient eOri);
+ virtual void SetCellWidth(SwTwips nWidth, USHORT nCell);
+ virtual void SetCellHeight(SwTwips nH);
+ virtual void SetCellBorder(const SvxBoxItem& rFmtBox, USHORT nCell);
+ virtual void SetCellSpace(USHORT nSp);
+ virtual void DeleteCell(USHORT nCell);
+ virtual void EndTable();
+
+ virtual BOOL IsInFly() = 0;
+ virtual void SetFlyFrmAttr(const SfxPoolItem& rAttr) = 0;
+ virtual const SfxPoolItem& GetFlyFrmAttr(USHORT nWhich) = 0;
+ virtual BOOL BeginFly( RndStdIds eAnchor, BOOL bAbsolutePos,
+ const SfxItemSet* pMoreAttrs = 0 );
+ virtual void SetFlyAnchor( RndStdIds eAnchor );
+ virtual void EndFly();
+};
+
+class SwFltOutDoc : public SwFltOutBase
+{
+ SwFltControlStack& rStack;
+ SwFltEndStack& rEndStack;
+ SwPaM* pPaM;
+ SwFrmFmt* pFly;
+// table items:
+ const SwTable* pTable;
+ SwPosition* pTabSavedPos; // set when in table
+ SwPosition* pFlySavedPos; // set when in fly
+ SwTwips nTableWidth;
+ USHORT usTableX;
+ USHORT usTableY;
+ BOOL bReadNoTbl; // Keine Tabellen
+
+ SwTableBox* GetBox(USHORT ny, USHORT nx = USHRT_MAX);
+ BOOL SeekCell( short nRow, short nCol, BOOL bPam );
+ void SplitTable();
+public:
+ SwFltOutDoc(SwDoc& rDocu, SwPaM* pP, SwFltControlStack& rStk, SwFltEndStack& rEStk)
+ :SwFltOutBase(rDocu), pPaM(pP), rStack(rStk), rEndStack(rEStk),
+ pFly(0), pTable(0), pTabSavedPos(0), pFlySavedPos(0),
+ nTableWidth(0), bReadNoTbl(FALSE)
+ {}
+
+ void SetReadNoTable() { bReadNoTbl = TRUE; }
+ BOOL IsTableWidthSet() const { return 0 != nTableWidth; }
+
+ virtual SwFltOutBase& operator << (const SfxPoolItem& rItem);
+
+ virtual const SfxPoolItem& GetAttr(USHORT nWhich);
+ virtual const SfxPoolItem& GetNodeOrStyAttr(USHORT nWhich);
+
+ BOOL IsInTable();
+ virtual const SfxPoolItem& GetCellAttr(USHORT nWhich);
+ virtual BOOL BeginTable();
+ virtual void NextTableCell();
+ virtual void NextTableRow();
+ virtual void SetTableWidth(SwTwips nW);
+ virtual void SetTableOrient(SwHoriOrient eOri);
+ virtual void SetCellWidth(SwTwips nWidth, USHORT nCell);
+ virtual void SetCellHeight(SwTwips nH);
+ virtual void SetCellBorder(const SvxBoxItem& rFmtBox, USHORT nCell);
+ virtual void SetCellSpace(USHORT nSp);
+ virtual void DeleteCell(USHORT nCell);
+ virtual void EndTable();
+
+ SwFrmFmt* MakeFly( RndStdIds eAnchor, SfxItemSet* pSet );
+ virtual BOOL IsInFly();
+ virtual void SetFlyFrmAttr(const SfxPoolItem& rAttr);
+ virtual const SfxPoolItem& GetFlyFrmAttr(USHORT nWhich);
+ virtual BOOL BeginFly( RndStdIds eAnchor, BOOL bAbsolutePos,
+ const SfxItemSet* pMoreAttrs = 0 );
+ virtual void EndFly();
+};
+
+class SwFltFormatCollection : public SwFltOutBase
+{
+ SwTxtFmtColl* pColl;
+ SfxItemSet* pFlyAttrs; // Simulation der Flys in Styles
+ BOOL bHasFly;
+public:
+ SwFltFormatCollection(SwDoc&, RES_POOL_COLLFMT_TYPE nType);
+ SwFltFormatCollection(SwDoc&, const String& rName );
+ ~SwFltFormatCollection() { if( pFlyAttrs ) delete pFlyAttrs; }
+
+ void Reset()
+ {
+ pColl->ResetAllAttr();
+ pColl->SetAuto(FALSE); // nach Empfehlung JP
+ }
+ void Derived(SwTxtFmtColl* pBase)
+ { pColl->SetDerivedFrom(pBase); }
+
+// SwTxtFmtColl* Search(String, CharSet eSrc);
+ SwTxtFmtColl* GetColl() { return pColl; }
+ void SetHasFly() { bHasFly = TRUE; }
+ SfxItemSet* GetpFlyAttrs() { return pFlyAttrs; }
+
+ virtual SwFltOutBase& operator << (const SfxPoolItem& rItem);
+ virtual const SfxPoolItem& GetAttr(USHORT nWhich);
+ virtual const SfxPoolItem& GetNodeOrStyAttr(USHORT nWhich);
+
+ virtual BOOL IsInFly();
+ virtual void SetFlyFrmAttr(const SfxPoolItem& rAttr);
+ virtual const SfxPoolItem& GetFlyFrmAttr(USHORT nWhich);
+ virtual BOOL BeginFly( RndStdIds eAnchor, BOOL bAbsolutePos,
+ const SfxItemSet* pMoreAttrs = 0 );
+ BOOL BeginStyleFly( SwFltOutDoc* pOutDoc );
+ virtual void EndFly();
+};
+
+//
+// dies nun ist die zauberhafteklasse: intention: alle eins nach dem
+// andern hinein'pipe'n. wird eine besondere struktur eingelesen, wird
+// eine klammer geoeffnet (BeginXxx) und nach beendigung geschlossen
+// (EndXxx), wobei Xxx zB fuer Fusznoten, Kopf/Fuszzeilen oder
+// Tabellen steht. Styles funktionieren auch so, haben aber den
+// unterschied, keine buchstaben zu akzeptieren.
+// beginnt ein neuer absatz oder aehnliches, wird NextXxx genutzt.
+// hier ist moeglich, Tab, Zeilenumbruch, Absatzende, Seitenumbruch
+// und Sektionsende einzufuegen.
+//
+class SwFltShell
+{
+ SwFltOutDoc* pOutDoc;
+ SwFltFormatCollection* pColls[256];
+ SwFltOutBase* pOut;
+
+// SwFltFormatCollection* pFormat; // set when in style-mode
+ SwPageDesc* pCurrentPageDesc;
+ SwPosition* pSavedPos; // set, when in footnote or header/footer -mode
+#ifdef None
+#undef None
+#endif
+ enum SubModes {
+ None,
+ Header,
+ Footer,
+ Footnote,
+ Table,
+ Fly,
+ Style,
+ Max
+ } eSubMode;
+
+// Fly items:
+ USHORT nAktStyle; // zur Indizierung pStyleFlyTable
+//
+ SwFltControlStack aStack;
+ SwFltEndStack aEndStack;
+ SwPaM* pPaM;
+//
+ USHORT nPageDescOffset; // fuers update der pagedescs
+ CharSet eSrcCharSet; // charset der quelle
+ friend SwFltControlStack;
+ BOOL bNewDoc;
+ BOOL bStdPD;
+ BOOL bProtect;
+
+public:
+ SwFltShell(SwDoc* , SwPaM& , BOOL bNew, ULONG = 0);
+ ~SwFltShell();
+
+ SwDoc& GetDoc() { return *aStack.pDoc; }
+
+ CharSet SetCharSet(CharSet eNew) { CharSet eOld = eSrcCharSet;
+ eSrcCharSet = eNew;
+ return eOld;
+ }
+ void SetUseStdPageDesc() { bStdPD = TRUE; }
+ void SetProtect() { bProtect = TRUE; }
+ SwPageDesc* MakePageDesc(SwPageDesc* pFirstPageDesc = NULL);
+ SwPageDesc& GetPageDesc() { return *pCurrentPageDesc; }
+ void NextTab() { (*this) << BYTE(0x09); }
+ void NextLine() { (*this) << BYTE(0x0a); }
+ void NextParagraph() { GetDoc().AppendTxtNode(*pPaM->GetPoint()); }
+ void NextPage() { NextParagraph();
+ GetDoc().Insert(*pPaM,
+ SvxFmtBreakItem(SVX_BREAK_PAGE_BEFORE));
+ }
+ void NextSection() { pCurrentPageDesc = MakePageDesc(); }
+
+ SwFltShell& AddGraphic( const String& rPicName );
+ SwFltShell& AddError( const sal_Char* pErr );
+ SwFltShell& AddLinkedSection( const String& rFileName );
+ SwFltShell& EndItem( USHORT nId );
+ SwFltShell& SetStyle( USHORT nStyle );
+
+ SwFltShell& operator << ( Graphic& );
+ SwFltShell& operator << ( SwFltBookmark& aBook );
+ void SetBookEnd(long nHandle);
+ SwFltShell& operator << ( const SwFltTOX& );
+ SwFltShell& operator << ( const String& ); // Vorsicht: CHARSET_ANSI
+ SwFltShell& operator << ( const sal_Unicode );
+ SwFltShell& operator << ( const SwField& );
+ SwFltShell& operator << ( const SfxPoolItem& rItem )
+ { *pOut << rItem; return *this; }
+
+// SwFltShell& operator >> (SfxPoolItem&);
+// methode zum beenden einer sub-sektion, zB Fusznote etc
+ void End() { eSubMode = None; }
+// methoden zur verwaltung von Header/Footer
+ void BeginHeader(SwPageDesc* =NULL);
+ void BeginFooter(SwPageDesc* =NULL);
+ void EndHeaderFooter();
+// methoden zur verwaltung von FootNotes
+ void BeginFootnote();
+ void EndFootnote();
+// methoden zur verwaltung von Tabellen
+ BOOL IsInTable() {
+ return ( pOut == pOutDoc ) ? pOutDoc->IsInTable() : 0; }
+ const SfxPoolItem& GetCellAttr(USHORT nWhich) {
+ return pOut->GetCellAttr(nWhich); }
+ BOOL BeginTable() {
+ BOOL b = pOut->BeginTable();
+ if(b) eSubMode = Table;
+ return b; }
+ void NextTableCell() {
+ pOut->NextTableCell(); }
+ void NextTableRow() {
+ pOut->NextTableRow(); }
+ void SetTableWidth(SwTwips nW) {
+ pOut->SetTableWidth(nW); }
+ BOOL IsTableWidthSet() {
+ return pOutDoc->IsTableWidthSet(); }
+ void SetTableOrient(SwHoriOrient eOri) {
+ pOut->SetTableOrient(eOri); }
+ void SetCellWidth(SwTwips nWidth, USHORT nCell = USHRT_MAX ) {
+ pOut->SetCellWidth(nWidth, nCell); }
+ void SetCellHeight(SwTwips nH) {
+ pOut->SetCellHeight(nH); }
+ void SetCellBorder(const SvxBoxItem& rFmtBox, USHORT nCell = USHRT_MAX ){
+ pOut->SetCellBorder(rFmtBox, nCell); }
+ void SetCellSpace(USHORT nSp) {
+ pOut->SetCellSpace(nSp); }
+ void DeleteCell(USHORT nCell = USHRT_MAX) {
+ pOut->DeleteCell(nCell); }
+ void EndTable() {
+ pOut->EndTable(); }
+// methoden zur verwaltung von Flys
+ BOOL IsInFly() { return pOut->IsInFly(); }
+ BOOL BeginFly( RndStdIds eAnchor = FLY_AT_CNTNT, BOOL bAbsolutePos = FALSE );
+ void SetFlyAnchor( RndStdIds eAnchor )
+ { pOut->SetFlyAnchor( eAnchor ); }
+ void SetFlyXPos( short nXPos,SwRelationOrient eHRel = FRAME,
+ SwHoriOrient eHAlign = HORI_NONE );
+ void SetFlyYPos( short nYPos, SwRelationOrient eVRel = FRAME,
+ SwVertOrient eVAlign = VERT_NONE );
+ void SetFlyFrmAttr(const SfxPoolItem& rAttr){
+ pOut->SetFlyFrmAttr( rAttr ); }
+ void EndFly();
+// methoden zur verwaltung von styles:
+ void BeginStyle(USHORT nUserCode, RES_POOL_COLLFMT_TYPE aType)
+ {
+ ASSERT(nUserCode<sizeof(pColls)/sizeof(*pColls), "code out of bounds");
+ ASSERT(pColls[nUserCode] == NULL, "user codes dublicate");
+ if (eSubMode == Style)
+ EndStyle();
+ pOut = pColls[nUserCode] = new SwFltFormatCollection(GetDoc(), aType);
+ nAktStyle = nUserCode;
+ eSubMode = Style;
+ }
+ void BeginStyle( USHORT nUserCode, const String& rName )
+ {
+ ASSERT(nUserCode<sizeof(pColls)/sizeof(*pColls), "code out of bounds");
+ ASSERT(pColls[nUserCode] == NULL, "user codes dublicate");
+ if (eSubMode == Style)
+ EndStyle();
+ pOut = pColls[nUserCode] = new SwFltFormatCollection(GetDoc(), rName );
+ nAktStyle = nUserCode;
+ eSubMode = Style;
+ }
+ BOOL IsStyleImported(USHORT nUserCode)
+ { return pColls[nUserCode] != 0; }
+ void BaseStyle(USHORT nBased)
+ {
+ ASSERT(eSubMode == Style, "wrong state for style");
+ ASSERT(pColls[nBased], "Style based on noexistent style" );
+ if( eSubMode == Style && pColls[nBased]->GetColl() )
+ ((SwFltFormatCollection*)pOut)->Derived(pColls[nBased]->GetColl());
+ }
+ void NextStyle(USHORT nWhich, USHORT nNext);
+
+ void EndStyle()
+ {
+// ASSERT(eSubMode == Style, "wrong state for style");
+ nAktStyle = 0;
+ pOut = pOutDoc;
+ eSubMode = None;
+ }
+
+ BOOL IsFlagSet(SwFltControlStack::Flags no) const
+ { return aStack.IsFlagSet(no); }
+ void ConvertUStr( String& rInOut );
+ void ConvertLStr( String& rInOut );
+ String QuoteStr( const String& rIn );
+// folgende status kann die shell verwalten:
+ const SfxPoolItem& GetNodeOrStyAttr(USHORT nWhich)
+ { return pOut->GetNodeOrStyAttr( nWhich ); }
+ const SfxPoolItem& GetAttr(USHORT nWhich)
+ { return pOut->GetAttr( nWhich ); }
+ const SfxPoolItem& GetFlyFrmAttr(USHORT nWhich)
+ { return pOut->GetFlyFrmAttr( nWhich ); }
+ SwFieldType *GetSysFldType(USHORT eWhich)
+ { return GetDoc().GetSysFldType(eWhich); }
+ BOOL GetWeightBold();
+ BOOL GetPostureItalic();
+ BOOL GetCrossedOut();
+ BOOL GetContour();
+ BOOL GetCaseKapitaelchen();
+ BOOL GetCaseVersalien();
+};
+
+
+#endif
diff --git a/sw/source/filter/inc/makefile.mk b/sw/source/filter/inc/makefile.mk
new file mode 100644
index 000000000000..c6cdee2c9c09
--- /dev/null
+++ b/sw/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 17:14: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): _______________________________________
+#
+#
+#
+#*************************************************************************
diff --git a/sw/source/filter/inc/rtf.hxx b/sw/source/filter/inc/rtf.hxx
new file mode 100644
index 000000000000..fc310f45398e
--- /dev/null
+++ b/sw/source/filter/inc/rtf.hxx
@@ -0,0 +1,168 @@
+/*************************************************************************
+ *
+ * $RCSfile: rtf.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _RTF_HXX
+#define _RTF_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+// Umsetzung einiger FlyFrame-Attribute
+class RTFVertOrient
+{
+ union {
+ struct {
+ USHORT nOrient : 4;
+ USHORT nRelOrient : 1;
+ } Flags;
+ USHORT nVal;
+ } Value;
+
+public:
+ RTFVertOrient( USHORT nValue ) { Value.nVal = nValue; }
+
+ RTFVertOrient( USHORT nOrient, USHORT nRelOrient ) {
+ Value.Flags.nOrient = nOrient;
+ Value.Flags.nRelOrient = nRelOrient;
+ }
+
+ USHORT GetOrient() const { return Value.Flags.nOrient; }
+ USHORT GetRelation() const { return Value.Flags.nRelOrient; }
+ USHORT GetValue() const { return Value.nVal; }
+};
+
+
+class RTFHoriOrient
+{
+ union {
+ struct {
+ USHORT nOrient : 4;
+ USHORT nRelAnchor : 4;
+ USHORT nRelOrient : 1;
+ } Flags;
+ USHORT nVal;
+ } Value;
+
+public:
+ RTFHoriOrient( USHORT nValue ) { Value.nVal = nValue; }
+
+ RTFHoriOrient( USHORT nOrient, USHORT nRelOrient ) {
+ Value.Flags.nOrient = nOrient;
+ Value.Flags.nRelOrient = nRelOrient;
+ Value.Flags.nRelAnchor = 0;
+ }
+
+ USHORT GetOrient() const { return Value.Flags.nOrient; }
+ USHORT GetRelation() const { return Value.Flags.nRelOrient; }
+ USHORT GetValue() const { return Value.nVal; }
+};
+
+class RTFProtect
+{
+ union {
+ struct {
+ BOOL bCntnt : 1;
+ BOOL bSize : 1;
+ BOOL bPos : 1;
+ } Flags;
+ BYTE nVal;
+ } Value;
+public:
+ RTFProtect( BYTE nValue ) { Value.nVal = nValue; }
+
+ RTFProtect( BOOL bCntnt, BOOL bSize, BOOL bPos ) {
+ Value.Flags.bCntnt = bCntnt;
+ Value.Flags.bSize = bSize;
+ Value.Flags.bPos = bPos;
+ }
+
+ BOOL GetCntnt() const { return Value.Flags.bCntnt; }
+ BOOL GetSize() const { return Value.Flags.bSize; }
+ BOOL GetPos() const { return Value.Flags.bPos; }
+ USHORT GetValue() const { return Value.nVal; }
+};
+
+
+class RTFSurround
+{
+ union {
+ struct {
+ USHORT nGoldCut : 1;
+ USHORT nOrder : 4;
+ } Flags;
+ BYTE nVal;
+ } Value;
+public:
+ RTFSurround( BYTE nValue ) { Value.nVal = nValue; }
+
+ RTFSurround( BOOL bGoldCut, BYTE nOrder ) {
+ Value.Flags.nOrder = nOrder;
+ Value.Flags.nGoldCut = bGoldCut;
+ }
+
+ BYTE GetOrder() const { return (BYTE)Value.Flags.nOrder; }
+ BOOL GetGoldCut() const { return (BOOL)Value.Flags.nGoldCut; }
+ USHORT GetValue() const { return Value.nVal; }
+};
+
+#endif // _RTF_HXX
+
+
diff --git a/sw/source/filter/inc/wrt_fn.hxx b/sw/source/filter/inc/wrt_fn.hxx
new file mode 100644
index 000000000000..fe6f000083e7
--- /dev/null
+++ b/sw/source/filter/inc/wrt_fn.hxx
@@ -0,0 +1,103 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrt_fn.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _WRT_FN_HXX
+#define _WRT_FN_HXX
+
+#include "hintids.hxx" // fuer die Konstanten
+
+// einige Forward-Deklarationen
+class SwFmt;
+class SwNode;
+class SwCntntNode;
+class Writer;
+class SfxPoolItem;
+class SfxItemSet;
+
+
+/* Funktionspointer auf die Attribut-Write-Funktionen */
+typedef Writer& (*FnAttrOut)( Writer&, const SfxPoolItem& );
+typedef FnAttrOut SwAttrFnTab[ POOLATTR_END - POOLATTR_BEGIN ];
+
+Writer& Out( const SwAttrFnTab, const SfxPoolItem&, Writer& );
+Writer& Out_SfxItemSet( const SwAttrFnTab, Writer&, const SfxItemSet&,
+ BOOL bDeep, BOOL bTstForDefault = TRUE );
+
+
+/* Funktionspointer auf die Node-Write-Funktionen */
+
+enum RES_NODE
+{
+RES_NODE_BEGIN = 0,
+ RES_TXTNODE = RES_NODE_BEGIN,
+ RES_GRFNODE,
+ RES_OLENODE,
+RES_NODE_END
+};
+
+typedef Writer& (*FnNodeOut)( Writer&, SwCntntNode& );
+typedef FnNodeOut SwNodeFnTab[ RES_NODE_END - RES_NODE_BEGIN ];
+
+Writer& Out( const SwNodeFnTab, SwNode&, Writer & rWrt );
+
+
+
+
+#endif // _WRT_FN_HXX
diff --git a/sw/source/filter/inc/wrtswtbl.hxx b/sw/source/filter/inc/wrtswtbl.hxx
new file mode 100644
index 000000000000..e0330140aca9
--- /dev/null
+++ b/sw/source/filter/inc/wrtswtbl.hxx
@@ -0,0 +1,375 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtswtbl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WRTSWTBL_HXX
+#define _WRTSWTBL_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#ifndef _TOOLS_COLOR_HXX
+#include <tools/color.hxx>
+#endif
+#ifndef _SVARRAY_HXX
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef _ORNTENUM_HXX
+#include <orntenum.hxx>
+#endif
+#ifndef _HORIORNT_HXX
+#include <horiornt.hxx>
+#endif
+
+class Color;
+class SwTableBox;
+class SwTableBoxes;
+class SwTableLine;
+class SwTableLines;
+class SwTable;
+class SwFrmFmt;
+class SwHTMLTableLayout;
+class SvxBrushItem;
+class SvxBoxItem;
+class SvxBorderLine;
+
+
+//---------------------------------------------------------------------------
+// Code aus dem HTML-Filter fuers schreiben von Tabellen
+//---------------------------------------------------------------------------
+
+#define COLFUZZY 20
+#define ROWFUZZY 20
+#define COL_DFLT_WIDTH ((2*COLFUZZY)+1)
+#define ROW_DFLT_HEIGHT (2*ROWFUZZY)+1
+
+
+//-----------------------------------------------------------------------
+
+class SwWriteTableCell
+{
+ const SwTableBox *pBox; // SwTableBox der Zelle
+ const SvxBrushItem *pBackground; // geerbter Hintergrund einer Zeile
+
+ long nHeight; // fixe/Mindest-Hoehe der Zeile
+
+ USHORT nWidthOpt; // Breite aus Option;
+
+ USHORT nRow; // Start-Zeile
+ USHORT nCol; // Start-Spalte
+
+ USHORT nRowSpan; // ueberspannte Zeilen
+ USHORT nColSpan; // ueberspannte Spalten
+
+
+ BOOL bPrcWidthOpt;
+
+public:
+
+ SwWriteTableCell( const SwTableBox *pB, USHORT nR, USHORT nC,
+ USHORT nRSpan, USHORT nCSpan, long nHght,
+ const SvxBrushItem *pBGround ) :
+ pBox( pB ),
+ nRow( nR ), nCol( nC ),
+ nRowSpan( nRSpan ), nColSpan( nCSpan ),
+ nHeight( nHght ), pBackground( pBGround ),
+ nWidthOpt( 0 ), bPrcWidthOpt( FALSE )
+ {}
+
+ const SwTableBox *GetBox() const { return pBox; }
+
+ USHORT GetRow() const { return nRow; }
+ USHORT GetCol() const { return nCol; }
+
+ USHORT GetRowSpan() const { return nRowSpan; }
+ USHORT GetColSpan() const { return nColSpan; }
+
+ long GetHeight() const { return nHeight; }
+ SwVertOrient GetVertOri() const;
+
+ const SvxBrushItem *GetBackground() const { return pBackground; }
+
+ void SetWidthOpt( USHORT nWidth, BOOL bPrc )
+ {
+ nWidthOpt = nWidth; bPrcWidthOpt = bPrc;
+ }
+
+ USHORT GetWidthOpt() const { return nWidthOpt; }
+ BOOL HasPrcWidthOpt() const { return bPrcWidthOpt; }
+};
+
+typedef SwWriteTableCell *SwWriteTableCellPtr;
+SV_DECL_PTRARR_DEL( SwWriteTableCells, SwWriteTableCellPtr, 5, 5 )
+
+
+//-----------------------------------------------------------------------
+
+class SwWriteTableRow
+{
+ SwWriteTableCells aCells; // Alle Zellen der Rows
+
+ const SvxBrushItem *pBackground;// Hintergrund
+
+ long nPos; // End-Position (twips) der Zeile
+
+public:
+
+ USHORT nTopBorder; // Dicke der oberen/unteren Umrandugen
+ USHORT nBottomBorder;
+
+ BOOL bTopBorder : 1; // Welche Umrandungen sind da?
+ BOOL bBottomBorder : 1;
+
+ SwWriteTableRow( long nPos );
+
+ SwWriteTableCell *AddCell( const SwTableBox *pBox,
+ USHORT nRow, USHORT nCol,
+ USHORT nRowSpan, USHORT nColSpan,
+ long nHeight,
+ const SvxBrushItem *pBackground );
+
+ void SetBackground( const SvxBrushItem *pBGround )
+ {
+ pBackground = pBGround;
+ }
+ const SvxBrushItem *GetBackground() const { return pBackground; }
+
+ BOOL HasTopBorder() const { return bTopBorder; }
+ BOOL HasBottomBorder() const { return bBottomBorder; }
+
+ long GetPos() const { return nPos; }
+ const SwWriteTableCells& GetCells() const { return aCells; }
+
+ inline int operator==( const SwWriteTableRow& rRow ) const;
+ inline int operator<( const SwWriteTableRow& rRow2 ) const;
+};
+
+inline int SwWriteTableRow::operator==( const SwWriteTableRow& rRow ) const
+{
+ // etwas Unschaerfe zulassen
+ return (nPos >= rRow.nPos ? nPos - rRow.nPos
+ : rRow.nPos - nPos ) <= ROWFUZZY;
+}
+
+inline int SwWriteTableRow::operator<( const SwWriteTableRow& rRow ) const
+{
+ // Da wir hier nur die Wahrheits-Grade 0 und 1 kennen, lassen wir lieber
+ // auch nicht zu, dass x==y und x<y gleichzeitig gilt ;-)
+ return nPos < rRow.nPos - ROWFUZZY;
+}
+
+typedef SwWriteTableRow *SwWriteTableRowPtr;
+SV_DECL_PTRARR_SORT_DEL( SwWriteTableRows, SwWriteTableRowPtr, 5, 5 )
+
+
+//-----------------------------------------------------------------------
+
+class SwWriteTableCol
+{
+ USHORT nPos; // End Position der Spalte
+
+ USHORT nWidthOpt;
+
+ BOOL bRelWidthOpt : 1;
+ BOOL bOutWidth : 1; // Spaltenbreite ausgeben?
+
+public:
+ BOOL bLeftBorder : 1; // Welche Umrandungen sind da?
+ BOOL bRightBorder : 1;
+
+ SwWriteTableCol( USHORT nPosition );
+
+ USHORT GetPos() const { return nPos; }
+
+ void SetLeftBorder( BOOL bBorder ) { bLeftBorder = bBorder; }
+ BOOL HasLeftBorder() const { return bLeftBorder; }
+
+ void SetRightBorder( BOOL bBorder ) { bRightBorder = bBorder; }
+ BOOL HasRightBorder() const { return bRightBorder; }
+
+ void SetOutWidth( BOOL bSet ) { bOutWidth = bSet; }
+ BOOL GetOutWidth() const { return bOutWidth; }
+
+ inline int operator==( const SwWriteTableCol& rCol ) const;
+ inline int operator<( const SwWriteTableCol& rCol ) const;
+
+ void SetWidthOpt( USHORT nWidth, BOOL bRel )
+ {
+ nWidthOpt = nWidth; bRelWidthOpt = bRel;
+ }
+ USHORT GetWidthOpt() const { return nWidthOpt; }
+ BOOL HasRelWidthOpt() const { return bRelWidthOpt; }
+};
+
+inline int SwWriteTableCol::operator==( const SwWriteTableCol& rCol ) const
+{
+ // etwas Unschaerfe zulassen
+ return (nPos >= rCol.nPos ? nPos - rCol.nPos
+ : rCol.nPos - nPos ) <= COLFUZZY;
+}
+
+inline int SwWriteTableCol::operator<( const SwWriteTableCol& rCol ) const
+{
+ // Da wir hier nur die Wahrheits-Grade 0 und 1 kennen, lassen wir lieber
+ // auch nicht zu, dass x==y und x<y gleichzeitig gilt ;-)
+ return nPos < rCol.nPos - COLFUZZY;
+}
+
+
+typedef SwWriteTableCol *SwWriteTableColPtr;
+SV_DECL_PTRARR_SORT_DEL( SwWriteTableCols, SwWriteTableColPtr, 5, 5 )
+
+//-----------------------------------------------------------------------
+
+class SwWriteTable
+{
+protected:
+ SwWriteTableCols aCols; // alle Spalten
+ SwWriteTableRows aRows; // alle Zellen
+
+ UINT32 nBorderColor; // Umrandungsfarbe
+
+ USHORT nCellSpacing; // Dicke der inneren Umrandung
+ USHORT nCellPadding; // Absatnd Umrandung-Inhalt
+
+ USHORT nBorder; // Dicke der ausseren Umrandung
+ USHORT nInnerBorder; // Dicke der inneren Umrandung
+ USHORT nBaseWidth; // Bezugsgroesse fur Breiten SwFmtFrmSize
+
+ USHORT nHeadEndRow; // letzte Zeile des Tabellen-Kopfes
+
+ USHORT nLeftSub;
+ USHORT nRightSub;
+
+ long nTabWidth; // Absolute/Relative Breite der Tabelle
+
+ BOOL bRelWidths : 1; // Breiten relativ ausgeben?
+ BOOL bUseLayoutHeights : 1; // Layout zur Hoehenbestimmung nehmen?
+#ifndef PRODUCT
+ BOOL bGetLineHeightCalled : 1;
+#endif
+
+ BOOL bColsOption : 1;
+ BOOL bColTags : 1;
+ BOOL bLayoutExport : 1;
+ BOOL bCollectBorderWidth : 1;
+
+ virtual BOOL ShouldExpandSub( const SwTableBox *pBox,
+ BOOL bExpandedBefore, USHORT nDepth ) const;
+
+ void CollectTableRowsCols( long nStartRPos, USHORT nStartCPos,
+ long nParentLineHeight,
+ USHORT nParentLineWidth,
+ const SwTableLines& rLines,
+ USHORT nDepth );
+
+ void FillTableRowsCols( long nStartRPos, USHORT nStartRow,
+ USHORT nStartCPos, USHORT nStartCol,
+ long nParentLineHeight,
+ USHORT nParentLineWidth,
+ const SwTableLines& rLines,
+ const SvxBrushItem* pLineBrush,
+ USHORT nDepth );
+
+ void MergeBorders( const SvxBorderLine* pBorderLine, BOOL bTable );
+
+ USHORT MergeBoxBorders( const SwTableBox *pBox, USHORT nRow, USHORT nCol,
+ USHORT nRowSpan, USHORT nColSpan,
+ USHORT &rTopBorder, USHORT &rBottomBorder );
+
+ USHORT GetBaseWidth() const { return nBaseWidth; }
+
+ BOOL HasRelWidths() const { return bRelWidths; }
+
+public:
+ static long GetBoxWidth( const SwTableBox *pBox );
+protected:
+
+ long GetLineHeight( const SwTableLine *pLine );
+ long GetLineHeight( const SwTableBox *pBox ) const;
+ const SvxBrushItem *GetLineBrush( const SwTableBox *pBox,
+ SwWriteTableRow *pRow );
+
+ USHORT GetLeftSpace( USHORT nCol ) const;
+ USHORT GetRightSpace( USHORT nCol, USHORT nColSpan ) const;
+
+ USHORT GetRawWidth( USHORT nCol, USHORT nColSpan ) const;
+ USHORT GetAbsWidth( USHORT nCol, USHORT nColSpan ) const;
+ USHORT GetRelWidth( USHORT nCol, USHORT nColSpan ) const;
+ USHORT GetPrcWidth( USHORT nCol, USHORT nColSpan ) const;
+
+ long GetAbsHeight( long nRawWidth, USHORT nRow, USHORT nRowSpan ) const;
+
+public:
+ SwWriteTable( const SwTableLines& rLines, long nWidth, USHORT nBWidth,
+ BOOL bRel, USHORT nMaxDepth = USHRT_MAX,
+ USHORT nLeftSub=0, USHORT nRightSub=0 );
+ SwWriteTable( const SwHTMLTableLayout *pLayoutInfo );
+
+ const SwWriteTableCols& GetCols() const { return aCols; }
+ const SwWriteTableRows& GetRows() const { return aRows; }
+};
+
+
+
+
+#endif
+
diff --git a/sw/source/filter/makefile.mk b/sw/source/filter/makefile.mk
new file mode 100644
index 000000000000..cb186c78dc7b
--- /dev/null
+++ b/sw/source/filter/makefile.mk
@@ -0,0 +1,244 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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=sw
+TARGET=filter
+
+PROJECTPCH=filt_pch
+PDBTARGET=filt_pch
+PROJECTPCHSOURCE=.\filt_1st\filt_pch
+
+.IF "$(CALLTARGETS)"=="filter"
+RC_SUBDIRS=
+.ENDIF
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+# fuer VC++/NT andere Label als Verzeichnisnamen
+.IF "$(RC_SUBDIRS)" == ""
+SWSUBDIRS= \
+ filt_1st \
+ ascii \
+ basflt \
+ excel \
+ html \
+ lotus \
+ rtf \
+ w4w \
+ writer \
+ ww1 \
+ ww8 \
+ xml
+
+.IF "$(product)" == ""
+.IF "$(GUI)" == "WIN" || "$(GUI)" == "WNT" || "$(GUI)" == "UNX"
+SWSUBDIRS+= \
+ debug
+.ENDIF
+.ENDIF
+
+.IF "$(compact)" == ""
+SWSUBDIRS+= \
+ sw6
+.ENDIF
+.ENDIF
+
+SUBLIBS= \
+ $(SLB)$/ascii.lib \
+ $(SLB)$/basflt.lib \
+ $(SLB)$/excel.lib \
+ $(SLB)$/html.lib \
+ $(SLB)$/lotus.lib \
+ $(SLB)$/rtf.lib \
+ $(SLB)$/w4w.lib \
+ $(SLB)$/writer.lib \
+ $(SLB)$/ww1.lib \
+ $(SLB)$/ww8.lib \
+ $(SLB)$/xml.lib
+
+.IF "$(product)" == ""
+.IF "$(GUI)" == "WIN" || "$(GUI)" == "WNT" || "$(GUI)" == "UNX"
+SUBLIBS+= \
+ $(SLB)$/debug.lib
+.ENDIF
+.ENDIF
+.IF "$(compact)" == ""
+SUBLIBS+= \
+ $(SLB)$/sw6.lib
+.ENDIF
+
+# -----------------------------------------------------------
+
+.IF "$(RC_SUBDIRS)" == ""
+.IF "$(depend)" == ""
+filter: \
+ filt_1st \
+ $(SWSUBDIRS) \
+ ALLTAR
+.ELSE
+filter:
+ @+echo Doing nothing in source\filter
+.ENDIF
+.ENDIF
+
+################################################################
+
+LIB1TARGET=$(SLB)$/filter.lib
+LIB1FILES= \
+ $(SUBLIBS)
+
+.INCLUDE : target.mk
+
+################################################################
+
+.IF "$(dbutil)" != ""
+dbutilx += "dbutil=true"
+.ENDIF
+.IF "$(debug)" != ""
+.IF "$(debug)" != "D_FORCE_OPT"
+dbutilx += "debug=true"
+.ENDIF
+.ENDIF
+
+
+.IF "$(CALLTARGETS)"!="filter"
+.IF "$(DOPLD)$(dopld)" == ""
+
+.IF "$(RC_SUBDIRS)" == ""
+#rule lib / subdir
+$(SLB)$/%.lib : %
+ @echo @
+
+filt_1st .SETDIR=filt_1st:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+ascii .SETDIR=ascii:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+basflt .SETDIR=basflt:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+debug .SETDIR=debug:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+excel .SETDIR=excel:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+html .SETDIR=html:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+lotus .SETDIR=lotus:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+rtf .SETDIR=rtf:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+sw6 .SETDIR=sw6:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+w4w .SETDIR=w4w:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+writer .SETDIR=writer:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+ww1 .SETDIR=ww1:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+ww8 .SETDIR=ww8:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+xml .SETDIR=xml:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+.ENDIF
+.ELSE
+filt_1st:
+ @echo nix
+.ENDIF
+.ENDIF
+
+kill:
+ del $(SLB)$/filter.lib
+
diff --git a/sw/source/filter/rtf/makefile.mk b/sw/source/filter/rtf/makefile.mk
new file mode 100644
index 000000000000..194278f69995
--- /dev/null
+++ b/sw/source/filter/rtf/makefile.mk
@@ -0,0 +1,106 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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=sw
+TARGET=rtf
+
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\filt_1st\filt_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+.IF "$(mydebug)" != ""
+CDEFS=$(CDEFS) -Dmydebug
+.ENDIF
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ rtfatr.cxx \
+ rtffld.cxx \
+ rtffly.cxx \
+ rtfnum.cxx \
+ rtftbl.cxx \
+ swparrtf.cxx \
+ wrtrtf.cxx
+
+
+
+SLOFILES = \
+ $(SLO)$/rtfatr.obj \
+ $(SLO)$/rtffld.obj \
+ $(SLO)$/rtffly.obj \
+ $(SLO)$/rtfnum.obj \
+ $(SLO)$/rtftbl.obj \
+ $(SLO)$/swparrtf.obj \
+ $(SLO)$/wrtrtf.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/filter/rtf/rtfatr.cxx b/sw/source/filter/rtf/rtfatr.cxx
new file mode 100644
index 000000000000..1ecb25f24ebd
--- /dev/null
+++ b/sw/source/filter/rtf/rtfatr.cxx
@@ -0,0 +1,3068 @@
+/*************************************************************************
+ *
+ * $RCSfile: rtfatr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+/*
+ * Dieses File enthaelt alle Ausgabe-Funktionen des RTF-Writers;
+ * fuer alle Nodes, Attribute, Formate und Chars.
+ */
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <fltini.hxx>
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _RTFKEYWD_HXX //autogen
+#include <svtools/rtfkeywd.hxx>
+#endif
+#ifndef _RTFOUT_HXX
+#include <svtools/rtfout.hxx>
+#endif
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SVX_HYZNITEM_HXX //autogen
+#include <svx/hyznitem.hxx>
+#endif
+#ifndef _SVX_TSTPITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVX_LSPCITEM_HXX //autogen
+#include <svx/lspcitem.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVX_KEEPITEM_HXX //autogen
+#include <svx/keepitem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_SHADITEM_HXX //autogen
+#include <svx/shaditem.hxx>
+#endif
+#ifndef _SVX_CMAPITEM_HXX //autogen
+#include <svx/cmapitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_PROTITEM_HXX //autogen
+#include <svx/protitem.hxx>
+#endif
+#ifndef _SVX_OPAQITEM_HXX //autogen
+#include <svx/opaqitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_PRNTITEM_HXX //autogen
+#include <svx/prntitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_ESCPITEM_HXX //autogen
+#include <svx/escpitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_SPLTITEM_HXX //autogen
+#include <svx/spltitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_CNTRITEM_HXX //autogen
+#include <svx/cntritem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_SHDDITEM_HXX //autogen
+#include <svx/shdditem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _XOUTBMP_HXX //autogen
+#include <svx/xoutbmp.hxx>
+#endif
+#ifndef _UNOTOOLS_CHARCLASS_HXX
+#include <unotools/charclass.hxx>
+#endif
+
+
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _CHARATR_HXX
+#include <charatr.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTFLD_HXX //autogen
+#include <fmtfld.hxx>
+#endif
+#ifndef _FMTFLCNT_HXX //autogen
+#include <fmtflcnt.hxx>
+#endif
+#ifndef _FMTFTN_HXX //autogen
+#include <fmtftn.hxx>
+#endif
+#ifndef _FMTHBSH_HXX //autogen
+#include <fmthbsh.hxx>
+#endif
+#ifndef _FCHRFMT_HXX //autogen
+#include <fchrfmt.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _TXTFTN_HXX //autogen
+#include <txtftn.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _CHARFMT_HXX //autogen
+#include <charfmt.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _TXTINET_HXX //autogen
+#include <txtinet.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx> // fuer SwField ...
+#endif
+#ifndef _WRTRTF_HXX
+#include <wrtrtf.hxx>
+#endif
+#ifndef _RTF_HXX
+#include <rtf.hxx> // fuer SwPictureType
+#endif
+#ifndef _WRTTXATR_HXX
+#include <wrttxatr.hxx> // fuer EndPosList (zwischenspeicher fuer TextAttr.=
+#endif
+#ifndef _NDGRF_HXX
+#include <ndgrf.hxx>
+#endif
+#ifndef _GRFATR_HXX
+#include <grfatr.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _FLDDAT_HXX
+#include <flddat.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx> // fuer SwPageDesc ...
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx> // fuer SwPageDesc ...
+#endif
+#ifndef _LINETYPE_HXX
+#include <linetype.hxx> // fuer SwPageDesc ...
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _SWRECT_HXX //autogen
+#include <swrect.hxx>
+#endif
+#ifndef _SECTION_HXX //autogen
+#include <section.hxx>
+#endif
+#ifndef _WRTSWTBL_HXX
+#include <wrtswtbl.hxx>
+#endif
+#ifndef _HTMLTBL_HXX
+#include <htmltbl.hxx>
+#endif
+#ifndef _FMTCLBL_HXX
+#include <fmtclbl.hxx>
+#endif
+
+
+/*
+ * um nicht immer wieder nach einem Update festzustellen, das irgendwelche
+ * Hint-Ids dazugekommen sind, wird hier definiert, die Groesse der Tabelle
+ * definiert und mit der akt. verglichen. Bei unterschieden wird der
+ * Compiler schon meckern.
+ *
+ * diese Section und die dazugeherigen Tabellen muessen in folgenden Files
+ * gepflegt werden: rtf\rtfatr.cxx, sw6\sw6atr.cxx, w4w\w4watr.cxx
+ */
+#if !defined(UNX) && !defined(MSC) && !defined(PPC) && !defined(CSET) && !defined(__MWERKS__) && !defined(WTC)
+
+#define ATTRFNTAB_SIZE 121
+#if ATTRFNTAB_SIZE != POOLATTR_END - POOLATTR_BEGIN
+#error Attribut-Tabelle ist ungueltigt. Wurden neue Hint-IDs zugefuegt ??
+#endif
+
+#ifdef FORMAT_TABELLE
+// da sie nicht benutzt wird!
+#define FORMATTAB_SIZE 7
+#if FORMATTAB_SIZE != RES_FMT_END - RES_FMT_BEGIN
+#error Format-Tabelle ist ungueltigt. Wurden neue Hint-IDs zugefuegt ??
+#endif
+#endif
+
+#define NODETAB_SIZE 3
+#if NODETAB_SIZE != RES_NODE_END - RES_NODE_BEGIN
+#error Node-Tabelle ist ungueltigt. Wurden neue Hint-IDs zugefuegt ??
+#endif
+
+#endif
+
+#ifdef WNT
+// ueber xoutbmp.hxx wird das winuser.h angezogen. Dort gibt es ein
+// define GetProp das mit unserem SvxEscapement kollidiert!
+#undef GetProp
+#endif
+
+//-----------------------------------------------------------------------
+
+static Writer& OutRTF_SwFmtCol( Writer& rWrt, const SfxPoolItem& rHt );
+
+//-----------------------------------------------------------------------
+
+SvStream& OutComment( Writer& rWrt, const sal_Char* pStr )
+{
+ return (rWrt.Strm() << '{' << sRTF_IGNORE << pStr);
+}
+
+SvStream& OutComment( Writer& rWrt, const char* pStr, BOOL bSetFlag )
+{
+ // setze Flag, damit bei der Ausgabe von Attributen zu erkennen,
+ // ob ueberhaupt etwas ausgegeben wurde.
+ ((SwRTFWriter&)rWrt).bOutFmtAttr = bSetFlag;
+ return (rWrt.Strm() << '{' << sRTF_IGNORE << pStr);
+}
+
+Writer& OutRTF_AsByteString( Writer& rWrt, const String& rStr )
+{
+ ByteString sOutStr( rStr, DEF_ENCODING );
+ rWrt.Strm() << sOutStr.GetBuffer();
+ return rWrt;
+}
+
+// fuer die Formate muesste eine einzige Ausgabe-Funktion genuegen !
+/*
+ * Formate wie folgt ausgeben:
+ * - gebe alle Attribute vom Format aus
+ */
+
+Writer& OutRTF_SwFmt( Writer& rWrt, const SwFmt& rFmt )
+{
+ SwRTFWriter & rRTFWrt = (SwRTFWriter&)rWrt;
+ BOOL bOutItemSet = TRUE;
+
+ switch( rFmt.Which() )
+ {
+ case RES_CONDTXTFMTCOLL:
+ case RES_TXTFMTCOLL:
+ {
+ USHORT nId = rRTFWrt.GetId( (const SwTxtFmtColl&)rFmt );
+ if( 0 == nId )
+ return rWrt; // Default-TextStyle nicht ausgeben !!
+
+ rWrt.Strm() << sRTF_S;
+ rWrt.OutULong( nId );
+ rRTFWrt.bOutFmtAttr = TRUE;
+ BYTE nLvl = ((const SwTxtFmtColl&)rFmt).GetOutlineLevel();
+ if( MAXLEVEL > nLvl )
+ {
+ BYTE nWWLvl = 8 >= nLvl ? nLvl : 8;
+ rWrt.Strm() << sRTF_LS;
+ rWrt.OutULong( rWrt.pDoc->GetNumRuleTbl().Count() );
+ rWrt.Strm() << sRTF_ILVL; rWrt.OutULong( nWWLvl );
+ rWrt.Strm() << sRTF_OUTLINELEVEL; rWrt.OutULong( nWWLvl );
+ if( nWWLvl != nLvl ) // RTF-kennt nur 9 Ebenen
+ {
+ OutComment( rWrt, sRTF_SOUTLVL );
+ rWrt.OutULong( nLvl ) << '}';
+ }
+
+ const SwNumFmt* pNFmt = &rWrt.pDoc->GetOutlineNumRule()->Get( nLvl );
+ if( pNFmt->GetAbsLSpace() )
+ {
+ SfxItemSet aSet( *rFmt.GetAttrSet().GetPool(),
+ rFmt.GetAttrSet().GetRanges() );
+ aSet.SetParent( &rFmt.GetAttrSet() );
+ SvxLRSpaceItem aLR( (SvxLRSpaceItem&)aSet.Get( RES_LR_SPACE ) );
+
+ aLR.SetTxtLeft( aLR.GetTxtLeft() + pNFmt->GetAbsLSpace() );
+ aLR.SetTxtFirstLineOfst( pNFmt->GetFirstLineOffset() );
+
+ aSet.Put( aLR );
+ Out_SfxItemSet( aRTFAttrFnTab, rWrt, aSet, TRUE );
+ bOutItemSet = FALSE;
+ }
+ }
+ }
+ break;
+ case RES_CHRFMT:
+ {
+ USHORT nId = rRTFWrt.GetId( (const SwCharFmt&)rFmt );
+ if( 0 == nId )
+ return rWrt; // Default-CharStyle nicht ausgeben !!
+
+ rWrt.Strm() << sRTF_IGNORE << sRTF_CS;
+ rWrt.OutULong( nId );
+ rRTFWrt.bOutFmtAttr = TRUE;
+ }
+ break;
+
+// case RES_GRFFMTCOLL:
+// ?????
+ }
+
+ if( bOutItemSet )
+ Out_SfxItemSet( aRTFAttrFnTab, rWrt, rFmt.GetAttrSet(), TRUE );
+ return rWrt;
+}
+
+
+
+void OutRTF_SwFlyFrmFmt( SwRTFWriter& rRTFWrt )
+{
+ // ist der aktuelle Absatz in einem freifliegenden Rahmen ? Dann
+ // muessen noch die Attribute dafuer ausgegeben werden.
+ ASSERT( rRTFWrt.pFlyFmt, "wo ist das Fly-Format?" );
+
+ if( rRTFWrt.bOutFmtAttr )
+ {
+ rRTFWrt.Strm() << ' ';
+ rRTFWrt.bOutFmtAttr = FALSE;
+ }
+ // gebe erstmal alle RTF-Spezifischen Attribute aus
+ rRTFWrt.bRTFFlySyntax = TRUE;
+ OutRTF_SwFmt( rRTFWrt, *rRTFWrt.pFlyFmt );
+
+ // dann gebe alle eigenen Attribute aus
+ {
+ // dazu erzeuge einen temp strstream, um festzustellen ob es
+ // ueberhaupt eigene Attribute gibt !
+ SvMemoryStream aTmpStrm;
+ SvStream* pSaveStrm = &rRTFWrt.Strm();
+ rRTFWrt.SetStrm( aTmpStrm );
+
+ rRTFWrt.bRTFFlySyntax = FALSE;
+ OutRTF_SwFmt( rRTFWrt, *rRTFWrt.pFlyFmt );
+
+ rRTFWrt.SetStrm( *pSaveStrm ); // Stream-Pointer wieder zurueck
+
+ if( aTmpStrm.GetSize() ) // gibt es SWG spezifische Attribute ??
+ {
+ aTmpStrm.Seek( 0L );
+ rRTFWrt.Strm() << '{' << sRTF_IGNORE << aTmpStrm << '}';
+ }
+ }
+// rRTFWrt.pFlyFmt = 0; // wieder zuruecksetzen !!
+}
+
+/* Ausgabe der Nodes */
+
+/*
+ * Ausgabe der Texte-Attribute:
+ * Die Text-Attribute sind in einem VarArray nach ihren Start-Positionen
+ * sortiert. Fuer den RTF-Writer ist aber auch das Ende von Bedeutung.
+ * Darum die Idee, sobald im SwpHints-Array ein Attribut mit der Start-
+ * Position gefunden wurde, in einem Sortierten-Array die Endposition
+ * zu speichern. Sobald der Writer die Position erreicht hat, wird die
+ * schliessende Klammer ausgegeben und die Position aus dem Sort.Array
+ * geloescht.
+ * 15.3.93: Es reicht leider nicht aus nur Start und End zuspeichern, denn
+ * im SwpHints Array stehen sie nicht nach Ende sortiert, so dass
+ * Attribute die falsche schliessende Klammer bekommen. (z.B
+ * Bold von 0..3, dann folgt Underline von 0..4. Dann bekommt Underline
+ * die schliessende Klammer von Bold !!)
+ * Also muessen erst alle Attribute einer Position gesammelt, nach
+ * Ende sortiert und dann erst ausgegeben werden.
+ */
+
+class RTFEndPosLst : public EndPosLst
+{
+public:
+ RTFEndPosLst() {}
+ void OutAttrs( Writer& rWrt, xub_StrLen nStrPos );
+ void EndAttrs( SwRTFWriter& rWrt, xub_StrLen nStrPos );
+};
+
+void RTFEndPosLst::OutAttrs( Writer& rWrt, xub_StrLen nStrPos )
+{
+ SttEndPos* pStt;
+ for( USHORT n = Count(); n ; )
+ if( nStrPos == (pStt = (*this)[ --n ])->GetStart() )
+ {
+ rWrt.Strm() << '{';
+ for( USHORT i = 0; i < pStt->GetAttrs().Count(); ++i )
+ Out( aRTFAttrFnTab, pStt->GetAttrs()[i]->GetAttr(), rWrt );
+ }
+}
+
+void RTFEndPosLst::EndAttrs( SwRTFWriter& rWrt, xub_StrLen nStrPos )
+{
+ SttEndPos* pSEPos;
+ while( 0 != Count() && 0 != (pSEPos = (*this)[ 0 ]) &&
+ ( STRING_MAXLEN == nStrPos || nStrPos == pSEPos->GetEnd() ))
+ {
+ rWrt.Strm() << '}';
+
+ const _SwpTxtHts& rAttrs = pSEPos->GetAttrs();
+ for( USHORT nAttr = rAttrs.Count(); nAttr; )
+ if( RES_TXTATR_INETFMT == rAttrs[ --nAttr ]->Which() )
+ {
+ // Hyperlinks werden als Felder geschrieben, aber der
+ // "FieldResult" steht als Text im TextNode. Also muss
+ // bei diesen Attributen am Ende 2 Klammern stehen!
+ rWrt.Strm() << "}}";
+ }
+
+ rWrt.nFontHeight = pSEPos->GetFontSize();
+ Remove();
+ }
+
+}
+
+static Writer& OutRTF_SwTxtNode( Writer& rWrt, SwCntntNode & rNode )
+{
+ SwTxtNode * pNd = &((SwTxtNode&)rNode);
+ SwRTFWriter & rRTFWrt = (SwRTFWriter&)rWrt;
+ RTFEndPosLst aEndPosLst;
+ SttEndPos* pNewStt;
+ USHORT nAttrPos = 0;
+ xub_StrLen nStrPos = rRTFWrt.pCurPam->GetPoint()->nContent.GetIndex();
+
+ const String& rStr = pNd->GetTxt();
+ xub_StrLen nEnde = rStr.Len();
+ if( rRTFWrt.pCurPam->GetPoint()->nNode == rRTFWrt.pCurPam->GetMark()->nNode )
+ nEnde = Min( nEnde, rRTFWrt.pCurPam->GetMark()->nContent.GetIndex() );
+
+ int bNewFmts = rRTFWrt.pAttrSet != &pNd->GetSwAttrSet();
+ if( bNewFmts )
+ {
+ // harte Attributierung am Node und am Vorgaenger ?
+ const SfxItemSet* pNdSet = pNd->GetpSwAttrSet();
+ if( pNdSet && rRTFWrt.pAttrSet && rRTFWrt.bAutoAttrSet &&
+ pNdSet->GetParent() == rRTFWrt.pAttrSet->GetParent() &&
+ pNdSet->Count() == rRTFWrt.pAttrSet->Count() )
+ {
+ // die beiden Parents sind gleich, dann teste doch mal die
+ // Attribute im Set
+
+ int bEqual = TRUE;
+ if( pNdSet->Count() )
+ {
+ SfxItemIter aIter( *rRTFWrt.pAttrSet );
+ const SfxPoolItem *pItem, *pCurr = aIter.GetCurItem();
+ while( TRUE )
+ {
+ if( SFX_ITEM_SET != pNdSet->GetItemState( pCurr->Which(),
+ FALSE, &pItem ) || *pItem != *pCurr )
+ {
+ bEqual = FALSE;
+ break;
+ }
+
+ if( aIter.IsAtEnd() )
+ break;
+ pCurr = aIter.NextItem();
+ }
+ }
+ if( bEqual )
+ bNewFmts = FALSE;
+ }
+ rRTFWrt.pAttrSet = &pNd->GetSwAttrSet();
+ rRTFWrt.bAutoAttrSet = 0 != pNdSet;
+ }
+
+ // bestimme die aktuelle FontSize aus den Formaten
+ rRTFWrt.nFontHeight = (USHORT)rRTFWrt.pAttrSet->GetSize().GetHeight();
+
+ // Flag zuruecksetzen, damit nach der Ausgabe der Collection
+ // getestet werden kann, ob noch ein Blank auszugeben ist
+ rRTFWrt.bOutFmtAttr = FALSE;
+
+ // in der Ausgabe eines Flys? Dann vorm ausgeben der AbsatzAttribute
+ // den Format-Pointer auf 0 setzen!
+ SwFlyFrmFmt* pSaveFmt = rRTFWrt.pFlyFmt;
+
+ if( bNewFmts && rRTFWrt.bWriteAll )
+ {
+ rRTFWrt.Strm() << sRTF_PARD << sRTF_PLAIN << ' '; // alle Attribute zuruecksetzen
+ if( rRTFWrt.bOutTable )
+ rRTFWrt.Strm() << sRTF_INTBL;
+
+ // ist der aktuelle Absatz in einem freifliegenden Rahmen ? Dann
+ // muessen noch die Attribute dafuer ausgegeben werden.
+ if( pSaveFmt )
+ {
+ OutRTF_SwFlyFrmFmt( rRTFWrt );
+ rRTFWrt.pFlyFmt = 0;
+ }
+
+ rRTFWrt.OutListNum( *pNd );
+
+ OutRTF_SwFmt( rRTFWrt, pNd->GetAnyFmtColl() );
+ }
+
+ // gibt es harte Attributierung ?
+ if( bNewFmts && pNd->GetpSwAttrSet() )
+ {
+ rRTFWrt.pFlyFmt = 0;
+
+ const SfxItemSet& rNdSet = pNd->GetSwAttrSet();
+
+ const SwNumRule* pRule;
+ const SwNodeNum* pNum;
+ if( (( 0 != ( pNum = pNd->GetNum() ) &&
+ 0 != ( pRule = pNd->GetNumRule() )) ||
+ ( 0 != ( pNum = pNd->GetOutlineNum() ) &&
+ 0 != ( pRule = rWrt.pDoc->GetOutlineNumRule() ) ) ) &&
+ pNum->GetLevel() < NO_NUM )
+ {
+ BYTE nLvl = GetRealLevel( pNum->GetLevel() );
+ const SwNumFmt* pFmt = pRule->GetNumFmt( nLvl );
+ if( !pFmt )
+ pFmt = &pRule->Get( nLvl );
+
+ SfxItemSet aSet( rNdSet );
+ SvxLRSpaceItem aLR( (SvxLRSpaceItem&)rNdSet.Get( RES_LR_SPACE ) );
+
+ aLR.SetTxtLeft( aLR.GetTxtLeft() + pFmt->GetAbsLSpace() );
+ if( MAXLEVEL > pNum->GetLevel() )
+ aLR.SetTxtFirstLineOfst( pFmt->GetFirstLineOffset() );
+ else
+ aSet.ClearItem( RES_PARATR_NUMRULE );
+ aSet.Put( aLR );
+ Out_SfxItemSet( aRTFAttrFnTab, rWrt, aSet, FALSE );
+ }
+ else
+ Out_SfxItemSet( aRTFAttrFnTab, rWrt, rNdSet, FALSE );
+ }
+
+ rRTFWrt.pFlyFmt = pSaveFmt;
+
+ // erstmal den Start berichtigen. D.h. wird nur ein Teil vom Satz
+ // ausgegeben, so muessen auch da die Attribute stimmen!!
+ const SwTxtAttr * pHt = 0;
+ USHORT nCntAttr = pNd->HasHints() ? pNd->GetSwpHints().Count() : 0;
+ if( nCntAttr && nStrPos > *( pHt = pNd->GetSwpHints()[ 0 ] )->GetStart() )
+ {
+ rRTFWrt.bTxtAttr = TRUE;
+ // Ok, es gibt vorher Attribute, die ausgegeben werden muessen
+ do {
+ nAttrPos++;
+ if( RES_TXTATR_FIELD == pHt->Which() ) // Felder nicht
+ continue; // ausgeben
+
+ if( pHt->GetEnd() )
+ {
+ xub_StrLen nHtEnd = *pHt->GetEnd(), nHtStt = *pHt->GetStart();
+ if( !rRTFWrt.bWriteAll && nHtEnd <= nStrPos )
+ continue;
+
+ // leere Hints am Anfang nicht beachten, oder ??
+ if( nHtEnd == nHtStt )
+ continue;
+
+ // Attribut in die Liste aufnehemen
+ if( !rRTFWrt.bWriteAll )
+ {
+ if( nHtStt < nStrPos ) nHtStt = nStrPos;
+ if( nHtEnd >= nEnde ) nHtEnd = nEnde;
+ }
+ pNewStt = new SttEndPos( pHt, nHtStt, nHtEnd, rRTFWrt.nFontHeight );
+
+ aEndPosLst.Insert( pNewStt );
+ continue;
+ // aber nicht ausgeben, das erfolgt spaeter !!
+ }
+ Out( aRTFAttrFnTab, pHt->GetAttr(), rRTFWrt );
+
+ } while( nAttrPos < nCntAttr && nStrPos >
+ *( pHt = pNd->GetSwpHints()[ nAttrPos ] )->GetStart() );
+
+ // dann gebe mal alle gesammelten Attribute von der String-Pos aus
+ aEndPosLst.OutAttrs( rRTFWrt, nStrPos );
+
+ rRTFWrt.bTxtAttr = FALSE;
+ }
+
+ if( !rRTFWrt.bWriteAll && rRTFWrt.bFirstLine )
+ {
+ if( rRTFWrt.bOutFmtAttr )
+ {
+ rRTFWrt.Strm() << ' ';
+ rRTFWrt.bOutFmtAttr = FALSE;
+ }
+ OutRTF_SwFmt( rRTFWrt, pNd->GetAnyFmtColl() );
+ }
+
+ if( rRTFWrt.bOutFmtAttr &&
+ ( nAttrPos < nCntAttr ? *pHt->GetStart() != nStrPos : TRUE ))
+ rRTFWrt.Strm() << ' ';
+
+ // das Flag gibt an, ob das SwTxtFld am Ende vom Absatz steht. Denn
+ // dann ist vor dem Absatzumbruch die schliessende Klammer auszugeben
+ xub_StrLen nChrCnt = 0;
+ for( ; nStrPos <= nEnde; nStrPos++ )
+ {
+ if( nStrPos != nEnde && aEndPosLst.Count() )
+ aEndPosLst.EndAttrs( rRTFWrt, nStrPos );
+
+ // versuche nach ungefaehr 255 Zeichen eine neue Zeile zu beginnen
+ if( nChrCnt != ( nStrPos & 0xff00 ))
+ {
+ rWrt.Strm() << SwRTFWriter::sNewLine;
+ nChrCnt = nStrPos & 0xff00;
+ }
+
+ if( nAttrPos < nCntAttr && *pHt->GetStart() == nStrPos
+ && nStrPos != nEnde )
+ {
+ rRTFWrt.bTxtAttr = TRUE;
+ rRTFWrt.bOutFmtAttr = FALSE;
+ do {
+ BOOL bEmpty = FALSE;
+ if( pHt->GetEnd() )
+ {
+ if( FALSE == (bEmpty = *pHt->GetEnd() == nStrPos) )
+ {
+ pNewStt = new SttEndPos( pHt, nStrPos, *pHt->GetEnd(),
+ rRTFWrt.nFontHeight );
+ aEndPosLst.Insert( pNewStt );
+ continue;
+ }
+ rRTFWrt.Strm() << '{';
+ }
+ Out( aRTFAttrFnTab, pHt->GetAttr(), rRTFWrt );
+ if( bEmpty )
+ {
+ rRTFWrt.Strm() << '}';
+ rRTFWrt.bOutFmtAttr = FALSE;
+ }
+ } while( ++nAttrPos < nCntAttr && nStrPos ==
+ *( pHt = pNd->GetSwpHints()[ nAttrPos ] )->GetStart() );
+
+ // dann gebe mal alle gesammelten Attribute von der String-Pos aus
+ aEndPosLst.OutAttrs( rRTFWrt, nStrPos );
+
+ if( rRTFWrt.bOutFmtAttr )
+ rRTFWrt.Strm() << ' ';
+ rRTFWrt.bTxtAttr = FALSE;
+ }
+
+ rRTFWrt.OutBookmarks( nStrPos );
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+ DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+ if( aEndPosLst.Count() )
+ aEndPosLst.EndAttrs( rRTFWrt, USHRT_MAX );
+
+ // wenn bis zum Ende vom Node, dann auch das AbsatzEnde ausgeben
+ if( rRTFWrt.pCurPam->GetMark()->nNode.GetIndex() ==
+ rRTFWrt.pCurPam->GetPoint()->nNode.GetIndex() )
+ {
+ if( pNd->Len() != rRTFWrt.pCurPam->GetMark()->nContent.GetIndex() )
+ return rWrt;
+
+ if( rRTFWrt.bOutTable )
+ {
+ rRTFWrt.Strm() << SwRTFWriter::sNewLine;
+ return rWrt;
+ }
+ }
+
+ rRTFWrt.Strm() << SwRTFWriter::sNewLine << sRTF_PAR << ' ';
+ return rRTFWrt;
+}
+
+
+
+static Writer& OutRTF_SwGrfNode( Writer& rWrt, SwCntntNode & rNode )
+{
+ SwRTFWriter & rRTFWrt = (SwRTFWriter&)rWrt;
+ SwGrfNode * pNd = &((SwGrfNode&)rNode);
+
+ // ist der aktuelle Absatz in einem freifliegenden Rahmen ? Dann
+ // muessen noch die Attribute dafuer ausgegeben werden.
+ if( rRTFWrt.pFlyFmt )
+ OutRTF_SwFlyFrmFmt( rRTFWrt );
+ rRTFWrt.Strm() << "{{";
+
+ // damit die eigenen Grafik-Attribute nach der PICT / import Anweisung
+ // stehen, muessen die am Anfang ausgegeben werden.
+ rRTFWrt.bOutFmtAttr = FALSE;
+ OutRTF_SwFmt( rRTFWrt, *pNd->GetFmtColl() );
+
+ if( rRTFWrt.bOutFmtAttr ) // wurde ueberhaupt ein Attrribut
+ rRTFWrt.Strm() << "}{"; // ausgegeben ??
+
+ String aCID;
+ SwDocShell *pDocSh = rWrt.pDoc->GetDocShell();
+ if( pDocSh )
+ {
+ const SfxPoolItem *pItem = pDocSh->GetItem( SID_ORIGURL );
+ if( pItem )
+ {
+ aCID = ((const SfxStringItem *)pItem)->GetValue();
+ ASSERT( aCID.Len(), "CID ohne Laenge!" );
+ }
+ }
+
+ String aGrfNm;
+ const SwMirrorGrf& rMirror = pNd->GetSwAttrSet().GetMirrorGrf();
+ if( !pNd->IsLinkedFile() || RES_DONT_MIRROR_GRF != rMirror.GetValue() )
+ {
+ // Grafik als File-Referenz speichern (als JPEG-Grafik speichern)
+ aGrfNm = *rWrt.GetOrigFileName();
+ pNd->SwapIn( TRUE );
+ ULONG nFlags = 0;
+ switch( rMirror.GetValue() )
+ {
+ case RES_MIRROR_GRF_VERT: nFlags = XOUTBMP_MIRROR_HORZ; break;
+ case RES_MIRROR_GRF_HOR: nFlags = XOUTBMP_MIRROR_VERT; break;
+ case RES_MIRROR_GRF_BOTH:
+ nFlags = XOUTBMP_MIRROR_VERT | XOUTBMP_MIRROR_HORZ;
+ break;
+ }
+
+ Size aMM100Size;
+ Size* pMM100Size = 0;
+ if( rRTFWrt.pFlyFmt )
+ {
+ const SwFmtFrmSize& rSize = rRTFWrt.pFlyFmt->GetFrmSize();
+ aMM100Size = OutputDevice::LogicToLogic( rSize.GetSize(),
+ MapMode( MAP_TWIP ), MapMode( MAP_100TH_MM ));
+ pMM100Size = &aMM100Size;
+ }
+
+ USHORT nErr = XOutBitmap::WriteGraphic( pNd->GetGrf(), aGrfNm,
+ String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "JPG" )),
+ nFlags, pMM100Size );
+ if( nErr ) // fehlerhaft, da ist nichts auszugeben
+ {
+ rRTFWrt.Strm() << "}}";
+ return rWrt;
+ }
+
+ // MIB 17.7.97: Wenn Mail-Export, dann in eine file-URL draus machen,
+ // damit wir spaeter auf ein file-Protokoll stossen.
+ if( aCID.Len() )
+ aGrfNm = URIHelper::SmartRelToAbs( aGrfNm );
+ }
+ else
+ {
+ pNd->GetFileFilterNms( &aGrfNm, 0 );
+ if( aCID.Len() )
+ rWrt.CopyLocalFileToINet( aGrfNm, TRUE );
+ }
+
+ if( aCID.Len() )
+ {
+ INetURLObject aURLObj( aGrfNm );
+ if( INET_PROT_FILE==aURLObj.GetProtocol() )
+ {
+ String aLastName( aURLObj.GetLastName(
+ INetURLObject::DECODE_WITH_CHARSET ) );
+ ASSERT( aLastName.Len(), "Dateiname ohne Laenge!" );
+ GetAppCharClass().toLower( aLastName );
+
+ aGrfNm.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "cid:" ));
+ ((aGrfNm = aLastName) += '.') += aCID;
+ }
+ else
+ aGrfNm = INetURLObject::AbsToRel( aGrfNm,
+ INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET );
+ }
+ else
+ {
+ // MIB->JP: Warum erst AbsToRel und dann das URL-Objekt? So
+ // kommt bei relativierbaren URLs als Protokoll "unknown" raus.
+ // Ist das Absicht?
+ aGrfNm = INetURLObject::AbsToRel( aGrfNm, INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET );
+ INetURLObject aUrl( aGrfNm );
+ if( aUrl.GetProtocol() == INET_PROT_FILE )
+ aGrfNm = aUrl.PathToFileName();
+ }
+
+ // Bitmap als File-Referenz speichern
+ rRTFWrt.Strm() << sRTF_FIELD << sRTF_FLDPRIV;
+ OutComment( rRTFWrt, sRTF_FLDINST ) << "{\\\\import ";
+ RTFOutFuncs::Out_String( rWrt.Strm(), aGrfNm, DEF_ENCODING,
+ rRTFWrt.bWriteHelpFmt );
+ rRTFWrt.Strm() << "}}{" << sRTF_FLDRSLT << " }}";
+
+ rRTFWrt.Strm() << '}' << SwRTFWriter::sNewLine;
+ return rRTFWrt;
+}
+
+static Writer& OutRTF_SwOLENode( Writer& rWrt, SwCntntNode & rNode )
+{
+ SwRTFWriter & rRTFWrt = (SwRTFWriter&)rWrt;
+
+ // ist der aktuelle Absatz in einem freifliegenden Rahmen ? Dann
+ // muessen noch die Attribute dafuer ausgegeben werden.
+ if( rRTFWrt.pFlyFmt )
+ OutRTF_SwFlyFrmFmt( rRTFWrt );
+
+ rWrt.Strm() << SwRTFWriter::sNewLine << sRTF_PAR;
+ return rWrt;
+}
+
+
+static void OutTBLBorderLine( SwRTFWriter& rWrt, const SvxBorderLine* pLine,
+ const sal_Char* pStr, USHORT nDist )
+{
+ ByteString sLineStr;
+ if( pLine->GetInWidth() )
+ {
+ // doppelte Linie
+ sLineStr = sRTF_BRDRDB;
+ switch( pLine->GetInWidth() )
+ {
+ case DEF_LINE_WIDTH_0:
+ ( sLineStr += sRTF_BRDRW ) += "15";
+ break;
+ case DEF_LINE_WIDTH_1:
+ ( sLineStr += sRTF_BRDRW ) += "30";
+ break;
+ case DEF_LINE_WIDTH_2:
+ case DEF_LINE_WIDTH_3:
+ ( sLineStr += sRTF_BRDRW ) += "45";
+ break;
+ }
+ }
+ else
+ {
+ // einfache Linie
+ if( DEF_LINE_WIDTH_1 >= pLine->GetOutWidth() )
+ (( sLineStr = sRTF_BRDRS ) += sRTF_BRDRW ) +=
+ ByteString::CreateFromInt32( pLine->GetOutWidth() );
+ else
+ (( sLineStr = sRTF_BRDRTH ) += sRTF_BRDRW ) +=
+ ByteString::CreateFromInt32( pLine->GetOutWidth() / 2 );
+ }
+
+ rWrt.Strm() << pStr << sLineStr.GetBuffer() << sRTF_BRDRCF;
+ rWrt.OutULong( rWrt.GetId( pLine->GetColor() ) ) << sRTF_BRSP;
+ rWrt.OutULong( nDist );
+}
+
+static void OutSwTblBorder( SwRTFWriter& rWrt, const SvxBoxItem& rBox )
+{
+ static USHORT __READONLY_DATA aBorders[] = {
+ BOX_LINE_TOP, BOX_LINE_LEFT, BOX_LINE_BOTTOM, BOX_LINE_RIGHT };
+ static const char* __READONLY_DATA aBorderNames[] = {
+ sRTF_CLBRDRT, sRTF_CLBRDRL, sRTF_CLBRDRB, sRTF_CLBRDRR };
+ const USHORT* pBrd = aBorders;
+ const char** pBrdNms = (const char**)aBorderNames;
+ for( int i = 0; i < 4; ++i, ++pBrd, ++pBrdNms )
+ {
+ // funktioniert im WinWord so nicht
+ USHORT nDist = 0; //rBox.GetDistance( *pBrd );
+ const SvxBorderLine* pLn = rBox.GetLine( *pBrd );
+ if( pLn )
+ OutTBLBorderLine( rWrt, pLn, *pBrdNms, nDist );
+ else if( nDist )
+ {
+ rWrt.Strm() << *pBrdNms << sRTF_BRSP;
+ rWrt.OutULong( nDist );
+ }
+ }
+}
+
+static void OutSwTblBackground( SwRTFWriter& rWrt, const SvxBrushItem& rBack )
+{
+ if( !rBack.GetColor().GetTransparency() )
+ {
+ rWrt.Strm() << sRTF_CLCBPAT;
+ rWrt.OutULong( rWrt.GetId( rBack.GetColor() ) );
+ }
+}
+
+
+Writer& OutRTF_SwTblNode( Writer& rWrt, SwTableNode & rNode )
+{
+ SwRTFWriter & rRTFWrt = (SwRTFWriter&)rWrt;
+ const SwTable& rTbl = rNode.GetTable();
+ const SwTableLines& rLns = rTbl.GetTabLines();
+ SwTwips nPageSize = 0, nTblOffset = 0;
+
+/*
+//!!!!!!!!!!!!! for clipboard create any view if the table is complex !!!
+ if( rTbl.IsTblComplex() )
+ {
+ // then we have to create any layout
+ SFX_APP()->CreateViewFrame( *xDocSh, 0, TRUE );
+ }
+*/
+
+ {
+ Point aPt;
+ SwRect aRect( rTbl.GetFrmFmt()->FindLayoutRect( FALSE, &aPt ));
+ if( aRect.IsEmpty() )
+ {
+ // dann besorge mal die Seitenbreite ohne Raender !!
+ const SwFrmFmt* pFmt = rRTFWrt.pFlyFmt ? rRTFWrt.pFlyFmt :
+ rWrt.pDoc->GetPageDesc(0).GetPageFmtOfNode( rNode, FALSE );
+
+ aRect = pFmt->FindLayoutRect( TRUE );
+ if( 0 == ( nPageSize = aRect.Width() ))
+ {
+ const SvxLRSpaceItem& rLR = pFmt->GetLRSpace();
+ nPageSize = pFmt->GetFrmSize().GetWidth() -
+ rLR.GetLeft() - rLR.GetRight();
+ }
+ }
+ else
+ nPageSize = aRect.Width();
+ }
+
+ SwTwips nTblSz = rTbl.GetFrmFmt()->GetFrmSize().GetWidth();
+
+ ByteString aTblAdjust( sRTF_TRQL );
+ switch( rTbl.GetFrmFmt()->GetHoriOrient().GetHoriOrient() )
+ {
+ case HORI_CENTER: aTblAdjust = sRTF_TRQC; break;
+ case HORI_RIGHT: aTblAdjust = sRTF_TRQR; break;
+ case HORI_NONE:
+ case HORI_LEFT_AND_WIDTH:
+ {
+ const SvxLRSpaceItem& rLRSp = rTbl.GetFrmFmt()->GetLRSpace();
+ nTblOffset = rLRSp.GetLeft();
+ nPageSize -= (nTblOffset + rLRSp.GetRight());
+ aTblAdjust += sRTF_TRLEFT;
+ aTblAdjust += ByteString::CreateFromInt32( nTblOffset );
+ }
+ break;
+// case case FLY_HORI_FULL:
+ }
+
+ // ist die Tabelle wesentlich (PageSize + 10%) groesser als die Seite,
+ // dann sind die Box-Breiten relative Angaben.
+ BOOL bRelBoxSize = TRUE /*ALWAYS relativ (nPageSize + ( nPageSize / 10 )) < nTblSz*/;
+
+ SwWriteTable* pTableWrt;
+ const SwHTMLTableLayout *pLayout = rTbl.GetHTMLTableLayout();
+ if( pLayout && pLayout->IsExportable() )
+ pTableWrt = new SwWriteTable( pLayout );
+ else
+ pTableWrt = new SwWriteTable( rTbl.GetTabLines(), (USHORT)nPageSize,
+ (USHORT)nTblSz, FALSE );
+
+ // rCols are the array of all cols of the table
+ const SwWriteTableCols& rCols = pTableWrt->GetCols();
+ USHORT nColCnt = rCols.Count();
+ SwWriteTableCellPtr* pBoxArr = new SwWriteTableCellPtr[ nColCnt ];
+ USHORT* pRowSpans = new USHORT[ nColCnt ];
+ memset( pBoxArr, 0, sizeof( pBoxArr[0] ) * nColCnt );
+ memset( pRowSpans, 0, sizeof( pRowSpans[0] ) * nColCnt );
+ long nLastHeight = 0;
+ const SwWriteTableRows& rRows = pTableWrt->GetRows();
+ for( USHORT nLine = 0; nLine < rRows.Count(); ++nLine )
+ {
+ USHORT nBox;
+
+ const SwWriteTableRow *pRow = rRows[ nLine ];
+ const SwWriteTableCells& rCells = pRow->GetCells();
+
+ BOOL bFixRowHeight = FALSE;
+ for( nColCnt = 0, nBox = 0; nBox < rCells.Count(); ++nColCnt )
+ {
+ if( !pRowSpans[ nColCnt ] )
+ {
+ // set new BoxPtr
+ SwWriteTableCell* pCell = rCells[ nBox++ ];
+ pBoxArr[ nColCnt ] = pCell;
+ pRowSpans[ nColCnt ] = pCell->GetRowSpan();
+ for( USHORT nCellSpan = pCell->GetColSpan(), nCS = 1;
+ nCS < nCellSpan; ++nCS, ++nColCnt )
+ {
+ pBoxArr[ nColCnt+1 ] = pBoxArr[ nColCnt ];
+ pRowSpans[ nColCnt+1 ] = pRowSpans[ nColCnt ];
+ }
+ }
+ if( 1 != pRowSpans[ nColCnt ] )
+ bFixRowHeight = TRUE;
+ }
+
+ for( ; nColCnt < rCols.Count() && pRowSpans[ nColCnt ]; ++nColCnt )
+ bFixRowHeight = TRUE;
+
+ // Start Tabellendefinition
+ rWrt.Strm() << sRTF_TROWD << aTblAdjust.GetBuffer();
+
+ if( !nLine && rTbl.IsHeadlineRepeat() )
+ rWrt.Strm() << sRTF_TRHDR;
+
+ // Zeilenhoehe ausgeben
+ long nHeight = 0;
+ if( bFixRowHeight && rWrt.pDoc->GetRootFrm() )
+ {
+ nHeight = -pRow->GetPos(); //neg. => abs. height!
+ if( nLine )
+ nHeight += rRows[ nLine - 1 ]->GetPos();
+
+ // merged line -> dont split it
+ rWrt.Strm() << sRTF_TRKEEP;
+ }
+ else
+ {
+ const SwTableLine* pLine = pBoxArr[ 0 ]->GetBox()->GetUpper();
+ const SwFmtFrmSize& rLSz = pLine->GetFrmFmt()->GetFrmSize();
+ if( ATT_VAR_SIZE != rLSz.GetSizeType() && rLSz.GetHeight() )
+ nHeight = ATT_MIN_SIZE == rLSz.GetSizeType()
+ ? rLSz.GetHeight()
+ : -rLSz.GetHeight();
+ }
+ if( nHeight )
+ {
+ rWrt.Strm() << sRTF_TRRH;
+ rWrt.OutLong( nHeight );
+ }
+
+ // Breite der Boxen ausgeben
+ SwTwips nSz = 0, nCalc;
+ for( nBox = 0; nBox < nColCnt; ++nBox )
+ {
+ SwWriteTableCell* pCell = pBoxArr[ nBox ];
+ if( nBox && pBoxArr[ nBox-1 ] == pBoxArr[ nBox ] )
+ continue;
+
+ const SwFrmFmt& rFmt = *pCell->GetBox()->GetFrmFmt();
+ if( 1 < pCell->GetRowSpan() )
+ rWrt.Strm() << ( pCell->GetRowSpan() == pRowSpans[ nBox ]
+ ? sRTF_CLVMGF
+ : sRTF_CLVMRG );
+
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rFmt.GetAttrSet().GetItemState(
+ RES_BOX, TRUE, &pItem ) )
+ OutSwTblBorder( rRTFWrt, (SvxBoxItem&)*pItem );
+
+// RTF kennt Schattierung in unserem Sinne nicht!
+// if( SFX_ITEM_SET == pBoxFmt->GetAttrSet().GetItemState(
+// RES_SHADOW, TRUE, &pItem ) )
+// OutSwTblShadow( rRTFWrt, *pItem );
+
+ if( SFX_ITEM_SET == rFmt.GetAttrSet().GetItemState(
+ RES_BACKGROUND, TRUE, &pItem )
+ || 0 != ( pItem = pCell->GetBackground() )
+ || 0 != ( pItem = pRow->GetBackground() ) )
+ OutSwTblBackground( rRTFWrt, (SvxBrushItem&)*pItem );
+
+ if( SFX_ITEM_SET == rFmt.GetAttrSet().GetItemState(
+ RES_VERT_ORIENT, TRUE, &pItem ) )
+ switch( ((SwFmtVertOrient*)pItem)->GetVertOrient() )
+ {
+ case VERT_CENTER: rWrt.Strm() << sRTF_CLVERTALC; break;
+ case VERT_BOTTOM: rWrt.Strm() << sRTF_CLVERTALB; break;
+ default: rWrt.Strm() << sRTF_CLVERTALT; break;
+ }
+
+ const SwFmtFrmSize& rLSz = rFmt.GetFrmSize();
+ nSz += rLSz.GetWidth();
+ rWrt.Strm() << sRTF_CELLX;
+
+ nCalc = nSz;
+ if( bRelBoxSize )
+ {
+ nCalc *= nPageSize;
+ nCalc /= nTblSz;
+ }
+ rWrt.OutLong( nTblOffset + nCalc );
+ }
+
+ // Inhalt der Boxen ausgeben
+ rWrt.Strm() << SwRTFWriter::sNewLine << sRTF_PARD << sRTF_INTBL;
+ for( nBox = 0; nBox < nColCnt; ++nBox )
+ {
+ if( nBox && pBoxArr[ nBox-1 ] == pBoxArr[ nBox ] )
+ continue;
+
+ if( pBoxArr[ nBox ]->GetRowSpan() == pRowSpans[ nBox ] )
+ {
+ // new Box
+ const SwStartNode* pSttNd = pBoxArr[ nBox ]->GetBox()->GetSttNd();
+ RTFSaveData aSaveData( rRTFWrt,
+ pSttNd->GetIndex()+1, pSttNd->EndOfSectionIndex() );
+ rRTFWrt.bOutTable = TRUE;
+ rRTFWrt.Out_SwDoc( rRTFWrt.pCurPam );
+ }
+ rWrt.Strm() << sRTF_CELL;
+ }
+
+ // das wars mit der Line
+ rWrt.Strm() << sRTF_ROW << sRTF_PARD << ' ';
+
+ for( nBox = 0; nBox < nColCnt; ++nBox )
+ --pRowSpans[ nBox ];
+ }
+
+ delete pTableWrt;
+ delete pBoxArr;
+ delete pRowSpans;
+
+ // Pam hinter die Tabelle verschieben
+ rRTFWrt.pCurPam->GetPoint()->nNode = *rNode.EndOfSectionNode();
+
+ return rWrt;
+}
+
+Writer& OutRTF_SwSectionNode( Writer& rWrt, SwSectionNode& rNode )
+{
+ SwRTFWriter & rRTFWrt = (SwRTFWriter&)rWrt;
+ const SwSection& rSect = rNode.GetSection();
+
+ // folgt dahinter noch ein SectionNode? Dann wird erst die innere
+ // Section aktiv. Hier wird die Verschachtelung aufgebrochen, weil
+ // RTF das nicht kennt
+ BOOL bPgDscWrite = FALSE;
+ {
+ SwNodeIndex aIdx( rNode, 1 );
+ const SwNode& rNd = aIdx.GetNode();
+ if( rNd.IsSectionNode() /*&& CONTENT_SECTION ==
+ aIdx.GetNode().GetSectionNode()->GetSection().GetType()*/ )
+ return rWrt;
+
+ // falls als erstes Position ein Content- oder Tabellen-Node steht,
+ // dann kann dieser einen PageDesc gesetzt haben und der muss vor
+ // der Bereichsbeschreibung geschrieben werden!
+ // Umgekehrt muss im OutBreaks dann
+ if( rNd.IsCntntNode() )
+ {
+ bPgDscWrite = rRTFWrt.OutBreaks( ((SwCntntNode&)rNd).GetSwAttrSet() );
+ rRTFWrt.bIgnoreNextPgBreak = TRUE;
+ }
+ else if( rNd.IsTableNode() )
+ {
+ bPgDscWrite = rRTFWrt.OutBreaks( ((SwTableNode&)rNd).GetTable().
+ GetFrmFmt()->GetAttrSet() );
+ rRTFWrt.bIgnoreNextPgBreak = TRUE;
+ }
+ }
+
+
+// if( CONTENT_SECTION == rSect.GetType() )
+ {
+ // als fortlaufenden Abschnittwechsel heraus schreiben
+ if( !bPgDscWrite )
+ rWrt.Strm() << sRTF_SECT << sRTF_SBKNONE;
+ //JP 19.03.99 - es muss fuer den Import auf jedenfall das Cols
+ // Token geschrieben werden. Sonst kann nicht erkannt
+ // werden, wann ein PageDesc & eine Section gueltig ist
+ rWrt.Strm() << sRTF_COLS << '1';
+ rRTFWrt.bOutFmtAttr = TRUE;
+ const SfxPoolItem* pItem;
+ const SfxItemSet& rSet = rSect.GetFmt()->GetAttrSet();
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_COL, FALSE, &pItem ))
+ OutRTF_SwFmtCol( rWrt, *pItem );
+ else
+ rWrt.Strm() << sRTF_COLS << '1' << sRTF_COLSX << '709';
+
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_COLUMNBALANCE,
+ FALSE, &pItem ) && ((SwFmtNoBalancedColumns*)pItem)->GetValue() )
+ OutComment( rWrt, sRTF_BALANCEDCOLUMN ) << '}';
+
+ rWrt.Strm() << SwRTFWriter::sNewLine;
+ }
+
+ return rWrt;
+}
+
+
+/* File CHRATR.HXX: */
+
+static Writer& OutRTF_SwFont( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ /* trage den Font in die Font-Liste vom Writer ein und gebe hier nur
+ * die entsprechende Nummer aus. Der Font wird spaeter ueber diese
+ * Tabelle im RTF-Dokument referenziert.
+ */
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ rRTFWrt.bOutFmtAttr = TRUE;
+
+ rWrt.Strm() << sRTF_F;
+ rWrt.OutULong( rRTFWrt.GetId( (const SvxFontItem&)rHt ) );
+ return rWrt;
+}
+
+static Writer& OutRTF_SwPosture( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ const FontItalic nPosture = ((const SvxPostureItem&)rHt).GetPosture();
+ int bTxtOut = rRTFWrt.bTxtAttr && ITALIC_NONE == nPosture;
+ if( ITALIC_NORMAL == nPosture || bTxtOut )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_I;
+ }
+ if( bTxtOut )
+ rWrt.Strm() << '0'; // wieder abschalten
+ return rWrt;
+}
+
+
+
+static Writer& OutRTF_SwWeight( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ const FontWeight nBold = ((const SvxWeightItem&)rHt).GetWeight();
+ int bTxtOut = rRTFWrt.bTxtAttr && WEIGHT_NORMAL == nBold;
+ if( WEIGHT_BOLD == nBold || bTxtOut )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_B;
+ }
+ if( bTxtOut )
+ rWrt.Strm() << '0';
+ return rWrt;
+}
+
+
+static Writer& OutRTF_SwShadowed( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ const BOOL bShadow = ((const SvxShadowedItem&)rHt).GetValue();
+ int bTxtOut = rRTFWrt.bTxtAttr && !bShadow;
+ if( bShadow || bTxtOut )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_SHAD;
+ }
+ if( bTxtOut )
+ rWrt.Strm() << '0';
+ return rWrt;
+}
+
+
+
+static Writer& OutRTF_SwContour( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ const BOOL bContour = ((const SvxContourItem&)rHt).GetValue();
+ int bTxtOut = rRTFWrt.bTxtAttr && !bContour;
+ if( bContour || bTxtOut )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_OUTL;
+ }
+ if( bTxtOut )
+ rWrt.Strm() << '0';
+ return rWrt;
+}
+
+
+
+#ifdef USED
+static Writer& OutRTF_SwKerning( Writer& rWrt, const SfxPoolItem& )
+{
+ return rWrt;
+}
+#endif
+
+
+static Writer& OutRTF_SwCrossedOut( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ const FontStrikeout nStrike = ((const SvxCrossedOutItem&)rHt).GetStrikeout();
+ int bTxtOut = rRTFWrt.bTxtAttr && STRIKEOUT_NONE == nStrike;
+
+ if( (STRIKEOUT_NONE != nStrike && STRIKEOUT_DONTKNOW != nStrike) || bTxtOut )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ if( STRIKEOUT_DOUBLE == nStrike )
+ rWrt.Strm() << sRTF_STRIKEDL;
+ else
+ rWrt.Strm() << sRTF_STRIKE;
+ }
+ if( bTxtOut )
+ rWrt.Strm() << '0';
+ return rWrt;
+}
+
+
+
+static Writer& OutRTF_SwCaseMap( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ switch( ((const SvxCaseMapItem&)rHt).GetValue() )
+ {
+ case SVX_CASEMAP_KAPITAELCHEN:
+ rWrt.Strm() << sRTF_SCAPS;
+ break;
+
+ case SVX_CASEMAP_VERSALIEN:
+ rWrt.Strm() << sRTF_CAPS;
+ break;
+
+ case SVX_CASEMAP_NOT_MAPPED:
+ rWrt.Strm() << sRTF_CAPS << '0' << sRTF_SCAPS << '0'; // beide aus !!
+ break;
+
+ default:
+ return rWrt;
+ }
+
+ rRTFWrt.bOutFmtAttr = TRUE;
+ return rWrt;
+}
+
+
+static Writer& OutRTF_SwUnderline( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const char* pStr = 0;
+ switch( ((const SvxUnderlineItem&)rHt).GetUnderline() )
+ {
+ case UNDERLINE_SINGLE: pStr = sRTF_UL; break;
+ case UNDERLINE_DOUBLE: pStr = sRTF_ULDB; break;
+ case UNDERLINE_NONE: pStr = sRTF_ULNONE; break;
+ case UNDERLINE_DOTTED: pStr = sRTF_ULD; break;
+ case UNDERLINE_DASH: pStr = sRTF_ULDASH; break;
+ case UNDERLINE_DASHDOT: pStr = sRTF_ULDASHD; break;
+ case UNDERLINE_DASHDOTDOT: pStr = sRTF_ULDASHDD; break;
+ case UNDERLINE_BOLD: pStr = sRTF_ULTH; break;
+ case UNDERLINE_WAVE: pStr = sRTF_ULWAVE; break;
+ case UNDERLINE_BOLDDOTTED: pStr = sRTF_ULTHD; break;
+ case UNDERLINE_BOLDDASH: pStr = sRTF_ULTHDASH; break;
+ case UNDERLINE_LONGDASH: pStr = sRTF_ULLDASH; break;
+ case UNDERLINE_BOLDLONGDASH: pStr = sRTF_ULTHLDASH; break;
+ case UNDERLINE_BOLDDASHDOT: pStr = sRTF_ULTHDASHD; break;
+ case UNDERLINE_BOLDDASHDOTDOT: pStr = sRTF_ULTHDASHDD; break;
+ case UNDERLINE_BOLDWAVE: pStr = sRTF_ULHWAVE; break;
+ case UNDERLINE_DOUBLEWAVE: pStr = sRTF_ULULDBWAVE; break;
+ }
+
+ if( pStr )
+ {
+ ((SwRTFWriter&)rWrt).Strm() << pStr;
+ ((SwRTFWriter&)rWrt).bOutFmtAttr = TRUE;
+ }
+ return rWrt;
+}
+
+
+
+static Writer& OutRTF_SwLanguage( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_LANG;
+ rWrt.OutULong( ((const SvxLanguageItem&)rHt).GetLanguage() );
+ return rWrt;
+}
+
+
+
+static Writer& OutRTF_SwEscapement( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ const SvxEscapementItem& rEsc = (const SvxEscapementItem&)rHt;
+ const char * pUpDn;
+
+ SwTwips nH;
+ if( !rRTFWrt.bTxtAttr )
+ nH = rRTFWrt.nFontHeight;
+ else
+ nH = rRTFWrt.pAttrSet->GetSize().GetHeight();
+
+ if( 0 < rEsc.GetEsc() )
+ pUpDn = sRTF_UP;
+ else if( 0 > rEsc.GetEsc() )
+ {
+ pUpDn = sRTF_DN;
+ nH = -nH; // den negativen Wert herrausrechnen
+ }
+ else
+ return rWrt;
+
+ // prozentuale Veraenderung speichern !
+ short nEsc = rEsc.GetEsc();
+ short nProp = rEsc.GetProp() * 100;
+ if( DFLT_ESC_AUTO_SUPER == nEsc )
+ {
+ nEsc = 100 - rEsc.GetProp();
+ ++nProp;
+ }
+ else if( DFLT_ESC_AUTO_SUB == nEsc )
+ {
+ nEsc = - 100 + rEsc.GetProp();
+ ++nProp;
+ }
+
+ OutComment( rWrt, sRTF_UPDNPROP, TRUE );
+ rWrt.OutULong( nProp ) << '}' << pUpDn;
+
+ /*
+ * berechne aus der akt. FontSize und dem ProzentWert die Verschiebung,
+ * wobei im RTF File 1/2 Points stehen muessen, waehrend intern
+ * mit Twips gerechnet wird.
+ * Formel : (FontSize * 1/20 ) pts x * 2
+ * ----------------------- = ------------
+ * 100% Escapement
+ */
+
+ rWrt.OutULong( ( (long( nEsc ) * nH) + 500L ) / 1000L );
+ // 500L zum Aufrunden !!
+ return rWrt;
+}
+
+
+
+static Writer& OutRTF_SwSize( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ rRTFWrt.bOutFmtAttr = TRUE;
+
+ USHORT nSize = (USHORT)((const SvxFontHeightItem&)rHt).GetHeight();
+ rWrt.Strm() << sRTF_FS;
+ rWrt.OutULong( nSize / 10 );
+ if( rRTFWrt.bTxtAttr )
+ rRTFWrt.nFontHeight = nSize;
+ return rWrt;
+}
+
+
+
+static Writer& OutRTF_SwColor( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ /* trage die Color in die Color-Liste vom Writer ein und gebe hier nur
+ * die entsprechende Nummer aus. Die Color wird spaeter ueber diese
+ * Tabelle im RTF-Dokument referenziert.
+ */
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_CF;
+ rWrt.OutULong( rRTFWrt.GetId( ((const SvxColorItem&)rHt).GetValue() ));
+ return rWrt;
+}
+
+
+extern void sw3io_ConvertToOldField( const SwField* pFld, USHORT& rWhich,
+ ULONG& rFmt, ULONG nFFVersion );
+
+static Writer& OutRTF_SwField( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwFmtFld & rFld = (SwFmtFld&)rHt;
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+
+ const SwField* pFld = rFld.GetFld();
+
+ ByteString aFldStt( '{' );
+ ((((aFldStt += sRTF_FIELD) += '{' ) += sRTF_IGNORE ) += sRTF_FLDINST) += ' ';
+ switch( pFld->GetTyp()->Which() )
+ {
+ case RES_DBFLD:
+ aFldStt += "MERGEFIELD ";
+ // kein break !!
+ case RES_USERFLD:
+ rWrt.Strm() << aFldStt.GetBuffer();
+ RTFOutFuncs::Out_String( rWrt.Strm(), pFld->GetTyp()->GetName(),
+ DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
+ break;
+// case RES_CHAPTERFLD:
+// rWrt.Strm() << ' ';
+// break;
+ case RES_PAGENUMBERFLD:
+ rWrt.Strm() << aFldStt.GetBuffer() << "\\\\page";
+ {
+ char __READONLY_DATA
+ sNType0[] = "ALPHABETIC", /* CHARS_UPPER_LETTER*/
+ sNType1[] = "alphabetic", /* CHARS_LOWER_LETTER*/
+ sNType2[] = "ROMAN", /* ROMAN_UPPER */
+ sNType3[] = "roman", /* ROMAN_LOWER */
+ sNType4[] = "ARABIC"; /* ARABIC */
+
+ const char* pFmtStr = 0;
+ switch( pFld->GetFormat() )
+ {
+ case SVX_NUM_CHARS_UPPER_LETTER:
+ case SVX_NUM_CHARS_UPPER_LETTER_N: pFmtStr = sNType0; break;
+ case SVX_NUM_CHARS_LOWER_LETTER:
+ case SVX_NUM_CHARS_LOWER_LETTER_N: pFmtStr = sNType1; break;
+ case SVX_NUM_ROMAN_UPPER: pFmtStr = sNType2; break;
+ case SVX_NUM_ROMAN_LOWER: pFmtStr = sNType3; break;
+ case SVX_NUM_ARABIC: pFmtStr = sNType4; break;
+ }
+
+ if( pFmtStr )
+ rWrt.Strm() << "\\\\* " << pFmtStr;
+ }
+ break;
+ case RES_FILENAMEFLD:
+ rWrt.Strm() << aFldStt.GetBuffer() << "\\\\filename ";
+ break;
+ case RES_DBNAMEFLD:
+ rWrt.Strm() << aFldStt.GetBuffer() << "\\\\data ";
+ RTFOutFuncs::Out_String( rWrt.Strm(), rWrt.pDoc->GetDBName(),
+ DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
+ break;
+ case RES_AUTHORFLD:
+ rWrt.Strm() << aFldStt.GetBuffer() << "\\\\author ";
+ break;
+
+ case RES_HIDDENTXTFLD:
+ if( TYP_CONDTXTFLD == ((SwHiddenTxtField*)pFld)->GetSubType() )
+ RTFOutFuncs::Out_String( rWrt.Strm(), pFld->Expand(),
+ DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
+ else
+ {
+ rWrt.Strm() << '{' << sRTF_V << ' ';
+ OutRTF_AsByteString( rWrt, pFld->GetPar2() ).Strm()
+ << '}' << SwRTFWriter::sNewLine;
+ }
+ return rWrt; // nicht bis zum Ende, kein RTF-Feld !!
+
+ case RES_DATETIMEFLD:
+ if (!(pFld->GetSubType() & FIXEDFLD))
+ {
+ USHORT nWhich = RES_DATETIMEFLD;
+ ULONG nFmt = pFld->GetFormat();
+ sw3io_ConvertToOldField(pFld, nWhich, nFmt, SOFFICE_FILEFORMAT_40 );
+ if (pFld->GetSubType() & DATEFLD)
+ {
+ rWrt.Strm() << aFldStt.GetBuffer() << "\\\\date \\\\@\"";
+ switch( nFmt )
+ {
+ case DF_SSYS: rWrt.Strm() << "tt.MM.yy"; break;
+ case DF_LSYS: rWrt.Strm() << "tttt, t. MMMM yyyy"; break;
+ case DF_SHORT: rWrt.Strm() << "tt.MM.yy"; break;
+ case DF_SCENT: rWrt.Strm() << "tt.MM.yyyy"; break;
+ case DF_LMON: rWrt.Strm() << "t. MMM yyyy"; break;
+ case DF_LMONTH: rWrt.Strm() << "t. MMMM yyyy"; break;
+ case DF_LDAYMON: rWrt.Strm() << "ttt, t. MMMM yyyy"; break;
+ case DF_LDAYMONTH: rWrt.Strm() << "tttt, t. MMMM yyyy"; break;
+ }
+ }
+ else
+ {
+ rWrt.Strm() << aFldStt.GetBuffer() << "\\\\date \\\\@\"";
+ switch( nFmt )
+ {
+ case TF_SSMM_24: rWrt.Strm() << "HH:mm"; break;
+ case TF_SSMM_12: rWrt.Strm() << "hh:mm"; break; // ???
+ case TF_SYSTEM: rWrt.Strm() << "HH:mm"; break;
+ }
+ }
+ rWrt.Strm() << '\"';
+ break;
+ }
+ // Kein break: in default-Zweig laufen!
+
+ default:
+ {
+ aFldStt.Erase();
+
+ // JP 20.07.95: warum nicht das Expandierte rausschreiben ?
+ sal_Char cCh;
+ rWrt.Strm().SeekRel(-1);
+ rWrt.Strm() >> cCh;
+ if( ' ' != cCh ) // vorweg immer einen Trenner
+ rWrt.Strm() << ' ';
+ RTFOutFuncs::Out_String( rWrt.Strm(), pFld->Expand(),
+ DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
+ }
+ break;
+ }
+
+ if( aFldStt.Len() )
+ {
+ rWrt.Strm() << "}{" << sRTF_FLDRSLT << ' ';
+ RTFOutFuncs::Out_String( rWrt.Strm(), pFld->Expand(),
+ DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
+ rWrt.Strm() << "}}";
+ rRTFWrt.bOutFmtAttr = FALSE;
+ }
+
+ return rWrt;
+}
+
+static Writer& OutRTF_SwFlyCntnt( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwFrmFmt* pFmt = ((SwFmtFlyCnt&)rHt).GetFrmFmt();
+ if( RES_DRAWFRMFMT != pFmt->Which() )
+ {
+ OutComment( rWrt, sRTF_FLYINPARA );
+ ((SwRTFWriter&)rWrt).OutRTFFlyFrms( *((SwFlyFrmFmt*)pFmt) );
+ rWrt.Strm() << '}';
+ ((SwRTFWriter&)rWrt).bOutFmtAttr = FALSE;
+ }
+// Zeichengebundene Zeichenobjekte werden ignoriert.
+ return rWrt;
+}
+
+
+
+#ifdef USED
+static Writer& OutRTF_SwTOXMark( Writer& rWrt, const SfxPoolItem& )
+{
+ return rWrt;
+}
+#endif
+
+#ifdef USED
+static Writer& OutRTF_SwNoHyphen( Writer& rWrt, const SfxPoolItem& )
+{
+ return rWrt;
+}
+#endif
+
+
+static Writer& OutRTF_SwFtn( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwFmtFtn& rFtn = (const SwFmtFtn&)rHt;
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+
+ do { // middle-check-loop
+ if( !rFtn.GetTxtFtn() || !rFtn.GetTxtFtn()->GetStartNode() )
+ break; // es gibt keine Kopf-/Fusszeile/Fussnote
+
+ // Hole vom Node und vom letzten Node die Position in der Section
+ ULONG nStart = rFtn.GetTxtFtn()->GetStartNode()->GetIndex()+1,
+ nEnd = rWrt.pDoc->GetNodes()[ nStart-1 ]->EndOfSectionIndex();
+
+ // kein Bereich also kein gueltiger Node
+ if( nStart >= nEnd )
+ break;
+
+ rWrt.Strm() << '{' << sRTF_SUPER << ' ';
+ if( !rFtn.GetNumStr().Len() )
+ {
+ rWrt.Strm() << sRTF_CHFTN;
+ OutComment( rWrt, sRTF_FOOTNOTE );
+ if( rFtn.IsEndNote() )
+ rWrt.Strm() << sRTF_FTNALT;
+ rWrt.Strm() << ' ' << sRTF_CHFTN;
+ }
+ else
+ {
+ OutRTF_AsByteString( rWrt, rFtn.GetNumStr() );
+ OutComment( rWrt, sRTF_FOOTNOTE );
+ if( rFtn.IsEndNote() )
+ rWrt.Strm() << sRTF_FTNALT;
+ rWrt.Strm() << ' ';
+ OutRTF_AsByteString( rWrt, rFtn.GetNumStr() );
+ }
+ RTFSaveData aSaveData( rRTFWrt, nStart, nEnd );
+ // damit kein \par ausgegeben wird !!
+ rRTFWrt.pCurPam->GetMark()->nContent++;
+ rRTFWrt.Out_SwDoc( rRTFWrt.pCurPam );
+
+ rWrt.Strm() << "}}" << SwRTFWriter::sNewLine;
+ rRTFWrt.bOutFmtAttr = FALSE;
+
+ } while( FALSE );
+ return rWrt;
+}
+
+static Writer& OutRTF_SwHardBlank( Writer& rWrt, const SfxPoolItem& rHt)
+{
+ RTFOutFuncs::Out_Char( rWrt.Strm(), ((SwFmtHardBlank&)rHt).GetChar(),
+ DEF_ENCODING, ((SwRTFWriter&)rWrt).bWriteHelpFmt );
+ return rWrt;
+}
+
+#ifdef USED
+static Writer& OutRTF_SwRefMark( Writer& rWrt, const SfxPoolItem& )
+{
+ return rWrt;
+}
+#endif
+
+
+#ifdef USED
+static Writer& OutRTF_SwNoLinebreakHere( Writer& rWrt, const SfxPoolItem& )
+{
+ return rWrt;
+}
+#endif
+
+static Writer& OutRTF_SwTxtINetFmt( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwFmtINetFmt& rURL = (const SwFmtINetFmt&)rHt;
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ if( rURL.GetValue().Len() )
+ {
+ rWrt.Strm() << '{' << sRTF_FIELD << '{' << sRTF_IGNORE
+ << sRTF_FLDINST << " HYPERLINK ";
+
+ String sURL( rURL.GetValue() );
+ if( INET_MARK_TOKEN != sURL.GetChar(0) )
+ {
+ INetURLObject aTmp( INetURLObject::AbsToRel( sURL ) );
+ sURL = aTmp.GetURLNoMark( INetURLObject::DECODE_WITH_CHARSET );
+/* if( INET_PROT_FILE == aTmp.GetProtocol() )
+ {
+ // WW97 wollen keine FILE-URL haben, sondern einen normalen
+ // Dateinamen. Aber ab WW2000 kennen sie FileURLs.
+ sURL = aTmp.GetFull();
+ }
+*/ rWrt.Strm() << '\"';
+ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+
+ if( sURL.Len() )
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+ if( rURL.GetTargetFrame().Len() )
+ {
+ rWrt.Strm() << "\\\\t \"";
+ RTFOutFuncs::Out_String( rWrt.Strm(), rURL.GetTargetFrame(),
+ DEF_ENCODING, rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+ rWrt.Strm() << "}{" << sRTF_FLDRSLT << ' ';
+ rRTFWrt.bOutFmtAttr = FALSE;
+
+ // und dann noch die Attributierung ausgeben
+ const SwCharFmt* pFmt;
+ const SwTxtINetFmt* pTxtAtr = rURL.GetTxtINetFmt();
+ if( pTxtAtr && 0 != ( pFmt = pTxtAtr->GetCharFmt() ))
+ OutRTF_SwFmt( rWrt, *pFmt );
+ }
+ return rWrt;
+}
+
+static Writer& OutRTF_SwTxtCharFmt( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwFmtCharFmt& rChrFmt = (const SwFmtCharFmt&)rHt;
+ const SwCharFmt* pFmt = rChrFmt.GetCharFmt();
+
+ if( pFmt )
+ OutRTF_SwFmt( rWrt, *pFmt );
+ return rWrt;
+}
+
+/* File FRMATR.HXX */
+
+static Writer& OutRTF_SwFrmSize( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ const SwFmtFrmSize& rSz = (const SwFmtFrmSize&)rHt;
+ if( rRTFWrt.pFlyFmt ) // wird das FlyFrmFmt ausgegeben ?
+ {
+ if( !rRTFWrt.bRTFFlySyntax )
+ return rWrt;
+
+ if( rSz.GetWidth() )
+ {
+ rWrt.Strm() << sRTF_ABSW;
+ rWrt.OutLong( rSz.GetWidth() );
+ rRTFWrt.bOutFmtAttr = TRUE;
+ }
+
+ if( rSz.GetHeight() )
+ {
+ long nH = rSz.GetHeight();
+ if( ATT_FIX_SIZE == rSz.GetSizeType() )
+ nH = -nH;
+ rWrt.Strm() << sRTF_ABSH;
+ rWrt.OutLong( nH );
+ rRTFWrt.bOutFmtAttr = TRUE;
+ }
+ }
+ else if( rRTFWrt.bOutPageDesc )
+ {
+ rWrt.Strm() << sRTF_PGWSXN;
+ rWrt.OutLong( rSz.GetWidth() );
+ rWrt.Strm() << sRTF_PGHSXN;
+ rWrt.OutLong( rSz.GetHeight() );
+ rRTFWrt.bOutFmtAttr = TRUE;
+ }
+ return rWrt;
+}
+
+
+
+#ifdef USED
+static Writer& OutRTF_SwFillOrder( Writer& rWrt, const SfxPoolItem& )
+{
+ return rWrt;
+}
+#endif
+
+
+#ifdef USED
+static Writer& OutRTF_SwFmtPaperBin( Writer& rWrt, const SfxPoolItem& )
+{
+ return rWrt;
+}
+#endif
+
+
+
+static Writer& OutRTF_SwFmtLRSpace( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ const SvxLRSpaceItem & rLR = (const SvxLRSpaceItem&) rHt;
+ if( !rRTFWrt.pFlyFmt )
+ {
+ if( rRTFWrt.bOutPageDesc )
+ {
+ if( rLR.GetLeft() )
+ {
+ rWrt.Strm() << sRTF_MARGLSXN;
+ rWrt.OutLong( rLR.GetLeft() );
+ rRTFWrt.bOutFmtAttr = TRUE;
+ }
+ if( rLR.GetRight() )
+ {
+ rWrt.Strm() << sRTF_MARGRSXN;
+ rWrt.OutLong( rLR.GetRight() );
+ rRTFWrt.bOutFmtAttr = TRUE;
+ }
+ }
+ else
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_LI;
+ rWrt.OutLong( rLR.GetTxtLeft() ) << sRTF_RI;
+ rWrt.OutLong( rLR.GetRight() );
+ rWrt.Strm() << sRTF_FI;
+ rWrt.OutLong( rLR.GetTxtFirstLineOfst() );
+ }
+ }
+ else if( rLR.GetLeft() == rLR.GetRight() && rRTFWrt.bRTFFlySyntax )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_DFRMTXTX;
+ rWrt.OutLong( rLR.GetLeft() );
+ }
+ return rWrt;
+}
+
+static Writer& OutRTF_SwFmtULSpace( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ const SvxULSpaceItem & rUL = (const SvxULSpaceItem&) rHt;
+ if( rRTFWrt.pFlyFmt )
+ {
+ if( rUL.GetUpper() == rUL.GetLower() && rRTFWrt.bRTFFlySyntax )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_DFRMTXTY;
+ rWrt.OutLong( rUL.GetLower() );
+ }
+ }
+ else
+ {
+ const char* p;
+ USHORT nValue = rUL.GetUpper();
+ if( rRTFWrt.bOutPageDesc )
+ {
+ p = sRTF_MARGTSXN;
+ if( !rRTFWrt.bOutPageDescTbl )
+ {
+ SwRect aRect;
+ const SwFmtHeader* pHdr;
+ if( SFX_ITEM_SET == rRTFWrt.pAktPageDesc->GetMaster().
+ GetItemState( RES_HEADER, FALSE,
+ (const SfxPoolItem**)&pHdr ) && pHdr->IsActive() )
+ {
+ aRect = pHdr->GetHeaderFmt()->FindLayoutRect( FALSE );
+ if( aRect.Height() )
+ nValue += aRect.Height();
+ else
+ {
+ const SwFmtFrmSize& rSz = pHdr->GetHeaderFmt()->GetFrmSize();
+ if( ATT_VAR_SIZE != rSz.GetSizeType() )
+ nValue += rSz.GetHeight();
+ else
+ nValue += 274; // defaulten fuer 12pt Schrift
+ nValue += pHdr->GetHeaderFmt()->GetULSpace().GetLower();
+ }
+ }
+ }
+ }
+ else
+ p = sRTF_SB;
+
+ if( rRTFWrt.bOutPageDesc || nValue )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << p;
+ rWrt.OutLong( nValue );
+ }
+
+
+ nValue = rUL.GetLower();
+ if( rRTFWrt.bOutPageDesc )
+ {
+ p = sRTF_MARGBSXN;
+ if( !rRTFWrt.bOutPageDescTbl )
+ {
+ SwRect aRect;
+ const SwFmtFooter* pFtr;
+ if( SFX_ITEM_SET == rRTFWrt.pAktPageDesc->GetMaster().
+ GetItemState( RES_FOOTER, FALSE,
+ (const SfxPoolItem**)&pFtr ) && pFtr->IsActive() )
+ {
+ aRect = pFtr->GetFooterFmt()->FindLayoutRect( FALSE );
+ if( aRect.Height() )
+ nValue += aRect.Height();
+ else
+ {
+ const SwFmtFrmSize& rSz = pFtr->GetFooterFmt()->GetFrmSize();
+ if( ATT_VAR_SIZE != rSz.GetSizeType() )
+ nValue += rSz.GetHeight();
+ else
+ nValue += 274; // defaulten fuer 12pt Schrift
+ nValue += pFtr->GetFooterFmt()->GetULSpace().GetUpper();
+ }
+ }
+ }
+ }
+ else
+ p = sRTF_SA;
+
+ if( rRTFWrt.bOutPageDesc || nValue )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << p;
+ rWrt.OutLong( nValue );
+ }
+ }
+ return rWrt;
+}
+
+// Header-Footer werden auch vom RTF-Writer direkt gerufen, also kein static!
+
+
+Writer& OutRTF_SwFmtHeader( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwFmtHeader& rHd = (const SwFmtHeader&)rHt;
+ if( !rHd.IsActive() ) // nicht aktiv, dann nichts weiter ausgeben
+ return rWrt;
+
+ // hole einen Node zu dem Request
+ SwStartNode *pSttNode = 0;
+ const SwFmtCntnt& rCntnt = rHd.GetHeaderFmt()->GetCntnt();
+ if( rCntnt.GetCntntIdx() )
+ pSttNode = rCntnt.GetCntntIdx()->GetNode().GetStartNode();
+
+ do { // middle-check-loop
+ if( !pSttNode )
+ break; // es gibt keine Kopf-/Fusszeile/Fussnote
+
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+
+ // Hole vom Node und vom letzten Node die Position in der Section
+ ULONG nStart = pSttNode->GetIndex() + 1,
+ nEnd = pSttNode->EndOfSectionIndex();
+
+ // kein Bereich also kein gueltiger Node
+ if( nStart >= nEnd )
+ break;
+ ASSERT( rRTFWrt.pAktPageDesc, "Header-Attribut ohne PageDesc" );
+
+ const sal_Char * pHdNm = sRTF_HEADER;
+ rWrt.Strm() << pHdNm << 'y';
+ if( rRTFWrt.bOutPageDescTbl )
+ {
+ // hole die Ober-/Unterkanten vom Header
+ const SvxULSpaceItem& rUL = rHd.GetHeaderFmt()->GetULSpace();
+ const SvxLRSpaceItem& rLR = rHd.GetHeaderFmt()->GetLRSpace();
+ const SwFmtFrmSize& rSz = rHd.GetHeaderFmt()->GetFrmSize();
+
+ rWrt.OutLong( rUL.GetUpper() );
+ OutComment( rWrt, pHdNm ) << "yb";
+ rWrt.OutLong( rUL.GetLower() ) << pHdNm << "xl";
+ rWrt.OutLong( rLR.GetLeft() ) << pHdNm << "xr";
+ rWrt.OutLong( rLR.GetRight() ) << pHdNm << "yh";
+ rWrt.OutLong( ATT_FIX_SIZE == rSz.GetSizeType()
+ ? -rSz.GetHeight()
+ : rSz.GetHeight() ) << '}';
+ }
+ else
+ rWrt.OutLong( rRTFWrt.pAktPageDesc->GetMaster().
+ GetULSpace().GetUpper() );
+
+ // wird nicht die PageDesc-Tabelle ausgegeben und gibt es einen
+ // Nachfolger, dann handelt es sich um die "1.Seite" nach RTF.
+ sal_Char cTyp = 0;
+ if( !rRTFWrt.bOutPageDesc && rRTFWrt.pAktPageDesc->GetFollow() &&
+ rRTFWrt.pAktPageDesc->GetFollow() != rRTFWrt.pAktPageDesc )
+ cTyp = 'f'; // dann FirstPage-Header
+ else if( !rRTFWrt.pAktPageDesc->IsHeaderShared() )
+ cTyp = rRTFWrt.bOutLeftHeadFoot ? 'l' : 'r';
+
+ rWrt.Strm() << '{'<< pHdNm;
+ if( cTyp ) rWrt.Strm() << cTyp;
+ rWrt.Strm() << ' ';
+
+ {
+ RTFSaveData aSaveData( rRTFWrt, nStart, nEnd );
+ rRTFWrt.Out_SwDoc( rRTFWrt.pCurPam );
+ }
+
+ rWrt.Strm() << '}' << SwRTFWriter::sNewLine;
+
+ } while( FALSE );
+ return rWrt;
+}
+// Header-Footer werden auch vom RTF-Writer direkt gerufen, also kein static!
+
+
+Writer& OutRTF_SwFmtFooter( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwFmtFooter& rFt = (const SwFmtFooter&)rHt;
+ if( !rFt.IsActive() ) // nicht aktiv, dann nichts weiter ausgeben
+ return rWrt;
+
+ SwStartNode *pSttNode = 0;
+ const SwFmtCntnt& rCntnt = rFt.GetFooterFmt()->GetCntnt();
+ if( rCntnt.GetCntntIdx() )
+ pSttNode = rCntnt.GetCntntIdx()->GetNode().GetStartNode();
+
+ do { // middle-check-loop
+ if( !pSttNode )
+ break; // es gibt keine Kopf-/Fusszeile/Fussnote
+
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+
+ // Hole vom Node und vom letzten Node die Position in der Section
+ ULONG nStart = pSttNode->GetIndex()+1,
+ nEnd = pSttNode->EndOfSectionIndex();
+
+ // kein Bereich also kein gueltiger Node
+ if( nStart >= nEnd )
+ break;
+ ASSERT( rRTFWrt.pAktPageDesc, "Footer-Attribut ohne PageDesc" );
+
+ const sal_Char * pFtNm = sRTF_FOOTER;
+ rWrt.Strm() << pFtNm << 'y';
+ if( rRTFWrt.bOutPageDescTbl )
+ {
+ // hole die Ober-/Unterkanten vom Footer
+ const SvxULSpaceItem& rUL = rFt.GetFooterFmt()->GetULSpace();
+ const SvxLRSpaceItem& rLR = rFt.GetFooterFmt()->GetLRSpace();
+ const SwFmtFrmSize& rSz = rFt.GetFooterFmt()->GetFrmSize();
+
+ rWrt.OutLong( rUL.GetLower() );
+ OutComment( rWrt, pFtNm ) << "yt";
+ rWrt.OutLong( rUL.GetUpper() ) << pFtNm << "xl";
+ rWrt.OutLong( rLR.GetLeft() ) << pFtNm << "xr";
+ rWrt.OutLong( rLR.GetRight() ) << pFtNm << "yh";
+ rWrt.OutLong( ATT_FIX_SIZE == rSz.GetSizeType()
+ ? -rSz.GetHeight()
+ : rSz.GetHeight() ) << '}';
+ }
+ else
+ rWrt.OutLong( rRTFWrt.pAktPageDesc->GetMaster().
+ GetULSpace().GetLower() );
+
+ // wird nicht die PageDesc-Tabelle ausgegeben und gibt es einen
+ // Nachfolger, dann handelt es sich um die "1.Seite" nach RTF.
+ sal_Char cTyp = 0;
+ if( !rRTFWrt.bOutPageDesc && rRTFWrt.pAktPageDesc->GetFollow() &&
+ rRTFWrt.pAktPageDesc->GetFollow() != rRTFWrt.pAktPageDesc )
+ cTyp = 'f'; // dann FirstPage-Header
+ else if( !rRTFWrt.pAktPageDesc->IsFooterShared() )
+ cTyp = rRTFWrt.bOutLeftHeadFoot ? 'l' : 'r';
+
+ rWrt.Strm() << '{'<< pFtNm;
+ if( cTyp ) rWrt.Strm() << cTyp;
+ rWrt.Strm() << ' ';
+
+ {
+ RTFSaveData aSaveData( rRTFWrt, nStart, nEnd );
+ rRTFWrt.Out_SwDoc( rRTFWrt.pCurPam );
+ }
+
+ rWrt.Strm() << '}' << SwRTFWriter::sNewLine;
+
+ } while( FALSE );
+ return rWrt;
+}
+
+static Writer& OutRTF_SwFmtPrint( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ if( !rRTFWrt.bRTFFlySyntax && !((const SvxPrintItem&)rHt).GetValue() )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_FLYPRINT;
+ }
+ return rWrt;
+}
+
+
+static Writer& OutRTF_SwFmtOpaque( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ if( !rRTFWrt.bRTFFlySyntax && !((const SvxOpaqueItem&)rHt).GetValue() )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_FLYOPAQUE;
+ }
+ return rWrt;
+}
+
+
+static Writer& OutRTF_SwFmtProtect( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ if( !rRTFWrt.bRTFFlySyntax )
+ {
+ const SvxProtectItem & rFlyProtect = (const SvxProtectItem&) rHt;
+ RTFProtect aP( rFlyProtect.IsCntntProtected(),
+ rFlyProtect.IsSizeProtected(),
+ rFlyProtect.IsPosProtected() );
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_FLYPRTCTD;
+ rWrt.OutULong( aP.GetValue() );
+ }
+ return rWrt;
+}
+
+
+static Writer& OutRTF_SwFmtSurround( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwFmtSurround& rFlySurround = (const SwFmtSurround&) rHt;
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ if( rRTFWrt.bRTFFlySyntax )
+ {
+ if( SURROUND_NONE == rFlySurround.GetSurround() )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_NOWRAP;
+ }
+ }
+ else
+ {
+ SwSurround eSurround = rFlySurround.GetSurround();
+ BOOL bGold = SURROUND_IDEAL == eSurround;
+ if( bGold )
+ eSurround = SURROUND_PARALLEL;
+ RTFSurround aMC( bGold, eSurround );
+ rWrt.Strm() << sRTF_FLYMAINCNT;
+ rWrt.OutULong( aMC.GetValue() );
+ rRTFWrt.bOutFmtAttr = TRUE;
+ }
+ return rWrt;
+}
+
+static Writer& OutRTF_SwFmtVertOrient ( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwFmtVertOrient& rFlyVert = (const SwFmtVertOrient&) rHt;
+ RTFVertOrient aVO( rFlyVert.GetVertOrient(), rFlyVert.GetRelationOrient() );
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+
+ if( rRTFWrt.bRTFFlySyntax && rRTFWrt.pFlyFmt )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ const char* pOrient;
+ RndStdIds eAnchor = rRTFWrt.pFlyFmt->GetAnchor().GetAnchorId();
+ SwRelationOrient eOrient = rFlyVert.GetRelationOrient();
+ if( FLY_PAGE == eAnchor )
+ {
+ if( REL_PG_FRAME == eOrient || FRAME == eOrient )
+ pOrient = sRTF_PVPG;
+ else
+ pOrient = sRTF_PVMRG;
+ }
+ else
+ pOrient = sRTF_PVPARA;
+ rWrt.Strm() << pOrient;
+
+ switch( rFlyVert.GetVertOrient() )
+ {
+ case VERT_TOP:
+ case VERT_LINE_TOP: rWrt.Strm() << sRTF_POSYT; break;
+ case VERT_BOTTOM:
+ case VERT_LINE_BOTTOM: rWrt.Strm() << sRTF_POSYB; break;
+ case VERT_CENTER:
+ case VERT_LINE_CENTER: rWrt.Strm() << sRTF_POSYC; break;
+ case VERT_NONE:
+ {
+ rWrt.Strm() << sRTF_POSY;
+ rWrt.OutULong( rFlyVert.GetPos() );
+ }
+ break;
+ }
+ }
+ else if( !rRTFWrt.bRTFFlySyntax )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_FLYVERT;
+ rWrt.OutULong( aVO.GetValue() );
+ }
+
+ return rWrt;
+}
+
+static Writer& OutRTF_SwFmtHoriOrient( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwFmtHoriOrient& rFlyHori = (const SwFmtHoriOrient&) rHt;
+ RTFHoriOrient aHO( rFlyHori.GetHoriOrient(),
+ rFlyHori.GetRelationOrient() );
+
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ if( rRTFWrt.bRTFFlySyntax && rRTFWrt.pFlyFmt )
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ const char* pS;
+ RndStdIds eAnchor = rRTFWrt.pFlyFmt->GetAnchor().GetAnchorId();
+ SwRelationOrient eOrient = rFlyHori.GetRelationOrient();
+ if( FLY_PAGE == eAnchor )
+ {
+ if( REL_PG_FRAME == eOrient || FRAME == eOrient )
+ pS = sRTF_PHPG;
+ else
+ pS = sRTF_PHMRG;
+ }
+ else
+ pS = sRTF_PHCOL;
+ rWrt.Strm() << pS;
+
+ pS = 0;
+ switch( rFlyHori.GetHoriOrient() )
+ {
+ case HORI_RIGHT: pS = rFlyHori.IsPosToggle()
+ ? sRTF_POSXO
+ : sRTF_POSXR;
+ break;
+ case HORI_LEFT: pS = rFlyHori.IsPosToggle()
+ ? sRTF_POSXI
+ : sRTF_POSXL;
+ break;
+ case HORI_CENTER: pS = sRTF_POSXC; break;
+ case HORI_NONE:
+ {
+ rWrt.Strm() << sRTF_POSX;
+ rWrt.OutULong( rFlyHori.GetPos() );
+ }
+ break;
+ }
+ if( pS )
+ rWrt.Strm() << pS;
+ }
+ else
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_FLYHORZ;
+ rWrt.OutULong( aHO.GetValue() );
+ }
+ return rWrt;
+}
+
+static Writer& OutRTF_SwFmtAnchor( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ if( !rRTFWrt.bRTFFlySyntax )
+ {
+ const SwFmtAnchor& rAnchor = (const SwFmtAnchor&) rHt;
+ USHORT nId = rAnchor.GetAnchorId();
+ rWrt.Strm() << sRTF_FLYANCHOR;
+ rWrt.OutULong( nId );
+ rRTFWrt.bOutFmtAttr = TRUE;
+ switch( nId )
+ {
+ case FLY_PAGE:
+ rWrt.Strm() << sRTF_FLYPAGE;
+ rWrt.OutULong( rAnchor.GetPageNum() );
+ break;
+ case FLY_AT_CNTNT:
+ case FLY_IN_CNTNT:
+ rWrt.Strm() << sRTF_FLYCNTNT;
+ break;
+ }
+ }
+ return rWrt;
+}
+
+
+
+static Writer& OutRTF_SwFmtBackground( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ // wird das FlyFrmFmt ausgegeben, dann Background nur ausgeben, wenn
+ // RTF-Syntax gesetzt ist !
+ if( !rRTFWrt.pFlyFmt || !rRTFWrt.bRTFFlySyntax )
+ {
+ const SvxBrushItem& rBack = (const SvxBrushItem&)rHt;
+ if( !rBack.GetColor().GetTransparency() )
+ {
+ ByteString sOut( sRTF_CBPAT );
+ sOut += ByteString::CreateFromInt32(
+ rRTFWrt.GetId( rBack.GetColor() ));
+
+ if( rRTFWrt.pFlyFmt || rRTFWrt.bOutPageDesc )
+ {
+ rWrt.Strm() << '{' << sOut.GetBuffer() << '}';
+ }
+ else
+ {
+ rRTFWrt.bOutFmtAttr = TRUE;
+ rWrt.Strm() << sOut.GetBuffer();
+ }
+ }
+ }
+ return rWrt;
+}
+
+
+static Writer& OutRTF_SwFmtShadow( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ // wird das FlyFrmFmt ausgegeben, dann Schatten nur ausgeben, wenn
+ // nicht RTF-Syntax gesetzt ist !
+ if( rRTFWrt.pFlyFmt && rRTFWrt.bRTFFlySyntax )
+ return rWrt;
+
+ const SvxShadowItem& rShadow = (const SvxShadowItem&)rHt;
+ // FALSE wegen schliessender Klammer !!
+ OutComment( rWrt, sRTF_SHADOW, FALSE );
+ rWrt.OutULong( rShadow.GetLocation() ) << sRTF_SHDWDIST;
+ rWrt.OutULong( rShadow.GetWidth() ) << sRTF_SHDWSTYLE;
+ const Color& rColor = rShadow.GetColor();
+ rWrt.OutULong( rColor.GetTransparency() ? SW_SV_BRUSH_NULL : SW_SV_BRUSH_SOLID );
+ rWrt.OutULong( rRTFWrt.GetId( rColor ) ) << sRTF_SHDWFCOL;
+ rWrt.OutULong( 0 ) << '}';
+ return rWrt;
+}
+
+
+static void OutBorderLine( SwRTFWriter& rWrt, const SvxBorderLine* pLine,
+ const char* pStr )
+{
+ rWrt.Strm() << pStr << sRTF_BRDLNCOL;
+ rWrt.OutULong( rWrt.GetId( pLine->GetColor() ) ) << sRTF_BRDLNIN;
+ rWrt.OutULong( pLine->GetInWidth() ) << sRTF_BRDLNOUT;
+ rWrt.OutULong( pLine->GetOutWidth() ) << sRTF_BRDLNDIST;
+ rWrt.OutULong( pLine->GetDistance() );
+}
+
+
+static Writer& OutRTF_SwFmtBox( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+
+ const SvxBoxItem& rBox = (const SvxBoxItem&)rHt;
+
+ static USHORT __READONLY_DATA aBorders[] = {
+ BOX_LINE_TOP, BOX_LINE_LEFT, BOX_LINE_BOTTOM, BOX_LINE_RIGHT };
+ static const sal_Char* __READONLY_DATA aBorderNames[] = {
+ sRTF_BRDRT, sRTF_BRDRL, sRTF_BRDRB, sRTF_BRDRR };
+
+ USHORT nDist = rBox.GetDistance();
+
+ // wird das FlyFrmFmt ausgegeben, dann Border nur ausgeben, wenn
+ // nicht RTF-Syntax gesetzt ist!
+ if( rRTFWrt.pFlyFmt && rRTFWrt.bRTFFlySyntax )
+ {
+/*
+RTF kennt keine Rahmen Umrandung!
+ // die normale RTF-Definition
+ if( rBox.GetTop() && rBox.GetBottom() &&
+ rBox.GetLeft() && rBox.GetRight() &&
+ *rBox.GetTop() == *rBox.GetBottom() &&
+ *rBox.GetTop() == *rBox.GetLeft() &&
+ *rBox.GetTop() == *rBox.GetRight() )
+ OutTBLBorderLine( rRTFWrt, rBox.GetTop(), sRTF_BOX, nDist );
+ else
+ {
+ OUT_BRDLINE( rBox.GetTop(), sRTF_BRDRT, nDist );
+ OUT_BRDLINE( rBox.GetBottom(), sRTF_BRDRB, nDist );
+ OUT_BRDLINE( rBox.GetLeft(), sRTF_BRDRL, nDist );
+ OUT_BRDLINE( rBox.GetRight(), sRTF_BRDRR, nDist );
+ }
+*/
+ return rWrt;
+ }
+ else if( !rRTFWrt.pFlyFmt )
+ {
+ // erst die normale RTF-Definition, dann unsere eigene
+ if( rBox.GetTop() && rBox.GetBottom() &&
+ rBox.GetLeft() && rBox.GetRight() &&
+ *rBox.GetTop() == *rBox.GetBottom() &&
+ *rBox.GetTop() == *rBox.GetLeft() &&
+ *rBox.GetTop() == *rBox.GetRight() &&
+ nDist == rBox.GetDistance( BOX_LINE_TOP ) &&
+ nDist == rBox.GetDistance( BOX_LINE_LEFT ) &&
+ nDist == rBox.GetDistance( BOX_LINE_BOTTOM ) &&
+ nDist == rBox.GetDistance( BOX_LINE_RIGHT ))
+ OutTBLBorderLine( rRTFWrt, rBox.GetTop(), sRTF_BOX, nDist );
+ else
+ {
+ const USHORT* pBrd = aBorders;
+ const sal_Char** pBrdNms = (const sal_Char**)aBorderNames;
+ for( int i = 0; i < 4; ++i, ++pBrd, ++pBrdNms )
+ {
+ const SvxBorderLine* pLn = rBox.GetLine( *pBrd );
+ if( pLn )
+ OutTBLBorderLine( rRTFWrt, pLn, *pBrdNms,
+ rBox.GetDistance( *pBrd ) );
+ }
+ }
+ }
+
+ const USHORT* pBrd = aBorders;
+ const sal_Char** pBrdNms = (const sal_Char**)aBorderNames;
+ for( int i = 0; i < 4; ++i, ++pBrd, ++pBrdNms )
+ {
+ const SvxBorderLine* pLn = rBox.GetLine( *pBrd );
+ if( pLn )
+ {
+ rWrt.Strm() << '{' << sRTF_IGNORE;
+ OutBorderLine( rRTFWrt, pLn, *pBrdNms );
+ rWrt.Strm() << '}' << sRTF_BRSP;
+ rWrt.OutULong( rBox.GetDistance( *pBrd ));
+ }
+ }
+
+ rRTFWrt.bOutFmtAttr = FALSE;
+ return rWrt;
+}
+
+
+#ifdef USED
+static Writer& OutRTF_SwFmtFrmMacro( Writer& rWrt, const SfxPoolItem& )
+{
+ return rWrt;
+}
+#endif
+
+static Writer& OutRTF_SwFmtCol( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = ((SwRTFWriter&)rWrt);
+ if( rRTFWrt.pFlyFmt && rRTFWrt.bRTFFlySyntax )
+ return rWrt;
+
+ const SwFmtCol& rCol = (const SwFmtCol&)rHt;
+ const SwColumns& rColumns = rCol.GetColumns();
+
+ USHORT nCols = rColumns.Count();
+ if( 1 < nCols )
+ {
+ // dann besorge mal die Seitenbreite ohne Raender !!
+ const SwFrmFmt* pFmt;
+
+ if( rRTFWrt.pFlyFmt )
+ pFmt = rRTFWrt.pFlyFmt;
+ else if( rRTFWrt.pAktPageDesc )
+ pFmt = &rRTFWrt.pAktPageDesc->GetMaster();
+ else
+ pFmt = &rWrt.pDoc->GetPageDesc(0).GetMaster();
+
+ const SvxLRSpaceItem& rLR = pFmt->GetLRSpace();
+
+ USHORT nPageSize = pFmt->GetFrmSize().GetWidth() -
+ rLR.GetLeft() - rLR.GetRight();
+
+ rWrt.Strm() << sRTF_COLS;
+ rWrt.OutLong( nCols );
+
+ if( rCol.IsOrtho() )
+ {
+ rWrt.Strm() << sRTF_COLSX;
+ rWrt.OutLong( rCol.GetGutterWidth( TRUE ) );
+ }
+ else
+ for( USHORT n = 0; n < nCols; )
+ {
+ rWrt.Strm() << sRTF_COLNO;
+ rWrt.OutLong( n+1 );
+
+ rWrt.Strm() << sRTF_COLW;
+ rWrt.OutLong( rCol.CalcPrtColWidth( n, nPageSize ) );
+ if( ++n != nCols )
+ {
+ rWrt.Strm() << sRTF_COLSR;
+ rWrt.OutLong( rColumns[ n-1 ]->GetRight() +
+ rColumns[ n ]->GetLeft() );
+ }
+ }
+ ((SwRTFWriter&)rWrt).bOutFmtAttr = TRUE;
+ }
+ return rWrt;
+}
+
+static Writer& OutRTF_SvxFmtKeep( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SvxFmtKeepItem& rItem = (const SvxFmtKeepItem&)rHt;
+ if( rItem.GetValue() )
+ {
+ rWrt.Strm() << sRTF_KEEPN;
+ ((SwRTFWriter&)rWrt).bOutFmtAttr = TRUE;
+ }
+ return rWrt;
+}
+
+/* File GRFATR.HXX */
+
+static Writer& OutRTF_SwMirrorGrf( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwMirrorGrf & rMirror = (const SwMirrorGrf&)rHt;
+ if( RES_DONT_MIRROR_GRF == rMirror.GetValue() )
+ return rWrt;
+
+ ((SwRTFWriter&)rWrt).bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_IGNORE << sRTF_GRFMIRROR;
+ rWrt.OutULong( rMirror.GetValue() );
+ return rWrt;
+}
+
+static Writer& OutRTF_SwCropGrf( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwCropGrf & rCrop = (const SwCropGrf&)rHt;
+ ByteString aStr;
+ if( rCrop.GetLeft() )
+ ( aStr += sRTF_PICCROPL ) +=
+ ByteString::CreateFromInt32( (short)rCrop.GetLeft() );
+ if( rCrop.GetRight() )
+ ( aStr += sRTF_PICCROPR ) +=
+ ByteString::CreateFromInt32( (short)rCrop.GetRight() );
+ if( rCrop.GetTop() )
+ ( aStr += sRTF_PICCROPT ) +=
+ ByteString::CreateFromInt32( (short)rCrop.GetTop() );
+ if( rCrop.GetBottom() )
+ ( aStr += sRTF_PICCROPB ) +=
+ ByteString::CreateFromInt32( (short)rCrop.GetBottom() );
+ if( aStr.Len() )
+ {
+ ((SwRTFWriter&)rWrt).bOutFmtAttr = TRUE;
+ rWrt.Strm() << aStr.GetBuffer();
+ }
+ return rWrt;
+}
+
+
+
+/* File PARATR.HXX */
+
+static Writer& OutRTF_SwLineSpacing( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SvxLineSpacingItem &rLs = (const SvxLineSpacingItem&)rHt;
+
+ switch( rLs.GetLineSpaceRule() )
+ {
+ case SVX_LINE_SPACE_AUTO:
+ case SVX_LINE_SPACE_FIX:
+ case SVX_LINE_SPACE_MIN:
+ {
+ ((SwRTFWriter&)rWrt).bOutFmtAttr = TRUE;
+ rWrt.Strm() << sRTF_SL;
+ sal_Char cMult = '0';
+ switch( rLs.GetInterLineSpaceRule() )
+ {
+ case SVX_INTER_LINE_SPACE_FIX: // unser Durchschuss
+ // gibt es aber nicht in WW - also wie kommt man an
+ // die MaxLineHeight heran?
+ rWrt.OutLong( (short)rLs.GetInterLineSpace() );
+ break;
+
+ case SVX_INTER_LINE_SPACE_PROP:
+ rWrt.OutLong( (240L * rLs.GetPropLineSpace()) / 100L );
+ cMult = '1';
+ break;
+
+ default:
+ if( SVX_LINE_SPACE_FIX == rLs.GetLineSpaceRule() )
+ rWrt.Strm() << '-';
+
+ rWrt.OutLong( rLs.GetLineHeight() );
+ break;
+ }
+ rWrt.Strm() << sRTF_SLMULT << cMult;
+ }
+ break;
+ }
+ return rWrt;
+}
+
+static Writer& OutRTF_SwAdjust( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SvxAdjustItem & rAdjust = ((const SvxAdjustItem&)rHt);
+ ByteString aAttr( "\\q" );
+ switch( rAdjust.GetAdjust() )
+ {
+ case SVX_ADJUST_LEFT: aAttr += 'l'; break;
+ case SVX_ADJUST_RIGHT: aAttr += 'r'; break;
+ case SVX_ADJUST_BLOCKLINE:
+ case SVX_ADJUST_BLOCK: aAttr += 'j'; break;
+ case SVX_ADJUST_CENTER: aAttr += 'c'; break;
+
+ default:
+ return rWrt; // kein gueltiges Attriut, also returnen
+ }
+ ((SwRTFWriter&)rWrt).bOutFmtAttr = TRUE;
+ rWrt.Strm() << aAttr.GetBuffer();
+ return rWrt;
+}
+
+static Writer& OutRTF_SvxFmtSplit( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SvxFmtSplitItem& rItem = (const SvxFmtSplitItem&)rHt;
+ if( !rItem.GetValue() )
+ {
+ rWrt.Strm() << sRTF_KEEP;
+ ((SwRTFWriter&)rWrt).bOutFmtAttr = TRUE;
+ }
+ return rWrt;
+}
+
+
+#ifdef USED
+static Writer& OutRTF_SwWidows( Writer& rWrt, const SfxPoolItem& )
+{
+ return rWrt;
+}
+#endif
+
+#ifdef USED
+static Writer& OutRTF_SwOrphans( Writer& rWrt, const SfxPoolItem& )
+{
+ return rWrt;
+}
+#endif
+
+
+
+static Writer& OutRTF_SwTabStop( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ const SvxTabStopItem & rTStops = (const SvxTabStopItem&)rHt;
+ long nOffset = rRTFWrt.pAttrSet->GetLRSpace().GetTxtLeft();
+ for( USHORT n = 0; n < rTStops.Count(); n++ )
+ {
+ const SvxTabStop & rTS = rTStops[ n ];
+ if( SVX_TAB_ADJUST_DEFAULT != rTS.GetAdjustment() )
+ {
+ BOOL bOutDecimal = TRUE;
+ const char* pFill = 0;
+ switch( rTS.GetFill() )
+ {
+ case cDfltFillChar:
+ break;
+
+ case '.': pFill = sRTF_TLDOT; break;
+ case '_': pFill = sRTF_TLUL; break;
+ case '-': pFill = sRTF_TLTH; break;
+ case '=': pFill = sRTF_TLEQ; break;
+ default:
+ if( !rRTFWrt.bWriteHelpFmt )
+ {
+ OutComment( rWrt, sRTF_TLSWG, FALSE );
+ rWrt.OutULong( (((USHORT)rTS.GetFill()) << 8 ) +
+ rTS.GetDecimal() )
+ << '}';
+ bOutDecimal = FALSE;
+ }
+ }
+ if( pFill )
+ rWrt.Strm() << pFill;
+
+ if( !rRTFWrt.bWriteHelpFmt && bOutDecimal &&
+ rTS.GetDecimal() != ((SvxTabStopItem&)*GetDfltAttr(
+ RES_PARATR_TABSTOP ))[ 0 ].GetDecimal() )
+ {
+ OutComment( rWrt, sRTF_TLSWG, FALSE );
+ rWrt.OutULong( (((USHORT)rTS.GetFill()) << 8 ) +
+ rTS.GetDecimal() ) << '}';
+ }
+
+ const sal_Char* pAdjStr = 0;
+ switch( rTS.GetAdjustment() )
+ {
+ case SVX_TAB_ADJUST_RIGHT: pAdjStr = sRTF_TQR; break;
+ case SVX_TAB_ADJUST_DECIMAL: pAdjStr = sRTF_TQDEC; break;
+ case SVX_TAB_ADJUST_CENTER: pAdjStr = sRTF_TQC; break;
+ }
+ if( pAdjStr )
+ rWrt.Strm() << pAdjStr;
+ rWrt.Strm() << sRTF_TX;
+ rWrt.OutLong( rTS.GetTabPos() + nOffset );
+ }
+ }
+ rRTFWrt.bOutFmtAttr = TRUE;
+ return rWrt;
+}
+
+static Writer& OutRTF_SwHypenZone( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ if( !((SwRTFWriter&)rWrt).bWriteHelpFmt )
+ {
+ const SvxHyphenZoneItem& rAttr = (const SvxHyphenZoneItem&)rHt;
+
+ USHORT nFlags = rAttr.IsHyphen() ? 1 : 0;
+ if( rAttr.IsPageEnd() ) nFlags += 2;
+
+ OutComment( rWrt, sRTF_HYPHEN, FALSE );
+ rWrt.OutULong( nFlags ) << sRTF_HYPHLEAD;
+ rWrt.OutULong( rAttr.GetMinLead() ) << sRTF_HYPHTRAIL;
+ rWrt.OutULong( rAttr.GetMinTrail() ) << sRTF_HYPHMAX;
+ rWrt.OutULong( rAttr.GetMaxHyphens() ) << '}';
+ }
+ return rWrt;
+}
+
+static Writer& OutRTF_SwNumRule( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwRTFWriter& rRTFWrt = (SwRTFWriter&)rWrt;
+ if( !rRTFWrt.bOutListNumTxt )
+ {
+ const SwNumRuleItem& rAttr = (const SwNumRuleItem&)rHt;
+ USHORT nId;
+ if( rAttr.GetValue().Len() &&
+ USHRT_MAX != (nId = rRTFWrt.GetId( rAttr ) ) )
+ {
+ rWrt.Strm() << sRTF_LS;
+ rWrt.OutULong( nId );
+ rRTFWrt.bOutFmtAttr = TRUE;
+ }
+ }
+ return rWrt;
+}
+
+/*
+ * lege hier die Tabellen fuer die RTF-Funktions-Pointer auf
+ * die Ausgabe-Funktionen an.
+ * Es sind lokale Strukturen, die nur innerhalb der RTF-DLL
+ * bekannt sein muessen.
+ */
+
+SwAttrFnTab aRTFAttrFnTab = {
+/* RES_CHRATR_CASEMAP */ OutRTF_SwCaseMap,
+/* RES_CHRATR_CHARSETCOLOR */ 0,
+/* RES_CHRATR_COLOR */ OutRTF_SwColor,
+/* RES_CHRATR_CONTOUR */ OutRTF_SwContour,
+/* RES_CHRATR_CROSSEDOUT */ OutRTF_SwCrossedOut,
+/* RES_CHRATR_ESCAPEMENT */ OutRTF_SwEscapement,
+/* RES_CHRATR_FONT */ OutRTF_SwFont,
+/* RES_CHRATR_FONTSIZE */ OutRTF_SwSize,
+/* RES_CHRATR_KERNING */ 0, // NOT USED!! OutRTF_SwKerning,
+/* RES_CHRATR_LANGUAGE */ OutRTF_SwLanguage,
+/* RES_CHRATR_POSTURE */ OutRTF_SwPosture,
+/* RES_CHRATR_PROPORTIONALFONTSIZE*/0,
+/* RES_CHRATR_SHADOWED */ OutRTF_SwShadowed,
+/* RES_CHRATR_UNDERLINE */ OutRTF_SwUnderline,
+/* RES_CHRATR_WEIGHT */ OutRTF_SwWeight,
+/* RES_CHRATR_WORDLINEMODE */ 0, // Neu: Wortweises Unter-/Durchstreichen
+/* RES_CHRATR_AUTOKERN */ 0, // Neu: Automatisches Pairkerning
+/* RES_CHRATR_BLINK */ 0, // Neu: Blinkender Text
+/* RES_CHRATR_NOHYPHEN */ 0, // Neu: nicht trennen
+/* RES_CHRATR_NOLINEBREAK */ 0, // Neu: nicht umbrechen
+/* RES_CHRATR_BACKGROUND */ 0, // Neu: Zeichenhintergrund
+/* RES_CHRATR_CJK_FONT */ 0,
+/* RES_CHRATR_CJK_FONTSIZE */ 0,
+/* RES_CHRATR_CJK_LANGUAGE */ 0,
+/* RES_CHRATR_CJK_POSTURE */ 0,
+/* RES_CHRATR_CJK_WEIGHT */ 0,
+/* RES_CHRATR_CTL_FONT */ 0,
+/* RES_CHRATR_CTL_FONTSIZE */ 0,
+/* RES_CHRATR_CTL_LANGUAGE */ 0,
+/* RES_CHRATR_CTL_POSTURE */ 0,
+/* RES_CHRATR_CTL_WEIGHT */ 0,
+/* RES_CHRATR_WRITING_DIRECTION */ 0,
+/* RES_CHRATR_DUMMY2 */ 0,
+/* RES_CHRATR_DUMMY3 */ 0,
+/* RES_CHRATR_DUMMY4 */ 0,
+/* RES_CHRATR_DUMMY5 */ 0,
+/* RES_CHRATR_DUMMY1 */ 0, // Dummy:
+
+/* RES_TXTATR_INETFMT */ OutRTF_SwTxtINetFmt, // Dummy
+/* RES_TXTATR_NOHYPHEN */ 0, // Dummy
+/* RES_TXTATR_REFMARK*/ 0, // NOT USED!! OutRTF_SwRefMark,
+/* RES_TXTATR_TOXMARK */ 0, // NOT USED!! OutRTF_SwTOXMark,
+/* RES_TXTATR_CHARFMT */ OutRTF_SwTxtCharFmt,
+/* RES_TXTATR_TWO_LINES */ 0,
+/* RES_TXTATR_CJK_RUBY */ 0,
+/* RES_TXTATR_UNKNOWN_CONTAINER */ 0,
+/* RES_TXTATR_DUMMY5 */ 0,
+/* RES_TXTATR_DUMMY6 */ 0,
+
+/* RES_TXTATR_FIELD */ OutRTF_SwField,
+/* RES_TXTATR_FLYCNT */ OutRTF_SwFlyCntnt,
+/* RES_TXTATR_FTN */ OutRTF_SwFtn,
+/* RES_TXTATR_SOFTHYPH */ 0, // old attr. - coded now by character
+/* RES_TXTATR_HARDBLANK*/ OutRTF_SwHardBlank,
+/* RES_TXTATR_DUMMY1 */ 0, // Dummy:
+/* RES_TXTATR_DUMMY2 */ 0, // Dummy:
+
+/* RES_PARATR_LINESPACING */ OutRTF_SwLineSpacing,
+/* RES_PARATR_ADJUST */ OutRTF_SwAdjust,
+/* RES_PARATR_SPLIT */ OutRTF_SvxFmtSplit,
+/* RES_PARATR_WIDOWS */ 0, // NOT USED!! OutRTF_SwWidows,
+/* RES_PARATR_ORPHANS */ 0, // NOT USED!! OutRTF_SwOrphans,
+/* RES_PARATR_TABSTOP */ OutRTF_SwTabStop,
+/* RES_PARATR_HYPHENZONE*/ OutRTF_SwHypenZone,
+/* RES_PARATR_DROP */ 0,
+/* RES_PARATR_REGISTER */ 0, // neu: Registerhaltigkeit
+/* RES_PARATR_NUMRULE */ OutRTF_SwNumRule,
+/* RES_PARATR_DUMMY2 */ 0, // Dummy:
+
+/* RES_FILL_ORDER */ 0, // NOT USED!! OutRTF_SwFillOrder,
+/* RES_FRM_SIZE */ OutRTF_SwFrmSize,
+/* RES_PAPER_BIN */ 0, // NOT USED!! OutRTF_SwFmtPaperBin,
+/* RES_LR_SPACE */ OutRTF_SwFmtLRSpace,
+/* RES_UL_SPACE */ OutRTF_SwFmtULSpace,
+/* RES_PAGEDESC */ 0,
+/* RES_BREAK */ 0,
+/* RES_CNTNT */ 0,
+/* RES_HEADER */ OutRTF_SwFmtHeader,
+/* RES_FOOTER */ OutRTF_SwFmtFooter,
+/* RES_PRINT */ OutRTF_SwFmtPrint,
+/* RES_OPAQUE */ OutRTF_SwFmtOpaque,
+/* RES_PROTECT */ OutRTF_SwFmtProtect,
+/* RES_SURROUND */ OutRTF_SwFmtSurround,
+/* RES_VERT_ORIENT */ OutRTF_SwFmtVertOrient,
+/* RES_HORI_ORIENT */ OutRTF_SwFmtHoriOrient,
+/* RES_ANCHOR */ OutRTF_SwFmtAnchor,
+/* RES_BACKGROUND */ OutRTF_SwFmtBackground,
+/* RES_BOX */ OutRTF_SwFmtBox,
+/* RES_SHADOW */ OutRTF_SwFmtShadow,
+/* RES_FRMMACRO */ 0, // NOT USED!! OutRTF_SwFmtFrmMacro,
+/* RES_COL */ OutRTF_SwFmtCol,
+/* RES_KEEP */ OutRTF_SvxFmtKeep,
+/* RES_URL */ 0, // URL
+/* RES_EDIT_IN_READONLY */ 0,
+/* RES_LAYOUT_SPLIT */ 0,
+/* RES_FRMATR_DUMMY1 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY2 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY3 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY4 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY5 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY6 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY7 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY8 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY9 */ 0, // Dummy:
+
+/* RES_GRFATR_MIRRORGRF */ OutRTF_SwMirrorGrf,
+/* RES_GRFATR_CROPGRF */ OutRTF_SwCropGrf,
+/* RES_GRFATR_ROTATION */ 0,
+/* RES_GRFATR_LUMINANCE */ 0,
+/* RES_GRFATR_CONTRAST */ 0,
+/* RES_GRFATR_CHANNELR */ 0,
+/* RES_GRFATR_CHANNELG */ 0,
+/* RES_GRFATR_CHANNELB */ 0,
+/* RES_GRFATR_GAMMA */ 0,
+/* RES_GRFATR_INVERT */ 0,
+/* RES_GRFATR_TRANSPARENCY */ 0,
+/* RES_GRFATR_DRWAMODE */ 0,
+/* RES_GRFATR_DUMMY1 */ 0,
+/* RES_GRFATR_DUMMY2 */ 0,
+/* RES_GRFATR_DUMMY3 */ 0,
+/* RES_GRFATR_DUMMY4 */ 0,
+/* RES_GRFATR_DUMMY5 */ 0,
+
+/* RES_BOXATR_FORMAT */ 0,
+/* RES_BOXATR_FORMULA */ 0,
+/* RES_BOXATR_VALUE */ 0,
+
+/* RES_UNKNOWNATR_CONTAINER */ 0
+};
+
+SwNodeFnTab aRTFNodeFnTab = {
+/* RES_TXTNODE */ OutRTF_SwTxtNode,
+/* RES_GRFNODE */ OutRTF_SwGrfNode,
+/* RES_OLENODE */ OutRTF_SwOLENode
+};
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/rtf/rtfatr.cxx,v 1.1.1.1 2000-09-18 17:14:56 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.344 2000/09/18 16:04:50 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.343 2000/08/30 16:46:03 jp
+ use CharClass instead of international
+
+ Revision 1.342 2000/08/25 12:28:03 jp
+ Graphic Crop-Attribut exported to SVX
+
+ Revision 1.341 2000/08/18 13:02:02 jp
+ don't export escaped URLs
+
+ Revision 1.340 2000/08/04 10:48:05 jp
+ Soft-/HardHyphens & HardBlanks changed from attribute to unicode character; use rtfout functions
+
+ Revision 1.339 2000/07/31 19:24:34 jp
+ new attributes for CJK/CTL and graphic
+
+ Revision 1.338 2000/07/20 13:16:22 jp
+ change old txtatr-character to the two new characters
+
+ Revision 1.337 2000/06/26 12:53:08 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.336 2000/05/09 17:22:42 jp
+ Changes for Unicode
+
+ Revision 1.335 2000/03/24 14:10:38 jp
+ Bug #74428#: LRSpace - GetLeft returns the right value for pagedescs
+
+ Revision 1.334 2000/03/15 13:50:27 jp
+ Bug #74070#: WriteTable - look for colspans
+
+ Revision 1.333 2000/03/03 15:21:02 os
+ StarView remainders removed
+
+ Revision 1.332 2000/02/24 18:33:21 jp
+ Bug #73098#: read & write list entries without number
+
+ Revision 1.331 2000/02/11 14:37:51 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.330 2000/01/25 20:11:50 jp
+ Bug #72146#: OutSwChar - write the original character code if it can not be converted
+
+ Revision 1.329 2000/01/07 12:26:49 jp
+ Task #71411#: read/write NoBalancedColumns
+
+ Revision 1.328 1999/12/08 13:51:01 jp
+ Task #70258#: textattr for XMLAttrContainer
+
+*************************************************************************/
+
+
diff --git a/sw/source/filter/rtf/rtffld.cxx b/sw/source/filter/rtf/rtffld.cxx
new file mode 100644
index 000000000000..c2e7c41c399b
--- /dev/null
+++ b/sw/source/filter/rtf/rtffld.cxx
@@ -0,0 +1,960 @@
+/*************************************************************************
+ *
+ * $RCSfile: rtffld.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <ctype.h>
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _GRAPH_HXX //autogen
+#include <vcl/graph.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _RTFTOKEN_H
+#include <svtools/rtftoken.h>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+
+#ifndef _FMTFLD_HXX //autogen
+#include <fmtfld.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _SWPARRTF_HXX
+#include <swparrtf.hxx>
+#endif
+#ifndef _TXATBASE_HXX
+#include <txatbase.hxx>
+#endif
+#ifndef _DBFLD_HXX
+#include <dbfld.hxx>
+#endif
+#ifndef _USRFLD_HXX
+#include <usrfld.hxx>
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _FLDDAT_HXX
+#include <flddat.hxx>
+#endif
+
+
+// bestimme, ob es sich um ein IMPORT/TOC - Feld handelt.
+// return: 0 - weder noch,
+// 1 - TOC
+// 2 - IMPORT
+// 3 - INDEX
+enum RTF_FLD_TYPES {
+ RTFFLD_UNKNOWN = 0,
+ RTFFLD_TOC,
+ RTFFLD_IMPORT,
+ RTFFLD_INDEX,
+ RTFFLD_SYMBOL,
+ RTFFLD_PAGE,
+ RTFFLD_DATE,
+ RTFFLD_DATA,
+ RTFFLD_MERGEFLD,
+ RTFFLD_HYPERLINK
+};
+
+static RTF_FLD_TYPES _WhichFld( String& rName, String& rNext )
+{
+ // Strings sind PascalStrings; Laenge steht an 1. Stellen, dadurch wird
+ // sich der Aufruf von strlen erspart!!!
+ sal_Char __READONLY_DATA sTOC[]= "\3toc";
+ sal_Char __READONLY_DATA sIMPORT[]= "\6import";
+ sal_Char __READONLY_DATA sINDEX[]= "\5index";
+ sal_Char __READONLY_DATA sSYMBOL[]= "\6symbol";
+ sal_Char __READONLY_DATA sPAGE[]= "\4page";
+ sal_Char __READONLY_DATA sDATE[]= "\4date";
+ sal_Char __READONLY_DATA sDATA[]= "\4data";
+ sal_Char __READONLY_DATA sMERGEFLD[]= "\10mergefield";
+ sal_Char __READONLY_DATA sIMPORT2[]= "\16includepicture";
+ sal_Char __READONLY_DATA sHYPERLINK[]= "\x9hyperlink";
+
+ struct _Dummy_RTF_FLD_TYPES
+ {
+ RTF_FLD_TYPES eFldType;
+ const sal_Char* pFldNm;
+ };
+ __READONLY_DATA _Dummy_RTF_FLD_TYPES aFldNmArr[ RTFFLD_HYPERLINK+1 ] = {
+ RTFFLD_TOC, sTOC,
+ RTFFLD_IMPORT, sIMPORT,
+ RTFFLD_INDEX, sINDEX,
+ RTFFLD_SYMBOL, sSYMBOL,
+ RTFFLD_PAGE, sPAGE,
+ RTFFLD_DATE, sDATE,
+ RTFFLD_DATA, sDATA,
+ RTFFLD_MERGEFLD, sMERGEFLD,
+ RTFFLD_IMPORT, sIMPORT2,
+ RTFFLD_HYPERLINK, sHYPERLINK
+ };
+
+
+ if( !rName.Len() )
+ return RTFFLD_UNKNOWN;
+
+ String sNm( rName );
+ sNm = sNm.EraseLeadingChars().GetToken(0, ' ');
+ ASSERT( sNm.Len(), "Feldname hat keine Laenge!" );
+ if( !sNm.Len() )
+ return RTFFLD_UNKNOWN;
+
+ xub_StrLen nTokenStt = rName.Search( sNm );
+ sNm.ToLowerAscii();
+
+ for( int n = 0; n < sizeof( aFldNmArr ) / sizeof( aFldNmArr[0]); ++n )
+ {
+ const sal_Char* pCmp = aFldNmArr[n].pFldNm;
+ int nLen = *pCmp++;
+ xub_StrLen nFndPos = sNm.SearchAscii( pCmp );
+ if( STRING_NOTFOUND != nFndPos &&
+ ( !nFndPos || !isalpha(sNm.GetChar( nFndPos-1 )) ) &&
+ ( nFndPos+nLen == sNm.Len() || !isalpha(sNm.GetChar(nFndPos+nLen) ) ) )
+ {
+// rName = sNm.Copy( nFndPos, nLen );
+ rName = rName.Copy( nFndPos, nLen );
+ nFndPos += nTokenStt + nLen;
+ while( rNext.GetChar( nFndPos ) == ' ' ) ++nFndPos;
+ rNext.Erase( 0, nFndPos );
+ rNext.EraseTrailingChars();
+ return aFldNmArr[n].eFldType;
+ }
+ }
+ return RTFFLD_UNKNOWN; // nichts gefunden.
+}
+
+static USHORT CheckNumberFmtStr( const String& rNStr )
+{
+ // zur Kontrolle, falls jemand meint, neue Werte zufuegen zu muessen
+#define NUMBERTAB_SZ 8
+ sal_Char __READONLY_DATA
+ sNType0[] = "\10ALPHABETIC", /* CHARS_UPPER_LETTER*/
+ sNType1[] = "\10alphabetic", /* CHARS_LOWER_LETTER*/
+ sNType2[] = "\5ROMAN", /* ROMAN_UPPER */
+ sNType3[] = "\5roman", /* ROMAN_LOWER */
+ sNType4[] = "\6ARABIC", /* ARABIC */
+ sNType5[] = "\4NONE", /* NUMBER_NONE */
+ sNType6[] = "\4CHAR", /* CHAR_SPECIAL */
+ sNType7[] = "\4PAGE"; /* PAGEDESC */
+ static const sal_Char* __READONLY_DATA aNumberTypeTab[ NUMBERTAB_SZ ] =
+ {
+ sNType0, sNType1, sNType2, sNType3, sNType4,
+ sNType5, sNType6, sNType7
+ };
+
+
+ for( USHORT n = SVX_NUM_CHARS_UPPER_LETTER; n <= SVX_NUM_PAGEDESC; n++ )
+ {
+ const sal_Char* pCmp = aNumberTypeTab[ n ];
+ int nLen = *pCmp++;
+ if( rNStr.EqualsAscii( pCmp, 0, nLen ))
+ return 2 <= n ? n : (n + SVX_NUM_CHARS_UPPER_LETTER_N);
+ }
+ return SVX_NUM_PAGEDESC; // default-Wert
+}
+
+extern void sw3io_ConvertFromOldField( SwDoc& rDoc, USHORT& rWhich,
+ USHORT& rSubType, ULONG &rFmt,
+ USHORT nVersion );
+
+class RtfFieldSwitch
+{
+ String sParam;
+ xub_StrLen nCurPos;
+public:
+ RtfFieldSwitch( const String& rParam );
+ sal_Unicode GetSwitch( String& rParam );
+
+ BOOL IsAtEnd() const { return nCurPos >= sParam.Len(); }
+};
+
+RtfFieldSwitch::RtfFieldSwitch( const String& rParam )
+ : sParam( rParam ), nCurPos( 0 )
+{
+ sParam.EraseTrailingChars().EraseLeadingChars();
+}
+
+sal_Unicode RtfFieldSwitch::GetSwitch( String& rParam )
+{
+ // beginnt ein Schalter?
+ sal_Unicode c, cKey = 0;
+ if( '\\' == (c = sParam.GetChar( nCurPos )) )
+ {
+ if( '\\' == ( c = sParam.GetChar( ++nCurPos )) )
+ c = sParam.GetChar( ++nCurPos );
+
+ cKey = c;
+
+ while( ++nCurPos < sParam.Len() &&
+ ' ' == ( c = sParam.GetChar( nCurPos )) )
+ ;
+ }
+
+ // dann alles in Hochkommatas oder bis zum naechsten // als
+ // Param returnen
+ USHORT nOffset;
+ if( '"' != c && '\'' != c )
+ c = '\\', nOffset = 0;
+ else
+ nOffset = 1;
+
+ sParam.Erase( 0, nCurPos + nOffset );
+ rParam = sParam.GetToken( 0, c );
+ sParam.Erase( 0, rParam.Len() + nOffset ).EraseLeadingChars();
+ if( '\\' == c )
+ rParam.EraseTrailingChars();
+ nCurPos = 0;
+
+ return cKey;
+}
+
+int SwRTFParser::MakeFieldInst( String& rFieldStr )
+{
+ // sicher den Original-String fuer die FeldNamen (User/Datenbank)
+ String aSaveStr( rFieldStr );
+ SwFieldType * pFldType;
+ xub_StrLen nPos = 0;
+ USHORT nSubType;
+ int nRet;
+
+ switch( nRet = _WhichFld( rFieldStr, aSaveStr ) )
+ {
+ case RTFFLD_IMPORT:
+ {
+//JP 11.03.96: vertraegt sich nicht so ganz mit Internet!
+// if( STRING_NOTFOUND != ( nPos = aSaveStr.Search( '.' )))
+// aSaveStr.Erase( nPos+4 );
+
+ if( aSaveStr.Len() )
+ {
+ sal_Unicode c = aSaveStr.GetChar( 0 );
+ if( '"' == c || '\'' == c )
+ {
+ aSaveStr.Erase( 0, 1 );
+ aSaveStr = aSaveStr.GetToken( 0, c );
+ }
+
+ rFieldStr = INetURLObject::RelToAbs( aSaveStr );
+ }
+// SkipGroup(); // ueberlese den Rest
+ }
+ break;
+
+ case RTFFLD_PAGE:
+ {
+ pFldType = pDoc->GetSysFldType( RES_PAGENUMBERFLD );
+ SwPageNumberField aPF( (SwPageNumberFieldType*)pFldType,
+ PG_RANDOM, SVX_NUM_ARABIC );
+ if( STRING_NOTFOUND != ( nPos = aSaveStr.SearchAscii( "\\*" )) )
+ {
+ nPos += 2;
+ while( aSaveStr.GetChar(nPos) == ' ' ) nPos++;
+ aSaveStr.Erase( 0, nPos );
+
+ // steht jetzt geanu auf dem Format-Namen
+ aPF.ChangeFormat( CheckNumberFmtStr( aSaveStr ));
+ }
+ pDoc->Insert( *pPam, SwFmtFld( aPF ) );
+ SkipGroup(); // ueberlese den Rest
+ }
+ break;
+ case RTFFLD_DATE:
+ {
+ if( STRING_NOTFOUND == ( nPos = aSaveStr.SearchAscii( "\\@" )) )
+ {
+ // es fehlt die Format - Angabe: defaulten auf Datum
+ pFldType = pDoc->GetSysFldType( RES_DATETIMEFLD );
+ pDoc->Insert( *pPam, SwFmtFld( SwDateTimeField(
+ (SwDateTimeFieldType*)pFldType, DATEFLD )));
+ }
+ else
+ {
+ // versuche aus dem Formatstring zu erkennen, ob es ein
+ // Datum oder Zeit oder Datum & Zeit Field ist
+ // nur das Format interressiert
+ aSaveStr.Erase( 0, aSaveStr.Search( '\"' )+1 );
+ // alles hinter dem Format interressiert auch nicht mehr.
+ aSaveStr.Erase( aSaveStr.Search( '\"' ) );
+ aSaveStr.SearchAndReplaceAscii( "AM", aEmptyStr );
+ aSaveStr.SearchAndReplaceAscii( "PM", aEmptyStr );
+
+ xub_StrLen nDPos = aSaveStr.Search( 'M' ), // M -> Datum
+ nTPos = aSaveStr.Search( 'H' ); // H -> 24h
+ if( STRING_NOTFOUND == nTPos )
+ nTPos = aSaveStr.Search( 'h' ); // h -> 12h
+
+ SwField *pTFld = 0, *pDFld = 0;
+
+ if( STRING_NOTFOUND != nTPos )
+ {
+ pFldType = pDoc->GetSysFldType( RES_DATETIMEFLD );
+ pTFld = new SwDateTimeField( (SwDateTimeFieldType*)pFldType, TIMEFLD );
+ ((SwDateTimeField*)pTFld)->ChangeFormat(
+ 'H' == aSaveStr.GetChar( nTPos )
+ ? TF_SSMM_24
+ : TF_SSMM_12);
+ }
+
+ if( STRING_NOTFOUND != nDPos ) // Datum ?
+ {
+ static SwDateFormat aDateA[16] = {
+ DF_SHORT, DF_LMON, DF_LDAYMON, DF_LDAYMON,
+ DF_SCENT, DF_LDAYMON, DF_LDAYMON, DF_LDAYMON,
+ DF_SHORT, DF_LMON, DF_LDAYMONTH, DF_LDAYMONTH,
+ DF_SCENT, DF_LDAYMONTH, DF_LDAYMONTH, DF_LDAYMONTH
+ };
+ // t, tt, T, TT -> no day of week
+ // ttt, tttt, TTT, TTTT -> day of week
+ BOOL bDayOfWeek = STRING_NOTFOUND !=
+ aSaveStr.SearchAscii( "ttt" ) ||
+ STRING_NOTFOUND !=
+ aSaveStr.SearchAscii( "TTT" ) ||
+ STRING_NOTFOUND !=
+ aSaveStr.SearchAscii( "ddd" ) ||
+ STRING_NOTFOUND !=
+ aSaveStr.SearchAscii( "DDD" );
+ // M, MM -> numeric month
+ // MMM, MMMM -> text. month
+ BOOL bLitMonth = STRING_NOTFOUND !=
+ aSaveStr.SearchAscii( "MMM" );
+ // MMMM -> full month
+ BOOL bFullMonth = STRING_NOTFOUND !=
+ aSaveStr.SearchAscii( "MMMM" );
+ // jj, JJ -> 2-col-year
+ // jjjj, JJJJ -> 4-col-year
+ BOOL bFullYear = STRING_NOTFOUND !=
+ aSaveStr.SearchAscii( "jjj" ) ||
+ STRING_NOTFOUND !=
+ aSaveStr.SearchAscii( "JJJ" ) ||
+ STRING_NOTFOUND !=
+ aSaveStr.SearchAscii( "yyy" ) ||
+ STRING_NOTFOUND !=
+ aSaveStr.SearchAscii( "YYY" );
+
+ USHORT i = ( bLitMonth & 1 ) |
+ ( ( bDayOfWeek & 1 ) << 1 ) |
+ ( ( bFullYear & 1 ) << 2 ) |
+ ( ( bFullMonth & 1 ) << 3 );
+
+ pFldType = pDoc->GetSysFldType( RES_DATETIMEFLD );
+
+ nSubType = DATEFLD;
+ USHORT nWhich = RES_DATEFLD;
+ ULONG nFormat = aDateA[ i ];
+ sw3io_ConvertFromOldField( *pDoc, nWhich, nSubType, nFormat, 0x0110 );
+ pDFld = new SwDateTimeField( (SwDateTimeFieldType*)pFldType, DATEFLD, nFormat );
+ }
+
+ // Zeit kommt vor Date, alos Feld-Pointer swappen
+ if( nTPos < nDPos )
+ {
+ SwField* pTmp = pTFld;
+ pTFld = pDFld;
+ pDFld = pTmp;
+ }
+
+ if( pDFld )
+ {
+ pDoc->Insert( *pPam, SwFmtFld( *pDFld ));
+ delete pDFld;
+ }
+ if( pTFld )
+ {
+ pDoc->Insert( *pPam, SwFmtFld( *pTFld ));
+ delete pTFld;
+ }
+ }
+ SkipGroup(); // ueberlese den Rest
+ }
+ break;
+ case RTFFLD_DATA:
+ {
+ // Datenbank-FileName: nur der Filename interressiert
+ // Zur Zeit werden nur SDF-Files verarbeitet, also suche nach
+ // der Extension
+
+ // im SWG geben die DATA Felder den Namen der Datenbank
+ // an. Dieser kann als Field oder als DBInfo interpretiert
+ // werden:
+ // \\data -> Datenbank-Name als Field
+ // DATA -> Datenbank-Info
+ BOOL bField = rFieldStr.GetChar( 0 ) != 'D';
+
+ // nur der Name interressiert
+ if( STRING_NOTFOUND != (nPos = aSaveStr.Search( '.' )) )
+ aSaveStr.Erase( nPos );
+
+ if( bField )
+ {
+ pFldType = pDoc->GetSysFldType( RES_DBNAMEFLD );
+ pDoc->Insert( *pPam, SwFmtFld( SwDBNameField(
+ (SwDBNameFieldType*)pFldType, aEmptyStr ) ));
+ }
+ else
+ pDoc->ChgDBName( aSaveStr ); // MS: Keine DBInfo verwenden
+ SkipGroup(); // ueberlese den Rest
+ }
+ break;
+ case RTFFLD_MERGEFLD:
+ {
+ // ein Datenbank - Feld: nur der Name interressiert
+ // bis zum Ende vom String ist das der Feldname
+ SwDBFieldType aTmp( pDoc, aSaveStr, aEmptyStr ); // Hack(OM): Erstmal Leerstring
+ SwDBField aDBFld( (SwDBFieldType*)pDoc->InsertFldType( aTmp ));
+
+ aDBFld.ChangeFormat( UF_STRING );
+ pDoc->Insert( *pPam, SwFmtFld( aDBFld ));
+ SkipGroup(); // ueberlese den Rest
+ }
+ break;
+
+ case RTFFLD_SYMBOL:
+ {
+ // loesche fuehrende Blanks
+ if( IsNewGroup() ) GetAttrSet();
+ SetNewGroup( TRUE );
+
+ SfxItemSet& rSet = GetAttrSet();
+
+ BOOL bCharIns = FALSE;
+ RtfFieldSwitch aRFS( aSaveStr );
+ while( !aRFS.IsAtEnd() )
+ {
+ String sParam;
+ sal_Unicode cKey = aRFS.GetSwitch( sParam );
+ if( sParam.Len() )
+ switch( cKey )
+ {
+ case 0:
+ if( !bCharIns )
+ {
+ sal_Unicode nChar = sParam.ToInt32();
+ if( nChar )
+ {
+ pDoc->Insert( *pPam, nChar );
+ bCharIns = TRUE;
+ }
+ }
+ break;
+
+ case 'f': case 'F':
+ // Font setzen
+ {
+ SvxRTFFontTbl& rTbl = GetFontTbl();
+ for( Font* pFont = rTbl.First(); pFont;
+ pFont = rTbl.Next() )
+ if( pFont->GetName() == sParam )
+ {
+ rSet.Put( SvxFontItem(
+ pFont->GetFamily(),
+ sParam,
+ pFont->GetStyleName(),
+ pFont->GetPitch(),
+ pFont->GetCharSet(),
+ RES_CHRATR_FONT ));
+ break;
+ }
+ }
+ break;
+ case 'h': case 'H':
+ //??
+ break;
+ case 's': case 'S':
+ // Fontsize setzen
+ {
+ USHORT nVal = sParam.ToInt32();
+ nVal *= 20;
+ rSet.Put( SvxFontHeightItem( (const USHORT)nVal,
+ 100, RES_CHRATR_FONTSIZE ));
+ }
+ break;
+ }
+ }
+
+ if( !IsNewGroup() ) AttrGroupEnd();
+ SetNewGroup( FALSE );
+
+ SkipGroup(); // ueberlese den Rest
+ }
+ break;
+
+ case RTFFLD_HYPERLINK:
+ rFieldStr.Erase();
+ if( aSaveStr.Len() )
+ {
+ // return String ist URL, # Mark, \1 Frame
+ String sMark, sFrame;
+ RtfFieldSwitch aRFS( aSaveStr );
+ while( !aRFS.IsAtEnd() )
+ {
+ String sParam;
+ sal_Unicode cKey = aRFS.GetSwitch( sParam );
+ if( sParam.Len() )
+ switch( cKey )
+ {
+ case 0:
+ if( !rFieldStr.Len() )
+ rFieldStr = INetURLObject::RelToAbs( sParam );
+ break;
+
+ case 'l': case 'L': sMark = sParam; break;
+ case 't': case 'T': sFrame = sParam; break;
+ }
+ }
+
+ if( sMark.Len() )
+ ( rFieldStr += INET_MARK_TOKEN ) += sMark;
+ if( sFrame.Len() )
+ ( rFieldStr += '\1' ) += sFrame;
+ }
+ break;
+
+ case RTFFLD_TOC:
+ case RTFFLD_INDEX:
+ break;
+
+ default:
+ {
+ // keines von den bekannten Feldern, also eine neues UserField
+ aSaveStr.EraseLeadingChars().EraseTrailingChars();
+ SwUserFieldType aTmp( pDoc, aSaveStr );
+ SwUserField aUFld( (SwUserFieldType*)pDoc->InsertFldType( aTmp ));
+ aUFld.ChangeFormat( UF_STRING );
+ pDoc->Insert( *pPam, SwFmtFld( aUFld ));
+ nRet = RTFFLD_UNKNOWN;
+ }
+ break;
+ }
+ return nRet;
+}
+
+void SwRTFParser::ReadField()
+{
+ int nRet = 0;
+ int nOpenBrakets = 1; // die erste wurde schon vorher erkannt !!
+ int bFldInst = FALSE, bFldRslt = FALSE;
+ String sFieldStr, sFieldNm;
+ BYTE cCh;
+
+ while( nOpenBrakets && IsParserWorking() )
+ switch( GetNextToken() )
+ {
+ case '}':
+ {
+ --nOpenBrakets;
+ if( 1 != nOpenBrakets || !bFldInst )
+ break;
+
+ if( !bFldRslt )
+ {
+ // FieldInst vollstaendig eingelesen, was ist es denn?
+ nRet = MakeFieldInst( sFieldStr );
+
+ // erstmal Index/Inhaltsverzeichniss ueberspringen
+ // und als normalen Text einfuegen. Spaeter mal auch dem
+ // SwPaM darum aufspannen.
+ if( RTFFLD_TOC == nRet || RTFFLD_INDEX == nRet )
+ return;
+
+ if( RTFFLD_IMPORT == nRet || RTFFLD_HYPERLINK == nRet )
+ sFieldNm = sFieldStr;
+
+ sFieldStr.Erase();
+ }
+ else if( RTFFLD_UNKNOWN == nRet ) // FieldResult wurde eingelesen
+ {
+ // der String ist der Wert vom Feld
+// sFieldStr.Insert( '"', 0 );
+// sFieldStr.Insert( '"' );
+
+ // besorge mal das Feld:
+ SwTxtNode* pTxtNd = pPam->GetPoint()->nNode.GetNode().GetTxtNode();
+ SwTxtAttr* pFldAttr = pTxtNd->GetTxtAttr(
+ pPam->GetPoint()->nContent.GetIndex()-1 );
+
+ ((SwUserFieldType*)pFldAttr->GetFld().GetFld()->GetTyp())->
+ SetContent( sFieldStr );
+ }
+ else if( sFieldNm.Len() )
+ {
+ if( RTFFLD_IMPORT == nRet )
+ {
+ // Grafik einfuegen
+ InsPicture( sFieldNm );
+ nRet = INT_MAX;
+ }
+ else if( RTFFLD_HYPERLINK == nRet && sFieldStr.Len() )
+ {
+ // im FieldStr steht der anzuzeigenden Text, im
+ pDoc->Insert( *pPam, sFieldStr );
+
+ String sTarget( sFieldNm.GetToken( 1, '\1' ));
+ if( sTarget.Len() )
+ sFieldNm.Erase( sFieldNm.Len() - sTarget.Len() -1 );
+
+ // oder ueber den Stack setzen??
+ pPam->SetMark();
+ pPam->GetMark()->nContent -= sFieldStr.Len();
+ pDoc->Insert( *pPam,
+ SwFmtINetFmt( sFieldNm, sTarget ),
+ SETATTR_DONTEXPAND );
+ pPam->DeleteMark();
+ }
+ }
+ }
+ break;
+
+ case '{':
+ if( RTF_IGNOREFLAG != GetNextToken() )
+ SkipToken( -1 );
+ // Unknown und alle bekannten nicht ausgewerteten Gruppen
+ // sofort ueberspringen
+ else if( RTF_UNKNOWNCONTROL != GetNextToken() )
+ SkipToken( -2 );
+ else
+ {
+ // gleich herausfiltern
+ ReadUnknownData();
+ if( '}' != GetNextToken() )
+ eState = SVPAR_ERROR;
+ break;
+ }
+ ++nOpenBrakets;
+ break;
+
+ case RTF_DATAFIELD:
+ case RTF_FIELD:
+ SkipGroup();
+ break;
+
+ case RTF_FLDINST:
+ bFldInst = TRUE;
+ break;
+
+ case RTF_FLDRSLT:
+ bFldRslt = TRUE;
+ break;
+
+ case RTF_U:
+ {
+ if( nTokenValue )
+ sFieldStr += (sal_Unicode)nTokenValue;
+ else
+ sFieldStr += aToken;
+ }
+ break;
+
+ case RTF_LINE: cCh = '\n'; goto INSINGLECHAR;
+ case RTF_TAB: cCh = '\t'; goto INSINGLECHAR;
+ case RTF_SUBENTRYINDEX: cCh = ':'; goto INSINGLECHAR;
+ case RTF_EMDASH: cCh = 151; goto INSINGLECHAR;
+ case RTF_ENDASH: cCh = 150; goto INSINGLECHAR;
+ case RTF_BULLET: cCh = 149; goto INSINGLECHAR;
+ case RTF_LQUOTE: cCh = 145; goto INSINGLECHAR;
+ case RTF_RQUOTE: cCh = 146; goto INSINGLECHAR;
+ case RTF_LDBLQUOTE: cCh = 147; goto INSINGLECHAR;
+ case RTF_RDBLQUOTE: cCh = 148; goto INSINGLECHAR;
+INSINGLECHAR:
+ sFieldStr += ByteString::ConvertToUnicode( cCh,
+ RTL_TEXTENCODING_MS_1252 );
+ break;
+
+ // kein Break, aToken wird als Text gesetzt
+ case RTF_TEXTTOKEN:
+ sFieldStr += aToken;
+ break;
+
+ case RTF_PICT: // Pic-Daten einlesen!
+ if( RTFFLD_IMPORT == nRet )
+ {
+ Graphic aGrf;
+ SvxRTFPictureType aPicType;
+ if( ReadBmpData( aGrf, aPicType ) )
+ {
+ InsPicture( sFieldNm, &aGrf, &aPicType );
+ nRet = INT_MAX;
+ }
+ SkipGroup();
+ }
+ break;
+
+ case RTF_BKMKSTART:
+ case RTF_BKMKEND:
+ case RTF_BKMK_KEY:
+ case RTF_XE:
+ case RTF_TC:
+ case RTF_NEXTFILE:
+ case RTF_TEMPLATE:
+ case RTF_SHPRSLT:
+ SkipGroup();
+ break;
+ }
+
+ if( RTFFLD_IMPORT == nRet && sFieldNm.Len() )
+ {
+ // Grafik einfuegen
+ InsPicture( sFieldNm );
+ }
+
+ SkipToken( -1 ); // die schliesende Klammer wird "oben" ausgewertet
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/rtf/rtffld.cxx,v 1.1.1.1 2000-09-18 17:14:56 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.51 2000/09/18 16:04:50 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.50 2000/05/09 17:22:46 jp
+ Changes for Unicode
+
+ Revision 1.49 2000/03/23 19:01:03 jp
+ Bug #74426#: ReadField: skip over some groups
+
+ Revision 1.48 2000/03/10 15:56:55 jp
+ Bug #74100#: read W2000 rtf-format
+
+ Revision 1.47 2000/02/17 13:46:51 jp
+ Bug #73098#: Import / Export problems
+
+ Revision 1.46 2000/02/11 14:37:57 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.45 2000/01/25 20:12:58 jp
+ Bug #72146#: read UniCode character
+
+ Revision 1.44 1999/03/03 13:59:16 JP
+ Bug #62735#: Symbolfelder komplett lesen
+
+
+ Rev 1.43 03 Mar 1999 14:59:16 JP
+ Bug #62735#: Symbolfelder komplett lesen
+
+ Rev 1.42 16 Feb 1999 11:57:16 JP
+ Task #61942#: Hyperlinks einlesen
+
+ Rev 1.41 17 Nov 1998 10:45:58 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.40 11 Aug 1998 12:16:32 JP
+ Bug #54796#: fehlender Numerierunstyp und Bugfixes
+
+ Rev 1.39 06 Aug 1998 21:43:28 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.38 13 May 1998 18:07:18 JP
+ PageField: auf PageDesc Format defaulten
+
+ Rev 1.37 20 Feb 1998 13:36:30 MA
+ headerfiles gewandert
+
+ Rev 1.36 13 Feb 1998 19:22:02 MIB
+ Felder: Schnittstellen-Anpassung fuer Konvertierungs-Funktionen
+
+ Rev 1.35 27 Jan 1998 19:00:38 HR
+ HP9000 Krams entfernt
+
+ Rev 1.34 26 Nov 1997 15:05:34 MA
+ headerfiles
+
+ Rev 1.33 25 Nov 1997 12:03:02 TJ
+ include svrtf.hxx
+
+ Rev 1.32 03 Nov 1997 14:10:34 MA
+ precomp entfernt
+
+ Rev 1.31 15 Oct 1997 11:59:44 OM
+ Feldumstellung
+
+ Rev 1.30 14 Oct 1997 14:12:06 OM
+ Feldumstellung
+
+ Rev 1.29 09 Oct 1997 16:16:44 OM
+ Feldumstellung
+
+ Rev 1.28 29 Sep 1997 12:14:38 OM
+ Feldumstellung
+
+ Rev 1.27 24 Sep 1997 15:23:20 OM
+ Feldumstellung
+
+ Rev 1.26 15 Aug 1997 12:51:44 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.25 12 Nov 1996 18:28:12 sdo
+ GCC-Parser
+
+ Rev 1.24 29 Oct 1996 12:58:48 JP
+ am Doc ist das NodesArray nur noch ueber Get..() zugaenglich
+
+ Rev 1.23 23 Oct 1996 19:49:08 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.22 28 Jun 1996 15:07:26 MA
+ includes
+
+ Rev 1.21 19 Jun 1996 11:57:52 MA
+ headerfiles 323
+
+ Rev 1.20 10 Jun 1996 11:23:38 JP
+ ImportFeld: jetzt auch mit dem neuen WinWord 6.0 Format
+
+ Rev 1.19 30 Apr 1996 09:36:28 OM
+ Mehrere Datenbanken pro Dok
+
+ Rev 1.17 11 Apr 1996 17:31:38 JP
+ Umstellung - RelToAbs/AbsToRel
+
+ Rev 1.16 10 Apr 1996 18:59:00 JP
+ Umstellung relative/absolute Pfade fuer Grafiken
+
+ Rev 1.15 11 Mar 1996 23:08:24 JP
+ InsPicture: keine Extension abschneiden
+
+ Rev 1.14 11 Jan 1996 22:04:00 JP
+ Date/Time - Felder: die Formate richtig lesen/schreiben
+
+ Rev 1.13 13 Dec 1995 21:04:10 JP
+ Warnings entfernt
+
+ Rev 1.12 24 Nov 1995 17:24:10 OM
+ PCH->PRECOMPILED
+
+ Rev 1.11 07 Nov 1995 20:06:20 JP
+ Readonly-Daten hinter segeofglobals verschoben
+
+ Rev 1.10 21 Aug 1995 21:30:38 JP
+ svxitems-HeaderFile entfernt
+
+ Rev 1.9 18 Aug 1995 19:05:50 mk
+ HP9000 (MDA)
+
+ Rev 1.8 09 Aug 1995 18:15:02 JP
+ Daten vors SEG_EOFGLOBAL verschoben
+
+ Rev 1.7 03 Apr 1995 20:51:30 JP
+ fuer PreComp.Header eingerichtet
+
+ Rev 1.6 13 Mar 1995 14:56:20 KH
+ Mac jetzt richtig
+
+ Rev 1.5 08 Feb 1995 09:43:08 JP
+ alten RTF-Parser entfernt, Sw_RTF -> SwRTF
+
+ Rev 1.4 18 Jan 1995 21:05:12 ER
+ fld.hxx -> *fld*.hxx
+
+ Rev 1.3 11 Jan 1995 19:36:28 JP
+ RTF-Reader fertiggestellt
+
+ Rev 1.2 09 Jan 1995 19:35:30 JP
+ Symbolzeichen: kein Wert, nicht einfuegen
+
+ Rev 1.1 06 Jan 1995 12:07:08 JP
+ originalen Feldnamen returnen
+
+ Rev 1.0 22 Dec 1994 17:34:36 JP
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/rtf/rtffly.cxx b/sw/source/filter/rtf/rtffly.cxx
new file mode 100644
index 000000000000..ac7f12190150
--- /dev/null
+++ b/sw/source/filter/rtf/rtffly.cxx
@@ -0,0 +1,1745 @@
+/*************************************************************************
+ *
+ * $RCSfile: rtffly.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _CACHESTR_HXX //autogen
+#include <tools/cachestr.hxx>
+#endif
+#ifndef _RTFTOKEN_H
+#include <svtools/rtftoken.h>
+#endif
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _SVX_PRNTITEM_HXX //autogen
+#include <svx/prntitem.hxx>
+#endif
+#ifndef _SVX_OPAQITEM_HXX //autogen
+#include <svx/opaqitem.hxx>
+#endif
+#ifndef _SVX_PROTITEM_HXX //autogen
+#include <svx/protitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen wg. SvxBoxItem
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _SWPARRTF_HXX
+#include <swparrtf.hxx>
+#endif
+#ifndef _GRFATR_HXX
+#include <grfatr.hxx>
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _RTF_HXX
+#include <rtf.hxx>
+#endif
+#ifndef _NDGRF_HXX
+#include <ndgrf.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+#ifndef _TXTFLCNT_HXX
+#include <txtflcnt.hxx>
+#endif
+#ifndef _FMTFLCNT_HXX
+#include <fmtflcnt.hxx>
+#endif
+#ifndef _FLTINI_HXX
+#include <fltini.hxx>
+#endif
+
+
+#define ANCHOR(p) ((SwFmtAnchor*)p)
+
+// steht in shellio.hxx
+extern SwCntntNode* GoNextNds( SwNodeIndex * pIdx, FASTBOOL bChk );
+
+SV_IMPL_PTRARR( SwFlySaveArr, SwFlySave* )
+
+inline const SwFmtFrmSize GetFrmSize(const SfxItemSet& rSet, BOOL bInP=TRUE)
+ { return (const SwFmtFrmSize&)rSet.Get( RES_FRM_SIZE,bInP); }
+
+
+/* */
+
+
+SwFlySave::SwFlySave( const SwPaM& rPam, SfxItemSet& rSet )
+ : aFlySet( rSet ),
+ nSttNd( rPam.GetPoint()->nNode ), nEndNd( nSttNd ),
+ nEndCnt( 0 ), nPageWidth( ATT_MIN_SIZE ),
+ nDropLines( 0 ), nDropAnchor( 0 )
+{
+}
+
+int SwFlySave::IsEqualFly( const SwPaM& rPos, SfxItemSet& rSet )
+{
+ if( rSet.Count() != aFlySet.Count() || nDropAnchor )
+ return FALSE;
+
+ // nur TextNodes zusammenfassen
+ if( nSttNd == nEndNd && nEndNd.GetNode().IsNoTxtNode() )
+ return FALSE;
+
+ // teste auf gleiche / naechste Position
+ if( rPos.GetPoint()->nNode.GetIndex() == nEndNd.GetIndex() )
+ {
+ if( 1 < (rPos.GetPoint()->nContent.GetIndex() - nEndCnt) )
+ return FALSE;
+ }
+ else if( rPos.GetPoint()->nContent.GetIndex() )
+ return FALSE;
+ else
+ {
+ SwNodeIndex aIdx( nEndNd );
+ SwCntntNode* pCNd = rPos.GetDoc()->GetNodes()[ aIdx ]->GetCntntNode();
+ if( !GoNextNds( &aIdx, TRUE ) ||
+ aIdx.GetIndex() != rPos.GetPoint()->nNode.GetIndex() ||
+ ( pCNd && pCNd->Len() != nEndCnt ))
+ {
+ return FALSE;
+ }
+ }
+
+ if( rSet.Count() )
+ {
+ SfxItemIter aIter( rSet );
+ const SfxPoolItem *pItem, *pCurr = aIter.GetCurItem();
+ while( TRUE )
+ {
+ if( SFX_ITEM_SET != aFlySet.GetItemState( pCurr->Which(),
+ FALSE, &pItem ) ||
+ // Ankerattribute gesondert behandeln
+ ( RES_ANCHOR == pCurr->Which()
+ ? (ANCHOR(pCurr)->GetAnchorId() != ANCHOR(pItem)->GetAnchorId() ||
+ ANCHOR(pCurr)->GetPageNum() != ANCHOR(pItem)->GetPageNum())
+ : *pItem != *pCurr ))
+ return FALSE;
+
+ if( aIter.IsAtEnd() )
+ break;
+ pCurr = aIter.NextItem();
+ }
+ }
+ return TRUE;
+}
+
+void SwFlySave::SetFlySize( const SwTableNode& rTblNd )
+{
+ // sollte der Fly kleiner als diese Tabelle sein, dann
+ // korrigiere diesen (nur bei abs. Angaben!)
+ SwTwips nWidth = rTblNd.GetTable().GetFrmFmt()->GetFrmSize().GetWidth();
+ const SwFmtFrmSize& rSz = GetFrmSize( aFlySet );
+ if( nWidth > rSz.GetWidth() )
+ aFlySet.Put( SwFmtFrmSize( rSz.GetSizeType(), nWidth, rSz.GetHeight() ));
+}
+
+BOOL lcl_HasBreakAttrs( const SwCntntNode& rNd )
+{
+ BOOL bRet = FALSE;
+ const SfxItemSet& rSet = rNd.GetSwAttrSet();
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_BREAK, TRUE, &pItem ) &&
+ SVX_BREAK_NONE != ((SvxFmtBreakItem*)pItem)->GetBreak() )
+ bRet = TRUE;
+ else if( SFX_ITEM_SET == rSet.GetItemState( RES_PAGEDESC, TRUE, &pItem )&&
+ 0 != ((SwFmtPageDesc*)pItem)->GetPageDesc() )
+ bRet = TRUE;
+ return bRet;
+}
+
+
+void lcl_CpyBreakAttrs( SwCntntNode* pSrcNd, SwCntntNode* pDstNd,
+ SwNodeIndex* pNewIdx )
+{
+ SwAttrSet* pSet;
+ if( pSrcNd && pDstNd && 0 != ( pSet = pSrcNd->GetpSwAttrSet() ) )
+ {
+ const SfxPoolItem *pDescItem, *pBreakItem;
+
+ if( SFX_ITEM_SET != pSet->GetItemState( RES_BREAK,
+ FALSE, &pBreakItem ) )
+ pBreakItem = 0;
+
+ if( SFX_ITEM_SET != pSet->GetItemState( RES_PAGEDESC,
+ FALSE, &pDescItem ) )
+ pDescItem = 0;
+
+ if( pDescItem || pBreakItem )
+ {
+ if( lcl_HasBreakAttrs( *pDstNd ))
+ {
+ SwPosition aPos( *pDstNd, SwIndex( pDstNd ));
+ aPos.nNode--;
+ pDstNd->GetDoc()->AppendTxtNode( aPos );
+ if( pNewIdx )
+ *pNewIdx = aPos.nNode;
+
+ SwCntntNode* pOldNd = pDstNd;
+ pDstNd = aPos.nNode.GetNode().GetCntntNode();
+ pDstNd->ChgFmtColl( pOldNd->GetFmtColl() );
+ if( pDstNd->GetpSwAttrSet() )
+ {
+ SfxItemSet aSet( *pDstNd->GetpSwAttrSet() );
+ aSet.ClearItem( RES_BREAK );
+ aSet.ClearItem( RES_PAGEDESC );
+ pDstNd->SetAttr( aSet );
+ }
+ }
+ if( pBreakItem )
+ {
+ pDstNd->SetAttr( *pBreakItem );
+ pSrcNd->ResetAttr( RES_BREAK );
+ }
+ if( pDescItem )
+ {
+ pDstNd->SetAttr( *pDescItem );
+ pSrcNd->ResetAttr( RES_PAGEDESC );
+ }
+ }
+ }
+}
+
+
+void SwRTFParser::SetFlysInDoc()
+{
+ // !! von Oben abarbeiten, CntntPos ist kein Index !
+ SwNodes & rNds = pDoc->GetNodes();
+ SvPtrarr aPrevFmts( 255 < aFlyArr.Count() ? aFlyArr.Count() : 255 );
+ SwFrmFmt* pParent = pDoc->GetFrmFmtFromPool( RES_POOLFRM_FRAME );
+ for( USHORT n = 0; n < aFlyArr.Count(); ++n )
+ {
+ SwFlySave* pFlySave = aFlyArr[ n ];
+
+ ASSERT( !pFlySave->nSttNd.GetNode().FindFlyStartNode(),
+ "Content vom Fly steht in einem Fly" );
+ ASSERT( pFlySave->nSttNd.GetIndex() <= pFlySave->nEndNd.GetIndex(),
+ "Fly hat falschen Bereich" );
+
+ //JP 21.09.98: wenn ein DropCap ist, dann Text im Node belassen, am
+ // Absatz das Absatz Attribut setzen. Ggfs noch die
+ // FontSize zuruecksetzen, damit das DropCap nicht zu
+ // groá wird.
+ if( pFlySave->nDropAnchor )
+ {
+ SwTxtNode* pSttNd = pFlySave->nSttNd.GetNode().GetTxtNode(),
+ * pEndNd = pFlySave->nEndNd.GetNode().GetTxtNode();
+ if( pSttNd && pEndNd &&
+ pSttNd->GetIndex() + 1 == pEndNd->GetIndex() )
+ {
+ BOOL bJoined;
+ {
+ SwPaM aTmp( *pEndNd, 0, *pSttNd, pSttNd->GetTxt().Len() );
+ bJoined = pDoc->DeleteAndJoin( aTmp );
+ }
+ if( bJoined )
+ {
+ SwFmtDrop aDropCap;
+ aDropCap.GetLines() = (BYTE)pFlySave->nDropLines;
+ aDropCap.GetChars() = 1;
+
+ SwIndex aIdx( pEndNd );
+ pEndNd->RstAttr( aIdx, 1, RES_CHRATR_FONTSIZE );
+ pEndNd->SwCntntNode::SetAttr( aDropCap );
+ }
+ }
+ delete pFlySave;
+ continue;
+ }
+
+ // liegt Ende und Start vom Naechsten im gleichen Node, dann muss
+ // gesplittet werden
+ if( n + 1 < aFlyArr.Count() && pFlySave->nEndCnt &&
+ pFlySave->nEndNd == aFlyArr[ n + 1 ]->nSttNd )
+ {
+ SwCntntNode* pCNd = rNds[ pFlySave->nEndNd ]->GetCntntNode();
+ if( pCNd )
+ {
+ SwPosition aPos( pFlySave->nEndNd,
+ SwIndex( pCNd, pFlySave->nEndCnt ));
+ pDoc->SplitNode( aPos );
+ pFlySave->nEndNd--;
+ }
+ else
+ pFlySave->nEndCnt = 0;
+ }
+
+ // verschiebe den Inhalt von diesem Anchor in den Auto-TextBereich
+ // und erzeuge dadurch den richtigen SwG-Rahmen
+ SwNodeRange aRg( pFlySave->nSttNd, 0, pFlySave->nEndNd,
+ (pFlySave->nEndCnt ? 1 : 0) );
+ BOOL bMakeEmptySection = aRg.aStart < aRg.aEnd;
+
+ {
+ // Nur TextNodes koennen in Tabellen stehen !!
+ const SwNode* pNd = &pFlySave->nSttNd.GetNode();
+ if( pNd->IsNoTxtNode() )
+ {
+ // die Size muss noch korrigiert werden!
+ nAktPageDesc = 0; // Standart PageDesc
+ if( SFX_ITEM_SET != pFlySave->aFlySet.GetItemState(
+ RES_FRM_SIZE, FALSE ) )
+ _SetPictureSize( *(SwNoTxtNode*)pNd, aRg.aStart,
+ pFlySave->aFlySet );
+ if( 0 != ( pNd = pNd->FindTableNode() ) )
+ pFlySave->SetFlySize( *(SwTableNode*)pNd );
+ }
+ else
+ {
+ // TabelleNodes beachten
+ BOOL bMoveFromCell = FALSE;
+ pNd = pNd->FindTableNode();
+ if( pNd ) // am Anfang eine Tabelle, -> Bereich auf TabStart
+ {
+ if( pFlySave->nSttNd.GetNode().FindStartNode() ==
+ pFlySave->nEndNd.GetNode().FindStartNode() )
+ {
+ // dann nur den Node verschieben
+ SwNodeIndex& rIdx = pFlySave->nSttNd;
+ if( rIdx.GetNode().EndOfSectionIndex() -
+ rIdx.GetNode().FindStartNode()->GetIndex() ==
+ aRg.aEnd.GetIndex() - aRg.aStart.GetIndex() + 1 )
+ {
+ // dann bliebe kein Node mehr stehen, also
+ // erzeuge eine leere Text Section!
+ bMakeEmptySection = FALSE;
+ }
+ bMoveFromCell = TRUE;
+ }
+ else
+ aRg.aStart = *pNd;
+ }
+
+ if( bMakeEmptySection )
+ {
+ pNd = &aRg.aEnd.GetNode();
+ ULONG nSectEnd = pNd->EndOfSectionIndex();
+ if( !pFlySave->nEndCnt )
+ ++nSectEnd;
+
+ if( !bMoveFromCell && !pNd->IsTableNode() &&
+ 0 != (pNd = pNd->FindTableNode() ) )
+ {
+ const SwNode* pTblBxNd;
+ // Ende der Tabelle ist hinter dieser Box ??
+ if( pNd->EndOfSectionIndex() == nSectEnd )
+ aRg.aEnd = nSectEnd+1;
+ // is the end in the first box of the table, then
+ // move before the table (Bug 67663)
+ else if( 0 != ( pTblBxNd = aRg.aEnd.GetNode().
+ FindTableBoxStartNode()) &&
+ pTblBxNd->GetIndex() - 1 == pNd->GetIndex())
+ aRg.aEnd = *pNd;
+ else
+ {
+ // Tabelle ist noch groesser, also splitte sie hier.
+ rNds.SplitTable( aRg.aEnd, TRUE );
+ aRg.aEnd = pNd->EndOfSectionIndex() + 1;
+ }
+ }
+ }
+ }
+ }
+
+ // vorm verschieben muss sich der Index auf die alte Position
+ // gemerkt werden, der Index wird mit verschoben !!!
+
+ SwNodeIndex aTmpIdx( rNds.GetEndOfAutotext() );
+ SwStartNode* pSttNd = bMakeEmptySection
+ ? rNds.MakeEmptySection( aTmpIdx, SwFlyStartNode )
+ : rNds.MakeTextSection( aTmpIdx, SwFlyStartNode,
+ (SwTxtFmtColl*)pDoc->GetDfltTxtFmtColl() );
+
+ // das ist die Verankerungs-Position (fuers Layout!)
+ pFlySave->nSttNd = aRg.aStart.GetIndex()-1;
+ if( bMakeEmptySection )
+ {
+ // check: the move does not clear the surrounded section. If all
+ // nodes moved away, then create a new TxtNode
+ {
+ SwNodeIndex aPrev( aRg.aStart, -1 );
+ if( aPrev.GetNode().IsStartNode() &&
+ aPrev.GetNode().EndOfSectionNode() == &aRg.aEnd.GetNode())
+ {
+ // create new txtnode, because the section does never be empty
+ pDoc->GetNodes().MakeTxtNode( aRg.aEnd,
+ (SwTxtFmtColl*)pDoc->GetDfltTxtFmtColl() );
+ aRg.aEnd--;
+ }
+ }
+ aTmpIdx = *pSttNd->EndOfSectionNode();
+ pDoc->Move( aRg, aTmpIdx );
+ }
+
+ pFlySave->aFlySet.Put( SwFmtCntnt( pSttNd ));
+
+ CalculateFlySize( pFlySave->aFlySet, pFlySave->nSttNd,
+ pFlySave->nPageWidth );
+
+ // if the section only contains one Node and this has a
+ // border or backgorund, then put it to the frame
+ // Not in our own RTF-Format!
+ if( pSttNd->GetIndex() + 2 == pSttNd->EndOfSectionIndex() &&
+ !bSwPageDesc )
+ {
+ SwTxtNode* pSrcNd = pDoc->GetNodes()[ pSttNd->GetIndex() + 1 ]
+ ->GetTxtNode();
+ if( pSrcNd && pSrcNd->GetpSwAttrSet() )
+ {
+ SfxItemSet aTmpSet( pDoc->GetAttrPool(),
+ RES_BACKGROUND, RES_BOX );
+ aTmpSet.Put( *pSrcNd->GetpSwAttrSet() );
+ if( aTmpSet.Count() )
+ {
+ pFlySave->aFlySet.Put( aTmpSet );
+ pSrcNd->ResetAttr( RES_BACKGROUND, RES_BOX );
+ }
+ }
+ }
+
+ SwFlyFrmFmt* pFmt = pDoc->MakeFlyFrmFmt( aEmptyStr, pParent );
+ pFmt->SetAttr( pFlySave->aFlySet );
+
+ const SwFmtAnchor& rAnchor = pFmt->GetAnchor();
+ if( FLY_IN_CNTNT != rAnchor.GetAnchorId() )
+ {
+ // korrigiere noch den Absatz, ist immer der vorhergehende !
+ // JP 20.09.95: wenn es diesen gibt! (DocAnfang!)
+
+ //JP 02.08.99: that is wrong. The anchor is ever the NEXT!
+ //JP 05.08.99: there are an Bug in the ExportFilter which will
+ // be fixed in the Version 517 - by SWG-Export
+ // the fly will be after the paragraph - but in RTF
+ // the flys will be before the paragraph.
+ if( !bSwPageDesc || 5430 < GetVersionNo() )
+ pFlySave->nSttNd++;
+
+// if( !pFlySave->nSttNd.GetNode().IsCntntNode() )
+ {
+ // Seitenumbrueche in den Bodybereich verschieben!
+ SwCntntNode* pSrcNd = aRg.aStart.GetNode().GetCntntNode();
+ SwCntntNode* pDstNd = pFlySave->nSttNd.GetNode().GetCntntNode();
+ if( !pDstNd )
+ pDstNd = pDoc->GetNodes().GoNext( &pFlySave->nSttNd );
+
+ ::lcl_CpyBreakAttrs( pSrcNd, pDstNd, &pFlySave->nSttNd );
+ }
+
+
+ SwPosition aPos( pFlySave->nSttNd );
+ SwFmtAnchor aAnchor( rAnchor );
+ aAnchor.SetAnchor( &aPos );
+ pFmt->SetAttr( aAnchor );
+
+ // check if the new Frame contains any anchors to previous
+ // flys. This is in RTF not allowed, so move all anchors to
+ // the prev position
+ {
+ ULONG nSttNd = pSttNd->GetIndex(),
+ nEndNd = pSttNd->EndOfSectionIndex();
+ for( USHORT nPrevFmts = aPrevFmts.Count(); nPrevFmts; )
+ {
+ SwFmt* pTmpFmt = (SwFmt*)aPrevFmts[ --nPrevFmts ];
+ const SwFmtAnchor& rAn = pTmpFmt->GetAnchor();
+ ULONG nNd = rAn.GetCntntAnchor()->nNode.GetIndex();
+ if( nSttNd < nNd && nNd < nEndNd )
+ {
+ SwFmtAnchor aAnchor( rAn );
+ aAnchor.SetAnchor( &aPos );
+ pTmpFmt->SetAttr( aAnchor );
+ }
+ else
+ // then forget it
+ aPrevFmts.Remove( nPrevFmts, 1 );
+ }
+
+ void* p = (void*)pFmt;
+ aPrevFmts.Insert( p, aPrevFmts.Count() );
+ }
+ }
+ delete pFlySave;
+ }
+ aFlyArr.Remove( 0, aFlyArr.Count() );
+}
+
+void SwRTFParser::ReadFly( int nToken, SfxItemSet* pSet )
+{
+ // ein Set fuer die FrmFmt-Attribute
+ SfxItemSet aSet( pDoc->GetAttrPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ if( !IsNewDoc() )
+ Reader::ResetFrmFmtAttrs( aSet );
+
+ // der Fly beginnt immer in einem neuen Absatz
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ InsertPara();
+
+ // RTF-Defaults setzen:
+ SwFmtAnchor aAnchor( FLY_PAGE, 1 );
+ SwFmtHoriOrient aHori( 0, HORI_LEFT, /*FRAME*/REL_PG_PRTAREA );
+ SwFmtVertOrient aVert( 0, VERT_TOP, REL_PG_PRTAREA );
+
+ USHORT nCols = USHRT_MAX, nColSpace = USHRT_MAX, nAktCol = 0;
+ SvUShorts aColumns;
+
+ BOOL bChkDropCap = 0 == pSet;
+ USHORT nDropCapLines = 0, nDropCapAnchor = 0;
+ int nOpenBrakets = GetOpenBrakets();
+
+ if( !pSet )
+ pSet = &aSet;
+ else
+ {
+ // die Werte aus dem uebergebenen!
+ aAnchor = (SwFmtAnchor&)pSet->Get( RES_ANCHOR );
+ aHori = (SwFmtHoriOrient&)pSet->Get( RES_HORI_ORIENT );
+ aVert = (SwFmtVertOrient&)pSet->Get( RES_VERT_ORIENT );
+ }
+
+ // dann sammel mal alle Attribute zusammen
+ int bWeiter = TRUE;
+ do {
+ USHORT nVal = USHORT(nTokenValue);
+ switch( nToken )
+ {
+ case RTF_ABSW:
+ {
+ SwFmtFrmSize aSz( ATT_MIN_SIZE, nTokenValue, 0 );
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pSet->GetItemState( RES_FRM_SIZE, TRUE,
+ &pItem ))
+ {
+ aSz.SetSizeType( ((SwFmtFrmSize*)pItem)->GetSizeType() );
+ aSz.SetHeight( ((SwFmtFrmSize*)pItem)->GetHeight() );
+ }
+ if( MINFLY > nTokenValue ) nTokenValue = MINFLY;
+ aSet.Put( aSz );
+ }
+ break;
+ case RTF_ABSH:
+ {
+ SwFmtFrmSize aSz( ATT_MIN_SIZE, 0, MINFLY );
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pSet->GetItemState( RES_FRM_SIZE, TRUE,
+ &pItem ))
+ {
+ aSz.SetWidth( ((SwFmtFrmSize*)pItem)->GetWidth() );
+ }
+
+ if( 0 > nTokenValue )
+ {
+ nTokenValue = -nTokenValue;
+ aSz.SetSizeType( ATT_FIX_SIZE );
+ }
+ if( MINFLY > nTokenValue ) nTokenValue = MINFLY;
+ aSz.SetHeight( nTokenValue );
+ aSet.Put( aSz );
+ }
+ break;
+
+ case RTF_NOWRAP:
+ {
+ pSet->Put( SwFmtSurround( SURROUND_NONE ));
+ }
+ break;
+ case RTF_DXFRTEXT:
+ {
+ SvxULSpaceItem aUL;
+ SvxLRSpaceItem aLR;
+ aUL.SetUpper( nVal ); aUL.SetLower( nVal );
+ aLR.SetLeft( nVal ); aLR.SetRight( nVal );
+ pSet->Put( aUL );
+ pSet->Put( aLR );
+ }
+ break;
+
+ case RTF_DFRMTXTX:
+ {
+ SvxLRSpaceItem aLR;
+ aLR.SetLeft( nVal ); aLR.SetRight( nVal );
+ pSet->Put( aLR );
+ }
+ break;
+ case RTF_DFRMTXTY:
+ {
+ SvxULSpaceItem aUL;
+ aUL.SetUpper( nVal ); aUL.SetLower( nVal );
+ pSet->Put( aUL );
+ }
+ break;
+
+ case RTF_POSNEGX:
+ case RTF_POSX: aHori.SetHoriOrient( HORI_NONE );
+ aHori.SetPos( (long)nTokenValue );
+ break;
+ case RTF_POSXC: aHori.SetHoriOrient( HORI_CENTER ); break;
+ case RTF_POSXI: aHori.SetHoriOrient( HORI_LEFT );
+ aHori.SetPosToggle( TRUE );
+ break;
+ case RTF_POSXO: aHori.SetHoriOrient( HORI_RIGHT );
+ aHori.SetPosToggle( TRUE );
+ break;
+ case RTF_POSXL: aHori.SetHoriOrient( HORI_LEFT ); break;
+ case RTF_POSXR: aHori.SetHoriOrient( HORI_RIGHT ); break;
+
+ case RTF_POSNEGY:
+ case RTF_POSY: aVert.SetVertOrient( VERT_NONE );
+ aVert.SetPos( (long)nTokenValue );
+ break;
+ case RTF_POSYT: aVert.SetVertOrient( VERT_TOP ); break;
+ case RTF_POSYB: aVert.SetVertOrient( VERT_BOTTOM ); break;
+ case RTF_POSYC: aVert.SetVertOrient( VERT_CENTER ); break;
+
+ case RTF_PHMRG: aHori.SetRelationOrient( REL_PG_PRTAREA ); break;
+ case RTF_PVMRG: aVert.SetRelationOrient( REL_PG_PRTAREA ); break;
+ case RTF_PHPG: aHori.SetRelationOrient( REL_PG_FRAME ); break;
+ case RTF_PVPG: aVert.SetRelationOrient( REL_PG_FRAME );break;
+ case RTF_PHCOL: aHori.SetRelationOrient( FRAME ); break;
+ case RTF_PVPARA: aVert.SetRelationOrient( FRAME ); break;
+
+ case RTF_POSYIL:
+ case RTF_ABSLOCK:
+ break;
+
+ case RTF_DROPCAPLI: // Dropcaps !!
+ if( bChkDropCap )
+ {
+ nDropCapLines = USHORT( nTokenValue );
+ if( !nDropCapAnchor )
+ nDropCapAnchor = 1;
+ }
+ break;
+ case RTF_DROPCAPLT:
+ if( bChkDropCap )
+ {
+ nDropCapAnchor = USHORT( nTokenValue );
+ if( !nDropCapLines )
+ nDropCapLines = 3;
+ }
+ break;
+
+
+ // fuer die "alten" Writer - haben die Spaltigkeit falsch heraus-
+ // geschrieben
+ case RTF_COLS: nCols = USHORT( nTokenValue ); break;
+ case RTF_COLSX: nColSpace = USHORT( nTokenValue ); break;
+ case RTF_COLNO:
+ nAktCol = USHORT( nTokenValue );
+ if( RTF_COLW == GetNextToken() )
+ {
+ USHORT nWidth = USHORT( nTokenValue ), nSpace = 0;
+ if( RTF_COLSR == GetNextToken() )
+ nSpace = USHORT( nTokenValue );
+ else
+ SkipToken( -1 ); // wieder zurueck
+
+ if( --nAktCol == ( aColumns.Count() / 2 ) )
+ {
+ aColumns.Insert( nWidth + nSpace, aColumns.Count() );
+ aColumns.Insert( nSpace, aColumns.Count() );
+ }
+ }
+ break;
+
+ case '{':
+ {
+ short nSkip = 0;
+ if( RTF_IGNOREFLAG != ( nToken = GetNextToken() ))
+ {
+ if( RTF_SHADINGDEF == (nToken & ~0xff) )
+ {
+ ReadBackgroundAttr( nToken, aSet );
+ GetNextToken(); // Klammer ueberlesen
+ }
+ else
+ nSkip = -1;
+ }
+ else if( RTF_APOCTL ==
+ ((nToken = GetNextToken() ) & ~(0xff | RTF_SWGDEFS)) )
+ {
+ bReadSwFly = TRUE; // alles kommt in den akt. Fly
+ SvxLRSpaceItem aLR;
+ SvxULSpaceItem aUL;
+ nCols = USHRT_MAX; // neu aufsetzen
+ nColSpace = USHRT_MAX;
+ do {
+ nVal = USHORT(nTokenValue);
+ switch( nToken )
+ {
+ // Swg-Frame-Tokens
+ case RTF_FLYPRINT:
+ {
+ pSet->Put( SvxPrintItem( RES_PRINT, FALSE ));
+ }
+ break;
+ case RTF_FLYOPAQUE:
+ {
+ pSet->Put( SvxOpaqueItem( RES_OPAQUE, FALSE ));
+ }
+ break;
+
+ case RTF_FLYPRTCTD:
+ {
+ RTFProtect aP( (BYTE)nTokenValue );
+ SvxProtectItem aProtectItem;
+ aProtectItem.SetCntntProtect( aP.GetCntnt() );
+ aProtectItem.SetSizeProtect( aP.GetSize() );
+ aProtectItem.SetPosProtect( aP.GetPos() );
+ pSet->Put( aProtectItem );
+ }
+ break;
+
+ case RTF_FLYMAINCNT:
+ {
+ RTFSurround aMC( (BYTE)nTokenValue );
+ SwFmtSurround aSurr( (SwSurround)aMC.GetOrder());
+ if( aMC.GetGoldCut() )
+ aSurr.SetSurround( SURROUND_IDEAL );
+ pSet->Put( aSurr );
+ }
+ break;
+ case RTF_FLYVERT:
+ {
+ RTFVertOrient aVO( nVal );
+ aVert.SetVertOrient( (SwVertOrient)aVO.GetOrient() );
+ aVert.SetRelationOrient( (SwRelationOrient)aVO.GetRelation() );
+ }
+ break;
+ case RTF_FLYHORZ:
+ {
+ RTFHoriOrient aHO( nVal );
+ aHori.SetHoriOrient( (SwHoriOrient)aHO.GetOrient() );
+ aHori.SetRelationOrient( (SwRelationOrient)aHO.GetRelation() );
+ }
+ break;
+ case RTF_FLYOUTLEFT: aLR.SetLeft( nVal ); break;
+ case RTF_FLYOUTRIGHT: aLR.SetRight( nVal ); break;
+ case RTF_FLYOUTUPPER: aUL.SetUpper( nVal ); break;
+ case RTF_FLYOUTLOWER: aUL.SetLower( nVal ); break;
+ case RTF_FLYANCHOR:
+ switch( GetNextToken() )
+ {
+ case RTF_FLY_PAGE:
+ aAnchor.SetType( FLY_PAGE );
+ aAnchor.SetPageNum( USHORT(nTokenValue));
+ aAnchor.SetAnchor( 0 );
+ break;
+
+ case RTF_FLY_CNTNT:
+ {
+ SwNodeIndex aIdx( pPam->GetPoint()->nNode );
+ pDoc->GetNodes().GoPrevious( &aIdx );
+ SwPosition aPos( aIdx );
+ aAnchor.SetType( FLY_AT_CNTNT );
+ aAnchor.SetAnchor( &aPos );
+ }
+ break;
+
+// JP 26.09.94: die Bindung an die Spalte gibt es nicht mehr !!
+// case RTF_FLY_COLUMN:
+ }
+ break;
+ case RTF_COLS: nCols = USHORT( nTokenValue ); break;
+ case RTF_COLSX: nColSpace = USHORT( nTokenValue ); break;
+ case RTF_COLNO:
+ nAktCol = USHORT( nTokenValue );
+ if( RTF_COLW == GetNextToken() )
+ {
+ USHORT nWidth = USHORT( nTokenValue ), nSpace = 0;
+ if( RTF_COLSR == GetNextToken() )
+ nSpace = USHORT( nTokenValue );
+ else
+ SkipToken( -1 ); // wieder zurueck
+
+ if( --nAktCol == ( aColumns.Count() / 2 ) )
+ {
+ aColumns.Insert( nWidth + nSpace, aColumns.Count() );
+ aColumns.Insert( nSpace, aColumns.Count() );
+ }
+ }
+ break;
+
+ case '{':
+ if( RTF_BRDBOX == ( nToken = GetNextToken() ) )
+ ReadBorderAttr( nToken, aSet );
+ else if( RTF_SHADINGDEF == (nToken & ~0xff ) )
+ ReadBackgroundAttr( nToken, aSet );
+ else if( RTF_IGNOREFLAG == nToken )
+ {
+ int bSkipGrp = TRUE;
+ switch( nToken = GetNextToken() )
+ {
+ case RTF_SHADOW:
+ case RTF_BRDBOX:
+ ReadAttr( SkipToken( -2 ), &aSet );
+ bSkipGrp = FALSE;
+ break;
+
+ case RTF_BRDRT:
+ case RTF_BRDRB:
+ case RTF_BRDRR:
+ case RTF_BRDRL:
+ bSkipGrp = FALSE;
+ ReadBorderAttr( SkipToken( -2 ), aSet );
+ break;
+ }
+
+ // keine weitere Klammer mehr ueberlesen!!!
+ if( !bSkipGrp )
+ break;
+
+ SkipGroup();
+ }
+ else
+ SkipGroup();
+ GetNextToken(); // Klammer ueberlesen
+ break;
+ }
+ } while( IsParserWorking() &&
+ '}' != ( nToken = GetNextToken() ));
+
+ if( aUL.GetUpper() || aUL.GetLower() )
+ pSet->Put( aUL );
+ if( aLR.GetLeft() || aLR.GetRight() )
+ pSet->Put( aLR );
+ }
+ else if( RTF_BRDBOX == nToken )
+ ReadBorderAttr( nToken, aSet );
+ else if( RTF_SHADOW == nToken )
+ ReadAttr( SkipToken( -2 ), &aSet );
+ else if( RTF_SHADINGDEF == (nToken & ~0xff ) )
+ ReadBackgroundAttr( nToken, aSet );
+ else if( RTF_UNKNOWNCONTROL == nToken )
+ SkipGroup();
+ else
+ nSkip = -2;
+
+ if( nSkip )
+ {
+ nToken = SkipToken( nSkip );
+ bWeiter = FALSE;
+ }
+ }
+ break;
+
+ default:
+ bWeiter = FALSE;
+ }
+
+ if( bWeiter )
+ nToken = GetNextToken();
+ } while( bWeiter && IsParserWorking() );
+
+ if( !bReadSwFly && ( FRAME == aVert.GetRelationOrient() ||
+ //JP 21.07.99: for Bug 67630 - it read into Header od Footer, set
+ // never the anchor to Page. Because it is then only
+ // on the first used page .
+ ( FLY_PAGE == aAnchor.GetAnchorId() &&
+ pPam->GetPoint()->nNode < pDoc->GetNodes().GetEndOfExtras() &&
+ ( pPam->GetNode()->FindHeaderStartNode() ||
+ pPam->GetNode()->FindFooterStartNode() )) ))
+ aAnchor.SetType( FLY_AT_CNTNT );
+
+ pSet->Put( aAnchor );
+ pSet->Put( aHori );
+ pSet->Put( aVert );
+
+ if( nCols && USHRT_MAX != nCols )
+ {
+ SwFmtCol aCol;
+ if( USHRT_MAX == nColSpace )
+ nColSpace = 720;
+
+ const SvxLRSpaceItem& rLR = (SvxLRSpaceItem&)pSet->Get( RES_LR_SPACE );
+ ULONG nWidth = USHRT_MAX;
+ aCol.Init( nCols, nColSpace, USHORT( nWidth ) );
+ if( nCols == ( aColumns.Count() / 2 ) )
+ {
+ for( USHORT n = 0, i = 0; n < aColumns.Count(); n += 2, ++i )
+ {
+ SwColumn* pCol = aCol.GetColumns()[ i ];
+ ULONG nTmp = aColumns[ n ];
+ nTmp *= USHRT_MAX;
+ nTmp /= nWidth;
+ pCol->SetWishWidth( USHORT(nTmp) );
+/*
+ JP 07.07.95: der Dialog kennt nur eine Breite fuer alle Spalten
+ darum hier nicht weiter beachten
+ nTmp = aColumns[ n+1 ];
+ if( nTmp )
+ pCol->SetRight( USHORT(nTmp) );
+ else
+ pCol->SetRight( 0 );
+ pCol->SetLeft( 0 );
+*/
+ }
+ }
+ pSet->Put( aCol );
+ }
+
+ if( pSet != &aSet ) // wurde der Set uebergeben, dann wars das
+ return ;
+
+ // ein neues FlyFormat anlegen oder das alte benutzen ?
+ // (teste ob es die selben Attribute besitzt!)
+ SwFlySave* pFlySave;
+ USHORT nFlyArrCnt = aFlyArr.Count();
+ if( !nFlyArrCnt ||
+ !( pFlySave = aFlyArr[ nFlyArrCnt-1 ])->IsEqualFly( *pPam, aSet ))
+ {
+ pFlySave = new SwFlySave( *pPam, aSet );
+ Size aPgSize;
+ GetPageSize( aPgSize );
+ pFlySave->nPageWidth = aPgSize.Width();
+
+ if( nDropCapAnchor )
+ {
+ pFlySave->nDropAnchor = nDropCapAnchor;
+ pFlySave->nDropLines = nDropCapLines;
+ }
+ aFlyArr.Insert( pFlySave, nFlyArrCnt++ );
+ }
+
+ SetPardTokenRead( FALSE );
+ const SwTableNode* pTblNd = pPam->GetNode()->FindTableNode();
+
+ while( !IsPardTokenRead() && IsParserWorking() )
+ {
+ if( RTF_PARD == nToken || nOpenBrakets > GetOpenBrakets() )
+ break;
+
+ NextToken( nToken );
+
+ if( !IsPardTokenRead() )
+ {
+ nToken = GetNextToken();
+
+ // BUG 22036: kommt zwischen Fly-Attributen ein unbekanntes,
+ // dann erzeuge nie 2 FlyFrames, sondern fasse
+ // beide zusammen !!!
+ while( RTF_APOCTL == ( nToken & ~(0xff | RTF_SWGDEFS) ))
+ {
+ if( RTF_FLY_INPARA == nToken )
+ break;
+
+ if( RTF_IGNOREFLAG == SkipToken( -1 ) )
+ {
+ if( '{' == SkipToken( -1 ) )
+ nToken = '{';
+ else
+ SkipToken( 2 );
+ }
+ else
+ SkipToken( 1 );
+
+ ReadFly( nToken, &pFlySave->aFlySet );
+ nToken = GetNextToken();
+ }
+ }
+ }
+
+ if( pTblNd && !pPam->GetPoint()->nContent.GetIndex() &&
+ pTblNd->EndOfSectionIndex() + 1 ==
+ pPam->GetPoint()->nNode.GetIndex() )
+ {
+ // nicht mehr in der Tabelle, sondern dahinter ?
+ // Dann aber wieder zurueck in die Tabelle
+ pPam->Move( fnMoveBackward );
+ }
+ else
+ pTblNd = 0;
+
+ // wurde garnichts eingefuegt?
+ if( !pTblNd &&
+ pPam->GetPoint()->nNode == pFlySave->nSttNd &&
+ !pPam->GetPoint()->nContent.GetIndex() )
+ {
+// // dann erzeuge mindestens einen leeren TextNode
+// pDoc->AppendTxtNode(*pPam);
+ // dann zerstoere den FlySave wieder.
+ aFlyArr.DeleteAndDestroy( --nFlyArrCnt );
+
+ }
+ else
+ {
+ FASTBOOL bMovePaM = 0 != pTblNd;
+
+ pFlySave->nEndNd = pPam->GetPoint()->nNode;
+ pFlySave->nEndCnt = pPam->GetPoint()->nContent.GetIndex();
+
+ if( bMovePaM )
+ pPam->Move( fnMoveForward );
+
+ pTblNd = pFlySave->nSttNd.GetNode().FindTableNode();
+ if( pTblNd && !pFlySave->nEndCnt &&
+ pTblNd == pFlySave->nEndNd.GetNode().FindTableNode() )
+ {
+ // dann teste mal, ob das \pard nicht zu spaet kam und
+ // eigentlich in die vorherige Zelle gehoert
+ const SwStartNode* pSttBoxNd = pFlySave->nSttNd.GetNode().
+ FindTableBoxStartNode(),
+ * pEndBoxNd = pFlySave->nEndNd.GetNode().
+ FindTableBoxStartNode();
+ if( pSttBoxNd && pEndBoxNd &&
+ bMovePaM ? ( pSttBoxNd == pEndBoxNd )
+ : ( pSttBoxNd->EndOfSectionIndex() + 1 ==
+ pEndBoxNd->GetIndex() &&
+ pEndBoxNd->GetIndex() + 1 ==
+ pFlySave->nEndNd.GetIndex() ))
+ {
+ // dann gehoert das Ende in die vorherige Box!
+ SwPosition aPos( *pPam->GetPoint() );
+ pPam->GetPoint()->nNode = *pSttBoxNd->EndOfSectionNode();
+ pPam->Move( fnMoveBackward, fnGoNode );
+
+ DelLastNode();
+
+ pPam->GetPoint()->nNode = *pSttBoxNd->EndOfSectionNode();
+ pPam->Move( fnMoveBackward, fnGoNode );
+
+ pFlySave->nEndNd = pPam->GetPoint()->nNode;
+ pFlySave->nEndCnt = pPam->GetPoint()->nContent.GetIndex();
+
+ *pPam->GetPoint() = aPos;
+ }
+ }
+ else if( !bReadSwFly && !pFlySave->nEndCnt &&
+ pFlySave->nSttNd.GetIndex() + 1 == pFlySave->nEndNd.GetIndex() &&
+ pFlySave->nSttNd.GetNode().IsTxtNode() )
+ {
+
+ SwTxtNode* pTxtNd = pFlySave->nSttNd.GetNode().GetTxtNode();
+ SwTxtFlyCnt* pFlyCnt;
+ if( 1 == pTxtNd->GetTxt().Len() &&
+ 0 != ( pFlyCnt = (SwTxtFlyCnt*)pTxtNd->GetTxtAttr(
+ 0, RES_TXTATR_FLYCNT )) &&
+ pFlyCnt->GetFlyCnt().GetFrmFmt() )
+ {
+ // then move the content into the surrounded fly
+ SwFrmFmt* pFlyFmt = pFlyCnt->GetFlyCnt().GetFrmFmt();
+ const SwNodeIndex* pFlySNd = pFlyFmt->GetCntnt().GetCntntIdx();
+ SwNodeRange aRg( *pFlySNd, 1,
+ *pFlySNd->GetNode().EndOfSectionNode(), 0 );
+
+ // merge the itemsets
+ SwFmtFrmSize aSz1( (SwFmtFrmSize&)pFlyFmt->GetAttrSet().
+ Get( RES_FRM_SIZE ));
+ SwFmtFrmSize aSz2( (SwFmtFrmSize&)pFlySave->aFlySet.
+ Get( RES_FRM_SIZE ));
+ // if
+ if( !aRg.aStart.GetNode().IsNoTxtNode() ||
+ !aSz1.GetHeight() || !aSz1.GetWidth() ||
+ !aSz2.GetHeight() || !aSz2.GetWidth() ||
+ ( aSz1.GetHeight() == aSz2.GetHeight() &&
+ aSz1.GetWidth() == aSz2.GetWidth() ) )
+ {
+ SfxItemSet aDiffs( pFlyFmt->GetAttrSet() );
+ aDiffs.ClearItem( RES_ANCHOR );
+ aDiffs.ClearItem( RES_FRM_SIZE );
+ aDiffs.ClearItem( RES_CNTNT );
+ aDiffs.Differentiate( pFlySave->aFlySet );
+ pFlySave->aFlySet.Put( aDiffs );
+
+ BOOL bSet = FALSE;
+ if( aSz1.GetHeight() && !aSz2.GetHeight() )
+ {
+ bSet = TRUE;
+ aSz2.SetHeight( aSz1.GetHeight() );
+ }
+ if( aSz1.GetWidth() && !aSz2.GetWidth() )
+ {
+ bSet = TRUE;
+ aSz2.SetWidth( aSz1.GetWidth() );
+ }
+ if( bSet )
+ pFlySave->aFlySet.Put( aSz2 );
+
+ // move any PageBreak/Desc Attr to the next Para
+ {
+ SwCntntNode* pSrcNd = pFlySave->nSttNd.GetNode().GetCntntNode();
+ SwCntntNode* pDstNd = pFlySave->nEndNd.GetNode().GetCntntNode();
+
+ ::lcl_CpyBreakAttrs( pSrcNd, pDstNd, &pFlySave->nEndNd );
+ }
+
+ // create new txtnode, because the section does never be empty
+ pDoc->GetNodes().MakeTxtNode( aRg.aStart,
+ (SwTxtFmtColl*)pDoc->GetDfltTxtFmtColl() );
+
+ SwNodeIndex aTmp( pFlySave->nSttNd, +1 );
+ pDoc->Move( aRg, aTmp );
+
+ // now delete the redundant txtnode
+ pDoc->GetNodes().Delete( pFlySave->nSttNd, 1 );
+ }
+ }
+ }
+ }
+
+ bReadSwFly = FALSE;
+ SkipToken( -1 );
+}
+
+
+void SwRTFParser::InsPicture( const String& rGrfNm, const Graphic* pGrf,
+ const SvxRTFPictureType* pPicType )
+{
+ // kennzeichen fuer Swg-Dokumente:
+ // (dann ist das FlyFmt fuer die Grafik!)
+ SwGrfNode * pGrfNd;
+ if( bReadSwFly )
+ {
+ // erzeuge nur einen normalen GrafikNode und ersetze diesen gegen
+ // den vorhandenen Textnode
+ SwNodeIndex& rIdx = pPam->GetPoint()->nNode;
+ pGrfNd = pDoc->GetNodes().MakeGrfNode( rIdx,
+ rGrfNm, aEmptyStr, // Name der Graphic !!
+ pGrf,
+ (SwGrfFmtColl*)pDoc->GetDfltGrfFmtColl() );
+
+ if( pGrfAttrSet )
+ pGrfNd->SetAttr( *pGrfAttrSet );
+
+ SwFlySave* pFlySave = aFlyArr[ aFlyArr.Count()-1 ];
+ pFlySave->nSttNd = rIdx.GetIndex() - 1;
+
+ if( 1 < aFlyArr.Count() )
+ {
+ pFlySave = aFlyArr[ aFlyArr.Count() - 2 ];
+ if( pFlySave->nEndNd == rIdx )
+ pFlySave->nEndNd = rIdx.GetIndex() - 1;
+ }
+ }
+ else
+ {
+ // wenn normale RTF-Grafik, dann steht diese im Textfluss !
+ SwAttrSet aFlySet( pDoc->GetAttrPool(), RES_VERT_ORIENT, RES_ANCHOR );
+ const SwPosition* pPos = pPam->GetPoint();
+
+ SwFmtAnchor aAnchor( FLY_IN_CNTNT );
+ aAnchor.SetAnchor( pPos );
+ aFlySet.Put( aAnchor );
+ aFlySet.Put( SwFmtVertOrient( 0, VERT_TOP ));
+
+ SwFrmFmt* pFlyFmt = pDoc->Insert( *pPam,
+ rGrfNm, aEmptyStr, // Name der Graphic !!
+ pGrf,
+ &aFlySet, // Attribute fuer den FlyFrm
+ pGrfAttrSet ); // Attribute fuer die Grafik
+
+ pGrfNd = pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()->
+ GetIndex()+1 ]->GetGrfNode();
+
+ _SetPictureSize( *pGrfNd, pPos->nNode,
+ (SfxItemSet&)pFlyFmt->GetAttrSet(),
+ pPicType );
+ }
+
+ if( pGrfAttrSet )
+ DELETEZ( pGrfAttrSet );
+}
+
+void SwRTFParser::_SetPictureSize( const SwNoTxtNode& rNd,
+ const SwNodeIndex& rAnchor,
+ SfxItemSet& rSet,
+ const SvxRTFPictureType* pPicType )
+{
+ Size aSize( ((SwNoTxtNode&)rNd).GetTwipSize() );
+ if( pPicType )
+ {
+ if( rNd.IsGrfNode() )
+ {
+ if( SvxRTFPictureType::WIN_METAFILE != pPicType->eStyle &&
+ pPicType->nGoalWidth && pPicType->nGoalHeight )
+ {
+ aSize.Width() = pPicType->nGoalWidth;
+ aSize.Height() =pPicType->nGoalHeight;
+ }
+ else if( SvxRTFPictureType::MAC_QUICKDRAW == pPicType->eStyle )
+ {
+ // IMMER auf 72 DPI bezogen, also 1pt == 20 Twip !!
+ aSize.Width() = pPicType->nWidth * 20;
+ aSize.Height() = pPicType->nHeight * 20;
+ }
+ else
+ {
+ // von 100TH_MM nach TWIP umrechenen!
+ aSize.Width() = pPicType->nWidth * 144 / 254;
+ aSize.Height() = pPicType->nHeight * 144 / 254;
+ }
+ ((SwGrfNode&)rNd).SetTwipSize( aSize );
+ }
+
+ if( 100 != pPicType->nScalX )
+ aSize.Width() = (((long)pPicType->nScalX) * ( aSize.Width() -
+ ( pPicType->nCropL + pPicType->nCropR ))) / 100L;
+
+ if( 100 != pPicType->nScalY )
+ aSize.Height() = (((long)pPicType->nScalY) * ( aSize.Height() -
+ ( pPicType->nCropT + pPicType->nCropB ))) / 100L;
+ }
+
+ // sorge dafuer, das der Rahmen nicht groesser als der akt.
+ // Pagedescriptor wird.
+ Size aPgSize;
+ GetPageSize( aPgSize );
+
+ if( aSize.Height() > aPgSize.Height() )
+ aSize.Height() = aPgSize.Height();
+
+ if( aSize.Width() > aPgSize.Width() )
+ aSize.Width() = aPgSize.Width();
+
+ //steht der Fly etwa in einer Tabelle ?
+ const SwNode* pAnchorNd = pDoc->GetNodes()[ rAnchor ];
+ const SwTableNode* pTblNd = pAnchorNd->FindTableNode();
+ if( pTblNd )
+ {
+ // Box feststellen:
+ const SwTableBox* pBox = pTblNd->GetTable().GetTblBox(
+ pAnchorNd->StartOfSectionIndex() );
+ if( pBox )
+ {
+ long nBoxWidth = pBox->GetFrmFmt()->GetFrmSize().GetWidth();
+ if( aSize.Width() > nBoxWidth )
+ aSize.Width() = nBoxWidth;
+ }
+ }
+
+ // min. Werte einhalten !!
+ if( aSize.Width() < /*2268*/MINFLY )
+ aSize.Width() = /*2268*/MINFLY;
+ if( aSize.Height() < MINFLY)
+ aSize.Height() = MINFLY;
+
+ if( pPicType )
+ {
+ BOOL bChg = FALSE;
+ SwCropGrf aCrop;
+
+/*
+ JP 28.07.99: Bug 67800 - no crop by MAC_QUICKDRAW. At time i dont know why
+ it has been coded. But this has used for any
+ RTF-File, but i dont found them.
+ if( SvxRTFPictureType::MAC_QUICKDRAW == pPicType->eStyle )
+ {
+ // evt. ein wenig Croppen ??
+ // IMMER auf 72 DPI bezogen, also 1pt == 20 Twip !!
+ long nTmp = pPicType->nWidth * 20;
+ if( nTmp != aSize.Width() )
+ {
+ // in der Breite (also rechts) croppen
+ aCrop.Right() = nTmp - aSize.Width();
+ aSize.Width() = nTmp;
+ bChg = TRUE;
+ }
+
+ nTmp = pPicType->nHeight * 20;
+ if( nTmp != aSize.Height() )
+ {
+ // in der Hoehe (also unten) croppen
+ aCrop.Bottom() = nTmp - aSize.Height();
+ aSize.Height() = nTmp;
+ bChg = TRUE;
+ }
+ }
+*/
+ if( pPicType->nCropT )
+ aCrop.SetTop( pPicType->nCropT ), bChg = TRUE;
+ if( pPicType->nCropB )
+ aCrop.SetBottom( pPicType->nCropB ), bChg = TRUE;
+ if( pPicType->nCropL )
+ aCrop.SetLeft( pPicType->nCropL ), bChg = TRUE;
+ if( pPicType->nCropR )
+ aCrop.SetRight( pPicType->nCropR ), bChg = TRUE;
+
+ if( bChg )
+ {
+ // dann mal an die CropWerte an die GrafikSize anpassen.
+ ((SwNoTxtNode&)rNd).SetAttr( aCrop );
+ }
+ }
+ rSet.Put( SwFmtFrmSize( ATT_FIX_SIZE, aSize.Width(), aSize.Height() ));
+}
+
+void SwRTFParser::GetPageSize( Size& rSize )
+{
+ const SwFrmFmt& rPgFmt = pDoc->GetPageDesc(nAktPageDesc).GetMaster();
+
+ const SwFmtFrmSize& rSz = rPgFmt.GetFrmSize();
+ const SvxLRSpaceItem& rLR = rPgFmt.GetLRSpace();
+ const SvxULSpaceItem& rUL = rPgFmt.GetULSpace();
+ const SwFmtCol& rCol = rPgFmt.GetCol();
+
+ rSize.Width() = rSz.GetWidth() - rLR.GetLeft() - rLR.GetRight();
+ rSize.Height() = rSz.GetHeight() - rUL.GetUpper() - rUL.GetLower();
+
+ if( 1 < rCol.GetNumCols() )
+ {
+ rSize.Width() /= rCol.GetNumCols();
+ rSize.Height() /= rCol.GetNumCols();
+ }
+}
+
+void __EXPORT SwRTFParser::ReadBitmapData()
+{
+ Graphic aGrf;
+ SvxRTFPictureType aPicType;
+ if( ReadBmpData( aGrf, aPicType ) )
+ InsPicture( aEmptyStr, &aGrf, &aPicType );
+}
+
+#ifdef READ_OLE_OBJECT
+void __EXPORT SwRTFParser::ReadOLEData()
+{
+ SvCacheStream aTmpFile( 0xA000 );
+ Graphic aGrf;
+ SvxRTFPictureType aPicType, aOleType;
+
+ int nToken, bValidOle = TRUE, bWeiter = TRUE;
+ int nOpenBrakets = 1; // die erste wurde schon vorher erkannt !!
+
+ String* pStr = 0;
+ String sObjClass, sObjName, sObjData;
+
+ while( nOpenBrakets && IsParserWorking() && bWeiter && bValidOle )
+ {
+ nToken = GetNextToken();
+ USHORT nVal = USHORT( nTokenValue );
+ switch( nToken )
+ {
+ case '}': --nOpenBrakets; pStr = 0; break;
+ case '{':
+ {
+ if( RTF_IGNOREFLAG != GetNextToken() )
+ nToken = SkipToken( -1 );
+ else if( RTF_UNKNOWNCONTROL != GetNextToken() )
+ nToken = SkipToken( -2 );
+ else
+ {
+ // gleich herausfiltern
+ ReadUnknownData();
+ nToken = GetNextToken();
+ if( '}' != nToken )
+ eState = SVPAR_ERROR;
+ break;
+ }
+ ++nOpenBrakets;
+ }
+ break;
+
+ case RTF_OBJECT:
+ case RTF_OBJEMB: // default ist embedded
+ case RTF_LINKSELF: // ??
+ case RTF_OBJLOCK: // ??
+ case RTF_OBJUPDATE: // ??
+ case RTF_OBJTIME: // ??
+ case RTF_OBJSETSIZE:
+ case RTF_OBJALIGN:
+ case RTF_OBJTRANSY:
+ case RTF_OBJATTPH:
+ break;
+
+ case RTF_OBJLINK: // ?? welche Daten sind das ??
+ case RTF_OBJAUTLINK: // ?? -""- ??
+ case RTF_OBJSUB:
+ case RTF_OBJPUB:
+ case RTF_OBJICEMB:
+ case RTF_OBJOCX:
+ case RTF_OBJHTML:
+ case RTF_OBJALIAS:
+ case RTF_OBJSECT:
+ bValidOle = FALSE; // diese Typen koennen wir nicht
+ break;
+
+ case RTF_OBJCLASS:
+ // Daten lesen
+ pStr = &sObjClass;
+ break;
+
+ case RTF_OBJNAME:
+ // Daten lesen
+ pStr = &sObjName;
+ break;
+
+ case RTF_OBJDATA:
+ pStr = &sObjData;
+ break;
+
+ case RTF_RESULT:
+ {
+ // hier weitermachen, wenn das OLE-Object ungueltig ist
+ bWeiter = FALSE;
+ }
+ break;
+ case RTF_RSLTBMP: // diese sollten wir ignorieren
+ case RTF_RSLTMERGE:
+ case RTF_RSLTPICT:
+ case RTF_RSLTRTF:
+ case RTF_RSLTTXT:
+ break;
+
+ case RTF_OBJW: aOleType.nWidth = nVal; break;
+ case RTF_OBJH: aOleType.nHeight = nVal; break;
+ case RTF_OBJCROPT: aOleType.nCropT = (short)nTokenValue; break;
+ case RTF_OBJCROPB: aOleType.nCropB = (short)nTokenValue; break;
+ case RTF_OBJCROPL: aOleType.nCropL = (short)nTokenValue; break;
+ case RTF_OBJCROPR: aOleType.nCropR = (short)nTokenValue; break;
+ case RTF_OBJSCALEX: aOleType.nScalX = nVal; break;
+ case RTF_OBJSCALEY: aOleType.nScalY = nVal; break;
+
+ case RTF_TEXTTOKEN:
+ if( 1 < nOpenBrakets && pStr )
+ {
+ if( pStr == &sObjData )
+ {
+ xub_StrLen nHexLen = HexToBin( aToken );
+ if( STRING_NOTFOUND != nHexLen )
+ bValidOle = FALSE;
+ else
+ {
+ aTmpFile.Write( (sal_Char*)aToken.GetBuffer(), nHexLen );
+ bValidOle = 0 == aTmpFile.GetError();
+ }
+ }
+ else
+ *pStr += aToken;
+ }
+ break;
+ }
+ }
+
+ if( bValidOle )
+ {
+ bValidOle = FALSE; // erstmal
+ }
+
+ if( !bWeiter ) // dann stehen wir noch im Result
+ {
+ // ist das Ole-Object Ok?
+ // -> dann solange SkipGroup rufen, bis zur letzten
+ // schliessenden Klammer
+ // ansonsten alle Token verarbeiten, bis zur letzten
+ // schliessenden Klammer
+
+ bWeiter = TRUE;
+ while( nOpenBrakets && IsParserWorking() && bWeiter )
+ {
+ switch( nToken = GetNextToken() )
+ {
+ case '}': --nOpenBrakets; break;
+ case '{': ++nOpenBrakets; break;
+ }
+ if( nOpenBrakets && !bValidOle )
+ NextToken( nToken );
+ }
+ }
+
+ if( !bValidOle && '}' != nToken )
+ SkipGroup();
+
+ SkipToken( -1 ); // die schliesende Klammer wird "oben" ausgewertet
+}
+#endif
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/rtf/rtffly.cxx,v 1.1.1.1 2000-09-18 17:14:56 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.86 2000/09/18 16:04:50 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.85 2000/08/25 12:27:59 jp
+ Graphic Crop-Attribut exported to SVX
+
+ Revision 1.84 2000/05/09 17:22:49 jp
+ Changes for Unicode
+
+ Revision 1.83 2000/04/14 14:06:17 khz
+ Task #70451# use CalculateFlySize() for WW frames with 'auto'width
+
+ Revision 1.82 1999/12/13 13:17:43 jp
+ Bug #70652#: read tokens posnegx/y
+
+ Revision 1.81 1999/08/19 10:33:32 JP
+ Bug #68304#: by windows metafile ignore the picgoal size, dont delete sourrounded flys if the size unequal
+
+
+ Rev 1.80 19 Aug 1999 12:33:32 JP
+ Bug #68304#: by windows metafile ignore the picgoal size, dont delete sourrounded flys if the size unequal
+
+ Rev 1.79 09 Aug 1999 17:37:48 JP
+ read owne border of flyframes
+
+ Rev 1.78 05 Aug 1999 23:04:16 JP
+ Bug #67974#: SetFlysInDoc - anchor to next or cur paragraph
+
+ Rev 1.77 03 Aug 1999 19:46:44 JP
+ Bug #68007#,#67978#: changes for import of flys from interleave/WP7/Aplixware
+
+ Rev 1.76 28 Jul 1999 14:21:32 JP
+ Bug #67800#: set no crop by MAC-Pictures, if the size not equal
+
+ Rev 1.75 21 Jul 1999 18:27:02 JP
+ Bug #67630#,#67663#: changes for read of flys
+
+ Rev 1.74 08 Jul 1999 21:24:24 JP
+ has an APO no framesize, then get from the txtnode the min/max size
+
+ Rev 1.73 17 Jun 1999 14:46:20 JP
+ Bug #66301#: SetFlyInDoc - create new Node if the 'anchor' Node has pagebreak attrs
+
+ Rev 1.72 19 Apr 1999 12:48:44 JP
+ Vorbereitungen fuer OLE-Objecte in RTF lesen (anstoss ist Bug #60140#)
+
+ Rev 1.71 24 Mar 1999 14:48:58 JP
+ Bug #63882#: Flys in/mit Tabellen korrekt lesen
+
+ Rev 1.70 19 Nov 1998 22:05:58 JP
+ Bug #59697#: Token ABSLOCK ignorieren, inner/out richtig behandeln
+
+ Rev 1.69 21 Sep 1998 17:16:14 JP
+ DropCaps unterstuetzen
+
+ Rev 1.68 27 Jul 1998 14:57:06 JP
+ Bug #54001#: Wert vom AbsH an der Size setzen
+
+ Rev 1.67 06 Jul 1998 13:36:00 MH
+ int. comp. error
+
+ Rev 1.66 13 May 1998 18:16:20 JP
+ CheckSize: nicht mit undefiniertem Pointer arbeiten
+
+ Rev 1.65 12 May 1998 15:51:20 JP
+ rund um Flys/DrawObjs im Doc/FESh umgestellt/optimiert
+
+ Rev 1.64 07 May 1998 15:40:08 JP
+ MacPict Grafiken haben Point und keine MM100 angaben
+
+ Rev 1.63 08 Apr 1998 14:28:34 RG
+ C40_INSERT ging unter unxsols nicht
+
+ Rev 1.62 20 Feb 1998 13:36:32 MA
+ headerfiles gewandert
+
+ Rev 1.61 17 Feb 1998 12:24:54 RG
+ Mac: sysdep.hxx raus
+
+ Rev 1.60 11 Feb 1998 14:07:16 JP
+ kleinere Bugs behoben bei Rahmen & Tabellen
+
+ Rev 1.59 29 Jan 1998 21:35:24 JP
+ GetEndOfIcons ersetzt durch GetEndOfExtras, das auf GetEndOfRedlines mappt
+
+ Rev 1.58 25 Nov 1997 15:11:30 JP
+ Headerfiles
+
+ Rev 1.57 20 Nov 1997 12:16:50 AMA
+ Opt. SwSurround: GoldCut jetzt als Enum; nicht implementierte Enums entfernt
+
+ Rev 1.56 03 Nov 1997 14:10:36 MA
+ precomp entfernt
+
+ Rev 1.55 30 Oct 1997 17:49:32 AMA
+ Chg: Kein AutoFlag mehr an Break bzw. PageDesc-Attributen
+
+ Rev 1.54 09 Oct 1997 14:27:50 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.53 15 Aug 1997 12:51:44 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.52 13 Aug 1997 19:18:30 JP
+ Bug #41892#: ReadFly - nur bei RTF-Absatzbindung ggfs. auf die Seienbind. umschalten
+
+ Rev 1.51 13 Aug 1997 18:35:02 JP
+ Bug #42480#: spaltige Rahmen kennt RTF nicht, nur wir
+
+ Rev 1.50 11 Aug 1997 17:49:34 OS
+ Header-Umstellung
+
+ Rev 1.49 07 Aug 1997 15:06:24 OM
+ Headerfile-Umstellung
+
+ Rev 1.48 22 May 1997 20:39:54 JP
+ Bug #40118#: kein Inhalt im Fly -> verwerfen
+
+ Rev 1.47 07 Jan 1997 16:53:22 JP
+ Bug #34627#: GrafikGroesse setzen
+
+ Rev 1.46 06 Jan 1997 19:04:10 JP
+ IsEqual: Flys zusammenfassen, wenns die akt. Position vom vorhergeheden ist
+
+ Rev 1.45 06 Jan 1997 15:15:48 JP
+ Bug #34622#: TeilNodes bei Flys absplitten, FlyInFlys korrekt lesen
+
+ Rev 1.44 29 Oct 1996 12:58:50 JP
+ am Doc ist das NodesArray nur noch ueber Get..() zugaenglich
+
+ Rev 1.43 09 Oct 1996 13:05:18 JP
+ SwNodes::GoNext/-Prev (-Sect) returnt statt BOOL den gefundenen ContentNode
+
+ Rev 1.42 08 Oct 1996 13:53:42 JP
+ IsEqualFly: Header/Footer Absaetze nicht zusammenfassen;absatzgebundene Flys
+
+ Rev 1.41 27 Sep 1996 17:59:46 MIB
+ In Filtern in Rahmenvorlagen Umrandungs/Abstaende loeschen
+
+ Rev 1.40 29 Aug 1996 10:10:46 JP
+ beim StartNode muss jetzt ein spz. Sectiontype gesetzt werden
+
+ Rev 1.39 20 Aug 1996 14:53:34 TRI
+ C40_INSERT statt Insert
+
+ Rev 1.38 04 Jul 1996 15:01:20 JP
+ ReadFly: auch bei eigenen APOCTL ReadFly rufen
+
+ Rev 1.37 28 Jun 1996 15:07:30 MA
+ includes
+
+ Rev 1.36 18 Jun 1996 16:36:04 JP
+ ReadFly: erweitert um optionalen Itemset erweitert(FlyInFly lesen); MACPict: ggfs. Croppen
+
+ Rev 1.35 13 Jun 1996 09:21:26 JP
+ Flys lesen: bei Fly in Fly eine while schleife
+
+ Rev 1.34 10 Jun 1996 11:24:24 JP
+ Crop-Werte im CropAttribut setzen
+
+ Rev 1.33 25 Apr 1996 13:56:42 MIB
+ Verschiebung SvHTMLParser in Gooedies
+
+ Rev 1.32 25 Apr 1996 09:23:44 JP
+ lesen der Grafik-Daten in svxparser verschoben
+
+*************************************************************************/
+
diff --git a/sw/source/filter/rtf/rtfnum.cxx b/sw/source/filter/rtf/rtfnum.cxx
new file mode 100644
index 000000000000..5b5b42f75d43
--- /dev/null
+++ b/sw/source/filter/rtf/rtfnum.cxx
@@ -0,0 +1,1468 @@
+/*************************************************************************
+ *
+ * $RCSfile: rtfnum.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _RTFTOKEN_H
+#include <svtools/rtftoken.h>
+#endif
+#ifndef _RTFKEYWD_HXX //autogen
+#include <svtools/rtfkeywd.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _RTFOUT_HXX
+#include <svtools/rtfout.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_CMAPITEM_HXX //autogen
+#include <svx/cmapitem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_WRLMITEM_HXX //autogen
+#include <svx/wrlmitem.hxx>
+#endif
+
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _FLTINI_HXX
+#include <fltini.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _SWPARRTF_HXX
+#include <swparrtf.hxx>
+#endif
+#ifndef _WRTRTF_HXX
+#include <wrtrtf.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _CHARFMT_HXX
+#include <charfmt.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+#ifndef _CHARATR_HXX
+#include <charatr.hxx>
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+
+#define RTF_NUMRULE_NAME "RTF_Num"
+
+SV_IMPL_VARARR( SwListArr, SwListEntry )
+
+
+void lcl_ExpandNumFmts( SwNumRule& rRule )
+{
+ // dann noch das NumFormat in alle Ebenen setzen
+ for( BYTE n = 1; n < MAXLEVEL; ++n )
+ if( !rRule.GetNumFmt( n ) )
+ {
+ SwNumFmt aNumFmt( rRule.Get( 0 ));
+ aNumFmt.SetAbsLSpace( aNumFmt.GetAbsLSpace() * ( n + 1 ) );
+ rRule.Set( n, aNumFmt );
+ }
+}
+
+SfxItemSet& GetNumChrFmt( SwDoc& rDoc, SwNumRule& rRule, BYTE nNumLvl )
+{
+ SwCharFmt* pChrFmt = rRule.Get( nNumLvl ).GetCharFmt();
+ if( !pChrFmt )
+ {
+ String sNm( rRule.GetName() );
+ ( sNm += ' ' ) += String::CreateFromInt32( nNumLvl + 1 );
+ pChrFmt = rDoc.MakeCharFmt( sNm, rDoc.GetDfltCharFmt() );
+ if( !rRule.GetNumFmt( nNumLvl ))
+ rRule.Set( nNumLvl, rRule.Get( nNumLvl ) );
+ ((SwNumFmt*)rRule.GetNumFmt( nNumLvl ))->SetCharFmt( pChrFmt );
+ }
+ return (SfxItemSet&)pChrFmt->GetAttrSet();
+}
+
+void SwRTFParser::ReadListLevel( SwNumRule& rRule, BYTE nNumLvl )
+{
+ int nToken;
+ int nOpenBrakets = 1; // die erste wurde schon vorher erkannt !!
+ int nLvlTxtLevel = 0, nLvlNumberLevel = 0;
+ String sLvlText, sLvlNumber;
+ SwNumFmt* pCurNumFmt;
+ if( MAXLEVEL >= nNumLvl )
+ {
+ pCurNumFmt = (SwNumFmt*)rRule.GetNumFmt( nNumLvl );
+ pCurNumFmt->SetAbsLSpace( 0 );
+ pCurNumFmt->SetFirstLineOffset( 0 );
+ }
+ else
+ pCurNumFmt = 0;
+
+ while( nOpenBrakets && IsParserWorking() )
+ {
+ switch( ( nToken = GetNextToken() ))
+ {
+ case '}':
+ if( nOpenBrakets )
+ {
+ if( nLvlTxtLevel == nOpenBrakets )
+ {
+ if( DelCharAtEnd( sLvlText, ';' ).Len() &&
+ sLvlText.Len() && sLvlText.Len() ==
+ (USHORT)(sLvlText.GetChar( 0 )) + 1 )
+ sLvlText.Erase( 0, 1 );
+ nLvlTxtLevel = 0;
+ }
+ if( nLvlNumberLevel == nOpenBrakets )
+ {
+ DelCharAtEnd( sLvlNumber, ';' );
+ nLvlNumberLevel = 0;
+ }
+ }
+ --nOpenBrakets;
+ break;
+
+ case '{':
+ {
+ if( RTF_IGNOREFLAG != GetNextToken() )
+ nToken = SkipToken( -1 );
+ // Unknown und alle bekannten nicht ausgewerteten Gruppen
+ // sofort ueberspringen
+ else if( RTF_UNKNOWNCONTROL != ( nToken = GetNextToken() ))
+// RTF_PANOSE != nToken && RTF_FALT != nToken &&
+// RTF_FALT != nToken && RTF_FNAME != nToken &&
+// RTF_FONTEMB != nToken && RTF_FONTFILE != nToken )
+ nToken = SkipToken( -2 );
+ else
+ {
+ // gleich herausfiltern
+ ReadUnknownData();
+ nToken = GetNextToken();
+ if( '}' != nToken )
+ eState = SVPAR_ERROR;
+ break;
+ }
+ ++nOpenBrakets;
+ }
+ break;
+
+ case RTF_LEVELNFC:
+ {
+ SvxExtNumType eType = SVX_NUM_ARABIC;
+ switch( nTokenValue )
+ {
+ case 1: eType = SVX_NUM_ROMAN_UPPER; break;
+ case 2: eType = SVX_NUM_ROMAN_LOWER; break;
+ case 3: eType = SVX_NUM_CHARS_UPPER_LETTER_N; break;
+ case 4: eType = SVX_NUM_CHARS_LOWER_LETTER_N; break;
+ case 255:
+ case 23: eType = SVX_NUM_CHAR_SPECIAL; break;
+ }
+ if( pCurNumFmt )
+ pCurNumFmt->eType = eType;
+ }
+ break;
+
+ case RTF_LEVELJC:
+ {
+ SvxAdjust eAdj = SVX_ADJUST_LEFT;
+ switch( nTokenValue )
+ {
+ case 1: eAdj = SVX_ADJUST_CENTER; break;
+ case 2: eAdj = SVX_ADJUST_RIGHT; break;
+ }
+ if( pCurNumFmt )
+ pCurNumFmt->SetAdjust( eAdj );
+ }
+ break;
+
+ case RTF_LEVELSTARTAT:
+ if( pCurNumFmt && -1 != nTokenValue )
+ pCurNumFmt->SetStartValue( USHORT( nTokenValue ));
+ break;
+
+ case RTF_LEVELTEXT:
+ nLvlTxtLevel = nOpenBrakets;
+ break;
+
+ case RTF_LEVELNUMBERS:
+ nLvlNumberLevel = nOpenBrakets;
+ break;
+
+ case RTF_LI:
+ if( pCurNumFmt && -1 != nTokenValue )
+ {
+ if( 0 > nTokenValue )
+ nTokenValue =- nTokenValue;
+ pCurNumFmt->SetAbsLSpace( USHORT( nTokenValue ));
+ }
+ break;
+
+ case RTF_FI:
+ if( pCurNumFmt && -1 != nTokenValue )
+ {
+ if( 0 < short( nTokenValue ))
+ nTokenValue = - short( nTokenValue );
+ pCurNumFmt->SetFirstLineOffset( short( nTokenValue ));
+ }
+ break;
+
+ case RTF_TEXTTOKEN:
+ if( nLvlTxtLevel == nOpenBrakets )
+ sLvlText += aToken;
+ else if( nLvlNumberLevel == nOpenBrakets )
+ sLvlNumber += aToken;
+ break;
+
+ case RTF_LEVELOLD:
+ case RTF_LEVELPREV:
+ case RTF_LEVELPREVSPACE:
+ case RTF_LEVELINDENT:
+ case RTF_LEVELSPACE:
+ case RTF_LEVELFOLLOW:
+ case RTF_LEVELLEGAL:
+ case RTF_LEVELNORESTART:
+ break;
+
+ default:
+ if( pCurNumFmt &&
+ RTF_CHRFMT == (nToken & ~(0xff | RTF_SWGDEFS) ))
+ {
+ ReadAttr( nToken, &GetNumChrFmt( *pDoc, rRule, nNumLvl ) );
+
+ // dann aus der Vorlage den Font holen
+ if( SVX_NUM_CHAR_SPECIAL == pCurNumFmt->eType )
+ pCurNumFmt->SetBulletFont( FindFontOfItem(
+ pCurNumFmt->GetCharFmt()->GetFont() ) );
+ }
+ break;
+ }
+ }
+
+ if( IsParserWorking() && pCurNumFmt )
+ {
+ // dann erzeuge mal die Pre/Postfix-Strings
+ if( sLvlText.Len() &&
+ SVX_NUM_CHAR_SPECIAL == pCurNumFmt->eType )
+ {
+ pCurNumFmt->SetBulletChar( sLvlText.GetChar( 0 ) );
+ // dann aus der Vorlage den Font holen
+ if( pCurNumFmt->GetCharFmt() )
+ pCurNumFmt->SetBulletFont( FindFontOfItem(
+ pCurNumFmt->GetCharFmt()->GetFont() ) );
+ }
+ else if( sLvlNumber.Len() && sLvlText.Len() )
+ {
+ // in sLvlText steht der Text, in sLvlNumber die Position
+ // der Ebenen in sLvlText
+ pCurNumFmt->SetPrefix(
+ sLvlText.Copy( 0, USHORT( sLvlNumber.GetChar( 0 ))-1 ));
+ pCurNumFmt->SetPostfix( sLvlText.Copy(
+ USHORT( sLvlNumber.GetChar( sLvlNumber.Len()-1 )) ));
+ // wieviele Levels stehen im String?
+ pCurNumFmt->SetUpperLevel( (BYTE)sLvlNumber.Len() );
+ }
+ else if( !sLvlText.Len() )
+ {
+ pCurNumFmt->eType = SVX_NUM_NUMBER_NONE;
+ pCurNumFmt->SetPostfix( aEmptyStr );
+ }
+ }
+
+ SkipToken( -1 );
+}
+
+void SwRTFParser::ReadListTable()
+{
+ int nToken;
+ int nOpenBrakets = 1; // die erste wurde schon vorher erkannt !!
+ bNewNumList = TRUE;
+
+ USHORT nRuleCount = 0;
+ BYTE nNumLvl = 0;
+ SwNumRule* pCurRule = 0;
+ SwListEntry aEntry;
+
+ while( nOpenBrakets && IsParserWorking() )
+ {
+ switch( ( nToken = GetNextToken() ))
+ {
+ case '}': if( --nOpenBrakets && IsParserWorking() )
+ {
+ // Style konnte vollstaendig gelesen werden,
+ // also ist das noch ein stabiler Status
+ SaveState( RTF_LISTTABLE );
+ if( 1 == nOpenBrakets )
+ {
+ if( aEntry.nListId )
+ aListArr.Insert( aEntry, aListArr.Count() );
+ aEntry.Clear();
+ }
+ }
+ break;
+
+ case '{':
+ {
+ if( RTF_IGNOREFLAG != GetNextToken() )
+ nToken = SkipToken( -1 );
+ // Unknown und alle bekannten nicht ausgewerteten Gruppen
+ // sofort ueberspringen
+ else if( RTF_UNKNOWNCONTROL != ( nToken = GetNextToken() ))
+// RTF_PANOSE != nToken && RTF_FALT != nToken &&
+// RTF_FALT != nToken && RTF_FNAME != nToken &&
+// RTF_FONTEMB != nToken && RTF_FONTFILE != nToken )
+ nToken = SkipToken( -2 );
+ else
+ {
+ // gleich herausfiltern
+ ReadUnknownData();
+ nToken = GetNextToken();
+ if( '}' != nToken )
+ eState = SVPAR_ERROR;
+ break;
+ }
+ ++nOpenBrakets;
+ }
+ break;
+
+ case RTF_LIST:
+ {
+ if( pCurRule && pCurRule->IsContinusNum() )
+ lcl_ExpandNumFmts( *pCurRule );
+
+ String sTmp( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( RTF_NUMRULE_NAME " 1" )));
+ aEntry.nListDocPos = pDoc->MakeNumRule( sTmp );
+ pCurRule = pDoc->GetNumRuleTbl()[ aEntry.nListDocPos ];
+ pCurRule->SetName( pDoc->GetUniqueNumRuleName( &sTmp, FALSE ) );
+ pCurRule->SetAutoRule( FALSE );
+ nNumLvl = (BYTE)-1;
+ }
+ break;
+
+ case RTF_LISTID: aEntry.nListId = nTokenValue; break;
+ case RTF_LISTTEMPLATEID: aEntry.nListTemplateId = nTokenValue; break;
+
+ case RTF_LISTRESTARTHDN:
+ break;
+ case RTF_LISTNAME:
+ if( RTF_TEXTTOKEN == GetNextToken() )
+ {
+ String sTmp( DelCharAtEnd( aToken, ';' ));
+ if( sTmp.Len() && !pDoc->FindNumRulePtr( sTmp ))
+ pCurRule->SetName( sTmp );
+ }
+ SkipGroup();
+ break;
+
+ case RTF_LISTSIMPLE:
+ pCurRule->SetContinusNum( TRUE );
+ break;
+
+ case RTF_LISTLEVEL:
+ {
+ if( ++nNumLvl < MAXLEVEL )
+ pCurRule->Set( nNumLvl, pCurRule->Get( nNumLvl ));
+ ReadListLevel( *pCurRule, nNumLvl );
+ }
+ break;
+ }
+ }
+
+ if( pCurRule && pCurRule->IsContinusNum() )
+ lcl_ExpandNumFmts( *pCurRule );
+
+ SkipToken( -1 ); // die schliesende Klammer wird "oben" ausgewertet
+}
+
+BOOL lcl_IsEqual( SwNumRule* pOrigRule, SwNumRule* pRule )
+{
+ BOOL bRet = 0;
+ if( pOrigRule && pRule )
+ {
+ bRet = pOrigRule->GetRuleType() == pRule->GetRuleType() &&
+ pOrigRule->IsContinusNum() == pRule->IsContinusNum() &&
+ pOrigRule->IsAbsSpaces() == pRule->IsAbsSpaces();
+ if( bRet )
+ for( BYTE n = 0; bRet && n < MAXLEVEL; ++n )
+ {
+ const SwNumFmt* pOFmt = pOrigRule->GetNumFmt( n ),
+ * pFmt = pRule->GetNumFmt( n );
+ if( pFmt && pOFmt )
+ {
+ SwCharFmt* pOCFmt = pOFmt->GetCharFmt(),
+ * pCFmt = pFmt->GetCharFmt();
+ if( pOCFmt && pCFmt )
+ {
+ bRet = pCFmt->GetAttrSet() == pOCFmt->GetAttrSet();
+ }
+ else
+ bRet = !pCFmt && !pOCFmt;
+ if( bRet )
+ {
+ ((SwNumFmt*)pOFmt)->SetCharFmt( 0 );
+ ((SwNumFmt*)pFmt)->SetCharFmt( 0 );
+ bRet = *pOFmt == *pFmt;
+ ((SwNumFmt*)pOFmt)->SetCharFmt( pOCFmt );
+ ((SwNumFmt*)pFmt)->SetCharFmt( pCFmt );
+ }
+ }
+ else
+ bRet = !pFmt && !pOFmt;
+ }
+ }
+ return bRet;
+}
+
+void SwRTFParser::ReadListOverrideTable()
+{
+ int nToken;
+ int nOpenBrakets = 1; // die erste wurde schon vorher erkannt !!
+ SwListEntry aEntry;
+ SwNumRule* pRule = 0, *pOrigRule = 0;
+ BYTE nNumLvl = 0;
+ BOOL bOverrideFormat = FALSE, bOverrideStart = FALSE;
+
+ while( nOpenBrakets && IsParserWorking() )
+ {
+ switch( ( nToken = GetNextToken() ))
+ {
+ case '}':
+ if( --nOpenBrakets && IsParserWorking() )
+ {
+ // Style konnte vollstaendig gelesen werden,
+ // also ist das noch ein stabiler Status
+ SaveState( RTF_LISTOVERRIDETABLE );
+
+ if( 1 == nOpenBrakets )
+ {
+ bOverrideFormat = FALSE, bOverrideStart = FALSE;
+ if( pRule )
+ {
+ if( lcl_IsEqual( pOrigRule, pRule ))
+ {
+ // no changes on the rule -> use the original rule
+ aEntry.nListDocPos = pDoc->FindNumRule(
+ pOrigRule->GetName() );
+ // delete the temp Rule
+ RemoveUnusedNumRule( pRule );
+ }
+ else if( pRule->IsContinusNum() )
+ lcl_ExpandNumFmts( *pRule );
+ }
+
+ if( aEntry.nListId && aEntry.nListNo )
+ for( USHORT n = aListArr.Count(); n; )
+ if( aListArr[ --n ].nListId == aEntry.nListId &&
+ !aListArr[ n ].nListNo )
+ {
+ aListArr[ n ].nListNo = aEntry.nListNo;
+ if( pOrigRule )
+ aListArr[ n ].nListDocPos = aEntry.nListDocPos;
+ break;
+ }
+ aEntry.Clear();
+ pOrigRule = 0;
+ pRule = 0;
+ }
+ }
+ break;
+
+ case '{':
+ {
+ if( RTF_IGNOREFLAG != GetNextToken() )
+ nToken = SkipToken( -1 );
+ // Unknown und alle bekannten nicht ausgewerteten Gruppen
+ // sofort ueberspringen
+ else if( RTF_UNKNOWNCONTROL != ( nToken = GetNextToken() ))
+ nToken = SkipToken( -2 );
+ else
+ {
+ // gleich herausfiltern
+ ReadUnknownData();
+ nToken = GetNextToken();
+ if( '}' != nToken )
+ eState = SVPAR_ERROR;
+ break;
+ }
+ ++nOpenBrakets;
+ }
+ break;
+
+ case RTF_LISTOVERRIDE: aEntry.Clear(); break;
+ case RTF_LISTID: aEntry.nListId = nTokenValue; break;
+ case RTF_LS: aEntry.nListNo = nTokenValue; break;
+ case RTF_LISTOVERRIDECOUNT:
+ if( nTokenValue )
+ {
+ pRule = 0;
+ // dann erzeugen wir mal schnell eine Kopie von der NumRule,
+ // denn diese wird jetzt mal kurz veraendert.
+ if( aEntry.nListId )
+ for( USHORT n = 0; n < aListArr.Count(); ++n )
+ if( aListArr[ n ].nListId == aEntry.nListId )
+ {
+ pRule = pDoc->GetNumRuleTbl()[
+ aListArr[ n ].nListDocPos ];
+ pOrigRule = pRule;
+
+ String sTmp( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( RTF_NUMRULE_NAME " 1" )));
+ aEntry.nListDocPos = pDoc->MakeNumRule( sTmp, pRule );
+ pRule = pDoc->GetNumRuleTbl()[ aEntry.nListDocPos ];
+ pRule->SetName( pDoc->GetUniqueNumRuleName( &sTmp, FALSE ) );
+ pRule->SetAutoRule( FALSE );
+ nNumLvl = (BYTE)-1;
+ aListArr.Insert( aEntry, aListArr.Count() );
+ break;
+ }
+
+ }
+ break;
+
+ case RTF_LISTLEVEL:
+ if( pRule && bOverrideFormat )
+ {
+ if( ++nNumLvl < MAXLEVEL )
+ pRule->Set( nNumLvl, pRule->Get( nNumLvl ));
+ ReadListLevel( *pRule, nNumLvl );
+ }
+ break;
+
+ case RTF_LEVELSTARTAT:
+ if( pRule && bOverrideStart )
+ {
+ }
+ break;
+
+ case RTF_LISTOVERRIDESTART:
+ bOverrideStart = TRUE;
+ break;
+
+ case RTF_LISTOVERRIDEFORMAT:
+ bOverrideFormat = TRUE;
+ break;
+
+ case RTF_LFOLEVEL:
+ // was fehlt noch?
+ break;
+ }
+ }
+
+ // search the outline numrule and set it into the doc
+ if( GetStyleTbl().Count() )
+ {
+ if( !bStyleTabValid )
+ MakeStyleTab();
+
+ const SfxPoolItem* pItem;
+ const SwTxtFmtColl* pColl;
+ SvxRTFStyleType* pStyle = GetStyleTbl().First();
+ do {
+ if( MAXLEVEL > pStyle->nOutlineNo &&
+ 0 != ( pColl = aTxtCollTbl.Get( (USHORT)GetStyleTbl().
+ GetCurKey() )) &&
+ SFX_ITEM_SET == pColl->GetItemState( RES_PARATR_NUMRULE,
+ FALSE, &pItem ))
+ {
+ USHORT nRulePos = pDoc->FindNumRule(
+ ((SwNumRuleItem*)pItem)->GetValue() );
+ if( USHRT_MAX != nRulePos )
+ {
+ const SwNumRule *pRule = pDoc->GetNumRuleTbl()[ nRulePos ];
+ pDoc->SetOutlineNumRule( *pRule );
+ pDoc->DelNumRule( pRule->GetName() );
+ // now pRule pointer is invalid !!!
+
+ // now decrement all position in the listtable, which will
+ // behind the doc-rule position
+ for( USHORT n = aListArr.Count(); n; )
+ {
+ SwListEntry& rEntry = aListArr[ --n ];
+ if( rEntry.nListDocPos == nRulePos )
+ aListArr.Remove( n );
+ else if( rEntry.nListDocPos > nRulePos )
+ --rEntry.nListDocPos;
+ }
+ break;
+ }
+ }
+
+ pStyle->aAttrSet.ClearItem( FN_PARAM_NUM_LEVEL );
+
+ } while( 0 != (pStyle = GetStyleTbl().Next()) );
+ }
+
+ SkipToken( -1 ); // die schliesende Klammer wird "oben" ausgewertet
+}
+
+SwNumRule* SwRTFParser::GetNumRuleOfListNo( long nListNo, BOOL bRemoveFromList )
+{
+ SwNumRule* pRet = 0;
+ SwListEntry* pEntry;
+ for( USHORT n = aListArr.Count(); n; )
+ if( ( pEntry = &aListArr[ --n ])->nListNo == nListNo )
+ {
+ if( bRemoveFromList )
+ aListArr.Remove( n );
+ else
+ {
+ pEntry->bRuleUsed = TRUE;
+ pRet = pDoc->GetNumRuleTbl()[ pEntry->nListDocPos ];
+ }
+ break;
+ }
+ return pRet;
+}
+
+void SwRTFParser::RemoveUnusedNumRule( SwNumRule* pRule )
+{
+ if( pRule )
+ {
+ for ( BYTE nLvl = 0; nLvl < MAXLEVEL; ++nLvl )
+ {
+ SwNumFmt& rNFmt = (SwNumFmt&)pRule->Get( nLvl );
+ SwCharFmt* pCFmt = rNFmt.GetCharFmt();
+ if( pCFmt )
+ {
+ pCFmt->Remove( &rNFmt );
+ if( !pCFmt->GetDepends() )
+ pDoc->DelCharFmt( pCFmt );
+ }
+ }
+ pDoc->DelNumRule( pRule->GetName() );
+ }
+#ifndef PRODUCT
+ else
+ {
+ ASSERT( pRule, "NumRulePointer 0 kann nicht geloescht werden" );
+ }
+#endif
+}
+
+void SwRTFParser::RemoveUnusedNumRules()
+{
+ SwListEntry* pEntry;
+ SvPtrarr aDelArr;
+ USHORT n;
+ for( n = aListArr.Count(); n; )
+ if( !( pEntry = &aListArr[ --n ])->bRuleUsed )
+ {
+ void * p = pDoc->GetNumRuleTbl()[pEntry->nListDocPos];
+ // dont delete named char formats
+ if( USHRT_MAX == aDelArr.GetPos( p ) &&
+ ((SwNumRule*)p)->GetName().EqualsAscii( RTF_NUMRULE_NAME, 0,
+ sizeof( RTF_NUMRULE_NAME )) )
+ aDelArr.Insert( p, aDelArr.Count() );
+ }
+
+ for( n = aDelArr.Count(); n; )
+ {
+ SwNumRule* pDel = (SwNumRule*)aDelArr[ --n ];
+ RemoveUnusedNumRule( pDel );
+ }
+}
+
+const Font* SwRTFParser::FindFontOfItem( const SvxFontItem& rItem ) const
+{
+ SvxRTFFontTbl& rFntTbl = ((SwRTFParser*)this)->GetFontTbl();
+ const Font* pFnt = rFntTbl.First();
+ while( pFnt )
+ {
+ if( pFnt->GetFamily() == rItem.GetFamily() &&
+ pFnt->GetName() == rItem.GetFamilyName() &&
+ pFnt->GetStyleName() == rItem.GetStyleName() &&
+ pFnt->GetPitch() == rItem.GetPitch() &&
+ pFnt->GetCharSet() == rItem.GetCharSet() )
+ return pFnt;
+
+ pFnt = rFntTbl.Next();
+ }
+ return 0;
+}
+
+
+void SwRTFParser::ReadNumSecLevel( int nToken )
+{
+ // lese die \pnseclvl - Gruppe
+ // nTokenValue gibt schon den richtigen Level vor 1 - 9!
+ BYTE nLevel = 0;
+ long nListNo = 0;
+ BOOL bContinus = TRUE;
+
+ if( RTF_PNSECLVL == nToken )
+ {
+ // suche die Rule - steht unter Nummer 3
+ nListNo = 3;
+ bContinus = FALSE;
+ nLevel = MAXLEVEL <= nTokenValue ? MAXLEVEL - 1
+ : BYTE( nTokenValue - 1 );
+ }
+ else
+ {
+ switch( nToken = GetNextToken() )
+ {
+ case RTF_PNLVL: nListNo = 3;
+ bContinus = FALSE;
+ nLevel = MAXLEVEL <= nTokenValue
+ ? MAXLEVEL - 1
+ : BYTE( nTokenValue-1 );
+ break;
+
+ case RTF_PNLVLBODY: nListNo = 2; break;
+ case RTF_PNLVLBLT: nListNo = 1; break;
+ case RTF_PNLVLCONT: nListNo = 4; break;
+
+ default:
+ SkipGroup();
+ return ;
+ }
+ }
+
+ // suche die Rule - steht unter Nummer 3
+ USHORT nNewFlag = 1 << nListNo;
+ SwNumRule* pCurRule = GetNumRuleOfListNo( nListNo,
+ 0 != ( nNewNumSectDef & nNewFlag ) );
+ if( !pCurRule )
+ {
+ // dann muessen wir die mal anlegen
+ nNewNumSectDef &= ~nNewFlag;
+ String sTmp( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( RTF_NUMRULE_NAME " 1" )));
+ SwListEntry aEntry( nListNo, 0, pDoc->MakeNumRule( sTmp ));
+ aEntry.nListNo = nListNo;
+ aListArr.Insert( aEntry, aListArr.Count() );
+ pCurRule = pDoc->GetNumRuleTbl()[ aEntry.nListDocPos ];
+ pCurRule->SetName( pDoc->GetUniqueNumRuleName( &sTmp, FALSE ));
+ pCurRule->SetAutoRule( FALSE );
+ pCurRule->SetContinusNum( bContinus );
+ }
+
+ if( !pCurRule->GetNumFmt( nLevel ))
+ pCurRule->Set( nLevel, pCurRule->Get( nLevel ));
+ SwNumFmt* pCurNumFmt = (SwNumFmt*)pCurRule->GetNumFmt( nLevel );
+ if( RTF_PNLVLBLT == nToken )
+ pCurNumFmt->eType = SVX_NUM_CHAR_SPECIAL;
+ pCurNumFmt->SetPostfix( aEmptyStr );
+ pCurNumFmt->SetPrefix( aEmptyStr );
+ pCurNumFmt->eType = SVX_NUM_NUMBER_NONE;
+
+ if( bStyleTabValid && RTF_PNSECLVL != nToken )
+ {
+ // dann den akt. Lvl und Rule am Absatz setzen.
+ // Dieses muss aber in den vorherigen "Kontext", sprich in den vor
+ // der Klammer offenen Attrset. Darum das SetNewGroup davor und dahinter
+ SetNewGroup( FALSE );
+ GetAttrSet().Put( SfxUInt16Item( FN_PARAM_NUM_LEVEL, nLevel ));
+ GetAttrSet().Put( SwNumRuleItem( pCurRule->GetName() ));
+ SetNewGroup( TRUE );
+ }
+
+ FontUnderline eUnderline;
+ int nOpenBrakets = 1; // die erste wurde schon vorher erkannt !!
+ while( nOpenBrakets && IsParserWorking() )
+ {
+ switch( ( nToken = GetNextToken() ))
+ {
+ case '}':
+ if( --nOpenBrakets && IsParserWorking() )
+ {
+ // Style konnte vollstaendig gelesen werden,
+ // also ist das noch ein stabiler Status
+ SaveState( RTF_PNSECLVL );
+ }
+ break;
+
+ case '{':
+ {
+ if( RTF_IGNOREFLAG != GetNextToken() )
+ nToken = SkipToken( -1 );
+ // Unknown und alle bekannten nicht ausgewerteten Gruppen
+ // sofort ueberspringen
+ else if( RTF_UNKNOWNCONTROL != ( nToken = GetNextToken() ))
+ nToken = SkipToken( -2 );
+ else
+ {
+ // gleich herausfiltern
+ ReadUnknownData();
+ nToken = GetNextToken();
+ if( '}' != nToken )
+ eState = SVPAR_ERROR;
+ break;
+ }
+ ++nOpenBrakets;
+ }
+ break;
+
+ case RTF_PNCARD:
+ case RTF_PNORD:
+ case RTF_PNORDT:
+ case RTF_PNDEC: pCurNumFmt->eType = SVX_NUM_ARABIC; break;
+ case RTF_PNUCLTR: pCurNumFmt->eType = SVX_NUM_CHARS_UPPER_LETTER_N; break;
+ case RTF_PNUCRM: pCurNumFmt->eType = SVX_NUM_ROMAN_UPPER; break;
+ case RTF_PNLCLTR: pCurNumFmt->eType = SVX_NUM_CHARS_LOWER_LETTER_N; break;
+ case RTF_PNLCRM: pCurNumFmt->eType = SVX_NUM_ROMAN_LOWER; break;
+
+ case RTF_PNF:
+ {
+ const Font& rSVFont = GetFont( USHORT(nTokenValue) );
+ GetNumChrFmt( *pDoc, *pCurRule, nLevel ).Put(
+ SvxFontItem( rSVFont.GetFamily(),
+ rSVFont.GetName(), rSVFont.GetStyleName(),
+ rSVFont.GetPitch(), rSVFont.GetCharSet() ));
+ if( SVX_NUM_CHAR_SPECIAL == pCurNumFmt->eType )
+ pCurNumFmt->SetBulletFont( &rSVFont );
+ }
+ break;
+ case RTF_PNFS:
+ {
+ if( -1 == nTokenValue )
+ nTokenValue = 240;
+ else
+ nTokenValue *= 10;
+ GetNumChrFmt( *pDoc, *pCurRule, nLevel ).Put(
+ SvxFontHeightItem( (const USHORT)nTokenValue ));
+ }
+ break;
+
+ case RTF_PNB:
+ {
+ GetNumChrFmt( *pDoc, *pCurRule, nLevel ).Put( SvxWeightItem(
+ nTokenValue ? WEIGHT_BOLD : WEIGHT_NORMAL ));
+ }
+ break;
+
+ case RTF_PNI:
+ {
+ GetNumChrFmt( *pDoc, *pCurRule, nLevel ).Put( SvxPostureItem(
+ nTokenValue ? ITALIC_NORMAL : ITALIC_NONE ));
+ }
+ break;
+
+ case RTF_PNCAPS:
+ case RTF_PNSCAPS:
+ {
+ GetNumChrFmt( *pDoc, *pCurRule, nLevel ).Put( SvxCaseMapItem(
+ nTokenValue ? SVX_CASEMAP_KAPITAELCHEN
+ : SVX_CASEMAP_NOT_MAPPED ));
+ }
+ break;
+ case RTF_PNSTRIKE:
+ {
+ GetNumChrFmt( *pDoc, *pCurRule, nLevel ).Put( SvxCrossedOutItem(
+ nTokenValue ? STRIKEOUT_SINGLE : STRIKEOUT_NONE ));
+ }
+ break;
+
+ case RTF_PNCF:
+ {
+ GetNumChrFmt( *pDoc, *pCurRule, nLevel ).Put( SvxColorItem(
+ GetColor( USHORT(nTokenValue) ) ));
+ }
+ break;
+
+
+ case RTF_PNUL:
+ eUnderline = nTokenValue ? UNDERLINE_SINGLE : UNDERLINE_NONE;
+ goto NUMATTR_SETUNDERLINE;
+ case RTF_PNULD:
+ eUnderline = UNDERLINE_DOTTED;
+ goto NUMATTR_SETUNDERLINE;
+ case RTF_PNULDB:
+ eUnderline = UNDERLINE_DOUBLE;
+ goto NUMATTR_SETUNDERLINE;
+ case RTF_PNULNONE:
+ eUnderline = UNDERLINE_NONE;
+ goto NUMATTR_SETUNDERLINE;
+ case RTF_PNULW:
+ {
+ GetNumChrFmt( *pDoc, *pCurRule, nLevel ).Put(
+ SvxWordLineModeItem( TRUE ));
+ }
+ eUnderline = UNDERLINE_SINGLE;
+ goto NUMATTR_SETUNDERLINE;
+
+NUMATTR_SETUNDERLINE:
+ {
+ GetNumChrFmt( *pDoc, *pCurRule, nLevel ).Put(
+ SvxUnderlineItem( eUnderline ));
+ }
+ break;
+
+ case RTF_PNINDENT:
+ if( 0 > short( nTokenValue ) )
+ nTokenValue = - (short)nTokenValue;
+ pCurNumFmt->SetFirstLineOffset( - short( nTokenValue ));
+ pCurNumFmt->SetAbsLSpace( (nLevel + 1 ) * USHORT( nTokenValue ));
+ break;
+ case RTF_PNSP:
+ pCurNumFmt->SetCharTextOffset( USHORT( nTokenValue ));
+ break;
+
+ case RTF_PNPREV:
+ if( nLevel )
+ {
+ BYTE nPrev = 2, nLast = nLevel;
+ while( nLast && 1 < pCurRule->Get( --nLast ).GetUpperLevel() )
+ ++nPrev;
+ pCurNumFmt->SetUpperLevel( nPrev );
+ }
+ break;
+
+ case RTF_PNQC: pCurNumFmt->SetAdjust( SVX_ADJUST_CENTER ); break;
+ case RTF_PNQL: pCurNumFmt->SetAdjust( SVX_ADJUST_LEFT ); break;
+ case RTF_PNQR: pCurNumFmt->SetAdjust( SVX_ADJUST_RIGHT ); break;
+
+ case RTF_PNSTART:
+ pCurNumFmt->SetStartValue( USHORT( nTokenValue ));
+ break;
+
+ case RTF_PNNUMONCE:
+ case RTF_PNACROSS:
+ case RTF_PNHANG:
+ case RTF_PNRESTART: break;
+
+ case RTF_PNTXTA:
+ {
+ String sTmp;
+ GetTextToEndGroup( sTmp );
+ if( SVX_NUM_CHAR_SPECIAL == pCurNumFmt->eType )
+ {
+ pCurNumFmt->SetBulletChar( sTmp.GetChar( 0 ) );
+ if( pCurNumFmt->GetCharFmt() )
+ pCurNumFmt->SetBulletFont( FindFontOfItem(
+ pCurNumFmt->GetCharFmt()->GetFont() ) );
+ sTmp.Erase();
+ }
+ pCurNumFmt->SetPostfix( sTmp );
+ }
+ break;
+
+ case RTF_PNTXTB:
+ {
+ String sTmp;
+ pCurNumFmt->SetPrefix( GetTextToEndGroup( sTmp ) );
+ }
+ break;
+ }
+ }
+
+ // falls vollstaendige Numerierung an ist und das Zeichen davor ein
+ // Punkt ist, dann will RTF den Punkt als Trenner zwischen den Ebenen
+ // haben - das haben wir aber schon als default
+ if( 1 < pCurNumFmt->GetUpperLevel() &&
+ 1 == pCurNumFmt->GetPrefix().Len() &&
+ '.' == pCurNumFmt->GetPrefix().GetChar( 0 ) &&
+ SVX_NUM_CHAR_SPECIAL != pCurNumFmt->eType )
+ pCurNumFmt->SetPrefix( aEmptyStr );
+
+ // falls das ein nicht numerierter Absatz mit ein Prefix-Text mit
+ // einem Zeichen ist, dann setze den als Bulletzeichen
+ if( pCurNumFmt->GetCharFmt() && SVX_NUM_NUMBER_NONE == pCurNumFmt->eType &&
+ 3 == nListNo && 1 == pCurNumFmt->GetPrefix().Len() )
+ {
+ SwCharFmt* pChFmt = pCurNumFmt->GetCharFmt();
+ pCurNumFmt->eType = SVX_NUM_CHAR_SPECIAL;
+ pCurNumFmt->SetBulletFont( FindFontOfItem( pChFmt->GetFont() ) );
+
+ pCurNumFmt->SetBulletChar( pCurNumFmt->GetPrefix().GetChar( 0 ) );
+ pCurNumFmt->SetPrefix( aEmptyStr );
+
+ // den Font oder sogar das gesamte CharFormat loeschen?
+ if( SFX_ITEM_SET == pChFmt->GetItemState( RES_CHRATR_FONT, FALSE ))
+ {
+ if( 1 == pChFmt->GetAttrSet().Count() )
+ {
+ pCurNumFmt->SetCharFmt( 0 );
+ pDoc->DelCharFmt( pChFmt );
+ }
+ else
+ pChFmt->ResetAttr( RES_CHRATR_FONT );
+ }
+ }
+
+ SkipToken( -1 ); // die schliesende Klammer wird "oben" ausgewertet
+}
+
+
+/* */
+
+// dann noch die Ausgabe-Funktionen (nur fuer WinWord 97)
+
+void SwRTFWriter::OutRTFListTab()
+{
+ ByteString sOverrideList;
+ const SwNumRuleTbl& rListTbl = pDoc->GetNumRuleTbl();
+ USHORT nId = 1, nTmplId = 1, n;
+
+ // prepare the NodeNum to generate the NumString
+ SwNodeNum aNdNum( 0 );
+ for( n = 0; n < MAXLEVEL; ++n )
+ aNdNum.GetLevelVal()[ n ] = n;
+ BYTE aNumLvlPos[ MAXLEVEL ];
+
+ for( n = rListTbl.Count()+1; n; )
+ {
+ const SwNumRule* pRule;
+ --n;
+ if( n == rListTbl.Count() )
+ pRule = pDoc->GetOutlineNumRule();
+ else
+ {
+ pRule = rListTbl[ n ];
+ if( !pDoc->IsUsed( *pRule ))
+ continue;
+ }
+
+ BYTE nEnd = MAXLEVEL;
+ while( nEnd-- && !pRule->GetNumFmt( nEnd ))
+ ;
+ ++nEnd;
+
+ for( BYTE nLvl = 0; nLvl < nEnd; ++nLvl )
+ if( SVX_NUM_NUMBER_NONE != pRule->Get( nLvl ).eType )
+ break;
+
+ if( nLvl == nEnd ) // alle Level no number -> dont write it
+ continue;
+
+ // mit der ersten Rule wird auch die ListTable geschrieben
+ if( !sOverrideList.Len() )
+ OutComment( *this, sRTF_LISTTABLE );
+
+ Strm() << '{' << sRTF_LIST << sRTF_LISTTEMPLATEID;
+ OutULong( nTmplId );
+ ByteString sTmp;
+
+ if( pRule->IsContinusNum() )
+ Strm() << sRTF_LISTSIMPLE;
+
+ for( nLvl = 0; nLvl < nEnd; ++nLvl )
+ {
+ const SwNumFmt& rFmt = pRule->Get( nLvl );
+ Strm() << sNewLine;
+ if( nLvl > 8 ) // RTF-kennt nur 9 Ebenen
+ OutComment( *this, sRTF_SOUTLVL );
+
+ Strm() << '{' << sRTF_LISTLEVEL << sRTF_LEVELNFC;
+
+ USHORT nVal = 0;
+ switch( rFmt.eType )
+ {
+ case SVX_NUM_ROMAN_UPPER: nVal = 1; break;
+ case SVX_NUM_ROMAN_LOWER: nVal = 2; break;
+ case SVX_NUM_CHARS_UPPER_LETTER:
+ case SVX_NUM_CHARS_UPPER_LETTER_N: nVal = 3; break;
+ case SVX_NUM_CHARS_LOWER_LETTER:
+ case SVX_NUM_CHARS_LOWER_LETTER_N: nVal = 4; break;
+
+ case SVX_NUM_BITMAP:
+ case SVX_NUM_CHAR_SPECIAL: nVal = 23; break;
+ }
+ OutLong( nVal ) << sRTF_LEVELJC;
+
+ switch( rFmt.GetAdjust() )
+ {
+ case SVX_ADJUST_CENTER: nVal = 1; break;
+ case SVX_ADJUST_RIGHT: nVal = 2; break;
+ default: nVal = 0; break;
+ }
+ OutLong( nVal ) << sRTF_LEVELSTARTAT;
+ OutLong( rFmt.GetStartValue() )
+ << sRTF_LEVELFOLLOW << "2{" << sRTF_LEVELTEXT << ' ';
+
+ BOOL bWriteBulletFont = FALSE;
+ memset( aNumLvlPos, 0, MAXLEVEL );
+ if( SVX_NUM_CHAR_SPECIAL == rFmt.eType ||
+ SVX_NUM_BITMAP == rFmt.eType )
+ {
+ Strm() << "\\'01\\'"; OutHex( rFmt.GetBulletChar() );
+ bWriteBulletFont = TRUE;
+ }
+ else if( SVX_NUM_NUMBER_NONE != rFmt.eType )
+ {
+ memset( aNumLvlPos, 0, MAXLEVEL );
+ BYTE* pLvlPos = aNumLvlPos;
+ aNdNum.SetLevel( nLvl );
+ String sNumStr( pRule->MakeNumString( aNdNum, FALSE, TRUE ));
+
+ // now search the nums in the string
+ for( BYTE i = 0; i <= nLvl; ++i )
+ {
+ String sSrch( String::CreateFromInt32( i ));
+ xub_StrLen nFnd = sNumStr.Search( sSrch );
+ if( STRING_NOTFOUND != nFnd )
+ {
+ *pLvlPos = (BYTE)(nFnd + rFmt.GetPrefix().Len() + 1 );
+ ++pLvlPos;
+ sNumStr.SetChar( nFnd, (sal_Unicode)i );
+ }
+ }
+
+ Strm() << "\\'";
+ OutHex( sNumStr.Len() + rFmt.GetPrefix().Len() +
+ rFmt.GetPostfix().Len() );
+
+ if( rFmt.GetPrefix().Len() )
+ RTFOutFuncs::Out_String( Strm(), rFmt.GetPrefix(),
+ DEF_ENCODING, bWriteHelpFmt );
+
+
+ for( xub_StrLen x = 0; x < sNumStr.Len(); ++x )
+ if( sNumStr.GetChar( x ) < 0x20 ||
+ sNumStr.GetChar( x ) > 0xFF )
+ {
+ Strm() << "\\'"; OutHex( sNumStr.GetChar( x ) );
+ }
+ else
+ Strm() << (sal_Char)sNumStr.GetChar( x );
+
+ if( rFmt.GetPostfix().Len() )
+ RTFOutFuncs::Out_String( Strm(), rFmt.GetPostfix(),
+ DEF_ENCODING, bWriteHelpFmt );
+ }
+
+ // write the levelnumbers
+ Strm() << ";}{" << sRTF_LEVELNUMBERS;
+ for( BYTE i = 0; i <= nLvl && aNumLvlPos[ i ]; ++i )
+ {
+ Strm() << "\\'"; OutHex( aNumLvlPos[ i ] );
+ }
+ Strm() << ";}";
+
+ if( rFmt.GetCharFmt() )
+ Out_SfxItemSet( aRTFAttrFnTab, *this,
+ rFmt.GetCharFmt()->GetAttrSet(), TRUE );
+
+ if( bWriteBulletFont )
+ {
+ Strm() << sRTF_F;
+ const Font* pFont = rFmt.GetBulletFont();
+ if( !pFont )
+ pFont = &SwNumRule::GetDefBulletFont();
+ OutULong( GetId( *pFont ));
+ }
+
+ Strm() << sRTF_FI;
+ OutLong( rFmt.GetFirstLineOffset() ) << sRTF_LI;
+ OutLong( rFmt.GetAbsLSpace() );
+
+ Strm() << '}';
+
+ if( nLvl > 8 ) // RTF-kennt nur 9 Ebenen
+ Strm() << '}';
+ }
+
+ if( !pRule->IsAutoRule() )
+ {
+ Strm() << '{' << sRTF_LISTNAME << ' ';
+ RTFOutFuncs::Out_String( Strm(), pRule->GetName(), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" ;
+ }
+ Strm() << sRTF_LISTID;
+ OutULong( nId ) << '}' << sNewLine;
+
+ sTmp = '{';
+ ((((((( sTmp += sRTF_LISTOVERRIDE ) +=
+ sRTF_LISTID ) += ByteString::CreateFromInt32( nId )) +=
+ sRTF_LISTOVERRIDECOUNT ) += '0' ) +=
+ sRTF_LS ) += ByteString::CreateFromInt32( n )) += '}';
+ sOverrideList += sTmp;
+
+ ++nId, ++nTmplId;
+ }
+
+ if( sOverrideList.Len() )
+ Strm() << "}{" << sRTF_LISTOVERRIDETABLE
+ << sOverrideList.GetBuffer() << '}' << sNewLine;
+}
+
+USHORT SwRTFWriter::GetId( const SwNumRuleItem& rItem ) const
+{
+ return pDoc->FindNumRule( rItem.GetValue() );
+}
+
+void SwRTFWriter::OutListNum( const SwTxtNode& rNd )
+{
+ const SwNumRule* pRule = rNd.GetNumRule();
+ const SwNodeNum* pNdNum = 0;
+ // or is an outlinerule valid?
+ if( pRule )
+ pNdNum = rNd.GetNum();
+ else if( MAXLEVEL > rNd.GetTxtColl()->GetOutlineLevel() &&
+ 0 != ( pNdNum = rNd.GetOutlineNum() ) )
+ pRule = pDoc->GetOutlineNumRule();
+
+ if( pRule && pNdNum && MAXLEVEL > pNdNum->GetLevel() )
+ {
+ bOutFmtAttr = FALSE;
+ bOutListNumTxt = TRUE;
+
+ BOOL bValidNum = MAXLEVEL > pNdNum->GetLevel();
+ BYTE nLvl = GetRealLevel( pNdNum->GetLevel() );
+ const SwNumFmt* pFmt = pRule->GetNumFmt( nLvl );
+ if( !pFmt )
+ pFmt = &pRule->Get( nLvl );
+
+ const SfxItemSet& rNdSet = rNd.GetSwAttrSet();
+
+ SfxItemSet aSet( *rNdSet.GetPool(), rNdSet.GetRanges() );
+ aSet.SetParent( &rNdSet );
+ SvxLRSpaceItem aLR( (SvxLRSpaceItem&)rNdSet.Get( RES_LR_SPACE ) );
+ aLR.SetTxtLeft( aLR.GetTxtLeft() + pFmt->GetAbsLSpace() );
+
+ if( bValidNum )
+ {
+ aLR.SetTxtFirstLineOfst( pFmt->GetFirstLineOffset() );
+ Strm() << '{' << sRTF_LISTTEXT << sRTF_PARD << sRTF_PLAIN << ' ';
+ }
+ aSet.Put( aLR );
+ Out_SfxItemSet( aRTFAttrFnTab, *this, aSet, TRUE );
+
+ if( pFmt->GetCharFmt() )
+ Out_SfxItemSet( aRTFAttrFnTab, *this,
+ pFmt->GetCharFmt()->GetAttrSet(), TRUE );
+
+ if( bValidNum )
+ {
+ String sTxt;
+ if( SVX_NUM_CHAR_SPECIAL == pFmt->eType || SVX_NUM_BITMAP == pFmt->eType )
+ sTxt = pFmt->GetBulletChar();
+ else
+ sTxt = pRule->MakeNumString( *pNdNum );
+
+ if( bOutFmtAttr )
+ {
+ Strm() << ' ';
+ bOutFmtAttr = FALSE;
+ }
+
+ RTFOutFuncs::Out_String( Strm(), sTxt, DEF_ENCODING, bWriteHelpFmt);
+
+ if( OUTLINE_RULE != pRule->GetRuleType() )
+ {
+ Strm() /*<< sRTF_TAB*/ << '}' << sRTF_ILVL;
+ if( nLvl > 8 ) // RTF-kennt nur 9 Ebenen
+ {
+ OutULong( 8 );
+ OutComment( *this, sRTF_SOUTLVL );
+ OutULong( nLvl ) << '}';
+ }
+ else
+ OutULong( nLvl );
+ Strm() << ' ';
+ }
+ else
+ Strm() /*<< sRTF_TAB*/ << '}';
+ }
+ bOutListNumTxt = FALSE;
+ }
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/rtf/rtfnum.cxx,v 1.1.1.1 2000-09-18 17:14:56 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.27 2000/09/18 16:04:51 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.26 2000/08/04 10:48:09 jp
+ Soft-/HardHyphens & HardBlanks changed from attribute to unicode character; use rtfout functions
+
+ Revision 1.25 2000/05/26 07:22:44 os
+ old SW Basic API Slots removed
+
+ Revision 1.24 2000/05/24 07:57:04 jp
+ Bugfixes for Unicode
+
+ Revision 1.23 2000/05/09 17:22:53 jp
+ Changes for Unicode
+
+ Revision 1.22 2000/03/14 17:25:25 jp
+ Bug #73968#: read and set outline/num-levels
+
+ Revision 1.21 2000/03/14 09:22:24 jp
+ Bug #73941#: remove unused numrules, share override rules
+
+ Revision 1.20 2000/03/10 17:54:09 jp
+ Bug #73965#: ReadListLevel - set no number
+
+ Revision 1.19 2000/03/10 15:56:52 jp
+ Bug #74100#: read W2000 rtf-format
+
+ Revision 1.18 2000/02/24 18:33:17 jp
+ Bug #73098#: read & write list entries without number
+
+ Revision 1.17 2000/02/17 13:46:55 jp
+ Bug #73098#: Import / Export problems
+
+ Revision 1.16 2000/02/11 14:38:01 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.15 2000/01/25 20:13:02 jp
+ Bug #72146#: read UniCode character
+
+ Revision 1.14 1999/08/03 17:47:38 JP
+ Bug #67975#: changes for import of Bulltets from interleave/WP7/Aplixware
+
+
+ Rev 1.13 03 Aug 1999 19:47:38 JP
+ Bug #67975#: changes for import of Bulltets from interleave/WP7/Aplixware
+
+ Rev 1.12 12 Jul 1999 17:35:24 JP
+ read and write outlinelevel/-numrules
+
+ Rev 1.11 30 Mar 1999 14:41:48 JP
+ Task #63049#: Numerierung mit rel. Einzuegen
+
+ Rev 1.10 29 Mar 1999 10:00:32 JP
+ Bug #63990#: NumRules immer mit negativen Erstzeileneinzug
+
+ Rev 1.9 18 Mar 1999 09:51:44 JP
+ Task #63049#: Numerierung mit rel. Einzuegen
+
+ Rev 1.8 16 Mar 1999 23:19:34 JP
+ Task #63049#: Einzuege bei NumRules relativ
+
+ Rev 1.7 05 Mar 1999 14:27:56 JP
+ Bug #57749#: spaltige Bereiche einlesen - jeder Bereich hat eigene NumRules
+
+ Rev 1.6 03 Mar 1999 15:17:22 JP
+ Bug #57749#: spaltige Bereiche einlesen
+
+ Rev 1.5 17 Nov 1998 10:45:30 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.4 21 Sep 1998 17:15:12 JP
+ RTF_LEVELNFC: 255 ist auch ein Bullet
+
+ Rev 1.3 06 Aug 1998 21:43:30 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.2 04 Jun 1998 19:28:06 JP
+ Bug #50887#: Font bei Grafik-NumFormaten ist 0, also default Font schreiben
+
+ Rev 1.1 27 May 1998 22:26:14 JP
+ Bug #50585#: ListOverrideTabelle korrekt einlesen
+
+ Rev 1.0 20 Apr 1998 17:44:00 JP
+ neu: Numerierung lesen/schreiben
+
+*************************************************************************/
+
diff --git a/sw/source/filter/rtf/rtftbl.cxx b/sw/source/filter/rtf/rtftbl.cxx
new file mode 100644
index 000000000000..11da00dbd3b9
--- /dev/null
+++ b/sw/source/filter/rtf/rtftbl.cxx
@@ -0,0 +1,978 @@
+/*************************************************************************
+ *
+ * $RCSfile: rtftbl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifdef WTC
+#define private public
+#endif
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SVX_BRKITEM_HXX
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen wg. SvxLRSpaceItem
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _RTFTOKEN_H
+#include <svtools/rtftoken.h>
+#endif
+
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _SWPARRTF_HXX
+#include <swparrtf.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+#ifndef _TBLSEL_HXX
+#include <tblsel.hxx>
+#endif
+#ifndef _SWTBLFMT_HXX
+#include <swtblfmt.hxx>
+#endif
+#ifndef _TBLENUM_HXX
+#include <tblenum.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+
+typedef SwTableBoxFmt* SwTableBoxFmtPtr;
+SV_DECL_PTRARR( SwBoxFrmFmts, SwTableBoxFmtPtr, 25, 50 )
+
+class SwShareBoxFmts;
+extern void _DeleteBox( SwTable& rTbl, SwTableBox* pBox, SwUndo* = 0,
+ BOOL = TRUE, const BOOL = TRUE, SwShareBoxFmts* = 0 );
+
+void SwRTFParser::ReadTable( int nToken )
+{
+ nInsTblRow = USHRT_MAX;
+ if( bReadNoTbl )
+ {
+ // alle Tabellen-Tokens ueberlesen
+ nToken = GetNextToken(); // RTF_TROWD ueberlesen
+ do {
+ if( RTF_TABLEDEF != (nToken & ~(0xff | RTF_SWGDEFS)) &&
+ RTF_UNKNOWNCONTROL != nToken )
+ {
+ SkipToken( -1 );
+ break;
+ }
+ nToken = GetNextToken();
+ } while( IsParserWorking() );
+ return ;
+ }
+
+ // verhinder Tabelle in Tabelle/Footnote
+ SwTwips nTblSz = 0;
+ int bReadNewCell = FALSE, bChkExistTbl = FALSE;
+
+ // kein TROWD aber ein TabellenToken -> zwischen TROWD und Tab.Token
+ // waren andere Zeichen (siehe Bug 27445.rtf)
+ if( RTF_TROWD == nToken || !pTableNode )
+ {
+ if( RTF_TROWD == nToken )
+ nToken = GetNextToken(); // RTF_TROWD ueberlesen
+
+ // Flags fuer die gemergten Boxen loeschen
+ aMergeBoxes.Remove( 0, aMergeBoxes.Count() );
+ aMergeBoxes.Insert( (BOOL)FALSE, USHORT(0) );
+ nAktBox = 0;
+
+ // wenn schon in einer Tabellen, dann splitte oder benutze
+ // die bisherigen Boxen weiter
+ bChkExistTbl = 0 != pDoc->GetNodes()[ pPam->GetPoint()->nNode ]->FindTableNode();
+ }
+ else
+ {
+ bReadNewCell = TRUE;
+ SwTableLines& rLns = pTableNode->GetTable().GetTabLines();
+ SwTableLine* pLine = rLns[ rLns.Count()-1 ];
+ for( USHORT n = nAktBox; n; )
+ nTblSz += pLine->GetTabBoxes()[ --n ]->GetFrmFmt()->
+ GetFrmSize().GetWidth();
+ }
+
+
+ SwHoriOrient eAdjust = HORI_LEFT; // default fuer Tabellen
+ USHORT nLSpace = 0, nBrdDist = MIN_BORDER_DIST;
+ SwVertOrient eVerOrient = VERT_NONE;
+ long nLineHeight = 0;
+ USHORT nBoxCnt = aMergeBoxes.Count()-1;
+ SwBoxFrmFmts aBoxFmts;
+ SwTableBoxFmt* pBoxFmt = pDoc->MakeTableBoxFmt();
+ BOOL bHeadlineRepeat = FALSE;
+
+#ifdef SET_TRGAPH
+ SvxLRSpaceItem aLR;
+#endif
+
+ int bWeiter = TRUE;
+ do {
+ switch( nToken )
+ {
+ case RTF_TRRH:
+ nLineHeight = nTokenValue;
+ break;
+
+ case RTF_CLMRG:
+ aMergeBoxes[ nBoxCnt ] = TRUE;
+ break;
+
+ case RTF_CELLX:
+ {
+ SwTableBoxFmt* pFmt = pBoxFmt;
+ SwTwips nSize = nTokenValue - nTblSz;
+ if( aMergeBoxes[ nBoxCnt ] )
+ {
+ // neue Zellen lesen und noch keine Formate vorhanden,
+ // dann benutze das der vorhergebende
+ if( bReadNewCell && !aBoxFmts.Count() )
+ {
+ SwTableLines& rLns = pTableNode->GetTable().GetTabLines();
+ SwTableLine* pLine = rLns[ rLns.Count()-1 ];
+ --nAktBox;
+ pFmt = (SwTableBoxFmt*)pLine->GetTabBoxes()[ nAktBox ]->GetFrmFmt();
+ }
+ else
+ pFmt = aBoxFmts[ aBoxFmts.Count()-1 ];
+
+ pBoxFmt->ResetAllAttr();
+ nSize += pFmt->GetFrmSize().GetWidth();
+ }
+ else
+ {
+ // Platz zwischen den Spalten angeben und ist
+ // diese auch kleiner als die Breite der Box
+#ifdef SET_TRGAPH
+ if( aLR.GetLeft() && 2L * aLR.GetLeft() < nSize )
+ pBoxFmt->SetAttr( aLR );
+ aLR.SetLeft( 0 ); aLR.SetRight( 0 );
+#endif
+ aBoxFmts.Insert( pBoxFmt, aBoxFmts.Count() );
+ pBoxFmt = pDoc->MakeTableBoxFmt();
+ }
+
+ pFmt->SetAttr( SwFmtFrmSize( ATT_VAR_SIZE, nSize, 0 ));
+ nTblSz = nTokenValue;
+ aMergeBoxes.Insert( (BOOL)FALSE, ++nBoxCnt );
+ }
+ break;
+
+ case RTF_TRGAPH:
+ {
+ nBrdDist = (USHORT)nTokenValue;
+#ifdef SET_TRGAPH
+ aLR.SetLeft( USHORT( nTokenValue ));
+ aLR.SetRight( USHORT( nTokenValue ));
+#endif
+ }
+ break;
+
+ case RTF_TRQL: eAdjust = HORI_LEFT; break;
+ case RTF_TRQR: eAdjust = HORI_RIGHT; break;
+ case RTF_TRQC: eAdjust = HORI_CENTER; break;
+
+ // mit VERT_TOP kommt der Dialog nicht klar!
+ // Bug #65126#
+ case RTF_CLVERTALT: eVerOrient = VERT_NONE; break;
+
+ case RTF_CLVERTALC: eVerOrient = VERT_CENTER; break;
+ case RTF_CLVERTALB: eVerOrient = VERT_BOTTOM; break;
+
+ case RTF_TRLEFT:
+ if( 0 <= nTokenValue )
+ {
+ if( HORI_LEFT == eAdjust )
+ eAdjust = HORI_LEFT_AND_WIDTH;
+ nLSpace = (USHORT)nTokenValue;
+ }
+ nTblSz = nTokenValue;
+ break;
+
+ case RTF_TRHDR:
+ bHeadlineRepeat = TRUE;
+ break;
+
+ case RTF_CLTXLRTB:
+ case RTF_CLTXTBRL:
+ case RTF_INTBL: // das wissen wir !
+ case RTF_CLMGF:
+ case RTF_CLVMGF:
+ case RTF_CLVMRG:
+ case RTF_LTRROW:
+ case RTF_RTLROW:
+ case RTF_TRBRDRB:
+ case RTF_TRBRDRH:
+ case RTF_TRBRDRL:
+ case RTF_TRBRDRR:
+ case RTF_TRBRDRT:
+ case RTF_TRBRDRV:
+ case RTF_TRKEEP:
+ break;
+
+ default:
+ if( ( nToken & ~(0xff | RTF_TABLEDEF)) == RTF_SHADINGDEF )
+ {
+ if( aMergeBoxes[ nBoxCnt ] )
+ break;
+ ReadBackgroundAttr( nToken,
+ (SfxItemSet&)pBoxFmt->GetAttrSet(), TRUE );
+ }
+ else if( ( nToken & ~(0xff | RTF_TABLEDEF) ) == RTF_BRDRDEF )
+ {
+ if( aMergeBoxes[ nBoxCnt ] )
+ break;
+
+ const SfxPoolItem* pItem;
+ SfxItemSet& rSet = (SfxItemSet&)pBoxFmt->GetAttrSet();
+ ReadBorderAttr( nToken, rSet, TRUE );
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_BOX, FALSE, &pItem ))
+ {
+ SvxBoxItem aBox( *(SvxBoxItem*)pItem );
+ BOOL bChg = FALSE;
+ for ( int nLn = 0; nLn < 4; ++nLn )
+ if( aBox.GetLine( nLn ) && !aBox.GetDistance( nLn ) )
+ {
+ aBox.SetDistance( 2 > nLn ? 18 : nBrdDist, nLn );
+ bChg = TRUE;
+ }
+ if( bChg )
+ rSet.Put( aBox );
+ }
+ }
+ else if( RTF_TABLEDEF != (nToken & ~(0xff | RTF_SWGDEFS)) )
+ {
+ if( RTF_UNKNOWNCONTROL == nToken )
+ NextToken( nToken );
+ else
+ bWeiter = FALSE;
+ }
+ break;
+ }
+
+ if( VERT_NONE != eVerOrient )
+ {
+ if( !aMergeBoxes[ nBoxCnt ] )
+ pBoxFmt->SetAttr( SwFmtVertOrient( 0, eVerOrient ));
+ eVerOrient = VERT_NONE;
+ }
+ if( bWeiter )
+ nToken = GetNextToken();
+ } while( bWeiter && IsParserWorking() );
+
+ // das letzte temp. BoxFmt loeschen
+ delete pBoxFmt;
+
+ // es wurde keine einzige Box erkannt
+ if( nAktBox == nBoxCnt || ( bReadNewCell && !pTableNode ))
+ {
+ SkipToken( -1 ); // zum Letzen gueltigen zurueck
+ return;
+ }
+
+ nTblSz -= nLSpace;
+
+ int bNewTbl = TRUE;
+ SwTableLine* pNewLine;
+
+ // lege eine neue Tabelle an oder erweiter die aktuelle um eine neue Line
+ // oder Box !
+ SwNode* pNd;
+
+ if( bChkExistTbl )
+ {
+ // es ist eine Tabelle vorhanden, teste mal ob die weiter benutzt
+ // werden kann oder ob sie abgesplittet und neu gefuellt werden
+ // muss.
+ pTableNode = pPam->GetNode()->FindTableNode();
+
+ // Cursor kann nur in der letzten Line stehen
+
+ // das Attribut darf nicht ueber das Modify an der
+ // Tabelle gesetzt werden, denn sonst werden alle
+ // Boxen wieder auf 0 zurueck gesetzt !!!!!
+ SwFrmFmt* pFmt = pTableNode->GetTable().GetFrmFmt();
+ const SwFmtFrmSize& rTblSz = pFmt->GetFrmSize();
+ const SwFmtHoriOrient& rHoriz = pFmt->GetHoriOrient();
+
+ const SwTableLines* pLns = &pTableNode->GetTable().GetTabLines();
+
+ if( 1 == pLns->Count() )
+ {
+ if( eAdjust != rHoriz.GetHoriOrient() )
+ {
+ ((SfxItemSet&)pFmt->GetAttrSet()).Put( SwFmtHoriOrient( 0,
+ eAdjust ) );
+ }
+ if( rTblSz.GetWidth() != nTblSz )
+ {
+ SwFmtFrmSize aSz( rTblSz );
+ aSz.SetWidth( nTblSz );
+ ((SfxItemSet&)pFmt->GetAttrSet()).Put( aSz );
+ }
+
+ if( HORI_LEFT_AND_WIDTH == eAdjust &&
+ nLSpace != pFmt->GetLRSpace().GetLeft() )
+ {
+ SvxLRSpaceItem aL; aL.SetLeft( nLSpace );
+ ((SfxItemSet&)pFmt->GetAttrSet()).Put( aL );
+ }
+ }
+ else if( 1 < pLns->Count() && ( rTblSz.GetWidth() != nTblSz
+ || rHoriz.GetHoriOrient() != eAdjust ||
+ ( HORI_LEFT_AND_WIDTH == eAdjust &&
+ nLSpace != pFmt->GetLRSpace().GetLeft() ) ||
+ bHeadlineRepeat != pTableNode->GetTable().IsHeadlineRepeat() ))
+ {
+ // Tabelle ab der PaM-Position splitten
+ pNewLine = (*pLns)[ pLns->Count() - 2 ]; // die vorherige Line!
+ SwTableBox* pBox = pNewLine->GetTabBoxes()[ 0 ];
+ while( ( pLns = &pBox->GetTabLines() )->Count() )
+ pBox = (*pLns)[ 0 ]->GetTabBoxes()[ 0 ];
+
+ SwNodeIndex aTmpIdx( *pBox->GetSttNd() );
+ pDoc->GetNodes().SplitTable( aTmpIdx, HEADLINE_NONE, FALSE );
+ pTableNode = pPam->GetNode()->FindTableNode();
+ pFmt = pTableNode->GetTable().GetFrmFmt();
+
+ SwFmtFrmSize aSz( rTblSz );
+ aSz.SetWidth( nTblSz );
+ ((SfxItemSet&)pFmt->GetAttrSet()).Put( aSz );
+ ((SfxItemSet&)pFmt->GetAttrSet()).Put( SwFmtHoriOrient( 0,
+ eAdjust ) );
+ if( HORI_LEFT_AND_WIDTH == eAdjust && nLSpace )
+ {
+ SvxLRSpaceItem aL; aL.SetLeft( nLSpace );
+ ((SfxItemSet&)pFmt->GetAttrSet()).Put( aL );
+ }
+ pTableNode->GetTable().SetHeadlineRepeat( bHeadlineRepeat );
+ }
+
+ pLns = &pTableNode->GetTable().GetTabLines();
+ pNewLine = (*pLns)[ pLns->Count() - 1 ];
+
+ // jetzt die Boxen abgleichen
+ USHORT nBoxes = Min( pNewLine->GetTabBoxes().Count(), aBoxFmts.Count() );
+ for( USHORT n = 0; n < nBoxes; ++n )
+ {
+ SwTableBox* pBox = pNewLine->GetTabBoxes()[ n ];
+ *pBox->GetFrmFmt() = *aBoxFmts[ n ];
+ delete aBoxFmts[ n ];
+ }
+ aBoxFmts.Remove( 0, n );
+
+ if( aBoxFmts.Count() ) // es muessen noch neue zugefuegt werden
+ nAktBox = n;
+ else // es mussen noch Boxen geloescht werden
+ {
+ // remove ContentIndex of other Bound
+ pPam->SetMark(); pPam->DeleteMark();
+ while( n < pNewLine->GetTabBoxes().Count() )
+ _DeleteBox( pTableNode->GetTable(),
+ pNewLine->GetTabBoxes()[ n ], 0, FALSE, FALSE );
+ }
+
+ pOldTblNd = pTableNode;
+ bNewTbl = FALSE;
+
+ {
+ // JP 13.08.98: TabellenUmrandungen optimieren - Bug 53525
+ void* p = pFmt;
+ aTblFmts.Insert( p, aTblFmts.Count() );
+ }
+ }
+ else
+ {
+ if( !bReadNewCell && ( pNd = pDoc->GetNodes()[
+ pPam->GetPoint()->nNode.GetIndex()-1 ])->IsEndNode() )
+ {
+ pTableNode = pNd->StartOfSectionNode()->GetTableNode();
+ if( pTableNode )
+ {
+ // dann test mal ob wirklich nur eine neue Line eingefuegt
+ // werden soll!
+ SwFrmFmt* pFmt = pTableNode->GetTable().GetFrmFmt();
+ const SwFmtFrmSize& rTblSz = pFmt->GetFrmSize();
+ const SwFmtHoriOrient& rHoriz = pFmt->GetHoriOrient();
+ if( rTblSz.GetWidth() != nTblSz
+ || rHoriz.GetHoriOrient() != eAdjust )
+ pTableNode = 0;
+ }
+ }
+
+ if( pTableNode )
+ {
+
+ // das Attribut darf nicht ueber das Modify an der
+ // Tabelle gesetzt werden, denn sonst werden alle
+ // Boxen wieder auf 0 zurueck gesetzt !!!!!
+ SwFrmFmt* pFmt = pTableNode->GetTable().GetFrmFmt();
+ const SwFmtFrmSize& rTblSz = pFmt->GetFrmSize();
+ if( rTblSz.GetWidth() < nTblSz )
+ {
+ SwFmtFrmSize aSz( rTblSz );
+ aSz.SetWidth( nTblSz );
+ ((SfxItemSet&)pFmt->GetAttrSet()).Put( aSz );
+ }
+
+ SwTableLines& rLns = pTableNode->GetTable().GetTabLines();
+
+ if( bReadNewCell )
+ pNewLine = rLns[ rLns.Count()-1 ];
+ else
+ {
+ pNewLine = new SwTableLine(
+ (SwTableLineFmt*)rLns[ rLns.Count()-1 ]->GetFrmFmt(),
+ aBoxFmts.Count(), 0 );
+ pNewLine->ClaimFrmFmt();
+ pNewLine->GetFrmFmt()->ResetAttr( RES_FRM_SIZE );
+ rLns.C40_INSERT( SwTableLine, pNewLine, rLns.Count() );
+ }
+ bNewTbl = FALSE;
+ }
+ else
+ {
+ if( pPam->GetPoint()->nContent.GetIndex() )
+ InsertPara();
+
+ pDoc->InsertTable( *pPam->GetPoint(), 1, 1, eAdjust );
+ pTableNode = pDoc->GetNodes()[ pPam->GetPoint()->nNode.
+ GetIndex() - 5 ]->GetTableNode();
+ ASSERT( pTableNode, "Wo ist mein TabellenNode?" );
+
+ SwTableLines& rLns = pTableNode->GetTable().GetTabLines();
+ pNewLine = rLns[ rLns.Count()-1 ];
+
+ SwFrmFmt* pFmt = pTableNode->GetTable().GetFrmFmt();
+ SwFmtFrmSize aSz( pFmt->GetFrmSize() );
+ aSz.SetWidth( nTblSz );
+ ((SfxItemSet&)pFmt->GetAttrSet()).Put( aSz );
+
+ if( HORI_LEFT_AND_WIDTH == eAdjust && nLSpace )
+ {
+ SvxLRSpaceItem aL; aL.SetLeft( nLSpace );
+ ((SfxItemSet&)pFmt->GetAttrSet()).Put( aL );
+ }
+ pTableNode->GetTable().SetHeadlineRepeat( bHeadlineRepeat );
+
+ nAktBox = 0;
+ pOldTblNd = pTableNode;
+
+ {
+ // JP 13.08.98: TabellenUmrandungen optimieren - Bug 53525
+ void* p = pFmt;
+ aTblFmts.Insert( p, aTblFmts.Count() );
+ }
+ }
+ }
+
+ if( nLineHeight )
+ {
+ SwFrmSize eSize;
+ if( 0 > nLineHeight )
+ eSize = ATT_FIX_SIZE, nLineHeight = -nLineHeight;
+ else
+ eSize = ATT_MIN_SIZE;
+ pNewLine->ClaimFrmFmt()->SetAttr( SwFmtFrmSize( eSize, 0, nLineHeight ));
+ }
+
+ if( aBoxFmts.Count() )
+ {
+ // setze das default Style
+ SwTxtFmtColl* pColl = aTxtCollTbl.Get( 0 );
+ if( !pColl )
+ pColl = pDoc->GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+
+ USHORT nStt = 0;
+ if( bNewTbl )
+ {
+ SwTableBox* pBox = pNewLine->GetTabBoxes()[0];
+ pBoxFmt = (SwTableBoxFmt*)pBox->GetFrmFmt();
+ pBoxFmt->Remove( pBox );
+ delete pBoxFmt;
+ aBoxFmts[0]->Add( pBox );
+ SwTxtNode* pTNd = pDoc->GetNodes()[ pBox->GetSttIdx()+1 ]
+ ->GetTxtNode();
+ ASSERT( pTNd, "wo ist der Textnode dieser Box?" );
+ pTNd->ChgFmtColl( pColl );
+ ++nStt;
+ }
+
+ for( ; nStt < aBoxFmts.Count(); ++nStt )
+ {
+ pDoc->GetNodes().InsBoxen( pTableNode, pNewLine,
+ aBoxFmts[ nStt ],
+ // Formate fuer den TextNode der Box
+ pColl, 0,
+ nAktBox + nStt, 1 );
+ }
+ }
+
+ if( bChkExistTbl )
+ nAktBox = 0;
+
+ if( pDoc->GetRootFrm() )
+ {
+ // exitiert schon ein Layout, dann muss an dieser Tabelle die
+ // BoxFrames neu erzeugt werden.
+ pTableNode->DelFrms();
+ pTableNode->MakeFrms( &pPam->GetPoint()->nNode );
+ }
+
+ ULONG nOldPos = pPam->GetPoint()->nNode.GetIndex();
+ SwTableBox* pBox = pNewLine->GetTabBoxes()[ nAktBox ];
+ pPam->GetPoint()->nNode = *pBox->GetSttNd()->EndOfSectionNode();
+ pPam->Move( fnMoveBackward, fnGoCntnt );
+
+ // alle Attribute, die schon auf den nachfolgen zeigen auf die neue
+ // Box umsetzen !!
+ SvxRTFItemStack& rAttrStk = GetAttrStack();
+ const SvxRTFItemStackType* pStk;
+ for( USHORT n = 0; n < rAttrStk.Count(); ++n )
+ if( ( pStk = rAttrStk[ n ])->GetSttNodeIdx() == ULONG(nOldPos) &&
+ !pStk->GetSttCnt() )
+ ((SvxRTFItemStackType*)pStk)->SetStartPos( SwxPosition( pPam ) );
+
+ SkipToken( -1 ); // zum Letzen gueltigen zurueck
+}
+
+
+// in die naechste Box dieser Line (opt.: falls es nicht die letzte ist)
+void SwRTFParser::GotoNextBox()
+{
+ nInsTblRow = USHRT_MAX;
+
+ ASSERT( pTableNode, "Kein Tabellennode, dann auch keine Box" );
+
+ SwTableLines& rLns = pTableNode->GetTable().GetTabLines();
+ SwTableLine* pLine = rLns[ rLns.Count()-1 ];
+ SwTableBoxes& rBoxes = pLine->GetTabBoxes();
+ SwTableBox* pBox = rBoxes[ rBoxes.Count()-1 ];
+
+ if( ++nAktBox >= aMergeBoxes.Count() )
+ nAktBox = aMergeBoxes.Count()-1;
+
+ if( !aMergeBoxes[ nAktBox ] )
+ {
+ int bMove = TRUE;
+ if( pBox->GetSttIdx() > pPam->GetPoint()->nNode.GetIndex() )
+ {
+ USHORT nRealBox = 0;
+ for( USHORT nTmp = 0; nTmp < nAktBox; ++nTmp )
+ if( !aMergeBoxes[ nTmp ] )
+ ++nRealBox;
+
+ if( nRealBox < rBoxes.Count() )
+ {
+ pPam->GetPoint()->nNode = *rBoxes[ nRealBox ]->GetSttNd()->EndOfSectionNode();
+ pPam->Move( fnMoveBackward, fnGoCntnt );
+ bMove = FALSE;
+ }
+ }
+
+ if( bMove && nAktBox + 1 == aMergeBoxes.Count() )
+ // dann hinter die Tabelle
+ pPam->Move( fnMoveForward, fnGoNode );
+ }
+ else if( !pDoc->GetNodes()[ pPam->GetPoint()->nNode ]->IsCntntNode() )
+ // dann in die vorherige ans Ende
+ pPam->Move( fnMoveBackward, fnGoCntnt );
+}
+
+
+void SwRTFParser::NewTblLine()
+{
+ nInsTblRow = USHRT_MAX;
+
+ // erweiter die aktuelle um eine neue Line
+ FASTBOOL bMakeCopy = FALSE;
+ SwNode* pNd = pDoc->GetNodes()[ pPam->GetPoint()->nNode.GetIndex()-1 ];
+ if( !pNd->IsEndNode() ||
+ !(pNd = pNd->StartOfSectionNode())->IsTableNode() )
+ {
+ if( !pOldTblNd )
+ return ;
+
+ bMakeCopy = TRUE;
+ pNd = pOldTblNd;
+ }
+ pTableNode = (SwTableNode*)pNd;
+
+ SwTableLines* pLns = &pTableNode->GetTable().GetTabLines();
+ SwTableLine* pLine = (*pLns)[ pLns->Count()-1 ];
+ SwTableBoxes& rBoxes = pLine->GetTabBoxes();
+ SwTableBox* pBox = rBoxes[ rBoxes.Count()-1 ];
+
+ if( !bMakeCopy &&
+ 64000 < pTableNode->GetTable().GetTabSortBoxes().Count() )
+ {
+ bMakeCopy = TRUE; // spaetestens jetzt eine neue anfangen!
+ }
+
+ if( bMakeCopy )
+ {
+ // und die Selektion kopieren
+ SwSelBoxes aBoxes;
+ pTableNode->GetTable().SelLineFromBox( pBox, aBoxes );
+ pTableNode->GetTable().MakeCopy( pDoc, *pPam->GetPoint(),
+ aBoxes, FALSE );
+ ULONG nNd = pPam->GetPoint()->nNode.GetIndex()-1;
+ pTableNode = pDoc->GetNodes()[ nNd ]->FindTableNode();
+ pOldTblNd = pTableNode;
+
+ pLns = &pTableNode->GetTable().GetTabLines();
+ }
+ else
+// pDoc->InsertRow( aBoxes );
+ pTableNode->GetTable().AppendRow( pDoc );
+
+ pBox = (*pLns)[ pLns->Count()-1 ]->GetTabBoxes()[0];
+
+ ULONG nOldPos = pPam->GetPoint()->nNode.GetIndex();
+ pPam->GetPoint()->nNode = *pBox->GetSttNd();
+ pPam->Move( fnMoveForward );
+ nAktBox = 0;
+
+ // alle Nodes in den Boxen auf die "default" Vorlage setzten
+ {
+ SwTxtFmtColl* pColl = aTxtCollTbl.Get( 0 );
+ if( !pColl )
+ pColl = pDoc->GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+ pPam->SetMark();
+
+ pLine = (*pLns)[ pLns->Count()-1 ];
+ pBox = pLine->GetTabBoxes()[ pLine->GetTabBoxes().Count() -1 ];
+ pPam->GetPoint()->nNode = *pBox->GetSttNd()->EndOfSectionNode();
+ pPam->Move( fnMoveBackward );
+ pDoc->SetTxtFmtColl( *pPam, pColl );
+ // Bug 73940 - remove ALL attributes (NumRules/Break/etc.)
+ {
+ SwNodeIndex aIdx( pPam->GetMark()->nNode );
+ SwNodeIndex& rEndIdx = pPam->GetPoint()->nNode;
+ while( aIdx <= rEndIdx )
+ {
+ SwCntntNode* pCNd = aIdx.GetNode().GetCntntNode();
+ if( pCNd && pCNd->GetpSwAttrSet() )
+ pCNd->ResetAllAttr();
+ aIdx++;
+ }
+ }
+ pPam->Exchange();
+ pPam->DeleteMark();
+ }
+
+ // alle Attribute, die schon auf den nachfolgen zeigen auf die neue
+ // Box umsetzen !!
+ SvxRTFItemStack& rAttrStk = GetAttrStack();
+ const SvxRTFItemStackType* pStk;
+ for( USHORT n = 0; n < rAttrStk.Count(); ++n )
+ if( ( pStk = rAttrStk[ n ])->GetSttNodeIdx() == ULONG(nOldPos) &&
+ !pStk->GetSttCnt() )
+ ((SvxRTFItemStackType*)pStk)->SetStartPos( SwxPosition( pPam ) );
+}
+
+void SwRTFParser::CheckInsNewTblLine()
+{
+ if( USHRT_MAX != nInsTblRow )
+ {
+ if( nInsTblRow > GetOpenBrakets() || IsPardTokenRead() )
+ nInsTblRow = USHRT_MAX;
+ else if( !pTableNode ) // Tabelle nicht mehr vorhanden ?
+ NewTblLine(); // evt. Line copieren
+ }
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.64 2000/09/18 16:04:51 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.63 2000/05/09 17:22:57 jp
+ Changes for Unicode
+
+ Revision 1.62 2000/03/15 18:22:45 jp
+ Bug #73972#: ReadTable - set distance on the borderlines
+
+ Revision 1.61 2000/03/14 09:55:41 jp
+ Bug #73940#: NewTableLine - remove all attributes after copying the row
+
+ Revision 1.60 2000/02/17 13:46:58 jp
+ Bug #73098#: Import / Export problems
+
+ Revision 1.59 1999/09/09 17:46:33 jp
+ Bug #68573#: InsertTable - dont insert paragraph at start doc
+
+ Revision 1.58 1999/08/11 14:52:54 JP
+ Bug #68058#: read/write repeated tableheadlines
+
+
+ Rev 1.57 11 Aug 1999 16:52:54 JP
+ Bug #68058#: read/write repeated tableheadlines
+
+ Rev 1.56 09 Aug 1999 14:34:04 JP
+ Bug #68058#: read/write repeated tableheadlines
+
+ Rev 1.55 05 Aug 1999 22:52:38 JP
+ Bug #68095#: save tablefmt for optimize the tableborders
+
+ Rev 1.54 03 Aug 1999 19:51:12 JP
+ Bug #67984#: read trleft token
+
+ Rev 1.53 22 Jul 1999 19:59:40 JP
+ Bug #54824#: read&write tableposition 'from left'
+
+ Rev 1.52 21 Apr 1999 13:31:20 JP
+ Bug #65126#: kein VertTop bei Tabellenzellen setzen
+
+ Rev 1.51 01 Apr 1999 16:46:12 JP
+ Bug #64291#: Tabellenhoehe lesen/schreiben
+
+ Rev 1.50 29 Mar 1999 16:28:20 JP
+ Bug #62847#: Parameter vom DeleteBox haben sich geaendert
+
+ Rev 1.49 11 Feb 1999 23:43:50 JP
+ Bug #55590#: Schnittstelle geaendert
+
+ Rev 1.48 18 Dec 1998 18:02:38 JP
+ #59571#: Teilfix - Tabelle splitten, wenn die SortBoxes > 64000
+
+ Rev 1.47 15 Dec 1998 17:49:22 JP
+ #59571#: Teilfix - statt InsertRow am Doc das neue AppendRow an der Tabelle benutzen
+
+ Rev 1.46 13 Aug 1998 10:33:24 JP
+ Bug #53525#: Tabellen - an den Kanten keine doppelte Umrandung mehr
+
+ Rev 1.45 27 May 1998 22:27:10 JP
+ Tokens fuer vertikale Ausrichtung in den Boxen beachten
+
+ Rev 1.44 16 Mar 1998 23:21:40 JP
+ SplitTable hat neuen Parameter bekommen
+
+ Rev 1.43 20 Feb 1998 13:36:34 MA
+ headerfiles gewandert
+
+ Rev 1.42 04 Feb 1998 09:18:10 JP
+ DelFrmFmt: bei TabellenBoxen/Lines direkt das FrmFmt loeschen
+
+ Rev 1.41 26 Nov 1997 15:05:34 MA
+ headerfiles
+
+ Rev 1.40 25 Nov 1997 15:11:30 JP
+ Headerfiles
+
+ Rev 1.39 03 Nov 1997 14:10:34 MA
+ precomp entfernt
+
+ Rev 1.38 29 Oct 1997 13:37:50 JP
+ Bug #45159#: PageDesc/-Break wird vom InsertTable schon uebernommen
+
+ Rev 1.37 09 Oct 1997 14:27:50 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.36 15 Aug 1997 12:51:50 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.35 11 Aug 1997 17:48:48 OS
+ Header-Umstellung
+
+ Rev 1.34 07 Aug 1997 15:06:40 OM
+ Headerfile-Umstellung
+
+ Rev 1.33 27 Jun 1997 11:34:36 JP
+ Bug #40723#: erst pard oder neue Ebene nach einem row hebt die Tabelle auf
+
+ Rev 1.32 09 Jun 1997 11:22:30 NF
+ lcl_DeleteBox richtig als extern declariert
+
+ Rev 1.31 06 Jun 1997 13:25:52 JP
+ lcl_DeleteBox: weiterer Parameter
+
+ Rev 1.30 06 May 1997 12:07:14 MA
+ swtablehxx aufgeteilt
+
+ Rev 1.29 17 Apr 1997 15:17:10 JP
+ segmentc entfernt
+
+ Rev 1.28 17 Apr 1997 15:15:56 JP
+ Bug #38923#: beim einfuegen von Zellen, kann die erste eine gemergt sein
+
+ Rev 1.27 20 Jan 1997 19:21:46 JP
+ neu: SwTableFmt/-LineFmt/-BoxFmt statt SwFrmFmt
+
+ Rev 1.26 14 Jan 1997 18:41:40 JP
+ Tabelle: Umbrueche im Tabellenformat beachten
+
+ Rev 1.25 20 Dec 1996 19:37:36 JP
+ Bug #34702#: Tabellentokens hier auswerten, auch unbekannte!
+
+ Rev 1.24 02 Dec 1996 14:51:28 TRI
+ bei WTC ist private jetzt public
+
+ Rev 1.23 29 Oct 1996 12:58:48 JP
+ am Doc ist das NodesArray nur noch ueber Get..() zugaenglich
+
+ Rev 1.22 18 Sep 1996 13:47:06 JP
+ extern Deklaration zum DeleteBox geaendert
+
+ Rev 1.21 20 Aug 1996 14:57:44 TRI
+ C40_INSERT statt Insert
+
+ Rev 1.20 22 Jul 1996 11:53:46 JP
+ Bug #27445#: Attribute zwischen TabellenDef und ZellenDef erkennen
+
+ Rev 1.19 04 Jul 1996 15:01:56 JP
+ Tabellen einlesen korrigiert
+
+ Rev 1.18 28 Jun 1996 15:07:32 MA
+ includes
+
+ Rev 1.17 19 Jun 1996 09:38:30 JP
+ Tabellen bekommen beim Insert schon einen eindeutigen Namen
+
+ Rev 1.16 25 Apr 1996 13:56:42 MIB
+ Verschiebung SvHTMLParser in Gooedies
+
+ Rev 1.15 15 Jan 1996 13:01:22 JP
+ Bug #24234#: Tabellen bekommen einen eindeutigen Namen
+
+ Rev 1.14 09 Jan 1996 11:53:48 JP
+ Bug 23680: ReadTable - TabelleInTabelle immer abpruefen
+
+ Rev 1.13 13 Dec 1995 10:35:50 MA
+ opt: Bessere Defaults fuer Arrays
+
+ Rev 1.12 24 Nov 1995 17:24:04 OM
+ PCH->PRECOMPILED
+
+ Rev 1.11 30 Oct 1995 21:18:56 JP
+ intbl refernziert auch vorher eingelesene Tabellen
+
+ Rev 1.10 21 Aug 1995 21:30:36 JP
+ svxitems-HeaderFile entfernt
+
+ Rev 1.9 27 Jul 1995 09:28:24 mk
+ an SCC4.0.1a angepasst (MDA)
+
+ Rev 1.8 20 Jun 1995 16:49:10 MA
+ SwFmtBreak -> SvxFmtBreakItem
+
+ Rev 1.7 30 May 1995 08:19:54 SWG
+ forward fuer svtool.hxx!!!
+
+ Rev 1.6 03 Apr 1995 20:51:42 JP
+ fuer PreComp.Header eingerichtet
+
+ Rev 1.5 08 Feb 1995 09:43:08 JP
+ alten RTF-Parser entfernt, Sw_RTF -> SwRTF
+
+ Rev 1.4 02 Feb 1995 18:38:14 JP
+ Tabelle: fuege Boxen auch einzeln ein
+
+ Rev 1.3 27 Jan 1995 08:15:50 JP
+ sBoxFmtNm kommt jetzt aus Table-Header
+
+ Rev 1.2 15 Jan 1995 20:34:38 JP
+ verhinder Tabelle in Tabelle/Fussnote
+
+ Rev 1.1 11 Jan 1995 19:36:28 JP
+ RTF-Reader fertiggestellt
+
+ Rev 1.0 06 Jan 1995 12:07:42 JP
+ Initial revision.
+
+*************************************************************************/
+
+
diff --git a/sw/source/filter/rtf/swparrtf.cxx b/sw/source/filter/rtf/swparrtf.cxx
new file mode 100644
index 000000000000..b59591295a76
--- /dev/null
+++ b/sw/source/filter/rtf/swparrtf.cxx
@@ -0,0 +1,3818 @@
+/*************************************************************************
+ *
+ * $RCSfile: swparrtf.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+
+#ifndef _TOOLS_TEMPFILE_HXX
+#include <tools/tempfile.hxx>
+#endif
+#ifndef __RSC //autogen
+#include <tools/errinf.hxx>
+#endif
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _RTFTOKEN_H
+#include <svtools/rtftoken.h>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _TEXTCONV_HXX //autogen
+#include <svx/textconv.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_TSTPITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVX_LSPCITEM_HXX //autogen
+#include <svx/lspcitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ESCPITEM_HXX //autogen
+#include <svx/escpitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTFLD_HXX //autogen
+#include <fmtfld.hxx>
+#endif
+#ifndef _FMTHBSH_HXX //autogen
+#include <fmthbsh.hxx>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _TXTFTN_HXX //autogen
+#include <txtftn.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTFTN_HXX //autogen
+#include <fmtftn.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTFLCNT_HXX //autogen
+#include <fmtflcnt.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _DOCSTAT_HXX //autogen
+#include <docstat.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx> // ...Percent()
+#endif
+#ifndef _SWPARRTF_HXX
+#include <swparrtf.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _CHARFMT_HXX
+#include <charfmt.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+#ifndef _FTNINFO_HXX
+#include <ftninfo.hxx>
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _FLDDAT_HXX
+#include <flddat.hxx>
+#endif
+#ifndef _FLTINI_HXX
+#include <fltini.hxx>
+#endif
+#ifndef _FCHRFMT_HXX
+#include <fchrfmt.hxx>
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+#ifndef _SECTIOM_HXX
+#include <section.hxx>
+#endif
+#ifndef _FMTCLBL_HXX
+#include <fmtclbl.hxx>
+#endif
+
+#ifndef _SWSWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _STATSTR_HRC
+#include <statstr.hrc> // ResId fuer Statusleiste
+#endif
+
+
+// einige Hilfs-Funktionen
+// char
+inline const SvxFontHeightItem& GetSize(const SfxItemSet& rSet,BOOL bInP=TRUE)
+ { return (const SvxFontHeightItem&)rSet.Get( RES_CHRATR_FONTSIZE,bInP); }
+inline const SvxLRSpaceItem& GetLRSpace(const SfxItemSet& rSet,BOOL bInP=TRUE)
+ { return (const SvxLRSpaceItem&)rSet.Get( RES_LR_SPACE,bInP); }
+
+
+/* */
+#ifdef DEBUG_JP
+
+static void OutStyle( const SwPaM& rPam, const SwTxtFmtColl& rColl );
+static void OutSet( const SwPaM& rPam, const SfxItemSet& rSet );
+static void OutText( const SwPaM& rPam, const sal_Char* pText );
+static void DumpStart();
+static void DumpEnde();
+
+#define DUMP_INIT DumpStart();
+#define DUMP_FINIT DumpEnde();
+#define DUMP_SET( pam, set ) OutSet( pam, set );
+#define DUMP_STYLE( pam, ss ) OutStyle( pam, ss );
+#define DUMP_TXT( pam, txt ) OutText( pam, txt );
+
+#else
+
+#define DUMP_INIT
+#define DUMP_FINIT
+#define DUMP_SET( pam, set )
+#define DUMP_STYLE( pam, ss )
+#define DUMP_TXT( pam, txt )
+
+#endif
+
+/* */
+
+// Aufruf fuer die allg. Reader-Schnittstelle
+ULONG RtfReader::Read( SwDoc &rDoc,SwPaM &rPam, const String &)
+{
+ if( !pStrm )
+ {
+ ASSERT( FALSE, "RTF-Read ohne Stream" );
+ return ERR_SWG_READ_ERROR;
+ }
+
+ //JP 18.01.96: Alle Ueberschriften sind normalerweise ohne
+ // Kapitelnummer. Darum hier explizit abschalten
+ // weil das Default jetzt wieder auf AN ist.
+ if( !bInsertMode )
+ {
+ Reader::SetNoOutlineNum( rDoc );
+
+ // MIB 27.09.96: Umrandung uns Abstaende aus Frm-Vorlagen entf.
+ Reader::ResetFrmFmts( rDoc );
+ }
+
+ ULONG nRet = 0;
+ SvParserRef xParser = new SwRTFParser( &rDoc, rPam, *pStrm,!bInsertMode );
+ SvParserState eState = xParser->CallParser();
+ if( SVPAR_PENDING != eState && SVPAR_ACCEPTED != eState )
+ {
+ String sErr( String::CreateFromInt32( xParser->GetLineNr() ));
+ sErr += ',';
+ sErr += String::CreateFromInt32( xParser->GetLinePos() );
+
+ nRet = *new StringErrorInfo( ERR_FORMAT_ROWCOL, sErr,
+ ERRCODE_BUTTON_OK | ERRCODE_MSG_ERROR );
+ }
+ return nRet;
+}
+
+SwRTFParser::SwRTFParser( SwDoc* pD, const SwPaM& rCrsr, SvStream& rIn,
+ int bReadNewDoc )
+ : SvxRTFParser( pD->GetAttrPool(), rIn, bReadNewDoc ),
+ pDoc( pD ),
+ pTableNode( 0 ), pOldTblNd( 0 ), nAktBox( 0 ), nNewNumSectDef( USHRT_MAX ),
+ nAktPageDesc( 0 ), nAktFirstPageDesc( 0 ),
+ pGrfAttrSet( 0 ),
+ aMergeBoxes( 0, 5 ),
+ nInsTblRow( USHRT_MAX ),
+ pSttNdIdx( 0 ),
+ pRegionEndIdx( 0 ),
+ pRelNumRule( new SwRelNumRuleSpaces( *pD, bReadNewDoc )),
+ aTblFmts( 0, 10 )
+{
+ bReadNoTbl = bReadSwFly = bSwPageDesc = bStyleTabValid =
+ bInPgDscTbl = bNewNumList = FALSE;
+ bFirstContinue = bFirstDocControl = TRUE;
+
+ pPam = new SwPaM( *rCrsr.GetPoint() );
+ SetInsPos( SwxPosition( pPam ) );
+ SetChkStyleAttr( TRUE );
+ SetCalcValue( FALSE );
+ SetReadDocInfo( TRUE );
+
+ // diese sollen zusaetzlich ueber \pard zurueck gesetzt werden
+ USHORT temp;
+ temp = RES_TXTATR_CHARFMT; AddPlainAttr( temp );
+ temp = RES_PAGEDESC; AddPardAttr( temp );
+ temp = RES_BREAK; AddPardAttr( temp );
+ temp = RES_PARATR_NUMRULE; AddPardAttr( temp );
+ temp = FN_PARAM_NUM_LEVEL; AddPardAttr( temp );
+
+ DUMP_INIT
+}
+
+// Aufruf des Parsers
+SvParserState SwRTFParser::CallParser()
+{
+ bReadNoTbl = FALSE;
+ bFirstContinue = TRUE;
+
+ rInput.Seek(STREAM_SEEK_TO_BEGIN);
+ rInput.ResetError();
+
+ return SvxRTFParser::CallParser();
+}
+
+
+void SwRTFParser::Continue( int nToken )
+{
+ if( bFirstContinue )
+ {
+ bFirstContinue = FALSE;
+
+ // einen temporaeren Index anlegen, auf Pos 0 so wird er nicht bewegt!
+ pSttNdIdx = new SwNodeIndex( pDoc->GetNodes() );
+ if( !IsNewDoc() ) // in ein Dokument einfuegen ?
+ {
+ const SwPosition* pPos = pPam->GetPoint();
+ SwTxtNode* pSttNd = pPos->nNode.GetNode().GetTxtNode();
+
+ pDoc->SplitNode( *pPos );
+
+ *pSttNdIdx = pPos->nNode.GetIndex()-1;
+ pDoc->SplitNode( *pPos );
+
+ pPam->Move( fnMoveBackward );
+ pDoc->SetTxtFmtColl( *pPam, pDoc->GetTxtCollFromPool( RES_POOLCOLL_STANDARD ));
+
+ // verhinder das einlesen von Tabellen in Fussnoten / Tabellen
+ ULONG nNd = pPos->nNode.GetIndex();
+ bReadNoTbl = 0 != pSttNd->FindTableNode() ||
+ ( nNd < pDoc->GetNodes().GetEndOfInserts().GetIndex() &&
+ pDoc->GetNodes().GetEndOfInserts().StartOfSectionIndex() < nNd );
+ }
+
+ // Laufbalken anzeigen, aber nur bei synchronem Call
+ ULONG nCurrPos = rInput.Tell();
+ rInput.Seek(STREAM_SEEK_TO_END);
+ rInput.ResetError();
+ ::StartProgress( STR_STATSTR_W4WREAD, 0, rInput.Tell(), pDoc->GetDocShell());
+ rInput.Seek( nCurrPos );
+ rInput.ResetError();
+ }
+
+ SvxRTFParser::Continue( nToken );
+
+ if( SVPAR_PENDING == GetStatus() )
+ return ; // weiter gehts beim naechsten mal
+
+ // Laufbalken bei asynchronen Call nicht einschalten !!!
+ ::EndProgress( pDoc->GetDocShell() );
+
+#ifdef DEBUG_JP
+{
+extern Writer* GetDebugWriter(const String&);
+ Writer* pWriter = GetDebugWriter(aEmptyStr);
+ if( pWriter )
+ {
+ SwWriter( SvFileStream( "f:\\tmp\\$$rtf_1.db", STREAM_WRITE ),
+ *pDoc ).Write( pWriter );
+ }
+}
+#endif
+
+
+ {
+ // JP 13.08.98: TabellenUmrandungen optimieren - Bug 53525
+ for( USHORT n = aTblFmts.Count(); n; )
+ {
+ SwTable* pTbl = SwTable::FindTable( (SwFrmFmt*)aTblFmts[ --n ] );
+ if( pTbl )
+ pTbl->GCBorderLines();
+ }
+ }
+
+ pRelNumRule->SetNumRelSpaces( *pDoc );
+
+ // den Start wieder korrigieren
+ if( !IsNewDoc() && pSttNdIdx->GetIndex() )
+ {
+ //die Flys muessen zuerst zurecht gerueckt werden, denn sonst wird
+ // ein am 1. Absatz verankerter Fly falsch eingefuegt
+ if( SVPAR_ACCEPTED == eState )
+ {
+ if( aFlyArr.Count() )
+ SetFlysInDoc();
+ pRelNumRule->SetOultineRelSpaces( *pSttNdIdx, pPam->GetPoint()->nNode );
+ }
+
+ SwTxtNode* pTxtNode = pSttNdIdx->GetNode().GetTxtNode();
+ SwNodeIndex aNxtIdx( *pSttNdIdx );
+ if( pTxtNode && pTxtNode->CanJoinNext( &aNxtIdx ))
+ {
+ xub_StrLen nStt = pTxtNode->GetTxt().Len();
+ // wenn der Cursor noch in dem Node steht, dann setze in an das Ende
+ if( pPam->GetPoint()->nNode == aNxtIdx )
+ {
+ pPam->GetPoint()->nNode = *pSttNdIdx;
+ pPam->GetPoint()->nContent.Assign( pTxtNode, nStt );
+ }
+
+#ifndef PRODUCT
+// !!! sollte nicht moeglich sein, oder ??
+ASSERT( pSttNdIdx->GetIndex()+1 != pPam->GetBound( TRUE ).nNode.GetIndex(),
+ "Pam.Bound1 steht noch im Node" );
+ASSERT( pSttNdIdx->GetIndex()+1 != pPam->GetBound( FALSE ).nNode.GetIndex(),
+ "Pam.Bound2 steht noch im Node" );
+
+if( pSttNdIdx->GetIndex()+1 == pPam->GetBound( TRUE ).nNode.GetIndex() )
+{
+ register xub_StrLen nCntPos = pPam->GetBound( TRUE ).nContent.GetIndex();
+ pPam->GetBound( TRUE ).nContent.Assign( pTxtNode,
+ pTxtNode->GetTxt().Len() + nCntPos );
+}
+if( pSttNdIdx->GetIndex()+1 == pPam->GetBound( FALSE ).nNode.GetIndex() )
+{
+ register xub_StrLen nCntPos = pPam->GetBound( FALSE ).nContent.GetIndex();
+ pPam->GetBound( FALSE ).nContent.Assign( pTxtNode,
+ pTxtNode->GetTxt().Len() + nCntPos );
+}
+#endif
+ // Zeichen Attribute beibehalten!
+ SwTxtNode* pDelNd = aNxtIdx.GetNode().GetTxtNode();
+ if( pTxtNode->GetTxt().Len() )
+ pDelNd->FmtToTxtAttr( pTxtNode );
+ else
+ pTxtNode->ChgFmtColl( pDelNd->GetTxtColl() );
+ pTxtNode->JoinNext();
+ }
+ }
+
+ if( SVPAR_ACCEPTED == eState )
+ {
+ // den letzen Bereich wieder zumachen
+ if( pRegionEndIdx )
+ {
+ // JP 06.01.00: Task 71411 - the last section in WW are not a
+ // balanced Section.
+ if( !GetVersionNo() )
+ {
+ SwSectionNode* pSectNd = pRegionEndIdx->GetNode().
+ FindStartNode()->GetSectionNode();
+ if( pSectNd )
+ pSectNd->GetSection().GetFmt()->SetAttr(
+ SwFmtNoBalancedColumns( TRUE ) );
+ }
+
+ DelLastNode();
+ pPam->GetPoint()->nNode = *pRegionEndIdx;
+ pPam->Move( fnMoveForward, fnGoNode );
+ delete pRegionEndIdx, pRegionEndIdx = 0;
+ }
+
+ if( aFlyArr.Count() )
+ SetFlysInDoc();
+
+ // jetzt noch den letzten ueberfluessigen Absatz loeschen
+ SwPosition* pPos = pPam->GetPoint();
+ if( !pPos->nContent.GetIndex() )
+ {
+ SwTxtNode* pAktNd;
+ ULONG nNodeIdx = pPos->nNode.GetIndex();
+ if( IsNewDoc() )
+ {
+ SwNode* pTmp = pDoc->GetNodes()[ nNodeIdx -1 ];
+ if( pTmp->IsCntntNode() && !pTmp->FindTableNode() )
+ DelLastNode();
+ }
+ else if( 0 != ( pAktNd = pDoc->GetNodes()[ nNodeIdx ]->GetTxtNode()) )
+ {
+ if( pAktNd->CanJoinNext( &pPos->nNode ))
+ {
+ SwTxtNode* pNextNd = pPos->nNode.GetNode().GetTxtNode();
+ pPos->nContent.Assign( pNextNd, 0 );
+ pPam->SetMark(); pPam->DeleteMark();
+ pNextNd->JoinPrev();
+ }
+ else if( !pAktNd->GetTxt().Len() &&
+ pAktNd->StartOfSectionIndex()+2 <
+ pAktNd->EndOfSectionIndex() )
+ {
+ pPos->nContent.Assign( 0, 0 );
+ pPam->SetMark(); pPam->DeleteMark();
+ pDoc->GetNodes().Delete( pPos->nNode, 1 );
+ pPam->Move( fnMoveBackward );
+ }
+ }
+ }
+
+ // nun noch das SplitNode vom Ende aufheben
+ else if( !IsNewDoc() )
+ {
+ if( pPos->nContent.GetIndex() ) // dann gabs am Ende kein \par,
+ pPam->Move( fnMoveForward, fnGoNode ); // als zum naechsten Node
+ SwTxtNode* pTxtNode = pPos->nNode.GetNode().GetTxtNode();
+ SwNodeIndex aPrvIdx( pPos->nNode );
+ if( pTxtNode && pTxtNode->CanJoinPrev( &aPrvIdx ) &&
+ *pSttNdIdx <= aPrvIdx )
+ {
+ // eigentlich muss hier ein JoinNext erfolgen, aber alle Cursor
+ // usw. sind im pTxtNode angemeldet, so dass der bestehen
+ // bleiben MUSS.
+
+ // Absatz in Zeichen-Attribute umwandeln, aus dem Prev die
+ // Absatzattribute und die Vorlage uebernehmen!
+ SwTxtNode* pPrev = aPrvIdx.GetNode().GetTxtNode();
+ pTxtNode->ChgFmtColl( pPrev->GetTxtColl() );
+ pTxtNode->FmtToTxtAttr( pPrev );
+ pTxtNode->SwCntntNode::ResetAllAttr();
+
+ if( pPrev->GetpSwAttrSet() )
+ pTxtNode->SwCntntNode::SetAttr( *pPrev->GetpSwAttrSet() );
+
+ if( &pPam->GetBound(TRUE).nNode.GetNode() == pPrev )
+ pPam->GetBound(TRUE).nContent.Assign( pTxtNode, 0 );
+ if( &pPam->GetBound(FALSE).nNode.GetNode() == pPrev )
+ pPam->GetBound(FALSE).nContent.Assign( pTxtNode, 0 );
+
+ pTxtNode->JoinPrev();
+ }
+ }
+ else if( GetDocInfo() )
+ // evt. eingelesen DocInfo setzen
+ pDoc->SetInfo( *GetDocInfo() );
+ }
+ delete pSttNdIdx, pSttNdIdx = 0;
+ delete pRegionEndIdx, pRegionEndIdx = 0;
+ RemoveUnusedNumRules();
+}
+
+SwRTFParser::~SwRTFParser()
+{
+ delete pSttNdIdx;
+ delete pRegionEndIdx;
+ delete pPam;
+ delete pRelNumRule;
+
+ if( aFlyArr.Count() )
+ aFlyArr.DeleteAndDestroy( 0, aFlyArr.Count() );
+
+ if( pGrfAttrSet ) DELETEZ( pGrfAttrSet );
+ DUMP_FINIT
+}
+
+extern void sw3io_ConvertFromOldField( SwDoc& rDoc, USHORT& rWhich,
+ USHORT& rSubType, ULONG &rFmt,
+ USHORT nVersion );
+
+void SwRTFParser::NextToken( int nToken )
+{
+ USHORT eDateFmt;
+
+ switch( nToken )
+ {
+ case RTF_FOOTNOTE: ReadHeaderFooter( nToken );
+ SkipToken( -1 ); // Klammer wieder zurueck
+ break;
+ case RTF_SWG_PRTDATA: ReadPrtData(); break;
+ case RTF_FIELD: ReadField(); break;
+ case RTF_PICT: ReadBitmapData(); break;
+#ifdef READ_OLE_OBJECT
+ case RTF_OBJECT: ReadOLEData(); break;
+#endif
+ case RTF_TROWD: ReadTable( nToken ); break;
+ case RTF_PGDSCTBL: ReadPageDescTbl(); break;
+ case RTF_LISTTABLE: ReadListTable(); break;
+ case RTF_LISTOVERRIDETABLE: ReadListOverrideTable(); break;
+
+ case RTF_LISTTEXT:
+ GetAttrSet().Put( SfxUInt16Item( FN_PARAM_NUM_LEVEL, 0 ));
+ SkipGroup();
+ break;
+
+ case RTF_PN:
+ case RTF_PNSECLVL:
+ if( bNewNumList )
+ SkipGroup();
+ else
+ ReadNumSecLevel( nToken );
+ break;
+
+ case RTF_PNTEXT:
+ SkipGroup();
+ break;
+
+ case RTF_OUTLINELEVEL:
+ {
+ BYTE nLevel = MAXLEVEL <= nTokenValue ? MAXLEVEL - 1
+ : BYTE( nTokenValue );
+ GetAttrSet().Put( SfxUInt16Item( FN_PARAM_NUM_LEVEL, nLevel ));
+ }
+ break;
+
+ case RTF_DEFFORMAT:
+ case RTF_DEFTAB:
+ case RTF_DEFLANG:
+ // sind zwar Dok-Controls, werden aber manchmal auch vor der
+ // Font/Style/Color-Tabelle gesetzt!
+ SvxRTFParser::NextToken( nToken );
+ break;
+
+ case RTF_PAGE:
+ {
+ const SwCntntNode* pCNd;
+ const SwAttrSet* pSet;
+ if( pPam->GetPoint()->nContent.GetIndex() ||
+ ( 0 != ( pCNd = pPam->GetCntntNode()) &&
+ 0 != ( pSet = pCNd->GetpSwAttrSet()) &&
+ ( SFX_ITEM_SET == pSet->GetItemState( RES_BREAK, FALSE ) ||
+ SFX_ITEM_SET == pSet->GetItemState( RES_PAGEDESC, FALSE ))))
+ InsertPara();
+ CheckInsNewTblLine();
+ pDoc->Insert( *pPam, SvxFmtBreakItem( SVX_BREAK_PAGE_BEFORE ) );
+ }
+ break;
+
+ case RTF_SECT:
+ ReadSectControls( nToken );
+ break;
+ case RTF_CELL:
+ if( bReadNoTbl )
+ InsertPara();
+ else
+ {
+ if( USHRT_MAX != nInsTblRow && !pTableNode ) // Tabelle nicht mehr vorhanden ?
+ NewTblLine(); // evt. Line copieren
+ GotoNextBox();
+ }
+ break;
+
+ case RTF_ROW:
+ if( !bReadNoTbl )
+ {
+ // aus der Line raus
+ nAktBox = 0;
+ pTableNode = 0;
+ // noch in der Tabelle drin?
+ SwNodeIndex& rIdx = pPam->GetPoint()->nNode;
+ const SwTableNode* pTblNd = rIdx.GetNode().FindTableNode();
+ if( pTblNd )
+ {
+ // search the end of this row
+ const SwStartNode* pBoxStt =
+ rIdx.GetNode().FindTableBoxStartNode();
+ const SwTableBox* pBox = pTblNd->GetTable().GetTblBox(
+ pBoxStt->GetIndex() );
+ const SwTableLine* pLn = pBox->GetUpper();
+ pBox = pLn->GetTabBoxes()[ pLn->GetTabBoxes().Count() - 1 ];
+ rIdx = *pBox->GetSttNd()->EndOfSectionNode();
+ pPam->Move( fnMoveForward, fnGoNode );
+ }
+ nInsTblRow = GetOpenBrakets();
+ SetPardTokenRead( FALSE );
+ }
+ ::SetProgressState( rInput.Tell(), pDoc->GetDocShell() );
+ break;
+
+ case RTF_INTBL:
+ if( !bReadNoTbl )
+ {
+ if( !pTableNode ) // Tabelle nicht mehr vorhanden ?
+ NewTblLine(); // evt. Line copieren
+ else
+ {
+ // Crsr nicht mehr in der Tabelle ?
+ if( !pPam->GetNode()->FindTableNode() )
+ {
+ // dann wieder in die letzte Box setzen
+ // (kann durch einlesen von Flys geschehen!)
+ pPam->GetPoint()->nNode = *pTableNode->EndOfSectionNode();
+ pPam->Move( fnMoveBackward );
+ }
+ }
+ }
+ break;
+
+ case RTF_FLY_INPARA:
+ // \pard und plain ueberlesen !
+ if( '}' != GetNextToken() && '}' != GetNextToken() )
+ {
+ // Zeichengebundener Fly in Fly
+ ReadHeaderFooter( nToken );
+ SetPardTokenRead( FALSE );
+ }
+ break;
+
+ case RTF_PGDSCNO:
+ if( IsNewDoc() && bSwPageDesc &&
+ USHORT(nTokenValue) < pDoc->GetPageDescCnt() )
+ {
+ const SwPageDesc* pPgDsc = &pDoc->GetPageDesc( USHORT(nTokenValue) );
+ CheckInsNewTblLine();
+ pDoc->Insert( *pPam, SwFmtPageDesc( pPgDsc ));
+ }
+ break;
+
+ case RTF_COLUM:
+ pDoc->Insert( *pPam, SvxFmtBreakItem( SVX_BREAK_COLUMN_BEFORE ));
+ break;
+
+ case RTF_DXFRTEXT: // werden nur im Zusammenhang mit Flys ausgewertet
+ case RTF_DFRMTXTX:
+ case RTF_DFRMTXTY:
+ break;
+
+ case RTF_CHDATE: eDateFmt = DF_SHORT; goto SETCHDATEFIELD;
+ case RTF_CHDATEA: eDateFmt = DF_SSYS; goto SETCHDATEFIELD;
+ case RTF_CHDATEL: eDateFmt = DF_LSYS; goto SETCHDATEFIELD;
+SETCHDATEFIELD:
+ {
+ USHORT nSubType = DATEFLD, nWhich = RES_DATEFLD;
+ ULONG nFormat = eDateFmt;
+ sw3io_ConvertFromOldField( *pDoc, nWhich, nSubType, nFormat, 0x0110 );
+
+ SwDateTimeField aDateFld( (SwDateTimeFieldType*)
+ pDoc->GetSysFldType( RES_DATETIMEFLD ), DATEFLD, nFormat);
+ CheckInsNewTblLine();
+ pDoc->Insert( *pPam, SwFmtFld( aDateFld ));
+ }
+ break;
+
+ case RTF_CHTIME:
+ {
+ USHORT nSubType = TIMEFLD, nWhich = RES_TIMEFLD;
+ ULONG nFormat = TF_SSMM_24;
+ sw3io_ConvertFromOldField( *pDoc, nWhich, nSubType, nFormat, 0x0110 );
+ SwDateTimeField aTimeFld( (SwDateTimeFieldType*)
+ pDoc->GetSysFldType( RES_DATETIMEFLD ), TIMEFLD, nFormat);
+ CheckInsNewTblLine();
+ pDoc->Insert( *pPam, SwFmtFld( aTimeFld ));
+ }
+ break;
+
+ case RTF_CHPGN:
+ {
+ SwPageNumberField aPageFld( (SwPageNumberFieldType*)
+ pDoc->GetSysFldType( RES_PAGENUMBERFLD ),
+ PG_RANDOM, SVX_NUM_ARABIC );
+ CheckInsNewTblLine();
+ pDoc->Insert( *pPam, SwFmtFld( aPageFld));
+ }
+ break;
+
+ case RTF_CHFTN:
+ bFootnoteAutoNum = TRUE;
+ break;
+
+ case RTF_NOFPAGES:
+ if( IsNewDoc() && nTokenValue && -1 != nTokenValue )
+ ((SwDocStat&)pDoc->GetDocStat()).nPage = (USHORT)nTokenValue;
+ break;
+
+ case RTF_NOFWORDS:
+ if( IsNewDoc() && nTokenValue && -1 != nTokenValue )
+ ((SwDocStat&)pDoc->GetDocStat()).nWord = (USHORT)nTokenValue;
+ break;
+ case RTF_NOFCHARS:
+ if( IsNewDoc() && nTokenValue && -1 != nTokenValue )
+ ((SwDocStat&)pDoc->GetDocStat()).nChar = (USHORT)nTokenValue;
+ break;
+
+ case RTF_U:
+ {
+ CheckInsNewTblLine();
+ if( nTokenValue )
+ aToken = (sal_Unicode )nTokenValue;
+ pDoc->Insert( *pPam, aToken );
+ }
+ break;
+
+// case RTF_REVDTTM:
+// UnknownAttrToken( nToken, &GetAttrSet() );
+// break;
+
+
+// RTF_SUBENTRYINDEX
+
+ default:
+ switch( nToken & ~(0xff | RTF_SWGDEFS) )
+ {
+ case RTF_DOCFMT:
+ ReadDocControls( nToken );
+ break;
+ case RTF_SECTFMT:
+ ReadSectControls( nToken );
+ break;
+ case RTF_APOCTL:
+ ReadFly( nToken );
+ break;
+ case RTF_BRDRDEF | RTF_TABLEDEF:
+ case RTF_SHADINGDEF | RTF_TABLEDEF:
+ case RTF_TABLEDEF:
+ ReadTable( nToken );
+ break;
+
+ case RTF_INFO:
+ ReadInfo();
+ break;
+
+ default:
+ if( USHRT_MAX != nInsTblRow &&
+ (nInsTblRow > GetOpenBrakets() || IsPardTokenRead() ))
+ nInsTblRow = USHRT_MAX;
+
+ SvxRTFParser::NextToken( nToken );
+ break;
+ }
+ }
+ if( USHRT_MAX != nInsTblRow &&
+ (nInsTblRow > GetOpenBrakets() || IsPardTokenRead() ))
+ nInsTblRow = USHRT_MAX;
+}
+
+
+void SwRTFParser::InsertText()
+{
+ DUMP_TXT( *pPam, aToken )
+ // dann fuege den String ein, ohne das Attribute am Ende
+ // aufgespannt werden.
+ CheckInsNewTblLine();
+ pDoc->Insert( *pPam, aToken );
+}
+
+
+void SwRTFParser::InsertPara()
+{
+ CheckInsNewTblLine();
+ pDoc->AppendTxtNode(*pPam->GetPoint());
+
+ // setze das default Style
+ if( !bStyleTabValid )
+ MakeStyleTab();
+
+ SwTxtFmtColl* pColl = aTxtCollTbl.Get( 0 );
+ if( !pColl )
+ pColl = pDoc->GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+ pDoc->SetTxtFmtColl( *pPam, pColl );
+
+ ::SetProgressState( rInput.Tell(), pDoc->GetDocShell() );
+}
+
+
+
+void SwRTFParser::MovePos( int bForward )
+{
+ if( bForward )
+ pPam->Move( fnMoveForward );
+ else
+ pPam->Move( fnMoveBackward );
+}
+
+int SwRTFParser::IsEndPara( SvxNodeIdx* pNd, xub_StrLen nCnt ) const
+{
+ SwCntntNode *pNode = pDoc->GetNodes()[pNd->GetIdx()]->GetCntntNode();
+ return pNode && pNode->Len() == nCnt;
+}
+
+void SwRTFParser::SetEndPrevPara( SvxNodeIdx*& rpNodePos, xub_StrLen& rCntPos )
+{
+ SwNodeIndex aIdx( pPam->GetPoint()->nNode );
+ SwCntntNode* pNode = pDoc->GetNodes().GoPrevious( &aIdx );
+ if( !pNode )
+ ASSERT( FALSE, "keinen vorherigen ContentNode gefunden" );
+
+ rpNodePos = new SwNodeIdx( aIdx );
+ rCntPos = pNode->Len();
+}
+
+void SwRTFParser::SetAttrInDoc( SvxRTFItemStackType &rSet )
+{
+ ULONG nSNd = rSet.GetSttNodeIdx(), nENd = rSet.GetEndNodeIdx();
+ xub_StrLen nSCnt = rSet.GetSttCnt(), nECnt = rSet.GetEndCnt();
+
+ SwPaM aPam( *pPam->GetPoint() );
+
+#ifndef PRODUCT
+ ASSERT( nSNd <= nENd, "Start groesser als Ende" );
+ SwNode* pDebugNd = pDoc->GetNodes()[ nSNd ];
+ ASSERT( pDebugNd->IsCntntNode(), "Start kein ContentNode" );
+ pDebugNd = pDoc->GetNodes()[ nENd ];
+ ASSERT( pDebugNd->IsCntntNode(), "Ende kein ContentNode" );
+#endif
+
+ SwCntntNode* pCNd = pDoc->GetNodes()[ nSNd ]->GetCntntNode();
+ aPam.GetPoint()->nNode = nSNd;
+ aPam.GetPoint()->nContent.Assign( pCNd, nSCnt );
+ aPam.SetMark();
+ if( nENd == nSNd )
+ aPam.GetPoint()->nContent = nECnt;
+ else
+ {
+ aPam.GetPoint()->nNode = nENd;
+ pCNd = aPam.GetCntntNode();
+ aPam.GetPoint()->nContent.Assign( pCNd, nECnt );
+ }
+
+ // setze ueber den Bereich das entsprechende Style
+ if( rSet.StyleNo() )
+ {
+ // setze jetzt das Style
+ if( !bStyleTabValid )
+ MakeStyleTab();
+ SwTxtFmtColl* pColl = aTxtCollTbl.Get( rSet.StyleNo() );
+ if( pColl )
+ {
+ pDoc->SetTxtFmtColl( aPam, pColl, FALSE );
+ DUMP_STYLE( aPam, *pColl )
+ }
+ }
+
+ const SfxPoolItem* pItem;
+ if( rSet.GetAttrSet().Count() )
+ {
+
+ // falls eine Zeichenvorlage im Set steht, deren Attribute
+ // aus dem Set loeschen. Sonst sind diese doppelt, was man ja
+ // nicht will.
+ if( SFX_ITEM_SET == rSet.GetAttrSet().GetItemState(
+ RES_TXTATR_CHARFMT, FALSE, &pItem ) &&
+ ((SwFmtCharFmt*)pItem)->GetCharFmt() )
+ {
+ const String& rName = ((SwFmtCharFmt*)pItem)->GetCharFmt()->GetName();
+ SvxRTFStyleType* pStyle = GetStyleTbl().First();
+ do {
+ if( pStyle->bIsCharFmt && pStyle->sName == rName )
+ {
+ // alle Attribute, die schon vom Style definiert sind, aus dem
+ // akt. AttrSet entfernen
+ SfxItemSet &rAttrSet = rSet.GetAttrSet(),
+ &rStyleSet = pStyle->aAttrSet;
+ SfxItemIter aIter( rAttrSet );
+ USHORT nWhich = aIter.GetCurItem()->Which();
+ while( TRUE )
+ {
+ if( SFX_ITEM_SET == rStyleSet.GetItemState(
+ nWhich, FALSE, &pItem ) && *pItem == *aIter.GetCurItem())
+ rAttrSet.ClearItem( nWhich ); // loeschen
+
+ if( aIter.IsAtEnd() )
+ break;
+ nWhich = aIter.NextItem()->Which();
+ }
+ break;
+ }
+ } while( 0 != (pStyle = GetStyleTbl().Next()) );
+ }
+ // dann setze ueber diesen Bereich die Attrbiute
+ SetSwgValues( rSet.GetAttrSet() );
+
+
+#if 0
+///!!!!!!!!!!!!!!!!!!!!!
+ if( !rSet.GetAttrSet().GetParent() )
+ {
+ const SfxItemPool& rPool = pDoc->GetAttrPool();
+ SfxItemSet &rAttrSet = rSet.GetAttrSet();
+ SfxItemIter aIter( rAttrSet );
+ USHORT nWhich = aIter.GetCurItem()->Which();
+ while( TRUE )
+ {
+ if( SFX_WHICH_MAX < nWhich ||
+ rPool.GetDefaultItem( nWhich ) == *aIter.GetCurItem() )
+ rAttrSet.ClearItem( nWhich ); // loeschen
+
+ if( aIter.IsAtEnd() )
+ break;
+ nWhich = aIter.NextItem()->Which();
+ }
+ }
+ if( rSet.GetAttrSet().Count() )
+#endif
+
+ pDoc->Insert( aPam, rSet.GetAttrSet(), SETATTR_DONTCHGNUMRULE );
+ DUMP_SET( aPam, rSet.GetAttrSet() )
+ }
+
+ if( SFX_ITEM_SET == rSet.GetAttrSet().GetItemState(
+ FN_PARAM_NUM_LEVEL, FALSE, &pItem ))
+ {
+ // dann ueber den Bereich an den Nodes das NodeNum setzen
+ for( ULONG n = nSNd; n <= nENd; ++n )
+ {
+ SwTxtNode* pTxtNd = pDoc->GetNodes()[ n ]->GetTxtNode();
+ if( pTxtNd )
+ {
+ pTxtNd->UpdateNum( SwNodeNum( (BYTE)
+ ((SfxUInt16Item*)pItem)->GetValue() ));
+ // Update vom LR-Space abschalten?
+ }
+ }
+ }
+
+ if( SFX_ITEM_SET == rSet.GetAttrSet().GetItemState(
+ RES_PARATR_NUMRULE, FALSE, &pItem ))
+ {
+ const SwNumRule* pRule = pDoc->FindNumRulePtr(
+ ((SwNumRuleItem*)pItem)->GetValue() );
+ if( pRule && ( pRule->IsContinusNum() || !bNewNumList ))
+ {
+ // diese Rule hat keinen Level, also muss die Einrueckung
+ // erhalten bleiben!
+ // dann ueber den Bereich an den Nodes das Flag zuruecksetzen
+ SwNodeNum aNdNum( 0 );
+ for( ULONG n = nSNd; n <= nENd; ++n )
+ {
+ SwTxtNode* pTxtNd = pDoc->GetNodes()[ n ]->GetTxtNode();
+ if( pTxtNd )
+ {
+ if( !pTxtNd->GetNum() )
+ pTxtNd->UpdateNum( aNdNum );
+ // Update vom LR-Space abschalten
+ pTxtNd->SetNumLSpace( FALSE );
+ }
+ }
+ }
+ }
+}
+
+
+// lese alle Dokument-Controls ein
+void SwRTFParser::ReadDocControls( int nToken )
+{
+ int bWeiter = TRUE;
+
+ SwFmtFrmSize aFrmSize(ATT_FIX_SIZE, 12240, 15840 );
+ SvxULSpaceItem aUL;
+ SvxLRSpaceItem aLR;
+ SwFtnInfo aFtnInfo;
+ SwEndNoteInfo aEndInfo;
+ UseOnPage eUseOn;
+ USHORT nPgStart = USHRT_MAX;
+ if( bFirstDocControl )
+ {
+ // RTF-Defaults setzen
+ SwFmtFrmSize aFrmSize(ATT_FIX_SIZE, 12240, 15840 );
+
+ aUL.SetUpper( 1440 ); aUL.SetLower( 1440 );
+ aLR.SetRight( 1800 ); aLR.SetLeft( 1800 );
+ eUseOn = UseOnPage(PD_ALL | PD_HEADERSHARE | PD_FOOTERSHARE);
+ aFtnInfo.ePos = FTNPOS_CHAPTER; aFtnInfo.eNum = FTNNUM_DOC;
+ bFirstDocControl = FALSE;
+ }
+ else
+ {
+ const SwPageDesc& rStdPgDsc = pDoc->GetPageDesc( 0 );
+ aFrmSize = rStdPgDsc.GetMaster().GetFrmSize();
+ aUL = rStdPgDsc.GetMaster().GetULSpace();
+ aLR = rStdPgDsc.GetMaster().GetLRSpace();
+
+ eUseOn = rStdPgDsc.ReadUseOn();
+
+ aEndInfo = pDoc->GetEndNoteInfo();
+ aFtnInfo = pDoc->GetFtnInfo();
+ }
+
+ BOOL bEndInfoChgd = FALSE, bFtnInfoChgd = FALSE;
+
+ do {
+ USHORT nValue = USHORT( nTokenValue );
+ switch( nToken )
+ {
+/* case '}': --nOpenBrakets; nToken = RTF_DOCFMT; break;
+ case '{': ++nOpenBrakets; nToken = RTF_DOCFMT; break;
+ case RTF_IGNOREFLAG: nToken = RTF_DOCFMT; break;
+*/
+ case RTF_PAPERW:
+ if( 0 < nTokenValue )
+ aFrmSize.SetWidth( nTokenValue );
+ break;
+ case RTF_PAPERH:
+ if( 0 < nTokenValue )
+ aFrmSize.SetHeight( nTokenValue );
+ break;
+ case RTF_MARGL:
+ if( 0 <= nTokenValue )
+ aLR.SetLeft( nValue );
+ break;
+ case RTF_MARGR:
+ if( 0 <= nTokenValue )
+ aLR.SetRight( nValue );
+ break;
+ case RTF_MARGT:
+ if( 0 <= nTokenValue )
+ aUL.SetUpper( nValue );
+ break;
+ case RTF_MARGB:
+ if( 0 <= nTokenValue )
+ aUL.SetLower( nValue );
+ break;
+
+ case RTF_FACINGP: eUseOn = UseOnPage(PD_MIRROR | PD_HEADERSHARE | PD_FOOTERSHARE);
+ break;
+ case RTF_PGNSTART: nPgStart = nValue; break;
+
+ case RTF_ENDDOC:
+ case RTF_ENDNOTES:
+ aFtnInfo.ePos = FTNPOS_CHAPTER; bFtnInfoChgd = TRUE;
+ break;
+ case RTF_FTNTJ:
+ case RTF_FTNBJ:
+ aFtnInfo.ePos = FTNPOS_PAGE; bFtnInfoChgd = TRUE;
+ break;
+
+ case RTF_AENDDOC:
+ case RTF_AENDNOTES:
+ case RTF_AFTNTJ:
+ case RTF_AFTNBJ:
+ case RTF_AFTNRESTART:
+ case RTF_AFTNRSTCONT:
+ break; // wir kenn nur am Doc Ende und Doc weite Num.!
+
+ case RTF_FTNSTART:
+ if( nValue )
+ {
+ aFtnInfo.nFtnOffset = nValue-1;
+ bFtnInfoChgd = TRUE;
+ }
+ break;
+ case RTF_AFTNSTART:
+ if( nValue )
+ {
+ aEndInfo.nFtnOffset = nValue-1;
+ bEndInfoChgd = TRUE;
+ }
+ break;
+ case RTF_FTNRSTPG:
+ aFtnInfo.eNum = FTNNUM_PAGE; bFtnInfoChgd = TRUE;
+ break;
+ case RTF_FTNRESTART:
+ aFtnInfo.eNum = FTNNUM_CHAPTER; bFtnInfoChgd = TRUE;
+ break;
+ case RTF_FTNRSTCONT:
+ aFtnInfo.eNum = FTNNUM_DOC; bFtnInfoChgd = TRUE;
+ break;
+
+ case RTF_FTNNAR:
+ aFtnInfo.aFmt.eType = SVX_NUM_ARABIC; bFtnInfoChgd = TRUE; break;
+ case RTF_FTNNALC:
+ aFtnInfo.aFmt.eType = SVX_NUM_CHARS_LOWER_LETTER_N; bFtnInfoChgd = TRUE; break;
+ case RTF_FTNNAUC:
+ aFtnInfo.aFmt.eType = SVX_NUM_CHARS_UPPER_LETTER_N; bFtnInfoChgd = TRUE; break;
+ case RTF_FTNNRLC:
+ aFtnInfo.aFmt.eType = SVX_NUM_ROMAN_LOWER; bFtnInfoChgd = TRUE; break;
+ case RTF_FTNNRUC:
+ aFtnInfo.aFmt.eType = SVX_NUM_ROMAN_UPPER; bFtnInfoChgd = TRUE; break;
+ case RTF_FTNNCHI:
+ aFtnInfo.aFmt.eType = SVX_NUM_CHAR_SPECIAL; bFtnInfoChgd = TRUE; break;
+
+ case RTF_AFTNNAR:
+ aEndInfo.aFmt.eType = SVX_NUM_ARABIC; bEndInfoChgd = TRUE; break;
+ case RTF_AFTNNALC:
+ aEndInfo.aFmt.eType = SVX_NUM_CHARS_LOWER_LETTER_N; bEndInfoChgd = TRUE; break;
+ case RTF_AFTNNAUC:
+ aEndInfo.aFmt.eType = SVX_NUM_CHARS_UPPER_LETTER_N; bEndInfoChgd = TRUE; break;
+ case RTF_AFTNNRLC:
+ aEndInfo.aFmt.eType = SVX_NUM_ROMAN_LOWER; bEndInfoChgd = TRUE; break;
+ case RTF_AFTNNRUC:
+ aEndInfo.aFmt.eType = SVX_NUM_ROMAN_UPPER; bEndInfoChgd = TRUE; break;
+ case RTF_AFTNNCHI:
+ aEndInfo.aFmt.eType = SVX_NUM_CHAR_SPECIAL; bEndInfoChgd = TRUE; break;
+
+
+ case '{':
+ {
+ short nSkip = 0;
+ if( RTF_IGNOREFLAG != GetNextToken() )
+ nSkip = -1;
+ else if( RTF_DOCFMT != (( nToken = GetNextToken() )
+ & ~(0xff | RTF_SWGDEFS)) )
+ nSkip = -2;
+ else
+ {
+ SkipGroup(); // erstmal komplett ueberlesen
+ // ueberlese noch die schliessende Klammer
+ GetNextToken();
+ }
+ if( nSkip )
+ {
+ SkipToken( nSkip ); // Ignore wieder zurueck
+ bWeiter = FALSE;
+ }
+ }
+ break;
+
+ default:
+ if( RTF_DOCFMT == (nToken & ~(0xff | RTF_SWGDEFS)) ||
+ RTF_UNKNOWNCONTROL == nToken )
+ SvxRTFParser::NextToken( nToken );
+ else
+ bWeiter = FALSE;
+ break;
+ }
+ if( bWeiter )
+ nToken = GetNextToken();
+ } while( bWeiter && IsParserWorking() );
+
+ if( IsNewDoc() )
+ {
+ if( bEndInfoChgd )
+ pDoc->SetEndNoteInfo( aEndInfo );
+ if( bFtnInfoChgd )
+ pDoc->SetFtnInfo( aFtnInfo );
+ }
+
+ if( !bSwPageDesc )
+ {
+ if( IsNewDoc() )
+ {
+ // direkt an der Standartseite drehen
+ SwPageDesc& rPg = pDoc->_GetPageDesc( 0 );
+ rPg.WriteUseOn( eUseOn );
+ SwFrmFmt &rFmt1 = rPg.GetMaster(), &rFmt2 = rPg.GetLeft();
+
+ rFmt1.SetAttr( aFrmSize ); rFmt2.SetAttr( aFrmSize );
+ rFmt1.SetAttr( aLR ); rFmt2.SetAttr( aLR );
+ rFmt1.SetAttr( aUL ); rFmt2.SetAttr( aUL );
+
+ // StartNummer der Seiten setzen
+ if( USHRT_MAX != nPgStart )
+ {
+ const SfxPoolItem* pItem;
+ const SwCntntNode* pNd = pPam->GetCntntNode();
+ if( pNd && pNd->GetpSwAttrSet() && SFX_ITEM_SET ==
+ pNd->GetpSwAttrSet()->GetItemState( RES_PAGEDESC,
+ FALSE, &pItem ) )
+ {
+ // set a new PageNum
+ ((SwFmtPageDesc*)pItem)->SetNumOffset( nPgStart );
+ }
+ else
+ {
+ SwFmtPageDesc aPgDsc( &rPg );
+ aPgDsc.SetNumOffset( nPgStart );
+ pDoc->Insert( *pPam, aPgDsc );
+ }
+ }
+ }
+
+ MakeStyleTab();
+ // das default-Style schon gleich am ersten Node setzen
+// if( IsNewDoc() )
+ {
+ SwTxtFmtColl* pColl = aTxtCollTbl.Get( 0 );
+ if( !pColl )
+ pColl = pDoc->GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+ pDoc->SetTxtFmtColl( *pPam, pColl );
+ }
+ }
+
+ SkipToken( -1 );
+}
+
+void SwRTFParser::MakeStyleTab()
+{
+ // dann erzeuge aus der SvxStyle-Tabelle die Swg-Collections
+ if( GetStyleTbl().Count() )
+ {
+ USHORT nValidOutlineLevels = 0;
+ if( !IsNewDoc() )
+ {
+ // search all outlined collections
+ BYTE nLvl;
+ const SwTxtFmtColls& rColls = *pDoc->GetTxtFmtColls();
+ for( USHORT n = rColls.Count(); n; )
+ if( MAXLEVEL > (nLvl = rColls[ --n ]->GetOutlineLevel() ))
+ nValidOutlineLevels |= 1 << nLvl;
+ }
+
+ SvxRTFStyleType* pStyle = GetStyleTbl().First();
+ do {
+ USHORT nNo = USHORT( GetStyleTbl().GetCurKey() );
+ if( pStyle->bIsCharFmt )
+ {
+ if( !aCharFmtTbl.Get( nNo ) )
+ // existiert noch nicht, also anlegen
+ MakeCharStyle( nNo, *pStyle );
+ }
+ else if( !aTxtCollTbl.Get( nNo ) )
+ {
+ // existiert noch nicht, also anlegen
+ if( MAXLEVEL > pStyle->nOutlineNo )
+ {
+ USHORT nOutlFlag = 1 << pStyle->nOutlineNo;
+ if( nValidOutlineLevels & nOutlFlag )
+ pStyle->nOutlineNo = (BYTE)-1;
+ else
+ nValidOutlineLevels |= nOutlFlag;
+ }
+
+ MakeStyle( nNo, *pStyle );
+ }
+
+ } while( 0 != (pStyle = GetStyleTbl().Next()) );
+ bStyleTabValid = TRUE;
+ }
+}
+
+SwPageDesc* SwRTFParser::_MakeNewPageDesc( int bFirst )
+{
+ USHORT* pNo = &nAktPageDesc;
+ String aNm( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "RTF-SectionPage(" )));
+
+ if( bFirst )
+ {
+ aNm.InsertAscii( "First", 4 );
+ pNo = &nAktFirstPageDesc;
+ }
+ aNm += String::CreateFromInt32( pDoc->GetPageDescCnt() );
+ aNm += ')';
+
+ USHORT nNew = pDoc->MakePageDesc( aNm, 0 );
+ SwPageDesc& rAkt = pDoc->_GetPageDesc( nNew );
+ SwPageDesc& rOld = pDoc->_GetPageDesc( *pNo );
+ pDoc->CopyPageDesc( rOld, rAkt, FALSE );
+
+ *pNo = nNew;
+
+ // setze den Follow-PageDesc immer auf sich selbst
+ rAkt.SetFollow( &rAkt );
+
+ // falls auf \\page ein \\setd folgt, dann muss noch ein neuer
+ // Absatz eingefuegt werden.
+ SwCntntNode* pCNd = pPam->GetCntntNode();
+ ASSERT( pCNd, "wo ist mein Content-Node" );
+ if( SFX_ITEM_SET == pCNd->GetSwAttrSet().GetItemState( RES_BREAK, FALSE )
+ // sollten nicht am NodeAnfang stehen, erzeuge einen neuen Absatz
+ || pPam->GetPoint()->nContent.GetIndex() )
+ InsertPara();
+
+ return &rAkt;
+}
+
+BOOL lcl_CompareRTFPageDesc( const SwPageDesc& rOld, const SwPageDesc& rAkt )
+{
+ BOOL bRet = /*rAkt.ReadUseOn() == rOld.ReadUseOn() && Bug 63599 */
+ rAkt.GetLandscape() == rOld.GetLandscape() &&
+ rAkt.GetNumType().eType == rOld.GetNumType().eType;
+
+ if( bRet )
+ {
+ // dann ein paar Attribute vergleichen
+ USHORT __READONLY_DATA aIdArr[] = { RES_FRM_SIZE, RES_UL_SPACE,
+ RES_BACKGROUND, RES_SHADOW,
+ 0 };
+ const SfxPoolItem* pOldItem, *pAktItem;
+ for( USHORT n = 0; aIdArr[ n ] && bRet; n += 2 )
+ {
+ for( USHORT nId = aIdArr[ n ]; nId <= aIdArr[ n+1]; ++nId )
+ {
+ int eOldSt = rOld.GetMaster().GetItemState( nId, FALSE, &pOldItem ),
+ eAktSt = rAkt.GetMaster().GetItemState( nId, FALSE, &pAktItem );
+ if( eOldSt != eAktSt ||
+ ( SFX_ITEM_SET == eOldSt && *pOldItem != *pAktItem ))
+ {
+ bRet = FALSE;
+ break;
+ }
+ }
+ }
+ }
+ return bRet;
+}
+
+BOOL lcl_SetFmtCol( SwFmt& rFmt, USHORT nCols, USHORT nColSpace,
+ const SvUShorts& rColumns )
+{
+ BOOL bSet = FALSE;
+ if( nCols && USHRT_MAX != nCols )
+ {
+ SwFmtCol aCol;
+ if( USHRT_MAX == nColSpace )
+ nColSpace = 720;
+
+ aCol.Init( nCols, nColSpace, USHRT_MAX );
+ if( nCols == ( rColumns.Count() / 2 ) )
+ {
+ aCol._SetOrtho( FALSE );
+ USHORT nWishWidth = 0, nHalfPrev = 0;
+ for( USHORT n = 0, i = 0; n < rColumns.Count(); n += 2, ++i )
+ {
+ SwColumn* pCol = aCol.GetColumns()[ i ];
+ pCol->SetLeft( nHalfPrev );
+ USHORT nSp = rColumns[ n+1 ];
+ nHalfPrev = nSp / 2;
+ pCol->SetRight( nSp - nHalfPrev );
+ pCol->SetWishWidth( rColumns[ n ] +
+ pCol->GetLeft() + pCol->GetRight() );
+ nWishWidth += pCol->GetWishWidth();
+ }
+ aCol.SetWishWidth( nWishWidth );
+ }
+ rFmt.SetAttr( aCol );
+ bSet = TRUE;
+ }
+ return bSet;
+}
+
+// lese alle Section-Controls ein
+void SwRTFParser::ReadSectControls( int nToken )
+{
+ int bWeiter = TRUE;
+
+ // werden die eigenen PageDesc - Informationen gelesen, dann alles
+ // ueberlesen
+ // Wird in ein bestehendes Doc eingelesen oder wurden eigene PageDesc
+ // gelesen, dann sind nur die Bereiche von interresse
+ BOOL bInsPageDesc = IsNewDoc() && !bSwPageDesc;
+
+ if( bInPgDscTbl )
+ {
+ do {
+ if( '{' == nToken )
+ {
+ switch( nToken = GetNextToken() )
+ {
+ case RTF_IGNOREFLAG:
+ if( RTF_SECTFMT != (( nToken = GetNextToken() )
+ & ~(0xff | RTF_SWGDEFS)) )
+ {
+ SkipToken( -2 ); // Ignore und Token wieder zurueck
+ bWeiter = FALSE;
+ break;
+ }
+ // kein break, Gruppe ueberspringen
+
+ case RTF_FOOTER:
+ case RTF_HEADER:
+ case RTF_FOOTERR:
+ case RTF_HEADERR:
+ case RTF_FOOTERL:
+ case RTF_HEADERL:
+ case RTF_FOOTERF:
+ case RTF_HEADERF:
+ SkipGroup(); // erstmal komplett ueberlesen
+ // ueberlese noch die schliessende Klammer
+ GetNextToken();
+ break;
+
+ default:
+ SkipToken( -1 ); // Ignore wieder zurueck
+ bWeiter = FALSE;
+ break;
+ }
+ }
+ else if( RTF_SECTFMT == (nToken & ~(0xff | RTF_SWGDEFS)) ||
+ RTF_UNKNOWNCONTROL == nToken )
+ SvxRTFParser::NextToken( nToken );
+ else
+ bWeiter = FALSE;
+ if( bWeiter )
+ nToken = GetNextToken();
+ } while( bWeiter && IsParserWorking() );
+ SkipToken( -1 ); // letztes Token wieder zurueck
+ return;
+ }
+
+ // RTF-Defaults setzen
+ BOOL bFirstCall = 1 == pDoc->GetPageDescCnt();
+ BOOL bHeaderUL = FALSE, bHeaderLR = FALSE,
+ bFooterUL = FALSE, bFooterLR = FALSE;
+
+ USHORT nLastPageDesc = nAktPageDesc,
+ nLastFirstPageDesc = nAktFirstPageDesc;
+
+ BOOL bMakeNewPageDesc = RTF_SECT == nToken;
+ BOOL bInsNewPageDesc = bMakeNewPageDesc || bFirstCall || bSwPageDesc;
+ SwPageDesc* pAkt, *pFirst = 0;
+ if( bInsNewPageDesc )
+ {
+ pAkt = _MakeNewPageDesc( FALSE );
+ if( bMakeNewPageDesc )
+ {
+ nToken = GetNextToken();
+ // some export filter write the RTF_SECT in brakets -> skip over
+ while( '}' == nToken )
+ {
+ NextToken( nToken );
+ nToken = GetNextToken();
+ }
+ }
+ }
+ else
+ {
+ pAkt = &pDoc->_GetPageDesc( nAktPageDesc );
+ if( nAktFirstPageDesc )
+ pFirst = &pDoc->_GetPageDesc( nAktFirstPageDesc );
+ }
+
+ SwFmtFrmSize aSz( pAkt->GetMaster().GetFrmSize() ),
+ aHSz( ATT_MIN_SIZE );
+ SvxULSpaceItem aUL( pAkt->GetMaster().GetULSpace() ), aHUL, aFUL;
+ SvxLRSpaceItem aLR( pAkt->GetMaster().GetLRSpace() ), aHLR, aFLR;
+ BOOL bPgWiChgd = FALSE, bPgHeChgd = FALSE,
+ bPgUpChgd = FALSE, bPgLoChgd = FALSE,
+ bPgLeChgd = FALSE, bPgRiChgd = FALSE,
+ bPgFcChgd = FALSE,
+ bNoBalancedCols = FALSE;
+
+ USHORT nRestoreUpper = USHRT_MAX, nRestoreLower = USHRT_MAX;
+ SwFrmFmt* pFmt = (SwFrmFmt*)pAkt->GetMaster().GetHeader().GetHeaderFmt();
+ if( pFmt )
+ {
+ aHUL = pFmt->GetULSpace();
+ aHLR = pFmt->GetLRSpace();
+ aHSz = pFmt->GetFrmSize();
+ if( aHSz.GetHeight() )
+ {
+ nRestoreUpper = (USHORT)aHSz.GetHeight();
+ aUL.SetUpper( aUL.GetUpper() + nRestoreUpper );
+ aHSz.SetHeight( 0 );
+ }
+ }
+
+ if( 0 != (pFmt = (SwFrmFmt*)pAkt->GetMaster().GetFooter().GetFooterFmt()) )
+ {
+ aFUL = pFmt->GetULSpace();
+ aFLR = pFmt->GetLRSpace();
+ if( aFUL.GetUpper() )
+ {
+ nRestoreLower = aFUL.GetUpper();
+ aUL.SetLower( aUL.GetLower() + nRestoreLower );
+ aFUL.SetUpper( 0 );
+ }
+ }
+
+ BOOL bCheckEqualPgDesc = TRUE, bPgDescChgd = FALSE;
+ SvxBreak eBreak = SVX_BREAK_PAGE_BEFORE;
+
+ USHORT nCols = USHRT_MAX, nColSpace = USHRT_MAX, nAktCol = 0;
+ SvUShorts aColumns;
+
+ USHORT nPgStart = USHRT_MAX;
+ SwNumType aNumType;
+
+ do {
+ BOOL bIsSectToken = FALSE;
+ USHORT nValue = USHORT( nTokenValue );
+ switch( nToken )
+ {
+ case RTF_SECT:
+ bWeiter = FALSE;
+ break;
+
+ case RTF_SECTD:
+ {
+ // Wert von der StandardPage holen !
+ const SwFrmFmt& rFmt = pDoc->GetPageDesc(0).GetMaster();
+ aSz = rFmt.GetFrmSize();
+ aUL = rFmt.GetULSpace();
+ aLR = rFmt.GetLRSpace();
+
+ nRestoreUpper = USHRT_MAX, nRestoreLower = USHRT_MAX;
+ aHUL.SetUpper( 720 ); aHUL.SetLower( 0 );
+ aFUL.SetUpper( 0 ); aFUL.SetLower( 720 );
+ aHLR.SetLeft( 0 ); aHLR.SetRight( 0 );
+ aFLR.SetLeft( 0 ); aFLR.SetRight( 0 );
+ pAkt->WriteUseOn( UseOnPage(PD_ALL | PD_HEADERSHARE | PD_FOOTERSHARE) );
+ pAkt->SetLandscape( FALSE );
+
+ // remove Columns/Header/Footer
+ pAkt->GetMaster().ResetAttr( RES_COL );
+ if( pFirst )
+ pFirst->GetMaster().ResetAttr( RES_COL );
+
+ nPgStart = USHRT_MAX;
+ nCols = USHRT_MAX;
+ nColSpace = USHRT_MAX;
+ aNumType.eType = SVX_NUM_ARABIC;
+ bHeaderUL = bHeaderLR = bFooterUL = bFooterLR = TRUE;
+ eBreak = SVX_BREAK_PAGE_BEFORE;
+ nNewNumSectDef = USHRT_MAX;
+
+ bPgWiChgd = bPgHeChgd = bPgUpChgd = bPgLoChgd = bPgLeChgd =
+ bPgRiChgd = bPgFcChgd = TRUE;
+ bPgDescChgd = TRUE;
+ }
+ break;
+
+ case RTF_PGWSXN:
+ if( 0 < nTokenValue )
+ {
+ aSz.SetWidth( nTokenValue );
+ bPgWiChgd = TRUE;
+ bPgDescChgd = TRUE;
+ }
+ break;
+
+ case RTF_PGHSXN:
+ if( 0 < nTokenValue )
+ {
+ aSz.SetHeight( nTokenValue );
+ bPgHeChgd = TRUE;
+ bPgDescChgd = TRUE;
+ }
+ break;
+ case RTF_MARGLSXN:
+ if( 0 <= nTokenValue )
+ {
+ aLR.SetLeft( nValue );
+ bPgLeChgd =TRUE;
+ bPgDescChgd = TRUE;
+ }
+ break;
+ case RTF_MARGRSXN:
+ if( 0 <= nTokenValue )
+ {
+ aLR.SetRight( nValue );
+ bPgRiChgd = TRUE;
+ bPgDescChgd = TRUE;
+ }
+ break;
+
+ case RTF_MARGTSXN:
+ if( 0 <= nTokenValue )
+ {
+ nRestoreUpper = USHRT_MAX;
+ aUL.SetUpper( nValue );
+ bPgUpChgd = TRUE;
+ bPgDescChgd = TRUE;
+ }
+ break;
+
+ case RTF_MARGBSXN:
+ if( 0 <= nTokenValue )
+ {
+ nRestoreLower = USHRT_MAX;
+ aUL.SetLower( nValue );
+ bPgLoChgd = TRUE;
+ bPgDescChgd = TRUE;
+ }
+ break;
+
+ case RTF_FACPGSXN:
+ pAkt->SetUseOn( UseOnPage(PD_MIRROR | ( pAkt->GetUseOn() &
+ ~(PD_HEADERSHARE | PD_FOOTERSHARE) )));
+ bPgDescChgd = TRUE;
+ break;
+
+ case RTF_HEADERY:
+ aHUL.SetUpper( nValue );
+ bHeaderUL = TRUE;
+ bPgDescChgd = TRUE;
+ break;
+
+ case RTF_FOOTERY:
+ aFUL.SetLower( nValue );
+ bFooterUL = TRUE;
+ bPgDescChgd = TRUE;
+ break;
+
+ case RTF_LNDSCPSXN:
+ pAkt->SetLandscape( TRUE );
+ bPgFcChgd = TRUE;
+ bPgDescChgd = TRUE;
+ break;
+
+ case RTF_PGNSTARTS:
+ nPgStart = nValue;
+ bPgDescChgd = TRUE;
+ break;
+
+ case RTF_PGNDEC:
+ aNumType.eType = SVX_NUM_ARABIC;
+ bPgDescChgd = TRUE;
+ break;
+ case RTF_PGNUCRM:
+ aNumType.eType = SVX_NUM_ROMAN_UPPER;
+ bPgDescChgd = TRUE;
+ break;
+ case RTF_PGNLCRM:
+ aNumType.eType = SVX_NUM_ROMAN_LOWER;
+ bPgDescChgd = TRUE;
+ break;
+ case RTF_PGNUCLTR:
+ aNumType.eType = SVX_NUM_CHARS_UPPER_LETTER_N;
+ bPgDescChgd = TRUE;
+ break;
+ case RTF_PGNLCLTR:
+ aNumType.eType = SVX_NUM_CHARS_LOWER_LETTER_N;
+ bPgDescChgd = TRUE;
+ break;
+
+ case RTF_SBKNONE:
+ bIsSectToken = TRUE;
+ eBreak = SVX_BREAK_NONE;
+ bPgDescChgd = !bFirstCall;
+ break;
+
+ case RTF_SBKCOL:
+ eBreak = SVX_BREAK_COLUMN_BEFORE;
+ bPgDescChgd = TRUE;
+ break;
+
+ case RTF_ENDNHERE:
+ case RTF_BINFSXN:
+ case RTF_BINSXN:
+ case RTF_SBKPAGE:
+ case RTF_SBKEVEN:
+ case RTF_SBKODD:
+ case RTF_LINEBETCOL:
+ case RTF_LINEMOD:
+ case RTF_LINEX:
+ case RTF_LINESTARTS:
+ case RTF_LINERESTART:
+ case RTF_LINEPAGE:
+ case RTF_LINECONT:
+ case RTF_GUTTERSXN:
+ case RTF_PGNCONT:
+ case RTF_PGNRESTART:
+ case RTF_PGNX:
+ case RTF_PGNY:
+ case RTF_VERTALT:
+ case RTF_VERTALB:
+ case RTF_VERTALC:
+ case RTF_VERTALJ:
+ break;
+
+ case RTF_TITLEPG:
+ if( bInsPageDesc && !pFirst )
+ pFirst = _MakeNewPageDesc( TRUE );
+ bCheckEqualPgDesc = FALSE;
+ bPgDescChgd = TRUE;
+ break;
+
+ case RTF_HEADER:
+ case RTF_HEADERL:
+ case RTF_HEADERR:
+ case RTF_FOOTER:
+ case RTF_FOOTERL:
+ case RTF_FOOTERR:
+ if( bInsPageDesc )
+ ReadHeaderFooter( nToken, pAkt );
+ else
+ SkipGroup(), GetNextToken(); //Gruppe mit schl. Klammer lesen
+ bCheckEqualPgDesc = FALSE;
+ bPgDescChgd = TRUE;
+ break;
+
+ case RTF_FOOTERF:
+ case RTF_HEADERF:
+ if( bInsPageDesc )
+ {
+ if( !pFirst )
+ pFirst = _MakeNewPageDesc( TRUE );
+ ReadHeaderFooter( nToken, pFirst );
+ }
+ else
+ SkipGroup(), GetNextToken(); //Gruppe mit schl. Klammer lesen
+ bCheckEqualPgDesc = FALSE;
+ bPgDescChgd = TRUE;
+ break;
+
+ case RTF_COLS:
+ bIsSectToken = TRUE;
+ nCols = nValue;
+ bPgDescChgd = TRUE;
+ break;
+
+ case RTF_COLSX:
+ bIsSectToken = TRUE;
+ nColSpace = nValue;
+ bPgDescChgd = TRUE;
+ break;
+
+ case RTF_COLNO:
+ bIsSectToken = TRUE;
+ nAktCol = nValue;
+ if( RTF_COLW == GetNextToken() )
+ {
+ USHORT nWidth = USHORT( nTokenValue ), nSpace = 0;
+ if( RTF_COLSR == GetNextToken() )
+ nSpace = USHORT( nTokenValue );
+ else
+ SkipToken( -1 ); // wieder zurueck
+
+ if( --nAktCol == ( aColumns.Count() / 2 ) )
+ {
+ aColumns.Insert( nWidth, aColumns.Count() );
+ aColumns.Insert( nSpace, aColumns.Count() );
+ }
+ }
+ bPgDescChgd = TRUE;
+ break;
+
+
+ case '{':
+ {
+ short nSkip = 0;
+ if( RTF_IGNOREFLAG != ( nToken = GetNextToken() ))
+ nSkip = -1;
+ else if( RTF_SECTFMT != (( nToken = GetNextToken() )
+ & ~(0xff | RTF_SWGDEFS)) &&
+ ( RTF_DOCFMT != ( nToken & ~(0xff | RTF_SWGDEFS))) )
+ nSkip = -2;
+ else
+ {
+ bPgDescChgd = TRUE;
+ switch( nToken )
+ {
+ case RTF_HEADER_YB:
+ aHUL.SetLower( USHORT(nTokenValue) );
+ bHeaderUL = TRUE;
+ if( RTF_HEADER_XL == GetNextToken() &&
+ RTF_HEADER_XR == GetNextToken() )
+ {
+ bHeaderLR = TRUE;
+ aHLR.SetLeft( USHORT(GetStackPtr( -1 )->nTokenValue) );
+ aHLR.SetRight( USHORT(nTokenValue));
+ }
+ else
+ SkipGroup();
+ break;
+
+ case RTF_FOOTER_YT:
+ aFUL.SetUpper( USHORT(nTokenValue));
+ bFooterUL = TRUE;
+ if( RTF_FOOTER_XL == GetNextToken() &&
+ RTF_FOOTER_XR == GetNextToken() )
+ {
+ bFooterLR = TRUE;
+ aFLR.SetLeft( USHORT(GetStackPtr( -1 )->nTokenValue) );
+ aFLR.SetRight( USHORT(nTokenValue));
+ }
+ else
+ SkipGroup();
+ break;
+
+ case RTF_BALANCED_COLUMN:
+ bIsSectToken = TRUE;
+ bPgDescChgd = TRUE;
+ bNoBalancedCols = TRUE;
+ break;
+
+ default:
+ SkipGroup(); // erstmal komplett ueberlesen
+ break;
+ }
+
+ // ueberlese noch die schliessende Klammer
+ GetNextToken();
+ }
+ if( nSkip )
+ {
+ bWeiter = -1 == nSkip && (
+ RTF_FOOTER == nToken || RTF_HEADER == nToken ||
+ RTF_FOOTERR == nToken || RTF_HEADERR == nToken ||
+ RTF_FOOTERL == nToken || RTF_HEADERL == nToken ||
+ RTF_FOOTERF == nToken || RTF_HEADERF == nToken );
+ SkipToken( nSkip ); // Ignore wieder zurueck
+ }
+ }
+ break;
+
+ case RTF_PAPERW:
+ case RTF_PAPERH:
+ case RTF_MARGL:
+ case RTF_MARGR:
+ case RTF_MARGT:
+ case RTF_MARGB:
+ case RTF_FACINGP:
+ {
+ ReadDocControls( nToken );
+
+ // set the new Values
+ const SwPageDesc& rStdPgDsc = pDoc->GetPageDesc( 0 );
+ const SwFmtFrmSize& rSz = rStdPgDsc.GetMaster().GetFrmSize();
+ const SvxULSpaceItem rUL = rStdPgDsc.GetMaster().GetULSpace();
+ const SvxLRSpaceItem rLR = rStdPgDsc.GetMaster().GetLRSpace();
+
+ if( !bPgWiChgd ) aSz.SetWidth( rSz.GetWidth() );
+ if( !bPgHeChgd ) aSz.SetHeight( rSz.GetHeight() );
+ if( !bPgUpChgd ) aUL.SetUpper( rUL.GetUpper() );
+ if( !bPgLoChgd ) aUL.SetLower( rUL.GetLower() );
+ if( !bPgLeChgd ) aLR.SetLeft( rLR.GetLeft() );
+ if( !bPgRiChgd ) aLR.SetRight( rLR.GetRight() );
+ if( !bPgFcChgd ) pAkt->SetLandscape( rStdPgDsc.GetLandscape() );
+ }
+ break;
+ default:
+ if( RTF_DOCFMT == (nToken & ~(0xff | RTF_SWGDEFS)) )
+ ReadDocControls( nToken );
+ else if( RTF_SECTFMT == (nToken & ~(0xff | RTF_SWGDEFS)) ||
+ RTF_UNKNOWNCONTROL == nToken )
+ SvxRTFParser::NextToken( nToken );
+ else
+ bWeiter = FALSE;
+ break;
+ }
+
+
+ if( bWeiter )
+ {
+ // kein eigener Bereich und kein Section Attribut?
+ if( !bInsPageDesc && !bIsSectToken )
+ bCheckEqualPgDesc = FALSE;
+ nToken = GetNextToken();
+ }
+ } while( bWeiter && IsParserWorking() );
+
+
+ if( !bPgDescChgd )
+ {
+ // der aktuelle muss wieder entnfernt werden
+ if( bInsNewPageDesc )
+ {
+ pDoc->DelPageDesc( nAktPageDesc );
+ if( pFirst )
+ pDoc->DelPageDesc( nAktFirstPageDesc );
+ nAktPageDesc = nLastPageDesc;
+ nAktFirstPageDesc = nLastFirstPageDesc;
+ }
+ SkipToken( -1 );
+ return ;
+ }
+
+
+ // den letzen Bereich wieder zumachen
+ if( pRegionEndIdx )
+ {
+ DelLastNode();
+ pPam->GetPoint()->nNode = *pRegionEndIdx;
+ pPam->Move( fnMoveForward, fnGoNode );
+ delete pRegionEndIdx, pRegionEndIdx = 0;
+ }
+
+
+ pFmt = &pAkt->GetMaster();
+
+ if( bInsPageDesc )
+ {
+ if( bHeaderUL )
+ {
+ if( aUL.GetUpper() > aHUL.GetUpper() )
+ {
+ aHSz.SetHeight( aUL.GetUpper() - aHUL.GetUpper() );
+ aHUL.SetUpper( 0 );
+ aUL.SetUpper( USHORT(aUL.GetUpper() - aHSz.GetHeight()) );
+
+ if( !pFmt->GetHeader().GetHeaderFmt() )
+ pFmt->SetAttr( SwFmtHeader( (BOOL)TRUE ));
+ if( pFirst && !pFirst->GetMaster().GetHeader().GetHeaderFmt() )
+ pFirst->GetMaster().SetAttr( SwFmtHeader( (BOOL)TRUE ));
+ }
+ }
+ else if( USHRT_MAX != nRestoreUpper )
+ aUL.SetUpper( aUL.GetUpper() - nRestoreUpper );
+
+ if( bFooterUL )
+ {
+ if( aUL.GetLower() > aFUL.GetLower() )
+ {
+ aFUL.SetUpper( aUL.GetLower() - aFUL.GetLower() );
+ aUL.SetLower( aFUL.GetLower() );
+ aFUL.SetLower( 0 );
+ if( !pFmt->GetFooter().GetFooterFmt() )
+ pFmt->SetAttr( SwFmtFooter( (BOOL)TRUE ));
+ if( pFirst && !pFirst->GetMaster().GetFooter().GetFooterFmt() )
+ pFirst->GetMaster().SetAttr( SwFmtFooter( (BOOL)TRUE ));
+ }
+ else
+ {
+ aUL.SetLower( aFUL.GetLower() );
+ aFUL.SetLower( 0 );
+ }
+ }
+ else if( USHRT_MAX != nRestoreLower )
+ aUL.SetLower( aUL.GetLower() - nRestoreLower );
+
+ pFmt->SetAttr( aSz );
+ pFmt->SetAttr( aLR );
+ pFmt->SetAttr( aUL );
+
+ pAkt->SetNumType( aNumType );
+ if( pFirst )
+ pFirst->SetNumType( aNumType );
+
+ if( ( bHeaderUL || bHeaderLR ) &&
+ 0 != (pFmt = (SwFrmFmt*)pAkt->GetMaster().GetHeader().GetHeaderFmt()) )
+ {
+ if( bHeaderUL && aHSz.GetHeight() ) pFmt->SetAttr( aHSz );
+ if( bHeaderLR ) pFmt->SetAttr( aHLR );
+ }
+
+ if( ( bFooterUL || bFooterLR ) &&
+ 0 != ( pFmt = (SwFrmFmt*)pAkt->GetMaster().GetFooter().GetFooterFmt()) )
+ {
+ if( bFooterUL ) pFmt->SetAttr( aFUL );
+ if( bFooterLR ) pFmt->SetAttr( aFLR );
+ }
+ }
+
+
+ if( nCols && USHRT_MAX != nCols )
+ {
+ if( ::lcl_SetFmtCol( pAkt->GetMaster(), nCols, nColSpace, aColumns )
+ && pFirst )
+ pFirst->GetMaster().SetAttr( pAkt->GetMaster().GetAttr( RES_COL ));
+
+ //JP 19.03.99 - Spaltigkeit NIE an der Seite setzen - dieses
+ // ist immer ein Kennzeichen fuer einen Bereich, weil
+ // die Seitenspalten NIE vom Layout aufgebrochen werden.
+ //JP 24.02.00 - but dont insert column section into a column page
+ // Bug 73480
+ if( bSwPageDesc )
+ {
+ const SwPageDesc& rOld = pDoc->GetPageDesc( nLastPageDesc );
+ if( rOld.GetMaster().GetAttr( RES_COL ) !=
+ pAkt->GetMaster().GetAttr( RES_COL ) )
+ {
+ bCheckEqualPgDesc = TRUE;
+ bInsPageDesc = FALSE;
+ eBreak = SVX_BREAK_NONE;
+
+// !! ???? muss das hier passieren ??
+ // fuer den Absatz dahinter sorgen
+ pDoc->AppendTxtNode(*pPam->GetPoint());
+ pPam->Move( fnMoveBackward );
+ pPam->SetMark();
+ }
+ }
+ }
+ else if( bInsNewPageDesc )
+ {
+ pAkt->GetMaster().ResetAttr( RES_COL );
+ if( pFirst )
+ pFirst->GetMaster().ResetAttr( RES_COL );
+ }
+
+ if( pFirst )
+ {
+ // setze am ersten den richtigen Follow
+ pFirst->SetFollow( pAkt );
+
+ // und setze noch die die Werte aus PageDesc:
+ pFirst->SetLandscape( pAkt->GetLandscape() );
+
+ pFmt = &pFirst->GetMaster();
+
+ pFmt->SetAttr( aSz );
+ pFmt->SetAttr( aLR );
+ pFmt->SetAttr( aUL );
+
+ if( ( bHeaderUL || bHeaderLR ) &&
+ 0 != (pFmt = (SwFrmFmt*)pFirst->GetMaster().GetHeader().GetHeaderFmt()) )
+ {
+ if( bHeaderUL && aHSz.GetHeight() ) pFmt->SetAttr( aHSz );
+ if( bHeaderLR ) pFmt->SetAttr( aHLR );
+ }
+
+ if( ( bFooterUL || bFooterLR ) &&
+ 0 != ( pFmt = (SwFrmFmt*)pFirst->GetMaster().GetFooter().GetFooterFmt()) )
+ {
+ if( bFooterUL ) pFmt->SetAttr( aFUL );
+ if( bFooterLR ) pFmt->SetAttr( aFLR );
+ }
+ }
+
+ const SwPageDesc& rOld = pDoc->GetPageDesc( nLastPageDesc );
+ if( bInsNewPageDesc && pFirst &&
+ pDoc->GetPageDesc( nLastFirstPageDesc ).GetFollow() != &rOld )
+ {
+ bCheckEqualPgDesc = FALSE;
+ }
+
+ if( bInsPageDesc && ( !bCheckEqualPgDesc || !bInsNewPageDesc ||
+ // dann pruefe ob die Attribute beider PageDesc gleich sind
+ !::lcl_CompareRTFPageDesc(pDoc->GetPageDesc( nLastPageDesc ), *pAkt ))
+ || ( bMakeNewPageDesc && SVX_BREAK_NONE != eBreak ) )
+ {
+ // Pagedescriptoren am Dokument updaten (nur so werden auch die
+ // linken Seiten usw. eingestellt).
+
+ // Spaltigkeit in den Set uebernehmen
+ SfxItemSet* pSet = 0;
+ const SfxPoolItem* pItem;
+ SfxItemSet aSet( pDoc->GetAttrPool(), RES_COL, RES_COLUMNBALANCE );
+ if( SFX_ITEM_SET == pAkt->GetMaster().GetItemState(
+ RES_COL, FALSE, &pItem )
+ && 1 < ((SwFmtCol*)pItem)->GetColumns().Count() )
+ {
+ aSet.Put( *pItem );
+ pSet = &aSet;
+ pAkt->GetMaster().ResetAttr( RES_COL );
+ if( pFirst )
+ pFirst->GetMaster().ResetAttr( RES_COL );
+ }
+
+ pDoc->ChgPageDesc( nAktPageDesc, *pAkt );
+
+ if( pSet )
+ {
+ SwSection aSect( CONTENT_SECTION, pDoc->GetUniqueSectionName() );
+ SwSection* pSect = pDoc->Insert( *pPam, aSect, pSet );
+ pPam->DeleteMark();
+
+ SwSectionNode* pSectNd = pSect->GetFmt()->GetSectionNode( TRUE );
+ if( pRegionEndIdx )
+ *pRegionEndIdx = *pSectNd->EndOfSectionNode();
+ else
+ pRegionEndIdx = new SwNodeIndex( *pSectNd->EndOfSectionNode());
+
+ pPam->GetPoint()->nNode = *pSectNd;
+ pPam->Move( fnMoveForward, fnGoNode );
+
+ // Attribut Enden ggfs. anpassen!!!!
+ if( GetAttrStack().Count() )
+ {
+ // Attribut Stack-Eintraege, muessen ans Ende des vorherigen
+ // Nodes verschoben werden.
+ for( USHORT n = GetAttrStack().Count(); n; )
+ {
+ SvxRTFItemStackType* pStkEntry = (SvxRTFItemStackType*)
+ GetAttrStack()[ --n ];
+ if( pRegionEndIdx->GetIndex() == pStkEntry->GetSttNode().GetIdx() )
+ pStkEntry->SetStartPos( SwxPosition( pPam ) );
+ }
+ }
+ }
+
+ if( bInsNewPageDesc )
+ {
+ SwFmtPageDesc aPgDsc( pAkt );
+
+ if( pFirst )
+ {
+ // Pagedescriptoren am Dokument updaten (nur so werden auch die
+ // linken Seiten usw. eingestellt).
+ pDoc->ChgPageDesc( nAktFirstPageDesc, *pFirst );
+ pFirst->Add( &aPgDsc );
+ }
+
+ if( USHRT_MAX != nPgStart )
+ aPgDsc.SetNumOffset( nPgStart );
+ pDoc->Insert( *pPam, aPgDsc );
+ }
+ }
+ else
+ {
+ // sollte es ein BereichsWechsel sein?
+ if( bCheckEqualPgDesc && SVX_BREAK_NONE == eBreak
+ /*&& (!bInsPageDesc || neuen Bereich aufsetzen
+ rOld.GetMaster().GetCol() != pAkt->GetMaster().GetCol() )*/ )
+ {
+ // Spaltigkeit in den Set uebernehmen
+ SfxItemSet* pSet = 0;
+ const SfxPoolItem* pItem;
+ SfxItemSet aSet( pDoc->GetAttrPool(), RES_COL, RES_COLUMNBALANCE);
+ if( SFX_ITEM_SET == pAkt->GetMaster().GetItemState(
+ RES_COL, FALSE, &pItem )
+ && 1 < ((SwFmtCol*)pItem)->GetColumns().Count() )
+ {
+ aSet.Put( *pItem );
+ pSet = &aSet;
+ }
+
+ if( bNoBalancedCols )
+ {
+ aSet.Put( SwFmtNoBalancedColumns( TRUE ) );
+ pSet = &aSet;
+ }
+
+ if( !bFirstCall || pSet )
+ {
+ SwSection aSect( CONTENT_SECTION, pDoc->GetUniqueSectionName() );
+ SwSection* pSect = pDoc->Insert( *pPam, aSect, pSet );
+ pPam->DeleteMark();
+
+ SwSectionNode* pSectNd = pSect->GetFmt()->GetSectionNode( TRUE );
+ if( pRegionEndIdx )
+ *pRegionEndIdx = *pSectNd->EndOfSectionNode();
+ else
+ pRegionEndIdx = new SwNodeIndex( *pSectNd->EndOfSectionNode());
+
+ pPam->GetPoint()->nNode = *pSectNd;
+ pPam->Move( fnMoveForward, fnGoNode );
+
+ // Attribut Enden ggfs. anpassen!!!!
+ if( GetAttrStack().Count() )
+ {
+ // Attribut Stack-Eintraege, muessen ans Ende des vorherigen
+ // Nodes verschoben werden.
+ for( USHORT n = GetAttrStack().Count(); n; )
+ {
+ SvxRTFItemStackType* pStkEntry = (SvxRTFItemStackType*)
+ GetAttrStack()[ --n ];
+ if( pRegionEndIdx->GetIndex() == pStkEntry->GetSttNode().GetIdx() )
+ pStkEntry->SetStartPos( SwxPosition( pPam ) );
+ }
+ }
+ }
+ }
+ else if( bInsPageDesc )
+ {
+ if(SVX_BREAK_COLUMN_BEFORE == eBreak )
+ pDoc->Insert( *pPam, SvxFmtBreakItem( eBreak ));
+ else if( SVX_BREAK_NONE != eBreak )
+ {
+ SwFmtPageDesc aPgDsc( ( pFirst && &rOld ==
+ pDoc->GetPageDesc( nLastFirstPageDesc ).GetFollow() )
+ ? &pDoc->_GetPageDesc( nLastFirstPageDesc )
+ : &rOld );
+
+ if( USHRT_MAX != nPgStart )
+ aPgDsc.SetNumOffset( nPgStart );
+ pDoc->Insert( *pPam, aPgDsc );
+ }
+ }
+
+ // der aktuelle muss wieder entnfernt werden
+ if( bInsNewPageDesc )
+ {
+ pDoc->DelPageDesc( nAktPageDesc );
+ if( pFirst )
+ pDoc->DelPageDesc( nAktFirstPageDesc );
+ nAktPageDesc = nLastPageDesc;
+ nAktFirstPageDesc = nLastFirstPageDesc;
+ }
+ }
+
+ SkipToken( -1 );
+}
+
+
+
+void SwRTFParser::ReadPageDescTbl()
+{
+ if( !IsNewDoc() )
+ {
+ SkipGroup();
+ return;
+ }
+
+ // dann erzeuge aus der SvxStyle-Tabelle die Swg-Collections, damit
+ // diese auch in den Headers/Footer benutzt werden koennen!
+ MakeStyleTab();
+ // das default-Style schon gleich am ersten Node setzen
+ SwTxtFmtColl* pColl = aTxtCollTbl.Get( 0 );
+ if( !pColl )
+ pColl = pDoc->GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+ pDoc->SetTxtFmtColl( *pPam, pColl );
+
+ int nToken, bSaveChkStyleAttr = IsChkStyleAttr();
+ int nOpenBrakets = 1; // die erste wurde schon vorher erkannt !!
+
+ SetChkStyleAttr(FALSE); // Attribute nicht gegen die Styles checken
+
+ bInPgDscTbl = TRUE;
+ USHORT nPos = 0;
+ SwPageDesc* pPg;
+ SwFrmFmt* pPgFmt;
+
+ SvxULSpaceItem aUL, aHUL, aFUL;
+ SvxLRSpaceItem aLR, aHLR, aFLR;
+ SwFmtFrmSize aSz( ATT_FIX_SIZE, 11905, 16837 ); // DIN A4 defaulten
+ SwFmtFrmSize aFSz( ATT_MIN_SIZE ), aHSz( ATT_MIN_SIZE );
+
+ USHORT nCols = USHRT_MAX, nColSpace = USHRT_MAX, nAktCol = 0;
+ SvUShorts aColumns;
+
+ while( nOpenBrakets && IsParserWorking() )
+ {
+ switch( nToken = GetNextToken() )
+ {
+ case '{':
+ ++nOpenBrakets;
+ break;
+
+ case '}':
+ if( 1 == --nOpenBrakets )
+ {
+ // PageDesc ist fertig, setze am Doc
+ pPgFmt->SetAttr( aLR );
+ pPgFmt->SetAttr( aUL );
+ pPgFmt->SetAttr( aSz );
+ ::lcl_SetFmtCol( *pPgFmt, nCols, nColSpace, aColumns );
+ if( pPgFmt->GetHeader().GetHeaderFmt() )
+ {
+ SwFrmFmt* pHFmt = (SwFrmFmt*)pPgFmt->GetHeader().GetHeaderFmt();
+ pHFmt->SetAttr( aHUL );
+ pHFmt->SetAttr( aHLR );
+ pHFmt->SetAttr( aHSz );
+ }
+ if( pPgFmt->GetFooter().GetFooterFmt() )
+ {
+ SwFrmFmt* pFFmt = (SwFrmFmt*)pPgFmt->GetFooter().GetFooterFmt();
+ pFFmt->SetAttr( aHUL );
+ pFFmt->SetAttr( aHLR );
+ pFFmt->SetAttr( aHSz );
+ }
+ pDoc->ChgPageDesc( nPos++, *pPg );
+ }
+ break;
+
+ case RTF_PGDSC:
+ if( nPos) // kein && wg MAC
+ if (nPos != pDoc->MakePageDesc(
+ String::CreateFromInt32( nTokenValue ) ) )
+ ASSERT( FALSE, "PageDesc an falscher Position" );
+
+ pPg = &pDoc->_GetPageDesc( nPos );
+ pPg->SetLandscape( FALSE );
+ pPgFmt = &pPg->GetMaster();
+#ifndef CFRONT
+ SETPAGEDESC_DEFAULTS:
+#endif
+ // aSz = pPgFmt->GetFrmSize();
+ aSz.SetWidth( 11905 ); aSz.SetHeight( 16837 ); // DIN A4 defaulten
+ aLR.SetLeft( 0 ); aLR.SetRight( 0 );
+ aUL.SetLower( 0 ); aUL.SetUpper( 0 );
+ aHLR.SetLeft( 0 ); aHLR.SetRight( 0 );
+ aHUL.SetLower( 0 ); aHUL.SetUpper( 0 );
+ aFLR.SetLeft( 0 ); aFLR.SetRight( 0 );
+ aFUL.SetLower( 0 ); aFUL.SetUpper( 0 );
+ nCols = USHRT_MAX; nColSpace = USHRT_MAX; nAktCol = 0;
+ aFSz.SetSizeType( ATT_MIN_SIZE ); aFSz.SetHeight( 0 );
+ aHSz.SetSizeType( ATT_MIN_SIZE ); aHSz.SetHeight( 0 );
+ break;
+
+ case RTF_PGDSCUSE:
+ pPg->WriteUseOn( (UseOnPage)nTokenValue );
+ break;
+
+ case RTF_PGDSCNXT:
+ // setze erstmal nur die Nummer als Follow. Am Ende der
+ // Tabelle wird diese entsprechend korrigiert !!
+ if( nTokenValue )
+ pPg->SetFollow( (const SwPageDesc*)nTokenValue );
+ else
+ pPg->SetFollow( &pDoc->GetPageDesc( 0 ) );
+ break;
+
+ case RTF_FORMULA: /* Zeichen "\|" !!! */
+ pPgFmt->SetAttr( aLR );
+ pPgFmt->SetAttr( aUL );
+ pPgFmt->SetAttr( aSz );
+ ::lcl_SetFmtCol( *pPgFmt, nCols, nColSpace, aColumns );
+ if( pPgFmt->GetHeader().GetHeaderFmt() )
+ {
+ SwFrmFmt* pHFmt = (SwFrmFmt*)pPgFmt->GetHeader().GetHeaderFmt();
+ pHFmt->SetAttr( aHUL );
+ pHFmt->SetAttr( aHLR );
+ pHFmt->SetAttr( aHSz );
+ }
+ if( pPgFmt->GetFooter().GetFooterFmt() )
+ {
+ SwFrmFmt* pFFmt = (SwFrmFmt*)pPgFmt->GetFooter().GetFooterFmt();
+ pFFmt->SetAttr( aHUL );
+ pFFmt->SetAttr( aHLR );
+ pFFmt->SetAttr( aHSz );
+ }
+
+ pPgFmt = &pPg->GetLeft();
+#ifndef CFRONT
+ goto SETPAGEDESC_DEFAULTS;
+#else
+ aLR.SetLeft( 0 ); aLR.SetRight( 0 );
+ aUL.SetLower( 0 ); aUL.SetUpper( 0 );
+ aHLR.SetLeft( 0 ); aHLR.SetRight( 0 );
+ aHUL.SetLower( 0 ); aHUL.SetUpper( 0 );
+ aFLR.SetLeft( 0 ); aFLR.SetRight( 0 );
+ aFUL.SetLower( 0 ); aFUL.SetUpper( 0 );
+// aSz = pPgFmt->GetFrmSize();
+ aSz.SetWidth( 11905 ); aSz.SetHeight( 16837 ); // DIN A4 defaulten
+ nCols = USHRT_MAX; nColSpace = USHRT_MAX; nAktCol = 0;
+ aFSz.SetSizeType( ATT_MIN_SIZE ); aFSz.SetHeight( 0 );
+ aHSz.SetSizeType( ATT_MIN_SIZE ); aHSz.SetHeight( 0 );
+ break;
+#endif
+
+ // alt: LI/RI/SA/SB, neu: MARG?SXN
+ case RTF_MARGLSXN:
+ case RTF_LI: aLR.SetLeft( (USHORT)nTokenValue ); break;
+ case RTF_MARGRSXN:
+ case RTF_RI: aLR.SetRight( (USHORT)nTokenValue ); break;
+ case RTF_MARGTSXN:
+ case RTF_SA: aUL.SetUpper( (USHORT)nTokenValue ); break;
+ case RTF_MARGBSXN:
+ case RTF_SB: aUL.SetLower( (USHORT)nTokenValue ); break;
+ case RTF_PGWSXN: aSz.SetWidth( nTokenValue ); break;
+ case RTF_PGHSXN: aSz.SetHeight( nTokenValue ); break;
+
+ case RTF_HEADERY: aHUL.SetUpper( (USHORT)nTokenValue ); break;
+ case RTF_HEADER_YB: aHUL.SetLower( (USHORT)nTokenValue ); break;
+ case RTF_HEADER_XL: aHLR.SetLeft( (USHORT)nTokenValue ); break;
+ case RTF_HEADER_XR: aHLR.SetRight( (USHORT)nTokenValue ); break;
+ case RTF_FOOTERY: aFUL.SetLower( (USHORT)nTokenValue ); break;
+ case RTF_FOOTER_YT: aFUL.SetUpper( (USHORT)nTokenValue ); break;
+ case RTF_FOOTER_XL: aFLR.SetLeft( (USHORT)nTokenValue ); break;
+ case RTF_FOOTER_XR: aFLR.SetRight( (USHORT)nTokenValue ); break;
+
+ case RTF_HEADER_YH:
+ if( 0 > nTokenValue )
+ {
+ aHSz.SetSizeType( ATT_FIX_SIZE );
+ nTokenValue = -nTokenValue;
+ }
+ aHSz.SetHeight( (USHORT)nTokenValue );
+ break;
+
+ case RTF_FOOTER_YH:
+ if( 0 > nTokenValue )
+ {
+ aFSz.SetSizeType( ATT_FIX_SIZE );
+ nTokenValue = -nTokenValue;
+ }
+ aFSz.SetHeight( (USHORT)nTokenValue );
+ break;
+
+
+ case RTF_LNDSCPSXN: pPg->SetLandscape( TRUE ); break;
+
+ case RTF_COLS: nCols = (USHORT)nTokenValue; break;
+ case RTF_COLSX: nColSpace = (USHORT)nTokenValue; break;
+
+ case RTF_COLNO:
+ nAktCol = (USHORT)nTokenValue;
+ if( RTF_COLW == GetNextToken() )
+ {
+ USHORT nWidth = USHORT( nTokenValue ), nSpace = 0;
+ if( RTF_COLSR == GetNextToken() )
+ nSpace = USHORT( nTokenValue );
+ else
+ SkipToken( -1 ); // wieder zurueck
+
+ if( --nAktCol == ( aColumns.Count() / 2 ) )
+ {
+ aColumns.Insert( nWidth, aColumns.Count() );
+ aColumns.Insert( nSpace, aColumns.Count() );
+ }
+ }
+ break;
+
+ case RTF_PAGEBB:
+ {
+ pPgFmt->SetAttr( SvxFmtBreakItem( SVX_BREAK_PAGE_BEFORE ) );
+ }
+ break;
+
+ case RTF_HEADER:
+ case RTF_HEADERL:
+ case RTF_HEADERR:
+ case RTF_FOOTER:
+ case RTF_FOOTERL:
+ case RTF_FOOTERR:
+ case RTF_FOOTERF:
+ case RTF_HEADERF:
+ ReadHeaderFooter( nToken, pPg );
+
+ --nOpenBrakets; // Klammer wird im ReadAttr ueberlesen!
+ break;
+
+
+ case RTF_TEXTTOKEN:
+ if( !DelCharAtEnd( aToken, ';' ).Len() )
+ break;
+ pPg->SetName( aToken );
+
+ {
+ // sollte es eine Vorlage aus dem Pool sein ??
+ USHORT n = pDoc->GetPoolId( aToken, GET_POOLID_PAGEDESC );
+ if( USHRT_MAX != n )
+ // dann setze bei der Neuen die entsp. PoolId
+ pPg->SetPoolFmtId( n );
+ }
+ break;
+
+ case RTF_BRDBOX:
+ if( 3 == nOpenBrakets )
+ {
+ ReadBorderAttr( SkipToken( -2 ), (SfxItemSet&)pPgFmt->GetAttrSet() );
+ --nOpenBrakets; // Klammer wird im ReadAttr ueberlesen!
+ }
+ break;
+
+ case RTF_SHADOW:
+ if( 3 == nOpenBrakets )
+ {
+ ReadAttr( SkipToken( -2 ), (SfxItemSet*)&pPgFmt->GetAttrSet() );
+ --nOpenBrakets; // Klammer wird im ReadAttr ueberlesen!
+ }
+ break;
+
+
+ default:
+ if( (nToken & ~0xff ) == RTF_SHADINGDEF )
+ ReadBackgroundAttr( nToken, (SfxItemSet&)pPgFmt->GetAttrSet() );
+ break;
+ }
+ }
+
+
+ // setze jetzt noch bei allen die entsprechenden Follows !!
+ // Die, die ueber die Tabelle eingelesen wurden und einen
+ // Follow definiert haben, ist dieser als Tabposition im
+ // Follow schon gesetzt.
+ for( nPos = 0; nPos < pDoc->GetPageDescCnt(); ++nPos )
+ {
+ SwPageDesc* pPgDsc = &pDoc->_GetPageDesc( nPos );
+ if( (USHORT)(long)pPgDsc->GetFollow() < pDoc->GetPageDescCnt() )
+ pPgDsc->SetFollow( &pDoc->GetPageDesc(
+ (USHORT)(long)pPgDsc->GetFollow() ));
+ }
+
+ SetChkStyleAttr( bSaveChkStyleAttr );
+
+ bInPgDscTbl = FALSE;
+ nAktPageDesc = 0;
+ nAktFirstPageDesc = 0;
+ bSwPageDesc = TRUE;
+ SkipToken( -1 );
+}
+
+// -------------- Methoden --------------------
+
+/*
+void SwRTFParser::ReadUnknownData()
+{
+ SvRTFParser::ReadUnknownData();
+}
+
+void SwRTFParser::ReadOLEData()
+{
+ SvRTFParser::ReadOLEData();
+}
+*/
+
+void SwRTFParser::ReadPrtData()
+{
+ // der Eingabe Stream steht auf der aktuellen Position
+ USHORT nLen = USHORT( nTokenValue ), nCnt = 0;
+ BYTE * pData = new BYTE[ nLen ];
+
+ while( IsParserWorking() ) // lese bis zur schliessenden Klammer
+ {
+ int nToken = GetNextToken();
+ if( RTF_TEXTTOKEN == nToken )
+ {
+ xub_StrLen nTknLen = HexToBin( aToken );
+ if( STRING_NOTFOUND != nTknLen )
+ {
+ memcpy( pData + nCnt, (sal_Char*)aToken.GetBuffer(), nTknLen );
+ nCnt += nTknLen;
+ }
+ }
+ else if( '}' == nToken )
+ break;
+ }
+
+/*-----------------25.10.94 16:37-------------------
+!!! OK 25.10.94 16:37
+ // um Byte-Dreher (Mac/Unix/Win) bei der Laenge auszuschliessen,
+ // setze hier expliziet die Laenge.
+ ((JobSetup*)pData)->nLen = nLen;
+
+ // so, jetzt sind alle Daten gelesen, setze den Bitsack am Document
+ // dieser kopiert die Daten !!
+ pDoc->SetJobsetup( (JobSetup*)pData );
+ delete pData;
+--------------------------------------------------*/
+ SkipToken( -1 ); // schliessende Klammer wieder zurueck!!
+}
+
+static const SwNodeIndex* SetHeader(SwFrmFmt* pHdFtFmt, BOOL bCheck )
+{
+ SwFrmFmt* pTmp = pHdFtFmt;
+ pHdFtFmt = bCheck ? (SwFrmFmt*)pHdFtFmt->GetHeader().GetHeaderFmt() : 0;
+ if( !pHdFtFmt )
+ {
+ // noch keine Header, dann erzeuge einen. Ob die Kopf/Fuss-
+ // zeilen angezeigt werden, bestimmen \header? \footer? ...
+ pTmp->SetAttr( SwFmtHeader( TRUE ));
+ pHdFtFmt = (SwFrmFmt*)pTmp->GetHeader().GetHeaderFmt();
+ }
+ return pHdFtFmt->GetCntnt().GetCntntIdx();
+}
+
+static const SwNodeIndex* SetFooter(SwFrmFmt* pHdFtFmt, BOOL bCheck)
+{
+ SwFrmFmt* pTmp = pHdFtFmt;
+ pHdFtFmt = bCheck ? (SwFrmFmt*)pHdFtFmt->GetFooter().GetFooterFmt() : 0;
+ if( !pHdFtFmt )
+ {
+ // noch keine Header, dann erzeuge einen. Ob die Kopf/Fuss-
+ // zeilen angezeigt werden, bestimmen \header? \footer? ...
+ pTmp->SetAttr( SwFmtFooter( TRUE ));
+ pHdFtFmt = (SwFrmFmt*)pTmp->GetFooter().GetFooterFmt();
+ }
+ return pHdFtFmt->GetCntnt().GetCntntIdx();
+}
+
+
+void SwRTFParser::ReadHeaderFooter( int nToken, SwPageDesc* pPageDesc )
+{
+ ASSERT( RTF_FOOTNOTE == nToken ||
+ RTF_FLY_INPARA == nToken ||
+ pPageDesc, "PageDesc fehlt" );
+
+ // alle wichtigen Sachen sichern
+ SwPosition aSavePos( *pPam->GetPoint() );
+ SvxRTFItemStack aSaveStack;
+ aSaveStack.Insert( &GetAttrStack(), 0 );
+ GetAttrStack().Remove( 0, GetAttrStack().Count() );
+
+ // save the fly array - after read, all flys may be set into
+ // the header/footer
+ SwFlySaveArr aSaveArray( 255 < aFlyArr.Count() ? aFlyArr.Count() : 255 );
+ aSaveArray.Insert( &aFlyArr, 0 );
+ aFlyArr.Remove( 0, aFlyArr.Count() );
+ BOOL bSetFlyInDoc = TRUE;
+
+ const SwNodeIndex* pSttIdx = 0;
+ SwFrmFmt* pHdFtFmt = 0;
+ SwTxtAttr* pTxtAttr = 0;
+ int bDelFirstChar = FALSE, bIsFootnote = FALSE;
+ BOOL bOldGrpStt = IsNewGroup();
+
+ int nOpenBrakets = GetOpenBrakets() - 1;
+
+ switch( nToken )
+ {
+ case RTF_FOOTNOTE:
+ {
+ BOOL bIsEndNote = RTF_FTNALT == GetNextToken();
+ if( !bIsEndNote )
+ SkipToken( -1 );
+
+ SwTxtNode* pTxtNd = pPam->GetNode()->GetTxtNode();
+ SwFmtFtn aFtnNote( bIsEndNote );
+ xub_StrLen nPos = pPam->GetPoint()->nContent.GetIndex();
+
+ if( nPos && !bFootnoteAutoNum )
+ {
+ pPam->GetPoint()->nContent--;
+ nPos--;
+ aFtnNote.SetNumStr( pTxtNd->GetTxt().GetChar( nPos ) );
+ ((String&)pTxtNd->GetTxt()).SetChar( nPos, CH_TXTATR_INWORD );
+ bDelFirstChar = TRUE;
+ }
+
+ pTxtAttr = pTxtNd->Insert( aFtnNote, nPos, nPos,
+ bDelFirstChar ? SETATTR_NOTXTATRCHR : 0 );
+
+ ASSERT( pTxtAttr, "konnte die Fussnote nicht einfuegen/finden" );
+
+ if( pTxtAttr )
+ pSttIdx = ((SwTxtFtn*)pTxtAttr)->GetStartNode();
+ bIsFootnote = TRUE;
+
+ // wurde an der Position ein Escapement aufgespannt, so entferne
+ // das jetzt. Fussnoten sind bei uns immer hochgestellt.
+ SvxRTFItemStackTypePtr pTmp = aSaveStack.Top();
+ if( pTmp && pTmp->GetSttNodeIdx() ==
+ pPam->GetPoint()->nNode.GetIndex() &&
+ pTmp->GetSttCnt() == nPos )
+ pTmp->GetAttrSet().ClearItem( RES_CHRATR_ESCAPEMENT );
+ }
+ break;
+
+ case RTF_FLY_INPARA:
+ {
+ xub_StrLen nPos = pPam->GetPoint()->nContent.GetIndex();
+ SfxItemSet aSet( pDoc->GetAttrPool(), RES_FRMATR_BEGIN,
+ RES_FRMATR_END-1 );
+ aSet.Put( SwFmtAnchor( FLY_IN_CNTNT ));
+ pHdFtFmt = pDoc->MakeFlySection( FLY_IN_CNTNT, pPam->GetPoint(), &aSet );
+
+ pTxtAttr = pPam->GetNode()->GetTxtNode()->GetTxtAttr(
+ nPos, RES_TXTATR_FLYCNT );
+ ASSERT( pTxtAttr, "konnte den Fly nicht einfuegen/finden" );
+
+ pSttIdx = pHdFtFmt->GetCntnt().GetCntntIdx();
+ bSetFlyInDoc = FALSE;
+ }
+ break;
+
+ case RTF_HEADERF:
+ case RTF_HEADER:
+ pPageDesc->WriteUseOn( (UseOnPage)(pPageDesc->ReadUseOn() | PD_HEADERSHARE) );
+ pHdFtFmt = &pPageDesc->GetMaster();
+ pSttIdx = SetHeader( pHdFtFmt, FALSE );
+ break;
+
+ case RTF_HEADERL:
+ // wir koennen keine linken oder rechten haben, immer beide
+ pPageDesc->WriteUseOn( (UseOnPage)(pPageDesc->ReadUseOn() & ~PD_HEADERSHARE) );
+ SetHeader( pPageDesc->GetRightFmt(), TRUE );
+ pHdFtFmt = pPageDesc->GetLeftFmt();
+ pSttIdx = SetHeader(pHdFtFmt, FALSE );
+ break;
+
+ case RTF_HEADERR:
+ // wir koennen keine linken oder rechten haben, immer beide
+ pPageDesc->WriteUseOn( (UseOnPage)(pPageDesc->ReadUseOn() & ~PD_HEADERSHARE) );
+ SetHeader( pPageDesc->GetLeftFmt(), TRUE );
+ pHdFtFmt = pPageDesc->GetRightFmt();
+ pSttIdx = SetHeader(pHdFtFmt, FALSE );
+ break;
+
+ case RTF_FOOTERF:
+ case RTF_FOOTER:
+ pPageDesc->WriteUseOn( (UseOnPage)(pPageDesc->ReadUseOn() | PD_FOOTERSHARE) );
+ pHdFtFmt = &pPageDesc->GetMaster();
+ pSttIdx = SetFooter(pHdFtFmt, FALSE );
+ break;
+
+ case RTF_FOOTERL:
+ // wir koennen keine linken oder rechten haben, immer beide
+ pPageDesc->WriteUseOn( (UseOnPage)(pPageDesc->ReadUseOn() & ~PD_FOOTERSHARE) );
+ SetFooter( pPageDesc->GetRightFmt(), TRUE );
+ pHdFtFmt = pPageDesc->GetLeftFmt();
+ pSttIdx = SetFooter(pHdFtFmt, FALSE );
+ break;
+
+ case RTF_FOOTERR:
+ // wir koennen keine linken oder rechten haben, immer beide
+ pPageDesc->WriteUseOn( (UseOnPage)(pPageDesc->ReadUseOn() & ~PD_FOOTERSHARE) );
+ SetFooter( pPageDesc->GetLeftFmt(), TRUE );
+ pHdFtFmt = pPageDesc->GetRightFmt();
+ pSttIdx = SetFooter(pHdFtFmt, FALSE );
+ break;
+ }
+
+ if( !pSttIdx )
+ SkipGroup();
+ else
+ {
+ // es ist auf jedenfall jetzt ein TextNode im Kopf/Fusszeilen-Bereich
+ // vorhanden. Dieser muss jetzt nur noch gefunden und der neue Cursor
+ // dort hinein gesetzt werden.
+ SwCntntNode *pNode = pDoc->GetNodes()[ pSttIdx->GetIndex()+1 ]->
+ GetCntntNode();
+
+ // immer ans Ende der Section einfuegen !!
+ pPam->GetPoint()->nNode = *pNode->EndOfSectionNode();
+ pPam->Move( fnMoveBackward );
+
+ SetNewGroup( TRUE );
+
+ while( !( nOpenBrakets == GetOpenBrakets() && !GetStackPos()) && IsParserWorking() )
+ {
+ switch( nToken = GetNextToken() )
+ {
+ case RTF_U:
+ if( bDelFirstChar )
+ {
+ bDelFirstChar = FALSE;
+ nToken = 0;
+ }
+ break;
+
+ case RTF_TEXTTOKEN:
+ if( bDelFirstChar )
+ {
+ if( !aToken.Erase( 0, 1 ).Len() )
+ nToken = 0;
+ bDelFirstChar = FALSE;
+ }
+ break;
+ }
+ if( nToken )
+ NextToken( nToken );
+ }
+
+ SetAllAttrOfStk();
+ if( aFlyArr.Count() && bSetFlyInDoc )
+ SetFlysInDoc();
+
+ // sollte der letze Node leer sein, dann loesche ihn
+ // (\par heisst ja Absatzende und nicht neuer Absatz!)
+ DelLastNode();
+ }
+
+ // vom FlyFmt noch die richtigen Attribute setzen
+ if( pTxtAttr && RES_TXTATR_FLYCNT == pTxtAttr->Which() )
+ {
+ ASSERT( aFlyArr.Count(), "kein Fly definiert" );
+ SwFlySave* pFlySave = aFlyArr[ aFlyArr.Count()-1 ];
+ pFlySave->aFlySet.ClearItem( RES_ANCHOR );
+ pHdFtFmt->SetAttr( pFlySave->aFlySet );
+ aFlyArr.DeleteAndDestroy( aFlyArr.Count() - 1 );
+ }
+
+ bFootnoteAutoNum = FALSE; // default auf aus!
+
+ // und alles wieder zurueck
+ *pPam->GetPoint() = aSavePos;
+ if( bIsFootnote )
+ SetNewGroup( bOldGrpStt ); // Status wieder zurueck
+ else
+ SetNewGroup( FALSE ); // { - Klammer war kein Group-Start!
+ GetAttrStack().Insert( &aSaveStack, 0 );
+
+ aFlyArr.Insert( &aSaveArray, 0 );
+ aSaveArray.Remove( 0, aSaveArray.Count() );
+}
+
+void SwRTFParser::SetSwgValues( SfxItemSet& rSet )
+{
+ const SfxPoolItem* pItem;
+ // Escapement korrigieren
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_CHRATR_ESCAPEMENT, FALSE, &pItem ))
+ {
+ /* prozentuale Veraenderung errechnen !
+ * Formel : (FontSize * 1/20 ) pts Escapement * 2
+ * ----------------------- = ----------------
+ * 100% x
+ */
+
+ // die richtige
+ long nEsc = ((SvxEscapementItem*)pItem)->GetEsc();
+
+ // automatische Ausrichtung wurde schon richtig berechnet
+ if( DFLT_ESC_AUTO_SUPER != nEsc && DFLT_ESC_AUTO_SUB != nEsc )
+ {
+ const SvxFontHeightItem& rFH = GetSize( rSet );
+ nEsc *= 1000L;
+ nEsc /= long(rFH.GetHeight());
+
+ SvxEscapementItem aEsc( (short) nEsc,
+ ((SvxEscapementItem*)pItem)->GetProp());
+ rSet.Put( aEsc );
+ }
+ }
+
+ // TabStops anpassen
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_PARATR_TABSTOP, FALSE, &pItem ))
+ {
+ const SvxLRSpaceItem& rLR = GetLRSpace( rSet );
+ SvxTabStopItem aTStop( *(SvxTabStopItem*)pItem );
+
+ register long nOffset = rLR.GetTxtLeft();
+ if( nOffset )
+ {
+ // Tabs anpassen !!
+ SvxTabStop* pTabs = (SvxTabStop*)aTStop.GetStart();
+ for( USHORT n = aTStop.Count(); n; --n, ++pTabs)
+ if( SVX_TAB_ADJUST_DEFAULT != pTabs->GetAdjustment() )
+ pTabs->GetTabPos() -= nOffset;
+
+ // negativer Einzug, dann auf 0 Pos einen Tab setzen
+ if( rLR.GetTxtFirstLineOfst() < 0 )
+ aTStop.Insert( SvxTabStop() );
+ }
+
+ if( !aTStop.Count() )
+ {
+ const SvxTabStopItem& rDflt = (const SvxTabStopItem&)rSet.
+ GetPool()->GetDefaultItem(RES_PARATR_TABSTOP);
+ if( rDflt.Count() )
+ aTStop.Insert( &rDflt, 0 );
+ }
+ rSet.Put( aTStop );
+ }
+ else if( SFX_ITEM_SET == rSet.GetItemState( RES_LR_SPACE, FALSE, &pItem )
+ && ((SvxLRSpaceItem*)pItem)->GetTxtFirstLineOfst() < 0 )
+ {
+ // negativer Einzug, dann auf 0 Pos einen Tab setzen
+ rSet.Put( SvxTabStopItem( 1, 0 ));
+ }
+
+ // NumRules anpassen
+ if( !bStyleTabValid &&
+ SFX_ITEM_SET == rSet.GetItemState( RES_PARATR_NUMRULE, FALSE, &pItem ))
+ {
+ // dann steht im Namen nur ein Verweis in das ListArray
+ SwNumRule* pRule = GetNumRuleOfListNo( ((SwNumRuleItem*)pItem)->
+ GetValue().ToInt32() );
+ if( pRule )
+ rSet.Put( SwNumRuleItem( pRule->GetName() ));
+ else
+ rSet.ClearItem( RES_PARATR_NUMRULE );
+ }
+
+
+/*
+ ????????????????????????????????????????????????????????????????????
+ ?? muss die LineSpacing Hoehe 200Twip betragen ??
+ ?? in rtfitem.hxx wird es auf 0 defaultet. Wenn ja, dann muss hier
+ ?? ein neues Item gesetzt werden!!!!
+ ????????????????????????????????????????????????????????????????????
+
+ // LineSpacing korrigieren
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_PARATR_LINESPACING, FALSE, &pItem ))
+ {
+ const SvxLineSpacingItem* pLS = (const SvxLineSpacingItem*)pItem;
+ SvxLineSpacingItem aNew;
+
+ aNew.SetInterLineSpace( pLS->GetInterLineSpace() );
+ aNew.GetLineSpaceRule() = pLS->GetLineSpaceRule();
+ aNew.SetPropLineSpace( pLS->GetPropLineSpace() );
+ aNew.GetInterLineSpaceRule() = pLS->GetInterLineSpaceRule();
+
+ rSet.Put( aNew );
+ }
+?????????????????????????????????????????????????????????????????? */
+
+}
+
+
+SwTxtFmtColl* SwRTFParser::MakeColl( const String& rName, USHORT nPos,
+ BYTE nOutlineLevel, int& rbCollExist )
+{
+ if( BYTE(-1) == nOutlineLevel )
+ nOutlineLevel = NO_NUMBERING;
+
+ rbCollExist = FALSE;
+ SwTxtFmtColl* pColl;
+ String aNm( rName );
+ if( !aNm.Len() )
+ {
+ if( !nPos )
+ {
+ pColl = pDoc->GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+ pColl->SetOutlineLevel( nOutlineLevel );
+ return pColl;
+ }
+
+ aNm.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "NoName(" )); // erzeuge einen Namen
+ aNm += String::CreateFromInt32( nPos );
+ aNm += ')';
+ }
+
+ // suche jetzt nach einem Style mit dem gleichen Namen (0=dflt. FmtColl)
+ if( 0 != (pColl = pDoc->FindTxtFmtCollByName( aNm ) ) )
+ {
+ // neues Doc: keine alten Attribute behalten !!
+ if( IsNewDoc() )
+ {
+ pColl->ResetAllAttr();
+ pColl->SetOutlineLevel( nOutlineLevel );
+ }
+ else
+ rbCollExist = TRUE;
+ return pColl;
+ }
+
+ // Collection neu erzeugen
+ pColl = pDoc->MakeTxtFmtColl( aNm,
+ pDoc->GetTxtCollFromPool( RES_POOLCOLL_STANDARD ) );
+
+ // sollte es eine Vorlage aus dem Pool sein ??
+ USHORT n = pDoc->GetPoolId( aNm, GET_POOLID_TXTCOLL );
+ if( USHRT_MAX != n )
+ // dann setze bei der Neuen die entsp. PoolId
+ pColl->SetPoolFmtId( n );
+
+ pColl->SetOutlineLevel( nOutlineLevel );
+ return pColl;
+}
+
+SwCharFmt* SwRTFParser::MakeCharFmt( const String& rName, USHORT nPos,
+ int& rbCollExist )
+{
+ rbCollExist = FALSE;
+ SwCharFmt* pFmt;
+ String aNm( rName );
+ if( !aNm.Len() )
+ {
+ aNm.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "NoName(" ));
+ aNm += String::CreateFromInt32( nPos );
+ aNm += ')';
+ }
+
+ // suche jetzt nach einem Style mit dem gleichen Namen (0=dflt. FmtColl)
+ if( 0 != (pFmt = pDoc->FindCharFmtByName( aNm ) ) )
+ {
+ // neues Doc: keine alten Attribute behalten !!
+ if( IsNewDoc() )
+ pFmt->ResetAllAttr();
+ else
+ rbCollExist = TRUE;
+ return pFmt;
+ }
+
+ // Format neu erzeugen
+ pFmt = pDoc->MakeCharFmt( aNm, pDoc->GetDfltCharFmt() );
+
+ // sollte es eine Vorlage aus dem Pool sein ??
+ USHORT n = pDoc->GetPoolId( aNm, GET_POOLID_CHRFMT );
+ if( USHRT_MAX != n )
+ // dann setze bei der Neuen die entsp. PoolId
+ pFmt->SetPoolFmtId( n );
+
+ return pFmt;
+}
+
+void SwRTFParser::SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet )
+{
+ rCollSet.Put( rStyleSet );
+ if( rDerivedSet.Count() )
+ {
+ // suche alle Attribute, die neu gesetzt werden:
+ const SfxPoolItem* pItem;
+ SfxItemIter aIter( rDerivedSet );
+ USHORT nWhich = aIter.GetCurItem()->Which();
+ while( TRUE )
+ {
+ switch( rStyleSet.GetItemState( nWhich, FALSE, &pItem ) )
+ {
+ case SFX_ITEM_DEFAULT:
+ // auf default zuruecksetzen
+ if( RES_FRMATR_END > nWhich )
+ rCollSet.Put( rCollSet.GetPool()->GetDefaultItem( nWhich ));
+ break;
+ case SFX_ITEM_SET:
+ if( *pItem == *aIter.GetCurItem() ) // gleiches Attribut?
+ // definition kommt aus dem Parent
+ rCollSet.ClearItem( nWhich ); // loeschen
+ break;
+ }
+
+ if( aIter.IsAtEnd() )
+ break;
+ nWhich = aIter.NextItem()->Which();
+ }
+ }
+ // und jetzt noch auf unsere Werte abgleichen
+ SetSwgValues( rCollSet );
+}
+
+SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+{
+ int bCollExist;
+ SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+ // in bestehendes Dok einfuegen, dann keine Ableitung usw. setzen
+ if( bCollExist )
+ return pColl;
+
+ USHORT nStyleNo = rStyle.nBasedOn;
+ if( nStyleNo != nNo )
+ {
+ SvxRTFStyleType* pDerivedStyle = GetStyleTbl().Get( nStyleNo );
+ SwTxtFmtColl* pDerivedColl = aTxtCollTbl.Get( nStyleNo );
+ if( !pDerivedColl ) // noch nicht vorhanden, also anlegen
+ {
+ // ist die ueberhaupt als Style vorhanden ?
+ pDerivedColl = pDerivedStyle
+ ? MakeStyle( nStyleNo, *pDerivedStyle )
+ : pDoc->GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+ }
+
+ if( pColl == pDerivedColl )
+ ((SfxItemSet&)pColl->GetAttrSet()).Put( rStyle.aAttrSet );
+ else
+ {
+ pColl->SetDerivedFrom( pDerivedColl );
+
+ // setze die richtigen Attribute
+ const SfxItemSet* pDerivedSet;
+ if( pDerivedStyle )
+ pDerivedSet = &pDerivedStyle->aAttrSet;
+ else
+ pDerivedSet = &pDerivedColl->GetAttrSet();
+
+ SetStyleAttr( (SfxItemSet&)pColl->GetAttrSet(),
+ rStyle.aAttrSet, *pDerivedSet );
+ }
+ }
+ else
+ ((SfxItemSet&)pColl->GetAttrSet()).Put( rStyle.aAttrSet );
+
+
+ nStyleNo = rStyle.nNext;
+ if( nStyleNo != nNo )
+ {
+ SwTxtFmtColl* pNext = aTxtCollTbl.Get( nStyleNo );
+ if( !pNext ) // noch nicht vorhanden, also anlegen
+ {
+ // ist die ueberhaupt als Style vorhanden ?
+ SvxRTFStyleType* pMkStyle = GetStyleTbl().Get( nStyleNo );
+ pNext = pMkStyle
+ ? MakeStyle( nStyleNo, *pMkStyle )
+ : pDoc->GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+ }
+ pColl->SetNextTxtFmtColl( *pNext );
+ }
+ return pColl;
+}
+
+SwCharFmt* SwRTFParser::MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+{
+ int bCollExist;
+ SwCharFmt* pFmt = MakeCharFmt( rStyle.sName, USHORT(nNo), bCollExist );
+ aCharFmtTbl.Insert( nNo, pFmt );
+
+ // in bestehendes Dok einfuegen, dann keine Ableitung usw. setzen
+ if( bCollExist )
+ return pFmt;
+
+ USHORT nStyleNo = rStyle.nBasedOn;
+ if( nStyleNo != nNo )
+ {
+ SvxRTFStyleType* pDerivedStyle = GetStyleTbl().Get( nStyleNo );
+ SwCharFmt* pDerivedFmt = aCharFmtTbl.Get( nStyleNo );
+ if( !pDerivedFmt ) // noch nicht vorhanden, also anlegen
+ {
+ // ist die ueberhaupt als Style vorhanden ?
+ pDerivedFmt = pDerivedStyle
+ ? MakeCharStyle( nStyleNo, *pDerivedStyle )
+ : pDoc->GetDfltCharFmt();
+ }
+
+ if( pFmt == pDerivedFmt )
+ ((SfxItemSet&)pFmt->GetAttrSet()).Put( rStyle.aAttrSet );
+ else
+ {
+ pFmt->SetDerivedFrom( pDerivedFmt );
+
+ // setze die richtigen Attribute
+ const SfxItemSet* pDerivedSet;
+ if( pDerivedStyle )
+ pDerivedSet = &pDerivedStyle->aAttrSet;
+ else
+ pDerivedSet = &pDerivedFmt->GetAttrSet();
+
+ SetStyleAttr( (SfxItemSet&)pFmt->GetAttrSet(),
+ rStyle.aAttrSet, *pDerivedSet );
+ }
+ }
+ else
+ ((SfxItemSet&)pFmt->GetAttrSet()).Put( rStyle.aAttrSet );
+
+ return pFmt;
+}
+
+// loesche den letzten Node (Tabelle/Fly/Ftn/..)
+void SwRTFParser::DelLastNode()
+{
+ // sollte der letze Node leer sein, dann loesche ihn
+ // (\par heisst ja Absatzende und nicht neuer Absatz!)
+ if( !pPam->GetPoint()->nContent.GetIndex() )
+ {
+ ULONG nNodeIdx = pPam->GetPoint()->nNode.GetIndex();
+ SwCntntNode* pCNd = pDoc->GetNodes()[ nNodeIdx ]->GetCntntNode();
+ if( pCNd && pCNd->StartOfSectionIndex()+2 <
+ pCNd->EndOfSectionIndex() )
+ {
+ if( GetAttrStack().Count() )
+ {
+ // Attribut Stack-Eintraege, muessen ans Ende des vorherigen
+ // Nodes verschoben werden.
+ BOOL bMove = FALSE;
+ for( USHORT n = GetAttrStack().Count(); n; )
+ {
+ SvxRTFItemStackType* pStkEntry = (SvxRTFItemStackType*)
+ GetAttrStack()[ --n ];
+ if( nNodeIdx == pStkEntry->GetSttNode().GetIdx() )
+ {
+ if( !bMove )
+ {
+ pPam->Move( fnMoveBackward );
+ bMove = TRUE;
+ }
+ pStkEntry->SetStartPos( SwxPosition( pPam ) );
+ }
+ }
+ if( bMove )
+ pPam->Move( fnMoveForward );
+ }
+ pPam->GetPoint()->nContent.Assign( 0, 0 );
+ pPam->SetMark();
+ pPam->DeleteMark();
+ pDoc->GetNodes().Delete( pPam->GetPoint()->nNode );
+ }
+ }
+}
+
+ // fuer Tokens, die im ReadAttr nicht ausgewertet werden
+void SwRTFParser::UnknownAttrToken( int nToken, SfxItemSet* pSet )
+{
+ switch( nToken )
+ {
+ case RTF_INTBL:
+ {
+ if( !pTableNode ) // Tabelle nicht mehr vorhanden ?
+ NewTblLine(); // evt. Line copieren
+ else
+ {
+ // Crsr nicht mehr in der Tabelle ?
+ if( !pPam->GetNode()->FindTableNode() )
+ {
+ ULONG nOldPos = pPam->GetPoint()->nNode.GetIndex();
+
+ // dann wieder in die letzte Box setzen
+ // (kann durch einlesen von Flys geschehen!)
+ pPam->GetPoint()->nNode = *pTableNode->EndOfSectionNode();
+ pPam->Move( fnMoveBackward );
+
+ // alle Attribute, die schon auf den nachfolgen zeigen
+ // auf die neue Box umsetzen !!
+ SvxRTFItemStack& rAttrStk = GetAttrStack();
+ const SvxRTFItemStackType* pStk;
+ for( USHORT n = 0; n < rAttrStk.Count(); ++n )
+ if( ( pStk = rAttrStk[ n ])->GetSttNodeIdx() == nOldPos &&
+ !pStk->GetSttCnt() )
+ ((SvxRTFItemStackType*)pStk)->SetStartPos( SwxPosition( pPam ) );
+ }
+ }
+ }
+ break;
+
+ case RTF_PAGEBB:
+ {
+ pSet->Put( SvxFmtBreakItem( SVX_BREAK_PAGE_BEFORE ));
+ }
+ break;
+
+ case RTF_PGBRK:
+ {
+ pSet->Put( SvxFmtBreakItem( 1 == nTokenValue ?
+ SVX_BREAK_PAGE_BOTH : SVX_BREAK_PAGE_AFTER ));
+ }
+ break;
+
+ case RTF_PGDSCNO:
+ if( IsNewDoc() && bSwPageDesc &&
+ USHORT(nTokenValue) < pDoc->GetPageDescCnt() )
+ {
+ const SwPageDesc* pPgDsc = &pDoc->GetPageDesc( (USHORT)nTokenValue );
+ pDoc->Insert( *pPam, SwFmtPageDesc( pPgDsc ));
+ }
+ break;
+
+ case RTF_V:
+ if( 0 != nTokenValue )
+ {
+ // alles ueberlesen bis dieses wieder abgeschaltet wird. Durch
+ // plain in der Gruppe oder durch V0
+ String sHiddenTxt;
+ int nOpenBrakets = 0;
+ int nOpenHiddens = 1;
+ do {
+ switch( nToken = GetNextToken() )
+ {
+ case '}':
+ if( !--nOpenBrakets /*&& IsNewGroup()*/ )
+ // die Klammer wird noch gebraucht!
+ SkipToken( -1 );
+ break;
+ case '{':
+ ++nOpenBrakets;
+ break;
+
+ case RTF_V:
+ if( nTokenValue )
+ ++nOpenHiddens;
+ else if( !--nOpenHiddens && 1 == nOpenBrakets )
+ // das wars
+ nOpenBrakets = 0;
+ break;
+
+ case RTF_U:
+ {
+ if( nTokenValue )
+ sHiddenTxt += (sal_Unicode)nTokenValue;
+ else
+ sHiddenTxt += aToken;
+ }
+ break;
+
+ case RTF_TEXTTOKEN:
+ sHiddenTxt += aToken;
+ break;
+
+ case RTF_PLAIN:
+ if( !nOpenHiddens && 1 == nOpenBrakets )
+ {
+ nOpenBrakets = 0;
+ SkipToken( -1 );
+ }
+ break;
+ }
+ } while( nOpenBrakets && IsParserWorking() );
+ if( sHiddenTxt.Len() )
+ {
+ SwHiddenTxtField aFld( (SwHiddenTxtFieldType*)
+ pDoc->GetSysFldType( RES_HIDDENTXTFLD ),
+ TRUE, aEmptyStr, sHiddenTxt, TRUE );
+
+ pDoc->Insert( *pPam, SwFmtFld( aFld ) );
+ }
+ }
+ break;
+
+ case RTF_CS:
+ {
+ SwCharFmt* pFmt = aCharFmtTbl.Get( nTokenValue );
+ if( pFmt )
+ pSet->Put( SwFmtCharFmt( pFmt ));
+ }
+ break;
+
+ case RTF_LS:
+ if( -1 != nTokenValue )
+ {
+ if( bStyleTabValid )
+ {
+ // dann ist auch die ListTabelle gueltig, also suche die
+ // enstprechende NumRule
+ SwNumRule* pRule = GetNumRuleOfListNo( nTokenValue );
+ if( pRule )
+ pSet->Put( SwNumRuleItem( pRule->GetName() ));
+
+ if( SFX_ITEM_SET != pSet->GetItemState( FN_PARAM_NUM_LEVEL, FALSE ))
+ pSet->Put( SfxUInt16Item( FN_PARAM_NUM_LEVEL, 0 ));
+ }
+ else
+ // wir sind in der Style-Definitions - Phase. Der Name
+ // wird dann spaeter umgesetzt
+ pSet->Put( SwNumRuleItem( String::CreateFromInt32( nTokenValue )));
+ }
+ break;
+
+ case RTF_ILVL:
+ case RTF_SOUTLVL:
+ {
+ BYTE nLevel = MAXLEVEL <= nTokenValue ? MAXLEVEL - 1
+ : BYTE( nTokenValue );
+ pSet->Put( SfxUInt16Item( FN_PARAM_NUM_LEVEL, nLevel ));
+ }
+ break;
+
+/*
+ case RTF_SBYS:
+ case RTF_EXPND:
+ case RTF_KEEP:
+ case RTF_KEEPN:
+*/
+
+
+ // Revision Time Stamp
+/* case RTF_REVDTTM:
+ {
+ USHORT nMin, nHour, nDay, nMon, nYear, nDayOfWeek;
+// long wird gelesen, wird haben aber nur einen short!!!
+ ULONG nDtm = aToken.Copy( 7 );
+ // 3 2 1 0
+ // 10987654321098765432109876543210
+ // DOW| Y | M | D | H | Min
+ //
+ nMin = 0x3F & ( nDtm >>= 0 );
+ nHour = 0x1f & ( nDtm >>= 6 );
+ nDay = 0x1f & ( nDtm >>= 5 );
+ nMon = 0x0F & ( nDtm >>= 5 );
+ nYear =(0x7F & ( nDtm >>= 4 )) + 1900;
+ nDayOfWeek = 0x07 & ( nDtm >>= 7 );
+
+ Time aTime( nHour, nMin );
+ Date aDate( nDay, nMon, nYear );
+ }
+ break;
+*/
+ }
+}
+
+void SwRTFParser::ReadInfo( const sal_Char* pChkForVerNo )
+{
+sal_Char __READONLY_DATA aChkForVerNo[] = "StarWriter";
+
+ // falls nicht schon was vorgegeben wurde, setzen wir unseren Namen
+ // rein. Wenn das im Kommentar match, wird im Parser die VersionNummer
+ // gelesen und gesetzt
+ if( !pChkForVerNo )
+ pChkForVerNo = aChkForVerNo;
+
+ SvxRTFParser::ReadInfo( pChkForVerNo );
+}
+
+
+#ifdef USED
+void SwRTFParser::SaveState( int nToken )
+{
+ SvxRTFParser::SaveState( nToken );
+}
+
+void SwRTFParser::RestoreState()
+{
+ SvxRTFParser::RestoreState();
+}
+#endif
+
+/* */
+
+ULONG SwNodeIdx::GetIdx() const
+{
+ return aIdx.GetIndex();
+}
+
+SvxNodeIdx* SwNodeIdx::Clone() const
+{
+ return new SwNodeIdx( aIdx );
+}
+
+SvxPosition* SwxPosition::Clone() const
+{
+ return new SwxPosition( pPam );
+}
+
+SvxNodeIdx* SwxPosition::MakeNodeIdx() const
+{
+ return new SwNodeIdx( pPam->GetPoint()->nNode );
+}
+
+ULONG SwxPosition::GetNodeIdx() const
+{
+ return pPam->GetPoint()->nNode.GetIndex();
+}
+
+xub_StrLen SwxPosition::GetCntIdx() const
+{
+ return pPam->GetPoint()->nContent.GetIndex();
+}
+
+
+/* */
+
+#ifdef DEBUG_JP
+
+#include <string.h> // fuer sprintf
+#include <stdio.h>
+#include <svx/cmapitem.hxx>
+#include <svx/colritem.hxx>
+#include <svx/cntritem.hxx>
+#include <svx/crsditem.hxx>
+#include <svx/fontitem.hxx>
+#include <svx/kernitem.hxx>
+#include <svx/langitem.hxx>
+#include <svx/postitem.hxx>
+#include <svx/shdditem.hxx>
+#include <svx/udlnitem.hxx>
+#include <svx/wghtitem.hxx>
+#include <svx/wrlmitem.hxx>
+#include <svx/adjitem.hxx>
+
+static SvFileStream* pOut = 0;
+static void OutAttr( const SfxItemSet& rSet )
+{
+ if( !rSet.Count() )
+ return;
+
+ char sOut[ 200 ];
+ SfxItemIter aIter( rSet );
+ const SfxPoolItem* pItem = aIter.GetCurItem();
+ while( TRUE )
+ {
+ sOut[0] = 0;
+ switch( pItem->Which() )
+ {
+ case RES_CHRATR_CASEMAP:
+ {
+ sprintf( sOut,
+ "CaseMap: Style[%d]",
+ ((const SvxCaseMapItem*)pItem)->GetValue() );
+ }
+ break;
+ case RES_CHRATR_COLOR:
+ {
+ sprintf( sOut,
+ "Color: Red[%d] Green[%d] Blue[%d]",
+ ((const SvxColorItem*)pItem)->GetValue().GetRed(),
+ ((const SvxColorItem*)pItem)->GetValue().GetGreen(),
+ ((const SvxColorItem*)pItem)->GetValue().GetBlue() );
+ }
+ break;
+
+ case RES_CHRATR_CONTOUR:
+ {
+ sprintf( sOut,
+ "Contour: Style[%s]",
+ ( ((const SvxContourItem*)pItem)->GetValue() ? "ON" : "OFF" ) );
+ }
+ break;
+ case RES_CHRATR_CROSSEDOUT:
+ {
+ sprintf( sOut,
+ "CrossedOut: Style[%d]",
+ ((const SvxCrossedOutItem*)pItem)->GetValue() );
+ }
+ break;
+ case RES_CHRATR_ESCAPEMENT:
+ {
+ sprintf( sOut,
+ "Escapement: Style[%d, %d]",
+ ((const SvxEscapementItem*)pItem)->GetEsc(),
+ ((const SvxEscapementItem*)pItem)->GetProp() );
+ }
+ break;
+ case RES_CHRATR_FONT:
+ {
+ const SvxFontItem& rFont = *(const SvxFontItem*)pItem;
+ sprintf( sOut,
+ "Font: Fam[%d] Nm[%s] Pitch[%d] CharSet[%d]",
+ rFont.GetFamily(),
+ rFont.GetFamilyName().GetStr(),
+ rFont.GetPitch(),
+ rFont.GetCharSet() );
+ }
+ break;
+ case RES_CHRATR_FONTSIZE:
+ {
+ sprintf( sOut,
+ "FontSize: Height[%d]",
+ ((const SvxFontHeightItem*)pItem)->GetHeight() );
+ }
+ break;
+ case RES_CHRATR_KERNING:
+ {
+ sprintf( sOut,
+ "Kerning: Style[%d]",
+ ((const SvxKerningItem*)pItem)->GetValue() );
+ }
+ break;
+ case RES_CHRATR_LANGUAGE:
+ {
+ sprintf( sOut,
+ "Language: Style[%d]",
+ ((const SvxLanguageItem*)pItem)->GetValue() );
+ }
+ break;
+ case RES_CHRATR_POSTURE:
+ {
+ sprintf( sOut,
+ "Posture: Style[%d]",
+ ((const SvxPostureItem*)pItem)->GetValue() );
+ }
+ break;
+
+ case RES_CHRATR_SHADOWED:
+ {
+ sprintf( sOut,
+ "Shadowed: Style[%s]",
+ ( ((const SvxShadowedItem*)pItem)->GetValue() ? "ON" : "OFF" ) );
+ }
+ break;
+
+ case RES_CHRATR_UNDERLINE:
+ {
+ sprintf( sOut,
+ "Underline: Style[%d]",
+ ((const SvxUnderlineItem*)pItem)->GetValue() );
+ }
+ break;
+ case RES_CHRATR_WEIGHT:
+ {
+ sprintf( sOut,
+ "Weight: Style[%d]",
+ ((const SvxWeightItem*)pItem)->GetValue() );
+ }
+ break;
+ case RES_CHRATR_WORDLINEMODE:
+ {
+ sprintf( sOut,
+ "WordLine: Style[%s]",
+ ( ((const SvxWordLineModeItem*)pItem)->GetValue() ? "ON" : "OFF" ) );
+ }
+ break;
+
+ case RES_TXTATR_CHARFMT:
+ *pOut << "CharFmt: "
+ << ((SwFmtCharFmt*)pItem)->GetCharFmt()->GetName()->GetStr()
+ << endl;
+ }
+ break;
+ case RES_PARATR_LINESPACING:
+ {
+ sprintf( sOut,
+ "LineSpacing: Size[%d] Sp.Rule[%d] In.Sp.Rule[%d] In.Space[%d] Height[%d]",
+ ((const SvxLineSpacingItem*)pItem)->GetPropLineSpace(),
+ ((const SvxLineSpacingItem*)pItem)->GetLineSpaceRule(),
+ ((const SvxLineSpacingItem*)pItem)->GetInterLineSpaceRule(),
+ ((const SvxLineSpacingItem*)pItem)->GetInterLineSpace(),
+ ((const SvxLineSpacingItem*)pItem)->GetLineHeight() );
+ }
+ break;
+
+ case RES_PARATR_ADJUST:
+ {
+ sprintf( sOut,
+ "Adjust: Style[%d]",
+ ((const SvxAdjustItem*)pItem)->GetAdjust() );
+ }
+ break;
+ case RES_PARATR_TABSTOP:
+ {
+ const SvxTabStopItem & rAttr = *(const SvxTabStopItem*)pItem;
+ *pOut << "TabStops: (" << endl;
+ for( USHORT n = 0; n < rAttr.Count(); n++ )
+ {
+ const SvxTabStop & rTab = rAttr[ n ];
+ sprintf( sOut,
+ "\t\tTabStop: Style[%d] Pos[%d] Around[%c] Fill[%c]",
+ rTab.GetAdjustment(),
+ rTab.GetTabPos(),
+ rTab.GetDecimal(),
+ rTab.GetFill() );
+ *pOut << sOut << endl;
+ }
+ *pOut << ')' << endl;
+ sOut[0] = 0;
+ }
+ break;
+ case RES_PARATR_HYPHENZONE:
+ *pOut << "HYPHENZONE" << endl;
+ break;
+
+ case RES_LR_SPACE:
+ {
+ sprintf( sOut,
+ "LRSpace: Left[%d], Right[%d]",
+ ((const SvxLRSpaceItem*)pItem)->GetLeft(),
+ ((const SvxLRSpaceItem*)pItem)->GetRight() );
+ }
+ break;
+ case RES_UL_SPACE:
+ {
+ sprintf( sOut,
+ "ULSpace: Upper[%d], Lower[%d]",
+ ((const SvxULSpaceItem*)pItem)->GetUpper(),
+ ((const SvxULSpaceItem*)pItem)->GetLower() );
+ }
+ break;
+
+ case RES_BACKGROUND:
+ *pOut << "BACKGROUND" << endl;
+ break;
+ case RES_BOX:
+ *pOut << "BOX" << endl;
+ break;
+ case RES_SHADOW:
+ *pOut << "SHADOW" << endl;
+ break;
+
+ default:
+ sprintf( sOut, "UnknownItem: %d", pItem->Which() );
+ }
+
+ if( sOut[0] )
+ *pOut << sOut << endl;
+
+ if( aIter.IsAtEnd() )
+ break;
+ pItem = aIter.NextItem();
+ }
+}
+
+static void OutStyle( const SwPaM& rPam, const SwTxtFmtColl& rColl )
+{
+ char sOut[ 200 ];
+ sprintf( sOut, "Style: [%5d|%5d] - [%5d|%5d]",
+ rPam.GetMark()->nNode.GetIndex(),
+ rPam.GetMark()->nContent.GetIndex(),
+ rPam.GetPoint()->nNode.GetIndex(),
+ rPam.GetPoint()->nContent.GetIndex() );
+ *pOut << sOut
+ << " ®"
+ << rColl.GetName()->GetStr()
+ << "¯ {" << endl;
+ OutAttr( rColl.GetAttrSet() );
+ *pOut << '}' << endl;
+}
+
+static void OutSet( const SwPaM& rPam, const SfxItemSet& rSet )
+{
+ char sOut[ 200 ];
+ sprintf( sOut, "Attr: [%5d|%5d] - [%5d|%5d] {",
+ rPam.GetMark()->nNode.GetIndex(),
+ rPam.GetMark()->nContent.GetIndex(),
+ rPam.GetPoint()->nNode.GetIndex(),
+ rPam.GetPoint()->nContent.GetIndex() );
+ *pOut << sOut << endl;
+ OutAttr( rSet );
+ *pOut << '}' << endl;
+}
+
+static void OutText( const SwPaM& rPam, const char* pText )
+{
+ char sOut[ 200 ];
+ sprintf( sOut, "Text: [%5d|%5d] - [%5d|%5d]",
+ rPam.GetMark()->nNode.GetIndex(),
+ rPam.GetMark()->nContent.GetIndex(),
+ rPam.GetPoint()->nNode.GetIndex(),
+ rPam.GetPoint()->nContent.GetIndex() );
+ *pOut << sOut
+ << " ®"
+ << pText
+ << '¯' << endl;
+}
+
+static void DumpStart()
+{
+ TempFile aTempFile;
+
+ pOut = new SvFileStream( aTempFile.GetName(),
+ STREAM_WRITE | STREAM_TRUNC );
+ *pOut << "Dump des RTF30-Parsers" << endl;
+}
+
+static void DumpEnde()
+{
+ *pOut << endl<< "Das wars" << endl;
+ delete pOut;
+ pOut = 0;
+}
+
+#endif
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/rtf/swparrtf.cxx,v 1.1.1.1 2000-09-18 17:14:56 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.159 2000/09/18 16:04:51 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.158 2000/08/07 15:13:02 jp
+ Bug #77342#: use String::CreateFromInt32
+
+ Revision 1.157 2000/08/04 10:48:19 jp
+ Soft-/HardHyphens & HardBlanks changed from attribute to unicode character; use rtfout functions
+
+ Revision 1.156 2000/07/20 13:16:26 jp
+ change old txtatr-character to the two new characters
+
+ Revision 1.155 2000/06/13 09:42:01 os
+ using UCB
+
+ Revision 1.154 2000/05/26 07:22:44 os
+ old SW Basic API Slots removed
+
+ Revision 1.153 2000/05/09 17:23:01 jp
+ Changes for Unicode
+
+ Revision 1.152 2000/03/21 16:30:56 jp
+ Bug #74351# ReadSectControls: reset column from the first pagedesc too
+
+ Revision 1.151 2000/03/14 17:25:21 jp
+ Bug #73968#: read and set outline/num-levels
+
+ Revision 1.150 2000/03/14 09:22:29 jp
+ Bug #73941#: remove unused numrules, share override rules
+
+ Revision 1.149 2000/02/24 18:31:42 jp
+ Bug #73480#: ReadSectControls - dont set columns at PageDesc and Region
+
+ Revision 1.148 2000/02/11 17:36:06 jp
+ Bug #72146#: read UniCode character
+
+ Revision 1.147 2000/02/11 14:38:06 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.146 2000/01/25 20:13:27 jp
+ Bug #72146#: read UniCode character
+
+ Revision 1.145 2000/01/07 12:26:54 jp
+ Task #71411#: read/write NoBalancedColumns
+
+ Revision 1.144 1999/12/13 13:15:42 jp
+ Bug #70916#: ROW - skip to the end of the current line and then move the cursor one node forward
+
+*************************************************************************/
+
diff --git a/sw/source/filter/rtf/swparrtf.hxx b/sw/source/filter/rtf/swparrtf.hxx
new file mode 100644
index 000000000000..a6a889e8d985
--- /dev/null
+++ b/sw/source/filter/rtf/swparrtf.hxx
@@ -0,0 +1,437 @@
+/*************************************************************************
+ *
+ * $RCSfile: swparrtf.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWPARRTF_HXX
+#define _SWPARRTF_HXX
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_BOOLS
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _SVXRTF_HXX //autogen
+#include <svx/svxrtf.hxx>
+#endif
+
+#ifndef _NDINDEX_HXX
+#include <ndindex.hxx>
+#endif
+
+class Font;
+class Graphic;
+
+class SwNoTxtNode;
+class Size;
+class SwPaM;
+class SwDoc;
+class SwPageDesc;
+class SwTxtFmtColl;
+class SwTableNode;
+class SwCharFmt;
+class SwNumFmt;
+class SwNumRule;
+class SwRTFParser;
+class SvxFontItem;
+class SwRelNumRuleSpaces;
+class SwNodeNum;
+class SwTxtNode;
+struct SvxRTFPictureType;
+
+
+class SwNodeIdx : public SvxNodeIdx
+{
+ SwNodeIndex aIdx;
+public:
+ SwNodeIdx( const SwNodeIndex& rIdx ) : aIdx( rIdx ) {}
+ virtual ULONG GetIdx() const;
+ virtual SvxNodeIdx* Clone() const;
+};
+
+class SwxPosition : public SvxPosition
+{
+ SwPaM* pPam;
+public:
+ SwxPosition( SwPaM* pCrsr ) : pPam( pCrsr ) {}
+
+ virtual ULONG GetNodeIdx() const;
+ virtual xub_StrLen GetCntIdx() const;
+
+ // erzeuge von sich selbst eine Kopie
+ virtual SvxPosition* Clone() const;
+ // erzeuge vom NodeIndex eine Kopie
+ virtual SvxNodeIdx* MakeNodeIdx() const;
+};
+
+
+// zum zwischenspeichern der Flys:
+struct SwFlySave
+{
+ SfxItemSet aFlySet;
+ SwNodeIndex nSttNd, nEndNd;
+ SwTwips nPageWidth;
+ xub_StrLen nEndCnt;
+ USHORT nDropLines, nDropAnchor;
+
+ SwFlySave( const SwPaM& rPam, SfxItemSet& rSet );
+ int IsEqualFly( const SwPaM& rPos, SfxItemSet& rSet );
+ void SetFlySize( const SwTableNode& rTblNd );
+};
+
+struct SwListEntry
+{
+ long nListId, nListTemplateId, nListNo;
+ USHORT nListDocPos;
+ BOOL bRuleUsed;
+
+ SwListEntry()
+ : nListId( 0 ), nListTemplateId( 0 ), nListNo( 0 ), nListDocPos( 0 ),
+ bRuleUsed( FALSE )
+ {}
+ SwListEntry( long nLstId, long nLstTmplId, USHORT nLstDocPos )
+ : nListId( nLstId ), nListTemplateId( nLstTmplId ), nListNo( 0 ),
+ nListDocPos( nLstDocPos ), bRuleUsed( FALSE )
+ {}
+
+ void Clear() { nListId = nListTemplateId = nListNo = 0, nListDocPos = 0;
+ bRuleUsed = FALSE; }
+};
+
+DECLARE_TABLE( SwRTFStyleTbl, SwTxtFmtColl* )
+DECLARE_TABLE( SwRTFCharStyleTbl, SwCharFmt* )
+typedef SwFlySave* SwFlySavePtr;
+SV_DECL_PTRARR_DEL( SwFlySaveArr, SwFlySavePtr, 0, 20 )
+SV_DECL_VARARR( SwListArr, SwListEntry, 0, 20 )
+
+
+class SwRTFParser : public SvxRTFParser
+{
+ SwRTFStyleTbl aTxtCollTbl;
+ SwRTFCharStyleTbl aCharFmtTbl;
+ SwFlySaveArr aFlyArr; // Flys als Letzes im Doc setzen
+ SvBools aMergeBoxes; // Flags fuer gemergte Zellen
+ SwListArr aListArr;
+ SvPtrarr aTblFmts;
+
+ SfxItemSet* pGrfAttrSet;
+ SwTableNode* pTableNode, *pOldTblNd; // fuers Lesen von Tabellen: akt. Tab
+ SwNodeIndex* pSttNdIdx;
+ SwNodeIndex* pRegionEndIdx;
+ SwDoc* pDoc;
+ SwPaM* pPam; // SwPosition duerfte doch reichen, oder ??
+ SwRelNumRuleSpaces* pRelNumRule; // Liste aller benannten NumRules
+
+ USHORT nAktPageDesc, nAktFirstPageDesc;
+ USHORT nAktBox; // akt. Box
+ USHORT nInsTblRow; // beim nach \row kein \pard -> neue Line anlegen
+ USHORT nNewNumSectDef; // jeder SectionWechsel kann neue Rules definieren
+
+ BOOL bSwPageDesc : 1;
+ BOOL bReadSwFly : 1; // lese Swg-Fly (wichtig fuer Bitmaps!)
+ BOOL bReadNoTbl : 1; // verhinder Tabelle in Tabelle/FootNote
+ BOOL bFootnoteAutoNum : 1; // automatische Numerierung ?
+ BOOL bStyleTabValid : 1; // Styles schon erzeugt ?
+ BOOL bInPgDscTbl : 1; // beim PageDescTbl lesen
+ BOOL bNewNumList : 1; // Word 7.0 NumList gelesen, 6.0 ueberspringen
+ BOOL bFirstContinue: 1; // 1.Call ins Continue
+ BOOL bFirstDocControl: 1; // 1.Call of ReadDocControl
+
+
+ virtual void InsertPara();
+ virtual void InsertText();
+ virtual void MovePos( int bForward = TRUE );
+ virtual void SetEndPrevPara( SvxNodeIdx*& rpNodePos, xub_StrLen& rCntPos );
+
+ void CheckInsNewTblLine();
+
+ // setze RTF-Werte auf Swg-Werte
+ void SetSwgValues( SfxItemSet& rSet );
+
+ virtual void ReadInfo( const sal_Char* pChkForVerNo = 0 );
+
+ void ReadListLevel( SwNumRule& rRule, BYTE nLvl );
+ void ReadListTable();
+ void ReadListOverrideTable();
+ void ReadNumSecLevel( int nToken );
+ SwNumRule* GetNumRuleOfListNo( long nListNo,
+ BOOL bRemoveFromList = FALSE );
+ void RemoveUnusedNumRule( SwNumRule* );
+ void RemoveUnusedNumRules();
+ const Font* FindFontOfItem( const SvxFontItem& rItem ) const;
+
+ // 3 Methoden zum Aufbauen der Styles
+ SwTxtFmtColl* MakeColl( const String&, USHORT nPos, BYTE nOutlineLevel,
+ int& rbCollExist );
+ SwCharFmt* MakeCharFmt( const String& rName, USHORT nPos,
+ int& rbCollExist );
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
+
+ int MakeFieldInst( String& rFieldStr );
+ SwPageDesc* _MakeNewPageDesc( int bFirst );
+
+ // einlesen/einfuegen von Bitmaps
+ void InsPicture( const String& rNm,
+ const Graphic* = 0, const SvxRTFPictureType* = 0 );
+ void _SetPictureSize( const SwNoTxtNode& rNd, const SwNodeIndex& rAnchor,
+ SfxItemSet& rSet, const SvxRTFPictureType* = 0 );
+
+ void SetFlysInDoc();
+ void GetPageSize( Size& rSize ); // Groesse der PagePrintArea
+
+ // fuers Einlesen von Tabellen
+ void GotoNextBox();
+ void NewTblLine();
+
+ void DelLastNode(); // loesche den letzten Node (Tabelle/Fly/Ftn/..)
+
+ void AddNumRule( SwNumRule* pRule );
+ void SetNumRelSpaces();
+ void SetOultineRelSpaces( const SwNodeIndex& rStt,
+ const SwNodeIndex& rEnd );
+ void SetNumLSpace( SwTxtNode& rNd, const SwNodeNum& rNum,
+ const SwNumRule& rRule );
+
+protected:
+ // wird fuer jedes Token gerufen, das in CallParser erkannt wird
+ virtual void NextToken( int nToken );
+
+// virtual void ReadUnknownData();
+ virtual void ReadBitmapData();
+#ifdef READ_OLE_OBJECT
+ virtual void ReadOLEData();
+#endif
+ virtual void SetAttrInDoc( SvxRTFItemStackType &rSet );
+ // fuer Tokens, die im ReadAttr nicht ausgewertet werden
+ virtual void UnknownAttrToken( int nToken, SfxItemSet* pSet );
+
+ void ReadPrtData();
+ void ReadField();
+ void ReadHeaderFooter( int nToken, SwPageDesc* pPageDesc = 0 );
+ void ReadDocControls( int nToken );
+ void ReadSectControls( int nToken );
+ void ReadFly( int nToken, SfxItemSet* pFillSet = 0 );
+ void ReadTable( int nToken );
+ void ReadPageDescTbl();
+
+ virtual ~SwRTFParser();
+
+public:
+ SwRTFParser( SwDoc* pD, const SwPaM& rCrsr, SvStream& rIn,
+ int bReadNewDoc = TRUE );
+
+ virtual SvParserState CallParser(); // Aufruf des Parsers
+ virtual int IsEndPara( SvxNodeIdx* pNd, xub_StrLen nCnt ) const;
+
+ // fuers asynchrone lesen aus dem SvStream
+// virtual void SaveState( int nToken );
+// virtual void RestoreState();
+ virtual void Continue( int nToken );
+};
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.45 2000/09/18 16:04:51 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.44 2000/09/09 12:53:29 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.43 2000/05/09 17:23:05 jp
+ Changes for Unicode
+
+ Revision 1.42 2000/04/14 14:00:41 khz
+ Task #70451# use CalculateFlySize() for WW frames with 'auto'width
+
+ Revision 1.41 2000/03/14 09:22:33 jp
+ Bug #73941#: remove unused numrules, share override rules
+
+ Revision 1.40 1999/08/03 17:43:08 JP
+ Bug #68028#,#68026#,#67983#,#67982#: changes for import of PageDesc from interleave/WP7/Aplixware
+
+
+ Rev 1.39 03 Aug 1999 19:43:08 JP
+ Bug #68028#,#68026#,#67983#,#67982#: changes for import of PageDesc from interleave/WP7/Aplixware
+
+ Rev 1.38 19 Apr 1999 12:48:50 JP
+ Vorbereitungen fuer OLE-Objecte in RTF lesen (anstoss ist Bug #60140#)
+
+ Rev 1.37 18 Mar 1999 09:51:50 JP
+ Task #63049#: Numerierung mit rel. Einzuegen
+
+ Rev 1.36 16 Mar 1999 23:20:00 JP
+ Task #63049#: Einzuege bei NumRules relativ
+
+ Rev 1.35 05 Mar 1999 14:27:58 JP
+ Bug #57749#: spaltige Bereiche einlesen - jeder Bereich hat eigene NumRules
+
+ Rev 1.34 03 Mar 1999 15:17:24 JP
+ Bug #57749#: spaltige Bereiche einlesen
+
+ Rev 1.33 24 Feb 1999 19:51:32 JP
+ Task #62314#: Asynchrone DDE-Links/-Requests
+
+ Rev 1.32 21 Sep 1998 17:16:14 JP
+ DropCaps unterstuetzen
+
+ Rev 1.31 13 Aug 1998 10:33:24 JP
+ Bug #53525#: Tabellen - an den Kanten keine doppelte Umrandung mehr
+
+ Rev 1.30 27 May 1998 22:26:16 JP
+ Bug #50585#: ListOverrideTabelle korrekt einlesen
+
+ Rev 1.29 20 Apr 1998 17:43:20 JP
+ neu: Numerierung lesen/schreiben
+
+ Rev 1.28 06 Apr 1998 14:46:30 JP
+ Erweiterungen fuer Numerierungen (97-Vers.)
+
+ Rev 1.27 03 Apr 1998 18:51:52 JP
+ RTF-Parser um neue Tokens erweitert
+
+ Rev 1.26 11 Feb 1998 14:07:20 JP
+ kleinere Bugs behoben bei Rahmen & Tabellen
+
+ Rev 1.25 26 Jan 1998 20:54:50 JP
+ Bug #45958#: Continue - die gesplitteten Nodes richtig zusammenfassen, neu: Zeichenvorlagen lesen
+
+ Rev 1.24 09 Oct 1997 14:27:52 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.23 01 Sep 1997 20:09:02 JP
+ Bug #43126#: Flag fuers Einfuegen in Numerierungen
+
+ Rev 1.22 11 Aug 1997 13:59:42 OM
+ Headerfile-Umstellung
+
+ Rev 1.21 27 Jun 1997 11:34:36 JP
+ Bug #40723#: erst pard oder neue Ebene nach einem row hebt die Tabelle auf
+
+ Rev 1.20 23 Oct 1996 12:42:24 JP
+ SVMEM -> SVSTDARR Umstellung
+
+ Rev 1.19 04 Jul 1996 15:02:30 JP
+ Tabellen einlesen korrigiert
+
+ Rev 1.18 28 Jun 1996 15:07:26 MA
+ includes
+
+ Rev 1.17 18 Jun 1996 16:35:38 JP
+ ReadFly: erweitert um optionalen Itemset erweitert(FlyInFly lesen)
+
+ Rev 1.16 12 Jun 1996 16:49:36 JP
+ PageDesc: Header/Footer richtig einlesen
+
+ Rev 1.15 08 May 1996 18:33:20 JP
+ Erweiterung fuers asynchrone Laden
+
+ Rev 1.14 25 Apr 1996 13:57:16 MIB
+ Verschiebung SvHTMLParser in Gooedies
+
+ Rev 1.13 25 Apr 1996 09:24:30 JP
+ SwPictureType in svx exportiert
+
+ Rev 1.12 12 Feb 1996 12:45:50 JP
+ StyleTabelle auch aufbauen wenn sie gebraucht wird
+
+ Rev 1.11 13 Dec 1995 10:35:58 MA
+ opt: Bessere Defaults fuer Arrays
+
+ Rev 1.10 30 Oct 1995 21:18:58 JP
+ intbl refernziert auch vorher eingelesene Tabellen
+
+ Rev 1.9 11 Oct 1995 20:31:48 HJS
+ umbenennung
+
+ Rev 1.8 23 Feb 1995 09:37:06 JP
+ Methode RTFPardPlain wird nicht mehr benoetigt
+
+ Rev 1.7 08 Feb 1995 09:49:14 JP
+ alten RTF-Parser entfernt, Sw_RTF -> SwRTF
+
+ Rev 1.6 18 Jan 1995 19:53:48 JP
+ Footnote: beachte fuehrende Zeichen
+
+ Rev 1.5 15 Jan 1995 20:34:12 JP
+ Einfuegen in bestehendes Doc: Vorlagen richtig behandeln
+
+ Rev 1.4 11 Jan 1995 19:45:30 JP
+ RTF-Reader fertiggestellt
+
+ Rev 1.3 09 Jan 1995 08:25:12 JP
+ aus rtffly.cxx SwFlySave public gemacht
+
+ Rev 1.2 06 Jan 1995 12:08:28 JP
+ lesen von Tabellen zugefuegt
+
+ Rev 1.1 23 Dec 1994 08:39:28 JP
+ forward deklaration zugefuegt
+
+ Rev 1.0 22 Dec 1994 17:38:36 JP
+ Initial revision.
+
+*************************************************************************/
+
+#endif
+ //_SWPARRTF_HXX
+
diff --git a/sw/source/filter/rtf/wrtrtf.cxx b/sw/source/filter/rtf/wrtrtf.cxx
new file mode 100644
index 000000000000..c5abaa8a64c7
--- /dev/null
+++ b/sw/source/filter/rtf/wrtrtf.cxx
@@ -0,0 +1,1593 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtrtf.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <stdlib.h>
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _DATETIME_HXX //autogen
+#include <tools/datetime.hxx>
+#endif
+#ifndef _RTL_TENCINFO_H
+#include <rtl/tencinfo.h>
+#endif
+#ifndef _RTFKEYWD_HXX //autogen
+#include <svtools/rtfkeywd.hxx>
+#endif
+#ifndef _RTFOUT_HXX
+#include <svtools/rtfout.hxx>
+#endif
+#ifndef _SFXDOCINF_HXX //autogen
+#include <sfx2/docinf.hxx>
+#endif
+#ifndef _SVX_PAPERINF_HXX //autogen
+#include <svx/paperinf.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_SHADITEM_HXX //autogen
+#include <svx/shaditem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_TSTPITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+
+
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _WRTRTF_HXX
+#include <wrtrtf.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _FLYPOS_HXX
+#include <flypos.hxx>
+#endif
+#ifndef _BOOKMRK_HXX
+#include <bookmrk.hxx> // fuer SwBookmark ...
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx> // fuer SwPageDesc...
+#endif
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+#ifndef _FTNINFO_HXX
+#include <ftninfo.hxx>
+#endif
+#ifndef _CHARFMT_HXX
+#include <charfmt.hxx>
+#endif
+#ifndef _SECTION_HXX //autogen
+#include <section.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx> // fuer SwPageDesc ...
+#endif
+
+#ifndef _SWSWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx> // ...Percent()
+#endif
+#ifndef _STATSTR_HRC
+#include <statstr.hrc> // ResId fuer Statusleiste
+#endif
+
+#if defined(MAC)
+const sal_Char SwRTFWriter::sNewLine = '\015';
+#elif defined(UNX)
+const sal_Char SwRTFWriter::sNewLine = '\012';
+#else
+const sal_Char __FAR_DATA SwRTFWriter::sNewLine[] = "\015\012";
+#endif
+
+
+
+SV_DECL_VARARR( RTFColorTbl, Color, 5, 2 )
+SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+SwRTFWriter::SwRTFWriter( const String& rFltName )
+{
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+ // schreibe nur Gliederungs Absaetze
+ bOutOutlineOnly = 'O' == rFltName.GetChar( 0 );
+}
+
+
+SwRTFWriter::~SwRTFWriter() {}
+
+
+
+ULONG SwRTFWriter::WriteStream()
+{
+ bOutPageAttr = bOutSection = TRUE;
+
+ bOutStyleTab = bOutTable = bOutPageDesc = bOutPageDescTbl =
+ bAutoAttrSet = bOutListNumTxt = bOutLeftHeadFoot = bIgnoreNextPgBreak =
+ FALSE;
+
+ nFontHeight = 0;
+ nBkmkTabPos = USHRT_MAX;
+ pAktPageDesc = 0;
+ pAttrSet = 0;
+ pFlyFmt = 0; // kein FlyFrmFormat gesetzt
+
+ pColTbl = new RTFColorTbl;
+
+ BYTE nSz = (BYTE)Min( pDoc->GetSpzFrmFmts()->Count(), USHORT(255) );
+ SwPosFlyFrms aFlyPos( nSz, nSz );
+
+ //Abkuerzung wenn nur Gliederung ausgegeben werden soll, und keine
+ //Gliederungsabsaetze ausserhalb des Body stehen.
+ if ( bOutOutlineOnly &&
+ pDoc->GetNodes().GetOutLineNds().Count() &&
+ pDoc->GetNodes().GetOutLineNds()[0]->GetIndex() >
+ pDoc->GetNodes().GetEndOfExtras().GetIndex() )
+ {
+ nAktFlyPos = 0;
+ pFlyPos = 0;
+ MakeHeader();
+
+ const SwOutlineNodes &rOutLine = pDoc->GetNodes().GetOutLineNds();
+ for ( USHORT i = 0; i < rOutLine.Count(); ++i )
+ {
+ const SwNode *pNd = pDoc->GetNodes()[*rOutLine[i]];
+ ASSERT( pNd->IsCntntNode(), "Outlinenode and no CntNode!?" );
+
+ SwCntntNode* pCNd = (SwCntntNode*)pNd;
+
+ // erfrage den aktuellen PageDescriptor.
+ const SwPageDesc* pTmp = pCNd->GetSwAttrSet().GetPageDesc().GetPageDesc();
+ if( pTmp )
+ pAktPageDesc = pTmp;
+ pCurPam->GetPoint()->nContent.Assign( pCNd, 0 );
+ Out( aRTFNodeFnTab, *pCNd, *this );
+ }
+ }
+ else
+ {
+ long nMaxNode = pDoc->GetNodes().Count();
+
+ if( bShowProgress )
+ ::StartProgress( STR_STATSTR_W4WWRITE, 0, nMaxNode, pDoc->GetDocShell() );
+
+ // Tabelle am Doc.-Anfang beachten
+ {
+ SwTableNode * pTNd = pCurPam->GetNode()->FindTableNode();
+ if( pTNd && bWriteAll )
+ {
+ // mit dem TabellenNode anfangen !!
+ pCurPam->GetPoint()->nNode = *pTNd;
+
+ if( bWriteOnlyFirstTable )
+ pCurPam->GetMark()->nNode = *pTNd->EndOfSectionNode();
+ }
+ }
+
+ // Tabelle fuer die freifliegenden Rahmen erzeugen, aber nur wenn
+ // das gesamte Dokument geschrieben wird
+ nAktFlyPos = 0;
+ pDoc->GetAllFlyFmts( aFlyPos, bWriteAll ? 0 : pOrigPam );
+
+ // sollten nur Rahmen vorhanden sein?
+ // (Moeglich, wenn eine Rahmen-Selektion ins Clipboard
+ // gestellt wurde)
+ if( bWriteAll &&
+ // keine Laenge
+ *pCurPam->GetPoint() == *pCurPam->GetMark() &&
+ // Rahmen vorhanden
+ pDoc->GetSpzFrmFmts()->Count() && !aFlyPos.Count() &&
+ // nur ein Node im Array
+ pDoc->GetNodes().GetEndOfExtras().GetIndex() + 3 ==
+ pDoc->GetNodes().GetEndOfContent().GetIndex() &&
+ // und genau der ist selektiert
+ pDoc->GetNodes().GetEndOfContent().GetIndex() - 1 ==
+ pCurPam->GetPoint()->nNode.GetIndex() )
+ {
+ // dann den Inhalt vom Rahmen ausgeben.
+ // dieser steht immer an Position 0 !!
+ SwFrmFmt* pFmt = (*pDoc->GetSpzFrmFmts())[ 0 ];
+ const SwNodeIndex* pIdx = pFmt->GetCntnt().GetCntntIdx();
+ if( pIdx )
+ {
+ SwPosFlyFrm* pFPos = new SwPosFlyFrm( pCurPam->GetPoint()->nNode,
+ pFmt, aFlyPos.Count() );
+ aFlyPos.Insert( pFPos );
+ }
+ }
+
+ pFlyPos = &aFlyPos;
+
+ // schreibe die StyleTabelle, allgemeine Angaben,Header/Footer/Footnotes
+ MakeHeader();
+
+ Out_SwDoc( pOrigPam );
+
+ if( bShowProgress )
+ ::EndProgress( pDoc->GetDocShell() );
+ }
+
+ Strm() << '}';
+
+ // loesche die Tabelle mit den freifliegenden Rahmen
+ for( USHORT i = aFlyPos.Count(); i > 0; )
+ delete aFlyPos[ --i ];
+
+ pFlyPos = 0;
+ delete pColTbl;
+
+ // schreibe Win-RTF-HelpFileFmt
+ bOutOutlineOnly = bWriteHelpFmt = FALSE;
+ pAttrSet = 0;
+
+ return 0;
+}
+
+
+void SwRTFWriter::Out_SwDoc( SwPaM* pPam )
+{
+ BOOL bSaveWriteAll = bWriteAll; // sichern
+ // suche die naechste Bookmark-Position aus der Bookmark-Tabelle
+ nBkmkTabPos = bWriteAll ? FindPos_Bkmk( *pCurPam->GetPoint() ) : USHRT_MAX;
+
+ // gebe alle Bereiche des Pams in das RTF-File aus.
+ do {
+ bWriteAll = bSaveWriteAll;
+ bFirstLine = TRUE;
+
+ // suche den ersten am Pam-auszugebenen FlyFrame
+ // fehlt noch:
+
+ while( pCurPam->GetPoint()->nNode < pCurPam->GetMark()->nNode ||
+ (pCurPam->GetPoint()->nNode == pCurPam->GetMark()->nNode &&
+ pCurPam->GetPoint()->nContent.GetIndex() <= pCurPam->GetMark()->nContent.GetIndex()) )
+ {
+ SwNode& rNd = pCurPam->GetPoint()->nNode.GetNode();
+
+ if( &rNd == &pDoc->GetNodes().GetEndOfContent() )
+ break;
+
+ if( rNd.IsCntntNode() )
+ {
+ SwCntntNode& rCNd = (SwCntntNode&)rNd;
+
+ OutBreaks( rCNd.GetSwAttrSet() );
+ OutFlyFrm();
+
+ if( !bFirstLine )
+ pCurPam->GetPoint()->nContent.Assign( &rCNd, 0 );
+
+ if( !bOutOutlineOnly ||
+ ( rCNd.IsTxtNode() && NO_NUMBERING !=
+ ((SwTxtNode&)rCNd).GetTxtColl()->GetOutlineLevel() ))
+ Out( aRTFNodeFnTab, rCNd, *this );
+
+ }
+ else if( !bOutOutlineOnly )
+ {
+ if( rNd.IsTableNode() )
+ {
+ OutBreaks( ((SwTableNode&)rNd).GetTable().GetFrmFmt()
+ ->GetAttrSet() );
+ OutRTF_SwTblNode( *this, (SwTableNode&)rNd );
+ }
+ else if( rNd.IsSectionNode() )
+ {
+ OutBreaks( ((SwSectionNode&)rNd).GetSection().GetFmt()
+ ->GetAttrSet() );
+ OutRTF_SwSectionNode( *this, (SwSectionNode&)rNd );
+ }
+ else if( rNd.IsEndNode() )
+ CheckEndNodeForSection( rNd );
+ }
+
+ ULONG nPos = pCurPam->GetPoint()->nNode++; // Bewegen
+
+ if( bShowProgress )
+ ::SetProgressState( nPos, pDoc->GetDocShell() ); // Wie weit ?
+
+ /* sollen nur die Selectierten Bereiche gesichert werden, so
+ * duerfen nur die vollstaendigen Nodes gespeichert werde,
+ * d.H. der 1. und n. Node teilweise, der 2. bis n-1. Node
+ * vollstaendig. (vollstaendig heisst mit allen Formaten! )
+ */
+ bWriteAll = bSaveWriteAll ||
+ pCurPam->GetPoint()->nNode != pCurPam->GetMark()->nNode;
+ bFirstLine = FALSE;
+ }
+ } while( CopyNextPam( &pPam ) ); // bis alle PaM's bearbeitet
+
+ bWriteAll = bSaveWriteAll; // wieder auf alten Wert zurueck
+}
+
+
+// schreibe die StyleTabelle, algemeine Angaben,Header/Footer/Footnotes
+
+
+void SwRTFWriter::MakeHeader()
+{
+ // baue den Vorspann wie Header, ColorTbl, FontTbl
+ Strm() << '{' << sRTF_RTF << '1'
+#ifdef MAC
+ << sRTF_MAC
+#else
+ << sRTF_ANSI
+#endif
+ ;
+ if( bWriteAll )
+ {
+ Strm() << sRTF_DEFF;
+ OutULong( GetId( (SvxFontItem&)pDoc->GetAttrPool().GetDefaultItem(
+ RES_CHRATR_FONT ) ));
+ }
+
+
+ OutRTFFontTab();
+ OutRTFColorTab();
+ OutRTFStyleTab();
+ OutRTFListTab();
+
+ Strm() << SwRTFWriter::sNewLine; // ein Trenner
+
+ // wenn teilweise ausgegeben wird, die globalen Daten nicht speichern
+ if( !bWriteAll )
+ return;
+
+ // Ausgeben der Doc-Info/-Statistik
+ OutDocInfoStat();
+
+ // einige globale Daten Schreiben
+ { // Default-TabSize
+ const SvxTabStopItem& rTabs = (const SvxTabStopItem&)
+ pDoc->GetAttrPool().GetDefaultItem( RES_PARATR_TABSTOP );
+ Strm() << sRTF_DEFTAB;
+ OutLong( rTabs[0].GetTabPos() );
+ }
+
+ // PageDescriptor ausgeben (??nur wenn das gesamte Dokument??)
+ OutPageDesc();
+
+ // gebe die Groesse und die Raender der Seite aus
+ if( pDoc->GetPageDescCnt() )
+ {
+ //JP 06.04.99: Bug 64361 - suche den ersten SwFmtPageDesc. Ist
+ // keiner gesetzt, so ist der Standard gueltig
+ const SwFmtPageDesc* pSttPgDsc = 0;
+ {
+ const SwNode& rSttNd = *pDoc->GetNodes()[
+ pDoc->GetNodes().GetEndOfExtras().GetIndex() + 2 ];
+ const SfxItemSet* pSet = 0;
+
+ if( rSttNd.IsCntntNode() )
+ pSet = &rSttNd.GetCntntNode()->GetSwAttrSet();
+ else if( rSttNd.IsTableNode() )
+ pSet = &rSttNd.GetTableNode()->GetTable().
+ GetFrmFmt()->GetAttrSet();
+ else if( rSttNd.IsSectionNode() )
+ pSet = &rSttNd.GetSectionNode()->GetSection().
+ GetFmt()->GetAttrSet();
+
+ if( pSet )
+ {
+ USHORT nPosInDoc;
+ pSttPgDsc = (SwFmtPageDesc*)&pSet->Get( RES_PAGEDESC );
+ if( !pSttPgDsc->GetPageDesc() )
+ pSttPgDsc = 0;
+ else if( pDoc->FindPageDescByName( pSttPgDsc->
+ GetPageDesc()->GetName(), &nPosInDoc ))
+ {
+ // FALSE wegen schliessender Klammer !!
+ OutComment( *this, sRTF_PGDSCNO, FALSE );
+ OutULong( nPosInDoc ) << '}';
+ }
+ }
+ }
+ const SwPageDesc& rPageDesc = pSttPgDsc ? *pSttPgDsc->GetPageDesc()
+ : pDoc->GetPageDesc( 0 );
+ const SwFrmFmt &rFmtPage = rPageDesc.GetMaster();
+
+ {
+ if( rPageDesc.GetLandscape() )
+ Strm() << sRTF_LANDSCAPE;
+
+ const SwFmtFrmSize& rSz = rFmtPage.GetFrmSize();
+ // Clipboard-Dokument wird immer ohne Drucker angelegt, so ist
+ // der Std.PageDesc immer aug LONG_MAX !! Mappe dann auf DIN A4
+ if( LONG_MAX == rSz.GetHeight() || LONG_MAX == rSz.GetWidth() )
+ {
+ Strm() << sRTF_PAPERH;
+ OutULong( lA4Height ) << sRTF_PAPERW;
+ OutULong( lA4Width );
+ }
+ else
+ {
+ Strm() << sRTF_PAPERH;
+ OutULong( rSz.GetHeight() ) << sRTF_PAPERW;
+ OutULong( rSz.GetWidth() );
+ }
+ }
+
+ {
+ const SvxLRSpaceItem& rLR = rFmtPage.GetLRSpace();
+ Strm() << sRTF_MARGL;
+ OutLong( rLR.GetLeft() ) << sRTF_MARGR;
+ OutLong( rLR.GetRight() );
+ }
+
+ {
+ const SvxULSpaceItem& rUL = rFmtPage.GetULSpace();
+ Strm() << sRTF_MARGT;
+ OutLong( rUL.GetUpper() ) << sRTF_MARGB;
+ OutLong( rUL.GetLower() );
+ }
+
+ Strm() << sRTF_SECTD << sRTF_SBKNONE;
+ OutRTFPageDescription( rPageDesc, FALSE, FALSE );
+ if( pSttPgDsc )
+ {
+ bIgnoreNextPgBreak = TRUE;
+ pAktPageDesc = &rPageDesc;
+ }
+ }
+
+
+ {
+ // schreibe die Fussnoten- und Endnoten-Info raus
+ const SwFtnInfo& rFtnInfo = pDoc->GetFtnInfo();
+
+ const char* pOut = FTNPOS_CHAPTER == rFtnInfo.ePos
+ ? sRTF_ENDDOC
+ : sRTF_FTNBJ;
+ Strm() << pOut << sRTF_FTNSTART;
+ OutLong( rFtnInfo.nFtnOffset + 1 );
+
+ switch( rFtnInfo.eNum )
+ {
+ case FTNNUM_PAGE: pOut = sRTF_FTNRSTPG; break;
+ case FTNNUM_DOC: pOut = sRTF_FTNRSTCONT; break;
+// case FTNNUM_CHAPTER:
+ default: pOut = sRTF_FTNRESTART; break;
+ }
+ Strm() << pOut;
+
+ switch( rFtnInfo.aFmt.eType )
+ {
+ case SVX_NUM_CHARS_LOWER_LETTER:
+ case SVX_NUM_CHARS_LOWER_LETTER_N: pOut = sRTF_FTNNALC; break;
+ case SVX_NUM_CHARS_UPPER_LETTER:
+ case SVX_NUM_CHARS_UPPER_LETTER_N: pOut = sRTF_FTNNAUC; break;
+ case SVX_NUM_ROMAN_LOWER: pOut = sRTF_FTNNRLC; break;
+ case SVX_NUM_ROMAN_UPPER: pOut = sRTF_FTNNRUC; break;
+ case SVX_NUM_CHAR_SPECIAL: pOut = sRTF_FTNNCHI; break;
+// case SVX_NUM_ARABIC:
+ default: pOut = sRTF_FTNNAR; break;
+ }
+ Strm() << pOut;
+
+
+ const SwEndNoteInfo& rEndNoteInfo = pDoc->GetEndNoteInfo();
+
+ Strm() << sRTF_AENDDOC << sRTF_AFTNRSTCONT
+ << sRTF_AFTNSTART;
+ OutLong( rEndNoteInfo.nFtnOffset + 1 );
+
+ switch( rEndNoteInfo.aFmt.eType )
+ {
+ case SVX_NUM_CHARS_LOWER_LETTER:
+ case SVX_NUM_CHARS_LOWER_LETTER_N: pOut = sRTF_AFTNNALC; break;
+ case SVX_NUM_CHARS_UPPER_LETTER:
+ case SVX_NUM_CHARS_UPPER_LETTER_N: pOut = sRTF_AFTNNAUC; break;
+ case SVX_NUM_ROMAN_LOWER: pOut = sRTF_AFTNNRLC; break;
+ case SVX_NUM_ROMAN_UPPER: pOut = sRTF_AFTNNRUC; break;
+ case SVX_NUM_CHAR_SPECIAL: pOut = sRTF_AFTNNCHI; break;
+// case SVX_NUM_ARABIC:
+ default: pOut = sRTF_AFTNNAR; break;
+ }
+ Strm() << pOut;
+ }
+
+ if( pDoc->_GetDBDesc().Len() )
+ {
+ // stelle erstmal fest, ob ueberhaupt Datenbankfelder benutzt werden!
+ const SwFldTypes* pTypes = pDoc->GetFldTypes();
+ for( USHORT nCnt = pTypes->Count(); nCnt >= INIT_FLDTYPES; )
+ if( RES_DBFLD == (*pTypes)[ --nCnt ]->Which() &&
+ (*pTypes)[ nCnt ]->GetDepends() )
+ {
+ Strm() << '{' << sRTF_FIELD;
+ OutComment( *this, sRTF_FLDINST ) << " DATA ";
+ RTFOutFuncs::Out_String( Strm(), pDoc->GetDBName(),
+ DEF_ENCODING, bWriteHelpFmt );
+ Strm() << "}{" << sRTF_FLDRSLT << " }}";
+ break;
+ }
+ }
+
+ pAttrSet = 0;
+
+ Strm() << SwRTFWriter::sNewLine; // ein Trenner
+}
+
+void SwRTFWriter::OutInfoDateTime( const DateTime& rDT, const char* pStr )
+{
+ Strm() << '{' << pStr << sRTF_YR;
+ OutLong( Strm(), rDT.GetYear() ) << sRTF_MO;
+ OutLong( Strm(), rDT.GetMonth() ) << sRTF_DY;
+ OutLong( Strm(), rDT.GetDay() ) << sRTF_HR;
+ OutLong( Strm(), rDT.GetHour() ) << sRTF_MIN;
+ OutLong( Strm(), rDT.GetMin() ) << '}';
+}
+
+void SwRTFWriter::OutDocInfoStat()
+{
+ Strm() << '{' << sRTF_INFO;
+
+ const SfxDocumentInfo* pInfo = pDoc->GetpInfo();
+ if( pInfo )
+ {
+ const String* pStr = &pInfo->GetTitle();
+ if( pStr->Len() )
+ {
+ Strm() << '{' << sRTF_TITLE << ' ';
+ RTFOutFuncs::Out_String( Strm(), *pStr, DEF_ENCODING,
+ bWriteHelpFmt ) << '}';
+ }
+ if( (pStr = &pInfo->GetTheme())->Len() )
+ {
+ Strm() << '{' << sRTF_SUBJECT << ' ';
+ RTFOutFuncs::Out_String( Strm(), *pStr, DEF_ENCODING,
+ bWriteHelpFmt ) << '}';
+ }
+ if( (pStr = &pInfo->GetKeywords())->Len() )
+ {
+ Strm() << '{' << sRTF_KEYWORDS << ' ';
+ RTFOutFuncs::Out_String( Strm(), *pStr, DEF_ENCODING,
+ bWriteHelpFmt ) << '}';
+ }
+ if( (pStr = &pInfo->GetComment())->Len() )
+ {
+ Strm() << '{' << sRTF_DOCCOMM << ' ';
+ RTFOutFuncs::Out_String( Strm(), *pStr, DEF_ENCODING,
+ bWriteHelpFmt ) << '}';
+ }
+
+ const SfxStamp* pStamp = &pInfo->GetCreated();
+ if( ( pStr = &pStamp->GetName())->Len() )
+ {
+ Strm() << '{' << sRTF_AUTHOR << ' ';
+ RTFOutFuncs::Out_String( Strm(), *pStr, DEF_ENCODING,
+ bWriteHelpFmt ) << '}';
+ }
+ OutInfoDateTime( pStamp->GetTime(), sRTF_CREATIM );
+
+ pStamp = &pInfo->GetChanged();
+ if( ( pStr = &pStamp->GetName())->Len() )
+ {
+ Strm() << '{' << sRTF_OPERATOR << ' ';
+ RTFOutFuncs::Out_String( Strm(), *pStr, DEF_ENCODING,
+ bWriteHelpFmt ) << '}';
+ }
+ OutInfoDateTime( pStamp->GetTime(), sRTF_REVTIM );
+
+ OutInfoDateTime( pInfo->GetPrinted().GetTime(), sRTF_PRINTIM );
+ }
+
+
+ // fuer interne Zwecke - Versionsnummer rausschreiben
+ Strm() << '{' << sRTF_COMMENT << " StarWriter}{" << sRTF_VERN;
+ OutLong( Strm(), SOFFICE_FILEFORMAT_NOW ) << '}';
+
+ Strm() << '}';
+}
+
+
+static void InsColor( RTFColorTbl& rTbl, const Color& rCol )
+{
+ for( USHORT n = 0; n < rTbl.Count(); ++n )
+ if( rTbl[n] == rCol )
+ return; // schon vorhanden, zurueck
+
+ rTbl.Insert( rCol, rTbl.Count() );
+}
+
+static void InsColorLine( RTFColorTbl& rTbl, const SvxBoxItem& rBox )
+{
+ const SvxBorderLine* pLine = 0;
+
+ if( rBox.GetTop() )
+ InsColor( rTbl, (pLine = rBox.GetTop())->GetColor() );
+ if( rBox.GetBottom() && pLine != rBox.GetBottom() )
+ InsColor( rTbl, (pLine = rBox.GetBottom())->GetColor() );
+ if( rBox.GetLeft() && pLine != rBox.GetLeft() )
+ InsColor( rTbl, (pLine = rBox.GetLeft())->GetColor() );
+ if( rBox.GetRight() && pLine != rBox.GetRight() )
+ InsColor( rTbl, rBox.GetRight()->GetColor() );
+}
+
+
+void SwRTFWriter::OutRTFColorTab()
+{
+ ASSERT( pColTbl, "Wo ist meine Color-Tabelle?" );
+
+ // dann baue die ColorTabelle aus allen Attributen, die Colors
+ // enthalten und im Pool angemeldet sind auf.
+ USHORT n, nMaxItem;
+ const SfxItemPool& rPool = pDoc->GetAttrPool();
+
+ // das Charakter - Color Attribut
+ {
+ const SvxColorItem* pCol = (const SvxColorItem*)GetDfltAttr(
+ RES_CHRATR_COLOR );
+ InsColor( *pColTbl, pCol->GetValue() );
+ if( 0 != ( pCol = (const SvxColorItem*)rPool.GetPoolDefaultItem(
+ RES_CHRATR_COLOR ) ))
+ InsColor( *pColTbl, pCol->GetValue() );
+ nMaxItem = rPool.GetItemCount(RES_CHRATR_COLOR);
+ for( n = 0; n < nMaxItem; ++n )
+ if( 0 != (pCol = (const SvxColorItem*)rPool.GetItem(
+ RES_CHRATR_COLOR, n ) ) )
+ InsColor( *pColTbl, pCol->GetValue() );
+ }
+
+ // das Frame Hintergrund - Attribut
+ {
+ const SvxBrushItem* pBkgrd = (const SvxBrushItem*)GetDfltAttr(
+ RES_BACKGROUND );
+ InsColor( *pColTbl, pBkgrd->GetColor() );
+// InsColor( *pColTbl, pBkgrd->GetBrush().GetFillColor() );
+ if( 0 != ( pBkgrd = (const SvxBrushItem*)rPool.GetPoolDefaultItem(
+ RES_BACKGROUND ) ))
+ {
+ InsColor( *pColTbl, pBkgrd->GetColor() );
+// InsColor( *pColTbl, pBkgrd->GetBrush().GetFillColor() );
+ }
+ nMaxItem = rPool.GetItemCount(RES_BACKGROUND);
+ for( n = 0; n < nMaxItem; ++n )
+ if( 0 != (pBkgrd = (const SvxBrushItem*)rPool.GetItem(
+ RES_BACKGROUND, n ) ))
+ {
+ InsColor( *pColTbl, pBkgrd->GetColor() );
+// InsColor( *pColTbl, pBkgrd->GetBrush().GetFillColor() );
+ }
+ }
+
+ // das Frame Schatten - Attribut
+ {
+ const SvxShadowItem* pShadow = (const SvxShadowItem*)GetDfltAttr(
+ RES_SHADOW );
+ InsColor( *pColTbl, pShadow->GetColor() );
+// InsColor( *pColTbl, pShadow->GetBrush().GetFillColor() );
+ if( 0 != ( pShadow = (const SvxShadowItem*)rPool.GetPoolDefaultItem(
+ RES_SHADOW ) ))
+ {
+ InsColor( *pColTbl, pShadow->GetColor() );
+// InsColor( *pColTbl, pShadow->GetBrush().GetFillColor() );
+ }
+ nMaxItem = rPool.GetItemCount(RES_SHADOW);
+ for( n = 0; n < nMaxItem; ++n )
+ if( 0 != (pShadow = (const SvxShadowItem*)rPool.GetItem(
+ RES_SHADOW, n ) ) )
+ {
+ InsColor( *pColTbl, pShadow->GetColor() );
+// InsColor( *pColTbl, pShadow->GetBrush().GetFillColor() );
+ }
+ }
+
+ // das Frame Umrandungs - Attribut
+ {
+ // Box muesste noch gemacht werden, aber default nie eine Line gesetzt!
+ const SvxBoxItem* pBox;
+ if( 0 != ( pBox = (const SvxBoxItem*)rPool.GetPoolDefaultItem(
+ RES_BOX ) ))
+ InsColorLine( *pColTbl, *pBox );
+ nMaxItem = rPool.GetItemCount(RES_BOX);
+ for( n = 0; n < nMaxItem; ++n )
+ if( 0 != (pBox = (const SvxBoxItem*)rPool.GetItem( RES_BOX, n ) ))
+ InsColorLine( *pColTbl, *pBox );
+ }
+
+ // und raus damit
+ Strm() << SwRTFWriter::sNewLine << '{' << sRTF_COLORTBL;
+
+ for( n = 0; n < pColTbl->Count(); n++ )
+ {
+ const Color& rCol = (*pColTbl)[ n ];
+ Strm() << sRTF_RED;
+#ifdef VCL
+ OutULong( rCol.GetRed() ) << sRTF_GREEN;
+ OutULong( rCol.GetGreen() ) << sRTF_BLUE;
+ OutULong( rCol.GetBlue() ) << ';';
+#else
+ OutULong( ( rCol.GetRed() & 0xff00 ) >> 8 ) << sRTF_GREEN;
+ OutULong( ( rCol.GetGreen() & 0xff00 ) >> 8 ) << sRTF_BLUE;
+ OutULong( ( rCol.GetBlue() & 0xff00 ) >> 8 ) << ';';
+#endif
+ }
+ Strm() << '}';
+}
+
+
+static void _OutFont( SwRTFWriter& rWrt, const SvxFontItem& rFont, USHORT nNo )
+{
+ rWrt.Strm() << '{' << sRTF_F;
+
+ const char* pStr = sRTF_FNIL;
+ switch( rFont.GetFamily() )
+ {
+ case FAMILY_ROMAN: pStr = sRTF_FROMAN; break;
+ case FAMILY_SWISS: pStr = sRTF_FSWISS; break;
+ case FAMILY_MODERN: pStr = sRTF_FMODERN; break;
+ case FAMILY_SCRIPT: pStr = sRTF_FSCRIPT; break;
+ case FAMILY_DECORATIVE: pStr = sRTF_FDECOR; break;
+ }
+ rWrt.OutULong( nNo ) << pStr << sRTF_FPRQ;
+
+ USHORT nVal = 0;
+ switch( rFont.GetPitch() )
+ {
+ case PITCH_FIXED: nVal = 1; break;
+ case PITCH_VARIABLE: nVal = 2; break;
+ }
+ rWrt.OutULong( nVal );
+
+ rtl_TextEncoding eChrSet = rFont.GetCharSet();
+ if( RTL_TEXTENCODING_DONTKNOW == eChrSet )
+ {
+ ASSERT( FALSE, "Wrong font encoding" );
+ eChrSet = RTL_TEXTENCODING_MS_1252;
+ }
+ rWrt.Strm() << sRTF_FCHARSET;
+ rWrt.OutULong( rtl_getBestWindowsCharsetFromTextEncoding( eChrSet ) );
+
+ rWrt.Strm() << ' ';
+ RTFOutFuncs::Out_String( rWrt.Strm(), rFont.GetFamilyName(), DEF_ENCODING,
+ rWrt.bWriteHelpFmt ) << ";}";
+}
+
+void SwRTFWriter::OutRTFFontTab()
+{
+ USHORT n = 0;
+ const SfxItemPool& rPool = pDoc->GetAttrPool();
+ const SvxFontItem* pFont = (const SvxFontItem*)GetDfltAttr( RES_CHRATR_FONT );
+
+ Strm() << SwRTFWriter::sNewLine << '{' << sRTF_FONTTBL;
+ _OutFont( *this, *pFont, n++ );
+
+ if( 0 != ( pFont = (const SvxFontItem*)rPool.GetPoolDefaultItem(
+ RES_CHRATR_FONT )))
+ _OutFont( *this, *pFont, n++ );
+
+ PutNumFmtFontsInAttrPool();
+
+ USHORT nMaxItem = rPool.GetItemCount( RES_CHRATR_FONT );
+ for( USHORT nGet = 0; nGet < nMaxItem; ++nGet )
+ if( 0 != (pFont = (const SvxFontItem*)rPool.GetItem(
+ RES_CHRATR_FONT, nGet )) )
+ _OutFont( *this, *pFont, n++ );
+
+ Strm() << '}';
+}
+
+
+
+void SwRTFWriter::OutRTFStyleTab()
+{
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+ USHORT nArrLen = pDoc->GetTxtFmtColls()->Count();
+ if( nArrLen <= 1 && pDoc->GetCharFmts()->Count() <= 1 )
+ return;
+
+ bOutStyleTab = TRUE;
+ Strm() << SwRTFWriter::sNewLine << '{' << sRTF_STYLESHEET;
+
+ // das Default-TextStyle wird nicht mit ausgegeben !!
+ for( USHORT n = 1; n < nArrLen; ++n )
+ {
+ const SwTxtFmtColl* pColl = (*pDoc->GetTxtFmtColls())[ n ];
+ pAttrSet = &pColl->GetAttrSet();
+
+ Strm() << '{';
+ // gebe Attribute aus
+ OutRTF_SwFmt( *this, *pColl );
+
+ if( pColl->DerivedFrom() )
+ // suche die Id vom "Parent" Format
+ for( USHORT nBasedOn=1; nBasedOn < nArrLen; nBasedOn++)
+ if( (*pDoc->GetTxtFmtColls())[ nBasedOn ] ==
+ pColl->DerivedFrom() )
+ {
+ // die Ableitung vom Format
+ Strm() << sRTF_SBASEDON;
+ OutULong( nBasedOn );
+ break;
+ }
+
+ if( pColl == &pColl->GetNextTxtFmtColl() )
+ {
+ Strm() << sRTF_SNEXT;
+ OutULong( n );
+ }
+ else
+ // suche die Id vom "Naechsten" Format
+ for( USHORT nNext=1; nNext < nArrLen; nNext++)
+ if( (*pDoc->GetTxtFmtColls())[ nNext ] ==
+ &pColl->GetNextTxtFmtColl() )
+ {
+ // die Ableitung vom Format
+ Strm() << sRTF_SNEXT;
+ OutULong( nNext );
+ break;
+ }
+
+ if( NO_NUMBERING != pColl->GetOutlineLevel() )
+ {
+ Strm() << '{' << sRTF_IGNORE << sRTF_SOUTLVL;
+ OutULong( pColl->GetOutlineLevel() ) << '}';
+ }
+
+ Strm() << ' ';
+ RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ USHORT nChrArrLen = pDoc->GetCharFmts()->Count();
+ for( n = 1; n < nChrArrLen; ++n )
+ {
+ const SwCharFmt* pFmt = (*pDoc->GetCharFmts())[ n ];
+ pAttrSet = &pFmt->GetAttrSet();
+
+ Strm() << '{';
+ // gebe Attribute aus
+ OutRTF_SwFmt( *this, *pFmt );
+
+ if( pFmt->DerivedFrom() )
+ // suche die Id vom "Parent" Format
+ for( USHORT nBasedOn=1; nBasedOn < nChrArrLen; nBasedOn++)
+ if( (*pDoc->GetCharFmts())[ nBasedOn ] ==
+ pFmt->DerivedFrom() )
+ {
+ // die Ableitung vom Format
+ Strm() << sRTF_SBASEDON;
+ OutULong( nArrLen + nBasedOn );
+ break;
+ }
+
+ Strm() << ' ';
+ RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+ bOutStyleTab = FALSE;
+}
+
+
+void SwRTFWriter::OutRTFFlyFrms( const SwFlyFrmFmt& rFlyFrmFmt )
+{
+ // ein FlyFrame wurde erkannt, gebe erstmal den aus
+
+ // Hole vom Node und vom letzten Node die Position in der Section
+ const SwFmtCntnt& rFlyCntnt = rFlyFrmFmt.GetCntnt();
+
+ ULONG nStt = rFlyCntnt.GetCntntIdx()->GetIndex()+1;
+ ULONG nEnd = pDoc->GetNodes()[ nStt - 1 ]->EndOfSectionIndex();
+
+ if( nStt >= nEnd ) // kein Bereich, also kein gueltiger Node
+ return;
+
+ Strm() << SwRTFWriter::sNewLine << sRTF_PARD << sRTF_PLAIN;
+
+ {
+ RTFSaveData aSaveData( *this, nStt, nEnd );
+ pFlyFmt = (SwFlyFrmFmt*)&rFlyFrmFmt;
+ Out_SwDoc( pCurPam );
+ }
+
+ Strm() << sRTF_PARD << SwRTFWriter::sNewLine;
+}
+
+
+void SwRTFWriter::OutBookmarks( xub_StrLen nCntntPos )
+{
+ // hole das aktuelle Bookmark
+ const SwBookmark* pBookmark = USHRT_MAX != nBkmkTabPos ?
+ pDoc->GetBookmarks()[ nBkmkTabPos ] : 0;
+ // Ausgabe von Bookmarks
+ while( USHRT_MAX != nBkmkTabPos &&
+ pBookmark->GetPos().nNode.GetIndex() ==
+ pCurPam->GetPoint()->nNode.GetIndex() &&
+ pBookmark->GetPos().nContent.GetIndex() == nCntntPos )
+ {
+ // zur Zeit umspannt das SwBookmark keinen Bereich also kann
+ // es hier vollstaendig ausgegeben werden.
+
+ // erst die SWG spezifischen Daten:
+ if( pBookmark->GetShortName().Len() ||
+ pBookmark->GetKeyCode().GetCode() )
+ {
+ OutComment( *this, sRTF_BKMKKEY );
+ OutULong( ( pBookmark->GetKeyCode().GetCode() |
+ pBookmark->GetKeyCode().GetModifier() ));
+ if( !pBookmark->GetShortName().Len() )
+ Strm() << " " ;
+ else
+ {
+ Strm() << ' ';
+ OutRTF_AsByteString( *this, pBookmark->GetShortName() );
+ }
+ Strm() << '}';
+ }
+ OutComment( *this, sRTF_BKMKSTART ) << ' ';
+ RTFOutFuncs::Out_String( Strm(), pBookmark->GetName(),
+ DEF_ENCODING, bWriteHelpFmt ) << '}';
+
+ OutComment( *this, sRTF_BKMKEND ) << ' ';
+ RTFOutFuncs::Out_String( Strm(), pBookmark->GetName(),
+ DEF_ENCODING, bWriteHelpFmt ) << '}';
+
+ if( ++nBkmkTabPos >= pDoc->GetBookmarks().Count() )
+ nBkmkTabPos = USHRT_MAX;
+ else
+ pBookmark = pDoc->GetBookmarks()[ nBkmkTabPos ];
+ }
+}
+
+
+void SwRTFWriter::OutFlyFrm()
+{
+ if( !pFlyPos )
+ return;
+
+ // gebe alle freifliegenden Rahmen die sich auf den akt. Absatz
+ // und evt. auf das aktuelle Zeichen beziehen, aus.
+
+ // suche nach dem Anfang der FlyFrames
+ for( USHORT n = 0; n < pFlyPos->Count() &&
+ (*pFlyPos)[n]->GetNdIndex().GetIndex() <
+ pCurPam->GetPoint()->nNode.GetIndex(); ++n )
+ ;
+ if( n < pFlyPos->Count() )
+ while( n < pFlyPos->Count() &&
+ pCurPam->GetPoint()->nNode.GetIndex() ==
+ (*pFlyPos)[n]->GetNdIndex().GetIndex() )
+ {
+ // den Array-Iterator weiterschalten, damit nicht doppelt
+ // ausgegeben wird !!
+ OutRTFFlyFrms( (const SwFlyFrmFmt&)(*pFlyPos)[n++]->GetFmt() );
+ }
+}
+
+
+USHORT SwRTFWriter::GetId( const Color& rColor ) const
+{
+ ASSERT( pColTbl, "Wo ist meine Color-Tabelle?" );
+ for( USHORT n = 0; n < pColTbl->Count(); n++ )
+ if( rColor == (*pColTbl)[ n ] )
+ return n;
+
+ ASSERT( FALSE, "Color nicht in der Tabelle" );
+ return 0;
+}
+
+USHORT SwRTFWriter::GetId( const SvxFontItem& rFont ) const
+{
+ const SfxItemPool& rPool = pDoc->GetAttrPool();
+ const SvxFontItem* pFont = (const SvxFontItem*)GetDfltAttr( RES_CHRATR_FONT );
+ if( rFont == *pFont )
+ return 0;
+
+ USHORT n = 1;
+ if( 0 != ( pFont = (const SvxFontItem*)rPool.GetPoolDefaultItem(
+ RES_CHRATR_FONT )))
+ {
+ if( rFont == *pFont )
+ return 1;
+ ++n;
+ }
+
+ USHORT nMaxItem = rPool.GetItemCount( RES_CHRATR_FONT );
+ for( USHORT nGet = 0; nGet < nMaxItem; ++nGet )
+ if( 0 != (pFont = (const SvxFontItem*)rPool.GetItem(
+ RES_CHRATR_FONT, nGet )) )
+ {
+ if( rFont == *pFont )
+ return n;
+ ++n;
+ }
+
+ ASSERT( FALSE, "Font nicht in der Tabelle" );
+ return 0;
+}
+
+USHORT SwRTFWriter::GetId( const Font& rFont ) const
+{
+ return GetId( SvxFontItem( rFont.GetFamily(), rFont.GetName(),
+ rFont.GetStyleName(), rFont.GetPitch(),
+ rFont.GetCharSet() ) );
+}
+
+USHORT SwRTFWriter::GetId( const SwTxtFmtColl& rColl ) const
+{
+ // suche das angegebene Format
+ const SvPtrarr & rArr = *pDoc->GetTxtFmtColls();
+ for( USHORT n = 0; n < rArr.Count(); n++ )
+ if( (SwTxtFmtColl*)rArr[ n ] == &rColl )
+ return n;
+ ASSERT( FALSE, "TextCollection nicht in der Tabelle" );
+ return 0;
+}
+
+USHORT SwRTFWriter::GetId( const SwCharFmt& rFmt ) const
+{
+ // suche das angegebene Format
+ const SvPtrarr & rArr = *pDoc->GetCharFmts();
+ for( USHORT n = 0; n < rArr.Count(); n++ )
+ if( (SwCharFmt*)rArr[ n ] == &rFmt )
+ return n + pDoc->GetTxtFmtColls()->Count();
+ ASSERT( FALSE, "CharDFFormat nicht in der Tabelle" );
+ return 0;
+}
+
+void SwRTFWriter::OutPageDesc()
+{
+ // Ausgabe der Page-Descriptoren
+ USHORT nSize = pDoc->GetPageDescCnt();
+ if( !nSize )
+ return;
+
+ Strm() << SwRTFWriter::sNewLine; // ein Trenner
+ bOutPageDesc = bOutPageDescTbl = TRUE;
+ OutComment( *this, sRTF_PGDSCTBL );
+ for( USHORT n = 0; n < nSize; ++n )
+ {
+ const SwPageDesc& rPageDesc = pDoc->GetPageDesc( n );
+
+ Strm() << SwRTFWriter::sNewLine << '{' << sRTF_PGDSC;
+ OutULong( n ) << sRTF_PGDSCUSE;
+ OutULong( rPageDesc.ReadUseOn() );
+
+ OutRTFPageDescription( rPageDesc, FALSE, FALSE );
+
+ // suche den Folge-PageDescriptor:
+ USHORT i = nSize;
+ while( i )
+ if( rPageDesc.GetFollow() == &pDoc->GetPageDesc( --i ) )
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+ RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+ DEF_ENCODING, bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+}
+
+void SwRTFWriter::OutRTFPageDescription( const SwPageDesc& rPgDsc,
+ BOOL bWriteReset,
+ BOOL bCheckForFirstPage )
+{
+ // jetzt noch den Teil fuer alle anderen Applikationen:
+ const SwPageDesc *pSave = pAktPageDesc;
+ BOOL bOldOut = bOutPageDesc, bOldHDFT = bOutLeftHeadFoot;
+
+ // falls es einen Follow gibt,
+ pAktPageDesc = &rPgDsc;
+ if( bCheckForFirstPage && pAktPageDesc->GetFollow() &&
+ pAktPageDesc->GetFollow() != pAktPageDesc )
+ pAktPageDesc = pAktPageDesc->GetFollow();
+
+ bOutPageDesc = TRUE;
+ bOutLeftHeadFoot = FALSE;
+
+ if( bWriteReset )
+ {
+ if( bFirstLine && bWriteAll &&
+ pCurPam->GetPoint()->nNode == pOrigPam->Start()->nNode )
+ Strm() << sRTF_SECTD << sRTF_SBKNONE;
+ else
+ Strm() << sRTF_SECT << sRTF_SECTD;
+ }
+
+ if( pAktPageDesc->GetLandscape() )
+ Strm() << sRTF_LNDSCPSXN;
+
+ const SwFmt *pFmt = &pAktPageDesc->GetMaster(); //GetLeft();
+ OutRTF_SwFmt( *this, *pFmt );
+
+ // falls es gesharte Heaer/Footer gibt, so gebe diese auch noch aus
+ if( PD_MIRROR & pAktPageDesc->GetUseOn() &&
+ !pAktPageDesc->IsFooterShared() || !pAktPageDesc->IsHeaderShared() )
+ {
+ bOutLeftHeadFoot = TRUE;
+ const SfxPoolItem* pHt;
+ if( !pAktPageDesc->IsHeaderShared() &&
+ SFX_ITEM_SET == pAktPageDesc->GetLeft().GetAttrSet().
+ GetItemState( RES_HEADER, FALSE, &pHt ))
+ OutRTF_SwFmtHeader( *this, *pHt );
+
+ if( !pAktPageDesc->IsFooterShared() &&
+ SFX_ITEM_SET == pAktPageDesc->GetLeft().GetAttrSet().
+ GetItemState( RES_FOOTER, FALSE, &pHt ))
+ OutRTF_SwFmtFooter( *this, *pHt );
+ bOutLeftHeadFoot = FALSE;
+ }
+
+ if( pAktPageDesc != &rPgDsc )
+ {
+ pAktPageDesc = &rPgDsc;
+ Strm() << sRTF_TITLEPG;
+
+ // die Header/Footer der 1. Seite ausgeben
+ const SfxPoolItem* pHt;
+ if( SFX_ITEM_SET == pAktPageDesc->GetMaster().GetAttrSet().
+ GetItemState( RES_HEADER, FALSE, &pHt ))
+ OutRTF_SwFmtHeader( *this, *pHt );
+
+ if( SFX_ITEM_SET == pAktPageDesc->GetMaster().GetAttrSet().
+ GetItemState( RES_FOOTER, FALSE, &pHt ))
+ OutRTF_SwFmtFooter( *this, *pHt );
+ }
+
+ pAktPageDesc = pSave;
+ bOutPageDesc = bOldOut;
+ bOutLeftHeadFoot = bOldHDFT;
+}
+
+BOOL SwRTFWriter::OutBreaks( const SfxItemSet& rSet )
+{
+ // dann nie Seitenumbrueche ausgeben
+ BOOL bPgDscWrite = FALSE;
+
+ if( !bOutOutlineOnly && bOutPageAttr && !bIgnoreNextPgBreak)
+ {
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_PAGEDESC, TRUE, &pItem )
+ && ((SwFmtPageDesc*)pItem)->GetPageDesc() )
+ {
+ const SwFmtPageDesc& rPgDsc = *(SwFmtPageDesc*)pItem;
+ for( USHORT nPos = pDoc->GetPageDescCnt(); nPos; )
+ if( &pDoc->GetPageDesc( --nPos ) == rPgDsc.GetPageDesc() )
+ {
+ pAktPageDesc = ((SwFmtPageDesc*)pItem)->GetPageDesc();
+ // FALSE wegen schliessender Klammer !!
+ OutComment( *this, sRTF_PGDSCNO, FALSE );
+ OutULong( nPos ) << '}';
+
+ // nicht weiter, in Styles gibts keine SectionControls !!
+ if( !bOutStyleTab )
+ OutRTFPageDescription( *rPgDsc.GetPageDesc(),
+ TRUE, TRUE );
+ bPgDscWrite = TRUE;
+ break;
+ }
+ }
+ else if( SFX_ITEM_SET == rSet.GetItemState( RES_BREAK, TRUE, &pItem ) )
+ {
+ const SvxFmtBreakItem &rBreak = *(SvxFmtBreakItem*)pItem;
+ if( bWriteHelpFmt )
+ {
+ if( SVX_BREAK_PAGE_BEFORE == rBreak.GetBreak() ||
+ SVX_BREAK_PAGE_AFTER == rBreak.GetBreak() ||
+ SVX_BREAK_PAGE_BOTH == rBreak.GetBreak() )
+ {
+ bOutFmtAttr = TRUE;
+ Strm() << sRTF_PAGE;
+ }
+ }
+ else
+ switch( rBreak.GetBreak() )
+ {
+ case SVX_BREAK_COLUMN_BEFORE:
+ case SVX_BREAK_COLUMN_AFTER:
+ case SVX_BREAK_COLUMN_BOTH:
+ break;
+
+ case SVX_BREAK_PAGE_BEFORE:
+ bOutFmtAttr = TRUE;
+ Strm() << sRTF_PAGE;
+ break;
+
+ case SVX_BREAK_PAGE_AFTER:
+ OutComment( *this, sRTF_PGBRK, FALSE ) << "0}";
+ break;
+
+ case SVX_BREAK_PAGE_BOTH:
+ OutComment( *this, sRTF_PGBRK, FALSE ) << "1}";
+ break;
+ }
+ }
+ }
+ bIgnoreNextPgBreak = FALSE;
+ return bPgDscWrite;
+}
+
+
+void SwRTFWriter::CheckEndNodeForSection( const SwNode& rNd )
+{
+ const SwSectionNode* pSectNd = rNd.FindStartNode()->GetSectionNode();
+ if( pSectNd /*&& CONTENT_SECTION == pSectNd->GetSection().GetType()*/ )
+ {
+ const SwSectionFmt* pSectFmt = pSectNd->GetSection().GetFmt();
+
+ // diese Section hatte den akt. Abschnitt bestimmt
+ // wer bestimmt den nachsten??
+ SwNodeIndex aIdx( rNd, 1 );
+ pSectNd = aIdx.GetNode().GetSectionNode();
+ if( !( ( pSectNd || aIdx.GetNode().IsEndNode() &&
+ 0 != ( pSectNd = aIdx.GetNode().FindStartNode()->GetSectionNode() ))
+ /*&& CONTENT_SECTION == pSectNd->GetSection().GetType()*/ ))
+ {
+ // wer bestimmt denn nun den neuen Abschnitt?
+ // PageDesc oder eine uebergeordnete Section?
+ SwSection* pParent = pSectFmt->GetParentSection();
+// while( pParent /*&& CONTENT_SECTION != pParent->GetType()*/ )
+// pParent = pParent->GetParent();
+
+ if( pParent /*&& CONTENT_SECTION == pParent->GetType()*/ )
+ OutRTF_SwSectionNode( *this, *pParent->
+ GetFmt()->GetSectionNode( TRUE ) );
+ else
+ {
+ Strm() << sRTF_SECT << sRTF_SECTD << sRTF_SBKNONE;
+ OutRTFPageDescription( ( pAktPageDesc
+ ? *pAktPageDesc
+ : pDoc->GetPageDesc(0) ),
+ FALSE, TRUE );
+ Strm() << SwRTFWriter::sNewLine;
+ }
+ }
+ // else
+ // weiter machen, der naechste definiert den neuen Abschnitt
+ }
+}
+
+// Struktur speichert die aktuellen Daten des Writers zwischen, um
+// einen anderen Dokument-Teil auszugeben, wie z.B. Header/Footer
+RTFSaveData::RTFSaveData( SwRTFWriter& rWriter, ULONG nStt, ULONG nEnd )
+ : rWrt( rWriter ),
+ pOldPam( rWrt.pCurPam ), pOldEnd( rWrt.GetEndPaM() ),
+ pOldFlyFmt( rWrt.pFlyFmt ), pOldPageDesc( rWrt.pAktPageDesc ),
+ pOldAttrSet( rWrt.pAttrSet )
+
+{
+ bOldWriteAll = rWrt.bWriteAll;
+ bOldOutTable = rWrt.bOutTable;
+ bOldOutPageAttr = rWrt.bOutPageAttr;
+ bOldAutoAttrSet = rWrt.bAutoAttrSet;
+ bOldOutSection = rWrt.bOutSection;
+
+ rWrt.pCurPam = rWrt.NewSwPaM( *rWrt.pDoc, nStt, nEnd );
+
+ // Tabelle in Sonderbereichen erkennen
+ if( nStt != rWrt.pCurPam->GetMark()->nNode.GetIndex() &&
+ rWrt.pDoc->GetNodes()[ nStt ]->IsTableNode() )
+ rWrt.pCurPam->GetMark()->nNode = nStt;
+
+ rWrt.SetEndPaM( rWrt.pCurPam );
+ rWrt.pCurPam->Exchange( );
+ rWrt.bWriteAll = TRUE;
+ rWrt.bOutTable = FALSE;
+ rWrt.bOutPageAttr = FALSE;
+ rWrt.pAttrSet = 0;
+ rWrt.bAutoAttrSet = FALSE;
+ rWrt.bOutSection = FALSE;
+}
+
+
+RTFSaveData::~RTFSaveData()
+{
+ delete rWrt.pCurPam; // Pam wieder loeschen
+
+ rWrt.pCurPam = pOldPam;
+ rWrt.SetEndPaM( pOldEnd );
+ rWrt.bWriteAll = bOldWriteAll;
+ rWrt.bOutTable = bOldOutTable;
+ rWrt.pFlyFmt = pOldFlyFmt;
+ rWrt.pAktPageDesc = pOldPageDesc;
+ rWrt.pAttrSet = pOldAttrSet;
+ rWrt.bAutoAttrSet = bOldAutoAttrSet;
+ rWrt.bOutPageAttr = bOldOutPageAttr;
+ rWrt.bOutSection = bOldOutSection;
+}
+
+
+void GetRTFWriter( const String& rFltName, WriterRef& xRet )
+{
+ xRet = new SwRTFWriter( rFltName );
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/rtf/wrtrtf.cxx,v 1.1.1.1 2000-09-18 17:14:56 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.202 2000/09/18 16:04:51 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.201 2000/08/22 20:51:18 jp
+ OutHeader: don't ask for DBName
+
+ Revision 1.200 2000/08/04 10:48:32 jp
+ Soft-/HardHyphens & HardBlanks changed from attribute to unicode character; use rtfout functions
+
+ Revision 1.199 2000/07/04 16:23:30 jp
+ AMA_TEST define removed
+
+ Revision 1.198 2000/05/09 17:23:08 jp
+ Changes for Unicode
+
+ Revision 1.197 2000/03/03 16:22:05 pl
+ #73771# workaround for c50 intel compiler
+
+ Revision 1.196 2000/03/03 15:21:02 os
+ StarView remainders removed
+
+ Revision 1.195 2000/02/24 18:30:25 jp
+ Bug #73485#: write right follow of pagedesc, initialize the akt. pagedesc
+
+ Revision 1.194 2000/01/25 20:10:34 jp
+ Bug #72146#: _OutFont - replace system/dontknow charset to the current charset
+
+ Revision 1.193 1999/11/22 18:00:05 jp
+ OutSectionNode: dont skip to top parent section
+
+ Revision 1.192 1999/10/25 12:16:40 jp
+ get font charset over RTL-Function
+
+ Revision 1.191 1999/08/05 20:53:50 JP
+ write flyfrms before the paragraph and not behind
+
+
+ Rev 1.190 05 Aug 1999 22:53:50 JP
+ write flyfrms before the paragraph and not behind
+
+ Rev 1.189 22 Jul 1999 20:01:10 JP
+ read&write footer and header height
+
+ Rev 1.188 23 Jun 1999 19:12:30 JP
+ optimize for NumRules, interface of FindPos_Bkmk has changed
+
+ Rev 1.187 16 Jun 1999 19:49:06 JP
+ Change interface of base class Writer
+
+ Rev 1.186 04 May 1999 15:00:02 JP
+ FilterExportklasse Writer von SvRef abgeleitet, damit sie immer zerstoert wird
+
+ Rev 1.185 06 Apr 1999 17:00:18 JP
+ Bug #64361#: MakeHeader - ggfs. ersten PageDesc vom 1.Node besorgen
+
+ Rev 1.184 19 Mar 1999 17:08:06 JP
+ Bug #63772#: Spaltige Bereiche im-/exportieren
+
+ Rev 1.183 18 Mar 1999 09:51:54 JP
+ Task #63049#: Numerierung mit rel. Einzuegen
+
+ Rev 1.182 16 Mar 1999 23:20:00 JP
+ Task #63049#: Einzuege bei NumRules relativ
+
+ Rev 1.181 05 Mar 1999 14:44:34 JP
+ Bug #57749#: spaltige Bereiche schreiben - alle Section-Typen
+
+ Rev 1.180 04 Mar 1999 19:59:22 JP
+ Bug #57749#: spaltige Bereiche schreiben
+
+ Rev 1.179 17 Nov 1998 10:45:52 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.178 09 Nov 1998 17:28:46 JP
+ Bug #58817#: StyleTabelle wieder schreiben
+
+ Rev 1.177 30 Oct 1998 18:30:26 JP
+ Task #58596#: neues Flag an der Writerklasse -> schreibe nur die 1. Tabelle
+
+ Rev 1.176 28 Oct 1998 10:36:12 JP
+ Bug #58565#: Assert im OutHeader behoben
+
+ Rev 1.175 11 Aug 1998 12:16:36 JP
+ Bug #54796#: fehlender Numerierunstyp und Bugfixes
+
+ Rev 1.174 06 Aug 1998 21:45:56 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.173 04 Jun 1998 19:28:08 JP
+ Bug #50887#: Font bei Grafik-NumFormaten ist 0, also default Font schreiben
+
+ Rev 1.172 13 May 1998 17:15:22 JP
+ OutRTFPageDesc: beim 1.PageDesc keinen Sectionbreak schreiben
+
+ Rev 1.171 11 May 1998 22:50:32 JP
+ Zeichenvorlagen schreiben
+
+ Rev 1.170 11 May 1998 16:46:50 JP
+ RTF-CharFormate ausgeben
+
+ Rev 1.169 05 May 1998 14:00:26 JP
+ linke/rechte Header/Footer korrekt rausschreiben
+
+ Rev 1.168 20 Apr 1998 17:43:20 JP
+ neu: Numerierung lesen/schreiben
+
+ Rev 1.167 03 Apr 1998 18:51:56 JP
+ RTF-Parser um neue Tokens erweitert
+
+ Rev 1.166 20 Feb 1998 13:36:40 MA
+ headerfiles gewandert
+
+ Rev 1.165 29 Jan 1998 21:35:24 JP
+ GetEndOfIcons ersetzt durch GetEndOfExtras, das auf GetEndOfRedlines mappt
+
+ Rev 1.164 27 Jan 1998 21:50:18 JP
+ GetNumDepend durch GetDepends ersetzt
+
+ Rev 1.163 26 Nov 1997 15:05:30 MA
+ headerfiles
+
+ Rev 1.162 09 Oct 1997 14:27:52 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.161 12 Sep 1997 10:57:22 OS
+ ITEMID_* definiert
+
+ Rev 1.160 03 Sep 1997 08:58:52 OS
+ Header
+
+ Rev 1.159 29 Aug 1997 13:53:24 JP
+ VCL Color Anpassung
+
+ Rev 1.158 15 Aug 1997 12:51:42 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.157 11 Aug 1997 17:48:44 OS
+ Header-Umstellung
+
+ Rev 1.156 07 Aug 1997 15:06:36 OM
+ Headerfile-Umstellung
+
+ Rev 1.155 07 Apr 1997 16:35:10 JP
+ Das ShowProgressFlag der Writerklasse auswerten
+
+ Rev 1.154 17 Feb 1997 12:03:44 MA
+ opt: Outline schneller schreiben wenn Gliederung nur im Body
+
+ Rev 1.153 15 Feb 1997 17:57:14 JP
+ OutStyleTab: pAttrSet Pointer wieder clearen
+
+ Rev 1.152 15 Feb 1997 17:00:22 JP
+ neu: nur Gliederungsabsaetze schreiben
+
+ Rev 1.151 14 Jan 1997 08:51:42 MA
+ includes
+
+*************************************************************************/
+
+
diff --git a/sw/source/filter/rtf/wrtrtf.hxx b/sw/source/filter/rtf/wrtrtf.hxx
new file mode 100644
index 000000000000..7ee3b41e9d90
--- /dev/null
+++ b/sw/source/filter/rtf/wrtrtf.hxx
@@ -0,0 +1,244 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtrtf.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _WRTRTF_HXX
+#define _WRTRTF_HXX
+
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _WRT_FN_HXX
+#include <wrt_fn.hxx>
+#endif
+
+// einige Forward Deklarationen
+class Color;
+class Font;
+class SvPtrarr;
+class RTFColorTbl;
+class SwFmt;
+class SwFmtColl;
+class SwFlyFrmFmt;
+class SwPosFlyFrms;
+class SwPageDesc;
+class SwTableNode;
+class SwTxtFmtColl;
+class SwNumRule;
+class SwNumRuleTbl;
+class SwNodeNum;
+class DateTime;
+
+extern SwAttrFnTab aRTFAttrFnTab;
+extern SwNodeFnTab aRTFNodeFnTab;
+
+// the text encoding for the export
+#ifdef MAC
+#define DEF_ENCODING RTL_TEXTENCODING_APPLE_ROMAN
+#else
+#define DEF_ENCODING RTL_TEXTENCODING_MS_1252
+#endif
+
+
+// der RTF-Writer
+
+class SwRTFWriter : public Writer
+{
+ SvPtrarr* pFontRemoveLst;
+ RTFColorTbl* pColTbl;
+ SwPosFlyFrms* pFlyPos; // Pointer auf die aktuelle "FlyFrmTabelle"
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+
+ void OutRTFColorTab();
+ void OutRTFFontTab();
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+ void MakeHeader();
+ void OutDocInfoStat();
+ void OutInfoDateTime( const DateTime&, const sal_Char* );
+ void CheckEndNodeForSection( const SwNode& rNd );
+
+
+public:
+ // --- public Member --------------------------------------------------
+
+ SwFlyFrmFmt* pFlyFmt; // liegt der Node in einem FlyFrame,
+ // ist das Format gesetzt, sonst 0
+ const SwPageDesc* pAktPageDesc; // aktuell gesetzter PageDesc.
+ const SwAttrSet* pAttrSet; // akt. Format/Collection vom Node
+ // fuer den Zugriff auf einige Attribute
+ // z.B. Font-Size, LR-Space,..
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nFontHeight; // akt. Hoehe vom Font
+
+#if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+#else
+ static const sal_Char __FAR_DATA sNewLine[]; // \015\012
+#endif
+
+
+ BOOL bFirstLine : 1; // wird die 1. Zeile ausgegeben ?
+ BOOL bOutFmtAttr : 1; // TRUE: beim Schreiben eines Formates
+ // existierte mindestens ein Attribut
+ BOOL bRTFFlySyntax : 1; // gebe nur original RTFSyntax aus
+ // (nur fuer die fliegenden Rahmen)
+ BOOL bOutPageDesc: 1; // gebe einen PageDescriptor aus
+ BOOL bOutPageDescTbl: 1; // gebe die PageDescriptor-Tabelle aus
+ BOOL bOutTable : 1; // gebe eine Tabelle aus
+ BOOL bTxtAttr : 1; // werden TextAttribute ausgegeben ?
+ BOOL bWriteHelpFmt : 1; // schreibe Win-RTF-HelpFileFmt
+ BOOL bOutStyleTab : 1; // gebe die StyleSheet-Tabelle aus
+ BOOL bOutPageAttr : 1; // PageDescAttribut ausgeben?
+ BOOL bAutoAttrSet : 1; // TRUE: pAttrSet ist harte Attributierung
+ // FALSE: pAttrSet ist vom Format/Collection
+ BOOL bOutOutlineOnly : 1; // TRUE: nur Gliederungs-Absaetze schreiben
+ BOOL bOutListNumTxt : 1; // TRUE: der ListNumText wird ausgegeben
+ BOOL bOutLeftHeadFoot : 1; // gebe vom PageDesc. den linkten
+ // Header/Footer aus
+ BOOL bOutSection : 1; // TRUE: Section PageDesc ausgeben
+ BOOL bIgnoreNextPgBreak : 1; // TRUE: naechsten PageDesc/Break ignorieren
+
+ // --- public Methoden ------------------------------------------------
+
+ SwRTFWriter( const String& rFilterName );
+ virtual ~SwRTFWriter();
+ virtual ULONG WriteStream();
+
+ void Out_SwDoc( SwPaM* ); // schreibe den makierten Bereich
+
+ // gebe die evt. an der akt. Position stehenden FlyFrame aus.
+ void OutFlyFrm();
+ void OutRTFFlyFrms( const SwFlyFrmFmt& );
+ // gebe alle an der Position stehenden Bookmarks aus
+ void OutBookmarks( xub_StrLen nCntntPos );
+ // gebe die PageDesc-Daten im normalen RTF-Format aus
+ void OutRTFPageDescription( const SwPageDesc&, BOOL , BOOL );
+ BOOL OutBreaks( const SfxItemSet& rSet );
+
+ // gebe die PageDescriptoren aus
+ USHORT GetId( const Color& ) const;
+ USHORT GetId( const SvxFontItem& ) const;
+ USHORT GetId( const Font& ) const;
+ USHORT GetId( const SwTxtFmtColl& ) const;
+ USHORT GetId( const SwCharFmt& ) const;
+ USHORT GetId( const SwNumRuleItem& rItem ) const;
+
+ void OutPageDesc();
+
+ void OutListNum( const SwTxtNode& rNd );
+
+ // fuer RTFSaveData
+ SwPaM* GetEndPaM() { return pOrigPam; }
+ void SetEndPaM( SwPaM* pPam ) { pOrigPam = pPam; }
+};
+
+
+// Struktur speichert die aktuellen Daten des Writers zwischen, um
+// einen anderen Dokument-Teil auszugeben, wie z.B. Header/Footer
+// Mit den beiden USHORTs im CTOR wird ein neuer PaM erzeugt und auf
+// die Position im Dokument gesetzt.
+// Im Destructor werden alle Daten wieder restauriert und der angelegte
+// Pam wieder geloescht.
+
+struct RTFSaveData
+{
+ SwRTFWriter& rWrt;
+ SwPaM* pOldPam, *pOldEnd;
+ BOOL bOldWriteAll : 1;
+ BOOL bOldOutTable : 1;
+ BOOL bOldOutPageAttr : 1;
+ BOOL bOldAutoAttrSet : 1;
+ BOOL bOldOutSection : 1;
+
+ SwFlyFrmFmt* pOldFlyFmt;
+ const SwPageDesc* pOldPageDesc;
+ const SwAttrSet* pOldAttrSet; // akt. Attribute vom Node
+
+ RTFSaveData( SwRTFWriter&, ULONG nStt, ULONG nEnd );
+ ~RTFSaveData();
+};
+
+
+// einige Funktions-Deklarationen
+Writer& OutRTF_AsByteString( Writer& rWrt, const String& rStr );
+Writer& OutRTF_SwFmt( Writer& rWrt, const SwFmt& );
+Writer& OutRTF_SwTblNode( Writer& , SwTableNode & );
+Writer& OutRTF_SwSectionNode( Writer& , SwSectionNode & );
+
+
+// Augabe von RTF-Bitmaps (steht im File "wrtpict.cxx")
+//struct SvxRTFPictureType;
+//class Bitmap;
+//USHORT WriteRTFPict( const SwPictureType&, Bitmap&, SvStream& );
+
+// Ausagbe von Footer-/Headers
+Writer& OutRTF_SwFmtHeader( Writer& , const SfxPoolItem& );
+Writer& OutRTF_SwFmtFooter( Writer& , const SfxPoolItem& );
+
+// Kommentar und zusaetzlichen String ausgeben
+SvStream& OutComment( Writer& rWrt, const sal_Char* pStr );
+ // zusaetzlich das bOutFmtAttr-Flag manipulieren
+SvStream& OutComment( Writer& rWrt, const sal_Char* pStr, BOOL bSetFlag );
+
+#endif // _WRTRTF_HXX
+
+
diff --git a/sw/source/filter/writer/makefile.mk b/sw/source/filter/writer/makefile.mk
new file mode 100644
index 000000000000..bea300064a8e
--- /dev/null
+++ b/sw/source/filter/writer/makefile.mk
@@ -0,0 +1,94 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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=sw
+TARGET=writer
+
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\filt_1st\filt_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ writer.cxx \
+ wrt_fn.cxx \
+ wrtswtbl.cxx \
+ wrttxatr.cxx \
+
+SLOFILES = \
+ $(SLO)$/writer.obj \
+ $(SLO)$/wrt_fn.obj \
+ $(SLO)$/wrtswtbl.obj \
+ $(SLO)$/wrttxatr.obj \
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/filter/writer/writer.cxx b/sw/source/filter/writer/writer.cxx
new file mode 100644
index 000000000000..677df928acee
--- /dev/null
+++ b/sw/source/filter/writer/writer.cxx
@@ -0,0 +1,780 @@
+/*************************************************************************
+ *
+ * $RCSfile: writer.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#define _SVSTDARR_STRINGSSORTDTOR
+#include <svtools/svstdarr.hxx>
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _FILTER_HXX //autogen
+#include <svtools/filter.hxx>
+#endif
+#ifndef _SVX_IMPGRF_HXX //autogen
+#include <svx/impgrf.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _EEITEM_HXX
+#include <svx/eeitem.hxx>
+#endif
+
+
+#ifndef _TOOLS_TEMPFILE_HXX
+#include <tools/tempfile.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _NODE_HXX
+#include <node.hxx>
+#endif
+#ifndef _FORMAT_HXX
+#include <format.hxx>
+#endif
+#ifndef _BOOKMRK_HXX
+#include <bookmrk.hxx> // fuer SwBookmark ...
+#endif
+#ifndef _NUMRULE_HXX //autogen
+#include <numrule.hxx>
+#endif
+
+#ifndef _SWSWERROR_H
+#include <swerror.h>
+#endif
+
+// Stringbuffer fuer die umgewandelten Zahlen
+static sal_Char aNToABuf[] = "0000000000000000000000000";
+#define NTOABUFLEN (sizeof(aNToABuf))
+
+DECLARE_TABLE( SwBookmarkNodeTable, SvPtrarr* )
+
+struct Writer_Impl
+{
+ SvStringsSortDtor *pSrcArr, *pDestArr;
+ SvPtrarr* pFontRemoveLst, *pBkmkArr;
+ SwBookmarkNodeTable* pBkmkNodePos;
+
+ Writer_Impl( const SwDoc& rDoc );
+ ~Writer_Impl();
+
+ void RemoveFontList( SwDoc& rDoc );
+ void InsertBkmk( const SwBookmark& rBkmk );
+};
+
+Writer_Impl::Writer_Impl( const SwDoc& rDoc )
+ : pSrcArr( 0 ), pDestArr( 0 ), pFontRemoveLst( 0 ), pBkmkNodePos( 0 )
+{
+}
+
+Writer_Impl::~Writer_Impl()
+{
+ delete pSrcArr;
+ delete pDestArr;
+ delete pFontRemoveLst;
+
+ if( pBkmkNodePos )
+ {
+ for( SvPtrarr* p = pBkmkNodePos->First(); p; p = pBkmkNodePos->Next() )
+ delete p;
+ delete pBkmkNodePos;
+ }
+}
+
+void Writer_Impl::RemoveFontList( SwDoc& rDoc )
+{
+ ASSERT( pFontRemoveLst, "wo ist die FontListe?" );
+ for( USHORT i = pFontRemoveLst->Count(); i; )
+ {
+ SvxFontItem* pItem = (SvxFontItem*)(*pFontRemoveLst)[ --i ];
+ rDoc.GetAttrPool().Remove( *pItem );
+ }
+}
+
+void Writer_Impl::InsertBkmk( const SwBookmark& rBkmk )
+{
+ if( !pBkmkNodePos )
+ pBkmkNodePos = new SwBookmarkNodeTable;
+
+ ULONG nNd = rBkmk.GetPos().nNode.GetIndex();
+ SvPtrarr* pArr = pBkmkNodePos->Get( nNd );
+ if( !pArr )
+ {
+ pArr = new SvPtrarr( 1, 4 );
+ pBkmkNodePos->Insert( nNd, pArr );
+ }
+
+ void* p = (void*)&rBkmk;
+ pArr->Insert( p, pArr->Count() );
+
+ if( rBkmk.GetOtherPos() && rBkmk.GetOtherPos()->nNode != nNd )
+ {
+ nNd = rBkmk.GetOtherPos()->nNode.GetIndex();
+ pArr = pBkmkNodePos->Get( nNd );
+ if( !pArr )
+ {
+ pArr = new SvPtrarr( 1, 4 );
+ pBkmkNodePos->Insert( nNd, pArr );
+ }
+ pArr->Insert( p, pArr->Count() );
+ }
+}
+
+/*
+ * Dieses Modul ist die Zentrale-Sammelstelle fuer alle Write-Filter
+ * und ist eine DLL !
+ *
+ * Damit der Writer mit den unterschiedlichen Writern arbeiten kann,
+ * muessen fuer diese die Ausgabe-Funktionen der Inhalts tragenden
+ * Objecte auf die verschiedenen Ausgabe-Funktionen gemappt werden.
+ *
+ * Dazu kann fuer jedes Object ueber den Which-Wert in einen Tabelle ge-
+ * griffen werden, um seine Ausgabe-Funktion zu erfragen.
+ * Diese Funktionen stehen in den entsprechenden Writer-DLL's.
+ */
+
+Writer::Writer()
+ : pImpl( 0 ), pStrm( 0 ), pOrigPam( 0 ), pOrigFileName( 0 ),
+ pCurPam(0), pDoc( 0 )
+{
+ bWriteAll = bShowProgress = bUCS2_WithStartChar = TRUE;
+ bASCII_NoLastLineEnd = bASCII_ParaAsBlanc = bASCII_ParaAsCR =
+ bWriteClipboardDoc = bWriteOnlyFirstTable = FALSE;
+}
+
+Writer::~Writer()
+{
+}
+
+void Writer::ResetWriter()
+{
+ if( pImpl && pImpl->pFontRemoveLst )
+ pImpl->RemoveFontList( *pDoc );
+ delete pImpl, pImpl = 0;
+
+ if( pCurPam )
+ {
+ while( pCurPam->GetNext() != pCurPam )
+ delete pCurPam->GetNext();
+ delete pCurPam;
+ }
+ pCurPam = 0;
+ pOrigFileName = 0;
+ pDoc = 0;
+ pStrm = 0;
+
+ bShowProgress = bUCS2_WithStartChar = TRUE;
+ bASCII_NoLastLineEnd = bASCII_ParaAsBlanc = bASCII_ParaAsCR =
+ bWriteClipboardDoc = bWriteOnlyFirstTable = FALSE;
+}
+
+BOOL Writer::CopyNextPam( SwPaM ** ppPam )
+{
+ if( (*ppPam)->GetNext() == pOrigPam )
+ {
+ *ppPam = pOrigPam; // wieder auf den Anfangs-Pam setzen
+ return FALSE; // Ende vom Ring
+ }
+
+ // ansonsten kopiere den die Werte aus dem naechsten Pam
+ *ppPam = ((SwPaM*)(*ppPam)->GetNext() );
+
+ *pCurPam->GetPoint() = *(*ppPam)->Start();
+ *pCurPam->GetMark() = *(*ppPam)->End();
+
+ return TRUE;
+}
+
+// suche die naechste Bookmark-Position aus der Bookmark-Tabelle
+
+USHORT Writer::FindPos_Bkmk( const SwPosition& rPos ) const
+{
+ USHORT nRet = USHRT_MAX;
+ const SwBookmarks& rBkmks = pDoc->GetBookmarks();
+
+ if( rBkmks.Count() )
+ {
+ SwBookmark aBkmk( rPos );
+ USHORT nPos;
+ if( rBkmks.Seek_Entry( &aBkmk, &nPos ))
+ {
+ // suche abwaerts nach weiteren Bookmarks auf der Cursor-Position
+ while( 0 < nPos &&
+ rBkmks[ nPos-1 ]->IsEqualPos( aBkmk ))
+ --nPos;
+ }
+ else if( nPos < rBkmks.Count() )
+ nRet = nPos;
+ }
+ return nRet;
+}
+
+
+SwPaM* Writer::NewSwPaM( SwDoc & rDoc, ULONG nStartIdx, ULONG nEndIdx,
+ BOOL bNodesArray ) const
+{
+ SwNodes* pNds = bNodesArray ? &rDoc.GetNodes() : (SwNodes*)rDoc.GetUndoNds();
+
+ SwNodeIndex aStt( *pNds, nStartIdx );
+ SwCntntNode* pCNode = aStt.GetNode().GetCntntNode();
+ if( !pCNode && 0 == ( pCNode = pNds->GoNext( &aStt )) )
+ ASSERT( !this, "An StartPos kein ContentNode mehr" );
+
+ SwPaM* pNew = new SwPaM( aStt );
+ pNew->SetMark();
+ aStt = nEndIdx;
+ if( 0 == (pCNode = aStt.GetNode().GetCntntNode()) &&
+ 0 == (pCNode = pNds->GoPrevious( &aStt )) )
+ ASSERT( !this, "An StartPos kein ContentNode mehr" );
+ pCNode->MakeEndIndex( &pNew->GetPoint()->nContent );
+ pNew->GetPoint()->nNode = aStt;
+ return pNew;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+// Stream-spezifisches
+#ifndef PRODUCT
+SvStream& Writer::Strm()
+{
+ ASSERT( pStrm, "Oh-oh. Dies ist ein Storage-Writer. Gleich knallts!" );
+ return *pStrm;
+}
+#endif
+
+
+SvStream& Writer::OutHex( SvStream& rStrm, ULONG nHex, BYTE nLen )
+{ // in einen Stream aus
+ // Pointer an das Bufferende setzen
+ sal_Char* pStr = aNToABuf + (NTOABUFLEN-1);
+ for( BYTE n = 0; n < nLen; ++n )
+ {
+ *(--pStr) = (sal_Char)(nHex & 0xf ) + 48;
+ if( *pStr > '9' )
+ *pStr += 39;
+ nHex >>= 4;
+ }
+ return rStrm << pStr;
+}
+
+SvStream& Writer::OutLong( SvStream& rStrm, long nVal )
+{
+ // Pointer an das Bufferende setzen
+ sal_Char* pStr = aNToABuf + (NTOABUFLEN-1);
+
+ int bNeg = nVal < 0;
+ if( bNeg )
+ nVal = -nVal;
+
+ do {
+ *(--pStr) = (sal_Char)(nVal % 10 ) + 48;
+ nVal /= 10;
+ } while( nVal );
+
+ // Ist Zahl negativ, dann noch -
+ if( bNeg )
+ *(--pStr) = '-';
+
+ return rStrm << pStr;
+}
+
+SvStream& Writer::OutULong( SvStream& rStrm, ULONG nVal )
+{
+ // Pointer an das Bufferende setzen
+ sal_Char* pStr = aNToABuf + (NTOABUFLEN-1);
+
+ do {
+ *(--pStr) = (sal_Char)(nVal % 10 ) + 48;
+ nVal /= 10;
+ } while ( nVal );
+ return rStrm << pStr;
+}
+
+
+ULONG Writer::Write( SwPaM& rPaM, SvStream& rStrm, const String* pFName )
+{
+ pStrm = &rStrm;
+ pDoc = rPaM.GetDoc();
+ pOrigFileName = pFName;
+ pImpl = new Writer_Impl( *pDoc );
+
+ // PaM kopieren, damit er veraendert werden kann
+ pCurPam = new SwPaM( *rPaM.End(), *rPaM.Start() );
+ // zum Vergleich auf den akt. Pam sichern
+ pOrigPam = &rPaM;
+
+ ULONG nRet = WriteStream();
+
+ ResetWriter();
+
+ return nRet;
+}
+
+ULONG Writer::Write( SwPaM& rPam, SfxMedium& rMed, const String* pFileName )
+{
+ return IsStgWriter()
+ ? Write( rPam, *rMed.GetStorage(), pFileName )
+ : Write( rPam, *rMed.GetOutStream(), pFileName );
+}
+
+ULONG Writer::Write( SwPaM& rPam, SvStorage&, const String* )
+{
+ ASSERT( !this, "Schreiben in Storages auf einem Stream?" );
+ return ERR_SWG_WRITE_ERROR;
+}
+
+
+BOOL Writer::CopyLocalFileToINet( String& rFileNm, BOOL bCIdTarget )
+{
+ BOOL bRet = FALSE;
+ INetURLObject aFileUrl( rFileNm ), aTargetUrl( *pOrigFileName );
+ if( ( INET_PROT_FILE == aFileUrl.GetProtocol() ||
+ (bCIdTarget && INET_PROT_CID == aFileUrl.GetProtocol()) ) &&
+ ( (bCIdTarget && INET_PROT_FILE == aTargetUrl.GetProtocol()) ||
+ (!bCIdTarget && INET_PROT_FILE != aTargetUrl.GetProtocol() &&
+ INET_PROT_FTP <= aTargetUrl.GetProtocol() &&
+ INET_PROT_NEWS >= aTargetUrl.GetProtocol()) ) )
+ {
+ if( pImpl->pSrcArr )
+ {
+ // wurde die Datei schon verschoben
+ USHORT nPos;
+ if( pImpl->pSrcArr->Seek_Entry( &rFileNm, &nPos ))
+ {
+ rFileNm = *(*pImpl->pDestArr)[ nPos ];
+ return TRUE;
+ }
+ }
+ else
+ {
+ pImpl->pSrcArr = new SvStringsSortDtor( 4, 4 );
+ pImpl->pDestArr = new SvStringsSortDtor( 4, 4 );
+ }
+
+ String* pSrc = new String( rFileNm );
+
+ String* pDest = 0;
+
+ if( INET_PROT_FILE == aFileUrl.GetProtocol() )
+ {
+ SvFileStream aTmp( aFileUrl.PathToFileName(), STREAM_READ );
+
+ pDest = new String( aTargetUrl.GetPartBeforeLastName() );
+ *pDest += aFileUrl.GetName();
+
+ if( INET_PROT_FILE == aTargetUrl.GetProtocol() )
+ {
+ ASSERT( bCIdTarget,
+ "CopyLocalFile: file->file: CId-Flag nicht gesetzt" );
+ INetURLObject aCpyURL( *pDest );
+ SvFileStream aCpy( aCpyURL.PathToFileName(), STREAM_WRITE );
+ aCpy << aTmp;
+
+ aCpy.Close();
+ bRet = SVSTREAM_OK == aCpy.GetError();
+ }
+ else
+ {
+ ASSERT( !bCIdTarget,
+ "CopyLocalFile: file->net: CId-Flag gesetzt" );
+ SfxMedium aMedium( *pDest, STREAM_WRITE | STREAM_SHARE_DENYNONE,
+ FALSE, FALSE );
+
+ SvFileStream aCpy( aMedium.GetPhysicalName(), STREAM_WRITE );
+ aCpy << aTmp;
+ aCpy.Close();
+
+ aMedium.Close();
+ aMedium.Commit();
+
+ bRet = 0 == aMedium.GetError();
+ }
+ }
+ else
+ {
+ ASSERT( INET_PROT_CID == aFileUrl.GetProtocol(),
+ "CopyLocalFile: cid->file: Source-URL nicht cid" );
+ ASSERT( INET_PROT_FILE == aTargetUrl.GetProtocol(),
+ "CopyLocalFile: cid->file: Target-URL nicht file" );
+ ASSERT( bCIdTarget,
+ "CopyLocalFile: cid->file: CId-Flag nicht gesetzt" );
+
+ SfxMedium aMedium( *pSrc, STREAM_READ | STREAM_SHARE_DENYNONE,
+ FALSE, TRUE );
+ if( aMedium.GetInStream() )
+ {
+ // Eine CID-URL wird in eine Datei kopiert, wenn eine
+ // Mail beantworted wird. Die Datei muss dann die richtige
+ // Extension bekommen. Da Netscape-CIDs keine Extensions
+ // enthalten muessen wir sie ueber den Grafik-Typ
+ // bestimmen und koennen sie nicht uas der URL extrahieren.
+ GraphicDescriptor aDesc( *aMedium.GetInStream() );
+ GraphicFilter *pGrfFilter = GetGrfFilter();
+
+ if ( aDesc.Detect( FALSE ) )
+ {
+ String aExt( pGrfFilter->GetImportFormatShortName(
+ aDesc.GetImportFormatNumber( aDesc.GetFileFormat(),
+ pGrfFilter->GetConfig() ) ) );
+
+ INetURLObject aAbsObj(URIHelper::SmartRelToAbs(aTargetUrl.GetMainURL()));
+ aAbsObj.removeSegment();
+ String sPath(aAbsObj.GetMainURL());
+ TempFile aTempFile(aTargetUrl.GetBase(), &aExt, &sPath);
+
+ SvFileStream aCpy( aTempFile.GetName(), STREAM_WRITE );
+ aCpy << *aMedium.GetInStream();
+ aCpy.Close();
+
+ bRet = SVSTREAM_OK == aCpy.GetError();
+ if( bRet )
+ pDest = new String( aTempFile.GetName() );
+ }
+ }
+ }
+
+ if( bRet )
+ {
+ pImpl->pSrcArr->Insert( pSrc );
+ pImpl->pDestArr->Insert( pDest );
+ rFileNm = *pDest;
+ }
+ else
+ {
+ delete pSrc;
+ delete pDest;
+ }
+ }
+
+ return bRet;
+}
+
+void Writer::PutNumFmtFontsInAttrPool()
+{
+ // dann gibt es noch in den NumRules ein paar Fonts
+ // Diese in den Pool putten. Haben sie danach einen RefCount > 1
+ // kann es wieder entfernt werden - ist schon im Pool
+ SfxItemPool& rPool = pDoc->GetAttrPool();
+ const SwNumRuleTbl& rListTbl = pDoc->GetNumRuleTbl();
+ const SwNumRule* pRule;
+ const SwNumFmt* pFmt;
+ const Font *pFont, *pDefFont = &SwNumRule::GetDefBulletFont();
+ BOOL bCheck = FALSE;
+
+ for( USHORT nGet = rListTbl.Count(); nGet; )
+ if( pDoc->IsUsed( *(pRule = rListTbl[ --nGet ] )))
+ for( BYTE nLvl = 0; nLvl < MAXLEVEL; ++nLvl )
+ if( SVX_NUM_CHAR_SPECIAL == (pFmt = &pRule->Get( nLvl ))->eType ||
+ SVX_NUM_BITMAP == pFmt->eType )
+ {
+ if( 0 == ( pFont = pFmt->GetBulletFont() ) )
+ pFont = pDefFont;
+
+ if( bCheck )
+ {
+ if( *pFont == *pDefFont )
+ continue;
+ }
+ else if( *pFont == *pDefFont )
+ bCheck = TRUE;
+
+ _AddFontItem( rPool, SvxFontItem( pFont->GetFamily(),
+ pFont->GetName(), pFont->GetStyleName(),
+ pFont->GetPitch(), pFont->GetCharSet() ));
+ }
+}
+
+void Writer::PutEditEngFontsInAttrPool()
+{
+ SfxItemPool& rPool = pDoc->GetAttrPool();
+ if( rPool.GetSecondaryPool() )
+ {
+ USHORT nW = EE_CHAR_FONTINFO;
+ const SvxFontItem* pFont = (const SvxFontItem*)&rPool.GetDefaultItem( nW );
+ _AddFontItem( rPool, *pFont );
+
+ if( 0 != ( pFont = (const SvxFontItem*)rPool.GetPoolDefaultItem( nW )) )
+ _AddFontItem( rPool, *pFont );
+
+ USHORT nMaxItem = rPool.GetItemCount( nW );
+ for( USHORT nGet = 0; nGet < nMaxItem; ++nGet )
+ if( 0 != (pFont = (const SvxFontItem*)rPool.GetItem( nW, nGet )) )
+ _AddFontItem( rPool, *pFont );
+ }
+}
+
+void Writer::_AddFontItem( SfxItemPool& rPool, const SvxFontItem& rFont )
+{
+ const SvxFontItem* pItem;
+ if( RES_CHRATR_FONT != rFont.Which() )
+ {
+ SvxFontItem aFont( rFont );
+ aFont.SetWhich( RES_CHRATR_FONT );
+ pItem = (SvxFontItem*)&rPool.Put( aFont );
+ }
+ else
+ pItem = (SvxFontItem*)&rPool.Put( rFont );
+
+ if( 1 < pItem->GetRef() )
+ rPool.Remove( *pItem );
+ else
+ {
+ if( !pImpl->pFontRemoveLst )
+ pImpl->pFontRemoveLst = new SvPtrarr( 0, 10 );
+
+ void* p = (void*)pItem;
+ pImpl->pFontRemoveLst->Insert( p, pImpl->pFontRemoveLst->Count() );
+ }
+}
+
+// build a bookmark table, which is sort by the node position. The
+// OtherPos of the bookmarks also inserted.
+void Writer::CreateBookmarkTbl()
+{
+ const SwBookmarks& rBkmks = pDoc->GetBookmarks();
+ for( USHORT n = rBkmks.Count(); n; )
+ {
+ const SwBookmark& rBkmk = *rBkmks[ --n ];
+ if( rBkmk.IsBookMark() )
+ pImpl->InsertBkmk( rBkmk );
+ }
+}
+
+
+// search alle Bookmarks in the range and return it in the Array
+USHORT Writer::GetBookmarks( const SwCntntNode& rNd, xub_StrLen nStt,
+ xub_StrLen nEnd, SvPtrarr& rArr )
+{
+ ASSERT( !rArr.Count(), "es sind noch Eintraege vorhanden" );
+
+ ULONG nNd = rNd.GetIndex();
+ SvPtrarr* pArr = pImpl->pBkmkNodePos ? pImpl->pBkmkNodePos->Get( nNd ) : 0;
+ if( pArr )
+ {
+ // there exist some bookmarks, search now all which is in the range
+ if( !nStt && nEnd == rNd.Len() )
+ // all
+ rArr.Insert( pArr, 0 );
+ else
+ {
+ USHORT n;
+ xub_StrLen nCntnt;
+ for( n = 0; n < pArr->Count(); ++n )
+ {
+ void* p = (*pArr)[ n ];
+ const SwBookmark& rBkmk = *(SwBookmark*)p;
+ if( rBkmk.GetPos().nNode == nNd &&
+ (nCntnt = rBkmk.GetPos().nContent.GetIndex() ) >= nStt &&
+ nCntnt < nEnd )
+ {
+ rArr.Insert( p, rArr.Count() );
+ }
+ else if( rBkmk.GetOtherPos() && nNd ==
+ rBkmk.GetOtherPos()->nNode.GetIndex() && (nCntnt =
+ rBkmk.GetOtherPos()->nContent.GetIndex() ) >= nStt &&
+ nCntnt < nEnd )
+ {
+ rArr.Insert( p, rArr.Count() );
+ }
+ }
+ }
+ }
+ return rArr.Count();
+}
+
+////////////////////////////////////////////////////////////////////////////
+
+// Storage-spezifisches
+
+ULONG StgWriter::WriteStream()
+{
+ ASSERT( !this, "Schreiben in Streams auf einem Storage?" );
+ return ERR_SWG_WRITE_ERROR;
+}
+
+ULONG StgWriter::Write( SwPaM& rPaM, SvStorage& rStg, const String* pFName )
+{
+ pStrm = 0;
+ pStg = &rStg;
+ pDoc = rPaM.GetDoc();
+ pOrigFileName = pFName;
+ pImpl = new Writer_Impl( *pDoc );
+
+ // PaM kopieren, damit er veraendert werden kann
+ pCurPam = new SwPaM( *rPaM.End(), *rPaM.Start() );
+ // zum Vergleich auf den akt. Pam sichern
+ pOrigPam = &rPaM;
+
+ ULONG nRet = WriteStorage();
+
+ pStg = NULL;
+ ResetWriter();
+
+ return nRet;
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/writer/writer.cxx,v 1.1.1.1 2000-09-18 17:14:57 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.103 2000/09/18 16:04:55 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.102 2000/08/04 16:25:50 jp
+ read/write unicode ascii files
+
+ Revision 1.101 2000/06/26 13:01:26 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.100 2000/06/13 09:43:46 os
+ using UCB
+
+ Revision 1.99 2000/05/08 16:51:53 jp
+ Changes for Unicode
+
+ Revision 1.98 1999/10/13 10:38:29 jp
+ PutEditEngFontsInAtrPool - check if the editenginepool exist
+
+ Revision 1.97 1999/10/12 20:04:37 jp
+ Writer: put EditEngine fonts into the writer pool
+
+ Revision 1.96 1999/08/12 10:19:56 MIB
+ Don\'t delete impl if it hasn\'t been set (for XML filter)
+
+
+ Rev 1.95 12 Aug 1999 12:19:56 MIB
+ Don't delete impl if it hasn't been set (for XML filter)
+
+ Rev 1.94 30 Jun 1999 18:53:20 JP
+ dtor for impl class
+
+ Rev 1.93 24 Jun 1999 22:51:34 JP
+ new: Writer with internal Impl-structur, build Bookmark table sortet by nodes
+
+ Rev 1.92 23 Jun 1999 19:13:40 JP
+ interface of Writer::FindPos_Bkmk has changed
+
+ Rev 1.91 16 Jun 1999 19:52:14 JP
+ Change interface of base class Writer
+
+ Rev 1.90 28 Jan 1999 14:21:28 JP
+ GraphicFilter-SS hat sich geaendert - Task #59174#
+
+ Rev 1.89 30 Oct 1998 18:30:02 JP
+ Task #58596#: neues Flag an der Writerklasse -> schreibe nur die 1. Tabelle
+
+ Rev 1.88 27 Jun 1998 16:02:08 JP
+ Writer mit neuen Flags; fuer den ASCII-Writer, etwas aufgeraeumt
+
+ Rev 1.87 23 Apr 1998 19:07:44 MIB
+ fix #49729#: Stream beim kopieren von Grafiken ins INet schliessen
+
+ Rev 1.86 22 Jan 1998 20:02:56 JP
+ CTOR des SwPaM umgestellt
+
+ Rev 1.85 26 Nov 1997 14:29:14 MA
+ headerfiles
+
+ Rev 1.84 03 Nov 1997 14:12:48 MA
+ precomp entfernt
+
+ Rev 1.83 13 Oct 1997 16:06:34 JP
+ pNext vom Ring wurde privat; zugriff ueber GetNext()
+
+ Rev 1.82 09 Oct 1997 14:26:24 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.81 03 Sep 1997 11:59:44 JP
+ zusaetzliches include von docary
+
+*************************************************************************/
+
diff --git a/sw/source/filter/writer/wrt_fn.cxx b/sw/source/filter/writer/wrt_fn.cxx
new file mode 100644
index 000000000000..98784a8a3eb9
--- /dev/null
+++ b/sw/source/filter/writer/wrt_fn.cxx
@@ -0,0 +1,230 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrt_fn.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+
+
+#include "shellio.hxx"
+#include "wrt_fn.hxx"
+#include "pam.hxx"
+#include "node.hxx"
+#include "format.hxx"
+
+
+
+Writer& Out( const SwAttrFnTab pTab, const SfxPoolItem& rHt, Writer & rWrt )
+{
+ USHORT nId = rHt.Which();
+ ASSERT( nId < POOLATTR_END && nId >= POOLATTR_BEGIN, "SwAttrFnTab::Out()" );
+ FnAttrOut pOut;
+ if( 0 != ( pOut = pTab[ nId - RES_CHRATR_BEGIN] ))
+ (*pOut)( rWrt, rHt );
+ return rWrt;
+
+}
+
+Writer& Out_SfxItemSet( const SwAttrFnTab pTab, Writer& rWrt,
+ const SfxItemSet& rSet, BOOL bDeep,
+ BOOL bTstForDefault )
+{
+ // erst die eigenen Attribute ausgeben
+ const SfxItemPool& rPool = *rSet.GetPool();
+ const SfxItemSet* pSet = &rSet;
+ if( !pSet->Count() ) // Optimierung - leere Sets
+ {
+ if( !bDeep )
+ return rWrt;
+ while( 0 != ( pSet = pSet->GetParent() ) && !pSet->Count() )
+ ;
+ if( !pSet )
+ return rWrt;
+ }
+ const SfxPoolItem* pItem;
+ FnAttrOut pOut;
+ if( !bDeep || !pSet->GetParent() )
+ {
+ ASSERT( rSet.Count(), "Wurde doch schon behandelt oder?" );
+ SfxItemIter aIter( *pSet );
+ pItem = aIter.GetCurItem();
+ do {
+ if( 0 != ( pOut = pTab[ pItem->Which() - RES_CHRATR_BEGIN] ))
+ (*pOut)( rWrt, *pItem );
+ } while( !aIter.IsAtEnd() && 0 != ( pItem = aIter.NextItem() ) );
+ }
+ else
+ {
+ SfxWhichIter aIter( *pSet );
+ register USHORT nWhich = aIter.FirstWhich();
+ while( nWhich )
+ {
+ if( SFX_ITEM_SET == pSet->GetItemState( nWhich, bDeep, &pItem ) &&
+ ( !bTstForDefault || (
+ *pItem != rPool.GetDefaultItem( nWhich )
+ || ( pSet->GetParent() &&
+ *pItem != pSet->GetParent()->Get( nWhich ))
+ )) && 0 != ( pOut = pTab[ nWhich - RES_CHRATR_BEGIN] ))
+ (*pOut)( rWrt, *pItem );
+ nWhich = aIter.NextWhich();
+ }
+ }
+ return rWrt;
+}
+
+
+
+Writer& Out( const SwNodeFnTab pTab, SwNode& rNode, Writer & rWrt )
+{
+ // es muss ein CntntNode sein !!
+ SwCntntNode * pCNd = rNode.GetCntntNode();
+ if( !pCNd )
+ return rWrt;
+
+ USHORT nId;
+ switch( pCNd->GetNodeType() )
+ {
+ case ND_TEXTNODE: nId = RES_TXTNODE; break;
+ case ND_GRFNODE: nId = RES_GRFNODE; break;
+ case ND_OLENODE: nId = RES_OLENODE; break;
+ default:
+ ASSERT( FALSE, "was fuer ein Node ist es denn nun?" );
+ }
+ FnNodeOut pOut;
+ if( 0 != ( pOut = pTab[ nId - RES_NODE_BEGIN ] ))
+ (*pOut)( rWrt, *pCNd );
+ return rWrt;
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/writer/wrt_fn.cxx,v 1.1.1.1 2000-09-18 17:14:57 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.32 2000/09/18 16:04:55 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.31 1999/07/06 12:55:38 JP
+ Out_SfxItemSet: test to default items optional
+
+
+ Rev 1.30 06 Jul 1999 14:55:38 JP
+ Out_SfxItemSet: test to default items optional
+
+ Rev 1.29 26 Nov 1997 14:29:14 MA
+ headerfiles
+
+ Rev 1.28 03 Nov 1997 14:12:48 MA
+ precomp entfernt
+
+ Rev 1.27 22 Jan 1997 12:01:18 JP
+ neu: Tabellen Box Attribute
+
+ Rev 1.26 16 Oct 1996 16:58:54 JP
+ unbenutzte Methoden entfernt
+
+ Rev 1.25 01 Jul 1996 16:03:14 MA
+ includes
+
+ Rev 1.24 22 Mar 1996 14:52:12 SWG
+ include hinzugefuegt
+
+ Rev 1.23 24 Nov 1995 17:24:42 OM
+ PCH->PRECOMPILED
+
+ Rev 1.22 25 Oct 1994 15:57:12 MA
+ PreHdr.
+
+ Rev 1.21 04 Oct 1994 16:34:06 JP
+ Out_SfxItemSet: optimiert
+
+ Rev 1.20 28 Sep 1994 12:37:34 JP
+ neue Methode: Out_SfxItemSet
+
+ Rev 1.19 25 Aug 1994 18:09:12 JP
+ Umstellung Attribute (von SwHint -> SfxPoolItem)
+
+ Rev 1.18 15 Feb 1994 15:31:30 MI
+ handsegmentierung
+
+ Rev 1.17 28 Jan 1994 11:34:06 MI
+ TCOV() entfernt, SW_... nach SEG_... umbenannt
+
+ Rev 1.16 13 Jan 1994 08:31:32 MI
+ Segmentierung per #define ermoeglicht
+
+*************************************************************************/
+
+
diff --git a/sw/source/filter/writer/wrtswtbl.cxx b/sw/source/filter/writer/wrtswtbl.cxx
new file mode 100644
index 000000000000..308c191c48e4
--- /dev/null
+++ b/sw/source/filter/writer/wrtswtbl.cxx
@@ -0,0 +1,959 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtswtbl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _FRACT_HXX
+#include <tools/fract.hxx>
+#endif
+
+#ifndef _WRTSWTBL_HXX
+#include <wrtswtbl.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTORNT_HXX
+#include <fmtornt.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _HTMLTBL_HXX
+#include <htmltbl.hxx>
+#endif
+
+
+SV_IMPL_PTRARR( SwWriteTableCells, SwWriteTableCellPtr )
+SV_IMPL_OP_PTRARR_SORT( SwWriteTableRows, SwWriteTableRowPtr )
+SV_IMPL_OP_PTRARR_SORT( SwWriteTableCols, SwWriteTableColPtr )
+
+//-----------------------------------------------------------------------
+
+SwVertOrient SwWriteTableCell::GetVertOri() const
+{
+ SwVertOrient eCellVertOri = VERT_TOP;
+ if( pBox->GetSttNd() )
+ {
+ const SfxItemSet& rItemSet = pBox->GetFrmFmt()->GetAttrSet();
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_VERT_ORIENT, FALSE, &pItem ) )
+ {
+ SwVertOrient eBoxVertOri =
+ ((const SwFmtVertOrient *)pItem)->GetVertOrient();
+ if( VERT_CENTER==eBoxVertOri || VERT_BOTTOM==eBoxVertOri)
+ eCellVertOri = eBoxVertOri;
+ }
+ }
+
+ return eCellVertOri;
+}
+
+//-----------------------------------------------------------------------
+
+SwWriteTableRow::SwWriteTableRow( long nPosition )
+ : nPos(nPosition), pBackground( 0 ),
+ bTopBorder(TRUE), bBottomBorder(TRUE),
+ nTopBorder(USHRT_MAX), nBottomBorder(USHRT_MAX)
+{
+}
+
+
+SwWriteTableCell *SwWriteTableRow::AddCell( const SwTableBox *pBox,
+ USHORT nRow, USHORT nCol,
+ USHORT nRowSpan, USHORT nColSpan,
+ long nHeight,
+ const SvxBrushItem *pBackground )
+{
+ SwWriteTableCell *pCell =
+ new SwWriteTableCell( pBox, nRow, nCol, nRowSpan, nColSpan,
+ nHeight, pBackground );
+ aCells.Insert( pCell, aCells.Count() );
+
+ return pCell;
+}
+
+//-----------------------------------------------------------------------
+
+SwWriteTableCol::SwWriteTableCol( USHORT nPosition )
+ : nPos(nPosition),
+ bLeftBorder(TRUE), bRightBorder(TRUE),
+ nWidthOpt( 0 ), bRelWidthOpt( FALSE ),
+ bOutWidth( TRUE )
+{
+}
+
+//-----------------------------------------------------------------------
+
+long SwWriteTable::GetBoxWidth( const SwTableBox *pBox )
+{
+ const SwFrmFmt *pFmt = pBox->GetFrmFmt();
+ const SwFmtFrmSize& aFrmSize=
+ (const SwFmtFrmSize&)pFmt->GetAttr( RES_FRM_SIZE );
+
+ return aFrmSize.GetSize().Width();
+}
+
+long SwWriteTable::GetLineHeight( const SwTableLine *pLine )
+{
+#ifndef PRODUCT
+ BOOL bOldGetLineHeightCalled = bGetLineHeightCalled;
+ bGetLineHeightCalled = TRUE;
+#endif
+
+ long nHeight = 0;
+ if( bUseLayoutHeights )
+ {
+ // Erstmal versuchen wir die Hoehe ueber das Layout zu bekommen
+ long nHeight = pLine->GetLineRect( FALSE ).Height();
+ if( nHeight > 0 )
+ return nHeight;
+
+ // Wenn kein Layout gefunden wurde, gehen wir von festen Hoehen aus.
+ bUseLayoutHeights = FALSE;
+
+#ifndef PRODUCT
+ ASSERT( !bOldGetLineHeightCalled, "Layout ungueltig?" );
+#endif
+ }
+
+ const SwTableBoxes& rBoxes = pLine->GetTabBoxes();
+ USHORT nBoxes = rBoxes.Count();
+
+ for( USHORT nBox=0; nBox<nBoxes; nBox++ )
+ {
+ const SwTableBox* pBox = rBoxes[nBox];
+ if( pBox->GetSttNd() )
+ {
+ if( nHeight < ROW_DFLT_HEIGHT )
+ nHeight = ROW_DFLT_HEIGHT;
+ }
+ else
+ {
+ long nTmp = 0;
+ const SwTableLines &rLines = pBox->GetTabLines();
+ for( USHORT nLine=0; nLine<rLines.Count(); nLine++ )
+ {
+ nTmp += GetLineHeight( rLines[nLine] );
+ }
+ if( nHeight < nTmp )
+ nHeight = nTmp;
+ }
+ }
+
+ return nHeight;
+}
+
+long SwWriteTable::GetLineHeight( const SwTableBox *pBox ) const
+{
+ const SwTableLine *pLine = pBox->GetUpper();
+
+ if( !pLine )
+ return 0;
+
+ const SwFrmFmt *pLineFrmFmt = pLine->GetFrmFmt();
+ const SfxPoolItem* pItem;
+ const SfxItemSet& rItemSet = pLineFrmFmt->GetAttrSet();
+
+ long nHeight = 0;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_FRM_SIZE, TRUE, &pItem ))
+ nHeight = ((SwFmtFrmSize*)pItem)->GetHeight();
+
+ return nHeight;
+}
+
+const SvxBrushItem *SwWriteTable::GetLineBrush( const SwTableBox *pBox,
+ SwWriteTableRow *pRow )
+{
+ const SwTableLine *pLine = pBox->GetUpper();
+
+ while( pLine )
+ {
+ const SwFrmFmt *pLineFrmFmt = pLine->GetFrmFmt();
+ const SfxPoolItem* pItem;
+ const SfxItemSet& rItemSet = pLineFrmFmt->GetAttrSet();
+
+ const SvxBrushItem *pBrushItem = 0;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BACKGROUND, FALSE,
+ &pItem ) )
+ {
+ if( !pLine->GetUpper() )
+ {
+ if( !pRow->GetBackground() )
+ pRow->SetBackground( (const SvxBrushItem *)pItem );
+ pItem = 0;
+ }
+
+ return (const SvxBrushItem *)pItem;
+ }
+
+ pBox = pLine->GetUpper();
+ pLine = pBox ? pBox->GetUpper() : 0;
+ }
+
+ return 0;
+}
+
+
+void SwWriteTable::MergeBorders( const SvxBorderLine* pBorderLine,
+ BOOL bTable )
+{
+ if( (UINT32)-1 == nBorderColor )
+ {
+ Color aGrayColor( COL_GRAY );
+ if( !pBorderLine->GetColor().IsRGBEqual( aGrayColor ) )
+ nBorderColor = pBorderLine->GetColor().GetColor();
+ }
+
+ if( !bCollectBorderWidth )
+ return;
+
+ USHORT nOutWidth = pBorderLine->GetOutWidth();
+ if( bTable )
+ {
+ if( nOutWidth && (!nBorder || nOutWidth < nBorder) )
+ nBorder = nOutWidth;
+ }
+ else
+ {
+ if( nOutWidth && (!nInnerBorder || nOutWidth < nInnerBorder) )
+ nInnerBorder = nOutWidth;
+ }
+
+ USHORT nDist = pBorderLine->GetInWidth() ? pBorderLine->GetDistance()
+ : 0;
+ if( nDist && (!nCellSpacing || nDist < nCellSpacing) )
+ nCellSpacing = nDist;
+}
+
+
+USHORT SwWriteTable::MergeBoxBorders( const SwTableBox *pBox,
+ USHORT nRow, USHORT nCol,
+ USHORT nRowSpan, USHORT nColSpan,
+ USHORT& rTopBorder,
+ USHORT &rBottomBorder )
+{
+ USHORT nBorderMask = 0;
+
+ const SwFrmFmt *pFrmFmt = pBox->GetFrmFmt();
+ const SvxBoxItem& rBoxItem = (const SvxBoxItem&)pFrmFmt->GetAttr( RES_BOX );
+
+ USHORT nWidth = 0;
+
+ if( rBoxItem.GetTop() )
+ {
+ nBorderMask |= 1;
+ MergeBorders( rBoxItem.GetTop(), nRow==0 );
+ rTopBorder = rBoxItem.GetTop()->GetOutWidth();
+ }
+
+ if( rBoxItem.GetLeft() )
+ {
+ nBorderMask |= 4;
+ MergeBorders( rBoxItem.GetLeft(), nCol==0 );
+ }
+
+ if( rBoxItem.GetBottom() )
+ {
+ nBorderMask |= 2;
+ MergeBorders( rBoxItem.GetBottom(), nRow+nRowSpan==aRows.Count() );
+ rBottomBorder = rBoxItem.GetBottom()->GetOutWidth();
+ }
+
+ if( rBoxItem.GetRight() )
+ {
+ nBorderMask |= 8;
+ MergeBorders( rBoxItem.GetRight(), nCol+nColSpan==aCols.Count() );
+ }
+
+ // If any distance is set, the smallest one is used. This holds for
+ // the four distance of a box as well as for the distances of different
+ // boxes.
+ if( bCollectBorderWidth )
+ {
+ USHORT nDist = rBoxItem.GetDistance( BOX_LINE_TOP );
+ if( nDist && (!nCellPadding || nDist < nCellPadding) )
+ nCellPadding = nDist;
+ nDist = rBoxItem.GetDistance( BOX_LINE_BOTTOM );
+ if( nDist && (!nCellPadding || nDist < nCellPadding) )
+ nCellPadding = nDist;
+ nDist = rBoxItem.GetDistance( BOX_LINE_LEFT );
+ if( nDist && (!nCellPadding || nDist < nCellPadding) )
+ nCellPadding = nDist;
+ nDist = rBoxItem.GetDistance( BOX_LINE_RIGHT );
+ if( nDist && (!nCellPadding || nDist < nCellPadding) )
+ nCellPadding = nDist;
+ }
+
+ return nBorderMask;
+}
+
+
+USHORT SwWriteTable::GetRawWidth( USHORT nCol, USHORT nColSpan ) const
+{
+ USHORT nWidth = aCols[nCol+nColSpan-1]->GetPos();
+ if( nCol > 0 )
+ nWidth -= aCols[nCol-1]->GetPos();
+
+ return nWidth;
+}
+
+USHORT SwWriteTable::GetLeftSpace( USHORT nCol ) const
+{
+ USHORT nSpace = nCellPadding + nCellSpacing;
+
+ // In der ersten Spalte auch noch die Liniendicke abziehen
+ if( nCol==0 )
+ {
+ nSpace += nLeftSub;
+
+ const SwWriteTableCol *pCol = aCols[nCol];
+ if( pCol->HasLeftBorder() )
+ nSpace += nBorder;
+ }
+
+ return nSpace;
+}
+
+USHORT SwWriteTable::GetRightSpace( USHORT nCol, USHORT nColSpan ) const
+{
+ USHORT nSpace = nCellPadding;
+
+ // In der letzten Spalte noch einmal zusaetzlich CELLSPACING und
+ // und die Liniendicke abziehen
+ if( nCol+nColSpan==aCols.Count() )
+ {
+ nSpace += (nCellSpacing + nRightSub);
+
+ const SwWriteTableCol *pCol = aCols[nCol+nColSpan-1];
+ if( pCol->HasRightBorder() )
+ nSpace += nBorder;
+ }
+
+ return nSpace;
+}
+
+USHORT SwWriteTable::GetAbsWidth( USHORT nCol, USHORT nColSpan ) const
+{
+ long nWidth = GetRawWidth( nCol, nColSpan );
+ if( nBaseWidth != nTabWidth )
+ {
+ nWidth *= nTabWidth;
+ nWidth /= nBaseWidth;
+ }
+
+ nWidth -= GetLeftSpace( nCol ) + GetRightSpace( nCol, nColSpan );
+
+ ASSERT( nWidth > 0, "Spaltenbreite <= 0. OK?" );
+ return nWidth > 0 ? (USHORT)nWidth : 0;
+}
+
+USHORT SwWriteTable::GetRelWidth( USHORT nCol, USHORT nColSpan ) const
+{
+ long nWidth = GetRawWidth( nCol, nColSpan );
+
+ return (USHORT)(long)Fraction( nWidth*256 + GetBaseWidth()/2,
+ GetBaseWidth() );
+}
+
+USHORT SwWriteTable::GetPrcWidth( USHORT nCol, USHORT nColSpan ) const
+{
+ long nWidth = GetRawWidth( nCol, nColSpan );
+
+ // sieht komisch aus, ist aber nichts anderes als
+ // [(100 * nWidth) + .5] ohne Rundungsfehler
+ return (USHORT)(long)Fraction( nWidth*100 + GetBaseWidth()/2,
+ GetBaseWidth() );
+}
+
+long SwWriteTable::GetAbsHeight( long nRawHeight, USHORT nRow,
+ USHORT nRowSpan ) const
+{
+ nRawHeight -= (2*nCellPadding + nCellSpacing);
+
+ // In der ersten Zeile noch einmal zusaetzlich CELLSPACING und
+ // und die Liniendicke abziehen
+ const SwWriteTableRow *pRow = 0;
+ if( nRow==0 )
+ {
+ nRawHeight -= nCellSpacing;
+ pRow = aRows[nRow];
+ if( pRow->HasTopBorder() )
+ nRawHeight -= nBorder;
+ }
+
+ // In der letzten Zeile noch die Liniendicke abziehen
+ if( nRow+nRowSpan==aRows.Count() )
+ {
+ if( !pRow || nRowSpan > 1 )
+ pRow = aRows[nRow+nRowSpan-1];
+ if( pRow->HasBottomBorder() )
+ nRawHeight -= nBorder;
+ }
+
+ ASSERT( nRawHeight > 0, "Zeilenheohe <= 0. OK?" );
+ return nRawHeight > 0 ? nRawHeight : 0;
+}
+
+
+
+BOOL SwWriteTable::ShouldExpandSub( const SwTableBox *pBox,
+ BOOL bExpandedBefore,
+ USHORT nDepth ) const
+{
+ return !pBox->GetSttNd() && nDepth > 0;
+}
+
+void SwWriteTable::CollectTableRowsCols( long nStartRPos,
+ USHORT nStartCPos,
+ long nParentLineHeight,
+ USHORT nParentLineWidth,
+ const SwTableLines& rLines,
+ USHORT nDepth )
+{
+ BOOL bSubExpanded = FALSE;
+ USHORT nLines = rLines.Count();
+
+#ifndef PRODUCT
+ USHORT nEndCPos = 0;
+#endif
+
+ long nRPos = nStartRPos;
+ for( USHORT nLine = 0; nLine < nLines; nLine++ )
+ {
+ /*const*/ SwTableLine *pLine = rLines[nLine];
+
+ long nOldRPos = nRPos;
+
+ if( nLine < nLines-1 || nParentLineHeight==0 )
+ {
+ nRPos += GetLineHeight( pLine );
+ SwWriteTableRow *pRow = new SwWriteTableRow( nRPos );
+
+ USHORT nRow;
+ if( aRows.Seek_Entry( pRow, &nRow ) )
+ delete pRow;
+ else
+ aRows.Insert( pRow );
+ }
+ else
+ {
+ long nCheckPos = nRPos + GetLineHeight( pLine );
+ nRPos = nStartRPos + nParentLineHeight;
+#ifndef PRODUCT
+ SwWriteTableRow aRow( nStartRPos + nParentLineHeight );
+ ASSERT( aRows.Seek_Entry(&aRow),
+ "Parent-Zeile nicht gefunden" );
+ ASSERT( !bUseLayoutHeights ||
+ SwWriteTableRow(nCheckPos) == SwWriteTableRow(nRPos),
+ "Hoehe der Zeilen stimmt nicht mit Parent ueberein" );
+#endif
+ }
+
+ // Fuer alle Boxen der Zeile ggf. eine Spalte einfuegen
+ const SwTableBoxes& rBoxes = pLine->GetTabBoxes();
+ USHORT nBoxes = rBoxes.Count();
+
+ USHORT nCPos = nStartCPos;
+ for( USHORT nBox=0; nBox<nBoxes; nBox++ )
+ {
+ const SwTableBox *pBox = rBoxes[nBox];
+
+ USHORT nOldCPos = nCPos;
+
+ if( nBox < nBoxes-1 || (nParentLineWidth==0 && nLine==0) )
+ {
+ nCPos += (USHORT)GetBoxWidth( pBox );
+ SwWriteTableCol *pCol = new SwWriteTableCol( nCPos );
+
+ USHORT nCol;
+ if( aCols.Seek_Entry( pCol, &nCol ) )
+ delete pCol;
+ else
+ aCols.Insert( pCol );
+
+ if( nBox==nBoxes-1 )
+ {
+ ASSERT( nLine==0 && nParentLineWidth==0,
+ "Jetzt wird die Parent-Breite plattgemacht!" );
+ nParentLineWidth = nCPos-nStartCPos;
+ }
+ }
+ else
+ {
+#ifndef PRODUCT
+ USHORT nCheckPos = nCPos + (USHORT)GetBoxWidth( pBox );
+ if( !nEndCPos )
+ {
+ nEndCPos = nCheckPos;
+ }
+ else
+ {
+ ASSERT( SwWriteTableCol(nCheckPos) ==
+ SwWriteTableCol(nEndCPos),
+ "Zelle enthaelt unterschiedlich breite Zeilen" );
+ }
+#endif
+ nCPos = nStartCPos + nParentLineWidth;
+#ifndef PRODUCT
+ SwWriteTableCol aCol( nStartCPos + nParentLineWidth );
+ ASSERT( aCols.Seek_Entry(&aCol),
+ "Parent-Zelle nicht gefunden" );
+ ASSERT( SwWriteTableCol(nCheckPos) ==
+ SwWriteTableCol(nCPos),
+ "Breite der Zellen stimmt nicht mit Parent ueberein" );
+#endif
+ }
+
+ if( ShouldExpandSub( pBox, bSubExpanded, nDepth ) )
+ {
+ CollectTableRowsCols( nOldRPos, nOldCPos,
+ nRPos - nOldRPos,
+ nCPos - nOldCPos,
+ pBox->GetTabLines(),
+ nDepth-1 );
+ bSubExpanded = TRUE;
+ }
+ }
+ }
+}
+
+
+void SwWriteTable::FillTableRowsCols( long nStartRPos, USHORT nStartRow,
+ USHORT nStartCPos, USHORT nStartCol,
+ long nParentLineHeight,
+ USHORT nParentLineWidth,
+ const SwTableLines& rLines,
+ const SvxBrushItem* pParentBrush,
+ USHORT nDepth )
+{
+ USHORT nLines = rLines.Count();
+ BOOL bSubExpanded = FALSE;
+
+ // Festlegen der Umrandung
+ long nRPos = nStartRPos;
+ USHORT nRow = nStartRow;
+
+ for( USHORT nLine = 0; nLine < nLines; nLine++ )
+ {
+ const SwTableLine *pLine = rLines[nLine];
+
+ // Position der letzten ueberdeckten Zeile ermitteln
+ long nOldRPos = nRPos;
+ if( nLine < nLines-1 || nParentLineHeight==0 )
+ nRPos += GetLineHeight( pLine );
+ else
+ nRPos = nStartRPos + nParentLineHeight;
+
+ // Und ihren Index
+ USHORT nOldRow = nRow;
+ SwWriteTableRow aRow( nRPos );
+ BOOL bFound = aRows.Seek_Entry( &aRow, &nRow );
+ ASSERT( bFound, "Wo ist die Zeile geblieben?" );
+
+ SwWriteTableRow *pRow = aRows[nOldRow];
+ SwWriteTableRow *pEndRow = aRows[nRow];
+ if( nLine==0 && nParentLineHeight==0 )
+ nHeadEndRow = nRow;
+
+ const SwTableBoxes& rBoxes = pLine->GetTabBoxes();
+
+ const SwFrmFmt *pLineFrmFmt = pLine->GetFrmFmt();
+ const SfxPoolItem* pItem;
+ const SfxItemSet& rItemSet = pLineFrmFmt->GetAttrSet();
+
+ long nHeight = 0;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_FRM_SIZE, TRUE, &pItem ))
+ nHeight = ((SwFmtFrmSize*)pItem)->GetHeight();
+
+
+ const SvxBrushItem *pBrushItem, *pLineBrush = pParentBrush;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BACKGROUND, FALSE,
+ &pItem ) )
+ {
+ pLineBrush = (const SvxBrushItem *)pItem;
+
+ // Wenn die Zeile die gesamte Tabelle umspannt, koennen
+ // Wir den Hintergrund an der Zeile ausgeben. Sonst muessen
+ // wir in an den Zelle ausgeben.
+ BOOL bOutAtRow = !nParentLineWidth;
+ if( !bOutAtRow && nStartCPos==0 )
+ {
+ USHORT nEndCol;
+ SwWriteTableCol aCol( nParentLineWidth );
+ bOutAtRow = aCols.Seek_Entry(&aCol,&nEndCol) &&
+ nEndCol == aCols.Count()-1;
+ }
+ if( bOutAtRow )
+ {
+ pRow->SetBackground( pLineBrush );
+ pBrushItem = 0;
+ }
+ else
+ pBrushItem = pLineBrush;
+ }
+ else
+ {
+ pRow->SetBackground( pLineBrush );
+ pBrushItem = 0;
+ }
+
+ USHORT nBoxes = rBoxes.Count();
+ USHORT nCPos = nStartCPos;
+ USHORT nCol = nStartCol;
+
+ for( USHORT nBox=0; nBox<nBoxes; nBox++ )
+ {
+ const SwTableBox *pBox = rBoxes[nBox];
+
+ // Position der letzten ueberdeckten Spalte ermitteln
+ USHORT nOldCPos = nCPos;
+ if( nBox < nBoxes-1 || (nParentLineWidth==0 && nLine==0) )
+ {
+ nCPos += (USHORT)GetBoxWidth( pBox );
+ if( nBox==nBoxes-1 )
+ nParentLineWidth = nCPos - nStartCPos;
+ }
+ else
+ nCPos = nStartCPos + nParentLineWidth;
+
+ // Und ihren Index
+ USHORT nOldCol = nCol;
+ SwWriteTableCol aCol( nCPos );
+ BOOL bFound = aCols.Seek_Entry( &aCol, &nCol );
+ ASSERT( bFound, "Wo ist die Spalte geblieben?" );
+
+ if( !ShouldExpandSub( pBox, bSubExpanded, nDepth ) )
+ {
+ USHORT nRowSpan = nRow - nOldRow + 1;
+ USHORT nColSpan = nCol - nOldCol + 1;
+ pRow->AddCell( pBox, nOldRow, nOldCol,
+ nRowSpan, nColSpan, nHeight,
+ pBrushItem );
+ nHeight = 0; // Die Hoehe braucht nur einmal geschieben werden
+
+ if( pBox->GetSttNd() )
+ {
+ // Wegen OS/2 schon hier, sonst gibt es einen
+ // Optimierungs-Fehler!!!!
+ SwWriteTableCol *pCol = aCols[nOldCol];
+
+ USHORT nTopBorder = USHRT_MAX, nBottomBorder = USHRT_MAX;
+ USHORT nBorderMask = MergeBoxBorders( pBox, nOldRow, nOldCol,
+ nRowSpan, nColSpan,
+ nTopBorder,
+ nBottomBorder );
+
+ if( !(nBorderMask & 4) )
+ pCol->bLeftBorder = FALSE;
+
+ pCol = aCols[nCol];
+ if( !(nBorderMask & 8) )
+ pCol->bRightBorder = FALSE;
+
+ if( !(nBorderMask & 1) )
+ pRow->bTopBorder = FALSE;
+ else if( !pRow->nTopBorder || nTopBorder < pRow->nTopBorder )
+ pRow->nTopBorder = nTopBorder;
+
+ if( !(nBorderMask & 2) )
+ pEndRow->bBottomBorder = FALSE;
+ else if( !pEndRow->nBottomBorder ||
+ nBottomBorder < pEndRow->nBottomBorder )
+ pEndRow->nBottomBorder = nBottomBorder;
+ }
+ else
+ {
+ aCols[nOldCol]->bLeftBorder = FALSE;
+ aCols[nCol]->bRightBorder = FALSE;
+ pRow->bTopBorder = FALSE;
+ pEndRow->bBottomBorder = FALSE;
+ }
+ }
+ else
+ {
+ FillTableRowsCols( nOldRPos, nOldRow, nOldCPos, nOldCol,
+ nRPos-nOldRPos, nCPos-nOldCPos,
+ pBox->GetTabLines(),
+ pLineBrush, nDepth-1 );
+ bSubExpanded = TRUE;
+ }
+
+ nCol++; // Die naechste Zelle faengt in der nachten Spalte an
+ }
+
+ nRow++;
+ }
+}
+
+SwWriteTable::SwWriteTable( const SwTableLines& rLines, long nWidth,
+ USHORT nBWidth, BOOL bRel, USHORT nMaxDepth,
+ USHORT nLSub, USHORT nRSub )
+ : nBorderColor( (UINT32)-1 ),
+ nBorder( 0 ),
+ nInnerBorder( 0 ),
+ nCellPadding( 0 ),
+ nCellSpacing( 0 ),
+ nTabWidth( nWidth ),
+ nBaseWidth( nBWidth ),
+ nLeftSub( nLSub ), nRightSub( nRSub ),
+ bRelWidths( bRel ),
+ bUseLayoutHeights( TRUE ),
+#ifndef PRODUCT
+ bGetLineHeightCalled( FALSE ),
+#endif
+ nHeadEndRow( USHRT_MAX ),
+ bColsOption( FALSE ),
+ bColTags( TRUE ),
+ bLayoutExport( FALSE ),
+ bCollectBorderWidth( TRUE )
+{
+ USHORT nParentWidth = nBaseWidth + nLeftSub + nRightSub;
+
+ // Erstmal die Tabellen-Struktur festlegen. Hinter der Tabelle ist in
+ // jedem Fall eine Spalte zu Ende
+ SwWriteTableCol *pCol = new SwWriteTableCol( nParentWidth );
+ aCols.Insert( pCol );
+ CollectTableRowsCols( 0, 0, 0, nParentWidth, rLines, nMaxDepth - 1 );
+
+ // Und jetzt mit leben fuellen
+ FillTableRowsCols( 0, 0, 0, 0, 0, nParentWidth, rLines, 0, nMaxDepth - 1 );
+
+ // Einige Twip-Werte an Pixel-Grenzen anpassen
+ if( !nBorder )
+ nBorder = nInnerBorder;
+}
+
+
+
+SwWriteTable::SwWriteTable( const SwHTMLTableLayout *pLayoutInfo )
+ : nBorderColor( (UINT32)-1 ),
+ nBorder( 0 ),
+ nInnerBorder( 0 ),
+ nCellPadding( 0 ),
+ nCellSpacing( 0 ),
+ nTabWidth( pLayoutInfo->GetWidthOption() ),
+ nBaseWidth( pLayoutInfo->GetWidthOption() ),
+ nLeftSub( 0 ), nRightSub( 0 ),
+ bRelWidths( pLayoutInfo->HasPrcWidthOption() ),
+ bUseLayoutHeights( FALSE ),
+#ifndef PRODUCT
+ bGetLineHeightCalled( FALSE ),
+#endif
+ nHeadEndRow( 0 ),
+ bColsOption( pLayoutInfo->HasColsOption() ),
+ bColTags( pLayoutInfo->HasColTags() ),
+ bLayoutExport( TRUE ),
+ bCollectBorderWidth( pLayoutInfo->HaveBordersChanged() )
+{
+ if( !bCollectBorderWidth )
+ {
+ nBorder = pLayoutInfo->GetBorder();
+ nCellPadding = pLayoutInfo->GetCellPadding();
+ nCellSpacing = pLayoutInfo->GetCellSpacing();
+ }
+
+ USHORT nRow, nCol;
+ USHORT nCols = pLayoutInfo->GetColCount();
+ USHORT nRows = pLayoutInfo->GetRowCount();
+
+ // Erstmal die Tabellen-Struktur festlegen.
+ for( nCol=0; nCol<nCols; nCol++ )
+ {
+ SwWriteTableCol *pCol =
+ new SwWriteTableCol( (nCol+1)*COL_DFLT_WIDTH );
+
+ if( bColTags )
+ {
+ const SwHTMLTableLayoutColumn *pLayoutCol =
+ pLayoutInfo->GetColumn( nCol );
+ pCol->SetWidthOpt( pLayoutCol->GetWidthOption(),
+ pLayoutCol->IsRelWidthOption() );
+ }
+
+ aCols.Insert( pCol );
+ }
+
+ for( nRow=0; nRow<nRows; nRow++ )
+ {
+ SwWriteTableRow *pRow =
+ new SwWriteTableRow( (nRow+1)*ROW_DFLT_HEIGHT );
+ pRow->nTopBorder = 0;
+ pRow->nBottomBorder = 0;
+ aRows.Insert( pRow );
+ }
+
+ // Und jetzt mit leben fuellen
+ for( nRow=0; nRow<nRows; nRow++ )
+ {
+ SwWriteTableRow *pRow = aRows[nRow];
+
+ BOOL bHeightExported = FALSE;
+ for( nCol=0; nCol<nCols; nCol++ )
+ {
+ const SwHTMLTableLayoutCell *pLayoutCell =
+ pLayoutInfo->GetCell( nRow, nCol );
+
+ const SwHTMLTableLayoutCnts *pLayoutCnts =
+ pLayoutCell->GetContents();
+
+ // Beginnt die Zelle eigentlich eine Zeile weiter oben oder
+ // weiter vorne?
+ if( ( nRow>0 && pLayoutCnts == pLayoutInfo->GetCell(nRow-1,nCol)
+ ->GetContents() ) ||
+ ( nCol>0 && pLayoutCnts == pLayoutInfo->GetCell(nRow,nCol-1)
+ ->GetContents() ) )
+ {
+ continue;
+ }
+
+ USHORT nRowSpan = pLayoutCell->GetRowSpan();
+ USHORT nColSpan = pLayoutCell->GetColSpan();
+ const SwTableBox *pBox = pLayoutCnts->GetTableBox();
+ ASSERT( pBox,
+ "Tabelle in Tabelle kann nicht ueber Layout exportiert werden" );
+
+ long nHeight = bHeightExported ? 0 : GetLineHeight( pBox );
+ const SvxBrushItem *pBrushItem = GetLineBrush( pBox, pRow );
+
+ SwWriteTableCell *pCell =
+ pRow->AddCell( pBox, nRow, nCol, nRowSpan, nColSpan,
+ nHeight, pBrushItem );
+ pCell->SetWidthOpt( pLayoutCell->GetWidthOption(),
+ pLayoutCell->IsPrcWidthOption() );
+
+ USHORT nTopBorder = USHRT_MAX, nBottomBorder = USHRT_MAX;
+ USHORT nBorderMask =
+ MergeBoxBorders( pBox, nRow, nCol, nRowSpan, nColSpan,
+ nTopBorder, nBottomBorder );
+
+ SwWriteTableCol *pCol = aCols[nCol];
+ if( !(nBorderMask & 4) )
+ pCol->bLeftBorder = FALSE;
+
+ pCol = aCols[nCol+nColSpan-1];
+ if( !(nBorderMask & 8) )
+ pCol->bRightBorder = FALSE;
+
+ if( !(nBorderMask & 1) )
+ pRow->bTopBorder = FALSE;
+
+ SwWriteTableRow *pEndRow = aRows[nRow+nRowSpan-1];
+ if( !(nBorderMask & 2) )
+ pEndRow->bBottomBorder = FALSE;
+
+ // Die Hoehe braucht nur einmal geschieben werden
+ if( nHeight )
+ bHeightExported = TRUE;
+ }
+ }
+
+ // Einige Twip-Werte an Pixel-Grenzen anpassen
+ if( bCollectBorderWidth && !nBorder )
+ nBorder = nInnerBorder;
+}
+
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/writer/wrtswtbl.cxx,v 1.1.1.1 2000-09-18 17:14:57 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.3 2000/09/18 16:04:55 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.2 2000/03/03 15:22:02 os
+ StarView remainders removed
+
+ Revision 1.1 1999/10/29 17:38:03 jp
+ class for build a '2D-Table' from a SwTable
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/ww1/fltshell.cxx b/sw/source/filter/ww1/fltshell.cxx
new file mode 100644
index 000000000000..3f18bc6ba1fe
--- /dev/null
+++ b/sw/source/filter/ww1/fltshell.cxx
@@ -0,0 +1,2357 @@
+/*************************************************************************
+ *
+ * $RCSfile: fltshell.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#include <ctype.h>
+#include <stdio.h> // sprintf
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SYSTEM_HXX //autogen
+#include <vcl/system.hxx>
+#endif
+#ifndef _GRAPH_HXX //autogen
+#include <vcl/graph.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SVX_IMPGRF_HXX //autogen
+#include <svx/impgrf.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_CMAPITEM_HXX //autogen
+#include <svx/cmapitem.hxx>
+#endif
+#ifndef _SVX_ITEM_HXX //autogen
+#include <svx/cntritem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _UNOTOOLS_CHARCLASS_HXX
+#include <unotools/charclass.hxx>
+#endif
+
+#ifndef _TXTFTN_HXX //autogen
+#include <txtftn.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTFTN_HXX //autogen
+#include <fmtftn.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTRFMRK_HXX //autogen
+#include <fmtrfmrk.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTFLD_HXX //autogen
+#include <fmtfld.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _REDLINE_HXX
+#include <redline.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx> // RES_SETEXPFLD
+#endif
+#ifndef _CHARATR_HXX
+#include <charatr.hxx> // class SwFmtRefMark
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx> // class SwTableLines, ...
+#endif
+#ifndef _TOX_HXX
+#include <tox.hxx>
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx> // SwExpField
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx> // class SwSection
+#endif
+#ifndef _TBLSEL_HXX
+#include <tblsel.hxx> // class SwSelBoxes
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx> // class SwDocSh
+#endif
+#ifndef _FLTSHELL_HXX
+#include <fltshell.hxx>
+#endif
+
+#define MAX_FIELDLEN 64000
+
+SV_IMPL_PTRARR(SwFltControlStackEntries, SwFltStackEntryPtr)
+
+static SwCntntNode* GetCntntNode(SwDoc* pDoc, SwNodeIndex& rIdx, BOOL bNext)
+{
+ SwCntntNode* pCNd = pDoc->GetNodes()[ rIdx ]->GetCntntNode();
+ if(!pCNd && 0 == (pCNd = bNext ? pDoc->GetNodes().GoNext(&rIdx)
+ : pDoc->GetNodes().GoPrevious(&rIdx)))
+ {
+ pCNd = bNext ? pDoc->GetNodes().GoPrevious(&rIdx)
+ : pDoc->GetNodes().GoNext(&rIdx);
+ ASSERT(pCNd, "kein ContentNode gefunden");
+ }
+ return pCNd;
+}
+
+// ------ Stack-Eintrag fuer die gesamten - Attribute vom Text -----------
+SwFltStackEntry::SwFltStackEntry(const SwPosition& rStartPos, SfxPoolItem* pHt ) :
+ nMkNode(rStartPos.nNode, -1),
+ nPtNode(nMkNode)
+{
+ // Anfang vom Bereich merken
+ nMkCntnt = rStartPos.nContent.GetIndex();
+ pAttr = pHt; // speicher eine Kopie vom Attribut
+ bOld = FALSE; // used for marking Attributes *before* skipping field results
+ bLocked = TRUE; // locke das Attribut --> darf erst
+ bCopied = FALSE; // gesetzt werden, wenn es wieder geunlocked ist
+}
+
+SwFltStackEntry::SwFltStackEntry(const SwFltStackEntry& rEntry) :
+ nMkNode(rEntry.nMkNode),
+ nPtNode(rEntry.nPtNode)
+{
+ pAttr = rEntry.pAttr->Clone();
+ nMkCntnt= rEntry.nMkCntnt;
+ bOld = rEntry.bOld;
+ bLocked = bCopied = TRUE; // when rEntry were NOT bLocked we would never have been called
+}
+
+
+SwFltStackEntry::~SwFltStackEntry()
+{
+ // Attribut kam zwar als Pointer, wird aber hier geloescht
+ if (pAttr)
+ delete pAttr;
+}
+
+void SwFltStackEntry::SetEndPos(const SwPosition& rEndPos)
+{
+ // Attribut freigeben und das Ende merken.
+ // Alles mit USHORT's, weil sonst beim Einfuegen von neuem Text an der
+ // Cursor-Position auch der Bereich vom Attribut weiter
+ // verschoben wird.
+ // Das ist aber nicht das gewollte!
+ bLocked = FALSE; // freigeben und das ENDE merken
+ nPtNode = rEndPos.nNode.GetIndex()-1;
+ nPtCntnt = rEndPos.nContent.GetIndex();
+}
+
+BOOL SwFltStackEntry::MakeRegion(SwDoc* pDoc, SwPaM& rRegion, BOOL bCheck )
+{
+ // wird ueberhaupt ein Bereich umspannt ??
+ // - ist kein Bereich, dann nicht returnen wenn am Anfang vom Absatz
+ // - Felder aussortieren, koennen keinen Bereich haben !!
+#ifdef DEBUG
+ USHORT nWhich = pAttr->Which();
+#endif
+ if (nMkNode.GetIndex() == nPtNode.GetIndex()
+ && nMkCntnt == nPtCntnt
+ && nPtCntnt
+ && RES_TXTATR_FIELD != pAttr->Which())
+ return FALSE;
+
+ // !!! Die Content-Indizies beziehen sich immer auf den Node !!!
+ rRegion.GetPoint()->nNode = nMkNode.GetIndex() + 1;
+ SwCntntNode* pCNd = GetCntntNode(pDoc, rRegion.GetPoint()->nNode, TRUE);
+ rRegion.GetPoint()->nContent.Assign(pCNd, nMkCntnt);
+ rRegion.SetMark();
+ if( nMkNode != nPtNode )
+ {
+ rRegion.GetPoint()->nNode = nPtNode.GetIndex() + 1;
+ pCNd = GetCntntNode(pDoc, rRegion.GetPoint()->nNode, FALSE);
+ }
+ rRegion.GetPoint()->nContent.Assign(pCNd, nPtCntnt);
+#ifdef DEBUG
+ ASSERT( CheckNodesRange( rRegion.Start()->nNode,
+ rRegion.End()->nNode, TRUE ),
+ "Attribut oder AEhnliches ueber Bereichs-Grenzen" );
+#endif
+ if( bCheck )
+ return CheckNodesRange( rRegion.Start()->nNode,
+ rRegion.End()->nNode, TRUE );
+ else
+ return TRUE;
+}
+
+
+SwFltControlStack::SwFltControlStack(SwDoc* pDo, ULONG nFieldFl) :
+ SwFltControlStackEntries(10, 5),
+ pDoc(pDo),
+ nFieldFlags(nFieldFl),
+ bIsEndStack(FALSE)
+{
+}
+
+
+SwFltControlStack::~SwFltControlStack()
+{
+ ASSERT(!Count(), "noch Attribute auf dem Stack");
+}
+
+// MoveAttrs() ist fuer folgendes Problem:
+// Wenn ueber den Stack ein Feld wie z.B. "Variable setzen" gesetzt wird,
+// verschiebt sich der Text um ein \xff - Zeichen, und alle folgenden
+// Attribute stimmen in ihrer Position nicht mehr.
+// Dann muss MoveAttrs() nach dem Setzen des Attributes ins Doc gerufen werden,
+// so dass alle Attribut-Positionen,
+// die im selben Absatz weiter hinten stehen, um 1 Zeichen weiter
+// nach rechts verschoben werden.
+void SwFltControlStack::MoveAttrs( const SwPosition& rPos )
+{
+ USHORT nCnt = Count();
+ SwFltStackEntry* pEntry;
+ ULONG nPosNd = rPos.nNode.GetIndex();
+ USHORT nPosCt = rPos.nContent.GetIndex() - 1;
+
+ for (USHORT i=0; i < nCnt; i++){
+ pEntry = (*this)[ i ];
+ if(( pEntry->nMkNode.GetIndex() + 1 == nPosNd )
+ &&( pEntry->nMkCntnt >= nPosCt )){
+ pEntry->nMkCntnt++;
+ ASSERT( pEntry->nMkCntnt
+ <= pDoc->GetNodes()[nPosNd]->GetCntntNode()->Len(),
+ "Attribut-Anfang hinter Zeilenende" );
+ }
+ if(( pEntry->nPtNode.GetIndex() + 1 == nPosNd )
+ &&( pEntry->nPtCntnt >= nPosCt )){
+ pEntry->nPtCntnt++;
+ ASSERT( pEntry->nPtCntnt
+ <= pDoc->GetNodes()[nPosNd]->GetCntntNode()->Len(),
+ "Attribut-Ende hinter Zeilenende" );
+ }
+ }
+}
+
+
+
+// all attributes that are on rPos will but changed so that their Point or their
+// Mark (whichever had been on rPos) will be set to the next node
+void SwFltControlStack::MoveAttrsToNextNode( const SwNodeIndex& rNdIdx )
+{
+ USHORT nCnt = Count();
+ SwFltStackEntry* pEntry;
+
+ for (USHORT i=0; i < nCnt; i++)
+ {
+ pEntry = (*this)[ i ];
+ if( ( pEntry->nMkNode == rNdIdx ) )
+ pEntry->nMkNode++;
+
+ if( ( pEntry->nPtNode == rNdIdx ) )
+ pEntry->nPtNode++;
+ }
+}
+
+
+void SwFltControlStack::MarkAllAttrsOld()
+{
+ USHORT nCnt = Count();
+ for (USHORT i=0; i < nCnt; i++)
+ (*this)[ i ]->bOld = TRUE;
+}
+
+
+void SwFltControlStack::NewAttr(const SwPosition& rPos, const SfxPoolItem & rAttr )
+{
+ SwFltStackEntry *pTmp = new SwFltStackEntry(rPos, rAttr.Clone() );
+ register USHORT nWhich = pTmp->pAttr->Which();
+ SetAttr(rPos, nWhich);// Ende von evtl. gleichen Attributen auf dem Stack
+ // Setzen, damit sich die Attribute nicht auf
+ // dem Stack haeufen
+ Insert(pTmp, Count());
+}
+
+// SwFltControlStack::StealAttr() loescht Attribute des angegebenen Typs vom Stack.
+// Als nAttrId sind erlaubt: 0 fuer alle, oder ein spezieller Typ.
+// Damit erscheinen sie nicht in der Doc-Struktur. Dabei werden nur die
+// Attribute entfernt, die im selben Absatz wie pPos stehen.
+// Wird fuer Grafik-Apos -> Grafiken benutzt.
+void SwFltControlStack::StealAttr(const SwPosition* pPos, USHORT nAttrId /* = 0 */)
+{
+ USHORT nCnt = Count();
+
+ register SwFltStackEntry* pEntry;
+
+ while (nCnt)
+ {
+ nCnt --;
+ pEntry = (*this)[ nCnt ];
+ if (pEntry->nPtNode.GetIndex()+1 == pPos->nNode.GetIndex() &&
+ (!nAttrId || nAttrId == pEntry->pAttr->Which()))
+ DeleteAndDestroy(nCnt); // loesche aus dem Stack
+ }
+}
+
+// SwFltControlStack::KillUnlockedAttr() loescht alle Attribute vom Stack,
+// welche punktuell auf pPos aufgespannt sind.
+// Damit erscheinen sie nicht in der Doc-Struktur.
+// Wird im WW Import benoetigt zum ignorieren der auf dem 0x0c Section-
+// Break-Symbol gesetzten Attribute.
+void SwFltControlStack::KillUnlockedAttrs(const SwPosition& pPos)
+{
+ SwNodeIndex aAktNode( pPos.nNode, -1 );
+ USHORT nAktIdx = pPos.nContent.GetIndex();
+
+ USHORT nCnt = Count();
+ register SwFltStackEntry* pEntry;
+ while( nCnt )
+ {
+ nCnt --;
+ pEntry = (*this)[ nCnt ];
+ if( !pEntry->bOld
+ && !pEntry->bLocked
+ && (pEntry->nMkNode == aAktNode)
+ && (pEntry->nMkCntnt == nAktIdx )
+ && (pEntry->nPtNode == aAktNode)
+ && (pEntry->nPtCntnt == nAktIdx ))
+ {
+ DeleteAndDestroy( nCnt ); // loesche aus dem Stack
+ }
+ }
+}
+
+// Alle gelockten Attribute freigeben (unlocken) und das Ende setzen,
+// alle anderen im Document setzen und wieder aus dem Stack loeschen
+// Returned, ob das gesuchte Attribut / die gesuchten Attribute
+// ueberhaupt auf dem Stack standen
+BOOL SwFltControlStack::SetAttr(const SwPosition& rPos, USHORT nAttrId,
+ BOOL bTstEnde, long nHand )
+{
+ ASSERT(!nAttrId ||
+ (POOLATTR_BEGIN <= nAttrId && POOLATTR_END > nAttrId) ||
+ (RES_FLTRATTR_BEGIN <= nAttrId && RES_FLTRATTR_END > nAttrId),
+ "Falsche Id fuers Attribut")
+
+ BOOL bFound = FALSE;
+ USHORT nCnt = Count();
+
+ SwFltStackEntry* pEntry;
+
+ for (USHORT i=0; i < nCnt; i++)
+ {
+ pEntry = (*this)[ i ];
+ if (pEntry->bLocked)
+ {
+ // setze das Ende vom Attribut
+ BOOL bF = FALSE;
+ if (!nAttrId ){
+ bF = TRUE;
+ }else if( nAttrId == pEntry->pAttr->Which()){
+ if( nAttrId != RES_FLTR_BOOKMARK ){ // Handle abfragen
+ bF = TRUE;
+ }else if( nHand == ((SwFltBookmark*)(pEntry->pAttr))->GetHandle() )
+ {
+ bF = TRUE;
+ }
+ }
+ if( bF ){
+ pEntry->SetEndPos(rPos);
+ bFound = TRUE;
+ }
+#if 0
+ if (!nAttrId || nAttrId == pEntry->pAttr->Which())
+ {
+ pEntry->SetEndPos(rPos);
+ bFound = TRUE;
+ }
+#endif
+ continue;
+ }
+
+ // ist die Endposition die Cursor-Position, dann noch nicht
+ // ins Dokument setzen, es muss noch Text folgen;
+ // ausser am Dokumentende. (Attribut-Expandierung !!)
+ // Beim Ende-Stack niemals ausser am DocEnde reinsetzen
+ if (bTstEnde)
+ {
+ if (bIsEndStack || pEntry->nPtNode.GetIndex()+1 ==
+ rPos.nNode.GetIndex())
+ continue;
+ }
+ SetAttrInDoc(rPos, pEntry);
+ DeleteAndDestroy(i); // loesche aus dem Stack
+ i--; nCnt--; // Danach rutschen alle folgenden nach unten
+ }
+ return bFound;
+}
+
+static void MakePoint(SwFltStackEntry* pEntry, SwDoc* pDoc, SwPaM& rRegion)
+{
+ // der Anker ist der Point vom Pam. Dieser wird beim Einfugen
+ // von Text usw. veraendert; darum wird er auf dem Stack
+ // gespeichert. Das Attribut muss nur noch im Format
+ // gesetzt werden.
+ rRegion.DeleteMark();
+ rRegion.GetPoint()->nNode = pEntry->nMkNode.GetIndex() + 1;
+ SwCntntNode* pCNd = GetCntntNode(pDoc, rRegion.GetPoint()->nNode, TRUE);
+ rRegion.GetPoint()->nContent.Assign(pCNd, pEntry->nMkCntnt);
+}
+
+static void MakeRegionOrPoint(SwFltStackEntry* pEntry, SwDoc* pDoc,
+ SwPaM& rRegion, BOOL bCheck )
+{
+ if (!pEntry->MakeRegion(pDoc, rRegion, bCheck ))
+ MakePoint(pEntry, pDoc, rRegion);
+}
+
+// MakeBookRegionOrPoint() ist wie MakeRegionOrPoint, aber die besonderen
+// Beschraenkungen von Bookmarks in Tabellen werden beachtet.
+// ( Anfang und Ende muessen in selber Zelle sein )
+static void MakeBookRegionOrPoint(SwFltStackEntry* pEntry, SwDoc* pDoc,
+ SwPaM& rRegion, BOOL bCheck )
+{
+ if (pEntry->MakeRegion(pDoc, rRegion, bCheck )){
+ const SwNodes& rNds = pDoc->GetNodes();
+// BOOL b1 = rNds[rRegion.GetPoint()->nNode]->FindTableNode() != 0;
+// const SwStartNode* p1 = rNds[rRegion.GetPoint()->nNode]->FindTableBoxStartNode();
+// const SwStartNode* p2 = rNds[rRegion.GetMark()->nNode]->FindTableBoxStartNode();
+ if( rNds[rRegion.GetPoint()->nNode]->FindTableBoxStartNode()
+ != rNds[rRegion.GetMark()->nNode]->FindTableBoxStartNode() ){
+ rRegion.Exchange(); // Ungueltiger Bereich
+ rRegion.DeleteMark(); // -> beide auf Mark
+ }
+ }else{
+ MakePoint(pEntry, pDoc, rRegion);
+ }
+}
+
+static void MakePosition(SwFltStackEntry* pEntry, SwDoc* pDoc, SwPosition& rPosi)
+{
+ rPosi.nNode = pEntry->nMkNode.GetIndex() + 1;
+ SwCntntNode* pCNd = GetCntntNode(pDoc, rPosi.nNode, TRUE);
+ rPosi.nContent.Assign(pCNd, pEntry->nMkCntnt);
+}
+
+#ifdef DEBUG
+extern FASTBOOL CheckNodesRange( const SwNodeIndex& rStt,
+ const SwNodeIndex& rEnd, FASTBOOL bChkSection );
+#endif
+
+// IterateNumrulePiece() sucht von rTmpStart bis rEnd den ersten
+// fuer Numrules gueltigen Bereich heraus.
+//
+// rNds sind die Doc-Nodes
+// rEnd ist Bereichs-Ende,
+// rTmpStart ist ReinRaus-Parameter: Anfang des zu untersuchenden Bereiches rein,
+// Anfang des gueltigen Bereichs raus
+// rTmpEnd ist raus-Parameter
+// Return-Bool ist TRUE fuer gueltigen Bereich
+static BOOL IterateNumrulePiece( const SwNodeIndex& rEnd,
+ SwNodeIndex& rTmpStart, SwNodeIndex& rTmpEnd )
+{
+ while( ( rTmpStart <= rEnd )
+ && !( rTmpStart.GetNode().IsTxtNode() ) ) // suche gueltigen Anfang
+ rTmpStart++;
+
+ rTmpEnd = rTmpStart;
+ while( ( rTmpEnd <= rEnd )
+ && ( rTmpEnd.GetNode().IsTxtNode() ) ) // suche gueltiges Ende + 1
+ rTmpEnd++;
+
+ rTmpEnd--; // gueltiges Ende
+
+ return rTmpStart <= rTmpEnd; // gueltig ?
+}
+
+void SwFltControlStack::SetAttrInDoc(const SwPosition& rTmpPos, SwFltStackEntry* pEntry)
+{
+ SwPaM aRegion( rTmpPos );
+
+ switch(pEntry->pAttr->Which())
+ {
+ case RES_FLTR_ANCHOR:
+ {
+ MakePoint(pEntry, pDoc, aRegion);
+ SwFrmFmt* pFmt = ((SwFltAnchor*)pEntry->pAttr)->GetFrmFmt();
+ SwFmtAnchor aAnchor(pFmt->GetAnchor());
+ aAnchor.SetAnchor(aRegion.GetPoint());
+ pFmt->SetAttr(aAnchor);
+ // Damit die Frames bei Einfuegen in existierendes Doc
+ // erzeugt werden (erst nach Setzen des Ankers!):
+ if(pDoc->GetRootFrm()
+ && FLY_AT_CNTNT == pFmt->GetAnchor().GetAnchorId()){
+ pFmt->MakeFrms();
+ }
+ }
+ break;
+ case RES_FLTR_STYLESHEET:
+ break;
+ case RES_TXTATR_FIELD:
+ break;
+ case RES_TXTATR_TOXMARK:
+ break;
+ case RES_FLTR_NUMRULE: // Numrule 'reinsetzen
+ {
+ const String& rNumNm = ((SfxStringItem*)pEntry->pAttr)->GetValue();
+ SwNumRule* pRul = pDoc->FindNumRulePtr( rNumNm );
+ if( pRul )
+ {
+ if( pEntry->MakeRegion(pDoc, aRegion, TRUE))
+ {
+ SwNodeIndex aTmpStart( aRegion.Start()->nNode );
+ SwNodeIndex aTmpEnd( aTmpStart );
+ SwNodeIndex& rRegEndNd = aRegion.End()->nNode;
+ while( IterateNumrulePiece( rRegEndNd,
+ aTmpStart, aTmpEnd ) )
+ {
+ SwPaM aTmpPam( aTmpStart, aTmpEnd );
+ pDoc->SetNumRule( aTmpPam, *pRul );
+
+ aTmpStart = aTmpEnd; // Start fuer naechstes Teilstueck
+ aTmpStart++;
+ }
+ }
+ else
+ pDoc->DelNumRule( rNumNm );
+ }
+ }
+ break;
+ case RES_FLTR_NUMRULE_NUM:
+ break;
+ case RES_FLTR_BOOKMARK: // eigentlich nur fuer den Ende-Stack
+ {
+ SwFltBookmark* pB = (SwFltBookmark*)pEntry->pAttr;
+ const String& rName = ((SwFltBookmark*)pEntry->pAttr)->GetName();
+
+ if (IsFlagSet(BOOK_TO_VAR_REF))
+ {
+ if (pB->IsPgRef() && !pB->IsRef())
+ {
+ // XRefs und Bookmarks sind bereits geUpcased
+ MakeBookRegionOrPoint(pEntry, pDoc, aRegion, TRUE);
+ pDoc->Insert(aRegion, SwFmtRefMark(rName));
+ }
+ else if( !pB->IsOnlyRef() )
+ {
+ SwFieldType* pFT = pDoc->GetFldType(RES_SETEXPFLD, rName);
+ if (!pFT)
+ { // FieldType anlegen
+ SwSetExpFieldType aS(pDoc, rName, GSE_STRING);
+ pFT = pDoc->InsertFldType(aS);
+ }
+ SwSetExpField aFld((SwSetExpFieldType*)pFT,
+ pB->GetValSys());
+ aFld.SetSubType(SUB_INVISIBLE);
+ MakePoint(pEntry, pDoc, aRegion);
+ pDoc->Insert(aRegion, SwFmtFld(aFld));
+ MoveAttrs( *(aRegion.GetPoint()) );
+ }
+ }
+ if( !pB->IsOnlyRef() &&
+ ( !IsFlagSet(HYPO) || IsFlagSet(BOOK_AND_REF) ) )
+ {
+ MakeBookRegionOrPoint(pEntry, pDoc, aRegion, TRUE);
+ pDoc->MakeBookmark( aRegion, aEmptyKeyCode, rName, aEmptyStr);
+ }
+ }
+ break;
+ case RES_FLTR_TOX:
+ {
+ MakePoint(pEntry, pDoc, aRegion);
+
+ SwPosition* pPoint = aRegion.GetPoint();
+
+ SwFltTOX* pTOXAttr = (SwFltTOX*)pEntry->pAttr;
+
+ // test if on this node there had been a pagebreak BEFORE the
+ // tox attribut was put on the stack
+ SfxItemSet aBkSet( pDoc->GetAttrPool(), RES_PAGEDESC, RES_BREAK );
+ SwCntntNode* pNd = 0;
+ if( !pTOXAttr->HadBreakItem() || !pTOXAttr->HadPageDescItem() )
+ {
+ pNd = pPoint->nNode.GetNode().GetCntntNode();
+ if( pNd )
+ {
+ const SfxItemSet* pSet = pNd->GetpSwAttrSet();
+ const SfxPoolItem* pItem;
+ if( pSet )
+ {
+ if( !pTOXAttr->HadBreakItem()
+ && SFX_ITEM_SET == pSet->GetItemState( RES_BREAK, FALSE, &pItem ) )
+ {
+ aBkSet.Put( *pItem );
+ pNd->ResetAttr( RES_BREAK );
+ }
+ if( !pTOXAttr->HadPageDescItem()
+ && SFX_ITEM_SET == pSet->GetItemState( RES_PAGEDESC, FALSE, &pItem ) )
+ {
+ aBkSet.Put( *pItem );
+ pNd->ResetAttr( RES_PAGEDESC );
+ }
+ }
+ }
+ }
+
+ // now insert the TOX
+ const SwTOXBaseSection* pSect
+ = pDoc->InsertTableOf( *pPoint,
+ *pTOXAttr->GetBase(),
+ FALSE );
+ delete pTOXAttr->GetBase();
+
+
+ // set (aboved saved and removed) the break item at the node following the TOX
+ if( aBkSet.Count() )
+ pNd->SetAttr( aBkSet );
+
+
+ USHORT nCols = ((SwFltTOX*)pEntry->pAttr)->GetCols();
+ aRegion.Move( fnMoveBackward );
+ SwTOXBase* pBase = (SwTOXBase*)pDoc->GetCurTOX( *aRegion.GetPoint() );
+ if( pBase )
+ {
+ SfxItemSet aSet( pDoc->GetAttrPool(), RES_COL, RES_COL );
+ SwFmtCol aCol;
+ aCol.Init( nCols, 708, USHRT_MAX );
+ aSet.Put( aCol );
+ pBase->SetAttrSet( aSet );
+ }
+ }
+ break;
+ case RES_FLTR_SECTION:
+ MakePoint(pEntry, pDoc, aRegion); // bislang immer Point==Mark
+ pDoc->Insert(aRegion, *((SwFltSection*)pEntry->pAttr)->GetSection(),
+ 0, FALSE);
+ delete(((SwFltSection*)pEntry->pAttr)->GetSection());
+ break;
+ case RES_FLTR_REDLINE:
+ {
+ if (pEntry->MakeRegion(pDoc, aRegion, TRUE))
+ {
+ pDoc->SetRedlineMode( REDLINE_ON
+ | REDLINE_SHOW_INSERT
+ | REDLINE_SHOW_DELETE );
+ SwFltRedline& rFltRedline = *((SwFltRedline*)pEntry->pAttr);
+
+ if( USHRT_MAX != rFltRedline.nAutorNoPrev )
+ {
+ SwRedlineData aData(rFltRedline.eTypePrev,
+ rFltRedline.nAutorNoPrev,
+ rFltRedline.aStampPrev,
+ aEmptyStr,
+ 0
+ );
+ pDoc->AppendRedline(new SwRedline(aData, aRegion));
+ }
+ SwRedlineData aData(rFltRedline.eType,
+ rFltRedline.nAutorNo,
+ rFltRedline.aStamp,
+ aEmptyStr,
+ 0
+ );
+ pDoc->AppendRedline( new SwRedline(aData, aRegion) );
+ pDoc->SetRedlineMode( REDLINE_NONE
+ | REDLINE_SHOW_INSERT
+ | REDLINE_SHOW_DELETE );
+ }
+ }
+ break;
+ default:
+ if (pEntry->MakeRegion(pDoc, aRegion, FALSE))
+ pDoc->Insert(aRegion, *pEntry->pAttr);
+ break;
+ }
+}
+
+SfxPoolItem* SwFltControlStack::GetFmtStackAttr(USHORT nWhich, USHORT * pPos)
+{
+ SwFltStackEntry* pEntry;
+ USHORT nSize = Count();
+
+ while (nSize)
+ {
+ // ist es das gesuchte Attribut ? (gueltig sind nur gelockte,
+ // also akt. gesetzte Attribute!!)
+ if ((pEntry = (*this)[ --nSize ])->bLocked &&
+ pEntry->pAttr->Which() == nWhich)
+ {
+ if (pPos)
+ *pPos = nSize;
+ return (SfxPoolItem*)pEntry->pAttr; // Ok, dann Ende
+ }
+ }
+ return 0;
+}
+
+const SfxPoolItem* SwFltControlStack::GetOpenStackAttr(const SwPosition& rPos, USHORT nWhich)
+{
+ SwFltStackEntry* pEntry;
+ USHORT nSize = Count();
+ SwNodeIndex aAktNode( rPos.nNode, -1 );
+ USHORT nAktIdx = rPos.nContent.GetIndex();
+
+ while (nSize)
+ {
+ // ist es das gesuchte Attribut ? (gueltig sind nur gelockte,
+ // also akt. gesetzte, noch offene Attribute!!)
+ pEntry = (*this)[ --nSize ];
+ if( pEntry->bLocked
+ && (pEntry->pAttr->Which() == nWhich)
+ && (pEntry->nMkNode == aAktNode)
+ && (pEntry->nMkCntnt == nAktIdx ))
+ {
+ return (SfxPoolItem*)pEntry->pAttr; // Ok, dann Ende
+ }
+ }
+ return 0;
+}
+
+const SfxPoolItem* SwFltControlStack::GetFmtAttr(const SwPosition& rPos, USHORT nWhich)
+{
+ SfxPoolItem* pHt = GetFmtStackAttr(nWhich);
+ if (pHt)
+ return (const SfxPoolItem*)pHt;
+
+ // im Stack ist das Attribut nicht vorhanden, also befrage das Dokument
+// SwCntntNode * pNd = rPaM.GetCntntNode();
+ SwCntntNode * pNd = pDoc->GetNodes()[ rPos.nNode ]->GetCntntNode();
+
+ if (!pNd) // kein ContentNode, dann das dflt. Attribut
+ return &pDoc->GetAttrPool().GetDefaultItem(nWhich);
+ return &pNd->GetAttr(nWhich);
+}
+
+BOOL SwFltControlStack::IsAttrOpen(USHORT nAttrId)
+{
+ USHORT nCnt = Count();
+
+ if (!nCnt) return FALSE;
+
+ SwFltStackEntry* pEntry;
+
+ for (USHORT i=0; i < nCnt; i++)
+ {
+ pEntry = (*this)[ i ];
+ if (pEntry->bLocked && nAttrId == pEntry->pAttr->Which())
+ return TRUE;
+ }
+ return FALSE;
+}
+
+//------ hier stehen die Methoden von SwFltAnchor -----------
+SwFltAnchor::SwFltAnchor(SwFrmFmt* pFmt) :
+ SfxPoolItem(RES_FLTR_ANCHOR), pFrmFmt(pFmt)
+{
+}
+
+SwFltAnchor::SwFltAnchor(const SwFltAnchor& rCpy) :
+ SfxPoolItem(RES_FLTR_ANCHOR), pFrmFmt(rCpy.pFrmFmt)
+{
+}
+
+int SwFltAnchor::operator==(const SfxPoolItem& rItem) const
+{
+ return pFrmFmt == ((SwFltAnchor&)rItem).pFrmFmt;
+}
+
+SfxPoolItem* __EXPORT SwFltAnchor::Clone(SfxItemPool*) const
+{
+ return new SwFltAnchor(*this);
+}
+
+//------ hier stehen die Methoden von SwFltRedline -----------
+int SwFltRedline::operator==(const SfxPoolItem& rItem) const
+{
+ return this == &rItem;
+}
+
+SfxPoolItem* SwFltRedline::Clone( SfxItemPool* ) const
+{
+ return new SwFltRedline(*this);
+}
+
+//------ hier stehen die Methoden von SwFltBookmark -----------
+SwFltBookmark::SwFltBookmark( const String& rNa, const String& rVa,
+ long nHand, BOOL bOnlyR )
+ : SfxPoolItem(RES_FLTR_BOOKMARK), nHandle(nHand), aName(rNa), aVal(rVa),
+ bOnlyRef(bOnlyR), bRef(FALSE), bPgRef(FALSE)
+{
+ // eSrc: CHARSET_DONTKNOW fuer keine UEbersetzung bei operator <<
+ // Upcase wird immer gemacht.
+ // bei XXXStack.NewAttr(...) wird nie eine UEbersetzung vorgenommen.
+ // ansonsten: uebergebener Src-Charset fuer aName
+ // im Filter eingestellter Src-Charset fuer aVal ( Text )
+}
+
+SwFltBookmark::SwFltBookmark(const SwFltBookmark& rCpy)
+ : SfxPoolItem(RES_FLTR_BOOKMARK),
+ nHandle(rCpy.nHandle),
+ aName(rCpy.aName),
+ aVal(rCpy.aVal),
+ bOnlyRef(rCpy.bOnlyRef),
+ bRef(rCpy.bRef),
+ bPgRef(rCpy.bPgRef)
+{
+}
+
+int SwFltBookmark::operator==(const SfxPoolItem& rItem) const
+{
+ return (aName == ((SwFltBookmark&)rItem).aName)
+ && (nHandle == ((SwFltBookmark&)rItem).nHandle);
+}
+
+SfxPoolItem* SwFltBookmark::Clone(SfxItemPool*) const
+{
+ return new SwFltBookmark(*this);
+}
+
+//------ hier stehen die Methoden von SwFltTOX -----------
+
+SwFltTOX::SwFltTOX(SwTOXBase* pBase, USHORT _nCols)
+ : SfxPoolItem(RES_FLTR_TOX), pTOXBase(pBase), nCols( _nCols ),
+ bHadBreakItem( FALSE ), bHadPageDescItem( FALSE )
+{
+}
+
+SwFltTOX::SwFltTOX(const SwFltTOX& rCpy)
+ : SfxPoolItem(RES_FLTR_TOX), pTOXBase(rCpy.pTOXBase), nCols( rCpy.nCols ),
+ bHadBreakItem( rCpy.bHadBreakItem ), bHadPageDescItem( rCpy.bHadPageDescItem )
+{
+}
+
+int SwFltTOX::operator==(const SfxPoolItem& rItem) const
+{
+ return pTOXBase == ((SwFltTOX&)rItem).pTOXBase;
+}
+
+SfxPoolItem* SwFltTOX::Clone(SfxItemPool*) const
+{
+ return new SwFltTOX(*this);
+}
+
+//------ hier stehen die Methoden von SwFltSwSection -----------
+
+SwFltSection::SwFltSection(SwSection *pSect) :
+ SfxPoolItem(RES_FLTR_SECTION), pSection(pSect)
+{
+}
+
+SwFltSection::SwFltSection(const SwFltSection& rCpy) :
+ SfxPoolItem(RES_FLTR_SECTION), pSection(rCpy.pSection)
+{
+}
+
+int SwFltSection::operator==(const SfxPoolItem& rItem) const
+{
+ return pSection == ((SwFltSection&)rItem).pSection;
+}
+
+SfxPoolItem* __EXPORT SwFltSection::Clone(SfxItemPool*) const
+{
+ return new SwFltSection(*this);
+}
+
+//------ hier stehen die Methoden von SwFltEndStack -----------
+
+// Bei Auftreten einer Referenz wird die entsprechende Textmarke als
+// RefMark statt als Bookmark behandelt
+
+void SwFltEndStack::SetBookRef( const String& rName, BOOL bPgRef)
+{
+ SfxPoolItem* pAttr;
+ USHORT nSize = Count();
+
+ while( nSize )
+ {
+ // ist es das gesuchte Attribut ?
+ pAttr = (*this)[ --nSize ]->pAttr;
+ if( (pAttr->Which() == RES_FLTR_BOOKMARK ) &&
+//JP 11.05.00 - UNICODE-FRAGE - reicht ein EqualsIgnoreCaseAscii oder
+// muß man das ueber die International machen?
+ ((SwFltBookmark*)pAttr)->GetName().EqualsIgnoreCaseAscii( rName ))
+ {
+ if (bPgRef)
+ ((SwFltBookmark*)pAttr)->SetPgRef();
+ else
+ ((SwFltBookmark*)pAttr)->SetRef();
+ break;
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////
+//
+// hier beginnt der von mdt erzeugte code. dieser ist eine shell auf
+// der writer-seite nach moeglichkeit bald fuer alle filter. die ganze
+// schwierigkeit, texte & formatattribute einzufuegen, die positionen
+// zu verwalten, styles & kopf/fuszzeilen etc.
+//
+
+//////////////////////////////////////////////////////////// SwFltShell
+SwFltShell::SwFltShell(SwDoc* pDoc, SwPaM& rPaM, BOOL bNew, ULONG nFieldFl)
+ : aStack(pDoc, nFieldFl),
+ aEndStack(pDoc, nFieldFl),
+ pCurrentPageDesc(0),
+ eSrcCharSet( RTL_TEXTENCODING_MS_1252 ),
+ nPageDescOffset(GetDoc().GetPageDescCnt()),
+ pPaM(new SwPaM( *(rPaM.GetPoint()))),
+ bNewDoc(bNew),
+ bStdPD(FALSE),
+ bProtect(FALSE),
+ nAktStyle(0),
+ pSavedPos(0),
+ eSubMode(None)
+{
+ memset( pColls, 0, sizeof( pColls ) );
+ pOutDoc = new SwFltOutDoc( *pDoc, pPaM, aStack, aEndStack );
+ pOut = pOutDoc;
+
+ if( !bNewDoc ){ // in ein Dokument einfuegen ?
+ // Da immer ganze Zeile eingelesen werden, muessen
+ // evtl. Zeilen eingefuegt / aufgebrochen werden
+ const SwPosition* pPos = pPaM->GetPoint();
+ const SwTxtNode* pSttNd = pPos->nNode.GetNode().GetTxtNode();
+ USHORT nCntPos = pPos->nContent.GetIndex();
+ if( nCntPos && pSttNd->GetTxt().Len() )
+ // EinfuegePos nicht in leerer Zeile
+ pDoc->SplitNode( *pPos ); // neue Zeile erzeugen
+ if( pSttNd->GetTxt().Len() ){ // EinfuegePos nicht am Ende der Zeile
+ pDoc->SplitNode( *pPos ); // neue Zeile
+ pPaM->Move( fnMoveBackward ); // gehe in leere Zeile
+ }
+
+ // verhinder das Einlesen von Tabellen in Fussnoten / Tabellen
+ ULONG nNd = pPos->nNode.GetIndex();
+ BOOL bReadNoTbl = 0 != pSttNd->FindTableNode() ||
+ ( nNd < pDoc->GetNodes().GetEndOfInserts().GetIndex() &&
+ pDoc->GetNodes().GetEndOfInserts().StartOfSectionIndex() < nNd );
+ if( bReadNoTbl )
+ pOutDoc->SetReadNoTable();
+ }
+ pCurrentPageDesc = &((SwPageDesc&)pDoc->GetPageDesc( 0 )); // Standard
+
+}
+
+SwFltShell::~SwFltShell()
+{
+ USHORT i;
+
+ if (eSubMode == Style)
+ EndStyle();
+ if( pOutDoc->IsInTable() ) // falls nicht ordentlich abgeschlossen
+ EndTable();
+ if( pOutDoc->IsInFly() )
+ EndFly();
+
+ GetDoc().SetUpdateExpFldStat();
+ GetDoc().SetInitDBFields(TRUE);
+ aStack.SetAttr(*pPaM->GetPoint(), 0, FALSE);
+ aStack.SetAttr(*pPaM->GetPoint(), 0, FALSE);
+ aEndStack.SetAttr(*pPaM->GetPoint(), 0, FALSE);
+ aEndStack.SetAttr(*pPaM->GetPoint(), 0, FALSE);
+ if( bProtect ){ // Das ganze Doc soll geschuetzt sein
+
+ SwDoc& rDoc = GetDoc();
+ // 1. SectionFmt und Section anlegen
+ SwSectionFmt* pSFmt = rDoc.MakeSectionFmt( 0 );
+ SwSection aS( CONTENT_SECTION, String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM("PMW-Protect") ));
+ aS.SetProtect( TRUE );
+ // 2. Start- und EndIdx suchen
+ const SwNode* pEndNd = &rDoc.GetNodes().GetEndOfContent();
+ SwNodeIndex aEndIdx( *pEndNd, -1L );
+ const SwStartNode* pSttNd = pEndNd->StartOfSectionNode();
+ SwNodeIndex aSttIdx( *pSttNd, 1L ); // +1 -> hinter StartNode
+ // Section einfuegen
+ // Section einfuegen
+ rDoc.GetNodes().InsertSection( aSttIdx, *pSFmt, aS, &aEndIdx, FALSE );
+
+ if( !IsFlagSet(SwFltControlStack::DONT_HARD_PROTECT) ){
+ SwDocShell* pDocSh = rDoc.GetDocShell();
+ if( pDocSh )
+ pDocSh->SetReadOnlyUI( TRUE );
+ }
+ }
+ // Pagedescriptoren am Dokument updaten (nur so werden auch die
+ // linken Seiten usw. eingestellt).
+
+ GetDoc().ChgPageDesc( 0, GetDoc().GetPageDesc( 0 )); // PageDesc "Standard"
+ for (i=nPageDescOffset;i<GetDoc().GetPageDescCnt();i++)
+ {
+ const SwPageDesc& rPD = GetDoc().GetPageDesc(i);
+ GetDoc().ChgPageDesc(i, rPD);
+ }
+
+ delete pPaM;
+ for (i=0; i<sizeof(pColls)/sizeof(*pColls); i++)
+ if( pColls[i] )
+ delete pColls[i];
+ delete pOutDoc;
+}
+
+SwFltShell& SwFltShell::operator << ( const String& rStr )
+{
+ ASSERT(eSubMode != Style, "char insert while in style-mode");
+ GetDoc().Insert( *pPaM, rStr );
+ return *this;
+}
+
+void SwFltShell::ConvertUStr( String& rInOut )
+{
+ GetAppCharClass().toUpper( rInOut );
+}
+void SwFltShell::ConvertLStr( String& rInOut )
+{
+ GetAppCharClass().toLower( rInOut );
+}
+
+// QuoteString() wandelt CRs abhaengig von nFieldIniFlags in '\n' oder "\0x0d"
+String SwFltShell::QuoteStr( const String& rIn )
+{
+ String sOut( rIn );
+ BOOL bAllowCr = aStack.IsFlagSet( SwFltControlStack::ALLOW_FLD_CR );
+
+ for( xub_StrLen n = 0; n < sOut.Len(); ++n )
+ {
+ switch( sOut.GetChar( n ) )
+ {
+ case 0x0a:
+ sOut.Erase( n, 1 ); // 0xd 0xa wird zu \n
+ break;
+
+ case 0x0b:
+ case 0x0c:
+ case 0x0d:
+ if( bAllowCr )
+ sOut.SetChar( n, '\n' );
+ break;
+ }
+ }
+ return sOut;
+}
+
+SwFltShell& SwFltShell::operator << ( const sal_Unicode c )
+{
+ ASSERT( eSubMode != Style, "char insert while in style-mode");
+ GetDoc().Insert( *pPaM, c );
+ return *this;
+}
+
+SwFltShell& SwFltShell::AddError( const sal_Char* pErr )
+{
+ String aName( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "ErrorTag" )));
+ SwFieldType* pFT = GetDoc().GetFldType( RES_SETEXPFLD, aName );
+ if( pFT == 0)
+ {
+ SwSetExpFieldType aS(&GetDoc(), aName, GSE_STRING);
+ pFT = GetDoc().InsertFldType(aS);
+ }
+ SwSetExpField aFld( (SwSetExpFieldType*)pFT,
+ String::CreateFromAscii( pErr ));
+ //, VVF_INVISIBLE
+ GetDoc().Insert(*pPaM, SwFmtFld(aFld));
+ return *this;
+}
+
+SwFltShell& SwFltShell::AddLinkedSection( const String& rFileName )
+{
+ String aStr( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "Ww1" )));
+ SwSection* pSection = new SwSection( FILE_LINK_SECTION,
+ GetDoc().GetUniqueSectionName( &aStr ));
+ pSection->SetLinkFileName( INetURLObject::RelToAbs( rFileName ) );
+ pSection->SetProtect( TRUE );
+ *this << SwFltSection(pSection);
+ EndItem( RES_FLTR_SECTION);
+ return *this;
+}
+
+SwFltShell& SwFltShell::operator << (Graphic& rGraphic)
+{
+ SwFlyFrmFmt* pFlyFmt = GetDoc().Insert( *pPaM, aEmptyStr, aEmptyStr,
+ &rGraphic); // embedded Grafik !!
+ return *this;
+}
+
+SwFltShell& SwFltShell::AddGraphic( const String& rPicName )
+{
+ if (0) // gelinkt?
+ {
+ SwFlyFrmFmt* pFlyFmt = GetDoc().Insert(*pPaM,
+ INetURLObject::RelToAbs( rPicName ), // Name der Grafik !!
+ aEmptyStr);
+ }
+ else
+ {
+ // embedded:
+ GraphicFilter* pFilter = ::GetGrfFilter();
+ Graphic aGraphic;
+ // one of: GFF_NOT GFF_BMP GFF_GIF GFF_JPG GFF_PCD GFF_PCX GFF_PNG
+ // GFF_TIF GFF_XBM GFF_DXF GFF_MET GFF_PCT GFF_SGF GFF_SVM GFF_WMF
+ // GFF_SGV GFF_XXX
+ INetURLObject aDir( URIHelper::SmartRelToAbs(rPicName) );
+ switch ( pFilter->ImportGraphic( aGraphic, aDir ))
+ {
+ case GRFILTER_OK:
+ *this << aGraphic;
+ break;
+
+ case GRFILTER_OPENERROR:
+ case GRFILTER_IOERROR:
+ case GRFILTER_FORMATERROR:
+ case GRFILTER_VERSIONERROR:
+ case GRFILTER_FILTERERROR:
+ case GRFILTER_ABORT:
+ case GRFILTER_TOOBIG:
+ default:
+ AddError( "picture import error" );
+ break;
+ }
+ }
+ return *this;
+}
+
+/*SwFltShell& SwFltShell::operator << (SwFltCharSet nCharSet)
+{
+ eSrcCharSet = nCharSet;
+ return *this;
+}*/
+
+SwFltShell& SwFltShell::SetStyle( USHORT nStyle )
+{
+#ifndef MAC
+ SwFltFormatCollection* p = pColls[ nStyle ];
+#else
+ SwFltFormatCollection* p = pColls[ nStyle ];
+#endif
+
+ if (p)
+ {
+ if( !pOutDoc->IsInTable() && nStyle != nAktStyle )
+ {
+ if( pColls[nAktStyle]->IsInFly() && pOutDoc->IsInFly() )
+ pOutDoc->EndFly();
+ if( p->IsInFly() )
+ p->BeginStyleFly( pOutDoc );
+ }
+ GetDoc().SetTxtFmtColl(*pPaM, p->GetColl());
+ nAktStyle = nStyle;
+ }
+ else
+ {
+ ASSERT( FALSE, "Ungueltiger SwFltStyleCode" );
+ }
+ return *this;
+}
+
+SwFltShell& SwFltShell::operator << (SwFltBookmark& aBook)
+{
+ ConvertUStr( aBook.aName );
+ aBook.aVal = QuoteStr(aBook.aVal);
+ aEndStack.NewAttr(*pPaM->GetPoint(), aBook);
+ return *this;
+}
+
+void SwFltShell::SetBookEnd(long nHandle)
+{
+ aEndStack.SetAttr( *pPaM->GetPoint(), RES_FLTR_BOOKMARK, TRUE, nHandle );
+}
+
+SwFltShell& SwFltShell::EndItem( USHORT nAttrId )
+{
+ switch( nAttrId )
+ {
+ case RES_FLTR_BOOKMARK:
+ ASSERT( FALSE, "Falscher Aufruf fuer Bookmark-Ende" );
+ break;
+
+ case RES_FLTR_TOX:
+ aEndStack.SetAttr(*pPaM->GetPoint(), nAttrId);
+ break;
+
+ default:
+ aStack.SetAttr(*pPaM->GetPoint(), nAttrId);
+ break;
+ }
+ return *this;
+}
+
+SwFltShell& SwFltShell::operator << (const SwField& rField)
+{
+ GetDoc().Insert(*pPaM, SwFmtFld(rField));
+ return *this;
+}
+
+/*virtual*/ SwFltOutBase& SwFltOutDoc::operator << (const SfxPoolItem& rItem)
+{
+ rStack.NewAttr(*pPaM->GetPoint(), rItem);
+ return *this;
+}
+
+SwFltShell& SwFltShell::operator << (const SwFltTOX& rItem)
+{
+ aEndStack.NewAttr(*pPaM->GetPoint(), rItem);
+ return *this;
+}
+
+/*virtual*/ SwFltOutBase& SwFltFormatCollection::operator <<
+ (const SfxPoolItem& rItem)
+{
+ pColl->SetAttr(rItem);
+ return *this;
+}
+
+
+#if 0
+SwFltShell& SwFltShell::operator >> (SfxPoolItem& rItem)
+{
+ //rItem = *GetFmtAttr(rItem.Which());
+#pragma message(__FILE__ "(?) : ^das waer schoen!")
+ //~ mdt: remove from stack if item begins here.
+ return *this;
+}
+#endif
+
+const SfxPoolItem& SwFltOutDoc::GetAttr(USHORT nWhich)
+{
+ return *rStack.GetFmtAttr(*pPaM->GetPoint(), nWhich);
+}
+
+const SfxPoolItem& SwFltFormatCollection::GetAttr(USHORT nWhich)
+{
+ return GetColl()->GetAttr(nWhich); // mit Parents
+}
+
+// GetNodeOrStyAttr holt Attribute fuer Toggle- und Modify-Attribute:
+// Bei Formatdefinitionen aus dem altuellen Style mit Parents
+// sonst aus dem Node mit Parents
+// Im Stack wird nicht nachgesehen
+
+const SfxPoolItem& SwFltOutDoc::GetNodeOrStyAttr(USHORT nWhich)
+{
+ SwCntntNode * pNd = GetDoc().GetNodes()[ pPaM->GetPoint()->nNode ]
+ ->GetCntntNode();
+ if (pNd) // ContentNode: Attribut mit Parent
+ return pNd->GetAttr(nWhich);
+ else // kein ContentNode, dann das dflt. Attribut
+ return GetDoc().GetAttrPool().GetDefaultItem(nWhich);
+}
+
+const SfxPoolItem& SwFltFormatCollection::GetNodeOrStyAttr(USHORT nWhich)
+{
+ return GetColl()->GetAttr(nWhich); // mit Parents
+}
+
+
+BOOL SwFltShell::GetWeightBold()
+{
+ return ((SvxWeightItem&)GetNodeOrStyAttr(RES_CHRATR_WEIGHT)).GetWeight()
+ != WEIGHT_NORMAL;
+}
+
+BOOL SwFltShell::GetPostureItalic()
+{
+ return ((SvxPostureItem&)GetNodeOrStyAttr(RES_CHRATR_POSTURE)).GetPosture()
+ != ITALIC_NONE;
+}
+
+BOOL SwFltShell::GetCrossedOut()
+{
+ return ((SvxCrossedOutItem&)GetNodeOrStyAttr(RES_CHRATR_CROSSEDOUT))
+ .GetStrikeout() != STRIKEOUT_NONE;
+}
+
+BOOL SwFltShell::GetContour()
+{
+ return ((SvxContourItem&)GetNodeOrStyAttr(RES_CHRATR_CONTOUR)).GetValue();
+}
+
+BOOL SwFltShell::GetCaseKapitaelchen()
+{
+ return ((SvxCaseMapItem&)GetNodeOrStyAttr(RES_CHRATR_CASEMAP))
+ .GetCaseMap() == SVX_CASEMAP_KAPITAELCHEN;
+}
+
+BOOL SwFltShell::GetCaseVersalien()
+{
+ return ((SvxCaseMapItem&)GetNodeOrStyAttr(RES_CHRATR_CASEMAP))
+ .GetCaseMap() == SVX_CASEMAP_VERSALIEN;
+}
+
+//-------------------------------------------------------------------------
+// Tabellen
+//-------------------------------------------------------------------------
+const SfxPoolItem& SwFltOutBase::GetCellAttr(USHORT nWhich)
+{
+ ASSERT(FALSE, "GetCellAttr ausserhalb von normalem Text");
+ return GetDoc().GetAttrPool().GetDefaultItem(nWhich);
+}
+
+BOOL SwFltOutBase::BeginTable()
+{
+ ASSERT(FALSE, "BeginTable ausserhalb von normalem Text");
+ return FALSE;
+}
+
+void SwFltOutBase::NextTableCell()
+{
+ ASSERT(FALSE, "NextTableCell ausserhalb von normalem Text");
+}
+
+void SwFltOutBase::NextTableRow()
+{
+ ASSERT(FALSE, "NextTableRow ausserhalb von normalem Text");
+}
+
+void SwFltOutBase::SetTableWidth(SwTwips nW)
+{
+ ASSERT(FALSE, "SetTableWidth ausserhalb von normalem Text");
+}
+
+void SwFltOutBase::SetTableOrient(SwHoriOrient eOri)
+{
+ ASSERT(FALSE, "SetTableOrient ausserhalb von normalem Text");
+}
+
+void SwFltOutBase::SetCellWidth(SwTwips nWidth, USHORT nCell)
+{
+ ASSERT(FALSE, "SetCellWidth ausserhalb von normalem Text");
+}
+
+void SwFltOutBase::SetCellHeight(SwTwips nH)
+{
+ ASSERT(FALSE, "SetCellHeight ausserhalb von normalem Text");
+}
+
+void SwFltOutBase::SetCellBorder(const SvxBoxItem& rFmtBox, USHORT nCell)
+{
+ ASSERT(FALSE, "SetCellBorder ausserhalb von normalem Text");
+}
+
+void SwFltOutBase::SetCellSpace(USHORT nSp)
+{
+ ASSERT(FALSE, "SetCellSpace ausserhalb von normalem Text");
+}
+
+void SwFltOutBase::DeleteCell(USHORT nCell)
+{
+ ASSERT(FALSE, "DeleteCell ausserhalb von normalem Text");
+}
+
+void SwFltOutBase::EndTable()
+{
+ ASSERT(FALSE, "EndTable ausserhalb von normalem Text");
+}
+
+/*virtual*/ BOOL SwFltOutDoc::IsInTable()
+{
+ return pTable != 0;
+};
+
+BOOL SwFltOutDoc::BeginTable()
+{
+ if(bReadNoTbl)
+ return FALSE;
+
+ if (pTable){
+ ASSERT(FALSE, "BeginTable in Table");
+ return FALSE;
+ }
+ // Alle Attribute schliessen, da sonst Attribute
+ // entstehen koennen, die in Flys reinragen
+ rStack.SetAttr( *pPaM->GetPoint(), 0, FALSE );
+ rEndStack.SetAttr( *pPaM->GetPoint(), 0, FALSE );
+
+// create table:
+ ASSERT(pTabSavedPos == NULL, "SwFltOutDoc");
+ pTabSavedPos = new SwPosition(*pPaM->GetPoint());
+ pTable = GetDoc().InsertTable(*pTabSavedPos, 1, 1, HORI_LEFT);
+ nTableWidth = 0;
+ ((SwTable*)pTable)->LockModify(); // Nichts automatisch anpassen!
+// set pam in 1. table cell
+ usTableX =
+ usTableY = 0;
+ SeekCell(usTableY, usTableX, TRUE);
+ return TRUE;
+}
+
+SwTableBox* SwFltOutDoc::GetBox(USHORT ny, USHORT nx /*= USHRT_MAX */)
+{
+ if(!pTable){
+ ASSERT(pTable, "GetBox ohne Tabelle");
+ return 0;
+ }
+ if( nx == USHRT_MAX ) // aktuelle Zelle
+ nx = usTableX;
+
+// get structs to table cells
+ const SwTableLines* pTableLines = &pTable->GetTabLines();
+ if(!pTableLines){
+ ASSERT(FALSE, "SwFltOutDoc:GetBox:pTableLines");
+ return 0;
+ }
+ if( ny >= pTableLines->Count() ){ // Notbremse
+ ASSERT( FALSE, "SwFltOutDoc:GetBox:ny >= Count()");
+ ny = pTableLines->Count() - 1;
+ }
+ SwTableLine* pTableLine = (*pTableLines)[ny];
+ if(!pTableLine){
+ ASSERT(FALSE, "SwFltOutDoc:GetBox:pTableLine");
+ return 0;
+ }
+ SwTableBoxes* pTableBoxes = &pTableLine->GetTabBoxes();
+ if(!pTableBoxes){
+ ASSERT(FALSE, "SwFltOutDoc:GetBox:pTableBoxes");
+ return 0;
+ }
+ if( nx >= pTableBoxes->Count() ){ // Notbremse
+ ASSERT(FALSE, "SwFltOutDoc:GetBox:nx >= Count()");
+ nx = pTableBoxes->Count() - 1;
+ }
+ SwTableBox* pTableBox = (*pTableBoxes)[nx];
+
+ ASSERT(pTableBox != 0, "SwFltOutDoc:GetBox:pTableBox");
+ return pTableBox;
+}
+
+void SwFltOutDoc::NextTableCell()
+{
+ if(!pTable){
+ ASSERT(pTable, "NextTableCell ohne Tabelle");
+ return;
+ }
+ const SwTableLines* pTableLines = &pTable->GetTabLines();
+ SwTableLine* pTableLine = (*pTableLines)[usTableY];
+ SwTableBoxes* pTableBoxes = &pTableLine->GetTabBoxes();
+ SwTableBox* pTableBox = (*pTableBoxes)[usTableX];
+ ASSERT(pTableBox != 0, "SwFltOutDoc:NextTableCell:pTableBox");
+ if(!pTableBox)
+ return;
+//#pragma message(__FILE__ "(?) : Sw's const problem")
+// insert cells:
+ if (++usTableX >= pTableBoxes->Count())
+ GetDoc().GetNodes().InsBoxen(
+ GetDoc().IsIdxInTbl(pPaM->GetPoint()->nNode),
+ pTableLine,
+ (SwTableBoxFmt*)pTableBox->GetFrmFmt(),
+ GetDoc().GetTxtCollFromPool(RES_POOLCOLL_STANDARD),
+ 0,
+ pTableBoxes->Count());
+ SeekCell(usTableY, usTableX, TRUE);
+ pTableBox = (*pTableBoxes)[usTableX];
+ ASSERT(pTableBox != 0, "SwFltOutDoc:pTableBox");
+ if(pTableBox)
+ (*pTableBoxes)[usTableX]->ClaimFrmFmt();
+}
+
+void SwFltOutDoc::NextTableRow()
+{
+ SwTableBox* pTableBox = GetBox(usTableY, 0);
+ if(pTableBox){
+// duplicate row:
+ SwSelBoxes aSelBoxes;
+ aSelBoxes.Insert( pTableBox );
+ GetDoc().InsertRow(aSelBoxes);
+// GetDoc().InsertRow(pTable->SelLineFromBox(pTableBox, aSelBoxes));
+#ifdef DEBUG
+ const SwTableLines* pTableLines = &pTable->GetTabLines();
+ SwTableLine* pTableLine = (*pTableLines)[usTableY+1];
+ SwTableBoxes* pTableBoxes = &pTableLine->GetTabBoxes();
+ USHORT nBx = pTableBoxes->Count();
+ SwTableBox* pTableBox = (*pTableBoxes)[0];
+ SwFrmFmt* pFmt = pTableBox->GetFrmFmt();
+
+ SwFmtFrmSize &rSz = ((SwFmtFrmSize&)pFmt->GetAttr(RES_FRM_SIZE));
+ SwTwips nW = rSz.GetWidth();
+#endif
+ usTableX = 0;
+ SeekCell(++usTableY, usTableX, TRUE);
+ GetDoc().SetTxtFmtColl(*pPaM,
+ GetDoc().GetTxtCollFromPool(RES_POOLCOLL_STANDARD));
+ }
+}
+
+void SwFltOutDoc::SetTableWidth(SwTwips nSwWidth)
+{
+ if(!pTable){
+ ASSERT(pTable, "SetTableWidth ohne Tabelle");
+ return;
+ }
+ ASSERT( nSwWidth > MINLAY, "Tabellenbreite <= MINLAY" );
+ if( nSwWidth != nTableWidth ){
+ if( nTableWidth ) // Nicht beim ersten Setzen
+ SplitTable();
+ pTable->GetFrmFmt()->SetAttr( SwFmtFrmSize(ATT_VAR_SIZE, nSwWidth));
+ nTableWidth = nSwWidth;
+ }
+}
+
+void SwFltOutDoc::SetTableOrient(SwHoriOrient eOri)
+{
+ if(!pTable){
+ ASSERT(pTable, "SetTableOrient ohne Tabelle");
+ return;
+ }
+ pTable->GetFrmFmt()->SetAttr( SwFmtHoriOrient( 0, eOri ));
+}
+
+void SwFltOutDoc::SetCellWidth(SwTwips nWidth, USHORT nCell /* = USHRT_MAX */ )
+{
+ if(!pTable){
+ ASSERT(pTable, "SetCellWidth ohne Tabelle");
+ return;
+ }
+ ASSERT( nWidth > MINLAY, "Tabellenzellenbreite <= MINLAY" );
+ if (nWidth < MINLAY)
+ nWidth = MINLAY;
+
+ SwTableBox* pTableBox = GetBox(usTableY, nCell);
+ if(pTableBox && pTableBox->GetFrmFmt() ){
+ SwFmtFrmSize aFmtFrmSize(ATT_FIX_SIZE);
+ aFmtFrmSize.SetWidth(nWidth);
+ pTableBox->GetFrmFmt()->SetAttr(aFmtFrmSize);
+ }
+}
+
+void SwFltOutDoc::SetCellHeight(SwTwips nHeight)
+{
+ if(!pTable){
+ ASSERT(pTable, "SetCellHeight ohne Tabelle");
+ return;
+ }
+
+ const SwTableLines* pTableLines = &pTable->GetTabLines();
+ SwTableLine* pTableLine = (*pTableLines)[usTableY];
+ SwFmtFrmSize aFmtFrmSize(ATT_MIN_SIZE, 0, 0);
+ if (nHeight < MINLAY)
+ nHeight = MINLAY;
+ aFmtFrmSize.SetHeight(nHeight);
+ pTableLine->GetFrmFmt()->SetAttr(aFmtFrmSize);
+}
+
+const SfxPoolItem& SwFltOutDoc::GetCellAttr(USHORT nWhich)
+{
+ if (!pTable){
+ ASSERT(pTable, "GetCellAttr ohne Table");
+ return GetDoc().GetAttrPool().GetDefaultItem(nWhich);
+ }
+
+ SwTableBox* pTableBox = GetBox(usTableY, usTableX);
+ if(!pTableBox)
+ return GetDoc().GetAttrPool().GetDefaultItem(nWhich);
+ return pTableBox->GetFrmFmt()->GetAttr( nWhich );
+}
+
+void SwFltOutDoc::SetCellBorder(const SvxBoxItem& rFmtBox,
+ USHORT nCell /* = USHRT_MAX */ )
+{
+ SwTableBox* pTableBox = GetBox(usTableY, nCell);
+ if(pTableBox)
+ pTableBox->GetFrmFmt()->SetAttr(rFmtBox);
+}
+
+// nicht aktiviert !!!
+void SwFltOutDoc::SetCellSpace(USHORT nDist)
+{
+ if(!pTable){
+ ASSERT(pTable, "SetCellSpace ohne Tabelle");
+ return;
+ }
+ SwTableBox* pTableBox = GetBox(usTableY, usTableX);
+ if(!pTableBox)
+ return;
+
+ SvxBoxItem aFmtBox( *((SvxBoxItem*)
+ &pTableBox->GetFrmFmt()->GetAttr( RES_BOX )));
+
+ // versteh ich nich, sven: if (!nDist) nDist = 18; // ca. 0.03 cm
+ if (nDist > 42) // max. 0.7 mm
+ nDist = 42;
+ else
+ if (nDist < MIN_BORDER_DIST)
+ nDist = MIN_BORDER_DIST;
+ aFmtBox.SetDistance(nDist);
+ pTableBox->GetFrmFmt()->SetAttr(aFmtBox);
+}
+
+void SwFltOutDoc::DeleteCell(USHORT nCell /* = USHRT_MAX */)
+{
+ SwTableBox* pTableBox = GetBox(usTableY, nCell);
+ if(pTableBox){
+ SwSelBoxes aSelBoxes;
+ aSelBoxes.Insert( pTableBox );
+ GetDoc().DeleteRowCol(aSelBoxes);
+ usTableX--;
+ }
+}
+
+void SwFltOutDoc::SplitTable()
+{
+ if(!pTable){
+ ASSERT(pTable, "SplitTable ohne Tabelle");
+ return;
+ }
+ SwTableBox* pAktBox = GetBox(usTableY, usTableX);
+ SwTableBox* pSplitBox = GetBox(usTableY - 1, 0);
+ BOOL bOk = 0 != GetDoc().GetNodes().SplitTable(
+ SwNodeIndex( *pSplitBox->GetSttNd() ), FALSE );
+ pTable = &pAktBox->GetSttNd()->FindTableNode()->GetTable();
+ usTableY = 0;
+// GetDoc().Insert(*pPaM, "SplitTable", GetSystemCharSet());
+}
+
+void SwFltOutDoc::EndTable()
+{
+ if (!pTable){
+ ASSERT(pTable, "EndTable ohne Table");
+ return;
+ }
+ // Alle Attribute schliessen, da sonst Attribute
+ // entstehen koennen, die in Flys reinragen
+ rStack.SetAttr( *pPaM->GetPoint(), 0, FALSE );
+ rEndStack.SetAttr( *pPaM->GetPoint(), 0, FALSE );
+
+ if (GetDoc().GetRootFrm()){
+ SwTableNode* pTableNode = GetDoc().IsIdxInTbl(
+ pPaM->GetPoint()->nNode);
+ pTableNode->DelFrms();
+ pTableNode->MakeFrms(&pPaM->GetPoint()->nNode);
+ }
+
+ *pPaM->GetPoint() = *pTabSavedPos; // restore Cursor
+ delete pTabSavedPos;
+ pTabSavedPos = 0;
+ ((SwTable*)pTable)->UnlockModify(); // Test, nuetzt nichts gegen Assert
+ pTable = 0;
+ nTableWidth = 0;
+}
+
+BOOL SwFltOutDoc::SeekCell(short nRow, short nCol, BOOL bPam)
+{
+// get structs to table cells
+ const SwTableLines* pTableLines = &pTable->GetTabLines();
+ SwTableLine* pTableLine = (*pTableLines)[usTableY];
+ SwTableBoxes* pTableBoxes = &pTableLine->GetTabBoxes();
+ SwTableBox* pTableBox = (*pTableBoxes)[usTableX];
+
+ if ((USHORT)nRow >= pTableLines->Count())
+ {
+ ASSERT((USHORT)nRow >= pTableLines->Count(), "SwFltOutDoc");
+ return FALSE;
+ }
+ pTableLine = (*pTableLines)[nRow];
+ pTableBoxes = &pTableLine->GetTabBoxes();
+ if (nCol >= pTableBoxes->Count())
+ return FALSE;
+ pTableBox = (*pTableBoxes)[nCol];
+ if( !pTableBox->GetSttNd() )
+ {
+ ASSERT(pTableBox->GetSttNd(), "SwFltOutDoc");
+ return FALSE;
+ }
+ if(bPam)
+ {
+ pPaM->GetPoint()->nNode = pTableBox->GetSttIdx() + 1;
+ pPaM->GetPoint()->nContent.Assign(pPaM->GetCntntNode(), 0);
+//#pragma message(__FILE__ "(?) : Sw's const problem")
+#ifdef DEBUG
+ const SwTxtFmtColl* p = GetDoc().GetDfltTxtFmtColl();
+ p = GetDoc().GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
+#endif
+ GetDoc().SetTxtFmtColl(*pPaM,
+ GetDoc().GetTxtCollFromPool(RES_POOLCOLL_STANDARD));
+ }
+ return TRUE;
+}
+
+
+//-----------------------------------------------------------------------------
+// Flys in SwFltOutBase
+//-----------------------------------------------------------------------------
+
+SfxItemSet* SwFltOutBase::NewFlyDefaults()
+{
+// Unbedingt noetige Standardwerte setzen ( falls diese Werte nicht
+// spaeter explizit gesetzt werden )
+
+ SfxItemSet* p = new SfxItemSet( GetDoc().GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ SwFmtFrmSize aSz( ATT_VAR_SIZE, MINFLY, MINFLY );
+ // Default: Breite 100% ( = PMW:Auto )
+ aSz.SetWidthPercent( 100 ); // Hoehe: Auto
+ p->Put( aSz );
+ p->Put( SwFmtHoriOrient( 0, HORI_NONE, FRAME ));
+ return p;
+}
+
+BOOL SwFltOutBase::BeginFly( RndStdIds eAnchor /*= FLY_AT_CNTNT*/,
+ BOOL bAbsolutePos /*= FALSE*/,
+ const SfxItemSet* pMoreAttrs /*= 0*/ )
+{
+ ASSERT(!pMoreAttrs, "SwFltOutBase:BeginFly mit pMoreAttrs" );
+ eFlyAnchor = eAnchor;
+ bFlyAbsPos = bAbsolutePos; // Bloedsinn eigentlich
+ return TRUE;
+}
+
+/*virtual*/ void SwFltOutBase::SetFlyAnchor( RndStdIds eAnchor )
+{
+ if( !IsInFly() ){
+ ASSERT( FALSE, "SetFlyAnchor() ohne Fly" );
+ return;
+ }
+ if( eAnchor == FLY_IN_CNTNT ){
+ ASSERT( FALSE, "SetFlyAnchor( FLY_IN_CNTNT ) nicht implementiert" );
+ return;
+ }
+ SwFmtAnchor& rAnchor = (SwFmtAnchor&)GetFlyFrmAttr( RES_ANCHOR );
+ rAnchor.SetType( eAnchor );
+}
+
+void SwFltOutBase::EndFly()
+{
+ if( bFlyAbsPos ){
+ // hier muessen die absoluten Positionen am Fly noch in
+ // die Writer-Koordinaten umgerechnet werden.
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Flys in SwFltDoc
+//-----------------------------------------------------------------------------
+
+/* virtual */ BOOL SwFltOutDoc::IsInFly()
+{
+ return pFly != 0;
+};
+
+SwFrmFmt* SwFltOutDoc::MakeFly( RndStdIds eAnchor, SfxItemSet* pSet )
+{
+ pFly = (SwFlyFrmFmt*)GetDoc().MakeFlySection( eAnchor, pPaM->GetPoint(),
+ pSet );
+ return pFly;
+}
+
+BOOL SwFltOutDoc::BeginFly( RndStdIds eAnchor /*= FLY_AT_CNTNT*/,
+ BOOL bAbsolutePos /*= FALSE*/,
+ const SfxItemSet* pMoreAttrs /*= 0*/ )
+
+{
+ SwFltOutBase::BeginFly( eAnchor, bAbsolutePos, 0 );
+ SfxItemSet* pSet = NewFlyDefaults();
+
+// Alle Attribute schliessen, da sonst Attribute entstehen koennen,
+// die in Flys reinragen
+ rStack.SetAttr( *pPaM->GetPoint(), 0, FALSE );
+ rEndStack.SetAttr( *pPaM->GetPoint(), 0, FALSE );
+
+// create Fly:
+ ASSERT(pFlySavedPos == NULL, "BeginFly in Fly"); // rekursiv geht noch nicht
+ pFlySavedPos = new SwPosition(*pPaM->GetPoint());
+
+
+ SwFmtAnchor aAnchor( eAnchor, 1 );
+
+// Wenn Fly-Attribute im Style waren, dann jetzt als Defaults reinsetzen
+ if (pMoreAttrs)
+ pSet->Put(*pMoreAttrs);
+
+// dieses NICHT bei Seitengebundenem Fly mit Seiten-NUMMER !
+ aAnchor.SetAnchor(pPaM->GetPoint()); // braucht erstaunlicherweise
+ // den Stack nicht
+// aStack.NewAttr( *pPaM->GetPoint(), SwFltAnchor( pFly ) );
+
+ pSet->Put( aAnchor );
+ SwFrmFmt* pF = MakeFly( eAnchor, pSet );
+ delete pSet;
+
+// set pam in Fly
+ const SwFmtCntnt& rCntnt = pF->GetCntnt();
+ ASSERT( rCntnt.GetCntntIdx(), "Kein Inhalt vorbereitet." );
+ pPaM->GetPoint()->nNode = rCntnt.GetCntntIdx()->GetIndex() + 1;
+ SwCntntNode *pNode = pPaM->GetCntntNode();
+ pPaM->GetPoint()->nContent.Assign( pNode, 0 );
+
+ return TRUE;
+}
+
+/*virtual*/ void SwFltOutDoc::SetFlyFrmAttr(const SfxPoolItem& rAttr)
+{
+ if (pFly)
+ pFly->SetAttr( rAttr );
+ else
+ ASSERT(pFly, "SetFlyAttr ohne Doc-Fly");
+}
+
+/*virtual*/ const SfxPoolItem& SwFltOutDoc::GetFlyFrmAttr(USHORT nWhich)
+{
+ if (pFly){
+ return pFly->GetAttr( nWhich );
+ }else{
+ ASSERT(pFly, "GetFlyAttr ohne Fly");
+ return GetDoc().GetAttrPool().GetDefaultItem(nWhich);
+ }
+}
+
+void SwFltOutDoc::EndFly()
+{
+ if( pTable ){
+ ASSERT( FALSE, "SwFltOutDoc::EndFly() in Table" );
+ return;
+ }
+ // Alle Attribute schliessen, da sonst Attribute
+ // entstehen koennen, die aus Flys rausragen
+ rStack.SetAttr( *pPaM->GetPoint(), 0, FALSE );
+ rEndStack.SetAttr( *pPaM->GetPoint(), 0, FALSE );
+
+ *pPaM->GetPoint() = *pFlySavedPos; // restore Cursor
+ delete pFlySavedPos;
+ pFlySavedPos = 0;
+ SwFltOutBase::EndFly();
+ pFly = 0;
+}
+
+//-----------------------------------------------------------------------------
+// Flys in SwFltFormatCollection
+//-----------------------------------------------------------------------------
+/*virtual*/ BOOL SwFltFormatCollection::IsInFly()
+{
+ return bHasFly;
+};
+
+/*virtual*/ void SwFltFormatCollection::SetFlyFrmAttr(const SfxPoolItem& rAttr)
+{
+ if (!pFlyAttrs)
+ pFlyAttrs = new SfxItemSet( GetDoc().GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ pFlyAttrs->Put( rAttr );
+}
+
+/*virtual*/ const SfxPoolItem& SwFltFormatCollection::GetFlyFrmAttr(USHORT nWhich)
+{
+// ASSERT( pFlyAttrs, "GetFlyFrmAttr ohne Coll-FlyAttrs" );
+ if( pFlyAttrs )
+ return pFlyAttrs->Get( nWhich, FALSE );
+ else
+ return GetDoc().GetAttrPool().GetDefaultItem(nWhich);
+}
+
+BOOL SwFltFormatCollection::BeginFly( RndStdIds eAnchor /*= FLY_AT_CNTNT*/,
+ BOOL bAbsolutePos /*= FALSE*/,
+ const SfxItemSet* pMoreAttrs /*= 0*/ )
+
+{
+ SwFltOutBase::BeginFly( eAnchor, bAbsolutePos, pMoreAttrs );
+ bHasFly = TRUE;
+ return TRUE;
+}
+
+void SwFltFormatCollection::EndFly() // Wird nie aufgerufen
+{
+}
+
+BOOL SwFltFormatCollection::BeginStyleFly( SwFltOutDoc* pOutDoc )
+{
+ ASSERT( pOutDoc, "BeginStyleFly ohne pOutDoc" );
+ ASSERT( pOutDoc && !pOutDoc->IsInFly(), "BeginStyleFly in Fly" );
+ if( pOutDoc && !pOutDoc->IsInFly() )
+ return pOutDoc->BeginFly( eFlyAnchor, bFlyAbsPos, pFlyAttrs );
+ else
+ return FALSE;
+}
+
+//-----------------------------------------------------------------------------
+// Flys in SwFltShell
+//-----------------------------------------------------------------------------
+
+BOOL SwFltShell::BeginFly( RndStdIds eAnchor /*= FLY_AT_CNTNT*/,
+ BOOL bAbsolutePos /*= FALSE*/ )
+
+{
+ if (pOut->IsInFly()){
+ ASSERT(FALSE, "BeginFly in Fly");
+ return FALSE;
+ }
+ if (pOutDoc->IsInTable()){
+ ASSERT(FALSE, "BeginFly in Table");
+ return FALSE;
+ }
+ pOut->BeginFly( eAnchor, bAbsolutePos, pColls[nAktStyle]->GetpFlyAttrs() );
+ eSubMode = Fly;
+ return TRUE;
+}
+
+void SwFltShell::SetFlyXPos( short nXPos,SwRelationOrient eHRel /*= FRAME*/,
+ SwHoriOrient eHAlign /*= HORI_NONE*/ )
+{
+ SetFlyFrmAttr( SwFmtHoriOrient( nXPos, eHAlign, eHRel ) );
+}
+
+void SwFltShell::SetFlyYPos( short nYPos, SwRelationOrient eVRel /*= FRAME*/,
+ SwVertOrient eVAlign /*= VERT_NONE*/ )
+{
+ SetFlyFrmAttr( SwFmtVertOrient( nYPos, eVAlign, eVRel ) );
+}
+
+
+void SwFltShell::EndFly()
+{
+ if (!pOut->IsInFly()){
+ ASSERT(FALSE, "EndFly ohne Fly");
+ return;
+ }
+ if (pOutDoc->IsInTable()){ // Table verschraenkt mit Fly macht keinen Sinn
+ ASSERT(FALSE, "EndFly in Table ( verschraenkt )");
+ EndTable(); // -> Table beenden
+ }
+ pOut->EndFly();
+ eSubMode = None;
+}
+
+//-----------------------------------------------------------------------------
+// Fussnoten
+//-----------------------------------------------------------------------------
+
+void SwFltShell::BeginFootnote()
+{
+ if( pOut->IsInFly() ){ // Passiert z.B. bei Fussnote in Fly
+ ASSERT(FALSE, "Fussnote in Fly nicht erlaubt");
+ return;
+ }
+ if( pOutDoc->IsInTable() ){
+ ASSERT(FALSE, "Fussnote in Table z.Zt. nicht erlaubt");
+ return;
+ }
+
+// Alle Attribute schliessen, da sonst Attribute entstehen koennen,
+// die in Fussnoten reinragen
+ aStack.SetAttr( *pPaM->GetPoint(), 0, FALSE );
+// aEndStack.SetAttr( *pPaM->GetPoint(), 0, FALSE );
+// EndStack erstmal nicht zwangs-Schliessen, damit Bookmarks ueber
+// Fussnoten im PMW uebernommen werden
+
+ SwFmtFtn aFtn;
+ GetDoc().Insert(*pPaM, aFtn);
+ ASSERT(pSavedPos == NULL, "SwFltShell");
+ pSavedPos = new SwPosition(*pPaM->GetPoint());
+ pPaM->Move(fnMoveBackward, fnGoCntnt);
+ SwTxtNode* pTxt = pPaM->GetNode()->GetTxtNode();
+ SwTxtAttr* pFN = pTxt->GetTxtAttr(pPaM->GetPoint()->nContent,
+ RES_TXTATR_FTN);
+ if( !pFN ){ // Passiert z.B. bei Fussnote in Fly
+ ASSERT(pFN, "Probleme beim Anlegen des Fussnoten-Textes");
+ return;
+ }
+ const SwNodeIndex* pStartIndex = ((SwTxtFtn*)pFN)->GetStartNode();
+ ASSERT(pStartIndex, "Probleme beim Anlegen des Fussnoten-Textes");
+ pPaM->GetPoint()->nNode = pStartIndex->GetIndex() + 1;
+ pPaM->GetPoint()->nContent.Assign(pPaM->GetCntntNode(), 0);
+ eSubMode = Footnote;
+}
+
+void SwFltShell::EndFootnote()
+{
+ if(!pSavedPos)
+ return;
+ // Alle Attribute schliessen, da sonst Attribute
+ // entstehen koennen, die aus Fussnoten rausragen
+ aStack.SetAttr( *pPaM->GetPoint(), 0, FALSE );
+// aEndStack.SetAttr( *pPaM->GetPoint(), 0, FALSE );
+// EndStack erstmal nicht zwangs-Schliessen, damit Bookmarks ueber
+// Fussnoten im PMW uebernommen werden
+
+ *pPaM->GetPoint() = *pSavedPos; // restore Cursor
+ delete pSavedPos;
+ pSavedPos = 0;
+}
+
+void SwFltShell::BeginHeader(SwPageDesc* pPD)
+{
+ SwFrmFmt* pFmt = &pCurrentPageDesc->GetMaster(
+ ); //(bUseLeft) ? &pCurrentPageDesc->GetLeft() :
+ SwFrmFmt* pHdFtFmt;
+ pFmt->SetAttr(SwFmtHeader(TRUE));
+ pHdFtFmt = (SwFrmFmt*)pFmt->GetHeader().GetHeaderFmt();
+ const SwNodeIndex* pStartIndex = pHdFtFmt->GetCntnt().GetCntntIdx();
+ if (!pStartIndex)
+ return;
+ ASSERT(pSavedPos == NULL, "SwFltShell");
+ pSavedPos = new SwPosition(*pPaM->GetPoint());
+ pPaM->GetPoint()->nNode = pStartIndex->GetIndex() + 1;
+ pPaM->GetPoint()->nContent.Assign(pPaM->GetCntntNode(), 0);
+ eSubMode = Header;
+}
+
+void SwFltShell::BeginFooter(SwPageDesc* pPD)
+{
+ SwFrmFmt* pFmt = &pCurrentPageDesc->GetMaster(
+ ); //(bUseLeft) ? &pCurrentPageDesc->GetLeft() :
+ SwFrmFmt* pHdFtFmt;
+ pFmt->SetAttr(SwFmtFooter(TRUE));
+ pHdFtFmt = (SwFrmFmt*)pFmt->GetFooter().GetFooterFmt();
+ const SwNodeIndex* pStartIndex = pHdFtFmt->GetCntnt().GetCntntIdx();
+ if (!pStartIndex)
+ return;
+ ASSERT(pSavedPos == NULL, "SwFltShell");
+ pSavedPos = new SwPosition(*pPaM->GetPoint());
+ pPaM->GetPoint()->nNode = pStartIndex->GetIndex() + 1;
+ pPaM->GetPoint()->nContent.Assign(pPaM->GetCntntNode(), 0);
+ eSubMode = Footer;
+}
+
+void SwFltShell::EndHeaderFooter()
+{
+ *pPaM->GetPoint() = *pSavedPos; // restore Cursor
+ delete pSavedPos;
+ pSavedPos = 0;
+}
+
+SwPageDesc* SwFltShell::MakePageDesc(SwPageDesc* pFirstPageDesc)
+{
+ if(bStdPD) // keine Neuen PageDescs
+ return pCurrentPageDesc;
+
+ BOOL bFollow = (pFirstPageDesc != 0);
+ SwPageDesc* pNewPD;
+ USHORT nPos;
+ if (bFollow && pFirstPageDesc->GetFollow() != pFirstPageDesc)
+ return pFirstPageDesc; // Fehler: hat schon Follow
+// Erkennung doppelter Namen fehlt noch (Wahrscheinlichkeit
+// fuer dopp. Namen ist gering)
+
+// Namen zusammenbasteln
+ String aNm( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "Konvert ")));
+ if (bFollow)
+ aNm.AppendAscii( "Folge" );
+ aNm += String(GetDoc().GetPageDescCnt());
+ if (!bFollow)
+ nPos = GetDoc().MakePageDesc(aNm, 0);
+ else
+ nPos = GetDoc().MakePageDesc(aNm,
+ pFirstPageDesc);// alles uebernehmen
+ pNewPD = &((SwPageDesc&)GetDoc().GetPageDesc(nPos));
+ if (bFollow)
+ { // Dieser ist der folgende von pPageDesc
+ pFirstPageDesc->SetFollow(pNewPD);
+ pNewPD->SetFollow(pNewPD);
+ }
+ else
+ GetDoc().Insert( *pPaM, SwFmtPageDesc( pNewPD ) );
+ pNewPD->WriteUseOn( // alle Seiten
+ (UseOnPage)(PD_ALL | PD_HEADERSHARE | PD_FOOTERSHARE));
+ return pNewPD;
+}
+
+///////////////////////////////////////////////// SwFltFormatCollection
+SwFltFormatCollection::SwFltFormatCollection(
+ SwDoc& rDoc, RES_POOL_COLLFMT_TYPE nType) :
+ SwFltOutBase(rDoc),
+ pColl(rDoc.GetTxtCollFromPool(nType)),
+ pFlyAttrs( 0 ),
+ bHasFly( FALSE )
+{
+ Reset(); // Default-Attrs loeschen und Auto-Flag
+}
+
+SwFltFormatCollection::SwFltFormatCollection(
+ SwDoc& rDoc, const String& rName ) :
+ SwFltOutBase(rDoc),
+ pFlyAttrs( 0 ),
+ bHasFly( FALSE )
+{
+ pColl = rDoc.MakeTxtFmtColl(rName, (SwTxtFmtColl*)rDoc.GetDfltTxtFmtColl());
+ Reset(); // Default-Attrs loeschen und Auto-Flag
+}
+
+#if 0
+SwTxtFmtColl* SwFltFormatCollection::Search(String aName, CharSet eSrc)
+{
+ aName.Convert(eSrc);
+ SwTxtFmtColl* pColl = GetDoc().FindTxtFmtCollByName(aName);
+ if(!pColl)
+ {
+ USHORT n = GetDoc().GetPoolId(aName, GET_POOLID_TXTCOLL);
+ if(USHRT_MAX != n)
+ pColl = GetDoc().GetTxtCollFromPool(n);
+ }
+ return pColl;
+}
+#endif
+void SwFltShell::NextStyle(USHORT nWhich, USHORT nNext)
+{
+ ASSERT(pColls[nWhich], "Next style for noexistent style" );
+ ASSERT(pColls[nNext], "Next style to noexistent style" );
+ if( pColls[nWhich] && pColls[nNext] )
+ pColls[nWhich]->GetColl()->SetNextTxtFmtColl(
+ *pColls[nNext]->GetColl() );
+}
+
+/**********************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww1/fltshell.cxx,v 1.1.1.1 2000-09-18 17:14:57 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.57 2000/09/18 16:04:55 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.56 2000/08/30 16:46:59 jp
+ use CharClass instead of international
+
+ Revision 1.55 2000/07/28 15:26:54 khz
+ #73796# don't delete NumRule from Attr but set it into pDoc
+
+ Revision 1.54 2000/07/25 16:58:34 khz
+ #74876# MakeRegion() don't use different Nodes for same Node Index
+
+ Revision 1.53 2000/07/24 16:39:49 khz
+ #75701# set Break or PageDesc item BEHIND TOX if not found before the #0x0C
+
+ Revision 1.52 2000/07/12 11:37:05 khz
+ #76503# SwFltStackEntry.bOld prevents from killing attributes in ww8par.cxx
+
+ Revision 1.51 2000/06/28 08:10:17 khz
+ #70915# new: MoveAttrsToNextTextNode() [see coment in ww8/ww8par.cxx]
+
+ Revision 1.50 2000/06/26 12:53:42 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.49 2000/06/13 11:22:33 os
+ SUPD removed
+
+ Revision 1.48 2000/06/13 09:38:40 os
+ using UCB
+
+ Revision 1.47 2000/05/26 11:41:20 hr
+ SwFltShell& SwFltShell::operator << ( const sal_Unicode c )
+
+ Revision 1.46 2000/05/11 16:06:41 jp
+ Changes for Unicode
+
+ Revision 1.45 2000/02/11 14:39:29 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.44 1999/11/25 17:00:35 khz
+ Task #70133# new method SwFltControlStack::KillUnlockedAttrs()
+
+ Revision 1.43 1999/11/25 16:38:15 khz
+ Task #70133# new method SwFltControlStack::KillUnlockedAttrs()
+
+ Revision 1.42 1999/10/29 12:08:16 khz
+ import new TOX_CONTENT and TOX_INDEX features
+
+ Revision 1.41 1999/10/25 19:35:23 tl
+ ongoing ONE_LINGU implementation
+
+ Revision 1.40 1999/10/08 09:29:10 khz
+ Import Redlining
+
+ Revision 1.39 1999/04/27 12:19:10 KHZ
+ Task #65353# Section ins Doc einfuegen nur mit Parameter bUpdate = FALSE
+
+
+ Rev 1.38 27 Apr 1999 14:19:10 KHZ
+ Task #65353# Section ins Doc einfuegen nur mit Parameter bUpdate = FALSE
+
+ Rev 1.37 12 May 1998 15:52:14 JP
+ rund um Flys/DrawObjs im Doc/FESh umgestellt/optimiert
+
+ Rev 1.36 27 Feb 1998 19:12:42 HJS
+ SH 27.02.98
+
+ Rev 1.33 22 Jan 1998 20:06:44 JP
+ CTOR des SwPaM umgestellt
+
+ Rev 1.32 02 Dec 1997 17:25:56 MA
+ includes
+
+ Rev 1.31 29 Nov 1997 17:37:12 MA
+ includes
+
+ Rev 1.30 17 Nov 1997 09:57:14 JP
+ Umstellung Numerierung
+
+ Rev 1.29 30 Oct 1997 18:17:16 AMA
+ Chg: Kein AutoFlag mehr an Break bzw. PageDesc-Attributen
+
+ Rev 1.28 09 Oct 1997 14:14:32 JP
+ Aenderungen von SH und Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.27 02 Oct 1997 15:26:00 OM
+ Feldumstellung
+
+ Rev 1.26 12 Sep 1997 11:17:24 OS
+ ITEMID_* definiert
+
+ Rev 1.25 04 Sep 1997 11:18:00 JP
+ include
+
+ Rev 1.24 03 Sep 1997 14:17:32 SH
+ Flys, Tabellen ok, Style-Abhaengigkeiten u.v.a.m
+
+ Rev 1.23 15 Aug 1997 12:50:36 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.22 12 Aug 1997 14:16:32 OS
+ Header-Umstellung
+
+ Rev 1.21 11 Aug 1997 14:07:40 OM
+ Headerfile-Umstellung
+
+ Rev 1.20 11 Aug 1997 12:50:34 SH
+ Flys und einfache Tabellen und Tabulatoren
+
+ Rev 1.19 18 Jul 1997 09:31:36 MA
+ Stand von SH, #41738# GPF und Tabellen etwas besser
+
+ Rev 1.16 11 Jul 1997 14:54:44 SH
+ #40772#, #41459#
+
+ Rev 1.15 16 Jun 1997 13:08:58 MA
+ Stand Micheal Dietrich
+
+ Rev 1.13 27 Apr 1997 16:27:28 SH
+ Sonderwunsch Hypo: Ref-Feld auf Frage-Feld
+
+ Rev 1.12 01 Apr 1997 22:41:04 SH
+ MoveAttrs fuer Hypo-Bookmarks
+
+ Rev 1.11 12 Mar 1997 19:13:06 SH
+ MDT: Progressbar, Pagedesc-Bug, Spalten, Anfang Tabellen u.a.
+
+ Rev 1.10 24 Jan 1997 19:49:32 SH
+ Bookmarks verschraenkt und verschachtelt
+
+ Rev 1.9 22 Jan 1997 12:01:52 JP
+ neu: Tabellen Box Attribute
+
+ Rev 1.8 10 Jan 1997 18:42:00 SH
+ Stabiler und mehr von MDT
+
+ Rev 1.7 28 Nov 1996 18:07:52 SH
+ Schneller Schoener Weiter von MDT
+
+ Rev 1.6 29 Oct 1996 13:11:24 JP
+ am Doc ist das NodesArray nur noch ueber Get..() zugaenglich
+
+ Rev 1.5 24 Oct 1996 17:16:44 JP
+ Optimierung: Find...ByName
+
+ Rev 1.4 09 Oct 1996 13:08:14 JP
+ SwNodes::GoNext/-Prev (-Sect) returnt statt BOOL den gefundenen ContentNode
+
+ Rev 1.3 08 Oct 1996 22:09:18 SH
+ Zusammenfassung Anchor + GrafAnchor
+
+ Rev 1.2 30 Sep 1996 23:20:30 SH
+ neu von MDA
+
+**********************************************************************/
+//)}]
diff --git a/sw/source/filter/ww1/makefile.mk b/sw/source/filter/ww1/makefile.mk
new file mode 100644
index 000000000000..e28458357b73
--- /dev/null
+++ b/sw/source/filter/ww1/makefile.mk
@@ -0,0 +1,136 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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=sw
+TARGET=ww1
+
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\filt_1st\filt_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+.IF "$(mydebug)" != ""
+CDEFS=$(CDEFS) -Dmydebug
+.ENDIF
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ fltshell.cxx \
+ w1par.cxx \
+ w1class.cxx \
+ w1filter.cxx \
+ w1sprm.cxx \
+
+
+SLOFILES = \
+ $(SLO)$/w1par.obj \
+ $(SLO)$/w1class.obj \
+ $(SLO)$/w1filter.obj \
+ $(SLO)$/w1sprm.obj \
+ $(SLO)$/fltshell.obj \
+
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+run: alltar
+
+#copy all relevant files to a backupdir
+bak:
+ copy ..\inc\fltshell.hxx backup
+ copy *.?xx backup
+ copy makefile* backup
+ copy vcs.cfg backup
+ copy ..\..\..\dump1\src\dump1.cxx backup
+ copy ..\..\..\dump1\src\makefile backup\makefile.dmp
+ copy ..\..\..\WNTMSCI\bin\makefile backup\makefile.bin
+ copy ..\..\..\UTIL\makefile backup\makefile.utl
+ copy s:\solenv\inc\wnt.mak backup
+
+# remove this filter from libs to avoid annoying effects
+upgrade:
+ attrib -r *.?xx
+ attrib -r makefile.*
+ del ..\..\..\WNMSCI\LIB\ww1.lib
+ del ..\..\..\WNMSCI\DBO\w1*.obj
+ del ..\..\..\WNMSCI\DBO\fltshell.obj
+ del ..\..\..\WNMSCI\MISC
+ lib /nologo /REMOVE:..\..\..\WNTMSCI\obj\fltshell.obj /out:..\..\..\WNTMSCI\LIB\filter.lib ..\..\..\WNTMSCI\LIB\filter.lib
+ lib /nologo /REMOVE:..\..\..\WNTMSCI\obj\w1sprm.obj /out:..\..\..\WNTMSCI\LIB\filter.lib ..\..\..\WNTMSCI\LIB\filter.lib
+ lib /nologo /REMOVE:..\..\..\WNTMSCI\obj\w1filter.obj /out:..\..\..\WNTMSCI\LIB\filter.lib ..\..\..\WNTMSCI\LIB\filter.lib
+ lib /nologo /REMOVE:..\..\..\WNTMSCI\obj\w1class.obj /out:..\..\..\WNTMSCI\LIB\filter.lib ..\..\..\WNTMSCI\LIB\filter.lib
+ lib /nologo /REMOVE:..\..\..\WNTMSCI\obj\w1par.obj /out:..\..\..\WNTMSCI\LIB\filter.lib ..\..\..\WNTMSCI\LIB\filter.lib
+ copy backup\makefile.bin ..\..\..\WNTMSCI\bin\makefile
+ diff backup\makefile.utl ..\..\..\UTIL\makefile
+ diff s:\solenv\inc\wnt.mak backup
+
+zip: bak
+ pkzip c:\temp\ww1 backup\*.*
+
diff --git a/sw/source/filter/ww1/w1class.cxx b/sw/source/filter/ww1/w1class.cxx
new file mode 100644
index 000000000000..ad716d419a01
--- /dev/null
+++ b/sw/source/filter/ww1/w1class.cxx
@@ -0,0 +1,1580 @@
+/*************************************************************************
+ *
+ * $RCSfile: w1class.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <string.h>
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+
+#ifndef _W1CLASS_HXX
+#include <w1class.hxx>
+#endif
+
+
+/////////////////////////////////////////////////////////////////// Fib
+Ww1Fib::Ww1Fib( SvStream& rStream )
+ : rStream(rStream)
+{
+ bOK = 0 == rStream.Seek(0) &&
+ rStream.Read( &aFib, sizeof( aFib )) == sizeof( aFib );
+}
+
+///////////////////////////////////////////////////////////// PlainText
+sal_Unicode Ww1PlainText::operator [] ( ULONG ulOffset )
+{
+ DBG_ASSERT( ulOffset<Count(), "Ww1PlainText" );
+ sal_Unicode cRet;
+ sal_Char cRead;
+ if( rFib.GetStream().Seek( ulFilePos + ulOffset ) == ulFilePos+ulOffset &&
+ rFib.GetStream().Read( &cRead, sizeof( cRead ) ) == sizeof( cRead ) )
+ {
+ cRet = ByteString::ConvertToUnicode( cRead, RTL_TEXTENCODING_MS_1252 );
+ }
+ else
+ cRet = ' ';
+ return cRet;
+}
+
+String Ww1PlainText::GetText( ULONG ulOffset, ULONG nLen ) const
+{
+ String sRet;
+ ByteString aStr;
+ DBG_ASSERT(ulOffset+nLen<Count(), "Ww1PlainText");
+ if( rFib.GetStream().Seek(ulFilePos+ulOffset) == ulFilePos+ulOffset &&
+ rFib.GetStream().Read( aStr.AllocBuffer( nLen ), nLen ) == nLen )
+ sRet = String( aStr, RTL_TEXTENCODING_MS_1252 );
+ return sRet;
+}
+
+///////////////////////////////////////////////////////////////// Style
+Ww1Style::Ww1Style()
+ : stcBase(0),
+ stcNext(0),
+ bUsed(FALSE),
+ pParent(NULL),
+ pPapx(NULL)
+{
+}
+
+Ww1Style::~Ww1Style()
+{
+ delete pPapx;
+}
+
+void Ww1Style::SetDefaults(BYTE stc)
+{
+ if( 222 == stc )
+ {
+ stcBase = 222;
+ stcNext = 222;
+ aChpx.hpsSet(20);
+ }
+}
+
+USHORT Ww1Style::ReadName( BYTE*&p, USHORT& rnCountBytes, USHORT stc )
+{
+ BYTE nCountBytes = SVBT8ToByte(p);
+ p++;
+ rnCountBytes--;
+ if( !nCountBytes ) // default
+ {
+ static sal_Char* __READONLY_DATA names[] =
+ {
+ "W1 Null", //222
+ "W1 Annotation reference", //223
+ "W1 Annotation text", //224
+ "W1 Table of contents 8", //225
+ "W1 Table of contents 7", //226
+ "W1 Table of contents 6", //227
+ "W1 Table of contents 5", //228
+ "W1 Table of contents 4", //229
+ "W1 Table of contents 3", //230
+ "W1 Table of contents 2", //231
+ "W1 Table of contents 1", //232
+ "W1 Index 7", //233
+ "W1 Index 6", //234
+ "W1 Index 5", //235
+ "W1 Index 4", //236
+ "W1 Index 3", //237
+ "W1 Index 2", //238
+ "W1 Index 1", //239
+ "W1 Line number", //240
+ "W1 Index heading", //241
+ "W1 Footer", //242
+ "W1 Header", //243
+ "W1 Footnote reference", //244
+ "W1 Footnote text", //245
+ "W1 Heading 9", //246
+ "W1 Heading 8", //247
+ "W1 Heading 7", //248
+ "W1 Heading 6", //249
+ "W1 Heading 5", //250
+ "W1 Heading 4", //251
+ "W1 Heading 3", //252
+ "W1 Heading 2", //253
+ "W1 Heading 1", //254
+ "W1 Normal indent" //255
+ };//256
+
+ const sal_Char* pStr;
+ if( !stc )
+ pStr = "W1 Normal";
+ else if( stc - 222 >= sizeof( names ) / sizeof( *names ))
+ pStr = "?";
+ else
+ pStr = names[ stc-222 ];
+ SetName( String( pStr, RTL_TEXTENCODING_MS_1252 ));
+ }
+ else if( 255 > nCountBytes ) // unused
+ {
+ SetName( String( (sal_Char*)p, nCountBytes, RTL_TEXTENCODING_MS_1252 ));
+ p += nCountBytes;
+ DBG_ASSERT(rnCountBytes>=nCountBytes, "Ww1Style");
+ rnCountBytes -= nCountBytes;
+ }
+ return 0;
+}
+
+USHORT Ww1Style::ReadChpx( BYTE*&p, USHORT& rnCountBytes )
+{
+ USHORT nCountBytes = SVBT8ToByte(p);
+ p++;
+ rnCountBytes--;
+ if (nCountBytes != 255 // unused
+ && nCountBytes != 0) // default
+ {
+ if (nCountBytes > sizeof(aChpx))
+ nCountBytes = sizeof(aChpx);
+ memcpy( &aChpx, p, nCountBytes );
+ p += nCountBytes;
+ DBG_ASSERT(rnCountBytes>=nCountBytes, "Ww1Style");
+ rnCountBytes -= nCountBytes;
+ }
+ return 0;
+}
+
+USHORT Ww1Style::ReadPapx(BYTE*&p, USHORT& rnCountBytes)
+{
+ USHORT nCountBytes = SVBT8ToByte(p);
+ p++;
+ rnCountBytes--;
+ if (nCountBytes != 255)
+ {
+ pPapx = new Ww1SprmPapx(p, nCountBytes);
+ p += nCountBytes;
+ DBG_ASSERT(rnCountBytes>=nCountBytes, "Ww1Style");
+ rnCountBytes -= nCountBytes;
+ }
+ else
+ pPapx = new Ww1SprmPapx(p, 0);
+ return 0;
+}
+
+USHORT Ww1Style::ReadEstcp(BYTE*&p, USHORT& rnCountBytes)
+{
+ stcNext = SVBT8ToByte(p);
+ p++;
+ rnCountBytes--;
+ stcBase = SVBT8ToByte(p);
+ p++;
+ DBG_ASSERT(rnCountBytes>0, "Ww1Style");
+ rnCountBytes--;
+ return 0;
+}
+
+//////////////////////////////////////////////////////////// StyleSheet
+Ww1StyleSheet::Ww1StyleSheet(Ww1Fib& rFib)
+ : cstcStd(0),
+ rFib(rFib),
+ bOK(FALSE)
+{
+ USHORT cbStshf = rFib.GetFIB().cbStshfGet();
+ DBG_ASSERT(cbStshf>=17, "Ww1StyleSheet");
+ for (USHORT stc=0;stc<Count();stc++)
+ {
+ aStyles[stc].SetParent(this);
+ aStyles[stc].SetDefaults((BYTE)stc);
+ }
+ BYTE* del = NULL;
+ if (rFib.GetStream().Seek(rFib.GetFIB().fcStshfGet())
+ == (ULONG)rFib.GetFIB().fcStshfGet()
+ && (del = new BYTE[cbStshf]) != NULL
+ && rFib.GetStream().Read(del, cbStshf) == (ULONG)cbStshf)
+ {
+ BYTE* p = del;
+ cstcStd = SVBT16ToShort(p);
+ p += sizeof(SVBT16);
+ cbStshf -= sizeof(SVBT16);
+ ReadNames(p, cbStshf);
+ ReadChpx(p, cbStshf);
+ ReadPapx(p, cbStshf);
+ ReadEstcp(p, cbStshf);
+ DBG_ASSERT(cbStshf==0, "Ww1StyleSheet");
+ bOK = cbStshf == 0;
+ }
+ delete del;
+}
+
+USHORT Ww1StyleSheet::ReadNames( BYTE*& p, USHORT& rnCountBytes )
+{
+ USHORT nCountBytes = SVBT16ToShort(p);
+ p += sizeof(SVBT16);
+ DBG_ASSERT(rnCountBytes>=nCountBytes, "Ww1StyleSheet");
+ rnCountBytes -= nCountBytes;
+ nCountBytes -= sizeof(SVBT16);
+ USHORT stcp = 0;
+ while (nCountBytes > 0)
+ {
+ USHORT stc = (stcp - cstcStd) & 255;
+ aStyles[stc].ReadName(p, nCountBytes, stc);
+ stcp++;
+ }
+ DBG_ASSERT(nCountBytes==0, "Ww1StyleSheet");
+ return 0;
+}
+
+USHORT Ww1StyleSheet::ReadChpx(BYTE*& p, USHORT& rnCountBytes)
+{
+ USHORT nCountBytes = SVBT16ToShort(p);
+ p += sizeof(SVBT16);
+ DBG_ASSERT(rnCountBytes>=nCountBytes, "Ww1StyleSheet");
+ rnCountBytes -= nCountBytes;
+ nCountBytes -= sizeof(SVBT16);
+ USHORT stcp = 0;
+ while (nCountBytes > 0)
+ {
+ USHORT stc = (stcp - cstcStd) & 255;
+ aStyles[stc].ReadChpx(p, nCountBytes);
+ stcp++;
+ }
+ DBG_ASSERT(nCountBytes == 0, "Ww1StyleSheet");
+ return 0;
+}
+
+USHORT Ww1StyleSheet::ReadPapx(BYTE*& p, USHORT& rnCountBytes)
+{
+ USHORT nCountBytes = SVBT16ToShort(p);
+ p += sizeof(SVBT16);
+ DBG_ASSERT(rnCountBytes>=nCountBytes, "Ww1StyleSheet");
+ rnCountBytes -= nCountBytes;
+ nCountBytes -= sizeof(SVBT16);
+ USHORT stcp = 0;
+ while (nCountBytes > 0)
+ {
+ USHORT stc = (stcp - cstcStd) & 255;
+ aStyles[stc].ReadPapx(p, nCountBytes);
+ stcp++;
+ }
+ DBG_ASSERT(nCountBytes == 0, "Ww1StyleSheet");
+ return 0;
+}
+
+USHORT Ww1StyleSheet::ReadEstcp(BYTE*& p, USHORT& rnCountBytes)
+{
+ USHORT iMac = SVBT16ToShort(p);
+ p += sizeof(SVBT16);
+ DBG_ASSERT(rnCountBytes>=sizeof(SVBT16), "Ww1StyleSheet");
+ rnCountBytes -= sizeof(SVBT16);
+ for (USHORT stcp=0;stcp<iMac;stcp++)
+ {
+ USHORT stc = (stcp - cstcStd) & 255;
+ aStyles[stc].ReadEstcp(p, rnCountBytes);
+ }
+ DBG_ASSERT(rnCountBytes==0, "Ww1StyleSheet");
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////// Fonts
+
+Ww1Fonts::Ww1Fonts(Ww1Fib& rFib, ULONG nFieldFlgs)
+ : nMax(0), rFib(rFib), pFontA(0), nFieldFlags( nFieldFlgs ), bOK(FALSE)
+{
+ if(rFib.GetFIB().cbSttbfffnGet() > 2 ) // ueberhaupt fonts?
+ {
+ SVBT16 nCountBytes;
+ DBG_ASSERT(rFib.GetFIB().cbSttbfffnGet() > sizeof(nCountBytes), "Ww1Fonts");
+ if (rFib.GetStream().Seek(rFib.GetFIB().fcSttbfffnGet())
+ == (ULONG)rFib.GetFIB().fcSttbfffnGet())
+ if (rFib.GetStream().Read(nCountBytes, sizeof(nCountBytes))
+ == sizeof(nCountBytes)) // Laenge steht hier nochmal
+ {
+ DBG_ASSERT(SVBT16ToShort(nCountBytes)
+ == rFib.GetFIB().cbSttbfffnGet(), "redundant-size missmatch");
+ // hoffentlich sind sie immer gleich
+ W1_FFN* pA = (W1_FFN*)new char[rFib.GetFIB().cbSttbfffnGet()
+ - sizeof(nCountBytes)]; // Alloziere Font-Array
+ //~ Ww1: new-NULL
+ if (rFib.GetStream().Read(pA, rFib.GetFIB().cbSttbfffnGet()
+ - sizeof(nCountBytes)) == (ULONG)rFib.GetFIB().cbSttbfffnGet()
+ - sizeof(nCountBytes)) // lese alle Fonts
+ {} //nothing
+
+ long nLeft = rFib.GetFIB().cbSttbfffnGet()
+ - sizeof(nCountBytes); // Zaehle, wieviele Fonts enthalten
+ W1_FFN* p = pA;
+ while (1)
+ {
+ USHORT nNextSiz;
+ nNextSiz = p->cbFfnM1Get() + 1;
+ if(nNextSiz > nLeft)
+ break;
+ nMax++;
+ nLeft -= nNextSiz;
+ if(nLeft < 1) // naechste Laenge muss gelesen werden koennen
+ break;
+ p = (W1_FFN *)(((char*)p) + nNextSiz);
+ }
+ if (nMax)
+ {
+ pFontA = new W1_FFN*[nMax]; // alloziere Index-Array
+ //~ Ww1: new-NULL
+ pFontA[0] = pA; // fuelle Index-Array
+ USHORT i;
+ for(i=1, p=pA; i<nMax; i++)
+ {
+ p = (W1_FFN*)(((char*)p) + p->cbFfnM1Get() + 1);
+ pFontA[i] = p;
+ }
+ }
+ else
+ pFontA = 0; // Keine Eintraege -> kein Array
+ }
+ }
+ bOK = TRUE;
+}
+
+W1_FFN* Ww1Fonts::GetFFN(USHORT nNum)
+{
+ W1_FFN* pRet = NULL;
+ if (pFontA)
+ if (nNum < nMax)
+ pRet = pFontA[nNum];
+ return pRet;
+}
+
+/////////////////////////////////////////////////////////////////// DOP
+Ww1Dop::Ww1Dop(Ww1Fib& rFib)
+ : rFib(rFib)
+{
+ long nRead;
+ memset(&aDop, 0, sizeof(aDop)); // set defaults
+ if(rFib.GetFIB().cbDopGet() >= sizeof(aDop))
+ nRead = sizeof(aDop);
+ else
+ nRead = rFib.GetFIB().cbDopGet();
+ bOK = rFib.GetStream().Seek(rFib.GetFIB().fcDopGet()) ==
+ (ULONG)rFib.GetFIB().fcDopGet() &&
+ rFib.GetStream().Read(&aDop, nRead) == (ULONG)nRead;
+}
+
+/////////////////////////////////////////////////////////////// Picture
+Ww1Picture::Ww1Picture(SvStream& rStream, ULONG ulFilePos)
+ : pPic(NULL), bOK(FALSE)
+{
+ ulFilePos &= 0xffffff; //~ ww1: warum auch immer - im highbyte steht eine 5?!?!
+ SVBT32 lcb;
+ if (rStream.Seek(ulFilePos) == (ULONG)ulFilePos)
+ if (rStream.Read(&lcb, sizeof(lcb)) == (ULONG)sizeof(lcb))
+ if (sizeof(int)>=4 || SVBT32ToLong(lcb) < 0x8000) //~ mdt: 64K & 16bit
+ if ((pPic = (W1_PIC*)(new BYTE[SVBT32ToLong(lcb)])) != NULL)
+ if (rStream.Seek(ulFilePos) == (ULONG)ulFilePos)
+ if (rStream.Read(pPic, SVBT32ToLong(lcb)) == (ULONG)SVBT32ToLong(lcb))
+ {
+ DBG_ASSERT(pPic->cbHeaderGet()==sizeof(*pPic)-sizeof(pPic->rgb), "Ww1Picture");
+ bOK = TRUE;
+ }
+}
+
+////////////////////////////////////////////////////////////////// Sprm
+Ww1Sprm::Ww1Sprm(BYTE* x, USHORT nCountBytes)
+ : p(NULL),
+ nCountBytes(nCountBytes),
+ bOK(FALSE),
+ pArr(NULL),
+ count(0)
+{
+ if (nCountBytes == 0)
+ bOK = TRUE;
+ else
+ if ((p = new BYTE[nCountBytes]) != NULL)
+ {
+ memcpy(p, x, nCountBytes);
+ if (ReCalc())
+ bOK = TRUE;
+ }
+}
+
+Ww1Sprm::Ww1Sprm(SvStream& rStream, ULONG ulFilePos)
+ : p(NULL),
+ nCountBytes(0),
+ bOK(FALSE),
+ pArr(NULL),
+ count(0)
+{
+ SVBT8 x;
+ ByteToSVBT8(0, x);
+ if (rStream.Seek(ulFilePos) == (ULONG)ulFilePos)
+ if (rStream.Read(&x, sizeof(x)) == (ULONG)sizeof(x))
+ if ((nCountBytes = SVBT8ToByte(x)) == 255
+ || !nCountBytes
+ || (p = new BYTE[nCountBytes]) != NULL)
+ if (nCountBytes == 255
+ || !nCountBytes
+ || rStream.Read(p, nCountBytes) == (ULONG)nCountBytes)
+ if (ReCalc())
+ bOK = TRUE;
+}
+
+Ww1Sprm::~Ww1Sprm()
+{
+ delete pArr;
+ delete p;
+}
+
+USHORT Ww1SingleSprm::Size(BYTE* pSprm)
+{
+ return nCountBytes;
+}
+
+USHORT Ww1SingleSprmTab::Size(BYTE* pSprm) // Doc 24/25, Fastsave-Sprm
+{
+ DBG_ASSERT(nCountBytes==0, "Ww1SingleSprmTab");
+ USHORT nRet = sizeof(SVBT8);
+ USHORT nSize = SVBT8ToByte(pSprm);
+ if (nSize != 255)
+ nRet += nSize;
+ else
+ {
+ USHORT nDel = SVBT8ToByte(pSprm+1) * 4;
+ USHORT nIns = SVBT8ToByte(pSprm + 3 + nDel) * 3;
+ nRet += nDel + nIns;
+ }
+ DBG_ASSERT(nRet <= 354, "Ww1SingleSprmTab");
+ if (nRet > 354)
+ nRet = 0;
+ return nRet;
+}
+
+USHORT Ww1SingleSprmByteSized::Size(BYTE* pSprm)
+{
+ USHORT nRet;
+ nRet = SVBT8ToByte(pSprm);
+ nRet += sizeof(SVBT8); // var. l. byte-size
+// pSprm += sizeof(SVBT8); // var. l. byte-size
+ nRet += nCountBytes;
+ return nRet;
+}
+
+USHORT Ww1SingleSprmWordSized::Size(BYTE* pSprm)
+{
+ USHORT nRet;
+ nRet = SVBT16ToShort(pSprm);
+ nRet += sizeof(SVBT16); // var. l. word-size
+// pSprm += sizeof(SVBT16); // var. l. word-size
+ nRet += nCountBytes;
+ return nRet;
+}
+
+static BYTE nLast = 0;
+static BYTE nCurrent = 0;
+USHORT Ww1Sprm::GetSize(BYTE nId, BYTE* pSprm)
+{
+ DBG_ASSERT(nId<sizeof(aTab)/sizeof(*aTab), "Ww1Sprm");
+ USHORT nL = 0;
+ nL = GetTab(nId).Size(pSprm);
+nLast = nCurrent;
+nCurrent = nId;
+ return nL;
+}
+
+BOOL Ww1Sprm::Fill(USHORT index, BYTE& nId, USHORT& nL, BYTE*& pSprm)
+{
+ DBG_ASSERT(nId<sizeof(aTab)/sizeof(*aTab), "Ww1Sprm");
+ DBG_ASSERT(index < Count(), "Ww1Sprm");
+ pSprm = p + pArr[index];
+ nId = SVBT8ToByte(pSprm);
+ pSprm++;
+ nL = GetTab(nId).Size(pSprm);
+ return TRUE;
+}
+
+BOOL Ww1Sprm::ReCalc()
+{
+ BOOL bRet = TRUE;
+ delete pArr;
+ pArr = NULL;
+ count = 0;
+ if (nCountBytes != 255) // not unused?
+ {
+ USHORT cbsik = nCountBytes;
+ BYTE* psik = p;
+ while (cbsik > 0)
+ {
+ USHORT iLen = GetSizeBrutto(psik);
+ DBG_ASSERT(iLen<=cbsik, "Ww1Sprm");
+ if (iLen > cbsik)
+ cbsik = 0; // ignore the rest: we are wrong...
+ else
+ {
+ psik += iLen;
+ cbsik -= iLen;
+ count++;
+ }
+ }
+ if (bRet
+ && (pArr = new USHORT[count]) != NULL)
+ {
+ cbsik = nCountBytes;
+ USHORT offset = 0;
+ USHORT current = 0;
+ psik = p;
+ while (current<count)
+ {
+ pArr[current++] = offset;
+ USHORT iLen = GetSizeBrutto(psik);
+ psik += iLen;
+ if (iLen > cbsik)
+ cbsik = 0;
+ else
+ cbsik -= iLen;
+ offset += iLen;
+ }
+
+ }
+ else
+ count = 0;
+ }
+ return bRet;
+}
+
+Ww1SingleSprm* Ww1Sprm::aTab[256];
+
+void Ww1Sprm::DeinitTab()
+{
+ for (int i=0;i<sizeof(aTab)/sizeof(*aTab);i++)
+ {
+ delete aTab[i];
+ aTab[i] = NULL;
+ }
+}
+
+void Ww1Sprm::InitTab()
+{
+ int i = 0;
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 0
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 1
+ aTab[i++] = new Ww1SingleSprmByte("sprmPStc"); // 2 pap.istd (style code)
+ aTab[i++] = new Ww1SingleSprmByteSized(0, "sprmPIstdPermute"); // 3 pap.istd permutation
+ aTab[i++] = new Ww1SingleSprmByte("sprmPIncLevel"); // 4 pap.istddifference
+ aTab[i++] = new Ww1SingleSprmPJc("sprmPJc"); // 5 pap.jc (justification)
+ aTab[i++] = new Ww1SingleSprmBool("sprmPFSideBySide"); // 6 pap.fSideBySide
+ aTab[i++] = new Ww1SingleSprmPFKeep("sprmPFKeep"); // 7 pap.fKeep
+ aTab[i++] = new Ww1SingleSprmPFKeepFollow("sprmPFKeepFollow"); // 8 pap.fKeepFollow
+ aTab[i++] = new Ww1SingleSprmPPageBreakBefore("sprmPPageBreakBefore"); // 9 pap.fPageBreakBefore
+ aTab[i++] = new Ww1SingleSprmByte("sprmPBrcl"); // 10 pap.brcl
+ aTab[i++] = new Ww1SingleSprmByte("sprmPBrcp"); // 11 pap.brcp
+ aTab[i++] = new Ww1SingleSprmByteSized(0, "sprmPAnld"); // 12 pap.anld (ANLD structure)
+ aTab[i++] = new Ww1SingleSprmByte("sprmPNLvlAnm"); // 13 pap.nLvlAnm nn
+ aTab[i++] = new Ww1SingleSprmBool("sprmPFNoLineNumb"); // 14 ap.fNoLnn
+ aTab[i++] = new Ww1SingleSprmPChgTabsPapx("sprmPChgTabsPapx"); // 15 pap.itbdMac, ...
+ aTab[i++] = new Ww1SingleSprmPDxaRight("sprmPDxaRight"); // 16 pap.dxaRight
+ aTab[i++] = new Ww1SingleSprmPDxaLeft("sprmPDxaLeft"); // 17 pap.dxaLeft
+ aTab[i++] = new Ww1SingleSprmWord("sprmPNest"); // 18 pap.dxaNest
+ aTab[i++] = new Ww1SingleSprmPDxaLeft1("sprmPDxaLeft1"); // 19 pap.dxaLeft1
+ aTab[i++] = new Ww1SingleSprmPDyaLine("sprmPDyaLine"); // 20 pap.lspd an LSPD
+ aTab[i++] = new Ww1SingleSprmPDyaBefore("sprmPDyaBefore"); // 21 pap.dyaBefore
+ aTab[i++] = new Ww1SingleSprmPDyaAfter("sprmPDyaAfter"); // 22 pap.dyaAfter
+ aTab[i++] = new Ww1SingleSprmTab(0, "?"); // 23 pap.itbdMac, pap.rgdxaTab
+ aTab[i++] = new Ww1SingleSprmPFInTable("sprmPFInTable"); // 24 pap.fInTable
+ aTab[i++] = new Ww1SingleSprmPTtp("sprmPTtp"); // 25 pap.fTtp
+ aTab[i++] = new Ww1SingleSprmPDxaAbs("sprmPDxaAbs"); // 26 pap.dxaAbs
+ aTab[i++] = new Ww1SingleSprmPDyaAbs("sprmPDyaAbs"); // 27 pap.dyaAbs
+ aTab[i++] = new Ww1SingleSprmPDxaWidth("sprmPDxaWidth"); // 28 pap.dxaWidth
+ aTab[i++] = new Ww1SingleSprmPpc("sprmPPc"); // 29 pap.pcHorz, pap.pcVert
+ aTab[i++] = new Ww1SingleSprmPBrc10(BRC_TOP, "sprmPBrcTop10"); // 30 pap.brcTop BRC10
+ aTab[i++] = new Ww1SingleSprmPBrc10(BRC_LEFT, "sprmPBrcLeft10"); // 31 pap.brcLeft BRC10
+ aTab[i++] = new Ww1SingleSprmPBrc10(BRC_BOTTOM, "sprmPBrcBottom10"); // 32 pap.brcBottom BRC10
+ aTab[i++] = new Ww1SingleSprmPBrc10(BRC_RIGHT, "sprmPBrcRight10"); // 33 pap.brcRight BRC10
+ aTab[i++] = new Ww1SingleSprmWord("sprmPBrcBetween10"); // 34 pap.brcBetween BRC10
+ aTab[i++] = new Ww1SingleSprmPBrc10(BRC_LEFT, "sprmPBrcBar10"); // 35 pap.brcBar BRC10
+ aTab[i++] = new Ww1SingleSprmPFromText("sprmPFromText10"); // 36 pap.dxaFromText dxa
+ aTab[i++] = new Ww1SingleSprmByte("sprmPWr"); // 37 pap.wr wr
+ aTab[i++] = new Ww1SingleSprmWord("sprmPBrcTop"); // 38 pap.brcTop BRC
+ aTab[i++] = new Ww1SingleSprmWord("sprmPBrcLeft"); // 39 pap.brcLeft BRC
+ aTab[i++] = new Ww1SingleSprmWord("sprmPBrcBottom"); // 40 pap.brcBottom BRC
+ aTab[i++] = new Ww1SingleSprmWord("sprmPBrcRight"); // 41 pap.brcRight BRC
+ aTab[i++] = new Ww1SingleSprmWord("sprmPBrcBetween"); // 42 pap.brcBetween BRC
+ aTab[i++] = new Ww1SingleSprmWord("sprmPBrcBar"); // 43 pap.brcBar BRC word
+ aTab[i++] = new Ww1SingleSprmBool("sprmPFNoAutoHyph"); // 44 pap.fNoAutoHyph
+ aTab[i++] = new Ww1SingleSprmWord("sprmPWHeightAbs"); // 45 pap.wHeightAbs w
+ aTab[i++] = new Ww1SingleSprmWord("sprmPDcs"); // 46 pap.dcs DCS
+ aTab[i++] = new Ww1SingleSprmWord("sprmPShd"); // 47 pap.shd SHD
+ aTab[i++] = new Ww1SingleSprmWord("sprmPDyaFromText"); // 48 pap.dyaFromText dya
+ aTab[i++] = new Ww1SingleSprmWord("sprmPDxaFromText"); // 49 pap.dxaFromText dxa
+ aTab[i++] = new Ww1SingleSprmBool("sprmPFLocked"); // 50 pap.fLocked 0 or 1 byte
+ aTab[i++] = new Ww1SingleSprmBool("sprmPFWidowControl"); // 51 pap.fWidowControl 0 or 1 byte
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 52 sprmPRuler ?
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 53
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 54
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 55
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 56
+ aTab[i++] = new Ww1SingleSprmByteSized(0, "sprmCDefault"); // 57 whole CHP (see below) none variable length
+ aTab[i++] = new Ww1SingleSprm(0, "sprmCPlain"); // 58 whole CHP (see below) none 0
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 59
+ aTab[i++] = new Ww1SingleSprm4State("sprmCFBold"); // 60 chp.fBold 0,1, 128, or 129 (see below) byte
+ aTab[i++] = new Ww1SingleSprm4State("sprmCFItalic"); // 61 chp.fItalic 0,1, 128, or 129 (see below) byte
+ aTab[i++] = new Ww1SingleSprm4State("sprmCFStrike"); // 62 chp.fStrike 0,1, 128, or 129 (see below) byte
+ aTab[i++] = new Ww1SingleSprm4State("sprmCFOutline"); // 63 chp.fOutline 0,1, 128, or 129 (see below) byte
+ aTab[i++] = new Ww1SingleSprm4State("sprmCFShadow"); // 64 chp.fShadow 0,1, 128, or 129 (see below) byte
+ aTab[i++] = new Ww1SingleSprm4State("sprmCFSmallCaps"); // 65 chp.fSmallCaps 0,1, 128, or 129 (see below) byte
+ aTab[i++] = new Ww1SingleSprm4State("sprmCFCaps"); // 66 chp.fCaps 0,1, 128, or 129 (see below) byte
+ aTab[i++] = new Ww1SingleSprm4State("sprmCFVanish"); // 67 chp.fVanish 0,1, 128, or 129 (see below) byte
+ aTab[i++] = new Ww1SingleSprmWord("sprmCFtc"); // 68 chp.ftc ftc word
+ aTab[i++] = new Ww1SingleSprmByte("sprmCKul"); // 69 chp.kul kul byte
+ aTab[i++] = new Ww1SingleSprm(3, "sprmCSizePos"); // 70 chp.hps, chp.hpsPos (see below) 3 bytes
+ aTab[i++] = new Ww1SingleSprmWord("sprmCDxaSpace"); // 71 chp.dxaSpace dxa word
+ aTab[i++] = new Ww1SingleSprmWord("//"); // 72 //
+ aTab[i++] = new Ww1SingleSprmByte("sprmCIco"); // 73 chp.ico ico byte
+ aTab[i++] = new Ww1SingleSprmByte("sprmCHps"); // 74 chp.hps hps !byte!
+ aTab[i++] = new Ww1SingleSprmByte("sprmCHpsInc"); // 75 chp.hps (see below) byte
+ aTab[i++] = new Ww1SingleSprmWord("sprmCHpsPos"); // 76 chp.hpsPos hps !word!
+ aTab[i++] = new Ww1SingleSprmByte("sprmCHpsPosAdj"); // 77 chp.hpsPos hps (see below) byte
+ aTab[i++] = new Ww1SingleSprmByteSized(0, "?"); // 78 ?chp.fBold, chp.fItalic, chp.fSmallCaps, ...
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 79
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 80
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 81
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 82
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 83
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 84
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 85
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 86
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 87
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 88
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 89
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 90
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 91
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 92
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 93
+ aTab[i++] = new Ww1SingleSprmByte("sprmPicBrcl"); // 94 pic.brcl brcl (see PIC structure definition) byte
+ aTab[i++] = new Ww1SingleSprmByteSized(0, "sprmPicScale"); // 95 pic.mx, pic.my, pic.dxaCropleft,
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 96
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 97
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 99
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 99
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 100
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 101
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 102
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 103
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 104
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 105
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 106
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 107
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 108
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 109
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 110
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 111
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 112
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 113
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 114
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 115
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 116
+ aTab[i++] = new Ww1SingleSprmByte("sprmSBkc"); // 117 sep.bkc bkc byte
+ aTab[i++] = new Ww1SingleSprmBool("sprmSFTitlePage"); // 118 sep.fTitlePage 0 or 1 byte
+ aTab[i++] = new Ww1SingleSprmSColumns("sprmSCcolumns"); // 119 sep.ccolM1 # of cols - 1 word
+ aTab[i++] = new Ww1SingleSprmWord("sprmSDxaColumns"); // 120 sep.dxaColumns dxa word
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 121 sep.fAutoPgn obsolete byte
+ aTab[i++] = new Ww1SingleSprmByte("sprmSNfcPgn"); // 122 sep.nfcPgn nfc byte
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 123 sep.dyaPgn dya short
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 124 sep.dxaPgn dya short
+ aTab[i++] = new Ww1SingleSprmBool("sprmSFPgnRestart"); // 125 sep.fPgnRestart 0 or 1 byte
+ aTab[i++] = new Ww1SingleSprmBool("sprmSFEndnote"); // 126 sep.fEndnote 0 or 1 byte
+ aTab[i++] = new Ww1SingleSprmByte("sprmSLnc"); // 127 sep.lnc lnc byte
+ aTab[i++] = new Ww1SingleSprmSGprfIhdt("sprmSGprfIhdt"); // 128 sep.grpfIhdt grpfihdt (see Headers and Footers topic) byte
+ aTab[i++] = new Ww1SingleSprmWord("sprmSNLnnMod"); // 129 sep.nLnnMod non-neg int. word
+ aTab[i++] = new Ww1SingleSprmWord("sprmSDxaLnn"); // 130 sep.dxaLnn dxa word
+ aTab[i++] = new Ww1SingleSprmWord("sprmSDyaHdrTop"); // 131 sep.dyaHdrTop dya word
+ aTab[i++] = new Ww1SingleSprmWord("sprmSDyaHdrBottom"); // 132 sep.dyaHdrBottom dya word
+ aTab[i++] = new Ww1SingleSprmBool("sprmSLBetween"); // 133 sep.fLBetween 0 or 1 byte
+ aTab[i++] = new Ww1SingleSprmByte("sprmSVjc"); // 134 sep.vjc vjc byte
+ aTab[i++] = new Ww1SingleSprmWord("sprmSLnnMin"); // 135 sep.lnnMin lnn word
+ aTab[i++] = new Ww1SingleSprmWord("sprmSPgnStart"); // 136 sep.pgnStart pgn word
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 137
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 138
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 139
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 140
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 141
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 142
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 143
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 144
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 145
+ aTab[i++] = new Ww1SingleSprmWord("sprmTJc"); // 146 tap.jc jc word (low order byte is significant)
+ aTab[i++] = new Ww1SingleSprmWord("sprmTDxaLeft"); // 147 tap.rgdxaCenter (see below) dxa word
+ aTab[i++] = new Ww1SingleSprmWord("sprmTDxaGapHalf"); // 148 tap.dxaGapHalf, tap.rgdxaCenter (see below) dxa word
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 149 ???tap.fCantSplit 1 or 0 byte
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 150 ???tap.fTableHeader 1 or 0 byte
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 151 ???tap.rgbrcTable complex(see below) 12 bytes
+ aTab[i++] = new Ww1SingleSprmTDefTable10("sprmTDefTable10"); // 152 tap.rgdxaCenter, tap.rgtc complex (see below) variable length
+ aTab[i++] = new Ww1SingleSprmWord("sprmTDyaRowHeight"); // 153 tap.dyaRowHeight dya word
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 154 ???tap.rgtc complex (see below)
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 155 ???tap.rgshd complex (see below)
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 156 ???tap.tlp TLP 4 bytes
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 157 ???tap.rgtc[].rgbrc complex (see below) 5 bytes
+ aTab[i++] = new Ww1SingleSprm(4, "sprmTInsert"); // 158 tap.rgdxaCenter,tap.rgtc complex (see below) 4 bytes
+ aTab[i++] = new Ww1SingleSprmWord("sprmTDelete"); // 159 tap.rgdxaCenter, tap.rgtc complex (see below) word
+ aTab[i++] = new Ww1SingleSprm(4, "sprmTDxaCol"); // 160 tap.rgdxaCenter complex (see below) 4 bytes
+ aTab[i++] = new Ww1SingleSprmWord("sprmTMerge"); // 161 tap.fFirstMerged, tap.fMerged complex (see below) word
+ aTab[i++] = new Ww1SingleSprmWord("sprmTSplit"); // 162 tap.fFirstMerged, tap.fMerged complex (see below) word
+ aTab[i++] = new Ww1SingleSprm(5, "sprmTSetBrc10"); // 163 tap.rgtc[].rgbrc complex (see below) 5 bytes
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 164
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 165
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 166
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 167
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 168
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 169
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 170
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 171
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 172
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 173
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 174
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 175
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 176
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 177
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 178
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 179
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 180
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 181
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 182
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 183
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 184
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 185
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 186
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 187
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 188
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 189
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 190
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 191
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 192
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 193
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 194
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 195
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 196
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 197
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 198
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 199
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 200
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 201
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 202
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 203
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 204
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 205
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 206
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 207
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 208
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 209
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 210
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 211
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 212
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 213
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 214
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 215
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 216
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 217
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 218
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 219
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 220
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 221
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 222
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 223
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 224
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 225
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 226
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 227
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 228
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 229
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 230
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 231
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 232
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 233
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 234
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 235
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 236
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 237
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 238
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 239
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 240
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 241
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 242
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 243
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 244
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 245
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 246
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 247
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 248
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 249
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 250
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 251
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 252
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 253
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 254
+ aTab[i++] = new Ww1SingleSprm(0, "?"); // 255
+ if (aTab[i-1] == NULL)
+ DeinitTab(); //~ mdt: low mem und nu?
+ DBG_ASSERT(i==sizeof(aTab)/sizeof(*aTab), "Ww1Sprm");
+}
+
+////////////////////////////////////////////////////////////// SprmPapx
+Ww1SprmPapx::Ww1SprmPapx(BYTE* p, USHORT nSize) :
+ Ww1Sprm(Sprm(p, nSize), SprmSize(p, nSize))
+{
+ memset(&aPapx, 0, sizeof(aPapx));
+ memcpy(&aPapx, p, nSize<sizeof(aPapx)?nSize:sizeof(aPapx));
+}
+
+USHORT Ww1SprmPapx::SprmSize(BYTE*, USHORT nSize)
+{
+ USHORT nRet = 0;
+ if (nSize >= sizeof(W1_PAPX))
+ nRet = nSize - ( sizeof(W1_PAPX) - 1 ); // im W1_PAPX ist das
+ // 1. SprmByte enthalten
+ return nRet;
+}
+
+BYTE* Ww1SprmPapx::Sprm(BYTE* p, USHORT nSize)
+{
+ BYTE* pRet = NULL;
+ if (nSize >= sizeof(W1_PAPX))
+ pRet = ((W1_PAPX*)(p))->grpprlGet();
+ return pRet;
+}
+
+/////////////////////////////////////////////////////////////////// Plc
+Ww1Plc::Ww1Plc(Ww1Fib& rFib, ULONG ulFilePos, USHORT nCountBytes, USHORT nItemSize) :
+ p(NULL),
+ nCountBytes(nCountBytes),
+ iMac(0),
+ bOK(FALSE),
+ nItemSize(nItemSize),
+ rFib(rFib)
+{
+ if (!nCountBytes)
+ bOK = TRUE;
+ else
+ if (rFib.GetStream().Seek(ulFilePos) == (ULONG)ulFilePos)
+ if ((p = new BYTE[nCountBytes]) != NULL)
+ if (rFib.GetStream().Read(p, nCountBytes) == (ULONG)nCountBytes)
+ {
+ bOK = TRUE;
+ iMac = (nCountBytes - sizeof(SVBT32)) / (sizeof(SVBT32) + nItemSize);
+ DBG_ASSERT(iMac * ((USHORT)sizeof(ULONG) + nItemSize) +
+ (USHORT)sizeof(SVBT32) == nCountBytes, "Ww1Plc");
+ }
+}
+
+Ww1Plc::~Ww1Plc()
+{
+ delete p;
+}
+
+void Ww1Plc::Seek(ULONG ulSeek, USHORT& nIndex)
+{
+ if (iMac)
+ for (;nIndex <= iMac && Where(nIndex) < ulSeek;nIndex++)
+ ;
+}
+
+ULONG Ww1Plc::Where(USHORT nIndex)
+{
+ ULONG ulRet = 0xffffffff;
+ DBG_ASSERT(nIndex <= iMac, "index out of bounds");
+ if (iMac && nIndex <= iMac)
+ ulRet = SVBT32ToLong(p + sizeof(SVBT32) * nIndex);
+ return ulRet;
+}
+
+BYTE* Ww1Plc::GetData(USHORT nIndex)
+{
+ BYTE* pRet = NULL;
+ DBG_ASSERT(nIndex < iMac, "index out of bounds");
+ if (nIndex < iMac)
+ pRet = p + (iMac + 1) * sizeof(SVBT32) +
+ nIndex * nItemSize; // Pointer auf Inhalts-Array
+ return pRet;
+}
+
+/////////////////////////////////////////////////////////////////// Sep
+
+//////////////////////////////////////////////////////////////// PlcSep
+
+//////////////////////////////////////////////////////////////// PlcPap
+
+//////////////////////////////////////////////////////////////// PlcChp
+
+//////////////////////////////////////////////////////////////// PlcFnr
+
+///////////////////////////////////////////////////////////// PlcFnText
+
+///////////////////////////////////////////////////////////// PlcFields
+
+///////////////////////////////////////////////////////////// PlcBookmarks
+// class Ww1StringList liest im Ctor eine Anzahl von P-Strings aus dem Stream
+// in den Speicher und patcht sie zu C-Strings um.
+// Die Anzahl wird in nMax zurueckgeliefert.
+// im Index 0 stehen alle Strings nacheinander, ab Index 1 werden
+// die einzelnen Strings referenziert.
+Ww1StringList::Ww1StringList( SvStream& rSt, ULONG nFc, USHORT nCb )
+ : pIdxA(0), nMax(0)
+{
+ if( nCb > 2 ) // ueberhaupt Eintraege ?
+ {
+ SVBT16 nCountBytes;
+ DBG_ASSERT(nCb > sizeof(nCountBytes), "Ww1StringList");
+ if (rSt.Seek(nFc) == (ULONG)nFc)
+ if (rSt.Read(nCountBytes, sizeof(nCountBytes))
+ == sizeof(nCountBytes)) // Laenge steht hier nochmal
+ {
+ DBG_ASSERT(SVBT16ToShort(nCountBytes)
+ == nCb, "redundant-size missmatch");
+ // hoffentlich sind sie immer gleich
+ sal_Char* pA = new sal_Char[nCb - sizeof(nCountBytes) + 1];
+ // Alloziere PString-Array
+ //~ Ww1: new-NULL
+ if (rSt.Read(pA, nCb - sizeof(nCountBytes))
+ == (ULONG)nCb - sizeof(nCountBytes)) // lese alle
+ {}// do nothing
+ // Zaehle, wieviele Fonts enthalten
+ long nLeft = nCb - sizeof(nCountBytes);
+ sal_Char* p = pA;
+ while (1)
+ {
+ USHORT nNextSiz;
+ nNextSiz = *p + 1;
+ if(nNextSiz > nLeft)
+ break;
+ nMax++;
+ nLeft -= nNextSiz;
+ if(nLeft < 1) // naechste Laenge muss gelesen werden koennen
+ break;
+ p = p + nNextSiz;
+ }
+ if (nMax)
+ {
+ pIdxA = new sal_Char*[nMax+1]; // alloziere Index-Array
+ pIdxA[0] = pA; // Index 0 : alles
+ // ab Index 1 C-Strings
+ pIdxA[1] = pA + 1; // fuelle Index-Array
+ USHORT i = 2;
+ p = pA;
+ BYTE nL = *p;
+ while(1)
+ {
+ p += nL + 1; // Neues Laengen-Byte
+ nL = *p; // merke Laenge
+ *p = '\0'; // mach C-String draus
+ if( i > nMax )
+ break;
+ pIdxA[i] = p + 1; // Ptr auf C-String
+ i++;
+ }
+ }
+ else
+ pIdxA = 0; // Keine Eintraege -> kein Array
+ }
+ }
+}
+const String Ww1StringList::GetStr( USHORT nNum ) const
+{
+ String sRet;
+ if( nNum <= nMax )
+ sRet = String( pIdxA[ nNum+1 ], RTL_TEXTENCODING_MS_1252 );
+ return sRet;
+}
+
+Ww1Bookmarks::Ww1Bookmarks(Ww1Fib& rFib)
+ : rFib(rFib), aNames(rFib), nIsEnd(0)
+{
+ pPos[0] = new Ww1PlcBookmarkPos(rFib, rFib.GetFIB().fcPlcfbkfGet(),
+ rFib.GetFIB().cbPlcfbkfGet(), FALSE);
+ nPlcIdx[0] = 0;
+ pPos[1] = new Ww1PlcBookmarkPos(rFib, rFib.GetFIB().fcPlcfbklGet(),
+ rFib.GetFIB().cbPlcfbklGet(), TRUE);
+ nPlcIdx[1] = 0;
+ bOK = !aNames.GetError() && !pPos[0]->GetError() && !pPos[1]->GetError();
+}
+
+
+// Der Operator ++ hat eine Tuecke: Wenn 2 Bookmarks aneinandergrenzen, dann
+// sollte erst das Ende des ersten und dann der Anfang des 2. erreicht werden.
+// Liegen jedoch 2 Bookmarks der Laenge 0 aufeinander, *muss* von jedem Bookmark
+// erst der Anfang und dann das Ende gefunden werden.
+// Der Fall: ][
+// [...]
+// ][
+// ist noch nicht geloest, dabei muesste ich in den Anfangs- und Endindices
+// vor- und zurueckspringen, wobei ein weiterer Index oder ein Bitfeld
+// oder etwas aehnliches zum Merken der bereits abgearbeiteten Bookmarks
+// noetig wird.
+void Ww1Bookmarks::operator ++( int )
+{
+ if( bOK )
+ {
+ nPlcIdx[nIsEnd]++;
+
+ register ULONG l0 = pPos[0]->Where(nPlcIdx[0]);
+ register ULONG l1 = pPos[1]->Where(nPlcIdx[1]);
+ if( l0 < l1 )
+ nIsEnd = 0;
+ else if( l1 < l0 )
+ nIsEnd = 1;
+ else
+ nIsEnd = ( nIsEnd ) ? 0 : 1;
+ }
+}
+
+long Ww1Bookmarks::GetHandle() const
+{
+ if( bOK )
+ {
+ if( nIsEnd )
+ return nPlcIdx[1];
+
+ const BYTE* p = pPos[0]->GetData( nPlcIdx[0] );
+ if( p )
+ return SVBT16ToShort( p );
+ }
+ return LONG_MAX;
+}
+
+long Ww1Bookmarks::Len() const
+{
+ if( nIsEnd )
+ {
+ DBG_ASSERT( FALSE, "Falscher Aufruf (1) von Ww1Bookmarks::Len()" );
+ return 0;
+ }
+ USHORT nEndIdx = SVBT16ToShort(pPos[0]->GetData(nPlcIdx[0]));
+ return pPos[1]->Where(nEndIdx) - pPos[0]->Where(nPlcIdx[0]);
+}
+
+const String Ww1Bookmarks::GetName() const
+{
+ if( nIsEnd )
+ return String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "???" ));
+ return aNames.GetStr( nPlcIdx[0] );
+}
+
+/////////////////////////////////////////////////////////////////// Fkp
+Ww1Fkp::Ww1Fkp(SvStream& rStream, ULONG ulFilePos, USHORT nItemSize) :
+ nItemSize(nItemSize),
+ bOK(FALSE)
+{
+ if (rStream.Seek(ulFilePos) == (ULONG)ulFilePos)
+ if (rStream.Read(aFkp, sizeof(aFkp)) == sizeof(aFkp))
+ bOK = TRUE;
+}
+
+ULONG Ww1Fkp::Where(USHORT nIndex)
+{
+ ULONG lRet = 0xffffffff;
+ DBG_ASSERT(nIndex<=Count(), "index out of bounds");
+ if (nIndex<=Count())
+ lRet = SVBT32ToLong(aFkp+nIndex*sizeof(SVBT32));
+ return lRet;
+}
+
+BYTE* Ww1Fkp::GetData(USHORT nIndex)
+{
+ BYTE* pRet = NULL;
+ DBG_ASSERT(nIndex<=Count(), "index out of bounds");
+ if (nIndex<=Count())
+ pRet = aFkp + (Count()+1) * sizeof(SVBT32) +
+ nIndex * nItemSize; // beginn der strukturen
+ return pRet;
+}
+
+//////////////////////////////////////////////////////////////// FkpPap
+BOOL Ww1FkpPap::Fill(USHORT nIndex, BYTE*& p, USHORT& rnCountBytes)
+{
+ DBG_ASSERT( nIndex < Count(), "Ww1FkpPap::Fill() Index out of Range" );
+ USHORT nOffset = SVBT8ToByte(GetData(nIndex)) * 2;
+ if (nOffset)
+ {
+ DBG_ASSERT(nOffset>(USHORT)(Count()*sizeof(SVBT32)), "calc error");
+// rnCountBytes = SVBT8ToByte(aFkp+nOffset) * 2 + 1; // SH: +1 ?????
+ rnCountBytes = SVBT8ToByte(aFkp+nOffset) * 2;
+ nOffset += sizeof(SVBT8);
+ if( nOffset + rnCountBytes < 511 ) // SH: Assert schlug 1 zu frueh zu
+ rnCountBytes++; // SH: Ich weiss nicht genau,
+ // ob das letzte Byte des PAPX
+ // genutzt wird, aber so vergessen
+ // wir keins und sind trotzdem
+ // auf der sicheren Seite
+ DBG_ASSERT(nOffset+rnCountBytes <= 511, "calc error");
+ p = aFkp + nOffset;
+ }
+ else
+ {
+ p = NULL;
+ rnCountBytes = 0;
+ }
+ return TRUE;
+}
+
+BOOL Ww1FkpPap::Fill(
+ USHORT nIndex, BYTE*& p, USHORT& rnCountBytes, ULONG& rulStart, ULONG& rulEnd)
+{
+ rulStart = Where(nIndex);
+ rulEnd = Where(nIndex+1);
+ Fill(nIndex, p, rnCountBytes);
+ return TRUE;
+}
+
+//////////////////////////////////////////////////////////////// FkpChp
+BOOL Ww1FkpChp::Fill(USHORT nIndex, W1_CHP& aChp)
+{
+ DBG_ASSERT( nIndex < Count(), "Ww1FkpChp::Fill() Index out of Range" );
+ memset(&aChp, 0, sizeof(aChp)); // Default, da verkuerzt gespeichert
+ USHORT nOffset = GetData(nIndex)[0] * 2;
+ if (nOffset)
+ {
+ DBG_ASSERT(nOffset>(USHORT)(Count()*sizeof(SVBT32)), "calc error");
+ USHORT nCountBytes = aFkp[nOffset];
+ nOffset += sizeof(SVBT8);
+ DBG_ASSERT(nCountBytes <= 511-nOffset, "calc error");
+ DBG_ASSERT(nCountBytes <= sizeof(aChp), "calc error");
+ memcpy(&aChp, aFkp+nOffset, nCountBytes);
+ }
+ return TRUE;
+}
+
+BOOL Ww1FkpChp::Fill(USHORT nIndex, W1_CHP& aChp, ULONG& rulStart, ULONG& rulEnd)
+{
+ DBG_ASSERT( nIndex < Count(), "Ww1FkpChp::Fill() Index out of Range" );
+ rulStart = Where(nIndex);
+ rulEnd = Where(nIndex+1);
+ memset(&aChp, 0, sizeof(aChp)); // Default, da verkuerzt gespeichert
+ USHORT nOffset = GetData(nIndex)[0] * 2;
+ if (nOffset)
+ {
+ DBG_ASSERT(nOffset>(USHORT)(Count()*sizeof(SVBT32)), "calc error");
+ USHORT nCountBytes = aFkp[nOffset];
+ nOffset += sizeof(SVBT8);
+ DBG_ASSERT(nCountBytes <= 511-nOffset, "calc error");
+ DBG_ASSERT(nCountBytes <= sizeof(aChp), "calc error");
+ memcpy(&aChp, aFkp+nOffset, nCountBytes);
+ }
+ return TRUE;
+}
+
+///////////////////////////////////////////////////////////////// Assoc
+Ww1Assoc::Ww1Assoc(Ww1Fib& rFib)
+ : rFib(rFib), pBuffer(NULL), bOK(FALSE)
+{
+ USHORT cb = rFib.GetFIB().cbSttbfAssocGet();
+ for (USHORT i=0;i<MaxFields;i++)
+ pStrTbl[i] = NULL;
+ if ((pBuffer = new sal_Char[cb]) != NULL
+ && rFib.GetStream().Seek(rFib.GetFIB().fcSttbfAssocGet()) ==
+ rFib.GetFIB().fcSttbfAssocGet()
+ && rFib.GetStream().Read(pBuffer, cb) == cb)
+ {
+ USHORT j;
+ DBG_ASSERT( cb == SVBT16ToShort( *(SVBT16*)pBuffer ), "size missmatch");
+ for (i=0,j=sizeof(SVBT16);j<cb && i<Criteria1;i++)
+ {
+ pStrTbl[i] = pBuffer+j;
+ j += (*pBuffer + j) + 1;
+ }
+ bOK = TRUE;
+ }
+}
+
+String Ww1Assoc::GetStr(USHORT code)
+{
+ String sRet;
+ DBG_ASSERT(code<MaxFields, "out of range");
+ if (pStrTbl[code] != NULL)
+ for( USHORT i=0;i<pStrTbl[code][0];i++ )
+ sRet += String( pStrTbl[code][i+1], RTL_TEXTENCODING_MS_1252 );
+ return sRet;
+}
+
+/////////////////////////////////////////////////////////////////// Pap
+Ww1Pap::Ww1Pap(Ww1Fib& rFib) :
+ Ww1PlcPap(rFib),
+ nPlcIndex(0),
+ nFkpIndex(0),
+ nPushedPlcIndex(0xffff),
+ nPushedFkpIndex(0xffff),
+ ulOffset(0),
+ pPap(0)
+{
+}
+
+void Ww1Pap::Seek(ULONG ulSeek)
+{
+ while (ulSeek > Where())
+ (*this)++;
+}
+
+// SH: Where hat einen Parameter mitbekommen, der sagt, ob bei Neuanlegen eines
+// Fkps der zugehoerige Index auf 0 gesetzt werden soll
+// ( darf fuer Push/Pop nicht passieren )
+// Ein eleganterer Weg faellt mir auf die Schnelle nicht ein
+ULONG Ww1Pap::Where( BOOL bSetIndex )
+{
+ ULONG ulRet = 0xffffffff;
+ if (pPap == NULL)
+ if (nPlcIndex < Count())
+ {
+ pPap = new Ww1FkpPap(rFib.GetStream(),
+ SVBT16ToShort(GetData(nPlcIndex)) << 9);
+ if( bSetIndex )
+ nFkpIndex = 0;
+ }
+ if (pPap != NULL)
+// if (nFkpIndex < pPap->Count())
+ if (nFkpIndex <= pPap->Count())
+ ulRet = pPap->Where(nFkpIndex) - rFib.GetFIB().fcMinGet();
+ return ulRet;
+}
+
+void Ww1Pap::operator++(int)
+{
+ if (pPap != NULL)
+// if (++nFkpIndex >= pPap->Count())
+ if (++nFkpIndex > pPap->Count())
+ {
+ delete pPap;
+ pPap = NULL;
+ nPlcIndex++;
+ }
+}
+
+// SH: FindSprm sucht in grpprl nach Sprm nId
+// Rueckgabe: Pointer oder 0
+BOOL Ww1Pap::FindSprm(USHORT nId, BYTE* pStart, BYTE* pEnd)
+{
+ Ww1Sprm aSprm( pStart, pEnd-pStart );
+ USHORT nC = aSprm.Count();
+ int i;
+ BYTE nI;
+ USHORT nLen;
+ BYTE *pData;
+ for( i = 0; i < nC; i++ ){
+ aSprm.Fill( i, nI, nLen, pData );
+ if( nI == nId )
+ return TRUE;
+ }
+ return FALSE;
+}
+
+BOOL Ww1Pap::HasId0(USHORT nId)
+{
+ BOOL bRet = FALSE;
+ UpdateIdx();
+
+ if( !pPap ){
+ DBG_ASSERT( FALSE, "Ww1Pap::HasId():: kann kein pPap erzeugen" );
+ return FALSE;
+ }
+
+ BYTE* p;
+ USHORT n;
+ if( pPap->Fill(nFkpIndex, p, n) ){
+ BYTE* p2 = ((W1_PAPX*)(p))->grpprlGet(); // SH: Offset fehlte
+ bRet = FindSprm( nId, p2, p+n );
+ }
+ return bRet;
+}
+
+BOOL Ww1Pap::HasId(USHORT nId)
+{
+ BOOL bRet = FALSE;
+ USHORT nPushedPlcIndex = nPlcIndex;
+ USHORT nPushedFkpIndex = nFkpIndex;
+ bRet = HasId0( nId );
+ if (nPlcIndex != nPushedPlcIndex)
+ {
+ delete pPap;
+ pPap = NULL;
+ }
+ nPlcIndex = nPushedPlcIndex;
+ nFkpIndex = nPushedFkpIndex;
+ Where( FALSE );
+ return bRet;
+}
+
+BOOL Ww1Pap::NextHas(USHORT nId)
+{
+ BOOL bRet = FALSE;
+ USHORT nPushedPlcIndex = nPlcIndex;
+ USHORT nPushedFkpIndex = nFkpIndex;
+ (*this)++;
+ bRet = HasId0( nId );
+ if (nPlcIndex != nPushedPlcIndex)
+ {
+ delete pPap;
+ pPap = NULL;
+ }
+ nPlcIndex = nPushedPlcIndex;
+ nFkpIndex = nPushedFkpIndex;
+ Where( FALSE );
+ return bRet;
+}
+
+/////////////////////////////////////////////////////////////////// Chp
+Ww1Chp::Ww1Chp(Ww1Fib& rFib) :
+ Ww1PlcChp(rFib),
+ nPlcIndex(0),
+ nFkpIndex(0),
+ nPushedPlcIndex(0xffff),
+ nPushedFkpIndex(0xffff),
+ ulOffset(0),
+ pChp(0)
+{
+}
+
+void Ww1Chp::Seek(ULONG ulSeek)
+{
+ while (ulSeek > Where())
+ (*this)++;
+}
+
+// SH: Where hat einen Parameter mitbekommen, der sagt, ob bei Neuanlegen eines
+// Fkps der zugehoerige Index auf 0 gesetzt werden soll
+// ( darf fuer Push/Pop nicht passieren )
+// Ein eleganterer Weg faellt mir auf die Schnelle nicht ein
+ULONG Ww1Chp::Where( BOOL bSetIndex )
+{
+ ULONG ulRet = 0xffffffff;
+ if (pChp == NULL)
+ if (nPlcIndex < Count())
+ {
+ pChp = new Ww1FkpChp(rFib.GetStream(),
+ SVBT16ToShort(GetData(nPlcIndex)) << 9);
+ if( bSetIndex )
+ nFkpIndex = 0;
+ }
+ if (pChp != NULL)
+// if (nFkpIndex < pChp->Count())
+ if (nFkpIndex <= pChp->Count())
+ ulRet = pChp->Where(nFkpIndex) -
+ rFib.GetFIB().fcMinGet() - ulOffset;
+ return ulRet;
+}
+
+void Ww1Chp::operator++(int)
+{
+ if (pChp != NULL)
+// if (++nFkpIndex >= pChp->Count())
+ if (++nFkpIndex > pChp->Count())
+ {
+ delete pChp;
+ pChp = NULL;
+ nPlcIndex++;
+ }
+}
+
+////////////////////////////////////////////////////////////// Manager
+Ww1Manager::Ww1Manager(SvStream& rStrm, ULONG nFieldFlgs) :
+ bOK(FALSE),
+ bInTtp(FALSE),
+ bInStyle(FALSE),
+ bStopAll(FALSE),
+ aFib(rStrm),
+ aDop(aFib),
+ aFonts(aFib, nFieldFlgs),
+ aSep(aFib, aDop.GetDOP().grpfIhdtGet()),
+ aDoc(aFib),
+ pDoc(&aDoc),
+ ulDocSeek(0),
+ pSeek(&ulDocSeek),
+ aPap(aFib),
+ aChp(aFib),
+ aFld(aFib),
+ pFld(&aFld),
+ aFtn(aFib),
+ aBooks(aFib)
+{
+ bOK = !aFib.GetError()
+ && !aFib.GetFIB().fComplexGet()
+ && !aDoc.GetError()
+ && !aSep.GetError()
+ && !aPap.GetError()
+ && !aChp.GetError()
+ && !aFld.GetError()
+ && !aFtn.GetError()
+ && !aBooks.GetError();
+}
+
+BOOL Ww1Manager::IsValidFib(const BYTE*p, USHORT size)
+{
+ return ((
+ ((W1_FIB*)p)->wIdentGet() == 42396
+ && ((W1_FIB*)p)->nFibGet() == 33 // ww1
+#ifdef DEBUG
+ || ((W1_FIB*)p)->wIdentGet() == 42459
+ && ((W1_FIB*)p)->nFibGet() == 45 // ww2b
+#endif
+ )
+// && ((W1_FIB*)p)->nProductGet() == 8413
+ && ((W1_FIB*)p)->fComplexGet() == 0);
+}
+
+BOOL Ww1Manager::HasInTable()
+{
+ return aPap.HasId(24); // Ww1SingleSprmPFInTable
+}
+
+BOOL Ww1Manager::HasTtp()
+{
+ return aPap.HasId(25); // Ww1SingleSprmPTtp
+}
+
+BOOL Ww1Manager::NextHasTtp()
+{
+ return aPap.NextHas(25); // Ww1SingleSprmPTtp
+}
+
+BOOL Ww1Manager::HasPPc()
+{
+ return aPap.HasId(29); // Ww1SingleSprmPPc
+}
+
+BOOL Ww1Manager::HasPDxaAbs()
+{
+ return aPap.HasId(26); // Ww1SingleSprmPDxaAbs
+}
+
+/**********************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww1/w1class.cxx,v 1.1.1.1 2000-09-18 17:14:57 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.19 2000/09/18 16:04:56 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.18 2000/05/11 16:06:45 jp
+ Changes for Unicode
+
+ Revision 1.17 1998/02/19 16:00:42 HJS
+ fuer sh eingechecked
+
+
+ Rev 1.16 19 Feb 1998 17:00:42 HJS
+ fuer sh eingechecked
+
+ Rev 1.15 29 Nov 1997 17:37:08 MA
+ includes
+
+ Rev 1.14 09 Oct 1997 14:13:46 JP
+ Aenderungen von SH
+
+ Rev 1.13 03 Sep 1997 14:15:58 SH
+ Flys, Tabellen ok, Style-Abhaengigkeiten u.v.a.m
+
+ Rev 1.12 11 Aug 1997 12:49:08 SH
+ Flys und einfache Tabellen und Tabulatoren
+
+ Rev 1.11 18 Jul 1997 09:31:38 MA
+ Stand von SH, #41738# GPF und Tabellen etwas besser
+
+ Rev 1.9 16 Jun 1997 13:08:56 MA
+ Stand Micheal Dietrich
+
+ Rev 1.7 12 Mar 1997 19:11:52 SH
+ MDT: Progressbar, Pagedesc-Bug, Spalten, Anfang Tabellen u.a.
+
+ Rev 1.6 10 Jan 1997 18:42:40 SH
+ Stabiler und mehr von MDT
+
+ Rev 1.5 28 Nov 1996 18:08:28 SH
+ Schneller Schoener Weiter von MDT
+
+ Rev 1.4 05 Nov 1996 12:47:28 mda
+ kein io.h unter Unix includen
+
+ Rev 1.3 14 Oct 1996 13:07:12 KH
+ explizite Feldlaenge wg. compiler bug
+
+ Rev 1.2 30 Sep 1996 23:27:52 SH
+ neu von MDA
+
+ Rev 1.1 11 Sep 1996 11:23:40 TRI
+ WIN16 brauchte Cast
+
+ Rev 1.0 10 Sep 1996 02:10:06 SH
+ Initial revision.
+
+
+**********************************************************************/
+//]})
diff --git a/sw/source/filter/ww1/w1class.hxx b/sw/source/filter/ww1/w1class.hxx
new file mode 100644
index 000000000000..d4ac0cfe510c
--- /dev/null
+++ b/sw/source/filter/ww1/w1class.hxx
@@ -0,0 +1,1753 @@
+/*************************************************************************
+ *
+ * $RCSfile: w1class.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _STRING_HXX
+#include <tools/string.hxx>
+#endif
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+
+// local
+#ifndef _W1STRUCT_HXX
+#include <w1struct.hxx>
+#endif
+
+#ifdef DUMP
+#include <fstream.h>
+#endif
+
+class ostream;
+class SvxFontItem;
+class SvxBorderLine;
+class SvxBoxItem;
+class SvStream;
+class SfxPoolItem;
+class SwField;
+class Ww1Annotation;
+class Ww1AtnText;
+class Ww1Chp;
+class Ww1DocText;
+class Ww1Dop;
+class Ww1Fib;
+class Ww1Fkp;
+class Ww1FkpChp;
+class Ww1FkpPap;
+class Ww1Fonts;
+class Ww1Manager;
+class Ww1McrText;
+class Ww1Pap;
+class Ww1PlainText;
+class Ww1Plc;
+class Ww1PlcAnnotationRef;
+class Ww1PlcAnnotationTxt;
+class Ww1PlcChp;
+class Ww1PlcFields;
+class Ww1PlcFieldFootnote;
+class Ww1PlcFieldHeaderFooter;
+class Ww1PlcFieldMacro;
+class Ww1PlcFieldText;
+class Ww1PlcFootnoteRef;
+class Ww1PlcFootnoteTxt;
+class Ww1PlcGlossary;
+class Ww1PlcHdd;
+class Ww1PlcPap;
+class Ww1PlcSep;
+class Ww1Shell;
+class Ww1Sprm;
+class Ww1SprmPapx;
+class Ww1SprmSep;
+class Ww1Style;
+class Ww1StyleSheet;
+
+///////////////////////////////////////////////////////////////////////
+//
+// nach moeglichkeit wurden in diesem modul methoden aehnlicher
+// funktionalitaet gleich benannt. Die namen wurden wenn moeglich vom
+// ww-filter uebernommen.
+// Where() gibt die position eines elements. dies kann sowohl eine
+// seek-position im stream als auch ein relativer offset sein, da dies
+// bei word durcheinander geht. die methoden sind durch kommentare
+// gekennzeichnet, ob sie sich auf positionen in der datei oder
+// innerhalb des textes beziehen. vorsicht: innerhalb des textes kann
+// verschiedene texte in der datei bedeuten.
+// Count() gibt die anzahl der elemente zurueck. vorsicht bei
+// n/n-1-feldern (word speichert strukturen gern in doppel-arrays, in
+// denen das erste n elemente, das zweite jedoch n-1 elemente
+// enthaelt.
+// Fill() fuellt uebergebene referenzen mit daten aus den
+// word-strukturen.
+// GetData() gibt zeiger auf den datenbereich zurueck
+// GetError() gibt zurueck, ob fehler aufgetreten ist
+// Start(), Stop(), Out(), op<< siehe modul w1filter
+// Dump() siehe modul w1dump
+//
+
+/////////////////////////////////////////////////////////////////// Fib
+//
+// file information block: wurzel des uebels: steht am beginn der
+// datei (seek(0)) und enthaelt alle positionen der strukturen der
+// datei
+//
+class Ww1Fib
+{
+ W1_FIB aFib;
+ BOOL bOK;
+ SvStream& rStream;
+public:
+ Ww1Fib(SvStream&);
+ friend ostream& operator <<(ostream&, Ww1Fib&);
+ W1_FIB& GetFIB() { return aFib; }
+ BOOL GetError() { return !bOK; }
+ SvStream& GetStream() { return rStream; }
+};
+
+/////////////////////////////////////////////////////////////////// Dop
+//
+// document property: eigenschaften des gesamten dokuments
+//
+class Ww1Dop
+{
+ W1_DOP aDop;
+ Ww1Fib& rFib;
+ BOOL bOK;
+public:
+ Ww1Dop(Ww1Fib&);
+ BOOL GetError() {
+ return !bOK; }
+ W1_DOP& GetDOP() {
+ return aDop; }
+ friend ostream& operator <<(ostream&, Ww1Dop&);
+ void Out(Ww1Shell&);
+};
+
+///////////////////////////////////////////////////////////// PlainText
+//
+// ww-dateien koennen mehrere textbloecke enthalten (main-text,
+// fusznoten etc). PlainText vereinigt die gemeinsamkeiten
+//
+class Ww1PlainText
+{
+protected:
+ Ww1Fib& rFib;
+ ULONG ulFilePos;
+ ULONG ulCountBytes;
+ ULONG ulSeek;
+ BOOL bOK;
+public:
+ Ww1PlainText( Ww1Fib& rFib, ULONG ulFilePos, ULONG ulCountBytes )
+ : rFib( rFib ), ulCountBytes( ulCountBytes ),
+ ulFilePos( ulFilePos ), ulSeek( 0 ), bOK(TRUE)
+ {}
+
+ // innerhalb des textes
+ ULONG Where() const { return ulSeek; }
+ void Seek( ULONG ulNew )
+ {
+ DBG_ASSERT(ulNew < ulCountBytes, "Ww1PlainText")
+ if (ulNew < ulCountBytes)
+ ulSeek = ulNew;
+ }
+
+ ULONG Count() const { return ulCountBytes; }
+ void SetCount(ULONG ulNew)
+ {
+ ulNew += ulSeek;
+ if (ulCountBytes > ulNew)
+ ulCountBytes = ulNew;
+ }
+ void operator++(int)
+ {
+ DBG_ASSERT(ulSeek+1<ulCountBytes, "Ww1PlainText");
+ ulSeek++;
+ }
+ BOOL GetError() { return !bOK; }
+ sal_Unicode Out( Ww1Shell&, ULONG& );
+ sal_Unicode Out( String&, ULONG=0xffffffff);
+ sal_Unicode Out( sal_Unicode& );
+ friend ostream& operator <<(ostream&, Ww1PlainText&);
+ String& Fill( String&, ULONG=0, ULONG=0xffffffff );
+ sal_Unicode operator []( ULONG );
+ String GetText( ULONG ulOffset, ULONG nLen ) const;
+
+ enum Consts { MinChar = 32 };
+ static BOOL IsChar( sal_Unicode c ) { return c >= MinChar; }
+};
+
+/////////////////////////////////////////////////////////////// DocText
+class Ww1DocText : public Ww1PlainText
+{
+public:
+ Ww1DocText(Ww1Fib& rFib) :
+ Ww1PlainText(rFib, rFib.GetFIB().fcMinGet(),
+ rFib.GetFIB().ccpTextGet()) {
+ }
+};
+
+/////////////////////////////////////////////////////////////// FtnText
+class Ww1FtnText : public Ww1PlainText
+{
+public:
+ ULONG Offset(Ww1Fib& rFib) {
+ return rFib.GetFIB().ccpTextGet(); }
+ Ww1FtnText(Ww1Fib& rFib) :
+ Ww1PlainText(rFib, rFib.GetFIB().fcMinGet() +
+ Offset(rFib), rFib.GetFIB().ccpFtnGet()) {
+ }
+};
+
+/////////////////////////////////////////////////////////////// HddText
+class Ww1HddText : public Ww1PlainText
+{
+public:
+ ULONG Offset(Ww1Fib& rFib) {
+ return rFib.GetFIB().ccpTextGet() + rFib.GetFIB().ccpFtnGet(); }
+ Ww1HddText(Ww1Fib& rFib) :
+ Ww1PlainText(rFib, rFib.GetFIB().fcMinGet() +
+ Offset(rFib), rFib.GetFIB().ccpHddGet()) {
+ }
+};
+
+/////////////////////////////////////////////////////////////// McrText
+class Ww1McrText : public Ww1PlainText
+{
+public:
+ ULONG Offset(Ww1Fib& rFib) {
+ return rFib.GetFIB().ccpTextGet() + rFib.GetFIB().ccpFtnGet()
+ + rFib.GetFIB().ccpHddGet(); }
+ Ww1McrText(Ww1Fib& rFib) :
+ Ww1PlainText(rFib, rFib.GetFIB().fcMinGet() +
+ Offset(rFib), rFib.GetFIB().ccpMcrGet()) {
+ }
+};
+
+/////////////////////////////////////////////////////////////// AtnText
+class Ww1AtnText : public Ww1PlainText
+{
+public:
+ ULONG Offset(Ww1Fib& rFib) {
+ return rFib.GetFIB().ccpTextGet() + rFib.GetFIB().ccpFtnGet()
+ + rFib.GetFIB().ccpHddGet() + rFib.GetFIB().ccpMcrGet(); }
+ Ww1AtnText(Ww1Fib& rFib) :
+ Ww1PlainText(rFib, rFib.GetFIB().fcMinGet() +
+ Offset(rFib), rFib.GetFIB().ccpAtnGet()) {
+ }
+};
+
+///////////////////////////////////////////////////////////////// Style
+//
+// ein einzelner style oder vorlage
+//
+class Ww1Style
+{
+ String aName;
+ W1_CHP aChpx;
+ Ww1SprmPapx* pPapx;
+ Ww1StyleSheet* pParent;
+ BYTE stcBase;
+ BYTE stcNext;
+ BOOL bUsed;
+public:
+ Ww1Style();
+ ~Ww1Style();
+ BOOL IsUsed() const { return bUsed; }
+ void SetDefaults(BYTE);
+ void SetParent(Ww1StyleSheet* newParent) { pParent = newParent; }
+ void SetName(const String& rName) { bUsed = TRUE; aName = rName; }
+ const String& GetName() const { return aName; }
+// Ww1Style& GetNext();
+ Ww1Style& GetBase();
+ USHORT GetnBase() const { return stcBase; }
+ USHORT GetnNext() const { return stcNext; }
+ USHORT ReadName(BYTE*&, USHORT&, USHORT stc);
+ USHORT ReadChpx(BYTE*&, USHORT&);
+ USHORT ReadPapx(BYTE*&, USHORT&);
+ USHORT ReadEstcp(BYTE*&, USHORT&);
+ friend ostream& operator <<(ostream&, Ww1Style&);
+ void Out(Ww1Shell&, Ww1Manager&);
+};
+
+//////////////////////////////////////////////////////////// StyleSheet
+//
+// die sammlung aller vorlagen (max. 256)
+//
+class Ww1StyleSheet
+{
+ Ww1Style aStyles[256];
+ USHORT cstcStd; // count style code standard
+ Ww1Fib& rFib;
+ BOOL bOK;
+ USHORT ReadNames(BYTE*&, USHORT&);
+ USHORT ReadChpx(BYTE*&, USHORT&);
+ USHORT ReadPapx(BYTE*&, USHORT&);
+ USHORT ReadEstcp(BYTE*&, USHORT&);
+
+ void OutDefaults(Ww1Shell& rOut, Ww1Manager& rMan, USHORT stc);
+ void OutOne(Ww1Shell& rOut, Ww1Manager& rMan, USHORT stc);
+ void OutOneWithBase(Ww1Shell& rOut, Ww1Manager& rMan, USHORT stc,
+ BYTE* pbStopRecur );
+public:
+ Ww1StyleSheet(Ww1Fib& rFib);
+ Ww1Style& GetStyle(USHORT stc) {
+ return aStyles[stc]; }
+ USHORT Count() {
+ return 256; }
+ friend ostream& operator <<(ostream&, Ww1StyleSheet&);
+ void Out(Ww1Shell&, Ww1Manager&);
+ friend Ww1Style;
+ BOOL GetError() {
+ return !bOK; }
+};
+
+///////////////////////////////////////////////////////////////// Fonts
+//
+// ww kennt nur font-nummern beim formatieren. nebenher gibts ein
+// array von fonts, damit man aus der nummer einen konkreten font
+// machen kann.
+//
+class Ww1Fonts
+{
+protected:
+ W1_FFN** pFontA; // Array of Pointers to Font Description
+ Ww1Fib& rFib;
+ ULONG nFieldFlags;
+ USHORT nMax; // Array-Groesse
+ BOOL bOK;
+public:
+ Ww1Fonts(Ww1Fib&, ULONG nFieldFlgs);
+ ~Ww1Fonts() {
+ if (pFontA)
+ DELETEZ(pFontA[0]);
+ DELETEZ(pFontA); }
+ W1_FFN* GetFFN(USHORT nNum);
+ USHORT Count() {
+ return nMax; }
+ friend ostream& operator <<(ostream&, Ww1Fonts&);
+ BOOL GetError() {
+ return !bOK; }
+ SvxFontItem GetFont(USHORT);
+};
+
+//////////////////////////////////////////////////////////// SingleSprm
+//
+// diese klassen ersetzen die aSprmTab etc des ww6-filters. die
+// funktionspointer sind hier virtuale methoden, fuer die typen (byte,
+// word, var-sized etc) gibt es abgeleitete klassen. diese haben
+// methoden zum bestimmen der groesze, dumpen und shell-ausgeben der
+// Sprms.
+// die klassen werden mit new (in InitTab()) erzeugt und nach ihrem
+// code in die tabelle gestellt. zum aktivieren ruft man nun nur noch
+// die entsprechende methode des objektes in der tabelle auf.
+// wohlgemerkt: SingleSprms sind die _beschreibung_ und _funktion_ der
+// Sprms, nicht deren inhalt. dieser musz uebergeben werden an die
+// einzelnen methoden wie Size, Dump und Start/Stop.
+//
+class Ww1SingleSprm
+{
+public:
+#ifdef DUMP
+//
+// allein die virtuellen methoden stehen in der vtab, also je nachdem,
+// ob fuer dumper oder filter uebersetzt wird ausblenden: das spart
+// platz. ausserdem stehen die methoden fuer dumper bzw filter in
+// verschiedenen modulen, die im jeweils anderen projekt nicht
+// uebersetzt werden. das diese dann beim linken nicht zur verfuegung
+// stehen faellt dann auch nicht auf. Der Namensstring ist nur im
+// Dumper noetig: weg damit im Filter.
+//
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+ void Stop(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+ virtual ostream& Dump(ostream&, BYTE*, USHORT);
+ const sal_Char* sName;
+#else
+ virtual void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+ virtual void Stop(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+ ostream& Dump(ostream&, BYTE*, USHORT);
+#endif
+ virtual USHORT Size(BYTE*);
+ USHORT nCountBytes;
+
+ Ww1SingleSprm(USHORT nCountBytes, const sal_Char* pName = 0 )
+ : nCountBytes(nCountBytes)
+#ifdef DUMP
+ , sName( pName)
+#endif
+ {
+ }
+};
+
+class Ww1SingleSprmByteSized : public Ww1SingleSprm {
+public:
+// ostream& Dump(ostream&, BYTE*, USHORT);
+ USHORT Size(BYTE*);
+ Ww1SingleSprmByteSized(USHORT nCountBytes, sal_Char* sName = 0) :
+ Ww1SingleSprm(nCountBytes, sName) {
+ }
+};
+
+class Ww1SingleSprmWordSized : public Ww1SingleSprm {
+public:
+// ostream& Dump(ostream&, BYTE*, USHORT);
+ USHORT Size(BYTE*);
+ Ww1SingleSprmWordSized(USHORT nCountBytes, sal_Char* sName = 0) :
+ Ww1SingleSprm(nCountBytes, sName) {
+ }
+};
+
+class Ww1SingleSprmByte : public Ww1SingleSprm {
+public:
+ ostream& Dump(ostream&, BYTE*, USHORT);
+// USHORT Size(BYTE*);
+ Ww1SingleSprmByte(sal_Char* sName = 0) :
+ Ww1SingleSprm(1, sName) {
+ }
+};
+
+class Ww1SingleSprmBool : public Ww1SingleSprmByte {
+public:
+ ostream& Dump(ostream&, BYTE*, USHORT);
+// USHORT Size(BYTE*);
+ Ww1SingleSprmBool(sal_Char* sName = 0) :
+ Ww1SingleSprmByte(sName) {
+ }
+};
+
+class Ww1SingleSprm4State : public Ww1SingleSprmByte {
+public:
+ ostream& Dump(ostream&, BYTE*, USHORT);
+// USHORT Size(BYTE*);
+ Ww1SingleSprm4State(sal_Char* sName = 0) :
+ Ww1SingleSprmByte(sName) {
+ }
+};
+
+class Ww1SingleSprmWord : public Ww1SingleSprm {
+public:
+ ostream& Dump(ostream&, BYTE*, USHORT);
+// USHORT Size(BYTE*);
+ Ww1SingleSprmWord(sal_Char* sName = 0) :
+ Ww1SingleSprm(2, sName) {
+ }
+};
+
+class Ww1SingleSprmLong : public Ww1SingleSprm {
+public:
+ ostream& Dump(ostream&, BYTE*, USHORT);
+// USHORT Size(BYTE*);
+ Ww1SingleSprmLong(sal_Char* sName = 0) :
+ Ww1SingleSprm(4, sName) {
+ }
+};
+
+class Ww1SingleSprmTab : public Ww1SingleSprm {
+public:
+ ostream& Dump(ostream&, BYTE*, USHORT);
+ USHORT Size(BYTE*);
+ Ww1SingleSprmTab(USHORT nCountBytes, sal_Char* sName = 0) :
+ Ww1SingleSprm(nCountBytes, sName) {
+ }
+};
+
+class Ww1SingleSprmPJc : public Ww1SingleSprmByte {
+public:
+ Ww1SingleSprmPJc(sal_Char* sName) :
+ Ww1SingleSprmByte(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+ void Stop(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPDxa : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmPDxa(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Stop(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPDxaRight : public Ww1SingleSprmPDxa {
+public:
+ Ww1SingleSprmPDxaRight(sal_Char* sName) :
+ Ww1SingleSprmPDxa(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPDxaLeft : public Ww1SingleSprmPDxa {
+public:
+ Ww1SingleSprmPDxaLeft(sal_Char* sName) :
+ Ww1SingleSprmPDxa(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPDxaLeft1 : public Ww1SingleSprmPDxa {
+public:
+ Ww1SingleSprmPDxaLeft1(sal_Char* sName) :
+ Ww1SingleSprmPDxa(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPFKeep : public Ww1SingleSprmBool {
+public:
+ Ww1SingleSprmPFKeep(sal_Char* sName) :
+ Ww1SingleSprmBool(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+ void Stop(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPFKeepFollow : public Ww1SingleSprmBool {
+public:
+ Ww1SingleSprmPFKeepFollow(sal_Char* sName) :
+ Ww1SingleSprmBool(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+ void Stop(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPPageBreakBefore : public Ww1SingleSprmBool {
+public:
+ Ww1SingleSprmPPageBreakBefore(sal_Char* sName) :
+ Ww1SingleSprmBool(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+ void Stop(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPBrc : public Ww1SingleSprmWord {
+protected:
+// SvxBorderLine* SetBorder(SvxBorderLine*, W1_BRC*);
+ // spezielle start-routine, je nach sprm verschieden versorgt
+ // mit einem BoxItem.
+ void Start(Ww1Shell&, BYTE, W1_BRC10*, USHORT, Ww1Manager&, SvxBoxItem&);
+ void Start(Ww1Shell&, BYTE, W1_BRC*, USHORT, Ww1Manager&, SvxBoxItem&);
+public:
+ Ww1SingleSprmPBrc(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Stop(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+ // SetBorder() wird auch fuer Tabellen gebraucht, deshalb public
+ static SvxBorderLine* SetBorder(SvxBorderLine*, W1_BRC10*);
+};
+
+#define BRC_TOP ((USHORT)0)
+#define BRC_LEFT ((USHORT)1)
+#define BRC_BOTTOM ((USHORT)2)
+#define BRC_RIGHT ((USHORT)3)
+#define BRC_ANZ ((USHORT)BRC_RIGHT-BRC_TOP+1)
+
+// Die BRC-struktur fuer 1.0 versionen von word sind verschieden von
+// denen der folgenden versionen. diese werden zum glueck aber auch
+// von anderen sprms abgerufen.
+// SH: Ab sofort alle 4 Umrandungen ueber nur 1 Klasse.
+class Ww1SingleSprmPBrc10 : public Ww1SingleSprmPBrc {
+ USHORT nLine; // BRC_TOP, BRC_LEFT, ...
+public:
+ Ww1SingleSprmPBrc10(USHORT nL, sal_Char* sName) :
+ nLine(nL), Ww1SingleSprmPBrc(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmParaSpace : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmParaSpace(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Stop(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPDyaBefore : public Ww1SingleSprmParaSpace {
+public:
+ Ww1SingleSprmPDyaBefore(sal_Char* sName) :
+ Ww1SingleSprmParaSpace(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPDyaAfter : public Ww1SingleSprmParaSpace {
+public:
+ Ww1SingleSprmPDyaAfter(sal_Char* sName) :
+ Ww1SingleSprmParaSpace(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPDyaLine : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmPDyaLine(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+ void Stop(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPChgTabsPapx : public Ww1SingleSprmByteSized {
+public:
+ Ww1SingleSprmPChgTabsPapx(sal_Char* sName) :
+ Ww1SingleSprmByteSized(0, sName) {
+ }
+ // Size() ist noch nicht aktiviert !!
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+ void Stop(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmSGprfIhdt : public Ww1SingleSprmByte {
+public:
+ Ww1SingleSprmSGprfIhdt(sal_Char* sName) :
+ Ww1SingleSprmByte(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmSColumns : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmSColumns(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPFInTable : public Ww1SingleSprmBool {
+public:
+ Ww1SingleSprmPFInTable(sal_Char* sName) :
+ Ww1SingleSprmBool(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+ void Stop(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPTtp : public Ww1SingleSprmBool {
+public:
+ Ww1SingleSprmPTtp(sal_Char* sName) :
+ Ww1SingleSprmBool(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+ void Stop(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmTJc : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmTJc(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+//class Ww1SingleSprmTDxaLeft : public Ww1SingleSprmWord {
+//public:
+// Ww1SingleSprmTDxaLeft(sal_Char* sName) :
+// Ww1SingleSprmWord(sName) {
+// }
+// void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+//};
+
+class Ww1SingleSprmTDxaGapHalf : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmTDxaGapHalf(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmTDefTable10 : public Ww1SingleSprmWordSized {
+public:
+ Ww1SingleSprmTDefTable10(sal_Char* sName) :
+ Ww1SingleSprmWordSized(0, sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmTDyaRowHeight : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmTDyaRowHeight(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+// Klassendefinitionen fuer Tabellen-Fastsave-Attribute
+// Da wir kein Fastsave unterstuetzen, brauchen wir's nicht
+
+#if 0
+
+class Ww1SingleSprmTInsert : public Ww1SingleSprm {
+public:
+ Ww1SingleSprmTInsert(sal_Char* sName) :
+ Ww1SingleSprm(4, sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmTDelete : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmTDelete(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmTDxaCol : public Ww1SingleSprm {
+public:
+ Ww1SingleSprmTDxaCol(sal_Char* sName) :
+ Ww1SingleSprm(4, sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmTMerge : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmTMerge(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmTSplit : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmTSplit(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmTSetBrc10 : public Ww1SingleSprm {
+public:
+ Ww1SingleSprmTSetBrc10(sal_Char* sName) :
+ Ww1SingleSprm(5, sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+#endif // 0
+
+// Klassendefinitionen fuer Apos ( == Flys )
+
+class Ww1SingleSprmPpc : public Ww1SingleSprmByte {
+public:
+ Ww1SingleSprmPpc(sal_Char* sName) :
+ Ww1SingleSprmByte(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPDxaAbs : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmPDxaAbs(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPDyaAbs : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmPDyaAbs(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPDxaWidth : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmPDxaWidth(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+class Ww1SingleSprmPFromText : public Ww1SingleSprmWord {
+public:
+ Ww1SingleSprmPFromText(sal_Char* sName) :
+ Ww1SingleSprmWord(sName) {
+ }
+ void Start(Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&);
+};
+
+////////////////////////////////////////////////////////////////// Sprm
+//
+// der tatsaechlich in der datei auftretende datentyp Sprm
+//
+class Ww1Sprm
+{
+ BOOL ReCalc();
+protected:
+ static Ww1SingleSprm* aTab[256];
+ static void InitTab();
+ Ww1SingleSprm& GetTab(USHORT nId) {
+ if (aTab[0] == 0)
+ InitTab();
+ return *aTab[nId]; }
+ BYTE* p;
+ USHORT nCountBytes;
+ BOOL bOK;
+ USHORT* pArr;
+ USHORT count;
+// ohne Token, mit laengen-byte/word
+ USHORT GetSize(BYTE nId, BYTE* pSprm);
+// mit Token und LaengenByte
+ USHORT GetSizeBrutto(BYTE* pSprm) {
+ BYTE nId = *pSprm++;
+ return GetSize(nId, pSprm) + 1; }
+// gibt fuer nTh element id, size & zeiger auf daten:
+// BOOL Fill(USHORT, BYTE&, USHORT&, BYTE*&);
+public:
+// SH: brauche ich public
+// gibt fuer nTh element id, size & zeiger auf daten:
+ BOOL Fill(USHORT, BYTE&, USHORT&, BYTE*&);
+
+ Ww1Sprm(BYTE*, USHORT);
+ Ww1Sprm(SvStream&, ULONG);
+ ~Ww1Sprm();
+ friend ostream& operator <<(ostream&, Ww1Sprm&);
+ void Start(Ww1Shell&, Ww1Manager&);
+ void Start(Ww1Shell&, Ww1Manager&, USHORT);
+ void Stop(Ww1Shell&, Ww1Manager&);
+ BOOL IsUsed() {
+ return nCountBytes != 255; }
+ USHORT Count() {
+ return count; }
+ BOOL GetError() {
+ return !bOK; }
+ static void DeinitTab();
+};
+
+/////////////////////////////////////////////////////////////// Picture
+//
+// der wrapper um den datentyp PIC, eine struktur, die am beginn eines
+// bild-dateinamens oder eines eingebetteten bildes steht.
+//
+class Ww1Picture
+{
+ BOOL bOK;
+ W1_PIC* pPic;
+public:
+ Ww1Picture(SvStream&, ULONG);
+ ~Ww1Picture() {
+ }
+ BOOL GetError() {
+ return !bOK; }
+ friend ostream& operator <<(ostream&, Ww1Picture&);
+ void Out(Ww1Shell&, Ww1Manager&);
+ void WriteBmp(SvStream&);
+};
+
+/////////////////////////////////////////////////////////////////// Plc
+//
+// eine der wichtigen array-strukturen der ww-dateien. sie beinhalten
+// n+1 dateipositionen und n attribute, die zwischen den
+// dateipositionen gelten.
+//
+class Ww1Plc
+{
+ BYTE* p;
+ USHORT nCountBytes;
+ USHORT iMac;
+ USHORT nItemSize;
+ BOOL bOK;
+protected:
+ Ww1Fib& rFib;
+ BYTE* GetData(USHORT);
+public:
+ Ww1Plc(Ww1Fib&, ULONG, USHORT, USHORT);
+ ~Ww1Plc();
+ friend ostream& operator <<(ostream&, Ww1Plc&);
+ ULONG Where(USHORT); // wie im jeweiligen plc
+ void Seek(ULONG, USHORT&);
+ void Fill(USHORT nIndex, ULONG& begin, ULONG& end) {
+ begin = Where(nIndex);
+ end = Where(nIndex+1); }
+ USHORT Count() {
+ return iMac; }
+ BOOL GetError() {
+ return !bOK; }
+};
+
+// Size Tabs from Sven:
+// CHP, PAP, SEP, HED, FNR, FNT
+//Plc 2, 2, 6, 0, 2, 0
+//Fkp 1, 1, 0, 0, 0, 0
+
+/////////////////////////////////////////////////////////// PlcGlossary
+class Ww1PlcGlossary : public Ww1Plc
+{
+public:
+ Ww1PlcGlossary(Ww1Fib& rFib) :
+ Ww1Plc(rFib, rFib.GetFIB().fcPlcfglsyGet(),
+ rFib.GetFIB().cbPlcfglsyGet(), 0) {
+ }
+};
+
+////////////////////////////////////////////////////// PlcAnnotationRef
+class Ww1PlcAnnotationRef : public Ww1Plc
+{
+public:
+ Ww1PlcAnnotationRef(Ww1Fib& rFib) :
+ Ww1Plc(rFib, rFib.GetFIB().fcPlcfandRefGet(),
+ rFib.GetFIB().cbPlcfandRefGet(), 0) {
+ }
+};
+
+////////////////////////////////////////////////////// PlcAnnotationTxt
+class Ww1PlcAnnotationTxt : public Ww1Plc
+{
+public:
+ Ww1PlcAnnotationTxt(Ww1Fib& rFib) :
+ Ww1Plc(rFib, rFib.GetFIB().fcPlcfandTxtGet(),
+ rFib.GetFIB().cbPlcfandTxtGet(), 0) {
+ }
+};
+
+///////////////////////////////////////////////////////// PlcAnnotation
+class Ww1Annotation {
+ Ww1PlcAnnotationRef aRef;
+ Ww1PlcAnnotationTxt aTxt;
+public:
+ Ww1Annotation(Ww1Fib& rFib) :
+ aRef(rFib),
+ aTxt(rFib) {
+ }
+ friend ostream& operator <<(ostream&, Ww1Annotation&);
+};
+
+//////////////////////////////////////////////////////////////// PlcSep
+class Ww1PlcSep : public Ww1Plc
+{
+public:
+ Ww1PlcSep(Ww1Fib& rFib):
+ Ww1Plc(rFib, rFib.GetFIB().fcPlcfsedGet(),
+ rFib.GetFIB().cbPlcfsedGet(), 6) {
+ }
+ friend ostream& operator <<(ostream&, Ww1PlcSep&);
+};
+
+//////////////////////////////////////////////////////////////// PlcChp
+class Ww1PlcChp : public Ww1Plc
+{
+public:
+ Ww1PlcChp(Ww1Fib& rFib) :
+ Ww1Plc(rFib, rFib.GetFIB().fcPlcfbteChpxGet(),
+ rFib.GetFIB().cbPlcfbteChpxGet(), 2) {
+ }
+ friend ostream& operator <<(ostream&, Ww1PlcChp&);
+};
+
+//////////////////////////////////////////////////////////////// PlcPap
+class Ww1PlcPap : public Ww1Plc
+{
+public:
+ Ww1PlcPap(Ww1Fib& rFib) :
+ Ww1Plc(rFib, rFib.GetFIB().fcPlcfbtePapxGet(),
+ rFib.GetFIB().cbPlcfbtePapxGet(), 2) {
+ }
+ friend ostream& operator <<(ostream&, Ww1PlcPap&);
+};
+
+//////////////////////////////////////////////////////// PlcFootnoteRef
+class Ww1PlcFootnoteRef : public Ww1Plc
+{
+public:
+ Ww1PlcFootnoteRef(Ww1Fib& rFib) :
+ Ww1Plc(rFib, rFib.GetFIB().fcPlcffndRefGet(),
+ rFib.GetFIB().cbPlcffndRefGet(), 2) {
+ }
+ friend ostream& operator <<(ostream&, Ww1PlcFootnoteRef&);
+};
+
+//////////////////////////////////////////////////////// PlcFootnoteTxt
+class Ww1PlcFootnoteTxt : public Ww1Plc
+{
+public:
+ Ww1PlcFootnoteTxt(Ww1Fib& rFib) :
+ Ww1Plc(rFib, rFib.GetFIB().fcPlcffndTxtGet(),
+ rFib.GetFIB().cbPlcffndTxtGet(), 0) {
+ }
+ friend ostream& operator <<(ostream&, Ww1PlcFootnoteTxt&);
+};
+
+///////////////////////////////////////////////////////////// PlcFields
+class Ww1PlcFields : public Ww1Plc
+{
+ //USHORT Fill(USHORT, BYTE&, String&, String&, String&);
+public:
+ Ww1PlcFields(Ww1Fib& rFib, ULONG start, USHORT nCountBytes)
+ : Ww1Plc(rFib, start, nCountBytes, 2)
+ {}
+ W1_FLD* GetData(USHORT nIndex)
+ { return (W1_FLD*)Ww1Plc::GetData(nIndex); }
+ ULONG Where(USHORT nIndex) // absolut im file
+ { return Ww1Plc::Where(nIndex) + rFib.GetFIB().fcMinGet(); }
+ friend ostream& operator <<(ostream&, Ww1PlcFields&);
+};
+
+///////////////////////////////////////////////////////////// PlcBookmarks
+class Ww1StringList
+{
+ sal_Char** pIdxA;
+ USHORT nMax;
+public:
+ Ww1StringList( SvStream& rSt, ULONG nFc, USHORT nCb );
+ ~Ww1StringList()
+ { if( pIdxA ) { delete pIdxA[0]; delete pIdxA; } }
+ const String GetStr( USHORT nNum ) const;
+ USHORT Count() const { return nMax; }
+ BOOL GetError() const { return (nMax != 0) && !pIdxA; }
+};
+
+class Ww1PlcBookmarkTxt: public Ww1StringList
+{
+public:
+ Ww1PlcBookmarkTxt(Ww1Fib& rFib) :
+ Ww1StringList( rFib.GetStream(), rFib.GetFIB().fcSttbfbkmkGet(),
+ rFib.GetFIB().cbSttbfbkmkGet() )
+ {}
+};
+
+class Ww1PlcBookmarkPos : public Ww1Plc
+{
+// USHORT Fill(USHORT, BYTE&, String&, String&, String&);
+public:
+ Ww1PlcBookmarkPos(Ww1Fib& rFib, ULONG start, USHORT nCountBytes, BOOL bEnd)
+ : Ww1Plc(rFib, start, nCountBytes, (bEnd) ? 0 : 2)
+ {}
+
+ BYTE* GetData(USHORT nIndex) { return Ww1Plc::GetData(nIndex); }
+ // Position als CP
+ ULONG WhereCP(USHORT nIndex) { return Ww1Plc::Where(nIndex); }
+ // absolut im file
+ ULONG Where(USHORT nIndex)
+ {
+ return ( nIndex < Count() )
+ ? Ww1Plc::Where(nIndex) + rFib.GetFIB().fcMinGet()
+ : 0xffffffff;
+ }
+// friend ostream& operator <<(ostream&, Ww1PlcBookmarks&);
+};
+
+//////////////////////////////////////////////////////////////// PlcHdd
+class Ww1PlcHdd : public Ww1Plc
+{
+public:
+ Ww1PlcHdd(Ww1Fib& rFib)
+ : Ww1Plc(rFib, rFib.GetFIB().fcPlcfhddGet(),
+ rFib.GetFIB().cbPlcfhddGet(), 0)
+ {}
+};
+
+/////////////////////////////////////////////////////////////////// Fkp
+//
+// aehnlich den plcs aufgebaute arrays, die sich auf eine groesze von
+// 512 byte beschraenken.
+//
+class Ww1Fkp
+{
+protected:
+ BYTE aFkp[512];
+ USHORT nItemSize;
+ BOOL bOK;
+ BYTE* GetData(USHORT);
+public:
+ Ww1Fkp(SvStream&, ULONG, USHORT);
+ friend ostream& operator <<(ostream&, Ww1Fkp&);
+ USHORT Count() const { return SVBT8ToByte(aFkp+511); }
+ ULONG Where(USHORT); // wie im entsprechenden fkp
+};
+
+//////////////////////////////////////////////////////////////// FkpPap
+class Ww1FkpPap : public Ww1Fkp
+{
+public:
+ Ww1FkpPap(SvStream& rStream, ULONG ulFilePos)
+ : Ww1Fkp(rStream, ulFilePos, 1)
+ {}
+ friend ostream& operator <<(ostream&, Ww1FkpPap&);
+ BOOL Fill(USHORT, BYTE*&, USHORT&, ULONG&, ULONG&);
+ BOOL Fill(USHORT, BYTE*&, USHORT&);
+};
+
+//////////////////////////////////////////////////////////////// FkpChp
+class Ww1FkpChp : public Ww1Fkp
+{
+#ifdef DUMP
+ SvStream& rStream;
+ SvStream& GetStream() { return rStream; }
+#endif
+public:
+ Ww1FkpChp(SvStream& rStream, ULONG ulFilePos)
+ : Ww1Fkp(rStream, ulFilePos, 1)
+#ifdef DUMP
+ , rStream(rStream)
+#endif
+ {}
+
+ friend ostream& operator <<(ostream&, Ww1FkpChp&);
+ BOOL Fill(USHORT, W1_CHP&, ULONG&, ULONG&);
+ BOOL Fill(USHORT, W1_CHP&);
+};
+
+////////////////////////////////////////////////////////////// SprmPapx
+class Ww1SprmPapx : public Ww1Sprm
+{
+ W1_PAPX aPapx;
+ BYTE* Sprm(BYTE* p, USHORT nSize);
+ USHORT SprmSize(BYTE* p, USHORT nSize);
+public:
+ Ww1SprmPapx(BYTE* p, USHORT nSize);
+ friend ostream& operator <<(ostream&, Ww1SprmPapx&);
+ void Start(Ww1Shell&, Ww1Manager&);
+ void Stop(Ww1Shell&, Ww1Manager&);
+};
+
+/////////////////////////////////////////////////////////////// SprmSep
+class Ww1SprmSep : public Ww1Sprm
+{
+public:
+ Ww1SprmSep(Ww1Fib& rFib, ULONG ulFilePos)
+ : Ww1Sprm(rFib.GetStream(), ulFilePos)
+ {}
+ friend ostream& operator <<(ostream&, Ww1SprmSep&);
+};
+
+///////////////////////////////////////////////////////////////// Assoc
+class Ww1Assoc
+{
+ enum fields { FileNext, Dot, Title, Subject, KeyWords, Comments,
+ Author, LastRevBy, DataDoc, HeaderDoc, Criteria1, Criteria2,
+ Criteria3, Criteria4, Criteria5, Criteria6, Criteria7, MaxFields };
+
+ Ww1Fib& rFib;
+ sal_Char* pBuffer;
+ sal_Char* pStrTbl[ MaxFields ];
+ BOOL bOK;
+
+ String GetStr(USHORT);
+
+public:
+ Ww1Assoc(Ww1Fib&);
+ ~Ww1Assoc() { delete pBuffer; }
+ BOOL GetError() const { return !bOK; }
+ friend ostream& operator <<(ostream&, Ww1Assoc&);
+ void Out(Ww1Shell&);
+};
+
+////////////////////////////////////////////////////////// HeaderFooter
+//
+// Header/Footer/Footnoteseparators sind einer nach dem naechsten in
+// einem eigenen text gespeichert. ein plc trennt diesen text in
+// einzelne teile. diese werden durchnummeriert als ihdd. nun gibt es
+// 9 verschiedene funktionen fuer diese texte. wird eine davon
+// angefordert, ist es der erste, beim naechstern der 2 ihdd und so
+// weiter. welcher textteil also welcher typ sein wird laeszt sich
+// nur bei sequenziellem lesen der datei bestimmen. die 9 typen sind:
+// fusznoten-trenner, folge-fusznoten-trenner, folge-fusznoten-notiz,
+// gerade-seiten kopfzeilen, ungerade seiten kopfzeilen, dto 2*
+// fuszzeilen, kopf & fuszzeilen, wenn erste seite andere zeilen hat.
+// HeaderFooter merkt sich fuer jede der 9 die momentane einstellung
+// (jedoch nicht die alten) und den naechstvergebbaren ihdd. ist ein
+// teil nicht vorhanden bekommt er den wert 0xffff.
+//
+class Ww1HeaderFooter : public Ww1PlcHdd
+{
+ USHORT nextIhdd; // naechster textteil im HddText
+ USHORT nFtnSep; // fusznoten trenner
+ USHORT nFtnFollowSep; // folge fusznoten trenner
+ USHORT nFtnNote; // folgefunsznotennotiz
+ USHORT nEvenHeadL; // kopfzeilen grader seiten
+ USHORT nOddHeadL; // kopfzeilen ungrader seiten
+ USHORT nEvenFootL; // fuszzeilen grader seiten
+ USHORT nOddFootL; // fuszzeilen ungerader seiten
+ USHORT nFirstHeadL; // kopfzeilen der ersten seite
+ USHORT nFirstFootL; // fuszzeilen der ersten seite
+ enum HeaderFooterMode {
+ None, FtnSep, FtnFollowSep, FtnNote, EvenHeadL, OddHeadL,
+ EvenFootL, OddFootL, FirstHeadL, MaxHeaderFooterMode
+ } eHeaderFooterMode;
+
+public:
+ Ww1HeaderFooter(Ww1Fib& rFib, USHORT grpfIhdt)
+ : Ww1PlcHdd(rFib),
+ nextIhdd(0),
+ nFtnSep(0xffff),
+ nFtnFollowSep(0xffff),
+ nFtnNote(0xffff),
+ nEvenHeadL(0xffff),
+ nOddHeadL(0xffff),
+ nEvenFootL(0xffff),
+ nOddFootL(0xffff),
+ nFirstHeadL(0xffff),
+ nFirstFootL(0xffff),
+ eHeaderFooterMode(None)
+ {
+ if (grpfIhdt & 0x0001) nFtnSep = nextIhdd++;
+ if (grpfIhdt & 0x0002) nFtnFollowSep = nextIhdd++;
+ if (grpfIhdt & 0x0004) nFtnNote = nextIhdd++;
+ }
+// ~Ww1HeaderFooter() {}
+ void SetGrpfIhdt(USHORT grpfIhdt)
+ {
+ if (grpfIhdt & 0x0001) nEvenHeadL = nextIhdd++;
+ if (grpfIhdt & 0x0002) nOddHeadL = nextIhdd++;
+ if (grpfIhdt & 0x0004) nEvenFootL = nextIhdd++;
+ if (grpfIhdt & 0x0008) nOddFootL = nextIhdd++;
+ if (grpfIhdt & 0x0010) nFirstHeadL = nextIhdd++;
+ if (grpfIhdt & 0x0020) nFirstFootL = nextIhdd++;
+ DBG_ASSERT(nextIhdd<=Count(), "Ww1HeaderFooter");
+ }
+ BOOL operator++(int)
+ {
+ BOOL bRet = TRUE;
+ eHeaderFooterMode = (HeaderFooterMode)((short)eHeaderFooterMode + 1);
+ if( eHeaderFooterMode == MaxHeaderFooterMode)
+ {
+ eHeaderFooterMode = None;
+ bRet = FALSE;
+ }
+ return bRet;
+ }
+ BOOL FillFtnSep(ULONG& begin, ULONG& end)
+ {
+ if (nFtnSep == 0xffff)
+ return FALSE;
+ Fill(nFtnSep, begin, end);
+ return TRUE;
+ }
+ BOOL FillFtnFollowSep(ULONG& begin, ULONG& end)
+ {
+ if (nFtnFollowSep == 0xffff)
+ return FALSE;
+ Fill(nFtnFollowSep, begin, end);
+ return TRUE;
+ }
+ BOOL FillFtnNote(ULONG& begin, ULONG& end)
+ {
+ if (nFtnNote == 0xffff)
+ return FALSE;
+ Fill(nFtnNote, begin, end);
+ return TRUE;
+ }
+ BOOL FillEvenHeadL(ULONG& begin, ULONG& end)
+ {
+ if (nEvenHeadL == 0xffff)
+ return FALSE;
+ Fill(nEvenHeadL, begin, end);
+ return TRUE;
+ }
+ BOOL FillOddHeadL(ULONG& begin, ULONG& end)
+ {
+ if (nOddHeadL == 0xffff)
+ return FALSE;
+ Fill(nOddHeadL, begin, end);
+ return TRUE;
+ }
+ BOOL FillEvenFootL(ULONG& begin, ULONG& end)
+ {
+ if (nEvenFootL == 0xffff)
+ return FALSE;
+ Fill(nEvenFootL, begin, end);
+ return TRUE;
+ }
+ BOOL FillOddFootL(ULONG& begin, ULONG& end)
+ {
+ if (nOddFootL == 0xffff)
+ return FALSE;
+ Fill(nOddFootL, begin, end);
+ return TRUE;
+ }
+ BOOL FillFirstHeadL(ULONG& begin, ULONG& end)
+ {
+ if (nFirstHeadL == 0xffff)
+ return FALSE;
+ Fill(nFirstHeadL, begin, end);
+ return TRUE;
+ }
+ BOOL FillFirstFootL(ULONG& begin, ULONG& end)
+ {
+ if (nFirstFootL == 0xffff)
+ return FALSE;
+ Fill(nFirstFootL, begin, end);
+ return TRUE;
+ }
+ void Start(Ww1Shell&, Ww1Manager&);
+ void Stop(Ww1Shell&, Ww1Manager&, sal_Unicode&);
+};
+
+//////////////////////////////////////////////////////////////// Fields
+class Ww1Fields : public Ww1PlcFields
+{
+ USHORT nPlcIndex;
+ String sErgebnis; // das von word errechnete ergebniss
+ SwField* pField;
+ ULONG Where(USHORT nIndex) // innerhalb des textes
+ { return Ww1PlcFields::Where(nIndex) - rFib.GetFIB().fcMinGet(); }
+
+public:
+ Ww1Fields(Ww1Fib& rFib, ULONG ulFilePos, USHORT nCountBytes)
+ : Ww1PlcFields(rFib, ulFilePos, nCountBytes), nPlcIndex(0), pField(0)
+ {}
+// ~Ww1Fields() {}
+ // innerhalb des textes
+ ULONG Where() { return Where(nPlcIndex); }
+ void operator++(int)
+ {
+ DBG_ASSERT(nPlcIndex+1 <= Count(), "Ww1Fields");
+ nPlcIndex++;
+ }
+ void Seek(ULONG ulNew) { Ww1PlcFields::Seek(ulNew, nPlcIndex); }
+ W1_FLD* GetData()
+ {
+ DBG_ASSERT(nPlcIndex < Count(), "Ww1Fields");
+ return Ww1PlcFields::GetData(nPlcIndex);
+ }
+ ULONG GetLength();
+ friend ostream& operator <<(ostream&, Ww1Manager&);
+ void Start(Ww1Shell&, Ww1Manager&);
+ void Stop(Ww1Shell&, Ww1Manager&, sal_Unicode&);
+ void Out(Ww1Shell&, Ww1Manager&, USHORT=0);
+};
+
+class Ww1TextFields : public Ww1Fields
+{
+public:
+ Ww1TextFields(Ww1Fib& rFib)
+ : Ww1Fields(rFib, rFib.GetFIB().fcPlcffldMomGet(),
+ rFib.GetFIB().cbPlcffldMomGet())
+ {}
+};
+
+class Ww1FootnoteFields : public Ww1Fields
+{
+public:
+ Ww1FootnoteFields(Ww1Fib& rFib)
+ : Ww1Fields(rFib, rFib.GetFIB().fcPlcffldFtnGet(),
+ rFib.GetFIB().cbPlcffldFtnGet())
+ {}
+};
+
+class Ww1HeaderFooterFields : public Ww1Fields
+{
+public:
+ Ww1HeaderFooterFields(Ww1Fib& rFib)
+ : Ww1Fields(rFib, rFib.GetFIB().fcPlcffldHdrGet(),
+ rFib.GetFIB().cbPlcffldHdrGet())
+ {}
+};
+
+class Ww1MacroFields : public Ww1Fields
+{
+public:
+ Ww1MacroFields(Ww1Fib& rFib)
+ : Ww1Fields(rFib, rFib.GetFIB().fcPlcffldMcrGet(),
+ rFib.GetFIB().cbPlcffldMcrGet())
+ {}
+};
+
+//////////////////////////////////////////////////////////////// Bookmarks
+class Ww1Bookmarks
+{
+ Ww1PlcBookmarkTxt aNames;
+ Ww1PlcBookmarkPos* pPos[2];
+ Ww1Fib& rFib;
+
+ USHORT nPlcIdx[2];
+ USHORT nIsEnd;
+ BOOL bOK;
+// ULONG Where(USHORT nIndex) { // innerhalb des textes
+// return Ww1PlcFields::Where(nIndex) - rFib.GetFIB().fcMinGet(); }
+public:
+ Ww1Bookmarks(Ww1Fib& rFib);
+ ~Ww1Bookmarks()
+ {
+ delete pPos[1];
+ delete pPos[0];
+ }
+ ULONG Where() const { return pPos[nIsEnd]->WhereCP(nPlcIdx[nIsEnd]); }
+ void operator++(int);
+ BOOL GetError() const { return !bOK; }
+ long GetHandle() const;
+ BOOL GetIsEnd() const { return ( nIsEnd ) ? TRUE : FALSE; }
+ const String GetName() const;
+ long Len() const;
+ friend ostream& operator <<(ostream&, Ww1Bookmarks&);
+ void Start(Ww1Shell&, Ww1Manager&);
+ void Stop(Ww1Shell&, Ww1Manager&, sal_Unicode&);
+ void Out(Ww1Shell&, Ww1Manager&, USHORT=0);
+};
+
+///////////////////////////////////////////////////////////// Footnotes
+class Ww1Footnotes : public Ww1PlcFootnoteRef
+{
+ USHORT nPlcIndex;
+ Ww1PlcFootnoteTxt aText;
+ BOOL bStarted;
+public:
+ Ww1Footnotes(Ww1Fib& rFib)
+ : Ww1PlcFootnoteRef(rFib), nPlcIndex(0), aText(rFib), bStarted(FALSE)
+ {}
+// ~Ww1Footnotes() {}
+ // innerhalb des textes
+ ULONG Where()
+ {
+ ULONG ulRet = 0xffffffff;
+ if (Count())
+ ulRet = Ww1PlcFootnoteRef::Where(nPlcIndex);
+ return ulRet;
+ }
+ void operator++(int)
+ {
+ DBG_ASSERT(nPlcIndex+1 <= Count(), "Ww1Footnotes");
+ nPlcIndex++;
+ }
+ void Start(Ww1Shell&, Ww1Manager&);
+ void Stop(Ww1Shell&, Ww1Manager&, sal_Unicode&);
+};
+
+/////////////////////////////////////////////////////////////////// Sep
+class Ww1Sep : public Ww1PlcSep
+{
+ USHORT nPlcIndex;
+ Ww1HeaderFooter aHdd;
+public:
+ Ww1Sep(Ww1Fib& rFib, USHORT grpfIhdt)
+ : Ww1PlcSep(rFib), aHdd(rFib, grpfIhdt),nPlcIndex(0)
+ {}
+// ~Ww1Sep() {}
+
+ Ww1HeaderFooter& GetHdd() { return aHdd; }
+ void operator++(int) { nPlcIndex++; }
+ BYTE* GetData() { return Ww1PlcSep::GetData(nPlcIndex); }
+ // innerhalb des textes
+ ULONG Where() { return Ww1PlcSep::Where(nPlcIndex); }
+ void SetGrpfIhdt(BYTE grpfIhdt)
+ {
+ GetHdd().SetGrpfIhdt(grpfIhdt);
+// GetHdd().Start(rOut, rMan);
+ }
+ void Start(Ww1Shell&, Ww1Manager&);
+ void Stop(Ww1Shell& rOut, Ww1Manager& rMan, sal_Unicode& c)
+ { aHdd.Stop(rOut, rMan, c); }
+};
+
+/////////////////////////////////////////////////////////////////// Pap
+class Ww1Pap : public Ww1PlcPap
+{
+ USHORT nPlcIndex;
+ USHORT nPushedPlcIndex;
+ USHORT nFkpIndex;
+ USHORT nPushedFkpIndex;
+ ULONG ulOffset;
+ Ww1FkpPap* pPap;
+
+ BOOL FindSprm(USHORT nId, BYTE* pStart, BYTE* pEnd);
+ void UpdateIdx()
+ {
+ if (pPap && nFkpIndex >= pPap->Count() )
+ {
+ delete pPap;
+ pPap = NULL;
+ nPlcIndex++;
+ }
+ if( !pPap )
+ Where();
+ }
+ BOOL HasId0(USHORT nId);
+
+public:
+ Ww1Pap(Ww1Fib& rFib);
+ ~Ww1Pap() { delete pPap; }
+ ULONG Where( BOOL bSetIndex = TRUE ); // innerhalb des textes
+ void operator++(int);
+ BOOL FillStart(BYTE*& p, USHORT& nSize)
+ {
+ UpdateIdx();
+ return pPap->Fill(nFkpIndex, p, nSize);
+ }
+ BOOL FillStop(BYTE*& p, USHORT& nSize)
+ {
+ return nFkpIndex ? pPap->Fill(nFkpIndex-1, p, nSize) : FALSE;
+ }
+ void Start(Ww1Shell&, Ww1Manager&);
+ void Stop(Ww1Shell&, Ww1Manager&, sal_Unicode&);
+ void Seek(ULONG);
+ void Push(ULONG ulOffset = 0)
+ {
+ DBG_ASSERT(!Pushed(), "Ww1Pap");
+ nPushedPlcIndex = nPlcIndex;
+ nPushedFkpIndex = nFkpIndex;
+ Seek(ulOffset);
+ this->ulOffset = ulOffset;
+ delete pPap;
+ pPap = NULL;
+ }
+ BOOL Pushed()
+ {
+ return nPushedPlcIndex != 0xffff;
+ }
+ void Pop()
+ {
+ DBG_ASSERT(Pushed(), "Ww1Pap");
+ ulOffset = 0;
+ nPlcIndex = nPushedPlcIndex;
+ nFkpIndex = nPushedFkpIndex;
+ nPushedPlcIndex = 0xffff;
+ nPushedFkpIndex = 0xffff;
+ delete pPap;
+ pPap = NULL;
+ Where( FALSE );
+ }
+ BOOL HasId(USHORT nId);
+ BOOL NextHas(USHORT nId);
+};
+
+/////////////////////////////////////////////////////////////////// Chp
+class Ww1Chp : public Ww1PlcChp
+{
+ USHORT nPlcIndex;
+ USHORT nPushedPlcIndex;
+ USHORT nFkpIndex;
+ USHORT nPushedFkpIndex;
+ ULONG ulOffset;
+ Ww1FkpChp* pChp;
+ void UpdateIdx()
+ {
+ if (pChp && nFkpIndex >= pChp->Count() )
+ {
+ delete pChp;
+ pChp = NULL;
+ nPlcIndex++;
+ }
+ if( !pChp )
+ Where();
+ }
+
+public:
+ Ww1Chp( Ww1Fib& rFib );
+ ~Ww1Chp() { delete pChp; }
+ ULONG Where( BOOL bSetIndex = TRUE ); // innerhalb des textes
+ void operator++(int);
+ BOOL FillStart(W1_CHP& rChp)
+ {
+ UpdateIdx();
+ return pChp->Fill(nFkpIndex, rChp);
+ }
+ BOOL FillStop(W1_CHP& rChp)
+ { return nFkpIndex ? pChp->Fill(nFkpIndex-1, rChp) : FALSE; }
+ void Start(Ww1Shell&, Ww1Manager&);
+ void Stop(Ww1Shell&, Ww1Manager&, sal_Unicode&);
+ void Seek(ULONG);
+ void Push(ULONG ulOffset = 0)
+ {
+ DBG_ASSERT(!Pushed(), "Ww1Chp");
+ nPushedPlcIndex = nPlcIndex;
+ nPushedFkpIndex = nFkpIndex;
+ Seek(ulOffset);
+ this->ulOffset = ulOffset;
+ delete pChp;
+ pChp = NULL;
+ }
+ BOOL Pushed() { return nPushedPlcIndex != 0xffff; }
+ void Pop()
+ {
+ DBG_ASSERT(Pushed(), "Ww1Chp");
+ ulOffset = 0;
+ nPlcIndex = nPushedPlcIndex;
+ nFkpIndex = nPushedFkpIndex;
+ nPushedPlcIndex = 0xffff;
+ nPushedFkpIndex = 0xffff;
+ delete pChp;
+ pChp = NULL;
+ Where( FALSE );
+ }
+};
+
+/////////////////////////////////////////////////////////////// Manager
+//
+// zentraler aufhaenger der ww-seite des filters, konstruiert aus dem
+// inputstream (ww-datei) enthaelt er alles, was noetig ist, um in die
+// shell (pm-seite) gepiped zu werden.
+//
+class Ww1Manager
+{
+ BOOL bOK;
+ BOOL bInTtp;
+ BOOL bInStyle;
+ BOOL bStopAll;
+ Ww1Fib aFib;
+ Ww1Dop aDop;
+ Ww1Fonts aFonts;
+// ab jetzt alles paarig, fuer 'pushed':
+ Ww1DocText aDoc;
+ Ww1PlainText* pDoc;
+ ULONG ulDocSeek;
+ ULONG* pSeek;
+ Ww1TextFields aFld;
+ Ww1Fields* pFld;
+// selbst 'push'bar:
+ Ww1Chp aChp;
+ Ww1Pap aPap;
+// nicht in textbereichen vorhanden, wenn ge'pushed'
+ Ww1Footnotes aFtn;
+ Ww1Bookmarks aBooks;
+ Ww1Sep aSep;
+
+ void OutStop( Ww1Shell&, sal_Unicode );
+ void OutStart( Ww1Shell& );
+ void Out(Ww1Shell&, sal_Unicode );
+
+public:
+ Ww1Manager(SvStream& rStrm, ULONG nFieldFlgs);
+ BOOL GetError() const { return !bOK; }
+
+// Fuer Tabellen
+ void SetInTtp(BOOL bSet = TRUE) { bInTtp = bSet; }
+ BOOL IsInTtp() const { return bInTtp; }
+ void SetInStyle(BOOL bSet = TRUE) { bInStyle = bSet; }
+ BOOL IsInStyle() const { return bInStyle; }
+ void SetStopAll(BOOL bSet = TRUE) { bStopAll = bSet; }
+ BOOL IsStopAll() const { return bStopAll; }
+ BOOL HasInTable();
+ BOOL HasTtp();
+ BOOL NextHasTtp();
+ BOOL LastHasTtp();
+
+// Fuer Flys
+ BOOL HasPPc();
+ BOOL HasPDxaAbs();
+
+ Ww1Fib& GetFib() { return aFib; }
+ Ww1PlainText& GetText() { return *pDoc; }
+ Ww1Dop& GetDop() { return aDop; }
+ Ww1Sep& GetSep() { return aSep; }
+ // innerhalb des textes
+ ULONG Where() { return pDoc->Where(); }
+ void Fill( sal_Unicode& rChr ) { pDoc->Out( rChr ); }
+ BYTE Fill( String& rStr, ULONG ulLen)
+ {
+ ulLen += pDoc->Where();
+ return pDoc->Out(rStr, ulLen);
+ }
+ SvxFontItem GetFont(USHORT nFCode);
+ static BOOL IsValidFib(const BYTE*, USHORT);
+ friend Ww1Shell& operator <<(Ww1Shell&, Ww1Manager&);
+ friend ostream& operator <<(ostream&, Ww1Manager&);
+ BOOL Pushed() { return pDoc != &aDoc; }
+ void Pop();
+ void Push0(Ww1PlainText* pDoc, ULONG, Ww1Fields* = 0);
+ void Push1(Ww1PlainText* pDoc, ULONG ulSeek, ULONG ulSeek2 = 0,
+ Ww1Fields* = 0);
+};
+
+/**********************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww1/w1class.hxx,v 1.1.1.1 2000-09-18 17:14:57 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.19 2000/09/18 16:04:56 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.18 2000/09/09 12:53:29 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.17 2000/05/11 16:06:48 jp
+ Changes for Unicode
+
+ Revision 1.16 1998/02/19 16:01:14 HJS
+ fuer sh eingechecked
+
+
+ Rev 1.15 19 Feb 1998 17:01:14 HJS
+ fuer sh eingechecked
+
+ Rev 1.12 14 Nov 1997 10:55:28 OS
+ SH-Aenderung fuer Textmarken
+
+ Rev 1.11 09 Oct 1997 14:13:46 JP
+ Aenderungen von SH
+
+ Rev 1.10 03 Sep 1997 14:16:28 SH
+ Flys, Tabellen ok, Style-Abhaengigkeiten u.v.a.m
+
+ Rev 1.9 11 Aug 1997 12:49:26 SH
+ Flys und einfache Tabellen und Tabulatoren
+
+ Rev 1.8 18 Jul 1997 09:31:38 MA
+ Stand von SH, #41738# GPF und Tabellen etwas besser
+
+ Rev 1.5 16 Jun 1997 13:09:04 MA
+ Stand Micheal Dietrich
+
+ Rev 1.4 12 Mar 1997 19:11:24 SH
+ MDT: Progressbar, Pagedesc-Bug, Spalten, Anfang Tabellen u.a.
+
+ Rev 1.3 10 Jan 1997 18:43:58 SH
+ Stabiler und mehr von MDT
+
+ Rev 1.2 28 Nov 1996 18:08:06 SH
+ Schneller Schoener Weiter von MDT
+
+ Rev 1.1 30 Sep 1996 23:22:18 SH
+ neu von MDA
+
+
+**********************************************************************/
diff --git a/sw/source/filter/ww1/w1filter.cxx b/sw/source/filter/ww1/w1filter.cxx
new file mode 100644
index 000000000000..c547b39315dd
--- /dev/null
+++ b/sw/source/filter/ww1/w1filter.cxx
@@ -0,0 +1,2433 @@
+/*************************************************************************
+ *
+ * $RCSfile: w1filter.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#include <tools/solar.h>
+#ifndef _SVX_PAPERINF_HXX
+#include <svx/paperinf.hxx>
+#endif
+#ifndef _FILTER_HXX //autogen
+#include <svtools/filter.hxx>
+#endif
+#ifndef _SFXDOCINF_HXX //autogen
+#include <sfx2/docinf.hxx>
+#endif
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _GRAPH_HXX //autogen
+#include <vcl/graph.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_CNTRITEM_HXX //autogen
+#include <svx/cntritem.hxx>
+#endif
+#ifndef _SVX_CMAPITEM_HXX //autogen
+#include <svx/cmapitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_WRLMITEM_HXX //autogen
+#include <svx/wrlmitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_KERNITEM_HXX //autogen
+#include <svx/kernitem.hxx>
+#endif
+#ifndef _SVX_ESCPITEM_HXX //autogen
+#include <svx/escpitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_TSTPITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _FLDDAT_HXX
+#include <flddat.hxx>
+#endif
+#ifndef _REFFLD_HXX
+#include <reffld.hxx>
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx>
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _FTNINFO_HXX
+#include <ftninfo.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx> // class SwSection
+#endif
+#ifndef _FLTINI_HXX
+#include <fltini.hxx>
+#endif
+#ifndef _W1PAR_HXX
+#include <w1par.hxx>
+#endif
+
+#ifndef _SWSWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx>
+#endif
+#ifndef _STATSTR_HRC
+#include <statstr.hrc>
+#endif
+
+#define MAX_FIELDLEN 64000
+
+
+///////////////////////////////////////////////////////////////////////
+//
+// hier stehen die methoden operator<<, Out, Start und Stop mit
+// folgender Bedeutung: wenn moeglich wird die information aus dem
+// dokument per
+// operator<<()
+// in die shell uebertragen. sind jedoch weitere parameter noetig
+// wurde der name
+// Out()
+// gewaehlt. ist ein bereich zu kennzeichnen (zB bei attributen
+// von/bis), heissen die methoden
+// Start(), Stop()
+// alle diese methoden stehen in diesem modul, das fuer den filter,
+// jedoch nicht fuer den dumper noetig ist. und da alle regeln ihre
+// ausnahme haben: hier stehen auch methoden, die aus anderen gruenden
+// fuer den dumper sinnlos sind, zB wenn sie auf sv-strukturen beruhen
+// wie zB GetFont() auf SvxFontItem.
+//
+
+/////////////////////////////////////////////////////////////// Manager
+Ww1Shell& operator <<(Ww1Shell& rOut, Ww1Manager& This)
+{
+ // verhindern, das bei rekusivem aufruf dies mehrfach passiert:
+ if (!This.Pushed())
+ {
+ { // der wird nur temporaer gebraucht:
+ This.SetInStyle( TRUE );
+ Ww1StyleSheet(This.aFib).Out(rOut, This);
+ This.SetInStyle( FALSE );
+ }
+ { // dieser auch:
+ Ww1Assoc(This.aFib).Out(rOut);
+ }
+ // dieser nicht, der ist bereits member:
+ This.aDop.Out(rOut);
+ // Jetzt entscheiden, wie Seitenvorlagen erzeugt werden
+ if (This.GetSep().Count() <= 1)
+ rOut.SetUseStdPageDesc();
+ }
+ // und jetzt das eigentliche dok:
+ sal_Unicode cUnknown = ' ';
+ while (*This.pSeek < This.pDoc->Count())
+ {
+ // ausgabe des ProgressState nur, wenn im haupttext, da sonst
+ // nicht bestimmt werden kann, wie weit wir sind:
+ if (!This.Pushed())
+ ::SetProgressState(This.Where() * 100 / This.pDoc->Count(),
+ rOut.GetDoc().GetDocShell());
+ // hier werden abwechselnd die attribute und die zeichen in die
+ // shell gepumpt. die positionen werden durch das lesen der
+ // zeichen aus dem manager hoch- gezaehlt. erst alle attribute:
+ This.Out(rOut, cUnknown);
+ // das textdocument pDoc ist ein Ww1PlainText, dessen Out()
+ // methode solange ausgibt, bis entweder ein sonderzeichen
+ // auftaucht oder die anzahl der auszugebenden zeichen erreicht
+ // ist:
+ cUnknown = This.pDoc->Out(rOut, *This.pSeek);
+ }
+ This.SetStopAll(TRUE);
+ This.OutStop(rOut, cUnknown); // Damit die Attribute am Ende geschlossen
+ This.SetStopAll(FALSE); // werden
+ return rOut;
+}
+
+void Ww1Manager::OutStop(Ww1Shell& rOut, sal_Unicode cUnknown)
+{
+ // Bookmarks brauchen nicht beendet werden ???
+ if (pFld)
+ pFld->Stop(rOut, *this, cUnknown);
+ if (!Pushed())
+ aFtn.Stop(rOut, *this, cUnknown);
+ if (1)
+ aChp.Stop(rOut, *this, cUnknown);
+ if (1)
+ aPap.Stop(rOut, *this, cUnknown);
+ if (!Pushed())
+ aSep.Stop(rOut, *this, cUnknown);
+}
+
+void Ww1Manager::OutStart( Ww1Shell& rOut )
+{
+// alle attribute, die's brauchen beginnen
+ if (!Pushed())
+ aSep.Start(rOut, *this);
+ if (1)
+ aPap.Start(rOut, *this);
+ if (1)
+ aChp.Start(rOut, *this);
+ if (!Pushed())
+ aFtn.Start(rOut, *this);
+ if (pFld)
+ pFld->Start(rOut, *this);
+ if (!Pushed())
+ aBooks.Start(rOut, *this);
+// bestimmen, wo das naechste Ereigniss ist:
+ ULONG ulEnd = pDoc->Count(); // spaetestens am textende
+ if (!Pushed())
+ if (ulEnd > aSep.Where()) // naechster Sep vorher?
+ ulEnd = aSep.Where();
+ if (1)
+ if (ulEnd > aPap.Where()) // naechster Pap vorher?
+ ulEnd = aPap.Where();
+ if (1)
+ if (ulEnd > aChp.Where()) // naechster Chp vorher?
+ ulEnd = aChp.Where();
+ if (!Pushed())
+ if (ulEnd > aFtn.Where()) // naechster Ftn vorher?
+ ulEnd = aFtn.Where();
+ if (pFld)
+ if (ulEnd > pFld->Where()) // naechster Fld vorher?
+ ulEnd = pFld->Where();
+ if (!Pushed())
+ if (ulEnd > aBooks.Where()) // naechster Bookmark vorher?
+ ulEnd = aBooks.Where();
+ *pSeek = Where(); // momentane position
+ if (*pSeek < ulEnd) // sind wir bereits weiter?
+ *pSeek = ulEnd;
+}
+
+void Ww1Manager::Out(Ww1Shell& rOut, sal_Unicode cUnknown)
+{
+// Je nach modus wird hier mit feldern, fusznoten, zeichenattributen,
+// absatzatributen und sektionen wie folgt verfahren: von allen wird
+// zuallererst die stop-methoden gerufen. stellt das objekt fest, dasz
+// etwas zu beenden ist (natuerlich nicht im ersten durchgang) beendet
+// es dies, ansonsten ist der aufruf wirkungslos. dann werden
+// unbehandelte sonderzeichen augegeben. das werden genauso alle
+// start-methoden gerufen und danach per where festgestellt, an
+// welcher stelle die naechste aktion zu erwarten ist.
+//
+// ist der manager in einem ge'push'ten mode, werden bestimmte
+// elemente ausgeklammert. felder werden wiederum nur in besonderen
+// faellen augeklammert, wenn naemlich bereiche ausgegeben werden, die
+// keine felder enthalten koennen. charakterattribute und
+// paragraphenattribute werden jedoch nie ausgeklammert. die if (1)
+// wurden zur verdeutlichung der einheitlichkeit eingefuegt.
+
+// Erstmal eine Sonderbehandlung fuer Tabellen:
+// die wichtigen Attribute lassen sich am Besten vor Beendigung derselben
+// abfragen.
+// Optimierung: Sie werden nur auf sinnvolle Werte gesetzt, wenn
+// das 0x07-Zeiche ansteht.
+
+ BOOL bLIsTtp = FALSE;
+ BOOL bLHasTtp = FALSE;
+ if( cUnknown == 0x07 )
+ {
+ bLIsTtp = IsInTtp();
+ bLHasTtp = HasTtp();
+ }
+#if 0
+ ULONG uLlMan = Where();
+ BOOL bLStop = IsStopAll();
+ BOOL bLIsT = rOut.IsInTable();
+ BOOL bLHasT = HasInTable();
+ BOOL bLIsTtp = IsInTtp();
+ BOOL bLHasTtp = HasTtp();
+ BOOL bLNextHasTtp = NextHasTtp();
+#endif
+
+ OutStop( rOut, cUnknown ); // Attrs ggfs. beenden
+
+// meta-zeichen interpretieren:
+ if (!Ww1PlainText::IsChar(cUnknown))
+ switch (cUnknown)
+ {
+ case 0x02:
+ // dontknow
+ break;
+ case 0x07: // table
+#if 0
+{
+ ULONG ulMan = Where();
+ BOOL bStop = IsStopAll();
+ BOOL bIsT = rOut.IsInTable();
+ BOOL bHasT = HasInTable();
+ BOOL bIsTtp = IsInTtp();
+ BOOL bHasTtp = HasTtp();
+ BOOL bNextHasTtp = NextHasTtp();
+#endif
+ if (rOut.IsInTable() && HasInTable() && !bLIsTtp && !bLHasTtp){
+// if (rOut.IsInTable() && HasInTable() && !IsInTtp() && !HasTtp()){
+// if (rOut.IsInTable() && HasInTable() && !HasTtp() && !NextHasTtp()){
+// rOut << 'X';
+ rOut.NextTableCell();
+ }else{
+// rOut << 'O';
+ }
+ break;
+ case 0x09: // tab
+ rOut.NextTab();
+ break;
+ case 0x0a: // linefeed
+ rOut.NextParagraph();
+ break;
+ case 0x0b: // linebreak
+ if (rOut.IsInTable())
+// rOut.NextBand(); // war Stuss
+ ;
+ else
+ rOut.NextLine();
+ break;
+ case 0x0d: // carriage return
+ // ignore
+ break;
+ case 0x0c: // pagebreak
+ rOut.NextPage();
+ break;
+ case 0x14: // sectionendchar
+ // ignore here
+ break;
+ default:
+ {
+#ifdef DEBUG
+ char s[200];
+ sprintf(s, "%s(%d) assert (Ww1PlainText::IsChar(c)) failed"
+ ": unknown char 0x%02x", __FILE__, __LINE__, cUnknown);
+ DBG_ERROR(s);
+#endif
+ }
+ }
+
+ OutStart( rOut ); // Attrs ggfs. starten und Naechste Pos berechnen
+}
+
+#if 0
+void Ww1Manager::Out(Ww1Shell& rOut, BYTE cUnknown)
+{
+// Je nach modus wird hier mit feldern, fusznoten, zeichenattributen,
+// absatzatributen und sektionen wie folgt verfahren: von allen wird
+// zuallererst die stop-methoden gerufen. stellt das objekt fest, dasz
+// etwas zu beenden ist (natuerlich nicht im ersten durchgang) beendet
+// es dies, ansonsten ist der aufruf wirkungslos. dann werden
+// unbehandelte sonderzeichen augegeben. das werden genauso alle
+// start-methoden gerufen und danach per where festgestellt, an
+// welcher stelle die naechste aktion zu erwarten ist.
+//
+// ist der manager in einem ge'push'ten mode, werden bestimmte
+// elemente ausgeklammert. felder werden wiederum nur in besonderen
+// faellen augeklammert, wenn naemlich bereiche ausgegeben werden, die
+// keine felder enthalten koennen. charakterattribute und
+// paragraphenattribute werden jedoch nie ausgeklammert. die if (1)
+// wurden zur verdeutlichung der einheitlichkeit eingefuegt.
+ if (pFld)
+ pFld->Stop(rOut, *this, cUnknown);
+ if (!Pushed())
+ aFtn.Stop(rOut, *this, cUnknown);
+ if (1)
+ aChp.Stop(rOut, *this, cUnknown);
+ if (1)
+ aPap.Stop(rOut, *this, cUnknown);
+ if (!Pushed())
+ aSep.Stop(rOut, *this, cUnknown);
+// meta-zeichen interpretieren:
+ if (!Ww1PlainText::IsChar(cUnknown))
+ switch (cUnknown)
+ {
+ case 0x02:
+ // dontknow
+ break;
+ case 0x07: // table
+// hier muesste etwa stehen:
+// ich probiere es mal in den Sprm::Stop von InTable und Ttp
+// if (IsInTable()){
+// if(IsInDummyCell())
+// if (NextInTable())
+// rOut.NextTableRow();
+// else
+// rOut.NextTableCell();
+// rOut.NextTableCell();
+ break;
+ case 0x09: // tab
+ rOut.NextTab();
+ break;
+ case 0x0a: // linefeed
+ rOut.NextParagraph();
+ break;
+ case 0x0b: // linebreak
+ if (IsInTable())
+// rOut.NextBand(); // war Stuss
+ ;
+ else
+ rOut.NextLine();
+ break;
+ case 0x0d: // carriage return
+ // ignore
+ break;
+ case 0x0c: // pagebreak
+ rOut.NextPage();
+ break;
+ case 0x14: // sectionendchar
+ // ignore here
+ break;
+ default:
+ {
+#ifdef DEBUG
+ char s[200];
+ sprintf(s, "%s(%d) assert (Ww1PlainText::IsChar(c)) failed"
+ ": unknown char 0x%02x", __FILE__, __LINE__, cUnknown);
+ DBG_ERROR(s);
+#endif
+ }
+ }
+// alle attribute, die's brauchen beginnen
+ if (!Pushed())
+ aSep.Start(rOut, *this);
+ if (1)
+ aPap.Start(rOut, *this);
+ if (1)
+ aChp.Start(rOut, *this);
+ if (!Pushed())
+ aFtn.Start(rOut, *this);
+ if (pFld)
+ pFld->Start(rOut, *this);
+// bestimmen, wo das naechste Ereigniss ist:
+ ULONG ulEnd = pDoc->Count(); // spaetestens am textende
+ if (!Pushed())
+ if (ulEnd > aSep.Where()) // naechster Sep vorher?
+ ulEnd = aSep.Where();
+ if (1)
+ if (ulEnd > aPap.Where()) // naechster Pap vorher?
+ ulEnd = aPap.Where();
+ if (1)
+ if (ulEnd > aChp.Where()) // naechster Chp vorher?
+ ulEnd = aChp.Where();
+ if (!Pushed())
+ if (ulEnd > aFtn.Where()) // naechster Ftn vorher?
+ ulEnd = aFtn.Where();
+ if (pFld)
+ if (ulEnd > pFld->Where()) // naechster Fld vorher?
+ ulEnd = pFld->Where();
+ *pSeek = Where(); // momentane position
+ if (*pSeek < ulEnd) // sind wir bereits weiter?
+ *pSeek = ulEnd;
+}
+#endif // 0
+
+SvxFontItem Ww1Manager::GetFont(USHORT nFCode)
+{
+ return aFonts.GetFont(nFCode);
+}
+
+void Ww1Manager::Push0(Ww1PlainText* pDoc, ULONG ulSeek, Ww1Fields* pFld)
+{
+ DBG_ASSERT(!Pushed(), "Ww1Manager");
+ this->pDoc = pDoc;
+ pSeek = new ULONG;
+ *pSeek = pDoc->Where();
+ aPap.Push(ulSeek);
+ aChp.Push(ulSeek);
+ this->pFld = pFld;
+}
+
+// ulSeek ist der FC-Abstand zwischen Hauptest-Start und Sondertext-Start
+// ulSeek2 ist der Offset dieses bestimmten Sondertextes im Sondertext-Bereich,
+// also z.B. der Offset des speziellen K/F-Textes
+void Ww1Manager::Push1(Ww1PlainText* pDoc, ULONG ulSeek, ULONG ulSeek2,
+ Ww1Fields* pFld)
+{
+ DBG_ASSERT(!Pushed(), "Ww1Manager");
+ this->pDoc = pDoc;
+ pSeek = new ULONG;
+ *pSeek = pDoc->Where();
+ aPap.Push(ulSeek + ulSeek2);
+ aChp.Push(ulSeek + ulSeek2);
+ if( pFld )
+ pFld->Seek( ulSeek2 );
+ this->pFld = pFld;
+}
+
+void Ww1Manager::Pop()
+{
+ DBG_ASSERT(Pushed(), "Ww1Manager");
+ delete pDoc;
+ pDoc = &aDoc;
+ delete pSeek;
+ pSeek = &ulDocSeek;
+ aChp.Pop();
+ aPap.Pop();
+ delete pFld;
+ pFld = &aFld;
+}
+
+///////////////////////////////////////////////////////////// Bookmarks
+
+void Ww1Bookmarks::Out(Ww1Shell& rOut, Ww1Manager& rMan, USHORT)
+{
+#ifdef DEBUG
+ const String & rN = GetName();
+ long nHandle = GetHandle();
+#endif
+
+ if( GetIsEnd() ){
+ rOut.SetBookEnd( GetHandle() );
+ return;
+ }
+#if 0
+ eBookStatus eB = pB->GetStatus();
+ if( ( eB & BOOK_IGNORE ) != 0 )
+ return 0; // Bookmark zu ignorieren
+#endif
+
+ const String & rName = GetName();
+ if( rName.EqualsAscii( "_Toc", 0, 4 ) ) // "_Toc*" ist ueberfluessig
+ return;
+
+ if( rOut.IsFlagSet( SwFltControlStack::HYPO )
+ && rName.EqualsIgnoreCaseAscii( "FORMULAR" ) )
+ rOut.SetProtect();
+
+ // Fuer UEbersetzung Bookmark -> Variable setzen
+ long nLen = Len();
+ if( nLen > MAX_FIELDLEN )
+ nLen = MAX_FIELDLEN;
+ // Lese Inhalt des Bookmark
+ // geht vermulich auch ueber Ww1PlainText
+ String aVal( rMan.GetText().GetText( Where(), nLen ) );
+
+ // in 2 Schritten, da OS/2 zu doof ist
+ SwFltBookmark aBook( rName, aVal, GetHandle(), FALSE );
+ rOut << aBook;
+// ( eB & BOOK_ONLY_REF ) != 0, TRUE );
+
+// rOut << GetName(); // Test
+}
+
+void Ww1Bookmarks::Start(Ww1Shell& rOut, Ww1Manager& rMan)
+{
+#ifdef DEBUG
+ ULONG ulMan = rMan.Where();
+ ULONG ulBook = Where();
+#endif
+
+ if (rMan.Where() >= Where())
+ {
+ Out(rOut, rMan);
+ (*this)++;
+ }
+}
+
+///////////////////////////////////////////////////////////// Footnotes
+void Ww1Footnotes::Start(Ww1Shell& rOut, Ww1Manager& rMan)
+{
+ if (rMan.Where() >= Where())
+ {
+ DBG_ASSERT(nPlcIndex < Count(), "WwFootnotes");
+ sal_Unicode c;
+ rMan.Fill(c);
+ DBG_ASSERT(c==0x02, "Ww1Footnotes");
+ if (c==0x02)
+ {
+ Ww1FtnText* pText = new Ww1FtnText(rMan.GetFib());
+ // beginn des textes dieser fusznote:
+ ULONG start = aText.Where(nPlcIndex);
+ pText->Seek(start);
+ // laenge des textes
+ ULONG count = aText.Where(nPlcIndex+1) - start;
+ pText->SetCount(count);
+ // fusznotenkennung sollte das erste byte sein
+ pText->Out(c);
+ DBG_ASSERT(c==0x02, "Ww1Footnotes");
+ count--; // fuer das eben gelesene kenn-byte
+ // fusznoten mode beginnen:
+ rOut.BeginFootnote();
+ bStarted = TRUE;
+ rMan.Push0(pText, pText->Offset(rMan.GetFib()),
+ new Ww1FootnoteFields(rMan.GetFib()));
+ rOut << rMan;
+ rMan.Pop();
+ rOut.EndFootnote();
+ }
+ else
+ (*this)++;
+ }
+}
+
+void Ww1Footnotes::Stop(Ww1Shell& rOut, Ww1Manager& rMan, sal_Unicode& c)
+{
+ if (bStarted && rMan.Where() > Where())
+ {
+ DBG_ASSERT(nPlcIndex < Count(), "Ww1Footnotes");
+// DBG_ASSERT(c==0x02, "Ww1Footnotes"); // scheint Stuss zu sein
+ c = ' ';
+ (*this)++;
+ }
+}
+
+//////////////////////////////////////////////////////////////// Fields
+void Ww1Fields::Start(Ww1Shell& rOut, Ww1Manager& rMan)
+{
+ if (rMan.Where() >= Where()){
+ DBG_ASSERT(nPlcIndex < Count(), "Ww1Fields");
+ if (GetData()->chGet() == 19)
+ Out(rOut, rMan);
+ else
+ (*this)++; // ignore
+ }
+}
+
+void Ww1Fields::Stop( Ww1Shell& rOut, Ww1Manager& rMan, sal_Unicode& c)
+{
+ if (rMan.Where() >= Where())
+ {
+ DBG_ASSERT(nPlcIndex < Count(), "Ww1Fields");
+ if (GetData()->chGet() != 19)
+ {
+ rMan.Fill( c );
+ DBG_ASSERT(c==21, "Ww1Fields");
+ (*this)++;
+ c = ' ';
+ if (pField)
+ // haben wir ein fertiges feld da, das eingefuegt werden soll?
+ {
+ rOut << *pField;
+ delete pField;
+ pField = 0;
+ // das macht der filter so, damit attribute die ueber das feld
+ // gelten auch wirklich eingelesen werden und dem feld
+ // zugeordnet werden.
+ }
+ if (sErgebnis.Len())
+ rOut << sErgebnis;
+ }
+ }
+}
+
+enum WWDateTime{ WW_DONTKNOW = 0x0, WW_DATE = 0x1, WW_TIME = 0x2, WW_BOTH = 0x3 };
+
+static WWDateTime GetTimeDatePara( const String& rForm,
+ SwTimeFormat* pTime = 0,
+ SwDateFormat* pDate = 0 )
+{
+ WWDateTime eDT = WW_BOTH;
+ if( STRING_NOTFOUND == rForm.Search( 'H' )) // H -> 24h
+ {
+ if( pTime )
+ *pTime = TF_SSMM_24;
+ }
+ else if( STRING_NOTFOUND == rForm.Search( 'H' )) // h -> 24h
+ {
+ if( pTime )
+ *pTime = TF_SSMM_12;
+ }
+ else // keine Zeit
+ {
+ eDT = (WWDateTime)( eDT & ~(USHORT)WW_TIME );
+ }
+
+ xub_StrLen nDPos = 0;
+ while( STRING_NOTFOUND != nDPos )
+ {
+ nDPos = rForm.Search( 'M', nDPos ); // M -> Datum
+ if( !nDPos )
+ break;
+ sal_Unicode cPrev = rForm.GetChar( nDPos - 1 );
+ // ignoriere dabei "AM", "aM", "PM", "pM"
+ if( 'a' != cPrev && 'A' != cPrev && 'p' != cPrev && 'P' != cPrev )
+ break;
+ // else search again
+ ++nDPos;
+ }
+
+ if( STRING_NOTFOUND != nDPos ) // Monat -> Datum ?
+ {
+ static SwDateFormat __READONLY_DATA aDateA[32] =
+ {
+ DFF_DMY, DFF_DMMY, DFF_DMYY, DFF_DMMYY,
+ DFF_DMMMY, DFF_DMMMY, DFF_DMMMYY, DFF_DMMMYY,
+ DFF_DDMMY, DFF_DDMMY, DFF_DDMMMYY, DFF_DDMMMYY,
+ DFF_DDMMMY, DFF_DDMMMY, DFF_DDMMMYY, DFF_DDMMMYY,
+ DFF_DDDMMMY, DFF_DDDMMMY, DFF_DDDMMMYY, DFF_DDDMMMYY,
+ DFF_DDDMMMY, DFF_DDDMMMY, DFF_DDDMMMYY, DFF_DDDMMMYY,
+ DFF_DDDMMMY, DFF_DDDMMMY, DFF_DDDMMMYY, DFF_DDDMMMYY,
+ DFF_DDDMMMY, DFF_DDDMMMY, DFF_DDDMMMYY, DFF_DDDMMMYY
+ };
+
+ BOOL bHasDay = STRING_NOTFOUND != rForm.Search( 't' ) ||
+ STRING_NOTFOUND != rForm.Search( 'T' ) ||
+ STRING_NOTFOUND != rForm.Search( 'd' ) ||
+ STRING_NOTFOUND != rForm.Search( 'D' );
+
+ BOOL bLongDayOfWeek= STRING_NOTFOUND != rForm.SearchAscii( "tttt" ) ||
+ STRING_NOTFOUND != rForm.SearchAscii( "TTTT" ) ||
+ STRING_NOTFOUND != rForm.SearchAscii( "dddd" ) ||
+ STRING_NOTFOUND != rForm.SearchAscii( "DDDD" );
+
+ BOOL bDayOfWeek = STRING_NOTFOUND != rForm.SearchAscii( "ttt" ) ||
+ STRING_NOTFOUND != rForm.SearchAscii( "TTT" ) ||
+ STRING_NOTFOUND != rForm.SearchAscii( "ddd" ) ||
+ STRING_NOTFOUND != rForm.SearchAscii( "DDD" );
+
+ // M, MM -> numeric month
+ // MMM, MMMM -> text. month
+ BOOL bLitMonth = STRING_NOTFOUND != rForm.SearchAscii( "MMM" );
+ // MMMM -> full month
+ BOOL bFullMonth = STRING_NOTFOUND != rForm.SearchAscii( "MMMM" );
+ // jj, JJ -> 2-col-year
+ // jjjj, JJJJ -> 4-col-year
+ BOOL bFullYear = STRING_NOTFOUND != rForm.SearchAscii( "jjj" ) ||
+ STRING_NOTFOUND != rForm.SearchAscii( "JJJ" ) ||
+ STRING_NOTFOUND != rForm.SearchAscii( "yyy" ) ||
+ STRING_NOTFOUND != rForm.SearchAscii( "YYY" );
+
+ USHORT i = ( bLitMonth & 1 )
+ | ( ( bFullYear & 1 ) << 1 )
+ | ( ( bFullMonth & 1 ) << 2 )
+ | ( ( bDayOfWeek & 1 ) << 3 )
+ | ( ( bLongDayOfWeek & 1 ) << 4 );
+ if( pDate )
+ {
+ if( !bHasDay && !bFullMonth )
+ *pDate = DFF_MY;
+ else
+ *pDate = aDateA[i];
+ }
+ }
+ else
+ {
+ eDT = (WWDateTime)( eDT & ~(USHORT)WW_DATE );
+ }
+ return eDT;
+}
+
+
+extern void sw3io_ConvertFromOldField( SwDoc& rDoc, USHORT& rWhich,
+ USHORT& rSubType, ULONG &rFmt,
+ USHORT nVersion );
+
+void Ww1Fields::Out(Ww1Shell& rOut, Ww1Manager& rMan, USHORT nDepth)
+{
+ String sType; // der typ als string
+ String sFormel; // die formel
+ String sFormat;
+ String sDTFormat; // Datum / Zeit-Format
+ W1_FLD* pData = GetData(); // die an den plc gebunden daten
+ DBG_ASSERT(pData->chGet()==19, "Ww1Fields"); // sollte beginn sein
+
+ sal_Unicode c;
+ rMan.Fill( c );
+ DBG_ASSERT(c==19, "Ww1Fields"); // sollte auch beginn sein
+ if (pData->chGet()==19 && c == 19)
+ {
+ String aStr;
+ c = rMan.Fill( aStr, GetLength() );
+ DBG_ASSERT(Ww1PlainText::IsChar(c), "Ww1Fields");
+ xub_StrLen pos = aStr.Search(' ');
+ // get type out of text
+ sType = aStr.Copy( 0, pos );
+ aStr.Erase( 0, pos );
+ if ( pos != STRING_NOTFOUND )
+ aStr.Erase(0, 1);
+ sFormel += aStr;
+ BYTE rbType = pData->fltGet();
+ do {
+ // solange den formelteil einlesen, bis das feld entweder
+ // zuende ist oder der ergebnisteil beginnt. dabei koennen
+ // natuerlich neue felder beginnen (word unterstuetzt felder,
+ // die wiederum felder beinhalten).
+ (*this)++;
+ pData = GetData();
+ if (pData->chGet()==19) // nested field
+ {
+ Out(rOut, rMan, nDepth+1);
+ rMan.Fill(c);
+ DBG_ASSERT(c==21, "Ww1PlainText");
+ sFormel.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "Ww" ));
+ sFormel += String::CreateFromInt32( nPlcIndex );
+ c = rMan.Fill(aStr, GetLength());
+ DBG_ASSERT(Ww1PlainText::IsChar(c), "Ww1PlainText");
+ sFormel += aStr;
+ }
+ }
+ while (pData->chGet()==19);
+
+ // get format out of text
+ pos = sFormel.SearchAscii( "\\*" );
+ sFormat = sFormel.Copy( pos );
+ sFormel.Erase( pos );
+
+ pos = sFormel.SearchAscii( "\\@" );
+ sDTFormat = sFormel.Copy( pos );
+ sFormel.Erase( pos );
+
+ // der formelteil ist zuende, kommt ein ergebnisteil?
+ if( pData->chGet() == 20 )
+ {
+ rMan.Fill( c );
+ DBG_ASSERT(c==20, "Ww1PlainText");
+ c = rMan.Fill(sErgebnis, GetLength());
+ if (!Ww1PlainText::IsChar(c))
+ sErgebnis += c; //~ mdt: sonderzeichenbenhandlung
+ (*this)++;
+ pData = GetData();
+ }
+ DBG_ASSERT(pData->chGet()==21, "Ww1PlainText");
+ BOOL bKnown = TRUE;
+ DBG_ASSERT(pField==0, "Ww1PlainText");
+ if (pField != 0)
+ {
+ rOut << *pField;
+ delete pField;
+ pField = 0;
+ }
+// naja, aber info enthaelt alle moeglichkeiten, die auch direkt da sind
+oncemore:
+ switch (rbType)
+ {
+ case 3: // bookmark reference
+ rOut.ConvertUStr( sFormel );
+ pField = new SwGetRefField( (SwGetRefFieldType*)
+ rOut.GetSysFldType( RES_GETREFFLD ),
+ sFormel,
+ REF_BOOKMARK,
+ 0,
+ REF_CONTENT );
+// pField = new SwGetExpField((SwGetExpFieldType*)
+// rOut.GetSysFldType(RES_GETEXPFLD), sFormel, GSE_STRING);
+// ,
+// GSE_STRING, VVF_SYS);
+ break;
+ case 6: // set command
+ {
+ pos = aStr.Search(' ');
+ String aName( aStr.Copy( 0, pos ));
+ aStr.Erase(0, pos );
+ aStr.Erase(0, 1);
+ if( !aName.Len() )
+ break;
+ rOut.ConvertUStr( aName );
+ SwFieldType* pFT = rOut.GetDoc().InsertFldType(
+ SwSetExpFieldType( &rOut.GetDoc(), aName, GSE_STRING ) );
+ pField = new SwSetExpField((SwSetExpFieldType*)pFT, aStr);
+ ((SwSetExpField*)pField)->SetSubType(SUB_INVISIBLE);
+// Invisible macht in 378 AErger, soll aber demnaechst gehen
+
+ // das Ignorieren des Bookmarks ist nicht implementiert
+ }
+ break;
+#if 0 // noch nicht fertig, daher disabled
+ case 8: // create index
+ case 13: // create table of contents
+ {
+ TOXTypes eTox; // Baue ToxBase zusammen
+ switch( rbType ){
+ case 8: eTox = TOX_INDEX; break;
+ case 13: eTox = TOX_CONTENT; break;
+ default: eTox = TOX_USER; break;
+ }
+ USHORT nCreateOf = ( eTox == TOX_CONTENT ) ? ( TOX_MARK | TOX_OUTLINELEVEL )
+ : TOX_MARK;
+ BYTE nNum = 0; // wird z.Zt. nicht ausgewertet
+ const SwTOXType* pType = rOut.GetDoc().GetTOXType( eTox, nNum );
+ SwForm aForm( eTox );
+ SwTOXBase* pBase = new SwTOXBase( pType, aForm, nCreateOf, aEmptyStr );
+ // Name des Verzeichnisses
+ switch( eTox ){
+ case TOX_INDEX: pBase->SetOptions( TOI_SAME_ENTRY | TOI_FF | TOI_CASE_SENSITIVE );
+ break;
+ case TOX_CONTENT: break;
+ case TOX_USER: break;
+ } // ToxBase fertig
+
+ rOut.GetDoc().SetUpdateTOX( TRUE ); // Update fuer TOX anstossen
+ rOut << SwFltTOX( pBase );
+ rOut.EndItem(RES_FLTR_TOX);
+ }
+ break;
+#endif
+ case 14: // info var
+ {
+ pos = aStr.Search(' ');
+ String aSubType( aStr.Copy( 0, pos ));
+ aStr.Erase(0, pos );
+ aStr.Erase(0, 1);
+ rOut.ConvertUStr( aSubType );
+
+
+ // ganz grosze schiete: der typ 'info' kann einem der
+ // typen 15..31 entsprechen. er enthaelt als formel
+ // das eingentliche feld der doc-info.
+ // kein ';' benutzen mit folgendem macro:
+#define IS(sd, se, t) \
+ if (aSubType.EqualsAscii( sd ) || aSubType.EqualsAscii( se)) \
+ rbType = t; \
+ else
+
+ // deutsche bez. englische bez. typ-code
+ IS("titel", "title", 15)
+ IS("thema", "subject", 16)
+ IS("autor", "author", 17)
+ IS("stichw?rter", "keywords", 18) //~ mdt: umlaut
+ IS("kommentar", "comment", 19)
+ IS("gespeichertvon", "lastrevisedby", 20)
+ IS("ertelldat", "creationdate", 21)
+ IS("speicherdat", "revisiondate", 22)
+ IS("druckdat", "printdate", 23)
+ IS("version", "revisionnumber", 24)
+ IS("zeit", "edittime", 25)
+ IS("anzseit", "numberofpages", 26)
+ IS("anzw?rter", "numberofwords", 27) //~ mdt: umlaut
+ IS("anzzeichen", "numberofchars", 28)
+ IS("dateiname", "filename", 29)
+ IS("vorlage", "templatename", 30)
+ bKnown = FALSE;
+#undef IS
+ if (rbType != 14)
+ goto oncemore;
+ }
+ break;
+ case 15: // title
+ pField = new SwDocInfoField((SwDocInfoFieldType*)
+ rOut.GetSysFldType(RES_DOCINFOFLD), DI_TITEL, 0);
+ break;
+ case 16: // subject
+ pField = new SwDocInfoField((SwDocInfoFieldType*)
+ rOut.GetSysFldType(RES_DOCINFOFLD), DI_THEMA, 0);
+ break;
+ case 17: // author
+ pField = new SwAuthorField((SwAuthorFieldType*)
+ rOut.GetSysFldType(RES_AUTHORFLD), AF_NAME);
+ break;
+ case 18: // keywords
+ pField = new SwDocInfoField((SwDocInfoFieldType*)
+ rOut.GetSysFldType(RES_DOCINFOFLD), DI_KEYS, 0);
+ break;
+ case 19: // comments
+ pField = new SwDocInfoField((SwDocInfoFieldType*)
+ rOut.GetSysFldType(RES_DOCINFOFLD), DI_COMMENT, 0);
+ break;
+ case 20: // last revised by
+ pField = new SwDocInfoField((SwDocInfoFieldType*)
+ rOut.GetSysFldType(RES_DOCINFOFLD), DI_CHANGE|DI_SUB_AUTHOR);
+ break;
+ case 21: // creation date
+ case 22: // revision date
+ case 23: // print date
+ case 25:{// edit time
+ USHORT nSub;
+ USHORT nReg = 0; // RegInfoFormat, DefaultFormat fuer DocInfoFelder
+
+ switch( rbType )
+ {
+ case 21: nSub = DI_CREATE; nReg = DI_SUB_DATE; break;
+ case 23: nSub = DI_PRINT; nReg = DI_SUB_DATE; break;
+ case 22: nSub = DI_CHANGE; nReg = DI_SUB_DATE; break;
+ case 25: nSub = DI_CHANGE; nReg = DI_SUB_TIME; break;
+ }
+ switch( GetTimeDatePara( sDTFormat ) )
+ {
+ case WW_DATE: nReg = DI_SUB_DATE; break;
+ case WW_TIME: nReg = DI_SUB_TIME; break;
+ case WW_BOTH: nReg = DI_SUB_DATE; break;
+ // WW_DONTKNOW -> Default bereits gesetzt
+ }
+ pField = new SwDocInfoField((SwDocInfoFieldType*)
+ rOut.GetSysFldType(RES_DOCINFOFLD), nSub | nReg);
+ }
+ break;
+ case 24: // revision number
+ pField = new SwDocInfoField((SwDocInfoFieldType*)
+ rOut.GetSysFldType(RES_DOCINFOFLD), DI_DOCNO, 0);
+ break;
+ case 26: // number of pages
+ pField = new SwDocStatField((SwDocStatFieldType*)
+ rOut.GetSysFldType(RES_DOCSTATFLD), DS_PAGE, SVX_NUM_ARABIC);
+ break;
+ case 27: // number of words
+ pField = new SwDocStatField((SwDocStatFieldType*)
+ rOut.GetSysFldType(RES_DOCSTATFLD), DS_WORD, SVX_NUM_ARABIC);
+ break;
+ case 28: // number of chars
+ pField = new SwDocStatField((SwDocStatFieldType*)
+ rOut.GetSysFldType(RES_DOCSTATFLD), DS_CHAR, SVX_NUM_ARABIC);
+ break;
+ case 29: // file name
+ pField = new SwFileNameField((SwFileNameFieldType*)
+ rOut.GetSysFldType(RES_FILENAMEFLD));
+ break;
+ case 30: // doc template name
+ pField = new SwTemplNameField((SwTemplNameFieldType*)
+ rOut.GetSysFldType(RES_TEMPLNAMEFLD), FF_NAME);
+ break;
+ case 31:
+ case 32:{
+ SwDateFormat aDate = DF_SSYS;
+ SwTimeFormat aTime = TF_SYSTEM;
+
+ WWDateTime eDT = GetTimeDatePara(sDTFormat, &aTime, &aDate);
+ if( eDT == WW_DONTKNOW ) // kein D/T-Formatstring
+ eDT = ( rbType == 32 ) ? WW_TIME : WW_DATE; // benutze ID
+
+ if( eDT & WW_DATE )
+ {
+ USHORT nWhich = RES_DATEFLD;
+ USHORT nSubType = DATEFLD;
+ ULONG nFormat = aDate;
+ sw3io_ConvertFromOldField( rOut.GetDoc(),
+ nWhich, nSubType, nFormat, 0x0110 );
+ pField = new SwDateTimeField((SwDateTimeFieldType*)
+ rOut.GetSysFldType(RES_DATETIMEFLD), DATEFLD, nFormat);
+
+ if( eDT == WW_BOTH )
+ rOut << * pField << ' ';
+ // Mogel: direkt einfuegen und Space dahinter
+ }
+ if( eDT & WW_TIME )
+ {
+ USHORT nWhich = RES_TIMEFLD;
+ USHORT nSubType = TIMEFLD;
+ ULONG nFormat = aTime;
+ sw3io_ConvertFromOldField( rOut.GetDoc(),
+ nWhich, nSubType, nFormat, 0x0110 );
+ pField = new SwDateTimeField((SwDateTimeFieldType*)
+ rOut.GetSysFldType(RES_DATETIMEFLD), TIMEFLD, nFormat);
+ }
+
+ }
+ break;
+ case 33: // current page
+ pField = new SwPageNumberField((SwPageNumberFieldType*)
+ rOut.GetSysFldType(RES_PAGENUMBERFLD), PG_RANDOM, SVX_NUM_ARABIC);
+ break;
+ case 34: // evaluation exp
+ {
+ if (nDepth == 0)
+ {
+ SwGetExpFieldType* p =
+ (SwGetExpFieldType*)rOut.GetSysFldType(RES_GETEXPFLD);
+ DBG_ASSERT(p!=0, "Ww1Fields");
+ if (p != 0)
+ pField = new SwGetExpField(p, sFormel,
+ GSE_STRING, VVF_SYS);
+ }
+ else // rekursion:
+ {
+ String aName( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "Ww" )));
+ aName += String::CreateFromInt32( nPlcIndex );
+ SwFieldType* pFT = rOut.GetDoc().GetFldType( RES_SETEXPFLD,
+ aName);
+ if (pFT == 0)
+ {
+ SwSetExpFieldType aS(&rOut.GetDoc(), aName, GSE_FORMULA);
+ pFT = rOut.GetDoc().InsertFldType(aS);
+ }
+ SwSetExpField aFld((SwSetExpFieldType*)pFT, sFormel);
+ aFld.SetSubType(SUB_INVISIBLE);
+ rOut << aFld;
+ }
+ }
+ break;
+ case 36: // print command, Einfuegendatei
+ {
+ pos = aStr.Search(' ');
+ String aFName( aStr.Copy( 0, pos ));
+ aStr.Erase(0, pos );
+ aStr.Erase(0, 1);
+ if( !aFName.Len() )
+ break;
+ aFName.SearchAndReplaceAscii( "\\\\", String( '\\' ));
+
+// char* pBook = FindNextPara( pNext, 0 ); //!! Bookmark/Feld-Name
+// //!! erstmal nicht
+
+// ConvertFFileName( aPara, pFName ); //!! WW1 ????
+ aFName = INetURLObject::RelToAbs( aFName );
+
+ String aName( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "WW" )));
+ SwSection* pSection = new SwSection( FILE_LINK_SECTION,
+ rOut.GetDoc().GetUniqueSectionName( &aStr ) );
+ pSection->SetLinkFileName( aFName );
+ pSection->SetProtect( TRUE );
+ rOut << SwFltSection( pSection );
+ rOut.EndItem( RES_FLTR_SECTION );
+ rOut.NextParagraph();
+ }
+ case 37: // page ref
+ pField = new SwGetRefField(
+ (SwGetRefFieldType*)rOut.GetSysFldType(RES_GETREFFLD),
+ sFormel, 0, 0, REF_PAGE);
+ break;
+ case 38: // ask command
+ {
+ pos = aStr.Search(' ');
+ String aName( aStr.Copy( 0, pos ));
+ aStr.Erase(0, pos );
+ aStr.Erase(0, 1);
+ if( !aName.Len() )
+ break;
+
+ SwFieldType* pFT = rOut.GetDoc().InsertFldType(
+ SwSetExpFieldType( &rOut.GetDoc(), aName, GSE_STRING ) );
+ pField = new SwSetExpField((SwSetExpFieldType*)pFT, aStr );
+ ((SwSetExpField*)pField)->SetInputFlag( TRUE );
+ ((SwSetExpField*)pField)->SetSubType(SUB_INVISIBLE);
+// pField.SetPromptText( aQ ); //!! fehlt noch
+// aFld.SetPar2( aDef ); //!! dito
+ // das Ignorieren des Bookmarks ist nicht implementiert
+ }
+ case 39: // fillin command
+ pField = new SwInputField(
+ (SwInputFieldType*)rOut.GetSysFldType( RES_INPUTFLD ),
+ aEmptyStr, sFormel,
+ INP_TXT, 0 ); // sichtbar ( geht z.Zt. nicht anders )
+ break;
+ case 51: // macro button
+ {
+ pos = aStr.Search(' ');
+ String aName( aStr.Copy( 0, pos ));
+ aStr.Erase(0, pos );
+ aStr.Erase(0, 1);
+ if( !aName.Len() || !aStr.Len() )
+ break;
+ aName.InsertAscii( "StarOffice.Standard.Modul1.", 0 );
+
+ pField = new SwMacroField( (SwMacroFieldType*)
+ rOut.GetSysFldType( RES_MACROFLD ),
+ aName, aStr );
+ }
+ break;
+ case 55: // read tiff / or better: import anything
+ {
+ const sal_Unicode* pFormel = sFormel.GetBuffer();
+ const sal_Unicode* pDot = 0;
+ String sName;
+ while (*pFormel != '\0' && *pFormel != ' ')
+ {
+ // ab hier koennte eine extension kommen
+ if (*pFormel == '.')
+ pDot = pFormel;
+ else
+ // aha: wir waren bislang noch in dirs
+ if (*pFormel == '\\')
+ {
+ pDot = 0;
+ if (pFormel[1] == '\\')
+ pFormel++;
+ }
+ if (*pFormel != '\0')
+ sName += *pFormel++;
+ }
+ if( pDot )
+ {
+ String sExt;
+ while( *pDot != '\0' && *pDot != ' ')
+ sExt += *pDot++;
+
+ if( sExt.EqualsIgnoreCaseAscii( ".tiff" )
+ || sExt.EqualsIgnoreCaseAscii( ".bmp" )
+ || sExt.EqualsIgnoreCaseAscii( ".gif" )
+ || sExt.EqualsIgnoreCaseAscii( ".pcx" )
+ || sExt.EqualsIgnoreCaseAscii( ".pic" ))
+ rOut.AddGraphic( sName );
+ else
+ bKnown = FALSE;
+ }
+ else
+ bKnown = FALSE;
+ }
+ break;
+ default: // unknown
+ DBG_ASSERT(FALSE, "Ww1PlainText");
+ // unsupported:
+ case 1: // unknown
+ case 2: // possible bookmark
+ case 4: // index entry
+ // wwpar5: 1351/1454
+ case 5: // footnote ref
+// pField = new SwGetRefField(
+// (SwGetRefFieldType*)rDoc.GetSysFldType(RES_GETREFFLD),
+// sFormel, REF_FOOTNOTE, 0, REF_BEGIN);
+ case 7: // if command
+ case 8: // create index
+ // wwpar5: 1351/1454
+ case 9: // table of contents entry
+ // wwpar5: 1351/1454
+ case 10: // style ref
+ case 11: // doc ref
+ case 12: // seq ref
+ case 13: // create table of contents
+ // wwpar5: 1351/1454
+ case 35: // literal text
+ // print merge:
+ case 40: // data command
+ case 41: // next command
+ case 42: // nextif command
+ case 43: // skipif command
+ case 44: // number of record
+ //
+ case 45: // dde ref
+ case 46: // dde auto ref
+ case 47: // glossary entry
+ case 48: // print char
+ case 49: // formula def
+ case 50: // goto button
+ case 52: // auto number outline
+ case 53: // auto number legal
+ case 54: // auto number arabic
+ bKnown = FALSE;
+ break;
+ }
+ if( bKnown || sErgebnis.EqualsAscii( "\0270" ))
+ this->sErgebnis.Erase();
+ else
+ this->sErgebnis = sErgebnis;
+ }
+ else // oops: we are terribly wrong: skip this
+ (*this)++;
+}
+
+ULONG Ww1Fields::GetLength()
+{
+// berechnet die laenge eines feldteiles. nicht mitgerechnet werden
+// die terminierenden zeichen im text (19, 20, 21) die beginn, trenner
+// und ende bedeuten.
+ ULONG ulBeg = Where();
+ ULONG ulEnd = Where(nPlcIndex+1);
+ DBG_ASSERT(ulBeg<ulEnd, "Ww1Fields");
+ return (ulEnd - ulBeg) - 1;
+}
+
+/////////////////////////////////////////////////////////////////// Sep
+void Ww1Sep::Start(Ww1Shell& rOut, Ww1Manager& rMan)
+{
+ if (rMan.Where() >= Where())
+ {
+ rOut.NextSection();
+ SwFrmFmt &rFmt = rOut.GetPageDesc().GetMaster();
+ W1_DOP& rDOP = rMan.GetDop().GetDOP();
+ rOut.GetPageDesc().SetLandscape(rDOP.fWideGet());
+ SwFmtFrmSize aSz(rFmt.GetFrmSize());
+ aSz.SetWidth(rDOP.xaPageGet());
+ aSz.SetHeight(rDOP.yaPageGet());
+ rFmt.SetAttr(aSz);
+ SvxLRSpaceItem aLR(rDOP.dxaLeftGet()+rDOP.dxaGutterGet(),
+ rDOP.dxaRightGet());
+ rFmt.SetAttr(aLR);
+ SvxULSpaceItem aUL(rDOP.dyaTopGet(), rDOP.dyaBottomGet());
+ rFmt.SetAttr(aUL);
+ // sobald wir mit dem lesen der zeichen soweit sind, wo sep's
+ // momentanes attribut beginnt, wird dieses attribut eingefuegt.
+ // diese methode ist bei den meisten start/stop methoden der
+ // memberklassen des managers identisch.
+ BYTE* p = GetData();
+ Ww1SprmSep aSprm(rFib, SVBT32ToLong(p+2));
+ aSprm.Start(rOut, rMan);
+ aSprm.Stop(rOut, rMan);
+ (*this)++;
+ aHdd.Start(rOut, rMan);
+ }
+}
+
+/////////////////////////////////////////////////////////////////// Pap
+void Ww1Pap::Start(Ww1Shell& rOut, Ww1Manager& rMan)
+{
+ if (rMan.Where() >= Where())
+ {
+ BYTE* p;
+ USHORT cb;
+ // bereitstellen der zu startenden attribute
+ if (FillStart(p, cb))
+ {
+ Ww1SprmPapx aSprm(p, cb);
+ // und ausgeben:
+ aSprm.Start(rOut, rMan);
+ }
+ (*this)++;
+ }
+}
+
+void Ww1Pap::Stop(Ww1Shell& rOut, Ww1Manager& rMan, sal_Unicode&)
+{
+#ifdef DEBUG
+ ULONG ulMan = rMan.Where();
+ ULONG ulPap = Where();
+ BOOL bIsStopAll = rMan.IsStopAll();
+#endif
+ if (rMan.Where() >= Where() || rMan.IsStopAll())
+ {
+ BYTE* p;
+ USHORT cb;
+ if (FillStop(p, cb)){
+ Ww1SprmPapx aSprm(p, cb);
+ aSprm.Stop(rOut, rMan);
+ }else{
+ DBG_ASSERT( !nPlcIndex || rMan.IsStopAll(), "Pap-Attribut-Stop verloren" );
+// rMan.IsStopAll() ist nicht schoen.
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////// W1_CHP
+//
+// momentan laesst sich die ausgabe von W1CHPxen nicht nur per define
+// loesen....
+//
+void W1_CHP::Out(Ww1Shell& rOut, Ww1Manager& rMan)
+{
+ if (fBoldGet())
+ rOut << SvxWeightItem(
+ rOut.GetWeightBold()?WEIGHT_NORMAL:WEIGHT_BOLD);
+ if (fItalicGet())
+ rOut << SvxPostureItem(
+ rOut.GetPostureItalic()?ITALIC_NONE:ITALIC_NORMAL);
+ if (fStrikeGet())
+ rOut << SvxCrossedOutItem(
+ rOut.GetCrossedOut()?STRIKEOUT_NONE:STRIKEOUT_SINGLE);
+ if (fOutlineGet())
+ rOut << SvxContourItem(!rOut.GetContour());
+ if (fSmallCapsGet())
+ rOut << SvxCaseMapItem(
+ rOut.GetCaseKapitaelchen()?SVX_CASEMAP_NOT_MAPPED:SVX_CASEMAP_KAPITAELCHEN);
+ if (fCapsGet())
+ rOut << SvxCaseMapItem(
+ rOut.GetCaseVersalien()?SVX_CASEMAP_NOT_MAPPED:SVX_CASEMAP_VERSALIEN);
+ if (fsHpsGet())
+ rOut << SvxFontHeightItem(hpsGet() * 10);
+ if (fsKulGet())
+ switch (kulGet()) {
+ case 0: {
+ rOut << SvxUnderlineItem(UNDERLINE_NONE) <<
+ SvxWordLineModeItem(FALSE);
+ } break;
+ default: DBG_ASSERT(FALSE, "Chpx");
+ case 1: {
+ rOut << SvxUnderlineItem(UNDERLINE_SINGLE);
+ } break;
+ case 2: {
+ rOut << SvxUnderlineItem(UNDERLINE_SINGLE) <<
+ SvxWordLineModeItem(TRUE);
+ } break;
+ case 3: {
+ rOut << SvxUnderlineItem(UNDERLINE_DOUBLE);
+ } break;
+ case 4: {
+ rOut << SvxUnderlineItem(UNDERLINE_DOTTED);
+ } break;
+ }
+
+ if (fsIcoGet())
+ switch(icoGet()) {
+ default: DBG_ASSERT(FALSE, "Chpx");
+ case 0: { rOut.EndItem(RES_CHRATR_COLOR); } break;
+ case 1: { rOut << SvxColorItem(Color(COL_BLACK)); } break;
+ case 2: { rOut << SvxColorItem(Color(COL_LIGHTBLUE)); } break;
+ case 3: { rOut << SvxColorItem(Color(COL_LIGHTCYAN)); } break;
+ case 4: { rOut << SvxColorItem(Color(COL_LIGHTGREEN)); } break;
+ case 5: { rOut << SvxColorItem(Color(COL_LIGHTMAGENTA)); } break;
+ case 6: { rOut << SvxColorItem(Color(COL_LIGHTRED)); } break;
+ case 7: { rOut << SvxColorItem(Color(COL_YELLOW)); } break;
+ case 8: { rOut << SvxColorItem(Color(COL_WHITE)); } break;
+ }
+ if (fsSpaceGet()) {
+ short sQps = qpsSpaceGet();
+ if (sQps > 56)
+ sQps = sQps - 64;
+ rOut << SvxKerningItem(sQps);
+ }
+ if (fsPosGet())
+ if (hpsPosGet() == 0)
+ rOut << SvxEscapementItem(SVX_ESCAPEMENT_OFF);
+ else {
+ short sHps = hpsPosGet();
+ if (sHps > 128)
+ sHps = sHps - 256;
+ sHps *= 100;
+ sHps /= 24;
+ rOut << SvxEscapementItem(sHps, 100);
+ }
+ if (fsFtcGet()) {
+ SvxFontItem aFont(rMan.GetFont(ftcGet()));
+ rOut << aFont;
+ }
+}
+
+/////////////////////////////////////////////////////////////////// Chp
+void Ww1Chp::Start(Ww1Shell& rOut, Ww1Manager& rMan)
+{
+#ifdef DEBUG
+ ULONG ulMan = rMan.Where();
+ ULONG ulChp = Where();
+#endif
+
+ if (rMan.Where() >= Where())
+ {
+ W1_CHP aChpx;
+ if (FillStart(aChpx))
+ {
+ aChpx.Out(rOut, rMan);
+ if (aChpx.fcPicGet())
+ {
+ Ww1Picture aPic(rMan.GetFib().GetStream(),
+ aChpx.fcPicGet());
+ if (!aPic.GetError())
+ aPic.Out(rOut, rMan);
+ }
+ }
+ (*this)++;
+ }
+}
+
+void Ww1Chp::Stop(Ww1Shell& rOut, Ww1Manager& rMan, sal_Unicode&)
+{
+ if (rMan.Where() >= Where())
+ {
+ W1_CHP aChpx;
+ if (FillStop(aChpx))
+ {
+ // zuerst alle toggle-flags
+ if (aChpx.fBoldGet())
+ rOut.EndItem(RES_CHRATR_WEIGHT);
+ if (aChpx.fItalicGet())
+ rOut.EndItem(RES_CHRATR_POSTURE);
+ if (aChpx.fStrikeGet())
+ rOut.EndItem(RES_CHRATR_CROSSEDOUT);
+ if (aChpx.fOutlineGet())
+ rOut.EndItem(RES_CHRATR_CONTOUR);
+ if (aChpx.fSmallCapsGet() || aChpx.fCapsGet())
+ rOut.EndItem(RES_CHRATR_CASEMAP);
+ // dann alle zahl-werte, diese haben flags, wenn sie gesetzt
+ // sind..................
+ if (aChpx.fsHpsGet())
+ rOut.EndItem(RES_CHRATR_FONTSIZE);
+ if (aChpx.fsKulGet())
+ rOut.EndItem(RES_CHRATR_UNDERLINE)
+ .EndItem(RES_CHRATR_WORDLINEMODE);
+ if (aChpx.fsIcoGet())
+ rOut.EndItem(RES_CHRATR_COLOR);
+ if (aChpx.fsSpaceGet())
+ rOut.EndItem(RES_CHRATR_KERNING);
+ if (aChpx.fsPosGet())
+ rOut.EndItem(RES_CHRATR_ESCAPEMENT);
+ if (aChpx.fsFtcGet())
+ rOut.EndItem(RES_CHRATR_FONT);
+ }else{
+ DBG_ASSERT( !nPlcIndex, "Chp-Attribut-Stop verloren" );
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////// Style
+void Ww1Style::Out(Ww1Shell& rOut, Ww1Manager& rMan)
+{
+// Zuerst Basis, damit Attribute des Basis-Styles erkannt werden
+// first: Base................................................
+ if(pParent->GetStyle(stcBase).IsUsed() ) // Basis gueltig ?
+ rOut.BaseStyle(stcBase);
+
+// next of all: CHP...............................................
+ aChpx.Out(rOut, rMan);
+// Last: PAP.......................................................
+ if (pPapx)
+ pPapx->Start(rOut, rMan);
+}
+
+////////////////////////////////////////////////////////// Ww1PlainText
+//
+// die Out() methoden von plaintext fuer den filter geben eine anzahl
+// zeichen aus auf die shell, einen string oder einen char, wieviel
+// zeichen ausgegeben werden, bestimmt ulEnd, das das ende bestimmt,
+// bis zudem ausgegeben wird. ausserdem beenden die methoden die
+// ausgabe bei kontrollzeichen.
+// diese sind definiert durch MinChar. alle zeichen mit wert darunter
+// gelten als kontroll- zeichen. dafuer gibts die methode IsChar, die
+// zurueckgibt, ob es sich um ein standard zeichen handelt. kommt ein
+// solches zeichen, wird dieses zeichen zurueckgegeben und die methode
+// beendet, auch wenn ulEnd noch nicht erreicht wurde. bei nutzung
+// also beachten, dasz wenn !IsChar(Out(...)) gilt, ulEnd unter
+// umstaenden nicht erreicht wurde. dann wurde das kontrollzeichen
+// zwar (weg-)gelesen, jedoch noch nicht ausgegeben.
+//
+sal_Unicode Ww1PlainText::Out( Ww1Shell& rOut, ULONG& ulEnd )
+{
+// gibt die zeichen bis ulEnd aus, es sei den es kommen sonderzeichen
+// die eine bedeutung haben wie absatzende oder seitenumbruch.
+ if (ulEnd > Count())
+ ulEnd = Count();
+ while (ulSeek < ulEnd)
+ {
+ sal_Unicode c = (*this)[ulSeek];
+ (*this)++;
+ if (Ww1PlainText::IsChar(c))
+ rOut << c;
+ else
+ return c;
+ }
+ return Ww1PlainText::MinChar;
+}
+
+sal_Unicode Ww1PlainText::Out( String& rStr, ULONG ulEnd )
+{
+// wie Out(Shell..., jedoch ausgabe auf einen string
+ rStr.Erase();
+ if (ulEnd > Count())
+ ulEnd = Count();
+ while (ulSeek < ulEnd)
+ {
+ sal_Unicode c = (*this)[ulSeek];
+ (*this)++;
+ if( Ww1PlainText::IsChar(c) )
+ rStr += c;
+ else
+ return c;
+ }
+ return Ww1PlainText::MinChar;
+}
+
+//
+// hier eruebrigt sich ulEnd...oder?
+//
+sal_Unicode Ww1PlainText::Out( sal_Unicode& rRead )
+{
+ rRead = (*this)[ulSeek];
+ (*this)++;
+ return rRead;
+}
+
+/////////////////////////////////////////////////////////// Ww1SprmPapx
+
+void Ww1SprmPapx::Start(Ww1Shell& rOut, Ww1Manager& rMan)
+{
+ if( !rMan.IsInStyle() ){ // Innerhalb Style gehts ueber die
+ // normalen Attribute
+ if (!rOut.IsInFly()
+ && !rOut.IsInTable() // Nicht innerhalb Tabelle!
+ && ( rMan.HasPPc() || rMan.HasPDxaAbs())){ // Fly-Start
+ rOut.BeginFly(); // eAnchor );
+ }
+ if (!rOut.IsInTable() && rMan.HasInTable())
+ {
+ rOut.BeginTable();
+ }
+ rOut.SetStyle(aPapx.stcGet());
+ }
+ Ww1Sprm::Start(rOut, rMan);
+}
+
+void Ww1SprmPapx::Stop(Ww1Shell& rOut, Ww1Manager& rMan)
+{
+ Ww1Sprm::Stop(rOut, rMan);
+
+ if( !rMan.IsInStyle() ) // Innerhalb Style gehts ueber die
+ { // normalen Attribute
+ if (rOut.IsInTable() &&( rMan.IsStopAll() || !rMan.HasInTable()))
+ rOut.EndTable();
+
+ if( rOut.IsInFly() &&
+ ( rMan.IsStopAll()
+ || ( !rMan.HasPPc() && !rMan.HasPDxaAbs() // Fly-Ende
+ && !rOut.IsInTable()))) // Nicht innerhalb Tabelle!
+ rOut.EndFly();
+ }
+}
+
+///////////////////////////////////////////////////////////////// Fonts
+SvxFontItem Ww1Fonts::GetFont(USHORT nFCode)
+{
+// erzeugen eine fonts im sw-sinne aus den word-strukturen
+ FontFamily eFamily = FAMILY_DONTKNOW;
+ String aName;
+ FontPitch ePitch = PITCH_DONTKNOW;
+ rtl_TextEncoding eCharSet = RTL_TEXTENCODING_DONTKNOW;
+ switch (nFCode)
+ {
+// In the Winword 1.x format, the names of the first three fonts were
+// omitted from the table and assumed to be "Tms Rmn" (for ftc = 0),
+// "Symbol", and "Helv"
+ case 0:
+ eFamily = FAMILY_ROMAN;
+ aName.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "Tms Rmn" ));
+ ePitch = PITCH_VARIABLE;
+ eCharSet = RTL_TEXTENCODING_MS_1252;
+ break;
+ case 1:
+ aName.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "Symbol" ));
+ ePitch = PITCH_VARIABLE;
+ eCharSet = RTL_TEXTENCODING_SYMBOL;
+ break;
+ case 2:
+ eFamily = FAMILY_SWISS;
+ aName.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "Helv" ));
+ ePitch = PITCH_VARIABLE;
+ eCharSet = RTL_TEXTENCODING_MS_1252;
+ break;
+ default:
+ {
+ W1_FFN* pF = GetFFN(nFCode - 3);
+ if (pF != 0)
+ {
+ // Fontname .........................................
+ aName = String( (sal_Char*)pF->szFfnGet(),
+ RTL_TEXTENCODING_MS_1252 );
+ // Pitch .............................................
+ static FontPitch ePitchA[] =
+ {
+ PITCH_DONTKNOW, PITCH_FIXED, PITCH_VARIABLE, PITCH_DONTKNOW
+ };
+ ePitch = ePitchA[pF->prgGet()];
+ // CharSet ...........................................
+ eCharSet = RTL_TEXTENCODING_MS_1252;
+ if (aName.EqualsIgnoreCaseAscii("Symbol")
+ || aName.EqualsIgnoreCaseAscii("Symbol Set")
+ || aName.EqualsIgnoreCaseAscii("Wingdings")
+ || aName.EqualsIgnoreCaseAscii("ITC Zapf Dingbats") )
+ eCharSet = RTL_TEXTENCODING_SYMBOL;
+ // FontFamily ........................................
+ USHORT b = pF->ffGet();
+ static FontFamily eFamilyA[] =
+ {
+ FAMILY_DONTKNOW, FAMILY_ROMAN, FAMILY_SWISS, FAMILY_MODERN,
+ FAMILY_SCRIPT, FAMILY_DECORATIVE
+ };
+ if (b < sizeof(eFamilyA))
+ eFamily = eFamilyA[b];
+ }
+ else
+ {
+ DBG_ASSERT(FALSE, "WW1Fonts::GetFont: Nicht existenter Font !");
+ eFamily = FAMILY_SWISS;
+ aName.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "Helv" ));
+ ePitch = PITCH_VARIABLE;
+ eCharSet = RTL_TEXTENCODING_MS_1252;
+ }
+ }
+ break;
+ }
+ // Extrawurst Hypo
+ if ( SwFltGetFlag( nFieldFlags, SwFltControlStack::HYPO )
+ && ( aName.EqualsIgnoreCaseAscii("Helv")
+ || aName.EqualsIgnoreCaseAscii("Helvetica") ) )
+ {
+ aName.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "Helvetica Neue" ));
+ if (eFamily==FAMILY_DONTKNOW)
+ eFamily = FAMILY_SWISS;
+ }
+ else
+ {
+ // VCL matcht die Fonts selber
+ // allerdings passiert bei Helv, Tms Rmn und System Monospaced
+ // Scheisse, so dass diese ersetzt werden muessen.
+ // Nach TH sollen diese durch feste Werte ersetzt werden,
+ // also nicht ueber System::GetStandardFont, damit keine
+ // Namenslisten auftauchen ( Dieses koennte den User verwirren )
+ if( aName.EqualsIgnoreCaseAscii("Helv"))
+ {
+ aName.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "Helvetica" ));
+ if (eFamily==FAMILY_DONTKNOW)
+ eFamily = FAMILY_SWISS;
+ }
+ else if (aName.EqualsIgnoreCaseAscii("Tms Rmn"))
+ {
+ aName.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "Times New Roman" ));
+ if (eFamily==FAMILY_DONTKNOW)
+ eFamily = FAMILY_ROMAN;
+ }
+ else if (aName.EqualsIgnoreCaseAscii("System Monospaced") )
+ {
+ aName.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "Courier" ));
+ ePitch = PITCH_FIXED;
+ }
+ }
+// nun koennen wir den font basteln: .........................
+ return SvxFontItem(eFamily, aName, aEmptyStr, ePitch, eCharSet);
+}
+
+/////////////////////////////////////////////////////////////////// Dop
+void Ww1Dop::Out(Ww1Shell& rOut)
+{
+ //~ mdt: fehlt
+ // aDop.fWidowControlGet(); // keine Absatztrennung fuer einzelne Zeilen
+ long nDefTabSiz = aDop.dxaTabGet();
+ if (nDefTabSiz < 56)
+ nDefTabSiz = 709;
+
+ // wir wollen genau einen DefaultTab
+ SvxTabStopItem aNewTab(1, USHORT(nDefTabSiz),SVX_TAB_ADJUST_DEFAULT);
+ ((SvxTabStop&)aNewTab[0]).GetAdjustment() = SVX_TAB_ADJUST_DEFAULT;
+ rOut.GetDoc().GetAttrPool().SetPoolDefaultItem( aNewTab); //~ mdt: besser (GetDoc)
+
+ SwFrmFmt &rFmt = rOut.GetPageDesc().GetMaster();
+ W1_DOP& rDOP = GetDOP();
+ rOut.GetPageDesc().SetLandscape(rDOP.fWideGet());
+ SwFmtFrmSize aSz(rFmt.GetFrmSize());
+ aSz.SetWidth(rDOP.xaPageGet());
+ aSz.SetHeight(rDOP.yaPageGet());
+ rFmt.SetAttr(aSz);
+ SvxLRSpaceItem aLR(rDOP.dxaLeftGet()+rDOP.dxaGutterGet(),
+ rDOP.dxaRightGet());
+ rFmt.SetAttr(aLR);
+ SvxULSpaceItem aUL(rDOP.dyaTopGet(), rDOP.dyaBottomGet());
+ rFmt.SetAttr(aUL);
+
+ SwFtnInfo aInfo;
+ aInfo = rOut.GetDoc().GetFtnInfo(); // Copy-Ctor privat
+ // wo positioniert ? ( 0 == Section, 1 == Page,
+ // 2 == beim Text -> Page, 3 == Doc )
+ switch( rDOP.fpcGet() ){
+ case 1:
+ case 2: aInfo.ePos = FTNPOS_PAGE; break;
+ default: aInfo.ePos = FTNPOS_CHAPTER; break;
+ }
+// aInfo.eNum = ( rDOP.fFtnRestartGet() ) ? FTNNUM_CHAPTER : FTNNUM_DOC;
+ // Da Sw unter Chapter anscheinend was anderes versteht als PMW
+ // hier also immer Doc !
+ aInfo.eNum = FTNNUM_DOC;
+ // wie neu nummerieren ?
+ // SW-UI erlaubt Nummer nur bei FTNNUM_DOC
+ if( rDOP.nFtnGet() > 0 && aInfo.eNum == FTNNUM_DOC )
+ aInfo.nFtnOffset = rDOP.nFtnGet() - 1;
+ rOut.GetDoc().SetFtnInfo( aInfo );
+
+}
+
+///////////////////////////////////////////////////////////////// Assoc
+void Ww1Assoc::Out(Ww1Shell& rOut)
+{
+ SfxDocumentInfo* pInfo;
+ if (rOut.GetDoc().GetpInfo()) //~ mdt: besser (GetDoc)
+ pInfo = new SfxDocumentInfo(*rOut.GetDoc().GetpInfo());
+ else
+ pInfo = new SfxDocumentInfo();
+//~ mdt: fehlen: FileNext, Dot, DataDoc, HeaderDoc, Criteria1,
+// Criteria2, Criteria3, Criteria4, Criteria5, Criteria6, Criteria7
+ pInfo->SetTitle( GetStr(Title) );
+ pInfo->SetTheme( GetStr(Subject) );
+ pInfo->SetComment( GetStr(Comments) );
+ pInfo->SetKeywords( GetStr(KeyWords) );
+ pInfo->SetCreated( GetStr(Author) );
+ pInfo->SetChanged( GetStr(LastRevBy) );
+ rOut.GetDoc().SetInfo(*pInfo);
+ delete pInfo;
+}
+
+//////////////////////////////////////////////////////////// StyleSheet
+void Ww1StyleSheet::OutDefaults(Ww1Shell& rOut, Ww1Manager& rMan, USHORT stc)
+{
+ switch (stc){
+ case 222: // Null
+ rOut << SvxFontHeightItem(240);
+ rOut << SvxFontItem(rMan.GetFont(2));
+ break;
+ case 223: // annotation reference
+ rOut << SvxFontHeightItem(160);
+ break;
+ case 224: // annotation text
+ rOut << SvxFontHeightItem(200);
+ break;
+ case 225: // table of contents 8
+ case 226: // table of contents 7
+ case 227: // table of contents 6
+ case 228: // table of contents 5
+ case 229: // table of contents 4
+ case 230: // table of contents 3
+ case 231: // table of contents 2
+ case 232: // table of contents 1
+ rOut << SvxLRSpaceItem(( 232 - stc ) * 720, 720);
+ // Tabulatoren fehlen noch !
+ break;
+ case 233: // index 7
+ case 234: // und index 6
+ case 235: // und index 5
+ case 236: // und index 4
+ case 237: // und index 3
+ case 238: // und index 2
+ rOut << SvxLRSpaceItem(( 239 - stc ) * 360, 0);
+ break;
+ case 239: // index 1
+ break;
+ case 240: // line number
+ break;
+ case 241: // index heading
+ break;
+ case 242: // footer
+ case 243:{ // ... und header
+ SvxTabStopItem aAttr;
+ SvxTabStop aTabStop;
+ aTabStop.GetTabPos() = 4535; // 8 cm
+ aTabStop.GetAdjustment() = SVX_TAB_ADJUST_CENTER;
+ aAttr.Insert( aTabStop );
+ aTabStop.GetTabPos() = 9071; // 16 cm
+ aTabStop.GetAdjustment() = SVX_TAB_ADJUST_RIGHT;
+ aAttr.Insert( aTabStop );
+ rOut << aAttr;
+ }
+ break;
+ case 244: // footnote reference
+ rOut << SvxFontHeightItem(160);
+ rOut << SvxEscapementItem(6 * 100 / 24, 100);
+ break;
+ case 245: // footnote text
+ rOut << SvxFontHeightItem(200);
+ break;
+ case 246: // heading 9
+ case 247: // und heading 8
+ case 248: // und heading 7
+ rOut << SvxLRSpaceItem(720, 0);
+ rOut << SvxPostureItem(
+ rOut.GetPostureItalic()?ITALIC_NONE:ITALIC_NORMAL);
+ rOut << SvxFontHeightItem(200);
+ break;
+ case 249: // heading 6
+ rOut << SvxLRSpaceItem(720, 0);
+ rOut << SvxUnderlineItem(UNDERLINE_SINGLE);
+ rOut << SvxFontHeightItem(200);
+ break;
+ case 250: // heading 5
+ rOut << SvxLRSpaceItem(720, 0);
+ rOut << SvxWeightItem(rOut.GetWeightBold()?WEIGHT_NORMAL:WEIGHT_BOLD);
+ rOut << SvxFontHeightItem(200);
+ break;
+ case 251: // heading 4
+ rOut << SvxLRSpaceItem(360, 0);
+ rOut << SvxUnderlineItem(UNDERLINE_SINGLE);
+ rOut << SvxFontHeightItem(240);
+ break;
+ case 252: // heading 3
+ rOut << SvxLRSpaceItem(360, 0);
+ rOut << SvxWeightItem(rOut.GetWeightBold()?WEIGHT_NORMAL:WEIGHT_BOLD);
+ rOut << SvxFontHeightItem(240);
+ break;
+ case 253: // heading 2
+ rOut << SvxULSpaceItem(120, 0);
+ rOut << SvxWeightItem(rOut.GetWeightBold()?WEIGHT_NORMAL:WEIGHT_BOLD);
+ rOut << SvxFontHeightItem(240);
+ rOut << SvxFontItem(rMan.GetFont(2));
+ break;
+ case 254: // heading 1
+ rOut << SvxULSpaceItem(240, 0);
+ rOut << SvxWeightItem(rOut.GetWeightBold()?WEIGHT_NORMAL:WEIGHT_BOLD);
+ rOut << SvxUnderlineItem(UNDERLINE_SINGLE);
+ rOut << SvxFontHeightItem(240);
+ rOut << SvxFontItem(rMan.GetFont(2));
+ break;
+ case 255: // Normal indent
+ rOut << SvxLRSpaceItem(720, 0);
+ break;
+ case 0: // Normal
+ rOut << SvxFontHeightItem(200);
+ break;
+ default: // selbstdefiniert
+ rOut << SvxFontHeightItem(200);
+ break;
+ }
+}
+
+void Ww1StyleSheet::OutOne(Ww1Shell& rOut, Ww1Manager& rMan, USHORT stc)
+{
+ const RES_POOL_COLLFMT_TYPE RES_NONE = RES_POOLCOLL_DOC_END;
+ RES_POOL_COLLFMT_TYPE aType = RES_NONE;
+// aType = RES_POOLCOLL_JAKETADRESS; break;
+// aType = RES_POOLCOLL_LISTS_BEGIN; break;
+// aType = RES_POOLCOLL_SENDADRESS; break;
+// aType = RES_POOLCOLL_SIGNATURE; break;
+// aType = RES_POOLCOLL_TEXT_NEGIDENT; break;
+// aType = RES_POOLCOLL_TOX_IDXH; break;
+ switch (stc)
+ {
+ case 222: // Null
+ aType = RES_POOLCOLL_TEXT; break; //???
+ break;
+ case 223: // annotation reference
+ break;
+ case 224: // annotation text
+ break;
+ case 225: // table of contents 8
+ aType = RES_POOLCOLL_TOX_CNTNT8; break;
+ case 226: // table of contents 7
+ aType = RES_POOLCOLL_TOX_CNTNT7; break;
+ case 227: // table of contents 6
+ aType = RES_POOLCOLL_TOX_CNTNT6; break;
+ case 228: // table of contents 5
+ aType = RES_POOLCOLL_TOX_CNTNT5; break;
+ case 229: // table of contents 4
+ aType = RES_POOLCOLL_TOX_CNTNT4; break;
+ case 230: // table of contents 3
+ aType = RES_POOLCOLL_TOX_CNTNT3; break;
+ case 231: // table of contents 2
+ aType = RES_POOLCOLL_TOX_CNTNT2; break;
+ case 232: // table of contents 1
+ aType = RES_POOLCOLL_TOX_CNTNT1; break;
+ case 233: // index 7
+ break;
+ case 234: // index 6
+ break;
+ case 235: // index 5
+ break;
+ case 236: // index 4
+ break;
+ case 237: // index 3
+ aType = RES_POOLCOLL_TOX_IDX3; break;
+ case 238: // index 2
+ aType = RES_POOLCOLL_TOX_IDX2; break;
+ case 239: // index 1
+ aType = RES_POOLCOLL_TOX_IDX1; break;
+ case 240: // line number
+ break;
+ case 241: // index heading
+ break;
+ case 242: // footer
+ aType = RES_POOLCOLL_FOOTER; break;
+ case 243: // header
+ aType = RES_POOLCOLL_HEADER; break;
+ case 244: // footnote reference
+ break;
+ case 245: // footnote text
+ aType = RES_POOLCOLL_FOOTNOTE; break;
+ case 246: // heading 9
+ break;
+ case 247: // heading 8
+ break;
+ case 248: // heading 7
+ break;
+ case 249: // heading 6
+ break;
+ case 250: // heading 5
+ aType = RES_POOLCOLL_HEADLINE5; break;
+ case 251: // heading 4
+ aType = RES_POOLCOLL_HEADLINE4; break;
+ case 252: // heading 3
+ aType = RES_POOLCOLL_HEADLINE3; break;
+ case 253: // heading 2
+ aType = RES_POOLCOLL_HEADLINE2; break;
+ case 254: // heading 1
+ aType = RES_POOLCOLL_HEADLINE1; break;
+ case 255: // Normal indent
+ aType = RES_POOLCOLL_TEXT_IDENT; break;
+ case 0: // Normal
+ aType = RES_POOLCOLL_STANDARD; break;
+// aType = RES_POOLCOLL_TEXT; break; // Das ist "textkoerper"
+ }
+ if (aType == RES_NONE)
+ rOut.BeginStyle(stc, GetStyle(stc).GetName() );
+ else
+ rOut.BeginStyle(stc, aType);
+ OutDefaults(rOut, rMan, stc);
+ GetStyle(stc).Out(rOut, rMan);
+ rOut.EndStyle();
+// rMan.SetInApo(FALSE);
+}
+// OutOneWithBase() liest einen Style mit OutOne() einen Style ein
+// Jedoch liest er, wenn noch nicht geschehen, den Basisstyle rekursiv ein
+void Ww1StyleSheet::OutOneWithBase(Ww1Shell& rOut, Ww1Manager& rMan,
+ USHORT stc, BYTE* pbStopRecur )
+{
+// SH: lineares Einlesen ist Scheisse, da dann BasedOn nicht gesetzt
+// werden kann und ausserdem Toggle- und Modify-Attrs (z.B. Tabs ) nicht gehen.
+
+ Ww1Style& rSty = GetStyle(stc);
+ USHORT nBase = rSty.GetnBase();
+ if( nBase != stc
+ && !rOut.IsStyleImported( nBase )
+ && GetStyle(nBase).IsUsed()
+ && !pbStopRecur[nBase] ){
+
+ pbStopRecur[nBase] = 1;
+ OutOneWithBase( rOut, rMan, nBase, pbStopRecur ); // Rekursiv
+ }
+ OutOne( rOut, rMan, stc );
+}
+
+void Ww1StyleSheet::Out(Ww1Shell& rOut, Ww1Manager& rMan)
+{
+ USHORT stc;
+ BYTE bStopRecur[256];
+ memset( bStopRecur, FALSE, sizeof(bStopRecur) );
+
+// 1. Durchlauf: Styles mit Basisstyles rekursiv
+ for (stc=0;stc<Count();stc++)
+ if (GetStyle(stc).IsUsed() && !rOut.IsStyleImported( stc ) )
+ OutOneWithBase( rOut, rMan, stc, bStopRecur );
+
+// 2. Durchlauf: Follow-Styles
+ for (stc=0;stc<Count();stc++){
+ Ww1Style& rSty = GetStyle(stc);
+ if ( rSty.IsUsed() ){
+ USHORT nNext = rSty.GetnNext();
+ if( nNext != stc && GetStyle(nNext).IsUsed() )
+ rOut.NextStyle( stc, nNext );
+ }
+ }
+}
+
+////////////////////////////////////////////////////////////// Picture
+static ULONG GuessPicSize(W1_PIC* pPic)
+{
+ long nSize = pPic->lcbGet() - (sizeof(*pPic)-sizeof(pPic->rgb));
+ register BYTE* p = pPic->rgbGet();
+ USHORT maxx = pPic->mfp.xExtGet();
+ USHORT padx = ((maxx + 7) / 8) * 8;
+ USHORT maxy = pPic->mfp.yExtGet();
+ return 120L + (ULONG)padx * maxy;
+}
+
+//
+// folgende methode schreibt eine windows-.BMP-datei aus einem
+// embeddeten bild in ww-1 dateien
+// gelesen wird 4-bit format, geschrieben jedoch 8-bit.
+//
+void Ww1Picture::WriteBmp(SvStream& rOut)
+{
+ long nSize = pPic->lcbGet() - (sizeof(*pPic)-sizeof(pPic->rgb));
+ register BYTE* p = pPic->rgbGet();
+ USHORT maxx = pPic->mfp.xExtGet();
+ USHORT padx = ((maxx + 7) / 8) * 8;
+ USHORT maxy = pPic->mfp.yExtGet();
+ USHORT unknown1 = SVBT16ToShort(p); p+= sizeof(SVBT16); nSize -= sizeof(SVBT16);
+ USHORT unknown2 = SVBT16ToShort(p); p+= sizeof(SVBT16); nSize -= sizeof(SVBT16);
+ USHORT x = SVBT16ToShort(p); p+= sizeof(SVBT16); nSize -= sizeof(SVBT16);
+ DBG_ASSERT(x==maxx, "Ww1Picture");
+ USHORT y = SVBT16ToShort(p); p+= sizeof(SVBT16); nSize -= sizeof(SVBT16);
+ DBG_ASSERT(y==maxy, "Ww1Picture");
+ USHORT planes = SVBT16ToShort(p); p+= sizeof(SVBT16); nSize -= sizeof(SVBT16);
+ DBG_ASSERT(planes==1, "Ww1Picture");
+ USHORT bitcount = SVBT16ToShort(p); p+= sizeof(SVBT16); nSize -= sizeof(SVBT16);
+ DBG_ASSERT(bitcount==4, "Ww1Picture");
+ DBG_ASSERT(16*3+padx*maxy/2==nSize, "Ww1Picture");
+ SVBT32 tmpLong;
+ SVBT16 tmpShort;
+ SVBT8 tmpByte;
+#define wLong(n) \
+ LongToSVBT32(n, tmpLong); \
+ if ((rOut.Write(tmpLong, sizeof(SVBT32))) != sizeof(SVBT32)) goto error;
+#define wShort(n) \
+ ShortToSVBT16(n, tmpShort); \
+ if ((rOut.Write(tmpShort, sizeof(SVBT16))) != sizeof(SVBT16)) goto error;
+#define wByte(n) \
+ ByteToSVBT8(n, tmpByte); \
+ if ((rOut.Write(tmpByte, sizeof(SVBT8))) != sizeof(SVBT8)) goto error;
+ wByte('B'); wByte('M');
+ wLong(54 + 4 * 16 + padx * maxy);
+ wLong(0);
+ wLong(54 + 4 * 16);
+ wLong(40);
+ wLong(maxx);
+ wLong(maxy);
+ wShort(1);
+ wShort(8);
+ wLong(0);
+ wLong(0);
+ wLong(0);
+ wLong(0);
+ wLong(16);
+ wLong(16);
+ register USHORT i;
+ for (i=0;nSize>0&&i<16;i++)
+ {
+ wByte(*p);
+ p++;
+ nSize -= sizeof(BYTE);
+ wByte(*p);
+ p++;
+ nSize -= sizeof(BYTE);
+ wByte(*p);
+ p++;
+ nSize -= sizeof(BYTE);
+ wByte(0);
+ }
+ DBG_ASSERT(padx*maxy/2==nSize, "Ww1Picture");
+ register USHORT j;
+#if 1
+ {
+ BYTE* pBuf = new BYTE[padx];
+ BYTE* q = pBuf;
+ for (j=0;nSize>0&&j<maxy;j++)
+ {
+ register BYTE* q = pBuf;
+ for (i=0;nSize>0&&i<maxx;i+=2)
+ {
+ *q++ = *p>>4;
+ *q++ = *p&0xf;
+ p++;
+ nSize -= sizeof(BYTE);
+ }
+ for (;i<padx;i+=2)
+ {
+ *q++ = 0;
+ p++;
+ nSize -= sizeof(BYTE);
+ }
+ if(rOut.Write(pBuf, padx) != padx){
+ delete pBuf;
+ goto error;
+ }
+ }
+ delete pBuf;
+ }
+#else
+ for (j=0;nSize>0&&j<maxy;j++)
+ {
+ for (i=0;nSize>0&&i<maxx;i+=2)
+ {
+ wByte(*p>>4);
+ wByte(*p&0xf);
+ p++;
+ nSize -= sizeof(BYTE);
+ }
+ for (;i<padx;i+=2)
+ {
+ wByte(0);
+ p++;
+ nSize -= sizeof(BYTE);
+ }
+ }
+#endif
+ DBG_ASSERT(nSize==0, "Ww1Picture");
+#undef wLong
+#undef wShort
+#undef wByte
+ rOut.Seek(0);
+ return;
+error:
+ ;
+}
+
+void Ww1Picture::Out(Ww1Shell& rOut, Ww1Manager& rMan)
+{
+ Graphic* pGraphic = 0;
+ USHORT mm;
+ switch (mm = pPic->mfp.mmGet())
+ {
+ case 8: // embedded metafile
+ {
+ SvMemoryStream aOut(8192, 8192);
+ aOut.Write(pPic->rgbGet(), pPic->lcbGet() -
+ (sizeof(*pPic)-sizeof(pPic->rgb)));
+ aOut.Seek(0);
+ GDIMetaFile aWMF;
+ if (ReadWindowMetafile(aOut, aWMF) && aWMF.GetActionCount() > 0)
+ {
+ aWMF.SetPrefMapMode(MapMode(MAP_100TH_MM));
+ Size aOldSiz(aWMF.GetPrefSize());
+ Size aNewSiz(pPic->mfp.xExtGet(), pPic->mfp.yExtGet());
+ Fraction aFracX(aNewSiz.Width(), aOldSiz.Width());
+ Fraction aFracY(aNewSiz.Height(), aOldSiz.Height());
+ aWMF.Scale(aFracX, aFracY);
+ aWMF.SetPrefSize(aNewSiz);
+ pGraphic = new Graphic(aWMF);
+ }
+ break;
+ }
+ case 94: // embedded name SH:??? Was denn nun ? Embeddet oder Name ?
+ case 98: // TIFF-Name
+ {
+ String aDir( (sal_Char*)pPic->rgbGet(),
+ (USHORT)(pPic->lcbGet() - (sizeof(*pPic)-sizeof(pPic->rgb))),
+ RTL_TEXTENCODING_MS_1252 );
+ //SvFileStream aOut(aDir, STREAM_READ|STREAM_WRITE|STREAM_TRUNC);
+ rOut.AddGraphic( aDir );
+ }
+ break;
+ case 97: // embedded bitmap
+// case 99: // SH: bei meinem BspDoc 41738.doc auch embedded Bitmap,
+ // aber leider anderes Format
+ {
+ ULONG nSiz = GuessPicSize(pPic);
+ SvMemoryStream aOut(nSiz, 8192);
+ WriteBmp(aOut);
+ Bitmap aBmp;
+ aOut >> aBmp;
+ pGraphic = new Graphic(aBmp);
+ }
+ default:
+ DBG_ASSERT(pPic->mfp.mmGet() == 97, "Ww1Picture");
+ }
+ if (pGraphic)
+ rOut << *pGraphic;
+}
+
+////////////////////////////////////////////////////////// HeaderFooter
+void Ww1HeaderFooter::Start(Ww1Shell& rOut, Ww1Manager& rMan)
+{
+// wird sowieso nur bei SEPs aufgerufen, keine weitere pruefung
+// noetig:
+ if (!rMan.Pushed())
+ {
+ while ((*this)++)
+ switch (eHeaderFooterMode)
+ {
+ case FtnSep:
+ break;
+ case FtnFollowSep:
+ break;
+ case FtnNote:
+ break;
+ case EvenHeadL:
+ break;
+ case OddHeadL:
+ {
+ ULONG begin;
+ ULONG end;
+ if (FillOddHeadL(begin, end))
+ {
+ Ww1HddText* pText = new Ww1HddText(rMan.GetFib());
+ pText->Seek(begin);
+ pText->SetCount(end-begin);
+ rOut.BeginHeader();
+ rMan.Push1(pText, pText->Offset(rMan.GetFib()), begin,
+ new Ww1HeaderFooterFields(rMan.GetFib()));
+ rOut << rMan;
+ rMan.Pop();
+ rOut.EndHeaderFooter();
+ return;
+ }
+ }
+ break;
+ case EvenFootL:
+ break;
+ case OddFootL:
+ {
+ ULONG begin;
+ ULONG end;
+ if (FillOddFootL(begin, end))
+ {
+ Ww1HddText* pText = new Ww1HddText(rMan.GetFib());
+ pText->Seek(begin);
+ pText->SetCount(end-begin);
+ rOut.BeginFooter();
+ rMan.Push1(pText, pText->Offset(rMan.GetFib()), begin,
+ new Ww1HeaderFooterFields(rMan.GetFib()));
+ rOut << rMan;
+ rMan.Pop();
+ rOut.EndHeaderFooter();
+ return;
+ }
+ }
+ break;
+ case FirstHeadL:
+ break;
+ }
+ }
+}
+
+void Ww1HeaderFooter::Stop(Ww1Shell& rOut, Ww1Manager& rMan, sal_Unicode&)
+{
+ if (!rMan.Pushed() && eHeaderFooterMode != None
+// && rMan.GetText().Where() >= rMan.GetText().Count()
+ )
+ {
+ Start(rOut, rMan);
+ }
+}
+
+/***********************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww1/w1filter.cxx,v 1.1.1.1 2000-09-18 17:14:57 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.29 2000/09/18 16:04:56 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.28 2000/05/11 16:06:52 jp
+ Changes for Unicode
+
+ Revision 1.27 2000/02/11 14:39:31 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.26 1999/03/16 11:12:24 JP
+ Task #63047#: keine Abfrage mehr auf ein SVX_TAB_DEFDIST
+
+
+ Rev 1.25 16 Mar 1999 12:12:24 JP
+ Task #63047#: keine Abfrage mehr auf ein SVX_TAB_DEFDIST
+
+ Rev 1.24 17 Nov 1998 10:48:18 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.23 27 Feb 1998 19:29:06 HJS
+ SH 27.02.98
+
+ Rev 1.20 09 Dec 1997 17:04:38 JP
+ neue InhaltsVerzeichnis Poolvorlagen -> neuer MaxLevel
+
+ Rev 1.19 29 Nov 1997 17:37:10 MA
+ includes
+
+ Rev 1.18 21 Nov 1997 17:22:44 OM
+ Feldbefehl-Umstellung: DocInfo
+
+ Rev 1.17 14 Oct 1997 14:17:18 OM
+ Feldumstellung
+
+ Rev 1.16 09 Oct 1997 14:13:46 JP
+ Aenderungen von SH
+
+ Rev 1.15 02 Oct 1997 15:26:00 OM
+ Feldumstellung
+
+ Rev 1.14 29 Sep 1997 12:16:56 OM
+ Feldumstellung
+
+ Rev 1.13 24 Sep 1997 15:25:24 OM
+ Feldumstellung
+
+ Rev 1.12 04 Sep 1997 11:18:00 JP
+ include
+
+ Rev 1.11 03 Sep 1997 14:16:58 SH
+ Flys, Tabellen ok, Style-Abhaengigkeiten u.v.a.m
+
+ Rev 1.10 15 Aug 1997 12:50:36 OS
+ charatr/frmatr/txtatr aufgeteilt
+
+ Rev 1.9 12 Aug 1997 14:16:34 OS
+ Header-Umstellung
+
+ Rev 1.8 11 Aug 1997 12:51:02 SH
+ Flys und einfache Tabellen und Tabulatoren
+
+ Rev 1.7 17 Jul 1997 15:20:52 MA
+ Bitmap Typ 99 geht nicht, abgeklemmt
+
+ Rev 1.6 16 Jun 1997 13:08:56 MA
+ Stand Micheal Dietrich
+
+ Rev 1.5 24 Mar 1997 03:04:22 HJS
+ fuer os2 auskommentiert
+
+ Rev 1.4 12 Mar 1997 19:12:18 SH
+ MDT: Progressbar, Pagedesc-Bug, Spalten, Anfang Tabellen u.a.
+
+ Rev 1.3 10 Jan 1997 18:46:30 SH
+ Stabiler und mehr von MDT
+
+ Rev 1.2 28 Nov 1996 18:08:50 SH
+ Schneller Schoener Weiter von MDT
+
+ Rev 1.1 30 Sep 1996 23:23:40 SH
+ neu von MDT
+
+ Rev 1.0 14 Aug 1996 19:32:28 SH
+ Initial revision.
+
+
+***********************************************************************/
+//]})
diff --git a/sw/source/filter/ww1/w1par.cxx b/sw/source/filter/ww1/w1par.cxx
new file mode 100644
index 000000000000..a21f47c61983
--- /dev/null
+++ b/sw/source/filter/ww1/w1par.cxx
@@ -0,0 +1,255 @@
+/*************************************************************************
+ *
+ * $RCSfile: w1par.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _PAM_HXX
+#include <pam.hxx> // fuer SwPam
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx> // class SwTxtNode
+#endif
+#ifndef _FLTINI_HXX
+#include <fltini.hxx> // Ww1Reader
+#endif
+#ifndef _W1PAR_HXX
+#include <w1par.hxx>
+#endif
+
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx> // StatLine...()
+#endif
+#ifndef _SWSWERROR_H
+#include <swerror.h> // ERR_WW1_...
+#endif
+#ifndef _STATSTR_HRC
+#include <statstr.hrc> // ResId fuer Statusleiste
+#endif
+
+//----------------------------------------
+// Initialisieren der Feld-FilterFlags
+//----------------------------------------
+
+static ULONG WW1_Read_FieldIniFlags()
+{
+// USHORT i;
+ ULONG nFieldFlags = ReadFilterFlags( "WW1F" );
+ if ( SwFltGetFlag( nFieldFlags, SwFltControlStack::HYPO ) )
+ {
+ SwFltSetFlag( nFieldFlags, SwFltControlStack::BOOK_TO_VAR_REF );
+ SwFltSetFlag( nFieldFlags, SwFltControlStack::TAGS_DO_ID );
+ SwFltSetFlag( nFieldFlags, SwFltControlStack::TAGS_IN_TEXT );
+ SwFltSetFlag( nFieldFlags, SwFltControlStack::ALLOW_FLD_CR );
+ }
+ return nFieldFlags;
+}
+
+////////////////////////////////////////////////// StarWriter-Interface
+//
+// Eine Methode liefern die call-Schnittstelle fuer den Writer.
+// Read() liest eine Datei. hierzu werden zwei Objekte erzeugt, die Shell,
+// die die Informationen aufnimmt und der Manager der sie aus der Datei liest.
+// Diese werden dann einfach per Pipe 'uebertragen'.
+//
+
+ULONG WW1Reader::Read(SwDoc& rDoc, SwPaM& rPam, const String& cName)
+{
+ ULONG nRet = ERR_SWG_READ_ERROR;
+ ASSERT(pStrm!=NULL, "W1-Read ohne Stream");
+ if (pStrm != NULL)
+ {
+ BOOL bNew = !bInsertMode; // Neues Doc ( kein Einfuegen )
+
+ // erstmal eine shell konstruieren: die ist schnittstelle
+ // zum writer-dokument
+ ULONG nFieldFlags = WW1_Read_FieldIniFlags();
+ Ww1Shell* pRdr = new Ww1Shell( rDoc, rPam, bNew, nFieldFlags );
+ if( pRdr )
+ {
+ // dann den manager, der liest die struktur des word-streams
+ Ww1Manager* pMan = new Ww1Manager( *pStrm, nFieldFlags );
+ if( pMan )
+ {
+ if( !pMan->GetError() )
+ {
+ ::StartProgress( STR_STATSTR_W4WREAD, 0, 100,
+ rDoc.GetDocShell() );
+ ::SetProgressState( 0, rDoc.GetDocShell() );
+ // jetzt nur noch alles rueberschieben
+ *pRdr << *pMan;
+ if( !pMan->GetError() )
+ // und nur hier, wenn kein fehler auftrat
+ // fehlerfreiheit melden
+ nRet = 0; // besser waere: WARN_SWG_FEATURES_LOST;
+ ::EndProgress( rDoc.GetDocShell() );
+ }
+ else
+ {
+ if( pMan->GetFib().GetFIB().fComplexGet() )
+ //!!! ACHTUNG: hier muss eigentlich ein Error
+ // wegen Fastsave kommen, das der PMW-Filter
+ // das nicht unterstuetzt. Stattdessen temporaer
+ // nur eine Warnung, bis die entsprechende
+ // Meldung und Behandlung weiter oben eingebaut ist.
+// nRet = WARN_WW6_FASTSAVE_ERR;
+ // Zum Einchecken mit neuem String:
+ nRet = ERR_WW6_FASTSAVE_ERR;
+ }
+ }
+ delete pMan;
+ }
+ delete pRdr;
+ }
+ Ww1Sprm::DeinitTab();
+ return nRet;
+}
+
+///////////////////////////////////////////////////////////////// Shell
+//
+// Die Shell ist die Schnittstelle vom Filter zum Writer. Sie ist
+// abgeleitet von der mit ww-filter gemeinsam benutzten Shell
+// SwFltShell und enthaelt alle fuer ww1 noetigen Erweiterungen. Wie
+// in einen Stream werden alle Informationen, die aus der Datei
+// gelesen werden, in die shell ge'piped'.
+//
+Ww1Shell::Ww1Shell( SwDoc& rD, SwPaM& rPam, BOOL bNew, ULONG nFieldFlags)
+ : SwFltShell(&rD, rPam, bNew, nFieldFlags)
+{
+}
+
+
+
+/**********************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww1/w1par.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.20 2000/09/18 16:04:57 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.19 2000/05/15 16:37:48 jp
+ Changes for Unicode
+
+ Revision 1.18 2000/05/11 16:07:43 jp
+ Changes for Unicode
+
+ Revision 1.17 1998/07/23 09:13:52 JP
+ Task #52654#: Einfuegen Doc nicht mit einer CrsrShell sondern mit einen PaM
+
+
+ Rev 1.16 23 Jul 1998 11:13:52 JP
+ Task #52654#: Einfuegen Doc nicht mit einer CrsrShell sondern mit einen PaM
+
+ Rev 1.15 27 Feb 1998 19:29:46 HJS
+ SH 27.02.98
+
+ Rev 1.13 29 Nov 1997 17:37:08 MA
+ includes
+
+ Rev 1.12 09 Oct 1997 14:13:48 JP
+ Aenderungen von SH
+
+ Rev 1.11 04 Sep 1997 12:37:38 JP
+ Umstellungen fuer FilterDetection im SwModule und SwDLL
+
+ Rev 1.10 03 Sep 1997 14:14:24 SH
+ Flys, Tabellen ok, Style-Abhaengigkeiten u.v.a.m
+
+ Rev 1.9 12 Aug 1997 14:16:36 OS
+ Header-Umstellung
+
+ Rev 1.8 11 Aug 1997 14:07:32 OM
+ Headerfile-Umstellung
+
+ Rev 1.7 16 Jun 1997 13:08:58 MA
+ Stand Micheal Dietrich
+
+ Rev 1.6 12 Mar 1997 19:12:40 SH
+ MDT: Progressbar, Pagedesc-Bug, Spalten, Anfang Tabellen u.a.
+
+ Rev 1.5 10 Jan 1997 18:47:12 SH
+ Stabiler und mehr von MDT
+
+ Rev 1.4 28 Nov 1996 18:09:18 SH
+ Schneller Schoener Weiter von MDT
+
+ Rev 1.3 18 Oct 1996 10:58:36 JP
+ aufbreitet fuer PRJPCH
+
+ Rev 1.2 30 Sep 1996 23:24:10 SH
+ neu von MDA
+
+ Rev 1.0 14 Aug 1996 19:32:28 SH
+ Initial revision.
+
+**********************************************************************/
+//]})
diff --git a/sw/source/filter/ww1/w1par.hxx b/sw/source/filter/ww1/w1par.hxx
new file mode 100644
index 000000000000..48f878987ece
--- /dev/null
+++ b/sw/source/filter/ww1/w1par.hxx
@@ -0,0 +1,81 @@
+/*************************************************************************
+ *
+ * $RCSfile: w1par.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _W1PAR_HXX
+#define _W1PAR_HXX
+
+#ifndef _FLTSHELL_HXX
+#include <fltshell.hxx>
+#endif
+#ifndef _W1CLASS_HXX
+#include <w1class.hxx>
+#endif
+
+////////////////////////////////////////////////////////////// Ww1Shell
+class Ww1Shell : public SwFltShell
+{
+public:
+ Ww1Shell(SwDoc&, SwPaM&, BOOL bNew, ULONG nFieldFlags);
+};
+
+
+#endif
+
diff --git a/sw/source/filter/ww1/w1sprm.cxx b/sw/source/filter/ww1/w1sprm.cxx
new file mode 100644
index 000000000000..130f592ab8cc
--- /dev/null
+++ b/sw/source/filter/ww1/w1sprm.cxx
@@ -0,0 +1,960 @@
+/*************************************************************************
+ *
+ * $RCSfile: w1sprm.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+// std
+#include <stdio.h> // sprintf
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#include <tools/solar.h>
+#ifndef _SVX_PAPERINF_HXX
+#include <svx/paperinf.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_SPLTITEM_HXX //autogen
+#include <svx/spltitem.hxx>
+#endif
+#ifndef _SVX_KEEPITEM_HXX //autogen
+#include <svx/keepitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_SHADITEM_HXX //autogen
+#include <svx/shaditem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_LSPCITEM_HXX //autogen
+#include <svx/lspcitem.hxx>
+#endif
+#ifndef _SVX_TSTPITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+
+
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _CHARATR_HXX
+#include <charatr.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+#ifndef _FLTINI_HXX
+#include <fltini.hxx>
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _FLDDAT_HXX
+#include <flddat.hxx>
+#endif
+#ifndef _REFFLD_HXX
+#include <reffld.hxx>
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx>
+#endif
+#ifndef _W1PAR_HXX
+#include <w1par.hxx>
+#endif
+
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx>
+#endif
+#ifndef _SWSWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _STATSTR_HRC
+#include <statstr.hrc>
+#endif
+
+/////////////////////////////////////////////////////////////// Ww1Sprm
+void Ww1Sprm::Stop( Ww1Shell& rOut, Ww1Manager& rMan)
+{
+ if(IsUsed())
+// for(USHORT i=0;i<Count();i++)
+ for(short i=Count()-1;i>=0;i--){ // rueckwaerts
+ BYTE nId;
+ USHORT nSize;
+ BYTE* pSprm;
+ Fill(i, nId, nSize, pSprm);
+ GetTab(nId).Stop(rOut, nId, pSprm, nSize, rMan);
+ }
+}
+
+void Ww1Sprm::Start(
+ Ww1Shell& rOut, Ww1Manager& rMan, USHORT i)
+{
+ BYTE nId;
+ USHORT nSize;
+ BYTE* pSprm;
+ Fill(i, nId, nSize, pSprm);
+ GetTab(nId).Start(rOut, nId, pSprm, nSize, rMan);
+}
+
+void Ww1Sprm::Start(
+ Ww1Shell& rOut, Ww1Manager& rMan)
+{
+ if(IsUsed())
+ for(USHORT i=0;i<Count();i++)
+ Start(rOut, rMan, i);
+}
+
+//////////////////////////////////////////////////////////// SingleSprm
+void Ww1SingleSprm::Start(
+ Ww1Shell&, BYTE nId, BYTE*, USHORT, Ww1Manager&)
+{
+#ifdef DEBUG
+// ASSERT(FALSE, "Unknown Sprm");
+ if (nId)
+ {
+ char s[200];
+ sprintf(s, "%s(%d) Sprm id %d started.",
+ __FILE__, __LINE__,(int)nId);
+ DBG_ERROR(s);
+ }
+#endif
+}
+
+void Ww1SingleSprm::Stop(
+ Ww1Shell&, BYTE, BYTE*, USHORT, Ww1Manager&)
+{
+// ASSERT(FALSE, "Unknown Sprm");
+}
+
+////////////////////////////////////////////////////////////////// STOP
+//
+// folgende defines werden genutzt zur implementierung der
+// Stop()-Member der SingleSprm-klassen, da diese im normalfalle
+// lediglich EndItem(s) in die shell stellen.
+//
+#define STOP1(Class, Code) \
+ void Class::Stop( \
+ Ww1Shell& rOut, BYTE, BYTE*, USHORT, Ww1Manager&) { \
+ rOut.EndItem(Code); }
+#define STOP2(Class, Code1, Code2) \
+ void Class::Stop( \
+ Ww1Shell& rOut, BYTE, BYTE*, USHORT, Ww1Manager&) { \
+ rOut.EndItem(Code1).EndItem(Code2); }
+
+/////////////////////////////////////////////////////// SingleSprmXxxxx
+//
+// hier beginnt die auswertung der eigentlichen sprms. jeder sprmtyp
+// hat eine eigene klasse, die die virtualen methoden start und stop
+// implementiert. die klassen stehen in der sprm-tab, die statischer
+// member von Ww1Sprm ist. taucht ein sprm im dokument auf, werden die
+// virtualen methoden bei beginn und ende der formatierung gerufen.
+//
+void Ww1SingleSprmPDxaLeft::Start(
+ Ww1Shell& rOut, BYTE, BYTE* pSprm, USHORT, Ww1Manager&)
+{
+ SvxLRSpaceItem aLR((SvxLRSpaceItem&)rOut.GetAttr(RES_LR_SPACE));
+ short nPara = SVBT16ToShort(pSprm);
+ if(nPara < 0)
+ nPara = 0;
+ if(aLR.GetTxtFirstLineOfst() < -nPara)
+ aLR.SetTxtFirstLineOfst(-nPara); // sonst weigert sich SetTxtLeft()
+ aLR.SetTxtLeft(nPara);
+ rOut << aLR;
+}
+
+void Ww1SingleSprmPDxaRight::Start(
+ Ww1Shell& rOut, BYTE, BYTE* pSprm, USHORT, Ww1Manager&)
+{
+ SvxLRSpaceItem aLR((SvxLRSpaceItem&)rOut.GetAttr(RES_LR_SPACE));
+ short nPara = SVBT16ToShort(pSprm);
+ if(nPara < 0)
+ nPara = 0;
+ aLR.SetRight(nPara);
+ rOut << aLR;
+}
+
+void Ww1SingleSprmPDxaLeft1::Start(
+ Ww1Shell& rOut, BYTE, BYTE* pSprm, USHORT, Ww1Manager&)
+{
+ SvxLRSpaceItem aLR((SvxLRSpaceItem&)rOut.GetAttr(RES_LR_SPACE));
+ short nPara = SVBT16ToShort(pSprm);
+ if(-nPara >(short)aLR.GetTxtLeft())
+ nPara = -(short)aLR.GetTxtLeft();
+ aLR.SetTxtFirstLineOfst(nPara);
+ rOut << aLR;
+}
+
+STOP1(Ww1SingleSprmPDxa, RES_LR_SPACE)
+
+void Ww1SingleSprmPJc::Start(
+ Ww1Shell& rOut, BYTE, BYTE* pSprm, USHORT, Ww1Manager&)
+{
+ static SvxAdjust __READONLY_DATA aAdj[] = {
+ SVX_ADJUST_LEFT,
+ SVX_ADJUST_CENTER,
+ SVX_ADJUST_RIGHT,
+ SVX_ADJUST_BLOCK };
+ BYTE nPara = SVBT8ToByte(pSprm);
+ nPara %=(sizeof(aAdj)/sizeof(*aAdj));
+ rOut << SvxAdjustItem(aAdj[nPara]);
+}
+
+STOP1(Ww1SingleSprmPJc, RES_PARATR_ADJUST)
+
+void Ww1SingleSprmPFKeep::Start(
+ Ww1Shell& rOut, BYTE, BYTE* pSprm, USHORT, Ww1Manager&)
+{
+ rOut << SvxFmtSplitItem((SVBT8ToByte(pSprm) & 1) == 0);
+}
+
+STOP1(Ww1SingleSprmPFKeep, RES_PARATR_SPLIT)
+
+void Ww1SingleSprmPFKeepFollow::Start(
+ Ww1Shell& rOut, BYTE, BYTE* pSprm, USHORT, Ww1Manager&)
+{
+ rOut << SvxFmtKeepItem((SVBT8ToByte(pSprm) & 1) != 0);
+}
+
+STOP1(Ww1SingleSprmPFKeepFollow, RES_KEEP)
+
+void Ww1SingleSprmPPageBreakBefore::Start(
+ Ww1Shell& rOut, BYTE, BYTE* pSprm, USHORT, Ww1Manager&)
+{
+ rOut << SvxFmtBreakItem(SVBT8ToByte(pSprm) & 1?
+ SVX_BREAK_PAGE_BEFORE:SVX_BREAK_NONE );
+}
+
+STOP1(Ww1SingleSprmPPageBreakBefore, RES_BREAK)
+
+SvxBorderLine* Ww1SingleSprmPBrc::SetBorder(SvxBorderLine* pLine, W1_BRC10* pBrc)
+{
+ USHORT nCode;
+ if(pBrc->dxpLine2WidthGet() == 0)
+ {
+ switch(pBrc->dxpLine1WidthGet())
+ {
+ default: ASSERT(FALSE, "unknown linewidth");
+ case 0: return 0; // keine Linie
+ case 1: nCode = DEF_LINE_WIDTH_0; break;
+ case 2: nCode = DEF_LINE_WIDTH_1; break;
+ case 3: nCode = DEF_LINE_WIDTH_2; break;
+ case 4: nCode = DEF_LINE_WIDTH_3; break;
+ case 5: nCode = DEF_LINE_WIDTH_4; break;
+ }
+ pLine->SetOutWidth(nCode);
+ pLine->SetInWidth(0);
+ }
+ else
+ {
+ switch(pBrc->dxpLine1WidthGet())
+ {
+ default: ASSERT(FALSE, "unknown linewidth");
+ case 1: nCode = DEF_DOUBLE_LINE0_IN; break;
+ }
+ pLine->SetOutWidth(nCode);
+ switch(pBrc->dxpLine2WidthGet())
+ {
+ default: ASSERT(FALSE, "unknown linewidth");
+ case 1: nCode = DEF_DOUBLE_LINE0_OUT; break;
+ }
+ pLine->SetInWidth(nCode);
+ }
+ switch(pBrc->dxpLine1WidthGet())
+ {
+ default: ASSERT(FALSE, "unknown space");
+ case 0: nCode = DEF_DOUBLE_LINE0_DIST; break;
+ case 1: nCode = DEF_DOUBLE_LINE1_DIST; break;
+ case 2: nCode = DEF_DOUBLE_LINE2_DIST; break;
+ case 3: nCode = DEF_DOUBLE_LINE3_DIST; break;
+ }
+ pLine->SetDistance(nCode);
+ return pLine;
+}
+#if 0
+SvxBorderLine* Ww1SingleSprmPBrc::SetBorder(SvxBorderLine* pLine, W1_BRC* pBrc)
+{
+ static USHORT __READONLY_DATA nOutTab[] = { // Aussenlinie
+ DEF_LINE_WIDTH_0, DEF_LINE_WIDTH_0, // No Line -> hair line
+ DEF_LINE_WIDTH_0, DEF_LINE_WIDTH_0,
+ DEF_LINE_WIDTH_0, DEF_LINE_WIDTH_0,
+ DEF_LINE_WIDTH_0, DEF_LINE_WIDTH_0, // Single Thin Dotted / Dashed
+ DEF_LINE_WIDTH_0, DEF_LINE_WIDTH_0, // Single Line thin(Idx * 15tw)
+ DEF_LINE_WIDTH_1, DEF_LINE_WIDTH_2,
+ DEF_LINE_WIDTH_2, DEF_LINE_WIDTH_3,
+ DEF_LINE_WIDTH_0, DEF_LINE_WIDTH_0, // Single Thin Dotted / Dashed
+ DEF_LINE_WIDTH_0, DEF_LINE_WIDTH_1, // Single Line thick(Idx * 30tw)
+ DEF_LINE_WIDTH_2, DEF_LINE_WIDTH_3,
+ DEF_LINE_WIDTH_4, DEF_LINE_WIDTH_4,
+ DEF_LINE_WIDTH_1, DEF_LINE_WIDTH_1, // Single Thick Dotted / Dashed
+ DEF_DOUBLE_LINE0_OUT, DEF_DOUBLE_LINE0_OUT, // Double Line(Idx * 15tw)
+ DEF_DOUBLE_LINE1_OUT, DEF_DOUBLE_LINE2_OUT,
+ DEF_DOUBLE_LINE2_OUT, DEF_DOUBLE_LINE3_OUT,
+ DEF_DOUBLE_LINE0_OUT, DEF_DOUBLE_LINE0_OUT }; // Double Dotted / Dashed
+ static USHORT __READONLY_DATA nInTab[] = { // Innenlinie
+ 0, 0, 0, 0, 0, 0, 0, 0, // No line / dotted / dashed
+ 0, 0, 0, 0, 0, 0, 0, 0, // Single Line thin(Idx * 15tw)
+ 0, 0, 0, 0, 0, 0, 0, 0, // Single Line thick(Idx * 30tw)
+ DEF_DOUBLE_LINE0_IN, DEF_DOUBLE_LINE0_IN, // Double Line(Idx * 15tw)
+ DEF_DOUBLE_LINE1_IN, DEF_DOUBLE_LINE2_IN,
+ DEF_DOUBLE_LINE2_IN, DEF_DOUBLE_LINE3_IN,
+ DEF_DOUBLE_LINE0_IN, DEF_DOUBLE_LINE0_IN }; // Double Dotted / Dashed
+ static USHORT __READONLY_DATA nDistTab[] = { // Abstand der Linien
+ 0, 0, 0, 0, 0, 0, 0, 0, // No line / dotted / dashed
+ 0, 0, 0, 0, 0, 0, 0, 0, // Single Line thin(Idx * 15tw)
+ 0, 0, 0, 0, 0, 0, 0, 0, // Single Line thick(Idx * 30tw)
+ DEF_DOUBLE_LINE0_DIST, DEF_DOUBLE_LINE0_DIST, // Double Line(Idx * 15tw)
+ DEF_DOUBLE_LINE1_DIST, DEF_DOUBLE_LINE2_DIST,
+ DEF_DOUBLE_LINE2_DIST, DEF_DOUBLE_LINE3_DIST,
+ DEF_DOUBLE_LINE0_DIST, DEF_DOUBLE_LINE0_DIST }; // Double Dotted / Dashed
+ short nIdx = pBrc->dxpLineWidthGet() + 8 * pBrc->brcTypeGet();
+ pLine->SetOutWidth(nOutTab[nIdx]);
+ pLine->SetInWidth(nInTab[nIdx]);
+ pLine->SetDistance(nDistTab[nIdx]);
+ if(pBrc->icoGet())
+ {
+ ColorName nIdx;
+ switch(pBrc->icoGet())
+ {
+ default: ASSERT(FALSE, "unknown color code");
+ case 0:
+ case 1: nIdx = COL_BLACK; break;
+ case 2: nIdx = COL_LIGHTBLUE; break;
+ case 3: nIdx = COL_LIGHTCYAN; break;
+ case 4: nIdx = COL_LIGHTGREEN; break;
+ case 5: nIdx = COL_LIGHTMAGENTA; break;
+ case 6: nIdx = COL_LIGHTRED; break;
+ case 7: nIdx = COL_YELLOW; break;
+ case 8: nIdx = COL_WHITE; break;
+ }
+ Color aCol(nIdx);
+ pLine->SetColor(aCol);
+ }
+ return pLine;
+}
+#endif
+
+void Ww1SingleSprmPBrc::Start(
+ Ww1Shell& rOut, BYTE, W1_BRC10* pBrc, USHORT nSize, Ww1Manager& rMan, SvxBoxItem& aBox)
+{
+ ASSERT(sizeof(W1_BRC10) == nSize, "sizemissmatch");
+ if(pBrc->dxpSpaceGet())
+ aBox.SetDistance(10 + 20 * pBrc->dxpSpaceGet());
+ //??? Warum 10+... ????
+
+ if( rOut.IsInFly() )
+ rOut.SetFlyFrmAttr( aBox );
+ else
+ rOut << aBox;
+
+ if(pBrc->fShadowGet())
+ {
+ Color aBlack(COL_BLACK); // schwarzer...
+ SvxShadowItem aS(ITEMID_SHADOW,(const Color*)&aBlack, 32,
+ SVX_SHADOW_BOTTOMRIGHT); // 1.6 tw breit
+ if( rOut.IsInFly() )
+ rOut.SetFlyFrmAttr( aS );
+ else
+ rOut << aS;
+ }
+}
+
+STOP2(Ww1SingleSprmPBrc, RES_BOX, RES_SHADOW)
+
+static USHORT __READONLY_DATA nBrcTrans[BRC_ANZ] =
+ { BOX_LINE_TOP, BOX_LINE_LEFT, BOX_LINE_BOTTOM, BOX_LINE_RIGHT };
+
+void Ww1SingleSprmPBrc10::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+
+ W1_BRC10* pBrc =(W1_BRC10*)pSprm;
+ const SfxPoolItem &rItem = ( ( rOut.IsInFly() ) ?
+ rOut.GetFlyFrmAttr(RES_BOX) :rOut.GetAttr(RES_BOX));
+ const SvxBoxItem &rBoxItem = (const SvxBoxItem&)rItem;
+ SvxBoxItem aBox( rBoxItem );
+// rOut >> aBox;
+ SvxBorderLine aLine;
+ aBox.SetLine(SetBorder(&aLine, pBrc), nBrcTrans[nLine] );
+ Ww1SingleSprmPBrc::Start(rOut, nId, pBrc, nSize, rMan, aBox);
+}
+
+STOP1(Ww1SingleSprmParaSpace, RES_UL_SPACE)
+
+void Ww1SingleSprmPDyaBefore::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nPara = SVBT16ToShort(pSprm);
+ if(nPara < 0)
+ nPara = -nPara;
+ SvxULSpaceItem aUL((SvxULSpaceItem&)rOut.GetAttr(RES_UL_SPACE));
+ aUL.SetUpper(nPara);
+ rOut << aUL;
+}
+
+void Ww1SingleSprmPDyaAfter::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nPara = SVBT16ToShort(pSprm);
+ if(nPara < 0)
+ nPara = -nPara;
+ SvxULSpaceItem aUL((SvxULSpaceItem&)rOut.GetAttr(RES_UL_SPACE));
+ aUL.SetLower(nPara);
+ rOut << aUL;
+}
+
+STOP1(Ww1SingleSprmPDyaLine, RES_PARATR_LINESPACING)
+
+void Ww1SingleSprmPDyaLine::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nSpace = SVBT16ToShort(pSprm);
+ if(nSpace < 0)
+ nSpace = -nSpace;
+ SvxLineSpacingItem aLSpc;
+ if(TRUE)
+ {// MultilineSpace(proportional)
+ long n = nSpace * 100 / 240; // W1: 240 = 100%, SW: 100 = 100%
+ if(n>200)
+ n = 200; // SW_UI-Maximum
+ aLSpc.GetLineSpaceRule() = SVX_LINE_SPACE_AUTO;
+ aLSpc.SetPropLineSpace((BYTE)n);
+ }
+ else
+ {// Fixed / Minimum
+ aLSpc.SetLineHeight((USHORT)nSpace);
+ aLSpc.GetInterLineSpaceRule() = SVX_INTER_LINE_SPACE_OFF;
+ }
+ rOut << aLSpc;
+}
+
+void Ww1SingleSprmPChgTabsPapx::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+#ifdef DEBUG
+// rOut << 'T';
+#endif
+ short nLeftPMgn = 0; // Koordinaten etwa gleich ??
+// ( pAktColl ) ? pCollA[nAktColl].nLeftParaMgn
+// : nLeftParaMgn; // Absatz L-Space
+
+ short i;
+ BYTE nDel = pSprm[1];
+ BYTE* pDel = pSprm + 2; // Del - Array
+ BYTE nIns = pSprm[nDel*2+2];
+ BYTE* pIns = pSprm + 2*nDel + 3; // Ins - Array
+ W1_TBD* pTyp = (W1_TBD*)(pSprm + 2*nDel + 2*nIns + 3);// Typ - Array
+
+ SvxTabStopItem aAttr( (SvxTabStopItem&)rOut.GetNodeOrStyAttr( RES_PARATR_TABSTOP ));
+
+ SvxTabStop aTabStop;
+
+ for( i=0; i<nDel; i++ ){
+ USHORT nPos = aAttr.GetPos( SVBT16ToShort( pDel + i*2 ) - nLeftPMgn );
+ if( nPos != SVX_TAB_NOTFOUND )
+ aAttr.Remove( nPos, 1 );
+ }
+
+ for( i=0; i<nIns; i++ ){
+ short nPos = SVBT16ToShort( pIns + i*2 ) - nLeftPMgn;
+ if( nPos < 0 )
+ continue;
+ aTabStop.GetTabPos() = nPos;
+ switch( pTyp[i].jcGet() ){
+ case 0: aTabStop.GetAdjustment() = SVX_TAB_ADJUST_LEFT; break;
+ case 1: aTabStop.GetAdjustment() = SVX_TAB_ADJUST_CENTER; break;
+ case 2: aTabStop.GetAdjustment() = SVX_TAB_ADJUST_RIGHT; break;
+ case 3: aTabStop.GetAdjustment() = SVX_TAB_ADJUST_DECIMAL; break;
+ case 4: continue; // ignoriere Bar
+ }
+
+ switch( pTyp[i].tlcGet() ){
+ case 0: aTabStop.GetFill() = ' '; break;
+ case 1: aTabStop.GetFill() = '.'; break;
+ case 2: aTabStop.GetFill() = '-'; break;
+ case 3:
+ case 4: aTabStop.GetFill() = '_'; break;
+ }
+
+ USHORT nPos2 = aAttr.GetPos( nPos );
+ if( nPos2 != SVX_TAB_NOTFOUND )
+ aAttr.Remove( nPos2, 1 ); // sonst weigert sich das Insert()
+
+ aAttr.Insert( aTabStop );
+ }
+ rOut << aAttr;
+}
+
+STOP1(Ww1SingleSprmPChgTabsPapx, RES_PARATR_TABSTOP)
+
+void Ww1SingleSprmSGprfIhdt::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ rMan.GetSep().SetGrpfIhdt(SVBT8ToByte(pSprm));
+}
+
+void Ww1SingleSprmSColumns::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nColSpace = 708; // default 1,25 cm
+ short nNettoWidth = -1; //~ mdt: dxaLeft/Right missing...
+ short nCols = SVBT16ToShort(pSprm);
+ nCols++;
+ if (nCols < 2)
+ return;
+ SwFmtCol aCol;
+ aCol.Init(nCols, nColSpace, nNettoWidth);
+ rOut.GetPageDesc().GetMaster().SetAttr(aCol);
+}
+
+void Ww1SingleSprmPTtp::Start(
+ Ww1Shell& rOut, BYTE, BYTE*, USHORT, Ww1Manager& rMan)
+{
+ rMan.SetInTtp( TRUE ); // Besonderheit: wird bei InTable::Stop und
+ // nicht bei InTtp::Stop zurueckgesetzt,
+ // da Auswertung in InTable
+}
+
+void Ww1SingleSprmPTtp::Stop(
+ Ww1Shell& rOut, BYTE, BYTE*, USHORT, Ww1Manager& rMan)
+{
+ if (rOut.IsInTable() && rMan.HasInTable())
+ rOut.NextTableRow();
+}
+
+void Ww1SingleSprmPFInTable::Start(
+ Ww1Shell& rOut, BYTE, BYTE*, USHORT,
+ Ww1Manager& rMan)
+{
+}
+
+void Ww1SingleSprmPFInTable::Stop(
+ Ww1Shell& rOut, BYTE, BYTE*, USHORT,
+ Ww1Manager& rMan)
+{
+ ASSERT(rOut.IsInTable(), "");
+// if (rOut.IsInTable() && rMan.HasInTable() && !rMan.IsInTtp() && !rMan.HasTtp())
+// rOut.NextTableCell();
+ rMan.SetInTtp( FALSE );
+}
+
+void Ww1SingleSprmTJc::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nSpace = SVBT16ToShort(pSprm);
+}
+
+#if 0
+void Ww1SingleSprmTDxaLeft::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nSpace = SVBT16ToShort(pSprm);
+ rOut.SetCellWidth(nSpace - rMan.GetX());
+ rMan.SetX(nSpace);
+}
+#endif
+
+void Ww1SingleSprmTDxaGapHalf::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nSpace = SVBT16ToShort(pSprm);
+ rOut.SetCellSpace(nSpace);
+}
+
+void Ww1SingleSprmTDefTable10::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ int i;
+ BYTE *p = pSprm + 2; // LaengenWord ueberlesen
+ BYTE nCount = *p;
+ p++;
+ nSize -= 3;
+// Es fehlt noch:
+// - GapHalf
+// - eventuelle Ausduennung der Zellenumrandungen
+
+ if( nCount < 1 || nCount > 32 || nSize < ( nCount + 1 ) * 2 )
+ return;
+
+// Erstmal die Zellenpositionen einlesen
+ short nPos = SVBT16ToShort( p ); // signed, kann auch neg. sein !!!
+
+// if( !rOut.IsTableWidthSet() ){ // Muss Tabellenbreite und -Ausrichtung
+ // noch gesetzt werden ?
+ {
+ short nWholeWidth = SVBT16ToShort( p + 2 * nCount ) - nPos;
+ rOut.SetTableWidth( (USHORT)nWholeWidth ); // Tabellenbreite setzen
+
+// Pos der Tabelle setzen
+ long nMidTab = nPos + nWholeWidth / 2; // TabellenMitte
+ const SwFrmFmt &rFmt = rOut.GetPageDesc().GetMaster();
+ const SvxLRSpaceItem& rLR = rFmt.GetLRSpace();
+ long nRight = rFmt.GetFrmSize().GetWidth()
+ - rLR.GetLeft() - rLR.GetRight();
+
+ SwHoriOrient eOri = HORI_LEFT;
+ if( nPos > MINLAY ){ // per Zuppeln positioniert
+ if ( nMidTab <= nRight / 3 ) // 1/3 der Seite
+ eOri = HORI_LEFT;
+ else if ( nMidTab <= 2 * nRight / 3 ) // 2/3 der Seite
+ eOri = HORI_CENTER;
+ else
+ eOri = HORI_RIGHT;
+ }
+ rOut.SetTableOrient( eOri );
+ }
+
+ BYTE* pEndPos = p+2;
+ BYTE* pTc0 = ( nSize >= nCount * 10 ) ? pEndPos + 2 * nCount : 0;
+ USHORT nCellsDeleted = 0; // fuer gemergte Zellen
+
+ for( i = 0; i < nCount; i++ ){
+// Info sammeln
+ W1_TC* pTc = (W1_TC*)pTc0;
+ BOOL bFirstMerged = (pTc) ? pTc->fFirstMergedGet() : FALSE;
+ BOOL bMerged = (pTc) ? pTc->fMergedGet() : FALSE;
+
+// Zellenbreiten setzen
+ USHORT nPos1 = SVBT16ToShort( pEndPos );
+ if( !bMerged )
+ rOut.SetCellWidth( nPos1 - nPos, i - nCellsDeleted );
+ // Zellenbreite setzen
+ // Wechselwirkung mit GapHalf fehlt noch
+ // ( GapHalf wird noch ignoriert )
+ pEndPos+=2;
+ nPos = nPos1;
+
+ if( pTc0 ){ // gibts TCs ueberhaupt ?
+ W1_TC* pTc = (W1_TC*)pTc0;
+ BOOL bFirstMerged = pTc->fFirstMergedGet();
+ BOOL bMerged = pTc->fMergedGet();
+// ASSERT( !bMerged, "Gemergte Tabellenzellen noch nicht vollstaendig implementiert" );
+ if( !bMerged ){
+// und nun die Umrandungen
+ SvxBoxItem aBox( (SvxBoxItem&)rOut.GetCellAttr( RES_BOX ));
+ SvxBorderLine aLine;
+ W1_BRC10* pBrc = pTc->rgbrcGet();
+ for( USHORT j=0; j<4; j++ ){
+ aBox.SetLine(Ww1SingleSprmPBrc::SetBorder(&aLine, pBrc),
+ nBrcTrans[j]);
+ pBrc++;
+ }
+ rOut.SetCellBorder( aBox, i - nCellsDeleted );
+ }else{
+// gemergte Zellen entfernen
+ rOut.DeleteCell( i - nCellsDeleted );
+ nCellsDeleted++;
+ }
+ pTc0+=sizeof(W1_TC); // 10
+ }
+ }
+}
+
+
+void Ww1SingleSprmTDyaRowHeight::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nSpace = SVBT16ToShort(pSprm);
+ rOut.SetCellHeight(nSpace);
+}
+
+// Fastsave-Attribute brauche ich als Dymmys nicht
+
+#if 0
+
+void Ww1SingleSprmTInsert::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+}
+
+void Ww1SingleSprmTDelete::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nSpace = SVBT16ToShort(pSprm);
+}
+
+void Ww1SingleSprmTDxaCol::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+}
+
+void Ww1SingleSprmTMerge::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nSpace = SVBT16ToShort(pSprm);
+}
+
+void Ww1SingleSprmTSplit::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nSpace = SVBT16ToShort(pSprm);
+}
+
+void Ww1SingleSprmTSetBrc10::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+}
+#endif // 0
+
+void Ww1SingleSprmPpc::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ BYTE nPpc = SVBT8ToByte(pSprm);
+
+ if (rOut.IsInTable()) // Flys in Tabellen kann PMW
+ return; // nicht
+
+ RndStdIds eAnchor; // Bindung
+ SwRelationOrient eHRel; // Seite oder Seitenrand
+ SwRelationOrient eVRel; // Seite oder Seitenrand
+
+ switch ( ( nPpc & 0x30 ) >> 4 ){ // Y - Bindung bestimmt Sw-Bindung
+ case 0: eAnchor = FLY_AT_CNTNT; // Vert Margin
+ eVRel = PRTAREA;
+// if( nYPos < 0 )
+// nYPos = 0; // koennen wir nicht
+ break;
+/* case 1:*/ // Vert. Seite
+ default:eAnchor = FLY_PAGE; // Vert Page oder unknown
+ eVRel = FRAME;
+ break; // 2=Vert. Paragraph, 3=Use Default
+ }
+
+ switch ( ( nPpc & 0xc0 ) >> 6 ){ // X - Bindung -> Koordinatentransformation
+ case 0: // Hor. Spalte
+ case 1: // Hor. Absatz
+ eHRel = PRTAREA;
+// nXPos += nPgLeft; // in Seiten-Koordinaten umrechnen
+ break;
+/* case 2:*/ // Hor. Seite
+ default:
+ eHRel = FRAME;
+ break;
+ }
+
+ if( !rOut.IsInFly() && rMan.IsInStyle() ){
+ rOut.BeginFly( eAnchor ); // Starte StyleFly
+ }else{
+ rOut.SetFlyAnchor( eAnchor ); // Setze Anker
+ }
+}
+
+void Ww1SingleSprmPDxaAbs::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nXPos = SVBT16ToShort(pSprm);
+
+ if( rMan.IsInStyle() && !rOut.IsInFly() ){
+ rOut.BeginFly(); // Fly ohne PPc-Attribut
+ }
+
+ SwRelationOrient eHRel = FRAME;
+ SwHoriOrient eHAlign = HORI_NONE;
+
+ switch( nXPos ){ // besondere X-Positionen ?
+ case 0:
+ case -12: eHAlign = HORI_NONE; nXPos = 0; break; // Mogel: innen -> links
+ // eigentich HORI_LEFT, aber dann verrueckt
+ // ein Abstand nach aussen den Fly
+ case -4: eHAlign = HORI_CENTER; nXPos = 0; break; // zentriert
+ case -8: // rechts
+ case -16: eHAlign = HORI_RIGHT; nXPos = 0; break; // Mogel: aussen -> rechts
+// default: nXPos += (short)nIniFlyDx; break; // Korrekturen per Ini-Datei
+ }
+ rOut.SetFlyXPos( nXPos, eHRel, eHAlign );
+}
+
+void Ww1SingleSprmPDyaAbs::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nYPos = SVBT16ToShort(pSprm);
+ SwRelationOrient eVRel = FRAME;
+ SwVertOrient eVAlign = VERT_NONE;
+
+ switch( nYPos ){ // besondere Y-Positionen ?
+ case -4: eVAlign = VERT_TOP; nYPos = 0; break; // oben
+ case -8: eVAlign = VERT_CENTER; nYPos = 0; break; // zentriert
+ case -12: eVAlign = VERT_BOTTOM; nYPos = 0; break; // unten
+// default: nYPos += (short)nIniFlyDy; break; // Korrekturen per Ini-Datei
+ }
+ rOut.SetFlyYPos( nYPos, eVRel, eVAlign );
+}
+
+void Ww1SingleSprmPDxaWidth::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ short nDxaWidth = SVBT16ToShort(pSprm);
+ rOut.SetFlyFrmAttr( SwFmtFrmSize( ATT_VAR_SIZE, nDxaWidth, MINFLY ) );
+}
+
+void Ww1SingleSprmPFromText::Start(
+ Ww1Shell& rOut, BYTE nId, BYTE* pSprm, USHORT nSize, Ww1Manager& rMan)
+{
+ if( rOut.IsInFly() ){ // Kommt auch ausserhalb eines Flys vor, hat
+ // dann aber offensichtlich nichts zu bedeuten.
+ // Einen impliziten Fly-Anfang bedeutet es
+ // definitiv nicht
+ short nFromText = SVBT16ToShort(pSprm);
+
+ SvxLRSpaceItem aLR;
+ aLR.SetTxtLeft( nFromText );
+ aLR.SetRight( nFromText );
+ rOut.SetFlyFrmAttr( aLR );
+
+ rOut.SetFlyFrmAttr( SvxULSpaceItem( nFromText, nFromText ) );
+ }
+}
+
+#undef STOP1
+#undef STOP2
+
+/**********************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww1/w1sprm.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.19 2000/09/18 16:04:57 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.18 2000/05/11 16:06:59 jp
+ Changes for Unicode
+
+ Revision 1.17 2000/03/03 15:22:12 os
+ StarView remainders removed
+
+ Revision 1.16 1998/06/29 11:01:32 JP
+ SvxFmtBreakItem ohne Flag!
+
+
+ Rev 1.15 29 Jun 1998 13:01:32 JP
+ SvxFmtBreakItem ohne Flag!
+
+ Rev 1.14 19 Feb 1998 17:01:14 HJS
+ fuer sh eingechecked
+
+ Rev 1.12 29 Nov 1997 17:37:08 MA
+ includes
+
+ Rev 1.11 09 Oct 1997 14:13:48 JP
+ Aenderungen von SH
+
+ Rev 1.6 11 Aug 1997 12:52:20 SH
+ Flys und einfache Tabellen und Tabulatoren
+
+ Rev 1.5 18 Jul 1997 09:31:38 MA
+ Stand von SH, #41738# GPF und Tabellen etwas besser
+
+ Rev 1.4 16 Jun 1997 13:08:56 MA
+ Stand Micheal Dietrich
+
+ Rev 1.3 12 Mar 1997 19:12:54 SH
+ MDT: Progressbar, Pagedesc-Bug, Spalten, Anfang Tabellen u.a.
+
+ Rev 1.2 13 Jan 1997 16:42:02 NF
+ __READONLY_DATA fr Win16 korrigiert: Typ __READONLY_DATA identifier ...
+
+ Rev 1.1 10 Jan 1997 18:47:34 SH
+ Stabiler und mehr von MDT
+
+ Rev 1.0 28 Nov 1996 18:09:30 SH
+ Schneller Schoener Weiter von MDT
+
+ Rev 1.0 14 Aug 1996 19:32:28 SH
+ Initial revision.
+
+
+**********************************************************************/
+//]})
diff --git a/sw/source/filter/ww1/w1struct.hxx b/sw/source/filter/ww1/w1struct.hxx
new file mode 100644
index 000000000000..92ebbf4a8609
--- /dev/null
+++ b/sw/source/filter/ww1/w1struct.hxx
@@ -0,0 +1,965 @@
+/*************************************************************************
+ *
+ * $RCSfile: w1struct.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 W1STRUCT_HXX
+#define W1STRUCT_HXX
+
+// star view
+#include <string.h>
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class Ww1Shell;
+class Ww1Manager;
+
+struct W1_FIB /////////////////////////////////////////////////////////
+{
+ SVBT16 wIdent;// 0x0 int magic number
+ USHORT wIdentGet() {
+ return SVBT16ToShort(wIdent); }
+ SVBT16 nFib;// 0x2 FIB version written
+ USHORT nFibGet() {
+ return SVBT16ToShort(nFib); }
+ SVBT16 nProduct;// 0x4 product version written by
+ USHORT nProductGet() {
+ return SVBT16ToShort(nProduct); }
+ SVBT16 nlocale;// 0x6 language stamp---localized version;
+ USHORT nlocaleGet() {
+ return SVBT16ToShort(nlocale); }
+ SVBT16 pnNext;// 0x8
+ USHORT pnNextGet() {
+ return SVBT16ToShort(pnNext); }
+ SVBT16 fFlags;
+ USHORT fFlagsGet() {
+ return SVBT16ToShort(fFlags); }
+ // SVBT16 fDot :1;// 0xa 0001
+ BOOL fDotGet() {
+ return ((fFlagsGet() >> 0) & 1); }
+ // SVBT16 fGlsy :1;// 0002
+ BOOL fGlsyGet() {
+ return ((fFlagsGet() >> 1) & 1); }
+ // SVBT16 fComplex :1;// 0004 when 1, file is in complex, fast-saved format.
+ BOOL fComplexGet() {
+ return ((fFlagsGet() >> 2) & 1); }
+ // SVBT16 fHasPic :1;// 0008 file contains 1 or more pictures
+ BOOL fHasPicGet() {
+ return ((fFlagsGet() >> 3) & 1); }
+ // SVBT16 cQuickSaves :4;// 00F0 count of times file was quicksaved
+ USHORT cQuickSavesGet() {
+ return (USHORT)((fFlagsGet() >> 4) & 0xf); }
+ // SVBT16 u1 :8;// FF00 unused
+ USHORT u1Get() {
+ return (USHORT)((fFlagsGet() >> 8) & 0xff); }
+ SVBT16 nFibBack;// 0xc
+ USHORT nFibBackGet() {
+ return SVBT16ToShort(nFibBack); }
+ SVBT16 u2[5];// 0xe reserved
+ SVBT32 fcMin;// 0x18 file offset of first character of text
+ ULONG fcMinGet() {
+ return SVBT32ToLong(fcMin); }
+ SVBT32 fcMac;// 0x1c file offset of last character of text + 1
+ ULONG fcMacGet() {
+ return SVBT32ToLong(fcMac); }
+ SVBT32 cbMac;// 0x20 file offset of last byte written to file + 1.
+ ULONG cbMacGet() {
+ return SVBT32ToLong(cbMac); }
+ SVBT32 u4[4];// 0x24 reserved
+ SVBT32 ccpText;// 0x34 length of main document text stream
+ ULONG ccpTextGet() {
+ return SVBT32ToLong(ccpText); }
+ SVBT32 ccpFtn;// 0x38 length of footnote subdocument text stream
+ ULONG ccpFtnGet() {
+ return SVBT32ToLong(ccpFtn); }
+ SVBT32 ccpHdd;// 0x3c length of header subdocument text stream
+ ULONG ccpHddGet() {
+ return SVBT32ToLong(ccpHdd); }
+ SVBT32 ccpMcr;// 0x40 length of macro subdocument text stream
+ ULONG ccpMcrGet() {
+ return SVBT32ToLong(ccpMcr); }
+ SVBT32 ccpAtn;// 0x44 length of annotation subdocument text stream
+ ULONG ccpAtnGet() {
+ return SVBT32ToLong(ccpAtn); }
+ SVBT32 cp5[4];// 0x48
+ SVBT32 fcStshfOrig;// 0x58 file offset of original allocation for STSH in file
+ ULONG fcStshfOrigGet() {
+ return SVBT32ToLong(fcStshfOrig); }
+ SVBT16 cbStshfOrig;// 0x5c count of bytes of original STSH allocation
+ USHORT cbStshfOrigGet() {
+ return SVBT16ToShort(cbStshfOrig); }
+ SVBT32 fcStshf;// 0x5e file offset of STSH in file.
+ ULONG fcStshfGet() {
+ return SVBT32ToLong(fcStshf); }
+ SVBT16 cbStshf;// 0x62 count of bytes of current STSH allocation
+ USHORT cbStshfGet() {
+ return SVBT16ToShort(cbStshf); }
+ SVBT32 fcPlcffndRef;// 0x64 file offset of footnote reference PLC.
+ ULONG fcPlcffndRefGet() {
+ return SVBT32ToLong(fcPlcffndRef); }
+ SVBT16 cbPlcffndRef;// 0x68 count of bytes of footnote reference PLC
+ USHORT cbPlcffndRefGet() {
+ return SVBT16ToShort(cbPlcffndRef); }
+ // == 0 if no footnotes defined in document.
+
+ SVBT32 fcPlcffndTxt;// 0x6a file offset of footnote text PLC.
+ ULONG fcPlcffndTxtGet() {
+ return SVBT32ToLong(fcPlcffndTxt); }
+ SVBT16 cbPlcffndTxt;// 0x6e count of bytes of footnote text PLC.
+ USHORT cbPlcffndTxtGet() {
+ return SVBT16ToShort(cbPlcffndTxt); }
+ // == 0 if no footnotes defined in document
+
+ SVBT32 fcPlcfandRef;// 0x70 file offset of annotation reference PLC.
+ ULONG fcPlcfandRefGet() {
+ return SVBT32ToLong(fcPlcfandRef); }
+ SVBT16 cbPlcfandRef;// 0x74 count of bytes of annotation reference PLC.
+ USHORT cbPlcfandRefGet() {
+ return SVBT16ToShort(cbPlcfandRef); }
+
+ SVBT32 fcPlcfandTxt;// 0x76 file offset of annotation text PLC.
+ ULONG fcPlcfandTxtGet() {
+ return SVBT32ToLong(fcPlcfandTxt); }
+ SVBT16 cbPlcfandTxt;// 0x7a count of bytes of the annotation text PLC
+ USHORT cbPlcfandTxtGet() {
+ return SVBT16ToShort(cbPlcfandTxt); }
+
+ SVBT32 fcPlcfsed;// 8x7c file offset of section descriptor PLC.
+ ULONG fcPlcfsedGet() {
+ return SVBT32ToLong(fcPlcfsed); }
+ SVBT16 cbPlcfsed;// 0x80 count of bytes of section descriptor PLC.
+ USHORT cbPlcfsedGet() {
+ return SVBT16ToShort(cbPlcfsed); }
+
+ SVBT32 fcPlcfpgd;// 0x82 file offset of paragraph descriptor PLC
+ ULONG fcPlcfpgdGet() {
+ return SVBT32ToLong(fcPlcfpgd); }
+ SVBT16 cbPlcfpgd;// 0x86 count of bytes of paragraph descriptor PLC.
+ USHORT cbPlcfpgdGet() {
+ return SVBT16ToShort(cbPlcfpgd); }
+ // ==0 if file was never repaginated
+ // Should not be written by third party creators
+
+ SVBT32 fcPlcfphe;// 0x88 file offset of PLC of paragraph heights.
+ ULONG fcPlcfpheGet() {
+ return SVBT32ToLong(fcPlcfphe); }
+ SVBT16 cbPlcfphe;// 0x8c count of bytes of paragraph height PLC.
+ USHORT cbPlcfpheGet() {
+ return SVBT16ToShort(cbPlcfphe); }
+ // ==0 when file is non-complex.
+
+ SVBT32 fcSttbfglsy;// 0x8e file offset of glossary string table.
+ ULONG fcSttbfglsyGet() {
+ return SVBT32ToLong(fcSttbfglsy); }
+ SVBT16 cbSttbfglsy;// 0x92 count of bytes of glossary string table.
+ USHORT cbSttbfglsyGet() {
+ return SVBT16ToShort(cbSttbfglsy); }
+ // == 0 for non-glossary documents.
+ // !=0 for glossary documents.
+
+ SVBT32 fcPlcfglsy;// 0x94 file offset of glossary PLC.
+ ULONG fcPlcfglsyGet() {
+ return SVBT32ToLong(fcPlcfglsy); }
+ SVBT16 cbPlcfglsy;// 0x98 count of bytes of glossary PLC.
+ USHORT cbPlcfglsyGet() {
+ return SVBT16ToShort(cbPlcfglsy); }
+ // == 0 for non-glossary documents.
+ // !=0 for glossary documents.
+
+ SVBT32 fcPlcfhdd;// 0x9a byte offset of header PLC.
+ ULONG fcPlcfhddGet() {
+ return SVBT32ToLong(fcPlcfhdd); }
+ SVBT16 cbPlcfhdd;// 0x9e count of bytes of header PLC.
+ USHORT cbPlcfhddGet() {
+ return SVBT16ToShort(cbPlcfhdd); }
+ // == 0 if document contains no headers
+
+ SVBT32 fcPlcfbteChpx;// 0xa0 file offset of character property bin table.PLC.
+ ULONG fcPlcfbteChpxGet() {
+ return SVBT32ToLong(fcPlcfbteChpx); }
+ SVBT16 cbPlcfbteChpx;// 0xa4 count of bytes of character property bin table PLC.
+ USHORT cbPlcfbteChpxGet() {
+ return SVBT16ToShort(cbPlcfbteChpx); }
+
+ SVBT32 fcPlcfbtePapx;// 0xa6 file offset of paragraph property bin table.PLC.
+ ULONG fcPlcfbtePapxGet() {
+ return SVBT32ToLong(fcPlcfbtePapx); }
+ SVBT16 cbPlcfbtePapx;// 0xaa count of bytes of paragraph property bin table PLC.
+ USHORT cbPlcfbtePapxGet() {
+ return SVBT16ToShort(cbPlcfbtePapx); }
+
+ SVBT32 fcPlcfsea;// 0xac file offset of PLC reserved for private use. The SEA is 6 bytes long.
+ ULONG fcPlcfseaGet() {
+ return SVBT32ToLong(fcPlcfsea); }
+ SVBT16 cbPlcfsea;// 0xb0 count of bytes of private use PLC.
+ USHORT cbPlcfseaGet() {
+ return SVBT16ToShort(cbPlcfsea); }
+
+ SVBT32 fcSttbfffn;// 0xb2 file offset of font information STTBF. See the FFN file structure definition.
+ ULONG fcSttbfffnGet() {
+ return SVBT32ToLong(fcSttbfffn); }
+ SVBT16 cbSttbfffn;// 0xb6 count of bytes in sttbfffn.
+ USHORT cbSttbfffnGet() {
+ return SVBT16ToShort(cbSttbfffn); }
+
+ SVBT32 fcPlcffldMom;// 0xb8 offset in doc stream to the PLC of field positions in the main document.
+ ULONG fcPlcffldMomGet() {
+ return SVBT32ToLong(fcPlcffldMom); }
+ SVBT16 cbPlcffldMom;// 0xbc
+ USHORT cbPlcffldMomGet() {
+ return SVBT16ToShort(cbPlcffldMom); }
+
+ SVBT32 fcPlcffldHdr;// 0xbe offset in doc stream to the PLC of field positions in the header subdocument.
+ ULONG fcPlcffldHdrGet() {
+ return SVBT32ToLong(fcPlcffldHdr); }
+ SVBT16 cbPlcffldHdr;// 0xc2
+ USHORT cbPlcffldHdrGet() {
+ return SVBT16ToShort(cbPlcffldHdr); }
+
+ SVBT32 fcPlcffldFtn;// 0xc4 offset in doc stream to the PLC of field positions in the footnote subdocument.
+ ULONG fcPlcffldFtnGet() {
+ return SVBT32ToLong(fcPlcffldFtn); }
+ SVBT16 cbPlcffldFtn;// 0xc8
+ USHORT cbPlcffldFtnGet() {
+ return SVBT16ToShort(cbPlcffldFtn); }
+
+ SVBT32 fcPlcffldAtn;// 0xca offset in doc stream to the PLC of field positions in the annotation subdocument.
+ ULONG fcPlcffldAtnGet() {
+ return SVBT32ToLong(fcPlcffldAtn); }
+ SVBT16 cbPlcffldAtn;// 0xce
+ USHORT cbPlcffldAtnGet() {
+ return SVBT16ToShort(cbPlcffldAtn); }
+
+ SVBT32 fcPlcffldMcr;// 0xd0 offset in doc stream to the PLC of field positions in the macro subdocument.
+ ULONG fcPlcffldMcrGet() {
+ return SVBT32ToLong(fcPlcffldMcr); }
+ SVBT16 cbPlcffldMcr;// 0xd4
+ USHORT cbPlcffldMcrGet() {
+ return SVBT16ToShort(cbPlcffldMcr); }
+
+ SVBT32 fcSttbfbkmk;// 0xd6 offset in document stream of the STTBF that records bookmark names in the main document
+ ULONG fcSttbfbkmkGet() {
+ return SVBT32ToLong(fcSttbfbkmk); }
+ SVBT16 cbSttbfbkmk;// 0xda
+ USHORT cbSttbfbkmkGet() {
+ return SVBT16ToShort(cbSttbfbkmk); }
+
+ SVBT32 fcPlcfbkf;// 0xdc offset in document stream of the PLCF that records the beginning CP offsets of bookmarks in the main document. See BKF
+ ULONG fcPlcfbkfGet() {
+ return SVBT32ToLong(fcPlcfbkf); }
+ SVBT16 cbPlcfbkf;// 0xe0
+ USHORT cbPlcfbkfGet() {
+ return SVBT16ToShort(cbPlcfbkf); }
+
+ SVBT32 fcPlcfbkl;// 0xe2 offset in document stream of the PLCF that records the ending CP offsets of bookmarks recorded in the main document. See the BKL structure definition.
+ ULONG fcPlcfbklGet() {
+ return SVBT32ToLong(fcPlcfbkl); }
+ SVBT16 cbPlcfbkl;// 0xe6 SVBT16
+ USHORT cbPlcfbklGet() {
+ return SVBT16ToShort(cbPlcfbkl); }
+
+ SVBT32 fcCmds;// 0xe8 FC
+ ULONG fcCmdsGet() {
+ return SVBT32ToLong(fcCmds); }
+ SVBT16 cbCmds;// 0xec
+ USHORT cbCmdsGet() {
+ return SVBT16ToShort(cbCmds); }
+
+ SVBT32 fcPlcmcr;// 0xee FC
+ ULONG fcPlcmcrGet() {
+ return SVBT32ToLong(fcPlcmcr); }
+ SVBT16 cbPlcmcr;// 0xf2
+ USHORT cbPlcmcrGet() {
+ return SVBT16ToShort(cbPlcmcr); }
+
+ SVBT32 fcSttbfmcr;// 0xf4 FC
+ ULONG fcSttbfmcrGet() {
+ return SVBT32ToLong(fcSttbfmcr); }
+ SVBT16 cbSttbfmcr;// 0xf8
+ USHORT cbSttbfmcrGet() {
+ return SVBT16ToShort(cbSttbfmcr); }
+
+ SVBT32 fcPrEnv;// 0xfa
+ ULONG fcPrEnvGet() {
+ return SVBT32ToLong(fcPrEnv); }
+ SVBT16 cbPrEnv;// 0xfe
+ USHORT cbPrEnvGet() {
+ return SVBT16ToShort(cbPrEnv); }
+
+ SVBT32 fcWss;// 0x100 file offset of Window Save State data structure. See WSS.
+ ULONG fcWssGet() {
+ return SVBT32ToLong(fcWss); }
+ SVBT16 cbWss;// 0x100 count of bytes of WSS. ==0 if unable to store the window state.
+ USHORT cbWssGet() {
+ return SVBT16ToShort(cbWss); }
+
+ SVBT32 fcDop;// 0x106 file offset of document property data structure.
+ ULONG fcDopGet() {
+ return SVBT32ToLong(fcDop); }
+ SVBT16 cbDop;// 0x10a count of bytes of document properties.
+ USHORT cbDopGet() {
+ return SVBT16ToShort(cbDop); }
+
+
+ SVBT32 fcSttbfAssoc;// 0x10c offset to STTBF of associated strings. See STTBFASSOC.
+ ULONG fcSttbfAssocGet() {
+ return SVBT32ToLong(fcSttbfAssoc); }
+ SVBT16 cbSttbfAssoc;// 0x110
+ USHORT cbSttbfAssocGet() {
+ return SVBT16ToShort(cbSttbfAssoc); }
+
+ SVBT32 fcClx;// 0x112 file offset of beginning of information for complex files.
+ ULONG fcClxGet() {
+ return SVBT32ToLong(fcClx); }
+ SVBT16 cbClx;// 0x116 count of bytes of complex file information. 0 if file is non-complex.
+ USHORT cbClxGet() {
+ return SVBT16ToShort(cbClx); }
+
+ SVBT32 fcPlcfpgdFtn;// 0x118 file offset of page descriptor PLC for footnote subdocument.
+ ULONG fcPlcfpgdFtnGet() {
+ return SVBT32ToLong(fcPlcfpgdFtn); }
+ SVBT16 cbPlcfpgdFtn;// 0x11C count of bytes of page descriptor PLC for footnote subdocument.
+ USHORT cbPlcfpgdFtnGet() {
+ return SVBT16ToShort(cbPlcfpgdFtn); }
+ // ==0 if document has not been paginated. The length of the PGD is 8 bytes.
+
+ SVBT32 fcSpare1;// 0x11e file offset of the name of the original file.
+ ULONG fcSpare1Get() {
+ return SVBT32ToLong(fcSpare1); }
+ SVBT16 cbSpare1;// 0x122 count of bytes of the name of the original file.
+ USHORT cbSpare1Get() {
+ return SVBT16ToShort(cbSpare1); }
+ SVBT32 fcSpare2;// 0x124 file offset of the name of the original file.
+ ULONG fcSpare2Get() {
+ return SVBT32ToLong(fcSpare2); }
+ SVBT16 cbSpare2;// 0x128 count of bytes of the name of the original file.
+ USHORT cbSpare2Get() {
+ return SVBT16ToShort(cbSpare2); }
+ SVBT32 fcSpare3;// 0x12a file offset of the name of the original file.
+ ULONG fcSpare3Get() {
+ return SVBT32ToLong(fcSpare3); }
+ SVBT16 cbSpare3;// 0x12e count of bytes of the name of the original file.
+ USHORT cbSpare3Get() {
+ return SVBT16ToShort(cbSpare3); }
+ SVBT32 fcSpare4;// 0x130 file offset of the name of the original file.
+ ULONG fcSpare4Get() {
+ return SVBT32ToLong(fcSpare4); }
+ SVBT16 cbSpare4;// 0x134 count of bytes of the name of the original file.
+ USHORT cbSpare4Get() {
+ return SVBT16ToShort(cbSpare4); }
+
+ SVBT16 cpnBteChp;// 0x18E count of CHPX FKPs recorded in file. In non-complex files if the number of
+ USHORT cpnBteChpGet() {
+ return SVBT16ToShort(cpnBteChp); }
+ // entries in the plcfbteChpx is less than this, the plcfbteChpx is incomplete.
+ SVBT16 cpnBtePap;// 0x190 count of PAPX FKPs recorded in file. In non-complex files if the number of
+ USHORT cpnBtePapGet() {
+ return SVBT16ToShort(cpnBtePap); }
+ // entries in the plcfbtePapx is less than this, the plcfbtePapx is incomplete.
+};
+
+struct W1_DOP ///////////////////////////////////// Document Properties
+{
+ SVBT16 fFlags;
+ USHORT fFlagsGet() {
+ return SVBT16ToShort(fFlags); }
+ // SVBT16 fFacingPages : 1;// 1 when facing pages should be printed
+ BOOL fFacingPagesGet() {
+ return ((fFlagsGet() >> 0) & 1); }
+ // SVBT16 fWidowControl : 1;// 1 when widow control is in effect. 0 when widow control disabled.
+ BOOL fWidowControlGet() {
+ return ((fFlagsGet() >> 1) & 1); }
+ // SVBT16 : 3;// unused
+ // SVBT16 fpc : 2;// 1 footnote position code: 0 as endnotes, 1 at bottom of page, 2 immediately beneath text
+ USHORT fpcGet() {
+ return (USHORT)((fFlagsGet() >> 5) & 3); }
+ // SVBT16 fWide : 1;// Landscape
+ BOOL fWideGet() {
+ return ((fFlagsGet() >> 7) & 1); }
+ // SVBT16 grpfIhdt : 8;// 0 specification of document headers and footers. See explanation under Headers and Footers topic.
+ USHORT grpfIhdtGet() {
+ return (USHORT)((fFlagsGet() >> 8) & 0xff); }
+ SVBT16 fFtnFlags;
+ USHORT fFtnFlagsGet() {
+ return SVBT16ToShort(fFtnFlags); }
+ // SVBT16 fFtnRestart : 1;
+ BOOL fFtnRestartGet() {
+ return ((fFtnFlagsGet() >> 0) & 1); }
+ // SVBT16 nFtn : 15;// 1 initial footnote number for document
+ USHORT nFtnGet() {
+ return (USHORT)((fFtnFlagsGet() >> 1) & 0x7fff); }
+ SVBT16 fRvsFlags;
+ USHORT fRvsFlagsGet() {
+ return SVBT16ToShort(fRvsFlags); }
+ // SVBT16 irmBar : 8;
+ USHORT irmBarGet() {
+ return (USHORT)((fRvsFlagsGet() >> 0) & 0xff); }
+ // SVBT16 irmProps : 7;
+ USHORT irmPropsGet() {
+ return (USHORT)((fRvsFlagsGet() >> 8) & 0x7f); }
+ // SVBT16 fRevMarking : 1;// when 1, Word will mark revisions as the document is edited
+ BOOL fRevMarkingGet() {
+ return ((fRvsFlagsGet() >> 15) & 1); }
+ SVBT16 fSveFlags;
+ USHORT fSveFlagsGet() {
+ return SVBT16ToShort(fSveFlags); }
+ // SVBT16 fBackup : 1;// always make backup when document saved when 1.
+ BOOL fBackupGet() {
+ return ((fSveFlagsGet() >> 0) & 1); }
+ // SVBT16 fExactCWords : 1;
+ BOOL fExactCWordsGet() {
+ return ((fSveFlagsGet() >> 1) & 1); }
+ // SVBT16 fPagHidden : 1;//
+ BOOL fPagHiddenGet() {
+ return ((fSveFlagsGet() >> 2) & 1); }
+ // SVBT16 fPagResults : 1;
+ BOOL fPagResultsGet() {
+ return ((fSveFlagsGet() >> 3) & 1); }
+ // SVBT16 fLockAtn : 1;// when 1, annotations are locked for editing
+ BOOL fLockAtnGet() {
+ return ((fSveFlagsGet() >> 4) & 1); }
+ // SVBT16 fMirrorMargins : 1;// swap margins on left/right pages when 1.
+ BOOL fMirrorMarginsGet() {
+ return ((fSveFlagsGet() >> 5) & 1); }
+ // SVBT16 : 10;// unused
+ SVBT16 fSpares;
+ USHORT fSparesGet() {
+ return SVBT16ToShort(fSpares); }
+ SVBT16 yaPage;
+ USHORT yaPageGet() {
+ return SVBT16ToShort(yaPage); }
+ SVBT16 xaPage;
+ USHORT xaPageGet() {
+ return SVBT16ToShort(xaPage); }
+ SVBT16 dyaTop;
+ USHORT dyaTopGet() {
+ return SVBT16ToShort(dyaTop); }
+ SVBT16 dxaLeft;
+ USHORT dxaLeftGet() {
+ return SVBT16ToShort(dxaLeft); }
+ SVBT16 dyaBottom;
+ USHORT dyaBottomGet() {
+ return SVBT16ToShort(dyaBottom); }
+ SVBT16 dxaRight;
+ USHORT dxaRightGet() {
+ return SVBT16ToShort(dxaRight); }
+ SVBT16 dxaGutter;
+ USHORT dxaGutterGet() {
+ return SVBT16ToShort(dxaGutter); }
+ SVBT16 dxaTab;// 720 twips default tab width
+ USHORT dxaTabGet() {
+ return SVBT16ToShort(dxaTab); }
+ SVBT16 wSpare;//
+ USHORT wSpareGet() {
+ return SVBT16ToShort(wSpare); }
+ SVBT16 dxaHotZ;// width of hyphenation hot zone measured in twips
+ USHORT dxaHotZGet() {
+ return SVBT16ToShort(dxaHotZ); }
+ SVBT16 rgwSpare[2];// reserved
+ SVBT32 dttmCreated;// DTTM date and time document was created
+ ULONG dttmCreatedGet() {
+ return SVBT32ToLong(dttmCreated); }
+ SVBT32 dttmRevised;// DTTM date and time document was last revised
+ ULONG dttmRevisedGet() {
+ return SVBT32ToLong(dttmRevised); }
+ SVBT32 dttmLastPrint;// DTTM date and time document was last printed
+ ULONG dttmLastPrintGet() {
+ return SVBT32ToLong(dttmLastPrint); }
+ SVBT16 nRevision;// number of times document has been revised since its creation
+ USHORT nRevisionGet() {
+ return SVBT16ToShort(nRevision); }
+ SVBT32 tmEdited;// time document was last edited
+ ULONG tmEditedGet() {
+ return SVBT32ToLong(tmEdited); }
+ SVBT32 cWords;// count of words tallied by last Word Count execution
+ ULONG cWordsGet() {
+ return SVBT32ToLong(cWords); }
+ SVBT32 cCh;// count of characters tallied by last Word Count execution
+ ULONG cChGet() {
+ return SVBT32ToLong(cCh); }
+ SVBT16 cPg;// count of pages tallied by last Word Count execution
+ USHORT cPgGet() {
+ return SVBT16ToShort(cPg); }
+ SVBT16 rgwSpareDocSum[2];
+};
+// cbDOP is 66.
+
+struct W1_CHP /////////////////////////////////////////////////////////
+{
+ SVBT16 fChar;
+ SVBT16 ftc;// Font Code
+ SVBT8 hps;// Font size in half points
+ SVBT8 hpsPos;// Sub/Superscript ( signed number, 0 = normal )
+ SVBT16 fText;
+ SVBT32 fcPic;// not stored in File
+ SVBT8 fnPic;// internal
+ SVBT16 hpsLargeChp;// ???
+
+ W1_CHP() { memset( this, 0, sizeof( *this)); }
+
+ USHORT fCharGet() { return SVBT16ToShort(fChar); }
+ void fCharSet(USHORT n) { ShortToSVBT16(n, fChar); }
+ BOOL fBoldGet() { return ((fCharGet() >> 0) & 1); }
+ void fBoldSet(BOOL b) { fCharSet( ( fCharGet() & 0xfffe ) | ( b << 0 ) ); }
+ BOOL fItalicGet() { return ((fCharGet() >> 1) & 1); }
+ void fItalicSet(BOOL b) { fCharSet( ( fCharGet() & 0xfffd ) | ( b << 1 ) ); }
+ BOOL fStrikeGet() { return ((fCharGet() >> 2) & 1); }
+ BOOL fOutlineGet() { return ((fCharGet() >> 3) & 1); }
+ BOOL fFldVanishGet() { return ((fCharGet() >> 4) & 1); }
+ BOOL fSmallCapsGet() { return ((fCharGet() >> 5) & 1); }
+ BOOL fCapsGet() { return ((fCharGet() >> 6) & 1); }
+ BOOL fVanishGet() { return ((fCharGet() >> 7) & 1); }
+ BOOL fRMarkGet() { return ((fCharGet() >> 8) & 1); }
+ BOOL fSpecGet() { return ((fCharGet() >> 9) & 1); }
+ BOOL fsIcoGet() { return ((fCharGet() >> 10) & 1); }
+ BOOL fsFtcGet() { return ((fCharGet() >> 11) & 1); }
+ void fsFtcSet(BOOL b) { fCharSet( ( fCharGet() & 0xf7ff ) | ( b << 11 ) ); }
+ BOOL fsHpsGet() { return ((fCharGet() >> 12) & 1); }
+ void fsHpsSet(BOOL b) { fCharSet( ( fCharGet() & 0xefff ) | ( b << 12 ) ); }
+ BOOL fsKulGet() { return ((fCharGet() >> 13) & 1); }
+ void fsKulSet(BOOL b) { fCharSet( ( fCharGet() & 0xdfff ) | ( b << 13 ) ); }
+ BOOL fsPosGet() { return ((fCharGet() >> 14) & 1); }
+ BOOL fsSpaceGet() { return ((fCharGet() >> 15) & 1); }
+ // SVBT16 fBold :1;// 1 == opposite boldness of style
+ // SVBT16 fItalic :1;// 1 == opposite of style
+ // SVBT16 fStrike :1;// 1 == opposite of style
+ // SVBT16 fOutline :1;// 1 == opposite of style
+ // SVBT16 fFldVanish :1;// 1 == opposite of style
+ // SVBT16 fSmallCaps :1;// 1 == opposite of style
+ // SVBT16 fCaps :1;// 1 == opposite of style
+ // SVBT16 fVanish :1;// 1 == opposite of style
+ // SVBT16 fRMark :1;// ???
+ // SVBT16 fSpec :1;// 1 == opposite of style
+ // SVBT16 fsIco :1;// 1 == Color (ico) different to style
+ // SVBT16 fsFtc :1;// 1 == FontCode (ftc) different to style
+ // SVBT16 fsHps :1;// 1 == FontSize (hps) different to style
+ // SVBT16 fsKul :1;// 1 == Underline Code (kul) different to style
+ // SVBT16 fsPos :1;// 1 == Char position (hpsPos) different to style
+ // SVBT16 fsSpace :1;// 1 == Char Spacing (qpsSpace) different to style
+
+ USHORT ftcGet() { return SVBT16ToShort(ftc); }
+ void ftcSet(USHORT n) { ShortToSVBT16(n, ftc); }
+ void hpsSet(BYTE n) { ByteToSVBT8(n, hps); }
+ BYTE hpsGet() { return SVBT8ToByte(hps); }
+
+ BYTE hpsPosGet() { return SVBT8ToByte(hpsPos); }
+ USHORT fTextGet() { return SVBT16ToShort(fText); }
+ void fTextSet(USHORT n) { ShortToSVBT16(n, fText); }
+ USHORT qpsSpaceGet() { return (USHORT)((fTextGet() >> 0) & 0x3f); }
+ USHORT wSpare2Get() { return (USHORT)((fTextGet() >> 6) & 3); }
+ USHORT icoGet() { return (USHORT)((fTextGet() >> 8) & 0xf); }
+ USHORT kulGet() { return (USHORT)((fTextGet() >> 12) & 7); }
+ void kulSet(USHORT n) { fTextSet( ( fTextGet() & 0x8fff ) | ( ( n & 7 ) << 12 ) ); }
+ BOOL fSysVanishGet() { return ((fTextGet() >> 15) & 1); }
+ // SVBT16 qpsSpace :6;// Char Spacing, -7 .. 56; 57 = -7, 63 = -1
+ // SVBT16 wSpare2 : 2;// reserved
+ // SVBT16 ico :4;// color of Text: 0=black, 1=blue, 2=cyan, 3=green, 4=magenta, 5=red, 6=yellow, 7=white
+ // SVBT16 kul: 3;// Underline code: 0=none, 1=single, 2=by word, 3=double, 4=dotted
+ // SVBT16 fSysVanish: 1;// used internally
+
+ ULONG fcPicGet() { return SVBT32ToLong(fcPic); }
+ USHORT fnPicGet() { return SVBT8ToByte(fnPic); }
+ USHORT hpsLargeChpGet() { return SVBT16ToShort(hpsLargeChp); }
+
+ void Out(Ww1Shell&, Ww1Manager&);
+};
+
+struct W1_FFN ///////////////////////////////////////// Font Descriptor
+{
+ SVBT8 cbFfnM1;// 0x0 total length of FFN - 1.
+ USHORT cbFfnM1Get() {
+ return SVBT8ToByte(cbFfnM1); }
+ SVBT8 fFlags;
+ USHORT fFlagsGet() {
+ return SVBT8ToByte(fFlags); }
+ // SVBT8 prg : 2;// 0x1:03 pitch request
+ USHORT prgGet() {
+ return (USHORT)((fFlagsGet() >> 0) & 3); }
+ // SVBT8 fTrueType : 1;// 0x1:04 when 1, font is a TrueType font
+ BOOL fTrueTypeGet() {
+ return ((fFlagsGet() >> 2) & 1); }
+ // SVBT8 : 1;// 0x1:08 reserved
+ // SVBT8 ff : 3;// 0x1:70 font family id
+ USHORT ffGet() {
+ return (USHORT)((fFlagsGet() >> 4) & 7); }
+ // SVBT8 : 1;// 0x1:80 reserved
+ BYTE szFfn[65];// 0x6 zero terminated string that records name of font.
+ // Vorsicht: Dieses Array kann auch kleiner sein!!!
+ // Possibly followed by a second sz which records the name of an
+ // alternate font to use if the first named font does not exist
+ // on this system. Maximal size of szFfn is 65 characters.
+ BYTE* szFfnGet() { return szFfn; }
+};
+
+struct W1_PHE /////////////////////////////////////// Paragraph Height
+{
+ SVBT16 fFlags;
+ USHORT fFlagsGet() {
+ return SVBT16ToShort(fFlags); }
+ BOOL fSpareGet() {
+ return fFlagsGet() & 1; }
+ BOOL fUnkGet() {
+ return (fFlagsGet() >> 1) & 1; }
+ BOOL fDiffLinesGet() {
+ return (fFlagsGet() >> 2) & 1; }
+ BYTE clMacGet() {
+ return (fFlagsGet() >> 8) & 0xff; }
+ SVBT16 dxaCol;
+ USHORT dxaColGet() {
+ return SVBT16ToShort(dxaCol); }
+ SVBT16 xxx; // beachte die dreifachnutzung.... siehe doc.
+ USHORT dylHeightGet() {
+ return SVBT16ToShort(xxx); }
+ USHORT dylLineGet() {
+ return SVBT16ToShort(xxx); }
+ USHORT fStyleDirtyGet() {
+ return SVBT16ToShort(xxx); }
+};
+
+struct W1_PAPX ///////////////////////// Paragraph Property Difference
+{
+ SVBT8 stc;
+ BYTE stcGet() {
+ return SVBT8ToByte(stc); }
+ W1_PHE phe;
+ BYTE grpprl[1];
+ BYTE* grpprlGet() {
+ return grpprl; }
+};
+
+struct W1_BRC //////////////////////////////////////////// Border Code
+{
+ SVBT16 aBits;
+ USHORT aBitsGet() {
+ return SVBT16ToShort(aBits); }
+ // SVBT16 dxpLineWidth : 3;// 0007 When dxpLineWidth is 0, 1, 2, 3, 4, or 5,
+ // this field is the width of a single line of border
+ // in units of 0.75 points Must be nonzero when brcType
+ // is nonzero. 6 == dotted, 7 == dashed.
+ BYTE dxpLineWidthGet() {
+ return (aBitsGet() >> 0) & 0x0007; }
+ // SVBT16 brcType : 2;// 0018 border type code: 0 == none, 1 == single, 2 == thick,
+ // 3 == double
+ BYTE brcTypeGet() {
+ return (aBitsGet() >> 3) & 0x0003; }
+ // SVBT16 fShadow : 1;// 0020 when 1, border is drawn with shadow. Must be 0
+ // when BRC is a substructure of the TC
+ BYTE fShadowGet() {
+ return (aBitsGet() >> 5) & 0x0001; }
+ // SVBT16 ico : 5;// 07C0 color code (see chp.ico)
+ BYTE icoGet() {
+ return (aBitsGet() >> 6) & 0x001f; }
+ // SVBT16 dxpSpace : 5;// F800 width of space to maintain between border and
+ // text within border. Must be 0 when BRC is a
+ // substructure of the TC. Stored in points for Windows.
+ BYTE dxpSpaceGet() {
+ return (aBitsGet() >> 11) & 0x001f; }
+};
+
+struct W1_BRC10 ///////////////////////////////// Border Code Word 1.0
+{
+ SVBT16 aBits;
+ USHORT aBitsGet() {
+ return SVBT16ToShort(aBits); }
+ BYTE dxpLine2WidthGet() {
+ return (aBitsGet() >> 0) & 0x0007; }
+ BYTE dxpSpaceBetweenGet() {
+ return (aBitsGet() >> 3) & 0x0007; }
+ BYTE dxpLine1WidthGet() {
+ return (aBitsGet() >> 6) & 0x0007; }
+ BYTE dxpSpaceGet() {
+ return (aBitsGet() >> 9) & 0x001f; }
+ BYTE fShadowGet() {
+ return (aBitsGet() >> 14) & 0x0001; }
+ BYTE fSpareGet() {
+ return (aBitsGet() >> 15) & 0x0001; }
+};
+
+struct W1_FLD //////////////////////////////////////// FieldDescriptor
+{
+ SVBT8 ch; // boundary-type (begin(19), separator (20), end (21))
+ BYTE chGet() {
+ return SVBT8ToByte(ch); }
+ SVBT8 flt; // field type / flags
+ BYTE fltGet() {
+ return SVBT8ToByte(flt); }
+ // variant, when ch==21:
+ BOOL fDifferGet() {
+ return (fltGet() >> 0) & 1; }
+ BOOL fResultDirtyGet() {
+ return (fltGet() >> 2) & 1; }
+ BOOL ResultEditedGet() {
+ return (fltGet() >> 3) & 1; }
+ BOOL fLockedGet() {
+ return (fltGet() >> 4) & 1; }
+ BOOL fPrivateResultGet() {
+ return (fltGet() >> 5) & 1; }
+ BOOL fNestedGet() {
+ return (fltGet() >> 6) & 1; }
+};
+
+struct W1_PIC /////////////////////////////////////// PictureStructure
+{
+ SVBT32 lcb;// 0x0 number of bytes in the PIC structure plus size of following picture data which may be a Window's metafile, a bitmap, or the filename of a TIFF file.
+ ULONG lcbGet() {
+ return SVBT32ToLong(lcb); }
+ SVBT16 cbHeader;// 0x4 number of bytes in the PIC (to allow for future expansion).
+ USHORT cbHeaderGet() {
+ return SVBT16ToShort(cbHeader); }
+ struct MFP {
+ SVBT16 mm;// 0x6 int
+ USHORT mmGet() {
+ return SVBT16ToShort(mm); }
+ SVBT16 xExt;// 0x8 int
+ USHORT xExtGet() {
+ return SVBT16ToShort(xExt); }
+ SVBT16 yExt;// 0xa int
+ USHORT yExtGet() {
+ return SVBT16ToShort(yExt); }
+ SVBT16 hMF;// 0xc int
+ USHORT hMFGet() {
+ return SVBT16ToShort(hMF); }
+ } mfp;
+ union W1_MFP_BMP {
+ SVBT8 bm[14];// 0xe BITMAP(14 bytes) Window's bitmap structure when PIC describes a BITMAP.
+ SVBT8 rcWinMF[14];// 0xe rc (rectangle - 8 bytes) rect for window origin and extents when metafile is stored -- ignored if 0
+ } MFP_BMP;
+ SVBT16 dxaGoal;// 0x1c horizontal measurement in twips of the rectangle the picture should be imaged within.
+ USHORT dxaGoalGet() {
+ return SVBT16ToShort(dxaGoal); }
+ SVBT16 dyaGoal;// 0x1e vertical measurement in twips of the rectangle the picture should be imaged within.
+ USHORT dyaGoalGet() {
+ return SVBT16ToShort(dyaGoal); }
+ SVBT16 mx;// 0x20 horizontal scaling factor supplied by user in .1% units.
+ USHORT mxGet() {
+ return SVBT16ToShort(mx); }
+ SVBT16 my;// 0x22 vertical scaling factor supplied by user in .1% units.
+ USHORT myGet() {
+ return SVBT16ToShort(my); }
+ SVBT16 dxaCropLeft;// 0x24 the amount the picture has been cropped on the left in twips.
+ USHORT dxaCropLeftGet() {
+ return SVBT16ToShort(dxaCropLeft); }
+ SVBT16 dyaCropTop;// 0x26 the amount the picture has been cropped on the top in twips.
+ USHORT dyaCropTopGet() {
+ return SVBT16ToShort(dyaCropTop); }
+ SVBT16 dxaCropRight;// 0x28 the amount the picture has been cropped on the right in twips.
+ USHORT dxaCropRightGet() {
+ return SVBT16ToShort(dxaCropRight); }
+ SVBT16 dyaCropBottom;// 0x2a the amount the picture has been cropped on the bottom in twips.
+ USHORT dyaCropBottomGet() {
+ return SVBT16ToShort(dyaCropBottom); }
+ SVBT16 flags;
+ USHORT flagsGet() {
+ return SVBT16ToShort(flags); }
+// brcl : 4;// 000F Obsolete, superseded by brcTop, etc. In
+ BYTE brclGet() {
+ return flagsGet() & 0xf; }
+// fFrameEmpty : 1;// 0010 picture consists of a single frame
+ BOOL fFrameEmptyGet() {
+ return (flagsGet() >> 4) & 1; }
+// win6 stuff:
+// fBitmap : 1;// 0020 ==1, when picture is just a bitmap
+// BOOL fBitmapGet() {
+// return (flagsGet() >> 5) & 1; }
+// fDrawHatch : 1;// 0040 ==1, when picture is an active OLE object
+// BOOL fDrawHatchGet() {
+// return (flagsGet() >> 6) & 1; }
+// fError : 1;// 0080 ==1, when picture is just an error message
+// BOOL fErrorGet() {
+// return (flagsGet() >> 7) & 1; }
+// bpp : 8;// FF00 bits per pixel, 0 = unknown
+// BYTE bppGet() {
+// return (flagsGet() >> 8) & 0xff; }
+// SVBT16 rgbrc[4];
+// USHORT rgbrcGet(USHORT nIndex) {
+// return SVBT16ToShort(rgbrc[nIndex]); }
+// W1_BRC brcTop;// 0x2e specification for border above picture
+// W1_BRC brcLeft;// 0x30 specification for border to the left
+// W1_BRC brcBottom;// 0x32 specification for border below picture
+// W1_BRC brcRight;// 0x34 specification for border to the right
+// SVBT16 dxaOrigin;// 0x36 horizontal offset of hand annotation origin
+// USHORT dxaOriginGet() {
+// return SVBT16ToShort(dxaOrigin); }
+// SVBT16 dyaOrigin;// 0x38 vertical offset of hand annotation origin
+// USHORT dyaOriginGet() {
+// return SVBT16ToShort(dyaOrigin); }
+ SVBT8 rgb;// 0x3a variable array of bytes containing Window's metafile, bitmap or TIFF file filename.
+ BYTE* rgbGet() {
+ return rgb; }
+};
+
+struct W1_TBD /////////////////////////////////////////////////////////
+{
+ SVBT8 aBits1;
+ BYTE aBits1Get() {
+ return SVBT8ToByte(aBits1); }
+// SVBT8 jc : 3;// 0x07 justification code: 0=left tab, 1=centered tab, 2=right tab, 3=decimal tab, 4=bar
+ BYTE jcGet() {
+ return aBits1Get() & 0x07; }
+// SVBT8 tlc : 3;// 0x38 tab leader code: 0=no leader, 1=dotted leader,
+ // 2=hyphenated leader, 3=single line leader, 4=heavy line leader
+ BYTE tlcGet() {
+ return (aBits1Get() >> 3 ) & 0x07; }
+// * int :2 C0 reserved
+};
+
+struct W1_TC //////////////////////////////////////////////////////////
+{
+ SVBT8 aBits1;
+ BYTE aBits1Get() {
+ return SVBT8ToByte(aBits1); }
+ BYTE fFirstMergedGet() {
+ return aBits1Get() & 0x01; }
+ BYTE fMergedGet() {
+ return (aBits1Get() >> 1 ) & 0x01; }
+ SVBT8 aBits2;
+// SVBT16 fFirstMerged : 1;// 0001 set to 1 when cell is first cell of a range of cells that have been merged.
+// SVBT16 fMerged : 1;// 0002 set to 1 when cell has been merged with preceding cell.
+// SVBT16 fUnused : 14;// FFFC reserved
+ W1_BRC10 rgbrc[4];// notational convenience for referring to brcTop, brcLeft, etc fields.
+ W1_BRC10* rgbrcGet() {
+ return rgbrc; }
+// BRC brcTop;// specification of the top border of a table cell
+// BRC brcLeft;// specification of left border of table row
+// BRC brcBottom;// specification of bottom border of table row
+// BRC brcRight;// specification of right border of table row.
+};
+// cbTC (count of bytes of a TC) is 10(decimal), A(hex).
+
+#if 0
+struct W1_SHD ////////////////////////////////////////////// struct SHD
+{
+ SVBT16 aBits1;
+ // SVBT16 nFore : 5;// 0x001f ForegroundColor
+ USHORT GetFore() { return SVBT16ToShort(aBits1) & 0x01; };
+ void SetFore( short nVal ){
+ ShortToSVBT16((SVBT16ToShort(aBits1)&0xffe0)|(nVal&0x1f), aBits1); };
+ // SVBT16 nBack : 5;// 0x03e0 BackgroundColor
+ W1_SHD() { ShortToSVBT16( 0, aBits1 ); };
+ USHORT GetBack() { return (SVBT16ToShort(aBits1) >> 5 & 0x1f ); };
+ void SetBack( short nVal ){
+ ShortToSVBT16((SVBT16ToShort(aBits1)&0xfc1f)|(nVal&0x1f)<<5, aBits1); };
+ // SVBT16 nStyle : 5;// 0x7c00 Percentage and Style
+ USHORT GetStyle() { return (SVBT16ToShort(aBits1) >> 10 & 0x1f ); };
+ void SetStyle( short nVal ){
+ ShortToSVBT16((SVBT16ToShort(aBits1)&0x83ff)|(nVal&0x1f)<<10, aBits1); };
+ // SVBT16 nDontKnow : 1;// 0x8000 ???
+};
+
+struct W1_ANLV ////////////////////////////////////////////////////////
+{
+ SVBT8 nfc;// 0 number format code, 0=Arabic, 1=Upper case Roman, 2=Lower case Roman
+ // 3=Upper case Letter, 4=Lower case letter, 5=Ordinal
+ SVBT8 cbTextBefore;// 1 offset into anld.rgch limit of prefix text
+ SVBT8 cbTextAfter;// 2
+ SVBT8 aBits1;
+// SVBT8 jc : 2;// 3 : 0x03 justification code, 0=left, 1=center, 2=right, 3=left and right justify
+// SVBT8 fPrev : 1;// 0x04 when ==1, include previous levels
+// SVBT8 fHang : 1;// 0x08 when ==1, number will be displayed using a hanging indent
+// SVBT8 fSetBold : 1;// 0x10 when ==1, boldness of number will be determined by anld.fBold.
+// SVBT8 fSetItalic : 1;// 0x20 when ==1, italicness of number will be determined by anld.fItalic
+// SVBT8 fSetSmallCaps : 1;// 0x40 when ==1, anld.fSmallCaps will determine whether number will be displayed in small caps or not.
+// SVBT8 fSetCaps : 1;// 0x80 when ==1, anld.fCaps will determine whether number will be displayed capitalized or not
+ SVBT8 aBits2;
+// SVBT8 fSetStrike : 1;// 4 : 0x01 when ==1, anld.fStrike will determine whether the number will be displayed using strikethrough or not.
+// SVBT8 fSetKul : 1;// 0x02 when ==1, anld.kul will determine the underlining state of the autonumber.
+// SVBT8 fPrevSpace : 1;// 0x04 when ==1, autonumber will be displayed with a single prefixing space character
+// SVBT8 fBold : 1;// 0x08 determines boldness of autonumber when anld.fSetBold == 1.
+// SVBT8 fItalic : 1;// 0x10 determines italicness of autonumber when anld.fSetItalic == 1.
+// SVBT8 fSmallCaps : 1;// 0x20 determines whether autonumber will be displayed using small caps when anld.fSetSmallCaps == 1.
+// SVBT8 fCaps : 1;// 0x40 determines whether autonumber will be displayed using caps when anld.fSetCaps == 1.
+// SVBT8 fStrike : 1;// 0x80 determines whether autonumber will be displayed using caps when anld.fSetStrike == 1.
+ SVBT8 aBits3;
+// SVBT8 kul : 3;// 5 : 0x07 determines whether autonumber will be displayed with underlining when anld.fSetKul == 1.
+// SVBT8 ico : 5;// 0xF1 color of autonumber
+ SVBT16 ftc;// 6 font code of autonumber
+ SVBT16 hps;// 8 font half point size (or 0=auto)
+ SVBT16 iStartAt;// 0x0a starting value (0 to 65535)
+ SVBT16 dxaIndent;// 0x0c *short?* *USHORT?* width of prefix text (same as indent)
+ SVBT16 dxaSpace;// 0x0e minimum space between number and paragraph
+};
+// *cbANLV (count of bytes of ANLV) is 16 (decimal), 10(hex).
+
+struct W1_ANLD ////////////////////////////////////////////////////////
+{
+ W1_ANLV eAnlv;// 0
+ SVBT8 fNumber1;// 0x10 number only 1 item per table cell
+ SVBT8 fNumberAcross;// 0x11 number across cells in table rows(instead of down)
+ SVBT8 fRestartHdn;// 0x12 restart heading number on section boundary
+ SVBT8 fSpareX;// 0x13 unused( should be 0)
+ sal_Char rgchAnld[32];// 0x14 characters displayed before/after autonumber
+};
+
+
+struct W1_OLST ////////////////////////////////////////////////////////
+{
+ W1_ANLV rganlv[9];// 0 an array of 9 ANLV structures (heading levels)
+ SVBT8 fRestartHdr;// 0x90 when ==1, restart heading on section break
+ SVBT8 fSpareOlst2;// 0x91 reserved
+ SVBT8 fSpareOlst3;// 0x92 reserved
+ SVBT8 fSpareOlst4;// 0x93 reserved
+ sal_Char rgch[64];// 0x94 array of 64 chars text before/after number
+};
+// cbOLST is 212(decimal), D4(hex).
+
+#endif
+#endif
+
diff --git a/sw/source/filter/ww8/dump/dump8.cxx b/sw/source/filter/ww8/dump/dump8.cxx
new file mode 100644
index 000000000000..e0e5970d0ede
--- /dev/null
+++ b/sw/source/filter/ww8/dump/dump8.cxx
@@ -0,0 +1,259 @@
+/*************************************************************************
+ *
+ * $RCSfile: dump8.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SV_WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+#ifndef _FACTORY_HXX //autogen
+#include <so3/factory.hxx>
+#endif
+
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+
+// globale Vars
+
+char** pPara;
+
+// Deklarationen
+
+int PrepareConvert( String& rName, String& rOutName, String& rMess );
+int DoConvert( const String& rName, BYTE nVersion );
+void DeInit();
+
+
+
+// -----------------------------------------------------------------------
+
+class MyApp : public Application
+{
+public:
+ void Main();
+};
+
+// -----------------------------------------------------------------------
+
+MyApp aMyApp;
+
+// -----------------------------------------------------------------------
+
+class MyWin : public WorkWindow
+{
+ String& rMessg;
+public:
+ MyWin( Window* pParent, WinBits aWinStyle, String& rMess ) :
+ WorkWindow(pParent, aWinStyle), rMessg( rMess ) {}
+
+ void Paint( const Rectangle& );
+ void Resize();
+
+ void MouseButtonDown( const MouseEvent& rMEvt );
+ void KeyInput( const KeyEvent& rKEvt );
+};
+
+// -----------------------------------------------------------------------
+
+extern SvStorageStreamRef xStrm;
+
+void MyApp::Main()
+{
+ SvFactory::Init();
+ String aMess, aName, aOutName;
+ BYTE nVersion = 8;
+
+ int nArgs = GetCommandLineParamCount();
+ if (nArgs)
+ {
+ aName = GetCommandLineParam( 0 );
+ if (aName.Search('.') == STRING_NOTFOUND)
+ aName += ".doc";
+ if (nArgs >= 2)
+ {
+ aOutName = GetCommandLineParam( 1 );
+ if (nArgs > 2)
+ {
+ nVersion = (BYTE)(USHORT)GetCommandLineParam( 2 );
+ if( 6 > nVersion || 8 < nVersion )
+ {
+ aMess = "Aufruf: Dump1 InFile [OutFile] [6|7|8]";
+ }
+ }
+ }
+ else
+ {
+ aOutName = aName;
+ aOutName.Erase(aOutName.Search('.'));
+ aOutName += ".dmp";
+ }
+ }
+
+ BOOL bOk = !aMess
+ && !PrepareConvert( aName, aOutName, aMess )
+ && !DoConvert( aName, nVersion );
+
+ if( !bOk )
+ {
+ MyWin aMainWin( NULL, WB_APP | WB_STDWORK, aMess );
+
+ aMainWin.SetText( "WW8-Dumper" );
+ aMainWin.Show();
+ aMainWin.Invalidate();
+
+ Execute();
+ }
+ DeInit();
+// SvFactory::DeInit();
+}
+
+// -----------------------------------------------------------------------
+
+void MyWin::Paint( const Rectangle& )
+{
+ String aText( "Dumper fuer WinWord-Dateien !\n"
+ "Die Wandlung ging schief. Ist es wirklich ein WW-File ?" );
+
+ Size aWinSize = GetOutputSizePixel();
+ Size aTextSize = GetTextSize( aText );
+ Point aPos( aWinSize.Width() / 2 - aTextSize.Width() / 2,
+ aWinSize.Height() / 2 - aTextSize.Height() / 2 );
+
+ DrawText( aPos, aText );
+
+ aPos.Y() += 20;
+ DrawText( aPos, rMessg );
+}
+
+// -----------------------------------------------------------------------
+
+void MyWin::Resize()
+{
+ Invalidate();
+}
+
+// -----------------------------------------------------------------------
+
+void MyWin::MouseButtonDown( const MouseEvent& )
+{
+}
+
+// -----------------------------------------------------------------------
+
+void MyWin::KeyInput( const KeyEvent& rKEvt )
+{
+ WorkWindow::KeyInput( rKEvt );
+}
+
+
+
+//class XVclComponentPeer;
+XWindowPeer* Window::GetComponentInterface( BOOL )
+{
+return 0;
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/dump/dump8.cxx,v 1.1.1.1 2000-09-18 17:14:59 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.8 2000/09/18 16:05:02 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.7 2000/02/14 14:40:00 jp
+ #70473# changes for unicode
+
+ Revision 1.6 2000/01/25 10:44:55 khz
+ change: update the dumper according to import improvements
+
+ Revision 1.5 1999/08/16 10:22:38 JP
+ neu: Dump EscherObjects
+
+
+ Rev 1.4 16 Aug 1999 12:22:38 JP
+ neu: Dump EscherObjects
+
+ Rev 1.3 15 Jun 1999 14:19:16 JP
+ new: ListTable and other Contents
+
+ Rev 1.2 25 Jun 1998 15:43:46 KHZ
+ Strukturaenderung fuer PAPX FKPs
+
+ Rev 1.1 10 Jun 1998 17:22:32 KHZ
+ Zwischenstand-Sicherung Dumper
+
+ Rev 1.0 27 May 1998 15:29:52 KHZ
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/ww8/dump/dump8a.cxx b/sw/source/filter/ww8/dump/dump8a.cxx
new file mode 100644
index 000000000000..9ce9c047b240
--- /dev/null
+++ b/sw/source/filter/ww8/dump/dump8a.cxx
@@ -0,0 +1,3127 @@
+/*************************************************************************
+ *
+ * $RCSfile: dump8a.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 <stdio.h> // SEEK_SET
+#include <string.h> // memset(), ...
+#include <io.h> // access()
+
+
+//#include "defs.hxx"
+#include <tools/solar.h>
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+#include "ww8struc.hxx"
+#include "ww8scan.hxx"
+#include "ww8darr.hxx"
+#include "ww8dout.hxx"
+
+#if 0
+#define DELETEZ( p ) ( delete( p ), p = 0 )
+//#define LONG_MAX ( (long)0x7fffffff )
+#endif
+#define ASSERT( a, b ) ( (a)?(void)0:(void)(*pOut<<endl1<<"ASSERTION failed "<< __FILE__<<__LINE__<< b <<endl1) )
+
+
+#define nWW8MaxListLevel 9
+
+WW8ScannerBase* pSBase = 0;
+//WW8PLCFMan* pPLCFMan = 0;
+
+WW8Fib* pWwFib = 0;
+SvStorageRef* pxStor;
+SvStorageStreamRef xStrm;
+SvStorageStreamRef xTableStream; // ist bei Ver6-7 mit xStrm identisch,
+ // ansonsten entweder 0TABLE oder 1TABLE
+SvStorageStreamRef xDataStream; // ist bei Ver6-7 mit xStrm identisch,
+ // ansonsten DATA
+
+typedef void (*FNDumpData)( void* );
+
+BOOL DumpChar( BYTE c );
+void DumpShortPlainText( WW8_CP nStartCp, long nTextLen, char* pName );
+void DumpPlainText( WW8_CP nStartCp, long nTextLen, char* pName );
+void DumpSprms( BYTE nVersion, SvStream& rSt, short nLen );
+
+
+BOOL WW8ReadINT32( SvStream& rStrm, INT32& rTarget )
+{
+ rStrm >> rTarget;
+ return TRUE;
+
+
+ SVBT32 nData;
+ BOOL bOk = TRUE;
+ if( 4 == rStrm.Read( &nData, 4 ) )
+ rTarget = SVBT32ToLong( nData );
+ else
+ bOk = FALSE;
+ return bOk;
+}
+
+BOOL WW8ReadINT16( SvStream& rStrm, INT16& rTarget )
+{
+ rStrm >> rTarget;
+ return TRUE;
+
+
+ SVBT16 nData;
+ BOOL bOk = TRUE;
+ if( 2 == rStrm.Read( &nData, 2 ) )
+ {
+ rTarget = SVBT16ToShort( nData );
+ }
+ else
+ bOk = FALSE;
+ return bOk;
+}
+
+BOOL WW8ReadBYTE( SvStream& rStrm, BYTE& rTarget )
+{
+ rStrm >> rTarget;
+ return TRUE;
+
+
+ SVBT8 nData;
+ BOOL bOk = TRUE;
+ if( 1 == rStrm.Read( &nData, 1 ) )
+ rTarget = SVBT8ToByte( nData );
+ else
+ bOk = FALSE;
+ return bOk;
+}
+
+BOOL WW8ReadUINT32( SvStream& rStrm, UINT32& rTarget )
+ { return WW8ReadINT32( rStrm, (INT32&) rTarget ); }
+
+BOOL WW8ReadUINT16( SvStream& rStrm, UINT16& rTarget )
+ { return WW8ReadINT16( rStrm, (INT16&) rTarget ); }
+
+
+static void Dump_LVL( UINT16 nLevel )
+{
+ indent( *pOut, *xTableStream );
+
+ long nStart, dxaSpace, dxaIndent;
+ BYTE nfc, nFlags, ixchFollow, cbChpx, cbPapx;
+ BYTE aOfsNumsXCH[nWW8MaxListLevel];
+ *xTableStream >> nStart >> nfc >> nFlags;
+ xTableStream->Read( aOfsNumsXCH, 9 );
+ *xTableStream >> ixchFollow >> dxaSpace >> dxaIndent
+ >> cbChpx >> cbPapx;
+ xTableStream->SeekRel( 2 );
+
+ *pOut << " Level: " << nLevel << endl1;
+ *pOut << indent2 << " Start: " << nStart
+ << " Fmt: " << (USHORT)nfc
+ << " Follow: ";
+ if( 0 == ixchFollow ) *pOut << "tab";
+ else if( 1 == ixchFollow ) *pOut << "blank";
+ else if( 2 == ixchFollow ) *pOut << "nothing";
+ *pOut << endl1 << indent2<< " dxSpace: " << dxaSpace
+ << " dxaIndent: " << dxaIndent << " LevelCharPos: ";
+
+ for( BYTE x = 0; x < nWW8MaxListLevel; ++x )
+ *pOut << (USHORT)aOfsNumsXCH[ x ] << ", ";
+ *pOut << endl1;
+
+ if( cbPapx )
+ {
+ ULONG nXPos = xTableStream->Tell();
+ DumpSprms( pWwFib->nVersion, *xTableStream, cbPapx );
+ xTableStream->Seek( nXPos + cbPapx );
+ }
+ if( cbChpx )
+ {
+ ULONG nXPos = xTableStream->Tell();
+ DumpSprms( pWwFib->nVersion, *xTableStream, cbChpx );
+ xTableStream->Seek( nXPos + cbChpx );
+ }
+
+ USHORT nStrLen, nC;
+ *xTableStream >> nStrLen;
+ char* pStr = new char[ nStrLen+1 ], *p = pStr;
+ while( nStrLen-- )
+ {
+ *xTableStream >> nC;
+ if( 10 > nC ) nC += 0x30;
+ *pStr++ = (char)nC;
+ }
+ *pStr = 0;
+ *pOut << indent2 << "Str: \"" << p << '\"' << endl1 << endl1;
+}
+
+static void DumpNumList()
+{
+ if( pWwFib->lcbSttbListNames )
+ {
+ ULONG nOldPos = xTableStream->Tell();
+ xTableStream->Seek( pWwFib->fcSttbListNames );
+
+ *pOut << endl1;
+ begin( *pOut, *xTableStream ) << "ListNames, Size ";
+
+ UINT16 nDummy;
+ UINT32 nCount;
+ *xTableStream >> nDummy >> nCount;
+
+ *pOut << nCount << ", Dummy: " << nDummy << endl1;
+
+ *pOut << indent2;
+ for( ; nCount; --nCount )
+ {
+ UINT16 nLen, nC;
+ *xTableStream >> nLen;
+ char * pChar = new char[ nLen + 1 ], *p = pChar;
+ while( nLen-- )
+ {
+ *xTableStream >> nC;
+ *pChar++ = (char)nC;
+ }
+ *pChar = 0;
+ *pOut << '\"' << p << '\"';
+ if( 1 < nCount ) *pOut << ", ";
+ delete p;
+ }
+ *pOut << endl1;
+
+ end( *pOut, *xTableStream ) << "ListNames" << endl1;
+ xTableStream->Seek( nOldPos );
+ }
+
+ if( pWwFib->lcbPlcfLst )
+ {
+ ULONG nOldPos = xTableStream->Tell();
+ xTableStream->Seek( pWwFib->fcPlcfLst );
+
+ *pOut << endl1;
+ begin( *pOut, *xTableStream ) << "LiST Data on File, Size ";
+
+ UINT16 nCount;
+ *xTableStream >> nCount;
+ *pOut << nCount << endl1;
+
+ ULONG nLVLPos = pWwFib->fcPlcfLst + ( nCount * 0x1c ) + 2;
+
+ // 1.1 alle LST einlesen
+ for( UINT16 nList = 0; nList < nCount; nList++ )
+ {
+ indent( *pOut, *xTableStream );
+
+ BYTE nByte;
+ UINT32 nLstId, nTplId;
+ *xTableStream >> nLstId >> nTplId;
+
+ USHORT aStyleIdArr[ nWW8MaxListLevel ];
+ for( USHORT nLevel = 0; nLevel < nWW8MaxListLevel; nLevel++ )
+ *xTableStream >> aStyleIdArr[ nLevel ];
+ *xTableStream >> nByte;
+ xTableStream->SeekRel( 1 ); // Dummy ueberlesen
+
+ *pOut << "ListId: " << nLstId
+ << " TemplateId " << nTplId << endl1
+ << indent2 << " StyleIds: ";
+ for( nLevel = 0; nLevel < nWW8MaxListLevel; nLevel++ )
+ *pOut << aStyleIdArr[ nLevel ] << ", ";
+
+ *pOut << endl1;
+ if( 1 & nByte ) *pOut << " <simple List>";
+ if( 2 & nByte ) *pOut << " <restart at new section>";
+ if( 3 & nByte ) *pOut << endl1;
+
+ ULONG nTmpPos = xTableStream->Tell();
+ xTableStream->Seek( nLVLPos );
+
+ // 1.2 alle LVL aller aLST einlesen
+ for( nLevel = 0; nLevel < ((1 & nByte) ? 1 : nWW8MaxListLevel); nLevel++ )
+ Dump_LVL( nLevel );
+
+ nLVLPos = xTableStream->Tell();
+ xTableStream->Seek( nTmpPos );
+ }
+
+ end( *pOut, *xTableStream ) << "LiST Data on File" << endl1;
+ xTableStream->Seek( nOldPos );
+ }
+
+ if( pWwFib->lcbPlfLfo )
+ {
+ ULONG nOldPos = xTableStream->Tell();
+ xTableStream->Seek( pWwFib->fcPlfLfo );
+
+ *pOut << endl1;
+ begin( *pOut, *xTableStream ) << "List Format Override, Size ";
+
+ UINT32 nCount, nLstId;
+ *xTableStream >> nCount;
+ *pOut << nCount << endl1;
+
+ ULONG nLVLPos = pWwFib->fcPlfLfo + ( nCount * 0x10 ) + 4;
+
+ for( ; nCount; --nCount )
+ {
+ indent( *pOut, *xTableStream );
+
+ BYTE nLevels;
+ *xTableStream >> nLstId;
+ xTableStream->SeekRel( 8 );
+ *xTableStream >> nLevels;
+ xTableStream->SeekRel( 3 );
+
+ *pOut << "ListId: " << nLstId
+ << " Override Levels: " << (USHORT)nLevels << endl1;
+
+ ULONG nTmpPos = xTableStream->Tell();
+ xTableStream->Seek( nLVLPos );
+
+ for( BYTE nLvl = 0; nLvl < nLevels; ++nLvl )
+ {
+ UINT32 nStartAt;
+ BYTE nFlags;
+ do {
+ *xTableStream >> nFlags;
+ } while( 0xFF == nFlags );
+ xTableStream->SeekRel( -1 );
+
+ indent( *pOut, *xTableStream );
+ *xTableStream >> nStartAt >> nFlags;
+ xTableStream->SeekRel( 3 );
+
+ if( nFlags & 0x10 ) *pOut << "<Override start>";
+ if( nFlags & 0x20 ) *pOut << "<Override formattting>";
+ if( nFlags & 0x30 ) *pOut << endl1;
+
+ if( nFlags & 0x20 )
+ Dump_LVL( nFlags & 0x0F );
+ }
+ nLVLPos = xTableStream->Tell();
+ xTableStream->Seek( nTmpPos );
+ }
+
+ end( *pOut, *xTableStream ) << "List Format Override" << endl1 << endl1;
+ xTableStream->Seek( nOldPos );
+ }
+}
+
+static void DumpBookLow()
+{
+ *pOut << begin2 << "Bookmarks Low" << endl1;
+ *pOut << indent2 <<"Start: Adr " << hex6 << pWwFib->fcPlcfbkf
+ << ", Len: " << pWwFib->lcbPlcfbkf << endl1;
+ *pOut << indent2 << "End: Adr " << hex6 << pWwFib->fcPlcfbkl
+ << ", Len: " << pWwFib->lcbPlcfbkl << endl1;
+ *pOut << indent2 << "Strings: Adr " << hex6 << pWwFib->fcSttbfbkmk
+ << ", Len: " << pWwFib->lcbSttbfbkmk << endl1;
+ *pOut << endl1;
+
+ WW8PLCFspecial aStarts( &xStrm, pWwFib->fcPlcfbkf, pWwFib->lcbPlcfbkf, 4 );
+ WW8PLCFspecial aEnds( &xStrm, pWwFib->fcPlcfbkl, pWwFib->lcbPlcfbkl, 0, -1, TRUE );
+
+ USHORT i = 0;
+ while( 1 ){
+ long nStart = aStarts.GetPos( i );
+ if( nStart >= LONG_MAX )
+ break;
+
+ *pOut << indent2 << i << ".StartCp: " << hex6 << nStart;
+
+ const void* p = aStarts.GetData( i );
+ if( p ){
+ *pOut << ", EndIdx: ";
+ USHORT nEndIdx = *((USHORT*)p);
+ *pOut << nEndIdx;
+ long nEnd = aEnds.GetPos( nEndIdx );
+ *pOut << ", End: " << hex6 << nEnd << hex
+ << ", Len: " << nEnd - nStart << dec;
+ }else{
+ *pOut << " aStarts.GetData() ging schief.";
+ }
+
+#if 0 // gibt's im wirklichen Leben nicht
+ if( aEnds.Get( n, p ) ){
+ *pOut << " aEnds.iBkf: ";
+ if( p )
+ *pOut << *((USHORT*)p);
+ else
+ *pOut << "NULL-Ptr";
+ }else{
+ *pOut << " aEnds.Get() ging schief.";
+ }
+#endif
+
+ *pOut << endl1;
+ i++;
+ }
+ *pOut << end2 << "Bookmarks Low" << endl1 << endl1;
+}
+
+static void DumpBookHigh()
+{
+ WW8PLCFx_Book aBook( &xStrm, &xTableStream, *pWwFib, 0 );
+ if( !aBook.GetIMax() ){
+ *pOut << indent1 << "No Bookmarks" << endl1 << endl1;
+ return;
+ }
+
+ *pOut << indent1 << begin1 << "Bookmarks High" << endl1;
+
+ USHORT i = 0;
+ while( 1 ){
+ long nPos = aBook.Where();
+ if( nPos >= LONG_MAX )
+ break;
+ *pOut << indent2 << i << ". Cp:" << hex6 << nPos << dec;
+ *pOut << ( ( aBook.GetIsEnd() ) ? " Ende " : " Anfang" );
+ *pOut << " Handle: " << aBook.GetHandle();
+// *pOut << " Len: " << hex4 << aBook.GetLen() << dec;
+ const char* pN = aBook.GetName();
+ if( pN )
+ *pOut << " Name: " << pN << endl1;
+ else
+ *pOut << endl1;
+ aBook++;
+ i++;
+ }
+ *pOut << end2 << "Bookmarks High" << endl1 << endl1;
+}
+
+static BOOL DumpField3( WW8PLCFspecial& rPlc )
+{
+ WW8FieldDesc aF;
+
+ BOOL bOk = WW8GetFieldPara( pWwFib->nVersion, rPlc, aF );
+ if( !bOk )
+ {
+ *pOut << " " << indent1 << "no WW8GetFieldPara()" << endl1;
+ return FALSE;
+ }
+ *pOut << " " << indent1 << begin1 << "Field Cp: " << hex
+ << aF.nSCode << ", Len: " << aF.nLCode << "; Cp: " << aF.nSRes
+ << ", Len: "<< aF.nLRes << ", Typ: " << dec << (USHORT)aF.nId
+ << ", Options: " << hex << (USHORT)aF.nOpt;
+ if( aF.bCodeNest )
+ *pOut << " Code Nested";
+ if( aF.bResNest )
+ *pOut << " Result Nested";
+ *pOut << endl1;
+ DumpShortPlainText( aF.nSCode, aF.nLCode, "Code" );
+ DumpShortPlainText( aF.nSRes, aF.nLRes, "Result" );
+ *pOut << " " << end1 << "Field" << endl1;
+ return TRUE;
+}
+
+static BOOL DumpField2( WW8PLCFspecial& rPlc )
+{
+ WW8_CP nSCode, nECode, nSRes, nERes;
+ void* pData;
+ if( !rPlc.Get( nSCode, pData ) ) // Ende des Plc1 ?
+ return FALSE;
+ rPlc++;
+
+ if( ((BYTE*)pData)[0] != 19 ){
+ *pOut << "Field Error, " << (USHORT)((BYTE*)pData)[0] << endl1;
+ return TRUE; // nicht abbrechen
+ }
+
+ *pOut << " " << indent1 << begin1 << "Field" << " Cp: " << hex
+ << nSCode << " Typ: " << dec << (USHORT)((BYTE*)pData)[1] << endl1;
+
+ if( !rPlc.Get( nECode, pData ) ) // Ende des Plc1 ?
+ return FALSE;
+
+ DumpShortPlainText( nSCode, nECode - nSCode, "Code" ); // Code, bei nested abgeschnitten
+ nSRes = nECode; // Default
+
+
+ while( ((BYTE*)pData)[0] == 19 ){ // immer noch neue (nested) Anfaenge ?
+ DumpField2( rPlc ); // nested Field im Beschreibungsteil
+ if( !rPlc.Get( nSRes, pData ) ) // Ende des Plc1 ?
+ return FALSE;
+ }
+
+ if( ((BYTE*)pData)[0] == 20 ){ // Field Separator ?
+ rPlc++;
+ *pOut << " " << indent1 << "Field Seperator" << " Cp: " << hex << nSRes
+ << ", Flags = 0x" << hex << (USHORT)((BYTE*)pData)[1] << dec << endl1;
+ if( !rPlc.Get( nERes, pData ) ) // Ende des Plc1 ?
+ return FALSE;
+
+ while( ((BYTE*)pData)[0] == 19 ){ // immer noch neue (nested) Anfaenge ?
+ DumpField2( rPlc ); // nested Field im Resultatteil
+ if( !rPlc.Get( nERes, pData ) ) // Ende des Plc1 ?
+ return FALSE;
+ }
+ DumpShortPlainText( nSRes, nERes - nSRes, "Result" ); // Result, bei nested incl. nested Field
+
+ }else{
+ nERes = nSRes; // Kein Result vorhanden
+ }
+
+ rPlc++;
+ if( ((BYTE*)pData)[0] == 21 ){ // Field Ende ?
+ *pOut << " " << end1 << " Field " << " Cp: " << hex << nERes
+ << ", Flags = 0x" << hex << (USHORT)((BYTE*)pData)[1] << dec << endl1;
+ }else{
+ *pOut << " Unknown Field Type" << endl1;
+ *pOut << " " << end1 << " Field " << endl1;
+ }
+
+ return TRUE;
+}
+
+static void DumpField1( WW8_FC nPos, long nLen, char* pName )
+{
+ if( !nLen )
+ {
+ *pOut << pName << ": No Fields" << endl1 << endl1;
+ return;
+ }
+
+ WW8PLCFspecial aPlc( &xTableStream, nPos, nLen, 2 );
+
+ *pOut << hex6 << nPos << dec2 << ' ' << indent1 << begin1;
+ *pOut << "Plc." << pName << ", Len: ";
+ *pOut << nLen << ", ca. " << aPlc.GetIMax()/3 << " Elements"
+
+ << " Idx: " << (long)aPlc.GetIdx()
+ << " IMax: " << aPlc.GetIMax()
+
+ << endl1;
+
+// while( DumpField2( aPlc ) ){}
+ while( (long)aPlc.GetIdx() < aPlc.GetIMax() )
+ {
+ DumpField3( aPlc );
+ aPlc++;
+ }
+
+ end( *pOut, *xStrm ) << "Plcx." << pName << endl1 << endl1;
+}
+
+
+//-----------------------------------------
+static void DumpFonts()
+{
+ WW8Fonts aFonts( *xTableStream, *pWwFib );
+
+ USHORT i;
+
+ *pOut << endl1;
+ *pOut << 'T' << hex6 << pWwFib->fcSttbfffn << dec2 << ' ' << indent1 << begin1 << "FFNs" << endl1;
+
+ for( i=0; i<aFonts.GetMax(); i++){
+ // const
+ WW8_FFN* p = (WW8_FFN*)aFonts.GetFont( i );
+
+ *pOut << "Id:" << i << " Name:\"" << String( p->sFontname ).GetStr() << '"'; // Name
+ if( p->ibszAlt ) // gibt es einen alternativen Font ?
+
+ *pOut << ", Alternativ:" << '"' << String( p->sFontname.Copy( p->ibszAlt ) ).GetStr() << '"';
+
+ *pOut << ", PitchRequest:" << (short)p->prg << ", TrueType:" << (short)p->fTrueType;
+ *pOut << ", FontFamily:" << (short)p->ff;
+ *pOut << ", BaseWeight:" << p->wWeight;
+ *pOut << ", CharacterSet:" << (short)p->chs;
+ *pOut << endl1;
+ }
+ *pOut << " " << end1 << "FFNs" << endl1 << endl1;
+}
+
+
+//-----------------------------------------
+// class DFib
+//-----------------------------------------
+
+class DFib: public WW8Fib
+{
+public:
+ DFib( SvStream& rStrm, BYTE nVersion ) : WW8Fib( rStrm, nVersion ) {}
+ void Dump();
+};
+
+//-----------------------------------------
+
+void DFib::Dump()
+{
+ *pOut << "Adressen: FIB " << hex << 0 << ", Text "
+ << fcMin << ", TextLen " << ccpText
+ << ", Styles " << fcStshf << endl1;
+
+ *pOut << "\twIdent: " << wIdent << endl1;
+ *pOut << "\tnFib: " << nFib << endl1;
+ *pOut << "\tnProduct: " << nProduct << endl1;
+ *pOut << "\tlid: " << lid << endl1;
+ *pOut << "\tpnNext: " << pnNext << endl1;
+
+ *pOut << "\tfDot: " << (fDot ? '1' : '0') << endl1;
+ *pOut << "\tfGlsy: " << (fGlsy ? '1' : '0') << endl1;
+ *pOut << "\tfComplex: " << (fComplex ? '1' : '0') << endl1;
+ *pOut << "\tfHasPic: " << (fHasPic ? '1' : '0') << endl1;
+ *pOut << "\tcQuickSaves: " << (USHORT)cQuickSaves << endl1;
+ *pOut << "\tfEncrypted: " << (fEncrypted ? '1' : '0') << endl1;
+ *pOut << "\tfWhichTblStm: " << (fWhichTblStm ? '1' : '0') << endl1;
+ *pOut << "\tfExtChar: " << (fExtChar ? '1' : '0') << endl1;
+
+ *pOut << "\tnFibBack: " << nFibBack << endl1;
+ *pOut << "\tlKey1: " << lKey1 << endl1;
+ *pOut << "\tlKey2: " << lKey2 << endl1;
+ *pOut << "\tenvr: " << envr << endl1;
+
+ *pOut << "\tfMac: " << (fMac ? '1' : '0') << endl1;
+ *pOut << "\tfEmptySpecial: " << (fEmptySpecial ? '1' : '0') << endl1;
+ *pOut << "\tfLoadOverridePage: " << (fLoadOverridePage ? '1' : '0') << endl1;
+ *pOut << "\tfFuturesavedUndo: " << (fFuturesavedUndo ? '1' : '0') << endl1;
+ *pOut << "\tfWord97Saved: " << (fWord97Saved ? '1' : '0') << endl1;
+
+ *pOut << "\tchse: " << chse << endl1;
+ *pOut << "\tchseTables: " << chseTables << endl1;
+ *pOut << "\tfcMin: " << fcMin << endl1;
+ *pOut << "\tfcMac: " << fcMac << endl1;
+ *pOut << "\tcsw: " << csw << endl1;
+ *pOut << "\twMagicCreated: " << wMagicCreated << endl1;
+ *pOut << "\twMagicRevised: " << wMagicRevised << endl1;
+ *pOut << "\twMagicCreatedPrivate: " << wMagicCreatedPrivate << endl1;
+ *pOut << "\twMagicRevisedPrivate: " << wMagicRevisedPrivate << endl1;
+ *pOut << "\tlidFE: " << lidFE << endl1;
+ *pOut << "\tclw: " << clw << endl1;
+ *pOut << "\tcbMac: " << cbMac << endl1;
+ *pOut << "\tccpText: " << ccpText << endl1;
+ *pOut << "\tccpFtn: " << ccpFtn << endl1;
+ *pOut << "\tccpHdr: " << ccpHdr << endl1;
+ *pOut << "\tccpMcr: " << ccpMcr << endl1;
+ *pOut << "\tccpAtn: " << ccpAtn << endl1;
+ *pOut << "\tccpEdn: " << ccpEdn << endl1;
+ *pOut << "\tccpTxbx: " << ccpTxbx << endl1;
+ *pOut << "\tccpHdrTxbx: " << ccpHdrTxbx << endl1;
+ *pOut << "\tpnFbpChpFirst: " << pnFbpChpFirst << endl1;
+ *pOut << "\tpnFbpPapFirst: " << pnFbpPapFirst << endl1;
+ *pOut << "\tpnFbpLvcFirst: " << pnFbpLvcFirst << endl1;
+ *pOut << "\tpnLvcFirst: " << pnLvcFirst << endl1;
+ *pOut << "\tcpnBteLvc: " << cpnBteLvc << endl1;
+ *pOut << "\tfcIslandFirst: " << fcIslandFirst << endl1;
+ *pOut << "\tfcIslandLim: " << fcIslandLim << endl1;
+ *pOut << "\tcfclcb: " << cfclcb << endl1;
+ *pOut << "\tfcStshfOrig: " << fcStshfOrig << endl1;
+ *pOut << "\tlcbStshfOrig: " << lcbStshfOrig << endl1;
+ *pOut << "\tfcStshf: " << fcStshf << endl1;
+ *pOut << "\tlcbStshf: " << lcbStshf << endl1;
+ *pOut << "\tfcPlcffndRef: " << fcPlcffndRef << endl1;
+ *pOut << "\tlcbPlcffndRef: " << lcbPlcffndRef << endl1;
+ *pOut << "\tfcPlcffndTxt: " << fcPlcffndTxt << endl1;
+ *pOut << "\tlcbPlcffndTxt: " << lcbPlcffndTxt << endl1;
+ *pOut << "\tfcPlcfandRef: " << fcPlcfandRef << endl1;
+ *pOut << "\tlcbPlcfandRef: " << lcbPlcfandRef << endl1;
+ *pOut << "\tfcPlcfandTxt: " << fcPlcfandTxt << endl1;
+ *pOut << "\tlcbPlcfandTxt: " << lcbPlcfandTxt << endl1;
+ *pOut << "\tfcPlcfsed: " << fcPlcfsed << endl1;
+ *pOut << "\tlcbPlcfsed: " << lcbPlcfsed << endl1;
+ *pOut << "\tfcPlcfpad: " << fcPlcfpad << endl1;
+ *pOut << "\tlcbPlcfpad: " << lcbPlcfpad << endl1;
+ *pOut << "\tfcPlcfphe: " << fcPlcfphe << endl1;
+ *pOut << "\tlcbPlcfphe: " << lcbPlcfphe << endl1;
+ *pOut << "\tfcSttbfglsy: " << fcSttbfglsy << endl1;
+ *pOut << "\tlcbSttbfglsy: " << lcbSttbfglsy << endl1;
+ *pOut << "\tfcPlcfglsy: " << fcPlcfglsy << endl1;
+ *pOut << "\tlcbPlcfglsy: " << lcbPlcfglsy << endl1;
+ *pOut << "\tfcPlcfhdd: " << fcPlcfhdd << endl1;
+ *pOut << "\tlcbPlcfhdd: " << lcbPlcfhdd << endl1;
+ *pOut << "\tfcPlcfbteChpx: " << fcPlcfbteChpx << endl1;
+ *pOut << "\tlcbPlcfbteChpx: " << lcbPlcfbteChpx << endl1;
+ *pOut << "\tfcPlcfbtePapx: " << fcPlcfbtePapx << endl1;
+ *pOut << "\tlcbPlcfbtePapx: " << lcbPlcfbtePapx << endl1;
+ *pOut << "\tfcPlcfsea: " << fcPlcfsea << endl1;
+ *pOut << "\tlcbPlcfsea: " << lcbPlcfsea << endl1;
+ *pOut << "\tfcSttbfffn: " << fcSttbfffn << endl1;
+ *pOut << "\tlcbSttbfffn: " << lcbSttbfffn << endl1;
+ *pOut << "\tfcPlcffldMom: " << fcPlcffldMom << endl1;
+ *pOut << "\tlcbPlcffldMom: " << lcbPlcffldMom << endl1;
+ *pOut << "\tfcPlcffldHdr: " << fcPlcffldHdr << endl1;
+ *pOut << "\tlcbPlcffldHdr: " << lcbPlcffldHdr << endl1;
+ *pOut << "\tfcPlcffldFtn: " << fcPlcffldFtn << endl1;
+ *pOut << "\tlcbPlcffldFtn: " << lcbPlcffldFtn << endl1;
+ *pOut << "\tfcPlcffldAtn: " << fcPlcffldAtn << endl1;
+ *pOut << "\tlcbPlcffldAtn: " << lcbPlcffldAtn << endl1;
+ *pOut << "\tfcPlcffldMcr: " << fcPlcffldMcr << endl1;
+ *pOut << "\tlcbPlcffldMcr: " << lcbPlcffldMcr << endl1;
+ *pOut << "\tfcSttbfbkmk: " << fcSttbfbkmk << endl1;
+ *pOut << "\tlcbSttbfbkmk: " << lcbSttbfbkmk << endl1;
+ *pOut << "\tfcPlcfbkf: " << fcPlcfbkf << endl1;
+ *pOut << "\tlcbPlcfbkf: " << lcbPlcfbkf << endl1;
+ *pOut << "\tfcPlcfbkl: " << fcPlcfbkl << endl1;
+ *pOut << "\tlcbPlcfbkl: " << lcbPlcfbkl << endl1;
+ *pOut << "\tfcCmds: " << fcCmds << endl1;
+ *pOut << "\tlcbCmds: " << lcbCmds << endl1;
+ *pOut << "\tfcPlcfmcr: " << fcPlcfmcr << endl1;
+ *pOut << "\tlcbPlcfmcr: " << lcbPlcfmcr << endl1;
+ *pOut << "\tfcSttbfmcr: " << fcSttbfmcr << endl1;
+ *pOut << "\tlcbSttbfmcr: " << lcbSttbfmcr << endl1;
+ *pOut << "\tfcPrDrvr: " << fcPrDrvr << endl1;
+ *pOut << "\tlcbPrDrvr: " << lcbPrDrvr << endl1;
+ *pOut << "\tfcPrEnvPort: " << fcPrEnvPort << endl1;
+ *pOut << "\tlcbPrEnvPort: " << lcbPrEnvPort << endl1;
+ *pOut << "\tfcPrEnvLand: " << fcPrEnvLand << endl1;
+ *pOut << "\tlcbPrEnvLand: " << lcbPrEnvLand << endl1;
+ *pOut << "\tfcWss: " << fcWss << endl1;
+ *pOut << "\tlcbWss: " << lcbWss << endl1;
+ *pOut << "\tfcDop: " << fcDop << endl1;
+ *pOut << "\tlcbDop: " << lcbDop << endl1;
+ *pOut << "\tfcSttbfAssoc: " << fcSttbfAssoc << endl1;
+ *pOut << "\tcbSttbfAssoc: " << cbSttbfAssoc << endl1;
+ *pOut << "\tfcClx: " << fcClx << endl1;
+ *pOut << "\tlcbClx: " << lcbClx << endl1;
+ *pOut << "\tfcPlcfpgdFtn: " << fcPlcfpgdFtn << endl1;
+ *pOut << "\tlcbPlcfpgdFtn: " << lcbPlcfpgdFtn << endl1;
+ *pOut << "\tfcAutosaveSource: " << fcAutosaveSource << endl1;
+ *pOut << "\tlcbAutosaveSource: " << lcbAutosaveSource << endl1;
+ *pOut << "\tfcGrpStAtnOwners: " << fcGrpStAtnOwners << endl1;
+ *pOut << "\tlcbGrpStAtnOwners: " << lcbGrpStAtnOwners << endl1;
+ *pOut << "\tfcSttbfAtnbkmk: " << fcSttbfAtnbkmk << endl1;
+ *pOut << "\tlcbSttbfAtnbkmk: " << lcbSttbfAtnbkmk << endl1;
+ *pOut << "\tfcPlcfdoaMom: " << fcPlcfdoaMom << endl1;
+ *pOut << "\tlcbPlcfdoaMom: " << lcbPlcfdoaMom << endl1;
+ *pOut << "\tfcPlcfdoaHdr: " << fcPlcfdoaHdr << endl1;
+ *pOut << "\tlcbPlcfdoaHdr: " << lcbPlcfdoaHdr << endl1;
+ *pOut << "\tfcPlcfspaMom: " << fcPlcfspaMom << endl1;
+ *pOut << "\tlcbPlcfspaMom: " << lcbPlcfspaMom << endl1;
+ *pOut << "\tfcPlcfspaHdr: " << fcPlcfspaHdr << endl1;
+ *pOut << "\tlcbPlcfspaHdr: " << lcbPlcfspaHdr << endl1;
+ *pOut << "\tfcPlcfAtnbkf: " << fcPlcfAtnbkf << endl1;
+ *pOut << "\tlcbPlcfAtnbkf: " << lcbPlcfAtnbkf << endl1;
+ *pOut << "\tfcPlcfAtnbkl: " << fcPlcfAtnbkl << endl1;
+ *pOut << "\tlcbPlcfAtnbkl: " << lcbPlcfAtnbkl << endl1;
+ *pOut << "\tfcPms: " << fcPms << endl1;
+ *pOut << "\tlcbPMS: " << lcbPMS << endl1;
+ *pOut << "\tfcFormFldSttbf: " << fcFormFldSttbf << endl1;
+ *pOut << "\tlcbFormFldSttbf: " << lcbFormFldSttbf << endl1;
+ *pOut << "\tfcPlcfendRef: " << fcPlcfendRef << endl1;
+ *pOut << "\tlcbPlcfendRef: " << lcbPlcfendRef << endl1;
+ *pOut << "\tfcPlcfendTxt: " << fcPlcfendTxt << endl1;
+ *pOut << "\tlcbPlcfendTxt: " << lcbPlcfendTxt << endl1;
+ *pOut << "\tfcPlcffldEdn: " << fcPlcffldEdn << endl1;
+ *pOut << "\tlcbPlcffldEdn: " << lcbPlcffldEdn << endl1;
+ *pOut << "\tfcPlcfpgdEdn: " << fcPlcfpgdEdn << endl1;
+ *pOut << "\tlcbPlcfpgdEdn: " << lcbPlcfpgdEdn << endl1;
+ *pOut << "\tfcDggInfo: " << fcDggInfo << endl1;
+ *pOut << "\tlcbDggInfo: " << lcbDggInfo << endl1;
+ *pOut << "\tfcSttbfRMark: " << fcSttbfRMark << endl1;
+ *pOut << "\tlcbSttbfRMark: " << lcbSttbfRMark << endl1;
+ *pOut << "\tfcSttbfCaption: " << fcSttbfCaption << endl1;
+ *pOut << "\tlcbSttbfCaption: " << lcbSttbfCaption << endl1;
+ *pOut << "\tfcSttbAutoCaption: " << fcSttbAutoCaption << endl1;
+ *pOut << "\tlcbSttbAutoCaption: " << lcbSttbAutoCaption << endl1;
+ *pOut << "\tfcPlcfwkb: " << fcPlcfwkb << endl1;
+ *pOut << "\tlcbPlcfwkb: " << lcbPlcfwkb << endl1;
+ *pOut << "\tfcPlcfspl: " << fcPlcfspl << endl1;
+ *pOut << "\tlcbPlcfspl: " << lcbPlcfspl << endl1;
+ *pOut << "\tfcPlcftxbxTxt: " << fcPlcftxbxTxt << endl1;
+ *pOut << "\tlcbPlcftxbxTxt: " << lcbPlcftxbxTxt << endl1;
+ *pOut << "\tfcPlcffldTxbx: " << fcPlcffldTxbx << endl1;
+ *pOut << "\tlcbPlcffldTxbx: " << lcbPlcffldTxbx << endl1;
+ *pOut << "\tfcPlcfHdrtxbxTxt: " << fcPlcfHdrtxbxTxt << endl1;
+ *pOut << "\tlcbPlcfHdrtxbxTxt: " << lcbPlcfHdrtxbxTxt << endl1;
+ *pOut << "\tfcPlcffldHdrTxbx: " << fcPlcffldHdrTxbx << endl1;
+ *pOut << "\tlcbPlcffldHdrTxbx: " << lcbPlcffldHdrTxbx << endl1;
+ *pOut << "\tfcPlcfLst: " << fcPlcfLst << endl1;
+ *pOut << "\tlcbPlcfLst: " << lcbPlcfLst << endl1;
+ *pOut << "\tfcPlfLfo: " << fcPlfLfo << endl1;
+ *pOut << "\tlcbPlfLfo: " << lcbPlfLfo << endl1;
+ *pOut << "\tfcPlcftxbxBkd: " << fcPlcftxbxBkd << endl1;
+ *pOut << "\tlcbPlcftxbxBkd: " << lcbPlcftxbxBkd << endl1;
+ *pOut << "\tfcPlcfHdrtxbxBkd: " << fcPlcfHdrtxbxBkd << endl1;
+ *pOut << "\tlcbPlcfHdrtxbxBkd: " << lcbPlcfHdrtxbxBkd << endl1;
+ *pOut << "\tfcSttbListNames: " << fcSttbListNames << endl1;
+ *pOut << "\tlcbSttbListNames: " << lcbSttbListNames << endl1;
+
+ *pOut << "\tpnChpFirst: " << pnChpFirst << endl1;
+ *pOut << "\tpnPapFirst: " << pnPapFirst << endl1;
+ *pOut << "\tcpnBteChp: " << cpnBteChp << endl1;
+ *pOut << "\tcpnBtePap: " << cpnBtePap << endl1;
+
+
+ *pOut << dec << "END FIB" << endl1 << endl1;
+}
+
+//-----------------------------------------
+// class DStyle
+//-----------------------------------------
+
+class DStyle: public WW8Style
+{
+ BYTE nVersion;
+public:
+ DStyle( SvStream& rStream, WW8Fib& rFib )
+ : WW8Style( rStream, rFib ){ nVersion = rFib.nVersion; }
+ void Dump1Style( USHORT nNr );
+ void Dump();
+};
+
+//-----------------------------------------
+// universelle Hilfsroutinen
+//-----------------------------------------
+
+static void DumpIt( SvStream& rSt, short nLen )
+{
+ indent( *pOut, rSt );
+ if( nLen <= 0 ){
+ *pOut << endl1;
+ return;
+ }
+ while ( nLen ){
+ BYTE c;
+ xStrm->Read( &c, sizeof(c) );
+ *pOut << "<0x" << hex2 << (USHORT)c << dec2 << "> ";
+ nLen--;
+ }
+ *pOut << endl1;
+}
+
+static void DumpItSmall( SvStream& rStrm, short nLen )
+{
+ if( nLen <= 0 )
+ return;
+
+ while ( nLen )
+ {
+ BYTE c;
+
+ rStrm.Read( &c, sizeof(c) );
+
+ if( c <= 9 )
+ *pOut << (USHORT)c;
+ else
+ *pOut << "0x" << hex2 << (USHORT)c << dec2;
+
+ nLen--;
+
+ if( nLen )
+ *pOut << ',';
+ }
+}
+
+//-----------------------------------------
+// Hilfsroutinen : Foot-, Endnotes
+//-----------------------------------------
+
+
+#if 0
+void DumpText( WW8_CP nStartCp, long nTextLen, WW8ScannerBase* pBase, short nType, char* pName = "" );
+static void DumpFtnShort( short nId, long nPos, long nFieldLen )
+{
+ ASSERT( nId < 261 && nId > 255, "Falsche Id" );
+
+ *pOut << '<' << hex << nPos << dec << ' ';
+
+ *pOut << 'F' << nId << ' ' << WW8GetSprmDumpInfo( nId ).pName << ' ';
+/*
+ if ( WW8GetSprmDumpInfo( nId ).pOutFnc ){
+ WW8GetSprmDumpInfo( nId ).pOutFnc( nId, nFieldLen ); // Rufe AusgabeFunktion
+ }
+*/
+ *pOut << '>' << endl1;
+
+ pPLCFMan->SavePLCF();
+ WW8PLCFMan* pOldPLCFMan = pPLCFMan;
+
+ pSBase->pChpPLCF->SeekPos( nPos );
+ pSBase->pPapPLCF->SeekPos( nPos );
+
+ DumpText( nPos, nFieldLen, pSBase, MAN_FTN, WW8GetSprmDumpInfo( nId ).pName );
+
+ indent( *pOut, *xStrm );
+
+ pPLCFMan = pOldPLCFMan; // Attributverwaltung restoren
+ pPLCFMan->RestorePLCF();
+}
+#endif
+
+//-----------------------------------------
+// Hilfsroutinen : SPRMS
+//-----------------------------------------
+
+
+/*
+#if 0
+static short DumpSprmShort( short nSprmsLen )
+{
+ long nSprmPos = xStrm->Tell();
+
+ *pOut << '<' << hex << nSprmPos << dec << ' ';
+
+ BYTE x[512];
+ xStrm->Read( x, 512 ); // Token und folgende lesen
+ BYTE i = x[0];
+
+ nSprmsLen -= WW8GetSprmSizeBrutto( nVersion, x ); // so viele Sprm-Bytes folgen noch nach diesem Sprm
+
+ if( nSprmsLen < 0 )
+ *pOut << "!UEberhang um " << -nSprmsLen << " Bytes!" << endl1;
+
+ *pOut << 'A' << (USHORT)i << ' ';
+ *pOut << aSprmTab[i].pName << ' ';
+
+ xStrm->Seek( nSprmPos + 1 + WW8SprmDataOfs( i ) );// gehe zum eigentlichen
+ // Inhalt
+ if ( aSprmTab[i].pOutFnc ){
+ WW8GetSprmDumpInfo( nId ).pOutFnc( i, WW8GetSprmSizeNetto( x ) );// Rufe AusgabeFunktion
+ }else{
+ DumpItSmall( WW8GetSprmSizeNetto( x ) ); // oder Dumper
+ }
+ *pOut << '>';
+
+ return nSprmsLen;
+}
+
+static void DumpSprmsShort( short nLen )
+{
+ if( nLen <= 1 || xStrm->IsEof() ){
+ return;
+ }
+ while ( nLen > 1 ){
+ nLen = DumpSprmShort( nLen );
+ }
+}
+#endif
+*/
+
+
+
+
+static short DumpSprm( BYTE nVersion, SvStream& rSt, short nSprmsLen )
+{
+ long nSprmPos = rSt.Tell();
+ BYTE nDelta;
+
+ indent( *pOut, rSt );
+
+ BYTE x[512];
+ rSt.Read( x, 512 ); // Token und folgende lesen
+
+ USHORT nId = WW8GetSprmId( nVersion, x, &nDelta );
+
+ short nSprmL = WW8GetSprmSizeBrutto( nVersion, x, &nId );
+ short nSprmNL = WW8GetSprmSizeNetto( nVersion, x, &nId );
+
+ nSprmsLen -= nSprmL;
+ if( nSprmsLen < 0 )
+ *pOut << "!UEberhang um " << -nSprmsLen << " Bytes!" << endl1;
+
+ // Ausgabe: Token in Dez
+ if( 8 > nVersion )
+ *pOut << (USHORT)x[0];
+ else
+ *pOut << hex << nId << dec;
+ *pOut << '/' << nSprmL; // Laenge incl. alles in Dez
+ *pOut << '/' << nSprmNL; // Laenge excl Token in Dez
+
+
+ const SprmDumpInfo& rSprm = WW8GetSprmDumpInfo( nId );
+
+ *pOut << " = " << rSprm.pName << ' ';
+
+ rSt.Seek( nSprmPos + 1 + nDelta + WW8SprmDataOfs( nId ) );// gehe zum eigentlichen
+ // Inhalt
+ if( rSprm.pOutFnc )
+ rSprm.pOutFnc( rSt, nSprmNL ); // Rufe Ausgabefunktion
+ else
+ DumpItSmall( rSt, nSprmNL ); // oder Dumper
+ *pOut << endl1;
+
+ return nSprmsLen;
+}
+
+void DumpSprms( BYTE nVersion, SvStream& rSt, short nLen )
+{
+ if( nLen <= 1 || rSt.IsEof() ){
+ return;
+ }
+ begin( *pOut, rSt ) << "Sprms" << endl1;
+ while ( nLen > 1 )
+ {
+ nLen = DumpSprm( nVersion, rSt, nLen );
+ }
+ end( *pOut, rSt ) << "Sprms" << endl1;
+}
+
+// DumpMemSprm() dumpt ein 2-Byte-Sprm, der im WW8_PCD eingebaut ist
+static void DumpMemSprm( BYTE nVersion, INT16* pSprm )
+{
+ BYTE* p = (BYTE*)pSprm;
+ USHORT nId = WW8GetSprmId( nVersion, p, 0 );
+
+ *pOut << (USHORT)p[0]; // Ausgabe: Token in Dez
+ *pOut << '/' << WW8GetSprmSizeBrutto( nVersion, p, &nId ); // Laenge incl. alles in Dez
+ *pOut << '/' << WW8GetSprmSizeNetto( nVersion, p, &nId ); // Laenge excl Token in Dez
+
+ *pOut << " = " << WW8GetSprmDumpInfo( nId ).pName;
+
+ *pOut << " 0x" << hex2 << *(p + 1);
+}
+
+
+//-----------------------------------------
+// Hilfsroutinen: SEPX
+//-----------------------------------------
+void DumpSepx( BYTE nVersion, long nPos )
+{
+ USHORT nLen;
+ xStrm->Seek( nPos );
+ begin( *pOut, *xStrm ) << "Sepx, Len: ";
+ xStrm->Read( &nLen, 2 );
+ *pOut << nLen << endl1;
+
+ DumpSprms( nVersion, *xStrm, nLen );
+
+ end( *pOut, *xStrm ) << "Sepx" << endl1;
+}
+
+
+//-----------------------------------------
+// Hilfsroutinen: FKP.CHPX, FKP.PAPX
+//-----------------------------------------
+static void DumpPhe( WW8_PHE_Base& rPhe )
+{
+ if( rPhe.aBits1 == 0 && rPhe.nlMac == 0
+ && SVBT16ToShort( rPhe.dxaCol ) == 0
+ && SVBT16ToShort( rPhe.dyl ) == 0 )
+ {
+ *pOut << indent2 << " empty PHE" << endl1;
+ }
+ else
+ {
+ *pOut << begin2 << "PHE" << endl1;
+ *pOut << indent2 << "fSpare: " << ( rPhe.aBits1 & 0x1 );
+ *pOut << ", fUnk: " << (( rPhe.aBits1 >> 1 ) & 1 );
+ *pOut << ", fDiffLines: " << (( rPhe.aBits1 >> 2 ) & 1 );
+ *pOut << ", unused: " << (( rPhe.aBits1 >> 3 ) & 0x1F )
+ << " (" << (short)(( rPhe.aBits1 >> 2 ) & 0x3F ) +
+ (((short)rPhe.nlMac) << 8)
+ << ")";
+ *pOut << ", nLines: " << (short)rPhe.nlMac << ',' << endl1;
+ *pOut << indent2 << "dxaCol: " << (short)SVBT16ToShort( rPhe.dxaCol );
+ if( rPhe.aBits1 & 0x4 )
+ {
+ *pOut << ", total height: " << (USHORT)SVBT16ToShort( rPhe.dyl );
+ }
+ else
+ {
+ *pOut << ", height per line: " << (short)SVBT16ToShort( rPhe.dyl );
+ *pOut << ", total height: " << rPhe.nlMac * (short)SVBT16ToShort( rPhe.dyl );
+ }
+ *pOut << endl1;
+ *pOut << end2 << "PHE" << endl1;
+ }
+}
+
+//typedef enum{ CHP=0, PAP, SEP, PLC_END }ePlcT;
+static char* NameTab[PLCF_END+4]={ "chpx", "papx", "sepx", "head",
+ "FootnoteRef", "EndnoteRef",
+ "AnnotationRef" };
+
+void DumpFkp( BYTE nVersion, long nPos, short nItemSize, ePLCFT ePlc )
+{
+ char nElem;
+
+ xStrm->Seek( nPos+511 );
+ xStrm->Read( &nElem, 1 );
+
+
+ *pOut << 'D' << hex6 << nPos << dec2 << ' ' << indent1 << begin1 << "Fkp.";
+ *pOut << NameTab[ePlc] << ", ";
+ *pOut << (USHORT)nElem << " Elements" << endl1;
+
+ int i;
+ WW8_FC aF[2];
+ BYTE c;
+ long nStartOfs = nPos + ( nElem + 1 ) * 4; // bei dieser Pos faengt Offset-Array an
+ short nOfs;
+ WW8_PHE_Base aPhe;
+
+ for( i=0; i<nElem; i++ )
+ {
+ xStrm->Seek( nPos + i * 4 );
+ indent( *pOut, *xStrm );
+ xStrm->Read( aF, sizeof( aF ) ); // lese 2 FCs
+
+ xStrm->Seek( nStartOfs + i * nItemSize );
+ xStrm->Read( &c, 1 ); // lese Word Offset ( evtl. Teil von BX )
+ if( ePlc == PAP )
+ xStrm->Read( &aPhe, sizeof( aPhe ) );
+
+ nOfs= c * 2; // -> Byte Offset
+ xStrm->Seek( nPos + nOfs );
+ xStrm->Read( &c, 1 );
+
+ if( !c )
+ xStrm->Read( &c, 1 );
+
+ *pOut << "Fc: " << hex << aF[0] << ".." << aF[1];
+ *pOut << " Cp: " << pSBase->WW8Fc2Cp( aF[0] )
+ << ".." << pSBase->WW8Fc2Cp( aF[1] );
+ *pOut << " Offset: " << nOfs << dec2;
+ if ( nOfs )
+ {
+ switch ( ePlc )
+ {
+ case CHP:
+ *pOut << ", Len: " << (short)c << endl1;
+ DumpSprms( nVersion, *xStrm, (short)c );
+ break;
+
+ case PAP:
+ short nLen = c * 2; // So weit bis zum naechsten !
+
+ short nIStd;
+
+ WW8ReadINT16( *xStrm, nIStd );
+
+ *pOut << ", Len max: " << nLen << ", ID:" << nIStd << endl1;
+ DumpSprms( nVersion, *xStrm, nLen - 2 );
+ DumpPhe( aPhe );
+ break;
+ }
+ }
+ else
+ {
+ *pOut << dec2 << " No attribute" << endl1;
+ }
+
+ }
+ end( *pOut, *xStrm ) << "Fkp." << NameTab[ePlc] << endl1;
+}
+
+//-----------------------------------------
+// WW8_DOP ( Document Properties )
+//-----------------------------------------
+
+//!!! WW8LoadDop gibt's jetzt auch in WW8scan.cxx
+void DumpDop( WW8Fib& rFib )
+{
+ // nicht loeschen!
+ xTableStream->Seek( rFib.fcDop ); // diese Aktion dient lediglich dazu, die
+ // Positions-Ausgabe der folgenden Anweisung
+ // mit dem alten Dumper uebereinstimmen zu lassen.
+
+// *pOut << begin( *pOut, *xTableStream ) << "Dop, Size " << rFib.lcbDop << ", DefaultSize 84" << endl1;
+ begin( *pOut, *xTableStream ) << "Dop, Size " << rFib.lcbDop << ", DefaultSize 84" << endl1;
+
+ WW8Dop* pD = new WW8Dop( *xTableStream, rFib.nFib, rFib.fcDop, rFib.lcbDop );
+
+ *pOut << indent2 << "fFacingPages : " << pD->fFacingPages << endl1;
+ *pOut << indent2 << "fWidowControl : " << pD->fWidowControl << endl1;
+ *pOut << indent2 << "fPMHMainDoc : " << pD->fPMHMainDoc << endl1;
+ *pOut << indent2 << "grfSuppression : " << pD->grfSuppression << endl1;
+ *pOut << indent2 << "fpc : " << pD->fpc << endl1;
+ *pOut << indent2 << "grpfIhdt : " << pD->grpfIhdt << endl1;
+ *pOut << indent2 << "rncFtn : " << pD->rncFtn << endl1;
+ *pOut << indent2 << "nFtn : " << pD->nFtn << endl1;
+ *pOut << indent2 << "fOutlineDirtySave : " << pD->fOutlineDirtySave << endl1;
+ *pOut << indent2 << "fOnlyMacPics : " << pD->fOnlyMacPics << endl1;
+ *pOut << indent2 << "fOnlyWinPics : " << pD->fOnlyWinPics << endl1;
+ *pOut << indent2 << "fLabelDoc : " << pD->fLabelDoc << endl1;
+ *pOut << indent2 << "fHyphCapitals : " << pD->fHyphCapitals << endl1;
+ *pOut << indent2 << "fAutoHyphen : " << pD->fAutoHyphen << endl1;
+ *pOut << indent2 << "fFormNoFields : " << pD->fFormNoFields << endl1;
+ *pOut << indent2 << "fLinkStyles : " << pD->fLinkStyles << endl1;
+ *pOut << indent2 << "fRevMarking : " << pD->fRevMarking << endl1;
+ *pOut << indent2 << "fBackup : " << pD->fBackup << endl1;
+ *pOut << indent2 << "fExactCWords : " << pD->fExactCWords << endl1;
+ *pOut << indent2 << "fPagHidden : " << pD->fPagHidden << endl1;
+ *pOut << indent2 << "fPagResults : " << pD->fPagResults << endl1;
+ *pOut << indent2 << "fLockAtn : " << pD->fLockAtn << endl1;
+ *pOut << indent2 << "fMirrorMargins : " << pD->fMirrorMargins << endl1;
+ *pOut << indent2 << "fReadOnlyRecommended : " << pD->fReadOnlyRecommended << endl1;
+ *pOut << indent2 << "fDfltTrueType : " << pD->fDfltTrueType << endl1;
+ *pOut << indent2 << "fPagSuppressTopSpacing : " << pD->fPagSuppressTopSpacing << endl1;
+ *pOut << indent2 << "fProtEnabled : " << pD->fProtEnabled << endl1;
+ *pOut << indent2 << "fDispFormFldSel : " << pD->fDispFormFldSel << endl1;
+ *pOut << indent2 << "fRMView : " << pD->fRMView << endl1;
+ *pOut << indent2 << "fRMPrint : " << pD->fRMPrint << endl1;
+ *pOut << indent2 << "fWriteReservation : " << pD->fWriteReservation << endl1;
+ *pOut << indent2 << "fLockRev : " << pD->fLockRev << endl1;
+ *pOut << indent2 << "fEmbedFonts : " << pD->fEmbedFonts << endl1;
+ *pOut << indent2 << "copts_fNoTabForInd : " << pD->copts_fNoTabForInd << endl1;
+ *pOut << indent2 << "copts_fNoSpaceRaiseLower : " << pD->copts_fNoSpaceRaiseLower << endl1;
+ *pOut << indent2 << "copts_fSupressSpbfAfterPgBrk : " << pD->copts_fSupressSpbfAfterPgBrk << endl1;
+ *pOut << indent2 << "copts_fWrapTrailSpaces : " << pD->copts_fWrapTrailSpaces << endl1;
+ *pOut << indent2 << "copts_fMapPrintTextColor : " << pD->copts_fMapPrintTextColor << endl1;
+ *pOut << indent2 << "copts_fNoColumnBalance : " << pD->copts_fNoColumnBalance << endl1;
+ *pOut << indent2 << "copts_fConvMailMergeEsc : " << pD->copts_fConvMailMergeEsc << endl1;
+ *pOut << indent2 << "copts_fSupressTopSpacing : " << pD->copts_fSupressTopSpacing << endl1;
+ *pOut << indent2 << "copts_fOrigWordTableRules : " << pD->copts_fOrigWordTableRules << endl1;
+ *pOut << indent2 << "copts_fTransparentMetafiles : " << pD->copts_fTransparentMetafiles << endl1;
+ *pOut << indent2 << "copts_fShowBreaksInFrames : " << pD->copts_fShowBreaksInFrames << endl1;
+ *pOut << indent2 << "copts_fSwapBordersFacingPgs : " << pD->copts_fSwapBordersFacingPgs << endl1;
+ *pOut << indent2 << "dxaTab : " << pD->dxaTab << endl1;
+ *pOut << indent2 << "wSpare : " << pD->wSpare << endl1;
+ *pOut << indent2 << "dxaHotZ : " << pD->dxaHotZ << endl1;
+ *pOut << indent2 << "cConsecHypLim : " << pD->cConsecHypLim << endl1;
+ *pOut << indent2 << "wSpare2 : " << pD->wSpare2 << endl1;
+ *pOut << indent2 << "dttmCreated : " << pD->dttmCreated << endl1;
+ *pOut << indent2 << "dttmRevised : " << pD->dttmRevised << endl1;
+ *pOut << indent2 << "dttmLastPrint : " << pD->dttmLastPrint << endl1;
+ *pOut << indent2 << "nRevision : " << pD->nRevision << endl1;
+ *pOut << indent2 << "tmEdited : " << pD->tmEdited << endl1;
+ *pOut << indent2 << "cWords : " << pD->cWords << endl1;
+ *pOut << indent2 << "cCh : " << pD->cCh << endl1;
+ *pOut << indent2 << "cPg : " << pD->cPg << endl1;
+ *pOut << indent2 << "cParas : " << pD->cParas << endl1;
+ *pOut << indent2 << "rncEdn : " << pD->rncEdn << endl1;
+ *pOut << indent2 << "nEdn : " << pD->nEdn << endl1;
+ *pOut << indent2 << "epc : " << pD->epc << endl1;
+ *pOut << indent2 << "fPrintFormData : " << pD->fPrintFormData << endl1;
+ *pOut << indent2 << "fSaveFormData : " << pD->fSaveFormData << endl1;
+ *pOut << indent2 << "fShadeFormData : " << pD->fShadeFormData << endl1;
+ *pOut << indent2 << "fWCFtnEdn : " << pD->fWCFtnEdn << endl1;
+ *pOut << indent2 << "cLines : " << pD->cLines << endl1;
+ *pOut << indent2 << "cWordsFtnEnd : " << pD->cWordsFtnEnd << endl1;
+ *pOut << indent2 << "cChFtnEdn : " << pD->cChFtnEdn << endl1;
+ *pOut << indent2 << "cPgFtnEdn : " << pD->cPgFtnEdn << endl1;
+ *pOut << indent2 << "cParasFtnEdn : " << pD->cParasFtnEdn << endl1;
+ *pOut << indent2 << "cLinesFtnEdn : " << pD->cLinesFtnEdn << endl1;
+ *pOut << indent2 << "lKeyProtDoc : " << pD->lKeyProtDoc << endl1;
+ *pOut << indent2 << "wvkSaved : " << pD->wvkSaved << endl1;
+ *pOut << indent2 << "wScaleSaved : " << pD->wScaleSaved << endl1;
+ *pOut << indent2 << "zkSaved : " << pD->zkSaved << endl1;
+ *pOut << indent2 << "fNoTabForInd : " << pD->fNoTabForInd << endl1;
+ *pOut << indent2 << "fNoSpaceRaiseLower : " << pD->fNoSpaceRaiseLower << endl1;
+ *pOut << indent2 << "fSupressSpbfAfterPageBreak : " << pD->fSupressSpbfAfterPageBreak << endl1;
+ *pOut << indent2 << "fWrapTrailSpaces : " << pD->fWrapTrailSpaces << endl1;
+ *pOut << indent2 << "fMapPrintTextColor : " << pD->fMapPrintTextColor << endl1;
+ *pOut << indent2 << "fNoColumnBalance : " << pD->fNoColumnBalance << endl1;
+ *pOut << indent2 << "fConvMailMergeEsc : " << pD->fConvMailMergeEsc << endl1;
+ *pOut << indent2 << "fSupressTopSpacing : " << pD->fSupressTopSpacing << endl1;
+ *pOut << indent2 << "fOrigWordTableRules : " << pD->fOrigWordTableRules << endl1;
+ *pOut << indent2 << "fTransparentMetafiles : " << pD->fTransparentMetafiles << endl1;
+ *pOut << indent2 << "fShowBreaksInFrames : " << pD->fShowBreaksInFrames << endl1;
+ *pOut << indent2 << "fSwapBordersFacingPgs : " << pD->fSwapBordersFacingPgs << endl1;
+ *pOut << indent2 << "fSuppressTopSpacingMac5 : " << pD->fSuppressTopSpacingMac5 << endl1;
+ *pOut << indent2 << "fTruncDxaExpand : " << pD->fTruncDxaExpand << endl1;
+ *pOut << indent2 << "fPrintBodyBeforeHdr : " << pD->fPrintBodyBeforeHdr << endl1;
+ *pOut << indent2 << "fNoLeading : " << pD->fNoLeading << endl1;
+ *pOut << indent2 << "fMWSmallCaps : " << pD->fMWSmallCaps << endl1;
+
+ *pOut << indent2 << "adt : " << pD->adt << endl1;
+
+ *pOut << indent2 << "lvl : " << pD->lvl << endl1;
+ *pOut << indent2 << "fHtmlDoc : " << pD->fHtmlDoc << endl1;
+ *pOut << indent2 << "fSnapBorder : " << pD->fSnapBorder << endl1;
+ *pOut << indent2 << "fIncludeHeader : " << pD->fIncludeHeader << endl1;
+ *pOut << indent2 << "fIncludeFooter : " << pD->fIncludeFooter << endl1;
+ *pOut << indent2 << "fForcePageSizePag : " << pD->fForcePageSizePag << endl1;
+ *pOut << indent2 << "fMinFontSizePag : " << pD->fMinFontSizePag << endl1;
+
+ *pOut << indent2 << "fHaveVersions : " << pD->fHaveVersions << endl1;
+ *pOut << indent2 << "fAutoVersion : " << pD->fAutoVersion << endl1;
+ *pOut << indent2 << "cChWS : " << pD->cChWS << endl1;
+ *pOut << indent2 << "cChWSFtnEdn : " << pD->cChWSFtnEdn << endl1;
+ *pOut << indent2 << "grfDocEvents : " << pD->grfDocEvents << endl1;
+ *pOut << indent2 << "cDBC : " << pD->cDBC << endl1;
+ *pOut << indent2 << "cDBCFtnEdn : " << pD->cDBCFtnEdn << endl1;
+ *pOut << indent2 << "nfcFtnRef : " << pD->nfcFtnRef << endl1;
+ *pOut << indent2 << "nfcEdnRef : " << pD->nfcEdnRef << endl1;
+ *pOut << indent2 << "hpsZoonFontPag : " << pD->hpsZoonFontPag << endl1;
+ *pOut << indent2 << "dywDispPag : " << pD->dywDispPag << endl1;
+
+ end( *pOut, *xStrm ) << "Dop" << endl1 << endl1;
+
+ DELETEZ( pD );
+}
+
+//-----------------------------------------
+// PLCF.PCD ( Piece Table )
+//-----------------------------------------
+
+#ifdef __WW8_NEEDS_PACK
+# pragma pack(2)
+#endif
+
+struct WW8_PCD1
+{
+ BYTE aBits1;
+ BYTE aBits2;
+// INT16 fNoParaLast : 1; // when 1, means that piece contains no end of parag
+// BYTE fPaphNil : 1; // used internally by Word
+// BYTE fCopied : 1; // used internally by Word
+ // * int :5
+// BYTE aBits2; // fn int:8, used internally by Word
+ INT32 fc; // file offset of beginning of piece. The size of th
+ INT16 prm; // PRM contains either a single sprm or else an inde
+};
+
+#ifdef __WW8_NEEDS_PACK
+# pragma pack()
+#endif
+
+static void DumpPLCFPcd( BYTE nVersion, long nPos, long nLen )
+{
+ WW8PLCF aPlc( &xTableStream, nPos , nLen, 8 );
+
+ *pOut << 'D' << hex6 << nPos << dec2 << ' ' << indent1 << begin1;
+ *pOut << "Plcx.Pcd, Len: ";
+ *pOut << nLen << ", " << aPlc.GetIMax() << " Elements" << endl1;
+
+ int i;
+ for( i=0; i<aPlc.GetIMax(); i++ )
+ {
+ long start, ende;
+ void* pData;
+ aPlc.Get( start, ende, pData );
+ *pOut << indent2 << " Cp: " << hex6 << start << ".." << hex6 << ende;
+
+ WW8_PCD1* p = (WW8_PCD1*) pData;
+ *pOut << ", Bits: " << hex2 << (USHORT)p->aBits1 << ' '
+ << hex2 << (USHORT)p->aBits2;
+ *pOut << ", FcStart: ";
+ if( 8 <= nVersion )
+ {
+ BOOL bUniCode;
+ *pOut << hex6
+ << WW8PLCFx_PCD::TransformPieceAddress( p->fc, bUniCode );
+ if( bUniCode )
+ *pOut << " (UniCode)";
+ }
+ else
+ *pOut << hex6 << p->fc;
+
+ *pOut << dec << ", prm ";
+ if( p->prm & 0x1 ){
+ *pOut << "No: " << ( p->prm >> 1 );
+ }else if ( p-> prm == 0 ){
+ *pOut << "-";
+ }else{
+ *pOut << "(Sprm): ";
+ DumpMemSprm( nVersion, &(p->prm) );
+ }
+ *pOut << endl1;
+
+ aPlc++;
+ }
+ end( *pOut, *xTableStream ) << "Plcx.Pcd" << endl1;
+}
+
+static void DumpPcd( BYTE nVersion, long nPos, long nLen )
+{
+ long nLen1 = nLen;
+ xTableStream->Seek( nPos );
+
+ *pOut << 'D' << hex6 << nPos << dec2 << ' ' << indent1 << begin1;
+ *pOut << "PieceTable, Len: " << nLen << endl1;
+ if( sizeof( WW8_PCD1 ) != 8 )
+ *pOut << "!!! Alignment-Problem !!! sizeof( WW8_PCD1 ) != 8 !!! " << endl1;
+
+ long i = 0;
+ while (1){
+ BYTE c;
+ INT16 cb;
+
+ xTableStream->Read( &c, 1 );
+ nLen1 --;
+ if( c == 2 )
+ break;
+ xTableStream->Read( &cb, 2 );
+ nLen1 -= 2;
+ indent( *pOut, *xTableStream ) << "grpprl No. " << i << ", Len: " << cb << endl1;
+
+ long nPos = xTableStream->Tell();
+ DumpSprms( nVersion, *xTableStream, cb ); // Dumpe Sprms
+ xTableStream->Seek( nPos + cb ); // gehe hinter grpprl
+ nLen1 -= cb;
+ i++;
+// *pOut << " " << indent1 << "grpprl: " << cb << "Bytes ueberlesen";
+// *pOut << endl1;
+ }
+ INT32 nLen2;
+ xTableStream->Read( &nLen2, 4 );
+ nLen1 -= 4;
+ if( nLen1 != nLen2 )
+ *pOut << "!!! nLen1 ( " << nLen1 << " ) != nLen2 ( " << nLen2 << " ) !"
+ << endl1;
+
+ DumpPLCFPcd( nVersion, xTableStream->Tell(), nLen2 );
+
+ end( *pOut, *xTableStream ) << "PieceTable" << endl1 << endl1;
+}
+
+//-----------------------------------------
+// PLCF.CHPX, PLCF.PAPX, PLCF.SEPX
+//-----------------------------------------
+
+static void DumpPLCF( long nPos, long nLen, ePLCFT ePlc )
+{
+ static int __READONLY_DATA WW8FkpSizeTabVer6[ PLCF_END ] = {
+ 1, 7, 0 /*, 0, 0, 0*/ };
+ static int __READONLY_DATA PlcSizeTabVer6[ PLCF_END+4 ] = {
+ 2, 2, 12, 0, 2, 2, 20 };
+
+ static int __READONLY_DATA WW8FkpSizeTabVer8[ PLCF_END ] = {
+ 1, 13, 0 /*, 0, 0, 0*/ };
+ static int __READONLY_DATA PlcSizeTabVer8[ PLCF_END+4 ] = {
+ 4, 4, 12, 0, 2, 2, 30 };
+
+ const int* pFkpSizeTab;
+ const int* pPlcSizeTab;
+
+ switch( pWwFib->nVersion )
+ {
+ case 6:
+ case 7: pFkpSizeTab = WW8FkpSizeTabVer6;
+ pPlcSizeTab = PlcSizeTabVer6;
+ break;
+ case 8: pFkpSizeTab = WW8FkpSizeTabVer8;
+ pPlcSizeTab = PlcSizeTabVer8;
+ break;
+ default:// Programm-Fehler!
+ /*
+ ACHTUNG: im FILTER nicht "FALSE" sondern "!this()" schreiben,
+ da sonst Warning unter OS/2
+ */
+ ASSERT( FALSE, "Es wurde vergessen, nVersion zu kodieren!" );
+ return;
+ }
+
+// SvStream* pSt = (SEP == ePlc) ? &xTableStream : &xStrm;
+ SvStream* pSt = &xTableStream;
+
+ WW8PLCF aPlc( pSt, nPos, nLen, pPlcSizeTab[ ePlc ] );
+
+ *pOut << 'T' << hex6 << nPos << dec2 << ' ' << indent1 << begin1;
+ *pOut << "Plcx." << NameTab[ePlc] << ", Len: ";
+ *pOut << nLen << ", " << aPlc.GetIMax() << " Elements" << endl1;
+
+ int i;
+ for( i=0; i<aPlc.GetIMax(); i++ )
+ {
+ long start, ende;
+ void* pData;
+ aPlc.Get( start, ende, pData );
+ *pOut << indent2 << "Plcx." << NameTab[ePlc];
+ switch( ePlc ){
+ case SEP: {
+ *pOut << " Cp: " << hex << start << ".." << ende ;
+ long nPo = *((long*)((char*)pData+2));
+ if( nPo == 0xffffffffL )
+ {
+ *pOut << " Empty" << endl1;
+ }
+ else
+ {
+ *pOut << ", Sepx-Position: " << nPo << dec << endl1;
+ DumpSepx( pWwFib->nVersion, nPo );
+ }
+ }
+ break;
+ case CHP:
+ case PAP: {
+ *pOut << " Fc: " << hex << start << ".." << ende ;
+ long nPo;
+ switch( pWwFib->nVersion )
+ {
+ case 6:
+ case 7: nPo = *((USHORT*)pData);
+ break;
+ case 8: nPo = *((UINT32*)pData);
+ break;
+ default:// Programm-Fehler!
+ /*
+ ACHTUNG: im FILTER nicht "FALSE" sondern "!this()" schreiben,
+ da sonst Warning unter OS/2
+ */
+ ASSERT( FALSE, "Es wurde vergessen, nVersion zu kodieren!" );
+ return;
+ }
+
+ nPo <<= 9;
+ *pOut << ", Offset: " << nPo << dec << endl1;
+ DumpFkp( pWwFib->nVersion, nPo, pFkpSizeTab[ ePlc ], ePlc );
+ }
+ break;
+
+ case PLCF_END+0:
+ *pOut << " Cp: " << hex << start << ".." << ende << dec << endl1;
+ break;
+
+ case PLCF_END+1:
+ case PLCF_END+2:
+ {
+ *pOut << " Cp: " << hex << start;
+ USHORT nFlags= *((USHORT*)pData);
+ *pOut << ", Flags: 0x" << nFlags << dec << endl1;
+ }
+ break;
+
+ case PLCF_END+3:
+ {
+ *pOut << " Cp: " << hex << start << ", Initial: \"";
+ const char* p = (char*)pData;
+ BYTE n = *p++;
+ while( n-- )
+ {
+ if( 8 == pWwFib->nVersion )
+ ++p;
+ *pOut << *p++;
+ }
+
+ long nBkmkId;
+ USHORT nId;
+ if( 8 == pWwFib->nVersion )
+ {
+ nId = SVBT16ToShort( ((WW8_ATRD*)pData)->ibst );
+ nBkmkId = SVBT32ToLong( ((WW8_ATRD*)pData)->ITagBkmk );
+ }
+ else
+ {
+ nId = SVBT16ToShort( ((WW67_ATRD*)pData )->ibst );
+ nBkmkId = SVBT32ToLong( ((WW67_ATRD*)pData )->ITagBkmk );
+ }
+
+ *pOut << "\", AutorId: " << hex << nId
+ << " BkmkId: " << nBkmkId << dec <<endl1;
+ }
+ break;
+
+ }
+ aPlc++;
+ }
+ end( *pOut, *xTableStream ) << "Plcx." << NameTab[ePlc] << endl1 << endl1;
+}
+
+//-----------------------------------------------------
+// PLCF.CHPX, PLCF.PAPX unter Benutzung von PLCF_Fkp
+//-----------------------------------------------------
+#if 0
+static void DumpPLCF2( long nPos, long nLen, ePlcT ePlc )
+{
+ *pOut << 'T' << hex6 << nPos << dec2 << ' ' << indent1 << begin1;
+ *pOut << "Plcx." << NameTab[ePlc] << endl1;
+
+ PLCF* pPLCF;
+ switch( ePlc ){
+ case SEP: pPLCF = new PLCF_Sepx( nPos, nLen, ePlc );
+ break;
+ default: pPLCF = new PLCF_Fkp( nPos, nLen, ePlc );
+ break;
+ }
+
+ while(1){
+ long nSt, nE;
+ short nL;
+
+ WW8_CP nP = pPLCF->WhereNext();
+ pPLCF->SeekNextSprms( nSt, nE, nL ); // wo sind naechste Sprms
+
+ if ( nSt == LONG_MAX )
+ break; // fertig
+
+ *pOut << " " << indent1 << "Cp: " << hex << nP <<" Cp: " << nSt << ".." << nE << dec;
+
+ if( nL ){
+ *pOut << ", Len: " << nL << endl1;
+ DumpSprms( *xStrm, nL );
+ }else{
+ *pOut << ", No Attribute" << endl1;
+ }
+ }
+ end( *pOut, *xStrm ) << "Plcx." << NameTab[ePlc] << endl1 << endl1;
+ DELETEZ( pPLCF );
+}
+#endif
+//-----------------------------------------
+// Text ohne Attribute
+//-----------------------------------------
+
+static void DumpPlainText1( WW8_CP nStartCp, long nTextLen )
+{
+ long l;
+ BYTE c;
+
+
+ xStrm->Seek( pSBase->WW8Cp2Fc( nStartCp ) );
+
+ for (l=0; l<nTextLen; l++)
+ {
+ xStrm->Read( &c, sizeof(c) );
+ if ( DumpChar( c ) )
+ {
+ *pOut << endl1;
+ indent( *pOut, *xStrm );
+ }
+// DumpChar( c );
+ }
+}
+
+void DumpShortPlainText( WW8_CP nStartCp, long nTextLen, char* pName )
+{
+ indent( *pOut, *xStrm ) << pName << " PlainText: Cp: "
+ << hex << nStartCp
+ << ".." << nStartCp + nTextLen << dec
+ << " :\"";
+ DumpPlainText1( nStartCp, nTextLen );
+ *pOut << "\"" << endl1;
+}
+
+void DumpPlainText( WW8_CP nStartCp, long nTextLen, char* pName )
+{
+ begin( *pOut, *xStrm ) << pName << " Text: Cp: " << hex << nStartCp
+ << ".." << nStartCp + nTextLen << dec
+ << endl1;
+ indent( *pOut, *xStrm );
+ DumpPlainText1( nStartCp, nTextLen );
+ *pOut << endl1;
+ end( *pOut, *xStrm ) << pName << " Text" << endl1;
+}
+
+//-----------------------------------------
+// Text mit Attributen
+//-----------------------------------------
+
+BOOL DumpChar( BYTE c )
+{
+ if ( ( c >= 32 ) && ( c <= 127 ) ){
+ *pOut << c;
+ return FALSE;
+ }else{
+ switch (c){
+ case 0xe4: // dt. Umlaute
+ case 0xf6:
+ case 0xfc:
+ case 0xdf:
+ case 0xc4:
+ case 0xd6:
+ case 0xdc: *pOut << c; return FALSE;
+
+ case 0xd: *pOut << "<CR>";
+ return TRUE;
+ case 0x7:
+ case 0xc: *pOut << "<0x" << hex2 << (USHORT)c << dec2 << '>';
+ return TRUE;
+ default: *pOut << "<0x" << hex2 << (USHORT)c << dec2 << '>';
+ return FALSE;
+ }
+ }
+}
+
+#if 0
+void DumpText2( long nTextStart, long nTextLen, long nPlcPos, long nPlcLen, ePlcT ePlc )
+{
+ long l;
+ BYTE c;
+
+ PLCF aPLCF( nPlcPos, nPlcLen, ePlc );
+ long nNxStart = aPLCF.WhereNext();
+ long nNxEnd = LONG_MAX;
+
+ xStrm->Seek( nTextStart );
+
+ begin( *pOut, *xStrm ) << "Text" << endl1;
+ indent( *pOut, xStrm );
+ for (l=0; l<nTextLen; l++){
+
+ if( nTextStart + l == nNxStart ){
+ long nOld = xStrm->Tell();
+ short nL;
+
+ aPLCF.SeekNext( nNxStart, nNxEnd, nL ); // wo ist naechstes Attribut
+ if( nL ){
+ *pOut << '<';
+ DumpSprmsShort( nL );
+ *pOut << '>';
+ }else{
+ *pOut << "<No Attribute>";
+ }
+
+ nNxStart = aPLCF.WhereNext();
+ xStrm->Seek( nOld );
+ }
+ if( nTextStart + l == nNxEnd )
+ *pOut << "<End Attribute>";
+
+ xStrm->Read( &c, sizeof(c) );
+ if ( DumpChar( c ) )
+ {
+ *pOut << endl1;
+ indent( *pOut, xStrm );
+ }
+ }
+ *pOut << endl1;
+ end( *pOut, *xStrm ) << "Text" << endl1 << endl1;
+}
+#endif
+#if 0
+long DumpTxtAttr( WW8PLCFMan& rMan, BOOL& bNl )
+{
+ long nPos, nNext, nOld = xStrm->Tell();
+ short nId;
+ long nL;
+ BYTE nFlags;
+
+ BOOL b = rMan.SeekNext( nPos, nL, nId, nFlags ); // gehe zu Attribut
+
+ if( nFlags & MAN_MASK_NEW_SEP ) // neue Section
+ *pOut << "<Section Break>";
+
+/* if( nFlags & MAN_MASK_NEW_PAP ) // neuer Absatz
+ *pOut << "<ParaStyle:" << pPLCFMan->GetColl( MAN_NUM_PARACOLL ) << '>' << endl1;
+*/
+ if( nId != -1 && nId != -11 ){ // leere Attrs ignorieren
+
+ if ( bNl )
+ *pOut << hex6 << nOld << ' ' << indent1;
+ bNl = FALSE;
+
+ if( nId < 256 ){
+ if( b ){ // WW-Attribute
+ if( nL >= 0 ){ // Attr-Anfang
+ xStrm->Seek( nPos );
+ DumpSprmShort( (short)nL );
+ }else {
+ *pOut << "<A" << nId << " No Attr>";
+ }
+ }else{ // Attr-Ende
+ *pOut << "<End A" << nId << '>';
+ }
+ }else if( nId < 260 ){
+ DumpFtnShort( nId, nPos, nL ); // Footnotes u.ae.
+ }else{
+ *pOut << "<Field>";
+ }
+ }
+
+ nNext = rMan.WhereNext();
+ xStrm->Seek( nOld );
+ return nNext;
+}
+
+void DumpText( WW8_CP nStartCp, long nTextLen, WW8ScannerBase* pBase, short nType, char* pName )
+{
+ pPLCFMan = new WW8PLCFMan( pBase, nType );
+
+ long l;
+ BYTE c;
+
+ long nNext = pPLCFMan->WhereNext();
+
+ xStrm->Seek( WW8Cp2Fc( nStartCpp, pWwFib->fcMin, 8 != pWwFib->nVersion ) );
+
+ begin( *pOut, *xStrm ) << pName << "Text" << endl1;
+ BOOL bNl = TRUE;
+ for (l=nStartCp; l<nStartCp+nTextLen; l++){
+
+ while( l >= nNext )
+ nNext = DumpTxtAttr( *pPLCFMan, bNl );
+
+ if ( bNl ) indent( *pOut, xStrm );
+
+ xStrm->Read( &c, sizeof(c) );
+ bNl = DumpChar( c );
+ if ( bNl ){
+ *pOut << "<ParaStyle:" << pPLCFMan->GetColl( MAN_NUM_PARACOLL ) << '>' << endl1;
+ }
+ }
+
+ while( l >= nNext )
+ nNext = DumpTxtAttr( *pPLCFMan, bNl );
+
+ if( !bNl )
+ *pOut << endl1;
+
+ end( *pOut, *xStrm ) << pName << "Text" << endl1;
+
+ DELETEZ( pPLCFMan );
+}
+#endif
+
+//-----------------------------------------
+// Header / Footer
+//-----------------------------------------
+
+static void DumpPlcText( WW8_FC nPos, long nLen, long nOfs,
+ char* pName, WW8ScannerBase* pBase,
+ long nStruct = 0, FNDumpData pOutFnc = 0 )
+{
+ if( !nLen ) return;
+
+ WW8PLCF aPlc( &xTableStream, nPos , nLen, nStruct );
+
+ *pOut << 'T' << hex6 << nPos << dec2 << ' ' << indent1 << begin1;
+ *pOut << "Plc." << pName << " Text, Len: ";
+ *pOut << nLen << ", " << aPlc.GetIMax() << " Elements" << endl1;
+
+ int i;
+ for( i=0; i < aPlc.GetIMax(); ++i )
+ {
+ WW8_CP start, ende;
+ WW8_FC start2, ende2;
+ void* pData;
+ aPlc.Get( start, ende, pData );
+ start2 = pSBase->WW8Cp2Fc(start + nOfs );
+ ende2 = pSBase->WW8Cp2Fc(ende + nOfs );
+
+ *pOut << " " << indent1 << "Plcx." << pName;
+ *pOut << " Cp: " << hex << start << ".." << ende;
+ *pOut << " entspricht Fc: " << start2 << ".." << ende2 << dec << endl1;
+
+ DumpPlainText( nOfs + start, ende - start - 1, pName );
+
+ if( pOutFnc )
+ (*pOutFnc)( pData );
+ aPlc++;
+ }
+ end( *pOut, *xTableStream ) << "Plcx." << pName << endl1 << endl1;
+}
+
+void DumpHeader( WW8ScannerBase* pBase )
+{
+ DumpPlcText( pWwFib->fcPlcfhdd,
+ pWwFib->lcbPlcfhdd,
+ pWwFib->ccpText + pWwFib->ccpFtn,
+ "Header/Footer", pBase );
+}
+
+static void DumpFootnotes( WW8ScannerBase* pBase )
+{
+ if( !pWwFib->lcbPlcffndRef ){
+ *pOut << "No Footnotes" << endl1 << endl1;
+ return;
+ }
+
+ DumpPLCF( pWwFib->fcPlcffndRef,
+ pWwFib->lcbPlcffndRef,
+ ePLCFT(/*FNR*/PLCF_END + 1) );
+ DumpPlcText( pWwFib->fcPlcffndTxt,
+ pWwFib->lcbPlcffndTxt,
+ pWwFib->ccpText,
+ "FootNote" , pBase );
+}
+
+static void DumpEndnotes( WW8ScannerBase* pBase )
+{
+ if( !pWwFib->lcbPlcfendRef ){
+ *pOut << "No Endnotes" << endl1 << endl1;
+ return;
+ }
+
+ DumpPLCF( pWwFib->fcPlcfendRef,
+ pWwFib->lcbPlcfendRef,
+ ePLCFT(/*ENR*/PLCF_END + 2) );
+ DumpPlcText( pWwFib->fcPlcfendTxt,
+ pWwFib->lcbPlcfendTxt,
+ pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr + pWwFib->ccpAtn,
+ "EndNote", pBase );
+}
+
+static void DumpAnnotations( WW8ScannerBase* pBase )
+{
+ if( !pWwFib->lcbPlcfandRef ){
+ *pOut << "No Annotations" << endl1 << endl1;
+ return;
+ }
+
+ DumpPLCF( pWwFib->fcPlcfandRef,
+ pWwFib->lcbPlcfandRef,
+ ePLCFT(/*ENR*/PLCF_END + 3) );
+ DumpPlcText( pWwFib->fcPlcfandTxt,
+ pWwFib->lcbPlcfandTxt,
+ pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr,
+ "Annotation", pBase );
+}
+
+void DumpTxtStoryEntry( void* pData )
+{
+ if( 8 == pWwFib->nVersion )
+ {
+ long* p = (long*)pData;
+ begin( *pOut, *xStrm )
+ << "TextboxStory" << hex << endl1;
+
+ *pOut << " " << indent1 << "cTxbx/iNextReuse: 0x" << *p++;
+ *pOut << " cReusable: 0x" << *p++;
+ short* ps = (short*)p;
+ *pOut << " fReusable: 0x" << *ps++ << endl1;
+ p = (long*)ps;
+ ++p; // reserved
+ *pOut << " " << indent1 << "lid: 0x" << *p++;
+ *pOut << " txidUndo: 0x" << *p++ << dec << endl1;
+
+ end( *pOut, *xStrm ) << "TextboxStory" << endl1 << endl1;
+ }
+}
+
+static void DumpTextBoxs( WW8ScannerBase* pBase )
+{
+ if( pWwFib->lcbPlcftxbxTxt )
+ {
+ DumpPlcText( pWwFib->fcPlcftxbxTxt,
+ pWwFib->lcbPlcftxbxTxt,
+ pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr + pWwFib->ccpAtn + pWwFib->ccpEdn,
+ "TextBoxes", pBase,
+ 8 == pWwFib->nVersion ? 22 : 0, &DumpTxtStoryEntry );
+ }
+ else
+ *pOut << "No Textboxes" << endl1 << endl1;
+
+ if( pWwFib->lcbPlcfHdrtxbxTxt )
+ DumpPlcText( pWwFib->fcPlcfHdrtxbxTxt,
+ pWwFib->lcbPlcfHdrtxbxTxt,
+ pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr + pWwFib->ccpAtn + pWwFib->ccpEdn
+ + pWwFib->ccpTxbx,
+ "HeaderTextBoxes", pBase,
+ 8 == pWwFib->nVersion ? 22 : 0, &DumpTxtStoryEntry );
+ else
+ *pOut << "No HeaderTextboxes" << endl1 << endl1;
+
+}
+
+
+static void DumpDrawObjects( const char* pNm, long nStart, long nLen,
+ long nOffset )
+{
+ if( nStart && nLen )
+ {
+ WW8PLCFspecial aPLCF( &xTableStream, nStart, nLen,
+ 8 == pWwFib->nVersion ? 26 : 6 );
+ *pOut << 'T' << hex6 << nStart << dec2 << ' ' << indent1 << begin1
+ << pNm << ", Len: " << nLen
+ << ", " << aPLCF.GetIMax() << " Elements" << endl1;
+
+ for( USHORT i = 0; i < aPLCF.GetIMax(); ++i )
+ {
+ long nCp = aPLCF.GetPos( i );
+ if( nCp >= LONG_MAX )
+ break;
+
+ *pOut << indent2 << i << ".Cp: 0x" << hex << nCp + nOffset;
+ long* pFSPA = (long*)aPLCF.GetData( i );
+ if( 8 == pWwFib->nVersion )
+ {
+ *pOut << " ShapeId: 0x" << *pFSPA++;
+ *pOut << " left: " << dec << *pFSPA++;
+ *pOut << " top: " << *pFSPA++;
+ *pOut << " right: " << *pFSPA++;
+ *pOut << " bottom: " << *pFSPA++;
+ USHORT* pU = (USHORT*)pFSPA;
+ *pOut << " flags: 0x" << hex << *pU++;
+ pFSPA = (long*)pU;
+ *pOut << " xTxbx: " << dec << *pFSPA;
+ }
+ else
+ {
+ *pOut << " FC of DO: 0x" << *pFSPA++;
+ *pOut << " ctcbx: " << dec << *(USHORT*)pFSPA;
+ }
+
+ *pOut << endl1;
+ }
+ *pOut << end1;
+ }
+ else
+ *pOut << "No ";
+ *pOut << pNm << endl1 << endl1;
+}
+
+static void DumpTxtboxBrks( const char* pNm, long nStart, long nLen,
+ long nOffset )
+{
+ if( nStart && nLen )
+ {
+ WW8PLCFspecial aPLCF( &xTableStream, nStart, nLen, 6 );
+ *pOut << 'T' << hex6 << nStart << dec2 << ' ' << indent1 << begin1
+ << pNm << ", Len: " << nLen
+ << ", " << aPLCF.GetIMax() << " Elements" << endl1;
+
+ for( USHORT i = 0; i < aPLCF.GetIMax(); ++i )
+ {
+ long nCp = aPLCF.GetPos( i );
+ if( nCp >= LONG_MAX )
+ break;
+
+ USHORT* pBKD = (USHORT*)aPLCF.GetData( i );
+ *pOut << indent2 << i << ".Cp: 0x" << hex << nCp + nOffset
+ << " itxbxs: 0x" << *pBKD++;
+ *pOut << " dcpDepend: 0x" << *pBKD++;
+ *pOut << " flags: 0x" << hex << *pBKD << dec << endl1;
+ }
+ *pOut << end2;
+ }
+ else
+ *pOut << "No ";
+ *pOut << pNm << endl1 << endl1;
+}
+
+static void DumpFdoa( WW8ScannerBase* pBase )
+{
+ long nOffset = pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr + pWwFib->ccpAtn + pWwFib->ccpEdn;
+
+ if( 8 == pWwFib->nVersion )
+ {
+ DumpDrawObjects( "DrawObjects in Maintext",
+ pWwFib->fcPlcfspaMom, pWwFib->lcbPlcfspaMom,
+ /*nOffset*/0 );
+ // PLCF fuer TextBox-Break-Deskriptoren im Maintext
+ DumpTxtboxBrks( "TextBox-Break-Desk. im Maintext",
+ pWwFib->fcPlcftxbxBkd, pWwFib->lcbPlcftxbxBkd,
+ nOffset );
+ }
+ else
+ DumpDrawObjects( "DrawObjects in Maintext",
+ pWwFib->fcPlcfdoaMom, pWwFib->lcbPlcfdoaMom,
+ /*nOffset*/0 );
+
+ nOffset += pWwFib->ccpHdrTxbx;
+
+ if( 8 == pWwFib->nVersion )
+ {
+ DumpDrawObjects( "DrawObjects in Head/Foot",
+ pWwFib->fcPlcfspaHdr, pWwFib->lcbPlcfspaHdr,
+ /*nOffset*/0 );
+ // PLCF fuer TextBox-Break-Deskriptoren im Header-/Footer-Bereich
+ DumpTxtboxBrks( "TextBox-Break-Desk. im Head/Foot",
+ pWwFib->fcPlcfHdrtxbxBkd, pWwFib->lcbPlcfHdrtxbxBkd,
+ nOffset );
+ }
+ else
+ DumpDrawObjects( "DrawObjects in Head/Foot",
+ pWwFib->fcPlcfdoaHdr, pWwFib->lcbPlcfdoaHdr,
+ /*nOffset*/0 );
+}
+
+BOOL ReadEsherRec( SvStream& rStrm, UINT8& rVer, UINT16& rInst,
+ UINT16& rFbt, UINT32& rLength )
+{
+ UINT16 aBits;
+ if( !WW8ReadUINT16( rStrm, aBits ) ) return FALSE;
+ rVer = aBits & 0x000F;
+ rInst = (aBits & 0xFFF0) >> 4;
+ //----------------------------------------------
+ if( !WW8ReadUINT16( rStrm, rFbt ) ) return FALSE;
+ //----------------------------------------------
+ return WW8ReadUINT32( rStrm, rLength );
+}
+
+const char* _GetShapeTypeNm( UINT16 nId )
+{
+ const char* aNmArr[ 202 + 2 + 1 ] = {
+/* 0*/ "NotPrimitive","Rectangle","RoundRectangle","Ellipse","Diamond","IsocelesTriangle","RightTriangle","Parallelogram","Trapezoid","Hexagon",
+/* 10*/ "Octagon","Plus","Star","Arrow","ThickArrow","HomePlate","Cube","Balloon","Seal","Arc",
+/* 20*/ "Line","Plaque","Can","Donut","TextSimple","TextOctagon","TextHexagon","TextCurve","TextWave","TextRing",
+/* 30*/ "TextOnCurve","TextOnRing","StraightConnector1","BentConnector2","BentConnector3","BentConnector4","BentConnector5","CurvedConnector2","CurvedConnector3","CurvedConnector4",
+/* 40*/ "CurvedConnector5","Callout1","Callout2","Callout3","AccentCallout1","AccentCallout2","AccentCallout3","BorderCallout1","BorderCallout2","BorderCallout3",
+/* 50*/ "AccentBorderCallout1","AccentBorderCallout2","AccentBorderCallout3","Ribbon","Ribbon2","Chevron","Pentagon","NoSmoking","Seal8","Seal16",
+/* 60*/ "Seal32","WedgeRectCallout","WedgeRRectCallout","WedgeEllipseCallout","Wave","FoldedCorner","LeftArrow","DownArrow","UpArrow","LeftRightArrow",
+/* 70*/ "UpDownArrow","IrregularSeal1","IrregularSeal2","LightningBolt","Heart","PictureFrame","QuadArrow","LeftArrowCallout","RightArrowCallout","UpArrowCallout",
+/* 80*/ "DownArrowCallout","LeftRightArrowCallout","UpDownArrowCallout","QuadArrowCallout","Bevel","LeftBracket","RightBracket","LeftBrace","RightBrace","LeftUpArrow",
+/* 90*/ "BentUpArrow","BentArrow","Seal24","StripedRightArrow","NotchedRightArrow","BlockArc","SmileyFace","VerticalScroll","HorizontalScroll","CircularArrow",
+/* 100*/ "NotchedCircularArrow","UturnArrow","CurvedRightArrow","CurvedLeftArrow","CurvedUpArrow","CurvedDownArrow","CloudCallout","EllipseRibbon","EllipseRibbon2","FlowChartProcess",
+/* 110*/ "FlowChartDecision","FlowChartInputOutput","FlowChartPredefinedProcess","FlowChartInternalStorage","FlowChartDocument","FlowChartMultidocument","FlowChartTerminator","FlowChartPreparation","FlowChartManualInput","FlowChartManualOperation",
+/* 120*/ "FlowChartConnector","FlowChartPunchedCard","FlowChartPunchedTape","FlowChartSummingJunction","FlowChartOr","FlowChartCollate","FlowChartSort","FlowChartExtract","FlowChartMerge","FlowChartOfflineStorage",
+/* 130*/ "FlowChartOnlineStorage","FlowChartMagneticTape","FlowChartMagneticDisk","FlowChartMagneticDrum","FlowChartDisplay","FlowChartDelay","TextPlainText","TextStop","TextTriangle","TextTriangleInverted",
+/* 140*/ "TextChevron","TextChevronInverted","TextRingInside","TextRingOutside","TextArchUpCurve","TextArchDownCurve","TextCircleCurve","TextButtonCurve","TextArchUpPour","TextArchDownPour",
+/* 150*/ "TextCirclePour","TextButtonPour","TextCurveUp","TextCurveDown","TextCascadeUp","TextCascadeDown","TextWave1","TextWave2","TextWave3","TextWave4",
+/* 160*/ "TextInflate","TextDeflate","TextInflateBottom","TextDeflateBottom","TextInflateTop","TextDeflateTop","TextDeflateInflate","TextDeflateInflateDeflate","TextFadeRight","TextFadeLeft",
+/* 170*/ "TextFadeUp","TextFadeDown","TextSlantUp","TextSlantDown","TextCanUp","TextCanDown","FlowChartAlternateProcess","FlowChartOffpageConnector","Callout90","AccentCallout90",
+/* 180*/ "BorderCallout90","AccentBorderCallout90","LeftRightUpArrow","Sun","Moon","BracketPair","BracePair","Seal4","DoubleWave","ActionButtonBlank",
+/* 190*/ "ActionButtonHome","ActionButtonHelp","ActionButtonInformation","ActionButtonForwardNext","ActionButtonBackPrevious","ActionButtonEnd","ActionButtonBeginning","ActionButtonReturn","ActionButtonDocument","ActionButtonSound",
+/* 200*/ "ActionButtonMovie","HostControl","TextBox","Nil", "???"
+ };
+ if( 203 < nId )
+ nId = 204;
+ return aNmArr[ nId ];
+}
+
+void DumpEscherProp( UINT16 nId, BOOL bBid, BOOL bComplex, UINT32 nOp,
+ UINT32& rStreamOffset )
+{
+ const char* pRecNm = 0;
+ switch( nId )
+ {
+ case 4: pRecNm = "DFF_Prop_Rotation"; break;
+// Protection
+ case 119: pRecNm = "DFF_Prop_LockRotation"; break;
+ case 120: pRecNm = "DFF_Prop_LockAspectRatio"; break;
+ case 121: pRecNm = "DFF_Prop_LockPosition"; break;
+ case 122: pRecNm = "DFF_Prop_LockAgainstSelect"; break;
+ case 123: pRecNm = "DFF_Prop_LockCropping"; break;
+ case 124: pRecNm = "DFF_Prop_LockVertices"; break;
+ case 125: pRecNm = "DFF_Prop_LockText"; break;
+ case 126: pRecNm = "DFF_Prop_LockAdjustHandles"; break;
+ case 127: pRecNm = "DFF_Prop_LockAgainstGrouping"; break;
+// Text
+ case 128: pRecNm = "DFF_Prop_lTxid"; break;
+ case 129: pRecNm = "DFF_Prop_dxTextLeft"; break;
+ case 130: pRecNm = "DFF_Prop_dyTextTop"; break;
+ case 131: pRecNm = "DFF_Prop_dxTextRight"; break;
+ case 132: pRecNm = "DFF_Prop_dyTextBottom"; break;
+ case 133: pRecNm = "DFF_Prop_WrapText"; break;
+ case 134: pRecNm = "DFF_Prop_scaleText"; break;
+ case 135: pRecNm = "DFF_Prop_anchorText"; break;
+ case 136: pRecNm = "DFF_Prop_txflTextFlow"; break;
+ case 137: pRecNm = "DFF_Prop_cdirFont"; break;
+ case 138: pRecNm = "DFF_Prop_hspNext"; break;
+ case 139: pRecNm = "DFF_Prop_txdir"; break;
+ case 187: pRecNm = "DFF_Prop_SelectText"; break;
+ case 188: pRecNm = "DFF_Prop_AutoTextMargin"; break;
+ case 189: pRecNm = "DFF_Prop_RotateText"; break;
+ case 190: pRecNm = "DFF_Prop_FitShapeToText"; break;
+ case 191: pRecNm = "DFF_Prop_FitTextToShape"; break;
+// GeoText
+ case 192: pRecNm = "DFF_Prop_gtextUNICODE"; break;
+ case 193: pRecNm = "DFF_Prop_gtextRTF"; break;
+ case 194: pRecNm = "DFF_Prop_gtextAlign"; break;
+ case 195: pRecNm = "DFF_Prop_gtextSize"; break;
+ case 196: pRecNm = "DFF_Prop_gtextSpacing"; break;
+ case 197: pRecNm = "DFF_Prop_gtextFont"; break;
+ case 240: pRecNm = "DFF_Prop_gtextFReverseRows"; break;
+ case 241: pRecNm = "DFF_Prop_fGtext"; break;
+ case 242: pRecNm = "DFF_Prop_gtextFVertical"; break;
+ case 243: pRecNm = "DFF_Prop_gtextFKern"; break;
+ case 244: pRecNm = "DFF_Prop_gtextFTight"; break;
+ case 245: pRecNm = "DFF_Prop_gtextFStretch"; break;
+ case 246: pRecNm = "DFF_Prop_gtextFShrinkFit"; break;
+ case 247: pRecNm = "DFF_Prop_gtextFBestFit"; break;
+ case 248: pRecNm = "DFF_Prop_gtextFNormalize"; break;
+ case 249: pRecNm = "DFF_Prop_gtextFDxMeasure"; break;
+ case 250: pRecNm = "DFF_Prop_gtextFBold"; break;
+ case 251: pRecNm = "DFF_Prop_gtextFItalic"; break;
+ case 252: pRecNm = "DFF_Prop_gtextFUnderline"; break;
+ case 253: pRecNm = "DFF_Prop_gtextFShadow"; break;
+ case 254: pRecNm = "DFF_Prop_gtextFSmallcaps"; break;
+ case 255: pRecNm = "DFF_Prop_gtextFStrikethrough"; break;
+// Blip
+ case 256: pRecNm = "DFF_Prop_cropFromTop"; break;
+ case 257: pRecNm = "DFF_Prop_cropFromBottom"; break;
+ case 258: pRecNm = "DFF_Prop_cropFromLeft"; break;
+ case 259: pRecNm = "DFF_Prop_cropFromRight"; break;
+ case 260: pRecNm = "DFF_Prop_pib"; break;
+ case 261: pRecNm = "DFF_Prop_pibName"; break;
+ case 262: pRecNm = "DFF_Prop_pibFlags"; break;
+ case 263: pRecNm = "DFF_Prop_pictureTransparent"; break;
+ case 264: pRecNm = "DFF_Prop_pictureContrast"; break;
+ case 265: pRecNm = "DFF_Prop_pictureBrightness"; break;
+ case 266: pRecNm = "DFF_Prop_pictureGamma"; break;
+ case 267: pRecNm = "DFF_Prop_pictureId"; break;
+ case 268: pRecNm = "DFF_Prop_pictureDblCrMod"; break;
+ case 269: pRecNm = "DFF_Prop_pictureFillCrMod"; break;
+ case 270: pRecNm = "DFF_Prop_pictureLineCrMod"; break;
+ case 271: pRecNm = "DFF_Prop_pibPrint"; break;
+ case 272: pRecNm = "DFF_Prop_pibPrintName"; break;
+ case 273: pRecNm = "DFF_Prop_pibPrintFlags"; break;
+ case 316: pRecNm = "DFF_Prop_fNoHitTestPicture"; break;
+ case 317: pRecNm = "DFF_Prop_pictureGray"; break;
+ case 318: pRecNm = "DFF_Prop_pictureBiLevel"; break;
+ case 319: pRecNm = "DFF_Prop_pictureActive"; break;
+// Geometry
+ case 320: pRecNm = "DFF_Prop_geoLeft"; break;
+ case 321: pRecNm = "DFF_Prop_geoTop"; break;
+ case 322: pRecNm = "DFF_Prop_geoRight"; break;
+ case 323: pRecNm = "DFF_Prop_geoBottom"; break;
+ case 324: pRecNm = "DFF_Prop_shapePath"; break;
+ case 325: pRecNm = "DFF_Prop_pVertices"; break;
+ case 326: pRecNm = "DFF_Prop_pSegmentInfo"; break;
+ case 327: pRecNm = "DFF_Prop_adjustValue"; break;
+ case 328: pRecNm = "DFF_Prop_adjust2Value"; break;
+ case 329: pRecNm = "DFF_Prop_adjust3Value"; break;
+ case 330: pRecNm = "DFF_Prop_adjust4Value"; break;
+ case 331: pRecNm = "DFF_Prop_adjust5Value"; break;
+ case 332: pRecNm = "DFF_Prop_adjust6Value"; break;
+ case 333: pRecNm = "DFF_Prop_adjust7Value"; break;
+ case 334: pRecNm = "DFF_Prop_adjust8Value"; break;
+ case 335: pRecNm = "DFF_Prop_adjust9Value"; break;
+ case 336: pRecNm = "DFF_Prop_adjust10Value"; break;
+ case 378: pRecNm = "DFF_Prop_fShadowOK"; break;
+ case 379: pRecNm = "DFF_Prop_f3DOK"; break;
+ case 380: pRecNm = "DFF_Prop_fLineOK"; break;
+ case 381: pRecNm = "DFF_Prop_fGtextOK"; break;
+ case 382: pRecNm = "DFF_Prop_fFillShadeShapeOK"; break;
+ case 383: pRecNm = "DFF_Prop_fFillOK"; break;
+// FillStyle
+ case 384: pRecNm = "DFF_Prop_fillType"; break;
+ case 385: pRecNm = "DFF_Prop_fillColor"; break;
+ case 386: pRecNm = "DFF_Prop_fillOpacity"; break;
+ case 387: pRecNm = "DFF_Prop_fillBackColor"; break;
+ case 388: pRecNm = "DFF_Prop_fillBackOpacity"; break;
+ case 389: pRecNm = "DFF_Prop_fillCrMod"; break;
+ case 390: pRecNm = "DFF_Prop_fillBlip"; break;
+ case 391: pRecNm = "DFF_Prop_fillBlipName"; break;
+ case 392: pRecNm = "DFF_Prop_fillBlipFlags"; break;
+ case 393: pRecNm = "DFF_Prop_fillWidth"; break;
+ case 394: pRecNm = "DFF_Prop_fillHeight"; break;
+ case 395: pRecNm = "DFF_Prop_fillAngle"; break;
+ case 396: pRecNm = "DFF_Prop_fillFocus"; break;
+ case 397: pRecNm = "DFF_Prop_fillToLeft"; break;
+ case 398: pRecNm = "DFF_Prop_fillToTop"; break;
+ case 399: pRecNm = "DFF_Prop_fillToRight"; break;
+ case 400: pRecNm = "DFF_Prop_fillToBottom"; break;
+ case 401: pRecNm = "DFF_Prop_fillRectLeft"; break;
+ case 402: pRecNm = "DFF_Prop_fillRectTop"; break;
+ case 403: pRecNm = "DFF_Prop_fillRectRight"; break;
+ case 404: pRecNm = "DFF_Prop_fillRectBottom"; break;
+ case 405: pRecNm = "DFF_Prop_fillDztype"; break;
+ case 406: pRecNm = "DFF_Prop_fillShadePreset"; break;
+ case 407: pRecNm = "DFF_Prop_fillShadeColors"; break;
+ case 408: pRecNm = "DFF_Prop_fillOriginX"; break;
+ case 409: pRecNm = "DFF_Prop_fillOriginY"; break;
+ case 410: pRecNm = "DFF_Prop_fillShapeOriginX"; break;
+ case 411: pRecNm = "DFF_Prop_fillShapeOriginY"; break;
+ case 412: pRecNm = "DFF_Prop_fillShadeType"; break;
+ case 443: pRecNm = "DFF_Prop_fFilled"; break;
+ case 444: pRecNm = "DFF_Prop_fHitTestFill"; break;
+ case 445: pRecNm = "DFF_Prop_fillShape"; break;
+ case 446: pRecNm = "DFF_Prop_fillUseRect"; break;
+ case 447: pRecNm = "DFF_Prop_fNoFillHitTest"; break;
+// LineStyle
+ case 448: pRecNm = "DFF_Prop_lineColor"; break;
+ case 449: pRecNm = "DFF_Prop_lineOpacity"; break;
+ case 450: pRecNm = "DFF_Prop_lineBackColor"; break;
+ case 451: pRecNm = "DFF_Prop_lineCrMod"; break;
+ case 452: pRecNm = "DFF_Prop_lineType"; break;
+ case 453: pRecNm = "DFF_Prop_lineFillBlip"; break;
+ case 454: pRecNm = "DFF_Prop_lineFillBlipName"; break;
+ case 455: pRecNm = "DFF_Prop_lineFillBlipFlags"; break;
+ case 456: pRecNm = "DFF_Prop_lineFillWidth"; break;
+ case 457: pRecNm = "DFF_Prop_lineFillHeight"; break;
+ case 458: pRecNm = "DFF_Prop_lineFillDztype"; break;
+ case 459: pRecNm = "DFF_Prop_lineWidth"; break;
+ case 460: pRecNm = "DFF_Prop_lineMiterLimit"; break;
+ case 461: pRecNm = "DFF_Prop_lineStyle"; break;
+ case 462: pRecNm = "DFF_Prop_lineDashing"; break;
+ case 463: pRecNm = "DFF_Prop_lineDashStyle"; break;
+ case 464: pRecNm = "DFF_Prop_lineStartArrowhead"; break;
+ case 465: pRecNm = "DFF_Prop_lineEndArrowhead"; break;
+ case 466: pRecNm = "DFF_Prop_lineStartArrowWidth"; break;
+ case 467: pRecNm = "DFF_Prop_lineStartArrowLength"; break;
+ case 468: pRecNm = "DFF_Prop_lineEndArrowWidth"; break;
+ case 469: pRecNm = "DFF_Prop_lineEndArrowLength"; break;
+ case 470: pRecNm = "DFF_Prop_lineJoinStyle"; break;
+ case 471: pRecNm = "DFF_Prop_lineEndCapStyle"; break;
+ case 507: pRecNm = "DFF_Prop_fArrowheadsOK"; break;
+ case 508: pRecNm = "DFF_Prop_fLine"; break;
+ case 509: pRecNm = "DFF_Prop_fHitTestLine"; break;
+ case 510: pRecNm = "DFF_Prop_lineFillShape"; break;
+ case 511: pRecNm = "DFF_Prop_fNoLineDrawDash"; break;
+// ShadowStyle
+ case 512: pRecNm = "DFF_Prop_shadowType"; break;
+ case 513: pRecNm = "DFF_Prop_shadowColor"; break;
+ case 514: pRecNm = "DFF_Prop_shadowHighlight"; break;
+ case 515: pRecNm = "DFF_Prop_shadowCrMod"; break;
+ case 516: pRecNm = "DFF_Prop_shadowOpacity"; break;
+ case 517: pRecNm = "DFF_Prop_shadowOffsetX"; break;
+ case 518: pRecNm = "DFF_Prop_shadowOffsetY"; break;
+ case 519: pRecNm = "DFF_Prop_shadowSecondOffsetX"; break;
+ case 520: pRecNm = "DFF_Prop_shadowSecondOffsetY"; break;
+ case 521: pRecNm = "DFF_Prop_shadowScaleXToX"; break;
+ case 522: pRecNm = "DFF_Prop_shadowScaleYToX"; break;
+ case 523: pRecNm = "DFF_Prop_shadowScaleXToY"; break;
+ case 524: pRecNm = "DFF_Prop_shadowScaleYToY"; break;
+ case 525: pRecNm = "DFF_Prop_shadowPerspectiveX"; break;
+ case 526: pRecNm = "DFF_Prop_shadowPerspectiveY"; break;
+ case 527: pRecNm = "DFF_Prop_shadowWeight"; break;
+ case 528: pRecNm = "DFF_Prop_shadowOriginX"; break;
+ case 529: pRecNm = "DFF_Prop_shadowOriginY"; break;
+ case 574: pRecNm = "DFF_Prop_fShadow"; break;
+ case 575: pRecNm = "DFF_Prop_fshadowObscured"; break;
+// PerspectiveStyle
+ case 576: pRecNm = "DFF_Prop_perspectiveType"; break;
+ case 577: pRecNm = "DFF_Prop_perspectiveOffsetX"; break;
+ case 578: pRecNm = "DFF_Prop_perspectiveOffsetY"; break;
+ case 579: pRecNm = "DFF_Prop_perspectiveScaleXToX"; break;
+ case 580: pRecNm = "DFF_Prop_perspectiveScaleYToX"; break;
+ case 581: pRecNm = "DFF_Prop_perspectiveScaleXToY"; break;
+ case 582: pRecNm = "DFF_Prop_perspectiveScaleYToY"; break;
+ case 583: pRecNm = "DFF_Prop_perspectivePerspectiveX"; break;
+ case 584: pRecNm = "DFF_Prop_perspectivePerspectiveY"; break;
+ case 585: pRecNm = "DFF_Prop_perspectiveWeight"; break;
+ case 586: pRecNm = "DFF_Prop_perspectiveOriginX"; break;
+ case 587: pRecNm = "DFF_Prop_perspectiveOriginY"; break;
+ case 639: pRecNm = "DFF_Prop_fPerspective"; break;
+// 3D Object
+ case 640: pRecNm = "DFF_Prop_c3DSpecularAmt"; break;
+ case 641: pRecNm = "DFF_Prop_c3DDiffuseAmt"; break;
+ case 642: pRecNm = "DFF_Prop_c3DShininess"; break;
+ case 643: pRecNm = "DFF_Prop_c3DEdgeThickness"; break;
+ case 644: pRecNm = "DFF_Prop_c3DExtrudeForward"; break;
+ case 645: pRecNm = "DFF_Prop_c3DExtrudeBackward"; break;
+ case 646: pRecNm = "DFF_Prop_c3DExtrudePlane"; break;
+ case 647: pRecNm = "DFF_Prop_c3DExtrusionColor"; break;
+ case 648: pRecNm = "DFF_Prop_c3DCrMod"; break;
+ case 700: pRecNm = "DFF_Prop_f3D"; break;
+ case 701: pRecNm = "DFF_Prop_fc3DMetallic"; break;
+ case 702: pRecNm = "DFF_Prop_fc3DUseExtrusionColor"; break;
+ case 703: pRecNm = "DFF_Prop_fc3DLightFace"; break;
+// 3D Style
+ case 704: pRecNm = "DFF_Prop_c3DYRotationAngle"; break;
+ case 705: pRecNm = "DFF_Prop_c3DXRotationAngle"; break;
+ case 706: pRecNm = "DFF_Prop_c3DRotationAxisX"; break;
+ case 707: pRecNm = "DFF_Prop_c3DRotationAxisY"; break;
+ case 708: pRecNm = "DFF_Prop_c3DRotationAxisZ"; break;
+ case 709: pRecNm = "DFF_Prop_c3DRotationAngle"; break;
+ case 710: pRecNm = "DFF_Prop_c3DRotationCenterX"; break;
+ case 711: pRecNm = "DFF_Prop_c3DRotationCenterY"; break;
+ case 712: pRecNm = "DFF_Prop_c3DRotationCenterZ"; break;
+ case 713: pRecNm = "DFF_Prop_c3DRenderMode"; break;
+ case 714: pRecNm = "DFF_Prop_c3DTolerance"; break;
+ case 715: pRecNm = "DFF_Prop_c3DXViewpoint"; break;
+ case 716: pRecNm = "DFF_Prop_c3DYViewpoint"; break;
+ case 717: pRecNm = "DFF_Prop_c3DZViewpoint"; break;
+ case 718: pRecNm = "DFF_Prop_c3DOriginX"; break;
+ case 719: pRecNm = "DFF_Prop_c3DOriginY"; break;
+ case 720: pRecNm = "DFF_Prop_c3DSkewAngle"; break;
+ case 721: pRecNm = "DFF_Prop_c3DSkewAmount"; break;
+ case 722: pRecNm = "DFF_Prop_c3DAmbientIntensity"; break;
+ case 723: pRecNm = "DFF_Prop_c3DKeyX"; break;
+ case 724: pRecNm = "DFF_Prop_c3DKeyY"; break;
+ case 725: pRecNm = "DFF_Prop_c3DKeyZ"; break;
+ case 726: pRecNm = "DFF_Prop_c3DKeyIntensity"; break;
+ case 727: pRecNm = "DFF_Prop_c3DFillX"; break;
+ case 728: pRecNm = "DFF_Prop_c3DFillY"; break;
+ case 729: pRecNm = "DFF_Prop_c3DFillZ"; break;
+ case 730: pRecNm = "DFF_Prop_c3DFillIntensity"; break;
+ case 763: pRecNm = "DFF_Prop_fc3DConstrainRotation"; break;
+ case 764: pRecNm = "DFF_Prop_fc3DRotationCenterAuto"; break;
+ case 765: pRecNm = "DFF_Prop_fc3DParallel"; break;
+ case 766: pRecNm = "DFF_Prop_fc3DKeyHarsh"; break;
+ case 767: pRecNm = "DFF_Prop_fc3DFillHarsh"; break;
+// Shape
+ case 769: pRecNm = "DFF_Prop_hspMaster"; break;
+ case 771: pRecNm = "DFF_Prop_cxstyle"; break;
+ case 772: pRecNm = "DFF_Prop_bWMode"; break;
+ case 773: pRecNm = "DFF_Prop_bWModePureBW"; break;
+ case 774: pRecNm = "DFF_Prop_bWModeBW"; break;
+ case 826: pRecNm = "DFF_Prop_fOleIcon"; break;
+ case 827: pRecNm = "DFF_Prop_fPreferRelativeResize"; break;
+ case 828: pRecNm = "DFF_Prop_fLockShapeType"; break;
+ case 830: pRecNm = "DFF_Prop_fDeleteAttachedObject"; break;
+ case 831: pRecNm = "DFF_Prop_fBackground"; break;
+
+// Callout
+ case 832: pRecNm = "DFF_Prop_spcot"; break;
+ case 833: pRecNm = "DFF_Prop_dxyCalloutGap"; break;
+ case 834: pRecNm = "DFF_Prop_spcoa"; break;
+ case 835: pRecNm = "DFF_Prop_spcod"; break;
+ case 836: pRecNm = "DFF_Prop_dxyCalloutDropSpecified"; break;
+ case 837: pRecNm = "DFF_Prop_dxyCalloutLengthSpecified"; break;
+ case 889: pRecNm = "DFF_Prop_fCallout"; break;
+ case 890: pRecNm = "DFF_Prop_fCalloutAccentBar"; break;
+ case 891: pRecNm = "DFF_Prop_fCalloutTextBorder"; break;
+ case 892: pRecNm = "DFF_Prop_fCalloutMinusX"; break;
+ case 893: pRecNm = "DFF_Prop_fCalloutMinusY"; break;
+ case 894: pRecNm = "DFF_Prop_fCalloutDropAuto"; break;
+ case 895: pRecNm = "DFF_Prop_fCalloutLengthSpecified"; break;
+
+// GroupShape
+ case 896: pRecNm = "DFF_Prop_wzName"; break;
+ case 897: pRecNm = "DFF_Prop_wzDescription"; break;
+ case 898: pRecNm = "DFF_Prop_pihlShape"; break;
+ case 899: pRecNm = "DFF_Prop_pWrapPolygonVertices"; break;
+ case 900: pRecNm = "DFF_Prop_dxWrapDistLeft"; break;
+ case 901: pRecNm = "DFF_Prop_dyWrapDistTop"; break;
+ case 902: pRecNm = "DFF_Prop_dxWrapDistRight"; break;
+ case 903: pRecNm = "DFF_Prop_dyWrapDistBottom"; break;
+ case 904: pRecNm = "DFF_Prop_lidRegroup"; break;
+ case 953: pRecNm = "DFF_Prop_fEditedWrap"; break;
+ case 954: pRecNm = "DFF_Prop_fBehindDocument"; break;
+ case 955: pRecNm = "DFF_Prop_fOnDblClickNotify"; break;
+ case 956: pRecNm = "DFF_Prop_fIsButton"; break;
+ case 957: pRecNm = "DFF_Prop_fOneD"; break;
+ case 958: pRecNm = "DFF_Prop_fHidden"; break;
+ case 959: pRecNm = "DFF_Prop_fPrint"; break;
+ }
+
+ *pOut << " " << indent1 << ' ';
+ if( pRecNm )
+ *pOut << pRecNm;
+ else
+ *pOut << "Prop" ;
+
+ *pOut << " Id: " << dec << nId << " (=0x" << hex << nId << ')';
+ if( bBid )
+ *pOut << " Bid: 0x" << (UINT16)bBid;
+
+ if( bComplex )
+ {
+ *pOut << " Cmpl: 0x" << (UINT16)bComplex;
+ // ....
+ rStreamOffset += nOp;
+ }
+// else
+ *pOut << " op: 0x" << nOp;
+
+ *pOut << dec << endl1;
+}
+
+void DumpEscherRec( ULONG nPos, UINT8 nVer, UINT16 nInst,
+ UINT16 nFbt, UINT32 nLength )
+{
+ const char* pRecNm = 0;
+ switch( nFbt )
+ {
+ case 0xF000: pRecNm = "DFF_msofbtDggContainer"; break;
+ case 0xF006: pRecNm = "DFF_msofbtDgg"; break;
+ case 0xF016: pRecNm = "DFF_msofbtCLSID"; break;
+ case 0xF00B: pRecNm = "DFF_msofbtOPT"; break;
+ case 0xF11A: pRecNm = "DFF_msofbtColorMRU"; break;
+ case 0xF11E: pRecNm = "DFF_msofbtSplitMenuColors"; break;
+ case 0xF001: pRecNm = "DFF_msofbtBstoreContainer"; break;
+ case 0xF007: pRecNm = "DFF_msofbtBSE"; break;
+ case 0xF018: pRecNm = "DFF_msofbtBlipFirst"; break;
+ case 0xF117: pRecNm = "DFF_msofbtBlipLast"; break;
+ case 0xF002: pRecNm = "DFF_msofbtDgContainer"; break;
+ case 0xF008: pRecNm = "DFF_msofbtDg"; break;
+ case 0xF118: pRecNm = "DFF_msofbtRegroupItems"; break;
+ case 0xF120: pRecNm = "DFF_msofbtColorScheme"; break;
+ case 0xF003: pRecNm = "DFF_msofbtSpgrContainer"; break;
+ case 0xF004: pRecNm = "DFF_msofbtSpContainer"; break;
+ case 0xF009: pRecNm = "DFF_msofbtSpgr"; break;
+ case 0xF00A: pRecNm = "DFF_msofbtSp"; break;
+ case 0xF00C: pRecNm = "DFF_msofbtTextbox"; break;
+ case 0xF00D: pRecNm = "DFF_msofbtClientTextbox"; break;
+ case 0xF00E: pRecNm = "DFF_msofbtAnchor"; break;
+ case 0xF00F: pRecNm = "DFF_msofbtChildAnchor"; break;
+ case 0xF010: pRecNm = "DFF_msofbtClientAnchor"; break;
+ case 0xF011: pRecNm = "DFF_msofbtClientData"; break;
+ case 0xF11F: pRecNm = "DFF_msofbtOleObject"; break;
+ case 0xF11D: pRecNm = "DFF_msofbtDeletedPspl"; break;
+ case 0xF005: pRecNm = "DFF_msofbtSolverContainer"; break;
+ case 0xF012: pRecNm = "DFF_msofbtConnectorRule"; break;
+ case 0xF013: pRecNm = "DFF_msofbtAlignRule"; break;
+ case 0xF014: pRecNm = "DFF_msofbtArcRule"; break;
+ case 0xF015: pRecNm = "DFF_msofbtClientRule"; break;
+ case 0xF017: pRecNm = "DFF_msofbtCalloutRule"; break;
+ }
+
+ *pOut << hex6 << nPos << indent1;
+ if( pRecNm )
+ *pOut << pRecNm;
+ else
+ *pOut << "Record:";
+ *pOut << " Id: 0x" << hex << nFbt << " Instance: 0x" << nInst
+ << " Version: 0x" << (UINT16)nVer << " Laenge: 0x" << nLength
+ << dec << endl1;
+
+ switch( nFbt )
+ {
+ case 0xf00b: // DFF_msofbtOPT
+ {
+ UINT16 nId; UINT32 nOp, nStreamOffset = nInst * 6;
+ BOOL bBid, bComplex;
+ for( UINT16 n = 0; n < nInst; ++n )
+ {
+ if( !WW8ReadUINT16( *xTableStream, nId ) ||
+ !WW8ReadUINT32( *xTableStream, nOp ))
+ break;
+ bBid = ( nId >> 14 ) & 1;
+ bComplex = ( nId >> 15 ) & 1;
+ nId &= 0x3fff;
+
+ ::DumpEscherProp( nId, bBid, bComplex, nOp, nStreamOffset );
+ }
+ }
+ break;
+
+ case 0xF00d: // DFF_msofbtClientTextbox
+ case 0xF010: // DFF_msofbtClientAnchor
+ case 0xF011: // DFF_msofbtClientData
+ {
+ UINT32 nData;
+ if( 4 == nLength && WW8ReadUINT32( *xTableStream, nData ))
+ *pOut << " " << indent1 << " Data: "
+ << hex << nData << dec << endl1;
+ }
+ break;
+
+ case 0xf00a: // DFF_msofbtSp
+ {
+ UINT32 nId, nData;
+ if( WW8ReadUINT32( *xTableStream, nId ) &&
+ WW8ReadUINT32( *xTableStream, nData ))
+ {
+ *pOut << " " << indent1 << " \""
+ << _GetShapeTypeNm( nInst )
+ << "\" Id: 0x" << hex << nId
+ << " Flags: 0x" << nData << dec << endl1;
+ }
+ }
+ break;
+
+ case 0xf009: // DFF_msofbtSpgr
+ case 0xf00f: // DFF_msofbtChildAnchor
+ {
+ UINT32 nL, nT, nR, nB;
+ if( WW8ReadUINT32( *xTableStream, nL ) &&
+ WW8ReadUINT32( *xTableStream, nT ) &&
+ WW8ReadUINT32( *xTableStream, nR ) &&
+ WW8ReadUINT32( *xTableStream, nB ) )
+ {
+ *pOut << " " << indent1 << " Rect: (L/T/R/B): " << dec
+ << nL << '/' << nT << '/' << nR << '/' << nB << endl;
+ }
+ }
+ break;
+
+ case 0xf006: //ESCHER_Dgg
+ {
+ UINT32 spidMax, // The current maximum shape ID
+ cidcl, // The number of ID clusters (FIDCLs)
+ cspSaved, // The total number of shapes saved
+ // (including deleted shapes, if undo
+ // information was saved)
+ cdgSaved; // The total number of drawings saved
+
+ if( WW8ReadUINT32( *xTableStream, spidMax ) &&
+ WW8ReadUINT32( *xTableStream, cidcl ) &&
+ WW8ReadUINT32( *xTableStream, cspSaved ) &&
+ WW8ReadUINT32( *xTableStream, cdgSaved ))
+ {
+ *pOut << " " << indent1 << " " << hex
+ << " spidMax: 0x" << spidMax
+ << " cidcl: 0x" << cidcl
+ << " cspSaved: 0x" << cspSaved
+ << " cdgSaved: 0x" << cdgSaved
+ << dec << endl1;
+
+
+ UINT32 dgid, // DG owning the SPIDs in this cluster
+ cspidCur; // number of SPIDs used so far
+
+ for( UINT32 n = 1; n < cidcl; ++n )
+ {
+ if( !WW8ReadUINT32( *xTableStream, dgid ) ||
+ !WW8ReadUINT32( *xTableStream, cspidCur ))
+ break;
+
+ *pOut << " " << indent1 << " " << hex
+ << " dgid: 0x" << dgid
+ << " cspidCur: 0x" << cspidCur
+ << dec << endl1;
+ }
+ }
+ }
+ break;
+
+ case 0xF016: //ESCHER_CLSID
+ case 0xF11A: //ESCHER_ColorMRU
+ case 0xF11E: //ESCHER_SplitMenuColors
+// case 0xF001: //ESCHER_BstoreContainer
+ case 0xF007: //ESCHER_BSE
+ case 0xF018: //ESCHER_BlipFirst
+ case 0xF117: //ESCHER_BlipLast
+ case 0xF118: //ESCHER_RegroupItems
+ case 0xF120: //ESCHER_ColorScheme
+ case 0xF00C: //ESCHER_Textbox
+ case 0xF00E: //ESCHER_Anchor
+ case 0xF11F: //ESCHER_OleObject
+ case 0xF11D: //ESCHER_DeletedPspl
+ case 0xF005: //ESCHER_SolverContainer
+ case 0xF012: //ESCHER_ConnectorRule
+ case 0xF013: //ESCHER_AlignRule
+ case 0xF014: //ESCHER_ArcRule
+ case 0xF015: //ESCHER_ClientRule
+ case 0xF017: //ESCHER_CalloutRule
+ case 0xF119: //ESCHER_Selection
+ case 0xf008: //ESCHER_Dg
+ {
+ int nCnt = 128;
+ while( nLength )
+ {
+ if( 128 == nCnt || 16 == ++nCnt )
+ {
+ if( 128 != nCnt )
+ *pOut << endl1;
+ *pOut << " " << indent1 << " Data: ";
+ nCnt = 0;
+ }
+
+ static char __READONLY_DATA sHex[17] = { "0123456789abcdef" };
+ BYTE c;
+ *xTableStream >> c;
+ *pOut << sHex[ ( c & 0xf0 ) >> 4 ] << sHex[ c & 0x0f ] << ' ';
+ --nLength;
+ }
+ *pOut << dec << endl1;
+ }
+ break;
+ }
+
+
+}
+
+
+void DumpEscherRecs( ULONG nPos, UINT32 nLength )
+{
+ begin( *pOut, *xTableStream ) << endl1;
+
+ UINT16 nOldFbt = 0;
+ ULONG nReadLen = 0;
+ while( nReadLen < nLength )
+ {
+ UINT8 nVer;
+ UINT16 nInst, nFbt;
+ UINT32 nRecLen;
+
+ if( !::ReadEsherRec( *xTableStream, nVer, nInst, nFbt, nRecLen ))
+ break;
+
+ if( !( 0xf000 <= nFbt && nFbt <= 0xf120 ))
+ {
+ xTableStream->Seek( nPos + nReadLen );
+ unsigned char c;
+ *xTableStream >> c;
+
+ ++nReadLen;
+ if( !::ReadEsherRec( *xTableStream, nVer, nInst, nFbt, nRecLen )
+ || !( 0xf000 <= nFbt && nFbt <= 0xf120 ) )
+ break;
+
+ *pOut << hex6 << nPos + nReadLen - 1 << indent1
+ << "DummyChar: 0x" << hex << (int)c << dec << endl1;
+ }
+
+ ::DumpEscherRec( nPos + nReadLen, nVer, nInst,
+ nFbt, nRecLen );
+
+ nReadLen += 2 * sizeof( UINT32 );
+ switch( nFbt )
+ {
+ case 0xF000:
+ case 0xF001: //ESCHER_BstoreContainer
+ case 0xF002:
+ case 0xF003:
+ case 0xF004:
+ DumpEscherRecs( nPos + nReadLen, nRecLen );
+ break;
+ }
+
+ nReadLen += nRecLen;
+ xTableStream->Seek( nPos + nReadLen );
+ nOldFbt = nFbt;
+ }
+ end( *pOut, *xTableStream ) << endl1;
+}
+
+
+void DumpDrawing()
+{
+ if( pWwFib->lcbDggInfo )
+ {
+ ULONG nOldPos = xTableStream->Tell(), nReadLen = 0;
+ xTableStream->Seek( pWwFib->fcDggInfo );
+
+ *pOut << endl << hex6 << pWwFib->fcDggInfo << dec2 << ' ' << indent1
+ << begin1 << "Escher (DggInfo): Len: " << pWwFib->lcbDggInfo
+ << endl1;
+
+ ::DumpEscherRecs( pWwFib->fcDggInfo, (ULONG)pWwFib->lcbDggInfo );
+
+ end( *pOut, *xTableStream ) << endl1 << endl1;
+ xTableStream->Seek( nOldPos );
+ }
+}
+
+
+//-----------------------------------------
+// Hilfroutinen fuer Styles
+//-----------------------------------------
+
+static short DumpStyleUPX( BYTE nVersion, short nLen, BOOL bPAP )
+{
+ short cbUPX;
+ BOOL bEmpty;
+
+
+ if( nLen <= 0 ){
+ indent( *pOut, *xTableStream );
+ *pOut << "very empty UPX." << ((bPAP) ? "papx " : "chpx ");
+ *pOut << "Len:" << nLen << endl1;
+ return nLen;
+ }
+
+ nLen -= WW8SkipOdd( &xTableStream );
+ indent( *pOut, *xTableStream );
+
+ xTableStream->Read( &cbUPX, 2 );
+ nLen-= 2;
+
+ if ( cbUPX > nLen )
+ {
+ *pOut << "!cbUPX auf nLen verkleinert! ";
+ cbUPX = nLen;
+ }
+
+ bEmpty = ( cbUPX <= 0 ) || ( bPAP && ( cbUPX <= 2 ) );
+
+ if ( bEmpty )
+ *pOut << "empty ";
+ else
+ *pOut << begin1;
+
+ *pOut << "UPX." << ((bPAP) ? "papx " : "chpx ");
+ *pOut << "Len:" << nLen << " cbUPX:" << cbUPX << ' ';
+
+ if( bPAP )
+ {
+ USHORT id;
+
+ xTableStream->Read( &id, 2 );
+ cbUPX-= 2;
+ nLen-= 2;
+ *pOut << "ID:" << id;
+ }
+
+ *pOut << endl1;
+
+ ULONG nPos = xTableStream->Tell(); // falls etwas falsch interpretiert
+ // wird, gehts danach wieder richtig
+ DumpSprms( nVersion, *xTableStream, cbUPX );
+
+ if ( xTableStream->Tell() != nPos + cbUPX ){
+ *pOut << "!Um " << xTableStream->Tell() - nPos + cbUPX
+ << " Bytes falsch positioniert!" << endl1;
+ xTableStream->Seek( nPos+cbUPX );
+ }
+
+ nLen -= cbUPX;
+
+ if ( !bEmpty )
+ end( *pOut, *xTableStream ) << "UPX." << ((bPAP) ? "papx " : "chpx ") << endl1;
+
+ return nLen;
+}
+
+static void DumpStyleGrupx( BYTE nVersion, short nLen, BOOL bPara )
+{
+ if( nLen <= 0 )
+ return;
+ nLen -= WW8SkipOdd( &xTableStream );
+
+ begin( *pOut, *xTableStream ) << "Grupx, Len:" << nLen << endl1;
+
+ if( bPara ) nLen = DumpStyleUPX( nVersion, nLen, TRUE ); // Grupx.Papx
+ DumpStyleUPX( nVersion, nLen, FALSE ); // Grupx.Chpx
+
+ end( *pOut, *xTableStream ) << "Grupx" << endl1;
+}
+
+static void PrintStyleId( USHORT nId )
+{
+ switch ( nId ){
+ case 0xffe: *pOut << "User "; break;
+ case 0xfff: *pOut << "Nil "; break;
+ default: *pOut << nId << ' '; break;
+ }
+}
+
+//-----------------------------------------
+// Styles
+//-----------------------------------------
+
+void DStyle::Dump1Style( USHORT nNr )
+{
+ short nSkip, cbStd;
+ BYTE* pStr;
+ char c;
+ indent( *pOut, *xTableStream );
+
+ WW8_STD* pStd = Read1Style( nSkip, &pStr, &cbStd ); // lese Style
+
+ if ( pStr ){ // echter Style
+ *pOut << begin1;
+ switch ( pStd->sgc ){
+ case 1: c = 'P'; break;
+ case 2: c = 'C'; break;
+ default: c = '?'; break;
+ }
+ *pOut << c << "-Style Nr:" << nNr << ' ';
+ *pOut << "ID:"; PrintStyleId( pStd->sti );
+ *pOut << "BasedOn:"; PrintStyleId( pStd->istdBase );
+ *pOut << "Next:" << pStd->istdNext << " Name:\"" << &pStr[1] << "\"";
+ *pOut << endl1 << " ";
+ *pOut << "cbStd:" << cbStd << ' ';
+ *pOut << "No of Upx & Upe:" << pStd->cupx << ' ';
+ *pOut << "bchUpe:" << pStd->bchUpe << ' ';
+ *pOut << "nSkip:" << nSkip << endl1;
+ }else{ // leerer Slot
+ *pOut << "empty Slot Nr:" << nNr << endl1;
+ }
+
+ long nPos = xTableStream->Tell(); // falls etwas falsch interpretiert
+ // wird, gehts danach wieder richtig
+
+ if( pStd && ( pStd->sgc == 1 || pStd->sgc == 2 ) )
+ DumpStyleGrupx( nVersion, nSkip, pStd->sgc == 1 );
+
+ if ( pStr ) // echter Style
+ end( *pOut, *xTableStream ) << c << "-Style" << endl1;
+
+ xTableStream->Seek( nPos+nSkip );
+
+ DELETEZ( pStr );
+ DELETEZ( pStd );
+}
+
+void DStyle::Dump()
+{
+ *pOut << hex6 << nStyleStart << ' ' << dec2 << indent1;
+
+ *pOut << begin1 << cstd << " Styles, ";
+ *pOut << "Base:" << cbSTDBaseInFile;
+ *pOut << ", Written:" << (fStdStylenamesWritten) ? 'T' : 'F';
+ *pOut << ", MaxSti:" << stiMaxWhenSaved;
+ *pOut << ", MaxFix:" << istdMaxFixedWhenSaved;
+ *pOut << ", BuildIn:" << nVerBuiltInNamesWhenSaved;
+ *pOut << ", StdFnt:" << ftcStandardChpStsh << endl1;
+
+ USHORT i;
+ for( i=0; i<cstd; i++ )
+ Dump1Style( i );
+
+ end( *pOut, *xTableStream ) << "Styles" << endl1 << endl1;
+}
+
+//-----------------------------------------
+// Main
+//-----------------------------------------
+
+//char cName [266];
+//char cOutName [266];
+
+int PrepareConvert( String& rName, String& rOutName, String& rMess )
+{
+#if 0
+ if( argc < 2 ) {
+ rMess += "Aufruf: Dump8 InFile [OutFile [StorFile] ] ";
+ return 1;
+ }else{
+ strncpy( cName, *++argv, sizeof( cName )-5 );
+ }
+ if( !strchr( cName, '.' ) )
+ strcat( cName, ".DOC" );
+
+ if( argc >= 3 ){
+ strncpy( cOutName, *++argv, sizeof( cOutName ) );
+ }else{
+ strncpy( cOutName, cName, sizeof( cOutName ) );
+ char* p = strchr( cOutName, '.' );
+ *p = 0;
+ strcat( cOutName, ".DMP" );
+ }
+#endif
+ if( access( rName.GetStr(), 0 ) ){
+ rMess += "Kann ";
+ rMess += rName;
+ rMess += " nicht oeffnen";
+ return 1;
+ }
+
+ pxStor = new SvStorageRef( new SvStorage( rName, STREAM_STD_READ ) );
+ xStrm = (*pxStor)->OpenStream( String( "WordDocument" ), STREAM_STD_READ );
+
+ if ( !xStrm.Is() /* || xStrm->GetError() */ ){
+ rMess += "Kann StorageStream \"WordDocument\" in ";
+ rMess += rName;
+ rMess += " nicht zum Lesen oeffnen";
+ DELETEZ( pxStor );
+ return 1;
+ }
+
+ ULONG nL;
+ if ( xStrm->Read( &nL, sizeof( nL ) ) == 0 ){
+ rMess += "Kann aus StorageStream \"WordDocument\" in ";
+ rMess += rName;
+ rMess += " nicht Lesen";
+ return 1;
+ }
+ xStrm->Seek( 0 );
+
+ pOut = new fstream( rOutName, ios::out );
+ if ( !pOut ){
+ rMess += "Kann Ausgabedatei ";
+ rMess += rOutName;
+ rMess += " nicht zum Schreiben oeffnen";
+ return 1;
+ }
+
+#if 0 // erstmal raus wg. Umstellung
+ if( argc > 3 ) {
+ char StorName[266];
+ strncpy( StorName, *++argv, sizeof( StorName )-5 );
+
+ if( !strchr( StorName, '.' ) )
+ strcat( StorName, ".STO" );
+
+ SvFileStream aStrm( StorName, STREAM_WRITE|STREAM_TRUNC );
+ aStrm << *xStrm;
+
+// fstream aOut2( StorName, ios::out );
+// aOut2 << *xStrm;
+
+ xStrm->Seek( 0 );
+ }
+#endif
+ rMess += "Ausgabe von ";
+ rMess += rName;
+ rMess += " in Datei ";
+ rMess += rOutName;
+ rMess += "......";
+
+ if ( xStrm->Read( &nL, sizeof( nL ) ) == 0 ){
+ return 1;
+ }
+ xStrm->Seek( 0 );
+
+ return 0;
+}
+
+int DoConvert( const String& rName, BYTE nVersion )
+{
+ ULONG nL;
+ if ( xStrm->Read( &nL, sizeof( nL ) ) == 0 ){
+ return 1;
+ }
+ xStrm->Seek( 0 );
+
+ pWwFib = new DFib( *xStrm, nVersion );
+
+ if ( pWwFib->nFibError )
+ return 1;
+
+#if 0
+ *pOut << "Eingabe-Dateiname : \"" << cName << '"' << endl1;
+ if ( cOutName[0] == 0 )
+ *pOut << "Ausgabe auf \"cout\"" << endl1;
+ else
+ *pOut << "Ausgabe-Dateiname : \"" << cOutName << '"' << endl1;
+ *pOut << endl1;
+#endif
+
+
+ // Nachdem wir nun den FIB eingelesen haben, wissen wir ja,
+ // welcher Table-Stream gueltig ist.
+ // Diesen oeffnen wir nun.
+
+ switch( pWwFib->nVersion ) // 6 steht fuer "6 ODER 7", 7 steht fuer "NUR 7"
+ {
+ case 6:
+ case 7:
+ xTableStream = &xStrm;
+ xDataStream = &xStrm;
+ break;
+ case 8:
+ xTableStream = (*pxStor)->OpenStream(
+ ( 1 == pWwFib->fWhichTblStm ) ? "1Table" : "0Table" ,
+ STREAM_STD_READ );
+ xDataStream = (*pxStor)->OpenStream( "Data", STREAM_STD_READ | STREAM_NOCREATE );
+ if( !xDataStream.Is() || SVSTREAM_OK != xDataStream->GetError() )
+ xDataStream = &xStrm;
+ break;
+ default:// Programm-Fehler!
+ /*
+ ACHTUNG: im FILTER nicht "FALSE" sondern "!this()" schreiben,
+ da sonst Warning unter OS/2
+ */
+ ASSERT( FALSE, "Es wurde vergessen, nVersion zu kodieren!" );
+ return 1;
+ }
+
+
+ // dann erstmal den Dateinamen schreiben:
+ *pOut << "Datei: " << rName.GetStr() << endl;
+
+ pSBase = new WW8ScannerBase( &xStrm, &xTableStream, &xDataStream, pWwFib );
+
+ // erstmal die Lowlevel-Funktionen
+
+ ((DFib*)pWwFib)->Dump(); // FIB
+ DumpDop( *pWwFib ); // WW8_DOP
+
+ if( ( 8 > pWwFib->nVersion && pWwFib->fComplex ) ||
+ pWwFib->lcbClx )
+ DumpPcd( pWwFib->nVersion, pWwFib->fcClx, pWwFib->lcbClx );
+
+ DumpBookLow();
+
+ DumpBookHigh();
+
+
+ DumpPLCF( pWwFib->fcPlcfsed, pWwFib->lcbPlcfsed, SEP ); // SEPX
+
+ DumpPLCF( pWwFib->fcPlcfbteChpx, pWwFib->lcbPlcfbteChpx, CHP ); // CHPX
+
+ DumpPLCF( pWwFib->fcPlcfbtePapx, pWwFib->lcbPlcfbtePapx, PAP ); // PAPX
+
+ {
+ DStyle aStyle( *xTableStream, *pWwFib ); // Styles
+ aStyle.Dump();
+ }
+
+ DumpFonts(); // WW8_FFN
+
+ // ... und jetzt die High-Level-Funktionen
+
+ WW8_CP nStartCp = 0;
+
+ DumpPlainText( nStartCp, pWwFib->ccpText, "Main" );
+ *pOut << endl1;
+ DumpField1( pWwFib->fcPlcffldMom, pWwFib->lcbPlcffldMom,
+ "MainText Fields" );
+
+ DumpHeader( pSBase ); // Header / Footer
+ DumpField1( pWwFib->fcPlcffldHdr, pWwFib->lcbPlcffldHdr,
+ "Header/Footer Fields" );
+
+ DumpFootnotes( pSBase );
+ DumpField1( pWwFib->fcPlcffldFtn, pWwFib->lcbPlcffldFtn,
+ "Footnote Fields" );
+
+ DumpEndnotes( pSBase );
+ DumpField1( pWwFib->fcPlcffldEdn, pWwFib->lcbPlcffldEdn,
+ "Endnote Fields" );
+
+ DumpAnnotations( pSBase );
+
+ DumpTextBoxs( pSBase );
+
+ DumpField1( pWwFib->fcPlcffldTxbx, pWwFib->lcbPlcffldTxbx,
+ "Textbox Fields" );
+ DumpField1( pWwFib->fcPlcffldHdrTxbx, pWwFib->lcbPlcffldHdrTxbx,
+ "Header/Footer Textbox Fields" );
+
+ if( 8 == pWwFib->nVersion )
+ DumpNumList();
+
+ DumpFdoa( pSBase );
+
+ if( pWwFib->lcbPlcfspaHdr || pWwFib->lcbPlcfspaMom )
+ DumpDrawing();
+
+ DELETEZ( pSBase );
+ DELETEZ( pWwFib );
+ return 0;
+}
+
+void DeInit()
+{
+// DELETEZ( aWwStor );
+ xStrm.Clear();
+ DELETEZ( pxStor );
+ DELETEZ( pOut );
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/dump/dump8a.cxx,v 1.1.1.1 2000-09-18 17:14:59 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.15 2000/09/18 16:05:02 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.14 2000/02/14 14:39:35 jp
+ #70473# changes for unicode
+
+ Revision 1.13 2000/02/14 14:12:01 jp
+ piece table is in the table stream
+
+ Revision 1.12 2000/01/25 10:44:58 khz
+ change: update the dumper according to import improvements
+
+ Revision 1.11 1999/11/18 22:15:11 jp
+ dump fields
+
+ Revision 1.10 1999/11/18 22:09:53 jp
+ dump fields
+
+ Revision 1.9 1999/10/27 17:57:35 jp
+ changes for tables
+
+ Revision 1.8 1999/09/08 11:58:46 jp
+ den neuen WW8Scanner benutzen
+
+ Revision 1.7 1999/09/08 11:14:15 jp
+ Escher dump verbessert
+
+
+ Rev 1.5 16 Aug 1999 12:22:38 JP
+ neu: Dump EscherObjects
+
+ Rev 1.4 15 Jun 1999 14:19:18 JP
+ new: ListTable and other Contents
+
+ Rev 1.3 25 Jun 1998 16:29:52 KHZ
+ doppelte Deklaration von FkpSizeTab in Define umgewandelt
+
+ Rev 1.2 25 Jun 1998 15:43:46 KHZ
+ Strukturaenderung fuer PAPX FKPs
+
+ Rev 1.1 10 Jun 1998 17:22:38 KHZ
+ Zwischenstand-Sicherung Dumper
+
+ Rev 1.0 27 May 1998 15:29:26 KHZ
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/ww8/dump/makefile.mk b/sw/source/filter/ww8/dump/makefile.mk
new file mode 100644
index 000000000000..da4babcc60a7
--- /dev/null
+++ b/sw/source/filter/ww8/dump/makefile.mk
@@ -0,0 +1,179 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=.
+
+PRJNAME=DUMP8
+TARGET=dump8
+VERSION=$(UPD)
+
+# --- Settings ---------------------------------------------------
+
+.INCLUDE : svpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sv.mk
+
+CXXFILES= dump8.cxx dump8a.cxx ww8dout.cxx ww8darr.cxx ww8scan.cxx msvbasic.cxx
+
+OBJFILES= $(OBJ)$/dump8.obj $(OBJ)$/dump8a.obj $(OBJ)$/ww8dout.obj \
+ $(OBJ)$/ww8darr.obj $(OBJ)$/ww8scan.obj $(OBJ)$/msvbasic.obj
+
+
+.IF "$(depend)" == ""
+
+CFLAGS+= -DDUMP
+
+# --- DUMP8 EXE --------------------------------------------------------
+
+# IENV=$(IENV);..\RES
+
+APP1TARGET=$(PRJNAME)
+
+# RESLIB1NAME=vu
+# RESLIB1SRSFILES=$(SRS)$/main.srs
+
+APP1LIBS=$(LIB1TARGET)
+
+.IF "$(GUI)" == "WNT"
+APP1STDLIBS= $(SVTOOLLIB) $(SVLLIB) $(TOOLSLIB) $(SVLIB) svmem.lib so2.lib
+# irtl.lib
+.IF "$(SO3)" == ""
+APP1STDLIBS+= sdstor.lib
+.ELSE
+APP1STDLIBS+= sot.lib
+.ENDIF
+APP1STDLIBS+= ole32.lib oleaut32.lib uuid.lib shell32.lib advapi32.lib libci.lib msvcirt.lib
+.ELSE
+.IF "$(GUI)" == "OS2"
+APP1STDLIBS=sdstor.lib so2.lib svtool.lib $(SVLIB) tools.lib svmem.lib svx.lib
+.ELSE
+APP1STDLIBS=svtool.lib tools.lib $(SVLIB) svmem.lib sdstor.lib so2.lib svx.lib
+APP1STDLIBS+= ole2 compobj storage shell
+.ENDIF
+.ENDIF
+.IF "$(GUI)"=="WNT"
+APP1DEPN= $(L)$/svtool.lib $(L)$/itools.lib $(SVLIBDEPEND) $(L)$/svmem.lib $(L)$/so2.lib
+.ELSE
+APP1DEPN= $(L)$/svtool.lib $(L)$/tools.lib $(SVLIBDEPEND) $(L)$/svmem.lib $(L)$/so2.lib
+.ENDIF
+APP1OBJS= $(OBJ)$/dump8.obj $(OBJ)$/dump8a.obj $(OBJ)$/ww8dout.obj \
+ $(OBJ)$/ww8darr.obj $(OBJ)$/ww8scan.obj $(OBJ)/msvbasic.obj
+
+APP1DEF= $(MISC)$/$(PRJNAME).def
+#APP1RES= $(RES)$/$(PRJNAME).res
+#SRSFILES= $(SRS)$/main.srs
+
+#-------------------------------------------------------------------------
+# Windows 3.x
+#-------------------------------------------------------------------------
+
+.IF "$(GUI)" == "WIN"
+
+ALL: \
+ ALLTAR
+
+$(MISC)$/$(PRJNAME).def: makefile
+ echo NAME VIEWER >$@
+ echo DESCRIPTION 'StarView - Testprogramm' >>$@
+ echo EXETYPE WINDOWS >>$@
+ echo PROTMODE >>$@
+ echo STUB 'winSTUB.EXE' >>$@
+ echo CODE PRELOAD MOVEABLE DISCARDABLE >>$@
+ echo DATA PRELOAD MULTIPLE MOVEABLE >>$@
+ echo HEAPSIZE 4096 >>$@
+ echo STACKSIZE 30000 >>$@
+
+.ENDIF # GUI == WIN
+
+#-------------------------------------------------------------------------
+# OS/2
+#-------------------------------------------------------------------------
+
+.IF "$(GUI)" == "OS2"
+
+ALL: \
+ $(SRS)$/main.srs \
+ ALLTAR
+
+$(MISC)$/$(PRJNAME).def: makefile
+ echo NAME VIEWER WINDOWAPI >$@
+ echo DESCRIPTION 'Storage Viewer (C)1995 STAR DIVISION GmbH' >>$@
+ echo EXETYPE OS2 >>$@
+ echo PROTMODE >>$@
+ echo STUB 'OS2STUB.EXE' >>$@
+ echo CODE LOADONCALL >>$@
+ echo DATA PRELOAD MULTIPLE >>$@
+ echo HEAPSIZE 4096 >>$@
+ echo STACKSIZE 30000 >>$@
+
+.ENDIF # GUI == OS2
+
+#-------------------------------------------------------------------------
+# Windows NT
+#-------------------------------------------------------------------------
+
+# --- Targets -----------------------------------------------------------
+
+.ENDIF
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/filter/ww8/dump/msvbasic.cxx b/sw/source/filter/ww8/dump/msvbasic.cxx
new file mode 100644
index 000000000000..0808ac5f9659
--- /dev/null
+++ b/sw/source/filter/ww8/dump/msvbasic.cxx
@@ -0,0 +1,598 @@
+/*************************************************************************
+ *
+ * $RCSfile: msvbasic.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 <string.h> // memset(), ...
+#ifndef UNX
+#include <io.h> // access()
+#endif
+
+#ifndef _MSVBASIC_HXX
+#include <msvbasic.hxx>
+#endif
+
+/* class VBA_Impl:
+ * The VBA class provides a set of methods to handle Visual Basic For
+ * Applications streams, the constructor is given the root ole2 stream
+ * of the document, Open reads the VBA project file and figures out
+ * the number of VBA streams, and the offset of the data within them.
+ * Decompress decompresses a particular numbered stream, NoStreams returns
+ * this number, and StreamName can give you the streams name. Decompress
+ * will call Output when it has a 4096 byte collection of data to output,
+ * and also with the final remainder of data if there is still some left
+ * at the end of compression. Output is virtual to allow custom handling
+ * of each chunk of decompressed data. So inherit from this to do something
+ * useful with the data.
+ *
+ * cmc
+ * */
+
+BYTE VBA_Impl::ReadPString(SvStorageStreamRef &xVBAProject)
+{
+ UINT16 idlen;
+ BYTE type=0;
+ *xVBAProject >> idlen;
+ BYTE out;
+ int i=0;
+ if (idlen < 6)
+ {
+ type=0;
+ xVBAProject->SeekRel(-2);
+ return(type);
+ }
+
+ for(i=0;i<idlen/2;i++)
+ {
+ *xVBAProject >> out;
+ xVBAProject->SeekRel(1);
+ if (i==2)
+ {
+ type=out;
+ if ((type != 'G') && (type != 'C'))
+ type=0;
+ if (type == 0)
+ {
+ xVBAProject->SeekRel(-8);
+ break;
+ }
+ }
+ }
+
+
+ return(type);
+}
+
+void VBA_Impl::ConfirmFixedOctect(SvStorageStreamRef &xVBAProject)
+{
+ static const BYTE stest[8] =
+ {
+ 0x06, 0x02, 0x01, 0x00, 0x08, 0x02, 0x00, 0x00
+ };
+
+ BYTE test[8];
+ xVBAProject->Read(test,8);
+ if (memcmp(stest,test,8) != 0)
+ DBG_WARNING("Found a different octect, please report");
+}
+
+void VBA_Impl::Confirm12Zeros(SvStorageStreamRef &xVBAProject)
+{
+ static const BYTE stest[12]={0};
+ BYTE test[12];
+ xVBAProject->Read(test,12);
+ if (memcmp(stest,test,12) != 0)
+ DBG_WARNING("Found a Non Zero block, please report");
+}
+
+void VBA_Impl::ConfirmHalfWayMarker(SvStorageStreamRef &xVBAProject)
+{
+ static const BYTE stest[12]={0,0,0,0,0,0,0,0,0,0,1,0};
+ BYTE test[12];
+ xVBAProject->Read(test,12);
+ if (memcmp(stest,test,12) != 0)
+ DBG_WARNING("Found a different halfway marker, please report");
+}
+
+void VBA_Impl::ConfirmFixedMiddle(SvStorageStreamRef &xVBAProject)
+{
+ static const BYTE stest[20] =
+ {
+ 0x00, 0x00, 0xe1, 0x2e, 0x45, 0x0d, 0x8f, 0xe0,
+ 0x1a, 0x10, 0x85, 0x2e, 0x02, 0x60, 0x8c, 0x4d,
+ 0x0b, 0xb4, 0x00, 0x00
+ };
+
+ BYTE test[20];
+ xVBAProject->Read(test,20);
+ if (memcmp(stest,test,20) != 0)
+ {
+ DBG_WARNING("Found a different middle marker, please report");
+ xVBAProject->SeekRel(-20);
+ }
+}
+
+void VBA_Impl::ConfirmFixedMiddle2(SvStorageStreamRef &xVBAProject)
+{
+ static const BYTE stest[20] =
+ {
+ 0x00, 0x00, 0x2e, 0xc9, 0x27, 0x8e, 0x64, 0x12,
+ 0x1c, 0x10, 0x8a, 0x2f, 0x04, 0x02, 0x24, 0x00,
+ 0x9c, 0x02, 0x00, 0x00
+ };
+
+ BYTE test[20];
+ xVBAProject->Read(test,20);
+ if (memcmp(stest,test,20) != 0)
+ {
+ DBG_WARNING("Found a different middle2 marker, please report");
+ xVBAProject->SeekRel(-20);
+ }
+}
+
+
+void VBA_Impl::Output( int nLen, const BYTE *pData)
+{
+ sVBAString += String( (const sal_Char *)pData, nLen );
+/*
+//For debugging purposes
+ for(int i=0;i<len;i++)
+ *pOut << data[i];
+*/
+}
+
+
+int VBA_Impl::ReadVBAProject(const SvStorageRef &rxVBAStorage)
+ {
+ SvStorageStreamRef xVBAProject;
+ xVBAProject = rxVBAStorage->OpenStream( "_VBA_PROJECT",
+ STREAM_STD_READ | STREAM_NOCREATE );
+
+ if( !xVBAProject.Is() || SVSTREAM_OK != xVBAProject->GetError() )
+ {
+ DBG_WARNING("Not able to find vba project, cannot find macros");
+ return(0);
+ }
+ xVBAProject->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+
+ //*pOut << hex;
+ BYTE header[30] =
+ {
+ 0xcc, 0x61, 0x5e, 0x00, 0x00, 0x01, 0x00, 0xff,
+ 0x07, 0x04, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00,
+ 0xe4, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00
+ };
+ BYTE headerin[30];
+
+ xVBAProject->Read(headerin,30);
+ if (memcmp(header,headerin,30) != 0)
+ DBG_WARNING("Warning VBA header is different, please report");
+ UINT16 value;
+ *xVBAProject >> value;
+ //*pOut << "Trigger value 1 is " << value << endl;
+ UINT16 svalue;
+ *xVBAProject >> svalue;
+ if (svalue != 0x02)
+ DBG_WARNING("Warning VBA number is different, please report");
+
+ int count=0;
+ BYTE testc=0;
+
+ //*pOut << "Other strings after the middle are..." << endl;
+ //There appears to be almost any number of strings acceptable
+ //most begin with */G , and sometimes with
+ //*/C. Those with G always have a trailer of 12 bytes, those
+ //with C come in pairs, the first with no trailer, and the
+ //second with one of 12 bytes. The following code attemts
+ //to read these strings and ends when it reaches a sequence of
+ //bytes which fails a test to be a valid string. So this
+ //while loop here is the particular piece of code which is
+ //very suspect and likely to be the cause of any crashes and
+ //problems.
+ while ((testc = ReadPString(xVBAProject)) != 0)
+ {
+ //*pOut << endl;
+ //*pOut << "testcharacter is " << testc << endl;
+ switch (testc)
+ {
+ case 'C':
+ count++;
+ if (count == 2)
+ {
+ Confirm12Zeros(xVBAProject);
+ count=0;
+ }
+ break;
+ default:
+ case 'G':
+ Confirm12Zeros(xVBAProject);
+ break;
+ }
+ }
+
+ //appears to be a fixed 20 byte sequence here, and then the strings
+ //continue
+ ConfirmFixedMiddle(xVBAProject);
+
+ count=0;
+ testc=0;
+
+ while ((testc = ReadPString(xVBAProject)) != 0)
+ {
+ //*pOut << endl;
+ //*pOut << "testcharacter is " << testc << endl;
+ switch (testc)
+ {
+ case 'C':
+ count++;
+ if (count == 2)
+ {
+ Confirm12Zeros(xVBAProject);
+ count=0;
+ }
+ break;
+ default:
+ case 'G':
+ Confirm12Zeros(xVBAProject);
+ break;
+ }
+ }
+
+ //there *may* be another different 20byte fixed string
+ ConfirmFixedMiddle2(xVBAProject);
+
+ //*pOut << "testc is " << testc << endl;
+ //*pOut << "position is " << xVBAProject->Tell() << endl;
+
+ UINT16 nModules;
+ *xVBAProject >> nModules;
+
+ //begin section, this section isn't really 100% correct
+ //*pOut << nModules << hex << " vba modules" << endl;
+ xVBAProject->SeekRel(2*nModules);
+ xVBAProject->SeekRel(4);
+ //*pOut << "position is " << xVBAProject->Tell() << endl;
+ ConfirmFixedOctect(xVBAProject);
+
+ UINT16 junksize;
+ while(junksize != 0xFFFF)
+ {
+ xVBAProject->Read(&junksize,2); // usually 18 02, sometimes 1e 02
+ //but sometimes its a run of numbers until 0xffff, gagh!!!
+ //*pOut << "position is " << xVBAProject->Tell() << "len is "
+ // << junksize << endl;
+ }
+
+ UINT16 ftest;
+ *xVBAProject >> ftest;
+ if (ftest != 0xFFFF)
+ xVBAProject->SeekRel(ftest);
+ *xVBAProject >> ftest;
+ if (ftest != 0xFFFF)
+ xVBAProject->SeekRel(ftest);
+
+ xVBAProject->SeekRel(100);
+ //*pOut << "position is " << xVBAProject->Tell() << endl;
+ //end section
+
+
+ *xVBAProject >> nOffsets;
+ pOffsets = new VBAOffset_Impl[nOffsets];
+ int i;
+ for (i=0;i<nOffsets;i++)
+ {
+ BYTE discard;
+ UINT16 len;
+ *xVBAProject >> len;
+ int j;
+ for (j=0;j<len/2;j++)
+ {
+ *xVBAProject >> discard;
+ pOffsets[i].sName += discard;
+ *xVBAProject >> discard;
+ }
+ *xVBAProject >> len;
+ xVBAProject->SeekRel(len);
+
+ //begin section, another problem area
+ *xVBAProject >> len;
+ if (len == 0xFFFF)
+ {
+ xVBAProject->SeekRel(2);
+ *xVBAProject >> len;
+ xVBAProject->SeekRel(len);
+ }
+ else
+ xVBAProject->SeekRel(len+2);
+ //
+ /* I have a theory that maybe you read a 16bit len, and
+ * if it has 0x02 for the second byte then it is a special
+ * token of its own that affects nothing else, otherwise
+ * it is a len of the following data. C. I must test this
+ * theory later.
+ */
+ //end section
+
+ xVBAProject->SeekRel(8);
+ BYTE no_of_octects;
+ *xVBAProject >> no_of_octects;
+ for(j=0;j<no_of_octects;j++)
+ xVBAProject->SeekRel(8);
+ xVBAProject->SeekRel(6);
+
+ *xVBAProject >> pOffsets[i].nOffset;
+ //*pOut << pOffsets[i].pName.GetStr() << " at 0x" << hex << pOffsets[i].nOffset << endl;
+ xVBAProject->SeekRel(2);
+ }
+
+ //*pOut << endl;
+ return(nOffsets);
+ }
+
+BOOL VBA_Impl::Open( const String &rToplevel,const String &rSublevel )
+{
+ /* beginning test for vba stuff */
+ BOOL bRet = FALSE;
+ SvStorageRef xMacros= xStor->OpenStorage(rToplevel);
+ if( !xMacros.Is() || SVSTREAM_OK != xMacros->GetError() )
+ {
+ DBG_WARNING("No Macros Storage");
+ }
+ else
+ {
+ xVBA = xMacros->OpenStorage(rSublevel);
+ if( !xVBA.Is() || SVSTREAM_OK != xVBA->GetError() )
+ {
+ DBG_WARNING("No Visual Basic in Storage");
+ }
+ else
+ {
+ if (ReadVBAProject(xVBA))
+ bRet = TRUE;
+ }
+ }
+ /* end test for vba stuff */
+ return bRet;
+}
+
+const String &VBA_Impl::Decompress( UINT16 nIndex, int *pOverflow)
+{
+ SvStorageStreamRef xVBAStream;
+ sVBAString.Erase();
+
+ DBG_ASSERT( nIndex < nOffsets, "Index out of range" );
+ xVBAStream = xVBA->OpenStream( pOffsets[nIndex].sName,
+ STREAM_STD_READ | STREAM_NOCREATE );
+ if (pOverflow)
+ *pOverflow=0;
+ if( !xVBAStream.Is() || SVSTREAM_OK !=
+ xVBAStream->GetError() )
+ {
+ DBG_WARNING("Not able to open vb module ");
+ DBG_WARNING((pOffsets[nIndex].sName).GetStr());
+ }
+ else
+ {
+ xVBAStream->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ DecompressVBA(nIndex,xVBAStream);
+ /*
+ * if len was too big for a single string set that variable ?
+ * if ((len > XX) && (pOverflow))
+ *pOverflow=1;
+ */
+ if (bCommented)
+ {
+ String sTempStringa("\x0D\x0A");
+ String sTempStringb("\x0D\x0ARem ");
+ sVBAString.SearchAndReplaceAll(sTempStringa,sTempStringb);
+ sVBAString.Insert("Rem ",0);
+ }
+ }
+ return sVBAString;
+}
+
+
+int VBA_Impl::DecompressVBA( int nIndex, SvStorageStreamRef &xVBAStream )
+{
+ BYTE leadbyte;
+ unsigned int pos = 0;
+
+ //*pOut << "jumping to " << hex << offsets[nIndex].offset << endl;
+ xVBAStream->Seek(pOffsets[nIndex].nOffset+3);
+
+ int len;
+ UINT16 token;
+ int distance, shift, clean=1;
+
+ while(xVBAStream->Read(&leadbyte,1))
+ {
+ //*pOut << "reading 8 data unit block beginning with " << leadbyte << int(leadbyte) << " at pos " << xVBAStream->Tell() << " real pos " << pos << endl;
+ for(int position=0x01;position < 0x100;position=position<<1)
+ {
+ //we see if the leadbyte has flagged this location as a dataunit
+ //which is actually a token which must be looked up in the history
+ if (leadbyte & position)
+ {
+ *xVBAStream >> token;
+
+ if (clean == 0)
+ clean=1;
+
+ //For some reason the division of the token into the length
+ //field of the data to be inserted, and the distance back into
+ //the history differs depending on how full the history is
+ int pos2 = pos%WINDOWLEN;
+ if (pos2 <= 0x10)
+ shift = 12;
+ else if (pos2 <= 0x20)
+ shift = 11;
+ else if (pos2 <= 0x40)
+ shift = 10;
+ else if (pos2 <= 0x80)
+ shift = 9;
+ else if (pos2 <= 0x100)
+ shift = 8;
+ else if (pos2 <= 0x200)
+ shift = 7;
+ else if (pos2 <= 0x400)
+ shift = 6;
+ else if (pos2 <= 0x800)
+ shift = 5;
+ else
+ shift = 4;
+
+ int i;
+ len=0;
+ for(i=0;i<shift;i++)
+ len |= token & (1<<i);
+
+ //*pOut << endl << "match lookup token " << int(token) << "len " << int(len) << endl;
+
+ len += 3;
+ //*pOut << endl << "len is " << len << "shift is " << shift << endl;
+
+ distance = token >> shift;
+ //*pOut << "distance token shift is " << distance << " " << int(token) << " " << shift << "pos is " << pos << " " << xVBAStream->Tell() << endl;
+
+ //read the len of data from the history, wrapping around the
+ //WINDOWLEN boundary if necessary
+ //data read from the history is also copied into the recent
+ //part of the history as well.
+ for (i = 0; i < len; i++)
+ {
+ unsigned char c;
+ //*pOut << endl << (pos%WINDOWLEN)-distance-1 << " " << pos << " " << distance << endl;
+ c = aHistory[(pos-distance-1)%WINDOWLEN];
+ aHistory[pos%WINDOWLEN] = c;
+ pos++;
+ //*pOut << "real pos is " << pos << endl;
+ //
+ //temp removed
+ //*pOut << c ;
+ }
+ }
+ else
+ {
+ // special boundary case code, not guarantueed to be correct
+ // seems to work though, there is something wrong with the
+ // compression scheme (or maybe a feature) where when
+ // the data ends on a WINDOWLEN boundary and the excess
+ // bytes in the 8 dataunit list are discarded, and not
+ // interpreted as tokens or normal data.
+ if ((pos != 0) && ((pos%WINDOWLEN) == 0) && (clean))
+ {
+ //*pOut << "at boundary position is " << position << " " << xVBAStream->Tell() << " pos is " << pos << endl;
+ //if (position != 0x01)
+ //*pOut << "must restart by eating remainder single byte data units" << endl;
+ xVBAStream->SeekRel(2);
+ clean=0;
+ Output(WINDOWLEN,aHistory);
+ break;
+ }
+ //This is the normal case for when the data unit is not a
+ //token to be looked up, but instead some normal data which
+ //can be output, and placed in the history.
+ if (xVBAStream->Read(&aHistory[pos%WINDOWLEN],1))
+ {
+ pos++;
+ //temp removed
+ //*pOut << aHistory[pos++%WINDOWLEN];
+ }
+ if (clean == 0)
+ clean=1;
+ //*pOut << "pos is " << pos << " " << xVBAStream->Tell() << endl;
+ }
+ }
+ }
+ if (pos%WINDOWLEN)
+ Output(pos%WINDOWLEN,aHistory);
+ return(pos);
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/dump/msvbasic.cxx,v 1.1.1.1 2000-09-18 17:14:59 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.5 2000/09/18 16:05:03 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.4 2000/02/03 09:31:52 cmc
+ #72268# Office 2000 compatibility bug fixed
+
+ Revision 1.2 2000/01/26 16:40:15 cmc
+ Made VBA Project stream reader more robust
+
+ Revision 1.1 2000/01/26 12:34:58 jp
+ #72268#: move form svdraw to here
+
+ Revision 1.4 2000/01/25 16:12:21 rt
+ #65293# includes unnecessary
+
+ Revision 1.3 2000/01/25 11:17:42 cmc
+ #72268# Visual Basic Decompression
+
+
+*************************************************************************/
diff --git a/sw/source/filter/ww8/dump/msvbasic.hxx b/sw/source/filter/ww8/dump/msvbasic.hxx
new file mode 100644
index 000000000000..83cdc516541e
--- /dev/null
+++ b/sw/source/filter/ww8/dump/msvbasic.hxx
@@ -0,0 +1,140 @@
+/*************************************************************************
+ *
+ * $RCSfile: msvbasic.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _MSVBASIC_HXX
+#define _MSVBASIC_HXX
+
+#ifdef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+
+
+/* class VBA:
+ * The VBA class provides a set of methods to handle Visual Basic For
+ * Applications streams, the constructor is given the root ole2 stream
+ * of the document, Open reads the VBA project file and figures out
+ * the number of VBA streams, and the offset of the data within them.
+ * Decompress decompresses a particular numbered stream, NoStreams returns
+ * this number, and StreamName can give you the streams name. Decompress
+ * will return a string with the decompressed data. The optional extra
+ * argument will be set if not NULL to 1 in the case of a string overflow,
+ * if I can figure out how to do that.
+ *
+ * Otherwise it is possible to inherit from VBA and implement a Output
+ * member which gets called with each 4096 output sized block.
+ *
+ * cmc
+ * */
+
+#define WINDOWLEN 4096
+
+class VBA_Impl
+{
+public:
+ VBA_Impl( SvStorage &rIn, BOOL bCmmntd = TRUE )
+ : xStor(&rIn), pOffsets(0), nOffsets(0), bCommented(bCmmntd)
+ {}
+ ~VBA_Impl() {if (nOffsets) delete [] pOffsets;}
+ //0 for failure, 1 for success
+ BOOL Open( const String &rToplevel, const String &rSublevel);
+ const String & Decompress( UINT16 nIndex, int *pOverflow=0);
+ UINT16 GetNoStreams() const { return nOffsets; }
+ const String &GetStreamName( UINT16 nIndex ) const
+ {
+ DBG_ASSERT( nIndex < nOffsets, "Index out of range" );
+ return pOffsets[ nIndex ].sName;
+ }
+ virtual void Output(int len,const BYTE *data);
+private:
+ struct VBAOffset_Impl
+ {
+ String sName;
+ UINT32 nOffset;
+ };
+
+ SvStorageRef xVBA;
+ String sVBAString;
+ SvStorageRef xStor;
+ VBAOffset_Impl *pOffsets;
+ UINT16 nOffsets;
+ BYTE aHistory[ WINDOWLEN ];
+ BOOL bCommented;
+
+ //0 for failure, anything else for success
+ int ReadVBAProject(const SvStorageRef &rxVBAStorage);
+ int DecompressVBA(int index, SvStorageStreamRef &rxVBAStream);
+ void Confirm12Zeros(SvStorageStreamRef &xVBAProject);
+ void ConfirmHalfWayMarker(SvStorageStreamRef &xVBAProject);
+ void ConfirmFixedMiddle(SvStorageStreamRef &xVBAProject);
+ void ConfirmFixedMiddle2(SvStorageStreamRef &xVBAProject);
+ void ConfirmFixedOctect(SvStorageStreamRef &xVBAProject);
+ BYTE ReadPString(SvStorageStreamRef &xVBAProject);
+};
+
+
+
+
+#endif
diff --git a/sw/source/filter/ww8/dump/ww8darr.cxx b/sw/source/filter/ww8/dump/ww8darr.cxx
new file mode 100644
index 000000000000..3674b34ce6bc
--- /dev/null
+++ b/sw/source/filter/ww8/dump/ww8darr.cxx
@@ -0,0 +1,615 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8darr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 <stdlib.h>
+
+#include "ww8dout.hxx" // OutShort()
+#include "ww8darr.hxx"
+
+
+
+
+//-----------------------------------------
+
+
+
+SprmDumpInfo aSprmDumpTab[] = {
+ 0, (FnOut)0, "NOP(0)",
+ 2, OutShort, "sprmPIstd", // pap.istd (style code)
+ 3, (FnOut)0, "sprmPIstdPermute", // pap.istd permutation
+ 4, OutByte, "sprmPIncLv1", // pap.istddifference
+ 5, OutByte, "sprmPJc", // pap.jc (justification)
+ 6, OutBool, "sprmPFSideBySide", // pap.fSideBySide
+ 7, OutBool, "sprmPFKeep", // pap.fKeep
+ 8, OutBool, "sprmPFKeepFollow ", // pap.fKeepFollow
+ 9, OutBool, "sprmPPageBreakBefore", // pap.fPageBreakBefore
+
+ 10, (FnOut)0, "sprmPBrcl", // pap.brcl
+ 11, (FnOut)0, "sprmPBrcp ", // pap.brcp
+ 12, (FnOut)0, "sprmPAnld", // pap.anld (ANLD structure)
+ 13, OutByte, "sprmPNLvlAnm", // pap.nLvlAnm nn
+ 14, OutBool, "sprmPFNoLineNumb", //ap.fNoLnn
+
+ //??
+ 15, OutTab, "?sprmPChgTabsPapx", // pap.itbdMac, ...
+
+
+ 16, OutShort, "sprmPDxaRight", // pap.dxaRight
+ 17, OutShort, "sprmPDxaLeft", // pap.dxaLeft
+ 18, OutWord, "sprmPNest", // pap.dxaLeft
+ 19, OutShort, "sprmPDxaLeft1", // pap.dxaLeft1
+
+ 20, OutShorts, "sprmPDyaLine", // pap.lspd an LSPD
+ 21, OutWord, "sprmPDyaBefore", // pap.dyaBefore
+ 22, OutWord, "sprmPDyaAfter", // pap.dyaAfter
+
+
+ //??
+ 23, (FnOut)0, "?sprmPChgTabs", // pap.itbdMac, pap.rgdxaTab, ...
+
+
+ 24, OutBool, "sprmPFInTable", // pap.fInTable
+ 25, OutBool, "sprmPTtp", // pap.fTtp
+ 26, OutWord, "sprmPDxaAbs", // pap.dxaAbs
+ 27, OutWord, "sprmPDyaAbs", // pap.dyaAbs
+ 28, OutWord, "sprmPDxaWidth", // pap.dxaWidth
+ 29, (FnOut)0, "sprmPPc", // pap.pcHorz, pap.pcVert
+
+ 30, (FnOut)0, "sprmPBrcTop10", // pap.brcTop BRC10
+ 31, (FnOut)0, "sprmPBrcLeft10", // pap.brcLeft BRC10
+ 32, (FnOut)0, "sprmPBrcBottom10", // pap.brcBottom BRC10
+ 33, (FnOut)0, "sprmPBrcRight10", // pap.brcRight BRC10
+ 34, (FnOut)0, "sprmPBrcBetween10", // pap.brcBetween BRC10
+ 35, (FnOut)0, "sprmPBrcBar10", // pap.brcBar BRC10
+ 36, OutWord, "sprmPFromText10", // pap.dxaFromText dxa
+ 37, (FnOut)0, "sprmPWr", // pap.wr wr
+ 38, OutWordHex, "sprmPBrcTop", // pap.brcTop BRC
+ 39, OutWordHex, "sprmPBrcLeft", // pap.brcLeft BRC
+
+ 40, OutWordHex, "sprmPBrcBottom", // pap.brcBottom BRC
+ 41, OutWordHex, "sprmPBrcRight", // pap.brcRight BRC
+ 42, (FnOut)0, "sprmPBrcBetween", // pap.brcBetween BRC
+ 43, (FnOut)0, "sprmPBrcBar",//pap.brcBar BRC word
+ 44, OutBool, "sprmPFNoAutoHyph",//pap.fNoAutoHyph
+ 45, OutWord, "sprmPWHeightAbs",//pap.wHeightAbs w
+ 46, (FnOut)0, "sprmPDcs",//pap.dcs DCS
+ 47, OutWordHex, "sprmPShd",//pap.shd SHD
+ 48, OutWord, "sprmPDyaFromText",//pap.dyaFromText dya
+ 49, OutWord, "sprmPDxaFromText",//pap.dxaFromText dxa
+
+ 50, OutBool, "sprmPFLocked", // pap.fLocked 0 or 1 byte
+ 51, OutBool, "sprmPFWidowControl", // pap.fWidowControl 0 or 1 byte
+
+
+ //??
+ 52, (FnOut)0, "?sprmPRuler 52", //???
+
+
+ 65, OutBool, "sprmCFStrikeRM", // chp.fRMarkDel 1 or 0 bit
+ 66, OutBool, "sprmCFRMark", // chp.fRMark 1 or 0 bit
+ 67, OutBool, "sprmCFFldVanish", // chp.fFldVanish 1 or 0 bit
+ 68, OutTab68, "sprmCPicLocation", // chp.fcPic and chp.fSpec
+ 69, OutShort, "sprmCIbstRMark", // chp.ibstRMark index into sttbRMark
+
+ 70, (FnOut)0, "sprmCDttmRMark", // chp.dttm DTTM long
+ 71, OutBool, "sprmCFData", // chp.fData 1 or 0 bit
+ 72, OutShort, "sprmCRMReason", // chp.idslRMReason an index to a table
+ 73, (FnOut)0, "sprmCChse", // chp.fChsDiff and chp.chse see below 3 bytes
+ 74, (FnOut)0, "sprmCSymbol", // chp.fSpec, chp.chSym and chp.ftcSym
+ 75, OutBool, "sprmCFOle2", // chp.fOle2 1 or 0 bit
+
+ 80, OutShort, "sprmCIstd", // chp.istd istd, see stylesheet definition short
+ 81, (FnOut)0, "sprmCIstdPermute", // chp.istd permutation vector (see below)
+ 82, (FnOut)0, "sprmCDefault", // whole CHP (see below) none variable length
+ 83, (FnOut)0, "sprmCPlain", // whole CHP (see below) none 0
+ 84, (FnOut)0, "??84",
+ 85, OutBool4, "sprmCFBold", // chp.fBold 0,1, 128, or 129 (see below) byte
+ 86, OutBool4, "sprmCFItalic", // chp.fItalic 0,1, 128, or 129 (see below) byte
+ 87, OutBool4, "sprmCFStrike", // chp.fStrike 0,1, 128, or 129 (see below) byte
+ 88, OutBool4, "sprmCFOutline", // chp.fOutline 0,1, 128, or 129 (see below) byte
+ 89, OutBool4, "sprmCFShadow", // chp.fShadow 0,1, 128, or 129 (see below) byte
+
+ 90, OutBool4, "sprmCFSmallCaps", // chp.fSmallCaps 0,1, 128, or 129 (see below) byte
+ 91, OutBool4, "sprmCFCaps", // chp.fCaps 0,1, 128, or 129 (see below) byte
+ 92, OutBool4, "sprmCFVanish", // chp.fVanish 0,1, 128, or 129 (see below) byte
+ 93, OutWord, "sprmCFtc", // chp.ftc ftc word
+ 94, OutByte, "sprmCKul", // chp.kul kul byte
+ 95, (FnOut)0, "sprmCSizePos", // chp.hps, chp.hpsPos (see below) 3 bytes
+ 96, OutWord, "sprmCDxaSpace", // chp.dxaSpace dxa word
+ 97, OutWord, "sprmCLid", // chp.lid LID word
+ 98, OutByte, "sprmCIco", // chp.ico ico byte
+ 99, OutWord, "sprmCHps", // chp.hps hps word!
+
+ 100, OutByte, "sprmCHpsInc", // chp.hps (see below) byte
+ 101, OutWord, "sprmCHpsPos", // chp.hpsPos hps byte
+ 102, OutByte, "sprmCHpsPosAdj", // chp.hpsPos hps (see below) byte
+
+
+ //??
+ 103, (FnOut)0, "?sprmCMajority", // chp.fBold, chp.fItalic, chp.fSmallCaps, ...
+
+
+ 104, OutByte, "sprmCIss", // chp.iss iss byte
+ 105, (FnOut)0, "sprmCHpsNew50", // chp.hps hps variable width, length always recorded as 2
+ 106, (FnOut)0, "sprmCHpsInc1", // chp.hps complex (see below) variable width, length always recorded as 2
+ 107, OutShort, "sprmCHpsKern", // chp.hpsKern hps short
+ 108, (FnOut)0, "sprmCMajority50", // chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, ...
+ 109, OutShort, "sprmCHpsMul", // chp.hps percentage to grow hps short
+
+ 110, OutShort, "sprmCCondHyhen", // chp.ysri ysri short
+ 117, OutBool, "sprmCFSpec", // chp.fSpec 1 or 0 bit
+ 118, OutBool, "sprmCFObj", // chp.fObj 1 or 0 bit
+ 119, (FnOut)0, "sprmPicBrcl", // pic.brcl brcl (see PIC structure definition) byte
+
+ 120, (FnOut)0, "sprmPicScale", // pic.mx, pic.my, pic.dxaCropleft,
+ 121, (FnOut)0, "sprmPicBrcTop", // pic.brcTop BRC word
+ 122, (FnOut)0, "sprmPicBrcLeft", // pic.brcLeft BRC word
+ 123, (FnOut)0, "sprmPicBrcBottom", // pic.brcBottom BRC word
+ 124, (FnOut)0, "sprmPicBrcRight", // pic.brcRight BRC word
+ 131, OutByte, "sprmSScnsPgn", // sep.cnsPgn cns byte
+ 132, (FnOut)0, "sprmSiHeadingPgn", // sep.iHeadingPgn heading number level byte
+ 133, (FnOut)0, "sprmSOlstAnm", // sep.olstAnm OLST variable length
+ 136, (FnOut)0, "sprmSDxaColWidth", // sep.rgdxaColWidthSpacing complex (see below) 3 bytes
+ 137, (FnOut)0, "sprmSDxaColSpacing", // sep.rgdxaColWidthSpacing complex (see below) 3 bytes
+ 138, OutBool, "sprmSFEvenlySpaced", // sep.fEvenlySpaced 1 or 0 byte
+ 139, OutBool, "sprmSFProtected", // sep.fUnlocked 1 or 0 byte
+
+ 140, OutWord, "sprmSDmBinFirst", // sep.dmBinFirst word
+ 141, OutWord, "sprmSDmBinOther", // sep.dmBinOther word
+ 142, OutByte, "sprmSBkc", // sep.bkc bkc byte
+ 143, OutBool, "sprmSFTitlePage", // sep.fTitlePage 0 or 1 byte
+ 144, OutWord, "sprmSCcolumns", // sep.ccolM1 # of cols - 1 word
+ 145, OutWord, "sprmSDxaColumns", // sep.dxaColumns dxa word
+ 146, (FnOut)0, "sprmSFAutoPgn", // sep.fAutoPgn obsolete byte
+ 147, OutByte, "sprmSNfcPgn", // sep.nfcPgn nfc byte
+ 148, OutShort, "sprmSDyaPgn", // sep.dyaPgn dya short
+ 149, OutShort, "sprmSDxaPgn", // sep.dxaPgn dya short
+
+ 150, OutBool, "sprmSFPgnRestart", // sep.fPgnRestart 0 or 1 byte
+ 151, OutBool, "sprmSFEndnote", // sep.fEndnote 0 or 1 byte
+ 152, OutByte, "sprmSLnc", // sep.lnc lnc byte
+ 153, (FnOut)0, "sprmSGprfIhdt", // sep.grpfIhdt grpfihdt (see Headers and Footers topic) byte
+ 154, OutWord, "sprmSNLnnMod", // sep.nLnnMod non-neg int. word
+ 155, OutWord, "sprmSDxaLnn", // sep.dxaLnn dxa word
+ 156, OutWord, "sprmSDyaHdrTop", // sep.dyaHdrTop dya word
+ 157, OutWord, "sprmSDyaHdrBottom", // sep.dyaHdrBottom dya word
+ 158, OutBool, "sprmSLBetween", // sep.fLBetween 0 or 1 byte
+ 159, OutByte, "sprmSVjc", // sep.vjc vjc byte
+
+ 160, OutWord, "sprmSLnnMin", // sep.lnnMin lnn word
+ 161, OutWord, "sprmSPgnStart", // sep.pgnStart pgn word
+ 162, OutByte, "sprmSBOrientation", // sep.dmOrientPage dm byte
+
+
+ //??
+ 163, OutWord, "?SprmSBCustomize 163", //???
+
+
+ 164, OutWord, "sprmSXaPage", // sep.xaPage xa word
+ 165, OutWord, "sprmSYaPage", // sep.yaPage ya word
+ 166, OutWord, "sprmSDxaLeft", // sep.dxaLeft dxa word
+ 167, OutWord, "sprmSDxaRight", // sep.dxaRight dxa word
+ 168, OutWord, "sprmSDyaTop", // sep.dyaTop dya word
+ 169, OutWord, "sprmSDyaBottom", // sep.dyaBottom dya word
+
+ 170, OutWord, "sprmSDzaGutter", // sep.dzaGutter dza word
+ 171, OutWord, "sprmSDMPaperReq", // sep.dmPaperReq dm word
+ 182, OutWord, "sprmTJc", // tap.jc jc word (low order byte is significant)
+ 183, OutWord, "sprmTDxaLeft", // tap.rgdxaCenter (see below) dxa word
+ 184, OutWord, "sprmTDxaGapHalf", // tap.dxaGapHalf, tap.rgdxaCenter (see below) dxa word
+ 185, OutBool, "sprmTFCantSplit", // tap.fCantSplit 1 or 0 byte
+ 186, OutBool, "sprmTTableHeader", // tap.fTableHeader 1 or 0 byte
+ 187, OutWordsHex, "sprmTTableBorders", // tap.rgbrcTable complex(see below) 12 bytes
+ 188, (FnOut)0, "sprmTDefTable10", // tap.rgdxaCenter, tap.rgtc complex (see below) variable length
+ 189, OutShort, "sprmTDyaRowHeight", // tap.dyaRowHeight dya word
+
+
+ //??
+ 190, OutTab190, "sprmTDefTable", // tap.rgtc complex (see below)
+
+
+ //??
+ 191, OutTab191, "sprmTDefTableShd", // tap.rgshd complex (see below)
+
+
+ 192, OutTab192, "sprmTTlp", // tap.tlp TLP 4 bytes
+ 193, (FnOut)0, "sprmTSetBrc", // tap.rgtc[].rgbrc complex (see below) 5 bytes
+ 194, (FnOut)0, "sprmTInsert", // tap.rgdxaCenter,tap.rgtc complex (see below) 4 bytes
+ 195, (FnOut)0, "sprmTDelete", // tap.rgdxaCenter, tap.rgtc complex (see below) word
+ 196, (FnOut)0, "sprmTDxaCol", // tap.rgdxaCenter complex (see below) 4 bytes
+ 197, (FnOut)0, "sprmTMerge", // tap.fFirstMerged, tap.fMerged complex (see below) word
+ 198, (FnOut)0, "sprmTSplit", // tap.fFirstMerged, tap.fMerged complex (see below) word
+ 199, (FnOut)0, "sprmTSetBrc10", // tap.rgtc[].rgbrc complex (see below) 5 bytes
+
+ 200, (FnOut)0, "sprmTSetShd", // tap.rgshd complex (see below) 4 bytes
+
+
+
+ // ab hier Selbstdefinierte Ids
+
+ 256, (FnOut)0, "FootNote",
+ 257, (FnOut)0, "EndNote",
+ 258, (FnOut)0, "??258 selbstdef.",
+ 259, (FnOut)0, "??259 selbstdef.",
+ 260, (FnOut)0, "Field",
+
+//- neue ab Ver8 ------------------------------------------------------------
+
+ 0x4600, OutShort,"sprmPIstd", // pap.istd;istd (style code);short;
+ 0xC601, (FnOut)0,"sprmPIstdPermute", // pap.istd;permutation vector (see below);variable length;
+ 0x2602, OutByte, "sprmPIncLvl", // pap.istd, pap.lvl;difference between istd of base PAP and istd of PAP to be produced (see below);byte;
+ 0x2403, OutByte, "sprmPJc", // pap.jc;jc (justification);byte;
+ 0x2404, OutByte, "sprmPFSideBySide", // pap.fSideBySide;0 or 1;byte;
+ 0x2405, OutByte, "sprmPFKeep", // pap.fKeep;0 or 1;byte;
+ 0x2406, OutByte, "sprmPFKeepFollow", // pap.fKeepFollow;0 or 1;byte;
+ 0x2407, OutByte, "sprmPFPageBreakBefore", // pap.fPageBreakBefore;0 or 1;byte;
+ 0x2408, OutByte, "sprmPBrcl", // pap.brcl;brcl;byte;
+ 0x2409, OutByte, "sprmPBrcp", // pap.brcp;brcp;byte;
+ 0x260A, OutByte, "sprmPIlvl", // pap.ilvl;ilvl;byte;
+ 0x460B, OutShort, "sprmPIlfo", // pap.ilfo;ilfo (list index) ;short;
+ 0x240C, OutByte, "sprmPFNoLineNumb", // pap.fNoLnn;0 or 1;byte;
+ 0xC60D, OutTab, "sprmPChgTabsPapx", // pap.itbdMac, pap.rgdxaTab, pap.rgtbd;complex - see below;variable length
+ 0x840E, OutWord, "sprmPDxaRight", // pap.dxaRight;dxa;word;
+ 0x840F, OutWord, "sprmPDxaLeft", // pap.dxaLeft;dxa;word;
+ 0x4610, OutWord, "sprmPNest", // pap.dxaLeft;dxa-see below;word;
+ 0x8411, OutWord, "sprmPDxaLeft1", // pap.dxaLeft1;dxa;word;
+ 0x6412,OutLongHex,"sprmPDyaLine", // pap.lspd;an LSPD, a long word structure consisting of a short of dyaLine followed by a short of fMultLinespace - see below;long;
+ 0xA413, OutWord, "sprmPDyaBefore", // pap.dyaBefore;dya;word;
+ 0xA414, OutWord, "sprmPDyaAfter", // pap.dyaAfter;dya;word;
+ 0xC615, (FnOut)0,"sprmPChgTabs", // pap.itbdMac, pap.rgdxaTab, pap.rgtbd;complex - see below;variable length;
+ 0x2416, OutByte, "sprmPFInTable", // pap.fInTable;0 or 1;byte;
+ 0x2417, OutByte, "sprmPFTtp", // pap.fTtp;0 or 1;byte;
+ 0x8418, OutWord, "sprmPDxaAbs", // pap.dxaAbs;dxa;word;
+ 0x8419, OutWord, "sprmPDyaAbs", // pap.dyaAbs;dya;word;
+ 0x841A, OutWord, "sprmPDxaWidth", // pap.dxaWidth;dxa;word;
+ 0x261B, OutByte, "sprmPPc", // pap.pcHorz, pap.pcVert;complex - see below;byte;
+ 0x461C, OutWord, "sprmPBrcTop10", // pap.brcTop;BRC10;word;
+ 0x461D, OutWord, "sprmPBrcLeft10", // pap.brcLeft;BRC10;word;
+ 0x461E, OutWord, "sprmPBrcBottom10", // pap.brcBottom;BRC10;word;
+ 0x461F, OutWord, "sprmPBrcRight10", // pap.brcRight;BRC10;word;
+ 0x4620, OutWord, "sprmPBrcBetween10", // pap.brcBetween;BRC10;word;
+ 0x4621, OutWord, "sprmPBrcBar10", // pap.brcBar;BRC10;word;
+ 0x4622, OutWord, "sprmPDxaFromText10", // pap.dxaFromText;dxa;word;
+ 0x2423, OutByte, "sprmPWr", // pap.wr;wr (see description of PAP for definition;byte;
+ 0x6424,OutLongHex,"sprmPBrcTop", // pap.brcTop;BRC;long;
+ 0x6425,OutLongHex,"sprmPBrcLeft", // pap.brcLeft;BRC;long;
+ 0x6426,OutLongHex,"sprmPBrcBottom", // pap.brcBottom;BRC;long;
+ 0x6427,OutLongHex,"sprmPBrcRight", // pap.brcRight;BRC;long;
+ 0x6428,OutLongHex,"sprmPBrcBetween", // pap.brcBetween;BRC;long;
+ 0x6629,OutLongHex,"sprmPBrcBar", // pap.brcBar;BRC;long;
+ 0x242A, OutByte, "sprmPFNoAutoHyph", // pap.fNoAutoHyph;0 or 1;byte;
+ 0x442B, OutWord, "sprmPWHeightAbs", // pap.wHeightAbs;w;word;
+ 0x442C, OutShort,"sprmPDcs", // pap.dcs;DCS;short;
+ 0x442D, OutWord, "sprmPShd", // pap.shd;SHD;word;
+ 0x842E, OutWord, "sprmPDyaFromText", // pap.dyaFromText;dya;word;
+ 0x842F, OutWord, "sprmPDxaFromText", // pap.dxaFromText;dxa;word;
+ 0x2430, OutByte, "sprmPFLocked", // pap.fLocked;0 or 1;byte;
+ 0x2431, OutByte, "sprmPFWidowControl", // pap.fWidowControl;0 or 1;byte;
+ 0xC632, (FnOut)0,"sprmPRuler", // ;;variable length;
+ 0x2433, OutByte, "sprmPFKinsoku", // pap.fKinsoku;0 or 1;byte;
+ 0x2434, OutByte, "sprmPFWordWrap", // pap.fWordWrap;0 or 1;byte;
+ 0x2435, OutByte, "sprmPFOverflowPunct", // pap.fOverflowPunct;0 or 1;byte;
+ 0x2436, OutByte, "sprmPFTopLinePunct", // pap.fTopLinePunct;0 or 1;byte;
+ 0x2437, OutByte, "sprmPFAutoSpaceDE", // pap.fAutoSpaceDE;0 or 1;byte;
+ 0x2438, OutByte, "sprmPFAutoSpaceDN", // pap.fAutoSpaceDN;0 or 1;byte;
+ 0x4439, OutWord, "sprmPWAlignFont", // pap.wAlignFont;iFa (see description of PAP for definition);word;
+ 0x443A, OutWord, "sprmPFrameTextFlow", // pap.fVertical pap.fBackward pap.fRotateFont;complex (see description of PAP for definition);word;
+ 0x243B, OutByte, "sprmPISnapBaseLine", // obsolete: not applicable in Word97 and later versions;;byte;
+ 0xC63E, (FnOut)0,"sprmPAnld", // pap.anld;;variable length;
+ 0xC63F, (FnOut)0,"sprmPPropRMark", // pap.fPropRMark;complex (see below);variable length;
+ 0x2640, OutByte, "sprmPOutLvl", // pap.lvl;has no effect if pap.istd is < 1 or is > 9;byte;
+ 0x2441, OutByte, "sprmPFBiDi", // ;;byte;
+ 0x2443, OutBool, "sprmPFNumRMIns", // pap.fNumRMIns;1 or 0;bit;
+ 0x2444, OutByte, "sprmPCrLf", // ;;byte;
+ 0xC645, (FnOut)0,"sprmPNumRM", // pap.numrm;;variable length;
+ 0x6645,OutHugeHex,"sprmPHugePapx", // see below;fc in the data stream to locate the huge grpprl (see below);long;
+ 0x6646,OutHugeHex,"sprmPHugePapx", // see below;fc in the data stream to locate the huge grpprl (see below);long;
+ 0x2447, OutByte, "sprmPFUsePgsuSettings", // pap.fUsePgsuSettings;1 or 0;byte;
+ 0x2448, OutByte, "sprmPFAdjustRight", // pap.fAdjustRight;1 or 0;byte;
+ 0x0800, OutBool, "sprmCFRMarkDel", // chp.fRMarkDel;1 or 0;bit;
+ 0x0801, OutBool, "sprmCFRMark", // chp.fRMark;1 or 0;bit;
+ 0x0802, OutBool, "sprmCFFldVanish", // chp.fFldVanish;1 or 0;bit;
+ 0x6A03, OutTab68,"sprmCPicLocation", // chp.fcPic and chp.fSpec;see below;variable length, length recorded is always 4;
+ 0x4804, OutShort,"sprmCIbstRMark", // chp.ibstRMark;index into sttbRMark;short;
+ 0x6805,OutLongHex,"sprmCDttmRMark", // chp.dttmRMark;DTTM;long;
+ 0x0806, OutBool, "sprmCFData", // chp.fData;1 or 0;bit;
+ 0x4807, OutShort, "sprmCIdslRMark", // chp.idslRMReason;an index to a table of strings defined in Word 6.0 executables;short;
+ 0xEA08, (FnOut)0,"sprmCChs", // chp.fChsDiff and chp.chse;see below;3 bytes;
+ 0x6A09, (FnOut)0,"sprmCSymbol", // chp.fSpec, chp.xchSym and chp.ftcSym;see below;variable length, length recorded is always 4;
+ 0x080A, OutBool, "sprmCFOle2", // chp.fOle2;1 or 0;bit;
+//0x480B, obsolete,"sprmCIdCharType", // obsolete: not applicable in Word97 and later versions;;;
+ 0x2A0C, OutByte, "sprmCHighlight", // chp.fHighlight, chp.icoHighlight;ico (fHighlight is set to 1 iff ico is not 0);byte;
+ 0x680E,OutLongHex,"sprmCObjLocation", // chp.fcObj;FC;long;
+//0x2A10, ? ? ? , "sprmCFFtcAsciSymb", // ;;;
+ 0x4A30, OutShort, "sprmCIstd", // chp.istd;istd, see stylesheet definition;short;
+ 0xCA31, (FnOut)0,"sprmCIstdPermute", // chp.istd;permutation vector (see below);variable length;
+ 0x2A32, (FnOut)0,"sprmCDefault", // whole CHP (see below);none;variable length;
+ 0x2A33, (FnOut)0,"sprmCPlain", // whole CHP (see below);none; Laenge: 0;
+//0x2A34, ? ? ?, "sprmCKcd", // ;;;
+ 0x0835, OutByte, "sprmCFBold", // chp.fBold;0,1, 128, or 129 (see below);byte;
+ 0x0836, OutByte, "sprmCFItalic", // chp.fItalic;0,1, 128, or 129 (see below);byte;
+ 0x0837, OutByte, "sprmCFStrike", // chp.fStrike;0,1, 128, or 129 (see below);byte;
+ 0x0838, OutByte, "sprmCFOutline", // chp.fOutline;0,1, 128, or 129 (see below);byte;
+ 0x0839, OutByte, "sprmCFShadow", // chp.fShadow;0,1, 128, or 129 (see below);byte;
+ 0x083A, OutByte, "sprmCFSmallCaps", // chp.fSmallCaps;0,1, 128, or 129 (see below);byte;
+ 0x083B, OutByte, "sprmCFCaps", // chp.fCaps;0,1, 128, or 129 (see below);byte;
+ 0x083C, OutByte, "sprmCFVanish", // chp.fVanish;0,1, 128, or 129 (see below);byte;
+ 0x4A3D, OutWord, "sprmCFtcDefault", // ;ftc, only used internally, never stored in file;word;
+ 0x2A3E, OutByte, "sprmCKul", // chp.kul;kul;byte;
+ 0xEA3F, (FnOut)0,"sprmCSizePos", // chp.hps, chp.hpsPos;(see below);3 bytes;
+ 0x8840, OutWord, "sprmCDxaSpace", // chp.dxaSpace;dxa;word;
+ 0x4A41, OutWord, "sprmCLid", // ;only used internally never stored;word;
+ 0x2A42, OutByte, "sprmCIco", // chp.ico;ico;byte;
+ 0x4A43, OutWord, "sprmCHps", // chp.hps;hps;word;
+ 0x2A44, OutByte, "sprmCHpsInc", // chp.hps;(see below);byte;
+ 0x4845, OutByte, "sprmCHpsPos", // chp.hpsPos;hps;byte;
+ 0x2A46, OutByte, "sprmCHpsPosAdj", // chp.hpsPos;hps (see below);byte;
+ 0xCA47, (FnOut)0,"sprmCMajority", // chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, chp.fStrike, chp.fCaps, chp.rgftc, chp.hps, chp.hpsPos, chp.kul, chp.dxaSpace, chp.ico, chp.rglid;complex (see below);variable length, length byte plus size of following grpprl;
+ 0x2A48, OutByte, "sprmCIss", // chp.iss;iss;byte;
+ 0xCA49, (FnOut)0,"sprmCHpsNew50", // chp.hps;hps;variable width, length always recorded as 2;
+ 0xCA4A, (FnOut)0,"sprmCHpsInc1", // chp.hps;complex (see below);variable width, length always recorded as 2;
+ 0x484B, OutShort,"sprmCHpsKern", // chp.hpsKern;hps;short;
+ 0xCA4C, (FnOut)0,"sprmCMajority50", // chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, chp.fStrike, chp.fCaps, chp.ftc, chp.hps, chp.hpsPos, chp.kul, chp.dxaSpace, chp.ico,;complex (see below);variable length;
+ 0x4A4D, OutShort,"sprmCHpsMul", // chp.hps;percentage to grow hps;short;
+ 0x484E, OutShort,"sprmCYsri", // chp.ysri;ysri;short;
+ 0x4A4F, OutShort,"sprmCRgFtc0", // chp.rgftc[0];ftc for ASCII text (see below);short;
+ 0x4A50, OutShort,"sprmCRgFtc1", // chp.rgftc[1];ftc for Far East text (see below);short;
+ 0x4A51, OutShort,"sprmCRgFtc2", // chp.rgftc[2];ftc for non-Far East text (see below);short;
+//0x4852, ? ? ? , "sprmCCharScale", // ;;;
+ 0x2A53, OutByte, "sprmCFDStrike", // chp.fDStrike;;byte;
+ 0x0854, OutBool, "sprmCFImprint", // chp.fImprint;1 or 0;bit;
+ 0x0855, OutBool, "sprmCFSpec", // chp.fSpec ;1 or 0;bit;
+ 0x0856, OutBool, "sprmCFObj", // chp.fObj;1 or 0;bit;
+ 0xCA57, (FnOut)0,"sprmCPropRMark", // chp.fPropRMark, chp.ibstPropRMark, chp.dttmPropRMark;Complex (see below);variable length always recorded as 7 bytes;
+ 0x0858, OutBool, "sprmCFEmboss", // chp.fEmboss;1 or 0;bit;
+ 0x2859, OutByte, "sprmCSfxText", // chp.sfxtText;text animation;byte;
+//0x085A, ? ? ? , "sprmCFBiDi", // ;;;
+//0x085B, ? ? ? , "sprmCFDiacColor", // ;;;
+//0x085C, ? ? ? , "sprmCFBoldBi", // ;;;
+//0x085D, ? ? ? , "sprmCFItalicBi", // ;;;
+//0x4A5E, ? ? ? , "sprmCFtcBi", // ;;;
+//0x485F, ? ? ? , "sprmCLidBi", // ;;;
+//0x4A60, ? ? ? , "sprmCIcoBi", // ;;;
+//0x4A61, ? ? ? , "sprmCHpsBi", // ;;;
+ 0xCA62, (FnOut)0,"sprmCDispFldRMark", // chp.fDispFldRMark, chp.ibstDispFldRMark, chp.dttmDispFldRMark ;Complex (see below);variable length always recorded as 39 bytes;
+ 0x4863, OutShort,"sprmCIbstRMarkDel", // chp.ibstRMarkDel;index into sttbRMark;short;
+ 0x6864,OutLongHex,"sprmCDttmRMarkDel", // chp.dttmRMarkDel;DTTM;long;
+ 0x6865,OutLongHex,"sprmCBrc", // chp.brc;BRC;long;
+ 0x4866, OutShort,"sprmCShd", // chp.shd;SHD;short;
+ 0x4867, OutShort,"sprmCIdslRMarkDel", // chp.idslRMReasonDel;an index to a table of strings defined in Word 6.0 executables;short;
+ 0x0868, OutBool, "sprmCFUsePgsuSettings", // chp.fUsePgsuSettings;1 or 0;bit;
+ 0x486B, OutWord, "sprmCCpg", // ;;word;
+ 0x486D, OutWord, "sprmCRgLid0", // chp.rglid[0];LID: for non-Far East text;word;
+ 0x486E, OutWord, "sprmCRgLid1", // chp.rglid[1];LID: for Far East text;word;
+ 0x286F, OutByte, "sprmCIdctHint", // chp.idctHint;IDCT: (see below);byte;
+ 0x2E00, OutByte, "sprmPicBrcl", // pic.brcl;brcl (see PIC structure definition);byte;
+ 0xCE01, (FnOut)0,"sprmPicScale", // pic.mx, pic.my, pic.dxaCropleft, pic.dyaCropTop pic.dxaCropRight, pic.dyaCropBottom;Complex (see below);length byte plus 12 bytes;
+ 0x6C02,OutLongHex,"sprmPicBrcTop", // pic.brcTop;BRC;long;
+ 0x6C03,OutLongHex,"sprmPicBrcLeft", // pic.brcLeft;BRC;long;
+ 0x6C04,OutLongHex,"sprmPicBrcBottom", // pic.brcBottom;BRC;long;
+ 0x6C05,OutLongHex,"sprmPicBrcRight", // pic.brcRight;BRC;long;
+ 0x3000, OutByte, "sprmScnsPgn", // sep.cnsPgn;cns;byte;
+ 0x3001, OutByte, "sprmSiHeadingPgn", // sep.iHeadingPgn;heading number level;byte;
+ 0xD202, (FnOut)0,"sprmSOlstAnm", // sep.olstAnm;OLST;variable length;
+ 0xF203, (FnOut)0,"sprmSDxaColWidth", // sep.rgdxaColWidthSpacing;complex (see below);3 bytes;
+ 0xF204, (FnOut)0,"sprmSDxaColSpacing", // sep.rgdxaColWidthSpacing;complex (see below);3 bytes;
+ 0x3005, OutByte, "sprmSFEvenlySpaced", // sep.fEvenlySpaced;1 or 0;byte;
+ 0x3006, OutByte, "sprmSFProtected", // sep.fUnlocked;1 or 0;byte;
+ 0x5007, OutWord, "sprmSDmBinFirst", // sep.dmBinFirst;;word;
+ 0x5008, OutWord, "sprmSDmBinOther", // sep.dmBinOther;;word;
+ 0x3009, OutByte, "sprmSBkc", // sep.bkc;bkc;byte;
+ 0x300A, OutByte, "sprmSFTitlePage", // sep.fTitlePage;0 or 1;byte;
+ 0x500B, OutWord, "sprmSCcolumns", // sep.ccolM1;# of cols - 1;word;
+ 0x900C, OutWord, "sprmSDxaColumns", // sep.dxaColumns;dxa;word;
+ 0x300D, OutByte, "sprmSFAutoPgn", // sep.fAutoPgn;obsolete;byte;
+ 0x300E, OutByte, "sprmSNfcPgn", // sep.nfcPgn;nfc;byte;
+ 0xB00F, OutShort,"sprmSDyaPgn", // sep.dyaPgn;dya;short;
+ 0xB010, OutShort,"sprmSDxaPgn", // sep.dxaPgn;dya;short;
+ 0x3011, OutByte, "sprmSFPgnRestart", // sep.fPgnRestart;0 or 1;byte;
+ 0x3012, OutByte, "sprmSFEndnote", // sep.fEndnote;0 or 1;byte;
+ 0x3013, OutByte, "sprmSLnc", // sep.lnc;lnc;byte;
+ 0x3014, OutByte, "sprmSGprfIhdt", // sep.grpfIhdt;grpfihdt (see Headers and Footers topic);byte;
+ 0x5015, OutWord, "sprmSNLnnMod", // sep.nLnnMod;non-neg int.;word;
+ 0x9016, OutWord, "sprmSDxaLnn", // sep.dxaLnn;dxa;word;
+ 0xB017, OutWord, "sprmSDyaHdrTop", // sep.dyaHdrTop;dya;word;
+ 0xB018, OutWord, "sprmSDyaHdrBottom", // sep.dyaHdrBottom;dya;word;
+ 0x3019, OutByte, "sprmSLBetween", // sep.fLBetween;0 or 1;byte;
+ 0x301A, OutByte, "sprmSVjc", // sep.vjc;vjc;byte;
+ 0x501B, OutWord, "sprmSLnnMin", // sep.lnnMin;lnn;word;
+ 0x501C, OutWord, "sprmSPgnStart", // sep.pgnStart;pgn;word;
+ 0x301D, OutByte, "sprmSBOrientation", // sep.dmOrientPage;dm;byte;
+//0x301E, ? ? ? , "sprmSBCustomize", // ;;;
+ 0xB01F, OutWord, "sprmSXaPage", // sep.xaPage;xa;word;
+ 0xB020, OutWord, "sprmSYaPage", // sep.yaPage;ya;word;
+ 0xB021, OutWord, "sprmSDxaLeft", // sep.dxaLeft;dxa;word;
+ 0xB022, OutWord, "sprmSDxaRight", // sep.dxaRight;dxa;word;
+ 0x9023, OutWord, "sprmSDyaTop", // sep.dyaTop;dya;word;
+ 0x9024, OutWord, "sprmSDyaBottom", // sep.dyaBottom;dya;word;
+ 0xB025, OutWord, "sprmSDzaGutter", // sep.dzaGutter;dza;word;
+ 0x5026, OutWord, "sprmSDmPaperReq", // sep.dmPaperReq;dm;word;
+ 0xD227, (FnOut)0,"sprmSPropRMark", // sep.fPropRMark, sep.ibstPropRMark, sep.dttmPropRMark ;complex (see below);variable length always recorded as 7 bytes;
+//0x3228, ? ? ? , "sprmSFBiDi", // ;;;
+//0x3229, ? ? ? , "sprmSFFacingCol", // ;;;
+//0x322A, ? ? ? , "sprmSFRTLGutter", // ;;;
+ 0x702B,OutLongHex,"sprmSBrcTop", // sep.brcTop;BRC;long;
+ 0x702C,OutLongHex,"sprmSBrcLeft", // sep.brcLeft;BRC;long;
+ 0x702D,OutLongHex,"sprmSBrcBottom", // sep.brcBottom;BRC;long;
+ 0x702E,OutLongHex,"sprmSBrcRight", // sep.brcRight;BRC;long;
+ 0x522F, OutWord, "sprmSPgbProp", // sep.pgbProp;;word;
+ 0x7030,OutLongHex,"sprmSDxtCharSpace", // sep.dxtCharSpace;dxt;long;
+ 0x9031,OutLongHex,"sprmSDyaLinePitch", // sep.dyaLinePitch;dya;long;
+//0x5032, ? ? ? , "sprmSClm", // ;;;
+ 0x5033, OutShort,"sprmSTextFlow", // sep.wTextFlow;complex (see below);short;
+ 0x5400, OutWord, "sprmTJc", // tap.jc;jc;word (low order byte is significant);
+ 0x9601, OutWord, "sprmTDxaLeft", // tap.rgdxaCenter (see below);dxa;word;
+ 0x9602, OutWord, "sprmTDxaGapHalf", // tap.dxaGapHalf, tap.rgdxaCenter (see below);dxa;word;
+ 0x3403, OutByte, "sprmTFCantSplit", // tap.fCantSplit;1 or 0;byte;
+ 0x3404, OutByte, "sprmTTableHeader", // tap.fTableHeader;1 or 0;byte;
+ 0xD605, (FnOut)0,"sprmTTableBorders", // tap.rgbrcTable;complex(see below);24 bytes;
+ 0xD606, (FnOut)0,"sprmTDefTable10", // tap.rgdxaCenter, tap.rgtc;complex (see below);variable length;
+ 0x9407, OutShort, "sprmTDyaRowHeight", // tap.dyaRowHeight;dya;word;
+ 0xD608, OutTabD608,"sprmTDefTable", // tap.rgtc;complex (see below);;
+ 0xD609, OutTabD609,"sprmTDefTableShd", // tap.rgshd;complex (see below);;
+ 0x740A, (FnOut)0,"sprmTTlp", // tap.tlp;TLP;4 bytes;
+//0x560B, ? ? ? , "sprmTFBiDi", // ;;;
+//0x740C, ? ? ? , "sprmTHTMLProps", // ;;;
+ 0xD620, (FnOut)0,"sprmTSetBrc", // tap.rgtc[].rgbrc;complex (see below);5 bytes;
+ 0x7621, (FnOut)0,"sprmTInsert", // tap.rgdxaCenter, tap.rgtc;complex (see below);4 bytes;
+ 0x5622, OutWord, "sprmTDelete", // tap.rgdxaCenter, tap.rgtc;complex (see below);word;
+ 0x7623, (FnOut)0,"sprmTDxaCol", // tap.rgdxaCenter;complex (see below);4 bytes;
+ 0x5624, OutWord, "sprmTMerge", // tap.fFirstMerged, tap.fMerged;complex (see below);word;
+ 0x5625, OutWord, "sprmTSplit", // tap.fFirstMerged, tap.fMerged;complex (see below);word;
+ 0xD626, (FnOut)0,"sprmTSetBrc10", // tap.rgtc[].rgbrc;complex (see below);5 bytes;
+ 0x7627, (FnOut)0,"sprmTSetShd", // tap.rgshd;complex (see below);4 bytes;
+ 0x7628, (FnOut)0,"sprmTSetShdOdd", // tap.rgshd;complex (see below);4 bytes;
+ 0x7629, OutWord, "sprmTTextFlow", // tap.rgtc[].fVerticaltap.rgtc[].fBackwardtap.rgtc[].fRotateFont;0 or 10 or 10 or 1;word;
+//0xD62A, ? ? ? , "sprmTDiagLine", // ;;;
+ 0xD62B, (FnOut)0,"sprmTVertMerge", // tap.rgtc[].vertMerge;complex (see below);variable length always recorded as 2 bytes;
+ 0xD62C, (FnOut)0,"sprmTVertAlign", // tap.rgtc[].vertAlign;complex (see below);variable length always recorded as 3 byte;
+};
+
+
+static int
+#if defined( WNT )
+ __cdecl
+#endif
+#if defined( ICC )
+ _Optlink
+#endif
+ CompSprmDumpId( const void *pFirst, const void *pSecond)
+{
+ return( ((SprmDumpInfo*)pFirst )->nId - ((SprmDumpInfo*)pSecond)->nId );
+}
+
+
+SprmDumpInfo& WW8GetSprmDumpInfo( USHORT nId )
+{
+ // ggfs. Tab sortieren
+ static BOOL bInit = FALSE;
+ if( !bInit )
+ {
+ qsort( (void*)aSprmDumpTab,
+ sizeof( aSprmDumpTab ) / sizeof (aSprmDumpTab[ 0 ]),
+ sizeof( aSprmDumpTab[ 0 ] ),
+ CompSprmDumpId );
+ bInit = TRUE;
+ }
+ // Sprm heraussuchen
+ void* pFound;
+ SprmDumpInfo aSrch;
+ aSrch.nId = nId;
+ if( 0 == ( pFound = bsearch( (char *) &aSrch,
+ (void*) aSprmDumpTab,
+ sizeof( aSprmDumpTab ) / sizeof (aSprmDumpTab[ 0 ]),
+ sizeof( aSprmDumpTab[ 0 ] ),
+ CompSprmDumpId )))
+ {
+ // im Fehlerfall auf Nulltes Element verweisen
+ pFound = (void*)aSprmDumpTab;
+ }
+ return *(SprmDumpInfo*) pFound;
+}
+
+
+
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/dump/ww8darr.cxx,v 1.1.1.1 2000-09-18 17:14:59 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.8 2000/09/18 16:05:03 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.7 1999/10/28 20:35:11 jp
+ write table shading vakues
+
+ Revision 1.6 1999/10/28 18:13:47 jp
+ write table height as short
+
+ Revision 1.5 1999/10/27 17:57:53 jp
+ changes for tables
+
+ Revision 1.4 1999/08/16 10:22:38 JP
+ neu: Dump EscherObjects
+
+
+ Rev 1.3 16 Aug 1999 12:22:38 JP
+ neu: Dump EscherObjects
+
+ Rev 1.2 15 Jun 1999 14:12:36 JP
+ new: ListTable and other Contents
+
+ Rev 1.1 10 Jun 1998 17:22:32 KHZ
+ Zwischenstand-Sicherung Dumper
+
+ Rev 1.0 27 May 1998 15:30:10 KHZ
+ Initial revision.
+
+
+*************************************************************************/
+
+
diff --git a/sw/source/filter/ww8/dump/ww8darr.hxx b/sw/source/filter/ww8/dump/ww8darr.hxx
new file mode 100644
index 000000000000..67c22e460f23
--- /dev/null
+++ b/sw/source/filter/ww8/dump/ww8darr.hxx
@@ -0,0 +1,77 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8darr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WW8DARR_HXX
+#define _WW8DARR_HXX
+
+typedef void (*FnOut)( SvStream& rSt, short );
+
+struct SprmDumpInfo
+{
+ USHORT nId;
+ FnOut pOutFnc;
+ char* pName;
+};
+
+SprmDumpInfo& WW8GetSprmDumpInfo( USHORT nId );
+
+
+#endif
diff --git a/sw/source/filter/ww8/dump/ww8dout.cxx b/sw/source/filter/ww8/dump/ww8dout.cxx
new file mode 100644
index 000000000000..48eef00fc183
--- /dev/null
+++ b/sw/source/filter/ww8/dump/ww8dout.cxx
@@ -0,0 +1,499 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8dout.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 <stdio.h> // getchar
+
+//#include "defs.hxx"
+#include <tools/solar.h> // BYTE
+//#include "wwscan.hxx" // aWwStor
+#include "ww8dout.hxx"
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+
+extern SvStorageStreamRef xStrm;
+extern SvStorageStreamRef xTableStream;
+extern SvStorageStreamRef xDataStream; // ist bei Ver6-7 mit xStrm identisch,
+void DumpSprms( BYTE nVersion, SvStream& rSt, short nLen );
+
+ostream* pOut = 0;
+
+#define DumpVer8
+
+//-----------------------------------------
+// Streams
+//-----------------------------------------
+
+
+static int level = 0;
+static long lastpos = -1;
+
+ostream& __cdecl endl1( ostream& s ){
+//ostream& endl1( ostream& s ) {
+ s << endl;
+ return s;
+}
+
+ostream& __cdecl hex2( ostream& s ) {
+ s.width( 2 ); s.fill( (const char)250 );
+ s << hex;
+ return s;
+}
+
+ostream& __cdecl hex4( ostream& s ) {
+ s.width( 4 ); s.fill( (const char)250 );
+ s << hex ;
+ return s;
+}
+
+ostream& __cdecl hex6( ostream& s ) {
+ s.width( 6 ); s.fill( (const char)250 );
+ s << hex ;
+ return s;
+}
+
+ostream& __cdecl hex8( ostream& s ) {
+ s.width( 8 ); s.fill( (const char)250 );
+ s << hex ;
+ return s;
+}
+
+ostream& __cdecl dec2( ostream& s ) {
+ s << dec;
+ s.width( 0 ); s.fill( 0 );
+ return s;
+}
+
+ostream& __cdecl filepos( ostream& s, SvStream& rSt ) {
+ register long pos = rSt.Tell();
+
+ if ( pos != lastpos ){
+#ifndef DumpVer8
+ if( &rSt == &xStrm )
+ s << "D";
+ else
+ s << "T";
+#endif
+ s.width( 6 );
+ s.fill( (const char)250 );
+ s << hex << pos << dec << ' ';
+ s.width( 0 ); s.fill( 0 );
+ lastpos = pos;
+ }else{
+#ifndef DumpVer8
+ s << " ";
+#else
+ s << " ";
+#endif
+ }
+ return s;
+}
+
+ostream& __cdecl indent( ostream& s, SvStream& rSt ) {
+ filepos( s, rSt );
+ for( int i = 0; i < level; i++ ) s << " ";
+ return s;
+}
+
+ostream& __cdecl indent1( ostream& s ) {
+ for( int i = 0; i < level; i++ ) s << " ";
+ return s;
+}
+
+ostream& __cdecl indent2( ostream& s ) {
+#ifndef DumpVer8
+ s << " " << indent1;
+#else
+ s << " " << indent1;
+#endif
+ return s;
+}
+
+ostream& __cdecl begin( ostream& s, SvStream& rSt ) { indent( s, rSt ) << "BEGIN "; level++; return s; }
+
+// begin1 ohne indent
+ostream& __cdecl begin1( ostream& s ) { s << "BEGIN "; level++; return s; }
+
+// begin2 ohne Nummer
+ostream& __cdecl begin2( ostream& s ) { s << indent2 << "BEGIN "; level++; return s; }
+
+ostream& __cdecl end( ostream& s, SvStream& rSt ) { level--; return indent( s, rSt ) << "END "; }
+
+// end1 ohne filepos
+ostream& __cdecl end1( ostream& s ) { level--; return s << indent1 << "END "; }
+
+// end2 ohne Nummer
+ostream& __cdecl end2( ostream& s ) { level--; return s << indent2 << "END "; }
+
+//-----------------------------------------
+// Ausgabe-Funktionen
+//-----------------------------------------
+
+void OutBool( SvStream& rSt, short )
+{
+ BYTE nPara;
+
+ rSt.Read( &nPara, sizeof( nPara ) );
+ switch( nPara ){
+ case 0: *pOut << "F"; break;
+ case 1: *pOut << "T"; break;
+ default: *pOut << "ERROR:" << (USHORT)nPara; break;
+ }
+}
+
+void OutBool4( SvStream& rSt, short )
+{
+ BYTE nPara;
+
+ rSt.Read( &nPara, sizeof( nPara ) );
+ switch( nPara ){
+ case 0: *pOut << "F"; break;
+ case 1: *pOut << "T"; break;
+ case 128: *pOut << "==Style"; break;
+ case 129: *pOut << "!=Style"; break;
+ default: *pOut << "ERROR:" << (USHORT)nPara; break;
+ }
+}
+
+void OutByte( SvStream& rSt, short )
+{
+ BYTE nPara;
+
+ rSt.Read( &nPara, sizeof( nPara ) );
+ *pOut << (USHORT)nPara;
+}
+
+void OutShort( SvStream& rSt, short )
+{
+ short nPara;
+
+ rSt.Read( &nPara, sizeof( nPara ) );
+ *pOut << nPara;
+}
+
+void OutShorts( SvStream& rSt, short nLen )
+{
+ INT16 nPara;
+
+ for( short i = 0; i < nLen / 2; i++ ){
+ rSt.Read( &nPara, sizeof( nPara ) );
+ *pOut << nPara << ' ';
+ }
+}
+
+void OutWord( SvStream& rSt, short )
+{
+ USHORT nPara;
+
+ rSt.Read( &nPara, sizeof( nPara ) );
+ *pOut << nPara;
+}
+
+void OutWords( SvStream& rSt, short nLen )
+{
+ USHORT nPara;
+
+ for( short i = 0; i < nLen / 2; i++ ){
+ rSt.Read( &nPara, sizeof( nPara ) );
+ *pOut << nPara;
+ }
+}
+
+void OutWordHex( SvStream& rSt, short )
+{
+ USHORT nPara;
+
+ rSt.Read( &nPara, sizeof( nPara ) );
+ *pOut << "0x" << hex4 << nPara << dec;
+}
+
+void OutWordsHex( SvStream& rSt, short nLen )
+{
+ USHORT nPara;
+ nLen /= sizeof( nPara );
+ for( short i = 0; i < nLen; i++ ){
+ rSt.Read( &nPara, sizeof( nPara ) );
+ *pOut << "0x" << hex4 << nPara << dec;
+ if( i < nLen - 1 )
+ *pOut << ' ';
+ }
+}
+
+void OutLongsHex( SvStream& rSt, short nLen )
+{
+ long nPara;
+ nLen /= sizeof( nPara );
+ for( short i = 0; i < nLen; i++ )
+ {
+ rSt.Read( &nPara, sizeof( nPara ) );
+ *pOut << "0x" << hex8 << nPara << dec;
+ if( i < nLen - 1 )
+ *pOut << ' ';
+ }
+}
+
+void OutLongHex( SvStream& rSt, short )
+{
+ ULONG nPara;
+
+ rSt.Read( &nPara, sizeof( nPara ) );
+ *pOut << "0x" << hex8 << nPara << dec;
+}
+
+void OutTab68( SvStream& rSt, short )
+{
+ ULONG nPara;
+
+ rSt.Read( &nPara, sizeof( nPara ) );
+ if( nPara == 0 )
+ *pOut << "None";
+ else
+ *pOut << "0x" << hex8 << nPara << dec;
+}
+
+
+void OutTab( SvStream& rSt, short )
+{
+ BYTE nDel, nIns, nType;
+ short nPos, i;
+
+ rSt.Read( &nDel, sizeof( nDel ) );
+ *pOut << "Del " << (USHORT)nDel;
+ if ( nDel ) *pOut << ": ";
+ else *pOut << ", ";
+
+ for( i=1; i<=nDel; i++){
+ rSt.Read( &nPos, sizeof( nPos ) );
+ *pOut << nPos;
+ if( i<nDel ) *pOut << ',';
+ else *pOut << ' ';
+ }
+ rSt.Read( &nIns, sizeof( nIns ) );
+ *pOut << "Ins " << (USHORT)nIns;
+ if ( nIns ) *pOut << ": ";
+
+ for( i=1; i<=nIns; i++){
+ rSt.Read( &nPos, sizeof( nPos ) );
+ *pOut << nPos;
+ if( i<nIns ) *pOut << ',';
+ else *pOut << ' ';
+ }
+ if ( nIns ) *pOut << "Typ: ";
+
+ for( i=1; i<=nIns; i++){
+ rSt.Read( &nType, sizeof( nType ) );
+ *pOut << (USHORT)nType;
+ if( i<nIns ) *pOut << ',';
+ else *pOut << ' ';
+ }
+
+// nSiz = 1 + 2 * nDel + 1 + nIns * 3; // genaue Laenge,
+// stimmt auch bei Laenge > 256
+// bei diesem Tab-Befehl anscheinend nicht noetig
+}
+
+void OutTab190( SvStream& rSt, short nLen )
+{
+ BYTE nCols;
+ rSt.Read( &nCols, sizeof( nCols ) );
+ *pOut << (USHORT)nCols << " Cols: ";
+
+ short nPos, i;
+ for( i = 0; i <= nCols; i++ ){
+ rSt.Read( &nPos, sizeof( nPos ) );
+ *pOut << nPos;
+ if( i < nCols )
+ *pOut << ", ";
+ }
+ *pOut << dec << "; ";
+ for( i = 0; i < nCols; i++ ){
+ *pOut << "Col " << i << " TC: ";
+ OutWordsHex( rSt, 10 );
+ if( i < nCols - 1 )
+ *pOut << "; ";
+ }
+}
+
+void OutTab191( SvStream& rSt, short nLen )
+{
+ BYTE nCols;
+ rSt.Read( &nCols, sizeof( nCols ) );
+ *pOut << (USHORT)nCols << " Cols, SHDs: ";
+ OutWordsHex( rSt, ( nCols + 1 ) * 2 );
+}
+
+void OutTab192( SvStream& rSt, short )
+{
+ OutWord( rSt, 0 );
+ OutWordHex( rSt, 0 );
+}
+
+void OutHugeHex( SvStream& rSt, short nLen )
+{
+ long nPos;
+ rSt.Read( &nPos, sizeof( nPos ) );
+
+ long nCurr = xDataStream->Tell();
+ xDataStream->Seek( nPos );
+
+ xDataStream->Read( &nLen, sizeof( nLen ) );
+
+// *pOut << ", Len max: " << nLen << ", ID:" << nIStd << endl1;
+ *pOut << endl1;
+ DumpSprms( 8, *xDataStream, nLen );
+
+ xDataStream->Seek( nCurr );
+}
+
+void OutTabD608( SvStream& rSt, short nLen )
+{
+ BYTE nHi, nCols;
+ rSt.Read( &nHi, sizeof( nHi ) );
+// nLen += ((short)nHi) << 8;
+
+ rSt.Read( &nCols, sizeof( nCols ) );
+ *pOut << " Cols: " << (short)nCols << ' ' << endl1 << indent2;
+
+ short nPos, i;
+ for( i = 0; i <= nCols; ++i )
+ {
+ rSt.Read( &nPos, sizeof( nPos ) );
+ *pOut << nPos;
+ if( i < nCols )
+ *pOut << ", ";
+ }
+ nLen -= ( nCols + 1 ) * 2;
+ nLen /= 20;
+
+ for( i = 0; i < nLen; ++i )
+ {
+ *pOut << endl1 << indent2 << "Col " << i << " TC: ";
+ OutLongsHex( rSt, 20 );
+ if( i < nLen - 1 )
+ *pOut << "; ";
+ }
+}
+
+void OutTabD609( SvStream& rSt, short nLen )
+{
+ *pOut << " Brush(FBS): ";
+ for( short i = 0; i < nLen / 2; ++i )
+ {
+ UINT16 nVal;
+ rSt.Read( &nVal, sizeof( nVal ) );
+ *pOut << (nVal & 0x1f);
+ *pOut << "|" << ((nVal >> 5) & 0x1f);
+ *pOut << "|" << ((nVal >> 10) & 0x3f);
+ if( i < nLen )
+ *pOut << ", ";
+ }
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/dump/ww8dout.cxx,v 1.1.1.1 2000-09-18 17:14:59 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.9 2000/09/18 16:05:03 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.8 2000/02/11 14:39:38 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.7 1999/11/02 18:06:52 jp
+ Dump of hugepapx
+
+ Revision 1.6 1999/10/28 20:35:15 jp
+ write table shading vakues
+
+ Revision 1.5 1999/10/27 17:58:09 jp
+ changes for tables
+
+ Revision 1.4 1999/06/15 12:14:44 JP
+ new: ListTable and other Contents
+
+
+ Rev 1.3 15 Jun 1999 14:14:44 JP
+ new: ListTable and other Contents
+
+ Rev 1.2 25 Jun 1998 15:44:42 KHZ
+ Strukturaenderung fuer PAPX FKPs
+
+ Rev 1.1 10 Jun 1998 17:22:34 KHZ
+ Zwischenstand-Sicherung Dumper
+
+ Rev 1.0 27 May 1998 15:30:18 KHZ
+ Initial revision.
+
+
+*************************************************************************/
+
+
diff --git a/sw/source/filter/ww8/dump/ww8dout.hxx b/sw/source/filter/ww8/dump/ww8dout.hxx
new file mode 100644
index 000000000000..1b7fca2b33fd
--- /dev/null
+++ b/sw/source/filter/ww8/dump/ww8dout.hxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8dout.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WW8DOUT_HXX
+#define _WW8DOUT_HXX
+
+#ifndef INC_FSTREAM
+ #include <fstream.h> // ostream
+#endif
+#ifndef SOLAR_H
+ #include <tools/solar.h> // BYTE
+#endif
+
+class SvStream;
+
+void OutByte( SvStream& rSt, short nLen );
+void OutBool( SvStream& rSt, short nLen );
+void OutShort( SvStream& rSt, short );
+void OutShorts( SvStream& rSt, short nLen );
+void OutWord( SvStream& rSt, short );
+void OutWords( SvStream& rSt, short nLen );
+void OutWordHex( SvStream& rSt, short );
+void OutWordsHex( SvStream& rSt, short );
+void OutLongHex( SvStream& rSt, short );
+void OutLongsHex( SvStream& rSt, short nLen );
+void OutTab( SvStream& rSt, short nLen );
+void OutTab68( SvStream& rSt, short nLen );
+void OutTab190( SvStream& rSt, short nLen );
+void OutTab191( SvStream& rSt, short nLen );
+void OutTab192( SvStream& rSt, short nLen );
+void OutBool4( SvStream& rSt, short nLen );
+void OutHugeHex( SvStream& rSt, short nLen );
+void OutTabD608( SvStream& rSt, short nLen );
+void OutTabD609( SvStream& rSt, short nLen );
+
+
+// unter WNTMSCI4 muss das __cdecl sein, damit nicht nur der Fkt-Pointer
+// ausgegeben wird....
+
+ostream& __cdecl filepos( ostream& s, SvStream& rSt );
+
+ostream& __cdecl endl1( ostream& s );
+ostream& __cdecl indent( ostream& s, SvStream& rSt );
+ostream& __cdecl indent1( ostream& s );
+ostream& __cdecl indent2( ostream& s );
+ostream& __cdecl hex2( ostream& s );
+ostream& __cdecl hex4( ostream& s );
+ostream& __cdecl hex6( ostream& s );
+ostream& __cdecl hex8( ostream& s );
+ostream& __cdecl dec2( ostream& s );
+
+ostream& __cdecl begin( ostream& s, SvStream& rSt );
+ostream& __cdecl begin1( ostream& s );
+ostream& __cdecl begin2( ostream& s );
+ostream& __cdecl end( ostream& s, SvStream& rSt );
+ostream& __cdecl end1( ostream& s );
+ostream& __cdecl end2( ostream& s );
+
+extern ostream* pOut;
+
+
+#endif
diff --git a/sw/source/filter/ww8/dump/ww8scan.cxx b/sw/source/filter/ww8/dump/ww8scan.cxx
new file mode 100644
index 000000000000..f9dc437ab63b
--- /dev/null
+++ b/sw/source/filter/ww8/dump/ww8scan.cxx
@@ -0,0 +1,6049 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8scan.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 <stdlib.h>
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <string.h> // memset()
+
+#if defined( UNX) || defined( MAC)
+int svstricmp( const char* pStr1, const char* pStr2);
+// tools/source/generic/string2.cxx
+#endif
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_SHORTS
+#define _SVSTDARR_USHORTS
+#define _SVSTDARR_USHORTSSORT
+#include <svtools/svstdarr.hxx>
+#endif
+
+#ifdef DUMP
+ #define ERR_SWG_READ_ERROR 1234
+ #include <assert.h>
+ #define ASSERT( a, b )
+#else
+ #include "swerror.h" // ERR_WW6_...
+ #include "errhdl.hxx" // ASSERT()
+ #include "swtypes.hxx" // DELETEZ
+#endif
+#endif
+
+#ifndef _DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+
+#ifndef _WW8SCAN_HXX
+#include <ww8scan.hxx>
+#endif
+
+
+//-----------------------------------------
+// Debug-Code fuer Fastsave-Dateien
+//( Kram, um die Strukturen unter CV besser im Debugger untersuchen zu koennen )
+//-----------------------------------------
+#if defined DEBUG //&& !defined __WW_NEEDS_COPY
+#define DEBUG_STRUCT
+#endif
+
+#ifdef DEBUG_STRUCT
+# ifdef __WW8_NEEDS_PACK
+# pragma pack(2)
+# endif
+struct WW8_PCD1
+{
+ INT16 fNoParaLast : 1; // when 1, means that piece contains no end of paragraph marks.
+// BYTE fPaphNil : 1; // used internally by Word
+// BYTE fCopied : 1; // used internally by Word
+// * int :5
+// BYTE aBits2; // fn int:8, used internally by Word
+ INT32 fc; // file offset of beginning of piece. The size of the
+ INT16 prm; // PRM contains either a single sprm or else an index number
+};
+# ifdef __WW8_NEEDS_PACK
+# pragma pack()
+# endif
+#endif // DEBUG_STRUCT
+
+
+USHORT WW8GetSprmId( BYTE nVersion, BYTE* pSp, BYTE* pDelta );
+
+
+
+WW8SprmIter::WW8SprmIter(BYTE* pSprms_, short nLen_, BYTE nVersion_ )
+ : pSprms( pSprms_), nRemLen( nLen_), nVersion( nVersion_),
+ nDelta( ( 8 > nVersion ) ? 0 : 1 )
+{
+ UpdateMyMembers();
+}
+
+void WW8SprmIter::SetSprms(BYTE* pSprms_, short nLen_)
+{
+ pSprms = pSprms_;
+ nRemLen = nLen_;
+ UpdateMyMembers();
+}
+
+BYTE* WW8SprmIter::operator ++( int )
+{
+ if( 0 < nRemLen )
+ {
+ pSprms += nAktSizeBrutto;
+ nRemLen -= nAktSizeBrutto;
+ UpdateMyMembers();
+ }
+ return pSprms;
+}
+
+void WW8SprmIter::UpdateMyMembers()
+{
+ if( pSprms && (0 < nRemLen) )
+ {
+ nAktId = WW8GetSprmId( nVersion, pSprms );
+ pAktParams = pSprms + 1 + nDelta + WW8SprmDataOfs( nAktId );
+ nAktSizeBrutto = WW8GetSprmSizeBrutto( nVersion, pSprms, &nAktId );
+ }
+ else
+ {
+ nAktId = 0;
+ pAktParams = 0;
+ nAktSizeBrutto = 0;
+ nRemLen = 0;
+ }
+}
+
+
+
+//-----------------------------------------
+// temporaerer Test
+//-----------------------------------------
+// WW8PLCFx_PCDAttrs halten sich an WW8PLCF_Pcd fest und besitzen deshalb keine
+// eigenen Iteratoren. Alle sich auf Iteratoren beziehenden Methoden
+// sind deshalb Dummies.
+
+WW8PLCFx_PCDAttrs::WW8PLCFx_PCDAttrs( BYTE nVersion, WW8PLCFx_PCD* pPLCFx_PCD, WW8ScannerBase* pBase )
+: WW8PLCFx( nVersion, TRUE ),
+ pPcd( pPLCFx_PCD ),
+ pGrpprls( pBase->pPieceGrpprls ),
+ nGrpprls( pBase->nPieceGrpprls ),
+ pPcdI( pPLCFx_PCD->GetPLCFIter() )
+{
+}
+
+WW8PLCFx_PCDAttrs::~WW8PLCFx_PCDAttrs()
+{
+}
+
+ULONG WW8PLCFx_PCDAttrs::GetIdx()
+{
+ return 0;
+}
+
+void WW8PLCFx_PCDAttrs::SetIdx( ULONG )
+{
+}
+
+BOOL WW8PLCFx_PCDAttrs::SeekPos( WW8_CP n )
+{
+ return TRUE;
+}
+
+WW8PLCFx& WW8PLCFx_PCDAttrs::operator ++( int )
+{
+ return *this;
+}
+
+WW8_CP WW8PLCFx_PCDAttrs::Where()
+{
+ return ( pPcd ) ? pPcd->Where() : LONG_MAX;
+}
+
+void WW8PLCFx_PCDAttrs::GetSprms( WW8PLCFxDesc* p )
+{
+ void* pData;
+
+ p->bRealLineEnd = FALSE;
+ if( !pPcdI
+ || !pPcdI->Get( p->nStartPos, p->nEndPos, pData ))
+ {
+ p->nStartPos = p->nEndPos = LONG_MAX; // PLCF fertig abgearbeitet
+ p->pMemPos = 0;
+ return;
+ }
+ UINT16 nPrm = SVBT16ToShort( ( (WW8_PCD*)pData )->prm );
+
+ if ( nPrm & 1 )
+ { // PRM Variante 2
+ UINT16 nSprmIdx = nPrm >> 1;
+
+ if( nSprmIdx >= nGrpprls ){
+ p->nStartPos = p->nEndPos = LONG_MAX; // Bloedsinniger Index
+ p->pMemPos = 0;
+ return;
+ }
+ BYTE* pSprms = (BYTE*)( pGrpprls[nSprmIdx] );
+
+ p->nSprmsLen = SVBT16ToShort( pSprms ); // Laenge
+ pSprms += 2;
+ p->pMemPos = pSprms; // Position
+ }
+ else
+ { // PRM Variante 1: Sprm wird direkt in Member-Var abgelegt
+ /*
+ Dies sind die Attr, die in der Piece-Table stehen, statt im Text !
+ */
+
+ if(8 > GetVersion())
+ {
+ aShortSprm[0] = (BYTE)( ( nPrm & 0xfe) >> 1 );
+ aShortSprm[1] = (BYTE)( nPrm >> 8 );
+ p->nSprmsLen = ( nPrm ) ? 2 : 0; // Laenge
+
+ // store Postion of internal mini storage in Data Pointer
+ p->pMemPos = aShortSprm;
+ }
+ else
+ {
+ p->pMemPos = 0;
+ BYTE nSprmListIdx = (BYTE)((nPrm & 0xfe) >> 1);
+ if( nSprmListIdx )
+ {
+ // process Sprm Id Matching as explained in MS Doku
+ //
+ // ''Property Modifier(variant 1) (PRM)''
+ // see file: s62f39.htm
+ //
+ // Since isprm is 7 bits, rgsprmPrm can hold 0x80 entries.
+ static USHORT __READONLY_DATA aSprmId[0x80] = {
+ 0, 0, 0, 0,// sprmNoop, sprmNoop, sprmNoop, sprmNoop
+ 0x2402,0x2403,0x2404,0x2405,// sprmPIncLvl, sprmPJc, sprmPFSideBySide, sprmPFKeep
+ 0x2406,0x2407,0x2408,0x2409,// sprmPFKeepFollow, sprmPFPageBreakBefore, sprmPBrcl, sprmPBrcp
+ 0x260A, 0,0x240C, 0,// sprmPIlvl, sprmNoop, sprmPFNoLineNumb, sprmNoop
+ 0, 0, 0, 0,// sprmNoop, sprmNoop, sprmNoop, sprmNoop
+ 0, 0, 0, 0,// sprmNoop, sprmNoop, sprmNoop, sprmNoop
+ 0x2416,0x2417, 0, 0,// sprmPFInTable, sprmPFTtp, sprmNoop, sprmNoop
+ 0,0x261B, 0, 0,// sprmNoop, sprmPPc, sprmNoop, sprmNoop
+ 0, 0, 0, 0,// sprmNoop, sprmNoop, sprmNoop, sprmNoop
+ 0,0x2423, 0, 0,// sprmNoop, sprmPWr, sprmNoop, sprmNoop
+ 0, 0, 0, 0,// sprmNoop, sprmNoop, sprmNoop, sprmNoop
+ 0x242A, 0, 0, 0,// sprmPFNoAutoHyph, sprmNoop, sprmNoop, sprmNoop
+ 0, 0,0x2430,0x2431,// sprmNoop, sprmNoop, sprmPFLocked, sprmPFWidowControl
+ 0,0x2433,0x2434,0x2435,// sprmNoop, sprmPFKinsoku, sprmPFWordWrap, sprmPFOverflowPunct
+ 0x2436,0x2437,0x2438, 0,// sprmPFTopLinePunct, sprmPFAutoSpaceDE, sprmPFAutoSpaceDN, sprmNoop
+ 0,0x243B, 0, 0,// sprmNoop, sprmPISnapBaseLine, sprmNoop, sprmNoop
+ 0,0x0800,0x0801,0x0802,// sprmNoop, sprmCFStrikeRM, sprmCFRMark, sprmCFFldVanish
+ 0, 0, 0,0x0806,// sprmNoop, sprmNoop, sprmNoop, sprmCFData
+ 0, 0, 0,0x080A,// sprmNoop, sprmNoop, sprmNoop, sprmCFOle2
+ 0,0x2A0C,0x0858,0x2859,// sprmNoop, sprmCHighlight, sprmCFEmboss, sprmCSfxText
+ 0, 0, 0,0x2A33,// sprmNoop, sprmNoop, sprmNoop, sprmCPlain
+ 0,0x0835,0x0836,0x0837,// sprmNoop, sprmCFBold, sprmCFItalic, sprmCFStrike
+ 0x0838,0x0839,0x083a,0x083b,// sprmCFOutline, sprmCFShadow, sprmCFSmallCaps, sprmCFCaps,
+ 0x083C, 0,0x2A3E, 0,// sprmCFVanish, sprmNoop, sprmCKul, sprmNoop,
+ 0, 0,0x2A42, 0,// sprmNoop, sprmNoop, sprmCIco, sprmNoop,
+ 0x2A44, 0,0x2A46, 0,// sprmCHpsInc, sprmNoop, sprmCHpsPosAdj, sprmNoop,
+ 0x2A48, 0, 0, 0,// sprmCIss, sprmNoop, sprmNoop, sprmNoop,
+ 0, 0, 0, 0,// sprmNoop, sprmNoop, sprmNoop, sprmNoop,
+ 0, 0, 0,0x2A53,// sprmNoop, sprmNoop, sprmNoop, sprmCFDStrike,
+ 0x0854,0x0855,0x0856,0x2E00,// sprmCFImprint, sprmCFSpec, sprmCFObj, sprmPicBrcl,
+ 0x2640, 0, 0, 0,// sprmPOutLvl, sprmNoop, sprmNoop, sprmNoop,
+ 0, 0, 0, 0 // sprmNoop, sprmNoop, sprmPPnbrRMarkNot
+ }; // ^^^^^^^^^^^^^^^^^ unknown name!
+
+ // find real Sprm Id:
+ USHORT nSprmId = aSprmId[ nSprmListIdx ];
+
+ if( nSprmId )
+ {
+ // move Sprm Id and Sprm Param to internal mini storage:
+ aShortSprm[0] = (BYTE)( ( nSprmId & 0x00ff) );
+ aShortSprm[1] = (BYTE)( ( nSprmId & 0xff00) >> 8 );
+ aShortSprm[2] = (BYTE)( nPrm >> 8 );
+
+ // store Sprm Length in member:
+ p->nSprmsLen = ( nPrm ) ? 3 : 0;
+
+ // store Postion of internal mini storage in Data Pointer
+ p->pMemPos = aShortSprm;
+ }
+ }
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+WW8PLCFx_PCD::WW8PLCFx_PCD( BYTE nVersion, WW8PLCFpcd* pPLCFpcd,
+ WW8_CP nStartCp, BOOL bVer67P )
+ : WW8PLCFx( nVersion, FALSE )
+{
+ pPcdI = new WW8PLCFpcd_Iter( *pPLCFpcd, nStartCp ); // eigenen Iterator konstruieren
+ bVer67= bVer67P;
+}
+
+WW8PLCFx_PCD::~WW8PLCFx_PCD()
+{ // pPcd-Dtor wird in WW8ScannerBase gerufen
+ delete( pPcdI );
+}
+
+ULONG WW8PLCFx_PCD::GetIdx()
+{
+ return ( pPcdI ) ? pPcdI->GetIdx() : 0;
+}
+
+void WW8PLCFx_PCD::SetIdx( ULONG nIdx )
+{
+ if( pPcdI )
+ pPcdI->SetIdx( nIdx );
+}
+
+BOOL WW8PLCFx_PCD::SeekPos( WW8_CP nCpPos )
+{
+ return ( pPcdI ) ? pPcdI->SeekPos( nCpPos ) : FALSE;
+}
+
+WW8_CP WW8PLCFx_PCD::Where()
+{
+ return ( pPcdI ) ? pPcdI->Where() : LONG_MAX;
+}
+
+long WW8PLCFx_PCD::GetNoSprms( long& rStart, long& rEnd, long& rLen )
+{
+ void* pData;
+ rLen = 0;
+
+ if( !pPcdI
+ || !pPcdI->Get( rStart, rEnd, pData ) )
+ {
+ rStart = rEnd = LONG_MAX;
+ return -1;
+ }
+ return pPcdI->GetIdx();
+}
+
+WW8PLCFx& WW8PLCFx_PCD::operator ++( int )
+{
+ if( !pPcdI ){
+ ASSERT( ASS_FALSE, "pPcdI fehlt");
+ }else{
+ (*pPcdI)++;
+ }
+ return *this;
+}
+
+WW8_FC WW8PLCFx_PCD::AktPieceStartCp2Fc( WW8_CP nCp )
+{
+ WW8_CP nCpStart, nCpEnd;
+ void* pData;
+
+ if ( !pPcdI->Get( nCpStart, nCpEnd, pData ) ){
+ ASSERT( ASS_FALSE, "AktPieceStartCp2Fc() mit falschem Cp gerufen (1)" );
+ return LONG_MAX;
+ }
+
+ ASSERT( nCp >= nCpStart && nCp < nCpEnd,
+ "AktPieceCp2Fc() mit falschem Cp gerufen (2)" );
+
+ if( nCp < nCpStart )
+ nCp = nCpStart;
+ if( nCp >= nCpEnd )
+ nCp = nCpEnd - 1;
+
+ BOOL bIsUnicode = FALSE;
+ WW8_FC nFC = SVBT32ToLong( ((WW8_PCD*)pData)->fc );
+ if( !bVer67 )
+ nFC = WW8PLCFx_PCD::TransformPieceAddress( nFC, bIsUnicode );
+
+ return nFC + (nCp - nCpStart) * (bIsUnicode ? 2 : 1);
+}
+
+
+eCutT WW8PLCFx_PCD::AktPieceFc2Cp( long& rStartPos, long& rEndPos )
+{
+ WW8_CP nCpStart, nCpEnd;
+ void* pData;
+ eCutT eRet = CUT_NONE;
+
+ if ( !pPcdI->Get( nCpStart, nCpEnd, pData ) ){
+ ASSERT( ASS_FALSE, "AktPieceFc2Cp() - Fehler" );
+ rStartPos = rEndPos = LONG_MAX;
+ return CUT_BOTH;
+ }
+
+ BOOL bIsUnicode = FALSE;
+ INT32 nFcStart = SVBT32ToLong( ((WW8_PCD*)pData)->fc );
+ if( !bVer67 )
+ nFcStart = WW8PLCFx_PCD::TransformPieceAddress( nFcStart, bIsUnicode );
+
+ INT32 nUnicodeFactor = bIsUnicode ? 2 : 1;
+
+ if( rStartPos < nFcStart )
+ {
+ rStartPos = nFcStart;
+ eRet = (eCutT)( eRet | CUT_START );
+ }
+ if( rStartPos >= nFcStart + (nCpEnd - nCpStart) * nUnicodeFactor )
+ {
+ rStartPos = nFcStart + (nCpEnd - nCpStart - 1) * nUnicodeFactor;
+ eRet = (eCutT)( eRet | CUT_START );
+ }
+ // jetzt CP berechnen
+ rStartPos = nCpStart + (rStartPos - nFcStart) / nUnicodeFactor;
+
+
+ if( rEndPos < nFcStart )
+ {
+ rEndPos = nFcStart;
+ eRet = (eCutT)( eRet | CUT_END );
+ }
+ if( rEndPos > nFcStart + (nCpEnd - nCpStart) * nUnicodeFactor )
+ {
+ rEndPos = nFcStart + (nCpEnd - nCpStart) * nUnicodeFactor;
+ eRet = (eCutT)( eRet | CUT_END );
+ }
+ // jetzt CP berechnen
+ rEndPos = nCpStart + (rEndPos - nFcStart) / nUnicodeFactor;
+#ifdef DEBUG
+ if (0 > rStartPos)
+ {
+ BOOL i = 5;
+ }
+ ASSERT( (0 <= rStartPos), "AktPieceFc2Cp() - rStartPos kleiner Null!" );
+#endif
+ return eRet;
+}
+
+WW8_CP WW8PLCFx_PCD::AktPieceStartFc2Cp( WW8_FC nStartPos )
+{
+ WW8_CP nCpStart, nCpEnd;
+ void* pData;
+
+ if( nStartPos == LONG_MAX )
+ return LONG_MAX;
+
+ if ( !pPcdI->Get( nCpStart, nCpEnd, pData ) )
+ {
+ ASSERT( ASS_FALSE, "AktPieceStartFc2Cp() - Fehler" );
+ return LONG_MAX;
+ }
+ BOOL bIsUnicode = FALSE;
+ INT32 nFcStart = SVBT32ToLong( ((WW8_PCD*)pData)->fc );
+ if( !bVer67 )
+ nFcStart = WW8PLCFx_PCD::TransformPieceAddress( nFcStart, bIsUnicode );
+
+
+ INT32 nUnicodeFactor = bIsUnicode ? 2 : 1;
+
+ if( nStartPos < nFcStart )
+ nStartPos = nFcStart;
+
+ if( nStartPos >= nFcStart + (nCpEnd - nCpStart) * nUnicodeFactor )
+ nStartPos = nFcStart + (nCpEnd - nCpStart - 1) * nUnicodeFactor;
+
+ return nCpStart + (nStartPos - nFcStart) / nUnicodeFactor;
+}
+
+
+
+//-----------------------------------------
+// Hilfsroutinen fuer alle
+//-----------------------------------------
+
+DateTime WW8ScannerBase::WW8DTTM2DateTime(long lDTTM)
+{
+/*
+mint short :6 0000003F minutes (0-59)
+hr short :5 000007C0 hours (0-23)
+dom short :5 0000F800 days of month (1-31)
+mon short :4 000F0000 months (1-12)
+yr short :9 1FF00000 years (1900-2411)-1900
+wdy short :3 E0000000 weekday(Sunday=0
+ Monday=1
+( wdy can be ignored ) Tuesday=2
+ Wednesday=3
+ Thursday=4
+ Friday=5
+ Saturday=6)
+*/
+ DateTime aDateTime(Date( 0 ), Time( 0 ));
+ if( lDTTM )
+ {
+ USHORT lMin =(USHORT)(lDTTM & 0x0000003F);
+ lDTTM >>= 6;
+ USHORT lHour=(USHORT)(lDTTM & 0x0000001F);
+ lDTTM >>= 5;
+ USHORT lDay =(USHORT)(lDTTM & 0x0000001F);
+ lDTTM >>= 5;
+ USHORT lMon =(USHORT)(lDTTM & 0x0000000F);
+ lDTTM >>= 4;
+ USHORT lYear=(USHORT)(lDTTM & 0x000001FF) + 1900;
+ aDateTime = DateTime(Date(lDay, lMon, lYear), Time(lHour, lMin));
+ }
+ return aDateTime;
+}
+
+WW8_CP WW8ScannerBase::WW8Fc2Cp( WW8_FC nFcPos ) const
+{
+ if( nFcPos == LONG_MAX )
+ return LONG_MAX;
+
+ if( pPieceIter )
+ { // Complex File ?
+ ULONG nOldPos = pPieceIter->GetIdx();
+ pPieceIter->SetIdx( 0 );
+ while( 1 )
+ {
+ long nCpStart, nCpEnd;
+ void* pData;
+ if( !pPieceIter->Get( nCpStart, nCpEnd, pData ) )
+ { // ausserhalb PLCFfpcd ?
+ ASSERT( !this, "PLCFpcd-WW8Fc2Cp() ging schief" );
+ break;
+// pPieceIter->SetIdx( nOldPos );
+// return 0;
+ }
+ BOOL bIsUnicode = FALSE;
+ INT32 nFcStart = SVBT32ToLong( ((WW8_PCD*)pData)->fc );
+ if( 8 <= pWw8Fib->nVersion )
+ nFcStart = WW8PLCFx_PCD::TransformPieceAddress( nFcStart,
+ bIsUnicode );
+
+ INT32 nLen = (nCpEnd - nCpStart) * (bIsUnicode ? 2 : 1);
+
+ if( nFcPos >= nFcStart && nFcPos < nFcStart + nLen )
+ { // gefunden
+ pPieceIter->SetIdx( nOldPos );
+
+ return nCpStart + ((nFcPos - nFcStart) / (bIsUnicode ? 2 : 1));
+ }
+ (*pPieceIter)++;
+ }
+ pPieceIter->SetIdx( nOldPos ); // nicht gefunden
+ return LONG_MAX;
+ }
+ // No complex file
+ return nFcPos - pWw8Fib->fcMin;
+}
+
+WW8_FC WW8ScannerBase::WW8Cp2Fc( WW8_CP nCpPos, BOOL* pIsUnicode,
+ WW8_CP* pNextPieceCp, BOOL* pTestFlag ) const
+{
+ if( pTestFlag )
+ *pTestFlag = TRUE;
+ if( LONG_MAX == nCpPos )
+ return LONG_MAX;
+
+ if( pPieceIter )
+ { // Complex File
+ if( pNextPieceCp )
+ *pNextPieceCp = LONG_MAX;
+
+ if( !pPieceIter->SeekPos( nCpPos ) )
+ {
+ if( pTestFlag )
+ *pTestFlag = FALSE;
+ else
+ ASSERT( !this, "Falscher CP an WW8Cp2Fc() uebergeben" );
+ return LONG_MAX;
+ }
+ long nCpStart, nCpEnd;
+ void* pData;
+ if( !pPieceIter->Get( nCpStart, nCpEnd, pData ) )
+ {
+ if( pTestFlag )
+ *pTestFlag = FALSE;
+ else
+ ASSERT( ASS_FALSE, "PLCFfpcd-Get ging schief" );
+ return LONG_MAX;
+ }
+ if( pNextPieceCp )
+ *pNextPieceCp = nCpEnd;
+ BOOL bIsUnicode;
+ if( !pIsUnicode )
+ pIsUnicode = &bIsUnicode;
+
+ WW8_FC nRet = SVBT32ToLong( ((WW8_PCD*)pData)->fc );
+ if( 8 > pWw8Fib->nVersion )
+ *pIsUnicode = FALSE;
+ else
+ nRet = WW8PLCFx_PCD::TransformPieceAddress( nRet, *pIsUnicode );
+
+
+ nRet += (nCpPos - nCpStart) * (*pIsUnicode ? 2 : 1);
+
+ return nRet;
+ }
+
+ // No complex file
+ if( pIsUnicode )
+ *pIsUnicode = FALSE;
+ return nCpPos + pWw8Fib->fcMin;
+}
+
+//-----------------------------------------
+// class WW8ScannerBase
+//-----------------------------------------
+
+WW8PLCFpcd* WW8ScannerBase::OpenPieceTable( SvStream* pStr, WW8Fib* pWwF )
+{
+ if( ( (8 > pWw8Fib->nVersion)
+ && !pWwF->fComplex
+ )
+ || !pWwF->lcbClx ) return 0;
+
+ WW8_FC nClxPos = pWwF->fcClx;
+ INT32 nClxLen = pWwF->lcbClx;
+ register INT32 nLeft = nClxLen;
+ INT16 nGrpprl = 0;
+ BYTE clxt;
+
+ pStr->Seek( nClxPos );
+ while( 1 ){ // Zaehle Zahl der Grpprls
+ *pStr >> clxt;
+ nLeft--;
+ if( 2 == clxt ) // PLCFfpcd ?
+ break; // PLCFfpcd gefunden
+ if( 1 == clxt ) // clxtGrpprl ?
+ nGrpprl++;
+ UINT16 nLen;
+ *pStr >> nLen;
+ nLeft -= 2 + nLen;
+ if( nLeft < 0 )
+ return 0; // schiefgegangen
+ pStr->SeekRel( nLen ); // ueberlies grpprl
+ }
+ pStr->Seek( nClxPos );
+ nLeft = nClxLen;
+ pPieceGrpprls = new char*[nGrpprl + 1];
+ memset( pPieceGrpprls, 0, ( nGrpprl + 1 ) * 4 );
+ nPieceGrpprls = nGrpprl;
+ INT16 nAktGrpprl = 0; // lies Grpprls ein
+ while( 1 )
+ {
+ *pStr >> clxt;
+ nLeft--;
+ if( 2 == clxt) // PLCFfpcd ?
+ break; // PLCFfpcd gefunden
+ UINT16 nLen;
+ *pStr >> nLen;
+ nLeft -= 2 + nLen;
+ if( nLeft < 0 )
+ return 0; // schiefgegangen
+ if( 1 == clxt ) // clxtGrpprl ?
+ {
+ char* p = new char[nLen+2]; // alloziere
+ memcpy( p, &nLen, 2 ); // trage Laenge ein
+ pStr->Read( p+2, nLen ); // lies grpprl
+ pPieceGrpprls[nAktGrpprl++] = p; // trage in Array ein
+ }
+ else
+ pStr->SeekRel( nLen ); // ueberlies nicht-Grpprl
+ }
+ // lies Piece Table PLCF ein
+ INT32 nPLCFfLen;
+ *pStr >> nPLCFfLen;
+ ASSERT( 65536 > nPLCFfLen, "PLCFfpcd ueber 64 k" );
+ return new WW8PLCFpcd( pStr, pStr->Tell(), nPLCFfLen, 8 );
+}
+
+void WW8ScannerBase::DeletePieceTable()
+{
+ if( pPieceGrpprls )
+ {
+ for( char** p = pPieceGrpprls; *p; p++ )
+ delete[]( *p );
+ delete[]( pPieceGrpprls );
+ pPieceGrpprls = 0;
+ }
+}
+
+WW8ScannerBase::WW8ScannerBase( SvStream* pSt, SvStream* pTblSt, SvStream* pDataSt,
+ WW8Fib* pWwFib )
+ : pWw8Fib( pWwFib ), pPieceGrpprls( 0 ),
+ pMainFdoa( 0 ), pHdFtFdoa( 0 ),
+ pMainTxbx( 0 ), pMainTxbxBkd( 0 ), pHdFtTxbx( 0 ), pHdFtTxbxBkd( 0 )
+{
+ pPiecePLCF = OpenPieceTable( pTblSt, pWw8Fib ); // Complex
+ if( pPiecePLCF )
+ {
+ pPieceIter = new WW8PLCFpcd_Iter( *pPiecePLCF );
+ pPLCFx_PCD = new WW8PLCFx_PCD( pWwFib->nVersion, pPiecePLCF, 0,
+ 8 > pWw8Fib->nVersion );
+ pPLCFx_PCDAttrs = new WW8PLCFx_PCDAttrs( pWwFib->nVersion, pPLCFx_PCD, this);
+ }
+ else
+ {
+ pPieceIter = 0;
+ pPLCFx_PCD = 0;
+ pPLCFx_PCDAttrs = 0;
+ }
+
+ // pChpPLCF and pPapPLCF may NOT be created before pPLCFx_PCD !!
+ pChpPLCF = new WW8PLCFx_Cp_FKP( pSt, pTblSt, pDataSt, *this, CHP ); // CHPX
+ pPapPLCF = new WW8PLCFx_Cp_FKP( pSt, pTblSt, pDataSt, *this, PAP ); // PAPX
+
+ pSepPLCF = new WW8PLCFx_SEPX( pSt, pTblSt, *pWwFib, 0 ); // SEPX
+
+ // Footnotes
+ pFtnPLCF = new WW8PLCFx_SubDoc( pTblSt, pWwFib->nVersion, 0,
+ pWwFib->fcPlcffndRef, pWwFib->lcbPlcffndRef,
+ pWwFib->fcPlcffndTxt, pWwFib->lcbPlcffndTxt,
+ 2 );
+ // Endnotes
+ pEdnPLCF = new WW8PLCFx_SubDoc( pTblSt, pWwFib->nVersion, 0,
+ pWwFib->fcPlcfendRef, pWwFib->lcbPlcfendRef,
+ pWwFib->fcPlcfendTxt, pWwFib->lcbPlcfendTxt,
+ 2 );
+ // Anmerkungen
+ pAndPLCF = new WW8PLCFx_SubDoc( pTblSt, pWwFib->nVersion, 0,
+ pWwFib->fcPlcfandRef, pWwFib->lcbPlcfandRef,
+ pWwFib->fcPlcfandTxt, pWwFib->lcbPlcfandTxt,
+ (8 > pWwFib->nVersion) ? 20 : 30 );
+
+ // Fields Main Text
+ pFldPLCF = new WW8PLCFx_FLD( pTblSt, *pWwFib, MAN_MAINTEXT, 0 );
+ // Fields Header / Footer
+ pFldHdFtPLCF= new WW8PLCFx_FLD( pTblSt, *pWwFib, MAN_HDFT, 0 );
+ // Fields Footnote
+ pFldFtnPLCF = new WW8PLCFx_FLD( pTblSt, *pWwFib, MAN_FTN, 0 );
+ // Fields Endnote
+ pFldEdnPLCF = new WW8PLCFx_FLD( pTblSt, *pWwFib, MAN_EDN, 0 );
+ // Fields Anmerkungen
+ pFldAndPLCF = new WW8PLCFx_FLD( pTblSt, *pWwFib, MAN_AND, 0 );
+ // Fields in Textboxes in Main Text
+ pFldTxbxPLCF= new WW8PLCFx_FLD( pTblSt, *pWwFib, MAN_TXBX, 0 );
+ // Fields in Textboxes in Header / Footer
+ pFldTxbxHdFtPLCF=new WW8PLCFx_FLD(pTblSt,*pWwFib,MAN_TXBX_HDFT,0 );
+
+ switch( pWw8Fib->nVersion ) // beachte: 6 steht fuer "6 ODER 7", 7 steht fuer "NUR 7"
+ {
+ case 6:
+ case 7: if( pWwFib->fcPlcfdoaMom && pWwFib->lcbPlcfdoaMom )
+ pMainFdoa = new WW8PLCFspecial( pTblSt, pWwFib->fcPlcfdoaMom,
+ pWwFib->lcbPlcfdoaMom, 6 );
+ if( pWwFib->fcPlcfdoaHdr && pWwFib->lcbPlcfdoaHdr )
+ pHdFtFdoa = new WW8PLCFspecial( pTblSt, pWwFib->fcPlcfdoaHdr,
+ pWwFib->lcbPlcfdoaHdr, 6 );
+ break;
+ case 8:
+ if( pWwFib->fcPlcfspaMom && pWwFib->lcbPlcfspaMom )
+ pMainFdoa = new WW8PLCFspecial( pTblSt, pWwFib->fcPlcfspaMom,
+ pWwFib->lcbPlcfspaMom, 26 );
+ if( pWwFib->fcPlcfspaHdr && pWwFib->lcbPlcfspaHdr )
+ pHdFtFdoa = new WW8PLCFspecial( pTblSt, pWwFib->fcPlcfspaHdr,
+ pWwFib->lcbPlcfspaHdr, 26 );
+ // PLCF fuer TextBox-Break-Deskriptoren im Maintext
+ if( pWwFib->fcPlcftxbxBkd && pWwFib->lcbPlcftxbxBkd )
+ pMainTxbxBkd = new WW8PLCFspecial( pTblSt,
+ pWwFib->fcPlcftxbxBkd,
+ pWwFib->lcbPlcftxbxBkd, 0);
+ // PLCF fuer TextBox-Break-Deskriptoren im Header-/Footer-Bereich
+ if( pWwFib->fcPlcfHdrtxbxBkd && pWwFib->lcbPlcfHdrtxbxBkd )
+ pHdFtTxbxBkd = new WW8PLCFspecial( pTblSt,
+ pWwFib->fcPlcfHdrtxbxBkd,
+ pWwFib->lcbPlcfHdrtxbxBkd, 0);
+ break;
+
+
+ default:ASSERT( !this, "Es wurde vergessen, nVersion zu kodieren!" );
+ }
+
+ // PLCF fuer TextBox-Stories im Maintext
+ long nLenTxBxS = (8 > pWw8Fib->nVersion) ? 0 : 22;
+ if( pWwFib->fcPlcftxbxTxt && pWwFib->lcbPlcftxbxTxt )
+ pMainTxbx = new WW8PLCFspecial( pTblSt, pWwFib->fcPlcftxbxTxt,
+ pWwFib->lcbPlcftxbxTxt, nLenTxBxS );
+
+ // PLCF fuer TextBox-Stories im Header-/Footer-Bereich
+ if( pWwFib->fcPlcfHdrtxbxTxt && pWwFib->lcbPlcfHdrtxbxTxt )
+ pHdFtTxbx = new WW8PLCFspecial( pTblSt, pWwFib->fcPlcfHdrtxbxTxt,
+ pWwFib->lcbPlcfHdrtxbxTxt, nLenTxBxS );
+
+ pBook = new WW8PLCFx_Book( pSt, pTblSt, *pWwFib, 0 );
+}
+
+WW8ScannerBase::~WW8ScannerBase()
+{
+ DeletePieceTable();
+ delete pPLCFx_PCDAttrs;
+ delete pPLCFx_PCD;
+ delete pPieceIter;
+ delete pPiecePLCF;
+ delete pBook;
+ delete pFldEdnPLCF;
+ delete pFldFtnPLCF;
+ delete pFldAndPLCF;
+ delete pFldHdFtPLCF;
+ delete pFldPLCF;
+ delete pFldTxbxPLCF;
+ delete pFldTxbxHdFtPLCF;
+ delete pEdnPLCF;
+ delete pFtnPLCF;
+ delete pAndPLCF;
+ delete pSepPLCF;
+ delete pPapPLCF;
+ delete pChpPLCF;
+ // vergessene Schaeflein
+ delete pMainFdoa;
+ delete pHdFtFdoa;
+ delete pMainTxbx;
+ delete pMainTxbxBkd;
+ delete pHdFtTxbx;
+ delete pHdFtTxbxBkd;
+}
+
+//-----------------------------------------
+// Stack fuer shorts
+//-----------------------------------------
+
+class UShortStk: private SvShorts
+{
+public:
+ UShortStk():SvShorts( 10, 10 ) {}
+ ~UShortStk() {}
+ void Push( USHORT s ) { Insert( (USHORT)s, SvShorts::Count() ); }
+ inline USHORT Top();
+ inline USHORT Pop();
+ USHORT Count() { return SvShorts::Count(); }
+};
+
+inline USHORT UShortStk::Top()
+{
+ USHORT nPos = SvShorts::Count() - 1;
+ USHORT s = (*this)[ nPos ];
+ return s;
+}
+
+inline USHORT UShortStk::Pop()
+{
+ USHORT nPos = SvShorts::Count() - 1;
+ USHORT s = (*this)[ nPos ];
+ Remove( nPos );
+ return s;
+}
+
+
+//-----------------------------------------
+// Fields
+//-----------------------------------------
+
+static BOOL WW8SkipField( WW8PLCFspecial& rPLCF )
+{
+ void* pData;
+ long nP;
+
+ if( !rPLCF.Get( nP, pData ) ) // Ende des PLCFspecial ?
+ return FALSE;
+
+ rPLCF++;
+
+ if((((BYTE*)pData)[0] & 0x1f ) != 0x13 ) // Kein Anfang ?
+ return TRUE; // Bei Fehler nicht abbrechen
+
+ if( !rPLCF.Get( nP, pData ) )
+ return FALSE;
+
+
+ while((((BYTE*)pData)[0] & 0x1f ) == 0x13 ){ // immer noch neue (nested) Anfaenge ?
+ WW8SkipField( rPLCF ); // nested Field im Beschreibungsteil
+ if( !rPLCF.Get( nP, pData ) )
+ return FALSE;
+ }
+
+ if((((BYTE*)pData)[0] & 0x1f ) == 0x14 ){ // Field Separator ?
+ rPLCF++;
+
+ if( !rPLCF.Get( nP, pData ) )
+ return FALSE;
+
+ while((((BYTE*)pData)[0] & 0x1f ) == 0x13 ){// immer noch neue (nested) Anfaenge ?
+ WW8SkipField( rPLCF ); // nested Field im Resultatteil
+ if( !rPLCF.Get( nP, pData ) )
+ return FALSE;
+ }
+ }
+ rPLCF++;
+
+ return TRUE;
+}
+
+BOOL WW8GetFieldPara( BYTE nVersion, WW8PLCFspecial& rPLCF, WW8FieldDesc& rF )
+{
+ void* pData;
+ ULONG nOldIdx = rPLCF.GetIdx();
+
+ rF.nLen = rF.nId = rF.nOpt = rF.bCodeNest = rF.bResNest = 0;
+
+ if( !rPLCF.Get( rF.nSCode, pData ) ) // Ende des PLCFspecial ?
+ goto Err;
+
+ rPLCF++;
+
+ if((((BYTE*)pData)[0] & 0x1f ) != 0x13 ) // Kein Anfang ?
+ goto Err;
+
+ rF.nId = ((BYTE*)pData)[1];
+
+ if( !rPLCF.Get( rF.nLCode, pData ) )
+ goto Err;
+
+ rF.nSRes = rF.nLCode; // Default
+ rF.nSCode++; // ohne Marken
+ rF.nLCode -= rF.nSCode; // Pos zu Laenge
+
+ while((((BYTE*)pData)[0] & 0x1f ) == 0x13 ){ // immer noch neue (nested) Anfaenge ?
+ WW8SkipField( rPLCF ); // nested Field im Beschreibungsteil
+ rF.bCodeNest = TRUE;
+ if( !rPLCF.Get( rF.nSRes, pData ) )
+ goto Err;
+ }
+
+ if((((BYTE*)pData)[0] & 0x1f ) == 0x14 ){ // Field Separator ?
+ rPLCF++;
+
+ if( !rPLCF.Get( rF.nLRes, pData ) )
+ goto Err;
+
+ while((((BYTE*)pData)[0] & 0x1f ) == 0x13 ){// immer noch neue (nested) Anfaenge ?
+ WW8SkipField( rPLCF ); // nested Field im Resultatteil
+ rF.bResNest = TRUE;
+ if( !rPLCF.Get( rF.nLRes, pData ) )
+ goto Err;
+ }
+ rF.nLen = rF.nLRes - rF.nSCode + 2; // nLRes ist noch die Endposition
+ rF.nLRes -= rF.nSRes; // nun: nLRes = Laenge
+ rF.nSRes++; // Endpos encl. Marken
+ rF.nLRes--;
+
+ }else{
+ rF.nLRes = 0; // Kein Result vorhanden
+ rF.nLen = rF.nSRes - rF.nSCode + 2; // Gesamtlaenge
+ }
+
+ rPLCF++;
+ if((((BYTE*)pData)[0] & 0x1f ) == 0x15 ){ // Field Ende ?
+ // INDEX-Fld hat Bit7 gesetzt!?!
+ rF.nOpt = ((BYTE*)pData)[1]; // Ja -> Flags uebernehmen
+ }else{
+ rF.nId = 0; // Nein -> Feld ungueltig
+ }
+
+ rPLCF.SetIdx( nOldIdx );
+ return TRUE;
+Err:
+ rPLCF.SetIdx( nOldIdx );
+ return FALSE;
+}
+
+
+//-----------------------------------------
+
+
+// WW8ReadPString liest einen Pascal-String ein und gibt ihn zurueck. Der Pascal-
+// String hat am Ende ein \0, der aber im Laengenbyte nicht mitgezaehlt wird.
+// Der Speicher fuer den Pascalstring wird alloziert.
+UINT8* WW8ReadPString( SvStream& rStrm, BOOL bAtEndSeekRel1 )
+{
+ UINT8 b;
+ rStrm >> b;
+ UINT8* pStr = new UINT8[ b+2 ];
+ pStr[0] = b;
+ rStrm.Read( &pStr[1], b );
+ pStr[b+1] = '\0';
+
+ if( bAtEndSeekRel1 )
+ rStrm.SeekRel( 1 ); // ueberspringe das Null-Byte am Ende.
+
+ return pStr;
+}
+
+// WW8ReadXString liest einen Unicode-String ein und gibt ihn zurueck. Der Pascal-
+// String hat am Ende ein \0, der aber im Laengenbyte nicht mitgezaehlt wird.
+// Der Speicher fuer den Pascalstring wird alloziert.
+/*
+UINT8* WW8Read_xstz(SvStream& rStrm, BOOL bAtEndSeekRel1, USHORT nChars)
+{
+ USHORT b;
+ if( nChars )
+ b = nChars;
+ else
+ WW8ReadUINT16( rStrm, b );
+
+ UniString aTmp;
+ aTmp.AllocStrBuf( b );
+
+ sal_Unicode* pWStr = aTmp.GetCharStr();
+
+ for( BYTE nIdx = 0; nIdx < b; ++nIdx, ++pWStr )
+ {
+ UINT16 nChar;
+ WW8ReadUINT16( rStrm, nChar );
+
+ if( 0xF000 == (nChar & 0xFF00))
+ nChar &= 0x00FF;
+ *pWStr = nChar;
+ }
+ if( bAtEndSeekRel1 )
+ rStrm.SeekRel( 1 ); // ueberspringe das Null-Byte am Ende.
+
+ String sConvert( aTmp, CHARSET_ANSI );
+
+ UINT8* pStr = new UINT8[ sConvert.Len()+2 ];
+ pStr[ 0 ] = (char)b;
+ memcpy( pStr+1, sConvert.GetStr(), sConvert.Len()+1 );
+
+ return pStr;
+}
+*/
+UINT8* WW8Read_xstz( SvStream& rStrm, BOOL bAtEndSeekRel1, USHORT nChars,
+ BOOL bInsLeadingLen, long* pWasRead )
+{
+ USHORT b;
+
+ if( nChars )
+ b = nChars;
+ else
+ rStrm >> b;
+
+ USHORT nDelta = bInsLeadingLen ? 1 : 0;
+
+ UINT8* pStr = new UINT8[ b + nDelta + 1 ];
+
+ for( UINT16 nIdx = 0; nIdx < b; ++nIdx )
+ {
+ UINT16 nChar;
+ rStrm >> nChar;
+ if( 0 != rStrm.GetError() )
+ {
+ ASSERT( 0==b, "Stream Error while reading UCHAR string!" );
+ b = nIdx;
+ break;
+ }
+
+ UINT8 c = String::ConvertFromUnicode( nChar );
+ pStr[ nIdx + nDelta ] = (c ? c : ((UINT8)nChar));
+ }
+
+ if( bInsLeadingLen )
+ pStr[ 0 ] = (UINT8)b; // set count of chars that could be read
+
+ if( pWasRead )
+ *pWasRead = nIdx;
+
+ if( bAtEndSeekRel1 )
+ rStrm.SeekRel( 1 ); // ueberspringe das Null-Byte am Ende.
+
+ pStr[ nIdx + nDelta ] = 0;
+
+ return pStr;
+}
+
+
+USHORT WW8ScannerBase::WW8ReadString( SvStream& rStrm, String* pString,
+ WW8_CP nAktStartCp, long nTotalLen,
+ unsigned char** ppStr ) const
+{
+ // Klartext einlesen, der sich ueber mehrere Pieces erstrecken kann
+ if( pString )
+ pString->Erase();
+
+ if( ppStr && !*ppStr )
+ *ppStr = new unsigned char[ nTotalLen ];
+
+ long nTotalRead = 0;
+ WW8_CP nBehindTextCp = nAktStartCp + nTotalLen;
+ WW8_CP nNextPieceCp = nBehindTextCp; // Initialisierung wichtig fuer Ver6
+ do {
+ BOOL bIsUnicode, bPosOk;
+ WW8_FC fcAct = WW8Cp2Fc( nAktStartCp, &bIsUnicode,
+ &nNextPieceCp, &bPosOk);
+
+ if( !bPosOk ) break; // vermutlich uebers Dateiende hinaus gezielt, macht nix!
+
+ rStrm.Seek( fcAct );
+
+ long nLen = ( (nNextPieceCp < nBehindTextCp)
+ ? nNextPieceCp
+ : nBehindTextCp
+ )
+ - nAktStartCp;
+
+ if( 0 >= nLen ) break;
+
+ if( nLen > USHRT_MAX - 1 )
+ nLen = USHRT_MAX - 1;
+
+ unsigned char* pStr;
+ long nWasRead = 0;
+ if( bIsUnicode )
+ pStr = WW8Read_xstz( rStrm, FALSE, (USHORT)nLen, FALSE, &nWasRead );
+ else
+ {
+ pStr = new unsigned char[ nLen ];
+ nWasRead = rStrm.Read( pStr, nLen );
+ }
+ if( nWasRead != nLen ) break;
+
+ if( pString )
+ *pString += String( (const char*)pStr, (USHORT)nLen );
+ if( ppStr )
+ memcpy( (*ppStr) + nTotalRead, pStr, nLen );
+ delete[]( pStr );
+
+ nTotalRead += nLen;
+ nAktStartCp += nLen;
+ } while( nTotalRead < nTotalLen );
+
+ if( pString )
+ return pString->Len();
+ return (USHORT)nTotalRead;
+}
+
+
+//-----------------------------------------
+// WW8PLCFspecial
+//-----------------------------------------
+
+// Bei nStartPos < 0 wird das erste Element des PLCFs genommen
+WW8PLCFspecial::WW8PLCFspecial( SvStream* pSt, long nFilePos, long nPLCF,
+ long nStruct, long nStartPos, BOOL bNoEnd )
+:nIdx( 0 ), nStru( nStruct )
+{
+ nIMax = ( nPLCF - 4 ) / ( 4 + nStruct );
+ pPLCF_PosArray = new INT32[ ( nPLCF + 3 ) / 4 ]; // Pointer auf Pos- u. Struct-Array
+
+ long nOldPos = pSt->Tell();
+
+ pSt->Seek( nFilePos );
+ pSt->Read( pPLCF_PosArray, nPLCF );
+#ifdef __BIGENDIAN
+ for( nIdx = 0; nIdx <= nIMax; nIdx++ ){
+ pPLCF_PosArray[nIdx] = SWAPLONG( pPLCF_PosArray[nIdx] );
+ }
+ nIdx = 0;
+#endif // __BIGENDIAN
+ if( bNoEnd ) nIMax++;
+ if( nStruct )
+ pPLCF_Contents = (char*)&pPLCF_PosArray[nIMax + 1]; // Pointer auf Inhalts-Array
+ else
+ pPLCF_Contents = 0; // kein Inhalt
+ if( nStartPos >= 0 )
+ SeekPos( nStartPos );
+
+ pSt->Seek( nOldPos );
+}
+
+// WW8PLCFspecial::SeekPos() stellt den WW8PLCFspecial auf die Stelle nPos, wobei auch noch der
+// Eintrag benutzt wird, der vor nPos beginnt und bis hinter nPos reicht.
+// geeignet fuer normale Attribute. Allerdings wird der Attributanfang nicht
+// auf die Position nPos korrigiert.
+BOOL WW8PLCFspecial::SeekPos( long nPos )
+{
+ register long nI;
+ register long nP = nPos;
+
+ if( nP < pPLCF_PosArray[0] ){
+ nIdx = 0;
+ return FALSE; // Nicht gefunden: nPos unterhalb kleinstem Eintrag
+ }
+ for( nI=1; nI<=nIMax; nI++){ // Suchen mit um 1 erhoehtem Index
+ if( nP < pPLCF_PosArray[nI] ){ // Position gefunden
+ nIdx = nI - 1; // nI - 1 ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+ nIdx = nIMax; // Nicht gefunden, groesser als alle Eintraege
+ return FALSE;
+}
+
+// WW8PLCFspecial::SeekPosExact() wie SeekPos(), aber es wird sichergestellt, dass kein
+// Attribut angeschnitten wird, d.h. das naechste gelieferte Attribut beginnt
+// auf oder hinter nPos. Wird benutzt fuer Felder + Bookmarks.
+BOOL WW8PLCFspecial::SeekPosExact( long nPos )
+{
+ register long nI;
+ register long nP = nPos;
+
+ if( nP < pPLCF_PosArray[0] ){
+ nIdx = 0;
+ return FALSE; // Nicht gefunden: nPos unterhalb kleinstem Eintrag
+ }
+ for( nI=0; nI<nIMax; nI++){ // Suchen
+ if( nP <= pPLCF_PosArray[nI] ){ // Position gefunden
+ nIdx = nI; // nI ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+ nIdx = nIMax; // Nicht gefunden, groesser als alle Eintraege
+ return FALSE;
+}
+
+BOOL WW8PLCFspecial::Get( long& rPos, void*& rpValue )
+{
+ if ( nIdx >= nIMax ){
+ rPos = LONG_MAX;
+ return FALSE;
+ }
+ rPos = pPLCF_PosArray[nIdx];
+ rpValue = pPLCF_Contents ? (void*)&pPLCF_Contents[nIdx * nStru] : 0;
+ return TRUE;
+}
+
+BOOL WW8PLCFspecial::GetData( long nIdx, long& rPos, void*& rpValue )
+{
+ if ( nIdx >= nIMax ){
+ rPos = LONG_MAX;
+ return FALSE;
+ }
+ rPos = pPLCF_PosArray[nIdx];
+ rpValue = pPLCF_Contents ? (void*)&pPLCF_Contents[nIdx * nStru] : 0;
+ return TRUE;
+}
+
+//-----------------------------------------
+// WW8PLCF z.B. fuer SEPX
+//-----------------------------------------
+
+// Ctor fuer *andere* als Fkps
+// Bei nStartPos < 0 wird das erste Element des PLCFs genommen
+WW8PLCF::WW8PLCF( SvStream* pSt, long nFilePos, long nPLCF,
+ long nStruct, long nStartPos )
+:nIdx( 0 ), nStru( nStruct )
+{
+ ASSERT( nPLCF, "WW8PLCF: nPLCF ist Null!" );
+
+ nIMax = ( nPLCF - 4 ) / ( 4 + nStruct );
+
+ ReadPLCF( pSt, nFilePos, nPLCF );
+
+ if( nStartPos >= 0 )
+ SeekPos( nStartPos );
+}
+
+// Ctor *nur* fuer Fkps
+// Die letzten 2 Parameter sind fuer PLCF.Chpx und PLCF.Papx noetig.
+// ist ncpN != 0, dann wird ein unvollstaendiger PLCF vervollstaendigt.
+// Das ist bei WW6 bei Resourcenmangel und bei WordPad (W95) immer noetig.
+// Bei nStartPos < 0 wird das erste Element des PLCFs genommen
+WW8PLCF::WW8PLCF( SvStream* pSt, long nFilePos, long nPLCF,
+ long nStruct, long nStartPos, long nPN, long ncpN )
+:nIdx( 0 ), nStru( nStruct )
+{
+ nIMax = ( nPLCF - 4 ) / ( 4 + nStruct );
+
+ if( nIMax >= (long) ncpN )
+ ReadPLCF( pSt, nFilePos, nPLCF );
+ else
+ GeneratePLCF( pSt, nPN, ncpN );
+
+ if( nStartPos >= 0 )
+ SeekPos( nStartPos );
+
+// Damit man sich den Inhalt im Debugger ansehen kann
+#ifdef DEBUG_STRUCT
+ INT32 (*p1)[200] = (INT32 (*)[200])pPLCF_PosArray;
+ USHORT (*p2)[200] = (USHORT (*)[200])pPLCF_Contents;
+ p2 = p2;
+#endif
+}
+
+void WW8PLCF::ReadPLCF( SvStream* pSt, long nFilePos, long nPLCF )
+{
+ pPLCF_PosArray = new INT32[ ( nPLCF + 3 ) / 4 ]; // Pointer auf Pos-Array
+
+ long nOldPos = pSt->Tell();
+
+ pSt->Seek( nFilePos );
+ pSt->Read( pPLCF_PosArray, nPLCF );
+#ifdef __BIGENDIAN
+ for( nIdx = 0; nIdx <= nIMax; nIdx++ ){
+ pPLCF_PosArray[nIdx] = SWAPLONG( pPLCF_PosArray[nIdx] );
+ }
+ nIdx = 0;
+#endif // __BIGENDIAN
+ pPLCF_Contents = (char*)&pPLCF_PosArray[nIMax + 1]; // Pointer auf Inhalts-Array
+
+ pSt->Seek( nOldPos );
+}
+
+void WW8PLCF::GeneratePLCF( SvStream* pSt, long nPN,
+ long ncpN )
+{
+ ASSERT( nIMax < (long)ncpN, "Pcl.Fkp: Warum ist PLCF zu gross ?" );
+ nIMax = ncpN;
+ long nSiz = 6 * nIMax + 4;
+ pPLCF_PosArray = new INT32[ ( nSiz + 3 ) / 4 ]; // Pointer auf Pos-Array
+ memset( pPLCF_PosArray, 0, (size_t)nSiz );
+
+ INT32 nFc;
+ USHORT i;
+
+ for( i = 0; i < ncpN; i++ ){ // Baue FC-Eintraege
+ pSt->Seek( ( nPN + i ) << 9 ); // erster FC-Eintrag jedes Fkp
+ *pSt >> nFc;
+ pPLCF_PosArray[i] = nFc;
+ }
+ ULONG nLastFkpPos = ( ( nPN + nIMax - 1 ) << 9 );
+ pSt->Seek( nLastFkpPos + 511 ); // Anz. Fkp-Eintraege des letzten Fkp
+ BYTE nb;
+ *pSt >> nb;
+ pSt->Seek( nLastFkpPos + nb * 4 ); // letzer FC-Eintrag des letzten Fkp
+ *pSt >> nFc;
+ pPLCF_PosArray[nIMax] = nFc; // Ende des letzten Fkp
+
+ pPLCF_Contents = (char*)&pPLCF_PosArray[nIMax + 1]; // Pointer auf Inhalts-Array
+ USHORT* p = (USHORT*)pPLCF_Contents;
+
+ for( i = 0; i < ncpN; i++ ) // Baue PNs
+ p[i] = nPN + i;
+
+#ifdef DEBUG_STRUCT // Damit man sich den Inhalt im Debugger ansehen kann
+ INT32 (*p1)[200] = (INT32 (*)[200])pPLCF_PosArray;
+ USHORT (*p2)[200] = (USHORT (*)[200])pPLCF_Contents;
+ p2 = p2;
+#endif
+}
+
+BOOL WW8PLCF::SeekPos( long nPos )
+{
+ register long nI;
+ register long nP = nPos;
+
+ if( nP < pPLCF_PosArray[0] ){
+ nIdx = 0;
+ return FALSE; // Nicht gefunden: nPos unterhalb kleinstem Eintrag
+ }
+ for( nI=1; nI<=nIMax; nI++){ // Suchen mit um 1 erhoehtem Index
+ if( nP < pPLCF_PosArray[nI] ){ // Position gefunden
+ nIdx = nI - 1; // nI - 1 ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+ nIdx = nIMax; // Nicht gefunden, groesser als alle Eintraege
+ return FALSE;
+}
+
+BOOL WW8PLCF::Get( long& rStart, long& rEnd, void*& rpValue )
+{
+ if ( nIdx >= nIMax )
+ {
+ rStart = rEnd = LONG_MAX;
+ return FALSE;
+ }
+ rStart = pPLCF_PosArray[ nIdx ];
+ rEnd = pPLCF_PosArray[ nIdx + 1 ];
+ rpValue = (void*)&pPLCF_Contents[nIdx * nStru];
+ return TRUE;
+}
+
+long WW8PLCF::Where()
+{
+ if ( nIdx >= nIMax )
+ return LONG_MAX;
+
+ return pPLCF_PosArray[nIdx];
+}
+
+//-----------------------------------------
+// WW8PLCFpcd
+//-----------------------------------------
+
+WW8PLCFpcd::WW8PLCFpcd( SvStream* pSt, long nFilePos, long nPLCF, long nStruct )
+:nStru( nStruct )
+{
+ nIMax = ( nPLCF - 4 ) / ( 4 + nStruct );
+ pPLCF_PosArray = new INT32[ ( nPLCF + 3 ) / 4 ]; // Pointer auf Pos-Array
+
+ long nOldPos = pSt->Tell();
+
+ pSt->Seek( nFilePos );
+ pSt->Read( pPLCF_PosArray, nPLCF );
+#ifdef __BIGENDIAN
+ for( long nI = 0; nI <= nIMax; nI++ ){
+ pPLCF_PosArray[nI] = SWAPLONG( pPLCF_PosArray[nI] );
+ }
+#endif // __BIGENDIAN
+
+ pPLCF_Contents = (char*)&pPLCF_PosArray[nIMax + 1]; // Pointer auf Inhalts-Array
+
+#ifdef DEBUG_STRUCT // Damit man sich den Inhalt im Debugger ansehen kann
+ INT32 (*p1)[200] = (INT32 (*)[200])pPLCF_PosArray;
+ WW8_PCD1 (*p2)[200] = (WW8_PCD1 (*)[200])pPLCF_Contents;
+#endif
+
+ pSt->Seek( nOldPos );
+}
+
+// Bei nStartPos < 0 wird das erste Element des PLCFs genommen
+WW8PLCFpcd_Iter::WW8PLCFpcd_Iter( WW8PLCFpcd& rPLCFpcd, long nStartPos /* = -1 */ )
+:rPLCF( rPLCFpcd ), nIdx( 0 )
+{
+ if( nStartPos >= 0 )
+ SeekPos( nStartPos );
+}
+
+BOOL WW8PLCFpcd_Iter::SeekPos( long nPos )
+{
+ register long nI;
+ register long nP = nPos;
+
+ if( nP < rPLCF.pPLCF_PosArray[0] ){
+ nIdx = 0;
+ return FALSE; // Nicht gefunden: nPos unterhalb kleinstem Eintrag
+ }
+ for( nI=1; nI<=rPLCF.nIMax; nI++){ // Suchen mit um 1 erhoehtem Index
+ if( nP < rPLCF.pPLCF_PosArray[nI] ){// Position gefunden
+ nIdx = nI - 1; // nI - 1 ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+ nIdx = rPLCF.nIMax; // Nicht gefunden, groesser als alle Eintraege
+ return FALSE;
+}
+
+/*
+BOOL WW8PLCFpcd_Iter::SeekMaxMainFC( WW8Fib& rWwF, long& rMaxPosData )
+{
+ long nCpStart, nCpEnd;
+ void* pData;
+ nIdx = rPLCF.nIMax-1;
+ if( !Get( nCpStart, nCpEnd, pData ) )
+ {
+ ASSERT( ASS_FALSE, "SeekMaxMainFC findet Eintrag zu nIdx nicht" );
+ return FALSE;
+ }
+ BOOL bIsUnicode;
+ WW8_FC nActPosData = WW8PLCFx_PCD::TransformPieceAddress(
+ SVBT32ToLong( ( (WW8_PCD*)pData )->fc ),
+ &bIsUnicode );
+
+// rMaxPosData = nActPosData + ((rWwF.ccpText - nCpStart) * (bIsUnicode ? 2 : 1));
+
+ rMaxPosData = nActPosData + rWwF.ccpText - nCpStart;
+
+ return (0 < rMaxPosData);
+}
+*/
+
+BOOL WW8PLCFpcd_Iter::Get( long& rStart, long& rEnd, void*& rpValue )
+{
+ if( nIdx >= rPLCF.nIMax )
+ {
+ rStart = rEnd = LONG_MAX;
+ return FALSE;
+ }
+ rStart = rPLCF.pPLCF_PosArray[nIdx];
+ rEnd = rPLCF.pPLCF_PosArray[nIdx + 1];
+ rpValue = (void*)&rPLCF.pPLCF_Contents[nIdx * rPLCF.nStru];
+#ifdef DEBUG_STRUCT
+ WW8_PCD1* p = (WW8_PCD1*)rpValue;
+ p = p;
+#endif
+ return TRUE;
+}
+
+long WW8PLCFpcd_Iter::Where()
+{
+ if ( nIdx >= rPLCF.nIMax )
+ return LONG_MAX;
+
+ return rPLCF.pPLCF_PosArray[nIdx];
+}
+
+//-----------------------------------------
+
+WW8PLCFx_Fc_FKP::WW8Fkp::WW8Fkp( BYTE nFibVer, SvStream* pSt, SvStream* pDataSt,
+ long nFilePos, long nItemSiz,
+ ePLCFT ePl, WW8_FC nStartFc )
+:nItemSize( nItemSiz ), ePLCF( ePl ), nIdx( 0 )
+{
+ nVersion = nFibVer;
+
+// pFkp = new BYTE[512]; // 512 Byte
+ pFkp = (BYTE*)new INT32[128]; // 512 Byte
+
+ long nOldPos = pSt->Tell();
+
+ pSt->Seek( nFilePos );
+ pSt->Read( pFkp, 512 );
+ nIMax = pFkp[511];
+#ifdef __BIGENDIAN
+ register UINT32* p;
+ for( nIdx = 0, p = (UINT32*)pFkp; nIdx <= nIMax; nIdx++, p++ )
+ *p = SWAPLONG( *p );
+#endif // __BIGENDIAN
+
+
+ // Pointer auf Offset-Bereich in *pFkp
+ BYTE* pOfs = pFkp + (nIMax + 1) * 4;
+
+ pGrpprl = new WW8Grpprl[nIMax];
+ memset( pGrpprl, 0, sizeof( WW8Grpprl )*nIMax );
+
+ WW8Grpprl* pTmpGrpprl = pGrpprl;
+ for( nIdx = 0; nIdx < nIMax; nIdx++, pTmpGrpprl++ )
+ {
+ USHORT nOfs = (*(pOfs + nIdx * nItemSize)) * 2;
+
+ if ( nOfs )
+ {
+ switch ( ePLCF )
+ {
+ case CHP:
+ pTmpGrpprl->nLen = (short)pFkp[ nOfs ];
+ pTmpGrpprl->pData = pFkp + nOfs + 1;
+ break;
+ case PAP:
+ BYTE nDelta = 0;//(8 > nVersion) ? 0 : 1;
+ pTmpGrpprl->nLen = pFkp[ nOfs ];
+ if( 8 <= nVersion && !pTmpGrpprl->nLen )
+ {
+ pTmpGrpprl->nLen = pFkp[ nOfs+1 ];
+ nDelta++;
+ }
+ pTmpGrpprl->nIStd = SVBT16ToShort( (unsigned char *) pFkp+nOfs+1+nDelta );
+ pTmpGrpprl->pData = pFkp + nOfs + 3+nDelta ;
+ USHORT nSpId = WW8GetSprmId( nVersion, pTmpGrpprl->pData );
+ if( 0x6645 == nSpId || 0x6646 == nSpId )
+ {
+ UINT32 nPos = *(UINT32*)(pTmpGrpprl->pData + 2);
+ UINT32 nCurr = pDataSt->Tell();
+ pDataSt->Seek( nPos );
+ *pDataSt >> pTmpGrpprl->nLen;
+ pTmpGrpprl->pData = new BYTE[pTmpGrpprl->nLen];
+ pTmpGrpprl->bMustDelete = TRUE;
+ pDataSt->Read( pTmpGrpprl->pData, pTmpGrpprl->nLen );
+
+ pDataSt->Seek( nCurr );
+ }
+ else
+ {
+ pTmpGrpprl->nLen *= 2;
+ pTmpGrpprl->nLen -= 2;
+ }
+ break;
+ }
+ }
+ }
+
+ nIdx = 0;
+
+ if( nStartFc >= 0 )
+ SeekPos( nStartFc );
+
+ pSt->Seek( nOldPos );
+}
+
+WW8PLCFx_Fc_FKP::WW8Fkp::~WW8Fkp()
+{
+ WW8Grpprl* pTmpGrpprl = pGrpprl;
+ for( nIdx = 0; nIdx < nIMax; nIdx++, pTmpGrpprl++ )
+ {
+ if( pTmpGrpprl->bMustDelete )
+ delete pTmpGrpprl->pData;
+ }
+ delete pGrpprl;
+ delete pFkp;
+}
+
+BOOL WW8PLCFx_Fc_FKP::WW8Fkp::SeekPos( WW8_FC nFc )
+{
+ register short nI;
+
+ if( nFc < ((WW8_FC*)pFkp)[0] ){
+ nIdx = 0;
+ return FALSE; // Nicht gefunden: nPos unterhalb kleinstem Eintrag
+ }
+ for( nI=1; nI<=nIMax; nI++){ // Suchen mit um 1 erhoehtem Index
+ if( nFc < ((WW8_FC*)pFkp)[nI] ){ // Position gefunden
+ nIdx = nI - 1; // nI - 1 ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+ nIdx = nIMax; // Nicht gefunden, groesser als alle Eintraege
+ return FALSE;
+}
+
+BYTE* WW8PLCFx_Fc_FKP::WW8Fkp::Get( WW8_FC& rStart, WW8_FC& rEnd, short& rLen )
+{
+ rLen = 0;
+
+ if( nIdx >= nIMax ){
+ rStart = LONG_MAX;
+ return 0;
+ }
+
+ rStart = ((WW8_FC*)pFkp)[nIdx ];
+ rEnd = ((WW8_FC*)pFkp)[nIdx+1];
+
+ BYTE* pSprms = GetLenAndIStdAndSprms( rLen );
+ return pSprms;
+}
+
+void WW8PLCFx_Fc_FKP::WW8Fkp::SetIdx( ULONG nI )
+{
+ if( nI < nIMax) nIdx = (short)nI;
+}
+
+BYTE* WW8PLCFx_Fc_FKP::WW8Fkp::GetLenAndIStdAndSprms(short& rLen)
+{
+ WW8Grpprl* pTmpGrpprl = pGrpprl + nIdx;
+
+ rLen = pTmpGrpprl->nLen;
+
+ return pTmpGrpprl->pData;
+}
+
+
+BYTE* WW8FindSprm( USHORT nId, long nLen, BYTE* pSprms, BYTE nVersion )
+{
+ WW8SprmIter aSprmIter( pSprms, nLen, nVersion );
+
+ while( aSprmIter.GetSprms() )
+ {
+ if( aSprmIter.GetAktId() == nId )
+ return aSprmIter.GetAktParams(); // SPRM found!
+ aSprmIter++;
+ }
+
+ return 0; // SPRM _not_ found
+}
+
+
+BYTE* WW8PLCFx_Fc_FKP::WW8Fkp::HasSprm( USHORT nId )
+{
+ if( nIdx >= nIMax )
+ return 0;
+
+ short nLen;
+ BYTE* pSprms = GetLenAndIStdAndSprms( nLen );
+
+ return WW8FindSprm( nId, nLen, pSprms, nVersion );
+}
+
+ULONG WW8PLCFx_Fc_FKP::WW8Fkp::GetParaHeight() const
+{
+ if( ePLCF != PAP ){
+ ASSERT( ASS_FALSE, "Fkp::GetParaHeight: Falscher Fkp" );
+ return 0;
+ }
+ if( nIdx >= nIMax )
+ return 0;
+
+ WW8_PHE_Base* pPhe = (WW8_PHE_Base*)( (pFkp + (nIMax + 1) * 4)
+ + ( nIdx * nItemSize ) + 1 );
+
+ if( pPhe->aBits1 & 0x2 ) // fUnk
+ return 0; // invalid
+
+ if( pPhe->aBits1 & 0x4 ){ // fDiffLines
+ return SVBT16ToShort( pPhe->dyl ); // Gesamthoehe
+ }else{ // nlMac gleich hohe Zeilen
+ INT32 nH = (INT16)SVBT16ToShort( pPhe->dyl ); // Zeilenhoehe
+ if( nH < 0 ) // negative Werte wollen wir
+ nH = 0; // nicht
+ nH *= (INT32)pPhe->nlMac; // Hoehe einer Zeile * Zeilen
+ return (ULONG)nH;
+ }
+}
+
+//-----------------------------------------
+
+#if 0
+BYTE* WW8PLCFx::GetSprms( long& rStart, long& rEnd, long& rLen )
+{
+ ASSERT( FALSE, "Falsches GetSprms gerufen" );
+ rStart = rEnd = LONG_MAX;
+ rLen = 0;
+ return 0;
+}
+#endif
+
+void WW8PLCFx::GetSprms( WW8PLCFxDesc* p )
+{
+ ASSERT( ASS_FALSE, "Falsches GetSprms gerufen" );
+ p->nStartPos = p->nEndPos = LONG_MAX;
+ p->nSprmsLen = 0;
+ p->pMemPos = 0;
+ p->bRealLineEnd = FALSE;
+ return;
+}
+
+long WW8PLCFx::GetNoSprms( long& rStart, long& rEnd, long& rLen )
+{
+ ASSERT( ASS_FALSE, "Falsches GetNoSprms gerufen" );
+ rStart = rEnd = LONG_MAX;
+ rLen = 0;
+ return 0;
+}
+
+#if 0
+WW8PLCFx& WW8PLCFx::operator ++(int)
+{
+ ASSERT( FALSE, "Falsches ++ gerufen" );
+ return *this;
+}
+#endif
+
+// ...Idx2: Default: ignorieren
+ULONG WW8PLCFx::GetIdx2()
+{
+ return 0;
+}
+
+void WW8PLCFx::SetIdx2( ULONG nIdx )
+{
+}
+
+//-----------------------------------------
+BOOL WW8PLCFx_Fc_FKP::NewFkp()
+{
+ long nPLCFStart, nPLCFEnd;
+ void* pPage;
+
+ static int __READONLY_DATA WW8FkpSizeTabVer6[ PLCF_END ] = {
+ 1, 7, 0 /*, 0, 0, 0*/ };
+ static int __READONLY_DATA WW8FkpSizeTabVer8[ PLCF_END ] = {
+ 1, 13, 0 /*, 0, 0, 0*/ };
+ const int* pFkpSizeTab;
+ switch( GetVersion() )
+ {
+ case 6:
+ case 7: pFkpSizeTab = WW8FkpSizeTabVer6;
+ break;
+ case 8: pFkpSizeTab = WW8FkpSizeTabVer8;
+ break;
+ default:// Programm-Fehler!
+ ASSERT( !this, "Es wurde vergessen, nVersion zu kodieren!" );
+ return FALSE;
+ }
+
+#if 0 //!!!!!
+ pFkp = 0; // absichtliches SpeicherLoch fuer besseres Debuggen
+#else
+ DELETEZ( pFkp );
+#endif
+
+ if (!pPLCF->Get( nPLCFStart, nPLCFEnd, pPage ))
+ return FALSE; // PLCF fertig abgearbeitet
+ (*pPLCF)++;
+ long nPo = SVBT16ToShort( (unsigned char *)pPage );
+ nPo <<= 9; // shift als LONG
+ pFkp = new WW8Fkp( GetVersion(), pFKPStrm, pDataStrm, nPo, pFkpSizeTab[ ePLCF ],
+ ePLCF, nStartFc );
+ nStartFc = -1; // Nur das erste Mal
+ return TRUE;
+}
+
+WW8PLCFx_Fc_FKP::WW8PLCFx_Fc_FKP(SvStream* pSt, SvStream* pTblSt,
+ SvStream* pDataSt, WW8Fib& rFib, ePLCFT ePl,
+ WW8_FC nStartFcL,
+ WW8PLCFx_PCDAttrs* pPLCFx_PCDAttrs_)
+ : WW8PLCFx( rFib.nVersion, TRUE ),
+ pFKPStrm( pSt ),
+ pDataStrm( pDataSt ),
+ ePLCF( ePl ),
+ pFkp( 0 ),
+ nStartFc( nStartFcL ),
+ pPCDAttrs( pPLCFx_PCDAttrs_)
+{
+ long nLenStruct = (8 > rFib.nVersion) ? 2 : 4;
+ if( ePl == CHP )
+ pPLCF = new WW8PLCF( pTblSt, rFib.fcPlcfbteChpx,
+ rFib.lcbPlcfbteChpx,
+ nLenStruct,
+ nStartFc,
+ rFib.pnChpFirst,
+ rFib.cpnBteChp );
+ else
+ pPLCF = new WW8PLCF( pTblSt, rFib.fcPlcfbtePapx,
+ rFib.lcbPlcfbtePapx,
+ nLenStruct,
+ nStartFc,
+ rFib.pnPapFirst,
+ rFib.cpnBtePap );
+}
+
+WW8PLCFx_Fc_FKP::~WW8PLCFx_Fc_FKP()
+{
+ delete pFkp;
+ delete pPLCF;
+}
+
+
+ULONG WW8PLCFx_Fc_FKP::GetIdx()
+{
+ ULONG u = pPLCF->GetIdx() << 8;
+ if( pFkp )
+ u |= pFkp->GetIdx();
+ return u;
+}
+
+void WW8PLCFx_Fc_FKP::SetIdx( ULONG nIdx )
+{
+ if( !( nIdx & 0xffffff00L ) ){
+ pPLCF->SetIdx( nIdx >> 8 );
+ DELETEZ( pFkp );
+
+ }else{ // Es gab einen Fkp
+ // Lese PLCF um 1 Pos zurueck, um
+ pPLCF->SetIdx( ( nIdx >> 8 ) - 1 ); // die Adresse des Fkp wiederzubekommen
+ if ( NewFkp() ) // und lese Fkp wieder ein
+ pFkp->SetIdx( nIdx & 0xff ); // Dann stelle Fkp-Pos wieder ein
+ }
+}
+
+BOOL WW8PLCFx_Fc_FKP::SeekPos( WW8_FC nFcPos )
+{
+ DELETEZ( pFkp ); // FKP ungueltig machen
+ nStartFc = nFcPos; // StartPos fuer naechstes Where()
+ return pPLCF->SeekPos( nFcPos ); // StartPos fuer naechstes pPLCF->Get()
+}
+
+WW8_FC WW8PLCFx_Fc_FKP::Where()
+{
+ if( !pFkp ){
+ if( !NewFkp() )
+ return LONG_MAX;
+ }
+ WW8_FC nP = pFkp->Where();
+ if( nP != LONG_MAX )
+ return nP;
+
+ DELETEZ( pFkp ); // FKP beendet -> hole neuen
+ return Where(); // am einfachsten rekursiv
+}
+
+
+
+BYTE* WW8PLCFx_Fc_FKP::GetSprms( WW8_FC& rStart, WW8_FC& rEnd, long& rLen )
+{
+ rLen = 0; // Default
+ rStart = rEnd = LONG_MAX;
+
+ if( !pFkp ){ // Fkp nicht da ?
+ if( !NewFkp() )
+ return 0;
+ }
+
+ short nLen;
+ BYTE* pPos = pFkp->Get( rStart, rEnd, nLen );
+ if( rStart == LONG_MAX )
+ { // nicht gefunden
+ return 0;
+ }
+ rLen = nLen;
+ return pPos;
+}
+
+
+
+WW8PLCFx& WW8PLCFx_Fc_FKP::operator ++( int )
+{
+ if( !pFkp ){
+// ASSERT( FALSE, "pFkp fehlt");
+// return *this;
+ if( !NewFkp() )
+ return *this;
+ }
+
+ (*pFkp)++;
+ if( pFkp->Where() == LONG_MAX ){
+ NewFkp();
+ }
+ return *this;
+}
+
+USHORT WW8PLCFx_Fc_FKP::GetIstd() const
+{
+ return (pFkp) ? pFkp->GetIstd() : 0xffff;
+}
+
+
+void WW8PLCFx_Fc_FKP::GetPCDSprms( WW8PLCFxDesc& rDesc )
+{
+ rDesc.pMemPos = 0;
+ rDesc.nSprmsLen = 0;
+ if( pPCDAttrs )
+ {
+ if( !pFkp )
+ {
+ DBG_WARNING( "+Problem: GetPCDSprms: NewFkp noetig ( kein const moeglich )" );
+ if( !NewFkp() )
+ return;
+ }
+
+ long nFcPos, nEnd; // FCs
+ short nLen;
+ pFkp->Get( nFcPos, nEnd, nLen );
+
+ WW8PLCFpcd_Iter* pIter = pPCDAttrs->GetIter();
+
+ /**************************************/
+ ULONG nSaveIdx = pIter->GetIdx();
+ BOOL bFirst = TRUE;
+ while( 1 )
+ {
+ long nCpStart, nCpEnd;
+ void* pData;
+ if( !pIter->Get( nCpStart, nCpEnd, pData ) )
+ { // ausserhalb PLCFfpcd ?
+ break;
+ }
+ BOOL bIsUnicode = FALSE;
+ INT32 nFcStart = SVBT32ToLong( ((WW8_PCD*)pData)->fc );
+ if( 7 < GetVersion() )
+ nFcStart = WW8PLCFx_PCD::TransformPieceAddress( nFcStart, bIsUnicode );
+
+ INT32 nLen = (nCpEnd - nCpStart) * (bIsUnicode ? 2 : 1);
+
+ if( nFcPos >= nFcStart && nFcPos < nFcStart + nLen )
+ {
+ // gefunden
+ pPCDAttrs->GetSprms( &rDesc );
+ break;
+ }
+ if( bFirst )
+ {
+ pIter->SetIdx( 0 );
+ bFirst = FALSE;
+ }
+ else
+ (*pIter)++;
+ }
+ if( nSaveIdx != pIter->GetIdx() )
+ pIter->SetIdx( nSaveIdx );
+ /**************************************/
+ }
+}
+
+
+BYTE* WW8PLCFx_Fc_FKP::HasSprm( USHORT nId )
+{ // const waere schoener, aber dafuer
+ // muesste NewFkp() ersetzt werden
+ // oder wegfallen
+ if( !pFkp )
+ {
+ DBG_WARNING( "+Motz: HasSprm: NewFkp noetig ( kein const moeglich )" );
+ // Passiert bei BugDoc 31722
+ if( !NewFkp() )
+ return 0;
+ }
+
+ BYTE* pRes = pFkp->HasSprm( nId );
+
+ if( !pRes )
+ {
+ WW8PLCFxDesc aDesc;
+ GetPCDSprms( aDesc );
+
+ if( aDesc.pMemPos )
+ {
+ pRes = WW8FindSprm( nId, aDesc.nSprmsLen,
+ aDesc.pMemPos, pFkp->GetVersion() );
+ }
+ }
+ return pRes;
+}
+
+
+ULONG WW8PLCFx_Fc_FKP::GetParaHeight() const
+{
+ if( !pFkp ){
+ ASSERT( ASS_FALSE, "GetParaHeight: pFkp nicht da" );
+ return 0;
+ }
+ return pFkp->GetParaHeight();
+}
+
+//-----------------------------------------
+
+WW8PLCFx_Cp_FKP::WW8PLCFx_Cp_FKP( SvStream* pSt, SvStream* pTblSt, SvStream* pDataSt,
+ const WW8ScannerBase& rBase,
+ ePLCFT ePl )
+ : WW8PLCFx_Fc_FKP( pSt, pTblSt, pDataSt, *rBase.pWw8Fib, ePl,
+ rBase.WW8Cp2Fc( 0 ),
+ rBase.pPLCFx_PCDAttrs ),
+ rSBase( rBase ),
+// nFcMin( rBase.pWrFib.fcMin ),
+ nAttrStart( -1 ), nAttrEnd( -1 ),
+ bLineEnd( FALSE ),
+ bComplex( (7 < rBase.pWw8Fib->nVersion) || (0 != rBase.pWw8Fib->fComplex) )
+{
+ ResetAttrStartEnd();
+ pPcd = rSBase.pPiecePLCF ? new WW8PLCFx_PCD(
+ rBase.pWw8Fib->nVersion, rBase.pPiecePLCF, 0,
+ ((6 == GetVersion()) || (7 == GetVersion())) )
+ : 0;
+}
+
+WW8PLCFx_Cp_FKP::~WW8PLCFx_Cp_FKP()
+{
+ delete pPcd;
+}
+
+void WW8PLCFx_Cp_FKP::ResetAttrStartEnd()
+{
+ nAttrStart = -1;
+ nAttrEnd = -1;
+ bLineEnd = FALSE;
+}
+
+ULONG WW8PLCFx_Cp_FKP::GetIdx2()
+{
+ return pPcd ? pPcd->GetIdx() : 0;
+}
+
+void WW8PLCFx_Cp_FKP::SetIdx2( ULONG nIdx )
+{
+ if( pPcd )
+ pPcd->SetIdx( nIdx );
+}
+
+BOOL WW8PLCFx_Cp_FKP::SeekPos( WW8_CP nCpPos )
+{
+/*
+ WW8_FC nTargetFc = WW8Cp2Fc( nCpPos, nFcMin );
+ return (LONG_MAX != nTargetFc)
+ && WW8PLCFx_Fc_FKP::SeekPos( nTargetFc );
+*/
+ if( pPcd ) // Complex
+ {
+ if( !pPcd->SeekPos( nCpPos ) ) // Piece setzen
+ return FALSE;
+ return WW8PLCFx_Fc_FKP::SeekPos( pPcd->AktPieceStartCp2Fc( nCpPos ) );
+ }
+ // KEINE Piece-Table !!!
+ return WW8PLCFx_Fc_FKP::SeekPos( rSBase.WW8Cp2Fc( nCpPos /*,TRUE*/ ) );
+}
+
+WW8_CP WW8PLCFx_Cp_FKP::Where()
+{
+ WW8_FC nFc = WW8PLCFx_Fc_FKP::Where();
+ if( pPcd )
+ return pPcd->AktPieceStartFc2Cp( nFc ); // Piece ermitteln
+ return rSBase.WW8Fc2Cp( nFc/*,TRUE*/ ); // KEINE Piece-Table !!!
+}
+
+void WW8PLCFx_Cp_FKP::GetSprms( WW8PLCFxDesc* p )
+{
+ p->pMemPos = WW8PLCFx_Fc_FKP::GetSprms( p->nStartPos, p->nEndPos, p->nSprmsLen );
+
+#ifdef DEBUG
+ if( ePLCF == PAP ) // um hier einen Brechpunkt zu setzen
+ ePLCF = PAP;
+#endif
+
+ if( pPcd ) // Piece-Table vorhanden !!!
+ {
+ if( (nAttrStart > nAttrEnd)
+ || (nAttrStart == -1) ) // Init ( noch kein ++ gerufen )
+ {
+ eCutT eC = pPcd->AktPieceFc2Cp( p->nStartPos, p->nEndPos );
+ p->bRealLineEnd = !( eC & CUT_END ) && ePLCF == PAP;
+ }
+ else
+ {
+ p->nStartPos = nAttrStart;
+ p->nEndPos = nAttrEnd;
+ p->bRealLineEnd = bLineEnd;
+ }
+ }
+ else // KEINE Piece-Table !!!
+ {
+ p->nStartPos = rSBase.WW8Fc2Cp( p->nStartPos/*,TRUE*/ );
+ p->nEndPos = rSBase.WW8Fc2Cp( p->nEndPos/*,TRUE*/ );
+ p->bRealLineEnd = ePLCF == PAP;
+ }
+}
+
+
+// WW8PLCF_Cp_Fkp::SearchParaEnd kann einfacher durchgefuehrt werden, wenn das
+// Flag "Zeilenende im Piece" in der Piecetable ausgewertet wird.
+void WW8PLCFx_Cp_FKP::SearchParaEnd( long nOldEndCp )
+{
+ if( !bComplex )
+ {
+ ASSERT( !this, "SearchParaEnd fuer Non-Complex File gerufen" );
+ return;
+ }
+ if( ePLCF != PAP )
+ {
+ ASSERT( !this, "SearchParaEnd fuer Non-PAP gerufen" );
+ return;
+ }
+ long nFkpLen; // Fkp-Eintrag
+ long nPcdStart, nPcdEnd; // Piece-Grenzen
+
+ WW8PLCFx_Fc_FKP::GetSprms( nAttrStart, nAttrEnd, nFkpLen ); // Fkp-Eintrag holen
+ eCutT eC = pPcd->AktPieceFc2Cp( nAttrStart, nAttrEnd );
+ if( eC == CUT_NONE ) // neuer Eintrag ganz im akt. Piece
+ {
+ ASSERT( !this, "Nanu?" );
+ return; // und fertig
+ }
+ WW8PLCFpcd_Iter* pIter = pPcd->GetPLCFIter();
+ void* pData;
+ do{
+ (*pPcd)++; // naechstes Piece
+ if( !pIter->Get( nPcdStart, nPcdEnd, pData ) ){ // Piece-Grenzen holen
+#ifdef DEBUG_STRUCT
+ WW8_PCD1* p = (WW8_PCD1*)pData;
+ p = p;
+#endif
+ nAttrStart = nAttrEnd = LONG_MAX; // kein Piece mehr vorhanden
+ return;
+ }
+#ifdef DEBUG_STRUCT
+ WW8_PCD1* p = (WW8_PCD1*)pData;
+ p = p;
+#endif
+
+ }while( SVBT8ToByte( ( (WW8_PCD*)pData )->aBits1 ) & 0x1 );
+ // bis NL in Piece
+
+ if( !WW8PLCFx_Fc_FKP::SeekPos( rSBase.WW8Cp2Fc( nPcdStart ) ) )
+ {
+ ASSERT( !this, " Can't seek to Piece Start" );
+ nAttrStart = nAttrEnd = LONG_MAX; // kein Piece mehr vorhanden
+ return;
+ }
+ WW8PLCFx_Fc_FKP::GetSprms( nAttrStart, nAttrEnd, nFkpLen ); // Fkp-Eintrag holen
+ eC = pPcd->AktPieceFc2Cp( nAttrStart, nAttrEnd ); // wird in CPs gebraucht
+
+ nAttrStart = nOldEndCp; // Aufziehen ueber ganzen Absatz, unabhaengig
+ // davon, wieviel Pieces das sind
+}
+
+WW8PLCFx& WW8PLCFx_Cp_FKP::operator ++( int )
+{
+ WW8PLCFx_Fc_FKP::operator ++( 0 );
+ if( !bComplex || !pPcd ) // !pPcd: Notbremse
+ return *this;
+// ohoho
+ long nFkpLen; // Fkp-Eintrag
+ long nPcdStart, nPcdEnd, nPcdLen; // Piece-Grenzen
+ long nOldEndCp = nAttrEnd;
+
+ WW8PLCFx_Fc_FKP::GetSprms( nAttrStart, nAttrEnd, nFkpLen ); // Fkp-Eintrag holen
+ eCutT eC = pPcd->AktPieceFc2Cp( nAttrStart, nAttrEnd );
+ bLineEnd = !( eC & CUT_END ) && ePLCF == PAP;
+ if( !( eC & CUT_START ) ){ // neuer Eintrag faengt im
+ // akt. Piece an
+#ifdef DEBUG
+ if( ePLCF == PAP )
+ ePLCF = PAP; // um hier einen Brechpunkt zu setzen
+ if( ePLCF == CHP )
+ ePLCF = CHP; // um hier einen Brechpunkt zu setzen
+#endif
+ return *this; // und fertig
+ }
+ // naechster Eintrag im naechsten Piece
+
+ if( ePLCF == PAP )
+ {
+ SearchParaEnd( nOldEndCp );
+ bLineEnd = TRUE;
+ return *this;
+ }
+
+ // naechstes Piece
+ bLineEnd = FALSE;
+ (*pPcd)++;
+ pPcd->GetNoSprms( nPcdStart, nPcdEnd, nPcdLen );
+ // Piece-Grenzen holen
+ if( !WW8PLCFx_Fc_FKP::SeekPos( rSBase.WW8Cp2Fc( nPcdStart ) ) )
+ {
+ ASSERT( nPcdStart == LONG_MAX, "Chp-SeekPos ging schief" );
+ nAttrStart = nAttrEnd = LONG_MAX;
+ goto Ret;
+ }
+ // Fkp-Eintrag holen
+ WW8PLCFx_Fc_FKP::GetSprms( nAttrStart, nAttrEnd, nFkpLen );
+ eC = pPcd->AktPieceFc2Cp( nAttrStart, nAttrEnd );
+Ret:
+ return *this;
+}
+
+//-----------------------------------------
+//-----------------------------------------
+
+WW8PLCFx_SEPX::WW8PLCFx_SEPX( SvStream* pSt, SvStream* pTblSt, WW8Fib& rFib, WW8_CP nStartCp )
+: pStrm( pSt ), WW8PLCFx( rFib.nVersion, TRUE ), nArrMax( 256 ), nSprmSiz( 0 )
+{
+ pPLCF = rFib.lcbPlcfsed
+ ? new WW8PLCF( pTblSt, rFib.fcPlcfsed,
+ rFib.lcbPlcfsed,
+ 12, nStartCp )
+ : 0;
+
+ pSprms = new BYTE[nArrMax]; // maximale Laenge
+}
+
+WW8PLCFx_SEPX::~WW8PLCFx_SEPX()
+{
+ delete pPLCF;
+ delete pSprms;
+}
+
+ULONG WW8PLCFx_SEPX::GetIdx()
+{
+ return pPLCF ? pPLCF->GetIdx() : 0;
+}
+
+void WW8PLCFx_SEPX::SetIdx( ULONG nIdx )
+{
+ if( pPLCF ) pPLCF->SetIdx( nIdx );
+}
+
+BOOL WW8PLCFx_SEPX::SeekPos( WW8_CP nCpPos )
+{
+ return pPLCF ? pPLCF->SeekPos( nCpPos ) : 0;
+}
+
+WW8_CP WW8PLCFx_SEPX::Where()
+{
+ return pPLCF ? pPLCF->Where() : 0;
+}
+
+void WW8PLCFx_SEPX::GetSprms( WW8PLCFxDesc* p )
+{
+ if( !pPLCF ) return;
+
+ void* pData;
+
+ p->bRealLineEnd = FALSE;
+ if (!pPLCF->Get( p->nStartPos, p->nEndPos, pData ))
+ {
+ p->nStartPos = p->nEndPos = LONG_MAX; // PLCF fertig abgearbeitet
+ p->pMemPos = 0;
+ }
+ else
+ {
+// long nPo = SVBT16ToShort( (unsigned char *)pData );
+// nPo <<= 9; // shift als LONG
+
+ long nPo = SVBT32ToLong( (unsigned char *)pData+2 );
+ //long nPo = SVBT16ToShort( (unsigned char *)pData+2 );
+
+ if ( nPo == 0xffffffffL )
+ {
+ p->nStartPos = p->nEndPos = LONG_MAX; // Sepx empty
+ p->pMemPos = 0;
+ }
+ else
+ {
+ pStrm->Seek( nPo );
+ *pStrm >> nSprmSiz; // read len
+
+ if( nSprmSiz > nArrMax )
+ { // passt nicht
+ delete( pSprms );
+ nArrMax = nSprmSiz; // Hole mehr Speicher
+ pSprms = new BYTE[nArrMax];
+ }
+ pStrm->Read( pSprms, nSprmSiz ); // read Sprms
+
+ p->nSprmsLen = nSprmSiz;
+ p->pMemPos = pSprms; // return Position
+ }
+ }
+}
+
+
+WW8PLCFx& WW8PLCFx_SEPX::operator ++( int )
+{
+ if( pPLCF )
+ (*pPLCF)++;
+ return *this;
+}
+
+
+BYTE* WW8PLCFx_SEPX::HasSprm( USHORT nId ) const
+{
+ return pPLCF ? WW8FindSprm( nId, nSprmSiz, pSprms, GetVersion() )
+ : 0;
+}
+
+
+BYTE* WW8PLCFx_SEPX::HasSprm( USHORT nId, BYTE* pOtherSprms,
+ long nOtherSprmSiz ) const
+{
+ return pPLCF ? WW8FindSprm( nId, nOtherSprmSiz, pOtherSprms, GetVersion() )
+ : 0;
+}
+
+
+
+BOOL WW8PLCFx_SEPX::Find4Sprms(USHORT nId1, USHORT nId2, USHORT nId3, USHORT nId4,
+ BYTE*& p1, BYTE*& p2, BYTE*& p3, BYTE*& p4 ) const
+{
+ if( !pPLCF ) return 0;
+
+ BOOL bFound = FALSE;
+ p1 = 0;
+ p2 = 0;
+ p3 = 0;
+ p4 = 0;
+
+ BYTE* pSp = pSprms;
+ short i;
+ BYTE nDelta = ( 8 > GetVersion()) ? 0 : 1;
+ for( i=0; i+1+nDelta < nSprmSiz; )
+ {
+ // Sprm gefunden?
+ USHORT nAktId = WW8GetSprmId( GetVersion(), pSp );
+ BOOL bOk = TRUE;
+ if( nAktId == nId1 )
+ p1 = pSp
+ + 1 + nDelta
+ + WW8SprmDataOfs( nId1 );
+ else
+ if( nAktId == nId2 )
+ p2 = pSp
+ + 1 + nDelta
+ + WW8SprmDataOfs( nId2 );
+ else
+ if( nAktId == nId3 )
+ p3 = pSp
+ + 1 + nDelta
+ + WW8SprmDataOfs( nId3 );
+ else
+ if( nAktId == nId4 )
+ p4 = pSp
+ + 1 + nDelta
+ + WW8SprmDataOfs( nId4 );
+ else
+ bOk = FALSE;
+ bFound |= bOk;
+ // erhoehe Zeiger, so dass er auf naechsten Sprm zeigt
+ short x = WW8GetSprmSizeBrutto( GetVersion(), pSp, &nAktId );
+ i += x;
+ pSp += x;
+ }
+ return bFound;
+}
+
+BYTE* WW8PLCFx_SEPX::HasSprm( USHORT nId, BYTE n2nd ) const
+{
+ if( !pPLCF ) return 0;
+
+ BYTE* pSp = pSprms;
+ short i;
+ BYTE nDelta = ( 8 > GetVersion()) ? 0 : 1;
+
+ for( i=0; i+1+nDelta < nSprmSiz; )
+ {
+ // Sprm gefunden?
+ USHORT nAktId = WW8GetSprmId( GetVersion(), pSp );
+ if( ( nAktId == nId )
+ && ( pSp[ 1 + nDelta ] == n2nd ) )
+ return pSp
+ + 1 + nDelta
+ + WW8SprmDataOfs( nId );
+ // erhoehe Zeiger, so dass er auf naechsten Sprm zeigt
+ short x = WW8GetSprmSizeBrutto( GetVersion(), pSp, &nAktId );
+ i += x;
+ pSp += x;
+ }
+ return 0; // Sprm nicht gefunden
+}
+
+//-----------------------------------------
+//-----------------------------------------
+
+WW8PLCFx_SubDoc::WW8PLCFx_SubDoc( SvStream* pSt, BYTE nVersion,
+ WW8_CP nStartCp,
+ long nFcRef, long nLenRef,
+ long nFcTxt, long nLenTxt,
+ long nStruct )
+ : WW8PLCFx( nVersion, FALSE ), pRef( 0 ), pTxt( 0 )
+{
+ if( nLenRef && nLenTxt )
+ {
+ pRef = new WW8PLCF( pSt, nFcRef, nLenRef, nStruct, nStartCp );
+ pTxt = new WW8PLCF( pSt, nFcTxt, nLenTxt, 0, nStartCp );
+ }
+}
+
+WW8PLCFx_SubDoc::~WW8PLCFx_SubDoc()
+{
+ delete pRef;
+ delete pTxt;
+}
+
+ULONG WW8PLCFx_SubDoc::GetIdx()
+{
+ if( pRef )
+ return ( pRef->GetIdx() << 16
+ | pTxt->GetIdx() ); // Wahrscheinlich pTxt... nicht noetig
+ return 0;
+}
+
+void WW8PLCFx_SubDoc::SetIdx( ULONG nIdx )
+{
+ if( pRef )
+ {
+ pRef->SetIdx( nIdx >> 16 );
+ pTxt->SetIdx( nIdx & 0xffff ); // Wahrscheinlich pTxt... nicht noetig
+ }
+}
+
+BOOL WW8PLCFx_SubDoc::SeekPos( WW8_CP nCpPos )
+{
+ return ( pRef ) ? pRef->SeekPos( nCpPos ) : FALSE;
+}
+
+WW8_CP WW8PLCFx_SubDoc::Where()
+{
+ return ( pRef ) ? pRef->Where() : LONG_MAX;
+}
+
+long WW8PLCFx_SubDoc::GetNoSprms( WW8_CP& rStart, long& rEnd, long& rLen )
+{
+ void* pData;
+ long nSt, nE;
+ rEnd = LONG_MAX;
+
+ if ( !pRef )
+ {
+ rStart = LONG_MAX; // Es gibt keine Noten
+ rLen = 0;
+ return -1;
+ }
+
+ ULONG nNr = pRef->GetIdx();
+
+ if (!pRef->Get( rStart, nE, pData ))
+ {
+ rStart = LONG_MAX; // PLCF fertig abgearbeitet
+ rLen = 0;
+ return -1;
+ }
+ pTxt->SetIdx( nNr );
+
+ if(!pTxt->Get( nSt, rLen, pData ))
+ {
+ rStart = LONG_MAX; // PLCF fertig abgearbeitet
+ rLen = 0;
+ return -1;
+ }
+
+ rLen -= nSt;
+ return nSt;
+}
+
+WW8PLCFx& WW8PLCFx_SubDoc::operator ++( int )
+{
+ if( pRef && pTxt )
+ {
+ (*pRef)++;
+ (*pTxt)++;
+ }
+ return *this;
+}
+
+
+//-----------------------------------------
+// Felder
+//-----------------------------------------
+
+WW8PLCFx_FLD::WW8PLCFx_FLD( SvStream* pSt, WW8Fib& rMyFib,
+ short nType, WW8_CP nStartCp )
+ : WW8PLCFx( rMyFib.nVersion, FALSE ), rFib( rMyFib ), pPLCF( 0 )
+{
+
+ long nFc, nLen;
+
+ switch( nType )
+ {
+ case MAN_HDFT: nFc = rFib.fcPlcffldHdr;
+ nLen = rFib.lcbPlcffldHdr;
+ break;
+ case MAN_FTN: nFc = rFib.fcPlcffldFtn;
+ nLen = rFib.lcbPlcffldFtn;
+ break;
+ case MAN_EDN: nFc = rFib.fcPlcffldEdn;
+ nLen = rFib.lcbPlcffldEdn;
+ break;
+ case MAN_AND: nFc = rFib.fcPlcffldAtn;
+ nLen = rFib.lcbPlcffldAtn;
+ break;
+ case MAN_TXBX: nFc = rFib.fcPlcffldTxbx;
+ nLen = rFib.lcbPlcffldTxbx;
+ break;
+ case MAN_TXBX_HDFT:
+ nFc = rFib.fcPlcffldHdrTxbx;
+ nLen = rFib.lcbPlcffldHdrTxbx;
+ break;
+ default: nFc = rFib.fcPlcffldMom;
+ nLen = rFib.lcbPlcffldMom;
+ break;
+ }
+
+ if( nLen )
+ pPLCF = new WW8PLCFspecial( pSt, nFc, nLen, 2 );
+}
+
+WW8PLCFx_FLD::~WW8PLCFx_FLD()
+{
+ delete pPLCF;
+}
+
+ULONG WW8PLCFx_FLD::GetIdx()
+{
+ return ( pPLCF ) ? pPLCF->GetIdx() : 0;
+}
+
+void WW8PLCFx_FLD::SetIdx( ULONG nIdx )
+{
+ if( pPLCF )
+ pPLCF->SetIdx( nIdx );
+}
+
+BOOL WW8PLCFx_FLD::SeekPos( WW8_CP nCpPos )
+{
+ return ( pPLCF ) ? pPLCF->SeekPosExact( nCpPos ) : FALSE;
+}
+
+WW8_CP WW8PLCFx_FLD::Where()
+{
+ return ( pPLCF ) ? pPLCF->Where() : LONG_MAX;
+}
+
+long WW8PLCFx_FLD::GetNoSprms( WW8_CP& rStart, long& rEnd, long& rLen )
+{
+ void* pData;
+ ULONG nIdx;
+
+ rLen = 0;
+ rEnd = LONG_MAX; // Es gibt keine Ende
+
+ if ( !pPLCF ){
+ rStart = LONG_MAX; // Es gibt keine Felder
+ return -1;
+ }
+
+ if (!pPLCF->Get( rStart, pData )){
+ rStart = LONG_MAX; // PLCF fertig abgearbeitet
+ return -1;
+ }
+
+ nIdx = pPLCF->GetIdx();
+
+ return (long)nIdx;
+}
+
+WW8PLCFx& WW8PLCFx_FLD::operator ++( int )
+{
+ WW8SkipField( *pPLCF ); // gehe zum naechsten Feld
+ return *this;
+}
+
+BOOL WW8PLCFx_FLD::GetPara( long nIdx, WW8FieldDesc& rF )
+{
+ ASSERT( pPLCF, "Aufruf ohne Feld PLCFspecial" );
+ if( !pPLCF )
+ return FALSE;
+
+ ULONG n = pPLCF->GetIdx();
+ pPLCF->SetIdx( (ULONG)nIdx );
+
+ BOOL bOk = WW8GetFieldPara( rFib.nVersion, *pPLCF, rF );
+ pPLCF->SetIdx( n );
+ return bOk;
+}
+
+//-----------------------------------------
+// class WW8PLCF_Book
+//-----------------------------------------
+
+
+// MyMemCpy kopiert immer aufwaerts, d.h. pDest < pSource geht.
+/*inline*/ static void MyMemcpy( char* pDest, char* pSource, size_t nCount )
+{
+ register char* pEnd = pSource + nCount;
+ while( pSource < pEnd )
+ *pDest++ = *pSource++;
+}
+
+
+// ConvertPStrings() konvertiert ein offenes Array von Pascal-Strings
+// in C-Strings. Dieses geschieht am Platz. memcpy wird nicht benutzt,
+// da es nach MSC-Hilfe nicht mit ueberlappenden Bereichen umgehen kann,
+// memmove kann das, ist aber nicht nach ANSI - Standard.
+static void ConvertPStrings( WW8_PSTR** pPS, long nCount )
+{
+ register WW8_PSTR* pP;
+ register long i;
+ for( i=0; i<nCount; i++)
+ {
+ pP = pPS[i];
+ BYTE nLen = pP->nLen;
+ MyMemcpy( (char*)pP, (char*)pP->cStr, nLen );
+ pP->cStr[nLen-1] = 0;
+ }
+}
+
+
+char** WW8ReadSTTBF(BOOL bVer8, SvStream& rStrm, UINT32 nStart, INT32 nLen,
+ long& rCount, USHORT nSkip,BYTE ***pData)
+{
+ ULONG nOldPos = rStrm.Tell();
+ UINT16 nData = nLen - 2;
+
+ rCount = 0;
+
+ WW8_PSTR** pNameA;
+ UINT16 nLen2;
+
+ rStrm.Seek( nStart );
+ rStrm >> nLen2; // bVer67: total length of structure
+ // bVer8 : count of strings
+
+ if( bVer8 )
+ {
+ UINT16 nStrings;
+ BOOL bUnicode = (0xFFFF == nLen2);
+ if( bUnicode )
+ rStrm >> nStrings;
+ else
+ nStrings = nLen2;
+
+ UINT16 nExtra = 0;
+ rCount = nStrings;
+ rStrm >> nExtra;
+
+ pNameA = new WW8_PSTR*[ nStrings ]; // alloziere Index-Array
+ if (pData)
+ *pData = new BYTE*[ nStrings ];
+
+ for(USHORT i=0; i < nStrings; i++)
+ {
+ BYTE nBChar;
+ UINT16 nStrLen;
+ if( bUnicode )
+ rStrm >> nStrLen;
+ else
+ {
+ rStrm >> nBChar;
+ nStrLen = nBChar;
+ }
+
+ UniString aTmp;
+ aTmp.AllocStrBuf( nStrLen );
+
+ sal_Unicode* pWStr = aTmp.GetCharStr();
+
+ UINT16 nWChar;
+ for( BYTE nIdx = 0; nIdx < nStrLen; ++nIdx, ++pWStr )
+ {
+ if( bUnicode )
+ {
+ rStrm >> nWChar;
+ if( 0xF000 == (nWChar & 0xFF00))
+ nWChar &= 0x00FF;
+ *pWStr = nWChar;
+ }
+ else
+ {
+ rStrm >> nBChar;
+ *pWStr = nBChar;
+ }
+ }
+
+ // Skip the extra data
+ if( nExtra )
+ {
+ if (pData)
+ {
+ (*pData)[i] = new BYTE[ nExtra ];
+ for( BYTE nIdx2 = 0; nIdx2 < nExtra; ++nIdx2 )
+ rStrm >> (*pData)[i][nIdx2];
+
+ }
+ else
+ rStrm.SeekRel( nExtra );
+ }
+
+ String sConvert( aTmp, CHARSET_ANSI );
+
+ USHORT nActLen = sConvert.Len();
+ UINT8* pStr = new UINT8[ nActLen+1 ];
+
+ MyMemcpy( (char*)pStr, (char*)sConvert.GetStr(), nActLen );
+ pStr[ nActLen ] = 0;
+
+ pNameA[ i ] = (WW8_PSTR*)pStr;
+ }
+ }
+ else
+ {
+ WW8_PSTR* pA = (WW8_PSTR*)new char[ nData ];
+ // Alloziere Name-Array
+ rStrm.Read( pA, nData ); // lies alle Namen
+
+ long nLeft = nData; // Zaehle, wieviele Namen
+
+ WW8_PSTR* p = pA;
+
+ while( 1 )
+ {
+ short nNextSiz;
+
+ nNextSiz = p->nLen + 1;
+ if( nNextSiz > nLeft )
+ break;
+ rCount++;
+ nLeft -= nNextSiz;
+ if( nLeft < 1 ) // naechste Laenge muss gelesen werden koennen
+ break;
+ p = (WW8_PSTR*)( ( (char*)p ) + nNextSiz + nSkip );
+ }
+
+ if( rCount ) // Keine Eintraege -> kein Array
+ {
+ pNameA = new WW8_PSTR*[ rCount ]; // alloziere Index-Array
+
+ pNameA[0] = pA; // fuelle Index-Array
+
+ short i;
+ for( i=1, p=pA; i < rCount; i++)
+ {
+ p = (WW8_PSTR*)( ( (char*)p ) + p->nLen + 1 + nSkip );
+ pNameA[i] = p;
+ }
+ ConvertPStrings( pNameA, rCount );
+ }
+ else
+ {
+ pNameA = 0;
+ delete pA;
+ }
+ }
+ rStrm.Seek( nOldPos );
+ return (char**)pNameA;
+}
+
+
+WW8PLCFx_Book::WW8PLCFx_Book( SvStream* pSt, SvStream* pTblSt, WW8Fib& rFib, WW8_CP nStartCp )
+: WW8PLCFx( rFib.nVersion, FALSE ), nIsEnd( 0 ), pStatus( 0 )
+{
+ if( !rFib.fcPlcfbkf || !rFib.lcbPlcfbkf
+ || !rFib.fcPlcfbkl || !rFib.lcbPlcfbkl
+ || !rFib.fcSttbfbkmk || !rFib.lcbSttbfbkmk )
+ {
+ pBook[0] = pBook[1] = 0;
+ pBookNames = 0;
+ nIMax = 0;
+ return;
+ }
+ pBook[0] = new WW8PLCFspecial( pTblSt, rFib.fcPlcfbkf,
+ rFib.lcbPlcfbkf, 4 );
+
+ pBook[1] = new WW8PLCFspecial( pTblSt, rFib.fcPlcfbkl,
+ rFib.lcbPlcfbkl, 0, -1, TRUE );
+
+ pBookNames = WW8ReadSTTBF( (7 < rFib.nVersion),
+ *pTblSt,
+ rFib.fcSttbfbkmk,
+ rFib.lcbSttbfbkmk,
+ nIMax );
+
+ if( pBook[0]->GetIMax() < nIMax ) // Anzahl der Bookmarks
+ nIMax = pBook[0]->GetIMax();
+ if( pBook[1]->GetIMax() < nIMax )
+ nIMax = pBook[1]->GetIMax();
+ pStatus = new eBookStatus[ nIMax ];
+ memset( pStatus, 0, nIMax * sizeof( eBookStatus ) );
+}
+
+WW8PLCFx_Book::~WW8PLCFx_Book()
+{
+ delete[] ( pStatus );
+ if( pBookNames )
+ {
+ for( USHORT i=0, nEnd = (8 > GetVersion()) ? 1 : nIMax; i<nEnd; ++i )
+ delete( pBookNames[ i ] );
+ delete[]( pBookNames );
+ }
+ delete( pBook[1] );
+ delete( pBook[0] );
+}
+
+ULONG WW8PLCFx_Book::GetIdx()
+{
+ return ( pBookNames ) ? pBook[0]->GetIdx() : 0;
+}
+
+void WW8PLCFx_Book::SetIdx( ULONG nI )
+{
+ if( pBookNames )
+ pBook[0]->SetIdx( nI );
+}
+
+ULONG WW8PLCFx_Book::GetIdx2()
+{
+ return ( pBookNames )
+ ? ( pBook[1]->GetIdx() | ( ( nIsEnd ) ? 0x80000000 : 0 ) )
+ : 0;
+}
+
+void WW8PLCFx_Book::SetIdx2( ULONG nI )
+{
+ if( pBookNames ){
+ pBook[1]->SetIdx( nI & 0x7fffffff );
+ nIsEnd = (USHORT)( ( nI >> 31 ) & 1 ); // 0 oder 1
+ }
+}
+
+BOOL WW8PLCFx_Book::SeekPos( WW8_CP nCpPos )
+{
+ if( !pBook[0] )
+ return FALSE;
+ BOOL bOk = pBook[0]->SeekPosExact( nCpPos );
+ bOk &= pBook[1]->SeekPosExact( nCpPos );
+ nIsEnd = 0;
+
+ return bOk;
+}
+
+WW8_CP WW8PLCFx_Book::Where()
+{
+ return pBook[nIsEnd]->Where();
+}
+
+long WW8PLCFx_Book::GetNoSprms( long& rStart, long& rEnd, long& rLen )
+{
+ void* pData;
+ rEnd = LONG_MAX;
+ rLen = 0;
+
+ if ( !pBook[0] || !pBook[1] || !pBookNames
+ || (long)(pBook[nIsEnd]->GetIdx()) >= nIMax ){
+ rStart = rEnd = LONG_MAX;
+ return -1;
+ }
+
+ pBook[nIsEnd]->Get( rStart, pData ); // Pos. abfragen
+
+ return pBook[nIsEnd]->GetIdx();
+}
+
+// Der Operator ++ hat eine Tuecke: Wenn 2 Bookmarks aneinandergrenzen, dann
+// sollte erst das Ende des ersten und dann der Anfang des 2. erreicht werden.
+// Liegen jedoch 2 Bookmarks der Laenge 0 aufeinander, *muss* von jedem Bookmark
+// erst der Anfang und dann das Ende gefunden werden.
+// Der Fall: ][
+// [...]
+// ][
+// ist noch nicht geloest, dabei muesste ich in den Anfangs- und Endindices
+// vor- und zurueckspringen, wobei ein weiterer Index oder ein Bitfeld
+// oder etwas aehnliches zum Merken der bereits abgearbeiteten Bookmarks
+// noetig wird.
+WW8PLCFx& WW8PLCFx_Book::operator ++( int )
+{
+ if( pBook[0] && pBook[1] && pBookNames ){
+ (*pBook[nIsEnd])++;
+
+ register ULONG l0 = pBook[0]->Where();
+ register ULONG l1 = pBook[1]->Where();
+ if( l0 < l1 )
+ nIsEnd = 0;
+ else if( l1 < l0 )
+ nIsEnd = 1;
+ else
+ nIsEnd = ( nIsEnd ) ? 0 : 1;
+
+// nIsEnd = ( pBook[1]->Where() <= pBook[0]->Where() ) ? 1 : 0;
+ }
+ return *this;
+}
+
+long WW8PLCFx_Book::GetLen() const
+{
+ if( nIsEnd ){
+ ASSERT( ASS_FALSE, "Falscher Aufruf (1) von PLCF_Book::GetLen()" );
+ return 0;
+ }
+ void * p;
+ WW8_CP nStartPos;
+ if( !pBook[0]->Get( nStartPos, p ) ){
+ ASSERT( ASS_FALSE, "Falscher Aufruf (2) von PLCF_Book::GetLen()" );
+ return 0;
+ }
+ USHORT nEndIdx = SVBT16ToShort( *((SVBT16*)p) );
+// USHORT nEndIdx = *(USHORT*)p;
+ return pBook[1]->GetPos( nEndIdx ) - nStartPos;
+}
+
+// IgnoreBook ist dafuer da, bei Feldern mit implizitem WW-Bookmark
+// die Bookmarks zwischen Anfang und Ende des Feldes zu ignorieren,
+// die den angegebenen Namen tragen.
+BOOL WW8PLCFx_Book::SetStatus( WW8_CP nStartRegion, WW8_CP nEndRegion, char* pName,
+ eBookStatus eStat )
+{
+ ASSERT( nStartRegion < LONG_MAX && nEndRegion < LONG_MAX,
+ "IgnoreBook mit falschen Parametern" );
+
+ if( !pBook[0] || !pBook[1] )
+ return FALSE;
+
+ BOOL bFound = FALSE;
+ long i = 0;
+ WW8_CP nStartAkt, nEndAkt;
+ do{
+ void* p;
+ USHORT nEndIdx;
+
+ if( pBook[0]->GetData( i, nStartAkt, p ) && p ){
+ nEndIdx = SVBT16ToShort( *((SVBT16*)p) );
+// nEndIdx = *((USHORT*)p);
+ }
+ else
+ {
+ ASSERT( ASS_FALSE, "Bookmark-EndIdx nicht lesbar" );
+ nEndIdx = (USHORT)i;
+ }
+ nEndAkt = pBook[1]->GetPos( nEndIdx );
+ if( nStartAkt >= nStartRegion && nEndAkt <= nEndRegion )
+#if defined( UNX) || defined( MAC)
+ if ( 0 == svstricmp( pName, pBookNames[i] ) ){
+#else
+ if ( 0 == stricmp( pName, pBookNames[i] ) ){
+#endif
+ pStatus[nEndIdx] = (eBookStatus)( pStatus[nEndIdx] | eStat );
+ bFound = TRUE;
+ }
+ i++;
+ }while( nStartAkt <= nEndRegion && i < pBook[0]->GetIMax() );
+ return bFound;
+}
+
+eBookStatus WW8PLCFx_Book::GetStatus() const
+{
+ if( !pStatus )
+ return BOOK_NORMAL;
+ long nEndIdx = GetHandle();
+ return ( nEndIdx < nIMax ) ? pStatus[nEndIdx] : BOOK_NORMAL;
+}
+
+long WW8PLCFx_Book::GetHandle() const
+{
+ if( !pBook[0] || !pBook[1] )
+ return LONG_MAX;
+
+ if( nIsEnd ){
+ return pBook[1]->GetIdx();
+ }else{
+// BOOL Get( long& rStart, void*& rpValue );
+ const void* p = pBook[0]->GetData( pBook[0]->GetIdx() );
+ if( p )
+ {
+ return SVBT16ToShort( *((SVBT16*)p) );
+// return *((USHORT*)p);
+ }
+ else
+ return LONG_MAX;
+ }
+}
+
+//-----------------------------------------
+// WW8PLCFMan
+//-----------------------------------------
+
+#ifndef DUMP
+
+// Am Ende eines Absatzes reichen bei WW6 die Attribute bis hinter das <CR>.
+// Das wird fuer die Verwendung mit dem SW um 1 Zeichen zurueckgesetzt, wenn
+// dadurch kein AErger zu erwarten ist.
+void WW8PLCFMan::AdjustEnds( WW8PLCFxDesc& rDesc )
+{
+ if ( (&rDesc == pPap) && rDesc.bRealLineEnd )
+ {
+ if ( pPap->nEndPos != LONG_MAX ) // Para adjust
+ {
+ nLineEnd = pPap->nEndPos; // nLineEnd zeigt *hinter* das <CR>
+ pPap->nEndPos--; // Absatzende um 1 Zeichen verkuerzen
+
+ if( pChp->nEndPos == nLineEnd ) // gibt es bereits ein CharAttr-Ende,
+ // das auf das jetzige Absatzende zeigt ?
+ pChp->nEndPos--; // ... dann auch um 1 Zeichen verkuerzen
+
+ if( pSep->nEndPos == nLineEnd ) // gibt es bereits ein Sep-Ende,
+ // das auf das jetzige Absatzende zeigt ?
+ pSep->nEndPos--; // ... dann auch um 1 Zeichen verkuerzen
+ }
+ }
+ else
+ if( (&rDesc == pChp)
+ || (&rDesc == pSep) )
+ { // Char Adjust oder Sep Adjust
+ if( (rDesc.nEndPos == nLineEnd) // Wenn Ende Char-Attr == Absatzende ...
+ && (rDesc.nEndPos > rDesc.nStartPos) )
+ rDesc.nEndPos--; // ... dann um 1 Zeichen verkuerzen
+ }
+
+ if( rDesc.nStartPos > rDesc.nEndPos ){ // allgemeiner Plausibilitaetstest
+
+ //if( gfhdf
+
+ ASSERT( ASS_FALSE, "+Anfang und Ende des WW86-Attributes stehen ueber Kreuz" );
+ rDesc.nEndPos = rDesc.nStartPos;
+ }
+}
+
+void WW8PLCFMan::GetNewSprms( WW8PLCFxDesc& rDesc )
+{
+ rDesc.pPLCFx->GetSprms( &rDesc );
+
+ //if( rDesc.nStartPos <= rDesc.nEndPos
+
+ ASSERT((LONG_MAX == rDesc.nStartPos) || (rDesc.nStartPos <= rDesc.nEndPos),
+ "Attr-Anfang und -Ende ueber Kreuz" );
+
+ if( rDesc.nStartPos != LONG_MAX ) rDesc.nStartPos -= rDesc.nCpOfs;
+ if( rDesc.nEndPos != LONG_MAX ) rDesc.nEndPos -= rDesc.nCpOfs;
+
+ rDesc.bFirstSprm = TRUE;
+
+ AdjustEnds( rDesc );
+}
+
+void WW8PLCFMan::GetNewNoSprms( WW8PLCFxDesc& rDesc )
+{
+ rDesc.nCp2OrIdx =
+ rDesc.pPLCFx->GetNoSprms(rDesc.nStartPos, rDesc.nEndPos,
+ rDesc.nSprmsLen);
+
+ ASSERT((LONG_MAX == rDesc.nStartPos) || (rDesc.nStartPos <= rDesc.nEndPos),
+ "Attr-Anfang und -Ende ueber Kreuz" );
+
+ if( rDesc.nStartPos != LONG_MAX ) rDesc.nStartPos -= rDesc.nCpOfs;
+ if( rDesc.nEndPos != LONG_MAX ) rDesc.nEndPos -= rDesc.nCpOfs;
+ rDesc.bFirstSprm = TRUE;
+}
+
+static USHORT GetId( BYTE nVersion, WW8PLCFxDesc* p, short nIdx )
+{
+ USHORT nId;
+
+ if( p->nSprmsLen > 0 )
+ // alt: nId = *p->pMemPos;
+ nId = WW8GetSprmId( nVersion, p->pMemPos );
+ else
+ nId = 0; // Id = 0 fuer leeres Attribut
+ return nId;
+}
+
+WW8PLCFMan::WW8PLCFMan( WW8ScannerBase* pBase, short nType, long nStartCp )
+{
+ pWwFib = pBase->pWw8Fib;
+
+ memset( aD, 0, sizeof( aD ) );
+ nLineEnd = LONG_MAX;
+ nManType = nType;
+ long nCpO;
+ USHORT i;
+
+ if( MAN_MAINTEXT == nType )
+ {
+ // Suchreihenfolge der Attribute
+ nPLCF = MAN_ANZ_PLCF;
+ pFld = &aD[0];
+ pBkm = &aD[1];
+ pEdn = &aD[2];
+ pFtn = &aD[3];
+ pAnd = &aD[4];
+ pChp = &aD[5];
+ pPap = &aD[6];
+ pSep = &aD[7];
+ pPcd = ( pBase->pPLCFx_PCD ) ? &aD[8] : 0;
+ pPcdA = ( pBase->pPLCFx_PCDAttrs ) ? &aD[9] : 0;
+ pSep->pPLCFx = pBase->pSepPLCF;
+ pFtn->pPLCFx = pBase->pFtnPLCF;
+ pEdn->pPLCFx = pBase->pEdnPLCF;
+ pBkm->pPLCFx = pBase->pBook;
+ pAnd->pPLCFx = pBase->pAndPLCF;
+ }
+ else
+ {
+ // Suchreihenfolge der Attribute
+ nPLCF = 7;
+ pFld = &aD[0];
+ pBkm = ( pBase->pBook ) ? &aD[1] : 0;
+ pChp = &aD[2];
+ pPap = &aD[3];
+ pSep = &aD[4]; // Dummy
+ pPcd = ( pBase->pPLCFx_PCD ) ? &aD[5] : 0;
+ pPcdA= ( pBase->pPLCFx_PCDAttrs ) ? &aD[6] : 0;
+ pAnd = pFtn = pEdn = 0; // unbenutzt bei SpezText
+ }
+
+ pChp->pPLCFx = pBase->pChpPLCF;
+ pPap->pPLCFx = pBase->pPapPLCF;
+ if( pPcd )
+ pPcd->pPLCFx = pBase->pPLCFx_PCD;
+ if( pPcdA )
+ pPcdA->pPLCFx= pBase->pPLCFx_PCDAttrs;
+ if( pBkm )
+ pBkm->pPLCFx = pBase->pBook;
+
+ switch( nType ) // Feld-Initialisierung
+ {
+ case MAN_HDFT: pFld->pPLCFx = pBase->pFldHdFtPLCF;
+ nCpO = pWwFib->ccpText + pWwFib->ccpFtn;
+ pFdoa = pBase->pHdFtFdoa;
+ pTxbx = pBase->pHdFtTxbx;
+ pTxbxBkd = pBase->pHdFtTxbxBkd;
+ break;
+ case MAN_FTN: pFld->pPLCFx = pBase->pFldFtnPLCF;
+ nCpO = pWwFib->ccpText;
+ pFdoa = pTxbx = pTxbxBkd = 0;
+ break;
+ case MAN_EDN: pFld->pPLCFx = pBase->pFldEdnPLCF;
+ nCpO = pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr + pWwFib->ccpAtn;
+ pFdoa = pTxbx = pTxbxBkd = 0;
+ break;
+ case MAN_AND: pFld->pPLCFx = pBase->pFldAndPLCF;
+ nCpO = pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr;
+ pFdoa = pTxbx = pTxbxBkd = 0;
+ break;
+
+
+ case MAN_TXBX: pFld->pPLCFx = pBase->pFldTxbxPLCF;
+ nCpO = pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr + pWwFib->ccpMcr
+ + pWwFib->ccpAtn + pWwFib->ccpEdn;
+ pTxbx = pBase->pMainTxbx;
+ pTxbxBkd = pBase->pMainTxbxBkd;
+ pFdoa = 0;
+ break;
+ case MAN_TXBX_HDFT:
+ pFld->pPLCFx = pBase->pFldTxbxHdFtPLCF;
+ nCpO = pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr + pWwFib->ccpMcr
+ + pWwFib->ccpAtn + pWwFib->ccpEdn
+ + pWwFib->ccpTxbx;
+ pTxbx = pBase->pHdFtTxbx;
+ pTxbxBkd = pBase->pHdFtTxbxBkd;
+ pFdoa = 0;
+ break;
+
+
+ default: pFld->pPLCFx = pBase->pFldPLCF;
+ nCpO = 0;
+ pFdoa = pBase->pMainFdoa;
+ pTxbx = pBase->pMainTxbx;
+ pTxbxBkd = pBase->pMainTxbxBkd;
+ break;
+ }
+
+ if( nStartCp || nCpO ) // PLCFe auf Text-StartPos einstellen
+ {
+ pChp->pPLCFx->SeekPos( nStartCp + nCpO ); // Attribute neu
+ pPap->pPLCFx->SeekPos( nStartCp + nCpO ); // aufsetzen
+ pFld->pPLCFx->SeekPos( nStartCp );
+ if( pPcd )
+ pPcd->pPLCFx->SeekPos( nStartCp + nCpO );
+ if( pBkm )
+ pBkm->pPLCFx->SeekPos( nStartCp + nCpO );
+ }
+
+ // initialisieren der Member-Vars Low-Level
+ GetChpPLCF()->ResetAttrStartEnd();
+ GetPapPLCF()->ResetAttrStartEnd();
+ for( i=0; i<nPLCF; i++)
+ {
+ register WW8PLCFxDesc* p = &aD[i];
+
+ p->nCpOfs = ( p == pChp || p == pPap || p == pBkm ) ? nCpO : 0;
+ p->nCp2OrIdx = 0;
+ p->bFirstSprm = FALSE;
+ p->pIdStk = 0;
+ p->nStartPos = p->nEndPos = LONG_MAX;
+ }
+
+ // initialisieren der Member-Vars High-Level
+ for( i=0; i<nPLCF; i++){
+ register WW8PLCFxDesc* p = &aD[i];
+
+ if( !p->pPLCFx )
+ continue;
+
+ if( p->pPLCFx->IsSprm() )
+ {
+ p->pIdStk = new UShortStk; // Vorsicht: nEndPos muss bereits
+ GetNewSprms( *p ); // bei allen PLCFen initialisiert sein
+ }
+ else
+ {
+ if( p->pPLCFx )
+ GetNewNoSprms( *p );
+ }
+ }
+}
+
+WW8PLCFMan::~WW8PLCFMan()
+{
+ for( USHORT i=0; i<nPLCF; i++)
+ delete aD[i].pIdStk;
+}
+
+// 0. welche Attr.-Klasse,
+// 1. ob ein Attr.-Start ist,
+// 2. CP, wo ist naechste Attr.-Aenderung
+short WW8PLCFMan::WhereIdx( BOOL* pbStart, long* pPos )
+{
+ long next = LONG_MAX; // SuchReihenfolge:
+ short nextIdx = -1; // erst Enden finden ( CHP, PAP, ( SEP ) ),
+ BOOL bStart = TRUE; // dann Anfaenge finden ( ( SEP ), PAP, CHP )
+ short i;
+ register WW8PLCFxDesc* pD;
+ for( i=0; i<(short)nPLCF; i++)
+ {
+ pD = &aD[i];
+ if( ( pD->nEndPos < next )
+ && ( pD->nStartPos == LONG_MAX ) )
+ { // sonst ist Anfang = Ende
+ next = pD->nEndPos;
+ nextIdx = i;
+ bStart = FALSE;
+ }
+ }
+ for( i=(short)nPLCF-1; i>=0; i--)
+ {
+ pD = &aD[i];
+ if( pD->nStartPos < next ){
+ next = pD->nStartPos;
+ nextIdx = i;
+ bStart = TRUE;
+ }
+ }
+ if( pPos )
+ *pPos = next;
+ if( pbStart )
+ *pbStart = bStart;
+ return nextIdx;
+}
+
+WW8_CP WW8PLCFMan::Where() // gibt die CP-Pos der naechsten Attribut-Aenderung zurueck
+{
+ long l;
+ WhereIdx( 0, &l );
+ return l;
+}
+
+void WW8PLCFMan::Save1PLCFx( WW8PLCFxDesc* p, WW8PLCFxSave1* pSave ) const
+{
+ if( !p->pPLCFx )
+ return;
+ pSave->nPLCFxPos = p->pPLCFx->GetIdx();
+ pSave->nPLCFxPos2 = p->pPLCFx->GetIdx2();
+ if( p->pPLCFx->IsSprm() )
+ {
+ WW8PLCFxDesc aD;
+ p->pPLCFx->GetSprms( &aD );
+ pSave->nPLCFxMemOfs = p->pMemPos - aD.pMemPos;
+ }
+}
+
+void WW8PLCFMan::Restore1PLCFx( WW8PLCFxDesc* p, WW8PLCFxSave1* pSave )
+{
+ if( !p->pPLCFx )
+ return;
+ p->pPLCFx->SetIdx( pSave->nPLCFxPos ); // restore PLCF-Pos
+ p->pPLCFx->SetIdx2( pSave->nPLCFxPos2 );
+
+ if( p->pPLCFx->IsSprm() ){
+ WW8PLCFxDesc aD;
+ p->pPLCFx->GetSprms( &aD );
+ p->pMemPos = aD.pMemPos + pSave->nPLCFxMemOfs;
+ }
+}
+
+void WW8PLCFMan::SaveAllPLCFx( WW8PLCFxSaveAll* pSave )
+{
+ for(USHORT i=0; i<nPLCF; i++)
+ Save1PLCFx( &aD[i], &pSave->aS[i] );
+}
+
+void WW8PLCFMan::RestoreAllPLCFx( WW8PLCFxSaveAll* pSave )
+{
+ for(USHORT i=0; i<nPLCF; i++)
+ Restore1PLCFx( &aD[i], &pSave->aS[i] );
+}
+
+void WW8PLCFMan::GetSprmStart( short nIdx, WW8PLCFManResult* pRes )
+{
+
+ // Pruefen !!!
+
+ pRes->nMemLen = 0;
+
+ register WW8PLCFxDesc* p = &aD[nIdx];
+
+ if( p->bFirstSprm ){ // erster Sprm einer Gruppe
+ if( p == pPap ) // Anfang neuer Pap ?
+ pRes->nFlags |= MAN_MASK_NEW_PAP; // dann muss Aufrufer auf neuen
+ // Style testen
+ else if( p == pSep ) // Anfang neuer Sep ?
+ pRes->nFlags |= MAN_MASK_NEW_SEP; // dann muss Aufrufer eine neue
+ // Section / Pagedesc erzeugen
+ }
+ pRes->pMemPos = p->pMemPos;
+ pRes->nSprmId = GetId( pWwFib->nVersion, p, nIdx );
+ if( p->nSprmsLen )
+ pRes->nMemLen = WW8GetSprmSizeBrutto( pWwFib->nVersion,
+ pRes->pMemPos,
+ &pRes->nSprmId ); // Laenge des akt. Sprm
+}
+
+void WW8PLCFMan::GetSprmEnd( short nIdx, WW8PLCFManResult* pRes )
+{
+
+ // Pruefen !!!
+
+ register WW8PLCFxDesc* p = &aD[nIdx];
+
+ if( p->pIdStk->Count() )
+ pRes->nSprmId = p->pIdStk->Top(); // hole Ende-Position
+ else
+ {
+ ASSERT( ASS_FALSE, "Keine Id auf dem Stack" );
+ pRes->nSprmId = 0;
+ }
+}
+
+void WW8PLCFMan::GetNoSprmStart( short nIdx, WW8PLCFManResult* pRes )
+{
+
+ // Pruefen !!!
+
+ register WW8PLCFxDesc* p = &aD[nIdx];
+// long nEnd;
+
+// p->nCp2OrIdx = p->pPLCFx->GetNoSprms( pRes->nCpPos, nEnd, pRes->nMemLen );
+// p->nCp2OrIdx = p->pPLCFx->GetNoSprms( p->nStartPos, p->nEndPos,
+// p->nSprmsLen );
+// GetNoSprms( nIdx );
+ pRes->nCpPos = p->nStartPos;
+ pRes->nMemLen = p->nSprmsLen;
+ pRes->nCp2OrIdx = p->nCp2OrIdx;
+
+ if( p == pFld )
+ pRes->nSprmId = 258;
+ else if( p == pFtn )
+ pRes->nSprmId = 256;
+ else if( p == pEdn )
+ pRes->nSprmId = 257;
+ else if( p == pBkm )
+ pRes->nSprmId = 259;
+ else if( p == pPcd )
+ pRes->nSprmId = 260;
+ else if( p == pAnd )
+ pRes->nSprmId = 261;
+ else
+ pRes->nSprmId = 0; // default: nicht gefunden
+}
+
+void WW8PLCFMan::GetNoSprmEnd( short nIdx, WW8PLCFManResult* pRes )
+{
+
+ // Pruefen !!!
+
+ if( &aD[nIdx] == pBkm )
+ pRes->nSprmId = 259;
+ else if( &aD[nIdx] == pPcd )
+ pRes->nSprmId = 260;
+ else
+ pRes->nSprmId = 0;
+
+ pRes->nMemLen = -1; // Ende-Kennzeichen
+}
+
+
+//
+void WW8PLCFMan::AdvSprm( short nIdx, BOOL bStart )
+{
+ register WW8PLCFxDesc* p = &aD[nIdx]; // Sprm-Klasse(!) ermitteln
+
+ p->bFirstSprm = FALSE;
+ if( bStart )
+ {
+ USHORT nLastId = GetId( pWwFib->nVersion, p, nIdx );
+ p->pIdStk->Push( nLastId ); // merke Id fuer Attribut-Ende
+
+ if( p->nSprmsLen )
+ { /*
+ Pruefe, ob noch Sprm(s) abzuarbeiten sind
+ */
+
+ // Laenge des letzten Sprm
+ short nSprmL = WW8GetSprmSizeBrutto( pWwFib->nVersion, p->pMemPos, &nLastId );
+
+ // Gesamtlaenge Sprms um SprmLaenge verringern
+ p->nSprmsLen -= nSprmL;
+
+ // Pos des evtl. naechsten Sprm
+ if( p->nSprmsLen <= 0 )
+ p->pMemPos = 0; // sicherheitshalber auf Null setzen, da Enden folgen!
+ else
+ p->pMemPos += nSprmL;
+ }
+ if( p->nSprmsLen <= 0 )
+ p->nStartPos = LONG_MAX; // es folgen Enden
+ }
+ else
+ {
+ if( p->pIdStk->Count() )
+ p->pIdStk->Pop();
+ if( !p->pIdStk->Count() )
+ { // Kein weiterer Sprm auf dieser Pos ?
+ (*p->pPLCFx)++; // naechste Gruppe von Sprms
+ p->pMemPos = 0; // !!!
+ GetNewSprms( *p );
+ ASSERT( p->nStartPos <= p->nEndPos, "Attribut ueber Kreuz" );
+ }
+ }
+}
+
+void WW8PLCFMan::AdvNoSprm( short nIdx, BOOL bStart )
+{
+
+ // Pruefen !!!
+
+ register WW8PLCFxDesc* p = &aD[nIdx];
+
+ if( p == pPcd ){ // NoSprm mit Ende
+ if( bStart ){
+ p->nStartPos = LONG_MAX;
+ }else{ // naechster NoSprm mit Ende
+ (*p->pPLCFx)++;
+ p->pMemPos = 0; // MemPos ungueltig
+ GetNewNoSprms( *p );
+// p->nCp2OrIdx = p->pPLCFx->GetNoSprms( p->nStartPos, p->nEndPos,
+// p->nSprmsLen );
+ }
+ }else{ // NoSprm ohne Ende
+ (*p->pPLCFx)++;
+ p->pMemPos = 0; // MemPos ungueltig
+ GetNewNoSprms( *p );
+// p->nCp2OrIdx = p->pPLCFx->GetNoSprms( p->nStartPos, p->nEndPos,
+// p->nSprmsLen );
+ }
+}
+
+WW8PLCFMan& WW8PLCFMan::operator ++(int)
+{
+ BOOL bStart;
+ short nIdx = WhereIdx( &bStart, 0 );
+ if( nPLCF > nIdx )
+ {
+ register WW8PLCFxDesc* p = &aD[nIdx];
+
+ p->bFirstSprm = TRUE; // Default
+
+ if( p->pPLCFx->IsSprm() )
+ AdvSprm( nIdx, bStart );
+ else // NoSprm
+ AdvNoSprm( nIdx, bStart );
+ }
+ return *this;
+}
+
+// Rueckgabe TRUE fuer Anfang eines Attributes oder Fehler,
+// FALSE fuer Ende d. Attr
+// Restliche Rueckgabewerte werden in der vom Aufrufer zu stellenden Struktur
+// WW8PclxManResults geliefert.
+BOOL WW8PLCFMan::Get( WW8PLCFManResult* pRes )
+{
+ pRes->nMemLen = pRes->nFlags = 0;
+ pRes->nCpPos = 0; // Defaults
+ pRes->pMemPos = 0;
+
+ BOOL bStart;
+ short nIdx = WhereIdx( &bStart, 0 );
+
+ if( nIdx < 0 ){
+ ASSERT( ASS_FALSE, "Position nicht gefunden" );
+ return TRUE;
+ }
+
+ if( aD[nIdx].pPLCFx->IsSprm() ){
+ if( bStart ){
+ GetSprmStart( nIdx, pRes );
+ return TRUE;
+ }else{
+ GetSprmEnd( nIdx, pRes );
+ return FALSE;
+ }
+ }else{
+/*
+ if( &aD[nIdx] == pPcd ){ // Piece-Ende
+ pRes->nId = -4;
+ pRes->nMemLen = ( bStart ) ? 0 : -1;
+ return bStart;
+ }else
+*/
+ if( bStart ){
+ GetNoSprmStart( nIdx, pRes );
+ return TRUE;
+ }else{
+ GetNoSprmEnd( nIdx, pRes );
+ return FALSE;
+ }
+ }
+}
+
+USHORT WW8PLCFMan::GetColl() const
+{
+ if( pPap->pPLCFx ){
+ return pPap->pPLCFx->GetIstd();
+ }else{
+ ASSERT( ASS_FALSE, "GetColl ohne PLCF_Pap" );
+ return 0;
+ }
+}
+
+WW8PLCFx_FLD* WW8PLCFMan::GetFld() const
+{
+ return (WW8PLCFx_FLD*)pFld->pPLCFx;
+}
+
+BYTE* WW8PLCFMan::HasParaSprm( USHORT nId ) const
+{
+ return ((WW8PLCFx_Cp_FKP*)pPap->pPLCFx)->HasSprm( nId );
+}
+
+BYTE* WW8PLCFMan::HasCharSprm( USHORT nId ) const
+{
+ return ((WW8PLCFx_Cp_FKP*)pChp->pPLCFx)->HasSprm( nId );
+}
+
+#endif // !DUMP
+
+//-----------------------------------------
+
+
+WW8Fib::WW8Fib( SvStream& rSt, BYTE nWantedVersion,UINT32 nOffset ): nFibError( 0 )
+{
+ BYTE aBits1;
+ BYTE aBits2;
+ BYTE aVer8Bits1; // nur ab WinWord 8 benutzt
+ rSt.Seek( nOffset );
+ /*
+ Wunsch-Nr vermerken, File-Versionsnummer ermitteln
+ und gegen Wunsch-Nr. checken !
+ */
+ nVersion = nWantedVersion;
+ rSt >> wIdent;
+ rSt >> nFib;
+ rSt >> nProduct;
+ if( 0 != rSt.GetError() )
+ {
+ INT16 nFibMin;
+ INT16 nFibMax;
+ switch( nVersion ) // beachte: 6 steht fuer "6 ODER 7", 7 steht fuer "NUR 7"
+ {
+ case 6: nFibMin = 0x0065; // von 101 WinWord 6.0
+ // 102 "
+ // und 103 WinWord 6.0 fuer Macintosh
+ // 104 "
+ nFibMax = 0x0069; // bis 105 WinWord 95
+ break;
+ case 7: nFibMin = 0x0069; // von 105 WinWord 95
+ nFibMax = 0x0069; // bis 105 WinWord 95
+ break;
+ case 8: nFibMin = 0x006A; // von 106 WinWord 97
+ nFibMax = 0x00c1; // bis 193 WinWord 97 (?)
+ break;
+ default:nFibMin = 0; // Programm-Fehler!
+ nFibMax = 0;
+ nFib = 1;
+ ASSERT( !this, "Es wurde vergessen, nVersion zu kodieren!" );
+ }
+ if( ( nFib < nFibMin )
+ || ( nFib > nFibMax ) )
+ {
+ nFibError = ERR_SWG_READ_ERROR; // Error melden
+ return; // und hopp raus!
+ }
+ }
+
+ // praktische Hilfsvariablen:
+ BOOL bVer67 = ((6 == nVersion) || (7 == nVersion));
+ BOOL bVer8 = (8 == nVersion);
+
+ // Hilfs-Varis fuer Ver67:
+ INT16 pnChpFirst_Ver67;
+ INT16 pnPapFirst_Ver67;
+ INT16 cpnBteChp_Ver67;
+ INT16 cpnBtePap_Ver67;
+
+ // und auf gehts: FIB einlesen
+ rSt >> lid;
+ rSt >> pnNext;
+ rSt >> aBits1;
+ rSt >> aBits2;
+ rSt >> nFibBack;
+ rSt >> lKey1;
+ rSt >> lKey2;
+ rSt >> envr;
+ rSt >> aVer8Bits1; // unter Ver67 nur leeres Reservefeld
+ // Inhalt von aVer8Bits1
+ //
+ // BYTE fMac :1;
+ // BYTE fEmptySpecial :1;
+ // BYTE fLoadOverridePage :1;
+ // BYTE fFuturesavedUndo :1;
+ // BYTE fWord97Saved :1;
+ // BYTE :3;
+ rSt >> chse;
+ rSt >> chseTables;
+ rSt >> fcMin;
+ rSt >> fcMac;
+
+// Einschub fuer WW8 *****************************************************
+ if( !bVer67 )
+ {
+ rSt >> csw;
+
+ // Marke: "rgsw" Beginning of the array of shorts
+ rSt >> wMagicCreated;
+ rSt >> wMagicRevised;
+ rSt >> wMagicCreatedPrivate;
+ rSt >> wMagicRevisedPrivate;
+ rSt.SeekRel( 9 * sizeof( INT16 ) );
+
+ /*
+ // dies sind die 9 unused Felder:
+ && (bVer67 || WW8ReadINT16( rSt, pnFbpChpFirst_W6 )) // 1
+ && (bVer67 || WW8ReadINT16( rSt, pnChpFirst_W6 )) // 2
+ && (bVer67 || WW8ReadINT16( rSt, cpnBteChp_W6 )) // 3
+ && (bVer67 || WW8ReadINT16( rSt, pnFbpPapFirst_W6 )) // 4
+ && (bVer67 || WW8ReadINT16( rSt, pnPapFirst_W6 )) // 5
+ && (bVer67 || WW8ReadINT16( rSt, cpnBtePap_W6 )) // 6
+ && (bVer67 || WW8ReadINT16( rSt, pnFbpLvcFirst_W6 )) // 7
+ && (bVer67 || WW8ReadINT16( rSt, pnLvcFirst_W6 )) // 8
+ && (bVer67 || WW8ReadINT16( rSt, cpnBteLvc_W6 )) // 9
+ */
+ rSt >> lidFE;
+ rSt >> clw;
+ }
+
+// Ende des Einschubs fuer WW8 *******************************************
+
+ // Marke: "rglw" Beginning of the array of longs
+ rSt >> cbMac;
+
+ // 2 Longs uebergehen, da unwichtiger Quatsch
+ rSt.SeekRel( 2 * sizeof( INT32) );
+
+ // weitere 2 Longs nur bei Ver67 ueberspringen
+ if( bVer67 )
+ rSt.SeekRel( 2 * sizeof( INT32) );
+
+ rSt >> ccpText;
+ rSt >> ccpFtn;
+ rSt >> ccpHdr;
+ rSt >> ccpMcr;
+ rSt >> ccpAtn;
+ rSt >> ccpEdn;
+ rSt >> ccpTxbx;
+ rSt >> ccpHdrTxbx;
+
+ // weiteres Long nur bei Ver67 ueberspringen
+ if( bVer67 )
+ rSt.SeekRel( 1 * sizeof( INT32) );
+ else
+ {
+// Einschub fuer WW8 *****************************************************
+ rSt >> pnFbpChpFirst;
+ rSt >> pnChpFirst;
+ rSt >> cpnBteChp;
+ rSt >> pnFbpPapFirst;
+ rSt >> pnPapFirst;
+ rSt >> cpnBtePap;
+ rSt >> pnFbpLvcFirst;
+ rSt >> pnLvcFirst;
+ rSt >> cpnBteLvc;
+ rSt >> fcIslandFirst;
+ rSt >> fcIslandLim;
+ rSt >> cfclcb;
+ }
+
+// Ende des Einschubs fuer WW8 *******************************************
+
+ // Marke: "rgfclcb" Beginning of array of FC/LCB pairs.
+ rSt >> fcStshfOrig;
+ rSt >> lcbStshfOrig;
+ rSt >> fcStshf;
+ rSt >> lcbStshf;
+ rSt >> fcPlcffndRef;
+ rSt >> lcbPlcffndRef;
+ rSt >> fcPlcffndTxt;
+ rSt >> lcbPlcffndTxt;
+ rSt >> fcPlcfandRef;
+ rSt >> lcbPlcfandRef;
+ rSt >> fcPlcfandTxt;
+ rSt >> lcbPlcfandTxt;
+ rSt >> fcPlcfsed;
+ rSt >> lcbPlcfsed;
+ rSt >> fcPlcfpad;
+ rSt >> lcbPlcfpad;
+ rSt >> fcPlcfphe;
+ rSt >> lcbPlcfphe;
+ rSt >> fcSttbfglsy;
+ rSt >> lcbSttbfglsy;
+ rSt >> fcPlcfglsy;
+ rSt >> lcbPlcfglsy;
+ rSt >> fcPlcfhdd;
+ rSt >> lcbPlcfhdd;
+ rSt >> fcPlcfbteChpx;
+ rSt >> lcbPlcfbteChpx;
+ rSt >> fcPlcfbtePapx;
+ rSt >> lcbPlcfbtePapx;
+ rSt >> fcPlcfsea;
+ rSt >> lcbPlcfsea;
+ rSt >> fcSttbfffn;
+ rSt >> lcbSttbfffn;
+ rSt >> fcPlcffldMom;
+ rSt >> lcbPlcffldMom;
+ rSt >> fcPlcffldHdr;
+ rSt >> lcbPlcffldHdr;
+ rSt >> fcPlcffldFtn;
+ rSt >> lcbPlcffldFtn;
+ rSt >> fcPlcffldAtn;
+ rSt >> lcbPlcffldAtn;
+ rSt >> fcPlcffldMcr;
+ rSt >> lcbPlcffldMcr;
+ rSt >> fcSttbfbkmk;
+ rSt >> lcbSttbfbkmk;
+ rSt >> fcPlcfbkf;
+ rSt >> lcbPlcfbkf;
+ rSt >> fcPlcfbkl;
+ rSt >> lcbPlcfbkl;
+ rSt >> fcCmds;
+ rSt >> lcbCmds;
+ rSt >> fcPlcfmcr;
+ rSt >> lcbPlcfmcr;
+ rSt >> fcSttbfmcr;
+ rSt >> lcbSttbfmcr;
+ rSt >> fcPrDrvr;
+ rSt >> lcbPrDrvr;
+ rSt >> fcPrEnvPort;
+ rSt >> lcbPrEnvPort;
+ rSt >> fcPrEnvLand;
+ rSt >> lcbPrEnvLand;
+ rSt >> fcWss;
+ rSt >> lcbWss;
+ rSt >> fcDop;
+ rSt >> lcbDop;
+ rSt >> fcSttbfAssoc;
+ rSt >> cbSttbfAssoc;
+ rSt >> fcClx;
+ rSt >> lcbClx;
+ rSt >> fcPlcfpgdFtn;
+ rSt >> lcbPlcfpgdFtn;
+ rSt >> fcAutosaveSource;
+ rSt >> lcbAutosaveSource;
+ rSt >> fcGrpStAtnOwners;
+ rSt >> lcbGrpStAtnOwners;
+ rSt >> fcSttbfAtnbkmk;
+ rSt >> lcbSttbfAtnbkmk;
+
+ // weiteres short nur bei Ver67 ueberspringen
+ if( bVer67 )
+ {
+ rSt.SeekRel( 1*sizeof( INT16) );
+
+ // folgende 4 Shorts existieren nur bei Ver67;
+ rSt >> pnChpFirst_Ver67;
+ rSt >> pnPapFirst_Ver67;
+ rSt >> cpnBteChp_Ver67;
+ rSt >> cpnBtePap_Ver67;
+ }
+
+ rSt >> fcPlcfdoaMom;
+ rSt >> lcbPlcfdoaMom;
+ rSt >> fcPlcfdoaHdr;
+ rSt >> lcbPlcfdoaHdr;
+ rSt >> fcPlcfspaMom;
+ rSt >> lcbPlcfspaMom;
+ rSt >> fcPlcfspaHdr;
+ rSt >> lcbPlcfspaHdr;
+
+ rSt >> fcPlcfAtnbkf;
+ rSt >> lcbPlcfAtnbkf;
+ rSt >> fcPlcfAtnbkl;
+ rSt >> lcbPlcfAtnbkl;
+ rSt >> fcPms;
+ rSt >> lcbPMS;
+ rSt >> fcFormFldSttbf;
+ rSt >> lcbFormFldSttbf;
+ rSt >> fcPlcfendRef;
+ rSt >> lcbPlcfendRef;
+ rSt >> fcPlcfendTxt;
+ rSt >> lcbPlcfendTxt;
+ rSt >> fcPlcffldEdn;
+ rSt >> lcbPlcffldEdn;
+ rSt >> fcPlcfpgdEdn;
+ rSt >> lcbPlcfpgdEdn;
+ rSt >> fcDggInfo;
+ rSt >> lcbDggInfo;
+ rSt >> fcSttbfRMark;
+ rSt >> lcbSttbfRMark;
+ rSt >> fcSttbfCaption;
+ rSt >> lcbSttbfCaption;
+ rSt >> fcSttbAutoCaption;
+ rSt >> lcbSttbAutoCaption;
+ rSt >> fcPlcfwkb;
+ rSt >> lcbPlcfwkb;
+ rSt >> fcPlcfspl;
+ rSt >> lcbPlcfspl;
+ rSt >> fcPlcftxbxTxt;
+ rSt >> lcbPlcftxbxTxt;
+ rSt >> fcPlcffldTxbx;
+ rSt >> lcbPlcffldTxbx;
+ rSt >> fcPlcfHdrtxbxTxt;
+ rSt >> lcbPlcfHdrtxbxTxt;
+ rSt >> fcPlcffldHdrTxbx;
+ rSt >> lcbPlcffldHdrTxbx;
+
+ if( 0 == rSt.GetError() )
+ {
+ // Bit-Flags setzen
+ fDot = aBits1 & 0x01 ;
+ fGlsy = ( aBits1 & 0x02 ) >> 1;
+ fComplex = ( aBits1 & 0x04 ) >> 2;
+ fHasPic = ( aBits1 & 0x08 ) >> 3;
+ cQuickSaves = ( aBits1 & 0xf0 ) >> 4;
+ fEncrypted = aBits2 & 0x01 ;
+ fWhichTblStm= ( aBits2 & 0x02 ) >> 1;
+ // dummy = ( aBits2 & 0x0e ) >> 1;
+ fExtChar = ( aBits2 & 0x10 ) >> 4;
+ // dummy = ( aBits2 & 0xe0 ) >> 5;
+
+ /*
+ ggfs. Ziel-Varaiblen, aus xxx_Ver67 fuellen
+ oder Flags setzen
+ */
+ if( bVer67 )
+ {
+ pnChpFirst = pnChpFirst_Ver67;
+ pnPapFirst = pnPapFirst_Ver67;
+ cpnBteChp = cpnBteChp_Ver67;
+ cpnBtePap = cpnBtePap_Ver67;
+ }
+ else if( bVer8 )
+ {
+ fMac = aVer8Bits1 & 0x01 ;
+ fEmptySpecial = ( aVer8Bits1 & 0x02 ) >> 1;
+ fLoadOverridePage = ( aVer8Bits1 & 0x04 ) >> 2;
+ fFuturesavedUndo = ( aVer8Bits1 & 0x08 ) >> 3;
+ fWord97Saved = ( aVer8Bits1 & 0x10 ) >> 4;
+
+ /*
+ speziell fuer WW8:
+ ermittle die Werte fuer PLCF LST und PLF LFO
+ und PLCF fuer TextBox-Break-Deskriptoren
+ */
+ long nOldPos = rSt.Tell();
+ rSt.Seek( 0x02e2 );
+ rSt >> fcPlcfLst;
+ rSt >> lcbPlcfLst;
+ rSt >> fcPlfLfo;
+ rSt >> lcbPlfLfo;
+ rSt >> fcPlcftxbxBkd;
+ rSt >> lcbPlcftxbxBkd;
+ rSt >> fcPlcfHdrtxbxBkd;
+ rSt >> lcbPlcfHdrtxbxBkd;
+ if( 0 != rSt.GetError() )
+ {
+ nFibError = ERR_SWG_READ_ERROR;
+ }
+
+ rSt.Seek( 0x372 ); // fcSttbListNames
+ rSt >> fcSttbListNames;
+ rSt >> lcbSttbListNames;
+ if( 0 != rSt.GetError() )
+ nFibError = ERR_SWG_READ_ERROR;
+
+ rSt.Seek( nOldPos );
+ }
+ }
+ else
+ {
+ nFibError = ERR_SWG_READ_ERROR; // Error melden
+ }
+}
+
+
+WW8Fib::WW8Fib( BYTE nVer )
+{
+ memset( this, 0, sizeof( *this ));
+ nVersion = nVer;
+ if( 8 == nVer )
+ {
+ fcMin = 0x400;
+ wIdent = 0xa5ec;
+ nFib = nFibBack = 0xc1;
+ nProduct = 0x49;
+
+ csw = 0x0e; // muss das sein ???
+ cfclcb = 0x5d; // -""-
+ clw = 0x16; // -""-
+ pnFbpChpFirst = pnFbpPapFirst = pnFbpLvcFirst = 0x000fffff;
+ fExtChar = TRUE;
+
+// diese Flags muessen nicht gesetzt werden; koennen aber.
+// wMagicCreated = wMagicRevised = 0x6a62;
+// wMagicCreatedPrivate = wMagicRevisedPrivate = 0xb3b2;
+// fWord97Saved = TRUE;
+ }
+ else
+ {
+ fcMin = 0x300;
+ wIdent = 0xa5dc;
+ nFib = nFibBack = 0x65;
+ nProduct = 0xc02d;
+ }
+
+ lid = 0x407;
+}
+
+
+BOOL WW8Fib::Write( SvStream& rStrm )
+{
+ BYTE* pData = new BYTE[ fcMin ];
+ BYTE* pDataPtr = pData;
+ memset( pData, 0, fcMin );
+
+ BOOL bVer8 = 8 == nVersion;
+
+ ULONG nPos = rStrm.Tell();
+ cbMac = rStrm.Seek( STREAM_SEEK_TO_END );
+ rStrm.Seek( nPos );
+
+ Set_UInt16( pData, wIdent );
+ Set_UInt16( pData, nFib );
+ Set_UInt16( pData, nProduct );
+ Set_UInt16( pData, lid );
+ Set_UInt16( pData, pnNext );
+
+ UINT16 nBits16 = 0;
+ if( fDot ) nBits16 |= 0x0001;
+ if( fGlsy) nBits16 |= 0x0002;
+ if( fComplex ) nBits16 |= 0x0004;
+ if( fHasPic ) nBits16 |= 0x0008;
+ nBits16 |= (0xf0 & ( cQuickSaves << 4 ));
+ if( fEncrypted ) nBits16 |= 0x0100;
+ if( fWhichTblStm ) nBits16 |= 0x0200;
+ if( fExtChar ) nBits16 |= 0x1000;
+ Set_UInt16( pData, nBits16 );
+
+ Set_UInt16( pData, nFibBack );
+ Set_UInt16( pData, lKey1 );
+ Set_UInt16( pData, lKey2 );
+ Set_UInt8( pData, envr );
+
+ BYTE nBits8 = 0;
+ if( bVer8 )
+ {
+ if( fMac ) nBits8 |= 0x0001;
+ if( fEmptySpecial ) nBits8 |= 0x0002;
+ if( fLoadOverridePage ) nBits8 |= 0x0004;
+ if( fFuturesavedUndo ) nBits8 |= 0x0008;
+ if( fWord97Saved ) nBits8 |= 0x0010;
+ }
+ Set_UInt8( pData, nBits8 ); // unter Ver67 nur leeres Reservefeld
+
+ Set_UInt16( pData, chse );
+ Set_UInt16( pData, chseTables );
+ Set_UInt32( pData, fcMin );
+ Set_UInt32( pData, fcMac );
+
+// Einschub fuer WW8 *****************************************************
+
+ // Marke: "rgsw" Beginning of the array of shorts
+ if( bVer8 )
+ {
+ Set_UInt16( pData, csw );
+ Set_UInt16( pData, wMagicCreated );
+ Set_UInt16( pData, wMagicRevised );
+ Set_UInt16( pData, wMagicCreatedPrivate );
+ Set_UInt16( pData, wMagicRevisedPrivate );
+ pData += 9 * sizeof( INT16 );
+ Set_UInt16( pData, lidFE );
+ Set_UInt16( pData, clw );
+ }
+
+// Ende des Einschubs fuer WW8 *******************************************
+
+ // Marke: "rglw" Beginning of the array of longs
+ Set_UInt32( pData, cbMac );
+
+ // 2 Longs uebergehen, da unwichtiger Quatsch
+ pData += 2 * sizeof( INT32);
+
+ // weitere 2 Longs nur bei Ver67 ueberspringen
+ if( !bVer8 ) pData += 2 * sizeof( INT32);
+
+ Set_UInt32( pData, ccpText );
+ Set_UInt32( pData, ccpFtn );
+ Set_UInt32( pData, ccpHdr );
+ Set_UInt32( pData, ccpMcr );
+ Set_UInt32( pData, ccpAtn );
+ Set_UInt32( pData, ccpEdn );
+ Set_UInt32( pData, ccpTxbx );
+ Set_UInt32( pData, ccpHdrTxbx );
+
+ // weiteres Long nur bei Ver67 ueberspringen
+ if( !bVer8 ) pData += 1 * sizeof( INT32);
+
+// Einschub fuer WW8 *****************************************************
+ if( bVer8 )
+ {
+ Set_UInt32( pData, pnFbpChpFirst );
+ Set_UInt32( pData, pnChpFirst );
+ Set_UInt32( pData, cpnBteChp );
+ Set_UInt32( pData, pnFbpPapFirst );
+ Set_UInt32( pData, pnPapFirst );
+ Set_UInt32( pData, cpnBtePap );
+ Set_UInt32( pData, pnFbpLvcFirst );
+ Set_UInt32( pData, pnLvcFirst );
+ Set_UInt32( pData, cpnBteLvc );
+ Set_UInt32( pData, fcIslandFirst );
+ Set_UInt32( pData, fcIslandLim );
+ Set_UInt16( pData, cfclcb );
+ }
+// Ende des Einschubs fuer WW8 *******************************************
+
+ // Marke: "rgfclcb" Beginning of array of FC/LCB pairs.
+ Set_UInt32( pData, fcStshfOrig );
+ Set_UInt32( pData, lcbStshfOrig );
+ Set_UInt32( pData, fcStshf );
+ Set_UInt32( pData, lcbStshf );
+ Set_UInt32( pData, fcPlcffndRef );
+ Set_UInt32( pData, lcbPlcffndRef );
+ Set_UInt32( pData, fcPlcffndTxt );
+ Set_UInt32( pData, lcbPlcffndTxt );
+ Set_UInt32( pData, fcPlcfandRef );
+ Set_UInt32( pData, lcbPlcfandRef );
+ Set_UInt32( pData, fcPlcfandTxt );
+ Set_UInt32( pData, lcbPlcfandTxt );
+ Set_UInt32( pData, fcPlcfsed );
+ Set_UInt32( pData, lcbPlcfsed );
+ Set_UInt32( pData, fcPlcfpad );
+ Set_UInt32( pData, lcbPlcfpad );
+ Set_UInt32( pData, fcPlcfphe );
+ Set_UInt32( pData, lcbPlcfphe );
+ Set_UInt32( pData, fcSttbfglsy );
+ Set_UInt32( pData, lcbSttbfglsy );
+ Set_UInt32( pData, fcPlcfglsy );
+ Set_UInt32( pData, lcbPlcfglsy );
+ Set_UInt32( pData, fcPlcfhdd );
+ Set_UInt32( pData, lcbPlcfhdd );
+ Set_UInt32( pData, fcPlcfbteChpx );
+ Set_UInt32( pData, lcbPlcfbteChpx );
+ Set_UInt32( pData, fcPlcfbtePapx );
+ Set_UInt32( pData, lcbPlcfbtePapx );
+ Set_UInt32( pData, fcPlcfsea );
+ Set_UInt32( pData, lcbPlcfsea );
+ Set_UInt32( pData, fcSttbfffn );
+ Set_UInt32( pData, lcbSttbfffn );
+ Set_UInt32( pData, fcPlcffldMom );
+ Set_UInt32( pData, lcbPlcffldMom );
+ Set_UInt32( pData, fcPlcffldHdr );
+ Set_UInt32( pData, lcbPlcffldHdr );
+ Set_UInt32( pData, fcPlcffldFtn );
+ Set_UInt32( pData, lcbPlcffldFtn );
+ Set_UInt32( pData, fcPlcffldAtn );
+ Set_UInt32( pData, lcbPlcffldAtn );
+ Set_UInt32( pData, fcPlcffldMcr );
+ Set_UInt32( pData, lcbPlcffldMcr );
+ Set_UInt32( pData, fcSttbfbkmk );
+ Set_UInt32( pData, lcbSttbfbkmk );
+ Set_UInt32( pData, fcPlcfbkf );
+ Set_UInt32( pData, lcbPlcfbkf );
+ Set_UInt32( pData, fcPlcfbkl );
+ Set_UInt32( pData, lcbPlcfbkl );
+ Set_UInt32( pData, fcCmds );
+ Set_UInt32( pData, lcbCmds );
+ Set_UInt32( pData, fcPlcfmcr );
+ Set_UInt32( pData, lcbPlcfmcr );
+ Set_UInt32( pData, fcSttbfmcr );
+ Set_UInt32( pData, lcbSttbfmcr );
+ Set_UInt32( pData, fcPrDrvr );
+ Set_UInt32( pData, lcbPrDrvr );
+ Set_UInt32( pData, fcPrEnvPort );
+ Set_UInt32( pData, lcbPrEnvPort );
+ Set_UInt32( pData, fcPrEnvLand );
+ Set_UInt32( pData, lcbPrEnvLand );
+ Set_UInt32( pData, fcWss );
+ Set_UInt32( pData, lcbWss );
+ Set_UInt32( pData, fcDop );
+ Set_UInt32( pData, lcbDop );
+ Set_UInt32( pData, fcSttbfAssoc );
+ Set_UInt32( pData, cbSttbfAssoc );
+ Set_UInt32( pData, fcClx );
+ Set_UInt32( pData, lcbClx );
+ Set_UInt32( pData, fcPlcfpgdFtn );
+ Set_UInt32( pData, lcbPlcfpgdFtn );
+ Set_UInt32( pData, fcAutosaveSource );
+ Set_UInt32( pData, lcbAutosaveSource );
+ Set_UInt32( pData, fcGrpStAtnOwners );
+ Set_UInt32( pData, lcbGrpStAtnOwners );
+ Set_UInt32( pData, fcSttbfAtnbkmk );
+ Set_UInt32( pData, lcbSttbfAtnbkmk );
+
+ // weiteres short nur bei Ver67 ueberspringen
+ if( !bVer8 )
+ {
+ pData += 1*sizeof( INT16);
+ Set_UInt16( pData, (UINT16)pnChpFirst );
+ Set_UInt16( pData, (UINT16)pnPapFirst );
+ Set_UInt16( pData, (UINT16)cpnBteChp );
+ Set_UInt16( pData, (UINT16)cpnBtePap );
+ }
+
+ Set_UInt32( pData, fcPlcfdoaMom ); // nur bei Ver67, in Ver8 unused
+ Set_UInt32( pData, lcbPlcfdoaMom ); // nur bei Ver67, in Ver8 unused
+ Set_UInt32( pData, fcPlcfdoaHdr ); // nur bei Ver67, in Ver8 unused
+ Set_UInt32( pData, lcbPlcfdoaHdr ); // nur bei Ver67, in Ver8 unused
+
+ Set_UInt32( pData, fcPlcfspaMom ); // in Ver67 leere Reserve
+ Set_UInt32( pData, lcbPlcfspaMom ); // in Ver67 leere Reserve
+ Set_UInt32( pData, fcPlcfspaHdr ); // in Ver67 leere Reserve
+ Set_UInt32( pData, lcbPlcfspaHdr ); // in Ver67 leere Reserve
+
+ Set_UInt32( pData, fcPlcfAtnbkf );
+ Set_UInt32( pData, lcbPlcfAtnbkf );
+ Set_UInt32( pData, fcPlcfAtnbkl );
+ Set_UInt32( pData, lcbPlcfAtnbkl );
+ Set_UInt32( pData, fcPms );
+ Set_UInt32( pData, lcbPMS );
+ Set_UInt32( pData, fcFormFldSttbf );
+ Set_UInt32( pData, lcbFormFldSttbf );
+ Set_UInt32( pData, fcPlcfendRef );
+ Set_UInt32( pData, lcbPlcfendRef );
+ Set_UInt32( pData, fcPlcfendTxt );
+ Set_UInt32( pData, lcbPlcfendTxt );
+ Set_UInt32( pData, fcPlcffldEdn );
+ Set_UInt32( pData, lcbPlcffldEdn );
+ Set_UInt32( pData, fcPlcfpgdEdn );
+ Set_UInt32( pData, lcbPlcfpgdEdn );
+ Set_UInt32( pData, fcDggInfo ); // in Ver67 leere Reserve
+ Set_UInt32( pData, lcbDggInfo ); // in Ver67 leere Reserve
+ Set_UInt32( pData, fcSttbfRMark );
+ Set_UInt32( pData, lcbSttbfRMark );
+ Set_UInt32( pData, fcSttbfCaption );
+ Set_UInt32( pData, lcbSttbfCaption );
+ Set_UInt32( pData, fcSttbAutoCaption );
+ Set_UInt32( pData, lcbSttbAutoCaption );
+ Set_UInt32( pData, fcPlcfwkb );
+ Set_UInt32( pData, lcbPlcfwkb );
+ Set_UInt32( pData, fcPlcfspl ); // in Ver67 leere Reserve
+ Set_UInt32( pData, lcbPlcfspl ); // in Ver67 leere Reserve
+ Set_UInt32( pData, fcPlcftxbxTxt );
+ Set_UInt32( pData, lcbPlcftxbxTxt );
+ Set_UInt32( pData, fcPlcffldTxbx );
+ Set_UInt32( pData, lcbPlcffldTxbx );
+ Set_UInt32( pData, fcPlcfHdrtxbxTxt );
+ Set_UInt32( pData, lcbPlcfHdrtxbxTxt );
+ Set_UInt32( pData, fcPlcffldHdrTxbx );
+ Set_UInt32( pData, lcbPlcffldHdrTxbx );
+
+ if( bVer8 )
+ {
+ pData += 0x2e2 - 0x27a; // Pos + Offset (fcPlcfLst - fcStwUser)
+ Set_UInt32( pData, fcPlcfLst );
+ Set_UInt32( pData, lcbPlcfLst );
+ Set_UInt32( pData, fcPlfLfo );
+ Set_UInt32( pData, lcbPlfLfo );
+ Set_UInt32( pData, fcPlcftxbxBkd );
+ Set_UInt32( pData, lcbPlcftxbxBkd );
+ Set_UInt32( pData, fcPlcfHdrtxbxBkd );
+ Set_UInt32( pData, lcbPlcfHdrtxbxBkd );
+
+ pData += 0x372 - 0x302; // Pos + Offset (fcSttbListNames - fcDocUndo)
+ Set_UInt32( pData, fcSttbListNames );
+ Set_UInt32( pData, lcbSttbListNames );
+ }
+
+ rStrm.Write( pDataPtr, fcMin );
+ delete pDataPtr;
+ return 0 == rStrm.GetError();
+}
+
+//-----------------------------------------
+
+
+WW8Style::WW8Style( SvStream& rStream, WW8Fib& rFibPara ): rSt( rStream ), rFib( rFibPara )
+{
+ nStyleStart = rFib.fcStshf;
+ nStyleLen = rFib.lcbStshf;
+
+ rSt.Seek( nStyleStart );
+
+ USHORT cbStshi = 0; // 2 bytes size of the following STSHI structure
+
+ // alte Version ?
+ if ( rFib.nFib < 67 )
+ {
+ cbStshi = 4; // -> Laengenfeld fehlt
+ }
+ else // neue Version:
+ // lies die Laenge der in der Datei gespeicherten Struktur
+ rSt >> cbStshi;
+
+ UINT16 nRead = cbStshi;
+ do
+ {
+ UINT16 a16Bit;
+
+ if( 2 > nRead ) break;
+ rSt >> cstd;
+
+ if( 4 > nRead ) break;
+ rSt >> cbSTDBaseInFile;
+
+ if( 6 > nRead ) break;
+ rSt >> a16Bit;
+ fStdStylenamesWritten = a16Bit & 0x0001;
+
+ if( 8 > nRead ) break;
+ rSt >> stiMaxWhenSaved;
+
+ if( 10 > nRead ) break;
+ rSt >> istdMaxFixedWhenSaved;
+
+ if( 12 > nRead ) break;
+ rSt >> nVerBuiltInNamesWhenSaved;
+
+ if( 14 > nRead ) break;
+ rSt >> ftcStandardChpStsh;
+
+ // ggfs. den Rest ueberlesen
+ if( 14 < nRead )
+ rSt.SeekRel( nRead-14 );
+ }
+ while( !this ); // Trick: obiger Block wird genau einmal durchlaufen
+ // und kann vorzeitig per "break" verlassen werden.
+
+ if( 0 != rSt.GetError() )
+ {
+ // wie denn nun den Error melden?
+ }
+}
+
+
+// Read1STDFixed() liest ein Style ein. Wenn der Style vollstaendig vorhanden
+// ist, d.h. kein leerer Slot, dann wird Speicher alloziert und ein Pointer auf
+// die ( evtl. mit Nullen aufgefuellten ) STD geliefert. Ist es ein leerer
+// Slot, dann wird ein Nullpointer zurueckgeliefert.
+WW8_STD* WW8Style::Read1STDFixed( short& rSkip, short* pcbStd )
+{
+ WW8_STD* pStd = (WW8_STD*)0;
+
+ UINT16 cbStd;
+ rSt >> cbStd; // lies Laenge
+
+ UINT16 nRead = cbSTDBaseInFile;
+ if( cbStd >= cbSTDBaseInFile ){ // Fixed part vollst. vorhanden
+
+ // read fixed part of STD
+ pStd = new WW8_STD;
+ memset( pStd, 0, sizeof( *pStd ) );
+
+ do
+ {
+ UINT16 a16Bit;
+
+ if( 2 > nRead ) break;
+ rSt >> a16Bit;
+ pStd->sti = a16Bit & 0x0fff ;
+ pStd->fScratch = 0 != ( a16Bit & 0x1000 );
+ pStd->fInvalHeight = 0 != ( a16Bit & 0x2000 );
+ pStd->fHasUpe = 0 != ( a16Bit & 0x4000 );
+ pStd->fMassCopy = 0 != ( a16Bit & 0x8000 );
+
+ if( 4 > nRead ) break;
+ rSt >> a16Bit;
+ pStd->sgc = a16Bit & 0x000f ;
+ pStd->istdBase = ( a16Bit & 0xfff0 ) >> 4;
+
+ if( 6 > nRead ) break;
+ rSt >> a16Bit;
+ pStd->cupx = a16Bit & 0x000f ;
+ pStd->istdNext = ( a16Bit & 0xfff0 ) >> 4;
+
+ if( 8 > nRead ) break;
+ rSt >> pStd->bchUpe;
+
+ // ab Ver8 sollten diese beiden Felder dazukommen:
+ if(10 > nRead ) break;
+ rSt >> a16Bit;
+ pStd->fAutoRedef = a16Bit & 0x0001 ;
+ pStd->fHidden = ( a16Bit & 0x0002 ) >> 2;
+
+ // man kann nie wissen: vorsichtshalber ueberlesen
+ // wir eventuelle Fuellsel, die noch zum BASE-Part gehoeren...
+ if( 10 < nRead )
+ rSt.SeekRel( nRead-10 );
+ }
+ while( !this ); // Trick: obiger Block wird genau einmal durchlaufen
+ // und kann vorzeitig per "break" verlassen werden.
+
+ if( (0 != rSt.GetError())
+ || !nRead )
+ DELETEZ( pStd ); // per NULL den Error melden
+
+ rSkip = cbStd - cbSTDBaseInFile;
+ }
+ else
+ { // Fixed part zu kurz
+ if( cbStd )
+ rSt.SeekRel( cbStd ); // ueberlies Reste
+ rSkip = 0;
+ }
+ if( pcbStd )
+ *pcbStd = cbStd;
+ return pStd;
+}
+
+WW8_STD* WW8Style::Read1Style( short& rSkip, UINT8** ppStr, short* pcbStd )
+{
+ WW8_STD* pStd;
+
+ pStd = Read1STDFixed( rSkip, pcbStd ); // lese STD
+
+ // String gewuenscht ?
+ if( ppStr )
+ { // echter Style ?
+ if ( pStd )
+ {
+
+ switch( rFib.nVersion ) // beachte: 6 steht fuer "6 ODER 7", 7 steht fuer "NUR 7"
+ {
+ case 6:
+ case 7: // lies Pasacl-String
+ *ppStr = WW8ReadPString( rSt );
+ rSkip -= (*ppStr)[0]+2;
+ break;
+ case 8: // lies Unicode-String mit fuehrendem Laengenbyte
+ *ppStr = WW8Read_xstz( rSt );
+ rSkip -= 1+(((*ppStr)[0] + 1 )* 2);
+ break;
+ default:ASSERT( !this, "Es wurde vergessen, nVersion zu kodieren!" );
+ }
+
+ }
+ else
+ {
+ *ppStr = (UINT8*)0; // Kann keinen Namen liefern
+ }
+ }
+ return pStd;
+}
+
+
+//-----------------------------------------
+
+
+struct WW8_FFN_Ver6 : public WW8_FFN_BASE
+{
+ // ab Ver6
+ char szFfn[65]; // 0x6 bzw. 0x40 ab Ver8 zero terminated string that
+ // records name of font.
+ // Maximal size of szFfn is 65 characters.
+ // Vorsicht: Dieses Array kann auch kleiner sein!!!
+ // Possibly followed by a second sz which records the
+ // name of an alternate font to use if the first named
+ // font does not exist on this system.
+};
+struct WW8_FFN_Ver8 : public WW8_FFN_BASE
+{
+ // ab Ver8 sind folgende beiden Felder eingeschoben,
+ // werden von uns ignoriert.
+ char panose[ 10 ]; // 0x6 PANOSE
+ char fs[ 24 ]; // 0x10 FONTSIGNATURE
+
+ // ab Ver8 als Unicode
+ UINT16 szFfn[65];// 0x6 bzw. 0x40 ab Ver8 zero terminated string that
+ // records name of font.
+ // Maximal size of szFfn is 65 characters.
+ // Vorsicht: Dieses Array kann auch kleiner sein!!!
+ // Possibly followed by a second sz which records the
+ // name of an alternate font to use if the first named
+ // font does not exist on this system.
+};
+
+
+// JP 30.07.98: unter UNX ist sal_Unicode kein UNIT16, sondern ein long
+void lcl_UIn16ToWChar( UniString& rStr, UINT16* pSrc )
+{
+ UINT16* p = pSrc, nCnt = 0;
+ for( ; *p; ++nCnt, ++p )
+ ;
+// rStr.AllocStrBuf( nCnt + 1 );
+ rStr.AllocStrBuf( nCnt );
+ sal_Unicode* pChar = rStr.GetCharStr();
+ for( p = pSrc; nCnt; --nCnt, ++p, ++pChar )
+ *pChar = SVBT16ToShort( *(SVBT16*)p );
+
+// *pChar = 0;
+}
+
+WW8Fonts::WW8Fonts( SvStream& rSt, WW8Fib& rFib )
+{
+ if( rFib.lcbSttbfffn <= 2 )
+ {
+ ASSERT( ASS_FALSE, "Fonttabelle kaputt! (rFib.lcbSttbfffn < 2)" );
+ pFontA = 0;
+ nMax = 0;
+ return;
+ }
+
+ BOOL bVer67 = (8 > rFib.nVersion);
+
+ rSt.Seek( rFib.fcSttbfffn );
+
+ // allocate Font Array
+ char* pA = new char[ rFib.lcbSttbfffn - 2 ];
+ WW8_FFN* p = (WW8_FFN*)pA;
+
+ if( !bVer67 )
+ {
+ // bVer8: read the count of strings in nMax
+ rSt >> nMax;
+ }
+
+ // Ver8: skip undefined uint16
+ // Ver67: skip the herein stored total byte of structure
+ // - we already got that information in rFib.lcbSttbfffn
+ rSt.SeekRel( 2 );
+
+ // read all font information
+ rSt.Read( pA, rFib.lcbSttbfffn - 2 );
+
+ if( bVer67 )
+ {
+ // try to figure out how many fonts are defined here
+ nMax = 0;
+ long nLeft = rFib.lcbSttbfffn - 2;
+ for(;;)
+ {
+ short nNextSiz;
+
+ nNextSiz = p->cbFfnM1 + 1;
+ if( nNextSiz > nLeft )
+ break;
+ nMax++;
+ nLeft -= nNextSiz;
+ if( nLeft < 1 ) // can we read the given ammount of bytes ?
+ break;
+ // increase p by nNextSiz Bytes
+ p = (WW8_FFN *)( ( (char*)p ) + nNextSiz );
+ }
+ }
+
+ if( nMax )
+ {
+ // allocate Index Array
+ pFontA = new WW8_FFN[ nMax ];
+ p = pFontA;
+
+ if( bVer67 )
+ {
+ WW8_FFN_Ver6* pVer6 = (WW8_FFN_Ver6*)pA;
+ for(USHORT i=0; i<nMax; ++i, ++p)
+ {
+ p->cbFfnM1 = pVer6->cbFfnM1;
+ p->prg = pVer6->prg;
+ p->fTrueType = pVer6->fTrueType;
+ p->ff = pVer6->ff;
+ p->wWeight = SVBT16ToShort( *(SVBT16*)&pVer6->wWeight );
+ p->chs = pVer6->chs;
+ p->ibszAlt = pVer6->ibszAlt;
+ p->sFontname = pVer6->szFfn;
+ pVer6 = (WW8_FFN_Ver6*)( ( (char*)pVer6 ) + pVer6->cbFfnM1 + 1 );
+ }
+ }
+ else
+ {
+ WW8_FFN_Ver8* pVer8 = (WW8_FFN_Ver8*)pA;
+ char c2;
+ for(USHORT i=0; i<nMax; ++i, ++p)
+ {
+ p->cbFfnM1 = pVer8->cbFfnM1;
+ c2 = *(((char*)pVer8) + 1);
+
+ p->prg = c2 & 0x02;
+ p->fTrueType = (c2 & 0x04) >> 2;
+ // ein Reserve-Bit ueberspringen
+ p->ff = (c2 & 0x70) >> 4;
+
+ p->wWeight = SVBT16ToShort( *(SVBT16*)&pVer8->wWeight );
+ p->chs = pVer8->chs;
+ p->ibszAlt = pVer8->ibszAlt;
+
+ ::lcl_UIn16ToWChar( p->sFontname, pVer8->szFfn );
+
+ // Zeiger auf Ursprungsarray einen Font nach hinten setzen
+// (char*)pVer8 += pVer8->cbFfnM1 + 1;
+ pVer8 = (WW8_FFN_Ver8*)( ( (char*)pVer8 ) + pVer8->cbFfnM1 + 1 );
+ }
+ }
+ }
+ delete pA;
+}
+
+const WW8_FFN* WW8Fonts::GetFont( USHORT nNum ) const
+{
+ if( !pFontA || nNum > nMax )
+ return 0;
+
+ return &pFontA[ nNum ];
+}
+
+
+
+//-----------------------------------------
+
+
+// Suche zu einem Header / Footer den Index in der WW-Liste von Headern / Footern
+//
+// Pferdefuesse bei WinWord6 und -7:
+// 1) Am Anfang des Einlesens muss WWPLCF_HdFt mit Fib und Dop konstruiert werden
+// 2) Der Haupttext muss sequentiell ueber alle Sections gelesen werden
+// 3) Fuer jedes vorkommende Header / Footer - Attribut des Haupttextes
+// ( Darf pro Section maximal eins sein ) muss UpdateIndex() genau einmal
+// mit dem Parameter des Attributes gerufen werden. Dieser Aufruf muss *nach*
+// dem letzten Aufruf von GetTextPos() passieren.
+// 4) GetTextPos() darf mit genau einem der obenstehen WW_... aufgerufen werden
+// ( nicht verodern ! )
+// -> dann liefert GetTextPos() vielleicht auch ein richtiges Ergebnis
+
+WW8PLCF_HdFt::WW8PLCF_HdFt( SvStream* pSt, WW8Fib& rFib, WW8Dop& rDop )
+: aPLCF( pSt, rFib.fcPlcfhdd , rFib.lcbPlcfhdd , 0 )
+{
+ nIdxOffset = 0;
+
+// for( BYTE nI = 0x80; nI >= 0x20; nI >>= 1 ) // Beschreibung stimmt nicht
+
+ for( BYTE nI = 0x1; nI <= 0x4; nI <<= 1 ) // Vorsicht: Beschreibung stimmt nicht
+ if( nI & rDop.grpfIhdt ) // Bit gesetzt ?
+ nIdxOffset++;
+
+ nTextOfs = rFib.ccpText + rFib.ccpFtn; // Groesse des Haupttextes
+ // und der Fussnoten
+}
+
+BOOL WW8PLCF_HdFt::GetTextPos( BYTE grpfIhdt, BYTE nWhich, WW8_CP& rStart, long& rLen )
+{
+ BYTE nI = 0x1;
+ short nIdx = nIdxOffset;
+ while( TRUE ){
+ if( nI & nWhich )
+ break; // gefunden
+ if( grpfIhdt & nI )
+ nIdx++; // uninteressanter Header / Footer
+ nI <<= 1; // naechstes Bit testen
+ if( nI > 0x20 )
+ return FALSE; // nicht gefunden
+ }
+ // nIdx ist HdFt-Index
+ WW8_CP ende;
+ void* pData;
+
+ aPLCF.SetIdx( nIdx ); // dann suche passenden CP
+ aPLCF.Get( rStart, ende, pData );
+ rLen = ende - rStart;
+// Der letzte Header/Footer hat eine Laenge, die um 1 Zeichen zu gross ist
+// ( folgendes CR ). Um diesen passend zu kuerzen muesste man den Index
+// dieses K/F-Textes finden ( es ist nicht der letzte im PLCF ! ).
+// if( (long)aPLCF.GetIdx() == aPLCF.GetIMax() ) // Falsch!
+// rLen--; // Letztes Element ist 1 zu gross
+ aPLCF++;
+ return TRUE;
+}
+
+BOOL WW8PLCF_HdFt::GetTextPosExact( short nIdx, WW8_CP& rStart, long& rLen )
+{
+ WW8_CP ende;
+ void* pData;
+
+ aPLCF.SetIdx( nIdx ); // dann suche passenden CP
+ aPLCF.Get( rStart, ende, pData );
+ rLen = ende - rStart;
+// Der letzte Header/Footer hat eine Laenge, die um 1 Zeichen zu gross ist
+// ( folgendes CR ). Um diesen passend zu kuerzen muesste man den Index
+// dieses K/F-Textes finden ( es ist nicht der letzte im PLCF ! ).
+// if( (long)aPLCF.GetIdx() == aPLCF.GetIMax() ) // Falsch!
+// rLen--; // Letztes Element ist 1 zu gross
+ return TRUE;
+}
+
+void WW8PLCF_HdFt::UpdateIndex( BYTE grpfIhdt )
+{
+ for( BYTE nI = 0x1; nI <= 0x20; nI <<= 1 ) // Vorsicht: Beschreibung stimmt nicht
+ if( nI & grpfIhdt )
+ nIdxOffset++;
+}
+
+//-----------------------------------------
+// WW8Dop
+//-----------------------------------------
+
+
+
+WW8Dop::WW8Dop( SvStream& rSt, INT16 nFib, INT32 nPos, INT32 nSize )
+{
+ BYTE* pData = new BYTE[ 500 ];
+ BYTE* pDataPtr = pData;
+ UINT32 nRead = 500 < nSize ? 500 : nSize;
+ rSt.Seek( nPos );
+ if( 2 > nSize || nRead != rSt.Read( pData, nRead ))
+ {
+ memset( &nDataStart, 0, (&nDataEnd - &nDataStart) );
+ nDopError = ERR_SWG_READ_ERROR; // Error melden
+ }
+ else
+ {
+ if( 500 > nRead )
+ memset( pData + nRead, 0, 500 - nRead );
+
+ // dann mal die Daten auswerten
+ UINT32 a32Bit;
+ UINT16 a16Bit;
+ BYTE a8Bit;
+
+ a16Bit = Get_UShort( pData );
+ fFacingPages = 0 != ( a16Bit & 0x0001 ) ;
+ fWidowControl = 0 != ( a16Bit & 0x0002 ) ;
+ fPMHMainDoc = 0 != ( a16Bit & 0x0004 ) ;
+ grfSuppression = ( a16Bit & 0x0018 ) >> 3;
+ fpc = ( a16Bit & 0x0060 ) >> 5;
+ grpfIhdt = ( a16Bit & 0xff00 ) >> 8;
+
+ a16Bit = Get_UShort( pData );
+ rncFtn = a16Bit & 0x0003 ;
+ nFtn = ( a16Bit & ~0x0003 ) >> 2 ;
+
+ a8Bit = Get_Byte( pData );
+ fOutlineDirtySave = 0 != ( a8Bit & 0x01 );
+
+ a8Bit = Get_Byte( pData );
+ fOnlyMacPics = 0 != ( a8Bit & 0x01 );
+ fOnlyWinPics = 0 != ( a8Bit & 0x02 );
+ fLabelDoc = 0 != ( a8Bit & 0x04 );
+ fHyphCapitals = 0 != ( a8Bit & 0x08 );
+ fAutoHyphen = 0 != ( a8Bit & 0x10 );
+ fFormNoFields = 0 != ( a8Bit & 0x20 );
+ fLinkStyles = 0 != ( a8Bit & 0x40 );
+ fRevMarking = 0 != ( a8Bit & 0x80 );
+
+ a8Bit = Get_Byte( pData );
+ fBackup = 0 != ( a8Bit & 0x01 );
+ fExactCWords = 0 != ( a8Bit & 0x02 );
+ fPagHidden = 0 != ( a8Bit & 0x04 );
+ fPagResults = 0 != ( a8Bit & 0x08 );
+ fLockAtn = 0 != ( a8Bit & 0x10 );
+ fMirrorMargins = 0 != ( a8Bit & 0x20 );
+ fReadOnlyRecommended = 0 != ( a8Bit & 0x40 );
+ fDfltTrueType = 0 != ( a8Bit & 0x80 );
+
+ a8Bit = Get_Byte( pData );
+ fPagSuppressTopSpacing = 0 != ( a8Bit & 0x01 );
+ fProtEnabled = 0 != ( a8Bit & 0x02 );
+ fDispFormFldSel = 0 != ( a8Bit & 0x04 );
+ fRMView = 0 != ( a8Bit & 0x08 );
+ fRMPrint = 0 != ( a8Bit & 0x10 );
+ fWriteReservation = 0 != ( a8Bit & 0x20 );
+ fLockRev = 0 != ( a8Bit & 0x40 );
+ fEmbedFonts = 0 != ( a8Bit & 0x80 );
+
+
+ a8Bit = Get_Byte( pData );
+ copts_fNoTabForInd = 0 != ( a8Bit & 0x01 );
+ copts_fNoSpaceRaiseLower = 0 != ( a8Bit & 0x02 );
+ copts_fSupressSpbfAfterPgBrk = 0 != ( a8Bit & 0x04 );
+ copts_fWrapTrailSpaces = 0 != ( a8Bit & 0x08 );
+ copts_fMapPrintTextColor = 0 != ( a8Bit & 0x10 );
+ copts_fNoColumnBalance = 0 != ( a8Bit & 0x20 );
+ copts_fConvMailMergeEsc = 0 != ( a8Bit & 0x40 );
+ copts_fSupressTopSpacing = 0 != ( a8Bit & 0x80 );
+
+ a8Bit = Get_Byte( pData );
+ copts_fOrigWordTableRules = 0 != ( a8Bit & 0x01 );
+ copts_fTransparentMetafiles = 0 != ( a8Bit & 0x02 );
+ copts_fShowBreaksInFrames = 0 != ( a8Bit & 0x04 );
+ copts_fSwapBordersFacingPgs = 0 != ( a8Bit & 0x08 );
+
+ dxaTab = Get_Short( pData );
+ wSpare = Get_UShort( pData );
+ dxaHotZ = Get_UShort( pData );
+ cConsecHypLim = Get_UShort( pData );
+ wSpare2 = Get_UShort( pData );
+ dttmCreated = Get_Long( pData );
+ dttmRevised = Get_Long( pData );
+ dttmLastPrint = Get_Long( pData );
+ nRevision = Get_Short( pData );
+ tmEdited = Get_Long( pData );
+ cWords = Get_Long( pData );
+ cCh = Get_Long( pData );
+ cPg = Get_Short( pData );
+ cParas = Get_Long( pData );
+
+ a16Bit = Get_UShort( pData );
+ rncEdn = a16Bit & 0x0003 ;
+ nEdn = ( a16Bit & ~0x0003 ) >> 2;
+
+ a16Bit = Get_UShort( pData );
+ epc = a16Bit & 0x0003 ;
+ nfcFtnRef = ( a16Bit & 0x003c ) >> 2;
+ nfcEdnRef = ( a16Bit & 0x03c0 ) >> 6;
+ fPrintFormData = 0 != ( a16Bit & 0x0400 );
+ fSaveFormData = 0 != ( a16Bit & 0x0800 );
+ fShadeFormData = 0 != ( a16Bit & 0x1000 );
+ fWCFtnEdn = 0 != ( a16Bit & 0x8000 );
+
+ cLines = Get_Long( pData );
+ cWordsFtnEnd = Get_Long( pData );
+ cChFtnEdn = Get_Long( pData );
+ cPgFtnEdn = Get_Short( pData );
+ cParasFtnEdn = Get_Long( pData );
+ cLinesFtnEdn = Get_Long( pData );
+ lKeyProtDoc = Get_Long( pData );
+
+ a16Bit = Get_UShort( pData );
+ wvkSaved = a16Bit & 0x0007 ;
+ wScaleSaved = ( a16Bit & 0x0ff8 ) >> 3 ;
+ zkSaved = ( a16Bit & 0x3000 ) >> 12;
+
+ /*
+ bei nFib >= 103 gehts weiter:
+ */
+ if( nFib >= 103 )
+ {
+ a32Bit = Get_ULong( pData );
+ fNoTabForInd = ( a32Bit & 0x00000001 ) ;
+ fNoSpaceRaiseLower = ( a32Bit & 0x00000002 ) >> 1 ;
+ fSupressSpbfAfterPageBreak = ( a32Bit & 0x00000004 ) >> 2 ;
+ fWrapTrailSpaces = ( a32Bit & 0x00000008 ) >> 3 ;
+ fMapPrintTextColor = ( a32Bit & 0x00000010 ) >> 4 ;
+ fNoColumnBalance = ( a32Bit & 0x00000020 ) >> 5 ;
+ fConvMailMergeEsc = ( a32Bit & 0x00000040 ) >> 6 ;
+ fSupressTopSpacing = ( a32Bit & 0x00000080 ) >> 7 ;
+ fOrigWordTableRules = ( a32Bit & 0x00000100 ) >> 8 ;
+ fTransparentMetafiles = ( a32Bit & 0x00000200 ) >> 9 ;
+ fShowBreaksInFrames = ( a32Bit & 0x00000400 ) >> 10 ;
+ fSwapBordersFacingPgs = ( a32Bit & 0x00000800 ) >> 11 ;
+ fSuppressTopSpacingMac5 = ( a32Bit & 0x00010000 ) >> 16 ;
+ fTruncDxaExpand = ( a32Bit & 0x00020000 ) >> 17 ;
+ fPrintBodyBeforeHdr = ( a32Bit & 0x00040000 ) >> 18 ;
+ fNoLeading = ( a32Bit & 0x00080000 ) >> 19 ;
+ fMWSmallCaps = ( a32Bit & 0x00200000 ) >> 21 ;
+ }
+
+ /*
+ bei nFib > 105 gehts weiter:
+ */
+ if( nFib > 105 )
+ {
+ adt = Get_Short( pData );
+
+ memcpy( &doptypography, pData, sizeof( WW8_DOPTYPOGRAPHY ));
+ pData += sizeof( WW8_DOPTYPOGRAPHY );
+
+ memcpy( &dogrid, pData, sizeof( WW8_DOGRID ));
+ pData += sizeof( WW8_DOGRID );
+
+ a16Bit = Get_UShort( pData );
+ // die untersten 9 Bit sind uninteressant
+ fHtmlDoc = ( a16Bit & 0x0200 ) >> 9 ;
+ fSnapBorder = ( a16Bit & 0x0800 ) >> 11 ;
+ fIncludeHeader = ( a16Bit & 0x1000 ) >> 12 ;
+ fIncludeFooter = ( a16Bit & 0x2000 ) >> 13 ;
+ fForcePageSizePag = ( a16Bit & 0x4000 ) >> 14 ;
+ fMinFontSizePag = ( a16Bit & 0x8000 ) >> 15 ;
+
+ a16Bit = Get_UShort( pData );
+ fHaveVersions = 0 != ( a16Bit & 0x0001 );
+ fAutoVersion = 0 != ( a16Bit & 0x0002 );
+
+ pData += 12;
+
+ cChWS = Get_Long( pData );
+ cChWSFtnEdn = Get_Long( pData );
+ grfDocEvents = Get_Long( pData );
+
+ pData += 4+30+8;
+
+ cDBC = Get_Long( pData );
+ cDBCFtnEdn = Get_Long( pData );
+
+ pData += 1 * sizeof( long );
+
+ nfcFtnRef = Get_Short( pData );
+ nfcEdnRef = Get_Short( pData );
+ hpsZoonFontPag = Get_Short( pData );
+ dywDispPag = Get_Short( pData );
+ }
+ }
+ delete pDataPtr;
+}
+
+WW8Dop::WW8Dop()
+{
+ // erstmal alles auf 0 defaulten
+ memset( &nDataStart, 0, (&nDataEnd - &nDataStart) );
+
+ fWidowControl = 1;
+ fpc = 1;
+ nFtn = 1;
+ fOutlineDirtySave = 1;
+ fHyphCapitals = 1;
+ fBackup = 1;
+ fPagHidden = 1;
+ fPagResults = 1;
+ fDfltTrueType = 1;
+ fRMView = 1;
+ fRMPrint = 1;
+ dxaTab = 0x2d0;
+ dxaHotZ = 0x168;
+ dttmCreated = 0x45FBAC69;
+ dttmRevised = 0x45FBAC69;
+ nRevision = 1;
+ nEdn = 1;
+
+ epc = 3;
+ nfcEdnRef = 2;
+ fShadeFormData = 1;
+
+ wvkSaved = 2;
+ wScaleSaved = 100;
+ zkSaved = 0;
+
+ lvl = 9;
+ fIncludeHeader = 1;
+ fIncludeFooter = 1;
+
+ cChWS = /**!!**/ 0;
+ cChWSFtnEdn = /**!!**/ 0;
+
+ cDBC = /**!!**/ 0;
+ cDBCFtnEdn = /**!!**/ 0;
+}
+
+BOOL WW8Dop::Write( SvStream& rStrm, WW8Fib& rFib )
+{
+ INT32 nLen = 8 == rFib.nVersion ? 500 : 84;
+ rFib.fcDop = rStrm.Tell();
+ rFib.lcbDop = nLen;
+
+ BYTE aData[ 500 ];
+ memset( aData, 0, 500 );
+ BYTE* pData = aData;
+
+ // dann mal die Daten auswerten
+ UINT32 a32Bit;
+ UINT16 a16Bit;
+ BYTE a8Bit;
+
+ a16Bit = 0;
+ if( fFacingPages ) a16Bit |= 0x0001;
+ if( fWidowControl ) a16Bit |= 0x0002;
+ if( fPMHMainDoc ) a16Bit |= 0x0004;
+ a16Bit |= ( 0x0018 & (grfSuppression << 3));
+ a16Bit |= ( 0x0060 & (fpc << 5));
+ a16Bit |= ( 0xff00 & (grpfIhdt << 8));
+ Set_UInt16( pData, a16Bit );
+
+ a16Bit = 0;
+ a16Bit |= ( 0x0003 & rncFtn );
+ a16Bit |= ( ~0x0003 & (nFtn << 2));
+ Set_UInt16( pData, a16Bit );
+
+ a8Bit = 0;
+ if( fOutlineDirtySave ) a8Bit |= 0x01;
+ Set_UInt8( pData, a8Bit );
+
+ a8Bit = 0;
+ if( fOnlyMacPics ) a8Bit |= 0x01;
+ if( fOnlyWinPics ) a8Bit |= 0x02;
+ if( fLabelDoc ) a8Bit |= 0x04;
+ if( fHyphCapitals ) a8Bit |= 0x08;
+ if( fAutoHyphen ) a8Bit |= 0x10;
+ if( fFormNoFields ) a8Bit |= 0x20;
+ if( fLinkStyles ) a8Bit |= 0x40;
+ if( fRevMarking ) a8Bit |= 0x80;
+ Set_UInt8( pData, a8Bit );
+
+ a8Bit = 0;
+ if( fBackup ) a8Bit |= 0x01;
+ if( fExactCWords ) a8Bit |= 0x02;
+ if( fPagHidden ) a8Bit |= 0x04;
+ if( fPagResults ) a8Bit |= 0x08;
+ if( fLockAtn ) a8Bit |= 0x10;
+ if( fMirrorMargins ) a8Bit |= 0x20;
+ if( fReadOnlyRecommended ) a8Bit |= 0x40;
+ if( fDfltTrueType ) a8Bit |= 0x80;
+ Set_UInt8( pData, a8Bit );
+
+ a8Bit = 0;
+ if( fPagSuppressTopSpacing ) a8Bit |= 0x01;
+ if( fProtEnabled ) a8Bit |= 0x02;
+ if( fDispFormFldSel ) a8Bit |= 0x04;
+ if( fRMView ) a8Bit |= 0x08;
+ if( fRMPrint ) a8Bit |= 0x10;
+ if( fWriteReservation ) a8Bit |= 0x20;
+ if( fLockRev ) a8Bit |= 0x40;
+ if( fEmbedFonts ) a8Bit |= 0x80;
+ Set_UInt8( pData, a8Bit );
+
+
+ a8Bit = 0;
+ if( copts_fNoTabForInd ) a8Bit |= 0x01;
+ if( copts_fNoSpaceRaiseLower ) a8Bit |= 0x02;
+ if( copts_fSupressSpbfAfterPgBrk ) a8Bit |= 0x04;
+ if( copts_fWrapTrailSpaces ) a8Bit |= 0x08;
+ if( copts_fMapPrintTextColor ) a8Bit |= 0x10;
+ if( copts_fNoColumnBalance ) a8Bit |= 0x20;
+ if( copts_fConvMailMergeEsc ) a8Bit |= 0x40;
+ if( copts_fSupressTopSpacing ) a8Bit |= 0x80;
+ Set_UInt8( pData, a8Bit );
+
+ a8Bit = 0;
+ if( copts_fOrigWordTableRules ) a8Bit |= 0x01;
+ if( copts_fTransparentMetafiles ) a8Bit |= 0x02;
+ if( copts_fShowBreaksInFrames ) a8Bit |= 0x04;
+ if( copts_fSwapBordersFacingPgs ) a8Bit |= 0x08;
+ Set_UInt8( pData, a8Bit );
+
+ Set_UInt16( pData, dxaTab );
+ Set_UInt16( pData, wSpare );
+ Set_UInt16( pData, dxaHotZ );
+ Set_UInt16( pData, cConsecHypLim );
+ Set_UInt16( pData, wSpare2 );
+ Set_UInt32( pData, dttmCreated );
+ Set_UInt32( pData, dttmRevised );
+ Set_UInt32( pData, dttmLastPrint );
+ Set_UInt16( pData, nRevision );
+ Set_UInt32( pData, tmEdited );
+ Set_UInt32( pData, cWords );
+ Set_UInt32( pData, cCh );
+ Set_UInt16( pData, cPg );
+ Set_UInt32( pData, cParas );
+
+ a16Bit = 0;
+ a16Bit |= ( 0x0003 & rncEdn );
+ a16Bit |= (~0x0003 & ( nEdn << 2));
+ Set_UInt16( pData, a16Bit );
+
+ a16Bit = 0;
+ a16Bit |= (0x0003 & epc );
+ a16Bit |= (0x003c & (nfcFtnRef << 2));
+ a16Bit |= (0x03c0 & (nfcEdnRef << 6));
+ if( fPrintFormData ) a16Bit |= 0x0400;
+ if( fSaveFormData ) a16Bit |= 0x0800;
+ if( fShadeFormData ) a16Bit |= 0x1000;
+ if( fWCFtnEdn ) a16Bit |= 0x8000;
+ Set_UInt16( pData, a16Bit );
+
+ Set_UInt32( pData, cLines );
+ Set_UInt32( pData, cWordsFtnEnd );
+ Set_UInt32( pData, cChFtnEdn );
+ Set_UInt16( pData, cPgFtnEdn );
+ Set_UInt32( pData, cParasFtnEdn );
+ Set_UInt32( pData, cLinesFtnEdn );
+ Set_UInt32( pData, lKeyProtDoc );
+
+ a16Bit = 0;
+ if( wvkSaved ) a16Bit |= 0x0007;
+ a16Bit |= (0x0ff8 & (wScaleSaved << 3));
+ a16Bit |= (0x3000 & (zkSaved << 12));
+ Set_UInt16( pData, a16Bit );
+
+ if( 8 == rFib.nVersion )
+ {
+ a32Bit = 0;
+ if( fNoTabForInd ) a32Bit |= 0x00000001;
+ if( fNoSpaceRaiseLower ) a32Bit |= 0x00000002;
+ if( fSupressSpbfAfterPageBreak ) a32Bit |= 0x00000004;
+ if( fWrapTrailSpaces ) a32Bit |= 0x00000008;
+ if( fMapPrintTextColor ) a32Bit |= 0x00000010;
+ if( fNoColumnBalance ) a32Bit |= 0x00000020;
+ if( fConvMailMergeEsc ) a32Bit |= 0x00000040;
+ if( fSupressTopSpacing ) a32Bit |= 0x00000080;
+ if( fOrigWordTableRules ) a32Bit |= 0x00000100;
+ if( fTransparentMetafiles ) a32Bit |= 0x00000200;
+ if( fShowBreaksInFrames ) a32Bit |= 0x00000400;
+ if( fSwapBordersFacingPgs ) a32Bit |= 0x00000800;
+ if( fSuppressTopSpacingMac5 ) a32Bit |= 0x00010000;
+ if( fTruncDxaExpand ) a32Bit |= 0x00020000;
+ if( fPrintBodyBeforeHdr ) a32Bit |= 0x00040000;
+ if( fNoLeading ) a32Bit |= 0x00080000;
+ if( fMWSmallCaps ) a32Bit |= 0x00200000;
+ Set_UInt32( pData, a32Bit );
+
+ Set_UInt16( pData, adt );
+
+ memcpy( pData, &doptypography, sizeof( WW8_DOPTYPOGRAPHY ));
+ pData += sizeof( WW8_DOPTYPOGRAPHY );
+
+ memcpy( pData, &dogrid, sizeof( WW8_DOGRID ));
+ pData += sizeof( WW8_DOGRID );
+
+ a16Bit = 0x12; // lvl auf 9 setzen
+ if( fHtmlDoc ) a16Bit |= 0x0200;
+ if( fSnapBorder ) a16Bit |= 0x0800;
+ if( fIncludeHeader ) a16Bit |= 0x1000;
+ if( fIncludeFooter ) a16Bit |= 0x2000;
+ if( fForcePageSizePag ) a16Bit |= 0x4000;
+ if( fMinFontSizePag ) a16Bit |= 0x8000;
+ Set_UInt16( pData, a16Bit );
+
+ a16Bit = 0;
+ if( fHaveVersions ) a16Bit |= 0x0001;
+ if( fAutoVersion ) a16Bit |= 0x0002;
+ Set_UInt16( pData, a16Bit );
+
+ pData += 12;
+
+ Set_UInt32( pData, cChWS );
+ Set_UInt32( pData, cChWSFtnEdn );
+ Set_UInt32( pData, grfDocEvents );
+
+ pData += 4+30+8;
+
+ Set_UInt32( pData, cDBC );
+ Set_UInt32( pData, cDBCFtnEdn );
+
+ pData += 1 * sizeof( long );
+
+ Set_UInt16( pData, nfcFtnRef );
+ Set_UInt16( pData, nfcEdnRef );
+ Set_UInt16( pData, hpsZoonFontPag );
+ Set_UInt16( pData, dywDispPag );
+ }
+ rStrm.Write( aData, nLen );
+ return 0 == rStrm.GetError();
+}
+
+/***************************************************************************
+# Array zum Bestimmen der Laenge der SPRMs
+#**************************************************************************/
+
+
+/*
+ Werte fuer SprmInfo.nVari
+*/
+#define L_FIX 0
+#define L_VAR 1
+#define L_VAR2 2
+
+struct SprmInfo
+{
+ USHORT nId;
+ BYTE nLen : 6;
+ BYTE nVari: 2;
+};
+
+
+/*
+ Zweck: Laenge und Parameter-Offset eines Sprm erfahren
+*/
+static SprmInfo aWwSprmTab[] = {
+ 0, 0, L_FIX, // "Default-sprm", // wird uebersprungen
+ 2, 2, L_FIX, // "sprmPIstd", // pap.istd (style code)
+ 3, 3, L_VAR, // "sprmPIstdPermute", // pap.istd permutation
+ 4, 1, L_FIX, // "sprmPIncLv1", // pap.istddifference
+ 5, 1, L_FIX, // "sprmPJc", // pap.jc (justification)
+ 6, 1, L_FIX, // "sprmPFSideBySide", // pap.fSideBySide
+ 7, 1, L_FIX, // "sprmPFKeep", // pap.fKeep
+ 8, 1, L_FIX, // "sprmPFKeepFollow ", // pap.fKeepFollow
+ 9, 1, L_FIX, // "sprmPPageBreakBefore", // pap.fPageBreakBefore
+
+ 10, 1, L_FIX, // "sprmPBrcl", // pap.brcl
+ 11, 1, L_FIX, // "sprmPBrcp ", // pap.brcp
+ 12, 0, L_VAR, // "sprmPAnld", // pap.anld (ANLD structure)
+ 13, 1, L_FIX, // "sprmPNLvlAnm", // pap.nLvlAnm nn
+ 14, 1, L_FIX, // "sprmPFNoLineNumb", //ap.fNoLnn
+
+
+ // ???
+ 15, 0, L_VAR, // "?sprmPChgTabsPapx", // pap.itbdMac, ...
+
+
+ 16, 2, L_FIX, // "sprmPDxaRight", // pap.dxaRight
+ 17, 2, L_FIX, // "sprmPDxaLeft", // pap.dxaLeft
+ 18, 2, L_FIX, // "sprmPNest", // pap.dxaLeft
+ 19, 2, L_FIX, // "sprmPDxaLeft1", // pap.dxaLeft1
+
+ 20, 4, L_FIX, // "sprmPDyaLine", // pap.lspd an LSPD
+ 21, 2, L_FIX, // "sprmPDyaBefore", // pap.dyaBefore
+ 22, 2, L_FIX, // "sprmPDyaAfter", // pap.dyaAfter
+
+
+ // ???
+ 23, 0, L_VAR, // "?sprmPChgTabs", // pap.itbdMac, pap.rgdxaTab, ...
+
+
+ 24, 1, L_FIX, // "sprmPFInTable", // pap.fInTable
+ 25, 1, L_FIX, // "sprmPTtp", // pap.fTtp
+ 26, 2, L_FIX, // "sprmPDxaAbs", // pap.dxaAbs
+ 27, 2, L_FIX, // "sprmPDyaAbs", // pap.dyaAbs
+ 28, 2, L_FIX, // "sprmPDxaWidth", // pap.dxaWidth
+ 29, 1, L_FIX, // "sprmPPc", // pap.pcHorz, pap.pcVert
+
+ 30, 2, L_FIX, // "sprmPBrcTop10", // pap.brcTop BRC10
+ 31, 2, L_FIX, // "sprmPBrcLeft10", // pap.brcLeft BRC10
+ 32, 2, L_FIX, // "sprmPBrcBottom10", // pap.brcBottom BRC10
+ 33, 2, L_FIX, // "sprmPBrcRight10", // pap.brcRight BRC10
+ 34, 2, L_FIX, // "sprmPBrcBetween10", // pap.brcBetween BRC10
+ 35, 2, L_FIX, // "sprmPBrcBar10", // pap.brcBar BRC10
+ 36, 2, L_FIX, // "sprmPFromText10", // pap.dxaFromText dxa
+ 37, 1, L_FIX, // "sprmPWr", // pap.wr wr
+ 38, 2, L_FIX, // "sprmPBrcTop", // pap.brcTop BRC
+ 39, 2, L_FIX, // "sprmPBrcLeft", // pap.brcLeft BRC
+
+ 40, 2, L_FIX, // "sprmPBrcBottom", // pap.brcBottom BRC
+ 41, 2, L_FIX, // "sprmPBrcRight", // pap.brcRight BRC
+ 42, 2, L_FIX, // "sprmPBrcBetween", // pap.brcBetween BRC
+ 43, 2, L_FIX, // "sprmPBrcBar",//pap.brcBar BRC word
+ 44, 1, L_FIX, // "sprmPFNoAutoHyph",//pap.fNoAutoHyph
+ 45, 2, L_FIX, // "sprmPWHeightAbs",//pap.wHeightAbs w
+ 46, 2, L_FIX, // "sprmPDcs",//pap.dcs DCS
+ 47, 2, L_FIX, // "sprmPShd",//pap.shd SHD
+ 48, 2, L_FIX, // "sprmPDyaFromText",//pap.dyaFromText dya
+ 49, 2, L_FIX, // "sprmPDxaFromText",//pap.dxaFromText dxa
+
+ 50, 1, L_FIX, // "sprmPFLocked", // pap.fLocked 0 or 1 byte
+
+ 51, 1, L_FIX, // "sprmPFWidowControl", // pap.fWidowControl 0 or 1 byte
+
+
+ // ???
+ 52, 0, L_FIX, // "?sprmPRuler 52", //???
+
+
+ 65, 1, L_FIX, // "sprmCFStrikeRM", // chp.fRMarkDel 1 or 0 bit
+ 66, 1, L_FIX, // "sprmCFRMark", // chp.fRMark 1 or 0 bit
+ 67, 1, L_FIX, // "sprmCFFldVanish", // chp.fFldVanish 1 or 0 bit
+ 68, 0, L_VAR, // "sprmCPicLocation", // chp.fcPic and chp.fSpec
+ 69, 2, L_FIX, // "sprmCIbstRMark", // chp.ibstRMark index into sttbRMark
+
+ 70, 4, L_FIX, // "sprmCDttmRMark", // chp.dttm DTTM long
+ 71, 1, L_FIX, // "sprmCFData", // chp.fData 1 or 0 bit
+ 72, 2, L_FIX, // "sprmCRMReason", // chp.idslRMReason an index to a table
+ 73, 3, L_FIX, // "sprmCChse", // chp.fChsDiff and chp.chse see below 3 bytes
+ 74, 0, L_VAR, // "sprmCSymbol", // chp.fSpec, chp.chSym and chp.ftcSym
+ 75, 1, L_FIX, // "sprmCFOle2", // chp.fOle2 1 or 0 bit
+
+ 80, 2, L_FIX, // "sprmCIstd", // chp.istd istd, see stylesheet definition short
+ 81, 0, L_VAR, // "sprmCIstdPermute", // chp.istd permutation vector (see below)
+ 82, 0, L_VAR, // "sprmCDefault", // whole CHP (see below) none variable length
+ 83, 0, L_FIX, // "sprmCPlain", // whole CHP (see below) none 0
+ 85, 1, L_FIX, // "sprmCFBold", // chp.fBold 0,1, 128, or 129 (see below) byte
+ 86, 1, L_FIX, //"sprmCFItalic", // chp.fItalic 0,1, 128, or 129 (see below) byte
+ 87, 1, L_FIX, // "sprmCFStrike", // chp.fStrike 0,1, 128, or 129 (see below) byte
+ 88, 1, L_FIX, // "sprmCFOutline", // chp.fOutline 0,1, 128, or 129 (see below) byte
+ 89, 1, L_FIX, // "sprmCFShadow", // chp.fShadow 0,1, 128, or 129 (see below) byte
+
+ 90, 1, L_FIX, // "sprmCFSmallCaps", // chp.fSmallCaps 0,1, 128, or 129 (see below) byte
+ 91, 1, L_FIX, // "sprmCFCaps", // chp.fCaps 0,1, 128, or 129 (see below) byte
+ 92, 1, L_FIX, // "sprmCFVanish", // chp.fVanish 0,1, 128, or 129 (see below) byte
+ 93, 2, L_FIX, // "sprmCFtc", // chp.ftc ftc word
+ 94, 1, L_FIX, // "sprmCKul", // chp.kul kul byte
+ 95, 3, L_FIX, // "sprmCSizePos", // chp.hps, chp.hpsPos (see below) 3 bytes
+ 96, 2, L_FIX, // "sprmCDxaSpace", // chp.dxaSpace dxa word
+ 97, 2, L_FIX, // "sprmCLid", // chp.lid LID word
+ 98, 1, L_FIX, // "sprmCIco", // chp.ico ico byte
+ 99, 2, L_FIX, // "sprmCHps", // chp.hps hps !word!
+
+
+ 100, 1, L_FIX, // "sprmCHpsInc", // chp.hps (see below) byte
+ 101, 2, L_FIX, // "sprmCHpsPos", // chp.hpsPos hps !word!
+ 102, 1, L_FIX, // "sprmCHpsPosAdj", // chp.hpsPos hps (see below) byte
+
+
+ // ???
+ 103, 0, L_VAR, // "?sprmCMajority", // chp.fBold, chp.fItalic, chp.fSmallCaps, ...
+
+
+ 104, 1, L_FIX, // "sprmCIss", // chp.iss iss byte
+ 105, 0, L_VAR, // "sprmCHpsNew50", // chp.hps hps variable width, length always recorded as 2
+ 106, 0, L_VAR, // "sprmCHpsInc1", // chp.hps complex (see below) variable width, length always recorded as 2
+ 107, 2, L_FIX, // "sprmCHpsKern", // chp.hpsKern hps short
+ 108, 0, L_VAR, // "sprmCMajority50", // chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, ...
+ 109, 2, L_FIX, // "sprmCHpsMul", // chp.hps percentage to grow hps short
+
+ 110, 2, L_FIX, // "sprmCCondHyhen", // chp.ysri ysri short
+ 117, 1, L_FIX, // "sprmCFSpec", // chp.fSpec 1 or 0 bit
+ 118, 1, L_FIX, // "sprmCFObj", // chp.fObj 1 or 0 bit
+ 119, 1, L_FIX, // "sprmPicBrcl", // pic.brcl brcl (see PIC structure definition) byte
+
+ 120,12, L_VAR, // "sprmPicScale", // pic.mx, pic.my, pic.dxaCropleft,
+ 121, 2, L_FIX, // "sprmPicBrcTop", // pic.brcTop BRC word
+ 122, 2, L_FIX, // "sprmPicBrcLeft", // pic.brcLeft BRC word
+ 123, 2, L_FIX, // "sprmPicBrcBottom", // pic.brcBottom BRC word
+ 124, 2, L_FIX, // "sprmPicBrcRight", // pic.brcRight BRC word
+
+ 131, 1, L_FIX, // "sprmSScnsPgn", // sep.cnsPgn cns byte
+ 132, 1, L_FIX, // "sprmSiHeadingPgn", // sep.iHeadingPgn heading number level byte
+ 133, 0, L_VAR, // "sprmSOlstAnm", // sep.olstAnm OLST variable length
+ 136, 3, L_FIX, // "sprmSDxaColWidth", // sep.rgdxaColWidthSpacing complex (see below) 3 bytes
+ 137, 3, L_FIX, // "sprmSDxaColSpacing", // sep.rgdxaColWidthSpacing complex (see below) 3 bytes
+ 138, 1, L_FIX, // "sprmSFEvenlySpaced", // sep.fEvenlySpaced 1 or 0 byte
+ 139, 1, L_FIX, // "sprmSFProtected", // sep.fUnlocked 1 or 0 byte
+
+ 140, 2, L_FIX, // "sprmSDmBinFirst", // sep.dmBinFirst word
+ 141, 2, L_FIX, // "sprmSDmBinOther", // sep.dmBinOther word
+ 142, 1, L_FIX, // "sprmSBkc", // sep.bkc bkc byte
+ 143, 1, L_FIX, // "sprmSFTitlePage", // sep.fTitlePage 0 or 1 byte
+ 144, 2, L_FIX, // "sprmSCcolumns", // sep.ccolM1 # of cols - 1 word
+ 145, 2, L_FIX, // "sprmSDxaColumns", // sep.dxaColumns dxa word
+ 146, 1, L_FIX, // "sprmSFAutoPgn", // sep.fAutoPgn obsolete byte
+ 147, 1, L_FIX, // "sprmSNfcPgn", // sep.nfcPgn nfc byte
+ 148, 2, L_FIX, // "sprmSDyaPgn", // sep.dyaPgn dya short
+ 149, 2, L_FIX, // "sprmSDxaPgn", // sep.dxaPgn dya short
+
+
+ 150, 1, L_FIX, // "sprmSFPgnRestart", // sep.fPgnRestart 0 or 1 byte
+ 151, 1, L_FIX, // "sprmSFEndnote", // sep.fEndnote 0 or 1 byte
+ 152, 1, L_FIX, // "sprmSLnc", // sep.lnc lnc byte
+ 153, 1, L_FIX, // "sprmSGprfIhdt", // sep.grpfIhdt grpfihdt (see Headers and Footers topic) byte
+ 154, 2, L_FIX, // "sprmSNLnnMod", // sep.nLnnMod non-neg int. word
+ 155, 2, L_FIX, // "sprmSDxaLnn", // sep.dxaLnn dxa word
+ 156, 2, L_FIX, // "sprmSDyaHdrTop", // sep.dyaHdrTop dya word
+ 157, 2, L_FIX, // "sprmSDyaHdrBottom", // sep.dyaHdrBottom dya word
+ 158, 1, L_FIX, // "sprmSLBetween", // sep.fLBetween 0 or 1 byte
+ 159, 1, L_FIX, // "sprmSVjc", // sep.vjc vjc byte
+
+ 160, 2, L_FIX, // "sprmSLnnMin", // sep.lnnMin lnn word
+ 161, 2, L_FIX, // "sprmSPgnStart", // sep.pgnStart pgn word
+ 162, 1, L_FIX, // "sprmSBOrientation", // sep.dmOrientPage dm byte
+ 163, 0, L_FIX, // "?SprmSBCustomize 163", //???
+ 164, 2, L_FIX, // "sprmSXaPage", // sep.xaPage xa word
+ 165, 2, L_FIX, // "sprmSYaPage", // sep.yaPage ya word
+ 166, 2, L_FIX, // "sprmSDxaLeft", // sep.dxaLeft dxa word
+ 167, 2, L_FIX, // "sprmSDxaRight", // sep.dxaRight dxa word
+ 168, 2, L_FIX, // "sprmSDyaTop", // sep.dyaTop dya word
+ 169, 2, L_FIX, // "sprmSDyaBottom", // sep.dyaBottom dya word
+
+ 170, 2, L_FIX, // "sprmSDzaGutter", // sep.dzaGutter dza word
+ 171, 2, L_FIX, // "sprmSDMPaperReq", // sep.dmPaperReq dm word
+
+ 182, 2, L_FIX, // "sprmTJc", // tap.jc jc word (low order byte is significant)
+ 183, 2, L_FIX, // "sprmTDxaLeft", // tap.rgdxaCenter (see below) dxa word
+ 184, 2, L_FIX, // "sprmTDxaGapHalf", // tap.dxaGapHalf, tap.rgdxaCenter (see below) dxa word
+ 185, 1, L_FIX, // "sprmTFCantSplit", // tap.fCantSplit 1 or 0 byte
+ 186, 1, L_FIX, // "sprmTTableHeader", // tap.fTableHeader 1 or 0 byte
+ 187,12, L_FIX, // "sprmTTableBorders", // tap.rgbrcTable complex(see below) 12 bytes
+ 188, 0, L_VAR, // "sprmTDefTable10", // tap.rgdxaCenter, tap.rgtc complex (see below) variable length
+ 189, 2, L_FIX, // "sprmTDyaRowHeight", // tap.dyaRowHeight dya word
+
+ 190, 0, L_VAR2, // "sprmTDefTable", // tap.rgtc complex (see below)
+ 191, 1, L_VAR, // "sprmTDefTableShd", // tap.rgshd complex (see below)
+ 192, 4, L_FIX, // "sprmTTlp", // tap.tlp TLP 4 bytes
+ 193, 5, L_FIX, // "sprmTSetBrc", // tap.rgtc[].rgbrc complex (see below) 5 bytes
+ 194, 4, L_FIX, // "sprmTInsert", // tap.rgdxaCenter,tap.rgtc complex (see below) 4 bytes
+ 195, 2, L_FIX, // "sprmTDelete", // tap.rgdxaCenter, tap.rgtc complex (see below) word
+ 196, 4, L_FIX, // "sprmTDxaCol", // tap.rgdxaCenter complex (see below) 4 bytes
+ 197, 2, L_FIX, // "sprmTMerge", // tap.fFirstMerged, tap.fMerged complex (see below) word
+ 198, 2, L_FIX, // "sprmTSplit", // tap.fFirstMerged, tap.fMerged complex (see below) word
+ 199, 5, L_FIX, // "sprmTSetBrc10", // tap.rgtc[].rgbrc complex (see below) 5 bytes
+
+ 200, 4, L_FIX, // "sprmTSetShd", // tap.rgshd complex (see below) 4 bytes
+
+//- neue ab Ver8 ------------------------------------------------------------
+ /*
+ Die neuen Kodes werden einfach hier an die Liste angehaengt.
+ So kann ein und dieselbe Liste fuer Ver6 und Ver8 gemeinsam verwendet werden.
+ MS hat gluecklicherweise darauf geachtet, fuer Ver8 einen anderen Nummernkreis
+ zu nehmen als fuer Ver6-7.
+ */
+ 0x4600, 2, L_FIX, // "sprmPIstd" pap.istd;istd (style code);short;
+ 0xC601, 0, L_VAR, // "sprmPIstdPermute" pap.istd;permutation vector (see below);variable length;
+ 0x2602, 1, L_FIX, // "sprmPIncLvl" pap.istd, pap.lvl;difference between istd of base PAP and istd of PAP to be produced (see below);byte;
+ 0x2403, 1, L_FIX, // "sprmPJc" pap.jc;jc (justification);byte;
+ 0x2404, 1, L_FIX, // "sprmPFSideBySide" pap.fSideBySide;0 or 1;byte;
+ 0x2405, 1, L_FIX, // "sprmPFKeep" pap.fKeep;0 or 1;byte;
+ 0x2406, 1, L_FIX, // "sprmPFKeepFollow" pap.fKeepFollow;0 or 1;byte;
+ 0x2407, 1, L_FIX, // "sprmPFPageBreakBefore" pap.fPageBreakBefore;0 or 1;byte;
+ 0x2408, 1, L_FIX, // "sprmPBrcl" pap.brcl;brcl;byte;
+ 0x2409, 1, L_FIX, // "sprmPBrcp" pap.brcp;brcp;byte;
+ 0x260A, 1, L_FIX, // "sprmPIlvl" pap.ilvl;ilvl;byte;
+ 0x460B, 2, L_FIX, // "sprmPIlfo" pap.ilfo;ilfo (list index) ;short;
+ 0x240C, 1, L_FIX, // "sprmPFNoLineNumb" pap.fNoLnn;0 or 1;byte;
+ 0xC60D, 0, L_VAR, // "sprmPChgTabsPapx" pap.itbdMac, pap.rgdxaTab, pap.rgtbd;complex - see below;variable length
+ 0x840E, 2, L_FIX, // "sprmPDxaRight" pap.dxaRight;dxa;word;
+ 0x840F, 2, L_FIX, // "sprmPDxaLeft" pap.dxaLeft;dxa;word;
+ 0x4610, 2, L_FIX, // "sprmPNest" pap.dxaLeft;dxa-see below;word;
+ 0x8411, 2, L_FIX, // "sprmPDxaLeft1" pap.dxaLeft1;dxa;word;
+ 0x6412, 4, L_FIX, // "sprmPDyaLine" pap.lspd;an LSPD, a long word structure consisting of a short of dyaLine followed by a short of fMultLinespace - see below;long;
+ 0xA413, 2, L_FIX, // "sprmPDyaBefore" pap.dyaBefore;dya;word;
+ 0xA414, 2, L_FIX, // "sprmPDyaAfter" pap.dyaAfter;dya;word;
+ 0xC615, 0, L_VAR, // "sprmPChgTabs" pap.itbdMac, pap.rgdxaTab, pap.rgtbd;complex - see below;variable length;
+ 0x2416, 1, L_FIX, // "sprmPFInTable" pap.fInTable;0 or 1;byte;
+ 0x2417, 1, L_FIX, // "sprmPFTtp" pap.fTtp;0 or 1;byte;
+ 0x8418, 2, L_FIX, // "sprmPDxaAbs" pap.dxaAbs;dxa;word;
+ 0x8419, 2, L_FIX, // "sprmPDyaAbs" pap.dyaAbs;dya;word;
+ 0x841A, 2, L_FIX, // "sprmPDxaWidth" pap.dxaWidth;dxa;word;
+ 0x261B, 1, L_FIX, // "sprmPPc" pap.pcHorz, pap.pcVert;complex - see below;byte;
+ 0x461C, 2, L_FIX, // "sprmPBrcTop10" pap.brcTop;BRC10;word;
+ 0x461D, 2, L_FIX, // "sprmPBrcLeft10" pap.brcLeft;BRC10;word;
+ 0x461E, 2, L_FIX, // "sprmPBrcBottom10" pap.brcBottom;BRC10;word;
+ 0x461F, 2, L_FIX, // "sprmPBrcRight10" pap.brcRight;BRC10;word;
+ 0x4620, 2, L_FIX, // "sprmPBrcBetween10" pap.brcBetween;BRC10;word;
+ 0x4621, 2, L_FIX, // "sprmPBrcBar10" pap.brcBar;BRC10;word;
+ 0x4622, 2, L_FIX, // "sprmPDxaFromText10" pap.dxaFromText;dxa;word;
+ 0x2423, 1, L_FIX, // "sprmPWr" pap.wr;wr (see description of PAP for definition;byte;
+ 0x6424, 4, L_FIX, // "sprmPBrcTop" pap.brcTop;BRC;long;
+ 0x6425, 4, L_FIX, // "sprmPBrcLeft" pap.brcLeft;BRC;long;
+ 0x6426, 4, L_FIX, // "sprmPBrcBottom" pap.brcBottom;BRC;long;
+ 0x6427, 4, L_FIX, // "sprmPBrcRight" pap.brcRight;BRC;long;
+ 0x6428, 4, L_FIX, // "sprmPBrcBetween" pap.brcBetween;BRC;long;
+ 0x6629, 4, L_FIX, // "sprmPBrcBar" pap.brcBar;BRC;long;
+ 0x242A, 1, L_FIX, // "sprmPFNoAutoHyph" pap.fNoAutoHyph;0 or 1;byte;
+ 0x442B, 2, L_FIX, // "sprmPWHeightAbs" pap.wHeightAbs;w;word;
+ 0x442C, 2, L_FIX, // "sprmPDcs" pap.dcs;DCS;short;
+ 0x442D, 2, L_FIX, // "sprmPShd" pap.shd;SHD;word;
+ 0x842E, 2, L_FIX, // "sprmPDyaFromText" pap.dyaFromText;dya;word;
+ 0x842F, 2, L_FIX, // "sprmPDxaFromText" pap.dxaFromText;dxa;word;
+ 0x2430, 1, L_FIX, // "sprmPFLocked" pap.fLocked;0 or 1;byte;
+ 0x2431, 1, L_FIX, // "sprmPFWidowControl" pap.fWidowControl;0 or 1;byte;
+ 0xC632, 0, L_VAR, // "sprmPRuler" ;;variable length;
+ 0x2433, 1, L_FIX, // "sprmPFKinsoku" pap.fKinsoku;0 or 1;byte;
+ 0x2434, 1, L_FIX, // "sprmPFWordWrap" pap.fWordWrap;0 or 1;byte;
+ 0x2435, 1, L_FIX, // "sprmPFOverflowPunct" pap.fOverflowPunct;0 or 1;byte;
+ 0x2436, 1, L_FIX, // "sprmPFTopLinePunct" pap.fTopLinePunct;0 or 1;byte;
+ 0x2437, 1, L_FIX, // "sprmPFAutoSpaceDE" pap.fAutoSpaceDE;0 or 1;byte;
+ 0x2438, 1, L_FIX, // "sprmPFAutoSpaceDN" pap.fAutoSpaceDN;0 or 1;byte;
+ 0x4439, 2, L_FIX, // "sprmPWAlignFont" pap.wAlignFont;iFa (see description of PAP for definition);word;
+ 0x443A, 2, L_FIX, // "sprmPFrameTextFlow" pap.fVertical pap.fBackward pap.fRotateFont;complex (see description of PAP for definition);word;
+ 0x243B, 1, L_FIX, // "sprmPISnapBaseLine" obsolete: not applicable in Word97 and later versions;;byte;
+ 0xC63E, 0, L_VAR, // "sprmPAnld" pap.anld;;variable length;
+ 0xC63F, 0, L_VAR, // "sprmPPropRMark" pap.fPropRMark;complex (see below);variable length;
+ 0x2640, 1, L_FIX, // "sprmPOutLvl" pap.lvl;has no effect if pap.istd is < 1 or is > 9;byte;
+ 0x2441, 1, L_FIX, // "sprmPFBiDi" ;;byte;
+ 0x2443, 1, L_FIX, // "sprmPFNumRMIns" pap.fNumRMIns;1 or 0;bit;
+ 0x2444, 1, L_FIX, // "sprmPCrLf" ;;byte;
+ 0xC645, 0, L_VAR, // "sprmPNumRM" pap.numrm;;variable length;
+ 0x6645, 4, L_FIX, // "sprmPHugePapx" see below;fc in the data stream to locate the huge grpprl (see below);long;
+ 0x6646, 4, L_FIX, // "sprmPHugePapx" see below;fc in the data stream to locate the huge grpprl (see below);long;
+ 0x2447, 1, L_FIX, // "sprmPFUsePgsuSettings" pap.fUsePgsuSettings;1 or 0;byte;
+ 0x2448, 1, L_FIX, // "sprmPFAdjustRight" pap.fAdjustRight;1 or 0;byte;
+ 0x0800, 1, L_FIX, // "sprmCFRMarkDel" chp.fRMarkDel;1 or 0;bit;
+ 0x0801, 1, L_FIX, // "sprmCFRMark" chp.fRMark;1 or 0;bit;
+ 0x0802, 1, L_FIX, // "sprmCFFldVanish" chp.fFldVanish;1 or 0;bit;
+
+// wahrscheinlich falsch:
+//0x6A03, 0, L_VAR, // "sprmCPicLocation" chp.fcPic and chp.fSpec;see below;variable length, length recorded is always 4;
+
+// eher so:
+ 0x6A03, 4, L_FIX, // "sprmCPicLocation" chp.fcPic and chp.fSpec;see below;
+ // variable length,
+ // ????????
+ // length recorded is always 4;
+ // ====== =========
+
+ 0x4804, 2, L_FIX, // "sprmCIbstRMark" chp.ibstRMark;index into sttbRMark;short;
+ 0x6805, 4, L_FIX, // "sprmCDttmRMark" chp.dttmRMark;DTTM;long;
+ 0x0806, 1, L_FIX, // "sprmCFData" chp.fData;1 or 0;bit;
+ 0x4807, 2, L_FIX, // "sprmCIdslRMark" chp.idslRMReason;an index to a table of strings defined in Word 6.0 executables;short;
+ 0xEA08, 1, L_FIX, // "sprmCChs" chp.fChsDiff and chp.chse;see below;3 bytes;
+ 0x6A09, 4, L_FIX, // "sprmCSymbol" chp.fSpec, chp.xchSym and chp.ftcSym;see below;variable length, length recorded is always 4;
+ 0x080A, 1, L_FIX, // "sprmCFOle2" chp.fOle2;1 or 0;bit;
+//0x480B, 0, L_FIX, // "sprmCIdCharType" obsolete: not applicable in Word97 and later versions;;;
+ 0x2A0C, 1, L_FIX, // "sprmCHighlight" chp.fHighlight, chp.icoHighlight;ico (fHighlight is set to 1 iff ico is not 0);byte;
+ 0x680E, 4, L_FIX, // "sprmCObjLocation" chp.fcObj;FC;long;
+//0x2A10, 0, L_FIX, // "sprmCFFtcAsciSymb" ;;;
+ 0x4A30, 2, L_FIX, // "sprmCIstd" chp.istd;istd, see stylesheet definition;short;
+ 0xCA31, 0, L_VAR, // "sprmCIstdPermute" chp.istd;permutation vector (see below);variable length;
+ 0x2A32, 0, L_VAR, // "sprmCDefault" whole CHP (see below);none;variable length;
+ 0x2A33, 0, L_FIX, // "sprmCPlain" whole CHP (see below);none;0;
+//0x2A34, 0, L_FIX, // "sprmCKcd" ;;;
+ 0x0835, 1, L_FIX, // "sprmCFBold" chp.fBold;0,1, 128, or 129 (see below);byte;
+ 0x0836, 1, L_FIX, // "sprmCFItalic" chp.fItalic;0,1, 128, or 129 (see below);byte;
+ 0x0837, 1, L_FIX, // "sprmCFStrike" chp.fStrike;0,1, 128, or 129 (see below);byte;
+ 0x0838, 1, L_FIX, // "sprmCFOutline" chp.fOutline;0,1, 128, or 129 (see below);byte;
+ 0x0839, 1, L_FIX, // "sprmCFShadow" chp.fShadow;0,1, 128, or 129 (see below);byte;
+ 0x083A, 1, L_FIX, // "sprmCFSmallCaps" chp.fSmallCaps;0,1, 128, or 129 (see below);byte;
+ 0x083B, 1, L_FIX, // "sprmCFCaps" chp.fCaps;0,1, 128, or 129 (see below);byte;
+ 0x083C, 1, L_FIX, // "sprmCFVanish" chp.fVanish;0,1, 128, or 129 (see below);byte;
+ 0x4A3D, 2, L_FIX, // "sprmCFtcDefault" ;ftc, only used internally, never stored in file;word;
+ 0x2A3E, 1, L_FIX, // "sprmCKul" chp.kul;kul;byte;
+ 0xEA3F, 3, L_FIX, // "sprmCSizePos" chp.hps, chp.hpsPos;(see below);3 bytes;
+ 0x8840, 2, L_FIX, // "sprmCDxaSpace" chp.dxaSpace;dxa;word;
+ 0x4A41, 2, L_FIX, // "sprmCLid" ;only used internally never stored;word;
+ 0x2A42, 1, L_FIX, // "sprmCIco" chp.ico;ico;byte;
+ 0x4A43, 2, L_FIX, // "sprmCHps" chp.hps;hps;byte; ACHTUNG: ich nehme mal lieber ein: word;
+ 0x2A44, 1, L_FIX, // "sprmCHpsInc" chp.hps;(see below);byte;
+ 0x4845, 1, L_FIX, // "sprmCHpsPos" chp.hpsPos;hps;byte;
+ 0x2A46, 1, L_FIX, // "sprmCHpsPosAdj" chp.hpsPos;hps (see below);byte;
+ 0xCA47, 0, L_VAR, // "sprmCMajority" chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, chp.fStrike, chp.fCaps, chp.rgftc, chp.hps, chp.hpsPos, chp.kul, chp.dxaSpace, chp.ico, chp.rglid;complex (see below);variable length, length byte plus size of following grpprl;
+ 0x2A48, 1, L_FIX, // "sprmCIss" chp.iss;iss;byte;
+ 0xCA49, 0, L_VAR, // "sprmCHpsNew50" chp.hps;hps;variable width, length always recorded as 2;
+ 0xCA4A, 0, L_VAR, // "sprmCHpsInc1" chp.hps;complex (see below);variable width, length always recorded as 2;
+ 0x484B, 2, L_FIX, // "sprmCHpsKern" chp.hpsKern;hps;short;
+ 0xCA4C, 2, L_FIX, // "sprmCMajority50" chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, chp.fStrike, chp.fCaps, chp.ftc, chp.hps, chp.hpsPos, chp.kul, chp.dxaSpace, chp.ico,;complex (see below);variable length;
+ 0x4A4D, 2, L_FIX, // "sprmCHpsMul" chp.hps;percentage to grow hps;short;
+ 0x484E, 2, L_FIX, // "sprmCYsri" chp.ysri;ysri;short;
+ 0x4A4F, 2, L_FIX, // "sprmCRgFtc0" chp.rgftc[0];ftc for ASCII text (see below);short;
+ 0x4A50, 2, L_FIX, // "sprmCRgFtc1" chp.rgftc[1];ftc for Far East text (see below);short;
+ 0x4A51, 2, L_FIX, // "sprmCRgFtc2" chp.rgftc[2];ftc for non-Far East text (see below);short;
+//0x4852, 0, L_FIX, // "sprmCCharScale" ;;;
+ 0x2A53, 1, L_FIX, // "sprmCFDStrike" chp.fDStrike;;byte;
+ 0x0854, 1, L_FIX, // "sprmCFImprint" chp.fImprint;1 or 0;bit;
+ 0x0855, 1, L_FIX, // "sprmCFSpec" chp.fSpec ;1 or 0;bit;
+ 0x0856, 1, L_FIX, // "sprmCFObj" chp.fObj;1 or 0;bit;
+ 0xCA57, 0, L_VAR, // "sprmCPropRMark" chp.fPropRMark, chp.ibstPropRMark, chp.dttmPropRMark;Complex (see below);variable length always recorded as 7 bytes;
+ 0x0858, 1, L_FIX, // "sprmCFEmboss" chp.fEmboss;1 or 0;bit;
+ 0x2859, 1, L_FIX, // "sprmCSfxText" chp.sfxtText;text animation;byte;
+//0x085A, 0, L_FIX, // "sprmCFBiDi" ;;;
+//0x085B, 0, L_FIX, // "sprmCFDiacColor" ;;;
+//0x085C, 0, L_FIX, // "sprmCFBoldBi" ;;;
+//0x085D, 0, L_FIX, // "sprmCFItalicBi" ;;;
+//0x4A5E, 0, L_FIX, // "sprmCFtcBi" ;;;
+//0x485F, 0, L_FIX, // "sprmCLidBi" ;;;
+//0x4A60, 0, L_FIX, // "sprmCIcoBi" ;;;
+//0x4A61, 0, L_FIX, // "sprmCHpsBi" ;;;
+ 0xCA62, 0, L_VAR, // "sprmCDispFldRMark" chp.fDispFldRMark, chp.ibstDispFldRMark, chp.dttmDispFldRMark ;Complex (see below);variable length always recorded as 39 bytes;
+ 0x4863, 2, L_FIX, // "sprmCIbstRMarkDel" chp.ibstRMarkDel;index into sttbRMark;short;
+ 0x6864, 4, L_FIX, // "sprmCDttmRMarkDel" chp.dttmRMarkDel;DTTM;long;
+ 0x6865, 4, L_FIX, // "sprmCBrc" chp.brc;BRC;long;
+ 0x4866, 2, L_FIX, // "sprmCShd" chp.shd;SHD;short;
+ 0x4867, 2, L_FIX, // "sprmCIdslRMarkDel" chp.idslRMReasonDel;an index to a table of strings defined in Word 6.0 executables;short;
+ 0x0868, 1, L_FIX, // "sprmCFUsePgsuSettings" chp.fUsePgsuSettings;1 or 0;bit;
+ 0x486B, 2, L_FIX, // "sprmCCpg" ;;word;
+ 0x486D, 2, L_FIX, // "sprmCRgLid0" chp.rglid[0];LID: for non-Far East text;word;
+ 0x486E, 2, L_FIX, // "sprmCRgLid1" chp.rglid[1];LID: for Far East text;word;
+ 0x286F, 1, L_FIX, // "sprmCIdctHint" chp.idctHint;IDCT: (see below);byte;
+ 0x2E00, 1, L_FIX, // "sprmPicBrcl" pic.brcl;brcl (see PIC structure definition);byte;
+ 0xCE01, 0, L_VAR, // "sprmPicScale" pic.mx, pic.my, pic.dxaCropleft, pic.dyaCropTop pic.dxaCropRight, pic.dyaCropBottom;Complex (see below);length byte plus 12 bytes;
+ 0x6C02, 4, L_FIX, // "sprmPicBrcTop" pic.brcTop;BRC;long;
+ 0x6C03, 4, L_FIX, // "sprmPicBrcLeft" pic.brcLeft;BRC;long;
+ 0x6C04, 4, L_FIX, // "sprmPicBrcBottom" pic.brcBottom;BRC;long;
+ 0x6C05, 4, L_FIX, // "sprmPicBrcRight" pic.brcRight;BRC;long;
+ 0x3000, 1, L_FIX, // "sprmScnsPgn" sep.cnsPgn;cns;byte;
+ 0x3001, 1, L_FIX, // "sprmSiHeadingPgn" sep.iHeadingPgn;heading number level;byte;
+ 0xD202, 0, L_VAR, // "sprmSOlstAnm" sep.olstAnm;OLST;variable length;
+ 0xF203, 3, L_FIX, // "sprmSDxaColWidth" sep.rgdxaColWidthSpacing;complex (see below);3 bytes;
+ 0xF204, 3, L_FIX, // "sprmSDxaColSpacing" sep.rgdxaColWidthSpacing;complex (see below);3 bytes;
+ 0x3005, 1, L_FIX, // "sprmSFEvenlySpaced" sep.fEvenlySpaced;1 or 0;byte;
+ 0x3006, 1, L_FIX, // "sprmSFProtected" sep.fUnlocked;1 or 0;byte;
+ 0x5007, 2, L_FIX, // "sprmSDmBinFirst" sep.dmBinFirst;;word;
+ 0x5008, 2, L_FIX, // "sprmSDmBinOther" sep.dmBinOther;;word;
+ 0x3009, 1, L_FIX, // "sprmSBkc" sep.bkc;bkc;byte;
+ 0x300A, 1, L_FIX, // "sprmSFTitlePage" sep.fTitlePage;0 or 1;byte;
+ 0x500B, 2, L_FIX, // "sprmSCcolumns" sep.ccolM1;# of cols - 1;word;
+ 0x900C, 2, L_FIX, // "sprmSDxaColumns" sep.dxaColumns;dxa;word;
+ 0x300D, 1, L_FIX, // "sprmSFAutoPgn" sep.fAutoPgn;obsolete;byte;
+ 0x300E, 1, L_FIX, // "sprmSNfcPgn" sep.nfcPgn;nfc;byte;
+ 0xB00F, 2, L_FIX, // "sprmSDyaPgn" sep.dyaPgn;dya;short;
+ 0xB010, 2, L_FIX, // "sprmSDxaPgn" sep.dxaPgn;dya;short;
+ 0x3011, 1, L_FIX, // "sprmSFPgnRestart" sep.fPgnRestart;0 or 1;byte;
+ 0x3012, 1, L_FIX, // "sprmSFEndnote" sep.fEndnote;0 or 1;byte;
+ 0x3013, 1, L_FIX, // "sprmSLnc" sep.lnc;lnc;byte;
+ 0x3014, 1, L_FIX, // "sprmSGprfIhdt" sep.grpfIhdt;grpfihdt (see Headers and Footers topic);byte;
+ 0x5015, 2, L_FIX, // "sprmSNLnnMod" sep.nLnnMod;non-neg int.;word;
+ 0x9016, 2, L_FIX, // "sprmSDxaLnn" sep.dxaLnn;dxa;word;
+ 0xB017, 2, L_FIX, // "sprmSDyaHdrTop" sep.dyaHdrTop;dya;word;
+ 0xB018, 2, L_FIX, // "sprmSDyaHdrBottom" sep.dyaHdrBottom;dya;word;
+ 0x3019, 1, L_FIX, // "sprmSLBetween" sep.fLBetween;0 or 1;byte;
+ 0x301A, 1, L_FIX, // "sprmSVjc" sep.vjc;vjc;byte;
+ 0x501B, 2, L_FIX, // "sprmSLnnMin" sep.lnnMin;lnn;word;
+ 0x501C, 2, L_FIX, // "sprmSPgnStart" sep.pgnStart;pgn;word;
+ 0x301D, 1, L_FIX, // "sprmSBOrientation" sep.dmOrientPage;dm;byte;
+//0x301E, 0, L_FIX, // "sprmSBCustomize" ;;;
+
+ 0xB01F, 2, L_FIX, // "sprmSXaPage" sep.xaPage;xa;word;
+ 0xB020, 2, L_FIX, // "sprmSYaPage" sep.yaPage;ya;word;
+ 0xB021, 2, L_FIX, // "sprmSDxaLeft" sep.dxaLeft;dxa;word;
+ 0xB022, 2, L_FIX, // "sprmSDxaRight" sep.dxaRight;dxa;word;
+ 0x9023, 2, L_FIX, // "sprmSDyaTop" sep.dyaTop;dya;word;
+ 0x9024, 2, L_FIX, // "sprmSDyaBottom" sep.dyaBottom;dya;word;
+
+ 0xB025, 2, L_FIX, // "sprmSDzaGutter" sep.dzaGutter;dza;word;
+ 0x5026, 2, L_FIX, // "sprmSDmPaperReq" sep.dmPaperReq;dm;word;
+ 0xD227, 0, L_VAR, // "sprmSPropRMark" sep.fPropRMark, sep.ibstPropRMark, sep.dttmPropRMark ;complex (see below);variable length always recorded as 7 bytes;
+//0x3228, 0, L_FIX, // "sprmSFBiDi" ;;;
+//0x3229, 0, L_FIX, // "sprmSFFacingCol" ;;;
+//0x322A, 0, L_FIX, // "sprmSFRTLGutter" ;;;
+ 0x702B, 4, L_FIX, // "sprmSBrcTop" sep.brcTop;BRC;long;
+ 0x702C, 4, L_FIX, // "sprmSBrcLeft" sep.brcLeft;BRC;long;
+ 0x702D, 4, L_FIX, // "sprmSBrcBottom" sep.brcBottom;BRC;long;
+ 0x702E, 4, L_FIX, // "sprmSBrcRight" sep.brcRight;BRC;long;
+ 0x522F, 2, L_FIX, // "sprmSPgbProp" sep.pgbProp;;word;
+ 0x7030, 4, L_FIX, // "sprmSDxtCharSpace" sep.dxtCharSpace;dxt;long;
+ 0x9031, 4, L_FIX, // "sprmSDyaLinePitch" sep.dyaLinePitch;dya;long;
+//0x5032, 0, L_FIX, // "sprmSClm" ;;;
+ 0x5033, 2, L_FIX, // "sprmSTextFlow" sep.wTextFlow;complex (see below);short;
+ 0x5400, 2, L_FIX, // "sprmTJc" tap.jc;jc;word (low order byte is significant);
+ 0x9601, 2, L_FIX, // "sprmTDxaLeft" tap.rgdxaCenter (see below);dxa;word;
+ 0x9602, 2, L_FIX, // "sprmTDxaGapHalf" tap.dxaGapHalf, tap.rgdxaCenter (see below);dxa;word;
+ 0x3403, 1, L_FIX, // "sprmTFCantSplit" tap.fCantSplit;1 or 0;byte;
+ 0x3404, 1, L_FIX, // "sprmTTableHeader" tap.fTableHeader;1 or 0;byte;
+ 0xD605, 0, L_VAR, // "sprmTTableBorders" tap.rgbrcTable;complex(see below);24 bytes;
+ 0xD606, 0, L_VAR, // "sprmTDefTable10" tap.rgdxaCenter, tap.rgtc;complex (see below);variable length;
+ 0x9407, 2, L_FIX, // "sprmTDyaRowHeight" tap.dyaRowHeight;dya;word;
+ 0xD608, 0, L_VAR, // "sprmTDefTable" tap.rgtc;complex (see below);;
+ 0xD609, 0, L_VAR, // "sprmTDefTableShd" tap.rgshd;complex (see below);;
+ 0x740A, 2, L_FIX, // "sprmTTlp" tap.tlp;TLP;4 bytes;
+//0x560B, 0, L_FIX, // "sprmTFBiDi" ;;;
+//0x740C, 0, L_FIX, // "sprmTHTMLProps" ;;;
+ 0xD620, 0, L_VAR, // "sprmTSetBrc" tap.rgtc[].rgbrc;complex (see below);5 bytes;
+ 0x7621, 0, L_VAR, // "sprmTInsert" tap.rgdxaCenter, tap.rgtc;complex (see below);4 bytes;
+ 0x5622, 0, L_VAR, // "sprmTDelete" tap.rgdxaCenter, tap.rgtc;complex (see below);word;
+ 0x7623, 0, L_VAR, // "sprmTDxaCol" tap.rgdxaCenter;complex (see below);4 bytes;
+ 0x5624, 0, L_VAR, // "sprmTMerge" tap.fFirstMerged, tap.fMerged;complex (see below);word;
+ 0x5625, 0, L_VAR, // "sprmTSplit" tap.fFirstMerged, tap.fMerged;complex (see below);word;
+ 0xD626, 0, L_VAR, // "sprmTSetBrc10" tap.rgtc[].rgbrc;complex (see below);5 bytes;
+ 0x7627, 0, L_VAR, // "sprmTSetShd" tap.rgshd;complex (see below);4 bytes;
+ 0x7628, 0, L_VAR, // "sprmTSetShdOdd" tap.rgshd;complex (see below);4 bytes;
+ 0x7629, 0, L_VAR, // "sprmTTextFlow" tap.rgtc[].fVerticaltap.rgtc[].fBackwardtap.rgtc[].fRotateFont;0 or 10 or 10 or 1;word;
+//0xD62A, 0, L_FIX, // "sprmTDiagLine" ;;;
+ 0xD62B, 0, L_VAR, // "sprmTVertMerge" tap.rgtc[].vertMerge;complex (see below);variable length always recorded as 2 bytes;
+ 0xD62C, 0, L_VAR, // "sprmTVertAlign" tap.rgtc[].vertAlign;complex (see below);variable length always recorded as 3 byte;
+
+};
+
+
+
+static int
+#if defined( WNT )
+ __cdecl
+#endif
+#if defined( ICC )
+ _Optlink
+#endif
+ CompSprmId( const void *pFirst, const void *pSecond)
+{
+ return( ((SprmInfo*)pFirst )->nId - ((SprmInfo*)pSecond)->nId );
+}
+
+
+SprmInfo& WW8GetSprmInfo( USHORT nId )
+{
+ // ggfs. Tab sortieren
+ static BOOL bInit = FALSE;
+ if( !bInit )
+ {
+ qsort( (void*)aWwSprmTab,
+ sizeof( aWwSprmTab ) / sizeof (aWwSprmTab[ 0 ]),
+ sizeof( aWwSprmTab[ 0 ] ),
+ CompSprmId );
+ bInit = TRUE;
+ }
+ // Sprm heraussuchen
+ void* pFound;
+ SprmInfo aSrch;
+ aSrch.nId = nId;
+ if( 0 == ( pFound = bsearch( (char *) &aSrch,
+ (void*) aWwSprmTab,
+ sizeof( aWwSprmTab ) / sizeof (aWwSprmTab[ 0 ]),
+ sizeof( aWwSprmTab[ 0 ] ),
+ CompSprmId )))
+ {
+ // im Fehlerfall auf Nulltes Element verweisen
+ pFound = (void*)aWwSprmTab;
+ }
+ return *(SprmInfo*) pFound;
+}
+
+
+
+//-----------------------------------------
+// Sprms
+//-----------------------------------------
+
+static short WW8GetSprmSize0( USHORT nId, BYTE* pSprm, BYTE nDelta)
+{
+ SprmInfo& rSprm = WW8GetSprmInfo( nId );
+ short nL = 0; // soviel Bytes sind zu lesen
+
+ //sprmPChgTabs
+ switch( nId )
+ {
+ case 23:
+ case 0xC615:
+ if( SVBT16ToShort( &pSprm[1 + nDelta] ) != 255 )
+ nL = SVBT16ToShort( &pSprm[1 + nDelta] ) + rSprm.nLen - 1;
+ else
+ {
+ BYTE nDel = pSprm[2 + nDelta];
+ BYTE nIns = pSprm[3 + nDelta + 4 * nDel];
+
+ nL = 2 + 4 * nDel + 3 * nIns;
+ }
+ break;
+
+ case 0xd608:
+ nL = SVBT16ToShort( &pSprm[1 + nDelta] );
+ break;
+
+ default:
+ switch ( rSprm.nVari )
+ {
+ case L_FIX: nL = rSprm.nLen; // Excl. Token
+ break;
+ case L_VAR: nL = (short)pSprm[1 + nDelta]// Variable 1-Byte Laenge?
+ + rSprm.nLen; // Excl. Token + Var-Laengenbyte
+ break;
+ // case L_VAR2: nL = ( *(short*)&pSprm[1 + nDelta] ) // Variable 2-Byte Laenge?
+ case L_VAR2: nL = SVBT16ToShort( &pSprm[1 + nDelta] ) // Variable 2-Byte Laenge?
+ + rSprm.nLen - 1; // Excl. Token + Var-Laengenbyte
+ break;
+ }
+ break;
+ }
+ return nL;
+}
+
+
+USHORT WW8CountSprms( BYTE nVersion,
+ BYTE* pSp,
+ long nSprmSiz,
+ const SvUShortsSort* pIgnoreSprms )
+{
+ BYTE nDelta = ( 8 > nVersion ) ? 0 : 1;
+ USHORT nMySprms = 0;
+ for(short i=0; i+1+nDelta < nSprmSiz; )
+ {
+ USHORT nSpId = WW8GetSprmId( nVersion, pSp );
+
+ if( !nSpId )
+ break;
+
+ short nSpLen = WW8GetSprmSizeBrutto( nVersion, pSp, &nSpId );
+ // erhoehe Zeiger, so dass er auf naechsten Sprm zeigt
+ i += nSpLen;
+ pSp += nSpLen;
+
+ if( !pIgnoreSprms || USHRT_MAX == pIgnoreSprms->Seek_Entry( nSpId ) )
+ {
+ ++nMySprms;
+ }
+ }
+ return nMySprms;
+}
+
+BOOL WW8PLCFx_SEPX::CompareSprms( BYTE* pOtherSprms,
+ long nOtherSprmSiz,
+ const SvUShortsSort* pIgnoreSprms ) const
+{
+ BOOL bRes = FALSE;
+ BYTE* pSp = pSprms;
+ short i;
+ BYTE nDelta = ( 8 > GetVersion()) ? 0 : 1;
+
+ if( WW8CountSprms(GetVersion(), pSp, nSprmSiz, pIgnoreSprms)
+ == WW8CountSprms(GetVersion(), pOtherSprms, nOtherSprmSiz, pIgnoreSprms) )
+ {
+ bRes = TRUE;
+ for( i=0; i+1+nDelta < nSprmSiz; )
+ {
+ USHORT nSpId = WW8GetSprmId( GetVersion(), pSp );
+
+ if( !nSpId )
+ break;
+
+ short nSpLen = WW8GetSprmSizeBrutto( GetVersion(), pSp, &nSpId );
+
+ if( !pIgnoreSprms || !pIgnoreSprms->Seek_Entry( nSpId ) )
+ {
+ BYTE* pOtherSp = HasSprm( nSpId, pOtherSprms, nOtherSprmSiz );
+
+ if( ( !pOtherSp )
+ || (0 != memcmp( pSp + 1 + nDelta + WW8SprmDataOfs( nSpId ),
+ pOtherSp,
+ WW8GetSprmSize0( nSpId, pSp, nDelta ) ) ) )
+ {
+ bRes = FALSE;
+ break;
+ }
+ }
+ // erhoehe Zeiger, so dass er auf naechsten Sprm zeigt
+ i += nSpLen;
+ pSp += nSpLen;
+ }
+ }
+ return bRes; // unterschiedliche Sprms ?
+}
+
+
+// ein bzw. zwei Byte am Anfang des Sprm sind die Id
+USHORT WW8GetSprmId( BYTE nVersion, BYTE* pSp, BYTE* pDelta )
+{
+ USHORT nId = 0;
+ switch( nVersion ) // beachte: 6 steht fuer "6 ODER 7", 7 steht fuer "NUR 7"
+ {
+ case 6:
+ case 7: nId = *pSp;
+ if( 0x0100 < nId ) nId = 0;
+ if( pDelta ) *pDelta = 0;
+ break;
+ case 8: nId = SVBT16ToShort( &pSp[ 0 ] );
+ if( 0x0800 > nId )
+ nId = 0;
+ if( pDelta )
+ *pDelta = 1;
+ break;
+ default:ASSERT( nId, "Es wurde vergessen, nVersion zu kodieren!" );
+ }
+ return nId;
+}
+
+
+// ohne Token und LaengenByte
+short WW8GetSprmSizeNetto( BYTE nVersion, BYTE* pSprm, USHORT* pId )
+{
+ BYTE nDelta = ( 8 > nVersion ) ? 0 : 1;
+ USHORT nId = pId ? *pId : WW8GetSprmId( nVersion, pSprm );
+ return WW8GetSprmSize0( nId, pSprm, nDelta );
+}
+
+
+// mit Token und LaengenByte
+short WW8GetSprmSizeBrutto( BYTE nVersion, BYTE* pSprm, USHORT* pId )
+{
+ BYTE nDelta = ( 8 > nVersion ) ? 0 : 1;
+ USHORT nId = pId ? *pId : WW8GetSprmId( nVersion, pSprm );
+ return WW8GetSprmSize0( nId, pSprm, nDelta )
+ + 1 + nDelta
+ + WW8GetSprmInfo( nId ).nVari;
+}
+
+BYTE WW8SprmDataOfs( USHORT nId )
+{
+ return WW8GetSprmInfo( nId ).nVari;
+}
+
+
+/*************************************************************************
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/dump/ww8scan.cxx,v 1.1.1.1 2000-09-18 17:14:59 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.12 2000/09/18 16:05:03 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.11 2000/02/11 14:39:42 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.10 2000/02/03 10:09:40 cmc
+ #72268# Allow create fib from offset, added data to STTBF
+
+ Revision 1.75 2000/02/03 10:08:30 cmc
+ #72268# Allow create fib from offset, added data to STTBF
+
+ Revision 1.74 2000/02/02 18:07:47 khz
+ Task #69885# Read SPRMs that are stored in piece table grpprls
+
+ Revision 1.73 1999/12/21 08:02:45 khz
+ Task #68143# nIdx set to Zero caused Hd/Ft to get wrong sprms
+
+ Revision 1.72 1999/12/07 14:29:00 khz
+ Task #69508# import sprmPHugePapx by reading DATA stream
+
+ Revision 1.71 1999/12/07 09:53:04 khz
+ Task #67979# typo-error corrected (was '==' instead of '=')
+
+ Revision 1.70 1999/12/06 19:34:27 khz
+ Task #67979# Absolute Positioned Object must have SPRM 5 or SPRM 29
+
+ Revision 1.69 1999/11/19 15:09:24 khz
+ Task #69910# Use extra PLCF structure for field!
+
+ Revision 1.68 1999/11/03 17:20:04 khz
+ Task #68676# GPF when loading file under Solaris (reading FFN structures)
+
+ Revision 1.67 1999/10/21 15:36:25 khz
+ Import Redlining (4)
+
+ Revision 1.66 1999/10/13 21:06:47 khz
+ Import Redlining (3)
+
+ Revision 1.65 1999/10/08 09:25:29 khz
+ Import Redlining
+
+ Revision 1.64 1999/09/10 15:36:43 khz
+ CharSet matching made by TENCINFO.H::rtl_getTextEncodingFromWindowsCharset()
+
+ Revision 1.63 1999/09/09 18:16:17 khz
+ CharSet matching now done in central methode WW8SCAN.HXX::WW8GetCharSet()
+
+ Revision 1.62 1999/09/08 13:26:13 khz
+ Better performance by reducing use of SWAP..() and SVBT..To..() methods
+
+ Revision 1.61 1999/08/30 19:53:02 JP
+ Bug #68219#: no static members - be reentrant
+
+
+ Rev 1.60 30 Aug 1999 21:53:02 JP
+ Bug #68219#: no static members - be reentrant
+
+ Rev 1.59 09 Aug 1999 18:34:38 KHZ
+ Task #67543# Import of Property Modifier(variant 1) (PRM) in WW8 docs
+
+ Rev 1.58 18 Jun 1999 15:53:56 KHZ
+ Reference field (page, bookmark, footnote) part#1
+
+ Rev 1.57 15 Jun 1999 14:34:56 JP
+ for Export: FIB - read/write SttbListNames
+
+ Rev 1.56 14 Jun 1999 16:00:18 KHZ
+ Task #66411# allow import of document even when SEPX is missing completely
+
+ Rev 1.55 03 Jun 1999 16:58:56 KHZ
+ Task #66418# Nach C'tor WW8Fkp ein ''pSt->Seek( nOldPos );'' ausfuehren!
+
+ Rev 1.54 03 Jun 1999 11:42:46 KHZ
+ Task #66398# Variante 1 fuer PRM ist bei Ver67 Ok.
+
+ Rev 1.53 02 Jun 1999 17:07:46 KHZ
+ Task #66393# in WW8Cp2Fc ist *pIsUnicode bei bVer67 zu initialisieren
+
+ Rev 1.52 02 Jun 1999 09:32:44 KHZ
+ Task #66227# a) kein Unicode bei Ver67 ;-) b) Grafik in grupp. Textbox
+
+ Rev 1.51 28 May 1999 09:59:12 JP
+ Fib-CTOR: wichtige Flags fuer den W97-Export setzen
+
+ Rev 1.50 28 May 1999 09:19:22 KHZ
+ Task #66395# Return-Adresse kein komplexer Ausdruck mehr
+
+ Rev 1.49 26 May 1999 10:58:02 JP
+ Fib: einige Konstanten nachgetragen
+
+ Rev 1.48 21 May 1999 01:58:08 JP
+ Export von WW97 Format: DOP in TableStream
+
+ Rev 1.47 19 May 1999 11:12:54 JP
+ WinWord97-ExportFilter
+
+ Rev 1.46 11 May 1999 17:15:32 KHZ
+ Task #66019# FontFamily: andere Bitreihenfolge auf Solaris beachten
+
+ Rev 1.45 14 Apr 1999 14:20:12 KHZ
+ Task #61268# Solaris-Problem wegen drei vergessenen SVBT16-Umwandlungen
+
+ Rev 1.44 13 Apr 1999 16:02:28 KHZ
+ Task #61268# SVBT16 statt USHORT bei Bookmarks eingesetzt
+
+ Rev 1.43 10 Mar 1999 15:11:12 KHZ
+ Task #62521# Einlesen von Sonderzeichen
+
+ Rev 1.42 08 Mar 1999 11:48:48 KHZ
+ Task #57749# Writer kann jetzt spaltige Bereiche
+
+ Rev 1.41 26 Feb 1999 14:43:38 KHZ
+ Task #59715# Behandlung von Section breaks
+
+ Rev 1.40 25 Jan 1999 10:22:38 KHZ
+ Task #60715# in Textobjekt verankerte Grafik als Grafik importieren
+
+ Rev 1.39 19 Jan 1999 10:47:42 KHZ
+ Task #60878# WW8Cp2Fc setzt *pIsUniCode bei Non-Complex auf FALSE
+
+ Rev 1.38 18 Jan 1999 08:57:08 KHZ
+ Task #60878# WW8Dp2Fc nur dann Assertion, wenn kein pTestFlag
+
+ Rev 1.37 11 Dec 1998 11:12:38 JP
+ Task #59580# Unicode (3) - Bug behoben beim Read_Xstz
+
+ Rev 1.36 10 Dec 1998 21:29:00 JP
+ Bug #59643#: benutzerdefinierte Zeichen von Fuss-/EndNoten verarbeiten
+
+ Rev 1.35 07 Dec 1998 18:17:06 KHZ
+ Task #59580# falsches Feldende: WW8SkipField verglich mit 0x7f statt 0x1f
+
+ Rev 1.34 05 Dec 1998 17:10:26 KHZ
+ Task #59580# Unicode (3)
+
+ Rev 1.33 04 Dec 1998 20:19:50 KHZ
+ Task #58766# Textboxen mit Unicode-Inhalt
+
+ Rev 1.32 03 Dec 1998 19:10:02 KHZ
+ Task #58766# Unicode-Import (2)
+
+ Rev 1.31 03 Dec 1998 10:39:50 JP
+ Task #60063#: Kommentare als PostIts einlesen
+
+ Rev 1.30 02 Dec 1998 16:57:02 JP
+ Task #60063#: Kommentare als PostIts einlesen
+
+ Rev 1.29 30 Nov 1998 17:46:50 JP
+ Task #59822#: OLE-Objecte importieren
+
+ Rev 1.28 30 Nov 1998 17:30:36 KHZ
+ Task #54828# Unicode-Import
+
+ Rev 1.27 03 Nov 1998 18:29:54 KHZ
+ Task #57243# Performance-Gewinn durch Vermeiden ueberfluessiger WW8GetSprmId()
+
+ Rev 1.26 02 Nov 1998 17:58:32 KHZ
+ Task #57017# Textmarken-Namen als UNICODE-Strings
+
+ Rev 1.25 16 Oct 1998 16:12:34 KHZ
+ Task #53520# ueberpruefe Feld DRUCKDATUM in DocInfo anhand von WW-internem Feld
+
+ Rev 1.24 22 Sep 1998 19:37:42 KHZ
+ Bug #57018# Fontnamen wurden unrichtig importiert
+
+ Rev 1.23 22 Sep 1998 17:40:24 KHZ
+ Bug #56310# Kopf-/Fusszeilen in Unicode-Dokumenten jetzt korrekt
+
+ Rev 1.22 03 Sep 1998 22:15:40 KHZ
+ Task #55189# Textboxen
+
+ Rev 1.21 27 Aug 1998 10:12:28 KHZ
+ Task #55189# Escher-Import fuer Draw, Calc und Writer
+
+ Rev 1.20 11 Aug 1998 12:26:16 KHZ
+ Task #52607# Optimierung in AdjustEnds(), GetNewSprms(), GetNoNewSprms()
+
+ Rev 1.19 30 Jul 1998 14:47:24 JP
+ Bug #54385#: sal_Unicode ist unter UNX ein long und kein UINT16
+
+ Rev 1.18 30 Jul 1998 00:02:54 KHZ
+ Task #53614# Grafiken, die NICHT ueber dem Text liegen (MSDFF-Quick-Hack)
+
+ Rev 1.17 29 Jul 1998 16:53:18 KHZ
+ Task #52607# Fehler in FKP (Teil 2)
+
+ Rev 1.16 29 Jul 1998 13:56:10 KHZ
+ Task #52607# Fehler in FKP
+
+ Rev 1.15 28 Jul 1998 22:27:28 KHZ
+ Task #52607# nummerierte Listen (Teil 3)
+
+ Rev 1.14 28 Jul 1998 11:05:46 KHZ
+ Task #52607# nummerierte Listen (Teil 1)
+
+ Rev 1.13 22 Jul 1998 15:32:56 KHZ
+ Task #52607#
+
+ Rev 1.12 21 Jul 1998 14:52:28 KHZ
+ Task #52607# (WW 97 Import)
+
+ Rev 1.11 21 Jul 1998 12:32:52 KHZ
+ als MSDrawingObject eingebettete Grafik (Teil 1)
+
+ Rev 1.10 16 Jul 1998 21:50:14 KHZ
+ Task #52607# Compilererror wg. (rLen *= 2) -= 2
+
+ Rev 1.9 15 Jul 1998 15:47:18 KHZ
+ Task #52607# Felder
+
+ Rev 1.8 14 Jul 1998 16:34:18 KHZ
+ Task #52607# Absatz- und Zeichen-Styles
+
+ Rev 1.7 13 Jul 1998 15:29:46 KHZ
+ Task #52607# Seitenvorlage fuer 1st Page, embed. Grafik (NICHT UEBER Text)
+
+ Rev 1.6 30 Jun 1998 21:33:20 KHZ
+ Header/Footer/Footnotes weitgehend ok
+
+ Rev 1.5 26 Jun 1998 20:50:22 KHZ
+ Absatz-Attribute jetzt weitestgehend ok
+
+ Rev 1.4 23 Jun 1998 20:49:26 KHZ
+ verarbeitet jetzt auch mehrere FKPs
+
+ Rev 1.3 23 Jun 1998 11:24:28 KHZ
+ Zwischenstand: die meisten Zeichenattribute Ok!
+
+ Rev 1.2 18 Jun 1998 09:47:12 KHZ
+ Zwischenstand fur 396c
+
+ Rev 1.1 16 Jun 1998 18:35:30 KHZ
+ DaSi-Stand
+
+ Rev 1.0 16 Jun 1998 10:57:24 KHZ
+ Initial revision.
+
+ Rev 1.1 10 Jun 1998 17:22:32 KHZ
+ Zwischenstand-Sicherung Dumper
+
+ Rev 1.0 27 May 1998 15:29:02 KHZ
+ Initial revision.
+
+
+*************************************************************************/
diff --git a/sw/source/filter/ww8/dump/ww8scan.hxx b/sw/source/filter/ww8/dump/ww8scan.hxx
new file mode 100644
index 000000000000..d49c1a89df69
--- /dev/null
+++ b/sw/source/filter/ww8/dump/ww8scan.hxx
@@ -0,0 +1,1498 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8scan.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WW8SCAN_HXX
+#define _WW8SCAN_HXX
+
+
+#ifndef _SOLAR_H
+#include <tools/solar.h> // UINTXX
+#endif
+#ifndef _DATETIME_HXX //autogen
+#include <tools/datetime.hxx>
+#endif
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef WW8STRUC_HXX
+#include "ww8struc.hxx" // FIB, STSHI, STD
+#endif
+#ifndef LONG_MAX
+#include <limits.h>
+#endif
+#ifndef _SAL_TYPES_H
+#include <sal/types.h>
+#endif
+
+ // ASS_FALSE, um ASSERT( ASS_FALSE, ... ) schreiben
+ // zu koennen, ohne vom Compiler angemeckert zu werden
+#ifndef ASS_FALSE
+#define ASS_FALSE ( !this )
+#endif
+
+#ifndef DELETEZ
+#define DELETEZ( p ) ( delete( p ), p = 0 )
+#endif
+
+
+//class SvStream;
+class UShortStk;
+class WW8Fib;
+class WW8ScannerBase;
+class WW8PLCFspecial;
+struct WW8PLCFxDesc;
+class WW8PLCFx_PCD;
+class SvUShortsSort;
+
+
+
+UINT8* WW8ReadPString( SvStream& rStrm, BOOL bAtEndSeekRel1 = TRUE );
+
+// Folgende Methode liest einen 2-byter-UNICODE-String ein:
+// - falls bAtEndSeekRel1 gesetzt ist, wird am Ende genau EIN Byte uebersprungen,
+// - falls nChars (die Zeichen-Anzahl, NICHT die Byte-Anzahl) nicht gesetzt ist,
+// wird das erste USHORT als Lannengenangabe interpretiert,
+// ansonsten als erstes String-Zeichen genommen.
+UINT8* WW8Read_xstz(SvStream& rStrm, BOOL bAtEndSeekRel1 = TRUE,
+ USHORT nChars = 0, BOOL bInsLeadingLen = TRUE,
+ long* pWasRead = 0 );
+
+
+// read array of strings (see MS documentation: STring TaBle stored in File)
+// returns NOT the original pascal strings but an array of converted char*
+//
+// attention: the *extra data* of each string are SKIPPED and ignored
+char** WW8ReadSTTBF(BOOL bVer8, SvStream& rStrm, UINT32 nStart,
+ INT32 nLen,
+ long& rCount,
+ USHORT nSkip = 0, BYTE ***pData=0);
+
+USHORT WW8GetSprmId( BYTE nVersion, BYTE* pSp, BYTE* pDelta = 0 );
+short WW8GetSprmSizeNetto( BYTE nVersion, BYTE* pSprm, USHORT* pId );
+short WW8GetSprmSizeBrutto( BYTE nVersion, BYTE* pSprm, USHORT* pId );
+BYTE WW8SprmDataOfs( USHORT nId );
+
+struct WW8_PSTR // Pascal-String
+{
+ UINT8 nLen;
+ char cStr[2]; // offene Laenge
+};
+
+struct WW8FieldDesc
+{
+ long nLen; // Gesamtlaenge ( zum Text ueberlesen )
+ WW8_CP nSCode; // Anfang Befehlscode
+ long nLCode; // Laenge
+ WW8_CP nSRes; // Anfang Ergebnis
+ long nLRes; // Laenge ( == 0, falls kein Ergebnis )
+ USHORT nId; // WW-Id fuer Felder
+ BYTE nOpt; // WW-Flags ( z.B.: vom User geaendert )
+ BOOL bCodeNest:1; // Befehl rekursiv verwendet
+ BOOL bResNest:1; // Befehl in Resultat eingefuegt
+};
+
+BOOL WW8GetFieldPara( BYTE nVersion, WW8PLCFspecial& rPLCF, WW8FieldDesc& rF );
+
+
+/*
+ u.a. fuer Felder, also genausoviele Attr wie Positionen,
+ falls Ctor-Param bNoEnd = false
+*/
+class WW8PLCFspecial // Iterator fuer PLCFs
+{
+ INT32* pPLCF_PosArray; // Pointer auf Pos-Array und auf ganze Struktur
+ char* pPLCF_Contents; // Pointer auf Inhalts-Array-Teil des Pos-Array
+ long nIMax; // Anzahl der Elemente
+ long nIdx; // Merker, wo wir gerade sind
+ long nStru;
+
+public:
+ WW8PLCFspecial( SvStream* pSt, long nFilePos, long nPLCF,
+ long nStruct, long nStartPos = -1, BOOL bNoEnd = FALSE );
+ ~WW8PLCFspecial(){ delete( pPLCF_PosArray ); pPLCF_PosArray = 0; }
+ ULONG GetIdx() const { return (ULONG)nIdx; }
+ void SetIdx( ULONG nI ) { nIdx = (long)nI; } // geht ueber Nummer
+ long GetIMax(){ return nIMax; }
+ BOOL SeekPos( long nPos ); // geht ueber FC- bzw. CP-Wert
+ // bzw. naechste groesseren Wert
+ BOOL SeekPosExact( long nPos );
+ long Where() { return ( nIdx >= nIMax ) ? LONG_MAX : pPLCF_PosArray[nIdx]; }
+ BOOL Get( long& rStart, void*& rpValue );
+ BOOL GetData( long nIdx, long& rPos, void*& rpValue );
+
+ const void* GetData( long nIdx ) const {
+ return ( nIdx >= nIMax ) ? 0 : (const void*)&pPLCF_Contents[nIdx * nStru]; }
+ long GetPos( long nIdx ){
+ return ( nIdx >= nIMax ) ? LONG_MAX : pPLCF_PosArray[nIdx]; }
+
+ WW8PLCFspecial& operator ++( int ) { nIdx++; return *this; }
+ WW8PLCFspecial& operator --( int ) { nIdx--; return *this; }
+};
+
+
+
+
+/*
+ simple Iterator for SPRMs
+*/
+class WW8SprmIter
+{
+ // these members will be updated
+ BYTE* pSprms; // remaining part of the SPRMs ( == start of akt. SPRM)
+ BYTE* pAktParams; // start of akt. SPRM's parameters
+ USHORT nAktId;
+ short nAktSizeBrutto;
+
+ // these members will *not* be updated by UpdateMyMembers()
+ BYTE nVersion;
+ BYTE nDelta;
+ short nRemLen; // length of remaining SPRMs (including akt. SPRM)
+
+ void UpdateMyMembers();
+public:
+ WW8SprmIter( BYTE* pSprms_, short nLen_, BYTE nVersion_ );
+ void SetSprms( BYTE* pSprms_, short nLen_ );
+ BYTE* operator ++( int );
+ BYTE* GetSprms() const { return ( pSprms && (0 < nRemLen) )
+ ? pSprms
+ : 0; }
+ BYTE* GetAktParams() const { return pAktParams; }
+ USHORT GetAktId() const { return nAktId; }
+};
+
+
+
+/*
+ u.a. fuer FKPs auf normale Attr., also ein Attr weniger als Positionen
+*/
+class WW8PLCF // Iterator fuer PLCFs
+{
+ INT32* pPLCF_PosArray; // Pointer auf Pos-Array und auf ganze Struktur
+ char* pPLCF_Contents; // Pointer auf Inhalts-Array-Teil des Pos-Array
+ long nIMax; // Anzahl der Elemente
+ long nIdx;
+ long nStru;
+
+ void ReadPLCF( SvStream* pSt, long nFilePos, long nPLCF );
+
+ /*
+ Falls im Dok ein PLC fehlt und die FKPs solo dastehen,
+ machen wir uns hiermit einen PLC:
+ */
+ void GeneratePLCF( SvStream* pSt, long nPN, long ncpN );
+
+public:
+ WW8PLCF( SvStream* pSt, long nFilePos, long nPLCF,
+ long nStruct, long nStartPos = -1 );
+
+ /*
+ folgender Ctor generiert ggfs. einen PLC aus nPN und ncpN
+ */
+ WW8PLCF( SvStream* pSt, long nFilePos, long nPLCF,
+ long nStruct, long nStartPos, long nPN, long ncpN );
+
+ ~WW8PLCF(){ delete( pPLCF_PosArray ); pPLCF_PosArray = 0; }
+ ULONG GetIdx() const { return (ULONG)nIdx; }
+ void SetIdx( ULONG nI ) { nIdx = (long)nI; }
+ long GetIMax(){ return nIMax; }
+ BOOL SeekPos( long nPos );
+ long Where();
+ BOOL Get( long& rStart, long& rEnd, void*& rpValue );
+ WW8PLCF& operator ++( int ) { if( nIdx < nIMax ) nIdx++; return *this; }
+
+ const void* GetData( long nIdx ) const {
+ return ( nIdx >= nIMax ) ? 0 : (const void*)&pPLCF_Contents[nIdx * nStru]; }
+};
+
+/*
+ fuer Piece Table (bei Schnellspeicherung)
+*/
+class WW8PLCFpcd
+{
+friend class WW8PLCFpcd_Iter;
+ INT32* pPLCF_PosArray; // Pointer auf Pos-Array und auf ganze Struktur
+ char* pPLCF_Contents; // Pointer auf Inhalts-Array-Teil des Pos-Array
+ long nIMax;
+ long nStru;
+
+public:
+ WW8PLCFpcd( SvStream* pSt, long nFilePos, long nPLCF, long nStruct );
+ ~WW8PLCFpcd(){ delete( pPLCF_PosArray ); }
+};
+
+/*
+ mehrere WW8PLCFpcd_Iter koennen auf die gleiche WW8PLCFpcd zeigen !!!
+*/
+class WW8PLCFpcd_Iter
+{
+ WW8PLCFpcd& rPLCF;
+ long nIdx;
+
+public:
+ WW8PLCFpcd_Iter( WW8PLCFpcd& rPLCFpcd, long nStartPos = -1 );
+// ~WW8PLCFpcd_Iter() {}
+ ULONG GetIdx() const { return (ULONG)nIdx; }
+ void SetIdx( ULONG nI ) { nIdx = (long)nI; }
+ long GetIMax(){ return rPLCF.nIMax; }
+ BOOL SeekPos( long nPos );
+// BOOL SeekMaxMainFC( WW8Fib& rWwF, long& rMaxPosData );
+ long Where();
+ BOOL Get( long& rStart, long& rEnd, void*& rpValue );
+ WW8PLCFpcd_Iter& operator ++( int ) { if( nIdx < rPLCF.nIMax ) nIdx++; return *this; }
+};
+
+// PLCF-Typ:
+enum ePLCFT{ CHP=0, PAP, SEP, /*HED, FNR, ENR,*/ PLCF_END };
+
+/*
+ pure virtual:
+*/
+class WW8PLCFx // virtueller Iterator fuer Piece Table Exceptions
+{
+ BYTE nVersion; // Versionsnummer des FIB
+ BOOL bIsSprm; // PLCF von Sprms oder von anderem ( Footnote, ... )
+
+public:
+ WW8PLCFx( BYTE nFibVersion, BOOL bSprm )
+ { bIsSprm = bSprm; nVersion = nFibVersion; }
+
+// virtual ~WW8PLCFx() {}
+ BOOL IsSprm() { return bIsSprm; }
+ virtual ULONG GetIdx() = 0;
+ virtual void SetIdx( ULONG nIdx ) = 0;
+ virtual ULONG GetIdx2();
+ virtual void SetIdx2( ULONG nIdx );
+ virtual BOOL SeekPos( WW8_CP nCpPos ) = 0;
+ virtual long Where() = 0;
+// virtual BYTE* GetSprms( long& rStart, long& rEnd, long& rLen );
+ virtual void GetSprms( WW8PLCFxDesc* p );
+ virtual long GetNoSprms( long& rStart, long&, long& rLen );
+ virtual WW8PLCFx& operator ++( int ) = 0;
+ virtual USHORT GetIstd() const { return 0xffff; }
+ BYTE GetVersion() const { return nVersion; }
+};
+
+enum eCutT { CUT_NONE = 0, CUT_START, CUT_END, CUT_BOTH };
+
+class WW8PLCFx_PCDAttrs : public WW8PLCFx
+{
+ WW8PLCFpcd_Iter* pPcdI;
+ WW8PLCFx_PCD* pPcd;
+ char** pGrpprls; // Attribute an Piece-Table
+ SVBT32 aShortSprm; // mini storage: can contain ONE sprm with
+ // 1 byte param
+ UINT16 nGrpprls; // Attribut Anzahl davon
+
+public:
+ WW8PLCFx_PCDAttrs( BYTE nVersion, WW8PLCFx_PCD* pPLCFx_PCD, WW8ScannerBase* pBase );
+ virtual ~WW8PLCFx_PCDAttrs();
+ virtual ULONG GetIdx();
+ virtual void SetIdx( ULONG nI );
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual long Where();
+ virtual void GetSprms( WW8PLCFxDesc* p );
+ virtual WW8PLCFx& operator ++( int );
+
+ WW8PLCFpcd_Iter* GetIter() const { return pPcdI; }
+};
+
+class WW8PLCFx_PCD : public WW8PLCFx // Iterator fuer Piece Table
+{
+ WW8PLCFpcd_Iter* pPcdI;
+ BOOL bVer67;
+
+public:
+ WW8PLCFx_PCD( BYTE nVersion, WW8PLCFpcd* pPLCFpcd, WW8_CP nStartCp, BOOL bVer67P );
+ virtual ~WW8PLCFx_PCD();
+ virtual ULONG GetIdx();
+ virtual void SetIdx( ULONG nI );
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual long Where();
+// virtual void GetSprms( WW8PLCFxDesc* p );
+ virtual long GetNoSprms( long& rStart, long&, long& rLen );
+ virtual WW8PLCFx& operator ++( int );
+ WW8_CP AktPieceStartFc2Cp( WW8_FC nStartPos );
+ WW8_FC AktPieceStartCp2Fc( WW8_CP nCp );
+ eCutT AktPieceFc2Cp( long& rStartPos, long& rEndPos );
+ WW8PLCFpcd_Iter* GetPLCFIter() { return pPcdI; }
+
+ static INT32 TransformPieceAddress(long nfc, BOOL& bIsUnicodeAddress)
+ {
+ bIsUnicodeAddress = 0 == (0x40000000 & nfc);
+ return bIsUnicodeAddress
+ ? nfc
+ : (nfc & 0x3fffFFFF) / 2;
+ }
+ BOOL IsVersion67() const { return bVer67; }
+};
+
+
+class WW8PLCFx_Fc_FKP : public WW8PLCFx // Iterator fuer Piece Table Exceptions of Fkps
+ // arbeitet nur auf FCs, nicht auf CPs !
+ // ( Low-Level )
+{
+
+
+ class WW8Fkp // Iterator fuer Formatted Disk Page
+ {
+ struct WW8Grpprl
+ {
+ BYTE* pData;
+ USHORT nLen;
+ USHORT nIStd; // nur bei Fkp.Papx gueltig (aktuelle Style-Nr)
+ BOOL bMustDelete;
+ };
+
+ WW8Grpprl* pGrpprl; // Pointer of Meta Array (pointing
+
+ BYTE* pFkp; // gesamter Fkp
+
+ long nItemSize; // entweder 1 Byte oder ein komplettes BX
+ short nIdx; // Pos-Merker
+ ePLCFT ePLCF;
+ char nIMax; // Anzahl der Eintraege
+ BYTE nVersion;
+
+ public:
+ WW8Fkp( BYTE nFibVer, SvStream* pFKPStrm, SvStream* pDataStrm,
+ long nFilePos, long nItemSiz,
+ ePLCFT ePl, WW8_FC nStartFc = -1 );
+ ~WW8Fkp();
+ ULONG GetIdx() const { return (ULONG)nIdx; }
+ void SetIdx( ULONG nI );
+ BOOL SeekPos( long nPos );
+ WW8_FC Where() { return ( nIdx<nIMax)
+ ? ((WW8_FC*)pFkp)[nIdx]
+ : LONG_MAX; }
+ WW8Fkp& operator ++( int ) { if( nIdx < nIMax ) nIdx++;
+ return *this; }
+ BYTE* Get( WW8_FC& rStart, WW8_FC& rEnd, short& rLen );
+ USHORT GetIstd() const { return pGrpprl[ nIdx ].nIStd; }
+
+ /*
+ liefert einen echten Pointer auf das Sprm vom Typ nId,
+ falls ein solches im Fkp drin ist.
+ */
+ BYTE* GetLenAndIStdAndSprms(short& rLen);
+
+ /*
+ ruft GetLenAndIStdAndSprms() auf...
+ */
+ BYTE* HasSprm( USHORT nId );
+
+ ULONG GetParaHeight() const; // fuer Header/Footer bei Papx-Fkps
+
+ BYTE GetVersion() const { return nVersion; }
+ };
+
+
+ WW8PLCFx_PCDAttrs* pPCDAttrs;
+ SvStream* pFKPStrm; // Input-File
+ SvStream* pDataStrm; // Input-File
+ WW8PLCF* pPLCF;
+ WW8Fkp* pFkp;
+ WW8_FC nStartFc;
+
+ BOOL NewFkp();
+
+protected:
+ ePLCFT ePLCF;
+
+public:
+ WW8PLCFx_Fc_FKP( SvStream* pSt, SvStream* pTblSt, SvStream* pDataSt,
+ WW8Fib& rFib, ePLCFT ePl, WW8_FC nStartFcL,
+ WW8PLCFx_PCDAttrs* pPLCFx_PCD );
+ virtual ~WW8PLCFx_Fc_FKP();
+ virtual ULONG GetIdx();
+ virtual void SetIdx( ULONG nIdx );
+ virtual BOOL SeekPos( WW8_FC nFcPos );
+ virtual WW8_FC Where();
+ BYTE* GetSprms( WW8_FC& rStart, WW8_FC& rEnd, long& rLen );
+ virtual WW8PLCFx& operator ++( int );
+ virtual USHORT GetIstd() const;
+ void GetPCDSprms( WW8PLCFxDesc& rDesc );
+ BYTE* HasSprm( USHORT nId );
+ ULONG GetParaHeight() const;
+};
+
+// Iterator fuer Piece Table Exceptions of Fkps arbeitet auf CPs (High-Level)
+class WW8PLCFx_Cp_FKP : public WW8PLCFx_Fc_FKP
+{
+ const WW8ScannerBase& rSBase;
+ WW8PLCFx_PCD* pPcd;
+ WW8_CP nAttrStart, nAttrEnd;
+ BOOL bLineEnd : 1;
+ BOOL bComplex : 1;
+
+ void SearchParaEnd( long nOldEndCp );
+
+public:
+ WW8PLCFx_Cp_FKP( SvStream* pSt, SvStream* pTblSt, SvStream* pDataSt, const WW8ScannerBase&
+ rBase, ePLCFT ePl );
+ virtual ~WW8PLCFx_Cp_FKP();
+ void ResetAttrStartEnd();
+ ULONG GetIdx2();
+ void SetIdx2( ULONG nIdx );
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual WW8_CP Where();
+ virtual void GetSprms( WW8PLCFxDesc* p );
+ virtual WW8PLCFx& operator ++( int );
+};
+
+
+
+class WW8PLCFx_SEPX : public WW8PLCFx // Iterator fuer Piece Table Exceptions of Sepx
+{
+ SvStream* pStrm;
+ WW8PLCF* pPLCF;
+ BYTE* pSprms;
+ USHORT nArrMax;
+ UINT16 nSprmSiz;
+
+public:
+ WW8PLCFx_SEPX( SvStream* pSt, SvStream* pTblxySt, WW8Fib& rFib, WW8_CP nStartCp );
+ virtual ~WW8PLCFx_SEPX();
+ virtual ULONG GetIdx();
+ virtual void SetIdx( ULONG nIdx );
+ long GetIMax() const { return ( pPLCF ) ? pPLCF->GetIMax() : 0; }
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual long Where();
+ virtual void GetSprms( WW8PLCFxDesc* p );
+ virtual WW8PLCFx& operator ++( int );
+ BYTE* HasSprm( USHORT nId ) const;
+ BYTE* HasSprm( USHORT nId, BYTE n2nd ) const;
+ BYTE* HasSprm( USHORT nId, BYTE* pOtherSprms, long nOtherSprmSiz ) const;
+ BOOL Find4Sprms(USHORT nId1, USHORT nId2, USHORT nId3, USHORT nId4,
+ BYTE*& p1, BYTE*& p2, BYTE*& p3, BYTE*& p4 ) const;
+ BOOL CompareSprms( BYTE* pOtherSprms,
+ long nOtherSprmSiz,
+ const SvUShortsSort* pIgnoreSprms = 0 ) const;
+};
+
+// Iterator fuer Fuss-/Endnoten und Anmerkungen
+class WW8PLCFx_SubDoc : public WW8PLCFx
+{
+ WW8PLCF* pRef;
+ WW8PLCF* pTxt;
+
+public:
+ WW8PLCFx_SubDoc( SvStream* pSt, BYTE nVersion, WW8_CP nStartCp,
+ long nFcRef, long nLenRef,
+ long nFcTxt, long nLenTxt, long nStruc = 0 );
+ virtual ~WW8PLCFx_SubDoc();
+ virtual ULONG GetIdx();
+ virtual void SetIdx( ULONG nIdx );
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual long Where();
+
+ // liefert Reference Descriptoren
+ const void* GetData( long nIdx = -1 ) const
+ {
+ return pRef ? pRef->GetData( -1L == nIdx ? pRef->GetIdx()
+ : nIdx ) : 0;
+ }
+
+ /*
+ liefert Angabe, wo Kopf und Fusszeilen-Text zu finden ist
+ */
+ BOOL Get( long& rStart, void*& rpValue );
+ virtual long GetNoSprms( long& rStart, long&, long& rLen );
+ virtual WW8PLCFx& operator ++( int );
+ long Count() { return ( pRef ) ? pRef->GetIMax() : 0; }
+};
+
+class WW8PLCFx_FLD : public WW8PLCFx // Iterator fuer Fuss- und Endnoten
+{
+ WW8PLCFspecial* pPLCF;
+ WW8Fib& rFib;
+
+public:
+ WW8PLCFx_FLD( SvStream* pSt, WW8Fib& rMyFib, short nType, WW8_CP nStartCp );
+ virtual ~WW8PLCFx_FLD();
+ virtual ULONG GetIdx();
+ virtual void SetIdx( ULONG nIdx );
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual long Where();
+ virtual long GetNoSprms( long& rStart, long&, long& rLen );
+ virtual WW8PLCFx& operator ++( int );
+ BOOL GetPara( long nIdx, WW8FieldDesc& rF );
+};
+
+enum eBookStatus { BOOK_NORMAL = 0, BOOK_IGNORE = 0x1, BOOK_ONLY_REF = 0x2 };
+
+class WW8PLCFx_Book : public WW8PLCFx // Iterator fuer Booknotes
+{
+ WW8PLCFspecial* pBook[2]; // Start- und EndPosition
+ char** pBookNames; // Name
+ eBookStatus* pStatus;
+ long nIMax; // Anzahl der Booknotes
+ USHORT nIsEnd;
+public:
+ WW8PLCFx_Book( SvStream* pSt, SvStream* pTblSt, WW8Fib& rFib, WW8_CP nStartCp );
+ virtual ~WW8PLCFx_Book();
+ long GetIMax(){ return nIMax; }
+ virtual ULONG GetIdx();
+ virtual void SetIdx( ULONG nI );
+ virtual ULONG GetIdx2();
+ virtual void SetIdx2( ULONG nIdx );
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual long Where();
+ virtual long GetNoSprms( long& rStart, long& rEnd, long& rLen );
+ virtual WW8PLCFx& operator ++( int );
+ const char* GetName() const
+ { return ( !nIsEnd && ( (long)(pBook[0]->GetIdx()) < nIMax ) )
+ ? pBookNames[pBook[0]->GetIdx()] : 0; }
+ WW8_CP GetStartPos() const
+ { return ( nIsEnd ) ? LONG_MAX : pBook[0]->Where(); }
+ long GetLen() const;
+ BOOL GetIsEnd() const { return ( nIsEnd ) ? TRUE : FALSE; }
+ long GetHandle() const;
+ BOOL SetStatus( WW8_CP nStartRegion, WW8_CP nEndRegion, char* pName,
+ eBookStatus eStat );
+ eBookStatus GetStatus() const;
+};
+
+/*
+ hiermit arbeiten wir draussen:
+*/
+struct WW8PLCFManResult
+{
+ WW8_CP nCpPos; // Attribut-Anfangsposition
+ long nMemLen; // Laenge dazu
+ long nCp2OrIdx; // footnote-textpos oder Index in PLCF
+ WW8_CP nAktCp; // wird nur vom Aufrufer benutzt
+ BYTE* pMemPos; // Mem-Pos fuer Sprms
+ USHORT nSprmId; // Sprm-Id ( 0 = ungueltige Id -> ueberspringen! )
+ // (2..255) oder Pseudo-Sprm-Id (256..260)
+ // bzw. ab Winword-Ver8 die Sprm-Id (800..)
+ BYTE nFlags; // Absatz- oder Section-Anfang
+};
+
+/*
+ hiermit arbeitet der Manager drinnen:
+*/
+struct WW8PLCFxDesc
+{
+ WW8PLCFx* pPLCFx;
+ UShortStk* pIdStk;// Speicher fuer Attr-Id fuer Attr-Ende(n)
+ BYTE* pMemPos; // wo liegen die Sprm(s)
+ long nStartPos;
+ long nEndPos;
+ long nCp2OrIdx; // wo liegen die NoSprm(s)
+ long nSprmsLen; // wie viele Bytes fuer weitere Sprms / Laenge Fussnote
+ long nCpOfs; // fuer Offset Header .. Footnote
+ BOOL bFirstSprm; // fuer Erkennung erster Sprm einer Gruppe
+ BOOL bRealLineEnd; // FALSE bei Pap-Piece-Ende
+};
+
+
+#define MAN_ANZ_PLCF 12
+
+struct WW8PLCFxSave1
+{
+ ULONG nPLCFxPos;
+ ULONG nPLCFxPos2; // fuer PLCF_Cp_Fkp: PieceIter-Pos
+ long nPLCFxMemOfs;
+};
+
+struct WW8PLCFxSaveAll
+{
+ WW8PLCFxSave1 aS[MAN_ANZ_PLCF];
+};
+
+#define MAN_MASK_NEW_PAP 1 // neue Zeile
+#define MAN_MASK_NEW_SEP 2 // neue Section
+
+
+#define MAN_MAINTEXT 0 // Defines fuer PLCFMan-ctor
+#define MAN_FTN 1
+#define MAN_EDN 2
+#define MAN_HDFT 3
+#define MAN_AND 4
+#define MAN_TXBX 5
+#define MAN_TXBX_HDFT 6
+
+#ifndef DUMP
+
+class WW8PLCFMan
+{
+ WW8PLCFxDesc aD[MAN_ANZ_PLCF];
+ WW8PLCFxDesc *pChp, *pPap, *pSep, *pFld, *pFldTxbx, *pFldTxbxHdft,
+ *pFtn, *pEdn,
+ *pBkm, *pPcd, *pPcdA, *pAnd;
+ WW8PLCFspecial *pFdoa, *pTxbx, *pTxbxBkd;
+
+ WW8Fib* pWwFib;
+ long nLineEnd; // zeigt *hinter* das <CR>
+
+ USHORT nPLCF; // so viele PLCFe werden verwaltet
+ short nManType;
+
+ short WhereIdx( BOOL* pbStart, long* pPos );
+ void AdjustEnds( WW8PLCFxDesc& rDesc );
+ void GetNewSprms( WW8PLCFxDesc& rDesc );
+ void GetNewNoSprms( WW8PLCFxDesc& rDesc );
+ void GetSprmStart( short nIdx, WW8PLCFManResult* pRes );
+ void GetSprmEnd( short nIdx, WW8PLCFManResult* pRes );
+ void GetNoSprmStart( short nIdx, WW8PLCFManResult* pRes );
+ void GetNoSprmEnd( short nIdx, WW8PLCFManResult* pRes );
+ void AdvSprm( short nIdx, BOOL bStart );
+ void AdvNoSprm( short nIdx, BOOL bStart );
+
+public:
+ WW8PLCFMan( WW8ScannerBase* pBase, short nType, long nStartCp );
+ ~WW8PLCFMan();
+
+ /*
+ Where fragt, an welcher naechsten Position sich irgendein
+ Attr aendert...
+ */
+ long Where();
+
+ BOOL Get( WW8PLCFManResult* pResult );
+ WW8PLCFMan& operator ++( int );
+ USHORT GetColl() const; // liefert aktuellen Style
+ WW8PLCFx_FLD* GetFld() const;
+ WW8PLCFx_SubDoc* GetEdn() const { return (WW8PLCFx_SubDoc*)pEdn->pPLCFx; }
+ WW8PLCFx_SubDoc* GetFtn() const { return (WW8PLCFx_SubDoc*)pFtn->pPLCFx; }
+ WW8PLCFx_SubDoc* GetAtn() const { return (WW8PLCFx_SubDoc*)pAnd->pPLCFx; }
+ WW8PLCFx_Book* GetBook() const { return (WW8PLCFx_Book*)pBkm->pPLCFx; }
+ long GetCpOfs() const { return pChp->nCpOfs; } // fuer Header/Footer...
+
+ /*
+ fragt, ob *aktueller Absatz* einen Sprm diesen Typs hat
+ */
+ BYTE* HasParaSprm( USHORT nId ) const;
+
+ /*
+ fragt, ob *aktueller Textrun* einen Sprm diesen Typs hat
+ */
+ BYTE* HasCharSprm( USHORT nId ) const;
+
+ WW8PLCFx_Cp_FKP* GetChpPLCF(){ return (WW8PLCFx_Cp_FKP*)pChp->pPLCFx; }
+ WW8PLCFx_Cp_FKP* GetPapPLCF(){ return (WW8PLCFx_Cp_FKP*)pPap->pPLCFx; }
+ WW8PLCFx_SEPX* GetSepPLCF(){ return (WW8PLCFx_SEPX*)pSep->pPLCFx; }
+ WW8PLCFxDesc* GetPap(){ return pPap; }
+ void Save1PLCFx( WW8PLCFxDesc* p, WW8PLCFxSave1* pSave ) const;
+ void Restore1PLCFx( WW8PLCFxDesc* p, WW8PLCFxSave1* pSave );
+ void SaveAllPLCFx( WW8PLCFxSaveAll* pSave );
+ void RestoreAllPLCFx( WW8PLCFxSaveAll* pSave );
+ WW8PLCFspecial* GetFdoa() { return pFdoa; }
+ WW8PLCFspecial* GetTxbx() { return pTxbx; }
+ WW8PLCFspecial* GetTxbxBkd(){ return pTxbxBkd; }
+ short GetManType() { return nManType; }
+};
+
+#endif // !DUMP
+
+class WW8ScannerBase
+{
+friend WW8PLCFx_PCDAttrs::WW8PLCFx_PCDAttrs( BYTE nVersion, WW8PLCFx_PCD* pPLCFx_PCD, WW8ScannerBase* pBase );
+friend WW8PLCFx_Cp_FKP::WW8PLCFx_Cp_FKP( SvStream*, SvStream*, SvStream*,
+ const WW8ScannerBase&, ePLCFT );
+
+#ifdef DUMP
+friend static void DumpPLCFText( WW8_FC nPos, long nLen, long nOfs, char* pName,
+ WW8ScannerBase* pBase );
+friend static void DumpFtnShort( short nId, long nPos, long nFieldLen );
+#else
+friend WW8PLCFMan::WW8PLCFMan( WW8ScannerBase*, short, long );
+friend class SwWw8ImplReader;
+#endif
+
+ WW8Fib* pWw8Fib;
+ WW8PLCFx_Cp_FKP* pChpPLCF; // Character-Attrs
+ WW8PLCFx_Cp_FKP* pPapPLCF; // Para-Attrs
+ WW8PLCFx_SEPX* pSepPLCF; // Section-Attrs
+ WW8PLCFx_SubDoc* pFtnPLCF; // Footnotes
+ WW8PLCFx_SubDoc* pEdnPLCF; // EndNotes
+ WW8PLCFx_SubDoc* pAndPLCF; // Anmerkungen
+ WW8PLCFx_FLD* pFldPLCF; // Fields in Main Text
+ WW8PLCFx_FLD* pFldHdFtPLCF; // Fields in Header / Footer
+ WW8PLCFx_FLD* pFldTxbxPLCF; // Fields in Textboxes in Main Text
+ WW8PLCFx_FLD* pFldTxbxHdFtPLCF; // Fields in Textboxes in Header / Footer
+ WW8PLCFx_FLD* pFldFtnPLCF; // Fields in Footnotes
+ WW8PLCFx_FLD* pFldEdnPLCF; // Fields in Endnotes
+ WW8PLCFx_FLD* pFldAndPLCF; // Fields in Anmerkungen
+ WW8PLCFspecial* pMainFdoa; // Graphic Primitives in Main Text
+ WW8PLCFspecial* pHdFtFdoa; // Graphic Primitives in Header / Footer
+ WW8PLCFspecial* pMainTxbx; // Textboxen in Main Text
+ WW8PLCFspecial* pMainTxbxBkd; // Break-Deskriptoren fuer diese
+ WW8PLCFspecial* pHdFtTxbx; // TextBoxen in Header / Footer
+ WW8PLCFspecial* pHdFtTxbxBkd; // Break-Deskriptoren fuer diese
+ WW8PLCFx_Book* pBook; // Bookmarks
+
+ WW8PLCFpcd* pPiecePLCF; // fuer FastSave ( Basis-PLCF ohne Iterator )
+ WW8PLCFpcd_Iter* pPieceIter; // fuer FastSave ( Iterator dazu )
+ WW8PLCFx_PCD* pPLCFx_PCD; // dito
+ WW8PLCFx_PCDAttrs* pPLCFx_PCDAttrs;
+ char** pPieceGrpprls; // Attribute an Piece-Table
+ UINT16 nPieceGrpprls; // Anzahl davon
+
+ WW8PLCFpcd* OpenPieceTable( SvStream* pStr, WW8Fib* pWwF );
+ void DeletePieceTable();
+
+public:
+ WW8ScannerBase( SvStream* pSt, SvStream* pTblSt, SvStream* pDataSt,
+ WW8Fib* pWwF );
+ ~WW8ScannerBase();
+ BOOL AreThereFootnotes() { return pFtnPLCF->Count() > 0; };
+ BOOL AreThereEndnotes() { return pEdnPLCF->Count() > 0; };
+ static DateTime WW8DTTM2DateTime(long lDTTM);
+
+ WW8_CP WW8Fc2Cp( WW8_FC nFcPos ) const ;
+ WW8_FC WW8Cp2Fc( WW8_CP nCpPos, BOOL* pIsUnicode = 0,
+ WW8_CP* pNextPieceCp = 0, BOOL* pTestFlag = 0 ) const;
+
+ USHORT WW8ReadString( SvStream& rStrm, String* pString,
+ WW8_CP nAktStartCp, long nTotalLen,
+ unsigned char** ppStr = 0 ) const;
+};
+
+
+
+
+class WW8Fib
+{
+public:
+ /*
+ von uns verlangte Programm-Version:
+ in Ctor wird geprueft, ob sie zu nFib passt
+ */
+ BYTE nVersion; // 6 steht fuer "WinWord 6 oder WinWord 95",
+ // 7 steht fuer "nur WinWord 95"
+ // 8 steht fuer "nur WinWord 97"
+ /*
+ Fehlerstatus
+ */
+ ULONG nFibError;
+ /*
+ vom Ctor aus dem FIB gelesene Daten
+ (entspricht nur ungefaehr der tatsaechlichen Struktur
+ des Winword-FIB)
+ */
+ UINT16 wIdent; // 0x0 int magic number
+ UINT16 nFib; // 0x2 FIB version written
+ UINT16 nProduct; // 0x4 product version written by
+ INT16 lid; // 0x6 language stamp---localized version;
+ WW8_PN pnNext; // 0x8
+
+ UINT16 fDot :1; // 0xa 0001
+ UINT16 fGlsy :1;
+ UINT16 fComplex :1; // 0004 when 1, file is in complex, fast-saved format.
+ UINT16 fHasPic :1; // 0008 file contains 1 or more pictures
+ UINT16 cQuickSaves :4; // 00F0 count of times file was quicksaved
+ UINT16 fEncrypted :1; //0100 1 if file is encrypted, 0 if not
+ UINT16 fWhichTblStm :1; //0200 When 0, this fib refers to the table stream
+ // named "0Table", when 1, this fib refers to the
+ // table stream named "1Table". Normally, a file
+ // will have only one table stream, but under unusual
+ // circumstances a file may have table streams with
+ // both names. In that case, this flag must be used
+ // to decide which table stream is valid.
+ // UINT16 u1 :2;
+ UINT16 fExtChar :1; // 1000 =1, when using extended character set in file
+ // UINT16 u2 :3;
+
+ UINT16 nFibBack; // 0xc
+ INT16 lKey1; // 0xe file encrypted key, only valid if fEncrypted.
+ INT16 lKey2; // 0x10 key in 2 Portionen wg. Misalignment
+ UINT8 envr; // 0x12 environment in which file was created
+ // 0 created by Win Word / 1 created by Mac Word
+ BYTE fMac :1; // 0x13 when 1, this file was last saved in the Mac environment
+ BYTE fEmptySpecial :1;
+ BYTE fLoadOverridePage :1;
+ BYTE fFuturesavedUndo :1;
+ BYTE fWord97Saved :1;
+ BYTE :3;
+
+ UINT16 chse; // 0x14 default extended character set id for text in document stream. (overidden by chp.chse)
+ // 0 = ANSI / 256 Macintosh character set.
+ UINT16 chseTables; // 0x16 default extended character set id for text in
+ // internal data structures: 0 = ANSI, 256 = Macintosh
+ WW8_FC fcMin; // 0x18 file offset of first character of text
+ WW8_FC fcMac; // 0x1c file offset of last character of text + 1
+
+ // Einschub fuer WW8 *****************************************************
+ UINT16 csw; // Count of fields in the array of "shorts"
+
+ // Marke: "rgsw" Beginning of the array of shorts
+ UINT16 wMagicCreated; // unique number Identifying the File's creator
+ // 0x6A62 is the creator ID for Word and is reserved.
+ // Other creators should choose a different value.
+ UINT16 wMagicRevised; // identifies the File's last modifier
+ UINT16 wMagicCreatedPrivate; // private data
+ UINT16 wMagicRevisedPrivate; // private data
+ /*
+ INT16 pnFbpChpFirst_W6; // not used
+ INT16 pnChpFirst_W6; // not used
+ INT16 cpnBteChp_W6; // not used
+ INT16 pnFbpPapFirst_W6; // not used
+ INT16 pnPapFirst_W6; // not used
+ INT16 cpnBtePap_W6; // not used
+ INT16 pnFbpLvcFirst_W6; // not used
+ INT16 pnLvcFirst_W6; // not used
+ INT16 cpnBteLvc_W6; // not used
+ */
+ INT16 lidFE; // Language id if document was written by Far East version
+ // of Word (i.e. FIB.fFarEast is on)
+ UINT16 clw; // Number of fields in the array of longs
+
+ // Ende des Einschubs fuer WW8 *******************************************
+
+ // Marke: "rglw" Beginning of the array of longs
+ WW8_FC cbMac; // 0x20 file offset of last byte written to file + 1.
+
+ // WW8_FC u4[4]; // 0x24
+ WW8_CP ccpText; // 0x34 length of main document text stream
+ WW8_CP ccpFtn; // 0x38 length of footnote subdocument text stream
+ WW8_CP ccpHdr; // 0x3c length of header subdocument text stream
+ WW8_CP ccpMcr; // 0x40 length of macro subdocument text stream
+ WW8_CP ccpAtn; // 0x44 length of annotation subdocument text stream
+ WW8_CP ccpEdn; // 0x48 length of endnote subdocument text stream
+ WW8_CP ccpTxbx; // 0x4c length of textbox subdocument text stream
+ WW8_CP ccpHdrTxbx; // 0x50 length of header textbox subdocument text stream
+
+ // Einschub fuer WW8 *****************************************************
+ INT32 pnFbpChpFirst; // when there was insufficient memory for Word to expand
+ // the PLCFbte at save time, the PLCFbte is written
+ // to the file in a linked list of 512-byte pieces
+ // starting with this pn.
+ /*
+ // folgende Felder existieren zwar so in der Datei,
+ // wir benutzen jedoch unten deklarierte General-Variablen
+ // fuer Ver67 und Ver8 gemeinsam.
+ INT32 pnChpFirst; // the page number of the lowest numbered page in the
+ // document that records CHPX FKP information
+ INT32 cpnBteChp; // count of CHPX FKPs recorded in file. In non-complex
+ // files if the number of entries in the PLCFbteChpx
+ // is less than this, the PLCFbteChpx is incomplete.
+ */
+ INT32 pnFbpPapFirst; // when there was insufficient memory for Word to expand
+ // the PLCFbte at save time, the PLCFbte is written to
+ // the file in a linked list of 512-byte pieces
+ // starting with this pn
+ /*
+ // folgende Felder existieren zwar so in der Datei,
+ // wir benutzen jedoch unten deklarierte General-Variablen
+ // fuer Ver67 und Ver8 gemeinsam.
+ INT32 pnPapFirst; // the page number of the lowest numbered page in the
+ // document that records PAPX FKP information
+ INT32 cpnBtePap; // count of PAPX FKPs recorded in file. In non-complex
+ // files if the number of entries in the PLCFbtePapx is
+ // less than this, the PLCFbtePapx is incomplete.
+ */
+ INT32 pnFbpLvcFirst; // when there was insufficient memory for Word to expand
+ // the PLCFbte at save time, the PLCFbte is written to
+ // the file in a linked list of 512-byte pieces
+ // starting with this pn
+ INT32 pnLvcFirst; // the page number of the lowest numbered page in the
+ // document that records LVC FKP information
+ INT32 cpnBteLvc; // count of LVC FKPs recorded in file. In non-complex
+ // files if the number of entries in the PLCFbtePapx is
+ // less than this, the PLCFbtePapx is incomplete.
+ INT32 fcIslandFirst; // ?
+ INT32 fcIslandLim; // ?
+ UINT16 cfclcb; // Number of fields in the array of FC/LCB pairs.
+
+ // Ende des Einschubs fuer WW8 *******************************************
+
+ // Marke: "rgfclcb" Beginning of array of FC/LCB pairs.
+ WW8_FC fcStshfOrig; // file offset of original allocation for STSH in table
+ // stream. During fast save Word will attempt to reuse
+ // this allocation if STSH is small enough to fit.
+ INT32 lcbStshfOrig; // 0x5c count of bytes of original STSH allocation
+ WW8_FC fcStshf; // 0x60 file offset of STSH in file.
+ INT32 lcbStshf; // 0x64 count of bytes of current STSH allocation
+ WW8_FC fcPlcffndRef; // 0x68 file offset of footnote reference PLCF.
+ INT32 lcbPlcffndRef; // 0x6c count of bytes of footnote reference PLCF
+ // == 0 if no footnotes defined in document.
+
+ WW8_FC fcPlcffndTxt; // 0x70 file offset of footnote text PLCF.
+ INT32 lcbPlcffndTxt; // 0x74 count of bytes of footnote text PLCF.
+ // == 0 if no footnotes defined in document
+
+ WW8_FC fcPlcfandRef; // 0x78 file offset of annotation reference PLCF.
+ INT32 lcbPlcfandRef; // 0x7c count of bytes of annotation reference PLCF.
+
+ WW8_FC fcPlcfandTxt; // 0x80 file offset of annotation text PLCF.
+ INT32 lcbPlcfandTxt; // 0x84 count of bytes of the annotation text PLCF
+
+ WW8_FC fcPlcfsed; // 8x88 file offset of section descriptor PLCF.
+ INT32 lcbPlcfsed; // 0x8c count of bytes of section descriptor PLCF.
+
+ WW8_FC fcPlcfpad; // 0x90 file offset of paragraph descriptor PLCF
+ INT32 lcbPlcfpad; // 0x94 count of bytes of paragraph descriptor PLCF.
+ // ==0 if file was never viewed in Outline view.
+ // Should not be written by third party creators
+
+ WW8_FC fcPlcfphe; // 0x98 file offset of PLCF of paragraph heights.
+ INT32 lcbPlcfphe; // 0x9c count of bytes of paragraph height PLCF.
+ // ==0 when file is non-complex.
+
+ WW8_FC fcSttbfglsy; // 0xa0 file offset of glossary string table.
+ INT32 lcbSttbfglsy; // 0xa4 count of bytes of glossary string table.
+ // == 0 for non-glossary documents.
+ // !=0 for glossary documents.
+
+ WW8_FC fcPlcfglsy; // 0xa8 file offset of glossary PLCF.
+ INT32 lcbPlcfglsy; // 0xac count of bytes of glossary PLCF.
+ // == 0 for non-glossary documents.
+ // !=0 for glossary documents.
+
+ WW8_FC fcPlcfhdd; // 0xb0 byte offset of header PLCF.
+ INT32 lcbPlcfhdd; // 0xb4 count of bytes of header PLCF.
+ // == 0 if document contains no headers
+
+ WW8_FC fcPlcfbteChpx; // 0xb8 file offset of character property bin table.PLCF.
+ INT32 lcbPlcfbteChpx;// 0xbc count of bytes of character property bin table PLCF.
+
+ WW8_FC fcPlcfbtePapx; // 0xc0 file offset of paragraph property bin table.PLCF.
+ INT32 lcbPlcfbtePapx;// 0xc4 count of bytes of paragraph property bin table PLCF.
+
+ WW8_FC fcPlcfsea; // 0xc8 file offset of PLCF reserved for private use. The SEA is 6 bytes long.
+ INT32 lcbPlcfsea; // 0xcc count of bytes of private use PLCF.
+
+ WW8_FC fcSttbfffn; // 0xd0 file offset of font information STTBF. See the FFN file structure definition.
+ INT32 lcbSttbfffn; // 0xd4 count of bytes in sttbfffn.
+
+ WW8_FC fcPlcffldMom; // 0xd8 offset in doc stream to the PLCF of field positions in the main document.
+ INT32 lcbPlcffldMom; // 0xdc
+
+ WW8_FC fcPlcffldHdr; // 0xe0 offset in doc stream to the PLCF of field positions in the header subdocument.
+ INT32 lcbPlcffldHdr; // 0xe4
+
+ WW8_FC fcPlcffldFtn; // 0xe8 offset in doc stream to the PLCF of field positions in the footnote subdocument.
+ INT32 lcbPlcffldFtn; // 0xec
+
+ WW8_FC fcPlcffldAtn; // 0xf0 offset in doc stream to the PLCF of field positions in the annotation subdocument.
+ INT32 lcbPlcffldAtn; // 0xf4
+
+ WW8_FC fcPlcffldMcr; // 0xf8 offset in doc stream to the PLCF of field positions in the macro subdocument.
+ INT32 lcbPlcffldMcr; // 9xfc
+
+ WW8_FC fcSttbfbkmk; // 0x100 offset in document stream of the STTBF that records bookmark names in the main document
+ INT32 lcbSttbfbkmk; // 0x104
+
+ WW8_FC fcPlcfbkf; // 0x108 offset in document stream of the PLCF that records the beginning CP offsets of bookmarks in the main document. See BKF
+ INT32 lcbPlcfbkf; // 0x10c
+
+ WW8_FC fcPlcfbkl; // 0x110 offset in document stream of the PLCF that records the ending CP offsets of bookmarks recorded in the main document. See the BKL structure definition.
+ INT32 lcbPlcfbkl; // 0x114 INT32
+
+ WW8_FC fcCmds; // 0x118 FC
+ INT32 lcbCmds; // 0x11c
+
+ WW8_FC fcPlcfmcr; // 0x120 FC
+ INT32 lcbPlcfmcr; // 0x124
+
+ WW8_FC fcSttbfmcr; // 0x128 FC
+ INT32 lcbSttbfmcr; // 0x12c
+
+ WW8_FC fcPrDrvr; // 0x130 file offset of the printer driver information (names of drivers, port etc...)
+ INT32 lcbPrDrvr; // 0x134 count of bytes of the printer driver information (names of drivers, port etc...)
+
+ WW8_FC fcPrEnvPort; // 0x138 file offset of the print environment in portrait mode.
+ INT32 lcbPrEnvPort; // 0x13c count of bytes of the print environment in portrait mode.
+
+ WW8_FC fcPrEnvLand; // 0x140 file offset of the print environment in landscape mode.
+ INT32 lcbPrEnvLand; // 0x144 count of bytes of the print environment in landscape mode.
+
+ WW8_FC fcWss; // 0x148 file offset of Window Save State data structure. See WSS.
+ INT32 lcbWss; // 0x14c count of bytes of WSS. ==0 if unable to store the window state.
+
+ WW8_FC fcDop; // 0x150 file offset of document property data structure.
+ INT32 lcbDop; // 0x154 count of bytes of document properties.
+ // cbDOP is 84 when nFib < 103
+
+
+ WW8_FC fcSttbfAssoc; // 0x158 offset to STTBF of associated strings. See STTBFASSOC.
+ INT32 cbSttbfAssoc; // 0x15C
+
+ WW8_FC fcClx; // 0x160 file offset of beginning of information for complex files.
+ INT32 lcbClx; // 0x164 count of bytes of complex file information. 0 if file is non-complex.
+
+ WW8_FC fcPlcfpgdFtn; // 0x168 file offset of page descriptor PLCF for footnote subdocument.
+ INT32 lcbPlcfpgdFtn; // 0x16C count of bytes of page descriptor PLCF for footnote subdocument.
+ // ==0 if document has not been paginated. The length of the PGD is 8 bytes.
+
+ WW8_FC fcAutosaveSource; // 0x170 file offset of the name of the original file.
+ INT32 lcbAutosaveSource; // 0x174 count of bytes of the name of the original file.
+
+ WW8_FC fcGrpStAtnOwners; // 0x178 group of strings recording the names of the owners of annotations
+ INT32 lcbGrpStAtnOwners; // 0x17C count of bytes of the group of strings
+
+ WW8_FC fcSttbfAtnbkmk; // 0x180 file offset of the sttbf that records names of bookmarks in the annotation subdocument
+ INT32 lcbSttbfAtnbkmk; // 0x184 length in bytes of the sttbf that records names of bookmarks in the annotation subdocument
+
+ // Einschubs fuer WW67 ***************************************************
+
+ // INT16 wSpare4Fib; // Reserve, muss hier nicht deklariert werden
+
+ /*
+ // folgende Felder existieren zwar so in der Datei,
+ // wir benutzen jedoch unten deklarierte General-Variablen
+ // fuer Ver67 und Ver8 gemeinsam.
+ WW8_PN pnChpFirst; // the page number of the lowest numbered page in
+ // the document that records CHPX FKP information
+ WW8_PN pnPapFirst; // the page number of the lowest numbered page in
+ // the document that records PAPX FKP information
+
+ WW8_PN cpnBteChp; // count of CHPX FKPs recorded in file. In non-complex
+ // files if the number of entries in the PLCFbteChpx is
+ // less than this, the PLCFbteChpx is incomplete.
+ WW8_PN cpnBtePap; // count of PAPX FKPs recorded in file. In non-complex
+ // files if the number of entries in the PLCFbtePapx is
+ // less than this, the PLCFbtePapx is incomplete.
+ */
+
+ // Ende des Einschubs fuer WW67 ******************************************
+
+ WW8_FC fcPlcfdoaMom; // 0x192 file offset of the FDOA (drawn object) PLCF for main document.
+ // ==0 if document has no drawn objects. The length of the FDOA is 6 bytes.
+ // ab Ver8 unused
+ INT32 lcbPlcfdoaMom; // 0x196 length in bytes of the FDOA PLCF of the main document
+ // ab Ver8 unused
+ WW8_FC fcPlcfdoaHdr; // 0x19A file offset of the FDOA (drawn object) PLCF for the header document.
+ // ==0 if document has no drawn objects. The length of the FDOA is 6 bytes.
+ // ab Ver8 unused
+ INT32 lcbPlcfdoaHdr; // 0x19E length in bytes of the FDOA PLCF of the header document
+ // ab Ver8 unused
+
+ WW8_FC fcPlcfspaMom; // offset in table stream of the FSPA PLCF for main document.
+ // == 0 if document has no office art objects
+ // war in Ver67 nur leere Reserve
+ INT32 lcbPlcfspaMom; // length in bytes of the FSPA PLCF of the main document
+ // war in Ver67 nur leere Reserve
+ WW8_FC fcPlcfspaHdr; // offset in table stream of the FSPA PLCF for header document.
+ // == 0 if document has no office art objects
+ // war in Ver67 nur leere Reserve
+ INT32 lcbPlcfspaHdr; // length in bytes of the FSPA PLCF of the header document
+ // war in Ver67 nur leere Reserve
+
+ WW8_FC fcPlcfAtnbkf; // 0x1B2 file offset of BKF (bookmark first) PLCF of the annotation subdocument
+ INT32 lcbPlcfAtnbkf; // 0x1B6 length in bytes of BKF (bookmark first) PLCF of the annotation subdocument
+
+ WW8_FC fcPlcfAtnbkl; // 0x1BA file offset of BKL (bookmark last) PLCF of the annotation subdocument
+ INT32 lcbPlcfAtnbkl; // 0x1BE length in bytes of BKL (bookmark first) PLCF of the annotation subdocument
+
+ WW8_FC fcPms; // 0x1C2 file offset of PMS (Print Merge State) information block
+ INT32 lcbPMS; // 0x1C6 length in bytes of PMS
+
+ WW8_FC fcFormFldSttbf; // 0x1CA file offset of form field Sttbf which contains strings used in form field dropdown controls
+ INT32 lcbFormFldSttbf; // 0x1CE length in bytes of form field Sttbf
+
+ WW8_FC fcPlcfendRef; // 0x1D2 file offset of PLCFendRef which points to endnote references in the main document stream
+ INT32 lcbPlcfendRef; // 0x1D6
+
+ WW8_FC fcPlcfendTxt; // 0x1DA file offset of PLCFendRef which points to endnote text in the endnote document
+ // stream which corresponds with the PLCFendRef
+ INT32 lcbPlcfendTxt; // 0x1DE
+
+ WW8_FC fcPlcffldEdn; // 0x1E2 offset to PLCF of field positions in the endnote subdoc
+ INT32 lcbPlcffldEdn; // 0x1E6
+
+ WW8_FC fcPlcfpgdEdn; // 0x1EA offset to PLCF of page boundaries in the endnote subdoc.
+ INT32 lcbPlcfpgdEdn; // 0x1EE
+
+
+ WW8_FC fcDggInfo; // offset in table stream of the office art object table data.
+ // The format of office art object table data is found in a separate document.
+ // war in Ver67 nur leere Reserve
+ INT32 lcbDggInfo; // length in bytes of the office art object table data
+ // war in Ver67 nur leere Reserve
+
+ WW8_FC fcSttbfRMark; // 0x1fa offset to STTBF that records the author abbreviations...
+ INT32 lcbSttbfRMark; // 0x1fe
+ WW8_FC fcSttbfCaption; // 0x202 offset to STTBF that records caption titles...
+ INT32 lcbSttbfCaption; // 0x206
+ WW8_FC fcSttbAutoCaption; // offset in table stream to the STTBF that records the object names and
+ // indices into the caption STTBF for objects which get auto captions.
+ INT32 lcbSttbAutoCaption; // 0x20e
+
+ WW8_FC fcPlcfwkb; // 0x212 offset to PLCF that describes the boundaries of contributing documents...
+ INT32 lcbPlcfwkb; // 0x216
+
+ WW8_FC fcPlcfspl; // offset in table stream of PLCF (of SPLS structures) that records spell check state
+ // war in Ver67 nur leere Reserve
+ INT32 lcbPlcfspl; // war in Ver67 nur leere Reserve
+
+ WW8_FC fcPlcftxbxTxt; // 0x222 ...PLCF of beginning CP in the text box subdoc
+ INT32 lcbPlcftxbxTxt; // 0x226
+ WW8_FC fcPlcffldTxbx; // 0x22a ...PLCF of field boundaries recorded in the textbox subdoc.
+ INT32 lcbPlcffldTxbx; // 0x22e
+ WW8_FC fcPlcfHdrtxbxTxt;// 0x232 ...PLCF of beginning CP in the header text box subdoc
+ INT32 lcbPlcfHdrtxbxTxt;// 0x236
+ WW8_FC fcPlcffldHdrTxbx;// 0x23a ...PLCF of field boundaries recorded in the header textbox subdoc.
+ INT32 lcbPlcffldHdrTxbx;// 0x23e
+
+ /*
+ spezielle Listenverwaltung fuer WW8
+ */
+ WW8_FC fcPlcfLst; // 0x02e2 offset in the table stream of list format information.
+ INT32 lcbPlcfLst; // 0x02e6 length
+ WW8_FC fcPlfLfo; // 0x02ea offset in the table stream of list format override information.
+ INT32 lcbPlfLfo; // 0x02ee length
+ /*
+ spezielle Break-Verwaltung fuer Text-Box-Stories in WW8
+ */
+ WW8_FC fcPlcftxbxBkd; // 0x02f2 PLCF fuer TextBox-Break-Deskriptoren im Maintext
+ INT32 lcbPlcftxbxBkd; // 0x02f6
+ WW8_FC fcPlcfHdrtxbxBkd;// 0x02fa PLCF fuer TextBox-Break-Deskriptoren im Header-/Footer-Bereich
+ INT32 lcbPlcfHdrtxbxBkd;// 0x02fe
+
+ // 0x302 - 372 == ignore
+ /*
+ ListNames (skip to here!)
+ */
+ WW8_FC fcSttbListNames;// 0x0372 PLCF for Listname Table
+ INT32 lcbSttbListNames;// 0x0376
+ /*
+ General-Varaiblen, die fuer Ver67 und Ver8 verwendet werden,
+ obwohl sie in der jeweiligen DATEI verschiedene Groesse haben:
+ */
+ INT32 pnChpFirst;
+ INT32 pnPapFirst;
+ INT32 cpnBteChp;
+ INT32 cpnBtePap;
+ /*
+ nun wird lediglich noch ein Ctor benoetigt
+ */
+ WW8Fib( SvStream& rStrm, BYTE nWantedVersion,UINT32 nOffset=0 );
+
+ /* leider falsch, man braucht auch noch einen fuer den Export */
+ WW8Fib( BYTE nVersion = 6 );
+ BOOL Write( SvStream& rStrm );
+};
+
+
+class WW8Style
+{
+protected:
+ WW8Fib& rFib;
+ SvStream& rSt;
+ long nStyleStart;
+ long nStyleLen;
+// WW8_STSHI* pStishi;
+
+ UINT16 cstd; // Count of styles in stylesheet
+ UINT16 cbSTDBaseInFile; // Length of STD Base as stored in a file
+ UINT16 fStdStylenamesWritten : 1; // Are built-in stylenames stored?
+ UINT16 : 15; // Spare flags
+ UINT16 stiMaxWhenSaved; // Max sti known when this file was written
+ UINT16 istdMaxFixedWhenSaved; // How many fixed-index istds are there?
+ UINT16 nVerBuiltInNamesWhenSaved; // Current version of built-in stylenames
+ UINT16 ftcStandardChpStsh; // ftc used by StandardChpStsh for this document
+
+public:
+ WW8Style( SvStream& rSt, WW8Fib& rFibPara );
+// ~WW8Style(){ delete( pStishi ); pStishi = 0; }
+ WW8_STD* Read1STDFixed( short& rSkip, short* pcbStd );
+ WW8_STD* Read1Style( short& rSkip, UINT8** ppStr = 0, short* pcbStd = 0 );
+ const UINT16 GetCount() const { return cstd; }
+};
+
+
+class WW8Fonts
+{
+protected:
+ WW8_FFN* pFontA; // Array of Pointers to Font Description
+ // Hilfs-Vari
+ USHORT nMax; // Array-Groesse
+public:
+ WW8Fonts( SvStream& rSt, WW8Fib& rFib );
+ ~WW8Fonts(){ if( pFontA ) __DELETE( nMax )pFontA; }
+ const WW8_FFN* GetFont( USHORT nNum ) const;
+ USHORT GetMax() const { return nMax; }
+};
+
+
+#define WW8_HEADER_EVEN 0x1
+#define WW8_HEADER_ODD 0x2
+#define WW8_FOOTER_EVEN 0x4
+#define WW8_FOOTER_ODD 0x8
+#define WW8_HEADER_FIRST 0x10
+#define WW8_FOOTER_FIRST 0x20
+
+class WW8Dop // Document Properties
+{
+public:
+ /*
+ Fehlerstatus
+ */
+ ULONG nDopError;
+ /*
+ vom Ctor aus dem FIB gelesene Daten
+ (entspricht nur ungefaehr der tatsaechlichen Struktur
+ des Winword-FIB)
+ */
+ // Initialisier-Dummy:
+ BYTE nDataStart;
+ //-------------------------
+ UINT16 fFacingPages : 1; // 1 when facing pages should be printed
+ UINT16 fWidowControl : 1; // 1 when widow control is in effect. 0 when widow control disabled.
+ UINT16 fPMHMainDoc : 1; // 1 when doc is a main doc for Print Merge Helper, 0 when not; default=0
+ UINT16 grfSuppression : 2; // 0 Default line suppression storage; 0= form letter line suppression; 1= no line suppression; default=0
+ UINT16 fpc : 2; // 1 footnote position code: 0 as endnotes, 1 at bottom of page, 2 immediately beneath text
+ UINT16 : 1; // 0 unused
+ //-------------------------
+ UINT16 grpfIhdt : 8; // 0 specification of document headers and footers. See explanation under Headers and Footers topic.
+ //-------------------------
+ UINT16 rncFtn : 2; // 0 restart index for footnotes, 0 don't restart note numbering, 1 section, 2 page
+ UINT16 nFtn : 14; // 1 initial footnote number for document
+ UINT16 fOutlineDirtySave : 1; // when 1, indicates that information in the hPLCFpad should be refreshed since outline has been dirtied
+ UINT16 : 7; // reserved
+ UINT16 fOnlyMacPics : 1; // when 1, Word believes all pictures recorded in the document were created on a Macintosh
+ UINT16 fOnlyWinPics : 1; // when 1, Word believes all pictures recorded in the document were created in Windows
+ UINT16 fLabelDoc : 1; // when 1, document was created as a print merge labels document
+ UINT16 fHyphCapitals : 1; // when 1, Word is allowed to hyphenate words that are capitalized. When 0, capitalized may not be hyphenated
+ UINT16 fAutoHyphen : 1; // when 1, Word will hyphenate newly typed text as a background task
+ UINT16 fFormNoFields : 1;
+ UINT16 fLinkStyles : 1; // when 1, Word will merge styles from its template
+ UINT16 fRevMarking : 1; // when 1, Word will mark revisions as the document is edited
+ UINT16 fBackup : 1; // always make backup when document saved when 1.
+ UINT16 fExactCWords : 1;
+ UINT16 fPagHidden : 1; //
+ UINT16 fPagResults : 1;
+ UINT16 fLockAtn : 1; // when 1, annotations are locked for editing
+ UINT16 fMirrorMargins : 1; // swap margins on left/right pages when 1.
+ UINT16 fReadOnlyRecommended : 1;// user has recommended that this doc be opened read-only when 1
+ UINT16 fDfltTrueType : 1; // when 1, use TrueType fonts by default (flag obeyed only when doc was created by WinWord 2.x)
+ UINT16 fPagSuppressTopSpacing : 1;//when 1, file created with SUPPRESSTOPSPACING=YES in win.ini. (flag obeyed only when doc was created by WinWord 2.x).
+ UINT16 fProtEnabled : 1; // when 1, document is protected from edit operations
+ UINT16 fDispFormFldSel : 1;// when 1, restrict selections to occur only within form fields
+ UINT16 fRMView : 1; // when 1, show revision markings on screen
+ UINT16 fRMPrint : 1; // when 1, print revision marks when document is printed
+ UINT16 fWriteReservation : 1;
+ UINT16 fLockRev : 1; // when 1, the current revision marking state is locked
+ UINT16 fEmbedFonts : 1; // when 1, document contains embedded True Type fonts
+ // compatability options
+ UINT16 copts_fNoTabForInd : 1; // when 1, don’t add automatic tab stops for hanging indent
+ UINT16 copts_fNoSpaceRaiseLower : 1; // when 1, don’t add extra space for raised or lowered characters
+ UINT16 copts_fSupressSpbfAfterPgBrk : 1; // when 1, supress the paragraph Space Before and Space After options after a page break
+ UINT16 copts_fWrapTrailSpaces : 1; // when 1, wrap trailing spaces at the end of a line to the next line
+ UINT16 copts_fMapPrintTextColor : 1; // when 1, print colors as black on non-color printers
+ UINT16 copts_fNoColumnBalance : 1; // when 1, don’t balance columns for Continuous Section starts
+ UINT16 copts_fConvMailMergeEsc : 1;
+ UINT16 copts_fSupressTopSpacing : 1; // when 1, supress extra line spacing at top of page
+ UINT16 copts_fOrigWordTableRules : 1; // when 1, combine table borders like Word 5.x for the Macintosh
+ UINT16 copts_fTransparentMetafiles : 1; // when 1, don’t blank area between metafile pictures
+ UINT16 copts_fShowBreaksInFrames : 1; // when 1, show hard page or column breaks in frames
+ UINT16 copts_fSwapBordersFacingPgs : 1; // when 1, swap left and right pages on odd facing pages
+
+ INT16 dxaTab; // 720 twips default tab width
+ UINT16 wSpare; //
+ UINT16 dxaHotZ; // width of hyphenation hot zone measured in twips
+ UINT16 cConsecHypLim; // number of lines allowed to have consecutive hyphens
+ UINT16 wSpare2; // reserved
+ INT32 dttmCreated; // DTTM date and time document was created
+ INT32 dttmRevised; // DTTM date and time document was last revised
+ INT32 dttmLastPrint; // DTTM date and time document was last printed
+ INT16 nRevision; // number of times document has been revised since its creation
+ INT32 tmEdited; // time document was last edited
+ INT32 cWords; // count of words tallied by last Word Count execution
+ INT32 cCh; // count of characters tallied by last Word Count execution
+ INT16 cPg; // count of pages tallied by last Word Count execution
+ INT32 cParas; // count of paragraphs tallied by last Word Count execution
+ UINT16 rncEdn : 2; // restart endnote number code: 0 don’t restart endnote numbering, 1 section, 2 page
+ UINT16 nEdn : 14; // beginning endnote number
+ UINT16 epc : 2; // endnote position code: 0 at end of section, 3 at end of document
+ // UINT16 nfcFtnRef : 4; // number format code for auto footnotes: 0 Arabic, 1 Upper case Roman, 2 Lower case Roman
+ // 3 Upper case Letter, 4 Lower case Letter
+ // ersetzt durch gleichlautendes Feld unten
+ // UINT16 nfcEdnRef : 4; // number format code for auto endnotes: 0 Arabic, 1 Upper case Roman, 2 Lower case Roman
+ // 3 Upper case Letter, 4 Lower case Letter
+ // ersetzt durch gleichlautendes Feld unten
+ UINT16 fPrintFormData : 1; // only print data inside of form fields
+ UINT16 fSaveFormData : 1; // only save document data that is inside of a form field.
+ UINT16 fShadeFormData : 1; // shade form fields
+ UINT16 : 2; // reserved
+ UINT16 fWCFtnEdn : 1; // when 1, include footnotes and endnotes in word count
+ INT32 cLines; // count of lines tallied by last Word Count operation
+ INT32 cWordsFtnEnd; // count of words in footnotes and endnotes tallied by last Word Count operation
+ INT32 cChFtnEdn; // count of characters in footnotes and endnotes tallied by last Word Count operation
+ INT16 cPgFtnEdn; // count of pages in footnotes and endnotes tallied by last Word Count operation
+ INT32 cParasFtnEdn; // count of paragraphs in footnotes and endnotes tallied by last Word Count operation
+ INT32 cLinesFtnEdn; // count of paragraphs in footnotes and endnotes tallied by last Word Count operation
+ INT32 lKeyProtDoc; // document protection password key, only valid if dop.fProtEnabled, dop.fLockAtn or dop.fLockRev are 1.
+ UINT16 wvkSaved : 3; // document view kind: 0 Normal view, 1 Outline view, 2 Page View
+ UINT16 wScaleSaved : 9; //
+ UINT16 zkSaved : 2;
+
+ // hier sollte bei nFib < 103 Schluss sein, sonst ist Datei fehlerhaft!
+
+ /*
+ bei nFib >= 103 gehts weiter:
+ */
+ UINT32 fNoTabForInd :1; // see above in compatability options
+ UINT32 fNoSpaceRaiseLower :1; // see above
+ UINT32 fSupressSpbfAfterPageBreak :1; // see above
+ UINT32 fWrapTrailSpaces :1; // see above
+ UINT32 fMapPrintTextColor :1; // see above
+ UINT32 fNoColumnBalance :1; // see above
+ UINT32 fConvMailMergeEsc :1; // see above
+ UINT32 fSupressTopSpacing :1; // see above
+ UINT32 fOrigWordTableRules :1; // see above
+ UINT32 fTransparentMetafiles :1; // see above
+ UINT32 fShowBreaksInFrames :1; // see above
+ UINT32 fSwapBordersFacingPgs :1; // see above
+ UINT32 :4; // reserved
+ UINT32 fSuppressTopSpacingMac5 :1; // Suppress extra line spacing at top
+ // of page like MacWord 5.x
+ UINT32 fTruncDxaExpand :1; // Expand/Condense by whole number of points
+ UINT32 fPrintBodyBeforeHdr :1; // Print body text before header/footer
+ UINT32 fNoLeading :1; // Don't add extra spacebetween rows of text
+ UINT32 :1; // reserved
+ UINT32 fMWSmallCaps :1; // Use larger small caps like MacWord 5.x
+ UINT32 :10;// reserved
+
+ // hier sollte bei nFib <= 105 Schluss sein, sonst ist Datei fehlerhaft!
+
+ /*
+ bei nFib > 105 gehts weiter:
+ */
+ INT16 adt; // Autoformat Document Type:
+ // 0 for normal. 1 for letter, and 2 for email.
+ WW8_DOPTYPOGRAPHY doptypography; // siehe WW8STRUC.HXX
+ WW8_DOGRID dogrid; // siehe WW8STRUC.HXX
+ UINT16 :1; // reserved
+ UINT16 lvl :4; // Which outline levels are showing in outline view
+ UINT16 :4; // reserved
+ UINT16 fHtmlDoc :1; // This file is based upon an HTML file
+ UINT16 :1; // reserved
+ UINT16 fSnapBorder :1; // Snap table and page borders to page border
+ UINT16 fIncludeHeader :1; // Place header inside page border
+ UINT16 fIncludeFooter :1; // Place footer inside page border
+ UINT16 fForcePageSizePag :1; // Are we in online view
+ UINT16 fMinFontSizePag :1; // Are we auto-promoting
+ // fonts to >= hpsZoonFontPag?
+ UINT16 fHaveVersions :1; // versioning is turned on
+ UINT16 fAutoVersion :1; // autoversioning is enabled
+ UINT16 :14; // reserved
+ // hier 12 Byte ueberspringen: ASUMI
+ INT32 cChWS;
+ INT32 cChWSFtnEdn;
+ INT32 grfDocEvents;
+ // hier 4+30+8 Bytes ueberspringen
+ INT32 cDBC;
+ INT32 cDBCFtnEdn;
+ // hier 4 Bytes ueberspringen
+ INT16 nfcFtnRef;
+ INT16 nfcEdnRef;
+ INT16 hpsZoonFontPag;
+ INT16 dywDispPag;
+
+ // 2. Initialisier-Dummy:
+ BYTE nDataEnd;
+
+ /*
+ nun wird lediglich noch ein Ctor benoetigt,
+ dem die FIB-Nummer uebergeben werden muss
+ */
+ WW8Dop( SvStream& rSt, INT16 nFib, INT32 nPos, INT32 nSize );
+
+ /* leider falsch, man braucht auch noch einen fuer den Export */
+ WW8Dop();
+ BOOL Write( SvStream& rStrm, WW8Fib& rFib );
+};
+
+
+inline short WW8SkipOdd(SvStream* pSt )
+{
+#if defined HP9000 || defined SINIX
+ short bRet = pSt->Tell() & 0x1;
+ if (bRet) {
+ UINT8 c;
+ pSt->Read( &c, 1 );
+ }
+ return bRet;
+#else
+ if ( pSt->Tell() & 0x1 ){
+ UINT8 c;
+ pSt->Read( &c, 1 );
+ return 1;
+ }
+ return 0;
+#endif
+}
+
+
+class WW8PLCF_HdFt
+{
+ WW8PLCF aPLCF;
+ long nTextOfs;
+ short nIdxOffset;
+
+public:
+ WW8PLCF_HdFt( SvStream* pSt, WW8Fib& rFib, WW8Dop& rDop );
+// ~WW8PLCF_HdFt() {}
+ BOOL GetTextPos( BYTE grpfIhdt, BYTE nWhich, WW8_CP& rStart, long& rLen );
+ BOOL GetTextPosExact( short nIdx, WW8_CP& rStart, long& rLen );
+ void UpdateIndex( BYTE grpfIhdt );
+};
+
+
+
+#endif
+
diff --git a/sw/source/filter/ww8/dump/ww8struc.hxx b/sw/source/filter/ww8/dump/ww8struc.hxx
new file mode 100644
index 000000000000..27f1d334af62
--- /dev/null
+++ b/sw/source/filter/ww8/dump/ww8struc.hxx
@@ -0,0 +1,851 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8struc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WW8STRUC_HXX
+#define _WW8STRUC_HXX
+
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+
+// max. Anzahl der Listen-Level in WW8: 1..9
+#define nWW8MaxListLevel 9
+
+
+inline BYTE Get_Byte( BYTE *& p )
+ { BYTE n = SVBT8ToByte( *(SVBT8*)p ); p += 1; return n; }
+
+inline short Get_Short( BYTE *& p )
+ { short n = SVBT16ToShort( *(SVBT16*)p ); p += 2; return n; }
+inline USHORT Get_UShort( BYTE *& p )
+ { USHORT n = SVBT16ToShort( *(SVBT16*)p ); p += 2; return n; }
+
+inline long Get_Long( BYTE *& p )
+ { long n = SVBT32ToLong( *(SVBT32*)p ); p += 4; return n; }
+inline ULONG Get_ULong( BYTE *& p )
+ { ULONG n = SVBT32ToLong( *(SVBT32*)p ); p += 4; return n; }
+
+inline void Set_UInt8( BYTE *& p, UINT8 n )
+ { ByteToSVBT8( n, *(SVBT8*)p ); p+= 1; }
+
+inline void Set_UInt16( BYTE *& p, UINT16 n )
+ { ShortToSVBT16( n, *(SVBT16*)p ); p+= 2; }
+
+inline void Set_UInt32( BYTE *& p, UINT32 n )
+ { LongToSVBT32( n, *(SVBT32*)p ); p+= 4; }
+
+
+#if defined __BIGENDIAN || __ALIGNMENT4 > 2 || defined UNX
+#define __WW8_NEEDS_COPY
+#else
+#if defined WNT || defined WIN || defined OS2
+#define __WW8_NEEDS_PACK
+#pragma pack(2)
+#endif
+#endif
+
+typedef INT16 WW8_PN;
+typedef INT32 WW8_FC;
+typedef INT32 WW8_CP;
+
+// STD: STyle Definition
+// The STD contains the entire definition of a style.
+// It has two parts, a fixed-length base (cbSTDBase bytes long)
+// and a variable length remainder holding the name, and the upx and upe
+// arrays (a upx and upe for each type stored in the style, std.cupx)
+// Note that new fields can be added to the BASE of the STD without
+// invalidating the file format, because the STSHI contains the length
+// that is stored in the file. When reading STDs from an older version,
+// new fields will be zero.
+struct WW8_STD
+{
+ // Base part of STD:
+ UINT16 sti : 12; // invariant style identifier
+ UINT16 fScratch : 1; // spare field for any temporary use,
+ // always reset back to zero!
+ UINT16 fInvalHeight : 1; // PHEs of all text with this style are wrong
+ UINT16 fHasUpe : 1; // UPEs have been generated
+ UINT16 fMassCopy : 1; // std has been mass-copied; if unused at
+ // save time, style should be deleted
+ UINT16 sgc : 4; // style type code
+ UINT16 istdBase : 12; // base style
+ UINT16 cupx : 4; // # of UPXs (and UPEs)
+ UINT16 istdNext : 12; // next style
+ UINT16 bchUpe; // offset to end of upx's, start of upe's
+ //-------- jetzt neu:
+ // ab Ver8 gibts zwei Felder mehr:
+ UINT16 fAutoRedef : 1; /* auto redefine style when appropriate */
+ UINT16 fHidden : 1; /* hidden from UI? */
+ UINT16 : 14; /* unused bits */
+
+ // Variable length part of STD:
+ // UINT8 stzName[2]; /* sub-names are separated by chDelimStyle
+ // char grupx[];
+ // the UPEs are not stored on the file; they are a cache of the based-on
+ // chain
+ // char grupe[];
+};
+
+/*
+ Basis zum Einlesen UND zum Arbeiten (wird jeweils unter
+ schiedlich beerbt)
+*/
+struct WW8_FFN_BASE // Font Descriptor
+{
+ // ab Ver6
+ BYTE cbFfnM1; // 0x0 total length of FFN - 1.
+
+ BYTE prg: 2; // 0x1:03 pitch request
+ BYTE fTrueType : 1; // 0x1:04 when 1, font is a TrueType font
+ // 0x1:08 reserved
+ BYTE ff : 3; // 0x1:70 font family id
+ // 0x1:80 reserved
+
+ short wWeight; // 0x2 base weight of font
+ BYTE chs; // 0x4 character set identifier
+ BYTE ibszAlt; // 0x5 index into ffn.szFfn to the name of the alternate font
+};
+
+/*
+ Hiermit arbeiten wir im Parser (und Dumper)
+*/
+struct WW8_FFN : public WW8_FFN_BASE
+{
+ // ab Ver8 als Unicode
+ UniString sFontname;// 0x6 bzw. 0x40 ab Ver8 zero terminated string that
+ // records name of font.
+ // Maximal size of szFfn is 65 characters.
+ // Vorsicht: Dieses Array kann auch kleiner sein!!!
+ // Possibly followed by a second sz which records the
+ // name of an alternate font to use if the first named
+ // font does not exist on this system.
+};
+
+
+
+struct WW8_BRCVer6 // alter Border Code
+{
+ SVBT16 aBits1;
+// UINT16 dxpLineWidth : 3;// 0007 When dxpLineWidth is 0, 1, 2, 3, 4, or 5, this field is the width of
+ // a single line of border in units of 0.75 points
+ // Must be nonzero when brcType is nonzero.
+ // 6 == dotted, 7 == dashed.
+// UINT16 brcType : 2; // 0018 border type code: 0 == none, 1 == single, 2 == thick, 3 == double
+// UINT16 fShadow : 1; // 0020 when 1, border is drawn with shadow. Must be 0 when BRC is a substructure of the TC
+// UINT16 ico : 5; // 07C0 color code (see chp.ico)
+// UINT16 dxpSpace : 5; // F800 width of space to maintain between border and text within border.
+ // Must be 0 when BRC is a substructure of the TC. Stored in points for Windows.
+};
+
+struct WW8_BRC : public WW8_BRCVer6 // Border Code
+{
+ SVBT16 aBits2;
+// UINT16 dxpLineWidth : 3;// 0007 When dxpLineWidth is 0, 1, 2, 3, 4, or 5, this field is the width of
+ // a single line of border in units of 0.75 points
+ // Must be nonzero when brcType is nonzero.
+ // 6 == dotted, 7 == dashed.
+// UINT16 brcType : 2; // 0018 border type code: 0 == none, 1 == single, 2 == thick, 3 == double
+// UINT16 fShadow : 1; // 0020 when 1, border is drawn with shadow. Must be 0 when BRC is a substructure of the TC
+// UINT16 ico : 5; // 07C0 color code (see chp.ico)
+// UINT16 dxpSpace : 5; // F800 width of space to maintain between border and text within border.
+ // Must be 0 when BRC is a substructure of the TC. Stored in points for Windows.
+};
+
+typedef WW8_BRC WW8_BRC5[5]; // 5 * Border Code
+
+#define WW8_TOP 0
+#define WW8_LEFT 1
+#define WW8_BOT 2
+#define WW8_RIGHT 3
+#define WW8_BETW 4
+
+
+
+
+
+struct WW8_BordersSO // fuer StarOffice-Border Code
+{
+ USHORT Out;
+ USHORT In;
+ USHORT Dist;
+};
+
+
+/*
+// Linien-Defaults in Twips: fruehere Writer-Defaults,
+// siehe auch <svx/boxitem.hxx>
+#define DEF_LINE_WIDTH_0 1
+#define DEF_LINE_WIDTH_1 20
+#define DEF_LINE_WIDTH_2 50
+#define DEF_LINE_WIDTH_3 80
+#define DEF_LINE_WIDTH_4 100
+
+#define DEF_MAX_LINE_WIDHT DEF_LINE_WIDTH_4
+#define DEF_MAX_LINE_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE0_OUT DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE0_IN DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE0_DIST DEF_LINE_WIDTH_1
+
+#define DEF_DOUBLE_LINE1_OUT DEF_LINE_WIDTH_1
+#define DEF_DOUBLE_LINE1_IN DEF_LINE_WIDTH_1
+#define DEF_DOUBLE_LINE1_DIST DEF_LINE_WIDTH_1
+
+#define DEF_DOUBLE_LINE2_OUT DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE2_IN DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE2_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE3_OUT DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE3_IN DEF_LINE_WIDTH_1
+#define DEF_DOUBLE_LINE3_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE4_OUT DEF_LINE_WIDTH_1
+#define DEF_DOUBLE_LINE4_IN DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE4_DIST DEF_LINE_WIDTH_1
+
+#define DEF_DOUBLE_LINE5_OUT DEF_LINE_WIDTH_3
+#define DEF_DOUBLE_LINE5_IN DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE5_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE6_OUT DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE6_IN DEF_LINE_WIDTH_3
+#define DEF_DOUBLE_LINE6_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE7_OUT DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE7_IN DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE7_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE8_OUT DEF_LINE_WIDTH_1
+#define DEF_DOUBLE_LINE8_IN DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE8_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE9_OUT DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE9_IN DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE9_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE10_OUT DEF_LINE_WIDTH_3
+#define DEF_DOUBLE_LINE10_IN DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE10_DIST DEF_LINE_WIDTH_2
+*/
+// Deklarationen gemaess BOXITEM.HXX
+#define WW8_DECL_LINETAB_ARRAY \
+ static WW8_BordersSO __READONLY_DATA nLineTabVer8[] = \
+ { \
+/* 0*/ { DEF_LINE_WIDTH_0, 0, 0 }, \
+/* 1*/ { DEF_LINE_WIDTH_1, 0, 0 }, \
+/* 2*/ { DEF_LINE_WIDTH_2, 0, 0 }, \
+/* 3*/ { DEF_LINE_WIDTH_3, 0, 0 }, \
+/* 4*/ { DEF_LINE_WIDTH_4, 0, 0 }, \
+/* 5*/ { DEF_DOUBLE_LINE0_OUT, DEF_DOUBLE_LINE0_IN, DEF_DOUBLE_LINE0_DIST },\
+/* 6*/ { DEF_DOUBLE_LINE1_OUT, DEF_DOUBLE_LINE1_IN, DEF_DOUBLE_LINE1_DIST },\
+/* 7*/ { DEF_DOUBLE_LINE2_OUT, DEF_DOUBLE_LINE2_IN, DEF_DOUBLE_LINE2_DIST },\
+/* 8*/ { DEF_DOUBLE_LINE3_OUT, DEF_DOUBLE_LINE3_IN, DEF_DOUBLE_LINE3_DIST },\
+/* 9*/ { DEF_DOUBLE_LINE4_OUT, DEF_DOUBLE_LINE4_IN, DEF_DOUBLE_LINE4_DIST },\
+/*10*/ { DEF_DOUBLE_LINE5_OUT, DEF_DOUBLE_LINE5_IN, DEF_DOUBLE_LINE5_DIST },\
+/*11*/ { DEF_DOUBLE_LINE6_OUT, DEF_DOUBLE_LINE6_IN, DEF_DOUBLE_LINE6_DIST },\
+/*12*/ { DEF_DOUBLE_LINE7_OUT, DEF_DOUBLE_LINE7_IN, DEF_DOUBLE_LINE7_DIST },\
+/*13*/ { DEF_DOUBLE_LINE8_OUT, DEF_DOUBLE_LINE8_IN, DEF_DOUBLE_LINE8_DIST },\
+/*14*/ { DEF_DOUBLE_LINE9_OUT, DEF_DOUBLE_LINE9_IN, DEF_DOUBLE_LINE9_DIST },\
+/*15*/ { DEF_DOUBLE_LINE10_OUT,DEF_DOUBLE_LINE10_IN,DEF_DOUBLE_LINE10_DIST} \
+ };
+
+#define WW8_DECL_LINETAB_OFS_DOUBLE 5 // Beginn des DOUBLE_LINE Abschnitts in meiner Liste
+
+
+
+
+struct WW8_XCHAR // Hilfs-Konstrukt fuer WW8_DOPTYPOGRAPHY
+{
+ char A;
+ char B;
+};
+
+struct WW8_DOPTYPOGRAPHY
+{ /*
+ Document Typography Info (DOPTYPOGRAPHY)
+ These options are Far East only, and are accessible
+ through the Typography tab of the Tools/Options dialog.
+ */
+
+
+
+ /* a c h t u n g : es duerfen keine solchen Bitfelder ueber einen eingelesenes Byte-Array
+ gelegt werden!!
+ stattdessen ist ein aBits1 darueber zu legen, das mit & auszulesen ist
+ GRUND: Compiler auf Intel und Sparc sortieren die Bits unterschiedlich
+ */
+
+
+
+ short fKerningPunct : 1; // true if we're kerning punctuation
+ short iJustification : 2; // Kinsoku method of justification:
+ // 0 = always expand
+ // 1 = compress punctuation
+ // 2 = compress punctuation and kana.
+ short iLevelOfKinsoku: 2; // Level of Kinsoku:
+ // 0 = Level 1
+ // 1 = Level 2
+ // 2 = Custom
+ short f2on1 : 1; // 2-page-on-1 feature is turned on.
+ short :10; // reserved
+ short cchFollowingPunct; // length of rgxchFPunct
+ short cchLeadingPunct; // length of rgxchLPunct
+
+ WW8_XCHAR rgxchFPunct[101]; // array of characters that should
+ // never appear at the start of a line
+ WW8_XCHAR rgxchLPunct[51]; // array of characters that should
+ // never appear at the end of a line
+};
+
+struct WW8_DOGRID
+{
+ short xaGrid; // x-coord of the upper left-hand corner of the grid
+ short yaGrid; // y-coord of the upper left-hand corner of the grid
+ short dxaGrid; // width of each grid square
+ short dyaGrid; // height of each grid square
+
+
+
+ /* a c h t u n g : es duerfen keine solchen Bitfelder ueber einen eingelesenes Byte-Array
+ gelegt werden!!
+ stattdessen ist ein aBits1 darueber zu legen, das mit & auszulesen ist
+ GRUND: Compiler auf Intel und Sparc sortieren die Bits unterschiedlich
+ */
+
+
+
+ short dyGridDisplay:7; // the number of grid squares (in the y direction)
+ // between each gridline drawn on the screen. 0 means
+ // don't display any gridlines in the y direction.
+ short fTurnItOff :1; // suppress display of gridlines
+ short dxGridDisplay:7; // the number of grid squares (in the x direction)
+ // between each gridline drawn on the screen. 0 means
+ // don't display any gridlines in the y direction.
+ short fFollowMargins:1; // if true, the grid will start at the left and top
+ // margins and ignore xaGrid and yaGrid.
+};
+
+struct WW8_PIC
+{
+ INT32 lcb; // 0x0 number of bytes in the PIC structure plus size of following picture data which may be a Window's metafile, a bitmap, or the filename of a TIFF file.
+ UINT16 cbHeader; // 0x4 number of bytes in the PIC (to allow for future expansion).
+ struct {
+ INT16 mm; // 0x6 int
+ INT16 xExt; // 0x8 int
+ INT16 yExt; // 0xa int
+ INT16 hMF; // 0xc int
+ }MFP;
+// BYTE bm[14]; // 0xe BITMAP(14 bytes) Window's bitmap structure when PIC describes a BITMAP.
+ BYTE rcWinMF[14]; // 0xe rc (rectangle - 8 bytes) rect for window origin
+ // and extents when metafile is stored -- ignored if 0
+ INT16 dxaGoal; // 0x1c horizontal measurement in twips of the rectangle the picture should be imaged within.
+ INT16 dyaGoal; // 0x1e vertical measurement in twips of the rectangle the picture should be imaged within.
+ UINT16 mx; // 0x20 horizontal scaling factor supplied by user in .1% units.
+ UINT16 my; // 0x22 vertical scaling factor supplied by user in .1% units.
+ INT16 dxaCropLeft; // 0x24 the amount the picture has been cropped on the left in twips.
+ INT16 dyaCropTop; // 0x26 the amount the picture has been cropped on the top in twips.
+ INT16 dxaCropRight; // 0x28 the amount the picture has been cropped on the right in twips.
+ INT16 dyaCropBottom;// 0x2a the amount the picture has been cropped on the bottom in twips.
+ INT16 brcl : 4; // 000F Obsolete, superseded by brcTop, etc. In
+ INT16 fFrameEmpty : 1; // 0010 picture consists of a single frame
+ INT16 fBitmap : 1; // 0020 ==1, when picture is just a bitmap
+ INT16 fDrawHatch : 1; // 0040 ==1, when picture is an active OLE object
+ INT16 fError : 1; // 0080 ==1, when picture is just an error message
+ INT16 bpp : 8; // FF00 bits per pixel, 0 = unknown
+ WW8_BRC rgbrc[4];
+// BRC brcTop; // 0x2e specification for border above picture
+// BRC brcLeft; // 0x30 specification for border to the left
+// BRC brcBottom; // 0x32 specification for border below picture
+// BRC brcRight; // 0x34 specification for border to the right
+ INT16 dxaOrigin; // 0x36 horizontal offset of hand annotation origin
+ INT16 dyaOrigin; // 0x38 vertical offset of hand annotation origin
+// BYTE rgb[]; // 0x3a variable array of bytes containing Window's metafile, bitmap or TIFF file filename.
+};
+
+struct WW8_PIC_SHADOW
+{
+ SVBT32 lcb; // 0x0 number of bytes in the PIC structure plus size of following picture data which may be a Window's metafile, a bitmap, or the filename of a TIFF file.
+ SVBT16 cbHeader; // 0x4 number of bytes in the PIC (to allow for future expansion).
+ struct {
+ SVBT16 mm; // 0x6 int
+ SVBT16 xExt; // 0x8 int
+ SVBT16 yExt; // 0xa int
+ SVBT16 hMF; // 0xc int
+ }MFP;
+// SVBT8 bm[14]; // 0xe BITMAP(14 bytes) Window's bitmap structure when PIC describes a BITMAP.
+ SVBT8 rcWinMF[14]; // 0xe rc (rectangle - 8 bytes) rect for window origin
+ // and extents when metafile is stored -- ignored if 0
+ SVBT16 dxaGoal; // 0x1c horizontal measurement in twips of the rectangle the picture should be imaged within.
+ SVBT16 dyaGoal; // 0x1e vertical measurement in twips of the rectangle the picture should be imaged within.
+ SVBT16 mx; // 0x20 horizontal scaling factor supplied by user in .1% units.
+ SVBT16 my; // 0x22 vertical scaling factor supplied by user in .1% units.
+ SVBT16 dxaCropLeft; // 0x24 the amount the picture has been cropped on the left in twips.
+ SVBT16 dyaCropTop; // 0x26 the amount the picture has been cropped on the top in twips.
+ SVBT16 dxaCropRight; // 0x28 the amount the picture has been cropped on the right in twips.
+ SVBT16 dyaCropBottom;// 0x2a the amount the picture has been cropped on the bottom in twips.
+ SVBT8 aBits1; //0x2c
+ SVBT8 aBits2;
+ WW8_BRC rgbrc[4];
+// BRC brcTop; // 0x2e specification for border above picture
+// BRC brcLeft; // 0x30 specification for border to the left
+// BRC brcBottom; // 0x32 specification for border below picture
+// BRC brcRight; // 0x34 specification for border to the right
+ SVBT16 dxaOrigin; // 0x36 horizontal offset of hand annotation origin
+ SVBT16 dyaOrigin; // 0x38 vertical offset of hand annotation origin
+// SVBT8 rgb[]; // 0x3a variable array of bytes containing Window's metafile, bitmap or TIFF file filename.
+};
+
+
+struct WW8_TBD
+{
+ SVBT8 aBits1;
+// BYTE jc : 3; // 0x07 justification code: 0=left tab, 1=centered tab, 2=right tab, 3=decimal tab, 4=bar
+// BYTE tlc : 3; // 0x38 tab leader code: 0=no leader, 1=dotted leader,
+ // 2=hyphenated leader, 3=single line leader, 4=heavy line leader
+// * int :2 C0 reserved
+};
+
+struct WW8_TCell // hiermit wird weitergearbeitet (entspricht weitestgehend dem Ver8-Format)
+{
+ BOOL bFirstMerged : 1;// 0001 set to 1 when cell is first cell of a range of cells that have been merged.
+ BOOL bMerged : 1;// 0002 set to 1 when cell has been merged with preceding cell.
+ BOOL bVertical : 1;// set to 1 when cell has vertical text flow
+ BOOL bBackward : 1;// for a vertical table cell, text flow is bottom to top when 1 and is bottom to top when 0.
+ BOOL bRotateFont : 1;// set to 1 when cell has rotated characters (i.e. uses @font)
+ BOOL bVertMerge : 1;// set to 1 when cell is vertically merged with the cell(s) above and/or below. When cells are vertically merged, the display area of the merged cells are consolidated. The consolidated area is used to display the contents of the first vertically merged cell (the cell with fVertRestart set to 1), and all other vertically merged cells (those with fVertRestart set to 0) must be empty. Cells can only be merged vertically if their left and right boundaries are (nearly) identical (i.e. if corresponding entries in rgdxaCenter of the table rows differ by at most 3).
+ BOOL bVertRestart : 1;// set to 1 when the cell is the first of a set of vertically merged cells. The contents of a cell with fVertStart set to 1 are displayed in the consolidated area belonging to the entire set of vertically merged cells. Vertically merged cells with fVertRestart set to 0 must be empty.
+ BYTE nVertAlign : 2;// specifies the alignment of the cell contents relative to text flow (e.g. in a cell with bottom to top text flow and bottom vertical alignment, the text is shifted horizontally to match the cell's right boundary):
+ // 0 top
+ // 1 center
+ // 2 bottom
+ UINT16 fUnused : 7;// reserved - nicht loeschen: macht das UINT16 voll !!
+
+ WW8_BRC rgbrc[4]; // border codes
+//notational convenience for referring to brcTop, brcLeft, etc fields.
+// BRC brcTop; // specification of the top border of a table cell
+// BRC brcLeft; // specification of left border of table row
+// BRC brcBottom; // specification of bottom border of table row
+// BRC brcRight; // specification of right border of table row.
+};
+// cbTC (count of bytes of a TC) is 18(decimal), 12(hex).
+
+
+struct WW8_TCellVer6 // wird aus der Datei gelesen
+{
+ SVBT8 aBits1Ver6;
+ SVBT8 aBits2Ver6;
+// UINT16 fFirstMerged : 1;// 0001 set to 1 when cell is first cell of a range of cells that have been merged.
+// UINT16 fMerged : 1; // 0002 set to 1 when cell has been merged with preceding cell.
+// UINT16 fUnused : 14; // FFFC reserved
+ WW8_BRCVer6 rgbrcVer6[4];
+// notational convenience for referring to brcTop, brcLeft, etc fields:
+// BRC brcTop; // specification of the top border of a table cell
+// BRC brcLeft; // specification of left border of table row
+// BRC brcBottom; // specification of bottom border of table row
+// BRC brcRight; // specification of right border of table row.
+};
+// cbTC (count of bytes of a TC) is 10(decimal), A(hex).
+
+struct WW8_TCellVer8 // wird aus der Datei gelesen
+{
+ SVBT16 aBits1Ver8; // Dokumentation siehe oben unter WW8_TCell
+ SVBT16 aUnused; // reserve
+ WW8_BRC rgbrcVer8[4]; // Dokumentation siehe oben unter WW8_TCell
+};
+// cbTC (count of bytes of a TC) is 20(decimal), 14(hex).
+
+
+struct WW8_SHD // struct SHD fehlt in der Beschreibung
+{
+private:
+ UINT16 aBits;
+// UINT16 nFore : 5; // 0x001f ForegroundColor
+// UINT16 nBack : 5; // 0x03e0 BackgroundColor
+// UINT16 nStyle : 5; // 0x7c00 Percentage and Style
+// UINT16 nDontKnow : 1; // 0x8000 ??? ab Ver8: ebenfalls fuer Style
+
+public:
+ WW8_SHD(){ aBits = 0; }
+
+ BYTE GetFore() const { return (BYTE)( aBits & 0x1f); }
+ BYTE GetBack() const { return (BYTE)((aBits >> 5 ) & 0x1f); }
+ BYTE GetStyle(BOOL bVer67) const { return (BYTE)((aBits >> 10) & ( bVer67?0x1f:0x3f ) ); }
+
+ UINT16 GetValue() const { return aBits; }
+
+ void SetValue( UINT16 nVal ){ aBits = nVal; }
+ void SetWWValue( SVBT16 nVal ){ aBits = (UINT16)SVBT16ToShort( nVal ); }
+
+ void SetFore( BYTE nVal ){ aBits = (aBits & 0xffe0) | (nVal & 0x1f); }
+ void SetBack( BYTE nVal ){ aBits = (aBits & 0xfc1f) | ((nVal & 0x1f)<<5); }
+ void SetStyle( BOOL bVer67, BYTE nVal ){
+ aBits = (aBits & ( bVer67?0x83ff:0x03ff ) )
+ | ((nVal & ( bVer67?0x1f:0x2f ))<<10); }
+};
+
+
+struct WW8_ANLV
+{
+ SVBT8 nfc; // 0 number format code, 0=Arabic, 1=Upper case Roman, 2=Lower case Roman
+ // 3=Upper case Letter, 4=Lower case letter, 5=Ordinal
+ SVBT8 cbTextBefore; // 1 offset into anld.rgch limit of prefix text
+ SVBT8 cbTextAfter; // 2
+ SVBT8 aBits1;
+// BYTE jc : 2; // 3 : 0x03 justification code, 0=left, 1=center, 2=right, 3=left and right justify
+// BYTE fPrev : 1; // 0x04 when ==1, include previous levels
+// BYTE fHang : 1; // 0x08 when ==1, number will be displayed using a hanging indent
+// BYTE fSetBold : 1; // 0x10 when ==1, boldness of number will be determined by anld.fBold.
+// BYTE fSetItalic : 1;// 0x20 when ==1, italicness of number will be determined by anld.fItalic
+// BYTE fSetSmallCaps : 1;// 0x40 when ==1, anld.fSmallCaps will determine whether number will be displayed in small caps or not.
+// BYTE fSetCaps : 1; // 0x80 when ==1, anld.fCaps will determine whether number will be displayed capitalized or not
+ SVBT8 aBits2;
+// BYTE fSetStrike : 1;// 4 : 0x01 when ==1, anld.fStrike will determine whether the number will be displayed using strikethrough or not.
+// BYTE fSetKul : 1; // 0x02 when ==1, anld.kul will determine the underlining state of the autonumber.
+// BYTE fPrevSpace : 1;// 0x04 when ==1, autonumber will be displayed with a single prefixing space character
+// BYTE fBold : 1; // 0x08 determines boldness of autonumber when anld.fSetBold == 1.
+// BYTE fItalic : 1; // 0x10 determines italicness of autonumber when anld.fSetItalic == 1.
+// BYTE fSmallCaps : 1;// 0x20 determines whether autonumber will be displayed using small caps when anld.fSetSmallCaps == 1.
+// BYTE fCaps : 1; // 0x40 determines whether autonumber will be displayed using caps when anld.fSetCaps == 1.
+// BYTE fStrike : 1; // 0x80 determines whether autonumber will be displayed using caps when anld.fSetStrike == 1.
+ SVBT8 aBits3;
+// BYTE kul : 3; // 5 : 0x07 determines whether autonumber will be displayed with underlining when anld.fSetKul == 1.
+// BYTE ico : 5; // 0xF1 color of autonumber
+ SVBT16 ftc; // 6 font code of autonumber
+ SVBT16 hps; // 8 font half point size (or 0=auto)
+ SVBT16 iStartAt; // 0x0a starting value (0 to 65535)
+ SVBT16 dxaIndent; // 0x0c *short?* *USHORT?* width of prefix text (same as indent)
+ SVBT16 dxaSpace; // 0x0e minimum space between number and paragraph
+};
+// *cbANLV (count of bytes of ANLV) is 16 (decimal), 10(hex).
+
+struct WW8_ANLD
+{
+ WW8_ANLV eAnlv; // 0
+ SVBT8 fNumber1; // 0x10 number only 1 item per table cell
+ SVBT8 fNumberAcross; // 0x11 number across cells in table rows(instead of down)
+ SVBT8 fRestartHdn; // 0x12 restart heading number on section boundary
+ SVBT8 fSpareX; // 0x13 unused( should be 0)
+ char rgchAnld[32]; // 0x14 characters displayed before/after autonumber
+};
+
+
+struct WW8_OLST
+{
+ WW8_ANLV rganlv[9]; // 0 an array of 9 ANLV structures (heading levels)
+ SVBT8 fRestartHdr; // 0x90 when ==1, restart heading on section break
+ SVBT8 fSpareOlst2; // 0x91 reserved
+ SVBT8 fSpareOlst3; // 0x92 reserved
+ SVBT8 fSpareOlst4; // 0x93 reserved
+ char rgch[64]; // 0x94 array of 64 chars text before/after number
+};
+// cbOLST is 212(decimal), D4(hex).
+
+struct WW8_FDOA
+{
+ SVBT32 fc; // 0 FC pointing to drawing object data
+ SVBT16 ctxbx; // 4 count of textboxes in the drawing object
+};
+
+struct WW8_DO
+{
+ SVBT16 dok; // 0 Drawn Object Kind, currently this is always 0
+ SVBT16 cb; // 2 size (count of bytes) of the entire DO
+ SVBT8 bx; // 4 x position relative to anchor CP
+ SVBT8 by; // 5 y position relative to anchor CP
+ SVBT16 dhgt; // 6 height of DO
+ SVBT16 aBits1;
+// UINT16 fAnchorLock : 1; // 8 1 if the DO anchor is locked
+// BYTE[] rgdp; // 0xa variable length array of drawing primitives
+};
+
+struct WW8_DPHEAD
+{
+ SVBT16 dpk; // 0 Drawn Primitive Kind REVIEW davebu
+ // 0=start of grouping, 1=line, 2=textbox, 3=rectangle,
+ // 4=arc, 5=elipse, 6=polyline, 7=callout textbox,
+ // 8=end of grouping, 9=sample primitve holding default values
+ SVBT16 cb; // 2 size (count of bytes) of this DP
+ SVBT16 xa; // 4 These 2 points describe the rectangle
+ SVBT16 ya; // 6 enclosing this DP relative to the origin of
+ SVBT16 dxa; // 8 the DO
+ SVBT16 dya; // 0xa
+};
+
+
+struct WW8_DP_LINETYPE
+{
+ SVBT32 lnpc; // LiNe Property Color -- RGB color value
+ SVBT16 lnpw; // line property weight in twips
+ SVBT16 lnps; // line property style : 0=Solid, 1=Dashed
+ // 2=Dotted, 3=Dash Dot, 4=Dash Dot Dot, 5=Hollow
+};
+
+struct WW8_DP_SHADOW // Schattierung!
+{
+ SVBT16 shdwpi; // Shadow Property Intensity
+ SVBT16 xaOffset; // x offset of shadow
+ SVBT16 yaOffset; // y offset of shadow
+};
+
+struct WW8_DP_FILL
+{
+ SVBT32 dlpcFg; // FiLl Property Color ForeGround -- RGB color value
+ SVBT32 dlpcBg; // Property Color BackGround -- RGB color value
+ SVBT16 flpp; // FiLl Property Pattern REVIEW davebu
+};
+
+struct WW8_DP_LINEEND
+{
+ SVBT16 aStartBits;
+// UINT16 eppsStart : 2; // Start EndPoint Property Style
+ // 0=None, 1=Hollow, 2=Filled
+// UINT16 eppwStart : 2; // Start EndPoint Property Weight
+// UINT16 epplStart : 2; // Start EndPoint Property length
+// UINT16 dummyStart : 10; // Alignment
+ SVBT16 aEndBits;
+// UINT16 eppsEnd : 2; // End EndPoint Property Style
+// UINT16 eppwEnd : 2; // End EndPoint Property Weight
+// UINT16 epplEnd : 2; // End EndPoint Property length
+// UINT16 dummyEnd : 10; // Alignment
+};
+
+struct WW8_DP_LINE
+{
+// WW8_DPHEAD dphead; // 0 Common header for a drawing primitive
+ SVBT16 xaStart; // starting point for line
+ SVBT16 yaStart; //
+ SVBT16 xaEnd; // ending point for line
+ SVBT16 yaEnd;
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_LINEEND aEpp;
+ WW8_DP_SHADOW aShd;
+};
+
+struct WW8_DP_TXTBOX
+{
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_FILL aFill;
+ WW8_DP_SHADOW aShd;
+ SVBT16 aBits1;
+// UINT16 fRoundCorners : 1; //0x24 0001 1 if the textbox has rounded corners
+// UINT16 zaShape : 15; // 0x24 000e REVIEW davebu
+ SVBT16 dzaInternalMargin; // 0x26 REVIEW davebu
+};
+
+struct WW8_DP_RECT
+{
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_FILL aFill;
+ WW8_DP_SHADOW aShd;
+ SVBT16 aBits1;
+// UINT16 fRoundCorners : 1; // 0x24 0001 1 if the textbox has rounded corners
+// UINT16 zaShape : 15; // 0x24 000e REVIEW davebu
+};
+
+struct WW8_DP_ARC
+{
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_FILL aFill;
+ WW8_DP_SHADOW aShd;
+ SVBT8 fLeft; // 0x24 00ff REVIEW davebu
+ SVBT8 fUp; // 0x24 ff00 REVIEW davebu
+// UINT16 fLeft : 8; // 0x24 00ff REVIEW davebu
+// UINT16 fUp : 8; // 0x24 ff00 REVIEW davebu
+};
+
+struct WW8_DP_ELIPSE
+{
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_FILL aFill;
+ WW8_DP_SHADOW aShd;
+};
+
+struct WW8_DP_POLYLINE
+{
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_FILL aFill;
+ WW8_DP_LINEEND aEpp;
+ WW8_DP_SHADOW aShd;
+ SVBT16 aBits1;
+// UINT16 fPolygon : 1; // 0x28 0001 1 if this is a polygon
+// UINT16 cpt : 15; // 0x28 00fe count of points
+// short xaFirst; // 0x2a These are the endpoints of the first line.
+// short yaFirst; // 0x2c
+// short xaEnd; // 0x2e
+// short yaEnd; // 0x30
+// short rgpta[]; // 0x32 An array of xa,ya pairs for the remaining points
+};
+
+struct WW8_DP_CALLOUT_TXTBOX
+{
+ SVBT16 flags; // 0x0c REVIEW davebu flags
+ SVBT16 dzaOffset; // 0x0e REVIEW davebu
+ SVBT16 dzaDescent; // 0x10 REVIEW davebu
+ SVBT16 dzaLength; // 0x12 REVIEW davebu
+ WW8_DPHEAD dpheadTxbx; // 0x14 DPHEAD for a textbox
+ WW8_DP_TXTBOX dptxbx; // 0x20 DP for a textbox
+ WW8_DPHEAD dpheadPolyLine; // 0x4c DPHEAD for a Polyline
+ WW8_DP_POLYLINE dpPolyLine; // 0x48 DP for a polyline
+};
+
+struct WW8_DP_DEFAULTS
+{
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_FILL aFill;
+ WW8_DP_LINEEND aEpp;
+ WW8_DP_SHADOW aShd;
+ SVBT16 dzaOffset; // 0x2a REVIEW davebu
+ SVBT16 dzaDescent; // 0x2c REVIEW davebu
+ SVBT16 dzaLength; // 0x2e REVIEW davebu
+
+ SVBT16 aBits3;
+// UINT16 fRoundCorners : 1; // 0x30 0001 1 if the textbox has rounded corners
+// UINT16 zaShape : 15; // 0x30 000fe REVIEW davebu
+ SVBT16 dzaInternalMargin; // 0x32 REVIEW davebu
+};
+
+
+struct WW8_PCD
+{
+ SVBT8 aBits1;
+// BYTE fNoParaLast : 1; // when 1, means that piece contains no end of paragraph marks.
+// BYTE fPaphNil : 1; // used internally by Word
+// BYTE fCopied : 1; // used internally by Word
+// * int :5
+ SVBT8 aBits2; // fn int:8, used internally by Word
+ SVBT32 fc; // file offset of beginning of piece. The size of the
+ // ithpiece can be determined by subtracting rgcp[i] of
+ // the containing plcfpcd from its rgcp[i+1].
+ SVBT16 prm; // PRM contains either a single sprm or else an index number
+ // of the grpprl which contains the sprms that modify the
+ // properties of the piece.
+};
+
+struct WW8_PHE_Base
+{
+ BYTE aBits1; //
+// 0 0 fSpare int :1 0001 reserved
+// fUnk int :1 0002 phe entry is invalid
+// when == 1
+// fDiffLines int :1 0004 when 1, total
+// height of paragraph is known but lines in
+// paragraph have different heights.
+// * int :5 00F8 reserved
+ BYTE nlMac; // when fDiffLines is 0 is number of lines in
+// // paragraph
+ SVBT16 dxaCol; // width of lines in paragraph
+ SVBT16 dyl;
+// 4 4 dylLine int when fDiffLines is 0,
+// is height of every line in paragraph.in pixels
+// 4 4 dylHeight uns when fDiffLines is 1,
+// is the total height in pixels of the paragraph
+};
+
+/*
+eigentlich muessten wir das jetzt in etwa *so* praezisieren:
+
+ struct WW8_PHE_Ver6 : public WW8_PHE_Base
+ {
+ // 6 Bytes gross
+ };
+ struct WW8_PHE_Ver6 : public WW8_PHE_Base
+ {
+ SVBT16 a;
+ SVBT16 b;
+ SVBT16 c; // 12 Byte gross
+ };
+*/
+
+// AnnoTation Refernce Descriptor (ATRD)
+struct WW8_ATRD // fuer die 8-Version
+{
+ SVBT16 xstUsrInitl[ 10 ]; // pascal-style String holding initials
+ // of annotation author
+ SVBT16 ibst; // index into GrpXstAtnOwners
+ SVBT16 ak; // not used
+ SVBT16 grfbmc; // not used
+ SVBT32 ITagBkmk; // when not -1, this tag identifies the
+ // annotation bookmark that locates the
+ // range of CPs in the main document which
+ // this annotation references.
+};
+
+struct WW67_ATRD // fuer die 6/7-Version
+{
+ char xstUsrInitl[ 10 ]; // pascal-style String holding initials
+ // of annotation author
+ SVBT16 ibst; // index into GrpXstAtnOwners
+ SVBT16 ak; // not used
+ SVBT16 grfbmc; // not used
+ SVBT32 ITagBkmk; // when not -1, this tag identifies the
+ // annotation bookmark that locates the
+ // range of CPs in the main document which
+ // this annotation references.
+};
+
+
+#ifdef __WW8_NEEDS_PACK
+#pragma pack()
+#endif
+
+
+#endif
diff --git a/sw/source/filter/ww8/makefile.mk b/sw/source/filter/ww8/makefile.mk
new file mode 100644
index 000000000000..596961827ea3
--- /dev/null
+++ b/sw/source/filter/ww8/makefile.mk
@@ -0,0 +1,134 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sw
+TARGET=ww8
+
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\filt_1st\filt_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+.IF "$(mydebug)" != ""
+CDEFS=$(CDEFS) -Dmydebug
+.ENDIF
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ wrtw8esh.cxx \
+ wrtw8nds.cxx \
+ wrtw8num.cxx \
+ wrtw8sty.cxx \
+ wrtww8.cxx \
+ wrtww8gr.cxx \
+ ww8atr.cxx \
+ ww8graf.cxx \
+ ww8graf2.cxx \
+ ww8par.cxx \
+ ww8par2.cxx \
+ ww8par3.cxx \
+ ww8par4.cxx \
+ ww8par5.cxx \
+ ww8par6.cxx \
+ ww8glsy.cxx \
+ msocximp.cxx \
+ ww8scan.cxx
+
+
+
+SLOFILES = \
+ $(SLO)$/wrtw8esh.obj \
+ $(SLO)$/wrtw8nds.obj \
+ $(SLO)$/wrtw8num.obj \
+ $(SLO)$/wrtw8sty.obj \
+ $(SLO)$/wrtww8.obj \
+ $(SLO)$/wrtww8gr.obj \
+ $(SLO)$/ww8atr.obj \
+ $(SLO)$/ww8graf.obj \
+ $(SLO)$/ww8graf2.obj \
+ $(SLO)$/ww8par.obj \
+ $(SLO)$/ww8par2.obj \
+ $(SLO)$/ww8par3.obj \
+ $(SLO)$/ww8par4.obj \
+ $(SLO)$/ww8par5.obj \
+ $(SLO)$/ww8par6.obj \
+ $(SLO)$/ww8glsy.obj \
+ $(SLO)$/msocximp.obj \
+ $(SLO)$/ww8scan.obj
+
+EXCEPTIONSFILES = \
+ $(SLO)$/ww8par5.obj \
+ $(SLO)$/ww8graf.obj \
+ $(SLO)$/ww8graf2.obj \
+ $(SLO)$/msocximp.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/filter/ww8/wrtw8esh.cxx b/sw/source/filter/ww8/wrtw8esh.cxx
new file mode 100644
index 000000000000..95bee2c3ea31
--- /dev/null
+++ b/sw/source/filter/ww8/wrtw8esh.cxx
@@ -0,0 +1,1706 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtw8esh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+
+#ifndef _COM_SUN_STAR_DRAWING_XSHAPE_HPP_
+#include <com/sun/star/drawing/XShape.hpp>
+#endif
+
+#ifndef _SVSTOR_HXX
+#include <so3/svstor.hxx>
+#endif
+#ifndef _IPOBJ_HXX
+#include <so3/ipobj.hxx>
+#endif
+#ifndef _FILTER_HXX
+#include <svtools/filter.hxx>
+#endif
+#ifndef _SFXITEMITER_HXX
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _SVDOBJ_HXX
+#include <svx/svdobj.hxx>
+#endif
+#ifndef _SVDOTEXT_HXX
+#include <svx/svdotext.hxx>
+#endif
+#ifndef _SVDMODEL_HXX
+#include <svx/svdmodel.hxx>
+#endif
+#ifndef _SVDPAGE_HXX
+#include <svx/svdpage.hxx>
+#endif
+#ifndef _SVDTRANS_HXX
+#include <svx/svdtrans.hxx>
+#endif
+#ifndef _OUTLOBJ_HXX
+#include <svx/outlobj.hxx>
+#endif
+#ifndef _EDITOBJ_HXX
+#include <svx/editobj.hxx>
+#endif
+#ifndef _ESCHEREX_HXX
+#include <svx/escherex.hxx>
+#endif
+#ifndef _SVX_UNOSHAPE_HXX
+#include <svx/unoshape.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _EEITEM_HXX
+#include <svx/eeitem.hxx>
+#endif
+#ifndef _MyEDITENG_HXX
+#include <svx/editeng.hxx>
+#endif
+
+#ifndef _WRTWW8_HXX
+#include <wrtww8.hxx>
+#endif
+#ifndef _FLYPOS_HXX
+#include <flypos.hxx>
+#endif
+#ifndef _FMTCNCT_HXX
+#include <fmtcnct.hxx>
+#endif
+#ifndef _FMTANCHR_HXX
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTSRND_HXX
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTORNT_HXX
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX
+#include <fmtfsize.hxx>
+#endif
+#ifndef _DCONTACT_HXX
+#include <dcontact.hxx>
+#endif
+#ifndef _CALBCK_HXX
+#include <calbck.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _NDINDEX_HXX
+#include <ndindex.hxx>
+#endif
+#ifndef _NODE_HXX
+#include <node.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _SWRECT_HXX
+#include <swrect.hxx>
+#endif
+#ifndef _NDGRF_HXX
+#include <ndgrf.hxx>
+#endif
+#ifndef _GRFATR_HXX
+#include <grfatr.hxx>
+#endif
+#ifndef _NDOLE_HXX
+#include <ndole.hxx>
+#endif
+#ifndef _UNODRAW_HXX
+#include <unodraw.hxx>
+#endif
+
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+
+using namespace ::com::sun::star;
+
+SV_DECL_VARARR_SORT( SvULongsSort, ULONG, 1, 1 )
+SV_IMPL_VARARR_SORT( SvULongsSort, ULONG )
+
+#define sEscherStream String::CreateFromAscii( \
+ RTL_CONSTASCII_STRINGPARAM( "tempEsher" ))
+#define sEscherPictStream String::CreateFromAscii( \
+ RTL_CONSTASCII_STRINGPARAM( "EsherPicts" ))
+
+
+WW8_WrPlcDrawObj::WW8_WrPlcDrawObj( BYTE nTyp )
+ : nTTyp( nTyp ), aParentPos( 0, 16 )
+{
+}
+
+WW8_WrPlcDrawObj::~WW8_WrPlcDrawObj()
+{
+ for( USHORT n = aParentPos.Count(); n; )
+ delete (Point*)aParentPos[ --n ];
+}
+
+void WW8_WrPlcDrawObj::WritePlc( SwWW8Writer& rWrt ) const
+{
+ if( 8 != rWrt.pFib->nVersion )
+ return ; // solange kein DrawObjects in 95 exportiert wird
+
+
+ ULONG nFcStart = rWrt.pTableStrm->Tell();
+ USHORT nLen = aCps.Count();
+
+ if( nLen )
+ {
+ // write CPs
+ WW8Fib& rFib = *rWrt.pFib;
+ ULONG nCpOffs = TXT_TXTBOX == nTTyp
+ ? 0 : (rWrt.pFib->ccpText + rWrt.pFib->ccpFtn);
+ register USHORT i;
+ for( i = 0; i < nLen; i++ )
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, aCps[ i ] - nCpOffs );
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm,
+ rFib.ccpText + rFib.ccpFtn +
+ rFib.ccpHdr + rFib.ccpEdn +
+ rFib.ccpTxbx + rFib.ccpHdrTxbx + 1 );
+
+ for( i = 0; i < nLen; ++i )
+ {
+ // write the fspa-struct
+ const SwFrmFmt& rFmt = *(SwFrmFmt*)aCntnt[ i ];
+ const SdrObject* pObj = rFmt.FindRealSdrObject();
+
+ Rectangle aRect;
+ if( RES_FLYFRMFMT == rFmt.Which() )
+ {
+ Point aObjPos;
+ SwRect aLayRect( rFmt.FindLayoutRect( FALSE, &aObjPos ));
+ if( aLayRect.IsEmpty() )
+ {
+ // the Object is not visible - so get the values from
+ // the format. The Position may not be correct.
+ const SwFmtVertOrient& rVOr = rFmt.GetVertOrient();
+ if( VERT_NONE == rVOr.GetVertOrient() )
+ aObjPos.Y() = rVOr.GetPos();
+ const SwFmtHoriOrient& rHOr = rFmt.GetHoriOrient();
+ if( HORI_NONE == rHOr.GetHoriOrient() )
+ aObjPos.X() = rHOr.GetPos();
+
+ aRect.SetSize( rFmt.GetFrmSize().GetSize() );
+ aRect.SetPos( aObjPos );
+ }
+ else
+ aRect = aLayRect.SVRect();
+ }
+ else
+ {
+ ASSERT( pObj, "wo ist das SDR-Object?" );
+ if( pObj )
+ aRect = pObj->GetSnapRect();
+ }
+ aRect -= *(Point*)aParentPos[ i ];
+
+ // spid
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, aShapeIds[ i ] );
+
+ //xaLeft/yaTop/xaRight/yaBottom - rel. to anchor
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, aRect.Left() );
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, aRect.Top() );
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, aRect.Right() );
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, aRect.Bottom() );
+
+ //fHdr/bx/by/wr/wrk/fRcaSimple/fBelowText/fAnchorLock
+ USHORT nFlags;
+ if( FLY_PAGE == rFmt.GetAnchor().GetAnchorId() )
+ nFlags = 0x0A; // x-rel to top Page, y-rel to top Page
+ else
+ nFlags = 0x14; // x-rel to text, y-rel to text
+
+ const SwFmtSurround& rSurr = rFmt.GetSurround();
+ USHORT nContour = rSurr.IsContour() ? 0x80 : 0x40;
+ switch( rSurr.GetSurround() )
+ {
+ case SURROUND_NONE: nFlags |= 0x020; break;
+ case SURROUND_THROUGHT: nFlags |= 0x060; break;
+ case SURROUND_PARALLEL: nFlags |= 0x000 | nContour; break;
+ case SURROUND_IDEAL: nFlags |= 0x600 | nContour; break;
+ case SURROUND_LEFT: nFlags |= 0x200 | nContour; break;
+ case SURROUND_RIGHT: nFlags |= 0x400 | nContour; break;
+ }
+ if( pObj && pObj->GetLayer() == rWrt.pDoc->GetHellId() )
+ nFlags |= 0x4000;
+
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, nFlags );
+
+ // cTxbx
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, 0 );
+ }
+
+
+ if( TXT_TXTBOX == nTTyp )
+ {
+ rFib.fcPlcfspaMom = nFcStart;
+ rFib.lcbPlcfspaMom = rWrt.pTableStrm->Tell() - nFcStart;
+ }
+ else
+ {
+ rFib.fcPlcfspaHdr = nFcStart;
+ rFib.lcbPlcfspaHdr = rWrt.pTableStrm->Tell() - nFcStart;
+ }
+ }
+}
+
+
+BOOL WW8_WrPlcDrawObj::Append( SwWW8Writer& rWrt, WW8_CP nCp,
+ const SwFrmFmt& rFmt,
+ const Point& rNdTopLeft )
+{
+ BOOL bRet = FALSE;
+ if( TXT_HDFT == rWrt.nTxtTyp || TXT_MAINTEXT == rWrt.nTxtTyp )
+ {
+ const SdrObject* pObj = rFmt.FindSdrObject(), *pInsObj = 0;
+ if( RES_FLYFRMFMT == rFmt.Which() )
+ {
+ // check for textflyframe and if it is the first in a Chain
+ const SwNodeIndex* pNdIdx = rFmt.GetCntnt().GetCntntIdx();
+ if( pNdIdx )
+ bRet = TRUE;
+ }
+ else
+ bRet = TRUE;
+ }
+
+ if( bRet )
+ {
+ aCps.Insert( nCp, aCps.Count() );
+ void* p = (void*)&rFmt;
+ aCntnt.Insert( p, aCntnt.Count() );
+ void* pPos = new Point( rNdTopLeft );
+ aParentPos.Insert( pPos, aParentPos.Count() );
+ aShapeIds.Insert( ULONG(0), aShapeIds.Count() );
+ }
+ return bRet;
+}
+
+void WW8_WrPlcDrawObj::SetShapeId( const SwFrmFmt& rFmt, UINT32 nId )
+{
+ const VoidPtr p = (void*)&rFmt;
+ USHORT nPos = aCntnt.GetPos( p );
+ if( USHRT_MAX != nPos )
+ aShapeIds[ nPos ] = nId;
+}
+
+/* */
+
+void WW8_WrPlcTxtBoxes::WriteTxt( SwWW8Writer& rWrt )
+{
+ rWrt.bInWriteEscher = TRUE;
+ long& rccp = TXT_TXTBOX == nTyp ? rWrt.pFib->ccpTxbx
+ : rWrt.pFib->ccpHdrTxbx;
+ WW8_WrPlcSubDoc::WriteTxt( rWrt, nTyp, rccp );
+
+ WW8_CP nCP = rWrt.Fc2Cp( rWrt.Strm().Tell() );
+ WW8Fib& rFib = *rWrt.pFib;
+ long nOffset = rFib.ccpText + rFib.ccpFtn + rFib.ccpHdr + rFib.ccpAtn
+ + rFib.ccpEdn;
+ if( TXT_TXTBOX == nTyp )
+ rWrt.pFldTxtBxs->Finish( nCP, nOffset );
+ else
+ rWrt.pFldHFTxtBxs->Finish( nCP, nOffset + rFib.ccpTxbx );
+ rWrt.bInWriteEscher = FALSE;
+}
+
+void WW8_WrPlcTxtBoxes::Append( const SdrObject& rObj, UINT32 nShapeId )
+{
+ void* p = (void*)&rObj;
+ aCntnt.Insert( p, aCntnt.Count() );
+ aShapeIds.Insert( nShapeId, aShapeIds.Count() );
+}
+
+const SvULongs* WW8_WrPlcTxtBoxes::GetShapeIdArr() const
+{
+ return &aShapeIds;
+}
+
+/* */
+
+UINT32 SwWW8Writer::GetSdrOrdNum( const SwFrmFmt& rFmt ) const
+{
+ UINT32 nOrdNum;
+ const SdrObject* pObj = rFmt.FindRealSdrObject();
+ if( pObj )
+ nOrdNum = pObj->GetOrdNum();
+ else
+ {
+ // no Layout for this format, then recalc the ordnum
+ SwFrmFmt* pFmt = (SwFrmFmt*)&rFmt;
+ nOrdNum = pDoc->GetSpzFrmFmts()->GetPos( pFmt );
+
+ const SdrModel* pModel = pDoc->GetDrawModel();
+ if( pModel )
+ nOrdNum += pModel->GetPage( 0 )->GetObjCount();
+ }
+ return nOrdNum;
+}
+
+void SwWW8Writer::AppendFlyInFlys( WW8_CP& rCP, const SwFrmFmt& rFrmFmt,
+ const Point& rNdTopLeft )
+{
+ ASSERT( !pEscher, "der EscherStream wurde schon geschrieben!" );
+ if( pEscher )
+ return ;
+
+ WW8_WrPlcDrawObj *pDrwO = TXT_HDFT == nTxtTyp ? pHFSdrObjs : pSdrObjs;
+ if( pDrwO->Append( *this, rCP, rFrmFmt, rNdTopLeft ))
+ {
+ static BYTE __READONLY_DATA aSpec8[] = {
+ 0x03, 0x6a, 0, 0, 0, 0, // sprmCObjLocation (wahrscheinlich unnoetig)
+ 0x55, 0x08, 1 // sprmCFSpec
+ };
+ // fSpec-Attribut TRUE
+ // Fuer DrawObjets muss ein Spezial-Zeichen
+ // in den Text und darum ein fSpec-Attribut
+ pChpPlc->AppendFkpEntry( Strm().Tell() );
+ WriteChar( 0x8 );
+ rCP += 1; // to next charakter position
+ pChpPlc->AppendFkpEntry( Strm().Tell(), sizeof( aSpec8 ), aSpec8 );
+
+ if( RES_FLYFRMFMT == rFrmFmt.Which() )
+ {
+ // search all Flys/DrawObj in Flys and put it behind this
+ // text position.
+ const SwNodeIndex* pNdIdx = rFrmFmt.GetCntnt().GetCntntIdx();
+ ASSERT( pNdIdx, "wo ist der NodeIndex geblieben?" );
+ ULONG nStart = pNdIdx->GetIndex(),
+ nEnd = pNdIdx->GetNode().EndOfSectionIndex(),
+ nIdx;
+
+ USHORT nArrLen = pDoc->GetSpzFrmFmts()->Count();
+ for( USHORT n = 0; n < nArrLen; ++n )
+ {
+ const SwFrmFmt* pFmt = (*pDoc->GetSpzFrmFmts())[n];
+ const SwFmtAnchor* pAnchor = &pFmt->GetAnchor();
+ const SwPosition* pAPos;
+ if( ( pAnchor->GetAnchorId() == FLY_AT_CNTNT ||
+ pAnchor->GetAnchorId() == FLY_AT_FLY ||
+ pAnchor->GetAnchorId() == FLY_AUTO_CNTNT ) &&
+ 0 != ( pAPos = pAnchor->GetCntntAnchor()) &&
+ nStart <= ( nIdx = pAPos->nNode.GetIndex()) &&
+ nIdx < nEnd )
+ {
+ AppendFlyInFlys( rCP, *pFmt, rNdTopLeft );
+ }
+ }
+ }
+ }
+}
+
+
+USHORT SwWW8Writer::TranslateToEditEngineId( USHORT nWhich )
+{
+ switch( nWhich )
+ {
+ case RES_LR_SPACE: nWhich = EE_PARA_LRSPACE; break;
+ case RES_UL_SPACE: nWhich = EE_PARA_ULSPACE; break;
+ case RES_PARATR_LINESPACING: nWhich = EE_PARA_SBL; break;
+ case RES_PARATR_ADJUST: nWhich = EE_PARA_JUST; break;
+ case RES_PARATR_TABSTOP: nWhich = EE_PARA_TABS; break;
+
+ case RES_CHRATR_COLOR: nWhich = EE_CHAR_COLOR; break;
+ case RES_CHRATR_FONT: nWhich = EE_CHAR_FONTINFO; break;
+ case RES_CHRATR_FONTSIZE: nWhich = EE_CHAR_FONTHEIGHT; break;
+ case RES_CHRATR_WEIGHT: nWhich = EE_CHAR_WEIGHT; break;
+ case RES_CHRATR_UNDERLINE: nWhich = EE_CHAR_UNDERLINE; break;
+ case RES_CHRATR_CROSSEDOUT: nWhich = EE_CHAR_STRIKEOUT; break;
+ case RES_CHRATR_POSTURE: nWhich = EE_CHAR_ITALIC; break;
+ case RES_CHRATR_CONTOUR: nWhich = EE_CHAR_OUTLINE; break;
+ case RES_CHRATR_SHADOWED: nWhich = EE_CHAR_SHADOW; break;
+ case RES_CHRATR_ESCAPEMENT: nWhich = EE_CHAR_ESCAPEMENT; break;
+ case RES_CHRATR_AUTOKERN: nWhich = EE_CHAR_PAIRKERNING; break;
+ case RES_CHRATR_KERNING: nWhich = EE_CHAR_KERNING; break;
+ case RES_CHRATR_WORDLINEMODE: nWhich = EE_CHAR_WLM; break;
+ case RES_CHRATR_CHARSETCOLOR: nWhich = EE_FEATURE_NOTCONV; break;
+
+
+ default:
+// case EE_PARA_NUMBULLET:
+// case EE_PARA_HYPHENATE:
+// case EE_PARA_BULLETSTATE:
+// case EE_PARA_OUTLLRSPACE:
+// case EE_PARA_OUTLLEVEL:
+// case EE_PARA_BULLET:
+//ITEMID_FONTWIDTH EE_CHAR_FONTWIDTH
+ nWhich = 0;
+ break;
+ }
+ return nWhich;
+}
+
+USHORT SwWW8Writer::TranslateFromEditEngineId( USHORT nWhich )
+{
+ switch( nWhich )
+ {
+ case EE_PARA_LRSPACE: nWhich = RES_LR_SPACE; break;
+ case EE_PARA_ULSPACE: nWhich = RES_UL_SPACE; break;
+ case EE_PARA_SBL: nWhich = RES_PARATR_LINESPACING; break;
+ case EE_PARA_JUST: nWhich = RES_PARATR_ADJUST; break;
+ case EE_PARA_TABS: nWhich = RES_PARATR_TABSTOP; break;
+
+ case EE_CHAR_COLOR: nWhich = RES_CHRATR_COLOR; break;
+ case EE_CHAR_FONTINFO: nWhich = RES_CHRATR_FONT; break;
+ case EE_CHAR_FONTHEIGHT: nWhich = RES_CHRATR_FONTSIZE; break;
+ case EE_CHAR_WEIGHT: nWhich = RES_CHRATR_WEIGHT; break;
+ case EE_CHAR_UNDERLINE: nWhich = RES_CHRATR_UNDERLINE; break;
+ case EE_CHAR_STRIKEOUT: nWhich = RES_CHRATR_CROSSEDOUT; break;
+ case EE_CHAR_ITALIC: nWhich = RES_CHRATR_POSTURE; break;
+ case EE_CHAR_OUTLINE: nWhich = RES_CHRATR_CONTOUR; break;
+ case EE_CHAR_SHADOW: nWhich = RES_CHRATR_SHADOWED; break;
+ case EE_CHAR_ESCAPEMENT: nWhich = RES_CHRATR_ESCAPEMENT; break;
+ case EE_CHAR_PAIRKERNING: nWhich = RES_CHRATR_AUTOKERN; break;
+ case EE_CHAR_KERNING: nWhich = RES_CHRATR_KERNING; break;
+ case EE_CHAR_WLM: nWhich = RES_CHRATR_WORDLINEMODE; break;
+ case EE_FEATURE_NOTCONV: nWhich = RES_CHRATR_CHARSETCOLOR; break;
+
+ default:
+// case EE_PARA_NUMBULLET:
+// case EE_PARA_HYPHENATE:
+// case EE_PARA_BULLETSTATE:
+// case EE_PARA_OUTLLRSPACE:
+// case EE_PARA_OUTLLEVEL:
+// case EE_PARA_BULLET:
+//ITEMID_FONTWIDTH EE_CHAR_FONTWIDTH
+ nWhich = 0;
+ break;
+ }
+ return nWhich;
+}
+
+class WW8_SdrAttrIter : public WW8_AttrIter
+{
+ const EditTextObject* pEditObj;
+ EECharAttribArray aTxtAtrArr;
+ SvPtrarr aChrTxtAtrArr;
+ SvUShorts aChrSetArr;
+ USHORT nPara;
+ xub_StrLen nAktSwPos;
+ xub_StrLen nTmpSwPos; // fuer HasItem()
+ rtl_TextEncoding eNdChrSet;
+
+ xub_StrLen SearchNext( xub_StrLen nStartPos );
+ void SetCharSet( const EECharAttrib& rTxtAttr, BOOL bStart );
+
+public:
+ WW8_SdrAttrIter( SwWW8Writer& rWr, const EditTextObject& rEditObj );
+ void NextPara( USHORT nPar );
+ void OutParaAttr( BOOL bCharAttr );
+
+ BOOL IsTxtAttr( xub_StrLen nSwPos );
+
+ void NextPos() { nAktSwPos = SearchNext( nAktSwPos + 1 ); }
+
+ void OutAttr( xub_StrLen nSwPos );
+ virtual const SfxPoolItem* HasTextItem( USHORT nWhich ) const;
+ virtual const SfxPoolItem& GetItem( USHORT nWhich ) const;
+ BOOL OutAttrWithRange( xub_StrLen nPos );
+ xub_StrLen WhereNext() const { return nAktSwPos; }
+ rtl_TextEncoding GetNextCharSet() const;
+ rtl_TextEncoding GetNodeCharSet() const { return eNdChrSet; }
+};
+
+
+WW8_SdrAttrIter::WW8_SdrAttrIter( SwWW8Writer& rWr,
+ const EditTextObject& rEditObj )
+ : WW8_AttrIter( rWr ), pEditObj( &rEditObj ),
+ aTxtAtrArr( 0, 4 ), aChrTxtAtrArr( 0, 4 ), aChrSetArr( 0, 4 )
+{
+ NextPara( 0 );
+}
+
+void WW8_SdrAttrIter::NextPara( USHORT nPar )
+{
+ nPara = nPar;
+ // Attributwechsel an Pos 0 wird ignoriert, da davon ausgegangen
+ // wird, dass am Absatzanfang sowieso die Attribute neu ausgegeben
+ // werden.
+ aChrTxtAtrArr.Remove( 0, aChrTxtAtrArr.Count() );
+ aChrSetArr.Remove( 0, aChrSetArr.Count() );
+ nAktSwPos = nTmpSwPos = 0;
+
+ SfxItemSet aSet( pEditObj->GetParaAttribs( nPara ));
+ eNdChrSet = ((SvxFontItem&)aSet.Get( EE_CHAR_FONTINFO )).GetCharSet();
+ pEditObj->GetCharAttribs( nPara, aTxtAtrArr );
+ nAktSwPos = SearchNext( 1 );
+}
+
+rtl_TextEncoding WW8_SdrAttrIter::GetNextCharSet() const
+{
+ if( aChrSetArr.Count() )
+ return (rtl_TextEncoding)aChrSetArr[ aChrSetArr.Count() - 1 ];
+ return eNdChrSet;
+}
+
+// der erste Parameter in SearchNext() liefert zurueck, ob es ein TxtAtr ist.
+xub_StrLen WW8_SdrAttrIter::SearchNext( xub_StrLen nStartPos )
+{
+ register xub_StrLen nPos;
+ register xub_StrLen nMinPos = STRING_MAXLEN;
+ register xub_StrLen i;
+
+ for( i = 0; i < aTxtAtrArr.Count(); i++ )
+ {
+ const EECharAttrib& rHt = aTxtAtrArr[ i ];
+ nPos = rHt.nStart; // gibt erstes Attr-Zeichen
+ if( nPos >= nStartPos && nPos <= nMinPos )
+ {
+ nMinPos = nPos;
+ SetCharSet( rHt, TRUE );
+ }
+
+//?? if( pHt->GetEnd() ) // Attr mit Ende
+ {
+ nPos = rHt.nEnd; // gibt letztes Attr-Zeichen + 1
+ if( nPos >= nStartPos && nPos < nMinPos )
+ {
+ nMinPos = nPos;
+ SetCharSet( rHt, FALSE );
+ }
+ }
+/* else
+ { // Attr ohne Ende
+ nPos = rHt.nStart + 1; // Laenge 1 wegen CH_TXTATR im Text
+ if( nPos >= nStartPos && nPos < nMinPos )
+ {
+ nMinPos = nPos;
+ SetCharSet( rHt, FALSE );
+ }
+ }
+*/
+ }
+ return nMinPos;
+}
+
+void WW8_SdrAttrIter::SetCharSet( const EECharAttrib& rAttr, BOOL bStart )
+{
+ void* p = 0;
+ rtl_TextEncoding eChrSet;
+ const SfxPoolItem& rItem = *rAttr.pAttr;
+ switch( rItem.Which() )
+ {
+ case EE_CHAR_FONTINFO:
+ p = (void*)&rAttr;
+ eChrSet = ((SvxFontItem&)rItem).GetCharSet();
+ break;
+ }
+
+ if( p )
+ {
+ USHORT nPos;
+ if( bStart )
+ {
+ nPos = aChrSetArr.Count();
+ aChrSetArr.Insert( eChrSet, nPos );
+ aChrTxtAtrArr.Insert( p, nPos );
+ }
+ else if( USHRT_MAX != ( nPos = aChrTxtAtrArr.GetPos( p )) )
+ {
+ aChrTxtAtrArr.Remove( nPos );
+ aChrSetArr.Remove( nPos );
+ }
+ }
+}
+
+void WW8_SdrAttrIter::OutAttr( xub_StrLen nSwPos )
+{
+ OutParaAttr( TRUE );
+
+ if( aTxtAtrArr.Count() )
+ {
+ const SwModify* pOldMod = rWrt.pOutFmtNode;
+ rWrt.pOutFmtNode = 0;
+
+ nTmpSwPos = nSwPos;
+ register USHORT i, nWhich;
+ FnAttrOut pOut;
+ for( i = 0; i < aTxtAtrArr.Count(); i++ )
+ {
+ const EECharAttrib& rHt = aTxtAtrArr[ i ];
+ if( nSwPos >= rHt.nStart && nSwPos < rHt.nEnd &&
+ 0 != ( nWhich = rWrt.TranslateFromEditEngineId(
+ rHt.pAttr->Which() )) &&
+ 0 != ( pOut = aWW8AttrFnTab[ nWhich - RES_CHRATR_BEGIN ] ) )
+
+ (*pOut)( rWrt, *rHt.pAttr );
+
+ else if( nSwPos < rHt.nStart )
+ break;
+ }
+
+ nTmpSwPos = 0; // HasTextItem nur in dem obigen Bereich erlaubt
+ rWrt.pOutFmtNode = pOldMod;
+ }
+}
+
+BOOL WW8_SdrAttrIter::IsTxtAttr( xub_StrLen nSwPos )
+{
+// solange die EditEngine keine Attribute hat, die nur eine Position haben
+return FALSE;
+
+ // search for attrs without end position
+ register USHORT i;
+ for( i = 0; i < aTxtAtrArr.Count(); i++ )
+ if( aTxtAtrArr[ i ].nStart == nSwPos )
+ return TRUE;
+ return FALSE;
+}
+
+// HasItem ist fuer die Zusammenfassung des Doppel-Attributes Underline
+// und WordLineMode als TextItems. OutAttr() ruft die Ausgabefunktion,
+// die dann ueber HasItem() nach anderen Items an der
+// Attribut-Anfangposition fragen kann.
+// Es koennen nur Attribute mit Ende abgefragt werden.
+// Es wird mit bDeep gesucht
+const SfxPoolItem* WW8_SdrAttrIter::HasTextItem( USHORT nWhich ) const
+{
+ const SfxPoolItem* pRet = 0;
+ if( 0 != ( nWhich = rWrt.TranslateToEditEngineId( nWhich )) )
+ {
+ register USHORT i;
+ for( i = 0; i < aTxtAtrArr.Count(); ++i )
+ {
+ const EECharAttrib& rHt = aTxtAtrArr[ i ];
+ if( nWhich == rHt.pAttr->Which() &&
+ nTmpSwPos >= rHt.nStart && nTmpSwPos < rHt.nEnd )
+ {
+ pRet = rHt.pAttr; // gefunden
+ break;
+ }
+ else if( nTmpSwPos < rHt.nStart )
+ break; // dann kommt da nichts mehr
+ }
+ }
+ return pRet;
+}
+
+const SfxPoolItem& WW8_SdrAttrIter::GetItem( USHORT nWhich ) const
+{
+ const SfxPoolItem* pRet = HasTextItem( nWhich );
+ if( !pRet )
+ {
+ SfxItemSet aSet( pEditObj->GetParaAttribs( nPara ));
+ pRet = &aSet.Get( rWrt.TranslateToEditEngineId( nWhich ) );
+ }
+ return *pRet;
+}
+
+void WW8_SdrAttrIter::OutParaAttr( BOOL bCharAttr )
+{
+ SfxItemSet aSet( pEditObj->GetParaAttribs( nPara ));
+ if( aSet.Count() )
+ {
+ const SfxItemSet* pOldSet = rWrt.GetCurItemSet();
+ rWrt.SetCurItemSet( &aSet );
+
+ SfxItemIter aIter( aSet );
+ const SfxPoolItem* pItem = aIter.GetCurItem();
+ FnAttrOut pOut;
+
+ do {
+ USHORT nWhich = rWrt.TranslateFromEditEngineId( pItem->Which() );
+ if( nWhich && 0 != ( pOut =
+ aWW8AttrFnTab[ nWhich - RES_CHRATR_BEGIN ] )
+ && ( bCharAttr ? ( nWhich >= RES_CHRATR_BEGIN
+ && nWhich < RES_TXTATR_END)
+ : (nWhich >= RES_PARATR_BEGIN
+ && nWhich < RES_FRMATR_END) ) )
+ (*pOut)( rWrt, *pItem );
+
+ } while( !aIter.IsAtEnd() && 0 != ( pItem = aIter.NextItem() ) );
+ rWrt.SetCurItemSet( pOldSet );
+ }
+}
+
+void SwWW8Writer::WriteSdrTextObj( const SdrObject& rObj )
+{
+ const SdrTextObj* pTxtObj = PTR_CAST( SdrTextObj, &rObj );
+ ASSERT( pTxtObj, "das ist gar kein SdrTextObj!" );
+
+ BOOL bAnyWrite = FALSE;
+ const OutlinerParaObject* pParaObj = pTxtObj->GetOutlinerParaObject();
+ if( pParaObj )
+ {
+ const EditTextObject& rEditObj = pParaObj->GetTextObject();
+ WW8_SdrAttrIter aAttrIter( *this, rEditObj );
+
+ USHORT nPara = rEditObj.GetParagraphCount();
+ BYTE bNul = 0;
+ for( USHORT n = 0; n < nPara; ++n )
+ {
+ if( n )
+ aAttrIter.NextPara( n );
+
+ rtl_TextEncoding eChrSet = aAttrIter.GetNodeCharSet();
+
+ ASSERT( !pO->Count(), " pO ist am Zeilenanfang nicht leer" );
+
+ String aStr( rEditObj.GetText( n ));
+ xub_StrLen nAktPos = 0;
+ xub_StrLen nEnd = aStr.Len();
+ BOOL bUnicode = TRUE;
+ do {
+/*
+ switch( eChrSet )
+ {
+ // case CHARSET_DONTKNOW: ????
+ case CHARSET_SYMBOL:
+ // case CHARSET_WIN_SYMBOL:
+ // case CHARSET_WIN_WINGDINGS:
+ // case CHARSET_MAC_DINGBATS:
+ // case CHARSET_MAC_SYMBOL:
+ // case CHARSET_ADOBE_SYMBOL:
+ // case CHARSET_ADOBE_DINGBATS:
+ // case CHARSET_STAR_STARBATS:
+ // case CHARSET_STAR_STARMATH:
+ bUnicode = bWrtWW8 ? TRUE : FALSE;
+ break;
+ default:
+ bUnicode = FALSE;
+ break;
+ }
+*/
+ xub_StrLen nNextAttr = aAttrIter.WhereNext();
+ rtl_TextEncoding eNextChrSet = aAttrIter.GetNextCharSet();
+
+ if( nNextAttr > nEnd )
+ nNextAttr = nEnd;
+
+ BOOL bTxtAtr = aAttrIter.IsTxtAttr( nAktPos );
+ if( !bTxtAtr )
+ OutSwString( aStr, nAktPos, nNextAttr - nAktPos,
+ bUnicode, eChrSet );
+
+ // Am Zeilenende werden die Attribute bis ueber das CR
+ // aufgezogen. Ausnahme: Fussnoten am Zeilenende
+ if( nNextAttr == nEnd && !bTxtAtr )
+ WriteCR(); // CR danach
+
+ // Ausgabe der Zeichenattribute
+ aAttrIter.OutAttr( nAktPos ); // nAktPos - 1 ??
+ pChpPlc->AppendFkpEntry( Strm().Tell(),
+ pO->Count(), pO->GetData() );
+ pO->Remove( 0, pO->Count() ); // leeren
+
+ // Ausnahme: Fussnoten am Zeilenende
+ if( nNextAttr == nEnd && bTxtAtr )
+ WriteCR(); // CR danach
+
+ nAktPos = nNextAttr;
+ eChrSet = eNextChrSet;
+ aAttrIter.NextPos();
+ }
+ while( nAktPos < nEnd );
+
+ ASSERT( !pO->Count(), " pO ist am ZeilenEnde nicht leer" );
+
+ pO->Insert( bNul, pO->Count() ); // Style # as short
+ pO->Insert( bNul, pO->Count() );
+
+ aAttrIter.OutParaAttr( FALSE );
+
+ ULONG nPos = Strm().Tell();
+ pPapPlc->AppendFkpEntry( Strm().Tell(),
+ pO->Count(), pO->GetData() );
+ pO->Remove( 0, pO->Count() ); // leeren
+ pChpPlc->AppendFkpEntry( nPos );
+ }
+ bAnyWrite = 0 != nPara;
+ }
+ if( !bAnyWrite )
+ WriteStringAsPara( aEmptyStr );
+}
+
+/* */
+
+class SwEscherEx : public EscherEx
+{
+ // private members
+ SvULongs aFollowShpIds;
+ SvPtrarr aSortFmts;
+ SwWW8Writer& rWrt;
+ WW8_WrPlcTxtBoxes *pTxtBxs;
+ SvStream* pEscherStrm, *pPictStrm;
+ long nEmuMul, nEmuDiv;
+
+ // private methods
+ void Init();
+
+ UINT32 GetFlyShapeId( const SwFrmFmt& rFmt );
+ void MakeZOrderArrAndFollowIds( const SvPtrarr& rSrcArr );
+
+ INT32 ToFract16( INT32 nVal, UINT32 nMax ) const
+ {
+ INT32 nMSVal = ( nVal / 65536) * nMax;
+ nMSVal += ( nVal * 65536 ) / nMax;
+ return nMSVal;
+ }
+ INT32 DrawModelToEmu( INT32 nVal ) const
+ { return BigMulDiv( nVal, nEmuMul, nEmuDiv ); }
+
+ void WriteTxtFlyFrame( const SwFrmFmt& rFmt, UINT32 nShapeId,
+ UINT32 nTxtBox );
+ void WriteGrfFlyFrame( const SwFrmFmt& rFmt, UINT32 nShapeId );
+ void WriteOLEFlyFrame( const SwFrmFmt& rFmt, UINT32 nShapeId );
+ void WriteFlyFrameAttr( const SwFrmFmt& rFmt );
+ void WriteGrfAttr( const SwNoTxtNode& rNd );
+
+ UINT32 WriteFlyFrm( const SwFrmFmt& rFmt );
+
+ virtual SvStream* QueryPicStream();
+ virtual UINT32 QueryTextID( const uno::Reference< drawing::XShape>& , UINT32 );
+
+ SwEscherEx( const SwEscherEx& );
+public:
+ SwEscherEx( SvStream* pStrm, SwWW8Writer& rWW8Wrt );
+ virtual ~SwEscherEx();
+
+ void FinishEscher();
+ void WritePictures();
+};
+
+
+/* */
+
+void SwWW8Writer::CreateEscher()
+{
+ if(pHFSdrObjs->GetCntntArr().Count() || pSdrObjs->GetCntntArr().Count())
+ {
+ ASSERT( !pEscher, "wer hat den Pointer nicht geloescht?" );
+ SvStream* pEscherStrm = pStg->OpenStream( sEscherStream,
+ STREAM_READWRITE | STREAM_SHARE_DENYALL );
+ pEscherStrm->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+
+ pEscher = new SwEscherEx( pEscherStrm, *this );
+ }
+}
+
+void SwWW8Writer::WriteEscher()
+{
+ if( pEscher )
+ {
+ ULONG nStart = pTableStrm->Tell();
+
+ pEscher->WritePictures();
+ pEscher->FinishEscher();
+
+ pFib->fcDggInfo = nStart;
+ pFib->lcbDggInfo = pTableStrm->Tell() - nStart;
+ delete pEscher, pEscher = 0;
+ }
+}
+
+
+/* */
+
+// Output- Routines for Escher Export
+
+SwEscherEx::SwEscherEx( SvStream* pStrm, SwWW8Writer& rWW8Wrt )
+/* : SvxEscherEx( *pStrm,
+ rWW8Wrt.pHFSdrObjs->GetCntntArr().Count() ? 2 : 1,
+ *rWW8Wrt.pDoc->GetDrawModel(),
+ 1440 ),
+*/
+ : EscherEx( *pStrm, rWW8Wrt.pHFSdrObjs->GetCntntArr().Count() ? 2 : 1 ),
+ rWrt( rWW8Wrt ), pTxtBxs( 0 ), pEscherStrm( pStrm ), pPictStrm( 0 )
+{
+ Init();
+ OpenContainer( ESCHER_DggContainer );
+ BeginCount();
+ AddColor( 0x08000004 );
+ AddColor( 0x08000001 );
+ AddColor( 0x08000002 );
+ AddColor( 0x100000f7 );
+ EndCount( ESCHER_SplitMenuColors );
+ CloseContainer(); // ESCHER_DggContainer
+
+ BYTE i = 2; // for header/footer and the other
+ WW8_WrPlcDrawObj *pSdrObjs = rWrt.pHFSdrObjs;
+ pTxtBxs = rWrt.pHFTxtBxs;
+
+ if( !pSdrObjs->GetCntntArr().Count() ) // if no header/footer -> skip over
+ {
+ --i;
+ pSdrObjs = rWrt.pSdrObjs;
+ pTxtBxs = rWrt.pTxtBxs;
+ }
+
+ for( ; i--; pSdrObjs = rWrt.pSdrObjs, pTxtBxs = rWrt.pTxtBxs )
+ {
+ // "dummy char" (or any Count ?) - why? This knows only M$
+ GetStream() << (sal_Char)i;
+
+ OpenContainer( ESCHER_DgContainer );
+
+ EnterGroup( 0 );
+
+ ULONG nSecondShapeId = pSdrObjs == rWrt.pSdrObjs
+ ? GetShapeID() : 0;
+
+ // write now all Writer-/DrawObjects
+ MakeZOrderArrAndFollowIds( pSdrObjs->GetCntntArr() );
+
+ ULONG nShapeId;
+ for( USHORT n = 0; n < aSortFmts.Count(); ++n )
+ {
+ const SwFrmFmt& rFmt = *(SwFrmFmt*)aSortFmts[ n ];
+ if( RES_FLYFRMFMT == rFmt.Which() )
+ nShapeId = WriteFlyFrm( rFmt );
+ else
+ {
+ const SdrObject* pObj = rFmt.FindRealSdrObject();
+ if( pObj )
+ {
+ nShapeId = AddSdrObject( *pObj );
+ }
+#ifndef PRODUCT
+ else
+ ASSERT( !this, "wo ist das SDR-Object?" );
+#endif
+ }
+
+ if( !nShapeId )
+ {
+ /*!!!*/ const SdrObject* pObj = 0;
+ nShapeId = AddDummyShape( *pObj );
+ }
+
+ pSdrObjs->SetShapeId( rFmt, nShapeId );
+ }
+
+ EndSdrObjectPage(); // ???? Bugfix for 74724
+
+ LeaveGroup();
+
+ if( nSecondShapeId )
+ {
+ OpenContainer( ESCHER_SpContainer );
+
+ AddShape( ESCHER_ShpInst_Rectangle, 0xe00, nSecondShapeId );
+
+ BeginCount();
+ // default Fuellfarbe ist das StarOffice blau7
+ // ----> von DrawingLayer besorgen !!
+ AddOpt( ESCHER_Prop_fillColor, 0xffb800 );
+ AddOpt( ESCHER_Prop_fillBackColor, 0 );
+ AddOpt( ESCHER_Prop_fNoFillHitTest, 0x00100010 );
+ AddOpt( ESCHER_Prop_lineColor, 0x8000001 );
+ AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x00080008 );
+ AddOpt( ESCHER_Prop_shadowColor, 0x8000002 );
+ AddOpt( ESCHER_Prop_lineWidth, 0 );
+
+// winword defaults!
+// AddOpt( ESCHER_Prop_fNoFillHitTest, 0x100000 );
+// AddOpt( ESCHER_Prop_lineWidth, 0 );
+// AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x80000 );
+// AddOpt( ESCHER_Prop_bWMode, 0x9 );
+// AddOpt( ESCHER_Prop_fBackground, 0x10001 );
+
+ EndCount( ESCHER_OPT, 3 );
+
+ AddAtom( 4, ESCHER_ClientData );
+ GetStream() << 1L;
+
+ CloseContainer(); // ESCHER_SpContainer
+ }
+ CloseContainer(); // ESCHER_DgContainer
+ }
+}
+
+SwEscherEx::~SwEscherEx()
+{
+}
+
+void SwEscherEx::Init()
+{
+ SdrModel& rModel = *rWrt.pDoc->GetDrawModel();
+ // PPT arbeitet nur mit Einheiten zu 576DPI
+ // WW hingegen verwendet twips, dh. 1440DPI.
+ MapUnit eMap = rModel.GetScaleUnit();
+
+// Fraction aFact( nAppScale );
+// aFact /= GetMapFactor( MAP_INCH, eMap ).X();
+ // create little values
+// aFact = Fraction( aFact.GetNumerator(), aFact.GetDenominator() );
+
+ // Bei 100TH_MM -> 2540/576=635/144
+ // Bei Twip -> 1440/576=5/2
+// nMapMul = aFact.GetNumerator();
+// nMapDiv = aFact.GetDenominator();
+// bNeedMap = nMapMul != nMapDiv;
+
+ // MS-DFF-Properties sind grossteils in EMU (English Metric Units) angegeben
+ // 1mm=36000emu, 1twip=635emu
+ Fraction aFact( 360, 1 );
+// aFact = Fraction( 360, 1 );
+ aFact /= GetMapFactor( MAP_100TH_MM, eMap ).X();
+ // create little values
+ aFact = Fraction( aFact.GetNumerator(), aFact.GetDenominator() );
+ nEmuMul = aFact.GetNumerator();
+ nEmuDiv = aFact.GetDenominator();
+
+ // Und noch was fuer typografische Points
+// aFact = Fraction( 1, 1 );
+// aFact /= GetMapFactor(MAP_POINT,eMap).X();
+// nPntMul = aFact.GetNumerator();
+// nPntDiv = aFact.GetDenominator();
+
+ SetHellLayerId( rWrt.pDoc->GetHellId() );
+}
+
+void SwEscherEx::WritePictures()
+{
+ if( pPictStrm )
+ {
+ // set the blip - entries to the correct stream pos
+ INT32 nEndPos = rWrt.Strm().Tell();
+ SetNewBlipStreamOffset( nEndPos );
+
+ pPictStrm->Seek( 0 );
+ rWrt.Strm() << *pPictStrm;
+
+ delete pPictStrm, pPictStrm = 0;
+ rWrt.GetStorage().Remove( sEscherPictStream );
+ }
+ Flush();
+}
+
+void SwEscherEx::FinishEscher()
+{
+ pEscherStrm->Seek( 0 );
+ *rWrt.pTableStrm << *pEscherStrm;
+
+ delete pEscherStrm, pEscherStrm = 0;
+ rWrt.GetStorage().Remove( sEscherStream );
+}
+
+
+UINT32 SwEscherEx::WriteFlyFrm( const SwFrmFmt& rFmt )
+{
+ // check for textflyframe and if it is the first in a Chain
+ UINT32 nShapeId = 0;
+ const SwNodeIndex* pNdIdx = rFmt.GetCntnt().GetCntntIdx();
+ if( pNdIdx )
+ {
+ SwNodeIndex aIdx( *pNdIdx, 1 );
+ switch( aIdx.GetNode().GetNodeType() )
+ {
+ case ND_GRFNODE:
+ WriteGrfFlyFrame( rFmt, nShapeId =GetShapeID() );
+ break;
+
+ case ND_OLENODE:
+ WriteOLEFlyFrame( rFmt, nShapeId =GetShapeID() );
+ break;
+
+ default:
+ {
+ const SdrObject* pObj = rFmt.FindRealSdrObject();
+ if( pObj )
+ {
+ // check for the first in a Chain
+ UINT32 nTxtId;
+ USHORT nOff = 0;
+ const SwFrmFmt* pFmt = &rFmt, *pPrev;
+ while( 0 != ( pPrev = pFmt->GetChain().GetPrev() ))
+ {
+ ++nOff;
+ pFmt = pPrev;
+ }
+
+ nShapeId = GetFlyShapeId( rFmt );
+ if( !nOff )
+ {
+ void* p = (void*)pObj;
+ nTxtId = pTxtBxs->GetPos( p );
+ if( USHRT_MAX == nTxtId )
+ {
+ pTxtBxs->Append( *pObj, nShapeId );
+ nTxtId = pTxtBxs->Count();
+ }
+ else
+ ++nTxtId;
+ }
+ else
+ {
+ const SdrObject* pPrevObj = pFmt->FindRealSdrObject();
+ void* p = (void*)pPrevObj;
+ nTxtId = pTxtBxs->GetPos( p );
+ if( USHRT_MAX == nTxtId )
+ {
+ UINT32 nPrevShapeId = GetFlyShapeId( *pFmt );
+ pTxtBxs->Append( *pPrevObj, nPrevShapeId );
+ nTxtId = pTxtBxs->Count();
+ }
+ else
+ ++nTxtId;
+ }
+ nTxtId *= 0x10000;
+ nTxtId += nOff;
+
+ WriteTxtFlyFrame( rFmt, nShapeId, nTxtId );
+ }
+ }
+ }
+ }
+ return nShapeId;
+}
+
+void SwEscherEx::WriteTxtFlyFrame( const SwFrmFmt& rFmt, UINT32 nShapeId,
+ UINT32 nTxtBox )
+{
+ OpenContainer( ESCHER_SpContainer );
+
+ AddShape( ESCHER_ShpInst_TextBox, 0xa00, nShapeId );
+
+ BeginCount();
+
+ AddOpt( ESCHER_Prop_lTxid, nTxtBox );
+
+ const VoidPtr pNext = rFmt.GetChain().GetNext();
+ if( pNext )
+ {
+ USHORT nPos = aSortFmts.GetPos( pNext );
+ if( USHRT_MAX != nPos && aFollowShpIds[ nPos ] )
+ AddOpt( ESCHER_Prop_hspNext, aFollowShpIds[ nPos ] );
+ }
+
+ WriteFlyFrameAttr( rFmt );
+
+ EndCount( ESCHER_OPT, 3 );
+
+ AddAtom( 4, ESCHER_ClientAnchor ); GetStream() << 0L;
+ AddAtom( 4, ESCHER_ClientData ); GetStream() << 1L;
+ AddAtom( 4, ESCHER_ClientTextbox ); GetStream() << nTxtBox;
+
+ CloseContainer(); // ESCHER_SpContainer
+}
+
+void SwEscherEx::WriteGrfFlyFrame( const SwFrmFmt& rFmt, UINT32 nShapeId )
+{
+ OpenContainer( ESCHER_SpContainer );
+
+ AddShape( ESCHER_ShpInst_PictureFrame, 0xa00, nShapeId );
+
+ BeginCount();
+
+ UINT32 nFlags = ESCHER_BlipFlagDefault;
+ SwNodeIndex aIdx( *rFmt.GetCntnt().GetCntntIdx(), 1 );
+ SwGrfNode& rGrfNd = *aIdx.GetNode().GetGrfNode();
+ if( rGrfNd.IsLinkedFile() )
+ {
+ String sURL;
+ rGrfNd.GetFileFilterNms( &sURL, 0 );
+
+ WW8Bytes aBuf;
+ SwWW8Writer::InsAsString16( aBuf, sURL );
+ SwWW8Writer::InsUInt16( aBuf, 0 );
+
+ USHORT nArrLen = aBuf.Count();
+ BYTE* pArr = new BYTE[ nArrLen ];
+ memcpy( pArr, aBuf.GetData(), nArrLen );
+
+ AddOpt( ESCHER_Prop_pibName, TRUE, nArrLen, pArr, nArrLen );
+ nFlags = ESCHER_BlipFlagLinkToFile | ESCHER_BlipFlagURL |
+ ESCHER_BlipFlagDoNotSave;
+ }
+ else
+ {
+ rGrfNd.SwapIn( TRUE );
+ AddOpt( ESCHER_Prop_pib, AddGraphic( *QueryPicStream(),
+ rGrfNd.GetGrf() ), TRUE );
+ }
+ AddOpt( ESCHER_Prop_pibFlags, nFlags );
+
+ WriteFlyFrameAttr( rFmt );
+ WriteGrfAttr( rGrfNd );
+
+ EndCount( ESCHER_OPT, 3 );
+
+ AddAtom( 4, ESCHER_ClientAnchor ); GetStream() << 0L;
+ AddAtom( 4, ESCHER_ClientData ); GetStream() << 1L;
+
+ CloseContainer(); // ESCHER_SpContainer
+}
+
+void SwEscherEx::WriteOLEFlyFrame( const SwFrmFmt& rFmt, UINT32 nShapeId )
+{
+ SwNodeIndex aIdx( *rFmt.GetCntnt().GetCntntIdx(), 1 );
+ SwOLENode& rOLENd = *aIdx.GetNode().GetOLENode();
+ const SvInPlaceObjectRef xObj( rOLENd.GetOLEObj().GetOleRef() );
+ SvData aData( FORMAT_GDIMETAFILE );
+ GDIMetaFile* pMtf;
+
+ const SdrObject* pSdrObj = rFmt.FindRealSdrObject();
+ if( pSdrObj && xObj->GetData( &aData ) &&
+ aData.GetData( &pMtf, TRANSFER_MOVE ) )
+ {
+ OpenContainer( ESCHER_SpContainer );
+
+ AddShape( ESCHER_ShpInst_PictureFrame, 0xa10, nShapeId );
+
+ BeginCount();
+
+ {
+ SvMemoryStream aGrfStrm;
+ WriteWindowMetafile( aGrfStrm, *pMtf );
+ const BYTE* pMem = (BYTE*)aGrfStrm.GetData();
+ UINT32 nLen = aGrfStrm.GetSize();
+ Size aSz( rOLENd.GetTwipSize() );
+ aSz.Width() = DrawModelToEmu( aSz.Width() );
+ aSz.Height() = DrawModelToEmu( aSz.Height() );
+ Rectangle aRect( Point(0,0), aSz );
+ AddOpt( ESCHER_Prop_pib, AddWMF( *QueryPicStream(),
+ pMem + 22, nLen - 22, aRect ), TRUE );
+ }
+ pTxtBxs->Append( *pSdrObj, nShapeId );
+ UINT32 nPicId = pTxtBxs->Count();
+ nPicId *= 0x10000;
+ AddOpt( ESCHER_Prop_pictureId, nPicId );
+ AddOpt( ESCHER_Prop_pictureActive, 0x10000 );
+
+ WriteFlyFrameAttr( rFmt );
+ WriteGrfAttr( rOLENd );
+
+ EndCount( ESCHER_OPT, 3 );
+
+ AddAtom( 4, ESCHER_ClientAnchor ); GetStream() << 0L;
+ AddAtom( 4, ESCHER_ClientData ); GetStream() << 1L;
+
+ CloseContainer(); // ESCHER_SpContainer
+ }
+}
+
+
+void SwEscherEx::WriteGrfAttr( const SwNoTxtNode& rNd )
+{
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rNd.GetSwAttrSet().GetItemState( RES_GRFATR_CROPGRF,
+ TRUE, &pItem ))
+ {
+ const Size aSz( rNd.GetTwipSize() );
+ INT32 nVal;
+ if( 0 != ( nVal = ((SwCropGrf*)pItem )->GetLeft() ) )
+ AddOpt( ESCHER_Prop_cropFromLeft, ToFract16( nVal, aSz.Width()) );
+ if( 0 != ( nVal = ((SwCropGrf*)pItem )->GetRight() ) )
+ AddOpt( ESCHER_Prop_cropFromRight, ToFract16( nVal, aSz.Width()));
+ if( 0 != ( nVal = ((SwCropGrf*)pItem )->GetTop() ) )
+ AddOpt( ESCHER_Prop_cropFromTop, ToFract16( nVal, aSz.Height()));
+ if( 0 != ( nVal = ((SwCropGrf*)pItem )->GetBottom() ) )
+ AddOpt( ESCHER_Prop_cropFromBottom, ToFract16( nVal, aSz.Height()));
+ }
+ // mirror ??
+}
+
+void SwEscherEx::WriteFlyFrameAttr( const SwFrmFmt& rFmt )
+{
+ const SfxPoolItem* pItem;
+ BOOL bFirstLine = TRUE;
+ if( SFX_ITEM_SET == rFmt.GetItemState( RES_BOX, TRUE, &pItem ) )
+ {
+ static UINT16 __READONLY_DATA aExhperProp[ 4 ] = {
+ ESCHER_Prop_dyTextTop, ESCHER_Prop_dyTextBottom,
+ ESCHER_Prop_dxTextLeft, ESCHER_Prop_dxTextRight
+ };
+ const SvxBorderLine* pLine;
+
+ for( int n = 0; n < 4; ++n )
+ if( 0 != ( pLine = ((SvxBoxItem*)pItem)->GetLine( n )) )
+ {
+ if( bFirstLine )
+ {
+ UINT32 nLineColor = GetColor( pLine->GetColor(), FALSE );
+ AddOpt( ESCHER_Prop_lineColor, nLineColor );
+ AddOpt( ESCHER_Prop_lineBackColor, nLineColor ^ 0xffffff );
+
+ UINT32 nLineWidth;
+ ESCHER_LineStyle eStyle;
+ if( pLine->GetInWidth() )
+ {
+ // double line
+ nLineWidth = pLine->GetInWidth() +
+ pLine->GetOutWidth() +
+ pLine->GetDistance();
+ if( pLine->GetInWidth() == pLine->GetOutWidth() )
+ eStyle = ESCHER_LineDouble;
+ else if( pLine->GetInWidth() < pLine->GetOutWidth() )
+ eStyle = ESCHER_LineThickThin;
+ else
+ eStyle = ESCHER_LineThinThick;
+ }
+ else
+ {
+ // simple line
+ eStyle = ESCHER_LineSimple;
+ nLineWidth = pLine->GetOutWidth();
+ }
+
+ AddOpt( ESCHER_Prop_lineStyle, eStyle );
+ AddOpt( ESCHER_Prop_lineWidth, DrawModelToEmu( nLineWidth ));
+
+ bFirstLine = FALSE;
+ }
+
+ AddOpt( aExhperProp[ n ], DrawModelToEmu(
+ ((SvxBoxItem*)pItem)->GetDistance( n ) ));
+ }
+ }
+ if( bFirstLine ) // no valid line found
+ {
+ AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x80000 );
+ AddOpt( ESCHER_Prop_dyTextTop, 0 );
+ AddOpt( ESCHER_Prop_dyTextBottom, 0 );
+ AddOpt( ESCHER_Prop_dxTextLeft, 0 );
+ AddOpt( ESCHER_Prop_dxTextRight, 0 );
+ }
+
+ // write shadow
+/*
+ WinWord dont know any shadow at textboxes
+ if( SFX_ITEM_SET == rFmt.GetItemState( RES_SHADOW, TRUE, &pItem ) )
+ {
+ mpEscherEx->AddOpt( ESCHER_Prop_fshadowObscured, 0x20002 );
+ if( rObj.ImplGetPropertyValue( C2U("ShadowColor") ) )
+ mpEscherEx->AddOpt( ESCHER_Prop_shadowColor,
+ mpEscherEx->GetColor(
+ *((UINT32*)rObj.GetUsrAny().get()) ) );
+
+
+ if ( rObj.ImplGetPropertyValue( C2U("Shadow") ) )
+ {
+ if ( rObj.GetUsrAny().getBOOL() )
+ {
+ if( rObj.ImplGetPropertyValue( C2U("ShadowXDistance") ) )
+ mpEscherEx->AddOpt( ESCHER_Prop_shadowOffsetX,
+ *((INT32*)rObj.GetUsrAny().get()) * 360 );
+ if( rObj.ImplGetPropertyValue( C2U("ShadowYDistance") ) )
+ mpEscherEx->AddOpt( ESCHER_Prop_shadowOffsetY,
+ *((INT32*)rObj.GetUsrAny().get()) * 360 );
+ if( rObj.ImplGetPropertyValue( C2U("ShadowTransparence") ) )
+ mpEscherEx->AddOpt( ESCHER_Prop_shadowOpacity,
+ ( ( 100 - (*((UINT16*)rObj.GetUsrAny().get()) )
+ << 16 ) / 100 ) );
+ }
+ }
+ }
+*/
+
+ if( SFX_ITEM_SET == rFmt.GetItemState( RES_BACKGROUND, TRUE, &pItem ) )
+ {
+ if( /* ((SvxBrushItem*)pItem)->GetGraphicLink() || */
+ ((SvxBrushItem*)pItem)->GetGraphic() )
+ {
+/* if( ((SvxBrushItem*)pItem)->GetGraphicLink() )
+ {
+ AddOpt( ESCHER_Prop_fillBlipName, TRUE,
+ // wie jetzt ??
+ AddOpt( UINT16 nPropertyID, BOOL bBlib, UINT32 nPropValue,
+ BYTE* pProp, UINT32 nPropSize );
+ }
+ else
+*/
+ {
+ AddOpt( ESCHER_Prop_fillBlip, AddGraphic( *QueryPicStream(),
+ *((SvxBrushItem*)pItem)->GetGraphic() ),
+ TRUE );
+ }
+ AddOpt( ESCHER_Prop_fillType, ESCHER_FillPicture );
+ AddOpt( ESCHER_Prop_fNoFillHitTest, 0x140014 );
+ AddOpt( ESCHER_Prop_fillBackColor, 0 );
+ }
+ else if( !((SvxBrushItem*)pItem)->GetColor().GetTransparency() )
+ {
+ UINT32 nFillColor = GetColor( ((SvxBrushItem*)pItem)->
+ GetColor(), FALSE );
+ AddOpt( ESCHER_Prop_fillColor, nFillColor );
+ AddOpt( ESCHER_Prop_fillBackColor, nFillColor ^ 0xffffff );
+ AddOpt( ESCHER_Prop_fNoFillHitTest, 0x100010 );
+ }
+ else
+ {
+ AddOpt( ESCHER_Prop_fNoFillHitTest, 0x100000 );
+ }
+ }
+
+ if( SFX_ITEM_SET == rFmt.GetItemState( RES_LR_SPACE, TRUE, &pItem ))
+ {
+ AddOpt( ESCHER_Prop_dxWrapDistLeft,
+ DrawModelToEmu( ((SvxLRSpaceItem*)pItem)->GetLeft() ) );
+ AddOpt( ESCHER_Prop_dxWrapDistRight,
+ DrawModelToEmu( ((SvxLRSpaceItem*)pItem)->GetRight() ) );
+ }
+ if( SFX_ITEM_SET == rFmt.GetItemState( RES_UL_SPACE, TRUE, &pItem ))
+ {
+ AddOpt( ESCHER_Prop_dyWrapDistTop,
+ DrawModelToEmu( ((SvxULSpaceItem*)pItem)->GetUpper() ) );
+ AddOpt( ESCHER_Prop_dyWrapDistBottom,
+ DrawModelToEmu( ((SvxULSpaceItem*)pItem)->GetLower() ) );
+ }
+
+ const SdrObject* pObj = rFmt.FindRealSdrObject();
+ if( pObj && pObj->GetLayer() == GetHellLayerId() )
+ AddOpt( ESCHER_Prop_fPrint, 0x200020 );
+}
+
+void SwEscherEx::MakeZOrderArrAndFollowIds( const SvPtrarr& rSrcArr )
+{
+ if( aSortFmts.Count() )
+ aSortFmts.Remove( 0, aSortFmts.Count() );
+
+ USHORT n, nPos, nCnt = rSrcArr.Count();
+ SvULongsSort aSort( 255 < nCnt ? 255 : nCnt, 255 );
+ for( n = 0; n < nCnt; ++n )
+ {
+ void* p = rSrcArr[ n ];
+ ULONG nOrdNum = rWrt.GetSdrOrdNum( *(SwFrmFmt*)p );
+ aSort.Insert( nOrdNum, nPos );
+ aSortFmts.Insert( p, nPos );
+ }
+
+ if( aFollowShpIds.Count() )
+ aFollowShpIds.Remove( 0, aFollowShpIds.Count() );
+
+ ULONG nShapeId;
+ const SwFmtChain* pChain;
+ for( n = 0; n < nCnt; ++n )
+ {
+ const SwFrmFmt* pFmt = (SwFrmFmt*)aSortFmts[ n ];
+
+ if( RES_FLYFRMFMT == pFmt->Which() &&
+ ( ( pChain = &pFmt->GetChain())->GetPrev() ||
+ pChain->GetNext() ) )
+ {
+ // the format needs a shapeid
+ nShapeId = GetShapeID();
+ }
+ else
+ nShapeId = 0;
+ aFollowShpIds.Insert( nShapeId, n );
+ }
+}
+
+
+UINT32 SwEscherEx::GetFlyShapeId( const SwFrmFmt& rFmt )
+{
+ const VoidPtr pFmt = (void*)&rFmt;
+ USHORT nPos = aSortFmts.GetPos( pFmt );
+ UINT32 nShapeId;
+ if( USHRT_MAX != nPos )
+ {
+ if( 0 == ( nShapeId = aFollowShpIds[ nPos ] ))
+ {
+ nShapeId = GetShapeID();
+ aFollowShpIds[ nPos ] = nShapeId;
+ }
+ }
+ else
+ nShapeId = GetShapeID();
+ return nShapeId;
+}
+
+UINT32 SwEscherEx::QueryTextID( const uno::Reference< drawing::XShape>& xXShapeRef, UINT32 nShapeId )
+{
+ UINT32 nId = 0;
+ uno::Reference< lang::XUnoTunnel > xTunnel(xXShapeRef, uno::UNO_QUERY);
+ SvxShape* pSvxShape = xTunnel.is() ?
+ (SvxShape*)xTunnel->getSomething(SvxShape::getUnoTunnelId()) : 0;
+ if( pSvxShape )
+ {
+ SdrObject* pObj = pSvxShape->GetSdrObject();
+ if( pObj )
+ {
+ pTxtBxs->Append( *pObj, nShapeId );
+ nId = pTxtBxs->Count();
+ nId *= 0x10000;
+ }
+ }
+ return nId;
+}
+
+SvStream* SwEscherEx::QueryPicStream()
+{
+ if( !pPictStrm )
+ {
+ pPictStrm = rWrt.GetStorage().OpenStream( sEscherPictStream,
+ STREAM_READWRITE | STREAM_SHARE_DENYALL );
+ pPictStrm->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ }
+ return pPictStrm;
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/wrtw8esh.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.23 2000/09/18 16:04:57 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.22 2000/08/25 12:27:31 jp
+ Graphic Crop-Attribut exported to SVX
+
+ Revision 1.21 2000/07/17 20:28:23 jp
+ WriteGrfFlyFrame: alloc buffer for the linked graphics
+
+ Revision 1.20 2000/05/16 17:39:17 jp
+ Changes for Unicode
+
+ Revision 1.19 2000/05/12 16:13:51 jp
+ Changes for Unicode
+
+ Revision 1.18 2000/04/11 17:35:37 jp
+ Bug #74724#: CTOR SwEscherEx - call the end outproc for the SdrPage
+
+ Revision 1.17 2000/03/24 13:55:29 jp
+ Bug #74452#: after writing the escher delete the escher object
+
+ Revision 1.16 2000/03/21 15:04:57 os
+ UNOIII
+
+ Revision 1.15 2000/03/03 15:20:01 os
+ StarView remainders removed
+
+ Revision 1.14 2000/02/23 18:40:03 jp
+ Task #73176#: AddWmf will have EMU values
+
+ Revision 1.13 2000/02/11 14:39:51 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.12 1999/11/24 14:55:55 hr
+ #65293#: added header
+
+ Revision 1.11 1999/10/14 21:05:57 jp
+ Bug #68617#,#68705# and other little things
+
+ Revision 1.10 1999/10/13 09:08:41 jp
+ write character attributs of SdrObjects
+
+ Revision 1.9 1999/10/11 10:57:30 jp
+ some bugfixes #68745#/#69033#/#68681#
+
+ Revision 1.8 1999/09/10 16:27:59 jp
+ write FlyFrms too if no SdrObject exist
+
+ Revision 1.7 1999/09/08 16:29:18 jp
+ Bug #68618#: recognize the write of escher stream
+
+ Revision 1.6 1999/09/01 17:32:38 JP
+ new: write the text of SdrTextObjects
+
+
+ Rev 1.5 01 Sep 1999 19:32:38 JP
+ new: write the text of SdrTextObjects
+
+ Rev 1.4 31 Aug 1999 09:51:36 JP
+ set NumberFormatInt at streams to littleendian
+
+ Rev 1.3 24 Aug 1999 20:15:48 JP
+ Escher Export
+
+ Rev 1.2 16 Aug 1999 17:16:30 JP
+ W97 Export: experimental escher export (1)
+
+ Rev 1.1 16 Aug 1999 13:05:42 JP
+ write EscherObjects - only a testversion!
+
+ Rev 1.0 21 Jul 1999 18:28:56 JP
+ W97 Export: experimental escher export
+
+*************************************************************************/
+
diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx
new file mode 100644
index 000000000000..3834d9192d27
--- /dev/null
+++ b/sw/source/filter/ww8/wrtw8nds.cxx
@@ -0,0 +1,2002 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtw8nds.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _URLOBJ_HXX //autogen wg. INetURLObject
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen wg. SvxFontItem
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen wg. SvxULSpaceItem
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTFLCNT_HXX //autogen
+#include <fmtflcnt.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FRMATR_HXX //autogen
+#include <frmatr.hxx>
+#endif
+#ifndef _PARATR_HXX //autogen
+#include <paratr.hxx>
+#endif
+#ifndef _TXATBASE_HXX //autogen
+#include <txatbase.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen wg. SwFmtINetFmt
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _FMTRFMRK_HXX //autogen wg. SwFmtRefMark
+#include <fmtrfmrk.hxx>
+#endif
+#ifndef _FCHRFMT_HXX //autogen wg. SwFmtCharFmt
+#include <fchrfmt.hxx>
+#endif
+#ifndef _CHARFMT_HXX //autogen wg. SwCharFmt
+#include <charfmt.hxx>
+#endif
+#ifndef _TOX_HXX //autogen wg. SwTOXMark
+#include <tox.hxx>
+#endif
+#ifndef _NDTXT_HXX //autogen
+#include <ndtxt.hxx>
+#endif
+#ifndef _PAM_HXX //autogen
+#include <pam.hxx>
+#endif
+#ifndef _DOC_HXX //autogen
+#include <doc.hxx>
+#endif
+#ifndef _DOCARY_HXX //autogen
+#include <docary.hxx>
+#endif
+#ifndef _SWTABLE_HXX //autogen
+#include <swtable.hxx>
+#endif
+#ifndef _SECTION_HXX //autogen
+#include <section.hxx>
+#endif
+#ifndef _PAGEDESC_HXX //autogen
+#include <pagedesc.hxx>
+#endif
+#ifndef _SWRECT_HXX //autogen
+#include <swrect.hxx>
+#endif
+#ifndef _WRTWW8_HXX
+#include <wrtww8.hxx>
+#endif
+#ifndef _FLYPOS_HXX
+#include <flypos.hxx> // SwPosFlyFrms
+#endif
+#ifndef _REFFLD_HXX //autogen wg. SwGetRefField
+#include <reffld.hxx>
+#endif
+#ifndef _REDLINE_HXX
+#include <redline.hxx>
+#endif
+#ifndef _WRTSWTBL_HXX
+#include <wrtswtbl.hxx>
+#endif
+#ifndef _HTMLTBL_HXX
+#include <htmltbl.hxx>
+#endif
+#ifndef _TXTTXMRK_HXX
+#include <txttxmrk.hxx>
+#endif
+#ifndef SW_FMTLINE_HXX
+#include <fmtline.hxx>
+#endif
+
+/* */
+
+WW8_AttrIter::WW8_AttrIter( SwWW8Writer& rWr )
+ : rWrt( rWr ), pOld( rWr.pChpIter )
+{
+ rWrt.pChpIter = this;
+}
+
+WW8_AttrIter::~WW8_AttrIter()
+{
+ rWrt.pChpIter = pOld;
+}
+
+void WW8_AttrIter::GetItems( WW8Bytes& rItems ) const
+{
+}
+
+
+/* */
+
+// Die Klasse WW8_SwAttrIter ist eine Hilfe zum Aufbauen der Fkp.chpx.
+// Dabei werden nur Zeichen-Attribute beachtet; Absatz-Attribute brauchen
+// diese Behandlung nicht.
+// Die Absatz- und Textattribute des Writers kommen rein, und es wird
+// mit Where() die naechste Position geliefert, an der sich die Attribute
+// aendern. IsTxtAtr() sagt, ob sich an der mit Where() gelieferten Position
+// ein Attribut ohne Ende und mit \xff im Text befindet.
+// Mit OutAttr() werden die Attribute an der angegebenen SwPos
+// ausgegeben.
+class WW8_SwAttrIter : public WW8_AttrIter
+{
+ const SwTxtNode& rNd;
+ SvPtrarr aTxtAtrArr;
+ SvUShorts aChrSetArr;
+ const SwRedline* pCurRedline;
+ xub_StrLen nAktSwPos;
+ xub_StrLen nTmpSwPos; // fuer HasItem()
+ USHORT nCurRedlinePos;
+ rtl_TextEncoding eNdChrSet;
+
+ xub_StrLen SearchNext( xub_StrLen nStartPos );
+ void SetCharSet( const SwTxtAttr& rTxtAttr, BOOL bStart );
+ void FieldVanish( const String& rTxt );
+
+ void OutSwFmtINetFmt( const SwFmtINetFmt& rAttr, BOOL bStart );
+ void OutSwFmtRefMark( const SwFmtRefMark& rAttr, BOOL bStart );
+ void OutSwTOXMark( const SwTOXMark& rAttr, BOOL bStart );
+
+public:
+ WW8_SwAttrIter( SwWW8Writer& rWr, const SwTxtNode& rNd );
+
+ BOOL IsTxtAttr( xub_StrLen nSwPos );
+ BOOL IsRedlineAtEnd( xub_StrLen nPos ) const;
+
+ void NextPos() { nAktSwPos = SearchNext( nAktSwPos + 1 ); }
+
+ void OutAttr( xub_StrLen nSwPos );
+ virtual const SfxPoolItem* HasTextItem( USHORT nWhich ) const;
+ virtual const SfxPoolItem& GetItem( USHORT nWhich ) const;
+ virtual void GetItems( WW8Bytes& rItems ) const;
+ BOOL OutAttrWithRange( xub_StrLen nPos );
+ void OutRedlines( xub_StrLen nPos );
+
+ xub_StrLen WhereNext() const { return nAktSwPos; }
+ rtl_TextEncoding GetNextCharSet() const;
+ rtl_TextEncoding GetNodeCharSet() const { return eNdChrSet; }
+};
+
+
+WW8_SwAttrIter::WW8_SwAttrIter( SwWW8Writer& rWr, const SwTxtNode& rTxtNd )
+ : WW8_AttrIter( rWr ), rNd( rTxtNd ), nAktSwPos( 0 ), nTmpSwPos( 0 ),
+ aTxtAtrArr( 0, 4 ), aChrSetArr( 0, 4 ), nCurRedlinePos( USHRT_MAX ),
+ pCurRedline( 0 )
+{
+ // Attributwechsel an Pos 0 wird ignoriert, da davon ausgegangen
+ // wird, dass am Absatzanfang sowieso die Attribute neu ausgegeben
+ // werden.
+ eNdChrSet = ((SvxFontItem&)rNd.SwCntntNode::GetAttr(
+ RES_CHRATR_FONT )).GetCharSet();
+ if( rWrt.pDoc->GetRedlineTbl().Count() )
+ {
+ SwPosition aPos( rNd, SwIndex( (SwTxtNode*)&rNd ) );
+ pCurRedline = rWrt.pDoc->GetRedline( aPos, &nCurRedlinePos );
+ }
+ nAktSwPos = SearchNext( 1 );
+}
+
+rtl_TextEncoding WW8_SwAttrIter::GetNextCharSet() const
+{
+ if( aChrSetArr.Count() )
+ return (rtl_TextEncoding)aChrSetArr[ aChrSetArr.Count() - 1 ];
+ return eNdChrSet;
+}
+
+xub_StrLen WW8_SwAttrIter::SearchNext( xub_StrLen nStartPos )
+{
+ register xub_StrLen nPos;
+ register xub_StrLen nMinPos = STRING_MAXLEN;
+ register xub_StrLen i;
+
+ // first the redline, then the attributes
+ if( pCurRedline )
+ {
+ const SwPosition* pEnd = pCurRedline->End();
+ if( pEnd->nNode == rNd &&
+ ( i = pEnd->nContent.GetIndex() ) >= nStartPos )
+ nMinPos = i;
+ }
+
+ if( nCurRedlinePos < rWrt.pDoc->GetRedlineTbl().Count() )
+ {
+ // nCurRedlinePos point to the next redline
+ nPos = nCurRedlinePos;
+ if( pCurRedline )
+ ++nPos;
+
+ for( ; nPos < rWrt.pDoc->GetRedlineTbl().Count(); ++nPos )
+ {
+ const SwRedline* pRedl = rWrt.pDoc->GetRedlineTbl()[ nPos ];
+
+ const SwPosition* pStt = pRedl->Start();
+ const SwPosition* pEnd = pStt == pRedl->GetPoint()
+ ? pRedl->GetMark()
+ : pRedl->GetPoint();
+
+ if( pStt->nNode == rNd )
+ {
+ if( ( i = pStt->nContent.GetIndex() ) >= nStartPos &&
+ i < nMinPos )
+ nMinPos = i;
+ }
+ else
+ break;
+
+ if( pEnd->nNode == rNd &&
+ ( i = pEnd->nContent.GetIndex() ) < nMinPos &&
+ i >= nStartPos )
+ nMinPos = i;
+ }
+ }
+
+ const SwpHints* pTxtAttrs = rNd.GetpSwpHints();
+ if( pTxtAttrs )
+ {
+
+// kann noch optimiert werden, wenn ausgenutzt wird, dass die TxtAttrs
+// nach der Anfangsposition geordnet sind. Dann muessten
+// allerdings noch 2 Indices gemerkt werden
+ for( i = 0; i < pTxtAttrs->Count(); i++ )
+ {
+ const SwTxtAttr* pHt = (*pTxtAttrs)[i];
+ nPos = *pHt->GetStart(); // gibt erstes Attr-Zeichen
+ if( nPos >= nStartPos && nPos <= nMinPos )
+ {
+ nMinPos = nPos;
+ SetCharSet( *pHt, TRUE );
+ }
+
+ if( pHt->GetEnd() ) // Attr mit Ende
+ {
+ nPos = *pHt->GetEnd(); // gibt letztes Attr-Zeichen + 1
+ if( nPos >= nStartPos && nPos <= nMinPos )
+ {
+ nMinPos = nPos;
+ SetCharSet( *pHt, FALSE );
+ }
+ }
+ else
+ { // Attr ohne Ende
+ nPos = *pHt->GetStart() + 1; // Laenge 1 wegen CH_TXTATR im Text
+ if( nPos >= nStartPos && nPos <= nMinPos )
+ {
+ nMinPos = nPos;
+ SetCharSet( *pHt, FALSE );
+ }
+ }
+ }
+ }
+ return nMinPos;
+}
+
+void WW8_SwAttrIter::SetCharSet( const SwTxtAttr& rAttr, BOOL bStart )
+{
+ void* p = 0;
+ rtl_TextEncoding eChrSet;
+ const SfxPoolItem& rItem = rAttr.GetAttr();
+ switch( rItem.Which() )
+ {
+ case RES_CHRATR_FONT:
+ p = (void*)&rAttr;
+ eChrSet = ((SvxFontItem&)rItem).GetCharSet();
+ break;
+
+ case RES_TXTATR_CHARFMT:
+ {
+ const SfxPoolItem* pItem;
+ if( ((SwFmtCharFmt&)rItem).GetCharFmt() && SFX_ITEM_SET ==
+ ((SwFmtCharFmt&)rItem).GetCharFmt()->GetItemState(
+ RES_CHRATR_FONT, TRUE, &pItem ))
+ {
+ eChrSet = ((SvxFontItem*)pItem)->GetCharSet();
+ p = (void*)&rAttr;
+ }
+ }
+ break;
+
+// case RES_TXTATR_INETFMT:
+// break;
+ }
+
+ if( p )
+ {
+ USHORT nPos;
+ if( bStart )
+ {
+ nPos = aChrSetArr.Count();
+ aChrSetArr.Insert( eChrSet, nPos );
+ aTxtAtrArr.Insert( p, nPos );
+ }
+ else if( USHRT_MAX != ( nPos = aTxtAtrArr.GetPos( p )) )
+ {
+ aTxtAtrArr.Remove( nPos );
+ aChrSetArr.Remove( nPos );
+ }
+ }
+}
+
+void WW8_SwAttrIter::OutAttr( xub_StrLen nSwPos )
+{
+ if( rNd.GetpSwAttrSet() )
+ rWrt.Out_SfxItemSet( *rNd.GetpSwAttrSet(), FALSE, TRUE );
+
+ const SwpHints* pTxtAttrs = rNd.GetpSwpHints();
+ if( pTxtAttrs )
+ {
+ const SwModify* pOldMod = rWrt.pOutFmtNode;
+ rWrt.pOutFmtNode = &rNd;
+
+ nTmpSwPos = nSwPos;
+ register xub_StrLen i;
+ for( i = 0; i < pTxtAttrs->Count(); i++ )
+ {
+ const SwTxtAttr* pHt = (*pTxtAttrs)[i];
+ const xub_StrLen* pEnd = pHt->GetEnd();
+
+ if( pEnd ? ( nSwPos >= *pHt->GetStart() && nSwPos < *pEnd )
+ : nSwPos == *pHt->GetStart() )
+ Out( aWW8AttrFnTab, pHt->GetAttr(), rWrt );
+ else if( nSwPos < *pHt->GetStart() )
+ break;
+ }
+
+ nTmpSwPos = 0; // HasTextItem nur in dem obigen Bereich erlaubt
+ rWrt.pOutFmtNode = pOldMod;
+ }
+
+ OutRedlines( nSwPos );
+}
+
+BOOL WW8_SwAttrIter::IsTxtAttr( xub_StrLen nSwPos )
+{
+ // search for attrs without end position
+ const SwpHints* pTxtAttrs = rNd.GetpSwpHints();
+ if( pTxtAttrs )
+ {
+ register USHORT i;
+ for( i = 0; i < pTxtAttrs->Count(); i++ )
+ {
+ const SwTxtAttr* pHt = (*pTxtAttrs)[i];
+ if( !pHt->GetEnd() && *pHt->GetStart() == nSwPos )
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+// HasItem ist fuer die Zusammenfassung des Doppel-Attributes Underline
+// und WordLineMode als TextItems. OutAttr() ruft die Ausgabefunktion,
+// die dann ueber HasItem() nach anderen Items an der
+// Attribut-Anfangposition fragen kann.
+// Es koennen nur Attribute mit Ende abgefragt werden.
+// Es wird mit bDeep gesucht
+const SfxPoolItem* WW8_SwAttrIter::HasTextItem( USHORT nWhich ) const
+{
+ const SfxPoolItem* pRet = 0;
+ const SwpHints* pTxtAttrs = rNd.GetpSwpHints();
+ if( !nTmpSwPos && !pTxtAttrs )
+ {
+ ASSERT( !this, "HasTextItem nicht aus OutAttr gerufen !" );
+ }
+ else if( pTxtAttrs )
+ {
+ register USHORT i;
+ for( i = 0; i < pTxtAttrs->Count(); ++i )
+ {
+ const SwTxtAttr* pHt = (*pTxtAttrs)[i];
+ const SfxPoolItem* pItem = &pHt->GetAttr();
+ const xub_StrLen* pAtrEnd = 0;
+ if( 0 != ( pAtrEnd = pHt->GetEnd() ) && // nur Attr mit Ende
+ nWhich == pItem->Which() && //
+ nTmpSwPos >= *pHt->GetStart() && nTmpSwPos < *pAtrEnd )
+ {
+ pRet = pItem; // gefunden
+ break;
+ }
+ else if( nTmpSwPos < *pHt->GetStart() )
+ break; // dann kommt da nichts mehr
+ }
+ }
+ return pRet;
+}
+
+void WW8_SwAttrIter::GetItems( WW8Bytes& rItems ) const
+{
+ WW8Bytes* pO_Sav = rWrt.pO;
+ rWrt.pO = &rItems;
+
+ if( rNd.GetpSwAttrSet() )
+ rWrt.Out_SfxItemSet( *rNd.GetpSwAttrSet(), FALSE, TRUE );
+
+ const SwpHints* pTxtAttrs = rNd.GetpSwpHints();
+ if( pTxtAttrs )
+ {
+ const SwModify* pOldMod = rWrt.pOutFmtNode;
+ rWrt.pOutFmtNode = &rNd;
+
+ register USHORT i;
+ for( i = 0; i < pTxtAttrs->Count(); i++ )
+ {
+ const SwTxtAttr* pHt = (*pTxtAttrs)[i];
+ const xub_StrLen* pEnd = pHt->GetEnd();
+
+ if( pEnd && nTmpSwPos >= *pHt->GetStart() && nTmpSwPos < *pEnd )
+ Out( aWW8AttrFnTab, pHt->GetAttr(), rWrt );
+ else if( nTmpSwPos < *pHt->GetStart() )
+ break;
+ }
+
+ rWrt.pOutFmtNode = pOldMod;
+ }
+
+// OutRedlines( nTmpSwPos );
+ rWrt.pO = pO_Sav;
+}
+
+const SfxPoolItem& WW8_SwAttrIter::GetItem( USHORT nWhich ) const
+{
+ const SfxPoolItem* pRet = HasTextItem( nWhich );
+ if( !pRet )
+ pRet = &rNd.SwCntntNode::GetAttr( nWhich );
+ return *pRet;
+}
+
+void WW8_SwAttrIter::OutSwFmtINetFmt( const SwFmtINetFmt& rINet, BOOL bStart )
+{
+ if( bStart )
+ {
+ INetURLObject aURL( rINet.GetValue() );
+ String sURL( aURL.GetURLNoMark(INetURLObject::DECODE_WITH_CHARSET) );
+ String sMark( aURL.GetMark(INetURLObject::DECODE_WITH_CHARSET) );
+
+ sURL = INetURLObject::AbsToRel( sURL, INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET );
+ sURL.Insert( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "HYPERLINK \"" )), 0 );
+ sURL += '\"';
+
+ if( sMark.Len() )
+ (( sURL.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " \\l \"" )))
+ += sMark ) += '\"';
+
+ if( rINet.GetTargetFrame().Len() )
+ ( sURL.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " \\n " )))
+ += rINet.GetTargetFrame();
+
+ rWrt.OutField( 0, 88, sURL,
+ WRITEFIELD_START | WRITEFIELD_CMD_START );
+
+ // write the refence to the "picture" structure
+ ULONG nDataStt = rWrt.pDataStrm->Tell();
+ rWrt.pChpPlc->AppendFkpEntry( rWrt.Strm().Tell() );
+
+//I'm leaving this as a define for now for easy removal of this code
+//C.
+#define WRITE_HYPERLINK_IN_DATA_STREAM
+
+#ifdef WRITE_HYPERLINK_IN_DATA_STREAM
+//WinWord 2000 doesn't write this - so its a temp solution by W97
+ rWrt.WriteChar( 0x01 );
+
+ static BYTE aArr1[] = {
+ 0x03, 0x6a, 0,0,0,0, // sprmCPicLocation
+
+ 0x06, 0x08, 0x01, // sprmCFData
+ 0x55, 0x08, 0x01, // sprmCFSpec
+ 0x02, 0x08, 0x01 // sprmCFFldVanish
+ };
+ BYTE* pDataAdr = aArr1 + 2;
+ Set_UInt32( pDataAdr, nDataStt );
+
+ rWrt.pChpPlc->AppendFkpEntry( rWrt.Strm().Tell(),
+ sizeof( aArr1 ), aArr1 );
+#endif
+
+ rWrt.OutField( 0, 88, sURL, WRITEFIELD_CMD_END );
+
+
+#ifdef WRITE_HYPERLINK_IN_DATA_STREAM
+ // now write the picture structur
+ sURL = aURL.GetURLNoMark();
+
+ BOOL bAbsolute = TRUE; //all links end up in the data stream as
+ //absolute references.
+ INetProtocol aProto = aURL.GetProtocol();
+
+ static BYTE __READONLY_DATA aURLData1[] = {
+ 0,0,0,0, // len of struct
+ 0x44,0, // the start of "next" data
+ 0,0,0,0,0,0,0,0,0,0, // PIC-Structure!
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // |
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // |
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // |
+ 0,0,0,0, // /
+ };
+ static BYTE __READONLY_DATA MAGIC_A[] = {
+ // start of "next" data
+ 0xD0,0xC9,0xEA,0x79,0xF9,0xBA,0xCE,0x11,
+ 0x8C,0x82,0x00,0xAA,0x00,0x4B,0xA9,0x0B
+ };
+
+ rWrt.pDataStrm->Write( aURLData1, sizeof(aURLData1) );
+ BYTE nAnchor=0x00;
+ if( sMark.Len() )
+ nAnchor=0x08;
+ rWrt.pDataStrm->Write( &nAnchor, 1 );
+ rWrt.pDataStrm->Write( MAGIC_A, sizeof(MAGIC_A) );
+ SwWW8Writer::WriteLong( *rWrt.pDataStrm, 0x00000002);
+ UINT32 nFlag=0x01;
+ if (bAbsolute) nFlag |= 0x02;
+ if( sMark.Len() ) nFlag |= 0x08;
+ SwWW8Writer::WriteLong( *rWrt.pDataStrm, nFlag );
+
+ if (aProto == INET_PROT_FILE)
+ {
+// version 1 (for a document)
+
+ static BYTE __READONLY_DATA MAGIC_C[] = {
+ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
+ 0x00, 0x00
+ };
+
+ static BYTE __READONLY_DATA MAGIC_D[] = {
+ 0xFF, 0xFF, 0xAD, 0xDE, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ sURL = aURL.PathToFileName();
+
+ rWrt.pDataStrm->Write( MAGIC_C, sizeof(MAGIC_C) );
+ SwWW8Writer::WriteLong( *rWrt.pDataStrm, sURL.Len()+1 );
+ SwWW8Writer::WriteString8( *rWrt.pDataStrm, sURL, TRUE,
+ RTL_TEXTENCODING_MS_1252 );
+ rWrt.pDataStrm->Write( MAGIC_D, sizeof( MAGIC_D) );
+
+ SwWW8Writer::WriteLong( *rWrt.pDataStrm, 2*sURL.Len()+6);
+ SwWW8Writer::WriteLong( *rWrt.pDataStrm, 2*sURL.Len());
+ SwWW8Writer::WriteShort( *rWrt.pDataStrm, 3 );
+ SwWW8Writer::WriteString16( *rWrt.pDataStrm, sURL, FALSE );
+ }
+ else
+ {
+ // version 2 (simple url)
+ // an write some data to the data stream, but dont ask
+ // what the data mean, except for the URL.
+ // The First piece is the WW8_PIC structure.
+ //
+ static BYTE __READONLY_DATA MAGIC_B[] = {
+ 0xE0,0xC9,0xEA,0x79,0xF9,0xBA,0xCE,0x11,
+ 0x8C,0x82,0x00,0xAA,0x00,0x4B,0xA9,0x0B
+ };
+
+ rWrt.pDataStrm->Write( MAGIC_B, sizeof(MAGIC_B) );
+ SwWW8Writer::WriteLong( *rWrt.pDataStrm, 2 * (sURL.Len()+1) );
+ SwWW8Writer::WriteString16( *rWrt.pDataStrm, sURL, TRUE );
+ }
+
+ if( sMark.Len() )
+ {
+ SwWW8Writer::WriteLong( *rWrt.pDataStrm, sMark.Len()+1 );
+ SwWW8Writer::WriteString16( *rWrt.pDataStrm, sMark, TRUE );
+ }
+ SwWW8Writer::WriteLong( *rWrt.pDataStrm, nDataStt,
+ rWrt.pDataStrm->Tell() - nDataStt );
+#endif
+
+ }
+ else
+ rWrt.OutField( 0, 0, aEmptyStr, WRITEFIELD_CLOSE );
+}
+
+
+void WW8_SwAttrIter::OutSwFmtRefMark( const SwFmtRefMark& rAttr, BOOL bStart )
+{
+ if( rWrt.HasRefToObject( REF_SETREFATTR, &rAttr.GetRefName(), 0 ))
+ rWrt.AppendBookmark( rWrt.GetBookmarkName( REF_SETREFATTR,
+ &rAttr.GetRefName(), 0 ));
+}
+
+void WW8_SwAttrIter::FieldVanish( const String& rTxt )
+{
+ WW8Bytes aItems;
+ rWrt.pChpIter->GetItems( aItems );
+ USHORT nStt_TxtAtt = aItems.Count();
+
+ // sprmCFFldVanish
+ if( rWrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( aItems, 0x802 );
+ else
+ aItems.Insert( 67, aItems.Count() );
+ aItems.Insert( 1, aItems.Count() );
+
+ USHORT nStt_sprmCFSpec = aItems.Count();
+
+ // sprmCFSpec -- fSpec-Attribut TRUE
+ if( rWrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( aItems, 0x855 );
+ else
+ aItems.Insert( 117, aItems.Count() );
+ aItems.Insert( 1, aItems.Count() );
+
+
+// rWrt.pChpPlc->AppendFkpEntry( rWrt.Strm().Tell(), nStt_TxtAtt,
+// aItems.GetData() );
+ rWrt.WriteChar( '\x13' );
+ rWrt.pChpPlc->AppendFkpEntry( rWrt.Strm().Tell(), aItems.Count(),
+ aItems.GetData() );
+ rWrt.OutSwString( rTxt, 0, rTxt.Len(), rWrt.IsUnicode(),
+ RTL_TEXTENCODING_MS_1252 );
+ rWrt.pChpPlc->AppendFkpEntry( rWrt.Strm().Tell(), nStt_sprmCFSpec,
+ aItems.GetData() );
+ rWrt.WriteChar( '\x15' );
+ rWrt.pChpPlc->AppendFkpEntry( rWrt.Strm().Tell(), aItems.Count(),
+ aItems.GetData() );
+}
+
+void WW8_SwAttrIter::OutSwTOXMark( const SwTOXMark& rAttr, BOOL bStart )
+{
+ // its a field; so get the Text form the Node and build the field
+ ASSERT( !bStart, "calls only with the endposition!" );
+ String sTxt;
+
+ const SwTxtTOXMark& rTxtTOXMark = *rAttr.GetTxtTOXMark();
+ const xub_StrLen* pTxtEnd = rTxtTOXMark.GetEnd();
+ if( pTxtEnd ) // has range?
+ sTxt = rNd.GetExpandTxt( *rTxtTOXMark.GetStart(),
+ *pTxtEnd - *rTxtTOXMark.GetStart() );
+ else
+ sTxt = rAttr.GetAlternativeText();
+
+ switch( rAttr.GetTOXType()->GetType() )
+ {
+ case TOX_INDEX:
+ if( rAttr.GetPrimaryKey().Len() )
+ {
+ sTxt.Insert( ':', 0 );
+ sTxt.Insert( rAttr.GetPrimaryKey(), 0 );
+ }
+ sTxt.InsertAscii( " XE \"", 0 );
+ sTxt.InsertAscii( "\" " );
+ break;
+
+ case TOX_USER:
+ ( sTxt.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "\" \\f \"" )))
+ += (sal_Char)( 'A' + rWrt.GetId( *rAttr.GetTOXType() ));
+ // kein break;
+ case TOX_CONTENT:
+ {
+ sTxt.InsertAscii( " INHALT \"", 0 );
+ USHORT nLvl = rAttr.GetLevel();
+ if( nLvl > nWW8MaxListLevel )
+ nLvl = nWW8MaxListLevel;
+
+ ((sTxt.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "\" \\l " )))
+ += String::CreateFromInt32( nLvl )) += ' ';
+ }
+ break;
+ }
+
+ if( sTxt.Len() )
+ FieldVanish( sTxt );
+}
+
+BOOL WW8_SwAttrIter::OutAttrWithRange( xub_StrLen nPos )
+{
+ BOOL bRet = FALSE;
+ const SwpHints* pTxtAttrs = rNd.GetpSwpHints();
+ if( pTxtAttrs )
+ {
+ nTmpSwPos = nPos;
+ const xub_StrLen* pEnd;
+ register USHORT i;
+ for( i = 0; i < pTxtAttrs->Count(); ++i )
+ {
+ const SwTxtAttr* pHt = (*pTxtAttrs)[i];
+ const SfxPoolItem* pItem = &pHt->GetAttr();
+ switch( pItem->Which() )
+ {
+ case RES_TXTATR_INETFMT:
+ if( rWrt.bWrtWW8 ) // nur WW8 kann Hyperlinks
+ {
+ if( nPos == *pHt->GetStart() )
+ {
+ OutSwFmtINetFmt( (SwFmtINetFmt&)*pItem, TRUE );
+ bRet = TRUE;
+ }
+ else if( nPos == *pHt->GetEnd() )
+ OutSwFmtINetFmt( (SwFmtINetFmt&)*pItem, FALSE );
+ }
+ break;
+
+ case RES_TXTATR_REFMARK:
+ if( nPos == *pHt->GetStart() )
+ OutSwFmtRefMark( (SwFmtRefMark&)*pItem, TRUE );
+ if( 0 != ( pEnd = pHt->GetEnd() ) && nPos == *pEnd )
+ OutSwFmtRefMark( (SwFmtRefMark&)*pItem, FALSE );
+ break;
+
+ case RES_TXTATR_TOXMARK:
+ if( 0 != ( pEnd = pHt->GetEnd() ) ? nPos == *pEnd
+ : nPos == *pHt->GetStart())
+ OutSwTOXMark( (SwTOXMark&)*pItem, FALSE );
+ break;
+ }
+ }
+ nTmpSwPos = 0; // HasTextItem nur in dem obigen Bereich erlaubt
+ }
+ return bRet;
+}
+
+BOOL WW8_SwAttrIter::IsRedlineAtEnd( xub_StrLen nEnd ) const
+{
+ BOOL bRet = FALSE;
+ // search next Redline
+ for( USHORT nPos = nCurRedlinePos;
+ nPos < rWrt.pDoc->GetRedlineTbl().Count(); ++nPos )
+ {
+ const SwPosition* pEnd = rWrt.pDoc->GetRedlineTbl()[ nPos ]->End();
+ if( pEnd->nNode == rNd )
+ {
+ if( pEnd->nContent.GetIndex() == nEnd )
+ {
+ bRet = TRUE;
+ break;
+ }
+ }
+ else
+ break;
+ }
+ return bRet;
+}
+
+void WW8_SwAttrIter::OutRedlines( xub_StrLen nPos )
+{
+ if( pCurRedline )
+ {
+ const SwPosition* pEnd = pCurRedline->End();
+ if( pEnd->nNode == rNd &&
+ pEnd->nContent.GetIndex() <= nPos )
+ {
+ pCurRedline = 0;
+ ++nCurRedlinePos;
+ }
+ else
+ // write data of current redline
+ rWrt.OutRedline( pCurRedline->GetRedlineData() );
+ }
+
+ if( !pCurRedline )
+ {
+ // search next Redline
+ for( ; nCurRedlinePos < rWrt.pDoc->GetRedlineTbl().Count();
+ ++nCurRedlinePos )
+ {
+ const SwRedline* pRedl = rWrt.pDoc->GetRedlineTbl()[ nCurRedlinePos ];
+
+ const SwPosition* pStt = pRedl->Start();
+ const SwPosition* pEnd = pStt == pRedl->GetPoint()
+ ? pRedl->GetMark()
+ : pRedl->GetPoint();
+
+ if( pStt->nNode == rNd )
+ {
+ if( pStt->nContent.GetIndex() >= nPos )
+ {
+ if( pStt->nContent.GetIndex() == nPos )
+ {
+ // write data of this redline
+ pCurRedline = pRedl;
+ rWrt.OutRedline( pCurRedline->GetRedlineData() );
+ }
+ break;
+ }
+ }
+ else
+ break;
+
+ if( pEnd->nNode == rNd &&
+ pEnd->nContent.GetIndex() < nPos )
+ {
+ pCurRedline = pRedl;
+ break;
+ }
+ }
+ }
+}
+
+/* */
+
+Writer& OutWW8_SwTxtNode( Writer& rWrt, SwCntntNode& rNode )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ SwTxtNode* pNd = &((SwTxtNode&)rNode);
+
+ BOOL bFlyInTable = rWW8Wrt.pFlyFmt && rWW8Wrt.bIsInTable;
+
+ // akt. Style
+ if( !bFlyInTable )
+ rWW8Wrt.nStyleBeforeFly
+ = rWW8Wrt.GetId( (SwTxtFmtColl&)pNd->GetAnyFmtColl() );
+
+ SVBT16 nSty;
+ ShortToSVBT16( rWW8Wrt.nStyleBeforeFly, nSty );
+
+ WW8Bytes* pO = rWW8Wrt.pO;
+
+ if( rWW8Wrt.bStartTOX )
+ {
+ // ignore TOX header section
+ const SwSectionNode* pSectNd = rNode.FindSectionNode();
+ if( TOX_CONTENT_SECTION == pSectNd->GetSection().GetType() )
+ rWW8Wrt.StartTOX( pSectNd->GetSection() );
+ }
+
+ const SwSection* pTOXSect = 0;
+ if( rWW8Wrt.bInWriteTOX )
+ {
+ // check for end of TOX
+ SwNodeIndex aIdx( *pNd, 1 );
+ if( !aIdx.GetNode().IsTxtNode() )
+ {
+ const SwSectionNode* pTOXSectNd = rNode.FindSectionNode();
+ pTOXSect = &pTOXSectNd->GetSection();
+
+ const SwNode* pNxt = rNode.GetNodes().GoNext( &aIdx );
+ if( pNxt && pNxt->FindSectionNode() == pTOXSectNd )
+ pTOXSect = 0;
+ }
+ }
+
+ WW8_SwAttrIter aAttrIter( rWW8Wrt, *pNd );
+ rtl_TextEncoding eChrSet = aAttrIter.GetNodeCharSet();
+
+ ASSERT( !pO->Count(), " pO ist am Zeilenanfang nicht leer" );
+
+ String aStr( pNd->GetTxt() );
+
+ // 0x0a ( Hard Line Break ) -> 0x0b
+ // 0xad ( soft hyphen ) -> 0x1f
+ // 0x2011 ( hard hyphen ) -> 0x1e
+ if( aStr.Len() )
+ {
+ aStr.SearchAndReplaceAll( 0x0A, 0x0B );
+ aStr.SearchAndReplaceAll( CHAR_HARDHYPHEN, 0x1e );
+ aStr.SearchAndReplaceAll( CHAR_SOFTHYPHEN, 0x1f );
+ }
+ xub_StrLen nAktPos = 0;
+ xub_StrLen nEnd = aStr.Len();
+ BOOL bUnicode = TRUE, bRedlineAtEnd = FALSE;
+ do {
+/*
+ if( !bUseAlwaysUnicode )
+ {
+ switch( eChrSet )
+ {
+// case CHARSET_DONTKNOW: ????
+ case CHARSET_SYMBOL:
+// case CHARSET_WIN_SYMBOL:
+// case CHARSET_WIN_WINGDINGS:
+// case CHARSET_MAC_DINGBATS:
+// case CHARSET_MAC_SYMBOL:
+// case CHARSET_ADOBE_SYMBOL:
+// case CHARSET_ADOBE_DINGBATS:
+// case CHARSET_STAR_STARBATS:
+// case CHARSET_STAR_STARMATH:
+ bUnicode = rWW8Wrt.bWrtWW8 ? TRUE : FALSE;
+ break;
+ default:
+ bUnicode = FALSE;
+ break;
+ }
+ }
+*/
+ xub_StrLen nNextAttr = aAttrIter.WhereNext();
+ rtl_TextEncoding eNextChrSet = aAttrIter.GetNextCharSet();
+
+ if( nNextAttr > nEnd )
+ nNextAttr = nEnd;
+
+ rWW8Wrt.AppendBookmarks( *pNd, nAktPos, nNextAttr - nAktPos );
+ BOOL bTxtAtr = aAttrIter.IsTxtAttr( nAktPos );
+ BOOL bAttrWithRange = aAttrIter.OutAttrWithRange( nAktPos );
+
+ if( !bTxtAtr )
+ rWW8Wrt.OutSwString( aStr, nAktPos, nNextAttr - nAktPos,
+ bUnicode, eChrSet );
+
+ // Am Zeilenende werden die Attribute bis ueber das CR
+ // aufgezogen. Ausnahme: Fussnoten am Zeilenende
+ if( nNextAttr == nEnd )
+ {
+ if( !bTxtAtr && !bAttrWithRange )
+ {
+ if( aAttrIter.IsRedlineAtEnd( nEnd ))
+ bRedlineAtEnd = TRUE;
+ else
+ {
+ if( pTOXSect )
+ rWW8Wrt.EndTOX( *pTOXSect );
+ rWW8Wrt.WriteCR(); // CR danach
+ }
+ }
+ }
+ // Ausgabe der Zeichenattribute
+ aAttrIter.OutAttr( nAktPos ); // nAktPos - 1 ??
+ rWW8Wrt.pChpPlc->AppendFkpEntry( rWrt.Strm().Tell(),
+ pO->Count(), pO->GetData() );
+ pO->Remove( 0, pO->Count() ); // leeren
+
+ // Ausnahme: Fussnoten am Zeilenende
+ if( nNextAttr == nEnd )
+ {
+ aAttrIter.OutAttrWithRange( nEnd );
+ if( pO->Count() )
+ {
+ rWW8Wrt.pChpPlc->AppendFkpEntry( rWrt.Strm().Tell(),
+ pO->Count(), pO->GetData() );
+ pO->Remove( 0, pO->Count() ); // leeren
+ }
+
+ if( bTxtAtr || bAttrWithRange || bRedlineAtEnd )
+ {
+ if( pTOXSect )
+ rWW8Wrt.EndTOX( *pTOXSect );
+
+ rWW8Wrt.WriteCR(); // CR danach
+
+ if( bRedlineAtEnd )
+ {
+ aAttrIter.OutRedlines( nEnd );
+ if( pO->Count() )
+ {
+ rWW8Wrt.pChpPlc->AppendFkpEntry( rWrt.Strm().Tell(),
+ pO->Count(), pO->GetData() );
+ pO->Remove( 0, pO->Count() ); // leeren
+ }
+ }
+ }
+ }
+ nAktPos = nNextAttr;
+ eChrSet = eNextChrSet;
+ aAttrIter.NextPos();
+ }
+ while( nAktPos < nEnd );
+
+ ASSERT( !pO->Count(), " pO ist am ZeilenEnde nicht leer" );
+
+// // gibt es harte Absatz-Attributierung oder Fly- oder Table-Attrs ?
+// if( pNd->GetpSwAttrSet() || rWW8Wrt.pFlyFmt || rWW8Wrt.bOutTable ){
+ pO->Insert( (BYTE*)&nSty, 2, pO->Count() ); // Style #
+
+ if( rWW8Wrt.pFlyFmt && !rWW8Wrt.bIsInTable ) // Fly-Attrs
+ rWW8Wrt.Out_SwFmt( *rWW8Wrt.pFlyFmt, FALSE, FALSE, TRUE );
+
+ if( rWW8Wrt.bOutTable )
+ { // Tab-Attr
+ // sprmPFInTable
+ if( rWW8Wrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( *pO, 0x2416 );
+ else
+ pO->Insert( 24, pO->Count() );
+ pO->Insert( 1, pO->Count() );
+ }
+
+ if( !bFlyInTable )
+ {
+ SfxItemSet* pTmpSet = 0;
+ const BYTE nPrvNxtNd =
+ ( WWFL_ULSPACE_LIKE_SWG & rWW8Wrt.GetIniFlags())
+ ? (ND_HAS_PREV_LAYNODE|ND_HAS_NEXT_LAYNODE)
+ : pNd->HasPrevNextLayNode();
+
+ if( (ND_HAS_PREV_LAYNODE|ND_HAS_NEXT_LAYNODE ) != nPrvNxtNd )
+ {
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pNd->GetSwAttrSet().GetItemState(
+ RES_UL_SPACE, TRUE, &pItem ) &&
+ ( ( !( ND_HAS_PREV_LAYNODE & nPrvNxtNd ) &&
+ ((SvxULSpaceItem*)pItem)->GetUpper()) ||
+ ( !( ND_HAS_NEXT_LAYNODE & nPrvNxtNd ) &&
+ ((SvxULSpaceItem*)pItem)->GetLower()) ))
+ {
+ pTmpSet = new SfxItemSet( pNd->GetSwAttrSet() );
+ SvxULSpaceItem aUL( *(SvxULSpaceItem*)pItem );
+ if( !(ND_HAS_PREV_LAYNODE & nPrvNxtNd ))
+ aUL.SetUpper( 0 );
+ if( !(ND_HAS_NEXT_LAYNODE & nPrvNxtNd ))
+ aUL.SetLower( 0 );
+ pTmpSet->Put( aUL );
+ }
+ }
+
+ if( !pTmpSet )
+ pTmpSet = pNd->GetpSwAttrSet();
+
+ const SwNumRule* pRule;
+ const SwNodeNum* pNum;
+ if( (( 0 != ( pNum = pNd->GetNum() ) &&
+ 0 != ( pRule = pNd->GetNumRule() )) ||
+ ( 0 != ( pNum = pNd->GetOutlineNum() ) &&
+ 0 != ( pRule = rWrt.pDoc->GetOutlineNumRule() ) ) ) &&
+ pNum->GetLevel() < NO_NUM )
+ {
+ BYTE nLvl = GetRealLevel( pNum->GetLevel() );
+ const SwNumFmt* pFmt = pRule->GetNumFmt( nLvl );
+ if( !pFmt )
+ pFmt = &pRule->Get( nLvl );
+
+ if( pTmpSet == pNd->GetpSwAttrSet() )
+ pTmpSet = new SfxItemSet( pNd->GetSwAttrSet() );
+
+ SvxLRSpaceItem aLR( (SvxLRSpaceItem&)pTmpSet->Get( RES_LR_SPACE ) );
+ aLR.SetTxtLeft( aLR.GetTxtLeft() + pFmt->GetAbsLSpace() );
+
+ if( MAXLEVEL > pNum->GetLevel() )
+ {
+ aLR.SetTxtFirstLineOfst( pFmt->GetFirstLineOffset() );
+ if( pNum == pNd->GetNum() && SFX_ITEM_SET !=
+ pTmpSet->GetItemState( RES_PARATR_NUMRULE ) )
+ {
+ // NumRule from a template - then put it into the itemset
+ pTmpSet->Put( SwNumRuleItem( pRule->GetName() ));
+ }
+ }
+ else
+ pTmpSet->ClearItem( RES_PARATR_NUMRULE );
+
+ pTmpSet->Put( aLR );
+ SwWW8Writer::CorrTabStopInSet( *pTmpSet, pFmt->GetAbsLSpace() );
+ }
+
+ if( pTmpSet )
+ { // Para-Attrs
+ rWW8Wrt.pStyAttr = &pNd->GetAnyFmtColl().GetAttrSet();
+
+ const SwModify* pOldMod = rWW8Wrt.pOutFmtNode;
+ rWW8Wrt.pOutFmtNode = pNd;
+
+ rWW8Wrt.Out_SfxItemSet( *pTmpSet, TRUE, FALSE ); // Pap-Attrs
+
+ rWW8Wrt.pStyAttr = 0;
+ rWW8Wrt.pOutFmtNode = pOldMod;
+
+ if( pTmpSet != pNd->GetpSwAttrSet() )
+ delete pTmpSet;
+ }
+ }
+ rWW8Wrt.pPapPlc->AppendFkpEntry( rWrt.Strm().Tell(),
+ pO->Count(), pO->GetData() );
+ pO->Remove( 0, pO->Count() ); // leeren
+// }else{
+// rWW8Wrt.pPapPlc->AppendFkpEntry( rWrt.Strm().Tell(), sizeof( nSty ), nSty );
+// }
+ return rWrt;
+}
+
+
+/* */
+
+//---------------------------------------------------------------------------
+// Tabellen
+//---------------------------------------------------------------------------
+
+Writer& OutWW8_SwTblNode( Writer& rWrt, SwTableNode & rNode )
+{
+ SwWW8Writer & rWW8Wrt = (SwWW8Writer&)rWrt;
+ SwTable& rTbl = rNode.GetTable();
+ rWW8Wrt.Out_SfxBreakItems( rTbl.GetFrmFmt()->GetAttrSet(), rNode );
+
+ SwTableLines& rLns = rTbl.GetTabLines();
+ SwTwips nPageSize = 0, nTblOffset = 0;
+
+ {
+ Point aPt;
+ SwRect aRect( rTbl.GetFrmFmt()->FindLayoutRect( FALSE, &aPt ));
+ if( aRect.IsEmpty() )
+ {
+ // dann besorge mal die Seitenbreite ohne Raender !!
+ const SwFrmFmt* pFmt = rWW8Wrt.pFlyFmt ? rWW8Wrt.pFlyFmt :
+ rWrt.pDoc->GetPageDesc(0).GetPageFmtOfNode( rNode, FALSE );
+
+ aRect = pFmt->FindLayoutRect( TRUE );
+ if( 0 == ( nPageSize = aRect.Width() ))
+ {
+ const SvxLRSpaceItem& rLR = pFmt->GetLRSpace();
+ nPageSize = pFmt->GetFrmSize().GetWidth() -
+ rLR.GetLeft() - rLR.GetRight();
+ }
+ }
+ else
+ nPageSize = aRect.Width();
+ }
+
+ SwTwips nTblSz = rTbl.GetFrmFmt()->GetFrmSize().GetWidth();
+ WW8Bytes aAt( 128, 128 ); // Attribute fuer's Tabellen-Zeilenende
+
+ static BYTE __READONLY_DATA aNullBytes[] = { 0, 0, 0, 0 };
+
+ // sprmPDxaFromText10
+ if( rWW8Wrt.bWrtWW8 )
+ {
+ static BYTE __READONLY_DATA aTabLineAttr[] = {
+ 0, 0, // Sty # 0
+ 0x16, 0x24, 1, // sprmPFInTable
+ 0x17, 0x24, 1 }; // sprmPFTtp
+ aAt.Insert( aTabLineAttr, sizeof( aTabLineAttr ), aAt.Count() );
+ }
+ else
+ {
+ static BYTE __READONLY_DATA aTabLineAttr[] = {
+ 0, 0, // Sty # 0
+ 24, 1, // sprmPFInTable
+ 25, 1 }; // sprmPFTtp
+ aAt.Insert( aTabLineAttr, sizeof( aTabLineAttr ), aAt.Count() );
+ }
+
+ SwHoriOrient eHOri = rTbl.GetFrmFmt()->GetHoriOrient().GetHoriOrient();
+ switch( eHOri )
+ {
+ case HORI_CENTER:
+ case HORI_RIGHT:
+ if( rWW8Wrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( aAt, 0x5400 );
+ else
+ aAt.Insert( 182, aAt.Count() );
+ SwWW8Writer::InsUInt16( aAt, (HORI_RIGHT == eHOri ? 2 : 1 ));
+ break;
+
+ case HORI_NONE:
+ case HORI_LEFT_AND_WIDTH:
+ {
+ const SvxLRSpaceItem& rLRSp = rTbl.GetFrmFmt()->GetLRSpace();
+ nTblOffset = rLRSp.GetLeft();
+ nPageSize -= nTblOffset + rLRSp.GetRight();
+ }
+ break;
+// case FLY_HORI_FULL:
+ }
+
+ BOOL bRelBoxSize = TRUE /*ALWAYS relativ (nPageSize + ( nPageSize / 10 )) < nTblSz*/;
+ USHORT nStdAtLen = aAt.Count();
+
+ SwWriteTable* pTableWrt;
+ const SwHTMLTableLayout *pLayout = rTbl.GetHTMLTableLayout();
+ if( pLayout && pLayout->IsExportable() )
+ pTableWrt = new SwWriteTable( pLayout );
+ else
+ pTableWrt = new SwWriteTable( rTbl.GetTabLines(), (USHORT)nPageSize,
+ (USHORT)nTblSz, FALSE );
+
+ // WW6 / 8 can not have more then 31 / 64 cells
+ const USHORT nMaxCols = rWW8Wrt.bWrtWW8 ? 64 : 31;
+ // rCols are the array of all cols of the table
+ const SwWriteTableCols& rCols = pTableWrt->GetCols();
+ USHORT nColCnt = rCols.Count();
+ SwWriteTableCellPtr* pBoxArr = new SwWriteTableCellPtr[ nColCnt ];
+ USHORT* pRowSpans = new USHORT[ nColCnt ];
+ memset( pBoxArr, 0, sizeof( pBoxArr[0] ) * nColCnt );
+ memset( pRowSpans, 0, sizeof( pRowSpans[0] ) * nColCnt );
+ long nLastHeight = 0;
+ const SwWriteTableRows& rRows = pTableWrt->GetRows();
+ for( USHORT nLine = 0; nLine < rRows.Count(); ++nLine )
+ {
+ USHORT nBox, nRealBox;
+
+ const SwWriteTableRow *pRow = rRows[ nLine ];
+ const SwWriteTableCells& rCells = pRow->GetCells();
+
+ BOOL bFixRowHeight = FALSE;
+ USHORT nRealColCnt = 0;
+ for( nColCnt = 0, nBox = 0; nBox < rCells.Count(); ++nColCnt )
+ {
+ if( !pRowSpans[ nColCnt ] )
+ {
+ // set new BoxPtr
+ SwWriteTableCell* pCell = rCells[ nBox++ ];
+ pBoxArr[ nColCnt ] = pCell;
+ pRowSpans[ nColCnt ] = pCell->GetRowSpan();
+ for( USHORT nCellSpan = pCell->GetColSpan(), nCS = 1;
+ nCS < nCellSpan; ++nCS, ++nColCnt )
+ {
+ pBoxArr[ nColCnt+1 ] = pBoxArr[ nColCnt ];
+ pRowSpans[ nColCnt+1 ] = pRowSpans[ nColCnt ];
+ }
+ ++nRealColCnt;
+ }
+ else if( !nColCnt || pBoxArr[ nColCnt-1 ] != pBoxArr[ nColCnt ] )
+ ++nRealColCnt;
+
+ if( 1 != pRowSpans[ nColCnt ] )
+ bFixRowHeight = TRUE;
+ }
+
+ for( ; nColCnt < rCols.Count() && pRowSpans[ nColCnt ]; ++nColCnt )
+ {
+ if( !nColCnt || pBoxArr[ nColCnt-1 ] != pBoxArr[ nColCnt ] )
+ ++nRealColCnt;
+ bFixRowHeight = TRUE;
+ }
+
+ USHORT nWWColMax = nRealColCnt > nMaxCols ? nMaxCols : nRealColCnt;
+
+ // 1.Zeile eine Headline? sprmTTableHeader
+ if( !nLine && rTbl.IsHeadlineRepeat() )
+ {
+ if( rWW8Wrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( aAt, 0x3404 );
+ else
+ aAt.Insert( 186, aAt.Count() );
+ aAt.Insert( 1, aAt.Count() );
+ }
+
+ // Zeilenhoehe ausgeben sprmTDyaRowHeight
+ long nHeight = 0;
+ if( bFixRowHeight )
+ {
+ nHeight = -pRow->GetPos(); //neg. => abs. height!
+ if( nLine )
+ nHeight += rRows[ nLine - 1 ]->GetPos();
+ }
+ else
+ {
+ const SwTableLine* pLine = pBoxArr[ 0 ]->GetBox()->GetUpper();
+ const SwFmtFrmSize& rLSz = pLine->GetFrmFmt()->GetFrmSize();
+ if( ATT_VAR_SIZE != rLSz.GetSizeType() && rLSz.GetHeight() )
+ nHeight = ATT_MIN_SIZE == rLSz.GetSizeType()
+ ? rLSz.GetHeight()
+ : -rLSz.GetHeight();
+ }
+ if( nHeight )
+ {
+ if( rWW8Wrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( aAt, 0x9407 );
+ else
+ aAt.Insert( 189, aAt.Count() );
+ SwWW8Writer::InsUInt16( aAt, (USHORT)nHeight );
+ }
+
+ // sprmTFCantSplit - unsere Tabellen duerfen nie in der Zeile
+ // gesplittet werden.
+ if( rWW8Wrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( aAt, 0x3403 );
+ else
+ aAt.Insert( 185, aAt.Count() );
+ aAt.Insert( (BYTE)0, aAt.Count() );
+
+ // Inhalt der Boxen ausgeben
+ for( nBox = 0, nRealBox = 0; nBox < nColCnt; ++nBox )
+ {
+ if( nBox && pBoxArr[ nBox-1 ] == pBoxArr[ nBox ] )
+ continue;
+
+ if( pBoxArr[ nBox ]->GetRowSpan() == pRowSpans[ nBox ] )
+ {
+ // new Box
+ const SwStartNode* pSttNd = pBoxArr[ nBox ]->GetBox()->GetSttNd();
+ WW8SaveData aSaveData( rWW8Wrt, pSttNd->GetIndex()+1,
+ pSttNd->EndOfSectionIndex() );
+ rWW8Wrt.bOutTable = TRUE;
+ rWW8Wrt.bIsInTable= TRUE;
+ rWW8Wrt.WriteText();
+ }
+ else
+ {
+ rWW8Wrt.bOutTable = TRUE;
+ rWW8Wrt.WriteStringAsPara( aEmptyStr );
+ rWW8Wrt.bOutTable = FALSE;
+ }
+
+ if( nWWColMax < nRealColCnt )
+ {
+ if( nRealBox+1 < nWWColMax || nRealBox+1 == nRealColCnt )
+ rWW8Wrt.ReplaceCr( (char)0x07 ); // SpaltenEnde
+ }
+ else if( nRealBox < nWWColMax )
+ rWW8Wrt.ReplaceCr( (char)0x07 ); // SpaltenEnde
+ ++nRealBox;
+ }
+
+ // das wars mit der Line
+ rWW8Wrt.WriteChar( (char)0x7 ); // TabellenZeilen-Ende
+
+ if( rWW8Wrt.bWrtWW8 )
+ {
+ // SprmTDefTable
+ // 0+1 - OpCode, 2+3 - Laenge = Cells * (sizeof TC + uint16)
+ // 4 - Cells (max 32!)
+ SwWW8Writer::InsUInt16( aAt, 0xD608 );
+ SwWW8Writer::InsUInt16( aAt, 2 + ( nWWColMax + 1 ) * 2 +
+ ( nWWColMax * 20 ));
+ aAt.Insert( nWWColMax, aAt.Count() ); //
+ }
+ else
+ {
+ // SprmTDefTable
+ // 0 - OpCode, 1,2 - Laenge = Cells * (sizeof TC + uint16)
+ // 3 - Cells (max 32!)
+ aAt.Insert( 190, aAt.Count() );
+ SwWW8Writer::InsUInt16( aAt, nWWColMax * 12 + 4 ); // Sprm-Laenge
+ aAt.Insert( nWWColMax, aAt.Count() ); //
+ }
+
+ SwTwips nSz = 0, nCalc;
+ SwWW8Writer::InsUInt16( aAt, (USHORT)nTblOffset );
+
+ for( nBox = 0, nRealBox = 0; nRealBox < nWWColMax; ++nBox )
+ {
+ if( nBox && pBoxArr[ nBox-1 ] == pBoxArr[ nBox ] )
+ continue;
+
+ const SwFrmFmt* pBoxFmt = pBoxArr[ nBox ]->GetBox()->GetFrmFmt();
+ const SwFmtFrmSize& rLSz = pBoxFmt->GetFrmSize();
+ nSz += rLSz.GetWidth();
+ nCalc = nSz;
+ if( bRelBoxSize )
+ {
+ nCalc *= nPageSize;
+ nCalc /= nTblSz;
+ }
+ SwWW8Writer::InsUInt16( aAt, (USHORT)(nTblOffset + nCalc ));
+ ++nRealBox;
+ }
+
+ for( nBox = 0, nRealBox = 0; nRealBox < nWWColMax; nBox++ )
+ {
+ if( nBox && pBoxArr[ nBox-1 ] == pBoxArr[ nBox ] )
+ continue;
+ // rgf, erstmal alles 0 - WW8: 4, sonst 2 Byte
+ // write vertikal alignment
+ const SwFrmFmt& rFmt = *pBoxArr[ nBox ]->GetBox()->GetFrmFmt();
+ if( rWW8Wrt.bWrtWW8 )
+ {
+ USHORT nFlags = pBoxArr[ nBox ]->GetRowSpan();
+ if( 1 < nFlags )
+ {
+ if( nFlags == pRowSpans[ nBox ] )
+ nFlags = 0x60; // start a new vert. merge
+ else
+ nFlags = 0x20; // continue a vert. merge
+ }
+ else
+ nFlags = 0; // no vert. merge
+
+ switch( rFmt.GetVertOrient().GetVertOrient() )
+ {
+ case VERT_CENTER: nFlags |= 0x080; break;
+ case VERT_BOTTOM: nFlags |= 0x100; break;
+ }
+ SwWW8Writer::InsUInt16( aAt, nFlags );
+ }
+ ++nRealBox;
+ aAt.Insert( aNullBytes, 2, aAt.Count() ); // dummy
+ rWW8Wrt.Out_SwFmtTableBox( aAt, rFmt.GetBox() ); // 8/16 Byte
+ }
+
+ // Background
+ USHORT nBackg;
+ if( pRow->GetBackground() )
+ // over all boxes!
+ nBackg = nWWColMax;
+ else
+ {
+ nBackg = 0;
+ for( nBox = 0, nRealBox = 0; nRealBox < nWWColMax; ++nBox )
+ {
+ if( nBox && pBoxArr[ nBox-1 ] == pBoxArr[ nBox ] )
+ continue;
+
+ SwWriteTableCell* pCell = pBoxArr[ nBox ];
+ if( pCell->GetBackground() ||
+ SFX_ITEM_ON == pCell->GetBox()->GetFrmFmt()->
+ GetItemState( RES_BACKGROUND, FALSE ) )
+ nBackg = nRealBox + 1;
+ ++nRealBox;
+ }
+ }
+
+ if( nBackg )
+ {
+ // TableShade, 0(+1) - OpCode, 1(2) - Count * sizeof( SHD ),
+ // 2..(3..) - SHD
+ if( rWW8Wrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( aAt, 0xD609 );
+ else
+ aAt.Insert( (BYTE)191, aAt.Count() );
+ aAt.Insert( (BYTE)(nBackg * 2), aAt.Count() ); // Len
+
+ const SfxPoolItem* pI;
+ for( nBox = 0, nRealBox = 0; nRealBox < nBackg; ++nBox )
+ {
+ if( nBox && pBoxArr[ nBox-1 ] == pBoxArr[ nBox ] )
+ continue;
+
+ USHORT nValue;
+ SwWriteTableCell* pCell = pBoxArr[ nBox ];
+ if( SFX_ITEM_ON == pCell->GetBox()->GetFrmFmt()->
+ GetAttrSet().GetItemState( RES_BACKGROUND, FALSE, &pI )
+ || 0 != ( pI = pCell->GetBackground() )
+ || 0 != ( pI = pRow->GetBackground() ) )
+ {
+ WW8_SHD aShd;
+ rWW8Wrt.TransBrush( ((const SvxBrushItem*)pI)->
+ GetColor(), aShd );
+ nValue = aShd.GetValue();
+ }
+ else
+ nValue = 0;
+ SwWW8Writer::InsUInt16( aAt, nValue );
+ ++nRealBox;
+ }
+ }
+
+ rWW8Wrt.pPapPlc->AppendFkpEntry( rWrt.Strm().Tell(),
+ aAt.Count(), aAt.GetData() );
+ if( aAt.Count() > nStdAtLen )
+ aAt.Remove( nStdAtLen, aAt.Count() - nStdAtLen );
+
+ for( nBox = 0; nBox < nColCnt; ++nBox )
+ --pRowSpans[ nBox ];
+ }
+
+ delete pTableWrt;
+ delete pBoxArr;
+ delete pRowSpans;
+
+ // Pam hinter die Tabelle verschieben
+ rWW8Wrt.pCurPam->GetPoint()->nNode = *rNode.EndOfSectionNode();
+
+ return rWrt;
+}
+
+
+/* */
+
+Writer& OutWW8_SwSectionNode( Writer& rWrt, SwSectionNode& rSectionNode )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ const SwSection& rSection = rSectionNode.GetSection();
+
+ SwNodeIndex aIdx( rSectionNode, 1 );
+ const SwNode& rNd = aIdx.GetNode();
+ if( !rNd.IsSectionNode() )
+ {
+ // Bug 74245 - if the first Node inside the section has an own
+ // PageDesc or PageBreak attribut, then dont write
+ // here the section break
+ ULONG nRstLnNum = 0;
+ const SfxItemSet* pSet;
+ if( rNd.IsTableNode() )
+ pSet = &rNd.GetTableNode()->GetTable().GetFrmFmt()->GetAttrSet();
+ else if( rNd.IsCntntNode() )
+ {
+ pSet = &rNd.GetCntntNode()->GetSwAttrSet();
+ nRstLnNum = ((SwFmtLineNumber&)pSet->Get(
+ RES_LINENUMBER )).GetStartValue();
+ }
+ else
+ pSet = 0;
+
+ const SfxPoolItem* pI;
+ if( pSet && (
+ ( SFX_ITEM_ON != pSet->GetItemState( RES_PAGEDESC, TRUE, &pI )
+ || 0 == ((SwFmtPageDesc*)pI)->GetPageDesc() ) ||
+ ( SFX_ITEM_ON != pSet->GetItemState( RES_BREAK, TRUE, &pI )
+ || SVX_BREAK_NONE == ((SvxFmtBreakItem*)pI)->GetBreak() )))
+ pSet = 0;
+
+ if( !pSet )
+ {
+ // new Section with no own PageDesc/-Break
+ // -> write follow section break;
+ const SwSectionFmt& rFmt = *rSection.GetFmt();
+ rWW8Wrt.ReplaceCr( (char)0xc ); // Indikator fuer Page/Section-Break
+
+ rWW8Wrt.pSepx->AppendSep( rWW8Wrt.Fc2Cp( rWrt.Strm().Tell() ),
+ rWW8Wrt.pAktPageDesc,
+ &rFmt, nRstLnNum );
+ }
+ }
+ if( TOX_CONTENT_SECTION == rSection.GetType() )
+ rWW8Wrt.bStartTOX = TRUE;
+ return rWrt;
+}
+
+/* */
+
+//---------------------------------------------------------------------------
+// Flys
+//---------------------------------------------------------------------------
+
+void SwWW8Writer::OutWW8FlyFrmsInCntnt( const SwTxtNode& rNd )
+{
+ const SwpHints* pTxtAttrs = rNd.GetpSwpHints();
+ if( pTxtAttrs )
+ {
+ for( USHORT n=0; n < pTxtAttrs->Count(); ++n )
+ {
+ const SwTxtAttr* pAttr = (*pTxtAttrs)[ n ];
+ if( RES_TXTATR_FLYCNT == pAttr->Which() )
+ {
+ // zeichengebundenes Attribut
+ const SwFmtFlyCnt& rFlyCntnt = pAttr->GetFlyCnt();
+ const SwFlyFrmFmt& rFlyFrmFmt = *(SwFlyFrmFmt*)rFlyCntnt.GetFrmFmt();
+ const SwNodeIndex* pNodeIndex = rFlyFrmFmt.GetCntnt().GetCntntIdx();
+
+ if( pNodeIndex )
+ {
+ ULONG nStt = pNodeIndex->GetIndex()+1,
+ nEnd = pNodeIndex->GetNode().EndOfSectionIndex();
+
+ if( (nStt < nEnd) && !pDoc->GetNodes()[ nStt ]->IsNoTxtNode() )
+ {
+ Point aOffset;
+ // Rechtecke des Flys und des Absatzes besorgen
+ SwRect aParentRect( rNd.FindLayoutRect( FALSE, &aOffset ) ),
+ aFlyRect( rFlyFrmFmt.FindLayoutRect( FALSE, &aOffset ) );
+
+ aOffset = aFlyRect.Pos() - aParentRect.Pos();
+
+ // PaM umsetzen: auf Inhalt des Fly-Frameformats
+ WW8SaveData aSaveData( *this, nStt, nEnd );
+
+ // wird in Out_SwFmt() ausgewertet
+ pFlyOffset = &aOffset;
+ pFlyFmt = (SwFlyFrmFmt*)&rFlyFrmFmt;
+ // Ok, rausschreiben:
+ WriteText();
+ }
+ }
+ }
+ }
+ }
+}
+
+
+void SwWW8Writer::OutWW8FlyFrm( const SwFrmFmt& rFrmFmt,
+ const Point& rNdTopLeft )
+{
+ if( !bWrtWW8 )
+ {
+ if( RES_DRAWFRMFMT == rFrmFmt.Which() )
+ {
+ ASSERT( !this, "OutWW8FlyFrm: DrawInCnt-Baustelle " );
+ return ;
+ }
+
+ BOOL bDone = FALSE;
+
+ // Hole vom Node und vom letzten Node die Position in der Section
+ /*
+ const SwFmtCntnt& rFlyCntnt = rFrmFmt.GetCntnt();
+
+ ULONG nStt = rFlyCntnt.GetCntntIdx()->GetIndex()+1;
+ ULONG nEnd = pDoc->GetNodes()[ nStt - 1 ]->EndOfSectionIndex();
+ */
+ const SwNodeIndex* pNodeIndex = rFrmFmt.GetCntnt().GetCntntIdx();
+
+ ULONG nStt = pNodeIndex ? pNodeIndex->GetIndex()+1 : 0;
+ ULONG nEnd = pNodeIndex ? pNodeIndex->GetNode().EndOfSectionIndex() : 0;
+
+ if( nStt >= nEnd ) // kein Bereich, also kein gueltiger Node
+ return;
+
+ const SwFmtAnchor& rAnch = rFrmFmt.GetAnchor();
+
+ if( !bIsInTable && (FLY_IN_CNTNT == rAnch.GetAnchorId()) )
+ {
+ // ein zeichen(!)gebundener Rahmen liegt vor
+ SwTxtNode* pParTxtNode = rAnch.GetCntntAnchor()->nNode.GetNode().GetTxtNode();
+
+ if( pParTxtNode && !pDoc->GetNodes()[ nStt ]->IsNoTxtNode() )
+ bDone = TRUE;
+ }
+ if( !bDone )
+ {
+ // ein NICHT zeichengebundener Rahmen liegt vor
+
+ const SwFmtFrmSize& rS = rFrmFmt.GetFrmSize();
+ nFlyWidth = rS.GetWidth(); // Fuer Anpassung Graphic-Groesse
+ nFlyHeight = rS.GetHeight();
+
+ ASSERT( !pFlyFmt, "+pFlyFmt ist vor einem Rahmen nicht 0 ( Rahmen in Rahmen ? )" );
+ {
+ WW8SaveData aSaveData( *this, nStt, nEnd );
+ pFlyFmt = (SwFlyFrmFmt*)&rFrmFmt;
+ if( pFlyFmt )
+ {
+ if( bIsInTable && (FLY_PAGE != rAnch.GetAnchorId()) )
+ {
+ // Beachten: Flag bOutTable wieder setzen,
+ // denn wir geben ja ganz normalen Content der
+ // Tabelenzelle aus und keinen Rahmen
+ // (Flag wurde oben in aSaveData() geloescht)
+ bOutTable = TRUE;
+ const String& rName = pFlyFmt->GetName();
+ StartCommentOutput( rName );
+ if( !pDoc->GetNodes()[ nStt ]->IsNoTxtNode() )
+ WriteText();
+ EndCommentOutput( rName );
+ }
+ else
+ WriteText();
+ }
+ else
+ ASSERT( !this, "+Fly-Ausgabe ohne FlyFmt" );
+ }
+ // ASSERT( !pFlyFmt, " pFlyFmt ist hinter einem Rahmen nicht 0" );
+ }
+ }
+ else
+ {
+ // write as escher
+ WW8_CP nCP = Fc2Cp( Strm().Tell() );
+ AppendFlyInFlys( nCP, rFrmFmt, rNdTopLeft );
+ }
+}
+
+
+void SwWW8Writer::OutFlyFrms( const SwCntntNode& rNode )
+{
+ if( !pFlyPos )
+ return;
+
+ // gib alle freifliegenden Rahmen die sich auf den akt. Absatz
+ // und evt. auf das aktuelle Zeichen beziehen, aus.
+ ULONG nCurPos = rNode.GetIndex();
+
+ // suche nach dem Anfang der FlyFrames
+ for( USHORT n = 0; n < pFlyPos->Count() &&
+ (*pFlyPos)[n]->GetNdIndex().GetIndex() <
+ nCurPos; ++n )
+ ;
+
+ Point aNdPos, aPgPos;
+ Point* pLayPos;
+ BOOL bValidNdPos = FALSE, bValidPgPos = FALSE;
+
+ if( n < pFlyPos->Count() )
+ {
+ while( ( n < pFlyPos->Count() )
+ && ( nCurPos
+ == (*pFlyPos)[n]->GetNdIndex().GetIndex() ) )
+ {
+ const SwFrmFmt& rFmt = (*pFlyPos)[ n ]->GetFmt();
+ if( FLY_PAGE == rFmt.GetAnchor().GetAnchorId() )
+ {
+ // get the Layout Node-Position.
+ if( !bValidPgPos )
+ {
+ aPgPos = rNode.FindPageFrmRect( FALSE, &aPgPos ).Pos();
+ bValidPgPos = TRUE;
+ }
+ pLayPos = &aPgPos;
+ }
+ else
+ {
+ // get the Layout Node-Position.
+ if( !bValidNdPos )
+ {
+ aNdPos = rNode.FindLayoutRect( FALSE, &aNdPos ).Pos();
+ bValidNdPos = TRUE;
+ }
+ pLayPos = &aNdPos;
+ }
+
+ OutWW8FlyFrm( rFmt, *pLayPos );
+ ++n;
+ }
+ }
+}
+
+/* */
+
+// write data of any redline
+void SwWW8Writer::OutRedline( const SwRedlineData& rRedline )
+{
+ if( rRedline.Next() )
+ OutRedline( *rRedline.Next() );
+
+ static USHORT __READONLY_DATA aSprmIds[ 2 * 2 * 3 ] =
+ {
+ // Ids for insert
+ 0x0801, 0x4804, 0x6805, // for WW8
+ 0x0042, 0x0045, 0x0046, // for WW6
+ // Ids for delete
+ 0x0800, 0x4863, 0x6864, // for WW8
+ 0x0041, 0x0045, 0x0046 // for WW6
+ };
+
+ const USHORT* pSprmIds = 0;
+ switch( rRedline.GetType() )
+ {
+ case REDLINE_INSERT:
+ pSprmIds = aSprmIds;
+ break;
+
+ case REDLINE_DELETE:
+ pSprmIds = aSprmIds + (2 * 3);
+ break;
+
+ case REDLINE_FORMAT:
+ if( bWrtWW8 )
+ {
+ InsUInt16( 0xca57 );
+ pO->Insert( 7, pO->Count() ); // len
+ pO->Insert( 1, pO->Count() );
+ InsUInt16( AddRedlineAuthor( rRedline.GetAuthor() ) );
+ InsUInt32( SwWW8Writer::GetDTTM( rRedline.GetTimeStamp() ));
+ }
+ break;
+ }
+
+ if( pSprmIds )
+ {
+ if( !bWrtWW8 )
+ pSprmIds += 3;
+
+ if( bWrtWW8 )
+ InsUInt16( pSprmIds[0] );
+ else
+ pO->Insert( pSprmIds[0], pO->Count() );
+ pO->Insert( 1, pO->Count() );
+
+ if( bWrtWW8 )
+ InsUInt16( pSprmIds[1] );
+ else
+ pO->Insert( pSprmIds[1], pO->Count() );
+ InsUInt16( AddRedlineAuthor( rRedline.GetAuthor() ) );
+
+ if( bWrtWW8 )
+ InsUInt16( pSprmIds[2] );
+ else
+ pO->Insert( pSprmIds[2], pO->Count() );
+ InsUInt32( SwWW8Writer::GetDTTM( rRedline.GetTimeStamp() ));
+ }
+}
+
+/* */
+
+SwNodeFnTab aWW8NodeFnTab = {
+/* RES_TXTNODE */ OutWW8_SwTxtNode,
+/* RES_GRFNODE */ OutWW8_SwGrfNode,
+/* RES_OLENODE */ OutWW8_SwOleNode,
+};
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/wrtw8nds.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.42 2000/09/18 16:04:57 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.41 2000/08/21 10:13:58 khz
+ Export Line Numbering (restart on new section)
+
+ Revision 1.40 2000/08/18 13:02:21 jp
+ don't export escaped URLs
+
+ Revision 1.39 2000/08/04 10:57:10 jp
+ Soft-/HardHyphens & HardBlanks changed from attribute to unicode character
+
+ Revision 1.38 2000/07/25 18:51:22 jp
+ Bug #76835#: OutWW8_SwTblNode - count realboxes correct
+
+ Revision 1.37 2000/05/12 16:13:55 jp
+ Changes for Unicode
+
+ Revision 1.36 2000/04/19 18:03:31 jp
+ Bug #75223#: SearchNext - new min pos must be greater than the startpos
+
+ Revision 1.35 2000/04/17 10:33:46 jp
+ Bug #74947#: OutRedlines - set curredline only if the startpos. is the cur.outpos.
+
+ Revision 1.34 2000/03/21 16:22:40 jp
+ Bug #74360#: OutSwTableNode - dont count realboxes only by W97 export
+
+ Revision 1.33 2000/03/21 15:02:52 os
+ StarView remainders removed
+
+ Revision 1.32 2000/03/17 12:33:46 jp
+ Bug #74245#: OutSectionNode - dont write setionbreak if the next node has his own pagebreak
+
+ Revision 1.31 2000/03/15 13:46:31 jp
+ Bug #74070#: WriteTable - look for colspans
+
+ Revision 1.30 2000/03/03 15:20:01 os
+ StarView remainders removed
+
+ Revision 1.29 2000/02/25 09:55:06 jp
+ Bug #73098#: read & write list entries without number
+
+ Revision 1.28 2000/02/21 12:32:50 cmc
+ #69372# Hyperlinks are exported with the extra WW97 data in the Data Stream to activate links in the Word UI
+
+ Revision 1.27 2000/01/25 20:08:49 jp
+ Bug #72146#: OutSwTxtNode - write UNICode if some character can not be converted
+
+ Revision 1.26 1999/12/20 17:41:29 jp
+ Bug #70749#: Date/Time-Numberformats in german format from the formatter
+
+ Revision 1.25 1999/12/14 22:11:57 jp
+ Bug #70846#: OutTxtNode - if numbered Node and no NumRuleItem in Itemset, then put it new
+
+ Revision 1.24 1999/12/13 16:12:35 jp
+ Bug #70789#: TOXMarks may have a position or a range
+
+ Revision 1.23 1999/11/25 21:22:25 jp
+ Bug #70131#: OutFields: append the charattributes of the node to the sprms
+
+ Revision 1.22 1999/11/22 18:26:14 jp
+ export of TOX and TOX entries
+
+ Revision 1.21 1999/11/12 13:08:01 jp
+ OutSwTable: replace CR to 0x7 on the last Box if the SW Table has to much columns
+
+ Revision 1.20 1999/10/29 17:40:14 jp
+ export of 'complex'(vert. merged) tables
+
+ Revision 1.19 1999/10/21 17:53:13 jp
+ Bug #69377#: write redline sprm of formatting correct
+
+ Revision 1.18 1999/10/14 21:06:01 jp
+ Bug #68617#,#68705# and other little things
+
+ Revision 1.17 1999/10/14 11:09:26 jp
+ export Redlines into W95/W97
+
+ Revision 1.16 1999/10/13 18:09:37 jp
+ write redlines
+
+ Revision 1.15 1999/10/11 11:00:10 jp
+ some changes for export EditEngine text in WW-Format
+
+ Revision 1.14 1999/09/10 16:29:58 jp
+ SwTable: get from Layout the upper size, Bug #67922#: dont W95 loop if fly in tablecells
+
+ Revision 1.13 1999/09/09 17:39:52 jp
+ Bug #68634#: write TableLineHeight as int16 and not as int32
+
+ Revision 1.12 1999/08/30 16:55:30 JP
+ write vertical alignment of tablecells
+
+
+ Rev 1.11 30 Aug 1999 18:55:30 JP
+ write vertical alignment of tablecells
+
+ Rev 1.10 23 Jul 1999 11:18:38 KZ
+ rem. CHARSET Symbols
+
+ Rev 1.9 21 Jul 1999 18:28:22 JP
+ W97 Export: experimental escher export
+
+ Rev 1.8 06 Jul 1999 14:53:58 JP
+ W97-Export corrections
+
+ Rev 1.7 30 Jun 1999 19:56:40 JP
+ W97-Export: Fields/PostIts/References
+
+ Rev 1.6 25 Jun 1999 18:43:08 JP
+ W97-Export: hyperlinks and fields, Bug #67174#
+
+ Rev 1.5 24 Jun 1999 22:52:18 JP
+ Export of Bookmarks and Hyperlinks
+
+ Rev 1.4 23 Jun 1999 20:14:42 JP
+ W97-Export: write Bookmarks
+
+ Rev 1.3 23 Jun 1999 12:46:14 JP
+ Export of numbers und outlinenumbers
+
+ Rev 1.2 16 Jun 1999 19:54:54 JP
+ Change interface of base class Writer, Export of W97 NumRules
+
+ Rev 1.1 08 Jun 1999 09:22:36 JP
+ WW97-Export: 1.Teil fuer Tabellen (W95-Funktionalitaet)
+
+ Rev 1.0 04 Jun 1999 17:49:00 JP
+ WW97-Export: Code aufgeteilt
+
+*************************************************************************/
+
diff --git a/sw/source/filter/ww8/wrtw8num.cxx b/sw/source/filter/ww8/wrtw8num.cxx
new file mode 100644
index 000000000000..f07bc98fb311
--- /dev/null
+++ b/sw/source/filter/ww8/wrtw8num.cxx
@@ -0,0 +1,627 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtw8num.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SV_FONT_HXX //autogen
+#include <vcl/font.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen wg. SvxLRSpaceItem
+#include <svx/lrspitem.hxx>
+#endif
+
+#ifndef _DOC_HXX //autogen
+#include <doc.hxx>
+#endif
+#ifndef _DOCARY_HXX //autogen
+#include <docary.hxx>
+#endif
+#ifndef _NUMRULE_HXX //autogen
+#include <numrule.hxx>
+#endif
+#ifndef _PARATR_HXX //autogen
+#include <paratr.hxx>
+#endif
+#ifndef _CHARFMT_HXX //autogen
+#include <charfmt.hxx>
+#endif
+#ifndef _NDTXT_HXX //autogen wg. SwTxtNode
+#include <ndtxt.hxx>
+#endif
+
+#ifndef _WRTWW8_HXX
+#include <wrtww8.hxx>
+#endif
+
+
+USHORT SwWW8Writer::GetId( const SwNumRule& rNumRule ) const
+{
+ if( !pUsedNumTbl )
+ {
+ SwWW8Writer* pThis = (SwWW8Writer*)this;
+ pThis->pUsedNumTbl = new SwNumRuleTbl;
+ pThis->pUsedNumTbl->Insert( &pDoc->GetNumRuleTbl(), 0 );
+ for( USHORT n = pUsedNumTbl->Count(); n; )
+ if( !pDoc->IsUsed( *pUsedNumTbl->GetObject( --n )) )
+ pThis->pUsedNumTbl->Remove( n );
+
+ // jetzt noch die OutlineRule einfuegen
+ SwNumRule* pR = (SwNumRule*)pDoc->GetOutlineNumRule();
+ pThis->pUsedNumTbl->Insert( pR, pUsedNumTbl->Count() );
+ }
+ SwNumRule* p = (SwNumRule*)&rNumRule;
+ return pUsedNumTbl->GetPos( p );
+}
+
+void SwWW8Writer::OutListTab()
+{
+ if( !pUsedNumTbl )
+ return ; // no numbering is used
+
+ USHORT nCount = pUsedNumTbl->Count();
+
+ pFib->fcPlcfLst = pTableStrm->Tell();
+ SwWW8Writer::WriteShort( *pTableStrm, nCount );
+
+ // First Loop - write static data of SwNumRule - LSTF
+ for( USHORT n = 0; n < nCount; ++n )
+ {
+ const SwNumRule& rRule = *pUsedNumTbl->GetObject( n );
+
+ SwWW8Writer::WriteLong( *pTableStrm, n + 1 );
+ SwWW8Writer::WriteLong( *pTableStrm, n + 1 );
+
+ // mit keinen Styles verbunden
+ for( int i = 0; i < nWW8MaxListLevel; ++i )
+ SwWW8Writer::WriteShort( *pTableStrm, 0xFFF );
+
+ BYTE nFlags = 0, nDummy = 0;
+ if( rRule.IsContinusNum() )
+ nFlags |= 0x1;
+ *pTableStrm << nFlags << nDummy;
+ }
+
+ // set len to FIB
+ pFib->lcbPlcfLst = pTableStrm->Tell() - pFib->fcPlcfLst;
+
+ // second Loop - write all Levels for all SwNumRules - LVLF
+
+ // prepare the NodeNum to generate the NumString
+ SwNodeNum aNdNum( 0 );
+ for( n = 0; n < nWW8MaxListLevel; ++n )
+ aNdNum.GetLevelVal()[ n ] = n;
+
+ BYTE aPapSprms [] = {
+ 0x0f, 0x84, 0, 0, // sprmPDxaLeft
+ 0x11, 0x84, 0, 0 // sprmPDxaLeft1
+ };
+
+ for( n = 0; n < nCount; ++n )
+ {
+ const SwNumRule& rRule = *pUsedNumTbl->GetObject( n );
+ BYTE nLvl, nFlags,
+ nLevels = rRule.IsContinusNum() ? 1 : nWW8MaxListLevel;
+ for( nLvl = 0; nLvl < nLevels; ++nLvl )
+ {
+ // write the static data of the SwNumFmt of this level
+ BYTE aNumLvlPos[ nWW8MaxListLevel ] = { 0,0,0,0,0,0,0,0,0 };
+
+ const SwNumFmt& rFmt = rRule.Get( nLvl );
+ SwWW8Writer::WriteLong( *pTableStrm, rFmt.GetStartValue() );
+ *pTableStrm << SwWW8Writer::GetNumId( rFmt.eType );
+
+ switch( rFmt.GetAdjust() )
+ {
+ case SVX_ADJUST_CENTER: nFlags = 1; break;
+ case SVX_ADJUST_RIGHT: nFlags = 2; break;
+ default: nFlags = 0; break;
+ }
+ *pTableStrm << nFlags;
+
+ // Build the NumString for this Level
+ String sNumStr;
+ BOOL bWriteBullet = FALSE;
+ rtl_TextEncoding eChrSet = RTL_TEXTENCODING_SYMBOL;
+ if( SVX_NUM_CHAR_SPECIAL == rFmt.eType ||
+ SVX_NUM_BITMAP == rFmt.eType )
+ {
+ sNumStr = rFmt.GetBulletChar();
+ bWriteBullet = TRUE;
+
+ const Font* pFont = rFmt.GetBulletFont();
+ if( !pFont )
+ pFont = &SwNumRule::GetDefBulletFont();
+
+ eChrSet = pFont->GetCharSet();
+ }
+ else if( SVX_NUM_NUMBER_NONE != rFmt.eType )
+ {
+ BYTE* pLvlPos = aNumLvlPos;
+ aNdNum.SetLevel( nLvl );
+ sNumStr = rRule.MakeNumString( aNdNum, FALSE, TRUE );
+
+ // now search the nums in the string
+ for( BYTE i = 0; i <= nLvl; ++i )
+ {
+ String sSrch( String::CreateFromInt32( i ));
+ xub_StrLen nFnd = sNumStr.Search( sSrch );
+ if( STRING_NOTFOUND != nFnd )
+ {
+ *pLvlPos = (BYTE)(nFnd + rFmt.GetPrefix().Len() + 1 );
+ ++pLvlPos;
+ sNumStr.SetChar( nFnd, (char)i );
+ }
+ }
+
+ if( rFmt.GetPrefix().Len() )
+ sNumStr.Insert( rFmt.GetPrefix(), 0 );
+ if( rFmt.GetPostfix().Len() )
+ sNumStr += rFmt.GetPostfix();
+ }
+
+ // write the rgbxchNums[9]
+ pTableStrm->Write( aNumLvlPos, nWW8MaxListLevel );
+
+ nFlags = 2; // ixchFollow: 0 - tab, 1 - blank, 2 - nothing
+ *pTableStrm << nFlags;
+ // dxaSoace/dxaIndent (Word 6 compatibility)
+ SwWW8Writer::WriteLong( *pTableStrm, 0 );
+ SwWW8Writer::WriteLong( *pTableStrm, 0 );
+
+ // cbGrpprlChpx
+ WW8Bytes aCharAtrs;
+ if( rFmt.GetCharFmt() || bWriteBullet )
+ {
+ WW8Bytes* pOldpO = pO;
+ pO = &aCharAtrs;
+ SfxItemSet aSet( pDoc->GetAttrPool(), RES_CHRATR_BEGIN,
+ RES_CHRATR_END );
+ const SfxItemSet* pOutSet;
+ if( bWriteBullet )
+ {
+ const Font* pFont = rFmt.GetBulletFont();
+ if( !pFont )
+ pFont = &SwNumRule::GetDefBulletFont();
+ pOutSet = &aSet;
+
+ if( rFmt.GetCharFmt() )
+ aSet.Put( rFmt.GetCharFmt()->GetAttrSet() );
+ aSet.Put( SvxFontItem( pFont->GetFamily(),
+ pFont->GetName(), pFont->GetStyleName(),
+ pFont->GetPitch(), pFont->GetCharSet() ));
+ }
+ else
+ pOutSet = &rFmt.GetCharFmt()->GetAttrSet();
+
+ Out_SfxItemSet( *pOutSet, FALSE, TRUE );
+ pO = pOldpO;
+ }
+ nFlags = (BYTE)aCharAtrs.Count();
+ *pTableStrm << nFlags;
+
+ // cbGrpprlPapx
+ nFlags = sizeof( aPapSprms );
+ *pTableStrm << nFlags;
+
+ // reserved
+ SwWW8Writer::WriteShort( *pTableStrm, 0 );
+
+ // write Papx
+ BYTE* pData = aPapSprms + 2;
+ Set_UInt16( pData, rFmt.GetAbsLSpace() );
+ pData += 2;
+ Set_UInt16( pData, rFmt.GetFirstLineOffset() );
+ pTableStrm->Write( aPapSprms, sizeof( aPapSprms ));
+
+ // write Chpx
+ if( aCharAtrs.Count() )
+ pTableStrm->Write( aCharAtrs.GetData(), aCharAtrs.Count() );
+
+ // write the num string
+ SwWW8Writer::WriteShort( *pTableStrm, sNumStr.Len() );
+ SwWW8Writer::WriteString16( *pTableStrm, sNumStr, FALSE );
+ }
+ }
+}
+
+void SwWW8Writer::OutOverrideListTab()
+{
+ if( !pUsedNumTbl )
+ return ; // no numbering is used
+
+ // write the "list format override" - LFO
+ USHORT nCount = pUsedNumTbl->Count();
+
+ pFib->fcPlfLfo = pTableStrm->Tell();
+ SwWW8Writer::WriteLong( *pTableStrm, nCount );
+
+ for( USHORT n = 0; n < nCount; ++n )
+ {
+ SwWW8Writer::WriteLong( *pTableStrm, n + 1 );
+ SwWW8Writer::FillCount( *pTableStrm, 12 );
+ }
+ for( n = 0; n < nCount; ++n )
+ SwWW8Writer::WriteLong( *pTableStrm, -1 ); // no overwrite
+
+ // set len to FIB
+ pFib->lcbPlfLfo = pTableStrm->Tell() - pFib->fcPlfLfo;
+}
+
+void SwWW8Writer::OutListNamesTab()
+{
+ if( !pUsedNumTbl )
+ return ; // no numbering is used
+
+ // write the "list format override" - LFO
+ USHORT nNms = 0, nCount = pUsedNumTbl->Count();
+
+ pFib->fcSttbListNames = pTableStrm->Tell();
+ SwWW8Writer::WriteShort( *pTableStrm, -1 );
+ SwWW8Writer::WriteLong( *pTableStrm, nCount );
+
+ for( ; nNms < nCount; ++nNms )
+ {
+ const SwNumRule& rRule = *pUsedNumTbl->GetObject( nNms );
+ String sNm;
+ if( !rRule.IsAutoRule() )
+ sNm = rRule.GetName();
+
+ SwWW8Writer::WriteShort( *pTableStrm, sNm.Len() );
+ if( sNm.Len() )
+ SwWW8Writer::WriteString16( *pTableStrm, sNm, FALSE );
+ }
+
+ SwWW8Writer::WriteLong( *pTableStrm, pFib->fcSttbListNames + 2, nNms );
+ // set len to FIB
+ pFib->lcbSttbListNames = pTableStrm->Tell() - pFib->fcSttbListNames;
+}
+
+/* */
+
+// old WW95-Code
+
+void SwWW8Writer::Out_Olst( const SwNumRule& rRule )
+{
+ static BYTE __READONLY_DATA aAnlvBase[] = { // Defaults
+ 1,0,0, // Upper Roman
+ 0x0C, // Hanging Indent, fPrev
+ 0,0,1,0x80,0,0,1,0,0x1b,1,0,0 };
+
+ static BYTE __READONLY_DATA aSprmOlstHdr[] = { 133, 212 };
+
+ pO->Insert( aSprmOlstHdr, sizeof( aSprmOlstHdr ), pO->Count() );
+ WW8_OLST aOlst;
+ memset( &aOlst, 0, sizeof(aOlst) );
+ BYTE* pC = aOlst.rgch;
+ BYTE* pChars = (BYTE*)pC;
+ USHORT nCharLen = 64;
+
+ USHORT j;
+ for( j = 0; j < nWW8MaxListLevel; j++ ) // 9 variable ANLVs
+ {
+ memcpy( &aOlst.rganlv[j], aAnlvBase, sizeof( WW8_ANLV ) ); // Defaults
+
+ const SwNumFmt* pFmt = rRule.GetNumFmt( j );
+ if( pFmt )
+ BuildAnlvBase( aOlst.rganlv[j], pChars, nCharLen, rRule,
+ *pFmt, (BYTE)j );
+ }
+
+ pO->Insert( (BYTE*)&aOlst, sizeof( aOlst ), pO->Count() );
+}
+
+
+void SwWW8Writer::Out_WwNumLvl( BYTE nWwLevel )
+{
+ pO->Insert( 13, pO->Count() );
+ pO->Insert( nWwLevel, pO->Count() );
+}
+
+void SwWW8Writer::Out_SwNumLvl( BYTE nSwLevel )
+{
+ Out_WwNumLvl( ( nSwLevel == NO_NUM ) ? 0 : nSwLevel + 1 );
+}
+
+void SwWW8Writer::BuildAnlvBulletBase( WW8_ANLV& rAnlv, BYTE*& rpCh,
+ USHORT& rCharLen, const SwNumFmt& rFmt )
+{
+ BYTE nb = 0; // Zahlentyp
+ ByteToSVBT8( 11, rAnlv.nfc );
+
+ switch( rFmt.GetAdjust() )
+ {
+ case SVX_ADJUST_RIGHT: nb = 2; break;
+ case SVX_ADJUST_CENTER: nb = 1; break;
+ case SVX_ADJUST_BLOCK:
+ case SVX_ADJUST_BLOCKLINE: nb = 3; break;
+ }
+ if( rFmt.GetFirstLineOffset() < 0 )
+ nb |= 0x8; // number will be displayed using a hanging indent
+ ByteToSVBT8( nb, rAnlv.aBits1 );
+
+ xub_StrLen nS = rFmt.GetPrefix().Len();
+ if( 1 < rCharLen )
+ {
+ const Font& rFont = rFmt.GetBulletFont()
+ ? *rFmt.GetBulletFont()
+ : SwNumRule::GetDefBulletFont();
+ USHORT nFontId = GetId( rFont );
+ ShortToSVBT16( nFontId, rAnlv.ftc );
+ *rpCh = ByteString::ConvertFromUnicode( rFmt.GetBulletChar(),
+ rFont.GetCharSet() );
+ rpCh++;
+ rCharLen--;
+ ByteToSVBT8( 1, rAnlv.cbTextBefore );
+ }
+ ShortToSVBT16( -rFmt.GetFirstLineOffset(), rAnlv.dxaIndent );
+ ShortToSVBT16( rFmt.GetCharTextOffset(), rAnlv.dxaSpace );
+}
+
+static void SwWw8_InsertAnlText( const String& rStr, BYTE*& rpCh,
+ USHORT& rCharLen, SVBT8& r8Len )
+{
+ BYTE nb = 0;
+ WW8Bytes aO;
+ SwWW8Writer::InsAsString8( aO, rStr, RTL_TEXTENCODING_MS_1252 );
+
+ USHORT nCnt = aO.Count();
+ if( nCnt && nCnt < rCharLen )
+ {
+ nb = (BYTE)nCnt;
+ memcpy( rpCh, aO.GetData(), nCnt );
+ rpCh += nCnt;
+ rCharLen -= nCnt;
+ }
+ ByteToSVBT8( nb, r8Len );
+}
+
+void SwWW8Writer::BuildAnlvBase( WW8_ANLV& rAnlv, BYTE*& rpCh,
+ USHORT& rCharLen, const SwNumRule& rRul,
+ const SwNumFmt& rFmt, BYTE nSwLevel )
+{
+ ByteToSVBT8( SwWW8Writer::GetNumId( rFmt.eType ), rAnlv.nfc );
+
+ BYTE nb = 0;
+ switch( rFmt.GetAdjust() )
+ {
+ case SVX_ADJUST_RIGHT: nb = 2; break;
+ case SVX_ADJUST_CENTER: nb = 1; break;
+ case SVX_ADJUST_BLOCK:
+ case SVX_ADJUST_BLOCKLINE: nb = 3; break;
+ }
+
+ BOOL bInclUpper = rFmt.IsInclUpperLevel();
+ if( bInclUpper )
+ nb |= 0x4; // include previous levels
+
+ if( rFmt.GetFirstLineOffset() < 0 )
+ nb |= 0x8; // number will be displayed using a hanging indent
+ ByteToSVBT8( nb, rAnlv.aBits1 );
+
+ if( bInclUpper && !rRul.IsContinusNum() )
+ {
+ if( (nSwLevel >= 1 )
+ && (nSwLevel<= nWW8MaxListLevel )
+ && (rFmt.eType != SVX_NUM_NUMBER_NONE ) ) // UEberhaupt Nummerierung ?
+ { // -> suche, ob noch Zahlen davor
+ BYTE nUpper = rFmt.GetUpperLevel();
+ if( (nUpper >= 0 )
+ && (nUpper <= nWW8MaxListLevel )
+ && (rRul.Get(nUpper).eType != SVX_NUM_NUMBER_NONE ) ) // Nummerierung drueber ?
+ {
+ // dann Punkt einfuegen
+ SwWw8_InsertAnlText( aDotStr, rpCh, rCharLen,
+ rAnlv.cbTextBefore );
+ }
+
+ }
+ }
+ else
+ {
+ SwWw8_InsertAnlText( rFmt.GetPrefix(), rpCh, rCharLen,
+ rAnlv.cbTextBefore );
+ SwWw8_InsertAnlText( rFmt.GetPostfix(), rpCh, rCharLen,
+ rAnlv.cbTextAfter );
+ }
+
+ ShortToSVBT16( rFmt.GetStartValue(), rAnlv.iStartAt );
+ ShortToSVBT16( -rFmt.GetFirstLineOffset(), rAnlv.dxaIndent );
+ ShortToSVBT16( rFmt.GetCharTextOffset(), rAnlv.dxaSpace );
+}
+
+void SwWW8Writer::Out_NumRuleAnld( const SwNumRule& rRul, const SwNumFmt& rFmt,
+ BYTE nSwLevel )
+{
+ static BYTE __READONLY_DATA aSprmAnldDefault[54] = {
+ 12, 52,
+ 1,0,0,0x0c,0,0,1,0x80,0,0,1,0,0x1b,1,0,0,0x2e,
+ 0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
+ BYTE aSprmAnld[54];
+
+ memcpy( aSprmAnld, aSprmAnldDefault, sizeof( aSprmAnld ) );
+ WW8_ANLD* pA = (WW8_ANLD*)(aSprmAnld + 2); // handlicher Pointer
+
+ BYTE* pChars = (BYTE*)(pA->rgchAnld);
+ USHORT nCharLen = 31;
+
+ if( nSwLevel == 11 )
+ BuildAnlvBulletBase( pA->eAnlv, pChars, nCharLen, rFmt );
+ else
+ BuildAnlvBase( pA->eAnlv, pChars, nCharLen, rRul, rFmt, nSwLevel );
+
+ // ... und raus damit
+ OutSprmBytes( (BYTE*)&aSprmAnld, sizeof( aSprmAnld ) );
+}
+
+
+// Return: ist es eine Gliederung ?
+BOOL SwWW8Writer::Out_SwNum( const SwTxtNode* pNd )
+{
+ BYTE nSwLevel = pNd->GetNum()->GetLevel();
+ const SwNumRule* pRul = pNd->GetNumRule();
+ if( !pRul || nSwLevel == nWW8MaxListLevel )
+ return FALSE;
+
+ BOOL bNoNum = FALSE;
+ if( nSwLevel == NO_NUM )
+ nSwLevel = NO_NUMLEVEL | 0 ; // alte Codierung...
+ if( ( nSwLevel & NO_NUMLEVEL ) != 0 )
+ {
+ nSwLevel &= ~NO_NUMLEVEL; // 0..nWW8MaxListLevel
+ bNoNum = TRUE;
+ }
+
+ BOOL bRet = TRUE;
+ const SwNumFmt* pFmt = &pRul->Get( nSwLevel );// interessierendes Format
+
+#ifdef NUM_RELSPACE
+ SwNumFmt aFmt( *pFmt );
+ const SvxLRSpaceItem& rLR = (SvxLRSpaceItem&)pNd->SwCntntNode::GetAttr( RES_LR_SPACE );
+ aFmt.SetAbsLSpace( aFmt.GetAbsLSpace() + rLR.GetLeft() );
+ pFmt = &aFmt;
+#endif
+
+#ifdef DEBUG
+ BYTE nIncl = pRul->Get(1).GetUpperLevel();
+#endif
+
+ if( pFmt->eType == SVX_NUM_NUMBER_NONE
+ || pFmt->eType == SVX_NUM_CHAR_SPECIAL
+ || pFmt->eType == SVX_NUM_BITMAP )
+ {
+ // Aufzaehlung
+ Out_WwNumLvl( (bNoNum) ? 12 : 11 );
+ Out_NumRuleAnld( *pRul, *pFmt, 11 );
+ bRet = FALSE;
+ }
+ else if( pRul->IsContinusNum()
+ || ( pRul->Get(1).GetUpperLevel() <= 1 ) )
+ {
+ // Nummerierung
+ Out_WwNumLvl( (bNoNum) ? 12 : 10 );
+ Out_NumRuleAnld( *pRul, *pFmt, 10 );
+ bRet = FALSE;
+ }
+ else
+ {
+ // Gliederung
+ Out_SwNumLvl( (bNoNum) ? 12 :nSwLevel );
+ Out_NumRuleAnld( *pRul, *pFmt, nSwLevel );
+ }
+ return bRet;
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/wrtw8num.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.9 2000/09/18 16:04:58 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.8 2000/07/24 13:03:36 jp
+ Bug #76561#: convert Bulletchar to unicode
+
+ Revision 1.7 2000/05/12 16:13:58 jp
+ Changes for Unicode
+
+ Revision 1.6 2000/02/25 09:55:10 jp
+ Bug #73098#: read & write list entries without number
+
+ Revision 1.5 1999/12/09 15:42:43 jp
+ Bug #70669#: GetId without ASSERT
+
+ Revision 1.4 1999/10/13 18:09:41 jp
+ write redlines
+
+ Revision 1.3 1999/06/23 10:46:16 JP
+ Export of numbers und outlinenumbers
+
+
+ Rev 1.2 23 Jun 1999 12:46:16 JP
+ Export of numbers und outlinenumbers
+
+ Rev 1.1 21 Jun 1999 10:06:58 JP
+ write ListOverride table in correct format
+
+ Rev 1.0 16 Jun 1999 19:56:20 JP
+ Change interface of base class Writer, Export of W97 NumRules
+
+*************************************************************************/
+
diff --git a/sw/source/filter/ww8/wrtw8sty.cxx b/sw/source/filter/ww8/wrtw8sty.cxx
new file mode 100644
index 000000000000..4f7a9ea24b4d
--- /dev/null
+++ b/sw/source/filter/ww8/wrtw8sty.cxx
@@ -0,0 +1,1942 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtw8sty.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define _SVSTDARR_STRINGSSORTDTOR
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVDOBJ_HXX //autogen wg. SdrObject
+#include <svx/svdobj.hxx>
+#endif
+#ifndef _SVDOTEXT_HXX //autogen wg. SdrTextObj
+#include <svx/svdotext.hxx>
+#endif
+
+#ifndef _WRTWW8_HXX
+#include <wrtww8.hxx>
+#endif
+#ifndef _DOC_HXX //autogen
+#include <doc.hxx>
+#endif
+#ifndef _DOCARY_HXX //autogen
+#include <docary.hxx>
+#endif
+#ifndef _POOLFMT_HXX //autogen
+#include <poolfmt.hxx>
+#endif
+#ifndef _FMTCOL_HXX //autogen
+#include <fmtcol.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _PAGEDESC_HXX //autogen
+#include <pagedesc.hxx>
+#endif
+#ifndef _NDTXT_HXX //autogen
+#include <ndtxt.hxx>
+#endif
+#ifndef _FTNINFO_HXX //autogen
+#include <ftninfo.hxx>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _SECTION_HXX //autogen
+#include <section.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FMTFTN_HXX //autogen
+#include <fmtftn.hxx>
+#endif
+#ifndef _NDINDEX_HXX //autogen
+#include <ndindex.hxx>
+#endif
+#ifndef _TXTFTN_HXX
+#include <txtftn.hxx>
+#endif
+#ifndef _CHARFMT_HXX
+#include <charfmt.hxx>
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _DCONTACT_HXX
+#include <dcontact.hxx>
+#endif
+#ifndef _FMTCNCT_HXX
+#include <fmtcnct.hxx>
+#endif
+#ifndef _FTNIDX_HXX
+#include <ftnidx.hxx>
+#endif
+
+#ifndef SW_LINEINFO_HXX
+#include <lineinfo.hxx>
+#endif
+
+
+struct WW8_SED
+{
+ SVBT16 aBits1; // orientation change + internal, Default: 6
+ SVBT32 fcSepx; // FC file offset to beginning of SEPX for section.
+ // 0xFFFFFFFF for no Sprms
+ SVBT16 fnMpr; // used internally by Windows Word, Default: 0
+ SVBT32 fcMpr; // FC, points to offset in FC space for MacWord
+ // Default: 0xffffffff ( nothing )
+ // cbSED is 12 (decimal)), C (hex).
+};
+
+struct WW8_PdAttrDesc
+{
+ BYTE* pData;
+ USHORT nLen;
+ WW8_FC nSepxFcPos;
+};
+
+
+SV_IMPL_VARARR( WW8_WrSepInfoPtrs, WW8_SepInfo )
+
+// class WW8_WrPlc0 ist erstmal nur fuer Header / Footer-Positionen, d.h. es gibt
+// keine inhaltstragende Struktur.
+class WW8_WrPlc0
+{
+ SvULongs aPos; // PTRARR von CPs / FCs
+ ULONG nOfs;
+public:
+ WW8_WrPlc0( ULONG nOffset );
+ USHORT Count() const { return aPos.Count(); }
+ void Append( ULONG nStartCpOrFc );
+ void Write( SvStream& rStrm );
+ ULONG GetCP( USHORT n ) const { return aPos[ n ]; }
+};
+
+
+//------------------------------------------------------------
+// Styles
+//------------------------------------------------------------
+
+#define WW8_RESERVED_SLOTS 15
+
+// GetId( SwCharFmt ) zur Benutzung im Text -> nil verboten,
+// "Default Char Style" stattdessen
+USHORT SwWW8Writer::GetId( const SwCharFmt& rFmt ) const
+{
+ USHORT nRet = pStyles->Sty_GetWWSlot( rFmt );
+ return ( nRet != 0xfff ) ? nRet : 10; // Default Char Style
+}
+
+// GetId( SwTxtFmtColl ) zur Benutzung an TextNodes -> nil verboten,
+// "Standard" stattdessen
+USHORT SwWW8Writer::GetId( const SwTxtFmtColl& rColl ) const
+{
+ USHORT nRet = pStyles->Sty_GetWWSlot( rColl );
+ return ( nRet != 0xfff ) ? nRet : 0; // Default TxtFmtColl
+}
+
+
+
+//typedef pFmtT
+WW8WrtStyle::WW8WrtStyle( SwWW8Writer& rWr )
+ : rWrt( rWr ), nPOPosStdLen1( 0 ), nPOPosStdLen2( 0 )
+{
+ rWrt.pO->Remove( 0, rWrt.pO->Count() ); // leeren
+ SwDoc& rDoc = *rWrt.pDoc;
+
+ // if exist any Foot-/End-Notes then get from the EndNoteInfo struct
+ // the CharFormats. They will create it!
+ if( rDoc.GetFtnIdxs().Count() )
+ {
+ rDoc.GetEndNoteInfo().GetAnchorCharFmt( rDoc );
+ rDoc.GetEndNoteInfo().GetCharFmt( rDoc );
+ rDoc.GetFtnInfo().GetAnchorCharFmt( rDoc );
+ rDoc.GetFtnInfo().GetCharFmt( rDoc );
+ }
+ USHORT nAlloc = WW8_RESERVED_SLOTS + rDoc.GetCharFmts()->Count() - 1 +
+ rDoc.GetTxtFmtColls()->Count() - 1;
+ // etwas grosszuegig ( bis zu 15 frei )
+ pFmtA = new SwFmt*[ nAlloc ];
+ memset( pFmtA, 0, nAlloc * sizeof( SwFmt* ) );
+ BuildStyleTab();
+}
+
+WW8WrtStyle::~WW8WrtStyle()
+{
+ delete[]( pFmtA );
+ rWrt.pO->Remove( 0, rWrt.pO->Count() ); // leeren
+}
+
+// Sty_SetWWSlot() fuer Abhaengigkeiten der Styles -> nil ist erlaubt
+USHORT WW8WrtStyle::Sty_GetWWSlot( const SwFmt& rFmt ) const
+{
+ register USHORT n;
+ for( n = 0; n < nUsedSlots; n++ )
+ if( pFmtA[n] == &rFmt )
+ return n;
+ return 0xfff; // 0xfff: WW: nil
+}
+
+USHORT WW8WrtStyle::Build_GetWWSlot( const SwFmt& rFmt )
+{
+ USHORT nRet;
+ switch( nRet = rFmt.GetPoolFmtId() )
+ {
+ case RES_POOLCOLL_STANDARD: nRet = 0; break;
+
+ case RES_POOLCOLL_HEADLINE1:
+ case RES_POOLCOLL_HEADLINE2:
+ case RES_POOLCOLL_HEADLINE3:
+ case RES_POOLCOLL_HEADLINE4:
+ case RES_POOLCOLL_HEADLINE5:
+ case RES_POOLCOLL_HEADLINE6:
+ case RES_POOLCOLL_HEADLINE7:
+ case RES_POOLCOLL_HEADLINE8:
+ case RES_POOLCOLL_HEADLINE9: nRet -= RES_POOLCOLL_HEADLINE1-1; break;
+
+// case RES_POOLCHR_FOOTNOTE_ANCHOR: nRet =
+// case RES_POOLCHR_ENDNOTE_ANCHOR:
+ default:
+ nRet = nUsedSlots++;
+ break;
+ }
+ return nRet;
+}
+
+USHORT WW8WrtStyle::GetWWId( const SwFmt& rFmt ) const
+{
+ USHORT nRet = 0xffe; // User-Style als default
+ USHORT nPoolId = rFmt.GetPoolFmtId();
+ if( nPoolId == RES_POOLCOLL_STANDARD )
+ nRet = 0;
+ else if( nPoolId >= RES_POOLCOLL_HEADLINE1 &&
+ nPoolId <= RES_POOLCOLL_HEADLINE9 )
+ nRet = nPoolId + 1 - RES_POOLCOLL_HEADLINE1;
+ else if( nPoolId >= RES_POOLCOLL_TOX_IDX1 &&
+ nPoolId <= RES_POOLCOLL_TOX_IDX3 )
+ nRet = nPoolId + 10 - RES_POOLCOLL_TOX_IDX1;
+ else if( nPoolId >= RES_POOLCOLL_TOX_CNTNT1 &&
+ nPoolId <= RES_POOLCOLL_TOX_CNTNT5 )
+ nRet = nPoolId + 19 - RES_POOLCOLL_TOX_CNTNT1;
+ else if( nPoolId >= RES_POOLCOLL_TOX_CNTNT6 &&
+ nPoolId <= RES_POOLCOLL_TOX_CNTNT9 )
+ nRet = nPoolId + 24 - RES_POOLCOLL_TOX_CNTNT6;
+ else
+ switch( nPoolId )
+ {
+ case RES_POOLCOLL_FOOTNOTE: nRet = 29; break;
+ case RES_POOLCOLL_HEADER: nRet = 31; break;
+ case RES_POOLCOLL_FOOTER: nRet = 32; break;
+ case RES_POOLCOLL_TOX_IDXH: nRet = 33; break;
+ case RES_POOLCOLL_JAKETADRESS: nRet = 36; break;
+ case RES_POOLCOLL_SENDADRESS: nRet = 37; break;
+ case RES_POOLCOLL_ENDNOTE: nRet = 43; break;
+ case RES_POOLCOLL_LISTS_BEGIN: nRet = 47; break;
+ case RES_POOLCOLL_DOC_TITEL: nRet = 62; break;
+ case RES_POOLCOLL_SIGNATURE: nRet = 64; break;
+ case RES_POOLCOLL_TEXT: nRet = 66; break;
+ case RES_POOLCOLL_TEXT_MOVE: nRet = 67; break;
+ case RES_POOLCOLL_DOC_SUBTITEL: nRet = 74; break;
+ case RES_POOLCOLL_TEXT_IDENT: nRet = 77; break;
+
+ case RES_POOLCHR_FOOTNOTE_ANCHOR: nRet = 38; break;
+ case RES_POOLCHR_ENDNOTE_ANCHOR: nRet = 42; break;
+ case RES_POOLCHR_INET_NORMAL: nRet = 85; break;
+ case RES_POOLCHR_INET_VISIT: nRet = 86; break;
+ case RES_POOLCHR_HTML_STRONG: nRet = 87; break;
+ case RES_POOLCHR_HTML_EMPHASIS: nRet = 88; break;
+ case RES_POOLCHR_LINENUM: nRet = 40; break;
+ case RES_POOLCHR_PAGENO: nRet = 41; break;
+ }
+ return nRet;
+}
+
+void WW8WrtStyle::BuildStyleTab()
+{
+ nUsedSlots = WW8_RESERVED_SLOTS; // soviele sind reserviert fuer
+ // Standard und HeadingX u.a.
+ SwFmt* pFmt;
+ USHORT n;
+ const SvPtrarr& rArr = *rWrt.pDoc->GetCharFmts(); // erst CharFmt
+ // das Default-ZeichenStyle ( 0 ) wird nicht mit ausgegeben !
+ for( n = 1; n < rArr.Count(); n++ )
+ {
+ pFmt = (SwFmt*)rArr[n];
+ pFmtA[ Build_GetWWSlot( *pFmt ) ] = pFmt;
+ }
+ const SvPtrarr& rArr2 = *rWrt.pDoc->GetTxtFmtColls(); // dann TxtFmtColls
+ // das Default-TextStyle ( 0 ) wird nicht mit ausgegeben !
+ for( n = 1; n < rArr2.Count(); n++ )
+ {
+ pFmt = (SwFmt*)rArr2[n];
+ pFmtA[ Build_GetWWSlot( *pFmt ) ] = pFmt;
+ }
+}
+
+void WW8WrtStyle::WriteStyle( SvStream& rStrm )
+{
+ WW8Bytes* pO = rWrt.pO;
+
+ short nLen = pO->Count() - 2; // Laenge des Styles
+ BYTE* p = (BYTE*)pO->GetData() + nPOPosStdLen1;
+ ShortToSVBT16( nLen, p ); // nachtragen
+ p = (BYTE*)pO->GetData() + nPOPosStdLen2;
+ ShortToSVBT16( nLen, p ); // dito
+
+ rStrm.Write( pO->GetData(), pO->Count() ); // ins File damit
+ pO->Remove( 0, pO->Count() ); // leeren fuer naechsten
+}
+
+
+void WW8WrtStyle::BuildStd( const String& rName, BOOL bPapFmt, short nWwBase,
+ short nWwNext, USHORT nWwId )
+{
+ BYTE aWW8_STD[ sizeof( WW8_STD ) ];
+ BYTE* pData = aWW8_STD;
+ memset( &aWW8_STD, 0, sizeof( WW8_STD ) );
+
+ UINT16 nBit16 = 0x1000; // fInvalHeight
+ nBit16 |= (0x0FFF & nWwId);
+ Set_UInt16( pData, nBit16 );
+
+ nBit16 = nWwBase << 4; // istdBase
+ nBit16 |= bPapFmt ? 1 : 2; // sgc
+ Set_UInt16( pData, nBit16 );
+
+ nBit16 = nWwNext << 4; // istdNext
+ nBit16 |= bPapFmt ? 2 : 1; // cupx
+ Set_UInt16( pData, nBit16 );
+
+ pData += sizeof( UINT16 ); // bchUpe
+
+ if( rWrt.bWrtWW8 )
+ {
+ //-------- jetzt neu:
+ // ab Ver8 gibts zwei Felder mehr:
+ //UINT16 fAutoRedef : 1; /* auto redefine style when appropriate */
+ //UINT16 fHidden : 1; /* hidden from UI? */
+ //UINT16 : 14; /* unused bits */
+ pData += sizeof( UINT16 );
+ }
+
+
+ UINT16 nLen = ( pData - aWW8_STD ) + 1 +
+ ((rWrt.bWrtWW8 ? 2 : 1 ) * (rName.Len() + 1)); // vorlaeufig
+
+ WW8Bytes* pO = rWrt.pO;
+ nPOPosStdLen1 = pO->Count(); // Adr1 zum nachtragen der Laenge
+
+ SwWW8Writer::InsUInt16( *pO, nLen );
+ pO->Insert( aWW8_STD, ( pData - aWW8_STD ), pO->Count() );
+
+ nPOPosStdLen2 = nPOPosStdLen1 + 8; // Adr2 zum nachtragen von "end of upx"
+
+ // Namen schreiben
+ if( rWrt.bWrtWW8 )
+ {
+ SwWW8Writer::InsUInt16( *pO, rName.Len() ); // Laenge
+ SwWW8Writer::InsAsString16( *pO, rName );
+ }
+ else
+ {
+ pO->Insert( (BYTE)rName.Len(), pO->Count() ); // Laenge
+ SwWW8Writer::InsAsString8( *pO, rName, RTL_TEXTENCODING_MS_1252 );
+ }
+ pO->Insert( (BYTE)0, pO->Count() ); // Trotz P-String 0 am Ende!
+}
+
+void WW8WrtStyle::SkipOdd() // Ruecke zu gerader Adresse vor
+{
+ WW8Bytes* pO = rWrt.pO;
+ if( ( rWrt.pTableStrm->Tell() + pO->Count() ) & 1 ) // Start auf gerader
+ pO->Insert( (BYTE)0, pO->Count() ); // Adresse
+}
+
+void WW8WrtStyle::Set1StyleDefaults( const SwFmt& rFmt, BOOL bPap )
+{
+ // defaults, that differs between WinWord and SO
+ static USHORT __READONLY_DATA aPapIds[] = {
+ RES_PARATR_WIDOWS, RES_PARATR_HYPHENZONE,
+ 0 };
+ static USHORT __READONLY_DATA aChpIds[] = {
+ RES_CHRATR_FONTSIZE, RES_CHRATR_LANGUAGE,
+ 0 };
+
+ for( const USHORT* pIds = bPap ? aPapIds : aChpIds; *pIds; ++pIds )
+ {
+ if( SFX_ITEM_SET != rFmt.GetItemState( *pIds, FALSE ))
+ Out( aWW8AttrFnTab, rFmt.GetAttr( *pIds, TRUE ), rWrt );
+ }
+}
+
+void WW8WrtStyle::BuildUpx( const SwFmt* pFmt, BOOL bPap, USHORT nPos,
+ BOOL bInsDefCharSiz )
+{
+ WW8Bytes* pO = rWrt.pO;
+
+ SkipOdd();
+ UINT16 nLen = ( bPap ) ? 2 : 0; // Default-Laenge
+ USHORT nLenPos = pO->Count(); // Laenge zum Nachtragen
+ // Keinen Pointer merken, da sich bei
+ // _grow der Pointer aendert !
+
+ SwWW8Writer::InsUInt16( *pO, nLen ); // Style-Len
+
+ UINT16 nStartSiz = pO->Count();
+
+ if( bPap )
+ SwWW8Writer::InsUInt16( *pO, nPos); // Style-Nummer
+
+ rWrt.Out_SwFmt( *pFmt, bPap, !bPap );
+
+ if( bInsDefCharSiz ) // nicht abgeleitet v. anderem Style
+ Set1StyleDefaults( *pFmt, bPap );
+
+ nLen = pO->Count() - nStartSiz;
+ BYTE* pUpxLen = (BYTE*)pO->GetData() + nLenPos; // Laenge zum Nachtragen
+ ShortToSVBT16( nLen, pUpxLen ); // Default-Laenge eintragen
+}
+
+// Out1Style geht fuer TxtFmtColls und CharFmts
+void WW8WrtStyle::Out1Style( SwFmt* pFmt, USHORT nPos )
+{
+ if( pFmt )
+ {
+ BOOL bFmtColl = pFmt->Which() == RES_TXTFMTCOLL ||
+ pFmt->Which() == RES_CONDTXTFMTCOLL;
+ short nWwBase = 0xfff; // Default: none
+
+ if( !pFmt->IsDefault() ) // Abgeleitet von ?
+ nWwBase = Sty_GetWWSlot( *pFmt->DerivedFrom() );
+
+ SwFmt* pNext;
+ if( bFmtColl )
+ pNext = &((SwTxtFmtColl*)pFmt)->GetNextTxtFmtColl();
+ else
+ pNext = pFmt; // CharFmt: Naechstes CharFmt == Selbes
+
+ short nWwNext = Sty_GetWWSlot( *pNext );
+
+ BuildStd( pFmt->GetName(), bFmtColl, nWwBase, nWwNext,
+ GetWWId( *pFmt ) );
+ if( bFmtColl )
+ BuildUpx( pFmt, TRUE, nPos, nWwBase==0xfff ); // UPX.papx
+ BuildUpx( pFmt, FALSE, nPos, bFmtColl && nWwBase==0xfff ); // UPX.chpx
+
+ SkipOdd();
+ WriteStyle( *rWrt.pTableStrm );
+ }
+ else if( nPos == 10 ) // Default Char-Style ( nur WW )
+ {
+ if( rWrt.bWrtWW8 )
+ {
+ static BYTE __READONLY_DATA aDefCharSty[] = {
+ 0x42, 0x00,
+ 0x41, 0x40, 0xF2, 0xFF, 0xA1, 0x00, 0x42, 0x00,
+ 0x00, 0x00, 0x19, 0x00, 0x41, 0x00, 0x62, 0x00,
+ 0x73, 0x00, 0x61, 0x00, 0x74, 0x00, 0x7A, 0x00,
+ 0x2D, 0x00, 0x53, 0x00, 0x74, 0x00, 0x61, 0x00,
+ 0x6E, 0x00, 0x64, 0x00, 0x61, 0x00, 0x72, 0x00,
+ 0x64, 0x00, 0x73, 0x00, 0x63, 0x00, 0x68, 0x00,
+ 0x72, 0x00, 0x69, 0x00, 0x66, 0x00, 0x74, 0x00,
+ 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, 0x00, 0x00,
+ 0x00, 0x00 };
+ rWrt.pTableStrm->Write( &aDefCharSty, sizeof( aDefCharSty ) );
+ }
+ else
+ {
+ static BYTE __READONLY_DATA aDefCharSty[] = {
+ 0x26, 0x00,
+ 0x41, 0x40, 0xF2, 0xFF, 0xA1, 0x00, 0x26, 0x00,
+ 0x19, 0x41, 0x62, 0x73, 0x61, 0x74, 0x7A, 0x2D,
+ 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64,
+ 0x73, 0x63, 0x68, 0x72, 0x69, 0x66, 0x74, 0x61,
+ 0x72, 0x74, 0x00, 0x00, 0x00, 0x00 };
+ rWrt.pTableStrm->Write( &aDefCharSty, sizeof( aDefCharSty ) );
+ }
+ }
+/* else if( nPos == WW8_CSTY_FTN ) // Ftn-CharStyle ( nur WW )
+ {
+ if( rWrt.bWrtWW8 )
+ {
+ static BYTE __READONLY_DATA aFtnCharSty[] = {
+ 0x32, 0x00,
+ 0x26, 0x40, 0xA2, 0x00, 0x01, 0x01, 0x32, 0x00,
+ 0x00, 0x00, 0x0F, 0x00, 0x46, 0x00, 0x75, 0x00,
+ 0xDF, 0x00, 0x6E, 0x00, 0x6F, 0x00, 0x74, 0x00,
+ 0x65, 0x00, 0x6E, 0x00, 0x7A, 0x00, 0x65, 0x00,
+ 0x69, 0x00, 0x63, 0x00, 0x68, 0x00, 0x65, 0x00,
+ 0x6E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x48, 0x2A,
+ 0x01, 0x00 };
+ rWrt.pTableStrm->Write( &aFtnCharSty, sizeof( aFtnCharSty ) );
+ }
+ else
+ {
+ static BYTE __READONLY_DATA aFtnCharSty[] = {
+ 0x1E, 0x00,
+ 0x26, 0x40, 0xA2, 0x00, 0x01, 0x01, 0x1E, 0x00,
+ 0x0F, 0x46, 0x75, 0xDF, 0x6E, 0x6F, 0x74, 0x65,
+ 0x6E, 0x7A, 0x65, 0x69, 0x63, 0x68, 0x65, 0x6E,
+ 0x00, 0x00, 0x02, 0x00, 0x68, 0x01 };
+ rWrt.pTableStrm->Write( &aFtnCharSty, sizeof( aFtnCharSty ) );
+ }
+ }
+*/ else
+ {
+ UINT16 n = 0;
+ rWrt.pTableStrm->Write( &n , 2 ); // leerer Style
+ }
+}
+
+void WW8WrtStyle::OutStyleTab()
+{
+ WW8Fib& rFib = *rWrt.pFib;
+
+ ULONG nCurPos = rWrt.pTableStrm->Tell();
+ if( nCurPos & 1 ) // Start auf gerader
+ {
+ *rWrt.pTableStrm << (char)0; // Adresse
+ ++nCurPos;
+ }
+ rWrt.bStyDef = TRUE;
+ rFib.fcStshfOrig = rFib.fcStshf = nCurPos;
+ ULONG nStyAnzPos = nCurPos + 2; // Anzahl wird nachgetragen
+
+ if( rWrt.bWrtWW8 )
+ {
+ static BYTE __READONLY_DATA aStShi[] = {
+ 0x12, 0x00,
+ 0x0F, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x5B, 0x00,
+ 0x0F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00 };
+
+ rWrt.pTableStrm->Write( &aStShi, sizeof( aStShi ) );
+ }
+ else
+ {
+ static BYTE __READONLY_DATA aStShi[] = {
+ 0x0E, 0x00,
+ 0x0F, 0x00, 0x08, 0x00, 0x01, 0x00, 0x4B, 0x00,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00 };
+ rWrt.pTableStrm->Write( &aStShi, sizeof( aStShi ) );
+ }
+
+ USHORT n;
+ for( n = 0; n < nUsedSlots; n++ )
+ Out1Style( pFmtA[n], n );
+
+ rFib.lcbStshfOrig = rFib.lcbStshf = rWrt.pTableStrm->Tell() - rFib.fcStshf;
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, nStyAnzPos, nUsedSlots );
+ rWrt.bStyDef = FALSE;
+}
+
+
+/* */
+
+//---------------------------------------------------------------------------
+// Fonts
+//---------------------------------------------------------------------------
+
+USHORT SwWW8Writer::GetId( const SvxFontItem& rFont ) const
+{
+ const SfxItemPool& rPool = pDoc->GetAttrPool();
+ const SvxFontItem* pFont = (const SvxFontItem*)GetDfltAttr( RES_CHRATR_FONT );
+ USHORT n = 3;
+ if( rFont == *pFont )
+ return n;
+
+ ++n;
+ if( 0 != ( pFont = (const SvxFontItem*)rPool.GetPoolDefaultItem(
+ RES_CHRATR_FONT )))
+ {
+ if( rFont == *pFont )
+ return n;
+ ++n;
+ }
+
+ USHORT nMaxItem = rPool.GetItemCount( RES_CHRATR_FONT );
+ for( USHORT nGet = 0; nGet < nMaxItem; ++nGet )
+ if( 0 != (pFont = (const SvxFontItem*)rPool.GetItem(
+ RES_CHRATR_FONT, nGet )) )
+ {
+ if( rFont == *pFont )
+ return n;
+ ++n;
+ }
+
+ ASSERT( !this, "Font nicht in der Tabelle" );
+ return 0;
+}
+
+USHORT SwWW8Writer::GetId( const Font& rFont ) const
+{
+ return GetId( SvxFontItem( rFont.GetFamily(), rFont.GetName(),
+ rFont.GetStyleName(), rFont.GetPitch(),
+ rFont.GetCharSet() ) );
+}
+
+static void _OutFont( SwWW8Writer& rWrt, const SvxFontItem& rFont )
+{
+ BYTE aWW8_FFN[ 6 ];
+ memset( aWW8_FFN, 0, 6 ); // 6 == len of fixed Part
+ if( rWrt.bWrtWW8 )
+ aWW8_FFN[0] = (BYTE)( 6 - 1 + 0x22 + ( 2 *
+ ( 1 + rFont.GetFamilyName().Len() ) ));
+ else
+ aWW8_FFN[0] = (BYTE)( 6 - 1 + 1 + rFont.GetFamilyName().Len() );
+
+ BYTE aB = 0;
+ switch( rFont.GetPitch() )
+ {
+ case PITCH_VARIABLE: aB |= 2; break; // aF.prg = 2
+ case PITCH_FIXED: aB |= 1; break;
+ default: break; // aF.prg = 0 : DEFAULT_PITCH (windows.h)
+ }
+ aB |= 1 << 2; // aF.fTrueType = 1; weiss ich nicht besser;
+
+ switch( rFont.GetFamily() )
+ {
+ case FAMILY_ROMAN: aB |= 1 << 4; break; // aF.ff = 1;
+ case FAMILY_SWISS: aB |= 2 << 4; break; // aF.ff = 2;
+ case FAMILY_MODERN: aB |= 3 << 4; break; // aF.ff = 3;
+ case FAMILY_SCRIPT: aB |= 4 << 4; break; // aF.ff = 4;
+ case FAMILY_DECORATIVE: aB |= 5 << 4; break; // aF.ff = 5;
+ default: break; // aF.ff = 0; FF_DONTCARE (windows.h)
+ }
+ aWW8_FFN[1] = aB;
+
+ ShortToSVBT16( 400, &aWW8_FFN[2] ); // weiss ich nicht besser
+ // 400 == FW_NORMAL (windows.h)
+ if( RTL_TEXTENCODING_SYMBOL == rFont.GetCharSet() )
+ aWW8_FFN[4] = 2;
+ else
+ aWW8_FFN[4] = 0;
+
+ rWrt.pTableStrm->Write( aWW8_FFN, 6 ); // fixed part
+ if( rWrt.bWrtWW8 )
+ {
+ // ab Ver8 sind folgende beiden Felder eingeschoben,
+ // werden von uns ignoriert.
+ //char panose[ 10 ]; // 0x6 PANOSE
+ //char fs[ 24 ]; // 0x10 FONTSIGNATURE
+ SwWW8Writer::FillCount( *rWrt.pTableStrm, 0x22 );
+ SwWW8Writer::WriteString16( *rWrt.pTableStrm, rFont.GetFamilyName(),
+ TRUE );
+ }
+ else
+ SwWW8Writer::WriteString8( *rWrt.pTableStrm, rFont.GetFamilyName(),
+ TRUE, RTL_TEXTENCODING_MS_1252 );
+}
+
+void SwWW8Writer::OutFontTab( WW8Fib& rFib )
+{
+ rFib.fcSttbfffn = pTableStrm->Tell();
+ if( bWrtWW8 )
+ {
+ SwWW8Writer::WriteLong( *pTableStrm, 0 ); // hier wird Laenge nachgetragen ( cbFFN )
+
+ // ab Ver8 sind folgende beiden Felder eingeschoben,
+ // werden von uns ignoriert.
+ //char panose[ 10 ]; // 0x6 PANOSE
+ //char fs[ 24 ]; // 0x10 FONTSIGNATURE
+
+ static BYTE __READONLY_DATA aBase_10[] = {
+ 0x47,0x16,0x90,0x01,0x00,0x00 };
+ static BYTE __READONLY_DATA aBase_11[] = {
+ 'T',0,'i',0,'m',0,'e',0,'s',0,' ',0,
+ 'N',0,'e',0,'w',0,' ',0,'R',0,'o',0,'m',0,'a',0,'n',0,0,0 };
+
+ static BYTE __READONLY_DATA aBase_20[] = {
+ 0x35,0x16,0x90,0x01,0x02,0x00 };
+ static BYTE __READONLY_DATA aBase_21[] = {
+ 'S',0,'y',0,'m',0,'b',0,'o',0,'l',0,0,0 };
+
+ static BYTE __READONLY_DATA aBase_30[] = {
+ 0x33,0x26,0x90,0x01,0x00,0x00 };
+ static BYTE __READONLY_DATA aBase_31[] = {
+ 'A',0,'r',0,'i',0,'a',0,'l',0,0,0 };
+
+ // Base part
+ pTableStrm->Write( aBase_10, sizeof( aBase_10 ) );
+ SwWW8Writer::FillCount( *pTableStrm, 0x22 );
+ pTableStrm->Write( aBase_11, sizeof( aBase_11 ) );
+
+ pTableStrm->Write( aBase_20, sizeof( aBase_20 ) );
+ SwWW8Writer::FillCount( *pTableStrm, 0x22 );
+ pTableStrm->Write( aBase_21, sizeof( aBase_21 ) );
+
+ pTableStrm->Write( aBase_30, sizeof( aBase_30 ) );
+ SwWW8Writer::FillCount( *pTableStrm, 0x22 );
+ pTableStrm->Write( aBase_31, sizeof( aBase_31 ) );
+ }
+ else
+ {
+ SwWW8Writer::WriteShort( *pTableStrm, 0 ); // hier wird Laenge nachgetragen ( cbFFN )
+
+ static BYTE __READONLY_DATA aBase[] = {
+ 0x15,0x16,0x90,0x01,0x00,0x00,'T','i','m','e','s',' ',
+ 'N','e','w',' ','R','o','m','a','n',0,
+ 0x0c,0x16,0x90,0x01,0x02,0x00,'S','y','m','b','o','l',0,
+ 0x0b,0x26,0x90,0x01,0x00,0x00,'A','r','i','a','l',0 };
+ pTableStrm->Write( aBase, sizeof( aBase ) ); // Base part
+ }
+
+ const SfxItemPool& rPool = pDoc->GetAttrPool();
+ const SvxFontItem* pFont = (const SvxFontItem*)GetDfltAttr( RES_CHRATR_FONT );
+ const SvxFontItem* pDfltFont = (const SvxFontItem*)rPool.GetPoolDefaultItem(
+ RES_CHRATR_FONT );
+
+ _OutFont( *this, *pFont );
+ USHORT nFontCount = 4;
+
+ if( pDfltFont )
+ {
+ _OutFont( *this, *pDfltFont );
+ ++nFontCount;
+ }
+
+ USHORT nMaxItem = rPool.GetItemCount( RES_CHRATR_FONT );
+ for( USHORT nGet = 0; nGet < nMaxItem; ++nGet )
+ {
+ pFont = (const SvxFontItem*)rPool.GetItem( RES_CHRATR_FONT, nGet );
+ if( pFont )
+ {
+ _OutFont( *this, *pFont );
+ ++nFontCount;
+ }
+ }
+ rFib.lcbSttbfffn = pTableStrm->Tell() - rFib.fcSttbfffn;
+ if( bWrtWW8 )
+ SwWW8Writer::WriteLong( *pTableStrm, rFib.fcSttbfffn, nFontCount );
+ else
+ SwWW8Writer::WriteShort( *pTableStrm, rFib.fcSttbfffn,
+ (INT16)pFib->lcbSttbfffn );
+}
+
+
+/* */
+
+WW8_WrPlc0::WW8_WrPlc0( ULONG nOffset )
+ : aPos( 4, 4 ), nOfs( nOffset )
+{
+}
+
+void WW8_WrPlc0::Append( ULONG nStartCpOrFc )
+{
+ aPos.Insert( nStartCpOrFc - nOfs, aPos.Count() );
+}
+
+void WW8_WrPlc0::Write( SvStream& rStrm )
+{
+ USHORT nLen = aPos.Count();
+ for( USHORT i = 0; i < nLen; ++i )
+ {
+ SVBT32 nP;
+ LongToSVBT32( aPos[i], nP );
+ rStrm.Write( nP, 4 );
+ }
+}
+
+//------------------------------------------------------------------------------
+
+/* */
+//------------------------------------------------------------------------------
+// class WW8_WrPlcSepx : Uebersetzung PageDescs in Sections
+// behandelt auch Header und Footer
+//------------------------------------------------------------------------------
+
+WW8_WrPlcSepx::WW8_WrPlcSepx()
+ : pTxtPos( 0 ), aCps( 4, 4 ), aSects( 4, 4 ), pAttrs( 0 )
+{
+}
+
+WW8_WrPlcSepx::~WW8_WrPlcSepx()
+{
+ USHORT nLen = aSects.Count();
+ if( pAttrs )
+ {
+ while( nLen )
+ {
+ delete[] pAttrs[ --nLen ].pData;
+ }
+ delete[] pAttrs;
+ }
+ delete pTxtPos;
+}
+
+void WW8_WrPlcSepx::AppendSep( WW8_CP nStartCp,
+ const SwPageDesc* pPd,
+ const SwSectionFmt* pSectionFmt,
+ ULONG nLnNumRestartNo )
+{
+ aCps.Insert( nStartCp, aCps.Count() );
+ aSects.Insert( WW8_SepInfo( pPd, pSectionFmt, nLnNumRestartNo ),
+ aSects.Count() );
+}
+
+void WW8_WrPlcSepx::AppendSep( WW8_CP nStartCp, const SwFmtPageDesc& rPD,
+ const SwNode& rNd, ULONG nLnNumRestartNo )
+{
+ aCps.Insert( nStartCp, aCps.Count() );
+ WW8_SepInfo aI( rPD.GetPageDesc(), 0, nLnNumRestartNo );
+ aI.nPgRestartNo = rPD.GetNumOffset();
+ aI.pPDNd = &rNd;
+ aSects.Insert( aI, aSects.Count() );
+}
+
+// WW8_WrPlcSepx::SetNum() setzt in jeder Section beim 1. Aufruf den
+// Num-Pointer, alle folgenden Aufrufe werden ignoriert. Damit wird
+// die erste Aufzaehlung einer Section uebernommen.
+
+void WW8_WrPlcSepx::SetNum( const SwTxtNode* pNumNd )
+{
+ WW8_SepInfo& rInfo = aSects[ aSects.Count() - 1 ];
+ if( !rInfo.pNumNd ) // noch nicht belegt
+ rInfo.pNumNd = pNumNd;
+}
+
+void WW8_WrPlcSepx::WriteOlst( SwWW8Writer& rWrt, USHORT i )
+{
+ if( !rWrt.bWrtWW8 )
+ {
+ const SwNumRule* pRule;
+ const SwTxtNode* pNd = aSects[i].pNumNd;
+ if( pNd && 0 != ( pRule = pNd->GetNumRule() ))
+ rWrt.Out_Olst( *pRule );
+ }
+}
+
+
+void WW8_WrPlcSepx::WriteFtnEndTxt( SwWW8Writer& rWrt, ULONG nCpStt )
+{
+ BYTE nInfoFlags = 0;
+ const SwFtnInfo& rInfo = rWrt.pDoc->GetFtnInfo();
+ if( rInfo.aErgoSum.Len() ) nInfoFlags |= 0x02;
+ if( rInfo.aQuoVadis.Len() ) nInfoFlags |= 0x04;
+
+ BYTE nEmptyStt = rWrt.bWrtWW8 ? 0 : 6;
+ if( nInfoFlags )
+ {
+ if( rWrt.bWrtWW8 )
+ pTxtPos->Append( nCpStt ); // empty footenote separator
+
+ if( 0x02 & nInfoFlags ) // Footenote contiunation separator
+ {
+ pTxtPos->Append( nCpStt );
+ rWrt.WriteStringAsPara( rInfo.aErgoSum );
+ rWrt.WriteStringAsPara( aEmptyStr );
+ nCpStt = rWrt.Fc2Cp( rWrt.Strm().Tell() );
+ }
+ else if( rWrt.bWrtWW8 )
+ pTxtPos->Append( nCpStt );
+
+ if( 0x04 & nInfoFlags ) // Footenote contiunation notice
+ {
+ pTxtPos->Append( nCpStt );
+ rWrt.WriteStringAsPara( rInfo.aQuoVadis );
+ rWrt.WriteStringAsPara( aEmptyStr );
+ nCpStt = rWrt.Fc2Cp( rWrt.Strm().Tell() );
+ }
+ else if( rWrt.bWrtWW8 )
+ pTxtPos->Append( nCpStt );
+
+ if( rWrt.bWrtWW8 )
+ nEmptyStt = 3;
+ else
+ rWrt.pDop->grpfIhdt = nInfoFlags;
+ }
+
+ while( 6 > nEmptyStt++ )
+ pTxtPos->Append( nCpStt );
+
+ // gleich die Flags am Dop setzen
+ WW8Dop& rDop = *rWrt.pDop;
+ // Footnote Info
+ switch( rInfo.eNum )
+ {
+ case FTNNUM_PAGE: rDop.rncFtn = 2; break;
+ case FTNNUM_CHAPTER: rDop.rncFtn = 1; break;
+ default: rDop.rncFtn = 0; break;
+ } // rncFtn
+ rDop.nfcFtnRef = SwWW8Writer::GetNumId( rInfo.aFmt.eType );
+ rDop.nFtn = rInfo.nFtnOffset + 1;
+ rDop.fpc = rWrt.bFtnAtTxtEnd ? 2 : 1;
+
+ // Endnote Info
+ rDop.rncEdn = 0; // rncEdn: Don't Restart
+ const SwEndNoteInfo& rEndInfo = rWrt.pDoc->GetEndNoteInfo();
+ rDop.nfcEdnRef = SwWW8Writer::GetNumId( rEndInfo.aFmt.eType );
+ rDop.nEdn = rEndInfo.nFtnOffset + 1;
+ rDop.epc = rWrt.bEndAtTxtEnd ? 3 : 0;
+}
+
+
+void WW8_WrPlcSepx::SetHeaderFlag( BYTE& rHeadFootFlags, const SwFmt& rFmt,
+ BYTE nFlag )
+{
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rFmt.GetItemState( RES_HEADER, TRUE, &pItem )
+ && ((SwFmtHeader*)pItem)->IsActive() &&
+ ((SwFmtHeader*)pItem)->GetHeaderFmt() )
+ rHeadFootFlags |= nFlag;
+}
+void WW8_WrPlcSepx::SetFooterFlag( BYTE& rHeadFootFlags, const SwFmt& rFmt,
+ BYTE nFlag )
+{
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rFmt.GetItemState( RES_FOOTER, TRUE, &pItem )
+ && ((SwFmtFooter*)pItem)->IsActive() &&
+ ((SwFmtFooter*)pItem)->GetFooterFmt() )
+ rHeadFootFlags |= nFlag;
+}
+
+void WW8_WrPlcSepx::OutHeader( SwWW8Writer& rWrt, const SwFmt& rFmt,
+ ULONG& rCpPos, BYTE nHFFlags, BYTE nFlag )
+{
+ if( nFlag & nHFFlags )
+ {
+ const SwFmtHeader& rHd = rFmt.GetHeader();
+ ASSERT( rHd.GetHeaderFmt(), "KopfText nicht richtig da" );
+ const SwFmtCntnt& rCntnt = rHd.GetHeaderFmt()->GetCntnt();
+ pTxtPos->Append( rCpPos );
+ rWrt.WriteKFTxt1( rCntnt );
+ rWrt.WriteStringAsPara( aEmptyStr ); // CR ans Ende ( sonst mault WW )
+ rCpPos = rWrt.Fc2Cp( rWrt.Strm().Tell() );
+ }
+ else if( rWrt.bWrtWW8 )
+ pTxtPos->Append( rCpPos );
+}
+void WW8_WrPlcSepx::OutFooter( SwWW8Writer& rWrt, const SwFmt& rFmt,
+ ULONG& rCpPos, BYTE nHFFlags, BYTE nFlag )
+{
+ if( nFlag & nHFFlags )
+ {
+ const SwFmtFooter& rFt = rFmt.GetFooter();
+ ASSERT( rFt.GetFooterFmt(), "KopfText nicht richtig da" );
+ const SwFmtCntnt& rCntnt = rFt.GetFooterFmt()->GetCntnt();
+ pTxtPos->Append( rCpPos );
+ rWrt.WriteKFTxt1( rCntnt );
+ rWrt.WriteStringAsPara( aEmptyStr ); // CR ans Ende ( sonst mault WW )
+ rCpPos = rWrt.Fc2Cp( rWrt.Strm().Tell() );
+ }
+ else if( rWrt.bWrtWW8 )
+ pTxtPos->Append( rCpPos );
+}
+
+void WW8_WrPlcSepx::CheckForFacinPg( SwWW8Writer& rWrt ) const
+{
+ // 2 Werte werden gesetzt
+ // Dop.fFacingPages == Kopf-/Fusszeilen unterschiedlich
+ // Dop.fSwapBordersFacingPgs == gespiegelte Raender
+ for( USHORT i = 0, nEnde = 0; i < aSects.Count(); ++i )
+ {
+ WW8_SepInfo& rSepInfo = aSects[i];
+ if( !rSepInfo.pSectionFmt )
+ {
+ const SwPageDesc* pPd = rSepInfo.pPageDesc;
+ if( pPd->GetFollow() && pPd != pPd->GetFollow() &&
+ pPd->GetFollow()->GetFollow() == pPd->GetFollow() &&
+ rSepInfo.pPDNd &&
+ pPd->IsFollowNextPageOfNode( *rSepInfo.pPDNd ) )
+ // das ist also 1.Seite und nachfolgende, also nur den
+ // follow beachten
+ pPd = pPd->GetFollow();
+
+ // left-/right chain of pagedescs ?
+ else if( !( 1 & nEnde ) &&
+ pPd->GetFollow() && pPd != pPd->GetFollow() &&
+ pPd->GetFollow()->GetFollow() == pPd &&
+ (( PD_LEFT == ( PD_ALL & pPd->ReadUseOn() ) &&
+ PD_RIGHT == ( PD_ALL & pPd->GetFollow()->ReadUseOn() )) ||
+ ( PD_RIGHT == ( PD_ALL & pPd->ReadUseOn() ) &&
+ PD_LEFT == ( PD_ALL & pPd->GetFollow()->ReadUseOn() )) ))
+ {
+ rWrt.pDop->fFacingPages = rWrt.pDop->fMirrorMargins = TRUE;
+ nEnde |= 1;
+ }
+
+ if( !( 1 & nEnde ) &&
+ ( !pPd->IsHeaderShared() || !pPd->IsFooterShared() ))
+ {
+ rWrt.pDop->fFacingPages = TRUE;
+ nEnde |= 1;
+ }
+ if( !( 2 & nEnde ) &&
+ PD_MIRROR == ( PD_MIRROR & pPd->ReadUseOn() ))
+ {
+ rWrt.pDop->fSwapBordersFacingPgs = rWrt.pDop->fMirrorMargins = TRUE;
+ nEnde |= 2;
+ }
+
+ if( 3 == nEnde )
+ break; // weiter brauchen wird nicht
+ }
+ }
+}
+
+
+int WW8_WrPlcSepx::HasBorderItem( const SwFmt& rFmt )
+{
+ const SfxPoolItem* pItem;
+ return SFX_ITEM_SET == rFmt.GetItemState( RES_BOX,TRUE, &pItem ) &&
+ ( ((SvxBoxItem*)pItem)->GetTop() ||
+ ((SvxBoxItem*)pItem)->GetBottom() ||
+ ((SvxBoxItem*)pItem)->GetLeft() ||
+ ((SvxBoxItem*)pItem)->GetRight() );
+}
+
+void WW8_WrPlcSepx::WriteKFTxt( SwWW8Writer& rWrt )
+{
+ pAttrs = new WW8_PdAttrDesc[ aSects.Count() ];
+ WW8Bytes* pO = rWrt.pO;
+ ULONG nCpStart = rWrt.Fc2Cp( rWrt.Strm().Tell() );
+ BOOL bOldPg = rWrt.bOutPageDescs;
+ rWrt.bOutPageDescs = TRUE;
+
+ ASSERT( !pTxtPos, "wer hat den Pointer gesetzt?" );
+ pTxtPos = new WW8_WrPlc0( nCpStart );
+
+ WriteFtnEndTxt( rWrt, nCpStart );
+ CheckForFacinPg( rWrt );
+
+ WW8Bytes aLineNum;
+ const SwLineNumberInfo& rLnNumInfo = rWrt.pDoc->GetLineNumberInfo();
+ if( rLnNumInfo.IsPaintLineNumbers() )
+ {
+ // sprmSNLnnMod - activate Line Numbering and define Modulo
+ if( rWrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( aLineNum, 0x5015 );
+ else
+ aLineNum.Insert( 154, aLineNum.Count() );
+ SwWW8Writer::InsUInt16( aLineNum, (UINT16)rLnNumInfo.GetCountBy() );
+
+ // sprmSDxaLnn - xPosition of Line Number
+ if( rWrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( aLineNum, 0x9016 );
+ else
+ aLineNum.Insert( 155, aLineNum.Count() );
+ SwWW8Writer::InsUInt16( aLineNum, (UINT16)rLnNumInfo.GetPosFromLeft() );
+
+ //
+ }
+
+ USHORT i;
+ for( i = 0; i < aSects.Count(); ++i )
+ {
+ WW8_PdAttrDesc* pA = pAttrs + i;
+ WW8_SepInfo& rSepInfo = aSects[i];
+ const SwPageDesc* pPd = rSepInfo.pPageDesc;
+
+ if( rSepInfo.pSectionFmt && !pPd )
+ pPd = &rWrt.pDoc->GetPageDesc(0);
+
+ rWrt.pAktPageDesc = pPd;
+ pA->nSepxFcPos = 0xffffffff; // Default: none
+
+ if( !pPd )
+ {
+ pA->pData = 0;
+ pA->nLen = 0;
+ continue;
+ }
+
+ pO->Remove( 0, pO->Count() ); // leeren
+ rWrt.bOutPageDescs = TRUE;
+
+
+ if( aLineNum.Count() )
+ {
+ pO->Insert( &aLineNum, pO->Count() );
+
+ // sprmSLnc - restart number: 0 per page, 1 per section, 2 never restart
+ if( rSepInfo.nLnNumRestartNo || !rLnNumInfo.IsRestartEachPage() )
+ {
+ if( rWrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( *pO, 0x3013 );
+ else
+ pO->Insert( 152, pO->Count() );
+ pO->Insert( rSepInfo.nLnNumRestartNo ? 1 : 2, pO->Count() );
+ }
+
+ // sprmSLnnMin - Restart the Line Number with given value
+ if( rSepInfo.nLnNumRestartNo )
+ {
+ if( rWrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( *pO, 0x501B );
+ else
+ pO->Insert( 160, pO->Count() );
+ SwWW8Writer::InsUInt16( *pO, (UINT16)rSepInfo.nLnNumRestartNo - 1 );
+ }
+ }
+
+
+ /* sprmSBkc, break code: 0 No break, 1 New column
+ 2 New page, 3 Even page, 4 Odd page
+ */
+ BYTE nBreakCode = 2; // default neue Seite beginnen
+ BOOL bOutPgDscSet = TRUE, bLeftRightPgChain = FALSE;
+ const SwFrmFmt* pPdFmt = &pPd->GetMaster();
+ const SwFrmFmt* pPdFirstPgFmt = pPdFmt;
+ if( rSepInfo.pSectionFmt )
+ {
+ // ist pSectionFmt gesetzt, dann gab es einen SectionNode
+ // gueltiger Pointer -> Section beginnt,
+ // 0xfff -> Section wird beendet
+ nBreakCode = 0; // fortlaufender Abschnitt
+ if( (SwSectionFmt*)0xFFFFFFFF != rSepInfo.pSectionFmt )
+ {
+ // Itemset erzeugen, das das PgDesk-AttrSet beerbt:
+ // als Nachkomme wird bei 'deep'-Out_SfxItemSet
+ // auch der Vorfahr abgeklappert
+ const SfxItemSet* pPdSet = &pPdFmt->GetAttrSet();
+ SfxItemSet aSet( *pPdSet->GetPool(), pPdSet->GetRanges() );
+ aSet.SetParent( pPdSet );
+
+ // am Nachkommen NUR die Spaltigkeit gemaess Sect-Attr. umsetzen
+ aSet.Put( rSepInfo.pSectionFmt->GetAttr( RES_COL ) );
+
+ // und raus damit ins WW-File
+ const SfxItemSet* pOldI = rWrt.pISet;
+ rWrt.pISet = &aSet;
+ Out_SfxItemSet( aWW8AttrFnTab, rWrt, aSet, TRUE );
+ rWrt.pISet = pOldI;
+
+ bOutPgDscSet = FALSE;
+ }
+ }
+
+ if( bOutPgDscSet )
+ {
+ // es ist ein Follow gesetzt und dieser zeigt nicht auf sich
+ // selbst, so liegt eine Seitenverkettung vor.
+ // Falls damit eine "Erste Seite" simuliert werden soll, so
+ // koennen wir das auch als solches schreiben.
+ // Anders sieht es mit Links/Rechts wechseln aus. Dafuer muss
+ // erkannt werden, wo der Seitenwechsel statt findet. Hier ist
+ // es aber dafuer zuspaet!
+ if( pPd->GetFollow() && pPd != pPd->GetFollow() &&
+ pPd->GetFollow()->GetFollow() == pPd->GetFollow() &&
+ rSepInfo.pPDNd &&
+ pPd->IsFollowNextPageOfNode( *rSepInfo.pPDNd ) )
+ {
+ if( rSepInfo.pPDNd )
+ pPdFirstPgFmt = pPd->GetPageFmtOfNode( *rSepInfo.pPDNd );
+ else
+ pPdFirstPgFmt = &pPd->GetMaster();
+
+ rWrt.pAktPageDesc = pPd = pPd->GetFollow();
+ pPdFmt = &pPd->GetMaster();
+
+ // sprmSFTitlePage
+ if( rWrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( *pO, 0x300A );
+ else
+ pO->Insert( 143, pO->Count() );
+ pO->Insert( 1, pO->Count() );
+ }
+
+ const SfxItemSet* pOldI = rWrt.pISet;
+
+ if( rWrt.bWrtWW8 ) // Seitenumrandung schreiben
+ {
+ USHORT nPgBorder = HasBorderItem( *pPdFmt ) ? 0 : USHRT_MAX;
+ if( pPdFmt != pPdFirstPgFmt )
+ {
+ if( HasBorderItem( *pPdFirstPgFmt ))
+ {
+ if( USHRT_MAX == nPgBorder )
+ {
+ nPgBorder = 1;
+ // nur die 1. Seite umrandet -> BoxItem aus dem
+ // richtigen Format besorgen
+ rWrt.pISet = &pPdFirstPgFmt->GetAttrSet();
+ Out( aWW8AttrFnTab, pPdFirstPgFmt->GetAttr(
+ RES_BOX ), rWrt );
+ }
+ }
+ else if( !nPgBorder )
+ nPgBorder = 2;
+ }
+
+ if( USHRT_MAX != nPgBorder )
+ {
+ // Flag und das Border Attribut schreiben
+ SwWW8Writer::InsUInt16( *pO, 0x522F );
+ SwWW8Writer::InsUInt16( *pO, nPgBorder );
+ }
+ }
+
+ const SfxPoolItem* pItem;
+ if( pPdFmt != pPdFirstPgFmt && SFX_ITEM_SET ==
+ pPdFirstPgFmt->GetItemState( RES_PAPER_BIN, TRUE, &pItem ))
+ {
+ rWrt.pISet = &pPdFirstPgFmt->GetAttrSet();
+ rWrt.bOutFirstPage = TRUE;
+ Out( aWW8AttrFnTab, *pItem, rWrt );
+ rWrt.bOutFirstPage = FALSE;
+ }
+
+
+ // left-/right chain of pagedescs ?
+ if( pPd->GetFollow() && pPd != pPd->GetFollow() &&
+ pPd->GetFollow()->GetFollow() == pPd &&
+ (( PD_LEFT == ( PD_ALL & pPd->ReadUseOn() ) &&
+ PD_RIGHT == ( PD_ALL & pPd->GetFollow()->ReadUseOn() )) ||
+ ( PD_RIGHT == ( PD_ALL & pPd->ReadUseOn() ) &&
+ PD_LEFT == ( PD_ALL & pPd->GetFollow()->ReadUseOn() )) ))
+ {
+ bLeftRightPgChain = TRUE;
+
+ // welches ist der Bezugspunkt ????? (links oder rechts?)
+ // annahme die rechte Seite!
+ if( PD_LEFT == ( PD_ALL & pPd->ReadUseOn() ))
+ {
+ nBreakCode = 3;
+ pPd = pPd->GetFollow();
+ pPdFmt = &pPd->GetMaster();
+ }
+ else
+ nBreakCode = 4;
+ }
+
+ rWrt.pISet = &pPdFmt->GetAttrSet();
+ Out_SfxItemSet( aWW8AttrFnTab, rWrt, pPdFmt->GetAttrSet(),
+ TRUE, FALSE );
+ rWrt.pISet = pOldI;
+
+ // dann noch die restlichen Einstellungen aus dem PageDesc
+
+ // sprmSNfcPgn
+ BYTE nb = SwWW8Writer::GetNumId( pPd->GetNumType().eType );
+ if( rWrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( *pO, 0x300E );
+ else
+ pO->Insert( 147, pO->Count() );
+ pO->Insert( nb, pO->Count() );
+
+//??? const SwPageFtnInfo& rFtnInfo = pPd->GetFtnInfo();
+
+ if( rSepInfo.nPgRestartNo )
+ {
+ // sprmSFPgnRestart
+ if( rWrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( *pO, 0x3011 );
+ else
+ pO->Insert( 150, pO->Count() );
+ pO->Insert( 1, pO->Count() );
+ // sprmSPgnStart
+ if( rWrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( *pO, 0x501C );
+ else
+ pO->Insert( 161, pO->Count() );
+ SwWW8Writer::InsUInt16( *pO, rSepInfo.nPgRestartNo );
+ }
+
+ // werden es nur linke oder nur rechte Seiten?
+ if( 2 == nBreakCode )
+ {
+ if( PD_LEFT == ( PD_ALL & pPd->ReadUseOn() ))
+ nBreakCode = 3;
+ else if( PD_RIGHT == ( PD_ALL & pPd->ReadUseOn() ))
+ nBreakCode = 4;
+ }
+ }
+
+ if( 2 != nBreakCode ) // neue Seite ist default
+ {
+ if( rWrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( *pO, 0x3009 );
+ else
+ pO->Insert( 142, pO->Count() );
+ pO->Insert( nBreakCode, pO->Count() );
+ }
+
+ WriteOlst( rWrt, i );
+
+
+ // Header oder Footer
+ BYTE nHeadFootFlags = 0;
+
+ const SwFrmFmt* pPdLeftFmt = bLeftRightPgChain
+ ? &pPd->GetFollow()->GetMaster()
+ : &pPd->GetLeft();
+
+ SetHeaderFlag( nHeadFootFlags, *pPdFmt, WW8_HEADER_ODD );
+ SetFooterFlag( nHeadFootFlags, *pPdFmt, WW8_FOOTER_ODD );
+ if( !pPd->IsHeaderShared() || bLeftRightPgChain )
+ SetHeaderFlag( nHeadFootFlags, *pPdLeftFmt, WW8_HEADER_EVEN );
+ if( !pPd->IsFooterShared() || bLeftRightPgChain )
+ SetFooterFlag( nHeadFootFlags, *pPdLeftFmt, WW8_FOOTER_EVEN );
+ if( pPdFmt != pPdFirstPgFmt )
+ {
+ // es gibt eine ErsteSeite:
+ SetHeaderFlag( nHeadFootFlags, *pPdFirstPgFmt, WW8_HEADER_FIRST );
+ SetFooterFlag( nHeadFootFlags, *pPdFirstPgFmt, WW8_FOOTER_FIRST );
+ }
+
+ if( nHeadFootFlags && !rWrt.bWrtWW8 )
+ {
+ BYTE nTmpFlags = nHeadFootFlags;
+ if( rWrt.pDop->fFacingPages )
+ {
+ if( !(nTmpFlags & WW8_FOOTER_EVEN) &&
+ (nTmpFlags & WW8_FOOTER_ODD ) )
+ nTmpFlags |= WW8_FOOTER_EVEN;
+
+ if( !(nTmpFlags & WW8_HEADER_EVEN) &&
+ (nTmpFlags & WW8_HEADER_ODD ) )
+ nTmpFlags |= WW8_HEADER_EVEN;
+ }
+
+ // sprmSGprfIhdt, wird nur noch im WW95 benoetigt
+ pO->Insert( 153, pO->Count() );
+ pO->Insert( nTmpFlags, pO->Count() );
+ }
+
+ if( pO->Count() )
+ { // waren Attrs vorhanden ?
+ pA->nLen = pO->Count();
+ pA->pData = new BYTE [pO->Count()];
+ memcpy( pA->pData, pO->GetData(), pO->Count() ); // -> merken
+ pO->Remove( 0, pO->Count() ); // leeren fuer HdFt-Text
+ }
+ else
+ { // keine Attrs da
+ pA->pData = 0;
+ pA->nLen = 0;
+ }
+
+/*
+!!!!!!!!!!!
+ // Umrandungen an Kopf- und Fusstexten muessten etwa so gehen:
+ // Dabei muss etwas wie pOut eingebaut werden,
+ // das bei jeder Spezialtext-Zeile wiederholt wird.
+ const SwFrmFmt* pFFmt = rFt.GetFooterFmt();
+ const SvxBoxItem& rBox = pFFmt->GetBox(FALSE);
+ OutWW8_SwFmtBox1( rWrt.pOut, rBox, FALSE );
+!!!!!!!!!!!
+ Man koennt daraus Absatzattribute machen, die dann bei jedem Absatz
+ beachtet werden. Gilt fuer Hintergrund/Umrandung
+!!!!!!!!!!!
+*/
+
+ ULONG nCpPos = rWrt.Fc2Cp( rWrt.Strm().Tell() );
+ if( !(nHeadFootFlags & WW8_HEADER_EVEN) && rWrt.pDop->fFacingPages )
+ OutHeader( rWrt, *pPdFmt, nCpPos, nHeadFootFlags, WW8_HEADER_ODD );
+ else
+ OutHeader( rWrt, *pPdLeftFmt, nCpPos, nHeadFootFlags, WW8_HEADER_EVEN );
+ OutHeader( rWrt, *pPdFmt, nCpPos, nHeadFootFlags, WW8_HEADER_ODD );
+
+ if( !(nHeadFootFlags & WW8_FOOTER_EVEN) && rWrt.pDop->fFacingPages )
+ OutFooter( rWrt, *pPdFmt, nCpPos, nHeadFootFlags, WW8_FOOTER_ODD );
+ else
+ OutFooter( rWrt, *pPdLeftFmt, nCpPos, nHeadFootFlags, WW8_FOOTER_EVEN );
+ OutFooter( rWrt, *pPdFmt, nCpPos, nHeadFootFlags, WW8_FOOTER_ODD );
+
+ OutHeader( rWrt, *pPdFirstPgFmt, nCpPos, nHeadFootFlags, WW8_HEADER_FIRST );
+ OutFooter( rWrt, *pPdFirstPgFmt, nCpPos, nHeadFootFlags, WW8_FOOTER_FIRST );
+ }
+
+ if( pTxtPos->Count() )
+ {
+ // HdFt vorhanden ?
+ ULONG nCpEnd = rWrt.Fc2Cp( rWrt.Strm().Tell() );
+ pTxtPos->Append( nCpEnd ); // Ende letzter Hd/Ft fuer PlcfHdd
+
+ if( nCpEnd > nCpStart )
+ {
+ ++nCpEnd;
+ pTxtPos->Append( nCpEnd + 1 ); // Ende letzter Hd/Ft fuer PlcfHdd
+
+ rWrt.WriteStringAsPara( aEmptyStr ); // CR ans Ende ( sonst mault WW )
+ }
+ rWrt.pFldHdFt->Finish( nCpEnd, rWrt.pFib->ccpText + rWrt.pFib->ccpFtn );
+ rWrt.pFib->ccpHdr = nCpEnd - nCpStart;
+ }
+ else
+ delete pTxtPos, pTxtPos = 0;
+
+ rWrt.bOutPageDescs = bOldPg;
+}
+
+
+void WW8_WrPlcSepx::WriteSepx( SvStream& rStrm ) const
+{
+ USHORT i;
+ for( i = 0; i < aSects.Count(); i++ ) // ueber alle Sections
+ {
+ WW8_PdAttrDesc* pA = pAttrs + i;
+ if( pA->nLen )
+ {
+ SVBT16 nL;
+ pA->nSepxFcPos = rStrm.Tell();
+ ShortToSVBT16( pA->nLen, nL );
+ rStrm.Write( nL, 2 );
+ rStrm.Write( pA->pData, pA->nLen );
+ }
+ }
+}
+
+
+void WW8_WrPlcSepx::WritePlcSed( SwWW8Writer& rWrt ) const
+{
+ ASSERT( aCps.Count() == aSects.Count() + 1, "WrPlcSepx: DeSync" );
+ ULONG nFcStart = rWrt.pTableStrm->Tell();
+
+ USHORT i;
+ // ( ueber alle Sections )
+ for( i = 0; i <= aSects.Count(); i++ )
+ {
+ UINT32 nP = aCps[i];
+ SVBT32 nPos;
+ LongToSVBT32( nP, nPos );
+ rWrt.pTableStrm->Write( nPos, 4 );
+ }
+
+ static WW8_SED aSed = { 4, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff };
+
+ // ( ueber alle Sections )
+ for( i = 0; i < aSects.Count(); i++ )
+ {
+ WW8_PdAttrDesc* pA = pAttrs + i;
+ LongToSVBT32( pA->nSepxFcPos, aSed.fcSepx ); // Sepx-Pos
+ rWrt.pTableStrm->Write( &aSed, sizeof( aSed ) );
+ }
+ rWrt.pFib->fcPlcfsed = nFcStart;
+ rWrt.pFib->lcbPlcfsed = rWrt.pTableStrm->Tell() - nFcStart;
+}
+
+
+void WW8_WrPlcSepx::WritePlcHdd( SwWW8Writer& rWrt ) const
+{
+ if( pTxtPos && pTxtPos->Count() )
+ {
+ rWrt.pFib->fcPlcfhdd = rWrt.pTableStrm->Tell();
+ pTxtPos->Write( *rWrt.pTableStrm ); // Plc0
+ rWrt.pFib->lcbPlcfhdd = rWrt.pTableStrm->Tell() -
+ rWrt.pFib->fcPlcfhdd;
+ }
+}
+
+void SwWW8Writer::WriteKFTxt1( const SwFmtCntnt& rCntnt )
+{
+ SwNodePtr pNode;
+
+ if( rCntnt.GetCntntIdx() )
+ pNode = pDoc->GetNodes()[ rCntnt.GetCntntIdx()->GetIndex()+1 ];
+ else
+ pNode = 0;
+
+ if( pNode )
+ {
+ // Hole vom Node und vom letzten Node die Position in der Section
+ ULONG nStart = pNode->StartOfSectionIndex()+1;
+ ULONG nEnd = pNode->EndOfSectionIndex();
+
+ // Bereich also gueltiger Node
+ if( nStart < nEnd )
+ {
+ BOOL bOldKF = bOutKF;
+ bOutKF = TRUE;
+ WriteSpecialText( nStart, nEnd, TXT_HDFT );
+ bOutKF = bOldKF;
+ }
+ else
+ pNode = 0;
+ }
+
+ if( !pNode )
+ {
+ // es gibt keine Kopf-/Fusszeile, aber ein CR ist immer noch noetig
+ ASSERT( pNode, "K/F-Text nicht richtig da" );
+ WriteStringAsPara( aEmptyStr ); // CR ans Ende ( sonst mault WW )
+ }
+}
+
+/* */
+//------------------------------------------------------------------------------
+// class WW8_WrPlcFtnEdn : Sammeln der Fuss/Endnoten und Ausgeben der Texte
+// und Plcs am Ende des Docs.
+// WW8_WrPlcFtnEdn ist die Klasse fuer Fuss- und Endnoten
+//------------------------------------------------------------------------------
+WW8_WrPlcSubDoc::WW8_WrPlcSubDoc()
+ : aCps( 0, 16 ), aCntnt( 0, 16 ), pTxtPos( 0 )
+{
+}
+
+WW8_WrPlcSubDoc::~WW8_WrPlcSubDoc()
+{
+ delete pTxtPos;
+}
+
+void WW8_WrPlcFtnEdn::Append( WW8_CP nCp, const SwFmtFtn& rFtn )
+{
+ aCps.Insert( nCp, aCps.Count() );
+ void* p = (void*)&rFtn;
+ aCntnt.Insert( p, aCntnt.Count() );
+}
+
+void WW8_WrPlcPostIt::Append( WW8_CP nCp, const SwPostItField& rPostIt )
+{
+ aCps.Insert( nCp, aCps.Count() );
+ void* p = (void*)&rPostIt;
+ aCntnt.Insert( p, aCntnt.Count() );
+}
+
+void WW8_WrPlcSubDoc::WriteTxt( SwWW8Writer& rWrt, BYTE nTTyp,
+ long& rCount )
+{
+ USHORT nLen = aCntnt.Count();
+ if( nLen )
+ {
+ ULONG nCpStart = rWrt.Fc2Cp( rWrt.Strm().Tell() );
+ pTxtPos = new WW8_WrPlc0( nCpStart );
+ USHORT i;
+
+ switch( nTTyp )
+ {
+ case TXT_ATN:
+ for( i = 0; i < nLen; i++ )
+ {
+ // Anfaenge fuer PlcfAtnTxt
+ pTxtPos->Append( rWrt.Fc2Cp( rWrt.Strm().Tell() ));
+
+ const SwPostItField& rPFld = *(SwPostItField*)aCntnt[ i ];
+ rWrt.WritePostItBegin( rPFld );
+ rWrt.WriteStringAsPara( rPFld.GetTxt() );
+ }
+ break;
+
+ case TXT_TXTBOX:
+ case TXT_HFTXTBOX:
+ for( i = 0; i < nLen; i++ )
+ {
+ // textbox - content
+ WW8_CP nCP = rWrt.Fc2Cp( rWrt.Strm().Tell() );
+ aCps.Insert( nCP, i );
+ pTxtPos->Append( nCP );
+
+ // is it an writer or sdr - textbox?
+ const SdrObject& rObj = *(SdrObject*)aCntnt[ i ];
+ if( rObj.ISA( SdrTextObj ) )
+ rWrt.WriteSdrTextObj( rObj );
+ else
+ {
+ const SwFrmFmt* pFmt = ::FindFrmFmt( &rObj );
+ ASSERT( pFmt, "wo ist das Format geblieben?" );
+
+ const SwNodeIndex* pNdIdx = pFmt->GetCntnt().GetCntntIdx();
+ ASSERT( pNdIdx, "wo ist der StartNode der Textbox?" );
+ rWrt.WriteSpecialText( pNdIdx->GetIndex() + 1,
+ pNdIdx->GetNode().EndOfSectionIndex(),
+ nTTyp );
+ }
+
+ // CR at end of one textbox text ( otherwise WW gpft :-( )
+ rWrt.WriteStringAsPara( aEmptyStr );
+ }
+ break;
+
+ case TXT_EDN:
+ case TXT_FTN:
+ for( i = 0; i < nLen; i++ )
+ {
+ // Anfaenge fuer PlcfFtnTxt/PlcfEdnTxt
+ pTxtPos->Append( rWrt.Fc2Cp( rWrt.Strm().Tell() ));
+
+ // Noten-Inhalt
+ const SwFmtFtn* pFtn = (SwFmtFtn*)aCntnt[ i ];
+ rWrt.WriteFtnBegin( *pFtn );
+ const SwNodeIndex* pIdx = pFtn->GetTxtFtn()->GetStartNode();
+ ASSERT( pIdx, "wo ist der StartNode der Fuss-/EndNote?" );
+ rWrt.WriteSpecialText( pIdx->GetIndex() + 1,
+ pIdx->GetNode().EndOfSectionIndex(),
+ nTTyp );
+ }
+ break;
+
+ default:
+ ASSERT( !this, "was ist das fuer ein SubDocType?" );
+ }
+
+ pTxtPos->Append( rWrt.Fc2Cp( rWrt.Strm().Tell() ));
+ // CR ans Ende ( sonst mault WW )
+ rWrt.WriteStringAsPara( aEmptyStr );
+
+ ULONG nCpEnd = rWrt.Fc2Cp( rWrt.Strm().Tell() );
+ pTxtPos->Append( nCpEnd );
+ rCount = nCpEnd - nCpStart;
+ }
+}
+
+void WW8_WrPlcSubDoc::WritePlc( SwWW8Writer& rWrt, BYTE nTTyp,
+ long& rTxtStart, long& rTxtCount,
+ long& rRefStart, long& rRefCount ) const
+{
+ ULONG nFcStart = rWrt.pTableStrm->Tell();
+ USHORT nLen = aCps.Count();
+ if( nLen )
+ {
+ ASSERT( aCps.Count() + 2 == pTxtPos->Count(), "WritePlc: DeSync" );
+
+ SvStringsSortDtor aStrArr( 0, 4 );
+ WW8Fib& rFib = *rWrt.pFib; // n+1-te CP-Pos nach Handbuch
+ USHORT i;
+ BOOL bWriteCP = TRUE;
+
+ switch( nTTyp )
+ {
+ case TXT_ATN:
+ // then write first the GrpXstAtnOwners
+ for( i = 0; i < nLen; ++i )
+ {
+ const SwPostItField& rPFld = *(SwPostItField*)aCntnt[ i ];
+ String* p = new String( rPFld.GetPar1() );
+ if( !aStrArr.Insert( p ))
+ delete p;
+ }
+
+
+ if( rWrt.bWrtWW8 )
+ for( i = 0; i < aStrArr.Count(); ++i )
+ {
+ const String& rStr = *aStrArr[ i ];
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, rStr.Len() );
+ SwWW8Writer::WriteString16( *rWrt.pTableStrm, rStr, FALSE );
+ }
+ else
+ for( i = 0; i < aStrArr.Count(); ++i )
+ {
+ const String& rStr = *aStrArr[ i ];
+ *rWrt.pTableStrm << (BYTE)rStr.Len();
+ SwWW8Writer::WriteString8( *rWrt.pTableStrm, rStr, FALSE,
+ RTL_TEXTENCODING_MS_1252 );
+ }
+
+ rFib.fcGrpStAtnOwners = nFcStart;
+ nFcStart = rWrt.pTableStrm->Tell();
+ rFib.lcbGrpStAtnOwners = nFcStart - rFib.fcGrpStAtnOwners;
+ break;
+
+ case TXT_TXTBOX:
+ case TXT_HFTXTBOX:
+ {
+ pTxtPos->Write( *rWrt.pTableStrm );
+ const SvULongs* pShapeIds = GetShapeIdArr();
+ ASSERT( pShapeIds, "wo sind die ShapeIds?" );
+
+ // nLen = pTxtPos->Count();
+ for( i = 0; i < nLen; ++i )
+ {
+ // write textbox story - FTXBXS
+ // is it an writer or sdr - textbox?
+ const SdrObject* pObj = (SdrObject*)aCntnt[ i ];
+ INT32 nCnt = 1;
+ if( !pObj->ISA( SdrTextObj ) )
+ {
+ // find the "highest" SdrObject of this
+ const SwFrmFmt& rFmt = *::FindFrmFmt( pObj );
+
+ const SwFmtChain* pChn = &rFmt.GetChain();
+ while( pChn->GetNext() )
+ {
+ // has a chain?
+ // then calc the cur pos in the chain
+ ++nCnt;
+ pChn = &pChn->GetNext()->GetChain();
+ }
+ }
+ // long cTxbx / iNextReuse
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, nCnt );
+ // long cReusable
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, 0 );
+ // short fReusable
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, 0 );
+ // long reserved
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, -1 );
+ // long lid
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm,
+ (*pShapeIds)[i]);
+ // long txidUndo
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, 0 );
+ }
+ SwWW8Writer::FillCount( *rWrt.pTableStrm, 22 );
+ bWriteCP = FALSE;
+ }
+ break;
+ }
+
+ if( bWriteCP )
+ {
+ // Schreibe CP-Positionen
+ for( i = 0; i < nLen; i++ )
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, aCps[ i ] );
+
+ // n+1-te CP-Pos nach Handbuch
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm,
+ rFib.ccpText + rFib.ccpFtn +
+ rFib.ccpHdr + rFib.ccpEdn +
+ rFib.ccpTxbx + rFib.ccpHdrTxbx + 1 );
+
+ if( TXT_ATN == nTTyp )
+ {
+ USHORT nFndPos;
+ for( i = 0; i < nLen; ++i )
+ {
+ const SwPostItField& rPFld = *(SwPostItField*)aCntnt[ i ];
+ String sAuthor( rPFld.GetPar1() );
+ aStrArr.Seek_Entry( &sAuthor, &nFndPos );
+ BYTE nLen = (BYTE)sAuthor.Len();
+ if( nLen > 9 )
+ {
+ sAuthor.Erase( 9 );
+ nLen = 9;
+ }
+
+ // xstUsrInitl[ 10 ] pascal-style String holding initials
+ // of annotation author
+ if( rWrt.bWrtWW8 )
+ {
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, nLen );
+ SwWW8Writer::WriteString16( *rWrt.pTableStrm, sAuthor,
+ FALSE );
+ SwWW8Writer::FillCount( *rWrt.pTableStrm, (9 - nLen) * 2 );
+
+ }
+ else
+ {
+ *rWrt.pTableStrm << nLen;
+ SwWW8Writer::WriteString8( *rWrt.pTableStrm, sAuthor,
+ FALSE, RTL_TEXTENCODING_MS_1252 );
+ SwWW8Writer::FillCount( *rWrt.pTableStrm, 9 - nLen );
+ }
+
+ //SVBT16 ibst; // index into GrpXstAtnOwners
+ //SVBT16 ak; // not used
+ //SVBT16 grfbmc; // not used
+ //SVBT32 ITagBkmk; // when not -1, this tag identifies the
+
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, nFndPos );
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, 0 );
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, 0 );
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, -1 );
+ }
+ }
+ else
+ {
+ USHORT nNo = 0;
+ for( i = 0; i < nLen; ++i ) // Schreibe Flags
+ {
+ const SwFmtFtn* pFtn = (SwFmtFtn*)aCntnt[ i ];
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm,
+ pFtn->GetNumStr().Len() ? 0 : ++nNo );
+ }
+ }
+ }
+ rRefStart = nFcStart;
+ nFcStart = rWrt.pTableStrm->Tell();
+ rRefCount = nFcStart - rRefStart;
+
+ pTxtPos->Write( *rWrt.pTableStrm );
+
+ switch( nTTyp )
+ {
+ case TXT_TXTBOX:
+ case TXT_HFTXTBOX:
+ for( i = 0; i < nLen; ++i )
+ {
+ // write break descriptor (BKD)
+ // short itxbxs
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, i );
+ // short dcpDepend
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, 0 );
+ // short flags : icol/fTableBreak/fColumnBreak/fMarked/
+ // fUnk/fTextOverflow
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, 0x800 );
+ }
+ SwWW8Writer::FillCount( *rWrt.pTableStrm, 6 );
+ break;
+ }
+
+ rTxtStart = nFcStart;
+ rTxtCount = rWrt.pTableStrm->Tell() - nFcStart;
+ }
+}
+
+const SvULongs* WW8_WrPlcSubDoc::GetShapeIdArr() const
+{
+ return 0;
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/wrtw8sty.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.28 2000/09/18 16:04:58 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.27 2000/08/21 10:14:03 khz
+ Export Line Numbering (restart on new section)
+
+ Revision 1.26 2000/07/04 08:58:09 jp
+ _OutFont: write zero terminated FontNames
+
+ Revision 1.25 2000/05/12 16:14:02 jp
+ Changes for Unicode
+
+ Revision 1.24 2000/05/04 11:41:34 jp
+ Bug #75550#: standard para.style must have a language sprm
+
+ Revision 1.23 2000/01/25 20:09:30 jp
+ Bug #72146#: convert stylenames only for W95 to ANSI
+
+ Revision 1.22 1999/12/15 17:06:14 jp
+ Bug #70913#: write Ftn-/EndNoteInfo - at end of section or page/doc
+
+ Revision 1.21 1999/11/25 21:19:37 jp
+ Bug #70134#: dont set def values by charstyles
+
+ Revision 1.20 1999/11/22 18:26:11 jp
+ export of TOX and TOX entries
+
+ Revision 1.19 1999/11/12 16:07:16 jp
+ write foot-/endnote attributes with correct charfmts
+
+ Revision 1.18 1999/11/10 16:09:50 jp
+ Bug #67922#: write header/footer for w95
+
+ Revision 1.17 1999/10/22 14:11:01 jp
+ Bug #69408#: if write SfxItemSet set the pointer at writerclass
+
+ Revision 1.16 1999/10/14 21:06:05 jp
+ Bug #68617#,#68705# and other little things
+
+ Revision 1.15 1999/10/13 09:08:46 jp
+ write character attributs of SdrObjects
+
+ Revision 1.14 1999/10/11 10:58:59 jp
+ Bug #69083#: set mirrormargin flag in dop
+
+ Revision 1.13 1999/09/09 17:40:49 jp
+ Bug #68628#: write startvalue of SwFtnInfo and SwEndNoteInfo
+
+ Revision 1.12 1999/09/01 17:32:38 JP
+ new: write the text of SdrTextObjects
+
+
+ Rev 1.11 01 Sep 1999 19:32:38 JP
+ new: write the text of SdrTextObjects
+
+ Rev 1.10 30 Aug 1999 18:55:02 JP
+ write cp's of foot-/endnotes
+
+ Rev 1.9 24 Aug 1999 20:15:48 JP
+ Escher Export
+
+ Rev 1.8 16 Aug 1999 17:16:30 JP
+ W97 Export: experimental escher export (1)
+
+ Rev 1.7 21 Jul 1999 18:28:22 JP
+ W97 Export: experimental escher export
+
+ Rev 1.6 06 Jul 1999 14:54:04 JP
+ W97-Export corrections
+
+ Rev 1.5 30 Jun 1999 19:56:42 JP
+ W97-Export: Fields/PostIts/References
+
+ Rev 1.4 23 Jun 1999 12:46:16 JP
+ Export of numbers und outlinenumbers
+
+ Rev 1.3 16 Jun 1999 19:53:58 JP
+ Change interface of base class Writer
+
+ Rev 1.2 04 Jun 1999 17:47:56 JP
+ WW97-Export: Code aufgeteilt
+
+ Rev 1.1 21 May 1999 01:59:10 JP
+ Export von WW97 Format: StyleSheets
+
+ Rev 1.0 19 May 1999 19:35:16 JP
+ WinWord97-ExportFilter
+
+*************************************************************************/
+
diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
new file mode 100644
index 000000000000..81ac65a89408
--- /dev/null
+++ b/sw/source/filter/ww8/wrtww8.cxx
@@ -0,0 +1,2226 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtww8.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+
+#include <string.h> // memcpy()
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SV_SALBTYPE_HXX
+#include <vcl/salbtype.hxx>
+#endif
+#ifndef _SVSTOR_HXX
+#include <so3/svstor.hxx>
+#endif
+#ifndef _ZFORMAT_HXX
+#include <svtools/zformat.hxx>
+#endif
+#ifndef _SFXDOCINF_HXX
+#include <sfx2/docinf.hxx>
+#endif
+#ifndef _SVX_TSPTITEM_HXX
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVDMODEL_HXX
+#include <svx/svdmodel.hxx>
+#endif
+#ifndef _SVDPAGE_HXX
+#include <svx/svdpage.hxx>
+#endif
+#ifndef _SVX_HYZNITEM_HXX //autogen
+#include <svx/hyznitem.hxx>
+#endif
+
+#if SUPD>593
+#ifndef _MSOLEEXP_HXX
+#include <svx/msoleexp.hxx>
+#endif
+#endif
+
+#ifndef _OFA_FLTRCFG_HXX
+#include <offmgr/fltrcfg.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _SWRECT_HXX
+#include <swrect.hxx>
+#endif
+#ifndef _TXATBASE_HXX
+#include <txatbase.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FMTPDSC_HXX
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _DOCSTAT_HXX
+#include <docstat.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _FLYPOS_HXX
+#include <flypos.hxx>
+#endif
+#ifndef _BOOKMRK_HXX
+#include <bookmrk.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+#ifndef _WRTWW8_HXX
+#include <wrtww8.hxx>
+#endif
+#ifndef _WW8STRUC_HXX
+#include <ww8struc.hxx>
+#endif
+#ifndef _WRT_FN_HXX
+#include <wrt_fn.hxx>
+#endif
+#ifndef _FLTINI_HXX
+#include <fltini.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx>
+#endif
+#include "poolfmt.hxx" // RES_POOLCOLL_STANDARD
+
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx> // Progress
+#endif
+#ifndef _STATSTR_HRC
+#include <statstr.hrc> // ResId fuer Statusleiste
+#endif
+
+#ifndef SW_FMTLINE_HXX
+#include <fmtline.hxx>
+#endif
+
+
+class WW8_WrFkp
+{
+ BYTE* pFkp; // gesamter Fkp ( zuerst nur FCs und Sprms )
+ BYTE* pOfs; // Pointer auf Offset-Bereich, spaeter nach pFkp kopiert
+ ePLCFT ePlc;
+ short nStartGrp; // ab hier grpprls
+ short nOldStartGrp;
+ BYTE nItemSize;
+ BYTE nIMax; // Anzahl der Eintrags-Paare
+ BYTE nOldVarLen;
+ BOOL bCombined; // TRUE : Einfuegen verboten
+
+ BYTE SearchSameSprm( USHORT nVarLen, const BYTE* pSprms );
+public:
+ WW8_WrFkp( ePLCFT ePl, WW8_FC nStartFc, BOOL bWrtWW8 );
+ ~WW8_WrFkp();
+ BOOL Append( WW8_FC nEndFc, USHORT nVarLen = 0, const BYTE* pSprms = 0 );
+ BOOL Combine();
+ void Write( SvStream& rStrm, SwWW8WrGrf& rGrf );
+
+ BOOL IsEqualPos( WW8_FC nEndFc ) const
+ { return !bCombined && nIMax && nEndFc == ((INT32*)pFkp)[nIMax]; }
+ void MergeToNew( short& rVarLen, BYTE *& pNewSprms );
+ BOOL IsEmptySprm() const
+ { return !bCombined && nIMax && !nOldVarLen; }
+ void SetNewEnd( WW8_FC nEnd )
+ { ((INT32*)pFkp)[nIMax] = nEnd; }
+
+#ifdef __WW8_NEEDS_COPY
+ WW8_FC GetStartFc() const;
+ WW8_FC GetEndFc() const;
+#else
+ WW8_FC GetStartFc() const { return ((INT32*)pFkp)[0]; };
+ WW8_FC GetEndFc() const { return ((INT32*)pFkp)[nIMax]; };
+#endif // defined __WW8_NEEDS_COPY
+};
+
+
+// -------------------------------------------------------------------------
+// class WW8_WrPc sammelt alle Piece-Eintraege fuer ein Piece
+// -------------------------------------------------------------------------
+
+class WW8_WrPc
+{
+ WW8_CP nStartCp; // Start ZeichenPosition vom Text
+ WW8_FC nStartFc; // Start File Position vom Text
+ USHORT nStatus; // Absatzende im Piece ?
+
+public:
+ WW8_WrPc(WW8_FC nSFc, WW8_CP nSCp )
+ : nStartCp( nSCp ), nStartFc( nSFc ), nStatus( 0x0040 )
+ {}
+
+ void SetStatus() { nStatus = 0x0050; }
+ USHORT GetStatus() const { return nStatus; }
+ WW8_CP GetStartCp() const { return nStartCp; }
+ WW8_FC GetStartFc() const { return nStartFc; }
+};
+
+
+class WW8_WrtBookmarks
+{
+ SvULongs aSttCps, aEndCps; // Array of Start- and End CPs
+ SvStringsDtor aSwBkmkNms; // Array of Sw - Bookmarknames
+// SvStringsDtor aWWBkmkNms; // Array of WW - Bookmarknames
+
+ USHORT GetPos( const String& rNm );
+public:
+ WW8_WrtBookmarks();
+ ~WW8_WrtBookmarks();
+
+ void Append( WW8_CP nStartCp, const String& rNm );
+ void Write( SwWW8Writer& rWrt );
+
+// String GetWWBkmkName( const String& rName ) const;
+};
+
+class WW8_WrtRedlineAuthor
+{
+ SvStringsDtor aAuthors; // Array of Sw - Bookmarknames
+
+ USHORT GetPos( const String& rNm );
+public:
+ WW8_WrtRedlineAuthor() : aAuthors( 0, 4 ) {}
+
+ USHORT AddName( const String& rNm );
+ void Write( SwWW8Writer& rWrt );
+};
+
+
+#define ANZ_DEFAULT_STYLES 16
+
+// die Namen der StorageStreams
+#define sMainStream String::CreateFromAscii( \
+ RTL_CONSTASCII_STRINGPARAM( "WordDocument" ))
+#define sDataStream String::CreateFromAscii( \
+ RTL_CONSTASCII_STRINGPARAM( "Data" ))
+#define sTableStream String::CreateFromAscii( \
+ RTL_CONSTASCII_STRINGPARAM( "1Table" ))
+
+
+SV_IMPL_VARARR( WW8Bytes, BYTE )
+SV_IMPL_PTRARR( WW8_WrFkpPtrs, WW8_FkpPtr )
+
+typedef WW8_WrPc* WW8_WrPcPtr;
+SV_DECL_PTRARR_DEL( WW8_WrPcPtrs, WW8_WrPcPtr, 4, 4 )
+SV_IMPL_PTRARR( WW8_WrPcPtrs, WW8_WrPcPtr )
+
+static void WriteDop( SwWW8Writer& rWrt )
+{
+ WW8Dop& rDop = *rWrt.pDop;
+
+ // default TabStop schreiben
+ const SvxTabStopItem& rTabStop = (SvxTabStopItem& )rWrt.pDoc->
+ GetAttrPool().GetDefaultItem( RES_PARATR_TABSTOP );
+ rDop.dxaTab = (USHORT)rTabStop[0].GetTabPos();
+
+
+ // Werte aus der DocStatistik (werden aufjedenfall fuer die
+ // DocStat-Felder benoetigt!)
+ rDop.fWCFtnEdn = TRUE; // because they are included in StarWriter
+
+ const SwDocStat& rDStat = rWrt.pDoc->GetDocStat();
+ rDop.cWords = rDStat.nWord;
+ rDop.cCh = rDStat.nChar;
+ rDop.cPg = rDStat.nPage;
+ rDop.cParas = rDStat.nPara;
+ rDop.cLines = rDStat.nPara;
+
+// auch damit werden die DocStat-Felder in Kopf-/Fusszeilen nicht korrekt
+// berechnet.
+// ( we do not have this fields! )
+
+ // und noch fuer die Header und Footers
+ rDop.cWordsFtnEnd = rDStat.nWord;
+ rDop.cChFtnEdn = rDStat.nChar;
+ rDop.cPgFtnEdn = rDStat.nPage;
+ rDop.cParasFtnEdn = rDStat.nPara;
+ rDop.cLinesFtnEdn = rDStat.nPara;
+
+ rDop.Write( *rWrt.pTableStrm, *rWrt.pFib );
+}
+
+
+// HasItem ist fuer die Zusammenfassung der Doppel-Attribute
+// Underline / WordLineMode und Box / Shadow.
+// Es kann nur etwas gefunden werden, wenn diese Methode innerhalb
+// der aufgerufenen Methoden WW8_SwAttrIter::OutAttr() und
+// SwWW8Writer::Out_SfxItemSet() benutzt wird.
+const SfxPoolItem* SwWW8Writer::HasItem( USHORT nWhich ) const
+{
+ const SfxPoolItem* pItem;
+ if( pISet )
+ {
+ // if write a EditEngine text, then the WhichIds are greater as
+ // ourer own Ids. So the Id have to translate from ouer into the
+ // EditEngine Range
+ if( RES_WHICHHINT_END < *pISet->GetRanges() )
+ nWhich = TranslateToEditEngineId( nWhich );
+ if( SFX_ITEM_SET != pISet->GetItemState( nWhich, TRUE, &pItem ) )
+ pItem = 0;
+ }
+ else if( pChpIter )
+ pItem = pChpIter->HasTextItem( nWhich );
+ else
+ {
+ ASSERT( !this, "Wo ist mein ItemSet / pChpIter ?" );
+ pItem = 0;
+ }
+ return pItem;
+}
+
+const SfxPoolItem& SwWW8Writer::GetItem( USHORT nWhich ) const
+{
+ const SfxPoolItem* pItem;
+ if( pISet )
+ {
+ // if write a EditEngine text, then the WhichIds are greater as
+ // ourer own Ids. So the Id have to translate from ouer into the
+ // EditEngine Range
+ if( RES_WHICHHINT_END < *pISet->GetRanges() )
+ nWhich = TranslateToEditEngineId( nWhich );
+ pItem = &pISet->Get( nWhich, TRUE );
+ }
+ else if( pChpIter )
+ pItem = &pChpIter->GetItem( nWhich );
+ else
+ {
+ ASSERT( !this, "Wo ist mein ItemSet / pChpIter ?" );
+ pItem = 0;
+ }
+ return *pItem;
+}
+
+//------------------------------------------------------------------------------
+
+WW8_WrPlc1::WW8_WrPlc1( USHORT nStructSz )
+ : aPos( 16, 16 ), aDat( 16 * (int)nStructSz, 16 * (int)nStructSz ),
+ nStructSiz( nStructSz )
+{
+}
+
+void WW8_WrPlc1::Append( WW8_CP nCp, const void* pData )
+{
+ aPos.Insert( nCp, aPos.Count() );
+ aDat.Insert( (BYTE*)pData, nStructSiz, aDat.Count() );
+}
+
+void WW8_WrPlc1::Finish( ULONG nLastCp, ULONG nSttCp )
+{
+ if( aPos.Count() )
+ {
+ aPos.Insert( nLastCp, aPos.Count() );
+ if( nSttCp )
+ for( USHORT n = 0; n < aPos.Count(); ++n )
+ aPos[ n ] -= nSttCp;
+ }
+}
+
+
+void WW8_WrPlc1::Write( SvStream& rStrm )
+{
+ for( USHORT i = 0; i < aPos.Count(); ++i )
+ SwWW8Writer::WriteLong( rStrm, aPos[i] );
+ rStrm.Write( aDat.GetData(), aDat.Count() ); // Anz Eintraege
+}
+
+//------------------------------------------------------------------------------
+// Klasse WW8_WrPlcFld fuer Felder
+//------------------------------------------------------------------------------
+
+
+BOOL WW8_WrPlcFld::Write( SwWW8Writer& rWrt )
+{
+ if( WW8_WrPlc1::Count() <= 1 )
+ return FALSE;
+
+ long *pfc, *plc;
+ switch( nTxtTyp )
+ {
+ case TXT_MAINTEXT:
+ pfc = &rWrt.pFib->fcPlcffldMom;
+ plc = &rWrt.pFib->lcbPlcffldMom;
+ break;
+ case TXT_HDFT:
+ pfc = &rWrt.pFib->fcPlcffldHdr;
+ plc = &rWrt.pFib->lcbPlcffldHdr;
+ break;
+
+ case TXT_FTN:
+ pfc = &rWrt.pFib->fcPlcffldFtn;
+ plc = &rWrt.pFib->lcbPlcffldFtn;
+ break;
+
+ case TXT_EDN:
+ pfc = &rWrt.pFib->fcPlcffldEdn;
+ plc = &rWrt.pFib->lcbPlcffldEdn;
+ break;
+
+ case TXT_TXTBOX:
+ pfc = &rWrt.pFib->fcPlcffldTxbx;
+ plc = &rWrt.pFib->lcbPlcffldTxbx;
+ break;
+
+ case TXT_HFTXTBOX:
+ pfc = &rWrt.pFib->fcPlcffldHdrTxbx;
+ plc = &rWrt.pFib->lcbPlcffldHdrTxbx;
+ break;
+
+ default:
+ pfc = plc = 0;
+ break;
+ }
+
+ if( pfc && plc )
+ {
+ ULONG nFcStart = rWrt.pTableStrm->Tell();
+ WW8_WrPlc1::Write( *rWrt.pTableStrm );
+ *pfc = nFcStart;
+ *plc = rWrt.pTableStrm->Tell() - nFcStart;
+ }
+ return TRUE;
+}
+
+
+//--------------------------------------------------------------------------
+
+void SwWW8Writer::FillCount( SvStream& rStrm, ULONG nCount )
+{
+ static UINT32 __READONLY_DATA aNulls[16] = {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; // 64 Byte
+
+ while( nCount > 64 )
+ {
+ rStrm.Write( aNulls, 64 ); // in 64-Byte-Schritten
+ nCount -= 64;
+ }
+ rStrm.Write( aNulls, nCount ); // Rest ( 0 .. 64 Bytes ) schreiben
+}
+
+
+ULONG SwWW8Writer::FillUntil( SvStream& rStrm, ULONG nEndPos )
+{
+ ULONG nCurPos = rStrm.Tell();
+ if( !nEndPos ) // nEndPos == 0 -> next Page
+ nEndPos = nCurPos + 0x1ff & ~0x1ffUL;
+
+ if( nEndPos > nCurPos )
+ SwWW8Writer::FillCount( rStrm, nEndPos - nCurPos );
+#ifndef PRODUCT
+ else
+ ASSERT( nEndPos == nCurPos, "Falsches FillUntil()" );
+#endif
+ return rStrm.Tell();
+}
+
+
+//--------------------------------------------------------------------------
+/* */
+
+WW8_WrPlcPn::WW8_WrPlcPn( SwWW8Writer& rWr, ePLCFT ePl, WW8_FC nStartFc )
+ : rWrt( rWr ), ePlc( ePl ), nFkpStartPage( 0 )
+{
+ WW8_FkpPtr pF = new WW8_WrFkp( ePlc, nStartFc, rWrt.bWrtWW8 );
+ aFkps.Insert( pF, aFkps.Count() );
+}
+
+WW8_WrPlcPn::~WW8_WrPlcPn()
+{
+ aFkps.DeleteAndDestroy( 0, aFkps.Count() );
+}
+
+void WW8_WrPlcPn::AppendFkpEntry( WW8_FC nEndFc, short nVarLen,
+ const BYTE* pSprms )
+{
+ WW8_FkpPtr pF = aFkps.GetObject( aFkps.Count() - 1 );
+
+ // big sprm? build the sprmPHugePapx
+ BYTE* pNewSprms = (BYTE*)pSprms;
+ BYTE aHugePapx[ 8 ];
+ if( rWrt.bWrtWW8 && PAP == ePlc && 488 < nVarLen )
+ {
+ BYTE* p = aHugePapx;
+ *p++ = *pSprms++; // set style Id
+ *p++ = *pSprms++;
+ nVarLen -= 2;
+
+ long nDataPos = rWrt.pDataStrm->Tell();
+ SwWW8Writer::WriteShort( *rWrt.pDataStrm, nVarLen );
+ rWrt.pDataStrm->Write( pSprms, nVarLen );
+
+ Set_UInt16( p, 0x6646 ); // set SprmCode
+ Set_UInt32( p, nDataPos ); // set startpos (FC) in the datastream
+ nVarLen = p - aHugePapx;
+ pSprms = pNewSprms = aHugePapx;
+ }
+ // if append at the same FC-EndPos and there are sprms, then get the old
+ // sprms and erase it; they will append now with the new sprms
+ else if( nVarLen && pF->IsEqualPos( nEndFc ))
+ pF->MergeToNew( nVarLen, pNewSprms );
+ // has the prev EndFC an empty sprm and the current is empty too, then
+ // expand only the old EndFc to the new EndFc
+ else if( !nVarLen && pF->IsEmptySprm() )
+ {
+ pF->SetNewEnd( nEndFc );
+ return ;
+ }
+
+ BOOL bOk = pF->Append( nEndFc, nVarLen, pNewSprms );
+ if( !bOk )
+ {
+ pF->Combine();
+ pF = new WW8_WrFkp( ePlc, pF->GetEndFc(), rWrt.bWrtWW8 );// Anfang neuer Fkp
+ // == Ende alter Fkp
+ aFkps.Insert( pF, aFkps.Count() );
+ if( !pF->Append( nEndFc, nVarLen, pNewSprms ) )
+ {
+ ASSERT( !this, "Sprm liess sich nicht einfuegen" );
+ }
+ }
+ if( pNewSprms != pSprms )
+ delete pNewSprms;
+}
+
+void WW8_WrPlcPn::WriteFkps()
+{
+ nFkpStartPage = (USHORT) ( SwWW8Writer::FillUntil( rWrt.Strm() ) >> 9 );
+
+ for( USHORT i = 0; i < aFkps.Count(); i++ )
+ aFkps.GetObject( i )->Write( rWrt.Strm(), *rWrt.pGrf );
+
+ if( CHP == ePlc )
+ {
+ rWrt.pFib->pnChpFirst = nFkpStartPage;
+ rWrt.pFib->cpnBteChp = aFkps.Count();
+ }
+ else
+ {
+ rWrt.pFib->pnPapFirst = nFkpStartPage;
+ rWrt.pFib->cpnBtePap = aFkps.Count();
+ }
+}
+
+void WW8_WrPlcPn::WritePlc()
+{
+ ULONG nFcStart = rWrt.pTableStrm->Tell();
+ USHORT i;
+
+ for( i = 0; i < aFkps.Count(); i++ )
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm,
+ aFkps.GetObject( i )->GetStartFc() );
+
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm,
+ aFkps.GetObject( i - 1 )->GetEndFc() );
+
+ // fuer jedes FKP die Page ausgeben
+ if( rWrt.bWrtWW8) // fuer WW97 Long-Ausgabe
+ for ( i = 0; i < aFkps.Count(); i++)
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, i + nFkpStartPage );
+ else // fuer WW95 Short-Ausgabe
+ for ( i = 0; i < aFkps.Count(); i++)
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, i + nFkpStartPage );
+
+ if( CHP == ePlc )
+ {
+ rWrt.pFib->fcPlcfbteChpx = nFcStart;
+ rWrt.pFib->lcbPlcfbteChpx = rWrt.pTableStrm->Tell() - nFcStart;
+ }
+ else
+ {
+ rWrt.pFib->fcPlcfbtePapx = nFcStart;
+ rWrt.pFib->lcbPlcfbtePapx = rWrt.pTableStrm->Tell() - nFcStart;
+ }
+}
+
+//--------------------------------------------------------------------------
+/* */
+
+WW8_WrFkp::WW8_WrFkp( ePLCFT ePl, WW8_FC nStartFc, BOOL bWrtWW8 )
+ : nItemSize( ( CHP == ePl ) ? 1 : ( bWrtWW8 ? 13 : 7 )),
+ nIMax( 0 ), ePlc( ePl ), bCombined( FALSE ), nStartGrp( 511 ),
+ nOldStartGrp( 511 ), nOldVarLen( 0 )
+{
+ pFkp = (BYTE*)new INT32[128]; // 512 Byte
+ pOfs = (BYTE*)new INT32[128]; // 512 Byte
+ memset( pFkp, 0, 4 * 128 );
+ memset( pOfs, 0, 4 * 128 );
+ ( (INT32*)pFkp )[0] = nStartFc; // 0. FC-Eintrag auf nStartFc
+}
+
+WW8_WrFkp::~WW8_WrFkp()
+{
+ delete( pFkp );
+ delete( pOfs );
+}
+
+BYTE WW8_WrFkp::SearchSameSprm( USHORT nVarLen, const BYTE* pSprms )
+{
+ if( 3 < nVarLen )
+ {
+ // if the sprms contained picture-references then never equal!
+ for( BYTE n = nVarLen - 1; 3 < n; --n )
+ if( pSprms[ n ] == GRF_MAGIC_3 &&
+ pSprms[ n-1 ] == GRF_MAGIC_2 &&
+ pSprms[ n-2 ] == GRF_MAGIC_1 )
+ return 0;
+ }
+
+ short i;
+ for( i = 0; i < nIMax; i++ )
+ {
+ BYTE nStart = pOfs[i * nItemSize];
+ if( nStart )
+ { // Hat Sprms
+ const BYTE* p = pFkp + ( (USHORT)nStart << 1 );
+ if( ( CHP == ePlc
+ ? (*p++ == nVarLen)
+ : (((USHORT)*p++ << 1 ) == (( nVarLen+1) & 0xfffe)) )
+ && !memcmp( p, pSprms, nVarLen ) )
+ return nStart; // gefunden
+ }
+ }
+ return 0; // nicht gefunden
+}
+
+BOOL WW8_WrFkp::Append( WW8_FC nEndFc, USHORT nVarLen, const BYTE* pSprms )
+{
+ ASSERT( !nVarLen || pSprms, "Item-Pointer fehlt" );
+ ASSERT( nVarLen < ( ( ePlc == PAP ) ? 497U : 502U ), "Sprms zu lang !" );
+
+ if( bCombined )
+ {
+ ASSERT( !this, "Fkp::Append: Fkp is already combined" );
+ return FALSE;
+ }
+ INT32 n = ((INT32*)pFkp)[nIMax]; // letzter Eintrag
+ if( nEndFc <= n )
+ {
+ ASSERT( nEndFc >= n, "+Fkp: FC rueckwaerts" );
+ ASSERT( !nVarLen || !pSprms || nEndFc != n,
+ "+Fkp: selber FC mehrfach benutzt" );
+ // selber FC ohne Sprm wird ohne zu mosern ignoriert.
+
+ return TRUE; // ignorieren, keinen neuen Fkp anlegen
+ }
+
+ BYTE nOldP = ( nVarLen ) ? SearchSameSprm( nVarLen, pSprms ) : 0;
+ // Kombinieren gleicher Eintraege
+ short nOffset, nPos = nStartGrp;
+ if( nVarLen && !nOldP )
+ {
+ nPos = PAP == ePlc
+ ? ( 13 == nItemSize // HACK: PAP und bWrtWW8 !!
+ ? (nStartGrp & 0xFFFE ) - nVarLen - 1
+ : (nStartGrp - (((nVarLen + 1) & 0xFFFE)+1)) & 0xFFFE )
+ : ((nStartGrp - nVarLen - 1) & 0xFFFE);
+ if( nPos < 0 )
+ return FALSE; // Passt absolut nicht
+ nOffset = nPos; // Offset merken (kann auch ungerade sein!)
+ nPos &= 0xFFFE; // Pos fuer Sprms ( gerade Pos )
+ }
+
+ if( (USHORT)nPos <= ( nIMax + 2U ) * 4U + ( nIMax + 1U ) * nItemSize )
+ // Passt hinter CPs und Offsets ?
+ return FALSE; // Nein
+
+ ((INT32*)pFkp)[nIMax + 1] = nEndFc; // FC eintragen
+
+ nOldVarLen = (BYTE)nVarLen;
+ if( nVarLen && !nOldP )
+ { // echt eintragen
+ nOldStartGrp = nStartGrp;
+
+ nStartGrp = nPos;
+ pOfs[nIMax * nItemSize] = (BYTE)( nStartGrp >> 1 );
+ // ( DatenAnfg >> 1 ) eintragen
+ BYTE nCnt = CHP == ePlc
+ ? ( nVarLen < 256 ) ? (BYTE) nVarLen : 255
+ : ( ( nVarLen + 1 ) >> 1 );
+
+ pFkp[ nOffset ] = nCnt; // DatenLaenge eintragen
+ memcpy( pFkp + nOffset + 1, pSprms, nVarLen ); // Sprms speichern
+ }
+ else
+ {
+ // nicht echt eintragen ( keine Sprms oder Wiederholung )
+ // DatenAnfg 0 ( keine Daten ) oder Wiederholung
+ pOfs[nIMax * nItemSize] = nOldP;
+ }
+ nIMax++;
+ return TRUE;
+}
+
+BOOL WW8_WrFkp::Combine()
+{
+ if( bCombined )
+ return FALSE;
+ if( nIMax )
+ memcpy( pFkp + ( nIMax + 1 ) * 4, pOfs, nIMax * nItemSize );
+ DELETEZ( pOfs );
+ ((BYTE*)pFkp)[511] = nIMax;
+ bCombined = TRUE;
+
+#if defined __BIGENDIAN // Hier werden nur die FCs gedreht, die
+ register USHORT i; // Sprms muessen an anderer Stelle gedreht
+ // werden
+ register UINT32* p;
+ for( i = 0, p = (UINT32*)pFkp; i <= nIMax; i++, p++ )
+ *p = SWAPLONG( *p );
+#endif // ifdef __BIGENDIAN
+
+ return TRUE;
+}
+
+void WW8_WrFkp::Write( SvStream& rStrm, SwWW8WrGrf& rGrf )
+{
+ Combine(); // Falls noch nicht Combined
+
+ register BYTE* p; // Suche Magic fuer nPicLocFc
+ BYTE* pEnd = pFkp + nStartGrp;
+ for( p = pFkp + 511 - 4; p >= pEnd; p-- )
+ {
+ if( *p != GRF_MAGIC_1 ) // Suche nach Signatur 0x12 0x34 0x56 0xXX
+ continue;
+ if( *(p+1) != GRF_MAGIC_2 )
+ continue;
+ if( *(p+2) != GRF_MAGIC_3 )
+ continue;
+
+ SVBT32 nPos; // Signatur gefunden
+ LongToSVBT32( rGrf.GetFPos(), nPos ); // FilePos der Grafik
+ memcpy( p, nPos, 4 ); // Patche FilePos ueber Signatur
+ }
+ rStrm.Write( pFkp, 512 );
+}
+
+void WW8_WrFkp::MergeToNew( short& rVarLen, BYTE *& rpNewSprms )
+{
+ BYTE nStart = pOfs[ (nIMax-1) * nItemSize ];
+ if( nStart )
+ { // Hat Sprms
+ BYTE* p = pFkp + ( (USHORT)nStart << 1 );
+
+ // old and new equal? Then copy only one into the new sprms
+ if( nOldVarLen == rVarLen && !memcmp( p+1, rpNewSprms, nOldVarLen ))
+ {
+ BYTE* pNew = new BYTE[ nOldVarLen ];
+ memcpy( pNew, p+1, nOldVarLen );
+ rpNewSprms = pNew;
+ }
+ else
+ {
+ BYTE* pNew = new BYTE[ nOldVarLen + rVarLen ];
+ memcpy( pNew, p+1, nOldVarLen );
+ memcpy( pNew + nOldVarLen, rpNewSprms, rVarLen );
+
+ rpNewSprms = pNew;
+ rVarLen += nOldVarLen;
+ }
+ --nIMax;
+ // if this sprms dont used from others, remove it
+ FASTBOOL bFnd = FALSE;
+ for( USHORT n = 0; n < nIMax; ++n )
+ if( nStart == pOfs[ n * nItemSize ] )
+ {
+ bFnd = TRUE;
+ break;
+ }
+ if( !bFnd )
+ {
+ nStartGrp = nOldStartGrp;
+ memset( p, 0, nOldVarLen+1 );
+ }
+ }
+}
+
+#ifdef __WW8_NEEDS_COPY
+
+WW8_FC WW8_WrFkp::GetStartFc() const
+{
+// wenn bCombined, dann ist das Array ab pFkp schon Bytemaessig auf LittleEndian
+// umgedreht, d.h. zum Herausholen der Anfangs- und Endpositionen muss
+// zurueckgedreht werden.
+ if( bCombined )
+ return SVBT32ToLong( pFkp ); // 0. Element
+ return ((INT32*)pFkp)[0];
+}
+
+WW8_FC WW8_WrFkp::GetEndFc() const
+{
+ if( bCombined )
+ return SVBT32ToLong( &(pFkp[nIMax*4]) ); // nIMax-tes SVBT32-Element
+ return ((INT32*)pFkp)[nIMax];
+}
+
+#endif // defined __WW8_NEEDS_COPY
+
+
+
+//--------------------------------------------------------------------------
+// Methoden fuer Piece-Table-Verwaltung
+//--------------------------------------------------------------------------
+
+WW8_WrPct::WW8_WrPct( WW8_FC nfcMin )
+ : nOldFc( nfcMin ),bIsUni( FALSE ), pPcts( new WW8_WrPcPtrs )
+{
+ AppendPc( nOldFc, bIsUni );
+}
+
+WW8_WrPct::~WW8_WrPct()
+{
+ delete pPcts;
+}
+
+// Piece fuellen und neues Piece erzeugen
+void WW8_WrPct::AppendPc( WW8_FC nStartFc, BOOL bIsUnicode )
+{
+ WW8_CP nStartCp = nStartFc - nOldFc; // Textbeginn abziehen
+ if ( !nStartCp )
+ {
+ if ( 0 != pPcts->Count() )
+ {
+ ASSERT( 1 == pPcts->Count(), "Leeres Piece !!");
+ pPcts->DeleteAndDestroy( pPcts->Count() - 1 , 1);
+ }
+ }
+
+ nOldFc = nStartFc; // StartFc als alten merken
+
+ if( bIsUni )
+ nStartCp >>= 1; // Bei Unicode Anzahl der Zeichen / 2
+
+
+ if ( !bIsUnicode )
+ {
+ nStartFc <<= 1; // Adresse * 2
+ nStartFc |= 0x40000000; // Vorletztes Bit setzen fuer !Unicode
+ }
+
+ if( pPcts->Count() )
+ nStartCp += pPcts->GetObject( pPcts->Count()- 1 )->GetStartCp();
+
+ WW8_WrPcPtr pPc = new WW8_WrPc( nStartFc, nStartCp );
+ pPcts->Insert( pPc, pPcts->Count() );
+
+ bIsUni = bIsUnicode;
+}
+
+
+void WW8_WrPct::WritePc( SwWW8Writer& rWrt )
+{
+ ULONG nPctStart;
+ ULONG nOldPos, nEndPos;
+ USHORT i;
+
+ nPctStart = rWrt.pTableStrm->Tell(); // Beginn Piece-Table
+ *rWrt.pTableStrm << ( char )0x02; // Statusbyte PCT
+ nOldPos = nPctStart + 1; // Position merken
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, 0 ); // Laenge folgt
+ for( i = 0; i < pPcts->Count(); ++i ) // Bereiche
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm,
+ pPcts->GetObject( i )->GetStartCp() );
+
+
+ // die letzte Pos noch errechnen
+ ULONG nStartCp = rWrt.pFib->fcMac - nOldFc;
+ if( bIsUni )
+ nStartCp >>= 1; // Bei Unicode Anzahl der Zeichen / 2
+ nStartCp += pPcts->GetObject( i-1 )->GetStartCp();
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, nStartCp );
+
+ // Pieceverweise
+ for ( i = 0; i < pPcts->Count(); ++i )
+ {
+ WW8_WrPcPtr pPc = pPcts->GetObject( i );
+
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, pPc->GetStatus());
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, pPc->GetStartFc());
+ SwWW8Writer::WriteShort( *rWrt.pTableStrm, 0); // PRM=0
+ }
+
+ // Eintraege im FIB
+ rWrt.pFib->fcClx = nPctStart;
+ nEndPos = rWrt.pTableStrm->Tell();
+ rWrt.pFib->lcbClx = nEndPos - nPctStart;
+
+ // und noch die Laenge eintragen
+ SwWW8Writer::WriteLong( *rWrt.pTableStrm, nOldPos,
+ nEndPos - nPctStart-5 );
+
+}
+
+void WW8_WrPct::SetParaBreak()
+{
+ ASSERT( pPcts->Count(),"SetParaBreak : aPcts.Count = 0" );
+ pPcts->GetObject( pPcts->Count() - 1)->SetStatus();
+}
+
+ULONG WW8_WrPct::Fc2Cp( ULONG nFc ) const
+{
+ ASSERT( nFc >= (ULONG)nOldFc, "FilePos liegt vorm letzten Piece" );
+ ASSERT( pPcts->Count(), "Fc2Cp noch kein Piece vorhanden" );
+
+ nFc -= nOldFc;
+ if( bIsUni )
+ nFc /= 2;
+ return nFc + pPcts->GetObject( pPcts->Count() - 1 )->GetStartCp();
+}
+
+//--------------------------------------------------------------------------
+/* */
+
+WW8_WrtBookmarks::WW8_WrtBookmarks()
+ : aSttCps( 0, 16 ), aEndCps( 0, 16 ),
+ aSwBkmkNms( 0, 16 )
+// JP 24.06.99: not used at time ,aWWBkmkNms( 0, 16 ),
+{
+}
+
+WW8_WrtBookmarks::~WW8_WrtBookmarks()
+{
+}
+
+void WW8_WrtBookmarks::Append( WW8_CP nStartCp, const String& rNm )
+{
+ USHORT nPos = GetPos( rNm );
+ if( USHRT_MAX == nPos )
+ {
+ // new -> insert as start position
+ nPos = aSttCps.Count();
+ // sort by startposition
+ // theory: write continuous -> then the new position is at end
+ while( nPos && aSttCps[ nPos - 1 ] > ULONG( nStartCp ))
+ --nPos;
+
+ aSttCps.Insert( nStartCp, nPos );
+ aEndCps.Insert( nStartCp, nPos );
+ String* p = new String( rNm );
+ aSwBkmkNms.Insert( p, nPos );
+// JP 24.06.99: not used at time
+// p = new String( GetWWBkmkName(rNm ));
+// aWWBkmkNms.Insert( p, nPos );
+ }
+ else
+ {
+ // old -> its the end position
+ ASSERT( aEndCps[ nPos ] == aSttCps[ nPos ], "end position is valid" );
+ aEndCps.Replace( nStartCp, nPos );
+ }
+}
+
+
+void WW8_WrtBookmarks::Write( SwWW8Writer& rWrt )
+{
+ USHORT nCount = aSttCps.Count(), i;
+ if( nCount )
+ {
+ SvULongs aEndSortTab( 255 < nCount ? 255 : nCount, 4 );
+ // sort then endpositions
+ for( i = 0; i < nCount; ++i )
+ {
+ ULONG nCP = aEndCps[ i ];
+ USHORT nPos = i;
+ while( nPos && aEndSortTab[ nPos - 1 ] > nCP )
+ --nPos;
+ aEndSortTab.Insert( nCP, nPos );
+ }
+
+ // we have some bookmarks found in the document -> write them
+ // first the Bookmark Name Stringtable
+ rWrt.WriteAsStringTable( (SvStrings&)aSwBkmkNms,
+ rWrt.pFib->fcSttbfbkmk,
+ rWrt.pFib->lcbSttbfbkmk );
+
+ // second the Bookmark start positions as pcf of longs
+ SvStream& rStrm = rWrt.bWrtWW8 ? *rWrt.pTableStrm : rWrt.Strm();
+ rWrt.pFib->fcPlcfbkf = rStrm.Tell();
+ for( i = 0; i < nCount; ++i )
+ SwWW8Writer::WriteLong( rStrm, aSttCps[ i ] );
+ SwWW8Writer::WriteLong( rStrm, rWrt.pFib->ccpText );
+ for( i = 0; i < nCount; ++i )
+ {
+ ULONG nEndCP = aEndCps[ i ];
+ USHORT nPos = i;
+ if( aEndSortTab[ nPos ] > nEndCP )
+ {
+ while( aEndSortTab[ --nPos ] != nEndCP )
+ ;
+ }
+ else if( aEndSortTab[ nPos ] < nEndCP )
+ while( aEndSortTab[ ++nPos ] != nEndCP )
+ ;
+
+ SwWW8Writer::WriteLong( rStrm, nPos );
+ }
+ rWrt.pFib->lcbPlcfbkf = rStrm.Tell() - rWrt.pFib->fcPlcfbkf;
+
+ // third the Bookmark end positions
+ rWrt.pFib->fcPlcfbkl = rStrm.Tell();
+ for( i = 0; i < nCount; ++i )
+ SwWW8Writer::WriteLong( rStrm, aEndSortTab[ i ] );
+ SwWW8Writer::WriteLong( rStrm, rWrt.pFib->ccpText );
+ rWrt.pFib->lcbPlcfbkl = rStrm.Tell() - rWrt.pFib->fcPlcfbkl;
+ }
+}
+
+// JP 24.06.99: not used at time
+/*String WW8_WrtBookmarks::GetWWBkmkName( const String& rName ) const
+{
+ // replace all characters that will WinWord not understand
+ return rName;
+}
+*/
+
+USHORT WW8_WrtBookmarks::GetPos( const String& rNm )
+{
+ USHORT nRet = USHRT_MAX, n;
+ for( n = 0; n < aSttCps.Count(); ++n )
+ if( rNm == *aSwBkmkNms.GetObject( n ))
+ {
+ nRet = n;
+ break;
+ }
+ return nRet;
+}
+
+void SwWW8Writer::AppendBookmarks( const SwTxtNode& rNd,
+ xub_StrLen nAktPos, xub_StrLen nLen )
+{
+ SvPtrarr aArr( 8, 8 );
+ USHORT nCntnt;
+ xub_StrLen nAktEnd = nAktPos + nLen;
+ if( GetBookmarks( rNd, nAktPos, nAktEnd, aArr ))
+ {
+ ULONG nNd = rNd.GetIndex(), nSttCP = Fc2Cp( Strm().Tell() );
+ for( USHORT n = 0; n < aArr.Count(); ++n )
+ {
+ const SwBookmark& rBkmk = *(SwBookmark*)aArr[ n ];
+ const SwPosition* pPos = &rBkmk.GetPos(),
+ * pOPos = rBkmk.GetOtherPos();
+ if( pOPos && pOPos->nNode == pPos->nNode &&
+ pOPos->nContent < pPos->nContent )
+ {
+ pOPos = pPos;
+ pPos = rBkmk.GetOtherPos();
+ }
+
+ if( !pOPos || ( nNd == pPos->nNode.GetIndex() &&
+ ( nCntnt = pPos->nContent.GetIndex() ) >= nAktPos &&
+ nCntnt < nAktEnd ) )
+ {
+ ULONG nCp = nSttCP + pPos->nContent.GetIndex() - nAktPos;
+ pBkmks->Append( nCp, rBkmk.GetName() );
+ }
+ if( pOPos && nNd == pOPos->nNode.GetIndex() &&
+ ( nCntnt = pOPos->nContent.GetIndex() ) >= nAktPos &&
+ nCntnt < nAktEnd )
+ {
+ ULONG nCp = nSttCP + pOPos->nContent.GetIndex() - nAktPos;
+ pBkmks->Append( nCp, rBkmk.GetName() );
+ }
+ }
+ }
+}
+
+void SwWW8Writer::AppendBookmark( const String& rName, USHORT nOffset )
+{
+ ULONG nSttCP = Fc2Cp( Strm().Tell() ) + nOffset;
+ pBkmks->Append( nSttCP, rName );
+}
+
+
+//--------------------------------------------------------------------------
+/* */
+
+USHORT WW8_WrtRedlineAuthor::AddName( const String& rNm )
+{
+ for( USHORT n = 0, nCnt = aAuthors.Count(); n < nCnt; ++n )
+ if( *aAuthors[ n ] == rNm )
+ return n;
+
+ String* pNew = new String( rNm );
+ aAuthors.Insert( pNew, n );
+ return n;
+}
+
+void WW8_WrtRedlineAuthor::Write( SwWW8Writer& rWrt )
+{
+ rWrt.WriteAsStringTable( (SvStrings&)aAuthors,
+ rWrt.pFib->fcSttbfRMark,
+ rWrt.pFib->lcbSttbfRMark,
+ rWrt.bWrtWW8 ? 0 : 2 );
+}
+
+USHORT SwWW8Writer::AddRedlineAuthor( USHORT nId )
+{
+ if( !pRedlAuthors )
+ {
+ pRedlAuthors = new WW8_WrtRedlineAuthor;
+ pRedlAuthors->AddName( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "Unknown" )));
+ }
+ return pRedlAuthors->AddName( SW_MOD()->GetRedlineAuthor( nId ) );
+}
+
+//--------------------------------------------------------------------------
+/* */
+
+void SwWW8Writer::WriteAsStringTable( const SvStrings& rStrings,
+ INT32& rfcSttbf, INT32& rlcbSttbf,
+ USHORT nExtraLen )
+{
+ USHORT n, nCount = rStrings.Count();
+ if( nCount )
+ {
+ // we have some Redlines found in the document -> the
+ // Author Name Stringtable
+ SvStream& rStrm = bWrtWW8 ? *pTableStrm : Strm();
+ rfcSttbf = rStrm.Tell();
+ if( bWrtWW8 )
+ {
+ SwWW8Writer::WriteShort( rStrm, -1 );
+ SwWW8Writer::WriteLong( rStrm, nCount );
+ for( n = 0; n < nCount; ++n )
+ {
+ const String& rNm = *rStrings[ n ];
+ SwWW8Writer::WriteShort( rStrm, rNm.Len() );
+ SwWW8Writer::WriteString16( rStrm, rNm, FALSE );
+ if( nExtraLen )
+ SwWW8Writer::FillCount( rStrm, nExtraLen );
+ }
+ }
+ else
+ {
+ SwWW8Writer::WriteShort( rStrm, 0 );
+ for( n = 0; n < nCount; ++n )
+ {
+ const String aNm( rStrings[ n ]->Copy(0, 255 ));
+ rStrm << (BYTE)aNm.Len();
+ SwWW8Writer::WriteString8( rStrm, aNm, FALSE,
+ RTL_TEXTENCODING_MS_1252 );
+ if( nExtraLen )
+ SwWW8Writer::FillCount( rStrm, nExtraLen );
+ }
+ }
+ rlcbSttbf = rStrm.Tell() - rfcSttbf;
+ if( !bWrtWW8 )
+ SwWW8Writer::WriteShort( rStrm, rfcSttbf, (USHORT)rlcbSttbf );
+ }
+}
+
+// WriteShort() traegt an FilePos nPos den Wert nVal ein und seekt auf die
+// alte FilePos zurueck. Benutzt zum Nachtragen von Laengen.
+void SwWW8Writer::WriteShort( SvStream& rStrm, ULONG nPos, INT16 nVal )
+{
+ ULONG nOldPos = rStrm.Tell(); // Pos merken
+ rStrm.Seek( nPos );
+ SwWW8Writer::WriteShort( rStrm, nVal );
+ rStrm.Seek( nOldPos );
+}
+
+void SwWW8Writer::WriteLong( SvStream& rStrm, ULONG nPos, INT32 nVal )
+{
+ ULONG nOldPos = rStrm.Tell(); // Pos merken
+ rStrm.Seek( nPos );
+ SwWW8Writer::WriteLong( rStrm, nVal );
+ rStrm.Seek( nOldPos );
+}
+
+#ifdef __WW8_NEEDS_COPY
+
+void SwWW8Writer::InsUInt16( WW8Bytes& rO, UINT16 n )
+{
+ SVBT16 nL;
+ ShortToSVBT16( n, nL );
+ rO.Insert( nL, 2, rO.Count() );
+}
+void SwWW8Writer::InsUInt32( WW8Bytes& rO, UINT32 n )
+{
+ SVBT32 nL;
+ LongToSVBT32( n, nL );
+ rO.Insert( nL, 4, rO.Count() );
+}
+
+#else
+
+void SwWW8Writer::InsUInt16( WW8Bytes& rO, UINT16 n )
+{
+ rO.Insert( (BYTE*)&n, 2, rO.Count() );
+}
+void SwWW8Writer::InsUInt32( WW8Bytes& rO, UINT32 n )
+{
+ rO.Insert( (BYTE*)&n, 4, rO.Count() );
+}
+
+#endif // defined __WW8_NEEDS_COPY
+
+void SwWW8Writer::InsAsString16( WW8Bytes& rO, const String& rStr )
+{
+ for( const sal_Unicode* pStr = rStr.GetBuffer(); *pStr; ++pStr )
+ SwWW8Writer::InsUInt16( rO, *pStr );
+}
+
+void SwWW8Writer::InsAsString8( WW8Bytes& rO, const String& rStr,
+ rtl_TextEncoding eCodeSet )
+{
+ ByteString sTmp( rStr, eCodeSet );
+ rO.Insert( (BYTE*)sTmp.GetBuffer(), sTmp.Len(), rO.Count() );
+}
+
+void SwWW8Writer::WriteString16( SvStream& rStrm, const String& rStr,
+ BOOL bAddZero )
+{
+ WW8Bytes aBytes;
+ SwWW8Writer::InsAsString16( aBytes, rStr );
+ if( bAddZero )
+ SwWW8Writer::InsUInt16( aBytes, 0 );
+ rStrm.Write( aBytes.GetData(), aBytes.Count() );
+}
+
+void SwWW8Writer::WriteString8( SvStream& rStrm, const String& rStr,
+ BOOL bAddZero, rtl_TextEncoding eCodeSet )
+{
+ WW8Bytes aBytes;
+ SwWW8Writer::InsAsString8( aBytes, rStr, eCodeSet );
+ if( bAddZero )
+ aBytes.Insert( (BYTE)0, aBytes.Count() );
+ rStrm.Write( aBytes.GetData(), aBytes.Count() );
+}
+
+void SwWW8Writer::WriteStringAsPara( const String& rTxt, USHORT nStyleId )
+{
+ if( rTxt.Len() )
+ OutSwString( rTxt, 0, rTxt.Len(), IsUnicode(), RTL_TEXTENCODING_MS_1252 );
+ WriteCR(); // CR danach
+
+ WW8Bytes aArr( 10, 10 );
+ SwWW8Writer::InsUInt16( aArr, nStyleId );
+ if( bOutTable )
+ { // Tab-Attr
+ // sprmPFInTable
+ if( bWrtWW8 )
+ SwWW8Writer::InsUInt16( aArr, 0x2416 );
+ else
+ aArr.Insert( 24, aArr.Count() );
+ aArr.Insert( 1, aArr.Count() );
+ }
+
+ ULONG nPos = Strm().Tell();
+ pPapPlc->AppendFkpEntry( nPos, aArr.Count(), aArr.GetData() );
+ pChpPlc->AppendFkpEntry( nPos );
+}
+
+void SwWW8Writer::WriteSpecialText( ULONG nStart, ULONG nEnd, BYTE nTTyp )
+{
+ BYTE nOldTyp = nTxtTyp;
+ nTxtTyp = nTTyp;
+ SwPaM* pOldPam = pCurPam; //!! Einfaches Umsetzen des PaM ohne
+ SwPaM* pOldEnd = pOrigPam; // Wiederherstellen muesste es auch tun
+ BOOL bOldPageDescs = bOutPageDescs;
+ bOutPageDescs = FALSE;
+ // bOutKF wird in WriteKF1 gemerkt / gesetzt
+ pCurPam = NewSwPaM( *pDoc, nStart, nEnd );
+
+ // Tabelle in Sonderbereichen erkennen
+ if( (nStart != pCurPam->GetMark()->nNode.GetIndex())
+ && pDoc->GetNodes()[ nStart ]->IsTableNode() )
+ pCurPam->GetMark()->nNode = nStart;
+
+ pOrigPam = pCurPam;
+ pCurPam->Exchange();
+
+ WriteText();
+
+ delete pCurPam; // Pam wieder loeschen
+ bOutPageDescs = bOldPageDescs;
+ pCurPam = pOldPam;
+ pOrigPam = pOldEnd;
+ nTxtTyp = nOldTyp;
+}
+
+void SwWW8Writer::OutSwString( const String& rStr, xub_StrLen nStt,
+ xub_StrLen nLen, BOOL bUnicode,
+ rtl_TextEncoding eChrSet )
+
+{
+ if( nLen )
+ {
+ if ( bUnicode != pPiece->IsUnicode() )
+ pPiece->AppendPc ( Strm().Tell(), bUnicode );
+
+ if( nStt || nLen != rStr.Len() )
+ {
+ String sOut( rStr.Copy( nStt, nLen ) );
+ if( bUnicode )
+ SwWW8Writer::WriteString16( Strm(), sOut, FALSE );
+ else
+ SwWW8Writer::WriteString8( Strm(), sOut, FALSE, eChrSet );
+ }
+ else if( bUnicode )
+ SwWW8Writer::WriteString16( Strm(), rStr, FALSE );
+ else
+ SwWW8Writer::WriteString8( Strm(), rStr, FALSE, eChrSet );
+ }
+}
+
+void SwWW8Writer::WriteCR()
+{
+ WriteChar( '\015' );
+ pPiece->SetParaBreak();
+}
+
+void SwWW8Writer::WriteChar( sal_Unicode c )
+{
+ if( pPiece->IsUnicode() )
+ Strm() << c;
+ else
+ Strm() << (BYTE)c;
+}
+
+long SwWW8Writer::GetDTTM( const DateTime& rDT )
+{
+/*
+mint short :6 0000003F minutes (0-59)
+hr short :5 000007C0 hours (0-23)
+dom short :5 0000F800 days of month (1-31)
+mon short :4 000F0000 months (1-12)
+yr short :9 1FF00000 years (1900-2411)-1900
+wdy short :3 E0000000 weekday(Sunday=0
+ Monday=1
+( wdy can be ignored ) Tuesday=2
+ Wednesday=3
+ Thursday=4
+ Friday=5
+ Saturday=6)
+*/
+
+ long nDT = ( rDT.GetDayOfWeek() + 1 ) % 7;
+ nDT <<= 9;
+ nDT += ( rDT.GetYear() - 1900 ) & 0x1ff;
+ nDT <<= 4;
+ nDT += rDT.GetMonth() & 0xf;
+ nDT <<= 5;
+ nDT += rDT.GetDay() & 0x1f;
+ nDT <<= 5;
+ nDT += rDT.GetHour() & 0x1f;
+ nDT <<= 6;
+ nDT += rDT.GetMin() & 0x3f;
+ return nDT;
+}
+
+/* */
+//---------------------------------------------------------------------------
+// Hilfsroutinen fuer Flys
+//---------------------------------------------------------------------------
+// Struktur speichert die aktuellen Daten des Writers zwischen, um
+// einen anderen Dokument-Teil auszugeben, wie z.B. Header/Footer
+WW8SaveData::WW8SaveData( SwWW8Writer& rWriter, ULONG nStt, ULONG nEnd )
+ : rWrt( rWriter ),
+ pOldPam( rWrt.pCurPam ), pOldEnd( rWrt.GetEndPaM() ),
+ pOldFlyFmt( rWrt.pFlyFmt ), pOldPageDesc( rWrt.pAktPageDesc )
+
+{
+ pOldFlyOffset = rWrt.pFlyOffset;
+ if( rWrt.pO->Count() )
+ {
+ pOOld = rWrt.pO;
+ rWrt.pO = new WW8Bytes( 128, 128 );
+ }
+ else
+ pOOld = 0;
+ bOldWriteAll = rWrt.bWriteAll;
+ bOldOutTable = rWrt.bOutTable;
+ bOldIsInTable= rWrt.bIsInTable;
+ bOldFlyFrmAttrs = rWrt.bOutFlyFrmAttrs;
+ bOldStartTOX = rWrt.bStartTOX;
+ bOldInWriteTOX = rWrt.bInWriteTOX;
+
+ rWrt.pCurPam = rWrt.NewSwPaM( *rWrt.pDoc, nStt, nEnd );
+
+ // Tabelle in Sonderbereichen erkennen
+ if( nStt != rWrt.pCurPam->GetMark()->nNode.GetIndex() &&
+ rWrt.pDoc->GetNodes()[ nStt ]->IsTableNode() )
+ rWrt.pCurPam->GetMark()->nNode = nStt;
+
+ rWrt.SetEndPaM( rWrt.pCurPam );
+ rWrt.pCurPam->Exchange( );
+ rWrt.bWriteAll = TRUE;
+ rWrt.bOutTable = FALSE;
+ // Vorsicht: rWrt.bIsInTable darf hier NICHT veraendert werden!
+ rWrt.bOutFlyFrmAttrs = FALSE;
+// rWrt.pAttrSet = 0;
+ rWrt.bStartTOX = FALSE;
+ rWrt.bInWriteTOX = FALSE;
+}
+
+
+WW8SaveData::~WW8SaveData()
+{
+ delete rWrt.pCurPam; // Pam wieder loeschen
+
+ rWrt.pCurPam = pOldPam;
+ rWrt.SetEndPaM( pOldEnd );
+ rWrt.bWriteAll = bOldWriteAll;
+ rWrt.bOutTable = bOldOutTable;
+ rWrt.bIsInTable= bOldIsInTable;
+ rWrt.bOutFlyFrmAttrs = bOldFlyFrmAttrs;
+ rWrt.bStartTOX = bOldStartTOX;
+ rWrt.bInWriteTOX = bOldInWriteTOX;
+ rWrt.pFlyFmt = pOldFlyFmt;
+ rWrt.pAktPageDesc = pOldPageDesc;
+// rWrt.pAttrSet = pOldAttrSet;
+ ASSERT( !rWrt.pO->Count(), " pO ist am Ende von WW8SaveData nicht leer" );
+ if( pOOld )
+ {
+ delete rWrt.pO;
+ rWrt.pO = pOOld;
+ }
+ rWrt.pFlyOffset = pOldFlyOffset;
+}
+
+
+void SwWW8Writer::WriteText()
+{
+ while( pCurPam->GetPoint()->nNode < pCurPam->GetMark()->nNode ||
+ (pCurPam->GetPoint()->nNode == pCurPam->GetMark()->nNode &&
+ pCurPam->GetPoint()->nContent.GetIndex() <= pCurPam->GetMark()->nContent.GetIndex()) )
+ {
+ SwNode * pNd = pCurPam->GetNode();
+
+ if( pNd->IsTxtNode() ) // blitzschnelle Methode
+ {
+ const SwTxtNode* pTxtNode = pNd->GetTxtNode();
+ if( pTxtNode->GetpSwAttrSet() )
+ Out_SfxBreakItems( *pTxtNode->GetpSwAttrSet(), *pTxtNode );
+ if( !bIsInTable )
+ OutWW8FlyFrmsInCntnt( *pTxtNode ); // als Zeichen gebundene Flys
+ }
+
+ if( pNd->IsCntntNode() )
+ {
+ SwCntntNode* pCNd = (SwCntntNode*)pNd;
+
+ // erfrage den aktuellen PageDescriptor.
+ if( !bInWriteEscher )
+ OutFlyFrms( *pCNd );
+
+ const SwPageDesc* pTemp = pCNd->GetSwAttrSet().GetPageDesc().GetPageDesc();
+ if( pTemp )
+ pAktPageDesc = pTemp;
+
+ pCurPam->GetPoint()->nContent.Assign( pCNd, 0 );
+ Out( aWW8NodeFnTab, *pCNd, *this );
+ }
+ else if( pNd->IsTableNode() && !bIsInTable )
+ OutWW8_SwTblNode( *this, *(SwTableNode*)pNd );
+ else if( pNd->IsSectionNode() && TXT_MAINTEXT == nTxtTyp )
+ OutWW8_SwSectionNode( *this, *pNd->GetSectionNode() );
+ else if( TXT_MAINTEXT == nTxtTyp && pNd->IsEndNode() &&
+ pNd->FindStartNode()->IsSectionNode() )
+ {
+ const SwSection& rSect = pNd->FindStartNode()->GetSectionNode()
+ ->GetSection();
+ if( bStartTOX && TOX_CONTENT_SECTION == rSect.GetType() )
+ bStartTOX = FALSE;
+
+ SwNodeIndex aIdx( *pNd, 1 );
+ if( aIdx.GetNode().IsEndNode()
+ && aIdx.GetNode().FindStartNode()->IsSectionNode() )
+ ;
+ else
+ if( aIdx.GetNode().IsSectionNode() )
+ ;
+ else
+ {
+ ReplaceCr( (char)0xc ); // Indikator fuer Page/Section-Break
+
+ const SwSectionFmt* pParentFmt = rSect.GetFmt()->GetParent();
+ if( !pParentFmt )
+ pParentFmt = (SwSectionFmt*)0xFFFFFFFF;
+
+ ULONG nRstLnNum;
+ if( aIdx.GetNode().IsCntntNode() )
+ nRstLnNum = ((SwCntntNode&)aIdx.GetNode()).GetSwAttrSet().
+ GetLineNumber().GetStartValue();
+ else
+ nRstLnNum = 0;
+
+ pSepx->AppendSep( Fc2Cp( Strm().Tell() ),
+ pAktPageDesc, pParentFmt, nRstLnNum );
+ }
+ }
+ else if( pNd == &pNd->GetNodes().GetEndOfContent() )
+ break;
+
+ ULONG nPos = pCurPam->GetPoint()->nNode++; // Bewegen
+ ::SetProgressState( nPos, pCurPam->GetDoc()->GetDocShell() ); // Wie weit ?
+ }
+}
+
+void SwWW8Writer::WriteMainText()
+{
+ pFib->fcMin = Strm().Tell();
+
+ do {
+ WriteText();
+ } while( FALSE ); //!! Temporaer nur 1 Bereich
+// } while( CopyNextPam( &pCurPam ) ); // bis alle Pam bearbeitet
+
+ if( 0 == Strm().Tell() - pFib->fcMin ) // kein Text ?
+ WriteCR(); // dann CR ans Ende ( sonst mault WW )
+
+ pFib->ccpText = Fc2Cp( Strm().Tell() );
+ pFldMain->Finish( pFib->ccpText, 0 );
+
+ // ccpText beinhaltet Ftn- und KF-Texte
+ // deshalb wird pFib->ccpText evtl. noch geupdated
+ // save the StyleId of the last paragraph. Because WW97 take the style
+ // from the last CR, that will be write after footer/Header/fontnotes/
+ // annotation usw.
+ const SwTxtNode* pLastNd = pCurPam->GetMark()->nNode.GetNode().GetTxtNode();
+ if( pLastNd )
+ nLastFmtId = GetId( (SwTxtFmtColl&)pLastNd->GetAnyFmtColl() );
+}
+
+void SwWW8Writer::WriteFkpPlcUsw()
+{
+ if( !bWrtWW8 )
+ {
+ static BYTE __READONLY_DATA aSpec[2] = { 117, 1 };
+
+ pChpPlc->AppendFkpEntry( Strm().Tell() ); // Sepx mit fSpecial
+ pSepx->WriteSepx( Strm() ); // Slcx.Sepx
+ pGrf->Write(); // Grafiken
+ pChpPlc->AppendFkpEntry( Strm().Tell(), sizeof( aSpec ), aSpec );
+
+ pChpPlc->WriteFkps(); // Fkp.Chpx
+ pPapPlc->WriteFkps(); // Fkp.Papx
+ pStyles->OutStyleTab(); // Styles
+ pFtn->WritePlc( *this ); // Footnote-Ref & Text Plc
+ pEdn->WritePlc( *this ); // Endnote-Ref & Text Plc
+ pAtn->WritePlc( *this ); // Annotation-Ref & Text Plc
+ pSepx->WritePlcSed( *this ); // Slcx.PlcSed
+ pSepx->WritePlcHdd( *this ); // Slcx.PlcHdd
+ pChpPlc->WritePlc(); // Plcx.Chpx
+ pPapPlc->WritePlc(); // Plcx.Papx
+ OutFontTab( *pFib ); // FFNs
+ if( pRedlAuthors )
+ pRedlAuthors->Write( *this ); // sttbfRMark (RedlineAuthors)
+ pFldMain->Write( *this ); // Fields ( Main Text )
+ pFldHdFt->Write( *this ); // Fields ( Header/Footer )
+ pFldFtn->Write( *this ); // Fields ( FootNotes )
+ pFldEdn->Write( *this ); // Fields ( EndNotes )
+ pBkmks->Write( *this ); // Bookmarks - sttbfBkmk/
+ // plcfBkmkf/plcfBkmkl
+ WriteDop( *this ); // Document-Properties
+
+ }
+ else
+ {
+ // Grafiken in den Data-Tream
+//??? static BYTE __READONLY_DATA aSpec[] = { 0x55,0x08,0x01 };
+//??? pChpPlc->AppendFkpEntry( pDataStrm->Tell() ); // Sepx mit fSpecial
+
+ pGrf->Write(); // Grafiken
+//??? pChpPlc->AppendFkpEntry( pDataStrm->Tell(), sizeof( aSpec ), aSpec );
+
+ // Ausgabe in WordDocument-Stream
+ pChpPlc->WriteFkps(); // Fkp.Chpx
+ pPapPlc->WriteFkps(); // Fkp.Papx
+ pSepx->WriteSepx( Strm() ); // Sepx
+
+ // Ausagbe in Table-Stream
+ pStyles->OutStyleTab(); // fuer WW8 StyleTab
+ pFtn->WritePlc( *this ); // Footnote-Ref & Text Plc
+ pEdn->WritePlc( *this ); // Endnote-Ref & Text Plc
+ pTxtBxs->WritePlc( *this ); // Textbox Text Plc
+ pHFTxtBxs->WritePlc( *this ); // Head/Foot-Textbox Text Plc
+ pAtn->WritePlc( *this ); // Annotation-Ref & Text Plc
+
+ pSepx->WritePlcSed( *this ); // Slcx.PlcSed
+ pSepx->WritePlcHdd( *this ); // Slcx.PlcHdd
+
+ pChpPlc->WritePlc(); // Plcx.Chpx
+ pPapPlc->WritePlc(); // Plcx.Papx
+
+ if( pRedlAuthors )
+ pRedlAuthors->Write( *this ); // sttbfRMark (RedlineAuthors)
+ pFldMain->Write( *this ); // Fields ( Main Text )
+ pFldHdFt->Write( *this ); // Fields ( Header/Footer )
+ pFldFtn->Write( *this ); // Fields ( FootNotes )
+ pFldEdn->Write( *this ); // Fields ( EndNotes )
+ pFldTxtBxs->Write( *this ); // Fields ( Textboxes )
+ pFldHFTxtBxs->Write( *this ); // Fields ( Head/Foot-Textboxes )
+
+ // dggInfo - escher stream
+ WriteEscher();
+
+ pSdrObjs->WritePlc( *this );
+ pHFSdrObjs->WritePlc( *this );
+ // spamom - office drawing table
+ // spahdr - header office drawing table
+
+ pBkmks->Write( *this ); // Bookmarks - sttbfBkmk/
+ // plcfBkmkf/plcfBkmkl
+
+ OutListTab(); // listformats - LSTF
+ OutOverrideListTab(); // - "" - - LFO
+ OutListNamesTab(); // - "" - - ListNames
+
+ pPiece->WritePc( *this ); // Piece-Table
+ OutFontTab( *pFib ); // FFNs
+ WriteDop( *this ); // Document-Properties
+ }
+ Strm().Seek( 0 );
+
+ pFib->Write( Strm() ); // FIB
+}
+
+void SwWW8Writer::StoreDoc1()
+{
+ // Start of Text ( Mangel ueber )
+ SwWW8Writer::FillUntil( Strm(), pFib->fcMin );
+
+ WriteMainText(); // HauptText
+ pFtn->WriteTxt( *this ); // Footnote-Text
+ pSepx->WriteKFTxt( *this ); // K/F-Text
+ pAtn->WriteTxt( *this ); // Annotation-Text
+ pEdn->WriteTxt( *this ); // EndNote-Text
+
+ // create the escher streams
+ if( bWrtWW8 )
+ CreateEscher();
+
+ pTxtBxs->WriteTxt( *this ); // Textbox Text Plc
+ pHFTxtBxs->WriteTxt( *this ); // Head/Foot-Textbox Text Plc
+
+ WriteStringAsPara( aEmptyStr, nLastFmtId ); // CR ans Ende ( sonst mault WW )
+
+ pSepx->Finish( Fc2Cp( Strm().Tell() ));// Text + Ftn + HdFt als Section-Ende
+
+ pFib->fcMac = Strm().Tell(); // Ende aller Texte
+
+ WriteFkpPlcUsw(); // FKP, PLC, .....
+}
+
+ULONG SwWW8Writer::StoreDoc()
+{
+ nIniFlags = ReadFilterFlags( "WWWR" );
+ nCharFmtStart = ANZ_DEFAULT_STYLES;
+ nFmtCollStart = nCharFmtStart + pDoc->GetCharFmts()->Count() - 1;
+
+ bStyDef = bBreakBefore = bOutKF =
+ bOutFlyFrmAttrs = bOutPageDescs = bOutTable = bOutFirstPage =
+ bIsInTable = bOutGrf = bInWriteEscher = bStartTOX =
+ bInWriteTOX = FALSE;
+
+ bFtnAtTxtEnd = bEndAtTxtEnd = TRUE;
+
+ pFlyFmt = 0;
+ pFlyOffset = 0;
+ nTxtTyp = TXT_MAINTEXT;
+ nFlyWidth = nFlyHeight = 0;
+ nStyleBeforeFly = nLastFmtId = 0;
+ pStyAttr = 0;
+ pOutFmtNode = 0;
+ pUsedNumTbl = 0;
+ pEscher = 0;
+ pRedlAuthors = 0;
+ if( aTOXArr.Count() )
+ aTOXArr.Remove( 0, aTOXArr.Count() );
+
+#if SUPD>593
+ if( !pOLEExp )
+ {
+ UINT32 nSvxMSDffOLEConvFlags = 0;
+ const OfaFilterOptions* pOpt = OFF_APP()->GetFilterOptions();
+ if( pOpt->IsStarMath2MathType() )
+ nSvxMSDffOLEConvFlags |= OLE_STARMATH_2_MATHTYPE;
+ if( pOpt->IsStarWriter2WinWord() )
+ nSvxMSDffOLEConvFlags |= OLE_STARWRITER_2_WINWORD;
+ if( pOpt->IsStarCalc2Excel() )
+ nSvxMSDffOLEConvFlags |= OLE_STARCALC_2_EXCEL;
+ if( pOpt->IsStarImpress2PowerPoint() )
+ nSvxMSDffOLEConvFlags |= OLE_STARIMPRESS_2_POWERPOINT;
+
+ pOLEExp = new SvxMSExportOLEObjects( nSvxMSDffOLEConvFlags );
+ }
+#endif
+
+ PrepareStorage();
+
+ PutNumFmtFontsInAttrPool();
+ PutEditEngFontsInAttrPool();
+
+ pFib = new WW8Fib( bWrtWW8 ? 8 : 6 );
+
+ SvStream* pOldStrm = pStrm; // JP 19.05.99: wozu das ???
+ SvStorageStreamRef xWwStrm( pStg->OpenStream( aMainStg ) );
+ SvStorageStreamRef xTableStrm( xWwStrm ), xDataStrm( xWwStrm );
+ xWwStrm->SetBufferSize( 32768 );
+
+ if( bWrtWW8 )
+ {
+ pFib->fWhichTblStm = 1;
+ xTableStrm = pStg->OpenStream( sTableStream, STREAM_STD_WRITE );
+ xDataStrm = pStg->OpenStream( sDataStream, STREAM_STD_WRITE );
+
+ xDataStrm->SetBufferSize( 32768 ); // fuer Grafiken
+ xTableStrm->SetBufferSize( 16384 ); // fuer die Font-/Style-Table, usw.
+
+ xTableStrm->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ xDataStrm->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ }
+
+ pStrm = &xWwStrm;
+ pTableStrm = &xTableStrm;
+ pDataStrm = &xDataStrm;
+
+ pStrm->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+
+ pAktPageDesc = &pDoc->GetPageDesc( 0 ); // Default: "Standard"
+ pSepx = new WW8_WrPlcSepx; // Sepx
+ {
+ const SfxPoolItem* pI;
+ const SwNode* pNd = pCurPam->GetCntntNode();
+ const SfxItemSet* pSet = pNd ? &((SwCntntNode*)pNd)->GetSwAttrSet()
+ : 0;
+
+ ULONG nRstLnNum = pSet ? ((SwFmtLineNumber&)pSet->Get(
+ RES_LINENUMBER )).GetStartValue()
+ : 0;
+
+ const SwTableNode* pTblNd = pCurPam->GetNode()->FindTableNode();
+ const SwSectionNode* pSectNd;
+ if( pTblNd )
+ {
+ pSet = &pTblNd->GetTable().GetFrmFmt()->GetAttrSet();
+ pNd = pTblNd;
+ }
+ else if( 0 != ( pSectNd = pNd->FindSectionNode() ) )
+ {
+ if( TOX_HEADER_SECTION == pSectNd->GetSection().GetType() &&
+ pSectNd->FindStartNode()->IsSectionNode() )
+ pSectNd = pSectNd->FindStartNode()->GetSectionNode();
+
+ if( TOX_CONTENT_SECTION == pSectNd->GetSection().GetType() )
+ {
+ pNd = pSectNd;
+ pCurPam->GetPoint()->nNode = *pNd;
+ }
+ }
+
+ // Hole evtl. Pagedesc des 1. Nodes
+ if( pSet && SFX_ITEM_ON == pSet->GetItemState(RES_PAGEDESC,TRUE,&pI)
+ && ((SwFmtPageDesc*)pI)->GetPageDesc() )
+ pSepx->AppendSep( 0, *(SwFmtPageDesc*)pI, *pNd, nRstLnNum );
+ else
+ pSepx->AppendSep( 0, pAktPageDesc, 0, nRstLnNum );
+ }
+
+ pFtn = new WW8_WrPlcFtnEdn( TXT_FTN ); // Ftn
+ pEdn = new WW8_WrPlcFtnEdn( TXT_EDN ); // Edn
+ pAtn = new WW8_WrPlcPostIt; // PostIts
+ pTxtBxs = new WW8_WrPlcTxtBoxes( TXT_TXTBOX );
+ pHFTxtBxs = new WW8_WrPlcTxtBoxes( TXT_HFTXTBOX );
+
+ pSdrObjs = new WW8_WrPlcDrawObj( TXT_TXTBOX ); // Draw-/Fly-Objects
+ pHFSdrObjs = new WW8_WrPlcDrawObj( TXT_HFTXTBOX ); // Draw-/Fly-Objects
+ // in header or footer
+
+ pBkmks = new WW8_WrtBookmarks; // Bookmarks
+ CreateBookmarkTbl();
+
+ pPapPlc = new WW8_WrPlcPn( *this, PAP, pFib->fcMin );
+ pChpPlc = new WW8_WrPlcPn( *this, CHP, pFib->fcMin );
+ pO = new WW8Bytes( 128, 128 );
+ pStyles = new WW8WrtStyle( *this );
+ pFldMain = new WW8_WrPlcFld( 2, TXT_MAINTEXT );
+ pFldHdFt = new WW8_WrPlcFld( 2, TXT_HDFT );
+ pFldFtn = new WW8_WrPlcFld( 2, TXT_FTN );
+ pFldEdn = new WW8_WrPlcFld( 2, TXT_EDN );
+ pFldTxtBxs = new WW8_WrPlcFld( 2, TXT_TXTBOX );
+ pFldHFTxtBxs = new WW8_WrPlcFld( 2, TXT_HFTXTBOX );
+
+ pGrf = new SwWW8WrGrf( *this );
+ pPiece = new WW8_WrPct( pFib->fcMin );
+ pDop = new WW8Dop;
+
+ USHORT nRedlineMode = pDoc->GetRedlineMode();
+ pDop->fRevMarking = 0 != (REDLINE_ON & nRedlineMode);
+ pDop->fRMView = 0 != ( REDLINE_SHOW_DELETE & nRedlineMode );
+ if( pDoc->GetRedlineTbl().Count() )
+ pDoc->SetRedlineMode( nRedlineMode | REDLINE_SHOW_DELETE |
+ REDLINE_SHOW_INSERT );
+
+ // set AutoHyphenation flag if found in default para style
+ const SfxPoolItem* pItem;
+ SwTxtFmtColl* pStdTxtFmtColl = pDoc->GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+ if( pStdTxtFmtColl
+ && SFX_ITEM_SET == pStdTxtFmtColl->GetItemState(
+ RES_PARATR_HYPHENZONE, FALSE, &pItem ) )
+ pDop->fAutoHyphen = ((SvxHyphenZoneItem*)pItem)->IsHyphen();
+
+ // make unique OrdNums (Z-Order) for all drawing-/fly Objects
+ if( pDoc->GetDrawModel() )
+ pDoc->GetDrawModel()->GetPage( 0 )->RecalcObjOrdNums();
+
+ StoreDoc1();
+
+ if( nRedlineMode != pDoc->GetRedlineMode() )
+ pDoc->SetRedlineMode( nRedlineMode );
+
+ if( pUsedNumTbl ) // all used NumRules
+ {
+ // clear array - it's an auto delete array
+ pUsedNumTbl->Remove( 0, pUsedNumTbl->Count() );
+ delete pUsedNumTbl;
+ }
+
+ DELETEZ( pGrf );
+ DELETEZ( pFldFtn );
+ DELETEZ( pFldTxtBxs );
+ DELETEZ( pFldHFTxtBxs );
+ DELETEZ( pFldEdn );
+ DELETEZ( pFldHdFt );
+ DELETEZ( pFldMain );
+ DELETEZ( pStyles );
+ DELETEZ( pO );
+ DELETEZ( pChpPlc );
+ DELETEZ( pPapPlc );
+ DELETEZ( pSepx );
+
+ delete pRedlAuthors;
+ delete pSdrObjs;
+ delete pHFSdrObjs;
+ delete pTxtBxs;
+ delete pHFTxtBxs;
+ delete pAtn;
+ delete pEdn;
+ delete pFtn;
+ delete pBkmks;
+ delete pPiece;
+ delete pDop;
+ delete pFib;
+ pStrm = pOldStrm;
+
+
+ xWwStrm->SetBufferSize( 0 );
+ if( bWrtWW8 )
+ {
+ xTableStrm->SetBufferSize( 0 );
+ xDataStrm->SetBufferSize( 0 );
+ if( 0 == pDataStrm->Seek( STREAM_SEEK_TO_END ))
+ {
+ xDataStrm.Clear();
+ pDataStrm = 0;
+ pStg->Remove( sDataStream );
+ }
+ }
+
+ return 0;
+}
+
+
+void SwWW8Writer::PrepareStorage()
+{
+ ULONG nLen;
+ const BYTE* pData;
+ const char* pName;
+ UINT32 nId1;
+
+ if( bWrtWW8 )
+ {
+ static char __READONLY_DATA aUserName[] = "Microsoft Word-Document";
+ static BYTE __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x09, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x46, 0x18, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x57, 0x6F, 0x72, 0x64, 0x2D, 0x44,
+ 0x6F, 0x6B, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x4D, 0x53, 0x57, 0x6F,
+ 0x72, 0x64, 0x44, 0x6F, 0x63, 0x00, 0x10, 0x00,
+ 0x00, 0x00, 0x57, 0x6F, 0x72, 0x64, 0x2E, 0x44,
+ 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E,
+ 0x38, 0x00, 0xF4, 0x39, 0xB2, 0x71, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00 };
+
+ pName = aUserName;
+ pData = aCompObj;
+ nLen = sizeof( aCompObj );
+ nId1 = 0x00020906L;
+ }
+ else
+ {
+ static char __READONLY_DATA aUserName[] = "Microsoft Word 6.0 Document";
+ static BYTE __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x09, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x46, 0x1C, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x57, 0x6F, 0x72, 0x64, 0x20, 0x36,
+ 0x2E, 0x30, 0x2D, 0x44, 0x6F, 0x6B, 0x75, 0x6D,
+ 0x65, 0x6E, 0x74, 0x00, 0x0A, 0x00, 0x00, 0x00,
+ 0x4D, 0x53, 0x57, 0x6F, 0x72, 0x64, 0x44, 0x6F,
+ 0x63, 0x00, 0x10, 0x00, 0x00, 0x00, 0x57, 0x6F,
+ 0x72, 0x64, 0x2E, 0x44, 0x6F, 0x63, 0x75, 0x6D,
+ 0x65, 0x6E, 0x74, 0x2E, 0x36, 0x00, 0x00, 0x00,
+ 0x00, 0x00 };
+
+ pName = aUserName;
+ pData = aCompObj;
+ nLen = sizeof( aCompObj );
+ nId1 = 0x00020900L;
+ }
+
+ SvGlobalName aGName( nId1, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x46 );
+ pStg->SetClass( aGName, 0, String::CreateFromAscii( pName ));
+ SvStorageStreamRef xStor( pStg->OpenStream( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "\1CompObj" ))));
+ xStor->Write( pData, nLen );
+ // noch mal ueberplaetten, um auch Clipboardformat zu setzen
+ pDoc->GetInfo()->SavePropertySet( pStg ); // DocInfo
+}
+
+
+ULONG SwWW8Writer::WriteStorage()
+{
+ long nMaxNode = pDoc->GetNodes().Count();
+ ::StartProgress( STR_STATSTR_W4WWRITE, 0, nMaxNode, pDoc->GetDocShell() );
+
+ // Tabelle am Doc.-Anfang beachten
+ {
+ SwTableNode * pTNd = pCurPam->GetNode()->FindTableNode();
+ if( pTNd && bWriteAll )
+ // mit dem TabellenNode anfangen !!
+ pCurPam->GetPoint()->nNode = *pTNd;
+ }
+
+ // Tabelle fuer die freifliegenden Rahmen erzeugen, aber nur wenn
+ // das gesamte Dokument geschrieben wird
+ nAktFlyPos = 0;
+ SwPosFlyFrms aFlyPos;
+ pDoc->GetAllFlyFmts( aFlyPos, bWriteAll ? 0 : pOrigPam, bWrtWW8 );
+ // Die Sonderbehandlung fuer Teilausgabe fehlt noch ( siehe RTF )
+ pFlyPos = &aFlyPos;
+
+ ULONG nRet = StoreDoc();
+
+ // loesche die Tabelle mit den freifliegenden Rahmen
+ for( USHORT i = aFlyPos.Count(); i > 0; )
+ delete aFlyPos[ --i ];
+
+ ::EndProgress( pDoc->GetDocShell() );
+ bWrtWW8 = FALSE; // sicherheitshalber: Default fuer's naechste Mal
+ return nRet;
+}
+
+SwWW8Writer::SwWW8Writer( const String& rFltName )
+ : pChpIter( 0 ), aMainStg( sMainStream ), pPapPlc( 0 ), pChpPlc( 0 ),
+ pO( 0 ), pAktPageDesc( 0 ), pISet( 0 ), pUsedNumTbl( 0 ), pBmpPal( 0 ),
+ pKeyMap( 0 )
+#if SUPD>593
+ , pOLEExp( 0 )
+#endif
+{
+ bWrtWW8 = rFltName.EqualsAscii( FILTER_WW8 );
+}
+
+SwWW8Writer::~SwWW8Writer()
+{
+ if( pBmpPal )
+ delete pBmpPal;
+ if( pKeyMap )
+ {
+ NfKeywordTable* pDel = (NfKeywordTable*)pKeyMap;
+ delete [] pDel;
+ }
+#if SUPD>593
+ if( pOLEExp )
+ delete pOLEExp;
+#endif
+}
+
+void GetWW8Writer( const String& rFltName, WriterRef& xRet )
+{
+ xRet = new SwWW8Writer( rFltName );
+}
+
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/wrtww8.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.54 2000/09/18 16:04:58 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.53 2000/08/21 10:14:06 khz
+ Export Line Numbering (restart on new section)
+
+ Revision 1.52 2000/07/25 15:16:21 khz
+ #76811# read/write AutoHyphenation flag from/into Document Properties
+
+ Revision 1.51 2000/07/06 15:55:55 khz
+ Document Statistics
+
+ Revision 1.50 2000/07/05 16:07:30 jp
+ new MS Filteroptions - change StarOffice Objects to OLE-Objects
+
+ Revision 1.49 2000/05/15 16:40:34 jp
+ Changes for Unicode
+
+ Revision 1.48 2000/05/12 16:14:07 jp
+ Changes for Unicode
+
+ Revision 1.47 2000/03/28 18:47:53 jp
+ Bug #74360#: WrFkp::Append - calculate the correct offset for W95
+
+ Revision 1.46 2000/03/09 09:23:04 jp
+ Bug #74053#: write sectionbreaks only in maintext
+
+ Revision 1.45 2000/03/03 16:08:37 pl
+ #73771# workaround for c50 intel compiler
+
+ Revision 1.44 2000/03/01 14:21:03 jp
+ Bug #73720#: StoreDoc1 - search the TOX content section
+
+ Revision 1.43 2000/02/11 14:39:55 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.42 1999/12/20 17:41:33 jp
+ Bug #70749#: Date/Time-Numberformats in german format from the formatter
+
+ Revision 1.41 1999/12/15 17:06:18 jp
+ Bug #70913#: write Ftn-/EndNoteInfo - at end of section or page/doc
+
+ Revision 1.40 1999/12/13 13:56:06 jp
+ Bug #70766#: StoreDoc - look for TOX at start of Document
+
+ Revision 1.39 1999/11/25 21:22:29 jp
+ Bug #70131#: OutFields: append the charattributes of the node to the sprms
+
+ Revision 1.38 1999/11/22 18:26:07 jp
+ export of TOX and TOX entries
+
+ Revision 1.37 1999/11/12 13:06:17 jp
+ write correct PAP-Fkps for Version 8
+
+ Revision 1.36 1999/11/02 09:44:13 jp
+ write sprmPHugePapx
+
+ Revision 1.35 1999/10/29 17:40:18 jp
+ export of 'complex'(vert. merged) tables
+
+ Revision 1.34 1999/10/14 21:06:09 jp
+ Bug #68617#,#68705# and other little things
+
+ Revision 1.33 1999/10/14 11:09:20 jp
+ export Redlines into W95/W97
+
+ Revision 1.32 1999/10/13 18:09:45 jp
+ write redlines
+
+ Revision 1.31 1999/10/13 09:08:51 jp
+ write character attributs of SdrObjects
+
+ Revision 1.30 1999/10/11 11:00:14 jp
+ some changes for export EditEngine text in WW-Format
+
+ Revision 1.29 1999/10/04 16:44:40 jp
+ Bug #68679#: check content range of bookmarkpos
+
+ Revision 1.28 1999/09/08 16:29:21 jp
+ Bug #68618#: recognize the write of escher stream
+
+ Revision 1.27 1999/08/31 07:51:34 JP
+ set NumberFormatInt at streams to littleendian
+
+
+ Rev 1.26 31 Aug 1999 09:51:34 JP
+ set NumberFormatInt at streams to littleendian
+
+ Rev 1.25 24 Aug 1999 20:15:50 JP
+ Escher Export
+
+ Rev 1.24 16 Aug 1999 17:16:28 JP
+ W97 Export: experimental escher export (1)
+
+ Rev 1.23 16 Aug 1999 13:05:44 JP
+ write EscherObjects - only a testversion!
+
+ Rev 1.22 21 Jul 1999 18:28:24 JP
+ W97 Export: experimental escher export
+
+ Rev 1.21 06 Jul 1999 14:54:00 JP
+ W97-Export corrections
+
+ Rev 1.20 30 Jun 1999 19:56:42 JP
+ W97-Export: Fields/PostIts/References
+
+ Rev 1.19 24 Jun 1999 22:52:18 JP
+ Export of Bookmarks and Hyperlinks
+
+ Rev 1.18 23 Jun 1999 20:14:40 JP
+ W97-Export: write Bookmarks
+
+ Rev 1.17 23 Jun 1999 12:46:16 JP
+ Export of numbers und outlinenumbers
+
+ Rev 1.16 16 Jun 1999 19:55:20 JP
+ Change interface of base class Writer, Export of W97 NumRules
+
+ Rev 1.15 04 Jun 1999 17:47:52 JP
+ WW97-Export: Code aufgeteilt
+
+ Rev 1.14 03 Jun 1999 21:04:10 JP
+ Export von Seitenvorlagen verbessert: Abstaende/Umrandung/ErsteSeite/...
+
+ Rev 1.13 02 Jun 1999 18:45:40 JP
+ WinWord-Export um Kopf-/Fusszeilen erweitert
+
+ Rev 1.12 31 May 1999 23:14:24 JP
+ Erweiterungen/Umstellungen fuer Export
+
+ Rev 1.11 31 May 1999 18:54:34 JP
+ Bug #66446#,#66457#: Asserts entfernt
+
+ Rev 1.10 28 May 1999 17:09:06 MPA
+ WinWord97 Export
+
+ Rev 1.9 27 May 1999 23:45:06 JP
+ PiceTable eingebaut, Schnittstellen angepasst, usw.
+
+ Rev 1.8 26 May 1999 16:44:28 MPA
+ Anfaenge Piece-Table
+
+ Rev 1.7 26 May 1999 09:39:30 JP
+ OutStyleTab entfernt, OutFontTab mit Fib-Ref, WritePlc ohne Flag
+
+ Rev 1.6 25 May 1999 17:00:10 MPA
+ Anpassung PAPX/CHPX WW97
+
+ Rev 1.5 21 May 1999 19:20:00 JP
+ kleinere Korrekturen
+
+ Rev 1.4 21 May 1999 17:01:00 MPA
+ Anf,nge WW97
+
+ Rev 1.3 21 May 1999 10:51:52 MPA
+ SwAttrItr:CTor von Pointer nach Ref
+
+ Rev 1.2 21 May 1999 02:00:50 JP
+ Export von WW97 Format: allgemeine Methoden und FontTabelle
+
+ Rev 1.1 19 May 1999 19:34:16 JP
+ WinWord97-ExportFilter
+
+ Rev 1.0 19 May 1999 11:20:02 JP
+ WinWord97-ExportFilter
+
+*************************************************************************/
+
diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx
new file mode 100644
index 000000000000..7eab24f3d5b6
--- /dev/null
+++ b/sw/source/filter/ww8/wrtww8.hxx
@@ -0,0 +1,815 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtww8.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WRTWW8_HXX
+#define _WRTWW8_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h> // UINTXX
+#endif
+#ifndef _SV_GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_USHORTS
+#define _SVSTDARR_ULONGS
+#define _SVSTDARR_STRINGS
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+
+#ifndef SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef WRT_FN_HXX
+#include <wrt_fn.hxx>
+#endif
+#ifndef WW8STRUC_HXX
+#include <ww8struc.hxx>
+#endif
+#ifndef _WW8SCAN_HXX
+#include <ww8scan.hxx>
+#endif
+
+
+// einige Forward Deklarationen
+class BitmapPalette;
+class Brush; //JP 04.06.99: die Brush obsolete!!
+class SwEscherEx;
+class DateTime;
+class Font;
+class SdrObject;
+class SfxItemSet;
+class SvStream;
+class SvxBorderLine;
+class SvxFontItem;
+class SvxBoxItem;
+class SwAttrSet;
+class SwBookmark;
+class SwCharFmt;
+class SwCntntNode;
+class SwField;
+class SwFlyFrmFmt;
+class SwFmt;
+class SwFmtCntnt;
+class SwFmtFtn;
+class SwFmtINetFmt;
+class SwFmtRefMark;
+class SwFrmFmt;
+class SwGrfNode;
+class SwModify;
+class SwNodeNum;
+class SwNoTxtNode;
+class SwNumFmt;
+class SwNumRule;
+class SwNumRuleTbl;
+class SwPageDesc;
+class SwFmtPageDesc;
+class SwpHints;
+class SwOLENode;
+class SwPosFlyFrms;
+class SwPostItField;
+class SwRedlineData;
+class SwSection;
+class SwSectionFmt;
+class SwSectionNode;
+class SwTableNode;
+class SwTOXType;
+class SwTOXMark;
+class SwTxtAttr;
+class SwTxtFmtColl;
+class SwTxtNode;
+class SwWW8WrGrf;
+class SwWW8Writer;
+class WW8WrtStyle;
+class WW8Bytes;
+class WW8_AttrIter;
+class WW8_WrFkp;
+class WW8_WrPlc0;
+class WW8_WrPlc1;
+class WW8_WrPlcDrawObj;
+class WW8_WrPlcFld;
+class WW8_WrPlcFtnEdn;
+class WW8_WrPlcPn;
+class WW8_WrPlcPostIt;
+class WW8_WrPlcSepx;
+class WW8_WrPlcTxtBoxes;
+class WW8_WrPct; // Verwaltung
+class WW8_WrPcPtrs;
+class WW8_WrtBookmarks;
+class WW8_WrtRedlineAuthor;
+class SvxMSExportOLEObjects;
+struct WW8_PdAttrDesc;
+struct WW8_SHD;
+
+
+#define WWFL_ULSPACE_LIKE_SWG 0x00000001
+#define WWFL_NO_GRAF 0x00000080
+#define WWFL_NO_OLE 0x00020000
+#define WWFL_KA_DEBUG 0x08000000
+#define WWFL_READ_FROM_FILE 0x40000000
+
+
+#define WW8_CSTY_FTN 15 // Slot# fuer C-Format Fussnotenzeichen
+
+#define GRF_MAGIC_1 0x12 // 3 magic Bytes fuer PicLocFc-Attribute
+#define GRF_MAGIC_2 0x34
+#define GRF_MAGIC_3 0x56
+#define GRF_MAGIC_321 0x563412L
+
+// defines for InsertField- Method
+#define WRITEFIELD_ALL 0xFF
+#define WRITEFIELD_START 0x01
+#define WRITEFIELD_CMD_START 0x02
+#define WRITEFIELD_CMD_END 0x04
+#define WRITEFIELD_END 0x10
+#define WRITEFIELD_CLOSE 0x20
+
+#define TXT_MAINTEXT 0 // Defines fuer TextTyp
+//!!#define TXT_FTNEDN 1
+#define TXT_HDFT 2
+#define TXT_FTN 3
+#define TXT_EDN 4
+#define TXT_ATN 5
+#define TXT_TXTBOX 6
+#define TXT_HFTXTBOX 7
+
+
+extern SwNodeFnTab aWW8NodeFnTab;
+extern SwAttrFnTab aWW8AttrFnTab;
+
+SV_DECL_VARARR( WW8Bytes, BYTE, 128, 128 );
+
+struct WW8_SepInfo
+{
+ const SwPageDesc* pPageDesc;
+ const SwSectionFmt* pSectionFmt;
+ const SwNode* pPDNd;
+ const SwTxtNode* pNumNd;
+ ULONG nLnNumRestartNo;
+ USHORT nPgRestartNo;
+
+ WW8_SepInfo()
+ : pPageDesc(0), pSectionFmt(0), pNumNd(0), pPDNd(0), nPgRestartNo(0),
+ nLnNumRestartNo(0)
+ {}
+
+ WW8_SepInfo( const SwPageDesc* pPD, const SwSectionFmt* pFmt, ULONG nLnRestart )
+ : pPageDesc(pPD), pSectionFmt(pFmt), pNumNd(0), nPgRestartNo(0),
+ nLnNumRestartNo( nLnRestart ), pPDNd( 0 )
+ {}
+};
+SV_DECL_VARARR( WW8_WrSepInfoPtrs, WW8_SepInfo, 4, 4 );
+
+
+class WW8_WrPlcSepx // Plc fuer PageDescs -> Sepx ( Section Extensions )
+{
+ WW8_WrSepInfoPtrs aSects; // PTRARR von SwPageDesc und SwSectionFmt
+ SvULongs aCps; // PTRARR von CPs
+ WW8_PdAttrDesc* pAttrs;
+ WW8_WrPlc0* pTxtPos; // Pos der einzelnen Header / Footer
+
+ void CheckForFacinPg( SwWW8Writer& rWrt ) const;
+ void WriteOlst( SwWW8Writer& rWrt, USHORT i );
+ void WriteFtnEndTxt( SwWW8Writer& rWrt, ULONG nCpStt );
+ void OutHeader( SwWW8Writer& rWrt, const SwFmt& rFmt,
+ ULONG& rCpPos, BYTE nHFFlags, BYTE nFlag );
+ void OutFooter( SwWW8Writer& rWrt, const SwFmt& rFmt,
+ ULONG& rCpPos, BYTE nHFFlags, BYTE nFlag );
+ static void SetHeaderFlag( BYTE& rHeadFootFlags, const SwFmt& rFmt,
+ BYTE nFlag );
+ static void SetFooterFlag( BYTE& rHeadFootFlags, const SwFmt& rFmt,
+ BYTE nFlag );
+ static int HasBorderItem( const SwFmt& rFmt );
+
+public:
+ WW8_WrPlcSepx();
+ ~WW8_WrPlcSepx();
+ void AppendSep( WW8_CP nStartCp,
+ const SwPageDesc* pPd,
+ const SwSectionFmt* pSectionFmt = 0,
+ ULONG nLnNumRestartNo = 0 );
+ void AppendSep( WW8_CP nStartCp, const SwFmtPageDesc& rPd,
+ const SwNode& rNd,
+ ULONG nLnNumRestartNo );
+ void Finish( WW8_CP nEndCp ) { aCps.Insert( nEndCp, aCps.Count() ); }
+ void SetNum( const SwTxtNode* pNumNd );
+ void WriteKFTxt( SwWW8Writer& rWrt );
+ void WriteSepx( SvStream& rStrm ) const;
+ void WritePlcSed( SwWW8Writer& rWrt ) const;
+ void WritePlcHdd( SwWW8Writer& rWrt ) const;
+};
+
+//--------------------------------------------------------------------------
+// class WW8_WrPct zum Aufbau der Piece-Table
+//--------------------------------------------------------------------------
+class WW8_WrPct
+{
+ WW8_WrPcPtrs* pPcts;
+ WW8_FC nOldFc;
+ BOOL bIsUni : 1;
+public:
+ WW8_WrPct( WW8_FC nStartFc );
+ ~WW8_WrPct();
+ void AppendPc( WW8_FC nStartFc, BOOL bIsUnicode );
+ void WritePc( SwWW8Writer& rWrt );
+ void SetParaBreak();
+ BOOL IsUnicode() const { return bIsUni; }
+ ULONG Fc2Cp( ULONG nFc ) const;
+};
+
+
+
+// der WW8-Writer
+class SwWW8Writer: public StgWriter
+{
+friend void WW8_WrPlcSepx::WriteKFTxt( SwWW8Writer& rWrt ); // pO
+friend void WW8_WrPlcSepx::WriteOlst( SwWW8Writer& rWrt, USHORT i );
+friend Writer& OutWW8_SwTxtNode( Writer& rWrt, SwCntntNode& rNode );
+
+ String aMainStg;
+ SvPtrarr aTOXArr;
+ SwPosFlyFrms* pFlyPos; // Pointer auf die aktuelle "FlyFrmTabelle"
+ const SfxItemSet* pISet; // fuer Doppel-Attribute
+ WW8_WrPct* pPiece; // Pointer auf Piece-Table
+ SwNumRuleTbl* pUsedNumTbl; // alle used NumRules
+ WW8_WrtBookmarks* pBkmks;
+ WW8_WrtRedlineAuthor* pRedlAuthors;
+ BitmapPalette* pBmpPal;
+ void* pKeyMap;
+ SvxMSExportOLEObjects* pOLEExp;
+
+ ULONG nIniFlags; // Flags aus der writer.ini
+ USHORT nCharFmtStart;
+ USHORT nFmtCollStart;
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ USHORT nStyleBeforeFly; // Style-Nummer des Nodes,
+ // in/an dem ein Fly verankert ist
+ USHORT nLastFmtId; // Style of last TxtNode in normal range
+
+ virtual ULONG WriteStorage();
+
+ void PrepareStorage();
+ void WriteFkpPlcUsw();
+ void OutFontTab( WW8Fib& pFib );
+ void WriteMainText();
+ void StoreDoc1();
+ ULONG StoreDoc();
+ void Out_Olst( const SwNumRule& rRule );
+ void Out_WwNumLvl( BYTE nWwLevel );
+ void Out_SwNumLvl( BYTE nSwLevel );
+ void Out_NumRuleAnld( const SwNumRule& rRul, const SwNumFmt& rFmt,
+ BYTE nSwLevel );
+ void BuildAnlvBulletBase( WW8_ANLV& rAnlv, BYTE*& rpCh, USHORT& rCharLen,
+ const SwNumFmt& rFmt );
+ static void BuildAnlvBase( WW8_ANLV& rAnlv, BYTE*& rpCh, USHORT& rCharLen,
+ const SwNumRule& rRul, const SwNumFmt& rFmt, BYTE nSwLevel );
+
+ void Out_BorderLine( WW8Bytes& rO, const SvxBorderLine* pLine,
+ USHORT nDist, USHORT nSprmNo, BOOL bShadow );
+
+ void OutListTab();
+ void OutOverrideListTab();
+ void OutListNamesTab();
+
+
+public:
+ const SwPageDesc* pAktPageDesc;
+ WW8Fib* pFib;
+ WW8Dop* pDop;
+ WW8_WrPlcPn* pPapPlc;
+ WW8_WrPlcPn* pChpPlc;
+ WW8_AttrIter* pChpIter;
+ WW8WrtStyle* pStyles;
+ WW8_WrPlcSepx* pSepx;
+ WW8_WrPlcFtnEdn* pFtn;
+ WW8_WrPlcFtnEdn* pEdn;
+ WW8_WrPlcPostIt* pAtn;
+ WW8_WrPlcTxtBoxes *pTxtBxs, *pHFTxtBxs;
+
+ SwFlyFrmFmt* pFlyFmt; // liegt der Node in einem FlyFrame, ist
+ // das Format gesetzt, sonst 0
+
+ Point* pFlyOffset; // zur Justierung eines im Writer als Zeichen
+ // gebundenen Flys, der im WW Absatzgebunden wird.
+
+ WW8_WrPlcFld* pFldMain; // Felder im Haupttext
+ WW8_WrPlcFld* pFldHdFt; // Felder in Header/Footer
+ WW8_WrPlcFld* pFldFtn; // Felder in FootNotes
+ WW8_WrPlcFld* pFldEdn; // Felder in EndNotes
+ WW8_WrPlcFld* pFldTxtBxs; // fields in textboxes
+ WW8_WrPlcFld* pFldHFTxtBxs; // fields in header/footer textboxes
+ SwWW8WrGrf* pGrf;
+ const SwAttrSet* pStyAttr; // StyleAttr fuer Tabulatoren
+ const SwModify* pOutFmtNode; // write Format or Node
+
+ WW8_WrPlcDrawObj *pSdrObjs, // Draw-/Fly-Objects
+ *pHFSdrObjs; // Draw-/Fly-Objects in header or footer
+
+ WW8Bytes* pO;
+
+ SvStream *pTableStrm, *pDataStrm; // Streams fuer WW97 Export
+
+ SwEscherEx* pEscher; // escher export class
+ SwTwips nFlyWidth, nFlyHeight; // Fuer Anpassung Graphic
+
+ BYTE nTxtTyp;
+
+ BOOL bStyDef : 1; // wird Style geschrieben ?
+ BOOL bBreakBefore : 1; // Breaks werden 2mal ausgegeben
+ BOOL bOutKF : 1; // Kopf/Fusstexte werden ausgegeben
+ BOOL bOutFlyFrmAttrs : 1; // Rahmen-Attr von Flys werden ausgegeben
+ BOOL bOutPageDescs : 1; // PageDescs werden ausgegeben ( am Doc-Ende )
+ BOOL bOutFirstPage : 1; // write Attrset of FirstPageDesc
+ BOOL bOutTable : 1; // Tabelle wird ausgegeben
+ // ( wird zB bei Flys in Tabelle zurueckgesetzt )
+ BOOL bIsInTable : 1; // wird sind innerhalb der Ausgabe einer Tabelle
+ // ( wird erst nach der Tabelle zurueckgesetzt )
+ BOOL bOutGrf : 1; // Grafik wird ausgegeben
+ BOOL bWrtWW8 : 1; // Schreibe WW95 oder WW97 FileFormat
+ BOOL bInWriteEscher : 1; // in write textboxes
+ BOOL bStartTOX : 1; // TRUE: a TOX is startet
+ BOOL bInWriteTOX : 1; // TRUE: all content are in a TOX
+ BOOL bFtnAtTxtEnd : 1; // TRUE: all FTN at Textend
+ BOOL bEndAtTxtEnd : 1; // TRUE: all END at Textend
+
+
+ SvxMSExportOLEObjects& GetOLEExp() { return *pOLEExp; }
+
+ static USHORT TranslateToEditEngineId( USHORT nWhich );
+ static USHORT TranslateFromEditEngineId( USHORT nWhich );
+ const SfxPoolItem* HasItem( USHORT nWhich ) const;
+ const SfxPoolItem& GetItem( USHORT nWhich ) const;
+
+ USHORT GetId( const SwTxtFmtColl& rColl ) const;
+ USHORT GetId( const SwCharFmt& rFmt ) const;
+ USHORT GetId( const SvxFontItem& rFont ) const;
+ USHORT GetId( const Font& rFont ) const;
+ USHORT GetId( const SwNumRule& rNumRule ) const;
+ USHORT GetId( const SwTOXType& rTOXType );
+
+ void OutRedline( const SwRedlineData& rRedline );
+ USHORT AddRedlineAuthor( USHORT nId );
+
+ void StartTOX( const SwSection& rSect );
+ void EndTOX( const SwSection& rSect );
+
+ void WriteSpecialText( ULONG nStart, ULONG nEnd, BYTE nTTyp );
+ void WriteKFTxt1( const SwFmtCntnt& rCntnt );
+ void WriteFtnBegin( const SwFmtFtn& rFtn, WW8Bytes* pO = 0 );
+ void WritePostItBegin( const SwPostItField& rFld, WW8Bytes* pO = 0 );
+ void OutWW8FlyFrmsInCntnt( const SwTxtNode& rNd );
+ void OutWW8FlyFrm( const SwFrmFmt& rFlyFrmFmt, const Point& rNdTopLeft );
+ void OutFlyFrms( const SwCntntNode& rNode );
+ void AppendFlyInFlys( WW8_CP& rCP, const SwFrmFmt& rFrmFmt,
+ const Point& rNdTopLeft );
+ void WriteSdrTextObj( const SdrObject& rObj );
+
+ UINT32 GetSdrOrdNum( const SwFrmFmt& rFmt ) const;
+ void CreateEscher();
+ void WriteEscher();
+
+ BOOL Out_SwNum( const SwTxtNode* pNd );
+ void Out_SwFmt( const SwFmt& rFmt, BOOL bPapFmt, BOOL bChpFmt,
+ BOOL bFlyFmt = FALSE );
+ BOOL GetNumberFmt( const SwField& rFld, String& rStr );
+ void OutField( const SwField* pFld, BYTE nFldType,
+ const String& rFldCmd, BYTE nMode = WRITEFIELD_ALL );
+ void StartCommentOutput( const String& rName );
+ void EndCommentOutput( const String& rName );
+ void OutGrf( const SwNoTxtNode* pNd );
+ void AppendBookmarks( const SwTxtNode& rNd, xub_StrLen nAktPos, xub_StrLen nLen );
+ void AppendBookmark( const String& rName, USHORT nOffset = 0 );
+ String GetBookmarkName( USHORT nTyp, const String* pNm, USHORT nSeqNo );
+ BOOL HasRefToObject( USHORT nTyp, const String* pNm, USHORT nSeqNo );
+
+ void WriteAsStringTable( const SvStrings&, INT32& rfcSttbf,
+ INT32& rlcbSttbf, USHORT nExtraLen = 0 );
+ void WriteText();
+ void WriteCR();
+ void WriteChar( sal_Unicode c );
+ void OutSwString( const String&, xub_StrLen nStt, xub_StrLen nLen,
+ BOOL bUnicode, rtl_TextEncoding eChrSet );
+
+ ULONG ReplaceCr( BYTE nChar );
+
+ ULONG Fc2Cp( ULONG nFc ) const { return pPiece->Fc2Cp( nFc ); }
+
+ // einige z.T. static halb-interne Funktions-Deklarationen
+
+ void OutSprmBytes( BYTE* pBytes, USHORT nSiz )
+ { pO->Insert( pBytes, nSiz, pO->Count() ); }
+
+ ULONG GetIniFlags() const { return nIniFlags; }
+ inline BOOL IsUnicode() const { return pPiece->IsUnicode(); }
+
+ const SfxItemSet* GetCurItemSet() const { return pISet; }
+ void SetCurItemSet( const SfxItemSet* pS ) { pISet = pS; }
+
+ void Out_SfxItemSet( const SfxItemSet& rSet, BOOL bPapFmt, BOOL bChpFmt );
+ void Out_SfxBreakItems( const SfxItemSet& rSet, const SwNode& rNd );
+
+ void Out_SwFmtBox( const SvxBoxItem& rBox, BOOL bShadow );
+ void Out_SwFmtTableBox( WW8Bytes& rO, const SvxBoxItem& rBox );
+ BYTE TransCol( const Color& rCol );
+ BOOL TransBrush( const Color& rCol, WW8_SHD& rShd );
+ UINT32 TranslateBorderLine( const SvxBorderLine& pLine,
+ USHORT nDist, BOOL bShadow );
+
+ static long GetDTTM( const DateTime& rDT );
+
+ static BYTE GetNumId( USHORT eNumType );
+ static void CorrTabStopInSet( SfxItemSet& rSet, USHORT nAbsLeft );
+
+ static ULONG FillUntil( SvStream& rStrm, ULONG nEndPos = 0 );
+ static void FillCount( SvStream& rStrm, ULONG nCount );
+
+ static void WriteShort( SvStream& rStrm, INT16 nVal ) { rStrm << nVal; }
+ static void WriteShort( SvStream& rStrm, ULONG nPos, INT16 nVal );
+
+ static void WriteLong( SvStream& rStrm, INT32 nVal ) { rStrm << nVal; }
+ static void WriteLong( SvStream& rStrm, ULONG nPos, INT32 nVal );
+
+ static void WriteString16( SvStream& rStrm, const String& rStr,
+ BOOL bAddZero );
+ static void WriteString8( SvStream& rStrm, const String& rStr,
+ BOOL bAddZero, rtl_TextEncoding eCodeSet );
+
+ static void InsUInt16( WW8Bytes& rO, UINT16 );
+ static void InsUInt32( WW8Bytes& rO, UINT32 );
+ static void InsAsString16( WW8Bytes& rO, const String& );
+ static void InsAsString8( WW8Bytes& rO, const String& rStr,
+ rtl_TextEncoding eCodeSet );
+
+ void InsUInt16( UINT16 n ) { SwWW8Writer::InsUInt16( *pO, n ); }
+ void InsUInt32( UINT32 n ) { SwWW8Writer::InsUInt32( *pO, n ); }
+ void InsAsString16( const String& rStr )
+ { SwWW8Writer::InsAsString16( *pO, rStr ); }
+ void InsAsString8( const String& rStr, rtl_TextEncoding eCodeSet )
+ { SwWW8Writer::InsAsString8( *pO, rStr, eCodeSet ); }
+ void WriteStringAsPara( const String& rTxt, USHORT nStyleId = 0 );
+
+ // nach aussen interessant
+
+ SwWW8Writer( const String& rFltName );
+ virtual ~SwWW8Writer();
+
+ // fuer WW8SaveData
+ SwPaM* GetEndPaM() { return pOrigPam; }
+ void SetEndPaM( SwPaM* pPam ) { pOrigPam = pPam; }
+};
+
+
+class WW8_WrPlcSubDoc // Doppel-Plc fuer Foot-/Endnotes und Postits
+{
+protected:
+ SvULongs aCps; // PTRARR CP-Pos der Verweise
+ SvPtrarr aCntnt; // PTRARR von SwFmtFtn/PostIts/..
+ WW8_WrPlc0* pTxtPos; // Pos der einzelnen Texte
+
+ WW8_WrPlcSubDoc();
+ ~WW8_WrPlcSubDoc();
+
+ void WriteTxt( SwWW8Writer& rWrt, BYTE nTTyp, long& rCount );
+ void WritePlc( SwWW8Writer& rWrt, BYTE nTTyp,
+ long& rTxtStt, long& rTxtCnt,
+ long& rRefStt, long& rRefCnt ) const;
+
+ virtual const SvULongs* GetShapeIdArr() const;
+};
+
+// Doppel-Plc fuer Footnotes/Endnotes
+class WW8_WrPlcFtnEdn : public WW8_WrPlcSubDoc
+{
+ BYTE nTyp;
+public:
+ WW8_WrPlcFtnEdn( BYTE nTTyp ) : nTyp( nTTyp ) {}
+
+ inline void WriteTxt( SwWW8Writer& rWrt );
+ inline void WritePlc( SwWW8Writer& rWrt ) const;
+
+ void Append( WW8_CP nCp, const SwFmtFtn& rFtn );
+};
+
+class WW8_WrPlcPostIt : public WW8_WrPlcSubDoc // Doppel-Plc fuer PostIts
+{
+public:
+ WW8_WrPlcPostIt() {}
+
+ void Append( WW8_CP nCp, const SwPostItField& rPostIt );
+ inline void WriteTxt( SwWW8Writer& rWrt );
+ inline void WritePlc( SwWW8Writer& rWrt ) const;
+};
+
+
+class WW8_WrPlcTxtBoxes : public WW8_WrPlcSubDoc // Doppel-Plc fuer Textboxen
+{ // Rahmen/DrawTextboxes!
+ BYTE nTyp;
+ SvULongs aShapeIds; // VARARR of ShapeIds for the SwFrmFmts
+
+ virtual const SvULongs* GetShapeIdArr() const;
+
+public:
+ WW8_WrPlcTxtBoxes( BYTE nTTyp ) : nTyp( nTTyp ) {}
+
+ void WriteTxt( SwWW8Writer& rWrt );
+ inline void WritePlc( SwWW8Writer& rWrt ) const;
+ void Append( const SdrObject& rObj, UINT32 nShapeId );
+ USHORT Count() const { return aCntnt.Count(); }
+ USHORT GetPos( const VoidPtr& p ) const { return aCntnt.GetPos( p ); }
+};
+
+
+class WW8_WrPlcDrawObj // PC for DrawObjects and Text-/OLE-/GRF-Boxes
+{
+ SvULongs aCps; // VARARR CP-Pos der Verweise
+ SvULongs aShapeIds; // VARARR of ShapeIds for the SwFrmFmts
+ SvPtrarr aCntnt; // PTRARR of SwFrmFmt
+ SvPtrarr aParentPos; // PTRARR of Points
+ BYTE nTTyp;
+
+public:
+ WW8_WrPlcDrawObj( BYTE nType );
+ ~WW8_WrPlcDrawObj();
+
+ void WritePlc( SwWW8Writer& rWrt ) const;
+ BOOL Append( SwWW8Writer&, WW8_CP nCp, const SwFrmFmt& rFmt,
+ const Point& rNdTopLeft );
+ const SvPtrarr& GetCntntArr() const { return aCntnt; }
+ void SetShapeId( const SwFrmFmt& rFmt, UINT32 nId );
+ UINT32 GetShapeId( USHORT n ) const { return aShapeIds[ n ]; }
+};
+
+
+typedef WW8_WrFkp* WW8_FkpPtr; // Plc fuer Chpx und Papx ( incl PN-Plc )
+SV_DECL_PTRARR( WW8_WrFkpPtrs, WW8_FkpPtr, 4, 4 );
+
+class WW8_WrPlcPn // Plc fuer Page Numbers
+{
+ SwWW8Writer& rWrt;
+ WW8_WrFkpPtrs aFkps; // PTRARR
+ USHORT nFkpStartPage;
+ ePLCFT ePlc;
+ BOOL bWrtWW8; // Fuer Writererkennung
+
+public:
+ WW8_WrPlcPn( SwWW8Writer& rWrt, ePLCFT ePl, WW8_FC nStartFc );
+ ~WW8_WrPlcPn();
+ void AppendFkpEntry( WW8_FC nEndFc, short nVarLen = 0, const BYTE* pSprms = 0 );
+ void WriteFkps();
+ void WritePlc();
+};
+
+// class WW8_WrPlc1 ist erstmal nur fuer Felder
+class WW8_WrPlc1
+{
+ SvULongs aPos; // PTRARR von CPs
+ WW8Bytes aDat; // Inhalte ( Strukturen )
+ USHORT nStructSiz;
+protected:
+ USHORT Count() const { return aPos.Count(); }
+ void Write( SvStream& rStrm );
+
+public:
+ WW8_WrPlc1( USHORT nStructSz );
+ void Append( WW8_CP nCp, const void* pData );
+ void Finish( ULONG nLastCp, ULONG nStartCp );
+};
+
+// class WW8_WrPlcFld ist fuer Felder
+class WW8_WrPlcFld: public WW8_WrPlc1
+{
+ BYTE nTxtTyp;
+public:
+ WW8_WrPlcFld( USHORT nStructSz, BYTE nTTyp )
+ : WW8_WrPlc1( nStructSz ), nTxtTyp( nTTyp )
+ {}
+ BOOL Write( SwWW8Writer& rWrt );
+};
+
+
+// class SwWW8WrGrf sammelt Grafiken und gibt sie aus
+class SwWW8WrGrf
+{
+ SwWW8Writer& rWrt; // SwWW8Writer fuer Zugriff auf die Vars
+ SvPtrarr aNds; // Positionen der SwGrfNodes und SwOleNodes
+ SvPtrarr aFlys; // Umgebende FlyFrms dazu
+ SvULongs aPos; // FilePos der Grafiken
+ SvUShorts aWid; // Breite der Grafiken
+ SvUShorts aHei; // Hoehe der Grafiken
+ USHORT nIdx; // Index in File-Positionen
+
+ void Write1GrfHdr( SvStream& rStrm, const SwNoTxtNode* pNd,
+ const SwFlyFrmFmt* pFly, UINT16 mm, UINT16 nWidth, UINT16 nHeight );
+ void Write1Grf1( SvStream& rStrm, const SwGrfNode* pGrfNd,
+ const SwFlyFrmFmt* pFly, UINT16 nWidth, UINT16 nHeight );
+ void Write1Grf( SvStream& rStrm, const SwNoTxtNode* pNd,
+ const SwFlyFrmFmt* pFly, UINT16 nWidth, UINT16 nHeight );
+public:
+ SwWW8WrGrf( SwWW8Writer& rW )
+ : rWrt( rW ), aNds( 4, 4 ), aFlys( 4, 4 ), aPos( 4, 4 ),
+ aWid( 4, 4 ), aHei( 4, 4 )
+ {}
+ void Insert( const SwNoTxtNode* pNd, const SwFlyFrmFmt* pFly );
+ void Write();
+ ULONG GetFPos() { return ( nIdx < aNds.Count() ) ? aPos[nIdx++] : 0; }
+};
+
+// The class WW8_AttrIter is a helper class to build the Fkp.chpx. This
+// class may be overloaded for output the SwTxtAttrs and the
+// EditEngineTxtAttrs.
+class WW8_AttrIter
+{
+ WW8_AttrIter* pOld;
+protected:
+ SwWW8Writer& rWrt;
+public:
+ WW8_AttrIter( SwWW8Writer& rWrt );
+ ~WW8_AttrIter();
+
+ virtual const SfxPoolItem* HasTextItem( USHORT nWhich ) const = 0;
+ virtual const SfxPoolItem& GetItem( USHORT nWhich ) const = 0;
+ virtual void GetItems( WW8Bytes& rItems ) const;
+};
+
+
+class WW8WrtStyle
+{
+ SwWW8Writer& rWrt;
+ SwFmt** pFmtA;
+ USHORT nPOPosStdLen1, nPOPosStdLen2;
+ USHORT nUsedSlots;
+
+ void BuildStyleTab();
+ void BuildUpx( const SwFmt* pFmt, BOOL bPap, USHORT nPos,
+ BOOL bInsDefCharSiz );
+ USHORT Build_GetWWSlot( const SwFmt& rFmt );
+ USHORT GetWWId( const SwFmt& rFmt ) const;
+ void Set1StyleDefaults( const SwFmt& rFmt, BOOL bPap );
+ void Out1Style( SwFmt* pFmt, USHORT nPos );
+
+ void WriteStyle( SvStream& rStrm );
+ void SkipOdd();
+ void BuildStd( const String& rName, BOOL bPapFmt, short nWwBase,
+ short nWwNext, USHORT nWwId );
+
+public:
+ WW8WrtStyle( SwWW8Writer& rWr );
+ ~WW8WrtStyle();
+
+ void OutStyleTab();
+ USHORT Sty_GetWWSlot( const SwFmt& rFmt ) const;
+};
+
+
+struct WW8SaveData
+{
+ SwWW8Writer& rWrt;
+ Point* pOldFlyOffset;
+ WW8Bytes* pOOld;
+ SwPaM* pOldPam, *pOldEnd;
+ SwFlyFrmFmt* pOldFlyFmt;
+ const SwPageDesc* pOldPageDesc;
+
+ BOOL bOldWriteAll : 1;
+ BOOL bOldOutTable : 1;
+ BOOL bOldIsInTable: 1;
+ BOOL bOldFlyFrmAttrs : 1;
+ BOOL bOldStartTOX : 1;
+ BOOL bOldInWriteTOX : 1;
+ // bOutPageDesc muss nicht gesichert werden, da es nur nicht waehrend
+ // der Ausgabe von Spezial-Texten veraendert wird.
+
+ WW8SaveData( SwWW8Writer&, ULONG nStt, ULONG nEnd );
+ ~WW8SaveData();
+};
+
+
+// einige halb-interne Funktions-Deklarationen fuer die Node-Tabelle
+
+Writer& OutWW8_SwGrfNode( Writer& rWrt, SwCntntNode& rNode );
+Writer& OutWW8_SwOleNode( Writer& rWrt, SwCntntNode& rNode );
+Writer& OutWW8_SwSectionNode(Writer& rWrt, SwSectionNode& rSectionNode );
+Writer& OutWW8_SwTblNode( Writer& rWrt, SwTableNode & rNode );
+
+Writer& OutWW8_SwFmtHoriOrient( Writer& rWrt, const SfxPoolItem& rHt );
+Writer& OutWW8_SwFmtVertOrient( Writer& rWrt, const SfxPoolItem& rHt );
+
+
+// --------------------------- inlines ---------------------------------
+
+inline void WW8_WrPlcFtnEdn::WriteTxt( SwWW8Writer& rWrt )
+{
+ if( TXT_FTN == nTyp )
+ {
+ WW8_WrPlcSubDoc::WriteTxt( rWrt, TXT_FTN, rWrt.pFib->ccpFtn );
+ rWrt.pFldFtn->Finish( rWrt.Fc2Cp( rWrt.Strm().Tell() ),
+ rWrt.pFib->ccpText );
+ }
+ else
+ {
+ WW8_WrPlcSubDoc::WriteTxt( rWrt, TXT_EDN, rWrt.pFib->ccpEdn );
+ rWrt.pFldEdn->Finish( rWrt.Fc2Cp( rWrt.Strm().Tell() ),
+ rWrt.pFib->ccpText + rWrt.pFib->ccpFtn
+ + rWrt.pFib->ccpHdr + rWrt.pFib->ccpAtn );
+ }
+}
+
+inline void WW8_WrPlcFtnEdn::WritePlc( SwWW8Writer& rWrt ) const
+{
+ if( TXT_FTN == nTyp )
+ WW8_WrPlcSubDoc::WritePlc( rWrt, TXT_FTN,
+ rWrt.pFib->fcPlcffndTxt, rWrt.pFib->lcbPlcffndTxt,
+ rWrt.pFib->fcPlcffndRef, rWrt.pFib->lcbPlcffndRef );
+ else
+ WW8_WrPlcSubDoc::WritePlc( rWrt, TXT_EDN,
+ rWrt.pFib->fcPlcfendTxt, rWrt.pFib->lcbPlcfendTxt,
+ rWrt.pFib->fcPlcfendRef, rWrt.pFib->lcbPlcfendRef );
+}
+
+
+void WW8_WrPlcPostIt::WriteTxt( SwWW8Writer& rWrt )
+{
+ WW8_WrPlcSubDoc::WriteTxt( rWrt, TXT_ATN, rWrt.pFib->ccpAtn );
+}
+
+void WW8_WrPlcPostIt::WritePlc( SwWW8Writer& rWrt ) const
+{
+ WW8_WrPlcSubDoc::WritePlc( rWrt, TXT_ATN,
+ rWrt.pFib->fcPlcfandTxt, rWrt.pFib->lcbPlcfandTxt,
+ rWrt.pFib->fcPlcfandRef, rWrt.pFib->lcbPlcfandRef );
+}
+
+void WW8_WrPlcTxtBoxes::WritePlc( SwWW8Writer& rWrt ) const
+{
+ if( TXT_TXTBOX == nTyp )
+ WW8_WrPlcSubDoc::WritePlc( rWrt, nTyp,
+ rWrt.pFib->fcPlcftxbxBkd, rWrt.pFib->lcbPlcftxbxBkd,
+ rWrt.pFib->fcPlcftxbxTxt, rWrt.pFib->lcbPlcftxbxTxt );
+ else
+ WW8_WrPlcSubDoc::WritePlc( rWrt, nTyp,
+ rWrt.pFib->fcPlcfHdrtxbxBkd, rWrt.pFib->lcbPlcfHdrtxbxBkd,
+ rWrt.pFib->fcPlcfHdrtxbxTxt, rWrt.pFib->lcbPlcfHdrtxbxTxt );
+}
+
+
+
+#endif // _WRTWW8_HXX
+
diff --git a/sw/source/filter/ww8/wrtww8gr.cxx b/sw/source/filter/ww8/wrtww8gr.cxx
new file mode 100644
index 000000000000..2b5f3fc639b9
--- /dev/null
+++ b/sw/source/filter/ww8/wrtww8gr.cxx
@@ -0,0 +1,697 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtww8gr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#include <hintids.hxx>
+
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _VIRDEV_HXX //autogen
+#include <vcl/virdev.hxx>
+#endif
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _IPOBJ_HXX //autogen
+#include <so3/ipobj.hxx>
+#endif
+#ifndef _SVSTOR_HXX //autogen wg. SvStorage
+#include <so3/svstor.hxx>
+#endif
+#ifndef _FILTER_HXX //autogen
+#include <svtools/filter.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_SHADITEM_HXX //autogen
+#include <svx/shaditem.hxx>
+#endif
+#ifndef _SVX_SHADITEM_HXX //autogen
+#include <svx/shaditem.hxx>
+#endif
+#ifndef _MSOLEEXP_HXX
+#include <svx/msoleexp.hxx>
+#endif
+
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _NDGRF_HXX
+#include <ndgrf.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx> // class SwFlyFrmFmt
+#endif
+#ifndef _GRFATR_HXX
+#include <grfatr.hxx> // class SwCropGrf
+#endif
+#ifndef _NDOLE_HXX
+#include <ndole.hxx>
+#endif
+#ifndef _WW8STRUC_HXX
+#include <ww8struc.hxx>
+#endif
+#ifndef _WRTWW8_HXX
+#include <wrtww8.hxx>
+#endif
+
+
+#define WW8_ASCII2STR(s) String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(s))
+
+// Damit KA debuggen kann, ohne sich den ganzen Writer zu holen, ist
+// temporaer dieses Debug gesetzt. Ist ausserdem noch das passende IniFlag
+// gesetzt, dann werden in d:\ Hilfsdateien erzeugt.
+// !! sollte demnaechst wieder entfernt werden !!
+// #define DEBUG_KA
+
+
+// ToDo:
+// 5. Die MapModes, die Win nicht kann, umrechnen
+
+// OutGrf() wird fuer jeden GrafNode im Doc gerufen. Es wird ein PicLocFc-Sprm
+// eingefuegt, der statt Adresse ein Magic ULONG enthaelt. Ausserdem wird
+// in der Graf-Klasse der GrfNode-Ptr gemerkt ( fuers spaetere Ausgeben der
+// Grafiken und Patchen der PicLocFc-Attribute )
+
+Writer& OutWW8_SwGrfNode( Writer& rWrt, SwCntntNode& rNode )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ rWW8Wrt.OutGrf( rNode.GetGrfNode() );
+
+ rWW8Wrt.pFib->fHasPic = 1;
+
+ return rWrt;
+}
+
+Writer& OutWW8_SwOleNode( Writer& rWrt, SwCntntNode& rNode )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ if( !(rWW8Wrt.GetIniFlags() & WWFL_NO_OLE ) )
+ {
+ if( rWW8Wrt.bWrtWW8 )
+ {
+ static BYTE aSpecOLE[] = {
+ 0x03, 0x6a, 0, 0, 0, 0, // sprmCPicLocation
+ 0x0a, 0x08, 1, // sprmCFOLE2
+ 0x56, 0x08, 1 // sprmCFObj
+ };
+
+ const SwOLENode& rOLENd = (SwOLENode&)rNode;
+ UINT32 nPictureId = (long)&rOLENd;
+ BYTE* pDataAdr = aSpecOLE + 2;
+ Set_UInt32( pDataAdr, nPictureId );
+
+ SvStorageRef xObjStg = rWW8Wrt.GetStorage().OpenStorage(
+ String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "ObjectPool" )),
+ STREAM_READWRITE| STREAM_SHARE_DENYALL );
+ if( xObjStg.Is() )
+ {
+ String sStorageName( '_' );
+ sStorageName += String::CreateFromInt32( nPictureId );
+ SvStorageRef xOleStg = xObjStg->OpenStorage( sStorageName,
+ STREAM_READWRITE| STREAM_SHARE_DENYALL );
+ if( xOleStg.Is() )
+ {
+ SvInPlaceObjectRef xObj( ((SwOLENode&)rOLENd).
+ GetOLEObj().GetOleRef() );
+ if( xObj.Is() )
+ {
+ rWW8Wrt.GetOLEExp().ExportOLEObject( *xObj, *xOleStg );
+
+ // write as embedded field - the other things will
+ // be done in the escher export
+ String sServer( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( " EINBETTEN " )));
+ ( sServer += xOleStg->GetUserName() ) += ' ';
+
+ rWW8Wrt.OutField( 0, 58, sServer,
+ WRITEFIELD_START |
+ WRITEFIELD_CMD_START |
+ WRITEFIELD_CMD_END );
+
+ rWW8Wrt.pChpPlc->AppendFkpEntry( rWrt.Strm().Tell(),
+ sizeof( aSpecOLE ), aSpecOLE );
+
+ rWW8Wrt.WriteChar( 0x1 );
+
+ rWW8Wrt.OutField( 0, 58, aEmptyStr,
+ WRITEFIELD_END |
+ WRITEFIELD_CLOSE );
+ rWW8Wrt.WriteCR(); // CR danach
+ }
+ }
+ }
+ }
+ else
+ rWW8Wrt.OutGrf( rNode.GetOLENode() );
+ }
+ return rWrt;
+}
+
+
+void SwWW8Writer::OutGrf( const SwNoTxtNode* pNd )
+{
+ if( nIniFlags & WWFL_NO_GRAF )
+ return; // Iniflags: kein Grafik-Export
+
+ if( !pFlyFmt ) // Grafik mit eigenem Frame ( eigentlich immer )
+ {
+ ASSERT( !this, "+Grafik ohne umgebenden Fly" );
+ return ;
+ }
+
+ // GrfNode fuer spaeteres rausschreiben der Grafik merken
+ pGrf->Insert( pNd, pFlyFmt );
+
+ pChpPlc->AppendFkpEntry( pStrm->Tell(), pO->Count(), pO->GetData() );
+ pO->Remove( 0, pO->Count() ); // leeren
+
+ WriteChar( (char)1 ); // Grafik-Sonderzeichen in Haupttext einfuegen
+
+ BYTE aArr[ 14 ];
+ BYTE* pArr = aArr;
+
+ // sprmCFSpec
+ if( bWrtWW8 )
+ Set_UInt16( pArr, 0x855 );
+ else
+ Set_UInt8( pArr, 117 );
+ Set_UInt8( pArr, 1 );
+
+ // sprmCPicLocation
+ if( bWrtWW8 )
+ Set_UInt16( pArr, 0x6a03 );
+ else
+ {
+ Set_UInt8( pArr, 68 );
+ Set_UInt8( pArr, 4 );
+ }
+ Set_UInt32( pArr, GRF_MAGIC_321 );
+
+ // Magic variieren, damit verschiedene Grafik-Attribute nicht
+ // gemerged werden
+ static BYTE nAttrMagicIdx = 0;
+ --pArr;
+ Set_UInt8( pArr, nAttrMagicIdx++ );
+ pChpPlc->AppendFkpEntry( pStrm->Tell(), pArr - aArr, aArr );
+
+ RndStdIds eAn = pFlyFmt->GetAttrSet().GetAnchor( FALSE ).GetAnchorId();
+ if( eAn == FLY_AT_CNTNT || eAn == FLY_PAGE )
+ {
+ WriteChar( (char)0x0d ); // umgebenden Rahmen mit CR abschliessen
+
+ static BYTE __READONLY_DATA nSty[2] = { 0, 0 };
+ pO->Insert( nSty, 2, pO->Count() ); // Style #0
+ BOOL bOldGrf = bOutGrf;
+ bOutGrf = TRUE;
+
+ Out_SwFmt( *pFlyFmt, FALSE, FALSE, TRUE ); // Fly-Attrs
+
+ bOutGrf = bOldGrf;
+ pPapPlc->AppendFkpEntry( pStrm->Tell(), pO->Count(), pO->GetData() );
+ pO->Remove( 0, pO->Count() ); // leeren
+ }
+}
+
+void SwWW8WrGrf::Insert( const SwNoTxtNode* pNd, const SwFlyFrmFmt* pFly )
+{
+ aNds.Insert( (VoidPtr)pNd, aNds.Count() );
+ aFlys.Insert( (VoidPtr)pFly, aFlys.Count() );
+ if( rWrt.nFlyWidth > 0 && rWrt.nFlyHeight > 0 )
+ {
+ aWid.Insert( (UINT16)rWrt.nFlyWidth, aWid.Count() ); // hier steht die ware Groesse
+ aHei.Insert( (UINT16)rWrt.nFlyHeight, aHei.Count() ); // naemlich im uebergeordneten Frame
+ }
+ else
+ {
+ Size aGrTwipSz( pNd->GetTwipSize() );
+ //JP 05.12.98: falls die Grafik noch nie angezeigt wurde und es sich
+ // um eine gelinkte handelt, so ist keine Size gesetzt. In
+ // diesem Fall sollte man sie mal reinswappen.
+ if( ( !aGrTwipSz.Width() || !aGrTwipSz.Height() ) &&
+ pNd->IsGrfNode() &&
+ GRAPHIC_DEFAULT == ((SwGrfNode*)pNd)->GetGrf().GetType() )
+ {
+ ((SwGrfNode*)pNd)->SwapIn();
+ aGrTwipSz = pNd->GetTwipSize();
+ }
+
+ aWid.Insert( (UINT16)aGrTwipSz.Width(), aWid.Count() );
+ aHei.Insert( (UINT16)aGrTwipSz.Height(), aHei.Count() );
+ }
+}
+
+void SwWW8WrGrf::Write1GrfHdr( SvStream& rStrm, const SwNoTxtNode* pNd,
+ const SwFlyFrmFmt* pFly,
+ UINT16 mm, UINT16 nWidth, UINT16 nHeight )
+{
+ INT16 nXSizeAdd = 0, nYSizeAdd = 0;
+ INT16 nCropL = 0, nCropR = 0, nCropT = 0, nCropB = 0;
+
+ // Crop-AttributInhalt in Header schreiben ( falls vorhanden )
+ const SwAttrSet* pAttrSet = pNd->GetpSwAttrSet();
+ const SfxPoolItem* pItem;
+ if( pAttrSet && ( SFX_ITEM_ON
+ == pAttrSet->GetItemState( RES_GRFATR_CROPGRF, FALSE, &pItem ) ) )
+ {
+ const SwCropGrf& rCr = *(SwCropGrf*)pItem;
+ nCropL = rCr.GetLeft();
+ nCropR = rCr.GetRight();
+ nCropT = rCr.GetTop();
+ nCropB = rCr.GetBottom();
+ nXSizeAdd -= (INT16)( rCr.GetLeft() - rCr.GetRight() );
+ nYSizeAdd -= (INT16)( rCr.GetTop() - rCr.GetBottom() );
+ }
+
+ Size aGrTwipSz( pNd->GetTwipSize() );
+ //JP 05.12.98: falls die Grafik noch nie angezeigt wurde und es sich
+ // um eine gelinkte handelt, so ist keine Size gesetzt. In
+ // diesem Fall sollte man sie mal reinswappen.
+ if( ( !aGrTwipSz.Width() || !aGrTwipSz.Height() ) &&
+ pNd->IsGrfNode() &&
+ GRAPHIC_DEFAULT == ((SwGrfNode*)pNd)->GetGrf().GetType() )
+ {
+ ((SwGrfNode*)pNd)->SwapIn();
+ aGrTwipSz = pNd->GetTwipSize();
+ }
+
+
+ BOOL bWrtWW8 = rWrt.bWrtWW8;
+ UINT16 nHdrLen = bWrtWW8 ? 0x3A : 0x44;
+
+ BYTE aArr[ sizeof( WW8_PIC_SHADOW ) ];
+ memset( aArr, 0, nHdrLen );
+
+ BYTE* pArr = aArr + 4; //skip lcb
+ Set_UInt16( pArr, nHdrLen ); // set cbHeader
+
+ Set_UInt16( pArr, mm ); // set mm
+ Set_UInt16( pArr, aGrTwipSz.Width() * 254L / 144 ); // set xExt
+ Set_UInt16( pArr, aGrTwipSz.Height() * 254L / 144 ); // set yExt
+ pArr += 16; // skip hMF & rcWinMF
+ Set_UInt16( pArr, (UINT16)aGrTwipSz.Width() ); // set dxaGoal
+ Set_UInt16( pArr, (UINT16)aGrTwipSz.Height() ); // set dyaGoal
+
+ if( aGrTwipSz.Width() + nXSizeAdd ) // set mx
+ Set_UInt16( pArr, ( nWidth * 1000L /
+ ( aGrTwipSz.Width() + nXSizeAdd ) ) );
+ else
+ pArr += 2;
+ if( aGrTwipSz.Height() + nYSizeAdd ) // set my
+ Set_UInt16( pArr, ( nHeight * 1000L /
+ ( aGrTwipSz.Height() + nYSizeAdd ) ) );
+ else
+ pArr += 2;
+
+ Set_UInt16( pArr, nCropL ); // set dxaCropLeft
+ Set_UInt16( pArr, nCropT ); // set dyaCropTop
+ Set_UInt16( pArr, nCropR ); // set dxaCropRight
+ Set_UInt16( pArr, nCropB ); // set dyaCropBottom
+ pArr += 2; // skip Flags
+
+ if( pFly )
+ {
+ const SwAttrSet& rAttrSet = pFly->GetAttrSet();
+ if( SFX_ITEM_ON == rAttrSet.GetItemState( RES_BOX, FALSE, &pItem ) )
+ {
+ const SvxBoxItem* pBox = (const SvxBoxItem*)pItem;
+ if( pBox )
+ {
+ BOOL bShadow = FALSE; // Shadow ?
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_ON
+ == rAttrSet.GetItemState( RES_SHADOW, TRUE, &pItem ) )
+ {
+ const SvxShadowItem* pSI = (const SvxShadowItem*)pItem;
+ bShadow = ( pSI->GetLocation() != SVX_SHADOW_NONE )
+ && ( pSI->GetWidth() != 0 );
+ }
+
+ BYTE aLnArr[4] = { BOX_LINE_TOP, BOX_LINE_LEFT,
+ BOX_LINE_BOTTOM, BOX_LINE_RIGHT };
+ for( BYTE i = 0; i < 4; ++i )
+ {
+ const SvxBorderLine* pLn = pBox->GetLine( aLnArr[ i ] );
+ UINT32 nBrd = pLn
+ ? rWrt.TranslateBorderLine( *pLn,
+ pBox->GetDistance( aLnArr[ i ] ),
+ bShadow )
+ : 0;
+
+ if( bWrtWW8 )
+ Set_UInt32( pArr, nBrd );
+ else
+ Set_UInt16( pArr, (USHORT)nBrd );
+ }
+ }
+ }
+ }
+ rStrm.Write( aArr, nHdrLen );
+}
+
+void SwWW8WrGrf::Write1Grf1( SvStream& rStrm, const SwGrfNode* pGrfNd,
+ const SwFlyFrmFmt* pFly, UINT16 nWidth, UINT16 nHeight )
+{
+ if( pGrfNd->IsLinkedFile() ) // Linked File
+ {
+ String aFileN, aFiltN;
+ UINT16 mm;
+ pGrfNd->GetFileFilterNms( &aFileN, &aFiltN );
+
+ aFileN = INetURLObject::AbsToRel( aFileN, INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET );
+ INetURLObject aUrl( aFileN );
+ if( aUrl.GetProtocol() == INET_PROT_FILE )
+ aFileN = aUrl.PathToFileName();
+
+//JP 05.12.98: nach einigen tests hat sich gezeigt, das WW mit 99 nicht
+// klarkommt. Sie selbst schreiben aber bei Verknuepfunfen,
+// egal um welchen Type es sich handelt, immer den Wert 94.
+// Bug 59859
+// if ( COMPARE_EQUAL == aFiltN.ICompare( "TIF", 3 ) )
+// mm = 99; // 99 = TIFF
+// else
+ mm = 94; // 94 = BMP, GIF
+
+ Write1GrfHdr( rStrm, pGrfNd, pFly, mm, nWidth, nHeight ); // Header
+ rStrm << (BYTE)aFileN.Len(); // Pascal-String schreiben
+ SwWW8Writer::WriteString8( rStrm, aFileN, FALSE, RTL_TEXTENCODING_MS_1252 );
+ }
+ else // Embedded File oder DDE oder so was
+ {
+ Graphic& rGrf = (Graphic&)(pGrfNd->GetGrf());
+ BOOL bSwapped = rGrf.IsSwapOut();
+ ((SwGrfNode*)pGrfNd)->SwapIn(); // immer ueber den Node einswappen !!!
+
+ GDIMetaFile aMeta;
+
+ switch ( rGrf.GetType() )
+ {
+ case GRAPHIC_BITMAP: // Bitmap -> in Metafile abspielen
+ {
+ VirtualDevice aVirt;
+ aMeta.Record( &aVirt );
+ aVirt.DrawBitmap( Point( 0,0 ), rGrf.GetBitmap() );
+ aMeta.Stop();
+ aMeta.WindStart();
+ aMeta.SetPrefMapMode( rGrf.GetPrefMapMode());
+ aMeta.SetPrefSize( rGrf.GetPrefSize());
+ }
+ break;
+ case GRAPHIC_GDIMETAFILE : // GDI ( =SV ) Metafile
+#ifndef VCL
+ case GRAPHIC_WINMETAFILE : // WinMetafile
+#endif
+ aMeta = rGrf.GetGDIMetaFile();
+ break;
+ default : return;
+ }
+
+// ASSERT( aMeta.GetPrefMapMode().GetMapUnit() == MAP_100TH_MM,
+// "MapMode der Grafik ist nicht 1/100mm!" );
+
+#ifdef DEBUG
+ BOOL bSchreibsRaus = FALSE;
+ BOOL bSchreibsRein = FALSE;
+ long nSchreibsRausA = rStrm.Tell();
+ long nSchreibsReinA = nSchreibsRausA;
+#endif
+
+ Write1GrfHdr( rStrm, pGrfNd, pFly, 8, nWidth, nHeight ); // Header
+ WriteWindowMetafileBits( rStrm, aMeta ); // eigentliche Grafik
+
+#ifdef DEBUG
+ if( bSchreibsRaus )
+ {
+ long nSchreibsRausZ = rStrm.Tell();
+ SvFileStream aS( WW8_ASCII2STR( "e:\\ww-exp.wmf" ), STREAM_WRITE );
+ rStrm.Seek( nSchreibsRausA );
+ UINT16 nRead1;
+ BYTE* pBuf = new BYTE[ 8192 ];
+ ULONG nRead = nSchreibsRausZ - nSchreibsRausA;
+ do{
+ nRead1 = ( nRead > 8192 ) ? 8192 : (UINT16)nRead;
+ rStrm.Read( pBuf, nRead1 );
+ aS.Write( pBuf, nRead1 );
+ nRead -= nRead1;
+ }while( nRead );
+ aS.Close();
+ rStrm.Seek( nSchreibsRausZ );
+ }
+ if( bSchreibsRein )
+ {
+ SvFileStream aS( WW8_ASCII2STR( "e:\\ww-imp.wmf" ), STREAM_READ );
+ aS.Seek( STREAM_SEEK_TO_END );
+ ULONG nRead = aS.Tell();
+ aS.Seek( 0 );
+ rStrm.Seek( nSchreibsReinA );
+ UINT16 nRead1;
+ BYTE* pBuf = new BYTE[ 8192 ];
+ do{
+ nRead1 = ( nRead > 8192 ) ? 8192 : (UINT16)nRead;
+ aS.Read( pBuf, nRead1 );
+ rStrm.Write( pBuf, nRead1 );
+ nRead -= nRead1;
+ }while( nRead );
+ aS.Close();
+ // kein Seek, da es hier im Stream weitergehen soll...
+ }
+#endif
+
+ if( bSwapped ) rGrf.SwapOut();
+ }
+}
+
+void SwWW8WrGrf::Write1Grf( SvStream& rStrm, const SwNoTxtNode* pNd,
+ const SwFlyFrmFmt* pFly, UINT16 nWidth, UINT16 nHeight )
+{
+ if( !pNd || ( !pNd->IsGrfNode() && !pNd->IsOLENode() ) )
+ return;
+
+ UINT32 nPos = rStrm.Tell(); // Grafik-Anfang merken
+
+ if( pNd->IsGrfNode() )
+ {
+ const SwGrfNode* pGrfNd = pNd->GetGrfNode();
+ Write1Grf1( rStrm, pGrfNd, pFly, nWidth, nHeight );
+ }
+ else if( pNd->IsOLENode() )
+ {
+ SwOLENode* pOleNd = ((SwNoTxtNode*)pNd)->GetOLENode(); // const wegcasten
+ ASSERT( pOleNd, " Wer hat den OleNode versteckt ?" );
+ SwOLEObj& rSObj= pOleNd->GetOLEObj();
+ const SvInPlaceObjectRef rObj( rSObj.GetOleRef() );
+ SvData aData( FORMAT_GDIMETAFILE );
+
+ // das MetaFile wird sich jetzt ueber die SvData-Schnittstelle
+ // besorgt, d.h. SvData-Object anlegen und via GetData
+ // das MetaFile abholen. MakeMetaFile entfaellt,
+ // der Rest ist gleich geblieben (KA 30.09.96)
+ if ( rObj->GetData( &aData ) )
+ {
+ GDIMetaFile* pMtf = NULL;
+
+ if ( aData.GetData( &pMtf, TRANSFER_MOVE ) )
+ {
+ DBG_ASSERT( pMtf, "Wo ist denn nun das MetaFile?" );
+
+ Size aS ( pMtf->GetPrefSize() );
+#ifdef DEBUG
+ MapMode aMap ( pMtf->GetPrefMapMode() );
+ ASSERT( pMtf->GetActionCount(), "OLE schreiben OK ? ( No Meta-Action )" );
+ ASSERT( pMtf->GetPrefMapMode().GetMapUnit() == MAP_100TH_MM,
+ "MapMode des Ole ist nicht 1/100mm!" );
+#endif
+ pMtf->WindStart();
+ pMtf->Play( Application::GetDefaultDevice(),
+ Point( 0, 0 ), Size( 2880, 2880 ) );
+ Write1GrfHdr( rStrm, pNd, pFly, 8, nWidth, nHeight ); // Header
+ WriteWindowMetafileBits( rStrm, *pMtf ); // eigentliche Grafik
+
+#ifdef DEBUG_KA
+
+ if( rWrt.GetIniFlags() & WWFL_KA_DEBUG )
+ {
+ SvFileStream aS( WW8_ASCII2STR( "d:\\xxx.svm" ), STREAM_WRITE | STREAM_TRUNC );
+
+ aS << *pMtf;
+ aS.Close();
+
+ aS.Open( WW8_ASCII2STR( "d:\\xxx.wmf" ), STREAM_WRITE | STREAM_TRUNC );
+ WriteWindowMetafile( aS, *pMtf );
+ }
+
+#endif // DEBUG_KA
+
+ // brauchen wir nicht mehr
+ delete pMtf;
+ }
+ }
+ }
+
+ UINT32 nPos2 = rStrm.Tell(); // Ende merken
+ rStrm.Seek( nPos );
+ SVBT32 nLen;
+ LongToSVBT32( nPos2 - nPos, nLen ); // Grafik-Laenge ausrechnen
+ rStrm.Write( nLen, 4 ); // im Header einpatchen
+ rStrm.Seek( nPos2 ); // Pos wiederherstellen
+}
+
+// SwWW8WrGrf::Write() wird nach dem Text gerufen. Es schreibt die alle
+// Grafiken raus und merkt sich die File-Positionen der Grafiken, damit
+// beim Schreiben der Attribute die Positionen in die PicLocFc-Sprms
+// eingepatcht werden koennen.
+// Das Suchen in den Attributen nach dem Magic ULONG und das Patchen
+// passiert beim Schreiben der Attribute. Die SwWW8WrGrf-Klasse liefert
+// hierfuer nur mit GetFPos() sequentiell die Positionen.
+void SwWW8WrGrf::Write()
+{
+ nIdx = 0; // fuers anschliessende Abfragen
+ SvStream& rStrm = *rWrt.pDataStrm;
+ for( USHORT i = 0; i < aNds.Count(); i++ )
+ {
+ UINT32 nPos = rStrm.Tell(); // auf 4 Bytes alignen
+ if( nPos & 0x3 )
+ SwWW8Writer::FillCount( rStrm, 4 - ( nPos & 0x3 ) );
+
+ aPos.Insert( rStrm.Tell(), aPos.Count() ); // Pos merken
+ const SwNoTxtNode* pNd = (const SwNoTxtNode*)aNds[i];
+ Write1Grf( rStrm, pNd, (const SwFlyFrmFmt*)aFlys[i],
+ aWid[i], aHei[i] );
+ }
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/wrtww8gr.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.16 2000/09/18 16:04:58 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.15 2000/08/25 12:27:35 jp
+ Graphic Crop-Attribut exported to SVX
+
+ Revision 1.14 2000/08/18 13:02:29 jp
+ don't export escaped URLs
+
+ Revision 1.13 2000/07/05 16:07:38 jp
+ new MS Filteroptions - change StarOffice Objects to OLE-Objects
+
+ Revision 1.12 2000/06/26 09:58:38 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.11 2000/05/25 09:19:59 khz
+ Changes for Unicode (for debug mode)
+
+ Revision 1.10 2000/05/12 16:14:14 jp
+ Changes for Unicode
+
+ Revision 1.9 2000/02/11 14:39:59 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.8 1999/12/02 10:41:05 jp
+ Bug #70093#: OutWW8_SwOleNode - write field with storage-username, W97 need it
+
+ Revision 1.7 1999/10/29 17:40:22 jp
+ export of 'complex'(vert. merged) tables
+
+ Revision 1.6 1999/08/24 18:15:52 JP
+ Escher Export
+
+
+ Rev 1.5 24 Aug 1999 20:15:52 JP
+ Escher Export
+
+ Rev 1.4 06 Jul 1999 14:54:06 JP
+ W97-Export corrections
+
+ Rev 1.3 30 Jun 1999 19:56:46 JP
+ W97-Export: Fields/PostIts/References
+
+ Rev 1.2 04 Jun 1999 17:47:56 JP
+ WW97-Export: Code aufgeteilt
+
+ Rev 1.1 27 May 1999 23:42:28 JP
+ Schnittstellen angepasst
+
+ Rev 1.0 19 May 1999 11:20:20 JP
+ WinWord97-ExportFilter
+
+*************************************************************************/
+
+
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
new file mode 100644
index 000000000000..c04ba2896bec
--- /dev/null
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -0,0 +1,3489 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8atr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+/*
+ * Dieses File enthaelt alle Ausgabe-Funktionen des WW8-Writers;
+ * fuer alle Nodes, Attribute, Formate und Chars.
+ */
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SV_SALBTYPE_HXX
+#include <vcl/salbtype.hxx>
+#endif
+#ifndef _ZFORMAT_HXX
+#include <svtools/zformat.hxx>
+#endif
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_TSTPITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_SPLTITEM_HXX //autogen
+#include <svx/spltitem.hxx>
+#endif
+#ifndef _SVX_WIDWITEM_HXX //autogen
+#include <svx/widwitem.hxx>
+#endif
+#ifndef _SVX_LSPCITEM_HXX //autogen
+#include <svx/lspcitem.hxx>
+#endif
+#ifndef _SVX_KEEPITEM_HXX //autogen
+#include <svx/keepitem.hxx>
+#endif
+#ifndef _SVX_SHADITEM_HXX //autogen
+#include <svx/shaditem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_KERNITEM_HXX //autogen
+#include <svx/kernitem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_CMAPITEM_HXX //autogen
+#include <svx/cmapitem.hxx>
+#endif
+#ifndef _SVX_WRLMITEM_HXX //autogen
+#include <svx/wrlmitem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVX_ESCPITEM_HXX //autogen
+#include <svx/escpitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_HYZNITEM_HXX //autogen
+#include <svx/hyznitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_ITEM_HXX //autogen
+#include <svx/cntritem.hxx>
+#endif
+#ifndef _SVX_SHDDITEM_HXX //autogen
+#include <svx/shdditem.hxx>
+#endif
+#ifndef _SVX_AKRNITEM_HXX //autogen wg. SvxAutoKernItem
+#include <svx/akrnitem.hxx>
+#endif
+#ifndef _SVX_PBINITEM_HXX //autogen wg. SvxPaperBinItem
+#include <svx/pbinitem.hxx>
+#endif
+
+#ifndef _FMTFLD_HXX //autogen
+#include <fmtfld.hxx>
+#endif
+#ifndef _FCHRFMT_HXX //autogen
+#include <fchrfmt.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTFTN_HXX //autogen
+#include <fmtftn.hxx>
+#endif
+#ifndef _FMTFLCNT_HXX //autogen
+#include <fmtflcnt.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen wg. SwFmtINetFmt
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _TXTFLD_HXX //autogen wg. SwTxtFld
+#include <txtfld.hxx>
+#endif
+#ifndef _TXTFTN_HXX //autogen wg. SwTxtFtn
+#include <txtftn.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx> // Doc fuer Fussnoten
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx> // fuer SwField ...
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx> // fuer SwField ...
+#endif
+#ifndef _FORMAT_HXX
+#include <format.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx> // fuer SwPageDesc...
+#endif
+#ifndef _FLDDAT_HXX
+#include <flddat.hxx> // fuer Datum-Felder
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx> // fuer Numrules
+#endif
+#ifndef _NDINDEX_HXX
+#include <ndindex.hxx>
+#endif
+#ifndef _FMTHBSH_HXX //autogen
+#include <fmthbsh.hxx>
+#endif
+#ifndef _SWRECT_HXX //autogen
+#include <swrect.hxx>
+#endif
+#ifndef _REFFLD_HXX //autogen wg. SwGetRefField
+#include <reffld.hxx>
+#endif
+#ifndef _FTNINFO_HXX
+#include <ftninfo.hxx>
+#endif
+#ifndef _CHARFMT_HXX
+#include <charfmt.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx>
+#endif
+#ifndef SW_LINEINFO_HXX
+#include <lineinfo.hxx>
+#endif
+#ifndef SW_FMTLINE_HXX
+#include <fmtline.hxx>
+#endif
+#ifndef _TOX_HXX
+#include <tox.hxx>
+#endif
+#ifndef _FMTFTNTX_HXX
+#include <fmtftntx.hxx>
+#endif
+
+
+#ifdef DEBUG
+# ifndef _FMTCNTNT_HXX
+# include <fmtcntnt.hxx>
+# endif
+#endif
+
+#ifndef _WRTWW8_HXX
+#include <wrtww8.hxx>
+#endif
+
+
+#define APP_ASC(s) AppendAscii( RTL_CONSTASCII_STRINGPARAM( s ))
+#define ASIGN_ASC(s) AssignAscii( RTL_CONSTASCII_STRINGPARAM( s ))
+#define CREA_ASC(s) String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( s ))
+
+/*
+ * um nicht immer wieder nach einem Update festzustellen, das irgendwelche
+ * Hint-Ids dazugekommen sind, wird hier definiert, die Groesse der Tabelle
+ * definiert und mit der akt. verglichen. Bei unterschieden wird der
+ * Compiler schon meckern.
+ *
+ * diese Section und die dazugeherigen Tabellen muessen in folgenden Files
+ * gepflegt werden: rtf\rtfatr.cxx, sw6\sw6atr.cxx, w4w\w4watr.cxx
+*/
+
+#if !defined(MSC) && !defined(UNX) && !defined(PPC) && !defined(CSET) && !defined(__MWERKS__) && !defined(WTC)
+
+#define ATTRFNTAB_SIZE 121
+#if ATTRFNTAB_SIZE != POOLATTR_END - POOLATTR_BEGIN
+#error "Attribut-Tabelle ist ungueltigt. Wurden neue Hint-ID's zugefuegt ??"
+#endif
+
+#if 0
+#define FORMATTAB_SIZE 6
+#if FORMATTAB_SIZE != RES_FMT_END - RES_FMT_BEGIN
+#error "Format-Tabelle ist ungueltigt. Wurden neue Hint-ID's zugefuegt ??"
+#endif
+#endif
+
+#define NODETAB_SIZE 3
+#if NODETAB_SIZE != RES_NODE_END - RES_NODE_BEGIN
+#error "Node-Tabelle ist ungueltigt. Wurden neue Hint-ID's zugefuegt ??"
+#endif
+
+#endif
+
+
+
+extern void sw3io_ConvertToOldField( const SwField* pFld, USHORT& rWhich,
+ ULONG& rFmt, ULONG nFFVersion );
+
+
+//#define WW8_OUT( rWrt, a ) ((SwWW8Writer&)rWrt).pO->Insert( (BYTE*)&a,\
+// sizeof( a ), ((SwWW8Writer&)rWrt).pO->Count() )
+
+#define WW8_OUT( rWrt, a ) \
+ ((SwWW8Writer&)rWrt).OutSprmBytes( (BYTE*)&a, sizeof( a ) )
+
+
+
+//------------------------------------------------------------
+// Forward-Declarationen
+//------------------------------------------------------------
+static Writer& OutWW8_SwFmtBreak( Writer& rWrt, const SfxPoolItem& rHt );
+static Writer& OutWW8_SwNumRuleItem( Writer& rWrt, const SfxPoolItem& rHt );
+
+//------------------------------------------------------------
+// Hilfsroutinen fuer Styles
+//------------------------------------------------------------
+
+/*
+ * Format wie folgt ausgeben:
+ * - gebe die Attribute aus; ohne Parents!
+ */
+
+void SwWW8Writer::Out_SfxItemSet( const SfxItemSet& rSet,
+ BOOL bPapFmt, BOOL bChpFmt )
+{
+ if( rSet.Count() )
+ {
+ const SfxPoolItem* pItem;
+ FnAttrOut pOut;
+
+ pISet = &rSet; // fuer Doppel-Attribute
+
+ // first the NumRule and than the LRSpace, so will W97 understand it
+ // and move away the paragraph from the left side
+ if( bPapFmt && SFX_ITEM_SET == rSet.GetItemState( RES_PARATR_NUMRULE,
+ FALSE, &pItem ))
+ {
+ pOut = aWW8AttrFnTab[ RES_PARATR_NUMRULE - RES_CHRATR_BEGIN ];
+ (*pOut)( *this, *pItem );
+ }
+
+ SfxItemIter aIter( rSet );
+ pItem = aIter.GetCurItem();
+
+ do {
+ register USHORT nWhich = pItem->Which();
+ pOut = aWW8AttrFnTab[nWhich - RES_CHRATR_BEGIN];
+ if( 0 != pOut && (!bPapFmt || RES_PARATR_NUMRULE != nWhich ))
+ {
+ BOOL bChp = nWhich >= RES_CHRATR_BEGIN
+ && nWhich < RES_TXTATR_END;
+ BOOL bPap = nWhich >= RES_PARATR_BEGIN
+ && nWhich < RES_FRMATR_END;
+ if( ( bChpFmt && bChp ) || ( bPapFmt && bPap ) )
+ (*pOut)( *this, *pItem );
+ }
+ } while( !aIter.IsAtEnd() && 0 != ( pItem = aIter.NextItem() ) );
+
+ pISet = 0; // fuer Doppel-Attribute
+ }
+}
+
+// Da WW nur Break-After ( Pagebreak und Sectionbreaks ) kennt, im SW aber
+// Bagebreaks "vor" und "nach" und Pagedescs nur "vor" existieren, werden
+// die Breaks 2* durchgeklimpert, naemlich vor und hinter jeder Zeile.
+// Je nach BreakTyp werden sie vor oder nach der Zeile gesetzt.
+// Es duerfen nur Funktionen gerufen werden, die nicht in den
+// Ausgabebereich pO schreiben, da dieser nur einmal fuer CHP und PAP existiert
+// und damit im falschen landen wuerden.
+void SwWW8Writer::Out_SfxBreakItems( const SfxItemSet& rSet, const SwNode& rNd )
+{
+ if( rSet.Count() )
+ {
+ bBreakBefore = TRUE;
+
+ const SfxPoolItem* pItem;
+ if( !bStyDef && !bOutKF && !bOutPageDescs && SFX_ITEM_SET ==
+ rSet.GetItemState( RES_PAGEDESC, FALSE, &pItem ) &&
+ ((SwFmtPageDesc*)pItem)->GetRegisteredIn() )
+ {
+ // Die PageDescs werden beim Auftreten von PageDesc-Attributen nur
+ // in WW8Writer::pSepx mit der entsprechenden Position eingetragen.
+ // Das Aufbauen und die Ausgabe der am PageDesc haengenden Attribute
+ // und Kopf/Fusszeilen passiert nach dem Haupttext und seinen Attributen.
+ const SwFmtPageDesc& rPgDesc = *(SwFmtPageDesc*)pItem;
+ pAktPageDesc = rPgDesc.GetPageDesc();
+ if( pAktPageDesc )
+ {
+ ULONG nFcPos = ReplaceCr( 0x0c ); // Page/Section-Break
+
+ // tatsaechlich wird hier NOCH NICHTS ausgegeben, sondern
+ // nur die Merk-Arrays aCps, aSects entsprechend ergaenzt
+ if( nFcPos )
+ pSepx->AppendSep( Fc2Cp( nFcPos ), rPgDesc, rNd,
+ ((SwFmtLineNumber&)rSet.Get(
+ RES_LINENUMBER )).GetStartValue());
+ }
+ }
+ else if( SFX_ITEM_SET == rSet.GetItemState( RES_BREAK, FALSE, &pItem ) )
+ OutWW8_SwFmtBreak( *this, *pItem );
+
+ bBreakBefore = FALSE;
+ }
+}
+
+void SwWW8Writer::CorrTabStopInSet( SfxItemSet& rSet, USHORT nAbsLeft )
+{
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_PARATR_TABSTOP, TRUE, &pItem ))
+ {
+ // dann muss das fuer die Ausgabe korrigiert werden
+ SvxTabStopItem aTStop( *(SvxTabStopItem*)pItem );
+ for( USHORT nCnt = 0; nCnt < aTStop.Count(); ++nCnt )
+ {
+ SvxTabStop& rTab = (SvxTabStop&)aTStop[ nCnt ];
+ if( SVX_TAB_ADJUST_DEFAULT != rTab.GetAdjustment() &&
+ rTab.GetTabPos() >= nAbsLeft )
+ rTab.GetTabPos() -= nAbsLeft;
+ else
+ {
+ aTStop.Remove( nCnt );
+ --nCnt;
+ }
+ }
+ rSet.Put( aTStop );
+ }
+}
+
+BYTE SwWW8Writer::GetNumId( USHORT eNumType )
+{
+ BYTE nRet = 0;
+ switch( eNumType )
+ {
+ case SVX_NUM_CHARS_UPPER_LETTER:
+ case SVX_NUM_CHARS_UPPER_LETTER_N: nRet = 3; break;
+ case SVX_NUM_CHARS_LOWER_LETTER:
+ case SVX_NUM_CHARS_LOWER_LETTER_N: nRet = 4; break;
+ case SVX_NUM_ROMAN_UPPER: nRet = 1; break;
+ case SVX_NUM_ROMAN_LOWER: nRet = 2; break;
+
+ case SVX_NUM_BITMAP:
+ case SVX_NUM_CHAR_SPECIAL: nRet = 23; break;
+
+ // nix, macht WW undokumentiert auch so
+ case SVX_NUM_NUMBER_NONE: nRet = 0xff; break;
+ }
+ return nRet;
+}
+
+void SwWW8Writer::Out_SwFmt( const SwFmt& rFmt, BOOL bPapFmt, BOOL bChpFmt,
+ BOOL bFlyFmt )
+{
+ BOOL bCallOutSet = TRUE;
+ const SwModify* pOldMod = pOutFmtNode;
+ pOutFmtNode = &rFmt;
+
+ switch( rFmt.Which() )
+ {
+ case RES_CONDTXTFMTCOLL:
+ case RES_TXTFMTCOLL:
+ if( bPapFmt )
+ {
+ BYTE nLvl = ((const SwTxtFmtColl&)rFmt).GetOutlineLevel();
+ if( MAXLEVEL > nLvl )
+ {
+ // if Write StyleDefinition then write the OutlineRule
+ const SwNumFmt& rNFmt = pDoc->GetOutlineNumRule()->Get(nLvl);
+ if( bStyDef )
+ {
+ if( nLvl >= nWW8MaxListLevel )
+ nLvl = nWW8MaxListLevel-1;
+
+ if( bWrtWW8 )
+ {
+ // write sprmPIlvl and sprmPIlfo
+ SwWW8Writer::InsUInt16( *pO, 0x260a );
+ pO->Insert( nLvl, pO->Count() );
+ SwWW8Writer::InsUInt16( *pO, 0x460b );
+ SwWW8Writer::InsUInt16( *pO, 1 + GetId(
+ *pDoc->GetOutlineNumRule() ) );
+ }
+ else
+ {
+ Out_SwNumLvl( nLvl );
+ if( rNFmt.GetAbsLSpace() )
+ {
+ SwNumFmt aNumFmt( rNFmt );
+ const SvxLRSpaceItem& rLR = (SvxLRSpaceItem&)
+ rFmt.GetAttr( RES_LR_SPACE );
+ aNumFmt.SetAbsLSpace( aNumFmt.GetAbsLSpace() +
+ rLR.GetLeft() );
+ Out_NumRuleAnld( *pDoc->GetOutlineNumRule(),
+ aNumFmt, nLvl );
+ }
+ else
+ Out_NumRuleAnld( *pDoc->GetOutlineNumRule(),
+ rNFmt, nLvl );
+ }
+ }
+
+ if( rNFmt.GetAbsLSpace() )
+ {
+ SfxItemSet aSet( rFmt.GetAttrSet() );
+ SvxLRSpaceItem aLR( (SvxLRSpaceItem&)aSet.Get( RES_LR_SPACE ) );
+
+ aLR.SetTxtLeft( aLR.GetTxtLeft() + rNFmt.GetAbsLSpace() );
+ aLR.SetTxtFirstLineOfst( rNFmt.GetFirstLineOffset() );
+
+ aSet.Put( aLR );
+ SwWW8Writer::CorrTabStopInSet( aSet, rNFmt.GetAbsLSpace() );
+ Out_SfxItemSet( aSet, bPapFmt, bChpFmt );
+ bCallOutSet = FALSE;
+ }
+ }
+ }
+ break;
+
+ case RES_CHRFMT: break;
+ case RES_FLYFRMFMT:
+ if( bFlyFmt )
+ {
+ SfxItemSet aSet( pDoc->GetAttrPool(), RES_FRMATR_BEGIN,
+ RES_FRMATR_END-1 );
+ aSet.Set( pFlyFmt->GetAttrSet() );
+
+ // Fly als Zeichen werden bei uns zu Absatz-gebundenen
+ // jetzt den Abstand vom Absatz-Rand setzen
+ if( pFlyOffset )
+ {
+ aSet.Put( SwFmtVertOrient( pFlyOffset->Y() ));
+ aSet.Put( SwFmtHoriOrient( pFlyOffset->X() ));
+ }
+
+ if( SFX_ITEM_SET != aSet.GetItemState( RES_SURROUND ))
+ aSet.Put( SwFmtSurround( SURROUND_NONE ) );
+
+ bOutFlyFrmAttrs = TRUE;
+ Out_SfxItemSet( aSet, TRUE, FALSE );
+ bOutFlyFrmAttrs = FALSE;
+
+ bCallOutSet = FALSE;
+ }
+ break;
+ default: ASSERT( !this, "Was wird hier ausgegeben ??? " );
+ break;
+ }
+
+ if( bCallOutSet )
+ Out_SfxItemSet( rFmt.GetAttrSet(), bPapFmt, bChpFmt );
+ pOutFmtNode = pOldMod;
+}
+
+BOOL SwWW8Writer::HasRefToObject( USHORT nTyp, const String* pNm,
+ USHORT nSeqNo )
+{
+ BOOL bFnd = FALSE;
+ const SwTxtNode* pNd;
+ SwClientIter aIter( *pDoc->GetSysFldType( RES_GETREFFLD ));
+ for( SwFmtFld* pFld = (SwFmtFld*)aIter.First( TYPE( SwFmtFld ));
+ pFld && !bFnd; pFld = (SwFmtFld*)aIter.Next() )
+ if( pFld->GetTxtFld() && nTyp == pFld->GetFld()->GetSubType() &&
+ 0 != ( pNd = pFld->GetTxtFld()->GetpTxtNode() ) &&
+ pNd->GetNodes().IsDocNodes() )
+ {
+ const SwGetRefField& rRFld = *(SwGetRefField*)pFld->GetFld();
+ switch( nTyp )
+ {
+ case REF_BOOKMARK:
+ case REF_SETREFATTR: bFnd = *pNm == rRFld.GetSetRefName(); break;
+ case REF_FOOTNOTE:
+ case REF_ENDNOTE: bFnd = nSeqNo == rRFld.GetSeqNo(); break;
+
+ case REF_SEQUENCEFLD: break; // ???
+ case REF_OUTLINE: break; // ???
+ }
+ }
+
+ return bFnd;
+}
+
+String SwWW8Writer::GetBookmarkName( USHORT nTyp, const String* pNm,
+ USHORT nSeqNo )
+{
+ String sRet;
+ switch( nTyp )
+ {
+ case REF_SETREFATTR: (sRet.APP_ASC( "Ref_" )) += *pNm; break;
+ case REF_SEQUENCEFLD: break; // ???
+ case REF_BOOKMARK: sRet = *pNm; break;
+ case REF_OUTLINE: break; // ???
+ case REF_FOOTNOTE: (sRet.APP_ASC( "_RefF" ))
+ += String::CreateFromInt32( nSeqNo );
+ break;
+ case REF_ENDNOTE: (sRet.APP_ASC( "_RefE" ))
+ += String::CreateFromInt32( nSeqNo );
+ break;
+ }
+ return sRet;
+}
+
+//-----------------------------------------------------------------------
+/* */
+/* File CHRATR.HXX: */
+
+static Writer& OutWW8_SwBoldUSW( Writer& rWrt, BYTE nId, BOOL bVal )
+{
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 7 == nId ? 0x2a53 : 0x0835 + nId );
+ else if( 7 == nId )
+ return rWrt; // das Attribut gibt es im WW6 nicht
+ else
+ rWrtWW8.pO->Insert( 85 + nId, rWrtWW8.pO->Count() );
+ rWrtWW8.pO->Insert( bVal ? 1 : 0, rWrtWW8.pO->Count() );
+ return rWrt;
+}
+
+static Writer& OutWW8_SwFont( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SvxFontItem& rAttr = (const SvxFontItem&)rHt;
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ USHORT nFontID= rWrtWW8.GetId( rAttr );
+
+ if( rWrtWW8.bWrtWW8 )
+ {
+ // what about sprmCIdctHint (286F) ??
+ rWrtWW8.InsUInt16( 0x4a4f );
+ rWrtWW8.InsUInt16( nFontID );
+ rWrtWW8.InsUInt16( 0x4a51 );
+ }
+ else
+ rWrtWW8.pO->Insert( 93, rWrtWW8.pO->Count() );
+ rWrtWW8.InsUInt16( nFontID );
+ return rWrt;
+}
+
+static Writer& OutWW8_SwPosture( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ return OutWW8_SwBoldUSW( rWrt, 1,
+ ITALIC_NONE != ((const SvxPostureItem&)rHt).GetPosture() );
+}
+
+static Writer& OutWW8_SwWeight( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ return OutWW8_SwBoldUSW( rWrt, 0,
+ WEIGHT_BOLD == ((const SvxWeightItem&)rHt).GetWeight() );
+}
+
+// Shadowed und Contour gibts in WW-UI nicht. JP: ??
+static Writer& OutWW8_SwContour( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ return OutWW8_SwBoldUSW( rWrt, 3,
+ ((const SvxContourItem&)rHt).GetValue() );
+}
+
+static Writer& OutWW8_SwShadow( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ return OutWW8_SwBoldUSW( rWrt, 4,
+ ((const SvxShadowedItem&)rHt).GetValue() );
+}
+
+static Writer& OutWW8_SwKerning( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SvxKerningItem& rAttr = (const SvxKerningItem&)rHt;
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x8840 );
+ else
+ rWrtWW8.pO->Insert( 96, rWrtWW8.pO->Count() );
+ rWrtWW8.InsUInt16( rAttr.GetValue() );
+ return rWrt;
+}
+
+static Writer& OutWW8_SvxAutoKern( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SvxAutoKernItem& rAttr = (const SvxAutoKernItem&)rHt;
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x484B );
+ else
+ rWrtWW8.pO->Insert( 107, rWrtWW8.pO->Count() );
+ rWrtWW8.pO->Insert( rAttr.GetValue() ? 1 : 0, rWrtWW8.pO->Count() );
+ return rWrt;
+}
+
+
+static Writer& OutWW8_SwCrossedOut( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ FontStrikeout eSt = ((const SvxCrossedOutItem&)rHt).GetStrikeout();
+ if( STRIKEOUT_DOUBLE == eSt )
+ return OutWW8_SwBoldUSW( rWrt, 7, TRUE );
+ if( STRIKEOUT_NONE != eSt )
+ return OutWW8_SwBoldUSW( rWrt, 2, TRUE );
+
+ // dann auch beide ausschalten!
+ OutWW8_SwBoldUSW( rWrt, 7, FALSE );
+ return OutWW8_SwBoldUSW( rWrt, 2, FALSE );
+}
+
+static Writer& OutWW8_SwCaseMap( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ USHORT eSt = ((const SvxCaseMapItem&)rHt).GetValue();
+ if( SVX_CASEMAP_KAPITAELCHEN == eSt )
+ return OutWW8_SwBoldUSW( rWrt, 5, TRUE );
+ if( SVX_CASEMAP_VERSALIEN == eSt )
+ return OutWW8_SwBoldUSW( rWrt, 6, TRUE );
+
+ // dann auch beide ausschalten!
+ OutWW8_SwBoldUSW( rWrt, 5, FALSE );
+ return OutWW8_SwBoldUSW( rWrt, 6, FALSE );
+}
+
+static Writer& OutWW8_SwUnderline( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SvxUnderlineItem& rAttr = (const SvxUnderlineItem&)rHt;
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x2A3E );
+ else
+ rWrtWW8.pO->Insert( 94, rWrtWW8.pO->Count() );
+
+ const SfxPoolItem* pItem = ((SwWW8Writer&)rWrt).HasItem(
+ RES_CHRATR_WORDLINEMODE );
+ BOOL bWord = pItem ? ((const SvxWordLineModeItem*)pItem)->GetValue() : FALSE;
+
+ // WW95 - parameters: 0 = none, 1 = single, 2 = by Word,
+ // 3 = double, 4 = dotted, 5 = hidden
+ // WW97 - additional parameters:
+ // 6 = thick, 7 = dash, 8 = dot(not used)
+ // 9 = dotdash 10 = dotdotdash, 11 = wave
+ BYTE b = 0;
+ switch( rAttr.GetUnderline() )
+ {
+ case UNDERLINE_SINGLE: b = ( bWord ) ? 2 : 1; break;
+ case UNDERLINE_BOLD: b = rWrtWW8.bWrtWW8 ? 6 : 1; break;
+ case UNDERLINE_DOUBLE: b = 3; break;
+ case UNDERLINE_DOTTED: b = 4; break;
+ case UNDERLINE_DASH: b = rWrtWW8.bWrtWW8 ? 7 : 4; break;
+ case UNDERLINE_DASHDOT: b = rWrtWW8.bWrtWW8 ? 9 : 4; break;
+ case UNDERLINE_DASHDOTDOT: b = rWrtWW8.bWrtWW8 ? 10 : 4; break;
+ case UNDERLINE_WAVE: b = rWrtWW8.bWrtWW8 ? 11 : 3; break;
+ // ------------- new in WW2000 -------------------------------------
+ case UNDERLINE_BOLDDOTTED: b = rWrtWW8.bWrtWW8 ? 20 : 4; break;
+ case UNDERLINE_BOLDDASH: b = rWrtWW8.bWrtWW8 ? 23 : 4; break;
+ case UNDERLINE_LONGDASH: b = rWrtWW8.bWrtWW8 ? 39 : 4; break;
+ case UNDERLINE_BOLDLONGDASH: b = rWrtWW8.bWrtWW8 ? 55 : 4; break;
+ case UNDERLINE_BOLDDASHDOT: b = rWrtWW8.bWrtWW8 ? 25 : 4; break;
+ case UNDERLINE_BOLDDASHDOTDOT: b = rWrtWW8.bWrtWW8 ? 26 : 4; break;
+ case UNDERLINE_BOLDWAVE: b = rWrtWW8.bWrtWW8 ? 27 : 3; break;
+ case UNDERLINE_DOUBLEWAVE: b = rWrtWW8.bWrtWW8 ? 43 : 3; break;
+ }
+
+ rWrtWW8.pO->Insert( b, rWrtWW8.pO->Count() );
+ return rWrt;
+}
+
+static Writer& OutWW8_SwLanguage( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SvxLanguageItem& rAttr = (const SvxLanguageItem&)rHt;
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x486D ); // use sprmCRgLid0 rather than sprmCLid
+ else
+ rWrtWW8.pO->Insert( 97, rWrtWW8.pO->Count() );
+ rWrtWW8.InsUInt16( rAttr.GetLanguage() );
+ return rWrt;
+}
+
+static Writer& OutWW8_SwEscapement( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SvxEscapementItem& rAttr = (const SvxEscapementItem&)rHt;
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+
+ BYTE b = 0xFF;
+ short nEsc = rAttr.GetEsc(), nProp = rAttr.GetProp();
+ if( !nEsc )
+ {
+ b = 0;
+ nEsc = 0;
+ nProp = 100;
+ }
+ else if( DFLT_ESC_PROP == nProp )
+ {
+ if( DFLT_ESC_SUB == nEsc || DFLT_ESC_AUTO_SUB == nEsc )
+ b = 2;
+ else if( DFLT_ESC_SUPER == nEsc || DFLT_ESC_AUTO_SUPER == nEsc )
+ b = 1;
+ }
+
+ if( 0xFF != b )
+ {
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x2A48 );
+ else
+ rWrtWW8.pO->Insert( 104, rWrtWW8.pO->Count() );
+ rWrtWW8.pO->Insert( b, rWrtWW8.pO->Count() );
+ }
+
+ if( 0 == b || 0xFF == b )
+ {
+ long nHeight = ((SvxFontHeightItem&)rWrtWW8.GetItem(
+ RES_CHRATR_FONTSIZE )).GetHeight();
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x4845 );
+ else
+ rWrtWW8.pO->Insert( 101, rWrtWW8.pO->Count() );
+ rWrtWW8.InsUInt16( (short)(( nHeight * nEsc + 500 ) / 1000 ));
+
+ if( 100 != nProp || !b )
+ {
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x4A43 );
+ else
+ rWrtWW8.pO->Insert( 99, rWrtWW8.pO->Count() );
+ rWrtWW8.InsUInt16( ( nHeight * nProp + 500 ) / 1000 );
+ }
+ }
+ return rWrt;
+}
+
+static Writer& OutWW8_SwSize( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SvxFontHeightItem& rAttr = (const SvxFontHeightItem&)rHt;
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x4A43 );
+ else
+ rWrtWW8.pO->Insert( 99, rWrtWW8.pO->Count() );
+ rWrtWW8.InsUInt16( (UINT16)(( rAttr.GetHeight() + 5 ) / 10 ) );
+ return rWrt;
+}
+
+
+// TransCol uebersetzt SW-Farben in WW. Heraus kommt die bei WW fuer
+// Text- und Hintergrundfarbe benutzte Codierung.
+// Gibt es keine direkte Entsprechung, dann wird versucht, eine moeglichst
+// aehnliche WW-Farbe zu finden.
+// return: 5-Bit-Wert ( 0..16 )
+BYTE SwWW8Writer::TransCol( const Color& rCol )
+{
+ BYTE nCol = 0; // ->Auto
+ switch( rCol.GetColor() )
+ {
+ case COL_BLACK: nCol = 1; break;
+ case COL_BLUE: nCol = 9; break;
+ case COL_GREEN: nCol = 11; break;
+ case COL_CYAN: nCol = 10; break;
+ case COL_RED: nCol = 13; break;
+ case COL_MAGENTA: nCol = 12; break;
+ case COL_BROWN: nCol = 14; break;
+ case COL_GRAY: nCol = 15; break;
+ case COL_LIGHTGRAY: nCol = 16; break;
+ case COL_LIGHTBLUE: nCol = 2; break;
+ case COL_LIGHTGREEN: nCol = 4; break;
+ case COL_LIGHTCYAN: nCol = 3; break;
+ case COL_LIGHTRED: nCol = 6; break;
+ case COL_LIGHTMAGENTA: nCol = 5; break;
+ case COL_YELLOW: nCol = 7; break;
+ case COL_WHITE: nCol = 8; break;
+
+ default:
+ if( !pBmpPal )
+ {
+ pBmpPal = new BitmapPalette( 16 );
+ static const ColorData aColArr[ 16 ] = {
+ COL_BLACK, COL_LIGHTBLUE, COL_LIGHTCYAN, COL_LIGHTGREEN,
+ COL_LIGHTMAGENTA,COL_LIGHTRED, COL_YELLOW, COL_WHITE,
+ COL_BLUE, COL_CYAN, COL_GREEN, COL_MAGENTA,
+ COL_RED, COL_BROWN, COL_GRAY, COL_LIGHTGRAY
+ };
+
+ for( int i = 0; i < 16; ++i )
+ pBmpPal->operator[]( i ) = Color( aColArr[ i ] );
+ }
+ nCol = pBmpPal->GetBestIndex( rCol ) + 1;
+ break;
+ }
+ return nCol;
+}
+
+// TransBrush uebersetzt SW-Brushes in WW. Heraus kommt WW8_SHD.
+// Nicht-Standardfarben des SW werden noch nicht in die
+// Misch-Werte ( 0 .. 95% ) vom WW uebersetzt.
+// Return: Echte Brush ( nicht transparent )
+// auch bei Transparent wird z.B. fuer Tabellen eine transparente Brush
+// geliefert
+BOOL SwWW8Writer::TransBrush( const Color& rCol, WW8_SHD& rShd )
+{
+ if( rCol.GetTransparency() )
+ rShd = WW8_SHD(); // alles Nullen : transparent
+ else
+ {
+ rShd.SetFore( 8);
+ rShd.SetBack( TransCol( rCol ) );
+ rShd.SetStyle( bWrtWW8, 0 );
+ }
+ return !rCol.GetTransparency();
+}
+
+static Writer& OutWW8_SwColor( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SvxColorItem& rAttr = (const SvxColorItem&)rHt;
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x2A42 );
+ else
+ rWrtWW8.pO->Insert( 98, rWrtWW8.pO->Count() );
+
+ rWrtWW8.pO->Insert( rWrtWW8.TransCol( ((const SvxColorItem&)rHt).
+ GetValue() ), rWrtWW8.pO->Count() );
+ return rWrt;
+}
+
+static Writer& OutWW8_SwFmtCharBackground( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+
+ if( rWW8Wrt.bWrtWW8 ) // nur WW8 kann ZeichenHintergrund
+ {
+ const SvxBrushItem& rBack = (const SvxBrushItem&)rHt;
+ WW8_SHD aSHD;
+
+ if( rWW8Wrt.TransBrush( rBack.GetColor(), aSHD ) )
+ {
+ // sprmCShd
+ rWW8Wrt.InsUInt16( 0x4866 );
+ rWW8Wrt.InsUInt16( aSHD.GetValue() );
+ }
+ }
+ return rWrt;
+}
+
+static Writer& OutSwFmtINetFmt( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ const SwFmtINetFmt& rINet = (SwFmtINetFmt&)rHt;
+
+ if( rINet.GetValue().Len() )
+ {
+ USHORT nId;
+ const String& rStr = rINet.GetINetFmt();
+ if( rStr.Len() )
+ nId = rINet.GetINetFmtId();
+ else
+ nId = RES_POOLCHR_INET_NORMAL;
+
+ const SwCharFmt* pFmt = IsPoolUserFmt( nId )
+ ? rWrt.pDoc->FindCharFmtByName( rStr )
+ : rWrt.pDoc->GetCharFmtFromPool( nId );
+
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x4A30 );
+ else
+ rWrtWW8.pO->Insert( 80, rWrtWW8.pO->Count() );
+
+ rWrtWW8.InsUInt16( rWrtWW8.GetId( *pFmt ) );
+ }
+ return rWrt;
+}
+
+
+static void InsertSpecialChar( SwWW8Writer& rWrt, BYTE c )
+{
+ WW8Bytes aItems;
+ if( rWrt.pChpIter )
+ rWrt.pChpIter->GetItems( aItems );
+
+ if( 0x13 == c )
+ rWrt.pChpPlc->AppendFkpEntry( rWrt.Strm().Tell() );
+ else
+ rWrt.pChpPlc->AppendFkpEntry( rWrt.Strm().Tell(), aItems.Count(),
+ aItems.GetData() );
+
+ // at end the attributes writes by the Textnode
+ if( 0x15 == c )
+ aItems.Remove( 0, aItems.Count() );
+
+ rWrt.WriteChar( c );
+
+ // fSpec-Attribut TRUE
+ if( rWrt.bWrtWW8 )
+ SwWW8Writer::InsUInt16( aItems, 0x855 );
+ else
+ aItems.Insert( 117, aItems.Count() );
+ aItems.Insert( 1, aItems.Count() );
+
+ rWrt.pChpPlc->AppendFkpEntry( rWrt.Strm().Tell(), aItems.Count(),
+ aItems.GetData() );
+}
+
+
+void SwWW8Writer::OutField( const SwField* pFld, BYTE nFldType,
+ const String& rFldCmd, BYTE nMode )
+{
+ static BYTE aFld13[2] = { 0x13, 0x00 }; // will change
+ static BYTE __READONLY_DATA aFld14[2] = { 0x14, 0xff };
+ static BYTE __READONLY_DATA aFld15[2] = { 0x15, 0x80 };
+
+ BOOL bUnicode = IsUnicode();
+ WW8_WrPlcFld* pFldP;
+ switch ( nTxtTyp )
+ {
+ case TXT_MAINTEXT: pFldP = pFldMain; break;
+ case TXT_HDFT: pFldP = pFldHdFt; break;
+ case TXT_FTN: pFldP = pFldFtn; break;
+ case TXT_EDN: pFldP = pFldEdn; break;
+ case TXT_TXTBOX: pFldP = pFldTxtBxs; break;
+ case TXT_HFTXTBOX: pFldP = pFldHFTxtBxs; break;
+
+ default:
+ ASSERT( !this, "was ist das fuer ein SubDoc-Type?" );
+ break;
+ }
+
+ if( WRITEFIELD_START & nMode )
+ {
+ aFld13[1] = nFldType; // Typ nachtragen
+ pFldP->Append( Fc2Cp( Strm().Tell() ), aFld13 );
+ InsertSpecialChar( *this, 0x13 );
+ }
+ if( WRITEFIELD_CMD_START & nMode )
+ {
+ if( bUnicode )
+ SwWW8Writer::WriteString16( Strm(), rFldCmd, FALSE );
+ else
+ SwWW8Writer::WriteString8( Strm(), rFldCmd, FALSE,
+ RTL_TEXTENCODING_MS_1252 );
+ }
+ if( WRITEFIELD_CMD_END & nMode )
+ {
+// Strm() << " \\* FORMATVERBINDEN ";
+ pFldP->Append( Fc2Cp( Strm().Tell() ), aFld14 );
+ InsertSpecialChar( *this, 0x14 );
+ }
+ if( WRITEFIELD_END & nMode )
+ {
+ String sOut;
+ if( pFld )
+ sOut = pFld->Expand();
+ else
+ sOut = rFldCmd;
+ if( sOut.Len() )
+ {
+ if( bUnicode )
+ SwWW8Writer::WriteString16( Strm(), sOut, FALSE );
+ else
+ SwWW8Writer::WriteString8( Strm(), sOut, FALSE,
+ RTL_TEXTENCODING_MS_1252 );
+ }
+ }
+ if( WRITEFIELD_CLOSE & nMode )
+ {
+ pFldP->Append( Fc2Cp( Strm().Tell() ), aFld15 );
+ InsertSpecialChar( *this, 0x15 );
+ }
+}
+
+void SwWW8Writer::StartCommentOutput(const String& rName)
+{
+ String aStr( CREA_ASC( " ANGEBEN [" )); ( aStr += rName ).APP_ASC( "] " );
+ OutField( 0, 35, aStr, WRITEFIELD_START | WRITEFIELD_CMD_START );
+}
+
+void SwWW8Writer::EndCommentOutput(const String& rName)
+{
+ String aStr( CREA_ASC( " [" )); ( aStr += rName ).APP_ASC( "] " );
+ OutField( 0, 35, aStr, WRITEFIELD_CMD_END | WRITEFIELD_END |
+ WRITEFIELD_CLOSE );
+}
+
+
+USHORT SwWW8Writer::GetId( const SwTOXType& rTOXType )
+{
+ void* p = (void*)&rTOXType;
+ USHORT nRet = aTOXArr.GetPos( p );
+ if( USHRT_MAX == nRet )
+ aTOXArr.Insert( p, nRet = aTOXArr.Count() );
+ return nRet;
+}
+
+// return values: 1 - no PageNum,
+// 2 - TabStop before PageNum,
+// 3 - Text before PageNum - rTxt hold the text
+// 4 - no Text and no TabStop before PageNum
+int lcl_CheckForm( const SwForm& rForm, BYTE nLvl, String& rText )
+{
+ int nRet = 4;
+ rText.Erase();
+
+ SwFormTokenEnumerator aIter( rForm.CreateTokenEnumerator( nLvl ));
+ BOOL bPgNumFnd = FALSE;
+ FormTokenType eTType;
+ while( TOKEN_END != ( eTType = aIter.GetNextTokenType() ) && !bPgNumFnd )
+ {
+ switch( eTType )
+ {
+ case TOKEN_PAGE_NUMS:
+ bPgNumFnd = TRUE;
+ break;
+
+ case TOKEN_TAB_STOP:
+ nRet = 2;
+ break;
+ case TOKEN_TEXT:
+ nRet = 3;
+ rText = aIter.GetCurToken().sText.Copy( 0, 5 );
+ break;
+
+ case TOKEN_LINK_START:
+ case TOKEN_LINK_END:
+ break;
+
+ default:
+ nRet = 4;
+ break;
+ }
+ }
+
+ if( !bPgNumFnd )
+ nRet = 1;
+
+ return nRet;
+}
+
+
+void SwWW8Writer::StartTOX( const SwSection& rSect )
+{
+ const SwTOXBase* pTOX = rSect.GetTOXBase();
+ if( pTOX )
+ {
+ static sal_Char __READONLY_DATA sContent[] = " VERZEICHNIS \\w \\x ";
+ static sal_Char __READONLY_DATA sIndex[] = " INDEX ";
+ static sal_Char __READONLY_DATA sEntryEnd[] = "\" ";
+
+
+ BYTE nCode;
+ String aStr;
+ switch( pTOX->GetType() )
+ {
+ case TOX_INDEX:
+ {
+ nCode = 8;
+ aStr.AssignAscii( sIndex );
+
+ if( pTOX->GetTOXForm().IsCommaSeparated() )
+ aStr.APP_ASC( "\\r " );
+
+ if( TOI_ALPHA_DELIMITTER & pTOX->GetOptions() )
+ aStr.APP_ASC( "\\h \"A\" " );
+
+ {
+ String aFillTxt;
+ for( BYTE n = 1; n <= 3; ++n )
+ {
+ String aTxt;
+ int nRet = ::lcl_CheckForm( pTOX->GetTOXForm(),
+ n, aTxt );
+
+ if( 3 == nRet )
+ aFillTxt = aTxt;
+ else if( 4 == nRet )
+ aFillTxt = '\t';
+ else
+ aFillTxt.Erase();
+ }
+ (aStr.APP_ASC( "\\e \"" )) += aFillTxt;
+ aStr.AppendAscii( sEntryEnd );
+ }
+ }
+ break;
+
+// case TOX_AUTHORITIES: nCode = 73; aStr = ???; break;
+
+ case TOX_ILLUSTRATIONS:
+ case TOX_OBJECTS:
+ case TOX_TABLES:
+ if( !pTOX->IsFromObjectNames() )
+ {
+ nCode = 13;
+ aStr.AssignAscii( sContent );
+
+ (( aStr.APP_ASC( "\\c \"" )) += pTOX->GetSequenceName()
+ ).AppendAscii( sEntryEnd );
+ String aTxt;
+ int nRet = ::lcl_CheckForm( pTOX->GetTOXForm(), 1, aTxt );
+ if( 1 == nRet )
+ aStr.APP_ASC( "\\n " );
+ else if( 3 == nRet || 4 == nRet )
+ (( aStr.APP_ASC( "\\p \"" )) += aTxt ).AppendAscii(sEntryEnd);
+ }
+ break;
+
+// case TOX_USER:
+// case TOX_CONTENT:
+ default:
+ {
+ nCode = 13;
+ aStr.AssignAscii( sContent );
+
+ String sTOption;
+ USHORT n, nTOXLvl = pTOX->GetLevel();
+ if( !nTOXLvl )
+ ++nTOXLvl;
+
+ if( TOX_MARK & pTOX->GetCreateType() )
+ {
+ aStr.APP_ASC( "\\f " );
+
+ if( TOX_USER == pTOX->GetType() )
+ (( aStr += '\"' ) +=
+ (sal_Char)( 'A' + GetId( *pTOX->GetTOXType() ))
+ ).AppendAscii( sEntryEnd );
+ }
+
+ if( TOX_OUTLINELEVEL & pTOX->GetCreateType() )
+ {
+ // are the chapter template the normal headline 1 to 9 ?
+ // search all outlined collections
+ BYTE nLvl, nMinLvl = MAXLEVEL;
+ const SwTxtFmtColls& rColls = *pDoc->GetTxtFmtColls();
+ const SwTxtFmtColl* pColl;
+ for( n = rColls.Count(); n; )
+ if( MAXLEVEL > (nLvl = ( pColl =
+ rColls[ --n ] )->GetOutlineLevel() ) &&
+ nMinLvl > nLvl &&
+ ( RES_POOLCOLL_HEADLINE1 > pColl->GetPoolFmtId() ||
+ RES_POOLCOLL_HEADLINE9 < pColl->GetPoolFmtId() ))
+ {
+ nMinLvl = nLvl;
+ }
+
+ nLvl = nMinLvl < nTOXLvl ? nMinLvl : (BYTE)nTOXLvl;
+ if( nLvl )
+ {
+ USHORT nTmpLvl = nLvl + 1;
+ if( nTmpLvl > nWW8MaxListLevel )
+ nTmpLvl = nWW8MaxListLevel;
+
+ ((aStr.APP_ASC( "\\o \"1-" )) +=
+ String::CreateFromInt32( nTmpLvl ))
+ .AppendAscii(sEntryEnd);
+ }
+
+ if( nLvl != nMinLvl )
+ {
+ // collect this templates into the \t otion
+ for( n = rColls.Count(); n; )
+ if( MAXLEVEL > (nLvl = ( pColl =
+ rColls[ --n ] )->GetOutlineLevel() ) &&
+ nMinLvl <= nLvl )
+ {
+ if( sTOption.Len() )
+ sTOption += ';';
+ (( sTOption += pColl->GetName() ) += ';' )
+ += String::CreateFromInt32( nLvl + 1 );
+ }
+ }
+ }
+
+ if( TOX_TEMPLATE & pTOX->GetCreateType() )
+ for( n = 0; n < nTOXLvl; ++n )
+ {
+ const String& rStyles = pTOX->GetStyleNames( n );
+ if( rStyles.Len() )
+ {
+ xub_StrLen nPos = 0;
+ String sLvl( ';' );
+ sLvl += String::CreateFromInt32( n + 1 );
+ do {
+ String sStyle( rStyles.GetToken( 0,
+ TOX_STYLE_DELIMITER, nPos ));
+ if( sStyle.Len() )
+ {
+ if( sTOption.Len() )
+ sTOption += ';';
+ ( sTOption += sStyle ) += sLvl;
+ }
+ } while( STRING_NOTFOUND != nPos );
+ }
+ }
+
+ {
+ String aFillTxt;
+ BYTE nNoPgStt = MAXLEVEL, nNoPgEnd = MAXLEVEL;
+ BOOL bFirstFillTxt = TRUE, bOnlyText = TRUE;
+ for( n = 0; n < nTOXLvl; ++n )
+ {
+ String aTxt;
+ int nRet = ::lcl_CheckForm( pTOX->GetTOXForm(),
+ n+1, aTxt );
+ if( 1 == nRet )
+ {
+ bOnlyText = FALSE;
+ if( MAXLEVEL == nNoPgStt )
+ nNoPgStt = n+1;
+ }
+ else
+ {
+ if( MAXLEVEL != nNoPgStt &&
+ MAXLEVEL == nNoPgEnd )
+ nNoPgEnd = BYTE(n);
+
+ bOnlyText = bOnlyText && 3 == nRet;
+ if( 3 == nRet || 4 == nRet )
+ {
+ if( bFirstFillTxt )
+ aFillTxt = aTxt;
+ else if( aFillTxt != aTxt )
+ aFillTxt.Erase();
+ bFirstFillTxt = FALSE;
+ }
+ }
+ }
+ if( MAXLEVEL != nNoPgStt )
+ {
+ if( nWW8MaxListLevel < nNoPgEnd )
+ nNoPgEnd = nWW8MaxListLevel;
+ aStr.APP_ASC( "\\n " );
+ (aStr += String::CreateFromInt32( nNoPgStt )) += '-';
+ (aStr += String::CreateFromInt32( nNoPgEnd )) += ' ';
+ }
+ if( bOnlyText )
+ ((aStr.APP_ASC( "\\p \"" )) += aFillTxt )
+ .AppendAscii(sEntryEnd);
+ }
+
+ if( sTOption.Len() )
+ (( aStr.APP_ASC( "\\t \"" )) += sTOption )
+ .AppendAscii(sEntryEnd);
+ }
+ break;
+ }
+
+ if( aStr.Len() )
+ {
+ bInWriteTOX = TRUE;
+ OutField( 0, nCode, aStr, WRITEFIELD_START |
+ WRITEFIELD_CMD_START | WRITEFIELD_CMD_END );
+ }
+ }
+ bStartTOX = FALSE;
+}
+
+void SwWW8Writer::EndTOX( const SwSection& rSect )
+{
+ const SwTOXBase* pTOX = rSect.GetTOXBase();
+ if( pTOX )
+ {
+ BYTE nCode = TOX_INDEX == pTOX->GetType() ? 8 : 13;
+ OutField( 0, nCode, aEmptyStr, WRITEFIELD_CLOSE );
+ }
+ bInWriteTOX = FALSE;
+}
+
+
+
+// GetDatePara, GetTimePara, GetNumberPara modifizieren die String-Ref
+// Es werden die deutschen Format-Spezifier benutzt, da im FIB auch dt. als
+// Creator angegeben ist.
+BOOL SwWW8Writer::GetNumberFmt( const SwField& rFld, String& rStr )
+{
+ BOOL bHasFmt = FALSE;
+ SvNumberFormatter* pNFmtr = pDoc->GetNumberFormatter();
+ UINT32 nFmtIdx = rFld.GetFormat();
+ const SvNumberformat* pNumFmt = pNFmtr->GetEntry( nFmtIdx );
+ if( pNumFmt )
+ {
+ USHORT nLng = rFld.GetLanguage();
+ const International aIntl( nLng );
+ if( !pKeyMap )
+ {
+ pKeyMap = new NfKeywordTable;
+ NfKeywordTable& rKeyMap = *(NfKeywordTable*)pKeyMap;
+// aKeyMap[ NF_KEY_NONE = 0,
+// aKeyMap[ NF_KEY_E,
+// aKeyMap[ NF_KEY_AMPM,
+// aKeyMap[ NF_KEY_AP,
+ rKeyMap[ NF_KEY_MI ].ASIGN_ASC( "m" );
+ rKeyMap[ NF_KEY_MMI ].ASIGN_ASC( "mm" );
+ rKeyMap[ NF_KEY_M ].ASIGN_ASC( "M" );
+ rKeyMap[ NF_KEY_MM ].ASIGN_ASC( "MM" );
+ rKeyMap[ NF_KEY_MMM ].ASIGN_ASC( "MMM" );
+ rKeyMap[ NF_KEY_MMMM ].ASIGN_ASC( "MMMM" );
+ rKeyMap[ NF_KEY_H ].ASIGN_ASC( "H" );
+ rKeyMap[ NF_KEY_HH ].ASIGN_ASC( "HH" );
+ rKeyMap[ NF_KEY_S ].ASIGN_ASC( "s" );
+ rKeyMap[ NF_KEY_SS ].ASIGN_ASC( "ss" );
+// aKeyMap[ NF_KEY_Q,
+// aKeyMap[ NF_KEY_QQ,
+ rKeyMap[ NF_KEY_T ].ASIGN_ASC( "t" );
+ rKeyMap[ NF_KEY_TT ].ASIGN_ASC( "tt" );
+ rKeyMap[ NF_KEY_TTT ].ASIGN_ASC( "ttt" );
+ rKeyMap[ NF_KEY_TTTT ].ASIGN_ASC( "tttt" );
+ rKeyMap[ NF_KEY_JJ ].ASIGN_ASC( "jj" );
+ rKeyMap[ NF_KEY_JJJJ ].ASIGN_ASC( "jjjj" );
+ rKeyMap[ NF_KEY_NN ].ASIGN_ASC( "ttt" );
+ rKeyMap[ NF_KEY_NNNN ].ASIGN_ASC( "tttt" );
+// aKeyMap[ NF_KEY_CCC,
+// aKeyMap[ NF_KEY_GENERAL,
+// aKeyMap[ NF_KEY_NNN,
+// aKeyMap[ NF_KEY_WW,
+// aKeyMap[ NF_KEY_QUARTER,
+// aKeyMap[ NF_KEY_TRUE,
+// aKeyMap[ NF_KEY_FALSE,
+// aKeyMap[ NF_KEY_BOOLEAN,
+ }
+
+ String sFmt( pNumFmt->GetMappedFormatstring(
+ *(NfKeywordTable*)pKeyMap, aIntl, TRUE ));
+ if( sFmt.Len() )
+ {
+ (( rStr.APP_ASC( "\\@\"" )) += sFmt ).APP_ASC( "\" " );
+ bHasFmt = TRUE;
+ }
+ }
+ return bHasFmt;
+}
+
+void WW8_GetNumberPara( String& rStr, const SwField& rFld )
+{
+ switch( rFld.GetFormat() )
+ {
+ case SVX_NUM_CHARS_UPPER_LETTER:
+ case SVX_NUM_CHARS_UPPER_LETTER_N: rStr.APP_ASC( "\\*ALPHABETISCH "); break;
+ case SVX_NUM_CHARS_LOWER_LETTER:
+ case SVX_NUM_CHARS_LOWER_LETTER_N: rStr.APP_ASC("\\*alphabetisch "); break;
+ case SVX_NUM_ROMAN_UPPER: rStr.APP_ASC("\\*R\xd6MISCH "); break;
+ case SVX_NUM_ROMAN_LOWER: rStr.APP_ASC("\\*r\xf6misch "); break;
+ case SVX_NUM_ARABIC: rStr.APP_ASC("\\*Arabisch "); break;
+ }
+}
+
+void SwWW8Writer::WritePostItBegin( const SwPostItField& rPostIt,
+ WW8Bytes* pO )
+{
+ BYTE aArr[ 3 ];
+ BYTE* pArr = aArr;
+
+ // sprmCFSpec TRUE
+ if( bWrtWW8 )
+ Set_UInt16( pArr, 0x855 );
+ else
+ Set_UInt8( pArr, 117 );
+ Set_UInt8( pArr, 1 );
+
+ pChpPlc->AppendFkpEntry( Strm().Tell() );
+ WriteChar( 0x05 ); // Annotation reference
+
+ if( pO )
+ pO->Insert( aArr, pArr - aArr, pO->Count() );
+ else
+ pChpPlc->AppendFkpEntry( Strm().Tell(), pArr - aArr, aArr );
+}
+
+static Writer& OutWW8_SwField( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ const SwFmtFld& rFld = (SwFmtFld&)rHt;
+ const SwField* pFld = rFld.GetFld();
+ String aStr; // fuer optionale Parameter
+ BOOL bWriteExpand = FALSE;
+ USHORT nSubType = pFld->GetSubType();
+ BYTE nFldTyp = 0;
+
+ switch( pFld->GetTyp()->Which() )
+ {
+// case RES_CHAPTERFLD:
+// break;
+
+ case RES_SETEXPFLD:
+ if( GSE_SEQ == nSubType )
+ {
+ (( aStr.ASIGN_ASC( " SEQ \"" )) += pFld->GetTyp()->GetName() )
+ .APP_ASC( "\" " );
+ ::WW8_GetNumberPara( aStr, *pFld );
+ rWW8Wrt.OutField( pFld, 12, aStr );
+ }
+ else
+ bWriteExpand = TRUE;
+ break;
+
+ case RES_PAGENUMBERFLD:
+ aStr.ASIGN_ASC( " SEITE " );
+ ::WW8_GetNumberPara( aStr, *pFld );
+ rWW8Wrt.OutField( pFld, 33, aStr );
+ break;
+
+ case RES_FILENAMEFLD:
+ rWW8Wrt.OutField( pFld, 29, CREA_ASC( "DATEINAME" ));
+ break;
+
+ case RES_DBNAMEFLD:
+ aStr.ASIGN_ASC( "DATENBANK " ); // ok ??
+ aStr += rWrt.pDoc->GetDBName();
+ rWW8Wrt.OutField( pFld, 78, aStr );
+ break;
+
+ case RES_AUTHORFLD:
+ rWW8Wrt.OutField( pFld, (AF_SHORTCUT & nSubType ? 61 : 60),
+ CREA_ASC( "AUTOR" ));
+ break;
+
+ case RES_TEMPLNAMEFLD:
+ rWW8Wrt.OutField( pFld, 30, CREA_ASC("DOKVORLAGE" ));
+ break;
+
+ case RES_DOCINFOFLD: // Last printed, last edited,...
+ if( DI_SUB_FIXED & nSubType )
+ bWriteExpand = TRUE;
+ else
+ {
+ static sal_Char __READONLY_DATA sFld15[] = "TITLE";
+ static sal_Char __READONLY_DATA sFld16[] = "THEMA";
+ static sal_Char __READONLY_DATA sFld17[] = "AUTOR ";
+ static sal_Char __READONLY_DATA sFld18[] = "STICHW\xd6RTER";
+ static sal_Char __READONLY_DATA sFld19[] = "KOMMENTAR";
+ static sal_Char __READONLY_DATA sFld20[] = "GESPEICHERTVON";
+ static sal_Char __READONLY_DATA sFld21[] = "ERSTELLDAT ";
+ static sal_Char __READONLY_DATA sFld22[] = "SPEICHERDAT ";
+ static sal_Char __READONLY_DATA sFld23[] = "DRUCKDAT ";
+ static sal_Char __READONLY_DATA sFld24[] = "\xdc" "BERARBEITUNGSNUMMER";
+
+ static const sal_Char* __READONLY_DATA aFldArr[] = {
+ sFld15, sFld16, sFld17, sFld18, sFld19,
+ sFld20, sFld21, sFld22, sFld23, sFld24
+ };
+
+ switch( 0xff & nSubType )
+ {
+ case DI_TITEL: nFldTyp = 15; break;
+ case DI_THEMA: nFldTyp = 16; break;
+ case DI_KEYS: nFldTyp = 18; break;
+ case DI_COMMENT: nFldTyp = 19; break;
+ case DI_DOCNO: nFldTyp = 24; break;
+
+ case DI_CREATE:
+ if( DI_SUB_AUTHOR == (nSubType & ~DI_SUB_AUTHOR ))
+ nFldTyp = 17;
+ else if( rWW8Wrt.GetNumberFmt( *pFld, aStr ))
+ nFldTyp = 21;
+ break;
+
+ case DI_CHANGE:
+ if( DI_SUB_AUTHOR == (nSubType & ~DI_SUB_AUTHOR ))
+ nFldTyp = 20;
+ break;
+
+ case DI_PRINT:
+ if( DI_SUB_AUTHOR != (nSubType & ~DI_SUB_AUTHOR ) &&
+ rWW8Wrt.GetNumberFmt( *pFld, aStr ))
+ nFldTyp = 23;
+ break;
+ case DI_EDIT:
+ if( DI_SUB_AUTHOR != (nSubType & ~DI_SUB_AUTHOR ) &&
+ rWW8Wrt.GetNumberFmt( *pFld, aStr ))
+ nFldTyp = 22;
+ break;
+ }
+
+ if( nFldTyp )
+ {
+ aStr.InsertAscii( aFldArr[ nFldTyp - 15 ], 0 );
+ rWW8Wrt.OutField( pFld, nFldTyp, aStr );
+ }
+ else
+ bWriteExpand = TRUE;
+ }
+ break;
+
+ case RES_DATETIMEFLD:
+ if( FIXEDFLD & nSubType || !rWW8Wrt.GetNumberFmt( *pFld, aStr ) )
+ bWriteExpand = TRUE;
+ else
+ {
+ const sal_Char* pAddStr;
+ USHORT nTyp;
+ if( DATEFLD & nSubType )
+ {
+ pAddStr = " AKTUALDAT ";
+ nTyp = 31;
+ }
+ else
+ {
+ pAddStr = " ZEIT ";
+ nTyp = 32;
+ }
+ aStr.InsertAscii( pAddStr, 0 );
+ rWW8Wrt.OutField( pFld, nTyp, aStr );
+ }
+ break;
+
+ case RES_DOCSTATFLD:
+ {
+ switch( nSubType )
+ {
+ case DS_PAGE: aStr.ASIGN_ASC(" ANZSEITEN "); nFldTyp = 26; break;
+ case DS_WORD: aStr.ASIGN_ASC(" ANZW\xd6RTER "); nFldTyp = 27; break;
+ case DS_CHAR: aStr.ASIGN_ASC(" ANZZEICHEN "); nFldTyp = 28; break;
+ }
+
+ if( nFldTyp )
+ {
+ ::WW8_GetNumberPara( aStr, *pFld );
+ rWW8Wrt.OutField( pFld, nFldTyp, aStr );
+ }
+ else
+ bWriteExpand = TRUE;
+ }
+ break;
+ case RES_EXTUSERFLD:
+ {
+ switch( 0xFF & nSubType )
+ {
+ case EU_FIRSTNAME:
+ case EU_NAME:
+ nFldTyp = 60;
+ aStr.ASIGN_ASC("BENUTZERNAME");
+ break;
+
+ case EU_SHORTCUT:
+ nFldTyp = 61;
+ aStr.ASIGN_ASC("BENUTZERINITIALEN");
+ break;
+
+ case EU_STREET:
+ case EU_COUNTRY:
+ case EU_ZIP:
+ case EU_CITY:
+ nFldTyp = 62;
+ aStr.ASIGN_ASC("BENUTZERADR");
+ break;
+ }
+ if( nFldTyp )
+ rWW8Wrt.OutField( pFld, nFldTyp, aStr );
+ else
+ bWriteExpand = TRUE;
+ }
+ break;
+
+ case RES_POSTITFLD:
+ {
+ const SwPostItField& rPFld = *(SwPostItField*)pFld;
+ rWW8Wrt.pAtn->Append( rWW8Wrt.Fc2Cp( rWrt.Strm().Tell() ), rPFld );
+ rWW8Wrt.WritePostItBegin( rPFld, rWW8Wrt.pO );
+ }
+ break;
+
+ case RES_INPUTFLD:
+ ((aStr.ASIGN_ASC("EINGEBEN \"" )) += pFld->GetPar2() )+= '\"';
+ rWW8Wrt.OutField( pFld, 39, aStr );
+ break;
+
+ case RES_GETREFFLD:
+ {
+ aStr.ASIGN_ASC(" REF ");
+ const SwGetRefField& rRFld = *(SwGetRefField*)pFld;
+ switch( nSubType )
+ {
+ case REF_SETREFATTR:
+ case REF_BOOKMARK:
+ aStr += rWW8Wrt.GetBookmarkName( nSubType,
+ &rRFld.GetSetRefName(), 0 );
+ nFldTyp = 3;
+ break;
+
+ case REF_FOOTNOTE:
+ case REF_ENDNOTE:
+ aStr += rWW8Wrt.GetBookmarkName( nSubType, 0,
+ rRFld.GetSeqNo() );
+ nFldTyp = REF_ENDNOTE == nSubType ? 72 : 5;
+ switch( pFld->GetFormat() )
+ {
+ case REF_PAGE_PGDESC:
+ case REF_PAGE:
+ case REF_UPDOWN:
+ break;
+ default:
+ aStr.InsertAscii( "FUSSENDNOTE", 1 );
+ break;
+ }
+ break;
+
+// case REF_SEQUENCEFLD: // ???
+// case REF_OUTLINE: // 10
+ // page reference - 37
+ // DDE reference - 45
+ // DDE automatic reference - 46
+ }
+
+ if( nFldTyp )
+ {
+ switch( pFld->GetFormat() )
+ {
+ case REF_PAGE_PGDESC:
+ case REF_PAGE:
+ aStr.InsertAscii( "SEITEN", 1 );
+ nFldTyp = 37;
+ break;
+
+ case REF_UPDOWN:
+ aStr.APP_ASC( " \\p" );
+ nFldTyp = 3;
+ break;
+
+ case REF_CHAPTER:
+ case REF_ONLYNUMBER:
+ case REF_ONLYCAPTION:
+ case REF_ONLYSEQNO:
+ break;
+ // default:
+ // case REF_CONTENT:
+ }
+
+ aStr.APP_ASC( " \\h " ); // insert hyperlink
+ rWW8Wrt.OutField( pFld, nFldTyp, aStr );
+
+ }
+ else
+ bWriteExpand = TRUE;
+ }
+ break;
+
+ default:
+ bWriteExpand = TRUE;
+ break;
+ }
+
+ if( bWriteExpand )
+ {
+ if( rWW8Wrt.IsUnicode() )
+ SwWW8Writer::WriteString16( rWrt.Strm(), pFld->Expand(), FALSE );
+ else
+ SwWW8Writer::WriteString8( rWrt.Strm(), pFld->Expand(), FALSE,
+ RTL_TEXTENCODING_MS_1252 );
+ }
+
+ return rWrt;
+}
+
+static Writer& OutWW8_SwFlyCntnt( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.pOutFmtNode && rWrtWW8.pOutFmtNode->ISA( SwCntntNode ))
+ {
+ SwTxtNode* pTxtNd = (SwTxtNode*)rWrtWW8.pOutFmtNode;
+
+ Point aLayPos;
+ aLayPos = pTxtNd->FindLayoutRect( FALSE, &aLayPos ).Pos();
+
+ rWrtWW8.OutWW8FlyFrm( *((SwFmtFlyCnt&)rHt).GetFrmFmt(), aLayPos );
+ }
+ return rWrt;
+}
+
+// TOXMarks fehlen noch
+
+// Detaillierte Einstellungen zur Trennung erlaubt WW nur dokumentenweise.
+// Man koennte folgende Mimik einbauen: Die Werte des Style "Standard" werden,
+// falls vorhanden, in die Document Properties ( DOP ) gesetzt.
+// ---
+// ACK. Dieser Vorschlag passt exakt zu unserer Implementierung des Import,
+// daher setze ich das gleich mal um. (KHZ, 07/15/2000)
+static Writer& OutWW8_SvxHyphenZone( Writer& rWrt, const SfxPoolItem& rHt )
+{
+// sprmPFNoAutoHyph
+ const SvxHyphenZoneItem& rAttr = (const SvxHyphenZoneItem&)rHt;
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x242A );
+ else
+ rWrtWW8.pO->Insert( 44, rWrtWW8.pO->Count() );
+
+ rWrtWW8.pO->Insert( rAttr.IsHyphen() ? 0 : 1, rWrtWW8.pO->Count() );
+ return rWrt;
+}
+
+// NoHyphen: ich habe keine Entsprechung in der SW-UI und WW-UI gefunden
+
+static Writer& OutWW8_SwHardBlank( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ ((SwWW8Writer&)rWrt).WriteChar( ((SwFmtHardBlank&)rHt).GetChar() );
+ return rWrt;
+}
+
+// RefMark, NoLineBreakHere fehlen noch
+
+void SwWW8Writer::WriteFtnBegin( const SwFmtFtn& rFtn, WW8Bytes* pOutArr )
+{
+ WW8Bytes aAttrArr;
+ BOOL bAutoNum = !rFtn.GetNumStr().Len(); // Auto-Nummer
+ if( bAutoNum )
+ {
+ if( bWrtWW8 )
+ {
+ static BYTE __READONLY_DATA aSpec[] = {
+ 0x03, 0x6a, 0, 0, 0, 0, // sprmCObjLocation (wahrscheinlich unnoetig)
+ 0x55, 0x08, 1 // sprmCFSpec
+ };
+
+ aAttrArr.Insert( aSpec, sizeof( aSpec ), aAttrArr.Count() );
+ }
+ else
+ {
+ static BYTE __READONLY_DATA aSpec[] = {
+ 117, 1, // sprmCFSpec
+ 68, 4, 0, 0, 0, 0 // sprmCObjLocation (wahrscheinlich unnoetig)
+ };
+ aAttrArr.Insert( aSpec, sizeof( aSpec ), aAttrArr.Count() );
+ }
+ }
+
+ // sprmCIstd
+ const SwEndNoteInfo* pInfo;
+ if( rFtn.IsEndNote() )
+ pInfo = &pDoc->GetEndNoteInfo();
+ else
+ pInfo = &pDoc->GetFtnInfo();
+ const SwCharFmt* pCFmt = pOutArr
+ ? pInfo->GetAnchorCharFmt( *pDoc )
+ : pInfo->GetCharFmt( *pDoc );
+ if( bWrtWW8 )
+ SwWW8Writer::InsUInt16( aAttrArr, 0x4a30 );
+ else
+ aAttrArr.Insert( 80, aAttrArr.Count() );
+ SwWW8Writer::InsUInt16( aAttrArr, GetId( *pCFmt ) );
+
+ // fSpec-Attribut TRUE
+ // Fuer Auto-Nummer muss ein Spezial-Zeichen
+ // in den Text und darum ein fSpec-Attribut
+ pChpPlc->AppendFkpEntry( Strm().Tell() );
+ if( bAutoNum )
+ WriteChar( 0x02 ); // Auto-Nummer-Zeichen
+ else
+ // User-Nummerierung
+ OutSwString( rFtn.GetNumStr(), 0, rFtn.GetNumStr().Len(),
+ IsUnicode(), RTL_TEXTENCODING_MS_1252 );
+
+ if( pOutArr )
+ {
+ // insert at start of array, so the "hard" attribute overrule the
+ // attributes of the character template
+ pOutArr->Insert( &aAttrArr, 0 );
+ }
+ else
+ {
+ WW8Bytes aOutArr;
+
+ // insert at start of array, so the "hard" attribute overrule the
+ // attributes of the character template
+ aOutArr.Insert( &aAttrArr, 0 );
+
+ // write for the ftn number in the content, the font of the anchor
+ const SwTxtFtn* pTxtFtn = rFtn.GetTxtFtn();
+ if( pTxtFtn )
+ {
+ WW8Bytes* pOld = pO;
+ pO = &aOutArr;
+ SfxItemSet aSet( pDoc->GetAttrPool(), RES_CHRATR_FONT,
+ RES_CHRATR_FONT );
+
+ pCFmt = pInfo->GetCharFmt( *pDoc );
+ aSet.Set( pCFmt->GetAttrSet() );
+
+ pTxtFtn->GetTxtNode().GetAttr( aSet, *pTxtFtn->GetStart(),
+ (*pTxtFtn->GetStart()) + 1 );
+ ::OutWW8_SwFont( *this, aSet.Get( RES_CHRATR_FONT ));
+ pO = pOld;
+ }
+ pChpPlc->AppendFkpEntry( Strm().Tell(), aOutArr.Count(),
+ aOutArr.GetData() );
+ }
+}
+
+static BOOL lcl_IsAtTxtEnd( const SwFmtFtn& rFtn )
+{
+ BOOL bRet = TRUE;
+ if( rFtn.GetTxtFtn() )
+ {
+ USHORT nWh = rFtn.IsEndNote() ? RES_END_AT_TXTEND
+ : RES_FTN_AT_TXTEND;
+ const SwSectionNode* pSectNd = rFtn.GetTxtFtn()->GetTxtNode().
+ FindSectionNode();
+ while( pSectNd && FTNEND_ATPGORDOCEND ==
+ ((const SwFmtFtnAtTxtEnd&)pSectNd->GetSection().GetFmt()->
+ GetAttr( nWh, TRUE )).GetValue() )
+ pSectNd = pSectNd->FindStartNode()->FindSectionNode();
+
+ if( !pSectNd )
+ bRet = FALSE; // the is ftn/end collected at Page- or Doc-End
+ }
+ return bRet;
+}
+
+
+static Writer& OutWW8_SwFtn( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwFmtFtn& rFtn = (const SwFmtFtn&)rHt;
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+
+ USHORT nTyp;
+ WW8_WrPlcFtnEdn* pFtnEnd;
+ if( rFtn.IsEndNote() )
+ {
+ pFtnEnd = rWW8Wrt.pEdn;
+ nTyp = REF_ENDNOTE;
+ if( rWW8Wrt.bEndAtTxtEnd )
+ rWW8Wrt.bEndAtTxtEnd = lcl_IsAtTxtEnd( rFtn );
+ }
+ else
+ {
+ pFtnEnd = rWW8Wrt.pFtn;
+ nTyp = REF_FOOTNOTE;
+ if( rWW8Wrt.bFtnAtTxtEnd )
+ rWW8Wrt.bFtnAtTxtEnd = lcl_IsAtTxtEnd( rFtn );
+ }
+
+ // if any reference to this footnote/endnote then insert an internal
+ // Bookmark.
+ String sBkmkNm;
+ if( rWW8Wrt.HasRefToObject( nTyp, 0, rFtn.GetTxtFtn()->GetSeqRefNo() ))
+ {
+ sBkmkNm = rWW8Wrt.GetBookmarkName( nTyp, 0,
+ rFtn.GetTxtFtn()->GetSeqRefNo() );
+ rWW8Wrt.AppendBookmark( sBkmkNm );
+ }
+
+
+ pFtnEnd->Append( rWW8Wrt.Fc2Cp( rWrt.Strm().Tell() ), rFtn );
+ rWW8Wrt.WriteFtnBegin( rFtn, rWW8Wrt.pO );
+
+ if( sBkmkNm.Len() )
+ rWW8Wrt.AppendBookmark( sBkmkNm );
+
+ return rWrt;
+}
+
+
+
+static Writer& OutWW8_SwTxtCharFmt( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwFmtCharFmt& rAttr = (const SwFmtCharFmt&)rHt;
+ if( rAttr.GetCharFmt() )
+ {
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x4A30 );
+ else
+ rWrtWW8.pO->Insert( 80, rWrtWW8.pO->Count() );
+
+ rWrtWW8.InsUInt16( rWrtWW8.GetId( *rAttr.GetCharFmt() ) );
+ }
+ return rWrt;
+}
+
+
+static Writer& OutWW8_SwNumRuleItem( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ const SwNumRuleItem& rNumRule = (const SwNumRuleItem&)rHt;
+
+ const SwTxtNode* pTxtNd = 0;
+ USHORT nNumId;
+ BYTE nLvl = 0;
+ if( rNumRule.GetValue().Len() )
+ {
+ const SwNumRule* pRule = rWrt.pDoc->FindNumRulePtr(
+ rNumRule.GetValue() );
+ if( pRule && USHRT_MAX != ( nNumId = rWW8Wrt.GetId( *pRule )) )
+ {
+ ++nNumId;
+ if( rWW8Wrt.pOutFmtNode )
+ {
+ if( rWW8Wrt.pOutFmtNode->ISA( SwCntntNode ))
+ {
+ pTxtNd = (SwTxtNode*)rWW8Wrt.pOutFmtNode;
+ const SwNodeNum* pNum = pTxtNd->GetNum();
+
+ if( pNum && NO_NUM > pNum->GetLevel() )
+ nLvl = GetRealLevel( pNum->GetLevel() );
+ }
+ else if( rWW8Wrt.pOutFmtNode->ISA( SwTxtFmtColl ))
+ {
+ const SwTxtFmtColl* pC = (SwTxtFmtColl*)rWW8Wrt.pOutFmtNode;
+ if( pC && MAXLEVEL > pC->GetOutlineLevel() )
+ nLvl = pC->GetOutlineLevel();
+ }
+ }
+ }
+ else
+ nNumId = USHRT_MAX;
+ }
+ else
+ nNumId = 0;
+
+ if( USHRT_MAX != nNumId )
+ {
+ if( nLvl >= nWW8MaxListLevel )
+ nLvl = nWW8MaxListLevel-1;
+ if( rWW8Wrt.bWrtWW8 )
+ {
+ // write sprmPIlvl and sprmPIlfo
+ SwWW8Writer::InsUInt16( *rWW8Wrt.pO, 0x260a );
+ rWW8Wrt.pO->Insert( nLvl, rWW8Wrt.pO->Count() );
+ SwWW8Writer::InsUInt16( *rWW8Wrt.pO, 0x460b );
+ SwWW8Writer::InsUInt16( *rWW8Wrt.pO, nNumId );
+ }
+ else if( pTxtNd && rWW8Wrt.Out_SwNum( pTxtNd ) ) // NumRules
+ rWW8Wrt.pSepx->SetNum( pTxtNd );
+ }
+ return rWrt;
+}
+
+/* File FRMATR.HXX */
+
+static Writer& OutWW8_SwFrmSize( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ const SwFmtFrmSize& rSz = (const SwFmtFrmSize&)rHt;
+
+ if( rWW8Wrt.bOutFlyFrmAttrs ) // Flys
+ {
+ if( rWW8Wrt.bOutGrf )
+ return rWrt; // Fly um Grafik -> Auto-Groesse
+
+//???? was ist bei Prozentangaben ???
+ if( rSz.GetWidth() )
+ {
+ //"sprmPDxaWidth"
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x841A );
+ else
+ rWW8Wrt.pO->Insert( 28, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( (USHORT)rSz.GetWidth() );
+ }
+
+ if( rSz.GetHeight() )
+ {
+ // sprmPWHeightAbs
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x442B );
+ else
+ rWW8Wrt.pO->Insert( 45, rWW8Wrt.pO->Count() );
+
+ USHORT nH = 0;
+ switch( rSz.GetSizeType() )
+ {
+ case ATT_VAR_SIZE: break;
+ case ATT_FIX_SIZE: nH = (USHORT)rSz.GetHeight() & 0x7fff; break;
+ default: nH = (USHORT)rSz.GetHeight() | 0x8000; break;
+ }
+ rWW8Wrt.InsUInt16( nH );
+ }
+ }
+ else if( rWW8Wrt.bOutPageDescs ) // PageDesc : Breite + Hoehe
+ {
+ if( rWW8Wrt.pAktPageDesc->GetLandscape() )
+ {
+ /*sprmSBOrientation*/
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x301d );
+ else
+ rWW8Wrt.pO->Insert( 162, rWW8Wrt.pO->Count() );
+ rWW8Wrt.pO->Insert( 2, rWW8Wrt.pO->Count() );
+ }
+
+ /*sprmSXaPage*/
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0xB01F );
+ else
+ rWW8Wrt.pO->Insert( 164, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( (USHORT)rSz.GetWidth() );
+
+ /*sprmSYaPage*/
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0xB020 );
+ else
+ rWW8Wrt.pO->Insert( 165, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( (USHORT)rSz.GetHeight() );
+ }
+ return rWrt;
+}
+
+// FillOrder fehlt noch
+
+// ReplaceCr() wird fuer Pagebreaks und Pagedescs gebraucht. Es wird ein
+// bereits geschriebenes CR durch ein Break-Zeichen ersetzt. Replace muss
+// direkt nach Schreiben des CR gerufen werden.
+// Rueckgabe: FilePos des ersetzten CRs + 1 oder 0 fuer nicht ersetzt
+
+ULONG SwWW8Writer::ReplaceCr( BYTE nChar )
+{
+ // Bug #49917#
+ ASSERT( nChar, "gegen 0 ersetzt bringt WW97/95 zum Absturz" );
+
+ ULONG nRetPos = 0, nPos = Strm().Tell();
+ Strm().SeekRel( IsUnicode() ? -2 : -1 );
+ BYTE nC1;
+ Strm().Read( &nC1, 1 );
+ if( nC1 == 0x0d ) // CR ?
+ {
+ Strm().SeekRel( -1 ); // CR hinter Zeile
+ Strm().Write( &nChar, 1 ); // durch nChar ersetzen
+ nRetPos = nPos;
+ }
+ Strm().Seek( nPos );
+
+ if( 0x7 == nC1 ) // at end of TableRow ?
+ {
+ // then write as normal char
+ WriteChar( nChar );
+ nRetPos = Strm().Tell();
+ }
+#ifdef PRODUCT
+ else
+ {
+ ASSERT( nRetPos || nPos == (ULONG)pFib->fcMin,
+ "WW8_ReplaceCr an falscher FilePos gerufen" );
+ }
+#endif
+ return nRetPos;
+}
+
+// Breaks schreiben nichts in das Ausgabe-Feld rWrt.pO,
+// sondern nur in den Text-Stream ( Bedingung dafuer, dass sie von Out_Break...
+// gerufen werden duerfen )
+static Writer& OutWW8_SwFmtBreak( Writer& rWrt, const SfxPoolItem& rHt )
+{
+/*UMSTELLEN*/
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ const SvxFmtBreakItem &rBreak = (const SvxFmtBreakItem&)rHt;
+
+ if( rWW8Wrt.bStyDef )
+ {
+ switch( rBreak.GetBreak() )
+ {
+//JP 21.06.99: column breaks does never change to pagebreaks
+// case SVX_BREAK_COLUMN_BEFORE:
+// case SVX_BREAK_COLUMN_BOTH:
+
+ case SVX_BREAK_PAGE_BEFORE:
+ case SVX_BREAK_PAGE_BOTH:
+ // sprmPPageBreakBefore/sprmPFPageBreakBefore
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x2407 );
+ else
+ rWW8Wrt.pO->Insert( 9, rWW8Wrt.pO->Count() );
+ rWW8Wrt.pO->Insert( rBreak.GetValue() ? 1 : 0, rWW8Wrt.pO->Count() );
+ break;
+ }
+ }
+ else if( !rWW8Wrt.pFlyFmt )
+ {
+ BYTE nC = 0;
+ BOOL bBefore = FALSE;
+
+ switch( rBreak.GetBreak() )
+ {
+ case SVX_BREAK_NONE: // Ausgeschaltet
+ if( !rWW8Wrt.bBreakBefore )
+ {
+ // sprmPPageBreakBefore/sprmPFPageBreakBefore
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x2407 );
+ else
+ rWW8Wrt.pO->Insert( 9, rWW8Wrt.pO->Count() );
+ rWW8Wrt.pO->Insert( (BYTE)0, rWW8Wrt.pO->Count() );
+ }
+ return rWrt;
+
+ case SVX_BREAK_COLUMN_BEFORE: // ColumnBreak
+ bBefore = TRUE;
+ // no break;
+ case SVX_BREAK_COLUMN_AFTER:
+ case SVX_BREAK_COLUMN_BOTH:
+ nC = 0xe;
+ break;
+
+ case SVX_BREAK_PAGE_BEFORE: // PageBreak
+ bBefore = TRUE;
+ // no break;
+ case SVX_BREAK_PAGE_AFTER:
+ case SVX_BREAK_PAGE_BOTH:
+ nC = 0xc;
+ break;
+ }
+
+ if( (bBefore == rWW8Wrt.bBreakBefore ) && nC ) // #49917#
+ rWW8Wrt.ReplaceCr( nC );
+ }
+ return rWrt;
+}
+
+static Writer& OutWW8_SvxPaperBin( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ const SvxPaperBinItem& rItem = (const SvxPaperBinItem&)rHt;
+
+ if( rWrtWW8.bOutPageDescs )
+ {
+ USHORT nVal;
+ switch( rItem.GetValue() )
+ {
+ case 0: nVal = 15; break; // Automatically select
+ case 1: nVal = 1; break; // Upper paper tray
+ case 2: nVal = 4; break; // Manual paper feed
+ default: nVal = 0; break;
+ }
+
+ if( nVal )
+ {
+ // sprmSDmBinFirst 0x5007 word
+ // sprmSDmBinOther 0x5008 word
+ BYTE nOff = rWrtWW8.bOutFirstPage ? 0 : 1;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x5007 + nOff );
+ else
+ rWrtWW8.pO->Insert( 140 + nOff, rWrtWW8.pO->Count() );
+ rWrtWW8.InsUInt16( nVal );
+ }
+ }
+ return rWrt;
+}
+
+static Writer& OutWW8_SwFmtLRSpace( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ const SvxLRSpaceItem & rLR = (const SvxLRSpaceItem&) rHt;
+
+
+ // Flys fehlen noch ( siehe RTF )
+
+ if( rWW8Wrt.bOutFlyFrmAttrs ) // Flys
+ {
+ // sprmPDxaFromText10
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x4622 );
+ else
+ rWW8Wrt.pO->Insert( 49, rWW8Wrt.pO->Count() );
+ // Mittelwert nehmen, da WW nur 1 Wert kennt
+ rWW8Wrt.InsUInt16( (USHORT) ( ( rLR.GetLeft() + rLR.GetRight() ) / 2 ) );
+ }
+ else if( rWW8Wrt.bOutPageDescs ) // PageDescs
+ {
+ USHORT nLDist, nRDist;
+ const SfxPoolItem* pItem = ((SwWW8Writer&)rWrt).HasItem( RES_BOX );
+ if( pItem )
+ {
+ nRDist = ((SvxBoxItem*)pItem)->CalcLineSpace( BOX_LINE_LEFT );
+ nLDist = ((SvxBoxItem*)pItem)->CalcLineSpace( BOX_LINE_RIGHT );
+ }
+ else
+ nLDist = nRDist = 0;
+ nLDist += rLR.GetLeft();
+ nRDist += rLR.GetRight();
+
+ // sprmSDxaLeft
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0xB021 );
+ else
+ rWW8Wrt.pO->Insert( 166, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( nLDist );
+ // sprmSDxaRight
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0xB022 );
+ else
+ rWW8Wrt.pO->Insert( 167, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( nRDist );
+ }
+ else
+ { // normale Absaetze
+ // sprmPDxaLeft
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x840F );
+ else
+ rWW8Wrt.pO->Insert( 17, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( rLR.GetTxtLeft() );
+ // sprmPDxaRight
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x840E );
+ else
+ rWW8Wrt.pO->Insert( 16, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( rLR.GetRight() );
+ // sprmPDxaLeft1
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x8411 );
+ else
+ rWW8Wrt.pO->Insert( 19, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( rLR.GetTxtFirstLineOfst() );
+ }
+ return rWrt;
+}
+
+static USHORT lcl_CalcHdFtDist( const SwFrmFmt& rFmt, BOOL bLower )
+{
+ long nDist = 0;
+ SwRect aRect( rFmt.FindLayoutRect( FALSE ));
+ if( aRect.Height() )
+ nDist += aRect.Height();
+ else
+ {
+ const SwFmtFrmSize& rSz = rFmt.GetFrmSize();
+ if( ATT_VAR_SIZE != rSz.GetSizeType() )
+ nDist += rSz.GetHeight();
+ else
+ {
+ nDist += 274; // defaulten fuer 12pt Schrift
+ const SvxULSpaceItem& rUL = rFmt.GetULSpace();
+ nDist += ( bLower ? rUL.GetLower() : rUL.GetUpper() );
+ }
+ }
+ return (USHORT)nDist;
+}
+
+static Writer& OutWW8_SwFmtULSpace( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ const SvxULSpaceItem & rUL = (const SvxULSpaceItem&) rHt;
+
+ // Flys fehlen noch ( siehe RTF )
+
+ if( rWW8Wrt.bOutFlyFrmAttrs ) // Flys
+ {
+ // sprmPDyaFromText
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x842E );
+ else
+ rWW8Wrt.pO->Insert( 48, rWW8Wrt.pO->Count() );
+ // Mittelwert nehmen, da WW nur 1 Wert kennt
+ rWW8Wrt.InsUInt16( (USHORT) ( ( rUL.GetUpper() + rUL.GetLower() ) / 2 ) );
+ }
+ else if( rWW8Wrt.bOutPageDescs ) // Page-UL
+ {
+ USHORT nUDist, nLDist;
+ const SfxPoolItem* pItem = rWW8Wrt.HasItem( RES_BOX );
+ if( pItem )
+ {
+ nUDist = ((SvxBoxItem*)pItem)->CalcLineSpace( BOX_LINE_TOP );
+ nLDist = ((SvxBoxItem*)pItem)->CalcLineSpace( BOX_LINE_BOTTOM );
+ }
+ else
+ nUDist = nLDist = 0;
+ nUDist += rUL.GetUpper();
+ nLDist += rUL.GetLower();
+
+ // Kopf-/Fusszeilen beachten:
+ if( 0 != ( pItem = rWW8Wrt.HasItem( RES_HEADER )) &&
+ ((SwFmtHeader*)pItem)->IsActive() )
+ {
+ // dann aufjedenfall schon mal den Abstand der Kopfzeile zum
+ // SeitenAnfang ausgeben
+ // sprmSDyaHdrTop
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0xB017 );
+ else
+ rWW8Wrt.pO->Insert( 156, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( nUDist );
+ nUDist += ::lcl_CalcHdFtDist( *((SwFmtHeader*)pItem)->
+ GetHeaderFmt(), TRUE );
+ }
+ // sprmSDyaTop
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x9023 );
+ else
+ rWW8Wrt.pO->Insert( 168, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( nUDist );
+
+
+ if( 0 != ( pItem = rWW8Wrt.HasItem( RES_FOOTER )) &&
+ ((SwFmtFooter*)pItem)->IsActive() )
+ {
+ // dann aufjedenfall schon mal den Abstand der Fusszeile zum
+ // SeitenEnde ausgeben
+ // sprmSDyaHdrBottom
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0xB018 );
+ else
+ rWW8Wrt.pO->Insert( 157, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( nLDist );
+ nLDist += ::lcl_CalcHdFtDist( *((SwFmtFooter*)pItem)->
+ GetFooterFmt(), FALSE );
+ }
+ // sprmSDyaBottom
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x9024 );
+ else
+ rWW8Wrt.pO->Insert( 169, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( nLDist );
+ }
+ else
+ {
+ // sprmPDyaBefore
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0xA413 );
+ else
+ rWW8Wrt.pO->Insert( 21, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( rUL.GetUpper() );
+ // sprmPDyaAfter
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0xA414 );
+ else
+ rWW8Wrt.pO->Insert( 22, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( rUL.GetLower() );
+ }
+ return rWrt;
+}
+
+// Print, Opaque, Protect fehlen noch
+
+static Writer& OutWW8_SwFmtSurround( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ if( rWW8Wrt.bOutFlyFrmAttrs )
+ {
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x2423 );
+ else
+ rWW8Wrt.pO->Insert( 37, rWW8Wrt.pO->Count() );
+
+ rWW8Wrt.pO->Insert( (SURROUND_NONE !=
+ ((const SwFmtSurround&) rHt).GetSurround() )
+ ? 2 : 1, rWW8Wrt.pO->Count() );
+ }
+ return rWrt;
+}
+
+Writer& OutWW8_SwFmtVertOrient( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwFmtVertOrient& rFlyVert = (const SwFmtVertOrient&) rHt;
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+
+//!!!! Ankertyp und entsprechende Umrechnung fehlt noch
+
+ if( rWW8Wrt.bOutFlyFrmAttrs )
+ {
+ const SwFmtVertOrient& rFlyVert = (const SwFmtVertOrient&) rHt;
+
+ short nPos;
+ switch( rFlyVert.GetVertOrient() )
+ {
+ case VERT_NONE: nPos = (short)rFlyVert.GetPos(); break;
+ case VERT_CENTER:
+ case VERT_LINE_CENTER: nPos = -8; break;
+ case VERT_BOTTOM:
+ case VERT_LINE_BOTTOM: nPos = -12; break;
+ case VERT_TOP:
+ case VERT_LINE_TOP:
+ default: nPos = -4; break;
+ }
+
+ // sprmPDyaAbs
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x8419 );
+ else
+ rWW8Wrt.pO->Insert( 27, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( nPos );
+ }
+ return rWrt;
+}
+
+
+Writer& OutWW8_SwFmtHoriOrient( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ if( !rWW8Wrt.pFlyFmt )
+ {
+ ASSERT( rWW8Wrt.pFlyFmt, "HoriOrient ohne pFlyFmt !!" );
+ return rWrt;
+ }
+
+//!!!! Ankertyp und entsprechende Umrechnung fehlt noch
+ if( rWW8Wrt.bOutFlyFrmAttrs )
+ {
+ const SwFmtHoriOrient& rFlyHori = (const SwFmtHoriOrient&) rHt;
+
+ short nPos;
+ switch( rFlyHori.GetHoriOrient() )
+ {
+ case HORI_NONE: {
+ nPos = (short)rFlyHori.GetPos();
+ if( !nPos )
+ nPos = 1; // WW: 0 ist reserviert
+#if 0
+// ist nicht noetig, da Bindung an Absatz als hor. Bindung an die
+// Spalte exportiert wird, da so das Verhalten bei Mehrspaltigkeit
+// am AEhnlichsten ist.
+ RndStdIds eAn = rWW8Wrt.pFlyFmt->GetAttrSet().
+ GetAnchor().GetAnchorId();
+ if( eAn == FLY_AT_CNTNT || eAn == FLY_IN_CNTNT )
+ nPos += GetPageL( rWW8Wrt );
+#endif
+ }
+ break;
+
+ case HORI_LEFT: nPos = rFlyHori.IsPosToggle() ? -12 : 0;
+ break;
+ case HORI_RIGHT: nPos = rFlyHori.IsPosToggle() ? -16 : -8;
+ break;
+ case HORI_CENTER:
+ case HORI_FULL: // FULL nur fuer Tabellen
+ default: nPos = -4; break;
+ }
+
+ // sprmPDxaAbs
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x8418 );
+ else
+ rWW8Wrt.pO->Insert( 26, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( nPos );
+ }
+ return rWrt;
+}
+
+static Writer& OutWW8_SwFmtAnchor( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ ASSERT( rWW8Wrt.pFlyFmt, "Anker ohne pFlyFmt !!" );
+
+ if( rWW8Wrt.bOutFlyFrmAttrs )
+ {
+ const SwFmtAnchor& rAnchor = (const SwFmtAnchor&) rHt;
+ BYTE nP = 0;
+ switch( rAnchor.GetAnchorId() )
+ {
+ case FLY_PAGE: nP |= ( 1 << 4 ) // Vert: Page
+ | ( 2 << 6 ); // Horz: Page
+ break;
+ // Im Fall eine Flys als Zeichen: Absatz-gebunden setzen!!!
+ case FLY_AT_FLY:
+ case FLY_AUTO_CNTNT:
+ case FLY_AT_CNTNT:
+ case FLY_IN_CNTNT: nP |= ( 2 << 4 ) // Vert: Text
+ | ( 0 << 6 ); // Horz: Column
+ break;
+ }
+
+ // sprmPPc
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x261B );
+ else
+ rWW8Wrt.pO->Insert( 29, rWW8Wrt.pO->Count() );
+ rWW8Wrt.pO->Insert( nP, rWW8Wrt.pO->Count() );
+ }
+ return rWrt;
+}
+
+static Writer& OutWW8_SwFmtBackground( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+
+ if( !rWW8Wrt.bOutPageDescs ) // WW kann keinen Hintergrund
+ { // in Section
+ const SvxBrushItem& rBack = (const SvxBrushItem&)rHt;
+ WW8_SHD aSHD;
+
+ if( rWW8Wrt.TransBrush( rBack.GetColor(), aSHD ) )
+ {
+ // sprmPShd
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x442D );
+ else
+ rWW8Wrt.pO->Insert( 47, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( aSHD.GetValue() );
+ }
+ }
+ return rWrt;
+}
+
+
+// TranslateBorderLine() liefert eine UINT32 zurueck, der noch in einen
+// SVBT32 uebersetzt werden muss.
+// bei Export als WW6 sind nur die unteren 16 Bit von Interesse
+// bShadow darf bei Tabellenzellen *nicht* gesetzt sein !
+UINT32 SwWW8Writer::TranslateBorderLine( const SvxBorderLine& rLine,
+ USHORT nDist, BOOL bShadow )
+{
+ UINT32 nBrd = 0;
+ UINT16 nWidth = rLine.GetInWidth() + rLine.GetOutWidth(), brcType = 0;
+ UINT32 nColCode = 0;
+ if( nWidth ) // Linie ?
+ {
+ // BRC.brcType
+ BOOL bDouble = 0 != rLine.GetInWidth() && 0 != rLine.GetOutWidth();
+ BOOL bThick = !bDouble && !bWrtWW8 && nWidth > 75;
+ if( bDouble )
+ brcType = 3;
+ else if( bThick )
+ brcType = 2;
+ else
+ brcType = 1;
+
+ // BRC.dxpLineWidth
+ if( bThick )
+ nWidth /= 2;
+
+ if( bWrtWW8 )
+ {
+ // Angabe in 8tel Punkten, also durch 2.5, da 1 Punkt = 20 Twips
+ nWidth = (( nWidth * 8 ) + 10 ) / 20;
+ if( 0xff < nWidth )
+ nWidth = 0xff;
+ }
+ else
+ {
+ // Angabe in 0.75 pt
+ nWidth = ( nWidth + 7 ) / 15;
+ if( nWidth > 5 )
+ nWidth = 5;
+ }
+
+ if( 0 == nWidth ) // ganz duenne Linie
+ nWidth = 1; // nicht weglassen
+
+ // BRC.ico
+ nColCode = TransCol( rLine.GetColor() );
+ }
+
+ // BRC.dxpSpace
+ long nLDist = nDist;
+ nLDist /= 20; // Masseinheit : pt
+ if( nLDist > 0x1f )
+ nLDist = 0x1f;
+
+ if( bWrtWW8 )
+ {
+ nBrd = nWidth + ( brcType << 8 );
+ nBrd |= nColCode << 16;
+ nBrd |= nLDist << 24;
+
+ // fShadow, keine weiteren Einstellungen im WW moeglich
+ if( bShadow )
+ nBrd |= (0x2000L << 16);
+ }
+ else
+ {
+ nBrd = nWidth + ( brcType << 3 );
+ nBrd |= (nColCode & 0x1f) << 6;
+ nBrd |= nLDist << 11;
+ // fShadow, keine weiteren Einstellungen im WW moeglich
+ if( bShadow )
+ nBrd |= 0x20;
+ }
+
+ return nBrd;
+}
+
+// MakeBorderLine() bekommt einen WW8Bytes* uebergeben, um die Funktion
+// auch fuer die Tabellen-Umrandungen zu benutzen.
+// Wenn nSprmNo == 0, dann wird der Opcode nicht ausgegeben.
+// bShadow darf bei Tabellenzellen *nicht* gesetzt sein !
+void SwWW8Writer::Out_BorderLine( WW8Bytes& rO, const SvxBorderLine* pLine,
+ USHORT nDist, USHORT nOffset,
+ BOOL bShadow )
+{
+ ASSERT( (0 <= nOffset && nOffset <= 3) || USHRT_MAX == nOffset ||
+ ((0x702b - 0x6424) <= nOffset && nOffset <= (0x702e - 0x6424)),
+ "SprmOffset ausserhalb des Bereichs" );
+
+
+ UINT32 nBrdCd = pLine ? TranslateBorderLine( *pLine, nDist, bShadow )
+ : 0;
+ if( bWrtWW8 )
+ {
+// WW97-SprmIds
+// 0x6424, sprmPBrcTop pap.brcTop;BRC;long; !!!!
+// 0x6425, sprmPBrcLeft
+// 0x6426, sprmPBrcBottom
+// 0x6427, sprmPBrcRight
+ if( USHRT_MAX != nOffset ) // mit OpCode-Ausgabe ?
+ SwWW8Writer::InsUInt16( rO, 0x6424 + nOffset );
+
+ SwWW8Writer::InsUInt32( rO, nBrdCd );
+ }
+ else
+ {
+// WW95-SprmIds
+// 38, sprmPBrcTop - pap.brcTop BRC short !!!
+// 39, sprmPBrcLeft
+// 40, sprmPBrcBottom
+// 41, sprmPBrcRight
+ if( USHRT_MAX != nOffset ) // mit OpCode-Ausgabe ?
+ rO.Insert( (BYTE)( 38 + nOffset ), rO.Count() );
+ SwWW8Writer::InsUInt16( rO, (UINT16)nBrdCd );
+ }
+}
+
+// OutWW8_SwFmtBox1() ist fuer alle Boxen ausser in Tabellen.
+// es wird pO des WW8Writers genommen
+void SwWW8Writer::Out_SwFmtBox( const SvxBoxItem& rBox, BOOL bShadow )
+{
+ USHORT nOffset = 0;
+ if( bOutPageDescs )
+ {
+ if( !bWrtWW8 )
+ return ; // WW95 kennt keine Seitenumrandung
+
+// WW97-SprmIds
+// 0x702b, sprmSBrcTop pap.brcTop;BRC;long; !!!!
+// 0x702c, sprmSBrcLeft
+// 0x702d, sprmSBrcBottom
+// 0x702e, sprmSBrcRight
+ nOffset = (0x702b - 0x6424);
+ }
+
+ static USHORT __READONLY_DATA aBorders[] = {
+ BOX_LINE_TOP, BOX_LINE_LEFT, BOX_LINE_BOTTOM, BOX_LINE_RIGHT };
+ const USHORT* pBrd = aBorders;
+ for( int i = 0; i < 4; ++i, ++pBrd )
+ {
+ const SvxBorderLine* pLn = rBox.GetLine( *pBrd );
+ Out_BorderLine( *pO, pLn, rBox.GetDistance( *pBrd ), nOffset+i,
+ bShadow );
+ }
+}
+
+// OutWW8_SwFmtBox2() ist fuer TC-Strukturen in Tabellen. Der Sprm-Opcode
+// wird nicht geschrieben, da es in der TC-Structur ohne Opcode gepackt ist.
+// dxpSpace wird immer 0, da WW das in Tabellen so verlangt
+// ( Tabellenumrandungen fransen sonst aus )
+// Ein WW8Bytes-Ptr wird als Ausgabe-Parameter uebergeben
+
+void SwWW8Writer::Out_SwFmtTableBox( WW8Bytes& rO, const SvxBoxItem& rBox )
+{
+ // moeglich und vielleicht besser waere 0xffff
+ static USHORT __READONLY_DATA aBorders[] = {
+ BOX_LINE_TOP, BOX_LINE_LEFT, BOX_LINE_BOTTOM, BOX_LINE_RIGHT };
+ const USHORT* pBrd = aBorders;
+ for( int i = 0; i < 4; ++i, ++pBrd )
+ {
+ const SvxBorderLine* pLn = rBox.GetLine( *pBrd );
+ Out_BorderLine( rO, pLn, 0, USHRT_MAX, FALSE );
+ }
+}
+
+static Writer& OutWW8_SwFmtBox( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ // Fly um Grafik-> keine Umrandung hier, da
+ // der GrafikHeader bereits die Umrandung hat
+ SwWW8Writer& rWW8Wrt = ((SwWW8Writer&)rWrt);
+ if( !rWW8Wrt.bOutGrf )
+ {
+ BOOL bShadow = FALSE;
+ const SfxPoolItem* pItem = ((SwWW8Writer&)rWrt).HasItem( RES_SHADOW );
+ if( pItem )
+ {
+ const SvxShadowItem* p = (const SvxShadowItem*)pItem;
+ bShadow = ( p->GetLocation() != SVX_SHADOW_NONE )
+ && ( p->GetWidth() != 0 );
+ }
+
+ rWW8Wrt.Out_SwFmtBox( (SvxBoxItem&)rHt, bShadow );
+ }
+ return rWrt;
+}
+
+
+static Writer& OutWW8_SwFmtCol( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ const SwFmtCol& rCol = (const SwFmtCol&)rHt;
+ const SwColumns& rColumns = rCol.GetColumns();
+ SwWW8Writer& rWW8Wrt = ((SwWW8Writer&)rWrt);
+
+ USHORT nCols = rColumns.Count();
+ if( 1 < nCols
+ && !rWW8Wrt.bOutFlyFrmAttrs ) // mehrspaltige Rahmen kann WW nicht
+ {
+ // dann besorge mal die Seitenbreite ohne Raender !!
+ SwTwips nPageSize;
+ const SwFrmFmt* pFmt = rWW8Wrt.pAktPageDesc
+ ? &rWW8Wrt.pAktPageDesc->GetMaster()
+ : &rWW8Wrt.pDoc->GetPageDesc(0).GetMaster();
+
+ SwRect aRect( pFmt->FindLayoutRect( TRUE ));
+ if( 0 == ( nPageSize = aRect.Width() ))
+ {
+ const SvxLRSpaceItem& rLR = pFmt->GetLRSpace();
+ nPageSize = pFmt->GetFrmSize().GetWidth() -
+ rLR.GetLeft() - rLR.GetRight();
+ }
+
+ // CColumns
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x500b );
+ else
+ rWW8Wrt.pO->Insert( 144, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( nCols - 1 );
+
+ // DxaColumns
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x900c );
+ else
+ rWW8Wrt.pO->Insert( 145, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( rCol.GetGutterWidth( TRUE ) );
+
+ // LBetween
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x3019 );
+ else
+ rWW8Wrt.pO->Insert( 158, rWW8Wrt.pO->Count() );
+ rWW8Wrt.pO->Insert( COLADJ_NONE == rCol.GetLineAdj() ? 0 : 1,
+ rWW8Wrt.pO->Count() );
+
+ // Nachsehen, ob alle Spalten gleich sind
+ BOOL bEven = TRUE;
+ USHORT n;
+ USHORT nColWidth = rCol.CalcPrtColWidth( 0, (USHORT)nPageSize );
+ for( n = 1; n < nCols; n++ )
+ {
+ short nDiff = nColWidth - rCol.CalcPrtColWidth( n, (USHORT)nPageSize );
+ if( nDiff > 10 || nDiff < -10 ) // Toleranz: 10 tw
+ {
+ bEven = FALSE;
+ break;
+ }
+ }
+ if( bEven )
+ {
+ USHORT nSpace = rColumns[0]->GetRight() + rColumns[1]->GetLeft();
+ for( n = 2; n < nCols; n++ )
+ {
+ short nDiff = nSpace - ( rColumns[n - 1]->GetRight()
+ + rColumns[n]->GetLeft() );
+ if( nDiff > 10 || nDiff < -10 )
+ { // Toleranz: 10 tw
+ bEven = FALSE;
+ break;
+ }
+ }
+ }
+
+ // FEvenlySpaced
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0x3005 );
+ else
+ rWW8Wrt.pO->Insert( 138, rWW8Wrt.pO->Count() );
+ rWW8Wrt.pO->Insert( bEven ? 1 : 0, rWW8Wrt.pO->Count() );
+
+ if( !bEven )
+ {
+ for( USHORT n = 0; n < nCols; ++n )
+ {
+ //sprmSDxaColWidth
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0xF203 );
+ else
+ rWW8Wrt.pO->Insert( 136, rWW8Wrt.pO->Count() );
+ rWW8Wrt.pO->Insert( n, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( rCol.CalcPrtColWidth( n, (USHORT)nPageSize ) );
+
+ if( n+1 != nCols )
+ {
+ //sprmSDxaColSpacing
+ if( rWW8Wrt.bWrtWW8 )
+ rWW8Wrt.InsUInt16( 0xF204 );
+ else
+ rWW8Wrt.pO->Insert( 137, rWW8Wrt.pO->Count() );
+ rWW8Wrt.pO->Insert( n, rWW8Wrt.pO->Count() );
+ rWW8Wrt.InsUInt16( rColumns[ n ]->GetRight() +
+ rColumns[ n + 1 ]->GetLeft() );
+ }
+ }
+ }
+ }
+ return rWrt;
+}
+
+// "Absaetze zusammenhalten"
+static Writer& OutWW8_SvxFmtKeep( Writer& rWrt, const SfxPoolItem& rHt )
+{
+// sprmFKeepFollow
+ const SvxFmtKeepItem& rAttr = (const SvxFmtKeepItem&)rHt;
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x2406 );
+ else
+ rWrtWW8.pO->Insert( 8, rWrtWW8.pO->Count() );
+
+ rWrtWW8.pO->Insert( rAttr.GetValue() ? 1 : 0, rWrtWW8.pO->Count() );
+ return rWrt;
+}
+
+
+// exclude a paragraph from Line Numbering
+static Writer& OutWW8_SwFmtLineNumber( Writer& rWrt, const SfxPoolItem& rHt )
+{
+// sprmPFNoLineNumb
+ const SwFmtLineNumber& rAttr = (const SwFmtLineNumber&)rHt;
+
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x240C );
+ else
+ rWrtWW8.pO->Insert( 14, rWrtWW8.pO->Count() );
+
+ rWrtWW8.pO->Insert( rAttr.IsCount() ? 0 : 1, rWrtWW8.pO->Count() );
+
+ return rWrt;
+}
+
+
+/* File PARATR.HXX */
+
+static Writer& OutWW8_SvxLineSpacing( Writer& rWrt, const SfxPoolItem& rHt )
+{
+// sprmPDyaLine
+ const SvxLineSpacingItem& rAttr = (const SvxLineSpacingItem&)rHt;
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x6412 );
+ else
+ rWrtWW8.pO->Insert( 20, rWrtWW8.pO->Count() );
+
+ short nSpace = 240, nMulti = 0;
+
+ switch( rAttr.GetLineSpaceRule() )
+ {
+ case SVX_LINE_SPACE_AUTO:
+ case SVX_LINE_SPACE_FIX:
+ case SVX_LINE_SPACE_MIN:
+ {
+ switch( rAttr.GetInterLineSpaceRule() )
+ {
+ case SVX_INTER_LINE_SPACE_FIX: // unser Durchschuss
+ // gibt es aber nicht in WW - also wie kommt man an
+ // die MaxLineHeight heran?
+ nSpace = (short)rAttr.GetInterLineSpace();
+ break;
+
+ case SVX_INTER_LINE_SPACE_PROP:
+ nSpace = (short)(( 240L * rAttr.GetPropLineSpace() ) / 100L );
+ nMulti = 1;
+ break;
+
+ default: // z.B. Minimum oder FIX?
+ if( SVX_LINE_SPACE_FIX == rAttr.GetLineSpaceRule() )
+ nSpace = -(short)rAttr.GetLineHeight();
+ else
+ nSpace = (short)rAttr.GetLineHeight();
+ break;
+ }
+ }
+ break;
+ }
+
+ rWrtWW8.InsUInt16( nSpace );
+ rWrtWW8.InsUInt16( nMulti );
+ return rWrt;
+}
+
+
+static Writer& OutWW8_SvxAdjust( Writer& rWrt, const SfxPoolItem& rHt )
+{
+// sprmPJc
+ const SvxAdjustItem& rAttr = (const SvxAdjustItem&)rHt;
+ BYTE nAdj = 255;
+ switch( rAttr.GetAdjust() )
+ {
+ case SVX_ADJUST_LEFT: nAdj = 0; break;
+ case SVX_ADJUST_RIGHT: nAdj = 2; break;
+ case SVX_ADJUST_BLOCKLINE:
+ case SVX_ADJUST_BLOCK: nAdj = 3; break;
+ case SVX_ADJUST_CENTER: nAdj = 1; break;
+ default: return rWrt; // kein gueltiges Attribut
+ }
+
+ if( 255 != nAdj ) // gueltiges Attribut?
+ {
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x2403 );
+ else
+ rWrtWW8.pO->Insert( 5, rWrtWW8.pO->Count() );
+ rWrtWW8.pO->Insert( nAdj, rWrtWW8.pO->Count() );
+ }
+ return rWrt;
+}
+
+// "Absaetze trennen"
+static Writer& OutWW8_SvxFmtSplit( Writer& rWrt, const SfxPoolItem& rHt )
+{
+// sprmPFKeep
+ const SvxFmtSplitItem& rAttr = (const SvxFmtSplitItem&)rHt;
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x2405 );
+ else
+ rWrtWW8.pO->Insert( 7, rWrtWW8.pO->Count() );
+ rWrtWW8.pO->Insert( rAttr.GetValue() ? 0 : 1, rWrtWW8.pO->Count() );
+ return rWrt;
+}
+
+// Es wird nur das Item "SvxWidowItem" und nicht die Orphans uebersetzt,
+// da es fuer beides im WW nur ein Attribut "Absatzkontrolle" gibt und
+// im SW wahrscheinlich vom Anwender immer Beide oder keiner gesetzt werden.
+static Writer& OutWW8_SvxWidows( Writer& rWrt, const SfxPoolItem& rHt )
+{
+// sprmPFWidowControl
+ const SvxWidowsItem& rAttr = (const SvxWidowsItem&)rHt;
+ SwWW8Writer& rWrtWW8 = (SwWW8Writer&)rWrt;
+ if( rWrtWW8.bWrtWW8 )
+ rWrtWW8.InsUInt16( 0x2431 );
+ else
+ rWrtWW8.pO->Insert( 51, rWrtWW8.pO->Count() );
+ rWrtWW8.pO->Insert( rAttr.GetValue() ? 1 : 0, rWrtWW8.pO->Count() );
+ return rWrt;
+}
+
+
+class SwWW8WrTabu
+{
+ BYTE* pDel; // DelArray
+ BYTE* pAddPos; // AddPos-Array
+ BYTE* pAddTyp; // AddTyp-Array
+ USHORT nAdd; // so viele Tabs kommen hinzu
+ USHORT nDel; // so viele Tabs fallen weg
+ USHORT nLeftParaMgn; // fuer anderes Wertesystem SW/WW
+public:
+ SwWW8WrTabu( USHORT nDelMax, USHORT nAddMax, USHORT nLeftPara );
+ ~SwWW8WrTabu();
+
+ void Add( const SvxTabStop & rTS );
+ void Del( const SvxTabStop & rTS );
+ void PutAll( SwWW8Writer& rWW8Wrt );
+};
+
+SwWW8WrTabu::SwWW8WrTabu( USHORT nDelMax, USHORT nAddMax, USHORT nLeftPara )
+ : nAdd( 0 ), nDel( 0 ), nLeftParaMgn( nLeftPara )
+{
+ pDel = ( nDelMax ) ? new BYTE[ nDelMax * 2 ] : 0;
+ pAddPos = new BYTE[ nAddMax * 2 ];
+ pAddTyp = new BYTE[ nAddMax ];
+}
+
+SwWW8WrTabu::~SwWW8WrTabu()
+{
+ delete[] pAddTyp;
+ delete[] pAddPos;
+ delete[] pDel;
+}
+
+// Add( const SvxTabStop & rTS ) fuegt einen Tab in die WW-Struktur ein
+void SwWW8WrTabu::Add( const SvxTabStop & rTS )
+{
+ // Tab-Position eintragen
+ ShortToSVBT16( (USHORT)rTS.GetTabPos() + nLeftParaMgn,
+ pAddPos + ( nAdd * 2 ) );
+
+ // Tab-Typ eintragen
+ BYTE nPara = 0;
+ switch( rTS.GetAdjustment() )
+ {
+ case SVX_TAB_ADJUST_RIGHT: nPara = 2; break;
+ case SVX_TAB_ADJUST_CENTER: nPara = 1; break;
+ case SVX_TAB_ADJUST_DECIMAL:
+ nPara = ',' == rTS.GetDecimal() ? 3 : 1;
+ break;
+ }
+
+ switch( rTS.GetFill() )
+ {
+ case '.': nPara |= 1 << 3; break; // dotted leader
+ case '_': nPara |= 3 << 3; break; // Single line leader
+ case '-': nPara |= 2 << 3; break; // hyphenated leader
+ case '=': nPara |= 4 << 3; break; // heavy line leader
+ }
+
+ ByteToSVBT8( nPara, pAddTyp + nAdd );
+ ++nAdd;
+}
+
+// Del( const SvxTabStop & rTS ) fuegt einen zu loeschenden Tab
+// in die WW-Struktur ein
+void SwWW8WrTabu::Del( const SvxTabStop & rTS )
+{
+ // Tab-Position eintragen
+ ShortToSVBT16( (USHORT)rTS.GetTabPos() + nLeftParaMgn,
+ pDel + ( nDel * 2 ) );
+ ++nDel;
+}
+
+// PutAll( SwWW8Writer& rWW8Wrt ) schreibt das Attribut nach rWrt.pO
+void SwWW8WrTabu::PutAll( SwWW8Writer& rWrt )
+{
+ if( nAdd > 255 )
+ {
+ ASSERT( !this, "+ mehr als 255 Tabs dazu ?????" );
+ nAdd = 255;
+ }
+ if( nDel > 255 )
+ {
+ ASSERT( !this, "+ mehr als 255 Tabs weg ?????" );
+ nDel = 255;
+ }
+
+ USHORT nSiz = 2 * nDel + 3 * nAdd + 2;
+ if( nSiz > 255 )
+ nSiz = 255;
+
+ if( rWrt.bWrtWW8 )
+ rWrt.InsUInt16( 0xC60D );
+ else
+ rWrt.pO->Insert( 15, rWrt.pO->Count() );
+ rWrt.pO->Insert( (BYTE)nSiz, rWrt.pO->Count() ); // cch eintragen
+
+ // DelArr schreiben
+ rWrt.pO->Insert( (BYTE)nDel, rWrt.pO->Count() ); // nDel eintragen
+ rWrt.OutSprmBytes( pDel, nDel * 2 );
+ // InsArr schreiben
+ rWrt.pO->Insert( (BYTE)nAdd, rWrt.pO->Count() ); // nAdd schreiben
+ rWrt.OutSprmBytes( pAddPos, 2 * nAdd ); // AddPosArray
+ rWrt.OutSprmBytes( pAddTyp, nAdd ); // AddTypArray
+}
+
+
+static void OutWW8_SwTabStopAdd( Writer& rWrt, const SvxTabStopItem& rTStops,
+ USHORT nLParaMgn )
+{
+ SwWW8WrTabu aTab( 0, rTStops.Count(), nLParaMgn );
+
+ for( USHORT n = 0; n < rTStops.Count(); n++ )
+ {
+ const SvxTabStop& rTS = rTStops[ n ];
+ if( SVX_TAB_ADJUST_DEFAULT != rTS.GetAdjustment() ) // Def-Tabs ignorieren
+ aTab.Add( rTS );
+ }
+ aTab.PutAll( (SwWW8Writer&)rWrt );
+}
+
+static void OutWW8_SwTabStopDelAdd( Writer& rWrt, const SvxTabStopItem& rTOld,
+ const SvxTabStopItem& rTNew, USHORT nLParaMgn )
+{
+ SwWW8WrTabu aTab( rTOld.Count(), rTNew.Count(), nLParaMgn );
+
+ USHORT nO = 0; // rTOld Index
+ USHORT nN = 0; // rTNew Index
+
+ do {
+ const SvxTabStop* pTO;
+ long nOP;
+ if( nO < rTOld.Count() ) // alt noch nicht am Ende ?
+ {
+ pTO = &rTOld[ nO ];
+ nOP = pTO->GetTabPos();
+ if( SVX_TAB_ADJUST_DEFAULT == pTO->GetAdjustment() )
+ {
+ nO++; // Default-Tab ignorieren
+ continue;
+ }
+ }
+ else
+ {
+ pTO = 0;
+ nOP = LONG_MAX;
+ }
+
+ const SvxTabStop* pTN;
+ long nNP;
+ if( nN < rTNew.Count() ) // neu noch nicht am Ende
+ {
+ pTN = &rTNew[ nN ];
+ nNP = pTN->GetTabPos();
+ if( SVX_TAB_ADJUST_DEFAULT == pTN->GetAdjustment() )
+ {
+ nN++; // Default-Tab ignorieren
+ continue;
+ }
+ }
+ else
+ {
+ pTN = 0;
+ nNP = LONG_MAX;
+ }
+
+ if( nOP == LONG_MAX && nNP == LONG_MAX )
+ break; // alles fertig
+
+ if( nOP < nNP ) // naechster Tab ist alt
+ {
+ aTab.Del( *pTO ); // muss geloescht werden
+ nO++;
+ }
+ else if( nNP < nOP ) // naechster Tab ist neu
+ {
+ aTab.Add( *pTN ); // muss eigefuegt werden
+ nN++;
+ }
+ else if ( pTO->IsEqual( *pTN ) ) // Tabs sind gleich
+ {
+ nO++; // nichts zu tun
+ nN++;
+ }
+ else // Tabs selbe Pos, diff Typ
+ {
+ aTab.Del( *pTO ); // alten loeschen
+ aTab.Add( *pTN ); // neuen einfuegen
+ nO++;
+ nN++;
+ }
+ } while( 1 );
+
+ aTab.PutAll( (SwWW8Writer&)rWrt );
+}
+
+static Writer& OutWW8_SwTabStop( Writer& rWrt, const SfxPoolItem& rHt )
+{
+ SwWW8Writer& rWW8Wrt = (SwWW8Writer&)rWrt;
+ const SvxTabStopItem & rTStops = (const SvxTabStopItem&)rHt;
+ const SfxPoolItem* pLR = rWW8Wrt.HasItem( RES_LR_SPACE );
+ USHORT nOffset = pLR ? ((const SvxLRSpaceItem*)pLR)->GetTxtLeft() : 0;
+
+ const SfxPoolItem* pItem = 0;
+
+ if( rWW8Wrt.bStyDef // StyleDef -> "einfach" eintragen
+ || !rWW8Wrt.pStyAttr // keine Style-Attrs -> dito
+ || ( SFX_ITEM_SET != rWW8Wrt.pStyAttr->GetItemState(
+ RES_PARATR_TABSTOP, TRUE, &pItem ) ) ) // kein Tab-Attr in Styles -> dito
+ {
+ OutWW8_SwTabStopAdd( rWW8Wrt, rTStops, nOffset );
+ }
+ else if ( pItem ) // Harte Attribute: Differenzen zum Style eintragen
+ {
+ OutWW8_SwTabStopDelAdd( rWW8Wrt, *(const SvxTabStopItem*)pItem,
+ rTStops, nOffset );
+ }
+ return rWrt;
+}
+
+//-----------------------------------------------------------------------
+
+/*
+ * lege hier die Tabellen fuer die WW-Funktions-Pointer auf
+ * die Ausgabe-Funktionen an.
+ * Es sind lokale Strukturen, die nur innerhalb
+ * bekannt sein muessen.
+ */
+
+SwAttrFnTab aWW8AttrFnTab = {
+/* RES_CHRATR_CASEMAP */ OutWW8_SwCaseMap,
+/* RES_CHRATR_CHARSETCOLOR */ 0,
+/* RES_CHRATR_COLOR */ OutWW8_SwColor,
+/* RES_CHRATR_CONTOUR */ OutWW8_SwContour,
+/* RES_CHRATR_CROSSEDOUT */ OutWW8_SwCrossedOut,
+/* RES_CHRATR_ESCAPEMENT */ OutWW8_SwEscapement,
+/* RES_CHRATR_FONT */ OutWW8_SwFont,
+/* RES_CHRATR_FONTSIZE */ OutWW8_SwSize,
+/* RES_CHRATR_KERNING */ OutWW8_SwKerning,
+/* RES_CHRATR_LANGUAGE */ OutWW8_SwLanguage,
+/* RES_CHRATR_POSTURE */ OutWW8_SwPosture,
+/* RES_CHRATR_PROPORTIONALFONTSIZE*/0,
+/* RES_CHRATR_SHADOWED */ OutWW8_SwShadow,
+/* RES_CHRATR_UNDERLINE */ OutWW8_SwUnderline,
+/* RES_CHRATR_WEIGHT */ OutWW8_SwWeight,
+/* RES_CHRATR_WORDLINEMODE */ 0, // Wird bei Underline mitbehandelt
+/* RES_CHRATR_AUTOKERN */ OutWW8_SvxAutoKern,
+/* RES_CHRATR_BLINK */ 0, // neu: blinkender Text
+/* RES_CHRATR_NOHYPHEN */ 0, // Neu: nicht trennen
+/* RES_CHRATR_NOLINEBREAK */ 0, // Neu: nicht umbrechen
+/* RES_CHRATR_BACKGROUND */ OutWW8_SwFmtCharBackground,
+/* RES_CHRATR_CJK_FONT */ 0,
+/* RES_CHRATR_CJK_FONTSIZE */ 0,
+/* RES_CHRATR_CJK_LANGUAGE */ 0,
+/* RES_CHRATR_CJK_POSTURE */ 0,
+/* RES_CHRATR_CJK_WEIGHT */ 0,
+/* RES_CHRATR_CTL_FONT */ 0,
+/* RES_CHRATR_CTL_FONTSIZE */ 0,
+/* RES_CHRATR_CTL_LANGUAGE */ 0,
+/* RES_CHRATR_CTL_POSTURE */ 0,
+/* RES_CHRATR_CTL_WEIGHT */ 0,
+/* RES_CHRATR_WRITING_DIRECTION */ 0,
+/* RES_CHRATR_DUMMY2 */ 0,
+/* RES_CHRATR_DUMMY3 */ 0,
+/* RES_CHRATR_DUMMY4 */ 0,
+/* RES_CHRATR_DUMMY5 */ 0,
+/* RES_CHRATR_DUMMY1 */ 0, // Dummy:
+
+/* RES_TXTATR_INETFMT */ OutSwFmtINetFmt,
+/* RES_TXTATR_DUMMY */ 0,
+/* RES_TXTATR_REFMARK */ 0, // handel by SwAttrIter
+/* RES_TXTATR_TOXMARK */ 0, // handel by SwAttrIter
+/* RES_TXTATR_CHARFMT */ OutWW8_SwTxtCharFmt,
+/* RES_TXTATR_TWO_LINES */ 0,
+/* RES_TXTATR_CJK_RUBY */ 0,
+/* RES_TXTATR_UNKNOWN_CONTAINER */ 0,
+/* RES_TXTATR_DUMMY5 */ 0,
+/* RES_TXTATR_DUMMY6 */ 0,
+
+/* RES_TXTATR_FIELD */ OutWW8_SwField,
+/* RES_TXTATR_FLYCNT */ OutWW8_SwFlyCntnt,
+/* RES_TXTATR_FTN */ OutWW8_SwFtn,
+/* RES_TXTATR_SOFTHYPH */ 0, // old attr. - coded now by character
+/* RES_TXTATR_HARDBLANK */ OutWW8_SwHardBlank,
+/* RES_TXTATR_DUMMY1 */ 0, // Dummy:
+/* RES_TXTATR_DUMMY2 */ 0, // Dummy:
+
+/* RES_PARATR_LINESPACING */ OutWW8_SvxLineSpacing,
+/* RES_PARATR_ADJUST */ OutWW8_SvxAdjust,
+/* RES_PARATR_SPLIT */ OutWW8_SvxFmtSplit,
+/* RES_PARATR_ORPHANS */ 0, // OutW4W_SwOrphans, // kann WW nicht unabhaengig von Widows
+/* RES_PARATR_WIDOWS */ OutWW8_SvxWidows,
+/* RES_PARATR_TABSTOP */ OutWW8_SwTabStop,
+/* RES_PARATR_HYPHENZONE*/ OutWW8_SvxHyphenZone,
+/* RES_PARATR_DROP */ 0,
+/* RES_PARATR_REGISTER */ 0, // neu: Registerhaltigkeit
+/* RES_PARATR_NUMRULE */ OutWW8_SwNumRuleItem,
+/* RES_PARATR_DUMMY2 */ 0, // Dummy:
+
+/* RES_FILL_ORDER */ 0, // OutW4W_SwFillOrder,
+/* RES_FRM_SIZE */ OutWW8_SwFrmSize,
+/* RES_PAPER_BIN */ OutWW8_SvxPaperBin,
+/* RES_LR_SPACE */ OutWW8_SwFmtLRSpace,
+/* RES_UL_SPACE */ OutWW8_SwFmtULSpace,
+/* RES_PAGEDESC */ 0, // wird bei OutBreaks beachtet
+/* RES_BREAK */ OutWW8_SwFmtBreak,
+/* RES_CNTNT */ 0, /* 0, // OutW4W_??? */
+/* RES_HEADER */ 0, // wird bei der PageDesc ausgabe beachtet
+/* RES_FOOTER */ 0, // wird bei der PageDesc ausgabe beachtet
+/* RES_PRINT */ 0, // OutW4W_SwFmtPrint,
+/* RES_OPAQUE */ 0, // OutW4W_SwFmtOpaque, // kann WW nicht
+/* RES_PROTECT */ 0, // OutW4W_SwFmtProtect,
+/* RES_SURROUND */ OutWW8_SwFmtSurround,
+/* RES_VERT_ORIENT */ OutWW8_SwFmtVertOrient,
+/* RES_HORI_ORIENT */ OutWW8_SwFmtHoriOrient,
+/* RES_ANCHOR */ OutWW8_SwFmtAnchor,
+/* RES_BACKGROUND */ OutWW8_SwFmtBackground,
+/* RES_BOX */ OutWW8_SwFmtBox,
+/* RES_SHADOW */ 0, // Wird bei SwFmtBox mitbehandelt
+/* RES_FRMMACRO */ 0, /* 0, // OutW4W_??? */
+/* RES_COL */ OutWW8_SwFmtCol,
+/* RES_KEEP */ OutWW8_SvxFmtKeep,
+/* RES_URL */ 0, // URL
+/* RES_EDIT_IN_READONLY */ 0,
+/* RES_LAYOUT_SPLIT */ 0,
+/* RES_CHAIN */ 0,
+/* RES_FRMATR_DUMMY2 */ 0, // Dummy:
+/* RES_LINENUMBER */ OutWW8_SwFmtLineNumber, // Line Numbering
+/* RES_FRMATR_DUMMY4 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY5 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY6 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY7 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY8 */ 0, // Dummy:
+/* RES_FRMATR_DUMMY9 */ 0, // Dummy:
+
+
+/* RES_GRFATR_MIRRORGRF */ 0, // OutW4W_SwMirrorGrf,
+/* RES_GRFATR_CROPGRF */ 0, // OutW4W_SwCropGrf
+/* RES_GRFATR_ROTATION */ 0,
+/* RES_GRFATR_LUMINANCE */ 0,
+/* RES_GRFATR_CONTRAST */ 0,
+/* RES_GRFATR_CHANNELR */ 0,
+/* RES_GRFATR_CHANNELG */ 0,
+/* RES_GRFATR_CHANNELB */ 0,
+/* RES_GRFATR_GAMMA */ 0,
+/* RES_GRFATR_INVERT */ 0,
+/* RES_GRFATR_TRANSPARENCY */ 0,
+/* RES_GRFATR_DRWAMODE */ 0,
+/* RES_GRFATR_DUMMY1 */ 0,
+/* RES_GRFATR_DUMMY2 */ 0,
+/* RES_GRFATR_DUMMY3 */ 0,
+/* RES_GRFATR_DUMMY4 */ 0,
+/* RES_GRFATR_DUMMY5 */ 0,
+
+/* RES_BOXATR_FORMAT */ 0,
+/* RES_BOXATR_FORMULA */ 0,
+/* RES_BOXATR_VALUE */ 0,
+
+/* RES_UNKNOWNATR_CONTAINER */ 0
+};
+
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.51 2000/09/18 16:04:58 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.50 2000/08/21 10:14:14 khz
+ Export Line Numbering (restart on new section)
+
+ Revision 1.49 2000/08/04 10:56:44 jp
+ Soft-/HardHyphens & HardBlanks changed from attribute to unicode character
+
+ Revision 1.48 2000/07/31 19:24:54 jp
+ new attributes for CJK/CTL and graphic
+
+ Revision 1.47 2000/07/25 14:46:38 khz
+ #76811# save AutoHyphenation flag in Document Properties
+
+ Revision 1.46 2000/07/06 11:05:03 khz
+ Export *result* of field nonexisting in WW as either Unicode or 8bit text
+
+ Revision 1.45 2000/06/19 09:30:59 khz
+ Export the new WW2000 _underlining_ features
+
+ Revision 1.44 2000/06/09 16:30:26 jp
+ Write correct edit-/create-/print-/change - datetime fields
+
+ Revision 1.43 2000/05/12 16:14:18 jp
+ Changes for Unicode
+
+ Revision 1.42 2000/04/18 12:58:03 khz
+ Task #75183# to set char language use sprmCRgLid0 rather than sprmCLid
+
+ Revision 1.41 2000/03/03 15:20:01 os
+ StarView remainders removed
+
+ Revision 1.40 2000/02/21 13:05:36 jp
+ #70473# changes for unicode
+
+ Revision 1.39 2000/02/11 14:40:03 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.38 1999/12/20 17:41:37 jp
+ Bug #70749#: Date/Time-Numberformats in german format from the formatter
+
+ Revision 1.37 1999/12/15 17:06:22 jp
+ Bug #70913#: write Ftn-/EndNoteInfo - at end of section or page/doc
+
+ Revision 1.36 1999/12/08 13:53:01 jp
+ Task #70258#: textattr for XMLAttrContainer
+
+ Revision 1.35 1999/11/29 09:09:49 jp
+ InsertSpecialChar: ask for ChpIter
+
+ Revision 1.34 1999/11/25 21:22:33 jp
+ Bug #70131#: OutFields: append the charattributes of the node to the sprms
+
+ Revision 1.33 1999/11/24 13:14:25 jp
+ remove GetTimePara/GetDatePara, ReplaceCr: insert char at row end
+
+ Revision 1.32 1999/11/22 18:26:04 jp
+ export of TOX and TOX entries
+
+ Revision 1.31 1999/11/12 16:07:12 jp
+ write foot-/endnote attributes with correct charfmts
+
+ Revision 1.30 1999/11/12 13:23:25 jp
+ Escapement: write AUTO-Escapment correct
+
+ Revision 1.29 1999/11/10 16:09:54 jp
+ Bug #67922#: write header/footer for w95
+
+ Revision 1.28 1999/10/29 17:45:57 jp
+ export of 'complex'(vert. merged) tables
+
+ Revision 1.26 1999/10/14 21:06:13 jp
+ Bug #68617#,#68705# and other little things
+
+*************************************************************************/
+
+
+
+
diff --git a/sw/source/filter/ww8/ww8glsy.cxx b/sw/source/filter/ww8/ww8glsy.cxx
new file mode 100644
index 000000000000..a58737628e5e
--- /dev/null
+++ b/sw/source/filter/ww8/ww8glsy.cxx
@@ -0,0 +1,426 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8glsy.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _RTL_TENCINFO_H
+#include <rtl/tencinfo.h>
+#endif
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_STRINGS
+#include <svtools/svstdarr.hxx>
+#endif
+
+#ifndef _SWSWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _WW8GLSY_HXX
+#include <ww8glsy.hxx>
+#endif
+#ifndef _WW8PAR_HXX
+#include <ww8par.hxx>
+#endif
+#ifndef _NDTXT
+#include <ndtxt.hxx>
+#endif
+#include <pam.hxx>
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen wg. SwFmtAnchor
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen wg. SwFrmFmt
+#include <frmfmt.hxx>
+#endif
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+#ifndef _DOCARY_HXX //autogen wg. SwDoc
+#include <docary.hxx>
+#endif
+
+
+WW8Glossary::WW8Glossary(SvStorageStreamRef &refStrm,BYTE nVersion,
+ SvStorage *pStg) : rStrm(refStrm), xStg(pStg), nStrings( 0 )
+{
+ refStrm->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ WW8Fib aWwFib( *refStrm, nVersion );
+
+ String sTblNm( WW8_ASCII2STR( "1Table" ));
+ if( 1 != aWwFib.fWhichTblStm )
+ sTblNm.SetChar( 0, '0' );
+
+ xTableStream = pStg->OpenStream( sTblNm, STREAM_STD_READ );
+ xTableStream->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ pGlossary = new WW8GlossaryFib( *refStrm, nVersion,*xTableStream, aWwFib );
+}
+
+BOOL WW8Glossary::HasBareGraphicEnd(SwDoc *pDoc,SwNodeIndex &rIdx)
+{
+ BOOL bRet=FALSE;
+ for( USHORT nCnt = pDoc->GetSpzFrmFmts()->Count(); nCnt; )
+ {
+ SwFrmFmt* pFrmFmt = (*pDoc->GetSpzFrmFmts())[ --nCnt ];
+ if ( RES_FLYFRMFMT != pFrmFmt->Which() &&
+ RES_DRAWFRMFMT != pFrmFmt->Which() )
+ continue;
+ const SwFmtAnchor& rAnchor = pFrmFmt->GetAnchor();
+ const SwPosition* pAPos;
+ if( ( FLY_AT_CNTNT == rAnchor.GetAnchorId() ||
+ FLY_AUTO_CNTNT == rAnchor.GetAnchorId() ) &&
+ 0 != ( pAPos = rAnchor.GetCntntAnchor()) &&
+ rIdx == pAPos->nNode.GetIndex() )
+ {
+ bRet=TRUE;
+ break;
+ }
+ }
+ return bRet;
+}
+
+BOOL WW8Glossary::MakeEntries( SwDoc *pD, SwTextBlocks &rBlocks,
+ BOOL bSaveRelFile, SvStrings& rStrings,
+ SvStrings& rExtra )
+{
+ // this code will be called after reading all text into the
+ // empty sections
+ const String aOldURL( INetURLObject::GetBaseURL() );
+ BOOL bRet=FALSE;
+ if( bSaveRelFile )
+ {
+ INetURLObject::SetBaseURL(
+ URIHelper::SmartRelToAbs( rBlocks.GetFileName()));
+ }
+ else
+ INetURLObject::SetBaseURL( aEmptyStr );
+
+ SwNodeIndex aDocEnd( pD->GetNodes().GetEndOfContent() );
+ SwNodeIndex aStart( *aDocEnd.GetNode().StartOfSectionNode(), 1 );
+
+ // search the first NormalStartNode
+ while( !( aStart.GetNode().IsStartNode() && SwNormalStartNode ==
+ aStart.GetNode().GetStartNode()->GetStartNodeType()) &&
+ aStart < aDocEnd )
+ aStart++;
+
+ if( aStart < aDocEnd )
+ {
+ SwTxtFmtColl* pColl = pD->GetTxtCollFromPool(
+ RES_POOLCOLL_STANDARD );
+ USHORT nGlosEntry = 0;
+ SwCntntNode* pCNd = 0;
+ do {
+ SwPaM aPam( aStart );
+ {
+ SwNodeIndex& rIdx = aPam.GetPoint()->nNode;
+ rIdx++;
+ if( 0 == ( pCNd = rIdx.GetNode().GetTxtNode() ) )
+ {
+ if( rIdx.GetNode().IsTableNode() )
+ pCNd = pD->GetNodes().GoNext( &rIdx );
+ else
+ {
+ pCNd = pD->GetNodes().MakeTxtNode( rIdx, pColl );
+ rIdx = *pCNd;
+ }
+ }
+ }
+ aPam.GetPoint()->nContent.Assign( pCNd, 0 );
+ aPam.SetMark();
+ {
+ SwNodeIndex& rIdx = aPam.GetPoint()->nNode;
+ rIdx = aStart.GetNode().EndOfSectionIndex() - 1;
+ if(( 0 == ( pCNd = rIdx.GetNode().GetCntntNode() ) )
+ || HasBareGraphicEnd(pD,rIdx))
+ {
+ rIdx++;
+ pCNd = pD->GetNodes().MakeTxtNode( rIdx, pColl );
+ rIdx = *pCNd;
+ }
+ }
+ aPam.GetPoint()->nContent.Assign( pCNd, pCNd->Len() );
+
+ // now we have the right selection for one entry.
+ // Copy this to the definied TextBlock, but only if
+ // it is not an autocorrection entry (== -1)
+ // otherwise the group indicates the group in
+ // the sttbfglsystyle list that this entry belongs
+ // to. Unused at the moment
+ INT16 group = rExtra[nGlosEntry]->ToInt32() + 2;
+ if (group != -1)
+ {
+ rBlocks.ClearDoc();
+ String sLNm( *rStrings[nGlosEntry] );
+ if( rBlocks.BeginPutDoc( rBlocks.GetValidShortCut(sLNm,TRUE), sLNm ))
+ {
+ SwDoc* pGlDoc = rBlocks.GetDoc();
+ SwNodeIndex aIdx( pGlDoc->GetNodes().GetEndOfContent(),
+ -1 );
+ pCNd = aIdx.GetNode().GetCntntNode();
+ SwPosition aPos( aIdx, SwIndex( pCNd, pCNd->Len() ));
+ pD->Copy( aPam, aPos );
+ rBlocks.PutDoc();
+ }
+ }
+ aStart = aStart.GetNode().EndOfSectionIndex() + 1;
+ ++nGlosEntry;
+ } while( aStart.GetNode().IsStartNode() &&
+ SwNormalStartNode == aStart.GetNode().
+ GetStartNode()->GetStartNodeType());
+ bRet=TRUE;
+ }
+
+// this code will be called after reading all text into the empty sections
+
+ INetURLObject::SetBaseURL( aOldURL );
+ return bRet;
+}
+
+
+BOOL WW8Glossary::Load( SwTextBlocks &rBlocks, BOOL bSaveRelFile )
+{
+ BOOL bRet = FALSE;
+ if( pGlossary->IsGlossaryFib() && rBlocks.StartPutMuchBlockEntries() )
+ {
+ //read the names of the autotext entries
+ SvStrings aStrings( 0, 64 ), aExtra( 0, 64 );
+
+ rtl_TextEncoding eStructCharSet = 0x0100 == pGlossary->chseTables
+ ? RTL_TEXTENCODING_APPLE_ROMAN
+ : rtl_getTextEncodingFromWindowsCharset(
+ pGlossary->chseTables );
+
+ WW8ReadSTTBF( TRUE, *xTableStream,
+ pGlossary->fcSttbfglsy, pGlossary->lcbSttbfglsy, 0,
+ eStructCharSet, aStrings, &aExtra );
+ rStrm->Seek(0);
+
+ // SwDoc *pD = new SwDoc;
+ // pD->SetDocShell(new SwDocShell(SFX_CREATE_MODE_INTERNAL));
+ SfxObjectShellRef xDocSh( new SwDocShell( SFX_CREATE_MODE_INTERNAL));
+ if( xDocSh->DoInitNew( 0 ) )
+ {
+ SwDoc *pD = ((SwDocShell*)(&xDocSh))->GetDoc();
+ SwWW8ImplReader* pRdr = new
+ SwWW8ImplReader( pGlossary->nVersion , xStg, &rStrm, *pD, TRUE );
+
+ SwNodeIndex
+ aIdx( *pD->GetNodes().GetEndOfContent().StartOfSectionNode(), 1 );
+ if( !aIdx.GetNode().IsTxtNode() )
+ {
+ ASSERT( !this, "wo ist der TextNode?" );
+ pD->GetNodes().GoNext( &aIdx );
+ }
+ SwPaM aPamo( aIdx );
+ aPamo.GetPoint()->nContent.Assign( aIdx.GetNode().GetCntntNode(), 0 );
+ pRdr->LoadDoc(aPamo,this);
+
+ bRet = MakeEntries( pD, rBlocks, bSaveRelFile, aStrings, aExtra );
+
+ delete pRdr;
+ }
+ xDocSh->DoClose();
+ rBlocks.EndPutMuchBlockEntries();
+
+ nStrings = aStrings.Count();
+ aStrings.DeleteAndDestroy( 0, nStrings );
+ aExtra.DeleteAndDestroy( 0, aExtra.Count() );
+ }
+ return bRet;
+}
+
+
+BOOL WW8GlossaryFib::IsGlossaryFib()
+{
+ if( !nFibError )
+ {
+ INT16 nFibMin;
+ INT16 nFibMax;
+ switch( nVersion ) // beachte: 6 steht fuer "6 ODER 7",
+ // 7 steht fuer "NUR 7"
+ {
+ case 6:
+ nFibMin = 0x0065; // von 101 WinWord 6.0
+ // 102 "
+ // und 103 WinWord 6.0 fuer Macintosh
+ // 104 "
+ nFibMax = 0x0069; // bis 105 WinWord 95
+ break;
+ case 7:
+ nFibMin = 0x0069; // von 105 WinWord 95
+ nFibMax = 0x0069; // bis 105 WinWord 95
+ break;
+ case 8:
+ nFibMin = 0x006A; // von 106 WinWord 97
+ nFibMax = 0x00c1; // bis 193 WinWord 97 (?)
+ break;
+ default:
+ nFibMin = 0; // Programm-Fehler!
+ nFibMax = 0;
+ nFib = 1;
+ }
+ if( ( nFib < nFibMin )
+ || ( nFib > nFibMax ) )
+ nFibError = ERR_SWG_READ_ERROR; // Error melden
+ }
+ return(0 == nFibError);
+}
+
+UINT32 WW8GlossaryFib::FindGlossaryFibOffset(SvStream &rTableStrm,
+ SvStream &rStrm, const WW8Fib &rFib)
+{
+ WW8PLCF aPlc( &rTableStrm, rFib.fcPlcfsed, rFib.lcbPlcfsed, 12 );
+ long start,ende;
+ void *pData;
+ aPlc.Get(start,ende,pData);
+ UINT32 nPo = SVBT32ToLong((BYTE *)pData+2);
+ //*pOut << hex << "Offset of last SEPX is " << nPo << endl;
+
+ UINT16 nLen;
+ if (nPo != 0xFFFFFFFF)
+ {
+ rStrm.Seek(nPo);
+ rStrm >> nLen;
+ }
+ else
+ {
+ nPo=0;
+ nLen=0;
+ }
+
+// *pOut << hex << "Ends at " << nPo+len << endl;
+ nPo+=nLen;
+ UINT32 nEndLastPage;
+ if (nPo%512)
+ {
+ nEndLastPage = (nPo)/512;
+ nEndLastPage = (nEndLastPage+1)*512;
+ }
+ else
+ nEndLastPage = nPo;
+
+ //*pOut << hex << "SECOND FIB SHOULD BE FOUND at " << k << endl;
+
+ WW8PLCF xcPLCF( &rTableStrm, rFib.fcPlcfbteChpx,
+ rFib.lcbPlcfbteChpx, (8 > rFib.nVersion) ? 2 : 4);
+
+ xcPLCF.Get(start,ende,pData);
+
+ nPo = SVBT32ToLong((BYTE *)pData);
+ //*pOut << hex << "Offset of last CHPX is " << (nPo+1) *512<< endl;
+ if (((nPo+1)*512) > nEndLastPage) nEndLastPage = (nPo+1)*512;
+
+ WW8PLCF xpPLCF( &rTableStrm, rFib.fcPlcfbtePapx,
+ rFib.lcbPlcfbtePapx, (8 > rFib.nVersion) ? 2 : 4);
+ xpPLCF.Get(start,ende,pData);
+ nPo = SVBT32ToLong((BYTE *)pData);
+ //*pOut << hex << "Offset of last PAPX is " << nPo *512 << endl;
+ if (((nPo+1)*512) > nEndLastPage) nEndLastPage = (nPo+1)*512;
+
+ //*pOut << hex << "SECOND FIB SHOULD BE FOUND at " << nEndLastPage << endl;
+ return nEndLastPage;
+}
+
+/*************************************************************************
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8glsy.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.8 2000/09/18 16:04:59 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.7 2000/06/26 12:59:10 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.6 2000/05/18 10:58:34 jp
+ Changes for Unicode
+
+ Revision 1.5 2000/05/16 11:08:03 khz
+ Unicode code-conversion
+
+ Revision 1.4 2000/03/13 10:22:14 jp
+ Bug #72579#: little/big endian problem
+
+ Revision 1.3 2000/03/03 14:03:39 os
+ precompiled header
+
+ Revision 1.2 2000/02/28 08:33:46 cmc
+ #72579# Enable Glossary Import
+
+ Revision 1.1 2000/02/14 09:05:56 cmc
+ #72579# added ww8glsy.cxx
+
+
+*************************************************************************/
diff --git a/sw/source/filter/ww8/ww8glsy.hxx b/sw/source/filter/ww8/ww8glsy.hxx
new file mode 100644
index 000000000000..4bb5fc77df92
--- /dev/null
+++ b/sw/source/filter/ww8/ww8glsy.hxx
@@ -0,0 +1,134 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8glsy.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WW8GLSY_HXX
+#define _WW8GLSY_HXX
+
+#ifndef _SVSTOR_HXX
+#include <so3/svstor.hxx>
+#endif
+
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+
+#ifndef _WW8SCAN_HXX
+#include <ww8scan.hxx>
+#endif
+
+
+class SwTextBlocks;
+class SwNodeIndex;
+class SwSpzFrmFmts;
+
+/*
+ * GlossaryFib takes the document fib and finds the glossary fib which may
+ * not exist. The glossary fib has the offsets into the autotext subdocument
+ * which is at the end of template .dot's
+ */
+class WW8GlossaryFib : public WW8Fib
+{
+public:
+ WW8GlossaryFib( SvStream& rStrm, BYTE nWantedVersion ,
+ SvStream& rTableStrm, const WW8Fib &rFib) : WW8Fib(rStrm,
+ nWantedVersion,FindGlossaryFibOffset(rTableStrm,rStrm,rFib)) {}
+ BOOL IsGlossaryFib();
+private:
+ UINT32 FindGlossaryFibOffset(SvStream &rTableStrm,SvStream &rStrm,
+ const WW8Fib &rFib);
+};
+
+/*
+ * Imports glossaries from word, given the document it gets the usual word
+ * doc information, then the glossary fib and uses the usual reader class to
+ * wrap the autotext into a star doc. Afterwards taking each section entry and
+ * making it a single star autotext entry.
+ *
+ * ToDo currently all autotext entries become resource hungry star autotext
+ * formatted text, need to use a flag in the ww8reader class to determine if
+ * an entry is formatted or not.
+ */
+class WW8Glossary
+{
+public:
+ WW8Glossary( SvStorageStreamRef &refStrm, BYTE nVersion, SvStorage *pStg=0);
+ BOOL Load( SwTextBlocks &rBlocks, BOOL bSaveRelFile );
+ ~WW8Glossary() { delete pGlossary; }
+ WW8GlossaryFib *GetFib() { return pGlossary; }
+ USHORT GetNoStrings() const { return nStrings; }
+
+private:
+ WW8GlossaryFib *pGlossary;
+ SvStorageStreamRef xTableStream;
+ SvStorageStreamRef &rStrm;
+ SvStorageRef xStg;
+ USHORT nStrings;
+
+ BOOL MakeEntries( SwDoc *pD, SwTextBlocks &rBlocks, BOOL bSaveRelFile,
+ SvStrings& rStrings, SvStrings& rExtra);
+ BOOL HasBareGraphicEnd(SwDoc *pD,SwNodeIndex &rIdx);
+};
+
+
+
+
+
+#endif
diff --git a/sw/source/filter/ww8/ww8graf.cxx b/sw/source/filter/ww8/ww8graf.cxx
new file mode 100644
index 000000000000..b72e5aefcef9
--- /dev/null
+++ b/sw/source/filter/ww8/ww8graf.cxx
@@ -0,0 +1,3174 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8graf.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#include <math.h>
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SVX_FMGLOB_HXX
+#include <svx/fmglob.hxx>
+#endif
+#ifndef _UCBHELPER_CONTENT_HXX
+#include <ucbhelper/content.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SDTAITM_HXX
+#include <svx/sdtaitm.hxx>
+#endif
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_SHORTS
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_XLINIIT_HXX //autogen
+#include <svx/xlineit.hxx>
+#endif
+#ifndef _SVX_FILLITEM_HXX //autogen
+#include <svx/xfillit.hxx>
+#endif
+#ifndef _SVDMODEL_HXX //autogen
+#include <svx/svdmodel.hxx>
+#endif
+#ifndef _SDTAITM_HXX //autogen
+#include <svx/sdtaitm.hxx>
+#endif
+#ifndef _SVDCAPT_HXX //autogen
+#include <svx/svdocapt.hxx>
+#endif
+#ifndef _SXCTITM_HXX //autogen
+#include <svx/sxctitm.hxx>
+#endif
+#ifndef _MyEDITENG_HXX
+#include <svx/editeng.hxx>
+#endif
+#ifndef _SVDPAGE_HXX //autogen
+#include <svx/svdpage.hxx>
+#endif
+#ifndef _SVDOPATH_HXX //autogen
+#include <svx/svdopath.hxx>
+#endif
+#ifndef _SVDOCIRC_HXX //autogen
+#include <svx/svdocirc.hxx>
+#endif
+#ifndef _OUTLOBJ_HXX //autogen
+#include <svx/outlobj.hxx>
+#endif
+#ifndef _SVDOGRP_HXX //autogen
+#include <svx/svdogrp.hxx>
+#endif
+#ifndef _SVDOGRAF_HXX
+#include <svx/svdograf.hxx>
+#endif
+#ifndef _SVDOOLE2_HXX
+#include <svx/svdoole2.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_CNTRITEM_HXX
+#include <svx/cntritem.hxx>
+#endif
+#ifndef _SVX_SHDDITEM_HXX
+#include <svx/shdditem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _TOOLS_URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SVX_IMPGRF_HXX
+#include <svx/impgrf.hxx>
+#endif
+#ifndef _MSDFFIMP_HXX
+#include <svx/msdffimp.hxx>
+#endif
+#ifndef _SVDOATTR_HXX
+#include <svx/svdoattr.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_RECTENUM_HXX //autogen
+#include <svx/rectenum.hxx>
+#endif
+#ifndef _SVX_XFLTRIT_HXX
+#include <svx/xfltrit.hxx>
+#endif
+#ifndef _SVX_OPAQITEM_HXX //autogen
+#include <svx/opaqitem.hxx>
+#endif
+#ifndef _SVX_SHADITEM_HXX //autogen
+#include <svx/shaditem.hxx>
+#endif
+#ifndef _SVX_SHADITEM_HXX //autogen
+#include <svx/shaditem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+
+#ifndef _IPOBJ_HXX //autogen
+#include <so3/ipobj.hxx>
+#endif
+
+#ifndef _WW8STRUC_HXX
+#include <ww8struc.hxx>
+#endif
+#ifndef _WW8SCAN_HXX
+#include <ww8scan.hxx>
+#endif
+#ifndef _WW8PAR_HXX
+#include <ww8par.hxx> // class SwWWImplReader
+#endif
+#ifndef _WW8GRAF_HXX
+#include <ww8graf.hxx>
+#endif
+#ifndef _WW8PAR2_HXX
+#include <ww8par2.hxx> // SwWW8StyInf
+#endif
+#ifndef _GRFATR_HXX
+#include <grfatr.hxx> // class SwCropGrf
+#endif
+#ifndef _FMTORNT_HXX
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _NDGRF_HXX
+#include <ndgrf.hxx>
+#endif
+#ifndef _DCONTACT_HXX
+#include <dcontact.hxx>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx> // Progress
+#endif
+#ifndef _FLTSHELL_HXX
+#include <fltshell.hxx>
+#endif
+#ifndef _FMTCNCT_HXX
+#include <fmtcnct.hxx>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::ucb;
+using namespace ::com::sun::star::uno;
+using namespace ::ucb;
+using namespace ::rtl;
+
+// Hilfsroutinen
+
+// inline geht bei BLC leider nicht mit "for"
+/*inline*/ Color WW8TransCol( SVBT32 nWC )
+{
+#if 1 // 1 = Vordefinierte Farben benutzen, 0 = ignorieren
+
+ // Farbtabelle zum Umrechnen RGB-Werte in vordefinierte Farben
+ // ( Damit bei der Writer-UI die Farbnamen stimmen )
+ // Die Tabelle int im *3er-System* aufgeteilt. Die Grauwerte fehlen,
+ // da sie nicht ins 3er-System passen ( 4 Werte: sw, ws, 2 * grau )
+ static ColorData eColA[] = { // B G R B G R B G R
+ COL_BLACK, COL_RED, COL_LIGHTRED, // 0 0 0, 0 0 1, 0 0 2
+ COL_GREEN, COL_BROWN, COL_BLACK, // 0 1 0, 0 1 1, 0 1 2
+ COL_LIGHTGREEN, COL_BLACK, COL_YELLOW, // 0 2 0, 0 2 1, 0 2 2
+ COL_BLUE, COL_MAGENTA, COL_BLACK, // 1 0 0, 1 0 1, 1 0 2
+ COL_CYAN, COL_LIGHTGRAY, COL_BLACK, // 1 1 0, 1 1 1, 1 1 2
+ COL_BLACK, COL_BLACK, COL_BLACK, // 1 2 0, 1 2 1, 1 2 2
+ COL_LIGHTBLUE, COL_BLACK, COL_LIGHTMAGENTA, // 2 0 0, 2 0 1, 2 0 2
+ COL_BLACK, COL_BLACK, COL_BLACK, // 2 1 0, 2 1 1, 2 1 2
+ COL_LIGHTCYAN, COL_BLACK, COL_WHITE }; // 2 2 0, 2 2 1, 2 2 2
+
+ // In nWC[3] steht ein Byte, dass in der WW-Doku nicht beschrieben ist.
+ // Die Bedeutung ist anscheinend folgende: Bei 0 ist es eine normale
+ // Farbe, dessen RGB-Wert in nWC[0..2] steht. stehen in nWC[3] die
+ // Werte 0x1, 0x7d oder 0x83, dann ist es ein Grauwert, dessen
+ // Schwarzanteil in 1/2 % in nWC[0] steht.
+ // Ich vermute, dass es auf Bit0 in nWV[3] ankommt, ob es RGB oder Grau ist.
+
+ if( !( nWC[3] & 0x1 ) && // keine Spezial-Farbe (grau)
+ ( ( nWC[0] == 0 || nWC[0]== 0x80 || nWC[0] == 0xff ) // R-Anteil
+ && ( nWC[1] == 0 || nWC[1]== 0x80 || nWC[1] == 0xff ) // G-Anteil
+ && ( nWC[2] == 0 || nWC[2]== 0x80 || nWC[2] == 0xff ) ) ){// B-Anteil
+ int nIdx = 0; // und nun: Idx-Berechnung im 3er-System
+ for( int i = 2; i >= 0; i-- ){
+ nIdx *= 3;
+ if( nWC[i] )
+ nIdx += ( ( nWC[i] == 0xff ) ? 2 : 1 );
+ }
+ if( eColA[ nIdx ] != COL_BLACK )
+ return Color( eColA[ nIdx ] ); // Standard-Color
+ }
+#endif
+ if( nWC[3] & 0x1 ){ // Spezialfarbe: Grau
+#ifdef VCL
+ register BYTE u = (BYTE)( (ULONG)( 200 - nWC[0] ) * 256 / 200 );
+#else
+ register USHORT u = (USHORT)( (ULONG)( 200 - nWC[0] ) * 65535L / 200 );
+#endif
+ return Color( u, u, u );
+ }
+ // User-Color
+ return Color( (USHORT)nWC[0] << 8, (USHORT)nWC[1] << 8,
+ (USHORT)nWC[2] << 8 );
+}
+
+
+
+// MakeUniqueGraphName erzeugt einen einzigartigen Namen fuer eine Grafik
+// ( nur falls nicht bNew gesetzt ist )
+
+BOOL SwWW8ImplReader::MakeUniqueGraphName( String& rName,
+ const String& rFixedPart )
+{
+ if( !bNew )
+ return FALSE;
+ nImportedGraphicsCount++;
+ rName = WW8_ASCII2STR( "G" );
+ rName += String::CreateFromInt32( nImportedGraphicsCount );
+ rName += WW8_ASCII2STR( ": " );
+ rName += rFixedPart;
+ return TRUE;
+}
+
+
+
+// ReadGrafStart liest die ObjektDaten ein und erzeugt falls noetig einen Anker
+
+BOOL SwWW8ImplReader::ReadGrafStart( void* pData, short nDataSiz, WW8_DPHEAD* pHd,
+ WW8_DO* pDo )
+{
+ if( (INT16)SVBT16ToShort( pHd->cb )
+ < (short)sizeof( WW8_DPHEAD ) + nDataSiz ){
+ ASSERT( !this, "+Grafik-Element: Size ?" );
+ pStrm->SeekRel( (INT16)SVBT16ToShort( pHd->cb ) - sizeof( WW8_DPHEAD ) );
+ return FALSE;
+ }
+ pStrm->Read( pData, nDataSiz );
+
+ RndStdIds eAnchor = ( SVBT8ToByte( pDo->by ) < 2 ) ? FLY_PAGE : FLY_AT_CNTNT;
+ if( (bIsHeader || bIsFooter) && (FLY_AT_CNTNT != eAnchor) )
+ {
+ eAnchor = FLY_AT_CNTNT;
+ pNode_FLY_AT_CNTNT = &pPaM->GetPoint()->nNode.GetNode();
+ }
+
+ pDrawFmt->SetAttr( SwFmtAnchor( eAnchor, 1 ) );
+ pCtrlStck->NewAttr( *pPaM->GetPoint(), SwFltAnchor( pDrawFmt ) );
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_FLTR_ANCHOR );
+
+ nDrawXOfs2 = nDrawXOfs;
+ nDrawYOfs2 = nDrawYOfs;
+
+ if( eAnchor == FLY_AT_CNTNT ){
+ if( SVBT8ToByte( pDo->bx ) == 1 ) // Pos: echt links
+ nDrawXOfs2 -= nPgLeft;
+ if( bTable ) // Obj in Table
+ nDrawXOfs2 -= GetTableLeft(); // -> siehe Kommentar
+ // bei GetTableLeft()
+ }else{
+ if( SVBT8ToByte( pDo->bx ) != 1 )
+ nDrawXOfs2 += nPgLeft;
+ if( SVBT8ToByte( pDo->by ) == 0 )
+ nDrawYOfs2 += nPgTop;
+ }
+
+ return TRUE;
+}
+
+// SetStdAttr() setzt die Attribute, die jedes Objekt hat
+
+static void SetStdAttr( SfxItemSet& rSet, WW8_DP_LINETYPE& rL,
+ WW8_DP_SHADOW& rSh )
+{
+ if( SVBT16ToShort( rL.lnps ) == 5 ){ // unsichtbar
+ rSet.Put( XLineStyleItem( XLINE_NONE ) );
+ }else{ // sichtbar
+ Color aCol( WW8TransCol( rL.lnpc ) ); // LinienFarbe
+ rSet.Put( XLineColorItem( aEmptyStr, aCol ) );
+ rSet.Put( XLineWidthItem( SVBT16ToShort( rL.lnpw ) ) );
+ // LinienDicke
+ if( SVBT16ToShort( rL.lnps ) >= 1
+ && SVBT16ToShort(rL.lnps ) <= 4 ){ // LinienStil
+ rSet.Put( XLineStyleItem( XLINE_DASH ) );
+ INT16 nLen = SVBT16ToShort( rL.lnpw );
+ XDash aD( XDASH_RECT, 1, 2 * nLen, 1, 5 * nLen, 5 * nLen );
+ switch( SVBT16ToShort( rL.lnps ) ){
+ case 1: aD.SetDots( 0 ); // Dash
+ aD.SetDashLen( 6 * nLen );
+ aD.SetDistance( 4 * nLen );
+ break;
+ case 2: aD.SetDashes( 0 ); break; // Dot
+ case 3: break; // Dash Dot
+ case 4: aD.SetDots( 2 ); break; // Dash Dot Dot
+ }
+ rSet.Put( XLineDashItem( aEmptyStr, aD ) );
+ }else{
+ rSet.Put( XLineStyleItem( XLINE_SOLID ) ); // noetig fuer TextBox
+ }
+ }
+ if( SVBT16ToShort( rSh.shdwpi ) ){ // Schatten
+ rSet.Put( SdrShadowItem( TRUE ) );
+ rSet.Put( SdrShadowXDistItem( SVBT16ToShort( rSh.xaOffset ) ) );
+ rSet.Put( SdrShadowYDistItem( SVBT16ToShort( rSh.yaOffset ) ) );
+ }
+}
+
+// SetFill setzt Fuellattribute wie Vordergrund- und Hintergrund-Farbe
+// und Muster durch Reduktion auf eine Farbe.
+// SetFill() setzt z.Zt kein Muster, da Sdr das nur sehr umstaendlich kann
+// und die Sdr-Schraffur ( XDash ) noch nicht fertig ist.
+// Statt dessen wird eine Mischfarbe gewaehlt, die auf den entsprechenden
+// Farbton zwischen den Farben liegt.
+
+static void SetFill( SfxItemSet& rSet, WW8_DP_FILL& rFill )
+{
+ static BYTE nPatA[] = { 0, 0, 5, 10, 20, 25, 30, 40, 50, 60, 70, 75, 80,
+ 90, 50, 50, 50, 50,50, 50, 33, 33, 33, 33, 33, 33 };
+ register short nPat = SVBT16ToShort( rFill.flpp );
+
+ if( nPat == 0 ){ // durchsichtig
+ rSet.Put( XFillStyleItem( XFILL_NONE ) );
+ }else{
+ rSet.Put( XFillStyleItem( XFILL_SOLID ) ); // noetig fuer TextBox
+ if( nPat <= 1 || nPat > sizeof( nPatA ) ){ // solid Bg oder unbekannt
+ rSet.Put( XFillColorItem( aEmptyStr, WW8TransCol( rFill.dlpcBg ) ) );
+ }else{ // Brush -> Farbmischung
+ Color aB( WW8TransCol( rFill.dlpcBg ) );
+ Color aF( WW8TransCol( rFill.dlpcFg ) );
+#ifdef VCL
+ aB.SetRed( (BYTE)( ( (ULONG)aF.GetRed() * nPatA[nPat]
+ + (ULONG)aB.GetRed() * ( 100 - nPatA[nPat] ) ) / 100 ) );
+ aB.SetGreen( (BYTE)( ( (ULONG)aF.GetGreen() * nPatA[nPat]
+ + (ULONG)aB.GetGreen() * ( 100 - nPatA[nPat] ) ) / 100 ) );
+ aB.SetBlue( (BYTE)( ( (ULONG)aF.GetBlue() * nPatA[nPat]
+ + (ULONG)aB.GetBlue() * ( 100 - nPatA[nPat] ) ) / 100 ) );
+#else
+ aB.SetRed( (USHORT)( ( (ULONG)aF.GetRed() * nPatA[nPat]
+ + (ULONG)aB.GetRed() * ( 100 - nPatA[nPat] ) ) / 100 ) );
+ aB.SetGreen( (USHORT)( ( (ULONG)aF.GetGreen() * nPatA[nPat]
+ + (ULONG)aB.GetGreen() * ( 100 - nPatA[nPat] ) ) / 100 ) );
+ aB.SetBlue( (USHORT)( ( (ULONG)aF.GetBlue() * nPatA[nPat]
+ + (ULONG)aB.GetBlue() * ( 100 - nPatA[nPat] ) ) / 100 ) );
+#endif
+ rSet.Put( XFillColorItem( aEmptyStr, aB ) );
+ }
+ }
+}
+
+static void SetLineEndAttr( SfxItemSet& rSet, WW8_DP_LINEEND& rLe,
+ WW8_DP_LINETYPE& rLt )
+{
+ UINT16 aSB = SVBT16ToShort( rLe.aStartBits );
+ if( aSB & 0x3 ){
+ XPolygon aXP(3);
+ aXP[0] = Point( 0, 330 );
+ aXP[1] = Point( 100, 0 );
+ aXP[2] = Point( 200, 330 );
+ rSet.Put( XLineEndItem( aEmptyStr, aXP ) );
+ USHORT nSiz = SVBT16ToShort( rLt.lnpw )
+ * ( ( aSB >> 2 & 0x3 ) + ( aSB >> 4 & 0x3 ) );
+ if( nSiz < 220 ) nSiz = 220;
+ rSet.Put( XLineEndWidthItem( nSiz ) );
+ rSet.Put( XLineEndCenterItem( FALSE ) );
+ }
+
+ UINT16 aEB = SVBT16ToShort( rLe.aEndBits );
+ if( aEB & 0x3 ){
+ XPolygon aXP(3);
+ aXP[0] = Point( 0, 330 );
+ aXP[1] = Point( 100, 0 );
+ aXP[2] = Point( 200, 330 );
+ rSet.Put( XLineStartItem( aEmptyStr, aXP ) );
+ USHORT nSiz = SVBT16ToShort( rLt.lnpw )
+ * ( ( aEB >> 2 & 0x3 ) + ( aEB >> 4 & 0x3 ) );
+ if( nSiz < 220 ) nSiz = 220;
+ rSet.Put( XLineStartWidthItem( nSiz ) );
+ rSet.Put( XLineStartCenterItem( FALSE ) );
+ }
+}
+
+// Parallel zu dem Obj-Array im Dokument baue ich ein Array auf,
+// dass die Ww-Height ( -> Wer ueberdeckt wen ) beinhaltet.
+// Anhand dieses VARARR wird die Einfuegeposition ermittelt.
+// Der Offset bei Datei in bestehendes Dokument mit Grafiklayer einfuegen
+// muss der Aufrufer den Index um nDrawObjOfs erhoeht werden, damit die
+// neuen Objekte am Ende landen ( Einfuegen ist dann schneller )
+static USHORT SearchPos( SvShorts* pHeight, short nWwHeight )
+{
+ USHORT i, nMax = pHeight->Count();
+ for( i=0; i<nMax; i++ ) // lineare Suche: langsam
+ if( ( pHeight->GetObject( i ) & 0x1fff ) > ( nWwHeight & 0x1fff ) )
+ return i; // vor i-tem Objekt einfuegen
+ return nMax; // am Ende anhaengen
+}
+
+// InsertObj() fuegt das Objekt in die Sw-Page ein und merkt sich die Z-Pos in
+// einem VarArr
+
+void SwWW8ImplReader::InsertObj( SdrObject* pObj, short nWwHeight )
+{
+ if( pDrawGroup )
+ pDrawGroup->InsertObject( pObj, 0 ); // Group: Vorne einfuegen
+ else
+ {
+ SwDrawContact* pContact = new SwDrawContact( pDrawFmt, pObj );
+ USHORT nPos = SearchPos( pDrawHeight, nWwHeight );
+ if( nWwHeight & 0x2000 ) // Heaven ?
+ pObj->SetLayer( nDrawHeaven );
+ else
+ {
+ pObj->SetLayer( nDrawHell );
+ pDrawFmt->SetAttr( SvxOpaqueItem( RES_OPAQUE, FALSE ) );
+ }
+ pDrawFmt->SetAttr( SwFmtSurround( SURROUND_THROUGHT ) );
+
+ pDrawPg->InsertObject( pObj, nDrawObjOfs + nPos );
+ pDrawHeight->Insert( nWwHeight, nPos ); // Pflege WW-Height-Array mit
+
+ // Wenn es sich um seitengebundene Anker handelt, muss man noch
+ // ein Problem umpopeln: Da ich die Seitennummer nicht weiss,
+ // stecke ich den PaM stattdessen in den Anker. MA setzt das
+ // bei der Formatierung dann um. Bis die Formatierung beim Anker
+ // ist, liegen alle seitengebundenen Grafiken auf der 1. Seite,
+ // dann verschwinden sie.
+ // Abhilfe: AnkerPos initial weit auuserhalb des sichtbaren Bereiches
+ // stellen, nach der Formatierung korrigiert MA sie.
+ // schneller waere: ImpSetAnchor() statt NbcSetAnchor, allerdings
+ // muesste dann die Relative Pos aller Objekte um die Ankerpos
+ // korrigiert werden.
+ pObj->NbcSetAnchorPos( Point( USHRT_MAX, USHRT_MAX ) );
+
+ pContact->ConnectToLayout( &pDrawFmt->GetAnchor() );
+ }
+}
+
+// Ab hier folgen die Routinen fuer die einzelnen Objekte
+
+void SwWW8ImplReader::ReadLine( WW8_DPHEAD* pHd, WW8_DO* pDo )
+{
+ WW8_DP_LINE aLine;
+
+ if( !ReadGrafStart( (void*)&aLine, sizeof( aLine ), pHd, pDo ) )
+ return;
+
+ Point aP[2];
+ {
+ Point& rP0 = aP[0];
+ Point& rP1 = aP[1];
+
+ rP0.X() = (INT16)SVBT16ToShort( pHd->xa ) + nDrawXOfs2;
+ rP0.Y() = (INT16)SVBT16ToShort( pHd->ya ) + nDrawYOfs2;
+ rP1 = rP0;
+ rP0.X() += (INT16)SVBT16ToShort( aLine.xaStart );
+ rP0.Y() += (INT16)SVBT16ToShort( aLine.yaStart );
+ rP1.X() += (INT16)SVBT16ToShort( aLine.xaEnd );
+ rP1.Y() += (INT16)SVBT16ToShort( aLine.yaEnd );
+ }
+ SdrObject* pObj = new SdrPathObj( OBJ_LINE, XPolygon( Polygon( 2, aP ) ) );
+ InsertObj( pObj, SVBT16ToShort( pDo->dhgt ) );
+
+ SfxAllItemSet aSet( pDrawModel->GetItemPool() );
+
+ SetStdAttr( aSet, aLine.aLnt, aLine.aShd );
+ SetLineEndAttr( aSet, aLine.aEpp, aLine.aLnt );
+
+ pObj->SetAttributes( aSet, FALSE );
+}
+
+void SwWW8ImplReader::ReadRect( WW8_DPHEAD* pHd, WW8_DO* pDo )
+{
+ WW8_DP_RECT aRect;
+
+ if( !ReadGrafStart( (void*)&aRect, sizeof( aRect ), pHd, pDo ) )
+ return;
+
+ Point aP0( (INT16)SVBT16ToShort( pHd->xa ) + nDrawXOfs2,
+ (INT16)SVBT16ToShort( pHd->ya ) + nDrawYOfs2 );
+ Point aP1( aP0 );
+ aP1.X() += (INT16)SVBT16ToShort( pHd->dxa );
+ aP1.Y() += (INT16)SVBT16ToShort( pHd->dya );
+
+ SdrObject* pObj = new SdrRectObj( Rectangle( aP0, aP1 ) );
+ InsertObj( pObj, SVBT16ToShort( pDo->dhgt ) );
+
+ SfxAllItemSet aSet( pDrawModel->GetItemPool() );
+
+ SetStdAttr( aSet, aRect.aLnt, aRect.aShd );
+ SetFill( aSet, aRect.aFill );
+
+ pObj->SetAttributes( aSet, FALSE );
+}
+
+void SwWW8ImplReader::ReadElipse( WW8_DPHEAD* pHd, WW8_DO* pDo )
+{
+ WW8_DP_ELIPSE aElipse;
+
+ if( !ReadGrafStart( (void*)&aElipse, sizeof( aElipse ), pHd, pDo ) )
+ return;
+
+ Point aP0( (INT16)SVBT16ToShort( pHd->xa ) + nDrawXOfs2,
+ (INT16)SVBT16ToShort( pHd->ya ) + nDrawYOfs2 );
+ Point aP1( aP0 );
+ aP1.X() += (INT16)SVBT16ToShort( pHd->dxa );
+ aP1.Y() += (INT16)SVBT16ToShort( pHd->dya );
+
+ SdrObject* pObj = new SdrCircObj( OBJ_CIRC, Rectangle( aP0, aP1 ) );
+ InsertObj( pObj, SVBT16ToShort( pDo->dhgt ) );
+
+ SfxAllItemSet aSet( pDrawModel->GetItemPool() );
+
+ SetStdAttr( aSet, aElipse.aLnt, aElipse.aShd );
+ SetFill( aSet, aElipse.aFill );
+
+ pObj->SetAttributes( aSet, FALSE );
+}
+
+void SwWW8ImplReader::ReadArc( WW8_DPHEAD* pHd, WW8_DO* pDo )
+{
+ WW8_DP_ARC aArc;
+
+ if( !ReadGrafStart( (void*)&aArc, sizeof( aArc ), pHd, pDo ) )
+ return;
+
+ Point aP0( (INT16)SVBT16ToShort( pHd->xa ) + nDrawXOfs2,
+ (INT16)SVBT16ToShort( pHd->ya ) + nDrawYOfs2 );
+ Point aP1( aP0 );
+ aP1.X() += (INT16)SVBT16ToShort( pHd->dxa ) * 2;
+ aP1.Y() += (INT16)SVBT16ToShort( pHd->dya ) * 2;
+
+ short nA[] = { 2, 3, 1, 0 };
+ short nW = nA[ ( ( SVBT8ToByte( aArc.fLeft ) & 1 ) << 1 )
+ + ( SVBT8ToByte( aArc.fUp ) & 1 ) ];
+ if( !SVBT8ToByte( aArc.fLeft ) ){
+ aP0.Y() -= (INT16)SVBT16ToShort( pHd->dya );
+ aP1.Y() -= (INT16)SVBT16ToShort( pHd->dya );
+ }
+ if( SVBT8ToByte( aArc.fUp ) ){
+ aP0.X() -= (INT16)SVBT16ToShort( pHd->dxa );
+ aP1.X() -= (INT16)SVBT16ToShort( pHd->dxa );
+ }
+
+ SdrObject* pObj = new SdrCircObj( OBJ_SECT, Rectangle( aP0, aP1 ),
+ nW * 9000, ( ( nW + 1 ) & 3 ) * 9000 );
+ InsertObj( pObj, SVBT16ToShort( pDo->dhgt ) );
+
+ SfxAllItemSet aSet( pDrawModel->GetItemPool() );
+
+ SetStdAttr( aSet, aArc.aLnt, aArc.aShd );
+ SetFill( aSet, aArc.aFill );
+
+ pObj->SetAttributes( aSet, FALSE );
+}
+
+void SwWW8ImplReader::ReadPolyLine( WW8_DPHEAD* pHd, WW8_DO* pDo )
+{
+ WW8_DP_POLYLINE aPoly;
+
+ if( !ReadGrafStart( (void*)&aPoly, sizeof( aPoly ), pHd, pDo ) )
+ return;
+
+ UINT16 nCount = SVBT16ToShort( aPoly.aBits1 ) >> 1 & 0x7fff;
+ SVBT16 *pP = new SVBT16[nCount * 2];
+ pStrm->Read( pP, nCount * 4 ); // Punkte einlesen
+ Polygon aP( nCount );
+ Point aPt;
+ USHORT i;
+
+ for( i=0; i<nCount; i++ ){
+ aPt.X() = SVBT16ToShort( pP[i << 1] ) + nDrawXOfs2
+ + (INT16)SVBT16ToShort( pHd->xa );
+ aPt.Y() = SVBT16ToShort( pP[( i << 1 ) + 1] ) + nDrawYOfs2
+ + (INT16)SVBT16ToShort( pHd->ya );
+ aP[i] = aPt;
+ }
+ delete[]( pP );
+
+ SdrObject* pObj = new SdrPathObj(
+ ( SVBT16ToShort( aPoly.aBits1 ) & 0x1 ) ? OBJ_POLY : OBJ_PLIN,
+ XPolygon( aP ) );
+
+ InsertObj( pObj, SVBT16ToShort( pDo->dhgt ) );
+
+ SfxAllItemSet aSet( pDrawModel->GetItemPool() );
+
+ SetStdAttr( aSet, aPoly.aLnt, aPoly.aShd );
+ SetFill( aSet, aPoly.aFill );
+
+ pObj->SetAttributes( aSet, FALSE );
+}
+
+ESelection SwWW8ImplReader::GetESelection( long nCpStart, long nCpEnd )
+{
+ USHORT nPCnt = pDrawEditEngine->GetParagraphCount();
+ USHORT nSP = 0;
+ USHORT nEP = 0;
+ while( (nSP < nPCnt)
+ && (nCpStart >= pDrawEditEngine->GetTextLen( nSP ) + 1) )
+ {
+ nCpStart -= pDrawEditEngine->GetTextLen( nSP ) + 1;
+ nSP++;
+ }
+ // Beim Ende erst 1 Zeichen spaeter auf naechste Zeile umschalten,
+ // da sonst Zeilenattribute immer eine Zeile zu weit reichen.
+ while( (nEP < nPCnt)
+ && (nCpEnd > pDrawEditEngine->GetTextLen( nEP ) + 1) )
+ {
+ nCpEnd -= pDrawEditEngine->GetTextLen( nEP ) + 1;
+ nEP++;
+ }
+ return ESelection( nSP, (USHORT)nCpStart, nEP, (USHORT)nCpEnd );
+}
+
+// GetTxbxCharAttrs() setzt die harten Zeichen-Attribute in den angegebenen Set.
+// Toggle-Attribute werden z.Zt. nicht beruecksichtigt
+void SwWW8ImplReader::GetTxbxPapAndCharAttrs( SfxItemSet& rS,
+ const WW8PLCFManResult& rRes )
+{
+ static SvxAdjust aAdjArr[] = { SVX_ADJUST_LEFT,
+ SVX_ADJUST_CENTER,
+ SVX_ADJUST_RIGHT,
+ SVX_ADJUST_BLOCK };
+
+ BYTE* pData = rRes.pMemPos + 1 + (8 > pWwFib->nVersion ? 0 : 1)
+ + WW8SprmDataOfs( rRes.nSprmId );
+
+ switch( rRes.nSprmId )
+ {
+ //
+ // PAP attributes
+ //
+ case 5:
+ case 0x2403: rS.Put(SvxAdjustItem(
+ aAdjArr[pData[0]&0x3], EE_PARA_JUST ) );
+ // "&0x3 gegen Tabellenueberlauf bei Stuss-Werten
+ break;
+ case 21:
+ case 0xA413:
+ case 22:
+ case 0xA414:
+ {
+ short nPara = SVBT16ToShort( pData );
+ if( nPara < 0 )
+ nPara = -nPara;
+
+ SvxULSpaceItem aUL((SvxULSpaceItem&)rS.Get(EE_PARA_ULSPACE, TRUE));
+
+ if( 1 & rRes.nSprmId ) // 21, 0xA413 resp.
+ aUL.SetUpper( nPara );
+ else // 22, 0xA414 resp.
+ aUL.SetLower( nPara );
+ rS.Put( aUL );
+ };
+ break;
+ //
+ // CHAR attributes
+ //
+ case 85:
+ case 0x0835: rS.Put( SvxWeightItem( (*pData & 0x1)?WEIGHT_BOLD:WEIGHT_NORMAL,
+ EE_CHAR_WEIGHT ) );
+ break;
+ case 86:
+ case 0x0836: rS.Put( SvxPostureItem( (*pData & 0x1)?ITALIC_NORMAL:ITALIC_NONE,
+ EE_CHAR_ITALIC ) );
+ break;
+ case 87:
+ case 0x0837: rS.Put( SvxCrossedOutItem( (*pData & 0x1)?STRIKEOUT_SINGLE:STRIKEOUT_NONE,
+ EE_CHAR_STRIKEOUT ) );
+ break;
+ case 88:
+ case 0x0838: rS.Put( SvxContourItem( *pData & 0x1, EE_CHAR_OUTLINE));
+ break;
+ case 89:
+ case 0x0839: rS.Put( SvxShadowedItem( *pData & 0x1, EE_CHAR_SHADOW));
+ break;
+ case 94:
+ case 0x2A3E:if( (1 > *pData)
+ ||
+ ( (4 < *pData)
+ && (6 != *pData) ) )
+ rS.Put( SvxUnderlineItem(UNDERLINE_NONE,
+ EE_CHAR_UNDERLINE) );
+ else
+ {
+ if( 6 == *pData )
+ rS.Put( SvxWeightItem(WEIGHT_BOLD,
+ EE_CHAR_WEIGHT) );
+ rS.Put( SvxUnderlineItem(UNDERLINE_SINGLE,
+ EE_CHAR_UNDERLINE) );
+ }
+ break;
+ case 98:
+ case 0x2A42: rS.Put( SvxColorItem( Color( GetCol( pData[0] ) ),
+ EE_CHAR_COLOR ) );
+ break;
+ case 99:
+ case 0x4A43:{
+ USHORT nFSize = SVBT16ToShort( pData );
+ // Font-Groesse in halben Point
+ // 10 = 1440 / ( 72 * 2 )
+ rS.Put( SvxFontHeightItem(
+ (const ULONG) ( (ULONG) nFSize * 10 ),
+ 100, EE_CHAR_FONTHEIGHT ) );
+ }
+ break;
+ case 93:
+ case 0x4A4F:{
+ USHORT nFCode = SVBT16ToShort( pData ); // Font-Nummer
+ FontFamily eFamily;
+ String aName;
+ FontPitch ePitch;
+ CharSet eSrcCharSet;
+
+ if( GetFontParams( nFCode, eFamily, aName, ePitch,
+ eSrcCharSet ) )
+ {
+ rS.Put( SvxFontItem( eFamily, aName, aEmptyStr, ePitch,
+ eSrcCharSet, EE_CHAR_FONTINFO ) );
+ }
+ }
+ break;
+ }
+}
+
+/*
+// InsertTxbxCharAttrs() setzt die harten Zeichen-Attribute
+void SwWW8ImplReader::InsertTxbxCharAttrs( long nStartCp, long nEndCp, BOOL bONLYnPicLocFc )
+{
+ nStartCp += nDrawCpO;
+ nEndCp += nDrawCpO;
+ WW8PLCFx_Cp_FKP* pChp = pPlcxMan->GetChpPLCF();
+ pChp->SeekPos( nStartCp );
+
+ nPicLocFc = LONG_MAX;
+ WW8_CP nStart = pChp->Where();
+ while( nStart <= nEndCp )
+ {
+ SfxItemSet aS( pDrawEditEngine->GetEmptyItemSet() );
+ WW8PLCFxDesc aDesc;
+ pChp->GetSprms( &aDesc );
+ (*pChp)++;
+ WW8_CP nNextEnd = pChp->Where();
+ WW8_CP nEnd = ( nNextEnd < nEndCp ) ? nNextEnd : nEndCp;
+
+ if( aDesc.nSprmsLen && aDesc.pMemPos ) // Attribut(e) vorhanden?
+ GetTxbxCharAttrs( aS, aDesc, bONLYnPicLocFc );
+
+ if( bONLYnPicLocFc ) // Picture-Position-Attribut gefunden?
+ {
+ if( LONG_MAX != nPicLocFc ) break;
+ // ==================================
+ }
+ else
+ if( aS.Count() && !bONLYnPicLocFc )
+ pDrawEditEngine->QuickSetAttribs( aS,
+ GetESelection( nStart - nStartCp, nEnd - nStartCp ) );
+ nStart = nNextEnd;
+ }
+ if( LONG_MAX == nPicLocFc ) nPicLocFc = 0;
+}
+
+// GetTxbxParaAttrs() setzt die harten Para-Attribute in den angegebenen Set.
+// z.Zt. wird nur Justify beachtet, da einfacher
+void SwWW8ImplReader::GetTxbxParaAttrs( SfxItemSet& rS, const WW8PLCFxDesc& rD )
+{
+ static SvxAdjust aAdjArr[] = { SVX_ADJUST_LEFT,
+ SVX_ADJUST_CENTER, SVX_ADJUST_RIGHT, SVX_ADJUST_BLOCK };
+
+ long nLen = rD.nSprmsLen;
+ BYTE* pSprm = rD.pMemPos;
+
+ while( nLen >= 2 )
+ {
+ BYTE nDelta;
+ USHORT nId = WW8GetSprmId( pWwFib->nVersion, pSprm, &nDelta );
+
+ short nSL = WW8GetSprmSizeBrutto( pWwFib->nVersion, pSprm, &nId );
+
+ if( nLen < nSL )
+ return; // nicht mehr genug Bytes ueber
+
+ BYTE* pData = pSprm + 1 + nDelta + WW8SprmDataOfs( nId );
+
+ switch( nId )
+ {
+ case 5:
+ case 0x2403: rS.Put(SvxAdjustItem(
+ aAdjArr[pData[0]&0x3], EE_PARA_JUST ) );
+ // "&0x3 gegen Tabellenueberlauf bei Stuss-Werten
+ break;
+ case 21:
+ case 0xA413:
+ case 22:
+ case 0xA414:
+ {
+ short nPara = SVBT16ToShort( pData );
+ if( nPara < 0 )
+ nPara = -nPara;
+
+ SvxULSpaceItem aUL( (SvxULSpaceItem&)rS.Get(EE_PARA_ULSPACE,TRUE ));
+
+ switch( nId ){ // keine Versuche
+ case 21:
+ case 0xA413: aUL.SetUpper( nPara ); break;
+ case 22:
+ case 0xA414: aUL.SetLower( nPara ); break;
+ };
+ rS.Put( aUL );
+ };
+ break;
+ }
+ pSprm += nSL;
+ nLen -= nSL;
+ }
+}
+*/
+// InsertTxbxStyAttrs() setzt die Style-Attribute in den uebergebenen ItemSet.
+// Es werden die SW-Styles genommen, die Import-WW-Styles sind zu diesem
+// Zeitpunkt schon destruiert.
+// Die SW-Styles werden per Tiefensuche, d.h. mit Parent-Styles nach den
+// in aSrcTab angegebenen Attributen untersucht. Diese werden per Clone
+// dupliziert, bei den Duplikaten werden die Which-IDs
+// gemaess der Tabelle aDstTab umgesetzt, damit die EditEngine sie nicht
+// ignoriert.
+// Es werden hierbei sowohl Para- wie auch Zeichen-Attribute in den
+// ItemSet gestopft.
+void SwWW8ImplReader::InsertTxbxStyAttrs( SfxItemSet& rS, USHORT nColl )
+{
+ static USHORT __READONLY_DATA aSrcTab[] = {
+ ITEMID_FONT,
+ ITEMID_POSTURE,
+ ITEMID_WEIGHT,
+ ITEMID_SHADOWED,
+ ITEMID_CONTOUR,
+ ITEMID_CROSSEDOUT,
+ ITEMID_UNDERLINE,
+ ITEMID_FONTHEIGHT,
+ ITEMID_COLOR,
+ ITEMID_WORDLINEMODE,
+ ITEMID_ESCAPEMENT,
+ ITEMID_AUTOKERN,
+ ITEMID_KERNING,
+ ITEMID_ADJUST,
+ ITEMID_LINESPACING,
+ ITEMID_TABSTOP,
+ ITEMID_LRSPACE,
+ ITEMID_ULSPACE };
+
+ static USHORT __READONLY_DATA aDstTab[] = {
+ EE_CHAR_FONTINFO,
+ EE_CHAR_ITALIC,
+ EE_CHAR_WEIGHT,
+ EE_CHAR_SHADOW,
+ EE_CHAR_OUTLINE,
+ EE_CHAR_STRIKEOUT,
+ EE_CHAR_UNDERLINE,
+ EE_CHAR_FONTHEIGHT,
+ EE_CHAR_COLOR,
+ EE_CHAR_WLM,
+ EE_CHAR_ESCAPEMENT,
+ EE_CHAR_PAIRKERNING,
+ EE_CHAR_KERNING,
+ EE_PARA_JUST,
+ EE_PARA_SBL,
+ EE_PARA_TABS,
+ EE_PARA_LRSPACE,
+ EE_PARA_ULSPACE };
+
+ if( nColl < nColls && pCollA[nColl].pFmt && pCollA[nColl].bColl ){
+ const SfxPoolItem* pItem;
+ for( USHORT i = 0; i < sizeof(aSrcTab)/sizeof(aSrcTab[0]); i++ ){
+ if( SFX_ITEM_SET == pCollA[nColl].pFmt->GetItemState(
+ aSrcTab[i], TRUE, &pItem ) ){
+ SfxPoolItem* pCopy = pItem->Clone();
+ pCopy->SetWhich( aDstTab[i] );
+ rS.Put( *pCopy );
+ delete pCopy;
+ }
+ }
+ }
+
+}
+/*
+// InsertTxbxParaAttrs() setzt zwischen StartCp und EndCp die Style-
+// uns Absatz-Attribute. Dabei werden Style-Attribute als harte Attribute
+// gesetzt, da die EditEngine-Styles im SW UI-maessig nicht benutzt
+// werden und der Import daher das auch nicht soll.
+// Es werden also harte Para-Attrs und *alle* Style-Attrs gesetzt.
+void SwWW8ImplReader::InsertTxbxParaAttrs( long nStartCp, long nEndCp )
+{
+ nStartCp += nDrawCpO;
+ nEndCp += nDrawCpO;
+ WW8PLCFx_Cp_FKP* pPap = pPlcxMan->GetPapPLCF();
+ pPap->SeekPos( nStartCp );
+
+ WW8_CP nStart = pPap->Where();
+ while( nStart <= nEndCp )
+ {
+ SfxItemSet aS( pDrawEditEngine->GetEmptyItemSet() );
+ WW8PLCFxDesc aDesc;
+ pPap->GetSprms( &aDesc );
+ (*pPap)++;
+ WW8_CP nNextEnd = pPap->Where();
+ WW8_CP nEnd = ( nNextEnd < nEndCp ) ? nNextEnd : nEndCp;
+
+ InsertTxbxStyAttrs( aS, pPap->GetIstd() ); // Style-Kram rein
+
+ if( aDesc.nSprmsLen && aDesc.pMemPos ) // Attribut(e) vorhanden
+ GetTxbxParaAttrs( aS, aDesc );
+
+ if( aS.Count() )
+ pDrawEditEngine->QuickSetAttribs( aS,
+ GetESelection( nStart - nStartCp, nEnd - nStartCp ) );
+ nStart = nNextEnd;
+ }
+}
+*/
+// InsertTxbxAttrs() setzt zwischen StartCp und EndCp die Attribute.
+// Dabei werden Style-Attribute als harte Attribute, Absatz- und Zeichen-
+// attribute gesetzt.
+void SwWW8ImplReader::InsertTxbxAttrs( long nStartCp,
+ long nEndCp,
+ BOOL bONLYnPicLocFc )
+{
+ WW8PLCFManResult aRes;
+ SfxItemSet aS( pDrawEditEngine->GetEmptyItemSet() );
+
+ nStartCp += nDrawCpO;
+ nEndCp += nDrawCpO;
+ WW8ReaderSave aSave(this,nStartCp);
+
+
+ WW8_CP nStart = pPlcxMan->Where();
+ WW8_CP nNext;
+ WW8_CP nEnd;
+ USHORT nIstd = pPlcxMan->GetPapPLCF()->GetIstd();
+ USHORT nNextIstd = USHRT_MAX;
+
+ // store the *first* Style's SPRMs
+ InsertTxbxStyAttrs( aS, nIstd );
+
+ while( nStart <= nEndCp )
+ {
+ // get position of next SPRM
+ if( pPlcxMan->Get( &aRes )
+ && aRes.pMemPos && aRes.nSprmId )
+ {
+ if( bONLYnPicLocFc )
+ {
+ if( ( 68 == aRes.nSprmId)
+ || (0x6A03 == aRes.nSprmId) )
+ {
+ Read_PicLoc( aRes.nSprmId,
+ aRes.pMemPos
+ + 1
+ + (8 > pWwFib->nVersion ? 0 : 1)
+ + WW8SprmDataOfs( aRes.nSprmId ),
+ 4 );
+ // Ok, that's it. Now let's get out of here!
+ break;
+ }
+ }
+ else if( aRes.nSprmId && ( ( 256 > aRes.nSprmId )
+ || ( 0x0800 <= aRes.nSprmId ) ) )
+ {
+ GetTxbxPapAndCharAttrs( aS, aRes );
+ }
+ }
+
+ (*pPlcxMan)++;
+ nNext = pPlcxMan->Where();
+
+ if( (nNext != nStart) && !bONLYnPicLocFc )
+ {
+ nNextIstd = pPlcxMan->GetPapPLCF()->GetIstd();
+ if( nNextIstd != nIstd )
+ {
+ nIstd = nNextIstd;
+ // store the *next* Style's SPRMs
+ InsertTxbxStyAttrs( aS, nIstd );
+ }
+
+ nEnd = ( nNext < nEndCp ) ? nNext : nEndCp;
+ // put the attrs into the doc
+ if( aS.Count() )
+ pDrawEditEngine->QuickSetAttribs( aS,
+ GetESelection( nStart - nStartCp, nEnd - nStartCp ) );
+ }
+ nStart = nNext;
+ }
+
+ aSave.Restore(this);
+}
+
+BOOL SwWW8ImplReader::GetTxbxTextSttEndCp( long& rStartCp, long& rEndCp,
+ USHORT nTxBxS, USHORT nSequence )
+{
+ // rasch den TextBox-PLCF greifen
+ WW8PLCFspecial* pT = pPlcxMan->GetTxbx();
+ if( !pT )
+ {
+ ASSERT( !this, "+Wo ist der Grafik-Text (1) ?" );
+ return FALSE;
+ }
+
+ // ggfs. zuerst die richtige TextBox-Story finden
+ BOOL bCheckTextBoxStory = ( nTxBxS && pT->GetIMax() >= nTxBxS );
+ if( bCheckTextBoxStory )
+ pT->SetIdx( nTxBxS-1 );
+
+ // dann Start und Ende ermitteln
+ void* pT0;
+ if( !pT->Get( rStartCp, pT0 ) )
+ {
+ ASSERT( !this, "+Wo ist der Grafik-Text (2) ?" );
+ return FALSE;
+ }
+
+ if( bCheckTextBoxStory )
+ {
+ BOOL bReusable = (0 != SVBT16ToShort( ((WW8_TXBXS*)pT0)->fReusable ));
+ while( bReusable )
+ {
+ (*pT)++;
+ if( !pT->Get( rStartCp, pT0 ) )
+ {
+ ASSERT( !this, "+Wo ist der Grafik-Text (2-a) ?" );
+ return FALSE;
+ }
+ bReusable = (0 != SVBT16ToShort( ((WW8_TXBXS*)pT0)->fReusable ));
+ }
+ }
+ (*pT)++;
+ if( !pT->Get( rEndCp, pT0 ) )
+ {
+ ASSERT( !this, "+Wo ist der Grafik-Text (3) ?" );
+ return FALSE;
+ }
+
+ // jetzt ggfs. die passende Page in der Break-Table finden
+ if( bCheckTextBoxStory )
+ {
+ // Sonderfall: gesamte(!) Kette soll ermittelt werden,
+ // dann sind wir hier schon fertig!
+ if( USHRT_MAX > nSequence )
+ {
+ long nMinStartCp = rStartCp;
+ long nMaxEndCp = rEndCp;
+ // rasch den TextBox-Break-Deskriptor-PLCF greifen
+ pT = pPlcxMan->GetTxbxBkd();
+ if (!pT) //It can occur on occasion, Caolan
+ return FALSE;
+
+ // den ersten Eintrag fuer diese TextBox-Story finden
+ if( !pT->SeekPos( rStartCp ) )
+ {
+ ASSERT( !this, "+Wo ist der Grafik-Text (4) ?" );
+ return FALSE;
+ }
+ // ggfs. entsprechende Anzahl Eintraege weitergehen
+ for(USHORT iSequence = 0; iSequence < nSequence; iSequence++) (*pT)++;
+ // dann die tatsaechlichen Start und Ende ermitteln
+ if( (!pT->Get( rStartCp, pT0 ))
+ || ( nMinStartCp > rStartCp ) )
+ {
+ ASSERT( !this, "+Wo ist der Grafik-Text (5) ?" );
+ return FALSE;
+ }
+ if( rStartCp >= nMaxEndCp )
+ rEndCp = rStartCp; // kein Error: leerer String!
+ else
+ {
+ (*pT)++;
+ if( (!pT->Get( rEndCp, pT0 ))
+ || ( nMaxEndCp < rEndCp-1 ) )
+ {
+ ASSERT( !this, "+Wo ist der Grafik-Text (6) ?" );
+ return FALSE;
+ }
+ rEndCp -= 1;
+ }
+ }
+ else
+ rEndCp -= 1;
+ }
+ else
+ rEndCp -= 2;
+ return TRUE;
+}
+
+// TxbxText() holt aus WW-File den Text und gibt diesen und den Anfangs- und
+// den um -2 (bzw. -1 bei Ver8) korrigierten End-Cp zurueck
+
+
+BOOL SwWW8ImplReader::GetTxbxText( String& rString,
+ long nStartCp, long nEndCp )
+{
+ nDrawTxbx++;
+ BOOL bOk = FALSE;
+ if( nStartCp > nEndCp )
+ {
+ ASSERT( !this, "+Wo ist der Grafik-Text (7) ?" );
+ }
+ else
+ if( nStartCp == nEndCp )
+ rString.Erase(); // leerer String: durchaus denkbar!
+ else
+ {
+ // den Text einlesen: kann sich ueber mehrere Pieces erstrecken!!!
+ USHORT nLen = pSBase->WW8ReadString( *pStrm, rString,
+ nStartCp + nDrawCpO,
+ nEndCp - nStartCp,
+ eTextCharSet );
+ if( !nLen )
+ {
+ ASSERT( !this, "+Wo ist der Grafik-Text (8) ?" );
+ }
+ else
+ {
+ bOk = TRUE;
+ if( 0x0d == rString.GetChar(nLen - 1) )
+ rString.Erase(nLen - 1);
+ }
+ }
+ return bOk;
+}
+
+
+// InsertTxbxText() fuegt fuer TextBoxen und CaptionBoxen den Text
+// und die Attribute ein
+SwFrmFmt* SwWW8ImplReader::InsertTxbxText(SdrTextObj* pTextObj,
+ Size* pObjSiz,
+ USHORT nTxBxS,
+ USHORT nSequence,
+ long nPosCp,
+ SwFrmFmt* pOldFlyFmt,
+ BOOL bMakeSdrGrafObj,
+ BOOL& rbEraseTextObj,
+ BOOL* pbTestTxbxContainsText,
+ long* pnStartCp,
+ long* pnEndCp,
+ SvxMSDffImportRec* pRecord)
+{
+ SwFrmFmt* pFlyFmt = 0;
+ ULONG nOld = pStrm->Tell();
+
+ rbEraseTextObj = FALSE;
+
+ String aString;
+ long nStartCp, nEndCp, nNewStartCp;
+ BOOL bTextWasRead = GetTxbxTextSttEndCp( nStartCp, nEndCp,
+ nTxBxS, nSequence ) &&
+ GetTxbxText( aString, nStartCp, nEndCp );
+ nNewStartCp = nStartCp;
+
+ if( !pbTestTxbxContainsText )
+ {
+ if( bTextWasRead )
+ while( STRING_NOTFOUND != aString.SearchAndReplace( 0xb, ' ' ))
+ ; // HardNewline kann EE noch nicht in der EE-Core
+
+ if( !pDrawEditEngine )
+#if SUPD>601
+ pDrawEditEngine = new EditEngine(0);
+#else
+ pDrawEditEngine = new EditEngine;
+#endif
+ if( pObjSiz )
+ pDrawEditEngine->SetPaperSize( *pObjSiz );
+ }
+
+ if( bTextWasRead )
+ {
+ for(USHORT i=0; i < aString.Len(); i++)
+ {
+ if( 0x13 == aString.GetChar( i ) )
+ {
+ do
+ {
+ aString.Erase( i, 1 );
+ nNewStartCp++;
+ }
+ while( aString.Len()
+ && ( i < aString.Len())
+ && (0x14 != aString.GetChar( i ) )
+ && (0x15 != aString.GetChar( i ) ) );
+ if( aString.Len() )
+ {
+ if( 0x14 == aString.GetChar( i ) )
+ {
+ aString.Erase( i, 1 );
+ nNewStartCp++;
+ do
+ {
+ i++;
+ }
+ while( aString.Len()
+ && ( i < aString.Len())
+ && (0x15 != aString.GetChar( i ) ) );
+ if( i < aString.Len() )
+ aString.Erase( i, 1 );
+ }
+ else if( 0x15 == aString.GetChar( i ) )
+ {
+ aString.Erase( i, 1 );
+ }
+ }
+ }
+ }
+ if (1 == aString.Len())
+ {
+ BOOL bDone = TRUE;
+ switch( aString.GetChar(0) )
+ {
+ case 0x1:if( !pbTestTxbxContainsText )
+ {
+ WW8ReaderSave aSave(this,nNewStartCp + nDrawCpO -1);
+ BOOL bOldEmbeddObj = bEmbeddObj;
+ //bEmbedd Ordinarily would have been set by field
+ //parse, but this is impossible here so...
+ bEmbeddObj = TRUE;
+
+ // 1st look for OLE- or Graph-Indicator Sprms
+ WW8PLCFx_Cp_FKP* pChp = pPlcxMan->GetChpPLCF();
+ WW8PLCFxDesc aDesc;
+ pChp->GetSprms( &aDesc );
+ WW8SprmIter aSprmIter( aDesc.pMemPos, aDesc.nSprmsLen,
+ GetFib().nVersion );
+
+ //BOOL bRead_Obj = FALSE;
+ //BOOL bRead_PicLoc = FALSE;
+ BYTE* pParams = aSprmIter.GetAktParams();
+ for( int nLoop = 0; nLoop < 2; ++nLoop )
+ {
+ while( aSprmIter.GetSprms()
+ && (0 != (pParams = aSprmIter.GetAktParams())) )
+ {
+ USHORT nAktId = aSprmIter.GetAktId();
+ switch( nAktId )
+ {
+ case 75:
+ case 118:
+ case 0x080A:
+ case 0x0856:
+ //if( !bRead_Obj )
+ //{
+ Read_Obj(nAktId, pParams, 1);
+ // bRead_Obj = TRUE;
+ //}
+ break;
+ case 68: // Read_Pic()
+ case 0x6A03:
+ case 0x680E:
+ //if( !bRead_PicLoc )
+ //{
+ Read_PicLoc(nAktId, pParams, 1);
+ // bRead_PicLoc = TRUE;
+ //}
+ break;
+ }
+ aSprmIter++;
+ }
+
+ //if( bRead_Obj || bRead_PicLoc ) break;
+ if( !nLoop )
+ {
+ pChp->GetPCDSprms( aDesc );
+ aSprmIter.SetSprms( aDesc.pMemPos,
+ aDesc.nSprmsLen );
+ }
+ //if( bRead_Obj || bRead_PicLoc ) break;
+ }
+ aSave.Restore(this);
+ bEmbeddObj=bOldEmbeddObj;
+
+ // then import either an OLE of a Graphic
+ if( bObj )
+ {
+ pFlyFmt = ImportOle();
+ bObj=FALSE;
+ }
+ else
+ {
+ InsertTxbxAttrs(nNewStartCp,
+ nNewStartCp+1,
+ TRUE);
+ //InsertTxbxCharAttrs(nNewStartCp, nNewStartCp+1, TRUE);
+ pFlyFmt = ImportGraf(
+ bMakeSdrGrafObj ? pTextObj : 0,
+ pOldFlyFmt,
+ pTextObj
+ ? (nDrawHell == pTextObj->GetLayer())
+ : FALSE );
+ }
+ }
+ break;
+ case 0x8:if( !pbTestTxbxContainsText )
+ {
+ if( !bObj )
+ pFlyFmt = Read_GrafLayer( nPosCp );
+ }
+ break;
+ default:bDone = FALSE;
+ break;
+ }
+ if( bDone )
+ {
+ if( pFlyFmt )
+ {
+ if( pRecord )
+ {
+ SfxItemSet aFlySet( rDoc.GetAttrPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+
+ Rectangle aInnerDist( pRecord->nDxTextLeft,
+ pRecord->nDyTextTop,
+ pRecord->nDxTextRight,
+ pRecord->nDyTextBottom );
+ MatchSdrItemsIntoFlySet( pTextObj,
+ aFlySet,
+ pRecord->eLineStyle,
+ aInnerDist,
+ !pRecord->bLastBoxInChain );
+
+ pFlyFmt->SetAttr( aFlySet );
+
+
+ MatchWrapDistancesIntoFlyFmt( pRecord, pFlyFmt );
+ }
+
+ }
+ aString.Erase();
+ rbEraseTextObj = (0 != pFlyFmt);
+ }
+ }
+
+ }
+
+ if( pbTestTxbxContainsText )
+ {
+ if( pnStartCp ) *pnStartCp = nStartCp;
+ if( pnEndCp ) *pnEndCp = nEndCp;
+ *pbTestTxbxContainsText = bTextWasRead
+ && ! rbEraseTextObj;
+ }
+ else if( !rbEraseTextObj )
+ {
+ if( bTextWasRead )
+ {
+ pDrawEditEngine->SetText( aString );
+ InsertTxbxAttrs( nStartCp, nEndCp, FALSE );
+ // pDrawEditEngine->QuickFormatDoc(); // nach MT nicht noetig
+ }
+
+#if SUPD>600
+#if SUPD>601
+ OutlinerParaObject* pOp = new OutlinerParaObject( *pDrawEditEngine->CreateTextObject() );
+#else
+ OutlinerParaObject* pOp = new OutlinerParaObject( *pDrawEditEngine );
+#endif
+ pTextObj->NbcSetOutlinerParaObject( pOp );
+#endif
+
+ // Fuer die naechste Textbox noch die alten Absatz-Attribute
+ // und Styles entfernen, sonst startet die naechste Box
+ // mit falschen Attributen.
+ // Vorgehen: Text loeschen = auf 1 Absatz reduzieren
+ // und an diesem Absatz die Absatzattribute und Styles loeschen
+ // (Empfehlung JOE)
+ pDrawEditEngine->SetText( aEmptyStr );
+ pDrawEditEngine->SetParaAttribs( 0, pDrawEditEngine->GetEmptyItemSet() );
+#if SUPD>600
+#if SUPD>601
+ pDrawEditEngine->SetStyleSheet( 0, 0 );
+#else
+ pDrawEditEngine->SetStyleSheet( 0, aEmptyStr, SFX_STYLE_FAMILY_PARA );
+#endif
+#endif
+ }
+
+ pStrm->Seek( nOld );
+ return pFlyFmt;
+}
+
+BOOL SwWW8ImplReader::TxbxChainContainsRealText( USHORT nTxBxS,
+ long& rStartCp,
+ long& rEndCp )
+{
+ BOOL bErase, bContainsText;
+ InsertTxbxText( 0,0,nTxBxS,USHRT_MAX,0,0,0, bErase,
+ &bContainsText,
+ &rStartCp,
+ &rEndCp );
+ return bContainsText;
+}
+
+
+// TextBoxes only for Ver67 !!
+void SwWW8ImplReader::ReadTxtBox( WW8_DPHEAD* pHd, WW8_DO* pDo )
+{
+ BOOL bDummy;
+ WW8_DP_TXTBOX aTxtB;
+
+ if( !ReadGrafStart( (void*)&aTxtB, sizeof( aTxtB ), pHd, pDo ) )
+ return;
+
+ Point aP0( (INT16)SVBT16ToShort( pHd->xa ) + nDrawXOfs2,
+ (INT16)SVBT16ToShort( pHd->ya ) + nDrawYOfs2 );
+ Point aP1( aP0 );
+ aP1.X() += (INT16)SVBT16ToShort( pHd->dxa );
+ aP1.Y() += (INT16)SVBT16ToShort( pHd->dya );
+
+ SdrTextObj* pObj = new SdrRectObj( OBJ_TEXT, Rectangle( aP0, aP1 ) );
+ Size aSize( (INT16)SVBT16ToShort( pHd->dxa ) ,
+ (INT16)SVBT16ToShort( pHd->dya ) );
+
+ InsertTxbxText(pObj, &aSize, 0, 0, 0, 0, FALSE, bDummy );
+
+ InsertObj( pObj, SVBT16ToShort( pDo->dhgt ) );
+
+ SfxAllItemSet aSet( pDrawModel->GetItemPool() );
+
+ SetStdAttr( aSet, aTxtB.aLnt, aTxtB.aShd );
+ SetFill( aSet, aTxtB.aFill );
+
+ aSet.Put(SdrTextFitToSizeTypeItem( SDRTEXTFIT_NONE ));
+ aSet.Put( SdrTextAutoGrowWidthItem( FALSE ) );
+ aSet.Put( SdrTextAutoGrowHeightItem( FALSE ) );
+ aSet.Put( SdrTextLeftDistItem( MIN_BORDER_DIST*2 ) );
+ aSet.Put( SdrTextRightDistItem( MIN_BORDER_DIST*2 ) );
+ aSet.Put( SdrTextUpperDistItem( MIN_BORDER_DIST ) );
+ aSet.Put( SdrTextLowerDistItem( MIN_BORDER_DIST ) );
+
+ pObj->SetAttributes( aSet, FALSE );
+}
+
+
+void SwWW8ImplReader::ReadCaptionBox( WW8_DPHEAD* pHd, WW8_DO* pDo )
+{
+ static SdrCaptionType aCaptA[] = { SDRCAPT_TYPE1, SDRCAPT_TYPE2,
+ SDRCAPT_TYPE3, SDRCAPT_TYPE4 };
+
+ WW8_DP_CALLOUT_TXTBOX aCallB;
+
+ if( !ReadGrafStart( (void*)&aCallB, sizeof( aCallB ), pHd, pDo ) )
+ return;
+
+ UINT16 nCount = SVBT16ToShort( aCallB.dpPolyLine.aBits1 ) >> 1 & 0x7fff;
+ SVBT16 *pP = new SVBT16[nCount * 2];
+ pStrm->Read( pP, nCount * 4 ); // Punkte einlesen
+ BYTE nTyp = (BYTE)nCount - 1;
+ if( nTyp == 1 && SVBT16ToShort( pP[0] ) == SVBT16ToShort( pP[2] ) )
+ nTyp = 0;
+
+ Point aP0( (INT16)SVBT16ToShort( pHd->xa ) +
+ (INT16)SVBT16ToShort( aCallB.dpheadTxbx.xa ) + nDrawXOfs2,
+ (INT16)SVBT16ToShort( pHd->ya )
+ + (INT16)SVBT16ToShort( aCallB.dpheadTxbx.ya ) + nDrawYOfs2 );
+ Point aP1( aP0 );
+ aP1.X() += (INT16)SVBT16ToShort( aCallB.dpheadTxbx.dxa );
+ aP1.Y() += (INT16)SVBT16ToShort( aCallB.dpheadTxbx.dya );
+ Point aP2( (INT16)SVBT16ToShort( pHd->xa )
+ + (INT16)SVBT16ToShort( aCallB.dpheadPolyLine.xa )
+ + nDrawXOfs2 + (INT16)SVBT16ToShort( pP[0] ),
+ (INT16)SVBT16ToShort( pHd->ya )
+ + (INT16)SVBT16ToShort( aCallB.dpheadPolyLine.ya )
+ + nDrawYOfs2 + (INT16)SVBT16ToShort( pP[1] ) );
+ delete[]( pP );
+
+ SdrCaptionObj* pObj = new SdrCaptionObj( Rectangle( aP0, aP1 ), aP2 );
+ Size aSize( (INT16)SVBT16ToShort( aCallB.dpheadTxbx.dxa ),
+ (INT16)SVBT16ToShort( aCallB.dpheadTxbx.dya ) );
+ BOOL bEraseThisObject;
+
+ InsertTxbxText(pObj, &aSize, 0, 0, 0, 0, FALSE, bEraseThisObject );
+
+ InsertObj( pObj, SVBT16ToShort( pDo->dhgt ) );
+
+ SfxAllItemSet aSet( pDrawModel->GetItemPool() );
+
+ if( SVBT16ToShort( aCallB.dptxbx.aLnt.lnps ) != 5 ) // Umrandung sichtbar ?
+ SetStdAttr( aSet, aCallB.dptxbx.aLnt, aCallB.dptxbx.aShd );
+ else // nein -> Nimm Linie
+ SetStdAttr( aSet, aCallB.dpPolyLine.aLnt, aCallB.dptxbx.aShd );
+ SetFill( aSet, aCallB.dptxbx.aFill );
+ aSet.Put( SdrCaptionTypeItem( aCaptA[nTyp] ) );
+
+ pObj->SetAttributes( aSet, FALSE );
+}
+
+
+void SwWW8ImplReader::ReadGroup( WW8_DPHEAD* pHd, WW8_DO* pDo )
+{
+ INT16 nGrouped;
+
+ if( !ReadGrafStart( (void*)&nGrouped, sizeof( nGrouped ), pHd, pDo ) )
+ return;
+
+#ifdef __BIGENDIAN
+ nGrouped = (INT16)SWAPSHORT( nGrouped );
+#endif
+
+ nDrawXOfs += (INT16)SVBT16ToShort( pHd->xa );
+ nDrawYOfs += (INT16)SVBT16ToShort( pHd->ya );
+
+ SdrObject* pObj = new SdrObjGroup;
+
+ InsertObj( pObj, SVBT16ToShort( pDo->dhgt ) );
+
+ SdrObjList* pOldGroup = pDrawGroup;
+ pDrawGroup = pObj->GetSubList();
+
+ short nLeft = (INT16)SVBT16ToShort( pHd->cb ) - sizeof( WW8_DPHEAD );
+ for( int i = 0; i < nGrouped; i++ )
+ ReadGrafPrimitive( nLeft, pDo );
+
+ pDrawGroup = pOldGroup;
+ nDrawXOfs -= (INT16)SVBT16ToShort( pHd->xa );
+ nDrawYOfs -= (INT16)SVBT16ToShort( pHd->ya );
+}
+
+void SwWW8ImplReader::ReadGrafPrimitive( short& rLeft, WW8_DO* pDo )
+{
+ WW8_DPHEAD aHd; // Lese Draw-Primitive-Header
+ pStrm->Read( &aHd, sizeof( WW8_DPHEAD ) );
+
+ if( rLeft >= (INT16)SVBT16ToShort( aHd.cb ) ) // Vorsichtsmassmahme
+ {
+ switch( (INT16)SVBT16ToShort( aHd.dpk ) & 0xff )
+ {
+ case 0: ReadGroup( &aHd, pDo );
+ break;
+ case 1: ReadLine( &aHd, pDo );
+ break;
+ case 2: ReadTxtBox( &aHd, pDo );
+ break;
+ case 3: ReadRect( &aHd, pDo );
+ break;
+ case 4: ReadElipse( &aHd, pDo );
+ break;
+ case 5: ReadArc( &aHd, pDo );
+ break;
+ case 6: ReadPolyLine( &aHd, pDo );
+ break;
+ case 7: ReadCaptionBox( &aHd, pDo );
+ break;
+ default: // unbekannt
+ pStrm->SeekRel( (INT16)SVBT16ToShort( aHd.cb )
+ - sizeof( WW8_DPHEAD ) );
+ break;
+ }
+ }
+ else
+ {
+ ASSERT( !this, "+Grafik-Overlap" );
+ }
+ rLeft -= (INT16)SVBT16ToShort( aHd.cb );
+}
+
+void SwWW8ImplReader::ReadGrafLayer1( WW8PLCFspecial* pPF, long nGrafAnchorCp )
+{
+ pPF->SeekPos( nGrafAnchorCp );
+ long nStartFc;
+ void* pF0;
+ if( !pPF->Get( nStartFc, pF0 ) )
+ {
+ ASSERT( !this, "+Wo ist die Grafik (2) ?" );
+ return;
+ }
+ WW8_FDOA* pF = (WW8_FDOA*)pF0;
+ if( !SVBT32ToLong( pF->fc ) )
+ {
+ ASSERT( !this, "+Wo ist die Grafik (3) ?" );
+ return;
+ }
+ WW8_DO aDo;
+ pStrm->Seek( SVBT32ToLong( pF->fc ) ); // Lese Draw-Header
+ pStrm->Read( &aDo, sizeof( WW8_DO ) );
+
+ short nLeft = SVBT16ToShort( aDo.cb ) - sizeof( WW8_DO );
+ while( nLeft > sizeof( WW8_DPHEAD ) )
+ {
+ ReadGrafPrimitive( nLeft, &aDo );
+ }
+}
+
+BOOL SwWW8ImplReader::MatchSdrBoxIntoFlyBoxItem(const Color& rLineColor,
+ MSO_LineStyle eLineStyle,
+ USHORT nLineWidth,
+ SvxBoxItem& rBox )
+{ // Deklarationen gemaess BOXITEM.HXX
+ WW8_DECL_LINETAB_ARRAY
+
+ BOOL bRet = FALSE;
+ USHORT nIdx = USHRT_MAX;
+
+ if( nLineWidth )
+ {
+ /*
+ Beachte: im Gegensatz zu den Winword-ueblichen Tabellen- und
+ Rahmen-Randbreiten-Angaben, bei denen jeweils aus der Staerke
+ *einer* Linie die Gesamt-Randbreite zu errechnen ist,
+ liegen die aus dem ESCHER stammenden Daten bereits als
+ Gesamt-Breite [twips] vor!
+
+ Der Winword default ist 15 tw. Wir nehmen hierfuer unsere 20 tw Linie.
+ ( 0.75 pt uns 1.0 pt sehen sich auf dem Ausdruck naemlich
+ aehnlicher als etwas 0.75 pt und unsere 0.05 pt Haarlinie. )
+ Die Haarlinie setzen wir nur bei Winword-Staerken bis zu
+ maximal 0.5 pt ein.
+ */
+ switch( eLineStyle )
+ {
+ // zuerst die Einzel-Linien
+ case mso_lineSimple: if( nLineWidth < 11) nIdx = 0;// 1 Twip bei uns
+ else if( nLineWidth < 46) nIdx = 1;// 20 Twips
+ else if( nLineWidth < 66) nIdx = 2;// 50
+ else if( nLineWidth < 91) nIdx = 3;// 80
+ else if( nLineWidth <126) nIdx = 4;// 100
+ // Pfusch: fuer die ganz dicken Linien muessen
+ // wir doppelte Linien malen, weil unsere
+ // Einfach-Linie nicht dicker als 5 Punkt wird
+ else if( nLineWidth <166) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+2;// 150
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+5;// 180
+ break;
+ // dann die Doppel-Linien, fuer die wir feine Entsprechungen haben :-)))
+ case mso_lineDouble: if( nLineWidth < 46) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 0;// 22 Twips bei uns
+ else if( nLineWidth < 106) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 1;// 60
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 2;// 150
+ break;
+ case mso_lineThickThin: if( nLineWidth < 87) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 8;// 71 Twips bei uns
+ else if( nLineWidth < 117) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 9;// 101
+ else if( nLineWidth < 166) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+10;// 131
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 5;// 180
+ break;
+ case mso_lineThinThick: if( nLineWidth < 137) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 4;// 90 Twips bei uns
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 6;// 180
+ break;
+ // zu guter Letzt die Dreifach-Linien, an deren Stelle wir eine Doppel-Linie setzen
+ case mso_lineTriple: if( nLineWidth < 46) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 0;// 22 Twips bei uns
+ else if( nLineWidth < 106) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 1;// 60
+ else if( nLineWidth < 166) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 2;// 150
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 5;// 180
+ break;
+ // no line style is set
+ case (MSO_LineStyle)USHRT_MAX:
+ break;
+ // erroneously not implemented line style is set
+ default: ASSERT( !this, "eLineStyle is not (yet) implemented!" );
+ }
+ }
+
+ if( USHRT_MAX != nIdx )
+ {
+ SvxBorderLine aLine;
+ aLine.SetColor( rLineColor );
+
+ const WW8_BordersSO& rBorders = nLineTabVer8[ nIdx ];
+ aLine.SetOutWidth( rBorders.Out );
+ aLine.SetInWidth ( rBorders.In );
+ aLine.SetDistance( rBorders.Dist );
+
+ for(USHORT nLine = 0; nLine < 4; ++nLine)
+ rBox.SetLine(new SvxBorderLine( aLine ), nLine);
+
+ bRet = TRUE;
+ }
+ return bRet;
+}
+
+
+#define WW8ITEMVALUE(ItemSet,Id,Cast) ((const Cast&)(ItemSet).Get(Id)).GetValue()
+
+void SwWW8ImplReader::MatchSdrItemsIntoFlySet( SdrObject* pSdrObj,
+ SfxItemSet& rFlySet,
+ MSO_LineStyle eLineStyle,
+ Rectangle& rInnerDist,
+ BOOL bFixSize )
+{ /*
+ am Rahmen zu setzende Frame-Attribute
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ SwFmtFrmSize falls noch nicht gesetzt, hier setzen
+ SvxLRSpaceItem hier setzen
+ SvxULSpaceItem hier setzen
+ SvxOpaqueItem (Derzeit bei Rahmen nicht moeglich! khz 10.2.1999)
+ SwFmtSurround bereits gesetzt
+ SwFmtVertOrient bereits gesetzt
+ SwFmtHoriOrient bereits gesetzt
+ SwFmtAnchor bereits gesetzt
+ SvxBoxItem hier setzen
+ SvxBrushItem hier setzen
+ SvxShadowItem hier setzen
+ */
+
+ // 1. GrafikObjekt des Docs?
+ if( !pDrawModel )
+ GrafikCtor();
+
+
+ // im Sdr-Objekt eingestellten Attribute greifen
+ SfxItemSet aOldSet(pDrawModel->GetItemPool());
+ pSdrObj->TakeAttributes( aOldSet, FALSE, FALSE );
+
+ BOOL bIsAAttrObj = pSdrObj->ISA(SdrAttrObj);
+ const XLineAttrSetItem* pLineAttrSetItem
+ = bIsAAttrObj ? ((SdrAttrObj*)pSdrObj)->GetLineAttrSetItem() : 0;
+ const XFillAttrSetItem* pFillAttrSetItem
+ = bIsAAttrObj ? ((SdrAttrObj*)pSdrObj)->GetFillAttrSetItem() : 0;
+
+
+
+ // einige Items koennen direkt so uebernommen werden
+ const USHORT nDirectMatch = 2;
+ static RES_FRMATR __READONLY_DATA aDirectMatch[ nDirectMatch ] =
+ {
+ RES_LR_SPACE, // Aussenabstand links/rechts: SvxLRSpaceItem
+ RES_UL_SPACE // Aussenabstand Oben/unten: SvxULSpaceItem
+ };
+ const SfxPoolItem* pPoolItem;
+ for(USHORT nItem = 0; nItem < nDirectMatch; ++nItem)
+ if( SFX_ITEM_SET == aOldSet.GetItemState( aDirectMatch[ nItem ],
+ FALSE,
+ &pPoolItem) )
+ {
+ rFlySet.Put( *pPoolItem );
+ }
+
+
+ // jetzt die Umrandung berechnen und die Box bauen:
+ // Das Mass wird fuer die Rahmen-GROESSE benoetigt!
+ SvxBoxItem aBox;
+ // dashed oder solid wird zu solid
+ USHORT nLineWidth = 0;
+
+ // check if LineStyle is *really* set!
+ const SfxPoolItem* pItem;
+
+ if( pLineAttrSetItem )
+ {
+ SfxItemState eState = pLineAttrSetItem->GetItemSet().GetItemState(
+ XATTR_LINESTYLE,
+ TRUE, &pItem );
+ if( eState == SFX_ITEM_SET )
+ {
+ // Now, that we know there is a line style we will make use the
+ // parameter given to us when calling the method... :-)
+ /*
+ const XLineStyle eLineStyle =
+ ((const XLineStyleItem*)pItem)->GetValue();
+ if( XLINE_NONE != eLineStyle )
+
+ {
+ */
+ const Color aLineColor
+ = WW8ITEMVALUE( pLineAttrSetItem->GetItemSet(),
+ XATTR_LINECOLOR,
+ XLineColorItem );
+
+ nLineWidth
+ = (USHORT)(WW8ITEMVALUE( pLineAttrSetItem->GetItemSet(),
+ XATTR_LINEWIDTH, XLineWidthItem ));
+
+ if( !nLineWidth )
+ nLineWidth = 15; // WW-default: 0.75 pt
+
+ MatchSdrBoxIntoFlyBoxItem( aLineColor, eLineStyle, nLineWidth, aBox);
+ //}
+ }
+ }
+
+ // set distances from box's border to text contained within the box
+ if( 0 < rInnerDist.Left() )
+ aBox.SetDistance( (USHORT)rInnerDist.Left(), BOX_LINE_LEFT );
+ if( 0 < rInnerDist.Top() )
+ aBox.SetDistance( (USHORT)rInnerDist.Top(), BOX_LINE_TOP );
+ if( 0 < rInnerDist.Right() )
+ aBox.SetDistance( (USHORT)rInnerDist.Right(), BOX_LINE_RIGHT );
+ if( 0 < rInnerDist.Bottom() )
+ aBox.SetDistance( (USHORT)rInnerDist.Bottom(), BOX_LINE_BOTTOM );
+
+ // Groesse: SwFmtFrmSize
+ if( SFX_ITEM_SET != rFlySet.GetItemState(RES_FRM_SIZE, FALSE) )
+ {
+ const Rectangle& rSnapRect = pSdrObj->GetSnapRect();
+ // ggfs. Breite und Position des Rahmens anpassen:
+ // Der beschreibbare Innenraum soll trotz breitem Rand
+ // gleich gross bleiben.
+ long nWidth = rSnapRect.GetWidth() + 2*nLineWidth;
+ long nHeight = rSnapRect.GetHeight() + 2*nLineWidth;
+ rFlySet.Put( SwFmtFrmSize(bFixSize ? ATT_FIX_SIZE : ATT_MIN_SIZE,
+ rSnapRect.GetWidth() + 2*nLineWidth,
+ rSnapRect.GetHeight() + 2*nLineWidth) );
+ }
+
+ /*
+ Traurig: das SvxOpaqueItem macht bei Rahmen etwas ganz anderes,
+ als in /svx/inc/opaqitem.hxx angegeben:
+
+ Statt den Rahmen (un)durchsichtig zu machen, bewirkt es, dass er
+ einfach bloss in einen anderen Layer (Hell/Heaven) gestellt wird.
+ Fuer unsere Zwecke ist es also nicht zu gebrauchen.
+
+ Da auch das Transparent-Flag am SvxBrushItem wirkungslos ist,
+ koennen wir das WinWord-Attribut "Halbtransparent" leider nicht
+ umsetzen.
+
+ :-((
+ */
+ // Durchsichtigkeit: SvxOpaqueItem
+
+ // INT16 nFillTransparence
+ // = WW8ITEMVALUE(aOldSet, XATTR_FILLTRANSPARENCE, XFillTransparenceItem);
+ // if( 0x032 <= nFillTransparence )
+ // rFlySet.Put( SvxOpaqueItem(RES_OPAQUE, FALSE) );
+ //
+
+ // jetzt die Umrandung setzen
+ rFlySet.Put( aBox );
+
+ // Schattenwurf der Box: SvxShadowItem
+ if( WW8ITEMVALUE(aOldSet, SDRATTR_SHADOW, SdrShadowItem) )
+ {
+ SvxShadowItem aShadow;
+
+ const Color aShdColor = WW8ITEMVALUE(aOldSet, SDRATTR_SHADOWCOLOR,
+ SdrShadowColorItem);
+
+ const INT32 nShdDistX = WW8ITEMVALUE(aOldSet, SDRATTR_SHADOWXDIST,
+ SdrShadowXDistItem);
+ const INT32 nShdDistY = WW8ITEMVALUE(aOldSet, SDRATTR_SHADOWYDIST,
+ SdrShadowYDistItem);
+
+ const USHORT nShdTrans= WW8ITEMVALUE(aOldSet, SDRATTR_SHADOWTRANSPARENCE,
+ SdrShadowTransparenceItem);
+ // diese gibt es im Writer nicht :-(
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ //
+ // SfxVoidItem( SDRATTR_SHADOW3D )
+ // SfxVoidItem( SDRATTR_SHADOWPERSP )
+
+ aShadow.SetColor( Color( aShdColor ) );
+
+ aShadow.SetWidth( (Abs( nShdDistX ) + Abs( nShdDistY )) / 2 );
+
+ SvxShadowLocation eShdPosi;
+ if( 0 <= nShdDistX )
+ {
+ if( 0 <= nShdDistY )
+ eShdPosi = SVX_SHADOW_BOTTOMRIGHT;
+ else
+ eShdPosi = SVX_SHADOW_TOPRIGHT;
+ }
+ else
+ {
+ if( 0 <= nShdDistY )
+ eShdPosi = SVX_SHADOW_BOTTOMLEFT;
+ else
+ eShdPosi = SVX_SHADOW_TOPLEFT;
+ }
+ aShadow.SetLocation( eShdPosi );
+
+ rFlySet.Put( aShadow );
+ }
+
+ // Hintergrund: SvxBrushItem
+ if( pFillAttrSetItem )
+ {
+ SfxItemState eState = pFillAttrSetItem->GetItemSet().GetItemState(
+ XATTR_FILLSTYLE,
+ TRUE, &pItem );
+ if( eState == SFX_ITEM_SET )
+ {
+
+ const XFillStyle eFillStyle =
+ ((const XFillStyleItem*)pItem)->GetValue();
+
+ if(eFillStyle != XFILL_NONE)
+ {
+ SvxBrushItem aBrushItem;
+ BOOL bBrushItemOk = FALSE;
+
+ switch( eFillStyle )
+ {
+ case XFILL_NONE :
+ {
+ aBrushItem.SetColor( Color( COL_TRANSPARENT ) );
+ bBrushItemOk = TRUE;
+ }break;
+ case XFILL_SOLID :
+ {
+ const Color aColor =
+ WW8ITEMVALUE( pFillAttrSetItem->GetItemSet(),
+ XATTR_FILLCOLOR,
+ XFillColorItem );
+ aBrushItem.SetColor( aColor );
+ bBrushItemOk = TRUE;
+ }break;
+ case XFILL_GRADIENT :
+ break;
+ case XFILL_HATCH :
+ break;
+ case XFILL_BITMAP :
+ {
+ const Graphic aGraphic(
+ WW8ITEMVALUE( pFillAttrSetItem->GetItemSet(),
+ XATTR_FILLBITMAP,
+ XFillBitmapItem ).GetBitmap() );
+
+ BOOL bTile =
+ WW8ITEMVALUE( pFillAttrSetItem->GetItemSet(),
+ XATTR_FILLBMP_TILE,
+ SfxBoolItem );
+ aBrushItem.SetGraphic( aGraphic );
+ aBrushItem.SetGraphicPos( bTile
+ ? GPOS_TILED
+ : GPOS_AREA );
+ bBrushItemOk = TRUE;
+ }break;
+ }
+ if( bBrushItemOk )
+ rFlySet.Put( aBrushItem, RES_BACKGROUND );
+ }
+ }
+ }
+
+}
+
+
+void SwWW8ImplReader::MatchWrapDistancesIntoFlyFmt( SvxMSDffImportRec* pRecord,
+ SwFrmFmt* pFlyFmt )
+{
+ if( pRecord->nDxWrapDistLeft || pRecord->nDxWrapDistRight )
+ {
+ SvxLRSpaceItem aLR;
+ aLR.SetLeft( (USHORT)pRecord->nDxWrapDistLeft );
+ aLR.SetRight( (USHORT)pRecord->nDxWrapDistRight );
+ pFlyFmt->SetAttr( aLR );
+ }
+ if( pRecord->nDyWrapDistTop || pRecord->nDyWrapDistBottom )
+ {
+ SvxULSpaceItem aUL;
+ aUL.SetUpper( (USHORT)pRecord->nDyWrapDistTop );
+ aUL.SetLower( (USHORT)pRecord->nDyWrapDistBottom );
+ pFlyFmt->SetAttr( aUL );
+ }
+}
+
+
+void SwWW8ImplReader::SetCropAtGrfNode( SvxMSDffImportRec* pRecord,
+ SwFrmFmt* pFlyFmt,
+ WW8_FSPA* pF )
+{
+ if( pRecord->nCropFromTop ||
+ pRecord->nCropFromBottom ||
+ pRecord->nCropFromLeft ||
+ pRecord->nCropFromRight )
+ {
+
+ const SwNodeIndex* pIdx = pFlyFmt->GetCntnt( FALSE ).GetCntntIdx();
+ SwGrfNode* pGrfNd;
+ if( pIdx && 0 != (pGrfNd = rDoc.GetNodes()[ pIdx->GetIndex()
+ + 1 ]->GetGrfNode() ))
+ {
+ Size aSz( pGrfNd->GetTwipSize() );
+ ULONG rHeight = aSz.Height();
+ ULONG rWidth = aSz.Width();
+ if( !rWidth )
+ rWidth = pF->nXaRight - pF->nXaLeft;
+ else if( !rHeight )
+ rHeight = pF->nYaBottom - pF->nYaTop;
+#if SUPD>601
+
+ SwCropGrf aCrop; // Cropping is stored in 'fixed floats'
+ // 16.16 (it est fraction times total
+ if( pRecord->nCropFromTop ) // image width or height resp.)
+ aCrop.SetTop(
+ ( ( (pRecord->nCropFromTop >> 16 ) * rHeight )
+ + (((pRecord->nCropFromTop & 0xffff) * rHeight ) >> 16) ));
+ if( pRecord->nCropFromBottom )
+ aCrop.SetBottom(
+ ( ( (pRecord->nCropFromBottom >> 16 ) * rHeight )
+ + (((pRecord->nCropFromBottom & 0xffff) * rHeight ) >> 16) ));
+ if( pRecord->nCropFromLeft )
+ aCrop.SetLeft(
+ ( ( (pRecord->nCropFromLeft >> 16 ) * rWidth )
+ + (((pRecord->nCropFromLeft & 0xffff) * rWidth ) >> 16) ));
+ if( pRecord->nCropFromRight )
+ aCrop.SetRight(
+ ( ( (pRecord->nCropFromRight >> 16 ) * rWidth )
+ + (((pRecord->nCropFromRight & 0xffff) * rWidth ) >> 16) ));
+
+ pGrfNd->SetAttr( aCrop );
+#endif
+ }
+ }
+}
+
+
+
+SdrObject* SwWW8ImplReader::CreateContactObject( SwFlyFrmFmt* pFlyFmt )
+{
+ if( pFlyFmt )
+ {
+ SdrObject* pNewObject = pFlyFmt->FindSdrObject();
+ if( !pNewObject )
+ {
+ SwFlyDrawContact* pContactObject
+ = new SwFlyDrawContact( pFlyFmt, pDrawModel);
+ pNewObject = pContactObject->GetMaster();
+ }
+ return pNewObject;
+ }
+ return 0;
+}
+
+
+#pragma optimize("",off)
+SwFrmFmt* SwWW8ImplReader::Read_GrafLayer( long nGrafAnchorCp )
+{
+ SwFrmFmt* pRetFrmFmt = 0;
+ if( nIniFlags & WW8FL_NO_GRAFLAYER )
+ return pRetFrmFmt;
+
+ ::SetProgressState( nProgress, rDoc.GetDocShell() ); // Update
+
+ nDrawCpO = pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr + pWwFib->ccpMcr
+ + pWwFib->ccpAtn + pWwFib->ccpEdn;
+ if( pPlcxMan->GetManType() == MAN_HDFT ) nDrawCpO += pWwFib->ccpTxbx;
+
+ if( bVer67 )
+ {
+ if( bHdFtFtnEdn ) // kann der Writer z.Zt. leider nicht
+ return pRetFrmFmt;
+ // if( pFlyPara ) // sicherheitshalber
+ // return;
+ // if( bTable ) // sicherheitshalber
+ // return;
+
+ // if( bTable )
+ // return; // geht z.Zt. nicht
+
+
+ if( !pDrawModel ) // 1. GrafikObjekt des Docs
+ GrafikCtor();
+
+ WW8PLCFspecial* pPF = pPlcxMan->GetFdoa();
+ if( !pPF ){
+ ASSERT( !this, "+Wo ist die Grafik (1) ?" );
+ return pRetFrmFmt;
+ }
+ long nOldPos = pStrm->Tell();
+ if( !pDrawHeight ){ // 1. Aufruf
+ pDrawHeight = new SvShorts;
+ nDrawObjOfs = pDrawPg->GetObjCount();
+ }
+ nDrawXOfs = nDrawYOfs = 0;
+ pDrawFmt = rDoc.MakeDrawFrmFmt( WW8_ASCII2STR( "DrawObject" ),
+ rDoc.GetDfltFrmFmt() );
+ ReadGrafLayer1( pPF, nGrafAnchorCp );
+ pStrm->Seek( nOldPos );
+ }
+ else
+ {
+ WW8PLCFspecial* pPF = pPlcxMan->GetFdoa();
+ if( !pPF ){
+ ASSERT( !this, "+Wo ist die Grafik (1) ?" );
+ return pRetFrmFmt;
+ }
+ pPF->SeekPos( nGrafAnchorCp );
+
+ long nStartFc;
+ void* pF0;
+ if( !pPF->Get( nStartFc, pF0 ) ){
+ ASSERT( !this, "+Wo ist die Grafik (2) ?" );
+ return pRetFrmFmt;
+ }
+
+ WW8_FSPA_SHADOW* pFS = (WW8_FSPA_SHADOW*)pF0;
+ WW8_FSPA* pF;
+#ifdef __WW8_NEEDS_COPY
+ WW8_FSPA aFSFA;
+ pF = &aFSFA;
+ WW8FSPAShadowToReal( pFS, pF );
+#else
+ pF = (WW8_FSPA*)pFS;
+#endif // defined __WW8_NEEDS_COPY
+ if( !pF->nSpId )
+ {
+ ASSERT( !this, "+Wo ist die Grafik (3) ?" );
+ return pRetFrmFmt;
+ }
+
+ if( !pDrawModel )// 1. GrafikObjekt des Docs
+ GrafikCtor();
+
+ if( !pMSDffManager->GetModel() )
+ pMSDffManager->SetModel(pDrawModel, 1440);
+
+ SdrObject* pObject = 0;
+
+ Rectangle aRect(pF->nXaLeft, pF->nYaTop,
+ pF->nXaRight, pF->nYaBottom);
+ SvxMSDffImportData aData( aRect );
+
+ if( pMSDffManager->GetShape( pF->nSpId, pObject, aData )
+ && pObject )
+ {
+ const SdrObject* pOrgShapeObject = pObject;
+ SvxMSDffImportRec* pRecord;
+ BOOL bDone = FALSE;
+ SdrObject* pOurNewObject = 0;
+ BOOL bSetCrop = FALSE;
+ BOOL bOrgObjectWasReplace
+ = ( (SdrInventor == pObject->GetObjInventor())
+ && ( (UINT16( OBJ_GRAF ) == pObject->GetObjIdentifier())
+ || (UINT16( OBJ_OLE2 ) == pObject->GetObjIdentifier()) ) );
+
+ //FormControl Text, cmc
+ UINT32 nTextId =
+ pMSDffManager->GetPropertyValue(DFF_Prop_pictureId,0);
+ if (nTextId)
+ bOrgObjectWasReplace=TRUE;
+
+
+ // Umfluss-Modus ermitteln
+ SfxItemSet aFlySet( rDoc.GetAttrPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ SwSurround eSurround = SURROUND_PARALLEL;
+ BOOL bContour = FALSE;
+ switch( pF->nwr )
+ {
+ case 0: ; //0 like 2, but doesn't require absolute object
+ case 2: eSurround = SURROUND_PARALLEL; break; //2 wrap around absolute object
+ case 1: eSurround = SURROUND_NONE; break; //1 no text next to shape
+ case 3: eSurround = SURROUND_THROUGHT; break; //3 wrap as if no object present
+ case 4: ; //4 wrap tightly around object
+ case 5:
+ {
+ eSurround = SURROUND_PARALLEL; //5 wrap tightly, but allow holes
+
+ // ensure the object will be conterted
+ // into a Writer structure!
+ // the Writer doesn't support Contour on Sdr objects
+ if( bOrgObjectWasReplace )
+ bContour = TRUE;
+ }
+ break;
+ }
+ // bei Modus 2 oder 4 auch den Zusatzparameter beruecksichtigen
+ if( ( 2 == pF->nwr ) || ( 4 == pF->nwr ) )
+ {
+ switch( pF->nwrk )
+ {
+ case 0: eSurround = SURROUND_PARALLEL; break; //0 wrap both sides
+ case 1: eSurround = SURROUND_LEFT; break; //1 wrap only on left
+ case 2: eSurround = SURROUND_RIGHT; break; //2 wrap only on right
+ case 3: eSurround = SURROUND_IDEAL; break; //3 wrap only on largest side
+ }
+ }
+ SwFmtSurround aSur( eSurround );
+ aSur.SetContour( bContour );
+ aSur.SetOutside( TRUE ); // Winword kann nur Aussen-Konturen
+ aFlySet.Put( aSur );
+
+ if( bOrgObjectWasReplace )
+ {
+ long nWidthTw = pF->nXaRight -pF->nXaLeft;
+ if( 0>nWidthTw ) nWidthTw =0;
+ long nHeightTw = pF->nYaBottom - pF->nYaTop;
+ if( 0>nHeightTw) nHeightTw=0;
+
+ aFlySet.Put( SwFmtAnchor( FLY_AT_CNTNT ) );
+
+ if( nbxRelPageBorder == pF->nbx )
+ {
+ pF->nXaLeft -= nPgLeft;
+ if( bTable )
+ pF->nXaLeft -= GetTableLeft();
+ }
+ aFlySet.Put(
+ SwFmtHoriOrient( pF->nXaLeft, HORI_NONE, FRAME ) );
+ aFlySet.Put(
+ SwFmtVertOrient( pF->nYaTop, VERT_NONE, FRAME ) );
+
+ aFlySet.Put( SwFmtFrmSize( ATT_VAR_SIZE, nWidthTw, nHeightTw ));
+
+ pRecord = ( aData.HasRecords()
+ && (1 == aData.GetRecCount() ) )
+ ? aData.GetRecord( 0 ) : 0;
+
+ if( pRecord )
+ {
+ Rectangle aInnerDist( pRecord->nDxTextLeft,
+ pRecord->nDyTextTop,
+ pRecord->nDxTextRight,
+ pRecord->nDyTextBottom );
+
+ MatchSdrItemsIntoFlySet( pObject,
+ aFlySet,
+ pRecord->eLineStyle,
+ aInnerDist,
+ !pRecord->bLastBoxInChain );
+ }
+
+ XubString aObjectName( pObject->GetName() );
+ SwFrmFmt *pControl=NULL;
+ if( UINT16( OBJ_OLE2 ) == pObject->GetObjIdentifier() )
+ {
+ SvInPlaceObjectRef xIPRef(
+ ((SdrOle2Obj*)pObject)->GetObjRef() );
+
+ // kein GrafSet uebergeben, da nur fuer Cropping sinnvoll, was die
+ // UI derzeit (27.1.99) noch nicht kann khz.
+ pRetFrmFmt = rDoc.Insert( *pPaM, &xIPRef, &aFlySet );
+ }
+ else if (nTextId) //i.e. This is possibly a FormControl or graphic
+ {
+ UINT16 nTxBxS = (UINT16)(nTextId >> 16);
+ UINT16 nSequence = (UINT16)nTextId;
+ pRecord = aData.GetRecord(0);
+
+ SdrObject* pTrueObject
+ = ( bOrgObjectWasReplace
+ && (pOrgShapeObject == pRecord->pObj) )
+ ? pOurNewObject
+ : pRecord->pObj;
+
+ if( bOrgObjectWasReplace && pTrueObject )
+ {
+ if( pF->bBelowText )
+ pTrueObject->SetLayer( nDrawHell );
+ else
+ pTrueObject->SetLayer( nDrawHeaven );
+ }
+
+ if( pTrueObject == pRecord->pObj )
+ {
+ MatchWrapDistancesIntoFlyFmt( pRecord, pRetFrmFmt );
+ if( bSetCrop )
+ SetCropAtGrfNode( pRecord, pRetFrmFmt, pF );
+ }
+
+ SdrTextObj* pSdrTextObj =
+ PTR_CAST(SdrTextObj,pRecord->pObj);
+
+ if( pSdrTextObj )
+ {
+ Size aObjSize(
+ pSdrTextObj->GetSnapRect().GetWidth(),
+ pSdrTextObj->GetSnapRect().GetHeight());
+
+ BOOL bEraseThisObject=FALSE;
+ BOOL bOldFloatingCtrl=bFloatingCtrl;
+ bFloatingCtrl=TRUE;
+ pControl = InsertTxbxText(
+ pSdrTextObj,
+ &aObjSize,
+ nTxBxS,
+ nSequence,
+ nGrafAnchorCp,
+ pRetFrmFmt,
+ FALSE,
+ bEraseThisObject,
+ FALSE,0,0,
+ pRecord );
+
+ if ((pControl) && (RES_DRAWFRMFMT==pControl->Which()))
+ {
+ SdrObject *pObj = pControl->FindSdrObject();
+ if ((pObj) && (FmFormInventor == pObj->GetObjInventor()))
+ {
+ /*have a control*/
+ pControl->SetAttr(aFlySet.Get(RES_VERT_ORIENT));
+ pControl->SetAttr(aFlySet.Get(RES_HORI_ORIENT));
+ }
+ }
+ bFloatingCtrl=bOldFloatingCtrl;
+ bDone=TRUE;
+ }
+ }
+
+
+ if ((UINT16( OBJ_GRAF ) == pObject->GetObjIdentifier()) && (!pControl))
+ {
+ const Graphic& rGraph = ((SdrGrafObj*)pObject)->GetGraphic();
+ bSetCrop = TRUE;
+ BOOL bDone2 = FALSE;
+
+ if( ((SdrGrafObj*)pObject)->IsLinkedGraphic() )
+ {
+ String aGrfName(
+ INetURLObject::RelToAbs(
+ ((SdrGrafObj*)pObject)->GetFileName() ) );
+
+ BOOL bExist = FALSE;
+ INetURLObject aGrURL(URIHelper::SmartRelToAbs(aGrfName));
+ try
+ {
+ ::ucb::Content aTestContent(
+ aGrURL.GetMainURL(),
+ uno::Reference< XCommandEnvironment >());
+ bExist = aTestContent.isDocument();
+ }
+ catch(...){}
+
+
+ if( bExist
+ || (GRAPHIC_NONE == rGraph.GetType()))
+ {
+ pRetFrmFmt = rDoc.Insert( *pPaM,
+ aGrfName,
+ aEmptyStr,
+ 0, // Graphic*
+ &aFlySet,
+ 0 ); // SwFrmFmt*
+ bDone2 = TRUE;
+ }
+ }
+ if( !bDone2 )
+ pRetFrmFmt = rDoc.Insert( *pPaM,
+ aEmptyStr,
+ aEmptyStr,
+ &rGraph,
+ &aFlySet,
+ 0 ); // SwFrmFmt*
+ bDone = TRUE;
+ }
+
+
+ if( pRetFrmFmt )
+ {
+ if( pRecord )
+ {
+ MatchWrapDistancesIntoFlyFmt( pRecord, pRetFrmFmt );
+ if( bSetCrop ) SetCropAtGrfNode( pRecord, pRetFrmFmt, pF );
+ }
+ // mehrfaches Auftreten gleicher Grafik-Namen vermeiden
+ if( aObjectName.Len() )
+ {
+ String aName;
+ if( MakeUniqueGraphName( aName, aObjectName ))
+ pRetFrmFmt->SetName( aName );
+ }
+ }
+ // falls alles Ok, Zeiger auf neues Objekt ermitteln und
+ // Z-Order-Liste entsprechend korrigieren (oder Eintrag loeschen)
+ pOurNewObject = CreateContactObject( (SwFlyFrmFmt*)pRetFrmFmt );
+
+ // altes Objekt aus der Z-Order-Liste entfernen
+ pMSDffManager->RemoveFromShapeOrder( pObject );
+ // aus der Drawing-Page rausnehmen
+ if( pObject->GetPage() )
+ pDrawPg->RemoveObject( pObject->GetOrdNum() );
+
+ // und das Objekt loeschen
+ DELETEZ( pObject );
+ /*
+ Achtung: ab jetzt nur noch pOrgShapeObject abfragen!
+ */
+
+
+ // Kontakt-Objekt in die Z-Order-Liste und die Page aufnehmen
+ if( pOurNewObject )
+ {
+ if( !bHdFtFtnEdn )
+ pMSDffManager->StoreShapeOrder( pF->nSpId, 0, pOurNewObject, 0 );
+ // Das Kontakt-Objekt MUSS in die Draw-Page gesetzt werden,
+ // damit in SwWW8ImplReader::LoadDoc1() die Z-Order
+ // festgelegt werden kann !!!
+ pDrawPg->InsertObject( pOurNewObject );
+ }
+ }
+ else
+ {
+ // eingelesenes Objekt (kann eine ganze Gruppe sein)
+ // jetzt korrekt positionieren usw.
+ if( pF->bRcaSimple )
+ {
+ pF->nbx = nbxRelPageBorder;
+ pF->nby = nbyRelPageBorder;
+ }
+
+ RndStdIds eAnchor = FLY_AT_CNTNT; //FLY_PAGE
+ if( (nbyRelText != pF->nby) )
+ {
+ if( bIsHeader || bIsFooter)
+ {
+ if( bIsHeader && (nPgTop < pF->nYaTop))
+ pF->nYaTop -= nPgTop;
+ else
+ pF->nYaTop = 0;
+ pNode_FLY_AT_CNTNT = &pPaM->GetPoint()->nNode.GetNode();
+ }
+ else
+ eAnchor = FLY_PAGE;
+ }
+ SwFmtAnchor aAnchor( eAnchor );
+ aAnchor.SetAnchor( pPaM->GetPoint() );
+ aFlySet.Put( aAnchor );
+
+
+ /*
+ Hilfs-Attribute setzen, damit MA die Werte im Layout umrechnen kann
+ ( bugdoc:59640 )
+ */
+ static SwRelationOrient __READONLY_DATA aOrientTab[] = {
+ REL_PG_PRTAREA, // == nbxRelPgMargin
+ REL_PG_FRAME, // == nbxRelPageBorder
+ FRAME // == nbxRelText
+ };
+
+ if( 3 > pF->nby )
+ aFlySet.Put( SwFmtVertOrient( pF->nYaTop, VERT_NONE,
+ aOrientTab[ pF->nby ] ) );
+ if( 3 > pF->nbx )
+ aFlySet.Put( SwFmtHoriOrient( pF->nXaLeft, HORI_NONE,
+ aOrientTab[ pF->nbx ] ) );
+
+
+
+ if( !(nIniFlags1 & WW8FL_NO_FLY_FOR_TXBX) ) // Wer nicht will, der hat gewollt!
+ {
+ BOOL bTextThere = FALSE;
+ pRecord = ( aData.HasRecords()
+ && (1 == aData.GetRecCount() ) )
+ ? aData.GetRecord( 0 ) : 0;
+ long nStartCpFly;
+ long nEndCpFly;
+ if( pRecord && pRecord->bReplaceByFly )
+ {
+ // Pruefen, ob in dieser Textbox-Kette denn Text enthalten ist.
+ // ( Umwandeln einer leeren Kette in Rahmen waere Unsinn. )
+ //
+ bTextThere = TxbxChainContainsRealText( pRecord->aTextId.nTxBxS,
+ nStartCpFly,
+ nEndCpFly );
+ if( bTextThere )
+ {
+ // Der Text wird nicht in das SdrTextObj eingelesen!
+ // Stattdessen wird ein Rahmen eingefuegt und der Text
+ // von nStartCpFly bis nEndCpFy dort hinein gelesen.
+ //
+ // Vorteil: im Rahmen sind viel mehr Attribute moeglich
+ // als in der Edit-Enging, und es koennen
+ // auch Felder, OLEs oder Grafiken darin sein...
+
+ Rectangle aInnerDist( pRecord->nDxTextLeft,
+ pRecord->nDyTextTop,
+ pRecord->nDxTextRight,
+ pRecord->nDyTextBottom );
+ MatchSdrItemsIntoFlySet( pObject,
+ aFlySet,
+ pRecord->eLineStyle,
+ aInnerDist,
+ !pRecord->bLastBoxInChain );
+
+ pRetFrmFmt = rDoc.MakeFlySection( eAnchor, pPaM->GetPoint(), &aFlySet );
+
+ MatchWrapDistancesIntoFlyFmt( pRecord, pRetFrmFmt );
+
+ // falls alles Ok, Zeiger auf neues Objekt ermitteln und
+ // Z-Order-Liste entsprechend korrigieren (oder Eintrag loeschen)
+ pOurNewObject = CreateContactObject( (SwFlyFrmFmt*)pRetFrmFmt );
+
+ // altes Objekt aus der Z-Order-Liste entfernen
+ pMSDffManager->RemoveFromShapeOrder( pObject );
+
+ // und das Objekt loeschen
+ DELETEZ( pObject );
+ /*
+ Achtung: ab jetzt nur noch pOrgShapeObject abfragen!
+ */
+
+
+ if( pOurNewObject )
+ {
+ pMSDffManager->StoreShapeOrder(
+ pF->nSpId,
+ (((ULONG)pRecord->aTextId.nTxBxS) << 16)
+ + pRecord->aTextId.nSequence,
+ pOurNewObject,
+ (SwFlyFrmFmt*)pRetFrmFmt,
+ nActSectionNo
+ + bIsHeader ? 1 : 0
+ + bIsFooter ? 2 : 0 );
+ // Das Kontakt-Objekt MUSS in die Draw-Page gesetzt werden,
+ // damit in SwWW8ImplReader::LoadDoc1() die Z-Order
+ // festgelegt werden kann !!!
+ pDrawPg->InsertObject( pOurNewObject );
+ }
+
+ // Damit die Frames bei Einfuegen in existierendes Doc erzeugt werden,
+ // wird in fltshell.cxx beim Setzen des FltAnchor-Attributes
+ // pFlyFrm->MakeFrms() gerufen
+ if( FLY_IN_CNTNT != eAnchor )
+ pCtrlStck->NewAttr( *pPaM->GetPoint(), SwFltAnchor( pRetFrmFmt ) );
+
+ // Box-0 erhaelt den Text fuer die ganze Kette!
+ if( !pRecord->aTextId.nSequence )
+ {
+#if 0
+ // merke Pos im Haupttext
+ SwPosition aMainTextPos( *pPaM->GetPoint() );
+
+ // schliesse Attribute auf dem End-Stack
+ pEndStck->SetAttr( *pPaM->GetPoint(), 0, FALSE );
+
+ SwWW8FltControlStack* pOldStck = pCtrlStck;
+ pCtrlStck = new SwWW8FltControlStack( &rDoc, nFieldFlags );
+
+ // rette die Attributverwaltung
+ WW8PLCFxSaveAll aPLCFxSave;
+ pPlcxMan->SaveAllPLCFx( &aPLCFxSave );
+ WW8PLCFMan* pOldPlcxMan = pPlcxMan;
+
+#endif
+ // rette Flags u.ae. und setze sie zurueck
+ WW8ReaderSave aSave( this );
+ // setze Pam in den FlyFrame
+ const SwFmtCntnt& rCntnt = pRetFrmFmt->GetCntnt();
+ ASSERT( rCntnt.GetCntntIdx(), "Kein Inhalt vorbereitet." );
+ pPaM->GetPoint()->nNode = rCntnt.GetCntntIdx()->GetIndex() + 1;
+ pPaM->GetPoint()->nContent.Assign( pPaM->GetCntntNode(), 0 );
+
+
+ // lies den Text ein
+ bTxbxFlySection = TRUE;
+ ReadText( nStartCpFly,
+ (nEndCpFly-nStartCpFly),
+ MAN_MAINTEXT == pPlcxMan->GetManType()
+ ? MAN_TXBX
+ : MAN_TXBX_HDFT );
+
+#if 0
+ // schliesse alle Attribute, da sonst Attribute
+ // entstehen koennen, die aus dem Fly rausragen
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), 0, FALSE );
+ pEndStck->SetAttr( *pPaM->GetPoint(), 0, FALSE );
+
+ // stelle die Writer-Flags wieder her
+ aSave.Restore( this );
+ DeleteCtrlStk();
+ pCtrlStck = pOldStck;
+
+ *pPaM->GetPoint() = aMainTextPos;
+
+ // restauriere die Attributverwaltung
+ pPlcxMan = pOldPlcxMan;
+ pPlcxMan->RestoreAllPLCFx( &aPLCFxSave );
+#else
+ aSave.Restore( this );
+#endif
+ }
+ bDone = TRUE;
+ }
+ }
+ }
+ if( !bDone )
+ {
+ if( pF->bBelowText )
+ pObject->SetLayer( nDrawHell );
+ else
+ pObject->SetLayer( nDrawHeaven );
+
+ pDrawPg->InsertObject( pObject );
+ pRetFrmFmt = rDoc.Insert( *pPaM, *pObject, &aFlySet );
+ }
+ }
+
+
+ /*
+ Innen- und Aussen-Rand-Abstaende einstellen
+ und ggfs. Text in enthaltene Textbox(en) einlesen
+ */
+ if( !bDone && aData.HasRecords() )
+ {
+ USHORT nRecCount = aData.GetRecCount();
+ for(USHORT nTxbx=0; nTxbx < nRecCount; nTxbx++ )
+ {
+ pRecord = aData.GetRecord( nTxbx );
+ if( pRecord && pRecord->pObj )
+ {
+ SdrObject* pTrueObject
+ = ( bOrgObjectWasReplace
+ && (pOrgShapeObject == pRecord->pObj) )
+ ? pOurNewObject
+ : pRecord->pObj;
+
+ if( bOrgObjectWasReplace && pTrueObject )
+ {
+ if( pF->bBelowText )
+ pTrueObject->SetLayer( nDrawHell );
+ else
+ pTrueObject->SetLayer( nDrawHeaven );
+ }
+
+ if( pTrueObject == pRecord->pObj )
+ {
+ MatchWrapDistancesIntoFlyFmt( pRecord, pRetFrmFmt );
+ if( bSetCrop ) SetCropAtGrfNode( pRecord, pRetFrmFmt, pF );
+
+ /*
+ if( pRecord->pClientDataBuffer )
+ {
+ //Auswertung des Client Data Puffers
+
+ }
+ */
+ }
+
+ if( pRecord->aTextId.nTxBxS && !bOrgObjectWasReplace )
+ {
+ SdrTextObj* pSdrTextObj;
+ // Pruefen, ob Gruppenobjekt (z.B. zwei Klammern) vorliegt
+ SdrObjGroup* pThisGroup
+ = PTR_CAST(SdrObjGroup, pRecord->pObj);
+ //if(pRecord->pObj->ISA(SdrObjGroup))
+ if( pThisGroup )
+ {
+ // Gruppenobjekte haben keinen Text. Fuege ein Textobjekt in die
+ // Gruppe ein, um den Text zu halten.
+ pSdrTextObj =
+ new SdrRectObj(OBJ_TEXT, pThisGroup->GetBoundRect());
+
+ SfxItemSet aSet(pDrawModel->GetItemPool());
+ aSet.Put(XFillStyleItem(XFILL_NONE));
+ aSet.Put(XLineStyleItem(XLINE_NONE));
+ //SdrFitToSizeType eFTS = SDRTEXTFIT_PROPORTIONAL;
+ /*
+ aSet.Put(SdrTextVertAdjustItem( SDRTEXTVERTADJUST_TOP ));
+ aSet.Put(SdrTextHorzAdjustItem( SDRTEXTHORZADJUST_LEFT ));
+ */
+ aSet.Put(SdrTextFitToSizeTypeItem( SDRTEXTFIT_NONE ));
+ aSet.Put(SdrTextAutoGrowHeightItem( FALSE ));
+ aSet.Put(SdrTextAutoGrowWidthItem( FALSE ));
+ pSdrTextObj->NbcSetAttributes(aSet, FALSE);
+
+ long nAngle = pRecord->nTextRotationAngle;
+ if( nAngle )
+ {
+ double a = nAngle*nPi180;
+ pSdrTextObj->NbcRotate( pSdrTextObj->GetBoundRect().Center(),
+ nAngle, sin(a), cos(a) );
+ }
+
+ pSdrTextObj->NbcSetLayer( pThisGroup->GetLayer() );
+ pThisGroup->GetSubList()->NbcInsertObject( pSdrTextObj );
+ }
+ else
+ {
+ pSdrTextObj = PTR_CAST(SdrTextObj, pRecord->pObj);
+ /*
+ Die Frage: was tun, wenn hier FALSE hereuskommt,
+ z.B. bei 3D-Objekten (nicht von SdrTextObj abgeleitet)
+
+ Wunsch: neues SdrTextObj hinzufuegen, das mit dem alten
+ in einer neu zu schaffenden Gruppe geklammert wird.
+
+ Implementierung: nicht zur 5.1 (jp und khz am 11.02.1999)
+
+ if( !pSdrTextObj )
+ {
+ ...
+ }
+ */
+ }
+
+ if( pSdrTextObj )
+ {
+ Size aObjSize(
+ pSdrTextObj->GetSnapRect().GetWidth(),
+ pSdrTextObj->GetSnapRect().GetHeight());
+
+ // Objekt ist Bestandteil einer Gruppe?
+ SdrObject* pGroupObject = pSdrTextObj->GetUpGroup();
+
+ UINT32 nOrdNum = pSdrTextObj->GetOrdNum();
+ BOOL bEraseThisObject;
+ InsertTxbxText( pSdrTextObj,
+ &aObjSize,
+ pRecord->aTextId.nTxBxS,
+ pRecord->aTextId.nSequence,
+ nGrafAnchorCp,
+ pRetFrmFmt,
+ (pSdrTextObj != pTrueObject)
+ || (0 != pGroupObject),
+ bEraseThisObject,
+ FALSE,0,0,
+ pRecord );
+
+ // wurde dieses Objekt ersetzt ??
+ if( bEraseThisObject )
+ {
+ if( pGroupObject
+ || (pSdrTextObj != pTrueObject) )
+ {
+ // Objekt wurde bereits (in der Gruppe und)
+ // der Drawing-Page durch ein neues
+ // SdrGrafObj ersetzt.
+
+ SdrObject* pNewObj =
+ pGroupObject
+ ? pGroupObject->GetSubList()->GetObj(
+ nOrdNum )
+ : pTrueObject;
+ // Objekt in der Z-Order-Liste ersetzen
+ pMSDffManager->ExchangeInShapeOrder(
+ pSdrTextObj, 0,0, pNewObj );
+ // Objekt jetzt noch loeschen
+ delete pRecord->pObj;
+ // und das neue Objekt merken.
+ pRecord->pObj = pNewObj;
+ }
+ else
+ {
+ // Objekt aus der Z-Order-Liste loeschen
+ pMSDffManager->RemoveFromShapeOrder( pSdrTextObj );
+ // Objekt aus der Drawing-Page rausnehmen
+ if( pSdrTextObj->GetPage() )
+ pDrawPg->RemoveObject( pSdrTextObj->GetOrdNum() );
+ // und FrameFormat entfernen, da durch Grafik
+ // ersetzt (dies loescht auch das Objekt)
+ rDoc.DelFrmFmt( pRetFrmFmt );
+ // auch den Objektmerker loeschen
+ pRecord->pObj = 0;
+ }
+ }
+ else
+ {
+ // ww8-default Randabstand einsetzen
+ SfxItemSet aItemSet( pDrawModel->GetItemPool(),
+ SDRATTR_TEXT_LEFTDIST,
+ SDRATTR_TEXT_LOWERDIST );
+ aItemSet.Put( SdrTextLeftDistItem( pRecord->nDxTextLeft ) );
+ aItemSet.Put( SdrTextRightDistItem( pRecord->nDxTextRight ) );
+ aItemSet.Put( SdrTextUpperDistItem( pRecord->nDyTextTop ) );
+ aItemSet.Put( SdrTextLowerDistItem( pRecord->nDyTextBottom ) );
+ pSdrTextObj->SetAttributes( aItemSet, FALSE );
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ ASSERT( !this, "+Wo ist das Shape ?" );
+ return 0;
+ }
+ }
+ return pRetFrmFmt;
+}
+#pragma optimize("",on)
+
+
+void SwWW8ImplReader::GrafikCtor() // Fuer SVDraw und VCControls und Escher
+{
+ rDoc.MakeDrawModel( );
+ pDrawModel = rDoc.GetDrawModel();ASSERT( pDrawModel,
+ "Kann DrawModel nicht anlegen" );
+ pDrawPg = pDrawModel->GetPage( 0 );
+ nDrawHeaven = rDoc.GetHeavenId();
+ nDrawHell = rDoc.GetHellId();
+}
+
+void SwWW8ImplReader::GrafikDtor()
+{
+ DELETEZ( pDrawEditEngine ); // evtl. von Grafik angelegt
+ DELETEZ( pDrawHeight ); // dito
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8graf.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.93 2000/09/18 16:04:59 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.92 2000/08/28 14:55:42 khz
+ #64941# store Hd./Ft./Section info to prevent prohibited TxBx linkage
+
+ Revision 1.91 2000/08/24 14:39:04 khz
+ #78052# don't store SwFlyDrawContact in ShapeOrder array if bHdFtFtnEdn set
+
+ Revision 1.90 2000/08/24 12:32:54 os
+ Outliner/EditEngine changes
+
+ Revision 1.89 2000/08/24 10:48:52 jp
+ crop export to svx
+
+ Revision 1.88 2000/06/26 12:59:11 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.87 2000/06/15 15:23:38 cmc
+ #75669# 97Controls Import fixes
+
+ Revision 1.86 2000/06/13 08:24:46 os
+ using UCB
+
+ Revision 1.85 2000/05/16 12:12:53 jp
+ ASS_FALSE define removed
+
+ Revision 1.84 2000/05/16 11:14:00 khz
+ Unicode code-conversion
+
+ Revision 1.83 2000/03/08 10:20:26 khz
+ Task #73362# WW6: restore stream position after readind content of textbox
+
+ Revision 1.82 2000/03/03 15:20:01 os
+ StarView remainders removed
+
+ Revision 1.81 2000/02/22 16:00:02 khz
+ Task #72647# Import attributes of winword 6 TEXT OBJECTS
+
+ Revision 1.80 2000/02/22 13:54:32 khz
+ Task #73096# look for OLE- or Graphic-Indicator-Sprms
+
+ Revision 1.79 2000/02/22 11:59:02 khz
+ Task #73096# erase TextObj only when OLE or Graphic propperly imported
+
+ Revision 1.78 2000/02/18 09:35:05 cmc
+ #69372# Improved Hyperlink Importing for WW97
+
+
+ Revision 1.77 2000/02/14 14:36:32 jp
+ #70473# changes for unicode
+
+ Revision 1.76 2000/02/14 08:25:21 cmc
+ #72579 TxtBox NULL test crash fix, revealed by glossary addition
+
+ Revision 1.74 2000/02/09 08:57:16 khz
+ Task #72647# Read SPRMs that are stored in piece table grpprls (2)
+
+ Revision 1.73 2000/01/14 11:28:03 khz
+ Task #68832# -- CORRECTION: Task Number of rev below should have been: 68832 !
+
+ Revision 1.72 2000/01/14 11:11:38 khz
+ Task #71343# look for Sprm 37 (not 5) to recognize APO
+
+ Revision 1.71 2000/01/07 12:29:46 khz
+ Task #64574# believe Layerflag in Winword Struct rather than the one in Escher Data (2)
+
+ Revision 1.70 2000/01/07 12:27:19 khz
+ Task #64574# believe Layerflag in Winword Struct rather than the one in Escher Data
+
+ Revision 1.69 1999/12/14 14:22:45 khz
+ Task #70815# Avoid typecast when calling MatchSdrItemsIntoFlySet()
+
+ Revision 1.68 1999/12/06 16:38:08 khz
+ Task #67435# Import FillStyle on OLE and Graphic viaSdrAttrObj::GetFillAttrSetItem()
+
+ Revision 1.67 1999/12/01 10:18:36 khz
+ Task #67435# Use GetItemState() to find border of graphic
+
+ Revision 1.66 1999/11/23 18:56:17 khz
+ Task #67963# New method SvxMSDffManager::ImportObj() used by Draw, Writer, Calc
+
+ Revision 1.65 1999/11/19 15:02:42 khz
+ Special Task! Use new method to import Shapes: SvxMSDffManager::ImportObj()
+
+ Revision 1.64 1999/09/20 14:24:27 khz
+ Mussaenderung wg. TH apichange 10.09.1999
+
+ Revision 1.63 1999/08/30 19:53:00 JP
+ Bug #68219#: no static members - be reentrant
+
+
+ Rev 1.62 30 Aug 1999 21:53:00 JP
+ Bug #68219#: no static members - be reentrant
+
+ Rev 1.61 09 Aug 1999 14:16:02 JP
+ read W95 format from stream
+
+ Rev 1.60 27 Jul 1999 14:41:56 KHZ
+ Task #67886# Import Textboxes without #14 in it's field code
+
+ Rev 1.59 15 Jul 1999 10:56:00 KHZ
+ Task #67659# Do *not* set FillStyle on box with Default fill style
+
+ Rev 1.58 06 Jul 1999 16:38:14 KHZ
+ Task #67435# Borderattributes of graphics that are connected to a #1 char
+
+ Rev 1.57 22 Jun 1999 17:40:22 KHZ
+ Task #64574# adjust z-order for grouped objects2
+
+ Rev 1.56 09 Jun 1999 18:25:04 KHZ
+ use FOUR different inner distances with SvxBoxItem
+
+ Rev 1.55 02 Jun 1999 09:32:24 KHZ
+ Task #66227# a) kein Unicode bei Ver67 ;-) b) Grafik in grupp. Textbox
+
+ Rev 1.54 29 Apr 1999 12:45:40 KHZ
+ Task #65561# (versehentlich war Zuweisung von pRecord auskommentiert)
+
+ Rev 1.53 26 Apr 1999 17:40:22 KHZ
+ Task #61381# Attribute von Textboxen in denen NUR EINE Grafik steht
+
+ Rev 1.52 10 Mar 1999 18:23:12 KHZ
+ Task #63093# Bei FLY_IN_CNTNT nach MakeFlySection *kein* Ankerattribut setzen!
+
+ Rev 1.51 10 Mar 1999 15:11:18 KHZ
+ Task #62521# Einlesen von Sonderzeichen
+
+ Rev 1.50 18 Feb 1999 20:43:48 KHZ
+ Task #61681# in InsertObjekt() immer SURROUND_TROUGH setzen
+
+ Rev 1.49 18 Feb 1999 20:24:38 KHZ
+ Task #61659# Umlauf im Hintergrund
+
+ Rev 1.48 18 Feb 1999 18:52:38 JP
+ Bug #61659#/#61660#: Objecte in einer Gruppe NIE im LayoutConnecten
+
+ Rev 1.47 17 Feb 1999 17:34:26 KHZ
+ Task #61982# Zugriff auf freigegebenen Speicher nach ReplaceObject
+
+ Rev 1.46 17 Feb 1999 15:24:16 KHZ
+ Task #61382# jetzt auch Textbox-Grafiken im Hintergrund ( SvxOpaqItem(FALSE) )
+
+ Rev 1.45 16 Feb 1999 13:03:24 KHZ
+ Task #60326# nur das erste von mehreren PicLoc-Attributen einer Char-Pos ist ok
+
+ Rev 1.44 15 Feb 1999 21:40:04 KHZ
+ Task #61381# jetzt include von boxitem.hxx fuer WW8_DECL_LINETAB_ARRAY
+
+ Rev 1.43 12 Feb 1999 16:51:06 KHZ
+ Task #61381# Ersetzen von Sdr-Text-Objekten im Writer durch Rahmen (3)
+
+ Rev 1.42 05 Feb 1999 19:37:02 KHZ
+ Task #61381# Ersetzen von Sdr-Text-Objekten im Writer durch Rahmen (2)
+
+ Rev 1.41 05 Feb 1999 10:33:48 KHZ
+ Task #61381# Ersetzen von Sdr-Text-Objekten im Writer durch Rahmen
+
+ Rev 1.40 28 Jan 1999 17:10:46 KHZ
+ Task #60715# in SdrTextObj verankerte Grafiken und OLEs (4)
+
+ Rev 1.39 27 Jan 1999 10:58:02 KHZ
+ Task #60715# in SdrTextObj verankerte Grafiken und OLEs (2)
+
+ Rev 1.38 25 Jan 1999 10:25:46 KHZ
+ Task #60715# in Textobjekt verankerte Grafik als Grafik importieren
+
+ Rev 1.37 19 Jan 1999 10:53:06 KHZ
+ Task #60715# in Textbox verankerte Grafiken und OLEs (1)
+
+ Rev 1.36 06 Jan 1999 10:51:52 KHZ
+ Task #59858# Testreihenfolge der While-Schleifen geaendert
+
+ Rev 1.35 22 Dec 1998 09:08:38 KHZ
+ Task #60395# (4) StoreShapeOrder wieder angeklemmt
+
+ Rev 1.34 21 Dec 1998 16:00:42 KHZ
+ StoreShapeOrder voruebergehend abgeklemmt
+
+ Rev 1.33 18 Dec 1998 12:27:22 KHZ
+ Task #60395# (3) jetzt DOCH Layer und Z-Order fuer Grafik oder OLE-Objekt :-)
+
+ Rev 1.32 17 Dec 1998 10:41:26 KHZ
+ Task #60395# (2) KEINE Positionierung bei geloeschten Objekten (Grafik, OLE)
+
+ Rev 1.31 15 Dec 1998 19:54:06 KHZ
+ Task #60395# Positionierung vor/hinter dem Text je nach pRecord->bDrawHell
+
+ Rev 1.30 07 Dec 1998 16:29:38 JP
+ Bug #58766#/#59640#: Zeichenobjecte nach WW97 Import richtig positionieren
+
+ Rev 1.29 05 Dec 1998 17:11:26 KHZ
+ Task #59580# Unicode (3)
+
+ Rev 1.28 04 Dec 1998 20:19:46 KHZ
+ Task #58766# Textboxen mit Unicode-Inhalt
+
+ Rev 1.27 30 Nov 1998 17:46:52 JP
+ Task #59822#: OLE-Objecte importieren
+
+ Rev 1.26 27 Nov 1998 09:45:22 JP
+ Task #59822#: OLE-Objecte importieren - Namen korrekt ermitteln
+
+ Rev 1.25 25 Nov 1998 18:45:40 JP
+ Compilerfehler unter UNX
+
+ Rev 1.24 24 Nov 1998 20:45:04 JP
+ Task #59822#: OLE-Objecte einlesen
+
+ Rev 1.23 20 Nov 1998 22:04:52 JP
+ Task #59476#: Crop-Werte bei Grafiken setzen
+
+ Rev 1.22 20 Nov 1998 16:35:30 KHZ
+ Task #59640# Hilfsattribute SwFmtVertOrient und SwFmtHoriOrient (2)
+
+ Rev 1.21 20 Nov 1998 16:18:10 KHZ
+ Task #59735# Innen- und Aussenabstaende zwischen Text und Shape (bzw. Grafik)
+
+ Rev 1.20 20 Nov 1998 09:44:54 KHZ
+ Task #59640# Hilfsattribute SwFmtVertOrient und SwFmtHoriOrient eingesetzt
+
+ Rev 1.19 29 Oct 1998 15:28:54 KHZ
+ Task #58199# gedrehter Text in Shapes und Text in Gruppen jetzt moeglich
+
+ Rev 1.18 28 Oct 1998 10:49:30 KHZ
+ Task #55189# Text jetzt auch bei Group-Autoformen (Doppelklammer...) moeglich
+
+ Rev 1.17 21 Oct 1998 13:55:52 KHZ
+ Task #55189# Abstand des Textbereich vom Shape-Rand ist jetzt WW8 Default
+
+ Rev 1.16 20 Oct 1998 17:21:56 KHZ
+ Task #57704# Text-Umlauf um Grafiken und Escher-Objekte
+
+ Rev 1.15 03 Sep 1998 22:14:22 KHZ
+ Task #55189# Textboxen
+
+ Rev 1.14 27 Aug 1998 10:12:30 KHZ
+ Task #55189# Escher-Import fuer Draw, Calc und Writer
+
+ Rev 1.13 05 Aug 1998 17:16:24 KHZ
+ Task #53614# komprimierte WMF, Enh.Metafile und PICT Grafiken
+
+ Rev 1.12 31 Jul 1998 20:43:06 KHZ
+ Task #52607# Fehler wg. Compiler-Optimierung!
+
+ Rev 1.11 30 Jul 1998 23:15:02 KHZ
+ Task #53614# Grafiken in Data und Dokumentstream gemischt
+
+ Rev 1.10 30 Jul 1998 20:52:36 KHZ
+ Task #52607# GPF unter Unix behoben
+
+ Rev 1.9 28 Jul 1998 23:48:20 KHZ
+ Task #52607# Grafik-Textboxen und Absatzformatierung verbessert
+
+ Rev 1.8 28 Jul 1998 11:01:48 KHZ
+ Task #52607# nummerierte Listen (Teil 1)
+
+ Rev 1.7 22 Jul 1998 15:36:18 KHZ
+ Task #52607#
+
+ Rev 1.6 21 Jul 1998 14:51:50 KHZ
+ Task #52607# (WW 97 Import)
+
+ Rev 1.5 21 Jul 1998 12:33:38 KHZ
+ als MSDrawingObject eingebettete Grafik (Teil 1)
+
+ Rev 1.4 13 Jul 1998 15:29:16 KHZ
+ Task #52607# embeded Grafiken (NICHT UEBER den Text gelegte)
+
+ Rev 1.3 30 Jun 1998 21:33:24 KHZ
+ Header/Footer/Footnotes weitgehend ok
+
+ Rev 1.2 23 Jun 1998 11:24:26 KHZ
+ Zwischenstand: die meisten Zeichenattribute Ok!
+
+ Rev 1.1 18 Jun 1998 09:47:14 KHZ
+ Zwischenstand fur 396c
+
+ Rev 1.0 16 Jun 1998 11:06:34 KHZ
+ Initial revision.
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/filter/ww8/ww8graf.hxx b/sw/source/filter/ww8/ww8graf.hxx
new file mode 100644
index 000000000000..34dcd7156164
--- /dev/null
+++ b/sw/source/filter/ww8/ww8graf.hxx
@@ -0,0 +1,194 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8graf.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WW8GRAF_HXX
+#define _WW8GRAF_HXX
+
+
+#define nbxRelPageBorder 1 // Blatt-Rand
+#define nbxRelPgMargin 0 // Page Print Area
+#define nbxRelText 2 // Spalten (Absatz) -Rand = FRAME Print Area
+
+#define nbyRelPageBorder 1
+#define nbyRelPgMargin 0
+#define nbyRelText 2
+
+
+struct WW8_FSPA
+{
+ long nSpId; //Shape Identifier. Used in conjunction with the office art data (found via fcDggInfo in the FIB) to find the actual data for this shape.
+ long nXaLeft; //left of rectangle enclosing shape relative to the origin of the shape
+ long nYaTop; //top of rectangle enclosing shape relative to the origin of the shape
+ long nXaRight; //right of rectangle enclosing shape relative to the origin of the shape
+ long nYaBottom;//bottom of the rectangle enclosing shape relative to the origin of the shape
+ USHORT bHdr:1;
+ //0001 1 in the undo doc when shape is from the header doc, 0 otherwise (undefined when not in the undo doc)
+ USHORT nbx:2;
+ //0006 x position of shape relative to anchor CP
+ //0 relative to page margin
+ //1 relative to top of page
+ //2 relative to text (column for horizontal text; paragraph for vertical text)
+ //3 reserved for future use
+ USHORT nby:2;
+ //0018 y position of shape relative to anchor CP
+ //0 relative to page margin
+ //1 relative to top of page
+ //2 relative to text (paragraph for horizontal text; column for vertical text)
+ USHORT nwr:4;
+ //01E0 text wrapping mode
+ //0 like 2, but doesn't require absolute object
+ //1 no text next to shape
+ //2 wrap around absolute object
+ //3 wrap as if no object present
+ //4 wrap tightly around object
+ //5 wrap tightly, but allow holes
+ //6-15 reserved for future use
+ USHORT nwrk:4;
+ //1E00 text wrapping mode type (valid only for wrapping modes 2 and 4
+ //0 wrap both sides
+ //1 wrap only on left
+ //2 wrap only on right
+ //3 wrap only on largest side
+ USHORT bRcaSimple:1;
+ //2000 when set, temporarily overrides bx, by, forcing the xaLeft, xaRight, yaTop, and yaBottom fields to all be page relative.
+ USHORT bBelowText:1;
+ //4000
+ //1 shape is below text
+ //0 shape is above text
+ USHORT bAnchorLock:1;
+ //8000 1 anchor is locked
+ // 0 anchor is not locked
+ long nTxbx; //count of textboxes in shape (undo doc only)
+};
+
+
+struct WW8_FSPA_SHADOW // alle Member an gleicher Position und Groesse,
+{ // wegen: pF = (WW8_FSPA*)pFS;
+ SVBT32 nSpId;
+ SVBT32 nXaLeft;
+ SVBT32 nYaTop;
+ SVBT32 nXaRight;
+ SVBT32 nYaBottom;
+ SVBT16 aBits1;
+ SVBT32 nTxbx;
+};
+
+struct WW8_TXBXS
+{
+ SVBT32 cTxbx__iNextReuse;
+ SVBT32 cReusable;
+ SVBT16 fReusable;
+ SVBT32 reserved;
+ SVBT32 ShapeId;
+ SVBT32 txidUndo;
+};
+
+void WW8FSPAShadowToReal( WW8_FSPA_SHADOW* pFSPAS, WW8_FSPA* pPic );
+
+
+/*************************************************************************
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8graf.hxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.11 2000/09/18 16:04:59 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.10 2000/05/16 11:35:11 khz
+ Unicode code-conversion
+
+ Revision 1.9 1998/11/25 17:50:46 JP
+ Compilerfehler unter UNX
+
+
+ Rev 1.8 25 Nov 1998 18:50:46 JP
+ Compilerfehler unter UNX
+
+ Rev 1.7 20 Nov 1998 17:56:00 KHZ
+ Task #59640# Hilfsattribute SwFmtVertOrient und SwFmtHoriOrient (2)
+
+ Rev 1.6 29 Oct 1998 15:27:26 KHZ
+ Task #58199# defines fuer rel. Abstand-Orientierung von Shapes geaendert
+
+ Rev 1.5 03 Sep 1998 22:14:22 KHZ
+ Task #55189# Textboxen
+
+ Rev 1.4 27 Aug 1998 10:12:30 KHZ
+ Task #55189# Escher-Import fuer Draw, Calc und Writer
+
+ Rev 1.3 22 Jul 1998 16:14:16 HR
+ ww8graf fuer UNX
+
+ Rev 1.2 21 Jul 1998 14:51:48 KHZ
+ Task #52607# (WW 97 Import)
+
+ Rev 1.1 21 Jul 1998 12:33:28 KHZ
+ als MSDrawingObject eingebettete Grafik (Teil 1)
+
+ Rev 1.0 16 Jun 1998 10:56:50 KHZ
+ Initial revision.
+
+*************************************************************************/
+#endif
+
diff --git a/sw/source/filter/ww8/ww8graf2.cxx b/sw/source/filter/ww8/ww8graf2.cxx
new file mode 100644
index 000000000000..2771ffd0de06
--- /dev/null
+++ b/sw/source/filter/ww8/ww8graf2.cxx
@@ -0,0 +1,1363 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8graf2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+
+#ifndef _TOOLS_TEMPFILE_HXX
+#include <tools/tempfile.hxx>
+#endif
+#ifndef _SVX_IMPGRF_HXX //autogen
+#include <svx/impgrf.hxx>
+#endif
+#ifndef _SVDPAGE_HXX //autogen
+#include <svx/svdpage.hxx>
+#endif
+#ifndef _SVDMODEL_HXX //autogen
+#include <svx/svdmodel.hxx>
+#endif
+#ifndef _SVDOGRAF_HXX
+#include <svx/svdograf.hxx>
+#endif
+#ifndef _SVDOOLE2_HXX
+#include <svx/svdoole2.hxx>
+#endif
+#ifndef _SVX_OPAQITEM_HXX //autogen
+#include <svx/opaqitem.hxx>
+#endif
+
+#ifndef _MSDFFIMP_HXX
+#include <svx/msdffimp.hxx>
+#endif
+
+
+#ifndef _SFXAPP_HXX
+#include <sfx2/app.hxx>
+#endif
+
+#ifndef _SFXDOCFILE_HXX
+#include <sfx2/docfile.hxx>
+#endif
+
+#ifndef _SFX_FCONTNR_HXX
+#include <sfx2/fcontnr.hxx>
+#endif
+
+
+#ifndef _IPOBJ_HXX //autogen
+#include <so3/ipobj.hxx>
+#endif
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+
+#ifndef _DCONTACT_HXX
+#include <dcontact.hxx>
+#endif
+
+#ifndef _GRFATR_HXX
+#include <grfatr.hxx> // class SwCropGrf
+#endif
+#ifndef _FMTFLCNT_HXX //autogen
+#include <fmtflcnt.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+#ifndef _FLTSHELL_HXX
+#include <fltshell.hxx>
+#endif
+#ifndef _WW8STRUC_HXX
+#include <ww8struc.hxx>
+#endif
+#ifndef _WW8SCAN_HXX
+#include <ww8scan.hxx>
+#endif
+#ifndef _WW8PAR_HXX
+#include <ww8par.hxx> // class SwWWImplReader
+#endif
+#ifndef _WW8PAR2_HXX
+#include <ww8par2.hxx> // struct WWFlyPara
+#endif
+#ifndef _WW8GRAF_HXX
+#include <ww8graf.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx> // class SwTxtNode
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx> // Progress
+#endif
+#ifndef _FSYS_HXX
+#include <tools/fsys.hxx>
+#endif
+
+
+#ifdef __WW8_NEEDS_COPY
+extern void WW8PicShadowToReal( WW8_PIC_SHADOW* pPicS, WW8_PIC* pPic );
+#endif // defined __WW8_NEEDS_COPY
+
+
+//-----------------------------------------
+// los gehts
+//-----------------------------------------
+
+
+#ifdef USE_WMF_GRAF_FILE // Definieren fuer Import WMF ueber File
+ // ( alte Version, kann kein MAC-PICT )
+struct WmfFileHd
+{ // Vorsicht: Struktur ist nicht aligned
+ SVBT16 nTyp; // 0 = Mem, 1 = File
+ SVBT16 nHdSiz; // 0x009
+ SVBT16 nVersion; // 0x300
+ SVBT32 nSize; // filesize in bytes
+ SVBT16 nNoObj; // Number of Objects that exist at same time
+ SVBT32 nMaxRecLen; // largest record
+ SVBT16 nNoParas; // not used
+};
+#define WMF_FILE_HD_SIZ 18 // Groesse der Struktur WmfFileHd
+
+ULONG SwWW8ImplReader::ReadWmfHeader( WmfFileHd* pHd, long nPos )
+{
+ pStrm->Seek( nPos );
+ pStrm->Read( pHd, sizeof( *pHd ) );
+ return SVBT32ToLong( pHd->nSize ) * 2; // FileSize in Bytes
+}
+
+#endif // USE_WMF_GRAF_FILE
+
+
+
+
+struct METAFILEHEADER // ist aligned, deshalb gehts fuer alle Platformen
+{
+ UINT32 key;
+ UINT16 hmf;
+ UINT16 left;
+ UINT16 top;
+ UINT16 right;
+ UINT16 bottom;
+ UINT16 inch;
+ UINT32 reserved;
+ UINT16 checksum;
+};
+
+
+#define METAFILEHEADER_SIZE 22
+
+
+static void WriteWmfPreHd( long nWidth, long nHeight, SvStream& rOStream )
+{
+ METAFILEHEADER aHeader;
+
+ aHeader.key = 0x9AC6CDD7L;
+ aHeader.hmf = 0;
+ aHeader.left = 0;
+ aHeader.top = 0;
+ aHeader.right = (UINT16)( nWidth * 100 / 144 );
+ aHeader.bottom = (UINT16)( nHeight * 100 / 144 );
+ aHeader.inch= 1000;
+ aHeader.reserved = 0;
+ aHeader.checksum = 0;
+ for( USHORT n=0; n < 10; n++ )
+ aHeader.checksum ^= *(((UINT16*)&aHeader)+n);
+
+#ifdef __BIGENDIAN
+ aHeader.key = SWAPLONG( aHeader.key );
+ aHeader.left = 0;
+ aHeader.top = 0;
+ aHeader.right = SWAPSHORT( aHeader.right );
+ aHeader.bottom = SWAPSHORT( aHeader.bottom );
+ aHeader.inch = SWAPSHORT( aHeader.inch );
+ aHeader.checksum = SWAPSHORT( aHeader.checksum );
+#endif // __BIGENDIAN
+
+ rOStream.Write( (char*)&aHeader, METAFILEHEADER_SIZE );
+}
+
+
+#define WWBUFSIZ 4096 // 512 <= WWBUFSIZE <= UINT16_MAX !!!
+
+static void _CopyFilePiece( SvStream* pDst, SvStream* pSrc, ULONG nRead,
+ void* pBuf, UINT16 nBufSize )
+{
+ UINT16 nRead1;
+ do{
+ nRead1 = ( nRead > nBufSize ) ? nBufSize : (UINT16)nRead;
+ pSrc->Read( pBuf, nRead1 );
+ pDst->Write( pBuf, nRead1 );
+ nRead -= nRead1;
+ }while( nRead );
+}
+
+BOOL SwWW8ImplReader::ReadGrafFile( String& rFileName, Graphic*& rpGraphic,
+ const WW8_PIC& rPic, SvStream* pSt, ULONG nFilePos, BOOL* pbInDoc )
+{ // Grafik in File schreiben
+ ASSERT( WWBUFSIZ >= 512,
+ "Au weia, Puffergroesse < 512, keine Mac-Picts moeglich" );
+
+ *pbInDoc = TRUE; // default
+
+ ULONG nPosFc = nFilePos + rPic.cbHeader;
+
+ switch( rPic.MFP.mm ){
+ case 94: // BMP-File ( nicht embeddet ) oder GIF
+ case 99:
+ { // TIFF-File ( nicht embeddet )
+ pSt->Seek( nPosFc );
+ String aStr( WW8ReadPString( *pSt, eStructCharSet, 0 ) );// Name als P-String einlesen
+ rFileName = aStr.GetChar( 0 ); // Wandeln in SV-String
+ *pbInDoc = FALSE; // Datei anschliessend nicht loeschen
+ return rFileName.Len() != 0; // Einlesen OK
+ }
+ }
+#ifndef USE_WMF_GRAF_FILE
+ // Neu:WMF - Variante ohne File
+ {
+ GDIMetaFile aWMF;
+ pSt->Seek( nPosFc );
+ BOOL bOk = ReadWindowMetafile( *pSt, aWMF );
+ // *pSt >> aWMF; geht nicht ohne placable header
+ if( !bOk || pSt->GetError() || !aWMF.GetActionCount() ){
+// ASSERT( bOk, "ReadWindowMetafile ging schief" );
+// ASSERT( !pSt->GetError(), "WMF einlesen ging schief ( Stream-Error )" );
+// ASSERT( aWMF.GetActionCount(), "WMF einlesen ging schief ( No Meta-Action )" );
+ return FALSE;
+ }
+ if( pWwFib->envr != 1 ){ // !MAC als Creator
+
+ aWMF.SetPrefMapMode( MapMode( MAP_100TH_MM ) );
+ // MetaFile auf neue Groesse skalieren und
+ // neue Groesse am MetaFile setzen
+ Size aOldSiz( aWMF.GetPrefSize() );
+ Size aNewSiz( rPic.MFP.xExt, rPic.MFP.yExt );
+ Fraction aFracX( aNewSiz.Width(), aOldSiz.Width() );
+ Fraction aFracY( aNewSiz.Height(), aOldSiz.Height() );
+
+ aWMF.Scale( aFracX, aFracY );
+ aWMF.SetPrefSize( aNewSiz );
+
+ rpGraphic = new Graphic( aWMF );
+ return TRUE;
+ }
+ // MAC - Word als Creator
+ // im WMF steht nur "Benutzen sie Word 6.0c"
+ // Mac-Pict steht dahinter
+ // allerdings ohne die ersten 512 Bytes,
+ // bei einem MAC-PICT egal sind ( werden nicht ausgewertet )
+
+ long nCopy = rPic.lcb - ( pSt->Tell() - nPosFc );
+ if( nCopy <= 0 || WWBUFSIZ < 512 )
+ return FALSE;
+
+ BYTE* pBuf = new BYTE[WWBUFSIZ];
+ String sExt(WW8_ASCII2STR("pct"));
+ TempFile aTempFile(aEmptyStr, &sExt);
+ aTempFile.EnableKillingFile();
+ {
+ SvFileStream aOut(aTempFile.GetName(), STREAM_READ|STREAM_WRITE|STREAM_TRUNC);
+ memset( pBuf, 0, 512 );
+ aOut.Write( pBuf, 512 ); // Anfang Pict: 512 Byte Muell
+ _CopyFilePiece( &aOut, pSt, nCopy, pBuf, WWBUFSIZ ); // Pict-Inhalt
+ delete( pBuf );
+ }
+
+ GraphicFilter& rGF = *::GetGrfFilter(); // lese ueber Filter ein
+ rpGraphic = new Graphic();
+#if SUPD<591
+ bOk = ( rGF.ImportGraphic( *rpGraphic, DirEntry(aTempFile.GetName()), GRFILTER_FORMAT_DONTKNOW )
+ == 0 );
+#else
+ bOk = ( rGF.ImportGraphic( *rpGraphic, INetURLObject(aTempFile.GetName()), GRFILTER_FORMAT_DONTKNOW )
+ == 0 );
+#endif
+ if( !bOk )
+ DELETEZ( rpGraphic );
+
+ return bOk; // Grafik drin
+ }
+#else // ! USE_WMF_GRAF_FILE
+ // alt: ueber File mit selbstgebasteltem Header
+ ULONG nMaxSize = rPic.lcb - rPic.cbHeader;
+ WmfFileHd aHd; // lies Header
+ ULONG nSiz = ReadWmfHeader( &aHd, nPosFc ); // FileSize in Bytes
+
+ if( nSiz > nMaxSize )
+ return FALSE; // irgendwas ist schiefgegangen
+
+ DirEntry aFN = GetTmpFileName();
+ aFN.SetExtension( String( "wmf" ) );
+ aFN.ToAbs();
+ rFileName = aFN.GetFull();
+
+ SvFileStream aOut( rFileName, STREAM_WRITE );
+
+
+ WriteWmfPreHd( rPic.dxaGoal, rPic.dyaGoal, aOut ); // Placeable WMF-Header
+
+ ULONG nRead = nSiz;
+ UINT16 nRead1;
+ BYTE* pBuf = new BYTE[WWBUFSIZ];
+ pSt->Seek( nPosFc );
+ do{
+ nRead1 = ( nRead > WWBUFSIZ ) ? WWBUFSIZ : (UINT16)nRead;
+ pSt->Read( pBuf, nRead1 );
+ aOut.Write( pBuf, nRead1 );
+ nRead -= nRead1;
+ }while( nRead );
+
+ delete( pBuf );
+
+ return TRUE;
+#endif // ! USE_WMF_GRAF_FILE
+}
+
+struct WW8PicDesc
+{
+ INT16 nCL, nCR, nCT, nCB;
+ long nWidth, nHeight;
+
+ WW8PicDesc( const WW8_PIC& rPic );
+};
+
+WW8PicDesc::WW8PicDesc( const WW8_PIC& rPic )
+{
+ long nOriWidth = (long)rPic.dxaGoal; // Groesse in 1/100 mm ?
+ long nOriHeight = (long)rPic.dyaGoal;
+
+ nCL = rPic.dxaCropLeft;
+ nCR = rPic.dxaCropRight;
+ nCT = rPic.dyaCropTop;
+ nCB = rPic.dyaCropBottom;
+
+ long nAddWidth = nOriWidth + nCL + nCR; // Groesse nach Crop
+ long nAddHeight = nOriHeight + nCT + nCB;
+ if(!nAddWidth )
+ nAddWidth = 1;
+ if(!nAddHeight )
+ nAddHeight = 1;
+
+ nCL = (short)((long)nCL * nOriWidth / nAddWidth );// Crop absolut
+ nCR = (short)((long)nCR * nOriWidth / nAddWidth );// -> skaliert
+ nCT = (short)((long)nCT * nOriWidth / nAddWidth );// auf Original-ImageSize
+ nCB = (short)((long)nCB * nOriWidth / nAddWidth );
+
+ nWidth = nAddWidth * rPic.mx / 1000; // entgueltige Sw-Groesse
+ nHeight = nAddHeight * rPic.my / 1000;
+}
+
+/*
+WW8PicDesc::WW8PicDesc( const WW8_FSPA& rFSPA )
+{
+ //long nOriWidth = (long)rPic.dxaGoal; // Groesse in 1/100 mm ?
+ //long nOriHeight = (long)rPic.dyaGoal;
+
+ nCL = rFSPA.nXaLeft;
+ nCR = rFSPA.nXaRight;
+ nCT = rFSPA.nYaTop;
+ nCB = rFSPA.nYaBottom;
+
+ //long nAddWidth = nOriWidth + nCL + nCR; // Groesse nach Crop
+ //long nAddHeight = nOriHeight + nCT + nCB;
+
+ //nCL = (short)((long)nCL * nOriWidth / nAddWidth );// Crop absolut
+ //nCR = (short)((long)nCR * nOriWidth / nAddWidth );// -> skaliert
+ //nCT = (short)((long)nCT * nOriWidth / nAddWidth );// auf Original-ImageSize
+ //nCB = (short)((long)nCB * nOriWidth / nAddWidth );
+
+ nWidth = nCR - nCL;
+ nHeight = nCB - nCT;
+} */
+
+
+// MakeGrafByFlyFmt setzt eine nicht-Zeichengebundene Grafik
+SwFrmFmt* SwWW8ImplReader::MakeGrafByFlyFmt( SdrTextObj* pReplaceTextObj,
+ const SwFrmFmt& rOldFmt, const WW8PicDesc& rPD,
+ const Graphic* pGraph, const String& rFileName,
+ const String& rGrName, const SfxItemSet& rGrfSet,
+ const BOOL bSetToBackground )
+{
+ SwFrmFmt* pRet = 0;
+ if( pReplaceTextObj )
+ {
+ // SdrGrafObj anstatt des SdrTextObj in dessen Gruppe einsetzen
+ SdrObject* pGroupObject = pReplaceTextObj->GetUpGroup();
+ if( pGroupObject )
+ {
+ SdrObjList* pObjectList = pGroupObject->GetSubList();
+
+ // neues Sdr-Grafik-Objekt erzeugen und konfigurieren
+ SdrGrafObj* pGrafObj = new SdrGrafObj;
+
+ if( pGraph )
+ pGrafObj->SetGraphic( *pGraph );
+
+ if( !pDrawModel ) // 1. GrafikObjekt des Docs
+ GrafikCtor();
+
+ pGrafObj->SetModel( pDrawModel );
+
+ pGrafObj->SetLogicRect( pReplaceTextObj->GetBoundRect() );
+
+ pGrafObj->SetLayer( pReplaceTextObj->GetLayer() );
+
+
+ /*
+ schade: Wir koennen bisher keine SdrGrafObjekte mit Umrandung,
+ Schatten oder Hintergrundfuellung,
+ entsprechende Imports aus dem MS-Office muessen daher
+ auf die UEbernahme dieser Attribute verzichten. :-(
+
+ SfxItemSet aOldSet(pDrawModel->GetItemPool(),
+ // Box
+ XATTR_LINE_FIRST, XATTR_LINE_LAST,
+ // Shadow
+ SDRATTR_SHADOW_FIRST, SDRATTR_SHADOW_LAST,
+ // Fill
+ XATTR_FILL_FIRST, XATTR_FILL_LAST,
+ 0 );
+ pReplaceTextObj->TakeAttributes( aOldSet, FALSE, TRUE );
+ */
+
+
+ if( rFileName.Len() )
+ {
+ ((SdrGrafObj*)pGrafObj)->SetFileName( rFileName );
+ if( !pGraph )
+ pGrafObj->SetGraphicLink( rFileName, aEmptyStr );
+ }
+ // altes Objekt raus aus Gruppen-Liste und neues rein
+ // (dies tauscht es ebenfalls in der Drawing-Page aus)
+ pObjectList->ReplaceObject( pGrafObj, pReplaceTextObj->GetOrdNum() );
+
+
+ /*
+ schade: Wir koennen bisher keine SdrGrafObjekte mit Umrandung,
+ Schatten oder Hintergrundfuellung,
+ entsprechende Imports aus dem MS-Office muessen daher
+ auf die UEbernahme dieser Attribute verzichten. :-(
+
+ // Attribute aus dem alten SdrTextObjekt am SdrGrafObjekt setzen
+ pGrafObj->SetAttributes( aOldSet, FALSE );
+ */
+
+ }
+ else
+ {
+ // Riesenmist !!!
+ ASSERT( !this, "keine Gruppe ? (wieso dann Ersetzen?)" );
+
+ // wir haben derzeit nur Ersetzen vorgesehen, falls es ein Gruppen-Obj. ist !!!
+ }
+ }
+ else
+ {
+ SfxItemSet aFlySet( rOldFmt.GetAttrSet() );
+
+ if( bSetToBackground )
+ aFlySet.Put( SvxOpaqueItem(RES_OPAQUE, FALSE) );
+
+ // Groesse des alten Frames als Grafik-Groesse nehmen
+ aFlySet.Put( SwFmtFrmSize( ATT_FIX_SIZE, rPD.nWidth, rPD.nHeight ) );
+
+ // ggfs. horiz. Positionierungs-Relation korrigieren
+ const SwFmtHoriOrient &rHori = rOldFmt.GetHoriOrient();
+ if( FRAME == rHori.GetRelationOrient() )
+ aFlySet.Put( SwFmtHoriOrient( rHori.GetPos(), HORI_NONE,
+ REL_PG_PRTAREA ) );
+ // und rein damit ins Doc
+ pRet = rDoc.Insert( *pPaM, rFileName, aEmptyStr,
+ pGraph, &aFlySet, &rGrfSet );
+
+ // ggfs. fuer eindeutigen Grafik-Namen sorgen
+ if( rGrName.Len() )
+ {
+ String aName;
+ if(MakeUniqueGraphName(aName, rGrName))
+ pRet->SetName( aName );
+ }
+
+ // bei Einfuegen in existierendes Doc: Frames erzeugen:
+ if( rDoc.GetRootFrm()
+ && (FLY_AT_CNTNT == pRet->GetAnchor().GetAnchorId()) )
+ pRet->MakeFrms();
+ }
+ return pRet;
+}
+
+
+// MakeGrafNotInCntnt setzt eine nicht-Zeichengebundene Grafik
+// ( bGrafApo == TRUE )
+SwFrmFmt* SwWW8ImplReader::MakeGrafNotInCntnt( const WW8PicDesc& rPD,
+ const Graphic* pGraph, const String& rFileName,
+ const String& rGrName, const SfxItemSet& rGrfSet )
+{
+
+ UINT32 nWidth = rPD.nWidth;
+ UINT32 nHeight = rPD.nHeight;
+// nWidth += pSFlyPara->nLeMgn + pSFlyPara->nRiMgn;
+// + pSFlyPara->nLeLMgn + pSFlyPara->nRiLMgn;// bei bGrafApo ???
+// nHeight += pSFlyPara->nUpMgn + pSFlyPara->nLoMgn;
+// + pSFlyPara->nUpLMgn + pSFlyPara->nLoLMgn;// bei bGrafApo ???
+
+ // Vertikale Verschiebung durch Zeilenabstand
+ INT32 nNetHeight = nHeight + rPD.nCT + rPD.nCB;
+ if( pSFlyPara->nLineSpace && pSFlyPara->nLineSpace > nNetHeight )
+ pSFlyPara->nYPos =
+ (USHORT)( pSFlyPara->nYPos + pSFlyPara->nLineSpace - nNetHeight );
+
+ WW8FlySet aFlySet( *this, pWFlyPara, pSFlyPara, TRUE );
+
+ SwFmtAnchor aAnchor( pSFlyPara->eAnchor );
+ aAnchor.SetAnchor( pPaM->GetPoint() );
+ aFlySet.Put( aAnchor );
+
+ aFlySet.Put( SwFmtFrmSize( ATT_FIX_SIZE, nWidth, nHeight ) );
+
+ SwFlyFrmFmt* pFlyFmt = rDoc.Insert( *pPaM,
+ rFileName, aEmptyStr, // Name der Grafik !!
+ pGraph,
+ &aFlySet, // Attribute fuer den FlyFrm
+ &rGrfSet ); // Attribute fuer die Grafik
+ if( rGrName.Len() )
+ {
+ String aName;
+ if(MakeUniqueGraphName(aName, rGrName))
+ pFlyFmt->SetName( aName );
+ }
+
+ // Damit die Frames bei Einfuegen in existierendes Doc erzeugt werden:
+ if( rDoc.GetRootFrm()
+ && (FLY_AT_CNTNT == pFlyFmt->GetAnchor().GetAnchorId()) )
+ pFlyFmt->MakeFrms();
+ return pFlyFmt;
+}
+
+
+// MakeGrafInCntnt fuegt zeichengebundene Grafiken ein
+SwFrmFmt* SwWW8ImplReader::MakeGrafInCntnt( const WW8_PIC& rPic, const WW8PicDesc& rPD,
+ const Graphic* pGraph, const String& rFileName,
+ const String& rGrName, const SfxItemSet& rGrfSet )
+{
+ WW8FlySet aFlySet( *this, pPaM, rPic, rPD.nWidth, rPD.nHeight );
+
+ SwFrmFmt* pFlyFmt = 0;
+
+ if( !rFileName.Len() && nObjLocFc ) // dann sollte ists ein OLE-Object
+ pFlyFmt = ImportOle( pGraph, &aFlySet );
+
+
+ if( !pFlyFmt ) // dann eben als Graphic
+ pFlyFmt = rDoc.Insert( *pPaM,
+ rFileName, aEmptyStr, // Name der Grafik !!
+ pGraph,
+ &aFlySet, // Attribute fuer den FlyFrm
+ &rGrfSet ); // Attribute fuer die Grafik
+
+ if( rGrName.Len() )
+ {
+ String aName;
+ if( MakeUniqueGraphName( aName, rGrName ))
+ pFlyFmt->SetName( aName );
+ }
+
+ // Grafik im Rahmen ? ok, Rahmen auf Bildgroesse vergroessern
+ // ( nur wenn Auto-Breite )
+ if( pSFlyPara )
+ pSFlyPara->BoxUpWidth( rPD.nWidth );
+ return pFlyFmt;
+}
+
+SwFrmFmt* SwWW8ImplReader::ImportGraf1( WW8_PIC& rPic, SvStream* pSt,
+ ULONG nFilePos )
+{
+ SwFrmFmt* pRet = 0;
+ if( pSt->IsEof() || rPic.fError || rPic.MFP.mm == 99 )
+ return pRet;
+
+ String aFileName;
+ BOOL bInDoc;
+ Graphic* pGraph = 0;
+ BOOL bOk = ReadGrafFile( aFileName, pGraph, rPic, pSt, nFilePos, &bInDoc );
+
+ if ( !bOk )
+ { delete pGraph;
+ return pRet; // Grafik nicht korrekt eingelesen
+ }
+
+ WW8PicDesc aPD( rPic );
+
+
+ SwAttrSet aGrfSet( rDoc.GetAttrPool(), RES_GRFATR_BEGIN, RES_GRFATR_END-1);
+ if( aPD.nCL || aPD.nCR || aPD.nCT || aPD.nCB )
+ {
+ SwCropGrf aCrop( aPD.nCL, aPD.nCR, aPD.nCT, aPD.nCB) ;
+ aGrfSet.Put( aCrop );
+ }
+
+ if( pWFlyPara && pWFlyPara->bGrafApo )
+ pRet = MakeGrafNotInCntnt( aPD, pGraph, aFileName, aEmptyStr, aGrfSet );
+ else
+ pRet = MakeGrafInCntnt( rPic, aPD, pGraph, aFileName, aEmptyStr, aGrfSet );
+ delete pGraph;
+ return pRet;
+}
+
+
+
+BOOL SwWW8ImplReader::WW8QuickHackForMSDFF_DirectBLIPImport(SvStream& rSt,
+ WW8_PIC& rPic,
+ Graphic& rData,
+ String& rGraphName)
+{
+ BOOL bOk = FALSE;
+ ULONG nFilePos = 0;
+ ULONG nBLIPLen = 0;
+ ULONG nLength;
+ ULONG nSpContainerLen;
+ ULONG nCode;
+ rSt >> nSpContainerLen;
+
+ pMSDffManager->RetrieveNameOfBLIP( rSt,
+ rGraphName,
+ nSpContainerLen );
+ rSt.SeekRel( nSpContainerLen );
+ rSt >> nCode;
+ if(0xF0070000 == (nCode & 0xFFFF0000))
+ {
+ ULONG nLenFBSE;
+ rSt >> nLength;
+
+ const ULONG nSkipBLIPLen = 20; // bis zu nBLIPLen zu ueberspringende Bytes
+ const ULONG nSkipShapePos = 4; // dahinter bis zu nShapePos zu skippen
+ const ULONG nSkipBLIP = 4; // dahinter schliesst dann das BLIP an
+
+ nLenFBSE = nLength;
+
+ // ist FBSE gross genug fuer unsere Daten
+ BOOL bOk2 = ( nSkipBLIPLen + 4 + nSkipShapePos + 4 <= nLenFBSE );
+ if( bOk2 )
+ {
+ rSt.SeekRel( nSkipBLIPLen );
+ rSt >> nBLIPLen;
+ rSt.SeekRel( nSkipShapePos );
+ rSt >> nFilePos; // FilePos des Shape!
+ rSt.SeekRel( nSkipBLIP );
+ bOk2 = (0 == rSt.GetError());
+ nLength -= nSkipBLIPLen+ 4 + nSkipShapePos + 4;
+ if( 0 > nLength )
+ nLength = 0;
+ }
+ if( bOk2 )
+ {
+ // das BLIP Atom steht im Daten Stream unmittelbar hinter dem FBSE
+ //
+ bOk = pMSDffManager->GetBLIPDirect( rSt, rData );
+ }
+ }
+ return bOk;
+}
+
+BOOL SwWW8ImplReader::ImportURL(String &sURL,String &sMark,WW8_CP nStart)
+{
+ BOOL bRet=FALSE;
+ /*
+ * Save the reader state and process the sprms for this anchor cp.
+ * Doing so will set the nPicLocFc to the offset to find the hypertext
+ * data in the data stream.
+ */
+ WW8_CP nEndCp = nStart+1; //Only interested in the single 0x01 character
+
+ WW8ReaderSave aSave(this,nStart);
+
+ WW8PLCFManResult aRes;
+ nStart = pPlcxMan->Where();
+ while(nStart <= nEndCp)
+ {
+ if ( pPlcxMan->Get(&aRes)
+ && aRes.pMemPos && aRes.nSprmId )
+ {
+ //only interested in sprms which would set nPicLocFc
+ if ( (68 == aRes.nSprmId) || (0x6A03 == aRes.nSprmId) )
+ {
+ Read_PicLoc( aRes.nSprmId, aRes.pMemPos+ 1+
+ (8 > pWwFib->nVersion ? 0 : 1) + WW8SprmDataOfs(aRes.nSprmId),
+ 4);
+ break;
+ }
+ }
+ (*pPlcxMan)++;
+ nStart = pPlcxMan->Where();
+ }
+ long nOffset = nPicLocFc;
+ aSave.Restore(this);
+
+ long nOldPos = pDataStream->Tell();
+ WW8_PIC aPic;
+ pDataStream->Seek( nOffset);
+#ifdef __WW8_NEEDS_COPY
+ WW8_PIC_SHADOW aPicS;
+ pDataStream->Read( &aPicS, sizeof( aPicS ) );
+ WW8PicShadowToReal( &aPicS, &aPic );
+#else
+ pDataStream->Read( &aPic, sizeof( aPic ) );
+#endif
+ if((aPic.lcb > 0x44) && !pDataStream->GetError() )
+ {
+#ifdef DEBUG
+ pDataStream->SeekRel( 3 );
+ const BYTE MAGIC_A[16] =
+ {
+ 0xd0, 0xc9, 0xea, 0x79, 0xf9, 0xba, 0xce, 0x11,
+ 0x8c, 0x82, 0x00, 0xaa, 0x00, 0x4b, 0xa9, 0x0b
+ };
+ BYTE test[16];
+
+ pDataStream->Read( test, 16 );
+ ASSERT(!memcmp(MAGIC_A,test,16),
+ "Found a different MAGIC_A, cause for concern");
+#else
+ pDataStream->SeekRel(19);
+#endif
+ ULONG nLen,nFlags;
+ *pDataStream >> nLen;
+ ASSERT(nLen == 2,"Wrong flag len, cause for concern");
+ *pDataStream >> nFlags;
+ /* all bits zero except for the bottom 4 bits which are...
+ * 0: always set. bottom bit set to denote a link ?
+ * 1: set to denote an absolute link
+ * 2: never set ?
+ * 3: set to denote an anchor
+ */
+
+ const BYTE MAGIC_B[16] =
+ {
+ 0xe0, 0xc9, 0xea, 0x79, 0xf9, 0xba, 0xce, 0x11,
+ 0x8c, 0x82, 0x00, 0xaa, 0x00, 0x4b, 0xa9, 0x0b
+ };
+ const BYTE MAGIC_C[18] =
+ {
+ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
+ 0x00, 0x00
+ };
+
+ BYTE testb[16];
+ int nVersion=-1;
+
+ pDataStream->Read( testb, 16 );
+ if (memcmp(MAGIC_B,testb,16) == 0)
+ nVersion=1;
+ else if (memcmp(MAGIC_C,testb,16) == 0)
+ nVersion=2;
+ else
+ {
+ ASSERT(!this,"Found neither MAGIC_B or C, cause for concern");
+ nVersion=-1;
+ }
+
+ switch(nVersion)
+ {
+ case 1:
+ {
+ *pDataStream >> nLen;
+ sURL = WW8Read_xstz( *pDataStream, (USHORT)nLen/2, FALSE );
+ if (nFlags & 0x08)
+ {
+ long pos = pDataStream->Tell();
+ *pDataStream >> nLen;
+ sMark = WW8Read_xstz( *pDataStream, (USHORT)nLen, FALSE );
+ bRet = TRUE;
+ }
+ }
+ break;
+ case 2:
+ {
+ pDataStream->SeekRel(2); // skip over the last two bytes
+ *pDataStream >> nLen;
+ pDataStream->SeekRel(nLen); // skip over the 1st filename
+ pDataStream->SeekRel(24); // skip over MAGIC_D
+
+ *pDataStream >> nLen; //full len
+ *pDataStream >> nLen; //real str len
+ pDataStream->SeekRel(2); // skip over the value 00 03
+ sURL = WW8Read_xstz( *pDataStream, (USHORT)nLen/2, FALSE );
+ if (nFlags & 0x08)
+ {
+ *pDataStream >> nLen;
+ sMark = WW8Read_xstz( *pDataStream, (USHORT)nLen, FALSE );
+ bRet = TRUE;
+ }
+ }
+ break;
+ }
+ }
+ return( bRet );
+}
+
+
+SwFrmFmt* SwWW8ImplReader::ImportGraf( SdrTextObj* pTextObj,
+ SwFrmFmt* pOldFlyFmt,
+ BOOL bSetToBackground )
+{
+ SwFrmFmt* pRet = 0;
+ if( ( ( pStrm == pDataStream ) && !nPicLocFc )
+ || ( nIniFlags & WW8FL_NO_GRAF ) )
+ return pRet;
+
+ ::SetProgressState( nProgress, rDoc.GetDocShell() ); // Update
+
+ /*
+ kleiner Spass von Microsoft: manchmal existiert ein Stream Namens DATA
+ Dieser enthaelt dann den PICF und die entsprechende Grafik !!!
+ Wir mappen ansonsten die Variable pDataStream auf pStream.
+ */
+
+ long nOldPos = pDataStream->Tell();
+ WW8_PIC aPic;
+ pDataStream->Seek( nPicLocFc );
+#ifdef __WW8_NEEDS_COPY
+ WW8_PIC_SHADOW aPicS;
+ pDataStream->Read( &aPicS, sizeof( aPicS ) );
+ WW8PicShadowToReal( &aPicS, &aPic );
+#else
+ pDataStream->Read( &aPic, sizeof( aPic ) );
+#endif // defined __WW8_NEEDS_COPY
+
+ // Plausibilitaetstest ist noetig, da z.B. bei CheckBoxen im
+ // Feld-Result ein WMF-aehnliches Struct vorkommt.
+ if( (aPic.lcb >= 58)
+ && !pDataStream->GetError() )
+ {
+ if( pFlyFmtOfJustInsertedGraphic )
+ {
+ // Soeben haben wir einen Grafik-Link ins Doc inserted.
+ // Wir muessen ihn jetzt noch Positioniern und Skalieren.
+ //
+ WW8PicDesc aPD( aPic );
+
+ WW8FlySet aFlySet( *this, pPaM, aPic, aPD.nWidth, aPD.nHeight );
+
+ pFlyFmtOfJustInsertedGraphic->SetAttr( aFlySet );
+
+
+ // ACHTUNG: Zuschneiden ist hier noch nicht implementiert!
+
+ // einfach die Crop-Infos bauen und in aFlySet setzen ???
+ /*
+ if( aPD.nCL || aPD.nCR || aPD.nCT || aPD.nCB )
+ {
+ SwCropGrf aCrop;
+ aCrop.Left() = aPD.nCL;
+ aCrop.Right() = aPD.nCR;
+ aCrop.Top() = aPD.nCT;
+ aCrop.Bottom() = aPD.nCB;
+ pFlyFmtOfJustInsertedGraphic->SetAttr( aCrop ); // ? ? ?
+ }
+ */
+
+
+ pFlyFmtOfJustInsertedGraphic = 0;
+ }
+ else if((0x64 == aPic.MFP.mm) || (0x66 == aPic.MFP.mm))
+ {
+ pDataStream->SeekRel( 2 );
+ // Tja, da haben wir wohl ein MSO Drawing File Format am Bein.
+ //
+ SdrObject* pObject = 0;
+ WW8PicDesc aPD( aPic );
+ String aGrName;
+ if( 0x66 == aPic.MFP.mm ) // verlinkte Grafik im Escher-Objekt
+ { // ================ =============
+ BYTE nNameLen;
+ *pDataStream >> nNameLen;
+ pDataStream->SeekRel( nNameLen );
+
+ Rectangle aRect( 0,0, aPD.nWidth, aPD.nHeight);
+ SvxMSDffImportData aData( aRect );
+ pObject =
+// pMSDffManager->ImportObjAtCurrentStreamPos(*pDataStream,
+// aData );
+ pMSDffManager->ImportObj(*pDataStream, &aData, &aRect);
+ if( pObject )
+ {
+ // fuer den Rahmen
+ SfxItemSet aAttrSet( rDoc.GetAttrPool(),
+ RES_FRMATR_BEGIN,
+ RES_FRMATR_END-1 );
+ // fuer die Grafik
+ SfxItemSet aGrSet( rDoc.GetAttrPool(),
+ RES_GRFATR_BEGIN,
+ RES_GRFATR_END-1 );
+
+ if( aPD.nCL || aPD.nCR || aPD.nCT || aPD.nCB )
+ {
+ SwCropGrf aCrop( aPD.nCL, aPD.nCR, aPD.nCT, aPD.nCB );
+ aGrSet.Put( aCrop );
+ }
+
+ SwFrmFmt* pNewFlyFmt = 0;
+ BOOL bTextObjWasGrouped = FALSE;
+ // Groesse aus der WinWord PIC-Struktur als Grafik-Groesse nehmen
+ aAttrSet.Put( SwFmtFrmSize( ATT_FIX_SIZE, aPD.nWidth, aPD.nHeight ) );
+
+ // ggfs. altes AttrSet uebernehmen und
+ // horiz. Positionierungs-Relation korrigieren
+ if( pOldFlyFmt )
+ {
+ aAttrSet.Put( pOldFlyFmt->GetAttrSet() );
+ const SwFmtHoriOrient &rHori = pOldFlyFmt->GetHoriOrient();
+ if( FRAME == rHori.GetRelationOrient() )
+ aAttrSet.Put( SwFmtHoriOrient( rHori.GetPos(),
+ HORI_NONE,
+ REL_PG_PRTAREA ) );
+ }
+
+ XubString aObjectName( pObject->GetName() );
+ if( UINT16( OBJ_OLE2 ) == pObject->GetObjIdentifier() )
+ {
+ SvInPlaceObjectRef xIPRef(
+ ((SdrOle2Obj*)pObject)->GetObjRef() );
+
+ // kein GrafSet uebergeben, da nur fuer Cropp sinnvoll,
+ // was die UI derzeit (27.1.99) noch nicht kann khz.
+ pNewFlyFmt = rDoc.Insert( *pPaM, &xIPRef, &aAttrSet );
+ }
+ else
+ {
+ SdrGrafObj* pGraphObject = 0;
+ pGraphObject = PTR_CAST(SdrGrafObj, pObject);
+ if( pGraphObject )
+ {
+ // Nun den Link bzw. die Grafik ins Doc stopfen
+ const Graphic& rGraph = pGraphObject->GetGraphic();
+ BOOL bDone = FALSE;
+
+ if( pGraphObject->IsLinkedGraphic() )
+ {
+ aGrName = pGraphObject->GetFileName();
+ DirEntry aGrfFileEntry( aGrName );
+ if( aGrfFileEntry.Exists()
+ || (GRAPHIC_NONE == rGraph.GetType()))
+ {
+ if( pOldFlyFmt && pTextObj && pTextObj->GetUpGroup() )
+ {
+ bTextObjWasGrouped = TRUE;
+ /*
+ Hier *nichts* ins Doc inserten!
+ ( lediglich in der DrawPage statt
+ dem Sdr-Text-Objekt einen Grafik-
+ Link einbauen )
+ */
+ pNewFlyFmt= MakeGrafByFlyFmt(
+ pTextObj, *pOldFlyFmt,
+ aPD, 0, aGrName,
+ aEmptyStr, aGrSet,
+ bSetToBackground );
+ }
+ else
+ pNewFlyFmt= rDoc.Insert(*pPaM,
+ aGrName,
+ aEmptyStr,
+ 0, // Graphic*
+ &aAttrSet, // SfxItemSet* Rahmen
+ &aGrSet ); // SfxItemSet* Grafik
+ bDone = TRUE;
+ }
+ }
+
+ if( !bDone )
+ pNewFlyFmt= rDoc.Insert(*pPaM,
+ aEmptyStr,
+ aEmptyStr,
+ &rGraph,
+ &aAttrSet, // SfxItemSet* Rahmen
+ &aGrSet ); // SfxItemSet* Grafik
+
+ }
+ }
+ if( pNewFlyFmt ) // also nur, wenn wir ein *Insert* gemacht haben
+ {
+ pRet = pNewFlyFmt;
+ // mehrfaches Auftreten gleicher Grafik-Namen vermeiden
+ if( aObjectName.Len() )
+ {
+ String aName;
+ if( MakeUniqueGraphName( aName, aObjectName ))
+ pNewFlyFmt->SetName( aName );
+ }
+ // Zeiger auf neues Objekt ermitteln und
+ // Z-Order-Liste entsprechend korrigieren (oder Eintrag loeschen)
+ SdrObject* pOurNewObject = pNewFlyFmt->FindSdrObject();
+ if( !pOurNewObject )
+ {
+ if( !pDrawModel ) // 1. GrafikObjekt des Docs
+ GrafikCtor();
+
+ SwFlyDrawContact* pContactObject
+ = new SwFlyDrawContact( (SwFlyFrmFmt*)pNewFlyFmt,
+ pDrawModel );
+ pOurNewObject = pContactObject->GetMaster();
+ }
+ if( pOurNewObject )
+ {
+ pMSDffManager->ExchangeInShapeOrder( pObject, 0, 0, pOurNewObject );
+ // Das Kontakt-Objekt MUSS in die Draw-Page gesetzt werden,
+ // damit in SwWW8ImplReader::LoadDoc1() die Z-Order
+ // festgelegt werden kann !!!
+ pDrawPg->InsertObject( pOurNewObject );
+
+ // altes SdrGrafObj aus der Page loeschen und zerstoeren
+ pDrawPg->RemoveObject( pObject->GetOrdNum() );
+ delete pObject;
+ }
+ else
+ pMSDffManager->RemoveFromShapeOrder( pObject );
+ }
+ else
+ pMSDffManager->RemoveFromShapeOrder( pObject );
+
+ // auch das ggfs. uebergebene alte Sdr-Text-Objekt aus der Page
+ // loeschen, falls nicht gruppiert,
+ if( pTextObj && !bTextObjWasGrouped )
+ {
+ pDrawPg->RemoveObject( pTextObj->GetOrdNum() );
+ }
+ }
+ }
+ else // eingebettete Grafik im Escher-Objekt
+ { // =================== =============
+ Graphic aGraph;
+ ULONG nCode;
+ *pDataStream >> nCode;
+ if(0xF004000F == nCode)
+ {
+ if( !WW8QuickHackForMSDFF_DirectBLIPImport(
+ *pDataStream, aPic, aGraph, aGrName) )
+ {
+ ASSERT( !this, "Wo ist die Grafik ?" );
+ }
+ else
+ {
+ // Positionieren, Skalieren und Zuschneiden des Pictures
+ //
+ SfxItemSet aGrfSet(rDoc.GetAttrPool(), RES_GRFATR_BEGIN,
+ RES_GRFATR_END-1);
+ if( aPD.nCL || aPD.nCR || aPD.nCT || aPD.nCB )
+ {
+ SwCropGrf aCrop( aPD.nCL, aPD.nCR, aPD.nCT, aPD.nCB );
+ aGrfSet.Put( aCrop );
+ }
+ if( pOldFlyFmt )
+ pRet = MakeGrafByFlyFmt(pTextObj, *pOldFlyFmt, aPD,
+ &aGraph,
+ aEmptyStr,
+ aGrName,
+ aGrfSet, bSetToBackground);
+ else
+ if( pWFlyPara && pWFlyPara->bGrafApo )
+ pRet = MakeGrafNotInCntnt( aPD, &aGraph, aEmptyStr, aGrName, aGrfSet );
+ else
+ pRet = MakeGrafInCntnt( aPic, aPD, &aGraph, aEmptyStr, aGrName, aGrfSet );
+ }
+ }
+ else
+ {
+ // leider verloren...
+ ASSERT( !this, "Wo ist das Shape fuer die Grafik ?" );
+ }
+ }
+ }
+ else if( (aPic.lcb >= 58)
+ && aPic.MFP.xExt
+ && aPic.MFP.yExt )
+ {
+ pRet = ImportGraf1( aPic, pDataStream, nPicLocFc );
+ }
+ }
+ pDataStream->Seek( nOldPos );
+ return pRet;
+}
+
+#ifdef __WW8_NEEDS_COPY
+
+void WW8PicShadowToReal( WW8_PIC_SHADOW * pPicS, WW8_PIC * pPic )
+{
+ pPic->lcb = SVBT32ToLong( pPicS->lcb );
+ pPic->cbHeader = SVBT16ToShort( pPicS->cbHeader );
+ pPic->MFP.mm = SVBT16ToShort( pPicS->MFP.mm );
+ pPic->MFP.xExt = SVBT16ToShort( pPicS->MFP.xExt );
+ pPic->MFP.yExt = SVBT16ToShort( pPicS->MFP.yExt );
+ pPic->MFP.hMF = SVBT16ToShort( pPicS->MFP.hMF );
+ for( USHORT i = 0; i < 14 ; i++ )
+ pPic->rcWinMF[i] = SVBT8ToByte( pPicS->rcWinMF[i] );
+ pPic->dxaGoal = SVBT16ToShort( pPicS->dxaGoal );
+ pPic->dyaGoal = SVBT16ToShort( pPicS->dyaGoal );
+ pPic->mx = SVBT16ToShort( pPicS->mx );
+ pPic->my = SVBT16ToShort( pPicS->my );
+ pPic->dxaCropLeft = SVBT16ToShort( pPicS->dxaCropLeft );
+ pPic->dyaCropTop = SVBT16ToShort( pPicS->dyaCropTop );
+ pPic->dxaCropRight = SVBT16ToShort( pPicS->dxaCropRight );
+ pPic->dyaCropBottom = SVBT16ToShort( pPicS->dyaCropBottom );
+ pPic->brcl = pPicS->aBits1[0] & 0x0f;
+ pPic->fFrameEmpty = (pPicS->aBits1[0] & 0x10) >> 4;
+ pPic->fBitmap = (pPicS->aBits1[0] & 0x20) >> 5;
+ pPic->fDrawHatch = (pPicS->aBits1[0] & 0x40) >> 6;
+ pPic->fError = (pPicS->aBits1[0] & 0x80) >> 7;
+ pPic->bpp = pPicS->aBits2[0];
+ for( USHORT j = 0; j < 4; j++ ){
+ pPic->rgbrc[j].aBits1[0] = pPicS->rgbrc[j].aBits1[0];
+ pPic->rgbrc[j].aBits1[1] = pPicS->rgbrc[j].aBits1[1];
+ }
+ pPic->dxaOrigin = SVBT16ToShort( pPicS->dxaOrigin );
+ pPic->dyaOrigin = SVBT16ToShort( pPicS->dyaOrigin );
+}
+
+void WW8FSPAShadowToReal( WW8_FSPA_SHADOW * pFSPAS, WW8_FSPA * pFSPA )
+{
+ //long nSpId; //Shape Identifier. Used in conjunction with the office art data (found via fcDggInfo in the FIB) to find the actual data for this shape.
+ //long nXaLeft; //left of rectangle enclosing shape relative to the origin of the shape
+ //long nYaTop; //top of rectangle enclosing shape relative to the origin of the shape
+ //long nXaRight; //right of rectangle enclosing shape relative to the origin of the shape
+ //long nYaBottom;//bottom of the rectangle enclosing shape relative to the origin of the shape
+ //USHORT bHdr:1;
+ //USHORT nbx:2;
+ //USHORT nby:2;
+ //USHORT nwr:4;
+ //USHORT nwrk:4;
+ //USHORT bRcaSimple:1;
+ //USHORT bAnchorLock:1;
+ //long nTxbx; //count of textboxes in shape (undo doc only)
+
+
+ pFSPA->nSpId = SVBT32ToLong( pFSPAS->nSpId );
+ pFSPA->nXaLeft = SVBT32ToLong( pFSPAS->nXaLeft );
+ pFSPA->nYaTop = SVBT32ToLong( pFSPAS->nYaTop );
+ pFSPA->nXaRight = SVBT32ToLong( pFSPAS->nXaRight );
+ pFSPA->nYaBottom = SVBT32ToLong( pFSPAS->nYaBottom );
+
+ USHORT nBits = (USHORT)SVBT16ToShort( pFSPAS->aBits1 );
+
+ pFSPA->bHdr = 0 != ( nBits & 0x0001 );
+ pFSPA->nbx = ( nBits & 0x0006 ) >> 1;
+ pFSPA->nby = ( nBits & 0x0018 ) >> 3;
+ pFSPA->nwr = ( nBits & 0x01E0 ) >> 5;
+ pFSPA->nwrk = ( nBits & 0x1E00 ) >> 9;
+ pFSPA->bRcaSimple = 0 != ( nBits & 0x2000 );
+ pFSPA->bBelowText = 0 != ( nBits & 0x4000 );
+ pFSPA->bAnchorLock = 0 != ( nBits & 0x8000 );
+ pFSPA->nTxbx = SVBT32ToLong( pFSPAS->nTxbx );
+}
+#endif // defined __WW8_NEEDS_COPY
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8graf2.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.39 2000/09/18 16:04:59 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.38 2000/09/12 13:19:04 kz
+ add. include tools/fsys.hxx
+
+ Revision 1.37 2000/08/25 12:27:43 jp
+ Graphic Crop-Attribut exported to SVX
+
+ Revision 1.36 2000/08/17 10:24:12 khz
+ #77690# prevent division by zero if Picture Size is zero
+
+ Revision 1.35 2000/06/13 08:24:46 os
+ using UCB
+
+ Revision 1.34 2000/05/25 08:07:01 khz
+ Piece Table optimization, Unicode changes, Bugfixes
+
+ Revision 1.33 2000/05/16 12:12:57 jp
+ ASS_FALSE define removed
+
+ Revision 1.32 2000/05/16 11:14:50 khz
+ Unicode code-conversion
+
+ Revision 1.31 2000/04/04 16:05:17 hr
+ #65293#: WW8PicShadowToReal()
+
+ Revision 1.30 2000/02/21 13:08:19 jp
+ #70473# changes for unicode
+
+ Revision 1.29 2000/02/18 09:35:10 cmc
+ #69372# Improved Hyperlink Importing for WW97
+
+ Revision 1.28 2000/02/11 14:40:08 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.27 1999/11/19 15:02:46 khz
+ Special Task! Use new method to import Shapes: SvxMSDffManager::ImportObj()
+
+ Revision 1.26 1999/08/09 12:16:04 JP
+ read W95 format from stream
+
+
+ Rev 1.25 09 Aug 1999 14:16:04 JP
+ read W95 format from stream
+
+ Rev 1.24 06 Aug 1999 18:06:36 KHZ
+ Task #65322# Changes in WW8FSPAShadowToReal() (#2)
+
+ Rev 1.23 08 Jun 1999 19:05:50 KHZ
+ Task #65322# Changes in WW8FSPAShadowToReal()
+
+ Rev 1.22 02 Jun 1999 09:32:26 KHZ
+ Task #66227# a) kein Unicode bei Ver67 ;-) b) Grafik in grupp. Textbox
+
+ Rev 1.21 26 Apr 1999 17:40:24 KHZ
+ Task #61381# Attribute von Textboxen in denen NUR EINE Grafik steht
+
+ Rev 1.20 18 Feb 1999 20:24:38 KHZ
+ Task #61659# Umlauf im Hintergrund
+
+ Rev 1.19 17 Feb 1999 15:23:42 KHZ
+ Task #61382# jetzt auch Textbox-Grafiken im Hintergrund ( SvxOpaqItem(FALSE) )
+
+ Rev 1.18 12 Feb 1999 16:51:06 KHZ
+ Task #61381# Ersetzen von Sdr-Text-Objekten im Writer durch Rahmen (3)
+
+ Rev 1.17 05 Feb 1999 10:32:46 KHZ
+ Task #61381# in SdrTextObj verankerte Grafiken und OLEs (5)
+
+ Rev 1.16 28 Jan 1999 17:10:48 KHZ
+ Task #60715# in SdrTextObj verankerte Grafiken und OLEs (4)
+
+ Rev 1.15 27 Jan 1999 12:22:40 KHZ
+ Task #60715# in SdrTextObj verankerte Grafiken und OLEs (3)
+
+ Rev 1.14 27 Jan 1999 10:58:02 KHZ
+ Task #60715# in SdrTextObj verankerte Grafiken und OLEs (2)
+
+ Rev 1.13 25 Jan 1999 10:25:46 KHZ
+ Task #60715# in Textobjekt verankerte Grafik als Grafik importieren
+
+ Rev 1.12 30 Nov 1998 17:46:54 JP
+ Task #59822#: OLE-Objecte importieren
+
+ Rev 1.11 24 Nov 1998 20:46:22 JP
+ Task #59822#: OLE-Objecte einlesen
+
+ Rev 1.10 03 Sep 1998 22:14:22 KHZ
+ Task #55189# Textboxen
+
+ Rev 1.9 05 Aug 1998 17:16:24 KHZ
+ Task #53614# komprimierte WMF, Enh.Metafile und PICT Grafiken
+
+ Rev 1.8 30 Jul 1998 20:52:38 KHZ
+ Task #52607# GPF unter Unix behoben
+
+ Rev 1.7 30 Jul 1998 14:31:34 KHZ
+ Task #52607# Grafikimport ueber Quick-Hack auch fuer WMF
+
+ Rev 1.6 30 Jul 1998 00:03:10 KHZ
+ Task #53614# Grafiken, die NICHT ueber dem Text liegen (MSDFF-Quick-Hack)
+
+ Rev 1.5 22 Jul 1998 16:16:04 HR
+ ww8graf fuer UNX
+
+ Rev 1.4 21 Jul 1998 14:52:10 KHZ
+ Task #52607# (WW 97 Import)
+
+ Rev 1.3 21 Jul 1998 12:33:46 KHZ
+ als MSDrawingObject eingebettete Grafik (Teil 1)
+
+ Rev 1.2 13 Jul 1998 15:29:16 KHZ
+ Task #52607# embeded Grafiken (NICHT UEBER den Text gelegte)
+
+ Rev 1.1 30 Jun 1998 21:33:18 KHZ
+ Header/Footer/Footnotes weitgehend ok
+
+ Rev 1.0 16 Jun 1998 11:06:48 KHZ
+ Initial revision.
+
+*************************************************************************/
+
+
+
+
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
new file mode 100644
index 000000000000..988c30ee44c5
--- /dev/null
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -0,0 +1,2996 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8par.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define _SVSTDARR_STRINGSDTOR
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+#ifndef _SFXDOCINF_HXX //autogen
+#include <sfx2/docinf.hxx>
+#endif
+#ifndef _SVX_TSTPITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVX_CSCOITEM_HXX //autogen
+#include <svx/cscoitem.hxx>
+#endif
+
+#ifndef _SVX_SVDOBJ_HXX
+#include <svx/svdobj.hxx>
+#endif
+#ifndef _SVDPAGE_HXX //autogen
+#include <svx/svdpage.hxx>
+#endif
+
+#ifndef _SVX_PAPERINF_HXX //autogen
+#include <svx/paperinf.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX
+#include <svx/lrspitem.hxx> // SvxLRSpaceItem
+#endif
+#ifndef _MSDFFIMP_HXX
+#include <svx/msdffimp.hxx>
+#endif
+
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+
+#ifndef _SVXMSBAS_HXX
+#include <svx/svxmsbas.hxx>
+#endif
+
+#ifdef DEBUG
+# ifndef _SOUND_HXX //autogen
+# include <vcl/sound.hxx>
+# endif
+#endif
+
+#ifndef _RTL_TENCINFO_H
+#include <rtl/tencinfo.h>
+#endif
+#ifndef _OFA_FLTRCFG_HXX
+#include <offmgr/fltrcfg.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+
+#ifndef _FMTFTN_HXX //autogen
+#include <fmtftn.hxx>
+#endif
+#ifndef _FMTFLD_HXX
+#include <fmtfld.hxx>
+#endif
+#ifndef _BOOKMRK_HXX
+#include <bookmrk.hxx>
+#endif
+#ifndef _FTNIDX_HXX
+#include <ftnidx.hxx>
+#endif
+#ifndef _REFFLD_HXX
+#include <reffld.hxx>
+#endif
+#ifndef _TXTFTN_HXX //autogen
+#include <txtftn.hxx>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FMTCNCT_HXX
+#include <fmtcnct.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTHBSH_HXX //autogen
+#include <fmthbsh.hxx>
+#endif
+#ifndef _FTNINFO_HXX //autogen
+#include <ftninfo.hxx>
+#endif
+#ifndef _WW8PAR2_HXX
+#include <ww8par2.hxx> // class WW8RStyle, class WW8AnchorPara
+#endif
+#ifndef _WW8PAR_HXX
+#include <ww8par.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx> // fuer SwPam
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx> // class SwTxtNode
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx> // class SwPageDesc
+#endif
+#ifndef _NUMRULE_HXX //autogen
+#include <numrule.hxx>
+#endif
+#ifndef _PARATR_HXX //autogen
+#include <paratr.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx> // ReadFilterFlags
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx>
+#endif
+#ifndef _FMTCLBL_HXX
+#include <fmtclbl.hxx>
+#endif
+#ifndef _FLTINI_HXX
+#include <fltini.hxx> // ReadFilterFlags
+#endif
+#ifndef _SWDOCSH_HXX //autogen
+#include <docsh.hxx>
+#endif
+#ifndef _DOCUFLD_HXX //autogen
+#include <docufld.hxx>
+#endif
+
+#ifdef DEBUG
+#ifndef _DOCARY_HXX //autogen
+#include <docary.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+
+#endif
+
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx> // Progress
+#endif
+#ifndef _STATSTR_HRC
+#include <statstr.hrc> // ResId fuer Statusleiste
+#endif
+#ifndef _SWSWERROR_H
+#include <swerror.h> // ERR_WW8_...
+#endif
+
+
+//-----------------------------------------
+// diverses
+//-----------------------------------------
+
+
+#define MM_250 1417 // WW-Default fuer Hor. Seitenraender: 2.5 cm
+#define MM_200 1134 // WW-Default fuer u.Seitenrand: 2.0 cm
+
+
+
+
+
+SwMSDffManager::SwMSDffManager( SwWW8ImplReader& rRdr )
+ : SvxMSDffManager( *rRdr.pTableStream,
+ rRdr.pWwFib->fcDggInfo,
+ rRdr.pDataStream, 0, 0,
+ COL_WHITE, 12 /* in Point */,
+ rRdr.pStrm ),
+ rReader( rRdr )
+{
+ const OfaFilterOptions* pOpt = OFF_APP()->GetFilterOptions();
+#if SUPD>593
+ nSvxMSDffOLEConvFlags = GetFilterFlags();
+#endif
+}
+
+UINT32 SwMSDffManager::GetFilterFlags()
+{
+#if SUPD>593
+ UINT32 nFlags;
+ const OfaFilterOptions* pOpt = OFF_APP()->GetFilterOptions();
+ if( pOpt->IsMathType2StarMath() )
+ nFlags |= OLE_MATHTYPE_2_STARMATH;
+ if( pOpt->IsWinWord2StarWriter() )
+ nFlags |= OLE_WINWORD_2_STARWRITER;
+ if( pOpt->IsExcel2StarCalc() )
+ nFlags |= OLE_EXCEL_2_STARCALC;
+ if( pOpt->IsPowerPoint2StarImpress() )
+ nFlags |= OLE_POWERPOINT_2_STARIMPRESS;
+ return nFlags;
+#endif
+}
+/***************************************************************************
+# Spezial FastSave - Attribute
+#**************************************************************************/
+
+#if 0
+typedef BYTE Bit256[32];
+
+inline BOOL GetBit( Bit256& rBits, BYTE nBitNo )
+{
+ return ( rBits[nBitNo >> 3] >> ( nBitNo & 0x7 ) ) & 0x1;
+}
+
+inline void SetBit( Bit256& rBits, BYTE nBitNo, BOOL bInp )
+{
+ if( bInp )
+ rBits[nBitNo >> 3] |= 1 << ( nBitNo & 0x7 );
+ else
+ rBits[nBitNo >> 3] &= ~( 1 << ( nBitNo & 0x7 ) );
+}
+#endif
+
+void SwWW8ImplReader::Read_StyleCode( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen < 0 )
+ {
+ bCpxStyle = FALSE;
+ return;
+ }
+ INT16 nColl = SVBT16ToShort( pData );
+ if( (USHORT)nColl < nColls )
+ {
+ SetTxtFmtCollAndListLevel( *pPaM, pCollA[ nColl ] );
+ bCpxStyle = TRUE;
+ }
+}
+
+// Read_Majority ist fuer Majority ( 103 ) und Majority50 ( 108 )
+void SwWW8ImplReader::Read_Majority( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen < 0 ){
+ return;
+ }
+}
+
+//-----------------------------------------
+// temp. Test
+//-----------------------------------------
+
+long SwWW8ImplReader::Read_Piece( WW8PLCFManResult* pRes, BOOL bStartAttr )
+{
+ if( !bStartAttr )
+ return 0;
+// pStrm->Seek( WW8Cp2Fc( pRes->nCp2OrIdx, 0 ) ); // nAktCp //!!!Mogel
+ return 0;
+}
+
+
+
+//-----------------------------------------
+// Stack
+//-----------------------------------------
+BOOL SwWW8FltControlStack::IsFtnEdnBkmField(SwFmtFld& rFmtFld, USHORT& nBkmNo)
+{
+ const SwField* pFld = rFmtFld.GetFld();
+ USHORT nSubType;
+ return( pFld
+ && (RES_GETREFFLD == pFld->Which())
+ && ( (REF_FOOTNOTE == (nSubType = pFld->GetSubType()))
+ || (REF_ENDNOTE == nSubType))
+ && ((SwGetRefField*)pFld)->GetSetRefName().Len()
+ // find Sequence No of corresponding Foot-/Endnote
+ && (USHRT_MAX != (nBkmNo = pDoc->FindBookmark(
+ ((SwGetRefField*)pFld)->GetSetRefName() ))));
+}
+
+void SwWW8FltControlStack::NewAttr(const SwPosition& rPos, const SfxPoolItem& rAttr)
+{
+ USHORT nBkmNo;
+ if( (RES_TXTATR_FIELD == rAttr.Which())
+ && IsFtnEdnBkmField((SwFmtFld&)rAttr, nBkmNo) )
+ {
+ SwFltStackEntry *pTmp = new SwFltStackEntry(rPos, rAttr.Clone());
+ Insert(pTmp, Count());
+ }
+ else
+ SwFltControlStack::NewAttr(rPos, rAttr);
+}
+
+void SwWW8FltControlStack::SetAttrInDoc(const SwPosition& rTmpPos, SwFltStackEntry* pEntry)
+{
+ switch( pEntry->pAttr->Which() )
+ {
+ case RES_LR_SPACE:
+ {
+ SwPaM aRegion( rTmpPos );
+ if (pEntry->MakeRegion(pDoc, aRegion, FALSE))
+ {
+ SvxLRSpaceItem aLR( *(SvxLRSpaceItem*)pEntry->pAttr );
+ BOOL bChange1stLine = 1 == aLR.GetTxtFirstLineOfst();
+ ULONG nStart = aRegion.Start()->nNode.GetIndex();
+ ULONG nEnd = aRegion.End()->nNode.GetIndex();
+ const SwNumRule* pRule;
+ const SwNodeNum* pNum;
+ for(; nStart <= nEnd; ++nStart)
+ {
+ SwNode* pNode = pDoc->GetNodes()[ nStart ];
+ if( pNode->IsTxtNode() )
+ {
+ if( bChange1stLine )
+ {
+ if( 0 != (pNum = ((SwTxtNode*)pNode)->GetNum() )
+ && (MAXLEVEL > pNum->GetLevel())
+ && 0 != (pRule = ((SwTxtNode*)pNode)->GetNumRule() ) )
+ {
+ const SwNumFmt rNumFmt = pRule->Get( pNum->GetLevel() );
+ aLR.SetTxtFirstLineOfst( rNumFmt.GetFirstLineOffset() );
+ }
+ else
+ aLR.SetTxtFirstLineOfst( 0 );
+ }
+ ((SwCntntNode*)pNode)->SetAttr( aLR );
+
+ // wenn wir dies nicht tun, ueberschreibt die NumRule uns alle
+ // harten L-Randeinstellungen
+ pNode->SetNumLSpace( FALSE );
+ }
+ }
+ }
+ }
+ break;
+ case RES_TXTATR_FIELD:
+ {
+ SwFmtFld& rFmtFld = *(SwFmtFld*)pEntry->pAttr;
+ const SwField* pFld = rFmtFld.GetFld();
+ USHORT nBkmNo;
+ if( IsFtnEdnBkmField(rFmtFld, nBkmNo) )
+ {
+ SwBookmark& rBkMrk = pDoc->GetBookmark( nBkmNo );
+
+ const SwPosition& rBkMrkPos = rBkMrk.GetPos();
+
+ SwTxtNode* pTxt = rBkMrkPos.nNode.GetNode().GetTxtNode();
+ if( pTxt && rBkMrkPos.nContent.GetIndex() )
+ {
+ SwTxtAttr* pFtn = pTxt->GetTxtAttr( rBkMrkPos.nContent.GetIndex()-1,
+ RES_TXTATR_FTN );
+ if( pFtn )
+ {
+ USHORT nRefNo = ((SwTxtFtn*)pFtn)->GetSeqRefNo();
+
+ ((SwGetRefField*)pFld)->SetSeqNo( nRefNo );
+
+ if( pFtn->GetFtn().IsEndNote() )
+ ((SwGetRefField*)pFld)->SetSubType( REF_ENDNOTE );
+ }
+ }
+ /*
+ const SwStartNode* pSearchNode =
+ rBkMrkPos.nNode.GetNode().FindFootnoteStartNode();
+
+ if( pSearchNode )
+ {
+ const SwFtnIdxs& rFtnIdxs = pDoc->GetFtnIdxs();
+
+ const USHORT nFtnCnt = rFtnIdxs.Count();
+
+ for(USHORT n = 0; n < nFtnCnt; ++n )
+ {
+ SwTxtFtn* pFtn = rFtnIdxs[ n ];
+ const SwNodeIndex* pSttIdx =
+ ((SwTxtFtn*)pFtn)->GetStartNode();
+ if( pSttIdx &&
+ (pSearchNode ==
+ pSttIdx->GetNode().GetStartNode()) )
+ {
+ USHORT nRefNo = pFtn->SetSeqRefNo();
+
+ ((SwGetRefField*)pFld)->SetSeqNo( nRefNo );
+
+ }
+ }
+ }
+ */
+ }
+ SwNodeIndex aIdx( pEntry->nMkNode, +1 );
+ SwPaM aPaM( aIdx, pEntry->nMkCntnt );
+ pDoc->Insert(aPaM, *pEntry->pAttr);
+ }
+ break;
+ default: SwFltControlStack::SetAttrInDoc(rTmpPos, pEntry);
+ }
+}
+
+
+
+//-----------------------------------------
+// Tabs
+//-----------------------------------------
+#define DEF_TAB_ANZ 13 // So viele Default-Tabs
+
+#if 0 // Nach MA 5.8.96 nicht mehr noetig
+void SwWW8ImplReader::SetImplicitTab()
+{
+ SvxTabStopItem aTabs( *(SvxTabStopItem*)GetFmtAttr( RES_PARATR_TABSTOP ));
+ aTabs.Insert( SvxTabStop( 0, SVX_TAB_ADJUST_DEFAULT ) );
+ NewAttr( aTabs );
+}
+#endif
+
+void SwWW8ImplReader::Read_Tab( USHORT nId, BYTE* pData, short nLen )
+{
+ if( nLen < 0 ){
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_PARATR_TABSTOP );
+ return;
+ }
+
+ // Para L-Space
+ short nLeftPMgn = ( pAktColl ) ? pCollA[nAktColl].nLeftParaMgn
+ : nLeftParaMgn;
+
+ // Para L-Space OR Left Margin of Para's first line respectively
+ short nLeftMostPos = ( pAktColl ) ? pCollA[nAktColl].nTxtFirstLineOfst
+ : nTxtFirstLineOfst;
+ if( 0 < nLeftMostPos )
+ nLeftMostPos = 0;
+
+ short i;
+ BYTE* pDel = pData + 1; // Del - Array
+ BYTE nDel = pData[0];
+ BYTE* pIns = pData + 2*nDel + 2; // Ins - Array
+ BYTE nIns = pData[nDel*2+1];
+ WW8_TBD* pTyp = (WW8_TBD*)(pData + 2*nDel + 2*nIns + 2);// Typ - Array
+
+ SvxTabStopItem aAttr( 0, 0, SVX_TAB_ADJUST_DEFAULT );
+
+ SwTxtFmtColl* pSty = 0;
+ USHORT nTabBase;
+ if( pAktColl ){ // StyleDef
+ nTabBase = pCollA[nAktColl].nBase;
+ if( nTabBase < nColls ){ // Based On
+ pSty = (SwTxtFmtColl*)pCollA[nTabBase].pFmt;
+ }
+ }else{ // Text
+ nTabBase = nAktColl;
+ pSty = (SwTxtFmtColl*)pCollA[nAktColl].pFmt;
+ }
+
+ BOOL bFound = FALSE;
+ while( pSty && !bFound ){
+ const SfxPoolItem* pTabs;
+ bFound = pSty->GetAttrSet().GetItemState( RES_PARATR_TABSTOP, FALSE, &pTabs )
+ == SFX_ITEM_SET;
+ if( bFound ){
+ aAttr = *((const SvxTabStopItem*)pTabs);
+ }else{
+ if( nTabBase < nColls // Based On
+ && (nTabBase = pCollA[nTabBase].nBase) < nColls ) // Based On
+ pSty = (SwTxtFmtColl*)pCollA[nTabBase].pFmt;
+ else
+ pSty = 0; // gib die Suche auf
+ }
+ }
+
+ SvxTabStop aTabStop;
+
+ for( i=0; i<nDel; i++ ){
+ USHORT nPos = aAttr.GetPos( SVBT16ToShort( pDel + i*2 ) - nLeftPMgn );
+ if( nPos != SVX_TAB_NOTFOUND )
+ aAttr.Remove( nPos, 1 );
+ }
+ for( i=0; i<nIns; i++ )
+ {
+ short nPos = SVBT16ToShort( pIns + i*2 ) - nLeftPMgn;
+ if( nPos < nLeftMostPos )
+ continue;
+ aTabStop.GetTabPos() = nPos;
+ switch( SVBT8ToByte( pTyp[i].aBits1 ) & 0x7 ){ // pTyp[i].jc
+ case 0: aTabStop.GetAdjustment() = SVX_TAB_ADJUST_LEFT; break;
+ case 1: aTabStop.GetAdjustment() = SVX_TAB_ADJUST_CENTER; break;
+ case 2: aTabStop.GetAdjustment() = SVX_TAB_ADJUST_RIGHT; break;
+ case 3: aTabStop.GetAdjustment() = SVX_TAB_ADJUST_DECIMAL; break;
+ case 4: continue; // ignoriere Bar
+ }
+
+ switch( SVBT8ToByte( pTyp[i].aBits1 ) >> 3 & 0x7 ){ // pTyp[i].tlc
+ case 0: aTabStop.GetFill() = ' '; break;
+ case 1: aTabStop.GetFill() = '.'; break;
+ case 2: aTabStop.GetFill() = '-'; break;
+ case 3:
+ case 4: aTabStop.GetFill() = '_'; break;
+ }
+
+ USHORT nPos2 = aAttr.GetPos( nPos );
+ if( nPos2 != SVX_TAB_NOTFOUND )
+ aAttr.Remove( nPos2, 1 ); // sonst weigert sich das Insert()
+
+ aAttr.Insert( aTabStop );
+ }
+ NewAttr( aAttr );
+}
+
+//-----------------------------------------
+// DOP
+//-----------------------------------------
+
+void SwWW8ImplReader::ImportDop( BOOL bNewDoc )
+{
+ if( bNewDoc )
+ {
+ // correct the LastPrinted date in DocumentInfo
+ if( rDoc.GetpInfo() )
+ {
+ DateTime aLastPrinted( WW8ScannerBase::WW8DTTM2DateTime( pWDop->dttmLastPrint ));
+ SfxDocumentInfo* pNeuDocInf = new SfxDocumentInfo( *rDoc.GetpInfo() );
+ SfxStamp aPrinted( pNeuDocInf->GetPrinted() );
+ if( aPrinted.GetTime() != aLastPrinted)
+ {
+ // check if WW8 date was set
+ if( aLastPrinted == DateTime(Date( 0 ), Time( 0 )))
+ // create "invalid" value for SfxStamp
+ // (as seen in sfx2/DOSINF.HXX)
+ aPrinted.SetTime(DateTime(Date( 1, 1, 1601 ), Time( 0, 0, 0 )));
+ else
+ aPrinted.SetTime( aLastPrinted );
+ pNeuDocInf->SetPrinted( aPrinted );
+ rDoc.SetInfo( *pNeuDocInf );
+ delete( pNeuDocInf );
+ }
+ }
+
+ // Import Default-Tabs
+ long nDefTabSiz = pWDop->dxaTab;
+ if( nDefTabSiz < 56 )
+ nDefTabSiz = 709;
+
+ // wir wollen genau einen DefaultTab
+ SvxTabStopItem aNewTab( 1, USHORT(nDefTabSiz), SVX_TAB_ADJUST_DEFAULT );
+ ((SvxTabStop&)aNewTab[0]).GetAdjustment() = SVX_TAB_ADJUST_DEFAULT;
+
+ rDoc.GetAttrPool().SetPoolDefaultItem( aNewTab );
+
+ // set default language (from FIB)
+ rDoc.GetAttrPool().SetPoolDefaultItem(
+ SvxLanguageItem( (const LanguageType)pWwFib->lid ) );
+ }
+}
+
+
+
+//-----------------------------------------
+// Fuss- und Endnoten
+//-----------------------------------------
+
+WW8ReaderSave::WW8ReaderSave( SwWW8ImplReader* pRdr ,WW8_CP nStartCp)
+: aTmpPos(*pRdr->pPaM->GetPoint())
+{
+ pWFlyPara = pRdr->pWFlyPara;
+ pSFlyPara = pRdr->pSFlyPara;
+ pTableDesc = pRdr->pTableDesc;
+ cSymbol = pRdr->cSymbol;
+ bSymbol = pRdr->bSymbol;
+ bIgnoreText = pRdr->bIgnoreText;
+ bDontCreateSep = pRdr->bDontCreateSep;
+ bHdFtFtnEdn = pRdr->bHdFtFtnEdn;
+ bApo = pRdr->bApo;
+ bTxbxFlySection = pRdr->bTxbxFlySection;
+ bTable = pRdr->bTable ;
+ bTableInApo = pRdr->bTableInApo;
+ bAnl = pRdr->bAnl;
+ nAktColl = pRdr->nAktColl;
+
+ // Tracking beginnt neu
+ pRdr->bHdFtFtnEdn = TRUE;
+ pRdr->bApo = pRdr->bTxbxFlySection
+ = pRdr->bTable = bTableInApo = pRdr->bAnl = FALSE;
+ pRdr->pWFlyPara = 0;
+ pRdr->pSFlyPara = 0;
+ pRdr->pTableDesc = 0;
+
+ // schliesse Attribute auf dem End-Stack
+ pRdr->pEndStck->SetAttr( *pRdr->pPaM->GetPoint(), 0, FALSE );
+
+ pOldStck = pRdr->pCtrlStck;
+ pRdr->pCtrlStck = new SwWW8FltControlStack(&pRdr->rDoc, pRdr->nFieldFlags);
+
+ // rette die Attributverwaltung: dies ist noetig, da der neu anzulegende
+ // PLCFx Manager natuerlich auf die gleichen FKPs zugreift, wie der alte
+ // und deren Start-End-Positionen veraendert...
+ pRdr->pPlcxMan->SaveAllPLCFx( aPLCFxSave );
+
+ pOldPlcxMan = pRdr->pPlcxMan;
+
+ if (nStartCp != -1)
+ pRdr->pPlcxMan = new WW8PLCFMan( pRdr->pSBase,
+ pOldPlcxMan->GetManType(), nStartCp );
+}
+
+void WW8ReaderSave::Restore( SwWW8ImplReader* pRdr )
+{
+ pRdr->pWFlyPara = pWFlyPara;
+ pRdr->pSFlyPara = pSFlyPara;
+ pRdr->pTableDesc = pTableDesc;
+ pRdr->cSymbol = cSymbol;
+ pRdr->bSymbol = bSymbol;
+ pRdr->bIgnoreText = bIgnoreText;
+ pRdr->bDontCreateSep= bDontCreateSep;
+ pRdr->bHdFtFtnEdn = bHdFtFtnEdn;
+ pRdr->bApo = bApo;
+ pRdr->bTxbxFlySection=bTxbxFlySection;
+ pRdr->bTable = bTable ;
+ pRdr->bTableInApo = bTableInApo;
+ pRdr->bAnl = bAnl;
+ pRdr->nAktColl = nAktColl;
+
+ // schliesse alle Attribute, da sonst Attribute
+ // entstehen koennen, die aus dem Fly rausragen
+ pRdr->pCtrlStck->SetAttr( *pRdr->pPaM->GetPoint(), 0, FALSE );
+ pRdr->pEndStck->SetAttr( *pRdr->pPaM->GetPoint(), 0, FALSE );
+
+ pRdr->DeleteCtrlStk();
+ pRdr->pCtrlStck = pOldStck;
+
+ *pRdr->pPaM->GetPoint() = aTmpPos;
+
+ DELETEZ( pRdr->pPlcxMan );
+
+ // restauriere die Attributverwaltung
+ pRdr->pPlcxMan = pOldPlcxMan;
+ pRdr->pPlcxMan->RestoreAllPLCFx( aPLCFxSave );
+}
+
+void SwWW8ImplReader::Read_HdFtFtnText( const SwNodeIndex* pSttIdx, long nStartCp,
+ long nLen, short nType )
+{
+#if 0
+ pEndStck->SetAttr( *pPaM->GetPoint(), 0, FALSE );
+ SwWW8FltControlStack* pOldStck = pCtrlStck;
+ pCtrlStck = new SwWW8FltControlStack( &rDoc, nFieldFlags );
+#endif
+ WW8ReaderSave aSave( this ); // rettet Flags u.ae. u. setzt sie zurueck
+
+ pPaM->GetPoint()->nNode = pSttIdx->GetIndex() + 1; //
+ pPaM->GetPoint()->nContent.Assign( pPaM->GetCntntNode(), 0 );
+
+ // dann Text fuer Header, Footer o. Footnote einlesen
+
+ ReadText( nStartCp, nLen, nType ); // Sepx dabei ignorieren
+#if 0
+ pEndStck->SetAttr( *pPaM->GetPoint(), 0, FALSE );
+ // und zum Schluss Writer-Kram restoren
+ aSave.Restore( this );
+ DeleteCtrlStk();
+ pCtrlStck = pOldStck;
+#else
+ aSave.Restore( this );
+#endif
+}
+
+long SwWW8ImplReader::Read_Ftn( WW8PLCFManResult* pRes, BOOL )
+{
+ BOOL bFtEdOk = FALSE;
+
+ if( nIniFlags & WW8FL_NO_FTN )
+ return 0;
+
+ if ( pPaM->GetPoint()->nNode < rDoc.GetNodes().GetEndOfExtras().GetIndex() )
+ return 0; // ignoriere Footnote ausserhalb des normalen Textes
+
+ USHORT nType;
+ BOOL bAutoNum = TRUE;
+ if( 257 == pRes->nSprmId )
+ {
+ nType = MAN_EDN;
+ if( pPlcxMan->GetEdn() )
+ bAutoNum = 0 != *(short*)pPlcxMan->GetEdn()->GetData();
+ }
+ else
+ {
+ nType = MAN_FTN;
+ if( pPlcxMan->GetFtn() )
+ bAutoNum = 0 != *(short*)pPlcxMan->GetFtn()->GetData();
+ }
+
+ WW8PLCFxSaveAll aSave;
+ pPlcxMan->SaveAllPLCFx( aSave );
+ WW8PLCFMan* pOldPlcxMan = pPlcxMan;
+
+ SwFmtFtn aFtn( 257 == pRes->nSprmId ) ; // erzeuge Fussnote
+ rDoc.Insert( *pPaM, aFtn );
+
+ SwPosition aTmpPos( *pPaM->GetPoint() ); // merke alte Cursorposition
+
+ pPaM->Move( fnMoveBackward, fnGoCntnt ); // hole Index auf Fussnoteninhalt
+ SwTxtNode* pTxt = pPaM->GetNode()->GetTxtNode();
+ SwTxtAttr* pFN = pTxt->GetTxtAttr( pPaM->GetPoint()->nContent.GetIndex(),
+ RES_TXTATR_FTN );
+ ASSERT(pFN, "Probleme beim Anlegen des Fussnoten-Textes");
+ if( pFN )
+ {
+ const SwNodeIndex* pSttIdx = ((SwTxtFtn*)pFN)->GetStartNode();
+ ASSERT(pSttIdx, "Probleme beim Anlegen des Fussnoten-Textes");
+
+ ((SwTxtFtn*)pFN)->SetSeqNo( rDoc.GetFtnIdxs().Count() );
+
+ BOOL bOld = bFtnEdn;
+ bFtnEdn = TRUE;
+
+ // read content of Ft-/End-Note
+ Read_HdFtFtnText( pSttIdx, pRes->nCp2OrIdx, pRes->nMemLen, nType );
+ bFtEdOk = TRUE;
+ bFtnEdn = bOld;
+
+ // falls keine automatische Numerierung eingestellt ist, so hole
+ // das 1. Zeichen aus der Fuss-/End-Note und setze das als Zeichen
+ if( !bAutoNum )
+ {
+ SwNodeIndex& rNIdx = pPaM->GetPoint()->nNode;
+ rNIdx = pSttIdx->GetIndex() + 1;
+ SwTxtNode* pTNd = rNIdx.GetNode().GetTxtNode();
+ if( pTNd )
+ {
+ String sNo( pTNd->GetTxt().GetChar( 0 ));
+ ((SwTxtFtn*)pFN)->SetNumber( 0, &sNo );
+ pPaM->GetPoint()->nContent.Assign( pTNd, 0 );
+ pPaM->SetMark();
+ pPaM->GetMark()->nContent++;
+ rDoc.Delete( *pPaM );
+ pPaM->DeleteMark();
+ }
+ }
+ }
+ *pPaM->GetPoint() = aTmpPos; // restore Cursor
+
+ pPlcxMan = pOldPlcxMan; // Attributverwaltung restoren
+ pPlcxMan->RestoreAllPLCFx( aSave );
+
+ if( bSymbol )
+ {
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_FONT );
+ bSymbol = FALSE;
+ }
+
+ // insert Section to get this Ft-/End-Note at the end of the section,
+ // when there is no open section at the moment
+ if( bFtEdOk && pLastPgDeskIdx && !pBehindSection )
+ {
+ const SwNodeIndex aOrgLastPgDeskIdx( *pLastPgDeskIdx );
+
+ (*pLastPgDeskIdx)++;
+ SwPosition aSectStart( *pLastPgDeskIdx );
+ aSectStart.nContent.Assign( pLastPgDeskIdx->GetNode().GetCntntNode(), 0 );
+
+ SwPaM aSectPaM( aSectStart, *pPaM->GetPoint() );
+ InsertSectionWithWithoutCols( aSectPaM, 0 );
+ pPaM->Move( fnMoveBackward );
+ DELETEZ( pLastPgDeskIdx );
+ // set attributes to correct position
+ pCtrlStck->MoveAttrsToNextNode( aOrgLastPgDeskIdx );
+ }
+
+ return 1; // das Fussnotenzeichen ueberlesen!
+}
+
+// JP 03.12.98 - Anmerkungen einlesen
+// - Als default wird erstmal das Initial als Author benutzt. Im Writer wird
+// auch immer das Initial benutzt!
+#undef AUTHOR_AS_AUTHOR
+#define INITIAL_AS_AUTHOR
+
+long SwWW8ImplReader::Read_And( WW8PLCFManResult* pRes, BOOL )
+{
+ WW8PLCFx_SubDoc* pSD = pPlcxMan->GetAtn();
+ if( !pSD )
+ return 0;
+
+ String sAuthor;
+ if( bVer67 )
+ {
+ const WW67_ATRD* pDescri = (WW67_ATRD*)pSD->GetData();
+#ifdef AUTHOR_AS_AUTHOR
+ const String* pA = GetAnnotationAuthor( SVBT16ToShort( pDescri->ibst ) );
+ if( pA )
+ sAuthor = *pA;
+#endif
+
+#ifdef INITIAL_AS_AUTHOR
+ sAuthor = String( pDescri->xstUsrInitl + 1,
+ (USHORT)pDescri->xstUsrInitl[0] );
+#endif
+ }
+ else
+ {
+ const WW8_ATRD* pDescri = (const WW8_ATRD*)pSD->GetData();
+
+#ifdef AUTHOR_AS_AUTHOR
+ const String* pA = GetAnnotationAuthor( SVBT16ToShort( pDescri->ibst ) );
+ if( pA )
+ sAuthor = *pA;
+#endif
+
+#ifdef INITIAL_AS_AUTHOR
+ BYTE nLen = (BYTE)SVBT16ToShort( pDescri->xstUsrInitl[0] );
+ String aTmp;
+ sal_Unicode* pData = aTmp.AllocBuffer( nLen );
+ sal_Unicode* pWork = pData;
+
+ for( BYTE nIdx = 1; nIdx <= nLen; ++nIdx, ++pWork )
+ *pWork = SVBT16ToShort( pDescri->xstUsrInitl[ nIdx ] );
+// {
+// UINT16 nChar = SVBT16ToShort( pDescri->xstUsrInitl[ nIdx ] );
+// if( 0xF000 == (nChar & 0xFF00))
+// nChar &= 0x00FF;
+// *pWStr = nChar;
+// }
+// sAuthor = String( aTmp, CHARSET_ANSI ); // ANSI???
+
+// 2000/03/30 KHZ UNICODE
+// still missing: unicode-back conversion AND 0xF0.. specials
+
+#endif
+ }
+
+ WW8PLCFxSaveAll aSave;
+ pPlcxMan->SaveAllPLCFx( aSave );
+ WW8PLCFMan* pOldPlcxMan = pPlcxMan;
+
+ SwNodeIndex aNdIdx( rDoc.GetNodes().GetEndOfExtras() );
+ aNdIdx = *rDoc.GetNodes().MakeTextSection( aNdIdx, SwNormalStartNode,
+ rDoc.GetTxtCollFromPool( RES_POOLCOLL_STANDARD ));
+
+ SwPosition aTmpPos( *pPaM->GetPoint() ); // merke alte Cursorposition
+ Read_HdFtFtnText( &aNdIdx, pRes->nCp2OrIdx, pRes->nMemLen, MAN_AND );
+ // lese Inhalt ein
+ *pPaM->GetPoint() = aTmpPos; // restore Cursor
+
+ // erzeuge das PostIt
+ Date aDate;
+ String sTxt;
+
+
+ { // Text aus den Nodes in den String uebertragen
+ SwNodeIndex aIdx( aNdIdx, 1 ),
+ aEnd( *aNdIdx.GetNode().EndOfSectionNode() );
+ SwTxtNode* pTxtNd;
+ while( aIdx != aEnd )
+ {
+ if( 0 != ( pTxtNd = aIdx.GetNode().GetTxtNode() ))
+ {
+ if( sTxt.Len() )
+ sTxt += '\x0a'; // Zeilenumbruch
+ sTxt += pTxtNd->GetExpandTxt();
+ }
+ aIdx++;
+ }
+ rDoc.DeleteSection( &aNdIdx.GetNode() );
+ }
+
+ rDoc.Insert( *pPaM, SwFmtFld( SwPostItField(
+ (SwPostItFieldType*)rDoc.GetSysFldType( RES_POSTITFLD ),
+ sAuthor, sTxt, aDate )));
+
+ pPlcxMan = pOldPlcxMan; // Attributverwaltung restoren
+ pPlcxMan->RestoreAllPLCFx( aSave );
+ return 0;
+}
+
+//-----------------------------------------
+// Header und Footer
+//-----------------------------------------
+
+void SwWW8ImplReader::Read_HdFtText( long nStartCp, long nLen, SwPageDesc* pPD,
+ BOOL bUseLeft, BOOL bFooter )
+{
+ SwFrmFmt* pFmt = ( bUseLeft ) ? &pPD->GetLeft() : &pPD->GetMaster();
+ SwFrmFmt* pHdFtFmt;
+
+ if( bFooter ){
+ bIsFooter = TRUE;
+ pFmt->SetAttr( SwFmtFooter( TRUE ) );
+ pHdFtFmt = (SwFrmFmt*)pFmt->GetFooter().GetFooterFmt();
+ }else{
+ bIsHeader = TRUE;
+ pFmt->SetAttr( SwFmtHeader( TRUE ) );
+ pHdFtFmt = (SwFrmFmt*)pFmt->GetHeader().GetHeaderFmt();
+ }
+
+ const SwNodeIndex* pSttIdx = pHdFtFmt->GetCntnt().GetCntntIdx();
+ if( !pSttIdx ) return;
+
+ SwPosition aTmpPos( *pPaM->GetPoint() ); // merke alte Cursorposition
+
+ Read_HdFtFtnText( pSttIdx, nStartCp, nLen - 1, MAN_HDFT );
+
+ *pPaM->GetPoint() = aTmpPos;
+ bIsHeader = bIsFooter = FALSE;
+}
+
+BYTE SwWW8ImplReader::HdFtCorrectPara( BYTE nPara )
+{
+ WW8_CP start;
+ long nLen;
+ BYTE nNewPara = nPara;
+
+ for( BYTE nI = 0x20; nI; nI >>= 1 )
+ if( ( nI & nPara )
+ && pHdFt
+ && ( !pHdFt->GetTextPos( nPara, nI, start, nLen ) || nLen <= 2 ) )
+
+ {
+ nNewPara &= ~nI; // leere KF-Texte nicht anlegen
+ }
+
+// Wenn im Doc keine Facing Pages vorhanden sind, sollen
+// die geraden Header/Footer ignoriert werden.
+// Die Facing Pages lassen sich nur Doc-weit,
+// nicht aber abschnittsweise umschalten !
+ if( pWDop->fFacingPages )
+ { // Wenn pDoc->FacingPages
+// if( nNewPara & WW8_HEADER_ODD ) // und ungerader Header vorhanden
+// nNewPara |= WW8_HEADER_EVEN; // ... dann muss auch ein gerader
+ // Header erzeugt werden
+// if( nNewPara & WW8_FOOTER_ODD ) // Footer ebenso.
+// nNewPara |= WW8_FOOTER_EVEN;
+ }
+ else
+ {
+ nNewPara &= ~( WW8_HEADER_EVEN | WW8_FOOTER_EVEN ); // ergibt bEven = 0
+ }
+ return nNewPara;
+}
+
+void SwWW8ImplReader::Read_HdFt1( BYTE nPara, BYTE nWhichItems, SwPageDesc* pPD )
+{
+ if( pHdFt )
+ {
+ WW8_CP start;
+ long nLen;
+ BYTE nNumber = 5;
+
+ for( BYTE nI = 0x20; nI; nI >>= 1, nNumber-- )
+ if( nI & nWhichItems )
+ {
+ BOOL bOk = TRUE;
+ if( bVer67 )
+ bOk = ( pHdFt->GetTextPos( nPara, nI, start, nLen ) && nLen > 2 );
+ else
+ {
+ pHdFt->GetTextPosExact(nNumber+ (nActSectionNo+1)*6, start, nLen);
+ bOk = ( 2 < nLen );
+ }
+ if( bOk )
+ {
+ BOOL bUseLeft
+ = (nI & ( WW8_HEADER_EVEN | WW8_FOOTER_EVEN )) ? TRUE : FALSE;
+ BOOL bFooter
+ = (nI & ( WW8_FOOTER_EVEN | WW8_FOOTER_ODD | WW8_FOOTER_FIRST )) ? TRUE : FALSE;
+ Read_HdFtText( start, nLen, pPD, bUseLeft, bFooter );
+ }
+ }
+ }
+}
+
+static BYTE ReadBSprm( const WW8PLCFx_SEPX* pSep, USHORT nId, BYTE nDefaultVal )
+{
+ BYTE* pS = pSep->HasSprm( nId ); // sprm da ?
+ BYTE nVal = ( pS ) ? SVBT8ToByte( pS ) : nDefaultVal;
+ return nVal;
+}
+
+void SwWW8ImplReader::SetHdFt( SwPageDesc* pPageDesc0, SwPageDesc* pPageDesc1,
+ const WW8PLCFx_SEPX* pSep, BYTE nIPara )
+{
+ if( !nCorrIhdt || ( pAktColl != 0 ) ) // Header / Footer nicht da
+ // oder StyleDef
+ return;
+
+ long nOldDoc = pStrm->Tell( ); // WW-Scanner: alles retten
+ long nOldTbl = pTableStream->Tell(); // WW-Scanner: alles retten
+ WW8PLCFxSaveAll aSave;
+ pPlcxMan->SaveAllPLCFx( aSave ); // Attributverwaltung sichern
+ WW8PLCFMan* pOldPlcxMan = pPlcxMan;
+
+ if( !pPageDesc1 ){ // 1 Pagedesc reicht
+
+ Read_HdFt1( nIPara,
+ nCorrIhdt & ~( WW8_HEADER_FIRST | WW8_FOOTER_FIRST ),
+ pPageDesc0 );
+
+ }else{ // 2 Pagedescs noetig: 1.Seite und folgende
+
+
+ // 1. Seite einlesen
+ Read_HdFt1( nIPara,
+ nCorrIhdt & ( WW8_HEADER_FIRST | WW8_FOOTER_FIRST ),
+ pPageDesc0 );
+
+ // Folgeseiten einlesen
+ Read_HdFt1( nIPara,
+ nCorrIhdt & ~( WW8_HEADER_FIRST | WW8_FOOTER_FIRST ),
+ pPageDesc1 );
+ }
+ // dann WW-Scanner-Kram restoren
+ pPlcxMan = pOldPlcxMan; // Attributverwaltung restoren
+ pPlcxMan->RestoreAllPLCFx( aSave );
+ pStrm->Seek( nOldDoc ); // FilePos dito (Sprms)
+ pTableStream->Seek( nOldTbl ); // FilePos dito (Sprms)
+}
+
+//-----------------------------------------
+// PageDescs
+//-----------------------------------------
+
+
+void SwWW8ImplReader::SetLastPgDeskIdx()
+{
+ if( 0 == pWDop->epc // store NodeIndex for adding section when FT-/End-Note
+ || 2 == pWDop->fpc ) // found that shall be on end of section.
+ {
+ if( pLastPgDeskIdx )
+ *pLastPgDeskIdx = pPaM->GetPoint()->nNode;
+ else
+ pLastPgDeskIdx = new SwNodeIndex( pPaM->GetPoint()->nNode );
+ (*pLastPgDeskIdx)--;
+ }
+}
+
+
+SwPageDesc* SwWW8ImplReader::CreatePageDesc( SwPageDesc* pFirstPageDesc,
+ SwPaM** ppPaMWanted )
+{
+ ASSERT( pFirstPageDesc || ppPaMWanted, "!pFirstPageDesc but NO ppPaMWanted" );
+
+
+ BOOL bFollow = ( pFirstPageDesc != 0 );
+ SwPageDesc* pNewPD;
+ USHORT nPos;
+
+ if( bFollow
+ && pFirstPageDesc->GetFollow() != pFirstPageDesc )
+ return pFirstPageDesc; // Fehler: hat schon Follow
+
+ // compose name of PageDescriptor
+ String aNm( WW8_ASCII2STR( "Konvert " ) );
+ if ( bFollow )
+ aNm.AppendAscii( "Folge" );
+ USHORT nPageDescCount = rDoc.GetPageDescCnt();
+ aNm += String::CreateFromInt32( nPageDescCount );
+
+ nPos = rDoc.MakePageDesc( aNm,
+ bFollow // && (pFirstPageDesc != &rDoc._GetPageDesc( 0 ))
+ ? pFirstPageDesc
+ : 0 );
+ pNewPD = &rDoc._GetPageDesc( nPos );
+
+ if ( bFollow ){ // Dieser ist der folgende von pPageDesc
+ pFirstPageDesc->SetFollow( pNewPD );
+ pNewPD->SetFollow( pNewPD );
+ }
+ else
+ { // setze PgDesc-Attr ins Doc
+ if( bApo || bTxbxFlySection )
+ { // PageDesc *muss* ausserhalb des Apo stehen
+ if( pSFlyPara && pSFlyPara->pMainTextPos )
+ {
+ SwPaM aMyPaM( *pSFlyPara->GetMainTextPos() );
+ if( 1 < nPageDescCount )
+ rDoc.AppendTxtNode( *aMyPaM.GetPoint() );
+ SwFmtCol* pCol;
+ RemoveCols( *pNewPD, pCol );
+ rDoc.Insert( aMyPaM, SwFmtPageDesc( pNewPD ) );
+ if( ppPaMWanted )
+ *ppPaMWanted = new SwPaM( aMyPaM );
+ if( pCol )
+ {
+ InsertSectionWithWithoutCols( aMyPaM, pCol );
+ delete pCol;
+ }
+ else
+ SetLastPgDeskIdx();
+ }
+ }
+ else
+ {
+ if( 0 < pPaM->GetPoint()->nContent.GetIndex() )
+ rDoc.AppendTxtNode( *pPaM->GetPoint() );
+ SwFmtCol* pCol;
+ RemoveCols( *pNewPD, pCol );
+ if( ppPaMWanted )
+ *ppPaMWanted = new SwPaM( *pPaM );
+
+ rDoc.Insert( *pPaM, SwFmtPageDesc( pNewPD ) );
+ if( pCol )
+ {
+ InsertSectionWithWithoutCols( *pPaM, pCol );
+ delete pCol;
+ }
+ else
+ SetLastPgDeskIdx();
+ }
+ }
+ return pNewPD;
+}
+
+// UpdatePageDescs muss am Ende des Einlesevorganges aufgerufen werden, damit
+// der Writer den Inhalt der Pagedescs wirklich akzeptiert
+void SwWW8ImplReader::UpdatePageDescs( USHORT nPageDescOffset )
+{
+ USHORT i;
+
+ // Pagedescriptoren am Dokument updaten (nur so werden auch die
+ // linken Seiten usw. eingestellt).
+
+ // PageDesc "Standard"
+ rDoc.ChgPageDesc( 0, rDoc.GetPageDesc( 0 ));
+
+ // PageDescs "Konvert..."
+ for ( i=nPageDescOffset; i < rDoc.GetPageDescCnt(); i++ )
+ {
+ const SwPageDesc* pPD = &rDoc.GetPageDesc( i );
+ rDoc.ChgPageDesc( i, *pPD );
+ }
+}
+
+//-----------------------------------------
+// Text
+//-----------------------------------------
+
+// TestApo() ist die aus ProcessSpecial() herausgeloeste Apo-Abfrage.
+// sie wird auch beim Aufbau der Tabellen-Struktur (ww8par6.cxx)
+// verwendet.
+// Die Parameter rbStartApo, rbStopApo und rbNowStyleApo sind reine
+// Rueckgabeparameter
+BYTE* SwWW8ImplReader::TestApo( BOOL& rbStartApo, BOOL& rbStopApo,
+ BOOL& rbNowStyleApo,
+ BOOL bInTable, BOOL bTableRowEnd,
+ BOOL bStillInTable )
+{
+ BYTE* pSprm37;
+ BYTE* pSprm29;
+ rbNowStyleApo = (0 != pCollA[nAktColl].pWWFly); // Apo in StyleDef
+
+ if( bInTable && rbNowStyleApo )
+ {
+ pSprm37 = 0;
+ pSprm29 = 0;
+ rbNowStyleApo = FALSE;
+ }
+ else
+ {
+ pSprm37 = pPlcxMan->HasParaSprm( bVer67 ? 37 : 0x2423 );
+ pSprm29 = pPlcxMan->HasParaSprm( bVer67 ? 29 : 0x261B );
+ }
+
+ // here Apo
+ BOOL bNowApo = rbNowStyleApo || pSprm29 || pSprm37;
+ BOOL bApoContinuedInTabCell2ndParagraph
+ = (bApo && bTableInApo && bStillInTable) && !bNowApo;
+ bNowApo |= bApoContinuedInTabCell2ndParagraph;
+
+ rbStartApo = bNowApo && !bApo && !bTableRowEnd; // normal APO-start
+ rbStopApo = bApo && !bNowApo && !bTableRowEnd; // normal APO-end
+
+ if( bApo && bNowApo && !bTableRowEnd
+ && !bApoContinuedInTabCell2ndParagraph
+ && !TestSameApo( pSprm29, rbNowStyleApo ) )
+ {
+ rbStopApo = rbStartApo = TRUE; // aneinandergrenzende APOs
+ };
+ return pSprm29;
+}
+
+BOOL SwWW8ImplReader::ProcessSpecial( BOOL bAllEnd, BOOL* pbReSync ) // Apo / Table / Anl
+{
+ *pbReSync = FALSE;
+ if( bAllEnd ){
+ if( bAnl )
+ StopAnl(); // -> bAnl = FALSE
+ if( bTable && !bFtnEdn ) // Tabelle in FtnEdn nicht erlaubt
+ StopTable();
+ if( bApo )
+ StopApo();
+ bTable = bApo = FALSE;
+ return FALSE;
+ }
+
+ BOOL bTableRowEnd = ( pPlcxMan->HasParaSprm( ( bVer67 ? 25 : 0x2417 )) != 0 ); // TabRowEnd
+
+// es muss leider fuer jeden Absatz zuerst nachgesehen werden,
+// ob sich unter den sprms
+// das sprm 29 (bzw. 0x261B) befindet, das ein APO einleitet.
+// Alle weiteren sprms beziehen sich dann naemlich auf das APO und nicht
+// auf den normalen Text drumrum.
+// Dasselbe gilt fuer eine Tabelle ( sprm 24 (bzw. 0x2416) )
+// und Anls ( sprm 13 ).
+// WW: Tabelle in APO geht ( Beide Anfaende treten gleichzeitig auf )
+// WW: APO in Tabelle geht nicht
+// d.h. Wenn eine Tabelle Inhalt eines Apo ist, dann muss der
+// Apo-Anfang zuerst bearbeitet werden, damit die Tabelle im Apo steht
+// und nicht umgekehrt. Am Ende muss dagegen zuerst das Tabellenende
+// bearbeitet werden, da die Apo erst nach der Tabelle abgeschlossen
+// werden darf ( sonst wird das Apo-Ende nie gefunden ).
+// Dasselbe gilt fuer Fly / Anl, Tab / Anl, Fly / Tab / Anl.
+//
+// Wenn die Tabelle in einem Apo steht, fehlen im TabRowEnd-Bereich
+// die Apo-Angaben. Damit hier die Apo nicht beendet wird, wird
+// ProcessApo dann nicht aufgerufen.
+
+// KHZ: When there is a table inside the Apo the Apo-flags are also
+// missing for the 2nd, 3rd... paragraphs of each cell.
+
+
+// 1st look for in-table flag
+ BYTE* pSprm24 = pPlcxMan->HasParaSprm( bVer67
+ ? 24
+ : 0x2416 ); // Flag: Absatz in(!) Tabelle
+
+// then look if we are in an Apo
+
+ BOOL bStartApo, bStopApo, bNowStyleApo;
+ BYTE* pSprm29 = TestApo( bStartApo, bStopApo, bNowStyleApo,
+ bTable, (bTableRowEnd && bTableInApo),
+ bTable && (pSprm24 != 0) );
+
+// look if we are in a Tabelle
+
+ BOOL bStartTab = pSprm24 && !bTable && !bFtnEdn; // Table in FtnEdn nicht erlaubt
+
+ BOOL bStopTab = bTable && (bWasTabRowEnd && !pSprm24) && !bFtnEdn;
+
+ bWasTabRowEnd = FALSE; // must be deactivated right here to prevent next
+ // WW8TabDesc::TableCellEnd() from making nonsense
+
+ if( bTable && !bStopTab && ( bStartApo || bStopApo ) )
+ { // Wenn Apowechsel in Tabelle
+ bStopTab = bStartTab = TRUE; // ... dann auch neue Tabelle
+ }
+
+// Dann auf Anl (Nummerierung) testen
+// und dann alle Ereignisse in der richtigen Reihenfolge bearbeiten
+
+ if( bAnl && !bTableRowEnd )
+ {
+ BYTE* pSprm13 = pPlcxMan->HasParaSprm( 13 );
+ if( pSprm13 )
+ { // Noch Anl ?
+ BYTE nT = GetNumType( *pSprm13 );
+ if( ( nT != WW8_Pause && nT != nWwNumType ) // Anl-Wechsel
+ || bStopApo || bStopTab // erzwungenes Anl-Ende
+ || bStartApo || bStartTab )
+ {
+ StopAnl(); // Anl-Restart ( = Wechsel ) ueber sprms
+ }
+ else
+ {
+ NextAnlLine( pSprm13 ); // naechste Anl-Zeile
+ }
+ }
+ else
+ { // Anl normal zuende
+ StopAnl(); // Wirkliches Ende
+ }
+ }
+ if( bStopTab )
+ {
+ StopTable();
+ bTable = FALSE;
+ }
+ if( bStopApo )
+ {
+ StopApo();
+ bApo = FALSE;
+ }
+
+ if( bStartApo && !( nIniFlags & WW8FL_NO_APO ) )
+ {
+ bApo = StartApo( pSprm29, bNowStyleApo );
+ *pbReSync = TRUE; // nach StartApo ist ein ReSync
+ // noetig ( eigentlich nur, falls
+ // die Apo ueber eine FKP-Grenze
+ // geht
+ }
+ if( bStartTab && !( nIniFlags & WW8FL_NO_TABLE ) ){
+ if( bAnl ) // Nummerierung ueber Zellengrenzen
+ StopAnl(); // fuehrt zu Absturz -> keine Anls
+ // in Tabellen
+ bTable = StartTable();
+ *pbReSync = TRUE; // nach StartTable ist ein ReSync
+ // noetig ( eigentlich nur, falls
+ // die Tabelle ueber eine
+ // FKP-Grenze geht
+ bTableInApo = bTable && bApo;
+ }
+ return bTableRowEnd;
+}
+
+
+#if defined OS2
+// eigentlich besser inline, aber das kann der BLC nicht
+static UCHAR ConvOs2( UCHAR ch, CharSet eDst )
+{
+ switch( ch ){
+ case 132:
+ case 148: return ( eDst == CHARSET_IBMPC_865 ) ? '"' : 175;
+ // typographische "(links) gegen aehnliche
+ // im OS/2-Charset
+ case 147: return ( eDst == CHARSET_IBMPC_865 ) ? '"' : 174;
+ case 173: // kurze, mittellange und lange Striche gegen Minus
+ case 150:
+ case 151: return '-';
+ case 130: return ',';
+ case 145:
+ case 146: return '\''; // typographische ' gegen normale
+ case 139: return '<';
+ case 155: return '>';
+ case 152: return '~';
+ } // ansonsten macht noch TM AErger.
+
+ return 0; // kenn ick nich
+}
+#endif
+
+// Returnwert: TRUE fuer keine Sonderzeichen
+BOOL SwWW8ImplReader::ReadPlainChars( long& rPos, long nEnd, long nCpOfs )
+{
+ // Unicode-Flag neu setzen und notfalls File-Pos korrigieren
+ // merke: Seek kostet nicht viel, da inline geprueft wird,
+ // ob die korrekte FilePos nicht schon erreicht ist.
+ WW8_FC nStreamPos = pSBase->WW8Cp2Fc(nCpOfs+rPos, &bIsUnicode);
+ pStrm->Seek( nStreamPos );
+
+ // ammount of characters to read == length to next attribut
+ ULONG nLen = nEnd - rPos;
+
+ CharSet eSrcCharSet = ( eHardCharSet != RTL_TEXTENCODING_DONTKNOW )
+ ? eHardCharSet
+ : eFontSrcCharSet;
+
+ // (re)alloc UniString data
+ String sPlainCharsBuf;
+
+ sal_Unicode* pWork = sPlainCharsBuf.AllocBuffer( nLen );
+
+ // read the stream data
+ BYTE nBCode;
+ UINT16 nUCode;
+ for( ULONG nL2 = 0; nL2 < nLen; ++nL2, ++pWork )
+ {
+ if( bIsUnicode )
+ *pStrm >> nUCode; // unicode --> read 2 bytes
+ else
+ {
+ *pStrm >> nBCode; // old code --> read 1 byte
+ nUCode = nBCode;
+ }
+
+ if( 0 != pStrm->GetError() )
+ {
+ rPos = LONG_MAX-10; // -> eof or other error
+ sPlainCharsBuf.ReleaseBufferAccess( 0 );
+ return TRUE;
+ }
+
+ if( (32 > nUCode) || (0xa0 == nUCode) )
+ {
+ pStrm->SeekRel( bIsUnicode ? -2 : -1 );
+ sPlainCharsBuf.ReleaseBufferAccess( nL2 );
+ break; // Sonderzeichen < 32, == 0xa0 gefunden
+ }
+
+ if( bIsUnicode )
+ *pWork = nUCode;
+ else
+ *pWork = ByteString::ConvertToUnicode( nBCode, eSrcCharSet );
+ }
+ if( sPlainCharsBuf.Len() )
+ rDoc.Insert( *pPaM, sPlainCharsBuf );
+
+ rPos += nL2;
+ return nL2 >= nLen;
+}
+
+
+// Returnwert: TRUE fuer Zeilenende
+BOOL SwWW8ImplReader::ReadChars( long& rPos, long nNextAttr, long nTextEnd, long nCpOfs )
+{
+ long nEnd = ( nNextAttr < nTextEnd ) ? nNextAttr : nTextEnd;
+
+ if( bSymbol || bIgnoreText )
+ {
+ if( bSymbol ) // Spezialzeichen einfuegen
+ {
+ for(USHORT nCh = 0; nCh < nEnd - rPos; ++nCh)
+ rDoc.Insert( *pPaM, cSymbol );
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_FONT );
+ }
+ pStrm->SeekRel( nEnd- rPos );
+ rPos = nEnd; // ignoriere bis Attributende
+ return FALSE;
+ }
+ while( TRUE )
+ {
+ if( ReadPlainChars( rPos, nEnd, nCpOfs ) )
+ return FALSE; // Fertig, kein CR
+
+ BOOL bStartLine = ReadChar( rPos, nCpOfs );
+ rPos++;
+ if( bPgSecBreak || bStartLine || rPos == nEnd ) // CR oder Fertig
+ return bStartLine;
+ }
+}
+
+BOOL SwWW8ImplReader::ReadChar( long nPosCp, long nCpOfs )
+{
+ // Unicode-Flag neu setzen und notfalls File-Pos korrigieren
+ // merke: Seek kostet nicht viel, da inline geprueft wird,
+ // ob die korrekte FilePos nicht schon erreicht ist.
+ pStrm->Seek( pSBase->WW8Cp2Fc(nCpOfs+nPosCp, &bIsUnicode) );
+
+ BYTE nBCode;
+ UINT16 nWCharVal;
+ if( bIsUnicode )
+ *pStrm >> nWCharVal; // unicode --> read 2 bytes
+ else
+ {
+ *pStrm >> nBCode; // old code --> read 1 byte
+ nWCharVal = nBCode;
+ }
+
+ sal_Char cInsert = '\x0';
+ BOOL bRet = FALSE;
+ switch( nWCharVal )
+ {
+ case 0xe: {
+ SwTxtNode* pNd = pPaM->GetCntntNode()->GetTxtNode();
+ if ( pNd )
+ {
+ const SfxItemSet* pSet = pNd->GetpSwAttrSet();
+ if ( pSet && ( SFX_ITEM_ON == pSet->GetItemState(
+ RES_PAGEDESC, FALSE ) ) )
+ {
+ rDoc.AppendTxtNode( *pPaM->GetPoint() );
+ }
+ else
+ {
+ const SwPosition* pPos = pPaM->GetPoint();
+ const SwTxtNode* pSttNd = rDoc.GetNodes()[ pPos->nNode ]->GetTxtNode();
+ USHORT nCntPos = pPos->nContent.GetIndex();
+ if( nCntPos && pSttNd->GetTxt().Len() )
+ rDoc.SplitNode( *pPos );
+ }
+ }
+ rDoc.Insert( *pPaM, // column break
+ SvxFmtBreakItem( SVX_BREAK_COLUMN_BEFORE ) );
+ }
+ break;
+
+ case 0x7: TabCellEnd(); // table cell end (Flags abfragen!)
+ if( bWasTabRowEnd )
+ pSBase->SetNoAttrScan( 0 );
+ break;
+
+ case 0xf: if( !bSpec ) // "Satellit"
+ cInsert = '\xa4';
+ break;
+
+ case 0x14: if( !bSpec ) // "Para-Ende"-Zeichen
+ cInsert = '\xb5';
+ break;
+
+ case 0x15: if( !bSpec ) // Juristenparagraph
+ cInsert = '\xa7';
+ break;
+
+ case 0x9: cInsert = '\x9'; // Tab
+ break;
+
+ case 0xb: cInsert = '\xa'; // Hard NewLine
+ break;
+
+ case 0xc: bPgSecBreak = TRUE;
+ // new behavior: insert additional node only WHEN the Pagebreak
+ // ( #74468# ) is in a NODE that is NOT EMPTY
+ if( 0 < pPaM->GetPoint()->nContent.GetIndex() )
+ bRet = TRUE;
+ pCtrlStck->KillUnlockedAttrs( *pPaM->GetPoint() );
+ break;
+
+ case 0x1e: rDoc.Insert( *pPaM, CHAR_HARDHYPHEN );// Non-breaking hyphen
+ break;
+ case 0x1f: rDoc.Insert( *pPaM, CHAR_SOFTHYPHEN ); // Non-required hyphens
+ break;
+ case 0xa0: rDoc.Insert( *pPaM, CHAR_HARDBLANK );// Non-breaking spaces
+ break;
+
+ case 0x1: if( bObj )
+ ImportOle();
+ else if( bEmbeddObj )
+ {
+ // wenn der OLE-Import nicht klappt, dann versuche
+ // zumindest die Grafik zu importieren
+ if( !ImportOle() )
+ ImportGraf();
+ }
+ else
+ ImportGraf();
+ bObj = bEmbeddObj = FALSE; // das Flag auf immer zurueck setzen
+ nObjLocFc = 0;
+ break;
+
+ case 0x8: if( !bObj )
+ Read_GrafLayer( nPosCp );
+ break;
+
+ case 0xd: bRet = TRUE; break; // line end
+
+ case 0x5: // Annotation reference
+ case 0x13:
+ case 0x2: break; // Auto-Fussnoten-Nummer
+
+#ifdef DEBUG
+ default:
+ {
+ String sUnknown( '<' );
+ sUnknown += String::CreateFromInt32( nWCharVal );
+ sUnknown += '>';
+ rDoc.Insert( *pPaM, sUnknown );
+ }
+#endif
+ break;
+ }
+ if( '\x0' != cInsert )
+ rDoc.Insert( *pPaM, ByteString::ConvertToUnicode(
+ cInsert, RTL_TEXTENCODING_MS_1252 ) );
+ return bRet;
+}
+
+
+void SwWW8ImplReader::ProcessAktCollChange( WW8PLCFManResult& rRes,
+ BOOL* pStartAttr,
+ BOOL bCallProcessSpecial )
+{
+ USHORT nOldColl = nAktColl;
+ nAktColl = pPlcxMan->GetColl();
+
+ if( bIsHeader ) // Fuer Kopfzeilenabstaende
+ nHdTextHeight += pPlcxMan->GetPapPLCF()->GetParaHeight();
+ else
+ if( bIsFooter ) // Fuer Kopfzeilenabstaende
+ nFtTextHeight += pPlcxMan->GetPapPLCF()->GetParaHeight();
+
+ if( nAktColl >= nColls || !pCollA[nAktColl].pFmt
+ || !pCollA[nAktColl].bColl )
+ {
+ nAktColl = 0; // Unguelige Style-Id
+ }
+ else
+ {
+ nLeftParaMgn = pCollA[nAktColl].nLeftParaMgn;
+ nTxtFirstLineOfst = pCollA[nAktColl].nTxtFirstLineOfst;
+ }
+ BOOL bTabRowEnd = FALSE;
+ if( pStartAttr && bCallProcessSpecial )
+ {
+ BOOL bReSync;
+ bTabRowEnd = ProcessSpecial( FALSE, &bReSync );// Apo / Table / Anl
+ if( bReSync )
+ *pStartAttr = pPlcxMan->Get( &rRes ); // hole Attribut-Pos neu
+ }
+ if( !bTabRowEnd )
+ {
+ SetTxtFmtCollAndListLevel( *pPaM, pCollA[ nAktColl ]);
+
+ ChkToggleAttr( pCollA[ nOldColl ].n81Flags,
+ pCollA[ nAktColl ].n81Flags );
+ }
+
+ eFontSrcCharSet = pCollA[nAktColl].eFontSrcCharSet; // aus P-Style
+}
+
+
+long SwWW8ImplReader::ReadTextAttr( long& rTxtPos, BOOL& rbStartLine )
+{
+ long nOld = pStrm->Tell();
+ long nSkipChars = 0;
+ WW8PLCFManResult aRes;
+
+ BOOL bStartAttr = pPlcxMan->Get( &aRes ); // hole Attribut-Pos
+
+ if( aRes.nFlags & MAN_MASK_NEW_SEP ){ // neue Section
+ CreateSep( rTxtPos ); // PageDesc erzeugen und fuellen
+ bPgSecBreak = FALSE; // -> 0xc war ein Sectionbreak, aber
+ } // kein Pagebreak;
+
+ if( ( aRes.nFlags & MAN_MASK_NEW_PAP ) // neuer Absatz ueber Plcx.Fkp.papx
+ || rbStartLine )
+ { // oder ueber 0x0d o.ae. im Text
+ ProcessAktCollChange(
+ aRes,
+ &bStartAttr,
+ MAN_MASK_NEW_PAP == (aRes.nFlags & MAN_MASK_NEW_PAP)
+ && !bIgnoreText );
+ rbStartLine = FALSE;
+ }
+
+ // position of last CP that's to be ignored
+ long nSkipPos = -1;
+ BOOL bOldDontCreateSep = bDontCreateSep;
+
+ if( 0 < aRes.nSprmId ) // leere Attrs ignorieren
+ {
+ if( ( 256 > aRes.nSprmId ) || ( 0x0800 <= aRes.nSprmId ) )
+ {
+ if( bStartAttr ) // WW-Attribute
+ {
+ if( aRes.nMemLen >= 0 )
+ { // Attr anschalten
+ ImportSprm( aRes.pMemPos, (short)aRes.nMemLen, aRes.nSprmId );
+ }
+ }
+ else
+ EndSprm( aRes.nSprmId ); // Attr ausschalten
+ }
+ else if( aRes.nSprmId < 0x800 ) // eigene Hilfs-Attribute
+ {
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+ nSkipChars = ImportExtSprm( &aRes, bStartAttr );
+ if( 256 <= aRes.nSprmId && 258 >= aRes.nSprmId )
+ {
+ rTxtPos += nSkipChars; // Felder/Ftn-/End-Note hier ueberlesen
+ nSkipPos = rTxtPos-1;
+ }
+ }
+ }
+
+ if( bVer8 || nSkipChars || aRes.nSprmId == 260 )
+ // Feld oder Piece
+ // um nSkipChars bewegen bei Feldern und Pieces
+ pStrm->Seek( pSBase->WW8Cp2Fc( pPlcxMan->GetCpOfs() + rTxtPos, &bIsUnicode));
+ else
+ {
+ // sonst alte Pos wiederherstellen und Unicode-Flag ermitteln
+ pStrm->Seek( nOld );
+ }
+
+ // Find next Attr position (and Skip attributes of field contents if needed)
+ if( nSkipChars && !bIgnoreText )
+ pCtrlStck->MarkAllAttrsOld();
+ BOOL bOldIgnoreText = bIgnoreText;
+ bIgnoreText = TRUE;
+ USHORT nOldColl = nAktColl;
+ BOOL bDoPlcxManPlusPLus = TRUE;
+ long nNext;
+ do
+ {
+ if( bDoPlcxManPlusPLus )
+ (*pPlcxMan)++;
+ nNext = pPlcxMan->Where();
+ if( (0 <= nNext) && (nSkipPos >= nNext) )
+ {
+ nNext = ReadTextAttr( rTxtPos, rbStartLine );
+ bDoPlcxManPlusPLus = FALSE;
+ bIgnoreText = TRUE;
+ }
+ }
+ while( nSkipPos >= nNext );
+ bIgnoreText = bOldIgnoreText;
+ bDontCreateSep = bOldDontCreateSep;
+ if( nSkipChars )
+ {
+ pCtrlStck->KillUnlockedAttrs( *pPaM->GetPoint() );
+ if( nOldColl != pPlcxMan->GetColl() )
+ ProcessAktCollChange(aRes, 0, FALSE);
+ }
+
+ return nNext;
+}
+
+void SwWW8ImplReader::ReadAttrs( long& rNext, long& rTxtPos, BOOL& rbStartLine )
+{
+ if( rTxtPos >= rNext )
+ { // Stehen Attribute an ?
+
+ do
+ {
+ rNext = ReadTextAttr( rTxtPos, rbStartLine );
+ }while( rTxtPos >= rNext );
+
+ }
+ else if ( rbStartLine )
+ {
+// keine Attribute, aber trotzdem neue Zeile
+// wenn eine Zeile mit einem Seitenumbruch aufhoert und sich keine
+// Absatzattribute / Absatzvorlagen aendern, ist das Zeilenende
+// nicht im Plcx.Fkp.papx eingetragen, d.h. ( nFlags & MAN_MASK_NEW_PAP )
+// ist FALSE. Deshalb muss als Sonderbehandlung hier die Vorlage gesetzt
+// werden.
+ if( !bCpxStyle )
+ {
+ SetTxtFmtCollAndListLevel( *pPaM, pCollA[ nAktColl ] );
+ }
+ rbStartLine = FALSE;
+ }
+}
+
+// ReadAttrEnds zum Lesen nur der Attributenden am Ende eines Textes oder
+// Textbereiches ( Kopfzeile, Fussnote, ...). Attributanfaenge, Felder
+// werden ignoriert.
+void SwWW8ImplReader::ReadAttrEnds( long& rNext, long& rTxtPos )
+{
+
+ while( rTxtPos >= rNext )
+ {
+ WW8PLCFManResult aRes;
+
+ BOOL b = pPlcxMan->Get( &aRes ); // hole Attribut-Pos
+
+ if( !b
+ && (aRes.nSprmId >= 0) // nur Attributenden noch bearbeiten,
+ && ( (aRes.nSprmId < 256)
+ || (aRes.nSprmId >= 0x0800) )
+ )
+ { // Anfaenge gehoeren zum naechsten Spezialtext
+ EndSprm( aRes.nSprmId ); // Fussnoten und Felder ignorieren
+ }
+ (*pPlcxMan)++;
+ rNext = pPlcxMan->Where();
+ }
+ BOOL bDummyReSync;
+ ProcessSpecial( TRUE, &bDummyReSync );
+}
+
+void SwWW8ImplReader::ReadText( long nStartCp, long nTextLen, short nType )
+{
+ if( nIniFlags & WW8FL_NO_TEXT )
+ return;
+
+ BOOL bStartLine = TRUE;
+ short nCrCount = 0;
+
+ nAktColl = 0;
+ pAktItemSet = 0;
+ nCharFmt = -1;
+ bSpec = FALSE;
+ nHdTextHeight = nFtTextHeight = 0;
+
+ pPlcxMan = new WW8PLCFMan( pSBase, nType, nStartCp );
+ long nCpOfs = pPlcxMan->GetCpOfs(); // Offset fuer Header/Footer, Footnote
+
+ WW8_CP nNext = pPlcxMan->Where();
+
+ pStrm->Seek( pSBase->WW8Cp2Fc( nStartCp + nCpOfs, &bIsUnicode ) );
+
+ if( (0 == nStartCp+nCpOfs)
+ && SetCols( 0, pPlcxMan->GetSepPLCF(), 0, TRUE ) )
+ {
+ // Start of text:
+ //
+ // look for cols and insert a section at the very beginning...
+ //
+ if( !pPageDesc )
+ pPageDesc = &rDoc._GetPageDesc( 0 );
+ SwFrmFmt &rFmt = pPageDesc->GetMaster();
+ USHORT nLIdx = ( ( pWwFib->lid & 0xff ) == 0x9 ) ? 1 : 0;
+ SetPage1( pPageDesc, rFmt, pPlcxMan->GetSepPLCF(), nLIdx, FALSE );
+ const SwFmtCol& rCol = rFmt.GetCol();
+ // if PageDesc has been inserted and has cols
+ // insert a *section* with cols instead
+ if( rCol.GetNumCols() )
+ {
+ InsertSectionWithWithoutCols( *pPaM, &rCol );
+ // remove columns from PageDesc
+ SwFmtCol aCol;
+ rFmt.SetAttr( aCol );
+ }
+ }
+
+ WW8_CP l = nStartCp;
+ while ( l<nStartCp+nTextLen )
+ {
+
+ ReadAttrs( nNext, l, bStartLine );// behandelt auch Section-Breaks
+
+ if( bPgSecBreak ) // Pagebreak, aber kein Sectionbreak
+ {
+ SwPosition& rPt = *pPaM->GetPoint();
+ // new behavior: insert additional node only WHEN the Pagebreak
+ // ( #74468# ) is contained in a NODE that is NOT EMPTY
+ if( (nLastFlyNode == rPt.nNode.GetIndex())
+ || (0 < rPt.nContent.GetIndex()) )
+ {
+ rDoc.AppendTxtNode( rPt );
+ }
+ rDoc.Insert( *pPaM, SvxFmtBreakItem( SVX_BREAK_PAGE_BEFORE ) );
+ bPgSecBreak = FALSE;
+ }
+ if( l>= nStartCp + nTextLen )
+ break;
+
+ bStartLine = ReadChars( l, nNext, nStartCp+nTextLen, nCpOfs );
+
+ if( bStartLine ) // Zeilenende
+ {
+ rDoc.AppendTxtNode( *pPaM->GetPoint() );
+
+ if( ( nCrCount++ & 0x40 ) == 0 // alle 64 CRs aufrufen
+ && nType == MAN_MAINTEXT ){ // nicht fuer Header u. ae.
+ nProgress = (USHORT)( l * 100 / nTextLen );
+ ::SetProgressState( nProgress, rDoc.GetDocShell() ); // Update
+ }
+ }
+ }
+ ReadAttrEnds( nNext, l );
+ JoinNode( pPaM );
+ if( nType == MAN_MAINTEXT )
+ UpdatePageDescs( nPageDescOffset ); // muss passieren, solange es den
+ // PlcxMan noch gibt
+ DELETEZ( pPlcxMan );
+}
+
+/***************************************************************************
+# class SwWW8ImplReader
+#**************************************************************************/
+
+SwWW8ImplReader::SwWW8ImplReader( BYTE nVersionPara,
+ SvStorage* pStorage, SvStream* pSt,
+ SwDoc& rD, BOOL bNewDoc )
+ : pStg( pStorage ), rDoc( rD ), pStrm( pSt ), bNew( 0 != bNewDoc ),
+ pMSDffManager( 0 ), pAtnNames( 0 ), pAuthorInfos( 0 ), pLastPgDeskIdx( 0 ),
+ pDataStream( 0 ), pTableStream( 0 )
+{
+ pStrm->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ nWantedVersion = nVersionPara;
+ pCtrlStck = 0;
+ pEndStck = 0;
+ pRefFldStck = 0;
+ pFonts = 0;
+ pSBase = 0;
+ pPlcxMan = 0;
+ pStyles = 0;
+ pAktColl = 0;
+ pLstManager = 0;
+ pAktItemSet = 0;
+ pCollA = 0;
+ pHdFt = 0;
+ pWFlyPara = 0;
+ pSFlyPara = 0;
+ pFlyFmtOfJustInsertedGraphic = 0;
+ nColls = nAktColl = 0;
+ nObjLocFc = nPicLocFc = 0;
+ bReadNoTbl = bPgSecBreak = bSpec = bObj = bApo = bTxbxFlySection
+ = bHasBorder = bSymbol = bIgnoreText = bDontCreateSep = bTable
+ = bTableInApo = bWasTabRowEnd = bTxtCol = FALSE;
+ bShdTxtCol = bCharShdTxtCol = bAnl = bHdFtFtnEdn = bFtnEdn
+ = bIsHeader = bIsFooter = bSectionHasATitlePage
+ = bIsUnicode = bCpxStyle = bStyNormal = bWWBugNormal = FALSE;
+ bNoAttrImport = bPgChpLevel = bEmbeddObj = bFloatingCtrl = FALSE;
+ bAktAND_fNumberAcross = FALSE;
+ bNoLnNumYet = TRUE;
+ bRestartLnNumPerSection = FALSE;
+ nProgress = 0;
+ nHdTextHeight = nFtTextHeight = 0;
+ nPgWidth = lA4Width;
+ nPgLeft = nPgRight = nPgTop = MM_250;
+ nCorrIhdt = 0;
+ nSwNumLevel = nWwNumType = 0xff;
+ pTableDesc = 0;
+ pNumRule = 0;
+ pNumOlst = 0;
+ pBehindSection = 0;
+ pNewSection = 0;
+ pNode_FLY_AT_CNTNT = 0;
+ pDrawFmt = 0;
+ pDrawModel = 0;
+ pDrawPg = 0;
+ pDrawGroup = 0;
+ pDrawHeight = 0;
+ nDrawTxbx = 0;
+ pDrawEditEngine = 0;
+ pFormImpl = 0;
+ nLeftParaMgn = 0;
+ nTxtFirstLineOfst = 0;
+ pNumFldType = 0;
+ nFldNum = 0;
+
+ nLastFlyNode = ULONG_MAX;
+ nImportedGraphicsCount = 0;
+
+ nLFOPosition = USHRT_MAX;
+ nListLevel = nWW8MaxListLevel;
+
+ eFontSrcCharSet = RTL_TEXTENCODING_DONTKNOW;
+ eFontDstCharSet = RTL_TEXTENCODING_DONTKNOW;
+ eHardCharSet = RTL_TEXTENCODING_DONTKNOW;
+ pPageDesc = 0;
+
+ nNfcPgn = nPgChpDelim = nPgChpLevel = 0;
+
+#ifdef DEBUG
+ Sound::Beep();
+#endif
+}
+
+void SwWW8ImplReader::DeleteStk(SwFltControlStack* pStck)
+{
+ if( pStck )
+ {
+ pStck->SetAttr( *pPaM->GetPoint(), 0, FALSE );
+ pStck->SetAttr( *pPaM->GetPoint(), 0, FALSE );
+ delete pStck;
+ }
+ else
+ {
+ ASSERT( !this, "WW-Stack bereits geloescht" );
+ }
+}
+
+ULONG SwWW8ImplReader::LoadDoc1( SwPaM& rPaM ,WW8Glossary *pGloss)
+{
+ ULONG nErrRet = 0;
+
+ if( bNew && pStg && !pGloss)
+ ReadDocInfo();
+
+ pPaM = new SwPaM( *rPaM.GetPoint() );
+
+ pCtrlStck = new SwWW8FltControlStack( &rDoc, nFieldFlags );
+
+ /*
+ Endestack: haelt z.B. Bookmarks und Variablen solange vor,
+ bis er den Befehl zum inserten bekommt.
+ */
+ pEndStck = new SwFltEndStack( &rDoc, nFieldFlags );
+ /*
+ fieldstack holds Reference Fields until the very end of file import
+ */
+ pRefFldStck = new SwWW8FltControlStack( &rDoc, nFieldFlags );
+
+ nPageDescOffset = rDoc.GetPageDescCnt();
+
+ SwNodeIndex aSttNdIdx( rDoc.GetNodes() );
+ SwRelNumRuleSpaces aRelNumRule( rDoc, bNew );
+
+ USHORT eMode = REDLINE_SHOW_INSERT;
+
+ // enum-para mitgeben, welche Versions-Nummern erlaubt sind: ww6, ww8, ...
+
+ if (pGloss)
+ pWwFib = pGloss->GetFib();
+ else
+ pWwFib = new WW8Fib( *pStrm, nWantedVersion ); // Fib einlesen
+
+ if ( pWwFib->nFibError )
+ { // ERR_NO_WW8_FILE
+ nErrRet = ERR_SWG_READ_ERROR; // oder ERR_SW6_READ_ERROR
+ }
+ else if( pWwFib->fEncrypted )
+ {
+ nErrRet = ERR_SW6_PASSWD; // gecryptet geht nicht
+
+
+
+ // Annotation: Crypted files C O U L D be imported if we used the methods
+ // provided by Caolan Mc Nammara.
+ // Written permission (my e-mail) was given by him
+ // but no special document has been signed...
+ // 27. Sept. 1999, K.-H. Zimmer
+
+
+ }
+ else if( ( nIniFlags & WW8FL_NO_COMPLEX ) && pWwFib->fComplex )
+ {
+ nErrRet = WARN_WW6_FASTSAVE_ERR; // Warning melden
+ }
+ else
+ {
+ // praktische Hilfsvariablen besetzen:
+ bVer67 = ( (6 == pWwFib->nVersion)
+ || (7 == pWwFib->nVersion) ); // z.B.: altes Sprm-Id-Format!
+ bVer6 = (6 == pWwFib->nVersion);
+ bVer7 = (7 == pWwFib->nVersion);
+ bVer8 = (8 == pWwFib->nVersion);
+
+ SvStorageStreamRef xTableStream, xDataStream;
+
+ // Nachdem wir nun den FIB eingelesen haben, wissen wir ja,
+ // welcher Table-Stream gueltig ist.
+ // Diesen oeffnen wir nun.
+ switch( pWwFib->nVersion ) // 6 steht fuer "6 ODER 7", 7 steht fuer "NUR 7"
+ {
+ case 6:
+ case 7: pTableStream = pStrm;
+ pDataStream = pStrm;
+ break;
+
+ case 8:
+ if( !pStg )
+ {
+ ASSERT( pStg, "Version 8 muss immer einen Storage haben!" );
+ nErrRet = ERR_SWG_READ_ERROR;
+ break;
+ }
+ xTableStream = pStg->OpenStream(
+ String( (1 == pWwFib->fWhichTblStm)
+ ? "1Table"
+ : "0Table",
+ RTL_TEXTENCODING_MS_1252 ),
+ STREAM_STD_READ );
+ pTableStream = &xTableStream;
+ pTableStream->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+
+ xDataStream = pStg->OpenStream(
+ String( "Data", RTL_TEXTENCODING_MS_1252 ),
+ STREAM_STD_READ | STREAM_NOCREATE );
+ if( xDataStream.Is() && SVSTREAM_OK == xDataStream->GetError() )
+ {
+ pDataStream = &xDataStream;
+ pDataStream->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ }
+ else
+ pDataStream = pStrm;
+
+ if( pWwFib->lcbPlcfspaHdr || pWwFib->lcbPlcfspaMom )
+ pMSDffManager = new SwMSDffManager( *this );
+ break;
+
+ default:// Programm-Fehler!
+ ASSERT( !this, "Es wurde vergessen, nVersion zu kodieren!" );
+ nErrRet = ERR_SWG_READ_ERROR;
+ }
+
+ if( ERR_SWG_READ_ERROR != nErrRet )
+ {
+ if( 0x0100 == pWwFib->chse )
+ eTextCharSet = RTL_TEXTENCODING_APPLE_ROMAN;
+ else
+ eTextCharSet = rtl_getTextEncodingFromWindowsCharset( pWwFib->chse );
+ if( 0x0100 == pWwFib->chseTables )
+ eStructCharSet = RTL_TEXTENCODING_APPLE_ROMAN;
+ else
+ eStructCharSet = rtl_getTextEncodingFromWindowsCharset( pWwFib->chseTables );
+
+ bWWBugNormal = pWwFib->nProduct == 0xc03d;
+
+ if( !bNew )
+ aSttNdIdx = pPaM->GetPoint()->nNode;
+
+ ::StartProgress( STR_STATSTR_W4WREAD, 0, 100, rDoc.GetDocShell() );
+
+
+ rDoc.SetParaSpaceMax( TRUE, TRUE ); // Abstand zwischen zwei Absaetzen ist
+ // die SUMME von unterem Abst. des ersten und oberem Abst. des zweiten
+
+
+ // read Font Table
+ pFonts = new WW8Fonts( *pTableStream, *pWwFib );
+
+
+ pWDop = new WW8Dop( *pTableStream, pWwFib->nFib, pWwFib->fcDop, pWwFib->lcbDop ); // Document Properties
+ ImportDop( bNew != 0 );
+
+
+ /*
+ Import revisioning data: author names
+ */
+ if( pWwFib->lcbSttbfRMark )
+ ReadRevMarkAuthorStrTabl( *pTableStream,
+ pWwFib->fcSttbfRMark,
+ pWwFib->lcbSttbfRMark, rDoc );
+
+ /*
+ zuerst(!) alle Styles importieren (siehe WW8PAR2.CXX)
+ VOR dem Import der Listen !!
+ */
+ ::SetProgressState( nProgress, rDoc.GetDocShell() ); // Update
+ pStyles = new WW8RStyle( *pWwFib, this ); // Styles
+ pStyles->Import();
+ ::SetProgressState( nProgress, rDoc.GetDocShell() ); // Update
+
+
+
+ /*
+ jetzt erst alle Listen importieren (siehe WW8PAR3.CXX)
+ NACH dem Import der Styles !!
+ */
+ pLstManager = new WW8ListManager( *pTableStream, *this );
+ ::SetProgressState( nProgress, rDoc.GetDocShell() ); // Update
+
+
+
+ /*
+ zu guter Letzt: (siehe ebenfalls WW8PAR3.CXX)
+ ===============
+ alle Styles durchgehen und ggfs. zugehoeriges Listen-Format anhaengen
+ NACH dem Import der Styles und NACH dem Import der Listen !!
+ */
+ pStyles->RegisterNumFmts();
+
+
+ pSBase = new WW8ScannerBase( pStrm, pTableStream, pDataStream,
+ pWwFib );
+ static SvxExtNumType __READONLY_DATA eNumTA[16] = {
+ SVX_NUM_ARABIC, SVX_NUM_ROMAN_UPPER, SVX_NUM_ROMAN_LOWER, SVX_NUM_CHARS_UPPER_LETTER_N,
+ SVX_NUM_CHARS_LOWER_LETTER_N, SVX_NUM_ARABIC, SVX_NUM_ARABIC, SVX_NUM_ARABIC,
+ SVX_NUM_ARABIC, SVX_NUM_ARABIC,
+ SVX_NUM_ARABIC, SVX_NUM_ARABIC,
+ SVX_NUM_ARABIC, SVX_NUM_ARABIC,
+ SVX_NUM_ARABIC, SVX_NUM_ARABIC };
+
+ if( pSBase->AreThereFootnotes() ){
+ static SwFtnNum __READONLY_DATA eNumA[4] = {
+ FTNNUM_DOC, FTNNUM_CHAPTER, FTNNUM_PAGE, FTNNUM_DOC };
+
+ SwFtnInfo aInfo;
+ aInfo = rDoc.GetFtnInfo(); // Copy-Ctor privat
+
+ aInfo.ePos = FTNPOS_PAGE;
+ aInfo.eNum = eNumA[pWDop->rncFtn];
+ aInfo.aFmt.eType = eNumTA[pWDop->nfcFtnRef];
+ if( pWDop->nFtn )
+ aInfo.nFtnOffset = pWDop->nFtn - 1;
+ rDoc.SetFtnInfo( aInfo );
+ }
+ if( pSBase->AreThereEndnotes() ){
+ SwEndNoteInfo aInfo;
+ aInfo = rDoc.GetEndNoteInfo(); // parallel zu Ftn
+
+ // Ich kann nicht setzen, wann neu nummerieren...
+ // aInfo.eNum = eNumA[pWDop->pDop->rncEdn];
+ aInfo.aFmt.eType = eNumTA[pWDop->nfcEdnRef];
+ if( pWDop->nEdn )
+ aInfo.nFtnOffset = pWDop->nEdn - 1;
+ rDoc.SetEndNoteInfo( aInfo );
+ }
+
+ if( pWwFib->lcbPlcfhdd )
+ pHdFt = new WW8PLCF_HdFt( pTableStream, *pWwFib, *pWDop );
+
+ if( !bNew ){ // in ein Dokument einfuegen ?
+ // Da immer ganze Zeile eingelesen werden, muessen
+ // evtl. Zeilen eingefuegt / aufgebrochen werden
+ const SwPosition* pPos = pPaM->GetPoint();
+ const SwTxtNode* pSttNd = rDoc.GetNodes()[ pPos->nNode ]->GetTxtNode();
+ USHORT nCntPos = pPos->nContent.GetIndex();
+
+ if( nCntPos && pSttNd->GetTxt().Len() ) // EinfuegePos nicht in leerer Zeile
+ rDoc.SplitNode( *pPos ); // neue Zeile erzeugen
+
+ if( pSttNd->GetTxt().Len() )
+ { // EinfuegePos nicht am Ende der Zeile
+ rDoc.SplitNode( *pPos ); // neue Zeile
+ pPaM->Move( fnMoveBackward ); // gehe in leere Zeile
+ }
+
+ // verhinder das Einlesen von Tabellen in Fussnoten / Tabellen
+ ULONG nNd = pPos->nNode.GetIndex();
+ bReadNoTbl = 0 != pSttNd->FindTableNode() ||
+ ( nNd < rDoc.GetNodes().GetEndOfInserts().GetIndex() &&
+ rDoc.GetNodes().GetEndOfInserts().StartOfSectionIndex() < nNd );
+
+ }
+
+ ::SetProgressState( nProgress, rDoc.GetDocShell() ); // Update
+
+ if (pGloss) // loop for each glossary entry and add dummy section node
+ {
+ WW8PLCF aPlc(&xTableStream,pWwFib->fcPlcfglsy,
+ pWwFib->lcbPlcfglsy,0 );
+
+ WW8_CP nStart, nEnd;
+ void* pDummy;
+
+ for (int i=0;i<pGloss->GetNoStrings();i++,aPlc++)
+ //for (int i=0;i<1;i++,aPlc++)
+ {
+ SwNodeIndex aIdx( rDoc.GetNodes().GetEndOfContent());
+ SwTxtFmtColl* pColl =
+ rDoc.GetTxtCollFromPool( RES_POOLCOLL_STANDARD);
+ SwStartNode *pNode =
+ rDoc.GetNodes().MakeTextSection(aIdx,
+ SwNormalStartNode,pColl);
+ pPaM->GetPoint()->nNode = pNode->GetIndex()+1;
+ pPaM->GetPoint()->nContent.Assign(pPaM->GetCntntNode(),0);
+ aPlc.Get( nStart, nEnd, pDummy );
+ ReadText(nStart,nEnd-nStart-1,MAN_MAINTEXT);
+ //ReadText( 0, pWwFib->ccpText, MAN_MAINTEXT );
+ }
+ }
+ else //ordinary case
+ {
+ ReadText( 0, pWwFib->ccpText, MAN_MAINTEXT );
+ }
+
+ ::SetProgressState( nProgress, rDoc.GetDocShell() ); // Update
+
+ if( pCollA )
+ {
+ SwNumRule aOutlineRule( *rDoc.GetOutlineNumRule() );
+
+ USHORT nI;
+ // Bitfeld, welche Outline-Level bereits an einem
+ // Style gesetzt wurden (vermeiden von Doppeltvergabe)
+ USHORT nFlagsStyleOutlLevel = 0;
+ if( !bNew )
+ {
+ const SwTxtFmtColls& rColls = *rDoc.GetTxtFmtColls();
+ for( nI = 0; nI < rColls.Count(); nI++ )
+ {
+ const SwTxtFmtColl& rColl = *rColls[ nI ];
+ if( MAXLEVEL > rColl.GetOutlineLevel() )
+ {
+ nFlagsStyleOutlLevel |= 1 << rColl.GetOutlineLevel();
+ }
+ }
+ }
+ USHORT nIa=10;
+ USHORT nIz=nColls;
+ for( USHORT nJ = 0; nJ < 2; nJ++ )
+ {
+ for( nI = nIa; nI < nIz; nI++ )
+ {
+ SwWW8StyInf& rSI = pCollA[ nI ];
+
+ if( ( MAXLEVEL > rSI.nOutlineLevel )
+ && rSI.pOutlineNumrule
+ && rSI.pFmt )
+ {
+ USHORT nAktFlags = 1 << rSI.nOutlineLevel;
+ if( nAktFlags & nFlagsStyleOutlLevel )
+ {
+ rSI.pFmt->SetAttr(
+ SwNumRuleItem( rSI.pOutlineNumrule->GetName() ) );
+ ((SwTxtFmtColl*)rSI.pFmt)->SetOutlineLevel( NO_NUMBERING );
+ }
+ else
+ // die Default-Styles im ZWEITEN Durchgang auf jeden Fall
+ // nehmen, die User-definierten nur, wenn auch verwendet.
+ if( nJ || rSI.pFmt->GetDepends() )
+ {
+ // Numformat aus der NumRule nehmen
+ // und bei der OutlineRule setzen.
+ aOutlineRule.Set(
+ rSI.nOutlineLevel,
+ rSI.pOutlineNumrule->Get( rSI.nOutlineLevel ) );
+ // am Style die Outlinenummer eintragen
+ ((SwTxtFmtColl*)rSI.pFmt)->SetOutlineLevel( rSI.nOutlineLevel );
+ // Flag verodern, um Doppeltvergabe zu vermeiden
+ nFlagsStyleOutlLevel |= nAktFlags;
+ }
+ }
+ }
+ nIa = 1;
+ nIz = 10;
+ }
+ if( nFlagsStyleOutlLevel )
+ rDoc.SetOutlineNumRule( aOutlineRule );
+
+ /* // wird nun ueber D'tor erledigt!
+ for( nI = 0; nI < nColls; nI++ ){
+ if( pCollA[nI].pWWFly )
+ delete( pCollA[nI].pWWFly );
+ }
+ */
+ delete[] pCollA;
+ }
+
+ if( pDrawPg && pMSDffManager && pMSDffManager->GetShapeOrders() )
+ {
+ // Hilfsarray zum Verketten der (statt SdrTxtObj) eingefuegten Rahmen
+ SvxMSDffShapeTxBxSort aTxBxSort;
+
+ // korrekte Z-Order der eingelesen Escher-Objekte sicherstellen
+ USHORT nShapeCount = pMSDffManager->GetShapeOrders()->Count();
+ USHORT nNewObjNum = 0;
+ for (USHORT nShapeNum=0; nShapeNum < nShapeCount; nShapeNum++)
+ {
+ SvxMSDffShapeOrder& rOrder = *(SvxMSDffShapeOrder*)
+ (pMSDffManager->GetShapeOrders()->GetObject( nShapeNum ));
+ if( rOrder.pObj )
+ {
+ ULONG nOldObjNum = rOrder.pObj->GetOrdNum();
+ if( (nOldObjNum != nNewObjNum )
+ && (pDrawPg->GetObj( nOldObjNum )) )
+ pDrawPg->NbcSetObjectOrdNum( nOldObjNum, nNewObjNum );
+ ++nNewObjNum;
+ }
+ // Pointer in neues Sort-Array einfuegen
+ if( rOrder.nTxBxComp && rOrder.pFly )
+ aTxBxSort.Insert( &rOrder );
+ }
+ // zu verkettende Rahmen jetzt verketten
+ USHORT nTxBxCount = aTxBxSort.Count();
+ if( nTxBxCount )
+ {
+ SwFmtChain aChain;
+ for (USHORT nTxBxNum=0; nTxBxNum < nTxBxCount; nTxBxNum++)
+ {
+ SvxMSDffShapeOrder& rOrder =
+ *(SvxMSDffShapeOrder*)(aTxBxSort.GetObject( nTxBxNum ));
+
+ // Fly-Frame-Formate initialisieren
+ SwFlyFrmFmt* pFlyFmt = rOrder.pFly;
+ SwFlyFrmFmt* pNextFlyFmt = 0;
+ SwFlyFrmFmt* pPrevFlyFmt = 0;
+ // ggfs. Nachfolger ermitteln
+ if( 1+nTxBxNum < nTxBxCount )
+ {
+ SvxMSDffShapeOrder& rNextOrder =
+ *(SvxMSDffShapeOrder*)(aTxBxSort.GetObject( nTxBxNum+1 ));
+ if( (0xFFFF0000 & rOrder.nTxBxComp)
+ == (0xFFFF0000 & rNextOrder.nTxBxComp)
+ && rOrder.nHdFtSection
+ == rNextOrder.nHdFtSection )
+ pNextFlyFmt = rNextOrder.pFly;
+ }
+ // ggfs. Vorgaenger ermitteln
+ if( nTxBxNum )
+ {
+ SvxMSDffShapeOrder& rPrevOrder =
+ *(SvxMSDffShapeOrder*)(aTxBxSort.GetObject( nTxBxNum-1 ));
+ if( (0xFFFF0000 & rOrder.nTxBxComp)
+ == (0xFFFF0000 & rPrevOrder.nTxBxComp)
+ && rOrder.nHdFtSection
+ == rPrevOrder.nHdFtSection )
+ pPrevFlyFmt = rPrevOrder.pFly;
+ }
+ // Falls Nachfolger oder Vorgaenger vorhanden,
+ // die Verkettung am Fly-Frame-Format eintragen
+ if( pNextFlyFmt || pPrevFlyFmt )
+ {
+ aChain.SetNext( pNextFlyFmt );
+ aChain.SetPrev( pPrevFlyFmt );
+ pFlyFmt->SetAttr( aChain );
+ }
+ }
+
+ }
+
+ }
+
+ if( bNew )
+ {
+ if( pWDop->fRevMarking )
+ eMode |= REDLINE_ON;
+ if( pWDop->fRMView )
+ eMode |= REDLINE_SHOW_DELETE;
+ if(pStg && !pGloss) /*meaningless for a glossary, cmc*/
+ {
+ const OfaFilterOptions* pVBAFlags = OFF_APP()->GetFilterOptions();
+ SvxImportMSVBasic aVBasic(*rDoc.GetDocShell(),*pStg,
+ pVBAFlags->IsLoadWordBasicCode(),
+ pVBAFlags->IsLoadWordBasicStorage() );
+ String s1( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "Macros" )));
+ String s2( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "VBA" )));
+ int nRet = aVBasic.Import( s1, s2 );
+ if( 2 & nRet )
+ rDoc.SetContainsMSVBasic( TRUE );
+ }
+ }
+
+ DELETEZ( pStyles );
+
+ if( pFormImpl )
+ DeleteFormImpl();
+ GrafikDtor();
+ DELETEZ( pMSDffManager );
+ DELETEZ( pHdFt );
+ DELETEZ( pLstManager );
+ DELETEZ( pSBase );
+ DELETEZ( pWDop );
+ DELETEZ( pFonts );
+ DELETEZ( pAtnNames );
+ DELETEZ( pAuthorInfos );
+ DELETEZ( pLastPgDeskIdx );
+ ::EndProgress( rDoc.GetDocShell() );
+ }
+ pDataStream = 0;
+ pTableStream = 0;
+ }
+ DELETEZ( pBehindSection );
+ if (!pGloss)
+ DELETEZ( pWwFib );
+ DeleteCtrlStk();
+ DeleteEndStk();
+ DeleteRefFldStk();
+
+ // set NoBallanced flag on last inserted section
+ if( pNewSection )
+ {
+ pNewSection->GetFmt()->SetAttr( SwFmtNoBalancedColumns( TRUE ) );
+ }
+
+ // NumRules koennen erst nach dem setzen aller Attribute korrgiert werden
+#ifdef DEBUG
+ {
+ ULONG nN = rDoc.GetNodes().Count();
+ for( ULONG iN = 0; iN < nN; ++iN )
+ {
+ SwTxtNode* pN = rDoc.GetNodes()[ iN ]->GetTxtNode();
+ if( pN && pN->GetNum() )
+ {
+ const SwNumRuleItem& rItem
+ = (SwNumRuleItem&)(pN->SwCntntNode::GetAttr( RES_PARATR_NUMRULE ) );
+ if( !rItem.GetValue().Len() )
+ ASSERT( !this, "NdNum gesetzt, aber KEIN NumRuleItem" );
+ }
+ }
+ }
+#endif
+
+#ifdef DEBUG
+ {
+ const SwSpzFrmFmts& rFmts = *rDoc.GetSpzFrmFmts();
+ for( ULONG iN = 0, nN = rFmts.Count(); iN < nN; ++iN )
+ {
+ const SwFmtAnchor& rA = rFmts[ iN ]->GetAnchor();
+ if( FLY_IN_CNTNT == rA.GetAnchorId() &&
+ !rA.GetCntntAnchor())
+ {
+ int x = 0;
+ }
+ }
+ }
+#endif
+
+ aRelNumRule.SetNumRelSpaces( rDoc );
+ if( !bNew && !nErrRet && aSttNdIdx.GetIndex() )
+ {
+ aSttNdIdx++;
+ aRelNumRule.SetOultineRelSpaces( aSttNdIdx,
+ pPaM->GetPoint()->nNode );
+ }
+
+ UpdateFields();
+
+ DELETEZ( pPaM );
+ // delete the pam before the call for hide all redlines (Bug 73683)
+ if( bNew )
+ rDoc.SetRedlineMode( eMode );
+
+ return nErrRet;
+}
+
+const String* SwWW8ImplReader::GetAnnotationAuthor( short nIdx )
+{
+ if( !pAtnNames && pWwFib->lcbGrpStAtnOwners )
+ {
+ // Authoren bestimmen: steht im TableStream
+ pAtnNames = new SvStringsDtor( 4, 4 );
+ SvStream& rStrm = *pTableStream;
+
+ long nOldPos = rStrm.Tell();
+ rStrm.Seek( pWwFib->fcGrpStAtnOwners );
+
+ long nRead = 0, nCount = pWwFib->lcbGrpStAtnOwners;
+ String* pAutName;
+ while( nRead < nCount )
+ {
+ if( bVer67 )
+ {
+ pAutName = new String( WW8ReadPString( rStrm, FALSE ) );
+ nRead += pAutName->Len() + 1; // Laenge + BYTE Count
+ }
+ else
+ {
+ pAutName = new String( WW8Read_xstz( rStrm, 0, FALSE ) );
+ nRead += pAutName->Len() * 2 + 2;// UNICode: doppelte Laenge + USHORT Count
+ }
+ pAtnNames->Insert( pAutName, pAtnNames->Count() );
+ }
+ rStrm.Seek( nOldPos );
+ }
+
+ return pAtnNames && nIdx < pAtnNames->Count() ? (*pAtnNames)[ nIdx ] : 0;
+}
+
+
+#pragma optimize( "", off )
+
+ULONG SwWW8ImplReader::LoadDoc( SwPaM& rPaM,WW8Glossary *pGloss)
+{
+ ULONG nErrRet = 0;
+
+ pAktColl = 0;
+ pAktItemSet = 0;
+ nIniFlags = ReadFilterFlags( "WW" );
+ nIniFlags1= ReadFilterFlags( "WW8" );
+// nIniHdSiz = ReadFilterFlags( "WWHD" );
+ nIniFtSiz = ReadFilterFlags( "WWFT" );
+ // schiebt Flys um x twips nach rechts o. links
+ nIniFlyDx = ReadFilterFlags( "WWFLX" );
+ nIniFlyDy = ReadFilterFlags( "WWFLY" );// nach oben o. unten
+ Read_FieldIniFlags();
+
+ UINT16 nMagic;
+ *pStrm >> nMagic;
+
+ switch( nWantedVersion ) // beachte: 6 steht fuer "6 ODER 7", 7 steht fuer "NUR 7"
+ {
+ case 6:
+ case 7:
+ if( 0xa5dc != nMagic )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if( pStg && 0xa5ec == nMagic )
+ {
+ ULONG nCurPos = pStrm->Tell();
+ UINT32 nfcMin;
+ if( pStrm->Seek( nCurPos + 22 ) )
+ {
+ *pStrm >> nfcMin;
+ if( 0x300 != nfcMin )
+ nErrRet = ERR_WW6_NO_WW6_FILE_ERR;
+ }
+ pStrm->Seek( nCurPos );
+ }
+ else
+ nErrRet = ERR_WW6_NO_WW6_FILE_ERR;
+ }
+ break;
+ case 8: if( 0xa5ec != nMagic )
+ nErrRet = ERR_WW8_NO_WW8_FILE_ERR;
+ break;
+
+ default:
+ nErrRet = ERR_WW8_NO_WW8_FILE_ERR;
+ ASSERT( !this, "Es wurde vergessen, nVersion zu kodieren!" );
+ }
+
+ if( !nErrRet )
+ nErrRet = LoadDoc1( rPaM ,pGloss);
+
+#ifdef DEBUG
+ Sound::Beep();
+#endif
+
+ return nErrRet; // return Errorcode
+}
+
+
+ULONG WW8Reader::Read( SwDoc &rDoc, SwPaM &rPam,
+ const String & /* FileName, falls benoetigt wird */ )
+{
+ USHORT nOldBuffSize = 32768;
+ BOOL bNew = !bInsertMode; // Neues Doc ( kein Einfuegen )
+
+
+ SvStorageStreamRef refStrm; // damit uns keiner den Stream klaut
+ SvStream* pIn = pStrm;
+
+ ULONG nRet = 0;
+ BYTE nVersion = 8;
+
+ String sFltName = GetFltName();
+ if( sFltName.EqualsAscii( "WW6" ) )
+ {
+ if( pStrm )
+ nVersion = 6;
+ else
+ {
+ ASSERT( FALSE, "WinWord 95 Reader-Read ohne Stream" );
+ nRet = ERR_SWG_READ_ERROR;
+ }
+ }
+ else
+ {
+ if( sFltName.EqualsAscii( "CWW6" ) )
+ nVersion = 6;
+ else if( sFltName.EqualsAscii( "CWW7" ) )
+ nVersion = 7;
+
+ if( pStg )
+ {
+ nRet = OpenMainStream( refStrm, nOldBuffSize );
+ pIn = &refStrm;
+ }
+ else
+ {
+ ASSERT( FALSE, "WinWord 95/97 Reader-Read ohne Storage" );
+ nRet = ERR_SWG_READ_ERROR;
+ }
+ }
+
+ if( !nRet )
+ {
+ //JP 18.01.96: Alle Ueberschriften sind normalerweise ohne
+ // Kapitelnummer. Darum hier explizit abschalten
+ // weil das Default jetzt wieder auf AN ist.
+ if( bNew )
+ {
+ Reader::SetNoOutlineNum( rDoc );
+ // MIB 27.09.96: Umrandung uns Abstaende aus Frm-Vorlagen entf.
+ Reader::ResetFrmFmts( rDoc );
+ }
+ SwWW8ImplReader* pRdr = new SwWW8ImplReader( nVersion, pStg,
+ pIn, rDoc, bNew );
+ nRet = pRdr->LoadDoc( rPam );
+ delete pRdr;
+
+ if( refStrm.Is() )
+ {
+ refStrm->SetBufferSize( nOldBuffSize );
+ refStrm.Clear();
+ }
+ }
+ return nRet;
+}
+
+int WW8Reader::GetReaderType()
+{
+ return SW_STORAGE_READER | SW_STREAM_READER;
+}
+
+BOOL WW8Reader::HasGlossaries() const
+{
+ return TRUE;
+}
+
+
+BOOL WW8Reader::ReadGlossaries( SwTextBlocks& rBlocks, BOOL bSaveRelFiles ) const
+{
+ USHORT nOldBuffSize = 32768;
+ SvStorageStreamRef refStrm;
+
+ WW8Reader *pThis = (WW8Reader *)this;
+ ULONG nRet = pThis->OpenMainStream( refStrm, nOldBuffSize );
+
+ WW8Glossary aGloss( refStrm, 8, pStg );
+ return aGloss.Load(rBlocks, bSaveRelFiles );
+}
+
+
+#pragma optimize( "", off )
+
+
+BOOL SwMSDffManager::GetOLEStorageName( long nOLEId, String& rStorageName,
+ SvStorageRef& rSrcStorage,
+ SvStorageRef& rDestStorage ) const
+{
+ BOOL bRet = FALSE;
+
+ long nPictureId = 0;
+ if( !( rReader.nIniFlags & WW8FL_NO_OLE ) && rReader.pStg )
+ {
+ // dann holen wir uns mal ueber den TextBox-PLCF die richtigen
+ // Char Start-/End-Positionen. In dem Bereich sollte dann
+ // das EinbettenFeld und die entsprechenden Sprms zu finden
+ // sein. Wir brauchen hier aber nur das Sprm fuer die Picture Id
+ long nOldPos = rReader.pStrm->Tell();
+ {
+ long nStartCp, nEndCp;
+ rReader.GetTxbxTextSttEndCp( nStartCp, nEndCp,
+ ( nOLEId >> 16 ) & 0xFFFF,
+ nOLEId & 0xFFFF );
+
+ WW8PLCFxSaveAll aSave;
+ memset( &aSave, 0, sizeof( aSave ) );
+ rReader.pPlcxMan->SaveAllPLCFx( aSave );
+
+ nStartCp += rReader.nDrawCpO;
+ nEndCp += rReader.nDrawCpO;
+ WW8PLCFx_Cp_FKP* pChp = rReader.pPlcxMan->GetChpPLCF();
+ pChp->SeekPos( nStartCp );
+
+ WW8_CP nStart = pChp->Where();
+ while( nStart <= nEndCp && !nPictureId )
+ {
+ WW8PLCFxDesc aDesc;
+ pChp->GetSprms( &aDesc );
+ (*pChp)++;
+ WW8_CP nNextEnd = pChp->Where();
+ WW8_CP nEnd = ( nNextEnd < nEndCp ) ? nNextEnd : nEndCp;
+
+ if( aDesc.nSprmsLen && aDesc.pMemPos ) // Attribut(e) vorhanden
+ {
+ long nLen = aDesc.nSprmsLen;
+ BYTE* pSprm = aDesc.pMemPos;
+
+ while( nLen >= 2 && !nPictureId )
+ {
+ BYTE nDelta;
+ USHORT nId = WW8GetSprmId( rReader.pWwFib->nVersion,
+ pSprm, &nDelta );
+ short nSL = WW8GetSprmSizeBrutto(
+ rReader.pWwFib->nVersion, pSprm, &nId );
+
+ if( nLen < nSL )
+ break; // nicht mehr genug Bytes uebrig
+
+ if( 0x6A03 == nId && 0 < nLen )
+ {
+ nPictureId = SVBT32ToLong( pSprm + 1 +
+ nDelta + WW8SprmDataOfs( nId ) );
+ bRet = TRUE;
+ }
+ pSprm += nSL;
+ nLen -= nSL;
+ }
+ }
+ nStart = nNextEnd;
+ }
+
+ rReader.pPlcxMan->RestoreAllPLCFx( aSave );
+ }
+ rReader.pStrm->Seek( nOldPos );
+ }
+
+ if( bRet )
+ {
+ ( rStorageName = '_' ) += String::CreateFromInt32( nPictureId );
+ rSrcStorage = rReader.pStg->OpenStorage( WW8_ASCII2STR( "ObjectPool" ) );
+ SwDocShell *pDocShell = rReader.rDoc.GetDocShell();
+ if (pDocShell == 0)
+ bRet=FALSE;
+ else
+ rDestStorage = pDocShell->GetStorage();
+ }
+ return bRet;
+}
+
+BOOL SwMSDffManager::ShapeHasText( ULONG nShapeId, ULONG nFilePos ) const
+{
+ // Zur Zeit des Einlesens einer einzelnen Box, die womoeglich Teil einer
+ // Gruppe ist, liegen noch nicht genuegend Informationen vor, um
+ // entscheiden zu koennen, ob wir sie nicht doch als Textfeld benoetigen.
+ // Also vorsichtshalber mal alle umwandeln:
+ return TRUE;
+}
+/*
+void SwMSDffManager::ProcessClientAnchor2( SvStream& rSt, DffRecordHeader& rHd, void* pData, DffObjData& rObj )
+{
+ if( rHd.nRecLen && rObj.nShapeId )
+ {
+ SvxMSDffImportData& rData = *(SvxMSDffImportData*)pData;
+
+ SvxMSDffImportRec* pImpRec = 0;
+ // find out if this shape did get a Record already
+ USHORT nRecCnt = rData.GetRecCount();
+ if( nRecCnt )
+ {
+ for(USHORT i = nRecCnt; i; )
+ {
+ i--;
+ SvxMSDffImportRec* pRec = rData.GetRecord( i );
+ if( pRec && (rObj.nShapeId == pRec->nShapeId) )
+ {
+ // Nun hab ich Dich, Du Wicht!
+ pImpRec = pRec;
+ break;
+ }
+ }
+ }
+ if( !pImpRec )
+ {
+ SvxMSDffImportRec* pTmpRec = new SvxMSDffImportRec;
+ pTmpRec->nShapeId = rObj.nShapeId;
+ rData.aRecords.Insert( pTmpRec );
+ pImpRec = rData.GetRecord( nRecCnt );
+ if( !pImpRec )
+ delete pTmpRec;
+ }
+ if( pImpRec )
+ {
+ // new
+ pImpRec->pClientAnchorBuffer = new char[ rHd.nRecLen ];
+ pImpRec->nClientAnchorLen = rHd.nRecLen;
+ rSt.Read( pImpRec->pClientAnchorBuffer, rHd.nRecLen );
+ }
+ }
+}
+*/
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8par.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.143 2000/09/18 16:04:59 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.142 2000/08/28 14:54:44 khz
+ #64941# compare Hd./Ft./Section info to prevent prohibited TxBx linkage
+
+ Revision 1.141 2000/08/22 17:08:54 cmc
+ #77743# OLE Import, bad seek & bad FilterOptions
+
+ Revision 1.140 2000/08/18 09:48:24 khz
+ Import Line Numbering (restart on new section)
+
+ Revision 1.139 2000/08/18 06:47:22 khz
+ Import Line Numbering
+
+ Revision 1.138 2000/08/04 10:56:49 jp
+ Soft-/HardHyphens & HardBlanks changed from attribute to unicode character
+
+ Revision 1.137 2000/07/28 15:37:14 khz
+ #73796# don't delete NumRule from Attr but set it into pDoc
+
+ Revision 1.136 2000/07/27 10:21:30 khz
+ #73796# stop ANList when opening next cell in a row and !pAktANLD->fNumberAcross
+
+ Revision 1.135 2000/07/17 13:47:00 khz
+ #73987# check if sprmSNfcPgn should cause section change or not
+
+ Revision 1.134 2000/07/12 12:20:30 khz
+ #76503# use SwFltStackEntry.bOld to mark attributes before skipping field
+
+ Revision 1.133 2000/07/10 12:52:37 jp
+ new Errormessage
+
+ Revision 1.132 2000/06/29 20:59:03 jp
+ new MS Filteroptions - change OLE-Objects to StarOffice Objects
+
+ Revision 1.131 2000/06/28 08:07:44 khz
+ #70915# Insert Section if end-note with flag 'on end of section' found
+
+ Revision 1.130 2000/06/23 10:30:01 khz
+ #71707# Make sure pNdNum is set to zero when no numbering on node
+
+ Revision 1.129 2000/06/21 12:19:15 khz
+ Task #74876 teilbehoben.
+
+ Revision 1.128 2000/05/31 12:22:50 khz
+ Changes for Unicode
+
+ Revision 1.127 2000/05/25 08:06:41 khz
+ Piece Table optimization, Unicode changes, Bugfixes
+
+ Revision 1.126 2000/05/18 10:58:55 jp
+ Changes for Unicode
+
+ Revision 1.125 2000/05/16 12:13:01 jp
+ ASS_FALSE define removed
+
+ Revision 1.124 2000/05/16 11:21:54 khz
+ Unicode code-conversion
+
+ Revision 1.123 2000/05/05 16:26:00 cmc
+ #75358# WW8 97Controls Import Fix
+
+ Revision 1.122 2000/05/05 15:59:24 khz
+ Task #74474# don't create Sections while skipping result of multi-column index-field
+
+ Revision 1.121 2000/05/04 07:43:51 khz
+ Task #75379# use new Save() and Restore()
+
+ Revision 1.120 2000/04/17 12:01:57 khz
+ Task #74837# prevent from breaking table (in Apo) when Apo-flag is missing
+
+ Revision 1.119 2000/04/12 11:08:31 khz
+ Task #74260# import FLY_PAGE-frames in Header/Footer as FLY_AT_CNTNT
+
+ Revision 1.118 2000/04/07 09:38:20 khz
+ Task #74468# insert new node when Pagebreak is in NOT EMPTY node
+
+ Revision 1.117 2000/03/01 13:32:20 jp
+ Bug #73683#: LoadDoc1 - call setredlinemode after the destroying of the pam
+
+ Revision 1.116 2000/02/25 15:03:33 jp
+ Task #72781#: new filter options for MS-filters
+
+ Revision 1.115 2000/02/22 16:23:23 khz
+ Task #72987# Ignore Sprms covering ONLY a Tab-Row-End Char #7
+
+ Revision 1.114 2000/02/21 13:08:23 jp
+ #70473# changes for unicode
+
+ Revision 1.113 2000/02/18 09:35:14 cmc
+ #69372# Improved Hyperlink Importing for WW97
+
+ Revision 1.107 2000/02/09 11:24:20 khz
+ Task #70473# char_t --> sal_Unicode
+
+ Revision 1.106 2000/02/02 18:12:04 jp
+ Task #72579#: WW8Reader can import glossaries
+
+ Revision 1.105 2000/02/02 18:07:35 khz
+ Task #69885# Read SPRMs that are stored in piece table grpprls
+
+ Revision 1.104 2000/01/26 18:55:59 jp
+ Task #72268#: flag for stored M$-VBasic storage
+
+ Revision 1.103 2000/01/26 10:27:09 cmc
+ #72268# Visual Basic Decompression
+
+ Revision 1.102 2000/01/14 11:27:56 khz
+ Task #68832# -- CORRECTION: Task Number of rev below should have been: 68832 !
+
+ Revision 1.101 2000/01/14 11:11:31 khz
+ Task #71343# look for Sprm 37 (not 5) to recognize APO
+
+ Revision 1.100 2000/01/10 13:38:52 jp
+ Task #64574#: LoadDoc1 - calculate the correct Z-Order for the SDR-Objects
+
+ Revision 1.99 2000/01/10 12:01:58 jp
+ Task #69283#: LoadDoc1 - set redline mode after the last content/attribut is inserted
+
+ Revision 1.98 2000/01/06 15:23:41 khz
+ Task #71411# Let last Section be unbalanced
+
+ Revision 1.97 1999/12/23 16:08:47 khz
+ Task #70788# Set bStartLine on each char 0x0c
+
+ Revision 1.96 1999/12/23 14:02:58 khz
+ Task #68143# avoid attributes atached solely to Cell-End marks
+
+ Revision 1.95 1999/12/22 18:03:09 khz
+ Task #70919# look if ParaStyle is different behind filed than it was before
+
+ Revision 1.94 1999/12/21 09:25:51 khz
+ Task #71111# Prevent from reading CONTENT when skiping field attributes
+
+*************************************************************************/
diff --git a/sw/source/filter/ww8/ww8par.hxx b/sw/source/filter/ww8/ww8par.hxx
new file mode 100644
index 000000000000..8c68d6f8809b
--- /dev/null
+++ b/sw/source/filter/ww8/ww8par.hxx
@@ -0,0 +1,1287 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8par.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WW8PAR_HXX
+#define _WW8PAR_HXX
+
+
+//#ifndef _COM_SUN_STAR_DRAWING_XSHAPE_HPP_
+//#include <com/sun/star/drawing/XShape.hpp>
+//#endif
+//#ifndef _COM_SUN_STAR_FORM_XFORMCOMPONENT_HPP_
+//#include <com/sun/star/form/XFormComponent.hpp>
+//#endif
+//#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+//#include <com/sun/star/beans/XPropertySet.hpp>
+//#endif
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _VCL_COLOR_HXX
+#include <vcl/color.hxx>
+#endif
+#ifndef _SV_FONTTYPE_HXX //autogen
+#include <vcl/fonttype.hxx>
+#endif
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+
+#ifndef _FLTSHELL_HXX
+#include <fltshell.hxx> // fuer den Attribut Stack
+#endif
+#ifndef _WW8STRUC_HXX
+#include <ww8struc.hxx> // WW8_BRC ( Forward-Declaration mit anschliessender
+#endif // Benutzung von WW8_BRC[4] in Deklaration will der
+ // doofe Os2Blci nicht )
+#ifndef _WW8SCAN_HXX
+#include <ww8scan.hxx> // WW8Fib
+#endif
+
+#ifndef _WW8GLSY_HXX
+#include <ww8glsy.hxx>
+#endif
+
+#ifndef _MSDFFIMP_HXX
+#include <svx/msdffimp.hxx>
+#endif
+
+#ifndef _MSOCXIMP_HXX
+#include <msocximp.hxx>
+#endif
+
+
+#define WW8_ASCII2STR(s) String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(s))
+
+
+class SvStringsDtor;
+class SwDoc;
+class SwPaM;
+class SfxPoolItem;
+class SwTxtFmtColl;
+class SwPageDesc;
+class SvxBoxItem;
+class SwFmt;
+class SwNodeIndex;
+class SwFlyFrmFmt;
+class SvxTabStopItem;
+class SwAttrSet;
+class SwNumRule;
+class SwFrmFmt;
+
+//class WW8CtrlStack;
+class SwFltControlStack;
+//class WW8EndStack;
+class SwFltEndStack;
+class SwWW8StyInf;
+class WW8Fib;
+class WW8PLCFMan;
+struct WW8PLCFManResult;
+class WW8Fonts;
+class WW8RStyle;
+class WW8PLCF_HdFt;
+class Plcx_Fkp;
+class WW8PLCFx_SEPX;
+class WW8Dop;
+class WW8ScannerBase;
+struct WW8FieldDesc;
+struct WW8FlyPara;
+struct WW8SwFlyPara;
+struct WmfFileHd;
+struct WW8_PIC;
+class WW8TabDesc;
+struct WW8_SHD;
+struct WW8_OLST;
+class SwNumFmt;
+struct WW8_ANLD;
+struct WW8_ANLV;
+struct WW8_DO;
+struct WW8_DPHEAD;
+struct WW8_FSPA;
+class Plc1;
+class SwDrawFrmFmt;
+class SdrModel;
+class SdrPage;
+class SdrObjList;
+class SdrObject;
+class SdrTextObj;
+class Size;
+class EditEngine;
+struct SwPosition;
+class SvShorts;
+class WW8ReaderSave;
+struct WW8PicDesc;
+class Graphic;
+//class String;
+class SwFieldType;
+class SvStorage;
+// alt: class SvStorageRef;
+class SwFlyFrmFmt;
+class SwAttrSet;
+class GDIMetaFile;
+struct ESelection;
+class SfxItemSet;
+struct WW8PLCFxDesc;
+
+struct WW8ULSpaceData;
+class SdrAttrObj;
+struct WW8ULSpaceData;
+
+namespace com{namespace sun {namespace star{
+ namespace beans{ class XPropertySet;}
+ namespace form { class XFormComponent;}
+ namespace drawing{class XShape;}
+ namespace lang{class XMultiServiceFactory;}
+}}}
+
+//#define WW8_CHARBUF_SIZE 1040 // Lese-Puffer fuer nackten Text
+
+// defines nur fuer die WW8-variable der INI-Datei
+
+#define WW8FL_NO_TEXT 1
+#define WW8FL_NO_STYLES 2
+#define WW8FL_NO_ZSTYLES 4 // keine Zeichenstyles importieren
+#define WW8FL_NO_APO 8
+#define WW8FL_NO_HDFT 0x10
+#define WW8FL_NO_FTN 0x20
+#define WW8FL_NO_FLD 0x40 // keine Felder
+#define WW8FL_NO_GRAF 0x80
+#define WW8FL_NO_DEFTABS 0x100 // keine impliziten Tabs
+#define WW8FL_NO_LRUL 0x200
+
+
+#define WW8FL_NO_DEFSTYLES 0x400 // falls gestetzt, werden fuer Writer-Def-Styles
+ // neue Styles mit den WW8-Def-Style-Eigenschaften
+ // erzeugt, statt die Writer-Standards zu ueberschreiben
+
+#define WW8FL_NO_TABLE 0x800
+#define WW8FL_NO_OUTLINE 0x1000
+#define WW8FL_NO_NUMRULE 0x2000
+#define WW8FL_NO_IMPLPASP 0x4000 // no implicit para space
+#define WW8FL_NO_GRAFLAYER 0x8000
+#define WW8FL_NO_COMPLEX 0x10000
+#define WW8FL_NO_OLE 0x20000
+#define WW8FL_OLE_TO_GRAF 0x40000
+#define WW8FL_NO_VCCONTROLS 0x80000
+#define WW8FL_NO_STD_STY_DYA 0x100000
+#define WW8FL_NO_COLS 0x200000
+#define WW8FL_NO_TOX 0x400000
+#define WW8FL_NO_IMPORT 0x20000000
+#define WW8FL_WRITE_TO_FILE 0x40000000
+#define WW8FL_NOWARN_COMPLEX 0x80000000
+
+// Zusatz-Filter-Flags, gueltig ab Winword 8
+#define WW8FL_NO_FLY_FOR_TXBX 1
+#define EQUAL_TAB_BORDERDISTS 2
+
+
+//-----------------------------------------
+// Listen-Manager (ab Ver8)
+//-----------------------------------------
+
+struct WW8LSTInfo;
+struct WW8LFOInfo;
+
+typedef WW8LSTInfo* WW8LSTInfo_Ptr;
+typedef WW8LFOInfo* WW8LFOInfo_Ptr;
+// Zeichenattribute aus GrpprlChpx
+typedef SfxItemSet* WW8aISet[nWW8MaxListLevel ];
+// Zeichen Style Pointer
+typedef SwCharFmt* WW8aCFmt[ nWW8MaxListLevel ];
+// Redlining: match WinWord author ids to StarWriter author ids
+struct WW8AuthorInfo;
+typedef WW8AuthorInfo* WW8AuthorInfo_Ptr;
+
+SV_DECL_PTRARR_SORT_DEL(WW8LSTInfos, WW8LSTInfo_Ptr, 16,16);
+SV_DECL_PTRARR_DEL( WW8LFOInfos, WW8LFOInfo_Ptr, 16,16);
+SV_DECL_PTRARR_SORT_DEL(WW8AuthorInfos, WW8AuthorInfo_Ptr, 16,16);
+
+class SwWW8ImplReader;
+class WW8ListManager
+{
+ SwWW8ImplReader& rReader;
+ SwDoc& rDoc;
+ const WW8Fib& rFib;
+ SvStream& rSt;
+ WW8LSTInfos* pLSTInfos;// Daten aus PLCF LST, sortiert nach LST Id
+ WW8LFOInfos* pLFOInfos;// D. aus PLF LFO, sortiert genau wie im WW8 Stream
+ USHORT nLSTInfos;// geht schneller als Abfrage von pLSTInfos->Count()
+ USHORT nLFOInfos;// dito
+ BYTE* GrpprlHasSprm(USHORT nId, BYTE& rSprms, BYTE nLen);
+ WW8LSTInfo* GetLSTByStreamPos( USHORT nStreamPos ) const;
+ WW8LSTInfo* GetLSTByListId( ULONG nIdLst ) const;
+ BOOL ReadLVL( BYTE nLevel,
+ SwNumFmt& rNumFmt,
+ SfxItemSet*& rpItemSet,
+ USHORT nLevelStyle,
+ BOOL bSetStartNo );
+ void AdjustLVL( BYTE nLevel,
+ SwNumRule& rNumRule,
+ WW8aISet& rListItemSet,
+ WW8aCFmt& aCharFmt,
+ BOOL& bNewCharFmtCreated, // Ausgabe-Parameter
+ String aPrefix = aEmptyStr );
+ BOOL LFOequaltoLST(WW8LFOInfo& rLFOInfo);
+public:
+ WW8ListManager(SvStream& rSt_, SwWW8ImplReader& rReader_);
+ ~WW8ListManager();
+ SwNumRule* GetNumRuleForActivation(USHORT nLFOPosition) const;
+ BOOL IsSimpleList(USHORT nLFOPosition) const;
+};
+
+
+
+//-----------------------------------------
+// Stack
+//-----------------------------------------
+class SwWW8FltControlStack : public SwFltControlStack
+{
+ USHORT nToggleAttrFlags;
+protected:
+ virtual void SetAttrInDoc(const SwPosition& rTmpPos, SwFltStackEntry* pEntry);
+
+public:
+ SwWW8FltControlStack( SwDoc* pDo, ULONG nFieldFl ) :
+ SwFltControlStack( pDo, nFieldFl ), nToggleAttrFlags( 0 )
+ {}
+
+ BOOL IsFtnEdnBkmField(SwFmtFld& rFmtFld, USHORT& nBkmNo);
+ void NewAttr(const SwPosition& rPos, const SfxPoolItem& rAttr);
+ void SetToggleAttr( BYTE nId, BOOL bOn )
+ {
+ if( bOn )
+ nToggleAttrFlags |= (1 << nId);
+ else
+ nToggleAttrFlags &= ~(1 << nId);
+ }
+ USHORT GetToggleAttrFlags() const { return nToggleAttrFlags; }
+};
+
+
+
+//-----------------------------------------
+// Redlining Authors
+//-----------------------------------------
+struct WW8AuthorInfo
+{
+ USHORT nWWAuthorId;
+ USHORT nOurId;
+
+ WW8AuthorInfo(USHORT nWWAuthorId_, USHORT nOurId_ = 0):
+ nWWAuthorId( nWWAuthorId_ ),
+ nOurId( nOurId_ )
+ {}
+ BOOL operator==( const WW8AuthorInfo& rEntry ) const
+ {
+ return (nWWAuthorId == rEntry.nWWAuthorId);
+ }
+ BOOL operator<( const WW8AuthorInfo& rEntry ) const
+ {
+ return (nWWAuthorId < rEntry.nWWAuthorId);
+ }
+};
+
+
+
+//-----------------------------------------
+// Mini-Merker fuer einige Flags
+//-----------------------------------------
+class WW8ReaderSave
+{
+ SwPosition aTmpPos;
+ SwWW8FltControlStack* pOldStck;
+ WW8PLCFxSaveAll aPLCFxSave;
+ WW8PLCFMan* pOldPlcxMan;
+
+ WW8FlyPara* pWFlyPara;
+ WW8SwFlyPara* pSFlyPara;
+ WW8TabDesc* pTableDesc;
+ USHORT nAktColl;
+ sal_Unicode cSymbol;
+ BOOL bIgnoreText : 1;
+ BOOL bDontCreateSep : 1;
+ BOOL bSymbol : 1;
+ BOOL bHdFtFtnEdn : 1;
+ BOOL bApo : 1;
+ BOOL bTxbxFlySection: 1;
+ BOOL bTable : 1;
+ BOOL bTableInApo : 1;
+ BOOL bAnl : 1;
+public:
+ WW8ReaderSave( SwWW8ImplReader* pRdr, WW8_CP nStart=-1 );
+ void Restore( SwWW8ImplReader* pRdr );
+};
+
+
+
+enum eF_ResT{ F_OK, F_TEXT, F_TAGIGN, F_TAGTXT, F_READ_FSPA };
+
+struct SwWW8Shade{
+ Color aColor;
+ BOOL bWhiteText;
+ SwWW8Shade( BOOL bVer67, const WW8_SHD& rSHD );
+};
+
+
+//-----------------------------------------
+// Formulas
+//-----------------------------------------
+enum SwWw8ControlType
+{
+ WW8_CT_EDIT,
+ WW8_CT_CHECKBOX,
+ WW8_CT_COMBOBOX
+};
+
+
+class WW8FormulaControl : public OCX_Control
+{
+public:
+ WW8FormulaControl(const UniString& sN,SwWW8ImplReader &rR)
+ : OCX_Control(sN), rRdr(rR) {}
+ void WW8FormulaControl::SetOthersFromDoc(com::sun::star::uno::Reference <com::sun::star::form::XFormComponent> &rFComp,
+ com::sun::star::awt::Size &rSz,
+ com::sun::star::uno::Reference <com::sun::star::beans::XPropertySet> &rPropSet);
+
+ UINT8 fToolTip:1;
+ UINT8 fNoMark:1;
+ UINT8 fUseSize:1;
+ UINT8 fNumbersOnly:1;
+ UINT8 fDateOnly:1;
+ UINT8 fUnused:3;
+ UINT16 nSize;
+
+ UINT16 hpsCheckBox;
+ UINT16 nChecked;
+
+ UniString sTitle;
+ UniString sDefault;
+ UniString sFormatting;
+ UniString sHelp;
+ UniString sToolTip;
+
+ void Read(SwWw8ControlType nWhich,SvStream *pD);
+private:
+ SwWW8ImplReader &rRdr;
+};
+
+class WW8FormulaCheckBox: public WW8FormulaControl
+{
+public:
+ WW8FormulaCheckBox(SwWW8ImplReader &rR)
+ : WW8FormulaControl( WW8_ASCII2STR( "CheckBox" ), rR)
+ {}
+ BOOL Convert(const com::sun::star::uno::Reference <com::sun::star::lang::XMultiServiceFactory> &rServiceFactory,
+ com::sun::star::uno::Reference <com::sun::star::form::XFormComponent> &rFComp,com::sun::star::awt::Size &rSz);
+
+};
+
+class WW8FormulaEditBox: public WW8FormulaControl
+{
+public:
+ WW8FormulaEditBox(SwWW8ImplReader &rR)
+ : WW8FormulaControl( WW8_ASCII2STR( "TextField" ) ,rR)
+ {}
+ BOOL Convert(const com::sun::star::uno::Reference <com::sun::star::lang::XMultiServiceFactory> &rServiceFactory,
+ com::sun::star::uno::Reference <com::sun::star::form::XFormComponent> &rFComp,com::sun::star::awt::Size &rSz);
+
+};
+
+class SwImportControls : public SwImportOCX
+{
+public:
+ SwImportControls( SfxObjectShell *pDSh,SwPaM *pP ) :
+ SwImportOCX( pDSh,pP ) {}
+ BOOL InsertFormula( WW8FormulaControl &rFormula,
+ com::sun::star::uno::Reference <com::sun::star::drawing::XShape> *pShapeRef=0 );
+};
+
+class SwMSDffManager : public SvxMSDffManager
+{
+ SwWW8ImplReader& rReader;
+ virtual BOOL GetOLEStorageName( long nOLEId, String& rStorageName,
+ SvStorageRef& rSrcStorage,
+ SvStorageRef& rDestStorage ) const;
+ virtual BOOL ShapeHasText( ULONG nShapeId, ULONG nFilePos ) const;
+// virtual void ProcessClientAnchor2( SvStream& rStData, DffRecordHeader& rHd, void* pData, DffObjData& );
+
+public:
+ SwMSDffManager( SwWW8ImplReader& rRdr );
+ static UINT32 GetFilterFlags();
+};
+
+
+//-----------------------------------------
+// Storage-Reader
+//-----------------------------------------
+class SwWW8ImplReader
+{
+friend class WW8RStyle;
+friend class WW8TabDesc;
+friend class WW8ReaderSave;
+friend struct WW8FlyPara;
+friend struct WW8SwFlyPara;
+friend class WW8FlySet;
+friend class SwMSDffManager;
+friend class WW8FormulaControl;
+
+ SvStorage* pStg; // Input-Storage
+ SvStream* pStrm; // Input-(Storage)Stream
+ SvStream* pTableStream; // Input-(Storage)Stream
+ SvStream* pDataStream; // Input-(Storage)Stream
+
+// allgemeines
+ SwDoc& rDoc;
+ SwPaM* pPaM;
+
+ SwWW8FltControlStack* pCtrlStck; // Stack fuer die Attribute
+ SwFltEndStack* pEndStck; // End-Stack fuer die Attribute
+ SwWW8FltControlStack* pRefFldStck; // for Reference Fields
+
+// BYTE* pCharBuf; // Puffer fuer nackten Text
+ SwImportControls *pFormImpl; // Control-Implementierung
+
+ SwFlyFrmFmt* pFlyFmtOfJustInsertedGraphic;
+ WW8Fib* pWwFib;
+ WW8Fonts* pFonts;
+ WW8Dop* pWDop;
+ WW8ListManager* pLstManager;
+ WW8ScannerBase* pSBase;
+ WW8PLCFMan* pPlcxMan;
+
+ WW8RStyle* pStyles; // Pointer auf die Style-Einleseklasse
+ SwFmt* pAktColl; // gerade zu erzeugende Collection
+ // ( ist ausserhalb einer Style-Def immer 0 )
+ SfxItemSet* pAktItemSet; // gerade einzulesende Zeichenattribute
+ // ( ausserhalb des WW8ListManager Ctor's immer 0 )
+ SwWW8StyInf* pCollA; // UEbersetzungs-Array der Styles
+ const SwTxtFmtColl* pDfltTxtFmtColl; // Default
+ SwFmt* pStandardFmtColl; // "Standard"
+
+ SwPageDesc* pPageDesc; // fuer uebernommene KF-Zeilen
+ WW8PLCF_HdFt* pHdFt; // Pointer auf Header / Footer - Scannerklasse
+
+ WW8FlyPara* pWFlyPara; // WW-Parameter
+ WW8SwFlyPara* pSFlyPara; // daraus erzeugte Sw-Parameter
+
+ WW8TabDesc* pTableDesc; // Beschreibung der Tabelleneigenschaften
+
+ SwNumRule* pNumRule; // fuer Nummerierung / Aufzaehlungen im Text
+ WW8_OLST* pNumOlst; // Gliederung im Text
+ SwNodeIndex* pBehindSection;// Node-Index zum Zuruecksetzen des PaM nach einem Bereich
+ SwSection* pNewSection; // last Section that was inserted into the doc
+
+ SwNode* pNode_FLY_AT_CNTNT; // set: WW8SwFlyPara() read: CreateSwTable()
+
+ SwDrawFrmFmt *pDrawFmt; // wie FlyFrmFmt
+ SdrModel* pDrawModel;
+ SdrPage* pDrawPg;
+ SdrObjList* pDrawGroup;
+ SvShorts* pDrawHeight; // Welches Objekt ueberdeckt welches ?
+ EditEngine* pDrawEditEngine;
+
+ SwFieldType* pNumFldType; // fuer Nummernkreis
+
+ SvxMSDffManager* pMSDffManager;
+
+ SvStringsDtor* pAtnNames;
+
+ WW8AuthorInfos* pAuthorInfos;
+
+ SwNodeIndex* pLastPgDeskIdx;// for inserting a section when Ft-/End-Note
+ // with flag 'on end of section' set
+
+ // Ini-Flags:
+ ULONG nIniFlags; // Flags aus der writer.ini
+ ULONG nIniFlags1; // dito ( zusaetzliche Flags )
+// ULONG nIniHdSiz; // dito fuer Header
+ ULONG nIniFtSiz; // dito fuer Default-Size Footer
+ ULONG nFieldFlags; // dito fuer Feldern
+ ULONG nFieldTagAlways[3]; // dito fuers Taggen von Feldern
+ ULONG nFieldTagBad[3]; // dito fuers Taggen von nicht importierbaren F.
+
+ ULONG nLastFlyNode; // Node number of last imported Fly
+
+ ULONG nImportedGraphicsCount; // benoetigt fuer MakeUniqueGraphName()
+
+ ULONG nHdTextHeight; // Hoehe des eingelesenen Headers
+ ULONG nFtTextHeight; // Hoehe des eingelesenen Footers
+
+ ULONG nDrawObjOfs;
+ long nDrawCpO; // Anfang der Txbx-SubDocs
+
+ long nPicLocFc; // Picture Location in File (FC)
+ long nObjLocFc; // Object Location in File (FC)
+
+ INT32 nIniFlyDx; // X-Verschiebung von Flys
+ INT32 nIniFlyDy; // Y-Verschiebung von Flys
+
+ rtl_TextEncoding eTextCharSet; // Default-Charset fuer Text
+ rtl_TextEncoding eStructCharSet; // rtl_TextEncoding fuer interne Strukturen
+ rtl_TextEncoding eFontSrcCharSet; // Source-rtl_TextEncoding fuer aktuellen Font
+ rtl_TextEncoding eFontDstCharSet; // Dest-rtl_TextEncoding fuer aktuellen Font
+ rtl_TextEncoding eHardCharSet; // Hartes rtl_TextEncoding-Attribut
+
+ USHORT nProgress; // %-Angabe fuer Progressbar
+ USHORT nColls; // Groesse des Arrays
+ USHORT nAktColl; // gemaess WW-Zaehlung
+ USHORT nPageDescOffset; // fuer UpdatePageDescs
+ USHORT nDrawTxbx; // Nummer der Textbox ( noetig ?? )
+ USHORT nFldNum; // laufende Nummer dafuer
+ USHORT nLFOPosition;
+
+ short nActSectionNo; // aktuelle Abschnitts-Nummer (in CreateSep() gesetzt)
+ short nCharFmt; // gemaess WW-Zaehlung, <0 fuer keine
+ short nAlign2;
+ short nPgWidth;
+ short nPgTop; // fuer APOs
+ short nPgLeft; // Seitenraender, z.B. fuer APOs, Tabellen
+ short nPgRight; // dito
+
+ short nLeftParaMgn; // Absatz L-Space
+ short nTxtFirstLineOfst; // Absatz 1st line ofset
+
+ short nDrawXOfs, nDrawYOfs;
+ short nDrawXOfs2, nDrawYOfs2;
+
+ sal_Unicode cSymbol; // aktuell einzulesendes Symbolzeichen
+
+
+ BYTE nWantedVersion; // urspruenglich vom Writer
+ // angeforderte WW-Doc-Version
+
+
+ BYTE nSwNumLevel; // LevelNummer fuer Outline / Nummerierung
+ BYTE nWwNumType; // Gliederung / Nummerg / Aufzaehlg
+ BYTE nDrawHeaven, nDrawHell;
+ BYTE nListLevel;
+
+ BYTE nNfcPgn; // Formatting of PageNum
+ BYTE nPgChpDelim; // ChapterDelim from PageNum
+ BYTE nPgChpLevel; // ChapterLevel of Heading from PageNum
+
+ BYTE nCorrIhdt; // used in CreateSep()
+ BOOL bSectionHasATitlePage; // used in CreateSep()
+
+ BOOL bNew; // Neues Dokument ?
+ BOOL bReadNoTbl; // Keine Tabellen
+ BOOL bPgSecBreak; // Page- oder Sectionbreak ist noch einzufuegen
+ BOOL bSpec; // Special-Char im Text folgt
+ BOOL bObj; // Obj im Text
+ BOOL bApo; // FlyFrame, der wegen Winword APO eingefuegt wurde
+ BOOL bTxbxFlySection; // FlyFrame, der als Ersatz fuer Winword Textbox eingefuegt wurde
+ BOOL bHasBorder; // fuer Buendelung der Border
+ BOOL bSymbol; // z.B. Symbol statt Times
+ BOOL bIgnoreText; // z.B. fuer FieldVanish
+ BOOL bDontCreateSep; // e.g. when skipping result of multi-column index-field
+ BOOL bTable; // wird gerade eine Tabelle eingelesen
+ BOOL bTableInApo; // Table is contained in Apo
+ BOOL bWasTabRowEnd; // Tabelle : Row End Mark
+ BOOL bTxtCol; // TextFarbe direkt gesetzt
+ BOOL bShdTxtCol; // Textfarbe indirekt gesetzt ( Hintergrund sw )
+ BOOL bCharShdTxtCol; // Textfarbe indirekt gesetzt ( Zeichenhintergrund sw )
+ BOOL bAnl; // Nummerierung in Bearbeitung
+ // Anl heisst Autonumber level
+
+ BOOL bHdFtFtnEdn; // Spezialtext: Kopf- Fuss- usw.
+ BOOL bFtnEdn; // Fussnote oder Endnote
+ BOOL bIsHeader; // Text aus Header wird gelesen ( Zeilenhoehe )
+ BOOL bIsFooter; // Text aus Footer wird gelesen ( Zeilenhoehe )
+
+ BOOL bIsUnicode; // aktuelles Text-Stueck ist als 2-Bytiger-Unicode kodiert
+ // bitte NICHT als Bitfeld kodieren!
+
+ BOOL bCpxStyle; // Style im Complex Part
+ BOOL bStyNormal; // Style mit Id 0 wird gelesen
+ BOOL bWWBugNormal; // WW-Version nit Bug Dya in Style Normal
+ BOOL bNoAttrImport; // Attribute ignorieren zum Ignorieren v. Styles
+
+ // praktische Hilfsvariablen:
+ BOOL bVer67; // ( (6 == nVersion) || (7 == nVersion) );
+ BOOL bVer6; // (6 == nVersion);
+ BOOL bVer7; // (7 == nVersion);
+ BOOL bVer8; // (8 == nVersion);
+
+ BOOL bPgChpLevel; // ChapterLevel of Heading from PageNum
+ BOOL bEmbeddObj; // EmbeddField gelesen
+ BOOL bFloatingCtrl; // Whether to anchor imported controls as char or para
+
+ BOOL bAktAND_fNumberAcross; // current active Annotated List Deskriptor - ROW flag
+
+ BOOL bNoLnNumYet; // no Line Numbering has been activated yet (we import
+ // the very 1st Line Numbering and ignore the rest)
+ BOOL bRestartLnNumPerSection;
+
+
+
+
+//---------------------------------------------
+
+ void SetLastPgDeskIdx();
+
+ SwPageDesc* CreatePageDesc( SwPageDesc* pFirstPageDesc,
+ SwPaM** ppPaMWanted = 0 );
+ void RemoveCols( SwPageDesc& rPageDesc, SwFmtCol*& rpCol );
+ BOOL SetCols( SwFrmFmt* pFmt, const WW8PLCFx_SEPX* pSep,
+ USHORT nNettoWidth,
+ BOOL bTestOnly = FALSE );
+ void SetPage1( SwPageDesc* pPageDesc, SwFrmFmt &rFmt,
+ const WW8PLCFx_SEPX* pSep, USHORT nLIdx,
+ BOOL bIgnoreCols );
+ void SetHdFt( SwPageDesc* pPageDesc0, SwPageDesc* pPageDesc1,
+ const WW8PLCFx_SEPX* pSep, BYTE nIPara );
+ void GetPageULData( const WW8PLCFx_SEPX* pSep,
+ USHORT nLIdx,
+ BOOL bFirst,
+ WW8ULSpaceData& rData );
+ void SetPageULSpaceItems( SwFrmFmt &rFmt, WW8ULSpaceData& rData );
+
+ void SetPageBorder( SwPageDesc* pPageDesc0, SwPageDesc* pPageDesc1,
+ const WW8PLCFx_SEPX* pSep, USHORT nLIdx );
+ void SetUseOn( SwPageDesc* pPageDesc0, SwPageDesc* pPageDesc1,
+ const WW8PLCFx_SEPX* pSep, BYTE nHdFt );
+ void InsertSectionWithWithoutCols( SwPaM& rMyPaM, const SwFmtCol* pCol );
+ void CreateSep( const long nTxtPos );
+
+ void CopyPageDescHdFt( const SwPageDesc* pOrgPageDesc,
+ SwPageDesc* pNewPageDesc, BYTE nCode );
+
+ void UpdatePageDescs( USHORT nPageDescOffset );
+
+ void DeleteStk(SwFltControlStack* prStck);
+ void DeleteCtrlStk() { DeleteStk( pCtrlStck ); pCtrlStck = 0; }
+ void DeleteEndStk() { DeleteStk( pEndStck ); pEndStck = 0; }
+ void DeleteRefFldStk() { DeleteStk( pRefFldStck); pRefFldStck = 0; }
+
+ BOOL ReadChar( long nPosCp, long nCpOfs );
+ BOOL ReadPlainChars( long& rPos, long nEnd, long nCpOfs );
+ BOOL ReadChars( long& rPos, long nNextAttr, long nTextEnd, long nCpOfs );
+
+
+ void ReadPlainText( long nStartCp, long nTextLen );
+ void ProcessAktCollChange( WW8PLCFManResult& rRes,
+ BOOL* pStartAttr,
+ BOOL bCallProcessSpecial );
+ long ReadTextAttr( long& rTxtPos, BOOL& rbStartLine );
+ void ReadAttrs( long& rNext, long& rTxtPos, BOOL& rbStartLine );
+ void ReadAttrEnds( long& rNext, long& rTxtPos );
+ void ReadText( long nStartCp, long nTextLen, short nType );
+
+ void ReadRevMarkAuthorStrTabl( SvStream& rStrm, INT32 nTblPos, INT32 nTblSiz, SwDoc& rDoc );
+
+ void Read_HdFtFtnText( const SwNodeIndex* pSttIdx, long nStartCp,
+ long nLen, short nType );
+ void Read_HdFt1( BYTE nPara, BYTE nWhichItems, SwPageDesc* pPD );
+ void Read_HdFtText( long nStartCp, long nLen, SwPageDesc* pPD,
+ BOOL bUseLeft, BOOL bFooter );
+
+ BYTE* ReadUntilToken( USHORT& rStrLen, USHORT nMaxLen, BYTE nToken );
+ void ImportTox( int nFldId, String aStr );
+
+ void EndSprm( USHORT nId );
+ void NewAttr( const SfxPoolItem& rAttr );
+
+ BOOL GetFontParams( USHORT, FontFamily&, String&, FontPitch&, rtl_TextEncoding& );
+ BOOL SetNewFontAttr( USHORT nFCode, BOOL bSetEnums=TRUE );
+ void ResetCharSetVars();
+
+ const SfxPoolItem* GetFmtAttr( USHORT nWhich );
+ BYTE HdFtCorrectPara( BYTE nPara );
+ BOOL JoinNode( SwPaM* pPam, BOOL bStealAttr = FALSE );
+
+ BOOL IsBorder( const WW8_BRC* pbrc, BOOL bChkBtwn=FALSE );
+ BOOL SetBorder( SvxBoxItem& pBox, const WW8_BRC* pbrc, BOOL bChkBtwn=FALSE );
+ void GetBorderDistance( WW8_BRC* pbrc, Rectangle& rInnerDist );
+ BOOL SetShadow( SvxShadowItem& rShadow, const SvxBoxItem& rBox, const WW8_BRC pbrc[4] );
+
+ void SetFlyBordersShadow( SfxItemSet& rFlySet,
+ const WW8_BRC pbrc[4], USHORT nInnerMgn );
+
+ BOOL MatchSdrBoxIntoFlyBoxItem( const Color& rLineColor,
+ MSO_LineStyle eLineStyle,
+ USHORT nLineWidth,
+ SvxBoxItem& rBox );
+ void MatchSdrItemsIntoFlySet( SdrObject* pSdrObj,
+ SfxItemSet& aFlySet,
+ MSO_LineStyle eLineStyle,
+ Rectangle& rInnerDist,
+ BOOL bFixSize );
+ void MatchWrapDistancesIntoFlyFmt( SvxMSDffImportRec* pRecord,
+ SwFrmFmt* pFlyFmt );
+
+ void SetCropAtGrfNode( SvxMSDffImportRec* pRecord,
+ SwFrmFmt* pFlyFmt,
+ WW8_FSPA* pF );
+
+ BOOL StartApo( BYTE* pSprm29, BOOL bNowStyleApo );
+ void StopApo();
+ BOOL TestSameApo( BYTE* pSprm29, BOOL bNowStyleApo );
+ BYTE* TestApo( BOOL& rbStartApo, BOOL& rbStopApo, BOOL& rbNowStyleApo,
+ BOOL bInTable, BOOL bTableRowEnd,
+ BOOL bStillInTable );
+ BOOL ProcessSpecial( BOOL bAllEnd, BOOL* pbReSync );
+
+ ULONG ReadWmfHeader( WmfFileHd* pHd, long nPos );
+ BOOL ReadGrafFile( String& rFileName, Graphic*& rpGraphic,
+ const WW8_PIC& rPic, SvStream* pSt, ULONG nFilePos, BOOL* pDelIt );
+
+ SwFrmFmt* MakeGrafByFlyFmt( SdrTextObj* pReplaceTextObj,
+ const SwFrmFmt& rOldFmt,const WW8PicDesc& rPD,
+ const Graphic* pGraph, const String& rFileName,
+ const String& rGrName,const SfxItemSet& rGrfSet,
+ const BOOL bSetToBackground );
+ SwFrmFmt* MakeGrafNotInCntnt(const WW8PicDesc& rPD,
+ const Graphic* pGraph, const String& rFileName,
+ const String& rGrName,const SfxItemSet& rGrfSet );
+ SwFrmFmt* MakeGrafInCntnt(const WW8_PIC& rPic, const WW8PicDesc& rPD,
+ const Graphic* pGraph, const String& rFileName,
+ const String& rGrName,const SfxItemSet& rGrfSet );
+
+ SwFrmFmt* ImportGraf1( WW8_PIC& rPic, SvStream* pSt, ULONG nFilePos );
+ SwFrmFmt* ImportGraf( SdrTextObj* pTextObj = 0,
+ SwFrmFmt* pFlyFmt = 0,
+ BOOL bSetToBackground = FALSE );
+ BOOL ImportURL(String &sURL,String &sMark,WW8_CP nStart);
+
+ SwFrmFmt* ImportOle( const Graphic* = 0, const SfxItemSet* pFlySet = 0 );
+
+ BOOL ImportFormulaControl(WW8FormulaControl &rBox,WW8_CP nStart,
+ SwWw8ControlType nWhich);
+
+ void ImportDop( BOOL bNewDoc );
+ void SetImplicitTab();
+ ULONG LoadDoc1( SwPaM& rPaM ,WW8Glossary *pGloss);
+
+ BOOL StartTable();
+ void TabCellEnd();
+ void StopTable();
+ short GetTableLeft();
+ BOOL IsInvalidOrToBeMergedTabCell() const;
+
+// Brush* Shade1( SwWW8Shade& rRet, WW8_SHD* pS );
+
+ ColorData GetCol( BYTE nIco );
+
+// Nummerierungen / Aufzaehlungen ( Autonumbered List Data Descriptor )
+// Liste: ANLD ( Autonumbered List Data Descriptor )
+// eine Ebene: ANLV ( Autonumber Level Descriptor )
+//
+// Chg7-8:
+// Listen sind in WW8 eigene Strukturen, die ueber folgende drei Tabellen
+// verwaltet werden: rglst, hpllfo und hsttbListNames
+// die Strukturen hierfuer sind: LSTF, LVLF, LFO LFOLVL
+
+ void SetAnlvStrings( SwNumFmt* pNum, WW8_ANLV* pAV, BYTE* pTxt,
+ BOOL bOutline );
+ void SetAnld( SwNumRule* pNumR, WW8_ANLD* pAD, BYTE nSwLevel, BOOL bOutLine );
+ void SetNumOlst( SwNumRule* pNumR, WW8_OLST* pO, BYTE nSwLevel );
+ SwNumRule* GetStyRule();
+
+ void StartAnl( BYTE* pSprm13 );
+ void NextAnlLine( BYTE* pSprm13, BYTE* pS12 = 0 );
+ void StopAnl( BOOL bGoBack = TRUE );
+
+// GrafikLayer
+
+ BOOL MakeUniqueGraphName(String& rName, const String& rFixedPart);
+
+ BOOL ReadGrafStart( void* pData, short nDataSiz, WW8_DPHEAD* pHd,
+ WW8_DO* pDo );
+ void InsertObj( SdrObject* pObj, short nWwHeight );
+ void ReadLine( WW8_DPHEAD* pHd, WW8_DO* pDo );
+ void ReadRect( WW8_DPHEAD* pHd, WW8_DO* pDo );
+ void ReadElipse( WW8_DPHEAD* pHd, WW8_DO* pDo );
+ void ReadArc( WW8_DPHEAD* pHd, WW8_DO* pDo );
+ void ReadPolyLine( WW8_DPHEAD* pHd, WW8_DO* pDo );
+ ESelection GetESelection( long nCpStart, long nCpEnd );
+ /*
+ void GetTxbxCharAttrs( SfxItemSet& rS, const WW8PLCFxDesc& rD, BOOL bONLYnPicLocFc );
+ void GetTxbxParaAttrs( SfxItemSet& rS, const WW8PLCFxDesc& rD );
+ */
+ void GetTxbxPapAndCharAttrs( SfxItemSet& rS, const WW8PLCFManResult& rRes );
+ //void InsertTxbxCharAttrs( long nStartCp, long nEndCp, BOOL bONLYnPicLocFc );
+ void InsertTxbxStyAttrs( SfxItemSet& rS, USHORT nColl );
+ //void InsertTxbxParaAttrs( long nStartCp, long nEndCp );
+ void InsertTxbxAttrs( long nStartCp, long nEndCp, BOOL bONLYnPicLocFc );
+
+ BOOL GetTxbxTextSttEndCp( long& rStartCp, long& rEndCp,
+ USHORT nTxBxS, USHORT nSequence );
+ BOOL GetTxbxText( String& rString, long StartCp, long nEndCp );
+ SwFrmFmt* InsertTxbxText(SdrTextObj* pTextObj,
+ Size* pObjSiz,
+ USHORT nTxBxS,
+ USHORT nSequence,
+ long nPosCp,
+ SwFrmFmt* pFlyFmt,
+ BOOL bMakeSdrGrafObj,
+ BOOL& rbEraseTextObj,
+ BOOL* pbTestTxbxContainsText = 0,
+ long* pnStartCp = 0,
+ long* pnEndCp = 0,
+ SvxMSDffImportRec* pRecord = 0);
+ BOOL TxbxChainContainsRealText( USHORT nTxBxS,
+ long& rStartCp,
+ long& rEndCp );
+ void ReadTxtBox( WW8_DPHEAD* pHd, WW8_DO* pDo );
+ void ReadCaptionBox( WW8_DPHEAD* pHd, WW8_DO* pDo );
+ void ReadGroup( WW8_DPHEAD* pHd, WW8_DO* pDo );
+ void ReadGrafPrimitive( short& rLeft, WW8_DO* pDo );
+ void ReadGrafLayer1( WW8PLCFspecial* pPF, long nGrafAnchorCp );
+ SdrObject* CreateContactObject( SwFlyFrmFmt* pFlyFmt );
+ SwFrmFmt* Read_GrafLayer( long nGrafAnchorCp );
+ void GrafikCtor();
+ void GrafikDtor();
+
+// anderes
+ String GetFieldResult( WW8FieldDesc* pF );
+ void QuoteChar( String& rStr, const sal_Unicode _c, BOOL bAllowCr );
+ void QuoteString( String& rStr, const String& rOrg );
+ void MakeTagString( String& rStr, const String& rOrg );
+ void Read_FieldIniFlags();
+ void UpdateFields();
+// void ConvertFName( String& rName );
+ void ConvertFFileName( String& rName, const String& rRaw );
+ long Read_F_Tag( WW8FieldDesc* pF );
+ void InsertTagField( const USHORT nId, const String& rTagText );
+ long ImportExtSprm( WW8PLCFManResult* pRes, BOOL bStart );
+ void ReadDocInfo();
+
+// Ver8-Listen
+
+ void RegisterNumFmtOnTxtNode( USHORT nActLFO,
+ BYTE nActLevel,
+ BOOL bSetAttr = TRUE );
+ void RegisterNumFmtOnStyle( SwWW8StyInf& rStyleInfo,
+ USHORT nActLFO = USHRT_MAX,
+ BYTE nActLevel = nWW8MaxListLevel );
+ void RegisterNumFmt(USHORT nActLFO, BYTE nActLevel);
+
+// Pictures mit Kode 100, die ueber MsoftbSpContainer abgespeichert sind.
+ BOOL WW8QuickHackForMSDFF_DirectBLIPImport( SvStream& rSt,
+ WW8_PIC& rPic,
+ Graphic& rData,
+ String& rGraphName);
+// spaeter zu ersetzen durch Aufruf in entsprechend erweiterten SvxMSDffManager
+
+
+ const String* GetAnnotationAuthor( short nId );
+
+ // Schnittstellen fuer die Toggle-Attribute
+ void SetToggleAttr( BYTE nAttrId, BOOL bOn );
+ void _ChkToggleAttr( USHORT nOldStyle81Mask, USHORT nNewStyle81Mask );
+
+ void ChkToggleAttr( USHORT nOldStyle81Mask, USHORT nNewStyle81Mask )
+ {
+ if( nOldStyle81Mask != nNewStyle81Mask &&
+ pCtrlStck->GetToggleAttrFlags() )
+ _ChkToggleAttr( nOldStyle81Mask, nNewStyle81Mask );
+ }
+
+public: // eigentlich private, geht aber leider nur public
+ void ConvertUFName( String& rName );
+
+ long Read_Ftn( WW8PLCFManResult* pRes, BOOL );
+ long Read_Field( WW8PLCFManResult* pRes, BOOL );
+ long Read_Book( WW8PLCFManResult* pRes, BOOL bStartAttr );
+ long Read_Piece( WW8PLCFManResult* pRes, BOOL bStartAttr );
+ long Read_And( WW8PLCFManResult* pRes, BOOL bStartAttr );
+
+ // Attribute
+
+ void Read_Special( USHORT, BYTE*, short nLen );
+ void Read_Obj( USHORT, BYTE*, short nLen );
+ void Read_PicLoc( USHORT nId, BYTE* pData, short nLen );
+ void Read_BoldUsw( USHORT nId, BYTE*, short nLen );
+ void Read_SubSuper( USHORT, BYTE*, short nLen );
+ void Read_SubSuperProp( USHORT, BYTE*, short nLen );
+ void Read_Underline( USHORT, BYTE*, short nLen );
+ void Read_TxtColor( USHORT, BYTE*, short nLen );
+ void Read_FontCode( USHORT, BYTE*, short nLen );
+ void Read_FontSize( USHORT, BYTE*, short nLen );
+ void Read_CharSet( USHORT nId, BYTE* pData, short nLen );
+ void Read_Language( USHORT, BYTE*, short nLen );
+ void Read_CColl( USHORT, BYTE*, short nLen );
+ void Read_Kern( USHORT, BYTE* pData, short nLen );
+ void Read_FontKern( USHORT, BYTE* pData, short nLen );
+ void Read_Invisible( USHORT, BYTE* pData, short nLen );
+
+ void Read_NoLineNumb( USHORT nId, BYTE* pData, short nLen );
+
+ void Read_LR( USHORT nId, BYTE*, short nLen );
+ void Read_UL( USHORT nId, BYTE*, short nLen );
+ void Read_LineSpace( USHORT, BYTE*, short nLen );
+ void Read_Justify( USHORT, BYTE*, short nLen );
+ void Read_Hyphenation( USHORT, BYTE* pData, short nLen );
+ void Read_WidowControl( USHORT, BYTE* pData, short nLen );
+ void Read_KeepLines( USHORT, BYTE* pData, short nLen );
+ void Read_KeepParas( USHORT, BYTE* pData, short nLen );
+ void Read_BreakBefore( USHORT, BYTE* pData, short nLen );
+ void Read_ApoPPC( USHORT, BYTE* pData, short nLen );
+
+ void Read_Border( USHORT nId, BYTE* pData, short nLen );
+ void Read_Tab( USHORT nId, BYTE* pData, short nLen );
+ void Read_TabCellDelete( USHORT nId, BYTE* pData, short nLen );
+ void Read_TabCellInsert( USHORT nId, BYTE* pData, short nLen );
+ void Read_Symbol( USHORT nId, BYTE* pData, short nLen );
+ void Read_FldVanish( USHORT nId, BYTE* pData, short nLen );
+
+ // Revision Marks ( == Redlining )
+
+ // insert or delete content (change char attributes resp.)
+ void Read_CRevisionMark(SwRedlineType eType,
+ USHORT nId,
+ BYTE* pData,
+ short nLen );
+ // insert new content
+ void Read_CFRMark( USHORT nId, BYTE* pData, short nLen );
+ // delete old content
+ void Read_CFRMarkDel( USHORT nId, BYTE* pData, short nLen );
+ // change properties of content (e.g. char formating)
+ void Read_CPropRMark( USHORT nId, BYTE* pData, short nLen ); // complex!
+
+
+ void Read_TabRowEnd( USHORT, BYTE* pData, short nLen );
+ void Read_Shade( USHORT, BYTE* pData, short nLen );
+ void Read_ANLevelNo( USHORT, BYTE* pData, short nLen );
+ void Read_ANLevelDesc( USHORT, BYTE* pData, short nLen );
+
+ void Read_POutLvl( USHORT nId, BYTE* pData, short nLen ); // Gliederungsebene Ver8
+
+ void Read_OLST( USHORT, BYTE* pData, short nLen );
+
+ void Read_CharShadow( USHORT, BYTE* pData, short nLen );
+ void Read_CharHighlight( USHORT, BYTE* pData, short nLen );
+ // Ver8-Listen
+
+ void Read_ListLevel( USHORT nId, BYTE* pData, short nLen);
+ void Read_LFOPosition( USHORT nId, BYTE* pData, short nLen);
+ BOOL SetTxtFmtCollAndListLevel( const SwPaM& rRg,
+ SwWW8StyInf& rStyleInfo,
+ BOOL bReset = TRUE );
+
+ // FastSave-Attribute
+
+ void Read_StyleCode( USHORT, BYTE* pData, short nLen );
+ void Read_Majority( USHORT, BYTE* pData, short nLen );
+
+ // Felder
+
+ eF_ResT Read_F_Nul( WW8FieldDesc*, String& rStr );
+ eF_ResT Read_F_Input( WW8FieldDesc*, String& rStr );
+ eF_ResT Read_F_InputVar( WW8FieldDesc*, String& rStr );
+ eF_ResT Read_F_ANumber( WW8FieldDesc*, String& );
+ eF_ResT Read_F_DocInfo( WW8FieldDesc* pF, String& rStr );
+ eF_ResT Read_F_Author( WW8FieldDesc*, String& );
+ eF_ResT Read_F_TemplName( WW8FieldDesc*, String& );
+ eF_ResT Read_F_DateTime( WW8FieldDesc*, String& rStr );
+ eF_ResT Read_F_FileName( WW8FieldDesc*, String& );
+ eF_ResT Read_F_Anz( WW8FieldDesc* pF, String& );
+ eF_ResT Read_F_CurPage( WW8FieldDesc*, String& );
+ eF_ResT Read_F_Ref( WW8FieldDesc* pF, String& );
+
+ eF_ResT Read_F_Set( WW8FieldDesc*, String& rStr );
+ eF_ResT Read_F_PgRef( WW8FieldDesc*, String& rStr );
+ eF_ResT Read_F_NoteReference( WW8FieldDesc* pF, String& rStr );
+
+ eF_ResT Read_F_Tox( WW8FieldDesc* pF, String& rStr );
+ eF_ResT Read_F_Symbol( WW8FieldDesc*, String& rStr );
+ eF_ResT Read_F_Embedd( WW8FieldDesc*, String& rStr );
+ eF_ResT Read_F_FormTextBox( WW8FieldDesc* pF, String& rStr );
+ eF_ResT Read_F_FormCheckBox( WW8FieldDesc* pF, String& rStr );
+ eF_ResT Read_F_FormListBox( WW8FieldDesc* pF, String& rStr );
+ eF_ResT Read_F_Macro( WW8FieldDesc*, String& rStr );
+ eF_ResT Read_F_DBField( WW8FieldDesc*, String& rStr );
+ eF_ResT Read_F_DBNext( WW8FieldDesc*, String& );
+ eF_ResT Read_F_DBNum( WW8FieldDesc*, String& );
+ eF_ResT Read_F_IncludePicture( WW8FieldDesc*, String& rStr );
+ eF_ResT Read_F_IncludeText( WW8FieldDesc*, String& rStr );
+ eF_ResT Read_F_Seq( WW8FieldDesc*, String& rStr );
+
+ eF_ResT Read_F_OCX( WW8FieldDesc*, String& rStr );
+ eF_ResT Read_F_Hyperlink( WW8FieldDesc*, String& rStr );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape> InsertControl(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent>& rFComp,
+ const ::com::sun::star::awt::Size& rSize,
+ //const ::com::sun::star::uno::Reference< ::com::sun::star::size::XSize>& rSize,
+ BOOL bFloatingCtrl = FALSE );
+
+ void BuildInputField( USHORT eType, const String& rParam );
+ void DeleteFormImpl();
+
+ // Ver8: Listen Manager
+ short ImportSprm( BYTE* pPos, short nSprmsLen, USHORT nId = 0 );
+
+ const WW8Fib& GetFib() const { return *pWwFib; }
+ SwDoc& GetDoc() const { return rDoc; }
+ USHORT GetNAktColl() const { return nAktColl; }
+ void SetNAktColl( USHORT nColl ) { nAktColl = nColl; }
+ //SfxItemSet* GetAktItemSet() { return pAktItemSet; }
+ void SetAktItemSet( SfxItemSet* pItemSet ) { pAktItemSet = pItemSet; }
+ const USHORT StyleUsingLFO( USHORT nLFOIndex ) const ;
+ const SwFmt* GetStyleWithOrgWWName( String& rName ) const ;
+
+
+
+ SwWW8ImplReader( BYTE nVersionPara, SvStorage* pStorage,
+ SvStream* pSt, SwDoc& rD, BOOL bNewDoc );
+
+ const ULONG GetFieldFlags() const{ return nFieldFlags; }
+ const ULONG GetIniFlags() const{ return nIniFlags; }
+ const ULONG GetIniFlags1() const{ return nIniFlags1; }
+
+ // Laden eines kompletten DocFiles
+ ULONG LoadDoc( SwPaM&,WW8Glossary *pGloss=0);
+};
+
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8par.hxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.95 2000/09/18 16:05:00 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.94 2000/08/22 17:40:57 cmc
+ #77315# 95 Formulas, bad string read
+
+ Revision 1.93 2000/08/22 17:08:58 cmc
+ #77743# OLE Import, bad seek & bad FilterOptions
+
+ Revision 1.92 2000/08/18 09:48:28 khz
+ Import Line Numbering (restart on new section)
+
+ Revision 1.91 2000/08/18 06:47:26 khz
+ Import Line Numbering
+
+ Revision 1.90 2000/07/28 15:37:19 khz
+ #73796# don't delete NumRule from Attr but set it into pDoc
+
+ Revision 1.89 2000/07/27 10:21:26 khz
+ #73796# stop ANList when opening next cell in a row and !pAktANLD->fNumberAcross
+
+ Revision 1.88 2000/07/25 15:16:25 khz
+ #76811# read/write AutoHyphenation flag from/into Document Properties
+
+ Revision 1.87 2000/07/17 13:46:56 khz
+ #73987# check if sprmSNfcPgn should cause section change or not
+
+ Revision 1.86 2000/07/11 11:39:10 khz
+ #76673# prepare implementation of sprmTDelete and sprmTInsert
+
+ Revision 1.85 2000/07/07 12:48:54 jp
+ must changes VCL
+
+ Revision 1.84 2000/06/28 08:07:39 khz
+ #70915# Insert Section if end-note with flag 'on end of section' found
+
+ Revision 1.83 2000/06/15 15:23:39 cmc
+ #75669# 97Controls Import fixes
+
+ Revision 1.82 2000/05/31 12:22:57 khz
+ Changes for Unicode
+
+ Revision 1.81 2000/05/25 08:06:45 khz
+ Piece Table optimization, Unicode changes, Bugfixes
+
+ Revision 1.80 2000/05/24 08:56:06 jp
+ Bugfixes for Unicode
+
+ Revision 1.79 2000/05/17 16:41:43 khz
+ Changes for unicode (2)
+
+ Revision 1.78 2000/05/16 11:06:17 khz
+ Unicode code-conversion
+
+ Revision 1.77 2000/03/27 15:55:24 cmc
+ #74329# Ported WW97 Controls to uno codebase
+
+ Revision 1.76 2000/03/24 10:50:36 khz
+ Task #74368# IsInvalidOrToBeMergedTabCell() stops duplicate reset of NumRule
+
+ Revision 1.75 2000/03/21 15:04:57 os
+ UNOIII
+
+ Revision 1.74 2000/03/10 14:29:32 khz
+ Task #65529# improve detection if Section is identical with previous
+
+ Revision 1.73 2000/03/03 15:20:02 os
+ StarView remainders removed
+
+ Revision 1.72 2000/02/18 09:36:56 cmc
+ #69372# Improved Hyperlink Importing for WW97
+
+ Revision 1.71 2000/02/14 14:39:02 jp
+ #70473# changes for unicode
+
+ Revision 1.70 2000/02/14 09:10:28 cmc
+ #72579# working glossary implementation
+
+ Revision 1.68 2000/02/09 08:57:23 khz
+ Task #72647# Read SPRMs that are stored in piece table grpprls (2)
+
+ Revision 1.67 2000/02/02 18:07:39 khz
+ Task #69885# Read SPRMs that are stored in piece table grpprls
+
+ Revision 1.66 2000/01/06 15:23:45 khz
+ Task #71411# Let last Section be unbalanced
+
+ Revision 1.65 1999/12/23 14:03:10 khz
+ Task #68143# avoid attributes atached solely to Cell-End marks
+
+ Revision 1.64 1999/12/22 18:03:16 khz
+ Task #70919# look if ParaStyle is different behind filed than it was before
+
+ Revision 1.63 1999/12/14 14:22:38 khz
+ Task #70815# Avoid typecast when calling MatchSdrItemsIntoFlySet()
+
+ Revision 1.62 1999/12/09 19:12:20 khz
+ Task #65551# nSkipPos had erroneously been a member instead of local variable
+
+ Revision 1.61 1999/12/09 16:46:29 khz
+ Task #69180# allow Tabs if right of 1st-line-start OR right of paragraph margin
+
+ Revision 1.60 1999/12/01 14:35:45 khz
+ Task #68488# Graphics in Sections with more than one Column
+
+ Revision 1.59 1999/11/29 11:09:36 khz
+ Task #70177# SetDerivedFrom( RES_POOL_COL_STANDARD )
+
+ Revision 1.58 1999/11/19 14:57:07 khz
+ Task #68651# Store state of bSymbol and nSymbol in WW8ReaderSave class
+
+ Revision 1.57 1999/11/12 13:04:59 jp
+ new: read sprmCHighlight
+
+ Revision 1.56 1999/11/05 17:05:28 khz
+ prevent from erroneous Table-Restart when sprm24 missing
+
+ Revision 1.55 1999/11/02 15:59:34 khz
+ import new TOX_CONTENT and TOX_INDEX features (2)
+
+ Revision 1.54 1999/10/29 12:07:35 khz
+ import new TOX_CONTENT and TOX_INDEX features
+
+ Revision 1.53 1999/10/08 09:25:39 khz
+ Import Redlining
+
+ Revision 1.52 1999/08/30 19:52:58 JP
+ Bug #68219#: no static members - be reentrant
+
+
+ Rev 1.51 30 Aug 1999 21:52:58 JP
+ Bug #68219#: no static members - be reentrant
+
+ Rev 1.50 12 Aug 1999 13:57:52 KHZ
+ Task #67668# TestApo() modified
+
+ Rev 1.49 09 Aug 1999 14:16:08 JP
+ read W95 format from stream
+
+ Rev 1.48 12 Jul 1999 16:58:20 KHZ
+ Task #66194# 1. Sections with cols, 2. App.Node before PgBreak if Fly in node
+
+ Rev 1.47 05 Jul 1999 19:30:52 KHZ
+ Task #66194# Sections with columns
+
+ Rev 1.46 21 Jun 1999 10:24:40 KHZ
+ Reference field (page, bookmark, footnote) part#2
+
+ Rev 1.45 18 Jun 1999 15:53:50 KHZ
+ Reference field (page, bookmark, footnote) part#1
+
+ Rev 1.44 10 Jun 1999 17:58:52 KHZ
+ use FOUR different inner distances with SvxBoxItem
+
+ Rev 1.43 09 Jun 1999 18:25:00 KHZ
+ use FOUR different inner distances with SvxBoxItem
+
+ Rev 1.42 26 Apr 1999 17:40:20 KHZ
+ Task #61381# Attribute von Textboxen in denen NUR EINE Grafik steht
+
+ Rev 1.41 09 Apr 1999 18:01:38 KHZ
+ Task #64348# Bei Listen-Overrides nur bei Ungleichheit neue Liste anlegen!
+
+ Rev 1.40 18 Mar 1999 09:56:52 JP
+ Task #63049#: Numerierung mit rel. Einzuegen
+
+ Rev 1.39 10 Mar 1999 15:11:10 KHZ
+ Task #62521# Einlesen von Sonderzeichen
+
+ Rev 1.38 08 Mar 1999 11:51:30 KHZ
+ Task #57749# Writer kann jetzt spaltige Bereiche
+
+ Rev 1.37 26 Feb 1999 14:43:38 KHZ
+ Task #59715# Behandlung von Section breaks
+
+ Rev 1.36 17 Feb 1999 15:23:42 KHZ
+ Task #61382# jetzt auch Textbox-Grafiken im Hintergrund ( SvxOpaqItem(FALSE) )
+
+*************************************************************************/
+
+#endif
+
diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx
new file mode 100644
index 000000000000..3a42cb81be0b
--- /dev/null
+++ b/sw/source/filter/ww8/ww8par2.cxx
@@ -0,0 +1,3084 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8par2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#include <tools/solar.h>
+#include "pam.hxx" // fuer SwPam
+#include "doc.hxx"
+
+#ifndef _DOCARY_HXX
+#include "docary.hxx"
+#endif
+
+#include "ndtxt.hxx" // class SwTxtNode
+#include "hintids.hxx"
+#include "paratr.hxx" // SwNumRuleItem
+
+// Folgende sollten demnaechst ins Precompiled-Header-File
+#include "poolfmt.hxx" // RES_POOLCOLL_STANDARD
+#include "swtable.hxx" // class SwTableLines, ...
+#include "tblsel.hxx" // class _SwSelBox
+#include "mdiexp.hxx" // Progress
+
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SFXDOCINF_HXX //autogen
+#include <sfx2/docinf.hxx>
+#endif
+#ifndef _SVX_ORPHITEM_HXX //autogen
+#include <svx/orphitem.hxx>
+#endif
+#ifndef _SVX_WIDWITEM_HXX //autogen
+#include <svx/widwitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_HYZNITEM_HXX //autogen
+#include <svx/hyznitem.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+#ifndef _CHARFMT_HXX //autogen
+#include <charfmt.hxx>
+#endif
+#ifdef DEBUG
+#ifndef _SV_SOUND_HXX //autogen
+ #include <vcl/sound.hxx>
+#endif
+#endif
+
+// Folgende bleiben hier
+#include "fltshell.hxx" // fuer den Attribut Stack
+#include "ww8struc.hxx" // struct TC
+#include "ww8par.hxx"
+#include "ww8par2.hxx"
+
+#ifndef _SV_FONTTYPE_HXX //autogen
+#include <vcl/fonttype.hxx>
+#endif
+#ifndef _SV_FONT_HXX //autogen
+#include <vcl/font.hxx>
+#endif
+
+
+#define DELETEAZ( p ) { delete[]( p ); p = 0; };
+
+
+
+
+//-----------------------------------------
+// Tabellen
+//-----------------------------------------
+
+
+#define MAX_COL 64 // WW6-Beschreibung: 32, WW6-UI: 31
+ // WW8-UI: 63!
+
+struct WW8SelBoxInfo: public SwSelBoxes_SAR
+{
+ short nGroupXStart;
+ short nGroupWidth;
+
+ WW8SelBoxInfo( short nXCenter, short nWidth ): nGroupXStart( nXCenter ), nGroupWidth( nWidth ){}
+};
+
+typedef WW8SelBoxInfo* WW8SelBoxInfoPtr;
+
+SV_DECL_PTRARR_DEL(WW8MergeGroups, WW8SelBoxInfoPtr, 16,16);
+SV_IMPL_PTRARR( WW8MergeGroups, WW8SelBoxInfoPtr );
+
+struct WW8TabBandDesc{
+ WW8TabBandDesc* pNextBand;
+ short nGapHalf;
+ short nLineHeight;
+ short nRows;
+ short nCenter[MAX_COL + 1]; // X-Rand aller Zellen dieses Bandes
+ short nWidth[MAX_COL + 1]; // Laenge aller Zellen dieses Bandes
+ short nWwCols; // BYTE wuerde reichen, alignment -> short
+ short nSwCols; // SW: so viele Spalten fuer den Writer
+ BOOL bLEmptyCol; // SW: Links eine leere Zusatz-Spalte
+ BOOL bREmptyCol; // SW: dito rechts
+ WW8_TCell* pTCs;
+ WW8_SHD* pSHDs;
+
+
+ // nur fuer WW6-7: diese Zelle hat WW-Flag bMerged (horizontal) gesetzt
+ //BOOL bWWMergedVer6[MAX_COL];
+
+
+ BOOL bExist[MAX_COL]; // Existiert diese Zelle ?
+ UINT8 nTransCell[MAX_COL + 2]; // UEbersetzung WW-Index -> SW-Index
+
+ WW8TabBandDesc() { memset( this, 0, sizeof( *this ) ); };
+ WW8TabBandDesc( WW8TabBandDesc& rBand ); // tief kopieren
+ ~WW8TabBandDesc() { delete[]( pTCs ); pTCs = 0; delete[]( pSHDs ); };
+ void ReadDef( BOOL bVer67, BYTE* pS );
+ void ProcessSprmTSetBRC( BOOL bVer67, BYTE* pParamsTSetBRC );
+ void ProcessSprmTDxaCol( BOOL bVer67, BYTE* pParamsTDxaCol );
+ void ProcessSprmTDelete( BOOL bVer67, BYTE* pParamsTDelete );
+ void ReadShd( SVBT16* pS );
+};
+
+class WW8TabDesc
+{
+ WW8_BRC aDefBrcs[6];
+
+ SvStringsDtor aNumRuleNames;
+
+ SwWW8ImplReader* pIo;
+
+ WW8TabBandDesc* pFirstBand;
+ WW8TabBandDesc* pActBand;
+
+ SwPosition* pTmpPos;
+
+ const SwTable* pTable; // Tabelle
+ SwTableNode* pTblNd; // Tabellen-Node
+ const SwTableLines* pTabLines; // Zeilen-Array davon
+ SwTableLine* pTabLine; // akt. Zeile
+ SwTableBoxes* pTabBoxes; // Boxen-Array in akt. Zeile
+ SwTableBox* pTabBox; // akt. Zelle
+
+ WW8MergeGroups* pMergeGroups; // Listen aller zu verknuepfenden Zellen
+
+ WW8_TCell* pAktWWCell;
+
+ short nRows;
+ short nDefaultSwCols;
+ short nBands;
+ short nMinLeft;
+ short nMaxRight;
+ short nSwWidth;
+
+ BOOL bOk;
+ BOOL bHeader;
+ BOOL bBorderDefaults;
+ BOOL bClaimLineFmt;
+ SwHoriOrient eOri;
+ // 2. allgemeine Verwaltungsinfo
+ short nAktRow;
+ short nAktBandRow; // SW: in dieser Zeile des akt. Bandes bin ich
+ // 3. Verwaltungsinfo fuer Writer
+ short nAktCol;
+
+
+ // 4. Methoden
+
+ USHORT GetLogicalWWCol() const;
+ void SetTabBorders( SwTableBox* pBox, short nIdx );
+ void SetTabShades( SwTableBox* pBox, short nWwIdx );
+ void CalcDefaults();
+ BOOL SetPamInCell( short nWwCol, BOOL bPam, BOOL bCheckForMerge );
+ void DeleteCells( short nDelete );
+ void InsertCells( short nIns );
+ void AdjustNewBand( SwWW8ImplReader* pReader );
+
+ // durchsucht pMergeGroups, meldet Index der ersten, passenden Gruppe bzw. -1
+ // Details siehe bei der Implementierung
+ BOOL FindMergeGroup( short nX1, short nWidth, BOOL bExact, short& nMGrIdx );
+
+ // einzelne Box ggfs. in eine Merge-Gruppe aufnehmen
+ // (die Merge-Gruppen werden dann spaeter auf einen Schlag abgearbeitet)
+ SwTableBox* UpdateTableMergeGroup( WW8_TCell& rCell,
+ WW8SelBoxInfo* pActGroup,
+ SwTableBox* pActBox,
+ USHORT nCol );
+public:
+ BOOL IsValidCell( short nCol ) const;
+
+ WW8TabDesc( SwWW8ImplReader* pIoClass );
+ BOOL Ok() const { return bOk; }
+ void CreateSwTable();
+ void TableCellEnd();
+ void FinishSwTable();
+ short GetMinLeft() const { return nMinLeft; }
+ ~WW8TabDesc();
+
+ const WW8_TCell* GetAktWWCell() const { return pAktWWCell; }
+ const short GetAktCol() const { return nAktCol; }
+ const String& GetNumRuleName() const; // find name of numrule valid for current WW-COL
+ void SetNumRuleName( const String& rName );
+};
+
+
+
+
+
+
+//---------------------------------------------------------------------
+// Hilfroutinen fuer Kapitelnummerierung und Aufzaehlung / Gliederung
+//---------------------------------------------------------------------
+
+static void SetBaseAnlv( SwNumFmt* pNum, WW8_ANLV* pAV )
+{
+ static SvxExtNumType eNumA[8] = { SVX_NUM_ARABIC, SVX_NUM_ROMAN_UPPER, SVX_NUM_ROMAN_LOWER,
+ SVX_NUM_CHARS_UPPER_LETTER_N, SVX_NUM_CHARS_LOWER_LETTER_N, SVX_NUM_ARABIC,
+ SVX_NUM_ARABIC, SVX_NUM_ARABIC };
+
+ static SvxAdjust eAdjA[4] = { SVX_ADJUST_LEFT,
+ SVX_ADJUST_RIGHT, SVX_ADJUST_LEFT, SVX_ADJUST_LEFT };
+// eigentlich folgende 2, aber Writer-UI bietet es nicht an
+// SVX_ADJUST_CENTER, SVX_ADJUST_BLOCKLINE };
+
+ pNum->eType = ( SVBT8ToByte( pAV->nfc ) < 8 ) ?
+ eNumA[SVBT8ToByte( pAV->nfc ) ] : SVX_NUM_NUMBER_NONE;
+// pNum->bInclUpperLevel = pAV->fPrev;
+ pNum->SetInclUpperLevel( ( SVBT8ToByte( pAV->aBits1 ) & 0x4 ) >> 2 );
+ pNum->SetStartValue( (USHORT)SVBT16ToShort( pAV->iStartAt ) );
+// pNum->eNumAdjust = eAdjA[pAV->jc];
+ pNum->SetAdjust( eAdjA[SVBT8ToByte( pAV->aBits1 ) & 0x3] );
+
+ pNum->SetCharTextOffset( (USHORT)SVBT16ToShort( pAV->dxaSpace ) );
+ INT16 nIndent = Abs((INT16)SVBT16ToShort( pAV->dxaIndent ));
+ if( SVBT8ToByte( pAV->aBits1 ) & 0x08 ){ // fHang
+ pNum->SetFirstLineOffset( -nIndent );
+ pNum->SetLSpace( nIndent );
+ pNum->SetAbsLSpace( nIndent );
+ }else{
+ pNum->SetCharTextOffset( nIndent ); // Breite der Nummer fehlt
+ }
+ if( SVBT8ToByte( pAV->nfc ) == 5 || SVBT8ToByte( pAV->nfc ) == 7 )
+ {
+ String sP( pNum->GetPostfix() );
+ sP.Insert( '.', 0 );
+ pNum->SetPostfix( sP ); // Ordinalzahlen
+ }
+}
+
+void SwWW8ImplReader::SetAnlvStrings( SwNumFmt* pNum, WW8_ANLV* pAV, BYTE* pTxt,
+ BOOL bOutline )
+{
+ BOOL bInsert = FALSE; // Default
+ CharSet eCharSet = eStructCharSet;
+
+ const WW8_FFN* pF = pFonts->GetFont( SVBT16ToShort( pAV->ftc ) ); // FontInfo
+ BOOL bSymbol = pF && ( pF->chs == 2 ); // Symbol/WingDings/...
+
+ String sTxt( (sal_Char*)pTxt, SVBT8ToByte( pAV->cbTextBefore )
+ + SVBT8ToByte( pAV->cbTextAfter ), eCharSet );
+
+ if( bOutline )
+ { // Gliederung
+ if( !pNum->IsInclUpperLevel() // es sind <= 1 Nummern anzuzeigen
+ || pNum->eType == SVX_NUM_NUMBER_NONE ){ // oder dieser Level hat keine
+ // eigenen Ziffern
+ bInsert = TRUE; // -> dann uebernehme Zeichen
+
+ // replace by simple Bullet ?
+ if( bSymbol )
+ //JP 14.08.96: cBulletChar benutzen, damit auf dem MAC
+ // richtig gemappt wird
+ sTxt.Fill( SVBT8ToByte( pAV->cbTextBefore )
+ + SVBT8ToByte( pAV->cbTextAfter ), cBulletChar );
+ }
+ }
+ else
+ { // Nummerierung / Aufzaehlung
+ bInsert = TRUE;
+// if( SVBT16ToShort( pAV->ftc ) == 1
+// || SVBT16ToShort( pAV->ftc ) == 3 ){ // Symbol / WingDings
+ if( bSymbol )
+ {
+ FontFamily eFamily;
+ String aName;
+ FontPitch ePitch;
+
+ if( GetFontParams( SVBT16ToShort( pAV->ftc ), eFamily, aName,
+ ePitch, eCharSet ) ){
+// USHORT nSiz = ( SVBT16ToShort( pAV->hps ) ) ?
+// SVBT16ToShort( pAV->hps ) : 24; // Groesse in 1/2 Pt
+// darf nach JP nicht gesetzt werden, da immer die Size
+// genommen wird, die am ZeilenAnfang benutzt wird
+ Font aFont;
+ aFont.SetName( aName );
+ aFont.SetFamily( eFamily );
+// aFont.SetPitch( ePitch ); // darf nach JP nicht
+ aFont.SetCharSet( eCharSet );
+ pNum->eType = SVX_NUM_CHAR_SPECIAL;
+// if( pAV->ico ) // geht in UI und SWG-Writer/Reader nicht
+// aFont.SetColor( Color( GetCol( pAV->ico ) ) );
+ pNum->SetBulletFont( &aFont );
+
+ // take only the very first character
+ if( pAV->cbTextBefore || pAV->cbTextAfter)
+ pNum->SetBulletChar( sTxt.GetChar( 0 ) );
+ else
+ pNum->SetBulletChar( 0xF000 + 183 );
+ }
+ }
+ }
+ if( bInsert )
+ {
+ if( pAV->cbTextBefore )
+ {
+ String sP( sTxt.Copy( 0, SVBT8ToByte( pAV->cbTextBefore ) ) );
+ pNum->SetPrefix( sP );
+ }
+ if( SVBT8ToByte( pAV->cbTextAfter ) )
+ {
+ String sP( pNum->GetPostfix() );
+ sP.Insert( sTxt.Copy( SVBT8ToByte( pAV->cbTextBefore ),
+ SVBT8ToByte( pAV->cbTextAfter ) ) );
+ pNum->SetPostfix( sP );
+ }
+// Die Zeichen vor und hinter mehreren Ziffern koennen leider nicht uebernommen
+// werden, da sie der Writer ganz anders behandelt und das Ergebnis i.A.
+// schlechter als ohne waere.
+ }
+}
+
+// SetAnld bekommt einen WW-ANLD-Descriptor und einen Level und modifiziert
+// die durch pNumR anggebeben NumRules. Wird benutzt fuer alles ausser
+// Gliederung im Text
+void SwWW8ImplReader::SetAnld( SwNumRule* pNumR, WW8_ANLD* pAD, BYTE nSwLevel,
+ BOOL bOutLine )
+{
+ SwNumFmt aNF;
+ if( pAD )
+ { // Es gibt einen Anld-Sprm
+ bAktAND_fNumberAcross = 0 != SVBT8ToByte( pAD->fNumberAcross );
+ WW8_ANLV* pAV = &pAD->eAnlv;
+ SetBaseAnlv( &aNF, pAV ); // Setze Basis-Format
+ SetAnlvStrings( &aNF, pAV, pAD->rgchAnld, bOutLine );// und Rest
+ }
+ pNumR->Set( nSwLevel, aNF );
+}
+
+
+
+//-------------------------------------------------------
+// Kapitelnummerierung und Kapitelbullets
+//-------------------------------------------------------
+// Kapitelnummerierung findet in Styledefinionen statt. Sprm 13 gibt den Level
+// an, Sprm 12 den Inhalt
+
+SwNumRule* SwWW8ImplReader::GetStyRule()
+{
+ if( pStyles->pStyRule ) // Bullet-Style bereits vorhanden
+ return pStyles->pStyRule;
+
+ const String aBaseName(WW8_ASCII2STR( "WW8StyleNum" ));
+ const String aName( rDoc.GetUniqueNumRuleName( &aBaseName, FALSE ) );
+
+ USHORT nRul = rDoc.MakeNumRule( aName );
+ pStyles->pStyRule = rDoc.GetNumRuleTbl()[nRul];
+ pStyles->pStyRule->SetAutoRule( FALSE );// Auto == FALSE -> Nummerierungsvorlage
+
+ return pStyles->pStyRule;
+}
+
+void SwWW8ImplReader::Read_ANLevelNo( USHORT, BYTE* pData, short nLen ) // Sprm 13
+{
+ nSwNumLevel = 0xff; // Default: ungueltig
+
+ if( nLen <= 0 )
+ return;
+
+ // StyleDef ?
+ if( pAktColl )
+ {
+ if( pCollA[nAktColl].bColl // nur fuer SwTxtFmtColl, nicht CharFmt
+ && *pData // WW: 0 = no Numbering
+ && !( nIniFlags & WW8FL_NO_OUTLINE ) )
+ {
+ if( *pData <= MAXLEVEL // Bereich WW:1..9 -> SW:0..8
+ && *pData <= 9 ) // keine Aufzaehlung / Nummerierung
+ {
+ nSwNumLevel = *pData - 1;
+ if( !bNoAttrImport )
+ ((SwTxtFmtColl*)pAktColl)->SetOutlineLevel( nSwNumLevel );
+ // Bei WW-NoNumbering koennte auch NO_NUMBERING gesetzt
+ // werden. ( Bei normaler Nummerierung muss NO_NUM gesetzt
+ // werden: NO_NUM : Nummerierungs-Pause,
+ // NO_NUMBERING : ueberhaupt keine Nummerierung )
+
+ }
+ else if( *pData == 10 || *pData == 11 )
+ {
+ pStyles->nWwNumLevel = *pData; // Typ merken, der Rest
+ // geschieht bei Sprm 12
+ }
+ }
+ }
+ else
+ { // !StyleDef
+ if( !bAnl && !( nIniFlags & WW8FL_NO_NUMRULE ) )
+ {
+ StartAnl( pData ); // Anfang der Gliederung / Aufzaehlung
+ }
+ }
+}
+
+void SwWW8ImplReader::Read_ANLevelDesc( USHORT, BYTE* pData, short nLen ) // Sprm 12
+{
+ if( !pAktColl || nLen <= 0 // nur bei Styledef
+ || !pCollA[nAktColl].bColl // CharFmt -> ignorieren
+ || ( nIniFlags & WW8FL_NO_OUTLINE ) ){
+ nSwNumLevel = 0xff;
+ return;
+ }
+ if( nSwNumLevel <= MAXLEVEL // Bereich WW:1..9 -> SW:0..8
+ && nSwNumLevel <= 9 ){ // keine Aufzaehlung / Nummerierung
+
+ // Falls bereits direkt oder durch
+ // Vererbung NumruleItems gesetzt sind,
+ // dann jetzt ausschalten #56163
+ pAktColl->SetAttr( SwNumRuleItem() );
+
+ String aName(WW8_ASCII2STR( "Outline" ));
+ SwNumRule aNR( rDoc.GetUniqueNumRuleName(&aName), OUTLINE_RULE );
+ aNR = *rDoc.GetOutlineNumRule();
+
+ SetAnld( &aNR, (WW8_ANLD*)pData, nSwNumLevel, TRUE );
+
+ // fehlende Level muessen nicht aufgefuellt werden
+
+ rDoc.SetOutlineNumRule( aNR );
+ }else if( pStyles->nWwNumLevel == 10 || pStyles->nWwNumLevel == 11 ){
+ SwNumRule* pNR = GetStyRule();
+ SetAnld( pNR, (WW8_ANLD*)pData, 0, FALSE );
+ pAktColl->SetAttr( SwNumRuleItem( pNR->GetName() ) );
+ pCollA[nAktColl].bHasStyNumRule = TRUE;
+ }
+}
+
+//-----------------------------------------
+// Nummerierung / Aufzaehlung
+//-----------------------------------------
+
+// SetNumOlst() traegt die Numrules fuer diese Zeile ins SwNumFmt ein
+// ( nur fuer Gliederungen im Text; Aufzaehlungen / Nummerierungen laufen
+// ueber ANLDs )
+// dabei wird die Info aus dem OLST geholt und nicht aus dem ANLD ( s.u. )
+void SwWW8ImplReader::SetNumOlst( SwNumRule* pNumR, WW8_OLST* pO, BYTE nSwLevel )
+{
+ SwNumFmt aNF;
+ WW8_ANLV* pAV = &pO->rganlv[nSwLevel];
+ SetBaseAnlv( &aNF, pAV ); // Setze Basis-Format
+ // ... und nun die Strings
+ int i, nTxtOfs = 0;
+ register WW8_ANLV* pAV1; // suche String-Positionen
+ for( i = 0, pAV1 = pO->rganlv; i < nSwLevel; i++, pAV1++ ){
+ nTxtOfs += SVBT8ToByte( pAV1->cbTextBefore )
+ + SVBT8ToByte( pAV1->cbTextAfter );
+ }
+
+ SetAnlvStrings( &aNF, pAV, pO->rgch + nTxtOfs, TRUE ); // und rein
+ pNumR->Set( nSwLevel, aNF );
+}
+
+
+
+
+// der OLST kommt am Anfang jeder Section, die Gliederungen enthaelt. Die ANLDs,
+// die an jeder Gliederungszeile haengen, enthalten nur Stuss, also werden die
+// OLSTs waehrend der Section gemerkt, damit die Informationen beim Auftreten
+// von Gliederungsabsaetzen zugreifbar ist.
+void SwWW8ImplReader::Read_OLST( USHORT, BYTE* pData, short nLen )
+{
+ if( nIniFlags & WW8FL_NO_NUMRULE )
+ return;
+ if( nLen <= 0 ){
+ DELETEZ( pNumOlst );
+ return;
+ }
+ if( pNumOlst )
+ delete( pNumOlst ); // nur sicherheitshalber
+ pNumOlst = new WW8_OLST;
+ if( nLen < sizeof( WW8_OLST ) ) // auffuellen, falls zu kurz
+ memset( pNumOlst, 0, sizeof( *pNumOlst ) );
+ *pNumOlst = *(WW8_OLST*)pData;
+}
+
+// StartAnl wird am Anfang eines Zeilenbereichs gerufen,
+// der Gliederung / Nummerierung / Aufzaehlung enthaelt
+#define MAX_ANLV_NUM 12
+void SwWW8ImplReader::StartAnl( BYTE* pSprm13 )
+{
+ bAktAND_fNumberAcross = FALSE;
+
+ BYTE nT = GetNumType( *pSprm13 );
+ if( nT == WW8_Pause || nT == WW8_None )
+ return;
+
+ nWwNumType = nT;
+
+ // check for COL numbering:
+ BYTE* pS12 = 0;// sprmAnld
+ String sNumRule;
+ if( pTableDesc )
+ {
+ sNumRule = pTableDesc->GetNumRuleName();
+ if( sNumRule.Len() )
+ {
+ pNumRule = rDoc.FindNumRulePtr( sNumRule );
+ if( !pNumRule )
+ sNumRule.Erase();
+ else
+ {
+ // this is ROW numbering ?
+ pS12 = pPlcxMan->HasParaSprm( 12 ); // sprmAnld
+ if( pS12 && 0 != SVBT8ToByte( ((WW8_ANLD*)pS12)->fNumberAcross) )
+ sNumRule.Erase();
+ }
+ }
+ }
+ if( !sNumRule.Len() )
+ {
+ //sNumRule = rDoc.GetUniqueNumRuleName();
+ pNumRule = rDoc.GetNumRuleTbl()[ rDoc.MakeNumRule( sNumRule ) ];
+ if( pTableDesc )
+ {
+ if( !pS12 )
+ pS12 = pPlcxMan->HasParaSprm( 12 ); // sprmAnld
+ if( !pS12 || !SVBT8ToByte( ((WW8_ANLD*)pS12)->fNumberAcross ) )
+ pTableDesc->SetNumRuleName( pNumRule->GetName() );
+ }
+ }
+
+ bAnl = TRUE;
+
+ NextAnlLine( pSprm13, pS12 ); // Einstellungen fuer 1. Zeile
+
+ // NumRules ueber Stack setzen
+ pCtrlStck->NewAttr( *pPaM->GetPoint(),
+ SfxStringItem( RES_FLTR_NUMRULE, pNumRule->GetName() ) );
+}
+
+
+// NextAnlLine() wird fuer jede Zeile einer
+// Gliederung / Nummerierung / Aufzaehlung einmal gerufen
+void SwWW8ImplReader::NextAnlLine( BYTE* pSprm13, BYTE* pS12 )
+{
+ if( !bAnl )
+ return; // pNd->UpdateNum ohne Regelwerk gibt GPF spaetestens
+ // beim Speichern als sdw3
+
+ if( *pSprm13 == 10 || *pSprm13 == 11 ) // WW:10 = Nummerierung -> SW:0
+ // WW:11 = Auffzaehlung -> SW:0
+ {
+ nSwNumLevel = 0;
+ if( !pNumRule->GetNumFmt( nSwNumLevel ) )
+ { // noch nicht definiert
+ if( !pS12 )
+ pS12 = pPlcxMan->HasParaSprm( 12 ); // sprmAnld o. 0
+ SetAnld( pNumRule, (WW8_ANLD*)pS12, nSwNumLevel, FALSE );
+ }
+ }
+ else if( *pSprm13 <= MAXLEVEL ) // Bereich WW:1..9 -> SW:0..8
+ {
+ nSwNumLevel = *pSprm13 - 1; // Gliederung
+ if( !pNumRule->GetNumFmt( nSwNumLevel ) ) // noch nicht definiert
+ {
+ if( pNumOlst ) // es gab ein OLST
+ {
+ SetNumOlst( pNumRule, pNumOlst , nSwNumLevel );
+ }
+ else // kein Olst, nimm Anld
+ {
+ if( !pS12 )
+ pS12 = pPlcxMan->HasParaSprm( 12 ); // sprmAnld
+ SetAnld( pNumRule, (WW8_ANLD*)pS12, nSwNumLevel, FALSE );
+ }
+ }
+ }
+ else
+ {
+ nSwNumLevel = 0xff; // keine Nummer
+ }
+ BYTE nLevel = ( nSwNumLevel < MAXLEVEL ) ? nSwNumLevel : NO_NUMLEVEL;
+ SwNodeNum aNum( nLevel );
+ SwTxtNode* pNd = pPaM->GetNode()->GetTxtNode();
+ pNd->UpdateNum( aNum );
+}
+
+// StopAnl() wird am Ende des Zeilenbereiches gerufen
+void SwWW8ImplReader::StopAnl( BOOL bGoBack )
+{
+ if( bGoBack )
+ {
+ SwPosition aTmpPos( *pPaM->GetPoint() ); // eine Zeile zu spaet
+ // gehe zurueck
+ pPaM->Move( fnMoveBackward, fnGoCntnt );
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_FLTR_NUMRULE ); // Setze NumRules in Stack
+ // restore Pam
+ *pPaM->GetPoint() = aTmpPos;
+ }
+ else
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_FLTR_NUMRULE ); // Setze NumRules in Stack
+
+ nSwNumLevel = 0xff;
+ nWwNumType = WW8_None;
+ bAnl = FALSE;
+}
+
+
+// Bei der Zaehlung der Tabellenzellen gibt es einige Merkwuerdigkeiten:
+// 1) Ist in einer Zeile eine besondere Zellenumrandung vorhanden, dann werden
+// die WW8_TCell's vom WW generiert, sonst nicht.
+// 2) Existieren die TCs, dann ist bei nicht existenten Zellen fMerged gesetzt.
+// Im Text existieren diese Zellen nicht, d.h. die Indices muessen nicht
+// korrigiert werden. ( Im sprmTDefTable sind die nicht existenten Zellen
+// jedoch vorhanden ). Fuer diese Zellen ist bExist[] TRUE, da keine
+// Anpassung der Indices beim Einlesen der Inhalte passieren muss.
+// 3) Existieren die TCs einer Zeile nicht, dann werden nicht existente Zellen
+// als Zellen mit 0-Breite dargestellt, die auch jeweils einen leeren Absatz
+// beinhalten. Werden diese Zellen mit Breite 0 nicht importiert ( was sehr
+// empfehlenswert ist ), dann muessen die ZellenNummern korrigiert werden.
+// Der Index kann ueber nTransCell[] nachgesehen werden. Fuer diese Zellen
+// ist bExist[] FALSE.
+// 4) Da WW Zellen mit ausgefransten Raendern darstellen kann, der SW aber
+// nicht, werden hier ggfs. leere Zellen links und rechts angefuegt. Auch
+// hier muessen die Zellennummern korrigiert werden.
+//
+// -> bExist[] enthaelt Info darueber, ob im WW vorhandene Zellen im SW fehlen
+// ( Fall 3 )
+// -> nTransCell[] ist die UEbersetzung von WW-Indices auf SW-Indizes
+// ( unterschiedlich bei Fall 3 und 4 )
+
+static BOOL IsEqual( WW8TabBandDesc* p1, WW8TabBandDesc* p2 )
+{
+ if( !p1 || !p2 )
+ return FALSE;
+#if 0 // dieses waere der schnellste Vergleich, aber ich bin mir nicht sicher,
+ // ob gewisse Systeme die struct-Elemente nicht umsortieren oder
+ // Luecken lassen
+ if( !memcmp( &p1->nGapHalf, &p2->nGapHalf,
+ (BYTE*)&p1->pTCs - (BYTE*)&p1->nGapHalf ) )
+ return FALSE;
+#endif
+ if( p1->nWwCols != p2->nWwCols )
+ return FALSE;
+
+ if( p1->nLineHeight != p2->nLineHeight )
+ return FALSE;
+
+ if( p1->nGapHalf != p2->nGapHalf ) // koennte auch mit Toleranz arbeiten ( noetig ? )
+ return FALSE;
+
+ for( int i = 0; i <= p1->nWwCols; i++ ) // nCols+1 Angaben
+ if( p1->nCenter[i] != p2->nCenter[i] ) // Toleranz bei nCenter ?
+ return FALSE;
+
+ if( p1->pTCs || p2->pTCs ){ // mindestens einer mit TCs
+ if( !p1->pTCs || !p2->pTCs )
+ return FALSE; // einer ohne TCs
+
+ if( memcmp( p1->pTCs, p2->pTCs, ( p1->nWwCols ) * sizeof( WW8_TCell ) ) )
+ return FALSE;
+ }
+ if( p1->pSHDs || p2->pSHDs ){ // mindestens einer mit SHDs
+ if( !p1->pSHDs || !p2->pSHDs )
+ return FALSE; // einer ohne SHDs
+
+ if( memcmp( p1->pSHDs, p2->pSHDs, ( p1->nWwCols ) * sizeof( WW8_SHD ) ) )
+ return FALSE;
+ }
+ return TRUE;
+}
+
+WW8TabBandDesc::WW8TabBandDesc( WW8TabBandDesc& rBand )
+{
+ *this = rBand;
+ if( rBand.pTCs ){
+ pTCs = new WW8_TCell[nWwCols];
+ memcpy( pTCs, rBand.pTCs, nWwCols * sizeof( WW8_TCell ) );
+ }
+ if( rBand.pSHDs ){
+ pSHDs = new WW8_SHD[nWwCols];
+ memcpy( pSHDs, rBand.pSHDs, nWwCols * sizeof( WW8_SHD ) );
+ }
+}
+
+// ReadDef liest die Zellenpositionen und ggfs die Umrandungen eines Bandes ein
+void WW8TabBandDesc::ReadDef( BOOL bVer67, BYTE* pS )
+{
+ int i;
+
+ if( !bVer67 ) pS++;
+
+ short nLen = (INT16)SVBT16ToShort( pS - 2 ); // nicht schoen
+ BYTE nCols = *pS; // Anzahl der Zellen
+ short nOldCols = nWwCols;
+
+ if( nCols > MAX_COL )
+ return;
+
+ nWwCols = nCols;
+
+ BYTE* pT = &pS[1];
+ nLen --;
+ for( i=0; i<=nCols; i++, pT+=2 ){
+ nCenter[i] = (INT16)SVBT16ToShort( pT ); // X-Raender
+ }
+ nLen -= 2 * ( nCols + 1 );
+ if( nCols != nOldCols ){ // andere Spaltenzahl
+ DELETEAZ( pTCs );
+ DELETEAZ( pSHDs );
+ }
+
+ short nFileCols = nLen / ( bVer67 ? 10 : 20 ); // wirklich abgespeichert
+
+
+ if( !pTCs )
+ {
+ // lege leere TCs an
+ pTCs = new WW8_TCell[nCols];
+ memset( pTCs, 0, nCols * sizeof( WW8_TCell ) );
+ }
+
+
+ if( nFileCols )
+ {
+ // lies TCs ein
+
+ /*
+ Achtung: ab Ver8 ist ein reserve-ushort je TC eingefuegt und auch
+ der Border-Code ist doppelt so gross, daher ist hier
+ kein simples kopieren moeglich,
+ d.h.: pTCs[i] = *pTc; geht leider nicht.
+ ---
+ Vorteil: Arbeitstruktur ist jetzt viel bequemer zu handhaben!
+ */
+ WW8_TCell* pAktTC = pTCs;
+ if( bVer67 )
+ {
+ WW8_TCellVer6* pTc = (WW8_TCellVer6*)pT;
+ for( i=0; i<nCols; i++, ++pAktTC )
+ {
+ memset( pAktTC, 0, sizeof( WW8_TCell ) );
+ if( i < nFileCols )
+ { // TC aus File ?
+ BYTE aBits1 = SVBT8ToByte( pTc->aBits1Ver6 );
+ pAktTC->bFirstMerged = ( ( aBits1 & 0x01 ) != 0 );
+ pAktTC->bMerged = ( ( aBits1 & 0x02 ) != 0 );
+ memcpy( pAktTC->rgbrc[ WW8_TOP ].aBits1,
+ pTc->rgbrcVer6[ WW8_TOP ].aBits1, sizeof( SVBT16 ) );
+ memcpy( pAktTC->rgbrc[ WW8_LEFT ].aBits1,
+ pTc->rgbrcVer6[ WW8_LEFT ].aBits1, sizeof( SVBT16 ) );
+ memcpy( pAktTC->rgbrc[ WW8_BOT ].aBits1,
+ pTc->rgbrcVer6[ WW8_BOT ].aBits1, sizeof( SVBT16 ) );
+ memcpy( pAktTC->rgbrc[ WW8_RIGHT ].aBits1,
+ pTc->rgbrcVer6[ WW8_RIGHT ].aBits1, sizeof( SVBT16 ) );
+ if( ( pAktTC->bMerged )
+ && ( i > 0 ) )
+ {
+ // Cell gemerged -> merken
+ //bWWMergedVer6[i] = TRUE;
+ memcpy( pTCs[i-1].rgbrc[ WW8_RIGHT ].aBits1,
+ pTc->rgbrcVer6[ WW8_RIGHT ].aBits1, sizeof( SVBT16 ) );
+ // right Border in vorige Zelle uebernehmen
+ // Hier darf bExist nicht auf FALSE gesetzt werden, da WW
+ // in den Textboxen diese Zellen nicht mitzaehlt....
+ }
+ if( i+1 < nFileCols )
+ pTc++;
+ }
+ }
+ }
+ else
+ {
+ WW8_TCellVer8* pTc = (WW8_TCellVer8*)pT;
+ for( i=0; i<nCols; i++, ++pAktTC )
+ {
+ memset( pAktTC, 0, sizeof( WW8_TCell ) );
+ if( i < nFileCols )
+ { // TC aus File ?
+ UINT16 aBits1 = (UINT16)SVBT16ToShort( pTc->aBits1Ver8 );
+ pAktTC->bFirstMerged = ( ( aBits1 & 0x0001 ) != 0 );
+ pAktTC->bMerged = ( ( aBits1 & 0x0002 ) != 0 );
+ pAktTC->bVertical = ( ( aBits1 & 0x0004 ) != 0 );
+ pAktTC->bBackward = ( ( aBits1 & 0x0008 ) != 0 );
+ pAktTC->bRotateFont = ( ( aBits1 & 0x0010 ) != 0 );
+ pAktTC->bVertMerge = ( ( aBits1 & 0x0020 ) != 0 );
+ pAktTC->bVertRestart = ( ( aBits1 & 0x0040 ) != 0 );
+ pAktTC->nVertAlign = ( ( aBits1 & 0x0180 ) >> 7 );
+ // am Rande: im aBits1 verstecken sich noch 7 Reserve-Bits,
+ // anschliessend folgen noch 16 weitere Reserve-Bits
+
+ // In Version 8 koennen wir alle Bordercodes auf einmal kopieren!
+ memcpy( pAktTC->rgbrc, pTc->rgbrcVer8, 4 * sizeof( WW8_BRC ) );
+ // Zellen-Mergeinfo braucht hier nicht extra vermerkt zu werden,
+ // da dies ab Ver8 ja ueber Merge-Gruppen verwaltet wird.
+ if( i+1 < nFileCols )
+ pTc++;
+ }
+ }
+ }
+ }
+}
+
+
+void WW8TabBandDesc::ProcessSprmTSetBRC( BOOL bVer67, BYTE* pParamsTSetBRC )
+{
+ if( pParamsTSetBRC && pTCs ) // set one or more cell border(s)
+ {
+ BYTE nitcFirst= pParamsTSetBRC[0];// first col to be changed
+ BYTE nitcLim = pParamsTSetBRC[1];// (last col to be changed)+1
+ BYTE nFlag = *(pParamsTSetBRC+2);
+
+ BOOL bChangeRight = nFlag & 0x08;
+ BOOL bChangeBottom = nFlag & 0x04;
+ BOOL bChangeLeft = nFlag & 0x02;
+ BOOL bChangeTop = nFlag & 0x01;
+
+ WW8_TCell* pAktTC = pTCs + nitcFirst;
+ if( bVer67 )
+ {
+ WW8_BRCVer6* pBRC = (WW8_BRCVer6*)(pParamsTSetBRC+3);
+
+ for( int i = nitcFirst; i < nitcLim; i++, ++pAktTC )
+ {
+ if( bChangeTop )
+ memcpy( pAktTC->rgbrc[ WW8_TOP ].aBits1,
+ pBRC->aBits1,
+ sizeof( SVBT16 ) );
+ if( bChangeLeft )
+ memcpy( pAktTC->rgbrc[ WW8_LEFT ].aBits1,
+ pBRC->aBits1,
+ sizeof( SVBT16 ) );
+ if( bChangeBottom )
+ memcpy( pAktTC->rgbrc[ WW8_BOT ].aBits1,
+ pBRC->aBits1,
+ sizeof( SVBT16 ) );
+ if( bChangeRight )
+ memcpy( pAktTC->rgbrc[ WW8_RIGHT].aBits1,
+ pBRC->aBits1,
+ sizeof( SVBT16 ) );
+ }
+ }
+ else
+ {
+ WW8_BRC* pBRC = (WW8_BRC*)(pParamsTSetBRC+3);
+
+ for( int i = nitcFirst; i < nitcLim; i++, ++pAktTC )
+ {
+ if( bChangeTop )
+ memcpy( pAktTC->rgbrc[ WW8_TOP ].aBits1,
+ pBRC->aBits1,
+ sizeof( WW8_BRC ) );
+ if( bChangeLeft )
+ memcpy( pAktTC->rgbrc[ WW8_LEFT ].aBits1,
+ pBRC->aBits1,
+ sizeof( WW8_BRC ) );
+ if( bChangeBottom )
+ memcpy( pAktTC->rgbrc[ WW8_BOT ].aBits1,
+ pBRC->aBits1,
+ sizeof( WW8_BRC ) );
+ if( bChangeRight )
+ memcpy( pAktTC->rgbrc[ WW8_RIGHT].aBits1,
+ pBRC->aBits1,
+ sizeof( WW8_BRC ) );
+ }
+
+
+
+ }
+ }
+}
+
+
+void WW8TabBandDesc::ProcessSprmTDxaCol( BOOL bVer67, BYTE* pParamsTDxaCol )
+{
+ // sprmTDxaCol (opcode 0x7623) changes the width of cells
+ // whose index is within a certain range to be a certain value.
+
+ if( nWwCols && pParamsTDxaCol ) // set one or more cell length(s)
+ {
+ BYTE nitcFirst= pParamsTDxaCol[0]; // first col to be changed
+ BYTE nitcLim = pParamsTDxaCol[1]; // (last col to be changed)+1
+ short nDxaCol = (INT16)SVBT16ToShort( pParamsTDxaCol + 2 );
+ short nOrgWidth;
+ short nDelta;
+
+ for( int i = nitcFirst; i < nitcLim, i < nWwCols; i++ )
+ {
+ nOrgWidth = nCenter[i+1] - nCenter[i];
+ nDelta = nDxaCol - nOrgWidth;
+ for( int j = i+1; j < nWwCols; j++ )
+ {
+ nCenter[j] += nDelta;
+ }
+ }
+ }
+}
+
+
+void WW8TabBandDesc::ProcessSprmTDelete( BOOL bVer67, BYTE* pParamsTDelete )
+{
+ // sprmTDxaCol (opcode 0x7623) changes the width of cells
+ // whose index is within a certain range to be a certain value.
+
+ if( nWwCols && pParamsTDelete ) // set one or more cell length(s)
+ {
+ BYTE nitcFirst= pParamsTDelete[0]; // first col to be deleted
+ BYTE nitcLim = pParamsTDelete[1]; // (last col to be deleted)+1
+
+ BYTE nShlCnt = nWwCols - nitcLim; // count of cells to be shifted
+
+
+ WW8_TCell* pAktTC = pTCs + nitcFirst;
+ int i = 0;
+ for( ; i < nShlCnt; i++, ++pAktTC )
+ {
+ // adjust the left x-position
+ nCenter[nitcFirst + i] = nCenter[nitcLim + i];
+
+ // adjust the cell's borders
+ *pAktTC = pTCs[ nitcLim + i];
+ }
+ // adjust the left x-position of the dummy at the very end
+ nCenter[nitcFirst + i] = nCenter[nitcLim + i];
+
+ nWwCols -= (nitcLim - nitcFirst);
+ }
+}
+
+void SwWW8ImplReader::Read_TabCellDelete( USHORT, BYTE* pData, short nLen )
+{
+ // implementation missing: #76673#
+ //
+ // could we use part of ProcessSprmTDelete() ???
+}
+
+void SwWW8ImplReader::Read_TabCellInsert( USHORT, BYTE* pData, short nLen )
+{
+ // implementation missing, analoguous to #76673#
+}
+
+
+
+// ReadShd liest ggfs die Hintergrundfarben einer Zeile ein.
+// Es muss vorher ReadDef aufgerufen worden sein
+void WW8TabBandDesc::ReadShd( SVBT16* pS )
+{
+ BYTE nLen = ( pS ) ? *( (BYTE*)pS - 1 ) : 0 ;
+ if( !nLen )
+ return;
+
+#if 0
+ if( !pS || *( pS - 1 ) < nWwCols * sizeof( WW8_SHD ) )
+ {
+ DELETEAZ( pSHDs ); // nicht vollstaendig -> ignorieren
+ return;
+ }
+#endif
+
+ if( !pSHDs )
+ {
+ pSHDs = new WW8_SHD[nWwCols];
+ memset( pSHDs, 0, nWwCols * sizeof( WW8_SHD ) );
+ }
+
+ BYTE nAnz = nLen >> 1;
+ if( nAnz > nWwCols )
+ nAnz = (BYTE)nWwCols;
+ int i;
+ SVBT16* pShd;
+ for( i=0, pShd = pS; i<nAnz; i++, pShd++ )
+ pSHDs[i].SetWWValue( *pShd );
+
+ //pSHDs[i] = *pShd;
+}
+
+
+
+static BOOL SearchRowEnd( BOOL bVer67, BOOL bComplex, WW8PLCFx_Cp_FKP* pPap )
+{
+ BYTE* pB;
+
+ while( ( ( bVer67 && !bComplex )
+ || ( pPap->GetPCDIdx() < pPap->GetPCDIMax()) )
+ && pPap->HasFkp() )
+ {
+ if( pPap->Where() != LONG_MAX )
+ {
+ pB = pPap->HasSprm( bVer67 ? 25 : 0x2417 );
+ if( pB
+ && *pB == 1 )
+ return TRUE; // RowEnd found
+ }
+ (*pPap)++;
+ }
+ return FALSE;
+}
+
+
+
+WW8TabDesc::WW8TabDesc( SwWW8ImplReader* pIoClass )
+ : pIo( pIoClass ),
+ pFirstBand( 0 ),
+ pActBand( 0 ),
+ pTmpPos( 0 ),
+ pTable( 0 ),
+ pTblNd( 0 ),
+ pTabLines( 0 ),
+ pTabLine( 0 ),
+ pTabBoxes( 0 ),
+ pTabBox( 0 ),
+ pMergeGroups( 0 ),
+ pAktWWCell( 0 ),
+ nRows( 0 ),
+ nDefaultSwCols( 0 ),
+ nBands( 0 ),
+ nMinLeft( 0 ),
+ nMaxRight( 0 ),
+ nSwWidth( 0 ),
+ bOk( TRUE ),
+ bHeader( FALSE ),
+ bBorderDefaults( FALSE ),
+ bClaimLineFmt( FALSE ),
+ eOri( HORI_NONE ),
+ nAktRow( 0 ),
+ nAktBandRow( 0 ),
+ nAktCol( 0 )
+{
+ pIo->bAktAND_fNumberAcross = FALSE;
+
+ static SwHoriOrient aOriArr[] = {
+ HORI_LEFT, HORI_CENTER, HORI_RIGHT, HORI_CENTER };
+
+ BOOL bVer67 = pIo->bVer67;
+ BOOL bComplex = pIo->pWwFib->fComplex;
+
+ WW8TabBandDesc* pNewBand = new WW8TabBandDesc;
+
+
+ // Dies ist auch eine moegliche Erkennung
+ // fuer Dok-Start ( hat immer PageDesc ).
+ // Allerdings werden die PageDescs
+ // bei Bereichswechsel nicht erkannt
+// bStartDoc = ( pIo->pPaM->GetPoint()->nNode.GetIndex()
+// == pIo->rDoc.GetNodes().EndOfIcons.GetIndex() + 2 );
+
+ WW8PLCFxSave1 aSave;
+ pIoClass->pPlcxMan->GetPap()->Save( aSave );
+
+ WW8PLCFx_Cp_FKP* pPap = pIoClass->pPlcxMan->GetPapPLCF();
+
+ // process pPap until end of table found
+ do{
+ short nTabeDxaNew = SHRT_MAX;
+ eOri = HORI_LEFT;
+ pNewBand->nGapHalf = 0;
+ pNewBand->nLineHeight = 0;
+ BOOL bTabRowJustRead = FALSE;
+ BYTE* pShadeSprm = 0;
+ BYTE* pTabDxaColSprm = 0;
+
+
+ if( !SearchRowEnd( bVer67, bComplex, pPap ) ) // Suche Ende einer TabZeile
+ {
+ bOk = FALSE;
+ break;
+ }
+
+
+ // Get the SPRM chains:
+ // first from PAP and then from PCD (of the Piece Table)
+ WW8PLCFxDesc aDesc;
+ pPap->GetSprms( &aDesc );
+ WW8SprmIter aSprmIter( aDesc.pMemPos, aDesc.nSprmsLen,
+ pIo->GetFib().nVersion );
+
+ BYTE* pParams = aSprmIter.GetAktParams();
+ for( int nLoop = 0; nLoop < 2; ++nLoop )
+ {
+ while( aSprmIter.GetSprms()
+ && (0 != (pParams = aSprmIter.GetAktParams())) )
+ {
+ switch( aSprmIter.GetAktId() )
+ {
+ case 187:
+ case 0xD605:
+ if( !nRows )
+ {
+ // sprmTTableBorders
+ if( bVer67 )
+ for( int i = 0; i < 6; ++i )
+ {
+ aDefBrcs[i].aBits1[0] = pParams[ 2*i ];
+ aDefBrcs[i].aBits1[1] = pParams[ 1+2*i ];
+ }
+ else
+ memcpy( aDefBrcs, pParams, 24 ); // aDefBrcs = *(BRC(*)[6])pS;
+ bBorderDefaults = TRUE;
+ }
+ break;
+ case 186:
+ case 0x3404:
+ if( nRows == 0 ) // only 1. Line is Header
+ {
+ // sprmTTableHeader
+ bHeader = TRUE;
+ }
+ break;
+ case 182:
+ case 0x5400:
+ if( nRows == 0 )
+ {
+ // sprmTJc - Justification Code
+ eOri = aOriArr[ *pParams & 0x3 ];
+ }
+ break;
+ case 184:
+ case 0x9602:
+ {
+ // sprmTDxaGapHalf
+ pNewBand->nGapHalf = (INT16)SVBT16ToShort( pParams );
+ }
+ break;
+ case 189:
+ case 0x9407:
+ {
+ // sprmTDyaRowHeight
+ pNewBand->nLineHeight = (INT16)SVBT16ToShort( pParams ); // DyaRowHeight
+ bClaimLineFmt = TRUE;
+ }
+ break;
+ case 190:
+ case 0xD608:
+ {
+ // DefineTabRow
+ pNewBand->ReadDef( bVer67, pParams );
+ bTabRowJustRead = TRUE;
+ }
+ break;
+ case 191:
+ case 0xD609:
+ {
+ // TableShades
+ pShadeSprm = pParams;
+ }
+ break;
+ //
+ // * * * * Bug #69885#: the following codes were added * * * *
+ // (khz, 1.Feb.2000)
+ case 183:
+ case 0x9601:
+ {
+ // sprmTDxaLeft
+ //
+ // our Writer cannot shift single table lines horizontally
+ // so we have to find the smallest parameter (meaning the
+ // left-most position) and then
+ // shift the whole table to that margin (see below)
+ short nDxaNew = (INT16)SVBT16ToShort( pParams );
+ if( nDxaNew < nTabeDxaNew )
+ nTabeDxaNew = nDxaNew;
+ }
+ break;
+ case 193:
+ case 0xD620:
+ {
+ // sprmTSetBrc
+ pNewBand->ProcessSprmTSetBRC( bVer67, pParams );
+ }
+ break;
+ case 196:
+ case 0x7623:
+ {
+ // sprmTDxaCol
+ pTabDxaColSprm = pParams;
+ }
+ break;
+ /* the following is processed by a separate methode
+ case 195: while reading the table's content...
+ case 0x5622:
+ {
+ // sprmTDelete
+ }
+ break;
+ */
+ }
+ aSprmIter++;
+ }
+
+ if( !nLoop )
+ {
+ pPap->GetPCDSprms( aDesc );
+ aSprmIter.SetSprms( aDesc.pMemPos, aDesc.nSprmsLen );
+ }
+ }
+
+
+ // #55171: WW-Tabellen koennen Fly-Wechsel
+ // beinhalten
+ // daher hier Tabellen abbrechen und neu beginnen
+ // noch steht *pPap noch vor TabRowEnd, daher
+ // kann TestApo() mit letztem Parameter FALSE
+ // und damit wirksam gerufen werden.
+
+
+ if( bTabRowJustRead && pShadeSprm )
+ pNewBand->ReadShd( (SVBT16*)pShadeSprm );
+
+ if( nTabeDxaNew < SHRT_MAX )
+ {
+ short* pCenter = pNewBand->nCenter;
+ for( int i = 0; i < pNewBand->nWwCols; i++, ++pCenter )
+ // Shift left x-position
+ *pCenter += nTabeDxaNew;
+ }
+
+ if( pTabDxaColSprm )
+ pNewBand->ProcessSprmTDxaCol( bVer67, pTabDxaColSprm );
+
+
+ // Bei Unterschieden gibt es ein neues Band
+ // Zweite Zeile bekommt immer ein neues Band, damit die erste allein ist
+ if( nRows == 1 || !IsEqual( pNewBand, pActBand ) )
+ {
+ if( !pActBand )
+ {
+ pActBand = pFirstBand = pNewBand;
+ }
+ else
+ {
+ pActBand->pNextBand = pNewBand;
+ pActBand = pNewBand;
+ }
+ pNewBand = new WW8TabBandDesc;
+ nBands++;
+ }
+ else
+ {
+ delete pNewBand;
+ pNewBand = new WW8TabBandDesc;
+ }
+ nRows++;
+ pActBand->nRows++;
+
+ (*pPap)++;
+ if( ( pPap->Where() == LONG_MAX )
+ || ( ( !bVer67 || bComplex )
+ && ( pPap->GetPCDIdx() >= pPap->GetPCDIMax() ) ) )
+ {
+ bOk = FALSE;
+ break;
+ }
+
+ // InTable
+ if( (0 == (pParams = pPap->HasSprm( bVer67 ? 24 : 0x2416 ) ) )
+ || (1 != *pParams) )
+ break;
+
+
+ BOOL bStartApo, bStopApo, bNowStyleApo;
+ pIoClass->TestApo( bStartApo, bStopApo,
+ bNowStyleApo, TRUE, FALSE, TRUE );
+ if( bStopApo ) // Wenn Apo-Ende oder Apo-Wechsel, dann
+ break; // hoert die Tabelle hier auf
+
+ }while( 1 );
+
+ if( bOk )
+ {
+ if( pActBand->nRows > 1 )
+ { // Letztes Band hat mehr als 1 Zeile
+ delete( pNewBand );
+ pNewBand = new WW8TabBandDesc( *pActBand ); // neues machen
+ pActBand->nRows--; // wegen Sonderbehandlung Raender-Defaults
+ pNewBand->nRows = 1;
+ pActBand->pNextBand = pNewBand; // am Ende einschleifen
+ nBands++;
+ pNewBand = 0; // nicht loeschen
+ }
+
+ CalcDefaults();
+ }
+ delete( pNewBand );
+
+ pIoClass->pPlcxMan->GetPap()->Restore( aSave );
+}
+
+WW8TabDesc::~WW8TabDesc()
+{
+ WW8TabBandDesc* pR = pFirstBand;
+ WW8TabBandDesc* pR2;
+
+ while( pR ){
+ pR2 = pR->pNextBand;
+ delete( pR );
+ pR = pR2;
+ }
+ if( pMergeGroups ) DELETEZ( pMergeGroups );
+}
+
+void WW8TabDesc::CalcDefaults()
+{
+ short nMinCols = SHRT_MAX;
+ register WW8TabBandDesc* pR;
+
+ nMinLeft = SHRT_MAX;
+ nMaxRight = SHRT_MIN;
+
+ // 1. Durchlauf: aeusserste L- und R-Grenzen finden
+ for( pR = pFirstBand; pR; pR = pR->pNextBand ){
+ if( pR->nCenter[0] < nMinLeft )
+ nMinLeft = pR->nCenter[0];
+ if( pR->nCenter[pR->nWwCols] > nMaxRight )
+ nMaxRight = pR->nCenter[pR->nWwCols];
+ }
+ nSwWidth = nMaxRight - nMinLeft;
+ // 2. Durchlauf: Zahl der Writer-Spalten feststellen
+ // Die Zahl der Writer Spalten kann um bis zu 2 hoeher
+ // sein als im WW, da der SW im Gegensatz zu WW keine
+ // ausgefransten linken und rechten Raender kann und
+ // diese durch leere Boxen aufgefuellt werden.
+ // Durch nichtexistente Zellen koennen auch Zellen
+ // wegfallen
+
+ for( pR = pFirstBand; pR; pR = pR->pNextBand ){
+ pR->nSwCols = pR->nWwCols;
+ pR->bLEmptyCol = pR->nCenter[0] - nMinLeft > MINLAY;
+ pR->bREmptyCol = nMaxRight - pR->nCenter[pR->nWwCols] > MINLAY;
+
+ short nAddCols = pR->bLEmptyCol + pR->bREmptyCol;
+ USHORT i;
+ USHORT j = ( pR->bLEmptyCol ) ? 1 : 0;
+ for( i = 0; i < pR->nWwCols; i++ ){
+ pR->nTransCell[i] = (INT8)j;
+ if( ( pR->nCenter[i] < pR->nCenter[i+1] )
+ //&& !pR->bWWMergedVer6[i]
+ )
+ { // Zelle existiert wirklich
+ pR->bExist[i] = TRUE;
+ j++;
+ }
+ else
+ {
+ pR->bExist[i] = FALSE;
+ nAddCols--;
+ }
+ }
+ pR->nTransCell[i++] = (INT8)(j++); // Wird u.a. wegen bREmptyCol um
+ pR->nTransCell[i] = (INT8)j; // max. 2 ueberindiziert
+
+ pR->nSwCols += nAddCols;
+ if( pR->nSwCols < nMinCols )
+ nMinCols = pR->nSwCols;
+ }
+ // 3. Durchlauf: Wo noetig die Umrandungen durch die
+ // Defaults ersetzen
+ if( bBorderDefaults ){
+ for( pR = pFirstBand ; pR; pR = pR->pNextBand ){
+ if( !pR->pTCs ){
+ pR->pTCs = new WW8_TCell[ pR->nWwCols ];
+ memset( pR->pTCs, 0, pR->nWwCols * sizeof( WW8_TCell ) );
+ }
+ int k;
+ for( k = 0; k < pR->nWwCols; k++ ){
+ register WW8_TCell* pT = &pR->pTCs[k];
+ int i, j;
+ for( i = 0; i < 4; i ++ ){
+#ifdef DEBUG
+// nur fuer Ver67
+ USHORT nBBrc = SVBT16ToShort( pT->rgbrc[i].aBits1 );
+ USHORT nBWidth = nBBrc >> 0 & 0x7;
+ USHORT nBType = nBBrc >> 3 & 0x3;
+ USHORT nBShadow = nBBrc >> 5 & 0x1;
+ USHORT nBIco = nBBrc >> 6 & 0x1f;
+ USHORT nBSpace = nBBrc >> 11 & 0x1f;
+#endif
+ if( pIo->bVer67
+ ? (( SVBT16ToShort( pT->rgbrc[i].aBits1 ) >> 3 & 0x3 ) == 0)
+ : (( SVBT16ToShort( pT->rgbrc[i].aBits1 ) & 0xFF00 ) == 0) )
+ { // brcType == 0 nichts explizit gesetzt
+ j = i;
+ switch( i )
+ {
+ case 0: j = (pR == pFirstBand ) ? 0 : 4; // Aussen oben / Innen waagerecht
+ break;
+ case 1: j = ( k ) ? 5 : 1; // Aussen links / Innen senkrecht
+ break;
+ case 2: j = ( pR->pNextBand ) ? 4 : 2; // Aussen unten / Innen waagerecht
+ break;
+ case 3: j = (k == pR->nWwCols - 1) ? 3 : 5; // Aussen rechts/ Innen senkrecht
+ break;
+ }
+#ifdef DEBUG
+// nur fuer Ver67
+ USHORT nDBrc = SVBT16ToShort( aDefBrcs[j].aBits1 );
+ USHORT nDWidth = nDBrc >> 0 & 0x7;
+ USHORT nDType = nDBrc >> 3 & 0x3;
+ USHORT nDShadow = nDBrc >> 5 & 0x1;
+ USHORT nDIco = nDBrc >> 6 & 0x1f;
+ USHORT nDSpace = nDBrc >> 11 & 0x1f;
+#endif
+ pT->rgbrc[i] = aDefBrcs[j]; // mangel mit Defaults ueber
+ }
+ }
+ }
+ }
+ }
+ // 4. Ausrichtung der Tabelle
+ long nMidTab = ( (long)nMinLeft + nMaxRight ) / 2; // TabellenMitte
+ long nRight = pIo->nPgWidth - pIo->nPgRight - pIo->nPgLeft;
+
+ // set Position if not on adjusted to left border
+ if((MINLAY < nMinLeft) && (HORI_LEFT == eOri))
+ {
+ if(MINLAY > abs(nMidTab - nRight/2))// very near the center IS centered
+ eOri = HORI_CENTER;
+ else
+ if(MINLAY > abs(nMaxRight - nRight))// very near r.border IS r.adjusted
+ eOri = HORI_RIGHT;
+ else
+ eOri = HORI_LEFT_AND_WIDTH; // absolutely positioned
+ }
+
+ nDefaultSwCols = nMinCols; // da Zellen einfuegen billiger ist als Mergen
+ if( nDefaultSwCols == 0 )
+ bOk = FALSE;
+ pActBand = pFirstBand;
+ nAktBandRow = 0;
+ ASSERT( pActBand, "pActBand ist 0" );
+}
+
+void WW8TabDesc::CreateSwTable()
+{
+
+ ::SetProgressState( pIo->nProgress, pIo->rDoc.GetDocShell() ); // Update
+#ifdef DEBUG
+// Sound::Beep();
+#endif
+
+ // if there is already some content on the Node
+ // append new node to ensure that this content remains
+ // ABOVE the table
+ SwPosition* pPoint = pIo->pPaM->GetPoint();
+ BOOL bInsNode = ( pPoint->nContent.GetIndex() );
+ if( !bInsNode
+ && pIo->pNode_FLY_AT_CNTNT == &pPoint->nNode.GetNode() )
+ {
+ bInsNode = TRUE;
+ // minimize Fontsize to minimize height growth of the header/footer
+ SvxFontHeightItem aSz( 20 );
+ pIo->NewAttr( aSz );
+ pIo->pCtrlStck->SetAttr( *pPoint, RES_CHRATR_FONTSIZE );
+ }
+ if( bInsNode )
+ {
+ // set font size to 1 point to minimize y-growth of Hd/Ft
+ pIo->rDoc.AppendTxtNode( *pPoint );
+ }
+
+
+ pTmpPos = new SwPosition( *pIo->pPaM->GetPoint() );
+
+
+ // Abfrage, ob im Node, in dem die Tabelle eingefuegt werden soll,
+ // bereits ein Pagedesc steht. Dann wuerde der PageDesc in die
+ // naechste Zeile hinter der Tabelle rutschen, wo er nichts zu
+ // suchen hat.
+ // -> loeschen und spaeter an das Tabellenformat setzen
+ SfxPoolItem *pSetAttr = 0;
+ SwTxtNode* pNd = pIo->rDoc.GetNodes()[pTmpPos->nNode]->GetTxtNode();
+ if ( pNd ){
+ const SfxItemSet* pSet = pNd->GetpSwAttrSet();
+ const SfxPoolItem* pItem;
+ if( pSet ){
+ if( SFX_ITEM_SET == pSet->GetItemState( RES_PAGEDESC, FALSE, &pItem ))
+ {
+ pSetAttr = new SwFmtPageDesc( *(SwFmtPageDesc*)pItem );
+ pNd->ResetAttr( RES_PAGEDESC );
+ }
+ if( SFX_ITEM_SET == pSet->GetItemState( RES_BREAK, FALSE, &pItem ) )
+ {
+ pSetAttr = new SvxFmtBreakItem( *(SvxFmtBreakItem*)pItem );
+ pNd->ResetAttr( RES_BREAK );
+ }
+ }
+ }
+
+
+ // Die Tabelle ist beim Einfuegen noch recht klein:
+ // Zahl der Spalten ist die kleinste Spaltenanzahl des Originals,
+ // da Spalten einfuegen schneller geht als Loeschen
+ // Zahl der Zeilen ist die Zahl der Baender, da sich die
+ // (identischen) Zeilen eines Bandes prima duplizieren lassen
+ pTable = pIo->rDoc.InsertTable( *pTmpPos, nBands, nDefaultSwCols, eOri );
+ SwFrmFmt* pFrmFmt = pTable->GetFrmFmt();
+
+ // evtl den PageDesc/Break jetzt an der Tabelle setzen
+ if( pSetAttr )
+ {
+ pFrmFmt->SetAttr( *pSetAttr );
+ delete pSetAttr;
+ }
+
+ if( nMaxRight - nMinLeft > MINLAY * nDefaultSwCols ) // Gesamtbreite der Tabelle
+ {
+ pFrmFmt->SetAttr( SwFmtFrmSize( ATT_VAR_SIZE, nSwWidth ) );//FIX
+ }
+
+ if(HORI_LEFT_AND_WIDTH == eOri)
+ {
+ SvxLRSpaceItem aL;
+ aL.SetLeft( nMinLeft );
+ pFrmFmt->SetAttr( aL );
+ }
+
+ if( pIo->pSFlyPara ){ // Ist Tabelle im Rahmen ?
+ // ok, Rahmen auf Bildgroesse vergroessern
+ // ( nur wenn Auto-Breite )
+ pIo->pSFlyPara->BoxUpWidth( nSwWidth );
+ }
+
+ // globale Varis initialisieren
+ pTabLines = &pTable->GetTabLines();
+ nAktRow = nAktCol
+ = nAktBandRow
+ = 0;
+
+ pTblNd = (SwTableNode*)(*pTabLines)[0]->GetTabBoxes()[0]->GetSttNd()->FindTableNode();
+ ASSERT( pTblNd, "wo ist mein TabellenNode" );
+ pTblNd->GetTable().SetHeadlineRepeat( bHeader );
+
+ // ggfs. Zusatz-Zellen einfuegen u.dgl.
+ AdjustNewBand( pIo );
+
+ // jetzt den PaM korrekt setzen und ggfs. erste Mergegruppe vorbereiten...
+ SetPamInCell( nAktCol, TRUE, TRUE );
+
+ pIo->bWasTabRowEnd = FALSE;
+}
+
+void WW8TabDesc::FinishSwTable()
+{
+ *pIo->pPaM->GetPoint() = *pTmpPos;
+ delete( pTmpPos );
+ pTmpPos = 0;
+ pIo->bWasTabRowEnd = FALSE;
+ if( pIo->rDoc.GetRootFrm() )
+ {
+ // exitiert schon ein Layout, dann muss an dieser Tabelle die
+ // BoxFrames neu erzeugt werden.
+ pTblNd->DelFrms();
+ pTblNd->MakeFrms( &pIo->pPaM->GetPoint()->nNode );
+ }
+ // falls noetig, zu mergende Zellen gruppenweise zusammenfassen
+ if( pMergeGroups )
+ {
+ // bearbeite alle Merge-Gruppen nacheinander
+ SwTableBox* pTargetBox;
+ WW8SelBoxInfo* pActMGroup;
+ USHORT nActBoxCount;
+ for( USHORT iGr = 0; iGr < pMergeGroups->Count(); iGr++ )
+ {
+ pActMGroup = (*pMergeGroups)[ iGr ];
+ // Anzahl der zu mergenden Boxen PLUS Eins (fuer die TargetBox)
+ nActBoxCount = pActMGroup->Count();
+
+ if( ( 1 < nActBoxCount ) && pActMGroup && (*pActMGroup)[ 0 ] )
+ {
+ // beachten: der 0. Eintrag ist die ebenso wie
+ // die obere, linke Box formatierte Target-Box !!!
+ pTargetBox = (*pActMGroup)[ 0 ];
+ //
+ // Target-Box verschoenern: unteren Rand der letzten Box nehmen
+ //
+ SwFrmFmt* pTargetFrmFmt = pTargetBox->GetFrmFmt();
+ SvxBoxItem aBoxItem( pTargetFrmFmt->GetBox() );
+ aBoxItem.SetLine(
+ (*pActMGroup)[ nActBoxCount-1 ]->GetFrmFmt()->GetBox().GetBottom(),
+ BOX_LINE_BOTTOM );
+ pTargetFrmFmt->SetAttr( aBoxItem );
+
+ // oeffne Merge-Array mit passender Groesse
+ SwSelBoxes aBoxes( nActBoxCount-1 );
+
+ // alle Boxen dieser Gruppe in aBoxes versammeln
+ aBoxes.Insert( pActMGroup->GetData()+1, nActBoxCount-1 );
+
+ // Sicherheitspruefung: Gruppe mit nur EINER Box fuehrt beim Mergen
+ // zum Programmabsturz, deshalb diesen unsinnigen Fall abfangen!
+ USHORT nMergeTest;
+ if( 2 == nActBoxCount )
+ // nur 1 Zelle in der Merge-Gruppe: wahrscheinlich Word-Bug
+ nMergeTest = TBLMERGE_TOOCOMPLEX;
+ else
+ { //
+ // Vorsicht: erstmal austesten,
+ // ob sich die aBoxes ueberhaupt mergen lassen wuerden...
+ //
+ nMergeTest = CheckMergeSel( aBoxes ); // siehe /SW/INC/TBLSEL.HXX
+ BYTE nTry = 1;
+ //
+ // Falls das Merge so nicht machbar ist,
+ // pruefen, ob es ginge, wenn wir die letzte Box
+ // oder die beiden letzten Boxen
+ // oder gar die drei letzten Boxen
+ // aus der Merge-Gruppe rausnehmen wuerden
+ while( ( TBLMERGE_TOOCOMPLEX == nMergeTest )
+ && ( 4 > nTry )
+ && ( 3 < nActBoxCount /* wichtig ! */ ) )
+ {
+ nTry++;
+ nActBoxCount--;
+ // letzte Box aus der Gruppe rausnehmen
+ aBoxes.Remove( nActBoxCount-1 );
+ // und nachsehen, ob Merge nun moeglich waere
+ nMergeTest = CheckMergeSel( aBoxes );
+ }
+ }
+ //
+ // Genug geprueft - wir schreiten zur Tat...
+ //
+ switch( nMergeTest )
+ {
+ case TBLMERGE_OK:
+ //
+ // You succeed at last...
+ //
+ ((SwTable*)pTable)->Merge( &pIo->rDoc, aBoxes, pTargetBox );
+ break;
+ case TBLMERGE_NOSELECTION:
+ /*NOP*/ // war wohl nix?
+ break;
+ case TBLMERGE_TOOCOMPLEX:
+ // Pech: Trotz aller Probiererei geht das Merge immer noch nicht!
+ //
+ // Beachten: die Daten der Gruppe schlummern bereits
+ // in der Target-Box. Da kein Merge moeglich ist,
+ // setzen wir die Target-Box in die Tabelle an
+ // die Stelle der oberen linken Box.
+ {
+ const SwTableBox* pBox = (*pActMGroup)[ 1 ];
+ SwTableLine* pLine = (SwTableLine*)pBox->GetUpper();
+
+ USHORT nPos = pLine->GetTabBoxes().GetPos( pBox );
+
+ ASSERT( USHRT_MAX != nPos, "GetPos fehlgeschlagen");
+
+ SwStartNode* pSttNd = (SwStartNode*)pBox->GetSttNd();
+
+ ASSERT( pSttNd, "Box ohne Start-Node ?!");
+
+ pTargetBox->ChgFrmFmt(
+ (SwTableBoxFmt*)pBox->GetFrmFmt() );
+ pTargetBox->SetUpper( pLine );
+
+ // erst die Box loeschen!!
+ pLine->GetTabBoxes().DeleteAndDestroy( nPos );
+ // dann die pTargetBox einfuegen
+ pLine->GetTabBoxes().C40_INSERT( SwTableBox, pTargetBox, nPos );
+ // dann die Nodes loeschen!!
+ pIo->rDoc.DeleteSection( pSttNd );
+ }
+ break;
+ default: // was wollen wir denn hier ???
+ ASSERT( !this, "CheckMergeSel() with undefined return value" );
+ break;
+ }
+ }
+ }
+ DELETEZ( pMergeGroups );
+ }
+ // nun noch ggfs. die doppelten Innenraender korrigieren (Bug #53525#)
+ if( pTable )
+ ((SwTable*)pTable)->GCBorderLines(); // Garbage Collect
+}
+
+
+// durchsucht pMergeGroups, meldet Index der ersten, passenden Gruppe bzw. -1
+//
+// Parameter: nXcenter = Mittenposition der anfragenden Box
+// nWidth = Breite der anfragenden Box
+// bExact = Flag, ob Box in dieser Gruppe passen muss,
+// oder diese nur zu tangieren braucht
+//
+BOOL WW8TabDesc::FindMergeGroup( short nX1, short nWidth, BOOL bExact, short& nMGrIdx )
+{
+ nMGrIdx = -1;
+ if( pMergeGroups )
+ {
+ // noch als gueltig angesehener Bereich in der Naehe der Grenzen
+ const short nToleranz = 4;
+ // die aktuell untersuchte Gruppe
+ WW8SelBoxInfoPtr pActGroup;
+ // Boxgrenzen
+ short nX2 = nX1 + nWidth;
+ // ungefaehre Gruppengrenzen
+ short nGrX1;
+ short nGrX2;
+
+ for( USHORT iGr = 0; iGr < pMergeGroups->Count(); iGr++ )
+ {
+ // die aktuell untersuchte Gruppe
+ pActGroup = (*pMergeGroups)[ iGr ];
+ if( -999 < pActGroup->nGroupXStart )
+ {
+ // ungefaehre Gruppengrenzen mit Toleranz nach *aussen* hin
+ nGrX1 = pActGroup->nGroupXStart - nToleranz;
+ nGrX2 = pActGroup->nGroupXStart
+ +pActGroup->nGroupWidth + nToleranz;
+ //
+ // Falls Box reinpasst, melde auf jeden Fall den Erfolg
+ //
+ if( ( nX1 > nGrX1 ) && ( nX2 < nGrX2 ) )
+ {
+ nMGrIdx = iGr; break;
+ }
+ //
+ // hat die Box Bereiche mit der Gruppe gemeinsam?
+ //
+ if( !bExact )
+ {
+ // melde Erfolg, wenn nX1 *oder* nX2 innerhalb der Gruppe liegen
+ if( ( ( nX1 > nGrX1 )
+ && ( nX1 < nGrX2 - 2*nToleranz ) )
+ || ( ( nX2 > nGrX1 + 2*nToleranz )
+ && ( nX2 < nGrX2 ) )
+ // oder nX1 und nX2 die Gruppe umfassen
+ || ( ( nX1 <=nGrX1 )
+ && ( nX2 >=nGrX2 ) ) )
+ {
+ nMGrIdx = iGr; break;
+ }
+ }
+ }
+ }
+ }
+ return BOOL( -1 < nMGrIdx );
+}
+
+
+BOOL WW8TabDesc::IsValidCell( short nCol ) const
+{
+ return pActBand->bExist[ nCol ]
+ && (USHORT)nAktRow < pTabLines->Count();
+}
+
+
+BOOL WW8TabDesc::SetPamInCell( short nWwCol, BOOL bPam, BOOL bCheckForMerge )
+{
+ ASSERT( pActBand, "pActBand ist 0" );
+
+ if( !IsValidCell( nWwCol ) )
+ return FALSE;
+
+ USHORT nCol = pActBand->nTransCell[nWwCol];
+
+ pTabLine = (*pTabLines)[nAktRow];
+ pTabBoxes = &pTabLine->GetTabBoxes();
+ if ( nCol >= pTabBoxes->Count() )
+ return FALSE;
+ pTabBox = (*pTabBoxes)[nCol];
+ if( !pTabBox->GetSttNd() )
+ {
+ ASSERT(pTabBox->GetSttNd(), "Probleme beim Aufbau der Tabelle");
+ return FALSE;
+ }
+ if( bPam )
+ {
+ pAktWWCell = &pActBand->pTCs[ nWwCol ];
+ pIo->pPaM->GetPoint()->nNode = pTabBox->GetSttIdx() + 1;
+ pIo->pPaM->GetPoint()->nContent.Assign( pIo->pPaM->GetCntntNode(), 0 );
+
+ // Zur Sicherheit schon jetzt setzen, da bei den Zellen, die
+ // zum Randausgleich eingefuegt werden, sonst der Style
+ // nicht gesetzt wird.
+ pIo->rDoc.SetTxtFmtColl( *pIo->pPaM, (SwTxtFmtColl*)pIo->pDfltTxtFmtColl );
+ // uebrigens: da diese Zellen unsichtbare Hilfskonstruktionen sind,
+ // und nur dazu dienen, zerfranste Aussehen der WW-Tabelle
+ // nachzuahmen, braucht NICHT SetTxtFmtCollAndListLevel()
+ // verwendet zu werden.
+ }
+ //
+ // ggfs. aktuelle Box in entsprechende Merge-Gruppe eintragen
+ //
+ if( bCheckForMerge && pActBand->pTCs /*&& !pIo->bVer67*/ )
+ {
+ SwTableBox* pTargetBox;
+ WW8SelBoxInfoPtr pActMGroup = 0;
+ //
+ // ggfs. eine neue Merge-Gruppe beginnen
+ //
+ WW8_TCell& rCell = pAktWWCell ? *pAktWWCell : pActBand->pTCs[ nWwCol ];
+ // ist dies die obere, linke-Zelle einer Merge-Gruppe ?
+ if( rCell.bFirstMerged || ( rCell.bVertRestart && !rCell.bMerged ) )
+ {
+ short nX1 = pActBand->nCenter[ nWwCol ];
+ short nWidth = pActBand->nWidth[ nWwCol ];
+ if( !pMergeGroups )
+ // 0. falls noetig das Array fuer die Merge-Gruppen anlegen
+ pMergeGroups = new WW8MergeGroups;
+ else
+ {
+ // 1. ggfs. alte Mergegruppe(n) schliessen, die den von
+ // unserer neuen Gruppe betroffenen X-Bereich ueberdecken
+ short nMGrIdx;
+ while( FindMergeGroup( nX1, nWidth, FALSE, nMGrIdx ) )
+ {
+ (*pMergeGroups)[ nMGrIdx ]->nGroupXStart = -999;
+ }
+ }
+
+ // 2. aktuelle Merge-Gruppe anlegen
+ pActMGroup = new WW8SelBoxInfo( nX1, nWidth );
+
+ // 3. und in Gruppen-Array eintragen
+ pMergeGroups->Insert( pActMGroup, pMergeGroups->Count() );
+
+ // 4. Target-Box anlegen und als 0. in Merge-Group setzen
+ pIo->rDoc.GetNodes().InsBoxen(pTblNd,
+ pTabLine,
+ (SwTableBoxFmt*)pTabBox->GetFrmFmt(),
+ (SwTxtFmtColl*)pIo->rDoc.GetDfltTxtFmtColl(),
+ 0,
+ nCol );
+
+ pTargetBox = (*pTabBoxes)[ nCol ];
+
+ // eingefuegte Box wieder aus der Row entfernen
+ // (wird vom Merge() dann endgueltig richtig eingebaut)
+ pTabBoxes->Remove( nCol );
+
+ // und ab damit in die Merge-Group
+ pActMGroup->Insert( pTargetBox, pActMGroup->Count() );
+ //
+ // 5. Target-Box formatieren
+ //
+ pTargetBox->SetUpper( 0 );
+
+ // eigenes Frame-Format fuer diese Box anlegen
+ SwFrmFmt* pNewFrmFmt = pTargetBox->ClaimFrmFmt();
+
+ // Border der O-L-Box der Gruppe wird Border der Targetbox
+ pNewFrmFmt->SetAttr( pTabBox->GetFrmFmt()->GetBox() );
+
+ // Gesamtbreite ermitteln und zuweisen
+ short nSizCell = pActBand->nWidth[ nWwCol ];
+ for(USHORT i = nWwCol+1; i < pActBand->nWwCols; i++ )
+ if( pActBand->pTCs[ i ].bMerged
+ && !pActBand->pTCs[ i ].bFirstMerged )
+ nSizCell += pActBand->nWidth[ i ];
+ else
+ break;
+ pActMGroup->nGroupWidth = nSizCell;
+ pNewFrmFmt->SetAttr( SwFmtFrmSize( ATT_VAR_SIZE, pActMGroup->nGroupWidth ));
+ }
+
+ // ggfs. akt. Box zu einer Merge-Gruppe hinzufuegen
+ // (dies kann eine soeben angelegte, oder eine andere Gruppe sein)
+ pTargetBox = UpdateTableMergeGroup( rCell, pActMGroup, pTabBox, nWwCol );
+ if( pTargetBox )
+ {
+ // den pCurPaM jetzt ans Ende der Target-Box setzen,
+ // damit der Text direkt in die richtige Box gelesen wird.
+
+ const SwNode* pEndNd =
+ pTargetBox->GetSttNd()->EndOfSectionNode();
+
+ ASSERT(pEndNd, "Gruppen-TargetBox ohne Start-Node ?");
+
+ if( bPam )
+ {
+ pIo->pPaM->GetPoint()->nNode = pEndNd->GetIndex();
+ pIo->pPaM->Move( fnMoveBackward );
+ }
+ }
+ }
+ return TRUE;
+}
+
+#if 0 // wird fuer FastSave-Files noch gebraucht
+void WW8TabDesc::DeleteCells( short nDelete )
+{
+ short nMergeCol = nDefaultSwCols - nDelete - 1;
+
+ SwSelBoxes aBoxes;
+ short i;
+
+ for (i = nMergeCol; i < nMergeCol + nDelete + 1; i++ ){
+ if( !SetPamInCell( i, FALSE, FALSE ) )
+ return;
+ _SwSelBox a_SelBox( pTabBox->GetSttIdx(), pTabBox );
+ aBoxes.Insert( a_SelBox );
+ }
+
+ SetPamInCell( nMergeCol, FALSE, FALSE ); // Cursor u.AE. an alte Pos
+ pIo->rDoc.GetNodes().InsBoxen( pTblNd, pTabLine, pTabBox->GetFrmFmt(),
+ (SwTxtFmtColl*)pIo->rDoc.GetDfltTxtFmtColl(),
+ 0, nMergeCol );
+ SwTableBox* pNewBox = (*pTabBoxes)[nMergeCol];
+ pTabBoxes->Remove( nMergeCol ); // wieder austragen
+ pNewBox->SetUpper( 0 );
+ pNewBox->ClaimFrmFmt();
+
+ pIo->pPaM->GetPoint()->nContent.Assign( 0, 0 ); // Melde ContentIndex pCurPaM ab
+
+ ((SwTable*)pTable)->Merge( &pIo->rDoc, aBoxes, pNewBox );
+}
+#endif
+
+void WW8TabDesc::InsertCells( short nIns )
+{
+ pTabLine = (*pTabLines)[nAktRow];
+ pTabBoxes = &pTabLine->GetTabBoxes();
+ pTabBox = (*pTabBoxes)[0];
+
+ pIo->rDoc.GetNodes().InsBoxen( pTblNd, pTabLine, (SwTableBoxFmt*)pTabBox->GetFrmFmt(),
+ (SwTxtFmtColl*)pIo->pDfltTxtFmtColl, 0, pTabBoxes->Count(), nIns );
+ // mit dem Dritten Parameter wird das FrmFmt der Boxen angegeben.
+ // hier kann man auch noch optimieren, um FrmFmts zu sparen
+}
+
+void WW8TabDesc::SetTabBorders( SwTableBox* pBox, short nWwIdx )
+{
+ if( nWwIdx < 0 || nWwIdx >= pActBand->nWwCols )
+ return; // kuenstlich erzeugte Zellen -> Kein Rand
+
+ SvxBoxItem aFmtBox;
+
+ // nGapHalf bedeutet bei WW ein *horizontaler* Abstand zwischen
+ // Tabellenzelle und -Inhalt
+
+ short nHorDist = (short)pActBand->nGapHalf;
+ short nVertDist = 0;
+
+ if( pActBand->pTCs ) // neither Cell Border nor Default Border defined ?
+ {
+ WW8_TCell* pT = &pActBand->pTCs[nWwIdx];
+ if( pIo->IsBorder( pT->rgbrc ) )
+ {
+ pIo->SetBorder( aFmtBox, pT->rgbrc );
+ if ( nHorDist < MIN_BORDER_DIST )
+ nHorDist = MIN_BORDER_DIST; // Border -> min. MIN_BORDER_DIST
+ }
+ }
+
+ // Vertikal benutzt WW den Absatzabstand oben und unten, um einen Abstand
+ // zu schaffen. Dieser ist hier leider noch unbekannt. :-(
+
+
+ // Frueher stand hier das Hypo-Flag:
+ // Hypo-Tabellen alles einheitlich !
+ // if ( SwFltGetFlag( pIo->GetFieldFlags(), SwFltControlStack::HYPO ) )
+
+ // jetzt musz das alte Verhalten auch von HYPO gesondert aktiviert werden !
+ if( SwFltGetFlag( pIo->GetIniFlags1(), EQUAL_TAB_BORDERDISTS ) )
+ {
+ if ( nHorDist < MIN_BORDER_DIST )
+ nHorDist = MIN_BORDER_DIST; // Border -> min. MIN_BORDER_DIST
+ nVertDist = nHorDist;
+ }
+ else
+ {
+ if( !nVertDist ) // kein Abstand gesetzt
+ nVertDist = 18; // ca. 0.03 cm
+ }
+
+ aFmtBox.SetDistance( nHorDist, BOX_LINE_LEFT );
+ aFmtBox.SetDistance( nVertDist, BOX_LINE_TOP );
+
+ aFmtBox.SetDistance( nHorDist, BOX_LINE_RIGHT );
+ aFmtBox.SetDistance( nVertDist, BOX_LINE_BOTTOM );
+
+ pBox->GetFrmFmt()->SetAttr( aFmtBox );
+}
+
+void WW8TabDesc::SetTabShades( SwTableBox* pBox, short nWwIdx )
+{
+ if( nWwIdx < 0 || nWwIdx >= pActBand->nWwCols )
+ return; // kuenstlich erzeugte Zellen -> Keine Farbe
+ WW8_SHD& rSHD = pActBand->pSHDs[nWwIdx];
+ if( !rSHD.GetValue() ) // alles weiss
+ return;
+
+ SwWW8Shade aSh( pIo->bVer67, rSHD );
+
+ pBox->GetFrmFmt()->SetAttr( SvxBrushItem( aSh.aColor ) );
+}
+
+void WW8TabDesc::AdjustNewBand( SwWW8ImplReader* pReader )
+{
+ if( pActBand->nSwCols > nDefaultSwCols ) // Zellen splitten
+ InsertCells( pActBand->nSwCols - nDefaultSwCols );
+
+ SetPamInCell( 0, FALSE, FALSE );
+ ASSERT( pTabBoxes && pTabBoxes->Count() == (USHORT)pActBand->nSwCols,
+ "Falsche Spaltenzahl in Tabelle" )
+
+ if( bClaimLineFmt ){
+ pTabLine->ClaimFrmFmt(); // noetig wg. Zeilenhoehe
+#if 1
+
+ SwFmtFrmSize aF( ATT_MIN_SIZE, 0, 0 ); // default
+
+ if( pActBand->nLineHeight == 0 ){ // 0 = Auto
+ aF.SetSizeType( ATT_VAR_SIZE );
+ }else{
+ if( pActBand->nLineHeight < 0 ){ // Pos = min, Neg = exakt
+ aF.SetSizeType( ATT_FIX_SIZE );
+ pActBand->nLineHeight = -pActBand->nLineHeight;
+ }
+ if( pActBand->nLineHeight < MINLAY ) // nicht erlaubte Zeilenhoehe
+ pActBand->nLineHeight = MINLAY;
+
+ aF.SetHeight( pActBand->nLineHeight );// Min- / Exakt-Hoehe setzen
+ }
+ pTabLine->GetFrmFmt()->SetAttr( aF );
+#else
+ SwFrmSize eSiz = ATT_MIN_SIZE; // Default
+
+ if( pActBand->nLineHeight < 0 ){ // Pos = min; Neg = exakt
+ pActBand->nLineHeight = -pActBand->nLineHeight;
+ eSiz = ATT_FIX_SIZE;
+ }
+
+ if( pActBand->nLineHeight >= MINLAY ){ // erlaubte Zeilenhoehe, nicht auto
+ pTabLine->GetFrmFmt()->SetAttr(
+ SwFmtFrmSize( eSiz, 0, pActBand->nLineHeight ) );
+ }else{ // Auto oder ungueltig
+ pTabLine->GetFrmFmt()->SetAttr( SwFmtFrmSize( ATT_VAR_SIZE, 0 ) );
+ }
+#endif
+ }
+
+ short i; // SW-Index
+ short j; // WW-Index
+ short nW; // Breite
+
+ SwFmtFrmSize aFS( ATT_FIX_SIZE );
+ j = -pActBand->bLEmptyCol;
+ for( i = 0; i < pActBand->nSwCols; i++ )
+ {
+ // setze Zellenbreite
+ if( j < 0 )
+ nW = pActBand->nCenter[0] - nMinLeft;
+ else
+ {
+ if( j < pActBand->nWwCols )
+ nW = pActBand->nCenter[j+1] - pActBand->nCenter[j];
+ else
+ nW = nMaxRight - pActBand->nCenter[j];
+ pActBand->nWidth[ j ] = nW;
+ }
+
+ register SwTableBox* pBox = (*pTabBoxes)[i];
+ pBox->ClaimFrmFmt(); // liesse sich durch intelligentes Umhaengen
+ // der FrmFmts noch weiter verringern
+ // naemlich so: pFrmFmt->Add( pBox );
+ // gibt der Box pBox das FrameFormat pFrmFmt
+
+
+ //pMergeCtrl[ j ].nRowWidth = nW;
+ aFS.SetWidth( nW );
+ pBox->GetFrmFmt()->SetAttr( aFS );
+
+ // setze Umrandung und Hintergrund
+ SetTabBorders( pBox, j ); // und Abstand
+ if( pActBand->pSHDs )
+ SetTabShades( pBox, j );
+ j++;
+ // ueberspringe nicht existente Zellen
+ while( ( j < pActBand->nWwCols ) && !pActBand->bExist[j] )
+ {
+ //pActBand->nWidth[ j ] = 0;
+ pActBand->nWidth[ j ] = pActBand->nCenter[j+1] - pActBand->nCenter[j];
+ pActBand->nCenter[ j ] = -999;
+ j++;
+ }
+ }
+}
+
+void WW8TabDesc::TableCellEnd()
+{
+ ::SetProgressState( pIo->nProgress, pIo->rDoc.GetDocShell() ); // Update
+
+ // neue Zeile
+// BOOL bRowEnded = pIo->bWasTabRowEnd;
+ if( pIo->bWasTabRowEnd ) // bWasTabRowEnd will be deactivated
+ { // in SwWW8ImplReader::ProcessSpecial()
+
+ USHORT iCol = GetLogicalWWCol();
+ if( iCol < aNumRuleNames.Count() )
+ aNumRuleNames.DeleteAndDestroy( iCol, aNumRuleNames.Count()-iCol );
+
+ pIo->pCtrlStck->SetAttr( *pIo->pPaM->GetPoint(), 0, FALSE );
+
+ nAktCol = 0;
+ nAktRow++;
+ nAktBandRow++;
+ ASSERT( pActBand , "pActBand ist 0" );
+ if( pActBand )
+ {
+ if( nAktRow >= nRows ) // am Tabellenende gibt's nichts sinnvolles
+ return; // mehr zu tun
+
+ BOOL bNewBand = nAktBandRow >= pActBand->nRows;
+ if( bNewBand )
+ { // neues Band noetig ?
+ pActBand = pActBand->pNextBand; //
+ nAktBandRow = 0;
+ ASSERT( pActBand, "pActBand ist 0" );
+ AdjustNewBand( pIo );
+ }
+ else
+ {
+ SwTableBox* pBox = (*pTabBoxes)[0];
+ SwSelBoxes aBoxes;
+ pIo->rDoc.InsertRow( pTable->SelLineFromBox( pBox, aBoxes ) );
+ }
+ }
+ }
+ else
+ { // neue Spalte ( Zelle )
+ nAktCol++;
+ }
+ SetPamInCell( nAktCol, TRUE, TRUE );
+
+ // finish Annotated Level Numbering ?
+ if( pIo->bAnl && !pIo->bAktAND_fNumberAcross )
+ pIo->StopAnl( IsValidCell( nAktCol ) );//FALSE );//!bRowEnded ); //
+}
+
+
+// ggfs. die Box in fuer diese Col offene Merge-Gruppe eintragen
+SwTableBox* WW8TabDesc::UpdateTableMergeGroup( WW8_TCell& rCell,
+ WW8SelBoxInfo* pActGroup,
+ SwTableBox* pActBox,
+ USHORT nCol )
+{
+ // Rueckgabewert defaulten
+ SwTableBox* pResult = 0;
+
+ // pruefen, ob die Box zu mergen ist
+ if( rCell.bFirstMerged
+ || rCell.bMerged
+ || rCell.bVertMerge
+ || rCell.bVertRestart )
+ {
+ // passende Merge-Gruppe ermitteln
+ WW8SelBoxInfo* pTheMergeGroup = 0;
+ if( pActGroup )
+ // Gruppe uebernehmen
+ pTheMergeGroup = pActGroup;
+ else
+ {
+ // Gruppe finden
+ short nMGrIdx;
+ if( FindMergeGroup( pActBand->nCenter[ nCol ],
+ pActBand->nWidth[ nCol ], TRUE, nMGrIdx ) )
+ pTheMergeGroup = (*pMergeGroups)[ nMGrIdx ];
+ }
+ if( pTheMergeGroup )
+ {
+ // aktuelle Box der Merge-Gruppe hinzufuegen
+ pTheMergeGroup->Insert( pActBox, pTheMergeGroup->Count() );
+
+ // Target-Box zurueckmelden
+ pResult = (*pTheMergeGroup)[ 0 ];
+ }
+ }
+ return pResult;
+}
+
+
+USHORT WW8TabDesc::GetLogicalWWCol() const // returns number of col as INDICATED within WW6 UI status line -1
+{
+ USHORT nCol = 0;
+ if( pActBand && pActBand->pTCs)
+ {
+ for( USHORT iCol = 1; iCol <= nAktCol; ++iCol )
+ {
+ if( !pActBand->pTCs[ iCol-1 ].bMerged )
+ ++nCol;
+ }
+ }
+ return nCol;
+}
+
+const String& WW8TabDesc::GetNumRuleName() const // find name of numrule valid for current WW-COL
+{
+ USHORT nCol = GetLogicalWWCol();
+ const String* pName = aNumRuleNames.Count() > nCol
+ ? aNumRuleNames.GetObject( nCol )
+ : 0;
+ return pName ? *pName : aEmptyStr;
+}
+
+void WW8TabDesc::SetNumRuleName( const String& rName )
+{
+ USHORT nCol = GetLogicalWWCol();
+ String* pName = 0;
+ while( aNumRuleNames.Count() <= nCol )
+ {
+ aNumRuleNames.Insert( pName, aNumRuleNames.Count() );
+ }
+ String* pOldName = aNumRuleNames.GetObject( nCol );
+ pName = new String( rName );
+ aNumRuleNames.Replace( pName, nCol );
+ if( pOldName )
+ delete pOldName;
+}
+
+
+
+
+BOOL SwWW8ImplReader::StartTable()
+{
+ if( pTableDesc // keine rekursiven Tabellen
+ || bReadNoTbl ) // Nicht bei EinfuegenDatei in Tabelle
+ return FALSE; // oder Fussnote
+
+ pTableDesc = new WW8TabDesc( this );
+ if( pTableDesc->Ok() )
+ pTableDesc->CreateSwTable();
+ else
+ {
+ delete pTableDesc;
+ pTableDesc = 0;
+ }
+ return 0 != pTableDesc;
+}
+
+void SwWW8ImplReader::TabCellEnd()
+{
+ if( bTable && pTableDesc )
+ pTableDesc->TableCellEnd();
+}
+
+void SwWW8ImplReader::Read_TabRowEnd( USHORT, BYTE* pData, short nLen ) // Sprm25
+{
+ if( ( nLen > 0 ) && ( *pData == 1 ) )
+ {
+ bWasTabRowEnd = TRUE;
+ pSBase->SetNoAttrScan( 1 );
+ }
+}
+
+void SwWW8ImplReader::StopTable()
+{
+ pTableDesc->FinishSwTable();
+ delete( pTableDesc );
+ pTableDesc = 0;
+}
+
+// GetTableLeft() wird fuer absatzgebundene Grafikobjekte in Tabellen
+// gebraucht.
+// WW nimmt bei eingerueckten Tabellen den Absatzrand, der ohne Tabelle
+// gueltig waere, als Basis; SW benutzt den linken Tabellenrand.
+short SwWW8ImplReader::GetTableLeft()
+{
+ return (pTableDesc) ? pTableDesc->GetMinLeft() : 0;
+}
+
+
+BOOL SwWW8ImplReader::IsInvalidOrToBeMergedTabCell() const
+{
+ if( !pTableDesc )
+ return FALSE;
+
+ const WW8_TCell* pCell = pTableDesc->GetAktWWCell();
+
+ return !pTableDesc->IsValidCell( pTableDesc->GetAktCol() )
+ || ( pCell
+ && ( !pCell->bFirstMerged
+ && ( pCell->bMerged
+ || ( pCell->bVertMerge
+ && !pCell->bVertRestart
+ )
+ )
+ )
+ );
+}
+
+
+const USHORT SwWW8ImplReader::StyleUsingLFO( USHORT nLFOIndex ) const
+{
+ USHORT nRes = USHRT_MAX;
+ if( pCollA )
+ {
+ for(USHORT nI = 0; nI < pStyles->GetCount(); nI++ )
+ if( pCollA[ nI ].bValid
+ && (nLFOIndex == pCollA[ nI ].nLFOIndex) )
+ nRes = nI;
+ }
+ return nRes;
+}
+
+
+const SwFmt* SwWW8ImplReader::GetStyleWithOrgWWName( String& rName ) const
+{
+ SwFmt* pRet = 0;
+ if( pCollA )
+ {
+ for(USHORT nI = 0; nI < pStyles->GetCount(); nI++ )
+ if( pCollA[ nI ].bValid
+ && (rName.Equals( pCollA[ nI ].GetOrgWWName())) )
+ {
+ pRet = pCollA[ nI ].pFmt;
+ break;
+ }
+ }
+ return pRet;
+}
+
+
+
+//-----------------------------------------
+// class WW8RStyle
+//-----------------------------------------
+
+BYTE* WW8RStyle::HasParaSprm( USHORT nId ) const
+{
+ if( !pParaSprms || !nSprmsLen )
+ return 0;
+
+ BYTE* pSprms = pParaSprms;
+ BYTE nDelta;
+ short i, x;
+
+ for( i=0; i<nSprmsLen; )
+ {
+ USHORT nAktId = WW8GetSprmId( rFib.nVersion, pSprms, &nDelta );
+ // Sprm gefunden?
+ if( nAktId == nId )
+ //alt: if( *pSprms == nId )
+ return pSprms + 1 + nDelta + WW8SprmDataOfs( nId ); // Zeiger auf Daten
+ x = WW8GetSprmSizeBrutto( rFib.nVersion, pSprms, &nAktId );
+ i += x;
+ pSprms += x;
+ }
+ return 0; // Sprm nicht gefunden
+}
+
+
+void WW8RStyle::ImportSprms( long nPosFc, short nLen, BOOL bPap )
+{
+ if( pStStrm->IsEof() )
+ return;
+
+ BYTE *pSprms0 = new BYTE[nLen];
+ if( bPap )
+ {
+ pParaSprms = pSprms0; // fuer HasParaSprms()
+ nSprmsLen = nLen;
+ }
+ BYTE* pSprms1 = pSprms0;
+ pStStrm->Seek( nPosFc );
+ pStStrm->Read( pSprms0, nLen );
+
+ while ( nLen > 0 )
+ {
+ USHORT nL1 = pIo->ImportSprm( pSprms1, nLen );
+ nLen -= nL1;
+ pSprms1 += nL1;
+ }
+ delete[]( pSprms0 );
+ pParaSprms = 0;
+ nSprmsLen = 0;
+}
+
+
+short WW8RStyle::ImportUPX( short nLen, BOOL bPAP )
+{
+ INT16 cbUPX;
+
+ if( 0 < nLen ) // Empty ?
+ {
+ nLen -= WW8SkipOdd( pStStrm );
+
+ *pStStrm >> cbUPX;
+
+ nLen-= 2;
+
+ if ( cbUPX > nLen )
+ cbUPX = nLen; // !cbUPX auf nLen verkleinert!
+
+ if( (1 < cbUPX) || ( (0 < cbUPX) && !bPAP ) )
+ {
+ if( bPAP )
+ {
+ UINT16 id;
+ *pStStrm >> id;
+
+ cbUPX-= 2;
+ nLen-= 2;
+ }
+
+ if( 0 < cbUPX )
+ {
+ ULONG nPos = pStStrm->Tell(); // falls etwas falsch interpretiert
+ // wird, gehts danach wieder richtig
+ ImportSprms( nPos, cbUPX, bPAP );
+
+ if ( pStStrm->Tell() != nPos + cbUPX )
+ pStStrm->Seek( nPos+cbUPX );
+
+ nLen -= cbUPX;
+ }
+ }
+ }
+ return nLen;
+}
+
+
+void WW8RStyle::ImportGrupx( short nLen, BOOL bPara )
+{
+ if( nLen <= 0 )
+ return;
+
+// if( rFib.nVersion < 8 )
+ nLen -= WW8SkipOdd( pStStrm );
+
+ if( bPara ) nLen = ImportUPX( nLen, TRUE ); // Grupx.Papx
+ ImportUPX( nLen, FALSE ); // Grupx.Chpx
+}
+
+WW8RStyle::WW8RStyle( WW8Fib& rFib, SwWW8ImplReader* pI )
+ : WW8Style( *pI->pTableStream, rFib ), pIo( pI ),
+ pStStrm( pI->pTableStream ),
+nWwNumLevel( 0 ), pStyRule( 0 )
+{
+ pIo->pCollA = new SwWW8StyInf[ cstd ]; // Style-UEbersetzung WW->SW
+ pIo->nColls = cstd;
+}
+
+
+void WW8RStyle::Set1StyleDefaults()
+{
+ if( !bFontChanged ) // Style hat keinen Font ?
+ {
+ short nWwDefaultFont = ftcStandardChpStsh;
+ pIo->SetNewFontAttr( nWwDefaultFont ); // ... dann hart 'reinsetzen
+ }
+ if( pIo->bNoAttrImport )
+ return;
+ if( !bFSizeChanged )
+ { // Style hat keine FontSize ?
+ SvxFontHeightItem aSz( 200 ); // WW-Default: 10pt
+ pIo->pAktColl->SetAttr( aSz );
+ }
+ if( pIo->pWDop->fWidowControl && !bWidowsChanged ) // Widows ?
+ {
+ pIo->pAktColl->SetAttr( SvxWidowsItem( 2 ) );
+ pIo->pAktColl->SetAttr( SvxOrphansItem( 2 ) );
+ }
+}
+
+//-----------------------------------------
+// Zeichenvorlagen
+//-----------------------------------------
+SwCharFmt* WW8RStyle::SearchCharFmt( const String& rName )
+{
+ USHORT n;
+ // Suche zuerst in den Doc-Styles
+ for( n = pIo->rDoc.GetCharFmts()->Count(); n > 0; )
+ if( (*pIo->rDoc.GetCharFmts())[ --n ]->GetName().Equals( rName ) )
+ return (*pIo->rDoc.GetCharFmts())[ n ];
+
+ // Collection noch nicht gefunden, vielleicht im Pool ?
+ n = pIo->rDoc.GetPoolId( rName , GET_POOLID_CHRFMT );
+ if ( n != USHRT_MAX ) // gefunden oder Standard
+ return pIo->rDoc.GetCharFmtFromPool( n );
+
+ return 0;
+}
+
+SwCharFmt* WW8RStyle::MakeNewCharFmt( WW8_STD* pStd, const String& rName )
+{
+ String aName( rName );
+ SwCharFmt* pFmt = 0;
+
+ if( pStd->sti != STI_USER // eingebauter Style, den wir nicht kennen ?
+ || SearchCharFmt( aName ) ){ // oder Namen gibts schon ?
+
+ if( !aName.EqualsAscii( "WW-", 0, 3 ) ) // noch kein "WW-"
+ aName.InsertAscii( "WW-", 0 ); // dann aender ihn
+
+ if( SearchCharFmt( aName ) ) // Namen gibt's immer noch ?
+ for( USHORT n = 1; n < 1000; n++ ){ // dann bastel neuen
+ String aName1( aName );
+ aName1 += String::CreateFromInt32( n );
+ if( ( pFmt = SearchCharFmt( aName1 ) ) == 0 ){
+ aName = aName1;
+ break; // unbenutzten Namen gefunden
+ }
+ }
+ }
+ if( !pFmt ) // unbenutzter Collection-Name gefunden, erzeuge neue Coll
+ pFmt = pIo->rDoc.MakeCharFmt( aName,
+ ( SwCharFmt*)pIo->rDoc.GetDfltCharFmt() ); // const Wegcasten
+
+ return pFmt;
+}
+
+
+SwCharFmt* WW8RStyle::MakeOrGetCharFmt( BOOL* pbStyExist, WW8_STD* pStd, const String& rName )
+{
+#define RES_NO RES_POOLCHR_END
+
+ static USHORT __READONLY_DATA aArr1[]={
+ RES_POOLCHR_FOOTNOTE, 0, RES_POOLCHR_LINENUM,
+ RES_POOLCHR_PAGENO, RES_POOLCHR_ENDNOTE };
+
+ static USHORT __READONLY_DATA aArr2[]={
+ RES_POOLCHR_INET_NORMAL, RES_POOLCHR_INET_VISIT,
+ RES_POOLCHR_HTML_STRONG, RES_POOLCHR_HTML_EMPHASIS };
+
+ if( pIo->bNew // Einfuegen: immer neue Styles generieren
+ && !( pIo->nIniFlags & WW8FL_NO_DEFSTYLES ) ) // nicht abgeschaltet
+ {
+ SwCharFmt* pFmt = 0;
+
+ // Default-Style bekannt ?
+ short nIdx = pStd->sti - 38;
+ if( nIdx >= 0 && nIdx < 5
+ && aArr1[nIdx]!=0 )
+ pFmt = pIo->rDoc.GetCharFmtFromPool( aArr1[ nIdx ] );
+ else
+ {
+ nIdx = pStd->sti - 85;
+ if( nIdx >= 0
+ && nIdx < 4 )
+ pFmt = pIo->rDoc.GetCharFmtFromPool( aArr2[ nIdx ] );
+ }
+ if( pFmt )
+ {
+ *pbStyExist = TRUE;
+ return pFmt;
+ }
+ }
+ {
+ *pbStyExist = FALSE;
+ String aName( rName );
+ USHORT nPos = aName.Search( ',' );
+ if( nPos ) // mehrere Namen mit Komma getrennt gibts im SW nicht
+ aName.Erase( nPos );
+ return MakeNewCharFmt( pStd, aName ); // nicht gefunden
+ }
+}
+
+//-----------------------------------------
+// Absatzvorlagen
+//-----------------------------------------
+
+SwTxtFmtColl* WW8RStyle::SearchFmtColl( const String& rName )
+{
+ // Suche zuerst in den Doc-Styles
+ SwTxtFmtColl* pColl = pIo->rDoc.FindTxtFmtCollByName( rName );
+ if( !pColl )
+ {
+ // Collection noch nicht gefunden, vielleicht im Pool ?
+ USHORT n = pIo->rDoc.GetPoolId( rName , GET_POOLID_TXTCOLL );
+ if ( n != USHRT_MAX ) // gefunden oder Standard
+ pColl = pIo->rDoc.GetTxtCollFromPool( n );
+ }
+ return pColl;
+}
+
+SwTxtFmtColl* WW8RStyle::MakeNewFmtColl( WW8_STD* pStd, const String& rName )
+{
+ String aName( rName );
+ SwTxtFmtColl* pColl = 0;
+
+ if( pStd->sti != STI_USER // eingebauter Style, den wir nicht kennen
+ || SearchFmtColl( aName ) ){ // oder Namen gibts schon ?
+
+ if( !aName.EqualsIgnoreCaseAscii( "WW-", 0, 3 ) ) // noch kein "WW-"
+ aName.Insert( WW8_ASCII2STR( "WW-" ), 0 ); // dann AEnder ihn
+
+ if( SearchFmtColl( aName ) ) // Namen gibt's immer noch ?
+ for( USHORT n = 1; n < 1000; n++ ){ // dann bastel neuen
+ String aName1( aName );
+ aName += String::CreateFromInt32( n );
+ if( ( pColl = SearchFmtColl( aName1 ) ) == 0 ){
+ aName = aName1;
+ break; // unbenutzten Namen gefunden
+ }
+ }
+ }
+ if( !pColl ) // unbenutzter Collection-Name gefunden, erzeuge neue Coll
+ pColl = pIo->rDoc.MakeTxtFmtColl( aName,
+ ( SwTxtFmtColl*)pIo->rDoc.GetDfltTxtFmtColl() ); // const Wegcasten
+
+ return pColl;
+}
+
+SwTxtFmtColl* WW8RStyle::MakeOrGetFmtColl( BOOL* pbStyExist, WW8_STD* pStd, const String& rName )
+{
+#define RES_NONE RES_POOLCOLL_DOC_END
+
+ static const RES_POOL_COLLFMT_TYPE aArr[]={
+ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2, // Ueberschrift 2
+ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
+ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
+ RES_POOLCOLL_HEADLINE9,
+
+ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
+ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
+ RES_POOLCOLL_TOX_CNTNT1,
+
+ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
+ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
+ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
+ RES_NONE, RES_POOLCOLL_FOOTNOTE,
+
+ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
+ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
+ RES_NONE, RES_NONE,
+
+ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
+ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
+
+ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
+ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
+
+ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
+ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
+
+ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
+
+
+ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
+ "Style-UEbersetzungstabelle hat falsche Groesse" );
+
+#if 1
+ if( pStd->sti < sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE )
+ && aArr[pStd->sti]!=RES_NONE // Default-Style bekannt
+ && !( pIo->nIniFlags & WW8FL_NO_DEFSTYLES ) ){ // nicht abgeschaltet
+
+ SwTxtFmtColl* pCol = pIo->rDoc.GetTxtCollFromPool( aArr[pStd->sti] );
+ if( pCol ){
+ *pbStyExist = TRUE;
+ return pCol;
+ }
+ }
+ {
+ String aName( rName );
+ USHORT nPos = aName.Search( ',' );
+ if( nPos ) // mehrere Namen mit Komma getrennt gibts im SW nicht
+ aName.Erase( nPos );
+ SwTxtFmtColl* pCol = SearchFmtColl( aName );
+ if( pCol ){
+ *pbStyExist = TRUE;
+ return pCol;
+ }
+ *pbStyExist = FALSE;
+ return MakeNewFmtColl( pStd, aName ); // nicht gefunden
+ }
+#else // 1
+ if( pIo->bNew // Einfuegen: immer neue Styles generieren
+ && pStd->sti < sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE )
+ && aArr[pStd->sti]!=RES_NONE // Default-Style bekannt
+ && !( pIo->nIniFlags & WW8FL_NO_DEFSTYLES ) ){ // nicht abgeschaltet
+
+ SwTxtFmtColl* pCol = pIo->rDoc.GetTxtCollFromPool( aArr[pStd->sti] );
+ if( pCol ){
+ *pbStyExist = TRUE;
+ return pCol;
+ }
+ }
+ {
+ *pbStyExist = FALSE;
+ String aName( rName );
+ USHORT nPos = aName.Search( ',' );
+ if( nPos ) // mehrere Namen mit Komma getrennt gibts im SW nicht
+ aName.Erase( nPos );
+ return MakeNewFmtColl( pStd, aName ); // nicht gefunden
+ }
+#endif // !1
+}
+
+void WW8RStyle::Import1Style( USHORT nNr )
+{
+ SwWW8StyInf* pSI = &pIo->pCollA[nNr];
+
+ if( pSI->bImported || !pSI->bValid )
+ return;
+
+ pSI->bImported = TRUE; // jetzt schon Flag setzen
+ // verhindert endlose Rekursion
+ if( pSI->nBase < cstd // gueltig und nicht NIL
+ && !pIo->pCollA[pSI->nBase].bImported ) // und noch nicht Importiert
+ Import1Style( pSI->nBase );
+
+ pStStrm->Seek( pSI->nFilePos );
+
+ short nSkip, cbStd;
+ String sName;
+
+ WW8_STD* pStd = Read1Style( nSkip, &sName, &cbStd );// lies Style
+
+ if( pStd )
+ pSI->SetOrgWWIdent( sName, pStd->sti );
+
+ if( !pStd
+ || (0 == sName.Len()) // no Name or unused Slot
+ || ((1 != pStd->sgc) && (2 != pStd->sgc)) ) // unknown Style
+ {
+ pStStrm->SeekRel( nSkip );
+ return;
+ }
+ // echter Para- oder Char-Style
+ SwFmt* pColl;
+ BOOL bStyExist;
+ if( pStd->sgc == 1 ) // Para-Style
+ pColl = MakeOrGetFmtColl( &bStyExist, pStd, sName );
+ else // Char-Style
+ pColl = MakeOrGetCharFmt( &bStyExist, pStd, sName );
+
+ BOOL bImport = !bStyExist || pIo->bNew; // Inhalte Importieren ?
+ BOOL bOldNoImp = pIo->bNoAttrImport;
+ pSI->bImportSkipped = !bImport;
+
+ if( !bImport ){
+ pIo->bNoAttrImport = TRUE;
+ }
+ else
+ {
+ if( bStyExist )
+ pColl->ResetAllAttr();
+ pColl->SetAuto( FALSE ); // nach Empfehlung JP
+ } // macht die UI aber anders
+ pIo->pAktColl = pColl;
+ pSI->pFmt = pColl; // UEbersetzung WW->SW merken
+ pSI->bImportSkipped = !bImport;
+
+ // Setze Based on
+ USHORT j = pSI->nBase;
+ if( j != nNr // sinnvoller Index ?
+ && j < cstd )
+ {
+ SwWW8StyInf* pj = &pIo->pCollA[j];
+ if (
+ pSI->pFmt && pj->pFmt // Beide Formate ok ?
+ && pSI->bColl == pj->bColl ) // beides gleicher Typ ?
+ {
+ pSI->pFmt->SetDerivedFrom( pj->pFmt ); // ok, Based on eintragen
+ pSI->eFontSrcCharSet = pj->eFontSrcCharSet; // CharSet als Default
+ }
+ }
+ else if( pIo->bNew && bStyExist )
+ {
+ if( pStd->sgc == 1 )
+ pSI->pFmt->SetDerivedFrom( pIo->pStandardFmtColl );
+ else
+ pSI->pFmt->SetDerivedFrom( pIo->rDoc.GetDfltCharFmt() );
+ }
+
+ pSI->nFollow = pStd->istdNext; // Follow merken
+
+ long nPos = pStStrm->Tell(); // falls etwas falsch interpretiert
+ // wird, gehts danach wieder richtig
+
+ pStyRule = 0; // falls noetig, neu anlegen
+ bFontChanged = bFSizeChanged = bWidowsChanged = FALSE;
+ pIo->SetNAktColl( nNr );
+ pIo->bStyNormal = nNr == 0;
+
+ if( pStd && ( pStd->sgc == 1 || pStd->sgc == 2 ) ){
+ ImportGrupx( nSkip, pStd->sgc == 1 ); // Import des Style-Inhalts
+ // Alle moeglichen Attribut-Flags zuruecksetzen,
+ // da es in Styles keine Attr-Enden gibt
+ pIo->bHasBorder = pIo->bTxtCol = pIo->bShdTxtCol = pIo->bCharShdTxtCol
+ = pIo->bSpec = pIo->bObj = pIo->bSymbol = FALSE;
+ pIo->nCharFmt = -1;
+ }
+
+// if( pStd && pStd->istdBase == 0xfff // Style basiert auf Nichts
+// && pStd->sgc == 1 ){ //! Char-Styles funktionieren aus
+
+ if( pStd
+ && ( pSI->nBase >= cstd // Style basiert auf Nichts
+ || pIo->pCollA[pSI->nBase].bImportSkipped ) // oder Basis ignoriert
+ && pStd->sgc == 1 ){ //! Char-Styles funktionieren aus
+ // unerfindlichen Gruenden nicht
+ // -> dann evtl. harte WW-Defaults
+ // reinsetzen
+ Set1StyleDefaults();
+ }
+
+ pStyRule = 0; // zur Sicherheit
+ pIo->bStyNormal = FALSE;
+ pIo->SetNAktColl( 0 );
+ pIo->bNoAttrImport = bOldNoImp;
+ // rasch nochmal die Listen-Merk-Felder zuruecksetzen,
+ // fuer den Fall dass sie beim einlesen des Styles verwendet wurden
+ pIo->nLFOPosition = USHRT_MAX;
+ pIo->nListLevel = nWW8MaxListLevel;
+
+ pStStrm->Seek( nPos+nSkip );
+
+ DELETEZ( pStd );
+}
+
+
+void WW8RStyle::RegisterNumFmts()
+{
+ for(USHORT i=0; i < cstd; i++)
+ {
+ SwWW8StyInf* pSI = &pIo->pCollA[ i ];
+ if( pSI )
+ pIo->RegisterNumFmtOnStyle( *pSI );
+ }
+}
+
+
+void WW8RStyle::ScanStyles() // untersucht Style-Abhaengigkeiten
+{ // und ermittelt die Filepos fuer jeden Style
+/*
+ WW8_FC nStyleStart = rFib.fcStshf;
+ pStStrm->Seek( nStyleStart );
+ */
+ USHORT i;
+ for( i=0; i<cstd; i++ ){
+ short nSkip;
+ SwWW8StyInf* pSI = &pIo->pCollA[i];
+
+ pSI->nFilePos = pStStrm->Tell(); // merke FilePos
+ WW8_STD* pStd = Read1Style( nSkip, 0, 0 ); // read STD
+ pSI->bValid = ( 0 != pStd );
+ if( pSI->bValid
+ && !(pStd->sgc == 2 && ( pIo->nIniFlags & WW8FL_NO_ZSTYLES ) ) ){
+ pSI->nBase = pStd->istdBase; // merke Basis
+ pSI->bColl = ( pStd->sgc == 1 ); // Para-Style
+ pSI->bValid = TRUE;
+ }
+ else
+ memset( &pSI , 0, sizeof( &pSI ) );
+
+ delete pStd;
+ pStStrm->SeekRel( nSkip ); // ueberlese Namen und Sprms
+ }
+}
+
+void WW8RStyle::Import()
+{
+ pIo->pDfltTxtFmtColl = pIo->rDoc.GetDfltTxtFmtColl();
+ pIo->pStandardFmtColl = pIo->rDoc.GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+
+ if( pIo->nIniFlags & WW8FL_NO_STYLES )
+ return;
+
+ ScanStyles(); // Scanne Based On
+
+ USHORT i;
+ for( i=0; i<cstd; i++ ) // Styles importieren
+ if( pIo->pCollA[i].bValid )
+ Import1Style( i );
+
+ for( i=0; i<cstd; i++ )
+ { // Follow einstellen
+ SwWW8StyInf* pi = &pIo->pCollA[i];
+ USHORT j = pi->nFollow;
+ if( j < cstd )
+ {
+ SwWW8StyInf* pj = &pIo->pCollA[j];
+ if ( j != i // sinnvoller Index ?
+ && pi->pFmt // Format ok ?
+ && pj->pFmt // Derived-Format ok ?
+ && pi->bColl // geht nur bei Absatz-Vorlagen (WW)
+ && pj->bColl ){ // beides gleicher Typ ?
+ ( (SwTxtFmtColl*)pi->pFmt )->SetNextTxtFmtColl(
+ *(SwTxtFmtColl*)pj->pFmt ); // ok, eintragen
+ }
+ }
+ }
+// Die Sonderbehandlung zur Setzen der
+// Default-Zeichenvorlage "Absatz-Standardschriftart" ( Style-ID 65 ) fehlt
+// Sie ist aber defaultmaessig leer ( WW6 dt und US ) und von der
+// WW-UI nicht zu veraendern, so dass das nicht stoert.
+// Der Mechanismus waere folgender:
+// if( bNew ) rDoc.SetDefault( pDefCharFmt->GetAttrSet() );
+//
+ // fuer z.B. Tabellen wird ein immer gueltiger Std-Style gebraucht
+
+ if( pIo->pCollA[0].pFmt && pIo->pCollA[0].bColl && pIo->pCollA[0].bValid )
+ pIo->pDfltTxtFmtColl = (SwTxtFmtColl*)pIo->pCollA[0].pFmt;
+ else
+ pIo->pDfltTxtFmtColl = pIo->rDoc.GetDfltTxtFmtColl();
+
+
+ // set Hyphenation flag on BASIC para-style
+ if( pIo->bNew
+ && pIo->pWDop->fAutoHyphen
+ && pIo->pStandardFmtColl
+ && SFX_ITEM_SET != pIo->pStandardFmtColl->GetItemState(
+ RES_PARATR_HYPHENZONE, FALSE ) )
+ {
+ SvxHyphenZoneItem aAttr( TRUE );
+ aAttr.GetMinLead() = 2;
+ aAttr.GetMinTrail() = 2;
+ aAttr.GetMaxHyphens() = 0;
+
+ pIo->pStandardFmtColl->SetAttr( aAttr );
+ }
+
+ // wir sind jetzt nicht mehr beim Style einlesen:
+ pIo->pAktColl = 0;
+}
+
+
+//-----------------------------------------
+// Document Info
+//-----------------------------------------
+
+// ReadDocInfo() liegt hier und nicht nicht in wwpar.cxx::LoadDoc1(),
+// da hier das noetige sfxcore.hxx bereits includet ist.
+
+void SwWW8ImplReader::ReadDocInfo()
+{
+ if( pStg )
+ {
+ SfxDocumentInfo* pNeu;
+ if( rDoc.GetpInfo() ) // soo ein Umstand......
+ pNeu = new SfxDocumentInfo( *rDoc.GetpInfo() );
+ else
+ pNeu = new SfxDocumentInfo();
+
+ pNeu->LoadPropertySet( pStg ); // DocInfo laden
+ rDoc.SetInfo( *pNeu );
+ delete( pNeu );
+ }
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8par2.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.80 2000/09/18 16:05:00 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.79 2000/08/17 13:49:28 khz
+ #77316# set Default Char Format if no Base Format known
+
+ Revision 1.78 2000/07/28 15:37:27 khz
+ #73796# don't delete NumRule from Attr but set it into pDoc
+
+ Revision 1.77 2000/07/27 10:21:36 khz
+ #73796# stop ANList when opening next cell in a row and !bAktAND_fNumberAcross
+
+ Revision 1.76 2000/07/25 15:17:45 khz
+ #76811# read/write AutoHyphenation flag from/into Document Properties
+
+ Revision 1.75 2000/07/24 12:56:38 jp
+ Bug #76561#: convert Bulletchar to unicode
+
+ Revision 1.74 2000/07/11 11:39:06 khz
+ #76673# prepare implementation of sprmTDelete and sprmTInsert
+
+ Revision 1.73 2000/07/11 11:30:55 khz
+ #76673# prepare implementation of sprmTDelete and sprmTInsert
+
+ Revision 1.72 2000/06/08 16:12:55 khz
+ Piece table optimization only when piece table exists ;-)
+
+ Revision 1.71 2000/05/31 12:23:09 khz
+ Changes for Unicode
+
+ Revision 1.70 2000/05/25 08:06:48 khz
+ Piece Table optimization, Unicode changes, Bugfixes
+
+ Revision 1.69 2000/05/18 10:58:59 jp
+ Changes for Unicode
+
+ Revision 1.68 2000/05/16 12:13:04 jp
+ ASS_FALSE define removed
+
+ Revision 1.67 2000/05/16 11:06:21 khz
+ Unicode code-conversion
+
+ Revision 1.66 2000/05/04 07:40:47 khz
+ Task #75379# use new Save() and Restore()
+
+ Revision 1.65 2000/04/17 12:01:32 khz
+ Task #74837# prevent from breaking table (in Apo) when Apo-flag is missing
+
+*************************************************************************/
+
+
+
+
diff --git a/sw/source/filter/ww8/ww8par2.hxx b/sw/source/filter/ww8/ww8par2.hxx
new file mode 100644
index 000000000000..542d2e093bdf
--- /dev/null
+++ b/sw/source/filter/ww8/ww8par2.hxx
@@ -0,0 +1,371 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8par2.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WW8PAR2_HXX
+#define _WW8PAR2_HXX
+
+#ifndef SWTYPES_HXX
+ #include "swtypes.hxx" // enum RndStdIds
+#endif
+
+
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+
+class SwCharFmt;
+
+#ifndef WW8PAR_HXX
+#include <ww8par.hxx> // WW8_BRC5
+#endif
+
+#ifndef WW8SCAN_HXX
+#include <ww8scan.hxx> // class WW8Style
+#endif
+
+class WW8RStyle;
+
+struct WW8FlyPara
+{ // WinWord-Attribute
+ // Achtung: *Nicht* umsortieren, da Teile mit
+ // memcmp verglichen werden
+ BOOL bVer67;
+ INT16 nSp26, nSp27; // rohe Position
+ INT16 nSp45, nSp28; // Breite / Hoehe
+ INT16 nSp48, nSp49; // Raender
+ BYTE nSp29; // rohe Bindung + Alignment
+ BYTE nSp37; // Wrap-Mode ( 1 / 2; 0 = no Apo ? )
+ WW8_BRC5 brc; // Umrandung Top, Left, Bottom, Right, Between
+ BOOL bBorderLines; // Umrandungslinien
+ BOOL bBorder; // Umrandungs-/Schatten-Struct vorhanden
+ BOOL bDropCap; // Rahmen als DropCap
+ BOOL bGrafApo; // TRUE: Dieser Rahmen dient allein dazu, die
+ // enthaltene Grafik anders als zeichengebunden
+ // zu positionieren
+
+ WW8FlyPara( BOOL bIsVer67, const WW8FlyPara* pSrc = 0 );
+ int operator == ( const WW8FlyPara& rSrc ) const;
+ BOOL Read( BYTE* pSprm29, WW8PLCFx_Cp_FKP* pPap );
+ BOOL ReadFull( BYTE* pSprm29, SwWW8ImplReader* pIo );
+ BOOL Read( BYTE* pSprm29, WW8RStyle* pStyle );
+};
+
+struct WW8SwFlyPara
+{
+ SwFrmFmt* pFlyFmt;
+
+ // 1. Teil: daraus abgeleitete Sw-Attribute
+ INT16 nXPos, nYPos; // Position
+ INT16 nLeMgn, nRiMgn; // Raender
+ INT16 nUpMgn, nLoMgn; // Raender
+ INT16 nWidth, nHeight; // Groesse
+ INT16 nNettoWidth;
+ INT16 nInnerMgn; // Rand innen
+
+ SwFrmSize eHeightFix; // Hoehe Fix oder Min
+ RndStdIds eAnchor; // Bindung
+ SwRelationOrient eHRel; // Seite oder Seitenrand
+ SwRelationOrient eVRel; // Seite oder Seitenrand
+ SwVertOrient eVAlign; // Oben, unten, mittig
+ SwHoriOrient eHAlign; // links, rechts, mittig
+ SwSurround eSurround; // Wrap-Mode
+
+ BYTE nXBind, nYBind; // relativ zu was gebunden
+
+ // 2.Teil: sich waehrend des Einlesens ergebende AEnderungen
+ long nNewNettoWidth;
+ SwPosition* pMainTextPos; // um nach Apo in Haupttext zurueckzukehren
+ USHORT nLineSpace; // LineSpace in tw fuer Graf-Apos
+ BOOL bAutoWidth;
+ BOOL bToggelPos;
+
+
+ WW8SwFlyPara( SwPaM& rPaM, SwWW8ImplReader& rIo, WW8FlyPara& rWW,
+ short nPgTop,
+ short nPgLeft,
+ short nPgWidth, INT32 nIniFlyDx, INT32 nIniFlyDy );
+
+ void BoxUpWidth( long nWidth );
+ const SwPosition* GetMainTextPos() const // Fuer PageDesc aus Apo
+ { return pMainTextPos; };
+};
+
+
+class SwWW8StyInf
+{
+ String sWWStyleName;
+ USHORT nWWStyleId;
+public:
+ SwFmt* pFmt;
+ WW8FlyPara* pWWFly;
+ SwNumRule* pOutlineNumrule;
+ long nFilePos;
+ short nLeftParaMgn;
+ short nTxtFirstLineOfst;
+ USHORT nBase;
+ USHORT nFollow;
+ USHORT nLFOIndex;
+ rtl_TextEncoding eFontSrcCharSet; // rtl_TextEncoding fuer den Font
+ BYTE nListLevel;
+ BYTE nOutlineLevel; // falls Gliederungs-Style
+ BYTE n81Flags; // Fuer Bold, Italic, ...
+ BOOL bValid :1; // leer oder Valid
+ BOOL bImported :1; // fuers rekursive Importieren
+ BOOL bColl :1; // TRUE -> pFmt ist SwTxtFmtColl
+ BOOL bImportSkipped :1; // nur TRUE bei !bNewDoc && vorh. Style
+ BOOL bHasStyNumRule :1; // TRUE -> Benannter NumRule in Style
+
+ SwWW8StyInf() :
+ sWWStyleName( aEmptyStr ),
+ nWWStyleId( 0 ),
+ pFmt( 0 ),
+ pWWFly( 0 ),
+ pOutlineNumrule( 0 ),
+ nFilePos( 0 ),
+ nLeftParaMgn( 0 ),
+ nTxtFirstLineOfst( 0 ),
+ nBase( 0 ),
+ nFollow( 0 ),
+ nLFOIndex( USHRT_MAX ),
+ eFontSrcCharSet( 0 ),
+ nListLevel( nWW8MaxListLevel ),
+ nOutlineLevel( MAXLEVEL ),
+ n81Flags( 0 ),
+ bValid( FALSE ),
+ bImported( FALSE ),
+ bColl( FALSE ),
+ bImportSkipped( FALSE ),
+ bHasStyNumRule( FALSE )
+ {}
+
+ ~SwWW8StyInf()
+ {
+ delete( pWWFly );
+ }
+
+ void SetOrgWWIdent( const String& rName, const USHORT nId )
+ {
+ sWWStyleName = rName;
+ nWWStyleId = nId;
+ }
+ const USHORT GetWWStyleId() const { return nWWStyleId; }
+ const String& GetOrgWWName() const
+ {
+ return sWWStyleName;
+ }
+};
+
+
+class WW8RStyle: public WW8Style
+{
+friend class SwWW8ImplReader;
+ SwWW8ImplReader* pIo; // Parser-Klasse
+ SvStream* pStStrm; // Input-File
+
+ SwNumRule* pStyRule; // Bullets und Aufzaehlungen in Styles
+
+ BYTE* pParaSprms; // alle ParaSprms des UPX falls UPX.Papx
+ short nSprmsLen; // Laenge davon
+
+ BYTE nWwNumLevel; // fuer Bullets und Aufzaehlungen in Styles
+
+ BOOL bFontChanged : 1; // Fuer Simulation Default-Font
+ BOOL bFSizeChanged : 1; // Fuer Simulation Default-FontSize
+ BOOL bWidowsChanged : 1; // Fuer Simulation Default-Widows / Orphans
+
+ void ImportSprms( long nPosFc, short nLen, BOOL bPap );
+ void ImportGrupx( short nLen, BOOL bPara );
+ short ImportUPX( short nLen, BOOL bPAP );
+
+
+ SwCharFmt* SearchCharFmt( const String& rName );
+ SwCharFmt* MakeNewCharFmt( WW8_STD* pStd, const String& rName );
+ SwCharFmt* MakeOrGetCharFmt( BOOL* pbStyExist, WW8_STD* pStd, const String& rName );
+
+ SwTxtFmtColl* SearchFmtColl( const String& rName );
+ SwTxtFmtColl* MakeNewFmtColl( WW8_STD* pStd, const String& rName );
+ SwTxtFmtColl* MakeOrGetFmtColl( BOOL* pbStyExist, WW8_STD* pStd, const String& rName );
+
+ void Set1StyleDefaults();
+ void Import1Style( USHORT nNr );
+ void ScanStyles();
+public:
+ WW8RStyle( WW8Fib& rFib, SwWW8ImplReader* pI );
+ void Import();
+ void RegisterNumFmts();
+ BYTE* HasParaSprm( USHORT nId ) const;
+};
+
+class WW8FlySet: public SfxItemSet
+{
+public:
+ WW8FlySet( SwWW8ImplReader& rReader, /*const*/ WW8FlyPara* pFW,
+ /*const*/ WW8SwFlyPara* pFS, BOOL bGraf );
+ WW8FlySet( SwWW8ImplReader& rReader, const SwPaM* pPaM,
+ const WW8_PIC& rPic, long nWidth, long nHeight );
+};
+
+enum WW8LvlType { WW8_None, WW8_Outline, WW8_Numbering, WW8_Sequence, WW8_Pause };
+
+inline WW8LvlType GetNumType( BYTE nWwLevelNo )
+{
+ WW8LvlType nRet = WW8_None;
+ if( nWwLevelNo == 12 )
+ nRet = WW8_Pause;
+ else if( nWwLevelNo == 10 )
+ nRet = WW8_Numbering;
+ else if( nWwLevelNo == 11 )
+ nRet = WW8_Sequence;
+ else if( nWwLevelNo > 0 && nWwLevelNo <= 9 )
+ nRet = WW8_Outline;
+ return nRet;
+}
+
+#define STI_USER 0xffe
+
+/*************************************************************************
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8par2.hxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.22 2000/09/18 16:05:00 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.21 2000/05/16 12:03:56 jp
+ Changes for unicode
+
+ Revision 1.20 2000/05/16 11:14:53 khz
+ Unicode code-conversion
+
+ Revision 1.19 2000/04/12 11:06:17 khz
+ Task #74260# import FLY_PAGE-frames in Header/Footer as FLY_AT_CNTNT
+
+ Revision 1.18 1999/12/09 16:46:32 khz
+ Task #69180# allow Tabs if right of 1st-line-start OR right of paragraph margin
+
+ Revision 1.17 1999/12/09 14:52:30 khz
+ Task #67145# Don't set NumRule if OutlineNumrule is set on Style
+
+ Revision 1.16 1999/12/01 14:35:48 khz
+ Task #68488# Graphics in Sections with more than one Column
+
+ Revision 1.15 1999/11/05 17:04:13 khz
+ import new TOX_CONTENT and TOX_INDEX features (4)
+
+ Revision 1.14 1999/11/05 10:22:15 khz
+ import new TOX_CONTENT and TOX_INDEX features (3)
+
+ Revision 1.13 1999/11/02 15:59:42 khz
+ import new TOX_CONTENT and TOX_INDEX features (2)
+
+ Revision 1.12 1999/04/28 21:03:30 KHZ
+ Task #65245# Breite eines Rahmens bei WW \'automatisch\' muss PRTAREA sein
+
+
+ Rev 1.11 28 Apr 1999 23:03:30 KHZ
+ Task #65245# Breite eines Rahmens bei WW 'automatisch' muss PRTAREA sein
+
+ Rev 1.10 28 Jan 1999 17:10:42 KHZ
+ Task #60715# in SdrTextObj verankerte Grafiken und OLEs (4)
+
+ Rev 1.9 25 Jan 1999 10:24:58 KHZ
+ Task #60715# in Textobjekt verankerte Grafik als Grafik importieren
+
+ Rev 1.8 08 Dec 1998 18:26:52 KHZ
+ Task #59580# TOC-Import
+
+ Rev 1.7 04 Dec 1998 17:56:40 JP
+ Bug #59619#: falls ein Rahmen eine Umrandung hat, darf der Absatz keine bekommen
+
+ Rev 1.6 19 Nov 1998 22:34:46 JP
+ Task #59476#: Umstellungen fuers korrekte lesen von Umrandungen/Schatten
+
+ Rev 1.5 15 Sep 1998 12:58:24 HJS
+ '#56161#
+
+ Rev 1.4 28 Jul 1998 11:02:06 KHZ
+ Task #52607# nummerierte Listen (Teil 1)
+
+ Rev 1.3 14 Jul 1998 16:33:04 KHZ
+ Task #52607# Absatz- und Zeichen-Styles
+
+ Rev 1.2 30 Jun 1998 21:33:24 KHZ
+ Header/Footer/Footnotes weitgehend ok
+
+ Rev 1.1 16 Jun 1998 18:34:56 KHZ
+ DaSi-Stand
+
+ Rev 1.0 16 Jun 1998 10:57:16 KHZ
+ Initial revision.
+
+*************************************************************************/
+#endif
+
+
diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx
new file mode 100644
index 000000000000..28de294b6ee6
--- /dev/null
+++ b/sw/source/filter/ww8/ww8par3.cxx
@@ -0,0 +1,2191 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8par3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_FORM_XFORMSSUPPLIER_HPP_
+#include <com/sun/star/form/XFormsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORM_HPP_
+#include <com/sun/star/form/XForm.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XIMAGEPRODUCERSUPPLIER_HPP_
+#include <com/sun/star/form/XImageProducerSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCONTROLLER_HPP_
+#include <com/sun/star/form/XFormController.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCOMPONENT_HPP_
+#include <com/sun/star/form/XFormComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCONTROLLERLISTENER_HPP_
+#include <com/sun/star/form/XFormControllerListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XSTORABLE_HPP_
+#include <com/sun/star/frame/XStorable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XCONNECTABLESHAPE_HPP_
+#include <com/sun/star/drawing/XConnectableShape.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XCONNECTORSHAPE_HPP_
+#include <com/sun/star/drawing/XConnectorShape.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XSHAPE_HPP_
+#include <com/sun/star/drawing/XShape.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XCONTROLSHAPE_HPP_
+#include <com/sun/star/drawing/XControlShape.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XSHAPEALIGNER_HPP_
+#include <com/sun/star/drawing/XShapeAligner.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XSHAPEGROUP_HPP_
+#include <com/sun/star/drawing/XShapeGroup.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XSHAPEDESCRIPTOR_HPP_
+#include <com/sun/star/drawing/XShapeDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XUNIVERSALSHAPEDESCRIPTOR_HPP_
+#include <com/sun/star/drawing/XUniversalShapeDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XSHAPEMIRROR_HPP_
+#include <com/sun/star/drawing/XShapeMirror.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XSHAPEARRANGER_HPP_
+#include <com/sun/star/drawing/XShapeArranger.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XDRAWPAGE_HPP_
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#endif
+//#ifndef _COM_SUN_STAR_DRAWING_XSHAPEBINDER_HPP_
+//#include <com/sun/star/drawing/XShapeBinder.hpp>
+//#endif
+#ifndef _COM_SUN_STAR_DRAWING_XSHAPES_HPP_
+#include <com/sun/star/drawing/XShapes.hpp>
+#endif
+//#ifndef _COM_SUN_STAR_DRAWING_XSHAPEGROUPER_HPP_
+//#include <com/sun/star/drawing/XShapeGrouper.hpp>
+//#endif
+//#ifndef _COM_SUN_STAR_DRAWING_XSHAPECOMBINER_HPP_
+//#include <com/sun/star/drawing/XShapeCombiner.hpp>
+//#endif
+#ifndef _COM_SUN_STAR_DRAWING_XDRAWPAGESUPPLIER_HPP_
+#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSINGLESERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+#endif
+//#ifndef _COM_SUN_STAR_LOADER_XIMPLEMENTATIONLOADER_HPP_
+//#include <com/sun/star/loader/XImplementationLoader.hpp>
+//#endif
+//#ifndef _COM_SUN_STAR_LOADER_CANNOTACTIVATEFACTORYEXCEPTION_HPP_
+//#include <com/sun/star/loader/CannotActivateFactoryException.hpp>
+//#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXCONTAINER_HPP_
+#include <com/sun/star/container/XIndexContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_VERTORIENTATION_HPP_
+#include <com/sun/star/text/VertOrientation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_TEXTCONTENTANCHORTYPE_HPP_
+#include <com/sun/star/text/TextContentAnchorType.hpp>
+#endif
+
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+
+#ifndef _SVX_FONTITEM_HXX
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+
+
+#ifndef _SVX_FHGTITEM_HXX
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX
+#include <svx/postitem.hxx>
+#endif
+
+#ifndef _SV_SVAPP_HXX
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SV_WRKWIN_HXX
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SV_OUTDEV_HXX
+#include <vcl/outdev.hxx>
+#endif
+
+/*
+#ifndef _TOOLKIT_UNOIFACE_HXX
+#include <toolkit/unoiface.hxx>
+#endif
+*/
+
+#ifndef _TOOLKIT_UNOHLP_HXX
+#include <toolkit/helper/vclunohelper.hxx>
+#endif
+
+#ifndef _ERRHDL_HXX //autogen
+#include <errhdl.hxx>
+#endif
+#ifndef _UNOOBJ_HXX //autogen
+#include <unoobj.hxx>
+#endif
+#ifndef _DOC_HXX //autogen
+#include <doc.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _SWDOCSH_HXX //autogen
+#include <docsh.hxx>
+#endif
+#ifndef _NUMRULE_HXX //autogen
+#include <numrule.hxx>
+#endif
+#ifndef _PARATR_HXX //autogen
+#include <paratr.hxx>
+#endif
+#ifndef _CHARATR_HXX //autogen
+#include <charatr.hxx>
+#endif
+#ifndef _CHARFMT_HXX //autogen
+#include <charfmt.hxx>
+#endif
+#ifndef _NDTXT_HXX //autogen
+#include <ndtxt.hxx>
+#endif
+
+#ifndef _WW8PAR_HXX
+#include <ww8par.hxx>
+#endif
+#ifndef _WW8PAR2_HXX
+#include <ww8par2.hxx> // wg. Listen-Attributen in Styles
+#endif
+
+#ifndef _MSOCXIMP_HXX
+#include <msocximp.hxx>
+#endif
+
+#ifdef __WW8_NEEDS_COPY
+void WW8PicShadowToReal( WW8_PIC_SHADOW* pPicS, WW8_PIC* pPic );
+#endif // defined __WW8_NEEDS_COPY
+
+using namespace ::com::sun::star;
+
+
+//-----------------------------------------
+// UNO-Controls
+//-----------------------------------------
+
+#define WW8_DFLT_EDIT_WIDTH 2750
+#define WW8_DFLT_EDIT_HEIGHT 500
+#define WW8_DFLT_CHECKBOX_WIDTH 320
+#define WW8_DFLT_CHECKBOX_HEIGHT 320
+
+static sal_Char sWW8_form[] = "WW-Standard";
+static sal_Char sWW8_edit[] = "TextBox";
+static sal_Char sWW8_checkbox[] = "CheckBox";
+
+
+
+uno::Reference< drawing::XShape> SwWW8ImplReader::InsertControl(
+ //const uno::Reference< form::XFormComponent > & rFComp,
+ const uno::Reference< form::XFormComponent > & rFComp,
+ const awt::Size& rSize,
+ BOOL bFloatingCtrl )
+{
+ return pFormImpl->InsertControl( rFComp, rSize, bFloatingCtrl );
+}
+
+
+void SwWW8ImplReader::BuildInputField( sal_uInt16 nType, const String& rParam )
+{
+ if( nIniFlags & WW8FL_NO_VCCONTROLS )
+ {
+#ifdef DEBUG
+ rDoc.Insert( *pPaM, sal_Unicode ('#') );
+ static long l;
+ l++;
+#endif
+ return;
+ }
+
+ if( !pDrawModel ) // MIB: Braucht man das?
+ GrafikCtor();
+ if( !pFormImpl )
+ pFormImpl = new SwImportControls(rDoc.GetDocShell(),pPaM);
+
+ const uno::Reference< lang::XMultiServiceFactory > & rServiceFactory =
+ pFormImpl->GetServiceFactory();
+ if(!rServiceFactory.is())
+ return;
+
+ String sType;
+ switch( (SwWw8ControlType)nType )
+ {
+ case WW8_CT_CHECKBOX:
+ sType.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "CheckBox" ));
+ break;
+// case WW8_CT_EDIT:
+ default:
+ sType.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "TextField" ));
+ // see change in ../html/htmlform.cxx
+ break; // as of 1999/11/25 11:20:16 made by O.Specht
+ }
+
+ String sServiceName( WW8_ASCII2STR( "com.sun.star.form.component." ));
+ sServiceName.Append( sType );
+ uno::Reference< uno::XInterface > xCreate = rServiceFactory->createInstance( sServiceName );
+ if( !xCreate.is() )
+ return;
+
+ uno::Reference< form::XFormComponent > xFComp( xCreate, uno::UNO_QUERY );
+ if( !xFComp.is() )
+ return;
+
+ com::sun::star::awt::Size aSz;
+ String sName;
+ sal_uInt16 nControl;
+ switch( (SwWw8ControlType)nType )
+ {
+ case WW8_CT_EDIT:
+ aSz.Width = WW8_DFLT_EDIT_WIDTH; // etwas 20 Zeichen
+ aSz.Height = WW8_DFLT_EDIT_HEIGHT;
+ sName.AssignAscii( sWW8_edit );
+ nControl = pFormImpl->GetEditNum();
+ break;
+
+ case WW8_CT_CHECKBOX:
+ aSz.Width = WW8_DFLT_CHECKBOX_WIDTH;
+ aSz.Height = WW8_DFLT_CHECKBOX_HEIGHT;
+ sName.AssignAscii( sWW8_checkbox );
+ nControl = pFormImpl->GetCheckboxNum();
+ break;
+ }
+
+ uno::Reference< beans::XPropertySet > xPropSet( xCreate, uno::UNO_QUERY );
+
+ String sTmp( nControl );
+ UniString sWTmp( sTmp );
+ sName += sWTmp;
+ uno::Any aTmp;
+ rtl::OUString uTmp(sName);
+ aTmp <<= uTmp;
+ xPropSet->setPropertyValue( WW8_ASCII2STR( "Name" ), aTmp );
+
+ InsertControl( xFComp, aSz );
+}
+
+//cmc, OCX i.e. word 97 form controls
+eF_ResT SwWW8ImplReader::Read_F_OCX( WW8FieldDesc*, String& rStr )
+{
+ if( bObj && nPicLocFc )
+ nObjLocFc = nPicLocFc;
+ bEmbeddObj = TRUE;
+ return F_TEXT;
+}
+
+eF_ResT SwWW8ImplReader::Read_F_FormTextBox( WW8FieldDesc* pF, String& rStr )
+{
+ if (0x01 == rStr.GetChar( pF->nLCode-1 ))
+ {
+ WW8FormulaEditBox aFormula(*this);
+ if (ImportFormulaControl(aFormula,pF->nSCode+pF->nLCode-1, WW8_CT_EDIT))
+ {
+ if( !pFormImpl )
+ pFormImpl = new SwImportControls(rDoc.GetDocShell(),pPaM);
+ if (pFormImpl->InsertFormula(aFormula))
+ return F_OK;
+ }
+ }
+ ASSERT(0,"New Formula Code Failed!\n");
+ BuildInputField( WW8_CT_EDIT, rStr );
+ return F_OK;
+
+}
+
+eF_ResT SwWW8ImplReader::Read_F_FormCheckBox( WW8FieldDesc* pF, String& rStr )
+{
+ if (0x01 == rStr.GetChar( pF->nLCode-1 ))
+ {
+ WW8FormulaCheckBox aFormula(*this);
+ if (ImportFormulaControl(aFormula,pF->nSCode+pF->nLCode-1,
+ WW8_CT_CHECKBOX))
+ {
+ if( !pFormImpl )
+ pFormImpl = new SwImportControls(rDoc.GetDocShell(),pPaM);
+ if (pFormImpl->InsertFormula(aFormula))
+ return F_OK;
+ }
+ }
+ ASSERT(!this,"New Formula Code Failed!\n");
+ BuildInputField( WW8_CT_CHECKBOX, rStr );
+ return F_OK;
+}
+
+eF_ResT SwWW8ImplReader::Read_F_FormListBox( WW8FieldDesc*, String& rStr )
+{
+ return F_TAGIGN;
+}
+
+
+void SwWW8ImplReader::DeleteFormImpl()
+{
+ delete pFormImpl;
+ pFormImpl = 0;
+}
+
+//----------------------------------------------------------------------------
+// WW8ListManager oeffentliche Methoden stehen ganz am Ende
+//------------------------- ============ --------------- ============ --------
+
+
+
+// Hilfs-Deklarationen ///////////////////////////////////////////////////////
+//
+// Style Id's for each level
+typedef sal_uInt16 WW8aIdSty[ nWW8MaxListLevel];
+// Zeichenattribute aus GrpprlChpx
+typedef SfxItemSet* WW8aISet[nWW8MaxListLevel];
+// Zeichen Style Pointer
+typedef SwCharFmt* WW8aCFmt[ nWW8MaxListLevel];
+
+struct WW8LST // nur DIE Eintraege, die WIR benoetigen!
+{
+ WW8aIdSty aIdSty; // Style Id's for each level,
+ // nIStDNil if no style linked
+ sal_uInt32 nIdLst; // Unique List ID
+ sal_uInt32 nTplC; // Unique template code - Was ist das bloss?
+ sal_Bool bSimpleList:1; // Flag: Liste hat nur EINEN Level
+ sal_Bool bRestartHdn:1; // WW6-Kompatibilitaets-Flag:
+ // true if the list should start numbering over
+}; // at the beginning of each section
+
+struct WW8LFO // nur DIE Eintraege, die WIR benoetigen!
+{
+ SwNumRule* pNumRule; // Parent NumRule
+ sal_uInt32 nIdLst; // Unique List ID
+ sal_uInt8 nLfoLvl; // count of levels whose format is overridden
+ sal_Bool bSimpleList;
+};
+
+#define nIStDNil 0x0FFF // d.h. KEIN Style ist an den Level gelinkt
+#define nSizeOfLST 0x1C
+
+struct WW8LVL // nur DIE Eintraege, die WIR benoetigen!
+{
+ long nStartAt; // start at value for this value
+ long nV6DxaSpace;// Ver6-Compatible: min Space between Num anf ::com::sun::star::text::Paragraph
+ long nV6Indent; // Ver6-Compatible: Breite des Prefix Textes; ggfs. zur
+ // Definition d. Erstzl.einzug nutzen!
+ // Absatzattribute aus GrpprlPapx
+ sal_uInt16 nDxaLeft; // linker Einzug
+ short nDxaLeft1; // Erstzeilen-Einzug
+
+ sal_uInt8 nNFC; // number format code
+ sal_uInt8 aOfsNumsXCH[nWW8MaxListLevel];// Offset der Feldkodes im Num-X-String
+ sal_uInt8 nLenGrpprlChpx; // length, in bytes, of the LVL's grpprlChpx
+ sal_uInt8 nLenGrpprlPapx; // length, in bytes, of the LVL's grpprlPapx
+ sal_uInt8 nAlign: 2; // alignment (left, right, centered) of the number
+ sal_Bool bLegal: 1; // egal
+ sal_Bool bNoRest:1; // egal
+ sal_Bool bV6Prev:1; // Ver6-Compatible: number will include previous levels
+ sal_Bool bV6PrSp:1; // Ver6-Compatible: egal
+ sal_Bool bV6: 1; // falls sal_True, beachte die V6-Compatible Eintraege!
+ sal_uInt8 bDummy: 1; // (macht das Byte voll)
+
+};
+
+struct WW8LFOLVL
+{
+ long nStartAt; // start-at value if bFormat==false and bStartAt == true
+ // (if bFormat==true, the start-at is stored in the LVL)
+ sal_uInt8 nLevel; // the level to be overridden
+ // dieses Byte ist _absichtlich_ nicht in das folgende Byte hineingepackt !!
+ // (siehe Kommentar unten bei struct WW8LFOInfo)
+
+ sal_Bool bStartAt :1; // true if the start-at value is overridden
+ sal_Bool bFormat :1; // true if the formatting is overriden
+};
+
+
+
+// in den ListenInfos zu speichernde Daten ///////////////////////////////////
+//
+struct WW8LSTInfo // sortiert nach nIdLst (in WW8 verwendete Listen-Id)
+{
+ WW8aIdSty aIdSty; // Style Id's for each level
+ WW8aISet aItemSet; // Zeichenattribute aus GrpprlChpx
+ WW8aCFmt aCharFmt; // Zeichen Style Pointer
+
+ SwNumRule* pNumRule; // Zeiger auf entsprechende Listenvorlage im Writer
+ sal_uInt32 nIdLst; // WW8Id dieser Liste
+ sal_uInt16 nStreamPos; // Reihenfolge des Auftretens des LST im PLCF LST
+ // siehe auch "WW8ListManager::GetLSTByStreamPos()"
+ sal_Bool bSimpleList:1;// Flag, ob diese NumRule nur einen Level verwendet
+ sal_Bool bUsedInDoc :1;// Flag, ob diese NumRule im Doc verwendet wird,
+ // oder beim Reader-Ende geloescht werden sollte
+
+ // Hilfs Ctor, benoetigt innerhalb von WW8ListManager::GetLSTByListId()
+ WW8LSTInfo(sal_uInt32 nIdLst_): nIdLst( nIdLst_){}
+
+ // normaler Ctor
+ WW8LSTInfo(SwNumRule* pNumRule_, WW8LST& aLST, sal_uInt16 nStreamPos_):
+ nIdLst( aLST.nIdLst ),
+ nStreamPos( nStreamPos_ ),
+ pNumRule( pNumRule_ ),
+ bSimpleList(aLST.bSimpleList),
+ bUsedInDoc( 0 )
+ {
+ memcpy( aIdSty, aLST.aIdSty, sizeof( aIdSty ));
+ memset(&aItemSet, 0, sizeof( aItemSet ));
+ memset(&aCharFmt, 0, sizeof( aCharFmt ));
+ }
+
+ sal_Bool operator==( const WW8LSTInfo& rEntry ) const
+ { return nIdLst == rEntry.nIdLst; }
+ sal_Bool operator<( const WW8LSTInfo& rEntry ) const
+ { return nIdLst < rEntry.nIdLst; }
+};
+
+SV_IMPL_OP_PTRARR_SORT(WW8LSTInfos, WW8LSTInfo_Ptr)
+
+
+// in den ListenFormatOverrideInfos zu speichernde Daten /////////////////////
+//
+struct WW8LFOInfo // unsortiert, d.h. Reihenfolge genau wie im WW8 Stream
+{
+ SwNumRule* pNumRule; // Zeiger auf entsprechende Listenvorlage im Writer
+ // entweder: Liste in LSTInfos oder eigene Liste
+ // (im Ctor erstmal die aus den LSTInfos merken)
+
+ sal_uInt32 nIdLst; // WW8-Id der betreffenden Liste
+ sal_uInt8 nLfoLvl; // count of levels whose format is overridden
+ // Ja, ich natuerlich koennten wir nLfoLvl (mittels :4) noch in das folgende
+ // Byte mit hineinpacken, doch waere das eine ziemliche Fehlerquelle,
+ // an dem Tag, wo MS ihr Listenformat auf mehr als 15 Level aufbohren.
+
+ sal_Bool bOverride :1;// Flag, ob die NumRule nicht in pLSTInfos steht,
+ // sondern fuer pLFOInfos NEU angelegt wurde
+ sal_Bool bSimpleList:1;// Flag, ob diese NumRule nur einen Level verwendet
+ sal_Bool bUsedInDoc :1;// Flag, ob diese NumRule im Doc verwendet wird,
+ // oder beim Reader-Ende geloescht werden sollte
+ sal_Bool bLSTbUIDSet :1;// Flag, ob bUsedInDoc in pLSTInfos gesetzt wurde,
+ // und nicht nochmals gesetzt zu werden braucht
+ WW8LFOInfo( const WW8LFO& rLFO ):
+ nIdLst( rLFO.nIdLst ),
+ pNumRule( rLFO.pNumRule ),// hier bloss die Parent NumRule
+ nLfoLvl( rLFO.nLfoLvl ),
+ bOverride( rLFO.nLfoLvl ? sal_True : sal_False ),
+ bSimpleList(rLFO.bSimpleList ),
+ bUsedInDoc( 0 ),
+ bLSTbUIDSet( 0 ){}
+};
+
+SV_IMPL_PTRARR( WW8LFOInfos, WW8LFOInfo_Ptr );
+
+
+// Hilfs-Methoden ////////////////////////////////////////////////////////////
+//
+
+// finden der Sprm-Parameter-Daten, falls Sprm im Grpprl enthalten
+sal_uInt8* WW8ListManager::GrpprlHasSprm(sal_uInt16 nId, sal_uInt8& rSprms, sal_uInt8 nLen)
+{
+ sal_uInt8* pSprms = &rSprms;
+ for(sal_uInt8 i=0; i<nLen; )
+ {
+ sal_uInt8 nDelta;
+ sal_uInt16 nAktId = WW8GetSprmId(rFib.nVersion, pSprms, &nDelta );
+ if( nAktId == nId ) // Sprm gefunden
+ return pSprms + 1 + nDelta + WW8SprmDataOfs( nId );
+ // gib Zeiger auf Daten
+ short x = WW8GetSprmSizeBrutto(rFib.nVersion, pSprms, &nAktId );
+ i += x;
+ pSprms += x;
+ }
+ return 0; // Sprm nicht gefunden
+}
+
+// Zugriff ueber die List-Id des LST Eintrags
+WW8LSTInfo* WW8ListManager::GetLSTByListId( sal_uInt32 nIdLst ) const
+{
+ WW8LSTInfo aEntry( nIdLst );
+ sal_uInt16 nPos;
+ if( !pLSTInfos->Seek_Entry( &aEntry, &nPos ) ) return 0;
+ return pLSTInfos->GetObject( nPos );
+}
+
+// Zugriff ueber Reihenfolge der LST Eintraege im PLCF LST (Null basiert)
+WW8LSTInfo* WW8ListManager::GetLSTByStreamPos( sal_uInt16 nStreamPos ) const
+{
+ if( !pLSTInfos ) return 0;
+ WW8LSTInfo* pEntry;
+ for(sal_uInt16 nPos = nLSTInfos; nPos; )
+ {
+ pEntry = pLSTInfos->GetObject( --nPos );
+ if( pEntry && ( pEntry->nStreamPos == nStreamPos )) return pEntry;
+ }
+ return 0;
+}
+
+sal_Bool WW8ListManager::ReadLVL( sal_uInt8 nLevel,
+ SwNumFmt& rNumFmt,
+ SfxItemSet*& rpItemSet,
+ sal_uInt16 nLevelStyle,
+ sal_Bool bSetStartNo )
+{
+ sal_uInt8 aBits1;
+ sal_uInt8 nUpperLevel = 0; // akt. Anzeigetiefe fuer den Writer
+ sal_uInt16 nStartNo = 0; // Start-Nr. fuer den Writer
+ SvxExtNumType eType; // Writer-Num-Typ
+ SvxAdjust eAdj; // Ausrichtung (Links/rechts/zent.)
+ sal_Unicode cBullet;
+ String aPrefix;
+ String aPostfix;
+ WW8LVL aLVL;
+ //
+ // 1. LVLF einlesen
+ //
+ memset(&aLVL, 0, sizeof( aLVL ));
+ rSt >> aLVL.nStartAt;
+ rSt >> aLVL.nNFC;
+ rSt >> aBits1;
+ if( 0 != rSt.GetError() ) return sal_False;
+ aLVL.nAlign = (aBits1 & 0x03);
+ if( aBits1 & 0x10 ) aLVL.bV6Prev = sal_True;
+ if( aBits1 & 0x20 ) aLVL.bV6PrSp = sal_True;
+ if( aBits1 & 0x40 ) aLVL.bV6 = sal_True;
+ sal_Bool bLVLOkB = sal_True;
+ for(sal_uInt8 nLevelB = 0; nLevelB < nWW8MaxListLevel; nLevelB++)
+ {
+ rSt >> aLVL.aOfsNumsXCH[ nLevelB ];
+ if( 0 != rSt.GetError() )
+ {
+ bLVLOkB = sal_False;
+ break;
+ }
+ if( !nUpperLevel && !aLVL.aOfsNumsXCH[ nLevelB ] )
+ {
+ nUpperLevel = nLevelB;
+ }
+ }
+ if( !bLVLOkB ) return sal_False;
+
+ // falls kein NULL als Terminierungs-Char kam,
+ // ist die Liste voller Indices, d.h. alle Plaetze sind besetzt,
+ // also sind alle Level anzuzeigen
+ if( !nUpperLevel )
+ nUpperLevel = nWW8MaxListLevel;
+
+
+ rSt.SeekRel( 1 );
+ rSt >> aLVL.nV6DxaSpace;
+ rSt >> aLVL.nV6Indent;
+ rSt >> aLVL.nLenGrpprlChpx;
+ rSt >> aLVL.nLenGrpprlPapx;
+ rSt.SeekRel( 2 );
+ if( 0 != rSt.GetError()) return sal_False;
+
+ //
+ // 2. ggfs. PAPx einlesen und nach Einzug-Werten suchen
+ //
+ if( aLVL.nLenGrpprlPapx )
+ {
+ sal_uInt8 aGrpprlPapx[ 255 ];
+ if(aLVL.nLenGrpprlPapx != rSt.Read(&aGrpprlPapx,
+ aLVL.nLenGrpprlPapx )) return sal_False;
+ // "sprmPDxaLeft" pap.dxaLeft;dxa;word;
+ sal_uInt8* pSprm;
+ if( (pSprm = GrpprlHasSprm(0x840F,aGrpprlPapx[0],
+ aLVL.nLenGrpprlPapx)) )
+ {
+ short nDxaLeft = SVBT16ToShort( pSprm );
+ aLVL.nDxaLeft = (0 < nDxaLeft)
+ ? (sal_uInt16)nDxaLeft
+ : (sal_uInt16)(-nDxaLeft);
+ }
+ // "sprmPDxaLeft1" pap.dxaLeft1;dxa;word;
+ if( (pSprm = GrpprlHasSprm(0x8411,aGrpprlPapx[0],
+ aLVL.nLenGrpprlPapx)) )
+ aLVL.nDxaLeft1 = SVBT16ToShort( pSprm );
+ }
+ //
+ // 3. ggfs. CHPx einlesen und
+ //
+ if( aLVL.nLenGrpprlChpx )
+ {
+ sal_uInt8 aGrpprlChpx[ 255 ];
+ memset(&aGrpprlChpx, 0, sizeof( aGrpprlChpx ));
+ if(aLVL.nLenGrpprlChpx != rSt.Read(&aGrpprlChpx,
+ aLVL.nLenGrpprlChpx)) return sal_False;
+ // neues ItemSet fuer die Zeichenattribute anlegen
+ rpItemSet = new SfxItemSet( rDoc.GetAttrPool(), RES_CHRATR_BEGIN,
+ RES_CHRATR_END - 1 );
+ // Reader-ItemSet-Pointer darauf zeigen lassen
+ rReader.SetAktItemSet( rpItemSet );
+ // Reader-Style auf den Style dieses Levels setzen
+ sal_uInt16 nOldColl = rReader.GetNAktColl();
+ sal_uInt16 nNewColl = nLevelStyle;
+ if( nIStDNil == nNewColl )
+ nNewColl = 0;
+ rReader.SetNAktColl( nNewColl );
+
+ // Nun den GrpprlChpx einfach durchnudeln: die Read_xy() Methoden
+ // in WW8PAR6.CXX rufen ganz normal ihr NewAttr() oder GetFmtAttr()
+ // und diese merken am besetzten Reader-ItemSet-Pointer, dass dieser
+ // spezielle ItemSet relevant ist - und nicht ein Stack oder Style!
+ short nLen = aLVL.nLenGrpprlChpx;
+ sal_uInt8* pSprms1 = &aGrpprlChpx[0];
+ while( 0 < nLen )
+ {
+ sal_uInt16 nL1 = rReader.ImportSprm( pSprms1, nLen );
+ nLen -= nL1;
+ pSprms1 += nL1;
+ }
+ // Reader-ItemSet-Pointer und Reader-Style zuruecksetzen
+ rReader.SetAktItemSet( 0 );
+ rReader.SetNAktColl( nOldColl );
+ }
+ //
+ // 4. den Nummerierungsstring einlesen: ergibt Prefix und Postfix
+ //
+ String sNumString( WW8Read_xstz(rSt, 0, FALSE) );
+
+ //
+ // 5. gelesene Werte in Writer Syntax umwandeln
+ //
+ if( 0 <= aLVL.nStartAt )
+ nStartNo = (sal_uInt16)aLVL.nStartAt;
+
+ switch( aLVL.nNFC )
+ {
+ case 0: eType = SVX_NUM_ARABIC; break;
+ case 1: eType = SVX_NUM_ROMAN_UPPER; break;
+ case 2: eType = SVX_NUM_ROMAN_LOWER; break;
+ case 3: eType = SVX_NUM_CHARS_UPPER_LETTER_N; break;
+ case 4: eType = SVX_NUM_CHARS_LOWER_LETTER_N; break;
+ case 5: eType = SVX_NUM_ARABIC; break; // eigentlich: ORDINAL
+ case 23: eType = SVX_NUM_CHAR_SPECIAL; break;
+ case 255: eType = SVX_NUM_NUMBER_NONE; break;
+ default: // nimm default
+ eType = SVX_NUM_ARABIC; break;
+ }
+
+ if( SVX_NUM_CHAR_SPECIAL == eType )
+ {
+ cBullet = sNumString.Len() ? sNumString.GetChar( 0 ) : 0xF0B7;
+
+ if( !cBullet ) // unsave control code?
+ cBullet = 0xF0B7;
+
+ aPrefix = aEmptyStr;
+ aPostfix = aEmptyStr;
+ }
+ else
+ {
+ if( 1 >= aLVL.aOfsNumsXCH[ 0 ] )
+ aPrefix = aEmptyStr;
+ else
+ aPrefix = sNumString.Copy( 1, aLVL.aOfsNumsXCH[ 0 ]-1 );
+
+ if( nUpperLevel && ( sNumString.Len() > aLVL.aOfsNumsXCH[ nUpperLevel-1 ] ) )
+ {
+ sNumString += String::CreateFromInt32(
+ aLVL.aOfsNumsXCH[ nUpperLevel-1 ] );
+ aPostfix = sNumString.Copy( 1 );
+ }
+ else
+ aPostfix.Erase();
+ }
+
+ switch( aLVL.nAlign )
+ {
+ case 0: eAdj = SVX_ADJUST_LEFT; break;
+ case 1: eAdj = SVX_ADJUST_CENTER; break;
+ case 2: eAdj = SVX_ADJUST_RIGHT; break;
+ case 3: eAdj = SVX_ADJUST_LEFT; break;// Writer kann hier kein Block
+ default:// undefinierter Wert
+ ASSERT( !this, "Value of aLVL.nAlign is not supported" );
+ // nimm default
+ eAdj = SVX_ADJUST_LEFT;
+ break;
+ }
+ //
+ // 6. entsprechendes NumFmt konfigurieren
+ //
+ if( bSetStartNo )
+ rNumFmt.SetStartValue( nStartNo );
+ rNumFmt.eType = eType;
+ rNumFmt.SetAdjust( eAdj );
+
+ if( SVX_NUM_CHAR_SPECIAL == eType )
+ {
+ // erstes Zeichen des Prefix-Textes ist das Bullet
+ rNumFmt.SetBulletChar( cBullet );
+ // nicht vergessen: unten, nach dem Bauen eventueller Styles
+ // auch noch SetBulletFont() rufen !!!
+ }
+ else
+ {
+ if( aPrefix.Len() )
+ // erinnern: Garnix ist default Prefix
+ rNumFmt.SetPrefix( aPrefix );
+ // erinnern: Punkt ist default Postfix
+ rNumFmt.SetPostfix( aPostfix );
+ rNumFmt.SetUpperLevel( nUpperLevel );
+ }
+
+ rNumFmt.SetAbsLSpace( aLVL.nDxaLeft );
+ if( 0 < aLVL.nDxaLeft1 )
+ aLVL.nDxaLeft1 = aLVL.nDxaLeft1 * -1;
+ rNumFmt.SetFirstLineOffset( aLVL.nDxaLeft1 );
+
+ return sal_True;
+}
+
+
+
+void WW8ListManager::AdjustLVL( sal_uInt8 nLevel,
+ SwNumRule& rNumRule,
+ WW8aISet& rListItemSet,
+ WW8aCFmt& rCharFmt,
+ sal_Bool& bNewCharFmtCreated,
+ String aPrefix )
+{
+ bNewCharFmtCreated = sal_False;
+ SfxItemSet* pThisLevelItemSet;
+ SfxItemSet* pLowerLevelItemSet;
+ sal_uInt8 nIdenticalItemSetLevel;
+ const SfxPoolItem* pItem;
+
+ SwNumFmt aNumFmt = rNumRule.Get( nLevel );
+
+ pThisLevelItemSet = rListItemSet[ nLevel ];
+
+ if( pThisLevelItemSet && pThisLevelItemSet->Count())
+ {
+ nIdenticalItemSetLevel = nWW8MaxListLevel;
+ SfxItemIter aIter( *pThisLevelItemSet );
+ for( sal_uInt8 nLowerLevel = 0; nLowerLevel < nLevel; nLowerLevel++)
+ {
+ pLowerLevelItemSet = rListItemSet[ nLowerLevel ];
+ if( pLowerLevelItemSet
+ && (pLowerLevelItemSet->Count() == pThisLevelItemSet->Count()) )
+ {
+ nIdenticalItemSetLevel = nLowerLevel;
+ sal_uInt16 nWhich = aIter.GetCurItem()->Which();
+ while( sal_True )
+ {
+ if( // ggfs. passenden pItem im pLowerLevelItemSet finden
+ (SFX_ITEM_SET != pLowerLevelItemSet->GetItemState(
+ nWhich, sal_False, &pItem ) )
+ || // virtuellen "!=" Operator anwenden
+ (*pItem != *aIter.GetCurItem() ) )
+ // falls kein Item mit gleicher nWhich gefunden oder Werte
+ // der Items ungleich, Ungleichheit merken und abbrechen!
+ {
+ nIdenticalItemSetLevel = nWW8MaxListLevel;
+ break;
+ }
+ if( aIter.IsAtEnd() )
+ break;
+ nWhich = aIter.NextItem()->Which();
+ }
+
+ if( nIdenticalItemSetLevel != nWW8MaxListLevel )
+ break;
+ }
+ }
+
+ SwCharFmt* pFmt;
+ if( nWW8MaxListLevel == nIdenticalItemSetLevel )
+ {
+ // Style definieren
+ String aName( aPrefix.Len() ? aPrefix : rNumRule.GetName() );
+ (aName += 'z') += String::CreateFromInt32( nLevel );
+
+ pFmt = rDoc.MakeCharFmt( aName,
+ (SwCharFmt*)rDoc.GetDfltCharFmt() ); // const Wegcasten
+ bNewCharFmtCreated = sal_True;
+ // Attribute reinsetzen
+ pFmt->SetAttr( *pThisLevelItemSet );
+ }
+ else
+ {
+ // passenden Style hier anhaengen
+ pFmt = rCharFmt[ nIdenticalItemSetLevel ];
+ }
+
+ // merken
+ rCharFmt[ nLevel ] = pFmt;
+
+ //
+ // Style an das NumFormat haengen
+ //
+ aNumFmt.SetCharFmt( pFmt );
+ }
+ //
+ // ggfs. Bullet Font an das NumFormat haengen
+ //
+ if( SVX_NUM_CHAR_SPECIAL == aNumFmt.eType )
+ {
+ SwCharFmt* pFmt = aNumFmt.GetCharFmt();
+ Font aFont;
+ if( !pFmt )
+ aFont = SwNumRule::GetDefBulletFont();
+ else
+ {
+ const SvxFontItem& rFontItem = pFmt->GetFont();
+ aFont.SetFamily( rFontItem.GetFamily() );
+ aFont.SetName( rFontItem.GetFamilyName() );
+ aFont.SetStyleName( rFontItem.GetStyleName() );
+ aFont.SetPitch( rFontItem.GetPitch() );
+ aFont.SetCharSet( rFontItem.GetCharSet() );
+ }
+ aNumFmt.SetBulletFont( &aFont );
+ }
+ //
+ // und wieder rein in die NumRule
+ //
+ rNumRule.Set(nLevel, aNumFmt);
+}
+
+
+sal_Bool WW8ListManager::LFOequaltoLST(WW8LFOInfo& rLFOInfo)
+{
+ sal_Bool bRes = sal_False;
+ WW8LSTInfo* pLSTInfo = GetLSTByListId( rLFOInfo.nIdLst );
+ if( pLSTInfo
+ && pLSTInfo->pNumRule
+ && rLFOInfo.pNumRule
+ && (rLFOInfo.nLfoLvl <= (pLSTInfo->bSimpleList ? 1 : nWW8MaxListLevel)))
+ {
+ const SwNumRule& rLSTRule = *pLSTInfo->pNumRule;
+ const SwNumRule& rLFORule = *rLFOInfo.pNumRule;
+ bRes = sal_True;
+ for(sal_uInt16 nLevel = 0; bRes && (nLevel < rLFOInfo.nLfoLvl); ++nLevel)
+ {
+ const SwNumFmt& rLSTNumFmt = rLSTRule.Get( nLevel );
+ const SwNumFmt& rLFONumFmt = rLFORule.Get( nLevel );
+ const SwCharFmt* pLSTCharFmt = rLSTNumFmt.GetCharFmt();
+ const SwCharFmt* pLFOCharFmt = rLFONumFmt.GetCharFmt();
+ if( pLSTCharFmt && pLFOCharFmt )
+ {
+ // erst Char-Styles inhaltlich vergleichen,
+ // ( siehe: ...\svtools\source\items\itemset.cxx )
+ // falls identische Einstellungen, kurz den LFO-Style umhaengen,
+ // damit '( rLSTNumFmt == rLFONumFmt )' funktioniert
+ if( pLSTCharFmt->GetAttrSet() == pLFOCharFmt->GetAttrSet() )
+ ((SwNumFmt&)rLFONumFmt).SetCharFmt( (SwCharFmt*)pLSTCharFmt );
+ else
+ {
+ bRes = sal_False;
+ break;
+ }
+ }
+ if( ( (0 == pLSTCharFmt)
+ != (0 == pLFOCharFmt)
+ )
+ || !(rLSTNumFmt == rLFONumFmt) )
+ bRes = sal_False;
+ // vermurksten LFO-Style wieder zuruecksetzen
+ if( pLFOCharFmt )
+ ((SwNumFmt&)rLFONumFmt).SetCharFmt( (SwCharFmt*)pLFOCharFmt );
+ }
+ }
+ return bRes;
+}
+
+
+
+// oeffentliche Methoden /////////////////////////////////////////////////////
+//
+WW8ListManager::WW8ListManager(SvStream& rSt_, SwWW8ImplReader& rReader_)
+: pLSTInfos( 0 ),
+ pLFOInfos( 0 ),
+ nLSTInfos( 0 ), nLFOInfos( 0 ), rSt( rSt_ ),
+ rReader( rReader_ ),
+ rDoc( rReader.GetDoc() ),
+ rFib( rReader.GetFib() )
+{
+ if( ( 8 > rFib.nVersion ) // LST und LFO gibts erst ab WW8
+ || ( rFib.fcPlcfLst == rFib.fcPlfLfo )
+ || ( !rFib.lcbPlcfLst )
+ || ( !rFib.lcbPlfLfo ) ) return; // offensichtlich keine Listen da
+
+ // Arrays anlegen
+ pLSTInfos = new WW8LSTInfos;
+ pLFOInfos = new WW8LFOInfos;
+ sal_uInt16 nList;
+ sal_uInt16 nLfo;
+ sal_Bool bLVLOk;
+ sal_uInt8 aBits1;
+ String aPrefix; // wird erstmal zur Bildung des Style Namens genommen
+ String aPostfix;
+
+ long nOriginalPos = rSt.Tell();
+ //
+ // 1. PLCF LST auslesen und die Listen Vorlagen im Writer anlegen
+ //
+ rSt.Seek( rFib.fcPlcfLst );
+ sal_uInt16 nListCount;
+ rSt >> nListCount;
+ sal_Bool bOk = 0 < nListCount;
+ if( bOk )
+ {
+ WW8LST aLST;
+ //
+ // 1.1 alle LST einlesen
+ //
+ for(nList = 0; nList < nListCount; nList++)
+ {
+ bOk = sal_False;
+ memset(&aLST, 0, sizeof( aLST ));
+ sal_uInt16 nLevel;
+ //
+ // 1.1.1 Daten einlesen
+ //
+ rSt >> aLST.nIdLst;
+ rSt >> aLST.nTplC;
+ for(nLevel = 0; nLevel < nWW8MaxListLevel; nLevel++)
+ {
+ rSt >> aLST.aIdSty[ nLevel ];
+ }
+
+ rSt >> aBits1;
+ rSt.SeekRel( 1 );
+
+ if( 0 != rSt.GetError() ) break;
+
+ if( aBits1 & 0x01 ) aLST.bSimpleList = sal_True;
+ if( aBits1 & 0x02 ) aLST.bRestartHdn = sal_True;
+ //
+ // 1.1.2 neue NumRule ins Doc einsetzen und WW8LSTInfo vermerken
+ //
+ aPrefix = WW8_ASCII2STR( "WW8Num" );
+ aPrefix += String::CreateFromInt32( nList+1 );
+ sal_uInt16 nRul =
+ rDoc.MakeNumRule(rDoc.GetUniqueNumRuleName( &aPrefix ));
+ SwNumRule* pMyNumRule =
+ rDoc.GetNumRuleTbl()[nRul];
+ pMyNumRule->SetAutoRule( sal_False );
+
+ WW8LSTInfo* pLSTInfo = new WW8LSTInfo(pMyNumRule, aLST, nList);
+ pLSTInfos->Insert( pLSTInfo );
+ nLSTInfos++;
+ bOk = sal_True;
+ }
+ }
+
+ if( bOk )
+ {
+ //
+ // 1.2 alle LVL aller aLST einlesen
+ //
+ sal_uInt8 nLevel;
+ for(nList = 0; nList < nLSTInfos; nList++)
+ {
+ bOk = sal_False;
+ WW8LSTInfo* pListInfo = GetLSTByStreamPos( nList );
+ if( !pListInfo || !pListInfo->pNumRule ) break;
+ SwNumRule& rMyNumRule = *pListInfo->pNumRule;
+ //
+ // 1.2.1 betreffende(n) LVL(s) fuer diese aLST einlesen
+ //
+ sal_uInt16 nLvlCount = pListInfo->bSimpleList ? 1 : nWW8MaxListLevel;
+ for(nLevel = 0; nLevel < nLvlCount; nLevel++)
+ {
+ SwNumFmt aNumFmt( rMyNumRule.Get( nLevel ) );
+ // LVLF einlesen
+ bLVLOk = ReadLVL( nLevel,
+ aNumFmt,
+ pListInfo->aItemSet[ nLevel ],
+ pListInfo->aIdSty[ nLevel ],
+ sal_True );
+ if( !bLVLOk ) break;
+ // und in die rMyNumRule aufnehmen
+ rMyNumRule.Set( nLevel, aNumFmt );
+ }
+ if( !bLVLOk ) break;
+ //
+ // 1.2.2 die ItemPools mit den CHPx Einstellungen der verschiedenen
+ // Level miteinander vergleichen und ggfs. Style(s) erzeugen
+ //
+ sal_Bool bDummy;
+ for(nLevel = 0; nLevel < nLvlCount; nLevel++)
+ AdjustLVL( nLevel, rMyNumRule, pListInfo->aItemSet,
+ pListInfo->aCharFmt, bDummy );
+ //
+ // 1.2.3 ItemPools leeren und loeschen
+ //
+ for(nLevel = 0; nLevel < nLvlCount; nLevel++)
+ delete pListInfo->aItemSet[ nLevel ];
+ bOk = sal_True;
+ }
+ }
+ if( !bOk )
+ {
+ // Fehler aufgetreten - LSTInfos abraeumen !!!
+
+ ;
+ }
+ //
+ // 2. PLF LFO auslesen und speichern
+ //
+ long nLfoCount;
+ if( bOk )
+ {
+ nLfoCount = 0;
+ rSt.Seek( rFib.fcPlfLfo );
+ rSt >> nLfoCount;
+ if( 0 >= nLfoCount ) bOk = sal_False;
+ }
+ sal_uInt16 nTotalLfoLevels = 0;
+ if( bOk )
+ {
+ WW8LFO aLFO;
+ //
+ // 2.1 alle LFO einlesen
+ //
+ for(nLfo = 0; nLfo < nLfoCount; nLfo++)
+ {
+ bOk = sal_False;
+ memset(&aLFO, 0, sizeof( aLFO ));
+ rSt >> aLFO.nIdLst;
+ rSt.SeekRel( 8 );
+ rSt >> aLFO.nLfoLvl;
+ rSt.SeekRel( 3 );
+ if( (nWW8MaxListLevel < aLFO.nLfoLvl) // soviele Overrides existieren
+ && ( 0 != rSt.GetError() )
+ ) break;
+
+ // die Parent NumRule der entsprechenden Liste ermitteln
+ WW8LSTInfo* pParentListInfo = GetLSTByListId( aLFO.nIdLst );
+ if( !pParentListInfo ) break;
+ // hier, im ersten Schritt, erst mal diese NumRule festhalten
+ aLFO.pNumRule = pParentListInfo->pNumRule;
+ if( !aLFO.pNumRule ) break;
+ // hat die Liste mehrere Level ?
+ aLFO.bSimpleList = pParentListInfo->bSimpleList;
+ // und rein ins Merk-Array mit dem Teil
+ WW8LFOInfo* pLFOInfo = new WW8LFOInfo( aLFO );
+ pLFOInfos->Insert(pLFOInfo, pLFOInfos->Count());
+ nLFOInfos++;
+ bOk = sal_True;
+ }
+ }
+ if( bOk )
+ {
+ //
+ // 2.2 fuer alle LFO die zugehoerigen LFOLVL einlesen
+ //
+ WW8LFOLVL aLFOLVL;
+ for(nLfo = 0; nLfo < nLFOInfos; nLfo++)
+ {
+ bOk = sal_False;
+ WW8LFOInfo* pLFOInfo = pLFOInfos->GetObject( nLfo );
+ if( !pLFOInfo ) break;
+ if( pLFOInfo->bOverride ) // stehen hierfuer ueberhaupt LFOLVL an ?
+ {
+ WW8LSTInfo* pParentListInfo = GetLSTByListId( pLFOInfo->nIdLst );
+ if( !pParentListInfo ) break;
+ //
+ // 2.2.1 eine neue NumRule fuer diese Liste anlegen
+ //
+ SwNumRule* pParentNumRule = pLFOInfo->pNumRule;
+ if( !pParentNumRule )
+ break;
+ // Nauemsprefix aufbauen: fuer NumRule-Name (eventuell)
+ // und (falls vorhanden) fuer Style-Name (dann auf jeden Fall)
+ aPrefix.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "WW8NumSt" ));
+ aPrefix += String::CreateFromInt32( nLfo + 1 );
+ // jetzt dem pNumRule seinen RICHTIGEN Wert zuweisen !!!
+ // (bis dahin war hier die Parent NumRule vermerkt )
+ //
+ // Dazu erst mal nachsehen, ob ein Style diesen LFO referenziert:
+ if( USHRT_MAX > rReader.StyleUsingLFO( nLfo ) )
+ {
+ sal_uInt16 nRul =
+ rDoc.MakeNumRule(rDoc.GetUniqueNumRuleName( &aPrefix ), pParentNumRule);
+ pLFOInfo->pNumRule = rDoc.GetNumRuleTbl()[ nRul ];
+ pLFOInfo->pNumRule->SetAutoRule( sal_False );
+ }
+ else
+ {
+ sal_uInt16 nRul = rDoc.MakeNumRule(
+ rDoc.GetUniqueNumRuleName(), pParentNumRule);
+ pLFOInfo->pNumRule = rDoc.GetNumRuleTbl()[ nRul ];
+ pLFOInfo->pNumRule->SetAutoRule( sal_True ); // = default
+ }
+ //
+ // 2.2.2 alle LFOLVL (und ggfs. LVL) fuer die neue NumRule einlesen
+ //
+ WW8aISet aItemSet; // Zeichenattribute aus GrpprlChpx
+ WW8aCFmt aCharFmt; // Zeichen Style Pointer
+ memset(&aItemSet, 0, sizeof( aItemSet ));
+ memset(&aCharFmt, 0, sizeof( aCharFmt ));
+
+ for(sal_uInt8 nLevel = 0; nLevel < pLFOInfo->nLfoLvl; nLevel++)
+ {
+ bLVLOk = sal_False;
+ memset(&aLFOLVL, 0, sizeof( aLFOLVL ));
+
+ //
+ // 2.2.2.0 fuehrende 0xFF ueberspringen
+ //
+ sal_uInt8 n1;
+ do{
+ rSt >> n1;
+ if( 0 != rSt.GetError() ) break;
+ }
+ while( 0xFF == n1 );
+ rSt.SeekRel( -1 );
+
+ //
+ // 2.2.2.1 den LFOLVL einlesen
+ //
+ rSt >> aLFOLVL.nStartAt;
+ rSt >> aBits1;
+ rSt.SeekRel( 3 );
+ if( 0 != rSt.GetError() ) break;
+
+ // beachte: Die Witzbolde bei MS quetschen die Override-Level-Nummer
+ // in vier Bits hinein, damit sie wieder einen Grund haben,
+ // ihr Dateiformat zu aendern, falls ihnen einfaellt, dass
+ // sie eigentlich doch gerne bis zu 16 Listen-Level haetten.
+ // Wir tun das *nicht* (siehe Kommentar oben bei "struct WW8LFOInfo")
+ aLFOLVL.nLevel = aBits1 & 0x0F;
+ if( (0xFF > aBits1)
+ && (0 <= aLFOLVL.nLevel)
+ && (nWW8MaxListLevel > aLFOLVL.nLevel) )
+ {
+// aLFOLVL.nLevel--;
+ if( aBits1 & 0x10 )
+ aLFOLVL.bStartAt = sal_True;
+ //
+ // 2.2.2.2 eventuell auch den zugehoerigen LVL einlesen
+ //
+ SwNumFmt aNumFmt( pLFOInfo->pNumRule->Get( aLFOLVL.nLevel ) );
+ if( aBits1 & 0x20 )
+ {
+ aLFOLVL.bFormat = sal_True;
+ // falls bStartup sal_True, hier den Startup-Level durch
+ // den im LVL vermerkten ersetzen
+ // LVLF einlesen
+ bLVLOk= ReadLVL(aLFOLVL.nLevel,
+ aNumFmt,
+ aItemSet[ nLevel ],
+ pParentListInfo->aIdSty[ nLevel ],
+ aLFOLVL.bStartAt );
+ if( !bLVLOk ) break;
+ }
+ else
+ if( aLFOLVL.bStartAt )
+ aNumFmt.SetStartValue( (sal_uInt16)aLFOLVL.nStartAt );
+ //
+ // 2.2.2.3 das NumFmt in die NumRule aufnehmen
+ //
+ pLFOInfo->pNumRule->Set( nLevel, aNumFmt );
+ }
+ bLVLOk = sal_True;
+ }
+ if( !bLVLOk ) break;
+ //
+ // 2.2.3 die LVL der neuen NumRule anpassen
+ //
+ sal_uInt16 aFlagsNewCharFmt = 0;
+ sal_Bool bNewCharFmtCreated = sal_False;
+ for(nLevel = 0; nLevel < pLFOInfo->nLfoLvl; nLevel++)
+ {
+ AdjustLVL( nLevel, *pLFOInfo->pNumRule,
+ aItemSet,
+ aCharFmt,
+ bNewCharFmtCreated,
+ aPrefix );
+ if( bNewCharFmtCreated )
+ aFlagsNewCharFmt += (1 << nLevel);
+ }
+ //
+ // 2.2.4 ItemPools leeren und loeschen
+ //
+ for(nLevel = 0; nLevel < pLFOInfo->nLfoLvl; nLevel++)
+ delete aItemSet[ nLevel ];
+ //
+ // 2.2.5 falls diese NumRule identische Einstellungen und
+ // Formatierungen hat wie ihre Parent-Rule, loeschen
+ // wir sie wieder und nehmen stattdessen die alte.
+ //
+ if( LFOequaltoLST( *pLFOInfo ) )
+ {
+ // 2.2.5.1 ggfs die an den einzelnen Leveln haengenden
+ // Char-Formate freigeben und loeschen
+ //
+ for(nLevel = 0; nLevel < pLFOInfo->nLfoLvl; nLevel++)
+ if( aFlagsNewCharFmt & (1 << nLevel) )
+ rDoc.DelCharFmt(
+ pLFOInfo->pNumRule->Get( nLevel ).GetCharFmt() );
+ //
+ // 2.2.5.2 jetzt die NumRule freigeben und die alte nehmen
+ //
+ rDoc.DelNumRule( pLFOInfo->pNumRule->GetName() );
+ pLFOInfo->pNumRule = pParentNumRule;
+ }
+ bOk = sal_True;
+ }
+ }
+ }
+ if( !bOk )
+ {
+ // Fehler aufgetreten - LSTInfos und LFOInfos abraeumen !!!
+
+ ;
+ }
+ // und schon sind wir fertig!
+ rSt.Seek( nOriginalPos );
+}
+
+
+WW8ListManager::~WW8ListManager()
+{
+/*
+ benannte Liste bleiben im Doc drin !!!
+
+ unbenannte Listen werden bei Nicht-Verwendung geloescht
+
+ pLSTInfos und pLFOInfos werden auf jeden Fall destruiert
+*/
+ sal_uInt16 nInfo;
+ if( pLSTInfos )
+ {
+ for(nInfo = pLSTInfos->Count(); nInfo; )
+ {
+ WW8LSTInfo& rActInfo = *pLSTInfos->GetObject( --nInfo );
+ if( rActInfo.pNumRule
+ && !rActInfo.bUsedInDoc
+ && rActInfo.pNumRule->IsAutoRule()
+ )
+ rDoc.DelNumRule( rActInfo.pNumRule->GetName() );
+ }
+ delete pLSTInfos;
+ }
+ if( pLFOInfos )
+ {
+ for(nInfo = pLFOInfos->Count(); nInfo; )
+ {
+ WW8LFOInfo& rActInfo = *pLFOInfos->GetObject( --nInfo );
+ if( rActInfo.bOverride
+ && rActInfo.pNumRule
+ && !rActInfo.bUsedInDoc
+ && rActInfo.pNumRule->IsAutoRule()
+ )
+ rDoc.DelNumRule( rActInfo.pNumRule->GetName() );
+ }
+ delete pLFOInfos;
+ }
+}
+
+
+
+SwNumRule* WW8ListManager::GetNumRuleForActivation(sal_uInt16 nLFOPosition) const
+{
+ if( nLFOInfos <= nLFOPosition ) return 0;
+
+ WW8LFOInfo* pLFOInfo = pLFOInfos->GetObject( nLFOPosition );
+
+ if( !pLFOInfo ) return 0;
+
+ pLFOInfo->bUsedInDoc = sal_True;
+
+ if( !pLFOInfo->pNumRule ) return 0;
+
+ if( (!pLFOInfo->bOverride) && (!pLFOInfo->bLSTbUIDSet) )
+ {
+ WW8LSTInfo* pParentListInfo = GetLSTByListId( pLFOInfo->nIdLst );
+ if( pParentListInfo )
+ pParentListInfo->bUsedInDoc = sal_True;
+ pLFOInfo->bLSTbUIDSet = sal_True;
+ }
+ return pLFOInfo->pNumRule;
+}
+
+
+
+sal_Bool WW8ListManager::IsSimpleList(sal_uInt16 nLFOPosition) const
+{
+ if( nLFOInfos <= nLFOPosition ) return sal_False;
+
+ WW8LFOInfo* pLFOInfo = pLFOInfos->GetObject( nLFOPosition );
+
+ if( !pLFOInfo ) return sal_False;
+
+ return pLFOInfo->bSimpleList;
+}
+
+
+
+
+//----------------------------------------------------------------------------
+// SwWW8ImplReader: anhaengen einer Liste an einen Style oder Absatz
+//----------------------------------------------------------------------------
+
+
+sal_Bool SwWW8ImplReader::SetTxtFmtCollAndListLevel(const SwPaM& rRg,
+ SwWW8StyInf& rStyleInfo,
+ sal_Bool bReset)
+{
+ sal_Bool bRes = sal_True;
+ if( rStyleInfo.pFmt && rStyleInfo.bColl )
+ {
+ bRes = rDoc.SetTxtFmtColl(rRg, (SwTxtFmtColl*)rStyleInfo.pFmt);
+
+ if( !rStyleInfo.pOutlineNumrule )
+ {
+ SwTxtNode* pTxtNode = pPaM->GetNode()->GetTxtNode();
+ ASSERT( pTxtNode, "Kein Text-Node an PaM-Position" );
+
+ if( !IsInvalidOrToBeMergedTabCell() )
+ pTxtNode->SwCntntNode::ResetAttr( RES_PARATR_NUMRULE );
+
+ if( (USHRT_MAX > rStyleInfo.nLFOIndex )
+ && (nWW8MaxListLevel > rStyleInfo.nListLevel) )
+ RegisterNumFmtOnTxtNode( rStyleInfo.nLFOIndex,
+ rStyleInfo.nListLevel, sal_False);
+ else
+ pTxtNode->UpdateNum( SwNodeNum(NO_NUMBERING) );
+
+ if( rStyleInfo.bHasStyNumRule && pTxtNode )
+ {
+ pTxtNode->SetNumLSpace( sal_False );
+ }
+ }
+ }
+ return bRes;
+}
+
+void SwWW8ImplReader::RegisterNumFmtOnStyle(SwWW8StyInf& rStyleInfo,
+ sal_uInt16 nActLFO,
+ sal_uInt8 nActLevel)
+{
+ if( rStyleInfo.bValid )
+ {
+ // Phase 1: Nummerierungsattribute beim Einlesen einer StyleDef
+ if( pAktColl )
+ {
+ // jetzt nur die Parameter vermerken: die tatsaechliche Liste wird
+ // spaeter drangehaengt, wenn die Listendefinitionen gelesen sind...
+ if( (USHRT_MAX > nActLFO) && (nWW8MaxListLevel > nActLevel))
+ {
+ rStyleInfo.nLFOIndex = nActLFO;
+ rStyleInfo.nListLevel = nActLevel;
+ }
+ }
+ else
+ // Phase 2: aktualisieren der StyleDef nach einlesen aller Listen
+ {
+ sal_uInt16 nLFO;
+ sal_uInt8 nLevel;
+ if( (USHRT_MAX > nActLFO) && (nWW8MaxListLevel > nActLevel))
+ {
+ // Plan A: die Werte fuer Listen- und Level-Nummer wurden uebergeben
+ nLFO = nActLFO;
+ nLevel = nActLevel;
+ }
+ else
+ {
+ // Plan B: die vorhin in Phase 1 gespeicherten Werte sind zu nehmen
+ nLFO = rStyleInfo.nLFOIndex;
+ nLevel = rStyleInfo.nListLevel;
+ }
+ if( (USHRT_MAX > nLFO) && (nWW8MaxListLevel > nLevel))
+ {
+ SwNumRule* pNumRule = pLstManager->GetNumRuleForActivation( nLFO );
+ if( pNumRule )
+ {
+ if( MAXLEVEL > rStyleInfo.nOutlineLevel )
+ {
+ rStyleInfo.pOutlineNumrule = pNumRule;
+ }
+ else
+ {
+ rStyleInfo.pFmt->SetAttr( SwNumRuleItem( pNumRule->GetName() ) );
+ rStyleInfo.bHasStyNumRule = sal_True;
+ }
+ }
+ }
+ }
+ }
+}
+
+void SwWW8ImplReader::RegisterNumFmtOnTxtNode(sal_uInt16 nActLFO,
+ sal_uInt8 nActLevel,
+ sal_Bool bSetAttr)
+{
+ // beachte: die Methode haengt die NumRule an den Text Node, falls bSetAttr
+ // (dann muessen natuerlich vorher die Listen gelesen sein)
+ // stellt sie NUR den Level ein, im Vertrauen darauf, dass am STYLE
+ // eine NumRule haengt - dies wird NICHT ueberprueft !!!
+
+ if( pLstManager ) // sind die Listendeklarationen gelesen?
+ {
+ const SwNumRule* pNumRule
+ = bSetAttr ? pLstManager->GetNumRuleForActivation( nActLFO ) : 0;
+
+ if( pNumRule || !bSetAttr )
+ {
+ SwTxtNode* pTxtNode = pPaM->GetNode()->GetTxtNode();
+ ASSERT( pTxtNode, "Kein Text-Node an PaM-Position" );
+
+ if( bSetAttr )
+ pTxtNode->SwCntntNode::SetAttr(SwNumRuleItem( pNumRule->GetName() ));
+
+ SvxLRSpaceItem aLR( *(SvxLRSpaceItem*)GetFmtAttr( RES_LR_SPACE ));
+ if( 1 < aLR.GetTxtFirstLineOfst() )
+ {
+ aLR.SetTxtFirstLineOfst( 1 );
+ NewAttr( aLR );
+ }
+
+ pTxtNode->SetNumLSpace( bSetAttr );
+
+ pTxtNode->UpdateNum( SwNodeNum( nActLevel ) );
+ }
+ }
+}
+
+void SwWW8ImplReader::RegisterNumFmt(sal_uInt16 nActLFO, sal_uInt8 nActLevel)
+{
+ // sind wir erst beim Einlesen der StyleDef ?
+ if( pAktColl )
+ RegisterNumFmtOnStyle(pCollA[ nAktColl ], nActLFO, nActLevel);
+ else
+ RegisterNumFmtOnTxtNode(nActLFO, nActLevel);
+}
+
+
+
+void SwWW8ImplReader::Read_ListLevel(sal_uInt16 nId, sal_uInt8* pData, short nLen)
+{
+ if( nLen < 0 )
+ {
+ // aktuelle Liste ist hier zu Ende, was ist zu tun ???
+ nListLevel = nWW8MaxListLevel;
+ }
+ else
+ {
+ // Sicherheitspruefung auf NIL Pointer
+ if( !pData ) return;
+ // die Streamdaten sind hier Null basiert, so wie wir es brauchen
+ nListLevel = *pData;
+ if( nWW8MaxListLevel <= nListLevel )
+ nListLevel = nWW8MaxListLevel;
+ else
+ if( (USHRT_MAX > nLFOPosition) && (nWW8MaxListLevel > nListLevel))
+ {
+ RegisterNumFmt(nLFOPosition, nListLevel);
+ nLFOPosition = USHRT_MAX;
+ nListLevel = nWW8MaxListLevel;
+ }
+ }
+}
+
+
+
+void SwWW8ImplReader::Read_LFOPosition(sal_uInt16 nId, sal_uInt8* pData, short nLen)
+{
+ if( nLen < 0 )
+ {
+ // aktueller Level ist hier zu Ende, was ist zu tun ???
+ nLFOPosition = USHRT_MAX;
+ nListLevel = nWW8MaxListLevel;
+ }
+ else
+ {
+ // Sicherheitspruefung auf NIL Pointer
+ if( !pData ) return;
+ short nData = SVBT16ToShort( pData );
+ if( 0 >= nData )
+ {
+ // expliziet die Numerierung abschalten
+ // sind wir erst beim Einlesen der StyleDef ?
+ if( pAktColl )
+ pAktColl->SetAttr( *GetDfltAttr( RES_PARATR_NUMRULE ) );
+ else
+ {
+ SwTxtNode* pTxtNode = pPaM->GetNode()->GetTxtNode();
+ if( pTxtNode )
+ {
+ pTxtNode->SwCntntNode::SetAttr(
+ *GetDfltAttr( RES_PARATR_NUMRULE ) );
+ pTxtNode->UpdateNum( SwNodeNum( NO_NUMBERING ) );
+ }
+ }
+
+ nLFOPosition = USHRT_MAX;
+ }
+ else
+ {
+ // die Streamdaten sind hier 1 basiert, wir ziehen EINS ab
+ nLFOPosition = (sal_uInt16)nData-1;
+ if( USHRT_MAX > nLFOPosition)
+ {
+ /*
+ traurig: WW8 speichert manchmal keine Level-Attribute ab, auch wenn
+ die Liste *nicht* bSimpleList hat.
+ daher: nach Auftreten von sprmPIlfo sofort die Liste anklemmen, auch
+ wenn kein sprmPIlvl vorher kam!
+
+ schoener waere gewesen:
+ if( (nWW8MaxListLevel == nListLevel)
+ && pLstManager
+ && pLstManager->IsSimpleList( nLFOPosition ) )
+ nListLevel = 0;
+ */
+ if(nWW8MaxListLevel == nListLevel)
+ nListLevel = 0;
+ if(nWW8MaxListLevel > nListLevel)
+ {
+ RegisterNumFmt(nLFOPosition, nListLevel);
+ nLFOPosition = USHRT_MAX;
+ nListLevel = nWW8MaxListLevel;
+ }
+ }
+ }
+ }
+}
+
+// -------------------------------------------------------------------
+// ------------------------- Reading Controls ------------------------
+// -------------------------------------------------------------------
+
+BOOL SwWW8ImplReader::ImportFormulaControl(WW8FormulaControl &aFormula,
+ WW8_CP nStart, SwWw8ControlType nWhich )
+{
+ BOOL bRet=FALSE;
+ /*
+ * Save the reader state and process the sprms for this anchor cp.
+ * Doing so will set the nPicLocFc to the offset to find the hypertext
+ * data in the data stream.
+ */
+ WW8_CP nEndCp = nStart+1; //Only interested in the single 0x01 character
+
+ WW8ReaderSave aSave(this,nStart);
+
+ WW8PLCFManResult aRes;
+ nStart = pPlcxMan->Where();
+ while(nStart <= nEndCp)
+ {
+ if ( pPlcxMan->Get(&aRes)
+ && aRes.pMemPos && aRes.nSprmId )
+ {
+ //only interested in sprms which would set nPicLocFc
+ if ( (68 == aRes.nSprmId) || (0x6A03 == aRes.nSprmId) )
+ {
+ Read_PicLoc( aRes.nSprmId, aRes.pMemPos+ 1+
+ (8 > pWwFib->nVersion ? 0 : 1) + WW8SprmDataOfs(aRes.nSprmId),
+ 4);
+ break;
+ }
+ }
+ (*pPlcxMan)++;
+ nStart = pPlcxMan->Where();
+ }
+ long nOffset = nPicLocFc;
+ aSave.Restore(this);
+
+ long nOldPos = pDataStream->Tell();
+ WW8_PIC aPic;
+ pDataStream->Seek( nOffset);
+#ifdef __WW8_NEEDS_COPY
+ WW8_PIC_SHADOW aPicS;
+ pDataStream->Read( &aPicS, sizeof( aPicS ) );
+ WW8PicShadowToReal( &aPicS, &aPic );
+#else
+ pDataStream->Read( &aPic, sizeof( aPic ) );
+#endif
+
+ if((aPic.lcb > 0x3A) && !pDataStream->GetError() )
+ {
+ pDataStream->Seek( nPicLocFc + aPic.cbHeader );
+ aFormula.Read(nWhich,pDataStream);
+ bRet=TRUE;
+ }
+
+ /*There is a problem with aPic, the WW8_PIC is always used even though it
+ *is too big for the WW95 files, it needs to be modified to check the
+ version C.*/
+ return(bRet);
+}
+
+BOOL SwImportControls::InsertFormula(WW8FormulaControl &rFormula,
+ uno::Reference <drawing::XShape> *pShapeRef)
+{
+ BOOL bRet=FALSE;
+
+ awt::Size aSz;
+ uno::Reference< form::XFormComponent> xFComp;
+ uno::Reference < drawing::XShape> xShape;
+
+ const uno::Reference< lang::XMultiServiceFactory > & rServiceFactory =
+ GetServiceFactory();
+
+ //const XMultiServiceFactoryRef& rServiceFactory =
+ // GetServiceFactory();
+ if(!rServiceFactory.is())
+ return(FALSE);
+ if (bRet = rFormula.Convert(rServiceFactory, xFComp, aSz))
+ {
+ xShape = InsertControl( xFComp, aSz, FALSE );
+ if (pShapeRef)
+ *pShapeRef = xShape;
+ }
+ return bRet;
+}
+
+void WW8FormulaControl::Read(SwWw8ControlType nWhich,SvStream *pDataStream)
+{
+ UINT8 nField;
+ UINT8 nTest;
+
+ int nType=0;
+ pDataStream->Read(&nTest, 1);
+ if (nTest == 0xFF) //Guesswork time, difference between 97 and 95 ?
+ {
+ pDataStream->SeekRel(4);
+ nType=1;
+ }
+ *pDataStream >> nField;
+ fToolTip = nField & 0x01;
+ fNoMark = (nField & 0x02)>>1;
+ fUseSize = (nField & 0x04)>>2;
+ fNumbersOnly= (nField & 0x08)>>3;
+ fDateOnly = (nField & 0x10)>>4;
+ fUnused = (nField & 0xE0)>>5;
+ *pDataStream >> nSize;
+
+ *pDataStream >> hpsCheckBox;
+ if (nType == 0)
+ pDataStream->SeekRel(2); //Guess
+
+ rtl_TextEncoding eEnc = rRdr.eStructCharSet;
+ sTitle = !nType ? WW8ReadPString( *pDataStream, eEnc, TRUE )
+ : WW8Read_xstz( *pDataStream, 0, TRUE );
+
+ if (nWhich == WW8_CT_CHECKBOX)
+ *pDataStream >> nChecked;
+ else
+ sDefault = !nType ? WW8ReadPString( *pDataStream, eEnc, TRUE )
+ : WW8Read_xstz( *pDataStream, 0, TRUE );
+
+ sFormatting = !nType ? WW8ReadPString( *pDataStream, eEnc, TRUE )
+ : WW8Read_xstz( *pDataStream, 0, TRUE );
+
+ sHelp = !nType ? WW8ReadPString( *pDataStream, eEnc, TRUE )
+ : WW8Read_xstz( *pDataStream, 0, TRUE );
+
+ if( fToolTip )
+ sToolTip = !nType ? WW8ReadPString( *pDataStream, eEnc, TRUE )
+ : WW8Read_xstz( *pDataStream, 0, TRUE );
+}
+
+BOOL WW8FormulaCheckBox::Convert(
+ const uno::Reference <lang::XMultiServiceFactory> &rServiceFactory,
+ uno::Reference <form::XFormComponent> &rFComp,
+ com::sun::star::awt::Size &rSz )
+{
+ String sServiceName = WW8_ASCII2STR( "com.sun.star.form.component.CheckBox" );
+ uno::Reference< uno::XInterface > xCreate = rServiceFactory->createInstance( sServiceName );
+ if( !xCreate.is() )
+ return FALSE;
+
+ rFComp = uno::Reference< form::XFormComponent >( xCreate, uno::UNO_QUERY );
+ if( !rFComp.is() )
+ return FALSE;
+
+ uno::Reference< beans::XPropertySet > xPropSet( xCreate, uno::UNO_QUERY );
+
+ rSz.Width = 16 * hpsCheckBox;
+ rSz.Height = 16 * hpsCheckBox;
+
+ uno::Any aTmp;
+ if (sTitle.Len())
+ {
+ //UniString sTmp(pName,RTL_TEXTENCODING_ASCII_US);
+ aTmp <<= rtl::OUString(sTitle);
+ }
+ else
+ aTmp <<= rtl::OUString(sName);
+ xPropSet->setPropertyValue( WW8_ASCII2STR( "Name" ), aTmp );
+
+ aTmp <<= (sal_Int16)nChecked;
+ xPropSet->setPropertyValue( WW8_ASCII2STR( "DefaultState" ), aTmp);
+
+ if( sToolTip.Len() )
+ {
+ aTmp <<= rtl::OUString( sToolTip );
+ xPropSet->setPropertyValue( WW8_ASCII2STR( "HelpText" ), aTmp );
+ }
+
+ return TRUE;
+
+}
+
+void WW8FormulaControl::SetOthersFromDoc(uno::Reference< form::XFormComponent >& rFComp, com::sun::star::awt::Size &rSz,
+ uno::Reference< beans::XPropertySet >& rPropSet)
+{
+ const struct CtrlFontMapEntry
+ {
+ USHORT nWhichId;
+ const sal_Char* pPropNm;
+ }
+ aMapTable [] =
+ {
+ RES_CHRATR_COLOR, "TextColor",
+ RES_CHRATR_COLOR, "TextColor",
+ RES_CHRATR_FONT, "FontName",
+ RES_CHRATR_FONTSIZE, "FontHeight",
+ RES_CHRATR_WEIGHT, "FontWeight",
+ RES_CHRATR_UNDERLINE, "FontUnderline",
+ RES_CHRATR_CROSSEDOUT, "FontStrikeout",
+ RES_CHRATR_POSTURE, "FontSlant",
+ 0, 0
+ };
+
+
+ USHORT nDefSize;
+ Font aFont;
+ uno::Reference< beans::XPropertySetInfo > xPropSetInfo = rPropSet->getPropertySetInfo();
+ if (nSize)
+ nDefSize = nSize;
+ else if( sDefault.Len() )
+ nDefSize = sDefault.Len();
+ else
+ nDefSize = 18; //no chars, ms actually uses
+ //5 0x96 chars (-) as its default, but thats
+ //the default for an empty text area, which
+ //stretchs in size as text is entered so...
+
+ uno::Any aTmp;
+ for( const CtrlFontMapEntry* pMap = aMapTable; pMap->nWhichId; ++pMap )
+ {
+ BOOL bSet = TRUE;
+ const SfxPoolItem* pItem = rRdr.GetFmtAttr( pMap->nWhichId );
+
+ switch ( pMap->nWhichId )
+ {
+ case RES_CHRATR_COLOR:
+ aTmp <<= (sal_Int32)((SvxColorItem*)pItem)->GetValue().GetRGBColor();
+ aFont.SetColor( ((SvxColorItem*)pItem)->GetValue() );
+ break;
+
+ case RES_CHRATR_FONT:
+ {
+ const SvxFontItem *pFontItem = (SvxFontItem *)pItem;
+ String pNm;
+ if( xPropSetInfo->hasPropertyByName( pNm = WW8_ASCII2STR( "FontStyleName" ) ) )
+ {
+ aTmp <<= rtl::OUString( pFontItem->GetStyleName() );
+ rPropSet->setPropertyValue( pNm, aTmp );
+ }
+ if( xPropSetInfo->hasPropertyByName( pNm = WW8_ASCII2STR( "FontFamily" ) ) )
+ {
+ aTmp <<= (sal_Int16)pFontItem->GetFamily();
+ rPropSet->setPropertyValue( pNm, aTmp );
+ }
+ if( xPropSetInfo->hasPropertyByName( pNm = WW8_ASCII2STR( "FontCharset" ) ) )
+ {
+ aTmp <<= (sal_Int16)pFontItem->GetCharSet();
+ rPropSet->setPropertyValue( pNm, aTmp );
+ }
+ if( xPropSetInfo->hasPropertyByName( pNm = WW8_ASCII2STR( "FontPitch" ) ) )
+ {
+ aTmp <<= (sal_Int16)pFontItem->GetPitch();
+ rPropSet->setPropertyValue( pNm, aTmp );
+ }
+
+ aTmp <<= rtl::OUString( pFontItem->GetFamilyName());
+ aFont.SetName( pFontItem->GetFamilyName() );
+ aFont.SetStyleName( pFontItem->GetStyleName() );
+ aFont.SetFamily( pFontItem->GetFamily() );
+ aFont.SetCharSet( pFontItem->GetCharSet() );
+ aFont.SetPitch( pFontItem->GetPitch() );
+ }
+ break;
+
+ case RES_CHRATR_FONTSIZE:
+ {
+ Size aSize( aFont.GetSize().Width(),
+ ((SvxFontHeightItem*)pItem)->GetHeight() );
+ aTmp <<= ((float)aSize.Height()) / 20. ;
+
+ aFont.SetSize( OutputDevice::LogicToLogic( aSize,
+ MAP_TWIP, MAP_100TH_MM ) );
+ }
+ break;
+
+ case RES_CHRATR_WEIGHT:
+ aTmp <<= (float)VCLUnoHelper::ConvertFontWeight(
+ ((SvxWeightItem*)pItem)->GetWeight() );
+ aFont.SetWeight( ((SvxWeightItem*)pItem)->GetWeight() );
+ break;
+
+ case RES_CHRATR_UNDERLINE:
+ aTmp <<= (sal_Int16)( ((SvxUnderlineItem*)pItem)->GetUnderline() );
+ aFont.SetUnderline( ((SvxUnderlineItem*)pItem)->GetUnderline() );
+ break;
+
+ case RES_CHRATR_CROSSEDOUT:
+ aTmp <<= (sal_Int16)( ((SvxCrossedOutItem*)pItem)->GetStrikeout() );
+ aFont.SetStrikeout( ((SvxCrossedOutItem*)pItem)->GetStrikeout() );
+ break;
+
+ case RES_CHRATR_POSTURE:
+ aTmp <<= (sal_Int16)( ((SvxPostureItem*)pItem)->GetPosture() );
+ aFont.SetItalic( ((SvxPostureItem*)pItem)->GetPosture() );
+ break;
+
+ default:
+ bSet = FALSE;
+ break;
+ }
+
+ if( bSet && xPropSetInfo->hasPropertyByName(
+ WW8_ASCII2STR( pMap->pPropNm ) ) )
+ rPropSet->setPropertyValue( WW8_ASCII2STR( pMap->pPropNm ), aTmp );
+ }
+ // now calculate the size of the control
+ String sExpText;
+ sExpText.Fill( nDefSize, 'M' );
+ OutputDevice* pOut = Application::GetDefaultDevice();
+ pOut->Push( PUSH_FONT | PUSH_MAPMODE );
+ pOut->SetMapMode( MapMode( MAP_100TH_MM ));
+ pOut->SetFont( aFont );
+ rSz.Width = pOut->GetTextWidth( sExpText );
+ rSz.Height = pOut->GetTextHeight();
+
+ pOut->Pop();
+}
+
+
+BOOL WW8FormulaEditBox::Convert(const uno::Reference< lang::XMultiServiceFactory >& rServiceFactory,
+ uno::Reference< form::XFormComponent >& rFComp, com::sun::star::awt::Size &rSz)
+{
+ rtl::OUString sServiceName = WW8_ASCII2STR( "com.sun.star.form.component.TextField" );
+ uno::Reference< uno::XInterface > xCreate = rServiceFactory->createInstance( sServiceName );
+ if( !xCreate.is() )
+ return FALSE;
+
+ rFComp = uno::Reference< form::XFormComponent >( xCreate, uno::UNO_QUERY );
+ if( !rFComp.is() )
+ return FALSE;
+
+ uno::Reference< beans::XPropertySet > xPropSet( xCreate, uno::UNO_QUERY );
+
+ uno::Any aTmp;
+ if( sTitle.Len() )
+ {
+ //UniString sTmp(pName,RTL_TEXTENCODING_ASCII_US);
+ aTmp <<= rtl::OUString( sTitle );
+ }
+ else
+ aTmp <<= rtl::OUString( sName );
+ xPropSet->setPropertyValue( WW8_ASCII2STR( "Name" ), aTmp );
+
+ BOOL bTemp = FALSE;
+ aTmp.setValue(&bTemp, ::getBooleanCppuType());
+ xPropSet->setPropertyValue( WW8_ASCII2STR( "MultiLine" ), aTmp);
+
+ aTmp <<= (sal_Int16)0; //No Border
+ xPropSet->setPropertyValue( WW8_ASCII2STR( "Border" ), aTmp);
+
+ if( sDefault.Len() )
+ {
+ aTmp <<= rtl::OUString( sDefault );
+ xPropSet->setPropertyValue( WW8_ASCII2STR( "DefaultText" ), aTmp);
+ }
+
+ rSz.Width = 300;
+ rSz.Height = 200;
+
+ aTmp <<= (sal_Int32)(0x00C0C0C0);
+ xPropSet->setPropertyValue( WW8_ASCII2STR( "BackgroundColor" ), aTmp);
+
+ SetOthersFromDoc(rFComp,rSz,xPropSet);
+
+ aTmp <<= (sal_Int16)nSize;
+ xPropSet->setPropertyValue( WW8_ASCII2STR( "MaxTextLen" ), aTmp);
+
+ if( sToolTip.Len() )
+ {
+ aTmp <<= rtl::OUString( sToolTip );
+ xPropSet->setPropertyValue( WW8_ASCII2STR( "HelpText" ), aTmp );
+ }
+
+ return TRUE;
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8par3.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.53 2000/09/18 16:05:00 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.52 2000/08/22 17:41:01 cmc
+ #77315# 95 Formulas, bad string read
+
+ Revision 1.51 2000/07/20 14:47:21 khz
+ #75709# Remove NumRule from Node wit no/invalid LFO
+
+ Revision 1.50 2000/06/26 09:58:42 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.49 2000/06/23 10:29:55 khz
+ #71707# Make sure pNdNum is set to zero when no numbering on node
+
+ Revision 1.48 2000/05/25 08:06:52 khz
+ Piece Table optimization, Unicode changes, Bugfixes
+
+ Revision 1.47 2000/05/24 08:56:11 jp
+ Bugfixes for Unicode
+
+ Revision 1.46 2000/05/18 14:02:21 khz
+ UNO3 conversion: use rtl::OUString - not UString
+
+ Revision 1.45 2000/05/16 11:24:13 khz
+ Unicode code-conversion
+
+ Revision 1.44 2000/03/27 15:35:59 cmc
+ #74329# Ported WW97 Controls to uno codebase
+
+ Revision 1.43 2000/03/24 12:05:52 khz
+ Task #74368# IsInvalidOrToBeMergedTabCell() stops duplicate reset of NumRule
+
+ Revision 1.42 2000/03/21 15:04:57 os
+ UNOIII
+
+ Revision 1.41 2000/03/02 16:57:48 khz
+ Task #70716# Set AbsLSpace and FirstLineOffset *allways* on SwNumFmt
+
+ Revision 1.40 2000/02/23 17:10:46 khz
+ Task #71704# multiply negative aLVL.nDxaLeft by -1
+
+ Revision 1.39 2000/02/11 14:40:20 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.38 2000/02/09 11:29:46 khz
+ Task #70473# char_t --> sal_Unicode
+
+ Revision 1.37 1999/12/21 09:56:55 khz
+ Task #71144# ...component.Edit -> ...component.TextField
+
+ Revision 1.36 1999/12/09 14:52:33 khz
+ Task #67145# Don't set NumRule if OutlineNumrule is set on Style
+
+ Revision 1.35 1999/12/03 16:52:17 khz
+ Task #67145# Don't set NumRule if OutlineNumrule is set on Style
+
+ Revision 1.34 1999/11/29 17:50:28 khz
+ Task #70168# rNumFmt.SetFirstLineOffset() must get negative parameter
+
+ Revision 1.33 1999/11/29 11:28:25 jp
+ compiler error - missing include
+
+ Revision 1.32 1999/11/22 15:22:33 os
+ headers added
+
+ Revision 1.31 1999/11/19 16:40:21 os
+ modules renamed
+
+ Revision 1.30 1999/11/19 15:13:16 khz
+ Code Review: Replace WW8ReadByte()... by rSt >> nVari and remove rSt.GetError() calls
+
+ Revision 1.29 1999/10/08 09:26:15 khz
+ Import Redlining
+
+ Revision 1.28 1999/06/21 13:27:34 JP
+ Bug #60448#: Read_LFOPosition - set empty numrule item
+
+
+ Rev 1.27 21 Jun 1999 15:27:34 JP
+ Bug #60448#: Read_LFOPosition - set empty numrule item
+
+ Rev 1.26 21 Jun 1999 09:37:56 JP
+ AdjustLVL: break the charfmt search at first equal charfmt and save it at current level
+
+ Rev 1.25 09 Apr 1999 18:01:40 KHZ
+ Task #64348# Bei Listen-Overrides nur bei Ungleichheit neue Liste anlegen!
+
+ Rev 1.24 07 Apr 1999 16:31:40 KHZ
+ Task #64355# Nummerierungs-Postfix-String jetzt auch bei 1-stuf. Nummerierung
+
+ Rev 1.23 31 Mar 1999 20:19:20 KHZ
+ Task #61646# Falls Num. gesetzt, darf 1st-Zl-Einzuege am Abs. nur negativ sein.
+
+ Rev 1.22 30 Mar 1999 07:51:24 MIB
+ #62984#: XServiceManager -> XMultiServiceFactory
+
+ Rev 1.21 09 Mar 1999 11:07:56 MIB
+ #62980#: TF_ONE51-Umstallungen fuer Controls beendet
+
+ Rev 1.20 05 Mar 1999 20:50:44 KHZ
+ WICHTIGE UMBENENNUNG: VertOrientation_TOP (war: VerticalOrientation_TOP)
+
+ Rev 1.19 27 Feb 1999 13:35:02 KHZ
+ Task #62367# fuehrende 0xFF vor List-Format-Overrides ueberspringen
+
+ Rev 1.18 24 Feb 1999 14:28:50 KHZ
+ Bug #60733#: UpdateAll - vorm erzeugen des Textes die NumRules aktualisieren
+
+ Rev 1.17 17 Feb 1999 15:26:26 TJ
+ uno::Reference< XShapeFactory > raus
+
+ Rev 1.16 09 Feb 1999 17:01:54 HR
+ uno::Any: & eingefuegt
+
+ Rev 1.15 27 Jan 1999 09:45:06 OS
+ #56371# TF_ONE51
+
+ Rev 1.14 15 Dec 1998 11:08:46 KHZ
+ Tasks #59580# #58561# #58961# (Nachzieher aus SRV506) (2)
+
+ Rev 1.13 15 Dec 1998 10:44:18 KHZ
+ Tasks #59580# #58561# #58961# (Nachzieher aus SRV506)
+
+ Rev 1.12 03 Dec 1998 14:16:42 JP
+ Bug #58961#: Teilfix - Char.._N Format verwenden
+
+ Rev 1.11 02 Dec 1998 13:29:10 KHZ
+ Task #59837# ungueltiger Listenbasisstyle 0x0FFF auf Standardstyle gesetzt
+
+ Rev 1.10 17 Nov 1998 10:48:54 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.9 30 Oct 1998 10:29:20 KHZ
+ Task #57836# GPF, da irrtuemlich 255 gesetzt statt nWW8MaxListLevel
+
+ Rev 1.8 23 Sep 1998 09:52:00 KHZ
+ Syntaxfehler fuer OS/2
+
+ Rev 1.7 16 Sep 1998 15:56:42 MIB
+ #56513#: VC-Controls -> UNO-Controls
+
+ Rev 1.6 15 Sep 1998 12:58:36 HJS
+ '#56161#
+
+ Rev 1.5 05 Aug 1998 09:36:54 KHZ
+ Task #54382# hart attributierte L-Einzuege bei Listen
+
+ Rev 1.4 29 Jul 1998 13:55:34 KHZ
+ Task #52607# numm. Listen
+
+ Rev 1.3 28 Jul 1998 22:27:14 KHZ
+ Task #52607# nummerierte Listen (Teil 3)
+
+ Rev 1.2 28 Jul 1998 13:02:04 KHZ
+ Task #52607# nummerierte Listen (Teil 2)
+
+ Rev 1.1 28 Jul 1998 11:06:04 KHZ
+ Task #52607# nummerierte Listen (Teil 1)
+
+ Rev 1.0 16 Jun 1998 11:08:02 KHZ
+ Initial revision.
+
+*************************************************************************/
diff --git a/sw/source/filter/ww8/ww8par4.cxx b/sw/source/filter/ww8/ww8par4.cxx
new file mode 100644
index 000000000000..b0b35bd2e9f3
--- /dev/null
+++ b/sw/source/filter/ww8/ww8par4.cxx
@@ -0,0 +1,777 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8par4.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <tools/solar.h>
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _TOOLS_TEMPFILE_HXX
+#include <tools/tempfile.hxx>
+#endif
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+#ifndef _FILTER_HXX //autogen
+#include <svtools/filter.hxx>
+#endif
+#ifndef _SVDOOLE2_HXX //autogen
+#include <svx/svdoole2.hxx>
+#endif
+#ifndef _MSDFFIMP_HXX
+#include <svx/msdffimp.hxx>
+#endif
+#ifndef _SVX_IMPGRF_HXX
+#include <svx/impgrf.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen wg. SwFmtCntnt
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#ifndef _NDGRF_HXX //autogen wg. SwGrfNode
+#include <ndgrf.hxx>
+#endif
+/*
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif*/
+#ifndef _DOCSH_HXX
+#include <docsh.hxx> // fuer Ole-Node
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx> // Progress
+#endif
+#ifndef _WW8SCAN_HXX
+#include <ww8scan.hxx> // __WW_NEEDS_COPY
+#endif
+#ifndef _WW8PAR_HXX
+#include <ww8par.hxx>
+#endif
+#ifndef _WW8PAR2_HXX
+#include <ww8par2.hxx> // WWFlyPara::BoxUpWidth()
+#endif
+/*
+#ifndef _REDLENUM_HXX
+#include <redlenum.hxx>
+#endif*/
+#ifndef _REDLINE_HXX
+#include <redline.hxx>
+#endif
+#ifndef _FLTSHELL_HXX
+#include <fltshell.hxx>
+#endif
+#ifndef _MSOCXIMP_HXX
+#include <msocximp.hxx>
+#endif
+#ifndef _UNODRAW_HXX
+#include <unodraw.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_DRAWING_XSHAPE_HPP_
+#include <com/sun/star/drawing/XShape.hpp>
+#endif
+
+
+struct OLE_MFP
+{
+ INT16 mm; // 0x6 int
+ INT16 xExt; // 0x8 int in 1/100 mm
+ INT16 yExt; // 0xa int in 1/100 mm
+ INT16 hMF; // 0xc int
+};
+
+
+SV_IMPL_OP_PTRARR_SORT(WW8AuthorInfos, WW8AuthorInfo_Ptr)
+
+
+static BOOL SwWw8ReadScaling( INT16& rX, INT16& rY, SvStorageRef& rSrc1 )
+{
+ // Skalierungsfaktoren holen:
+ // Informationen in PIC-Stream ( durch ausprobieren )
+ // 0x0 (l)cb
+ // 0x08 .. 0x0a Flags ??
+ // 0x08 Inh: 1 / 0
+ // 0x09 Inh: 0,8,0x18
+ // 0x0a Inh: immer 8, MAP_ANISOTROPIC ???
+ // 0x0b Inh: immer 0
+ // 0x0c, 0x10 Originalgroesse x,y in 1/100 mm
+ // 0x14, 0x16 Originalgroesse x,y in tw
+ // 0x2c, 0x30 Skalierung x,y in Promille
+ // 0x34, 0x38, 0x3c, 0x40 Crop Left, Top, Right, Bot in tw
+
+ SvStorageStreamRef xSrc3 = rSrc1->OpenStream( WW8_ASCII2STR( "\3PIC" ));
+ SvStorageStream* pS = xSrc3;
+ pS->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ pS->Seek( STREAM_SEEK_TO_END );
+
+ ASSERT( pS->Tell() >= 76, "+OLE-PIC-Stream is shorter than 76 Byte" );
+
+ INT32 nOrgWidth,
+ nOrgHeight,
+ nScaleX,
+ nScaleY,
+ nCropLeft,
+ nCropTop,
+ nCropRight,
+ nCropBottom;
+ pS->Seek( 0x14 );
+ *pS >> nOrgWidth // Original Size in 1/100 mm
+ >> nOrgHeight;
+ pS->Seek( 0x2c );
+ *pS >> nScaleX // Scaling in Promille
+ >> nScaleY
+ >> nCropLeft // Cropping in 1/100 mm
+ >> nCropTop
+ >> nCropRight
+ >> nCropBottom;
+
+ rX = nOrgWidth - nCropLeft - nCropRight;
+ rY = nOrgHeight - nCropTop - nCropBottom;
+ if( 10 > nScaleX
+ || 65536 < nScaleX
+ || 10 > nScaleY
+ || 65536 < nScaleY)
+ {
+ ASSERT( !pS, "+OLE-Scalinginformation in PIC-Stream wrong" );
+ return FALSE;
+ }
+ else
+ {
+ rX = (INT16)( (long)rX * nScaleX / 1000 );
+ rY = (INT16)( (long)rY * nScaleY / 1000 );
+ }
+ return TRUE;
+}
+
+static BOOL SwWw6ReadMetaStream( GDIMetaFile& rWMF, OLE_MFP* pMfp,
+ SvStorageRef& rSrc1 )
+{
+ SvStorageStreamRef xSrc2 = rSrc1->OpenStream( WW8_ASCII2STR( "\3META" ));
+ SvStorageStream* pSt = xSrc2;
+ pSt->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ ULONG nRead = pSt->Read( pMfp, sizeof(*pMfp ) );
+ // Mini-Placable-Header lesen
+ if( nRead != sizeof( *pMfp ) )
+ return FALSE;
+
+#if defined __BIGENDIAN
+ pMfp->mm = SWAPSHORT( pMfp->mm );
+ pMfp->xExt = SWAPSHORT( pMfp->xExt );
+ pMfp->yExt = SWAPSHORT( pMfp->yExt );
+#endif // __BIGENDIAN
+
+ if( pMfp->mm == 94 || pMfp->mm == 99 )
+ {
+ ASSERT( !pSt, "+OLE: Falscher Metafile-Typ" );
+ return FALSE;
+ }
+ if( pMfp->mm != 8 )
+ {
+ ASSERT( !pSt, "+OLE: Falscher Metafile-Typ ( nicht Anisotropic )" );
+ }
+ if( !pMfp->xExt || !pMfp->yExt )
+ {
+ ASSERT( !pSt, "+OLE: Groesse von 0 ???" );
+ return FALSE;
+ }
+ BOOL bOk = ReadWindowMetafile( *pSt, rWMF ); // WMF lesen
+ // *pSt >> aWMF geht nicht ohne placable Header
+ if( !bOk || pSt->GetError() || rWMF.GetActionCount() == 0 ){
+ ASSERT( !pSt, "+OLE: Konnte Metafile nicht lesen" );
+ return FALSE;
+ }
+
+ rWMF.SetPrefMapMode( MapMode( MAP_100TH_MM ) );
+
+
+ // MetaFile auf neue Groesse skalieren und
+ // neue Groesse am MetaFile setzen
+ Size aOldSiz( rWMF.GetPrefSize() );
+ Size aNewSiz( pMfp->xExt, pMfp->yExt );
+ Fraction aFracX( aNewSiz.Width(), aOldSiz.Width() );
+ Fraction aFracY( aNewSiz.Height(), aOldSiz.Height() );
+
+ rWMF.Scale( aFracX, aFracY );
+ rWMF.SetPrefSize( aNewSiz );
+
+ return TRUE;
+}
+
+static BOOL SwWw6ReadMacPICTStream( Graphic& rGraph, SvStorageRef& rSrc1 )
+{
+ // 03-META-Stream nicht da. Vielleicht ein 03-PICT ?
+ SvStorageStreamRef xSrc4 = rSrc1->OpenStream( WW8_ASCII2STR( "\3PICT" ));
+ SvStorageStream* pStp = xSrc4;
+ pStp->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ BYTE aTestA[10]; // Ist der 01Ole-Stream ueberhaupt vorhanden
+ ULONG nReadTst = pStp->Read( aTestA, sizeof( aTestA ) );
+ if(nReadTst != sizeof(aTestA))
+ return FALSE;
+
+ pStp->Seek( STREAM_SEEK_TO_BEGIN );
+
+ // Mac-Pict steht im 03PICT-StorageStream
+ // allerdings ohne die ersten 512 Bytes, die
+ // bei einem MAC-PICT egal sind ( werden nicht ausgewertet )
+ String sExt(WW8_ASCII2STR( "pct" ));
+ TempFile aTempFile(aEmptyStr, &sExt);
+ aTempFile.EnableKillingFile();
+ {
+ SvFileStream aOut( aTempFile.GetName(),
+ STREAM_READ|STREAM_WRITE|STREAM_TRUNC );
+
+
+ BYTE* pBuf = new BYTE[512];
+ memset( pBuf, 0, 512 );
+ aOut.Write( pBuf, 512 ); // Anfang Pict: 512 Byte Muell
+ delete( pBuf );
+ aOut << *pStp; // Storage-Stream rausschreiben
+ }
+
+ GraphicFilter& rGF = *::GetGrfFilter(); // lese ueber Filter ein
+#if SUPD<591
+ BOOL bOk = 0 == rGF.ImportGraphic( rGraph, DirEntry(aTempFile.GetName()), GRFILTER_FORMAT_DONTKNOW );
+#else
+ BOOL bOk = 0 == rGF.ImportGraphic( rGraph, INetURLObject(aTempFile.GetName()), GRFILTER_FORMAT_DONTKNOW );
+#endif
+ return bOk;
+}
+
+
+using namespace ::com::sun::star;
+
+
+SwFrmFmt* SwWW8ImplReader::ImportOle( const Graphic* pGrf,
+ const SfxItemSet* pFlySet )
+{
+ SwFrmFmt* pFmt = 0;
+ if( !(nIniFlags & WW8FL_NO_OLE ))
+ {
+ ASSERT( pStg, "ohne storage geht hier fast gar nichts!" );
+
+ ::SetProgressState( nProgress, rDoc.GetDocShell() ); // Update
+
+ INT16 nX, nY; // nX, nY ist Ziel-Groesse
+ BOOL bOleOk = TRUE;
+ Graphic aGraph;
+
+ String aSrcStgName = '_';
+ aSrcStgName += String::CreateFromInt32( nObjLocFc ); // ergibt Name "_4711"
+
+ SvStorageRef xSrc0 = pStg->OpenStorage( WW8_ASCII2STR( "ObjectPool" ) );
+
+ if( pGrf )
+ {
+ aGraph = *pGrf;
+ const Size aSizeTwip = OutputDevice::LogicToLogic(
+ aGraph.GetPrefSize(),
+ aGraph.GetPrefMapMode(),
+ MAP_TWIP );
+ nX = (INT16) aSizeTwip.Width();
+ nY = (INT16) aSizeTwip.Height();
+ }
+ else
+ {
+ SvStorageRef xSrc1 = xSrc0->OpenStorage( aSrcStgName,
+ STREAM_READWRITE| STREAM_SHARE_DENYALL );
+ OLE_MFP aMfp;
+ GDIMetaFile aWMF;
+ if( SwWw6ReadMetaStream( aWMF, &aMfp, xSrc1 ) )
+ {
+ /* ignore size, take Size in SwWw8ReadScaling instead!
+ INT16 nXO = (INT16)( (long)aMfp.xExt * 144 / 254 );
+ INT16 nYO = (INT16)( (long)aMfp.yExt * 144 / 254 );
+ */
+ SwWw8ReadScaling( nX, nY, xSrc1 );
+ aGraph = Graphic( aWMF );
+ }
+ // 03-META-Stream nicht da. Vielleicht ein 03-PICT ?
+ else if( SwWw6ReadMacPICTStream( aGraph, xSrc1 ) )
+ {
+ const Size aSizeTwip = OutputDevice::LogicToLogic(
+ aGraph.GetPrefSize(),
+ aGraph.GetPrefMapMode(),
+ MAP_TWIP );
+ nX = (INT16) aSizeTwip.Width();
+ nY = (INT16) aSizeTwip.Height();
+ bOleOk = FALSE; // PICT: kein WMF da -> Grafik statt OLE
+ }
+#if 0
+//JP 23.06.99 - if the OLE-Storage does not contained the streams META
+// or PICT, then import the grafic from the escher.
+// But the Question is, is the OLE-Storage then a valid
+// OLE-Object and is the user be able to activate it. So it's
+// better to import it as grafic.
+
+ else
+ {
+ ULONG nOldObjLocFc = nOldObjLocFc;
+ nObjLocFc = 0;
+
+ SwFrmFmt* pGrfFmt = ImportGraf();
+ if( pGrfFmt )
+ {
+ const SwNodeIndex* pCntIdx = pGrfFmt->GetCntnt( FALSE ).
+ GetCntntIdx();
+ if( pCntIdx )
+ {
+ SwNodeIndex aIdx( *pCntIdx, 1 );
+ if( aIdx.GetNode().IsGrfNode() )
+ {
+ // get the grafic of the node and delete it
+ // then complete, because its become a OLE-Object
+ aGraph = aIdx.GetNode().GetGrfNode()->GetGrf();
+ Size aSz( aIdx.GetNode().GetGrfNode()->GetTwipSize() );
+ nX = (INT16) aSz.Width();
+ nY = (INT16) aSz.Height();
+
+ rDoc.DelLayoutFmt( pGrfFmt );
+ pGrfFmt = 0;
+ }
+ }
+ pFmt = pGrfFmt;
+ }
+ nObjLocFc = nOldObjLocFc;
+ }
+#endif
+ } // StorageStreams wieder zu
+
+//#ifdef DEBUG
+ SvStorageRef xSrc1 = xSrc0->OpenStorage( aSrcStgName,
+ STREAM_READWRITE| STREAM_SHARE_DENYALL );
+
+ if(!pFormImpl)
+ pFormImpl = new SwImportControls(rDoc.GetDocShell(),pPaM);
+ uno::Reference< drawing::XShape > xRef;
+ if (pFormImpl->ReadOCXStream(xSrc1,&xRef,bFloatingCtrl))
+ {
+ bOleOk = FALSE;
+ uno::Reference< beans::XPropertySet > xPropSet( xRef, uno::UNO_QUERY );
+ uno::Reference< lang::XUnoTunnel> xTunnel( xPropSet, uno::UNO_QUERY);
+ SwXShape *pSwShape = 0;
+ if(xTunnel.is())
+ {
+ pSwShape = (SwXShape*)xTunnel->getSomething(SwXShape::getUnoTunnelId());
+ }
+ return pSwShape ? (SwFrmFmt*)(pSwShape->GetRegisteredIn()) : 0;
+ }
+//#endif
+
+
+ if( GRAPHIC_GDIMETAFILE == aGraph.GetType() ||
+ GRAPHIC_BITMAP == aGraph.GetType() )
+ {
+ ::SetProgressState( nProgress, rDoc.GetDocShell() ); // Update
+
+ Point aTmpPoint;
+ Rectangle aRect( aTmpPoint, Size( nX, nY ) );
+ SwAttrSet aFlySet( rDoc.GetAttrPool(), RES_FRMATR_BEGIN,
+ RES_FRMATR_END-1);
+ if( !pFlySet )
+ {
+ pFlySet = &aFlySet;
+
+ if( !bNew )
+ Reader::ResetFrmFmtAttrs( aFlySet ); // Abstand/Umrandung raus
+
+ SwFmtAnchor aAnchor( FLY_IN_CNTNT );
+ aAnchor.SetAnchor( pPaM->GetPoint() );
+ aFlySet.Put( aAnchor );
+
+ aFlySet.Put( SwFmtFrmSize( ATT_FIX_SIZE, nX, nY ) );
+ aFlySet.Put( SwFmtVertOrient( 0, VERT_TOP, FRAME ));
+
+ if( pSFlyPara ) // OLE im Rahmen ?
+ { // ok, Rahmen auf Bildgroesse vergroessern
+ // ( nur wenn Auto-Breite )
+ pSFlyPara->BoxUpWidth( nX );
+ }
+ }
+ else
+ {
+ const SwFmtFrmSize* pSize = (SwFmtFrmSize*)pFlySet->GetItem(
+ RES_FRM_SIZE, FALSE );
+ if( pSize )
+ aRect.SetSize( pSize->GetSize() );
+ }
+
+
+ if( bOleOk && !( nIniFlags & WW8FL_OLE_TO_GRAF ))
+ {
+ ULONG nOldPos = pDataStream->Tell();
+
+ pDataStream->Seek(STREAM_SEEK_TO_END);
+ SvStream *pTmpData;
+ if (nObjLocFc < pDataStream->Tell())
+ {
+ pTmpData = pDataStream;
+ pTmpData->Seek( nObjLocFc );
+ }
+ else
+ pTmpData = 0;
+ SvStorageRef xDst0( rDoc.GetDocShell()->GetStorage() );
+ SdrOle2Obj* pRet = SvxMSDffManager::CreateSdrOLEFromStorage(
+ aSrcStgName, xSrc0, xDst0,
+ aGraph, aRect, pTmpData,
+ SwMSDffManager::GetFilterFlags());
+ if( pRet ) // Ole-Object wurde eingefuegt
+ {
+ pFmt = rDoc.Insert( *pPaM, &pRet->GetObjRef(), pFlySet );
+ delete pRet; // das brauchen wir nicht mehr
+ }
+ else
+ bOleOk = FALSE;
+ pDataStream->Seek( nOldPos );
+ }
+
+ if( !bOleOk || (nIniFlags & WW8FL_OLE_TO_GRAF) )
+ pFmt = rDoc.Insert( *pPaM,
+ aEmptyStr, aEmptyStr, // Name der Grafik !!
+ &aGraph,
+ pFlySet, // Attribute fuer den FlyFrm
+ 0 ); // Attribute fuer die Grafik
+ }
+ }
+ return pFmt;
+}
+
+
+void SwWW8ImplReader::ReadRevMarkAuthorStrTabl( SvStream& rStrm,
+ INT32 nTblPos,
+ INT32 nTblSiz,
+ SwDoc& rDoc )
+{
+ SvStrings aAuthorNames( 0, 16 );
+ WW8ReadSTTBF( !bVer67, rStrm, nTblPos, nTblSiz, bVer67 ? 2 : 0,
+ eStructCharSet, aAuthorNames );
+
+ for( USHORT nAuthor = 0; nAuthor < aAuthorNames.Count(); ++nAuthor )
+ {
+ // Store author in doc
+ USHORT nSWId = rDoc.InsertRedlineAuthor( *aAuthorNames[ nAuthor ] );
+ // Store matchpair
+ if( !pAuthorInfos )
+ pAuthorInfos = new WW8AuthorInfos;
+ WW8AuthorInfo* pAutorInfo = new WW8AuthorInfo( nAuthor, nSWId );
+ if( 0 == pAuthorInfos->Insert( pAutorInfo ) )
+ delete pAutorInfo;
+ }
+ aAuthorNames.DeleteAndDestroy( 0, aAuthorNames.Count() );
+}
+
+/*
+ Revision Marks ( == Redlining )
+*/
+// insert or delete content (change char attributes resp.)
+void SwWW8ImplReader::Read_CRevisionMark(SwRedlineType eType, USHORT nId, BYTE* pData, short nLen )
+{
+ // there *must* be a SprmCIbstRMark[Del] and a SprmCDttmRMark[Del]
+ // pointing to the very same char position as our SprmCFRMark[Del]
+ if( !pPlcxMan ) return;
+ const BYTE* pSprmCIbstRMark;
+ const BYTE* pSprmCDttmRMark;
+// const BYTE* pSprmCIdslRMark;
+ if( REDLINE_FORMAT == eType )
+ {
+ pSprmCIbstRMark = pData+1;
+ pSprmCDttmRMark = pData+3;
+ }
+ else
+ {
+ BOOL bIns = (REDLINE_INSERT == eType);
+ if( bVer67 )
+ {
+ pSprmCIbstRMark = pPlcxMan->HasCharSprm( 69 );
+ pSprmCDttmRMark = pPlcxMan->HasCharSprm( 70 );
+ }
+ else
+ {
+ pSprmCIbstRMark = pPlcxMan->HasCharSprm( bIns ? 0x4804 : 0x4863 );
+ pSprmCDttmRMark = pPlcxMan->HasCharSprm( bIns ? 0x6805 : 0x6864 );
+// pSprmCIdslRMark = pPlcxMan->HasCharSprm( bIns ? 0x4807 : 0x4867 );
+ }
+ }
+ if( !pSprmCIbstRMark || !pSprmCDttmRMark ) return;
+
+ if( nLen < 0 )
+ {
+ // end of current revision mark
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_FLTR_REDLINE );
+ }
+ else
+ {
+ // start of new revision mark
+ USHORT nWWAutNo = SVBT16ToShort( pSprmCIbstRMark );
+ UINT32 nWWDate = SVBT32ToLong( pSprmCDttmRMark );
+ WW8AuthorInfo aEntry( nWWAutNo );
+ USHORT nPos;
+ if( pAuthorInfos->Seek_Entry( &aEntry, &nPos ) )
+ {
+ const WW8AuthorInfo* pAuthor = pAuthorInfos->GetObject( nPos );
+ if( pAuthor )
+ {
+ USHORT nAutorNo = pAuthor->nOurId;
+ DateTime aStamp(WW8ScannerBase::WW8DTTM2DateTime(nWWDate));
+
+ SwFltRedline aNewAttr(eType, nAutorNo, aStamp);
+
+ const SwFltRedline* pOldAttr =
+ (const SwFltRedline*)pCtrlStck->GetOpenStackAttr(
+ *pPaM->GetPoint(),
+ RES_FLTR_REDLINE );
+ // 1st look if there is already another redline Attribute
+ // set on this text-region
+ // If so, we take it's data and store it as 'previous'
+ // or the other way around
+ if( pOldAttr )
+ { // Insert on top of Delete ? This is not allowed !
+ BOOL bDateWrongWayAround
+ = (REDLINE_INSERT == eType)
+ && (REDLINE_DELETE == pOldAttr->eType);
+ if( bDateWrongWayAround
+ || ( (aStamp < pOldAttr->aStamp)
+ && ! ( (REDLINE_INSERT == pOldAttr->eType)
+ && (REDLINE_DELETE == eType)
+ )
+ )
+ )
+ {
+ if( bDateWrongWayAround
+ && !(nAutorNo == pOldAttr->nAutorNo) )
+ {
+ aNewAttr.eTypePrev = eType;
+ aNewAttr.nAutorNoPrev = nAutorNo;
+ aNewAttr.aStampPrev = aStamp;
+ aNewAttr.eType = pOldAttr->eType;
+ aNewAttr.nAutorNo = pOldAttr->nAutorNo;
+ aNewAttr.aStamp = pOldAttr->aStamp;
+ }
+ // else do nothing: so only the INSERT will be stored!
+ }
+ else
+ {
+ aNewAttr.eTypePrev = pOldAttr->eType;
+ aNewAttr.nAutorNoPrev = pOldAttr->nAutorNo;
+ aNewAttr.aStampPrev = pOldAttr->aStamp;
+ }
+ }
+ NewAttr( aNewAttr );
+ }
+ }
+ }
+}
+// insert new content
+void SwWW8ImplReader::Read_CFRMark( USHORT nId, BYTE* pData, short nLen )
+{
+ Read_CRevisionMark( REDLINE_INSERT, nId, pData, nLen );
+}
+// delete old content
+void SwWW8ImplReader::Read_CFRMarkDel( USHORT nId, BYTE* pData, short nLen )
+{
+ Read_CRevisionMark( REDLINE_DELETE, nId, pData, nLen );
+}
+// change properties of content ( == char formating)
+void SwWW8ImplReader::Read_CPropRMark( USHORT nId, BYTE* pData, short nLen )
+{
+ // complex (len is always 7)
+ // 1 byte - chp.fPropRMark
+ // 2 bytes - chp.ibstPropRMark
+ // 4 bytes - chp.dttmPropRMark;
+ Read_CRevisionMark( REDLINE_FORMAT, nId, pData, nLen );
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8par4.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.31 2000/09/18 16:05:01 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.30 2000/08/22 17:09:02 cmc
+ #77743# OLE Import, bad seek & bad FilterOptions
+
+ Revision 1.29 2000/06/29 20:59:11 jp
+ new MS Filteroptions - change OLE-Objects to StarOffice Objects
+
+ Revision 1.28 2000/06/13 08:24:46 os
+ using UCB
+
+ Revision 1.27 2000/05/18 11:01:01 jp
+ Changes for Unicode
+
+ Revision 1.26 2000/05/16 11:06:24 khz
+ Unicode code-conversion
+
+ Revision 1.25 2000/05/05 14:06:55 cmc
+ #75358# WW8 97Controls Import Fix
+
+ Revision 1.24 2000/04/03 15:29:02 cmc
+ #74329# Floating Form Controls
+
+ Revision 1.23 2000/03/27 11:45:31 cmc
+ #74329# Added OCX Reader to ImportOle
+
+ Revision 1.22 2000/03/22 14:35:32 khz
+ Task #74390# release pAutorInfo in case Insert() was not sucessful
+
+ Revision 1.21 2000/02/28 12:04:32 khz
+ Task #73544#: Use size and cropping from \3PIC stream rather than \3META
+
+ Revision 1.20 2000/02/21 13:08:27 jp
+ #70473# changes for unicode
+
+ Revision 1.19 2000/02/11 14:40:23 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.18 1999/10/21 15:36:41 khz
+ Import Redlining (4)
+
+ Revision 1.17 1999/10/13 21:04:34 khz
+ Import Redlining (3)
+
+ Revision 1.16 1999/10/13 13:27:45 khz
+ Import Redlining (2)
+
+ Revision 1.15 1999/10/08 09:26:19 khz
+ Import Redlining
+
+ Revision 1.14 1999/09/08 13:26:09 khz
+ Better performance by reducing use of SWAP..() and SVBT..To..() methods
+
+ Revision 1.13 1999/08/30 19:53:06 JP
+ Bug #68219#: no static members - be reentrant
+
+
+ Rev 1.12 30 Aug 1999 21:53:06 JP
+ Bug #68219#: no static members - be reentrant
+
+ Rev 1.11 09 Aug 1999 14:16:10 JP
+ read W95 format from stream
+
+ Rev 1.10 30 Jul 1999 13:59:28 JP
+ Bug #60140#: CreateSdrOLEFromStorage - read OLE1-Objects
+
+ Rev 1.9 23 Jun 1999 12:46:58 JP
+ delete unused variables
+
+ Rev 1.8 26 Apr 1999 19:22:54 JP
+ Bug #65298#: Grf/Ole bei Zeichenbindung immer Oben zu Grundline anordnen
+
+ Rev 1.7 12 Jan 1999 12:29:54 MH
+ chg: Syntax GCC
+
+ Rev 1.6 30 Nov 1998 18:18:20 JP
+ Task #59822#: OLE-Objecte importieren
+
+ Rev 1.5 30 Nov 1998 17:46:54 JP
+ Task #59822#: OLE-Objecte importieren
+
+ Rev 1.4 27 Nov 1998 09:45:22 JP
+ Task #59822#: OLE-Objecte importieren - Namen korrekt ermitteln
+
+ Rev 1.3 25 Nov 1998 11:29:14 JP
+ Task #59822#: OLE-Objecte einlesen - SetVisArea soll kein modified setzen
+
+ Rev 1.2 24 Nov 1998 20:47:50 JP
+ Task #59822#: OLE-Objecte einlesen
+
+ Rev 1.1 18 Sep 1998 13:10:10 JP
+ Bug #56310#: ImportOLE - die Zeichenbindung nicht doppelt machen
+
+ Rev 1.0 16 Jun 1998 11:08:16 KHZ
+ Initial revision.
+
+*************************************************************************/
+
+
+
+
diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx
new file mode 100644
index 000000000000..9685eb0f5afb
--- /dev/null
+++ b/sw/source/filter/ww8/ww8par5.cxx
@@ -0,0 +1,3270 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8par5.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <ctype.h> // tolower
+#include <stdio.h> // sscanf()
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _UCBHELPER_CONTENT_HXX
+#include <ucbhelper/content.hxx>
+#endif
+#include <tools/solar.h>
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _LINKMGR_HXX //autogen
+#include <so3/linkmgr.hxx>
+#endif
+
+#ifndef _ZFORLIST_HXX
+#include <svtools/zforlist.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+#ifndef _UNOTOOLS_CHARCLASS_HXX
+#include <unotools/charclass.hxx>
+#endif
+
+#ifndef _FMTFLD_HXX //autogen
+#include <fmtfld.hxx>
+#endif
+#ifndef _FMTHBSH_HXX //autogen
+#include <fmthbsh.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx> // fuer SwPam
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _CHARATR_HXX
+#include <charatr.hxx> // class SwFmtFld
+#endif
+#ifndef _FLDDAT_HXX
+#include <flddat.hxx> // class SwDateTimeField
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx> // class SwPageNumberField
+#endif
+#ifndef _REFFLD_HXX
+#include <reffld.hxx> // class SwGetRefField
+#endif
+#ifndef _BOOKMRK_HXX // class SwBookmark
+#include <bookmrk.hxx>
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx> // class SwSetExpField
+#endif
+#ifndef _DBFLD_HXX
+#include <dbfld.hxx> // class SwDBField
+#endif
+#ifndef _FINDER_HXX
+#include <finder.hxx> // class SwPathFinder, GetTOIName()
+#endif
+#ifndef _TOX_HXX
+#include <tox.hxx>
+#endif
+#ifndef _FLTINI_HXX
+#include <fltini.hxx> // ReadFilterFlags
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx> // class SwSection
+#endif
+#ifndef _WW8SCAN_HXX
+#include <ww8scan.hxx> // WW8FieldDesc
+#endif
+#ifndef _FLTSHELL_HXX
+#include <fltshell.hxx> // fuer den Attribut Stack
+#endif
+#ifndef _WW8PAR_HXX
+#include <ww8par.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _FMTINFMT_HXX
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _CHPFLD_HXX
+#include <chpfld.hxx>
+#endif
+#ifndef _FTNIDX_HXX
+#include <ftnidx.hxx>
+#endif
+#ifndef _TXTFTN_HXX
+#include <txtftn.hxx>
+#endif
+#ifndef _VIEWSH_HXX
+#include <viewsh.hxx>
+#endif
+#ifndef _SHELLRES_HXX
+#include <shellres.hxx>
+#endif
+
+#define WWF_INVISIBLE 86 // Bit-Nummer fuer Invisible ( IniFlags )
+#define MAX_FIELDLEN 64000
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::ucb;
+using namespace ::com::sun::star::uno;
+using namespace ::ucb;
+using namespace ::rtl;
+
+extern void sw3io_ConvertFromOldField( SwDoc& rDoc, USHORT& rWhich,
+ USHORT& rSubType, ULONG &rFmt,
+ USHORT nVersion );
+
+
+
+class _ReadFieldParams
+{
+ String aData;
+ xub_StrLen nLen, nFnd, nNext, nSavPtr;
+// sal_Unicode cLastChar;
+
+public:
+ _ReadFieldParams( const String& rData );
+ ~_ReadFieldParams();
+
+ xub_StrLen GoToTokenParam();
+ long SkipToNextToken();
+ xub_StrLen GetTokenSttPtr() const { return nFnd; }
+ void SetNextPtr( xub_StrLen _nNext ) { nNext = _nNext; }
+
+ xub_StrLen FindNextStringPiece( xub_StrLen _nStart = STRING_NOTFOUND );
+ BOOL GetTokenSttFromTo(xub_StrLen* _pFrom, xub_StrLen* _pTo, xub_StrLen _nMax);
+
+ String GetResult() const;
+};
+
+
+_ReadFieldParams::_ReadFieldParams( const String& _rData )
+ : aData( _rData ), nLen( _rData.Len() ), nNext( 0 )
+{
+ /*
+ erstmal nach einer oeffnenden Klammer oder einer Leerstelle oder einem
+ Anfuehrungszeichen oder einem Backslash suchen, damit der Feldbefehl
+ (also INCLUDEPICTURE bzw EINFUeGENGRAFIK bzw ...) ueberlesen wird
+ */
+ while( (nLen > nNext) && (aData.GetChar( nNext ) == ' ') )
+ ++nNext;
+
+ sal_Unicode c;
+ while( nLen > nNext
+ && (c = aData.GetChar( nNext )) != ' '
+ && c != '"'
+ && c != '\\'
+ && c != 132 )
+ ++nNext;
+
+ nFnd = nNext;
+ nSavPtr = nNext;
+// cLastChar = aData.GetChar( nSavPtr );
+}
+
+
+_ReadFieldParams::~_ReadFieldParams()
+{
+// aData.SetChar( nSavPtr, cLastChar );
+}
+
+
+String _ReadFieldParams::GetResult() const
+{
+ return (STRING_NOTFOUND == nFnd)
+ ? aEmptyStr
+ : aData.Copy( nFnd, (nSavPtr - nFnd) );
+}
+
+
+xub_StrLen _ReadFieldParams::GoToTokenParam()
+{
+ xub_StrLen nOld = nNext;
+ if( -2 == SkipToNextToken() )
+ return GetTokenSttPtr();
+ nNext = nOld;
+ return STRING_NOTFOUND;
+}
+
+long _ReadFieldParams::SkipToNextToken() // ret: -2: NOT a '\' parameter but normal Text
+{
+ long nRet = -1; // Ende
+// aData.SetChar( nSavPtr, cLastChar );
+ if( (STRING_NOTFOUND != nNext)
+ && (nLen > nNext)
+ && STRING_NOTFOUND != ( nFnd = FindNextStringPiece( nNext ) ))
+ {
+ nSavPtr = nNext;
+// cLastChar = aData.GetChar( nSavPtr );
+
+ if( '\\' == aData.GetChar( nFnd )
+ && '\\' != aData.GetChar( nFnd + 1 ) ) // Options-Parameter gefunden
+ {
+ nRet = aData.GetChar( ++nFnd );
+ nNext = ++nFnd; // und dahinter setzen
+ }
+ else
+ {
+ nRet = -2;
+ if( (STRING_NOTFOUND != nSavPtr )
+ && ('"' == aData.GetChar( nSavPtr - 1 )) )
+ {
+ nSavPtr--;
+// cLastChar = aData.GetChar( nSavPtr );
+ }
+// aData.SetChar( nSavPtr, 0 );
+ }
+ }
+ return nRet;
+}
+
+// FindNextPara sucht naechsten Backslash-Parameter oder naechste Zeichenkette
+// bis zum Blank oder naechsten "\" oder zum schliessenden Anfuehrungszeichen
+// oder zum String-Ende von pStr.
+//
+// Ausgabe ppNext (falls ppNext != 0) Suchbeginn fuer naechsten Parameter bzw. 0
+//
+// Returnwert: 0 falls String-Ende erreicht,
+// ansonsten Anfang des Paramters bzw. der Zeichenkette
+//
+xub_StrLen _ReadFieldParams::FindNextStringPiece(const xub_StrLen nStart)
+{
+ xub_StrLen n = ( STRING_NOTFOUND == nStart ) ? nFnd : nStart; // Anfang
+ xub_StrLen n2; // Ende
+
+ nNext = STRING_NOTFOUND; // Default fuer nicht gefunden
+
+ while( (nLen > n) && (aData.GetChar( n ) == ' ') )
+ ++n;
+
+ if( nLen == n )
+ return STRING_NOTFOUND; // String End reached!
+
+ if( (aData.GetChar( n ) == '"') // Anfuehrungszeichen vor Para?
+ || (aData.GetChar( n ) == 132) )
+ {
+ n++; // Anfuehrungszeichen ueberlesen
+ n2 = n; // ab hier nach Ende suchen
+ while( (nLen > n2)
+ && (aData.GetChar( n2 ) != '"')
+ && (aData.GetChar( n2 ) != 147) )
+ n2++; // Ende d. Paras suchen
+ }
+ else // keine Anfuehrungszeichen
+ {
+ n2 = n; // ab hier nach Ende suchen
+ while( (nLen > n2) && (aData.GetChar( n2 ) != ' ') ) // Ende d. Paras suchen
+ {
+ if( aData.GetChar( n2 ) == '\\' )
+ {
+ if( aData.GetChar( n2+1 ) == '\\' )
+ n2 += 2; // Doppel-Backslash -> OK
+ else
+ {
+ if( n2 > n )
+ n2--;
+ break; // einfach-Backslash -> Ende
+ }
+ }
+ else
+ n2++; // kein Backslash -> OK
+ }
+ }
+ if( nLen > n2 )
+ {
+ if(aData.GetChar( n2 ) != ' ') n2++;
+ nNext = n2;
+ }
+ return n;
+}
+
+
+
+// read parameters "1-3" or 1-3 with both values between 1 and nMax
+BOOL _ReadFieldParams::GetTokenSttFromTo(USHORT* pFrom, USHORT* pTo, USHORT nMax)
+{
+ USHORT nStart = 0;
+ USHORT nEnd = 0;
+ xub_StrLen n = GoToTokenParam();
+ if( STRING_NOTFOUND != n )
+ {
+
+ String sParams( GetResult() );
+
+ xub_StrLen nIndex = 0;
+ String sStart( sParams.GetToken(0, '-', nIndex) );
+ if( STRING_NOTFOUND != nIndex )
+ {
+ nStart = sStart.ToInt32();
+ nEnd = sParams.Copy( nIndex ).ToInt32();
+ }
+ }
+ if( pFrom ) *pFrom = nStart;
+ if( pTo ) *pTo = nEnd;
+
+ return nStart && nEnd && (nMax >= nStart) && (nMax >= nEnd);
+}
+
+
+
+
+/* */
+
+
+//----------------------------------------
+// Initialisieren der Feld-FilterFlags
+//----------------------------------------
+
+void SwWW8ImplReader::Read_FieldIniFlags()
+{
+ USHORT i;
+ nFieldFlags = ReadFilterFlags( "WWF" );
+ if ( SwFltGetFlag( nFieldFlags, SwFltControlStack::HYPO ) ){
+ SwFltSetFlag( nFieldFlags, SwFltControlStack::BOOK_TO_VAR_REF );
+ SwFltSetFlag( nFieldFlags, SwFltControlStack::TAGS_DO_ID );
+ SwFltSetFlag( nFieldFlags, SwFltControlStack::TAGS_IN_TEXT );
+ SwFltSetFlag( nFieldFlags, SwFltControlStack::ALLOW_FLD_CR );
+ for( i = 0; i < 3; i++ ){
+ nFieldTagAlways[i] = 0; // Hypo-Default: bekannte Felder
+ } // nicht taggen
+ nFieldTagBad[0] = 0xffffffff; // unbekannte Felder taggen
+ nFieldTagBad[1] = 0xffffffff; //
+ nFieldTagBad[2] = 0xffffffef; // "EinfuegenText" nicht taggen
+ }else{
+ nFieldTagAlways[0] = ReadFilterFlags( "WWFA0" );
+ nFieldTagAlways[1] = ReadFilterFlags( "WWFA1" );
+ nFieldTagAlways[2] = ReadFilterFlags( "WWFA2" );
+ nFieldTagBad[0] = ReadFilterFlags( "WWFB0" );
+ nFieldTagBad[1] = ReadFilterFlags( "WWFB1" );
+ nFieldTagBad[2] = ReadFilterFlags( "WWFB2" );
+ }
+}
+
+//----------------------------------------
+// Bookmarks
+//----------------------------------------
+
+long SwWW8ImplReader::Read_Book( WW8PLCFManResult* pRes, BOOL bStartAttr )
+{
+ if( !bStartAttr )
+ {
+ ASSERT( bStartAttr, "Read_Book::Nanu ?" );
+ pEndStck->SetAttr( *pPaM->GetPoint(), RES_FLTR_BOOKMARK );
+ return 0;
+ }
+ WW8PLCFx_Book* pB = pPlcxMan->GetBook(); // muesste auch ueber pRes.nCo2OrIdx gehen
+ if( !pB ){
+ ASSERT( pB, "WW8PLCFx_Book - Pointer nicht da" );
+ return 0;
+ }
+
+ if( pB->GetIsEnd() ){
+#if 0
+ rDoc.Insert( *pPaM, 'E', CHARSET_ANSI );
+#endif
+ pEndStck->SetAttr( *pPaM->GetPoint(), RES_FLTR_BOOKMARK,
+ TRUE, pB->GetHandle() );
+ return 0;
+ }
+
+ eBookStatus eB = pB->GetStatus();
+ if( ( eB & BOOK_IGNORE ) != 0 )
+ return 0; // Bookmark zu ignorieren
+#if 0
+ rDoc.Insert( *pPaM, 'A', CHARSET_ANSI );
+#endif
+
+ const String* pName = pB->GetName();
+ if( !pName
+ || pName->EqualsIgnoreCaseAscii( "_Toc" ) ) // "_Toc*" ist ueberfluessig
+ return 0;
+
+//JP 16.11.98: ToUpper darf auf keinen Fall gemacht werden, weil der Bookmark-
+// name ein Hyperlink-Ziel sein kann!
+
+ // Fuer UEbersetzung Bookmark -> Variable setzen
+ long nLen = pB->GetLen();
+ if( nLen > MAX_FIELDLEN )
+ nLen = MAX_FIELDLEN;
+
+ String sTxt;
+ long nOldPos = pStrm->Tell();
+ nLen = pSBase->WW8ReadString( *pStrm, sTxt, pB->GetStartPos(), nLen,
+ eStructCharSet );
+
+ pStrm->Seek( nOldPos );
+ String aVal;
+ QuoteString( aVal, sTxt ); // Nur druckbare Zeichen !
+ // incl. Zeichensatz - UEbersetzung
+
+ pEndStck->NewAttr( *pPaM->GetPoint(), SwFltBookmark( *pName, aVal,
+ pB->GetHandle(), ( eB & BOOK_ONLY_REF ) != 0 ) );
+ return 0;
+}
+
+//----------------------------------------------------------------------
+// allgemeine Hilfsroutinen zum Auseinanderdroeseln der Parameter
+//----------------------------------------------------------------------
+
+// ConvertFFileName uebersetzt FeldParameter-Namen u. ae. in den
+// System-Zeichensatz.
+// Gleichzeitig werden doppelte Backslashes in einzelne uebersetzt.
+void SwWW8ImplReader::ConvertFFileName( String& rName, const String& rOrg )
+{
+ rName = rOrg;
+ rName.SearchAndReplaceAllAscii( "\\\\", String( '\\' ));
+
+ // ggfs. anhaengende Anfuehrungszeichen entfernen
+ if( rName.Len() && '"' == rName.GetChar( rName.Len()-1 ))
+ rName.Erase( rName.Len()-1, 1);
+}
+
+// ConvertUFNneme uebersetzt FeldParameter-Namen u. ae. in den
+// System-Zeichensatz und Upcased sie ( z.B. fuer Ref-Felder )
+void SwWW8ImplReader::ConvertUFName( String& rName )
+{
+ GetAppCharClass().toUpper( rName );
+}
+
+void lcl_ConvertSequenceName( SwWW8ImplReader& rReader, String& rSequenceName )
+{
+ rReader.ConvertUFName( rSequenceName );
+ if( '0' <= rSequenceName.GetChar( 0 )
+ && '9' >= rSequenceName.GetChar( 0 ) )
+ rSequenceName.Insert('_', 0);
+}
+/*
+// FindNextPara sucht Naechsten Parameter und setzt
+// eine 0 hinter sein Ende ( im Original-String )!
+// Bei Anfuehrungszeichen
+// ( normal oder typographisch ) wird der ganze String genommen.
+// Escape-Chars ( Backslash ) werden nicht beachtet.
+// Rueckgabe: wenn ppNext != 0 dann Suchbeginn fuer naechsten Parameter
+// Return 0 fuer nicht gefunden oder Anfang des Paramters
+static char* FindNextPara( char* pStr, char** ppNext = 0 )
+{
+ if( ppNext )
+ *ppNext = 0; // Default fuer nicht gefunden
+ char* p = pStr; // Anfang
+ char* p2; // Ende
+
+ while( *p == ' ' ) // Spaces vor Para ueberlesen
+ p++;
+ if( !*p )
+ return 0;
+ if( *p == '"' || *(BYTE*)p == 132 ){ // Anfuehrungszeichen vor Para
+ p++; // Anfuehrungszeichen ueberlesen
+ p2 = p; // ab hier nach Ende suchen
+ while( *p2 != '"' && *(BYTE*)p2 != 147 && *p2 != 0 )
+ p2++; // Ende d. Paras suchen
+ }else{ // keine Anfuehrungszeichen
+ p2 = p; // ab hier nach Ende suchen
+ while( *p2 != ' ' && *p2 != 0 ){ // Ende d. Paras suchen
+ if( *p2 == '\\' ){
+ if( *(p2 + 1) == '\\' )
+ p2 += 2; // Doppel-Backslash -> OK
+ else
+ break; // einfach-Backslash -> Ende
+ }else{
+ p2++; // kein Backslash -> OK
+ }
+ }
+ }
+ *p2 = 0; // p ist jetzt String auf Para
+ if( ppNext )
+ *ppNext = p2 + 1;
+ return p;
+}
+
+// FindNextPara2 funktioniert wie FindNextPara, jedoch wird beim
+// Weglassen von Anfuehrungszeichen bis zum Backslash gesucht
+// und nicht nur bis zum Space. Wird fuer Macro-AnzeigeTexte benutzt.
+static char* FindNextPara2( char* pStr, char** ppNext = 0 )
+{
+ if( ppNext )
+ *ppNext = 0; // Default fuer nicht gefunden
+ // #64447#
+ char* p = pStr; // Anfang
+ char* p2; // Ende
+
+ while( *p == ' ' ) // Spaces vor Para ueberlesen
+ p++;
+ if( !*p )
+ return 0;
+ if( *p == '"' || *(BYTE*)p == 132 ){ // Anfuehrungszeichen vor Para
+ p++; // Anfuehrungszeichen ueberlesen
+ p2 = p; // ab hier nach Ende suchen
+ while( *p2 != '"' && *(BYTE*)p2 != 147 && *p2 != 0 )
+ p2++; // Ende d. Paras suchen
+ }else{ // keine Anfuehrungszeichen
+ p2 = p; // ab hier nach Ende suchen
+ while( *p2 != 0 && *p2 != '\\' )
+ p2++; // Ende d. Paras suchen
+ }
+ *p2 = 0; // p ist jetzt String auf Para
+ if( ppNext )
+ *ppNext = p2 + 1;
+ return p;
+}
+
+// Find1stPara sucht 1. Parameter und setzt
+// eine 0 hinter sein Ende ( im Original-String )!
+// Dabei wird das 2. Wort des Strings gesucht. Bei Anfuehrungszeichen
+// ( normal oder typographisch ) wird der ganze String genommen.
+// Escape-Chars ( Backslash ) werden nicht beachtet.
+// Rueckgabe: wenn ppNext != 0 dann Suchbeginn fuer naechsten Parameter
+// Return 0 fuer nicht gefunden oder Anfang des Paramters
+static char* Find1stPara( char* pStr, char** ppNext = 0 )
+{
+ // Anfang
+ char* p = pStr;
+
+ while( *p == ' ' ) // evtl. Spaces vor Feldtyp ueberlesen
+ p++;
+ while( *p != ' ' && *p != 0 // FeldTyp ueberlesen
+ && *p != '"' && *(BYTE*)p != 132 )
+
+ p++;
+
+ // Ende
+ char* p2 = pStr;
+
+ while( *p == ' ' ) // Spaces vor Para ueberlesen
+ p++;
+ if( !*p )
+ return 0;
+ if( *p == '"' || *(BYTE*)p == 132 ){ // Anfuehrungszeichen vor Para
+ p++; // Anfuehrungszeichen ueberlesen
+ p2 = p; // ab hier nach Ende suchen
+ while( *p2 != '"' && *(BYTE*)p2 != 147 && *p2 != 0 )
+ p2++; // Ende d. Paras suchen
+ }else{ // keine Anfuehrungszeichen
+ p2 = p; // ab hier nach Ende suchen
+ while( *p2 != ' ' && *p2 != 0 )
+ p2++; // Ende d. Paras suchen
+ }
+ *p2 = 0; // p ist jetzt String auf Para
+ if( ppNext )
+ *ppNext = p2 + 1;
+ return p;
+}
+*/
+
+// FindParaStart() finds 1st Parameter that follows '\' and cToken
+// and returns start of this parameter or STRING_NOT_FOUND.
+xub_StrLen FindParaStart( const String& rStr, sal_Unicode cToken, sal_Unicode cToken2 )
+{
+ BOOL bStr = FALSE; // innerhalb String ignorieren
+
+ for( xub_StrLen nBuf=0; nBuf+1 < rStr.Len(); nBuf++ )
+ {
+ if( rStr.GetChar( nBuf ) == '"' )
+ bStr = !bStr;
+
+ if( !bStr
+ && rStr.GetChar( nBuf ) == '\\'
+ && ( rStr.GetChar( nBuf + 1 ) == cToken
+ || rStr.GetChar( nBuf + 1 ) == cToken2 ) )
+ {
+ nBuf += 2;
+ // skip spaces between cToken and it's parameters
+ while( nBuf < rStr.Len()
+ && rStr.GetChar( nBuf ) == ' ' )
+ nBuf++;
+ return nBuf < rStr.Len() ? nBuf : STRING_NOTFOUND; // return start of parameters
+ }
+ }
+ return STRING_NOTFOUND;
+}
+
+// FindPara() findet den ersten Parameter mit '\' und cToken. Es wird
+// ein neuer String allokiert ( der vom Aufrufer deallokiert werden muss )
+// und alles, was zum Parameter gehoert, wird in ihm zurueckgeliefert.
+String FindPara( const String& rStr, sal_Unicode cToken, sal_Unicode cToken2 )
+{
+ xub_StrLen n2; // Ende
+ xub_StrLen n = FindParaStart( rStr, cToken, cToken2 ); // Anfang
+ if( STRING_NOTFOUND == n )
+ return aEmptyStr;
+
+ if( rStr.GetChar( n ) == '"'
+ || rStr.GetChar( n ) == 132 )
+ { // Anfuehrungszeichen vor Para
+ n++; // Anfuehrungszeichen ueberlesen
+ n2 = n; // ab hier nach Ende suchen
+ while( n2 < rStr.Len()
+ && rStr.GetChar( n2 ) != 147
+ && rStr.GetChar( n2 ) != '"' )
+ n2++; // Ende d. Paras suchen
+ }
+ else
+ { // keine Anfuehrungszeichen
+ n2 = n; // ab hier nach Ende suchen
+ while( n2 < rStr.Len()
+ && rStr.GetChar( n2 ) != ' ' )
+ n2++; // Ende d. Paras suchen
+ }
+ return rStr.Copy( n, n2-n );
+}
+
+
+static SvxExtNumType GetNumTypeFromName( const String& rStr, BOOL bAllowPageDesc = FALSE )
+{
+ SvxExtNumType eTyp = bAllowPageDesc ? SVX_NUM_PAGEDESC : SVX_NUM_ARABIC;
+ if( rStr.EqualsIgnoreCaseAscii( "Arabi", 0, 5 ) ) // Arabisch, Arabic
+ eTyp = SVX_NUM_ARABIC;
+ else if( rStr.EqualsIgnoreCaseAscii( "misch", 2, 5 ) ) // r"omisch
+ eTyp = SVX_NUM_ROMAN_LOWER;
+ else if( rStr.EqualsIgnoreCaseAscii( "MISCH", 2, 5 ) ) // R"OMISCH
+ eTyp = SVX_NUM_ROMAN_UPPER;
+ else if( rStr.EqualsIgnoreCaseAscii( "alphabeti", 0, 9 ) )// alphabetisch, alphabetic
+ eTyp = ( rStr.GetChar( 0 ) == 'A' )
+ ? SVX_NUM_CHARS_UPPER_LETTER_N
+ : SVX_NUM_CHARS_LOWER_LETTER_N;
+ else if( rStr.EqualsIgnoreCaseAscii( "roman", 0, 5 ) ) // us
+ eTyp = ( rStr.GetChar( 0 ) == 'R' )
+ ? SVX_NUM_ROMAN_UPPER
+ : SVX_NUM_ROMAN_LOWER;
+ return eTyp;
+}
+
+
+static SvxExtNumType GetNumberPara( String& rStr, BOOL bAllowPageDesc = FALSE )
+{
+ String s( FindPara( rStr, '*', '*' ) ); // Ziffernart
+ SvxExtNumType aType = GetNumTypeFromName( s, bAllowPageDesc );
+ return aType;
+}
+
+
+ULONG MSDateTimeFormatToSwFormat( String& rParams, SwDoc& rDoc, USHORT nLang )
+{
+ // get Doc Numberformatter
+ SvNumberFormatter* pFormatter = rDoc.GetNumberFormatter();
+
+ // tell the Formatter about the new entry
+ UINT16 nCheckPos = 0;
+ INT16 nType = NUMBERFORMAT_DEFINED;
+ ULONG nKey = 0;
+
+// if( !
+ pFormatter->PutandConvertEntry( rParams, nCheckPos, nType, nKey,
+ nLang, LANGUAGE_SYSTEM )
+;//)
+// nKey = 0;
+
+ return nKey;
+}
+
+static short GetTimeDatePara( SwDoc& rDoc, String& rStr, ULONG& rFormat )
+{
+ String aParams( FindPara( rStr, '@', '@' ) );// Date/Time
+ if( 0 == aParams.Len() )
+ { // No Date / Time
+ rFormat = NF_DATE_SYS_NNNNDMMMMYYYY;
+ return NUMBERFORMAT_DATE;
+ }
+
+ const SvxLanguageItem& rLang = (SvxLanguageItem&)(rDoc.GetAttrPool().
+ GetDefaultItem( RES_CHRATR_LANGUAGE ));
+
+ ULONG nNumFmtIdx = MSDateTimeFormatToSwFormat( aParams, rDoc,
+ rLang.GetValue() );
+
+ short nNumFmtType = NUMBERFORMAT_UNDEFINED;
+ if( nNumFmtIdx )
+ {
+ SvNumberFormatter* pFormatter = rDoc.GetNumberFormatter();
+ nNumFmtType = pFormatter->GetType( nNumFmtIdx );
+ }
+ rFormat = nNumFmtIdx;
+
+ return nNumFmtType;
+
+}
+
+
+/*
+ Class ''WW8FldParaGuess'' removed as obsolete. (khz, 05/15/2000)
+
+ We are using class ''_ReadFieldParams'' instead.
+
+//-----------------------------------------------------------------------
+// class WW8FldParaGuess
+// Erraten von Parametern, auch bei weggelassenen oder typographischen
+// Anfuehrungszeichen. Es wird versucht, dem WW-Interpreter in allen
+// zweifelhafen Faellen moeglichst nahe zu kommen....
+//-----------------------------------------------------------------------
+
+// class WW8FldParaGuess uebernimmt die Feld-Parametererkennung,
+// z.Zt. nur fuer INHALT- und XE-PseudoFelder und fuer TOX-Felder.
+// Der Default-Parameter ( ohne "\" ) wird mit, ohne und mit typographischen
+// Anfuehrungszeichen erkannt. Andere Parameter genauso.
+// Dabei ist die Toleranz der Erkennung ( Falsche oder teilweise
+// Anfuehrungszeichen, Switches vorne oder hinten, ... ) dem WW-Interpreter
+// so weit wie moeglich angepasst.
+
+class WW8FldParaGuess{
+ unsigned char* pFld; // FeldCode
+ unsigned char* pEnd; // Ende FeldCode
+ unsigned char* pStdPara; // Pointer in pFld auf Standard-Parameter
+ unsigned char **ppSwitch; // Array von Zeigern in pFld auf Switch-Inhalte
+ BYTE nSwitches; // Anzahl der zu erkennenden Switches
+ BOOL bOk;
+ BOOL bVanish;
+
+ void InitSwitches( const char* pSwitchPara );
+
+public:
+ //WW8FldParaGuess( SvStream& rStrm, const char* pSwitchPara, WW8_FC fcMin );
+ WW8FldParaGuess( unsigned char* pCode, const char* pSwitchPara );
+ ~WW8FldParaGuess();
+ BOOL Ok() const { return bOk; };
+ const unsigned char* GetStdPara() const { return ( bOk ) ? pStdPara : 0; };
+ const unsigned char* GetSwitch( BYTE nIdx ) const
+ { return ( nIdx < nSwitches ) ? ppSwitch[nIdx] : 0; };
+ const BOOL GetSwitchRange( BYTE nIdx, USHORT* pnStart, USHORT* pnEnd )
+ const;
+};
+
+// WWIsQuote( c ) : ist c ein normales oder typographisches Anfuehrungszeichen ?
+inline static BOOL WWIsQuote( char c )
+{
+ return c == '"' || (BYTE)c == 132 || (BYTE)c == 147;
+}
+
+// WWIsQuoteEnd( c ) : ist c ein normales oder typographisches Anfuehrungszeichen
+// oder eine \0 ?
+inline static BOOL WWIsQuoteEnd( char c )
+{
+ return c == '"' || (BYTE)c == 132 || (BYTE)c == 147 || c == 0;
+}
+
+// WWIsNoQuoteEnd( c ) : ist c ein Space oder ein normales oder typographisches
+// Anfuehrungszeichen oder eine \0 ?
+inline static BOOL WWIsNoQuoteEnd( char c )
+{
+ return c == ' ' || c == '"' || (BYTE)c == 132 || (BYTE)c == 147 || c == 0;
+}
+
+void WW8FldParaGuess::InitSwitches( const char* pSwitchPara )
+{
+ pStdPara = 0;
+ ppSwitch = 0;
+
+ nSwitches = ( pSwitchPara ) ? strlen( pSwitchPara ) : 0;
+ if( nSwitches ){
+ ppSwitch = new unsigned char*[nSwitches];
+ memset( ppSwitch, 0, sizeof( unsigned char* ) * nSwitches );
+ }
+#ifdef DEBUG
+ unsigned char* (*ppSwitchD)[10]
+ = (unsigned char*(*)[10])ppSwitch; // zum Ansehen im Debugger
+ typedef unsigned char* WWCharPtr;
+ typedef WWCharPtr WW10CharPtr[10];
+ typedef WW10CharPtr* WWp10CharPtr;
+ WWp10CharPtr ppSD = (WWp10CharPtr)ppSwitch;
+#endif
+
+ unsigned char* p;
+ for( p = pFld; p < pEnd; p++ ){
+ while( *p == ' ' ) // Spaces ueberlesen
+ p++;
+ BOOL bTok = p[0] == '\\' && p[1] != '\\';
+ BYTE nSw = 0;
+ if( bTok ){
+ for( nSw = 0; nSw < nSwitches; nSw++ ){
+ unsigned char c = pSwitchPara[nSw];
+ if ( p[1] == c || p[1] == toupper(c) ) // keine Umlaute noetig
+ break; // OK, gueltiges Token
+ }
+ bTok = nSw < nSwitches; // doch kein gueltiges Token ?
+ }
+ if( bTok ){ // Token isolieren
+ unsigned char* p2 = p + 2;
+ while( *p2 == ' ' ) // Spaces vor Parameter ueberlesen
+ p2++;
+ if( WWIsQuote( *p2 ) ){ // in " eingeschlossen
+ unsigned char *p3 = p2 + 1; // Anfang gefunden
+ if( nSwitches )
+ ppSwitch[nSw] = p3; // bei mehreren gleichen gilt der letzte
+ while( !WWIsQuoteEnd( *p3 ) )// Ende suchen
+ p3++;
+ *p3 = 0; // Ende markieren
+ p = p3; // ab hier weitersuchen
+ }
+ else
+ { // nicht gequotet
+ unsigned char *p3 = p2;
+ if( nSwitches )
+ ppSwitch[nSw] = p2; // Anfang gefunden ( letzter gilt )
+ while( (p3 < pEnd) && !WWIsNoQuoteEnd( *p3 ) ) // Ende suchen
+ p3++;
+ *p3 = 0; // Ende markieren
+ p = p3; // ab hier weitersuchen
+ }
+ }else if( !pStdPara ){ // nur der erste kommt durch
+ unsigned char* p2;
+ if( WWIsQuote( *p ) ){ // in " eingeschlossen
+ p2 = pStdPara = p + 1; // Anfang gefunden
+ while( !WWIsQuoteEnd( *p2 ) )// Ende suchen
+ p2++;
+ }
+ else
+ { // nicht gequotet
+ p2 = pStdPara = p;
+ while( (p2 < pEnd) && !WWIsNoQuoteEnd( *p2 ) ) // Ende suchen
+ p2++;
+ }
+ *p2 = 0; // Ende markieren
+ p = p2; // ab hier weitersuchen
+ }
+ }
+}
+
+
+// ctor WW8FldParaGuess, Erklaerung siehe anderer ctor.
+WW8FldParaGuess::WW8FldParaGuess( unsigned char* pCode,
+ const char* pSwitchPara )
+:pStdPara( 0 ), ppSwitch( 0 ), nSwitches( 0 ), bOk( TRUE ), bVanish( FALSE )
+{
+ pFld = pEnd = pCode;
+ // search field code end
+ while( *pEnd && (0x014 != *pEnd) && (0x015 != *pEnd) )
+ ++pEnd;
+ InitSwitches( pSwitchPara );
+}
+
+WW8FldParaGuess::~WW8FldParaGuess()
+{
+ if( bVanish ) // ja -> ctor hat alloziert
+ delete[] ( pFld );
+ delete[] ( ppSwitch );
+}
+
+// GetSwitchRange() interpretiert Parameter, die zwingend ein '-' zwischen
+// 2 USHORTs haben, z.B. VERZEICHNIS \o "1-3"
+const BOOL WW8FldParaGuess::GetSwitchRange( BYTE nIdx, USHORT* pnStart,
+USHORT* pnEnd ) const
+{
+ if( nIdx >= nSwitches )
+ return FALSE;
+ unsigned char* p = ppSwitch[nIdx];
+ if( !p )
+ return FALSE;
+ unsigned char* p1 = (unsigned char*)strchr( (char*)p, '-' );
+ if( !p1 )
+ return FALSE;
+ *p1++ = 0;
+ int nVal;
+ sscanf( (char*)p, "%d", &nVal );
+ *pnStart = (USHORT)nVal;
+ sscanf( (char*)p1, "%d", &nVal );
+ *pnEnd = (USHORT)nVal;
+ return TRUE;
+}
+*/
+
+//-----------------------------------------
+// Felder
+//-----------------------------------------
+// Am Ende des Einlesens entsprechende Felder updaten ( z.Zt. die Referenzen )
+void SwWW8ImplReader::UpdateFields()
+{
+// rDoc.GetSysFldType( RES_GETREFFLD )->UpdateFlds(); // Referenzen
+// rDoc.UpdateFlds(); // SetExp-Fields
+// rDoc.UpdateFlds(); // alles ???
+// rDoc.UpdateExpFlds(); // SetExp-Fields
+ rDoc.SetUpdateExpFldStat(); // JP: neu fuer alles wichtige
+ rDoc.SetInitDBFields( TRUE ); // Datenbank-Felder auch
+}
+
+typedef eF_ResT (SwWW8ImplReader:: *FNReadField)( WW8FieldDesc*, String& );
+static FNReadField aWW8FieldTab[93] = {
+0,
+0,
+0,
+&SwWW8ImplReader::Read_F_Ref, // 3
+0,
+0,
+&SwWW8ImplReader::Read_F_Set, // 6
+0,
+&SwWW8ImplReader::Read_F_Tox, // 8
+0,
+0,
+0,
+&SwWW8ImplReader::Read_F_Seq, // 12
+&SwWW8ImplReader::Read_F_Tox, // 13
+&SwWW8ImplReader::Read_F_DocInfo, // 14
+&SwWW8ImplReader::Read_F_DocInfo, // 15
+&SwWW8ImplReader::Read_F_DocInfo, // 16
+&SwWW8ImplReader::Read_F_Author, // 17
+&SwWW8ImplReader::Read_F_DocInfo, // 18
+&SwWW8ImplReader::Read_F_DocInfo, // 19
+&SwWW8ImplReader::Read_F_DocInfo, // 20
+&SwWW8ImplReader::Read_F_DocInfo, // 21
+&SwWW8ImplReader::Read_F_DocInfo, // 22
+&SwWW8ImplReader::Read_F_DocInfo, // 23
+&SwWW8ImplReader::Read_F_DocInfo, // 24
+&SwWW8ImplReader::Read_F_DocInfo, // 25
+&SwWW8ImplReader::Read_F_Anz, // 26
+&SwWW8ImplReader::Read_F_Anz, // 27
+&SwWW8ImplReader::Read_F_Anz, // 28
+&SwWW8ImplReader::Read_F_FileName, // 29
+&SwWW8ImplReader::Read_F_TemplName, // 30
+&SwWW8ImplReader::Read_F_DateTime, // 31
+&SwWW8ImplReader::Read_F_DateTime, // 32
+&SwWW8ImplReader::Read_F_CurPage, // 33
+0,
+0,
+0,
+&SwWW8ImplReader::Read_F_PgRef, // 37
+&SwWW8ImplReader::Read_F_InputVar, // 38
+&SwWW8ImplReader::Read_F_Input, // 39
+0,
+&SwWW8ImplReader::Read_F_DBNext, // 41
+0,
+0,
+&SwWW8ImplReader::Read_F_DBNum, // 44
+0,
+0,
+0,
+0,
+0,
+0,
+&SwWW8ImplReader::Read_F_Macro, // 51
+&SwWW8ImplReader::Read_F_ANumber, // 52
+&SwWW8ImplReader::Read_F_ANumber, // 53
+&SwWW8ImplReader::Read_F_ANumber, // 54
+0,
+
+
+0, // 56: VERKNUePFUNG // fehlt noch !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+
+&SwWW8ImplReader::Read_F_Symbol, // 57
+&SwWW8ImplReader::Read_F_Embedd, // 58
+&SwWW8ImplReader::Read_F_DBField, // 59
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+&SwWW8ImplReader::Read_F_IncludePicture, // 67
+&SwWW8ImplReader::Read_F_IncludeText, // 68
+0,
+&SwWW8ImplReader::Read_F_FormTextBox, // 70
+&SwWW8ImplReader::Read_F_FormCheckBox, // 71
+&SwWW8ImplReader::Read_F_NoteReference, // 72
+0, /*&SwWW8ImplReader::Read_F_Tox*/
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+&SwWW8ImplReader::Read_F_FormListBox, // 83
+0, // 84
+&SwWW8ImplReader::Read_F_DocInfo, // 85
+0, // 86
+&SwWW8ImplReader::Read_F_OCX, // 87
+&SwWW8ImplReader::Read_F_Hyperlink, // 88
+0, // 89
+0, // 90
+0, // 91
+0 // 92 - Dummy leer Methode
+ }; // 92 == alle ueber 91
+
+
+
+// Read_Field liest ein Feld ein oder, wenn es nicht gelesen werden kann,
+// wird 0 zurueckgegeben, so dass das Feld vom Aufrufer textuell gelesen wird.
+// Returnwert: Gesamtlaenge des Feldes ( zum UEberlesen )
+long SwWW8ImplReader::Read_Field( WW8PLCFManResult* pRes, BOOL )
+{
+ ASSERT( ( sizeof( aWW8FieldTab ) / sizeof( *aWW8FieldTab ) == 93 ),
+ "FeldFunc-Tabelle stimmt nicht" );
+ if( nIniFlags & WW8FL_NO_FLD )
+ return 0;
+
+ WW8FieldDesc aF;
+
+ WW8PLCFx_FLD* pF = pPlcxMan->GetFld();
+ ASSERT( pF, "WW8PLCFx_FLD - Pointer nicht da" );
+ if( !pF ) return 0;
+
+ BOOL bOk = pF->GetPara( pRes->nCp2OrIdx, aF );
+
+ USHORT n = ( aF.nId <= 91 ) ? aF.nId : 92; // alle > 91 werden 92
+ USHORT nI = n / 32; // # des UINT32
+ ULONG nMask = 1 << ( n % 32 ); // Maske fuer Bits
+
+ if( nFieldTagAlways[nI] & nMask ) // Flag: Tag it
+ return Read_F_Tag( &aF ); // Resultat nicht als Text
+
+ if( !bOk || !aF.nId ) // Feld kaputt
+ return aF.nLen; // -> ignorieren
+
+ if( aF.nId > 91
+// || ( aF.nOpt & 0x40 ) // 0x40-Result Nest -> OK
+ ) // WW: Nested Field
+ if( nFieldTagBad[nI] & nMask ) // Flag: Tag it when bad
+ return Read_F_Tag( &aF ); // Resultat nicht als Text
+ else
+ return aF.nLen;
+
+ if( aWW8FieldTab[aF.nId] == 0 // keine Routine vorhanden
+ || aF.bCodeNest )
+ {
+ if( nFieldTagBad[nI] & nMask ) // Flag: Tag it when bad
+ return Read_F_Tag( &aF ); // Resultat nicht als Text
+ // Lese nur Resultat
+ if( aF.bResNest )
+ return aF.nLen; // Result nested -> nicht brauchbar
+
+ return aF.nLen - aF.nLRes - 1; // so viele ueberlesen, das Resultfeld
+ // wird wie Haupttext eingelesen
+
+ }
+ else
+ { // Lies Feld
+ long nOldPos = pStrm->Tell();
+ String aStr;
+ aF.nLCode = pSBase->WW8ReadString( *pStrm, aStr, pPlcxMan->GetCpOfs()+
+ aF.nSCode, aF.nLCode, eTextCharSet );
+
+ eF_ResT eRes = (this->*aWW8FieldTab[aF.nId])( &aF, aStr );
+ pStrm->Seek( nOldPos );
+
+ switch ( eRes )
+ {
+ case F_OK:
+ return aF.nLen; // alles OK
+
+ case F_TEXT:
+ return aF.nLen - aF.nLRes - 2; // so viele ueberlesen,
+ // das Resultfeld wird wie Haupttext eingelesen
+ //JP 15.07.99: attributes can start at char 0x14
+ // so skip one char more back == "-2"
+
+ case F_TAGTXT:
+ if( ( nFieldTagBad[nI] & nMask ) ) // Flag: Tag bad
+ return Read_F_Tag( &aF ); // Taggen
+ return aF.nLen - aF.nLRes - 2; // oder Text-Resultat
+
+ case F_TAGIGN:
+ if( ( nFieldTagBad[nI] & nMask ) ) // Flag: Tag bad
+ return Read_F_Tag( &aF ); // Taggen
+ return aF.nLen; // oder ignorieren
+
+ case F_READ_FSPA:
+ return aF.nLen - aF.nLRes - 2; // auf Char 1 positionieren
+
+ default: return aF.nLen; // ignorieren
+ }
+ }
+/*
+ if( !bOk || !aF.nId || aF.nId > 84
+ || ( aF.nOpt & 0x40 ) ) // WW sagt: Nested Field
+ return aF.nLen;
+
+
+ if( ( ( aF.nOpt & 0x08 ) ) // User Edited
+ || aF.nId > 84 // unbekannte Id
+ || aWW8FieldTab[aF.nId] == 0 // keine Routine vorhanden
+ || aF.bCodeNest ){
+
+
+ // Lese nur Resultat
+ if( aF.bResNest )
+ return aF.nLen; // Result nested -> nicht brauchbar
+ else
+ return aF.nLen - aF.nLRes - 1; // so viele ueberlesen, das Resultfeld
+ // wird wie Haupttext eingelesen
+
+ }else{ // Lese Feld
+ long nOldPos = pStrm->Tell();
+ pStrm->Seek( WW8Cp2Fc( pPlcxMan->GetCpOfs() + aF.nSCode,
+ pWwFib->fcMin ) );
+ char* p = new char[ aF.nLCode + 10 ];
+ pStrm->Read( p, aF.nLCode );
+ for( long i=aF.nLCode; i < aF.nLCode + 10; i++ )
+ p[i] = 0; // Nullen dahinter
+ (this->*aWW8FieldTab[aF.nId])( &aF, p );
+ delete[] p;
+ pStrm->Seek( nOldPos );
+ }
+ return aF.nLen;
+*/
+}
+
+//-----------------------------------------
+// Felder Taggen
+//-----------------------------------------
+
+// QuoteChar ist ohne Laengenschutz
+
+void SwWW8ImplReader::QuoteChar( String& rStr, const sal_Unicode c, BOOL bAllowCr )
+{
+ if ( c < 0x0020 || c == 0x00fe || c == 0x00ff ) // < 32, >0xfe
+ {
+ switch( c )
+ {
+ case 0x0b:
+ case 0x0c:
+ case 0x0d: if( bAllowCr )
+ {
+ rStr += '\n';
+ break;
+ }
+ // no break
+ default:{
+ // als Hex-Zahl mit \x davor
+ String sTmp( String::CreateFromInt32( c, 16 ) );
+ if( 1 == sTmp.Len() )
+ sTmp.Insert( '0', 0 );
+ rStr.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "\\x" ) );
+ rStr += sTmp;
+ }
+ }
+ }
+ else
+ rStr += c; // normaler Text
+}
+
+// QuoteString() wandelt CRs abhaengig von nFieldIniFlags in '\n' oder "\0x0d"
+void SwWW8ImplReader::QuoteString( String& rStr, const String& rOrg )
+{
+ BOOL bAllowCr = SwFltGetFlag( nFieldFlags, SwFltControlStack::ALLOW_FLD_CR );
+ xub_StrLen nMax = rOrg.Len();
+ xub_StrLen i = 0;
+ while( nMax > i && ( rStr.Len() < MAX_FIELDLEN - 4 ) )
+ {
+ QuoteChar( rStr, rOrg.GetChar( i ), bAllowCr );
+ i++;
+ }
+}
+
+// MakeTagString() gibt als Returnwert die Position des ersten
+// CR / Zeilenende / Seitenumbruch in pText und wandelt auch nur bis dort
+// Wenn keins dieser Sonderzeichen enthalten ist, wird 0 zurueckgeliefert.
+void SwWW8ImplReader::MakeTagString( String& rStr, const String& rOrg )
+{
+ BOOL bAllowCr = SwFltGetFlag( nFieldFlags, SwFltControlStack::TAGS_IN_TEXT )
+ || SwFltGetFlag( nFieldFlags, SwFltControlStack::ALLOW_FLD_CR );
+
+
+ xub_StrLen nMax = rOrg.Len();
+ xub_StrLen i = 0;
+ while( nMax > i && ( rStr.Len() < MAX_FIELDLEN - 4 ) )
+ {
+ sal_Unicode c = rOrg.GetChar( i );
+ switch( c )
+ {
+ case 132: // Typographische Anfuehrungszeichen
+ case 148: // gegen normale tauschen
+ case 147: rStr += '"'; break;
+ case 19: rStr += '{'; break; // 19..21 zu {|}
+ case 20: rStr += '|'; break;
+ case 21: rStr += '}'; break;
+ case '\\': // \{|} per \ Taggen
+ case '{':
+ case '|':
+ case '}': rStr += '\\'; rStr += c; break;
+ default: SwWW8ImplReader::QuoteChar( rStr, c, bAllowCr ); break;
+ }
+ i++;
+ }
+}
+
+void SwWW8ImplReader::InsertTagField( const USHORT nId, const String& rTagText )
+{
+ String aName( WW8_ASCII2STR( "WwFieldTag" ) );
+ if( SwFltGetFlag( nFieldFlags, SwFltControlStack::TAGS_DO_ID ) ) // Nummer?
+ aName += String::CreateFromInt32( nId ); // ausgeben ?
+
+ if( SwFltGetFlag(nFieldFlags, SwFltControlStack::TAGS_IN_TEXT))
+ {
+ aName += rTagText; // als Txt taggen
+ rDoc.Insert( *pPaM, aName, FALSE );
+ }
+ else
+ { // normal tagggen
+
+ SwFieldType* pFT = rDoc.InsertFldType(
+ SwSetExpFieldType( &rDoc, aName, GSE_STRING ) );
+ SwSetExpField aFld( (SwSetExpFieldType*)pFT, rTagText ); // SUB_INVISIBLE
+ USHORT nSubType = ( SwFltGetFlag( nFieldFlags, SwFltControlStack::TAGS_VISIBLE ) ) ? 0 : SUB_INVISIBLE;
+ aFld.SetSubType(nSubType);
+
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ }
+}
+
+long SwWW8ImplReader::Read_F_Tag( WW8FieldDesc* pF )
+{
+ long nOldPos = pStrm->Tell();
+
+ WW8_CP nStart = pF->nSCode - 1; // mit 0x19 am Anfang
+ long nL = pF->nLen; // Gesamtlaenge mit Resultat u. Nest
+ if( nL > MAX_FIELDLEN )
+ nL = MAX_FIELDLEN; // MaxLaenge, durch Quoten
+ // max. 4* so gross
+ String sFTxt;
+ nL = pSBase->WW8ReadString( *pStrm, sFTxt,
+ pPlcxMan->GetCpOfs() + nStart, nL, eStructCharSet);
+
+
+ String aTagText;
+ MakeTagString( aTagText, sFTxt );
+ InsertTagField( pF->nId, aTagText );
+
+ pStrm->Seek( nOldPos );
+ return pF->nLen;
+}
+
+
+//-----------------------------------------
+// normale Felder
+//-----------------------------------------
+
+// Read_F_Nul() dient dazu, Felder, die ein belegtes ResultatFeld haben, dieses
+// aber trotzdem keinen Text darstellt, sondern z.B. Variablen-Werte, komplett
+// zu ignorieren.
+// Noetig z.B. fuer Feld 6 "Set" == "Bestimmen".
+eF_ResT SwWW8ImplReader::Read_F_Nul( WW8FieldDesc*, String& rStr )
+{
+ return F_OK;
+}
+
+eF_ResT SwWW8ImplReader::Read_F_Input( WW8FieldDesc* pF, String& rStr )
+{
+ String aDef;
+ String aQ;
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case -2:
+ if( !aQ.Len() )
+ aQ = aReadParam.GetResult();
+ break;
+ case 'd':
+ case 'D':
+ {
+ xub_StrLen n = aReadParam.GoToTokenParam();
+ if( STRING_NOTFOUND != n )
+ aDef = aReadParam.GetResult();
+ }
+ break;
+ }
+ }
+ if( !aDef.Len() )
+ aDef = GetFieldResult( pF );
+
+ SwInputField aFld( (SwInputFieldType*)rDoc.GetSysFldType( RES_INPUTFLD ),
+ aDef, aQ, INP_TXT, 0 ); // sichtbar ( geht z.Zt. nicht anders )
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+
+ return F_OK;
+}
+
+// GetFieldResult alloziert einen String und liest das Feld-Resultat ein
+String SwWW8ImplReader::GetFieldResult( WW8FieldDesc* pF )
+{
+ long nOldPos = pStrm->Tell();
+
+ WW8_CP nStart = pF->nSRes; // Start Resultat
+ long nL = pF->nLRes; // Laenge Resultat
+ if( !nL )
+ return aEmptyStr; // kein Resultat
+
+ if( nL > MAX_FIELDLEN )
+ nL = MAX_FIELDLEN; // MaxLaenge, durch Quoten
+ // max. 4* so gross
+
+ String sRes;
+ nL = pSBase->WW8ReadString( *pStrm, sRes, pPlcxMan->GetCpOfs() + nStart,
+ nL, eStructCharSet );
+
+ pStrm->Seek( nOldPos );
+ return sRes;
+}
+
+// "FRAGE"
+eF_ResT SwWW8ImplReader::Read_F_InputVar( WW8FieldDesc* pF, String& rStr )
+{
+ String aVar;
+ String aQ;
+ String aDef;
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case -2:
+ if( !aVar.Len() )
+ aVar = aReadParam.GetResult();
+ else if( !aQ.Len() )
+ aQ = aReadParam.GetResult();
+ break;
+ case 'd':
+ case 'D':
+ {
+ xub_StrLen n = aReadParam.GoToTokenParam();
+ if( STRING_NOTFOUND != n )
+ aDef = aReadParam.GetResult();
+ }
+ break;
+ }
+ }
+ if( !aVar.Len() )
+ return F_TAGIGN; // macht ohne Textmarke keinen Sinn
+ if( !aDef.Len() )
+ aDef = GetFieldResult( pF );
+
+
+
+ SwFieldType* pFT = rDoc.InsertFldType( SwSetExpFieldType( &rDoc, aVar, GSE_STRING ) );
+ SwSetExpField aFld( (SwSetExpFieldType*)pFT, aVar );
+ aFld.SetSubType(SUB_INVISIBLE);
+ aFld.SetInputFlag( TRUE );
+ aFld.SetPromptText( aQ );
+ aFld.SetPar2( aDef );
+ pPlcxMan->GetBook()->SetStatus( pF->nSCode, pF->nSCode + pF->nLen,
+ aVar, BOOK_ONLY_REF );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+
+
+ return F_OK;
+}
+
+// "AUTONR"
+eF_ResT SwWW8ImplReader::Read_F_ANumber( WW8FieldDesc*, String& rStr )
+{
+ if( !pNumFldType ){ // 1. Mal
+ SwSetExpFieldType aT( &rDoc, WW8_ASCII2STR("AutoNr"), GSE_SEQ );
+ pNumFldType = rDoc.InsertFldType( aT );
+ }
+ SwSetExpField aFld( (SwSetExpFieldType*)pNumFldType, aEmptyStr,
+ GetNumberPara( rStr ) );
+ aFld.SetValue( ++nFldNum );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ return F_OK;
+}
+
+// "SEQ"
+eF_ResT SwWW8ImplReader::Read_F_Seq( WW8FieldDesc*, String& rStr )
+{
+ String aSequenceName;
+ String aBook;
+ BOOL bHidden = FALSE;
+ BOOL bFormat = FALSE;
+ BOOL bShowLast = FALSE;
+ BOOL bCountOn = TRUE;
+ String sStart, sLevel;
+ SvxExtNumType eNumFormat = SVX_NUM_ARABIC;
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case -2:
+ if( !aSequenceName.Len() )
+ aSequenceName = aReadParam.GetResult();
+ else if( !aBook.Len() )
+ aBook = aReadParam.GetResult();
+ break;
+
+ case 'h':
+ if( !bFormat )
+ bHidden = TRUE; // Hidden-Flag aktivieren
+ break;
+
+ case '*':
+ bFormat = TRUE; // Format-Flag aktivieren
+ bHidden = FALSE; // Hidden-Flag deaktivieren
+ nRet = aReadParam.SkipToNextToken();
+ if( -2 == nRet )
+ eNumFormat = GetNumTypeFromName( aReadParam.GetResult() );
+ break;
+
+ case 'r':
+ bShowLast = FALSE; // Zaehler neu setzen
+ bCountOn = FALSE;
+ nRet = aReadParam.SkipToNextToken();
+ if( -2 == nRet )
+ sStart = aReadParam.GetResult();
+ break;
+
+ case 'c':
+ bShowLast = TRUE; // zuletzt verwendete Nummer anzeigen
+ bCountOn = FALSE;
+ break;
+
+ case 'n':
+ bCountOn = TRUE; // Nummer um eins erhoehen (default)
+ bShowLast = FALSE;
+ break;
+
+ case 's': // Outline Level
+ if( -2 == aReadParam.SkipToNextToken() )
+ sLevel = aReadParam.GetResult();
+ break;
+ }
+ }
+ if( !aSequenceName.Len()
+ || !aBook.Len() )
+ return F_TAGIGN;
+
+ SwSetExpFieldType* pFT = (SwSetExpFieldType*)rDoc.InsertFldType(
+ SwSetExpFieldType( &rDoc, aSequenceName, GSE_SEQ ) );
+ SwSetExpField aFld( pFT, aEmptyStr, eNumFormat );
+
+ if( sStart.Len() )
+ aFld.SetFormula( ( aSequenceName += '=' ) += sStart );
+
+ if( sLevel.Len() )
+ {
+ USHORT nLvl = (USHORT)sLevel.ToInt32();
+ if( nLvl )
+ {
+ if( MAXLEVEL <= --nLvl )
+ nLvl = MAXLEVEL - 1;
+ pFT->SetOutlineLvl( nLvl );
+ }
+ }
+
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ return F_OK;
+}
+
+
+eF_ResT SwWW8ImplReader::Read_F_DocInfo( WW8FieldDesc* pF, String& rStr )
+{
+ USHORT nSub;
+ USHORT nReg = DI_SUB_AUTHOR; // RegInfoFormat, DefaultFormat fuer DocInfoFelder
+ BOOL bDateTime = FALSE;
+
+ if( 85 == pF->nId )
+ {
+ /*
+ There are up to 26 fields that may be meant by 'DocumentProperty'.
+ Which of them is to be inserted here ?
+ This Problem can only be solved by implementing a name matching
+ method that compares the given Parameter String with the four
+ possible name sets (english, german, french, spanish)
+ */
+ String aStr( rStr );
+ xub_StrLen nPos1 = aStr.Search( '"' );
+ if( (STRING_NOTFOUND != nPos1) && (nPos1+1 < aStr.Len()) )
+ {
+ xub_StrLen nPos2 = aStr.SearchAndReplace( '"', '\0', nPos1+1 );
+ if( STRING_NOTFOUND != nPos2 )
+ {
+ aStr.Erase(0, nPos1+1);
+ static sal_Char __READONLY_DATA* aName10 = "\x0F"; // SW field code
+ static sal_Char __READONLY_DATA* aName11 // German
+ = "TITEL";
+ static sal_Char __READONLY_DATA* aName12 // French
+ = "TITRE";
+ static sal_Char __READONLY_DATA* aName13 // English
+ = "TITLE";
+ static sal_Char __READONLY_DATA* aName14 // Spanish
+ = "TITRO";
+ static sal_Char __READONLY_DATA* aName20 = "\x15"; // SW filed code
+ static sal_Char __READONLY_DATA* aName21 // German
+ = "ERSTELLDATUM";
+ static sal_Char __READONLY_DATA* aName22 // French
+ = "CRÉÉ";
+ static sal_Char __READONLY_DATA* aName23 // English
+ = "CREATED";
+ static sal_Char __READONLY_DATA* aName24 // Spanish
+ = "CREADO";
+ static sal_Char __READONLY_DATA* aName30 = "\x16"; // SW filed code
+ static sal_Char __READONLY_DATA* aName31 // German
+ = "ZULETZTGESPEICHERTZEIT";
+ static sal_Char __READONLY_DATA* aName32 // French
+ = "DERNIERENREGISTREMENT";
+ static sal_Char __READONLY_DATA* aName33 // English
+ = "SAVED";
+ static sal_Char __READONLY_DATA* aName34 // Spanish
+ = "MODIFICADO";
+ static sal_Char __READONLY_DATA* aName40 = "\x17"; // SW filed code
+ static sal_Char __READONLY_DATA* aName41 // German
+ = "ZULETZTGEDRUCKT";
+ static sal_Char __READONLY_DATA* aName42 // French
+ = "DERNIÈREIMPRESSION";
+ static sal_Char __READONLY_DATA* aName43 // English
+ = "LASTPRINTED";
+ static sal_Char __READONLY_DATA* aName44 // Spanish
+ = "HUPS PUPS";
+ static sal_Char __READONLY_DATA* aName50 = "\x18"; // SW filed code
+ static sal_Char __READONLY_DATA* aName51 // German
+ = "ÜBERARBEITUNGSNUMMER";
+ static sal_Char __READONLY_DATA* aName52 // French
+ = "NUMÉRODEREVISION";
+ static sal_Char __READONLY_DATA* aName53 // English
+ = "REVISIONNUMBER";
+ static sal_Char __READONLY_DATA* aName54 // Spanish
+ = "SNUBBEL BUBBEL";
+ static const USHORT nFldCnt = 5;
+
+
+
+
+ // additional fields are to be coded soon! :-)
+
+
+
+
+ static const USHORT nLangCnt = 4;
+ static const sal_Char * aNameSet_26[nFldCnt][nLangCnt+1] = {
+ {aName10, aName11, aName12, aName13, aName14},
+ {aName20, aName21, aName22, aName23, aName24},
+ {aName30, aName31, aName32, aName33, aName34},
+ {aName40, aName41, aName42, aName43, aName44},
+ {aName50, aName51, aName52, aName53, aName54}
+ };
+ BOOL bFldFound= FALSE;
+ USHORT nFIdx;
+ for(USHORT nLIdx=1; !bFldFound && (nLangCnt > nLIdx); ++nLIdx)
+ {
+ for(nFIdx = 0; !bFldFound && (nFldCnt > nFIdx); ++nFIdx)
+ {
+ if( aStr.EqualsIgnoreCaseAscii( aNameSet_26[nFIdx][nLIdx] ) )
+ {
+ bFldFound = TRUE;
+ pF->nId = aNameSet_26[nFIdx][0][0];
+ }
+ }
+ }
+ if( !bFldFound )
+ return F_TAGTXT; // Error: show field as string
+ }
+ }
+ }
+
+ switch( pF->nId )
+ {
+ case 14: nSub = DI_KEYS; /* kann alle INFO-Vars!! */ break;
+ case 15: nSub = DI_TITEL; break;
+ case 16: nSub = DI_THEMA; break;
+ case 18: nSub = DI_KEYS; break;
+ case 19: nSub = DI_COMMENT; break;
+ case 20: nSub = DI_CHANGE; nReg = DI_SUB_AUTHOR; break;
+ case 21: nSub = DI_CREATE; nReg = DI_SUB_DATE; bDateTime = TRUE; break;
+ case 23: nSub = DI_PRINT; nReg = DI_SUB_DATE; bDateTime = TRUE; break;
+ case 24: nSub = DI_DOCNO; break;
+ case 22: nSub = DI_CHANGE; nReg = DI_SUB_DATE; bDateTime = TRUE; break;
+ case 25: nSub = DI_CHANGE; nReg = DI_SUB_TIME; bDateTime = TRUE; break;
+ }
+
+ ULONG nFormat = 0;
+
+ if( bDateTime )
+ {
+ short nDT = GetTimeDatePara( rDoc, rStr, nFormat );
+ switch( nDT )
+ {
+ case NUMBERFORMAT_DATE: nReg = DI_SUB_DATE; break;
+ case NUMBERFORMAT_TIME: nReg = DI_SUB_TIME; break;
+ case NUMBERFORMAT_DATETIME: nReg = DI_SUB_DATE; break;
+ default:
+ {
+ nReg = DI_SUB_DATE;
+ }
+ }
+ }
+
+ SwDocInfoField aFld( (SwDocInfoFieldType*)
+ rDoc.GetSysFldType( RES_DOCINFOFLD ), nSub|nReg, nFormat );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ return F_OK;
+}
+
+eF_ResT SwWW8ImplReader::Read_F_Author( WW8FieldDesc*, String& )
+{
+ // SH: Das SwAuthorField bezeichnet nicht den urspruenglichen
+ // Autor, sondern den aktuellen Benutzer, also besser ueber DocInfo
+ // (#56149)
+ SwDocInfoField aFld( (SwDocInfoFieldType*)
+ rDoc.GetSysFldType( RES_DOCINFOFLD ),
+ DI_CREATE|DI_SUB_AUTHOR );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ return F_OK;
+}
+
+eF_ResT SwWW8ImplReader::Read_F_TemplName( WW8FieldDesc*, String& )
+{
+ SwTemplNameField aFld( (SwTemplNameFieldType*)
+ rDoc.GetSysFldType( RES_TEMPLNAMEFLD ), FF_NAME );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ return F_OK;
+}
+
+// Sowohl das Datum- wie auch das Uhrzeit-Feld kann fuer Datum, fuer Uhrzeit
+// oder fuer beides benutzt werden.
+eF_ResT SwWW8ImplReader::Read_F_DateTime( WW8FieldDesc*pF, String& rStr )
+{ // Datum/Uhrzeit - Feld
+ ULONG nFormat = 0;
+
+ short nDT = GetTimeDatePara( rDoc, rStr, nFormat );
+
+ if( NUMBERFORMAT_UNDEFINED == nDT ) // no D/T-Formatstring
+ {
+ if( 32 == pF->nId )
+ {
+ nDT = NUMBERFORMAT_TIME;
+ nFormat = rDoc.GetNumberFormatter()->GetFormatIndex(
+ NF_TIME_START, LANGUAGE_SYSTEM );
+ }
+ else
+ {
+ nDT = NUMBERFORMAT_DATE;
+ nFormat = rDoc.GetNumberFormatter()->GetFormatIndex(
+ NF_DATE_START, LANGUAGE_SYSTEM );
+ }
+ }
+
+ if( nDT & NUMBERFORMAT_DATE )
+ {
+ SwDateTimeField aFld( (SwDateTimeFieldType*)
+ rDoc.GetSysFldType( RES_DATETIMEFLD ), DATEFLD, nFormat );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ }
+ else if( nDT == NUMBERFORMAT_TIME )
+ {
+ SwDateTimeField aFld( (SwDateTimeFieldType*)
+ rDoc.GetSysFldType( RES_DATETIMEFLD ), TIMEFLD, nFormat );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ }
+
+ return F_OK;
+}
+
+eF_ResT SwWW8ImplReader::Read_F_FileName( WW8FieldDesc*, String& )
+{
+ SwFileNameField aFld( (SwFileNameFieldType*)
+ rDoc.GetSysFldType( RES_FILENAMEFLD ) );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ return F_OK;
+}
+
+eF_ResT SwWW8ImplReader::Read_F_Anz( WW8FieldDesc* pF, String& rStr )
+{ // SeitenZahl - Feld
+ USHORT nSub = DS_PAGE;
+ switch ( pF->nId ){
+ case 27: nSub = DS_WORD; break; // Wordzahl
+ case 28: nSub = DS_CHAR; break; // Zeichenzahl
+ }
+ SwDocStatField aFld( (SwDocStatFieldType*)
+ rDoc.GetSysFldType( RES_DOCSTATFLD ), nSub,
+ GetNumberPara( rStr ) );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ return F_OK;
+}
+
+eF_ResT SwWW8ImplReader::Read_F_CurPage( WW8FieldDesc*, String& rStr )
+{
+ // zusaetzlich mit Kapitelnummer?
+ if( bPgChpLevel )
+ {
+ SwChapterField aFld( (SwChapterFieldType*)
+ rDoc.GetSysFldType( RES_CHAPTERFLD ), CF_NUMBER );
+ aFld.SetLevel( nPgChpLevel );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+
+ static sal_Char __READONLY_DATA aDelim[] = "-.:\x97\x96";
+ BYTE nDelim = nPgChpDelim;
+ if( nDelim > 4 )
+ nDelim = 0;
+
+ sal_Unicode c = ByteString::ConvertToUnicode( aDelim[ nDelim ],
+ RTL_TEXTENCODING_MS_1252 );
+ if( '-' == c )
+ rDoc.Insert( *pPaM, CHAR_HARDHYPHEN );
+ else
+ rDoc.Insert( *pPaM, SwFmtHardBlank( c ));
+ }
+ // Seitennummer
+ SwPageNumberField aFld( (SwPageNumberFieldType*)
+ rDoc.GetSysFldType( RES_PAGENUMBERFLD ), PG_RANDOM,
+ GetNumberPara( rStr, TRUE ) );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ return F_OK;
+}
+
+eF_ResT SwWW8ImplReader::Read_F_Symbol( WW8FieldDesc*, String& rStr )
+{ // Symbol-Zeichensatz
+/*
+ char* p;
+ char* pQ = Find1stPara( pStr, &p ); // 1. Para ist Ascii-Wert
+ USHORT nC = String( pQ );
+ if( !nC ) // ungueltige Syntax
+ return F_TAGIGN; // -> kein 0-Zeichen in Text
+ char* pCSet = FindPara( p, 'f', 'F' ); // \f -> Zeichensatz
+ char* pSiz = FindPara( p, 's', 'S' ); // \s -> FontSize
+ if( pCSet ){ // Charset angegeben ?
+ String aName( pCSet );
+ if( eStructCharSet != eSysCharSet ) // OS2, WIN mit Mac-Doc,...
+ aName.Convert( eStructCharSet, eSysCharSet );
+ SvxFontItem aFont( FAMILY_DONTKNOW, aName, // "WingDings",
+ aEmptyStr,
+ PITCH_DONTKNOW, CHARSET_SYMBOL);
+ NewAttr( aFont ); // neuer Font
+ }
+ if( pSiz ){ // Size angegeben ?
+ ULONG nSiz = String( pSiz ); // in pt
+ SvxFontHeightItem aSz( nSiz * 20 ); // pT -> twip
+ NewAttr( aSz );
+ }
+*/
+ String aQ;
+ String aName;
+ String aSiz;
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case -2:
+ if( !aQ.Len() )
+ aQ = aReadParam.GetResult();
+ break;
+ case 'f':
+ case 'F':
+ {
+ xub_StrLen n = aReadParam.GoToTokenParam();
+ if( STRING_NOTFOUND != n )
+ aName = aReadParam.GetResult();
+ }
+ break;
+ case 's':
+ case 'S':
+ {
+ xub_StrLen n = aReadParam.GoToTokenParam();
+ if( STRING_NOTFOUND != n )
+ aSiz = aReadParam.GetResult();
+ }
+ break;
+ }
+ }
+ if( !aQ.Len() )
+ return F_TAGIGN; // -> kein 0-Zeichen in Text
+
+ if( aName.Len() ) // Font Name angegeben ?
+ {
+ SvxFontItem aFont( FAMILY_DONTKNOW, aName, // "WingDings",
+ aEmptyStr,
+ PITCH_DONTKNOW, RTL_TEXTENCODING_SYMBOL );
+ NewAttr( aFont ); // neuer Font
+ }
+
+ if( aSiz.Len() ) // Size angegeben ?
+ {
+ SvxFontHeightItem aSz( aSiz.ToInt32() * 20 ); // pT -> twip
+ NewAttr( aSz );
+ }
+
+ rDoc.Insert( *pPaM, aQ.GetChar( 0 ) );
+
+ if( aSiz.Len() )
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_FONTSIZE );
+ if( aName.Len() )
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_FONT );
+
+ return F_OK;
+}
+
+
+// "EINBETTEN"
+eF_ResT SwWW8ImplReader::Read_F_Embedd( WW8FieldDesc*, String& rStr )
+{
+ String sHost;
+
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case -2:
+ sHost = aReadParam.GetResult();
+ break;
+
+ case 's':
+ // use ObjectSize
+ break;
+ }
+ }
+
+ if( bObj && nPicLocFc )
+ nObjLocFc = nPicLocFc;
+ bEmbeddObj = TRUE;
+ return F_TEXT;
+}
+
+
+// "BESTIMMEN"
+eF_ResT SwWW8ImplReader::Read_F_Set( WW8FieldDesc* pF, String& rStr )
+{
+ String aName;
+ String aVal;
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case -2:
+ if( !aName.Len() )
+ aName = aReadParam.GetResult();
+ else if( !aVal.Len() )
+ aVal = aReadParam.GetResult();
+ break;
+ }
+ }
+ SwFieldType* pFT = rDoc.InsertFldType(
+ SwSetExpFieldType( &rDoc, aName, GSE_STRING ) );
+ SwSetExpField aFld( (SwSetExpFieldType*)pFT, aVal );
+ aFld.SetSubType(SUB_INVISIBLE);
+ pPlcxMan->GetBook()->SetStatus( pF->nSCode, pF->nSCode + pF->nLen,
+ aName, BOOK_IGNORE );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ return F_OK;
+}
+
+// "REF"
+eF_ResT SwWW8ImplReader::Read_F_Ref( WW8FieldDesc*, String& rStr )
+{ // Reference - Field
+ String aBkmName;
+ BOOL bChapterNr = FALSE;
+ BOOL bObenUnten = FALSE;
+
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case -2:
+ if( !aBkmName.Len() ) // get name of bookmark
+ {
+ aBkmName = aReadParam.GetResult();
+ }
+ break;
+
+ case 'r':
+ bChapterNr = TRUE; // activate flag 'Chapter Number'
+ break;
+
+ case 'p':
+ bObenUnten = TRUE;
+ break;
+ case 'h':
+ break;
+ default:
+ // unimplemented switch: just do 'nix nought nothing' :-)
+ break;
+ }
+ }
+
+ if ( SwFltGetFlag( nFieldFlags, SwFltControlStack::HYPO ) )
+ {
+ SwGetExpField aFld( (SwGetExpFieldType*)
+ rDoc.GetSysFldType( RES_GETEXPFLD ),
+ aBkmName, GSE_STRING, VVF_SYS );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ pEndStck->SetBookRef( aBkmName, FALSE );
+ }
+ else
+ {
+ SwGetRefField aFld( (SwGetRefFieldType*)
+ rDoc.GetSysFldType( RES_GETREFFLD ),
+ aBkmName,
+ REF_BOOKMARK,
+ 0,
+ REF_CONTENT );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ if( bObenUnten )
+ {
+ SwGetRefField aFld2( (SwGetRefFieldType*)
+ rDoc.GetSysFldType( RES_GETREFFLD ),
+ aBkmName,
+ REF_BOOKMARK,
+ 0,
+ REF_UPDOWN );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld2 ) );
+ }
+ }
+ return F_OK;
+}
+
+eF_ResT SwWW8ImplReader::Read_F_NoteReference( WW8FieldDesc*, String& rStr )
+{ // Note Reference - Field
+ String aBkmName;
+ BOOL bChapterNr = FALSE;
+ BOOL bObenUnten = FALSE;
+
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case -2:
+ if( !aBkmName.Len() ) // get name of foot/endnote
+ {
+ aBkmName = aReadParam.GetResult();
+ }
+ break;
+
+ case 'r':
+ bChapterNr = TRUE; // activate flag 'Chapter Number'
+ break;
+
+ case 'p':
+ bObenUnten = TRUE;
+ break;
+ case 'h':
+ break;
+ default:
+ // unimplemented switch: just do 'nix nought nothing' :-)
+ break;
+ }
+ }
+
+ if ( SwFltGetFlag( nFieldFlags, SwFltControlStack::HYPO ) )
+ {
+ SwGetExpField aFld( (SwGetExpFieldType*)
+ rDoc.GetSysFldType( RES_GETEXPFLD ),
+ aBkmName, GSE_STRING, VVF_SYS );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ pEndStck->SetBookRef( aBkmName, FALSE );
+ }
+ else
+ { // set Sequence No of corresponding Foot-/Endnote to Zero
+ // (will be corrected in
+ SwGetRefField aFld( (SwGetRefFieldType*)
+ rDoc.GetSysFldType( RES_GETREFFLD ),
+ aBkmName,
+ REF_FOOTNOTE,
+ 0,
+ REF_ONLYNUMBER
+ );
+ pRefFldStck->NewAttr(*pPaM->GetPoint(), SwFmtFld( aFld ));
+ if( bObenUnten )
+ {
+// rDoc.Insert( *pPaM, SwFmtHardBlank(' ') );
+ SwGetRefField aFld2( (SwGetRefFieldType*)
+ rDoc.GetSysFldType( RES_GETREFFLD ),
+ aBkmName,
+ REF_FOOTNOTE,
+ 0,
+ REF_UPDOWN
+ );
+ pRefFldStck->NewAttr(*pPaM->GetPoint(), SwFmtFld( aFld2 ));
+ }
+ }
+ return F_OK;
+}
+
+// "SEITENREF"
+eF_ResT SwWW8ImplReader::Read_F_PgRef( WW8FieldDesc*, String& rStr )
+{
+ String aName;
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case -2:
+ if( !aName.Len() )
+ aName = aReadParam.GetResult();
+ break;
+ }
+ }
+ if ( SwFltGetFlag( nFieldFlags, SwFltControlStack::HYPO ) )
+ {
+ SwGetRefField aFld( (SwGetRefFieldType*)
+ rDoc.GetSysFldType( RES_GETREFFLD ), aName, 0, 0,
+ REF_PAGE );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ pEndStck->SetBookRef( aName, TRUE );
+ }
+ else
+ {
+ SwGetRefField aFld( (SwGetRefFieldType*)
+ rDoc.GetSysFldType( RES_GETREFFLD ),
+ aName,
+ REF_BOOKMARK,
+ 0,
+ REF_PAGE );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ }
+ return F_OK;
+}
+
+// "MACROSCHALTFL"ACHE"
+eF_ResT SwWW8ImplReader::Read_F_Macro( WW8FieldDesc*, String& rStr )
+{
+ String aName;
+ String aVText;
+ long nRet;
+ BOOL bNewVText = TRUE;
+ BOOL bBracket = FALSE;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case -2:
+ if( !aName.Len() )
+ aName = aReadParam.GetResult();
+ else if( !aVText.Len() || bBracket )
+ {
+ if( bBracket )
+ aVText += ' ';
+ aVText += aReadParam.GetResult();
+ if( bNewVText )
+ {
+ bBracket = aVText.EqualsIgnoreCaseAscii('[', 1, 0);
+ bNewVText = FALSE;
+ }
+ else if( aVText.GetChar( aVText.Len()-1 ) == ']' )
+ bBracket = FALSE;
+ }
+ break;
+ }
+ }
+ if( !aName.Len() )
+ return F_TAGIGN; // makes no sense without Makro-Name
+
+ aName.InsertAscii( "StarOffice.Standard.Modul1.", 0 );
+
+ SwMacroField aFld( (SwMacroFieldType*)
+ rDoc.GetSysFldType( RES_MACROFLD ), aName, aVText );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ return F_OK;
+}
+
+// "EINF"UGENGRAFIK"
+eF_ResT SwWW8ImplReader::Read_F_IncludePicture( WW8FieldDesc*, String& rStr )
+{
+ String aGrfName;
+ BOOL bEmbedded = TRUE;
+
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case -2:
+ if( !aGrfName.Len() )
+ {
+ ConvertFFileName( aGrfName, aReadParam.GetResult() );
+ aGrfName = INetURLObject::RelToAbs( aGrfName );
+ }
+ break;
+
+ case 'd':
+ bEmbedded = FALSE; // Embedded-Flag deaktivieren
+ break;
+
+ case 'c':// den Converter-Namen ueberlesen
+ aReadParam.FindNextStringPiece();
+ break;
+ }
+ }
+
+ BOOL bExist = FALSE;
+ INetURLObject aGrURL(URIHelper::SmartRelToAbs(aGrfName));
+/* try
+ {
+ ::ucb::Content aTestContent(
+ aGrURL.GetMainURL(),
+ uno::Reference< XCommandEnvironment >());
+ bExist = aTestContent.isDocument();
+ }
+ catch(...){}
+*/
+ if( bExist || !bEmbedded )
+ {
+ /*
+ Besonderheit:
+
+ Wir setzen jetzt den Link ins Doc und merken uns den SwFlyFrmFmt.
+ Da wir ja unten auf jjeden Fall mit Return-Wert F_READ_FSPA enden,
+ wird der Skip-Wert so bemessen, dass das folgende Char-1 eingelesen
+ wird.
+ Wenn wir dann in SwWW8ImplReader::ImportGraf() reinlaufen, wird
+ erkannt, dass wir soeben einen Grafik-Link inserted haben und
+ das passende SwAttrSet wird ins Frame-Format eingesetzt.
+ */
+ SfxItemSet aFlySet( rDoc.GetAttrPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ aFlySet.Put( SwFmtAnchor( FLY_IN_CNTNT ) );
+ aFlySet.Put( SwFmtVertOrient( 0, VERT_TOP, FRAME ));
+ pFlyFmtOfJustInsertedGraphic = rDoc.Insert( *pPaM,
+ aGrfName,
+ aEmptyStr,
+ 0, // Graphic*
+ &aFlySet,
+ 0); // SwFrmFmt*
+ String aName;
+ if(MakeUniqueGraphName(aName, aGrURL.GetBase()))
+ pFlyFmtOfJustInsertedGraphic->SetName( aName );
+ }
+ return F_READ_FSPA;
+}
+
+// "EINFUEGENTEXT"
+eF_ResT SwWW8ImplReader::Read_F_IncludeText( WW8FieldDesc*, String& rStr )
+{
+ String aPara;
+ String aBook;
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case -2:
+ if( !aPara.Len() )
+ aPara = aReadParam.GetResult();
+ else if( !aBook.Len() )
+ aBook = aReadParam.GetResult();
+ break;
+ }
+ }
+ ConvertFFileName( aPara, aPara );
+ aPara = INetURLObject::RelToAbs( aPara );
+
+ if( aBook.Len() && aBook.GetChar( 0 ) != '\\' )
+ {
+ // Bereich aus Quelle ( kein Switch ) ?
+ ConvertUFName( aBook );
+ aPara += cTokenSeperator;
+ aPara += cTokenSeperator;
+ aPara += aBook;
+ }
+ String aStr(WW8_ASCII2STR( "WW" ));
+ SwSection* pSection = new SwSection( FILE_LINK_SECTION,
+ rDoc.GetUniqueSectionName( &aStr ) );
+ pSection->SetLinkFileName( aPara );
+ pSection->SetProtect( TRUE );
+ NewAttr( SwFltSection( pSection ) );
+ pEndStck->SetAttr( *pPaM->GetPoint(), RES_FLTR_SECTION );
+
+// rDoc.AppendTxtNode( *pPaM->GetPoint() );
+ return F_OK;
+}
+
+// "SERIENDRUCKFELD"
+eF_ResT SwWW8ImplReader::Read_F_DBField( WW8FieldDesc*, String& rStr )
+{
+ String aName;
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case -2:
+ if( !aName.Len() )
+ aName = aReadParam.GetResult();
+ break;
+ }
+ }
+ SwDBFieldType aD( &rDoc, aName, aEmptyStr ); // Datenbank: Nichts
+ SwFieldType* pFT = rDoc.InsertFldType( aD );
+ SwDBField aFld( (SwDBFieldType*)pFT );
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ return F_OK;
+}
+
+// "N"ACHSTER"
+eF_ResT SwWW8ImplReader::Read_F_DBNext( WW8FieldDesc*, String& )
+{
+ SwDBNextSetFieldType aN;
+ SwFieldType* pFT = rDoc.InsertFldType( aN );
+ SwDBNextSetField aFld( (SwDBNextSetFieldType*)pFT, aEmptyStr, aEmptyStr,
+ aEmptyStr ); // Datenbank: Nichts
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ return F_OK;
+}
+
+// "DATENSATZ"
+eF_ResT SwWW8ImplReader::Read_F_DBNum( WW8FieldDesc*, String& )
+{
+ SwDBSetNumberFieldType aN;
+ SwFieldType* pFT = rDoc.InsertFldType( aN );
+ SwDBSetNumberField aFld( (SwDBSetNumberFieldType*)pFT,
+ aEmptyStr ); // Datenbank: Nichts
+ rDoc.Insert( *pPaM, SwFmtFld( aFld ) );
+ return F_OK;
+}
+
+//-----------------------------------------
+// Verzeichnis-Felder
+//-----------------------------------------
+
+void lcl_toxMatchACSwitch( SwWW8ImplReader& rReader,
+ SwDoc& rDoc,
+ SwTOXBase& rBase,
+ _ReadFieldParams& rParam,
+ SwCaptionDisplay eCaptionType)
+{
+ xub_StrLen n = rParam.GoToTokenParam();
+ if( STRING_NOTFOUND != n )
+ {
+ SwTOXType* pType = (SwTOXType*)rDoc.GetTOXType( TOX_ILLUSTRATIONS, 0);
+ pType->Add( &rBase );
+ rBase.SetCaptionDisplay( eCaptionType );
+ // Read Sequence Name and store in TOXBase
+ String sSeqName( rParam.GetResult() );
+ lcl_ConvertSequenceName( rReader, sSeqName );
+ rBase.SetSequenceName( sSeqName );
+ }
+}
+
+
+void lcl_toxMatchTSwitch(SwWW8ImplReader& rReader,
+ SwTOXBase& rBase,
+ _ReadFieldParams& rParam)
+{
+ xub_StrLen n = rParam.GoToTokenParam();
+ if( STRING_NOTFOUND != n )
+ {
+ String sParams( rParam.GetResult() );
+ if( sParams.Len() )
+ {
+ xub_StrLen nIndex = 0;
+
+ String sTemplate( sParams.GetToken(0, ';', nIndex) );
+ if( STRING_NOTFOUND == nIndex )
+ {
+ const SwFmt* pStyle
+ = rReader.GetStyleWithOrgWWName( sTemplate );
+ if( pStyle )
+ {
+ sTemplate = pStyle->GetName();
+ }
+ // Store Style for Level 0 into TOXBase
+ rBase.SetStyleNames( sTemplate, 0 );
+ }
+ else while( STRING_NOTFOUND != nIndex )
+ {
+ xub_StrLen nLevel = sParams.GetToken(0, ';', nIndex).ToInt32();
+
+ if( (0 < nLevel) && (MAXLEVEL >= nLevel) )
+ {
+ nLevel--;
+ // Store Style and Level into TOXBase
+ const SwFmt* pStyle
+ = rReader.GetStyleWithOrgWWName( sTemplate );
+ if( pStyle )
+ {
+ sTemplate = pStyle->GetName();
+ }
+ String sStyles( rBase.GetStyleNames( nLevel ) );
+ if( sStyles.Len() )
+ sStyles += TOX_STYLE_DELIMITER;
+ sStyles += sTemplate;
+ rBase.SetStyleNames( sStyles, nLevel );
+ }
+ // read next style name...
+ sTemplate = sParams.GetToken(0, ';', nIndex);
+ }
+ }
+ }
+}
+
+
+eF_ResT SwWW8ImplReader::Read_F_Tox( WW8FieldDesc* pF, String& rStr )
+{
+ if( nIniFlags & WW8FL_NO_TOX )
+ return F_OK; // abgeschaltet -> ignorieren
+ if( ( pF->nLRes < 3 ) )
+ return F_TAGIGN; // Nur Stuss -> ignorieren
+
+ TOXTypes eTox; // Baue ToxBase zusammen
+ switch( pF->nId )
+ {
+ case 8: eTox = TOX_INDEX; break;
+ case 13: eTox = TOX_CONTENT; break;
+ default: eTox = TOX_USER; break;
+ }
+ USHORT nCreateOf = (eTox == TOX_CONTENT) ? TOX_OUTLINELEVEL
+ : TOX_MARK;
+ USHORT nIndexCols = 0;
+ const SwTOXType* pType = rDoc.GetTOXType( eTox, 0 );
+ SwForm aForm( eTox );
+ SwTOXBase* pBase = new SwTOXBase( pType, aForm, nCreateOf, aEmptyStr );
+ // Name des Verzeichnisses
+ switch( eTox ){
+ case TOX_INDEX:
+ {
+ USHORT eOptions = TOI_SAME_ENTRY | TOI_CASE_SENSITIVE;
+
+
+ // TOX_OUTLINELEVEL setzen wir genau dann, wenn
+ // die Parameter \o in 1 bis 9 liegen
+ // oder der Parameter \f existiert
+ // oder GARKEINE Switches Parameter angegeben sind.
+ USHORT eCreateFrom = 0;
+ USHORT nMaxLevel = 0;
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case 'c':
+ {
+ xub_StrLen n = aReadParam.GoToTokenParam();
+ if( STRING_NOTFOUND != n )
+ {
+ String sParams( aReadParam.GetResult() );
+ if( sParams.Len() ) // if NO String just ignore the \c
+ nIndexCols = sParams.ToInt32();
+ }
+ }
+ break;
+ case 'e':
+ {
+ xub_StrLen n = aReadParam.GoToTokenParam();
+ if( STRING_NOTFOUND != n ) // if NO String just ignore the \e
+ {
+ String sDelimiter( aReadParam.GetResult() );
+ SwForm aForm( pBase->GetTOXForm() );
+
+ // Attention: if TOX_CONTENT brave
+ // GetFormMax() returns MAXLEVEL + 1 !!
+ USHORT nEnd = aForm.GetFormMax()-1;
+
+ for(USHORT nLevel = 1;
+ nLevel <= nEnd;
+ ++nLevel)
+ {
+ // Levels count from 1
+ // Level 0 is reserved for CAPTION
+
+ // Delimiter statt Tabstop vor der Seitenzahl einsetzen,
+ // falls es eine Seitenzahl gibt:
+ FormTokenType ePrevType = TOKEN_END;
+ FormTokenType eType;
+ SwFormTokenEnumerator aEnumer =
+ aForm.CreateTokenEnumerator( nLevel );
+ do
+ {
+ eType = aEnumer.GetNextTokenType();
+ switch( eType )
+ {
+ case TOKEN_PAGE_NUMS:
+ {
+ if( TOKEN_TAB_STOP == ePrevType )
+ {
+ // remove Tab
+ aEnumer.GetPrevTokenType();
+ aEnumer.RemoveCurToken();
+ // insert new Token
+ if( 0x09 == sDelimiter.GetChar( 0 ) )
+ {
+ SwFormToken aToken( TOKEN_TAB_STOP );
+ aToken.eTabAlign = SVX_TAB_ADJUST_END;
+ aEnumer.InsertToken( aToken );
+ }
+ else
+ {
+ SwFormToken aToken( TOKEN_TEXT );
+ aToken.sText = sDelimiter;
+ aEnumer.InsertToken( aToken );
+ }
+ aForm.SetPattern( nLevel,
+ aEnumer.GetPattern() );
+ }
+ eType = TOKEN_END;
+ break;
+ }
+ }
+ ePrevType = eType;
+ }
+ while( TOKEN_END != eType );
+ }
+ pBase->SetTOXForm( aForm );
+ }
+ }
+ break;
+ case 'h':
+ {
+ eOptions |= TOI_ALPHA_DELIMITTER;
+ }
+ break;
+ case 'r':
+ {
+ SwForm aForm( pBase->GetTOXForm() );
+ aForm.SetCommaSeparated( TRUE );
+ pBase->SetTOXForm( aForm );
+ }
+ break;
+ /*
+ // the following switches are not (yet) supported
+ // by good old StarWriter:
+ case 'b':
+ case 'd':
+ case 'f':
+ case 'g':
+ case 'I':
+ case 'p':
+ case 's':
+ break;
+ */
+ }
+ }
+ /*
+ const TOXTypes eType = pBase->GetTOXType()->GetType();
+ switch( eType )
+ {
+ case TOX_CONTENT:
+ if( eCreateFrom )
+ pBase->SetCreate( eCreateFrom );
+ break;
+ case TOX_ILLUSTRATIONS:
+ if( !eCreateFrom )
+ eCreateFrom = TOX_SEQUENCE;
+ pBase->SetCreate( eCreateFrom );
+ break;
+ }
+ */
+ pBase->SetOptions( eOptions );
+ }
+ break;
+
+
+
+
+
+ case TOX_CONTENT:
+ {
+ // TOX_OUTLINELEVEL setzen wir genau dann, wenn
+ // die Parameter \o in 1 bis 9 liegen
+ // oder der Parameter \f existiert
+ // oder GARKEINE Switches Parameter angegeben sind.
+ USHORT eCreateFrom = 0;
+ USHORT nMaxLevel = 0;
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ {
+ switch( nRet )
+ {
+ case 'a':
+ case 'c':
+ lcl_toxMatchACSwitch(*this, rDoc, *pBase, aReadParam,
+ ('c' == nRet)
+ ? CAPTION_COMPLETE
+ : CAPTION_TEXT );
+ break;
+ case 'o':
+ {
+ USHORT nVal;
+ if( !aReadParam.GetTokenSttFromTo(0, &nVal, MAXLEVEL) )
+ {
+ nVal = aForm.GetFormMax()-1;
+ }
+ if( nMaxLevel < nVal )
+ nMaxLevel = nVal;
+ eCreateFrom |= TOX_OUTLINELEVEL;
+ }
+ break;
+ case 'f':
+ eCreateFrom |= TOX_MARK;
+ break;
+ case 'l':
+ {
+ USHORT nVal;
+ if( aReadParam.GetTokenSttFromTo(0, &nVal, MAXLEVEL) )
+ {
+ if( nMaxLevel < nVal )
+ nMaxLevel = nVal;
+ eCreateFrom |= TOX_MARK;
+ }
+ }
+ break;
+ case 't': // paragraphs using special styles shall
+ // provide the TOX's content
+ lcl_toxMatchTSwitch(*this, *pBase, aReadParam);
+ eCreateFrom |= TOX_TEMPLATE;
+ break;
+ case 'p':
+ {
+ xub_StrLen n = aReadParam.GoToTokenParam();
+ if( STRING_NOTFOUND != n ) // if NO String just ignore the \p
+ {
+ String sDelimiter( aReadParam.GetResult() );
+ SwForm aForm( pBase->GetTOXForm() );
+
+ // Attention: if TOX_CONTENT brave
+ // GetFormMax() returns MAXLEVEL + 1 !!
+ USHORT nEnd = aForm.GetFormMax()-1;
+
+ for(USHORT nLevel = 1;
+ nLevel <= nEnd;
+ ++nLevel)
+ {
+ // Levels count from 1
+ // Level 0 is reserved for CAPTION
+
+ // Delimiter statt Tabstop vor der Seitenzahl einsetzen,
+ // falls es eine Seitenzahl gibt:
+ FormTokenType ePrevType = TOKEN_END;
+ FormTokenType eType;
+ SwFormTokenEnumerator aEnumer =
+ aForm.CreateTokenEnumerator( nLevel );
+ do
+ {
+ eType = aEnumer.GetNextTokenType();
+ switch( eType )
+ {
+ case TOKEN_PAGE_NUMS:
+ {
+ if( TOKEN_TAB_STOP == ePrevType )
+ {
+ // remove Tab
+ aEnumer.GetPrevTokenType();
+ aEnumer.RemoveCurToken();
+ // insert new Token
+ SwFormToken aToken( TOKEN_TEXT );
+ aToken.sText = sDelimiter;
+
+ aEnumer.InsertToken( aToken );
+ aForm.SetPattern( nLevel,
+ aEnumer.GetPattern() );
+ }
+ eType = TOKEN_END;
+ break;
+ }
+ }
+ ePrevType = eType;
+ }
+ while( TOKEN_END != eType );
+ }
+ pBase->SetTOXForm( aForm );
+ }
+ }
+ break;
+ case 'n': // don't print page numbers
+ {
+ // read START and END param
+ USHORT nStart, nEnd;
+ if( !aReadParam.GetTokenSttFromTo( &nStart,
+ &nEnd,
+ MAXLEVEL ) )
+ {
+ nStart = 1;
+ nEnd = aForm.GetFormMax()-1;
+ }
+ // remove page numbers from this levels
+ SwForm aForm( pBase->GetTOXForm() );
+ if( aForm.GetFormMax() <= nEnd)
+ nEnd = aForm.GetFormMax()-1;
+ for(USHORT nLevel = nStart;
+ nLevel <= nEnd;
+ ++nLevel)
+ {
+ // Levels count from 1
+ // Level 0 is reserved for CAPTION
+
+ // Seitenzahl und ggfs. davorstehenden Tabstop entfernen:
+ FormTokenType eType;
+ SwFormTokenEnumerator aEnumer =
+ aForm.CreateTokenEnumerator( nLevel );
+ do
+ {
+ eType = aEnumer.GetNextTokenType();
+ switch( eType )
+ {
+ case TOKEN_PAGE_NUMS:
+ {
+ aEnumer.RemoveCurToken();
+ if( TOKEN_TAB_STOP
+ == aEnumer.GetPrevTokenType() )
+ {
+ aEnumer.RemoveCurToken();
+ aForm.SetPattern( nLevel,
+ aEnumer.GetPattern() );
+ }
+ eType = TOKEN_END;
+ break;
+ }
+ }
+ }
+ while( TOKEN_END != eType );
+ }
+ pBase->SetTOXForm( aForm );
+ }
+ break;
+
+ /*
+ // the following switches are not (yet) supported
+ // by good old StarWriter:
+ case 'b':
+ case 's':
+ case 'd':
+ break;
+ */
+ }
+ }
+ if( !nMaxLevel )
+ nMaxLevel = MAXLEVEL;
+ pBase->SetLevel( nMaxLevel );
+
+ const TOXTypes eType = pBase->GetTOXType()->GetType();
+ switch( eType )
+ {
+ case TOX_CONTENT:
+ if( eCreateFrom )
+ pBase->SetCreate( eCreateFrom );
+ break;
+ case TOX_ILLUSTRATIONS:
+ if( !eCreateFrom )
+ eCreateFrom = TOX_SEQUENCE;
+ pBase->SetCreate( eCreateFrom );
+ break;
+ }
+ }
+ break;
+ case TOX_USER:
+ break;
+ } // ToxBase fertig
+
+ // Update fuer TOX anstossen
+ rDoc.SetUpdateTOX( TRUE );
+
+ const SwPosition* pPos = pPaM->GetPoint();
+
+ SwFltTOX aFltTOX( pBase, nIndexCols );
+
+ // test if there is already a break item on this node
+ SwCntntNode* pNd = pPos->nNode.GetNode().GetCntntNode();
+ if( pNd )
+ {
+ const SfxItemSet* pSet = pNd->GetpSwAttrSet();
+ if( pSet )
+ {
+ if( SFX_ITEM_SET == pSet->GetItemState( RES_BREAK, FALSE ) )
+ aFltTOX.SetHadBreakItem( TRUE );
+ if( SFX_ITEM_SET == pSet->GetItemState( RES_PAGEDESC, FALSE ) )
+ aFltTOX.SetHadPageDescItem( TRUE );
+ }
+ }
+
+ // Setze Anfang in Stack
+ pEndStck->NewAttr( *pPos, aFltTOX );
+ if( 1 < nIndexCols )
+ bDontCreateSep = TRUE;
+
+ // Setze Ende in Stack
+ pEndStck->SetAttr( *pPos, RES_FLTR_TOX );
+
+ return F_OK;
+}
+
+eF_ResT SwWW8ImplReader::Read_F_Hyperlink( WW8FieldDesc* pF, String& rStr )
+{
+ eF_ResT eRet = F_OK;
+ String sURL, sTarget, sMark;
+ BOOL bDataImport=FALSE;
+
+ // JP 02.12.98: es gibt Hyperlink-Felder, die am Ende eine '\x01' stehen
+ // haben. Die wollen wir aber nicht beachten
+ /*
+ if( pStr[ pF->nLCode - 1 ] < ' ' )
+ pStr[ pF->nLCode - 1 ] = 0;
+ */
+
+
+
+/*
+ //caolan
+ if( rStr.GetChar( pF->nLCode - 1 ) < ' ' )
+ {
+#if DEBUG
+ if( 0x01 == rStr.GetChar( pF->nLCode-1 ) )
+ bDataImport=ImportURL( sURL, sMark, pF->nSCode + pF->nLCode-1 );
+#endif
+ rStr.SetChar( pF->nLCode - 1, 0 );
+ }
+*/
+
+ rStr.EraseTrailingChars( 1 );
+
+
+
+ if (!bDataImport)
+ {
+ long nRet;
+ _ReadFieldParams aReadParam( rStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ switch( nRet )
+ {
+ case -2:
+ if( !sURL.Len() )
+ {
+ ConvertFFileName( sURL, aReadParam.GetResult() );
+ sURL = INetURLObject::RelToAbs( sURL );
+ }
+ break;
+
+ case 'n':
+ sTarget = WW8_ASCII2STR( "_blank" );
+ break;
+
+ case 'l':
+ nRet = aReadParam.SkipToNextToken();
+ if( -2 == nRet )
+ {
+ sMark = aReadParam.GetResult();
+ if( sMark.Len() && '"' == sMark.GetChar( sMark.Len()-1 ))
+ sMark.Erase( sMark.Len() - 1 );
+
+ }
+ break;
+
+ case 'h':
+ case 'm':
+ case 's':
+ case 't':
+ ASSERT( !this, "Auswertung fehlt noch - Daten unbekannt" );
+ break;
+ }
+ }
+
+ String sDef( GetFieldResult( pF ) ); // das Resultat uebernehmen
+ if( ( sURL.Len() || sMark.Len() ) && sDef.Len() )
+ {
+ if( sMark.Len() )
+ ( sURL += INET_MARK_TOKEN ) += sMark;
+ SwFmtINetFmt aURL( sURL, sTarget );
+// aURL.SetVisitedFmt( "??" );
+// aURL.SetINetFmt( "??" );
+ pEndStck->NewAttr( *pPaM->GetPoint(), aURL );
+
+ // das Ende als "relative" Pos auf den Stack setzen
+ pPaM->SetMark();
+ pPaM->GetMark()->nContent += sDef.Len();
+ pEndStck->SetAttr( *pPaM->GetMark(), RES_TXTATR_INETFMT, FALSE );
+ pPaM->DeleteMark();
+ eRet = F_TEXT;
+ }
+ return eRet;
+}
+
+
+void SwWW8ImplReader::ImportTox( int nFldId, String aStr )
+{
+ BOOL bIdx = ( nFldId != 9 );
+ TOXTypes eTox = ( !bIdx ) ? TOX_CONTENT : TOX_INDEX; // Default
+
+ USHORT nLevel = 1;
+
+ xub_StrLen n;
+ String sKey1;
+ long nRet;
+ _ReadFieldParams aReadParam( aStr );
+ while( -1 != ( nRet = aReadParam.SkipToNextToken() ))
+ switch( nRet )
+ {
+ case -2:
+ if( !sKey1.Len() )
+ {
+ sKey1 = aReadParam.GetResult().GetToken(0, ':');
+ if( !sKey1.Len() )
+ sKey1 = aReadParam.GetResult(); // PrimaryKey ohne ":", 2nd dahinter
+ }
+ break;
+
+ case 'f':
+ n = aReadParam.GoToTokenParam();
+ if( STRING_NOTFOUND != n )
+ {
+ String sParams( aReadParam.GetResult() );
+ if( 'C' != sParams.GetChar(0) && 'c' != sParams.GetChar(0) )
+ eTox = TOX_USER;
+ }
+ break;
+
+ case 'l':
+ n = aReadParam.GoToTokenParam();
+ if( STRING_NOTFOUND != n )
+ {
+ String sParams( aReadParam.GetResult() );
+ if( sParams.Len() // if NO String just ignore the \l
+ && sParams.GetChar( 0 ) > '0'
+ && sParams.GetChar( 0 ) <= '9' )
+ {
+ nLevel = (USHORT)sParams.ToInt32();
+ }
+ }
+ break;
+ }
+
+
+/*
+ WW8FldParaGuess aG( pStr, ( bIdx ) ? 0 : "fl" );
+ const char* pFld = (const char*)aG.GetStdPara();
+ if( !aG.Ok() || !pFld )
+ return;
+
+ char* pKey1 = (char*)strchr( pFld, ':' );
+ if( pKey1 )
+ {
+ *pKey1++ = '\0';
+ }
+
+ USHORT nLevel = 1;
+
+ if( !bIdx ){ // Inhalts- oder Abbildungsverzeichnis
+ const unsigned char* pFlg = aG.GetSwitch( 0 );// Switch 'f'
+ if( pFlg && toupper(*pFlg) != 'C' )
+ eTox = TOX_USER; // z.B. F = Abbildungsverzeichnis
+ pFlg = aG.GetSwitch( 1 ); // Switch 'l'
+ if( pFlg && *pFlg > '0' && *pFlg <= '9' )
+ nLevel = *pFlg - '0';
+ }
+*/
+ ASSERT( rDoc.GetTOXTypeCount( eTox ), "Doc.GetTOXTypeCount() == 0 :-(" );
+
+ const SwTOXType* pT = rDoc.GetTOXType( eTox, 0 );
+ SwTOXMark aM( pT );
+ if( eTox != TOX_INDEX )
+ aM.SetLevel( nLevel );
+
+ if( sKey1.Len() )
+ {
+ aM.SetAlternativeText( sKey1 ); // WW/SW: unterschiedliche Reihenfolge
+ // Text mit Key1 tauschen
+ aM.SetPrimaryKey( aStr );
+
+ }
+ else
+ aM.SetAlternativeText( aStr );
+
+ if( !aM.IsAlternativeText() )
+ {
+ pPaM->SetMark();
+ pPaM->GetMark()->nContent += aStr.Len();
+ }
+ rDoc.Insert( *pPaM, aM );
+ if( !aM.IsAlternativeText() )
+ pPaM->DeleteMark();
+}
+
+void SwWW8ImplReader::Read_FldVanish( USHORT, BYTE*, short nLen )
+{
+ // Vorsicht: Bei Feldnamen mit Umlauten geht das MEMICMP nicht!
+ const static sal_Char *aFldNames[] = { "\x06""INHALT", "\x02""XE", // dt.
+ "\x02""TC" }; // us
+ const static BYTE aFldId[] = { 9, 4, 9 };
+
+ if( nIniFlags & WW8FL_NO_FLD )
+ return;
+
+ if( nLen < 0 )
+ {
+ bIgnoreText = FALSE;
+ return;
+ }
+
+ // our methode was called from
+ // ''Skip attributes of field contents'' loop within ReadTextAttr()
+ if( bIgnoreText )
+ return;
+
+ bIgnoreText = TRUE;
+ long nOldPos = pStrm->Tell();
+ USHORT nFieldLen;
+
+ WW8_CP nStartCp = pSBase->WW8Fc2Cp( nOldPos );
+ String sFieldName;
+ nFieldLen = pSBase->WW8ReadString( *pStrm, sFieldName, nStartCp,
+ 500, eStructCharSet );
+ pStrm->Seek( nOldPos );
+
+ xub_StrLen nC = 0;
+ if( 0x13 != sFieldName.GetChar( nC )) // Field Start Mark
+ {
+ if( 0x15 == sFieldName.GetChar( nC )) // Field End Mark found
+ bIgnoreText = FALSE;
+// delete( pFieldName );
+ return; // kein Feld zu finden
+ }
+
+ nC++;
+ while( ' ' == sFieldName.GetChar( nC ))
+ nC++;
+
+ for( int i = 0; i < 2; i++ )
+ {
+ const sal_Char* pName = aFldNames[i];
+ USHORT nNameLen = *pName++;
+ if( sFieldName.EqualsIgnoreCaseAscii( pName, 0, nNameLen ) )
+ {
+ ImportTox( aFldId[i], sFieldName.Copy( nNameLen ) );
+ break; // keine Mehrfachnennungen moeglich
+ }
+ }
+ bIgnoreText = TRUE;
+ pStrm->Seek( nOldPos );
+}
+
+// Read_Invisible ist fuer das "Unsichtbar"-Zeichenattribut. Mangels
+// entsprechender Funktion im SW evtl. als Tag.
+//
+// ACHTUNG: Methode gelegentlich umstellen: unsichtbaren Text als
+// *Feld* integrieren...
+//
+void SwWW8ImplReader::Read_Invisible( USHORT, BYTE* pData, short nLen )
+{
+ USHORT n = WWF_INVISIBLE; // Bit-Nummer fuer Invisible
+ USHORT nI = n / 32; // # des UINT32
+ ULONG nMask = 1 << ( n % 32 ); // Maske fuer Bits
+
+ if( ( nFieldTagBad[ nI ] & nMask )
+ || ( nFieldTagAlways[ nI ] & nMask ) )
+ {
+ String aTag( WW8_ASCII2STR( "{INVISIBLE " ) );
+
+ if( nLen < 0 )
+ aTag.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "END}" ) );
+ else
+ aTag.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "START}" ) );
+
+ InsertTagField( n, aTag );
+ }
+}
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8par5.cxx,v 1.1.1.1 2000-09-18 17:14:58 hr Exp $
+
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.71 2000/09/18 16:05:01 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.70 2000/08/31 06:29:28 jp
+ use CharClass instead of international
+
+ Revision 1.69 2000/08/04 10:56:54 jp
+ Soft-/HardHyphens & HardBlanks changed from attribute to unicode character
+
+ Revision 1.68 2000/07/24 16:39:08 khz
+ #75701# set Break or PageDesc item BEHIND TOX if not found before the #0x0C
+
+ Revision 1.67 2000/06/26 12:59:11 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.66 2000/06/15 15:57:31 khz
+ Prevent FindParaStart() from calling rStr.GetChar() behind end of string
+
+ Revision 1.65 2000/06/13 08:25:46 os
+ using UCB
+
+ Revision 1.64 2000/06/06 15:00:34 khz
+ Changes for Unicode
+
+ Revision 1.63 2000/05/18 10:59:02 jp
+ Changes for Unicode
+
+ Revision 1.62 2000/05/17 16:40:46 khz
+ Changes for unicode (2)
+
+ Revision 1.60 2000/05/16 12:03:45 jp
+ Changes for unicode
+
+ Revision 1.59 2000/05/16 11:06:28 khz
+ Unicode code-conversion
+
+ Revision 1.58 2000/05/08 09:25:49 khz
+ Task #74474# Find TRUE end of field code in WW8FldParaGuess class
+
+ Revision 1.57 2000/05/05 16:07:41 khz
+ Task #74474# don't create Sections while skipping result of multi-column index-field
+
+ Revision 1.56 2000/03/27 11:44:40 cmc
+ #74329# Added OCX Field Reader
+
+ Revision 1.55 2000/03/22 09:55:35 khz
+ Task #74378# release memory that was allocated by FindPara()
+
+ Revision 1.54 2000/02/18 09:38:12 cmc
+ #69372# Improved Hyperlink Importing for WW97
+
+ Revision 1.53 2000/02/11 14:40:28 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.52 2000/01/17 11:22:15 khz
+ Task #62941# import DateTime as single field (before 2 field separated by space)
+
+ Revision 1.51 2000/01/11 10:17:43 khz
+ Task #62941# import different formats for date- and time-fields
+
+ Revision 1.50 2000/01/04 16:48:36 khz
+ Task #70863# Indexes: parameter >> \e '0x09' << shows page-num at right col-margin
+
+ Revision 1.49 1999/12/23 17:01:22 khz
+ Task #70788# *De*activate bIgnoreText in Read_FldVanish() when 0x15 reached
+
+ Revision 1.48 1999/12/21 09:25:48 khz
+ Task #71111# Prevent from reading CONTENT when skiping field attributes
+
+ Revision 1.47 1999/12/06 09:35:05 khz
+ Task #70486# Now \t param on INDEX field may have one single NAME (without LEVEL)
+
+ Revision 1.46 1999/12/02 16:39:28 khz
+ Task #69857# Removed TOI_FF from default TOX_INDEX flags
+
+ Revision 1.45 1999/11/26 12:51:17 khz
+ Task #69898# TOC parameter \o will include *all* levels when no levels specified
+
+ Revision 1.44 1999/11/26 12:27:21 khz
+ Task #69892# TOC parameter \n will modify *all* levels when no levels specified
+
+ Revision 1.43 1999/11/02 15:59:45 khz
+ import new TOX_CONTENT and TOX_INDEX features (2)
+
+ Revision 1.42 1999/10/29 12:07:39 khz
+ import new TOX_CONTENT and TOX_INDEX features
+
+ Revision 1.41 1999/10/13 21:09:26 khz
+ Import Table Of Contents (0)
+
+ Revision 1.40 1999/08/30 19:53:08 JP
+ Bug #68219#: no static members - be reentrant
+
+
+ Rev 1.39 30 Aug 1999 21:53:08 JP
+ Bug #68219#: no static members - be reentrant
+
+ Rev 1.38 09 Aug 1999 14:16:12 JP
+ read W95 format from stream
+
+ Rev 1.37 30 Jul 1999 17:53:36 KHZ
+ Task #62955# name matching for docinfo fields (1)
+
+ Rev 1.36 27 Jul 1999 11:23:44 KHZ
+ Task #62941# find number format for date/time fields
+
+ Rev 1.35 15 Jul 1999 19:03:48 JP
+ Read_Field: if read only result then skip one char more back
+
+ Rev 1.34 07 Jul 1999 08:08:20 OS
+ extended indexes: Index names in ShellRes
+
+ Rev 1.33 21 Jun 1999 12:16:12 KHZ
+ Reference field (page, bookmark, footnote) part#2
+
+ Rev 1.32 18 Jun 1999 15:53:52 KHZ
+ Reference field (page, bookmark, footnote) part#1
+
+ Rev 1.31 03 Jun 1999 16:59:56 KHZ
+ Task #66418# UEberfluessiges ''xStrm->Seek( nOldPos );'' entfernt
+
+ Rev 1.30 02 Jun 1999 09:32:24 KHZ
+ Task #66227# a) kein Unicode bei Ver67 ;-) b) Grafik in grupp. Textbox
+
+ Rev 1.29 27 Apr 1999 14:39:10 KHZ
+ Task #65353# ueberfluessiges AppendTxtNode in Read_F_IncludeText entfernt
+
+
+ Rev 1.28 26 Apr 1999 19:22:54 JP
+ Bug #65298#: Grf/Ole bei Zeichenbindung immer Oben zu Grundline anordnen
+
+ Rev 1.27 18 Feb 1999 12:44:38 KHZ
+ Task #61675# Falsche Offsetberechnung bei ImportTox() in Read_FldVanish()
+
+ Rev 1.26 23 Dec 1998 16:15:00 KHZ
+ Task #60444# Inhaltverzeichnis jetzt auch bei fehlenden Switches
+
+ Rev 1.25 15 Dec 1998 10:50:44 KHZ
+ Tasks #59580# und #58766# (Nachzieher aus SRV506)
+
+ Rev 1.24 07 Dec 1998 11:27:28 KHZ
+ Task #58766# Unicode in benutzerdef. Verzeichnissen
+
+ Rev 1.23 02 Dec 1998 20:06:34 JP
+ Bug #60045#: Marks von Hyperlinks einlesen
+
+ Rev 1.22 02 Dec 1998 11:41:06 KHZ
+ Task #59834# ein vergessenes >>delete[]( pDef )><<
+
+ Rev 1.21 24 Nov 1998 21:11:22 JP
+ Task #59822#: OLE-Objecte einlesen
+
+ Rev 1.20 19 Nov 1998 10:37:02 TRI
+ OS2 Anpassungen
+
+ Rev 1.19 18 Nov 1998 16:29:46 HR
+ doppeltes const raus
+
+ Rev 1.18 18 Nov 1998 10:33:28 KHZ
+ Task #59078# Compilerfehler unter Unix
+
+ Rev 1.17 17 Nov 1998 20:25:12 JP
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.16 17 Nov 1998 20:05:56 JP
+ Task #59476#: Seitenumrandung / Seitennummern / Seitennummernformat lesen
+
+ Rev 1.15 17 Nov 1998 10:48:54 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.14 16 Nov 1998 18:59:18 KHZ
+ Task #59078# Feldimport SEQ (fertig)
+
+ Rev 1.13 16 Nov 1998 18:34:22 KHZ
+ Task #59078# Feldimport SEQ (Teil 1)
+
+ Rev 1.12 16 Nov 1998 13:19:52 JP
+ Task #59476#: Hyperlinks lesen, ImportGrf vereinfacht, Bookmarks kein ToUpper
+
+ Rev 1.11 05 Nov 1998 13:07:36 KHZ
+ Task #58993# Befehl INCLUDEPICTURE liefert jetzt korrekten String
+
+ Rev 1.10 30 Oct 1998 16:13:48 KHZ
+ Task #57836# Beliebige Parameterreihenfolge bei Feld INCLUDEPICTURE moeglich
+
+ Rev 1.9 30 Oct 1998 16:10:54 KHZ
+
+ Rev 1.8 29 Oct 1998 15:12:24 KHZ
+ Task #58620# GPF bei Feld EINFUEGENGRAFIK in Doc mit UNICODE
+
+ Rev 1.7 15 Sep 1998 19:35:46 JP
+ Bug #56310#: Teilfix - kein GPF mehr
+
+ Rev 1.6 13 Sep 1998 15:50:22 HJS
+ #56149# authorfield
+
+ Rev 1.5 03 Sep 1998 22:16:14 KHZ
+ Task #55189# Textboxen
+
+ Rev 1.4 11 Aug 1998 14:39:46 KHZ
+ Task #52607# neue Numerierungstypen (siehe auch WWPAR.CXX und Bug 54796)
+
+ Rev 1.3 05 Aug 1998 09:32:08 KHZ
+ Task #52607# Kodepflege
+
+ Rev 1.2 30 Jun 1998 21:33:24 KHZ
+ Header/Footer/Footnotes weitgehend ok
+
+ Rev 1.1 23 Jun 1998 11:15:28 KHZ
+ memicmp ersetzt durch MEMICMP
+
+ Rev 1.0 16 Jun 1998 11:08:28 KHZ
+ Initial revision.
+
+*************************************************************************/
+
+
+
+
diff --git a/sw/source/filter/ww8/ww8par6.cxx b/sw/source/filter/ww8/ww8par6.cxx
new file mode 100644
index 000000000000..2c788b203972
--- /dev/null
+++ b/sw/source/filter/ww8/ww8par6.cxx
@@ -0,0 +1,4883 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8par6.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 <stdlib.h>
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_USHORTS
+#define _SVSTDARR_USHORTSSORT
+#include <svtools/svstdarr.hxx>
+#endif
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SVX_LSPCITEM_HXX //autogen
+#include <svx/lspcitem.hxx>
+#endif
+#ifndef _SVX_WRLMITEM_HXX //autogen
+#include <svx/wrlmitem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_KERNITEM_HXX //autogen
+#include <svx/kernitem.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVX_CMAPITEM_HXX //autogen
+#include <svx/cmapitem.hxx>
+#endif
+#ifndef _SVX_SHDDITEM_HXX //autogen
+#include <svx/shdditem.hxx>
+#endif
+#ifndef _SVX_CNTRITEM_HXX //autogen
+#include <svx/cntritem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_SPLTITEM_HXX //autogen
+#include <svx/spltitem.hxx>
+#endif
+#ifndef _SVX_KEEPITEM_HXX //autogen
+#include <svx/keepitem.hxx>
+#endif
+#ifndef _SVX_ORPHITEM_HXX //autogen
+#include <svx/orphitem.hxx>
+#endif
+#ifndef _SVX_WIDWITEM_HXX //autogen
+#include <svx/widwitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_ESCPITEM_HXX //autogen
+#include <svx/escpitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_SHADITEM_HXX //autogen
+#include <svx/shaditem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_AKRNITEM_HXX //autogen
+#include <svx/akrnitem.hxx>
+#endif
+#ifndef _SVX_PAPERINF_HXX //autogen
+#include <svx/paperinf.hxx>
+#endif
+
+#ifndef _SVX_PBINITEM_HXX
+#include <svx/pbinitem.hxx>
+#endif
+
+#ifndef _SVX_HYZNITEM_HXX //autogen
+#include <svx/hyznitem.hxx>
+#endif
+
+#ifndef _RTL_TENCINFO_H
+#include <rtl/tencinfo.h>
+#endif
+
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _NODE_HXX //autogen
+#include <node.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx> // SwTxtNode, siehe unten: JoinNode()
+#endif
+#ifndef _PAM_HXX
+#include <pam.hxx> // fuer SwPam
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx> // class SwPageDesc
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTCNTNT_HXX //autogen
+#include <fmtcntnt.hxx>
+#endif
+#ifndef _FCHRFMT_HXX //autogen
+#include <fchrfmt.hxx>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTFTNTX_HXX
+#include <fmtftntx.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _FLTSHELL_HXX
+#include <fltshell.hxx> // fuer den Attribut Stack
+#endif
+#ifndef _FLTINI_HXX
+#include <fltini.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx>
+#endif
+#ifndef SW_LINEINFO_HXX
+#include <lineinfo.hxx>
+#endif
+#ifndef SW_FMTLINE_HXX
+#include <fmtline.hxx>
+#endif
+#ifndef _WW8SCAN_HXX
+#include <ww8scan.hxx>
+#endif
+#ifndef _WW8PAR2_HXX
+#include <ww8par2.hxx> // class WW8RStyle, class WwAnchorPara
+#endif
+
+
+#define NEW_MINHDSIZ // Definieren zum Ausnutzen der minimalen
+ // Header- und Footerhoehe
+
+
+static ColorData __FAR_DATA eSwWW8ColA[] = {
+ COL_BLACK, COL_BLACK, COL_LIGHTBLUE,
+ COL_LIGHTCYAN, COL_LIGHTGREEN, COL_LIGHTMAGENTA, COL_LIGHTRED,
+ COL_YELLOW, COL_WHITE, COL_BLUE, COL_CYAN, COL_GREEN,
+ COL_MAGENTA, COL_RED, COL_BROWN, COL_GRAY, COL_LIGHTGRAY };
+
+
+#ifdef HP9000
+#define INLINE_AUSSER_HP
+#else
+#define INLINE_AUSSER_HP inline
+#endif
+
+
+//-----------------------------------------
+// diverses
+//-----------------------------------------
+
+#define MM_250 1417 // WW-Default fuer Hor. Seitenraender: 2.5 cm
+#define MM_200 1134 // WW-Default fuer u.Seitenrand: 2.0 cm
+#define MM_125 709 // WW-Default fuer vert. K/F-Pos: 1.25 cm
+
+BOOL lcl_ReadBorders( BOOL bVer67, WW8_BRC* brc,
+ WW8PLCFx_Cp_FKP* pPap,
+ const WW8RStyle* pSty = 0,
+ const WW8PLCFx_SEPX* pSep = 0 );
+
+
+ColorData SwWW8ImplReader::GetCol( BYTE nIco )
+{
+ return eSwWW8ColA[nIco];
+}
+
+/***************************************************************************
+# Seiten - Attribute, die nicht ueber die Attribut-Verwaltung, sondern
+# ueber ...->HasSprm abgearbeitet werden
+# ( ausser OLST, dass weiterhin ein normales Attribut ist )
+#**************************************************************************/
+
+static short ReadSprm( const WW8PLCFx_SEPX* pSep, USHORT nId, short nDefaultVal )
+{
+ BYTE* pS = pSep->HasSprm( nId ); // sprm da ?
+ short nVal = ( pS ) ? SVBT16ToShort( pS ) : nDefaultVal;
+ return nVal;
+}
+
+static USHORT ReadUSprm( const WW8PLCFx_SEPX* pSep, USHORT nId, short nDefaultVal )
+{
+ BYTE* pS = pSep->HasSprm( nId ); // sprm da ?
+ USHORT nVal = ( pS ) ? SVBT16ToShort( pS ) : nDefaultVal;
+ return nVal;
+}
+
+static BYTE ReadBSprm( const WW8PLCFx_SEPX* pSep, USHORT nId, BYTE nDefaultVal )
+{
+ BYTE* pS = pSep->HasSprm( nId ); // sprm da ?
+ BYTE nVal = ( pS ) ? SVBT8ToByte( pS ) : nDefaultVal;
+ return nVal;
+}
+
+// dito, aber mit Return, ob vorhanden
+static BOOL ReadBSprmRet( BYTE& rnRet, const WW8PLCFx_SEPX* pSep, USHORT nId,
+ BYTE nDefaultVal )
+{
+ BYTE* pS = pSep->HasSprm( nId ); // sprm da ?
+ if( pS ){
+ rnRet = SVBT8ToByte( pS );
+ return TRUE;
+ }else{
+ rnRet = nDefaultVal;
+ return FALSE;
+ }
+}
+
+static short ReadULSprm( const WW8PLCFx_SEPX* pSep, USHORT nId, short nDefaultVal )
+{
+ BYTE* pS = pSep->HasSprm( nId ); // sprm da ?
+ short nVal = ( pS ) ? SVBT16ToShort( pS ) : nDefaultVal;
+ if( nVal < 0 ) // < 0 bedeutet: nicht verschieben, wenns nicht passt
+ nVal = -nVal;
+ return nVal;
+}
+
+static short ReadLRSprm( const WW8PLCFx_SEPX* pSep, USHORT nId, short nDefaultVal )
+{
+ BYTE* pS = pSep->HasSprm( nId ); // sprm da ?
+ short nVal = ( pS ) ? SVBT16ToShort( pS ) : nDefaultVal;
+ if( nVal < 0 ) // < 0 ist beim SW nicht erlaubt
+ nVal = 0;
+ return nVal;
+}
+
+
+// WW nimmt es mit den Groessen nicht so genau. Wird dieses nicht
+// korrigiert, dann erkennt es der Writer nur als Benutzergroesse
+// statt als richtiges Papierformat
+// AdjustSize() sucht nahe Papiergroessen raus, stark abweichende
+// Werte bleiben unveraendert.
+static SwTwips AdjustSize( USHORT nPara )
+{
+ static SwTwips aSizA[] = { lA3Height, lA3Width, lA4Width, lA5Width,
+ lB4Height, lB4Width, lB5Width, lB6Width, lC4Width, lC4Height,
+ lC5Width, lC6Width, lC65Width, lDLWidth, lDLHeight,lLetterWidth,
+ lLetterHeight, lLegalHeight, lTabloidWidth, lTabloidHeight };
+
+
+ SwTwips nSi = nPara;
+ for( USHORT i = 0; i < sizeof( aSizA ) / sizeof( aSizA[0] ); i++ ){
+ if( ( nSi - aSizA[i] < 5 )
+ && ( nSi - aSizA[i] > -5 ) ){
+ nSi = aSizA[i];
+ break;
+ }
+ }
+ return nSi;
+}
+
+
+void SwWW8ImplReader::RemoveCols( SwPageDesc& rPageDesc, SwFmtCol*& rpCol )
+{
+ SwFrmFmt &rFmt0 = rPageDesc.GetMaster();
+ const SwFmtCol rCol = rFmt0.GetCol();
+ if( rCol.GetNumCols() )
+ {
+ rpCol = new SwFmtCol( rCol );
+ SwFmtCol aCol;
+ rFmt0.SetAttr( aCol );
+ rPageDesc.GetLeft().SetAttr( aCol );
+ }
+ else
+ rpCol = 0;
+}
+
+
+BOOL SwWW8ImplReader::SetCols( SwFrmFmt* pFmt,
+ const WW8PLCFx_SEPX* pSep,
+ USHORT nNettoWidth,
+ BOOL bTestOnly )
+{
+ if( nIniFlags & WW8FL_NO_COLS ) // ausgeschaltet
+ return FALSE;
+
+ //sprmSCcolumns - Anzahl der Spalten - 1
+ USHORT nCols = ReadSprm( pSep, (bVer67 ? 144 : 0x500B), 0 );
+
+ nCols ++; // Zahl der SW-Spalten
+ if( nCols < 2 )
+ return FALSE; // keine oder bloedsinnige Spalten
+
+ if( bTestOnly )
+ return TRUE;
+
+ if( !pFmt )
+ {
+ ASSERT( !this, "code error: pFmt hat Zero value!" );
+ return FALSE;
+ }
+
+ SwFmtCol aCol; // Erzeuge SwFmtCol
+
+ //sprmSDxaColumns - Default-Abstand 1.25 cm
+ USHORT nColSpace = ReadUSprm( pSep, (bVer67 ? 145 : 0x900C), 708 );
+
+ // sprmSLBetween
+ if( ReadBSprm( pSep, (bVer67 ? 158 : 0x3019), 0 ) )
+ {
+ aCol.SetLineAdj( COLADJ_TOP ); // Line
+ aCol.SetLineHeight( 100 );
+ aCol.SetLineColor( Color( COL_BLACK ));
+ aCol.SetLineWidth( 1 );
+ }
+
+ // sprmSFEvenlySpaced
+ BOOL bEven = ReadBSprm( pSep, (bVer67 ? 138 : 0x3005), 1 );
+
+ if( bEven ) // alle Spalten sind gleich
+ aCol.Init( nCols, nColSpace, nNettoWidth );
+ else
+ {
+ aCol.Init( nCols, nColSpace, USHRT_MAX );
+ // Spalten unterschiedlich breit: fein, das kann der Writer inzwischen!
+ USHORT nWishWidth = 0, nLeftDist = 0, nRightDist = 0;
+ USHORT i;
+ for( i = 0; i < nCols; i++ )
+ {
+ SwColumn* pCol = aCol.GetColumns()[ i ];
+ pCol->SetLeft( nLeftDist );
+
+ if( i < nCols-1 )
+ {
+ //sprmSDxaColSpacing
+ BYTE* pSD = pSep->HasSprm( (bVer67 ? 137 : 0xF204), BYTE( i ) );
+
+ ASSERT( pSD, "+Sprm 137 (bzw. 0xF204) (Colspacing) fehlt" );
+ if( pSD )
+ {
+ USHORT nSp = SVBT16ToShort( pSD + 1 );
+ nRightDist = nSp / 2;
+
+ pCol->SetRight( nSp - nRightDist );
+ }
+ }
+ else
+ nRightDist = 0; // letzte Spalte hat keinen Zwischenraum mehr
+
+ //sprmSDxaColWidth
+ BYTE* pSW = pSep->HasSprm( (bVer67 ? 136 : 0xF203), BYTE( i ) );
+
+ ASSERT( pSW, "+Sprm 136 (bzw. 0xF203) (ColWidth) fehlt" );
+ if( pSW )
+ pCol->SetWishWidth( SVBT16ToShort( pSW + 1 )
+ + nLeftDist
+ + pCol->GetRight() );
+ // aufsummierte Spaltenbreiten ergeben Gesamtbreite
+ nWishWidth += pCol->GetWishWidth();
+ // Halber Abstand ist an naechster Spalte noch zu setzen
+ nLeftDist = nRightDist;
+ }
+ aCol.SetWishWidth( nWishWidth );
+
+#ifdef niemalsdef
+ // beim RTF-Import:
+ aCol._SetOrtho( FALSE );
+ USHORT nWishWidth = 0, nHalfPrev = 0;
+ for( USHORT n = 0, i = 0; n < aColumns.Count(); n += 2, ++i )
+ {
+ SwColumn* pCol = aCol.GetColumns()[ i ];
+ pCol->SetLeft( nHalfPrev );
+ USHORT nSp = aColumns[ n+1 ];
+ nHalfPrev = nSp / 2;
+ pCol->SetRight( nSp - nHalfPrev );
+ pCol->SetWishWidth( aColumns[ n ] +
+ pCol->GetLeft() + pCol->GetRight() );
+ nWishWidth += pCol->GetWishWidth();
+ }
+ aCol.SetWishWidth( nWishWidth );
+#endif
+ }
+ pFmt->SetAttr( aCol );
+ return TRUE;
+}
+
+// SetPage1() setzt Orientierung, Papiergroesse, LRRaender, Spalten
+void SwWW8ImplReader::SetPage1( SwPageDesc* pPageDesc, SwFrmFmt &rFmt,
+ const WW8PLCFx_SEPX* pSep, USHORT nLIdx,
+ BOOL bIgnoreCols )
+{
+ if( nIniFlags & WW8FL_NO_LRUL ) // Abgeschaltet
+ return;
+
+ static USHORT __READONLY_DATA aVer67Ids[] = {
+/*sprmSBOrientation*/ 162,
+/*sprmSXaPage*/ 164,
+/*sprmSYaPage*/ 165,
+/*sprmSDxaLeft*/ 166,
+/*sprmSDxaRight*/ 167,
+/*sprmSDzaGutter*/ 170
+ };
+
+ static USHORT __READONLY_DATA aVer8Ids[] = {
+/*sprmSBOrientation*/ 0x301d,
+/*sprmSXaPage*/ 0xB01F,
+/*sprmSYaPage*/ 0xB020,
+/*sprmSDxaLeft*/ 0xB021,
+/*sprmSDxaRight*/ 0xB022,
+/*sprmSDzaGutter*/ 0xB025
+ };
+
+ const USHORT* pIds = bVer67 ? aVer67Ids : aVer8Ids;
+
+ // 1. Orientierung
+ pPageDesc->SetLandscape( 0 != ReadBSprm( pSep, pIds[0], 0 ) );
+
+ // 2. Papiergroesse
+ SwFmtFrmSize aSz( rFmt.GetFrmSize() );
+ aSz.SetWidth( AdjustSize( ReadUSprm( pSep, pIds[1], (USHORT)lLetterWidth )));
+
+ nPgWidth = (short)aSz.GetWidth(); // Merken fuer Tabellen u. ae.
+ aSz.SetHeight( AdjustSize( ReadUSprm( pSep, pIds[2], (USHORT)lLetterHeight )));
+
+ rFmt.SetAttr( aSz );
+
+ // 3. LR-Raender
+ // Default-Raender fuer verschiedene nationale Versionen
+ static USHORT __READONLY_DATA nLef[] = { MM_250, 1800 };
+ static USHORT __READONLY_DATA nRig[] = { MM_250, 1800 };
+
+ short nWWLe = ReadULSprm( pSep, pIds[3], nLef[nLIdx] );
+ short nWWRi = ReadULSprm( pSep, pIds[4], nRig[nLIdx] );
+ short nWWGu = ReadULSprm( pSep, pIds[5], 0 );
+
+ nWWLe += nWWGu;
+
+ // Left / Right
+ rFmt.SetAttr( SvxLRSpaceItem( nWWLe, nWWRi ) );
+
+ nPgLeft = nWWLe;
+ nPgRight = nWWRi;
+
+ if( !bIgnoreCols )
+ {
+ // 4. Spalten
+ SetCols( &rFmt, pSep, aSz.GetWidth() - nWWLe - nWWRi );
+ }
+}
+
+
+
+
+struct WW8ULSpaceData
+{
+ BOOL bHasHeader, bHasFooter;
+ short nSwHLo, nHdUL,
+ nSwFUp, nFtUL,
+ nSwUp, nSwLo;
+ WW8ULSpaceData(): bHasHeader( FALSE ), bHasFooter( FALSE ){}
+};
+
+void SwWW8ImplReader::GetPageULData( const WW8PLCFx_SEPX* pSep,
+ USHORT nLIdx,
+ BOOL bFirst,
+ WW8ULSpaceData& rData )
+{
+ if( nIniFlags & WW8FL_NO_LRUL ) // abgeschaltet
+ return;
+
+ // Default-Raender fuer verschiedene nationale Versionen
+ static USHORT __READONLY_DATA nTop[] = { MM_250, 1440 };
+ static USHORT __READONLY_DATA nBot[] = { MM_200, 1440 };
+
+ // Einlesen der WW-Einstellungen
+
+ static USHORT __READONLY_DATA aVer67Ids[] = {
+/*sprmSDyaTop*/ 168,
+/*sprmSDyaBottom*/ 169,
+/*sprmSDyaHdrTop*/ 156,
+/*sprmSDyaHdrBottom*/ 157
+ };
+ static USHORT __READONLY_DATA aVer8Ids[] = {
+/*sprmSDyaTop*/ 0x9023,
+/*sprmSDyaBottom*/ 0x9024,
+/*sprmSDyaHdrTop*/ 0xB017,
+/*sprmSDyaHdrBottom*/ 0xB018
+ };
+
+ const USHORT* pIds = bVer67 ? aVer67Ids : aVer8Ids;
+
+ short nWWUp = ReadULSprm( pSep, pIds[0], nTop[nLIdx] );
+ short nWWLo = ReadULSprm( pSep, pIds[1], nBot[nLIdx] );
+ short nWWHTop = ReadULSprm( pSep, pIds[2], MM_125 );
+ short nWWFBot = ReadULSprm( pSep, pIds[3], MM_125 );
+
+ if( bFirst )
+ rData.bHasHeader = (nCorrIhdt & WW8_HEADER_FIRST )!=0;
+ else
+ rData.bHasHeader = (nCorrIhdt & (WW8_HEADER_EVEN | WW8_HEADER_ODD))!=0;
+
+ if( rData.bHasHeader )
+ {
+ rData.nSwUp = nWWHTop; // Header -> umrechnen
+ rData.nSwHLo = nWWUp - nWWHTop;
+#ifdef NEW_MINHDSIZ
+ if( rData.nSwHLo < MINLAY )
+ rData.nSwHLo = MINLAY;
+#else // NEW_MINHDSIZ
+ if( nIniHdSiz )
+ rData.nSwHLo -= (short)nIniHdSiz;
+ else if( nHdTextHeight )
+ rData.nSwHLo -= (short)nHdTextHeight;
+ else
+ rData.nSwHLo -= 240;
+
+ if( rData.nSwHLo < 0 )
+ rData.nSwHLo = 0;
+#endif // NEW_MINHDSIZ
+ }
+ else // kein Header -> Up einfach uebernehmen
+ rData.nSwUp = nWWUp;
+
+ if( bFirst )
+ rData.bHasFooter = (nCorrIhdt & WW8_FOOTER_FIRST )!=0;
+ else
+ rData.bHasFooter = (nCorrIhdt & (WW8_FOOTER_EVEN | WW8_FOOTER_ODD))!=0;
+
+ if( rData.bHasFooter )
+ {
+ rData.nSwLo = nWWFBot; // Footer -> Umrechnen
+ rData.nSwFUp = nWWLo - nWWFBot;
+
+#if 0
+ if( rData.nSwFUp < MINLAY )
+ rData.nSwFUp = MINLAY;
+#else // 0
+ if( nIniFtSiz )
+ rData.nSwFUp -= (short)nIniFtSiz;
+ else if( nFtTextHeight )
+ rData.nSwFUp -= (short)nFtTextHeight;
+ else
+ rData.nSwFUp -= 240;
+
+ if( rData.nSwFUp < 0 )
+ rData.nSwFUp = 0;
+#endif // !0
+ }
+ else // kein Footer -> Lo einfach uebernehmen
+ rData.nSwLo = nWWLo;
+
+ nPgTop = rData.nSwUp;
+}
+
+
+void SwWW8ImplReader::SetPageULSpaceItems( SwFrmFmt &rFmt, WW8ULSpaceData& rData )
+{
+ if( nIniFlags & WW8FL_NO_LRUL ) // deactivated ?
+ return;
+
+ if( rData.bHasHeader ) // ... und Header-Lower setzen
+ {
+ SwFrmFmt* pHdFmt = (SwFrmFmt*)rFmt.GetHeader().GetHeaderFmt();
+ if( pHdFmt )
+ {
+#ifdef NEW_MINHDSIZ
+// Kopfzeilenhoehe minimal sezten
+ pHdFmt->SetAttr( SwFmtFrmSize( ATT_MIN_SIZE, 0, rData.nSwHLo ) );
+#else // NEW_MINHDSIZ
+ SvxULSpaceItem aHdUL( pHdFmt->GetULSpace() );
+ aHdUL.SetLower( rData.nSwHLo );
+ pHdFmt->SetAttr( aHdUL );
+#endif // NEW_MINHDSIZ
+ }
+ }
+
+ if( rData.bHasFooter ) // ... und Footer-Upper setzen
+ {
+ SwFrmFmt* pFtFmt = (SwFrmFmt*)rFmt.GetFooter().GetFooterFmt();
+ if( pFtFmt )
+ {
+#if 0
+// Fusszeilenhoehe minimal sezten
+ pFtFmt->SetAttr( SwFmtFrmSize( ATT_MIN_SIZE, 0, rData.nSwFUp ) );
+#else // 0
+ SvxULSpaceItem aFtUL( pFtFmt->GetULSpace() );
+ aFtUL.SetUpper( rData.nSwFUp );
+ pFtFmt->SetAttr( aFtUL );
+#endif // !0
+ }
+ }
+ SvxULSpaceItem aUL( rData.nSwUp, rData.nSwLo ); // Page-UL setzen
+ rFmt.SetAttr( aUL );
+}
+
+
+
+
+void SwWW8ImplReader::SetPageBorder( SwPageDesc* pPageDesc0,
+ SwPageDesc* pPageDesc1,
+ const WW8PLCFx_SEPX* pSep,
+ USHORT nLIdx )
+{
+ WW8_BRC brc[4];
+ if( !bVer67 && ::lcl_ReadBorders( bVer67, brc, 0, 0, pSep ) &&
+ IsBorder( brc ))
+ {
+ short nPgbProp = ReadSprm( pSep, 0x522F, 0 ); //sprmSPgbProp
+
+ // ogbProp - pgbApplyTo
+ // 0 all Pages in this Section
+ // 1 first Page in this Section
+ // 2 all Pages in this Section but first
+ // 3 whole document (all Sections)
+ if( !pPageDesc0 && pPageDesc1 &&
+ ( 2 == (nPgbProp & 0x7 ) || 1 == (nPgbProp & 0x7 )) )
+ {
+ // dann muss aber einer angelegt werden
+ SwPaM* pPageDeskPaM = 0;
+ pPageDesc0 = CreatePageDesc( 0, &pPageDeskPaM );
+
+
+
+ // if PageDesc was inserted check for cols
+ // and insert section instead
+ if( pPageDeskPaM )
+ {
+ SwFrmFmt &rFmt = pPageDesc0->GetMaster();
+ SetPage1( pPageDesc0, rFmt, pSep, nLIdx, FALSE );
+ const SwFmtCol& rCol = rFmt.GetCol();
+ // if PageDesc has been inserted and has cols
+ // insert a *section* with cols instead
+ if( rCol.GetNumCols() )
+ {
+ InsertSectionWithWithoutCols( *pPaM, &rCol );
+ // remove columns from PageDesc
+ SwFmtCol aCol;
+ rFmt.SetAttr( aCol );
+ }
+ delete pPageDeskPaM;
+ }
+
+
+
+ rDoc.CopyPageDesc( *pPageDesc1, *pPageDesc0, FALSE );
+ pPageDesc0->SetFollow( pPageDesc1 );
+ pPageDesc1->SetFollow( pPageDesc1 );
+ }
+
+ SwFrmFmt* pFmt0 = 0, *pFmt1 = 0;
+ if( 2 != (nPgbProp & 0x7 ) && pPageDesc0 )
+ pFmt0 = &pPageDesc0->GetMaster();
+
+ if( 1 != (nPgbProp & 0x7 ) && pPageDesc1 )
+ pFmt1 = &pPageDesc1->GetMaster();
+
+ SvxBoxItem aBox;
+ SetBorder( aBox, brc );
+
+ Rectangle aInnerDist;
+ GetBorderDistance( brc, aInnerDist );
+
+ if( aInnerDist.Left() || aInnerDist.Top()
+ || aInnerDist.Right() || aInnerDist.Bottom() )
+ {
+ // das muss natuerlich von den Raendern abgezogen werden!
+ SwFrmFmt* pFmt = pFmt0;
+ for( int i = 0; i < 2; ++i, pFmt = pFmt1 )
+ if( pFmt )
+ {
+ SvxLRSpaceItem aLR( pFmt->GetLRSpace() );
+ SvxULSpaceItem aUL( pFmt->GetULSpace() );
+
+ if( 0x20 == ( nPgbProp & 0xe0 )) // distance from pageborder
+ {
+ // Left
+ if( aInnerDist.Left() < aLR.GetLeft() )
+ {
+ aLR.SetLeft( (USHORT)(aLR.GetLeft()
+ - aInnerDist.Left() ) );
+ aBox.SetDistance( (USHORT)aInnerDist.Left(),
+ BOX_LINE_LEFT );
+ }
+ else
+ {
+ aBox.SetDistance( aLR.GetLeft(), BOX_LINE_LEFT );
+ aLR.SetLeft( 0 );
+ }
+ // Right
+ if( aInnerDist.Right() < aLR.GetRight() )
+ {
+ aLR.SetRight( (USHORT)(aLR.GetRight()
+ - aInnerDist.Right() ) );
+ aBox.SetDistance( (USHORT)aInnerDist.Right(),
+ BOX_LINE_RIGHT );
+ }
+ else
+ {
+ aBox.SetDistance( aLR.GetRight(), BOX_LINE_RIGHT );
+ aLR.SetRight( 0 );
+ }
+ // Top
+ if( aInnerDist.Top() < aUL.GetUpper() )
+ {
+ aUL.SetUpper( (USHORT)(aUL.GetUpper()
+ - aInnerDist.Top() ) );
+ aBox.SetDistance( (USHORT)aInnerDist.Top(),
+ BOX_LINE_TOP );
+ }
+ else
+ {
+ aBox.SetDistance( aUL.GetUpper(), BOX_LINE_TOP );
+ aUL.SetUpper( 0 );
+ }
+ // Bottom
+ if( aInnerDist.Bottom() < aUL.GetLower() )
+ {
+ aUL.SetLower( (USHORT)(aUL.GetLower()
+ - aInnerDist.Bottom() ) );
+ aBox.SetDistance( (USHORT)aInnerDist.Bottom(),
+ BOX_LINE_BOTTOM );
+ }
+ else
+ {
+ aBox.SetDistance( aUL.GetLower(), BOX_LINE_BOTTOM );
+ aUL.SetLower( 0 );
+ }
+
+ pFmt->SetAttr( aLR );
+ pFmt->SetAttr( aUL );
+ pFmt->SetAttr( aBox );
+ }
+ else // distance from text
+ {
+ // Left
+ aBox.SetDistance( (USHORT)aInnerDist.Left(),
+ BOX_LINE_LEFT );
+ aLR.SetLeft( Max((long)0, (long)(aLR.GetLeft()
+ - (USHORT)aInnerDist.Left() )));
+ // Right
+ aBox.SetDistance( (USHORT)aInnerDist.Right(),
+ BOX_LINE_RIGHT );
+ aLR.SetRight(Max((long)0, (long)(aLR.GetRight()
+ - (USHORT)aInnerDist.Right() )));
+ // Top
+ aBox.SetDistance( (USHORT)aInnerDist.Top(),
+ BOX_LINE_TOP );
+ aUL.SetUpper(Max(0, aUL.GetUpper()
+ - (USHORT)aInnerDist.Top() ));
+ // Bottom
+ aBox.SetDistance( (USHORT)aInnerDist.Bottom(),
+ BOX_LINE_BOTTOM );
+ aUL.SetLower(Max(0, aUL.GetLower()
+ - (USHORT)aInnerDist.Bottom() ));
+
+ pFmt->SetAttr( aLR );
+ pFmt->SetAttr( aUL );
+ pFmt->SetAttr( aBox );
+ }
+ }
+
+ }
+ else
+ {
+ if( pFmt0 ) pFmt0->SetAttr( aBox );
+ if( pFmt1 ) pFmt1->SetAttr( aBox );
+ }
+
+
+ SvxShadowItem aS;
+ if( SetShadow( aS, aBox, brc))
+ {
+ if( pFmt0 ) pFmt0->SetAttr( aS );
+ if( pFmt1 ) pFmt1->SetAttr( aS );
+ }
+ }
+
+// if( nSwUp > rBox.GetDistance()) nSwUp -= rBox.GetDistance(); else nSwUp = 0;
+// if( nSwLo > rBox.GetDistance()) nSwLo -= rBox.GetDistance(); else nSwLo = 0;
+}
+
+void SwWW8ImplReader::SetUseOn( SwPageDesc* pPageDesc0, SwPageDesc* pPageDesc1,
+ const WW8PLCFx_SEPX* pSep, BYTE nCorrIhdt )
+{
+ BOOL bEven = nCorrIhdt & ( WW8_HEADER_EVEN | WW8_FOOTER_EVEN );
+
+ UseOnPage eUseBase = ( pWDop->fMirrorMargins ) ? PD_MIRROR : PD_ALL;
+ UseOnPage eUse = eUseBase;
+ if( !bEven )
+ eUse = (UseOnPage)( eUse | PD_HEADERSHARE | PD_FOOTERSHARE );
+
+ if( !pPageDesc1 ){ // 1 Pagedesc reicht
+
+ pPageDesc0->WriteUseOn( eUse ); // alle Seiten
+ }else{ // 2 Pagedescs noetig
+ pPageDesc0->WriteUseOn( (UseOnPage) // 1. Seite
+ ( eUseBase | PD_HEADERSHARE | PD_FOOTERSHARE ) );
+ pPageDesc1->WriteUseOn( eUse ); // Folgeseiten
+ }
+}
+
+
+void SwWW8ImplReader::InsertSectionWithWithoutCols( SwPaM& rMyPaM, const SwFmtCol* pCol )
+{
+ // if this Node is not empty create a new Node befor inserting the Section
+ const SwPosition* pPos = rMyPaM.GetPoint();
+ const SwTxtNode* pSttNd = pPos->nNode.GetNode().GetTxtNode();
+ USHORT nCntPos = pPos->nContent.GetIndex();
+ if( nCntPos && pSttNd->GetTxt().Len() )
+ {
+ if( rMyPaM.HasMark() ) // do we have a SELECTION ?
+ {
+ SwNodeIndex aMarkNd( rMyPaM.GetMark()->nNode, -1 );
+ xub_StrLen nMarkCnt = rMyPaM.GetMark()->nContent.GetIndex();
+ rDoc.SplitNode( *pPos );
+
+ rMyPaM.Move( fnMoveBackward );
+ aMarkNd++;
+ rMyPaM.GetMark()->nNode = aMarkNd;
+ rMyPaM.GetMark()->nContent.Assign( aMarkNd.GetNode().GetCntntNode(), nMarkCnt );
+ }
+ else
+ rDoc.SplitNode( *pPos );
+ }
+
+ SwSection aSection( CONTENT_SECTION, rDoc.GetUniqueSectionName() );
+
+ SfxItemSet aSet( rDoc.GetAttrPool(), aFrmFmtSetRange );
+
+ if( pCol )
+ aSet.Put( *pCol );
+
+ if( 2 == pWDop->fpc )
+ aSet.Put( SwFmtFtnAtTxtEnd( FTNEND_ATTXTEND ));
+ if( 0 == pWDop->epc )
+ aSet.Put( SwFmtEndAtTxtEnd( FTNEND_ATTXTEND ));
+
+ pNewSection = rDoc.Insert( rMyPaM, aSection, &aSet );
+ ASSERT( !pBehindSection, "pBehindSection ungleich Null! why Recursion?");
+
+
+ // set PaM into first Node of the new Section
+ const SwSectionNode* pSectionNode =
+ pNewSection->GetFmt()->GetSectionNode();
+ ASSERT( pSectionNode, "Kein Inhalt vorbereitet." );
+
+
+ pBehindSection = new SwNodeIndex( *pSectionNode->EndOfSectionNode(), 1 );
+
+
+ rMyPaM.GetPoint()->nNode =
+ pSectionNode->GetIndex()+1;
+ rMyPaM.GetPoint()->nContent.Assign(
+ rMyPaM.GetCntntNode(), 0 );
+}
+
+
+
+// Bei jedem Abschnittswechsel ( auch am Anfang eines Dokuments ) wird
+// CreateSep gerufen, dass dann den / die Pagedesc(s) erzeugt und
+// mit Attributen un KF-Texten fuellt.
+// Dieses Vorgehen ist noetig geworden, da die UEbersetzung der verschiedenen
+// Seiten-Attribute zu stark verflochten ist.
+
+void SwWW8ImplReader::CreateSep(const long nTxtPos)
+{/*static BYTE __READONLY_DATA nHdFtType[] =
+ { WW8_HEADER_EVEN, WW8_HEADER_ODD,
+ WW8_FOOTER_EVEN, WW8_FOOTER_ODD,
+ WW8_HEADER_FIRST, WW8_FOOTER_FIRST };*/
+
+ if( bTxbxFlySection || bDontCreateSep )
+ {
+ return;
+ }
+
+
+ BYTE nLastSectionCorrIhdt = nCorrIhdt;
+ BOOL bLastSectionHadATitlePage = bSectionHasATitlePage;
+
+ // Might we have to close a section first?
+ BOOL bSectionWasJustClosed = pBehindSection && nTxtPos;
+ if( bSectionWasJustClosed )
+ {
+ // remove preceeding Node
+ // if a 0x0d came immediately before
+ if( 0 == pPaM->GetPoint()->nContent.GetIndex() )
+ JoinNode( pPaM );
+ // set PaM behind section
+ pPaM->GetPoint()->nNode = *pBehindSection;
+ pPaM->GetPoint()->nContent.Assign(
+ pPaM->GetCntntNode(), 0 );
+
+ DELETEZ( pBehindSection );
+ DELETEZ( pLastPgDeskIdx );
+ }
+
+ SwPageDesc* pOldPageDesc = pPageDesc;
+ SwPageDesc* pPageDesc1 = 0;
+ WW8PLCFx_SEPX* pSep = pPlcxMan->GetSepPLCF();
+
+
+ // check if Line Numbering must be activated or resetted
+ BYTE* pSprmSNLnnMod = bNew ? pSep->HasSprm( bVer67 ? 154 : 0x5015 ) : 0;
+ if( pSprmSNLnnMod && *pSprmSNLnnMod )
+ {
+ // restart-numbering-mode: 0 per page, 1 per section, 2 never restart
+ BYTE* pSprmSLnc = pSep->HasSprm( bVer67 ? 152 : 0x3013 );
+ bRestartLnNumPerSection = pSprmSLnc && 1 == *pSprmSLnc;
+
+ if( bNoLnNumYet )
+ {
+ SwLineNumberInfo aInfo( rDoc.GetLineNumberInfo() );
+
+ aInfo.SetPaintLineNumbers( TRUE );
+
+ aInfo.SetRestartEachPage( !pSprmSLnc || 0 == *pSprmSLnc );
+
+ BYTE* pSprmSDxaLnn = pSep->HasSprm( bVer67 ? 155:0x9016 );
+ if( pSprmSDxaLnn )
+ {
+ INT16 nSDxaLnn = SVBT16ToShort( pSprmSDxaLnn );
+ aInfo.SetPosFromLeft( nSDxaLnn );
+ }
+
+ aInfo.SetCountBy( *pSprmSNLnnMod ); //Paint only for every n line
+
+
+ // to be defaulted features ( HARDCODED in MS Word 6,7,8,9 )
+ aInfo.SetCountBlankLines( TRUE );
+ aInfo.SetCountInFlys( FALSE );
+ aInfo.SetPos( LINENUMBER_POS_LEFT );
+ SwNumType aNumType; // this sets SVX_NUM_ARABIC per default
+ aInfo.SetNumType( aNumType );
+
+
+ // to be ingnored features ( NOT existing in MS Word 6,7,8,9 )
+ // aInfo.SetDividerCountBy( nDividerCountBy );
+ // aInfo.SetDivider( sDivider );
+ // aInfo.SetCharFmt( pChrFmt );
+
+ rDoc.SetLineNumberInfo( aInfo );
+ bNoLnNumYet = FALSE;
+ }
+
+ BYTE* pSprmSLnnMin = pSep->HasSprm( bVer67 ? 160:0x501B );
+ if( ( pSprmSLnnMin
+ && 0 < *pSprmSLnnMin )
+ || ( bRestartLnNumPerSection
+ && !bNoLnNumYet ) )
+ {
+ SwFmtLineNumber aLN;
+ if( pSprmSLnnMin )
+ aLN.SetStartValue( 1 + *pSprmSLnnMin );
+ else
+ aLN.SetStartValue( 1 );
+
+ NewAttr( aLN );
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_LINENUMBER );
+ }
+ bNoLnNumYet = FALSE;
+ }
+
+
+ // pruefen, ob und wie umzubrechen ist break code: 0 No break
+ // 1 New column
+ BYTE* pSprmBkc = pSep->HasSprm( bVer67 ? 142 : 0x3009 );// 2 New page
+ BYTE nBreakCode = pSprmBkc ? *pSprmBkc : 2; // 3 Even page
+ BOOL bContinuousBreak=(0 == nBreakCode); // 4 Odd page
+
+ // im wievielten Abschnitt stehen wir denn eigentlich?
+ nActSectionNo = (short)( pSep->GetIdx() & 0x00007fff );
+
+
+
+ /*
+ Welche Kopf-/Fuss-Bereiche sind
+ identisch mit dem Vorgaenger-Abschnitt?
+ */ // sprmSFTitlePage
+ bSectionHasATitlePage = (0 != ReadBSprm( pSep, bVer67 ? 143 : 0x300A, 0 ));
+
+ BYTE nIPara;
+
+ BYTE nJustCopyHdFt = 0; // HdFt that are stored in previous WW section prop
+ // and were NOT USED but may be copied now
+ BYTE nSameHdFt = 0; // HdFt that WERE the same in previous WW section
+
+ short aOldSectionNo[ 6 ];
+ memset( &aOldSectionNo, 0, sizeof( aOldSectionNo ) );
+
+ if( bVer67 )
+ {
+ // sprmSGprfIhdt
+ BOOL bSameHdFt = ( !ReadBSprmRet( nIPara, pSep, 153, 0 ) );
+
+ // Leere Hd/Ft will ich nicht
+ nCorrIhdt = pHdFt ? HdFtCorrectPara( nIPara ) : 0;
+ if( bSameHdFt )
+ {
+ nSameHdFt = 0xff;
+ nJustCopyHdFt = nSameHdFt;
+ }
+ }
+ else
+ {
+ if( !pHdFt )
+ nCorrIhdt = 0;
+ else
+ {
+ // nCorrIhdt ermitteln: WELCHE Hd/Ft sind ueberhaupt zu aktivieren?
+ //
+ nCorrIhdt = WW8_HEADER_ODD | WW8_FOOTER_ODD;
+
+ if( bSectionHasATitlePage )
+ nCorrIhdt |= WW8_HEADER_FIRST | WW8_FOOTER_FIRST;
+
+ if( pWDop->fFacingPages )
+ nCorrIhdt |= WW8_HEADER_EVEN | WW8_FOOTER_EVEN;
+
+ // den PLCF analysieren:
+ //
+ // Hd/Ft ist gleich, wenn die Laenge des Eintrags NULL ist
+ // oder die Ziel-Offsets identisch sind.
+ //
+ WW8_CP nStart;
+ WW8_CP nOldStart;
+ long nLen;
+ long nOldLen;
+ BYTE nHdFtInfosStored=0;
+
+ for( BYTE nI = 0, nMask = 1; nI < 6; nI++, nMask <<= 1 )
+ {
+ // 1st find ALL Hd/Ft infos that are stored in this WW section
+ // -- or in the sections before this one --
+ // regardless whether they are used in this section or not
+ pHdFt->GetTextPosExact( nI+ (nActSectionNo+1)*6, nStart, nLen );
+ if( !nLen || nActSectionNo )
+ {
+ short nOldSectionNo = nActSectionNo;
+ do
+ {
+ --nOldSectionNo;
+ pHdFt->GetTextPosExact( nI + (nOldSectionNo+1)*6,
+ nOldStart,
+ nOldLen);
+ if( nOldLen )
+ aOldSectionNo[ nI ] = nOldSectionNo;
+ }
+ while( nOldSectionNo && !nOldLen );
+ }
+ if( nLen || nOldLen )
+ nHdFtInfosStored |= nMask;
+
+
+ if( nCorrIhdt & nMask )
+ {
+ if( nActSectionNo )
+ {
+ if( !nLen
+ || ( (nOldStart == nStart)
+ && (nOldLen == nLen ) ) )
+ {
+ // same Hd/Ft as in previous Section or NO Hd/Ft
+ if( nHdFtInfosStored & nMask )
+ {
+ // prev. sect. really DID have and USE the Hd/Ft
+ if( nLastSectionCorrIhdt & nMask )
+ nJustCopyHdFt |= nMask;
+ // Hd/Ft may be found in one of prev. sections
+ nSameHdFt |= nMask;
+ }
+ else
+ nCorrIhdt &= ~nMask;// NO prev. Hd/Ft at all
+ }
+ }
+ else
+ if( !nLen )
+ nCorrIhdt &= ~nMask;// 0 in 1.Sect.: Hd/Ft undefined
+ }
+ }
+ }
+ // Einlese-Flag auf Use-On-Flag setzen
+ nIPara = nCorrIhdt;
+ }
+
+
+ USHORT nLIdx = ( ( pWwFib->lid & 0xff ) == 0x9 ) ? 1 : 0;
+
+ // sprmSNfcPgn
+ BYTE nLastNfcPgn = nNfcPgn;
+ nNfcPgn = ReadBSprm( pSep, (bVer67 ? 147 : 0x300E), 0 );
+ if( nNfcPgn > 4 ) nNfcPgn = 0;
+
+
+ /*
+ Pruefen, ob wir uns den neuen Abschnitt schenken koennen, da kein
+ Umbruch erforderlich ist.
+ */
+ if( pSep->GetIMax() > 1 )
+ {
+ if( nActSectionNo )
+ {
+ // Index eins zurueck setzen
+ pSep->SetIdx( nActSectionNo-1 );
+ // Attribute von vorigem Abschnitt einlesen
+ WW8PLCFxDesc aOther;
+ pSep->GetSprms( &aOther );
+ long nOtherSprmsLen = aOther.nSprmsLen;
+ // Kopie der vorigen Attr. anlegen, da sie gleich ueberschrieben werden
+ BYTE* pOtherMem = new BYTE[ nOtherSprmsLen ];
+ memcpy( pOtherMem, aOther.pMemPos, nOtherSprmsLen );
+ // Index wieder richtig setzen
+ pSep->SetIdx( nActSectionNo );
+ // aktuelle Attribute einlesen
+ WW8PLCFxDesc aCur;
+ pSep->GetSprms( &aCur );
+ // zu ignorierende Attribute sammeln
+ SvUShortsSort aIgnore(9, 1);
+ if( bContinuousBreak )
+ {
+ /*
+ zu 'sprmSBkc':
+ Wir sehen zwei WW-Abschnitte auch dann als gleich an,
+ wenn sie sich lediglich im break code unterscheiden.
+ Natuerlich muessen die Kopf/Fuss-Bereiche identisch sein.
+
+ Ignoriert werden auch die folgenden,
+ spaltenbezogene Flags:
+ SCcolumns, SDxaColumns, SDxaColWidth,
+ SDxaColSpacing, SFEvenlySpaced, SLBetween
+ und: SFFacingCol (nur bei Ver8)
+
+ We will also ignore a different formatting of the page number here.
+
+ We will also ignore different line numbering settings here
+ since only the very 1st line numbering settings are taken
+ into account anyway, see: bNoLnNum
+ */
+ static USHORT __READONLY_DATA aVer67Ids[ 13 ] =
+ {136, 137, 138, 139, 142, 144, 145, 147, 152, 154, 155, 158, 160};//sortiert!
+ static USHORT __READONLY_DATA aVer8Ids[ 14] =
+ {0x3005, 0x3006, 0x3009, 0x300E, 0x3013, 0x3019, 0x3229, 0x500B, 0x5015, 0x501B,
+ 0x900C, 0x9016, 0xF203, 0xF204};//sortiert!
+ if( bVer67 )
+ aIgnore.Insert( aVer67Ids, 13);
+ else
+ aIgnore.Insert( aVer8Ids, 14);
+ }
+
+ // nachschauen, ob die nicht zu ignor. Attr. gleich sind
+ BOOL bEqual = (bSectionHasATitlePage ==bLastSectionHadATitlePage)
+ && (nCorrIhdt == nLastSectionCorrIhdt)
+ && (nCorrIhdt == (nCorrIhdt & nJustCopyHdFt))
+ && (nNfcPgn == nLastNfcPgn)
+ && pSep->CompareSprms(pOtherMem,
+ nOtherSprmsLen,
+ &aIgnore);
+ // Kopie der vorigen Attr. wieder freigeben
+ delete pOtherMem;
+
+ if( bEqual )
+ {
+ switch( nBreakCode )
+ {
+ case 0:
+ {
+ if( 0 < pPaM->GetPoint()->nContent.GetIndex() )
+ rDoc.AppendTxtNode( *pPaM->GetPoint() );
+ // Abschnittsweschsel: neuer Bereich
+ SwSection aSection( CONTENT_SECTION,
+ rDoc.GetUniqueSectionName() );
+
+ SfxItemSet aSet( rDoc.GetAttrPool(), aFrmFmtSetRange );
+ if( 2 == pWDop->fpc )
+ aSet.Put( SwFmtFtnAtTxtEnd( FTNEND_ATTXTEND ));
+ if( 3 == pWDop->epc )
+ aSet.Put( SwFmtEndAtTxtEnd( FTNEND_ATTXTEND ));
+
+ pNewSection = rDoc.Insert( *pPaM, aSection, &aSet );
+ pBehindSection = new SwNodeIndex( pPaM->GetPoint()->nNode );
+
+ // Anzahl der Spalten einstellen
+ if( pPageDesc )
+ {
+ SwFrmFmt& rFmt = pPageDesc->GetMaster();
+ const SwFmtFrmSize& rSz = rFmt.GetFrmSize();
+ const SvxLRSpaceItem& rLR = rFmt.GetLRSpace();
+ SwTwips nWidth = rSz.GetWidth();
+ USHORT nLeft = rLR.GetTxtLeft();
+ USHORT nRight = rLR.GetRight();
+ SetCols( pNewSection->GetFmt(), pSep, nWidth - nLeft - nRight );
+ }
+ // PaM in Node der Section setzen
+ const SwSectionNode* pSectionNode =
+ pNewSection->GetFmt()->GetSectionNode();
+ ASSERT( pSectionNode, "Kein Inhalt vorbereitet." );
+ pPaM->GetPoint()->nNode =
+ pSectionNode->GetIndex()+1;
+ pPaM->GetPoint()->nContent.Assign(
+ pPaM->GetCntntNode(), 0 );
+ }
+
+ break;
+ case 1: if( bNew )
+ rDoc.Insert(*pPaM,
+ SvxFmtBreakItem( SVX_BREAK_COLUMN_BEFORE ));
+ break;
+ //case 2:
+ //case 3: // alle drei Faelle -> PgDesc-Format-Einfuegung
+ //case 4:
+ default: {
+ /*
+ Wir koennen den aktuellen PgDesk einsetzen,
+ da dies immer der 1st-Page Deskriptor ist,
+ nie der Follow!
+ So geht es, auch wenn der Break auf Seite 7
+ kommt, wieder mit einer ERSTEN Seite weiter.
+ */
+ if( bNew )
+ {
+ if( 0 < pPaM->GetPoint()->nContent.GetIndex() )
+ rDoc.AppendTxtNode( *pPaM->GetPoint() );
+
+ if( pPageDesc )
+ rDoc.Insert(*pPaM, SwFmtPageDesc( pPageDesc ));
+ else
+ // kein voriger PgDesc vorhanden?
+ rDoc.Insert(*pPaM,
+ SvxFmtBreakItem( SVX_BREAK_PAGE_BEFORE ));
+ SetLastPgDeskIdx();
+ }
+ }break;
+ }
+ return;
+ // ======== Das war's Freunde, jetzt nichts wie weg hier!
+ }
+ }
+ if( bNew
+ && ( bSectionWasJustClosed
+ || (pPageDesc != &rDoc._GetPageDesc( 0 )) ) )
+ {
+ // Create and *insert* PageDesc
+ SwPaM* pPageDeskPaM = 0;
+ pPageDesc = CreatePageDesc( 0, &pPageDeskPaM );
+ SwFrmFmt &rFmt = pPageDesc->GetMaster();
+ SetPage1( pPageDesc, rFmt, pSep, nLIdx, FALSE );
+ // if PageDesc has been inserted and has cols
+ // insert a *section* with cols instead
+ if( pPageDeskPaM )
+ {
+ const SwFmtCol& rCol = rFmt.GetCol();
+ if( rCol.GetNumCols() )
+ {
+ InsertSectionWithWithoutCols( *pPaM, &rCol );
+ // remove columns from PageDesc
+ SwFmtCol aCol;
+ rFmt.SetAttr( aCol );
+ }
+ delete pPageDeskPaM;
+ }
+ }
+ }
+ else
+ if( bNew )
+ pPageDesc = &rDoc._GetPageDesc( 0 ); // Standard
+
+ if( !bNew )
+ return;
+
+
+ // Seitennummernformat speichern
+ {
+ static SvxExtNumType __READONLY_DATA aNumTyp[ 5 ] = {
+ SVX_NUM_ARABIC, SVX_NUM_ROMAN_UPPER, SVX_NUM_ROMAN_LOWER,
+ SVX_NUM_CHARS_UPPER_LETTER_N, SVX_NUM_CHARS_LOWER_LETTER_N };
+
+ SwNumType aType; aType.eType = aNumTyp[ nNfcPgn ];
+ pPageDesc->SetNumType( aType );
+ }
+
+ if( !bVer67 )
+ {
+ // Seitennummer neu starten - sprmSFPgnRestart
+ {
+ BYTE nfPgnRestart = ReadBSprm( pSep, 0x3011, 0 );
+ if( nfPgnRestart )
+ {
+ const SfxPoolItem* pItem;
+ const SfxItemSet* pSet;
+ if( ( 0 != (pSet = pPaM->GetCntntNode()->GetpSwAttrSet()) )
+ && ( SFX_ITEM_SET ==
+ pSet->GetItemState(RES_PAGEDESC, FALSE, &pItem) ) )
+ {
+ // read Pagination Start attribute - sprmSPgnStart
+ BYTE nPgnStart = ReadBSprm( pSep, 0x501C, 0 );
+ ((SwFmtPageDesc*)pItem)->SetNumOffset( nPgnStart );
+ }
+ else
+ if( pPageDesc == &rDoc.GetPageDesc( 0 ) )
+ {
+ // read Pagination Start attribute - sprmSPgnStart
+ BYTE nPgnStart = ReadBSprm( pSep, 0x501C, 0 );
+ SwFmtPageDesc aPgDesc( pPageDesc );
+ aPgDesc.SetNumOffset( nPgnStart );
+ rDoc.Insert( *pPaM, aPgDesc );
+ SetLastPgDeskIdx();
+ }
+ }
+ }
+
+ // Chapterlevel und Chapterdelimiter ? (sprmScnsPgn & sprmSiHeadingPgn)
+ BYTE* p = pSep->HasSprm( 0x3001 );
+ if( p && *p )
+ {
+ bPgChpLevel = TRUE;
+ nPgChpLevel = *p - 1;
+ if( MAXLEVEL <= nPgChpLevel )
+ nPgChpLevel = MAXLEVEL - 1;
+
+ if( 0 != (p = pSep->HasSprm( 0x3000 )) )
+ nPgChpDelim = *p;
+ else
+ nPgChpDelim = 0;
+ }
+ else
+ bPgChpLevel = FALSE;
+ }
+
+ // Vorsicht: gibt es ueberhaupt einen vorigen Page Descriptor?
+ if( !pOldPageDesc )
+ nSameHdFt = 0;
+
+ SwFrmFmt &rFmt0 = pPageDesc->GetMaster();
+
+ if( !bSectionHasATitlePage )
+ {
+ // Gegebenenfalls Einstellungen des vorigen PgDesc uebernehmen
+ // und das Einlese-Flag entsprechend korrigieren,
+ // damit nur noch die Eintraege gelesen werden, die NICHT
+ // vom vorigen PgDesc zu uebernehmen sind.
+ //
+ if( 0 < nSameHdFt )
+ {
+ CopyPageDescHdFt( pOldPageDesc, pPageDesc, nSameHdFt );
+ if( bVer67 )
+ nIPara = 0;
+ else
+ nIPara &= ~nSameHdFt;
+ }
+
+ WW8ULSpaceData aULData;
+ GetPageULData( pSep, nLIdx, FALSE, aULData );
+
+ // dann Header / Footer lesen, falls noch noetig
+ //
+ if( nIPara )
+ {
+ SetHdFt( pPageDesc, 0, pSep, nIPara );
+ }
+ // und uebrige Einstellungen updaten
+ //
+
+ SetPage1( pPageDesc, // Orientierung, Hoehe, Breite, Vertikale Formatierung
+ rFmt0,
+ pSep,
+ nLIdx,
+ TRUE );
+
+ SetPageULSpaceItems( rFmt0, aULData );
+ SetPageBorder( 0, pPageDesc, pSep, nLIdx );
+ }
+ else
+ {
+ // Hier beachten:
+ // ==============
+ //
+ // pPageDesc = erste Seite
+ // pPageDesc1 = Folge-Seiten
+ //
+
+
+ // erst folgende PageDesc-Werte einstellen:
+ //
+ // Orientierung, Hoehe, Breite
+ //
+ SetPage1( pPageDesc, // Orientierung, Hoehe, Breite, Vertikale Formatierung
+ rFmt0,
+ pSep,
+ nLIdx,
+ TRUE );
+
+ // dann den PageDesc1 anlegen fuer Folge-Seiten
+ //
+ pPageDesc1 = CreatePageDesc( pPageDesc );
+
+ // Gegebenenfalls Einstellungen des/der vorigen PgDesc uebernehmen
+ //
+ if( 0 < nSameHdFt )
+ {
+ // ggfs. erst den alten 1st-Seite-PgDesc suchen und dessen
+ // Einstellungen uebernehmen
+ //
+ if( nSameHdFt & (WW8_HEADER_FIRST | WW8_FOOTER_FIRST) )
+ {
+
+/*
+ // suchen
+ const SwPageDesc* pOld1stPageDesc = 0;
+
+ USHORT nSize = rDoc.GetPageDescCnt();
+ if( nSize )
+ {
+ for( USHORT n = 0; n < nSize; ++n )
+ {
+ const SwPageDesc& rPageDesc = rDoc.GetPageDesc( n );
+ if( (&rPageDesc != pOldPageDesc)
+ && (rPageDesc.GetFollow() == pOldPageDesc) )
+ {
+ pOld1stPageDesc = &rPageDesc;
+ break;
+ }
+ }
+ }
+ // uebernehmen
+ if( pOld1stPageDesc )
+ {
+ CopyPageDescHdFt( pOld1stPageDesc, pPageDesc,
+ nSameHdFt & (WW8_HEADER_FIRST | WW8_FOOTER_FIRST) );
+ }
+ else
+ {
+*/
+
+ if( pOldPageDesc == pOldPageDesc->GetFollow() )
+ {
+ // hoppla, die vorige Section hatte keine 1st Page?
+ //
+ // also: auslesen der in WW8 fuer die nicht vorhandene
+ // 1st Page gespeicherten Hd/Ft-Einstellungen...
+ //
+ // Beachte: pPageDesc1 MUSS hier mit uebergeben werden,
+ // obwohl wir dessen Werte ja eigentlich hier
+ // gar nicht einlesen wollen!
+ // Das macht aber nichts, denn wir stellen den
+ // "SetHdFt( nIPara )"-Parameter so ein, dass
+ // nur der 1.-Seite-PgDesc eingelesen wird.
+ //
+ short nSaveSectionNo = nActSectionNo;
+ if( bVer67 )
+ --nActSectionNo;
+ else
+ nActSectionNo = aOldSectionNo[ 4 ]
+ ? aOldSectionNo[ 4 ] // Hd 1st
+ : aOldSectionNo[ 5 ]; // Ft 1st
+ SetHdFt( pPageDesc, pPageDesc1, pSep,
+ nSameHdFt & (WW8_HEADER_FIRST | WW8_FOOTER_FIRST) );
+ nActSectionNo = nSaveSectionNo;
+ }
+ else
+ CopyPageDescHdFt( pOldPageDesc, pPageDesc,
+ nSameHdFt & (WW8_HEADER_FIRST | WW8_FOOTER_FIRST) );
+ }
+
+ // ggfs. Werte des vorigen PgDesc fuer Folge-Seiten uebernehmen
+ //
+ if( nSameHdFt & ( WW8_HEADER_EVEN | WW8_HEADER_ODD
+ | WW8_FOOTER_EVEN | WW8_FOOTER_ODD ) )
+ {
+ CopyPageDescHdFt( pOldPageDesc, pPageDesc1,
+ nSameHdFt & ( WW8_HEADER_EVEN | WW8_HEADER_ODD
+ | WW8_FOOTER_EVEN | WW8_FOOTER_ODD ) );
+ }
+ // das Einlese-Flag entsprechend korrigieren,
+ // damit nur noch die Eintraege gelesen werden, die NICHT
+ // von vorigem/n PgDesc(s) zu uebernehmen sind.
+ //
+ if( bVer67 )
+ nIPara = 0;
+ else
+ nIPara &= ~nSameHdFt;
+ }
+
+ SwFrmFmt &rFmt1 = pPageDesc1->GetMaster();
+
+ WW8ULSpaceData aULData0, aULData1;
+ GetPageULData( pSep, nLIdx, TRUE, aULData0 ); // Vertikale Formatierung
+ GetPageULData( pSep, nLIdx, FALSE, aULData1 ); // einzeln, da KF evtl. verschieden
+
+ // dann Header / Footer lesen, falls noch noetig
+ //
+ if( nIPara )
+ {
+ SetHdFt( pPageDesc, pPageDesc1, pSep, nIPara );
+ }
+
+ // und uebrige Einstellungen updaten
+ //
+ SetPageULSpaceItems( rFmt0, aULData0 ); // Vertikale Formatierung
+ SetPageULSpaceItems( rFmt1, aULData1 ); // einzeln, da KF evtl. verschieden
+ SetPageBorder( pPageDesc, pPageDesc1, pSep, nLIdx );
+ }
+
+
+ SetUseOn( pPageDesc, pPageDesc1, pSep, nCorrIhdt );
+
+
+ static BYTE __READONLY_DATA aPaperBinIds[ 17 ] =
+ {5,2,4,0,3,0,0,0,0,0,0,0,0,0,0,0,1};
+ // WW SW
+ // ------------------------------
+ // 0 == default 5
+ // 1 == Upper paper tray 2
+ // 2 == Lower paper tray 4
+ // 4 == Manual paper feed 3
+ // 15 == Automatically select 0
+ // 16 == First tray available 1
+
+ BYTE* pSprmSDmBinFirst = pSep->HasSprm( bVer67 ? 140 : 0x5007 );
+ BYTE* pSprmSDmBinOther = pSep->HasSprm( bVer67 ? 141 : 0x5008 );
+ if( pSprmSDmBinFirst && (17 > *pSprmSDmBinFirst) )
+ {
+ SvxPaperBinItem aItem( ITEMID_PAPERBIN, aPaperBinIds[ *pSprmSDmBinFirst ] );
+ pPageDesc->GetMaster().SetAttr( aItem );
+ }
+ if( pSprmSDmBinOther && (17 > *pSprmSDmBinOther) )
+ {
+ SvxPaperBinItem aItem( ITEMID_PAPERBIN, aPaperBinIds[ *pSprmSDmBinOther ] );
+ SwFrmFmt &rFmtOther = pPageDesc1 ? pPageDesc1->GetMaster() : pPageDesc->GetLeft();
+ rFmtOther.SetAttr( aItem );
+ }
+
+ // Kopf / Fuss - Index Updaten
+ if( pHdFt )
+ pHdFt->UpdateIndex( nCorrIhdt ); // Damit der Index auch spaeter noch stimmt
+
+ // Die Attribute OLST
+ // werden weiterhin ueber die WWSprmTab abgehandelt
+}
+
+
+void SwWW8ImplReader::CopyPageDescHdFt( const SwPageDesc* pOrgPageDesc,
+ SwPageDesc* pNewPageDesc, BYTE nCode )
+{
+ // copy first header content section
+ if( nCode & WW8_HEADER_FIRST )
+ {
+ rDoc.CopyHeader(pOrgPageDesc->GetMaster(),
+ pNewPageDesc->GetMaster());
+ }
+ // copy first footer content section
+ if( nCode & WW8_FOOTER_FIRST )
+ {
+ rDoc.CopyFooter(pOrgPageDesc->GetMaster(),
+ pNewPageDesc->GetMaster());
+ }
+ if( nCode & ( WW8_HEADER_ODD | WW8_FOOTER_ODD
+ | WW8_HEADER_EVEN | WW8_FOOTER_EVEN ) )
+ {
+ // determine PageDesc of follow pages
+ const SwPageDesc* pOrgFollowPageDesc = pOrgPageDesc->GetFollow();
+ // copy odd header content section
+ if( nCode & WW8_HEADER_ODD )
+ {
+ rDoc.CopyHeader(pOrgFollowPageDesc->GetMaster(),
+ pNewPageDesc->GetMaster() );
+ }
+ // copy odd footer content section
+ if( nCode & WW8_FOOTER_ODD )
+ {
+ rDoc.CopyFooter(pOrgFollowPageDesc->GetMaster(),
+ pNewPageDesc->GetMaster());
+ }
+ // copy even header content section
+ if( nCode & WW8_HEADER_EVEN )
+ {
+ rDoc.CopyHeader(pOrgFollowPageDesc->GetLeft(),
+ pNewPageDesc->GetLeft());
+ }
+ // copy even footer content section
+ if( nCode & WW8_FOOTER_EVEN )
+ {
+ rDoc.CopyFooter(pOrgFollowPageDesc->GetLeft(),
+ pNewPageDesc->GetLeft());
+ }
+ }
+}
+
+
+//------------------------------------------------------
+// Hilfsroutinen fuer Grafiken und Apos und Tabellen
+//------------------------------------------------------
+
+static BOOL _SetWW8_BRC( BOOL bVer67, WW8_BRC& rVar, BYTE* pS )
+{
+ if( pS )
+ if( bVer67 )
+ (WW8_BRCVer6&)rVar = *((WW8_BRCVer6*)pS);
+ else
+ rVar = *((WW8_BRC*)pS);
+ else
+ {
+ *(USHORT*)rVar.aBits1 = 0;
+ *(USHORT*)rVar.aBits2 = 0;
+ }
+
+ return 0 != pS;
+}
+
+BOOL lcl_ReadBorders( BOOL bVer67, WW8_BRC* brc,
+ WW8PLCFx_Cp_FKP* pPap,
+ const WW8RStyle* pSty,
+ const WW8PLCFx_SEPX* pSep )
+{
+// Ausgegend von diesen defines:
+// #define WW8_TOP 0
+// #define WW8_LEFT 1
+// #define WW8_BOT 2
+// #define WW8_RIGHT 3
+// #define WW8_BETW 4
+
+ BOOL bBorder = FALSE;
+ if( pSep )
+ {
+ if( !bVer67 )
+ {
+ BYTE* pSprm[4];
+
+ // sprmSBrcTop, sprmSBrcLeft, sprmSBrcBottom, sprmSBrcRight
+ if( pSep->Find4Sprms( 0x702B, 0x702C, 0x702D, 0x702E,
+ pSprm[0], pSprm[1], pSprm[2], pSprm[3] ) )
+ {
+ for( int i = 0; i < 4; ++i )
+ bBorder |= _SetWW8_BRC( bVer67, brc[ i ], pSprm[ i ] );
+ }
+ }
+ }
+ else
+ {
+
+ static USHORT __READONLY_DATA aVer67Ids[5] =
+ { 38, 39, 40, 41, 42 };
+
+ static USHORT __READONLY_DATA aVer8Ids[5] =
+ { 0x6424, 0x6425, 0x6426, 0x6427, 0x6428 };
+
+ const USHORT* pIds = bVer67 ? aVer67Ids : aVer8Ids;
+
+ if( pPap )
+ {
+ for( int i = 0; i < 5; ++i, ++pIds )
+ bBorder |= _SetWW8_BRC( bVer67, brc[ i ], pPap->HasSprm( *pIds ));
+ }
+ else if( pSty )
+ {
+ for( int i = 0; i < 5; ++i, ++pIds )
+ bBorder |= _SetWW8_BRC( bVer67, brc[ i ], pSty->HasParaSprm( *pIds ));
+ }
+ else
+ ASSERT( pSty || pPap, "WW8PLCFx_Cp_FKP and WW8RStyle "
+ "and WW8PLCFx_SEPX is 0" );
+ }
+
+ return bBorder;
+}
+
+
+
+static SvxBorderLine& Set1Border( BOOL bVer67, SvxBorderLine& rLine,
+ const WW8_BRC& rBor )
+{
+ // Deklarationen gemaess BOXITEM.HXX
+ WW8_DECL_LINETAB_ARRAY
+
+ // Match-Tabelle: verwandelt Ver67 Border Codes in Ver8-Typen
+ static USHORT __READONLY_DATA nTabBorderCode67ToCode8[] = // Aussenlinie
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 2, 2, 3, 0, 0, 0, 1, 2, 3, 4, 4, 1, 1,
+ WW8_DECL_LINETAB_OFS_DOUBLE +0,
+ WW8_DECL_LINETAB_OFS_DOUBLE +1,
+ WW8_DECL_LINETAB_OFS_DOUBLE +1,
+ WW8_DECL_LINETAB_OFS_DOUBLE +2,
+ WW8_DECL_LINETAB_OFS_DOUBLE +2,
+ WW8_DECL_LINETAB_OFS_DOUBLE +3,
+ WW8_DECL_LINETAB_OFS_DOUBLE +0,
+ WW8_DECL_LINETAB_OFS_DOUBLE +0
+ };
+
+
+ // Vor Aufruf muss sichergestellt werden, dass aBor & 0x1f != 0 ist,
+ // d.h. ueberhaupt eine Linie vorhanden ist
+
+// short nIdx = ( aBrc1 & 0x7 ) // aBor.dxpLineWidth ( Liniendicke )
+// + 8 * ( aBrc1 >> 3 & 0x3 ); // brcType, 0 = none / dotted / dashed
+ // 1 = single width, 2 = double width
+ // 3 = doppelte Linie ( = 3-fache Dicke )
+
+ BYTE nCol;
+ short nIdx;
+
+ if( bVer67 )
+ {
+ UINT16 aBrc1 = SVBT16ToShort( rBor.aBits1 );
+ nIdx = nTabBorderCode67ToCode8[ aBrc1 & 0x1f ];
+ nCol = ( (aBrc1 >> 6) & 0x1f ); // aBor.ico
+ }
+ else
+ {
+ // Sicherheitsmassnahme (Kodes ueber 25 sind undokumentiert)
+ nIdx = rBor.aBits1[1];
+ if( 25 < nIdx )
+ nIdx = 1;
+
+ // Angabe in 8tel Punkten, also mal 2.5, da 1 Punkt = 20 Twips
+ short nMSLineWidth = rBor.aBits1[ 0 ] * 20 / 8;
+ short nMSTotalWidth = nMSLineWidth;
+
+ // erst die Gesamt-Randbreite errechnen, zur weiteren Entscheidungsgrundlage
+ switch( nIdx )
+ {
+ /*
+ // Einzel-Linien sind Wurst
+ case 1:
+ case 2:
+ case 5:
+ case 6:
+ case 22:
+ case 7:
+ case 8:
+ case 9:
+ // Schraffurbalken dito
+ case 23:
+ */
+ // Mehrfach- und Spezial-Linien, die wir wie besonders behandeln
+ // (in der Reihenfolge, in der sie im Winword-97-Dialog erscheinen)
+ case 3: nMSTotalWidth = 3*nMSLineWidth;break;
+ case 10: nMSTotalWidth = 5*nMSLineWidth;break;
+ case 18:
+ case 17: nMSTotalWidth = 7*nMSLineWidth;break;
+ case 16:
+ case 19: nMSTotalWidth =12*nMSLineWidth;break;
+ case 20: nMSTotalWidth = 4*nMSLineWidth;break;
+ case 12:
+ case 11:
+ case 21: nMSTotalWidth = 6*nMSLineWidth;break;
+ case 13:
+ case 15:
+ case 14:
+ case 24:
+ case 25: nMSTotalWidth = 8*nMSLineWidth;break;
+ }
+
+ // dann auf unsere Randtypen mappen
+ switch( nIdx )
+ {
+ // zuerst die Einzel-Linien
+ case 1:
+ case 2:
+ case 5:
+ case 6:
+ case 22:
+ case 7:
+ case 8:
+ case 9:
+ // UND die Sonderfaelle, die wir durch eine Einzel-Linie
+ case 13: // bzw. notfalls durch eine Doppel-Linie darstellen
+ case 16:
+ case 19:
+ case 24:
+ case 25: if( nMSTotalWidth < 11) nIdx = 0;// 1 Twip bei uns
+ else if( nMSTotalWidth < 46) nIdx = 1;// 20 Twips
+ else if( nMSTotalWidth < 66) nIdx = 2;// 50
+ else if( nMSTotalWidth < 91) nIdx = 3;// 80
+ else if( nMSTotalWidth <126) nIdx = 4;// 100
+ // Pfusch: fuer die ganz dicken Linien muessen
+ // wir doppelte Linien malen, weil unsere
+ // Einfach-Linie nicht dicker als 5 Punkt wird
+ else if( nMSTotalWidth <166) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+2;// 150
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+5;// 180
+ break;
+ // dann den Schraffurbalken, den wir durch eine doppelte Linie darstellen
+ case 23: nIdx = 6;
+ break;
+ // dann die Doppel-Linien, fuer die wir feine Entsprechungen haben :-)))
+ case 3:
+ case 10: if( nMSTotalWidth < 46) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 0;// 22 Twips bei uns
+ else if( nMSTotalWidth < 106) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 1;// 60
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 2;// 150
+ break;
+ case 12: if( nMSTotalWidth < 87) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 8;// 71 Twips bei uns
+ else if( nMSTotalWidth < 117) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 9;// 101
+ else if( nMSTotalWidth < 166) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+10;// 131
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 5;// 180
+ break;
+ case 11: if( nMSTotalWidth < 137) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 4;// 90 Twips bei uns
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 6;// 180
+ break;
+ case 15: if( nMSTotalWidth < 46) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 0;// 22 Twips bei uns
+ else if( nMSTotalWidth < 106) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 1;// 60
+ else if( nMSTotalWidth < 166) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 2;// 150
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 5;// 180
+ break;
+ case 14: if( nMSTotalWidth < 46) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 0;// 22 Twips bei uns
+ else if( nMSTotalWidth < 76) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 1;// 60
+ else if( nMSTotalWidth < 121) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 4;// 90
+ else if( nMSTotalWidth < 166) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 2;// 150
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 6;// 180
+ break;
+ case 18: if( nMSTotalWidth < 46) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 0;// 22 Twips bei uns
+ else if( nMSTotalWidth < 62) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 7;// 52
+ else if( nMSTotalWidth < 87) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 8;// 71
+ else if( nMSTotalWidth < 117) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 9;// 101
+ else if( nMSTotalWidth < 156) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+10;// 131
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 5;// 180
+ break;
+ case 17: if( nMSTotalWidth < 46) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 0;// 22 Twips bei uns
+ else if( nMSTotalWidth < 72) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 7;// 52
+ else if( nMSTotalWidth < 137) nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 4;// 90
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 6;// 180
+ break;
+ case 20: if( nMSTotalWidth < 46) nIdx = 1;// 20 Twips bei uns
+ else nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 1;// 60
+ break;
+ case 21: nIdx = WW8_DECL_LINETAB_OFS_DOUBLE+ 1;// 60 Twips bei uns
+ break;
+
+ default: nIdx = 0;
+ }
+
+ nCol = rBor.aBits2[0]; // aBor.ico
+ }
+
+ const WW8_BordersSO& rBorders = nLineTabVer8[ nIdx ];
+ rLine.SetOutWidth( rBorders.Out );
+ rLine.SetInWidth ( rBorders.In );
+ rLine.SetDistance( rBorders.Dist );
+ rLine.SetColor( eSwWW8ColA[ nCol ] );
+
+ /*
+ Achtung: noch zu tun!!!
+ ========
+ eigentlich sollten wir uns jetzt die kumulierte Randbreite merken
+ ( als da waere: rBorders.Out + rBorders.In + rBorders.Dist )
+ und sie nach draussen melden, damit die aufrufenden Methoden ggfs.
+ die Objekt-Breiten entsprechend vergroessern!
+
+ Warum?
+ ======
+ Weil Winword die Raender a u s s e n drauf malt, wir hingegen sie
+ innen rein zeichnen, was bei uns zu einem kleineren Innenraum fuehrt!
+ */
+
+ return rLine;
+}
+
+
+BOOL lcl_IsBorder( BOOL bVer67, const WW8_BRC* pbrc, BOOL bChkBtwn=FALSE )
+{
+ if( bVer67 )
+ return ( pbrc[WW8_TOP ].aBits1[0] & 0x18 ) || // brcType != 0
+ ( pbrc[WW8_LEFT ].aBits1[0] & 0x18 ) ||
+ ( pbrc[WW8_BOT ].aBits1[0] & 0x18 ) ||
+ ( pbrc[WW8_RIGHT].aBits1[0] & 0x18 ) ||
+ ( bChkBtwn && ( pbrc[WW8_BETW ].aBits1[0] & 0x18 ));
+ // Abfrage auf 0x1f statt 0x18 ist noetig, da zumindest einige
+ // WW-Versionen ( 6.0 US ) bei dotted brcType auf 0 setzen
+ else
+ return pbrc[WW8_TOP ].aBits1[1] || // brcType != 0
+ pbrc[WW8_LEFT ].aBits1[1] ||
+ pbrc[WW8_BOT ].aBits1[1] ||
+ pbrc[WW8_RIGHT].aBits1[1] ||
+ (bChkBtwn && pbrc[WW8_BETW ].aBits1[1]);
+}
+
+BOOL SwWW8ImplReader::IsBorder( const WW8_BRC* pbrc, BOOL bChkBtwn )
+{
+ return lcl_IsBorder( bVer67, pbrc, bChkBtwn );
+}
+
+BOOL SwWW8ImplReader::SetBorder( SvxBoxItem& rBox, const WW8_BRC* pbrc,
+ BOOL bChkBtwn )
+{
+ SvxBorderLine aLine;
+ BOOL bChange = FALSE;
+ static USHORT __READONLY_DATA aIdArr[ 10 ] = {
+ WW8_TOP, BOX_LINE_TOP,
+ WW8_LEFT, BOX_LINE_LEFT,
+ WW8_RIGHT, BOX_LINE_RIGHT,
+ WW8_BOT, BOX_LINE_BOTTOM,
+ WW8_BETW, BOX_LINE_BOTTOM };
+
+
+ for( int i = 0, nEnd = 8; i < nEnd; i += 2 )
+ {
+ // ungueltige Borders ausfiltern
+ const WW8_BRC& rB = pbrc[ aIdArr[ i ] ];
+ if( !(( rB.aBits1[0] == 0xff && rB.aBits1[1] == 0xff ) ||
+ 0 == ( bVer67
+ ? ( rB.aBits1[0] & 0x001f ) // Version 6/7
+ : rB.aBits1[1] ) )) // Version 8
+ {
+ rBox.SetLine( &Set1Border( bVer67, aLine, rB ), aIdArr[ i+1 ] );
+ bChange = TRUE;
+ }
+ else if( 6 == i && bChkBtwn ) // wenn Botton nichts war,
+ nEnd += 2; // dann ggfs. auch Between befragen
+ }
+ return bChange;
+}
+
+
+BOOL SwWW8ImplReader::SetShadow( SvxShadowItem& rShadow,
+ const SvxBoxItem& rBox, const WW8_BRC pbrc[4] )
+{
+ BOOL bRet = ( bVer67 ? (pbrc[WW8_RIGHT].aBits1[ 1 ] & 0x20 )
+ : (pbrc[WW8_RIGHT].aBits2[ 1 ] & 0x20 ) ) &&
+ rBox.GetRight();
+ if( bRet )
+ {
+ rShadow.SetColor( Color( COL_BLACK ));
+
+// aS.SetWidth( 28 );
+// JP 19.11.98: abhaengig von der Breite der rechten Kante der Box
+ const SvxBorderLine& rLine = *rBox.GetRight();
+ rShadow.SetWidth( ( rLine.GetOutWidth() + rLine.GetInWidth() +
+ rLine.GetDistance() ) );
+
+ rShadow.SetLocation( SVX_SHADOW_BOTTOMRIGHT );
+ bRet = TRUE;
+ }
+ return bRet;
+}
+
+void SwWW8ImplReader::GetBorderDistance( WW8_BRC* pbrc, Rectangle& rInnerDist )
+{
+ //USHORT nInnerMargn = 0;
+
+ // 'dptSpace' is stored in 3 bits of 'Border Code (BRC)'
+ if( bVer67 )
+ rInnerDist = Rectangle(((pbrc[ 0 ].aBits1[1] >> 3) & 0x1f) * 20,
+ ((pbrc[ 1 ].aBits1[1] >> 3) & 0x1f) * 20,
+ ((pbrc[ 2 ].aBits1[1] >> 3) & 0x1f) * 20,
+ ((pbrc[ 3 ].aBits1[1] >> 3) & 0x1f) * 20 );
+ else
+ rInnerDist = Rectangle( (pbrc[ 0 ].aBits2[1] & 0x1f) * 20,
+ (pbrc[ 1 ].aBits2[1] & 0x1f) * 20,
+ (pbrc[ 2 ].aBits2[1] & 0x1f) * 20,
+ (pbrc[ 3 ].aBits2[1] & 0x1f) * 20 );
+
+ /*
+ for( int n = 0; n < 4; ++n )
+ nInnerMargn += ( pbrc[ n ].aBits2[1] & 0x1f); // dxpSpace
+ //return nInnerMargn * 5; // von Pt nach Twips / 4 Kanten
+ */
+}
+
+
+void SwWW8ImplReader::SetFlyBordersShadow( SfxItemSet& rFlySet,
+ const WW8_BRC pbrc[4],
+ USHORT nInnerMgn )
+{
+ if( IsBorder( pbrc ) )
+ {
+ SvxBoxItem aBox;
+ SetBorder( aBox, pbrc );
+
+ if( nInnerMgn )
+ aBox.SetDistance( nInnerMgn ); // Rand innen
+ rFlySet.Put( aBox );
+
+ // fShadow
+ SvxShadowItem aShadow;
+ if( SetShadow( aShadow, aBox, pbrc ))
+ rFlySet.Put( aShadow );
+ }
+}
+
+
+
+//-----------------------------------------
+// APOs
+//-----------------------------------------
+ // fuer Berechnung der minimalen FrameSize
+#define MAX_BORDER_SIZE 210 // so breit ist max. der Border
+#define MAX_EMPTY_BORDER 10 // fuer +-1-Fehler, mindestens 1
+
+
+static short GetLineWidth( BOOL bVer67, const WW8_BRC& rBor )
+{
+/*
+ register UINT16 nBits = SVBT16ToShort( rBor.aBits1 );
+ register short n = nBits & 0x7; // dxpLineWidth
+ if( n >= 6 )
+ n = 1;
+ return n * ( ( nBits >> 3 & 0x3 ) + 1 ) * 15; // aBor.brcType
+ // brcType Linien mit je n * 3/4 point Dicke
+*/
+
+/*
+JP 19.11.98: wenn dann muss es so richtig sein, die Version MUSS beachtet werden
+ UINT16 nIdx = bVer67 ? ((rBor.aBits1[ 0 ] & 0x18) >> 3) + 1
+ : rBor.aBits1[ 1 ];
+ UINT16 nWidth = bVer67 ? ((rBor.aBits1[ 0 ] & 0x7) * 15 ) // 3/4pt
+ : (rBor.aBits1[ 0 ] * 5 / 2); // 1/8pt
+ return nIdx * nWidth;
+*/
+
+//JP 19.11.98: aber warum werden nicht die SW-Borders zu Berechnung
+// herangezogen??
+ SvxBorderLine aLine;
+ ::Set1Border( bVer67, aLine, rBor );
+ return aLine.GetOutWidth() + aLine.GetInWidth() + aLine.GetDistance();
+}
+
+static void FlySecur1( short& rSize, const short nMgn1, const short nMgn2,
+ const BOOL bBorder )
+{
+ register short nMin = MINFLY
+ + ( bBorder ) ? MAX_BORDER_SIZE : MAX_EMPTY_BORDER;
+
+ if ( rSize < nMin )
+ rSize = nMin;
+}
+
+INLINE_AUSSER_HP BOOL SetValSprm( short* pVar, WW8PLCFx_Cp_FKP* pPap,
+ USHORT nId )
+{
+ register BYTE* pS = pPap->HasSprm( nId );
+ if( pS )
+ *pVar = (INT16)SVBT16ToShort( pS );
+ return ( pS != 0 );
+}
+
+INLINE_AUSSER_HP BOOL SetValSprm( short* pVar, const WW8RStyle* pStyle,
+ USHORT nId )
+{
+ register BYTE* pS = pStyle->HasParaSprm( nId );
+ if( pS )
+ *pVar = (INT16)SVBT16ToShort( pS );
+ return ( pS != 0 );
+}
+
+WW8FlyPara::WW8FlyPara( BOOL bIsVer67, const WW8FlyPara* pSrc /* = 0 */ )
+{
+ if ( pSrc )
+ memcpy( this, pSrc, sizeof( WW8FlyPara ) ); // Copy-Ctor
+ else
+ {
+ memset( this, 0, sizeof( WW8FlyPara ) ); // Default-Ctor
+ nSp37 = 2; // Default: Umfluss
+ }
+ bVer67 = bIsVer67;
+}
+
+
+// WW8FlyPara::operator == vergleicht alles, was in der Definition vor
+// den Borders steht!
+// dieses wird u.a. fuer TestSameApo benoetigt.
+int WW8FlyPara::operator == ( const WW8FlyPara& rSrc ) const
+{
+ ASSERT( ( (BYTE*)rSrc.brc - (BYTE*)&rSrc < sizeof( WW8FlyPara ) ),
+ "WW8FlyPara::operator == geht schief" );
+ return !memcmp( this, &rSrc, (BYTE*)rSrc.brc - (BYTE*)&rSrc );
+ // memcmp ist moeglich, da die gesamte Struktur beim Initialisieren
+ // incl. Luecken mit 0 gefuellt wird und sich damit durch die
+ // Luecken keine falschen Unterschiede ergeben koennen.
+ // Ausserdem sind alle Elemente aligned, so dass keine Luecken
+ // existieren
+}
+
+
+// Read fuer normalen Text
+
+BOOL WW8FlyPara::Read( BYTE* pSprm29, WW8PLCFx_Cp_FKP* pPap )
+{
+// WW8PLCFx_Cp_FKP* pPap = pPlcxMan->GetPapPLCF();
+
+ if( pSprm29 )
+ nSp29 = *pSprm29; // PPC ( Bindung )
+
+ BYTE* pS = 0;
+
+ if( bVer67 )
+ {
+ SetValSprm( &nSp26, pPap, 26 ); // X-Position //sprmPDxaAbs
+ SetValSprm( &nSp27, pPap, 27 ); // Y-Position //sprmPDyaAbs
+ SetValSprm( (short*)&nSp45, pPap, 45 ); // Hoehe //sprmPWHeightAbs
+ SetValSprm( (short*)&nSp28, pPap, 28 ); // Breite //sprmPDxaWidth
+ SetValSprm( &nSp49, pPap, 49 ); // L/R-Raender //sprmPDxaFromText
+ SetValSprm( &nSp48, pPap, 48 ); // U/L-Raender //sprmPDyaFromText
+
+ pS = pPap->HasSprm( 37 ); // Umfluss //sprmPWr
+ if( pS )
+ nSp37 = *pS;
+
+ pS = pPap->HasSprm( 46 ); // DropCap //sprmPDcs
+ }
+ else
+ {
+ SetValSprm( &nSp26, pPap, 0x8418 ); // X-Position
+ SetValSprm( &nSp27, pPap, 0x8419 ); // Y-Position
+ SetValSprm( (short*)&nSp45, pPap, 0x442B ); // Hoehe
+ SetValSprm( (short*)&nSp28, pPap, 0x841A ); // Breite
+ SetValSprm( &nSp49, pPap, 0x842F ); // L/R-Raender
+ SetValSprm( &nSp48, pPap, 0x842E ); // U/L-Raender
+
+ pS = pPap->HasSprm( 0x2423 ); // Umfluss
+ if( pS )
+ nSp37 = *pS;
+
+ pS = pPap->HasSprm( 0x442C ); // DropCap
+ }
+
+ bDropCap = pS != 0;
+
+ if( !nSp29 && !nSp27 && !nSp49 && !nSp37 ) // alles 0 heisst
+ return FALSE; // Apo ist nicht vorhanden
+
+ if( ::lcl_ReadBorders( bVer67, brc, pPap )) // Umrandung
+ {
+ bBorderLines = ::lcl_IsBorder( bVer67, brc );
+ bBorder = TRUE;
+ }
+ else
+ bBorderLines = bBorder = FALSE;
+ return TRUE;
+}
+
+BOOL WW8FlyPara::ReadFull( BYTE* pSprm29, SwWW8ImplReader* pIo )
+{
+ WW8PLCFMan* pPlcxMan = pIo->pPlcxMan;
+ WW8PLCFx_Cp_FKP* pPap = pPlcxMan->GetPapPLCF();
+
+ BOOL bOk = Read( pSprm29, pPap ); // Lies Apo-Parameter
+
+ do{ // Block zum rausspringen
+ if( !bOk ) // schiefgegangen
+ break;
+ if( nSp45 != 0 /* || nSp28 != 0 */ )
+ break; // bGrafApo nur bei Hoehe automatisch
+ if( pIo->pWwFib->fComplex )
+ break; // (*pPap)++ geht bei FastSave schief
+ // -> bei FastSave kein Test auf Grafik-APO
+ SvStream* pIoStrm = pIo->pStrm;
+ ULONG nPos = pIoStrm->Tell();
+ WW8PLCFxSave1 aSave;
+ pPlcxMan->GetPap()->Save( aSave );
+ bGrafApo = FALSE;
+
+ do{ // Block zum rausspringen
+
+ BYTE nTxt[2];
+
+ pIoStrm->Read( nTxt, 2 ); // lies Text
+ if( nTxt[0] != 0x01 || nTxt[1] != 0x0d )// nur Grafik + CR ?
+ break; // Nein
+
+ (*pPap)++; // Naechste Zeile
+
+ // In APO ?
+ //sprmPPc
+ BYTE* pS = pPap->HasSprm( bVer67 ? 29 : 0x261B );
+
+ // Nein -> Grafik-Apo
+ if( !pS ){
+ bGrafApo = TRUE;
+ break; // Ende des APO
+ }
+ USHORT nColl = pPap->GetIstd();
+ if( nColl >= pIo->nColls || !pIo->pCollA[nColl].pFmt
+ || !pIo->pCollA[nColl].bColl )
+ nColl = 0; // Unguelige Style-Id
+
+ BOOL bNowStyleApo = pIo->pCollA[nColl].pWWFly != 0; // Apo in StyleDef
+ // BOOL bNowApo = bNowStyleApo || ( pS != 0 ); // hier Apo
+ WW8FlyPara aF( bVer67, bNowStyleApo ? pIo->pCollA[nColl].pWWFly : 0 );
+ // Neuer FlaPara zum Vergleich
+ aF.Read( pS, pPap ); // WWPara fuer neuen Para
+ if( !( aF == *this ) ) // selber APO ? ( oder neuer ? )
+ bGrafApo = TRUE; // nein -> 1-zeiliger APO
+ // -> Grafik-APO
+ }
+ while( 0 ); // Block zum rausspringen
+
+ pPlcxMan->GetPap()->Restore( aSave );
+ pIoStrm->Seek( nPos );
+ }while( 0 ); // Block zum rausspringen
+ return bOk;
+}
+
+
+// Read fuer Apo-Defs in Styledefs
+BOOL WW8FlyPara::Read( BYTE* pSprm29, WW8RStyle* pStyle )
+{
+ if( pSprm29 )
+ nSp29 = *pSprm29; // PPC ( Bindung )
+
+ BYTE* pS = 0;
+ if( bVer67 )
+ {
+ SetValSprm( &nSp26, pStyle, 26 ); // X-Position
+ SetValSprm( &nSp27, pStyle, 27 ); // Y-Position
+ SetValSprm( (short*)&nSp45, pStyle, 45 ); // Hoehe
+ SetValSprm( (short*)&nSp28, pStyle, 28 ); // Breite
+ SetValSprm( &nSp49, pStyle, 49 ); // L/R-Raender
+ SetValSprm( &nSp48, pStyle, 48 ); // U/L-Raender
+
+ pS = pStyle->HasParaSprm( 37 ); // Umfluss
+ if( pS )
+ nSp37 = *pS;
+
+ pS = pStyle->HasParaSprm( 46 ); // DropCap
+ }
+ else
+ {
+ SetValSprm( &nSp26, pStyle, 0x8418 ); // X-Position
+ SetValSprm( &nSp27, pStyle, 0x8419 ); // Y-Position
+ SetValSprm( (short*)&nSp45, pStyle, 0x442B ); // Hoehe
+ SetValSprm( (short*)&nSp28, pStyle, 0x841A ); // Breite
+ SetValSprm( &nSp49, pStyle, 0x842F ); // L/R-Raender
+ SetValSprm( &nSp48, pStyle, 0x842E ); // U/L-Raender
+
+ pS = pStyle->HasParaSprm( 0x2423 ); // Umfluss
+ if( pS )
+ nSp37 = *pS;
+
+ pS = pStyle->HasParaSprm( 0x442C ); // DropCap
+ }
+
+ bDropCap = pS != 0;
+
+ if( !nSp29 && !nSp27 && !nSp49 && !nSp37 ) // alles 0 heisst
+ return FALSE; // Apo ist nicht vorhanden
+
+ if( ::lcl_ReadBorders( bVer67, brc, 0, pStyle ) ) // Umrandung
+ {
+ bBorderLines = ::lcl_IsBorder( bVer67, brc );
+ bBorder = TRUE;
+ }
+ else
+ bBorderLines = bBorder = FALSE;
+ return TRUE;
+}
+
+
+
+
+WW8SwFlyPara::WW8SwFlyPara( SwPaM& rPaM,
+ SwWW8ImplReader& rIo,
+ WW8FlyPara& rWW,
+ short nPgTop,
+ short nPgLeft,
+ short nPgWidth,
+ INT32 nIniFlyDx, INT32 nIniFlyDy )
+{
+ memset( this, 0, sizeof( WW8SwFlyPara ) ); // Initialisieren
+ nNewNettoWidth = MINFLY; // Minimum
+
+ eSurround = ( rWW.nSp37 > 1 ) ? SURROUND_PARALLEL : SURROUND_NONE;
+
+ nHeight = rWW.nSp45;
+ if( nHeight & 0x8000 )
+ {
+ nHeight &= 0x7fff;
+ eHeightFix = ATT_MIN_SIZE;
+ }
+ else
+ eHeightFix = ATT_FIX_SIZE;
+
+ if( nHeight <= MINFLY )
+ { // keine Angabe oder Stuss
+ eHeightFix = ATT_MIN_SIZE;
+ nHeight = MINFLY;
+ }
+
+ nWidth = nNettoWidth = rWW.nSp28;
+ if( nWidth <= 10 ) // Auto-Breite
+ {
+ bAutoWidth = TRUE;
+ nWidth = nNettoWidth =
+ rWW.bDropCap ? MINFLY : (nPgWidth ? nPgWidth : 2268); // 4 cm
+ }
+ if( nWidth <= MINFLY )
+ nWidth = nNettoWidth = MINFLY; // Minimale Breite
+
+ eVAlign = VERT_NONE; // Defaults
+ eHAlign = HORI_NONE;
+ nYPos = 0;
+ nXPos = 0;
+
+ nRiMgn = nLeMgn = rWW.nSp49;
+ nLoMgn = nUpMgn = rWW.nSp48;
+
+ // Wenn der Fly links, rechts, oben oder unten aligned ist,
+ // wird der aeussere Textabstand ignoriert, da sonst
+ // der Fly an falscher Position landen wuerde
+ // JP 18.11.98: Problematisch wird es nur bei Innen/Aussen
+
+ switch( rWW.nSp27 ) // besondere Y-Positionen ?
+ {
+ case -4: eVAlign = VERT_TOP; nUpMgn = 0; break; // oben
+ case -8: eVAlign = VERT_CENTER; break; // zentriert
+ case -12: eVAlign = VERT_BOTTOM; nLoMgn = 0; break; // unten
+ default: nYPos = rWW.nSp27 + (short)nIniFlyDy; break; // Korrekturen per Ini-Datei
+ }
+
+ switch( rWW.nSp26 ) // besondere X-Positionen ?
+ {
+ case 0: eHAlign = HORI_LEFT; nLeMgn = 0; break; // links
+ case -4: eHAlign = HORI_CENTER; break; // zentriert
+ case -8: eHAlign = HORI_RIGHT; nRiMgn = 0; break; // rechts
+ case -12: eHAlign = HORI_LEFT; bToggelPos = TRUE; break; // innen
+ case -16: eHAlign = HORI_RIGHT; bToggelPos = TRUE;break; // aussen
+ default: nXPos = rWW.nSp26 + (short)nIniFlyDx; break; // Korrekturen per Ini-Datei
+ }
+
+ // Bindung
+ BYTE nYBind = (( rWW.nSp29 & 0x30 ) >> 4);
+ switch ( nYBind )
+ { // Y - Bindung bestimmt Sw-Bindung
+ case 0: eAnchor = FLY_PAGE; // Vert Margin
+ eVRel = REL_PG_PRTAREA;
+ break;
+ case 1: eAnchor = FLY_PAGE; // Vert Page
+ eVRel = REL_PG_FRAME;
+ break; // 2=Vert. Paragraph, 3=Use Default
+ default:eAnchor = FLY_AT_CNTNT;
+ eVRel = PRTAREA;
+ if( nYPos < 0 )
+ nYPos = 0; // koennen wir nicht
+ break;
+ }
+
+ if( (rIo.bIsHeader || rIo.bIsFooter) && (FLY_AT_CNTNT != eAnchor) )
+ {
+ eAnchor = FLY_AT_CNTNT;
+ if( rIo.bIsHeader )
+ {
+ nYPos -= nPgTop;
+ // nXPos will be decreased at the very end of this C'tor
+ }
+ else
+ {
+ nYPos = 0;
+ }
+ rIo.pNode_FLY_AT_CNTNT = &rPaM.GetPoint()->nNode.GetNode();
+ }
+
+ BYTE nXBind = ( rWW.nSp29 & 0xc0 ) >> 6;
+ switch ( nXBind ) // X - Bindung -> Koordinatentransformation
+ {
+ case 0: // Hor. Spalte
+ case 1: // Hor. Absatz
+ eHRel = (FLY_PAGE == eAnchor) ? REL_PG_PRTAREA : PRTAREA;
+ break;
+/* case 2:*/ // Hor. Seite
+/* case 3:*/ // Use Default
+ default:{
+ eHRel = (FLY_PAGE == eAnchor) ? REL_PG_FRAME : FRAME;
+
+ // important: allways set REL_PG_FRAME in sections with columns
+ if( eHRel != REL_PG_FRAME )
+ {
+ const SwSectionNode* pSectNd
+ = rPaM.GetPoint()->nNode.GetNode().FindSectionNode();
+ if( pSectNd )
+ {
+ const SwSectionFmt* pFmt
+ = pSectNd->GetSection().GetFmt();
+ if( pFmt )
+ {
+ if( 1 < pFmt->GetCol().GetNumCols() )
+ eHRel = REL_PG_FRAME;
+ }
+ }
+ }
+ }
+ break;
+ }
+
+ INT16 nLeLMgn = 0, nRiLMgn = 0; // aus Liniendicke entstehende Raender
+
+ if( rWW.bBorder ) // Raender innerhalb der Umrandung
+ {
+ WW8_BRC5& rBrc = rWW.brc;
+
+ // dxpSpace aller 4 Borders bestimmen, zum InnerMargin aufaddieren
+ // und die linken/rechten zur Groesse dazu rechnen
+ // Die Angaben sind in Point
+ short nLeft, nRight;
+ if( rWW.bVer67 )
+ {
+ nLeft = (rBrc[WW8_LEFT ].aBits1[1] >> 3) & 0x1f; // dxpSpace
+ nRight = (rBrc[WW8_RIGHT].aBits1[1] >> 3) & 0x1f; // dxpSpace
+ // muessen obere / untere Liniendicken auch beruecksichtigt werden ???
+
+ nInnerMgn = (( rBrc[WW8_TOP].aBits1[1] ) >> 3 & 0x1f) +
+ (( rBrc[WW8_BOT].aBits1[1] ) >> 3 & 0x1f);
+ }
+ else
+ {
+ nLeft = rBrc[WW8_LEFT ].aBits2[1] & 0x1f; // dxpSpace
+ nRight = rBrc[WW8_RIGHT].aBits2[1] & 0x1f; // dxpSpace
+ // muessen obere / untere Liniendicken auch beruecksichtigt werden ???
+
+ nInnerMgn = (rBrc[WW8_TOP].aBits2[1] & 0x1f) +
+ (rBrc[WW8_BOT].aBits2[1] & 0x1f);
+ }
+
+ nLeLMgn += 20 * nLeft; // dxpSpace
+ nRiLMgn += 20 * nRight; // dxpSpace
+
+ nLeLMgn += GetLineWidth( rWW.bVer67, rBrc[WW8_LEFT] );
+ nRiLMgn += GetLineWidth( rWW.bVer67, rBrc[WW8_RIGHT] );
+
+ nInnerMgn += nLeft + nRight;
+ nInnerMgn *= 5; // Mittelwert in Twips (20 * 4 Kanten)
+ }
+ // Raender ausserhalb der Umrandung
+ nWidth += nLeLMgn + nRiLMgn;
+// nHeight += nUpLMgn + nLoLMgn;
+
+ FlySecur1( nWidth, nLeMgn, nRiMgn, rWW.bBorderLines ); // passen Raender ?
+ FlySecur1( nHeight, nUpMgn, nLoMgn, rWW.bBorderLines );
+
+ // Seitenrand-Bindung: Wenn die Position mit der jetzigen
+ // SW-Bindung nicht zu erreichen ist, dann waehle andere Bindung
+ // Absatz-Bindung: Nicht anfassen
+ if( (eAnchor == FLY_PAGE ) // Bindung: Seitenrand
+ && (eHRel == REL_PG_PRTAREA) // und abs. positioniert
+ && (eVAlign == VERT_NONE )
+ && (eHAlign == HORI_NONE ) )
+ {
+ if( nYPos < nPgTop ) // echter neg. Y-Wert
+ eHRel = eVRel = REL_PG_FRAME;
+ if( nXPos < nPgLeft ) // echter neg. X-Wert
+ eHRel = eVRel = REL_PG_FRAME;
+ }
+
+
+ // Sicherheitsabfragen, damit der der Writer nichts unverdauliches
+ // bekommt
+ if( nYPos < 0 )
+ nYPos = 0;
+
+ if( nXPos < 0 )
+ nXPos = 0;
+ /*
+ // eine Writer-Kuriositaet: auch wenn Abstaende vom Seitenrand
+ // gezaehlt werden sollen, muessen die Positionen als Abstaende vom
+ // Papierrand angegeben werden
+ // bei Absatzgebundenen Frames geht die Zaehlung immer von
+ // der Printarea aus
+ */
+ if( (FRAME == eHRel) && (FLY_AT_CNTNT == eAnchor) )
+ {
+ // hier duerfen neg. Werte bis minimal -nPgLeft entstehen
+ nXPos -= nPgLeft;
+ if( rIo.bTable )
+ nXPos -= rIo.GetTableLeft();
+ }
+}
+
+// hat ein Fly in WW eine automatische Breite, dann muss das durch
+// nachtraegliches Anpassen der ( im SW festen ) Fly-Breite simuliert werden.
+// Dabei kann die Fly-Breite groesser oder kleiner werden, da der Default-Wert
+// ohne Wissen ueber den Inhalt eingesetzt wird.
+void WW8SwFlyPara::BoxUpWidth( long nWidth )
+{
+ if( bAutoWidth && nWidth > nNewNettoWidth )
+ nNewNettoWidth = nWidth;
+};
+
+// Die Klasse WW8FlySet ist von SfxItemSet abgeleitet und stellt auch
+// im Prizip nicht mehr zur Verfuegung, ist aber fuer mich besser
+// zu handeln
+// WW8FlySet-ctor fuer Apos und Graf-Apos
+WW8FlySet::WW8FlySet( SwWW8ImplReader& rReader, /*const*/ WW8FlyPara* pFW,
+ /*const*/ WW8SwFlyPara* pFS, BOOL bGraf )
+:SfxItemSet( rReader.rDoc.GetAttrPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1 )
+
+{
+ if( !rReader.bNew )
+ Reader::ResetFrmFmtAttrs( *this ); // Abstand/Umrandung raus
+
+ // Position
+ Put( SwFmtHoriOrient( pFS->nXPos, pFS->eHAlign, pFS->eHRel, pFS->bToggelPos ));
+ Put( SwFmtVertOrient( pFS->nYPos, pFS->eVAlign, pFS->eVRel ) );
+
+ if( pFS->nLeMgn || pFS->nRiMgn ) // Raender setzen
+ {
+ SvxLRSpaceItem aLR;
+ aLR.SetTxtLeft( pFS->nLeMgn );
+ aLR.SetRight( pFS->nRiMgn );
+ Put( aLR );
+ }
+ if( pFS->nUpMgn || pFS->nLoMgn )
+ {
+ SvxULSpaceItem aUL;
+ aUL.SetUpper( pFS->nUpMgn );
+ aUL.SetLower( pFS->nLoMgn );
+ Put( aUL );
+ }
+
+
+ SwFmtSurround aSur( pFS->eSurround ); // Umfluss
+
+// GoldCut umfliesst inzwischen nur dann auf beiden Seiten, wenn der Fly
+// schmaler als ca. 1.5cm ist. Also entspricht normales Parallel besser
+// dem WW-Verhalten.
+// aSur.SetGoldCut( pFS->eSurround == SURROUND_PARALLEL );
+
+ Put( aSur );
+
+ rReader.SetFlyBordersShadow( *this, (WW8_BRC*)pFW->brc,
+ pFS->nInnerMgn );
+ // der 5. Parameter ist immer 0, daher geht beim Cast nix verloren
+
+ if( !bGraf ){ // Textrahmen->Anker und Groesse einstellen
+ Put( SwFmtAnchor( pFS->eAnchor, 1 ) );
+ // Groesse einstellen
+ Put( SwFmtFrmSize( pFS->eHeightFix, pFS->nWidth, pFS->nHeight ));
+ }
+}
+
+// WW8FlySet-ctor fuer zeichengebundene Grafiken
+WW8FlySet::WW8FlySet( SwWW8ImplReader& rReader, const SwPaM* pPaM,
+ const WW8_PIC& rPic, long nWidth, long nHeight )
+:SfxItemSet( rReader.rDoc.GetAttrPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1 )
+{
+ if( !rReader.bNew )
+ Reader::ResetFrmFmtAttrs( *this ); // Abstand/Umrandung raus
+
+ SwFmtAnchor aAnchor( FLY_IN_CNTNT );
+ aAnchor.SetAnchor( pPaM->GetPoint() );
+ Put( aAnchor );
+ Put( SwFmtFrmSize( ATT_FIX_SIZE, nWidth, nHeight ) );
+
+// Put( SwFmtHoriOrient( 0, HORI_NONE, REL_CHAR, FALSE ));
+// Put( SwFmtVertOrient( 0, VERT_NONE, REL_CHAR ) );
+ Put( SwFmtVertOrient( 0, VERT_TOP, FRAME ));
+
+ rReader.SetFlyBordersShadow( *this, rPic.rgbrc, 0 );
+}
+
+
+BOOL SwWW8ImplReader::StartApo( BYTE* pSprm29, BOOL bNowStyleApo )
+{
+ pWFlyPara = new WW8FlyPara ( bVer67, bNowStyleApo ? pCollA[nAktColl].pWWFly : 0 );
+
+ // APO-Parameter ermitteln und Test auf bGrafApo
+ if( !pWFlyPara->ReadFull( pSprm29, this ) )
+ {
+ DELETEZ( pWFlyPara );
+ return FALSE;
+ }
+
+
+ pSFlyPara = new WW8SwFlyPara( *pPaM,
+ *this,
+ *pWFlyPara,
+ nPgTop,
+ nPgLeft,
+ (nPgWidth - nPgRight - nPgLeft),
+ nIniFlyDx,
+ nIniFlyDy );
+ // nPg... nicht aus PageDesc, da bei Defaultraendern noch nicht gesetzt
+
+ if( !pWFlyPara->bGrafApo )
+ {
+
+ // Innerhalb des GrafApo muessen Textattribute
+ // ignoriert werden, da sie sonst auf den
+ // folgenden Zeilen landen.
+ // Der Rahmen wird nur eingefuegt, wenn er
+ // *nicht* nur zum Positionieren einer einzelnen
+ // Grafik dient.
+ // Ist es ein Grafik-Rahmen, dann werden
+ // pWFlyPara und pSFlyPara behalten und die
+ // daraus resultierenden Attribute beim
+ // Einfuegen der Grafik auf die Grafik angewendet.
+
+// SwAttrSet aFlySet( rDoc.GetAttrPool(), RES_FRMATR_BEGIN, RES_FRMATR_END - 1 );
+// SetApoCharacteristics( aFlySet, pWFlyPara, pSFlyPara );
+ WW8FlySet aFlySet( *this, pWFlyPara, pSFlyPara, FALSE );
+
+ pSFlyPara->pFlyFmt = rDoc.MakeFlySection( pSFlyPara->eAnchor,
+ pPaM->GetPoint(), &aFlySet );
+ if( FLY_IN_CNTNT != pSFlyPara->eAnchor )
+ pCtrlStck->NewAttr( *pPaM->GetPoint(), SwFltAnchor( pSFlyPara->pFlyFmt ) );
+
+ // merke Pos im Haupttext
+ pSFlyPara->pMainTextPos = new SwPosition( *pPaM->GetPoint() );
+ nLastFlyNode = pSFlyPara->pMainTextPos->nNode.GetIndex();
+
+ // Alle Attribute schliessen, da sonst
+ // Attribute entstehen koennen, die
+ // in Flys reinragen
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), 0, FALSE );
+ pEndStck->SetAttr( *pPaM->GetPoint(), 0, FALSE );
+
+
+ // Setze Pam in den FlyFrame
+ const SwFmtCntnt& rCntnt = pSFlyPara->pFlyFmt->GetCntnt();
+ ASSERT( rCntnt.GetCntntIdx(), "Kein Inhalt vorbereitet." );
+ pPaM->GetPoint()->nNode = rCntnt.GetCntntIdx()->GetIndex() + 1;
+ pPaM->GetPoint()->nContent.Assign( pPaM->GetCntntNode(), 0 );
+
+ // 1) ReadText() wird nicht wie beim W4W-Reader rekursiv aufgerufen,
+ // da die Laenge des Apo zu diesen Zeitpunkt noch nicht feststeht,
+ // ReadText() diese Angabe aber braucht.
+ // 2) Der CtrlStck wird nicht neu erzeugt.
+ // die Char-Attribute laufen weiter ( AErger mit SW-Attributen )
+ // Paraattribute muessten am Ende jeden Absatzes zurueckgesetzt
+ // sein, d.h. es duerften am Absatzende keine Paraattribute
+ // auf dem Stack liegen
+ }
+ return TRUE;
+}
+
+BOOL SwWW8ImplReader::JoinNode( SwPaM* pPam, BOOL bStealAttr )
+{
+ BOOL bRet = FALSE;
+ pPam->GetPoint()->nContent = 0; // an den Anfang der Zeile gehen
+
+ SwNodeIndex aPref( pPam->GetPoint()->nNode, -1 );
+
+ SwTxtNode* pNode = aPref.GetNode().GetTxtNode();
+ if( pNode )
+ {
+ pPaM->GetPoint()->nNode = aPref;
+ pPaM->GetPoint()->nContent.Assign( pNode, pNode->GetTxt().Len() );
+
+ if( bStealAttr )
+ pCtrlStck->StealAttr( pPam->GetPoint() );
+ pNode->JoinNext();
+ bRet = TRUE;
+ }
+ return bRet;
+}
+
+void SwWW8ImplReader::StopApo()
+{
+ if( pWFlyPara->bGrafApo ){ // Grafik-Rahmen, der *nicht* eingefuegt wurde
+ // leeren Absatz incl. Attributen entfernen
+ JoinNode( pPaM, TRUE );
+
+ }
+ else
+ { // Der Rahmen wurde nur eingefuegt, wenn er
+ // *nicht* nur zum Positionieren einer einzelnen
+ // Grafik dient.
+ JoinNode( pPaM, FALSE );// UEberfluessigen Absatz entfernen
+
+ if( !pSFlyPara->pMainTextPos || !pWFlyPara ){
+ ASSERT( pSFlyPara->pMainTextPos, "StopApo: pMainTextPos ist 0" );
+ ASSERT( pWFlyPara, "StopApo: pWFlyPara ist 0" );
+ return;
+ }
+ // Alle Attribute schliessen, da sonst
+ // Attribute entstehen koennen, die
+ // aus Flys rausragen
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), 0, FALSE );
+ pEndStck->SetAttr( *pPaM->GetPoint(), 0, FALSE );
+
+
+// Ist die Fly-Breite durch eine innenliegende Grafik vergroessert worden
+// ( bei automatischer Breite des Flys ), dann muss die Breite des SW-Flys
+// entsprechend umgesetzt werden, da der SW keine automatische Breite kennt.
+
+ if( pSFlyPara->nNewNettoWidth > MINFLY ) // BoxUpWidth ?
+ {
+ long nW = pSFlyPara->nNewNettoWidth;
+ nW += pSFlyPara->nWidth - pSFlyPara->nNettoWidth; // Rand dazu
+ pSFlyPara->pFlyFmt->SetAttr(
+ SwFmtFrmSize( pSFlyPara->eHeightFix, nW, pSFlyPara->nHeight ) );
+ }
+ else if( !pWFlyPara->nSp28 ) // *no* width set ->> automatic width
+ {
+ SfxItemSet aFlySet( pSFlyPara->pFlyFmt->GetAttrSet() );
+ aFlySet.ClearItem( RES_FRM_SIZE );
+ CalculateFlySize( aFlySet, pSFlyPara->pMainTextPos->nNode, nPgWidth );
+
+ pSFlyPara->pFlyFmt->SetAttr( aFlySet.Get( RES_FRM_SIZE ) );
+ }
+
+ *pPaM->GetPoint() = *pSFlyPara->pMainTextPos;
+ DELETEZ( pSFlyPara->pMainTextPos );
+
+// Damit die Frames bei Einfuegen in existierendes Doc erzeugt werden,
+// wird in fltshell.cxx beim Setzen des FltAnchor-Attributes
+// pFlyFrm->MakeFrms() gerufen
+
+ }
+ DELETEZ( pSFlyPara );
+ DELETEZ( pWFlyPara );
+}
+
+// TestSameApo() beantwortet die Frage, ob es dasselbe APO oder ein neues ist
+BOOL SwWW8ImplReader::TestSameApo( BYTE* pSprm29, BOOL bNowStyleApo )
+{
+ if( !pWFlyPara )
+ {
+ ASSERT( pWFlyPara, " Wo ist mein pWFlyPara ? " );
+ return TRUE;
+ }
+
+ // Es muss ein kompletter Vergleich ( ausser Borders )
+ // stattfinden, um alle Kombinationen Style / Hart
+ // richtig einzuordnen. Deshalb wird ein temporaerer
+ // WW8FlyPara angelegt ( abh. ob Style oder nicht ),
+ // darauf die harten Attrs angewendet, und
+ // dann verglichen
+
+ WW8FlyPara aF( bVer67, bNowStyleApo ? pCollA[nAktColl].pWWFly : 0 ); // Zum Vergleich
+ aF.Read( pSprm29, pPlcxMan->GetPapPLCF() ); // WWPara fuer akt. Para
+ return aF == *pWFlyPara;
+}
+
+
+
+/***************************************************************************
+# Attribut - Verwaltung
+#**************************************************************************/
+
+void SwWW8ImplReader::NewAttr( const SfxPoolItem& rAttr )
+{
+ if( !bNoAttrImport ){ // zum Ignorieren von Styles beim Doc-Einfuegen
+ if( pAktColl )
+ pAktColl->SetAttr( rAttr );
+ else
+ if( pAktItemSet )
+ pAktItemSet->Put( rAttr );
+ else
+ pCtrlStck->NewAttr( *pPaM->GetPoint(), rAttr );
+ }
+}
+
+// holt Attribut aus der FmtColl / Stack / Doc
+const SfxPoolItem* SwWW8ImplReader::GetFmtAttr( USHORT nWhich )
+{
+ if( pAktColl )
+ return &pAktColl->GetAttr( nWhich );
+ else
+ if( pAktItemSet )
+ return pAktItemSet->GetItem( nWhich );
+ else
+ return pCtrlStck->GetFmtAttr( *pPaM->GetPoint(), nWhich );
+}
+
+#if 0
+// holt Attribut aus der FmtColl / Stack, return 0 wenn nicht gefunden
+const SfxPoolItem* SwWW8ImplReader::GetFmtStkAttr( USHORT nWhich )
+{
+ if( pAktColl )
+ return &pAktColl->GetAttr( nWhich );
+ else
+ return pCtrlStck->GetFmtStkAttr( *pPaM->GetPoint(), nWhich );
+}
+#endif
+
+/***************************************************************************
+# eigentliche Attribute
+#
+# Die Methoden erhalten die Token-Id und die Laenge der noch folgenden
+# Parameter gemaess Tabelle in WWScan.cxx als Parameter
+#**************************************************************************/
+
+/***************************************************************************
+# Spezial WW - Attribute
+#**************************************************************************/
+
+void SwWW8ImplReader::Read_Special( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen < 0 ){
+ bSpec = FALSE;
+ return;
+ }
+ bSpec = ( *pData != 0 );
+}
+
+// Read_Obj wird fuer fObj und fuer fOle2 benutzt !
+void SwWW8ImplReader::Read_Obj( USHORT nId, BYTE* pData, short nLen )
+{
+ if( nLen < 0 )
+ bObj = FALSE;
+ else
+ {
+ bObj = 0 != *pData;
+
+ if( bObj && nPicLocFc && bEmbeddObj )
+ nObjLocFc = nPicLocFc;
+ }
+}
+
+void SwWW8ImplReader::Read_PicLoc( USHORT nId, BYTE* pData, short nLen )
+{
+ if( nLen < 0 )
+ {
+ nPicLocFc = 0;
+ bSpec = FALSE; // Stimmt das immer ?
+ }
+ else
+ {
+ nPicLocFc = SVBT32ToLong( pData );
+ bSpec = TRUE;
+
+ if( bObj && nPicLocFc && bEmbeddObj )
+ nObjLocFc = nPicLocFc;
+ }
+}
+
+
+void SwWW8ImplReader::Read_POutLvl( USHORT nId, BYTE* pData, short nLen )
+{
+ if( pAktColl && (0 < nLen) )
+ {
+ SwWW8StyInf* pSI = &pCollA[nAktColl];
+ pSI->nOutlineLevel =
+ ( (1 <= pSI->GetWWStyleId()) && (9 >= pSI->GetWWStyleId()) )
+ ? pSI->GetWWStyleId()-1
+ : (pData ? *pData : 0);
+ }
+}
+
+
+void SwWW8ImplReader::Read_Symbol( USHORT nId, BYTE* pData, short nLen )
+{
+ if( !bIgnoreText )
+ {
+ if( nLen < 0 )
+ bSymbol = FALSE;
+ else
+ {
+ // neues Font-Atribut aufmachen
+ // (wird in SwWW8ImplReader::ReadChars() geschlossen)
+ if( SetNewFontAttr( SVBT16ToShort( pData ), FALSE ))
+ {
+ if( bVer67 )
+ cSymbol = ByteString::ConvertToUnicode(
+ *(sal_Char*)(pData+2), RTL_TEXTENCODING_MS_1252 );
+ else
+ cSymbol = SVBT16ToShort( pData+2 );
+ bSymbol = TRUE;
+ }
+ }
+ }
+}
+
+/***************************************************************************
+# Zeichen - Attribute
+#**************************************************************************/
+
+static USHORT __FAR_DATA nEndIds[ 8 ] = {
+ RES_CHRATR_WEIGHT, RES_CHRATR_POSTURE,
+ RES_CHRATR_CROSSEDOUT, RES_CHRATR_CONTOUR,
+ RES_CHRATR_SHADOWED, RES_CHRATR_CASEMAP,
+ RES_CHRATR_CASEMAP, RES_CHRATR_CROSSEDOUT
+ };
+
+// Read_BoldUsw fuer Italic, Bold, Kapitaelchen, Versalien, durchgestrichen,
+// Contour und Shadow
+void SwWW8ImplReader::Read_BoldUsw( USHORT nId, BYTE* pData, short nLen )
+{
+ BYTE nI;
+ // die Attribut-Nr fuer "doppelt durchgestrichen" tanzt aus der Reihe
+ if( 0x2A53 != nId )
+ nI = bVer67 ? nId - 85 : nId - 0x0835; // Index 0..6
+ else
+ nI = 7; // Index 7 (Doppelt durchgestrichen)
+
+ BYTE nMask = 1 << nI;
+
+ if( nLen < 0 )
+ {
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), nEndIds[ nI ] );
+ pCtrlStck->SetToggleAttr( nI, FALSE );
+ return;
+ }
+ // Wert: 0 = Aus, 1 = An,
+ // 128 = Wie Style, 129 entgegen Style
+ BOOL bOn = *pData & 1;
+ SwWW8StyInf* pSI = &pCollA[nAktColl];
+
+ if( pAktColl ) // StyleDef -> Flags merken
+ {
+ if( pSI->nBase < nColls // Style Based on
+ && ( *pData & 0x80 ) // Bit 7 gesetzt ?
+ && ( pCollA[pSI->nBase].n81Flags & nMask ) ) // BasisMaske ?
+ bOn = !bOn; // umdrehen
+
+ if( bOn )
+ pSI->n81Flags |= nMask; // Flag setzen
+ else
+ pSI->n81Flags &= ~nMask; // Flag loeschen
+ }
+ else
+ { // im Text -> Flags abfragen
+ if( *pData & 0x80 ) // Bit 7 gesetzt ?
+ {
+ if( pSI->n81Flags & nMask ) // und in StyleDef an ?
+ bOn = !bOn; // dann invertieren
+ // am Stack vermerken, das dieses ein Toggle-Attribut ist
+ pCtrlStck->SetToggleAttr( nI, TRUE );
+ }
+ }
+
+ SetToggleAttr( nI, bOn );
+}
+
+void SwWW8ImplReader::SetToggleAttr( BYTE nAttrId, BOOL bOn )
+{
+ switch( nAttrId )
+ {
+ case 0: NewAttr( SvxWeightItem( bOn ? WEIGHT_BOLD : WEIGHT_NORMAL ) );
+ break;
+ case 1: NewAttr( SvxPostureItem( bOn ? ITALIC_NORMAL : ITALIC_NONE ) );
+ break;
+ case 2: NewAttr( SvxCrossedOutItem( bOn ? STRIKEOUT_SINGLE : STRIKEOUT_NONE ) );
+ break;
+ case 3: NewAttr( SvxContourItem( bOn ) );
+ break;
+ case 4: NewAttr( SvxShadowedItem( bOn ) );
+ break;
+ case 5: NewAttr( SvxCaseMapItem( bOn ? SVX_CASEMAP_KAPITAELCHEN
+ : SVX_CASEMAP_NOT_MAPPED ) );
+ break;
+ case 6: NewAttr( SvxCaseMapItem( bOn ? SVX_CASEMAP_VERSALIEN
+ : SVX_CASEMAP_NOT_MAPPED ) );
+ break;
+ case 7: NewAttr( SvxCrossedOutItem( bOn ? STRIKEOUT_DOUBLE
+ : STRIKEOUT_NONE ) );
+ break;
+ }
+}
+
+void SwWW8ImplReader::_ChkToggleAttr( USHORT nOldStyle81Mask,
+ USHORT nNewStyle81Mask )
+{
+ USHORT i = 1, nToggleAttrFlags = pCtrlStck->GetToggleAttrFlags();
+ BYTE n = 0;
+ for( ; n < 7; ++n, i <<= 1 )
+ if( (i & nToggleAttrFlags) &&
+ ( (i & nOldStyle81Mask) != (i & nNewStyle81Mask)))
+ {
+ SetToggleAttr( n, 0 != (i & nOldStyle81Mask ) );
+ }
+}
+
+void SwWW8ImplReader::Read_SubSuper( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen < 0 ){
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_ESCAPEMENT );
+ return;
+ }
+
+ short nEs;
+ BYTE nProp;
+ switch( *pData ){
+ case 1: nEs = DFLT_ESC_AUTO_SUPER; nProp = DFLT_ESC_PROP; break;
+ case 2: nEs = DFLT_ESC_AUTO_SUB; nProp = DFLT_ESC_PROP; break;
+ default: nEs = 0; nProp = 100; break;
+ }
+ NewAttr( SvxEscapementItem( nEs, nProp ) );
+}
+
+void SwWW8ImplReader::Read_SubSuperProp( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen < 0 ){
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_ESCAPEMENT );
+ return;
+ }
+
+ short nPos = SVBT16ToShort( pData ); // Font-Position in HalfPoints
+ INT32 nPos2 = nPos * ( 10 * 100 ); // HalfPoints in 100 * tw
+ SvxFontHeightItem* pF
+ = (SvxFontHeightItem*)GetFmtAttr( RES_CHRATR_FONTSIZE );
+ nPos2 /= (INT32)pF->GetHeight(); // ... nun in % ( gerundet )
+ if( nPos2 > 100 ) // zur Sicherheit
+ nPos2 = 100;
+ if( nPos2 < -100 )
+ nPos2 = -100;
+ SvxEscapementItem aEs( (short)nPos2, 100 );
+ NewAttr( aEs );
+}
+
+void SwWW8ImplReader::Read_Underline( USHORT, BYTE* pData, short nLen )
+{
+ FontUnderline eUnderline = UNDERLINE_NONE;
+ BOOL bWordLine = FALSE;
+ if( pData )
+ {
+ // Parameter: 0 = none, 1 = single, 2 = by Word,
+ // 3 = double, 4 = dotted, 5 = hidden
+ // 6 = thick, 7 = dash, 8 = dot(not used)
+ // 9 = dotdash 10 = dotdotdash 11 = wave
+
+
+ // pruefe auf Sonderfall "fett+unterstrichen"
+ BOOL bAlsoBold = /*( 6 == b )*/FALSE;
+ // erst mal ggfs. *bold* einschalten!
+ if( bAlsoBold )
+ {
+ BYTE nOn = 1;
+ Read_BoldUsw( 0x0835, &nOn, nLen );
+ eUnderline = UNDERLINE_SINGLE;
+ }
+ else
+ {
+ switch( *pData )
+ {
+ case 2: bWordLine = TRUE; // kein break;
+ case 1: eUnderline = (FontUnderline)UNDERLINE_SINGLE; break;
+ case 3: eUnderline = (FontUnderline)UNDERLINE_DOUBLE; break;
+ case 4: eUnderline = (FontUnderline)UNDERLINE_DOTTED; break;
+ case 7: eUnderline = (FontUnderline)UNDERLINE_DASH; break;
+ case 9: eUnderline = (FontUnderline)UNDERLINE_DASHDOT; break;
+ case 10:eUnderline = (FontUnderline)UNDERLINE_DASHDOTDOT; break;
+ case 6: eUnderline = (FontUnderline)UNDERLINE_BOLD; break;
+ case 11:eUnderline = (FontUnderline)UNDERLINE_WAVE; break;
+ case 20:eUnderline = (FontUnderline)UNDERLINE_BOLDDOTTED; break;
+ case 23:eUnderline = (FontUnderline)UNDERLINE_BOLDDASH; break;
+ case 39:eUnderline = (FontUnderline)UNDERLINE_LONGDASH; break;
+ case 55:eUnderline = (FontUnderline)UNDERLINE_BOLDLONGDASH; break;
+ case 25:eUnderline = (FontUnderline)UNDERLINE_BOLDDASHDOT; break;
+ case 26:eUnderline = (FontUnderline)UNDERLINE_BOLDDASHDOTDOT;break;
+ case 27:eUnderline = (FontUnderline)UNDERLINE_BOLDWAVE; break;
+ case 43:eUnderline = (FontUnderline)UNDERLINE_DOUBLEWAVE; break;
+ }
+ }
+ }
+
+ // dann Stack ggfs. verwursteln und exit!
+ if( nLen < 0 )
+ {
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_UNDERLINE );
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_WORDLINEMODE );
+ }
+ else
+ {
+ NewAttr( SvxUnderlineItem( eUnderline ));
+ if( bWordLine )
+ NewAttr( SvxWordLineModeItem( TRUE ));
+ }
+}
+
+void SwWW8ImplReader::Read_TxtColor( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen < 0 )
+ {
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_COLOR );
+ bTxtCol = FALSE;
+
+ if( bCharShdTxtCol || bShdTxtCol )
+ // dann muss die wieder eingeschaltet werden!!
+ NewAttr( SvxColorItem( Color( COL_WHITE ) ) ); // -> weisse Schrift
+ }
+ else
+ {
+ BYTE b = *pData; // Parameter: 0 = Auto, 1..16 Farben
+
+ if( b > 16 ) // unbekannt -> Black
+ b = 0; // Auto -> Black
+
+ NewAttr( SvxColorItem( Color( eSwWW8ColA[b] ) ) );
+ bTxtCol = TRUE; // SHD darf nicht Farbe einschalten
+ }
+}
+
+BOOL SwWW8ImplReader::GetFontParams( USHORT nFCode, FontFamily& reFamily,
+ String& rName, FontPitch& rePitch, CharSet& reCharSet )
+{
+ // Die Defines, aus denen diese Tabellen erzeugt werden, stehen in windows.h
+ static FontPitch __READONLY_DATA ePitchA[]
+ = { PITCH_DONTKNOW, PITCH_FIXED, PITCH_VARIABLE, PITCH_DONTKNOW };
+
+ static FontFamily __READONLY_DATA eFamilyA[]
+ = { FAMILY_DONTKNOW, FAMILY_ROMAN, FAMILY_SWISS, FAMILY_MODERN,
+ FAMILY_SCRIPT, FAMILY_DECORATIVE };
+
+
+ const WW8_FFN* pF = pFonts->GetFont( nFCode ); // Info dazu
+ if( !pF ) // FontNummer unbekannt ?
+ return FALSE; // dann ignorieren
+
+ rName = String( pF->sFontname );
+
+#if defined( OS2 )
+ if ( rName.EqualsIgnoreCaseAscii( "Helv" )
+ || rName.EqualsIgnoreCaseAscii( "Arial" ) )
+ rName.AssignAscii( "Helvetica" );
+ else if ( rName.EqualsIgnoreCaseAscii( "Tms Rmn" )
+ || rName.EqualsIgnoreCaseAscii( "Times New Roman" ) )
+ rName.AssignAscii( "Times New Roman" );
+ else if ( rName.EqualsIgnoreCaseAscii( "Courier New" ) )
+ rName.AssignAscii( "Courier" );
+ else if ( rName.EqualsIgnoreCaseAscii( "Symbol" ) )
+ rName.AssignAscii( "Symbol Set" );
+#endif // OS2
+#if defined( MAC )
+ if ( rName.EqualsIgnoreCaseAscii( "Helv" )
+ || rName.EqualsIgnoreCaseAscii( "Arial" ))
+ rName.AssignAscii( "Helvetica" );
+ else if ( rName.EqualsIgnoreCaseAscii( "Tms Rmn" )
+ || rName.EqualsIgnoreCaseAscii( "Times New Roman" ) )
+ rName.AssignAscii( "Times" );
+ else if ( rName.EqualsIgnoreCaseAscii( "Courier New" ) )
+ rName.AssignAscii( "Courier" );
+#endif // MAC
+
+ // pF->prg : Pitch
+ rePitch = ePitchA[pF->prg];
+
+ // pF->chs: Charset
+ if( 77 == pF->chs ) // Mac-Font im Mac-Charset oder
+ reCharSet = eTextCharSet; // auf ANSI-Charset uebersetzt
+ else
+ reCharSet = rtl_getTextEncodingFromWindowsCharset( pF->chs );
+
+ // pF->ff : Family
+ BYTE b = pF->ff;
+
+ // make sure Font Family Code is set correctly
+ // at least for the most important fonts
+ // ( might be set wrong when Doc was not created by
+ // Winword but by third party program like Applixware... )
+ /*
+ 0: FAMILY_DONTKNOW
+ 1: FAMILY_ROMAN
+ 2: FAMILY_SWISS
+ 3: FAMILY_MODERN
+ 4: FAMILY_SCRIPT
+ 5: FAMILY_DECORATIVE
+ */
+#define FONTNAMETAB_SZ 14
+#define MAX_FONTNAME_ROMAN 6
+ static sal_Char __READONLY_DATA
+ // first comes ROMAN
+ sFontName0[] = "\x07""Tms Rmn",
+ sFontName1[] = "\x07""Timmons",
+ sFontName2[] = "\x08""CG Times",
+ sFontName3[] = "\x08""MS Serif",
+ sFontName4[] = "\x08""Garamond",
+ sFontName5[] = "\x11""Times Roman",
+ sFontName6[] = "\x15""Times New Roman",
+ // from here SWISS --> see above: #define MAX_FONTNAME_ROMAN 6
+ sFontName7[] = "\x04""Helv",
+ sFontName8[] = "\x05""Arial",
+ sFontName9[] = "\x07""Univers",
+ sFontName10[]= "\x11""LinePrinter",
+ sFontName11[]= "\x11""Lucida Sans",
+ sFontName12[]= "\x11""Small Fonts",
+ sFontName13[]= "\x13""MS Sans Serif";
+ static const sal_Char* __READONLY_DATA aFontNameTab[ FONTNAMETAB_SZ ] =
+ {
+ sFontName0, sFontName1, sFontName2, sFontName3,
+ sFontName4, sFontName5, sFontName6, sFontName7,
+ sFontName8, sFontName9, sFontName10, sFontName11,
+ sFontName12, sFontName13
+ };
+
+ for( USHORT n = 0; n < FONTNAMETAB_SZ; n++ )
+ {
+ const sal_Char* pCmp = aFontNameTab[ n ];
+ int nLen = *pCmp++;
+ if( rName.EqualsIgnoreCaseAscii(pCmp, 0, nLen) )
+ {
+ b = n <= MAX_FONTNAME_ROMAN ? 1 : 2;
+ break;
+ }
+ }
+ if( b < sizeof( eFamilyA ) )
+ reFamily = eFamilyA[b];
+ else
+ reFamily = FAMILY_DONTKNOW;
+
+ return TRUE;
+}
+
+BOOL SwWW8ImplReader::SetNewFontAttr( USHORT nFCode, BOOL bSetEnums )
+{
+ FontFamily eFamily;
+ String aName;
+ FontPitch ePitch;
+ CharSet eSrcCharSet;
+
+ if( !GetFontParams( nFCode, eFamily, aName, ePitch, eSrcCharSet ) )
+ return FALSE;
+
+ CharSet eDstCharSet = eSrcCharSet;
+
+ SvxFontItem aFont( eFamily, aName, aEmptyStr, ePitch, eDstCharSet );
+
+ if( bSetEnums )
+ {
+ if( pAktColl )
+ { // StyleDef
+ pCollA[nAktColl].eFontSrcCharSet = eSrcCharSet;
+ }
+ else
+ {
+ eFontSrcCharSet = eSrcCharSet;
+ }
+ }
+
+ NewAttr( aFont ); // ...und 'reinsetzen
+
+
+ return TRUE;
+}
+
+void SwWW8ImplReader::ResetCharSetVars()
+{
+ if( nCharFmt >= 0 )
+ {
+ eFontSrcCharSet = pCollA[nCharFmt].eFontSrcCharSet; // aus C-Style
+ }
+ else
+ {
+ eFontSrcCharSet = RTL_TEXTENCODING_DONTKNOW;
+ }
+ if( eFontSrcCharSet == RTL_TEXTENCODING_DONTKNOW )
+ eFontSrcCharSet = pCollA[nAktColl].eFontSrcCharSet; // aus P-Style
+}
+
+/*
+ Font ein oder ausschalten:
+*/
+void SwWW8ImplReader::Read_FontCode( USHORT, BYTE* pData, short nLen )
+{
+ if( !bSymbol && !bIgnoreText ) // falls bSymbol, gilt der am Symbol
+ { // (siehe sprmCSymbol) gesetzte Font !
+ if( nLen < 0 )
+ { // Ende des Attributes
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_FONT );
+ ResetCharSetVars();
+ return;
+ }
+
+ USHORT nFCode = SVBT16ToShort( pData ); // Font-Nummer
+
+ if( SetNewFontAttr( nFCode ) // Lies Inhalt
+ && pAktColl && pStyles ) // Style-Def ?
+ pStyles->bFontChanged = TRUE; // merken zur Simulation Default-Font
+ }
+}
+
+
+
+
+void SwWW8ImplReader::Read_FontSize( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen < 0 ){ // Ende des Attributes
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_FONTSIZE );
+ return;
+ }
+
+// USHORT nFSize = bVer67 ? SVBT16ToShort( pData ) : *pData; // Font-Groesse in halben Point
+ USHORT nFSize = SVBT16ToShort( pData ); // Font-Groesse in halben Point
+
+ // 10 = 1440 / ( 72 * 2 )
+ SvxFontHeightItem aSz( (const ULONG)( (ULONG)nFSize * 10 ) );
+ NewAttr( aSz );
+ if( pAktColl && pStyles ) // Style-Def ?
+ pStyles->bFSizeChanged = TRUE; // merken zur Simulation Default-FontSize
+}
+
+
+
+void SwWW8ImplReader::Read_CharSet( USHORT nId, BYTE* pData, short nLen )
+{
+ if( nLen < 0 ){ // Ende des Attributes
+ eHardCharSet = RTL_TEXTENCODING_DONTKNOW;
+ return;
+ }
+ BYTE nfChsDiff = SVBT8ToByte( pData );
+
+ if( nfChsDiff )
+ eHardCharSet = rtl_getTextEncodingFromWindowsCharset( *(pData + 1) );
+ else
+ eHardCharSet = RTL_TEXTENCODING_DONTKNOW;
+}
+
+void SwWW8ImplReader::Read_Language( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen < 0 ){ // Ende des Attributes
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_LANGUAGE );
+ return;
+ }
+ USHORT nLang = SVBT16ToShort( pData ); // Language-Id
+
+ NewAttr( SvxLanguageItem( (const LanguageType)nLang ) );
+}
+
+
+
+/*
+ Einschalten des Zeichen-Styles:
+*/
+void SwWW8ImplReader::Read_CColl( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen < 0 ){ // Ende des Attributes
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_TXTATR_CHARFMT );
+ nCharFmt = -1;
+ return;
+ }
+ USHORT nId = SVBT16ToShort( pData ); // Style-Id (NICHT Sprm-Id!)
+
+ if( nId >= nColls || !pCollA[nId].pFmt // ungueltige Id ?
+ || pCollA[nId].bColl ) // oder Para-Style ?
+ return; // dann ignorieren
+
+ NewAttr( SwFmtCharFmt( (SwCharFmt*)pCollA[nId].pFmt ) );
+ nCharFmt = (short) nId;
+}
+
+
+/*
+ enger oder weiter als normal:
+*/
+void SwWW8ImplReader::Read_Kern( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen < 0 ){ // Ende des Attributes
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_KERNING );
+ return;
+ }
+ INT16 nKern = SVBT16ToShort( pData ); // Kerning in Twips
+ NewAttr( SvxKerningItem( nKern ) );
+}
+
+void SwWW8ImplReader::Read_FontKern( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen < 0 )
+ // Ende des Attributes
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_AUTOKERN );
+ else
+ NewAttr( SvxAutoKernItem( TRUE ) );
+}
+
+void SwWW8ImplReader::Read_CharShadow( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen <= 0 )
+ {
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_BACKGROUND );
+ if( bCharShdTxtCol )
+ {
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_COLOR ); // Zeichenfarbe auch
+ bCharShdTxtCol = FALSE;
+ }
+ }
+ else
+ {
+ WW8_SHD aSHD;
+ aSHD.SetWWValue( *(SVBT16*)pData );
+ SwWW8Shade aSh( bVer67, aSHD );
+
+ NewAttr( SvxBrushItem( aSh.aColor, RES_CHRATR_BACKGROUND ));
+
+ // weisse Schrift und nicht ueberattributiert
+ if( aSh.bWhiteText && !bTxtCol && !bShdTxtCol )
+ {
+ NewAttr( SvxColorItem( Color( COL_WHITE ) ) ); // -> weisse Schrift
+ bCharShdTxtCol = TRUE;
+ }
+ }
+}
+
+void SwWW8ImplReader::Read_CharHighlight( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen <= 0 )
+ {
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_BACKGROUND );
+ if( bCharShdTxtCol )
+ {
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_COLOR ); // Zeichenfarbe auch
+ bCharShdTxtCol = FALSE;
+ }
+ }
+ else
+ {
+ BYTE b = *pData; // Parameter: 0 = Auto, 1..16 Farben
+
+ if( b > 16 ) // unbekannt -> Black
+ b = 0; // Auto -> Black
+
+ Color aCol( eSwWW8ColA[b] );
+ NewAttr( SvxBrushItem( aCol , RES_CHRATR_BACKGROUND ));
+
+ // weisse Schrift und nicht ueberattributiert
+ if( COL_BLACK == aCol.GetColor() && !bTxtCol && !bShdTxtCol )
+ {
+ NewAttr( SvxColorItem( Color( COL_WHITE ) ) ); // -> weisse Schrift
+ bCharShdTxtCol = TRUE;
+ }
+ }
+}
+
+
+/***************************************************************************
+# Absatz - Attribute
+#**************************************************************************/
+
+void SwWW8ImplReader::Read_NoLineNumb( USHORT nId, BYTE* pData, short nLen )
+{
+ if( nLen < 0 ) // Ende des Attributes
+ {
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_LINENUMBER );
+ return;
+ }
+ SwFmtLineNumber aLN;
+ aLN.SetCountLines( pData && (0 == *pData) );
+ NewAttr( aLN );
+}
+
+void SwWW8ImplReader::Read_LR( USHORT nId, BYTE* pData, short nLen ) // Sprm 16, 17
+{
+ if( nIniFlags & WW8FL_NO_LRUL )
+ return;
+
+ if( nLen < 0 ) // Ende des Attributes
+ {
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_LR_SPACE );
+ return;
+ }
+
+ short nPara = SVBT16ToShort( pData );
+
+ SvxLRSpaceItem aLR( *(SvxLRSpaceItem*)GetFmtAttr( RES_LR_SPACE ));
+
+ switch( nId )
+ {
+ //sprmPDxaLeft
+ case 17:
+ case 0x840F:
+ if( nPara < 0 )
+ nPara = 0;
+ if( !aLR.GetTxtFirstLineOfst() )
+ aLR.SetTxtFirstLineOfst( 1 );
+ else
+ if( aLR.GetTxtFirstLineOfst() < -nPara )
+ // Erstzeileneinzug anpassen, sonst weigert sich SetTxtLeft()
+ aLR.SetTxtFirstLineOfst( -nPara );
+
+ aLR.SetTxtLeft( nPara );
+ if( pAktColl )
+ {
+ pCollA[nAktColl].nLeftParaMgn = nPara; // fuer Tabs merken
+ pCollA[nAktColl].nTxtFirstLineOfst = aLR.GetTxtFirstLineOfst();
+ }
+ else
+ {
+ nLeftParaMgn = nPara; // fuer Tabs merken
+ nTxtFirstLineOfst = aLR.GetTxtFirstLineOfst();
+ }
+ break;
+ //sprmPDxaLeft1
+ case 19:
+ case 0x8411:
+ if( -nPara > (short)aLR.GetTxtLeft() )
+ nPara = -(short)aLR.GetTxtLeft();
+ aLR.SetTxtFirstLineOfst( nPara );
+ if( pAktColl )
+ {
+ pCollA[nAktColl].nTxtFirstLineOfst = nPara; // fuer Tabs merken
+ }
+ else
+ {
+ nTxtFirstLineOfst = nPara; // fuer Tabs merken
+ }
+ break;
+ //sprmPDxaRight
+ case 16:
+ case 0x840E:
+ if( nPara < 0 )
+ nPara = 0;
+ aLR.SetRight( nPara );
+ break;
+ default: return;
+ }
+ NewAttr( aLR );
+}
+
+void SwWW8ImplReader::Read_LineSpace( USHORT, BYTE* pData, short nLen ) // Sprm 20
+{
+// Kommentear siehe Read_UL()
+ if( bStyNormal && ( bWWBugNormal || ( nIniFlags & WW8FL_NO_STD_STY_DYA ) ) )
+ return;
+
+ if( nLen < 0 ){
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_PARATR_LINESPACING );
+ if( !( nIniFlags & WW8FL_NO_IMPLPASP ) )
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_UL_SPACE );
+ return;
+ }
+ short nSpace = SVBT16ToShort( pData );
+ short nMulti = SVBT16ToShort( pData + 2 );
+
+ SvxLineSpace eLnSpc;
+ if( 0 > nSpace )
+ {
+ nSpace = -nSpace;
+ eLnSpc = SVX_LINE_SPACE_FIX;
+ }
+ else
+ eLnSpc = SVX_LINE_SPACE_MIN;
+
+// WW hat einen impliziten zusaetzlichen Absatzabstand abhaengig vom
+// Zeilenabstand. Er betraegt bei "genau", 0.8*Zeilenabstand "vor" und
+// 0.2*Zeilenabstand "nach".
+// Bei "Mindestens" sind es 1*Zeilenabstand "vor" und 0*Zeilenabstand "nach".
+// Bei Mehrfach sind es 0 "vor" und min( 0cm, FontSize*(nFach-1) ) "nach".
+//
+// SW hat auch einen impliziten Zeilenabstand. er betraegt bei "mindestens"
+// 1*Zeilenabstand "vor" und 0 "nach"
+// bei proportional betraegt er min( 0cm, FontSize*(nFach-1) ) sowohl "vor"
+// wie auch "nach"
+
+ USHORT nWwPre = 0;
+ USHORT nWwPost = 0;
+ USHORT nSwPre = 0;
+ USHORT nSwPost = 0;
+ USHORT nSpaceTw = 0;
+
+ SvxLineSpacingItem aLSpc;
+
+ if( 1 == nMulti ) // MultilineSpace ( proportional )
+ {
+ long n = nSpace * 10 / 24; // WW: 240 = 100%, SW: 100 = 100%
+
+//JP 03.12.98: nach Absprache mit AMA ist die Begrenzung unsinnig
+ if( n>200 ) n = 200; // SW_UI-Maximum
+ aLSpc.SetPropLineSpace( (const BYTE)n );
+ SvxFontHeightItem* pH = (SvxFontHeightItem*)
+ GetFmtAttr( RES_CHRATR_FONTSIZE );
+ nSpaceTw = (USHORT)( n * pH->GetHeight() / 100 );
+
+ if( n > 100 )
+ nWwPost = nSwPre = nSwPost = (USHORT)( ( n - 100 )
+ * pH->GetHeight() / 100 );
+ }
+ else // Fixed / Minimum
+ {
+ // bei negativen Space ist der Abstand exakt, sonst minimum
+ nSpaceTw = (USHORT)nSpace;
+ aLSpc.SetLineHeight( nSpaceTw );
+ aLSpc.GetLineSpaceRule() = eLnSpc;
+ nSwPre = nSpace;
+
+ if( SVX_LINE_SPACE_FIX == eLnSpc ) // Genau
+ {
+ nWwPre = (USHORT)( 8L * nSpace / 10 );
+ nWwPost = (USHORT)( 2L * nSpace / 10 );
+ nSwPre = nSpace;
+ }
+ else // Minimum
+ {
+ nWwPre = (USHORT)( 129L * nSpace / 100 - 95 );// erst bei groesseren
+ // Zeilenabstaenden
+ }
+ }
+ NewAttr( aLSpc );
+ if( pSFlyPara )
+ pSFlyPara->nLineSpace = nSpaceTw; // LineSpace fuer Graf-Apos
+
+ if( ( nWwPre > nSwPre || nWwPost > nSwPost )
+ && !( nIniFlags & WW8FL_NO_IMPLPASP ) )
+ {
+ SvxULSpaceItem aUL( *(SvxULSpaceItem*)GetFmtAttr( RES_UL_SPACE ));
+ short nDU = aUL.GetUpper() + nWwPre - nSwPre;
+ short nDL = aUL.GetLower() + nWwPost - nSwPost;
+ if( nDU > 0 )
+ aUL.SetUpper( nDU );
+ else
+ nDL += nDU;
+
+ if( nDL > 0 )
+ aUL.SetLower( nDL );
+ NewAttr( aUL );
+ }
+}
+
+void SwWW8ImplReader::Read_UL( USHORT nId, BYTE* pData, short nLen ) // Sprm 21, 22
+{
+ if( nIniFlags & WW8FL_NO_LRUL )
+ return;
+
+// Nun eine Umpopelung eines WW-Fehlers: Bei nProduct == 0c03d wird
+// faelschlicherweise ein DyaAfter 240 ( delta y abstand after, amn.d.b.)
+// im Style "Normal" eingefuegt, der
+// gar nicht da ist. Ueber das IniFlag WW8FL_NO_STY_DYA laesst sich dieses
+// Verhalten auch fuer andere WW-Versionen erzwingen
+// ASSERT( !bStyNormal || bWWBugNormal, "+Dieses Doc deutet evtl. auf einen \
+//Fehler in der benutzten WW-Version hin. Wenn sich die Styles <Standard> bzw. \
+//<Normal> zwischen WW und SW im Absatz- oder Zeilenabstand unterscheiden, \
+//dann bitte dieses Doc SH zukommen lassen." );
+
+// if( bStyNormal && ( bWWBugNormal || ( nIniFlags & WW8FL_NO_STD_STY_DYA ) ) )
+// return;
+// bWWBugNormal ist kein hinreichendes Kriterium dafuer, dass der
+// angegebene Abstand falsch ist
+
+ if( bStyNormal && ( nIniFlags & WW8FL_NO_STD_STY_DYA ) )
+ return;
+
+ if( nLen < 0 ){ // Ende des Attributes
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_UL_SPACE );
+ return;
+ }
+ short nPara = SVBT16ToShort( pData );
+ if( nPara < 0 )
+ nPara = -nPara;
+
+ SvxULSpaceItem aUL( *(SvxULSpaceItem*)GetFmtAttr( RES_UL_SPACE ));
+
+ switch( nId ){ // keine Versuche
+ //sprmPDyaBefore
+ case 21:
+ case 0xA413: aUL.SetUpper( nPara ); break;
+ //sprmPDyaAfter
+ case 22:
+ case 0xA414: aUL.SetLower( nPara ); break;
+ default: return;
+ };
+#if 0
+ // nIniFlags stehen in c:\winnt40\soffice.ini[user]
+ // siehe wwpar.hxx
+ // und SwWW8ImplReader::LoadDoc( SwPaM& rPaM )
+ //
+ if( nIniFlags & WW8FL_NO_IMPLPASP ){
+ switch( nId ){ // keine Versuche
+ case 21:
+ case 0xA413: aUL.SetUpper( nPara ); break;
+ case 22:
+ case 0xA414: aUL.SetLower( nPara ); break;
+ default: return;
+ };
+ }else{
+ // auf alte Werte addieren wg. implizitem Absatzabstand
+ // ( siehe Read_LineSpace() )
+ switch( nId ){
+ case 21:
+ case 0xA413: aUL.SetUpper( aUL.GetUpper() + nPara ); break;
+ case 22:
+ case 0xA414: aUL.SetLower( aUL.GetLower() + nPara ); break;
+ default: return;
+ };
+ }
+#endif
+ NewAttr( aUL );
+}
+
+void SwWW8ImplReader::Read_Justify( USHORT, BYTE* pData, short nLen )
+{
+ static SvxAdjust aAdjArr[] = { SVX_ADJUST_LEFT, SVX_ADJUST_CENTER,
+ SVX_ADJUST_RIGHT, SVX_ADJUST_BLOCK };
+
+ if( nLen < 0 ){
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_PARATR_ADJUST );
+ return;
+ }
+ BYTE b = *pData;
+
+ NewAttr( SvxAdjustItem( aAdjArr[b&0x3] ) ); // "&0x3 gegen Tabellenueberlauf
+} // bei Stuss-Werten
+
+
+
+
+SwWW8Shade::SwWW8Shade( BOOL bVer67, const WW8_SHD& rSHD )
+{
+static ULONG __READONLY_DATA eMSGrayScale[] = {
+ // Nul-Brush
+ 0, // 0
+ // Solid-Brush
+ 1000, // 1
+ // promillemaessig abgestufte Schattierungen
+ 50, // 2
+ 100, // 3
+ 200, // 4
+ 250, // 5
+ 300, // 6
+ 400, // 7
+ 500, // 8
+ 600, // 9
+ 700, // 10
+ 750, // 11
+ 800, // 12
+ 900, // 13
+ 333, // 14 Dark Horizontal
+ 333, // 15 Dark Vertical
+ 333, // 16 Dark Forward Diagonal
+ 333, // 17 Dark Backward Diagonal
+ 333, // 18 Dark Cross
+ 333, // 19 Dark Diagonal Cross
+ 333, // 20 Horizontal
+ 333, // 21 Vertical
+ 333, // 22 Forward Diagonal
+ 333, // 23 Backward Diagonal
+ 333, // 24 Cross
+ 333, // 25 Diagonal Cross
+ // neun Nummern ohne Bedeutung in Ver8
+ 500, // 26
+ 500, // 27
+ 500, // 28
+ 500, // 29
+ 500, // 30
+ 500, // 31
+ 500, // 32
+ 500, // 33
+ 500, // 34
+ // und weiter gehts mit tollen Schattierungen ;-)
+ 25, // 35
+ 75, // 36
+ 125, // 37
+ 150, // 38
+ 175, // 39
+ 225, // 40
+ 275, // 41
+ 325, // 42
+ 350, // 43
+ 375, // 44
+ 425, // 45
+ 450, // 46
+ 475, // 47
+ 525, // 48
+ 550, // 49
+ 575, // 50
+ 625, // 51
+ 650, // 52
+ 675, // 53
+ 725, // 54
+ 775, // 55
+ 825, // 56
+ 850, // 57
+ 875, // 58
+ 925, // 59
+ 950, // 60
+ 975, // 61
+ // und zu guter Letzt:
+ 970};// 62
+ ColorData nFore;
+ ColorData nBack;
+ ULONG nWW8BrushStyle;
+ short b;
+
+ b = rSHD.GetFore();
+ if ( b >= 17 )
+ b = 0;
+ nFore = eSwWW8ColA[b];
+ // Vordergrund: Auto = Schwarz
+ b = rSHD.GetBack();
+ if( b >= 17 )
+ b = 0;
+ if( b == 0 )
+ b = 8; // Hintergrund: Auto = Weiss
+ nBack = eSwWW8ColA[b];
+
+ b = rSHD.GetStyle( bVer67 );
+
+ if( b >= sizeof( eMSGrayScale ) / sizeof ( eMSGrayScale[ 0 ] ) )
+ b = 0;
+
+ nWW8BrushStyle = eMSGrayScale[b];
+
+ switch( nWW8BrushStyle )
+ {
+ case 0: // Null-Brush
+ aColor.SetColor( nBack );
+ break;
+ case 1000:
+ aColor.SetColor( nFore );
+ break;
+ default:
+ {
+ Color aForeColor = Color( nFore );
+ Color aBackColor = Color( nBack );
+ ULONG nRed = aForeColor.GetRed() * nWW8BrushStyle;
+ ULONG nGreen = aForeColor.GetGreen() * nWW8BrushStyle;
+ ULONG nBlue = aForeColor.GetBlue() * nWW8BrushStyle;
+ nRed += (ULONG)(aBackColor.GetRed() *(1000-nWW8BrushStyle));
+ nGreen += (ULONG)(aBackColor.GetGreen()*(1000-nWW8BrushStyle));
+ nBlue += (ULONG)(aBackColor.GetBlue() *(1000-nWW8BrushStyle));
+
+ aColor.SetColor( RGB_COLORDATA( nRed/1000, nGreen/1000, nBlue/1000 ) );
+ }
+ break;
+ }
+ // schwarzer Hintergrund -> weisse Schrift
+ bWhiteText = (nFore == COL_BLACK) && ( 800 <= nWW8BrushStyle )
+ || (nBack == COL_BLACK) && ( 200 >= nWW8BrushStyle );
+}
+
+
+void SwWW8ImplReader::Read_Shade( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen <= 0 )
+ { // Ende des Attributes
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_BACKGROUND );
+ if( bShdTxtCol )
+ {
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_CHRATR_COLOR ); // Zeichenfarbe auch
+ bShdTxtCol = FALSE;
+ }
+ }
+ else
+ {
+ WW8_SHD aSHD;
+ aSHD.SetWWValue( *(SVBT16*)pData );
+ SwWW8Shade aSh( bVer67, aSHD );
+
+ NewAttr( SvxBrushItem( aSh.aColor ) );
+
+ // weisse Schrift und nicht ueberattributiert
+ if( aSh.bWhiteText && !bTxtCol )
+ {
+ NewAttr( SvxColorItem( Color( COL_WHITE ) ) ); // -> weisse Schrift
+ bShdTxtCol = TRUE;
+ }
+ }
+}
+
+void SwWW8ImplReader::Read_Border( USHORT nId, BYTE* pData, short nLen )
+{
+ if( nLen < 0 )
+ {
+ if( bHasBorder )
+ {
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_BOX );
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_SHADOW );
+ bHasBorder = FALSE;
+ }
+ }
+ else if( !bHasBorder )
+ {
+ // die Borders auf allen 4 Seiten werden gebuendelt.
+ // dieses vereinfacht die Verwaltung, d.h. die
+ // Box muss nicht 4 mal auf den CtrlStack und wieder
+ // runter
+ bHasBorder = TRUE;
+
+ WW8_BRC5 aBrcs; // Top, Left, Bottom, Right, Between
+ BOOL bBorder;
+
+ if( pAktColl )
+ bBorder = ::lcl_ReadBorders( bVer67, aBrcs, 0, pStyles );
+ else
+ bBorder = ::lcl_ReadBorders( bVer67, aBrcs, pPlcxMan->GetPapPLCF() );
+
+ if( bBorder ) // Border
+ {
+ BOOL bIsB = IsBorder( aBrcs, TRUE );
+ if( !bApo || !bIsB || ( pWFlyPara && !pWFlyPara->bBorderLines ))
+ {
+ // in Apo keine Umrandungen *ein*-schalten, da ich
+ // sonst die Flyumrandungen doppelt bekomme
+ // JP 04.12.98: aber nur wenn am Fly ein gesetzt ist, keine
+ // uebernehmen. Sonst wird gar keine gesetzt!
+ // Bug #59619#
+
+ // auch wenn kein Rand gesetzt ist, muss das Attribut gesetzt
+ // werden, sonst ist kein hartes Ausschalten von Style-Attrs
+ // moeglich
+ SvxBoxItem aBox;
+ SetBorder( aBox, aBrcs, TRUE );
+
+ Rectangle aInnerDist;
+ GetBorderDistance( aBrcs, aInnerDist );
+
+ aBox.SetDistance( (USHORT)aInnerDist.Left(), BOX_LINE_LEFT );
+ aBox.SetDistance( (USHORT)aInnerDist.Top(), BOX_LINE_TOP );
+ aBox.SetDistance( (USHORT)aInnerDist.Right(), BOX_LINE_RIGHT );
+ aBox.SetDistance( (USHORT)aInnerDist.Bottom(), BOX_LINE_BOTTOM );
+
+ NewAttr( aBox );
+
+ SvxShadowItem aS;
+ if( SetShadow( aS, aBox, aBrcs ) )
+ NewAttr( aS );
+ }
+ }
+ }
+}
+
+void SwWW8ImplReader::Read_Hyphenation( USHORT, BYTE* pData, short nLen )
+{
+ // set Hyphenation flag
+ if( nLen <= 0 )
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_PARATR_HYPHENZONE );
+ else
+ {
+ SvxHyphenZoneItem aAttr(
+ *(SvxHyphenZoneItem*)GetFmtAttr( RES_PARATR_HYPHENZONE ) );
+
+ aAttr.SetHyphen( 0 == *pData ); // sic !
+
+ if( !*pData )
+ {
+ aAttr.GetMinLead() = 2;
+ aAttr.GetMinTrail() = 2;
+ aAttr.GetMaxHyphens() = 0;
+ }
+
+ NewAttr( aAttr );
+ }
+}
+
+void SwWW8ImplReader::Read_WidowControl( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen <= 0 )
+ {
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_PARATR_WIDOWS );
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_PARATR_ORPHANS );
+ }
+ else
+ {
+ BYTE nL = ( *pData & 1 ) ? 2 : 0;
+
+ NewAttr( SvxWidowsItem( nL ) ); // Aus -> nLines = 0
+ NewAttr( SvxOrphansItem( nL ) );
+
+ if( pAktColl && pStyles ) // Style-Def ?
+ pStyles->bWidowsChanged = TRUE; // merken zur Simulation
+ // Default-Widows
+ }
+}
+
+void SwWW8ImplReader::Read_KeepLines( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen <= 0 )
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_PARATR_SPLIT );
+ else
+ NewAttr( SvxFmtSplitItem( ( *pData & 1 ) == 0 ) );
+}
+
+void SwWW8ImplReader::Read_KeepParas( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen <= 0 )
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_KEEP );
+ else
+ NewAttr( SvxFmtKeepItem( ( *pData & 1 ) != 0 ) );
+}
+
+void SwWW8ImplReader::Read_BreakBefore( USHORT, BYTE* pData, short nLen )
+{
+ if( nLen <= 0 )
+ pCtrlStck->SetAttr( *pPaM->GetPoint(), RES_BREAK );
+ else
+ NewAttr( SvxFmtBreakItem(
+ ( *pData & 1 ) ? SVX_BREAK_PAGE_BEFORE : SVX_BREAK_NONE ) );
+}
+
+void SwWW8ImplReader::Read_ApoPPC( USHORT, BYTE* pData, short nLen )
+{
+ if( pAktColl ){ // nur fuer Styledef, sonst anders geloest
+ SwWW8StyInf& rSI = pCollA[nAktColl];
+ WW8FlyPara* pFly = rSI.pWWFly;
+ if( !pFly ){
+ pFly = ( rSI.nBase >= nColls ) ?
+ new WW8FlyPara( bVer67 ) // !based on
+ : new WW8FlyPara( bVer67, pCollA[rSI.nBase].pWWFly ); // based on
+ pCollA[nAktColl].pWWFly = pFly;
+ if( !pFly->Read( pData, pStyles ) ) // Lese Style-Apo-Parameter
+ DELETEZ( pCollA[nAktColl].pWWFly );
+ }
+ }
+}
+
+/***************************************************************************
+# Seiten - Attribute werden nicht mehr als Attribute gehandhabt
+# ( ausser OLST )
+#**************************************************************************/
+
+
+/***************************************************************************
+# Arrays zum Lesen der erweiterten ( selbstdefinierten ) SPRMs
+#**************************************************************************/
+typedef long (SwWW8ImplReader:: *FNReadRecordExt)( WW8PLCFManResult*, BOOL );
+
+static FNReadRecordExt aWwSprmTab2[] = {
+/* 0 (256) */ &SwWW8ImplReader::Read_Ftn, // FootNote
+/* 1 (257) */ &SwWW8ImplReader::Read_Ftn, // EndNote
+/* 2 (258) */ &SwWW8ImplReader::Read_Field, // Feld
+/* 3 (259) */ &SwWW8ImplReader::Read_Book, // Bookmark
+/* 4 (260) */ &SwWW8ImplReader::Read_Piece, // Piece-Anfang / Ende
+/* 5 (261) */ &SwWW8ImplReader::Read_And // Annotation
+};
+
+long SwWW8ImplReader::ImportExtSprm( WW8PLCFManResult* pRes, BOOL bStart )
+{
+ if( pRes->nSprmId < 280 )
+ {
+ BYTE nIdx = pRes->nSprmId - 256;
+ if( nIdx < sizeof( aWwSprmTab2 ) / sizeof( *aWwSprmTab2 )
+ && aWwSprmTab2[nIdx] )
+ return (this->*aWwSprmTab2[nIdx])( pRes, bStart );
+ else
+ return 0;
+ }
+ else
+ return 0;
+}
+
+
+
+/***************************************************************************
+# Arrays zum Lesen der SPRMs
+#**************************************************************************/
+
+// Funktion zum Einlesen von Sprms. Par1: SprmId
+//typedef void (SwWW8ImplReader:: *FNReadRecord) ( BYTE, BYTE*, short );
+
+
+
+
+typedef void (SwWW8ImplReader:: *FNReadRecord)( USHORT, BYTE*, short );
+
+struct SprmReadInfo
+{
+ USHORT nId;
+ FNReadRecord pReadFnc;
+};
+
+SprmReadInfo& WW8GetSprmReadInfo( USHORT nId );
+
+
+
+SprmReadInfo aSprmReadTab[] = {
+ 0, (FNReadRecord)0, // "??0" Default bzw. Error wird uebersprungen! ,
+ 2, &SwWW8ImplReader::Read_StyleCode, // "sprmPIstd", // pap.istd (style code)
+
+ 3, (FNReadRecord)0, // "sprmPIstdPermute", // pap.istd permutation
+ 4, (FNReadRecord)0, // "sprmPIncLv1", // pap.istddifference
+ 5, &SwWW8ImplReader::Read_Justify, // "sprmPJc", // pap.jc (justification)
+ 6, (FNReadRecord)0, // "sprmPFSideBySide", // pap.fSideBySide
+ 7, &SwWW8ImplReader::Read_KeepLines, // "sprmPFKeep", // pap.fKeep
+ 8, &SwWW8ImplReader::Read_KeepParas, // "sprmPFKeepFollow ", // pap.fKeepFollow
+ 9, &SwWW8ImplReader::Read_BreakBefore, // "sprmPPageBreakBefore", // pap.fPageBreakBefore
+
+ 10, (FNReadRecord)0, // "sprmPBrcl", // pap.brcl
+ 11, (FNReadRecord)0, // "sprmPBrcp ", // pap.brcp
+ 12, &SwWW8ImplReader::Read_ANLevelDesc, // "sprmPAnld", // pap.anld (ANLD structure)
+ 13, &SwWW8ImplReader::Read_ANLevelNo, // "sprmPNLvlAnm", // pap.nLvlAnm nn
+ 14, &SwWW8ImplReader::Read_NoLineNumb, // "sprmPFNoLineNumb", //ap.fNoLnn
+
+//??
+ 15, &SwWW8ImplReader::Read_Tab, // "?sprmPChgTabsPapx", // pap.itbdMac, ...
+ 16, &SwWW8ImplReader::Read_LR, // "sprmPDxaRight", // pap.dxaRight
+ 17, &SwWW8ImplReader::Read_LR, // "sprmPDxaLeft", // pap.dxaLeft
+ 18, (FNReadRecord)0, // "sprmPNest", // pap.dxaLeft
+ 19, &SwWW8ImplReader::Read_LR, // "sprmPDxaLeft1", // pap.dxaLeft1
+
+ 20, &SwWW8ImplReader::Read_LineSpace, // "sprmPDyaLine", // pap.lspd an LSPD
+ 21, &SwWW8ImplReader::Read_UL, // "sprmPDyaBefore", // pap.dyaBefore
+ 22, &SwWW8ImplReader::Read_UL, // "sprmPDyaAfter", // pap.dyaAfter
+
+//??
+ 23, (FNReadRecord)0, // "?sprmPChgTabs", // pap.itbdMac, pap.rgdxaTab, ...
+ 24, (FNReadRecord)0, // "sprmPFInTable", // pap.fInTable
+ 25, &SwWW8ImplReader::Read_TabRowEnd, // "sprmPTtp", // pap.fTtp
+ 26, (FNReadRecord)0, // "sprmPDxaAbs", // pap.dxaAbs
+ 27, (FNReadRecord)0, // "sprmPDyaAbs", // pap.dyaAbs
+ 28, (FNReadRecord)0, // "sprmPDxaWidth", // pap.dxaWidth
+ 29, &SwWW8ImplReader::Read_ApoPPC, // "sprmPPc", // pap.pcHorz, pap.pcVert
+
+ 30, (FNReadRecord)0, // "sprmPBrcTop10", // pap.brcTop BRC10
+ 31, (FNReadRecord)0, // "sprmPBrcLeft10", // pap.brcLeft BRC10
+ 32, (FNReadRecord)0, // "sprmPBrcBottom10", // pap.brcBottom BRC10
+
+ 33, (FNReadRecord)0, // "sprmPBrcRight10", // pap.brcRight BRC10
+ 34, (FNReadRecord)0, // "sprmPBrcBetween10", // pap.brcBetween BRC10
+ 35, (FNReadRecord)0, // "sprmPBrcBar10", // pap.brcBar BRC10
+ 36, (FNReadRecord)0, // "sprmPFromText10", // pap.dxaFromText dxa
+ 37, (FNReadRecord)0, // "sprmPWr", // pap.wr wr
+ 38, &SwWW8ImplReader::Read_Border, // "sprmPBrcTop", // pap.brcTop BRC
+ 39, &SwWW8ImplReader::Read_Border, // "sprmPBrcLeft", // pap.brcLeft BRC
+
+ 40, &SwWW8ImplReader::Read_Border, // "sprmPBrcBottom", // pap.brcBottom BRC
+ 41, &SwWW8ImplReader::Read_Border, // "sprmPBrcRight", // pap.brcRight BRC
+ 42, &SwWW8ImplReader::Read_Border, // "sprmPBrcBetween", // pap.brcBetween BRC
+ 43, (FNReadRecord)0, // "sprmPBrcBar",//pap.brcBar BRC word
+ 44, &SwWW8ImplReader::Read_Hyphenation, // "sprmPFNoAutoHyph",//pap.fNoAutoHyph
+ 45, (FNReadRecord)0, // "sprmPWHeightAbs",//pap.wHeightAbs w
+ 46, (FNReadRecord)0, // "sprmPDcs",//pap.dcs DCS
+ 47, &SwWW8ImplReader::Read_Shade, // "sprmPShd",//pap.shd SHD
+ 48, (FNReadRecord)0, // "sprmPDyaFromText",//pap.dyaFromText dya
+ 49, (FNReadRecord)0, // "sprmPDxaFromText",//pap.dxaFromText dxa
+
+ 50, (FNReadRecord)0, // "sprmPFLocked", // pap.fLocked 0 or 1 byte
+ 51, &SwWW8ImplReader::Read_WidowControl, // "sprmPFWidowControl", // pap.fWidowControl 0 or 1 byte
+
+//??
+ 52, (FNReadRecord)0, // "?sprmPRuler 52", //???
+ 53, (FNReadRecord)0, // "??53",
+ 54, (FNReadRecord)0, // "??54",
+ 55, (FNReadRecord)0, // "??55",
+ 56, (FNReadRecord)0, // "??56",
+ 57, (FNReadRecord)0, // "??57",
+ 58, (FNReadRecord)0, // "??58",
+ 59, (FNReadRecord)0, // "??59",
+
+ 60, (FNReadRecord)0, // "??60",
+ 61, (FNReadRecord)0, // "??61",
+ 62, (FNReadRecord)0, // "??62",
+ 63, (FNReadRecord)0, // "??63",
+ 64, (FNReadRecord)0, // "??64",
+ 65, &SwWW8ImplReader::Read_CFRMarkDel, // "sprmCFStrikeRM", // chp.fRMarkDel 1 or 0 bit
+ 66, &SwWW8ImplReader::Read_CFRMark, // "sprmCFRMark", // chp.fRMark 1 or 0 bit
+ 67, &SwWW8ImplReader::Read_FldVanish, // "sprmCFFldVanish", // chp.fFldVanish 1 or 0 bit
+ 68, &SwWW8ImplReader::Read_PicLoc, // "sprmCPicLocation", // chp.fcPic and chp.fSpec
+ 69, (FNReadRecord)0, // "sprmCIbstRMark", // chp.ibstRMark index into sttbRMark
+
+ 70, (FNReadRecord)0, // "sprmCDttmRMark", // chp.dttm DTTM long
+ 71, (FNReadRecord)0, // "sprmCFData", // chp.fData 1 or 0 bit
+ 72, (FNReadRecord)0, // "sprmCRMReason", // chp.idslRMReason an index to a table
+ 73, &SwWW8ImplReader::Read_CharSet, // "sprmCChse", // chp.fChsDiff and chp.chse see below 3 bytes
+ 74, &SwWW8ImplReader::Read_Symbol, // "sprmCSymbol", // chp.fSpec, chp.chSym and chp.ftcSym
+ 75, &SwWW8ImplReader::Read_Obj, // "sprmCFOle2", // chp.fOle2 1 or 0 bit
+ 76, (FNReadRecord)0, // "??76",
+ 77, (FNReadRecord)0, // "??77",
+ 78, (FNReadRecord)0, // "??78",
+ 79, (FNReadRecord)0, // "??79",
+
+ 80, &SwWW8ImplReader::Read_CColl, // "sprmCIstd", // chp.istd istd, see stylesheet definition short
+ 81, (FNReadRecord)0, // "sprmCIstdPermute", // chp.istd permutation vector (see below)
+ 82, (FNReadRecord)0, // "sprmCDefault", // whole CHP (see below) none variable length
+ 83, (FNReadRecord)0, // "sprmCPlain", // whole CHP (see below) none 0
+ 84, (FNReadRecord)0, // "??84",
+ 85, &SwWW8ImplReader::Read_BoldUsw, // "sprmCFBold", // chp.fBold 0,1, 128, or 129 (see below) byte
+ 86, &SwWW8ImplReader::Read_BoldUsw, // "sprmCFItalic", // chp.fItalic 0,1, 128, or 129 (see below) byte
+ 87, &SwWW8ImplReader::Read_BoldUsw, // "sprmCFStrike", // chp.fStrike 0,1, 128, or 129 (see below) byte
+ 88, &SwWW8ImplReader::Read_BoldUsw, // "sprmCFOutline", // chp.fOutline 0,1, 128, or 129 (see below) byte
+ 89, &SwWW8ImplReader::Read_BoldUsw, // "sprmCFShadow", // chp.fShadow 0,1, 128, or 129 (see below) byte
+
+ 90, &SwWW8ImplReader::Read_BoldUsw, // "sprmCFSmallCaps", // chp.fSmallCaps 0,1, 128, or 129 (see below) byte
+ 91, &SwWW8ImplReader::Read_BoldUsw, // "sprmCFCaps", // chp.fCaps 0,1, 128, or 129 (see below) byte
+
+ 92, &SwWW8ImplReader::Read_Invisible, // "sprmCFVanish", // chp.fVanish 0,1, 128, or 129 (see below) byte
+
+ 93, &SwWW8ImplReader::Read_FontCode, // "sprmCFtc", // chp.ftc ftc word
+ 94, &SwWW8ImplReader::Read_Underline, // "sprmCKul", // chp.kul kul byte
+ 95, (FNReadRecord)0, // "sprmCSizePos", // chp.hps, chp.hpsPos (see below) 3 bytes
+ 96, &SwWW8ImplReader::Read_Kern, // "sprmCDxaSpace", // chp.dxaSpace dxa word
+ 97, &SwWW8ImplReader::Read_Language, // "sprmCLid", // chp.lid LID word
+ 98, &SwWW8ImplReader::Read_TxtColor, // "sprmCIco", // chp.ico ico byte
+ 99, &SwWW8ImplReader::Read_FontSize, // "sprmCHps", // chp.hps hps word!
+
+
+ 100, (FNReadRecord)0, // "sprmCHpsInc", // chp.hps (see below) byte
+ 101, &SwWW8ImplReader::Read_SubSuperProp, // "sprmCHpsPos", // chp.hpsPos hps byte
+ 102, (FNReadRecord)0, // "sprmCHpsPosAdj", // chp.hpsPos hps (see below) byte
+
+//??
+ 103, &SwWW8ImplReader::Read_Majority, // "?sprmCMajority", // chp.fBold, chp.fItalic, chp.fSmallCaps, ...
+ 104, &SwWW8ImplReader::Read_SubSuper, // "sprmCIss", // chp.iss iss byte
+ 105, (FNReadRecord)0, // "sprmCHpsNew50", // chp.hps hps variable width, length always recorded as 2
+ 106, (FNReadRecord)0, // "sprmCHpsInc1", // chp.hps complex (see below) variable width, length always recorded as 2
+ 107, &SwWW8ImplReader::Read_FontKern, // "sprmCHpsKern", // chp.hpsKern hps short
+ 108, &SwWW8ImplReader::Read_Majority, // "sprmCMajority50", // chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, ...
+ 109, (FNReadRecord)0, // "sprmCHpsMul", // chp.hps percentage to grow hps short
+
+ 110, (FNReadRecord)0, // "sprmCCondHyhen", // chp.ysri ysri short
+ 111, (FNReadRecord)0, // "??111",
+ 112, (FNReadRecord)0, // "??112",
+ 113, (FNReadRecord)0, // "??113",
+ 114, (FNReadRecord)0, // "??114",
+ 115, (FNReadRecord)0, // "??115",
+ 116, (FNReadRecord)0, // "??116",
+ 117, &SwWW8ImplReader::Read_Special, // "sprmCFSpec", // chp.fSpec 1 or 0 bit
+ 118, &SwWW8ImplReader::Read_Obj, // "sprmCFObj", // chp.fObj 1 or 0 bit
+ 119, (FNReadRecord)0, // "sprmPicBrcl", // pic.brcl brcl (see PIC structure definition) byte
+
+ 120, (FNReadRecord)0, // "sprmPicScale", // pic.mx, pic.my, pic.dxaCropleft,
+ 121, (FNReadRecord)0, // "sprmPicBrcTop", // pic.brcTop BRC word
+ 122, (FNReadRecord)0, // "sprmPicBrcLeft", // pic.brcLeft BRC word
+ 123, (FNReadRecord)0, // "sprmPicBrcBottom", // pic.brcBottom BRC word
+ 124, (FNReadRecord)0, // "sprmPicBrcRight", // pic.brcRight BRC word
+ 125, (FNReadRecord)0, // "??125",
+ 126, (FNReadRecord)0, // "??126",
+ 127, (FNReadRecord)0, // "??127",
+ 128, (FNReadRecord)0, // "??128",
+ 129, (FNReadRecord)0, // "??129",
+
+ 130, (FNReadRecord)0, // "??130",
+ 131, (FNReadRecord)0, // "sprmSScnsPgn", // sep.cnsPgn cns byte
+ 132, (FNReadRecord)0, // "sprmSiHeadingPgn", // sep.iHeadingPgn heading number level byte
+ 133, &SwWW8ImplReader::Read_OLST, // "sprmSOlstAnm", // sep.olstAnm OLST variable length
+ 134, (FNReadRecord)0, // "??135",
+ 135, (FNReadRecord)0, // "??135",
+ 136, (FNReadRecord)0, // "sprmSDxaColWidth", // sep.rgdxaColWidthSpacing complex (see below) 3 bytes
+ 137, (FNReadRecord)0, // "sprmSDxaColSpacing", // sep.rgdxaColWidthSpacing complex (see below) 3 bytes
+ 138, (FNReadRecord)0, // "sprmSFEvenlySpaced", // sep.fEvenlySpaced 1 or 0 byte
+ 139, (FNReadRecord)0, // "sprmSFProtected", // sep.fUnlocked 1 or 0 byte
+ 140, (FNReadRecord)0, // "sprmSDmBinFirst", // sep.dmBinFirst word
+ 141, (FNReadRecord)0, // "sprmSDmBinOther", // sep.dmBinOther word
+ 142, (FNReadRecord)0, // "sprmSBkc", // sep.bkc bkc byte BreakCode
+ 143, (FNReadRecord)0, // "sprmSFTitlePage", // sep.fTitlePage 0 or 1 byte
+ 144, (FNReadRecord)0, // "sprmSCcolumns", // sep.ccolM1 # of cols - 1 word
+ 145, (FNReadRecord)0, // "sprmSDxaColumns", // sep.dxaColumns dxa word
+ 146, (FNReadRecord)0, // "sprmSFAutoPgn", // sep.fAutoPgn obsolete byte
+ 147, (FNReadRecord)0, // "sprmSNfcPgn", // sep.nfcPgn nfc byte
+ 148, (FNReadRecord)0, // "sprmSDyaPgn", // sep.dyaPgn dya short
+ 149, (FNReadRecord)0, // "sprmSDxaPgn", // sep.dxaPgn dya short
+
+ 150, (FNReadRecord)0, // "sprmSFPgnRestart", // sep.fPgnRestart 0 or 1 byte
+ 151, (FNReadRecord)0, // "sprmSFEndnote", // sep.fEndnote 0 or 1 byte
+ 152, (FNReadRecord)0, // "sprmSLnc", // sep.lnc lnc byte
+ 153, (FNReadRecord)0, // "sprmSGprfIhdt", // sep.grpfIhdt grpfihdt (see Headers and Footers topic) byte
+ 154, (FNReadRecord)0, // "sprmSNLnnMod", // sep.nLnnMod non-neg int. word
+
+ 155, (FNReadRecord)0, // "sprmSDxaLnn", // sep.dxaLnn dxa word
+ 156, (FNReadRecord)0, // "sprmSDyaHdrTop", // sep.dyaHdrTop dya word
+ 157, (FNReadRecord)0, // "sprmSDyaHdrBottom", // sep.dyaHdrBottom dya word
+ 158, (FNReadRecord)0, // "sprmSLBetween", // sep.fLBetween 0 or 1 byte
+ 159, (FNReadRecord)0, // "sprmSVjc", // sep.vjc vjc byte
+
+ 160, (FNReadRecord)0, // "sprmSLnnMin", // sep.lnnMin lnn word
+ 161, (FNReadRecord)0, // "sprmSPgnStart", // sep.pgnStart pgn word
+ 162, (FNReadRecord)0, // "sprmSBOrientation", // sep.dmOrientPage dm byte
+
+//??
+ 163, (FNReadRecord)0, // "?SprmSBCustomize 163", //???
+ 164, (FNReadRecord)0, // "sprmSXaPage", // sep.xaPage xa word
+ 165, (FNReadRecord)0, // "sprmSYaPage", // sep.yaPage ya word
+ 166, (FNReadRecord)0, // "sprmSDxaLeft", // sep.dxaLeft dxa word
+ 167, (FNReadRecord)0, // "sprmSDxaRight", // sep.dxaRight dxa word
+ 168, (FNReadRecord)0, // "sprmSDyaTop", // sep.dyaTop dya word
+ 169, (FNReadRecord)0, // "sprmSDyaBottom", // sep.dyaBottom dya word
+
+ 170, (FNReadRecord)0, // "sprmSDzaGutter", // sep.dzaGutter dza word
+ 171, (FNReadRecord)0, // "sprmSDMPaperReq", // sep.dmPaperReq dm word
+ 172, (FNReadRecord)0, // "??172",
+ 173, (FNReadRecord)0, // "??173",
+ 174, (FNReadRecord)0, // "??174",
+ 175, (FNReadRecord)0, // "??175",
+ 176, (FNReadRecord)0, // "??176",
+ 177, (FNReadRecord)0, // "??177",
+ 178, (FNReadRecord)0, // "??178",
+ 179, (FNReadRecord)0, // "??179",
+
+ 180, (FNReadRecord)0, // "??180",
+ 181, (FNReadRecord)0, // "??181",
+ 182, (FNReadRecord)0, // "sprmTJc", // tap.jc jc word (low order byte is significant)
+ 183, (FNReadRecord)0, // "sprmTDxaLeft", // tap.rgdxaCenter (see below) dxa word
+ 184, (FNReadRecord)0, // "sprmTDxaGapHalf", // tap.dxaGapHalf, tap.rgdxaCenter (see below) dxa word
+ 185, (FNReadRecord)0, // "sprmTFCantSplit", // tap.fCantSplit 1 or 0 byte
+ 186, (FNReadRecord)0, // "sprmTTableHeader", // tap.fTableHeader 1 or 0 byte
+ 187, (FNReadRecord)0, // "sprmTTableBorders", // tap.rgbrcTable complex(see below) 12 bytes
+ 188, (FNReadRecord)0, // "sprmTDefTable10", // tap.rgdxaCenter, tap.rgtc complex (see below) variable length
+ 189, (FNReadRecord)0, // "sprmTDyaRowHeight", // tap.dyaRowHeight dya word
+
+
+//??
+ 190, (FNReadRecord)0, // "?sprmTDefTable", // tap.rgtc complex (see below)
+
+//??
+ 191, (FNReadRecord)0, // "?sprmTDefTableShd", // tap.rgshd complex (see below)
+ 192, (FNReadRecord)0, // "sprmTTlp", // tap.tlp TLP 4 bytes
+ 193, (FNReadRecord)0, // "sprmTSetBrc", // tap.rgtc[].rgbrc complex (see below) 5 bytes
+ 194, (FNReadRecord)0, // "sprmTInsert", // tap.rgdxaCenter,tap.rgtc complex (see below) 4 bytes
+ 195, (FNReadRecord)0, // "sprmTDelete", // tap.rgdxaCenter, tap.rgtc complex (see below) word
+ 196, (FNReadRecord)0, // "sprmTDxaCol", // tap.rgdxaCenter complex (see below) 4 bytes
+ 197, (FNReadRecord)0, // "sprmTMerge", // tap.fFirstMerged, tap.fMerged complex (see below) word
+ 198, (FNReadRecord)0, // "sprmTSplit", // tap.fFirstMerged, tap.fMerged complex (see below) word
+ 199, (FNReadRecord)0, // "sprmTSetBrc10", // tap.rgtc[].rgbrc complex (see below) 5 bytes
+
+ 200, (FNReadRecord)0, // "sprmTSetShd", // tap.rgshd complex (see below) 4 bytes
+
+#if 0
+// ab hier Selbstdefinierte Ids
+
+/* 0 (256) */ &SwWW8ImplReader::Read_Ftn, // FootNote
+/* 1 (257) */ &SwWW8ImplReader::Read_Ftn, // EndNote
+/* 2 (258) */ &SwWW8ImplReader::Read_Field, // Feld
+/* 3 (259) */ &SwWW8ImplReader::Read_Book, // Bookmark
+/* 4 (260) */ &SwWW8ImplReader::Read_Piece // Piece-Anfang / Ende
+
+
+// ab hier Selbstdefinierte Ids
+
+ 256, (FnOut)0, "FootNote",
+ 257, (FnOut)0, "EndNote",
+ 258, (FnOut)0, "??258 selbstdef.",
+ 259, (FnOut)0, "??259 selbstdef.",
+ 260, (FnOut)0, "Field",
+#endif
+//- neue ab Ver8 ------------------------------------------------------------
+
+ 0x4600, &SwWW8ImplReader::Read_StyleCode, //"sprmPIstd" // pap.istd;istd (style code);short;
+ 0xC601, (FNReadRecord)0, //"sprmPIstdPermute" // pap.istd;permutation vector (see below);variable length;
+ 0x2602, (FNReadRecord)0, //"sprmPIncLvl" // pap.istd, pap.lvl;difference between istd of base PAP and istd of PAP to be produced (see below);byte;
+ 0x2403, &SwWW8ImplReader::Read_Justify, //"sprmPJc" // pap.jc;jc (justification);byte;
+ 0x2404, (FNReadRecord)0, //"sprmPFSideBySide" // pap.fSideBySide;0 or 1;byte;
+ 0x2405, &SwWW8ImplReader::Read_KeepLines, //"sprmPFKeep" // pap.fKeep;0 or 1;byte;
+ 0x2406, &SwWW8ImplReader::Read_KeepParas, //"sprmPFKeepFollow" // pap.fKeepFollow;0 or 1;byte;
+ 0x2407, &SwWW8ImplReader::Read_BreakBefore, //"sprmPFPageBreakBefore" // pap.fPageBreakBefore;0 or 1;byte;
+ 0x2408, (FNReadRecord)0, //"sprmPBrcl" // pap.brcl;brcl;byte;
+ 0x2409, (FNReadRecord)0, //"sprmPBrcp" // pap.brcp;brcp;byte;
+ 0x260A, &SwWW8ImplReader::Read_ListLevel, //"sprmPIlvl" // pap.ilvl;ilvl;byte;
+ 0x460B, &SwWW8ImplReader::Read_LFOPosition, //"sprmPIlfo" // pap.ilfo;ilfo (list index) ;short;
+ 0x240C, &SwWW8ImplReader::Read_NoLineNumb, //"sprmPFNoLineNumb" // pap.fNoLnn;0 or 1;byte;
+ 0xC60D, &SwWW8ImplReader::Read_Tab, //"sprmPChgTabsPapx" // pap.itbdMac, pap.rgdxaTab, pap.rgtbd;complex - see below;variable length
+ 0x840E, &SwWW8ImplReader::Read_LR, //"sprmPDxaRight" // pap.dxaRight;dxa;word;
+ 0x840F, &SwWW8ImplReader::Read_LR, //"sprmPDxaLeft" // pap.dxaLeft;dxa;word;
+ 0x4610, (FNReadRecord)0, //"sprmPNest" // pap.dxaLeft;dxa-see below;word;
+ 0x8411, &SwWW8ImplReader::Read_LR, //"sprmPDxaLeft1" // pap.dxaLeft1;dxa;word;
+ 0x6412, &SwWW8ImplReader::Read_LineSpace, //"sprmPDyaLine" // pap.lspd;an LSPD, a long word structure consisting of a short of dyaLine followed by a short of fMultLinespace - see below;long;
+ 0xA413, &SwWW8ImplReader::Read_UL, //"sprmPDyaBefore" // pap.dyaBefore;dya;word;
+ 0xA414, &SwWW8ImplReader::Read_UL, //"sprmPDyaAfter" // pap.dyaAfter;dya;word;
+ 0xC615, (FNReadRecord)0, //"sprmPChgTabs" // pap.itbdMac, pap.rgdxaTab, pap.rgtbd;complex - see below;variable length;
+ 0x2416, (FNReadRecord)0, //"sprmPFInTable" // pap.fInTable;0 or 1;byte;
+ 0x2417, &SwWW8ImplReader::Read_TabRowEnd, //"sprmPFTtp" // // pap.fTtp;0 or 1;byte;
+ 0x8418, (FNReadRecord)0, //"sprmPDxaAbs" // pap.dxaAbs;dxa;word;
+ 0x8419, (FNReadRecord)0, //"sprmPDyaAbs" // pap.dyaAbs;dya;word;
+ 0x841A, (FNReadRecord)0, //"sprmPDxaWidth" // pap.dxaWidth;dxa;word;
+ 0x261B, &SwWW8ImplReader::Read_ApoPPC, //"sprmPPc" // pap.pcHorz, pap.pcVert;complex - see below;byte;
+ 0x461C, (FNReadRecord)0, //"sprmPBrcTop10" // pap.brcTop;BRC10;word;
+ 0x461D, (FNReadRecord)0, //"sprmPBrcLeft10" // pap.brcLeft;BRC10;word;
+ 0x461E, (FNReadRecord)0, //"sprmPBrcBottom10" // pap.brcBottom;BRC10;word;
+ 0x461F, (FNReadRecord)0, //"sprmPBrcRight10" // pap.brcRight;BRC10;word;
+ 0x4620, (FNReadRecord)0, //"sprmPBrcBetween10" // pap.brcBetween;BRC10;word;
+ 0x4621, (FNReadRecord)0, //"sprmPBrcBar10" // pap.brcBar;BRC10;word;
+ 0x4622, (FNReadRecord)0, //"sprmPDxaFromText10" // pap.dxaFromText;dxa;word;
+ 0x2423, (FNReadRecord)0, //"sprmPWr" // pap.wr;wr (see description of PAP for definition;byte;
+ 0x6424, &SwWW8ImplReader::Read_Border, //"sprmPBrcTop" // pap.brcTop;BRC;long;
+ 0x6425, &SwWW8ImplReader::Read_Border, //"sprmPBrcLeft" // pap.brcLeft;BRC;long;
+ 0x6426, &SwWW8ImplReader::Read_Border, //"sprmPBrcBottom" // pap.brcBottom;BRC;long;
+ 0x6427, &SwWW8ImplReader::Read_Border, //"sprmPBrcRight" // pap.brcRight;BRC;long;
+ 0x6428, &SwWW8ImplReader::Read_Border, //"sprmPBrcBetween" // pap.brcBetween;BRC;long;
+ 0x6629, (FNReadRecord)0, //"sprmPBrcBar" // pap.brcBar;BRC;long;
+ 0x242A, &SwWW8ImplReader::Read_Hyphenation, //"sprmPFNoAutoHyph" // pap.fNoAutoHyph;0 or 1;byte;
+ 0x442B, (FNReadRecord)0, //"sprmPWHeightAbs" // pap.wHeightAbs;w;word;
+ 0x442C, (FNReadRecord)0, //"sprmPDcs" // pap.dcs;DCS;short;
+ 0x442D, &SwWW8ImplReader::Read_Shade, //"sprmPShd" // pap.shd;SHD;word;
+ 0x842E, (FNReadRecord)0, //"sprmPDyaFromText" // pap.dyaFromText;dya;word;
+ 0x842F, (FNReadRecord)0, //"sprmPDxaFromText" // pap.dxaFromText;dxa;word;
+ 0x2430, (FNReadRecord)0, //"sprmPFLocked" // pap.fLocked;0 or 1;byte;
+ 0x2431, &SwWW8ImplReader::Read_WidowControl, //"sprmPFWidowControl" // pap.fWidowControl;0 or 1;byte;
+ 0xC632, (FNReadRecord)0, //"sprmPRuler" // ;;variable length;
+ 0x2433, (FNReadRecord)0, //"sprmPFKinsoku" // pap.fKinsoku;0 or 1;byte;
+ 0x2434, (FNReadRecord)0, //"sprmPFWordWrap" // pap.fWordWrap;0 or 1;byte;
+ 0x2435, (FNReadRecord)0, //"sprmPFOverflowPunct" // pap.fOverflowPunct;0 or 1;byte;
+ 0x2436, (FNReadRecord)0, //"sprmPFTopLinePunct" // pap.fTopLinePunct;0 or 1;byte;
+ 0x2437, (FNReadRecord)0, //"sprmPFAutoSpaceDE" // pap.fAutoSpaceDE;0 or 1;byte;
+ 0x2438, (FNReadRecord)0, //"sprmPFAutoSpaceDN" // pap.fAutoSpaceDN;0 or 1;byte;
+ 0x4439, (FNReadRecord)0, //"sprmPWAlignFont" // pap.wAlignFont;iFa (see description of PAP for definition);word;
+ 0x443A, (FNReadRecord)0, //"sprmPFrameTextFlow" // pap.fVertical pap.fBackward pap.fRotateFont;complex (see description of PAP for definition);word;
+ 0x243B, (FNReadRecord)0, //"sprmPISnapBaseLine" // obsolete: not applicable in Word97 and later versions;;byte;
+ 0xC63E, &SwWW8ImplReader::Read_ANLevelDesc, //"sprmPAnld" // pap.anld;;variable length;
+ 0xC63F, (FNReadRecord)0, //"sprmPPropRMark" // pap.fPropRMark;complex (see below);variable length;
+ 0x2640, &SwWW8ImplReader::Read_POutLvl, //"sprmPOutLvl" // pap.lvl;has no effect if pap.istd is < 1 or is > 9;byte;
+ 0x2441, (FNReadRecord)0, //"sprmPFBiDi" // ;;byte;
+ 0x2443, (FNReadRecord)0, //"sprmPFNumRMIns" // pap.fNumRMIns;1 or 0;bit;
+ 0x2444, (FNReadRecord)0, //"sprmPCrLf" // ;;byte;
+ 0xC645, (FNReadRecord)0, //"sprmPNumRM" // pap.numrm;;variable length;
+ 0x6645, (FNReadRecord)0, //"sprmPHugePapx" // see below;fc in the data stream to locate the huge grpprl (see below);long;
+ 0x6646, (FNReadRecord)0, //"sprmPHugePapx" // see below;fc in the data stream to locate the huge grpprl (see below);long;
+ 0x2447, (FNReadRecord)0, //"sprmPFUsePgsuSettings" // pap.fUsePgsuSettings;1 or 0;byte;
+ 0x2448, (FNReadRecord)0, //"sprmPFAdjustRight" // pap.fAdjustRight;1 or 0;byte;
+ 0x0800, &SwWW8ImplReader::Read_CFRMarkDel, //"sprmCFRMarkDel" // chp.fRMarkDel;1 or 0;bit;
+ 0x0801, &SwWW8ImplReader::Read_CFRMark, //"sprmCFRMark" // chp.fRMark;1 or 0;bit;
+ 0x0802, &SwWW8ImplReader::Read_FldVanish, //"sprmCFFldVanish" // chp.fFldVanish;1 or 0;bit;
+ 0x6A03, &SwWW8ImplReader::Read_PicLoc, //"sprmCPicLocation" // chp.fcPic and chp.fSpec;see below;variable length, length recorded is always 4;
+ 0x4804, (FNReadRecord)0, //"sprmCIbstRMark" // chp.ibstRMark;index into sttbRMark;short;
+ 0x6805, (FNReadRecord)0, //"sprmCDttmRMark" // chp.dttmRMark;DTTM;long;
+ 0x0806, (FNReadRecord)0, //"sprmCFData" // chp.fData;1 or 0;bit;
+ 0x4807, (FNReadRecord)0, //"sprmCIdslRMark" // chp.idslRMReason;an index to a table of strings defined in Word 6.0 executables;short;
+ 0xEA08, &SwWW8ImplReader::Read_CharSet, //"sprmCChs" // chp.fChsDiff and chp.chse;see below;3 bytes;
+ 0x6A09, &SwWW8ImplReader::Read_Symbol, //"sprmCSymbol" // chp.fSpec, chp.xchSym and chp.ftcSym;see below;variable length, length recorded is always 4;
+ 0x080A, &SwWW8ImplReader::Read_Obj, //"sprmCFOle2" // chp.fOle2;1 or 0;bit;
+//0x480B, obsolete,"sprmCIdCharType", // obsolete: not applicable in Word97 and later versions;;;
+ 0x2A0C, &SwWW8ImplReader::Read_CharHighlight, //"sprmCHighlight" // chp.fHighlight, chp.icoHighlight;ico (fHighlight is set to 1 iff ico is not 0);byte;
+ 0x680E, &SwWW8ImplReader::Read_PicLoc, //"sprmCObjLocation" // chp.fcObj;FC;long;
+//0x2A10, ? ? ? , "sprmCFFtcAsciSymb", // ;;;
+ 0x4A30, &SwWW8ImplReader::Read_CColl, //"sprmCIstd" // chp.istd;istd, see stylesheet definition;short;
+ 0xCA31, (FNReadRecord)0, //"sprmCIstdPermute" // chp.istd;permutation vector (see below);variable length;
+ 0x2A32, (FNReadRecord)0, //"sprmCDefault" // whole CHP (see below);none;variable length;
+ 0x2A33, (FNReadRecord)0, //"sprmCPlain" // whole CHP (see below);none; Laenge: 0;
+//0x2A34, ? ? ?, "sprmCKcd", // ;;;
+
+ 0x0835, &SwWW8ImplReader::Read_BoldUsw, //"sprmCFBold" // chp.fBold;0,1, 128, or 129 (see below);byte;
+ 0x0836, &SwWW8ImplReader::Read_BoldUsw, //"sprmCFItalic" // chp.fItalic;0,1, 128, or 129 (see below);byte;
+ 0x0837, &SwWW8ImplReader::Read_BoldUsw, //"sprmCFStrike" // chp.fStrike;0,1, 128, or 129 (see below);byte;
+ 0x0838, &SwWW8ImplReader::Read_BoldUsw, //"sprmCFOutline" // chp.fOutline;0,1, 128, or 129 (see below);byte;
+ 0x0839, &SwWW8ImplReader::Read_BoldUsw, //"sprmCFShadow" // chp.fShadow;0,1, 128, or 129 (see below);byte;
+ 0x083A, &SwWW8ImplReader::Read_BoldUsw, //"sprmCFSmallCaps" // chp.fSmallCaps;0,1, 128, or 129 (see below);byte;
+ 0x083B, &SwWW8ImplReader::Read_BoldUsw, //"sprmCFCaps" // chp.fCaps;0,1, 128, or 129 (see below);byte;
+
+ 0x083C, &SwWW8ImplReader::Read_Invisible, //"sprmCFVanish" // chp.fVanish;0,1, 128, or 129 (see below);byte;
+
+//0x4A3D, (FNReadRecord)0, //"sprmCFtcDefault" // ;ftc, only used internally, never stored in file;word;
+ 0x2A3E, &SwWW8ImplReader::Read_Underline, //"sprmCKul" // chp.kul;kul;byte;
+ 0xEA3F, (FNReadRecord)0, //"sprmCSizePos" // chp.hps, chp.hpsPos;(see below);3 bytes;
+ 0x8840, &SwWW8ImplReader::Read_Kern, //"sprmCDxaSpace" // chp.dxaSpace;dxa;word;
+ 0x4A41, &SwWW8ImplReader::Read_Language, //"sprmCLid" // ;only used internally never stored;word;
+ 0x2A42, &SwWW8ImplReader::Read_TxtColor, //"sprmCIco" // chp.ico;ico;byte;
+ 0x4A43, &SwWW8ImplReader::Read_FontSize, //"sprmCHps" // chp.hps;hps;byte;
+ 0x2A44, (FNReadRecord)0, //"sprmCHpsInc" // chp.hps;(see below);byte;
+ 0x4845, &SwWW8ImplReader::Read_SubSuperProp, //"sprmCHpsPos" // chp.hpsPos;hps;byte;
+ 0x2A46, (FNReadRecord)0, //"sprmCHpsPosAdj" // chp.hpsPos;hps (see below);byte;
+ 0xCA47, &SwWW8ImplReader::Read_Majority, //"sprmCMajority" // chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, chp.fStrike, chp.fCaps, chp.rgftc, chp.hps, chp.hpsPos, chp.kul, chp.dxaSpace, chp.ico, chp.rglid;complex (see below);variable length, length byte plus size of following grpprl;
+ 0x2A48, &SwWW8ImplReader::Read_SubSuper, //"sprmCIss" // chp.iss;iss;byte;
+ 0xCA49, (FNReadRecord)0, //"sprmCHpsNew50" // chp.hps;hps;variable width, length always recorded as 2;
+ 0xCA4A, (FNReadRecord)0, //"sprmCHpsInc1" // chp.hps;complex (see below);variable width, length always recorded as 2;
+ 0x484B, &SwWW8ImplReader::Read_FontKern, //"sprmCHpsKern" // chp.hpsKern;hps;short;
+ 0xCA4C, &SwWW8ImplReader::Read_Majority, //"sprmCMajority50" // chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, chp.fStrike, chp.fCaps, chp.ftc, chp.hps, chp.hpsPos, chp.kul, chp.dxaSpace, chp.ico,;complex (see below);variable length;
+ 0x4A4D, (FNReadRecord)0, //"sprmCHpsMul" // chp.hps;percentage to grow hps;short;
+ 0x484E, (FNReadRecord)0, //"sprmCYsri" // chp.ysri;ysri;short;
+ 0x4A4F, &SwWW8ImplReader::Read_FontCode, //"sprmCRgFtc0" // chp.rgftc[0];ftc for ASCII text (see below);short;
+ 0x4A50, &SwWW8ImplReader::Read_FontCode, //"sprmCRgFtc1" // chp.rgftc[1];ftc for Far East text (see below);short;
+ 0x4A51, &SwWW8ImplReader::Read_FontCode, //"sprmCRgFtc2" // chp.rgftc[2];ftc for non-Far East text (see below);short;
+//0x4852, ? ? ? , "sprmCCharScale", // ;;;
+ 0x2A53, &SwWW8ImplReader::Read_BoldUsw, //"sprmCFDStrike" // chp.fDStrike;;byte;
+ 0x0854, (FNReadRecord)0, //"sprmCFImprint" // chp.fImprint;1 or 0;bit;
+ 0x0855, &SwWW8ImplReader::Read_Special, //"sprmCFSpec" // chp.fSpec ;1 or 0;bit;
+ 0x0856, &SwWW8ImplReader::Read_Obj, //"sprmCFObj" // chp.fObj;1 or 0;bit;
+ 0xCA57, &SwWW8ImplReader::Read_CPropRMark, //"sprmCPropRMark" // chp.fPropRMark, chp.ibstPropRMark, chp.dttmPropRMark;Complex (see below);variable length always recorded as 7 bytes;
+ 0x0858, (FNReadRecord)0, //"sprmCFEmboss" // chp.fEmboss;1 or 0;bit;
+ 0x2859, (FNReadRecord)0, //"sprmCSfxText" // chp.sfxtText;text animation;byte;
+//0x085A, ? ? ? , "sprmCFBiDi", // ;;;
+//0x085B, ? ? ? , "sprmCFDiacColor", // ;;;
+//0x085C, ? ? ? , "sprmCFBoldBi", // ;;;
+//0x085D, ? ? ? , "sprmCFItalicBi", // ;;;
+//0x4A5E, ? ? ? , "sprmCFtcBi", // ;;;
+//0x485F, ? ? ? , "sprmCLidBi", // ;;;
+//0x4A60, ? ? ? , "sprmCIcoBi", // ;;;
+//0x4A61, ? ? ? , "sprmCHpsBi", // ;;;
+ 0xCA62, (FNReadRecord)0, //"sprmCDispFldRMark" // chp.fDispFldRMark, chp.ibstDispFldRMark, chp.dttmDispFldRMark ;Complex (see below);variable length always recorded as 39 bytes;
+ 0x4863, (FNReadRecord)0, //"sprmCIbstRMarkDel" // chp.ibstRMarkDel;index into sttbRMark;short;
+ 0x6864, (FNReadRecord)0, //"sprmCDttmRMarkDel" // chp.dttmRMarkDel;DTTM;long;
+ 0x6865, (FNReadRecord)0, //"sprmCBrc" // chp.brc;BRC;long;
+ 0x4866, &SwWW8ImplReader::Read_CharShadow, //"sprmCShd" // chp.shd;SHD;short;
+ 0x4867, (FNReadRecord)0, //"sprmCIdslRMarkDel" // chp.idslRMReasonDel;an index to a table of strings defined in Word 6.0 executables;short;
+ 0x0868, (FNReadRecord)0, //"sprmCFUsePgsuSettings" // chp.fUsePgsuSettings;1 or 0;bit;
+ 0x486B, (FNReadRecord)0, //"sprmCCpg" // ;;word;
+ 0x486D, &SwWW8ImplReader::Read_Language, //"sprmCRgLid0" // chp.rglid[0];LID: for non-Far East text;word;
+ 0x486E, (FNReadRecord)0, //"sprmCRgLid1" // chp.rglid[1];LID: for Far East text;word;
+ 0x286F, (FNReadRecord)0, //"sprmCIdctHint" // chp.idctHint;IDCT: (see below);byte;
+ 0x2E00, (FNReadRecord)0, //"sprmPicBrcl" // pic.brcl;brcl (see PIC structure definition);byte;
+ 0xCE01, (FNReadRecord)0, //"sprmPicScale" // pic.mx, pic.my, pic.dxaCropleft, pic.dyaCropTop pic.dxaCropRight, pic.dyaCropBottom;Complex (see below);length byte plus 12 bytes;
+ 0x6C02, (FNReadRecord)0, //"sprmPicBrcTop" // pic.brcTop;BRC;long;
+ 0x6C03, (FNReadRecord)0, //"sprmPicBrcLeft" // pic.brcLeft;BRC;long;
+ 0x6C04, (FNReadRecord)0, //"sprmPicBrcBottom" // pic.brcBottom;BRC;long;
+ 0x6C05, (FNReadRecord)0, //"sprmPicBrcRight" // pic.brcRight;BRC;long;
+ 0x3000, (FNReadRecord)0, //"sprmScnsPgn" // sep.cnsPgn;cns;byte;
+ 0x3001, (FNReadRecord)0, //"sprmSiHeadingPgn" // sep.iHeadingPgn;heading number level;byte;
+ 0xD202, &SwWW8ImplReader::Read_OLST, //"sprmSOlstAnm" // sep.olstAnm;OLST;variable length;
+ 0xF203, (FNReadRecord)0, //"sprmSDxaColWidth" // sep.rgdxaColWidthSpacing;complex (see below);3 bytes;
+ 0xF204, (FNReadRecord)0, //"sprmSDxaColSpacing" // sep.rgdxaColWidthSpacing;complex (see below);3 bytes;
+ 0x3005, (FNReadRecord)0, //"sprmSFEvenlySpaced" // sep.fEvenlySpaced;1 or 0;byte;
+ 0x3006, (FNReadRecord)0, //"sprmSFProtected" // sep.fUnlocked;1 or 0;byte;
+ 0x5007, (FNReadRecord)0, //"sprmSDmBinFirst" // sep.dmBinFirst;;word;
+ 0x5008, (FNReadRecord)0, //"sprmSDmBinOther" // sep.dmBinOther;;word;
+ 0x3009, (FNReadRecord)0, //"sprmSBkc" // sep.bkc;bkc;byte;
+ 0x300A, (FNReadRecord)0, //"sprmSFTitlePage" // sep.fTitlePage;0 or 1;byte;
+ 0x500B, (FNReadRecord)0, //"sprmSCcolumns" // sep.ccolM1;# of cols - 1;word;
+ 0x900C, (FNReadRecord)0, //"sprmSDxaColumns" // sep.dxaColumns;dxa;word;
+ 0x300D, (FNReadRecord)0, //"sprmSFAutoPgn" // sep.fAutoPgn;obsolete;byte;
+ 0x300E, (FNReadRecord)0, //"sprmSNfcPgn" // sep.nfcPgn;nfc;byte;
+ 0xB00F, (FNReadRecord)0, //"sprmSDyaPgn" // sep.dyaPgn;dya;short;
+ 0xB010, (FNReadRecord)0, //"sprmSDxaPgn" // sep.dxaPgn;dya;short;
+ 0x3011, (FNReadRecord)0, //"sprmSFPgnRestart" // sep.fPgnRestart;0 or 1;byte;
+ 0x3012, (FNReadRecord)0, //"sprmSFEndnote" // sep.fEndnote;0 or 1;byte;
+ 0x3013, (FNReadRecord)0, //"sprmSLnc" // sep.lnc;lnc;byte;
+ 0x3014, (FNReadRecord)0, //"sprmSGprfIhdt" // sep.grpfIhdt;grpfihdt (see Headers and Footers topic);byte;
+ 0x5015, (FNReadRecord)0, //"sprmSNLnnMod" // sep.nLnnMod;non-neg int.;word;
+ 0x9016, (FNReadRecord)0, //"sprmSDxaLnn" // sep.dxaLnn;dxa;word;
+ 0xB017, (FNReadRecord)0, //"sprmSDyaHdrTop" // sep.dyaHdrTop;dya;word;
+ 0xB018, (FNReadRecord)0, //"sprmSDyaHdrBottom" // sep.dyaHdrBottom;dya;word;
+ 0x3019, (FNReadRecord)0, //"sprmSLBetween" // sep.fLBetween;0 or 1;byte;
+ 0x301A, (FNReadRecord)0, //"sprmSVjc" // sep.vjc;vjc;byte;
+ 0x501B, (FNReadRecord)0, //"sprmSLnnMin" // sep.lnnMin;lnn;word;
+ 0x501C, (FNReadRecord)0, //"sprmSPgnStart" // sep.pgnStart;pgn;word;
+ 0x301D, (FNReadRecord)0, //"sprmSBOrientation" // sep.dmOrientPage;dm;byte;
+//0x301E, ? ? ? , "sprmSBCustomize", // ;;;
+ 0xB01F, (FNReadRecord)0, //"sprmSXaPage" // sep.xaPage;xa;word;
+ 0xB020, (FNReadRecord)0, //"sprmSYaPage" // sep.yaPage;ya;word;
+ 0x2205, (FNReadRecord)0, //"sprmSDxaLeft" // sep.dxaLeft;dxa;word;
+ 0xB022, (FNReadRecord)0, //"sprmSDxaRight" // sep.dxaRight;dxa;word;
+ 0x9023, (FNReadRecord)0, //"sprmSDyaTop" // sep.dyaTop;dya;word;
+ 0x9024, (FNReadRecord)0, //"sprmSDyaBottom" // sep.dyaBottom;dya;word;
+ 0xB025, (FNReadRecord)0, //"sprmSDzaGutter" // sep.dzaGutter;dza;word;
+ 0x5026, (FNReadRecord)0, //"sprmSDmPaperReq" // sep.dmPaperReq;dm;word;
+ 0xD227, (FNReadRecord)0, //"sprmSPropRMark" // sep.fPropRMark, sep.ibstPropRMark, sep.dttmPropRMark ;complex (see below);variable length always recorded as 7 bytes;
+//0x3228, ? ? ? , "sprmSFBiDi", // ;;;
+//0x3229, ? ? ? , "sprmSFFacingCol", // ;;;
+//0x322A, ? ? ? , "sprmSFRTLGutter", // ;;;
+ 0x702B, (FNReadRecord)0, //"sprmSBrcTop" // sep.brcTop;BRC;long;
+ 0x702C, (FNReadRecord)0, //"sprmSBrcLeft" // sep.brcLeft;BRC;long;
+ 0x702D, (FNReadRecord)0, //"sprmSBrcBottom" // sep.brcBottom;BRC;long;
+ 0x702E, (FNReadRecord)0, //"sprmSBrcRight" // sep.brcRight;BRC;long;
+ 0x522F, (FNReadRecord)0, //"sprmSPgbProp" // sep.pgbProp;;word;
+ 0x7030, (FNReadRecord)0, //"sprmSDxtCharSpace" // sep.dxtCharSpace;dxt;long;
+ 0x9031, (FNReadRecord)0, //"sprmSDyaLinePitch" // sep.dyaLinePitch;dya; WRONG:long; RIGHT:short; !!!
+//0x5032, ? ? ? , "sprmSClm", // ;;;
+ 0x5033, (FNReadRecord)0, //"sprmSTextFlow" // sep.wTextFlow;complex (see below);short;
+ 0x5400, (FNReadRecord)0, //"sprmTJc" // tap.jc;jc;word (low order byte is significant);
+ 0x9601, (FNReadRecord)0, //"sprmTDxaLeft" // tap.rgdxaCenter (see below);dxa;word;
+ 0x9602, (FNReadRecord)0, //"sprmTDxaGapHalf" // tap.dxaGapHalf, tap.rgdxaCenter (see below);dxa;word;
+ 0x3403, (FNReadRecord)0, //"sprmTFCantSplit" // tap.fCantSplit;1 or 0;byte;
+ 0x3404, (FNReadRecord)0, //"sprmTTableHeader" // tap.fTableHeader;1 or 0;byte;
+ 0xD605, (FNReadRecord)0, //"sprmTTableBorders" // tap.rgbrcTable;complex(see below);24 bytes;
+ 0xD606, (FNReadRecord)0, //"sprmTDefTable10" // tap.rgdxaCenter, tap.rgtc;complex (see below);variable length;
+ 0x9407, (FNReadRecord)0, //"sprmTDyaRowHeight" // tap.dyaRowHeight;dya;word;
+ 0xD608, (FNReadRecord)0, //"sprmTDefTable" // tap.rgtc;complex (see below);;
+ 0xD609, (FNReadRecord)0, //"sprmTDefTableShd" // tap.rgshd;complex (see below);;
+ 0x740A, (FNReadRecord)0, //"sprmTTlp" // tap.tlp;TLP;4 bytes;
+//0x560B, ? ? ? , "sprmTFBiDi", // ;;;
+//0x740C, ? ? ? , "sprmTHTMLProps", // ;;;
+ 0xD620, (FNReadRecord)0, //"sprmTSetBrc" // tap.rgtc[].rgbrc;complex (see below);5 bytes;
+ 0x7621, &SwWW8ImplReader::Read_TabCellInsert, //"sprmTInsert" // tap.rgdxaCenter, tap.rgtc;complex (see below);4 bytes;
+ 0x5622, &SwWW8ImplReader::Read_TabCellDelete, //"sprmTDelete" // tap.rgdxaCenter, tap.rgtc;complex (see below);word;
+ 0x7623, (FNReadRecord)0, //"sprmTDxaCol" // tap.rgdxaCenter;complex (see below);4 bytes;
+ 0x5624, (FNReadRecord)0, //"sprmTMerge" // tap.fFirstMerged, tap.fMerged;complex (see below);word;
+ 0x5625, (FNReadRecord)0, //"sprmTSplit" // tap.fFirstMerged, tap.fMerged;complex (see below);word;
+ 0xD626, (FNReadRecord)0, //"sprmTSetBrc10" // tap.rgtc[].rgbrc;complex (see below);5 bytes;
+ 0x7627, (FNReadRecord)0, //"sprmTSetShd" // tap.rgshd;complex (see below);4 bytes;
+ 0x7628, (FNReadRecord)0, //"sprmTSetShdOdd" // tap.rgshd;complex (see below);4 bytes;
+ 0x7629, (FNReadRecord)0, //"sprmTTextFlow" // tap.rgtc[].fVerticaltap.rgtc[].fBackwardtap.rgtc[].fRotateFont;0 or 10 or 10 or 1;word;
+//0xD62A, ? ? ? , "sprmTDiagLine", // ;;;
+ 0xD62B, (FNReadRecord)0, //"sprmTVertMerge" // tap.rgtc[].vertMerge;complex (see below);variable length always recorded as 2 bytes;
+ 0xD62C, (FNReadRecord)0, //"sprmTVertAlign" // tap.rgtc[].vertAlign;complex (see below);variable length always recorded as 3 byte;
+};
+
+//-----------------------------------------
+// Hilfsroutinen : SPRM finden
+//-----------------------------------------
+
+static int
+#if defined( WNT )
+ __cdecl
+#endif
+#if defined( ICC )
+ _Optlink
+#endif
+ CompSprmReadId( const void *pFirst, const void *pSecond)
+{
+ return( ((SprmReadInfo*)pFirst )->nId - ((SprmReadInfo*)pSecond)->nId );
+}
+
+
+SprmReadInfo& WW8GetSprmReadInfo( USHORT nId )
+{
+ // ggfs. Tab sortieren
+ static BOOL bInit = FALSE;
+ if( !bInit )
+ {
+ qsort( (void*)aSprmReadTab,
+ sizeof( aSprmReadTab ) / sizeof (aSprmReadTab[ 0 ]),
+ sizeof( aSprmReadTab[ 0 ] ),
+ CompSprmReadId );
+ bInit = TRUE;
+ }
+ // Sprm heraussuchen
+ void* pFound;
+ SprmReadInfo aSrch;
+ aSrch.nId = nId;
+ if( 0 == ( pFound = bsearch( (BYTE *) &aSrch,
+ (void*) aSprmReadTab,
+ sizeof( aSprmReadTab ) / sizeof (aSprmReadTab[ 0 ]),
+ sizeof( aSprmReadTab[ 0 ] ),
+ CompSprmReadId )))
+ {
+ // im Fehlerfall auf Nulltes Element verweisen
+ pFound = (void*)aSprmReadTab;
+ }
+ return *(SprmReadInfo*) pFound;
+}
+
+
+
+//-----------------------------------------
+// Hilfsroutinen : SPRMs
+//-----------------------------------------
+
+void SwWW8ImplReader::EndSprm( USHORT nId )
+{
+ if( ( nId > 255 ) && ( nId < 0x0800 ) ) return;
+
+ SprmReadInfo& rSprm = WW8GetSprmReadInfo( nId );
+ /*
+ if ( aWwSprmTab[nId] == 0 )
+ return;
+
+ (this->*SprmReadInfo)( nId, 0, -1 );
+ */
+ if( rSprm.pReadFnc )
+ (this->*rSprm.pReadFnc)( nId, 0, -1 );
+}
+
+/*
+// ein bzw. zwei Byte am Anfang des Sprm sind die Id
+USHORT WW8GetSprmId( BYTE nVersion, BYTE* pSp, BYTE* pDelta )
+{
+ USHORT nId = 0;
+ switch( nVersion ) // beachte: 6 steht fuer "6 ODER 7", 7 steht fuer "NUR 7"
+ {
+ case 6:
+ case 7: nId = *pSp;
+ if( pDelta ) *pDelta = 0;
+ break;
+ case 8: nId = SVBT16ToShort( &pSp[ 0 ] );
+ if( pDelta ) *pDelta = 1;
+ break;
+ default:ASSERT( nId, "Es wurde vergessen, nVersion zu kodieren!" );
+ }
+ return nId;
+}
+*/
+
+short SwWW8ImplReader::ImportSprm( BYTE* pPos, short nSprmsLen, USHORT nId )
+{
+ BYTE nDelta;
+ BYTE nV = pWwFib->nVersion;
+
+ if( nId )
+ nDelta = bVer67 ? 0 : 1;
+ else
+ nId = WW8GetSprmId( nV, pPos, &nDelta );
+
+
+#ifdef DEBUG
+ ASSERT( nId != 0xff, "Sprm FF !!!!" );
+#endif //DEBUG
+
+ SprmReadInfo& rSprm = WW8GetSprmReadInfo( nId );
+
+
+ short nFixedLen = 1 + nDelta + WW8SprmDataOfs( nId );
+ short nL = WW8GetSprmSizeBrutto( nV, pPos, &nId );
+
+ if( rSprm.pReadFnc )
+ {
+ (this->*rSprm.pReadFnc)( nId, pPos + nFixedLen, nL - nFixedLen );
+ }
+ return nL;
+}
+
+
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8par6.cxx,v 1.1.1.1 2000-09-18 17:14:59 hr Exp $
+
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.104 2000/09/18 16:05:01 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.103 2000/08/24 13:20:54 kz
+ Max (long, long)
+
+ Revision 1.102 2000/08/21 15:03:09 khz
+ #77692# import page orientation
+
+ Revision 1.101 2000/08/18 09:48:33 khz
+ Import Line Numbering (restart on new section)
+
+ Revision 1.100 2000/08/18 06:47:29 khz
+ Import Line Numbering
+
+ Revision 1.99 2000/07/25 15:16:29 khz
+ #76811# read/write AutoHyphenation flag from/into Document Properties
+
+ Revision 1.98 2000/07/17 13:47:04 khz
+ #73987# check if sprmSNfcPgn should cause section change or not
+
+ Revision 1.97 2000/07/11 11:30:59 khz
+ #76673# prepare implementation of sprmTDelete and sprmTInsert
+
+ Revision 1.96 2000/06/28 08:07:48 khz
+ #70915# Insert Section if end-note with flag 'on end of section' found
+
+ Revision 1.95 2000/05/25 08:06:57 khz
+ Piece Table optimization, Unicode changes, Bugfixes
+
+ Revision 1.94 2000/05/16 12:03:50 jp
+ Changes for unicode
+
+ Revision 1.93 2000/05/16 11:23:49 khz
+ Unicode code-conversion
+
+ Revision 1.92 2000/03/21 10:37:08 khz
+ Task #74319# - do NOT close just inserted (still empty!) section in CreateSep()
+ - closing of old section may cause the creation of a new one
+ Task #66529# improve Header/Footer import
+
+ Revision 1.91 2000/03/10 14:27:15 khz
+ Task #65529# improve detection if Section is identical with previous
+
+ Revision 1.90 2000/03/03 15:20:02 os
+ StarView remainders removed
+
+ Revision 1.89 2000/02/23 17:43:03 cmc
+ #68832# Consider endnotes for header footer code
+
+ Revision 1.88 2000/02/22 14:55:19 khz
+ partial fix of #66832#
+
+ Revision 1.87 2000/02/21 13:08:30 jp
+ #70473# changes for unicode
+
+ Revision 1.86 2000/02/15 16:09:28 jp
+ #70473# changes for unicode
+
+ Revision 1.85 2000/02/09 11:43:31 khz
+ no Task Id: code cleaned for of annoying warning
+
+ Revision 1.84 2000/01/21 16:42:44 khz
+ Task #69155# set pPaM when inserting section with/without columns
+
+ Revision 1.83 2000/01/19 17:08:51 khz
+ Task #69178# never insert Fontattribute when skipping text content
+
+ Revision 1.82 2000/01/14 11:27:59 khz
+ Task #68832# -- CORRECTION: Task Number of rev below should have been: 68832 !
+
+ Revision 1.81 2000/01/14 11:11:34 khz
+ Task #71343# look for Sprm 37 (not 5) to recognize APO
+
+ Revision 1.80 2000/01/06 15:23:49 khz
+ Task #71411# Let last Section be unbalanced
+
+ Revision 1.79 1999/12/23 15:10:46 jp
+ Task #70915#: set Ftn-/End-TxtAtEnd attributes at sections
+
+ Revision 1.78 1999/12/23 14:03:42 khz
+ Task #68143# avoid attributes atached solely to Cell-End marks
+
+ Revision 1.77 1999/12/23 10:24:53 khz
+ Task #71209# avoid accessing pPageDesk if it's 0 ;-)
+
+ Revision 1.76 1999/12/22 18:03:35 khz
+ Task #70919# look if ParaStyle is different behind filed than it was before
+
+ Revision 1.75 1999/12/09 16:46:36 khz
+ Task #69180# allow Tabs if right of 1st-line-start OR right of paragraph margin
+
+ Revision 1.74 1999/12/07 14:28:56 khz
+ Task #69508# import sprmPHugePapx by reading DATA stream
+
+ Revision 1.73 1999/12/01 14:35:52 khz
+ Task #68488# Graphics in Sections with more than one Column
+
+ Revision 1.72 1999/11/25 12:28:37 khz
+ Task #68482# Store data in member *after* memset(this,0,...) in WW8FlyPara()
+
+ Revision 1.71 1999/11/24 12:33:15 khz
+ Task #66194# don't consider Sect-Properties to be unequal when one is protected
+
+ Revision 1.70 1999/11/12 15:29:25 khz
+ Task #69204#: prevent from inserting '?' when ConvertFromUnicode() fails
+
+ Revision 1.69 1999/11/12 13:05:03 jp
+ new: read sprmCHighlight
+
+ Revision 1.68 1999/11/02 15:59:49 khz
+ import new TOX_CONTENT and TOX_INDEX features (2)
+
+ Revision 1.67 1999/10/13 21:06:12 khz
+ Import Redlining (3)
+
+ Revision 1.66 1999/10/08 09:26:23 khz
+ Import Redlining
+
+ Revision 1.65 1999/09/10 15:36:35 khz
+ CharSet matching made by TENCINFO.H::rtl_getTextEncodingFromWindowsCharset()
+
+ Revision 1.64 1999/09/09 18:16:25 khz
+ CharSet matching now done in central methode WW8SCAN.HXX::WW8GetCharSet()
+
+ Revision 1.63 1999/08/10 13:16:26 KHZ
+ Task #66019# corrction of Font Family by analyzing Font Name
+
+*************************************************************************/
diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx
new file mode 100644
index 000000000000..a5010023a470
--- /dev/null
+++ b/sw/source/filter/ww8/ww8scan.cxx
@@ -0,0 +1,6326 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8scan.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+
+
+//#define KHZ_TEST0
+
+
+
+
+
+
+#include <stdlib.h>
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <string.h> // memset()
+
+#define _SVSTDARR_SHORTS
+#define _SVSTDARR_USHORTS
+#define _SVSTDARR_USHORTSSORT
+#define _SVSTDARR_SVSTRINGS
+#include <svtools/svstdarr.hxx>
+
+#ifndef _RTL_TENCINFO_H
+#include <rtl/tencinfo.h>
+#endif
+
+#ifdef DUMP
+
+#define ERR_SWG_READ_ERROR 1234
+#include <assert.h>
+#define ASSERT( a, b )
+
+#else // dump
+
+#ifndef _SWSWERROR_H
+#include <swerror.h> // ERR_WW6_...
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx> // ASSERT()
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx> // DELETEZ
+#endif
+
+#endif // dump
+
+#ifndef _DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+
+#ifndef _WW8SCAN_HXX
+#include <ww8scan.hxx>
+#endif
+
+
+
+
+#ifdef __WW8_NEEDS_PACK
+# pragma pack(2)
+#endif
+struct WW8_PCD1
+{
+ INT16 fNoParaLast; // when 1, means that piece contains no end of paragraph marks.
+ INT32 fc; // file offset of beginning of piece. The size of the
+ INT16 prm; // PRM contains either a single sprm or else an index number
+};
+#ifdef __WW8_NEEDS_PACK
+# pragma pack()
+# endif
+
+
+
+
+USHORT WW8GetSprmId( BYTE nVersion, BYTE* pSp, BYTE* pDelta );
+
+
+
+WW8SprmIter::WW8SprmIter(BYTE* pSprms_, short nLen_, BYTE nVersion_ )
+ : pSprms( pSprms_), nRemLen( nLen_), nVersion( nVersion_),
+ nDelta( ( 8 > nVersion ) ? 0 : 1 )
+{
+ UpdateMyMembers();
+}
+
+void WW8SprmIter::SetSprms(BYTE* pSprms_, short nLen_)
+{
+ pSprms = pSprms_;
+ nRemLen = nLen_;
+ UpdateMyMembers();
+}
+
+BYTE* WW8SprmIter::operator ++( int )
+{
+ if( 0 < nRemLen )
+ {
+ pSprms += nAktSizeBrutto;
+ nRemLen -= nAktSizeBrutto;
+ UpdateMyMembers();
+ }
+ return pSprms;
+}
+
+void WW8SprmIter::UpdateMyMembers()
+{
+ if( pSprms && (0 < nRemLen) )
+ {
+ nAktId = WW8GetSprmId( nVersion, pSprms );
+ pAktParams = pSprms + 1 + nDelta + WW8SprmDataOfs( nAktId );
+ nAktSizeBrutto = WW8GetSprmSizeBrutto( nVersion, pSprms, &nAktId );
+ }
+ else
+ {
+ nAktId = 0;
+ pAktParams = 0;
+ nAktSizeBrutto = 0;
+ nRemLen = 0;
+ }
+}
+
+
+
+//-----------------------------------------
+// temporaerer Test
+//-----------------------------------------
+// WW8PLCFx_PCDAttrs halten sich an WW8PLCF_Pcd fest und besitzen deshalb keine
+// eigenen Iteratoren. Alle sich auf Iteratoren beziehenden Methoden
+// sind deshalb Dummies.
+
+WW8PLCFx_PCDAttrs::WW8PLCFx_PCDAttrs( BYTE nVersion, WW8PLCFx_PCD* pPLCFx_PCD, WW8ScannerBase* pBase )
+: WW8PLCFx( nVersion, TRUE ),
+ pPcd( pPLCFx_PCD ),
+ pGrpprls( pBase->pPieceGrpprls ),
+ nGrpprls( pBase->nPieceGrpprls ),
+ pPcdI( pPLCFx_PCD->GetPLCFIter() )
+{
+}
+
+WW8PLCFx_PCDAttrs::~WW8PLCFx_PCDAttrs()
+{
+}
+
+ULONG WW8PLCFx_PCDAttrs::GetIdx() const
+{
+ return 0;
+}
+
+void WW8PLCFx_PCDAttrs::SetIdx( ULONG )
+{
+}
+
+BOOL WW8PLCFx_PCDAttrs::SeekPos( WW8_CP n )
+{
+ return TRUE;
+}
+
+WW8PLCFx& WW8PLCFx_PCDAttrs::operator ++( int )
+{
+ return *this;
+}
+
+WW8_CP WW8PLCFx_PCDAttrs::Where()
+{
+ return ( pPcd ) ? pPcd->Where() : LONG_MAX;
+}
+
+void WW8PLCFx_PCDAttrs::GetSprms( WW8PLCFxDesc* p )
+{
+ void* pData;
+
+ p->bRealLineEnd = FALSE;
+ if( !pPcdI
+ || !pPcdI->Get( p->nStartPos, p->nEndPos, pData ))
+ {
+ p->nStartPos = p->nEndPos = LONG_MAX; // PLCF fertig abgearbeitet
+ p->pMemPos = 0;
+ return;
+ }
+ UINT16 nPrm = SVBT16ToShort( ( (WW8_PCD*)pData )->prm );
+
+ if ( nPrm & 1 )
+ { // PRM Variante 2
+ UINT16 nSprmIdx = nPrm >> 1;
+
+ if( nSprmIdx >= nGrpprls ){
+ p->nStartPos = p->nEndPos = LONG_MAX; // Bloedsinniger Index
+ p->pMemPos = 0;
+ return;
+ }
+ BYTE* pSprms = pGrpprls[ nSprmIdx ];
+
+ p->nSprmsLen = SVBT16ToShort( pSprms ); // Laenge
+ pSprms += 2;
+ p->pMemPos = pSprms; // Position
+ }
+ else
+ { // PRM Variante 1: Sprm wird direkt in Member-Var abgelegt
+ /*
+ Dies sind die Attr, die in der Piece-Table stehen, statt im Text !
+ */
+
+ if(8 > GetVersion())
+ {
+ aShortSprm[0] = (BYTE)( ( nPrm & 0xfe) >> 1 );
+ aShortSprm[1] = (BYTE)( nPrm >> 8 );
+ p->nSprmsLen = ( nPrm ) ? 2 : 0; // Laenge
+
+ // store Postion of internal mini storage in Data Pointer
+ p->pMemPos = aShortSprm;
+ }
+ else
+ {
+ p->pMemPos = 0;
+ BYTE nSprmListIdx = (BYTE)((nPrm & 0xfe) >> 1);
+ if( nSprmListIdx )
+ {
+ // process Sprm Id Matching as explained in MS Doku
+ //
+ // ''Property Modifier(variant 1) (PRM)''
+ // see file: s62f39.htm
+ //
+ // Since isprm is 7 bits, rgsprmPrm can hold 0x80 entries.
+ static USHORT __READONLY_DATA aSprmId[0x80] = {
+ 0, 0, 0, 0,// sprmNoop, sprmNoop, sprmNoop, sprmNoop
+ 0x2402,0x2403,0x2404,0x2405,// sprmPIncLvl, sprmPJc, sprmPFSideBySide, sprmPFKeep
+ 0x2406,0x2407,0x2408,0x2409,// sprmPFKeepFollow, sprmPFPageBreakBefore, sprmPBrcl, sprmPBrcp
+ 0x260A, 0,0x240C, 0,// sprmPIlvl, sprmNoop, sprmPFNoLineNumb, sprmNoop
+ 0, 0, 0, 0,// sprmNoop, sprmNoop, sprmNoop, sprmNoop
+ 0, 0, 0, 0,// sprmNoop, sprmNoop, sprmNoop, sprmNoop
+ 0x2416,0x2417, 0, 0,// sprmPFInTable, sprmPFTtp, sprmNoop, sprmNoop
+ 0,0x261B, 0, 0,// sprmNoop, sprmPPc, sprmNoop, sprmNoop
+ 0, 0, 0, 0,// sprmNoop, sprmNoop, sprmNoop, sprmNoop
+ 0,0x2423, 0, 0,// sprmNoop, sprmPWr, sprmNoop, sprmNoop
+ 0, 0, 0, 0,// sprmNoop, sprmNoop, sprmNoop, sprmNoop
+ 0x242A, 0, 0, 0,// sprmPFNoAutoHyph, sprmNoop, sprmNoop, sprmNoop
+ 0, 0,0x2430,0x2431,// sprmNoop, sprmNoop, sprmPFLocked, sprmPFWidowControl
+ 0,0x2433,0x2434,0x2435,// sprmNoop, sprmPFKinsoku, sprmPFWordWrap, sprmPFOverflowPunct
+ 0x2436,0x2437,0x2438, 0,// sprmPFTopLinePunct, sprmPFAutoSpaceDE, sprmPFAutoSpaceDN, sprmNoop
+ 0,0x243B, 0, 0,// sprmNoop, sprmPISnapBaseLine, sprmNoop, sprmNoop
+ 0,0x0800,0x0801,0x0802,// sprmNoop, sprmCFStrikeRM, sprmCFRMark, sprmCFFldVanish
+ 0, 0, 0,0x0806,// sprmNoop, sprmNoop, sprmNoop, sprmCFData
+ 0, 0, 0,0x080A,// sprmNoop, sprmNoop, sprmNoop, sprmCFOle2
+ 0,0x2A0C,0x0858,0x2859,// sprmNoop, sprmCHighlight, sprmCFEmboss, sprmCSfxText
+ 0, 0, 0,0x2A33,// sprmNoop, sprmNoop, sprmNoop, sprmCPlain
+ 0,0x0835,0x0836,0x0837,// sprmNoop, sprmCFBold, sprmCFItalic, sprmCFStrike
+ 0x0838,0x0839,0x083a,0x083b,// sprmCFOutline, sprmCFShadow, sprmCFSmallCaps, sprmCFCaps,
+ 0x083C, 0,0x2A3E, 0,// sprmCFVanish, sprmNoop, sprmCKul, sprmNoop,
+ 0, 0,0x2A42, 0,// sprmNoop, sprmNoop, sprmCIco, sprmNoop,
+ 0x2A44, 0,0x2A46, 0,// sprmCHpsInc, sprmNoop, sprmCHpsPosAdj, sprmNoop,
+ 0x2A48, 0, 0, 0,// sprmCIss, sprmNoop, sprmNoop, sprmNoop,
+ 0, 0, 0, 0,// sprmNoop, sprmNoop, sprmNoop, sprmNoop,
+ 0, 0, 0,0x2A53,// sprmNoop, sprmNoop, sprmNoop, sprmCFDStrike,
+ 0x0854,0x0855,0x0856,0x2E00,// sprmCFImprint, sprmCFSpec, sprmCFObj, sprmPicBrcl,
+ 0x2640, 0, 0, 0,// sprmPOutLvl, sprmNoop, sprmNoop, sprmNoop,
+ 0, 0, 0, 0 // sprmNoop, sprmNoop, sprmPPnbrRMarkNot
+ }; // ^^^^^^^^^^^^^^^^^ unknown name!
+
+ // find real Sprm Id:
+ USHORT nSprmId = aSprmId[ nSprmListIdx ];
+
+ if( nSprmId )
+ {
+ // move Sprm Id and Sprm Param to internal mini storage:
+ aShortSprm[0] = (BYTE)( ( nSprmId & 0x00ff) );
+ aShortSprm[1] = (BYTE)( ( nSprmId & 0xff00) >> 8 );
+ aShortSprm[2] = (BYTE)( nPrm >> 8 );
+
+ // store Sprm Length in member:
+ p->nSprmsLen = ( nPrm ) ? 3 : 0;
+
+ // store Postion of internal mini storage in Data Pointer
+ p->pMemPos = aShortSprm;
+ }
+ }
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+WW8PLCFx_PCD::WW8PLCFx_PCD( BYTE nVersion, WW8PLCFpcd* pPLCFpcd,
+ WW8_CP nStartCp, BOOL bVer67P )
+ : WW8PLCFx( nVersion, FALSE )
+{
+ pPcdI = new WW8PLCFpcd_Iter( *pPLCFpcd, nStartCp ); // eigenen Iterator konstruieren
+ bVer67= bVer67P;
+}
+
+WW8PLCFx_PCD::~WW8PLCFx_PCD()
+{ // pPcd-Dtor wird in WW8ScannerBase gerufen
+ delete( pPcdI );
+}
+
+ULONG WW8PLCFx_PCD::GetIMax() const
+{
+ return ( pPcdI ) ? pPcdI->GetIMax() : 0;
+}
+
+ULONG WW8PLCFx_PCD::GetIdx() const
+{
+ return ( pPcdI ) ? pPcdI->GetIdx() : 0;
+}
+
+void WW8PLCFx_PCD::SetIdx( ULONG nIdx )
+{
+ if( pPcdI )
+ pPcdI->SetIdx( nIdx );
+}
+
+BOOL WW8PLCFx_PCD::SeekPos( WW8_CP nCpPos )
+{
+ return ( pPcdI ) ? pPcdI->SeekPos( nCpPos ) : FALSE;
+}
+
+WW8_CP WW8PLCFx_PCD::Where()
+{
+ return ( pPcdI ) ? pPcdI->Where() : LONG_MAX;
+}
+
+long WW8PLCFx_PCD::GetNoSprms( long& rStart, long& rEnd, long& rLen )
+{
+ void* pData;
+ rLen = 0;
+
+ if( !pPcdI
+ || !pPcdI->Get( rStart, rEnd, pData ) )
+ {
+ rStart = rEnd = LONG_MAX;
+ return -1;
+ }
+ return pPcdI->GetIdx();
+}
+
+WW8PLCFx& WW8PLCFx_PCD::operator ++( int )
+{
+ if( !pPcdI ){
+ ASSERT( !this, "pPcdI fehlt");
+ }else{
+ (*pPcdI)++;
+ }
+ return *this;
+}
+
+WW8_FC WW8PLCFx_PCD::AktPieceStartCp2Fc( WW8_CP nCp )
+{
+ WW8_CP nCpStart, nCpEnd;
+ void* pData;
+
+ if ( !pPcdI->Get( nCpStart, nCpEnd, pData ) ){
+ ASSERT( !this, "AktPieceStartCp2Fc() mit falschem Cp gerufen (1)" );
+ return LONG_MAX;
+ }
+
+ ASSERT( nCp >= nCpStart && nCp < nCpEnd,
+ "AktPieceCp2Fc() mit falschem Cp gerufen (2)" );
+
+ if( nCp < nCpStart )
+ nCp = nCpStart;
+ if( nCp >= nCpEnd )
+ nCp = nCpEnd - 1;
+
+ BOOL bIsUnicode = FALSE;
+ WW8_FC nFC = SVBT32ToLong( ((WW8_PCD*)pData)->fc );
+ if( !bVer67 )
+ nFC = WW8PLCFx_PCD::TransformPieceAddress( nFC, bIsUnicode );
+
+ return nFC + (nCp - nCpStart) * (bIsUnicode ? 2 : 1);
+}
+
+
+eCutT WW8PLCFx_PCD::AktPieceFc2Cp( long& rStartPos, long& rEndPos )
+{
+ WW8_CP nCpStart, nCpEnd;
+ void* pData;
+ eCutT eRet = CUT_NONE;
+
+ if ( !pPcdI->Get( nCpStart, nCpEnd, pData ) ){
+ ASSERT( !this, "AktPieceFc2Cp() - Fehler" );
+ rStartPos = rEndPos = LONG_MAX;
+ return CUT_BOTH;
+ }
+
+ BOOL bIsUnicode = FALSE;
+ INT32 nFcStart = SVBT32ToLong( ((WW8_PCD*)pData)->fc );
+ if( !bVer67 )
+ nFcStart = WW8PLCFx_PCD::TransformPieceAddress( nFcStart, bIsUnicode );
+
+ INT32 nUnicodeFactor = bIsUnicode ? 2 : 1;
+
+ if( rStartPos < nFcStart )
+ {
+ rStartPos = nFcStart;
+ eRet = (eCutT)( eRet | CUT_START );
+ }
+ if( rStartPos >= nFcStart + (nCpEnd - nCpStart) * nUnicodeFactor )
+ {
+ rStartPos = nFcStart + (nCpEnd - nCpStart - 1) * nUnicodeFactor;
+ eRet = (eCutT)( eRet | CUT_START );
+ }
+ // jetzt CP berechnen
+ rStartPos = nCpStart + (rStartPos - nFcStart) / nUnicodeFactor;
+
+
+ if( rEndPos < nFcStart )
+ {
+ rEndPos = nFcStart;
+ eRet = (eCutT)( eRet | CUT_END );
+ }
+ if( rEndPos > nFcStart + (nCpEnd - nCpStart) * nUnicodeFactor )
+ {
+ rEndPos = nFcStart + (nCpEnd - nCpStart) * nUnicodeFactor;
+ eRet = (eCutT)( eRet | CUT_END );
+ }
+ // jetzt CP berechnen
+ rEndPos = nCpStart + (rEndPos - nFcStart) / nUnicodeFactor;
+#ifdef DEBUG
+ if (0 > rStartPos)
+ {
+ BOOL i = 5;
+ }
+ ASSERT( (0 <= rStartPos), "AktPieceFc2Cp() - rStartPos kleiner Null!" );
+#endif
+ return eRet;
+}
+
+WW8_CP WW8PLCFx_PCD::AktPieceStartFc2Cp( WW8_FC nStartPos )
+{
+ WW8_CP nCpStart, nCpEnd;
+ void* pData;
+/*
+ if( nStartPos == LONG_MAX )
+ return LONG_MAX;
+*/
+ if ( !pPcdI->Get( nCpStart, nCpEnd, pData ) )
+ {
+ ASSERT( !this, "AktPieceStartFc2Cp() - Fehler" );
+ return LONG_MAX;
+ }
+ BOOL bIsUnicode = FALSE;
+ INT32 nFcStart = SVBT32ToLong( ((WW8_PCD*)pData)->fc );
+ if( !bVer67 )
+ nFcStart = WW8PLCFx_PCD::TransformPieceAddress( nFcStart, bIsUnicode );
+
+
+ INT32 nUnicodeFactor = bIsUnicode ? 2 : 1;
+
+ if( nStartPos < nFcStart )
+ nStartPos = nFcStart;
+
+ if( nStartPos >= nFcStart + (nCpEnd - nCpStart) * nUnicodeFactor )
+ nStartPos = nFcStart + (nCpEnd - nCpStart - 1) * nUnicodeFactor;
+
+ return nCpStart + (nStartPos - nFcStart) / nUnicodeFactor;
+}
+
+
+
+//-----------------------------------------
+// Hilfsroutinen fuer alle
+//-----------------------------------------
+
+DateTime WW8ScannerBase::WW8DTTM2DateTime(long lDTTM)
+{
+/*
+mint short :6 0000003F minutes (0-59)
+hr short :5 000007C0 hours (0-23)
+dom short :5 0000F800 days of month (1-31)
+mon short :4 000F0000 months (1-12)
+yr short :9 1FF00000 years (1900-2411)-1900
+wdy short :3 E0000000 weekday(Sunday=0
+ Monday=1
+( wdy can be ignored ) Tuesday=2
+ Wednesday=3
+ Thursday=4
+ Friday=5
+ Saturday=6)
+*/
+ DateTime aDateTime(Date( 0 ), Time( 0 ));
+ if( lDTTM )
+ {
+ USHORT lMin =(USHORT)(lDTTM & 0x0000003F);
+ lDTTM >>= 6;
+ USHORT lHour=(USHORT)(lDTTM & 0x0000001F);
+ lDTTM >>= 5;
+ USHORT lDay =(USHORT)(lDTTM & 0x0000001F);
+ lDTTM >>= 5;
+ USHORT lMon =(USHORT)(lDTTM & 0x0000000F);
+ lDTTM >>= 4;
+ USHORT lYear=(USHORT)(lDTTM & 0x000001FF) + 1900;
+ aDateTime = DateTime(Date(lDay, lMon, lYear), Time(lHour, lMin));
+ }
+ return aDateTime;
+}
+
+WW8_CP WW8ScannerBase::WW8Fc2Cp( WW8_FC nFcPos ) const
+{
+ if( nFcPos == LONG_MAX )
+ return LONG_MAX;
+
+ if( pPieceIter )
+ { // Complex File ?
+ ULONG nOldPos = pPieceIter->GetIdx();
+ pPieceIter->SetIdx( 0 );
+ while( 1 )
+ {
+ long nCpStart, nCpEnd;
+ void* pData;
+ if( !pPieceIter->Get( nCpStart, nCpEnd, pData ) )
+ { // ausserhalb PLCFfpcd ?
+ ASSERT( !this, "PLCFpcd-WW8Fc2Cp() ging schief" );
+ break;
+// pPieceIter->SetIdx( nOldPos );
+// return 0;
+ }
+ BOOL bIsUnicode = FALSE;
+ INT32 nFcStart = SVBT32ToLong( ((WW8_PCD*)pData)->fc );
+ if( 8 <= pWw8Fib->nVersion )
+ nFcStart = WW8PLCFx_PCD::TransformPieceAddress( nFcStart,
+ bIsUnicode );
+
+ INT32 nLen = (nCpEnd - nCpStart) * (bIsUnicode ? 2 : 1);
+
+ if( nFcPos >= nFcStart && nFcPos < nFcStart + nLen )
+ { // gefunden
+ pPieceIter->SetIdx( nOldPos );
+
+ return nCpStart + ((nFcPos - nFcStart) / (bIsUnicode ? 2 : 1));
+ }
+ (*pPieceIter)++;
+ }
+ pPieceIter->SetIdx( nOldPos ); // nicht gefunden
+ return LONG_MAX;
+ }
+ // No complex file
+ return nFcPos - pWw8Fib->fcMin;
+}
+
+WW8_FC WW8ScannerBase::WW8Cp2Fc( WW8_CP nCpPos, BOOL* pIsUnicode,
+ WW8_CP* pNextPieceCp, BOOL* pTestFlag ) const
+{
+ if( pTestFlag )
+ *pTestFlag = TRUE;
+ if( LONG_MAX == nCpPos )
+ return LONG_MAX;
+
+ if( pPieceIter )
+ { // Complex File
+ if( pNextPieceCp )
+ *pNextPieceCp = LONG_MAX;
+
+ if( !pPieceIter->SeekPos( nCpPos ) )
+ {
+ if( pTestFlag )
+ *pTestFlag = FALSE;
+ else
+ ASSERT( !this, "Falscher CP an WW8Cp2Fc() uebergeben" );
+ return LONG_MAX;
+ }
+ long nCpStart, nCpEnd;
+ void* pData;
+ if( !pPieceIter->Get( nCpStart, nCpEnd, pData ) )
+ {
+ if( pTestFlag )
+ *pTestFlag = FALSE;
+ else
+ ASSERT( !this, "PLCFfpcd-Get ging schief" );
+ return LONG_MAX;
+ }
+ if( pNextPieceCp )
+ *pNextPieceCp = nCpEnd;
+ BOOL bIsUnicode;
+ if( !pIsUnicode )
+ pIsUnicode = &bIsUnicode;
+
+ WW8_FC nRet = SVBT32ToLong( ((WW8_PCD*)pData)->fc );
+ if( 8 > pWw8Fib->nVersion )
+ *pIsUnicode = FALSE;
+ else
+ nRet = WW8PLCFx_PCD::TransformPieceAddress( nRet, *pIsUnicode );
+
+
+ nRet += (nCpPos - nCpStart) * (*pIsUnicode ? 2 : 1);
+
+ return nRet;
+ }
+
+ // No complex file
+ if( pIsUnicode )
+ *pIsUnicode = FALSE;
+ return nCpPos + pWw8Fib->fcMin;
+}
+
+//-----------------------------------------
+// class WW8ScannerBase
+//-----------------------------------------
+
+WW8PLCFpcd* WW8ScannerBase::OpenPieceTable( SvStream* pStr, WW8Fib* pWwF )
+{
+ if( ( (8 > pWw8Fib->nVersion)
+ && !pWwF->fComplex
+ )
+ || !pWwF->lcbClx ) return 0;
+
+ WW8_FC nClxPos = pWwF->fcClx;
+ INT32 nClxLen = pWwF->lcbClx;
+ register INT32 nLeft = nClxLen;
+ INT16 nGrpprl = 0;
+ BYTE clxt;
+
+ pStr->Seek( nClxPos );
+ while( 1 ){ // Zaehle Zahl der Grpprls
+ *pStr >> clxt;
+ nLeft--;
+ if( 2 == clxt ) // PLCFfpcd ?
+ break; // PLCFfpcd gefunden
+ if( 1 == clxt ) // clxtGrpprl ?
+ nGrpprl++;
+ UINT16 nLen;
+ *pStr >> nLen;
+ nLeft -= 2 + nLen;
+ if( nLeft < 0 )
+ return 0; // schiefgegangen
+ pStr->SeekRel( nLen ); // ueberlies grpprl
+ }
+ pStr->Seek( nClxPos );
+ nLeft = nClxLen;
+ pPieceGrpprls = new BYTE*[nGrpprl + 1];
+ memset( pPieceGrpprls, 0, ( nGrpprl + 1 ) * 4 );
+ nPieceGrpprls = nGrpprl;
+ INT16 nAktGrpprl = 0; // lies Grpprls ein
+ while( 1 )
+ {
+ *pStr >> clxt;
+ nLeft--;
+ if( 2 == clxt) // PLCFfpcd ?
+ break; // PLCFfpcd gefunden
+ UINT16 nLen;
+ *pStr >> nLen;
+ nLeft -= 2 + nLen;
+ if( nLeft < 0 )
+ return 0; // schiefgegangen
+ if( 1 == clxt ) // clxtGrpprl ?
+ {
+ BYTE* p = new BYTE[nLen+2]; // alloziere
+ memcpy( p, &nLen, 2 ); // trage Laenge ein
+ pStr->Read( p+2, nLen ); // lies grpprl
+ pPieceGrpprls[nAktGrpprl++] = p; // trage in Array ein
+ }
+ else
+ pStr->SeekRel( nLen ); // ueberlies nicht-Grpprl
+ }
+ // lies Piece Table PLCF ein
+ INT32 nPLCFfLen;
+ *pStr >> nPLCFfLen;
+ ASSERT( 65536 > nPLCFfLen, "PLCFfpcd ueber 64 k" );
+ return new WW8PLCFpcd( pStr, pStr->Tell(), nPLCFfLen, 8 );
+}
+
+void WW8ScannerBase::DeletePieceTable()
+{
+ if( pPieceGrpprls )
+ {
+ for( BYTE** p = pPieceGrpprls; *p; p++ )
+ delete[]( *p );
+ delete[]( pPieceGrpprls );
+ pPieceGrpprls = 0;
+ }
+}
+
+WW8ScannerBase::WW8ScannerBase( SvStream* pSt, SvStream* pTblSt, SvStream* pDataSt,
+ WW8Fib* pWwFib )
+ : pWw8Fib( pWwFib ), pPieceGrpprls( 0 ),
+ pMainFdoa( 0 ), pHdFtFdoa( 0 ),
+ pMainTxbx( 0 ), pMainTxbxBkd( 0 ), pHdFtTxbx( 0 ), pHdFtTxbxBkd( 0 ),
+ nNoAttrScan( 0 )
+{
+ pPiecePLCF = OpenPieceTable( pTblSt, pWw8Fib ); // Complex
+ if( pPiecePLCF )
+ {
+ pPieceIter = new WW8PLCFpcd_Iter( *pPiecePLCF );
+ pPLCFx_PCD = new WW8PLCFx_PCD( pWwFib->nVersion, pPiecePLCF, 0,
+ 8 > pWw8Fib->nVersion );
+ pPLCFx_PCDAttrs = new WW8PLCFx_PCDAttrs( pWwFib->nVersion, pPLCFx_PCD, this);
+ }
+ else
+ {
+ pPieceIter = 0;
+ pPLCFx_PCD = 0;
+ pPLCFx_PCDAttrs = 0;
+ }
+
+ // pChpPLCF and pPapPLCF may NOT be created before pPLCFx_PCD !!
+ pChpPLCF = new WW8PLCFx_Cp_FKP( pSt, pTblSt, pDataSt, *this, CHP ); // CHPX
+ pPapPLCF = new WW8PLCFx_Cp_FKP( pSt, pTblSt, pDataSt, *this, PAP ); // PAPX
+
+ pSepPLCF = new WW8PLCFx_SEPX( pSt, pTblSt, *pWwFib, 0 ); // SEPX
+
+ // Footnotes
+ pFtnPLCF = new WW8PLCFx_SubDoc( pTblSt, pWwFib->nVersion, 0,
+ pWwFib->fcPlcffndRef, pWwFib->lcbPlcffndRef,
+ pWwFib->fcPlcffndTxt, pWwFib->lcbPlcffndTxt,
+ 2 );
+ // Endnotes
+ pEdnPLCF = new WW8PLCFx_SubDoc( pTblSt, pWwFib->nVersion, 0,
+ pWwFib->fcPlcfendRef, pWwFib->lcbPlcfendRef,
+ pWwFib->fcPlcfendTxt, pWwFib->lcbPlcfendTxt,
+ 2 );
+ // Anmerkungen
+ pAndPLCF = new WW8PLCFx_SubDoc( pTblSt, pWwFib->nVersion, 0,
+ pWwFib->fcPlcfandRef, pWwFib->lcbPlcfandRef,
+ pWwFib->fcPlcfandTxt, pWwFib->lcbPlcfandTxt,
+ (8 > pWwFib->nVersion) ? 20 : 30 );
+
+ // Fields Main Text
+ pFldPLCF = new WW8PLCFx_FLD( pTblSt, *pWwFib, MAN_MAINTEXT, 0 );
+ // Fields Header / Footer
+ pFldHdFtPLCF= new WW8PLCFx_FLD( pTblSt, *pWwFib, MAN_HDFT, 0 );
+ // Fields Footnote
+ pFldFtnPLCF = new WW8PLCFx_FLD( pTblSt, *pWwFib, MAN_FTN, 0 );
+ // Fields Endnote
+ pFldEdnPLCF = new WW8PLCFx_FLD( pTblSt, *pWwFib, MAN_EDN, 0 );
+ // Fields Anmerkungen
+ pFldAndPLCF = new WW8PLCFx_FLD( pTblSt, *pWwFib, MAN_AND, 0 );
+ // Fields in Textboxes in Main Text
+ pFldTxbxPLCF= new WW8PLCFx_FLD( pTblSt, *pWwFib, MAN_TXBX, 0 );
+ // Fields in Textboxes in Header / Footer
+ pFldTxbxHdFtPLCF=new WW8PLCFx_FLD(pTblSt,*pWwFib,MAN_TXBX_HDFT,0 );
+
+ switch( pWw8Fib->nVersion ) // beachte: 6 steht fuer "6 ODER 7", 7 steht fuer "NUR 7"
+ {
+ case 6:
+ case 7: if( pWwFib->fcPlcfdoaMom && pWwFib->lcbPlcfdoaMom )
+ pMainFdoa = new WW8PLCFspecial( pTblSt, pWwFib->fcPlcfdoaMom,
+ pWwFib->lcbPlcfdoaMom, 6 );
+ if( pWwFib->fcPlcfdoaHdr && pWwFib->lcbPlcfdoaHdr )
+ pHdFtFdoa = new WW8PLCFspecial( pTblSt, pWwFib->fcPlcfdoaHdr,
+ pWwFib->lcbPlcfdoaHdr, 6 );
+ break;
+ case 8:
+ if( pWwFib->fcPlcfspaMom && pWwFib->lcbPlcfspaMom )
+ pMainFdoa = new WW8PLCFspecial( pTblSt, pWwFib->fcPlcfspaMom,
+ pWwFib->lcbPlcfspaMom, 26 );
+ if( pWwFib->fcPlcfspaHdr && pWwFib->lcbPlcfspaHdr )
+ pHdFtFdoa = new WW8PLCFspecial( pTblSt, pWwFib->fcPlcfspaHdr,
+ pWwFib->lcbPlcfspaHdr, 26 );
+ // PLCF fuer TextBox-Break-Deskriptoren im Maintext
+ if( pWwFib->fcPlcftxbxBkd && pWwFib->lcbPlcftxbxBkd )
+ pMainTxbxBkd = new WW8PLCFspecial( pTblSt,
+ pWwFib->fcPlcftxbxBkd,
+ pWwFib->lcbPlcftxbxBkd, 0);
+ // PLCF fuer TextBox-Break-Deskriptoren im Header-/Footer-Bereich
+ if( pWwFib->fcPlcfHdrtxbxBkd && pWwFib->lcbPlcfHdrtxbxBkd )
+ pHdFtTxbxBkd = new WW8PLCFspecial( pTblSt,
+ pWwFib->fcPlcfHdrtxbxBkd,
+ pWwFib->lcbPlcfHdrtxbxBkd, 0);
+ break;
+
+
+ default:ASSERT( !this, "Es wurde vergessen, nVersion zu kodieren!" );
+ }
+
+ // PLCF fuer TextBox-Stories im Maintext
+ long nLenTxBxS = (8 > pWw8Fib->nVersion) ? 0 : 22;
+ if( pWwFib->fcPlcftxbxTxt && pWwFib->lcbPlcftxbxTxt )
+ pMainTxbx = new WW8PLCFspecial( pTblSt, pWwFib->fcPlcftxbxTxt,
+ pWwFib->lcbPlcftxbxTxt, nLenTxBxS );
+
+ // PLCF fuer TextBox-Stories im Header-/Footer-Bereich
+ if( pWwFib->fcPlcfHdrtxbxTxt && pWwFib->lcbPlcfHdrtxbxTxt )
+ pHdFtTxbx = new WW8PLCFspecial( pTblSt, pWwFib->fcPlcfHdrtxbxTxt,
+ pWwFib->lcbPlcfHdrtxbxTxt, nLenTxBxS );
+
+ pBook = new WW8PLCFx_Book( pSt, pTblSt, *pWwFib, 0 );
+}
+
+WW8ScannerBase::~WW8ScannerBase()
+{
+ DeletePieceTable();
+ delete pPLCFx_PCDAttrs;
+ delete pPLCFx_PCD;
+ delete pPieceIter;
+ delete pPiecePLCF;
+ delete pBook;
+ delete pFldEdnPLCF;
+ delete pFldFtnPLCF;
+ delete pFldAndPLCF;
+ delete pFldHdFtPLCF;
+ delete pFldPLCF;
+ delete pFldTxbxPLCF;
+ delete pFldTxbxHdFtPLCF;
+ delete pEdnPLCF;
+ delete pFtnPLCF;
+ delete pAndPLCF;
+ delete pSepPLCF;
+ delete pPapPLCF;
+ delete pChpPLCF;
+ // vergessene Schaeflein
+ delete pMainFdoa;
+ delete pHdFtFdoa;
+ delete pMainTxbx;
+ delete pMainTxbxBkd;
+ delete pHdFtTxbx;
+ delete pHdFtTxbxBkd;
+}
+
+//-----------------------------------------
+// Stack fuer shorts
+//-----------------------------------------
+
+class UShortStk: private SvShorts
+{
+public:
+ UShortStk():SvShorts( 10, 10 ) {}
+ ~UShortStk() {}
+ void Push( USHORT s ) { Insert( (USHORT)s, SvShorts::Count() ); }
+ inline USHORT Top();
+ inline USHORT Pop();
+ USHORT Count() { return SvShorts::Count(); }
+};
+
+inline USHORT UShortStk::Top()
+{
+ USHORT nPos = SvShorts::Count() - 1;
+ USHORT s = (*this)[ nPos ];
+ return s;
+}
+
+inline USHORT UShortStk::Pop()
+{
+ USHORT nPos = SvShorts::Count() - 1;
+ USHORT s = (*this)[ nPos ];
+ Remove( nPos );
+ return s;
+}
+
+
+//-----------------------------------------
+// Fields
+//-----------------------------------------
+
+static BOOL WW8SkipField( WW8PLCFspecial& rPLCF )
+{
+ void* pData;
+ long nP;
+
+ if( !rPLCF.Get( nP, pData ) ) // Ende des PLCFspecial ?
+ return FALSE;
+
+ rPLCF++;
+
+ if((((BYTE*)pData)[0] & 0x1f ) != 0x13 ) // Kein Anfang ?
+ return TRUE; // Bei Fehler nicht abbrechen
+
+ if( !rPLCF.Get( nP, pData ) )
+ return FALSE;
+
+
+ while((((BYTE*)pData)[0] & 0x1f ) == 0x13 ){ // immer noch neue (nested) Anfaenge ?
+ WW8SkipField( rPLCF ); // nested Field im Beschreibungsteil
+ if( !rPLCF.Get( nP, pData ) )
+ return FALSE;
+ }
+
+ if((((BYTE*)pData)[0] & 0x1f ) == 0x14 ){ // Field Separator ?
+ rPLCF++;
+
+ if( !rPLCF.Get( nP, pData ) )
+ return FALSE;
+
+ while((((BYTE*)pData)[0] & 0x1f ) == 0x13 ){// immer noch neue (nested) Anfaenge ?
+ WW8SkipField( rPLCF ); // nested Field im Resultatteil
+ if( !rPLCF.Get( nP, pData ) )
+ return FALSE;
+ }
+ }
+ rPLCF++;
+
+ return TRUE;
+}
+
+BOOL WW8GetFieldPara( BYTE nVersion, WW8PLCFspecial& rPLCF, WW8FieldDesc& rF )
+{
+ void* pData;
+ ULONG nOldIdx = rPLCF.GetIdx();
+
+ rF.nLen = rF.nId = rF.nOpt = rF.bCodeNest = rF.bResNest = 0;
+
+ if( !rPLCF.Get( rF.nSCode, pData ) ) // Ende des PLCFspecial ?
+ goto Err;
+
+ rPLCF++;
+
+ if((((BYTE*)pData)[0] & 0x1f ) != 0x13 ) // Kein Anfang ?
+ goto Err;
+
+ rF.nId = ((BYTE*)pData)[1];
+
+ if( !rPLCF.Get( rF.nLCode, pData ) )
+ goto Err;
+
+ rF.nSRes = rF.nLCode; // Default
+ rF.nSCode++; // ohne Marken
+ rF.nLCode -= rF.nSCode; // Pos zu Laenge
+
+ while((((BYTE*)pData)[0] & 0x1f ) == 0x13 ){ // immer noch neue (nested) Anfaenge ?
+ WW8SkipField( rPLCF ); // nested Field im Beschreibungsteil
+ rF.bCodeNest = TRUE;
+ if( !rPLCF.Get( rF.nSRes, pData ) )
+ goto Err;
+ }
+
+ if((((BYTE*)pData)[0] & 0x1f ) == 0x14 ){ // Field Separator ?
+ rPLCF++;
+
+ if( !rPLCF.Get( rF.nLRes, pData ) )
+ goto Err;
+
+ while((((BYTE*)pData)[0] & 0x1f ) == 0x13 ){// immer noch neue (nested) Anfaenge ?
+ WW8SkipField( rPLCF ); // nested Field im Resultatteil
+ rF.bResNest = TRUE;
+ if( !rPLCF.Get( rF.nLRes, pData ) )
+ goto Err;
+ }
+ rF.nLen = rF.nLRes - rF.nSCode + 2; // nLRes ist noch die Endposition
+ rF.nLRes -= rF.nSRes; // nun: nLRes = Laenge
+ rF.nSRes++; // Endpos encl. Marken
+ rF.nLRes--;
+
+ }else{
+ rF.nLRes = 0; // Kein Result vorhanden
+ rF.nLen = rF.nSRes - rF.nSCode + 2; // Gesamtlaenge
+ }
+
+ rPLCF++;
+ if((((BYTE*)pData)[0] & 0x1f ) == 0x15 ){ // Field Ende ?
+ // INDEX-Fld hat Bit7 gesetzt!?!
+ rF.nOpt = ((BYTE*)pData)[1]; // Ja -> Flags uebernehmen
+ }else{
+ rF.nId = 0; // Nein -> Feld ungueltig
+ }
+
+ rPLCF.SetIdx( nOldIdx );
+ return TRUE;
+Err:
+ rPLCF.SetIdx( nOldIdx );
+ return FALSE;
+}
+
+
+//-----------------------------------------
+
+
+// WW8ReadPString liest einen Pascal-String ein und gibt ihn zurueck. Der Pascal-
+// String hat am Ende ein \0, der aber im Laengenbyte nicht mitgezaehlt wird.
+// Der Speicher fuer den Pascalstring wird alloziert.
+String WW8ReadPString( SvStream& rStrm, rtl_TextEncoding eEnc, BOOL bAtEndSeekRel1 )
+{
+ UINT8 b;
+ rStrm >> b;
+
+ ByteString aByteStr; // Alloc methode automatically sets Zero at the end
+ sal_Char* pByteData = aByteStr.AllocBuffer( b );
+
+ sal_Size nWasRead = rStrm.Read( pByteData, b );
+ if( bAtEndSeekRel1 )
+ rStrm.SeekRel( 1 ); // ueberspringe das Null-Byte am Ende.
+
+ if( nWasRead != b )
+ aByteStr.ReleaseBufferAccess( nWasRead );
+
+ return String( aByteStr, eEnc );
+}
+
+
+String WW8Read_xstz( SvStream& rStrm, USHORT nChars, BOOL bAtEndSeekRel1 )
+{
+ UINT16 b;
+
+ if( nChars )
+ b = nChars;
+ else
+ rStrm >> b;
+
+ String aStr; // Alloc methode automatically sets Zero at the end
+ sal_Unicode* pData = aStr.AllocBuffer( b );
+
+ sal_Size nWasRead = rStrm.Read( (sal_Char*)pData, b * 2 );
+ if( nWasRead != b*2 )
+ aStr.ReleaseBufferAccess( b = (nWasRead / 2) );
+
+#ifdef __BIGENDIAN
+ ULONG n;
+ sal_Unicode *pWork;
+ for( n = 0, pWork = pData; n < b; ++n, ++pWork )
+ *pWork = SWAPSHORT( *pWork );
+#endif // ifdef __BIGENDIAN
+
+// 2000/03/27 KHZ UNICODE
+// still missing: unicode-back conversion AND 0xF0.. specials
+
+ if( bAtEndSeekRel1 )
+ rStrm.SeekRel( 2 ); // ueberspringe das Null-Character am Ende.
+
+ return aStr;
+}
+
+
+USHORT WW8ScannerBase::WW8ReadString( SvStream& rStrm, String& rStr,
+ WW8_CP nAktStartCp, long nTotalLen,
+ rtl_TextEncoding eEnc ) const
+ // , unsigned -c-h-a-r-** ppStr ) const
+{
+ // Klartext einlesen, der sich ueber mehrere Pieces erstrecken kann
+ rStr.Erase();
+
+ long nTotalRead = 0;
+ WW8_CP nBehindTextCp = nAktStartCp + nTotalLen;
+ WW8_CP nNextPieceCp = nBehindTextCp; // Initialisierung wichtig fuer Ver6
+ do {
+ BOOL bIsUnicode, bPosOk;
+ WW8_FC fcAct = WW8Cp2Fc( nAktStartCp, &bIsUnicode,
+ &nNextPieceCp, &bPosOk);
+
+ if( !bPosOk ) break; // vermutlich uebers Dateiende hinaus gezielt, macht nix!
+
+ rStrm.Seek( fcAct );
+
+ long nLen = ( (nNextPieceCp < nBehindTextCp)
+ ? nNextPieceCp
+ : nBehindTextCp
+ )
+ - nAktStartCp;
+
+ if( 0 >= nLen ) break;
+
+ if( nLen > USHRT_MAX - 1 )
+ nLen = USHRT_MAX - 1;
+
+ if( bIsUnicode )
+ rStr.Append( WW8Read_xstz( rStrm, (USHORT)nLen, FALSE ) );
+ else
+ {
+ ByteString aByteStr; // Alloc methode automatically sets Zero at the end
+ sal_Char* pByteData = aByteStr.AllocBuffer( nLen );
+
+ sal_Size nWasRead = rStrm.Read( pByteData, nLen );
+ if( nWasRead != nLen )
+ aByteStr.ReleaseBufferAccess( nWasRead );
+
+ rStr += String( aByteStr, eEnc );
+ }
+ nTotalRead += nLen;
+ nAktStartCp += nLen;
+ if( nTotalRead != rStr.Len() ) break;
+ }
+ while( nTotalRead < nTotalLen );
+
+ return rStr.Len();
+}
+
+
+//-----------------------------------------
+// WW8PLCFspecial
+//-----------------------------------------
+
+// Bei nStartPos < 0 wird das erste Element des PLCFs genommen
+WW8PLCFspecial::WW8PLCFspecial( SvStream* pSt, long nFilePos, long nPLCF,
+ long nStruct, long nStartPos, BOOL bNoEnd )
+:nIdx( 0 ), nStru( nStruct )
+{
+ nIMax = ( nPLCF - 4 ) / ( 4 + nStruct );
+ pPLCF_PosArray = new INT32[ ( nPLCF + 3 ) / 4 ]; // Pointer auf Pos- u. Struct-Array
+
+ long nOldPos = pSt->Tell();
+
+ pSt->Seek( nFilePos );
+ pSt->Read( pPLCF_PosArray, nPLCF );
+#ifdef __BIGENDIAN
+ for( nIdx = 0; nIdx <= nIMax; nIdx++ ){
+ pPLCF_PosArray[nIdx] = SWAPLONG( pPLCF_PosArray[nIdx] );
+ }
+ nIdx = 0;
+#endif // __BIGENDIAN
+ if( bNoEnd ) nIMax++;
+ if( nStruct )
+ pPLCF_Contents = (BYTE*)&pPLCF_PosArray[nIMax + 1]; // Pointer auf Inhalts-Array
+ else
+ pPLCF_Contents = 0; // kein Inhalt
+ if( nStartPos >= 0 )
+ SeekPos( nStartPos );
+
+ pSt->Seek( nOldPos );
+}
+
+// WW8PLCFspecial::SeekPos() stellt den WW8PLCFspecial auf die Stelle nPos, wobei auch noch der
+// Eintrag benutzt wird, der vor nPos beginnt und bis hinter nPos reicht.
+// geeignet fuer normale Attribute. Allerdings wird der Attributanfang nicht
+// auf die Position nPos korrigiert.
+BOOL WW8PLCFspecial::SeekPos( long nPos )
+{
+ long nP = nPos;
+
+ if( nP < pPLCF_PosArray[0] )
+ {
+ nIdx = 0;
+ return FALSE; // Nicht gefunden: nPos unterhalb kleinstem Eintrag
+ }
+
+ // Search from beginning?
+ if( (1 > nIdx) || (nP < pPLCF_PosArray[ nIdx-1 ]) )
+ nIdx = 1;
+
+ long nI = nIdx ? nIdx : 1;
+ long nEnd = nIMax;
+#ifndef KHZ_TEST0
+ for(int n = (1==nIdx ? 1 : 2); n; --n )
+ {
+ for( ; nI <=nEnd; ++nI)
+ { // Suchen mit um 1 erhoehtem Index
+ if( nP < pPLCF_PosArray[nI] )
+ { // Position gefunden
+ nIdx = nI - 1; // nI - 1 ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+ nI = 1;
+ nEnd = nIdx-1;
+ }
+#else
+ for( nI=1; nI<=nIMax; nI++){ // Suchen mit um 1 erhoehtem Index
+ if( nP < pPLCF_PosArray[nI] ){ // Position gefunden
+ nIdx = nI - 1; // nI - 1 ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+#endif
+ nIdx = nIMax; // Nicht gefunden, groesser als alle Eintraege
+ return FALSE;
+}
+
+// WW8PLCFspecial::SeekPosExact() wie SeekPos(), aber es wird sichergestellt, dass kein
+// Attribut angeschnitten wird, d.h. das naechste gelieferte Attribut beginnt
+// auf oder hinter nPos. Wird benutzt fuer Felder + Bookmarks.
+BOOL WW8PLCFspecial::SeekPosExact( long nPos )
+{
+ long nP = nPos;
+
+ if( nP < pPLCF_PosArray[0] )
+ {
+ nIdx = 0;
+ return FALSE; // Nicht gefunden: nPos unterhalb kleinstem Eintrag
+ }
+ // Search from beginning?
+ if( nP <=pPLCF_PosArray[nIdx] )
+ nIdx = 0;
+
+ long nI = nIdx ? nIdx-1 : 0;
+ long nEnd = nIMax;
+#ifndef KHZ_TEST0
+ for(int n = (0==nIdx ? 1 : 2); n; --n )
+ {
+ for( ; nI < nEnd; ++nI)
+ {
+ if( nP <=pPLCF_PosArray[nI] )
+ { // Position gefunden
+ nIdx = nI; // nI ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+ nI = 0;
+ nEnd = nIdx;
+ }
+#else
+ for( nI=0; nI<nIMax; nI++){ // Suchen
+ if( nP <= pPLCF_PosArray[nI] ){ // Position gefunden
+ nIdx = nI; // nI ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+#endif
+ nIdx = nIMax; // Nicht gefunden, groesser als alle Eintraege
+ return FALSE;
+}
+
+BOOL WW8PLCFspecial::Get( long& rPos, void*& rpValue )
+{
+ if ( nIdx >= nIMax ){
+ rPos = LONG_MAX;
+ return FALSE;
+ }
+ rPos = pPLCF_PosArray[nIdx];
+ rpValue = pPLCF_Contents ? (void*)&pPLCF_Contents[nIdx * nStru] : 0;
+ return TRUE;
+}
+
+BOOL WW8PLCFspecial::GetData( long nIdx, long& rPos, void*& rpValue )
+{
+ if ( nIdx >= nIMax ){
+ rPos = LONG_MAX;
+ return FALSE;
+ }
+ rPos = pPLCF_PosArray[nIdx];
+ rpValue = pPLCF_Contents ? (void*)&pPLCF_Contents[nIdx * nStru] : 0;
+ return TRUE;
+}
+
+//-----------------------------------------
+// WW8PLCF z.B. fuer SEPX
+//-----------------------------------------
+
+// Ctor fuer *andere* als Fkps
+// Bei nStartPos < 0 wird das erste Element des PLCFs genommen
+WW8PLCF::WW8PLCF( SvStream* pSt, long nFilePos, long nPLCF,
+ long nStruct, long nStartPos )
+:nIdx( 0 ), nStru( nStruct )
+{
+ ASSERT( nPLCF, "WW8PLCF: nPLCF ist Null!" );
+
+ nIMax = ( nPLCF - 4 ) / ( 4 + nStruct );
+
+ ReadPLCF( pSt, nFilePos, nPLCF );
+
+ if( nStartPos >= 0 )
+ SeekPos( nStartPos );
+}
+
+// Ctor *nur* fuer Fkps
+// Die letzten 2 Parameter sind fuer PLCF.Chpx und PLCF.Papx noetig.
+// ist ncpN != 0, dann wird ein unvollstaendiger PLCF vervollstaendigt.
+// Das ist bei WW6 bei Resourcenmangel und bei WordPad (W95) immer noetig.
+// Bei nStartPos < 0 wird das erste Element des PLCFs genommen
+WW8PLCF::WW8PLCF( SvStream* pSt, long nFilePos, long nPLCF,
+ long nStruct, long nStartPos, long nPN, long ncpN )
+:nIdx( 0 ), nStru( nStruct )
+{
+ nIMax = ( nPLCF - 4 ) / ( 4 + nStruct );
+
+ if( nIMax >= (long) ncpN )
+ ReadPLCF( pSt, nFilePos, nPLCF );
+ else
+ GeneratePLCF( pSt, nPN, ncpN );
+
+ if( nStartPos >= 0 )
+ SeekPos( nStartPos );
+
+// Damit man sich den Inhalt im Debugger ansehen kann
+#ifdef DEBUG
+ INT32 (*p1)[200] = (INT32 (*)[200])pPLCF_PosArray;
+ USHORT (*p2)[200] = (USHORT (*)[200])pPLCF_Contents;
+ p2 = p2;
+#endif
+}
+
+void WW8PLCF::ReadPLCF( SvStream* pSt, long nFilePos, long nPLCF )
+{
+ pPLCF_PosArray = new INT32[ ( nPLCF + 3 ) / 4 ]; // Pointer auf Pos-Array
+
+ long nOldPos = pSt->Tell();
+
+ pSt->Seek( nFilePos );
+ pSt->Read( pPLCF_PosArray, nPLCF );
+#ifdef __BIGENDIAN
+ for( nIdx = 0; nIdx <= nIMax; nIdx++ ){
+ pPLCF_PosArray[nIdx] = SWAPLONG( pPLCF_PosArray[nIdx] );
+ }
+ nIdx = 0;
+#endif // __BIGENDIAN
+ pPLCF_Contents = (BYTE*)&pPLCF_PosArray[nIMax + 1]; // Pointer auf Inhalts-Array
+
+ pSt->Seek( nOldPos );
+}
+
+void WW8PLCF::GeneratePLCF( SvStream* pSt, long nPN,
+ long ncpN )
+{
+ ASSERT( nIMax < (long)ncpN, "Pcl.Fkp: Warum ist PLCF zu gross ?" );
+ nIMax = ncpN;
+ long nSiz = 6 * nIMax + 4;
+ pPLCF_PosArray = new INT32[ ( nSiz + 3 ) / 4 ]; // Pointer auf Pos-Array
+ memset( pPLCF_PosArray, 0, (size_t)nSiz );
+
+ INT32 nFc;
+ USHORT i;
+
+ for( i = 0; i < ncpN; i++ ){ // Baue FC-Eintraege
+ pSt->Seek( ( nPN + i ) << 9 ); // erster FC-Eintrag jedes Fkp
+ *pSt >> nFc;
+ pPLCF_PosArray[i] = nFc;
+ }
+ ULONG nLastFkpPos = ( ( nPN + nIMax - 1 ) << 9 );
+ pSt->Seek( nLastFkpPos + 511 ); // Anz. Fkp-Eintraege des letzten Fkp
+ BYTE nb;
+ *pSt >> nb;
+ pSt->Seek( nLastFkpPos + nb * 4 ); // letzer FC-Eintrag des letzten Fkp
+ *pSt >> nFc;
+ pPLCF_PosArray[nIMax] = nFc; // Ende des letzten Fkp
+
+ pPLCF_Contents = (BYTE*)&pPLCF_PosArray[nIMax + 1]; // Pointer auf Inhalts-Array
+ USHORT* p = (USHORT*)pPLCF_Contents;
+
+ for( i = 0; i < ncpN; i++ ) // Baue PNs
+ p[i] = nPN + i;
+
+#ifdef DEBUG // Damit man sich den Inhalt im Debugger ansehen kann
+ INT32 (*p1)[200] = (INT32 (*)[200])pPLCF_PosArray;
+ USHORT (*p2)[200] = (USHORT (*)[200])pPLCF_Contents;
+ p2 = p2;
+#endif
+}
+
+BOOL WW8PLCF::SeekPos( long nPos )
+{
+ long nP = nPos;
+
+ if( nP < pPLCF_PosArray[0] )
+ {
+ nIdx = 0;
+ return FALSE; // Nicht gefunden: nPos unterhalb kleinstem Eintrag
+ }
+ // Search from beginning?
+ if( (1 > nIdx) || (nP < pPLCF_PosArray[ nIdx-1 ]) )
+ nIdx = 1;
+
+ long nI = nIdx ? nIdx : 1;
+ long nEnd = nIMax;
+#ifndef KHZ_TEST0
+ for(int n = (1==nIdx ? 1 : 2); n; --n )
+ {
+ for( ; nI <=nEnd; ++nI) // Suchen mit um 1 erhoehtem Index
+ {
+ if( nP < pPLCF_PosArray[nI] ) // Position gefunden
+ {
+ nIdx = nI - 1; // nI - 1 ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+ nI = 1;
+ nEnd = nIdx-1;
+ }
+#else
+ for( nI=1; nI<=nIMax; nI++){
+ if( nP < pPLCF_PosArray[nI] ){
+ nIdx = nI - 1; // nI - 1 ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+#endif
+ nIdx = nIMax; // Nicht gefunden, groesser als alle Eintraege
+ return FALSE;
+}//4,11,0,11,4,0,0,0,0,0,11,11,11,11,
+
+BOOL WW8PLCF::Get( long& rStart, long& rEnd, void*& rpValue )
+{
+ if ( nIdx >= nIMax )
+ {
+ rStart = rEnd = LONG_MAX;
+ return FALSE;
+ }
+ rStart = pPLCF_PosArray[ nIdx ];
+ rEnd = pPLCF_PosArray[ nIdx + 1 ];
+ rpValue = (void*)&pPLCF_Contents[nIdx * nStru];
+ return TRUE;
+}
+
+long WW8PLCF::Where()
+{
+ if ( nIdx >= nIMax )
+ return LONG_MAX;
+
+ return pPLCF_PosArray[nIdx];
+}
+
+//-----------------------------------------
+// WW8PLCFpcd
+//-----------------------------------------
+
+WW8PLCFpcd::WW8PLCFpcd( SvStream* pSt, long nFilePos, long nPLCF, long nStruct )
+:nStru( nStruct )
+{
+ nIMax = ( nPLCF - 4 ) / ( 4 + nStruct );
+ pPLCF_PosArray = new INT32[ ( nPLCF + 3 ) / 4 ]; // Pointer auf Pos-Array
+
+ long nOldPos = pSt->Tell();
+
+ pSt->Seek( nFilePos );
+ pSt->Read( pPLCF_PosArray, nPLCF );
+#ifdef __BIGENDIAN
+ {
+ for( long nI = 0; nI <= nIMax; nI++ )
+ pPLCF_PosArray[nI] = SWAPLONG( pPLCF_PosArray[nI] );
+ }
+#endif // __BIGENDIAN
+
+ pPLCF_Contents = (BYTE*)&pPLCF_PosArray[nIMax + 1]; // Pointer auf Inhalts-Array
+
+ for( INT32 nI = 0; nI < nIMax; nI++ )
+ {
+ ULONG nKey = (ULONG)(0x8FFFFFFF & ((WW8_PCD1&)pPLCF_Contents[nI * nStru]).fc);
+ aFC_sort.Insert( nKey, nI );
+ }
+
+ pSt->Seek( nOldPos );
+}
+
+
+ULONG WW8PLCFpcd::FindIdx( WW8_FC nFC ) const
+{
+ ULONG nFound;
+ if( !aFC_sort.SearchKey( nFC, &nFound ) )
+ {
+ if( !nFound )
+ nFound = ULONG_MAX;
+ else
+ --nFound; // we were behind the list because nFc is greater max. list entry
+ }
+ return ULONG_MAX == nFound ? ULONG_MAX : aFC_sort.GetObject( nFound );
+}
+
+
+// Bei nStartPos < 0 wird das erste Element des PLCFs genommen
+WW8PLCFpcd_Iter::WW8PLCFpcd_Iter( WW8PLCFpcd& rPLCFpcd, long nStartPos /* = -1 */ )
+:rPLCF( rPLCFpcd ), nIdx( 0 )
+{
+ if( nStartPos >= 0 )
+ SeekPos( nStartPos );
+}
+
+BOOL WW8PLCFpcd_Iter::SeekPos( long nPos )
+{
+ long nP = nPos;
+
+ if( nP < rPLCF.pPLCF_PosArray[0] )
+ {
+ nIdx = 0;
+ return FALSE; // Nicht gefunden: nPos unterhalb kleinstem Eintrag
+ }
+ // Search from beginning?
+ if( (1 > nIdx) || (nP < rPLCF.pPLCF_PosArray[ nIdx-1 ]) )
+ nIdx = 1;
+
+ long nI = nIdx ? nIdx : 1;
+ long nEnd = rPLCF.nIMax;
+#ifndef KHZ_TEST0
+ for(int n = (1==nIdx ? 1 : 2); n; --n )
+ {
+ for( ; nI <=nEnd; ++nI)
+ { // Suchen mit um 1 erhoehtem Index
+ if( nP < rPLCF.pPLCF_PosArray[nI] )
+ { // Position gefunden
+ nIdx = nI - 1; // nI - 1 ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+ nI = 1;
+ nEnd = nIdx-1;
+ }
+#else
+ for( nI=1; nI<=rPLCF.nIMax; nI++){ // Suchen mit um 1 erhoehtem Index
+ if( nP < rPLCF.pPLCF_PosArray[nI] ){// Position gefunden
+ nIdx = nI - 1; // nI - 1 ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+#endif
+ nIdx = rPLCF.nIMax; // Nicht gefunden, groesser als alle Eintraege
+ return FALSE;
+}//0,0,...0,1,0,0,1,0,0,1,1,...1,2,1,1,2,1,1,2,2,...2,4,2,2,3,2,2,3,3,...3,5,7,8,d,10,11,
+
+/*
+BOOL WW8PLCFpcd_Iter::SeekMaxMainFC( WW8Fib& rWwF, long& rMaxPosData )
+{
+ long nCpStart, nCpEnd;
+ void* pData;
+ nIdx = rPLCF.nIMax-1;
+ if( !Get( nCpStart, nCpEnd, pData ) )
+ {
+ ASSERT( !this, "SeekMaxMainFC findet Eintrag zu nIdx nicht" );
+ return FALSE;
+ }
+ BOOL bIsUnicode;
+ WW8_FC nActPosData = WW8PLCFx_PCD::TransformPieceAddress(
+ SVBT32ToLong( ( (WW8_PCD*)pData )->fc ),
+ &bIsUnicode );
+
+// rMaxPosData = nActPosData + ((rWwF.ccpText - nCpStart) * (bIsUnicode ? 2 : 1));
+
+ rMaxPosData = nActPosData + rWwF.ccpText - nCpStart;
+
+ return (0 < rMaxPosData);
+}
+*/
+
+BOOL WW8PLCFpcd_Iter::Get( long& rStart, long& rEnd, void*& rpValue )
+{
+ if( nIdx >= rPLCF.nIMax )
+ {
+ rStart = rEnd = LONG_MAX;
+ return FALSE;
+ }
+ rStart = rPLCF.pPLCF_PosArray[nIdx];
+ rEnd = rPLCF.pPLCF_PosArray[nIdx + 1];
+ rpValue = (void*)&rPLCF.pPLCF_Contents[nIdx * rPLCF.nStru];
+#ifdef DEBUG
+ WW8_PCD1* p = (WW8_PCD1*)rpValue;
+ p = p;
+#endif
+ return TRUE;
+}
+
+long WW8PLCFpcd_Iter::Where()
+{
+ if ( nIdx >= rPLCF.nIMax )
+ return LONG_MAX;
+
+ return rPLCF.pPLCF_PosArray[nIdx];
+}
+
+//-----------------------------------------
+
+WW8PLCFx_Fc_FKP::WW8Fkp::WW8Fkp( BYTE nFibVer, SvStream* pSt, SvStream* pDataSt,
+ long _nFilePos, long nItemSiz,
+ ePLCFT ePl, WW8_FC nStartFc )
+:nItemSize( nItemSiz ), nFilePos( _nFilePos ), ePLCF( ePl ), nIdx( 0 )
+{
+ nVersion = nFibVer;
+
+ pFkp = (BYTE*)new INT32[128]; // 512 Byte
+
+ long nOldPos = pSt->Tell();
+
+ pSt->Seek( nFilePos );
+ pSt->Read( pFkp, 512 );
+ nIMax = pFkp[511];
+#ifdef __BIGENDIAN
+ register UINT32* p;
+ for( nIdx = 0, p = (UINT32*)pFkp; nIdx <= nIMax; nIdx++, p++ )
+ *p = SWAPLONG( *p );
+#endif // __BIGENDIAN
+
+
+ // Pointer auf Offset-Bereich in *pFkp
+ BYTE* pOfs = pFkp + (nIMax + 1) * 4;
+
+ pGrpprl = new WW8Grpprl[nIMax];
+ memset( pGrpprl, 0, sizeof( WW8Grpprl )*nIMax );
+
+ WW8Grpprl* pTmpGrpprl = pGrpprl;
+ for( nIdx = 0; nIdx < nIMax; nIdx++, pTmpGrpprl++ )
+ {
+ USHORT nOfs = (*(pOfs + nIdx * nItemSize)) * 2;
+
+ if ( nOfs )
+ {
+ switch ( ePLCF )
+ {
+ case CHP:
+ pTmpGrpprl->nLen = (short)pFkp[ nOfs ];
+ pTmpGrpprl->pData = pFkp + nOfs + 1;
+ break;
+ case PAP:
+ BYTE nDelta = 0;//(8 > nVersion) ? 0 : 1;
+ pTmpGrpprl->nLen = pFkp[ nOfs ];
+ if( 8 <= nVersion && !pTmpGrpprl->nLen )
+ {
+ pTmpGrpprl->nLen = pFkp[ nOfs+1 ];
+ nDelta++;
+ }
+ pTmpGrpprl->nIStd = SVBT16ToShort( (BYTE*) pFkp+nOfs+1+nDelta );
+ pTmpGrpprl->pData = pFkp + nOfs + 3+nDelta ;
+ USHORT nSpId = WW8GetSprmId( nVersion, pTmpGrpprl->pData );
+ if( 0x6645 == nSpId || 0x6646 == nSpId )
+ {
+ UINT32 nPos = *(UINT32*)(pTmpGrpprl->pData + 2);
+ UINT32 nCurr = pDataSt->Tell();
+ pDataSt->Seek( nPos );
+ *pDataSt >> pTmpGrpprl->nLen;
+ pTmpGrpprl->pData = new BYTE[pTmpGrpprl->nLen];
+ pTmpGrpprl->bMustDelete = TRUE;
+ pDataSt->Read( pTmpGrpprl->pData, pTmpGrpprl->nLen );
+
+ pDataSt->Seek( nCurr );
+ }
+ else
+ {
+ pTmpGrpprl->nLen *= 2;
+ pTmpGrpprl->nLen -= 2;
+ }
+ break;
+ }
+ }
+ }
+
+ nIdx = 0;
+
+ if( nStartFc >= 0 )
+ SeekPos( nStartFc );
+
+ pSt->Seek( nOldPos );
+}
+
+WW8PLCFx_Fc_FKP::WW8Fkp::~WW8Fkp()
+{
+ WW8Grpprl* pTmpGrpprl = pGrpprl;
+ for( nIdx = 0; nIdx < nIMax; nIdx++, pTmpGrpprl++ )
+ {
+ if( pTmpGrpprl->bMustDelete )
+ delete pTmpGrpprl->pData;
+ }
+ delete pGrpprl;
+ delete pFkp;
+}
+
+BOOL WW8PLCFx_Fc_FKP::WW8Fkp::SeekPos( WW8_FC nFc )
+{
+ if( nFc < ((WW8_FC*)pFkp)[0] )
+ {
+ nIdx = 0;
+ return FALSE; // Nicht gefunden: nPos unterhalb kleinstem Eintrag
+ }
+ // Search from beginning?
+ if( (1 > nIdx) || (nFc < ((WW8_FC*)pFkp)[ nIdx-1 ]) )
+ nIdx = 1;
+
+ long nI = nIdx ? nIdx : 1;
+ long nEnd = nIMax;
+#ifndef KHZ_TEST0
+ for(int n = (1==nIdx ? 1 : 2); n; --n )
+ {
+ for( ; nI <=nEnd; ++nI)
+ { // Suchen mit um 1 erhoehtem Index
+ if( nFc < ((WW8_FC*)pFkp)[nI] )
+ { // Position gefunden
+ nIdx = nI - 1; // nI - 1 ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+ nI = 1;
+ nEnd = nIdx-1;
+ }
+#else
+ for( nI=1; nI<=nIMax; nI++){ // Suchen mit um 1 erhoehtem Index
+ if( nFc < ((WW8_FC*)pFkp)[nI] ){ // Position gefunden
+ nIdx = nI - 1; // nI - 1 ist der richtige Index
+ return TRUE; // ... und fertig
+ }
+ }
+#endif
+ nIdx = nIMax; // Nicht gefunden, groesser als alle Eintraege
+ return FALSE;
+}//32,0,1,32,0,0,1,1,2,2,3,4,5,
+
+BYTE* WW8PLCFx_Fc_FKP::WW8Fkp::Get( WW8_FC& rStart, WW8_FC& rEnd, short& rLen )
+{
+ rLen = 0;
+
+ if( nIdx >= nIMax ){
+ rStart = LONG_MAX;
+ return 0;
+ }
+
+ rStart = ((WW8_FC*)pFkp)[nIdx ];
+ rEnd = ((WW8_FC*)pFkp)[nIdx+1];
+
+ BYTE* pSprms = GetLenAndIStdAndSprms( rLen );
+ return pSprms;
+}
+
+void WW8PLCFx_Fc_FKP::WW8Fkp::SetIdx( ULONG nI )
+{
+ if( nI < nIMax) nIdx = (short)nI;
+}
+
+BYTE* WW8PLCFx_Fc_FKP::WW8Fkp::GetLenAndIStdAndSprms(short& rLen)
+{
+ WW8Grpprl* pTmpGrpprl = pGrpprl + nIdx;
+
+ rLen = pTmpGrpprl->nLen;
+
+ return pTmpGrpprl->pData;
+}
+
+
+BYTE* WW8FindSprm( USHORT nId, long nLen, BYTE* pSprms, BYTE nVersion )
+{
+ WW8SprmIter aSprmIter( pSprms, nLen, nVersion );
+
+ while( aSprmIter.GetSprms() )
+ {
+ if( aSprmIter.GetAktId() == nId )
+ return aSprmIter.GetAktParams(); // SPRM found!
+ aSprmIter++;
+ }
+
+ return 0; // SPRM _not_ found
+}
+
+
+BYTE* WW8PLCFx_Fc_FKP::WW8Fkp::HasSprm( USHORT nId )
+{
+ if( nIdx >= nIMax )
+ return 0;
+
+ short nLen;
+ BYTE* pSprms = GetLenAndIStdAndSprms( nLen );
+
+ return WW8FindSprm( nId, nLen, pSprms, nVersion );
+}
+
+ULONG WW8PLCFx_Fc_FKP::WW8Fkp::GetParaHeight() const
+{
+ if( ePLCF != PAP ){
+ ASSERT( !this, "Fkp::GetParaHeight: Falscher Fkp" );
+ return 0;
+ }
+ if( nIdx >= nIMax )
+ return 0;
+
+ WW8_PHE_Base* pPhe = (WW8_PHE_Base*)( (pFkp + (nIMax + 1) * 4)
+ + ( nIdx * nItemSize ) + 1 );
+
+ if( pPhe->aBits1 & 0x2 ) // fUnk
+ return 0; // invalid
+
+ if( pPhe->aBits1 & 0x4 ){ // fDiffLines
+ return SVBT16ToShort( pPhe->dyl ); // Gesamthoehe
+ }else{ // nlMac gleich hohe Zeilen
+ INT32 nH = (INT16)SVBT16ToShort( pPhe->dyl ); // Zeilenhoehe
+ if( nH < 0 ) // negative Werte wollen wir
+ nH = 0; // nicht
+ nH *= (INT32)pPhe->nlMac; // Hoehe einer Zeile * Zeilen
+ return (ULONG)nH;
+ }
+}
+
+//-----------------------------------------
+
+void WW8PLCFx::GetSprms( WW8PLCFxDesc* p )
+{
+ ASSERT( !this, "Falsches GetSprms gerufen" );
+ p->nStartPos = p->nEndPos = LONG_MAX;
+ p->nSprmsLen = 0;
+ p->pMemPos = 0;
+ p->bRealLineEnd = FALSE;
+ return;
+}
+
+long WW8PLCFx::GetNoSprms( long& rStart, long& rEnd, long& rLen )
+{
+ ASSERT( !this, "Falsches GetNoSprms gerufen" );
+ rStart = rEnd = LONG_MAX;
+ rLen = 0;
+ return 0;
+}
+
+// ...Idx2: Default: ignorieren
+ULONG WW8PLCFx::GetIdx2() const
+{
+ return 0;
+}
+
+void WW8PLCFx::SetIdx2( ULONG nIdx )
+{
+}
+
+//-----------------------------------------
+BOOL WW8PLCFx_Fc_FKP::NewFkp()
+{
+ long nPLCFStart, nPLCFEnd;
+ void* pPage;
+
+ static int __READONLY_DATA WW8FkpSizeTabVer6[ PLCF_END ] = {
+ 1, 7, 0 /*, 0, 0, 0*/ };
+ static int __READONLY_DATA WW8FkpSizeTabVer8[ PLCF_END ] = {
+ 1, 13, 0 /*, 0, 0, 0*/ };
+ const int* pFkpSizeTab;
+ switch( GetVersion() )
+ {
+ case 6:
+ case 7: pFkpSizeTab = WW8FkpSizeTabVer6;
+ break;
+ case 8: pFkpSizeTab = WW8FkpSizeTabVer8;
+ break;
+ default:// Programm-Fehler!
+ ASSERT( !this, "Es wurde vergessen, nVersion zu kodieren!" );
+ return FALSE;
+ }
+
+ if (!pPLCF->Get( nPLCFStart, nPLCFEnd, pPage ))
+ {
+ DELETEZ( pFkp );
+ return FALSE; // PLCF fertig abgearbeitet
+ }
+ (*pPLCF)++;
+ long nPo = SVBT16ToShort( (unsigned char *)pPage );
+ nPo <<= 9; // shift als LONG
+
+ long nAktFkpFilePos = pFkp ? pFkp->GetFilePos() : -1;
+ if( nAktFkpFilePos != nPo )
+ {
+ DELETEZ( pFkp );
+ pFkp = new WW8Fkp( GetVersion(), pFKPStrm, pDataStrm, nPo,
+ pFkpSizeTab[ ePLCF ],
+ ePLCF, nStartFc );
+ }
+ else // khz test1 //
+ {
+ pFkp->SetIdx( 0 );
+ if( nStartFc >= 0 )
+ pFkp->SeekPos( nStartFc );
+ }
+
+ nStartFc = -1; // Nur das erste Mal
+ return TRUE;
+}
+
+WW8PLCFx_Fc_FKP::WW8PLCFx_Fc_FKP(SvStream* pSt, SvStream* pTblSt,
+ SvStream* pDataSt, WW8Fib& rFib, ePLCFT ePl,
+ WW8_FC nStartFcL,
+ WW8PLCFx_PCDAttrs* pPLCFx_PCDAttrs_)
+ : WW8PLCFx( rFib.nVersion, TRUE ),
+ pFKPStrm( pSt ),
+ pDataStrm( pDataSt ),
+ ePLCF( ePl ),
+ pFkp( 0 ),
+ nStartFc( nStartFcL ),
+ pPCDAttrs( pPLCFx_PCDAttrs_)
+{
+ long nLenStruct = (8 > rFib.nVersion) ? 2 : 4;
+ if( ePl == CHP )
+ pPLCF = new WW8PLCF( pTblSt, rFib.fcPlcfbteChpx,
+ rFib.lcbPlcfbteChpx,
+ nLenStruct,
+ nStartFc,
+ rFib.pnChpFirst,
+ rFib.cpnBteChp );
+ else
+ pPLCF = new WW8PLCF( pTblSt, rFib.fcPlcfbtePapx,
+ rFib.lcbPlcfbtePapx,
+ nLenStruct,
+ nStartFc,
+ rFib.pnPapFirst,
+ rFib.cpnBtePap );
+}
+
+WW8PLCFx_Fc_FKP::~WW8PLCFx_Fc_FKP()
+{
+ delete pFkp;
+ delete pPLCF;
+}
+
+
+ULONG WW8PLCFx_Fc_FKP::GetIdx() const
+{
+ ULONG u = pPLCF->GetIdx() << 8;
+ if( pFkp )
+ u |= pFkp->GetIdx();
+ return u;
+}
+
+void WW8PLCFx_Fc_FKP::SetIdx( ULONG nIdx )
+{
+ if( !( nIdx & 0xffffff00L ) )
+ {
+ pPLCF->SetIdx( nIdx >> 8 );
+ DELETEZ( pFkp );
+
+ }
+ else
+ { // Es gab einen Fkp
+ // Lese PLCF um 1 Pos zurueck, um
+ pPLCF->SetIdx( ( nIdx >> 8 ) - 1 ); // die Adresse des Fkp wiederzubekommen
+ if ( NewFkp() ) // und lese Fkp wieder ein
+ pFkp->SetIdx( nIdx & 0xff ); // Dann stelle Fkp-Pos wieder ein
+ }
+}
+
+
+BOOL WW8PLCFx_Fc_FKP::SeekPos( WW8_FC nFcPos )
+{
+ // StartPos for next Where()
+ nStartFc = nFcPos;
+
+ // find StartPos for next pPLCF->Get()
+ BOOL bRet = pPLCF->SeekPos( nFcPos );
+
+ // make FKP invalid?
+ long nPLCFStart, nPLCFEnd;
+ void* pPage;
+ if( pFkp && pPLCF->Get( nPLCFStart, nPLCFEnd, pPage ) )
+ {
+ long nPo = SVBT16ToShort( (unsigned char *)pPage );
+ nPo <<= 9; // shift als LONG
+ if( nPo != pFkp->GetFilePos() )
+ DELETEZ( pFkp );
+ else
+ pFkp->SeekPos( nFcPos );
+ }
+ return bRet;
+}
+
+WW8_FC WW8PLCFx_Fc_FKP::Where()
+{
+// if( bDontModify )
+// return pFkp ? pFkp->Where() : 0;
+
+ if( !pFkp )
+ {
+ if( !NewFkp() )
+ return LONG_MAX;
+ }
+ WW8_FC nP = pFkp->Where();
+ if( nP != LONG_MAX )
+ return nP;
+
+ DELETEZ( pFkp ); // FKP beendet -> hole neuen
+ return Where(); // am einfachsten rekursiv
+}
+
+
+
+BYTE* WW8PLCFx_Fc_FKP::GetSprms( WW8_FC& rStart, WW8_FC& rEnd, long& rLen )
+{
+ rLen = 0; // Default
+ rStart = rEnd = LONG_MAX;
+
+ if( !pFkp ){ // Fkp nicht da ?
+ if( !NewFkp() )
+ return 0;
+ }
+
+ short nLen;
+ BYTE* pPos = pFkp->Get( rStart, rEnd, nLen );
+ if( rStart == LONG_MAX )
+ { // nicht gefunden
+ return 0;
+ }
+ rLen = nLen;
+ return pPos;
+}
+
+
+
+WW8PLCFx& WW8PLCFx_Fc_FKP::operator ++( int )
+{
+ if( !pFkp ){
+// ASSERT( FALSE, "pFkp fehlt");
+// return *this;
+ if( !NewFkp() )
+ return *this;
+ }
+
+ (*pFkp)++;
+ if( pFkp->Where() == LONG_MAX ){
+ NewFkp();
+ }
+ return *this;
+}
+
+USHORT WW8PLCFx_Fc_FKP::GetIstd() const
+{
+ return (pFkp) ? pFkp->GetIstd() : 0xffff;
+}
+
+
+void WW8PLCFx_Fc_FKP::GetPCDSprms( WW8PLCFxDesc& rDesc )
+{
+ rDesc.pMemPos = 0;
+ rDesc.nSprmsLen = 0;
+ if( pPCDAttrs )
+ {
+ if( !pFkp )
+ {
+ DBG_WARNING( "+Problem: GetPCDSprms: NewFkp noetig ( kein const moeglich )" );
+ if( !NewFkp() )
+ return;
+ }
+
+ long nFcPos, nEnd; // FCs
+ short nLen;
+ pFkp->Get( nFcPos, nEnd, nLen );
+
+ WW8PLCFpcd_Iter* pIter = pPCDAttrs->GetIter();
+
+ /**************************************/
+ ULONG nSaveIdx = pIter->GetIdx();
+ for( int nLoop = 0; 2 > nLoop; ++nLoop )
+ {
+ long nCpStart, nCpEnd;
+ void* pData;
+
+ if( pIter->Get( nCpStart, nCpEnd, pData ) )
+ {
+ BOOL bIsUnicode = FALSE;
+ INT32 nFcStart = SVBT32ToLong( ((WW8_PCD*)pData)->fc );
+ if( 7 < GetVersion() )
+ nFcStart = WW8PLCFx_PCD::TransformPieceAddress( nFcStart, bIsUnicode );
+
+ INT32 nLen = (nCpEnd - nCpStart) * (bIsUnicode ? 2 : 1);
+
+ if( nFcPos >= nFcStart && nFcPos < nFcStart + nLen )
+ {
+ // gefunden
+ pPCDAttrs->GetSprms( &rDesc );
+ break;
+ }
+ }
+ if( !nLoop )
+ {
+ ULONG nFoundIdx = pIter->FindIdx( nFcPos );
+ if( nFoundIdx > pIter->GetIMax())
+ {
+ break;
+ }
+ pIter->SetIdx( nFoundIdx );
+ }
+ }
+ pIter->SetIdx( nSaveIdx );
+ /**************************************/
+ }
+}
+
+
+BYTE* WW8PLCFx_Fc_FKP::HasSprm( USHORT nId )
+{ // const waere schoener, aber dafuer
+ // muesste NewFkp() ersetzt werden
+ // oder wegfallen
+ if( !pFkp )
+ {
+ DBG_WARNING( "+Motz: HasSprm: NewFkp noetig ( kein const moeglich )" );
+ // Passiert bei BugDoc 31722
+ if( !NewFkp() )
+ return 0;
+ }
+
+ BYTE* pRes = pFkp->HasSprm( nId );
+
+ if( !pRes )
+ {
+ WW8PLCFxDesc aDesc;
+ GetPCDSprms( aDesc );
+
+ if( aDesc.pMemPos )
+ {
+ pRes = WW8FindSprm( nId, aDesc.nSprmsLen,
+ aDesc.pMemPos, pFkp->GetVersion() );
+ }
+ }
+ return pRes;
+}
+
+
+ULONG WW8PLCFx_Fc_FKP::GetParaHeight() const
+{
+ if( !pFkp ){
+ ASSERT( !this, "GetParaHeight: pFkp nicht da" );
+ return 0;
+ }
+ return pFkp->GetParaHeight();
+}
+
+//-----------------------------------------
+
+WW8PLCFx_Cp_FKP::WW8PLCFx_Cp_FKP( SvStream* pSt, SvStream* pTblSt, SvStream* pDataSt,
+ const WW8ScannerBase& rBase,
+ ePLCFT ePl )
+ : WW8PLCFx_Fc_FKP( pSt, pTblSt, pDataSt, *rBase.pWw8Fib, ePl,
+ rBase.WW8Cp2Fc( 0 ),
+ rBase.pPLCFx_PCDAttrs ),
+ rSBase( rBase ),
+// nFcMin( rBase.pWrFib.fcMin ),
+ nAttrStart( -1 ), nAttrEnd( -1 ),
+ bLineEnd( FALSE ),
+ bComplex( (7 < rBase.pWw8Fib->nVersion) || (0 != rBase.pWw8Fib->fComplex) )
+{
+ ResetAttrStartEnd();
+ pPcd = rSBase.pPiecePLCF ? new WW8PLCFx_PCD(
+ rBase.pWw8Fib->nVersion, rBase.pPiecePLCF, 0,
+ ((6 == GetVersion()) || (7 == GetVersion())) )
+ : 0;
+}
+
+WW8PLCFx_Cp_FKP::~WW8PLCFx_Cp_FKP()
+{
+ delete pPcd;
+}
+
+void WW8PLCFx_Cp_FKP::ResetAttrStartEnd()
+{
+ nAttrStart = -1;
+ nAttrEnd = -1;
+ bLineEnd = FALSE;
+}
+
+ULONG WW8PLCFx_Cp_FKP::GetPCDIMax() const
+{
+ return pPcd ? pPcd->GetIMax() : 0;
+}
+
+ULONG WW8PLCFx_Cp_FKP::GetPCDIdx() const
+{
+ return pPcd ? pPcd->GetIdx() : 0;
+}
+
+void WW8PLCFx_Cp_FKP::SetPCDIdx( ULONG nIdx )
+{
+ if( pPcd )
+ pPcd->SetIdx( nIdx );
+}
+
+BOOL WW8PLCFx_Cp_FKP::SeekPos( WW8_CP nCpPos )
+{
+/*
+ WW8_FC nTargetFc = WW8Cp2Fc( nCpPos, nFcMin );
+ return (LONG_MAX != nTargetFc)
+ && WW8PLCFx_Fc_FKP::SeekPos( nTargetFc );
+*/
+ if( pPcd ) // Complex
+ {
+ if( !pPcd->SeekPos( nCpPos ) ) // Piece setzen
+ return FALSE;
+ return WW8PLCFx_Fc_FKP::SeekPos( pPcd->AktPieceStartCp2Fc( nCpPos ) );
+ }
+ // KEINE Piece-Table !!!
+ return WW8PLCFx_Fc_FKP::SeekPos( rSBase.WW8Cp2Fc( nCpPos /*,TRUE*/ ) );
+}
+
+WW8_CP WW8PLCFx_Cp_FKP::Where()
+{
+ WW8_FC nFc = WW8PLCFx_Fc_FKP::Where();
+/* if( LONG_MAX == nFc )
+ return LONG_MAX;*/
+ if( pPcd )
+ return pPcd->AktPieceStartFc2Cp( nFc ); // Piece ermitteln
+ return rSBase.WW8Fc2Cp( nFc/*,TRUE*/ ); // KEINE Piece-Table !!!
+}
+
+void WW8PLCFx_Cp_FKP::GetSprms( WW8PLCFxDesc* p )
+{
+ p->pMemPos = WW8PLCFx_Fc_FKP::GetSprms( p->nStartPos, p->nEndPos, p->nSprmsLen );
+
+#ifdef DEBUG
+ if( ePLCF == PAP ) // um hier einen Brechpunkt zu setzen
+ ePLCF = PAP;
+#endif
+
+ if( pPcd ) // Piece-Table vorhanden !!!
+ {
+ if( (nAttrStart > nAttrEnd)
+ || (nAttrStart == -1) ) // Init ( noch kein ++ gerufen )
+ {
+ eCutT eC = pPcd->AktPieceFc2Cp( p->nStartPos, p->nEndPos );
+ p->bRealLineEnd = !( eC & CUT_END ) && ePLCF == PAP;
+ }
+ else
+ {
+ p->nStartPos = nAttrStart;
+ p->nEndPos = nAttrEnd;
+ p->bRealLineEnd = bLineEnd;
+ }
+ }
+ else // KEINE Piece-Table !!!
+ {
+ p->nStartPos = rSBase.WW8Fc2Cp( p->nStartPos/*,TRUE*/ );
+ p->nEndPos = rSBase.WW8Fc2Cp( p->nEndPos/*,TRUE*/ );
+ p->bRealLineEnd = ePLCF == PAP;
+ }
+}
+
+
+// WW8PLCF_Cp_Fkp::SearchParaEnd kann einfacher durchgefuehrt werden, wenn das
+// Flag "Zeilenende im Piece" in der Piecetable ausgewertet wird.
+void WW8PLCFx_Cp_FKP::SearchParaEnd( long nOldEndCp )
+{
+ if( !bComplex )
+ {
+ ASSERT( !this, "SearchParaEnd fuer Non-Complex File gerufen" );
+ return;
+ }
+ if( ePLCF != PAP )
+ {
+ ASSERT( !this, "SearchParaEnd fuer Non-PAP gerufen" );
+ return;
+ }
+ long nFkpLen; // Fkp-Eintrag
+ long nPcdStart, nPcdEnd; // Piece-Grenzen
+
+ WW8PLCFx_Fc_FKP::GetSprms( nAttrStart, nAttrEnd, nFkpLen ); // Fkp-Eintrag holen
+/* if( (LONG_MAX == nAttrStart) || (LONG_MAX == nAttrEnd) )
+ {
+ return;
+ }*/
+ eCutT eC = pPcd->AktPieceFc2Cp( nAttrStart, nAttrEnd );
+ if( eC == CUT_NONE ) // neuer Eintrag ganz im akt. Piece
+ {
+ ASSERT( !this, "Nanu?" );
+ return; // und fertig
+ }
+ WW8PLCFpcd_Iter* pIter = pPcd->GetPLCFIter();
+ void* pData;
+ do{
+ (*pPcd)++; // naechstes Piece
+
+
+ if( GetPCDIdx() >= GetPCDIMax() )
+ {
+ nAttrStart = nAttrEnd = LONG_MAX; // kein Piece mehr vorhanden
+ return;
+ }
+
+
+ if( !pIter->Get( nPcdStart, nPcdEnd, pData ) ){ // Piece-Grenzen holen
+#ifdef DEBUG
+ WW8_PCD1* p = (WW8_PCD1*)pData;
+ p = p;
+#endif
+ nAttrStart = nAttrEnd = LONG_MAX; // kein Piece mehr vorhanden
+ return;
+ }
+#ifdef DEBUG
+ WW8_PCD1* p = (WW8_PCD1*)pData;
+ p = p;
+#endif
+
+ }while( SVBT8ToByte( ( (WW8_PCD*)pData )->aBits1 ) & 0x1 );
+ // bis NL in Piece
+
+ long nPos = rSBase.WW8Cp2Fc( nPcdStart);
+ if( !WW8PLCFx_Fc_FKP::SeekPos( nPos ) )
+ {
+// ASSERT( !this, " Can't seek to Piece Start" );
+// nAttrStart = nAttrEnd = LONG_MAX; // kein Piece mehr vorhanden
+ return;
+ }
+ WW8PLCFx_Fc_FKP::GetSprms( nAttrStart, nAttrEnd, nFkpLen ); // Fkp-Eintrag holen
+ eC = pPcd->AktPieceFc2Cp( nAttrStart, nAttrEnd ); // wird in CPs gebraucht
+
+ nAttrStart = nOldEndCp; // Aufziehen ueber ganzen Absatz, unabhaengig
+ // davon, wieviel Pieces das sind
+}
+
+WW8PLCFx& WW8PLCFx_Cp_FKP::operator ++( int )
+{
+ WW8PLCFx_Fc_FKP::operator ++( 0 );
+ if( !bComplex
+ || !pPcd ) // !pPcd: Notbremse
+ return *this;
+
+ if( GetPCDIdx() >= GetPCDIMax() ) // End of PLCF
+ {
+ nAttrStart = nAttrEnd = LONG_MAX;
+ return *this;
+ }
+
+// ohoho
+ long nFkpLen; // Fkp-Eintrag
+ long nPcdStart, nPcdEnd, nPcdLen; // Piece-Grenzen
+ long nOldEndCp = nAttrEnd;
+
+ WW8PLCFx_Fc_FKP::GetSprms( nAttrStart, nAttrEnd, nFkpLen ); // Fkp-Eintrag holen
+ eCutT eC = pPcd->AktPieceFc2Cp( nAttrStart, nAttrEnd );
+ bLineEnd = !( eC & CUT_END ) && ePLCF == PAP;
+ if( !( eC & CUT_START ) ){ // neuer Eintrag faengt im
+ // akt. Piece an
+#ifdef DEBUG
+ if( ePLCF == PAP )
+ ePLCF = PAP; // um hier einen Brechpunkt zu setzen
+ if( ePLCF == CHP )
+ ePLCF = CHP; // um hier einen Brechpunkt zu setzen
+#endif
+ return *this; // und fertig
+ }
+ // naechster Eintrag im naechsten Piece
+
+ if( ePLCF == PAP )
+ {
+ SearchParaEnd( nOldEndCp );
+ bLineEnd = TRUE;
+ return *this;
+ }
+
+ // naechstes Piece
+ bLineEnd = FALSE;
+ (*pPcd)++;
+ pPcd->GetNoSprms( nPcdStart, nPcdEnd, nPcdLen );
+ // Piece-Grenzen holen
+ if( !WW8PLCFx_Fc_FKP::SeekPos( rSBase.WW8Cp2Fc( nPcdStart ) ) )
+ {
+ ASSERT( nPcdStart == LONG_MAX, "Chp-SeekPos ging schief" );
+ nAttrStart = nAttrEnd = LONG_MAX;
+ goto Ret;
+ }
+ // Fkp-Eintrag holen
+ WW8PLCFx_Fc_FKP::GetSprms( nAttrStart, nAttrEnd, nFkpLen );
+ eC = pPcd->AktPieceFc2Cp( nAttrStart, nAttrEnd );
+Ret:
+ return *this;
+}
+
+//-----------------------------------------
+//-----------------------------------------
+
+WW8PLCFx_SEPX::WW8PLCFx_SEPX( SvStream* pSt, SvStream* pTblSt, WW8Fib& rFib, WW8_CP nStartCp )
+: pStrm( pSt ), WW8PLCFx( rFib.nVersion, TRUE ), nArrMax( 256 ), nSprmSiz( 0 )
+{
+ pPLCF = rFib.lcbPlcfsed
+ ? new WW8PLCF( pTblSt, rFib.fcPlcfsed,
+ rFib.lcbPlcfsed,
+ 12, nStartCp )
+ : 0;
+
+ pSprms = new BYTE[nArrMax]; // maximale Laenge
+}
+
+WW8PLCFx_SEPX::~WW8PLCFx_SEPX()
+{
+ delete pPLCF;
+ delete pSprms;
+}
+
+ULONG WW8PLCFx_SEPX::GetIdx() const
+{
+ return pPLCF ? pPLCF->GetIdx() : 0;
+}
+
+void WW8PLCFx_SEPX::SetIdx( ULONG nIdx )
+{
+ if( pPLCF ) pPLCF->SetIdx( nIdx );
+}
+
+BOOL WW8PLCFx_SEPX::SeekPos( WW8_CP nCpPos )
+{
+ return pPLCF ? pPLCF->SeekPos( nCpPos ) : 0;
+}
+
+WW8_CP WW8PLCFx_SEPX::Where()
+{
+ return pPLCF ? pPLCF->Where() : 0;
+}
+
+void WW8PLCFx_SEPX::GetSprms( WW8PLCFxDesc* p )
+{
+ if( !pPLCF ) return;
+
+ void* pData;
+
+ p->bRealLineEnd = FALSE;
+ if (!pPLCF->Get( p->nStartPos, p->nEndPos, pData ))
+ {
+ p->nStartPos = p->nEndPos = LONG_MAX; // PLCF fertig abgearbeitet
+ p->pMemPos = 0;
+ }
+ else
+ {
+ long nPo = SVBT32ToLong( (BYTE*)pData+2 );
+ if ( nPo == 0xffffffffL )
+ {
+ p->nStartPos = p->nEndPos = LONG_MAX; // Sepx empty
+ p->pMemPos = 0;
+ }
+ else
+ {
+ pStrm->Seek( nPo );
+ *pStrm >> nSprmSiz; // read len
+
+ if( nSprmSiz > nArrMax )
+ { // passt nicht
+ delete( pSprms );
+ nArrMax = nSprmSiz; // Hole mehr Speicher
+ pSprms = new BYTE[nArrMax];
+ }
+ pStrm->Read( pSprms, nSprmSiz ); // read Sprms
+
+ p->nSprmsLen = nSprmSiz;
+ p->pMemPos = pSprms; // return Position
+ }
+ }
+}
+
+
+WW8PLCFx& WW8PLCFx_SEPX::operator ++( int )
+{
+ if( pPLCF )
+ (*pPLCF)++;
+ return *this;
+}
+
+
+BYTE* WW8PLCFx_SEPX::HasSprm( USHORT nId ) const
+{
+ return pPLCF ? WW8FindSprm( nId, nSprmSiz, pSprms, GetVersion() )
+ : 0;
+}
+
+
+BYTE* WW8PLCFx_SEPX::HasSprm( USHORT nId, BYTE* pOtherSprms,
+ long nOtherSprmSiz ) const
+{
+ return pPLCF ? WW8FindSprm( nId, nOtherSprmSiz, pOtherSprms, GetVersion() )
+ : 0;
+}
+
+
+
+BOOL WW8PLCFx_SEPX::Find4Sprms(USHORT nId1, USHORT nId2, USHORT nId3, USHORT nId4,
+ BYTE*& p1, BYTE*& p2, BYTE*& p3, BYTE*& p4 ) const
+{
+ if( !pPLCF ) return 0;
+
+ BOOL bFound = FALSE;
+ p1 = 0;
+ p2 = 0;
+ p3 = 0;
+ p4 = 0;
+
+ BYTE* pSp = pSprms;
+ short i;
+ BYTE nDelta = ( 8 > GetVersion()) ? 0 : 1;
+ for( i=0; i+1+nDelta < nSprmSiz; )
+ {
+ // Sprm gefunden?
+ USHORT nAktId = WW8GetSprmId( GetVersion(), pSp );
+ BOOL bOk = TRUE;
+ if( nAktId == nId1 )
+ p1 = pSp
+ + 1 + nDelta
+ + WW8SprmDataOfs( nId1 );
+ else
+ if( nAktId == nId2 )
+ p2 = pSp
+ + 1 + nDelta
+ + WW8SprmDataOfs( nId2 );
+ else
+ if( nAktId == nId3 )
+ p3 = pSp
+ + 1 + nDelta
+ + WW8SprmDataOfs( nId3 );
+ else
+ if( nAktId == nId4 )
+ p4 = pSp
+ + 1 + nDelta
+ + WW8SprmDataOfs( nId4 );
+ else
+ bOk = FALSE;
+ bFound |= bOk;
+ // erhoehe Zeiger, so dass er auf naechsten Sprm zeigt
+ short x = WW8GetSprmSizeBrutto( GetVersion(), pSp, &nAktId );
+ i += x;
+ pSp += x;
+ }
+ return bFound;
+}
+
+BYTE* WW8PLCFx_SEPX::HasSprm( USHORT nId, BYTE n2nd ) const
+{
+ if( !pPLCF ) return 0;
+
+ BYTE* pSp = pSprms;
+ short i;
+ BYTE nDelta = ( 8 > GetVersion()) ? 0 : 1;
+
+ for( i=0; i+1+nDelta < nSprmSiz; )
+ {
+ // Sprm gefunden?
+ USHORT nAktId = WW8GetSprmId( GetVersion(), pSp );
+ if( ( nAktId == nId )
+ && ( pSp[ 1 + nDelta ] == n2nd ) )
+ return pSp
+ + 1 + nDelta
+ + WW8SprmDataOfs( nId );
+ // erhoehe Zeiger, so dass er auf naechsten Sprm zeigt
+ short x = WW8GetSprmSizeBrutto( GetVersion(), pSp, &nAktId );
+ i += x;
+ pSp += x;
+ }
+ return 0; // Sprm nicht gefunden
+}
+
+//-----------------------------------------
+//-----------------------------------------
+
+WW8PLCFx_SubDoc::WW8PLCFx_SubDoc( SvStream* pSt, BYTE nVersion,
+ WW8_CP nStartCp,
+ long nFcRef, long nLenRef,
+ long nFcTxt, long nLenTxt,
+ long nStruct )
+ : WW8PLCFx( nVersion, FALSE ), pRef( 0 ), pTxt( 0 )
+{
+ if( nLenRef && nLenTxt )
+ {
+ pRef = new WW8PLCF( pSt, nFcRef, nLenRef, nStruct, nStartCp );
+ pTxt = new WW8PLCF( pSt, nFcTxt, nLenTxt, 0, nStartCp );
+ }
+}
+
+WW8PLCFx_SubDoc::~WW8PLCFx_SubDoc()
+{
+ delete pRef;
+ delete pTxt;
+}
+
+ULONG WW8PLCFx_SubDoc::GetIdx() const
+{
+ if( pRef )
+ return ( pRef->GetIdx() << 16
+ | pTxt->GetIdx() ); // Wahrscheinlich pTxt... nicht noetig
+ return 0;
+}
+
+void WW8PLCFx_SubDoc::SetIdx( ULONG nIdx )
+{
+ if( pRef )
+ {
+ pRef->SetIdx( nIdx >> 16 );
+ pTxt->SetIdx( nIdx & 0xffff ); // Wahrscheinlich pTxt... nicht noetig
+ }
+}
+
+BOOL WW8PLCFx_SubDoc::SeekPos( WW8_CP nCpPos )
+{
+ return ( pRef ) ? pRef->SeekPos( nCpPos ) : FALSE;
+}
+
+WW8_CP WW8PLCFx_SubDoc::Where()
+{
+ return ( pRef ) ? pRef->Where() : LONG_MAX;
+}
+
+long WW8PLCFx_SubDoc::GetNoSprms( WW8_CP& rStart, long& rEnd, long& rLen )
+{
+ void* pData;
+ long nSt, nE;
+ rEnd = LONG_MAX;
+
+ if ( !pRef )
+ {
+ rStart = LONG_MAX; // Es gibt keine Noten
+ rLen = 0;
+ return -1;
+ }
+
+ ULONG nNr = pRef->GetIdx();
+
+ if (!pRef->Get( rStart, nE, pData ))
+ {
+ rStart = LONG_MAX; // PLCF fertig abgearbeitet
+ rLen = 0;
+ return -1;
+ }
+ pTxt->SetIdx( nNr );
+
+ if(!pTxt->Get( nSt, rLen, pData ))
+ {
+ rStart = LONG_MAX; // PLCF fertig abgearbeitet
+ rLen = 0;
+ return -1;
+ }
+
+ rLen -= nSt;
+ return nSt;
+}
+
+WW8PLCFx& WW8PLCFx_SubDoc::operator ++( int )
+{
+ if( pRef && pTxt )
+ {
+ (*pRef)++;
+ (*pTxt)++;
+ }
+ return *this;
+}
+
+
+//-----------------------------------------
+// Felder
+//-----------------------------------------
+
+WW8PLCFx_FLD::WW8PLCFx_FLD( SvStream* pSt, WW8Fib& rMyFib,
+ short nType, WW8_CP nStartCp )
+ : WW8PLCFx( rMyFib.nVersion, FALSE ), rFib( rMyFib ), pPLCF( 0 )
+{
+
+ long nFc, nLen;
+
+ switch( nType )
+ {
+ case MAN_HDFT: nFc = rFib.fcPlcffldHdr;
+ nLen = rFib.lcbPlcffldHdr;
+ break;
+ case MAN_FTN: nFc = rFib.fcPlcffldFtn;
+ nLen = rFib.lcbPlcffldFtn;
+ break;
+ case MAN_EDN: nFc = rFib.fcPlcffldEdn;
+ nLen = rFib.lcbPlcffldEdn;
+ break;
+ case MAN_AND: nFc = rFib.fcPlcffldAtn;
+ nLen = rFib.lcbPlcffldAtn;
+ break;
+ case MAN_TXBX: nFc = rFib.fcPlcffldTxbx;
+ nLen = rFib.lcbPlcffldTxbx;
+ break;
+ case MAN_TXBX_HDFT:
+ nFc = rFib.fcPlcffldHdrTxbx;
+ nLen = rFib.lcbPlcffldHdrTxbx;
+ break;
+ default: nFc = rFib.fcPlcffldMom;
+ nLen = rFib.lcbPlcffldMom;
+ break;
+ }
+
+ if( nLen )
+ pPLCF = new WW8PLCFspecial( pSt, nFc, nLen, 2 );
+}
+
+WW8PLCFx_FLD::~WW8PLCFx_FLD()
+{
+ delete pPLCF;
+}
+
+ULONG WW8PLCFx_FLD::GetIdx() const
+{
+ return ( pPLCF ) ? pPLCF->GetIdx() : 0;
+}
+
+void WW8PLCFx_FLD::SetIdx( ULONG nIdx )
+{
+ if( pPLCF )
+ pPLCF->SetIdx( nIdx );
+}
+
+BOOL WW8PLCFx_FLD::SeekPos( WW8_CP nCpPos )
+{
+ return ( pPLCF ) ? pPLCF->SeekPosExact( nCpPos ) : FALSE;
+}
+
+WW8_CP WW8PLCFx_FLD::Where()
+{
+ return ( pPLCF ) ? pPLCF->Where() : LONG_MAX;
+}
+
+long WW8PLCFx_FLD::GetNoSprms( WW8_CP& rStart, long& rEnd, long& rLen )
+{
+ void* pData;
+ ULONG nIdx;
+
+ rLen = 0;
+ rEnd = LONG_MAX; // Es gibt keine Ende
+
+ if ( !pPLCF ){
+ rStart = LONG_MAX; // Es gibt keine Felder
+ return -1;
+ }
+
+ if (!pPLCF->Get( rStart, pData )){
+ rStart = LONG_MAX; // PLCF fertig abgearbeitet
+ return -1;
+ }
+
+ nIdx = pPLCF->GetIdx();
+
+ return (long)nIdx;
+}
+
+WW8PLCFx& WW8PLCFx_FLD::operator ++( int )
+{
+ WW8SkipField( *pPLCF ); // gehe zum naechsten Feld
+ return *this;
+}
+
+BOOL WW8PLCFx_FLD::GetPara( long nIdx, WW8FieldDesc& rF )
+{
+ ASSERT( pPLCF, "Aufruf ohne Feld PLCFspecial" );
+ if( !pPLCF )
+ return FALSE;
+
+ ULONG n = pPLCF->GetIdx();
+ pPLCF->SetIdx( (ULONG)nIdx );
+
+ BOOL bOk = WW8GetFieldPara( rFib.nVersion, *pPLCF, rF );
+ pPLCF->SetIdx( n );
+ return bOk;
+}
+
+//-----------------------------------------
+// class WW8PLCF_Book
+//-----------------------------------------
+
+/* to be optimized like this: */
+void WW8ReadSTTBF( BOOL bVer8, SvStream& rStrm,
+ UINT32 nStart, INT32 nLen, USHORT nSkip,
+ rtl_TextEncoding eCS,
+ SvStrings &rArray, SvStrings* pExtraArray )
+{
+ ULONG nOldPos = rStrm.Tell();
+ rStrm.Seek( nStart );
+
+ String* pWork;
+
+ UINT16 nLen2;
+ rStrm >> nLen2; // bVer67: total length of structure
+ // bVer8 : count of strings
+
+ if( bVer8 )
+ {
+ UINT16 nStrings;
+ BOOL bUnicode = (0xFFFF == nLen2);
+ if( bUnicode )
+ rStrm >> nStrings;
+ else
+ nStrings = nLen2;
+
+ UINT16 nExtraLen;
+ rStrm >> nExtraLen;
+
+ for( USHORT i=0; i < nStrings; i++ )
+ {
+ if( bUnicode )
+ pWork = new String( WW8Read_xstz( rStrm, 0, FALSE ));
+ else
+ {
+ BYTE nBChar;
+ rStrm >> nBChar;
+ ByteString aTmp;
+ BYTE nWasRead = rStrm.Read( aTmp.AllocBuffer( nBChar ), nBChar );
+ if( nWasRead != nBChar )
+ aTmp.ReleaseBufferAccess( nWasRead );
+ pWork = new String( aTmp, eCS );
+ }
+
+ rArray.Insert( pWork, rArray.Count() );
+
+ // Skip the extra data
+ if( nExtraLen )
+ {
+ if( pExtraArray )
+ {
+ ByteString aTmp;
+ BYTE nWasRead = rStrm.Read( aTmp.AllocBuffer( nExtraLen ), nExtraLen );
+ if( nWasRead != nExtraLen )
+ aTmp.ReleaseBufferAccess( nWasRead );
+ pWork = new String( aTmp, eCS );
+ pExtraArray->Insert( pWork, pExtraArray->Count() );
+ }
+ else
+ rStrm.SeekRel( nExtraLen );
+ }
+ }
+ }
+ else
+ {
+ BYTE nBChar;
+ if( nLen2 != nLen )
+ {
+ ASSERT( nLen2 == nLen, "Fib lenght and read length are different" );
+ nLen2 = nLen;
+ }
+ UINT16 nRead = 0;
+ for( nLen2 -= 2; nRead < nLen2; )
+ {
+ rStrm >> nBChar; ++nRead;
+ if( nBChar )
+ {
+ ByteString aTmp;
+ BYTE nWasRead = rStrm.Read( aTmp.AllocBuffer( nBChar ), nBChar );
+ if( nWasRead != nBChar )
+ aTmp.ReleaseBufferAccess( nWasRead );
+ pWork = new String( aTmp, eCS );
+ nRead += nWasRead;
+ }
+ else
+ pWork = new String;
+ rArray.Insert( pWork, rArray.Count() );
+ }
+ }
+ rStrm.Seek( nOldPos );
+}
+
+
+WW8PLCFx_Book::WW8PLCFx_Book( SvStream* pSt, SvStream* pTblSt, WW8Fib& rFib, WW8_CP nStartCp )
+: WW8PLCFx( rFib.nVersion, FALSE ), nIsEnd( 0 ), pStatus( 0 )
+{
+ if( !rFib.fcPlcfbkf || !rFib.lcbPlcfbkf
+ || !rFib.fcPlcfbkl || !rFib.lcbPlcfbkl
+ || !rFib.fcSttbfbkmk || !rFib.lcbSttbfbkmk )
+ {
+ pBook[0] = pBook[1] = 0;
+ nIMax = 0;
+ }
+ else
+ {
+ pBook[0] = new WW8PLCFspecial( pTblSt, rFib.fcPlcfbkf,
+ rFib.lcbPlcfbkf, 4 );
+
+ pBook[1] = new WW8PLCFspecial( pTblSt, rFib.fcPlcfbkl,
+ rFib.lcbPlcfbkl, 0, -1, TRUE );
+
+ rtl_TextEncoding eStructCharSet = 0x0100 == rFib.chseTables
+ ? RTL_TEXTENCODING_APPLE_ROMAN
+ : rtl_getTextEncodingFromWindowsCharset(
+ rFib.chseTables );
+
+ WW8ReadSTTBF( (7 < rFib.nVersion), *pTblSt,
+ rFib.fcSttbfbkmk, rFib.lcbSttbfbkmk, 0,
+ eStructCharSet, aBookNames );
+ nIMax = aBookNames.Count();
+
+ if( pBook[0]->GetIMax() < nIMax ) // Anzahl der Bookmarks
+ nIMax = pBook[0]->GetIMax();
+ if( pBook[1]->GetIMax() < nIMax )
+ nIMax = pBook[1]->GetIMax();
+ pStatus = new eBookStatus[ nIMax ];
+ memset( pStatus, 0, nIMax * sizeof( eBookStatus ) );
+ }
+}
+
+WW8PLCFx_Book::~WW8PLCFx_Book()
+{
+ delete[] ( pStatus );
+ aBookNames.DeleteAndDestroy( 0, aBookNames.Count());
+ delete( pBook[1] );
+ delete( pBook[0] );
+}
+
+ULONG WW8PLCFx_Book::GetIdx() const
+{
+ return nIMax ? pBook[0]->GetIdx() : 0;
+}
+
+void WW8PLCFx_Book::SetIdx( ULONG nI )
+{
+ if( nIMax )
+ pBook[0]->SetIdx( nI );
+}
+
+ULONG WW8PLCFx_Book::GetIdx2() const
+{
+ return ( nIMax )
+ ? ( pBook[1]->GetIdx() | ( ( nIsEnd ) ? 0x80000000 : 0 ) )
+ : 0;
+}
+
+void WW8PLCFx_Book::SetIdx2( ULONG nI )
+{
+ if( nIMax )
+ {
+ pBook[1]->SetIdx( nI & 0x7fffffff );
+ nIsEnd = (USHORT)( ( nI >> 31 ) & 1 ); // 0 oder 1
+ }
+}
+
+BOOL WW8PLCFx_Book::SeekPos( WW8_CP nCpPos )
+{
+ if( !pBook[0] )
+ return FALSE;
+ BOOL bOk = pBook[0]->SeekPosExact( nCpPos );
+ bOk &= pBook[1]->SeekPosExact( nCpPos );
+ nIsEnd = 0;
+
+ return bOk;
+}
+
+WW8_CP WW8PLCFx_Book::Where()
+{
+ return pBook[nIsEnd]->Where();
+}
+
+long WW8PLCFx_Book::GetNoSprms( long& rStart, long& rEnd, long& rLen )
+{
+ void* pData;
+ rEnd = LONG_MAX;
+ rLen = 0;
+
+ if ( !pBook[0] || !pBook[1] || !nIMax
+ || (long)(pBook[nIsEnd]->GetIdx()) >= nIMax ){
+ rStart = rEnd = LONG_MAX;
+ return -1;
+ }
+
+ pBook[nIsEnd]->Get( rStart, pData ); // Pos. abfragen
+
+ return pBook[nIsEnd]->GetIdx();
+}
+
+// Der Operator ++ hat eine Tuecke: Wenn 2 Bookmarks aneinandergrenzen, dann
+// sollte erst das Ende des ersten und dann der Anfang des 2. erreicht werden.
+// Liegen jedoch 2 Bookmarks der Laenge 0 aufeinander, *muss* von jedem Bookmark
+// erst der Anfang und dann das Ende gefunden werden.
+// Der Fall: ][
+// [...]
+// ][
+// ist noch nicht geloest, dabei muesste ich in den Anfangs- und Endindices
+// vor- und zurueckspringen, wobei ein weiterer Index oder ein Bitfeld
+// oder etwas aehnliches zum Merken der bereits abgearbeiteten Bookmarks
+// noetig wird.
+WW8PLCFx& WW8PLCFx_Book::operator ++( int )
+{
+ if( pBook[0] && pBook[1] && nIMax )
+ {
+ (*pBook[nIsEnd])++;
+
+ register ULONG l0 = pBook[0]->Where();
+ register ULONG l1 = pBook[1]->Where();
+ if( l0 < l1 )
+ nIsEnd = 0;
+ else if( l1 < l0 )
+ nIsEnd = 1;
+ else
+ nIsEnd = ( nIsEnd ) ? 0 : 1;
+
+// nIsEnd = ( pBook[1]->Where() <= pBook[0]->Where() ) ? 1 : 0;
+ }
+ return *this;
+}
+
+long WW8PLCFx_Book::GetLen() const
+{
+ if( nIsEnd ){
+ ASSERT( !this, "Falscher Aufruf (1) von PLCF_Book::GetLen()" );
+ return 0;
+ }
+ void * p;
+ WW8_CP nStartPos;
+ if( !pBook[0]->Get( nStartPos, p ) ){
+ ASSERT( !this, "Falscher Aufruf (2) von PLCF_Book::GetLen()" );
+ return 0;
+ }
+ USHORT nEndIdx = SVBT16ToShort( *((SVBT16*)p) );
+// USHORT nEndIdx = *(USHORT*)p;
+ return pBook[1]->GetPos( nEndIdx ) - nStartPos;
+}
+
+// IgnoreBook ist dafuer da, bei Feldern mit implizitem WW-Bookmark
+// die Bookmarks zwischen Anfang und Ende des Feldes zu ignorieren,
+// die den angegebenen Namen tragen.
+BOOL WW8PLCFx_Book::SetStatus( WW8_CP nStartRegion, WW8_CP nEndRegion,
+ const String& rName,
+ eBookStatus eStat )
+{
+ ASSERT( nStartRegion < LONG_MAX && nEndRegion < LONG_MAX,
+ "IgnoreBook mit falschen Parametern" );
+
+ if( !pBook[0] || !pBook[1] )
+ return FALSE;
+
+ BOOL bFound = FALSE;
+ long i = 0;
+ WW8_CP nStartAkt, nEndAkt;
+ do{
+ void* p;
+ USHORT nEndIdx;
+
+ if( pBook[0]->GetData( i, nStartAkt, p ) && p ){
+ nEndIdx = SVBT16ToShort( *((SVBT16*)p) );
+ }
+ else
+ {
+ ASSERT( !this, "Bookmark-EndIdx nicht lesbar" );
+ nEndIdx = (USHORT)i;
+ }
+ nEndAkt = pBook[1]->GetPos( nEndIdx );
+ if( (nStartAkt >= nStartRegion)
+ && (nEndAkt <= nEndRegion)
+ && (rName.Equals( *aBookNames[ i ] )) )
+ {
+ pStatus[nEndIdx] = (eBookStatus)( pStatus[nEndIdx] | eStat );
+ bFound = TRUE;
+ }
+ i++;
+ }
+ while( nStartAkt <= nEndRegion && i < pBook[0]->GetIMax() );
+ return bFound;
+}
+
+eBookStatus WW8PLCFx_Book::GetStatus() const
+{
+ if( !pStatus )
+ return BOOK_NORMAL;
+ long nEndIdx = GetHandle();
+ return ( nEndIdx < nIMax ) ? pStatus[nEndIdx] : BOOK_NORMAL;
+}
+
+long WW8PLCFx_Book::GetHandle() const
+{
+ if( !pBook[0] || !pBook[1] )
+ return LONG_MAX;
+
+ if( nIsEnd ){
+ return pBook[1]->GetIdx();
+ }else{
+// BOOL Get( long& rStart, void*& rpValue );
+ const void* p = pBook[0]->GetData( pBook[0]->GetIdx() );
+ if( p )
+ {
+ return SVBT16ToShort( *((SVBT16*)p) );
+// return *((USHORT*)p);
+ }
+ else
+ return LONG_MAX;
+ }
+}
+
+//-----------------------------------------
+// WW8PLCFMan
+//-----------------------------------------
+
+#ifndef DUMP
+
+// Am Ende eines Absatzes reichen bei WW6 die Attribute bis hinter das <CR>.
+// Das wird fuer die Verwendung mit dem SW um 1 Zeichen zurueckgesetzt, wenn
+// dadurch kein AErger zu erwarten ist.
+void WW8PLCFMan::AdjustEnds( WW8PLCFxDesc& rDesc )
+{
+ if ( (&rDesc == pPap) && rDesc.bRealLineEnd )
+ {
+ if ( pPap->nEndPos != LONG_MAX ) // Para adjust
+ {
+ nLineEnd = pPap->nEndPos; // nLineEnd zeigt *hinter* das <CR>
+ pPap->nEndPos--; // Absatzende um 1 Zeichen verkuerzen
+
+ if( pChp->nEndPos == nLineEnd ) // gibt es bereits ein CharAttr-Ende,
+ // das auf das jetzige Absatzende zeigt ?
+ pChp->nEndPos--; // ... dann auch um 1 Zeichen verkuerzen
+
+ if( pSep->nEndPos == nLineEnd ) // gibt es bereits ein Sep-Ende,
+ // das auf das jetzige Absatzende zeigt ?
+ pSep->nEndPos--; // ... dann auch um 1 Zeichen verkuerzen
+ }
+ }
+ else
+ if( (&rDesc == pChp)
+ || (&rDesc == pSep) )
+ { // Char Adjust oder Sep Adjust
+ if( (rDesc.nEndPos == nLineEnd) // Wenn Ende Char-Attr == Absatzende ...
+ && (rDesc.nEndPos > rDesc.nStartPos) )
+ rDesc.nEndPos--; // ... dann um 1 Zeichen verkuerzen
+ }
+
+ if( rDesc.nStartPos > rDesc.nEndPos ){ // allgemeiner Plausibilitaetstest
+
+ //if( gfhdf
+
+ ASSERT( !this, "+Anfang und Ende des WW86-Attributes stehen ueber Kreuz" );
+ rDesc.nEndPos = rDesc.nStartPos;
+ }
+}
+
+void WW8PLCFMan::GetNewSprms( WW8PLCFxDesc& rDesc )
+{
+ rDesc.pPLCFx->GetSprms( &rDesc );
+
+ //if( rDesc.nStartPos <= rDesc.nEndPos
+
+ ASSERT((LONG_MAX == rDesc.nStartPos) || (rDesc.nStartPos <= rDesc.nEndPos),
+ "Attr-Anfang und -Ende ueber Kreuz" );
+
+ if( rDesc.nStartPos != LONG_MAX ) rDesc.nStartPos -= rDesc.nCpOfs;
+ if( rDesc.nEndPos != LONG_MAX ) rDesc.nEndPos -= rDesc.nCpOfs;
+
+ rDesc.bFirstSprm = TRUE;
+
+ AdjustEnds( rDesc );
+}
+
+void WW8PLCFMan::GetNewNoSprms( WW8PLCFxDesc& rDesc )
+{
+ rDesc.nCp2OrIdx =
+ rDesc.pPLCFx->GetNoSprms(rDesc.nStartPos, rDesc.nEndPos,
+ rDesc.nSprmsLen);
+
+ ASSERT((LONG_MAX == rDesc.nStartPos) || (rDesc.nStartPos <= rDesc.nEndPos),
+ "Attr-Anfang und -Ende ueber Kreuz" );
+
+ if( rDesc.nStartPos != LONG_MAX ) rDesc.nStartPos -= rDesc.nCpOfs;
+ if( rDesc.nEndPos != LONG_MAX ) rDesc.nEndPos -= rDesc.nCpOfs;
+ rDesc.bFirstSprm = TRUE;
+}
+
+static USHORT GetId( BYTE nVersion, WW8PLCFxDesc* p )
+{
+ USHORT nId;
+
+ if( p->nSprmsLen > 0 )
+ nId = WW8GetSprmId( nVersion, p->pMemPos );
+ else
+ nId = 0; // Id = 0 fuer leeres Attribut
+ return nId;
+}
+
+WW8PLCFMan::WW8PLCFMan( WW8ScannerBase* pBase, short nType, long nStartCp )
+{
+ pWwFib = pBase->pWw8Fib;
+ pNoAttrScan = &pBase->nNoAttrScan;
+
+ nLastWhereIdxCp = 0;
+ memset( aD, 0, sizeof( aD ) );
+ nLineEnd = LONG_MAX;
+ nManType = nType;
+ USHORT i;
+
+ if( MAN_MAINTEXT == nType )
+ {
+ // Suchreihenfolge der Attribute
+ nPLCF = MAN_ANZ_PLCF;
+ pFld = &aD[0];
+ pBkm = &aD[1];
+ pEdn = &aD[2];
+ pFtn = &aD[3];
+ pAnd = &aD[4];
+ pChp = &aD[5];
+ pPap = &aD[6];
+ pSep = &aD[7];
+ pPcd = ( pBase->pPLCFx_PCD ) ? &aD[8] : 0;
+ pPcdA = ( pBase->pPLCFx_PCDAttrs ) ? &aD[9] : 0;
+ pSep->pPLCFx = pBase->pSepPLCF;
+ pFtn->pPLCFx = pBase->pFtnPLCF;
+ pEdn->pPLCFx = pBase->pEdnPLCF;
+ pBkm->pPLCFx = pBase->pBook;
+ pAnd->pPLCFx = pBase->pAndPLCF;
+ }
+ else
+ {
+ // Suchreihenfolge der Attribute
+ nPLCF = 7;
+ pFld = &aD[0];
+ pBkm = ( pBase->pBook ) ? &aD[1] : 0;
+ pChp = &aD[2];
+ pPap = &aD[3];
+ pSep = &aD[4]; // Dummy
+ pPcd = ( pBase->pPLCFx_PCD ) ? &aD[5] : 0;
+ pPcdA= ( pBase->pPLCFx_PCDAttrs ) ? &aD[6] : 0;
+ pAnd = pFtn = pEdn = 0; // unbenutzt bei SpezText
+ }
+
+ pChp->pPLCFx = pBase->pChpPLCF;
+ pPap->pPLCFx = pBase->pPapPLCF;
+ if( pPcd )
+ pPcd->pPLCFx = pBase->pPLCFx_PCD;
+ if( pPcdA )
+ pPcdA->pPLCFx= pBase->pPLCFx_PCDAttrs;
+ if( pBkm )
+ pBkm->pPLCFx = pBase->pBook;
+
+ switch( nType ) // Feld-Initialisierung
+ {
+ case MAN_HDFT: pFld->pPLCFx = pBase->pFldHdFtPLCF;
+ nCpO = pWwFib->ccpText + pWwFib->ccpFtn;
+ pFdoa = pBase->pHdFtFdoa;
+ pTxbx = pBase->pHdFtTxbx;
+ pTxbxBkd = pBase->pHdFtTxbxBkd;
+ break;
+ case MAN_FTN: pFld->pPLCFx = pBase->pFldFtnPLCF;
+ nCpO = pWwFib->ccpText;
+ pFdoa = pTxbx = pTxbxBkd = 0;
+ break;
+ case MAN_EDN: pFld->pPLCFx = pBase->pFldEdnPLCF;
+ nCpO = pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr + pWwFib->ccpAtn;
+ pFdoa = pTxbx = pTxbxBkd = 0;
+ break;
+ case MAN_AND: pFld->pPLCFx = pBase->pFldAndPLCF;
+ nCpO = pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr;
+ pFdoa = pTxbx = pTxbxBkd = 0;
+ break;
+
+
+ case MAN_TXBX: pFld->pPLCFx = pBase->pFldTxbxPLCF;
+ nCpO = pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr + pWwFib->ccpMcr
+ + pWwFib->ccpAtn + pWwFib->ccpEdn;
+ pTxbx = pBase->pMainTxbx;
+ pTxbxBkd = pBase->pMainTxbxBkd;
+ pFdoa = 0;
+ break;
+ case MAN_TXBX_HDFT:
+ pFld->pPLCFx = pBase->pFldTxbxHdFtPLCF;
+ nCpO = pWwFib->ccpText + pWwFib->ccpFtn
+ + pWwFib->ccpHdr + pWwFib->ccpMcr
+ + pWwFib->ccpAtn + pWwFib->ccpEdn
+ + pWwFib->ccpTxbx;
+ pTxbx = pBase->pHdFtTxbx;
+ pTxbxBkd = pBase->pHdFtTxbxBkd;
+ pFdoa = 0;
+ break;
+
+
+ default: pFld->pPLCFx = pBase->pFldPLCF;
+ nCpO = 0;
+ pFdoa = pBase->pMainFdoa;
+ pTxbx = pBase->pMainTxbx;
+ pTxbxBkd = pBase->pMainTxbxBkd;
+ break;
+ }
+
+ if( nStartCp || nCpO )
+ SeekPos( nStartCp ); // PLCFe auf Text-StartPos einstellen
+
+ // initialisieren der Member-Vars Low-Level
+ GetChpPLCF()->ResetAttrStartEnd();
+ GetPapPLCF()->ResetAttrStartEnd();
+ for( i=0; i<nPLCF; i++)
+ {
+ register WW8PLCFxDesc* p = &aD[i];
+
+ p->nCpOfs = ( p == pChp || p == pPap || p == pBkm ) ? nCpO : 0;
+ p->nCp2OrIdx = 0;
+ p->bFirstSprm = FALSE;
+ p->pIdStk = 0;
+ p->nStartPos = p->nEndPos = LONG_MAX;
+ }
+
+ // initialisieren der Member-Vars High-Level
+ for( i=0; i<nPLCF; i++){
+ register WW8PLCFxDesc* p = &aD[i];
+
+ if( !p->pPLCFx )
+ continue;
+
+ if( p->pPLCFx->IsSprm() )
+ {
+ p->pIdStk = new UShortStk; // Vorsicht: nEndPos muss bereits
+ GetNewSprms( *p ); // bei allen PLCFen initialisiert sein
+ }
+ else
+ {
+ if( p->pPLCFx )
+ GetNewNoSprms( *p );
+ }
+ }
+}
+
+WW8PLCFMan::~WW8PLCFMan()
+{
+ for( USHORT i=0; i<nPLCF; i++)
+ delete aD[i].pIdStk;
+}
+
+// 0. welche Attr.-Klasse,
+// 1. ob ein Attr.-Start ist,
+// 2. CP, wo ist naechste Attr.-Aenderung
+short WW8PLCFMan::WhereIdx( BOOL* pbStart, long* pPos )
+{
+ BOOL bIgnore;
+ long next = LONG_MAX; // SuchReihenfolge:
+ short nextIdx = -1; // erst Enden finden ( CHP, PAP, ( SEP ) ),
+ BOOL bStart = TRUE; // dann Anfaenge finden ( ( SEP ), PAP, CHP )
+ short i;
+ register WW8PLCFxDesc* pD;
+ for( i=0; i<(short)nPLCF; i++)
+ {
+ pD = &aD[i];
+ if( ( pD->nEndPos < next )
+ && ( pD->nStartPos == LONG_MAX ) )
+ { // sonst ist Anfang = Ende
+ next = pD->nEndPos;
+ nextIdx = i;
+ bStart = FALSE;
+ }
+ }
+ for( i=(short)nPLCF-1; i>=0; i--)
+ {
+ bIgnore = FALSE;
+ pD = &aD[i];
+ if( pD->nStartPos < next )
+ {
+ // StartPos of Attribute is inside a range of CPs to be ignored?
+ if( pD->pMemPos
+ && pNoAttrScan
+ && *pNoAttrScan
+ && pD->nStartPos == nLastWhereIdxCp )
+ {
+ // Check if the EndPos of this Attribute is BEHIND the scope
+ // of CPs to be ignored: if so shift the StartPos accordingly!
+ ULONG nOldIdx = pD->pPLCFx->GetIdx();
+ pD->pPLCFx->SetIdx( nOldIdx+1 );
+
+ const long nNASEnd = pD->nStartPos + *pNoAttrScan;
+
+ if( nNASEnd < pD->pPLCFx->Where() )
+ {
+ pD->nStartPos = nNASEnd;
+ bIgnore = TRUE;
+ }
+
+ pD->pPLCFx->SetIdx( nOldIdx );
+ }
+
+ if( !bIgnore )
+ {
+ next = pD->nStartPos;
+ nextIdx = i;
+ bStart = TRUE;
+ }
+ }
+ }
+ if( pPos )
+ *pPos = next;
+ nLastWhereIdxCp = next;
+ if( pbStart )
+ *pbStart = bStart;
+ return nextIdx;
+}
+
+WW8_CP WW8PLCFMan::Where() // gibt die CP-Pos der naechsten Attribut-Aenderung zurueck
+{
+ long l;
+ WhereIdx( 0, &l );
+ return l;
+}
+
+
+void WW8PLCFMan::SeekPos( long nNewCp )
+{
+ pChp->pPLCFx->SeekPos( nNewCp + nCpO ); // Attribute neu
+ pPap->pPLCFx->SeekPos( nNewCp + nCpO ); // aufsetzen
+ pFld->pPLCFx->SeekPos( nNewCp );
+ if( pPcd )
+ pPcd->pPLCFx->SeekPos( nNewCp + nCpO );
+ if( pBkm )
+ pBkm->pPLCFx->SeekPos( nNewCp + nCpO );
+}
+
+
+void WW8PLCFx::Save( WW8PLCFxSave1& rSave ) const
+{
+ rSave.nPLCFxPos = GetIdx();
+ rSave.nPLCFxPos2 = GetIdx2();
+ rSave.nPLCFxMemOfs = 0;
+}
+
+void WW8PLCFx::Restore( const WW8PLCFxSave1& rSave )
+{
+ SetIdx( rSave.nPLCFxPos );
+ SetIdx2( rSave.nPLCFxPos2 );
+}
+
+
+
+ULONG WW8PLCFx_Cp_FKP::GetIdx2() const
+{
+ return GetPCDIdx();
+}
+
+void WW8PLCFx_Cp_FKP::SetIdx2( ULONG nIdx )
+{
+ SetPCDIdx( nIdx );
+}
+
+
+void WW8PLCFx_Cp_FKP::Save( WW8PLCFxSave1& rSave ) const
+{
+ WW8PLCFx::Save( rSave );
+
+ rSave.nAttrStart = nAttrStart;
+ rSave.nAttrEnd = nAttrEnd;
+ rSave.bLineEnd = bLineEnd;
+}
+
+void WW8PLCFx_Cp_FKP::Restore( const WW8PLCFxSave1& rSave )
+{
+ WW8PLCFx::Restore( rSave );
+
+ nAttrStart = rSave.nAttrStart;
+ nAttrEnd = rSave.nAttrEnd;
+ bLineEnd = rSave.bLineEnd;
+}
+
+
+void WW8PLCFxDesc::Save( WW8PLCFxSave1& rSave ) const
+{
+ if( pPLCFx )
+ {
+ pPLCFx->Save( rSave );
+ if( pPLCFx->IsSprm() )
+ {
+ WW8PLCFxDesc aD;
+ pPLCFx->GetSprms( &aD );
+ rSave.nPLCFxMemOfs = pMemPos - aD.pMemPos;
+ }
+ }
+}
+
+void WW8PLCFxDesc::Restore( const WW8PLCFxSave1& rSave )
+{
+ if( pPLCFx )
+ {
+ pPLCFx->Restore( rSave );
+ if( pPLCFx->IsSprm() )
+ {
+ WW8PLCFxDesc aD;
+ pPLCFx->GetSprms( &aD );
+ pMemPos = aD.pMemPos + rSave.nPLCFxMemOfs;
+ }
+ }
+}
+/*
+void WW8PLCFMan::Save1PLCFx( WW8PLCFxDesc* p, WW8PLCFxSave1* pSave ) const
+{
+ if( !p->pPLCFx )
+ return;
+ pSave->nPLCFxPos = p->pPLCFx->GetIdx();
+ pSave->nPLCFxPos2 = p->pPLCFx->GetIdx2();
+ if( p->pPLCFx->IsSprm() )
+ {
+ WW8PLCFxDesc aD;
+ p->pPLCFx->GetSprms( &aD );
+ pSave->nPLCFxMemOfs = p->pMemPos - aD.pMemPos;
+ }
+}
+
+void WW8PLCFMan::Restore1PLCFx( WW8PLCFxDesc* p, WW8PLCFxSave1* pSave )
+{
+ if( !p->pPLCFx )
+ return;
+ p->pPLCFx->SetIdx( pSave->nPLCFxPos ); // restore PLCF-Pos
+ p->pPLCFx->SetIdx2( pSave->nPLCFxPos2 );
+ if( p->pPLCFx->IsSprm() )
+ {
+ WW8PLCFxDesc aD;
+ p->pPLCFx->GetSprms( &aD );
+ p->pMemPos = aD.pMemPos + pSave->nPLCFxMemOfs;
+ }
+}
+*/
+void WW8PLCFMan::SaveAllPLCFx( WW8PLCFxSaveAll& rSave ) const
+{
+ USHORT i, n=0;
+ if( pPcd )
+ pPcd->Save( rSave.aS[n++] );
+ if( pPcdA )
+ pPcdA->Save( rSave.aS[n++] );
+
+ for(i=0; i<nPLCF; ++i)
+ if( pPcd != &aD[i] && pPcdA != &aD[i] )
+ aD[i].Save( rSave.aS[n++] );
+}
+
+void WW8PLCFMan::RestoreAllPLCFx( const WW8PLCFxSaveAll& rSave )
+{
+ USHORT i, n=0;
+ if( pPcd )
+ pPcd->Restore( rSave.aS[n++] );
+ if( pPcdA )
+ pPcdA->Restore( rSave.aS[n++] );
+
+ for(i=0; i<nPLCF; ++i)
+ if( pPcd != &aD[i] && pPcdA != &aD[i] )
+ aD[i].Restore( rSave.aS[n++] );
+}
+
+void WW8PLCFMan::GetSprmStart( short nIdx, WW8PLCFManResult* pRes )
+{
+ memset( pRes, 0, sizeof( WW8PLCFManResult ) );
+
+ // Pruefen !!!
+
+ pRes->nMemLen = 0;
+
+ register WW8PLCFxDesc* p = &aD[nIdx];
+
+ if( !*pNoAttrScan
+ || (*pNoAttrScan < (p->nEndPos - p->nStartPos + 1)) )
+ {
+ if( p->bFirstSprm ) // erster Sprm einer Gruppe
+ {
+ if( p == pPap ) // Anfang neuer Pap ?
+ pRes->nFlags |= MAN_MASK_NEW_PAP; // dann muss Aufrufer auf neuen
+ // Style testen
+ else if( p == pSep ) // Anfang neuer Sep ?
+ pRes->nFlags |= MAN_MASK_NEW_SEP; // dann muss Aufrufer eine neue
+ // Section / Pagedesc erzeugen
+ }
+ pRes->pMemPos = p->pMemPos;
+ pRes->nSprmId = GetId( pWwFib->nVersion, p );
+ if( p->nSprmsLen )
+ pRes->nMemLen = WW8GetSprmSizeBrutto( pWwFib->nVersion,
+ pRes->pMemPos,
+ &pRes->nSprmId ); // Laenge des akt. Sprm
+ }
+}
+
+void WW8PLCFMan::GetSprmEnd( short nIdx, WW8PLCFManResult* pRes )
+{
+ memset( pRes, 0, sizeof( WW8PLCFManResult ) );
+
+ register WW8PLCFxDesc* p = &aD[nIdx];
+
+ if( !*pNoAttrScan
+ || (*pNoAttrScan < (p->nEndPos - p->nStartPos + 1)) )
+ {
+ if( p->pIdStk->Count() )
+ pRes->nSprmId = p->pIdStk->Top(); // hole Ende-Position
+ else
+ {
+ ASSERT( !this, "Keine Id auf dem Stack" );
+ pRes->nSprmId = 0;
+ }
+ }
+}
+
+void WW8PLCFMan::GetNoSprmStart( short nIdx, WW8PLCFManResult* pRes )
+{
+
+ // Pruefen !!!
+
+ register WW8PLCFxDesc* p = &aD[nIdx];
+// long nEnd;
+
+// p->nCp2OrIdx = p->pPLCFx->GetNoSprms( pRes->nCpPos, nEnd, pRes->nMemLen );
+// p->nCp2OrIdx = p->pPLCFx->GetNoSprms( p->nStartPos, p->nEndPos,
+// p->nSprmsLen );
+// GetNoSprms( nIdx );
+ pRes->nCpPos = p->nStartPos;
+ pRes->nMemLen = p->nSprmsLen;
+ pRes->nCp2OrIdx = p->nCp2OrIdx;
+
+ if( p == pFld )
+ pRes->nSprmId = 258;
+ else if( p == pFtn )
+ pRes->nSprmId = 256;
+ else if( p == pEdn )
+ pRes->nSprmId = 257;
+ else if( p == pBkm )
+ pRes->nSprmId = 259;
+ else if( p == pPcd )
+ pRes->nSprmId = 260;
+ else if( p == pAnd )
+ pRes->nSprmId = 261;
+ else
+ pRes->nSprmId = 0; // default: nicht gefunden
+}
+
+void WW8PLCFMan::GetNoSprmEnd( short nIdx, WW8PLCFManResult* pRes )
+{
+
+ // Pruefen !!!
+
+ if( &aD[nIdx] == pBkm )
+ pRes->nSprmId = 259;
+ else if( &aD[nIdx] == pPcd )
+ pRes->nSprmId = 260;
+ else
+ pRes->nSprmId = 0;
+
+ pRes->nMemLen = -1; // Ende-Kennzeichen
+}
+
+
+//
+void WW8PLCFMan::AdvSprm( short nIdx, BOOL bStart )
+{
+ register WW8PLCFxDesc* p = &aD[nIdx]; // Sprm-Klasse(!) ermitteln
+
+ p->bFirstSprm = FALSE;
+ if( bStart )
+ {
+ USHORT nLastId = GetId( pWwFib->nVersion, p );
+ p->pIdStk->Push( nLastId ); // merke Id fuer Attribut-Ende
+
+ if( p->nSprmsLen )
+ { /*
+ Pruefe, ob noch Sprm(s) abzuarbeiten sind
+ */
+ if( p->pMemPos )
+ {
+ // Laenge des letzten Sprm
+ short nSprmL = WW8GetSprmSizeBrutto( pWwFib->nVersion, p->pMemPos, &nLastId );
+
+ // Gesamtlaenge Sprms um SprmLaenge verringern
+ p->nSprmsLen -= nSprmL;
+
+ // Pos des evtl. naechsten Sprm
+ if( p->nSprmsLen <= 0 )
+ p->pMemPos = 0; // sicherheitshalber auf Null setzen, da Enden folgen!
+ else
+ p->pMemPos += nSprmL;
+ }
+ else
+ p->nSprmsLen = 0;
+ }
+ if( p->nSprmsLen <= 0 )
+ p->nStartPos = LONG_MAX; // es folgen Enden
+ }
+ else
+ {
+ if( p->pIdStk->Count() )
+ p->pIdStk->Pop();
+ if( !p->pIdStk->Count() )
+ { // Kein weiterer Sprm auf dieser Pos ?
+ (*p->pPLCFx)++; // naechste Gruppe von Sprms
+ p->pMemPos = 0; // !!!
+ GetNewSprms( *p );
+ ASSERT( p->nStartPos <= p->nEndPos, "Attribut ueber Kreuz" );
+ }
+ }
+}
+
+void WW8PLCFMan::AdvNoSprm( short nIdx, BOOL bStart )
+{
+
+ // Pruefen !!!
+
+ register WW8PLCFxDesc* p = &aD[nIdx];
+
+ if( p == pPcd ){ // NoSprm mit Ende
+ if( bStart ){
+ p->nStartPos = LONG_MAX;
+ }else{ // naechster NoSprm mit Ende
+ (*p->pPLCFx)++;
+ p->pMemPos = 0; // MemPos ungueltig
+ GetNewNoSprms( *p );
+// p->nCp2OrIdx = p->pPLCFx->GetNoSprms( p->nStartPos, p->nEndPos,
+// p->nSprmsLen );
+ }
+ }else{ // NoSprm ohne Ende
+ (*p->pPLCFx)++;
+ p->pMemPos = 0; // MemPos ungueltig
+ GetNewNoSprms( *p );
+// p->nCp2OrIdx = p->pPLCFx->GetNoSprms( p->nStartPos, p->nEndPos,
+// p->nSprmsLen );
+ }
+}
+
+WW8PLCFMan& WW8PLCFMan::operator ++(int)
+{
+ BOOL bStart;
+ short nIdx = WhereIdx( &bStart, 0 );
+ if( nPLCF > nIdx )
+ {
+ register WW8PLCFxDesc* p = &aD[nIdx];
+
+ p->bFirstSprm = TRUE; // Default
+
+ if( p->pPLCFx->IsSprm() )
+ AdvSprm( nIdx, bStart );
+ else // NoSprm
+ AdvNoSprm( nIdx, bStart );
+ }
+ return *this;
+}
+
+// Rueckgabe TRUE fuer Anfang eines Attributes oder Fehler,
+// FALSE fuer Ende d. Attr
+// Restliche Rueckgabewerte werden in der vom Aufrufer zu stellenden Struktur
+// WW8PclxManResults geliefert.
+BOOL WW8PLCFMan::Get( WW8PLCFManResult* pRes )
+{
+ memset( pRes, 0, sizeof( WW8PLCFManResult ) );
+ BOOL bStart;
+ short nIdx = WhereIdx( &bStart, 0 );
+
+ if( nIdx < 0 ){
+ ASSERT( !this, "Position nicht gefunden" );
+ return TRUE;
+ }
+
+ if( aD[nIdx].pPLCFx->IsSprm() )
+ {
+ if( bStart )
+ {
+ GetSprmStart( nIdx, pRes );
+ return TRUE;
+ }
+ else
+ {
+ GetSprmEnd( nIdx, pRes );
+ return FALSE;
+ }
+ }else{
+/*
+ if( &aD[nIdx] == pPcd ){ // Piece-Ende
+ pRes->nId = -4;
+ pRes->nMemLen = ( bStart ) ? 0 : -1;
+ return bStart;
+ }else
+*/
+ if( bStart ){
+ GetNoSprmStart( nIdx, pRes );
+ return TRUE;
+ }else{
+ GetNoSprmEnd( nIdx, pRes );
+ return FALSE;
+ }
+ }
+}
+
+USHORT WW8PLCFMan::GetColl() const
+{
+ if( pPap->pPLCFx ){
+ return pPap->pPLCFx->GetIstd();
+ }else{
+ ASSERT( !this, "GetColl ohne PLCF_Pap" );
+ return 0;
+ }
+}
+
+WW8PLCFx_FLD* WW8PLCFMan::GetFld() const
+{
+ return (WW8PLCFx_FLD*)pFld->pPLCFx;
+}
+
+BYTE* WW8PLCFMan::HasParaSprm( USHORT nId ) const
+{
+ return ((WW8PLCFx_Cp_FKP*)pPap->pPLCFx)->HasSprm( nId );
+}
+
+BYTE* WW8PLCFMan::HasCharSprm( USHORT nId ) const
+{
+ return ((WW8PLCFx_Cp_FKP*)pChp->pPLCFx)->HasSprm( nId );
+}
+
+#endif // !DUMP
+
+//-----------------------------------------
+
+
+WW8Fib::WW8Fib( SvStream& rSt, BYTE nWantedVersion,UINT32 nOffset ): nFibError( 0 )
+{
+ BYTE aBits1;
+ BYTE aBits2;
+ BYTE aVer8Bits1; // nur ab WinWord 8 benutzt
+ rSt.Seek( nOffset );
+ /*
+ Wunsch-Nr vermerken, File-Versionsnummer ermitteln
+ und gegen Wunsch-Nr. checken !
+ */
+ nVersion = nWantedVersion;
+ rSt >> wIdent;
+ rSt >> nFib;
+ rSt >> nProduct;
+ if( 0 != rSt.GetError() )
+ {
+ INT16 nFibMin;
+ INT16 nFibMax;
+ switch( nVersion ) // beachte: 6 steht fuer "6 ODER 7", 7 steht fuer "NUR 7"
+ {
+ case 6: nFibMin = 0x0065; // von 101 WinWord 6.0
+ // 102 "
+ // und 103 WinWord 6.0 fuer Macintosh
+ // 104 "
+ nFibMax = 0x0069; // bis 105 WinWord 95
+ break;
+ case 7: nFibMin = 0x0069; // von 105 WinWord 95
+ nFibMax = 0x0069; // bis 105 WinWord 95
+ break;
+ case 8: nFibMin = 0x006A; // von 106 WinWord 97
+ nFibMax = 0x00c1; // bis 193 WinWord 97 (?)
+ break;
+ default:nFibMin = 0; // Programm-Fehler!
+ nFibMax = 0;
+ nFib = 1;
+ ASSERT( !this, "Es wurde vergessen, nVersion zu kodieren!" );
+ }
+ if( ( nFib < nFibMin )
+ || ( nFib > nFibMax ) )
+ {
+ nFibError = ERR_SWG_READ_ERROR; // Error melden
+ return; // und hopp raus!
+ }
+ }
+
+ // praktische Hilfsvariablen:
+ BOOL bVer67 = ((6 == nVersion) || (7 == nVersion));
+ BOOL bVer8 = (8 == nVersion);
+
+ // Hilfs-Varis fuer Ver67:
+ INT16 pnChpFirst_Ver67;
+ INT16 pnPapFirst_Ver67;
+ INT16 cpnBteChp_Ver67;
+ INT16 cpnBtePap_Ver67;
+
+ // und auf gehts: FIB einlesen
+ rSt >> lid;
+ rSt >> pnNext;
+ rSt >> aBits1;
+ rSt >> aBits2;
+ rSt >> nFibBack;
+ rSt >> lKey1;
+ rSt >> lKey2;
+ rSt >> envr;
+ rSt >> aVer8Bits1; // unter Ver67 nur leeres Reservefeld
+ // Inhalt von aVer8Bits1
+ //
+ // BYTE fMac :1;
+ // BYTE fEmptySpecial :1;
+ // BYTE fLoadOverridePage :1;
+ // BYTE fFuturesavedUndo :1;
+ // BYTE fWord97Saved :1;
+ // BYTE :3;
+ rSt >> chse;
+ rSt >> chseTables;
+ rSt >> fcMin;
+ rSt >> fcMac;
+
+// Einschub fuer WW8 *****************************************************
+ if( !bVer67 )
+ {
+ rSt >> csw;
+
+ // Marke: "rgsw" Beginning of the array of shorts
+ rSt >> wMagicCreated;
+ rSt >> wMagicRevised;
+ rSt >> wMagicCreatedPrivate;
+ rSt >> wMagicRevisedPrivate;
+ rSt.SeekRel( 9 * sizeof( INT16 ) );
+
+ /*
+ // dies sind die 9 unused Felder:
+ && (bVer67 || WW8ReadINT16( rSt, pnFbpChpFirst_W6 )) // 1
+ && (bVer67 || WW8ReadINT16( rSt, pnChpFirst_W6 )) // 2
+ && (bVer67 || WW8ReadINT16( rSt, cpnBteChp_W6 )) // 3
+ && (bVer67 || WW8ReadINT16( rSt, pnFbpPapFirst_W6 )) // 4
+ && (bVer67 || WW8ReadINT16( rSt, pnPapFirst_W6 )) // 5
+ && (bVer67 || WW8ReadINT16( rSt, cpnBtePap_W6 )) // 6
+ && (bVer67 || WW8ReadINT16( rSt, pnFbpLvcFirst_W6 )) // 7
+ && (bVer67 || WW8ReadINT16( rSt, pnLvcFirst_W6 )) // 8
+ && (bVer67 || WW8ReadINT16( rSt, cpnBteLvc_W6 )) // 9
+ */
+ rSt >> lidFE;
+ rSt >> clw;
+ }
+
+// Ende des Einschubs fuer WW8 *******************************************
+
+ // Marke: "rglw" Beginning of the array of longs
+ rSt >> cbMac;
+
+ // 2 Longs uebergehen, da unwichtiger Quatsch
+ rSt.SeekRel( 2 * sizeof( INT32) );
+
+ // weitere 2 Longs nur bei Ver67 ueberspringen
+ if( bVer67 )
+ rSt.SeekRel( 2 * sizeof( INT32) );
+
+ rSt >> ccpText;
+ rSt >> ccpFtn;
+ rSt >> ccpHdr;
+ rSt >> ccpMcr;
+ rSt >> ccpAtn;
+ rSt >> ccpEdn;
+ rSt >> ccpTxbx;
+ rSt >> ccpHdrTxbx;
+
+ // weiteres Long nur bei Ver67 ueberspringen
+ if( bVer67 )
+ rSt.SeekRel( 1 * sizeof( INT32) );
+ else
+ {
+// Einschub fuer WW8 *****************************************************
+ rSt >> pnFbpChpFirst;
+ rSt >> pnChpFirst;
+ rSt >> cpnBteChp;
+ rSt >> pnFbpPapFirst;
+ rSt >> pnPapFirst;
+ rSt >> cpnBtePap;
+ rSt >> pnFbpLvcFirst;
+ rSt >> pnLvcFirst;
+ rSt >> cpnBteLvc;
+ rSt >> fcIslandFirst;
+ rSt >> fcIslandLim;
+ rSt >> cfclcb;
+ }
+
+// Ende des Einschubs fuer WW8 *******************************************
+
+ // Marke: "rgfclcb" Beginning of array of FC/LCB pairs.
+ rSt >> fcStshfOrig;
+ rSt >> lcbStshfOrig;
+ rSt >> fcStshf;
+ rSt >> lcbStshf;
+ rSt >> fcPlcffndRef;
+ rSt >> lcbPlcffndRef;
+ rSt >> fcPlcffndTxt;
+ rSt >> lcbPlcffndTxt;
+ rSt >> fcPlcfandRef;
+ rSt >> lcbPlcfandRef;
+ rSt >> fcPlcfandTxt;
+ rSt >> lcbPlcfandTxt;
+ rSt >> fcPlcfsed;
+ rSt >> lcbPlcfsed;
+ rSt >> fcPlcfpad;
+ rSt >> lcbPlcfpad;
+ rSt >> fcPlcfphe;
+ rSt >> lcbPlcfphe;
+ rSt >> fcSttbfglsy;
+ rSt >> lcbSttbfglsy;
+ rSt >> fcPlcfglsy;
+ rSt >> lcbPlcfglsy;
+ rSt >> fcPlcfhdd;
+ rSt >> lcbPlcfhdd;
+ rSt >> fcPlcfbteChpx;
+ rSt >> lcbPlcfbteChpx;
+ rSt >> fcPlcfbtePapx;
+ rSt >> lcbPlcfbtePapx;
+ rSt >> fcPlcfsea;
+ rSt >> lcbPlcfsea;
+ rSt >> fcSttbfffn;
+ rSt >> lcbSttbfffn;
+ rSt >> fcPlcffldMom;
+ rSt >> lcbPlcffldMom;
+ rSt >> fcPlcffldHdr;
+ rSt >> lcbPlcffldHdr;
+ rSt >> fcPlcffldFtn;
+ rSt >> lcbPlcffldFtn;
+ rSt >> fcPlcffldAtn;
+ rSt >> lcbPlcffldAtn;
+ rSt >> fcPlcffldMcr;
+ rSt >> lcbPlcffldMcr;
+ rSt >> fcSttbfbkmk;
+ rSt >> lcbSttbfbkmk;
+ rSt >> fcPlcfbkf;
+ rSt >> lcbPlcfbkf;
+ rSt >> fcPlcfbkl;
+ rSt >> lcbPlcfbkl;
+ rSt >> fcCmds;
+ rSt >> lcbCmds;
+ rSt >> fcPlcfmcr;
+ rSt >> lcbPlcfmcr;
+ rSt >> fcSttbfmcr;
+ rSt >> lcbSttbfmcr;
+ rSt >> fcPrDrvr;
+ rSt >> lcbPrDrvr;
+ rSt >> fcPrEnvPort;
+ rSt >> lcbPrEnvPort;
+ rSt >> fcPrEnvLand;
+ rSt >> lcbPrEnvLand;
+ rSt >> fcWss;
+ rSt >> lcbWss;
+ rSt >> fcDop;
+ rSt >> lcbDop;
+ rSt >> fcSttbfAssoc;
+ rSt >> cbSttbfAssoc;
+ rSt >> fcClx;
+ rSt >> lcbClx;
+ rSt >> fcPlcfpgdFtn;
+ rSt >> lcbPlcfpgdFtn;
+ rSt >> fcAutosaveSource;
+ rSt >> lcbAutosaveSource;
+ rSt >> fcGrpStAtnOwners;
+ rSt >> lcbGrpStAtnOwners;
+ rSt >> fcSttbfAtnbkmk;
+ rSt >> lcbSttbfAtnbkmk;
+
+ // weiteres short nur bei Ver67 ueberspringen
+ if( bVer67 )
+ {
+ rSt.SeekRel( 1*sizeof( INT16) );
+
+ // folgende 4 Shorts existieren nur bei Ver67;
+ rSt >> pnChpFirst_Ver67;
+ rSt >> pnPapFirst_Ver67;
+ rSt >> cpnBteChp_Ver67;
+ rSt >> cpnBtePap_Ver67;
+ }
+
+ rSt >> fcPlcfdoaMom;
+ rSt >> lcbPlcfdoaMom;
+ rSt >> fcPlcfdoaHdr;
+ rSt >> lcbPlcfdoaHdr;
+ rSt >> fcPlcfspaMom;
+ rSt >> lcbPlcfspaMom;
+ rSt >> fcPlcfspaHdr;
+ rSt >> lcbPlcfspaHdr;
+
+ rSt >> fcPlcfAtnbkf;
+ rSt >> lcbPlcfAtnbkf;
+ rSt >> fcPlcfAtnbkl;
+ rSt >> lcbPlcfAtnbkl;
+ rSt >> fcPms;
+ rSt >> lcbPMS;
+ rSt >> fcFormFldSttbf;
+ rSt >> lcbFormFldSttbf;
+ rSt >> fcPlcfendRef;
+ rSt >> lcbPlcfendRef;
+ rSt >> fcPlcfendTxt;
+ rSt >> lcbPlcfendTxt;
+ rSt >> fcPlcffldEdn;
+ rSt >> lcbPlcffldEdn;
+ rSt >> fcPlcfpgdEdn;
+ rSt >> lcbPlcfpgdEdn;
+ rSt >> fcDggInfo;
+ rSt >> lcbDggInfo;
+ rSt >> fcSttbfRMark;
+ rSt >> lcbSttbfRMark;
+ rSt >> fcSttbfCaption;
+ rSt >> lcbSttbfCaption;
+ rSt >> fcSttbAutoCaption;
+ rSt >> lcbSttbAutoCaption;
+ rSt >> fcPlcfwkb;
+ rSt >> lcbPlcfwkb;
+ rSt >> fcPlcfspl;
+ rSt >> lcbPlcfspl;
+ rSt >> fcPlcftxbxTxt;
+ rSt >> lcbPlcftxbxTxt;
+ rSt >> fcPlcffldTxbx;
+ rSt >> lcbPlcffldTxbx;
+ rSt >> fcPlcfHdrtxbxTxt;
+ rSt >> lcbPlcfHdrtxbxTxt;
+ rSt >> fcPlcffldHdrTxbx;
+ rSt >> lcbPlcffldHdrTxbx;
+
+ if( 0 == rSt.GetError() )
+ {
+ // Bit-Flags setzen
+ fDot = aBits1 & 0x01 ;
+ fGlsy = ( aBits1 & 0x02 ) >> 1;
+ fComplex = ( aBits1 & 0x04 ) >> 2;
+ fHasPic = ( aBits1 & 0x08 ) >> 3;
+ cQuickSaves = ( aBits1 & 0xf0 ) >> 4;
+ fEncrypted = aBits2 & 0x01 ;
+ fWhichTblStm= ( aBits2 & 0x02 ) >> 1;
+ // dummy = ( aBits2 & 0x0e ) >> 1;
+ fExtChar = ( aBits2 & 0x10 ) >> 4;
+ // dummy = ( aBits2 & 0xe0 ) >> 5;
+
+ /*
+ ggfs. Ziel-Varaiblen, aus xxx_Ver67 fuellen
+ oder Flags setzen
+ */
+ if( bVer67 )
+ {
+ pnChpFirst = pnChpFirst_Ver67;
+ pnPapFirst = pnPapFirst_Ver67;
+ cpnBteChp = cpnBteChp_Ver67;
+ cpnBtePap = cpnBtePap_Ver67;
+ }
+ else if( bVer8 )
+ {
+ fMac = aVer8Bits1 & 0x01 ;
+ fEmptySpecial = ( aVer8Bits1 & 0x02 ) >> 1;
+ fLoadOverridePage = ( aVer8Bits1 & 0x04 ) >> 2;
+ fFuturesavedUndo = ( aVer8Bits1 & 0x08 ) >> 3;
+ fWord97Saved = ( aVer8Bits1 & 0x10 ) >> 4;
+
+ /*
+ speziell fuer WW8:
+ ermittle die Werte fuer PLCF LST und PLF LFO
+ und PLCF fuer TextBox-Break-Deskriptoren
+ */
+ long nOldPos = rSt.Tell();
+ rSt.Seek( 0x02e2 );
+ rSt >> fcPlcfLst;
+ rSt >> lcbPlcfLst;
+ rSt >> fcPlfLfo;
+ rSt >> lcbPlfLfo;
+ rSt >> fcPlcftxbxBkd;
+ rSt >> lcbPlcftxbxBkd;
+ rSt >> fcPlcfHdrtxbxBkd;
+ rSt >> lcbPlcfHdrtxbxBkd;
+ if( 0 != rSt.GetError() )
+ {
+ nFibError = ERR_SWG_READ_ERROR;
+ }
+
+ rSt.Seek( 0x372 ); // fcSttbListNames
+ rSt >> fcSttbListNames;
+ rSt >> lcbSttbListNames;
+ if( 0 != rSt.GetError() )
+ nFibError = ERR_SWG_READ_ERROR;
+
+ rSt.Seek( nOldPos );
+ }
+ }
+ else
+ {
+ nFibError = ERR_SWG_READ_ERROR; // Error melden
+ }
+}
+
+
+WW8Fib::WW8Fib( BYTE nVer )
+{
+ memset( this, 0, sizeof( *this ));
+ nVersion = nVer;
+ if( 8 == nVer )
+ {
+ fcMin = 0x400;
+ wIdent = 0xa5ec;
+ nFib = nFibBack = 0xc1;
+ nProduct = 0x49;
+
+ csw = 0x0e; // muss das sein ???
+ cfclcb = 0x5d; // -""-
+ clw = 0x16; // -""-
+ pnFbpChpFirst = pnFbpPapFirst = pnFbpLvcFirst = 0x000fffff;
+ fExtChar = TRUE;
+
+// diese Flags muessen nicht gesetzt werden; koennen aber.
+// wMagicCreated = wMagicRevised = 0x6a62;
+// wMagicCreatedPrivate = wMagicRevisedPrivate = 0xb3b2;
+// fWord97Saved = TRUE;
+ }
+ else
+ {
+ fcMin = 0x300;
+ wIdent = 0xa5dc;
+ nFib = nFibBack = 0x65;
+ nProduct = 0xc02d;
+ }
+
+ lid = 0x407;
+}
+
+
+BOOL WW8Fib::Write( SvStream& rStrm )
+{
+ BYTE* pData = new BYTE[ fcMin ];
+ BYTE* pDataPtr = pData;
+ memset( pData, 0, fcMin );
+
+ BOOL bVer8 = 8 == nVersion;
+
+ ULONG nPos = rStrm.Tell();
+ cbMac = rStrm.Seek( STREAM_SEEK_TO_END );
+ rStrm.Seek( nPos );
+
+ Set_UInt16( pData, wIdent );
+ Set_UInt16( pData, nFib );
+ Set_UInt16( pData, nProduct );
+ Set_UInt16( pData, lid );
+ Set_UInt16( pData, pnNext );
+
+ UINT16 nBits16 = 0;
+ if( fDot ) nBits16 |= 0x0001;
+ if( fGlsy) nBits16 |= 0x0002;
+ if( fComplex ) nBits16 |= 0x0004;
+ if( fHasPic ) nBits16 |= 0x0008;
+ nBits16 |= (0xf0 & ( cQuickSaves << 4 ));
+ if( fEncrypted ) nBits16 |= 0x0100;
+ if( fWhichTblStm ) nBits16 |= 0x0200;
+ if( fExtChar ) nBits16 |= 0x1000;
+ Set_UInt16( pData, nBits16 );
+
+ Set_UInt16( pData, nFibBack );
+ Set_UInt16( pData, lKey1 );
+ Set_UInt16( pData, lKey2 );
+ Set_UInt8( pData, envr );
+
+ BYTE nBits8 = 0;
+ if( bVer8 )
+ {
+ if( fMac ) nBits8 |= 0x0001;
+ if( fEmptySpecial ) nBits8 |= 0x0002;
+ if( fLoadOverridePage ) nBits8 |= 0x0004;
+ if( fFuturesavedUndo ) nBits8 |= 0x0008;
+ if( fWord97Saved ) nBits8 |= 0x0010;
+ }
+ Set_UInt8( pData, nBits8 ); // unter Ver67 nur leeres Reservefeld
+
+ Set_UInt16( pData, chse );
+ Set_UInt16( pData, chseTables );
+ Set_UInt32( pData, fcMin );
+ Set_UInt32( pData, fcMac );
+
+// Einschub fuer WW8 *****************************************************
+
+ // Marke: "rgsw" Beginning of the array of shorts
+ if( bVer8 )
+ {
+ Set_UInt16( pData, csw );
+ Set_UInt16( pData, wMagicCreated );
+ Set_UInt16( pData, wMagicRevised );
+ Set_UInt16( pData, wMagicCreatedPrivate );
+ Set_UInt16( pData, wMagicRevisedPrivate );
+ pData += 9 * sizeof( INT16 );
+ Set_UInt16( pData, lidFE );
+ Set_UInt16( pData, clw );
+ }
+
+// Ende des Einschubs fuer WW8 *******************************************
+
+ // Marke: "rglw" Beginning of the array of longs
+ Set_UInt32( pData, cbMac );
+
+ // 2 Longs uebergehen, da unwichtiger Quatsch
+ pData += 2 * sizeof( INT32);
+
+ // weitere 2 Longs nur bei Ver67 ueberspringen
+ if( !bVer8 ) pData += 2 * sizeof( INT32);
+
+ Set_UInt32( pData, ccpText );
+ Set_UInt32( pData, ccpFtn );
+ Set_UInt32( pData, ccpHdr );
+ Set_UInt32( pData, ccpMcr );
+ Set_UInt32( pData, ccpAtn );
+ Set_UInt32( pData, ccpEdn );
+ Set_UInt32( pData, ccpTxbx );
+ Set_UInt32( pData, ccpHdrTxbx );
+
+ // weiteres Long nur bei Ver67 ueberspringen
+ if( !bVer8 ) pData += 1 * sizeof( INT32);
+
+// Einschub fuer WW8 *****************************************************
+ if( bVer8 )
+ {
+ Set_UInt32( pData, pnFbpChpFirst );
+ Set_UInt32( pData, pnChpFirst );
+ Set_UInt32( pData, cpnBteChp );
+ Set_UInt32( pData, pnFbpPapFirst );
+ Set_UInt32( pData, pnPapFirst );
+ Set_UInt32( pData, cpnBtePap );
+ Set_UInt32( pData, pnFbpLvcFirst );
+ Set_UInt32( pData, pnLvcFirst );
+ Set_UInt32( pData, cpnBteLvc );
+ Set_UInt32( pData, fcIslandFirst );
+ Set_UInt32( pData, fcIslandLim );
+ Set_UInt16( pData, cfclcb );
+ }
+// Ende des Einschubs fuer WW8 *******************************************
+
+ // Marke: "rgfclcb" Beginning of array of FC/LCB pairs.
+ Set_UInt32( pData, fcStshfOrig );
+ Set_UInt32( pData, lcbStshfOrig );
+ Set_UInt32( pData, fcStshf );
+ Set_UInt32( pData, lcbStshf );
+ Set_UInt32( pData, fcPlcffndRef );
+ Set_UInt32( pData, lcbPlcffndRef );
+ Set_UInt32( pData, fcPlcffndTxt );
+ Set_UInt32( pData, lcbPlcffndTxt );
+ Set_UInt32( pData, fcPlcfandRef );
+ Set_UInt32( pData, lcbPlcfandRef );
+ Set_UInt32( pData, fcPlcfandTxt );
+ Set_UInt32( pData, lcbPlcfandTxt );
+ Set_UInt32( pData, fcPlcfsed );
+ Set_UInt32( pData, lcbPlcfsed );
+ Set_UInt32( pData, fcPlcfpad );
+ Set_UInt32( pData, lcbPlcfpad );
+ Set_UInt32( pData, fcPlcfphe );
+ Set_UInt32( pData, lcbPlcfphe );
+ Set_UInt32( pData, fcSttbfglsy );
+ Set_UInt32( pData, lcbSttbfglsy );
+ Set_UInt32( pData, fcPlcfglsy );
+ Set_UInt32( pData, lcbPlcfglsy );
+ Set_UInt32( pData, fcPlcfhdd );
+ Set_UInt32( pData, lcbPlcfhdd );
+ Set_UInt32( pData, fcPlcfbteChpx );
+ Set_UInt32( pData, lcbPlcfbteChpx );
+ Set_UInt32( pData, fcPlcfbtePapx );
+ Set_UInt32( pData, lcbPlcfbtePapx );
+ Set_UInt32( pData, fcPlcfsea );
+ Set_UInt32( pData, lcbPlcfsea );
+ Set_UInt32( pData, fcSttbfffn );
+ Set_UInt32( pData, lcbSttbfffn );
+ Set_UInt32( pData, fcPlcffldMom );
+ Set_UInt32( pData, lcbPlcffldMom );
+ Set_UInt32( pData, fcPlcffldHdr );
+ Set_UInt32( pData, lcbPlcffldHdr );
+ Set_UInt32( pData, fcPlcffldFtn );
+ Set_UInt32( pData, lcbPlcffldFtn );
+ Set_UInt32( pData, fcPlcffldAtn );
+ Set_UInt32( pData, lcbPlcffldAtn );
+ Set_UInt32( pData, fcPlcffldMcr );
+ Set_UInt32( pData, lcbPlcffldMcr );
+ Set_UInt32( pData, fcSttbfbkmk );
+ Set_UInt32( pData, lcbSttbfbkmk );
+ Set_UInt32( pData, fcPlcfbkf );
+ Set_UInt32( pData, lcbPlcfbkf );
+ Set_UInt32( pData, fcPlcfbkl );
+ Set_UInt32( pData, lcbPlcfbkl );
+ Set_UInt32( pData, fcCmds );
+ Set_UInt32( pData, lcbCmds );
+ Set_UInt32( pData, fcPlcfmcr );
+ Set_UInt32( pData, lcbPlcfmcr );
+ Set_UInt32( pData, fcSttbfmcr );
+ Set_UInt32( pData, lcbSttbfmcr );
+ Set_UInt32( pData, fcPrDrvr );
+ Set_UInt32( pData, lcbPrDrvr );
+ Set_UInt32( pData, fcPrEnvPort );
+ Set_UInt32( pData, lcbPrEnvPort );
+ Set_UInt32( pData, fcPrEnvLand );
+ Set_UInt32( pData, lcbPrEnvLand );
+ Set_UInt32( pData, fcWss );
+ Set_UInt32( pData, lcbWss );
+ Set_UInt32( pData, fcDop );
+ Set_UInt32( pData, lcbDop );
+ Set_UInt32( pData, fcSttbfAssoc );
+ Set_UInt32( pData, cbSttbfAssoc );
+ Set_UInt32( pData, fcClx );
+ Set_UInt32( pData, lcbClx );
+ Set_UInt32( pData, fcPlcfpgdFtn );
+ Set_UInt32( pData, lcbPlcfpgdFtn );
+ Set_UInt32( pData, fcAutosaveSource );
+ Set_UInt32( pData, lcbAutosaveSource );
+ Set_UInt32( pData, fcGrpStAtnOwners );
+ Set_UInt32( pData, lcbGrpStAtnOwners );
+ Set_UInt32( pData, fcSttbfAtnbkmk );
+ Set_UInt32( pData, lcbSttbfAtnbkmk );
+
+ // weiteres short nur bei Ver67 ueberspringen
+ if( !bVer8 )
+ {
+ pData += 1*sizeof( INT16);
+ Set_UInt16( pData, (UINT16)pnChpFirst );
+ Set_UInt16( pData, (UINT16)pnPapFirst );
+ Set_UInt16( pData, (UINT16)cpnBteChp );
+ Set_UInt16( pData, (UINT16)cpnBtePap );
+ }
+
+ Set_UInt32( pData, fcPlcfdoaMom ); // nur bei Ver67, in Ver8 unused
+ Set_UInt32( pData, lcbPlcfdoaMom ); // nur bei Ver67, in Ver8 unused
+ Set_UInt32( pData, fcPlcfdoaHdr ); // nur bei Ver67, in Ver8 unused
+ Set_UInt32( pData, lcbPlcfdoaHdr ); // nur bei Ver67, in Ver8 unused
+
+ Set_UInt32( pData, fcPlcfspaMom ); // in Ver67 leere Reserve
+ Set_UInt32( pData, lcbPlcfspaMom ); // in Ver67 leere Reserve
+ Set_UInt32( pData, fcPlcfspaHdr ); // in Ver67 leere Reserve
+ Set_UInt32( pData, lcbPlcfspaHdr ); // in Ver67 leere Reserve
+
+ Set_UInt32( pData, fcPlcfAtnbkf );
+ Set_UInt32( pData, lcbPlcfAtnbkf );
+ Set_UInt32( pData, fcPlcfAtnbkl );
+ Set_UInt32( pData, lcbPlcfAtnbkl );
+ Set_UInt32( pData, fcPms );
+ Set_UInt32( pData, lcbPMS );
+ Set_UInt32( pData, fcFormFldSttbf );
+ Set_UInt32( pData, lcbFormFldSttbf );
+ Set_UInt32( pData, fcPlcfendRef );
+ Set_UInt32( pData, lcbPlcfendRef );
+ Set_UInt32( pData, fcPlcfendTxt );
+ Set_UInt32( pData, lcbPlcfendTxt );
+ Set_UInt32( pData, fcPlcffldEdn );
+ Set_UInt32( pData, lcbPlcffldEdn );
+ Set_UInt32( pData, fcPlcfpgdEdn );
+ Set_UInt32( pData, lcbPlcfpgdEdn );
+ Set_UInt32( pData, fcDggInfo ); // in Ver67 leere Reserve
+ Set_UInt32( pData, lcbDggInfo ); // in Ver67 leere Reserve
+ Set_UInt32( pData, fcSttbfRMark );
+ Set_UInt32( pData, lcbSttbfRMark );
+ Set_UInt32( pData, fcSttbfCaption );
+ Set_UInt32( pData, lcbSttbfCaption );
+ Set_UInt32( pData, fcSttbAutoCaption );
+ Set_UInt32( pData, lcbSttbAutoCaption );
+ Set_UInt32( pData, fcPlcfwkb );
+ Set_UInt32( pData, lcbPlcfwkb );
+ Set_UInt32( pData, fcPlcfspl ); // in Ver67 leere Reserve
+ Set_UInt32( pData, lcbPlcfspl ); // in Ver67 leere Reserve
+ Set_UInt32( pData, fcPlcftxbxTxt );
+ Set_UInt32( pData, lcbPlcftxbxTxt );
+ Set_UInt32( pData, fcPlcffldTxbx );
+ Set_UInt32( pData, lcbPlcffldTxbx );
+ Set_UInt32( pData, fcPlcfHdrtxbxTxt );
+ Set_UInt32( pData, lcbPlcfHdrtxbxTxt );
+ Set_UInt32( pData, fcPlcffldHdrTxbx );
+ Set_UInt32( pData, lcbPlcffldHdrTxbx );
+
+ if( bVer8 )
+ {
+ pData += 0x2e2 - 0x27a; // Pos + Offset (fcPlcfLst - fcStwUser)
+ Set_UInt32( pData, fcPlcfLst );
+ Set_UInt32( pData, lcbPlcfLst );
+ Set_UInt32( pData, fcPlfLfo );
+ Set_UInt32( pData, lcbPlfLfo );
+ Set_UInt32( pData, fcPlcftxbxBkd );
+ Set_UInt32( pData, lcbPlcftxbxBkd );
+ Set_UInt32( pData, fcPlcfHdrtxbxBkd );
+ Set_UInt32( pData, lcbPlcfHdrtxbxBkd );
+
+ pData += 0x372 - 0x302; // Pos + Offset (fcSttbListNames - fcDocUndo)
+ Set_UInt32( pData, fcSttbListNames );
+ Set_UInt32( pData, lcbSttbListNames );
+ }
+
+ rStrm.Write( pDataPtr, fcMin );
+ delete pDataPtr;
+ return 0 == rStrm.GetError();
+}
+
+WW8Style::WW8Style( SvStream& rStream, WW8Fib& rFibPara ): rSt( rStream ), rFib( rFibPara )
+{
+ nStyleStart = rFib.fcStshf;
+ nStyleLen = rFib.lcbStshf;
+
+ rSt.Seek( nStyleStart );
+
+ USHORT cbStshi = 0; // 2 bytes size of the following STSHI structure
+
+ // alte Version ?
+ if ( rFib.nFib < 67 )
+ {
+ cbStshi = 4; // -> Laengenfeld fehlt
+ }
+ else // neue Version:
+ // lies die Laenge der in der Datei gespeicherten Struktur
+ rSt >> cbStshi;
+
+ UINT16 nRead = cbStshi;
+ do
+ {
+ UINT16 a16Bit;
+
+ if( 2 > nRead ) break;
+ rSt >> cstd;
+
+ if( 4 > nRead ) break;
+ rSt >> cbSTDBaseInFile;
+
+ if( 6 > nRead ) break;
+ rSt >> a16Bit;
+ fStdStylenamesWritten = a16Bit & 0x0001;
+
+ if( 8 > nRead ) break;
+ rSt >> stiMaxWhenSaved;
+
+ if( 10 > nRead ) break;
+ rSt >> istdMaxFixedWhenSaved;
+
+ if( 12 > nRead ) break;
+ rSt >> nVerBuiltInNamesWhenSaved;
+
+ if( 14 > nRead ) break;
+ rSt >> ftcStandardChpStsh;
+
+ // ggfs. den Rest ueberlesen
+ if( 14 < nRead )
+ rSt.SeekRel( nRead-14 );
+ }
+ while( !this ); // Trick: obiger Block wird genau einmal durchlaufen
+ // und kann vorzeitig per "break" verlassen werden.
+
+ if( 0 != rSt.GetError() )
+ {
+ // wie denn nun den Error melden?
+ }
+}
+
+
+// Read1STDFixed() liest ein Style ein. Wenn der Style vollstaendig vorhanden
+// ist, d.h. kein leerer Slot, dann wird Speicher alloziert und ein Pointer auf
+// die ( evtl. mit Nullen aufgefuellten ) STD geliefert. Ist es ein leerer
+// Slot, dann wird ein Nullpointer zurueckgeliefert.
+WW8_STD* WW8Style::Read1STDFixed( short& rSkip, short* pcbStd )
+{
+ WW8_STD* pStd = (WW8_STD*)0;
+
+ UINT16 cbStd;
+ rSt >> cbStd; // lies Laenge
+
+ UINT16 nRead = cbSTDBaseInFile;
+ if( cbStd >= cbSTDBaseInFile ){ // Fixed part vollst. vorhanden
+
+ // read fixed part of STD
+ pStd = new WW8_STD;
+ memset( pStd, 0, sizeof( *pStd ) );
+
+ do
+ {
+ UINT16 a16Bit;
+
+ if( 2 > nRead ) break;
+ rSt >> a16Bit;
+ pStd->sti = a16Bit & 0x0fff ;
+ pStd->fScratch = 0 != ( a16Bit & 0x1000 );
+ pStd->fInvalHeight = 0 != ( a16Bit & 0x2000 );
+ pStd->fHasUpe = 0 != ( a16Bit & 0x4000 );
+ pStd->fMassCopy = 0 != ( a16Bit & 0x8000 );
+
+ if( 4 > nRead ) break;
+ rSt >> a16Bit;
+ pStd->sgc = a16Bit & 0x000f ;
+ pStd->istdBase = ( a16Bit & 0xfff0 ) >> 4;
+
+ if( 6 > nRead ) break;
+ rSt >> a16Bit;
+ pStd->cupx = a16Bit & 0x000f ;
+ pStd->istdNext = ( a16Bit & 0xfff0 ) >> 4;
+
+ if( 8 > nRead ) break;
+ rSt >> pStd->bchUpe;
+
+ // ab Ver8 sollten diese beiden Felder dazukommen:
+ if(10 > nRead ) break;
+ rSt >> a16Bit;
+ pStd->fAutoRedef = a16Bit & 0x0001 ;
+ pStd->fHidden = ( a16Bit & 0x0002 ) >> 2;
+
+ // man kann nie wissen: vorsichtshalber ueberlesen
+ // wir eventuelle Fuellsel, die noch zum BASE-Part gehoeren...
+ if( 10 < nRead )
+ rSt.SeekRel( nRead-10 );
+ }
+ while( !this ); // Trick: obiger Block wird genau einmal durchlaufen
+ // und kann vorzeitig per "break" verlassen werden.
+
+ if( (0 != rSt.GetError())
+ || !nRead )
+ DELETEZ( pStd ); // per NULL den Error melden
+
+ rSkip = cbStd - cbSTDBaseInFile;
+ }
+ else
+ { // Fixed part zu kurz
+ if( cbStd )
+ rSt.SeekRel( cbStd ); // ueberlies Reste
+ rSkip = 0;
+ }
+ if( pcbStd )
+ *pcbStd = cbStd;
+ return pStd;
+}
+
+WW8_STD* WW8Style::Read1Style( short& rSkip, String* pString, short* pcbStd )
+{
+ // OS2, or WIN with Mac-Doc,...
+ // Attention: MacWord-Documents have their Stylenames
+ // always in ANSI, even if eStructCharSet == CHARSET_MAC !!
+
+ WW8_STD* pStd;
+
+ pStd = Read1STDFixed( rSkip, pcbStd ); // lese STD
+
+ // String gewuenscht ?
+ if( pString )
+ { // echter Style ?
+ if ( pStd )
+ {
+
+ switch( rFib.nVersion ) // beachte: 6 steht fuer "6 ODER 7", 7 steht fuer "NUR 7"
+ {
+ case 6:
+ case 7: // lies Pascal-String
+ *pString = WW8ReadPString( rSt,
+ RTL_TEXTENCODING_MS_1252 );
+ // leading len and trailing zero --> 2
+ rSkip -= 2+ pString->Len();
+ break;
+ case 8: // lies Unicode-String mit fuehrendem Laengenbyte and trailing zero
+ *pString = WW8Read_xstz( rSt, 0, TRUE );
+ rSkip -= (pString->Len() + 2) * 2;
+ break;
+ default:ASSERT( !this, "Es wurde vergessen, nVersion zu kodieren!" );
+ }
+
+ }
+ else
+ *pString = aEmptyStr; // Kann keinen Namen liefern
+ }
+ return pStd;
+}
+
+
+//-----------------------------------------
+
+
+struct WW8_FFN_Ver6 : public WW8_FFN_BASE
+{
+ // ab Ver6
+ sal_Char szFfn[65]; // 0x6 bzw. 0x40 ab Ver8 zero terminated string that
+ // records name of font.
+ // Maximal size of szFfn is 65 characters.
+ // Vorsicht: Dieses Array kann auch kleiner sein!!!
+ // Possibly followed by a second sz which records the
+ // name of an alternate font to use if the first named
+ // font does not exist on this system.
+};
+struct WW8_FFN_Ver8 : public WW8_FFN_BASE
+{
+ // ab Ver8 sind folgende beiden Felder eingeschoben,
+ // werden von uns ignoriert.
+ sal_Char panose[ 10 ]; // 0x6 PANOSE
+ sal_Char fs[ 24 ]; // 0x10 FONTSIGNATURE
+
+ // ab Ver8 als Unicode
+ UINT16 szFfn[65];// 0x6 bzw. 0x40 ab Ver8 zero terminated string that
+ // records name of font.
+ // Maximal size of szFfn is 65 characters.
+ // Vorsicht: Dieses Array kann auch kleiner sein!!!
+ // Possibly followed by a second sz which records the
+ // name of an alternate font to use if the first named
+ // font does not exist on this system.
+};
+
+
+WW8Fonts::WW8Fonts( SvStream& rSt, WW8Fib& rFib )
+{
+ // OS2, or WIN with Mac-Doc,...
+ // Attention: MacWord-Documents have their Fontnames
+ // always in ANSI, even if eStructCharSet == CHARSET_MAC !!
+ if( rFib.lcbSttbfffn <= 2 )
+ {
+ ASSERT( !this, "Fonttabelle kaputt! (rFib.lcbSttbfffn < 2)" );
+ pFontA = 0;
+ nMax = 0;
+ return;
+ }
+
+ BOOL bVer67 = (8 > rFib.nVersion);
+
+ rSt.Seek( rFib.fcSttbfffn );
+
+ // allocate Font Array
+ BYTE* pA = new BYTE[ rFib.lcbSttbfffn - 2 ];
+ WW8_FFN* p = (WW8_FFN*)pA;
+
+ if( !bVer67 )
+ {
+ // bVer8: read the count of strings in nMax
+ rSt >> nMax;
+ }
+
+ // Ver8: skip undefined uint16
+ // Ver67: skip the herein stored total byte of structure
+ // - we already got that information in rFib.lcbSttbfffn
+ rSt.SeekRel( 2 );
+
+ // read all font information
+ rSt.Read( pA, rFib.lcbSttbfffn - 2 );
+
+ if( bVer67 )
+ {
+ // try to figure out how many fonts are defined here
+ nMax = 0;
+ long nLeft = rFib.lcbSttbfffn - 2;
+ for(;;)
+ {
+ short nNextSiz;
+
+ nNextSiz = p->cbFfnM1 + 1;
+ if( nNextSiz > nLeft )
+ break;
+ nMax++;
+ nLeft -= nNextSiz;
+ if( nLeft < 1 ) // can we read the given ammount of bytes ?
+ break;
+ // increase p by nNextSiz Bytes
+ p = (WW8_FFN *)( ( (BYTE*)p ) + nNextSiz );
+ }
+ }
+
+ if( nMax )
+ {
+ // allocate Index Array
+ pFontA = new WW8_FFN[ nMax ];
+ p = pFontA;
+
+ if( bVer67 )
+ {
+ WW8_FFN_Ver6* pVer6 = (WW8_FFN_Ver6*)pA;
+ for(USHORT i=0; i<nMax; ++i, ++p)
+ {
+ p->cbFfnM1 = pVer6->cbFfnM1;
+ p->prg = pVer6->prg;
+ p->fTrueType = pVer6->fTrueType;
+ p->ff = pVer6->ff;
+ p->wWeight = SVBT16ToShort( *(SVBT16*)&pVer6->wWeight );
+ p->chs = pVer6->chs;
+ p->ibszAlt = pVer6->ibszAlt;
+ p->sFontname = String( pVer6->szFfn, RTL_TEXTENCODING_MS_1252 );
+ pVer6 = (WW8_FFN_Ver6*)( ((BYTE*)pVer6)
+ + pVer6->cbFfnM1 + 1 );
+ }
+ }
+ else
+ {
+ WW8_FFN_Ver8* pVer8 = (WW8_FFN_Ver8*)pA;
+ BYTE c2;
+ for(USHORT i=0; i<nMax; ++i, ++p)
+ {
+ p->cbFfnM1 = pVer8->cbFfnM1;
+ c2 = *(((BYTE*)pVer8) + 1);
+
+ p->prg = c2 & 0x02;
+ p->fTrueType = (c2 & 0x04) >> 2;
+ // ein Reserve-Bit ueberspringen
+ p->ff = (c2 & 0x70) >> 4;
+
+ p->wWeight = SVBT16ToShort( *(SVBT16*)&pVer8->wWeight );
+ p->chs = pVer8->chs;
+ p->ibszAlt = pVer8->ibszAlt;
+
+#ifdef __WW8_NEEDS_COPY
+ {
+ for(UINT16* pTmp = pVer8->szFfn; *pTmp; ++pTmp )
+ *pTmp = SVBT16ToShort( *(SVBT16*)pTmp );
+ }
+#endif // defined __WW8_NEEDS_COPY
+
+ p->sFontname = pVer8->szFfn;
+
+ // Zeiger auf Ursprungsarray einen Font nach hinten setzen
+ pVer8 = (WW8_FFN_Ver8*)( ( (BYTE*)pVer8 ) + pVer8->cbFfnM1 + 1 );
+ }
+ }
+ }
+ delete pA;
+}
+
+const WW8_FFN* WW8Fonts::GetFont( USHORT nNum ) const
+{
+ if( !pFontA || nNum > nMax )
+ return 0;
+
+ return &pFontA[ nNum ];
+}
+
+
+
+//-----------------------------------------
+
+
+// Suche zu einem Header / Footer den Index in der WW-Liste von Headern / Footern
+//
+// Pferdefuesse bei WinWord6 und -7:
+// 1) Am Anfang des Einlesens muss WWPLCF_HdFt mit Fib und Dop konstruiert werden
+// 2) Der Haupttext muss sequentiell ueber alle Sections gelesen werden
+// 3) Fuer jedes vorkommende Header / Footer - Attribut des Haupttextes
+// ( Darf pro Section maximal eins sein ) muss UpdateIndex() genau einmal
+// mit dem Parameter des Attributes gerufen werden. Dieser Aufruf muss *nach*
+// dem letzten Aufruf von GetTextPos() passieren.
+// 4) GetTextPos() darf mit genau einem der obenstehen WW_... aufgerufen werden
+// ( nicht verodern ! )
+// -> dann liefert GetTextPos() vielleicht auch ein richtiges Ergebnis
+
+WW8PLCF_HdFt::WW8PLCF_HdFt( SvStream* pSt, WW8Fib& rFib, WW8Dop& rDop )
+: aPLCF( pSt, rFib.fcPlcfhdd , rFib.lcbPlcfhdd , 0 )
+{
+ nIdxOffset = 0;
+
+// for( BYTE nI = 0x80; nI >= 0x20; nI >>= 1 ) // Beschreibung stimmt nicht
+
+// for( BYTE nI = 0x1; nI <= 0x4; nI <<= 1 ) // Vorsicht: Beschreibung stimmt nicht
+
+
+ /*
+ cmc 23/02/2000: This dop.grpfIhdt has a bit set for each special
+ footnote *and endnote!!* seperator,continuation seperator, and
+ continuation notice entry, the documentation does not mention the
+ endnote seperators, the documentation also gets the index numbers
+ backwards when specifiying which bits to test. The bottom six bits
+ of this value must be tested and skipped over. Each section's
+ grpfIhdt is then tested for the existence of the appropiate headers
+ and footers, at the end of each section the nIdxOffset must be updated
+ to point to the beginning of the next section's group of headers and
+ footers in this PLCF, UpdateIndex does that task.
+ */
+ for( BYTE nI = 0x1; nI <= 0x20; nI <<= 1 )
+ if( nI & rDop.grpfIhdt ) // Bit gesetzt ?
+ nIdxOffset++;
+
+ nTextOfs = rFib.ccpText + rFib.ccpFtn; // Groesse des Haupttextes
+ // und der Fussnoten
+}
+
+BOOL WW8PLCF_HdFt::GetTextPos( BYTE grpfIhdt, BYTE nWhich, WW8_CP& rStart, long& rLen )
+{
+ BYTE nI = 0x1;
+ short nIdx = nIdxOffset;
+ while( TRUE ){
+ if( nI & nWhich )
+ break; // gefunden
+ if( grpfIhdt & nI )
+ nIdx++; // uninteressanter Header / Footer
+ nI <<= 1; // naechstes Bit testen
+ if( nI > 0x20 )
+ return FALSE; // nicht gefunden
+ }
+ // nIdx ist HdFt-Index
+ WW8_CP ende;
+ void* pData;
+
+ aPLCF.SetIdx( nIdx ); // dann suche passenden CP
+ aPLCF.Get( rStart, ende, pData );
+ rLen = ende - rStart;
+// Der letzte Header/Footer hat eine Laenge, die um 1 Zeichen zu gross ist
+// ( folgendes CR ). Um diesen passend zu kuerzen muesste man den Index
+// dieses K/F-Textes finden ( es ist nicht der letzte im PLCF ! ).
+// if( (long)aPLCF.GetIdx() == aPLCF.GetIMax() ) // Falsch!
+// rLen--; // Letztes Element ist 1 zu gross
+ aPLCF++;
+ return TRUE;
+}
+
+BOOL WW8PLCF_HdFt::GetTextPosExact( short nIdx, WW8_CP& rStart, long& rLen )
+{
+ WW8_CP ende;
+ void* pData;
+
+ aPLCF.SetIdx( nIdx ); // dann suche passenden CP
+ aPLCF.Get( rStart, ende, pData );
+ rLen = ende - rStart;
+// Der letzte Header/Footer hat eine Laenge, die um 1 Zeichen zu gross ist
+// ( folgendes CR ). Um diesen passend zu kuerzen muesste man den Index
+// dieses K/F-Textes finden ( es ist nicht der letzte im PLCF ! ).
+// if( (long)aPLCF.GetIdx() == aPLCF.GetIMax() ) // Falsch!
+// rLen--; // Letztes Element ist 1 zu gross
+ return TRUE;
+}
+
+void WW8PLCF_HdFt::UpdateIndex( BYTE grpfIhdt )
+{
+ for( BYTE nI = 0x1; nI <= 0x20; nI <<= 1 ) // Vorsicht: Beschreibung stimmt nicht
+ if( nI & grpfIhdt )
+ nIdxOffset++;
+}
+
+//-----------------------------------------
+// WW8Dop
+//-----------------------------------------
+
+
+
+WW8Dop::WW8Dop( SvStream& rSt, INT16 nFib, INT32 nPos, INT32 nSize )
+{
+ BYTE* pData = new BYTE[ 500 ];
+ BYTE* pDataPtr = pData;
+ UINT32 nRead = 500 < nSize ? 500 : nSize;
+ rSt.Seek( nPos );
+ if( 2 > nSize || nRead != rSt.Read( pData, nRead ))
+ {
+ memset( &nDataStart, 0, (&nDataEnd - &nDataStart) );
+ nDopError = ERR_SWG_READ_ERROR; // Error melden
+ }
+ else
+ {
+ if( 500 > nRead )
+ memset( pData + nRead, 0, 500 - nRead );
+
+ // dann mal die Daten auswerten
+ UINT32 a32Bit;
+ UINT16 a16Bit;
+ BYTE a8Bit;
+
+ a16Bit = Get_UShort( pData );
+ fFacingPages = 0 != ( a16Bit & 0x0001 ) ;
+ fWidowControl = 0 != ( a16Bit & 0x0002 ) ;
+ fPMHMainDoc = 0 != ( a16Bit & 0x0004 ) ;
+ grfSuppression = ( a16Bit & 0x0018 ) >> 3;
+ fpc = ( a16Bit & 0x0060 ) >> 5;
+ grpfIhdt = ( a16Bit & 0xff00 ) >> 8;
+
+ a16Bit = Get_UShort( pData );
+ rncFtn = a16Bit & 0x0003 ;
+ nFtn = ( a16Bit & ~0x0003 ) >> 2 ;
+
+ a8Bit = Get_Byte( pData );
+ fOutlineDirtySave = 0 != ( a8Bit & 0x01 );
+
+ a8Bit = Get_Byte( pData );
+ fOnlyMacPics = 0 != ( a8Bit & 0x01 );
+ fOnlyWinPics = 0 != ( a8Bit & 0x02 );
+ fLabelDoc = 0 != ( a8Bit & 0x04 );
+ fHyphCapitals = 0 != ( a8Bit & 0x08 );
+ fAutoHyphen = 0 != ( a8Bit & 0x10 );
+ fFormNoFields = 0 != ( a8Bit & 0x20 );
+ fLinkStyles = 0 != ( a8Bit & 0x40 );
+ fRevMarking = 0 != ( a8Bit & 0x80 );
+
+ a8Bit = Get_Byte( pData );
+ fBackup = 0 != ( a8Bit & 0x01 );
+ fExactCWords = 0 != ( a8Bit & 0x02 );
+ fPagHidden = 0 != ( a8Bit & 0x04 );
+ fPagResults = 0 != ( a8Bit & 0x08 );
+ fLockAtn = 0 != ( a8Bit & 0x10 );
+ fMirrorMargins = 0 != ( a8Bit & 0x20 );
+ fReadOnlyRecommended = 0 != ( a8Bit & 0x40 );
+ fDfltTrueType = 0 != ( a8Bit & 0x80 );
+
+ a8Bit = Get_Byte( pData );
+ fPagSuppressTopSpacing = 0 != ( a8Bit & 0x01 );
+ fProtEnabled = 0 != ( a8Bit & 0x02 );
+ fDispFormFldSel = 0 != ( a8Bit & 0x04 );
+ fRMView = 0 != ( a8Bit & 0x08 );
+ fRMPrint = 0 != ( a8Bit & 0x10 );
+ fWriteReservation = 0 != ( a8Bit & 0x20 );
+ fLockRev = 0 != ( a8Bit & 0x40 );
+ fEmbedFonts = 0 != ( a8Bit & 0x80 );
+
+
+ a8Bit = Get_Byte( pData );
+ copts_fNoTabForInd = 0 != ( a8Bit & 0x01 );
+ copts_fNoSpaceRaiseLower = 0 != ( a8Bit & 0x02 );
+ copts_fSupressSpbfAfterPgBrk = 0 != ( a8Bit & 0x04 );
+ copts_fWrapTrailSpaces = 0 != ( a8Bit & 0x08 );
+ copts_fMapPrintTextColor = 0 != ( a8Bit & 0x10 );
+ copts_fNoColumnBalance = 0 != ( a8Bit & 0x20 );
+ copts_fConvMailMergeEsc = 0 != ( a8Bit & 0x40 );
+ copts_fSupressTopSpacing = 0 != ( a8Bit & 0x80 );
+
+ a8Bit = Get_Byte( pData );
+ copts_fOrigWordTableRules = 0 != ( a8Bit & 0x01 );
+ copts_fTransparentMetafiles = 0 != ( a8Bit & 0x02 );
+ copts_fShowBreaksInFrames = 0 != ( a8Bit & 0x04 );
+ copts_fSwapBordersFacingPgs = 0 != ( a8Bit & 0x08 );
+
+ dxaTab = Get_Short( pData );
+ wSpare = Get_UShort( pData );
+ dxaHotZ = Get_UShort( pData );
+ cConsecHypLim = Get_UShort( pData );
+ wSpare2 = Get_UShort( pData );
+ dttmCreated = Get_Long( pData );
+ dttmRevised = Get_Long( pData );
+ dttmLastPrint = Get_Long( pData );
+ nRevision = Get_Short( pData );
+ tmEdited = Get_Long( pData );
+ cWords = Get_Long( pData );
+ cCh = Get_Long( pData );
+ cPg = Get_Short( pData );
+ cParas = Get_Long( pData );
+
+ a16Bit = Get_UShort( pData );
+ rncEdn = a16Bit & 0x0003 ;
+ nEdn = ( a16Bit & ~0x0003 ) >> 2;
+
+ a16Bit = Get_UShort( pData );
+ epc = a16Bit & 0x0003 ;
+ nfcFtnRef = ( a16Bit & 0x003c ) >> 2;
+ nfcEdnRef = ( a16Bit & 0x03c0 ) >> 6;
+ fPrintFormData = 0 != ( a16Bit & 0x0400 );
+ fSaveFormData = 0 != ( a16Bit & 0x0800 );
+ fShadeFormData = 0 != ( a16Bit & 0x1000 );
+ fWCFtnEdn = 0 != ( a16Bit & 0x8000 );
+
+ cLines = Get_Long( pData );
+ cWordsFtnEnd = Get_Long( pData );
+ cChFtnEdn = Get_Long( pData );
+ cPgFtnEdn = Get_Short( pData );
+ cParasFtnEdn = Get_Long( pData );
+ cLinesFtnEdn = Get_Long( pData );
+ lKeyProtDoc = Get_Long( pData );
+
+ a16Bit = Get_UShort( pData );
+ wvkSaved = a16Bit & 0x0007 ;
+ wScaleSaved = ( a16Bit & 0x0ff8 ) >> 3 ;
+ zkSaved = ( a16Bit & 0x3000 ) >> 12;
+
+ /*
+ bei nFib >= 103 gehts weiter:
+ */
+ if( nFib >= 103 )
+ {
+ a32Bit = Get_ULong( pData );
+ fNoTabForInd = ( a32Bit & 0x00000001 ) ;
+ fNoSpaceRaiseLower = ( a32Bit & 0x00000002 ) >> 1 ;
+ fSupressSpbfAfterPageBreak = ( a32Bit & 0x00000004 ) >> 2 ;
+ fWrapTrailSpaces = ( a32Bit & 0x00000008 ) >> 3 ;
+ fMapPrintTextColor = ( a32Bit & 0x00000010 ) >> 4 ;
+ fNoColumnBalance = ( a32Bit & 0x00000020 ) >> 5 ;
+ fConvMailMergeEsc = ( a32Bit & 0x00000040 ) >> 6 ;
+ fSupressTopSpacing = ( a32Bit & 0x00000080 ) >> 7 ;
+ fOrigWordTableRules = ( a32Bit & 0x00000100 ) >> 8 ;
+ fTransparentMetafiles = ( a32Bit & 0x00000200 ) >> 9 ;
+ fShowBreaksInFrames = ( a32Bit & 0x00000400 ) >> 10 ;
+ fSwapBordersFacingPgs = ( a32Bit & 0x00000800 ) >> 11 ;
+ fSuppressTopSpacingMac5 = ( a32Bit & 0x00010000 ) >> 16 ;
+ fTruncDxaExpand = ( a32Bit & 0x00020000 ) >> 17 ;
+ fPrintBodyBeforeHdr = ( a32Bit & 0x00040000 ) >> 18 ;
+ fNoLeading = ( a32Bit & 0x00080000 ) >> 19 ;
+ fMWSmallCaps = ( a32Bit & 0x00200000 ) >> 21 ;
+ }
+
+ /*
+ bei nFib > 105 gehts weiter:
+ */
+ if( nFib > 105 )
+ {
+ adt = Get_Short( pData );
+
+ memcpy( &doptypography, pData, sizeof( WW8_DOPTYPOGRAPHY ));
+ pData += sizeof( WW8_DOPTYPOGRAPHY );
+
+ memcpy( &dogrid, pData, sizeof( WW8_DOGRID ));
+ pData += sizeof( WW8_DOGRID );
+
+ a16Bit = Get_UShort( pData );
+ // die untersten 9 Bit sind uninteressant
+ fHtmlDoc = ( a16Bit & 0x0200 ) >> 9 ;
+ fSnapBorder = ( a16Bit & 0x0800 ) >> 11 ;
+ fIncludeHeader = ( a16Bit & 0x1000 ) >> 12 ;
+ fIncludeFooter = ( a16Bit & 0x2000 ) >> 13 ;
+ fForcePageSizePag = ( a16Bit & 0x4000 ) >> 14 ;
+ fMinFontSizePag = ( a16Bit & 0x8000 ) >> 15 ;
+
+ a16Bit = Get_UShort( pData );
+ fHaveVersions = 0 != ( a16Bit & 0x0001 );
+ fAutoVersion = 0 != ( a16Bit & 0x0002 );
+
+ pData += 12;
+
+ cChWS = Get_Long( pData );
+ cChWSFtnEdn = Get_Long( pData );
+ grfDocEvents = Get_Long( pData );
+
+ pData += 4+30+8;
+
+ cDBC = Get_Long( pData );
+ cDBCFtnEdn = Get_Long( pData );
+
+ pData += 1 * sizeof( long );
+
+ nfcFtnRef = Get_Short( pData );
+ nfcEdnRef = Get_Short( pData );
+ hpsZoonFontPag = Get_Short( pData );
+ dywDispPag = Get_Short( pData );
+ }
+ }
+ delete pDataPtr;
+}
+
+WW8Dop::WW8Dop()
+{
+ // erstmal alles auf 0 defaulten
+ memset( &nDataStart, 0, (&nDataEnd - &nDataStart) );
+
+ fWidowControl = 1;
+ fpc = 1;
+ nFtn = 1;
+ fOutlineDirtySave = 1;
+ fHyphCapitals = 1;
+ fBackup = 1;
+ fPagHidden = 1;
+ fPagResults = 1;
+ fDfltTrueType = 1;
+ fRMView = 1;
+ fRMPrint = 1;
+ dxaTab = 0x2d0;
+ dxaHotZ = 0x168;
+ dttmCreated = 0x45FBAC69;
+ dttmRevised = 0x45FBAC69;
+ nRevision = 1;
+ nEdn = 1;
+
+ epc = 3;
+ nfcEdnRef = 2;
+ fShadeFormData = 1;
+
+ wvkSaved = 2;
+ wScaleSaved = 100;
+ zkSaved = 0;
+
+ lvl = 9;
+ fIncludeHeader = 1;
+ fIncludeFooter = 1;
+
+ cChWS = /**!!**/ 0;
+ cChWSFtnEdn = /**!!**/ 0;
+
+ cDBC = /**!!**/ 0;
+ cDBCFtnEdn = /**!!**/ 0;
+}
+
+BOOL WW8Dop::Write( SvStream& rStrm, WW8Fib& rFib )
+{
+ INT32 nLen = 8 == rFib.nVersion ? 500 : 84;
+ rFib.fcDop = rStrm.Tell();
+ rFib.lcbDop = nLen;
+
+ BYTE aData[ 500 ];
+ memset( aData, 0, 500 );
+ BYTE* pData = aData;
+
+ // dann mal die Daten auswerten
+ UINT32 a32Bit;
+ UINT16 a16Bit;
+ BYTE a8Bit;
+
+ a16Bit = 0;
+ if( fFacingPages ) a16Bit |= 0x0001;
+ if( fWidowControl ) a16Bit |= 0x0002;
+ if( fPMHMainDoc ) a16Bit |= 0x0004;
+ a16Bit |= ( 0x0018 & (grfSuppression << 3));
+ a16Bit |= ( 0x0060 & (fpc << 5));
+ a16Bit |= ( 0xff00 & (grpfIhdt << 8));
+ Set_UInt16( pData, a16Bit );
+
+ a16Bit = 0;
+ a16Bit |= ( 0x0003 & rncFtn );
+ a16Bit |= ( ~0x0003 & (nFtn << 2));
+ Set_UInt16( pData, a16Bit );
+
+ a8Bit = 0;
+ if( fOutlineDirtySave ) a8Bit |= 0x01;
+ Set_UInt8( pData, a8Bit );
+
+ a8Bit = 0;
+ if( fOnlyMacPics ) a8Bit |= 0x01;
+ if( fOnlyWinPics ) a8Bit |= 0x02;
+ if( fLabelDoc ) a8Bit |= 0x04;
+ if( fHyphCapitals ) a8Bit |= 0x08;
+ if( fAutoHyphen ) a8Bit |= 0x10;
+ if( fFormNoFields ) a8Bit |= 0x20;
+ if( fLinkStyles ) a8Bit |= 0x40;
+ if( fRevMarking ) a8Bit |= 0x80;
+ Set_UInt8( pData, a8Bit );
+
+ a8Bit = 0;
+ if( fBackup ) a8Bit |= 0x01;
+ if( fExactCWords ) a8Bit |= 0x02;
+ if( fPagHidden ) a8Bit |= 0x04;
+ if( fPagResults ) a8Bit |= 0x08;
+ if( fLockAtn ) a8Bit |= 0x10;
+ if( fMirrorMargins ) a8Bit |= 0x20;
+ if( fReadOnlyRecommended ) a8Bit |= 0x40;
+ if( fDfltTrueType ) a8Bit |= 0x80;
+ Set_UInt8( pData, a8Bit );
+
+ a8Bit = 0;
+ if( fPagSuppressTopSpacing ) a8Bit |= 0x01;
+ if( fProtEnabled ) a8Bit |= 0x02;
+ if( fDispFormFldSel ) a8Bit |= 0x04;
+ if( fRMView ) a8Bit |= 0x08;
+ if( fRMPrint ) a8Bit |= 0x10;
+ if( fWriteReservation ) a8Bit |= 0x20;
+ if( fLockRev ) a8Bit |= 0x40;
+ if( fEmbedFonts ) a8Bit |= 0x80;
+ Set_UInt8( pData, a8Bit );
+
+
+ a8Bit = 0;
+ if( copts_fNoTabForInd ) a8Bit |= 0x01;
+ if( copts_fNoSpaceRaiseLower ) a8Bit |= 0x02;
+ if( copts_fSupressSpbfAfterPgBrk ) a8Bit |= 0x04;
+ if( copts_fWrapTrailSpaces ) a8Bit |= 0x08;
+ if( copts_fMapPrintTextColor ) a8Bit |= 0x10;
+ if( copts_fNoColumnBalance ) a8Bit |= 0x20;
+ if( copts_fConvMailMergeEsc ) a8Bit |= 0x40;
+ if( copts_fSupressTopSpacing ) a8Bit |= 0x80;
+ Set_UInt8( pData, a8Bit );
+
+ a8Bit = 0;
+ if( copts_fOrigWordTableRules ) a8Bit |= 0x01;
+ if( copts_fTransparentMetafiles ) a8Bit |= 0x02;
+ if( copts_fShowBreaksInFrames ) a8Bit |= 0x04;
+ if( copts_fSwapBordersFacingPgs ) a8Bit |= 0x08;
+ Set_UInt8( pData, a8Bit );
+
+ Set_UInt16( pData, dxaTab );
+ Set_UInt16( pData, wSpare );
+ Set_UInt16( pData, dxaHotZ );
+ Set_UInt16( pData, cConsecHypLim );
+ Set_UInt16( pData, wSpare2 );
+ Set_UInt32( pData, dttmCreated );
+ Set_UInt32( pData, dttmRevised );
+ Set_UInt32( pData, dttmLastPrint );
+ Set_UInt16( pData, nRevision );
+ Set_UInt32( pData, tmEdited );
+ Set_UInt32( pData, cWords );
+ Set_UInt32( pData, cCh );
+ Set_UInt16( pData, cPg );
+ Set_UInt32( pData, cParas );
+
+ a16Bit = 0;
+ a16Bit |= ( 0x0003 & rncEdn );
+ a16Bit |= (~0x0003 & ( nEdn << 2));
+ Set_UInt16( pData, a16Bit );
+
+ a16Bit = 0;
+ a16Bit |= (0x0003 & epc );
+ a16Bit |= (0x003c & (nfcFtnRef << 2));
+ a16Bit |= (0x03c0 & (nfcEdnRef << 6));
+ if( fPrintFormData ) a16Bit |= 0x0400;
+ if( fSaveFormData ) a16Bit |= 0x0800;
+ if( fShadeFormData ) a16Bit |= 0x1000;
+ if( fWCFtnEdn ) a16Bit |= 0x8000;
+ Set_UInt16( pData, a16Bit );
+
+ Set_UInt32( pData, cLines );
+ Set_UInt32( pData, cWordsFtnEnd );
+ Set_UInt32( pData, cChFtnEdn );
+ Set_UInt16( pData, cPgFtnEdn );
+ Set_UInt32( pData, cParasFtnEdn );
+ Set_UInt32( pData, cLinesFtnEdn );
+ Set_UInt32( pData, lKeyProtDoc );
+
+ a16Bit = 0;
+ if( wvkSaved ) a16Bit |= 0x0007;
+ a16Bit |= (0x0ff8 & (wScaleSaved << 3));
+ a16Bit |= (0x3000 & (zkSaved << 12));
+ Set_UInt16( pData, a16Bit );
+
+ if( 8 == rFib.nVersion )
+ {
+ a32Bit = 0;
+ if( fNoTabForInd ) a32Bit |= 0x00000001;
+ if( fNoSpaceRaiseLower ) a32Bit |= 0x00000002;
+ if( fSupressSpbfAfterPageBreak ) a32Bit |= 0x00000004;
+ if( fWrapTrailSpaces ) a32Bit |= 0x00000008;
+ if( fMapPrintTextColor ) a32Bit |= 0x00000010;
+ if( fNoColumnBalance ) a32Bit |= 0x00000020;
+ if( fConvMailMergeEsc ) a32Bit |= 0x00000040;
+ if( fSupressTopSpacing ) a32Bit |= 0x00000080;
+ if( fOrigWordTableRules ) a32Bit |= 0x00000100;
+ if( fTransparentMetafiles ) a32Bit |= 0x00000200;
+ if( fShowBreaksInFrames ) a32Bit |= 0x00000400;
+ if( fSwapBordersFacingPgs ) a32Bit |= 0x00000800;
+ if( fSuppressTopSpacingMac5 ) a32Bit |= 0x00010000;
+ if( fTruncDxaExpand ) a32Bit |= 0x00020000;
+ if( fPrintBodyBeforeHdr ) a32Bit |= 0x00040000;
+ if( fNoLeading ) a32Bit |= 0x00080000;
+ if( fMWSmallCaps ) a32Bit |= 0x00200000;
+ Set_UInt32( pData, a32Bit );
+
+ Set_UInt16( pData, adt );
+
+ memcpy( pData, &doptypography, sizeof( WW8_DOPTYPOGRAPHY ));
+ pData += sizeof( WW8_DOPTYPOGRAPHY );
+
+ memcpy( pData, &dogrid, sizeof( WW8_DOGRID ));
+ pData += sizeof( WW8_DOGRID );
+
+ a16Bit = 0x12; // lvl auf 9 setzen
+ if( fHtmlDoc ) a16Bit |= 0x0200;
+ if( fSnapBorder ) a16Bit |= 0x0800;
+ if( fIncludeHeader ) a16Bit |= 0x1000;
+ if( fIncludeFooter ) a16Bit |= 0x2000;
+ if( fForcePageSizePag ) a16Bit |= 0x4000;
+ if( fMinFontSizePag ) a16Bit |= 0x8000;
+ Set_UInt16( pData, a16Bit );
+
+ a16Bit = 0;
+ if( fHaveVersions ) a16Bit |= 0x0001;
+ if( fAutoVersion ) a16Bit |= 0x0002;
+ Set_UInt16( pData, a16Bit );
+
+ pData += 12;
+
+ Set_UInt32( pData, cChWS );
+ Set_UInt32( pData, cChWSFtnEdn );
+ Set_UInt32( pData, grfDocEvents );
+
+ pData += 4+30+8;
+
+ Set_UInt32( pData, cDBC );
+ Set_UInt32( pData, cDBCFtnEdn );
+
+ pData += 1 * sizeof( long );
+
+ Set_UInt16( pData, nfcFtnRef );
+ Set_UInt16( pData, nfcEdnRef );
+ Set_UInt16( pData, hpsZoonFontPag );
+ Set_UInt16( pData, dywDispPag );
+ }
+ rStrm.Write( aData, nLen );
+ return 0 == rStrm.GetError();
+}
+
+/***************************************************************************
+# Array zum Bestimmen der Laenge der SPRMs
+#**************************************************************************/
+
+
+/*
+ Werte fuer SprmInfo.nVari
+*/
+#define L_FIX 0
+#define L_VAR 1
+#define L_VAR2 2
+
+struct SprmInfo
+{
+ USHORT nId;
+ BYTE nLen : 6;
+ BYTE nVari: 2;
+};
+
+
+/*
+ Zweck: Laenge und Parameter-Offset eines Sprm erfahren
+*/
+static SprmInfo aWwSprmTab[] = {
+ 0, 0, L_FIX, // "Default-sprm", // wird uebersprungen
+ 2, 2, L_FIX, // "sprmPIstd", // pap.istd (style code)
+ 3, 3, L_VAR, // "sprmPIstdPermute", // pap.istd permutation
+ 4, 1, L_FIX, // "sprmPIncLv1", // pap.istddifference
+ 5, 1, L_FIX, // "sprmPJc", // pap.jc (justification)
+ 6, 1, L_FIX, // "sprmPFSideBySide", // pap.fSideBySide
+ 7, 1, L_FIX, // "sprmPFKeep", // pap.fKeep
+ 8, 1, L_FIX, // "sprmPFKeepFollow ", // pap.fKeepFollow
+ 9, 1, L_FIX, // "sprmPPageBreakBefore", // pap.fPageBreakBefore
+
+ 10, 1, L_FIX, // "sprmPBrcl", // pap.brcl
+ 11, 1, L_FIX, // "sprmPBrcp ", // pap.brcp
+ 12, 0, L_VAR, // "sprmPAnld", // pap.anld (ANLD structure)
+ 13, 1, L_FIX, // "sprmPNLvlAnm", // pap.nLvlAnm nn
+ 14, 1, L_FIX, // "sprmPFNoLineNumb", //ap.fNoLnn
+
+
+ // ???
+ 15, 0, L_VAR, // "?sprmPChgTabsPapx", // pap.itbdMac, ...
+
+
+ 16, 2, L_FIX, // "sprmPDxaRight", // pap.dxaRight
+ 17, 2, L_FIX, // "sprmPDxaLeft", // pap.dxaLeft
+ 18, 2, L_FIX, // "sprmPNest", // pap.dxaLeft
+ 19, 2, L_FIX, // "sprmPDxaLeft1", // pap.dxaLeft1
+
+ 20, 4, L_FIX, // "sprmPDyaLine", // pap.lspd an LSPD
+ 21, 2, L_FIX, // "sprmPDyaBefore", // pap.dyaBefore
+ 22, 2, L_FIX, // "sprmPDyaAfter", // pap.dyaAfter
+
+
+ // ???
+ 23, 0, L_VAR, // "?sprmPChgTabs", // pap.itbdMac, pap.rgdxaTab, ...
+
+
+ 24, 1, L_FIX, // "sprmPFInTable", // pap.fInTable
+ 25, 1, L_FIX, // "sprmPTtp", // pap.fTtp
+ 26, 2, L_FIX, // "sprmPDxaAbs", // pap.dxaAbs
+ 27, 2, L_FIX, // "sprmPDyaAbs", // pap.dyaAbs
+ 28, 2, L_FIX, // "sprmPDxaWidth", // pap.dxaWidth
+ 29, 1, L_FIX, // "sprmPPc", // pap.pcHorz, pap.pcVert
+
+ 30, 2, L_FIX, // "sprmPBrcTop10", // pap.brcTop BRC10
+ 31, 2, L_FIX, // "sprmPBrcLeft10", // pap.brcLeft BRC10
+ 32, 2, L_FIX, // "sprmPBrcBottom10", // pap.brcBottom BRC10
+ 33, 2, L_FIX, // "sprmPBrcRight10", // pap.brcRight BRC10
+ 34, 2, L_FIX, // "sprmPBrcBetween10", // pap.brcBetween BRC10
+ 35, 2, L_FIX, // "sprmPBrcBar10", // pap.brcBar BRC10
+ 36, 2, L_FIX, // "sprmPFromText10", // pap.dxaFromText dxa
+ 37, 1, L_FIX, // "sprmPWr", // pap.wr wr
+ 38, 2, L_FIX, // "sprmPBrcTop", // pap.brcTop BRC
+ 39, 2, L_FIX, // "sprmPBrcLeft", // pap.brcLeft BRC
+
+ 40, 2, L_FIX, // "sprmPBrcBottom", // pap.brcBottom BRC
+ 41, 2, L_FIX, // "sprmPBrcRight", // pap.brcRight BRC
+ 42, 2, L_FIX, // "sprmPBrcBetween", // pap.brcBetween BRC
+ 43, 2, L_FIX, // "sprmPBrcBar",//pap.brcBar BRC word
+ 44, 1, L_FIX, // "sprmPFNoAutoHyph",//pap.fNoAutoHyph
+ 45, 2, L_FIX, // "sprmPWHeightAbs",//pap.wHeightAbs w
+ 46, 2, L_FIX, // "sprmPDcs",//pap.dcs DCS
+ 47, 2, L_FIX, // "sprmPShd",//pap.shd SHD
+ 48, 2, L_FIX, // "sprmPDyaFromText",//pap.dyaFromText dya
+ 49, 2, L_FIX, // "sprmPDxaFromText",//pap.dxaFromText dxa
+
+ 50, 1, L_FIX, // "sprmPFLocked", // pap.fLocked 0 or 1 byte
+
+ 51, 1, L_FIX, // "sprmPFWidowControl", // pap.fWidowControl 0 or 1 byte
+
+
+ // ???
+ 52, 0, L_FIX, // "?sprmPRuler 52", //???
+
+
+ 65, 1, L_FIX, // "sprmCFStrikeRM", // chp.fRMarkDel 1 or 0 bit
+ 66, 1, L_FIX, // "sprmCFRMark", // chp.fRMark 1 or 0 bit
+ 67, 1, L_FIX, // "sprmCFFldVanish", // chp.fFldVanish 1 or 0 bit
+ 68, 0, L_VAR, // "sprmCPicLocation", // chp.fcPic and chp.fSpec
+ 69, 2, L_FIX, // "sprmCIbstRMark", // chp.ibstRMark index into sttbRMark
+
+ 70, 4, L_FIX, // "sprmCDttmRMark", // chp.dttm DTTM long
+ 71, 1, L_FIX, // "sprmCFData", // chp.fData 1 or 0 bit
+ 72, 2, L_FIX, // "sprmCRMReason", // chp.idslRMReason an index to a table
+ 73, 3, L_FIX, // "sprmCChse", // chp.fChsDiff and chp.chse see below 3 bytes
+ 74, 0, L_VAR, // "sprmCSymbol", // chp.fSpec, chp.chSym and chp.ftcSym
+ 75, 1, L_FIX, // "sprmCFOle2", // chp.fOle2 1 or 0 bit
+
+ 80, 2, L_FIX, // "sprmCIstd", // chp.istd istd, see stylesheet definition short
+ 81, 0, L_VAR, // "sprmCIstdPermute", // chp.istd permutation vector (see below)
+ 82, 0, L_VAR, // "sprmCDefault", // whole CHP (see below) none variable length
+ 83, 0, L_FIX, // "sprmCPlain", // whole CHP (see below) none 0
+ 85, 1, L_FIX, // "sprmCFBold", // chp.fBold 0,1, 128, or 129 (see below) byte
+ 86, 1, L_FIX, //"sprmCFItalic", // chp.fItalic 0,1, 128, or 129 (see below) byte
+ 87, 1, L_FIX, // "sprmCFStrike", // chp.fStrike 0,1, 128, or 129 (see below) byte
+ 88, 1, L_FIX, // "sprmCFOutline", // chp.fOutline 0,1, 128, or 129 (see below) byte
+ 89, 1, L_FIX, // "sprmCFShadow", // chp.fShadow 0,1, 128, or 129 (see below) byte
+
+ 90, 1, L_FIX, // "sprmCFSmallCaps", // chp.fSmallCaps 0,1, 128, or 129 (see below) byte
+ 91, 1, L_FIX, // "sprmCFCaps", // chp.fCaps 0,1, 128, or 129 (see below) byte
+ 92, 1, L_FIX, // "sprmCFVanish", // chp.fVanish 0,1, 128, or 129 (see below) byte
+ 93, 2, L_FIX, // "sprmCFtc", // chp.ftc ftc word
+ 94, 1, L_FIX, // "sprmCKul", // chp.kul kul byte
+ 95, 3, L_FIX, // "sprmCSizePos", // chp.hps, chp.hpsPos (see below) 3 bytes
+ 96, 2, L_FIX, // "sprmCDxaSpace", // chp.dxaSpace dxa word
+ 97, 2, L_FIX, // "sprmCLid", // chp.lid LID word
+ 98, 1, L_FIX, // "sprmCIco", // chp.ico ico byte
+ 99, 2, L_FIX, // "sprmCHps", // chp.hps hps !word!
+
+
+ 100, 1, L_FIX, // "sprmCHpsInc", // chp.hps (see below) byte
+ 101, 2, L_FIX, // "sprmCHpsPos", // chp.hpsPos hps !word!
+ 102, 1, L_FIX, // "sprmCHpsPosAdj", // chp.hpsPos hps (see below) byte
+
+
+ // ???
+ 103, 0, L_VAR, // "?sprmCMajority", // chp.fBold, chp.fItalic, chp.fSmallCaps, ...
+
+
+ 104, 1, L_FIX, // "sprmCIss", // chp.iss iss byte
+ 105, 0, L_VAR, // "sprmCHpsNew50", // chp.hps hps variable width, length always recorded as 2
+ 106, 0, L_VAR, // "sprmCHpsInc1", // chp.hps complex (see below) variable width, length always recorded as 2
+ 107, 2, L_FIX, // "sprmCHpsKern", // chp.hpsKern hps short
+ 108, 0, L_VAR, // "sprmCMajority50", // chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, ...
+ 109, 2, L_FIX, // "sprmCHpsMul", // chp.hps percentage to grow hps short
+
+ 110, 2, L_FIX, // "sprmCCondHyhen", // chp.ysri ysri short
+ 117, 1, L_FIX, // "sprmCFSpec", // chp.fSpec 1 or 0 bit
+ 118, 1, L_FIX, // "sprmCFObj", // chp.fObj 1 or 0 bit
+ 119, 1, L_FIX, // "sprmPicBrcl", // pic.brcl brcl (see PIC structure definition) byte
+
+ 120,12, L_VAR, // "sprmPicScale", // pic.mx, pic.my, pic.dxaCropleft,
+ 121, 2, L_FIX, // "sprmPicBrcTop", // pic.brcTop BRC word
+ 122, 2, L_FIX, // "sprmPicBrcLeft", // pic.brcLeft BRC word
+ 123, 2, L_FIX, // "sprmPicBrcBottom", // pic.brcBottom BRC word
+ 124, 2, L_FIX, // "sprmPicBrcRight", // pic.brcRight BRC word
+
+ 131, 1, L_FIX, // "sprmSScnsPgn", // sep.cnsPgn cns byte
+ 132, 1, L_FIX, // "sprmSiHeadingPgn", // sep.iHeadingPgn heading number level byte
+ 133, 0, L_VAR, // "sprmSOlstAnm", // sep.olstAnm OLST variable length
+ 136, 3, L_FIX, // "sprmSDxaColWidth", // sep.rgdxaColWidthSpacing complex (see below) 3 bytes
+ 137, 3, L_FIX, // "sprmSDxaColSpacing", // sep.rgdxaColWidthSpacing complex (see below) 3 bytes
+ 138, 1, L_FIX, // "sprmSFEvenlySpaced", // sep.fEvenlySpaced 1 or 0 byte
+ 139, 1, L_FIX, // "sprmSFProtected", // sep.fUnlocked 1 or 0 byte
+
+ 140, 2, L_FIX, // "sprmSDmBinFirst", // sep.dmBinFirst word
+ 141, 2, L_FIX, // "sprmSDmBinOther", // sep.dmBinOther word
+ 142, 1, L_FIX, // "sprmSBkc", // sep.bkc bkc byte
+ 143, 1, L_FIX, // "sprmSFTitlePage", // sep.fTitlePage 0 or 1 byte
+ 144, 2, L_FIX, // "sprmSCcolumns", // sep.ccolM1 # of cols - 1 word
+ 145, 2, L_FIX, // "sprmSDxaColumns", // sep.dxaColumns dxa word
+ 146, 1, L_FIX, // "sprmSFAutoPgn", // sep.fAutoPgn obsolete byte
+ 147, 1, L_FIX, // "sprmSNfcPgn", // sep.nfcPgn nfc byte
+ 148, 2, L_FIX, // "sprmSDyaPgn", // sep.dyaPgn dya short
+ 149, 2, L_FIX, // "sprmSDxaPgn", // sep.dxaPgn dya short
+
+
+ 150, 1, L_FIX, // "sprmSFPgnRestart", // sep.fPgnRestart 0 or 1 byte
+ 151, 1, L_FIX, // "sprmSFEndnote", // sep.fEndnote 0 or 1 byte
+ 152, 1, L_FIX, // "sprmSLnc", // sep.lnc lnc byte
+ 153, 1, L_FIX, // "sprmSGprfIhdt", // sep.grpfIhdt grpfihdt (see Headers and Footers topic) byte
+ 154, 2, L_FIX, // "sprmSNLnnMod", // sep.nLnnMod non-neg int. word
+ 155, 2, L_FIX, // "sprmSDxaLnn", // sep.dxaLnn dxa word
+ 156, 2, L_FIX, // "sprmSDyaHdrTop", // sep.dyaHdrTop dya word
+ 157, 2, L_FIX, // "sprmSDyaHdrBottom", // sep.dyaHdrBottom dya word
+ 158, 1, L_FIX, // "sprmSLBetween", // sep.fLBetween 0 or 1 byte
+ 159, 1, L_FIX, // "sprmSVjc", // sep.vjc vjc byte
+
+ 160, 2, L_FIX, // "sprmSLnnMin", // sep.lnnMin lnn word
+ 161, 2, L_FIX, // "sprmSPgnStart", // sep.pgnStart pgn word
+ 162, 1, L_FIX, // "sprmSBOrientation", // sep.dmOrientPage dm byte
+ 163, 0, L_FIX, // "?SprmSBCustomize 163", //???
+ 164, 2, L_FIX, // "sprmSXaPage", // sep.xaPage xa word
+ 165, 2, L_FIX, // "sprmSYaPage", // sep.yaPage ya word
+ 166, 2, L_FIX, // "sprmSDxaLeft", // sep.dxaLeft dxa word
+ 167, 2, L_FIX, // "sprmSDxaRight", // sep.dxaRight dxa word
+ 168, 2, L_FIX, // "sprmSDyaTop", // sep.dyaTop dya word
+ 169, 2, L_FIX, // "sprmSDyaBottom", // sep.dyaBottom dya word
+
+ 170, 2, L_FIX, // "sprmSDzaGutter", // sep.dzaGutter dza word
+ 171, 2, L_FIX, // "sprmSDMPaperReq", // sep.dmPaperReq dm word
+
+ 182, 2, L_FIX, // "sprmTJc", // tap.jc jc word (low order byte is significant)
+ 183, 2, L_FIX, // "sprmTDxaLeft", // tap.rgdxaCenter (see below) dxa word
+ 184, 2, L_FIX, // "sprmTDxaGapHalf", // tap.dxaGapHalf, tap.rgdxaCenter (see below) dxa word
+ 185, 1, L_FIX, // "sprmTFCantSplit", // tap.fCantSplit 1 or 0 byte
+ 186, 1, L_FIX, // "sprmTTableHeader", // tap.fTableHeader 1 or 0 byte
+ 187,12, L_FIX, // "sprmTTableBorders", // tap.rgbrcTable complex(see below) 12 bytes
+ 188, 0, L_VAR, // "sprmTDefTable10", // tap.rgdxaCenter, tap.rgtc complex (see below) variable length
+ 189, 2, L_FIX, // "sprmTDyaRowHeight", // tap.dyaRowHeight dya word
+
+ 190, 0, L_VAR2, // "sprmTDefTable", // tap.rgtc complex (see below)
+ 191, 1, L_VAR, // "sprmTDefTableShd", // tap.rgshd complex (see below)
+ 192, 4, L_FIX, // "sprmTTlp", // tap.tlp TLP 4 bytes
+ 193, 5, L_FIX, // "sprmTSetBrc", // tap.rgtc[].rgbrc complex (see below) 5 bytes
+ 194, 4, L_FIX, // "sprmTInsert", // tap.rgdxaCenter,tap.rgtc complex (see below) 4 bytes
+ 195, 2, L_FIX, // "sprmTDelete", // tap.rgdxaCenter, tap.rgtc complex (see below) word
+ 196, 4, L_FIX, // "sprmTDxaCol", // tap.rgdxaCenter complex (see below) 4 bytes
+ 197, 2, L_FIX, // "sprmTMerge", // tap.fFirstMerged, tap.fMerged complex (see below) word
+ 198, 2, L_FIX, // "sprmTSplit", // tap.fFirstMerged, tap.fMerged complex (see below) word
+ 199, 5, L_FIX, // "sprmTSetBrc10", // tap.rgtc[].rgbrc complex (see below) 5 bytes
+
+ 200, 4, L_FIX, // "sprmTSetShd", // tap.rgshd complex (see below) 4 bytes
+
+//- neue ab Ver8 ------------------------------------------------------------
+ /*
+ Die neuen Kodes werden einfach hier an die Liste angehaengt.
+ So kann ein und dieselbe Liste fuer Ver6 und Ver8 gemeinsam verwendet werden.
+ MS hat gluecklicherweise darauf geachtet, fuer Ver8 einen anderen Nummernkreis
+ zu nehmen als fuer Ver6-7.
+ */
+ 0x4600, 2, L_FIX, // "sprmPIstd" pap.istd;istd (style code);short;
+ 0xC601, 0, L_VAR, // "sprmPIstdPermute" pap.istd;permutation vector (see below);variable length;
+ 0x2602, 1, L_FIX, // "sprmPIncLvl" pap.istd, pap.lvl;difference between istd of base PAP and istd of PAP to be produced (see below);byte;
+ 0x2403, 1, L_FIX, // "sprmPJc" pap.jc;jc (justification);byte;
+ 0x2404, 1, L_FIX, // "sprmPFSideBySide" pap.fSideBySide;0 or 1;byte;
+ 0x2405, 1, L_FIX, // "sprmPFKeep" pap.fKeep;0 or 1;byte;
+ 0x2406, 1, L_FIX, // "sprmPFKeepFollow" pap.fKeepFollow;0 or 1;byte;
+ 0x2407, 1, L_FIX, // "sprmPFPageBreakBefore" pap.fPageBreakBefore;0 or 1;byte;
+ 0x2408, 1, L_FIX, // "sprmPBrcl" pap.brcl;brcl;byte;
+ 0x2409, 1, L_FIX, // "sprmPBrcp" pap.brcp;brcp;byte;
+ 0x260A, 1, L_FIX, // "sprmPIlvl" pap.ilvl;ilvl;byte;
+ 0x460B, 2, L_FIX, // "sprmPIlfo" pap.ilfo;ilfo (list index) ;short;
+ 0x240C, 1, L_FIX, // "sprmPFNoLineNumb" pap.fNoLnn;0 or 1;byte;
+ 0xC60D, 0, L_VAR, // "sprmPChgTabsPapx" pap.itbdMac, pap.rgdxaTab, pap.rgtbd;complex - see below;variable length
+ 0x840E, 2, L_FIX, // "sprmPDxaRight" pap.dxaRight;dxa;word;
+ 0x840F, 2, L_FIX, // "sprmPDxaLeft" pap.dxaLeft;dxa;word;
+ 0x4610, 2, L_FIX, // "sprmPNest" pap.dxaLeft;dxa-see below;word;
+ 0x8411, 2, L_FIX, // "sprmPDxaLeft1" pap.dxaLeft1;dxa;word;
+ 0x6412, 4, L_FIX, // "sprmPDyaLine" pap.lspd;an LSPD, a long word structure consisting of a short of dyaLine followed by a short of fMultLinespace - see below;long;
+ 0xA413, 2, L_FIX, // "sprmPDyaBefore" pap.dyaBefore;dya;word;
+ 0xA414, 2, L_FIX, // "sprmPDyaAfter" pap.dyaAfter;dya;word;
+ 0xC615, 0, L_VAR, // "sprmPChgTabs" pap.itbdMac, pap.rgdxaTab, pap.rgtbd;complex - see below;variable length;
+ 0x2416, 1, L_FIX, // "sprmPFInTable" pap.fInTable;0 or 1;byte;
+ 0x2417, 1, L_FIX, // "sprmPFTtp" pap.fTtp;0 or 1;byte;
+ 0x8418, 2, L_FIX, // "sprmPDxaAbs" pap.dxaAbs;dxa;word;
+ 0x8419, 2, L_FIX, // "sprmPDyaAbs" pap.dyaAbs;dya;word;
+ 0x841A, 2, L_FIX, // "sprmPDxaWidth" pap.dxaWidth;dxa;word;
+ 0x261B, 1, L_FIX, // "sprmPPc" pap.pcHorz, pap.pcVert;complex - see below;byte;
+ 0x461C, 2, L_FIX, // "sprmPBrcTop10" pap.brcTop;BRC10;word;
+ 0x461D, 2, L_FIX, // "sprmPBrcLeft10" pap.brcLeft;BRC10;word;
+ 0x461E, 2, L_FIX, // "sprmPBrcBottom10" pap.brcBottom;BRC10;word;
+ 0x461F, 2, L_FIX, // "sprmPBrcRight10" pap.brcRight;BRC10;word;
+ 0x4620, 2, L_FIX, // "sprmPBrcBetween10" pap.brcBetween;BRC10;word;
+ 0x4621, 2, L_FIX, // "sprmPBrcBar10" pap.brcBar;BRC10;word;
+ 0x4622, 2, L_FIX, // "sprmPDxaFromText10" pap.dxaFromText;dxa;word;
+ 0x2423, 1, L_FIX, // "sprmPWr" pap.wr;wr (see description of PAP for definition;byte;
+ 0x6424, 4, L_FIX, // "sprmPBrcTop" pap.brcTop;BRC;long;
+ 0x6425, 4, L_FIX, // "sprmPBrcLeft" pap.brcLeft;BRC;long;
+ 0x6426, 4, L_FIX, // "sprmPBrcBottom" pap.brcBottom;BRC;long;
+ 0x6427, 4, L_FIX, // "sprmPBrcRight" pap.brcRight;BRC;long;
+ 0x6428, 4, L_FIX, // "sprmPBrcBetween" pap.brcBetween;BRC;long;
+ 0x6629, 4, L_FIX, // "sprmPBrcBar" pap.brcBar;BRC;long;
+ 0x242A, 1, L_FIX, // "sprmPFNoAutoHyph" pap.fNoAutoHyph;0 or 1;byte;
+ 0x442B, 2, L_FIX, // "sprmPWHeightAbs" pap.wHeightAbs;w;word;
+ 0x442C, 2, L_FIX, // "sprmPDcs" pap.dcs;DCS;short;
+ 0x442D, 2, L_FIX, // "sprmPShd" pap.shd;SHD;word;
+ 0x842E, 2, L_FIX, // "sprmPDyaFromText" pap.dyaFromText;dya;word;
+ 0x842F, 2, L_FIX, // "sprmPDxaFromText" pap.dxaFromText;dxa;word;
+ 0x2430, 1, L_FIX, // "sprmPFLocked" pap.fLocked;0 or 1;byte;
+ 0x2431, 1, L_FIX, // "sprmPFWidowControl" pap.fWidowControl;0 or 1;byte;
+ 0xC632, 0, L_VAR, // "sprmPRuler" ;;variable length;
+ 0x2433, 1, L_FIX, // "sprmPFKinsoku" pap.fKinsoku;0 or 1;byte;
+ 0x2434, 1, L_FIX, // "sprmPFWordWrap" pap.fWordWrap;0 or 1;byte;
+ 0x2435, 1, L_FIX, // "sprmPFOverflowPunct" pap.fOverflowPunct;0 or 1;byte;
+ 0x2436, 1, L_FIX, // "sprmPFTopLinePunct" pap.fTopLinePunct;0 or 1;byte;
+ 0x2437, 1, L_FIX, // "sprmPFAutoSpaceDE" pap.fAutoSpaceDE;0 or 1;byte;
+ 0x2438, 1, L_FIX, // "sprmPFAutoSpaceDN" pap.fAutoSpaceDN;0 or 1;byte;
+ 0x4439, 2, L_FIX, // "sprmPWAlignFont" pap.wAlignFont;iFa (see description of PAP for definition);word;
+ 0x443A, 2, L_FIX, // "sprmPFrameTextFlow" pap.fVertical pap.fBackward pap.fRotateFont;complex (see description of PAP for definition);word;
+ 0x243B, 1, L_FIX, // "sprmPISnapBaseLine" obsolete: not applicable in Word97 and later versions;;byte;
+ 0xC63E, 0, L_VAR, // "sprmPAnld" pap.anld;;variable length;
+ 0xC63F, 0, L_VAR, // "sprmPPropRMark" pap.fPropRMark;complex (see below);variable length;
+ 0x2640, 1, L_FIX, // "sprmPOutLvl" pap.lvl;has no effect if pap.istd is < 1 or is > 9;byte;
+ 0x2441, 1, L_FIX, // "sprmPFBiDi" ;;byte;
+ 0x2443, 1, L_FIX, // "sprmPFNumRMIns" pap.fNumRMIns;1 or 0;bit;
+ 0x2444, 1, L_FIX, // "sprmPCrLf" ;;byte;
+ 0xC645, 0, L_VAR, // "sprmPNumRM" pap.numrm;;variable length;
+ 0x6645, 4, L_FIX, // "sprmPHugePapx" see below;fc in the data stream to locate the huge grpprl (see below);long;
+ 0x6646, 4, L_FIX, // "sprmPHugePapx" see below;fc in the data stream to locate the huge grpprl (see below);long;
+ 0x2447, 1, L_FIX, // "sprmPFUsePgsuSettings" pap.fUsePgsuSettings;1 or 0;byte;
+ 0x2448, 1, L_FIX, // "sprmPFAdjustRight" pap.fAdjustRight;1 or 0;byte;
+ 0x0800, 1, L_FIX, // "sprmCFRMarkDel" chp.fRMarkDel;1 or 0;bit;
+ 0x0801, 1, L_FIX, // "sprmCFRMark" chp.fRMark;1 or 0;bit;
+ 0x0802, 1, L_FIX, // "sprmCFFldVanish" chp.fFldVanish;1 or 0;bit;
+
+// wahrscheinlich falsch:
+//0x6A03, 0, L_VAR, // "sprmCPicLocation" chp.fcPic and chp.fSpec;see below;variable length, length recorded is always 4;
+
+// eher so:
+ 0x6A03, 4, L_FIX, // "sprmCPicLocation" chp.fcPic and chp.fSpec;see below;
+ // variable length,
+ // ????????
+ // length recorded is always 4;
+ // ====== =========
+
+ 0x4804, 2, L_FIX, // "sprmCIbstRMark" chp.ibstRMark;index into sttbRMark;short;
+ 0x6805, 4, L_FIX, // "sprmCDttmRMark" chp.dttmRMark;DTTM;long;
+ 0x0806, 1, L_FIX, // "sprmCFData" chp.fData;1 or 0;bit;
+ 0x4807, 2, L_FIX, // "sprmCIdslRMark" chp.idslRMReason;an index to a table of strings defined in Word 6.0 executables;short;
+ 0xEA08, 1, L_FIX, // "sprmCChs" chp.fChsDiff and chp.chse;see below;3 bytes;
+ 0x6A09, 4, L_FIX, // "sprmCSymbol" chp.fSpec, chp.xchSym and chp.ftcSym;see below;variable length, length recorded is always 4;
+ 0x080A, 1, L_FIX, // "sprmCFOle2" chp.fOle2;1 or 0;bit;
+//0x480B, 0, L_FIX, // "sprmCIdCharType" obsolete: not applicable in Word97 and later versions;;;
+ 0x2A0C, 1, L_FIX, // "sprmCHighlight" chp.fHighlight, chp.icoHighlight;ico (fHighlight is set to 1 iff ico is not 0);byte;
+ 0x680E, 4, L_FIX, // "sprmCObjLocation" chp.fcObj;FC;long;
+//0x2A10, 0, L_FIX, // "sprmCFFtcAsciSymb" ;;;
+ 0x4A30, 2, L_FIX, // "sprmCIstd" chp.istd;istd, see stylesheet definition;short;
+ 0xCA31, 0, L_VAR, // "sprmCIstdPermute" chp.istd;permutation vector (see below);variable length;
+ 0x2A32, 0, L_VAR, // "sprmCDefault" whole CHP (see below);none;variable length;
+ 0x2A33, 0, L_FIX, // "sprmCPlain" whole CHP (see below);none;0;
+//0x2A34, 0, L_FIX, // "sprmCKcd" ;;;
+ 0x0835, 1, L_FIX, // "sprmCFBold" chp.fBold;0,1, 128, or 129 (see below);byte;
+ 0x0836, 1, L_FIX, // "sprmCFItalic" chp.fItalic;0,1, 128, or 129 (see below);byte;
+ 0x0837, 1, L_FIX, // "sprmCFStrike" chp.fStrike;0,1, 128, or 129 (see below);byte;
+ 0x0838, 1, L_FIX, // "sprmCFOutline" chp.fOutline;0,1, 128, or 129 (see below);byte;
+ 0x0839, 1, L_FIX, // "sprmCFShadow" chp.fShadow;0,1, 128, or 129 (see below);byte;
+ 0x083A, 1, L_FIX, // "sprmCFSmallCaps" chp.fSmallCaps;0,1, 128, or 129 (see below);byte;
+ 0x083B, 1, L_FIX, // "sprmCFCaps" chp.fCaps;0,1, 128, or 129 (see below);byte;
+ 0x083C, 1, L_FIX, // "sprmCFVanish" chp.fVanish;0,1, 128, or 129 (see below);byte;
+ 0x4A3D, 2, L_FIX, // "sprmCFtcDefault" ;ftc, only used internally, never stored in file;word;
+ 0x2A3E, 1, L_FIX, // "sprmCKul" chp.kul;kul;byte;
+ 0xEA3F, 3, L_FIX, // "sprmCSizePos" chp.hps, chp.hpsPos;(see below);3 bytes;
+ 0x8840, 2, L_FIX, // "sprmCDxaSpace" chp.dxaSpace;dxa;word;
+ 0x4A41, 2, L_FIX, // "sprmCLid" ;only used internally never stored;word;
+ 0x2A42, 1, L_FIX, // "sprmCIco" chp.ico;ico;byte;
+ 0x4A43, 2, L_FIX, // "sprmCHps" chp.hps;hps;byte; ACHTUNG: ich nehme mal lieber ein: word;
+ 0x2A44, 1, L_FIX, // "sprmCHpsInc" chp.hps;(see below);byte;
+ 0x4845, 1, L_FIX, // "sprmCHpsPos" chp.hpsPos;hps;byte;
+ 0x2A46, 1, L_FIX, // "sprmCHpsPosAdj" chp.hpsPos;hps (see below);byte;
+ 0xCA47, 0, L_VAR, // "sprmCMajority" chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, chp.fStrike, chp.fCaps, chp.rgftc, chp.hps, chp.hpsPos, chp.kul, chp.dxaSpace, chp.ico, chp.rglid;complex (see below);variable length, length byte plus size of following grpprl;
+ 0x2A48, 1, L_FIX, // "sprmCIss" chp.iss;iss;byte;
+ 0xCA49, 0, L_VAR, // "sprmCHpsNew50" chp.hps;hps;variable width, length always recorded as 2;
+ 0xCA4A, 0, L_VAR, // "sprmCHpsInc1" chp.hps;complex (see below);variable width, length always recorded as 2;
+ 0x484B, 2, L_FIX, // "sprmCHpsKern" chp.hpsKern;hps;short;
+ 0xCA4C, 2, L_FIX, // "sprmCMajority50" chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, chp.fStrike, chp.fCaps, chp.ftc, chp.hps, chp.hpsPos, chp.kul, chp.dxaSpace, chp.ico,;complex (see below);variable length;
+ 0x4A4D, 2, L_FIX, // "sprmCHpsMul" chp.hps;percentage to grow hps;short;
+ 0x484E, 2, L_FIX, // "sprmCYsri" chp.ysri;ysri;short;
+ 0x4A4F, 2, L_FIX, // "sprmCRgFtc0" chp.rgftc[0];ftc for ASCII text (see below);short;
+ 0x4A50, 2, L_FIX, // "sprmCRgFtc1" chp.rgftc[1];ftc for Far East text (see below);short;
+ 0x4A51, 2, L_FIX, // "sprmCRgFtc2" chp.rgftc[2];ftc for non-Far East text (see below);short;
+//0x4852, 0, L_FIX, // "sprmCCharScale" ;;;
+ 0x2A53, 1, L_FIX, // "sprmCFDStrike" chp.fDStrike;;byte;
+ 0x0854, 1, L_FIX, // "sprmCFImprint" chp.fImprint;1 or 0;bit;
+ 0x0855, 1, L_FIX, // "sprmCFSpec" chp.fSpec ;1 or 0;bit;
+ 0x0856, 1, L_FIX, // "sprmCFObj" chp.fObj;1 or 0;bit;
+ 0xCA57, 0, L_VAR, // "sprmCPropRMark" chp.fPropRMark, chp.ibstPropRMark, chp.dttmPropRMark;Complex (see below);variable length always recorded as 7 bytes;
+ 0x0858, 1, L_FIX, // "sprmCFEmboss" chp.fEmboss;1 or 0;bit;
+ 0x2859, 1, L_FIX, // "sprmCSfxText" chp.sfxtText;text animation;byte;
+//0x085A, 0, L_FIX, // "sprmCFBiDi" ;;;
+//0x085B, 0, L_FIX, // "sprmCFDiacColor" ;;;
+//0x085C, 0, L_FIX, // "sprmCFBoldBi" ;;;
+//0x085D, 0, L_FIX, // "sprmCFItalicBi" ;;;
+//0x4A5E, 0, L_FIX, // "sprmCFtcBi" ;;;
+//0x485F, 0, L_FIX, // "sprmCLidBi" ;;;
+//0x4A60, 0, L_FIX, // "sprmCIcoBi" ;;;
+//0x4A61, 0, L_FIX, // "sprmCHpsBi" ;;;
+ 0xCA62, 0, L_VAR, // "sprmCDispFldRMark" chp.fDispFldRMark, chp.ibstDispFldRMark, chp.dttmDispFldRMark ;Complex (see below);variable length always recorded as 39 bytes;
+ 0x4863, 2, L_FIX, // "sprmCIbstRMarkDel" chp.ibstRMarkDel;index into sttbRMark;short;
+ 0x6864, 4, L_FIX, // "sprmCDttmRMarkDel" chp.dttmRMarkDel;DTTM;long;
+ 0x6865, 4, L_FIX, // "sprmCBrc" chp.brc;BRC;long;
+ 0x4866, 2, L_FIX, // "sprmCShd" chp.shd;SHD;short;
+ 0x4867, 2, L_FIX, // "sprmCIdslRMarkDel" chp.idslRMReasonDel;an index to a table of strings defined in Word 6.0 executables;short;
+ 0x0868, 1, L_FIX, // "sprmCFUsePgsuSettings" chp.fUsePgsuSettings;1 or 0;bit;
+ 0x486B, 2, L_FIX, // "sprmCCpg" ;;word;
+ 0x486D, 2, L_FIX, // "sprmCRgLid0" chp.rglid[0];LID: for non-Far East text;word;
+ 0x486E, 2, L_FIX, // "sprmCRgLid1" chp.rglid[1];LID: for Far East text;word;
+ 0x286F, 1, L_FIX, // "sprmCIdctHint" chp.idctHint;IDCT: (see below);byte;
+ 0x2E00, 1, L_FIX, // "sprmPicBrcl" pic.brcl;brcl (see PIC structure definition);byte;
+ 0xCE01, 0, L_VAR, // "sprmPicScale" pic.mx, pic.my, pic.dxaCropleft, pic.dyaCropTop pic.dxaCropRight, pic.dyaCropBottom;Complex (see below);length byte plus 12 bytes;
+ 0x6C02, 4, L_FIX, // "sprmPicBrcTop" pic.brcTop;BRC;long;
+ 0x6C03, 4, L_FIX, // "sprmPicBrcLeft" pic.brcLeft;BRC;long;
+ 0x6C04, 4, L_FIX, // "sprmPicBrcBottom" pic.brcBottom;BRC;long;
+ 0x6C05, 4, L_FIX, // "sprmPicBrcRight" pic.brcRight;BRC;long;
+ 0x3000, 1, L_FIX, // "sprmScnsPgn" sep.cnsPgn;cns;byte;
+ 0x3001, 1, L_FIX, // "sprmSiHeadingPgn" sep.iHeadingPgn;heading number level;byte;
+ 0xD202, 0, L_VAR, // "sprmSOlstAnm" sep.olstAnm;OLST;variable length;
+ 0xF203, 3, L_FIX, // "sprmSDxaColWidth" sep.rgdxaColWidthSpacing;complex (see below);3 bytes;
+ 0xF204, 3, L_FIX, // "sprmSDxaColSpacing" sep.rgdxaColWidthSpacing;complex (see below);3 bytes;
+ 0x3005, 1, L_FIX, // "sprmSFEvenlySpaced" sep.fEvenlySpaced;1 or 0;byte;
+ 0x3006, 1, L_FIX, // "sprmSFProtected" sep.fUnlocked;1 or 0;byte;
+ 0x5007, 2, L_FIX, // "sprmSDmBinFirst" sep.dmBinFirst;;word;
+ 0x5008, 2, L_FIX, // "sprmSDmBinOther" sep.dmBinOther;;word;
+ 0x3009, 1, L_FIX, // "sprmSBkc" sep.bkc;bkc;byte;
+ 0x300A, 1, L_FIX, // "sprmSFTitlePage" sep.fTitlePage;0 or 1;byte;
+ 0x500B, 2, L_FIX, // "sprmSCcolumns" sep.ccolM1;# of cols - 1;word;
+ 0x900C, 2, L_FIX, // "sprmSDxaColumns" sep.dxaColumns;dxa;word;
+ 0x300D, 1, L_FIX, // "sprmSFAutoPgn" sep.fAutoPgn;obsolete;byte;
+ 0x300E, 1, L_FIX, // "sprmSNfcPgn" sep.nfcPgn;nfc;byte;
+ 0xB00F, 2, L_FIX, // "sprmSDyaPgn" sep.dyaPgn;dya;short;
+ 0xB010, 2, L_FIX, // "sprmSDxaPgn" sep.dxaPgn;dya;short;
+ 0x3011, 1, L_FIX, // "sprmSFPgnRestart" sep.fPgnRestart;0 or 1;byte;
+ 0x3012, 1, L_FIX, // "sprmSFEndnote" sep.fEndnote;0 or 1;byte;
+ 0x3013, 1, L_FIX, // "sprmSLnc" sep.lnc;lnc;byte;
+ 0x3014, 1, L_FIX, // "sprmSGprfIhdt" sep.grpfIhdt;grpfihdt (see Headers and Footers topic);byte;
+ 0x5015, 2, L_FIX, // "sprmSNLnnMod" sep.nLnnMod;non-neg int.;word;
+ 0x9016, 2, L_FIX, // "sprmSDxaLnn" sep.dxaLnn;dxa;word;
+ 0xB017, 2, L_FIX, // "sprmSDyaHdrTop" sep.dyaHdrTop;dya;word;
+ 0xB018, 2, L_FIX, // "sprmSDyaHdrBottom" sep.dyaHdrBottom;dya;word;
+ 0x3019, 1, L_FIX, // "sprmSLBetween" sep.fLBetween;0 or 1;byte;
+ 0x301A, 1, L_FIX, // "sprmSVjc" sep.vjc;vjc;byte;
+ 0x501B, 2, L_FIX, // "sprmSLnnMin" sep.lnnMin;lnn;word;
+ 0x501C, 2, L_FIX, // "sprmSPgnStart" sep.pgnStart;pgn;word;
+ 0x301D, 1, L_FIX, // "sprmSBOrientation" sep.dmOrientPage;dm;byte;
+//0x301E, 0, L_FIX, // "sprmSBCustomize" ;;;
+
+ 0xB01F, 2, L_FIX, // "sprmSXaPage" sep.xaPage;xa;word;
+ 0xB020, 2, L_FIX, // "sprmSYaPage" sep.yaPage;ya;word;
+ 0xB021, 2, L_FIX, // "sprmSDxaLeft" sep.dxaLeft;dxa;word;
+ 0xB022, 2, L_FIX, // "sprmSDxaRight" sep.dxaRight;dxa;word;
+ 0x9023, 2, L_FIX, // "sprmSDyaTop" sep.dyaTop;dya;word;
+ 0x9024, 2, L_FIX, // "sprmSDyaBottom" sep.dyaBottom;dya;word;
+
+ 0xB025, 2, L_FIX, // "sprmSDzaGutter" sep.dzaGutter;dza;word;
+ 0x5026, 2, L_FIX, // "sprmSDmPaperReq" sep.dmPaperReq;dm;word;
+ 0xD227, 0, L_VAR, // "sprmSPropRMark" sep.fPropRMark, sep.ibstPropRMark, sep.dttmPropRMark ;complex (see below);variable length always recorded as 7 bytes;
+//0x3228, 0, L_FIX, // "sprmSFBiDi" ;;;
+//0x3229, 0, L_FIX, // "sprmSFFacingCol" ;;;
+//0x322A, 0, L_FIX, // "sprmSFRTLGutter" ;;;
+ 0x702B, 4, L_FIX, // "sprmSBrcTop" sep.brcTop;BRC;long;
+ 0x702C, 4, L_FIX, // "sprmSBrcLeft" sep.brcLeft;BRC;long;
+ 0x702D, 4, L_FIX, // "sprmSBrcBottom" sep.brcBottom;BRC;long;
+ 0x702E, 4, L_FIX, // "sprmSBrcRight" sep.brcRight;BRC;long;
+ 0x522F, 2, L_FIX, // "sprmSPgbProp" sep.pgbProp;;word;
+ 0x7030, 4, L_FIX, // "sprmSDxtCharSpace" sep.dxtCharSpace;dxt;long;
+ 0x9031, 2, L_FIX, // "sprmSDyaLinePitch" sep.dyaLinePitch;dya; WRONG:long; RIGHT:short; !!!
+//0x5032, 0, L_FIX, // "sprmSClm" ;;;
+ 0x5033, 2, L_FIX, // "sprmSTextFlow" sep.wTextFlow;complex (see below);short;
+ 0x5400, 2, L_FIX, // "sprmTJc" tap.jc;jc;word (low order byte is significant);
+ 0x9601, 2, L_FIX, // "sprmTDxaLeft" tap.rgdxaCenter (see below);dxa;word;
+ 0x9602, 2, L_FIX, // "sprmTDxaGapHalf" tap.dxaGapHalf, tap.rgdxaCenter (see below);dxa;word;
+ 0x3403, 1, L_FIX, // "sprmTFCantSplit" tap.fCantSplit;1 or 0;byte;
+ 0x3404, 1, L_FIX, // "sprmTTableHeader" tap.fTableHeader;1 or 0;byte;
+ 0xD605, 0, L_VAR, // "sprmTTableBorders" tap.rgbrcTable;complex(see below);24 bytes;
+ 0xD606, 0, L_VAR, // "sprmTDefTable10" tap.rgdxaCenter, tap.rgtc;complex (see below);variable length;
+ 0x9407, 2, L_FIX, // "sprmTDyaRowHeight" tap.dyaRowHeight;dya;word;
+ 0xD608, 0, L_VAR, // "sprmTDefTable" tap.rgtc;complex (see below);;
+ 0xD609, 0, L_VAR, // "sprmTDefTableShd" tap.rgshd;complex (see below);;
+ 0x740A, 2, L_FIX, // "sprmTTlp" tap.tlp;TLP;4 bytes;
+//0x560B, 0, L_FIX, // "sprmTFBiDi" ;;;
+//0x740C, 0, L_FIX, // "sprmTHTMLProps" ;;;
+ 0xD620, 0, L_VAR, // "sprmTSetBrc" tap.rgtc[].rgbrc;complex (see below);5 bytes;
+ 0x7621, 4, L_FIX, // "sprmTInsert" tap.rgdxaCenter, tap.rgtc;complex (see below);4 bytes;
+ 0x5622, 2, L_FIX, // "sprmTDelete" tap.rgdxaCenter, tap.rgtc;complex (see below);word;
+ 0x7623, 2, L_FIX, // "sprmTDxaCol" tap.rgdxaCenter;complex (see below);4 bytes;
+ 0x5624, 0, L_VAR, // "sprmTMerge" tap.fFirstMerged, tap.fMerged;complex (see below);word;
+ 0x5625, 0, L_VAR, // "sprmTSplit" tap.fFirstMerged, tap.fMerged;complex (see below);word;
+ 0xD626, 0, L_VAR, // "sprmTSetBrc10" tap.rgtc[].rgbrc;complex (see below);5 bytes;
+ 0x7627, 0, L_VAR, // "sprmTSetShd" tap.rgshd;complex (see below);4 bytes;
+ 0x7628, 0, L_VAR, // "sprmTSetShdOdd" tap.rgshd;complex (see below);4 bytes;
+ 0x7629, 0, L_VAR, // "sprmTTextFlow" tap.rgtc[].fVerticaltap.rgtc[].fBackwardtap.rgtc[].fRotateFont;0 or 10 or 10 or 1;word;
+//0xD62A, 0, L_FIX, // "sprmTDiagLine" ;;;
+ 0xD62B, 0, L_VAR, // "sprmTVertMerge" tap.rgtc[].vertMerge;complex (see below);variable length always recorded as 2 bytes;
+ 0xD62C, 0, L_VAR, // "sprmTVertAlign" tap.rgtc[].vertAlign;complex (see below);variable length always recorded as 3 byte;
+
+};
+
+
+
+static int
+#if defined( WNT )
+ __cdecl
+#endif
+#if defined( ICC )
+ _Optlink
+#endif
+ CompSprmId( const void *pFirst, const void *pSecond)
+{
+ return( ((SprmInfo*)pFirst )->nId - ((SprmInfo*)pSecond)->nId );
+}
+
+
+SprmInfo& WW8GetSprmInfo( USHORT nId )
+{
+ // ggfs. Tab sortieren
+ static BOOL bInit = FALSE;
+ if( !bInit )
+ {
+ qsort( (void*)aWwSprmTab,
+ sizeof( aWwSprmTab ) / sizeof (aWwSprmTab[ 0 ]),
+ sizeof( aWwSprmTab[ 0 ] ),
+ CompSprmId );
+ bInit = TRUE;
+ }
+ // Sprm heraussuchen
+ void* pFound;
+ SprmInfo aSrch;
+ aSrch.nId = nId;
+ if( 0 == ( pFound = bsearch( (char *) &aSrch,
+ (void*) aWwSprmTab,
+ sizeof( aWwSprmTab ) / sizeof (aWwSprmTab[ 0 ]),
+ sizeof( aWwSprmTab[ 0 ] ),
+ CompSprmId )))
+ {
+ // im Fehlerfall auf Nulltes Element verweisen
+ pFound = (void*)aWwSprmTab;
+ }
+ return *(SprmInfo*) pFound;
+}
+
+
+
+//-----------------------------------------
+// Sprms
+//-----------------------------------------
+
+static short WW8GetSprmSize0( USHORT nId, BYTE* pSprm, BYTE nDelta)
+{
+ SprmInfo& rSprm = WW8GetSprmInfo( nId );
+ short nL = 0; // soviel Bytes sind zu lesen
+
+ //sprmPChgTabs
+ switch( nId )
+ {
+ case 23:
+ case 0xC615:
+ if( SVBT16ToShort( &pSprm[1 + nDelta] ) != 255 )
+ nL = SVBT16ToShort( &pSprm[1 + nDelta] ) + rSprm.nLen - 1;
+ else
+ {
+ BYTE nDel = pSprm[2 + nDelta];
+ BYTE nIns = pSprm[3 + nDelta + 4 * nDel];
+
+ nL = 2 + 4 * nDel + 3 * nIns;
+ }
+ break;
+
+ case 0xd608:
+ nL = SVBT16ToShort( &pSprm[1 + nDelta] );
+ break;
+
+ default:
+ switch ( rSprm.nVari )
+ {
+ case L_FIX: nL = rSprm.nLen; // Excl. Token
+ break;
+ case L_VAR: nL = (short)pSprm[1 + nDelta]// Variable 1-Byte Laenge?
+ + rSprm.nLen; // Excl. Token + Var-Laengenbyte
+ break;
+ // case L_VAR2: nL = ( *(short*)&pSprm[1 + nDelta] ) // Variable 2-Byte Laenge?
+ case L_VAR2: nL = SVBT16ToShort( &pSprm[1 + nDelta] ) // Variable 2-Byte Laenge?
+ + rSprm.nLen - 1; // Excl. Token + Var-Laengenbyte
+ break;
+ }
+ break;
+ }
+ return nL;
+}
+
+
+USHORT WW8CountSprms( BYTE nVersion,
+ BYTE* pSp,
+ long nSprmSiz,
+ const SvUShortsSort* pIgnoreSprms )
+{
+ BYTE nDelta = ( 8 > nVersion ) ? 0 : 1;
+ USHORT nMySprms = 0;
+ for(short i=0; i+1+nDelta < nSprmSiz; )
+ {
+ USHORT nSpId = WW8GetSprmId( nVersion, pSp );
+
+ if( !nSpId )
+ break;
+
+ short nSpLen = WW8GetSprmSizeBrutto( nVersion, pSp, &nSpId );
+ // erhoehe Zeiger, so dass er auf naechsten Sprm zeigt
+ i += nSpLen;
+ pSp += nSpLen;
+
+ if( !pIgnoreSprms || USHRT_MAX == pIgnoreSprms->Seek_Entry( nSpId ) )
+ {
+ ++nMySprms;
+ }
+ }
+ return nMySprms;
+}
+
+BOOL WW8PLCFx_SEPX::CompareSprms( BYTE* pOtherSprms,
+ long nOtherSprmSiz,
+ const SvUShortsSort* pIgnoreSprms ) const
+{
+ BOOL bRes = FALSE;
+ BYTE* pSp = pSprms;
+ short i;
+ BYTE nDelta = ( 8 > GetVersion()) ? 0 : 1;
+
+ if( WW8CountSprms(GetVersion(), pSp, nSprmSiz, pIgnoreSprms)
+ == WW8CountSprms(GetVersion(), pOtherSprms, nOtherSprmSiz, pIgnoreSprms) )
+ {
+ bRes = TRUE;
+ for( i=0; i+1+nDelta < nSprmSiz; )
+ {
+ USHORT nSpId = WW8GetSprmId( GetVersion(), pSp );
+
+ if( !nSpId )
+ break;
+
+ short nSpLen = WW8GetSprmSizeBrutto( GetVersion(), pSp, &nSpId );
+
+ if( !pIgnoreSprms || !pIgnoreSprms->Seek_Entry( nSpId ) )
+ {
+ BYTE* pOtherSp = HasSprm( nSpId, pOtherSprms, nOtherSprmSiz );
+
+ if( ( !pOtherSp )
+ || (0 != memcmp( pSp + 1 + nDelta + WW8SprmDataOfs( nSpId ),
+ pOtherSp,
+ WW8GetSprmSize0( nSpId, pSp, nDelta ) ) ) )
+ {
+ bRes = FALSE;
+ break;
+ }
+ }
+ // erhoehe Zeiger, so dass er auf naechsten Sprm zeigt
+ i += nSpLen;
+ pSp += nSpLen;
+ }
+ }
+ return bRes; // unterschiedliche Sprms ?
+}
+
+
+// ein bzw. zwei Byte am Anfang des Sprm sind die Id
+USHORT WW8GetSprmId( BYTE nVersion, BYTE* pSp, BYTE* pDelta )
+{
+ USHORT nId = 0;
+ if( pSp )
+ {
+ switch( nVersion ) // 6 steht fuer "6 ODER 7", 7 steht fuer "NUR 7"
+ {
+ case 6:
+ case 7: nId = *pSp;
+ if( 0x0100 < nId ) nId = 0;
+ if( pDelta ) *pDelta = 0;
+ break;
+ case 8: nId = SVBT16ToShort( &pSp[ 0 ] );
+ if( 0x0800 > nId )
+ nId = 0;
+ if( pDelta )
+ *pDelta = 1;
+ break;
+ default:ASSERT( nId, "Es wurde vergessen, nVersion zu kodieren!" );
+ }
+ }
+ return nId;
+}
+
+
+// ohne Token und LaengenByte
+short WW8GetSprmSizeNetto( BYTE nVersion, BYTE* pSprm, USHORT* pId )
+{
+ BYTE nDelta = ( 8 > nVersion ) ? 0 : 1;
+ USHORT nId = pId ? *pId : WW8GetSprmId( nVersion, pSprm );
+ return WW8GetSprmSize0( nId, pSprm, nDelta );
+}
+
+
+// mit Token und LaengenByte
+short WW8GetSprmSizeBrutto( BYTE nVersion, BYTE* pSprm, USHORT* pId )
+{
+ BYTE nDelta = ( 8 > nVersion ) ? 0 : 1;
+ USHORT nId = pId ? *pId : WW8GetSprmId( nVersion, pSprm );
+ return WW8GetSprmSize0( nId, pSprm, nDelta )
+ + 1 + nDelta
+ + WW8GetSprmInfo( nId ).nVari;
+}
+
+BYTE WW8SprmDataOfs( USHORT nId )
+{
+ return WW8GetSprmInfo( nId ).nVari;
+}
+
+
+/*************************************************************************
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8scan.cxx,v 1.1.1.1 2000-09-18 17:14:59 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.106 2000/09/18 16:05:02 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.105 2000/08/24 06:42:57 khz
+ #75708# advance StartPos of attributes starting on a Table-Row-End by 1
+
+ Revision 1.104 2000/08/22 12:25:11 khz
+ #77550# prevent invalid SPRMs from setting pMemPos to 0x00000001
+
+ Revision 1.103 2000/08/21 15:03:01 khz
+ #77692# import page orientation
+
+ Revision 1.102 2000/08/18 09:49:57 khz
+ Skip trailing WORD (instead of BYTE) in WW8Read_xstz
+
+ Revision 1.101 2000/07/28 08:01:46 khz
+ #77183# avoid accessing pPcd when there is NO Piece Table
+
+ Revision 1.100 2000/07/19 10:36:50 khz
+ ##76458# wrong parameter calling WW8Read_xstz in WW8ReadSTTBF() ctor fixed
+
+ Revision 1.99 2000/07/12 12:24:27 khz
+ #76503# use WW8PLCFx_Cp_FKP::?etIdx2() to save/restore nIdx of pPcd
+
+ Revision 1.98 2000/06/07 12:43:18 khz
+ Changes for Unicode
+
+ Revision 1.97 2000/05/31 12:23:01 khz
+ Changes for Unicode
+
+ Revision 1.96 2000/05/25 09:55:51 hr
+ workaound for Solaris Workshop compiler, SWAPLONG -> SWAPSHORT
+
+ Revision 1.95 2000/05/25 08:06:31 khz
+ Piece Table optimization, Unicode changes, Bugfixes
+
+ Revision 1.94 2000/05/18 10:58:46 jp
+ Changes for Unicode
+
+ Revision 1.93 2000/05/16 12:13:09 jp
+ ASS_FALSE define removed
+
+ Revision 1.92 2000/05/16 11:07:52 khz
+ Unicode code-conversion
+
+ Revision 1.91 2000/05/04 07:39:27 khz
+ Task #75379# added Save() and Restore() to WW8PLCFx, WW8PLCFx_Cp_FKP, WW8PLCFxDesc (2)
+
+ Revision 1.90 2000/05/04 07:32:46 khz
+ Task #75379# added Save() and Restore() to WW8PLCFx, WW8PLCFx_Cp_FKP, WW8PLCFxDesc
+
+ Revision 1.89 2000/03/06 16:57:48 khz
+ Task #73790# Convert Filenames by methode regarding byte order (2)
+
+ Revision 1.88 2000/03/03 15:54:08 khz
+ Task #73790# Convert Filenames by methode regarding byte order
+
+ Revision 1.87 2000/02/29 13:33:19 cmc
+ #73671# Fix: Error in endnote seperator skip code
+
+ Revision 1.86 2000/02/23 17:42:59 cmc
+ #68832# Consider endnotes for header footer code
+
+ Revision 1.85 2000/02/23 13:33:48 khz
+ Task #70473# changes for unicode
+
+ Revision 1.83 2000/02/22 16:23:19 khz
+ Task #72987# Ignore Sprms covering ONLY a Tab-Row-End Char #7
+
+ Revision 1.82 2000/02/22 10:39:56 cmc
+ #73289# RowEnd Search failing due to lack of atributes of piece
+
+ Revision 1.81 2000/02/18 15:10:27 khz
+ #70473# changes for unicode
+
+ Revision 1.80 2000/02/15 09:12:54 khz
+ Task #71565# workaround because String::ConvertFromWChar cannot convert 0xF0..
+
+ Revision 1.79 2000/02/14 09:11:34 cmc
+ #72579# removed old glossary test code
+
+ Revision 1.77 2000/02/09 11:31:50 khz
+ Task #70473# char_t --> sal_Unicode
+
+ Revision 1.76 2000/02/09 08:57:28 khz
+ Task #72647# Read SPRMs that are stored in piece table grpprls (2)
+
+ Revision 1.75 2000/02/03 10:08:30 cmc
+ #72268# Allow create fib from offset, added data to STTBF
+
+ Revision 1.74 2000/02/02 18:07:47 khz
+ Task #69885# Read SPRMs that are stored in piece table grpprls
+
+ Revision 1.73 1999/12/21 08:02:45 khz
+ Task #68143# nIdx set to Zero caused Hd/Ft to get wrong sprms
+
+ Revision 1.72 1999/12/07 14:29:00 khz
+ Task #69508# import sprmPHugePapx by reading DATA stream
+
+ Revision 1.71 1999/12/07 09:53:04 khz
+ Task #67979# typo-error corrected (was '==' instead of '=')
+
+ Revision 1.70 1999/12/06 19:34:27 khz
+ Task #67979# Absolute Positioned Object must have SPRM 5 or SPRM 29
+
+ Revision 1.69 1999/11/19 15:09:24 khz
+ Task #69910# Use extra PLCF structure for field!
+
+ Revision 1.68 1999/11/03 17:20:04 khz
+ Task #68676# GPF when loading file under Solaris (reading FFN structures)
+
+ Revision 1.67 1999/10/21 15:36:25 khz
+ Import Redlining (4)
+
+ Revision 1.66 1999/10/13 21:06:47 khz
+ Import Redlining (3)
+
+ Revision 1.65 1999/10/08 09:25:29 khz
+ Import Redlining
+
+ Revision 1.64 1999/09/10 15:36:43 khz
+ CharSet matching made by TENCINFO.H::rtl_getTextEncodingFromWindowsCharset()
+
+ Revision 1.63 1999/09/09 18:16:17 khz
+ CharSet matching now done in central methode WW8SCAN.HXX::WW8GetCharSet()
+
+ Revision 1.62 1999/09/08 13:26:13 khz
+ Better performance by reducing use of SWAP..() and SVBT..To..() methods
+
+ Revision 1.61 1999/08/30 19:53:02 JP
+ Bug #68219#: no static members - be reentrant
+
+
+ Rev 1.60 30 Aug 1999 21:53:02 JP
+ Bug #68219#: no static members - be reentrant
+
+ Rev 1.59 09 Aug 1999 18:34:38 KHZ
+ Task #67543# Import of Property Modifier(variant 1) (PRM) in WW8 docs
+
+ Rev 1.58 18 Jun 1999 15:53:56 KHZ
+ Reference field (page, bookmark, footnote) part#1
+
+ Rev 1.57 15 Jun 1999 14:34:56 JP
+ for Export: FIB - read/write SttbListNames
+
+ Rev 1.56 14 Jun 1999 16:00:18 KHZ
+ Task #66411# allow import of document even when SEPX is missing completely
+
+ Rev 1.55 03 Jun 1999 16:58:56 KHZ
+ Task #66418# Nach C'tor WW8Fkp ein ''pSt->Seek( nOldPos );'' ausfuehren!
+
+ Rev 1.54 03 Jun 1999 11:42:46 KHZ
+ Task #66398# Variante 1 fuer PRM ist bei Ver67 Ok.
+
+ Rev 1.53 02 Jun 1999 17:07:46 KHZ
+ Task #66393# in WW8Cp2Fc ist *pIsUnicode bei bVer67 zu initialisieren
+
+ Rev 1.52 02 Jun 1999 09:32:44 KHZ
+ Task #66227# a) kein Unicode bei Ver67 ;-) b) Grafik in grupp. Textbox
+
+ Rev 1.51 28 May 1999 09:59:12 JP
+ Fib-CTOR: wichtige Flags fuer den W97-Export setzen
+
+ Rev 1.50 28 May 1999 09:19:22 KHZ
+ Task #66395# Return-Adresse kein komplexer Ausdruck mehr
+
+ Rev 1.49 26 May 1999 10:58:02 JP
+ Fib: einige Konstanten nachgetragen
+
+ Rev 1.48 21 May 1999 01:58:08 JP
+ Export von WW97 Format: DOP in TableStream
+
+ Rev 1.47 19 May 1999 11:12:54 JP
+ WinWord97-ExportFilter
+
+ Rev 1.46 11 May 1999 17:15:32 KHZ
+ Task #66019# FontFamily: andere Bitreihenfolge auf Solaris beachten
+
+ Rev 1.45 14 Apr 1999 14:20:12 KHZ
+ Task #61268# Solaris-Problem wegen drei vergessenen SVBT16-Umwandlungen
+
+ Rev 1.44 13 Apr 1999 16:02:28 KHZ
+ Task #61268# SVBT16 statt USHORT bei Bookmarks eingesetzt
+
+ Rev 1.43 10 Mar 1999 15:11:12 KHZ
+ Task #62521# Einlesen von Sonderzeichen
+
+ Rev 1.42 08 Mar 1999 11:48:48 KHZ
+ Task #57749# Writer kann jetzt spaltige Bereiche
+
+ Rev 1.41 26 Feb 1999 14:43:38 KHZ
+ Task #59715# Behandlung von Section breaks
+
+ Rev 1.40 25 Jan 1999 10:22:38 KHZ
+ Task #60715# in Textobjekt verankerte Grafik als Grafik importieren
+
+ Rev 1.39 19 Jan 1999 10:47:42 KHZ
+ Task #60878# WW8Cp2Fc setzt *pIsUniCode bei Non-Complex auf FALSE
+
+ Rev 1.38 18 Jan 1999 08:57:08 KHZ
+ Task #60878# WW8Dp2Fc nur dann Assertion, wenn kein pTestFlag
+
+ Rev 1.37 11 Dec 1998 11:12:38 JP
+ Task #59580# Unicode (3) - Bug behoben beim Read_Xstz
+
+ Rev 1.36 10 Dec 1998 21:29:00 JP
+ Bug #59643#: benutzerdefinierte Zeichen von Fuss-/EndNoten verarbeiten
+
+ Rev 1.35 07 Dec 1998 18:17:06 KHZ
+ Task #59580# falsches Feldende: WW8SkipField verglich mit 0x7f statt 0x1f
+
+ Rev 1.34 05 Dec 1998 17:10:26 KHZ
+ Task #59580# Unicode (3)
+
+ Rev 1.33 04 Dec 1998 20:19:50 KHZ
+ Task #58766# Textboxen mit Unicode-Inhalt
+
+ Rev 1.32 03 Dec 1998 19:10:02 KHZ
+ Task #58766# Unicode-Import (2)
+
+ Rev 1.31 03 Dec 1998 10:39:50 JP
+ Task #60063#: Kommentare als PostIts einlesen
+
+ Rev 1.30 02 Dec 1998 16:57:02 JP
+ Task #60063#: Kommentare als PostIts einlesen
+
+ Rev 1.29 30 Nov 1998 17:46:50 JP
+ Task #59822#: OLE-Objecte importieren
+
+ Rev 1.28 30 Nov 1998 17:30:36 KHZ
+ Task #54828# Unicode-Import
+
+ Rev 1.27 03 Nov 1998 18:29:54 KHZ
+ Task #57243# Performance-Gewinn durch Vermeiden ueberfluessiger WW8GetSprmId()
+
+ Rev 1.26 02 Nov 1998 17:58:32 KHZ
+ Task #57017# Textmarken-Namen als UNICODE-Strings
+
+ Rev 1.25 16 Oct 1998 16:12:34 KHZ
+ Task #53520# ueberpruefe Feld DRUCKDATUM in DocInfo anhand von WW-internem Feld
+
+ Rev 1.24 22 Sep 1998 19:37:42 KHZ
+ Bug #57018# Fontnamen wurden unrichtig importiert
+
+ Rev 1.23 22 Sep 1998 17:40:24 KHZ
+ Bug #56310# Kopf-/Fusszeilen in Unicode-Dokumenten jetzt korrekt
+
+ Rev 1.22 03 Sep 1998 22:15:40 KHZ
+ Task #55189# Textboxen
+
+ Rev 1.21 27 Aug 1998 10:12:28 KHZ
+ Task #55189# Escher-Import fuer Draw, Calc und Writer
+
+ Rev 1.20 11 Aug 1998 12:26:16 KHZ
+ Task #52607# Optimierung in AdjustEnds(), GetNewSprms(), GetNoNewSprms()
+
+ Rev 1.19 30 Jul 1998 14:47:24 JP
+ Bug #54385#: wchar_t ist unter UNX ein long und kein UINT16
+
+ Rev 1.18 30 Jul 1998 00:02:54 KHZ
+ Task #53614# Grafiken, die NICHT ueber dem Text liegen (MSDFF-Quick-Hack)
+
+ Rev 1.17 29 Jul 1998 16:53:18 KHZ
+ Task #52607# Fehler in FKP (Teil 2)
+
+ Rev 1.16 29 Jul 1998 13:56:10 KHZ
+ Task #52607# Fehler in FKP
+
+ Rev 1.15 28 Jul 1998 22:27:28 KHZ
+ Task #52607# nummerierte Listen (Teil 3)
+
+ Rev 1.14 28 Jul 1998 11:05:46 KHZ
+ Task #52607# nummerierte Listen (Teil 1)
+
+ Rev 1.13 22 Jul 1998 15:32:56 KHZ
+ Task #52607#
+
+ Rev 1.12 21 Jul 1998 14:52:28 KHZ
+ Task #52607# (WW 97 Import)
+
+ Rev 1.11 21 Jul 1998 12:32:52 KHZ
+ als MSDrawingObject eingebettete Grafik (Teil 1)
+
+ Rev 1.10 16 Jul 1998 21:50:14 KHZ
+ Task #52607# Compilererror wg. (rLen *= 2) -= 2
+
+ Rev 1.9 15 Jul 1998 15:47:18 KHZ
+ Task #52607# Felder
+
+ Rev 1.8 14 Jul 1998 16:34:18 KHZ
+ Task #52607# Absatz- und Zeichen-Styles
+
+ Rev 1.7 13 Jul 1998 15:29:46 KHZ
+ Task #52607# Seitenvorlage fuer 1st Page, embed. Grafik (NICHT UEBER Text)
+
+ Rev 1.6 30 Jun 1998 21:33:20 KHZ
+ Header/Footer/Footnotes weitgehend ok
+
+ Rev 1.5 26 Jun 1998 20:50:22 KHZ
+ Absatz-Attribute jetzt weitestgehend ok
+
+ Rev 1.4 23 Jun 1998 20:49:26 KHZ
+ verarbeitet jetzt auch mehrere FKPs
+
+ Rev 1.3 23 Jun 1998 11:24:28 KHZ
+ Zwischenstand: die meisten Zeichenattribute Ok!
+
+ Rev 1.2 18 Jun 1998 09:47:12 KHZ
+ Zwischenstand fur 396c
+
+ Rev 1.1 16 Jun 1998 18:35:30 KHZ
+ DaSi-Stand
+
+ Rev 1.0 16 Jun 1998 10:57:24 KHZ
+ Initial revision.
+
+ Rev 1.1 10 Jun 1998 17:22:32 KHZ
+ Zwischenstand-Sicherung Dumper
+
+ Rev 1.0 27 May 1998 15:29:02 KHZ
+ Initial revision.
+
+
+*************************************************************************/
diff --git a/sw/source/filter/ww8/ww8scan.hxx b/sw/source/filter/ww8/ww8scan.hxx
new file mode 100644
index 000000000000..04c00a108b45
--- /dev/null
+++ b/sw/source/filter/ww8/ww8scan.hxx
@@ -0,0 +1,1729 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8scan.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WW8SCAN_HXX
+#define _WW8SCAN_HXX
+
+
+#ifndef LONG_MAX
+#include <limits.h>
+#endif
+#ifndef _SAL_TYPES_H
+#include <sal/types.h>
+#endif
+#ifndef _SOLAR_H
+#include <tools/solar.h> // UINTXX
+#endif
+#ifndef _TABLE_HXX //autogen
+#include <tools/table.hxx>
+#endif
+#ifndef _DATETIME_HXX //autogen
+#include <tools/datetime.hxx>
+#endif
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+
+#define _SVSTDARR_STRINGS
+#include <svtools/svstdarr.hxx>
+
+#ifndef WW8STRUC_HXX
+#include <ww8struc.hxx> // FIB, STSHI, STD
+#endif
+
+#ifndef DELETEZ
+#define DELETEZ( p ) ( delete( p ), p = 0 )
+#endif
+
+
+//class SvStream;
+class UShortStk;
+class WW8Fib;
+class WW8ScannerBase;
+class WW8PLCFspecial;
+struct WW8PLCFxDesc;
+class WW8PLCFx_PCD;
+class SvUShortsSort;
+
+
+String WW8ReadPString( SvStream& rStrm, rtl_TextEncoding eEnc,
+ BOOL bAtEndSeekRel1 = TRUE );
+
+// Folgende Methode liest einen 2-byter-UNICODE-String ein:
+// - falls bAtEndSeekRel1 gesetzt ist, wird am Ende genau EIN Byte uebersprungen,
+// - falls nChars (die Zeichen-Anzahl, NICHT die Byte-Anzahl) nicht gesetzt ist,
+// wird das erste USHORT als Lannengenangabe interpretiert,
+// ansonsten als erstes String-Zeichen genommen.
+String WW8Read_xstz(SvStream& rStrm,
+ USHORT nChars,
+ BOOL bAtEndSeekRel1);
+
+
+// read array of strings (see MS documentation: STring TaBle stored in File)
+// returns NOT the original pascal strings but an array of converted char*
+//
+// attention: the *extra data* of each string are SKIPPED and ignored
+
+/* to be optimized like this: */
+void WW8ReadSTTBF( BOOL bVer8, SvStream& rStrm,
+ UINT32 nStart, INT32 nLen, USHORT nSkip,
+ rtl_TextEncoding eCS,
+ SvStrings &rArray, SvStrings* pExtraArray = 0 );
+
+
+
+USHORT WW8GetSprmId( BYTE nVersion, BYTE* pSp, BYTE* pDelta = 0 );
+short WW8GetSprmSizeNetto( BYTE nVersion, BYTE* pSprm, USHORT* pId );
+short WW8GetSprmSizeBrutto( BYTE nVersion, BYTE* pSprm, USHORT* pId );
+BYTE WW8SprmDataOfs( USHORT nId );
+
+struct WW8FieldDesc
+{
+ long nLen; // Gesamtlaenge ( zum Text ueberlesen )
+ WW8_CP nSCode; // Anfang Befehlscode
+ long nLCode; // Laenge
+ WW8_CP nSRes; // Anfang Ergebnis
+ long nLRes; // Laenge ( == 0, falls kein Ergebnis )
+ USHORT nId; // WW-Id fuer Felder
+ BYTE nOpt; // WW-Flags ( z.B.: vom User geaendert )
+ BOOL bCodeNest:1; // Befehl rekursiv verwendet
+ BOOL bResNest:1; // Befehl in Resultat eingefuegt
+};
+
+BOOL WW8GetFieldPara( BYTE nVersion, WW8PLCFspecial& rPLCF, WW8FieldDesc& rF );
+
+
+struct WW8PLCFxSave1
+{
+ ULONG nPLCFxPos;
+ ULONG nPLCFxPos2; // fuer PLCF_Cp_Fkp: PieceIter-Pos
+ long nPLCFxMemOfs;
+ WW8_CP nAttrStart;
+ WW8_CP nAttrEnd;
+ BOOL bLineEnd;
+};
+
+
+/*
+ u.a. fuer Felder, also genausoviele Attr wie Positionen,
+ falls Ctor-Param bNoEnd = false
+*/
+class WW8PLCFspecial // Iterator fuer PLCFs
+{
+ INT32* pPLCF_PosArray; // Pointer auf Pos-Array und auf ganze Struktur
+ BYTE* pPLCF_Contents; // Pointer auf Inhalts-Array-Teil des Pos-Array
+ long nIMax; // Anzahl der Elemente
+ long nIdx; // Merker, wo wir gerade sind
+ long nStru;
+
+public:
+ WW8PLCFspecial( SvStream* pSt, long nFilePos, long nPLCF,
+ long nStruct, long nStartPos = -1, BOOL bNoEnd = FALSE );
+ ~WW8PLCFspecial(){ delete( pPLCF_PosArray ); pPLCF_PosArray = 0; }
+ ULONG GetIdx() const { return (ULONG)nIdx; }
+ void SetIdx( ULONG nI ) { nIdx = (long)nI; } // geht ueber Nummer
+ long GetIMax(){ return nIMax; }
+ BOOL SeekPos( long nPos ); // geht ueber FC- bzw. CP-Wert
+ // bzw. naechste groesseren Wert
+ BOOL SeekPosExact( long nPos );
+ long Where() { return ( nIdx >= nIMax ) ? LONG_MAX : pPLCF_PosArray[nIdx]; }
+ BOOL Get( long& rStart, void*& rpValue );
+ BOOL GetData( long nIdx, long& rPos, void*& rpValue );
+
+ const void* GetData( long nIdx ) const {
+ return ( nIdx >= nIMax ) ? 0 : (const void*)&pPLCF_Contents[nIdx * nStru]; }
+ long GetPos( long nIdx ){
+ return ( nIdx >= nIMax ) ? LONG_MAX : pPLCF_PosArray[nIdx]; }
+
+ WW8PLCFspecial& operator ++( int ) { nIdx++; return *this; }
+ WW8PLCFspecial& operator --( int ) { nIdx--; return *this; }
+};
+
+
+
+
+/*
+ simple Iterator for SPRMs
+*/
+class WW8SprmIter
+{
+ // these members will be updated
+ BYTE* pSprms; // remaining part of the SPRMs ( == start of akt. SPRM)
+ BYTE* pAktParams; // start of akt. SPRM's parameters
+ USHORT nAktId;
+ short nAktSizeBrutto;
+
+ // these members will *not* be updated by UpdateMyMembers()
+ BYTE nVersion;
+ BYTE nDelta;
+ short nRemLen; // length of remaining SPRMs (including akt. SPRM)
+
+ void UpdateMyMembers();
+public:
+ WW8SprmIter( BYTE* pSprms_, short nLen_, BYTE nVersion_ );
+ void SetSprms( BYTE* pSprms_, short nLen_ );
+ BYTE* operator ++( int );
+ BYTE* GetSprms() const { return ( pSprms && (0 < nRemLen) )
+ ? pSprms
+ : 0; }
+ BYTE* GetAktParams() const { return pAktParams; }
+ USHORT GetAktId() const { return nAktId; }
+};
+
+
+
+/*
+ u.a. fuer FKPs auf normale Attr., also ein Attr weniger als Positionen
+*/
+class WW8PLCF // Iterator fuer PLCFs
+{
+ INT32* pPLCF_PosArray; // Pointer auf Pos-Array und auf ganze Struktur
+ BYTE* pPLCF_Contents; // Pointer auf Inhalts-Array-Teil des Pos-Array
+ long nIMax; // Anzahl der Elemente
+ long nIdx;
+ long nStru;
+
+ void ReadPLCF( SvStream* pSt, long nFilePos, long nPLCF );
+
+ /*
+ Falls im Dok ein PLC fehlt und die FKPs solo dastehen,
+ machen wir uns hiermit einen PLC:
+ */
+ void GeneratePLCF( SvStream* pSt, long nPN, long ncpN );
+
+public:
+ WW8PLCF( SvStream* pSt, long nFilePos, long nPLCF,
+ long nStruct, long nStartPos = -1 );
+
+ /*
+ folgender Ctor generiert ggfs. einen PLC aus nPN und ncpN
+ */
+ WW8PLCF( SvStream* pSt, long nFilePos, long nPLCF,
+ long nStruct, long nStartPos, long nPN, long ncpN );
+
+ ~WW8PLCF(){ delete( pPLCF_PosArray ); pPLCF_PosArray = 0; }
+ ULONG GetIdx() const { return (ULONG)nIdx; }
+ void SetIdx( ULONG nI ) { nIdx = (long)nI; }
+ long GetIMax(){ return nIMax; }
+ BOOL SeekPos( long nPos );
+ long Where();
+ BOOL Get( long& rStart, long& rEnd, void*& rpValue );
+ WW8PLCF& operator ++( int ) { if( nIdx < nIMax ) nIdx++; return *this; }
+
+ const void* GetData( long nIdx ) const {
+ return ( nIdx >= nIMax ) ? 0 : (const void*)&pPLCF_Contents[nIdx * nStru]; }
+};
+
+
+DECLARE_TABLE( WW8Pcd_FC_sortArr, INT32 )
+
+
+/*
+ fuer Piece Table (bei Schnellspeicherung)
+*/
+class WW8PLCFpcd
+{
+friend class WW8PLCFpcd_Iter;
+ WW8Pcd_FC_sortArr aFC_sort; // sorted PCD entries by FC
+ INT32* pPLCF_PosArray; // Pointer auf Pos-Array und auf ganze Struktur
+ BYTE* pPLCF_Contents; // Pointer auf Inhalts-Array-Teil des Pos-Array
+ long nIMax;
+ long nStru;
+
+public:
+ WW8PLCFpcd( SvStream* pSt, long nFilePos, long nPLCF, long nStruct );
+ ~WW8PLCFpcd(){ delete( pPLCF_PosArray ); }
+ ULONG FindIdx( WW8_FC nFC ) const;
+};
+
+/*
+ mehrere WW8PLCFpcd_Iter koennen auf die gleiche WW8PLCFpcd zeigen !!!
+*/
+class WW8PLCFpcd_Iter
+{
+ WW8PLCFpcd& rPLCF;
+ long nIdx;
+
+public:
+ WW8PLCFpcd_Iter( WW8PLCFpcd& rPLCFpcd, long nStartPos = -1 );
+// ~WW8PLCFpcd_Iter() {}
+ ULONG GetIdx() const { return (ULONG)nIdx; }
+ void SetIdx( ULONG nI ) { nIdx = (long)nI; }
+ long GetIMax(){ return rPLCF.nIMax; }
+ BOOL SeekPos( long nPos );
+// BOOL SeekMaxMainFC( WW8Fib& rWwF, long& rMaxPosData );
+ long Where();
+ BOOL Get( long& rStart, long& rEnd, void*& rpValue );
+ ULONG FindIdx( WW8_FC nFC ) const { return rPLCF.FindIdx( nFC ); }
+ WW8PLCFpcd_Iter& operator ++( int ) { if( nIdx < rPLCF.nIMax ) nIdx++; return *this; }
+};
+
+// PLCF-Typ:
+enum ePLCFT{ CHP=0, PAP, SEP, /*HED, FNR, ENR,*/ PLCF_END };
+
+/*
+ pure virtual:
+*/
+class WW8PLCFx // virtueller Iterator fuer Piece Table Exceptions
+{
+ BYTE nVersion; // Versionsnummer des FIB
+ BOOL bIsSprm; // PLCF von Sprms oder von anderem ( Footnote, ... )
+
+public:
+ WW8PLCFx( BYTE nFibVersion, BOOL bSprm )
+ { bIsSprm = bSprm; nVersion = nFibVersion; }
+
+// virtual ~WW8PLCFx() {}
+ BOOL IsSprm() { return bIsSprm; }
+ virtual ULONG GetIdx() const = 0;
+ virtual void SetIdx( ULONG nIdx ) = 0;
+ virtual ULONG GetIdx2() const;
+ virtual void SetIdx2( ULONG nIdx );
+ virtual BOOL SeekPos( WW8_CP nCpPos ) = 0;
+ virtual long Where() = 0;
+// virtual BYTE* GetSprms( long& rStart, long& rEnd, long& rLen );
+ virtual void GetSprms( WW8PLCFxDesc* p );
+ virtual long GetNoSprms( long& rStart, long&, long& rLen );
+ virtual WW8PLCFx& operator ++( int ) = 0;
+ virtual USHORT GetIstd() const { return 0xffff; }
+ virtual void Save( WW8PLCFxSave1& rSave ) const;
+ virtual void Restore( const WW8PLCFxSave1& rSave );
+ BYTE GetVersion() const { return nVersion; }
+};
+
+enum eCutT { CUT_NONE = 0, CUT_START, CUT_END, CUT_BOTH };
+
+class WW8PLCFx_PCDAttrs : public WW8PLCFx
+{
+ WW8PLCFpcd_Iter* pPcdI;
+ WW8PLCFx_PCD* pPcd;
+ BYTE** pGrpprls; // Attribute an Piece-Table
+ SVBT32 aShortSprm; // mini storage: can contain ONE sprm with
+ // 1 byte param
+ UINT16 nGrpprls; // Attribut Anzahl davon
+
+public:
+ WW8PLCFx_PCDAttrs( BYTE nVersion, WW8PLCFx_PCD* pPLCFx_PCD, WW8ScannerBase* pBase );
+ virtual ~WW8PLCFx_PCDAttrs();
+ virtual ULONG GetIdx() const;
+ virtual void SetIdx( ULONG nI );
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual long Where();
+ virtual void GetSprms( WW8PLCFxDesc* p );
+ virtual WW8PLCFx& operator ++( int );
+
+ WW8PLCFpcd_Iter* GetIter() const { return pPcdI; }
+};
+
+class WW8PLCFx_PCD : public WW8PLCFx // Iterator fuer Piece Table
+{
+ WW8PLCFpcd_Iter* pPcdI;
+ BOOL bVer67;
+
+public:
+ WW8PLCFx_PCD( BYTE nVersion, WW8PLCFpcd* pPLCFpcd, WW8_CP nStartCp, BOOL bVer67P );
+ virtual ~WW8PLCFx_PCD();
+ virtual ULONG GetIMax() const;
+ virtual ULONG GetIdx() const;
+ virtual void SetIdx( ULONG nI );
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual long Where();
+// virtual void GetSprms( WW8PLCFxDesc* p );
+ virtual long GetNoSprms( long& rStart, long&, long& rLen );
+ virtual WW8PLCFx& operator ++( int );
+ WW8_CP AktPieceStartFc2Cp( WW8_FC nStartPos );
+ WW8_FC AktPieceStartCp2Fc( WW8_CP nCp );
+ eCutT AktPieceFc2Cp( long& rStartPos, long& rEndPos );
+ WW8PLCFpcd_Iter* GetPLCFIter() { return pPcdI; }
+
+ static INT32 TransformPieceAddress(long nfc, BOOL& bIsUnicodeAddress)
+ {
+ bIsUnicodeAddress = 0 == (0x40000000 & nfc);
+ return bIsUnicodeAddress
+ ? nfc
+ : (nfc & 0x3fffFFFF) / 2;
+ }
+ BOOL IsVersion67() const { return bVer67; }
+};
+
+
+class WW8PLCFx_Fc_FKP : public WW8PLCFx // Iterator fuer Piece Table Exceptions of Fkps
+ // arbeitet nur auf FCs, nicht auf CPs !
+ // ( Low-Level )
+{
+
+
+ class WW8Fkp // Iterator fuer Formatted Disk Page
+ {
+ struct WW8Grpprl
+ {
+ BYTE* pData;
+ USHORT nLen;
+ USHORT nIStd; // nur bei Fkp.Papx gueltig (aktuelle Style-Nr)
+ BOOL bMustDelete;
+ };
+
+ WW8Grpprl* pGrpprl; // Pointer of Meta Array (pointing
+
+ BYTE* pFkp; // gesamter Fkp
+
+ long nItemSize; // entweder 1 Byte oder ein komplettes BX
+ long nFilePos; // Offset in Stream where last read of 52 bytes took place
+ short nIdx; // Pos-Merker
+ ePLCFT ePLCF;
+ BYTE nIMax; // Anzahl der Eintraege
+ BYTE nVersion;
+
+ public:
+ WW8Fkp( BYTE nFibVer, SvStream* pFKPStrm, SvStream* pDataStrm,
+ long _nFilePos, long nItemSiz,
+ ePLCFT ePl, WW8_FC nStartFc = -1 );
+ ~WW8Fkp();
+ long GetFilePos() const { return nFilePos; }
+ ULONG GetIdx() const { return (ULONG)nIdx; }
+ void SetIdx( ULONG nI );
+ BOOL SeekPos( long nPos );
+ WW8_FC Where() { return ( nIdx<nIMax)
+ ? ((WW8_FC*)pFkp)[nIdx]
+ : LONG_MAX; }
+ WW8Fkp& operator ++( int ) { if( nIdx < nIMax ) nIdx++;
+ return *this; }
+ BYTE* Get( WW8_FC& rStart, WW8_FC& rEnd, short& rLen );
+ USHORT GetIstd() const { return pGrpprl[ nIdx ].nIStd; }
+
+ /*
+ liefert einen echten Pointer auf das Sprm vom Typ nId,
+ falls ein solches im Fkp drin ist.
+ */
+ BYTE* GetLenAndIStdAndSprms(short& rLen);
+
+ /*
+ ruft GetLenAndIStdAndSprms() auf...
+ */
+ BYTE* HasSprm( USHORT nId );
+
+ ULONG GetParaHeight() const; // fuer Header/Footer bei Papx-Fkps
+
+ BYTE GetVersion() const { return nVersion; }
+ };
+
+
+ WW8PLCFx_PCDAttrs* pPCDAttrs;
+ SvStream* pFKPStrm; // Input-File
+ SvStream* pDataStrm; // Input-File
+ WW8PLCF* pPLCF;
+ WW8Fkp* pFkp;
+ WW8_FC nStartFc;
+
+ BOOL NewFkp();
+
+protected:
+ ePLCFT ePLCF;
+
+public:
+ WW8PLCFx_Fc_FKP( SvStream* pSt, SvStream* pTblSt, SvStream* pDataSt,
+ WW8Fib& rFib, ePLCFT ePl, WW8_FC nStartFcL,
+ WW8PLCFx_PCDAttrs* pPLCFx_PCD );
+ virtual ~WW8PLCFx_Fc_FKP();
+ virtual ULONG GetIdx() const;
+ virtual void SetIdx( ULONG nIdx );
+ virtual BOOL SeekPos( WW8_FC nFcPos );
+ virtual WW8_FC Where();
+ BYTE* GetSprms( WW8_FC& rStart, WW8_FC& rEnd, long& rLen );
+ virtual WW8PLCFx& operator ++( int );
+ virtual USHORT GetIstd() const;
+ void GetPCDSprms( WW8PLCFxDesc& rDesc );
+ BYTE* HasSprm( USHORT nId );
+ ULONG GetParaHeight() const;
+ BOOL HasFkp() { return (0 != pFkp); }
+};
+
+// Iterator fuer Piece Table Exceptions of Fkps arbeitet auf CPs (High-Level)
+class WW8PLCFx_Cp_FKP : public WW8PLCFx_Fc_FKP
+{
+ const WW8ScannerBase& rSBase;
+ WW8PLCFx_PCD* pPcd;
+ WW8_CP nAttrStart, nAttrEnd;
+ BOOL bLineEnd : 1;
+ BOOL bComplex : 1;
+
+ void SearchParaEnd( long nOldEndCp );
+
+public:
+ WW8PLCFx_Cp_FKP( SvStream* pSt, SvStream* pTblSt, SvStream* pDataSt, const WW8ScannerBase&
+ rBase, ePLCFT ePl );
+ virtual ~WW8PLCFx_Cp_FKP();
+ void ResetAttrStartEnd();
+ ULONG GetPCDIMax() const;
+ ULONG GetPCDIdx() const;
+ void SetPCDIdx( ULONG nIdx );
+ virtual ULONG GetIdx2() const;
+ virtual void SetIdx2( ULONG nIdx );
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual WW8_CP Where();
+ virtual void GetSprms( WW8PLCFxDesc* p );
+ virtual WW8PLCFx& operator ++( int );
+ virtual void Save( WW8PLCFxSave1& rSave ) const;
+ virtual void Restore( const WW8PLCFxSave1& rSave );
+};
+
+
+
+class WW8PLCFx_SEPX : public WW8PLCFx // Iterator fuer Piece Table Exceptions of Sepx
+{
+ SvStream* pStrm;
+ WW8PLCF* pPLCF;
+ BYTE* pSprms;
+ USHORT nArrMax;
+ UINT16 nSprmSiz;
+
+public:
+ WW8PLCFx_SEPX( SvStream* pSt, SvStream* pTblxySt, WW8Fib& rFib, WW8_CP nStartCp );
+ virtual ~WW8PLCFx_SEPX();
+ virtual ULONG GetIdx() const;
+ virtual void SetIdx( ULONG nIdx );
+ long GetIMax() const { return ( pPLCF ) ? pPLCF->GetIMax() : 0; }
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual long Where();
+ virtual void GetSprms( WW8PLCFxDesc* p );
+ virtual WW8PLCFx& operator ++( int );
+ BYTE* HasSprm( USHORT nId ) const;
+ BYTE* HasSprm( USHORT nId, BYTE n2nd ) const;
+ BYTE* HasSprm( USHORT nId, BYTE* pOtherSprms, long nOtherSprmSiz ) const;
+ BOOL Find4Sprms(USHORT nId1, USHORT nId2, USHORT nId3, USHORT nId4,
+ BYTE*& p1, BYTE*& p2, BYTE*& p3, BYTE*& p4 ) const;
+ BOOL CompareSprms( BYTE* pOtherSprms,
+ long nOtherSprmSiz,
+ const SvUShortsSort* pIgnoreSprms = 0 ) const;
+};
+
+// Iterator fuer Fuss-/Endnoten und Anmerkungen
+class WW8PLCFx_SubDoc : public WW8PLCFx
+{
+ WW8PLCF* pRef;
+ WW8PLCF* pTxt;
+
+public:
+ WW8PLCFx_SubDoc( SvStream* pSt, BYTE nVersion, WW8_CP nStartCp,
+ long nFcRef, long nLenRef,
+ long nFcTxt, long nLenTxt, long nStruc = 0 );
+ virtual ~WW8PLCFx_SubDoc();
+ virtual ULONG GetIdx() const;
+ virtual void SetIdx( ULONG nIdx );
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual long Where();
+
+ // liefert Reference Descriptoren
+ const void* GetData( long nIdx = -1 ) const
+ {
+ return pRef ? pRef->GetData( -1L == nIdx ? pRef->GetIdx()
+ : nIdx ) : 0;
+ }
+
+ /*
+ liefert Angabe, wo Kopf und Fusszeilen-Text zu finden ist
+ */
+ BOOL Get( long& rStart, void*& rpValue );
+ virtual long GetNoSprms( long& rStart, long&, long& rLen );
+ virtual WW8PLCFx& operator ++( int );
+ long Count() { return ( pRef ) ? pRef->GetIMax() : 0; }
+};
+
+class WW8PLCFx_FLD : public WW8PLCFx // Iterator fuer Fuss- und Endnoten
+{
+ WW8PLCFspecial* pPLCF;
+ WW8Fib& rFib;
+
+public:
+ WW8PLCFx_FLD( SvStream* pSt, WW8Fib& rMyFib, short nType, WW8_CP nStartCp );
+ virtual ~WW8PLCFx_FLD();
+ virtual ULONG GetIdx() const;
+ virtual void SetIdx( ULONG nIdx );
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual long Where();
+ virtual long GetNoSprms( long& rStart, long&, long& rLen );
+ virtual WW8PLCFx& operator ++( int );
+ BOOL GetPara( long nIdx, WW8FieldDesc& rF );
+};
+
+enum eBookStatus { BOOK_NORMAL = 0, BOOK_IGNORE = 0x1, BOOK_ONLY_REF = 0x2 };
+
+class WW8PLCFx_Book : public WW8PLCFx // Iterator fuer Booknotes
+{
+ WW8PLCFspecial* pBook[2]; // Start- und EndPosition
+ SvStrings aBookNames; // Name
+ eBookStatus* pStatus;
+ long nIMax; // Anzahl der Booknotes
+ USHORT nIsEnd;
+public:
+ WW8PLCFx_Book( SvStream* pSt, SvStream* pTblSt, WW8Fib& rFib, WW8_CP nStartCp );
+ virtual ~WW8PLCFx_Book();
+ long GetIMax(){ return nIMax; }
+ virtual ULONG GetIdx() const;
+ virtual void SetIdx( ULONG nI );
+ virtual ULONG GetIdx2() const;
+ virtual void SetIdx2( ULONG nIdx );
+ virtual BOOL SeekPos( WW8_CP nCpPos );
+ virtual long Where();
+ virtual long GetNoSprms( long& rStart, long& rEnd, long& rLen );
+ virtual WW8PLCFx& operator ++( int );
+ const String* GetName() const
+ { return ( !nIsEnd && ( (long)(pBook[0]->GetIdx()) < nIMax ) )
+ ? aBookNames[ pBook[0]->GetIdx() ]
+ : 0;
+ }
+ WW8_CP GetStartPos() const
+ { return ( nIsEnd ) ? LONG_MAX : pBook[0]->Where(); }
+ long GetLen() const;
+ BOOL GetIsEnd() const { return ( nIsEnd ) ? TRUE : FALSE; }
+ long GetHandle() const;
+ BOOL SetStatus( WW8_CP nStartRegion, WW8_CP nEndRegion, const String& rName,
+ eBookStatus eStat );
+ eBookStatus GetStatus() const;
+};
+
+/*
+ hiermit arbeiten wir draussen:
+*/
+struct WW8PLCFManResult
+{
+ WW8_CP nCpPos; // Attribut-Anfangsposition
+ long nMemLen; // Laenge dazu
+ long nCp2OrIdx; // footnote-textpos oder Index in PLCF
+ WW8_CP nAktCp; // wird nur vom Aufrufer benutzt
+ BYTE* pMemPos; // Mem-Pos fuer Sprms
+ USHORT nSprmId; // Sprm-Id ( 0 = ungueltige Id -> ueberspringen! )
+ // (2..255) oder Pseudo-Sprm-Id (256..260)
+ // bzw. ab Winword-Ver8 die Sprm-Id (800..)
+ BYTE nFlags; // Absatz- oder Section-Anfang
+};
+
+#define MAN_ANZ_PLCF 12
+
+#define MAN_MASK_NEW_PAP 1 // neue Zeile
+#define MAN_MASK_NEW_SEP 2 // neue Section
+
+
+#define MAN_MAINTEXT 0 // Defines fuer PLCFMan-ctor
+#define MAN_FTN 1
+#define MAN_EDN 2
+#define MAN_HDFT 3
+#define MAN_AND 4
+#define MAN_TXBX 5
+#define MAN_TXBX_HDFT 6
+
+struct WW8PLCFxSaveAll
+{
+ WW8PLCFxSave1 aS[MAN_ANZ_PLCF];
+};
+
+/*
+ hiermit arbeitet der Manager drinnen:
+*/
+struct WW8PLCFxDesc
+{
+ WW8PLCFx* pPLCFx;
+ UShortStk* pIdStk;// Speicher fuer Attr-Id fuer Attr-Ende(n)
+ BYTE* pMemPos; // wo liegen die Sprm(s)
+ long nStartPos;
+ long nEndPos;
+ long nCp2OrIdx; // wo liegen die NoSprm(s)
+ long nSprmsLen; // wie viele Bytes fuer weitere Sprms / Laenge Fussnote
+ long nCpOfs; // fuer Offset Header .. Footnote
+ BOOL bFirstSprm; // fuer Erkennung erster Sprm einer Gruppe
+ BOOL bRealLineEnd; // FALSE bei Pap-Piece-Ende
+ void Save( WW8PLCFxSave1& rSave ) const;
+ void Restore( const WW8PLCFxSave1& rSave );
+};
+
+
+#ifndef DUMP
+
+class WW8PLCFMan
+{
+ long nCpO; // Origin Cp -- the basis for nNewCp
+
+ long nLineEnd; // zeigt *hinter* das <CR>
+ long nLastWhereIdxCp; // last result of WhereIdx()
+ USHORT nPLCF; // so viele PLCFe werden verwaltet
+ short nManType;
+
+ WW8PLCFxDesc aD[MAN_ANZ_PLCF];
+ WW8PLCFxDesc *pChp, *pPap, *pSep, *pFld, *pFldTxbx, *pFldTxbxHdft,
+ *pFtn, *pEdn,
+ *pBkm, *pPcd, *pPcdA, *pAnd;
+ WW8PLCFspecial *pFdoa, *pTxbx, *pTxbxBkd;
+
+ WW8Fib* pWwFib;
+ USHORT* pNoAttrScan; // Attribute komplett(!) ignorieren, die ueber n CPs
+ // aufgespannt sind; z.B. bei Char #7 (Zellen-/Zeilenende)
+
+ short WhereIdx( BOOL* pbStart, long* pPos );
+ void AdjustEnds( WW8PLCFxDesc& rDesc );
+ void GetNewSprms( WW8PLCFxDesc& rDesc );
+ void GetNewNoSprms( WW8PLCFxDesc& rDesc );
+ void GetSprmStart( short nIdx, WW8PLCFManResult* pRes );
+ void GetSprmEnd( short nIdx, WW8PLCFManResult* pRes );
+ void GetNoSprmStart( short nIdx, WW8PLCFManResult* pRes );
+ void GetNoSprmEnd( short nIdx, WW8PLCFManResult* pRes );
+ void AdvSprm( short nIdx, BOOL bStart );
+ void AdvNoSprm( short nIdx, BOOL bStart );
+
+public:
+ WW8PLCFMan( WW8ScannerBase* pBase, short nType, long nStartCp );
+ ~WW8PLCFMan();
+
+ /*
+ Where fragt, an welcher naechsten Position sich irgendein
+ Attr aendert...
+ */
+ long Where();
+
+ BOOL Get( WW8PLCFManResult* pResult );
+ WW8PLCFMan& operator ++( int );
+ USHORT GetColl() const; // liefert aktuellen Style
+ WW8PLCFx_FLD* GetFld() const;
+ WW8PLCFx_SubDoc* GetEdn() const { return (WW8PLCFx_SubDoc*)pEdn->pPLCFx; }
+ WW8PLCFx_SubDoc* GetFtn() const { return (WW8PLCFx_SubDoc*)pFtn->pPLCFx; }
+ WW8PLCFx_SubDoc* GetAtn() const { return (WW8PLCFx_SubDoc*)pAnd->pPLCFx; }
+ WW8PLCFx_Book* GetBook() const { return (WW8PLCFx_Book*)pBkm->pPLCFx; }
+ long GetCpOfs() const { return pChp->nCpOfs; } // fuer Header/Footer...
+
+ /*
+ fragt, ob *aktueller Absatz* einen Sprm diesen Typs hat
+ */
+ BYTE* HasParaSprm( USHORT nId ) const;
+
+ /*
+ fragt, ob *aktueller Textrun* einen Sprm diesen Typs hat
+ */
+ BYTE* HasCharSprm( USHORT nId ) const;
+
+ WW8PLCFx_Cp_FKP* GetChpPLCF(){ return (WW8PLCFx_Cp_FKP*)pChp->pPLCFx; }
+ WW8PLCFx_Cp_FKP* GetPapPLCF(){ return (WW8PLCFx_Cp_FKP*)pPap->pPLCFx; }
+ WW8PLCFx_SEPX* GetSepPLCF(){ return (WW8PLCFx_SEPX*)pSep->pPLCFx; }
+ WW8PLCFxDesc* GetPap(){ return pPap; }
+ void SeekPos( long nNewCp );
+ void SaveAllPLCFx( WW8PLCFxSaveAll& rSave ) const;
+ void RestoreAllPLCFx( const WW8PLCFxSaveAll& rSave );
+ WW8PLCFspecial* GetFdoa() { return pFdoa; }
+ WW8PLCFspecial* GetTxbx() { return pTxbx; }
+ WW8PLCFspecial* GetTxbxBkd(){ return pTxbxBkd; }
+ short GetManType() { return nManType; }
+};
+
+#endif // !DUMP
+
+class WW8ScannerBase
+{
+friend WW8PLCFx_PCDAttrs::WW8PLCFx_PCDAttrs( BYTE nVersion, WW8PLCFx_PCD* pPLCFx_PCD, WW8ScannerBase* pBase );
+friend WW8PLCFx_Cp_FKP::WW8PLCFx_Cp_FKP( SvStream*, SvStream*, SvStream*,
+ const WW8ScannerBase&, ePLCFT );
+
+#ifdef DUMP
+friend static void DumpPLCFText( WW8_FC nPos, long nLen, long nOfs, sal_Char* pName,
+ WW8ScannerBase* pBase );
+friend static void DumpFtnShort( short nId, long nPos, long nFieldLen );
+#else
+friend WW8PLCFMan::WW8PLCFMan( WW8ScannerBase*, short, long );
+friend class SwWw8ImplReader;
+#endif
+
+ WW8Fib* pWw8Fib;
+ WW8PLCFx_Cp_FKP* pChpPLCF; // Character-Attrs
+ WW8PLCFx_Cp_FKP* pPapPLCF; // Para-Attrs
+ WW8PLCFx_SEPX* pSepPLCF; // Section-Attrs
+ WW8PLCFx_SubDoc* pFtnPLCF; // Footnotes
+ WW8PLCFx_SubDoc* pEdnPLCF; // EndNotes
+ WW8PLCFx_SubDoc* pAndPLCF; // Anmerkungen
+ WW8PLCFx_FLD* pFldPLCF; // Fields in Main Text
+ WW8PLCFx_FLD* pFldHdFtPLCF; // Fields in Header / Footer
+ WW8PLCFx_FLD* pFldTxbxPLCF; // Fields in Textboxes in Main Text
+ WW8PLCFx_FLD* pFldTxbxHdFtPLCF; // Fields in Textboxes in Header / Footer
+ WW8PLCFx_FLD* pFldFtnPLCF; // Fields in Footnotes
+ WW8PLCFx_FLD* pFldEdnPLCF; // Fields in Endnotes
+ WW8PLCFx_FLD* pFldAndPLCF; // Fields in Anmerkungen
+ WW8PLCFspecial* pMainFdoa; // Graphic Primitives in Main Text
+ WW8PLCFspecial* pHdFtFdoa; // Graphic Primitives in Header / Footer
+ WW8PLCFspecial* pMainTxbx; // Textboxen in Main Text
+ WW8PLCFspecial* pMainTxbxBkd; // Break-Deskriptoren fuer diese
+ WW8PLCFspecial* pHdFtTxbx; // TextBoxen in Header / Footer
+ WW8PLCFspecial* pHdFtTxbxBkd; // Break-Deskriptoren fuer diese
+ WW8PLCFx_Book* pBook; // Bookmarks
+
+ WW8PLCFpcd* pPiecePLCF; // fuer FastSave ( Basis-PLCF ohne Iterator )
+ WW8PLCFpcd_Iter* pPieceIter; // fuer FastSave ( Iterator dazu )
+ WW8PLCFx_PCD* pPLCFx_PCD; // dito
+ WW8PLCFx_PCDAttrs* pPLCFx_PCDAttrs;
+ BYTE** pPieceGrpprls; // Attribute an Piece-Table
+ UINT16 nPieceGrpprls; // Anzahl davon
+ USHORT nNoAttrScan; // Attribute komplett(!) ignorieren, die ueber n CPs
+ // aufgespannt sind; z.B. bei Char #7 (Zellen-/Zeilenende)
+
+ WW8PLCFpcd* OpenPieceTable( SvStream* pStr, WW8Fib* pWwF );
+ void DeletePieceTable();
+
+public:
+ WW8ScannerBase( SvStream* pSt, SvStream* pTblSt, SvStream* pDataSt,
+ WW8Fib* pWwF );
+ ~WW8ScannerBase();
+ BOOL AreThereFootnotes() { return pFtnPLCF->Count() > 0; };
+ BOOL AreThereEndnotes() { return pEdnPLCF->Count() > 0; };
+ static DateTime WW8DTTM2DateTime(long lDTTM);
+
+ WW8_CP WW8Fc2Cp( WW8_FC nFcPos ) const ;
+ WW8_FC WW8Cp2Fc( WW8_CP nCpPos, BOOL* pIsUnicode = 0,
+ WW8_CP* pNextPieceCp = 0, BOOL* pTestFlag = 0 ) const;
+ void SetNoAttrScan( USHORT nValue ) { nNoAttrScan = nValue; };
+
+ USHORT WW8ReadString( SvStream& rStrm, String& rStr,
+ WW8_CP nAktStartCp, long nTotalLen,
+ rtl_TextEncoding eEnc ) const;
+};
+
+
+
+
+class WW8Fib
+{
+public:
+ /*
+ von uns verlangte Programm-Version:
+ in Ctor wird geprueft, ob sie zu nFib passt
+ */
+ BYTE nVersion; // 6 steht fuer "WinWord 6 oder WinWord 95",
+ // 7 steht fuer "nur WinWord 95"
+ // 8 steht fuer "nur WinWord 97"
+ /*
+ Fehlerstatus
+ */
+ ULONG nFibError;
+ /*
+ vom Ctor aus dem FIB gelesene Daten
+ (entspricht nur ungefaehr der tatsaechlichen Struktur
+ des Winword-FIB)
+ */
+ UINT16 wIdent; // 0x0 int magic number
+ UINT16 nFib; // 0x2 FIB version written
+ UINT16 nProduct; // 0x4 product version written by
+ INT16 lid; // 0x6 language stamp---localized version;
+ WW8_PN pnNext; // 0x8
+
+ UINT16 fDot :1; // 0xa 0001
+ UINT16 fGlsy :1;
+ UINT16 fComplex :1; // 0004 when 1, file is in complex, fast-saved format.
+ UINT16 fHasPic :1; // 0008 file contains 1 or more pictures
+ UINT16 cQuickSaves :4; // 00F0 count of times file was quicksaved
+ UINT16 fEncrypted :1; //0100 1 if file is encrypted, 0 if not
+ UINT16 fWhichTblStm :1; //0200 When 0, this fib refers to the table stream
+ // named "0Table", when 1, this fib refers to the
+ // table stream named "1Table". Normally, a file
+ // will have only one table stream, but under unusual
+ // circumstances a file may have table streams with
+ // both names. In that case, this flag must be used
+ // to decide which table stream is valid.
+ // UINT16 u1 :2;
+ UINT16 fExtChar :1; // 1000 =1, when using extended character set in file
+ // UINT16 u2 :3;
+
+ UINT16 nFibBack; // 0xc
+ INT16 lKey1; // 0xe file encrypted key, only valid if fEncrypted.
+ INT16 lKey2; // 0x10 key in 2 Portionen wg. Misalignment
+ UINT8 envr; // 0x12 environment in which file was created
+ // 0 created by Win Word / 1 created by Mac Word
+ BYTE fMac :1; // 0x13 when 1, this file was last saved in the Mac environment
+ BYTE fEmptySpecial :1;
+ BYTE fLoadOverridePage :1;
+ BYTE fFuturesavedUndo :1;
+ BYTE fWord97Saved :1;
+ BYTE :3;
+
+ UINT16 chse; // 0x14 default extended character set id for text in document stream. (overidden by chp.chse)
+ // 0 = ANSI / 256 Macintosh character set.
+ UINT16 chseTables; // 0x16 default extended character set id for text in
+ // internal data structures: 0 = ANSI, 256 = Macintosh
+ WW8_FC fcMin; // 0x18 file offset of first character of text
+ WW8_FC fcMac; // 0x1c file offset of last character of text + 1
+
+ // Einschub fuer WW8 *****************************************************
+ UINT16 csw; // Count of fields in the array of "shorts"
+
+ // Marke: "rgsw" Beginning of the array of shorts
+ UINT16 wMagicCreated; // unique number Identifying the File's creator
+ // 0x6A62 is the creator ID for Word and is reserved.
+ // Other creators should choose a different value.
+ UINT16 wMagicRevised; // identifies the File's last modifier
+ UINT16 wMagicCreatedPrivate; // private data
+ UINT16 wMagicRevisedPrivate; // private data
+ /*
+ INT16 pnFbpChpFirst_W6; // not used
+ INT16 pnChpFirst_W6; // not used
+ INT16 cpnBteChp_W6; // not used
+ INT16 pnFbpPapFirst_W6; // not used
+ INT16 pnPapFirst_W6; // not used
+ INT16 cpnBtePap_W6; // not used
+ INT16 pnFbpLvcFirst_W6; // not used
+ INT16 pnLvcFirst_W6; // not used
+ INT16 cpnBteLvc_W6; // not used
+ */
+ INT16 lidFE; // Language id if document was written by Far East version
+ // of Word (i.e. FIB.fFarEast is on)
+ UINT16 clw; // Number of fields in the array of longs
+
+ // Ende des Einschubs fuer WW8 *******************************************
+
+ // Marke: "rglw" Beginning of the array of longs
+ WW8_FC cbMac; // 0x20 file offset of last byte written to file + 1.
+
+ // WW8_FC u4[4]; // 0x24
+ WW8_CP ccpText; // 0x34 length of main document text stream
+ WW8_CP ccpFtn; // 0x38 length of footnote subdocument text stream
+ WW8_CP ccpHdr; // 0x3c length of header subdocument text stream
+ WW8_CP ccpMcr; // 0x40 length of macro subdocument text stream
+ WW8_CP ccpAtn; // 0x44 length of annotation subdocument text stream
+ WW8_CP ccpEdn; // 0x48 length of endnote subdocument text stream
+ WW8_CP ccpTxbx; // 0x4c length of textbox subdocument text stream
+ WW8_CP ccpHdrTxbx; // 0x50 length of header textbox subdocument text stream
+
+ // Einschub fuer WW8 *****************************************************
+ INT32 pnFbpChpFirst; // when there was insufficient memory for Word to expand
+ // the PLCFbte at save time, the PLCFbte is written
+ // to the file in a linked list of 512-byte pieces
+ // starting with this pn.
+ /*
+ // folgende Felder existieren zwar so in der Datei,
+ // wir benutzen jedoch unten deklarierte General-Variablen
+ // fuer Ver67 und Ver8 gemeinsam.
+ INT32 pnChpFirst; // the page number of the lowest numbered page in the
+ // document that records CHPX FKP information
+ INT32 cpnBteChp; // count of CHPX FKPs recorded in file. In non-complex
+ // files if the number of entries in the PLCFbteChpx
+ // is less than this, the PLCFbteChpx is incomplete.
+ */
+ INT32 pnFbpPapFirst; // when there was insufficient memory for Word to expand
+ // the PLCFbte at save time, the PLCFbte is written to
+ // the file in a linked list of 512-byte pieces
+ // starting with this pn
+ /*
+ // folgende Felder existieren zwar so in der Datei,
+ // wir benutzen jedoch unten deklarierte General-Variablen
+ // fuer Ver67 und Ver8 gemeinsam.
+ INT32 pnPapFirst; // the page number of the lowest numbered page in the
+ // document that records PAPX FKP information
+ INT32 cpnBtePap; // count of PAPX FKPs recorded in file. In non-complex
+ // files if the number of entries in the PLCFbtePapx is
+ // less than this, the PLCFbtePapx is incomplete.
+ */
+ INT32 pnFbpLvcFirst; // when there was insufficient memory for Word to expand
+ // the PLCFbte at save time, the PLCFbte is written to
+ // the file in a linked list of 512-byte pieces
+ // starting with this pn
+ INT32 pnLvcFirst; // the page number of the lowest numbered page in the
+ // document that records LVC FKP information
+ INT32 cpnBteLvc; // count of LVC FKPs recorded in file. In non-complex
+ // files if the number of entries in the PLCFbtePapx is
+ // less than this, the PLCFbtePapx is incomplete.
+ INT32 fcIslandFirst; // ?
+ INT32 fcIslandLim; // ?
+ UINT16 cfclcb; // Number of fields in the array of FC/LCB pairs.
+
+ // Ende des Einschubs fuer WW8 *******************************************
+
+ // Marke: "rgfclcb" Beginning of array of FC/LCB pairs.
+ WW8_FC fcStshfOrig; // file offset of original allocation for STSH in table
+ // stream. During fast save Word will attempt to reuse
+ // this allocation if STSH is small enough to fit.
+ INT32 lcbStshfOrig; // 0x5c count of bytes of original STSH allocation
+ WW8_FC fcStshf; // 0x60 file offset of STSH in file.
+ INT32 lcbStshf; // 0x64 count of bytes of current STSH allocation
+ WW8_FC fcPlcffndRef; // 0x68 file offset of footnote reference PLCF.
+ INT32 lcbPlcffndRef; // 0x6c count of bytes of footnote reference PLCF
+ // == 0 if no footnotes defined in document.
+
+ WW8_FC fcPlcffndTxt; // 0x70 file offset of footnote text PLCF.
+ INT32 lcbPlcffndTxt; // 0x74 count of bytes of footnote text PLCF.
+ // == 0 if no footnotes defined in document
+
+ WW8_FC fcPlcfandRef; // 0x78 file offset of annotation reference PLCF.
+ INT32 lcbPlcfandRef; // 0x7c count of bytes of annotation reference PLCF.
+
+ WW8_FC fcPlcfandTxt; // 0x80 file offset of annotation text PLCF.
+ INT32 lcbPlcfandTxt; // 0x84 count of bytes of the annotation text PLCF
+
+ WW8_FC fcPlcfsed; // 8x88 file offset of section descriptor PLCF.
+ INT32 lcbPlcfsed; // 0x8c count of bytes of section descriptor PLCF.
+
+ WW8_FC fcPlcfpad; // 0x90 file offset of paragraph descriptor PLCF
+ INT32 lcbPlcfpad; // 0x94 count of bytes of paragraph descriptor PLCF.
+ // ==0 if file was never viewed in Outline view.
+ // Should not be written by third party creators
+
+ WW8_FC fcPlcfphe; // 0x98 file offset of PLCF of paragraph heights.
+ INT32 lcbPlcfphe; // 0x9c count of bytes of paragraph height PLCF.
+ // ==0 when file is non-complex.
+
+ WW8_FC fcSttbfglsy; // 0xa0 file offset of glossary string table.
+ INT32 lcbSttbfglsy; // 0xa4 count of bytes of glossary string table.
+ // == 0 for non-glossary documents.
+ // !=0 for glossary documents.
+
+ WW8_FC fcPlcfglsy; // 0xa8 file offset of glossary PLCF.
+ INT32 lcbPlcfglsy; // 0xac count of bytes of glossary PLCF.
+ // == 0 for non-glossary documents.
+ // !=0 for glossary documents.
+
+ WW8_FC fcPlcfhdd; // 0xb0 byte offset of header PLCF.
+ INT32 lcbPlcfhdd; // 0xb4 count of bytes of header PLCF.
+ // == 0 if document contains no headers
+
+ WW8_FC fcPlcfbteChpx; // 0xb8 file offset of character property bin table.PLCF.
+ INT32 lcbPlcfbteChpx;// 0xbc count of bytes of character property bin table PLCF.
+
+ WW8_FC fcPlcfbtePapx; // 0xc0 file offset of paragraph property bin table.PLCF.
+ INT32 lcbPlcfbtePapx;// 0xc4 count of bytes of paragraph property bin table PLCF.
+
+ WW8_FC fcPlcfsea; // 0xc8 file offset of PLCF reserved for private use. The SEA is 6 bytes long.
+ INT32 lcbPlcfsea; // 0xcc count of bytes of private use PLCF.
+
+ WW8_FC fcSttbfffn; // 0xd0 file offset of font information STTBF. See the FFN file structure definition.
+ INT32 lcbSttbfffn; // 0xd4 count of bytes in sttbfffn.
+
+ WW8_FC fcPlcffldMom; // 0xd8 offset in doc stream to the PLCF of field positions in the main document.
+ INT32 lcbPlcffldMom; // 0xdc
+
+ WW8_FC fcPlcffldHdr; // 0xe0 offset in doc stream to the PLCF of field positions in the header subdocument.
+ INT32 lcbPlcffldHdr; // 0xe4
+
+ WW8_FC fcPlcffldFtn; // 0xe8 offset in doc stream to the PLCF of field positions in the footnote subdocument.
+ INT32 lcbPlcffldFtn; // 0xec
+
+ WW8_FC fcPlcffldAtn; // 0xf0 offset in doc stream to the PLCF of field positions in the annotation subdocument.
+ INT32 lcbPlcffldAtn; // 0xf4
+
+ WW8_FC fcPlcffldMcr; // 0xf8 offset in doc stream to the PLCF of field positions in the macro subdocument.
+ INT32 lcbPlcffldMcr; // 9xfc
+
+ WW8_FC fcSttbfbkmk; // 0x100 offset in document stream of the STTBF that records bookmark names in the main document
+ INT32 lcbSttbfbkmk; // 0x104
+
+ WW8_FC fcPlcfbkf; // 0x108 offset in document stream of the PLCF that records the beginning CP offsets of bookmarks in the main document. See BKF
+ INT32 lcbPlcfbkf; // 0x10c
+
+ WW8_FC fcPlcfbkl; // 0x110 offset in document stream of the PLCF that records the ending CP offsets of bookmarks recorded in the main document. See the BKL structure definition.
+ INT32 lcbPlcfbkl; // 0x114 INT32
+
+ WW8_FC fcCmds; // 0x118 FC
+ INT32 lcbCmds; // 0x11c
+
+ WW8_FC fcPlcfmcr; // 0x120 FC
+ INT32 lcbPlcfmcr; // 0x124
+
+ WW8_FC fcSttbfmcr; // 0x128 FC
+ INT32 lcbSttbfmcr; // 0x12c
+
+ WW8_FC fcPrDrvr; // 0x130 file offset of the printer driver information (names of drivers, port etc...)
+ INT32 lcbPrDrvr; // 0x134 count of bytes of the printer driver information (names of drivers, port etc...)
+
+ WW8_FC fcPrEnvPort; // 0x138 file offset of the print environment in portrait mode.
+ INT32 lcbPrEnvPort; // 0x13c count of bytes of the print environment in portrait mode.
+
+ WW8_FC fcPrEnvLand; // 0x140 file offset of the print environment in landscape mode.
+ INT32 lcbPrEnvLand; // 0x144 count of bytes of the print environment in landscape mode.
+
+ WW8_FC fcWss; // 0x148 file offset of Window Save State data structure. See WSS.
+ INT32 lcbWss; // 0x14c count of bytes of WSS. ==0 if unable to store the window state.
+
+ WW8_FC fcDop; // 0x150 file offset of document property data structure.
+ INT32 lcbDop; // 0x154 count of bytes of document properties.
+ // cbDOP is 84 when nFib < 103
+
+
+ WW8_FC fcSttbfAssoc; // 0x158 offset to STTBF of associated strings. See STTBFASSOC.
+ INT32 cbSttbfAssoc; // 0x15C
+
+ WW8_FC fcClx; // 0x160 file offset of beginning of information for complex files.
+ INT32 lcbClx; // 0x164 count of bytes of complex file information. 0 if file is non-complex.
+
+ WW8_FC fcPlcfpgdFtn; // 0x168 file offset of page descriptor PLCF for footnote subdocument.
+ INT32 lcbPlcfpgdFtn; // 0x16C count of bytes of page descriptor PLCF for footnote subdocument.
+ // ==0 if document has not been paginated. The length of the PGD is 8 bytes.
+
+ WW8_FC fcAutosaveSource; // 0x170 file offset of the name of the original file.
+ INT32 lcbAutosaveSource; // 0x174 count of bytes of the name of the original file.
+
+ WW8_FC fcGrpStAtnOwners; // 0x178 group of strings recording the names of the owners of annotations
+ INT32 lcbGrpStAtnOwners; // 0x17C count of bytes of the group of strings
+
+ WW8_FC fcSttbfAtnbkmk; // 0x180 file offset of the sttbf that records names of bookmarks in the annotation subdocument
+ INT32 lcbSttbfAtnbkmk; // 0x184 length in bytes of the sttbf that records names of bookmarks in the annotation subdocument
+
+ // Einschubs fuer WW67 ***************************************************
+
+ // INT16 wSpare4Fib; // Reserve, muss hier nicht deklariert werden
+
+ /*
+ // folgende Felder existieren zwar so in der Datei,
+ // wir benutzen jedoch unten deklarierte General-Variablen
+ // fuer Ver67 und Ver8 gemeinsam.
+ WW8_PN pnChpFirst; // the page number of the lowest numbered page in
+ // the document that records CHPX FKP information
+ WW8_PN pnPapFirst; // the page number of the lowest numbered page in
+ // the document that records PAPX FKP information
+
+ WW8_PN cpnBteChp; // count of CHPX FKPs recorded in file. In non-complex
+ // files if the number of entries in the PLCFbteChpx is
+ // less than this, the PLCFbteChpx is incomplete.
+ WW8_PN cpnBtePap; // count of PAPX FKPs recorded in file. In non-complex
+ // files if the number of entries in the PLCFbtePapx is
+ // less than this, the PLCFbtePapx is incomplete.
+ */
+
+ // Ende des Einschubs fuer WW67 ******************************************
+
+ WW8_FC fcPlcfdoaMom; // 0x192 file offset of the FDOA (drawn object) PLCF for main document.
+ // ==0 if document has no drawn objects. The length of the FDOA is 6 bytes.
+ // ab Ver8 unused
+ INT32 lcbPlcfdoaMom; // 0x196 length in bytes of the FDOA PLCF of the main document
+ // ab Ver8 unused
+ WW8_FC fcPlcfdoaHdr; // 0x19A file offset of the FDOA (drawn object) PLCF for the header document.
+ // ==0 if document has no drawn objects. The length of the FDOA is 6 bytes.
+ // ab Ver8 unused
+ INT32 lcbPlcfdoaHdr; // 0x19E length in bytes of the FDOA PLCF of the header document
+ // ab Ver8 unused
+
+ WW8_FC fcPlcfspaMom; // offset in table stream of the FSPA PLCF for main document.
+ // == 0 if document has no office art objects
+ // war in Ver67 nur leere Reserve
+ INT32 lcbPlcfspaMom; // length in bytes of the FSPA PLCF of the main document
+ // war in Ver67 nur leere Reserve
+ WW8_FC fcPlcfspaHdr; // offset in table stream of the FSPA PLCF for header document.
+ // == 0 if document has no office art objects
+ // war in Ver67 nur leere Reserve
+ INT32 lcbPlcfspaHdr; // length in bytes of the FSPA PLCF of the header document
+ // war in Ver67 nur leere Reserve
+
+ WW8_FC fcPlcfAtnbkf; // 0x1B2 file offset of BKF (bookmark first) PLCF of the annotation subdocument
+ INT32 lcbPlcfAtnbkf; // 0x1B6 length in bytes of BKF (bookmark first) PLCF of the annotation subdocument
+
+ WW8_FC fcPlcfAtnbkl; // 0x1BA file offset of BKL (bookmark last) PLCF of the annotation subdocument
+ INT32 lcbPlcfAtnbkl; // 0x1BE length in bytes of BKL (bookmark first) PLCF of the annotation subdocument
+
+ WW8_FC fcPms; // 0x1C2 file offset of PMS (Print Merge State) information block
+ INT32 lcbPMS; // 0x1C6 length in bytes of PMS
+
+ WW8_FC fcFormFldSttbf; // 0x1CA file offset of form field Sttbf which contains strings used in form field dropdown controls
+ INT32 lcbFormFldSttbf; // 0x1CE length in bytes of form field Sttbf
+
+ WW8_FC fcPlcfendRef; // 0x1D2 file offset of PLCFendRef which points to endnote references in the main document stream
+ INT32 lcbPlcfendRef; // 0x1D6
+
+ WW8_FC fcPlcfendTxt; // 0x1DA file offset of PLCFendRef which points to endnote text in the endnote document
+ // stream which corresponds with the PLCFendRef
+ INT32 lcbPlcfendTxt; // 0x1DE
+
+ WW8_FC fcPlcffldEdn; // 0x1E2 offset to PLCF of field positions in the endnote subdoc
+ INT32 lcbPlcffldEdn; // 0x1E6
+
+ WW8_FC fcPlcfpgdEdn; // 0x1EA offset to PLCF of page boundaries in the endnote subdoc.
+ INT32 lcbPlcfpgdEdn; // 0x1EE
+
+
+ WW8_FC fcDggInfo; // offset in table stream of the office art object table data.
+ // The format of office art object table data is found in a separate document.
+ // war in Ver67 nur leere Reserve
+ INT32 lcbDggInfo; // length in bytes of the office art object table data
+ // war in Ver67 nur leere Reserve
+
+ WW8_FC fcSttbfRMark; // 0x1fa offset to STTBF that records the author abbreviations...
+ INT32 lcbSttbfRMark; // 0x1fe
+ WW8_FC fcSttbfCaption; // 0x202 offset to STTBF that records caption titles...
+ INT32 lcbSttbfCaption; // 0x206
+ WW8_FC fcSttbAutoCaption; // offset in table stream to the STTBF that records the object names and
+ // indices into the caption STTBF for objects which get auto captions.
+ INT32 lcbSttbAutoCaption; // 0x20e
+
+ WW8_FC fcPlcfwkb; // 0x212 offset to PLCF that describes the boundaries of contributing documents...
+ INT32 lcbPlcfwkb; // 0x216
+
+ WW8_FC fcPlcfspl; // offset in table stream of PLCF (of SPLS structures) that records spell check state
+ // war in Ver67 nur leere Reserve
+ INT32 lcbPlcfspl; // war in Ver67 nur leere Reserve
+
+ WW8_FC fcPlcftxbxTxt; // 0x222 ...PLCF of beginning CP in the text box subdoc
+ INT32 lcbPlcftxbxTxt; // 0x226
+ WW8_FC fcPlcffldTxbx; // 0x22a ...PLCF of field boundaries recorded in the textbox subdoc.
+ INT32 lcbPlcffldTxbx; // 0x22e
+ WW8_FC fcPlcfHdrtxbxTxt;// 0x232 ...PLCF of beginning CP in the header text box subdoc
+ INT32 lcbPlcfHdrtxbxTxt;// 0x236
+ WW8_FC fcPlcffldHdrTxbx;// 0x23a ...PLCF of field boundaries recorded in the header textbox subdoc.
+ INT32 lcbPlcffldHdrTxbx;// 0x23e
+
+ /*
+ spezielle Listenverwaltung fuer WW8
+ */
+ WW8_FC fcPlcfLst; // 0x02e2 offset in the table stream of list format information.
+ INT32 lcbPlcfLst; // 0x02e6 length
+ WW8_FC fcPlfLfo; // 0x02ea offset in the table stream of list format override information.
+ INT32 lcbPlfLfo; // 0x02ee length
+ /*
+ spezielle Break-Verwaltung fuer Text-Box-Stories in WW8
+ */
+ WW8_FC fcPlcftxbxBkd; // 0x02f2 PLCF fuer TextBox-Break-Deskriptoren im Maintext
+ INT32 lcbPlcftxbxBkd; // 0x02f6
+ WW8_FC fcPlcfHdrtxbxBkd;// 0x02fa PLCF fuer TextBox-Break-Deskriptoren im Header-/Footer-Bereich
+ INT32 lcbPlcfHdrtxbxBkd;// 0x02fe
+
+ // 0x302 - 372 == ignore
+ /*
+ ListNames (skip to here!)
+ */
+ WW8_FC fcSttbListNames;// 0x0372 PLCF for Listname Table
+ INT32 lcbSttbListNames;// 0x0376
+ /*
+ General-Varaiblen, die fuer Ver67 und Ver8 verwendet werden,
+ obwohl sie in der jeweiligen DATEI verschiedene Groesse haben:
+ */
+ INT32 pnChpFirst;
+ INT32 pnPapFirst;
+ INT32 cpnBteChp;
+ INT32 cpnBtePap;
+ /*
+ nun wird lediglich noch ein Ctor benoetigt
+ */
+ WW8Fib( SvStream& rStrm, BYTE nWantedVersion,UINT32 nOffset=0 );
+
+ /* leider falsch, man braucht auch noch einen fuer den Export */
+ WW8Fib( BYTE nVersion = 6 );
+ BOOL Write( SvStream& rStrm );
+};
+
+
+class WW8Style
+{
+protected:
+ WW8Fib& rFib;
+ SvStream& rSt;
+ long nStyleStart;
+ long nStyleLen;
+// WW8_STSHI* pStishi;
+
+ UINT16 cstd; // Count of styles in stylesheet
+ UINT16 cbSTDBaseInFile; // Length of STD Base as stored in a file
+ UINT16 fStdStylenamesWritten : 1; // Are built-in stylenames stored?
+ UINT16 : 15; // Spare flags
+ UINT16 stiMaxWhenSaved; // Max sti known when this file was written
+ UINT16 istdMaxFixedWhenSaved; // How many fixed-index istds are there?
+ UINT16 nVerBuiltInNamesWhenSaved; // Current version of built-in stylenames
+ UINT16 ftcStandardChpStsh; // ftc used by StandardChpStsh for this document
+
+public:
+ WW8Style( SvStream& rSt, WW8Fib& rFibPara );
+// ~WW8Style(){ delete( pStishi ); pStishi = 0; }
+ WW8_STD* Read1STDFixed( short& rSkip, short* pcbStd );
+ WW8_STD* Read1Style( short& rSkip, String* pString, short* pcbStd );
+ const UINT16 GetCount() const { return cstd; }
+};
+
+
+class WW8Fonts
+{
+protected:
+ WW8_FFN* pFontA; // Array of Pointers to Font Description
+ // Hilfs-Vari
+ USHORT nMax; // Array-Groesse
+public:
+ WW8Fonts( SvStream& rSt, WW8Fib& rFib );
+ ~WW8Fonts(){ if( pFontA ) __DELETE( nMax )pFontA; }
+ const WW8_FFN* GetFont( USHORT nNum ) const;
+ USHORT GetMax() const { return nMax; }
+};
+
+
+#define WW8_HEADER_EVEN 0x1
+#define WW8_HEADER_ODD 0x2
+#define WW8_FOOTER_EVEN 0x4
+#define WW8_FOOTER_ODD 0x8
+#define WW8_HEADER_FIRST 0x10
+#define WW8_FOOTER_FIRST 0x20
+
+class WW8Dop // Document Properties
+{
+public:
+ /*
+ Fehlerstatus
+ */
+ ULONG nDopError;
+ /*
+ vom Ctor aus dem FIB gelesene Daten
+ (entspricht nur ungefaehr der tatsaechlichen Struktur
+ des Winword-FIB)
+ */
+ // Initialisier-Dummy:
+ BYTE nDataStart;
+ //-------------------------
+ UINT16 fFacingPages : 1; // 1 when facing pages should be printed
+ UINT16 fWidowControl : 1; // 1 when widow control is in effect. 0 when widow control disabled.
+ UINT16 fPMHMainDoc : 1; // 1 when doc is a main doc for Print Merge Helper, 0 when not; default=0
+ UINT16 grfSuppression : 2; // 0 Default line suppression storage; 0= form letter line suppression; 1= no line suppression; default=0
+ UINT16 fpc : 2; // 1 footnote position code: 0 as endnotes, 1 at bottom of page, 2 immediately beneath text
+ UINT16 : 1; // 0 unused
+ //-------------------------
+ UINT16 grpfIhdt : 8; // 0 specification of document headers and footers. See explanation under Headers and Footers topic.
+ //-------------------------
+ UINT16 rncFtn : 2; // 0 restart index for footnotes, 0 don't restart note numbering, 1 section, 2 page
+ UINT16 nFtn : 14; // 1 initial footnote number for document
+ UINT16 fOutlineDirtySave : 1; // when 1, indicates that information in the hPLCFpad should be refreshed since outline has been dirtied
+ UINT16 : 7; // reserved
+ UINT16 fOnlyMacPics : 1; // when 1, Word believes all pictures recorded in the document were created on a Macintosh
+ UINT16 fOnlyWinPics : 1; // when 1, Word believes all pictures recorded in the document were created in Windows
+ UINT16 fLabelDoc : 1; // when 1, document was created as a print merge labels document
+ UINT16 fHyphCapitals : 1; // when 1, Word is allowed to hyphenate words that are capitalized. When 0, capitalized may not be hyphenated
+ UINT16 fAutoHyphen : 1; // when 1, Word will hyphenate newly typed text as a background task
+ UINT16 fFormNoFields : 1;
+ UINT16 fLinkStyles : 1; // when 1, Word will merge styles from its template
+ UINT16 fRevMarking : 1; // when 1, Word will mark revisions as the document is edited
+ UINT16 fBackup : 1; // always make backup when document saved when 1.
+ UINT16 fExactCWords : 1;
+ UINT16 fPagHidden : 1; //
+ UINT16 fPagResults : 1;
+ UINT16 fLockAtn : 1; // when 1, annotations are locked for editing
+ UINT16 fMirrorMargins : 1; // swap margins on left/right pages when 1.
+ UINT16 fReadOnlyRecommended : 1;// user has recommended that this doc be opened read-only when 1
+ UINT16 fDfltTrueType : 1; // when 1, use TrueType fonts by default (flag obeyed only when doc was created by WinWord 2.x)
+ UINT16 fPagSuppressTopSpacing : 1;//when 1, file created with SUPPRESSTOPSPACING=YES in win.ini. (flag obeyed only when doc was created by WinWord 2.x).
+ UINT16 fProtEnabled : 1; // when 1, document is protected from edit operations
+ UINT16 fDispFormFldSel : 1;// when 1, restrict selections to occur only within form fields
+ UINT16 fRMView : 1; // when 1, show revision markings on screen
+ UINT16 fRMPrint : 1; // when 1, print revision marks when document is printed
+ UINT16 fWriteReservation : 1;
+ UINT16 fLockRev : 1; // when 1, the current revision marking state is locked
+ UINT16 fEmbedFonts : 1; // when 1, document contains embedded True Type fonts
+ // compatability options
+ UINT16 copts_fNoTabForInd : 1; // when 1, don’t add automatic tab stops for hanging indent
+ UINT16 copts_fNoSpaceRaiseLower : 1; // when 1, don’t add extra space for raised or lowered characters
+ UINT16 copts_fSupressSpbfAfterPgBrk : 1; // when 1, supress the paragraph Space Before and Space After options after a page break
+ UINT16 copts_fWrapTrailSpaces : 1; // when 1, wrap trailing spaces at the end of a line to the next line
+ UINT16 copts_fMapPrintTextColor : 1; // when 1, print colors as black on non-color printers
+ UINT16 copts_fNoColumnBalance : 1; // when 1, don’t balance columns for Continuous Section starts
+ UINT16 copts_fConvMailMergeEsc : 1;
+ UINT16 copts_fSupressTopSpacing : 1; // when 1, supress extra line spacing at top of page
+ UINT16 copts_fOrigWordTableRules : 1; // when 1, combine table borders like Word 5.x for the Macintosh
+ UINT16 copts_fTransparentMetafiles : 1; // when 1, don’t blank area between metafile pictures
+ UINT16 copts_fShowBreaksInFrames : 1; // when 1, show hard page or column breaks in frames
+ UINT16 copts_fSwapBordersFacingPgs : 1; // when 1, swap left and right pages on odd facing pages
+
+ INT16 dxaTab; // 720 twips default tab width
+ UINT16 wSpare; //
+ UINT16 dxaHotZ; // width of hyphenation hot zone measured in twips
+ UINT16 cConsecHypLim; // number of lines allowed to have consecutive hyphens
+ UINT16 wSpare2; // reserved
+ INT32 dttmCreated; // DTTM date and time document was created
+ INT32 dttmRevised; // DTTM date and time document was last revised
+ INT32 dttmLastPrint; // DTTM date and time document was last printed
+ INT16 nRevision; // number of times document has been revised since its creation
+ INT32 tmEdited; // time document was last edited
+ INT32 cWords; // count of words tallied by last Word Count execution
+ INT32 cCh; // count of characters tallied by last Word Count execution
+ INT16 cPg; // count of pages tallied by last Word Count execution
+ INT32 cParas; // count of paragraphs tallied by last Word Count execution
+ UINT16 rncEdn : 2; // restart endnote number code: 0 don’t restart endnote numbering, 1 section, 2 page
+ UINT16 nEdn : 14; // beginning endnote number
+ UINT16 epc : 2; // endnote position code: 0 at end of section, 3 at end of document
+ // UINT16 nfcFtnRef : 4; // number format code for auto footnotes: 0 Arabic, 1 Upper case Roman, 2 Lower case Roman
+ // 3 Upper case Letter, 4 Lower case Letter
+ // ersetzt durch gleichlautendes Feld unten
+ // UINT16 nfcEdnRef : 4; // number format code for auto endnotes: 0 Arabic, 1 Upper case Roman, 2 Lower case Roman
+ // 3 Upper case Letter, 4 Lower case Letter
+ // ersetzt durch gleichlautendes Feld unten
+ UINT16 fPrintFormData : 1; // only print data inside of form fields
+ UINT16 fSaveFormData : 1; // only save document data that is inside of a form field.
+ UINT16 fShadeFormData : 1; // shade form fields
+ UINT16 : 2; // reserved
+ UINT16 fWCFtnEdn : 1; // when 1, include footnotes and endnotes in word count
+ INT32 cLines; // count of lines tallied by last Word Count operation
+ INT32 cWordsFtnEnd; // count of words in footnotes and endnotes tallied by last Word Count operation
+ INT32 cChFtnEdn; // count of characters in footnotes and endnotes tallied by last Word Count operation
+ INT16 cPgFtnEdn; // count of pages in footnotes and endnotes tallied by last Word Count operation
+ INT32 cParasFtnEdn; // count of paragraphs in footnotes and endnotes tallied by last Word Count operation
+ INT32 cLinesFtnEdn; // count of paragraphs in footnotes and endnotes tallied by last Word Count operation
+ INT32 lKeyProtDoc; // document protection password key, only valid if dop.fProtEnabled, dop.fLockAtn or dop.fLockRev are 1.
+ UINT16 wvkSaved : 3; // document view kind: 0 Normal view, 1 Outline view, 2 Page View
+ UINT16 wScaleSaved : 9; //
+ UINT16 zkSaved : 2;
+
+ // hier sollte bei nFib < 103 Schluss sein, sonst ist Datei fehlerhaft!
+
+ /*
+ bei nFib >= 103 gehts weiter:
+ */
+ UINT32 fNoTabForInd :1; // see above in compatability options
+ UINT32 fNoSpaceRaiseLower :1; // see above
+ UINT32 fSupressSpbfAfterPageBreak :1; // see above
+ UINT32 fWrapTrailSpaces :1; // see above
+ UINT32 fMapPrintTextColor :1; // see above
+ UINT32 fNoColumnBalance :1; // see above
+ UINT32 fConvMailMergeEsc :1; // see above
+ UINT32 fSupressTopSpacing :1; // see above
+ UINT32 fOrigWordTableRules :1; // see above
+ UINT32 fTransparentMetafiles :1; // see above
+ UINT32 fShowBreaksInFrames :1; // see above
+ UINT32 fSwapBordersFacingPgs :1; // see above
+ UINT32 :4; // reserved
+ UINT32 fSuppressTopSpacingMac5 :1; // Suppress extra line spacing at top
+ // of page like MacWord 5.x
+ UINT32 fTruncDxaExpand :1; // Expand/Condense by whole number of points
+ UINT32 fPrintBodyBeforeHdr :1; // Print body text before header/footer
+ UINT32 fNoLeading :1; // Don't add extra spacebetween rows of text
+ UINT32 :1; // reserved
+ UINT32 fMWSmallCaps :1; // Use larger small caps like MacWord 5.x
+ UINT32 :10;// reserved
+
+ // hier sollte bei nFib <= 105 Schluss sein, sonst ist Datei fehlerhaft!
+
+ /*
+ bei nFib > 105 gehts weiter:
+ */
+ INT16 adt; // Autoformat Document Type:
+ // 0 for normal. 1 for letter, and 2 for email.
+ WW8_DOPTYPOGRAPHY doptypography; // siehe WW8STRUC.HXX
+ WW8_DOGRID dogrid; // siehe WW8STRUC.HXX
+ UINT16 :1; // reserved
+ UINT16 lvl :4; // Which outline levels are showing in outline view
+ UINT16 :4; // reserved
+ UINT16 fHtmlDoc :1; // This file is based upon an HTML file
+ UINT16 :1; // reserved
+ UINT16 fSnapBorder :1; // Snap table and page borders to page border
+ UINT16 fIncludeHeader :1; // Place header inside page border
+ UINT16 fIncludeFooter :1; // Place footer inside page border
+ UINT16 fForcePageSizePag :1; // Are we in online view
+ UINT16 fMinFontSizePag :1; // Are we auto-promoting
+ // fonts to >= hpsZoonFontPag?
+ UINT16 fHaveVersions :1; // versioning is turned on
+ UINT16 fAutoVersion :1; // autoversioning is enabled
+ UINT16 :14; // reserved
+ // hier 12 Byte ueberspringen: ASUMI
+ INT32 cChWS;
+ INT32 cChWSFtnEdn;
+ INT32 grfDocEvents;
+ // hier 4+30+8 Bytes ueberspringen
+ INT32 cDBC;
+ INT32 cDBCFtnEdn;
+ // hier 4 Bytes ueberspringen
+ INT16 nfcFtnRef;
+ INT16 nfcEdnRef;
+ INT16 hpsZoonFontPag;
+ INT16 dywDispPag;
+
+ // 2. Initialisier-Dummy:
+ BYTE nDataEnd;
+
+ /*
+ nun wird lediglich noch ein Ctor benoetigt,
+ dem die FIB-Nummer uebergeben werden muss
+ */
+ WW8Dop( SvStream& rSt, INT16 nFib, INT32 nPos, INT32 nSize );
+
+ /* leider falsch, man braucht auch noch einen fuer den Export */
+ WW8Dop();
+ BOOL Write( SvStream& rStrm, WW8Fib& rFib );
+};
+
+
+inline short WW8SkipOdd(SvStream* pSt )
+{
+#if defined HP9000 || defined SINIX
+ short bRet = pSt->Tell() & 0x1;
+ if (bRet) {
+ UINT8 c;
+ pSt->Read( &c, 1 );
+ }
+ return bRet;
+#else
+ if ( pSt->Tell() & 0x1 ){
+ UINT8 c;
+ pSt->Read( &c, 1 );
+ return 1;
+ }
+ return 0;
+#endif
+}
+
+
+class WW8PLCF_HdFt
+{
+ WW8PLCF aPLCF;
+ long nTextOfs;
+ short nIdxOffset;
+
+public:
+ WW8PLCF_HdFt( SvStream* pSt, WW8Fib& rFib, WW8Dop& rDop );
+// ~WW8PLCF_HdFt() {}
+ BOOL GetTextPos( BYTE grpfIhdt, BYTE nWhich, WW8_CP& rStart, long& rLen );
+ BOOL GetTextPosExact( short nIdx, WW8_CP& rStart, long& rLen );
+ void UpdateIndex( BYTE grpfIhdt );
+};
+
+
+/*************************************************************************
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8scan.hxx,v 1.1.1.1 2000-09-18 17:14:59 hr Exp $
+
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.58 2000/09/18 16:05:02 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.57 2000/08/24 06:43:01 khz
+ #75708# advance StartPos of attributes starting on a Table-Row-End by 1
+
+ Revision 1.56 2000/07/12 12:24:54 khz
+ #76503# use WW8PLCFx_Cp_FKP::?etIdx2() to save/restore nIdx of pPcd
+
+ Revision 1.55 2000/05/31 12:23:05 khz
+ Changes for Unicode
+
+ Revision 1.54 2000/05/25 08:06:37 khz
+ Piece Table optimization, Unicode changes, Bugfixes
+
+ Revision 1.53 2000/05/18 10:58:50 jp
+ Changes for Unicode
+
+ Revision 1.52 2000/05/16 12:13:13 jp
+ ASS_FALSE define removed
+
+ Revision 1.51 2000/05/16 11:07:47 khz
+ Unicode code-conversion
+
+ Revision 1.50 2000/05/12 08:29:03 khz
+ Changes for Unicode
+
+ Revision 1.49 2000/05/04 07:32:05 khz
+ Task #75379# added Save() and Restore() to WW8PLCFx, WW8PLCFx_Cp_FKP, WW8PLCFxDesc
+
+ Revision 1.48 2000/02/22 16:23:14 khz
+ Task #72987# Ignore Sprms covering ONLY a Tab-Row-End Char #7
+
+ Revision 1.47 2000/02/09 08:57:36 khz
+ Task #72647# Read SPRMs that are stored in piece table grpprls (2)
+
+ Revision 1.46 2000/02/03 10:08:31 cmc
+ #72268# Allow create fib from offset, added data to STTBF
+
+ Revision 1.45 2000/02/02 18:07:51 khz
+ Task #69885# Read SPRMs that are stored in piece table grpprls
+
+ Revision 1.44 1999/12/07 14:29:04 khz
+ Task #69508# import sprmPHugePapx by reading DATA stream
+
+ Revision 1.43 1999/11/19 15:09:24 khz
+ Task #69910# Use extra PLCF structure for field!
+
+ Revision 1.42 1999/11/03 17:18:02 khz
+ import new TOX_CONTENT and TOX_INDEX features (2)
+
+ Revision 1.41 1999/10/21 15:36:21 khz
+ Import Redlining (4)
+
+ Revision 1.40 1999/10/13 21:06:47 khz
+ Import Redlining (3)
+
+ Revision 1.39 1999/10/08 09:25:29 khz
+ Import Redlining
+
+ Revision 1.38 1999/09/10 15:36:39 khz
+ CharSet matching made by TENCINFO.H::rtl_getTextEncodingFromWindowsCharset()
+
+ Revision 1.37 1999/09/09 18:16:13 khz
+ CharSet matching now done in central methode WW8SCAN.HXX::WW8GetCharSet()
+
+ Revision 1.36 1999/09/08 13:26:17 khz
+ Better performance by reducing use of SWAP..() and SVBT..To..() methods
+
+ Revision 1.35 1999/08/30 19:53:04 JP
+ Bug #68219#: no static members - be reentrant
+
+
+ Rev 1.34 30 Aug 1999 21:53:04 JP
+ Bug #68219#: no static members - be reentrant
+
+ Rev 1.33 09 Aug 1999 18:35:10 KHZ
+ Task #67543# Import of Property Modifier(variant 1) (PRM) in WW8 docs
+
+ Rev 1.32 15 Jun 1999 14:34:58 JP
+ for Export: FIB - read/write SttbListNames
+
+ Rev 1.31 02 Jun 1999 09:32:44 KHZ
+ Task #66227# a) kein Unicode bei Ver67 ;-) b) Grafik in grupp. Textbox
+
+ Rev 1.30 19 May 1999 11:12:56 JP
+ WinWord97-ExportFilter
+
+ Rev 1.29 28 Apr 1999 23:03:28 KHZ
+ Task #65245# Breite eines Rahmens bei WW 'automatisch' muss PRTAREA sein
+
+ Rev 1.28 26 Feb 1999 14:43:36 KHZ
+ Task #59715# Behandlung von Section breaks
+
+ Rev 1.27 25 Jan 1999 10:22:38 KHZ
+ Task #60715# in Textobjekt verankerte Grafik als Grafik importieren
+
+ Rev 1.26 18 Jan 1999 08:53:08 KHZ
+ Task #60878# WW8Read_xstz nur dann Assertion, wenn kein pTestFlag
+
+ Rev 1.25 10 Dec 1998 21:29:02 JP
+ Bug #59643#: benutzerdefinierte Zeichen von Fuss-/EndNoten verarbeiten
+
+ Rev 1.24 05 Dec 1998 17:10:26 KHZ
+ Task #59580# Unicode (3)
+
+ Rev 1.23 04 Dec 1998 20:19:48 KHZ
+ Task #58766# Textboxen mit Unicode-Inhalt
+
+ Rev 1.22 03 Dec 1998 19:10:00 KHZ
+ Task #58766# Unicode-Import (2)
+
+ Rev 1.20 30 Nov 1998 17:46:52 JP
+ Task #59822#: OLE-Objecte importieren
+
+ Rev 1.21 02 Dec 1998 15:34:32 JP
+ Task #60063#: Kommentare als PostIts einlesen
+
+ Rev 1.20 30 Nov 1998 17:46:52 JP
+ Task #59822#: OLE-Objecte importieren
+
+ Rev 1.19 30 Nov 1998 17:30:36 KHZ
+ Task #54828# Unicode-Import
+
+ Rev 1.18 03 Nov 1998 18:29:52 KHZ
+ Task #57243# Performance-Gewinn durch Vermeiden ueberfluessiger WW8GetSprmId()
+
+ Rev 1.17 02 Nov 1998 17:58:32 KHZ
+ Task #57017# Textmarken-Namen als UNICODE-Strings
+
+ Rev 1.16 16 Oct 1998 16:12:34 KHZ
+ Task #53520# ueberpruefe Feld DRUCKDATUM in DocInfo anhand von WW-internem Feld
+
+ Rev 1.15 22 Sep 1998 17:40:22 KHZ
+ Bug #56310# Kopf-/Fusszeilen in Unicode-Dokumenten jetzt korrekt
+
+ Rev 1.14 03 Sep 1998 22:15:40 KHZ
+ Task #55189# Textboxen
+
+ Rev 1.13 11 Aug 1998 12:25:16 KHZ
+ Task #52607# Optimierung in AdjustEnds(), GetNewSprms(), GetNoNewSprms()
+
+ Rev 1.12 30 Jul 1998 00:02:54 KHZ
+ Task #53614# Grafiken, die NICHT ueber dem Text liegen (MSDFF-Quick-Hack)
+
+ Rev 1.11 28 Jul 1998 11:05:46 KHZ
+ Task #52607# nummerierte Listen (Teil 1)
+
+ Rev 1.10 22 Jul 1998 15:39:32 KHZ
+ Task #52607#
+
+ Rev 1.9 22 Jul 1998 15:33:28 KHZ
+ Task #52607#
+
+ Rev 1.8 21 Jul 1998 14:52:30 KHZ
+ Task #52607# (WW 97 Import)
+
+ Rev 1.7 21 Jul 1998 12:32:54 KHZ
+ als MSDrawingObject eingebettete Grafik (Teil 1)
+
+ Rev 1.6 09 Jul 1998 20:14:56 KHZ
+ Tabellen: verbundene Zellen und Zellen-Hintergrundfarbe jetzt Ok.
+
+ Rev 1.5 30 Jun 1998 21:33:22 KHZ
+ Header/Footer/Footnotes weitgehend ok
+
+ Rev 1.4 26 Jun 1998 20:50:20 KHZ
+ Absatz-Attribute jetzt weitestgehend ok
+
+ Rev 1.3 23 Jun 1998 20:49:24 KHZ
+ verarbeitet jetzt auch mehrere FKPs
+
+ Rev 1.2 23 Jun 1998 11:24:20 KHZ
+ Zwischenstand: die meisten Zeichenattribute Ok!
+
+ Rev 1.1 16 Jun 1998 18:37:14 KHZ
+ DaSi-Stand
+
+ Rev 1.0 16 Jun 1998 11:12:10 KHZ
+ Initial revision.
+
+ Rev 1.1 10 Jun 1998 17:22:34 KHZ
+ Zwischenstand-Sicherung Dumper
+
+ Rev 1.0 27 May 1998 15:29:16 KHZ
+ Initial revision.
+
+
+*************************************************************************/
+
+#endif
+
diff --git a/sw/source/filter/ww8/ww8struc.hxx b/sw/source/filter/ww8/ww8struc.hxx
new file mode 100644
index 000000000000..37af59643f92
--- /dev/null
+++ b/sw/source/filter/ww8/ww8struc.hxx
@@ -0,0 +1,930 @@
+/*************************************************************************
+ *
+ * $RCSfile: ww8struc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WW8STRUC_HXX
+#define _WW8STRUC_HXX
+
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+
+// max. Anzahl der Listen-Level in WW8: 1..9
+#define nWW8MaxListLevel 9
+
+
+inline BYTE Get_Byte( BYTE *& p )
+ { BYTE n = SVBT8ToByte( *(SVBT8*)p ); p += 1; return n; }
+
+inline short Get_Short( BYTE *& p )
+ { short n = SVBT16ToShort( *(SVBT16*)p ); p += 2; return n; }
+inline USHORT Get_UShort( BYTE *& p )
+ { USHORT n = SVBT16ToShort( *(SVBT16*)p ); p += 2; return n; }
+
+inline long Get_Long( BYTE *& p )
+ { long n = SVBT32ToLong( *(SVBT32*)p ); p += 4; return n; }
+inline ULONG Get_ULong( BYTE *& p )
+ { ULONG n = SVBT32ToLong( *(SVBT32*)p ); p += 4; return n; }
+
+inline void Set_UInt8( BYTE *& p, UINT8 n )
+ { ByteToSVBT8( n, *(SVBT8*)p ); p+= 1; }
+
+inline void Set_UInt16( BYTE *& p, UINT16 n )
+ { ShortToSVBT16( n, *(SVBT16*)p ); p+= 2; }
+
+inline void Set_UInt32( BYTE *& p, UINT32 n )
+ { LongToSVBT32( n, *(SVBT32*)p ); p+= 4; }
+
+
+#if defined __BIGENDIAN || __ALIGNMENT4 > 2 || defined UNX
+#define __WW8_NEEDS_COPY
+#else
+#if defined WNT || defined WIN || defined OS2
+#define __WW8_NEEDS_PACK
+#pragma pack(2)
+#endif
+#endif
+
+typedef INT16 WW8_PN;
+typedef INT32 WW8_FC;
+typedef INT32 WW8_CP;
+
+// STD: STyle Definition
+// The STD contains the entire definition of a style.
+// It has two parts, a fixed-length base (cbSTDBase bytes long)
+// and a variable length remainder holding the name, and the upx and upe
+// arrays (a upx and upe for each type stored in the style, std.cupx)
+// Note that new fields can be added to the BASE of the STD without
+// invalidating the file format, because the STSHI contains the length
+// that is stored in the file. When reading STDs from an older version,
+// new fields will be zero.
+struct WW8_STD
+{
+ // Base part of STD:
+ UINT16 sti : 12; // invariant style identifier
+ UINT16 fScratch : 1; // spare field for any temporary use,
+ // always reset back to zero!
+ UINT16 fInvalHeight : 1; // PHEs of all text with this style are wrong
+ UINT16 fHasUpe : 1; // UPEs have been generated
+ UINT16 fMassCopy : 1; // std has been mass-copied; if unused at
+ // save time, style should be deleted
+ UINT16 sgc : 4; // style type code
+ UINT16 istdBase : 12; // base style
+ UINT16 cupx : 4; // # of UPXs (and UPEs)
+ UINT16 istdNext : 12; // next style
+ UINT16 bchUpe; // offset to end of upx's, start of upe's
+ //-------- jetzt neu:
+ // ab Ver8 gibts zwei Felder mehr:
+ UINT16 fAutoRedef : 1; /* auto redefine style when appropriate */
+ UINT16 fHidden : 1; /* hidden from UI? */
+ UINT16 : 14; /* unused bits */
+
+ // Variable length part of STD:
+ // UINT8 stzName[2]; /* sub-names are separated by chDelimStyle
+ // char grupx[];
+ // the UPEs are not stored on the file; they are a cache of the based-on
+ // chain
+ // char grupe[];
+};
+
+/*
+ Basis zum Einlesen UND zum Arbeiten (wird jeweils unter
+ schiedlich beerbt)
+*/
+struct WW8_FFN_BASE // Font Descriptor
+{
+ // ab Ver6
+ BYTE cbFfnM1; // 0x0 total length of FFN - 1.
+
+ BYTE prg: 2; // 0x1:03 pitch request
+ BYTE fTrueType : 1; // 0x1:04 when 1, font is a TrueType font
+ // 0x1:08 reserved
+ BYTE ff : 3; // 0x1:70 font family id
+ // 0x1:80 reserved
+
+ short wWeight; // 0x2 base weight of font
+ BYTE chs; // 0x4 character set identifier
+ BYTE ibszAlt; // 0x5 index into ffn.szFfn to the name of the alternate font
+};
+
+/*
+ Hiermit arbeiten wir im Parser (und Dumper)
+*/
+struct WW8_FFN : public WW8_FFN_BASE
+{
+ // ab Ver8 als Unicode
+ UniString sFontname;// 0x6 bzw. 0x40 ab Ver8 zero terminated string that
+ // records name of font.
+ // Maximal size of szFfn is 65 characters.
+ // Vorsicht: Dieses Array kann auch kleiner sein!!!
+ // Possibly followed by a second sz which records the
+ // name of an alternate font to use if the first named
+ // font does not exist on this system.
+};
+
+
+
+struct WW8_BRCVer6 // alter Border Code
+{
+ SVBT16 aBits1;
+// UINT16 dxpLineWidth : 3;// 0007 When dxpLineWidth is 0, 1, 2, 3, 4, or 5, this field is the width of
+ // a single line of border in units of 0.75 points
+ // Must be nonzero when brcType is nonzero.
+ // 6 == dotted, 7 == dashed.
+// UINT16 brcType : 2; // 0018 border type code: 0 == none, 1 == single, 2 == thick, 3 == double
+// UINT16 fShadow : 1; // 0020 when 1, border is drawn with shadow. Must be 0 when BRC is a substructure of the TC
+// UINT16 ico : 5; // 07C0 color code (see chp.ico)
+// UINT16 dxpSpace : 5; // F800 width of space to maintain between border and text within border.
+ // Must be 0 when BRC is a substructure of the TC. Stored in points for Windows.
+};
+
+struct WW8_BRC : public WW8_BRCVer6 // Border Code
+{
+ SVBT16 aBits2;
+// UINT16 dxpLineWidth : 3;// 0007 When dxpLineWidth is 0, 1, 2, 3, 4, or 5, this field is the width of
+ // a single line of border in units of 0.75 points
+ // Must be nonzero when brcType is nonzero.
+ // 6 == dotted, 7 == dashed.
+// UINT16 brcType : 2; // 0018 border type code: 0 == none, 1 == single, 2 == thick, 3 == double
+// UINT16 fShadow : 1; // 0020 when 1, border is drawn with shadow. Must be 0 when BRC is a substructure of the TC
+// UINT16 ico : 5; // 07C0 color code (see chp.ico)
+// UINT16 dxpSpace : 5; // F800 width of space to maintain between border and text within border.
+ // Must be 0 when BRC is a substructure of the TC. Stored in points for Windows.
+};
+
+typedef WW8_BRC WW8_BRC5[5]; // 5 * Border Code
+
+#define WW8_TOP 0
+#define WW8_LEFT 1
+#define WW8_BOT 2
+#define WW8_RIGHT 3
+#define WW8_BETW 4
+
+
+
+
+
+struct WW8_BordersSO // fuer StarOffice-Border Code
+{
+ USHORT Out;
+ USHORT In;
+ USHORT Dist;
+};
+
+
+/*
+// Linien-Defaults in Twips: fruehere Writer-Defaults,
+// siehe auch <svx/boxitem.hxx>
+#define DEF_LINE_WIDTH_0 1
+#define DEF_LINE_WIDTH_1 20
+#define DEF_LINE_WIDTH_2 50
+#define DEF_LINE_WIDTH_3 80
+#define DEF_LINE_WIDTH_4 100
+
+#define DEF_MAX_LINE_WIDHT DEF_LINE_WIDTH_4
+#define DEF_MAX_LINE_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE0_OUT DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE0_IN DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE0_DIST DEF_LINE_WIDTH_1
+
+#define DEF_DOUBLE_LINE1_OUT DEF_LINE_WIDTH_1
+#define DEF_DOUBLE_LINE1_IN DEF_LINE_WIDTH_1
+#define DEF_DOUBLE_LINE1_DIST DEF_LINE_WIDTH_1
+
+#define DEF_DOUBLE_LINE2_OUT DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE2_IN DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE2_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE3_OUT DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE3_IN DEF_LINE_WIDTH_1
+#define DEF_DOUBLE_LINE3_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE4_OUT DEF_LINE_WIDTH_1
+#define DEF_DOUBLE_LINE4_IN DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE4_DIST DEF_LINE_WIDTH_1
+
+#define DEF_DOUBLE_LINE5_OUT DEF_LINE_WIDTH_3
+#define DEF_DOUBLE_LINE5_IN DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE5_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE6_OUT DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE6_IN DEF_LINE_WIDTH_3
+#define DEF_DOUBLE_LINE6_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE7_OUT DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE7_IN DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE7_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE8_OUT DEF_LINE_WIDTH_1
+#define DEF_DOUBLE_LINE8_IN DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE8_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE9_OUT DEF_LINE_WIDTH_2
+#define DEF_DOUBLE_LINE9_IN DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE9_DIST DEF_LINE_WIDTH_2
+
+#define DEF_DOUBLE_LINE10_OUT DEF_LINE_WIDTH_3
+#define DEF_DOUBLE_LINE10_IN DEF_LINE_WIDTH_0
+#define DEF_DOUBLE_LINE10_DIST DEF_LINE_WIDTH_2
+*/
+// Deklarationen gemaess BOXITEM.HXX
+#define WW8_DECL_LINETAB_ARRAY \
+ static WW8_BordersSO __READONLY_DATA nLineTabVer8[] = \
+ { \
+/* 0*/ { DEF_LINE_WIDTH_0, 0, 0 }, \
+/* 1*/ { DEF_LINE_WIDTH_1, 0, 0 }, \
+/* 2*/ { DEF_LINE_WIDTH_2, 0, 0 }, \
+/* 3*/ { DEF_LINE_WIDTH_3, 0, 0 }, \
+/* 4*/ { DEF_LINE_WIDTH_4, 0, 0 }, \
+/* 5*/ { DEF_DOUBLE_LINE0_OUT, DEF_DOUBLE_LINE0_IN, DEF_DOUBLE_LINE0_DIST },\
+/* 6*/ { DEF_DOUBLE_LINE1_OUT, DEF_DOUBLE_LINE1_IN, DEF_DOUBLE_LINE1_DIST },\
+/* 7*/ { DEF_DOUBLE_LINE2_OUT, DEF_DOUBLE_LINE2_IN, DEF_DOUBLE_LINE2_DIST },\
+/* 8*/ { DEF_DOUBLE_LINE3_OUT, DEF_DOUBLE_LINE3_IN, DEF_DOUBLE_LINE3_DIST },\
+/* 9*/ { DEF_DOUBLE_LINE4_OUT, DEF_DOUBLE_LINE4_IN, DEF_DOUBLE_LINE4_DIST },\
+/*10*/ { DEF_DOUBLE_LINE5_OUT, DEF_DOUBLE_LINE5_IN, DEF_DOUBLE_LINE5_DIST },\
+/*11*/ { DEF_DOUBLE_LINE6_OUT, DEF_DOUBLE_LINE6_IN, DEF_DOUBLE_LINE6_DIST },\
+/*12*/ { DEF_DOUBLE_LINE7_OUT, DEF_DOUBLE_LINE7_IN, DEF_DOUBLE_LINE7_DIST },\
+/*13*/ { DEF_DOUBLE_LINE8_OUT, DEF_DOUBLE_LINE8_IN, DEF_DOUBLE_LINE8_DIST },\
+/*14*/ { DEF_DOUBLE_LINE9_OUT, DEF_DOUBLE_LINE9_IN, DEF_DOUBLE_LINE9_DIST },\
+/*15*/ { DEF_DOUBLE_LINE10_OUT,DEF_DOUBLE_LINE10_IN,DEF_DOUBLE_LINE10_DIST} \
+ };
+
+#define WW8_DECL_LINETAB_OFS_DOUBLE 5 // Beginn des DOUBLE_LINE Abschnitts in meiner Liste
+
+
+
+
+struct WW8_XCHAR // Hilfs-Konstrukt fuer WW8_DOPTYPOGRAPHY
+{
+ sal_Char A;
+ sal_Char B;
+};
+
+struct WW8_DOPTYPOGRAPHY
+{ /*
+ Document Typography Info (DOPTYPOGRAPHY)
+ These options are Far East only, and are accessible
+ through the Typography tab of the Tools/Options dialog.
+ */
+
+
+
+ /* a c h t u n g : es duerfen keine solchen Bitfelder ueber einen eingelesenes Byte-Array
+ gelegt werden!!
+ stattdessen ist ein aBits1 darueber zu legen, das mit & auszulesen ist
+ GRUND: Compiler auf Intel und Sparc sortieren die Bits unterschiedlich
+ */
+
+
+
+ short fKerningPunct : 1; // true if we're kerning punctuation
+ short iJustification : 2; // Kinsoku method of justification:
+ // 0 = always expand
+ // 1 = compress punctuation
+ // 2 = compress punctuation and kana.
+ short iLevelOfKinsoku: 2; // Level of Kinsoku:
+ // 0 = Level 1
+ // 1 = Level 2
+ // 2 = Custom
+ short f2on1 : 1; // 2-page-on-1 feature is turned on.
+ short :10; // reserved
+ short cchFollowingPunct; // length of rgxchFPunct
+ short cchLeadingPunct; // length of rgxchLPunct
+
+ WW8_XCHAR rgxchFPunct[101]; // array of characters that should
+ // never appear at the start of a line
+ WW8_XCHAR rgxchLPunct[51]; // array of characters that should
+ // never appear at the end of a line
+};
+
+struct WW8_DOGRID
+{
+ short xaGrid; // x-coord of the upper left-hand corner of the grid
+ short yaGrid; // y-coord of the upper left-hand corner of the grid
+ short dxaGrid; // width of each grid square
+ short dyaGrid; // height of each grid square
+
+
+
+ /* a c h t u n g : es duerfen keine solchen Bitfelder ueber einen eingelesenes Byte-Array
+ gelegt werden!!
+ stattdessen ist ein aBits1 darueber zu legen, das mit & auszulesen ist
+ GRUND: Compiler auf Intel und Sparc sortieren die Bits unterschiedlich
+ */
+
+
+
+ short dyGridDisplay:7; // the number of grid squares (in the y direction)
+ // between each gridline drawn on the screen. 0 means
+ // don't display any gridlines in the y direction.
+ short fTurnItOff :1; // suppress display of gridlines
+ short dxGridDisplay:7; // the number of grid squares (in the x direction)
+ // between each gridline drawn on the screen. 0 means
+ // don't display any gridlines in the y direction.
+ short fFollowMargins:1; // if true, the grid will start at the left and top
+ // margins and ignore xaGrid and yaGrid.
+};
+
+struct WW8_PIC
+{
+ INT32 lcb; // 0x0 number of bytes in the PIC structure plus size of following picture data which may be a Window's metafile, a bitmap, or the filename of a TIFF file.
+ UINT16 cbHeader; // 0x4 number of bytes in the PIC (to allow for future expansion).
+ struct {
+ INT16 mm; // 0x6 int
+ INT16 xExt; // 0x8 int
+ INT16 yExt; // 0xa int
+ INT16 hMF; // 0xc int
+ }MFP;
+// BYTE bm[14]; // 0xe BITMAP(14 bytes) Window's bitmap structure when PIC describes a BITMAP.
+ BYTE rcWinMF[14]; // 0xe rc (rectangle - 8 bytes) rect for window origin
+ // and extents when metafile is stored -- ignored if 0
+ INT16 dxaGoal; // 0x1c horizontal measurement in twips of the rectangle the picture should be imaged within.
+ INT16 dyaGoal; // 0x1e vertical measurement in twips of the rectangle the picture should be imaged within.
+ UINT16 mx; // 0x20 horizontal scaling factor supplied by user in .1% units.
+ UINT16 my; // 0x22 vertical scaling factor supplied by user in .1% units.
+ INT16 dxaCropLeft; // 0x24 the amount the picture has been cropped on the left in twips.
+ INT16 dyaCropTop; // 0x26 the amount the picture has been cropped on the top in twips.
+ INT16 dxaCropRight; // 0x28 the amount the picture has been cropped on the right in twips.
+ INT16 dyaCropBottom;// 0x2a the amount the picture has been cropped on the bottom in twips.
+ INT16 brcl : 4; // 000F Obsolete, superseded by brcTop, etc. In
+ INT16 fFrameEmpty : 1; // 0010 picture consists of a single frame
+ INT16 fBitmap : 1; // 0020 ==1, when picture is just a bitmap
+ INT16 fDrawHatch : 1; // 0040 ==1, when picture is an active OLE object
+ INT16 fError : 1; // 0080 ==1, when picture is just an error message
+ INT16 bpp : 8; // FF00 bits per pixel, 0 = unknown
+ WW8_BRC rgbrc[4];
+// BRC brcTop; // 0x2e specification for border above picture
+// BRC brcLeft; // 0x30 specification for border to the left
+// BRC brcBottom; // 0x32 specification for border below picture
+// BRC brcRight; // 0x34 specification for border to the right
+ INT16 dxaOrigin; // 0x36 horizontal offset of hand annotation origin
+ INT16 dyaOrigin; // 0x38 vertical offset of hand annotation origin
+// BYTE rgb[]; // 0x3a variable array of bytes containing Window's metafile, bitmap or TIFF file filename.
+};
+
+struct WW8_PIC_SHADOW
+{
+ SVBT32 lcb; // 0x0 number of bytes in the PIC structure plus size of following picture data which may be a Window's metafile, a bitmap, or the filename of a TIFF file.
+ SVBT16 cbHeader; // 0x4 number of bytes in the PIC (to allow for future expansion).
+ struct {
+ SVBT16 mm; // 0x6 int
+ SVBT16 xExt; // 0x8 int
+ SVBT16 yExt; // 0xa int
+ SVBT16 hMF; // 0xc int
+ }MFP;
+// SVBT8 bm[14]; // 0xe BITMAP(14 bytes) Window's bitmap structure when PIC describes a BITMAP.
+ SVBT8 rcWinMF[14]; // 0xe rc (rectangle - 8 bytes) rect for window origin
+ // and extents when metafile is stored -- ignored if 0
+ SVBT16 dxaGoal; // 0x1c horizontal measurement in twips of the rectangle the picture should be imaged within.
+ SVBT16 dyaGoal; // 0x1e vertical measurement in twips of the rectangle the picture should be imaged within.
+ SVBT16 mx; // 0x20 horizontal scaling factor supplied by user in .1% units.
+ SVBT16 my; // 0x22 vertical scaling factor supplied by user in .1% units.
+ SVBT16 dxaCropLeft; // 0x24 the amount the picture has been cropped on the left in twips.
+ SVBT16 dyaCropTop; // 0x26 the amount the picture has been cropped on the top in twips.
+ SVBT16 dxaCropRight; // 0x28 the amount the picture has been cropped on the right in twips.
+ SVBT16 dyaCropBottom;// 0x2a the amount the picture has been cropped on the bottom in twips.
+ SVBT8 aBits1; //0x2c
+ SVBT8 aBits2;
+ WW8_BRC rgbrc[4];
+// BRC brcTop; // 0x2e specification for border above picture
+// BRC brcLeft; // 0x30 specification for border to the left
+// BRC brcBottom; // 0x32 specification for border below picture
+// BRC brcRight; // 0x34 specification for border to the right
+ SVBT16 dxaOrigin; // 0x36 horizontal offset of hand annotation origin
+ SVBT16 dyaOrigin; // 0x38 vertical offset of hand annotation origin
+// SVBT8 rgb[]; // 0x3a variable array of bytes containing Window's metafile, bitmap or TIFF file filename.
+};
+
+
+struct WW8_TBD
+{
+ SVBT8 aBits1;
+// BYTE jc : 3; // 0x07 justification code: 0=left tab, 1=centered tab, 2=right tab, 3=decimal tab, 4=bar
+// BYTE tlc : 3; // 0x38 tab leader code: 0=no leader, 1=dotted leader,
+ // 2=hyphenated leader, 3=single line leader, 4=heavy line leader
+// * int :2 C0 reserved
+};
+
+struct WW8_TCell // hiermit wird weitergearbeitet (entspricht weitestgehend dem Ver8-Format)
+{
+ BOOL bFirstMerged : 1;// 0001 set to 1 when cell is first cell of a range of cells that have been merged.
+ BOOL bMerged : 1;// 0002 set to 1 when cell has been merged with preceding cell.
+ BOOL bVertical : 1;// set to 1 when cell has vertical text flow
+ BOOL bBackward : 1;// for a vertical table cell, text flow is bottom to top when 1 and is bottom to top when 0.
+ BOOL bRotateFont : 1;// set to 1 when cell has rotated characters (i.e. uses @font)
+ BOOL bVertMerge : 1;// set to 1 when cell is vertically merged with the cell(s) above and/or below. When cells are vertically merged, the display area of the merged cells are consolidated. The consolidated area is used to display the contents of the first vertically merged cell (the cell with fVertRestart set to 1), and all other vertically merged cells (those with fVertRestart set to 0) must be empty. Cells can only be merged vertically if their left and right boundaries are (nearly) identical (i.e. if corresponding entries in rgdxaCenter of the table rows differ by at most 3).
+ BOOL bVertRestart : 1;// set to 1 when the cell is the first of a set of vertically merged cells. The contents of a cell with fVertStart set to 1 are displayed in the consolidated area belonging to the entire set of vertically merged cells. Vertically merged cells with fVertRestart set to 0 must be empty.
+ BYTE nVertAlign : 2;// specifies the alignment of the cell contents relative to text flow (e.g. in a cell with bottom to top text flow and bottom vertical alignment, the text is shifted horizontally to match the cell's right boundary):
+ // 0 top
+ // 1 center
+ // 2 bottom
+ UINT16 fUnused : 7;// reserved - nicht loeschen: macht das UINT16 voll !!
+
+ WW8_BRC rgbrc[4]; // border codes
+//notational convenience for referring to brcTop, brcLeft, etc fields.
+// BRC brcTop; // specification of the top border of a table cell
+// BRC brcLeft; // specification of left border of table row
+// BRC brcBottom; // specification of bottom border of table row
+// BRC brcRight; // specification of right border of table row.
+};
+// cbTC (count of bytes of a TC) is 18(decimal), 12(hex).
+
+
+struct WW8_TCellVer6 // wird aus der Datei gelesen
+{
+ SVBT8 aBits1Ver6;
+ SVBT8 aBits2Ver6;
+// UINT16 fFirstMerged : 1;// 0001 set to 1 when cell is first cell of a range of cells that have been merged.
+// UINT16 fMerged : 1; // 0002 set to 1 when cell has been merged with preceding cell.
+// UINT16 fUnused : 14; // FFFC reserved
+ WW8_BRCVer6 rgbrcVer6[4];
+// notational convenience for referring to brcTop, brcLeft, etc fields:
+// BRC brcTop; // specification of the top border of a table cell
+// BRC brcLeft; // specification of left border of table row
+// BRC brcBottom; // specification of bottom border of table row
+// BRC brcRight; // specification of right border of table row.
+};
+// cbTC (count of bytes of a TC) is 10(decimal), A(hex).
+
+struct WW8_TCellVer8 // wird aus der Datei gelesen
+{
+ SVBT16 aBits1Ver8; // Dokumentation siehe oben unter WW8_TCell
+ SVBT16 aUnused; // reserve
+ WW8_BRC rgbrcVer8[4]; // Dokumentation siehe oben unter WW8_TCell
+};
+// cbTC (count of bytes of a TC) is 20(decimal), 14(hex).
+
+
+struct WW8_SHD // struct SHD fehlt in der Beschreibung
+{
+private:
+ UINT16 aBits;
+// UINT16 nFore : 5; // 0x001f ForegroundColor
+// UINT16 nBack : 5; // 0x03e0 BackgroundColor
+// UINT16 nStyle : 5; // 0x7c00 Percentage and Style
+// UINT16 nDontKnow : 1; // 0x8000 ??? ab Ver8: ebenfalls fuer Style
+
+public:
+ WW8_SHD(){ aBits = 0; }
+
+ BYTE GetFore() const { return (BYTE)( aBits & 0x1f); }
+ BYTE GetBack() const { return (BYTE)((aBits >> 5 ) & 0x1f); }
+ BYTE GetStyle(BOOL bVer67) const { return (BYTE)((aBits >> 10) & ( bVer67?0x1f:0x3f ) ); }
+
+ UINT16 GetValue() const { return aBits; }
+
+ void SetValue( UINT16 nVal ){ aBits = nVal; }
+ void SetWWValue( SVBT16 nVal ){ aBits = (UINT16)SVBT16ToShort( nVal ); }
+
+ void SetFore( BYTE nVal ){ aBits = (aBits & 0xffe0) | (nVal & 0x1f); }
+ void SetBack( BYTE nVal ){ aBits = (aBits & 0xfc1f) | ((nVal & 0x1f)<<5); }
+ void SetStyle( BOOL bVer67, BYTE nVal ){
+ aBits = (aBits & ( bVer67?0x83ff:0x03ff ) )
+ | ((nVal & ( bVer67?0x1f:0x2f ))<<10); }
+};
+
+
+struct WW8_ANLV
+{
+ SVBT8 nfc; // 0 number format code, 0=Arabic, 1=Upper case Roman, 2=Lower case Roman
+ // 3=Upper case Letter, 4=Lower case letter, 5=Ordinal
+ SVBT8 cbTextBefore; // 1 offset into anld.rgch limit of prefix text
+ SVBT8 cbTextAfter; // 2
+ SVBT8 aBits1;
+// BYTE jc : 2; // 3 : 0x03 justification code, 0=left, 1=center, 2=right, 3=left and right justify
+// BYTE fPrev : 1; // 0x04 when ==1, include previous levels
+// BYTE fHang : 1; // 0x08 when ==1, number will be displayed using a hanging indent
+// BYTE fSetBold : 1; // 0x10 when ==1, boldness of number will be determined by anld.fBold.
+// BYTE fSetItalic : 1;// 0x20 when ==1, italicness of number will be determined by anld.fItalic
+// BYTE fSetSmallCaps : 1;// 0x40 when ==1, anld.fSmallCaps will determine whether number will be displayed in small caps or not.
+// BYTE fSetCaps : 1; // 0x80 when ==1, anld.fCaps will determine whether number will be displayed capitalized or not
+ SVBT8 aBits2;
+// BYTE fSetStrike : 1;// 4 : 0x01 when ==1, anld.fStrike will determine whether the number will be displayed using strikethrough or not.
+// BYTE fSetKul : 1; // 0x02 when ==1, anld.kul will determine the underlining state of the autonumber.
+// BYTE fPrevSpace : 1;// 0x04 when ==1, autonumber will be displayed with a single prefixing space character
+// BYTE fBold : 1; // 0x08 determines boldness of autonumber when anld.fSetBold == 1.
+// BYTE fItalic : 1; // 0x10 determines italicness of autonumber when anld.fSetItalic == 1.
+// BYTE fSmallCaps : 1;// 0x20 determines whether autonumber will be displayed using small caps when anld.fSetSmallCaps == 1.
+// BYTE fCaps : 1; // 0x40 determines whether autonumber will be displayed using caps when anld.fSetCaps == 1.
+// BYTE fStrike : 1; // 0x80 determines whether autonumber will be displayed using caps when anld.fSetStrike == 1.
+ SVBT8 aBits3;
+// BYTE kul : 3; // 5 : 0x07 determines whether autonumber will be displayed with underlining when anld.fSetKul == 1.
+// BYTE ico : 5; // 0xF1 color of autonumber
+ SVBT16 ftc; // 6 font code of autonumber
+ SVBT16 hps; // 8 font half point size (or 0=auto)
+ SVBT16 iStartAt; // 0x0a starting value (0 to 65535)
+ SVBT16 dxaIndent; // 0x0c *short?* *USHORT?* width of prefix text (same as indent)
+ SVBT16 dxaSpace; // 0x0e minimum space between number and paragraph
+};
+// *cbANLV (count of bytes of ANLV) is 16 (decimal), 10(hex).
+
+struct WW8_ANLD
+{
+ WW8_ANLV eAnlv; // 0
+ SVBT8 fNumber1; // 0x10 number only 1 item per table cell
+ SVBT8 fNumberAcross; // 0x11 number across cells in table rows(instead of down)
+ SVBT8 fRestartHdn; // 0x12 restart heading number on section boundary
+ SVBT8 fSpareX; // 0x13 unused( should be 0)
+ BYTE rgchAnld[32]; // 0x14 characters displayed before/after autonumber
+};
+
+
+struct WW8_OLST
+{
+ WW8_ANLV rganlv[9]; // 0 an array of 9 ANLV structures (heading levels)
+ SVBT8 fRestartHdr; // 0x90 when ==1, restart heading on section break
+ SVBT8 fSpareOlst2; // 0x91 reserved
+ SVBT8 fSpareOlst3; // 0x92 reserved
+ SVBT8 fSpareOlst4; // 0x93 reserved
+ BYTE rgch[64]; // 0x94 array of 64 chars text before/after number
+};
+// cbOLST is 212(decimal), D4(hex).
+
+struct WW8_FDOA
+{
+ SVBT32 fc; // 0 FC pointing to drawing object data
+ SVBT16 ctxbx; // 4 count of textboxes in the drawing object
+};
+
+struct WW8_DO
+{
+ SVBT16 dok; // 0 Drawn Object Kind, currently this is always 0
+ SVBT16 cb; // 2 size (count of bytes) of the entire DO
+ SVBT8 bx; // 4 x position relative to anchor CP
+ SVBT8 by; // 5 y position relative to anchor CP
+ SVBT16 dhgt; // 6 height of DO
+ SVBT16 aBits1;
+// UINT16 fAnchorLock : 1; // 8 1 if the DO anchor is locked
+// BYTE[] rgdp; // 0xa variable length array of drawing primitives
+};
+
+struct WW8_DPHEAD
+{
+ SVBT16 dpk; // 0 Drawn Primitive Kind REVIEW davebu
+ // 0=start of grouping, 1=line, 2=textbox, 3=rectangle,
+ // 4=arc, 5=elipse, 6=polyline, 7=callout textbox,
+ // 8=end of grouping, 9=sample primitve holding default values
+ SVBT16 cb; // 2 size (count of bytes) of this DP
+ SVBT16 xa; // 4 These 2 points describe the rectangle
+ SVBT16 ya; // 6 enclosing this DP relative to the origin of
+ SVBT16 dxa; // 8 the DO
+ SVBT16 dya; // 0xa
+};
+
+
+struct WW8_DP_LINETYPE
+{
+ SVBT32 lnpc; // LiNe Property Color -- RGB color value
+ SVBT16 lnpw; // line property weight in twips
+ SVBT16 lnps; // line property style : 0=Solid, 1=Dashed
+ // 2=Dotted, 3=Dash Dot, 4=Dash Dot Dot, 5=Hollow
+};
+
+struct WW8_DP_SHADOW // Schattierung!
+{
+ SVBT16 shdwpi; // Shadow Property Intensity
+ SVBT16 xaOffset; // x offset of shadow
+ SVBT16 yaOffset; // y offset of shadow
+};
+
+struct WW8_DP_FILL
+{
+ SVBT32 dlpcFg; // FiLl Property Color ForeGround -- RGB color value
+ SVBT32 dlpcBg; // Property Color BackGround -- RGB color value
+ SVBT16 flpp; // FiLl Property Pattern REVIEW davebu
+};
+
+struct WW8_DP_LINEEND
+{
+ SVBT16 aStartBits;
+// UINT16 eppsStart : 2; // Start EndPoint Property Style
+ // 0=None, 1=Hollow, 2=Filled
+// UINT16 eppwStart : 2; // Start EndPoint Property Weight
+// UINT16 epplStart : 2; // Start EndPoint Property length
+// UINT16 dummyStart : 10; // Alignment
+ SVBT16 aEndBits;
+// UINT16 eppsEnd : 2; // End EndPoint Property Style
+// UINT16 eppwEnd : 2; // End EndPoint Property Weight
+// UINT16 epplEnd : 2; // End EndPoint Property length
+// UINT16 dummyEnd : 10; // Alignment
+};
+
+struct WW8_DP_LINE
+{
+// WW8_DPHEAD dphead; // 0 Common header for a drawing primitive
+ SVBT16 xaStart; // starting point for line
+ SVBT16 yaStart; //
+ SVBT16 xaEnd; // ending point for line
+ SVBT16 yaEnd;
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_LINEEND aEpp;
+ WW8_DP_SHADOW aShd;
+};
+
+struct WW8_DP_TXTBOX
+{
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_FILL aFill;
+ WW8_DP_SHADOW aShd;
+ SVBT16 aBits1;
+// UINT16 fRoundCorners : 1; //0x24 0001 1 if the textbox has rounded corners
+// UINT16 zaShape : 15; // 0x24 000e REVIEW davebu
+ SVBT16 dzaInternalMargin; // 0x26 REVIEW davebu
+};
+
+struct WW8_DP_RECT
+{
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_FILL aFill;
+ WW8_DP_SHADOW aShd;
+ SVBT16 aBits1;
+// UINT16 fRoundCorners : 1; // 0x24 0001 1 if the textbox has rounded corners
+// UINT16 zaShape : 15; // 0x24 000e REVIEW davebu
+};
+
+struct WW8_DP_ARC
+{
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_FILL aFill;
+ WW8_DP_SHADOW aShd;
+ SVBT8 fLeft; // 0x24 00ff REVIEW davebu
+ SVBT8 fUp; // 0x24 ff00 REVIEW davebu
+// UINT16 fLeft : 8; // 0x24 00ff REVIEW davebu
+// UINT16 fUp : 8; // 0x24 ff00 REVIEW davebu
+};
+
+struct WW8_DP_ELIPSE
+{
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_FILL aFill;
+ WW8_DP_SHADOW aShd;
+};
+
+struct WW8_DP_POLYLINE
+{
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_FILL aFill;
+ WW8_DP_LINEEND aEpp;
+ WW8_DP_SHADOW aShd;
+ SVBT16 aBits1;
+// UINT16 fPolygon : 1; // 0x28 0001 1 if this is a polygon
+// UINT16 cpt : 15; // 0x28 00fe count of points
+// short xaFirst; // 0x2a These are the endpoints of the first line.
+// short yaFirst; // 0x2c
+// short xaEnd; // 0x2e
+// short yaEnd; // 0x30
+// short rgpta[]; // 0x32 An array of xa,ya pairs for the remaining points
+};
+
+struct WW8_DP_CALLOUT_TXTBOX
+{
+ SVBT16 flags; // 0x0c REVIEW davebu flags
+ SVBT16 dzaOffset; // 0x0e REVIEW davebu
+ SVBT16 dzaDescent; // 0x10 REVIEW davebu
+ SVBT16 dzaLength; // 0x12 REVIEW davebu
+ WW8_DPHEAD dpheadTxbx; // 0x14 DPHEAD for a textbox
+ WW8_DP_TXTBOX dptxbx; // 0x20 DP for a textbox
+ WW8_DPHEAD dpheadPolyLine; // 0x4c DPHEAD for a Polyline
+ WW8_DP_POLYLINE dpPolyLine; // 0x48 DP for a polyline
+};
+
+struct WW8_DP_DEFAULTS
+{
+ WW8_DP_LINETYPE aLnt;
+ WW8_DP_FILL aFill;
+ WW8_DP_LINEEND aEpp;
+ WW8_DP_SHADOW aShd;
+ SVBT16 dzaOffset; // 0x2a REVIEW davebu
+ SVBT16 dzaDescent; // 0x2c REVIEW davebu
+ SVBT16 dzaLength; // 0x2e REVIEW davebu
+
+ SVBT16 aBits3;
+// UINT16 fRoundCorners : 1; // 0x30 0001 1 if the textbox has rounded corners
+// UINT16 zaShape : 15; // 0x30 000fe REVIEW davebu
+ SVBT16 dzaInternalMargin; // 0x32 REVIEW davebu
+};
+
+
+struct WW8_PCD
+{
+ SVBT8 aBits1;
+// BYTE fNoParaLast : 1; // when 1, means that piece contains no end of paragraph marks.
+// BYTE fPaphNil : 1; // used internally by Word
+// BYTE fCopied : 1; // used internally by Word
+// * int :5
+ SVBT8 aBits2; // fn int:8, used internally by Word
+ SVBT32 fc; // file offset of beginning of piece. The size of the
+ // ithpiece can be determined by subtracting rgcp[i] of
+ // the containing plcfpcd from its rgcp[i+1].
+ SVBT16 prm; // PRM contains either a single sprm or else an index number
+ // of the grpprl which contains the sprms that modify the
+ // properties of the piece.
+};
+
+struct WW8_PHE_Base
+{
+ BYTE aBits1; //
+// 0 0 fSpare int :1 0001 reserved
+// fUnk int :1 0002 phe entry is invalid
+// when == 1
+// fDiffLines int :1 0004 when 1, total
+// height of paragraph is known but lines in
+// paragraph have different heights.
+// * int :5 00F8 reserved
+ BYTE nlMac; // when fDiffLines is 0 is number of lines in
+// // paragraph
+ SVBT16 dxaCol; // width of lines in paragraph
+ SVBT16 dyl;
+// 4 4 dylLine int when fDiffLines is 0,
+// is height of every line in paragraph.in pixels
+// 4 4 dylHeight uns when fDiffLines is 1,
+// is the total height in pixels of the paragraph
+};
+
+/*
+eigentlich muessten wir das jetzt in etwa *so* praezisieren:
+
+ struct WW8_PHE_Ver6 : public WW8_PHE_Base
+ {
+ // 6 Bytes gross
+ };
+ struct WW8_PHE_Ver6 : public WW8_PHE_Base
+ {
+ SVBT16 a;
+ SVBT16 b;
+ SVBT16 c; // 12 Byte gross
+ };
+*/
+
+// AnnoTation Refernce Descriptor (ATRD)
+struct WW8_ATRD // fuer die 8-Version
+{
+ SVBT16 xstUsrInitl[ 10 ]; // pascal-style String holding initials
+ // of annotation author
+ SVBT16 ibst; // index into GrpXstAtnOwners
+ SVBT16 ak; // not used
+ SVBT16 grfbmc; // not used
+ SVBT32 ITagBkmk; // when not -1, this tag identifies the
+ // annotation bookmark that locates the
+ // range of CPs in the main document which
+ // this annotation references.
+};
+
+struct WW67_ATRD // fuer die 6/7-Version
+{
+ sal_Char xstUsrInitl[ 10 ]; // pascal-style String holding initials
+ // of annotation author
+ SVBT16 ibst; // index into GrpXstAtnOwners
+ SVBT16 ak; // not used
+ SVBT16 grfbmc; // not used
+ SVBT32 ITagBkmk; // when not -1, this tag identifies the
+ // annotation bookmark that locates the
+ // range of CPs in the main document which
+ // this annotation references.
+};
+
+
+#ifdef __WW8_NEEDS_PACK
+#pragma pack()
+#endif
+
+/*************************************************************************
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/ww8/ww8struc.hxx,v 1.1.1.1 2000-09-18 17:14:59 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.20 2000/09/18 16:05:02 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.19 2000/05/12 07:54:23 khz
+ Changes for Unicode
+
+ Revision 1.18 2000/02/11 14:40:36 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.17 1999/11/19 14:48:49 mib
+ #70009#: export Solaris
+
+ Revision 1.16 1999/06/16 17:54:56 JP
+ Change interface of base class Writer, Export of W97 NumRules
+
+
+ Rev 1.15 16 Jun 1999 19:54:56 JP
+ Change interface of base class Writer, Export of W97 NumRules
+
+ Rev 1.14 19 May 1999 11:12:56 JP
+ WinWord97-ExportFilter
+
+ Rev 1.13 11 May 1999 17:15:24 KHZ
+ Task #66019# FontFamily: andere Bitreihenfolge auf Solaris beachten
+
+ Rev 1.12 15 Feb 1999 21:36:50 KHZ
+ Task #61381# Korrektur der Korrektur: jetzt include boxitem.hxx in ww8graf.cxx
+
+ Rev 1.11 15 Feb 1999 20:54:44 KHZ
+ Task #61381# Korrektur zur -r1.10: UEbernahme der defines statt der includes
+
+ Rev 1.10 15 Feb 1999 18:19:44 HR
+ <svx/eeitem.hxx> und <svx/boxitem.hxx> includen
+
+ Rev 1.9 12 Feb 1999 16:51:38 KHZ
+ Task #61381# Ersetzen von Sdr-Text-Objekten im Writer durch Rahmen (3)
+
+ Rev 1.8 03 Dec 1998 10:39:52 JP
+ Task #60063#: Kommentare als PostIts einlesen
+
+ Rev 1.7 02 Dec 1998 15:34:28 JP
+ Task #60063#: Kommentare als PostIts einlesen
+
+ Rev 1.6 23 Oct 1998 15:37:02 KHZ
+ Task #58199# jetzt kein GPF mehr bei nicht existenten Tabellenzellen :-)
+
+ Rev 1.5 30 Jul 1998 14:28:34 KHZ
+ Task #52607# Einrueckungen der Defines beseitigt
+
+ Rev 1.4 09 Jul 1998 20:14:58 KHZ
+ Tabellen: verbundene Zellen und Zellen-Hintergrundfarbe jetzt Ok.
+
+ Rev 1.3 03 Jul 1998 16:14:54 KHZ
+ ( Zwischenstand zur DaSi )
+
+ Rev 1.2 30 Jun 1998 21:33:18 KHZ
+ Header/Footer/Footnotes weitgehend ok
+
+ Rev 1.1 26 Jun 1998 20:50:10 KHZ
+ Absatz-Attribute jetzt weitestgehend ok
+
+ Rev 1.0 16 Jun 1998 10:57:08 KHZ
+ Initial revision.
+
+ Rev 1.1 10 Jun 1998 17:22:38 KHZ
+ Zwischenstand-Sicherung Dumper
+
+ Rev 1.0 27 May 1998 15:29:34 KHZ
+ Initial revision.
+
+*************************************************************************/
+
+#endif
diff --git a/sw/source/filter/xml/makefile.mk b/sw/source/filter/xml/makefile.mk
new file mode 100644
index 000000000000..1534f01d5af9
--- /dev/null
+++ b/sw/source/filter/xml/makefile.mk
@@ -0,0 +1,144 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sw
+TARGET=xml
+
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\filt_1st\filt_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+.IF "$(mydebug)" != ""
+CDEFS=$(CDEFS) -Dmydebug
+.ENDIF
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ swxml.cxx \
+ xmlimp.cxx \
+ wrtxml.cxx \
+ xmlexp.cxx \
+ xmlectxt.cxx \
+ xmltext.cxx \
+ xmltbli.cxx \
+ xmltble.cxx \
+ xmlfmt.cxx \
+ xmlfmte.cxx \
+ xmlmeta.cxx \
+ xmlnum.cxx \
+ xmlitemm.cxx \
+ xmlitemi.cxx \
+ xmliteme.cxx \
+ swxmlat.cxx \
+ hintlist.cxx \
+ xmlbrsh.cxx
+
+SLOFILES = \
+ $(SLO)$/swxml.obj \
+ $(SLO)$/xmlimp.obj \
+ $(SLO)$/wrtxml.obj \
+ $(SLO)$/xmlexp.obj \
+ $(SLO)$/xmlectxt.obj \
+ $(SLO)$/xmltext.obj \
+ $(SLO)$/xmltbli.obj \
+ $(SLO)$/xmltble.obj \
+ $(SLO)$/xmlfmt.obj \
+ $(SLO)$/xmlfmte.obj \
+ $(SLO)$/xmlmeta.obj \
+ $(SLO)$/xmlnum.obj \
+ $(SLO)$/xmlitemm.obj \
+ $(SLO)$/xmlitemi.obj \
+ $(SLO)$/xmliteme.obj \
+ $(SLO)$/swxmlat.obj \
+ $(SLO)$/hintlist.obj \
+ $(SLO)$/xmlbrsh.obj
+
+EXCEPTIONSFILES= \
+ $(SLO)$/swxml.obj \
+ $(SLO)$/xmlimp.obj \
+ $(SLO)$/wrtxml.obj \
+ $(SLO)$/xmlexp.obj \
+ $(SLO)$/xmlectxt.obj \
+ $(SLO)$/xmltext.obj \
+ $(SLO)$/xmltbli.obj \
+ $(SLO)$/xmltble.obj \
+ $(SLO)$/xmlfmt.obj \
+ $(SLO)$/xmlfmte.obj \
+ $(SLO)$/xmlmeta.obj \
+ $(SLO)$/xmlnum.obj \
+ $(SLO)$/xmlitemi.obj \
+ $(SLO)$/xmliteme.obj \
+ $(SLO)$/swxmlat.obj \
+ $(SLO)$/xmlbrsh.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/filter/xml/swxml.cxx b/sw/source/filter/xml/swxml.cxx
new file mode 100644
index 000000000000..d5f514b3ed32
--- /dev/null
+++ b/sw/source/filter/xml/swxml.cxx
@@ -0,0 +1,314 @@
+/*************************************************************************
+ *
+ * $RCSfile: swxml.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _RSCSFX_HXX
+#include <rsc/rscsfx.hxx>
+#endif
+
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+#ifndef _COM_SUN_STAR_XML_SAX_INPUTSOURCE_HPP_
+#include <com/sun/star/xml/sax/InputSource.hpp>
+#endif
+#ifndef _COM_SUN_STAR_XML_SAX_XPARSER_HPP_
+#include <com/sun/star/xml/sax/XParser.hpp>
+#endif
+
+#ifndef _SFXDOCFILE_HXX //autogen wg. SfxMedium
+#include <sfx2/docfile.hxx>
+#endif
+
+#ifndef _SWSWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _ERRHDL_HXX //autogen wg. ASSERT
+#include <errhdl.hxx>
+#endif
+#ifndef _FLTINI_HXX //autogen wg. XMLReader
+#include <fltini.hxx>
+#endif
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+#ifndef _DOCSH_HXX //autogen wg. SwDoc
+#include <docsh.hxx>
+#endif
+
+#ifndef _XMLIMP_HXX
+#include "xmlimp.hxx"
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::rtl;
+
+XMLReader::XMLReader()
+{
+}
+
+sal_uInt32 XMLReader::Read( SwDoc &rDoc, SwPaM &rPaM, const String & rName )
+{
+ Reference< lang::XMultiServiceFactory > xServiceFactory =
+ utl::getProcessServiceFactory();
+ ASSERT( xServiceFactory.is(),
+ "XMLReader::Read: got no service manager" );
+ if( !xServiceFactory.is() )
+ return ERR_SWG_READ_ERROR;
+
+ // Get model
+ SwDocShell *pDocSh = rDoc.GetDocShell();
+ ASSERT( pDocSh, "XMLReader::Read: got no doc shell" );
+ if( !pDocSh )
+ return ERR_SWG_READ_ERROR;
+
+ Reference< frame::XModel > xModel = pDocSh->GetModel();
+ ASSERT( xModel.is(),
+ "XMLReader::Read: got no model" );
+ if( !xModel.is() )
+ return ERR_SWG_READ_ERROR;
+
+ // Get data source ...
+ Reference< io::XActiveDataSource > xSource;
+ if( pMedium /* && pMedium->GetLoadEnvironment_Impl() */ )
+ {
+ // if there is a medium and if this medium has a load environment,
+ // we get an active data source from the medium.
+ xSource = pMedium->GetDataSource();
+ ASSERT( xSource.is(), "XMLReader:: 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.
+ Reference< XInterface > xFactory = xServiceFactory->createInstance(
+ OUString::createFromAscii("com.sun.star.frame.DataSourceFactory") );
+ if( xFactory.is() )
+ {
+ Reference< lang::XMultiServiceFactory > xMFactory( xFactory,
+ UNO_QUERY );
+ if( xMFactory.is() )
+ {
+ OUString sURL( rName );
+ Sequence< Any > aArgs(1);
+ Any* pArgs = aArgs.getArray();
+ *pArgs <<= sURL;
+
+ Reference< XInterface > xSrc =
+ xMFactory->createInstanceWithArguments( sURL, aArgs );
+ if( xSrc.is() )
+ {
+ Reference< io::XActiveDataSource > xTmp( xSrc, UNO_QUERY );
+ xSource = xTmp;
+ }
+ }
+ }
+ }
+
+ // get data source
+ ASSERT( xSource.is(), "XMLReader::Read: data source missing" );
+ if( !xSource.is() )
+ return ERR_SWG_READ_ERROR;
+
+ // get parser
+ Reference< XInterface > xXMLParser = xServiceFactory->createInstance(
+ OUString::createFromAscii("com.sun.star.xml.sax.Parser") );
+ ASSERT( xXMLParser.is(),
+ "XMLReader::Read: com.sun.star.xml.sax.Parser service missing" );
+ if( !xXMLParser.is() )
+ return ERR_SWG_READ_ERROR;
+
+ // get a pipe for connecting the data source to the parser
+ Reference< XInterface > xPipe = xServiceFactory->createInstance(
+ OUString::createFromAscii("com.sun.star.io.Pipe") );
+ ASSERT( xPipe.is(),
+ "XMLReader::Read: com.sun.star.io.Pipe service missing" );
+ if( !xPipe.is() )
+ return ERR_SWG_READ_ERROR;
+
+ sal_uInt16 nStyleFamilyMask = SFX_STYLE_FAMILY_ALL;
+ sal_Bool bLoadDoc;
+ sal_Bool bInsert;
+ if( aOpt.IsFmtsOnly() )
+ {
+ bLoadDoc = sal_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 = sal_True;
+ bInsert = bInsertMode;
+ nStyleFamilyMask = SFX_STYLE_FAMILY_ALL;
+ }
+ aOpt.ResetAllFmtsOnly();
+
+ // get filter
+ Reference< xml::sax::XDocumentHandler > xFilter =
+ new SwXMLImport( rDoc, rPaM, bLoadDoc, bInsert, nStyleFamilyMask,
+ xModel );
+
+ // connect pipe's output stream to the data source
+ Reference< io::XOutputStream > xPipeOutput( xPipe, UNO_QUERY );
+ xSource->setOutputStream( xPipeOutput );
+
+ // connect pipe's input stream to the parser
+ xml::sax::InputSource aParserInput;
+ Reference< io::XInputStream > xPipeInput( xPipe, UNO_QUERY );
+ aParserInput.aInputStream = xPipeInput;
+ aParserInput.sSystemId = rName;
+
+ // connect parser and filter
+ Reference< xml::sax::XParser > xParser( xXMLParser, UNO_QUERY );
+ xParser->setDocumentHandler( xFilter );
+
+ rDoc.AddLink(); // prevent deletion
+ sal_uInt32 nRet = 0;
+
+ // parse
+ Reference< io::XActiveDataControl > xSourceControl( xSource, UNO_QUERY );
+ xSourceControl->start();
+ try
+ {
+ xParser->parseStream( aParserInput );
+ }
+ catch( xml::sax::SAXParseException& )
+ {
+ nRet = ERR_SWG_READ_ERROR;
+ }
+ catch( xml::sax::SAXException&)
+ {
+ nRet = ERR_SWG_READ_ERROR;
+ }
+ catch( io::IOException& )
+ {
+ nRet = ERR_SWG_READ_ERROR;
+ }
+
+ rDoc.RemoveLink();
+
+ return nRet;
+}
+
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.13 2000/09/18 16:05:04 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.12 2000/07/07 13:58:36 mib
+ text styles using StarOffice API
+
+ Revision 1.11 2000/05/03 12:08:05 mib
+ unicode
+
+ Revision 1.10 2000/03/21 15:10:56 os
+ UNOIII
+
+ Revision 1.9 2000/03/13 14:33:43 mib
+ UNO3
+
+ Revision 1.8 2000/02/11 14:40:44 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.7 1999/11/26 11:15:20 mib
+ loading of styles only and insert mode
+
+ Revision 1.6 1999/11/19 16:40:21 os
+ modules renamed
+
+ Revision 1.5 1999/11/19 15:27:05 mib
+ Opt: using OUString constructor instead of StringToOUString
+
+ Revision 1.4 1999/09/23 11:53:47 mib
+ i18n, token maps and hard paragraph attributes
+
+ Revision 1.3 1999/08/19 14:51:30 HR
+ #65293#: fixed exception macro usage
+
+
+ Rev 1.2 19 Aug 1999 16:51:30 HR
+ #65293#: fixed exception macro usage
+
+ Rev 1.1 17 Aug 1999 16:31:26 MIB
+ import
+
+ Rev 1.0 12 Aug 1999 12:28:08 MIB
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/wrtxml.cxx b/sw/source/filter/xml/wrtxml.cxx
new file mode 100644
index 000000000000..feb0e8237350
--- /dev/null
+++ b/sw/source/filter/xml/wrtxml.cxx
@@ -0,0 +1,238 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtxml.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLKYWD_HXX
+#include <xmloff/xmlkywd.hxx>
+#endif
+
+#ifndef _SFXDOCFILE_HXX //autogen wg. SfxMedium
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _PAM_HXX //autogen wg. SwPaM
+#include <pam.hxx>
+#endif
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+#ifndef _DOCSH_HXX //autogen wg. SwDoc
+#include <docsh.hxx>
+#endif
+
+#ifndef _ERRHDL_HXX //autogen wg. ASSERT
+#include <errhdl.hxx>
+#endif
+#ifndef _SWSWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _WRTXML_HXX
+#include <wrtxml.hxx>
+#endif
+#ifndef _XMLEXP_HXX
+#include <xmlexp.hxx>
+#endif
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+SwXMLWriter::SwXMLWriter()
+{
+}
+
+
+__EXPORT SwXMLWriter::~SwXMLWriter()
+{
+}
+
+sal_uInt32 SwXMLWriter::WriteStream()
+{
+ ASSERT( !this, "SwXMLWriter::WriteStream: use Write!" );
+
+ return ERR_SWG_WRITE_ERROR;
+}
+
+sal_uInt32 SwXMLWriter::Write( SwPaM& rPaM, SfxMedium& rMed,
+ const String* pFileName )
+{
+ Reference< lang::XMultiServiceFactory > xServiceFactory =
+ utl::getProcessServiceFactory();
+ ASSERT( xServiceFactory.is(),
+ "SwXMLWriter::Write: got no service manager" );
+ if( !xServiceFactory.is() )
+ return ERR_SWG_WRITE_ERROR;
+
+ Reference< XInterface > xWriter = xServiceFactory->createInstance(
+ OUString::createFromAscii("com.sun.star.xml.sax.Writer") );
+ ASSERT( xWriter.is(),
+ "SwXMLWriter::Write: com.sun.star.xml.sax.Writer service missing" );
+ if(!xWriter.is())
+ return ERR_SWG_WRITE_ERROR;
+
+ Reference< frame::XModel > xModel = rPaM.GetDoc()->GetDocShell()->GetModel();
+ ASSERT( xModel.is(),
+ "XMLWriter::Write: got no model" );
+ if( !xModel.is() )
+ return ERR_SWG_WRITE_ERROR;
+
+ Reference< io::XOutputStream > xOut = rMed.GetDataSink();
+ Reference< io::XActiveDataSource > xSrc( xWriter, UNO_QUERY );
+ xSrc->setOutputStream( xOut );
+
+ Reference< xml::sax::XDocumentHandler > xHandler( xWriter, UNO_QUERY );
+
+ SwXMLExport *pExp = new SwXMLExport( xModel, rPaM, *pFileName, xHandler,
+ bWriteAll, bWriteOnlyFirstTable,
+ bShowProgress );
+
+ sal_uInt32 nRet = pExp->exportDoc( sXML_text );
+
+ delete pExp;
+
+ ResetWriter();
+
+ return nRet;
+}
+
+// -----------------------------------------------------------------------
+
+void GetXMLWriter( const String&, WriterRef& xRet )
+{
+ xRet = new SwXMLWriter;
+}
+
+// -----------------------------------------------------------------------
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/wrtxml.cxx,v 1.1.1.1 2000-09-18 17:14:59 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.17 2000/09/18 16:05:04 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.16 2000/07/21 12:55:15 mib
+ text import/export using StarOffice API
+
+ Revision 1.15 2000/06/08 09:45:54 aw
+ changed to use functionality from xmloff project now
+
+ Revision 1.14 2000/05/03 12:08:05 mib
+ unicode
+
+ Revision 1.13 2000/03/21 15:10:56 os
+ UNOIII
+
+ Revision 1.12 2000/03/13 14:33:44 mib
+ UNO3
+
+ Revision 1.11 2000/03/03 16:07:54 pl
+ #73771# workaround for c50 intel compiler
+
+ Revision 1.10 2000/02/11 14:40:52 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.9 1999/11/26 11:09:47 mib
+ progress, export-flags
+
+ Revision 1.8 1999/11/19 16:40:21 os
+ modules renamed
+
+ Revision 1.7 1999/10/26 13:34:30 mib
+ removed 'using namespace' from header files
+
+ Revision 1.6 1999/10/25 10:41:48 mib
+ Using new OUString ASCII methods
+
+ Revision 1.5 1999/10/15 14:48:25 hr
+ export() -> exportDoc()
+
+ Revision 1.4 1999/10/15 12:36:39 mib
+ added document class attribute
+
+ Revision 1.3 1999/10/08 11:47:06 mib
+ moved some file to SVTOOLS/SVX
+
+ Revision 1.2 1999/09/22 11:56:36 mib
+ string -> wstring
+
+ Revision 1.1 1999/08/12 10:28:26 MIB
+ Initial revision.
+
+
+ Rev 1.0 12 Aug 1999 12:28:26 MIB
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/wrtxml.hxx b/sw/source/filter/xml/wrtxml.hxx
new file mode 100644
index 000000000000..bdc91f054444
--- /dev/null
+++ b/sw/source/filter/xml/wrtxml.hxx
@@ -0,0 +1,89 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtxml.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WRTXML_HXX
+#define _WRTXML_HXX
+
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+
+class SwDoc;
+class SwPaM;
+class SfxMedium;
+
+class SwXMLWriter : public Writer
+{
+protected:
+ virtual sal_uInt32 WriteStream();
+
+public:
+
+ SwXMLWriter();
+ virtual ~SwXMLWriter();
+
+ virtual sal_uInt32 Write( SwPaM& rPam, SfxMedium& rMed,
+ const String* pFileName );
+};
+
+
+#endif // _WRTXML_HXX
+
diff --git a/sw/source/filter/xml/xmlbrsh.cxx b/sw/source/filter/xml/xmlbrsh.cxx
new file mode 100644
index 000000000000..e500fc83ae4e
--- /dev/null
+++ b/sw/source/filter/xml/xmlbrsh.cxx
@@ -0,0 +1,318 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlbrsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+#include <tools/debug.hxx>
+
+#include <xmloff/nmspmap.hxx>
+#include <xmloff/xmlnmspe.hxx>
+#include <xmloff/xmlkywd.hxx>
+#include <xmloff/xmlimp.hxx>
+#include <xmloff/xmltkmap.hxx>
+
+#ifndef _SVX_UNOMID_HXX
+#include <svx/unomid.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX
+#include <svx/brshitem.hxx>
+#endif
+
+#include "xmlbrshi.hxx"
+#include "xmlbrshe.hxx"
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+enum SvXMLTokenMapAttrs
+{
+ XML_TOK_BGIMG_HREF,
+ XML_TOK_BGIMG_TYPE,
+ XML_TOK_BGIMG_ACTUATE,
+ XML_TOK_BGIMG_SHOW,
+ XML_TOK_BGIMG_POSITION,
+ XML_TOK_BGIMG_REPEAT,
+ XML_TOK_BGIMG_FILTER,
+ XML_TOK_NGIMG_END=XML_TOK_UNKNOWN
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aBGImgAttributesAttrTokenMap[] =
+{
+ { XML_NAMESPACE_XLINK, sXML_href, XML_TOK_BGIMG_HREF },
+ { XML_NAMESPACE_XLINK, sXML_type, XML_TOK_BGIMG_TYPE },
+ { XML_NAMESPACE_XLINK, sXML_actuate, XML_TOK_BGIMG_ACTUATE },
+ { XML_NAMESPACE_XLINK, sXML_show, XML_TOK_BGIMG_SHOW },
+ { XML_NAMESPACE_STYLE, sXML_position, XML_TOK_BGIMG_POSITION },
+ { XML_NAMESPACE_STYLE, sXML_repeat, XML_TOK_BGIMG_REPEAT },
+ { XML_NAMESPACE_STYLE, sXML_filter_name,XML_TOK_BGIMG_FILTER },
+ XML_TOKEN_MAP_END
+};
+
+TYPEINIT1( SwXMLBrushItemImportContext, SvXMLImportContext );
+
+void SwXMLBrushItemImportContext::ProcessAttrs(
+ const Reference< xml::sax::XAttributeList >& xAttrList,
+ const SvXMLUnitConverter& rUnitConv )
+{
+ SvXMLTokenMap aTokenMap( aBGImgAttributesAttrTokenMap );
+
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ const OUString& rAttrName = xAttrList->getNameByIndex( i );
+ OUString aLocalName;
+ sal_uInt16 nPrefix =
+ GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
+ &aLocalName );
+ const OUString& rValue = xAttrList->getValueByIndex( i );
+
+ switch( aTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_BGIMG_HREF:
+ pItem->importXML( rValue, MID_GRAPHIC_LINK, rUnitConv );
+ break;
+ case XML_TOK_BGIMG_TYPE:
+ case XML_TOK_BGIMG_ACTUATE:
+ case XML_TOK_BGIMG_SHOW:
+ break;
+ case XML_TOK_BGIMG_POSITION:
+ pItem->importXML( rValue, MID_GRAPHIC_POSITION, rUnitConv );
+ break;
+ case XML_TOK_BGIMG_REPEAT:
+ pItem->importXML( rValue, MID_GRAPHIC_REPEAT, rUnitConv );
+ break;
+ case XML_TOK_BGIMG_FILTER:
+ pItem->importXML( rValue, MID_GRAPHIC_FILTER, rUnitConv );
+ break;
+ }
+ }
+
+ if( !(pItem->GetGraphicLink() || pItem->GetGraphic() ) )
+ pItem->SetGraphicPos( GPOS_NONE );
+ else if( GPOS_NONE == pItem->GetGraphicPos() )
+ pItem->SetGraphicPos( GPOS_TILED );
+}
+
+SwXMLBrushItemImportContext::SwXMLBrushItemImportContext(
+ SvXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList >& xAttrList,
+ const SvXMLUnitConverter& rUnitConv,
+ const SvxBrushItem& rItem ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ pItem( new SvxBrushItem( rItem ) )
+{
+ // delete any grephic that is existing
+ pItem->SetGraphicPos( GPOS_NONE );
+
+ ProcessAttrs( xAttrList, rUnitConv );
+}
+
+SwXMLBrushItemImportContext::SwXMLBrushItemImportContext(
+ SvXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ const SvXMLUnitConverter& rUnitConv,
+ sal_uInt16 nWhich ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ pItem( new SvxBrushItem( nWhich ) )
+{
+ ProcessAttrs( xAttrList, rUnitConv );
+}
+
+SwXMLBrushItemImportContext::~SwXMLBrushItemImportContext()
+{
+ delete pItem;
+}
+
+OUString SwXMLBrushItemExport::GetQNameByKey(
+ sal_uInt16 nKey,
+ const OUString& rLocalName ) const
+{
+ if( pNamespaceMap )
+ return pNamespaceMap->GetQNameByKey( nKey, rLocalName );
+ else
+ return rLocalName;
+}
+
+void SwXMLBrushItemExport::ClearAttrList()
+{
+ pAttrList->Clear();
+}
+
+#ifndef PRODUCT
+void SwXMLBrushItemExport::CheckAttrList()
+{
+ DBG_ASSERT( !pAttrList->getLength(),
+ "SvxXMLBrsuhItemExport::CheckAttrList: list is not empty" );
+}
+#endif
+
+void SwXMLBrushItemExport::AddAttribute( sal_uInt16 nPrefixKey,
+ const sal_Char *pName,
+ const OUString& rValue )
+{
+ OUString sName( OUString::createFromAscii( pName ) );
+
+ pAttrList->AddAttribute( GetQNameByKey( nPrefixKey, sName ),
+ sCDATA, rValue );
+}
+
+SwXMLBrushItemExport::SwXMLBrushItemExport(
+ const Reference< xml::sax::XDocumentHandler >& rHandler,
+ const SvXMLUnitConverter& rUnitConverter ) :
+ sCDATA( OUString::createFromAscii( sXML_CDATA ) ),
+ pNamespaceMap( 0 ),
+ rUnitConv( rUnitConverter ),
+ pAttrList( new SvXMLAttributeList )
+{
+ xHandler = rHandler;
+ xAttrList = pAttrList;
+}
+
+SwXMLBrushItemExport::~SwXMLBrushItemExport()
+{
+}
+
+void SwXMLBrushItemExport::exportXML( const SvxBrushItem& rItem,
+ const SvXMLNamespaceMap& rNamespaceMap )
+{
+ pNamespaceMap = &rNamespaceMap;
+
+ CheckAttrList();
+
+ OUString sValue;
+ if( rItem.exportXML( sValue, MID_GRAPHIC_LINK, rUnitConv ) )
+ {
+ AddAttribute( XML_NAMESPACE_XLINK, sXML_href, sValue );
+ AddAttribute( XML_NAMESPACE_XLINK, sXML_type,
+ OUString::createFromAscii(sXML_simple) );
+// AddAttribute( XML_NAMESPACE_XLINK, sXML_show, ACP2WS(sXML_embed) );
+ AddAttribute( XML_NAMESPACE_XLINK, sXML_actuate,
+ OUString::createFromAscii(sXML_onLoad) );
+
+ if( rItem.exportXML( sValue, MID_GRAPHIC_POSITION, rUnitConv ) )
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_position, sValue );
+
+ if( rItem.exportXML( sValue, MID_GRAPHIC_REPEAT, rUnitConv ) )
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_repeat, sValue );
+
+ if( rItem.exportXML( sValue, MID_GRAPHIC_FILTER, rUnitConv ) )
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_filter_name, sValue );
+ }
+
+ OUString sElem( GetQNameByKey( XML_NAMESPACE_STYLE,
+ OUString::createFromAscii(sXML_background_image) ) );
+ xHandler->startElement( sElem, xAttrList );
+ ClearAttrList();
+ xHandler->endElement( sElem );
+
+ pNamespaceMap = 0;
+}
+
+/*************************************************************************
+
+ Source Code Control ::com::sun::star::chaos::System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/xmlbrsh.cxx,v 1.1.1.1 2000-09-18 17:14:59 hr Exp $
+
+ Source Code Control ::com::sun::star::chaos::System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.2 2000/09/18 16:05:05 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.1 2000/08/02 14:52:38 mib
+ text export continued
+
+ Revision 1.2 2000/06/26 08:29:55 mib
+ no SVX dependency any longer
+
+ Revision 1.1 2000/06/08 09:14:25 aw
+ new export classes from svx
+
+ Revision 1.5 2000/05/02 10:04:19 mib
+ unicode
+
+ Revision 1.4 2000/03/13 14:38:56 cl
+ uno3
+
+ Revision 1.3 2000/02/10 20:09:32 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.2 2000/01/06 14:59:19 mib
+ #70271#:separation of text/layout, cond. styles, adaptions to wd-xlink-19991229
+
+ Revision 1.1 1999/12/13 08:11:18 mib
+ #70271#: XML brush item import/export
+
+ Revision 1.1 1999/12/04 16:47:25 cl
+ #70271# added support for exporting tab-stop elements in xml
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/xmlbrshe.hxx b/sw/source/filter/xml/xmlbrshe.hxx
new file mode 100644
index 000000000000..813991daf3c0
--- /dev/null
+++ b/sw/source/filter/xml/xmlbrshe.hxx
@@ -0,0 +1,122 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlbrshe.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _XMLBRSHE_HXX
+#define _XMLBRSHE_HXX
+
+#ifndef _RTL_USTRING_HXX_
+#include <rtl/ustring.hxx>
+#endif
+
+#ifndef _XMLOFF_ATTRLIST_HXX
+#include <xmloff/attrlist.hxx>
+#endif
+
+
+class SvXMLNamespaceMap;
+class SvXMLUnitConverter;
+class SvxBrushItem;
+
+class SwXMLBrushItemExport
+{
+ const ::rtl::OUString sCDATA;
+
+ // the handler
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XDocumentHandler > xHandler;
+
+ // a common attribute list and an interface of it
+ SvXMLAttributeList *pAttrList;
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList > xAttrList;
+
+ const SvXMLNamespaceMap *pNamespaceMap; // the namepspace map
+ const SvXMLUnitConverter& rUnitConv;
+
+protected:
+
+ // Check if common attribute list is empty.
+#ifdef PRODUCT
+ void CheckAttrList() {}
+#else
+ void CheckAttrList();
+#endif
+ void ClearAttrList();
+ void AddAttribute( sal_uInt16 nPrefixKey, const sal_Char *pName,
+ const ::rtl::OUString& rValue );
+ ::rtl::OUString GetQNameByKey( sal_uInt16 nKey,
+ const ::rtl::OUString& rLocalName ) const;
+public:
+
+ SwXMLBrushItemExport(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XDocumentHandler > & rHandler,
+ const SvXMLUnitConverter& rUnitConverter );
+ ~SwXMLBrushItemExport();
+
+ // core API
+ void exportXML( const SvxBrushItem& rItem,
+ const SvXMLNamespaceMap& rNamespMap );
+};
+
+
+#endif // _XMLBRSHE_HXX
+
diff --git a/sw/source/filter/xml/xmlbrshi.hxx b/sw/source/filter/xml/xmlbrshi.hxx
new file mode 100644
index 000000000000..13c7a62f4376
--- /dev/null
+++ b/sw/source/filter/xml/xmlbrshi.hxx
@@ -0,0 +1,113 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlbrshi.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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 _XMLBRSHI_HXX
+#define _XMLBRSHI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include "xmlictxt.hxx"
+#endif
+
+class SvXMLImport;
+class SvXMLUnitConverter;
+class SvxBrushItem;
+
+namespace rtl { class OUString; }
+
+class SwXMLBrushItemImportContext : public SvXMLImportContext
+{
+private:
+ SvxBrushItem *pItem;
+
+ void ProcessAttrs(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList > & xAttrList,
+ const SvXMLUnitConverter& rUnitConv );
+
+public:
+ TYPEINFO();
+
+ SwXMLBrushItemImportContext(
+ SvXMLImport& rImport,
+ sal_uInt16 nPrfx,
+ const ::rtl::OUString& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList > & xAttrList,
+ const SvXMLUnitConverter& rUnitConv,
+ const SvxBrushItem& rItem );
+
+ SwXMLBrushItemImportContext(
+ SvXMLImport& rImport,
+ sal_uInt16 nPrfx,
+ const ::rtl::OUString& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList > & xAttrList,
+ const SvXMLUnitConverter& rUnitConv,
+ sal_uInt16 nWhich );
+
+ virtual ~SwXMLBrushItemImportContext();
+
+ const SvxBrushItem& GetItem() const { return *pItem; }
+};
+
+
+#endif // _XMLBRSHI_HXX
+
diff --git a/sw/source/filter/xml/xmlexp.cxx b/sw/source/filter/xml/xmlexp.cxx
new file mode 100644
index 000000000000..e09dfdfb7074
--- /dev/null
+++ b/sw/source/filter/xml/xmlexp.cxx
@@ -0,0 +1,550 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlexp.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _NODE_HXX //autogen wg. SwTableNode
+#include <node.hxx>
+#endif
+#ifndef _NDTXT_HXX //autogen wg. SwTxtNode
+#include <ndtxt.hxx>
+#endif
+#ifndef _PAM_HXX //autogen wg. SwPaM
+#include <pam.hxx>
+#endif
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx> // ...Percent()
+#endif
+#ifndef _STATSTR_HRC
+#include <statstr.hrc> // ResId fuer Statusleiste
+#endif
+#ifndef _SHL_HXX //autogen wg. SHL_WRITER
+#include <tools/shl.hxx>
+#endif
+#ifndef _SWMODULE_HXX //autogen wg. SW_MOD
+#include <swmodule.hxx>
+#endif
+
+#ifndef _SWDOCSH_HXX
+#include <docsh.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_TEXT_XTEXTDOCUMENT_HPP_
+#include <com/sun/star/text/XTextDocument.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_TEXT_XTEXT_HPP_
+#include <com/sun/star/text/XText.hpp>
+#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_XMLCNITM_HXX
+#include <xmloff/xmlcnitm.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLASTPL_HXX
+#include <xmloff/xmlastpl.hxx>
+#endif
+
+#ifndef _XMLOFF_TXTFLDE_HXX
+#include <xmloff/txtflde.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLNUMFE_HXX
+#include <xmloff/xmlnumfe.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATSSUPPLIER_HPP
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#endif
+
+#ifndef _XMLOFF_TXTPARAE_HXX
+#include <xmloff/txtparae.hxx>
+#endif
+#ifndef _XMLOFF_XMLASTPLP_HXX
+#include <xmloff/xmlaustp.hxx>
+#endif
+#ifndef _XMLOFF_TXTPRMAP_HXX
+#include <xmloff/txtprmap.hxx>
+#endif
+#ifndef _XMLOFF_FAMILIES_HXX_
+#include <xmloff/families.hxx>
+#endif
+
+#ifndef _XMLNUME_HXX
+#include <xmlnume.hxx>
+#endif
+#ifndef _XMLFMTE_HXX
+#include <xmlfmte.hxx>
+#endif
+#ifndef _XMLTEXTE_HXX
+#include <xmltexte.hxx>
+#endif
+#ifndef _XMLEXP_HXX
+#include <xmlexp.hxx>
+#endif
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::text;
+
+#ifdef XML_CORE_API
+void SwXMLExport::SetCurPaM( SwPaM& rPaM, sal_Bool bWhole, sal_Bool bTabOnly )
+{
+ if( !pCurPaM )
+ {
+ pCurPaM = new SwPaM( *rPaM.End(), *rPaM.Start() );
+ }
+ else
+ {
+ *pCurPaM->GetPoint() = *rPaM.Start();
+ *pCurPaM->GetMark() = *rPaM.End();
+ }
+
+ // Set PaM to table/section start node if whole doc should be exported
+ if( bWhole )
+ {
+ SwTableNode *pTblNd = pCurPaM->GetNode()->FindTableNode();
+ if( pTblNd )
+ {
+ pCurPaM->GetPoint()->nNode = *pTblNd;
+
+ if( bTabOnly )
+ pCurPaM->GetMark()->nNode = *pTblNd->EndOfSectionNode();
+ }
+
+ SwSectionNode * pSectNd = pCurPaM->GetNode()->FindSectionNode();
+ while( pSectNd )
+ {
+ pCurPaM->GetPoint()->nNode = *pSectNd;
+
+ // SwSectionNode::FindSectionNode() returns the section node itself
+ pSectNd = pSectNd->FindStartNode()->FindSectionNode();
+ }
+ }
+}
+#endif
+
+SwXMLExport::SwXMLExport( const Reference< XModel >& rModel, SwPaM& rPaM,
+ const OUString& rFileName,
+ const Reference< xml::sax::XDocumentHandler > & rHandler,
+ sal_Bool bExpWholeDoc, sal_Bool bExpFirstTableOnly,
+ sal_Bool bShowProg ) :
+ SvXMLExport( rFileName, rHandler, rModel,
+ SW_MOD()->GetMetric( rPaM.GetDoc()->IsHTMLMode() ) ),
+ pDoc( rPaM.GetDoc() ),
+#ifdef XML_CORE_API
+ pCurPaM( 0 ),
+ pOrigPaM( &rPaM ),
+ pParaItemMapper( 0 ),
+#endif
+ pTableItemMapper( 0 ),
+#ifdef XML_CORE_API
+ pItemSetAutoStylePool( new SwXMLAutoStylePool ),
+ pListElements( 0 ),
+ pExportedLists( 0 ),
+#endif
+ pTableLines( 0 ),
+ bExportWholeDoc( bExpWholeDoc ),
+ bExportFirstTableOnly( bExpFirstTableOnly ),
+ bShowProgress( bShowProg )
+#ifdef XML_CORE_API
+ , pTextFieldExport( 0 ),
+ pNumberFormatExport( 0 )
+#endif
+{
+// _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 );
+
+ const SfxPoolItem* pItem;
+ const SfxItemPool& rPool = pDoc->GetAttrPool();
+ sal_uInt16 nItems = rPool.GetItemCount( RES_UNKNOWNATR_CONTAINER );
+ sal_Bool bExtended = sal_False;
+ for( sal_uInt16 i = 0; i < nItems; ++i )
+ {
+ if( 0 != (pItem = rPool.GetItem( RES_UNKNOWNATR_CONTAINER, i ) ) )
+ {
+ const SvXMLAttrContainerItem *pUnknown =
+ (const SvXMLAttrContainerItem *)pItem;
+ if( (pUnknown->GetAttrCount() > 0) )
+ {
+ sal_uInt16 nIdx = pUnknown->GetFirstNamespaceIndex();
+ while( USHRT_MAX != nIdx )
+ {
+ const OUString& rPrefix = pUnknown->GetPrefix( nIdx );
+ if( USHRT_MAX ==
+ GetNamespaceMap().GetIndexByPrefix( rPrefix ) )
+ {
+ // Add namespace declaration for unknown attributes if
+ // there aren't existing ones for the prefix used by the
+ // attibutes
+ _GetNamespaceMap().Add( rPrefix,
+ pUnknown->GetNamespace( nIdx ),
+ XML_NAMESPACE_UNKNOWN );
+ }
+ nIdx = pUnknown->GetNextNamespaceIndex( nIdx );
+ }
+
+ bExtended = sal_True;
+ }
+ }
+ }
+
+ SetExtended( bExtended );
+
+#ifdef XML_CORE_API
+ SetCurPaM( rPaM, bExportWholeDoc, bExportFirstTableOnly );
+#endif
+
+ _InitItemExport();
+
+ if( bShowProgress )
+ ::StartProgress( STR_STATSTR_W4WWRITE, 0, pDoc->GetNodes().Count(),
+ pDoc->GetDocShell() );
+
+#ifdef XML_CORE_API
+ Reference< util::XNumberFormatsSupplier > xNumFmtSupp(
+ pDoc->GetDocShell()->GetBaseModel(), UNO_QUERY);
+ pNumberFormatExport = new SvXMLNumFmtExport( rHandler, xNumFmtSupp );
+
+ pTextFieldExport = new XMLTextFieldExport( *this );
+#endif
+
+ SfxObjectShell* pObjSh = pDoc->GetDocShell();
+ if( pObjSh )
+ pObjSh->UpdateDocInfoForSave(); // update information
+}
+
+#ifndef XML_CORE_API
+XMLTextParagraphExport* SwXMLExport::CreateTextParagraphExport()
+{
+ return new SwXMLTextParagraphExport( *this, *GetAutoStylePool().get() );
+}
+#endif
+
+__EXPORT SwXMLExport::~SwXMLExport()
+{
+#ifdef XML_CORE_API
+ delete pItemSetAutoStylePool;
+#endif
+
+#ifdef XML_CORE_API
+ delete pTextFieldExport;
+ delete pNumberFormatExport;
+#endif
+
+ if( bShowProgress )
+ ::EndProgress( pDoc->GetDocShell() );
+
+#ifdef XML_CORE_API
+ if( pCurPaM )
+ {
+ while( pCurPaM->GetNext() != pCurPaM )
+ delete pCurPaM->GetNext();
+ delete pCurPaM;
+ }
+#endif
+ _FinitItemExport();
+#ifdef XML_CORE_API
+ _FinitNumRuleExport();
+#endif
+ ASSERT( !pTableLines, "there are table columns infos left" );
+}
+
+
+void SwXMLExport::_ExportContent()
+{
+#ifdef XML_CORE_API
+ // export field declarations
+// pTextFieldExport->ExportFieldDeclarations();
+
+ // export all PaMs
+ SwPaM *pPaM = pOrigPaM;
+ sal_Bool bContinue = sal_True;
+ do
+ {
+ // export PaM content
+ ExportCurPaM( bExportWholeDoc );
+
+ bContinue = pPaM->GetNext() != pOrigPaM;
+
+ if( bContinue )
+ {
+ pPaM = (SwPaM *)pPaM->GetNext();
+ SetCurPaM( *pPaM, bExportWholeDoc, bExportFirstTableOnly );
+ }
+
+ } while( bContinue );
+#else
+ GetTextParagraphExport()->exportTextDeclarations();
+ Reference < XTextDocument > xTextDoc( GetModel(), UNO_QUERY );
+ Reference < XText > xText = xTextDoc->getText();
+
+ GetTextParagraphExport()->exportFramesBoundToPage();
+ GetTextParagraphExport()->exportText( xText );
+#endif
+}
+
+#ifdef XML_CORE_API
+void SwXMLExport::ExportCurPaM( sal_Bool bExportWholePaM )
+{
+ sal_Bool bFirstNode = sal_True;
+ sal_Bool bExportWholeNode = bExportWholePaM;
+
+ SwXMLNumRuleInfo aPrevNumInfo;
+ SwXMLNumRuleInfo aNextNumInfo;
+
+ while( pCurPaM->GetPoint()->nNode.GetIndex() <
+ pCurPaM->GetMark()->nNode.GetIndex() ||
+ ( pCurPaM->GetPoint()->nNode.GetIndex() ==
+ pCurPaM->GetMark()->nNode.GetIndex() &&
+ pCurPaM->GetPoint()->nContent.GetIndex() <=
+ pCurPaM->GetMark()->nContent.GetIndex() ) )
+ {
+ SwNode *pNd = pCurPaM->GetNode();
+
+ aNextNumInfo.Set( *pNd );
+ ExportListChange( aPrevNumInfo, aNextNumInfo );
+
+ ASSERT( !(pNd->IsGrfNode() || pNd->IsOLENode()),
+ "SwXMLExport::exportCurPaM: grf or OLE node unexpected" );
+ if( pNd->IsTxtNode() )
+ {
+ SwTxtNode* pTxtNd = pNd->GetTxtNode();
+
+ if( !bFirstNode )
+ pCurPaM->GetPoint()->nContent.Assign( pTxtNd, 0 );
+
+ ExportTxtNode( *pTxtNd, 0, STRING_LEN, bExportWholeNode );
+ }
+ else if( pNd->IsTableNode() )
+ {
+ ExportTable( *pNd->GetTableNode() );
+ }
+ else if( pNd->IsSectionNode() )
+ {
+ ExportSection( *pNd->GetSectionNode() );
+ }
+ else if( pNd == &pDoc->GetNodes().GetEndOfContent() )
+ break;
+
+ pCurPaM->GetPoint()->nNode++; // next node
+
+ sal_uInt32 nPos = pCurPaM->GetPoint()->nNode.GetIndex();
+ if( bShowProgress )
+ ::SetProgressState( nPos, pDoc->GetDocShell() );
+
+ // if not everything should be exported, the WriteAll flag must be
+ // set for all but the first and last node anyway.
+ bExportWholeNode = bExportWholePaM ||
+ nPos != pCurPaM->GetMark()->nNode.GetIndex();
+ bFirstNode = sal_False;
+
+ aPrevNumInfo = aNextNumInfo;
+ }
+ aNextNumInfo.Reset();
+ ExportListChange( aPrevNumInfo, aNextNumInfo );
+}
+#endif
+
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/xmlexp.cxx,v 1.1.1.1 2000-09-18 17:15:00 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.35 2000/09/18 16:05:05 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.34 2000/09/18 11:58:02 mib
+ text frames/graphics import and export continued
+
+ Revision 1.33 2000/08/15 11:55:56 kz
+ #65293# del. 2. Parameter
+
+ Revision 1.32 2000/08/10 10:22:15 mib
+ #74404#: Adeptions to new XSL/XLink working draft
+
+ Revision 1.31 2000/08/02 14:52:39 mib
+ text export continued
+
+ Revision 1.30 2000/07/31 09:42:35 mib
+ text export continued
+
+ Revision 1.29 2000/07/27 08:06:33 mib
+ text import continued
+
+ Revision 1.28 2000/07/26 05:11:20 mib
+ text import/export continued
+
+ Revision 1.27 2000/07/24 12:01:21 dvo
+ - field declarations now exported at content beginning
+
+ Revision 1.26 2000/07/24 10:19:02 dvo
+ - textfield export for XML_CORE_API
+
+ Revision 1.25 2000/07/21 12:55:15 mib
+ text import/export using StarOffice API
+
+ Revision 1.24 2000/06/08 09:45:54 aw
+ changed to use functionality from xmloff project now
+
+ Revision 1.23 2000/05/03 12:08:05 mib
+ unicode
+
+ Revision 1.22 2000/03/13 14:33:44 mib
+ UNO3
+
+ Revision 1.21 2000/02/11 14:40:57 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.20 2000/02/07 10:03:28 mib
+ #70271#: tables
+
+ Revision 1.19 2000/01/20 10:03:15 mib
+ #70271#: Lists reworked
+
+ Revision 1.18 2000/01/12 15:00:22 mib
+ #70271#: lists
+
+ Revision 1.17 2000/01/06 15:08:27 mib
+ #70271#:separation of text/layout, cond. styles, adaptions to wd-xlink-19991229
+
+ Revision 1.16 1999/12/06 14:49:49 mib
+ #70271#: office:version attribute
+
+ Revision 1.15 1999/12/06 11:41:33 mib
+ #70258#: Container item for unkown attributes
+
+ Revision 1.14 1999/11/26 11:08:59 mib
+ progress, export-flags
+
+ Revision 1.13 1999/11/22 15:52:34 os
+ headers added
+
+ Revision 1.12 1999/11/17 20:07:53 nn
+ document language
+
+ Revision 1.11 1999/11/12 14:50:28 mib
+ meta import and export reactivated
+
+ Revision 1.10 1999/11/10 15:08:09 mib
+ Import now uses XMLItemMapper
+
+ Revision 1.9 1999/11/09 15:40:29 mib
+ Using XMLItemMapper for export
+
+ Revision 1.8 1999/11/05 19:43:18 nn
+ _ExportMeta
+
+ Revision 1.7 1999/10/26 13:34:30 mib
+ removed 'using namespace' from header files
+
+ Revision 1.6 1999/10/08 11:47:09 mib
+ moved some file to SVTOOLS/SVX
+
+ Revision 1.5 1999/09/22 11:56:47 mib
+ string -> wstring
+
+ Revision 1.4 1999/08/17 14:28:22 MIB
+ namespace map methods renamed consistently
+
+
+ Rev 1.3 17 Aug 1999 16:28:22 MIB
+ namespace map methods renamed consistently
+
+ Rev 1.2 13 Aug 1999 16:21:14 MIB
+ new base class XMLExport, styles and sections
+
+ Rev 1.1 12 Aug 1999 18:05:20 MIB
+ Export ofSvxFontItem, SvxFontHeightItem and SvxLRSpaceItem
+
+ Rev 1.0 12 Aug 1999 12:28:54 MIB
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/xmlexp.hxx b/sw/source/filter/xml/xmlexp.hxx
new file mode 100644
index 000000000000..9926723753c3
--- /dev/null
+++ b/sw/source/filter/xml/xmlexp.hxx
@@ -0,0 +1,254 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlexp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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 _XMLEXP_HXX
+#define _XMLEXP_HXX
+
+#ifndef _XMLOFF_XMLEXP_HXX
+#include <xmloff/xmlexp.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLITMAP_HXX
+#include <xmloff/xmlitmap.hxx>
+#endif
+#ifndef _UNIVERSALL_REFERENCE_HXX
+#include <xmloff/uniref.hxx>
+#endif
+
+class SwDoc;
+class SwPaM;
+class SwTxtNode;
+class SwSectionNode;
+class SwFmt;
+class SwFrmFmt;
+class SvXMLUnitConverter;
+class SvXMLExportItemMapper;
+class SwXMLAutoStylePool;
+class SvXMLAutoStylePool;
+class SvXMLAutoStylePoolP;
+class SwNodeNum;
+class SfxPoolItem;
+class SfxItemSet;
+class SwXMLNumRuleInfo;
+class OUStrings_Impl;
+class OUStringsSort_Impl;
+class SwTableLine;
+class SwTableLines;
+class SwTableBox;
+class SwXMLTableColumn_Impl;
+class SwXMLTableLines_Impl;
+class SwXMLTableLinesCache_Impl;
+class SwXMLTableColumnsSortByWidth_Impl;
+class SwXMLTableFrmFmtsSort_Impl;
+class SwTableNode;
+#ifdef XML_CORE_API
+class SvXMLNumFmtExport;
+class XMLTextFieldExport;
+#endif
+class XMLPropertySetMapper;
+class SwXMLTextParagraphExport;
+
+class SwXMLExport : public SvXMLExport
+{
+ friend class SwXMLExpContext;
+
+ SwDoc *pDoc; // the current doc
+#ifdef XML_CORE_API
+ SwPaM *pCurPaM; // the current PaM
+ SwPaM *pOrigPaM; // the original PaM
+#endif
+
+ SvXMLUnitConverter *pTwipUnitConv;
+
+#ifdef XML_CORE_API
+ SvXMLExportItemMapper *pParaItemMapper;
+#endif
+ SvXMLExportItemMapper *pTableItemMapper;
+#ifdef XML_CORE_API
+ SwXMLAutoStylePool *pItemSetAutoStylePool;
+ OUStrings_Impl *pListElements;
+ OUStringsSort_Impl *pExportedLists;
+#endif
+ SwXMLTableLinesCache_Impl *pTableLines;
+#ifdef XML_CORE_API
+ SvXMLNumFmtExport *pNumberFormatExport;
+ XMLTextFieldExport *pTextFieldExport;
+#endif
+
+ SvXMLItemMapEntriesRef xTableItemMap;
+ SvXMLItemMapEntriesRef xTableRowItemMap;
+ SvXMLItemMapEntriesRef xTableCellItemMap;
+ UniReference < XMLPropertySetMapper > xParaPropMapper;
+
+ sal_Bool bExportWholeDoc : 1;// export whole document?
+ sal_Bool bExportFirstTableOnly : 1;
+ sal_Bool bShowProgress : 1;
+
+ void _InitItemExport();
+ void _FinitItemExport();
+#ifdef XML_CORE_API
+ void _FinitNumRuleExport();
+
+ void AddTextAutoStyle( const SfxPoolItem& rItem );
+ void AddParaAutoStyle( const ::rtl::OUString& rParent,
+ const SfxItemSet& rItemSet );
+ ::rtl::OUString FindTextAutoStyle( const SfxPoolItem& rItem );
+ ::rtl::OUString FindParaAutoStyle( const ::rtl::OUString& rParent,
+ const SfxItemSet& rItemSet );
+
+ void ExportCurPaMAutoStyles( sal_Bool bExportWholePaM=sal_True );
+ void ExportTxtNodeAutoStyles( const SwTxtNode& rTxtNd, xub_StrLen nStart,
+ xub_StrLen nEnd, sal_Bool bExportWholeNode );
+ void ExportSectionAutoStyles( const SwSectionNode& rSectNd );
+#endif
+ void ExportTableLinesAutoStyles( const SwTableLines& rLines,
+ sal_uInt32 nAbsWidth,
+ sal_uInt32 nBaseWidth,
+ const ::rtl::OUString& rNamePrefix,
+ SwXMLTableColumnsSortByWidth_Impl& rExpCols,
+ SwXMLTableFrmFmtsSort_Impl& rExpRows,
+ SwXMLTableFrmFmtsSort_Impl& rExpCells,
+ sal_Bool bTop=sal_False );
+
+#ifdef XML_CORE_API
+ void ExportCurPaM( sal_Bool bExportWholePaM=sal_True );
+ void ExportTxtNode( const SwTxtNode& rTxtNd, xub_StrLen nStart,
+ xub_StrLen nEnd, sal_Bool bExportWholeNode );
+ void ExportSection( const SwSectionNode& rSectNd );
+#endif
+
+ void ExportFmt( const SwFmt& rFmt, const sal_Char *pFamily = 0 );
+ void ExportTableFmt( const SwFrmFmt& rFmt, sal_uInt32 nAbsWidth );
+#ifdef XML_CORE_API
+ void ExportNumRules( sal_Bool bAuto, sal_Bool bUsed );
+ void ExportNodeNum( const SwNodeNum& rNdNum );
+ void ExportListChange( const SwXMLNumRuleInfo& rPrvInfo,
+ const SwXMLNumRuleInfo& rNextInfo );
+#endif
+
+ void ExportTableColumnStyle( const SwXMLTableColumn_Impl& rCol );
+ void ExportTableBox( const SwTableBox& rBox, sal_uInt16 nColSpan );
+ void ExportTableLine( const SwTableLine& rLine,
+ const SwXMLTableLines_Impl& rLines );
+ void ExportTableLines( const SwTableLines& rLines,
+ sal_Bool bHeadline=sal_False );
+
+// virtual void _ExportMeta();
+ virtual void _ExportStyles( sal_Bool bUsed );
+ virtual void _ExportAutoStyles();
+ virtual void _ExportMasterStyles();
+ virtual void _ExportContent();
+
+#ifdef XML_CORE_API
+ void SetCurPaM( SwPaM& rPaM, sal_Bool bWhole, sal_Bool bTabOnly );
+#endif
+
+protected:
+
+#ifndef XML_CORE_API
+ virtual XMLTextParagraphExport* CreateTextParagraphExport();
+ virtual SvXMLAutoStylePoolP* CreateAutoStylePool();
+#endif
+
+public:
+
+ SwXMLExport( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::frame::XModel > & rModel,
+ SwPaM& rPaM, const ::rtl::OUString& rFileName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XDocumentHandler > & rHandler,
+ sal_Bool bExpWholeDoc, sal_Bool bExpFirstTableOnly,
+ sal_Bool bShowProgr );
+ virtual ~SwXMLExport();
+
+ inline const SvXMLUnitConverter& GetTwipUnitConverter() const;
+
+ void ExportTableAutoStyles( const SwTableNode& rTblNd );
+ void ExportTable( const SwTableNode& rTblNd );
+
+#ifdef XML_CORE_API
+ SvXMLExportItemMapper& GetParaItemMapper() { return *pParaItemMapper; }
+#endif
+ SvXMLExportItemMapper& GetTableItemMapper() { return *pTableItemMapper; }
+ const UniReference < XMLPropertySetMapper >& GetParaPropMapper()
+ {
+ return xParaPropMapper;
+ }
+#ifdef XML_CORE_API
+ SwXMLAutoStylePool& GetItemSetAutoStylePool() { return *pItemSetAutoStylePool; }
+#endif
+
+#ifdef XML_CORE_API
+ SvXMLNumFmtExport& GetNumberFormatExport() { return *pNumberFormatExport; }
+ XMLTextFieldExport& GetTextFieldExport() { return *pTextFieldExport; }
+#endif
+
+ SwDoc& GetDoc() { return *pDoc; }
+};
+
+inline const SvXMLUnitConverter& SwXMLExport::GetTwipUnitConverter() const
+{
+ return *pTwipUnitConv;
+}
+
+
+#endif // _XMLEXP_HXX
+
diff --git a/sw/source/filter/xml/xmlfmt.cxx b/sw/source/filter/xml/xmlfmt.cxx
new file mode 100644
index 000000000000..2a8d964c4d72
--- /dev/null
+++ b/sw/source/filter/xml/xmlfmt.cxx
@@ -0,0 +1,1814 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlfmt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _RTL_USTRBUF_HXX_
+#include <rtl/ustrbuf.hxx>
+#endif
+
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+
+#ifndef _SVSTDARR_STRINGSSORT_DECL
+#define _SVSTDARR_STRINGSSORT
+#include <svtools/svstdarr.hxx>
+#endif
+
+#ifndef _XMLOFF_NMSPMAP_HXX
+#include <xmloff/nmspmap.hxx>
+#endif
+
+#ifndef _FORMAT_HXX //autogen wg. SwFmt
+#include <format.hxx>
+#endif
+#ifndef _FMTCOL_HXX //autogen wg. SwTxtFmtColl
+#include <fmtcol.hxx>
+#endif
+#ifndef _HINTS_HXX //autogen wg. SwFmtChg
+#include <hints.hxx>
+#endif
+
+#ifndef _POOLFMT_HXX //autogen wg. RES_POOL_CHRFMT_TYPE
+#include <poolfmt.hxx>
+#endif
+#ifndef _CHARFMT_HXX //autogen wg. SwCharFmt
+#include <charfmt.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen wg. SwFrmFmt
+#include <frmfmt.hxx>
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+#include "docary.hxx"
+#ifndef _UNOSTYLE_HXX
+#include "unostyle.hxx"
+#endif
+
+#ifndef _XMLOFF_XMLNMSPE_HXX
+#include <xmloff/xmlnmspe.hxx>
+#endif
+#ifndef _XMLOFF_I18NMAP_HXX
+#include <xmloff/i18nmap.hxx>
+#endif
+#ifndef _XMLOFF_XMLTKMAP_HXX
+#include <xmloff/xmltkmap.hxx>
+#endif
+#ifndef _XMLOFF_XMLITEM_HXX
+#include <xmloff/xmlitem.hxx>
+#endif
+#ifndef _XMLOFF_XMLSTYLE_HXX
+#include <xmloff/xmlstyle.hxx>
+#endif
+#ifndef _XMLOFF_XMLKYWD_HXX
+#include <xmloff/xmlkywd.hxx>
+#endif
+#ifndef _XMLOFF_TXTSTYLI_HXX
+#include <xmloff/txtstyli.hxx>
+#endif
+#ifndef _XMLOFF_TXTIMP_HXX
+#include <xmloff/txtimp.hxx>
+#endif
+#ifndef _XMLOFF_FAMILIES_HXX
+#include <xmloff/families.hxx>
+#endif
+
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+#ifndef _XMLIMP_HXX
+#include "xmlimp.hxx"
+#endif
+#ifndef _XMLNUM_HXX
+#include "xmlnum.hxx"
+#endif
+#ifndef _XMLTBLI_HXX
+#include "xmltbli.hxx"
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::style;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::container;
+using namespace ::rtl;
+
+class SwXMLConditionParser_Impl
+{
+ OUString sInput;
+
+ sal_uInt32 nCondition;
+ sal_uInt32 nSubCondition;
+
+ sal_Int32 nPos;
+ sal_Int32 nLength;
+
+ inline sal_Bool SkipWS();
+ inline sal_Bool MatchChar( sal_Unicode c );
+ inline sal_Bool MatchName( OUString& rName );
+ inline sal_Bool MatchNumber( sal_uInt32& rNumber );
+
+public:
+
+ SwXMLConditionParser_Impl( const OUString& rInp );
+
+ sal_Bool IsValid() const { return 0 != nCondition; }
+
+ sal_uInt32 GetCondition() const { return nCondition; }
+ sal_uInt32 GetSubCondition() const { return nSubCondition; }
+};
+
+inline sal_Bool SwXMLConditionParser_Impl::SkipWS()
+{
+ while( nPos < nLength && ' ' == sInput[nPos] )
+ nPos++;
+ return sal_True;
+}
+
+inline sal_Bool SwXMLConditionParser_Impl::MatchChar( sal_Unicode c )
+{
+ sal_Bool bRet = sal_False;
+ if( nPos < nLength && c == sInput[nPos] )
+ {
+ nPos++;
+ bRet = sal_True;
+ }
+ return bRet;
+}
+
+inline sal_Bool SwXMLConditionParser_Impl::MatchName( OUString& rName )
+{
+ OUStringBuffer sBuffer( nLength );
+ while( nPos < nLength &&
+ ( ('a' <= sInput[nPos] && sInput[nPos] <= 'z') ||
+ '-' == sInput[nPos] ) )
+ {
+ sBuffer.append( sInput[nPos] );
+ nPos++;
+ }
+ rName = sBuffer.makeStringAndClear();
+ return rName.getLength() > 0;
+}
+
+inline sal_Bool SwXMLConditionParser_Impl::MatchNumber( sal_uInt32& rNumber )
+{
+ OUStringBuffer sBuffer( nLength );
+ while( nPos < nLength && '0' <= sInput[nPos] && sInput[nPos] <= '9' )
+ {
+ sBuffer.append( sInput[nPos] );
+ nPos++;
+ }
+
+ OUString sNum( sBuffer.makeStringAndClear() );
+ if( sNum.getLength() )
+ rNumber = sNum.toInt32();
+ return sNum.getLength() > 0;
+}
+
+SwXMLConditionParser_Impl::SwXMLConditionParser_Impl( const OUString& rInp ) :
+ sInput( rInp ),
+ nPos( 0 ),
+ nLength( rInp.getLength() ),
+ nCondition( 0 ),
+ nSubCondition( 0 )
+{
+ OUString sFunc;
+ sal_Bool bHasSub = sal_False;
+ sal_uInt32 nSub = 0;
+ sal_Bool bOK = SkipWS() && MatchName( sFunc ) && SkipWS() &&
+ MatchChar( '(' ) && SkipWS() && MatchChar( ')' ) && SkipWS();
+ if( bOK && MatchChar( '=' ) )
+ {
+ bOK = SkipWS() && MatchNumber( nSub ) && SkipWS();
+ bHasSub = sal_True;
+ }
+
+ bOK &= nPos == nLength;
+
+ if( bOK )
+ {
+ switch( sFunc[0] )
+ {
+ case 'e':
+ if( sFunc.compareToAscii( sXML_endnote ) == 0 && !bHasSub )
+ nCondition = PARA_IN_ENDNOTE;
+ break;
+
+ case 'f':
+ if( sFunc.compareToAscii( sXML_footer ) == 0 && !bHasSub )
+ nCondition = PARA_IN_FOOTER;
+ else if( sFunc.compareToAscii( sXML_table_header ) == 0 &&
+ !bHasSub )
+ nCondition = PARA_IN_FOOTENOTE;
+ break;
+
+ case 'h':
+ if( sFunc.compareToAscii( sXML_header ) == 0 && !bHasSub )
+ nCondition = PARA_IN_HEADER;
+ break;
+
+ case 'l':
+ if( sFunc.compareToAscii( sXML_list_level ) == 0 &&
+ nSub >=1 && nSub < MAXLEVEL )
+ {
+ nCondition = PARA_IN_LIST;
+ nSubCondition = nSub-1;
+ }
+ break;
+
+ case 'o':
+ if( sFunc.compareToAscii( sXML_outline_level ) == 0 &&
+ nSub >=1 && nSub < MAXLEVEL )
+ {
+ nCondition = PARA_IN_OUTLINE;
+ nSubCondition = nSub-1;
+ }
+ break;
+
+ case 's':
+ if( sFunc.compareToAscii( sXML_section ) == 0 && !bHasSub )
+ {
+ nCondition = PARA_IN_SECTION;
+ }
+ break;
+
+ case 't':
+ if( sFunc.compareToAscii( sXML_table ) == 0 && !bHasSub )
+ {
+ nCondition = PARA_IN_TABLEBODY;
+ }
+ else if( sFunc.compareToAscii( sXML_table_header ) == 0 &&
+ !bHasSub )
+ {
+ nCondition = PARA_IN_TABLEHEAD;
+ }
+ else if( sFunc.compareToAscii( sXML_text_box ) == 0 && !bHasSub )
+ {
+ nCondition = PARA_IN_FRAME;
+ }
+ break;
+ }
+ }
+}
+
+// ---------------------------------------------------------------------
+
+class SwXMLConditionContext_Impl : public SvXMLImportContext
+{
+ sal_uInt32 nCondition;
+ sal_uInt32 nSubCondition;
+
+ OUString sApplyStyle;
+
+ void ParseCondition( const OUString& rCond );
+
+public:
+
+ SwXMLConditionContext_Impl(
+ SvXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+ virtual ~SwXMLConditionContext_Impl();
+
+ sal_Bool IsValid() const { return 0 != nCondition; }
+
+ sal_uInt32 GetCondition() const { return nCondition; }
+ sal_uInt32 GetSubCondition() const { return nSubCondition; }
+ const OUString& GetApplyStyle() const { return sApplyStyle; }
+};
+
+SwXMLConditionContext_Impl::SwXMLConditionContext_Impl(
+ SvXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ nCondition( 0 ),
+ nSubCondition( 0 )
+{
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ const OUString& rAttrName = xAttrList->getNameByIndex( i );
+ OUString aLocalName;
+ sal_uInt16 nPrefix =
+ GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
+ &aLocalName );
+ const OUString& rValue = xAttrList->getValueByIndex( i );
+
+ // TODO: use a map here
+ if( XML_NAMESPACE_STYLE == nPrefix )
+ {
+ if( aLocalName.compareToAscii( sXML_condition ) == 0 )
+ {
+ SwXMLConditionParser_Impl aCondParser( rValue );
+ if( aCondParser.IsValid() )
+ {
+ nCondition = aCondParser.GetCondition();
+ nSubCondition = aCondParser.GetSubCondition();
+ }
+ }
+ else if( aLocalName.compareToAscii( sXML_apply_style_name ) == 0 )
+ {
+ sApplyStyle = rValue;
+ }
+ }
+ }
+}
+
+SwXMLConditionContext_Impl::~SwXMLConditionContext_Impl()
+{
+}
+
+// ---------------------------------------------------------------------
+
+typedef SwXMLConditionContext_Impl *SwXMLConditionContextPtr;
+SV_DECL_PTRARR( SwXMLConditions_Impl, SwXMLConditionContextPtr, 5, 2 );
+
+#ifndef XML_CORE_API
+
+class SwXMLTextStyleContext_Impl : public XMLTextStyleContext
+{
+ SwXMLConditions_Impl *pConditions;
+
+protected:
+
+ virtual Reference < XStyle > Create();
+
+public:
+
+ TYPEINFO();
+
+ SwXMLTextStyleContext_Impl( SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ sal_uInt16 nFamily,
+ SvXMLStylesContext& rStyles );
+ virtual ~SwXMLTextStyleContext_Impl();
+
+ virtual SvXMLImportContext *CreateChildContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+
+ virtual void Finish( sal_Bool bOverwrite );
+};
+
+TYPEINIT1( SwXMLTextStyleContext_Impl, XMLTextStyleContext );
+
+Reference < XStyle > SwXMLTextStyleContext_Impl::Create()
+{
+ Reference < XStyle > xNewStyle;
+
+ if( pConditions && XML_STYLE_FAMILY_TEXT_PARAGRAPH == GetFamily() )
+ {
+ Reference< XMultiServiceFactory > xFactory( GetImport().GetModel(),
+ UNO_QUERY );
+ if( xFactory.is() )
+ {
+ OUString sServiceName( RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.style.ConditionalParagraphStyle" ) );
+ Reference < XInterface > xIfc =
+ xFactory->createInstance( sServiceName );
+ if( xIfc.is() )
+ xNewStyle = Reference < XStyle >( xIfc, UNO_QUERY );
+ }
+ }
+ else
+ {
+ xNewStyle = XMLTextStyleContext::Create();
+ }
+
+ return xNewStyle;
+}
+
+SwXMLTextStyleContext_Impl::SwXMLTextStyleContext_Impl( SwXMLImport& rImport,
+ sal_uInt16 nPrfx, const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ sal_uInt16 nFamily,
+ SvXMLStylesContext& rStyles ) :
+ XMLTextStyleContext( rImport, nPrfx, rLName, xAttrList, rStyles ),
+ pConditions( 0 )
+{
+ SetFamily( nFamily );
+}
+
+SwXMLTextStyleContext_Impl::~SwXMLTextStyleContext_Impl()
+{
+ if( pConditions )
+ {
+ while( pConditions->Count() )
+ {
+ SwXMLConditionContext_Impl *pCond = pConditions->GetObject(0);
+ pConditions->Remove( 0UL );
+ pCond->ReleaseRef();
+ }
+ delete pConditions;
+ }
+}
+
+SvXMLImportContext *SwXMLTextStyleContext_Impl::CreateChildContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( XML_NAMESPACE_STYLE == nPrefix &&
+ rLocalName.compareToAscii( sXML_map ) == 0 )
+ {
+ SwXMLConditionContext_Impl *pCond =
+ new SwXMLConditionContext_Impl( GetImport(), nPrefix,
+ rLocalName, xAttrList );
+ if( pCond->IsValid() )
+ {
+ if( !pConditions )
+ pConditions = new SwXMLConditions_Impl;
+ pConditions->Insert( pCond, pConditions->Count() );
+ pCond->AddRef();
+ }
+ pContext = pCond;
+ }
+
+ if( !pContext )
+ pContext = XMLTextStyleContext::CreateChildContext( nPrefix, rLocalName,
+ xAttrList );
+
+ return pContext;
+}
+
+void SwXMLTextStyleContext_Impl::Finish( sal_Bool bOverwrite )
+{
+ XMLTextStyleContext::Finish( bOverwrite );
+
+ if( !pConditions || XML_STYLE_FAMILY_TEXT_PARAGRAPH != GetFamily() )
+ return;
+
+ Reference < XStyle > xStyle = GetStyle();
+ if( !xStyle.is() )
+ return;
+
+ const SwXStyle* pStyle = 0;
+ Reference<XUnoTunnel> xStyleTunnel( xStyle, UNO_QUERY);
+ if( xStyleTunnel.is() )
+ {
+ pStyle = (SwXStyle*)xStyleTunnel->getSomething(
+ SwXStyle::getUnoTunnelId() );
+ }
+ if( !pStyle )
+ return;
+
+ SwDoc& rDoc = ((SwXMLImport&)GetImport()).GetDoc();
+
+ const OUString& rName =
+ SwXStyleFamilies::GetUIName( GetName(), SFX_STYLE_FAMILY_PARA );
+ SwTxtFmtColl *pColl = rDoc.FindTxtFmtCollByName( rName );
+ ASSERT( pColl, "Text collection not found" );
+ if( !pColl || RES_CONDTXTFMTCOLL != pColl->Which() )
+ return;
+
+ sal_uInt16 nCount = pConditions->Count();
+ for( sal_uInt16 i = 0; i < nCount; i++ )
+ {
+ const SwXMLConditionContext_Impl *pCond = (*pConditions)[i];
+ const OUString& rName =
+ SwXStyleFamilies::GetUIName( pCond->GetApplyStyle(),
+ SFX_STYLE_FAMILY_PARA );
+ SwTxtFmtColl* pCondColl = rDoc.FindTxtFmtCollByName( rName );
+ ASSERT( pCondColl,
+ "SwXMLItemSetStyleContext_Impl::ConnectConditions: cond coll missing" );
+ if( pCondColl )
+ {
+ SwCollCondition aCond( pCondColl, pCond->GetCondition(),
+ pCond->GetSubCondition() );
+ ((SwConditionTxtFmtColl*)pColl)->InsertCondition( aCond );
+ }
+ }
+}
+#endif
+
+// ---------------------------------------------------------------------
+
+class SwXMLItemSetStyleContext_Impl : public SvXMLStyleContext
+{
+#ifdef XML_CORE_API
+ OUString sListStyleName;
+ SwFmt *pFmt;
+#endif
+ SfxItemSet *pItemSet;
+
+#ifdef XML_CORE_API
+ SwXMLConditions_Impl *pConditions;
+
+ sal_uInt16 nPoolId; // PoolId
+ sal_Bool bAutoUpdate;
+#endif
+
+ SvXMLImportContext *CreateItemSetContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList);
+
+protected:
+
+#ifdef XML_CORE_API
+ virtual void SetAttribute( sal_uInt16 nPrefixKey,
+ const OUString& rLocalName,
+ const OUString& rValue );
+#endif
+
+ const SwXMLImport& GetSwImport() const
+ { return (const SwXMLImport&)GetImport(); }
+ SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); }
+
+public:
+
+ TYPEINFO();
+
+ SwXMLItemSetStyleContext_Impl(
+ SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList
+#ifndef XML_CORE_API
+ ,sal_uInt16 nFamily
+#endif
+ );
+ virtual ~SwXMLItemSetStyleContext_Impl();
+
+ virtual SvXMLImportContext *CreateChildContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+
+#ifdef XML_CORE_API
+ sal_uInt16 GetPoolId() const { return nPoolId; }
+ sal_Bool IsAutoUpdate() const { return bAutoUpdate; }
+#endif
+
+ // The item set may be empty!
+ SfxItemSet *GetItemSet() { return pItemSet; }
+ const SfxItemSet *GetItemSet() const { return pItemSet; }
+
+#ifdef XML_CORE_API
+ SwFmt *GetFmt() { return pFmt; }
+ void SetFmt( SwFmt *p ) { pFmt = p; }
+
+ SwTxtFmtColl* GetColl();
+
+ sal_Bool HasConditions() const { return 0 != pConditions &&
+ pConditions->Count() > 0; }
+ const OUString& GetListStyle() const { return sListStyleName; }
+
+ void ConnectParent();
+ void ConnectFollow();
+ void ConnectConditions();
+ void ConnectListStyle();
+ void ConnectAutoListStyle();
+#endif
+};
+
+#ifdef XML_CORE_API
+void SwXMLItemSetStyleContext_Impl::SetAttribute( sal_uInt16 nPrefixKey,
+ const OUString& rLocalName,
+ const OUString& rValue )
+{
+ // TODO: use a map here
+ if( XML_NAMESPACE_STYLE == nPrefixKey )
+ {
+ if( rLocalName.compareToAscii( sXML_family ) == 0 )
+ {
+ SfxStyleFamily eFamily = SFX_STYLE_FAMILY_ALL;
+ sal_uInt16 nSubFamily = 0U;
+ if( rValue.compareToAscii( sXML_paragraph ) == 0 )
+ {
+ eFamily = SFX_STYLE_FAMILY_PARA;
+ }
+ else if( rValue.compareToAscii( sXML_text ) == 0 )
+ {
+ eFamily = SFX_STYLE_FAMILY_CHAR;
+ }
+ else if( 0 == rValue.compareToAscii( sXML_table, 5L ) )
+ {
+ eFamily = SFX_STYLE_FAMILY_FRAME;
+ if( 5L == rValue.getLength() )
+ nSubFamily = SW_STYLE_SUBFAMILY_TABLE;
+ else if( rValue.compareToAscii( sXML_table_column ) == 0 )
+ nSubFamily = SW_STYLE_SUBFAMILY_TABLE_COL;
+ else if( rValue.compareToAscii( sXML_table_row ) == 0 )
+ nSubFamily = SW_STYLE_SUBFAMILY_TABLE_LINE;
+ else if( rValue.compareToAscii( sXML_table_cell ) == 0 )
+ nSubFamily = SW_STYLE_SUBFAMILY_TABLE_BOX;
+ else
+ eFamily = SFX_STYLE_FAMILY_ALL;
+ }
+
+ if( SFX_STYLE_FAMILY_ALL != eFamily )
+ {
+ SetFamily( eFamily );
+ SetSubFamily( nSubFamily );
+ }
+ }
+ else if( rLocalName.compareToAscii( sXML_pool_id ) == 0 )
+ {
+ sal_Int32 nTmp = rValue.toInt32();
+ nPoolId =
+ (nTmp < 0L) ? 0U : ( (nTmp > USHRT_MAX) ? USHRT_MAX
+ : (sal_uInt16)nTmp );
+ }
+ else if( rLocalName.compareToAscii( sXML_auto_update ) == 0 )
+ {
+ if( rValue.compareToAscii( sXML_true ) == 0 )
+ bAutoUpdate = sal_True;
+ }
+ else if( rLocalName.compareToAscii( sXML_list_style_name ) == 0 )
+ {
+ sListStyleName = rValue;
+ }
+ else
+ {
+ SvXMLStyleContext::SetAttribute( nPrefixKey, rLocalName, rValue );
+ }
+ }
+ else
+ {
+ SvXMLStyleContext::SetAttribute( nPrefixKey, rLocalName, rValue );
+ }
+}
+#endif
+
+SvXMLImportContext *SwXMLItemSetStyleContext_Impl::CreateItemSetContext(
+ sal_uInt16 nPrefix, const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ ASSERT( !pItemSet,
+ "SwXMLItemSetStyleContext_Impl::CreateItemSetContext: item set exists" );
+
+ SvXMLImportContext *pContext = 0;
+ SfxItemPool& rItemPool = GetSwImport().GetDoc().GetAttrPool();
+
+#ifdef XML_CORE_API
+ switch( GetFamily() )
+ {
+ case SFX_STYLE_FAMILY_PARA:
+ pItemSet = new SfxItemSet( rItemPool, aTxtFmtCollSetRange );
+ pContext = GetSwImport().CreateParaItemImportContext(
+ nPrefix, rLName, xAttrList, *pItemSet );
+ break;
+
+ case SFX_STYLE_FAMILY_CHAR:
+ pItemSet = new SfxItemSet( rItemPool, aCharFmtSetRange );
+ pContext = GetSwImport().CreateParaItemImportContext(
+ nPrefix, rLName, xAttrList, *pItemSet );
+ break;
+
+ case SFX_STYLE_FAMILY_FRAME:
+ {
+ switch( GetSubFamily() )
+ {
+ case SW_STYLE_SUBFAMILY_TABLE:
+ pItemSet = new SfxItemSet( rItemPool, aTableSetRange );
+ break;
+ case SW_STYLE_SUBFAMILY_TABLE_COL:
+ pItemSet = new SfxItemSet( rItemPool, RES_FRM_SIZE,
+ RES_FRM_SIZE, 0 );
+ break;
+ case SW_STYLE_SUBFAMILY_TABLE_LINE:
+ pItemSet = new SfxItemSet( rItemPool, aTableLineSetRange );
+ break;
+ case SW_STYLE_SUBFAMILY_TABLE_BOX:
+ pItemSet = new SfxItemSet( rItemPool, aTableBoxSetRange );
+ break;
+ }
+ if( pItemSet )
+ pContext = GetSwImport().CreateTableItemImportContext(
+ nPrefix, rLName, xAttrList, GetSubFamily(),
+ *pItemSet );
+ ASSERT( pItemSet,
+ "SwXMLItemSetStyleContext_Impl::CreateItemSetContext: frames are unsopprted");
+ }
+ break;
+
+ default:
+ ASSERT( !this,
+ "SwXMLItemSetStyleContext_Impl::CreateItemSetContext: unknown family" );
+ break;
+ }
+#else
+ switch( GetFamily() )
+ {
+ case XML_STYLE_FAMILY_TABLE_TABLE:
+ pItemSet = new SfxItemSet( rItemPool, aTableSetRange );
+ break;
+ case XML_STYLE_FAMILY_TABLE_COLUMN:
+ pItemSet = new SfxItemSet( rItemPool, RES_FRM_SIZE, RES_FRM_SIZE, 0 );
+ break;
+ case XML_STYLE_FAMILY_TABLE_ROW:
+ pItemSet = new SfxItemSet( rItemPool, aTableLineSetRange );
+ break;
+ case XML_STYLE_FAMILY_TABLE_CELL:
+ pItemSet = new SfxItemSet( rItemPool, aTableBoxSetRange );
+ break;
+ default:
+ ASSERT( !this,
+ "SwXMLItemSetStyleContext_Impl::CreateItemSetContext: unknown family" );
+ break;
+ }
+ if( pItemSet )
+ pContext = GetSwImport().CreateTableItemImportContext(
+ nPrefix, rLName, xAttrList, GetFamily(),
+ *pItemSet );
+#endif
+
+ if( !pContext )
+ {
+ delete pItemSet;
+ pItemSet = 0;
+ }
+
+ return pContext;
+}
+
+TYPEINIT1( SwXMLItemSetStyleContext_Impl, SvXMLStyleContext );
+
+SwXMLItemSetStyleContext_Impl::SwXMLItemSetStyleContext_Impl( SwXMLImport& rImport,
+ sal_uInt16 nPrfx, const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList
+#ifndef XML_CORE_API
+ ,sal_uInt16 nFamily
+#endif
+ ) :
+ SvXMLStyleContext( rImport, nPrfx, rLName, xAttrList ),
+#ifdef XML_CORE_API
+ nPoolId( USHRT_MAX ),
+ bAutoUpdate( sal_False ),
+ pFmt( 0 ),
+ pConditions( 0 ),
+#endif
+ pItemSet( 0 )
+{
+#ifndef XML_CORE_API
+ SetFamily( nFamily );
+#endif
+}
+
+SwXMLItemSetStyleContext_Impl::~SwXMLItemSetStyleContext_Impl()
+{
+ delete pItemSet;
+#ifdef XML_CORE_API
+ if( pConditions )
+ {
+ while( pConditions->Count() )
+ {
+ SwXMLConditionContext_Impl *pCond = pConditions->GetObject(0);
+ pConditions->Remove( 0UL );
+ pCond->ReleaseRef();
+ }
+ delete pConditions;
+ }
+#endif
+}
+
+SvXMLImportContext *SwXMLItemSetStyleContext_Impl::CreateChildContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( XML_NAMESPACE_STYLE == nPrefix )
+ {
+ if( rLocalName.compareToAscii( sXML_properties ) == 0 )
+ {
+ pContext = CreateItemSetContext( nPrefix, rLocalName, xAttrList );
+ }
+#ifdef XML_CORE_API
+ else if( rLocalName.compareToAscii( sXML_map ) == 0 )
+ {
+ SwXMLConditionContext_Impl *pCond =
+ new SwXMLConditionContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList );
+ if( pCond->IsValid() )
+ {
+ if( !pConditions )
+ pConditions = new SwXMLConditions_Impl;
+ pConditions->Insert( pCond, pConditions->Count() );
+ pCond->AddRef();
+ }
+ pContext = pCond;
+ }
+#endif
+ }
+
+ if( !pContext )
+ pContext = SvXMLStyleContext::CreateChildContext( nPrefix, rLocalName,
+ xAttrList );
+
+ return pContext;
+}
+
+#ifdef XML_CORE_API
+SwTxtFmtColl* SwXMLItemSetStyleContext_Impl::GetColl()
+{
+ return (GetFamily() & SFX_STYLE_FAMILY_PARA) != 0
+ ? (SwTxtFmtColl*) pFmt
+ : NULL;
+}
+
+void SwXMLItemSetStyleContext_Impl::ConnectParent()
+{
+ if( !pFmt )
+ return;
+
+ SwDoc *pDoc = pFmt->GetDoc();
+ String aName( GetSwImport().GetI18NMap().Get( GetFamily(), GetParent() ) );
+
+// String aName( SwXStyleFamilies::GetUIName( GetParent(),
+// (SfxStyleFamily)GetFamily() ) );
+ SwFmt* pParent;
+ switch( GetFamily() )
+ {
+ case SFX_STYLE_FAMILY_PARA:
+ if( aName.Len() )
+ pParent = pDoc->FindTxtFmtCollByName( aName );
+ else
+ pParent = (*pDoc->GetTxtFmtColls())[ 0 ];
+ break;
+
+ case SFX_STYLE_FAMILY_FRAME:
+ if( aName.Len() )
+ pParent = pDoc->FindFrmFmtByName( aName );
+ else
+ pParent = (*pDoc->GetFrmFmts())[ 0 ];
+ break;
+
+ case SFX_STYLE_FAMILY_CHAR:
+ if( aName.Len() )
+ pParent = pDoc->FindCharFmtByName( aName );
+ else
+ pParent = (*pDoc->GetCharFmts())[ 0 ];
+ break;
+ }
+
+ if( pParent )
+ pFmt->SetDerivedFrom( pParent );
+}
+
+void SwXMLItemSetStyleContext_Impl::ConnectFollow()
+{
+ if( !pFmt || GetFamily() != SFX_STYLE_FAMILY_PARA )
+ return;
+
+ SwDoc *pDoc = pFmt->GetDoc();
+ String aName( GetSwImport().GetI18NMap().Get( GetFamily(), GetFollow() ) );
+// String aName( SwXStyleFamilies::GetUIName( GetFollow(), (SfxStyleFamily)GetFamily() ) );
+
+ SwTxtFmtColl* pFollow;
+ if( aName.Len() )
+ pFollow = pDoc->FindTxtFmtCollByName( aName );
+ else
+ pFollow = GetColl();
+ if( pFollow )
+ GetColl()->SetNextTxtFmtColl( *pFollow );
+}
+
+void SwXMLItemSetStyleContext_Impl::ConnectConditions()
+{
+ if( !pFmt || GetFamily() != SFX_STYLE_FAMILY_PARA || !pConditions ||
+ RES_CONDTXTFMTCOLL != pFmt->Which() )
+ return;
+
+ SwDoc *pDoc = pFmt->GetDoc();
+ SvI18NMap& rI18NMap = ((SwXMLImport&)GetImport()).GetI18NMap();
+
+ sal_uInt16 nCount = pConditions->Count();
+ for( sal_uInt16 i = 0; i < nCount; i++ )
+ {
+ const SwXMLConditionContext_Impl *pCond = (*pConditions)[i];
+ OUString sName( rI18NMap.Get( SFX_STYLE_FAMILY_PARA,
+ pCond->GetApplyStyle() ) );
+// OUString sName( SwXStyleFamilies::GetUIName(
+// pCond->GetApplyStyle(), SFX_STYLE_FAMILY_PARA ) );
+ SwTxtFmtColl* pCondColl = pDoc->FindTxtFmtCollByName( sName );
+ ASSERT( pCondColl,
+ "SwXMLItemSetStyleContext_Impl::ConnectConditions: cond coll missing" );
+ if( pCondColl )
+ {
+ SwCollCondition aCond( pCondColl, pCond->GetCondition(),
+ pCond->GetSubCondition() );
+ ((SwConditionTxtFmtColl*)pFmt)->InsertCondition( aCond );
+ }
+ }
+}
+
+void SwXMLItemSetStyleContext_Impl::ConnectListStyle()
+{
+ if( !pFmt || GetFamily() != SFX_STYLE_FAMILY_PARA ||
+ !GetListStyle().getLength() )
+ return;
+
+ SwDoc *pDoc = pFmt->GetDoc();
+ String aName( GetSwImport().GetI18NMap().Get( SFX_STYLE_FAMILY_PSEUDO,
+ GetListStyle() ) );
+// String aName( SwXStyleFamilies::GetUIName(
+// GetListStyle(), SFX_STYLE_FAMILY_PSEUDO ) );
+ // Styles must not reference automatic num rules
+ SwNumRule *pNumRule = pDoc->FindNumRulePtr( aName );
+ if( pNumRule && !pNumRule->IsAutoRule() )
+ GetColl()->SetAttr( SwNumRuleItem(aName) );
+}
+
+void SwXMLItemSetStyleContext_Impl::ConnectAutoListStyle()
+{
+ if( GetFamily() != SFX_STYLE_FAMILY_PARA || !GetListStyle().getLength() )
+ return;
+
+ SwDoc& rDoc = GetSwImport().GetDoc();
+ String aName( GetSwImport().GetI18NMap().Get( SFX_STYLE_FAMILY_PSEUDO,
+ GetListStyle() ) );
+// String aName( SwXStyleFamilies::GetUIName(
+// GetListStyle(), SFX_STYLE_FAMILY_PSEUDO ) );
+ if( rDoc.FindNumRulePtr( aName ) )
+ {
+ if( !pItemSet )
+ {
+ SfxItemPool& rItemPool = rDoc.GetAttrPool();
+ pItemSet = new SfxItemSet( rItemPool, aTxtFmtCollSetRange );
+ }
+ pItemSet->Put( SwNumRuleItem(aName) );
+ }
+}
+#endif
+
+// ---------------------------------------------------------------------
+
+#ifdef XML_CORE_API
+enum SwXMLStyleStylesElemTokens
+{
+ SW_XML_TOK_STYLE_STYLE,
+ SW_XML_TOK_TEXT_LIST_STYLE,
+ SW_XML_TOK_TEXT_OUTLINE,
+ SW_XML_TOK_STYLE_STYLES_ELEM_END=XML_TOK_UNKNOWN
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aStyleStylesElemTokenMap[] =
+{
+ { XML_NAMESPACE_STYLE, sXML_style, SW_XML_TOK_STYLE_STYLE },
+ { XML_NAMESPACE_TEXT, sXML_list_style, SW_XML_TOK_TEXT_LIST_STYLE},
+ { XML_NAMESPACE_TEXT, sXML_outline_style, SW_XML_TOK_TEXT_OUTLINE },
+ XML_TOKEN_MAP_END
+};
+
+const SvXMLTokenMap& SwXMLImport::GetStyleStylesElemTokenMap()
+{
+ if( !pStyleStylesElemTokenMap )
+ pStyleStylesElemTokenMap =
+ new SvXMLTokenMap( aStyleStylesElemTokenMap );
+
+ return *pStyleStylesElemTokenMap;
+}
+#endif
+
+// ---------------------------------------------------------------------
+//
+class SwXMLStylesContext_Impl : public SvXMLStylesContext
+{
+ SwXMLItemSetStyleContext_Impl *GetSwStyle( sal_uInt16 i ) const;
+#ifdef XML_CORE_API
+ SwXMLListStyleContext *GetSwListStyle( sal_uInt16 i ) const;
+
+ SwFmt *FindFmtByName( const String& rName,
+ sal_uInt16 eFamily ) const;
+ SwXMLItemSetStyleContext_Impl *FindByPoolId( sal_uInt16 nPoolId ) const;
+#endif
+
+ SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); }
+ const SwXMLImport& GetSwImport() const
+ { return (const SwXMLImport&)GetImport(); }
+
+protected:
+
+#ifdef XML_CORE_API
+ // Create a style context.
+ virtual SvXMLStyleContext *CreateStyleChildContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+#else
+ virtual SvXMLStyleContext *CreateStyleStyleChildContext( sal_uInt16 nFamily,
+ sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+ // HACK
+ 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;
+ // HACK
+#endif
+
+public:
+
+ TYPEINFO();
+
+ SwXMLStylesContext_Impl(
+ SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName ,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+ virtual ~SwXMLStylesContext_Impl();
+
+ virtual sal_Bool InsertStyleFamily( sal_uInt16 nFamily ) const;
+#ifdef XML_CORE_API
+ void CopyStylesToDoc();
+ void CopyAutoStylesToDoc();
+#endif
+};
+
+TYPEINIT1( SwXMLStylesContext_Impl, SvXMLStylesContext );
+
+inline SwXMLItemSetStyleContext_Impl *SwXMLStylesContext_Impl::GetSwStyle(
+ sal_uInt16 i ) const
+{
+ return PTR_CAST( SwXMLItemSetStyleContext_Impl, GetStyle( i ) );
+}
+
+#ifdef XML_CORE_API
+inline SwXMLListStyleContext *SwXMLStylesContext_Impl::GetSwListStyle(
+ sal_uInt16 i ) const
+{
+ return PTR_CAST( SwXMLListStyleContext, GetStyle( i ) );
+}
+
+sal_Bool lcl_xmlfmt_isValidPoolId( sal_uInt16 nPoolId, sal_uInt16 eFamily )
+{
+ sal_Bool bValid = sal_False;
+
+ // check if pool id is valid
+ if( eFamily & SFX_STYLE_FAMILY_CHAR )
+ {
+ bValid = (RES_POOLCHR_NORMAL_BEGIN <= nPoolId &&
+ nPoolId < RES_POOLCHR_NORMAL_END) ||
+ (RES_POOLCHR_HTML_BEGIN <= nPoolId &&
+ nPoolId < RES_POOLCHR_HTML_END);
+ }
+ else if( eFamily & SFX_STYLE_FAMILY_FRAME )
+ {
+ bValid = RES_POOLFRM_BEGIN <= nPoolId && nPoolId < RES_POOLFRM_END;
+ }
+ else if( eFamily & SFX_STYLE_FAMILY_PARA )
+ {
+ bValid = (RES_POOLCOLL_TEXT_BEGIN <= nPoolId &&
+ nPoolId < RES_POOLCOLL_TEXT_END) ||
+ (RES_POOLCOLL_LISTS_BEGIN <= nPoolId &&
+ nPoolId < RES_POOLCOLL_LISTS_END) ||
+ (RES_POOLCOLL_EXTRA_BEGIN <= nPoolId &&
+ nPoolId < RES_POOLCOLL_EXTRA_END) ||
+ (RES_POOLCOLL_REGISTER_BEGIN <= nPoolId &&
+ nPoolId < RES_POOLCOLL_REGISTER_END) ||
+ (RES_POOLCOLL_DOC_BEGIN <= nPoolId &&
+ nPoolId < RES_POOLCOLL_DOC_END) ||
+ (RES_POOLCOLL_HTML_BEGIN <= nPoolId &&
+ nPoolId < RES_POOLCOLL_HTML_END);
+ }
+
+ return bValid;
+}
+
+SwFmt *SwXMLStylesContext_Impl::FindFmtByName( const String& rName,
+ sal_uInt16 eFamily ) const
+{
+ const SwDoc& rDoc = GetSwImport().GetDoc();
+ SwFmt *pFmt = 0;
+ switch( eFamily )
+ {
+ case SFX_STYLE_FAMILY_PARA:
+ pFmt = rDoc.FindTxtFmtCollByName( rName );
+ break;
+ case SFX_STYLE_FAMILY_FRAME:
+ pFmt = rDoc.FindFrmFmtByName( rName );
+ break;
+ case SFX_STYLE_FAMILY_CHAR:
+ pFmt = rDoc.FindCharFmtByName( rName );
+ break;
+ }
+
+ return pFmt;
+}
+
+SwXMLItemSetStyleContext_Impl *SwXMLStylesContext_Impl::FindByPoolId(
+ sal_uInt16 nPoolId ) const
+{
+ SwXMLItemSetStyleContext_Impl *pStyle = 0;
+ sal_uInt16 nCount = GetStyleCount();
+ for( sal_uInt16 i=0; i < nCount && !pStyle; i++ )
+ {
+ SwXMLItemSetStyleContext_Impl *pTmp = GetSwStyle( i );
+ if( pTmp && pTmp->GetPoolId() == nPoolId )
+ pStyle = pTmp;
+ }
+
+ return pStyle;
+}
+
+SvXMLStyleContext *SwXMLStylesContext_Impl::CreateStyleChildContext(
+ sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLStyleContext *pStyle = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetSwImport().GetStyleStylesElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ {
+ case SW_XML_TOK_STYLE_STYLE:
+ pStyle = new SwXMLItemSetStyleContext_Impl( GetSwImport(), nPrefix, rLocalName,
+ xAttrList);
+ break;
+ case SW_XML_TOK_TEXT_LIST_STYLE:
+ pStyle = new SwXMLListStyleContext( GetSwImport(), nPrefix,
+ rLocalName, xAttrList );
+ break;
+ case SW_XML_TOK_TEXT_OUTLINE:
+ pStyle = new SwXMLListStyleContext( GetSwImport(), nPrefix,
+ rLocalName, xAttrList, sal_True );
+ break;
+ default:
+ pStyle = SvXMLStylesContext::CreateStyleChildContext( nPrefix,
+ rLocalName,
+ xAttrList );
+ break;
+ }
+
+ return pStyle;
+}
+#else
+SvXMLStyleContext *SwXMLStylesContext_Impl::CreateStyleStyleChildContext(
+ sal_uInt16 nFamily, sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLStyleContext *pStyle = 0;
+
+ switch( nFamily )
+ {
+ case XML_STYLE_FAMILY_TEXT_PARAGRAPH:
+ pStyle = new SwXMLTextStyleContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList, nFamily, *this );
+ break;
+ case XML_STYLE_FAMILY_TABLE_TABLE:
+ case XML_STYLE_FAMILY_TABLE_COLUMN:
+ case XML_STYLE_FAMILY_TABLE_ROW:
+ case XML_STYLE_FAMILY_TABLE_CELL:
+ pStyle = new SwXMLItemSetStyleContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList, nFamily );
+ break;
+ case XML_STYLE_FAMILY_SD_GRAPHICS_ID:
+ // HACK until CL is back again
+ pStyle = new XMLTextStyleContext( GetImport(), nPrefix,
+ rLocalName, xAttrList, *this );
+ break;
+ default:
+ pStyle = SvXMLStylesContext::CreateStyleStyleChildContext( nFamily,
+ nPrefix,
+ rLocalName,
+ xAttrList );
+ break;
+ }
+
+ return pStyle;
+}
+#endif
+
+SwXMLStylesContext_Impl::SwXMLStylesContext_Impl(
+ SwXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList ) :
+ SvXMLStylesContext( rImport, nPrfx, rLName, xAttrList )
+{
+}
+
+SwXMLStylesContext_Impl::~SwXMLStylesContext_Impl()
+{
+}
+
+#ifndef XML_CORE_API
+sal_Bool SwXMLStylesContext_Impl::InsertStyleFamily( sal_uInt16 nFamily ) const
+{
+ const SwXMLImport& rSwImport = GetSwImport();
+ sal_uInt16 nStyleFamilyMask = rSwImport.GetStyleFamilyMask();
+
+ sal_Bool bIns = sal_True;
+ switch( nFamily )
+ {
+ case XML_STYLE_FAMILY_TEXT_PARAGRAPH:
+ bIns = (nStyleFamilyMask & SFX_STYLE_FAMILY_PARA) != 0;
+ break;
+ case XML_STYLE_FAMILY_TEXT_TEXT:
+ bIns = (nStyleFamilyMask & SFX_STYLE_FAMILY_CHAR) != 0;
+ break;
+ case XML_STYLE_FAMILY_SD_GRAPHICS_ID:
+ bIns = (nStyleFamilyMask & SFX_STYLE_FAMILY_FRAME) != 0;
+ break;
+ case XML_STYLE_FAMILY_TEXT_LIST:
+ bIns = (nStyleFamilyMask & SFX_STYLE_FAMILY_PSEUDO) != 0;
+ break;
+ case XML_STYLE_FAMILY_TEXT_OUTLINE:
+ bIns = !(rSwImport.IsInsertMode() || rSwImport.IsStylesOnlyMode());
+ break;
+ default:
+ bIns = SvXMLStylesContext::InsertStyleFamily( nFamily );
+ break;
+ }
+
+ return bIns;
+}
+
+UniReference < SvXMLImportPropertyMapper > SwXMLStylesContext_Impl::GetImportPropertyMapper(
+ sal_uInt16 nFamily ) const
+{
+ UniReference < SvXMLImportPropertyMapper > xMapper;
+ if( XML_STYLE_FAMILY_SD_GRAPHICS_ID == nFamily )
+ xMapper = ((SvXMLImport *)&GetImport())->GetTextImport()
+ ->GetFrameImportPropertySetMapper();
+ else
+ xMapper = SvXMLStylesContext::GetImportPropertyMapper( nFamily );
+
+ return xMapper;
+}
+
+Reference < XNameContainer > SwXMLStylesContext_Impl::GetStylesContainer(
+ sal_uInt16 nFamily ) const
+{
+ Reference < XNameContainer > xStyles;
+ if( XML_STYLE_FAMILY_SD_GRAPHICS_ID == nFamily )
+ xStyles = ((SvXMLImport *)&GetImport())->GetTextImport()->GetFrameStyles();
+ else
+ xStyles = SvXMLStylesContext::GetStylesContainer( nFamily );
+
+ return xStyles;
+}
+
+OUString SwXMLStylesContext_Impl::GetServiceName( sal_uInt16 nFamily ) const
+{
+ String sServiceName;
+ if( XML_STYLE_FAMILY_SD_GRAPHICS_ID == nFamily )
+ sServiceName = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.style.FrameStyle") );
+ else
+ sServiceName = SvXMLStylesContext::GetServiceName( nFamily );
+
+ return sServiceName;
+}
+#endif
+
+#ifdef XML_CORE_API
+void SwXMLStylesContext_Impl::CopyStylesToDoc()
+{
+ SwXMLImport& rSwImport = GetSwImport();
+ SwDoc& rDoc = rSwImport.GetDoc();
+ SvI18NMap& rI18NMap = rSwImport.GetI18NMap();
+ sal_Bool bInsertMode = rSwImport.IsInsertMode();
+ sal_uInt16 nStyleFamilyMask = rSwImport.GetStyleFamilyMask();
+
+ // The following families are of interest for pass 1
+ sal_uInt16 nFamilies = nStyleFamilyMask &
+ ( SFX_STYLE_FAMILY_FRAME|SFX_STYLE_FAMILY_PARA|
+ SFX_STYLE_FAMILY_CHAR );
+
+ // pass 1: create text, paragraph and frame styles
+ sal_uInt16 nCount = GetStyleCount();
+ for( sal_uInt16 i=0; i<nCount; i++ )
+ {
+ SwXMLItemSetStyleContext_Impl *pStyle = GetSwStyle( i );
+ if( !pStyle )
+ {
+ continue;
+ }
+
+ sal_uInt16 eFamily = pStyle->GetFamily();
+ if( !(nFamilies & eFamily) )
+ {
+ pStyle->SetValid( sal_False );
+ continue;
+ }
+
+ const OUString& rName = pStyle->GetName();
+ if( 0 == rName.getLength() )
+ {
+ pStyle->SetValid( sal_False );
+ continue;
+ }
+ OUString sName =
+ SwXStyleFamilies::GetUIName( rName, (SfxStyleFamily)eFamily );
+
+// sal_uInt16 nPoolId = pStyle->GetPoolId();
+
+ sal_Bool bNewFmt = sal_False;
+ SwFmt *pFmt = FindFmtByName( sName, eFamily );
+ if( !pFmt )
+ {
+ // it is a new format
+ SwGetPoolIdFromName eNameType;
+ if( eFamily & SFX_STYLE_FAMILY_CHAR )
+ eNameType = GET_POOLID_CHRFMT;
+ else if( eFamily & SFX_STYLE_FAMILY_FRAME )
+ eNameType = GET_POOLID_FRMFMT;
+ else
+ eNameType = GET_POOLID_TXTCOLL;
+
+ sal_uInt16 nPoolId = rDoc.GetPoolId( sName, eNameType );
+ bNewFmt = sal_True;
+// sal_Bool bIsUserDefined = (nPoolId & USER_FMT) != 0;
+ sal_Bool bIsUserDefined = nPoolId == USHRT_MAX;
+#if 0
+ if( !bIsUserDefined )
+ {
+ bIsUserDefined = !lcl_xmlfmt_isValidPoolId( nPoolId, eFamily );
+ if( bIsUserDefined )
+ {
+ // If the pool id is invalid create a user style
+ nPoolId |= (USHRT_MAX &
+ ~(COLL_GET_RANGE_BITS + POOLGRP_NOCOLLID));
+ }
+ }
+ else
+ {
+ // The style is not a pool style, but maybe there is
+ // a pool style with this name now?
+ SwGetPoolIdFromName eNameType;
+ if( eFamily & SFX_STYLE_FAMILY_CHAR )
+ eNameType = GET_POOLID_CHRFMT;
+ else if( eFamily & SFX_STYLE_FAMILY_FRAME )
+ eNameType = GET_POOLID_FRMFMT;
+ else
+ eNameType = GET_POOLID_TXTCOLL;
+ sal_uInt16 nId = rDoc.GetPoolId( rName, eNameType );
+ if( nId != USHRT_MAX )
+ {
+ if( FindByPoolId( nId ) )
+ {
+ // There is a style with the new pool id, too.
+ // This means, that the user style will be ignored.
+ continue;
+ }
+ else
+ {
+ bIsUserDefined = sal_False;
+ nPoolId = nId;
+ }
+ }
+ }
+#endif
+
+ if( bIsUserDefined )
+ {
+ if( eFamily & SFX_STYLE_FAMILY_CHAR )
+ {
+ pFmt = rDoc.MakeCharFmt( rName, NULL );
+ pFmt->SetAuto( sal_False );
+ }
+ else if( eFamily & SFX_STYLE_FAMILY_FRAME )
+ {
+ pFmt = rDoc.MakeFrmFmt( rName, NULL );
+ pFmt->SetAuto( sal_False );
+ }
+ else if( pStyle->HasConditions() )
+ {
+ SwTxtFmtColl* pDer = (*rDoc.GetTxtFmtColls())[ 0 ];
+ pFmt = rDoc.MakeCondTxtFmtColl( rName, pDer );
+ }
+ else
+ {
+ SwTxtFmtColl* pDer = (*rDoc.GetTxtFmtColls())[ 0 ];
+ pFmt = rDoc.MakeTxtFmtColl( rName, pDer );
+ }
+
+// pFmt->SetPoolFmtId( nPoolId );
+// if( pStyle->GetHelpFile().getLength() )
+// pFmt->SetPoolHlpFileId
+// ( (sal_Int8) rDoc.SetDocPattern(
+// pStyle->GetHelpFile() ) );
+// pFmt->SetPoolHelpId( (sal_uInt16)pStyle->GetHelpId() );
+ }
+ else
+ {
+ if( eFamily & SFX_STYLE_FAMILY_CHAR )
+ {
+ sal_uInt16 nStyleCnt = rDoc.GetCharFmts()->Count();
+ pFmt = rDoc.GetCharFmtFromPool( nPoolId );
+ bNewFmt = nStyleCnt != rDoc.GetCharFmts()->Count();
+ }
+ else if( eFamily & SFX_STYLE_FAMILY_FRAME )
+ {
+ sal_uInt16 nStyleCnt = rDoc.GetFrmFmts()->Count();
+ pFmt = rDoc.GetFrmFmtFromPool( nPoolId );
+ bNewFmt = nStyleCnt != rDoc.GetFrmFmts()->Count();
+ }
+ else
+ {
+ sal_uInt16 nStyleCnt = rDoc.GetTxtFmtColls()->Count();
+ pFmt = rDoc.GetTxtCollFromPool( nPoolId );
+ bNewFmt = nStyleCnt != rDoc.GetTxtFmtColls()->Count();
+ }
+
+ // If the name of the pool style has been changed, add
+ // a i18n map entry.
+ if( String(rName) != pFmt->GetName() )
+ rI18NMap.Add( eFamily, pStyle->GetName(), pFmt->GetName() );
+ }
+ }
+#if 0
+ else if( (nPoolId & USER_FMT) != 0 )
+ {
+ // If a pool style has been renamed it may have the same
+ // name a a user style. If this is the case, the user style
+ // will be ignored.
+ sal_uInt16 nId = pFmt->GetPoolFmtId();
+ SwXMLItemSetStyleContext_Impl *pTmp;
+ if( nId != nPoolId && (nId & USER_FMT) == 0 &&
+ (pTmp = FindByPoolId( nPoolId )) != 0 &&
+ pTmp->GetFmt() == pFmt )
+ {
+ pStyle->SetValid( sal_False );
+ continue;
+ }
+ }
+#endif
+
+ pStyle->SetFmt( pFmt );
+
+ if( !bInsertMode || bNewFmt )
+ {
+ if( pStyle->GetItemSet() )
+ {
+ pFmt->ResetAllAttr(); // delete default attributes
+
+ ((SwAttrSet&) pFmt->GetAttrSet()).Put( *pStyle->GetItemSet() );
+ }
+ SwTxtFmtColl* pColl = pStyle->GetColl();
+ if( pColl )
+ {
+ ((SwAttrSet&) pColl->GetAttrSet()).SetModifyAtAttr( pColl );
+ }
+ pFmt->SetAutoUpdateFmt( pStyle->IsAutoUpdate() );
+ }
+ else
+ {
+ pStyle->SetValid( sal_False );
+ }
+ }
+
+ // pass 2: connect parent/next styles and create list styles
+ for( i=0; i<nCount; i++ )
+ {
+ SwXMLItemSetStyleContext_Impl *pStyle = GetSwStyle( i );
+ if( !pStyle )
+ {
+ if( (nStyleFamilyMask & SFX_STYLE_FAMILY_PSEUDO) != 0 )
+ {
+ SwXMLListStyleContext *pListStyle = GetSwListStyle( i );
+ if( pListStyle )
+ pListStyle->InsertNumRule( sal_False );
+ }
+ continue;
+ }
+ else if( !pStyle->IsValid() )
+ continue;
+
+ sal_uInt16 eFamily = pStyle->GetFamily();
+ if( (nFamilies & eFamily) != 0 )
+ {
+ pStyle->ConnectParent();
+ pStyle->ConnectFollow();
+
+ // The format has been changed
+ SwFmtChg aHint( pStyle->GetFmt() );
+ pStyle->GetFmt()->Modify( &aHint, &aHint );
+ }
+ }
+
+ // pass 3: connect conditions and list styles
+ for( i=0; i<nCount; i++ )
+ {
+ SwXMLItemSetStyleContext_Impl *pStyle = GetSwStyle( i );
+ if( pStyle && pStyle->IsValid() &&
+ (nFamilies & pStyle->GetFamily()) != 0 )
+ {
+ pStyle->ConnectListStyle();
+ if( pStyle->HasConditions() )
+ pStyle->ConnectConditions();
+ }
+ }
+}
+
+void SwXMLStylesContext_Impl::CopyAutoStylesToDoc()
+{
+ // pass 1: create list styles
+ sal_uInt16 nCount = GetStyleCount();
+ if( (GetSwImport().GetStyleFamilyMask() & SFX_STYLE_FAMILY_PSEUDO) != 0 )
+ {
+ for( sal_uInt16 i=0; i<nCount; i++ )
+ {
+ SwXMLListStyleContext *pListStyle = GetSwListStyle( i );
+ if( pListStyle && !pListStyle->IsOutline() )
+ pListStyle->InsertNumRule( sal_True );
+ }
+ }
+
+ // pass 3: connect list styles
+ if( (GetSwImport().GetStyleFamilyMask() & SFX_STYLE_FAMILY_PARA) != 0 )
+ {
+ for( sal_uInt16 i=0; i<nCount; i++ )
+ {
+ SwXMLItemSetStyleContext_Impl *pStyle = GetSwStyle( i );
+ if( pStyle && SFX_STYLE_FAMILY_PARA == pStyle->GetFamily() )
+ {
+ pStyle->ConnectAutoListStyle();
+ }
+ }
+ }
+}
+#endif
+
+// ---------------------------------------------------------------------
+
+SvXMLImportContext *SwXMLImport::CreateStylesContext(
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ sal_Bool bAuto )
+{
+ SvXMLImportContext *pContext =
+ new SwXMLStylesContext_Impl( *this, XML_NAMESPACE_OFFICE, rLocalName,
+ xAttrList );
+ if( bAuto )
+ xAutoStyles = pContext;
+ else
+ xStyles = pContext;
+
+ return pContext;
+}
+
+void SwXMLImport::InsertStyles()
+{
+ sal_Bool bStylesValid = xStyles.Is();
+ bAutoStylesValid = xAutoStyles.Is();
+
+ if( bStylesValid )
+#ifdef XML_CORE_API
+ ((SwXMLStylesContext_Impl *)&xStyles)->CopyStylesToDoc();
+#else
+ ((SwXMLStylesContext_Impl *)&xStyles)->CopyStylesToDoc(
+ !IsInsertMode() );
+#endif
+ xStyles = 0;
+
+ if( bAutoStylesValid )
+#ifdef XML_CORE_API
+ ((SwXMLStylesContext_Impl *)&xAutoStyles)->CopyAutoStylesToDoc();
+#else
+ GetTextImport()->SetAutoStyles( (SwXMLStylesContext_Impl *)&xAutoStyles );
+#endif
+ else
+ xAutoStyles = 0;
+}
+
+sal_Bool SwXMLImport::FindAutomaticStyle(
+#ifdef XML_CORE_API
+ SfxStyleFamily eFamily,
+ sal_uInt16 nSubFamily,
+#else
+ sal_uInt16 nFamily,
+#endif
+ const OUString& rName,
+ const SfxItemSet **ppItemSet,
+ OUString *pParent ) const
+{
+ const SwXMLItemSetStyleContext_Impl *pStyle = 0;
+ if( bAutoStylesValid && xAutoStyles.Is() )
+ {
+#ifdef XML_CORE_API
+ pStyle = PTR_CAST( SwXMLItemSetStyleContext_Impl,
+ ((SwXMLStylesContext_Impl *)&xAutoStyles)->
+ FindStyleChildContext( eFamily, nSubFamily, rName,
+ sal_True ) );
+#else
+ pStyle = PTR_CAST( SwXMLItemSetStyleContext_Impl,
+ ((SwXMLStylesContext_Impl *)&xAutoStyles)->
+ FindStyleChildContext( nFamily, rName,
+ sal_True ) );
+#endif
+ if( pStyle )
+ {
+ if( ppItemSet )
+ (*ppItemSet) = pStyle->GetItemSet();
+ if( pParent )
+ *pParent = pStyle->GetParent();
+ }
+ }
+
+ return pStyle != 0;
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/xmlfmt.cxx,v 1.1.1.1 2000-09-18 17:15:00 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.42 2000/09/18 16:05:05 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.41 2000/09/18 11:58:02 mib
+ text frames/graphics import and export continued
+
+ Revision 1.40 2000/08/31 14:26:32 mib
+ conditional styles
+
+ Revision 1.39 2000/08/24 11:16:41 mib
+ text import continued
+
+ Revision 1.38 2000/08/10 10:22:15 mib
+ #74404#: Adeptions to new XSL/XLink working draft
+
+ Revision 1.37 2000/07/27 08:06:34 mib
+ text import continued
+
+ Revision 1.36 2000/07/21 12:55:15 mib
+ text import/export using StarOffice API
+
+ Revision 1.35 2000/07/07 13:58:36 mib
+ text styles using StarOffice API
+
+ Revision 1.34 2000/06/26 08:31:15 mib
+ removed SfxStyleFamily
+
+ Revision 1.33 2000/06/08 09:45:54 aw
+ changed to use functionality from xmloff project now
+
+ Revision 1.32 2000/05/03 12:08:05 mib
+ unicode
+
+ Revision 1.31 2000/03/13 14:33:44 mib
+ UNO3
+
+ Revision 1.30 2000/03/06 10:46:10 mib
+ #72585#: toInt32
+
+ Revision 1.29 2000/02/18 09:20:12 mib
+ #70271#: initialization of pContext was missing
+
+ Revision 1.28 2000/02/17 14:40:30 mib
+ #70271#: XML table import
+
+ Revision 1.26 2000/01/27 08:59:02 mib
+ #70271#: outline numbering
+
+ Revision 1.25 2000/01/20 10:03:15 mib
+ #70271#: Lists reworked
+
+ Revision 1.24 2000/01/06 15:08:27 mib
+ #70271#:separation of text/layout, cond. styles, adaptions to wd-xlink-19991229
+
+ Revision 1.23 1999/12/13 08:28:25 mib
+ #70271#: Support for element items added
+
+ Revision 1.22 1999/12/06 11:41:33 mib
+ #70258#: Container item for unkown attributes
+
+ Revision 1.21 1999/11/26 11:13:57 mib
+ loading of styles only and insert mode
+
+ Revision 1.20 1999/11/22 15:52:34 os
+ headers added
+
+ Revision 1.19 1999/11/17 20:08:49 nn
+ document language
+
+ Revision 1.18 1999/11/12 14:50:28 mib
+ meta import and export reactivated
+
+ Revision 1.17 1999/11/12 11:43:03 mib
+ using item mapper, part iii
+
+ Revision 1.16 1999/11/10 15:08:09 mib
+ Import now uses XMLItemMapper
+
+ Revision 1.15 1999/11/09 15:40:08 mib
+ Using XMLItemMapper for export
+
+ Revision 1.14 1999/11/05 19:44:11 nn
+ handle office:meta
+
+ Revision 1.13 1999/11/01 11:38:50 mib
+ List style import
+
+ Revision 1.12 1999/10/25 10:41:48 mib
+ Using new OUString ASCII methods
+
+ Revision 1.11 1999/10/22 09:49:16 mib
+ List style export
+
+ Revision 1.10 1999/10/15 12:37:05 mib
+ integrated SvXMLStyle into SvXMLStyleContext
+
+ Revision 1.9 1999/10/08 11:47:45 mib
+ moved some file to SVTOOLS/SVX
+
+ Revision 1.8 1999/10/01 13:02:51 mib
+ no comparisons between OUString and char* any longer
+
+ Revision 1.7 1999/09/28 10:47:58 mib
+ char fmts again
+
+ Revision 1.6 1999/09/28 08:31:15 mib
+ char fmts, hints
+
+ Revision 1.5 1999/09/23 11:53:58 mib
+ i18n, token maps and hard paragraph attributes
+
+ Revision 1.4 1999/09/22 11:56:57 mib
+ string -> wstring
+
+ Revision 1.3 1999/08/19 12:57:42 MIB
+ attribute import added
+
+
+ Rev 1.2 19 Aug 1999 14:57:42 MIB
+ attribute import added
+
+ Rev 1.1 18 Aug 1999 17:03:36 MIB
+ Style import
+
+ Rev 1.0 13 Aug 1999 16:18:10 MIB
+ Initial revision.
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/xmlfmte.cxx b/sw/source/filter/xml/xmlfmte.cxx
new file mode 100644
index 000000000000..ebac28eab0ff
--- /dev/null
+++ b/sw/source/filter/xml/xmlfmte.cxx
@@ -0,0 +1,1144 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlfmte.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTS_HXX //autogen wg. SwFmtChg
+#include <hints.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_TEXT_XTEXTDOCUMENT_HPP_
+#include <com/sun/star/text/XTextDocument.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_TEXT_XTEXT_HPP_
+#include <com/sun/star/text/XText.hpp>
+#endif
+#ifndef _RTL_USTRBUF_HXX_
+#include <rtl/ustrbuf.hxx>
+#endif
+
+#ifndef _SVSTDARR_STRINGSSORT_DECL
+#define _SVSTDARR_STRINGSSORT
+#include <svtools/svstdarr.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLNMSPE_HXX
+#include <xmloff/xmlnmspe.hxx>
+#endif
+
+#ifndef _XMLOFF_ATTRLIST_HXX
+#include <xmloff/attrlist.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLASTPL_HXX
+#include <xmloff/xmlastpl.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLITMPR_HXX
+#include <xmloff/xmlexpit.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLKYWD_HXX
+#include <xmloff/xmlkywd.hxx>
+#endif
+
+#ifndef _XMLOFF_NMSPMAP_HXX
+#include <xmloff/nmspmap.hxx>
+#endif
+
+#ifndef _XMLOFF_TXTSTYLE_HXX
+#include <xmloff/txtstyle.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLPROPERTYSETMAPPER_HXX
+#include <xmloff/xmlprmap.hxx>
+#endif
+#ifndef _XMLOFF_XMLPROPMAPPINGTYPES_HXX
+#include <xmloff/maptype.hxx>
+#endif
+#ifndef _XMLOFF_XMLTYPES_HXX
+#include <xmloff/xmltypes.hxx>
+#endif
+#ifndef _XMLOFF_TXTPARAE_HXX
+#include <xmloff/txtparae.hxx>
+#endif
+#ifndef _XMLOFF_TXTPRMAP_HXX
+#include <xmloff/txtprmap.hxx>
+#endif
+#ifndef _XMLOFF_XMLEXPPR_HXX
+#include <xmloff/xmlexppr.hxx>
+#endif
+#ifndef _XMLOFF_XMLASTPLP_HXX
+#include <xmloff/xmlaustp.hxx>
+#endif
+#ifndef _XMLOFF_FAMILIES_HXX_
+#include <xmloff/families.hxx>
+#endif
+
+#ifndef _FORMAT_HXX //autogen wg. SwFmt
+#include <format.hxx>
+#endif
+#ifndef _FMTCOL_HXX //autogen wg. SwTxtFmtColl
+#include <fmtcol.hxx>
+#endif
+#ifndef _CHARFMT_HXX //autogen wg. SwCharFmt
+#include <charfmt.hxx>
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+#include "docary.hxx"
+#ifndef _NDTXT_HXX //autogen wg. SwTxtNode
+#include <ndtxt.hxx>
+#endif
+#ifndef _SECTION_HXX //autogen wg. SwSection
+#include <section.hxx>
+#endif
+#ifndef _PAM_HXX //autogen wg. SwPaM
+#include <pam.hxx>
+#endif
+#ifndef _TXATBASE_HXX
+#include <txatbase.hxx>
+#endif
+#ifndef _XMLEXP_HXX
+#include "xmlexp.hxx"
+#endif
+#ifndef _XMLECTXT_HXX
+#include "xmlectxt.hxx"
+#endif
+#ifndef _XMLFMTE_HXX
+#include "xmlfmte.hxx"
+#endif
+#ifndef _XMLTEXTE_HXX
+#include "xmltexte.hxx"
+#endif
+
+#ifndef _SWDOCSH_HXX
+#include "docsh.hxx"
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+#ifndef _XMLOFF_XMLUCONV_HXX
+#include <xmloff/xmluconv.hxx>
+#endif
+#ifndef XML_CORE_API
+#ifndef _XMLOFF_XMLTEXTLISTAUTOSTYLEPOOL_HXX
+#include <xmloff/XMLTextListAutoStylePool.hxx>
+#endif
+#endif
+
+#ifndef _COM_SUN_STAR_TEXT_XTEXTFIELD_HPP_
+#include <com/sun/star/text/XTextField.hpp>
+#endif
+
+#ifndef _UNOFIELD_HXX
+#include <unofield.hxx>
+#endif
+
+#ifndef _XMLOFF_TXTFLDE_HXX
+#include <xmloff/txtflde.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLNUMFE_HXX
+#include <xmloff/xmlnumfe.hxx>
+#endif
+
+#ifndef _UNOSTYLE_HXX
+#include "unostyle.hxx"
+#endif
+
+
+using namespace rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::xml::sax;
+using namespace ::com::sun::star::style;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::text;
+
+void SwXMLExport::ExportFmt( const SwFmt& rFmt, const char *pFamily )
+{
+ // <style:style ...>
+ CheckAttrList();
+
+ // style:family="..."
+ const sal_Char *pStr = pFamily;
+#ifdef XML_CORE_API
+ SfxStyleFamily eFamily = SFX_STYLE_FAMILY_ALL;
+ switch( rFmt.Which() )
+ {
+ case RES_CHRFMT:
+ if( !pStr )
+ pStr = sXML_text;
+ eFamily = SFX_STYLE_FAMILY_CHAR;
+ break;
+ case RES_FRMFMT:
+ if( !pStr )
+ pStr = sXML_frame;
+ eFamily = SFX_STYLE_FAMILY_FRAME;
+ break;
+ case RES_TXTFMTCOLL:
+ case RES_CONDTXTFMTCOLL:
+ if( !pStr )
+ pStr = sXML_paragraph;
+ eFamily = SFX_STYLE_FAMILY_PARA;
+ break;
+ case RES_FLYFRMFMT:
+ case RES_GRFFMTCOLL:
+ DBG_ASSERT( pStr, "SwXMLExport::ExportFmt: which id unexpected" );
+ break;
+ default:
+ DBG_ASSERT( pStr, "SwXMLExport::ExportFmt: which id unknown" );
+ break;
+ }
+ // style:name="..."
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_name,
+ SwXStyleFamilies::GetProgrammaticName( rFmt.GetName(), eFamily ) );
+#else
+ DBG_ASSERT( RES_FRMFMT==rFmt.Which(), "frame format expected" );
+ if( RES_FRMFMT != rFmt.Which() )
+ return;
+ DBG_ASSERT( pStr, "family must be specified" );
+ // style:name="..."
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_name, rFmt.GetName() );
+#endif
+
+ if( pStr )
+ AddAttributeASCII( XML_NAMESPACE_STYLE, sXML_family, pStr );
+
+#ifdef XML_CORE_API
+ // register name to prevent it from beeing reused as an automtic
+ // style name
+ if( SFX_STYLE_FAMILY_ALL != eFamily )
+ pItemSetAutoStylePool->RegisterName( eFamily, rFmt.GetName() );
+#endif
+
+ // style:parent-style-name="..." (if its not the default only)
+ const SwFmt* pParent = rFmt.DerivedFrom();
+ // Parent-Namen nur uebernehmen, wenn kein Default
+ if( pParent && !pParent->IsDefault() )
+ {
+#ifdef XML_CORE_API
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_parent_style_name,
+ SwXStyleFamilies::GetProgrammaticName( pParent->GetName(),
+ eFamily ) );
+#else
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_parent_style_name,
+ pParent->GetName() );
+#endif
+ }
+
+#ifdef XML_CORE_API
+ // style:next-style-name="..."
+ // (if its not the default and not the same style only)
+ if( RES_TXTFMTCOLL == rFmt.Which() || RES_CONDTXTFMTCOLL == rFmt.Which() )
+ {
+ const SwTxtFmtColl& rFollow =
+ ((const SwTxtFmtColl&)rFmt).GetNextTxtFmtColl();
+ if( !rFollow.IsDefault() && &rFollow != &rFmt )
+ {
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_next_style_name,
+ SwXStyleFamilies::GetProgrammaticName( rFollow.GetName(),
+ eFamily ) );
+ }
+ }
+
+#if 0
+ // style:pool-id="..."
+ if( USHRT_MAX != rFmt.GetPoolFmtId() )
+ {
+ OUStringBuffer sTmp( 5L );
+ sTmp.append( (sal_Int32)rFmt.GetPoolFmtId() );
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_pool_id,
+ sTmp.makeStringAndClear() );
+ }
+
+ // style:help-file-name="..." and style:help-id="..."
+ if( UCHAR_MAX != rFmt.GetPoolHlpFileId() )
+ {
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_help_file_name,
+ *pDoc->GetDocPattern( rFmt.GetPoolHlpFileId() ) );
+ OUStringBuffer sTmp( 5L );
+ sTmp.append( (sal_Int32)rFmt.GetPoolHelpId() );
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_help_id,
+ sTmp.makeStringAndClear() );
+ }
+#endif
+
+ // style:auto-update="..."
+ if( rFmt.IsAutoUpdateFmt() )
+ {
+ AddAttributeASCII( XML_NAMESPACE_STYLE, sXML_auto_update, sXML_true );
+ }
+
+ // text:list-style-name
+ if( RES_TXTFMTCOLL == rFmt.Which() || RES_CONDTXTFMTCOLL == rFmt.Which() )
+ {
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rFmt.GetAttrSet().GetItemState( RES_PARATR_NUMRULE,
+ sal_False, &pItem ) )
+ {
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_list_style_name,
+ SwXStyleFamilies::GetProgrammaticName(
+ ((const SwNumRuleItem *)pItem)->GetValue(),
+ SFX_STYLE_FAMILY_PSEUDO ) );
+ }
+ }
+#else
+ ASSERT( USHRT_MAX == rFmt.GetPoolFmtId(), "pool ids arent'supported" );
+ ASSERT( UCHAR_MAX == rFmt.GetPoolHlpFileId(), "help ids aren't supported" );
+#endif
+
+ {
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_STYLE, sXML_style,
+ sal_True, sal_True );
+
+#ifdef XML_CORE_API
+ switch( rFmt.Which() )
+ {
+ case RES_TXTFMTCOLL:
+ case RES_CONDTXTFMTCOLL:
+ case RES_CHRFMT:
+ GetParaItemMapper().exportXML( GetDocHandler(),
+ rFmt.GetAttrSet(),
+ GetTwipUnitConverter(),
+ GetNamespaceMap(),
+ XML_EXPORT_FLAG_IGN_WS );
+ break;
+ case RES_FRMFMT:
+ {
+#endif
+ SvXMLItemMapEntriesRef xItemMap;
+ if( sXML_table == pStr )
+ xItemMap = xTableItemMap;
+ else if( sXML_table_row == pStr )
+ xItemMap = xTableRowItemMap;
+ else if( sXML_table_cell == pStr )
+ xItemMap = xTableCellItemMap;
+
+ if( xItemMap.Is() )
+ {
+ SvXMLExportItemMapper& rItemMapper = GetTableItemMapper();
+ rItemMapper.setMapEntries( xItemMap );
+
+ GetTableItemMapper().exportXML( GetDocHandler(),
+ rFmt.GetAttrSet(),
+ GetTwipUnitConverter(),
+ GetNamespaceMap(),
+ XML_EXPORT_FLAG_IGN_WS );
+ }
+#ifdef XML_CORE_API
+ }
+ break;
+ default:
+ DBG_ASSERT( !this,
+ "SwXMLExport::ExportFmt: attribute export missing" );
+ break;
+ }
+
+ if( RES_CONDTXTFMTCOLL == rFmt.Which() )
+ {
+ const SwFmtCollConditions& rConditions =
+ ((SwConditionTxtFmtColl&)rFmt). GetCondColls();
+ for( sal_uInt16 i=0; i < rConditions.Count(); i++ )
+ {
+ const SwCollCondition& rCond = *rConditions[i];
+
+ const sal_Char *pFunc = 0;
+ OUStringBuffer sBuffer( 20 );
+ switch( rCond.GetCondition() )
+ {
+ case PARA_IN_LIST:
+ pFunc = sXML_list_level;
+ sBuffer.append( (sal_Int32)(rCond.GetSubCondition()+1) );
+ break;
+ case PARA_IN_OUTLINE:
+ pFunc = sXML_outline_level;
+ sBuffer.append( (sal_Int32)(rCond.GetSubCondition()+1) );
+ break;
+ case PARA_IN_FRAME:
+ pFunc = sXML_text_box;
+ break;
+ case PARA_IN_TABLEHEAD:
+ pFunc = sXML_table_header;
+ break;
+ case PARA_IN_TABLEBODY:
+ pFunc = sXML_table;
+ break;
+ case PARA_IN_SECTION:
+ pFunc = sXML_section;
+ break;
+ case PARA_IN_FOOTENOTE:
+ pFunc = sXML_footnote;
+ break;
+ case PARA_IN_FOOTER:
+ pFunc = sXML_footer;
+ break;
+ case PARA_IN_HEADER:
+ pFunc = sXML_header;
+ break;
+ case PARA_IN_ENDNOTE:
+ pFunc = sXML_endnote;
+ break;
+ }
+ OUString sVal( sBuffer.makeStringAndClear() );
+
+ DBG_ASSERT( pFunc, "SwXMLExport::ExportFmt: unknon condition" );
+ if( pFunc )
+ {
+ sBuffer.appendAscii( pFunc );
+ sBuffer.append( (sal_Unicode)'(' );
+ sBuffer.append( (sal_Unicode)')' );
+ if( sVal.getLength() )
+ {
+ sBuffer.append( (sal_Unicode)'=' );
+ sBuffer.append( sVal );
+ }
+
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_condition,
+ sBuffer.makeStringAndClear() );
+ const String& rName =
+ SwXStyleFamilies::GetProgrammaticName(
+ rCond.GetTxtFmtColl()->GetName(),
+ SFX_STYLE_FAMILY_PARA );
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_apply_style_name,
+ rName );
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_STYLE,
+ sXML_map, sal_True, sal_True );
+ }
+ }
+ }
+#endif
+ }
+}
+
+#ifndef XML_CORE_API
+
+SwXMLTextParagraphExport::SwXMLTextParagraphExport(
+ SwXMLExport& rExp,
+ SvXMLAutoStylePoolP& rAutoStylePool ) :
+ XMLTextParagraphExport( rExp, rAutoStylePool ),
+ sTextTable( RTL_CONSTASCII_USTRINGPARAM( "TextTable" ) )
+{
+}
+
+SwXMLTextParagraphExport::~SwXMLTextParagraphExport()
+{
+}
+
+void SwXMLTextParagraphExport::exportStyleContent(
+ const Reference< XStyle > & rStyle )
+{
+
+ const SwXStyle* pStyle = 0;
+ Reference<XUnoTunnel> xStyleTunnel( rStyle, UNO_QUERY);
+ if( xStyleTunnel.is() )
+ {
+ pStyle = (SwXStyle*)xStyleTunnel->getSomething(
+ SwXStyle::getUnoTunnelId() );
+ }
+ if( pStyle && SFX_STYLE_FAMILY_PARA == pStyle->GetFamily() )
+ {
+ const SwDoc& rDoc = ((SwXMLExport&)GetExport()).GetDoc();
+ const SwTxtFmtColl *pColl =
+ rDoc.FindTxtFmtCollByName( SwXStyleFamilies::GetUIName( pStyle->GetStyleName(), SFX_STYLE_FAMILY_PARA ) );
+ ASSERT( pColl, "There is the text collection?" );
+ if( pColl && RES_CONDTXTFMTCOLL == pColl->Which() )
+ {
+ const SwFmtCollConditions& rConditions =
+ ((const SwConditionTxtFmtColl *)pColl)->GetCondColls();
+ for( sal_uInt16 i=0; i < rConditions.Count(); i++ )
+ {
+ const SwCollCondition& rCond = *rConditions[i];
+
+ const sal_Char *pFunc = 0;
+ OUStringBuffer sBuffer( 20 );
+ switch( rCond.GetCondition() )
+ {
+ case PARA_IN_LIST:
+ pFunc = sXML_list_level;
+ sBuffer.append( (sal_Int32)(rCond.GetSubCondition()+1) );
+ break;
+ case PARA_IN_OUTLINE:
+ pFunc = sXML_outline_level;
+ sBuffer.append( (sal_Int32)(rCond.GetSubCondition()+1) );
+ break;
+ case PARA_IN_FRAME:
+ pFunc = sXML_text_box;
+ break;
+ case PARA_IN_TABLEHEAD:
+ pFunc = sXML_table_header;
+ break;
+ case PARA_IN_TABLEBODY:
+ pFunc = sXML_table;
+ break;
+ case PARA_IN_SECTION:
+ pFunc = sXML_section;
+ break;
+ case PARA_IN_FOOTENOTE:
+ pFunc = sXML_footnote;
+ break;
+ case PARA_IN_FOOTER:
+ pFunc = sXML_footer;
+ break;
+ case PARA_IN_HEADER:
+ pFunc = sXML_header;
+ break;
+ case PARA_IN_ENDNOTE:
+ pFunc = sXML_endnote;
+ break;
+ }
+ OUString sVal( sBuffer.makeStringAndClear() );
+
+ DBG_ASSERT( pFunc, "SwXMLExport::ExportFmt: unknon condition" );
+ if( pFunc )
+ {
+ sBuffer.appendAscii( pFunc );
+ sBuffer.append( (sal_Unicode)'(' );
+ sBuffer.append( (sal_Unicode)')' );
+ if( sVal.getLength() )
+ {
+ sBuffer.append( (sal_Unicode)'=' );
+ sBuffer.append( sVal );
+ }
+
+ GetExport().AddAttribute( XML_NAMESPACE_STYLE,
+ sXML_condition,
+ sBuffer.makeStringAndClear() );
+ const String& rName =
+ SwXStyleFamilies::GetProgrammaticName(
+ rCond.GetTxtFmtColl()->GetName(),
+ SFX_STYLE_FAMILY_PARA );
+ GetExport().AddAttribute( XML_NAMESPACE_STYLE,
+ sXML_apply_style_name, rName );
+ SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_STYLE,
+ sXML_map, sal_True, sal_True );
+ }
+ }
+ }
+ }
+}
+
+#endif
+
+void SwXMLExport::_ExportStyles( sal_Bool bUsed )
+{
+#ifdef XML_CORE_API
+ // text collections
+ SvStringsSort *pCollNames = bUsed ? new SvStringsSort : 0;
+ sal_uInt16 nCount = pDoc->GetTxtFmtColls()->Count();
+ sal_uInt16 i;
+ for( i=0; i<nCount; i++ )
+ {
+ const SwTxtFmtColl *pColl = (*pDoc->GetTxtFmtColls())[i];
+ if( ( !bUsed || pDoc->IsUsed( *pColl ) ) && !pColl->IsDefault() )
+ {
+ ExportFmt( *pColl );
+ if( pCollNames )
+ pCollNames->Insert( (String *)&pColl->GetName() );
+ }
+ }
+ if( bUsed )
+ {
+ // Even if some next styles have not been used, they have to be
+ // exported.
+ for( i = 0; i < nCount; i++ )
+ {
+ const SwTxtFmtColl* pColl = (*pDoc->GetTxtFmtColls())[ i ];
+ if( pColl != &pColl->GetNextTxtFmtColl() &&
+ !pCollNames->Seek_Entry(
+ (String *)&pColl->GetNextTxtFmtColl().GetName() ) )
+ {
+ ExportFmt( pColl->GetNextTxtFmtColl() );
+ pCollNames->Insert(
+ (String *)&pColl->GetNextTxtFmtColl().GetName() );
+ }
+ }
+ delete pCollNames;
+ }
+
+ // char fmts
+ nCount = pDoc->GetCharFmts()->Count();
+ for( i=0; i<nCount; i++ )
+ {
+ const SwCharFmt *pFmt = (*pDoc->GetCharFmts())[i];
+ if( ( !bUsed || pDoc->IsUsed( *pFmt ) ) && !pFmt->IsDefault() )
+ ExportFmt( *pFmt );
+ }
+
+ // num rules
+ ExportNumRules( sal_False, bUsed );
+#else
+ GetTextParagraphExport()->exportTextStyles( bUsed );
+#endif
+}
+
+// ---------------------------------------------------------------------
+
+#ifdef XML_CORE_API
+void SwXMLExport::AddTextAutoStyle( const SfxPoolItem& rItem )
+{
+ SfxItemSet aItemSet( pDoc->GetAttrPool(),
+ RES_CHRATR_BEGIN, RES_CHRATR_END - 1,
+ RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END - 1, 0 );
+ aItemSet.Put( rItem );
+ pItemSetAutoStylePool->Add( SFX_STYLE_FAMILY_CHAR, aItemSet );
+}
+
+void SwXMLExport::AddParaAutoStyle( const OUString& rParent,
+ const SfxItemSet& rItemSet )
+{
+ pItemSetAutoStylePool->Add( SFX_STYLE_FAMILY_PARA,
+ SwXStyleFamilies::GetProgrammaticName(rParent, SFX_STYLE_FAMILY_PARA ),
+ rItemSet );
+}
+
+OUString SwXMLExport::FindTextAutoStyle( const SfxPoolItem& rItem )
+{
+ SfxItemSet aItemSet( pDoc->GetAttrPool(),
+ RES_CHRATR_BEGIN, RES_CHRATR_END - 1,
+ RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END - 1, 0 );
+ aItemSet.Put( rItem );
+ return pItemSetAutoStylePool->Find( SFX_STYLE_FAMILY_CHAR, aItemSet );
+}
+
+OUString SwXMLExport::FindParaAutoStyle( const OUString& rParent,
+ const SfxItemSet& rItemSet )
+{
+ return pItemSetAutoStylePool->Find(
+ SFX_STYLE_FAMILY_PARA,
+ SwXStyleFamilies::GetProgrammaticName(rParent, SFX_STYLE_FAMILY_PARA ),
+ rItemSet );
+}
+
+void SwXMLExport::ExportTxtNodeAutoStyles( const SwTxtNode& rTxtNd,
+ xub_StrLen nStart, xub_StrLen nEnd,
+ sal_Bool bExportWholeNode )
+{
+ const SfxItemSet *pItemSet = rTxtNd.GetpSwAttrSet();
+ if( pItemSet )
+ {
+ const SwFmtColl& rColl = rTxtNd.GetAnyFmtColl();
+ OUString sParent( rColl.GetName() );
+ AddParaAutoStyle( sParent, *pItemSet );
+
+ if( rTxtNd.GetCondFmtColl() &&
+ &rColl != rTxtNd.GetFmtColl() )
+ {
+ const SwFmtColl *pColl = rTxtNd.GetFmtColl();
+ sParent = pColl->GetName();
+ AddParaAutoStyle( sParent, *pItemSet );
+ }
+ }
+
+ xub_StrLen nPos = pCurPaM->GetPoint()->nContent.GetIndex();
+ xub_StrLen nEndPos = rTxtNd.GetTxt().Len();
+ if( pCurPaM->GetPoint()->nNode == pCurPaM->GetMark()->nNode )
+ nEndPos = pCurPaM->GetMark()->nContent.GetIndex();
+
+ const SwpHints *pHints = rTxtNd.GetpSwpHints();
+ sal_uInt16 nHintCount = pHints ? pHints->Count() : 0;
+ sal_uInt16 nHintPos = 0;
+ const SwTxtAttr * pTxtAttr = 0;
+
+ if( nHintCount && nPos > *( pTxtAttr = (*pHints)[0] )->GetStart() )
+ {
+ do
+ {
+ nHintPos++;
+ sal_uInt16 nWhich = pTxtAttr->Which();
+ if( pTxtAttr->GetEnd() &&
+ ( (nWhich >= RES_CHRATR_BEGIN && nWhich < RES_CHRATR_END) ||
+ (nWhich >= RES_UNKNOWNATR_BEGIN &&
+ nWhich < RES_UNKNOWNATR_END) ) )
+ {
+ xub_StrLen nHtEnd = *pTxtAttr->GetEnd(),
+ nHtStt = *pTxtAttr->GetStart();
+ if( (bExportWholeNode || nHtEnd > nPos) &&
+ nHtEnd != nHtStt )
+ {
+ AddTextAutoStyle( pTxtAttr->GetAttr() );
+ }
+ }
+
+ }
+ while( nHintPos < nHintCount &&
+ nPos > *( pTxtAttr = (*pHints)[nHintPos ] )->GetStart() );
+ }
+
+ for( ; nPos < nEndPos; nPos++ )
+ {
+ if( nHintPos < nHintCount && *pTxtAttr->GetStart() == nPos
+ && nPos != nEndPos )
+ {
+ do
+ {
+ sal_uInt16 nWhich = pTxtAttr->Which();
+ if( pTxtAttr->GetEnd() && *pTxtAttr->GetEnd() != nPos &&
+ ( (nWhich >= RES_CHRATR_BEGIN && nWhich < RES_CHRATR_END) ||
+ (nWhich >= RES_UNKNOWNATR_BEGIN &&
+ nWhich < RES_UNKNOWNATR_END) ) )
+ {
+ AddTextAutoStyle( pTxtAttr->GetAttr() );
+ } else if( nWhich == RES_TXTATR_FIELD ) {
+ // text field found: export AutoStyle
+#ifdef XML_CORE_API
+// Reference < text::XTextField > xFld = new SwXTextField(
+// ((const SwFmtFld&)pTxtAttr->GetAttr()), &GetDoc() );
+//
+// GetTextFieldExport().ExportFieldAutoStyle( xFld );
+#endif
+ }
+ }
+ while( ++nHintPos < nHintCount &&
+ nPos == *( pTxtAttr = (*pHints)[nHintPos] )->GetStart() );
+ }
+ }
+}
+
+void SwXMLExport::ExportSectionAutoStyles( const SwSectionNode& rSectNd )
+{
+ SwNode *pStartNd = pDoc->GetNodes()[rSectNd.GetIndex() + 1];
+ SwNode *pEndNd = pDoc->GetNodes()[rSectNd.EndOfSectionIndex() - 1];
+
+ {
+ SwXMLExpContext aContext( *this, *pStartNd, *pEndNd, 0, STRING_LEN );
+ ExportCurPaMAutoStyles();
+ }
+
+ pCurPaM->GetPoint()->nNode = *rSectNd.EndOfSectionNode();
+}
+
+void SwXMLExport::ExportCurPaMAutoStyles( sal_Bool bExportWholePaM )
+{
+ sal_Bool bFirstNode = sal_True;
+ sal_Bool bExportWholeNode = bExportWholePaM;
+
+ while( pCurPaM->GetPoint()->nNode.GetIndex() <
+ pCurPaM->GetMark()->nNode.GetIndex() ||
+ ( pCurPaM->GetPoint()->nNode.GetIndex() ==
+ pCurPaM->GetMark()->nNode.GetIndex() &&
+ pCurPaM->GetPoint()->nContent.GetIndex() <=
+ pCurPaM->GetMark()->nContent.GetIndex() ) )
+ {
+ SwNode *pNd = pCurPaM->GetNode();
+
+ ASSERT( !(pNd->IsGrfNode() || pNd->IsOLENode()),
+ "SwXMLExport::exportCurPaM: grf or OLE node unexpected" );
+ if( pNd->IsTxtNode() )
+ {
+ SwTxtNode* pTxtNd = pNd->GetTxtNode();
+
+ if( !bFirstNode )
+ pCurPaM->GetPoint()->nContent.Assign( pTxtNd, 0 );
+
+ ExportTxtNodeAutoStyles( *pTxtNd, 0, STRING_LEN, bExportWholeNode );
+ }
+ else if( pNd->IsTableNode() )
+ {
+ ExportTableAutoStyles( *pNd->GetTableNode() );
+ }
+ else if( pNd->IsSectionNode() )
+ {
+ ExportSectionAutoStyles( *pNd->GetSectionNode() );
+ }
+ else if( pNd == &pDoc->GetNodes().GetEndOfContent() )
+ break;
+
+ pCurPaM->GetPoint()->nNode++; // next node
+
+ // if not everything should be exported, the WriteAll flag must be
+ // set for all but the first and last node anyway.
+ bExportWholeNode = bExportWholePaM ||
+ pCurPaM->GetPoint()->nNode.GetIndex() !=
+ pCurPaM->GetMark()->nNode.GetIndex();
+ bFirstNode = sal_False;
+ }
+}
+#endif
+
+void SwXMLExport::_ExportAutoStyles()
+{
+#ifdef XML_CORE_API
+ // export all PaMs
+ SwPaM *pPaM = pOrigPaM;
+ sal_Bool bContinue = sal_True;
+ do
+ {
+ // export PaM content
+ ExportCurPaMAutoStyles( bExportWholeDoc );
+
+ bContinue = pPaM->GetNext() != pOrigPaM;
+
+ // the current PaM must be at the start if this loop finishes
+ pPaM = (SwPaM *)pPaM->GetNext();
+ SetCurPaM( *pPaM, bExportWholeDoc, bExportFirstTableOnly );
+
+ } while( bContinue );
+
+ // text collections
+ ((SvXMLAutoStylePool *)pItemSetAutoStylePool)->exportXML( SFX_STYLE_FAMILY_PARA,
+ GetParaItemMapper(),
+ GetDocHandler(),
+ GetTwipUnitConverter(),
+ GetNamespaceMap() );
+
+ // char fmts
+ ((SvXMLAutoStylePool *)pItemSetAutoStylePool)->exportXML( SFX_STYLE_FAMILY_CHAR,
+ GetParaItemMapper(),
+ GetDocHandler(),
+ GetTwipUnitConverter(),
+ GetNamespaceMap() );
+
+ // num rules
+ ExportNumRules( sal_True, sal_False );
+
+ // text field styles
+// GetNumberFormatExport().Export( GetNamespaceMap() );
+
+#else
+ Reference < XTextDocument > xTextDoc( GetModel(), UNO_QUERY );
+ Reference < XText > xText = xTextDoc->getText();
+
+ GetTextParagraphExport()->collectFrameBoundToPageAutoStyles();
+ GetTextParagraphExport()->collectTextAutoStyles( xText );
+ GetTextParagraphExport()->exportTextAutoStyles();
+ exportAutoDataStyles();
+
+#endif
+
+}
+
+void SwXMLExport::_ExportMasterStyles()
+{
+}
+
+// ---------------------------------------------------------------------
+
+#ifdef XML_CORE_API
+void SwXMLAutoStylePool::exportXML( SvXMLAttributeList& rAttrList,
+ SfxStyleFamily eFamily, const SfxItemSet& rItemSet,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap ) const
+{
+ if( SFX_STYLE_FAMILY_PARA == eFamily )
+ {
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_PARATR_NUMRULE, sal_False,
+ &pItem ) )
+ {
+ OUString sName( rNamespaceMap.GetQNameByKey( XML_NAMESPACE_STYLE,
+ OUString::createFromAscii(sXML_list_style_name) ) );
+ rAttrList.AddAttribute( sName,
+ OUString::createFromAscii( sXML_CDATA ),
+ ((const SwNumRuleItem *)pItem)->GetValue() );
+ }
+ }
+}
+
+SwXMLAutoStylePool::~SwXMLAutoStylePool()
+{
+}
+#else
+
+class SwXMLAutoStylePoolP : public SvXMLAutoStylePoolP
+{
+ SvXMLExport& rExport;
+ const OUString sListStyleName;
+ const OUString sCDATA;
+
+protected:
+
+ virtual void exportStyleAttributes(
+ SvXMLAttributeList& rAttrList,
+ sal_Int32 nFamily,
+ const ::std::vector< XMLPropertyState >& rProperties,
+ const SvXMLExportPropertyMapper& rPropExp,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap) const;
+public:
+
+ SwXMLAutoStylePoolP( SvXMLExport& rExport );
+ virtual ~SwXMLAutoStylePoolP();
+};
+
+void SwXMLAutoStylePoolP::exportStyleAttributes(
+ SvXMLAttributeList& rAttrList,
+ sal_Int32 nFamily,
+ const ::std::vector< XMLPropertyState >& rProperties,
+ const SvXMLExportPropertyMapper& rPropExp,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap) const
+{
+ if( XML_STYLE_FAMILY_TEXT_PARAGRAPH == nFamily )
+ {
+ for( ::std::vector< XMLPropertyState >::const_iterator
+ aProperty = rProperties.begin();
+ aProperty != rProperties.end();
+ aProperty++ )
+ {
+ switch( rPropExp.getPropertySetMapper()->
+ GetEntryContextId( aProperty->mnIndex ) )
+ {
+ case CTF_NUMBERINGSTYLENAME:
+ {
+ OUString sStyleName;
+ aProperty->maValue >>= sStyleName;
+ if( sStyleName.getLength() )
+ {
+ OUString sTmp = rExport.GetTextParagraphExport()->GetListAutoStylePool().Find( sStyleName );
+ if( sTmp.getLength() )
+ sStyleName = sTmp;
+ OUString sName( rNamespaceMap.GetQNameByKey(
+ XML_NAMESPACE_STYLE, sListStyleName ) );
+ rAttrList.AddAttribute( sName, sCDATA, sStyleName );
+ }
+ }
+ break;
+ }
+ }
+ }
+}
+
+SwXMLAutoStylePoolP::SwXMLAutoStylePoolP(SvXMLExport& rExp ) :
+ SvXMLAutoStylePoolP(),
+ rExport( rExp ),
+ sListStyleName( RTL_CONSTASCII_USTRINGPARAM( sXML_list_style_name) ),
+ sCDATA( RTL_CONSTASCII_USTRINGPARAM( sXML_CDATA) )
+{
+}
+
+
+SwXMLAutoStylePoolP::~SwXMLAutoStylePoolP()
+{
+}
+
+SvXMLAutoStylePoolP* SwXMLExport::CreateAutoStylePool()
+{
+ return new SwXMLAutoStylePoolP( *this );
+}
+#endif
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/xmlfmte.cxx,v 1.1.1.1 2000-09-18 17:15:00 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.23 2000/09/18 16:05:06 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.22 2000/09/18 11:58:02 mib
+ text frames/graphics import and export continued
+
+ Revision 1.21 2000/09/07 05:29:00 mib
+ #78555#: Search paragraph styles by programmatic name instead of UI name
+
+ Revision 1.20 2000/08/24 11:16:41 mib
+ text import continued
+
+ Revision 1.19 2000/08/21 11:02:50 dvo
+ - fixed data style export (for textfields)
+
+ Revision 1.18 2000/08/10 10:22:16 mib
+ #74404#: Adeptions to new XSL/XLink working draft
+
+ Revision 1.17 2000/08/02 14:52:39 mib
+ text export continued
+
+ Revision 1.16 2000/07/31 09:42:35 mib
+ text export continued
+
+ Revision 1.15 2000/07/27 08:06:34 mib
+ text import continued
+
+ Revision 1.14 2000/07/26 05:11:20 mib
+ text import/export continued
+
+ Revision 1.13 2000/07/24 10:19:02 dvo
+ - textfield export for XML_CORE_API
+
+ Revision 1.12 2000/07/21 12:55:15 mib
+ text import/export using StarOffice API
+
+ Revision 1.11 2000/07/10 06:58:49 mib
+ text styles
+
+ Revision 1.10 2000/07/07 13:58:36 mib
+ text styles using StarOffice API
+
+ Revision 1.9 2000/06/08 09:45:54 aw
+ changed to use functionality from xmloff project now
+
+ Revision 1.8 2000/05/03 12:08:05 mib
+ unicode
+
+ Revision 1.7 2000/03/13 14:33:44 mib
+ UNO3
+
+ Revision 1.6 2000/03/06 10:46:11 mib
+ #72585#: toInt32
+
+ Revision 1.5 2000/02/11 14:41:57 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.4 2000/02/07 10:03:28 mib
+ #70271#: tables
+
+ Revision 1.3 2000/01/20 10:03:16 mib
+ #70271#: Lists reworked
+
+ Revision 1.2 2000/01/12 15:00:23 mib
+ #70271#: lists
+
+ Revision 1.1 2000/01/06 15:03:40 mib
+ #70271#:separation of text/layout, cond. styles, adaptions to wd-xlink-19991229
+
+ Revision 1.23 1999/12/13 08:28:25 mib
+ #70271#: Support for element items added
+
+ Revision 1.22 1999/12/06 11:41:33 mib
+ #70258#: Container item for unkown attributes
+
+ Revision 1.21 1999/11/26 11:13:57 mib
+ loading of styles only and insert mode
+
+ Revision 1.20 1999/11/22 15:52:34 os
+ headers added
+
+ Revision 1.19 1999/11/17 20:08:49 nn
+ document language
+
+ Revision 1.18 1999/11/12 14:50:28 mib
+ meta import and export reactivated
+
+ Revision 1.17 1999/11/12 11:43:03 mib
+ using item mapper, part iii
+
+ Revision 1.16 1999/11/10 15:08:09 mib
+ Import now uses XMLItemMapper
+
+ Revision 1.15 1999/11/09 15:40:08 mib
+ Using XMLItemMapper for export
+
+ Revision 1.14 1999/11/05 19:44:11 nn
+ handle office:meta
+
+ Revision 1.13 1999/11/01 11:38:50 mib
+ List style import
+
+ Revision 1.12 1999/10/25 10:41:48 mib
+ Using new OUString ASCII methods
+
+ Revision 1.11 1999/10/22 09:49:16 mib
+ List style export
+
+ Revision 1.10 1999/10/15 12:37:05 mib
+ integrated SvXMLStyle into SvXMLStyleContext
+
+ Revision 1.9 1999/10/08 11:47:45 mib
+ moved some file to SVTOOLS/SVX
+
+ Revision 1.8 1999/10/01 13:02:51 mib
+ no comparisons between OUString and char* any longer
+
+ Revision 1.7 1999/09/28 10:47:58 mib
+ char fmts again
+
+ Revision 1.6 1999/09/28 08:31:15 mib
+ char fmts, hints
+
+ Revision 1.5 1999/09/23 11:53:58 mib
+ i18n, token maps and hard paragraph attributes
+
+ Revision 1.4 1999/09/22 11:56:57 mib
+ string -> wstring
+
+ Revision 1.3 1999/08/19 12:57:42 MIB
+ attribute import added
+
+
+ Rev 1.2 19 Aug 1999 14:57:42 MIB
+ attribute import added
+
+ Rev 1.1 18 Aug 1999 17:03:36 MIB
+ Style import
+
+ Rev 1.0 13 Aug 1999 16:18:10 MIB
+ Initial revision.
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/xmlimp.cxx b/sw/source/filter/xml/xmlimp.cxx
new file mode 100644
index 000000000000..41743bc096b2
--- /dev/null
+++ b/sw/source/filter/xml/xmlimp.cxx
@@ -0,0 +1,570 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlimp.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _PAM_HXX //autogen wg. SwPaM
+#include <pam.hxx>
+#endif
+
+#ifndef _XMLOFF_NMSPMAP_HXX
+#include <xmloff/nmspmap.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLNMSPE_HXX
+#include <xmloff/xmlnmspe.hxx>
+#endif
+
+#ifndef _XMLOFF_I18NMAP_HXX
+#include <xmloff/i18nmap.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLTKMAP_HXX
+#include <xmloff/xmltkmap.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLKYWD_HXX
+#include <xmloff/xmlkywd.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+#ifndef _XMLOFF_TXTIMP_HXX
+#include <xmloff/txtimp.hxx>
+#endif
+
+
+#ifndef _COM_SUN_STAR_TEXT_XTEXTRANGE_HPP_
+#include <com/sun/star/text/XTextRange.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_TEXT_XTEXT_HPP_
+#include <com/sun/star/text/XText.hpp>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _UNOOBJ_HXX
+#include <unoobj.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _XMLIMP_HXX
+#include "xmlimp.hxx"
+#endif
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::text;
+
+sal_Char __READONLY_DATA sXML_np__text[] = "text";
+sal_Char __READONLY_DATA sXML_np__table[] = "table";
+
+//----------------------------------------------------------------------------
+
+enum SwXMLDocTokens
+{
+ XML_TOK_DOC_STYLES,
+ XML_TOK_DOC_AUTOSTYLES,
+ XML_TOK_DOC_MASTERSTYLES,
+ XML_TOK_DOC_META,
+ XML_TOK_DOC_BODY,
+ XML_TOK_OFFICE_END=XML_TOK_UNKNOWN
+};
+
+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_master_styles, XML_TOK_DOC_MASTERSTYLES },
+ { XML_NAMESPACE_OFFICE, sXML_meta, XML_TOK_DOC_META },
+ { XML_NAMESPACE_OFFICE, sXML_body, XML_TOK_DOC_BODY },
+ XML_TOKEN_MAP_END
+};
+
+class SwXMLDocContext_Impl : public SvXMLImportContext
+{
+ const SwXMLImport& GetSwImport() const
+ { return (const SwXMLImport&)GetImport(); }
+ SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); }
+
+public:
+
+ SwXMLDocContext_Impl( SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+ virtual ~SwXMLDocContext_Impl();
+
+ virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+};
+
+SwXMLDocContext_Impl::SwXMLDocContext_Impl( SwXMLImport& rImport,
+ sal_uInt16 nPrfx, const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList ) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+}
+
+SwXMLDocContext_Impl::~SwXMLDocContext_Impl()
+{
+}
+
+SvXMLImportContext *SwXMLDocContext_Impl::CreateChildContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetSwImport().GetDocElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ {
+ case XML_TOK_DOC_STYLES:
+ pContext = GetSwImport().CreateStylesContext( rLocalName, xAttrList,
+ sal_False );
+ break;
+ case XML_TOK_DOC_AUTOSTYLES:
+ pContext = GetSwImport().CreateStylesContext( rLocalName, xAttrList,
+ sal_True );
+ break;
+// case XML_TOK_DOC_USESTYLES:
+// pContext = GetSwImport().CreateUseStylesContext( rLocalName,
+// xAttrList );
+// break;
+ case XML_TOK_DOC_MASTERSTYLES:
+// pContext = GetSwImport().CreateMasterStylesContext( rLocalName,
+// xAttrList );
+ break;
+ case XML_TOK_DOC_META:
+ pContext = GetSwImport().CreateMetaContext( rLocalName );
+ break;
+ case XML_TOK_DOC_BODY:
+ pContext = GetSwImport().CreateBodyContext( rLocalName );
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
+
+
+ return pContext;
+}
+
+//----------------------------------------------------------------------------
+
+const SvXMLTokenMap& SwXMLImport::GetDocElemTokenMap()
+{
+ if( !pDocElemTokenMap )
+ pDocElemTokenMap = new SvXMLTokenMap( aDocTokenMap );
+
+ return *pDocElemTokenMap;
+}
+
+SvXMLImportContext *SwXMLImport::CreateContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( XML_NAMESPACE_OFFICE==nPrefix &&
+ rLocalName.compareToAscii( sXML_document ) == 0 )
+ pContext = new SwXMLDocContext_Impl( *this, nPrefix, rLocalName,
+ xAttrList );
+ else
+ pContext = SvXMLImport::CreateContext( nPrefix, rLocalName, xAttrList );
+
+ return pContext;
+}
+
+SwXMLImport::SwXMLImport(
+ SwDoc& rDoc, const SwPaM& rPaM,
+ sal_Bool bLDoc, sal_Bool bInsertMode, sal_uInt16 nStyleFamMask,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::frame::XModel > & rModel ) :
+ SvXMLImport( rModel ),
+ bLoadDoc( bLDoc ),
+ bInsert( bInsertMode ),
+ nStyleFamilyMask( nStyleFamMask ),
+ pDoc( &rDoc ),
+ pPaM( new SwPaM( *rPaM.GetPoint() ) ),
+#ifdef XML_CORE_API
+ pI18NMap( new SvI18NMap ),
+ pUnusedNumRules( 0 ),
+#endif
+ pDocElemTokenMap( 0 ),
+#ifdef XML_CORE_API
+ pBodyElemTokenMap( 0 ),
+ pStyleStylesElemTokenMap( 0 ),
+ pTextPElemTokenMap( 0 ),
+ pTextPAttrTokenMap( 0 ),
+ pTextListBlockAttrTokenMap( 0 ),
+ pTextListBlockElemTokenMap( 0 ),
+#endif
+ pTableElemTokenMap( 0 ),
+#ifdef XML_CORE_API
+ pParaItemMapper( 0 ),
+#endif
+ pTableItemMapper( 0 ),
+ pSttNdIdx( 0 ),
+ bAutoStylesValid( sal_False )
+{
+// 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 );
+
+ _InitItemImport();
+
+ if( !IsStylesOnlyMode() )
+ {
+ pSttNdIdx = new SwNodeIndex( pDoc->GetNodes() );
+ if( IsInsertMode() )
+ {
+ const SwPosition* pPos = pPaM->GetPoint();
+
+ // Split once and remember the node that has been splitted.
+ pDoc->SplitNode( *pPos );
+ *pSttNdIdx = pPos->nNode.GetIndex()-1;
+
+ // Split again.
+ pDoc->SplitNode( *pPos );
+
+ // Insert all content into the new node
+ pPaM->Move( fnMoveBackward );
+ pDoc->SetTxtFmtColl( *pPaM,
+ pDoc->GetTxtCollFromPool(RES_POOLCOLL_STANDARD) );
+ }
+ }
+ Reference < XTextRange > xTextRange =
+ CreateTextRangeFromPosition( pDoc, *rPaM.GetPoint(), 0 );
+ Reference < XText > xText = xTextRange->getText();
+ Reference < XTextCursor > xTextCursor =
+ xText->createTextCursorByRange( xTextRange );
+ GetTextImport()->SetCursor( xTextCursor );
+}
+
+SwXMLImport::~SwXMLImport()
+{
+ GetTextImport()->ResetCursor();
+
+ if( !IsStylesOnlyMode() )
+ {
+ if( IsInsertMode() && pSttNdIdx->GetIndex() )
+ {
+ // If we are in insert mode, join the splitted node that is in front
+ // of the new content with the first new node.
+ SwTxtNode* pTxtNode = pSttNdIdx->GetNode().GetTxtNode();
+ SwNodeIndex aNxtIdx( *pSttNdIdx );
+ if( pTxtNode && pTxtNode->CanJoinNext( &aNxtIdx ))
+ {
+ xub_StrLen nStt = pTxtNode->GetTxt().Len();
+
+ // If the PaM points to the first new node, move the PaM to the
+ // end of the previous node.
+ if( pPaM->GetPoint()->nNode == aNxtIdx )
+ {
+ pPaM->GetPoint()->nNode = *pSttNdIdx;
+ pPaM->GetPoint()->nContent.Assign( pTxtNode, nStt );
+ }
+
+#ifndef PRODUCT
+ // !!! This should be impossible !!!!
+ ASSERT( pSttNdIdx->GetIndex()+1 !=
+ pPaM->GetBound( sal_True ).nNode.GetIndex(),
+ "PaM.Bound1 point to new node " );
+ ASSERT( pSttNdIdx->GetIndex()+1 !=
+ pPaM->GetBound( sal_False ).nNode.GetIndex(),
+ "PaM.Bound2 points to new node" );
+
+ if( pSttNdIdx->GetIndex()+1 ==
+ pPaM->GetBound( sal_True ).nNode.GetIndex() )
+ {
+ sal_uInt16 nCntPos =
+ pPaM->GetBound( sal_True ).nContent.GetIndex();
+ pPaM->GetBound( sal_True ).nContent.Assign( pTxtNode,
+ pTxtNode->GetTxt().Len() + nCntPos );
+ }
+ if( pSttNdIdx->GetIndex()+1 ==
+ pPaM->GetBound( sal_False ).nNode.GetIndex() )
+ {
+ sal_uInt16 nCntPos =
+ pPaM->GetBound( sal_False ).nContent.GetIndex();
+ pPaM->GetBound( sal_False ).nContent.Assign( pTxtNode,
+ pTxtNode->GetTxt().Len() + nCntPos );
+ }
+#endif
+ // If the first new node isn't empty, convert the node's text
+ // attributes into hints. Otherwise, set the new node's paragraph
+ // style at the previous (empty) node.
+ SwTxtNode* pDelNd = aNxtIdx.GetNode().GetTxtNode();
+ if( pTxtNode->GetTxt().Len() )
+ pDelNd->FmtToTxtAttr( pTxtNode );
+ else
+ pTxtNode->ChgFmtColl( pDelNd->GetTxtColl() );
+ pTxtNode->JoinNext();
+ }
+ }
+
+ SwPosition* pPos = pPaM->GetPoint();
+ if( !pPos->nContent.GetIndex() )
+ {
+ SwTxtNode* pCurrNd;
+ sal_uInt32 nNodeIdx = pPos->nNode.GetIndex();
+
+ if( !IsInsertMode() )
+ {
+ if( pDoc->GetNodes()[nNodeIdx -1]->IsCntntNode() )
+ {
+ SwCntntNode* pCNd = pPaM->GetCntntNode();
+ if( pCNd && pCNd->StartOfSectionIndex()+2 <
+ pCNd->EndOfSectionIndex() )
+ {
+ pPaM->GetBound(sal_True).nContent.Assign( 0, 0 );
+ pPaM->GetBound(sal_False).nContent.Assign( 0, 0 );
+ pDoc->GetNodes().Delete( pPaM->GetPoint()->nNode );
+ }
+ }
+ }
+ else if( 0 != (pCurrNd = pDoc->GetNodes()[nNodeIdx]->GetTxtNode()) )
+ {
+ if( pCurrNd->CanJoinNext( &pPos->nNode ))
+ {
+ SwTxtNode* pNextNd = pPos->nNode.GetNode().GetTxtNode();
+ pPos->nContent.Assign( pNextNd, 0 );
+ pPaM->SetMark(); pPaM->DeleteMark();
+ pNextNd->JoinPrev();
+ }
+ else if( !pCurrNd->GetTxt().Len() )
+ {
+ pPos->nContent.Assign( 0, 0 );
+ pPaM->SetMark(); pPaM->DeleteMark();
+ pDoc->GetNodes().Delete( pPos->nNode, 1 );
+ pPaM->Move( fnMoveBackward );
+ }
+ }
+ }
+ else if( IsInsertMode() )
+ {
+ pPaM->Move( fnMoveForward, fnGoNode );
+ SwTxtNode* pTxtNode = pPos->nNode.GetNode().GetTxtNode();
+ SwNodeIndex aPrvIdx( pPos->nNode );
+ if( pTxtNode && pTxtNode->CanJoinPrev( &aPrvIdx ) &&
+ *pSttNdIdx <= aPrvIdx )
+ {
+ // In fact, we should do an JoinNext here, but the Cursor and
+ // many other stuff is registered to the current node. That for
+ // the node should remain and we do an JoinPrev here.
+
+ // Convert paragraph attributes into hints and set paragraph
+ // style at the next node.
+ SwTxtNode* pPrev = aPrvIdx.GetNode().GetTxtNode();
+ pTxtNode->ChgFmtColl( pPrev->GetTxtColl() );
+ pTxtNode->FmtToTxtAttr( pPrev );
+ pTxtNode->SwCntntNode::ResetAllAttr();
+
+ if( pPrev->GetpSwAttrSet() )
+ pTxtNode->SwCntntNode::SetAttr( *pPrev->GetpSwAttrSet() );
+
+ if( &pPaM->GetBound(sal_True).nNode.GetNode() == pPrev )
+ pPaM->GetBound(sal_True).nContent.Assign( pTxtNode, 0 );
+ if( &pPaM->GetBound(sal_False).nNode.GetNode() == pPrev )
+ pPaM->GetBound(sal_False).nContent.Assign( pTxtNode, 0 );
+
+ pTxtNode->JoinPrev();
+ }
+ }
+ }
+
+#ifdef XML_CORE_API
+ RemoveUnusedNumRules();
+#endif
+
+ delete pSttNdIdx;
+ delete pPaM;
+ delete pDocElemTokenMap;
+#ifdef XML_CORE_API
+ delete pI18NMap;
+ delete pBodyElemTokenMap;
+ delete pTextPElemTokenMap;
+ delete pTextPAttrTokenMap;
+ delete pStyleStylesElemTokenMap;
+ delete pTextListBlockAttrTokenMap;
+ delete pTextListBlockElemTokenMap;
+#endif
+ delete pTableElemTokenMap;
+ _FinitItemImport();
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/xmlimp.cxx,v 1.1.1.1 2000-09-18 17:15:00 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.30 2000/09/18 16:05:06 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.29 2000/08/29 07:33:47 mib
+ text import continued
+
+ Revision 1.28 2000/08/24 11:16:41 mib
+ text import continued
+
+ Revision 1.27 2000/08/10 10:22:16 mib
+ #74404#: Adeptions to new XSL/XLink working draft
+
+ Revision 1.26 2000/07/31 09:42:35 mib
+ text export continued
+
+ Revision 1.25 2000/07/21 12:55:15 mib
+ text import/export using StarOffice API
+
+ Revision 1.24 2000/07/07 13:58:36 mib
+ text styles using StarOffice API
+
+ Revision 1.23 2000/06/08 09:45:54 aw
+ changed to use functionality from xmloff project now
+
+ Revision 1.22 2000/05/15 16:53:17 jp
+ Changes for Unicode
+
+ Revision 1.21 2000/05/03 12:08:05 mib
+ unicode
+
+ Revision 1.20 2000/03/13 14:33:44 mib
+ UNO3
+
+ Revision 1.19 2000/02/17 14:40:30 mib
+ #70271#: XML table import
+
+ Revision 1.17 2000/01/27 08:59:02 mib
+ #70271#: outline numbering
+
+ Revision 1.16 2000/01/20 10:03:16 mib
+ #70271#: Lists reworked
+
+ Revision 1.15 2000/01/06 15:08:27 mib
+ #70271#:separation of text/layout, cond. styles, adaptions to wd-xlink-19991229
+
+ Revision 1.14 1999/11/26 11:12:51 mib
+ loading of styles only and insert mode
+
+ Revision 1.13 1999/11/22 15:53:39 mib
+ split/join nodes correctly
+
+ Revision 1.12 1999/11/12 11:43:03 mib
+ using item mapper, part iii
+
+ Revision 1.11 1999/11/10 15:08:09 mib
+ Import now uses XMLItemMapper
+
+ Revision 1.10 1999/11/01 11:38:50 mib
+ List style import
+
+ Revision 1.9 1999/10/15 12:39:11 mib
+ moved styles element from style to office namespace
+
+ Revision 1.8 1999/10/08 11:47:49 mib
+ moved some file to SVTOOLS/SVX
+
+ Revision 1.7 1999/10/05 14:31:14 hr
+ #65293#: removed redundant const
+
+ Revision 1.6 1999/09/28 10:46:58 mib
+ memory leak
+
+ Revision 1.5 1999/09/23 11:54:16 mib
+ i18n, token maps and hard paragraph attributes
+
+ Revision 1.4 1999/09/22 11:57:14 mib
+ string -> wstring
+
+ Revision 1.3 1999/08/19 12:57:42 MIB
+ attribute import added
+
+
+ Rev 1.2 19 Aug 1999 14:57:42 MIB
+ attribute import added
+
+ Rev 1.1 18 Aug 1999 17:05:20 MIB
+ Style import
+
+ Rev 1.0 17 Aug 1999 16:32:52 MIB
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/xmlimp.hxx b/sw/source/filter/xml/xmlimp.hxx
new file mode 100644
index 000000000000..5bb684245bf7
--- /dev/null
+++ b/sw/source/filter/xml/xmlimp.hxx
@@ -0,0 +1,283 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlimp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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 _XMLIMP_HXX
+#define _XMLIMP_HXX
+
+#ifndef _RSCSFX_HXX
+#include <rsc/rscsfx.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLITMAP_HXX
+#include <xmloff/xmlitmap.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+
+class SwDoc;
+class SwPaM;
+class SvXMLUnitConverter;
+class SvI18NMap;
+class SvXMLTokenMap;
+class SvXMLImportItemMapper;
+class SvXMLStyleContext;
+class SwXMLListBlockContext;
+class SwXMLListItemContext;
+class SfxItemSet;
+class SwNodeIndex;
+class SwNumRule;
+class SwNumRulesSort_Impl;
+class XMLTextImportHelper;
+
+class SwXMLImport: public SvXMLImport
+{
+ SwDoc *pDoc;
+ SwPaM *pPaM; // SwPosition ??
+ SwNodeIndex *pSttNdIdx;
+
+ SvXMLUnitConverter *pTwipUnitConv;
+#ifdef XML_CORE_API
+ SvXMLImportItemMapper *pParaItemMapper;// paragraph item import
+#endif
+ SvXMLImportItemMapper *pTableItemMapper;// paragraph item import
+#ifdef XML_CORE_API
+ SvI18NMap *pI18NMap; // name mapping for I18N
+ SwNumRulesSort_Impl *pUnusedNumRules;
+#endif
+ SvXMLTokenMap *pDocElemTokenMap;
+#ifdef XML_CORE_API
+ SvXMLTokenMap *pBodyElemTokenMap;
+ SvXMLTokenMap *pTextPElemTokenMap;
+ SvXMLTokenMap *pTextPAttrTokenMap;
+ SvXMLTokenMap *pStyleStylesElemTokenMap;
+ SvXMLTokenMap *pTextListBlockAttrTokenMap;
+ SvXMLTokenMap *pTextListBlockElemTokenMap;
+#endif
+ SvXMLTokenMap *pTableElemTokenMap;
+
+ SvXMLItemMapEntriesRef xTableItemMap;
+ SvXMLItemMapEntriesRef xTableColItemMap;
+ SvXMLItemMapEntriesRef xTableRowItemMap;
+ SvXMLItemMapEntriesRef xTableCellItemMap;
+
+ SvXMLImportContextRef xStyles;
+ SvXMLImportContextRef xAutoStyles;
+#ifdef XML_CORE_API
+ SvXMLImportContextRef xListBlock;
+ SvXMLImportContextRef xListItem;
+#endif
+
+ sal_uInt16 nStyleFamilyMask;// Mask of styles to load
+ sal_Bool bLoadDoc : 1; // Load doc or styles only
+ sal_Bool bInsert : 1; // Insert mode. If styles are
+ // loaded only sal_False means that
+ // existing styles will be
+ // overwritten.
+ sal_Bool bAutoStylesValid : 1;
+
+
+ void _InitItemImport();
+ void _FinitItemImport();
+#ifdef XML_CORE_API
+ void RemoveUnusedNumRules();
+#endif
+
+ void InsertStyles();
+
+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( sal_uInt16 nPrefix,
+ const ::rtl::OUString& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList > & xAttrList );
+
+ virtual XMLTextImportHelper* CreateTextImport();
+
+public:
+
+ SwXMLImport( SwDoc& rDoc, const SwPaM& rPaM, sal_Bool bLoadDoc,
+ sal_Bool bInsertMode, sal_uInt16 nStyleFamMask,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::frame::XModel > & rModel );
+
+ ~SwXMLImport();
+
+ // namespace office
+ SvXMLImportContext *CreateMetaContext( const ::rtl::OUString& rLocalName );
+ SvXMLImportContext *CreateStylesContext(
+ const ::rtl::OUString& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList > & xAttrList,
+ sal_Bool bAuto );
+ SvXMLImportContext *CreateBodyContext( const ::rtl::OUString& rLocalName );
+
+
+#ifdef XML_CORE_API
+ SwPaM& GetPaM() { return *pPaM; }
+#endif
+ SwDoc& GetDoc() { return *pDoc; }
+ const SwDoc& GetDoc() const { return *pDoc; }
+
+ sal_uInt16 GetStyleFamilyMask() const { return nStyleFamilyMask; }
+ sal_Bool IsInsertMode() const { return bInsert; }
+ sal_Bool IsStylesOnlyMode() const { return !bLoadDoc; }
+
+#ifdef XML_CORE_API
+ SvI18NMap& GetI18NMap() { return *pI18NMap; }
+#endif
+
+ inline const SvXMLUnitConverter& GetTwipUnitConverter() const;
+#ifdef XML_CORE_API
+ inline const SvXMLImportItemMapper& GetParaItemMapper() const;
+#endif
+ inline const SvXMLImportItemMapper& GetTableItemMapper() const;
+#ifdef XML_CORE_API
+ SvXMLImportContext *CreateParaItemImportContext( sal_uInt16 nPrefix,
+ const ::rtl::OUString& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList > & xAttrList,
+ SfxItemSet& rItemSet );
+#endif
+ SvXMLImportContext *CreateTableItemImportContext( sal_uInt16 nPrefix,
+ const ::rtl::OUString& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList > & xAttrList,
+ sal_uInt16 nSubFamily, SfxItemSet& rItemSet );
+
+ const SvXMLTokenMap& GetDocElemTokenMap();
+#ifdef XML_CORE_API
+ const SvXMLTokenMap& GetBodyElemTokenMap();
+ const SvXMLTokenMap& GetTextPElemTokenMap();
+ const SvXMLTokenMap& GetTextPAttrTokenMap();
+ const SvXMLTokenMap& GetStyleStylesElemTokenMap();
+ const SvXMLTokenMap& GetTextListBlockAttrTokenMap();
+ const SvXMLTokenMap& GetTextListBlockElemTokenMap();
+#endif
+ const SvXMLTokenMap& GetTableElemTokenMap();
+
+#ifdef XML_CORE_API
+ inline sal_Bool FindAutomaticStyle( SfxStyleFamily eFamily,
+ const ::rtl::OUString& rName,
+ const SfxItemSet **ppItemSet=0,
+ ::rtl::OUString *pParent=0 ) const;
+ sal_Bool FindAutomaticStyle( SfxStyleFamily eFamily,
+ sal_uInt16 nSubStyle,
+ const ::rtl::OUString& rName,
+ const SfxItemSet **ppItemSet=0,
+ ::rtl::OUString *pParent=0 ) const;
+#else
+ sal_Bool FindAutomaticStyle( sal_uInt16 nFamily,
+ const ::rtl::OUString& rName,
+ const SfxItemSet **ppItemSet=0,
+ ::rtl::OUString *pParent=0 ) const;
+#endif
+
+#ifdef XML_CORE_API
+ SwXMLListBlockContext *GetListBlock();
+ sal_Bool IsInList() const { return xListBlock.Is(); }
+ void SetListBlock( SwXMLListBlockContext *pListBlock );
+
+ SwXMLListItemContext *GetListItem();
+ sal_Bool HasListItem() const { return xListItem.Is(); }
+ void SetListItem( SwXMLListItemContext *pListItem );
+
+ void AddUnused( const SwNumRule& rNumRule );
+ void SetUsed( const SwNumRule& rNumRule );
+#endif
+};
+
+inline const SvXMLUnitConverter& SwXMLImport::GetTwipUnitConverter() const
+{
+ return *pTwipUnitConv;
+}
+
+#ifdef XML_CORE_API
+inline const SvXMLImportItemMapper& SwXMLImport::GetParaItemMapper() const
+{
+ return *pParaItemMapper;
+}
+#endif
+
+inline const SvXMLImportItemMapper& SwXMLImport::GetTableItemMapper() const
+{
+ return *pTableItemMapper;
+}
+
+#ifdef XML_CORE_API
+inline sal_Bool SwXMLImport::FindAutomaticStyle( SfxStyleFamily eFamily,
+ const ::rtl::OUString& rName,
+ const SfxItemSet **ppItemSet,
+ ::rtl::OUString *pParent ) const
+{
+ return FindAutomaticStyle( eFamily, 0U, rName, ppItemSet, pParent );
+}
+#endif
+
+
+#endif // _XMLIMP_HXX
diff --git a/sw/source/filter/xml/xmliteme.cxx b/sw/source/filter/xml/xmliteme.cxx
new file mode 100644
index 000000000000..e952d9fbd075
--- /dev/null
+++ b/sw/source/filter/xml/xmliteme.cxx
@@ -0,0 +1,490 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmliteme.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <hintids.hxx>
+
+#ifndef _RTL_USTRING_HXX_
+#include <rtl/ustring.hxx>
+#endif
+#ifndef _RTL_USTRBUF_HXX_
+#include <rtl/ustrbuf.hxx>
+#endif
+
+#ifndef _SHL_HXX //autogen wg. SHL_WRITER
+#include <tools/shl.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLUCONV_HXX
+#include <xmloff/xmluconv.hxx>
+#endif
+#ifndef _XMLOFF_XMLITMPR_HXX
+#include <xmloff/xmlexpit.hxx>
+#endif
+#ifndef _XMLOFF_XMLKYWD_HXX
+#include <xmloff/xmlkywd.hxx>
+#endif
+#ifndef _XMLOFF_NMSPMAP_HXX
+#include <xmloff/nmspmap.hxx>
+#endif
+#ifndef _XMLOFF_XMLTABE_HXX
+#include <xmloff/xmltabe.hxx>
+#endif
+#ifndef _XMLBRSHE_HXX
+#include "xmlbrshe.hxx"
+#endif
+
+#ifndef _SVX_TSPTITEM_HXX
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_UNOMID_HXX
+#include <svx/unomid.hxx>
+#endif
+
+#ifndef _VCL_FLDUNIT_HXX
+#include <vcl/fldunit.hxx>
+#endif
+
+#ifndef _SWMODULE_HXX //autogen wg. SW_MOD
+#include <swmodule.hxx>
+#endif
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+#ifndef _FMTORNT_HXX
+#include "fmtornt.hxx"
+#endif
+#ifndef _UNOMID_H
+#include <unomid.h>
+#endif
+#ifndef _FRMFMT_HXX
+#include "frmfmt.hxx"
+#endif
+#ifndef _FMTFSIZE_HXX
+#include "fmtfsize.hxx"
+#endif
+#ifndef _SWRECT_HXX
+#include "swrect.hxx"
+#endif
+
+#ifndef _XMLDROPE_HXX
+#include "xmldrope.hxx"
+#endif
+#ifndef _XMLEXP_HXX
+#include "xmlexp.hxx"
+#endif
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+#ifdef XML_CORE_API
+extern SvXMLItemMapEntry aXMLParaItemMap[];
+#endif
+extern SvXMLItemMapEntry aXMLTableItemMap[];
+extern SvXMLItemMapEntry aXMLTableRowItemMap[];
+extern SvXMLItemMapEntry aXMLTableCellItemMap[];
+
+#ifdef XML_CORE_API
+class SwXMLTextItemMapper_Impl: public SvXMLExportItemMapper
+{
+protected:
+ SvXMLUnitConverter& mrUnitConverter;
+ const Reference< xml::sax::XDocumentHandler > & mrHandler;
+ SvxXMLTabStopExport maTabStopExport;
+
+public:
+
+ SwXMLTextItemMapper_Impl(
+ SvXMLItemMapEntriesRef rMapEntries,
+ SvXMLUnitConverter& rUnitConverter,
+ const Reference< xml::sax::XDocumentHandler > & rHandler );
+
+ virtual ~SwXMLTextItemMapper_Impl();
+
+ virtual void handleElementItem(
+ const Reference< xml::sax::XDocumentHandler > & rHandler,
+ const SvXMLItemMapEntry& rEntry,
+ const SfxPoolItem& rItem,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap,
+ const SfxItemSet& rSet,
+ sal_uInt16 nFlags ) const;
+};
+
+SwXMLTextItemMapper_Impl::SwXMLTextItemMapper_Impl(
+ SvXMLItemMapEntriesRef rMapEntries,
+ SvXMLUnitConverter& rUnitConverter,
+ const Reference< xml::sax::XDocumentHandler > & rHandler ) :
+ SvXMLExportItemMapper( rMapEntries ),
+ mrUnitConverter(rUnitConverter),
+ mrHandler( rHandler ),
+ maTabStopExport( rHandler, rUnitConverter )
+{
+}
+
+SwXMLTextItemMapper_Impl::~SwXMLTextItemMapper_Impl()
+{
+}
+
+/** this method is called for every item that has the
+ MID_FLAG_ELEMENT_EXPORT flag set */
+void SwXMLTextItemMapper_Impl::handleElementItem(
+ const Reference< xml::sax::XDocumentHandler > & rHandler,
+ const SvXMLItemMapEntry& rEntry,
+ const SfxPoolItem& rItem,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap,
+ const SfxItemSet&,
+ sal_uInt16 ) const
+{
+ switch( rEntry.nWhichId )
+ {
+ case RES_PARATR_TABSTOP:
+ {
+ SvxXMLTabStopExport aTabStopExport( rHandler, rUnitConverter );
+
+ Any aAny;
+ rItem.QueryValue( aAny, 0 );
+ aTabStopExport.Export( aAny, rNamespaceMap );
+ }
+ break;
+ case RES_PARATR_DROP:
+ {
+ SwXMLFmtDropExport aFmtDropExport( rHandler, rUnitConverter );
+ aFmtDropExport.exportXML( (const SwFmtDrop&)rItem, rNamespaceMap );
+ }
+ break;
+ case RES_BACKGROUND:
+ {
+ SwXMLBrushItemExport aBrushItemExport( rHandler, rUnitConverter );
+ aBrushItemExport.exportXML( (const SvxBrushItem&)rItem,
+ rNamespaceMap );
+ }
+ break;
+ }
+}
+#endif
+
+// ----------------------------------------------------------------------------
+
+class SwXMLTableItemMapper_Impl: public SvXMLExportItemMapper
+{
+ const OUString sCDATA;
+
+protected:
+ SvXMLUnitConverter& mrUnitConverter;
+ const Reference< xml::sax::XDocumentHandler > & mrHandler;
+
+ sal_uInt32 nAbsWidth;
+
+ void AddAttribute( sal_uInt16 nPrefix, const sal_Char *pLName,
+ const OUString& rValue,
+ const SvXMLNamespaceMap& rNamespaceMap,
+ SvXMLAttributeList& rAttrList ) const;
+
+public:
+
+ SwXMLTableItemMapper_Impl(
+ SvXMLItemMapEntriesRef rMapEntries,
+ SvXMLUnitConverter& rUnitConverter,
+ const Reference< xml::sax::XDocumentHandler > & rHandler );
+
+ virtual ~SwXMLTableItemMapper_Impl();
+
+ virtual void handleSpecialItem( SvXMLAttributeList& rAttrList,
+ const SvXMLItemMapEntry& rEntry,
+ const SfxPoolItem& rItem,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap,
+ const SfxItemSet *pSet = NULL ) const;
+
+ virtual void handleElementItem(
+ const Reference< xml::sax::XDocumentHandler > & rHandler,
+ const SvXMLItemMapEntry& rEntry,
+ const SfxPoolItem& rItem,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap,
+ const SfxItemSet& rSet,
+ sal_uInt16 nFlags ) const;
+
+ inline void SetAbsWidth( sal_uInt32 nAbs );
+};
+
+SwXMLTableItemMapper_Impl::SwXMLTableItemMapper_Impl(
+ SvXMLItemMapEntriesRef rMapEntries,
+ SvXMLUnitConverter& rUnitConverter,
+ const Reference< xml::sax::XDocumentHandler > & rHandler ) :
+ SvXMLExportItemMapper( rMapEntries ),
+ sCDATA( OUString::createFromAscii( sXML_CDATA ) ),
+ mrUnitConverter(rUnitConverter),
+ mrHandler( rHandler ),
+ nAbsWidth( USHRT_MAX )
+{
+}
+
+SwXMLTableItemMapper_Impl::~SwXMLTableItemMapper_Impl()
+{
+}
+
+void SwXMLTableItemMapper_Impl::AddAttribute( sal_uInt16 nPrefix,
+ const sal_Char *pLName,
+ const OUString& rValue,
+ const SvXMLNamespaceMap& rNamespaceMap,
+ SvXMLAttributeList& rAttrList ) const
+{
+ OUString sLName( OUString::createFromAscii(pLName) );
+ OUString sName( rNamespaceMap.GetQNameByKey( nPrefix, sLName ) );
+ rAttrList.AddAttribute( sName, sCDATA, rValue );
+}
+
+void SwXMLTableItemMapper_Impl::handleSpecialItem(
+ SvXMLAttributeList& rAttrList,
+ const SvXMLItemMapEntry& rEntry,
+ const SfxPoolItem& rItem,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap,
+ const SfxItemSet *pSet ) const
+{
+ switch( rEntry.nWhichId )
+ {
+ case RES_LR_SPACE:
+ {
+ const SfxPoolItem *pItem;
+ if( pSet &&
+ SFX_ITEM_SET == pSet->GetItemState( RES_HORI_ORIENT, sal_True,
+ &pItem ) )
+ {
+ SwHoriOrient eHoriOrient =
+ ((const SwFmtHoriOrient *)pItem)->GetHoriOrient();
+ sal_Bool bExport = sal_False;
+ sal_uInt32 nMemberId = rEntry.nMemberId & MID_FLAG_MASK;
+ switch( nMemberId )
+ {
+ case MID_L_MARGIN:
+ bExport = HORI_NONE == eHoriOrient ||
+ HORI_LEFT_AND_WIDTH == eHoriOrient;
+ break;
+ case MID_R_MARGIN:
+ bExport = HORI_NONE == eHoriOrient;
+ break;
+ }
+ OUString sValue;
+ if( bExport && rItem.exportXML( sValue, nMemberId,
+ rUnitConverter ) )
+ {
+ AddAttribute( rEntry.nNameSpace, rEntry.pLocalName, sValue,
+ rNamespaceMap, rAttrList );
+ }
+ }
+ }
+ break;
+
+ case RES_FRM_SIZE:
+ {
+ sal_uInt32 nMemberId = rEntry.nMemberId & MID_FLAG_MASK;
+ switch( nMemberId )
+ {
+ case MID_FRMSIZE_WIDTH:
+ if( nAbsWidth )
+ {
+ OUStringBuffer sBuffer;
+ rUnitConverter.convertMeasure( sBuffer, nAbsWidth );
+ AddAttribute( rEntry.nNameSpace, rEntry.pLocalName,
+ sBuffer.makeStringAndClear(),
+ rNamespaceMap, rAttrList );
+ }
+ break;
+ case MID_FRMSIZE_REL_WIDTH:
+ {
+ OUString sValue;
+ if( rItem.exportXML( sValue, nMemberId, rUnitConverter ) )
+ {
+ AddAttribute( rEntry.nNameSpace, rEntry.pLocalName,
+ sValue, rNamespaceMap, rAttrList );
+ }
+ }
+ break;
+ }
+ }
+ break;
+ }
+}
+
+/** this method is called for every item that has the
+ MID_FLAG_ELEMENT_EXPORT flag set */
+void SwXMLTableItemMapper_Impl::handleElementItem(
+ const Reference< xml::sax::XDocumentHandler > & rHandler,
+ const SvXMLItemMapEntry& rEntry,
+ const SfxPoolItem& rItem,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap,
+ const SfxItemSet&,
+ sal_uInt16 ) const
+{
+ switch( rEntry.nWhichId )
+ {
+ case RES_BACKGROUND:
+ {
+ SwXMLBrushItemExport aBrushItemExport( rHandler, rUnitConverter );
+ aBrushItemExport.exportXML( (const SvxBrushItem&)rItem,
+ rNamespaceMap );
+ }
+ break;
+ }
+}
+
+inline void SwXMLTableItemMapper_Impl::SetAbsWidth( sal_uInt32 nAbs )
+{
+ nAbsWidth = nAbs;
+}
+
+// ----------------------------------------------------------------------------
+
+void SwXMLExport::_InitItemExport()
+{
+ pTwipUnitConv = new SvXMLUnitConverter( MAP_TWIP,
+ GetMM100UnitConverter().getXMLMeasureUnit() );
+
+#ifdef XML_CORE_API
+ SvXMLItemMapEntriesRef xParaItemMap =
+ new SvXMLItemMapEntries( aXMLParaItemMap );
+
+ pParaItemMapper = new SwXMLTextItemMapper_Impl( xParaItemMap,
+ *pTwipUnitConv,
+ GetDocHandler() );
+#endif
+
+ xTableItemMap = new SvXMLItemMapEntries( aXMLTableItemMap );
+ xTableRowItemMap = new SvXMLItemMapEntries( aXMLTableRowItemMap );
+ xTableCellItemMap = new SvXMLItemMapEntries( aXMLTableCellItemMap );
+
+ pTableItemMapper = new SwXMLTableItemMapper_Impl( xTableItemMap,
+ *pTwipUnitConv,
+ GetDocHandler() );
+}
+
+void SwXMLExport::_FinitItemExport()
+{
+#ifdef XML_CORE_API
+ delete pParaItemMapper;
+#endif
+ delete pTableItemMapper;
+ delete pTwipUnitConv;
+}
+
+void SwXMLExport::ExportTableFmt( const SwFrmFmt& rFmt, sal_uInt32 nAbsWidth )
+{
+ ((SwXMLTableItemMapper_Impl *)pTableItemMapper)
+ ->SetAbsWidth( nAbsWidth );
+ ExportFmt( rFmt, sXML_table );
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/xmliteme.cxx,v 1.1.1.1 2000-09-18 17:14:59 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.10 2000/09/18 16:05:07 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.9 2000/08/02 14:52:39 mib
+ text export continued
+
+ Revision 1.8 2000/07/31 09:42:35 mib
+ text export continued
+
+ Revision 1.7 2000/06/08 09:45:54 aw
+ changed to use functionality from xmloff project now
+
+ Revision 1.6 2000/05/03 12:08:05 mib
+ unicode
+
+ Revision 1.5 2000/03/13 14:33:44 mib
+ UNO3
+
+ Revision 1.4 2000/02/11 14:41:45 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.3 2000/02/07 10:03:28 mib
+ #70271#: tables
+
+ Revision 1.2 2000/01/20 14:03:58 mib
+ #70271#: deletion of unit converter
+
+ Revision 1.1 1999/12/14 07:32:49 mib
+ #70271#: XML import/export of drop cap/register/language item, splitted swxmlat
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/xmlitemi.cxx b/sw/source/filter/xml/xmlitemi.cxx
new file mode 100644
index 000000000000..4fae5b362f1f
--- /dev/null
+++ b/sw/source/filter/xml/xmlitemi.cxx
@@ -0,0 +1,638 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlitemi.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <hintids.hxx>
+
+#ifndef _RTL_USTRING_HXX_
+#include <rtl/ustring.hxx>
+#endif
+#ifndef _RSCSFX_HXX
+#include <rsc/rscsfx.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLITMAP_HXX
+#include <xmloff/xmlitmap.hxx>
+#endif
+#ifndef _XMLOFF_XMLIMPIT_HXX
+#include <xmloff/xmlimpit.hxx>
+#endif
+#ifndef _XMLOFF_XMLITEM_HXX
+#include <xmloff/xmlitem.hxx>
+#endif
+#ifndef _XMLOFF_I18NMAP_HXX
+#include <xmloff/i18nmap.hxx>
+#endif
+#ifndef _XMLOFF_XMLUCONV_HXX
+#include <xmloff/xmluconv.hxx>
+#endif
+#ifndef _XMLOFF_FAMILIES_HXX
+#include <xmloff/families.hxx>
+#endif
+
+#ifndef _SVX_UNOMID_HXX
+#include <svx/unomid.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_TSPTITEM_HXX
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX
+#include <svx/langitem.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLTABI_HXX
+//#include <xmloff/xmltabi.hxx>
+#endif
+
+#ifndef _XMLBRSHI_HXX
+#include "xmlbrshi.hxx"
+#endif
+
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+#ifndef _UNOMID_H
+#include <unomid.h>
+#endif
+
+#ifndef _XMDROPI_HXX
+#include "xmldropi.hxx"
+#endif
+#ifdef XML_CORE_API
+#ifndef _XMLTBLI_HXX
+#include "xmltbli.hxx"
+#endif
+#endif
+#ifndef _XMLIMP_HXX
+#include "xmlimp.hxx"
+#endif
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+#ifdef XML_CORE_API
+extern SvXMLItemMapEntry aXMLParaItemMap[];
+#endif
+extern SvXMLItemMapEntry aXMLTableItemMap[];
+extern SvXMLItemMapEntry aXMLTableColItemMap[];
+extern SvXMLItemMapEntry aXMLTableRowItemMap[];
+extern SvXMLItemMapEntry aXMLTableCellItemMap[];
+
+#ifdef XML_CORE_API
+class SwXMLImportTextItemMapper_Impl: public SvXMLImportItemMapper
+{
+ SvI18NMap& rI18NMap;
+ SwDoc& rDoc;
+
+public:
+
+ SwXMLImportTextItemMapper_Impl( SvXMLItemMapEntriesRef rMapEntries,
+ SwDoc& rD, SvI18NMap& rI18NMap );
+ virtual ~SwXMLImportTextItemMapper_Impl();
+
+ virtual sal_Bool handleSpecialItem( const SvXMLItemMapEntry& rEntry,
+ SfxPoolItem& rItem,
+ SfxItemSet& rSet,
+ const OUString& rValue,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap ) const;
+
+ virtual void finished( SfxItemSet& rSet ) const;
+};
+
+SwXMLImportTextItemMapper_Impl::SwXMLImportTextItemMapper_Impl(
+ SvXMLItemMapEntriesRef rMapEntries,
+ SwDoc& rD, SvI18NMap& rI18NM ) :
+ SvXMLImportItemMapper( rMapEntries, RES_UNKNOWNATR_CONTAINER),
+ rDoc( rD ),
+ rI18NMap( rI18NM )
+{
+}
+
+SwXMLImportTextItemMapper_Impl::~SwXMLImportTextItemMapper_Impl()
+{
+}
+
+sal_Bool SwXMLImportTextItemMapper_Impl::handleSpecialItem(
+ const SvXMLItemMapEntry& rEntry,
+ SfxPoolItem& rItem,
+ SfxItemSet& rItemSet,
+ const OUString& rValue,
+ const SvXMLUnitConverter& rUnitConv,
+ const SvXMLNamespaceMap& ) const
+{
+ sal_Bool bRet = sal_False;
+ switch( rItem.Which() )
+ {
+ case RES_TXTATR_CHARFMT:
+ DBG_ASSERT( !this,
+ "SwXMLImportTextItemMapper_Impl::handleSpecialItem: char fmt unexpected" );
+ break;
+
+ case RES_PARATR_NUMRULE:
+ if( rValue.getLength() )
+ {
+ OUString sName( rI18NMap.Get( SFX_STYLE_FAMILY_PSEUDO, rValue ) );
+ ((SwNumRuleItem&)rItem).SetValue( sName );
+ bRet = sal_True;
+ }
+ break;
+
+ case RES_CHRATR_LANGUAGE:
+ // If the item is not contained in the item set, its the default
+ // value. To set language and contry individually, we have to clear
+ // its value.
+ if( SFX_ITEM_SET != rItemSet.GetItemState( RES_CHRATR_LANGUAGE,
+ sal_False ) )
+ {
+ ((SvxLanguageItem &)rItem).SetLanguage( LANGUAGE_NONE );
+ }
+ bRet = rItem.importXML( rValue, rEntry.nMemberId, rUnitConv );
+ break;
+ }
+
+ return bRet;
+}
+
+void SwXMLImportTextItemMapper_Impl::finished( SfxItemSet& rSet ) const
+{
+ const SfxPoolItem *pItem;
+
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_CHRATR_FONT, sal_False,
+ &pItem ) )
+ {
+ const SvxFontItem *pFont = (const SvxFontItem *)pItem;
+ // delete font items that have no family name
+ if( 0 == pFont->GetFamilyName().Len() )
+ rSet.ClearItem( RES_CHRATR_FONT );
+ else if( RTL_TEXTENCODING_DONTKNOW == pFont->GetCharSet() )
+ {
+ SvxFontItem aFont( *pFont );
+ aFont.GetCharSet() = gsl_getSystemTextEncoding();
+ rSet.Put( aFont );
+ }
+ }
+
+ // ensure that box item have a distance to a border.
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_BOX, sal_False, &pItem ) )
+ {
+ const SvxBoxItem *pBox = (const SvxBoxItem *)pItem;
+ sal_uInt16 aLines[4] = { BOX_LINE_TOP, BOX_LINE_BOTTOM,
+ BOX_LINE_LEFT, BOX_LINE_RIGHT };
+ sal_uInt16 i;
+ for( i=0; i<4; i++ )
+ {
+ if( pBox->GetLine( aLines[i] ) &&
+ pBox->GetDistance( aLines[i] ) < MIN_BORDER_DIST )
+ break;
+ }
+ if( i < 4 )
+ {
+ SvxBoxItem aBox( *pBox );
+ for( /*i=0*/; i<4; i++ ) // i points to the mod. line
+ {
+ if( aBox.GetLine( aLines[i] ) &&
+ aBox.GetDistance( aLines[i] ) < MIN_BORDER_DIST )
+ aBox.SetDistance( MIN_BORDER_DIST, aLines[i] );
+ }
+ rSet.Put( aBox );
+ }
+ }
+}
+#endif
+
+// ---------------------------------------------------------------------
+
+class SwXMLImportTableItemMapper_Impl: public SvXMLImportItemMapper
+{
+
+public:
+
+ SwXMLImportTableItemMapper_Impl( SvXMLItemMapEntriesRef rMapEntries );
+ virtual ~SwXMLImportTableItemMapper_Impl();
+
+ virtual sal_Bool handleSpecialItem( const SvXMLItemMapEntry& rEntry,
+ SfxPoolItem& rItem,
+ SfxItemSet& rSet,
+ const OUString& rValue,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap ) const;
+ virtual void finished( SfxItemSet& rSet ) const;
+};
+
+SwXMLImportTableItemMapper_Impl::SwXMLImportTableItemMapper_Impl(
+ SvXMLItemMapEntriesRef rMapEntries ) :
+ SvXMLImportItemMapper( rMapEntries, RES_UNKNOWNATR_CONTAINER)
+{
+}
+
+SwXMLImportTableItemMapper_Impl::~SwXMLImportTableItemMapper_Impl()
+{
+}
+
+sal_Bool SwXMLImportTableItemMapper_Impl::handleSpecialItem(
+ const SvXMLItemMapEntry& rEntry,
+ SfxPoolItem& rItem,
+ SfxItemSet& rItemSet,
+ const OUString& rValue,
+ const SvXMLUnitConverter& rUnitConv,
+ const SvXMLNamespaceMap& ) const
+{
+ sal_Bool bRet = sal_False;
+ sal_uInt16 nMemberId = rEntry.nMemberId & MID_FLAG_MASK;
+ switch( rItem.Which() )
+ {
+ case RES_FRM_SIZE:
+ switch( nMemberId )
+ {
+ case MID_FRMSIZE_COL_WIDTH:
+ // If the item is existing already, a relative value has been set
+ // already that must be preserved.
+ if( SFX_ITEM_SET != rItemSet.GetItemState( RES_FRM_SIZE,
+ sal_False ) )
+ bRet = rItem.importXML( rValue, nMemberId, rUnitConv );
+ break;
+ }
+ }
+
+ return bRet;
+}
+
+void SwXMLImportTableItemMapper_Impl::finished( SfxItemSet& rSet ) const
+{
+#if 0
+ const SfxPoolItem *pItem;
+
+ // ensure that box item have a distance to a border.
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_BOX, sal_False, &pItem ) )
+ {
+ const SvxBoxItem *pBox = (const SvxBoxItem *)pItem;
+ sal_uInt16 aLines[4] = { BOX_LINE_TOP, BOX_LINE_BOTTOM,
+ BOX_LINE_LEFT, BOX_LINE_RIGHT };
+ sal_uInt16 i;
+ for( i=0; i<4; i++ )
+ {
+ if( pBox->GetLine( aLines[i] ) &&
+ pBox->GetDistance( aLines[i] ) < MIN_BORDER_DIST )
+ break;
+ }
+ if( i < 4 )
+ {
+ SvxBoxItem aBox( *pBox );
+ for( /*i=0*/; i<4; i++ ) // i points to the mod. line
+ {
+ if( aBox.GetLine( aLines[i] ) &&
+ aBox.GetDistance( aLines[i] ) < MIN_BORDER_DIST )
+ aBox.SetDistance( MIN_BORDER_DIST, aLines[i] );
+ }
+ rSet.Put( aBox );
+ }
+ }
+#endif
+}
+
+// ---------------------------------------------------------------------
+
+class SwXMLItemSetContext_Impl : public SvXMLItemSetContext
+{
+ SvXMLImportContextRef xBackground;
+#ifdef XML_CORE_API
+ SvXMLImportContextRef xTabStop;
+ SvXMLImportContextRef xDropCap;
+#endif
+
+public:
+ SwXMLItemSetContext_Impl( SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SfxItemSet& rItemSet,
+ const SvXMLImportItemMapper& rIMapper,
+ const SvXMLUnitConverter& rUnitConv );
+ virtual ~SwXMLItemSetContext_Impl();
+
+ virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SfxItemSet& rItemSet,
+ const SvXMLItemMapEntry& rEntry,
+ const SvXMLUnitConverter& rUnitConv );
+};
+
+SwXMLItemSetContext_Impl::SwXMLItemSetContext_Impl(
+ SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SfxItemSet& rItemSet,
+ const SvXMLImportItemMapper& rIMapper,
+ const SvXMLUnitConverter& rUnitConv ) :
+ SvXMLItemSetContext( rImport, nPrfx, rLName, xAttrList,
+ rItemSet, rIMapper, rUnitConv )
+{
+}
+
+SwXMLItemSetContext_Impl::~SwXMLItemSetContext_Impl()
+{
+#ifdef XML_CORE_API
+ if( xTabStop.Is() )
+ {
+ Any aAny;
+ ((SvxXMLTabStopImportContext*)&xTabStop)->fillTabStops( aAny );
+ SvxTabStopItem aTabStop( RES_PARATR_TABSTOP );
+ ((SfxPoolItem *)&aTabStop)->PutValue( aAny, 0 );
+ rItemSet.Put( aTabStop );
+ }
+ if( xDropCap.Is() )
+ {
+ const SwFmtDrop& rItem =
+ ((SwXMLFmtDropImportContext*)&xDropCap)->GetItem();
+ rItemSet.Put( rItem );
+ }
+#endif
+ if( xBackground.Is() )
+ {
+ const SvxBrushItem& rItem =
+ ((SwXMLBrushItemImportContext*)&xBackground)->GetItem();
+ rItemSet.Put( rItem );
+ }
+}
+
+SvXMLImportContext *SwXMLItemSetContext_Impl::CreateChildContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SfxItemSet& rItemSet,
+ const SvXMLItemMapEntry& rEntry,
+ const SvXMLUnitConverter& rUnitConv )
+{
+ SvXMLImportContext *pContext = 0;
+
+ switch( rEntry.nWhichId )
+ {
+#ifdef XML_CORE_API
+ case RES_PARATR_TABSTOP:
+ pContext = new SvxXMLTabStopImportContext( GetImport(), nPrefix,
+ rLocalName, rUnitConv );
+ xTabStop = pContext;
+ break;
+
+ case RES_PARATR_DROP:
+ pContext = new SwXMLFmtDropImportContext( (SwXMLImport&)GetImport(),
+ nPrefix, rLocalName,
+ xAttrList, rUnitConv,
+ RES_PARATR_DROP );
+ xDropCap = pContext;
+ break;
+#endif
+
+ case RES_BACKGROUND:
+ {
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BACKGROUND,
+ sal_False, &pItem ) )
+ {
+ pContext = new SwXMLBrushItemImportContext(
+ GetImport(), nPrefix, rLocalName, xAttrList,
+ rUnitConv, *(const SvxBrushItem *)pItem );
+ }
+ else
+ {
+ pContext = new SwXMLBrushItemImportContext(
+ GetImport(), nPrefix, rLocalName, xAttrList,
+ rUnitConv, RES_BACKGROUND );
+ }
+ xBackground = pContext;
+ }
+ break;
+ }
+
+ if( !pContext )
+ pContext = SvXMLItemSetContext::CreateChildContext( nPrefix, rLocalName,
+ xAttrList, rItemSet,
+ rEntry, rUnitConv );
+
+ return pContext;
+}
+
+// ---------------------------------------------------------------------
+
+void SwXMLImport::_InitItemImport()
+{
+ pTwipUnitConv = new SvXMLUnitConverter( MAP_TWIP, MAP_TWIP );
+
+#ifdef XML_CORE_API
+ SvXMLItemMapEntriesRef xParaItemMapEntries =
+ new SvXMLItemMapEntries( aXMLParaItemMap );
+
+ pParaItemMapper = new SwXMLImportTextItemMapper_Impl( xParaItemMapEntries,
+ GetDoc(), GetI18NMap() );
+#endif
+
+ xTableItemMap = new SvXMLItemMapEntries( aXMLTableItemMap );
+ xTableColItemMap = new SvXMLItemMapEntries( aXMLTableColItemMap );
+ xTableRowItemMap = new SvXMLItemMapEntries( aXMLTableRowItemMap );
+ xTableCellItemMap = new SvXMLItemMapEntries( aXMLTableCellItemMap );
+
+ pTableItemMapper = new SwXMLImportTableItemMapper_Impl( xTableItemMap );
+}
+
+void SwXMLImport::_FinitItemImport()
+{
+#ifdef XML_CORE_API
+ delete pParaItemMapper;
+#endif
+ delete pTableItemMapper;
+ delete pTwipUnitConv;
+}
+
+#ifdef XML_CORE_API
+SvXMLImportContext *SwXMLImport::CreateParaItemImportContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SfxItemSet& rItemSet )
+{
+ return new SwXMLItemSetContext_Impl( *this, nPrefix, rLocalName,
+ xAttrList, rItemSet,
+ GetParaItemMapper(),
+ GetTwipUnitConverter() );
+}
+#endif
+
+SvXMLImportContext *SwXMLImport::CreateTableItemImportContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+#ifdef XML_CORE_API
+ sal_uInt16 nSubFamily,
+#else
+ sal_uInt16 nFamily,
+#endif
+ SfxItemSet& rItemSet )
+{
+ SvXMLItemMapEntriesRef xItemMap;
+
+#ifdef XML_CORE_API
+ switch( nSubFamily )
+#else
+ switch( nFamily )
+#endif
+ {
+#ifdef XML_CORE_API
+ case SW_STYLE_SUBFAMILY_TABLE:
+#else
+ case XML_STYLE_FAMILY_TABLE_TABLE:
+#endif
+ xItemMap = xTableItemMap;
+ break;
+#ifdef XML_CORE_API
+ case SW_STYLE_SUBFAMILY_TABLE_COL:
+#else
+ case XML_STYLE_FAMILY_TABLE_COLUMN:
+#endif
+ xItemMap = xTableColItemMap;
+ break;
+#ifdef XML_CORE_API
+ case SW_STYLE_SUBFAMILY_TABLE_LINE:
+#else
+ case XML_STYLE_FAMILY_TABLE_ROW:
+#endif
+ xItemMap = xTableRowItemMap;
+ break;
+#ifdef XML_CORE_API
+ case SW_STYLE_SUBFAMILY_TABLE_BOX:
+#else
+ case XML_STYLE_FAMILY_TABLE_CELL:
+#endif
+ xItemMap = xTableCellItemMap;
+ break;
+ }
+
+ pTableItemMapper->setMapEntries( xItemMap );
+
+ return new SwXMLItemSetContext_Impl( *this, nPrefix, rLocalName,
+ xAttrList, rItemSet,
+ GetTableItemMapper(),
+ GetTwipUnitConverter() );
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/xmlitemi.cxx,v 1.1.1.1 2000-09-18 17:15:00 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.11 2000/09/18 16:05:07 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.10 2000/08/24 11:16:41 mib
+ text import continued
+
+ Revision 1.9 2000/08/02 14:52:39 mib
+ text export continued
+
+ Revision 1.8 2000/06/08 09:45:54 aw
+ changed to use functionality from xmloff project now
+
+ Revision 1.7 2000/05/03 12:08:05 mib
+ unicode
+
+ Revision 1.6 2000/03/13 14:33:44 mib
+ UNO3
+
+ Revision 1.5 2000/02/17 14:40:30 mib
+ #70271#: XML table import
+
+ Revision 1.3 2000/01/20 14:03:57 mib
+ #70271#: deletion of unit converter
+
+ Revision 1.2 2000/01/06 15:08:28 mib
+ #70271#:separation of text/layout, cond. styles, adaptions to wd-xlink-19991229
+
+ Revision 1.1 1999/12/14 07:32:58 mib
+ #70271#: XML import/export of drop cap/register/language item, splitted swxmlat
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/xmlitemm.cxx b/sw/source/filter/xml/xmlitemm.cxx
new file mode 100644
index 000000000000..a8f210f815d4
--- /dev/null
+++ b/sw/source/filter/xml/xmlitemm.cxx
@@ -0,0 +1,548 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlitemm.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <hintids.hxx>
+
+#ifndef _SVX_UNOMID_HXX
+#include <svx/unomid.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLNMSPE_HXX
+#include <xmloff/xmlnmspe.hxx>
+#endif
+#ifndef _XMLOFF_XMLITMAP_HXX
+#include <xmloff/xmlitmap.hxx>
+#endif
+#ifndef _XMLOFF_XMLKYWD_HXX
+#include <xmloff/xmlkywd.hxx>
+#endif
+
+#ifndef _UNOMID_H
+#include <unomid.h>
+#endif
+
+#define M_E( p, l, w, m ) \
+ { XML_NAMESPACE_##p, sXML_##l, w, m }
+#define M_E_SI( p, l, w, m ) \
+ { XML_NAMESPACE_##p, sXML_##l, w, MID_FLAG_SPECIAL_ITEM_IMPORT|m }
+#define M_E_SE( p, l, w, m ) \
+ { XML_NAMESPACE_##p, sXML_##l, w, MID_FLAG_SPECIAL_ITEM_EXPORT|m }
+
+#ifdef XML_CORE_API
+SvXMLItemMapEntry aXMLParaItemMap[] =
+{
+ // RES_CHRATR_CASEMAP
+ M_E( FO, font_variant, RES_CHRATR_CASEMAP, MID_CASEMAP_VARIANT ),
+ M_E( FO, text_transform, RES_CHRATR_CASEMAP, MID_CASEMAP_TRANS ),
+ // RES_CHRATR_COLOR
+ M_E( FO, color, RES_CHRATR_COLOR, 0 ),
+ // RES_CHRATR_CONTOUR
+ M_E( STYLE, text_outline, RES_CHRATR_CONTOUR, 0 ),
+ // RES_CHRATR_CROSSEDOUT
+ M_E( STYLE, text_crossing_out, RES_CHRATR_CROSSEDOUT, 0 ),
+ // RES_CHRATR_ESCAPEMENT
+ M_E( STYLE, text_position, RES_CHRATR_ESCAPEMENT, 0 ),
+ // RES_CHRATR_FONT
+ M_E( FO, font_family, RES_CHRATR_FONT, MID_FONT_FAMILY_NAME ),
+ M_E( STYLE, font_style_name, RES_CHRATR_FONT, MID_FONT_STYLE_NAME ),
+ M_E( STYLE, font_family_generic,RES_CHRATR_FONT, MID_FONT_FAMILY ),
+ M_E( STYLE, font_pitch, RES_CHRATR_FONT, MID_FONT_PITCH ),
+ M_E( STYLE, font_charset, RES_CHRATR_FONT, MID_FONT_CHAR_SET ),
+ // RES_CHRATR_FONTSIZE
+ M_E( FO, font_size, RES_CHRATR_FONTSIZE, 0 ),
+ // RES_CHRATR_KERNING
+ M_E( FO, letter_spacing, RES_CHRATR_KERNING, 0 ),
+ // RES_CHRATR_LANGUAGE
+ M_E_SI( FO, language, RES_CHRATR_LANGUAGE, MID_LANGUAGE ),
+ M_E_SI( FO, country, RES_CHRATR_LANGUAGE, MID_COUNTRY ),
+ // RES_CHRATR_POSTURE
+ M_E( FO, font_style, RES_CHRATR_POSTURE, 0 ),
+ // RES_CHRATR_PROPORTIONALFONTSIZE
+ // TODO: not used?
+ // RES_CHRATR_SHADOWED
+ M_E( FO, text_shadow, RES_CHRATR_SHADOWED, 0 ),
+ // RES_CHRATR_UNDERLINE
+ M_E( STYLE, text_underline, RES_CHRATR_UNDERLINE, 0 ),
+ // RES_CHRATR_WEIGHT
+ M_E( FO, font_weight, RES_CHRATR_WEIGHT, 0 ),
+ // RES_CHRATR_WORDLINEMODE
+ M_E( FO, score_spaces, RES_CHRATR_WORDLINEMODE, 0 ),
+ // RES_CHRATR_AUTOKERN
+ M_E( STYLE, letter_kerning, RES_CHRATR_AUTOKERN, 0 ),
+ // RES_CHRATR_BLINK
+ M_E( STYLE, text_blinking, RES_CHRATR_BLINK, 0 ),
+ // RES_CHRATR_NOHYPHEN
+ // TODO: not used?
+ // RES_CHRATR_NOLINEBREAK
+ // TODO: not used?
+ // RES_CHRATR_BACKGROUND
+ M_E( FO, text_background_color, RES_CHRATR_BACKGROUND, MID_BACK_COLOR ),
+ // RES_TXTATR_INETFMT
+ // TODO
+ // RES_TXTATR_REFMARK
+ // TODO
+ // RES_TXTATR_TOXMARK
+ // TODO
+ // RES_TXTATR_CHARFMT
+ M_E_SI( TEXT, style_name, RES_TXTATR_CHARFMT, 0 ),
+ // RES_TXTATR_FIELD
+ // TODO
+ // RES_TXTATR_FLYCNT
+ // TODO
+ // RES_TXTATR_FTN
+ // TODO
+ // RES_TXTATR_SOFTHYPH
+ // TODO
+ // RES_TXTATR_HARDBLANK
+ // TODO
+
+ // RES_PARATR_LINESPACING
+ M_E( FO, line_height, RES_PARATR_LINESPACING, MID_LS_FIXED ),
+ M_E( STYLE, line_height_at_least, RES_PARATR_LINESPACING, MID_LS_MINIMUM ),
+ M_E( STYLE, line_spacing, RES_PARATR_LINESPACING, MID_LS_DISTANCE ),
+ // RES_PARATR_ADJUST
+ M_E( FO, text_align, RES_PARATR_ADJUST, MID_PARA_ADJUST ),
+ M_E( FO, text_align_last, RES_PARATR_ADJUST, MID_LAST_LINE_ADJUST ),
+ M_E( STYLE, justify_single_word,RES_PARATR_ADJUST, MID_EXPAND_SINGLE ),
+ // RES_PARATR_SPLIT
+ M_E( STYLE, break_inside, RES_PARATR_SPLIT, 0 ),
+ // RES_PARATR_ORPHANS
+ M_E( FO, orphans, RES_PARATR_ORPHANS, 0 ),
+ // RES_PARATR_WIDOWS
+ M_E( FO, widows, RES_PARATR_WIDOWS, 0 ),
+ // RES_PARATR_TABSTOP
+ M_E( STYLE, tabstop_tab_stops, RES_PARATR_TABSTOP, MID_FLAG_ELEMENT_ITEM ),
+ // RES_PARATR_HYPHENZONE
+ M_E( FO, hyphenate, RES_PARATR_HYPHENZONE,
+ MID_IS_HYPHEN ),
+ M_E( FO, hyphenation_remain_char_count, RES_PARATR_HYPHENZONE,
+ MID_HYPHEN_MIN_LEAD ),
+ M_E( FO, hyphenation_push_char_count, RES_PARATR_HYPHENZONE,
+ MID_HYPHEN_MIN_TRAIL ),
+ M_E( FO, hyphenation_ladder_count, RES_PARATR_HYPHENZONE,
+ MID_HYPHEN_MAX_HYPHENS ),
+ // RES_PARATR_DROP
+ M_E( STYLE, drop_cap, RES_PARATR_DROP, MID_FLAG_ELEMENT_ITEM ),
+ // RES_PARATR_REGISTER
+ M_E( STYLE, register_true, RES_PARATR_REGISTER, 0 ),
+ // RES_PARATR_NUMRULE
+ // not required
+
+ // RES_FILL_ORDER
+ // not required
+ // RES_FRM_SIZE
+ // not required
+ // RES_PAPER_BIN
+ // not required
+ // RES_LR_SPACE
+ M_E( FO, margin_left, RES_LR_SPACE, MID_L_MARGIN ),
+ M_E( FO, margin_right, RES_LR_SPACE, MID_R_MARGIN ),
+ M_E( FO, text_indent, RES_LR_SPACE, MID_FIRST_LINE_INDENT ),
+ M_E( STYLE, auto_text_indent, RES_LR_SPACE, MID_FIRST_AUTO ),
+ // RES_UL_SPACE
+ M_E( FO, margin_top, RES_UL_SPACE, MID_UP_MARGIN ),
+ M_E( FO, margin_bottom, RES_UL_SPACE, MID_LO_MARGIN ),
+ // RES_PAGEDESC
+ // TODO
+ // RES_BREAK
+ M_E( FO, break_before, RES_BREAK, MID_BREAK_BEFORE ),
+ M_E( FO, break_after, RES_BREAK, MID_BREAK_AFTER ),
+ // RES_CNTNT
+ // not required
+ // RES_HEADER
+ // not required
+ // RES_FOOTER
+ // not required
+ // RES_PRINT
+ // not required
+ // RES_OPAQUE
+ // not required
+ // RES_PROTECT
+ // not required
+ // RES_SURROUND
+ // not required
+ // RES_VERT_ORIENT
+ // not required
+ // RES_HORI_ORIENT
+ // not required
+ // RES_ANCHOR
+ // not required
+ // RES_BACKGROUND
+ M_E( FO, background_color, RES_BACKGROUND, MID_BACK_COLOR ),
+ M_E( STYLE, background_image, RES_BACKGROUND, MID_FLAG_ELEMENT_ITEM ),
+ // RES_BOX
+ M_E( STYLE, border_line_width, RES_BOX, ALL_BORDER_LINE_WIDTH ),
+ M_E( STYLE, border_line_width_left, RES_BOX, LEFT_BORDER_LINE_WIDTH ),
+ M_E( STYLE, border_line_width_right, RES_BOX, RIGHT_BORDER_LINE_WIDTH ),
+ M_E( STYLE, border_line_width_top, RES_BOX, TOP_BORDER_LINE_WIDTH ),
+ M_E( STYLE, border_line_width_bottom, RES_BOX, BOTTOM_BORDER_LINE_WIDTH ),
+ M_E( FO, padding, RES_BOX, ALL_BORDER_PADDING ),
+ M_E( FO, padding_left, RES_BOX, LEFT_BORDER_PADDING ),
+ M_E( FO, padding_right, RES_BOX, RIGHT_BORDER_PADDING ),
+ M_E( FO, padding_top, RES_BOX, TOP_BORDER_PADDING ),
+ M_E( FO, padding_bottom, RES_BOX, BOTTOM_BORDER_PADDING ),
+ M_E( FO, border, RES_BOX, ALL_BORDER ),
+ M_E( FO, border_left, RES_BOX, LEFT_BORDER ),
+ M_E( FO, border_right, RES_BOX, RIGHT_BORDER ),
+ M_E( FO, border_top, RES_BOX, TOP_BORDER ),
+ M_E( FO, border_bottom, RES_BOX, BOTTOM_BORDER ),
+ // RES_SHADOW
+ M_E( STYLE, shadow, RES_SHADOW, 0 ),
+ // RES_FRMMACRO
+ // not required
+ // RES_COL
+ // not required
+ // RES_KEEP
+ M_E( FO, keep_with_next, RES_KEEP, 0 ),
+ // RES_URL
+ // not required
+ // RES_EDIT_IN_READONLY
+ // not required
+ // RES_LAYOUT_SPLIT
+ // not required
+ // RES_CHAIN
+ // not required
+ // RES_LINENUMBER
+ // TODO
+ // RES_FTN_AT_TXTEND
+ // not required
+ // RES_END_AT_TXTEND
+ // not required
+ // RES_UNKNOWNATR_CONTAINER
+ M_E_SE( TEXT, xmlns, RES_UNKNOWNATR_CONTAINER, 0 ),
+ {0,0,0,0 }
+};
+#endif
+
+SvXMLItemMapEntry aXMLTableItemMap[] =
+{
+ // RES_FILL_ORDER
+ // not required
+ // RES_FRM_SIZE
+ M_E_SE( STYLE, width, RES_FRM_SIZE, MID_FRMSIZE_WIDTH ),
+ M_E_SE( STYLE, rel_width, RES_FRM_SIZE, MID_FRMSIZE_REL_WIDTH ),
+ // RES_PAPER_BIN
+ // not required
+ // TODO: RES_LR_SPACE
+ M_E_SE( FO, margin_left, RES_LR_SPACE, MID_L_MARGIN ),
+ M_E_SE( FO, margin_right, RES_LR_SPACE, MID_R_MARGIN ),
+ // RES_UL_SPACE
+ M_E( FO, margin_top, RES_UL_SPACE, MID_UP_MARGIN ),
+ M_E( FO, margin_bottom, RES_UL_SPACE, MID_LO_MARGIN ),
+ // RES_PAGEDESC
+ // TODO
+ // RES_BREAK
+ M_E( FO, break_before, RES_BREAK, MID_BREAK_BEFORE ),
+ M_E( FO, break_after, RES_BREAK, MID_BREAK_AFTER ),
+ // RES_CNTNT
+ // not required
+ // RES_HEADER
+ // not required
+ // RES_FOOTER
+ // not required
+ // RES_PRINT
+ // not required
+ // RES_OPAQUE
+ // not required
+ // RES_PROTECT
+ // not required
+ // RES_SURROUND
+ // not required
+ // RES_VERT_ORIENT
+ // not required
+ // RES_HORI_ORIENT
+ M_E( TABLE, align, RES_HORI_ORIENT, 0 ),
+ // RES_ANCHOR
+ // not required
+ // RES_BACKGROUND
+ M_E( FO, background_color, RES_BACKGROUND, MID_BACK_COLOR ),
+ M_E( STYLE, background_image, RES_BACKGROUND, MID_FLAG_ELEMENT_ITEM ),
+ // RES_BOX
+ // not required
+ // RES_SHADOW
+ M_E( STYLE, shadow, RES_SHADOW, 0 ),
+ // RES_FRMMACRO
+ // not required
+ // RES_COL
+ // not required
+ // RES_KEEP
+ M_E( FO, keep_with_next, RES_KEEP, 0 ),
+ // RES_URL
+ // not required
+ // RES_EDIT_IN_READONLY
+ // not required
+ // RES_LAYOUT_SPLIT
+ M_E( STYLE, may_break_between_rows, RES_LAYOUT_SPLIT, 0 ),
+ // RES_CHAIN
+ // not required
+ // RES_LINENUMBER
+ // not required
+ // RES_FTN_AT_TXTEND
+ // not required
+ // RES_END_AT_TXTEND
+ // not required
+ // RES_UNKNOWNATR_CONTAINER
+ M_E_SE( TEXT, xmlns, RES_UNKNOWNATR_CONTAINER, 0 ),
+ {0,0,0,0 }
+};
+
+SvXMLItemMapEntry aXMLTableColItemMap[] =
+{
+ M_E_SI( STYLE, column_width, RES_FRM_SIZE, MID_FRMSIZE_COL_WIDTH ),
+ M_E( STYLE, rel_column_width, RES_FRM_SIZE, MID_FRMSIZE_REL_COL_WIDTH ),
+ {0,0,0,0 }
+};
+
+SvXMLItemMapEntry aXMLTableRowItemMap[] =
+{
+ // RES_FILL_ORDER
+ // not required
+ // RES_FRM_SIZE
+ M_E( STYLE, row_height, RES_FRM_SIZE, MID_FRMSIZE_FIX_HEIGHT ),
+ M_E( STYLE, min_row_height, RES_FRM_SIZE, MID_FRMSIZE_MIN_HEIGHT ),
+ // RES_PAPER_BIN
+ // not required
+ // RES_LR_SPACE
+ // not required
+ // RES_UL_SPACE
+ // not required
+ // RES_PAGEDESC
+ // not required
+ // RES_BREAK
+ // not required
+ // RES_CNTNT
+ // not required
+ // RES_HEADER
+ // not required
+ // RES_FOOTER
+ // not required
+ // RES_PRINT
+ // not required
+ // RES_OPAQUE
+ // not required
+ // RES_PROTECT
+ // not required
+ // RES_SURROUND
+ // not required
+ // RES_VERT_ORIENT
+ // not required
+ // RES_HORI_ORIENT
+ // not required
+ // RES_ANCHOR
+ // not required
+ // RES_BACKGROUND
+ M_E( FO, background_color, RES_BACKGROUND, MID_BACK_COLOR ),
+ M_E( STYLE, background_image, RES_BACKGROUND, MID_FLAG_ELEMENT_ITEM ),
+ // RES_BOX
+ // not required
+ // RES_ANCHOR
+ // not required
+ // RES_SHADOW
+ // not required
+ // RES_FRMMACRO
+ // not required
+ // RES_COL
+ // not required
+ // RES_KEEP
+ // not required
+ // RES_URL
+ // not required
+ // RES_EDIT_IN_READONLY
+ // not required
+ // RES_LAYOUT_SPLIT
+ // not required
+ // RES_CHAIN
+ // not required
+ // RES_LINENUMBER
+ // not required
+ // RES_FTN_AT_TXTEND
+ // not required
+ // RES_END_AT_TXTEND
+ // not required
+ // RES_UNKNOWNATR_CONTAINER
+ M_E_SE( TEXT, xmlns, RES_UNKNOWNATR_CONTAINER, 0 ),
+ {0,0,0,0 }
+};
+
+SvXMLItemMapEntry aXMLTableCellItemMap[] =
+{
+ // RES_FILL_ORDER
+ // not required
+ // RES_FRM_SIZE
+ // not required
+ // RES_PAPER_BIN
+ // not required
+ // RES_LR_SPACE
+ // not required
+ // RES_UL_SPACE
+ // not required
+ // RES_PAGEDESC
+ // not required
+ // RES_BREAK
+ // not required
+ // RES_CNTNT
+ // not required
+ // RES_HEADER
+ // not required
+ // RES_FOOTER
+ // not required
+ // RES_PRINT
+ // not required
+ // RES_OPAQUE
+ // not required
+ // RES_PROTECT
+ // not required
+ // RES_SURROUND
+ // not required
+ // RES_VERT_ORIENT
+ M_E( TABLE, vertical_align, RES_VERT_ORIENT, 0 ),
+ // RES_HORI_ORIENT
+ // not required
+ // RES_ANCHOR
+ // not required
+ // RES_BACKGROUND
+ M_E( FO, background_color, RES_BACKGROUND, MID_BACK_COLOR ),
+ M_E( STYLE, background_image, RES_BACKGROUND, MID_FLAG_ELEMENT_ITEM ),
+ // RES_BOX
+ M_E( STYLE, border_line_width, RES_BOX, ALL_BORDER_LINE_WIDTH ),
+ M_E( STYLE, border_line_width_left, RES_BOX, LEFT_BORDER_LINE_WIDTH ),
+ M_E( STYLE, border_line_width_right, RES_BOX, RIGHT_BORDER_LINE_WIDTH ),
+ M_E( STYLE, border_line_width_top, RES_BOX, TOP_BORDER_LINE_WIDTH ),
+ M_E( STYLE, border_line_width_bottom, RES_BOX, BOTTOM_BORDER_LINE_WIDTH ),
+ M_E( FO, padding, RES_BOX, ALL_BORDER_PADDING ),
+ M_E( FO, padding_left, RES_BOX, LEFT_BORDER_PADDING ),
+ M_E( FO, padding_right, RES_BOX, RIGHT_BORDER_PADDING ),
+ M_E( FO, padding_top, RES_BOX, TOP_BORDER_PADDING ),
+ M_E( FO, padding_bottom, RES_BOX, BOTTOM_BORDER_PADDING ),
+ M_E( FO, border, RES_BOX, ALL_BORDER ),
+ M_E( FO, border_left, RES_BOX, LEFT_BORDER ),
+ M_E( FO, border_right, RES_BOX, RIGHT_BORDER ),
+ M_E( FO, border_top, RES_BOX, TOP_BORDER ),
+ M_E( FO, border_bottom, RES_BOX, BOTTOM_BORDER ),
+ // RES_SHADOW
+ // not required
+ // RES_FRMMACRO
+ // not required
+ // RES_COL
+ // not required
+ // RES_KEEP
+ // not required
+ // RES_URL
+ // not required
+ // RES_EDIT_IN_READONLY
+ // not required
+ // RES_LAYOUT_SPLIT
+ // not required
+ // RES_CHAIN
+ // not required
+ // RES_LINENUMBER
+ // not required
+ // RES_FTN_AT_TXTEND
+ // not required
+ // RES_END_AT_TXTEND
+ // not required
+ // RES_UNKNOWNATR_CONTAINER
+ M_E_SE( TEXT, xmlns, RES_UNKNOWNATR_CONTAINER, 0 ),
+ {0,0,0,0 }
+};
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/xmlitemm.cxx,v 1.1.1.1 2000-09-18 17:15:00 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.8 2000/09/18 16:05:07 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.7 2000/08/24 11:16:41 mib
+ text import continued
+
+ Revision 1.6 2000/08/10 10:22:16 mib
+ #74404#: Adeptions to new XSL/XLink working draft
+
+ Revision 1.5 2000/06/08 09:45:54 aw
+ changed to use functionality from xmloff project now
+
+ Revision 1.4 2000/02/17 14:40:30 mib
+ #70271#: XML table import
+
+ Revision 1.3 2000/02/07 10:03:28 mib
+ #70271#: tables
+
+ Revision 1.2 2000/01/12 15:00:23 mib
+ #70271#: lists
+
+ Revision 1.1 1999/12/14 07:33:08 mib
+ #70271#: XML import/export of drop cap/register/language item, splitted swxmlat
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/xmlmeta.cxx b/sw/source/filter/xml/xmlmeta.cxx
new file mode 100644
index 000000000000..9ea50332e4f9
--- /dev/null
+++ b/sw/source/filter/xml/xmlmeta.cxx
@@ -0,0 +1,227 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlmeta.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <hintids.hxx>
+
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DOCUMENT_XDOCUMENTINFOSUPPLIER_HPP_
+#include <com/sun/star/document/XDocumentInfoSupplier.hpp>
+#endif
+
+#ifndef _XMLOFF_XMLNMSPE_HXX
+#include <xmloff/xmlnmspe.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLMETAI_HXX
+#include <xmloff/xmlmetai.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLMETAE_HXX
+#include <xmloff/xmlmetae.hxx>
+#endif
+
+#ifndef _SVX_LANGITEM_HXX
+#include <svx/langitem.hxx>
+#endif
+
+#ifndef _SWDOCSH_HXX
+#include "docsh.hxx"
+#endif
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+
+#ifndef _XMLIMP_HXX
+#include "xmlimp.hxx"
+#endif
+#ifndef _XMLEXP_HXX
+#include "xmlexp.hxx"
+#endif
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+// ---------------------------------------------------------------------
+
+#if 0
+class SwXMLMetaContext_Impl : public SfxXMLMetaContext
+{
+public:
+ SwXMLMetaContext_Impl( SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< document::XDocumentInfo > & rInfo ) :
+ SfxXMLMetaContext( rImport, nPrfx, rLName, rInfo )
+ {}
+
+ virtual void SetDocLanguage( LanguageType eLang );
+};
+
+void SwXMLMetaContext_Impl::SetDocLanguage( LanguageType eLang )
+{
+ SwDoc& rDoc = ((SwXMLImport&)GetImport()).GetDoc();
+
+ rDoc.SetDefault( SvxLanguageItem( eLang, RES_CHRATR_LANGUAGE ) );
+}
+#endif
+
+// ---------------------------------------------------------------------
+
+SvXMLImportContext *SwXMLImport::CreateMetaContext(
+ const OUString& rLocalName )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !(IsStylesOnlyMode() || IsInsertMode()) )
+ {
+ pContext = new SfxXMLMetaContext( *this,
+ XML_NAMESPACE_OFFICE, rLocalName,
+ GetModel() );
+#if 0
+ SfxObjectShell* pObjSh = pDoc->GetDocShell();
+ if( pObjSh )
+ {
+ Reference< frame::XModel > xModel = pObjSh->GetBaseModel();
+ Reference< document::XDocumentInfoSupplier > xSupp( xModel,
+ UNO_QUERY );
+ if( xSupp.is() )
+ pContext = new SwXMLMetaContext_Impl( *this,
+ XML_NAMESPACE_OFFICE, rLocalName,
+ xSupp->getDocumentInfo() );
+ }
+#endif
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( *this, XML_NAMESPACE_OFFICE,
+ rLocalName );
+
+ return pContext;
+}
+
+// ---------------------------------------------------------------------
+
+#if 0
+void SwXMLExport::_ExportMeta()
+{
+ SfxObjectShell* pObjSh = pDoc->GetDocShell();
+ if( pObjSh )
+ {
+ pObjSh->UpdateDocInfoForSave(); // update information
+
+ LanguageType eDocLang = ((const SvxLanguageItem&)
+ pDoc->GetDefault(RES_CHRATR_LANGUAGE)).GetLanguage();
+
+ Reference< frame::XModel > xModel = pObjSh->GetBaseModel();
+ Reference< document::XDocumentInfoSupplier > xSupp( xModel,
+ UNO_QUERY );
+ if( xSupp.is() )
+ {
+ SfxXMLMetaExport aMeta( GetDocHandler(), xSupp->getDocumentInfo(),
+ eDocLang );
+ aMeta.Export( GetNamespaceMap() );
+ }
+ }
+}
+#endif
+
+
+/*************************************************************************
+
+ Source Code Control chaos::System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/xmlmeta.cxx,v 1.1.1.1 2000-09-18 17:15:00 hr Exp $
+
+ Source Code Control chaos::System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.7 2000/09/18 16:05:07 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.6 2000/08/02 14:52:39 mib
+ text export continued
+
+ Revision 1.5 2000/06/08 09:45:54 aw
+ changed to use functionality from xmloff project now
+
+ Revision 1.4 2000/05/03 12:08:05 mib
+ unicode
+
+ Revision 1.3 2000/03/13 14:33:44 mib
+ UNO3
+
+ Revision 1.2 2000/02/11 14:42:04 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.1 2000/01/06 15:03:49 mib
+ #70271#:separation of text/layout, cond. styles, adaptions to wd-xlink-19991229
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/xmltble.cxx b/sw/source/filter/xml/xmltble.cxx
new file mode 100644
index 000000000000..7f33e1b6ad98
--- /dev/null
+++ b/sw/source/filter/xml/xmltble.cxx
@@ -0,0 +1,1085 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmltble.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <hintids.hxx>
+
+#ifndef _RTL_USTRBUF_HXX_
+#include <rtl/ustrbuf.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_TEXT_XTEXTTABLE_HPP_
+#include <com/sun/star/text/XTextTable.hpp>
+#endif
+
+#ifndef _XMLOFF_XMLNMSPE_HXX
+#include <xmloff/xmlnmspe.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLKYWD_HXX
+#include <xmloff/xmlkywd.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLUCONV_HXX
+#include <xmloff/xmluconv.hxx>
+#endif
+
+#ifndef _CNTRSRT_HXX
+#include <svtools/cntnrsrt.hxx>
+#endif
+
+#ifndef _SVX_BRSHITEM_HXX
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX
+#include <svx/boxitem.hxx>
+#endif
+
+#ifndef _SWTABLE_HXX
+#include "swtable.hxx"
+#endif
+#ifndef _DOC_HXX
+#include "doc.hxx"
+#endif
+#ifndef _PAM_HXX
+#include "pam.hxx"
+#endif
+#ifndef _FRMFMT_HXX
+#include "frmfmt.hxx"
+#endif
+#ifndef _WRTSWTBL_HXX
+#include "wrtswtbl.hxx"
+#endif
+#ifndef _FMTFSIZE_HXX
+#include "fmtfsize.hxx"
+#endif
+#ifndef _FMTORNT_HXX
+#include "fmtornt.hxx"
+#endif
+
+#ifndef _UNOOBJ_HXX
+#include "unoobj.hxx"
+#endif
+#ifndef _UNOTBL_HXX
+#include "unotbl.hxx"
+#endif
+
+#ifndef _XMLTEXTE_HXX
+#include "xmltexte.hxx"
+#endif
+#ifndef _XMLEXP_HXX
+#include "xmlexp.hxx"
+#endif
+#ifndef _XMLECTXT_HXX
+#include "xmlectxt.hxx"
+#endif
+
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+
+#ifndef XML_CORE_API
+Reference < XText > lcl_xml_CreateTableBoxText(
+ const SwStartNode& rBoxSttNd )
+{
+ SwPaM aPaM( *rBoxSttNd.EndOfSectionNode() );
+ aPaM.Move( fnMoveBackward, fnGoNode );
+ aPaM.SetMark();
+ aPaM.GetPoint()->nNode.Assign( rBoxSttNd );
+ aPaM.Move( fnMoveForward, fnGoNode );
+
+ Reference < XTextRange > xTextRange =
+ CreateTextRangeFromPosition( aPaM.GetDoc(), *aPaM.GetPoint(),
+ aPaM.GetMark() );
+ return xTextRange->getText();
+}
+#endif
+
+class SwXMLTableColumn_Impl : public SwWriteTableCol
+{
+ OUString sStyleName;
+ sal_uInt32 nRelWidth;
+
+public:
+
+
+ SwXMLTableColumn_Impl( sal_uInt16 nPosition ) :
+ SwWriteTableCol( nPosition ),
+ nRelWidth( 0UL )
+ {};
+
+ void SetStyleName( const OUString& rName ) { sStyleName = rName; }
+ const OUString& GetStyleName() const { return sStyleName; }
+
+ void SetRelWidth( sal_uInt32 nSet ) { nRelWidth = nSet; }
+ sal_uInt32 GetRelWidth() const { return nRelWidth; }
+};
+
+sal_Int32 SwXMLTableColumnCmpWidth_Impl( const SwXMLTableColumn_Impl& r1,
+ const SwXMLTableColumn_Impl& r2 )
+{
+ sal_Int32 n = (sal_Int32)r1.GetWidthOpt() - (sal_Int32)r2.GetWidthOpt();
+ if( !n )
+ n = (sal_Int32)r1.GetRelWidth() - (sal_Int32)r2.GetRelWidth();
+ return n;
+}
+
+// ---------------------------------------------------------------------
+
+typedef SwXMLTableColumn_Impl *SwXMLTableColumnPtr;
+SV_DECL_PTRARR_SORT_DEL( SwXMLTableColumns_Impl, SwXMLTableColumnPtr, 5, 5 )
+SV_IMPL_OP_PTRARR_SORT( SwXMLTableColumns_Impl, SwXMLTableColumnPtr )
+
+DECLARE_CONTAINER_SORT( SwXMLTableColumnsSortByWidth_Impl,
+ SwXMLTableColumn_Impl )
+IMPL_CONTAINER_SORT( SwXMLTableColumnsSortByWidth_Impl, SwXMLTableColumn_Impl,
+ SwXMLTableColumnCmpWidth_Impl )
+
+class SwXMLTableLines_Impl
+{
+ SwXMLTableColumns_Impl aCols;
+ const SwTableLines *pLines;
+ sal_uInt32 nWidth;
+
+public:
+
+ SwXMLTableLines_Impl( const SwTableLines& rLines );
+
+ ~SwXMLTableLines_Impl() {}
+
+ sal_uInt32 GetWidth() const { return nWidth; }
+ const SwTableLines *GetLines() const { return pLines; }
+
+ const SwXMLTableColumns_Impl& GetColumns() const { return aCols; }
+};
+
+SwXMLTableLines_Impl::SwXMLTableLines_Impl( const SwTableLines& rLines ) :
+ pLines( &rLines ),
+ nWidth( 0UL )
+{
+#ifndef PRODUCT
+ sal_uInt16 nEndCPos = 0U;
+#endif
+ sal_uInt16 nLines = rLines.Count();
+ sal_uInt16 nLine;
+ for( nLine=0U; nLine<nLines; nLine++ )
+ {
+ const SwTableLine *pLine = rLines[nLine];
+ const SwTableBoxes& rBoxes = pLine->GetTabBoxes();
+ sal_uInt16 nBoxes = rBoxes.Count();
+
+ sal_uInt16 nCPos = 0U;
+ for( sal_uInt16 nBox=0U; nBox<nBoxes; nBox++ )
+ {
+ const SwTableBox *pBox = rBoxes[nBox];
+
+ sal_uInt16 nOldCPos = nCPos;
+
+ if( nBox < nBoxes-1U || nWidth==0UL )
+ {
+ nCPos += (sal_uInt16)SwWriteTable::GetBoxWidth( pBox );
+ SwXMLTableColumn_Impl *pCol =
+ new SwXMLTableColumn_Impl( nCPos );
+
+ if( !aCols.Insert( pCol ) )
+ delete pCol;
+
+ if( nBox==nBoxes-1U )
+ {
+ ASSERT( nLine==0U && nWidth==0UL,
+ "parent width will be lost" );
+ nWidth = nCPos;
+ }
+ }
+ else
+ {
+#ifndef PRODUCT
+ sal_uInt16 nCheckPos =
+ nCPos + (sal_uInt16)SwWriteTable::GetBoxWidth( pBox );
+ if( !nEndCPos )
+ {
+ nEndCPos = nCheckPos;
+ }
+ else
+ {
+ /*
+ ASSERT( SwXMLTableColumn_impl(nCheckPos) ==
+ SwXMLTableColumn_Impl(nEndCPos),
+ "rows have different total widths" );
+ */
+ }
+#endif
+ nCPos = nWidth;
+#ifndef PRODUCT
+ SwXMLTableColumn_Impl aCol( nWidth );
+ ASSERT( aCols.Seek_Entry(&aCol), "couldn't find last column" );
+ ASSERT( SwXMLTableColumn_Impl(nCheckPos) ==
+ SwXMLTableColumn_Impl(nCPos),
+ "rows have different total widths" );
+#endif
+ }
+ }
+ }
+}
+
+typedef SwXMLTableLines_Impl *SwXMLTableLinesPtr;
+DECLARE_LIST( SwXMLTableLinesCache_Impl, SwXMLTableLinesPtr )
+
+// ---------------------------------------------------------------------
+
+typedef SwFrmFmt *SwFrmFmtPtr;
+DECLARE_LIST( SwXMLFrmFmts_Impl, SwFrmFmtPtr )
+
+class SwXMLTableFrmFmtsSort_Impl : public SwXMLFrmFmts_Impl
+{
+public:
+ SwXMLTableFrmFmtsSort_Impl ( sal_uInt16 nInit, sal_uInt16 nGrow ) :
+ SwXMLFrmFmts_Impl( nInit, nGrow )
+ {}
+
+ sal_Bool AddRow( SwFrmFmt& rFrmFmt, const OUString& rNamePrefix, sal_uInt32 nLine );
+ sal_Bool AddCell( SwFrmFmt& rFrmFmt, const OUString& rNamePrefix,
+ sal_uInt32 nCol, sal_uInt32 nRow, sal_Bool bTop );
+};
+
+sal_Bool SwXMLTableFrmFmtsSort_Impl::AddRow( SwFrmFmt& rFrmFmt,
+ const OUString& rNamePrefix,
+ sal_uInt32 nLine )
+{
+ const SwFmtFrmSize *pFrmSize = 0;
+ const SvxBrushItem *pBrush = 0;
+
+ const SfxItemSet& rItemSet = rFrmFmt.GetAttrSet();
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_FRM_SIZE, sal_False, &pItem ) )
+ pFrmSize = (const SwFmtFrmSize *)pItem;
+
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BACKGROUND, sal_False, &pItem ) )
+ pBrush = (const SvxBrushItem *)pItem;
+
+ // empty styles have not to be exported
+ if( !pFrmSize && !pBrush )
+ return sal_False;
+
+ // order is: -/brush, size/-, size/brush
+ sal_uInt32 nCount = Count();
+ sal_Bool bInsert = sal_True;
+ sal_uInt32 i;
+ for( i=0; i<nCount; i++ )
+ {
+ const SwFmtFrmSize *pTestFrmSize = 0;
+ const SvxBrushItem *pTestBrush = 0;
+ const SwFrmFmt *pTestFmt = GetObject(i);
+ const SfxItemSet& rTestSet = pTestFmt->GetAttrSet();
+ if( SFX_ITEM_SET == rTestSet.GetItemState( RES_FRM_SIZE, sal_False,
+ &pItem ) )
+ {
+ if( !pFrmSize )
+ break;
+
+ pTestFrmSize = (const SwFmtFrmSize *)pItem;
+ }
+ else
+ {
+ if( pFrmSize )
+ continue;
+ }
+
+ if( SFX_ITEM_SET == rTestSet.GetItemState( RES_BACKGROUND, sal_False,
+ &pItem ) )
+ {
+ if( !pBrush )
+ break;
+
+ pTestBrush = (const SvxBrushItem *)pItem;
+ }
+ else
+ {
+ if( pBrush )
+ continue;
+ }
+
+ if( pFrmSize &&
+ ( pFrmSize->GetSizeType() != pTestFrmSize->GetSizeType() ||
+ pFrmSize->GetHeight() != pTestFrmSize->GetHeight() ) )
+ continue;
+
+ if( pBrush && !pBrush->equalsXML( *pTestBrush ) )
+ continue;
+
+ // found!
+ const String& rFmtName = pTestFmt->GetName();
+ rFrmFmt.SetName( rFmtName );
+ bInsert = sal_False;
+ break;
+ }
+
+ if( bInsert )
+ {
+ OUStringBuffer sBuffer( rNamePrefix.getLength() + 4UL );
+ sBuffer.append( rNamePrefix );
+ sBuffer.append( (sal_Unicode)'.' );
+ sBuffer.append( (sal_Int32)(nLine+1UL) );
+
+ rFrmFmt.SetName( sBuffer.makeStringAndClear() );
+ Insert( &rFrmFmt, i );
+ }
+
+ return bInsert;
+}
+
+void lcl_GetTblBoxColStr( sal_uInt16 nCol, String& rNm );
+void lcl_xmltble_appendBoxPrefix( OUStringBuffer& rBuffer,
+ const OUString& rNamePrefix,
+ sal_uInt16 nCol, sal_uInt16 nRow, sal_Bool bTop )
+{
+ rBuffer.append( rNamePrefix );
+ rBuffer.append( (sal_Unicode)'.' );
+ if( bTop )
+ {
+ String sTmp;
+ lcl_GetTblBoxColStr( nCol, sTmp );
+ rBuffer.append( sTmp );
+ }
+ else
+ {
+ rBuffer.append( (sal_Int32)(nCol + 1));
+ rBuffer.append( (sal_Unicode)'.' );
+ }
+ rBuffer.append( (sal_Int32)(nRow + 1));
+}
+
+sal_Bool SwXMLTableFrmFmtsSort_Impl::AddCell( SwFrmFmt& rFrmFmt,
+ const OUString& rNamePrefix,
+ sal_uInt32 nCol, sal_uInt32 nRow, sal_Bool bTop )
+{
+ const SwFmtVertOrient *pVertOrient = 0;
+ const SvxBrushItem *pBrush = 0;
+ const SvxBoxItem *pBox = 0;
+
+ const SfxItemSet& rItemSet = rFrmFmt.GetAttrSet();
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_VERT_ORIENT, sal_False,
+ &pItem ) )
+ pVertOrient = (const SwFmtVertOrient *)pItem;
+
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BACKGROUND, sal_False, &pItem ) )
+ pBrush = (const SvxBrushItem *)pItem;
+
+ if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BOX, sal_False, &pItem ) )
+ pBox = (const SvxBoxItem *)pItem;
+
+ // empty styles have not to be exported
+ if( !pVertOrient && !pBrush && !pBox )
+ return sal_False;
+
+ // order is: -/-/box, -/brush/-, -/brush/box,
+ // vert/-/-, vert/-/box, vert/brush/-, vert/brush/box
+ sal_uInt32 nCount = Count();
+ sal_Bool bInsert = sal_True;
+ sal_uInt32 i;
+ for( i=0; i<nCount; i++ )
+ {
+ const SwFmtVertOrient *pTestVertOrient = 0;
+ const SvxBrushItem *pTestBrush = 0;
+ const SvxBoxItem *pTestBox = 0;
+ const SwFrmFmt *pTestFmt = GetObject(i);
+ const SfxItemSet& rTestSet = pTestFmt->GetAttrSet();
+ if( SFX_ITEM_SET == rTestSet.GetItemState( RES_VERT_ORIENT, sal_False,
+ &pItem ) )
+ {
+ if( !pVertOrient )
+ break;
+
+ pTestVertOrient = (const SwFmtVertOrient *)pItem;
+ }
+ else
+ {
+ if( pVertOrient )
+ continue;
+ }
+
+ if( SFX_ITEM_SET == rTestSet.GetItemState( RES_BACKGROUND, sal_False,
+ &pItem ) )
+ {
+ if( !pBrush )
+ break;
+
+ pTestBrush = (const SvxBrushItem *)pItem;
+ }
+ else
+ {
+ if( pBrush )
+ continue;
+ }
+
+ if( SFX_ITEM_SET == rTestSet.GetItemState( RES_BOX, sal_False, &pItem ) )
+ {
+ if( !pBox )
+ break;
+
+ pTestBox = (const SvxBoxItem *)pItem;
+ }
+ else
+ {
+ if( pBox )
+ continue;
+ }
+
+ if( pVertOrient &&
+ pVertOrient->GetVertOrient() != pTestVertOrient->GetVertOrient() )
+ continue;
+
+ if( pBrush && !pBrush->equalsXML( *pTestBrush ) )
+ continue;
+
+ if( pBox && !pBox->equalsXML( *pTestBox ) )
+ continue;
+
+ // found!
+ const String& rFmtName = pTestFmt->GetName();
+ rFrmFmt.SetName( rFmtName );
+ bInsert = sal_False;
+ break;
+ }
+
+ if( bInsert )
+ {
+ OUStringBuffer sBuffer( rNamePrefix.getLength() + 8UL );
+ lcl_xmltble_appendBoxPrefix( sBuffer, rNamePrefix, nCol, nRow, bTop );
+ rFrmFmt.SetName( sBuffer.makeStringAndClear() );
+ Insert( &rFrmFmt, i );
+ }
+
+ return bInsert;
+}
+// ---------------------------------------------------------------------
+
+
+void SwXMLExport::ExportTableColumnStyle( const SwXMLTableColumn_Impl& rCol )
+{
+ // <style:style ...>
+ CheckAttrList();
+
+ // style:name="..."
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_name, rCol.GetStyleName() );
+
+ // style:family="table-column"
+ AddAttributeASCII( XML_NAMESPACE_STYLE, sXML_family, sXML_table_column );
+
+ {
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_STYLE, sXML_style, sal_True,
+ sal_True );
+ OUStringBuffer sValue;
+ if( rCol.GetWidthOpt() )
+ {
+ GetTwipUnitConverter().convertMeasure( sValue, rCol.GetWidthOpt() );
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_column_width,
+ sValue.makeStringAndClear() );
+ }
+ if( rCol.GetRelWidth() )
+ {
+ sValue.append( (sal_Int32)rCol.GetRelWidth() );
+ sValue.append( (sal_Unicode)'*' );
+ AddAttribute( XML_NAMESPACE_STYLE, sXML_rel_column_width,
+ sValue.makeStringAndClear() );
+ }
+
+ {
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_STYLE,
+ sXML_properties, sal_True, sal_True );
+ }
+ }
+}
+
+void SwXMLExport::ExportTableLinesAutoStyles( const SwTableLines& rLines,
+ sal_uInt32 nAbsWidth, sal_uInt32 nBaseWidth,
+ const OUString& rNamePrefix,
+ SwXMLTableColumnsSortByWidth_Impl& rExpCols,
+ SwXMLTableFrmFmtsSort_Impl& rExpRows,
+ SwXMLTableFrmFmtsSort_Impl& rExpCells,
+ sal_Bool bTop )
+{
+ // pass 1: calculate columns
+ SwXMLTableLines_Impl *pLines =
+ new SwXMLTableLines_Impl( rLines );
+ if( !pTableLines )
+ pTableLines = new SwXMLTableLinesCache_Impl( 5, 5 );
+ pTableLines->Insert( pLines, pTableLines->Count() );
+
+ OUStringBuffer sBuffer( rNamePrefix.getLength() + 8L );
+
+ // pass 2: export column styles
+ {
+ const SwXMLTableColumns_Impl& rCols = pLines->GetColumns();
+ sal_uInt16 nCPos = 0U;
+ sal_uInt16 nColumns = rCols.Count();
+ for( sal_uInt16 nColumn=0U; nColumn<nColumns; nColumn++ )
+ {
+ SwXMLTableColumn_Impl *pColumn = rCols[nColumn];
+
+ sal_uInt16 nOldCPos = nCPos;
+ nCPos = pColumn->GetPos();
+
+ sal_uInt32 nWidth = nCPos - nOldCPos;
+
+ // If a base width is given, the table has either an automatic
+ // or margin alignment, or an percentage width. In either case,
+ // relative widths should be exported.
+ if( nBaseWidth )
+ {
+ pColumn->SetRelWidth( nWidth );
+ }
+
+ // If an absolute width is given, the table either has a fixed
+ // width, or the current width is known from the layout. In the
+ // later case, a base width is set in addition and must be used
+ // to "absoultize" the relative column width.
+ if( nAbsWidth )
+ {
+ sal_uInt32 nColAbsWidth = nWidth;
+ if( nBaseWidth )
+ {
+ nColAbsWidth *= nAbsWidth;
+ nColAbsWidth += (nBaseWidth/2UL);
+ nColAbsWidth /= nBaseWidth;
+ }
+ pColumn->SetWidthOpt( nColAbsWidth, sal_False );
+ }
+
+ sal_uInt32 nExpPos = 0;
+ if( rExpCols.Seek_Entry( pColumn, &nExpPos ) )
+ {
+ pColumn->SetStyleName(
+ rExpCols.GetObject(nExpPos)->GetStyleName() );
+ }
+ else
+ {
+ sBuffer.append( rNamePrefix );
+ sBuffer.append( (sal_Unicode)'.' );
+ if( bTop )
+ {
+ String sTmp;
+ lcl_GetTblBoxColStr( nColumn, sTmp );
+ sBuffer.append( sTmp );
+ }
+ else
+ {
+ sBuffer.append( (sal_Int32)(nColumn + 1U) );
+ }
+
+ pColumn->SetStyleName( sBuffer.makeStringAndClear() );
+ ExportTableColumnStyle( *pColumn );
+ rExpCols.Insert( pColumn );
+ }
+ }
+ }
+
+ // pass 3: export line/rows
+ sal_uInt16 nLines = rLines.Count();
+ for( sal_uInt16 nLine=0U; nLine<nLines; nLine++ )
+ {
+ SwTableLine *pLine = rLines[nLine];
+
+ SwFrmFmt *pFrmFmt = pLine->GetFrmFmt();
+ if( rExpRows.AddRow( *pFrmFmt, rNamePrefix, nLine ) )
+ ExportFmt( *pFrmFmt, sXML_table_row );
+
+ const SwTableBoxes& rBoxes = pLine->GetTabBoxes();
+ sal_uInt16 nBoxes = rBoxes.Count();
+
+ sal_uInt16 nCPos = 0U;
+ sal_uInt16 nCol = 0U;
+ for( sal_uInt16 nBox=0U; nBox<nBoxes; nBox++ )
+ {
+ const SwTableBox *pBox = rBoxes[nBox];
+
+ sal_uInt16 nOldCPos = nCPos;
+ if( nBox < nBoxes-1U )
+ nCPos += (sal_uInt16)SwWriteTable::GetBoxWidth( pBox );
+ else
+ nCPos = pLines->GetWidth();
+
+
+ // Und ihren Index
+ sal_uInt16 nOldCol = nCol;
+ SwXMLTableColumn_Impl aCol( nCPos );
+ sal_Bool bFound = pLines->GetColumns().Seek_Entry( &aCol, &nCol );
+ ASSERT( bFound, "couldn't find column" );
+
+ const SwStartNode *pBoxSttNd = pBox->GetSttNd();
+ if( pBoxSttNd )
+ {
+#ifdef XML_CORE_API
+ SwNode *pStartNd = pDoc->GetNodes()[pBoxSttNd->GetIndex()+1];
+ SwNode *pEndNd =
+ pDoc->GetNodes()[pBoxSttNd->EndOfSectionIndex()-1];
+ SwXMLExpContext aContext( *this, *pStartNd, *pEndNd,
+ 0, STRING_LEN );
+#endif
+
+ SwFrmFmt *pFrmFmt = pBox->GetFrmFmt();
+ if( rExpCells.AddCell( *pFrmFmt, rNamePrefix, nOldCol, nLine,
+ bTop) )
+ ExportFmt( *pFrmFmt, sXML_table_cell );
+
+#ifdef XML_CORE_API
+ ExportCurPaMAutoStyles();
+#else
+ GetTextParagraphExport()->collectTextAutoStyles(
+ lcl_xml_CreateTableBoxText( *pBoxSttNd ) );
+#endif
+ }
+ else
+ {
+ lcl_xmltble_appendBoxPrefix( sBuffer, rNamePrefix, nOldCol,
+ nLine, bTop );
+
+ ExportTableLinesAutoStyles( pBox->GetTabLines(),
+ nAbsWidth, nBaseWidth,
+ sBuffer.makeStringAndClear(),
+ rExpCols, rExpRows, rExpCells );
+ }
+
+ nCol++;
+ }
+ }
+}
+
+void SwXMLExport::ExportTableAutoStyles( const SwTableNode& rTblNd )
+{
+ const SwTable& rTbl = rTblNd.GetTable();
+ const SwFrmFmt *pTblFmt = rTbl.GetFrmFmt();
+
+ if( pTblFmt )
+ {
+ SwHoriOrient eTabHoriOri = pTblFmt->GetHoriOrient().GetHoriOrient();
+ const SwFmtFrmSize& rFrmSize = pTblFmt->GetFrmSize();
+
+ sal_uInt32 nAbsWidth = rFrmSize.GetSize().Width();
+ sal_uInt32 nBaseWidth = 0UL;
+ sal_Int8 nPrcWidth = rFrmSize.GetWidthPercent();
+
+ sal_Bool bFixAbsWidth = nPrcWidth != 0 || HORI_NONE == eTabHoriOri
+ || HORI_FULL == eTabHoriOri;
+ if( bFixAbsWidth )
+ {
+ nBaseWidth = nAbsWidth;
+ nAbsWidth = pTblFmt->FindLayoutRect(sal_True).Width();
+ if( !nAbsWidth )
+ {
+ // TODO???
+ }
+ }
+ ExportTableFmt( *pTblFmt, nAbsWidth );
+
+ OUString sName( pTblFmt->GetName() );
+ SwXMLTableColumnsSortByWidth_Impl aExpCols( 10, 10 );
+ SwXMLTableFrmFmtsSort_Impl aExpRows( 10, 10 );
+ SwXMLTableFrmFmtsSort_Impl aExpCells( 10, 10 );
+ ExportTableLinesAutoStyles( rTbl.GetTabLines(), nAbsWidth, nBaseWidth,
+ sName, aExpCols, aExpRows, aExpCells,
+ sal_True );
+ }
+
+#ifdef XML_CORE_API
+ pCurPaM->GetPoint()->nNode = *rTblNd.EndOfSectionNode();
+#endif
+}
+
+// ---------------------------------------------------------------------
+
+void SwXMLExport::ExportTableBox( const SwTableBox& rBox, sal_uInt16 nColSpan )
+{
+ const SwStartNode *pBoxSttNd = rBox.GetSttNd();
+ if( pBoxSttNd )
+ {
+ const SwFrmFmt *pFrmFmt = rBox.GetFrmFmt();
+ if( pFrmFmt )
+ {
+ const String& rName = pFrmFmt->GetName();
+ if( rName.Len() )
+ {
+ AddAttribute( XML_NAMESPACE_TABLE, sXML_style_name, rName );
+ }
+ }
+ }
+
+ if( nColSpan != 1 )
+ {
+ OUStringBuffer sTmp;
+ sTmp.append( (sal_Int32)nColSpan );
+ AddAttribute( XML_NAMESPACE_TABLE, sXML_number_columns_spanned,
+ sTmp.makeStringAndClear() );
+ }
+
+ {
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TABLE,
+ sXML_table_cell, sal_True, sal_True );
+ if( pBoxSttNd )
+ {
+#ifdef XML_CORE_API
+ SwNode *pStartNd = pDoc->GetNodes()[pBoxSttNd->GetIndex()+1];
+ SwNode *pEndNd = pDoc->GetNodes()[pBoxSttNd->EndOfSectionIndex()-1];
+ SwXMLExpContext aContext( *this, *pStartNd, *pEndNd,
+ 0, STRING_LEN );
+ ExportCurPaM();
+#else
+ GetTextParagraphExport()->exportText(
+ lcl_xml_CreateTableBoxText( *pBoxSttNd ) );
+#endif
+ }
+ else
+ {
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TABLE,
+ sXML_sub_table, sal_True, sal_True );
+ ExportTableLines( rBox.GetTabLines() );
+ }
+ }
+}
+
+void SwXMLExport::ExportTableLine( const SwTableLine& rLine,
+ const SwXMLTableLines_Impl& rLines )
+{
+ const SwFrmFmt *pFrmFmt = rLine.GetFrmFmt();
+ if( pFrmFmt )
+ {
+ const String& rName = pFrmFmt->GetName();
+ if( rName.Len() )
+ {
+ AddAttribute( XML_NAMESPACE_TABLE, sXML_style_name, rName );
+ }
+ }
+
+ {
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TABLE,
+ sXML_table_row, sal_True, sal_True );
+ const SwTableBoxes& rBoxes = rLine.GetTabBoxes();
+ sal_uInt16 nBoxes = rBoxes.Count();
+
+ sal_uInt16 nCPos = 0U;
+ sal_uInt16 nCol = 0U;
+ for( sal_uInt16 nBox=0U; nBox<nBoxes; nBox++ )
+ {
+ const SwTableBox *pBox = rBoxes[nBox];
+
+ sal_uInt16 nOldCPos = nCPos;
+ if( nBox < nBoxes-1U )
+ nCPos += (sal_uInt16)SwWriteTable::GetBoxWidth( pBox );
+ else
+ nCPos = rLines.GetWidth();
+
+ // Und ihren Index
+ sal_uInt16 nOldCol = nCol;
+ SwXMLTableColumn_Impl aCol( nCPos );
+ sal_Bool bFound = rLines.GetColumns().Seek_Entry( &aCol, &nCol );
+ ASSERT( bFound, "couldn't find column" );
+
+ sal_uInt16 nColSpan = nCol - nOldCol + 1U;
+ ExportTableBox( *pBox, nColSpan );
+ for( sal_uInt16 i=nOldCol; i<nCol; i++ )
+ {
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TABLE,
+ sXML_covered_table_cell, sal_True,
+ sal_False );
+ }
+
+ nCol++;
+ }
+ }
+}
+
+void SwXMLExport::ExportTableLines( const SwTableLines& rLines,
+ sal_Bool bHeadline )
+{
+ ASSERT( pTableLines && pTableLines->Count(),
+ "SwXMLExport::ExportTableLines: table columns infos missing" );
+ if( !pTableLines || 0 == pTableLines->Count() )
+ return;
+
+ SwXMLTableLines_Impl *pLines = 0;
+ sal_uInt16 nInfoPos;
+ for( nInfoPos=0; nInfoPos < pTableLines->Count(); nInfoPos++ )
+ {
+ if( pTableLines->GetObject( nInfoPos )->GetLines() == &rLines )
+ {
+ pLines = pTableLines->GetObject( nInfoPos );
+ break;
+ }
+ }
+ ASSERT( pLines,
+ "SwXMLExport::ExportTableLines: table columns info missing" );
+ ASSERT( 0==nInfoPos,
+ "SwXMLExport::ExportTableLines: table columns infos are unsorted" );
+ if( !pLines )
+ return;
+
+ // pass 2: export columns
+ const SwXMLTableColumns_Impl& rCols = pLines->GetColumns();
+ sal_uInt16 nColumn = 0U;
+ sal_uInt16 nColumns = rCols.Count();
+ sal_uInt16 nColRep = 1U;
+ SwXMLTableColumn_Impl *pColumn = (nColumns > 0) ? rCols[0U] : 0;
+ while( pColumn )
+ {
+ nColumn++;
+ SwXMLTableColumn_Impl *pNextColumn =
+ (nColumn < nColumns) ? rCols[nColumn] : 0;
+ if( pNextColumn &&
+ pNextColumn->GetStyleName() == pColumn->GetStyleName() )
+ {
+ nColRep++;
+ }
+ else
+ {
+ AddAttribute( XML_NAMESPACE_TABLE, sXML_style_name,
+ pColumn->GetStyleName() );
+
+ if( nColRep > 1U )
+ {
+ OUStringBuffer sTmp(4);
+ sTmp.append( (sal_Int32)nColRep );
+ AddAttribute( XML_NAMESPACE_TABLE, sXML_number_columns_repeated,
+ sTmp.makeStringAndClear() );
+ }
+
+ {
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TABLE,
+ sXML_table_column, sal_True, sal_True );
+ }
+
+ nColRep = 1U;
+ }
+ pColumn = pNextColumn;
+ }
+
+ // pass 3: export line/rows
+ sal_uInt16 nLines = rLines.Count();
+ for( sal_uInt16 nLine=0U; nLine<nLines; nLine++ )
+ {
+ const SwTableLine *pLine = rLines[nLine];
+ if( bHeadline && 0U==nLine )
+ {
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TABLE,
+ sXML_table_header_rows, sal_True, sal_True );
+ ExportTableLine( *pLine, *pLines );
+ }
+ else
+ {
+ ExportTableLine( *pLine, *pLines );
+ }
+ }
+
+ pTableLines->Remove( nInfoPos );
+ if( 0 == pTableLines->Count() )
+ {
+ delete pTableLines ;
+ pTableLines = 0;
+ }
+ delete pLines;
+}
+
+sal_Bool lcl_xmltble_ClearName_Line( const SwTableLine*& rpLine, void* );
+
+sal_Bool lcl_xmltble_ClearName_Box( const SwTableBox*& rpBox, void* )
+{
+ if( !rpBox->GetSttNd() )
+ {
+ ((SwTableBox *)rpBox)->GetTabLines().ForEach(
+ &lcl_xmltble_ClearName_Line, 0 );
+ }
+ else
+ {
+ SwFrmFmt *pFrmFmt = ((SwTableBox *)rpBox)->GetFrmFmt();
+ if( pFrmFmt && pFrmFmt->GetName().Len() )
+ pFrmFmt->SetName( aEmptyStr );
+ }
+
+ return sal_True;
+}
+
+sal_Bool lcl_xmltble_ClearName_Line( const SwTableLine*& rpLine, void* )
+{
+ ((SwTableLine *)rpLine)->GetTabBoxes().ForEach(
+ &lcl_xmltble_ClearName_Box, 0 );
+
+ return sal_True;
+}
+
+void SwXMLExport::ExportTable( const SwTableNode& rTblNd )
+{
+ const SwTable& rTbl = rTblNd.GetTable();
+ const SwFrmFmt *pTblFmt = rTbl.GetFrmFmt();
+ if( pTblFmt && pTblFmt->GetName().Len() )
+ {
+ AddAttribute( XML_NAMESPACE_TABLE, sXML_name, pTblFmt->GetName() );
+ AddAttribute( XML_NAMESPACE_TABLE, sXML_style_name,
+ pTblFmt->GetName() );
+ }
+
+ {
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TABLE, sXML_table,
+ sal_True, sal_True );
+ ExportTableLines( rTbl.GetTabLines(), rTbl.IsHeadlineRepeat() );
+
+ ((SwTable &)rTbl).GetTabLines().ForEach( &lcl_xmltble_ClearName_Line,
+ 0 );
+ }
+
+#ifdef XML_CORE_API
+ pCurPaM->GetPoint()->nNode = *rTblNd.EndOfSectionNode();
+#endif
+}
+
+#ifndef XML_CORE_API
+void SwXMLTextParagraphExport::exportTable(
+ const Reference < XTextContent > & rTextContent,
+ sal_Bool bAutoStyles )
+{
+// Reference < XPropertySet > xPropSet( rTextContent, UNO_QUERY );
+// Any aAny = xPropSet->getPropertyValue( sTextTable );
+
+ Reference < XTextTable > xTxtTbl( rTextContent, UNO_QUERY );
+// aAny >>= xTxtTbl;
+ DBG_ASSERT( xTxtTbl.is(), "text table missing" );
+ if( xTxtTbl.is() )
+ {
+ const SwXTextTable *pXTable = 0;
+ Reference<XUnoTunnel> xTableTunnel( rTextContent, UNO_QUERY);
+ if( xTableTunnel.is() )
+ {
+ pXTable = (SwXTextTable*)xTableTunnel->getSomething(
+ SwXTextTable::getUnoTunnelId() );
+ ASSERT( pXTable, "SwXTextTable missing" );
+ }
+ if( pXTable )
+ {
+ SwFrmFmt *pFmt = pXTable->GetFrmFmt();
+ ASSERT( pFmt, "table format missing" );
+ const SwTable *pTbl = SwTable::FindTable( pFmt );
+ ASSERT( pTbl, "table missing" );
+ const SwTableNode *pTblNd = pTbl->GetTableNode();
+ ASSERT( pTblNd, "table node missing" );
+ if( bAutoStyles )
+ {
+ ((SwXMLExport&)GetExport()).ExportTableAutoStyles( *pTblNd );
+ }
+ else
+ {
+ ((SwXMLExport&)GetExport()).ExportTable( *pTblNd );
+ }
+ }
+ }
+}
+#endif
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/xmltble.cxx,v 1.1.1.1 2000-09-18 17:15:00 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.11 2000/09/18 16:05:07 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.10 2000/09/05 09:51:10 mib
+ #78063#: table lines cache is sorted now
+
+ Revision 1.9 2000/07/31 09:42:35 mib
+ text export continued
+
+ Revision 1.8 2000/07/21 12:55:15 mib
+ text import/export using StarOffice API
+
+ Revision 1.7 2000/06/08 09:45:54 aw
+ changed to use functionality from xmloff project now
+
+ Revision 1.6 2000/05/03 12:08:05 mib
+ unicode
+
+ Revision 1.5 2000/03/13 14:33:44 mib
+ UNO3
+
+ Revision 1.4 2000/02/11 17:08:37 kz
+ #65293# cast Syntax
+
+ Revision 1.3 2000/02/11 14:42:15 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.2 2000/02/08 06:47:09 mib
+ #70271#: remove temporary table cell format names
+
+ Revision 1.1 2000/02/07 10:02:55 mib
+ #70271#: table export
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/xmltbli.cxx b/sw/source/filter/xml/xmltbli.cxx
new file mode 100644
index 000000000000..a9205eef3ef8
--- /dev/null
+++ b/sw/source/filter/xml/xmltbli.cxx
@@ -0,0 +1,2229 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmltbli.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#include <limits.h>
+
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTTABLE_HPP_
+#include <com/sun/star/text/XTextTable.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_TABLE_XCELLRANGE_HPP_
+#include <com/sun/star/table/XCellRange.hpp>
+#endif
+
+#ifndef _SFXITEMSET_HXX
+#include <svtools/itemset.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLNMSPE_HXX
+#include <xmloff/xmlnmspe.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLKYWD_HXX
+#include <xmloff/xmlkywd.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLTKMAP_HXX
+#include <xmloff/xmltkmap.hxx>
+#endif
+
+#ifndef _XMLOFF_NMSPMAP_HXX
+#include <xmloff/nmspmap.hxx>
+#endif
+
+#ifndef _XMLOFF_FAMILIES_HXX
+#include <xmloff/families.hxx>
+#endif
+
+#ifndef _POOLFMT_HXX
+#include "poolfmt.hxx"
+#endif
+#ifndef _FMTFSIZE_HXX
+#include "fmtfsize.hxx"
+#endif
+#ifndef _FMTORNT_HXX
+#include "fmtornt.hxx"
+#endif
+#ifndef _FMTFORDR_HXX
+#include "fmtfordr.hxx"
+#endif
+#ifndef _DOC_HXX
+#include "doc.hxx"
+#endif
+#ifndef _SWTABLE_HXX
+#include "swtable.hxx"
+#endif
+#ifndef _SWTBLFMT_HXX
+#include "swtblfmt.hxx"
+#endif
+#ifndef _PAM_HXX
+#include "pam.hxx"
+#endif
+#ifndef _UNOTBL_HXX
+#include "unotbl.hxx"
+#endif
+#ifndef _UNOCRSR_HXX
+#include "unocrsr.hxx"
+#endif
+
+#ifndef _XMLTEXTI_HXX
+#include "xmltexti.hxx"
+#endif
+#ifndef _XMLNUM_HXX
+#include "xmlnum.hxx"
+#endif
+#ifndef _XMLIMP_HXX
+#include "xmlimp.hxx"
+#endif
+#ifndef _XMLTBLI_HXX
+#include "xmltbli.hxx"
+#endif
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::table;
+using namespace ::com::sun::star::xml::sax;
+
+enum SwXMLTableElemTokens
+{
+ 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,
+ XML_TOK_TABLE_ELEM_END=XML_TOK_UNKNOWN
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aTableElemTokenMap[] =
+{
+ { 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
+};
+
+const SvXMLTokenMap& SwXMLImport::GetTableElemTokenMap()
+{
+ if( !pTableElemTokenMap )
+ pTableElemTokenMap = new SvXMLTokenMap( aTableElemTokenMap );
+
+ return *pTableElemTokenMap;
+}
+
+// ---------------------------------------------------------------------
+
+class SwXMLTableCell_Impl
+{
+ OUString aStyleName;
+
+ SvXMLImportContextRef xSubTable;
+
+ const SwStartNode *pStartNode;
+ sal_uInt32 nRowSpan;
+ sal_uInt32 nColSpan;
+
+ sal_Bool bProtected : 1;
+
+public:
+
+ SwXMLTableCell_Impl( sal_uInt32 nRSpan=1UL, sal_uInt32 nCSpan=1UL ) :
+ nRowSpan( nRSpan ),
+ nColSpan( nCSpan ),
+ pStartNode( 0 ),
+ bProtected( sal_False )
+ {}
+
+ inline void Set( const OUString& rStyleName,
+ sal_uInt32 nRSpan, sal_uInt32 nCSpan,
+ const SwStartNode *pStNd, SwXMLTableContext *pTable );
+
+ sal_Bool IsUsed() const { return pStartNode!=0 ||
+ xSubTable.Is() || bProtected;}
+
+ sal_uInt32 GetRowSpan() const { return nRowSpan; }
+ void SetRowSpan( sal_uInt32 nSet ) { nRowSpan = nSet; }
+ sal_uInt32 GetColSpan() const { return nColSpan; }
+ const OUString& GetStyleName() const { return aStyleName; }
+
+ const SwStartNode *GetStartNode() const { return pStartNode; }
+ inline void SetStartNode( const SwStartNode *pSttNd );
+
+ inline SwXMLTableContext *GetSubTable() const;
+
+ inline void Dispose();
+};
+
+inline void SwXMLTableCell_Impl::Set( const OUString& rStyleName,
+ sal_uInt32 nRSpan, sal_uInt32 nCSpan,
+ const SwStartNode *pStNd,
+ SwXMLTableContext *pTable )
+{
+ aStyleName = rStyleName;
+ nRowSpan = nRSpan;
+ nColSpan = nCSpan;
+ pStartNode = pStNd;
+ xSubTable = pTable;
+}
+
+inline void SwXMLTableCell_Impl::SetStartNode( const SwStartNode *pSttNd )
+{
+ pStartNode = pSttNd;
+ xSubTable = 0;
+}
+
+inline SwXMLTableContext *SwXMLTableCell_Impl::GetSubTable() const
+{
+ return (SwXMLTableContext *)&xSubTable;
+}
+
+inline void SwXMLTableCell_Impl::Dispose()
+{
+ if( xSubTable.Is() )
+ xSubTable = 0;
+}
+
+// ---------------------------------------------------------------------
+
+typedef SwXMLTableCell_Impl* SwXMLTableCellPtr;
+SV_DECL_PTRARR_DEL(SwXMLTableCells_Impl,SwXMLTableCellPtr,5,5)
+SV_IMPL_PTRARR(SwXMLTableCells_Impl,SwXMLTableCellPtr)
+
+class SwXMLTableRow_Impl
+{
+ OUString aStyleName;
+
+ SwXMLTableCells_Impl aCells;
+
+ sal_Bool bSplitable;
+
+public:
+
+ SwXMLTableRow_Impl( const OUString& rStyleName, sal_uInt32 nCells );
+ ~SwXMLTableRow_Impl() {}
+
+ inline SwXMLTableCell_Impl *GetCell( sal_uInt32 nCol ) const;
+
+ inline void Set( const OUString& rStyleName );
+
+ void Expand( sal_uInt32 nCells, sal_Bool bOneCell );
+
+ void SetSplitable( sal_Bool bSet ) { bSplitable = bSet; }
+ sal_Bool IsSplitable() const { return bSplitable; }
+
+
+ const OUString& GetStyleName() const { return aStyleName; }
+
+ void Dispose();
+};
+
+SwXMLTableRow_Impl::SwXMLTableRow_Impl( const OUString& rStyleName,
+ sal_uInt32 nCells ) :
+ aStyleName( rStyleName ),
+ bSplitable( sal_False )
+{
+ ASSERT( nCells <= USHRT_MAX,
+ "SwXMLTableRow_Impl::SwXMLTableRow_Impl: too many cells" );
+ if( nCells > USHRT_MAX )
+ nCells = USHRT_MAX;
+
+ for( sal_uInt16 i=0U; i<nCells; i++ )
+ {
+ aCells.Insert( new SwXMLTableCell_Impl, aCells.Count() );
+ }
+}
+
+inline SwXMLTableCell_Impl *SwXMLTableRow_Impl::GetCell( sal_uInt32 nCol ) const
+{
+ ASSERT( nCol < USHRT_MAX,
+ "SwXMLTableRow_Impl::GetCell: column number is to big" );
+ return aCells[(sal_uInt16)nCol];
+}
+
+void SwXMLTableRow_Impl::Expand( sal_uInt32 nCells, sal_Bool bOneCell )
+{
+ ASSERT( nCells <= USHRT_MAX,
+ "SwXMLTableRow_Impl::Expand: too many cells" );
+ if( nCells > USHRT_MAX )
+ nCells = USHRT_MAX;
+
+ sal_uInt32 nColSpan = nCells - aCells.Count();
+ for( sal_uInt16 i=aCells.Count(); i<nCells; i++ )
+ {
+ aCells.Insert( new SwXMLTableCell_Impl( 1UL,
+ bOneCell ? nColSpan : 1UL ),
+ aCells.Count() );
+ nColSpan--;
+ }
+
+ ASSERT( nCells<=aCells.Count(),
+ "SwXMLTableRow_Impl::Expand: wrong number of cells" );
+}
+
+inline void SwXMLTableRow_Impl::Set( const OUString& rStyleName )
+{
+ aStyleName = rStyleName;
+}
+
+void SwXMLTableRow_Impl::Dispose()
+{
+ for( sal_uInt16 i=0; i < aCells.Count(); i++ )
+ aCells[i]->Dispose();
+}
+
+// ---------------------------------------------------------------------
+
+class SwXMLTableCellContext_Impl : public SvXMLImportContext
+{
+ OUString aStyleName;
+
+ SvXMLImportContextRef xMyTable;
+
+ sal_uInt32 nRowSpan;
+ sal_uInt32 nColSpan;
+
+ sal_Bool bHasContent;
+
+ SwXMLTableContext *GetTable() { return (SwXMLTableContext *)&xMyTable; }
+
+ sal_Bool HasContent() const { return bHasContent; }
+ inline void InsertContentIfNotThere();
+ inline void InsertContent( SwXMLTableContext *pTable );
+
+public:
+
+ SwXMLTableCellContext_Impl(
+ SwXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SwXMLTableContext *pTable );
+
+ virtual ~SwXMLTableCellContext_Impl();
+
+ virtual SvXMLImportContext *CreateChildContext(
+ sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+ virtual void EndElement();
+
+ SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); }
+};
+
+SwXMLTableCellContext_Impl::SwXMLTableCellContext_Impl(
+ SwXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SwXMLTableContext *pTable ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ xMyTable( pTable ),
+ nRowSpan( 1UL ),
+ nColSpan( 1UL ),
+ bHasContent( sal_False )
+{
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ const OUString& rAttrName = xAttrList->getNameByIndex( i );
+
+ OUString aLocalName;
+ sal_uInt16 nPrefix =
+ GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
+ &aLocalName );
+ const OUString& rValue = xAttrList->getValueByIndex( i );
+ if( XML_NAMESPACE_TABLE == nPrefix )
+ {
+ if( aLocalName.compareToAscii( sXML_style_name ) == 0 )
+ aStyleName = rValue;
+ else if( aLocalName.compareToAscii(
+ sXML_number_columns_spanned ) == 0 )
+ {
+ nColSpan = (sal_uInt32)rValue.toInt32();
+ if( nColSpan < 1UL )
+ nColSpan = 1UL;
+ }
+ else if( aLocalName.compareToAscii(
+ sXML_number_rows_spanned ) == 0 )
+ {
+ nRowSpan = (sal_uInt32)rValue.toInt32();
+ if( nRowSpan < 1UL )
+ nRowSpan = 1UL;
+ }
+ }
+ }
+}
+
+SwXMLTableCellContext_Impl::~SwXMLTableCellContext_Impl()
+{
+}
+
+inline void SwXMLTableCellContext_Impl::InsertContentIfNotThere()
+{
+ if( !bHasContent )
+ {
+ GetTable()->InsertCell( aStyleName, nRowSpan, nColSpan,
+ GetTable()->InsertTableSection() );
+ bHasContent = sal_True;
+ }
+}
+
+inline void SwXMLTableCellContext_Impl::InsertContent(
+ SwXMLTableContext *pTable )
+{
+ GetTable()->InsertCell( aStyleName, nRowSpan, nColSpan, 0, pTable );
+ bHasContent = sal_True;
+}
+
+SvXMLImportContext *SwXMLTableCellContext_Impl::CreateChildContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+#ifdef XML_CORE_API
+ const SvXMLTokenMap& rTokenMap = GetSwImport().GetBodyElemTokenMap();
+ sal_Bool bOrdered = sal_False;
+ sal_Bool bHeading = sal_False;
+ switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ {
+ case XML_TOK_SW_H:
+ bHeading = sal_True;
+ case XML_TOK_SW_P:
+ InsertContentIfNotThere();
+ pContext = new SwXMLParaContext( GetSwImport(),nPrefix, rLocalName,
+ xAttrList, bHeading );
+ break;
+ case XML_TOK_SW_ORDERED_LIST:
+ bOrdered = sal_True;
+ case XML_TOK_SW_UNORDERED_LIST:
+ InsertContentIfNotThere();
+ pContext = new SwXMLListBlockContext( GetSwImport(),nPrefix, rLocalName,
+ xAttrList, bOrdered );
+ break;
+
+ case XML_TOK_TABLE_SUBTABLE:
+ if( !HasContent() )
+ {
+ SwXMLTableContext *pTblContext =
+ new SwXMLTableContext( GetSwImport(), nPrefix, rLocalName,
+ xAttrList, GetTable() );
+ pContext = pTblContext;
+ InsertContent( pTblContext );
+ }
+ break;
+ }
+#else
+ if( XML_NAMESPACE_TABLE == nPrefix &&
+ 0 == rLocalName.compareToAscii( sXML_sub_table ) )
+ {
+ if( !HasContent() )
+ {
+ SwXMLTableContext *pTblContext =
+ new SwXMLTableContext( GetSwImport(), nPrefix, rLocalName,
+ xAttrList, GetTable() );
+ pContext = pTblContext;
+ InsertContent( pTblContext );
+ }
+ }
+ else
+ {
+ InsertContentIfNotThere();
+ pContext = GetImport().GetTextImport()->CreateTextChildContext(
+ GetImport(), nPrefix, rLocalName, xAttrList,
+ XML_TEXT_TYPE_CELL );
+ }
+#endif
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
+
+ return pContext;
+}
+
+void SwXMLTableCellContext_Impl::EndElement()
+{
+ if( bHasContent )
+ {
+#ifdef XML_CORE_API
+ SwPaM& rPaM = GetSwImport().GetPaM();
+ SwCntntNode* pCNd = rPaM.GetCntntNode();
+ if( pCNd && pCNd->StartOfSectionIndex() + 2UL <
+ pCNd->EndOfSectionIndex() )
+ {
+ rPaM.GetPoint()->nContent.Assign( 0, 0U );
+ rPaM.SetMark();
+ rPaM.DeleteMark();
+ GetSwImport().GetDoc().GetNodes().Delete( rPaM.GetPoint()->nNode );
+ rPaM.Move( fnMoveBackward, fnGoNode );
+ }
+#else
+ if( GetImport().GetTextImport()->GetCursor()->goLeft( 1, sal_True ) )
+ {
+ OUString sEmpty;
+ GetImport().GetTextImport()->GetText()->insertString(
+ GetImport().GetTextImport()->GetCursorAsRange(), sEmpty,
+ sal_True );
+ }
+#endif
+ }
+ else
+ {
+ InsertContentIfNotThere();
+ }
+}
+
+// ---------------------------------------------------------------------
+
+class SwXMLTableColContext_Impl : public SvXMLImportContext
+{
+ SvXMLImportContextRef xMyTable;
+
+ SwXMLTableContext *GetTable() { return (SwXMLTableContext *)&xMyTable; }
+
+public:
+
+ SwXMLTableColContext_Impl(
+ SwXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SwXMLTableContext *pTable );
+
+ virtual ~SwXMLTableColContext_Impl();
+
+ SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); }
+};
+
+SwXMLTableColContext_Impl::SwXMLTableColContext_Impl(
+ SwXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SwXMLTableContext *pTable ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ xMyTable( pTable )
+{
+ sal_uInt32 nColRep = 1UL;
+ OUString aStyleName;
+
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ const OUString& rAttrName = xAttrList->getNameByIndex( i );
+
+ OUString aLocalName;
+ sal_uInt16 nPrefix =
+ GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
+ &aLocalName );
+ const OUString& rValue = xAttrList->getValueByIndex( i );
+ if( XML_NAMESPACE_TABLE == nPrefix )
+ {
+ if( aLocalName.compareToAscii( sXML_style_name ) == 0 )
+ aStyleName = rValue;
+ else if( aLocalName.compareToAscii(
+ sXML_number_columns_repeated ) == 0 )
+ nColRep = (sal_uInt32)rValue.toInt32();
+ }
+ }
+
+ sal_Int32 nWidth = MINLAY;
+ sal_Bool bRelWidth = sal_True;
+ if( aStyleName.getLength() )
+ {
+ const SfxPoolItem *pItem;
+ const SfxItemSet *pAutoItemSet = 0;
+ if( GetSwImport().FindAutomaticStyle(
+#ifdef XML_CORE_API
+ SFX_STYLE_FAMILY_FRAME, SW_STYLE_SUBFAMILY_TABLE_COL,
+#else
+ XML_STYLE_FAMILY_TABLE_COLUMN,
+#endif
+ aStyleName, &pAutoItemSet ) &&
+ pAutoItemSet &&
+ SFX_ITEM_SET == pAutoItemSet->GetItemState( RES_FRM_SIZE, sal_False,
+ &pItem ) )
+ {
+ const SwFmtFrmSize *pSize = ((const SwFmtFrmSize *)pItem);
+ nWidth = pSize->GetWidth();
+ bRelWidth = ATT_VAR_SIZE == pSize->GetSizeType();
+ }
+ }
+
+ if( nWidth )
+ {
+ while( nColRep-- && GetTable()->IsInsertColPossible() )
+ GetTable()->InsertColumn( nWidth, bRelWidth );
+ }
+}
+
+SwXMLTableColContext_Impl::~SwXMLTableColContext_Impl()
+{
+}
+
+// ---------------------------------------------------------------------
+
+class SwXMLTableColsContext_Impl : public SvXMLImportContext
+{
+ SvXMLImportContextRef xMyTable;
+ sal_Bool bHeader;
+
+ SwXMLTableContext *GetTable() { return (SwXMLTableContext *)&xMyTable; }
+
+public:
+
+ SwXMLTableColsContext_Impl(
+ SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SwXMLTableContext *pTable,
+ sal_Bool bHead );
+
+ virtual ~SwXMLTableColsContext_Impl();
+
+ virtual SvXMLImportContext *CreateChildContext(
+ sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+
+ SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); }
+};
+
+SwXMLTableColsContext_Impl::SwXMLTableColsContext_Impl(
+ SwXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SwXMLTableContext *pTable, sal_Bool bHead ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ xMyTable( pTable ),
+ bHeader( bHead )
+{
+}
+
+SwXMLTableColsContext_Impl::~SwXMLTableColsContext_Impl()
+{
+}
+
+SvXMLImportContext *SwXMLTableColsContext_Impl::CreateChildContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( XML_NAMESPACE_TABLE == nPrefix &&
+ rLocalName.compareToAscii( sXML_table_column ) == 0 &&
+ GetTable()->IsInsertColPossible() )
+ pContext = new SwXMLTableColContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ GetTable() );
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
+
+ return pContext;
+}
+
+// ---------------------------------------------------------------------
+
+class SwXMLTableRowContext_Impl : public SvXMLImportContext
+{
+ SvXMLImportContextRef xMyTable;
+
+ SwXMLTableContext *GetTable() { return (SwXMLTableContext *)&xMyTable; }
+
+public:
+
+ SwXMLTableRowContext_Impl(
+ SwXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SwXMLTableContext *pTable, sal_Bool bInHead=sal_False );
+
+ virtual ~SwXMLTableRowContext_Impl();
+
+ virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+
+ virtual void EndElement();
+
+ SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); }
+};
+
+SwXMLTableRowContext_Impl::SwXMLTableRowContext_Impl( SwXMLImport& rImport,
+ sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SwXMLTableContext *pTable,
+ sal_Bool bInHead ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ xMyTable( pTable )
+{
+ OUString aStyleName;
+
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ const OUString& rAttrName = xAttrList->getNameByIndex( i );
+
+ OUString aLocalName;
+ sal_uInt16 nPrefix =
+ GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
+ &aLocalName );
+ const OUString& rValue = xAttrList->getValueByIndex( i );
+ if( XML_NAMESPACE_TABLE == nPrefix &&
+ aLocalName.compareToAscii( sXML_style_name ) == 0 )
+ {
+ aStyleName = rValue;
+ }
+ }
+ GetTable()->InsertRow( aStyleName, bInHead );
+}
+
+void SwXMLTableRowContext_Impl::EndElement()
+{
+ GetTable()->FinishRow();
+}
+
+SwXMLTableRowContext_Impl::~SwXMLTableRowContext_Impl()
+{
+}
+
+SvXMLImportContext *SwXMLTableRowContext_Impl::CreateChildContext(
+ sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( XML_NAMESPACE_TABLE == nPrefix )
+ {
+ if( rLocalName.compareToAscii( sXML_table_cell ) == 0 )
+ {
+ if( GetTable()->IsInsertCellPossible() )
+ pContext = new SwXMLTableCellContext_Impl( GetSwImport(),
+ nPrefix,
+ rLocalName,
+ xAttrList,
+ GetTable() );
+ }
+ else if( rLocalName.compareToAscii( sXML_covered_table_cell ) == 0 )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix,
+ rLocalName );
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
+
+ return pContext;
+}
+
+// ---------------------------------------------------------------------
+
+class SwXMLTableRowsContext_Impl : public SvXMLImportContext
+{
+ SvXMLImportContextRef xMyTable;
+
+ sal_Bool bHeader;
+
+ SwXMLTableContext *GetTable() { return (SwXMLTableContext *)&xMyTable; }
+
+public:
+
+ SwXMLTableRowsContext_Impl( SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SwXMLTableContext *pTable,
+ sal_Bool bHead );
+
+ virtual ~SwXMLTableRowsContext_Impl();
+
+ virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+
+ SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); }
+};
+
+SwXMLTableRowsContext_Impl::SwXMLTableRowsContext_Impl( SwXMLImport& rImport,
+ sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SwXMLTableContext *pTable,
+ sal_Bool bHead ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ xMyTable( pTable ),
+ bHeader( bHead )
+{
+}
+
+SwXMLTableRowsContext_Impl::~SwXMLTableRowsContext_Impl()
+{
+}
+
+SvXMLImportContext *SwXMLTableRowsContext_Impl::CreateChildContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( XML_NAMESPACE_TABLE == nPrefix &&
+ rLocalName.compareToAscii( sXML_table_row ) == 0 &&
+ GetTable()->IsInsertRowPossible() )
+ pContext = new SwXMLTableRowContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ GetTable(),
+ bHeader );
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
+
+ return pContext;
+}
+
+// ---------------------------------------------------------------------
+
+typedef SwXMLTableRow_Impl* SwXMLTableRowPtr;
+SV_DECL_PTRARR_DEL(SwXMLTableRows_Impl,SwXMLTableRowPtr,5,5)
+SV_IMPL_PTRARR(SwXMLTableRows_Impl,SwXMLTableRowPtr)
+
+SwXMLTableCell_Impl *SwXMLTableContext::GetCell( sal_uInt32 nRow,
+ sal_uInt32 nCol ) const
+{
+ return (*pRows)[nRow]->GetCell( nCol );
+}
+
+SwXMLTableContext::SwXMLTableContext( SwXMLImport& rImport,
+ sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ pRows( new SwXMLTableRows_Impl ),
+ pTableNode( 0 ),
+ pBox1( 0 ),
+ pSttNd1( 0 ),
+ pBoxFmt( 0 ),
+ pLineFmt( 0 ),
+ nCurRow( 0UL ),
+ nCurCol( 0UL ),
+ nWidth( 0UL ),
+ bFirstSection( sal_True ),
+ bRelWidth( sal_True ),
+ bHasHeading( sal_False )
+{
+ OUString aName;
+
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ const OUString& rAttrName = xAttrList->getNameByIndex( i );
+
+ OUString aLocalName;
+ sal_uInt16 nPrefix =
+ GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
+ &aLocalName );
+ const OUString& rValue = xAttrList->getValueByIndex( i );
+ if( XML_NAMESPACE_TABLE == nPrefix )
+ {
+ if( aLocalName.compareToAscii( sXML_style_name ) == 0 )
+ aStyleName = rValue;
+ else if( aLocalName.compareToAscii( sXML_name ) == 0 )
+ aName = rValue;
+ }
+ }
+
+ SwXMLImport& rSwImport = GetSwImport();
+ SwDoc& rDoc = rSwImport.GetDoc();
+
+ String sTblName;
+ if( aName.getLength() )
+ {
+ const SwTableFmt *pTblFmt = rDoc.FindTblFmtByName( aName );
+ if( !pTblFmt )
+ sTblName = aName;
+ }
+ if( !sTblName.Len() )
+ sTblName = rDoc.GetUniqueTblName();
+
+#ifdef XML_CORE_API
+ const SwTable* pSwTable = rDoc.InsertTable( *rSwImport.GetPaM().GetPoint(),
+ 1U, 1U, HORI_LEFT );
+ pTableNode = pSwTable->GetTableNode();
+
+ SwFrmFmt *pTblFrmFmt = pSwTable->GetFrmFmt();
+ pTblFrmFmt->SetName( sTblName );
+
+ rSwImport.GetPaM().Move( fnMoveBackward );
+#else
+ Reference< XTextTable > xTable;
+
+ const SwXTextTable *pXTable = 0;
+ Reference<XMultiServiceFactory> xFactory( GetImport().GetModel(),
+ UNO_QUERY );
+ ASSERT( xFactory.is(), "factory missing" );
+ if( xFactory.is() )
+ {
+ OUString sService(
+ RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.text.TextTable" ) );
+ Reference<XInterface> xIfc = xFactory->createInstance( sService );
+ ASSERT( xIfc.is(), "Couldn't create a table" );
+
+ if( xIfc.is() )
+ xTable = Reference< XTextTable > ( xIfc, UNO_QUERY );
+ }
+
+ if( xTable.is() )
+ {
+ xTable->initialize( 1, 1 );
+
+ Reference< XTextContent > xTxtCnt( xTable, UNO_QUERY );
+ GetImport().GetTextImport()->InsertTextContent( xTxtCnt );
+
+ Reference<XUnoTunnel> xTableTunnel( xTable, UNO_QUERY);
+ if( xTableTunnel.is() )
+ {
+ pXTable = (SwXTextTable*)xTableTunnel->getSomething(
+ SwXTextTable::getUnoTunnelId() );
+ ASSERT( pXTable, "SwXTextTable missing" );
+ }
+
+ Reference < XCellRange > xCellRange( xTable, UNO_QUERY );
+ Reference < XCell > xCell = xCellRange->getCellByPosition( 0, 0 );
+ Reference < XText> xText( xCell, UNO_QUERY );
+ xOldCursor = GetImport().GetTextImport()->GetCursor();
+ GetImport().GetTextImport()->SetCursor( xText->createTextCursor() );
+
+ }
+ if( pXTable )
+ {
+ SwFrmFmt *pTblFrmFmt = pXTable->GetFrmFmt();
+ ASSERT( pTblFrmFmt, "table format missing" );
+ SwTable *pTbl = SwTable::FindTable( pTblFrmFmt );
+ ASSERT( pTbl, "table missing" );
+ pTableNode = pTbl->GetTableNode();
+ ASSERT( pTableNode, "table node missing" );
+
+ pTblFrmFmt->SetName( sTblName );
+
+ SwTableLine *pLine1 = pTableNode->GetTable().GetTabLines()[0U];
+ pBox1 = pLine1->GetTabBoxes()[0U];
+ pSttNd1 = pBox1->GetSttNd();
+ }
+#endif
+}
+
+SwXMLTableContext::SwXMLTableContext( SwXMLImport& rImport,
+ sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SwXMLTableContext *pTable ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ xParentTable( pTable ),
+ pRows( new SwXMLTableRows_Impl ),
+ pTableNode( pTable->pTableNode ),
+ pBox1( 0 ),
+ pSttNd1( 0 ),
+ pBoxFmt( 0 ),
+ pLineFmt( 0 ),
+ nCurRow( 0UL ),
+ nCurCol( 0UL ),
+ nWidth( 0UL ),
+ bFirstSection( sal_False ),
+ bRelWidth( sal_True ),
+ bHasHeading( sal_False )
+{
+}
+
+SwXMLTableContext::~SwXMLTableContext()
+{
+}
+
+SvXMLImportContext *SwXMLTableContext::CreateChildContext( sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetSwImport().GetTableElemTokenMap();
+ sal_Bool bHeader = sal_False;
+ switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ {
+ case XML_TOK_TABLE_HEADER_COLS:
+ bHeader = sal_True;
+ case XML_TOK_TABLE_COLS:
+ pContext = new SwXMLTableColsContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ this, bHeader );
+ break;
+ case XML_TOK_TABLE_COL:
+ if( IsInsertColPossible() )
+ pContext = new SwXMLTableColContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ this );
+ break;
+ case XML_TOK_TABLE_HEADER_ROWS:
+ bHeader = sal_True;
+ case XML_TOK_TABLE_ROWS:
+ pContext = new SwXMLTableRowsContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ this, bHeader );
+ break;
+ case XML_TOK_TABLE_ROW:
+ if( IsInsertRowPossible() )
+ pContext = new SwXMLTableRowContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ this );
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
+
+ return pContext;
+}
+
+void SwXMLTableContext::InsertColumn( sal_Int32 nWidth, sal_Bool bRelWidth )
+{
+ ASSERT( nCurCol < USHRT_MAX,
+ "SwXMLTableContext::InsertColumn: no space left" );
+ if( nCurCol >= USHRT_MAX )
+ return;
+
+ if( nWidth < MINLAY )
+ nWidth = MINLAY;
+ else if( nWidth > USHRT_MAX )
+ nWidth = USHRT_MAX;
+ aColumnWidths.Insert( (sal_uInt16)nWidth, aColumnWidths.Count() );
+ aColumnRelWidths.Insert( bRelWidth, aColumnRelWidths.Count() );
+}
+
+sal_Int32 SwXMLTableContext::GetColumnWidth( sal_uInt32 nCol,
+ sal_uInt32 nColSpan ) const
+{
+ sal_uInt32 nLast = nCol+nColSpan;
+ if( nLast > aColumnWidths.Count() )
+ nLast = aColumnWidths.Count();
+
+ sal_Int32 nWidth = 0L;
+ for( sal_uInt16 i=nCol; i < nLast; i++ )
+ nWidth += aColumnWidths[i];
+
+ return nWidth;
+}
+
+void SwXMLTableContext::InsertCell( const OUString& rStyleName,
+ sal_uInt32 nRowSpan, sal_uInt32 nColSpan,
+ const SwStartNode *pStartNode,
+ SwXMLTableContext *pTable )
+{
+ ASSERT( nCurCol < GetColumnCount(),
+ "SwXMLTableContext::InsertCell: row is full" );
+ ASSERT( nCurRow < USHRT_MAX,
+ "SwXMLTableContext::InsertCell: table is full" );
+ if( nCurCol >= USHRT_MAX || nCurRow > USHRT_MAX )
+ return;
+
+ ASSERT( nRowSpan >=1UL, "SwXMLTableContext::InsertCell: row span is 0" );
+ if( 0UL == nRowSpan )
+ nRowSpan = 1UL;
+ ASSERT( nColSpan >=1UL, "SwXMLTableContext::InsertCell: col span is 0" );
+ if( 0UL == nColSpan )
+ nColSpan = 1UL;
+
+ sal_uInt32 i, j;
+
+ // Until it is possible to add columns here, fix the column span.
+ sal_uInt32 nColsReq = nCurCol + nColSpan;
+ if( nColsReq > GetColumnCount() )
+ {
+ nColSpan = GetColumnCount() - nCurCol;
+ nColsReq = GetColumnCount();
+ }
+
+ // Check whether there are cells from a previous line already that reach
+ // into the current row.
+ if( nCurRow > 0UL && nColSpan > 1UL )
+ {
+ SwXMLTableRow_Impl *pCurRow = (*pRows)[(sal_uInt16)nCurRow];
+ sal_uInt32 nLastCol = GetColumnCount() < nColsReq ? GetColumnCount()
+ : nColsReq;
+ for( i=nCurCol+1UL; i<nLastCol; i++ )
+ {
+ if( pCurRow->GetCell(i)->IsUsed() )
+ {
+ // If this cell is used, the column span is truncated
+ nColSpan = i - nCurCol;
+ nColsReq = i;
+ break;
+ }
+ }
+ }
+
+ sal_uInt32 nRowsReq = nCurRow + nRowSpan;
+ if( nRowsReq > USHRT_MAX )
+ {
+ nRowSpan = USHRT_MAX - nCurRow;
+ nRowsReq = USHRT_MAX;
+ }
+
+ // Add columns: TODO: This should never happen, since we require
+ // column definitions!
+ for( i=GetColumnCount(); i<nColsReq; i++ )
+ {
+ aColumnWidths.Insert( MINLAY, aColumnWidths.Count() );
+ aColumnRelWidths.Insert( sal_True, aColumnRelWidths.Count() );
+ }
+ for( i=0; i<pRows->Count(); i++ )
+ (*pRows)[(sal_uInt16)i]->Expand( nColsReq, i<nCurRow );
+
+ // Add rows
+ if( pRows->Count() < nRowsReq )
+ {
+ OUString aStyleName;
+ for( i=pRows->Count(); i<nRowsReq; i++ )
+ pRows->Insert( new SwXMLTableRow_Impl(aStyleName,GetColumnCount()),
+ pRows->Count() );
+ }
+
+ // Fill the cells
+ for( i=nColSpan; i>0UL; i-- )
+ for( j=nRowSpan; j>0UL; j-- )
+ GetCell( nRowsReq-j, nColsReq-i )
+ ->Set( rStyleName, j, i, pStartNode, pTable );
+
+ // Set current col to the next (free) column
+ nCurCol = nColsReq;
+ while( nCurCol<GetColumnCount() && GetCell(nCurRow,nCurCol)->IsUsed() )
+ nCurCol++;
+}
+
+void SwXMLTableContext::InsertRow( const OUString& rStyleName,
+ sal_Bool bInHead )
+{
+ ASSERT( nCurRow < USHRT_MAX,
+ "SwXMLTableContext::InsertRow: no space left" );
+ if( nCurRow >= USHRT_MAX )
+ return;
+
+ if( nCurRow < pRows->Count() )
+ {
+ // The current row has already been inserted because of a row span
+ // of a previous row.
+ (*pRows)[nCurRow]->Set( rStyleName );
+ }
+ else
+ {
+ // add a new row
+ pRows->Insert( new SwXMLTableRow_Impl( rStyleName, GetColumnCount()),
+ pRows->Count() );
+ }
+
+ // We start at the first column ...
+ nCurCol=0UL;
+
+ // ... but this cell may be occupied already.
+ while( nCurCol<GetColumnCount() && GetCell(nCurRow,nCurCol)->IsUsed() )
+ nCurCol++;
+
+ if( 0UL == nCurRow )
+ bHasHeading = bInHead;
+}
+
+void SwXMLTableContext::FinishRow()
+{
+ // Insert an empty cell at the end of the line if the row is not complete
+ if( nCurCol < GetColumnCount() )
+ {
+ OUString aStyleName;
+ InsertCell( aStyleName, 1U, GetColumnCount() - nCurCol,
+ InsertTableSection() );
+ }
+
+ // Move to the next row.
+ nCurRow++;
+}
+
+const SwStartNode *SwXMLTableContext::GetPrevStartNode( sal_uInt32 nRow,
+ sal_uInt32 nCol ) const
+{
+ const SwXMLTableCell_Impl *pPrevCell = 0;
+ if( GetColumnCount() == nCol )
+ {
+ // The last cell is the right one here.
+ pPrevCell = GetCell( pRows->Count()-1U, GetColumnCount()-1UL );
+ }
+ else if( 0UL == nRow )
+ {
+ // There are no vertically merged cells within the first row, so the
+ // previous cell is the right one always.
+ if( nCol > 0UL )
+ pPrevCell = GetCell( nRow, nCol-1UL );
+ }
+ else
+ {
+ // If there is a previous cell in the current row that is not spanned
+ // from the previous row, its the right one.
+ const SwXMLTableRow_Impl *pPrevRow = (*pRows)[(sal_uInt16)nRow-1U];
+ sal_uInt32 i = nCol;
+ while( !pPrevCell && i > 0UL )
+ {
+ i--;
+ if( 1UL == pPrevRow->GetCell( i )->GetRowSpan() )
+ pPrevCell = GetCell( nRow, i );
+ }
+
+ // Otherwise, the last cell from the previous row is the right one.
+ if( !pPrevCell )
+ pPrevCell = pPrevRow->GetCell( GetColumnCount()-1UL );
+ }
+
+ const SwStartNode *pSttNd;
+ if( pPrevCell )
+ {
+ if( pPrevCell->GetStartNode() )
+ pSttNd = pPrevCell->GetStartNode();
+ else
+ pSttNd = pPrevCell->GetSubTable()->GetLastStartNode();
+ }
+
+ return pSttNd;
+}
+
+void SwXMLTableContext::FixRowSpan( sal_uInt32 nRow, sal_uInt32 nCol,
+ sal_uInt32 nColSpan )
+{
+ sal_uInt32 nLastCol = nCol + nColSpan;
+ for( sal_uInt16 i = nCol; i < nLastCol; i++ )
+ {
+ sal_uInt32 j = nRow;
+ sal_uInt32 nRowSpan = 1UL;
+ SwXMLTableCell_Impl *pCell = GetCell( j, i );
+ while( pCell && pCell->GetRowSpan() > 1UL )
+ {
+ pCell->SetRowSpan( nRowSpan++ );
+ pCell = j > 0UL ? GetCell( --j, i ) : 0;
+ }
+ }
+}
+
+void SwXMLTableContext::ReplaceWithEmptyCell( sal_uInt32 nRow, sal_uInt32 nCol )
+{
+ const SwStartNode *pPrevSttNd = GetPrevStartNode( nRow, nCol );
+ const SwStartNode *pSttNd = InsertTableSection( pPrevSttNd );
+
+ const SwXMLTableCell_Impl *pCell = GetCell( nRow, nCol );
+ sal_uInt32 nLastRow = nRow + pCell->GetRowSpan();
+ sal_uInt32 nLastCol = nCol + pCell->GetColSpan();
+
+ for( sal_uInt32 i=nRow; i<nLastRow; i++ )
+ {
+ SwXMLTableRow_Impl *pRow = (*pRows)[i];
+ for( sal_uInt32 j=nCol; j<nLastCol; j++ )
+ pRow->GetCell( j )->SetStartNode( pSttNd );
+ }
+}
+
+SwTableBox *SwXMLTableContext::NewTableBox( const SwStartNode *pStNd,
+ SwTableLine *pUpper )
+{
+ SwTableBox *pBox;
+
+ if( pBox1 &&
+ pBox1->GetSttNd() == pStNd )
+ {
+ // wenn der StartNode dem StartNode der initial angelegten Box
+ // entspricht nehmen wir diese Box
+ pBox = pBox1;
+ pBox->SetUpper( pUpper );
+ pBox1 = 0;
+ }
+ else
+ pBox = new SwTableBox( pBoxFmt, *pStNd, pUpper );
+
+ return pBox;
+}
+
+SwTableBox *SwXMLTableContext::MakeTableBox( SwTableLine *pUpper,
+ sal_uInt32 nTopRow,
+ sal_uInt32 nLeftCol,
+ sal_uInt32 nBottomRow,
+ sal_uInt32 nRightCol )
+{
+ SwTableBox *pBox = new SwTableBox( pBoxFmt, 0, pUpper );
+
+ // TODO: Share formats!
+ SwFrmFmt *pFrmFmt = pBox->ClaimFrmFmt();
+ SwFmtFillOrder aFillOrder( pFrmFmt->GetFillOrder() );
+ pFrmFmt->ResetAllAttr();
+ pFrmFmt->SetAttr( aFillOrder );
+
+ SwTableLines& rLines = pBox->GetTabLines();
+ sal_Bool bSplitted = sal_False;
+
+ while( !bSplitted )
+ {
+ sal_uInt32 nStartRow = nTopRow;
+ for( sal_uInt32 i=nTopRow; i<nBottomRow; i++ )
+ {
+ // Could the table be splitted behind the current row?
+ sal_Bool bSplit = sal_True;
+ SwXMLTableRow_Impl *pRow = (*pRows)[(sal_uInt16)i];
+ for( sal_uInt32 j=nLeftCol; j<nRightCol; j++ )
+ {
+ bSplit = ( 1UL == pRow->GetCell(j)->GetRowSpan() );
+ if( !bSplit )
+ break;
+ }
+ if( bSplit && (nStartRow>nTopRow || i+1UL<nBottomRow) )
+ {
+ SwTableLine *pLine =
+ MakeTableLine( pBox, nStartRow, nLeftCol, i+1UL,
+ nRightCol );
+
+ rLines.C40_INSERT( SwTableLine, pLine, rLines.Count() );
+
+ nStartRow = i+1UL;
+ bSplitted = sal_True;
+ }
+ }
+ if( !bSplitted )
+ {
+ // No splitting was possible. That for, we have to force it.
+ // Ruthless!
+
+ nStartRow = nTopRow;
+ while( nStartRow < nBottomRow )
+ {
+ sal_uInt32 nMaxRowSpan = 0UL;
+ SwXMLTableRow_Impl *pStartRow = (*pRows)[(sal_uInt16)nStartRow];
+ SwXMLTableCell_Impl *pCell;
+ for( i=nLeftCol; i<nRightCol; i++ )
+ if( ( pCell=pStartRow->GetCell(i),
+ pCell->GetRowSpan() > nMaxRowSpan ) )
+ nMaxRowSpan = pCell->GetRowSpan();
+
+ nStartRow += nMaxRowSpan;
+ if( nStartRow<nBottomRow )
+ {
+ SwXMLTableRow_Impl *pPrevRow =
+ (*pRows)[(sal_uInt16)nStartRow-1U];
+ i = nLeftCol;
+ while( i < nRightCol )
+ {
+ if( pPrevRow->GetCell(i)->GetRowSpan() > 1UL )
+ {
+ const SwXMLTableCell_Impl *pCell =
+ GetCell( nStartRow, i );
+ sal_uInt32 nColSpan = pCell->GetColSpan();
+ FixRowSpan( nStartRow-1UL, i, nColSpan );
+ ReplaceWithEmptyCell( nStartRow, i );
+ i += nColSpan;
+ }
+ else
+ {
+ i++;
+ }
+ }
+ }
+ }
+ // und jetzt nochmal von vorne ...
+ }
+ }
+
+ return pBox;
+}
+
+SwTableBox *SwXMLTableContext::MakeTableBox(
+ SwTableLine *pUpper, const SwXMLTableCell_Impl *pCell,
+ sal_uInt32 nTopRow, sal_uInt32 nLeftCol, sal_uInt32 nBottomRow,
+ sal_uInt32 nRightCol )
+{
+ SwTableBox *pBox;
+ sal_uInt32 nColSpan = nRightCol - nLeftCol;
+ sal_uInt32 nRowSpan = nBottomRow - nTopRow;
+ sal_Int32 nColWidth = GetColumnWidth( nLeftCol, nColSpan );
+
+ if( pCell->GetStartNode() )
+ {
+ pBox = NewTableBox( pCell->GetStartNode(), pUpper );
+ }
+ else
+ {
+ // und die ist eine Tabelle: dann bauen wir eine neue
+ // Box und fuegen die Zeilen der Tabelle in die Zeilen
+ // der Box ein
+ pBox = new SwTableBox( pBoxFmt, 0, pUpper );
+ pCell->GetSubTable()->MakeTable( pBox, nColWidth );
+ }
+
+ // TODO: Share formats!
+ SwFrmFmt *pFrmFmt = pBox->ClaimFrmFmt();
+ SwFmtFillOrder aFillOrder( pFrmFmt->GetFillOrder() );
+ pFrmFmt->ResetAllAttr();
+ pFrmFmt->SetAttr( aFillOrder );
+
+ const SfxItemSet *pAutoItemSet = 0;
+ const OUString& rStyleName = pCell->GetStyleName();
+ if( pCell->GetStartNode() && rStyleName &&
+ GetSwImport().FindAutomaticStyle(
+#ifdef XML_CORE_API
+ SFX_STYLE_FAMILY_FRAME, SW_STYLE_SUBFAMILY_TABLE_BOX,
+#else
+ XML_STYLE_FAMILY_TABLE_CELL,
+#endif
+ pCell->GetStyleName(),
+ &pAutoItemSet ) )
+ {
+ if( pAutoItemSet )
+ pFrmFmt->SetAttr( *pAutoItemSet );
+ }
+
+ pFrmFmt->SetAttr( SwFmtFrmSize( ATT_VAR_SIZE, nColWidth ) );
+
+ return pBox;
+}
+
+SwTableLine *SwXMLTableContext::MakeTableLine( SwTableBox *pUpper,
+ sal_uInt32 nTopRow,
+ sal_uInt32 nLeftCol,
+ sal_uInt32 nBottomRow,
+ sal_uInt32 nRightCol )
+{
+ SwTableLine *pLine;
+ if( !pUpper && 0UL==nTopRow )
+ {
+ pLine = pTableNode->GetTable().GetTabLines()[0U];
+ }
+ else
+ {
+ pLine = new SwTableLine( pLineFmt, 0, pUpper );
+ }
+
+ // TODO: Share formats!
+ SwFrmFmt *pFrmFmt = pLine->ClaimFrmFmt();
+ SwFmtFillOrder aFillOrder( pFrmFmt->GetFillOrder() );
+ pFrmFmt->ResetAllAttr();
+ pFrmFmt->SetAttr( aFillOrder );
+
+ const SfxItemSet *pAutoItemSet = 0;
+ const OUString& rStyleName = (*pRows)[nTopRow]->GetStyleName();
+ if( 1UL == (nBottomRow - nTopRow) &&
+ rStyleName.getLength() &&
+ GetSwImport().FindAutomaticStyle(
+#ifdef XML_CORE_API
+ SFX_STYLE_FAMILY_FRAME, SW_STYLE_SUBFAMILY_TABLE_LINE,
+#else
+ XML_STYLE_FAMILY_TABLE_ROW,
+#endif
+ rStyleName, &pAutoItemSet ) )
+ {
+ if( pAutoItemSet )
+ pFrmFmt->SetAttr( *pAutoItemSet );
+ }
+
+ SwTableBoxes& rBoxes = pLine->GetTabBoxes();
+
+ sal_uInt32 nStartCol = nLeftCol;
+ while( nStartCol < nRightCol )
+ {
+ for( sal_uInt32 nRow=nTopRow; nRow<nBottomRow; nRow++ )
+ (*pRows)[(sal_uInt16)nRow]->SetSplitable( sal_True );
+
+ sal_uInt32 nCol = nStartCol;
+ sal_uInt32 nSplitCol = nRightCol;
+ sal_Bool bSplitted = sal_False;
+ while( !bSplitted )
+ {
+ ASSERT( nCol < nRightCol, "Zu weit gelaufen" );
+
+ // Kann hinter der aktuellen HTML-Tabellen-Spalte gesplittet
+ // werden? Wenn ja, koennte der enstehende Bereich auch noch
+ // in Zeilen zerlegt werden, wenn man die naechste Spalte
+ // hinzunimmt?
+ sal_Bool bSplit = sal_True;
+ sal_Bool bHoriSplitMayContinue = sal_False;
+ sal_Bool bHoriSplitPossible = sal_False;
+ for( sal_uInt32 nRow=nTopRow; nRow<nBottomRow; nRow++ )
+ {
+ SwXMLTableCell_Impl *pCell = GetCell(nRow,nCol);
+ // Could the table fragment be splitted horizontally behind
+ // the current line?
+ sal_Bool bHoriSplit = (*pRows)[(sal_uInt16)nRow]->IsSplitable() &&
+ nRow+1UL < nBottomRow &&
+ 1UL == pCell->GetRowSpan();
+ (*pRows)[(sal_uInt16)nRow]->SetSplitable( bHoriSplit );
+
+ // Could the table fragment be splitted vertically behind the
+ // current column (uptp the current line?
+ bSplit &= ( 1UL == pCell->GetColSpan() );
+ if( bSplit )
+ {
+ bHoriSplitPossible |= bHoriSplit;
+
+ // Could the current table fragment be splitted
+ // horizontally behind the next collumn, too?
+ bHoriSplit &= (nCol+1UL < nRightCol &&
+ 1UL == GetCell(nRow,nCol+1UL)->GetRowSpan());
+ bHoriSplitMayContinue |= bHoriSplit;
+ }
+ }
+
+#ifndef PRODUCT
+ if( nCol == nRightCol-1UL )
+ {
+ ASSERT( bSplit, "Split-Flag falsch" );
+ ASSERT( !bHoriSplitMayContinue,
+ "HoriSplitMayContinue-Flag falsch" );
+ SwXMLTableCell_Impl *pCell = GetCell( nTopRow, nStartCol );
+ ASSERT( pCell->GetRowSpan() != (nBottomRow-nTopRow) ||
+ !bHoriSplitPossible, "HoriSplitPossible-Flag falsch" );
+ }
+#endif
+ ASSERT( !bHoriSplitMayContinue || bHoriSplitPossible,
+ "bHoriSplitMayContinue, aber nicht bHoriSplitPossible" );
+
+ if( bSplit )
+ {
+ SwTableBox* pBox = 0;
+ SwXMLTableCell_Impl *pCell = GetCell( nTopRow, nStartCol );
+ if( pCell->GetRowSpan() == (nBottomRow-nTopRow) &&
+ pCell->GetColSpan() == (nCol+1UL-nStartCol) )
+ {
+ // The remaining box neither contains lines nor rows (i.e.
+ // is a content box
+ nSplitCol = nCol + 1UL;
+
+#if 0
+ // eventuell ist die Zelle noch leer
+ if( !pCell->GetContents() )
+ {
+ ASSERT( 1UL==pCell->GetRowSpan(),
+ "leere Box ist nicht 1 Zeile hoch" );
+ const SwStartNode* pPrevStNd =
+ GetPrevBoxStartNode( nTopRow, nStartCol );
+ HTMLTableCnts *pCnts = new HTMLTableCnts(
+ pParser->InsertTableSection(pPrevStNd) );
+ SwHTMLTableLayoutCnts *pCntsLayoutInfo =
+ pCnts->CreateLayoutInfo();
+
+ pCell->SetContents( pCnts );
+ pLayoutInfo->GetCell( nTopRow, nStartCol )
+ ->SetContents( pCntsLayoutInfo );
+
+ // ggf. COLSPAN beachten
+ for( sal_uInt16 j=nStartCol+1; j<nSplitCol; j++ )
+ {
+ GetCell(nTopRow,j)->SetContents( pCnts );
+ pLayoutInfo->GetCell( nTopRow, j )
+ ->SetContents( pCntsLayoutInfo );
+ }
+ }
+#endif
+ pBox = MakeTableBox( pLine, pCell,
+ nTopRow, nStartCol,
+ nBottomRow, nSplitCol );
+ bSplitted = sal_True;
+ }
+ else if( bHoriSplitPossible && bHoriSplitMayContinue )
+ {
+ // The table fragment could be splitted behind the current
+ // column, and the remaining fragment could be divided
+ // into lines. Anyway, it could be that this applies to
+ // the next column, too. That for, we check the next
+ // column but rememeber the current one as a good place to
+ // split.
+ nSplitCol = nCol + 1UL;
+ }
+ else
+ {
+ // If the table resulting table fragment could be divided
+ // into lines if spllitting behind the current column, but
+ // this doesn't apply for thr next column, we split begind
+ // the current column. This applies for the last column,
+ // too.
+ // If the resulting box cannot be splitted into rows,
+ // the split at the last split position we remembered.
+ if( bHoriSplitPossible || nSplitCol > nCol+1 )
+ {
+ ASSERT( !bHoriSplitMayContinue,
+ "bHoriSplitMayContinue==sal_True" );
+ ASSERT( bHoriSplitPossible || nSplitCol == nRightCol,
+ "bHoriSplitPossible-Flag sollte gesetzt sein" );
+
+ nSplitCol = nCol + 1UL;
+ }
+
+ pBox = MakeTableBox( pLine, nTopRow, nStartCol,
+ nBottomRow, nSplitCol );
+ bSplitted = sal_True;
+ }
+ if( pBox )
+ rBoxes.C40_INSERT( SwTableBox, pBox, rBoxes.Count() );
+ }
+ nCol++;
+ }
+ nStartCol = nSplitCol;
+ }
+
+ return pLine;
+}
+
+void SwXMLTableContext::_MakeTable( SwTableBox *pBox )
+{
+ // fix column widths
+ sal_uInt32 i;
+ sal_uInt32 nCols = GetColumnCount();
+
+ // If there are empty rows (because of some row span of previous rows)
+ // the have to be deleted. The previous rows have to be truncated.
+
+ if( pRows->Count() > nCurRow )
+ {
+ SwXMLTableRow_Impl *pPrevRow = (*pRows)[(sal_uInt16)nCurRow-1U];
+ SwXMLTableCell_Impl *pCell;
+ for( i=0UL; i<nCols; i++ )
+ {
+ if( ( pCell=pPrevRow->GetCell(i), pCell->GetRowSpan() > 1UL ) )
+ {
+ FixRowSpan( nCurRow-1UL, i, 1UL );
+ }
+ }
+ for( i=(sal_uInt32)pRows->Count()-1UL; i>=nCurRow; i-- )
+ pRows->DeleteAndDestroy( i );
+ }
+
+ // Make sure there is at least one column.
+ if( 0UL == nCols )
+ {
+ InsertColumn( USHRT_MAX, sal_True );
+ nCols = 1UL;
+ }
+ if( 0UL == pRows->Count() )
+ {
+ OUString aStyleName;
+ InsertCell( aStyleName, 1U, nCols, InsertTableSection() );
+ }
+
+ // TODO: Do we have to keep both values, the realtive and the absolute
+ // width?
+ sal_Int32 nAbsWidth = 0L;
+ sal_Int32 nMinAbsColWidth = 0L;
+ sal_Int32 nRelWidth = 0L;
+ sal_Int32 nMinRelColWidth = 0L;
+ sal_uInt32 nRelCols = 0UL;
+ for( i=0U; i < nCols; i++ )
+ {
+ sal_Int32 nColWidth = aColumnWidths[i];
+ if( aColumnRelWidths[i] )
+ {
+ nRelWidth += nColWidth;
+ if( 0L == nMinRelColWidth || nColWidth < nMinRelColWidth )
+ nMinRelColWidth = nColWidth;
+ nRelCols++;
+ }
+ else
+ {
+ nAbsWidth += nColWidth;
+ if( 0L == nMinAbsColWidth || nColWidth < nMinAbsColWidth )
+ nMinAbsColWidth = nColWidth;
+ }
+ }
+ sal_uInt32 nAbsCols = nCols - nRelCols;
+
+ if( bRelWidth )
+ {
+ // If there a columns that have an absolute width, we have to
+ // calculate a relative one for them.
+ if( nAbsCols > 0UL )
+ {
+ // All column that have absolute widths get relative widths;
+ // these widths relate to each over like the original absolute
+ // widths. The smallest column gets a width that hat the same
+ // value as the smallest column that has an relative width
+ // already.
+ if( 0L == nMinRelColWidth )
+ nMinRelColWidth = MINLAY;
+
+ for( i=0UL; nAbsCols > 0UL && i < nCols; i++ )
+ {
+ if( !aColumnRelWidths[(sal_uInt16)i] )
+ {
+ sal_Int32 nRelCol = (aColumnWidths[i] * nMinRelColWidth) /
+ nMinAbsColWidth;
+ aColumnWidths.Replace( (sal_uInt16)nRelCol, (sal_uInt16)i );
+ nRelWidth += nRelCol;
+ nAbsCols--;
+ }
+ }
+ }
+
+ if( !nWidth )
+ {
+ // If no width has been specified by now, we may use any value
+ nWidth = nRelWidth > USHRT_MAX ? USHRT_MAX : nRelWidth;
+ }
+ if( nRelWidth != nWidth )
+ {
+ double n = (double)nWidth / (double)nRelWidth;
+ nRelWidth = 0L;
+ for( i=0U; i < nCols-1UL; i++ )
+ {
+ sal_Int32 nW = (sal_Int32)(aColumnWidths[i] * n);
+ aColumnWidths.Replace( (sal_uInt16)nW, i );
+ nRelWidth += nW;
+ }
+ aColumnWidths.Replace( (sal_uInt16)(nWidth-nRelWidth),
+ (sal_uInt16)nCols-1UL );
+ }
+ }
+ else
+ {
+ // If there are columns that have relative widths, we have to
+ // calculate a absolute widths for them.
+ if( nRelCols > 0UL )
+ {
+ // The absolute space that is available for all columns with a
+ // relative width.
+ sal_Int32 nAbsForRelWidth =
+ nWidth > nAbsWidth ? nWidth - nAbsWidth : 0L;
+
+ // The relative width that has to be distributed in addition to
+ // equally widthed columns.
+ sal_Int32 nExtraRel = nRelWidth - (nRelCols * nMinRelColWidth);
+
+ // The absolute space that may be distributed in addition to
+ // minumum widthed columns.
+ sal_Int32 nMinAbs = nRelCols * MINLAY;
+ sal_Int32 nExtraAbs =
+ nAbsForRelWidth > nMinAbs ? nAbsForRelWidth - nMinAbs : 0L;
+
+ sal_Bool bMin = sal_False; // Do all columns get the mininum width?
+ sal_Bool bMinExtra = sal_False; // Do all columns get the minimum width plus
+ // some extra space?
+
+ if( nAbsForRelWidth <= nMinAbs )
+ {
+ // If there is not enough space left for all columns to
+ // get the minimum width, they get the minimum width, anyway.
+ nAbsForRelWidth = nMinAbs;
+ bMin = sal_True;
+ }
+ else if( nAbsForRelWidth <= (nRelWidth * MINLAY) /
+ nMinRelColWidth )
+ {
+ // If there is enougth space for all columns to get the
+ // minimum width, but not to get a width that takes the
+ // relative width into account, each column gets the minimum
+ // width plus some extra space that is based on the additional
+ // space that is available.
+ bMinExtra = sal_True;
+ }
+ // Otherwise, if there is enouth space for every column, every
+ // column gets this space.
+
+ for( i=0UL; nRelCols > 0UL && i < nCols; i++ )
+ {
+ if( aColumnRelWidths[(sal_uInt16)i] )
+ {
+ sal_Int32 nAbsCol;
+ if( 1UL == nRelCols )
+ {
+ // The last column that has a relative width gets
+ // all absolute space that is left.
+ nAbsCol = nAbsForRelWidth;
+ }
+ else
+ {
+ if( bMin )
+ {
+ nAbsCol = MINLAY;
+ }
+ else if( bMinExtra )
+ {
+ sal_Int32 nExtraRelCol =
+ aColumnWidths[i] - nMinRelColWidth;
+ nAbsCol = MINLAY + (nExtraRelCol * nExtraAbs) /
+ nExtraRel;
+ }
+ else
+ {
+ nAbsCol = (aColumnWidths[i] * nAbsForRelWidth) /
+ nRelWidth;
+ }
+ }
+ aColumnWidths.Replace( (sal_uInt16)nAbsCol, (sal_uInt16)i );
+ nAbsForRelWidth -= nAbsCol;
+ nAbsWidth += nAbsCol;
+ nRelCols--;
+ }
+ }
+ }
+
+ if( nAbsWidth < nWidth )
+ {
+ // If the table's width is larger than the absolute column widths,
+ // every column get some extra width.
+ sal_Int32 nExtraAbs = nWidth - nAbsWidth;
+ sal_Int32 nAbsLastCol =
+ aColumnWidths[(sal_uInt16)nCols-1U] + nExtraAbs;
+ for( i=0UL; i < nCols-1UL; i++ )
+ {
+ sal_Int32 nAbsCol = aColumnWidths[i];
+ sal_Int32 nExtraAbsCol = (nAbsCol * nExtraAbs) /
+ nAbsWidth;
+ nAbsCol += nExtraAbsCol;
+ aColumnWidths.Replace( (sal_uInt16)nAbsCol, i );
+ nAbsLastCol -= nExtraAbsCol;
+ }
+ aColumnWidths.Replace( (sal_uInt16)nAbsLastCol, (sal_uInt16)nCols-1U );
+ }
+ else if( nAbsWidth > nWidth )
+ {
+ // If the table's width is smaller than the absolute column
+ // widths, every column gets the minimum width plus some extra
+ // width.
+ sal_Int32 nExtraAbs = nWidth - (nCols * MINLAY);
+ sal_Int32 nAbsLastCol = MINLAY + nExtraAbs;
+ for( i=0UL; i < nCols-1UL; i++ )
+ {
+ sal_Int32 nAbsCol = aColumnWidths[i];
+ sal_Int32 nExtraAbsCol = (nAbsCol * nExtraAbs) /
+ nAbsWidth;
+ nAbsCol = MINLAY + nExtraAbsCol;
+ aColumnWidths.Replace( (sal_uInt16)nAbsCol, i );
+ nAbsLastCol -= nExtraAbsCol;
+ }
+ aColumnWidths.Replace( (sal_uInt16)nAbsLastCol, (sal_uInt16)nCols-1U );
+ }
+ }
+
+ SwTableLines& rLines =
+ pBox ? pBox->GetTabLines()
+ : pTableNode->GetTable().GetTabLines();
+
+ sal_uInt32 nStartRow = 0UL;
+ sal_uInt32 nRows = pRows->Count();
+ for( i=0UL; i<nRows; i++ )
+ {
+ // Could we split the table behind the current line?
+ sal_Bool bSplit = sal_True;
+ SwXMLTableRow_Impl *pRow = (*pRows)[(sal_uInt16)i];
+ for( sal_uInt32 j=0UL; j<nCols; j++ )
+ {
+ bSplit = ( 1UL == pRow->GetCell(j)->GetRowSpan() );
+ if( !bSplit )
+ break;
+ }
+
+ if( bSplit )
+ {
+ SwTableLine *pLine =
+ MakeTableLine( pBox, nStartRow, 0UL, i+1UL, nCols );
+ if( pBox || nStartRow>0UL )
+ rLines.C40_INSERT( SwTableLine, pLine, rLines.Count() );
+ nStartRow = i+1UL;
+ }
+ }
+}
+
+void SwXMLTableContext::MakeTable()
+{
+ SwXMLImport& rSwImport = GetSwImport();
+
+ SwFrmFmt *pFrmFmt = pTableNode->GetTable().GetFrmFmt();
+
+ SwHoriOrient eHoriOrient = HORI_FULL;
+ sal_Bool bSetHoriOrient = sal_False;
+
+ sal_uInt16 nPrcWidth = 0U;
+ sal_Bool bCalcWidth = sal_False;
+ sal_Bool bSetWidth = sal_False;
+
+ pTableNode->GetTable().SetHeadlineRepeat( bHasHeading );
+
+ const SfxItemSet *pAutoItemSet = 0;
+ if( aStyleName.getLength() &&
+ rSwImport.FindAutomaticStyle(
+#ifdef XML_CORE_API
+ SFX_STYLE_FAMILY_FRAME, SW_STYLE_SUBFAMILY_TABLE,
+#else
+ XML_STYLE_FAMILY_TABLE_TABLE,
+#endif
+ aStyleName, &pAutoItemSet ) &&
+ pAutoItemSet )
+ {
+ const SfxPoolItem *pItem;
+ const SvxLRSpaceItem *pLRSpace = 0;
+ if( SFX_ITEM_SET == pAutoItemSet->GetItemState( RES_LR_SPACE, sal_False,
+ &pItem ) )
+ pLRSpace = (const SvxLRSpaceItem *)pItem;
+
+ if( SFX_ITEM_SET == pAutoItemSet->GetItemState( RES_HORI_ORIENT, sal_False,
+ &pItem ) )
+ {
+ eHoriOrient = ((const SwFmtHoriOrient *)pItem)->GetHoriOrient();
+ switch( eHoriOrient )
+ {
+ case HORI_FULL:
+ if( pLRSpace )
+ {
+ eHoriOrient = HORI_NONE;
+ bSetHoriOrient = sal_True;
+ }
+ break;
+ case HORI_LEFT:
+ if( pLRSpace )
+ {
+ eHoriOrient = HORI_LEFT_AND_WIDTH;
+ bSetHoriOrient = sal_True;
+ }
+ break;
+ }
+ }
+ else
+ {
+ bSetHoriOrient = sal_True;
+ }
+
+ if( SFX_ITEM_SET == pAutoItemSet->GetItemState( RES_FRM_SIZE, sal_False,
+ &pItem ) )
+ {
+ const SwFmtFrmSize *pSize = (const SwFmtFrmSize *)pItem;
+ switch( eHoriOrient )
+ {
+ case HORI_FULL:
+ nWidth = USHRT_MAX;
+ break;
+ case HORI_NONE:
+ // The width will be set in _MakeTable
+ break;
+ default:
+ if( pSize->GetWidthPercent() )
+ {
+ // The width will be set in _MakeTable
+ nPrcWidth = pSize->GetWidthPercent();
+ }
+ else
+ {
+ nWidth = pSize->GetWidth();
+ if( nWidth < GetColumnCount() * MINLAY )
+ {
+ nWidth = GetColumnCount() * MINLAY;
+ }
+ else if( nWidth > USHRT_MAX )
+ {
+ nWidth = USHRT_MAX;
+ }
+ bRelWidth = sal_False;
+ }
+ break;
+ }
+ }
+ else
+ {
+ eHoriOrient = HORI_FULL;
+ bSetHoriOrient = sal_True;
+ nWidth = USHRT_MAX;
+ }
+
+ pFrmFmt->SetAttr( *pAutoItemSet );
+ }
+ else
+ {
+ bSetHoriOrient = sal_True;
+ nWidth = USHRT_MAX;
+ }
+
+ SwTableLine *pLine1 = pTableNode->GetTable().GetTabLines()[0U];
+#ifdef XML_CORE_API
+ pBox1 = pLine1->GetTabBoxes()[0U];
+#else
+ DBG_ASSERT( pBox1 == pLine1->GetTabBoxes()[0U],
+ "Why is box 1 change?" );
+ pBox1->pSttNd = pSttNd1;
+#endif
+ pLine1->GetTabBoxes().Remove(0U);
+
+ pLineFmt = (SwTableLineFmt*)pLine1->GetFrmFmt();
+ pBoxFmt = (SwTableBoxFmt*)pBox1->GetFrmFmt();
+
+ _MakeTable();
+
+ if( bSetHoriOrient )
+ pFrmFmt->SetAttr( SwFmtHoriOrient( 0, eHoriOrient ) );
+
+ // This must be bahind the call to _MakeTable, because nWidth might be
+ // changed there.
+ pFrmFmt->LockModify();
+ SwFmtFrmSize aSize( ATT_VAR_SIZE, nWidth );
+ aSize.SetWidthPercent( (sal_Int8)nPrcWidth );
+ pFrmFmt->SetAttr( aSize );
+ pFrmFmt->UnlockModify();
+
+
+ for( sal_uInt16 i=0; i<pRows->Count(); i++ )
+ (*pRows)[i]->Dispose();
+
+ if( rSwImport.GetDoc().GetRootFrm() )
+ {
+ pTableNode->DelFrms();
+ SwNodeIndex aIdx( *pTableNode->EndOfSectionNode(), 1 );
+ pTableNode->MakeFrms( &aIdx );
+ }
+}
+
+void SwXMLTableContext::MakeTable( SwTableBox *pBox, sal_Int32 nW )
+{
+ pLineFmt = GetParentTable()->pLineFmt;
+ pBoxFmt = GetParentTable()->pBoxFmt;
+ nWidth = nW;
+ bRelWidth = GetParentTable()->bRelWidth;
+
+ _MakeTable( pBox );
+}
+
+const SwStartNode *SwXMLTableContext::InsertTableSection(
+ const SwStartNode *pPrevSttNd )
+{
+ const SwStartNode *pStNd;
+#ifdef XML_CORE_API
+ SwPaM& rPaM = GetSwImport().GetPaM();
+ if( bFirstSection )
+ {
+ // The PaM already is in the first section
+ pStNd = rPaM.GetNode()->FindTableBoxStartNode();
+ bFirstSection = sal_False;
+ }
+ else
+ {
+ SwDoc& rDoc = GetSwImport().GetDoc();
+ const SwEndNode *pEndNd = pPrevSttNd ? pPrevSttNd->EndOfSectionNode()
+ : pTableNode->EndOfSectionNode();
+ sal_uInt32 nOffset = pPrevSttNd ? 1UL : 0UL;
+ SwNodeIndex aIdx( *pEndNd, nOffset );
+ SwTxtFmtColl *pColl = rDoc.GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+ pStNd = rDoc.GetNodes().MakeTextSection( aIdx, SwTableBoxStartNode,
+ pColl );
+ if( !pPrevSttNd )
+ {
+ rPaM.GetPoint()->nNode.Assign( *pStNd, 1UL );
+ rPaM.GetPoint()->nContent.Assign( rPaM.GetCntntNode(), 0U );
+ }
+ }
+#else
+ Reference<XUnoTunnel> xCrsrTunnel( GetImport().GetTextImport()->GetCursor(),
+ UNO_QUERY);
+ ASSERT( xCrsrTunnel.is(), "missing XUnoTunnel for Cursor" );
+ SwXTextCursor *pTxtCrsr =
+ (SwXTextCursor*)xCrsrTunnel->getSomething(
+ SwXTextCursor::getUnoTunnelId() );
+ ASSERT( pTxtCrsr, "SwXTextCursor missing" );
+
+ if( bFirstSection )
+ {
+ // The Cursor already is in the first section
+ pStNd = pTxtCrsr->GetCrsr()->GetNode()->FindTableBoxStartNode();
+ bFirstSection = sal_False;
+ }
+ else
+ {
+ SwDoc& rDoc = GetSwImport().GetDoc();
+ const SwEndNode *pEndNd = pPrevSttNd ? pPrevSttNd->EndOfSectionNode()
+ : pTableNode->EndOfSectionNode();
+ sal_uInt32 nOffset = pPrevSttNd ? 1UL : 0UL;
+ SwNodeIndex aIdx( *pEndNd, nOffset );
+ SwTxtFmtColl *pColl = rDoc.GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+ pStNd = rDoc.GetNodes().MakeTextSection( aIdx, SwTableBoxStartNode,
+ pColl );
+ if( !pPrevSttNd )
+ {
+ pBox1->pSttNd = pStNd;
+ SwCntntNode *pCNd = rDoc.GetNodes()[ pStNd->GetIndex() + 1 ]
+ ->GetCntntNode();
+ SwPosition aPos( *pCNd );
+ aPos.nContent.Assign( pCNd, 0U );
+
+ Reference < XTextRange > xTextRange =
+ CreateTextRangeFromPosition( &rDoc, aPos, 0 );
+ Reference < XText > xText = xTextRange->getText();
+ Reference < XTextCursor > xTextCursor =
+ xText->createTextCursorByRange( xTextRange );
+ GetImport().GetTextImport()->SetCursor( xTextCursor );
+ }
+ }
+
+#endif
+
+ return pStNd;
+}
+
+void SwXMLTableContext::EndElement()
+{
+ if( !xParentTable.Is() )
+ {
+ MakeTable();
+#ifdef XML_CORE_API
+ GetSwImport().GetPaM().Move( fnMoveForward );
+#else
+ GetImport().GetTextImport()->SetCursor( xOldCursor );
+#endif
+ }
+}
+
+#ifndef XML_CORE_API
+class SwXMLTextImportHelper : public XMLTextImportHelper
+{
+protected:
+ virtual SvXMLImportContext *CreateTableChildContext(
+ SvXMLImport& rImport,
+ sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< XAttributeList > & xAttrList );
+
+public:
+ SwXMLTextImportHelper(
+ const Reference < XModel>& rModel,
+ sal_Bool bInsertM, sal_Bool bStylesOnlyM );
+ ~SwXMLTextImportHelper();
+};
+
+SwXMLTextImportHelper::SwXMLTextImportHelper(
+ const Reference < XModel>& rModel,
+ sal_Bool bInsertM, sal_Bool bStylesOnlyM ) :
+ XMLTextImportHelper( rModel, bInsertM, bStylesOnlyM )
+{
+}
+
+SwXMLTextImportHelper::~SwXMLTextImportHelper()
+{
+}
+
+SvXMLImportContext *SwXMLTextImportHelper::CreateTableChildContext(
+ SvXMLImport& rImport,
+ sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< XAttributeList > & xAttrList )
+{
+ return new SwXMLTableContext(
+ (SwXMLImport&)rImport, nPrefix, rLocalName, xAttrList );
+}
+
+XMLTextImportHelper* SwXMLImport::CreateTextImport()
+{
+ return new SwXMLTextImportHelper( GetModel(), IsInsertMode(),
+ IsStylesOnlyMode() );
+}
+
+#endif
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/xmltbli.cxx,v 1.1.1.1 2000-09-18 17:15:00 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.11 2000/09/18 16:05:07 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.10 2000/09/18 11:58:02 mib
+ text frames/graphics import and export continued
+
+ Revision 1.9 2000/08/24 11:16:42 mib
+ text import continued
+
+ Revision 1.8 2000/08/10 10:22:16 mib
+ #74404#: Adeptions to new XSL/XLink working draft
+
+ Revision 1.7 2000/07/21 12:55:15 mib
+ text import/export using StarOffice API
+
+ Revision 1.6 2000/06/08 09:45:55 aw
+ changed to use functionality from xmloff project now
+
+ Revision 1.5 2000/05/03 12:08:05 mib
+ unicode
+
+ Revision 1.4 2000/03/13 14:33:44 mib
+ UNO3
+
+ Revision 1.3 2000/03/10 11:15:04 mib
+ #72721#: Made table import much more robust, rowspan
+
+ Revision 1.2 2000/02/17 15:17:57 mib
+ #70271#: headline repeat
+
+ Revision 1.1 2000/02/17 14:40:01 mib
+ #70271#: XML table import
+
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/xmltbli.hxx b/sw/source/filter/xml/xmltbli.hxx
new file mode 100644
index 000000000000..fae90ba3cac8
--- /dev/null
+++ b/sw/source/filter/xml/xmltbli.hxx
@@ -0,0 +1,211 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmltbli.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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 _XMLTBLI_HXX
+#define _XMLTBLI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+
+#if !defined(_SVSTDARR_USHORTS_DECL) || !defined(_SVSTDARR_BOOLS_DECL)
+#define _SVSTDARR_USHORTS
+#define _SVSTDARR_BOOLS
+#include <svtools/svstdarr.hxx>
+#endif
+
+class SwXMLImport;
+class SwTableNode;
+class SwTableBox;
+class SwTableLine;
+class SwStartNode;
+class SwTableBoxFmt;
+class SwTableLineFmt;
+class SwXMLTableCell_Impl;
+class SwXMLTableRows_Impl;
+
+
+#ifdef XML_CORE_API
+enum SwXMLStyleSubFamily
+{
+ SW_STYLE_SUBFAMILY_TABLE = 0x0001,
+ SW_STYLE_SUBFAMILY_TABLE_LINE = 0x0002,
+ SW_STYLE_SUBFAMILY_TABLE_BOX = 0x0004,
+ SW_STYLE_SUBFAMILY_TABLE_COL = 0x0008
+};
+#endif
+
+
+class SwXMLTableContext : public SvXMLImportContext
+{
+ ::rtl::OUString aStyleName;
+
+ SvUShorts aColumnWidths;
+ SvBools aColumnRelWidths;
+
+#ifndef XML_CORE_API
+ ::com::sun::star::uno::Reference <
+ ::com::sun::star::text::XTextCursor > xOldCursor;
+#endif
+ SwXMLTableRows_Impl *pRows;
+
+ SwTableNode *pTableNode;
+ SwTableBox *pBox1;
+ const SwStartNode *pSttNd1;
+
+ SwTableBoxFmt *pBoxFmt;
+ SwTableLineFmt *pLineFmt;
+
+ SvXMLImportContextRef xParentTable; // if table ia a sub table
+
+ sal_Bool bFirstSection : 1;
+ sal_Bool bRelWidth : 1;
+ sal_Bool bHasHeading : 1;
+
+ sal_uInt32 nCurRow;
+ sal_uInt32 nCurCol;
+ sal_Int32 nWidth;
+
+ SwTableBox *NewTableBox( const SwStartNode *pStNd,
+ SwTableLine *pUpper );
+ SwTableBox *MakeTableBox( SwTableLine *pUpper,
+ const SwXMLTableCell_Impl *pStartNode,
+ sal_uInt32 nTopRow, sal_uInt32 nLeftCol,
+ sal_uInt32 nBottomRow, sal_uInt32 nRightCol );
+ SwTableBox *MakeTableBox( SwTableLine *pUpper,
+ sal_uInt32 nTopRow, sal_uInt32 nLeftCol,
+ sal_uInt32 nBottomRow, sal_uInt32 nRightCol );
+ SwTableLine *MakeTableLine( SwTableBox *pUpper,
+ sal_uInt32 nTopRow, sal_uInt32 nLeftCol,
+ sal_uInt32 nBottomRow, sal_uInt32 nRightCol );
+
+ void _MakeTable( SwTableBox *pBox=0 );
+ void MakeTable( SwTableBox *pBox, sal_Int32 nWidth );
+ void MakeTable();
+
+ inline SwXMLTableContext *GetParentTable() const;
+
+ const SwStartNode *GetPrevStartNode( sal_uInt32 nRow,
+ sal_uInt32 nCol ) const;
+ inline const SwStartNode *GetLastStartNode() const;
+ void FixRowSpan( sal_uInt32 nRow, sal_uInt32 nCol, sal_uInt32 nColSpan );
+ void ReplaceWithEmptyCell( sal_uInt32 nRow, sal_uInt32 nCol );
+
+public:
+
+ SwXMLTableContext( SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const ::rtl::OUString& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList > & xAttrList );
+ SwXMLTableContext( SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const ::rtl::OUString& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList > & xAttrList,
+ SwXMLTableContext *pTable );
+
+ virtual ~SwXMLTableContext();
+
+ virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
+ const ::rtl::OUString& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList > & xAttrList );
+
+ SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); }
+
+ void InsertColumn( sal_Int32 nWidth, sal_Bool bRelWidth );
+ sal_Int32 GetColumnWidth( sal_uInt32 nCol, sal_uInt32 nColSpan=1UL ) const;
+ inline sal_uInt32 GetColumnCount() const;
+
+ sal_Bool IsInsertCellPossible() const { return nCurCol < GetColumnCount(); }
+ sal_Bool IsInsertColPossible() const { return nCurCol < USHRT_MAX; }
+ sal_Bool IsInsertRowPossible() const { return nCurRow < USHRT_MAX; }
+
+
+ void InsertCell( const ::rtl::OUString& rStyleName,
+ sal_uInt32 nRowSpan=1U, sal_uInt32 nColSpan=1U,
+ const SwStartNode *pStNd=0,
+ SwXMLTableContext *pTable=0 );
+ void InsertRow( const ::rtl::OUString& rStyleName,
+ sal_Bool bInHead );
+ void FinishRow();
+ SwXMLTableCell_Impl *GetCell( sal_uInt32 nRow, sal_uInt32 nCol ) const;
+ const SwStartNode *InsertTableSection( const SwStartNode *pPrevSttNd=0 );
+
+ virtual void EndElement();
+};
+
+inline SwXMLTableContext *SwXMLTableContext::GetParentTable() const
+{
+ return (SwXMLTableContext *)&xParentTable;
+}
+
+inline sal_uInt32 SwXMLTableContext::GetColumnCount() const
+{
+ return aColumnWidths.Count();
+}
+
+inline const SwStartNode *SwXMLTableContext::GetLastStartNode() const
+{
+ return GetPrevStartNode( 0UL, GetColumnCount() );
+}
+
+
+#endif
diff --git a/sw/source/filter/xml/xmltext.cxx b/sw/source/filter/xml/xmltext.cxx
new file mode 100644
index 000000000000..ff2578915dab
--- /dev/null
+++ b/sw/source/filter/xml/xmltext.cxx
@@ -0,0 +1,1647 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmltext.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _RTL_STRBUF_HXX_
+#include <rtl/strbuf.hxx>
+#endif
+#ifndef _RTL_USTRBUF_HXX_
+#include <rtl/ustrbuf.hxx>
+#endif
+
+#ifndef _RSCSFX_HXX
+#include <rsc/rscsfx.hxx>
+#endif
+
+#ifndef _XMLOFF_NMSPMAP_HXX
+#include <xmloff/nmspmap.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLNMSPE_HXX
+#include <xmloff/xmlnmspe.hxx>
+#endif
+
+#ifndef _XMLOFF_I18NMAP_HXX
+#include <xmloff/i18nmap.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLITEM_HXX
+#include <xmloff/xmlitem.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLIMPIT_HXX
+#include <xmloff/xmlimpit.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLITMPR_HXX
+#include <xmloff/xmlexpit.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLKYWD_HXX
+#include <xmloff/xmlkywd.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLASTPL_HXX
+#include <xmloff/xmlastpl.hxx>
+#endif
+#ifndef _XMLOFF_TXTIMP_HXX
+#include <xmloff/txtimp.hxx>
+#endif
+
+#ifndef _XMLOFF_TXTFLDE_HXX
+#include <xmloff/txtflde.hxx>
+#endif
+
+#ifndef _XMLOFF_TXTVFLDI_HXX
+//#include <xmloff/txtvfldi.hxx>
+#endif
+
+#ifndef _UNOFIELD_HXX
+#include <unofield.hxx>
+#endif
+
+#ifndef _SVX_FONTITEM_HXX //autogen wg. SvxFontItem
+#include <svx/fontitem.hxx>
+#endif
+
+#ifndef _NDTXT_HXX //autogen wg. SwTxtNode
+#include <ndtxt.hxx>
+#endif
+#ifndef _SECTION_HXX //autogen wg. SwSection
+#include <section.hxx>
+#endif
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+#ifndef _PAM_HXX //autogen wg. SwPaM
+#include <pam.hxx>
+#endif
+#ifndef _TXATBASE_HXX
+#include <txatbase.hxx>
+#endif
+#ifndef _CHARATR_HXX
+#include <charatr.hxx>
+#endif
+#ifndef _CHARFMT_HXX
+#include <charfmt.hxx>
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _FMTFLD_HXX
+#include <fmtfld.hxx>
+#endif
+#ifndef _FCHRFMT_HXX
+#include <fchrfmt.hxx>
+#endif
+#ifndef _UNOSTYLE_HXX
+#include "unostyle.hxx"
+#endif
+
+#ifndef _XMLECTXT_HXX
+#include "xmlectxt.hxx"
+#endif
+#ifndef _HINTLIST_HXX
+#include "hintlist.hxx"
+#endif
+#ifndef _XMLIMP_HXX
+#include "xmlimp.hxx"
+#endif
+#ifndef _XMLEXP_HXX
+#include "xmlexp.hxx"
+#endif
+#ifndef _XMLNUM_HXX
+#include "xmlnum.hxx"
+#endif
+#ifndef _XMLTBLI_HXX
+#include "xmltbli.hxx"
+#endif
+#ifndef _XMLFMTE_HXX
+#include "xmlfmte.hxx"
+#endif
+#ifndef _XMLTEXTI_HXX
+#include "xmltexti.hxx"
+#endif
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::text;
+
+#ifdef XML_CORE_API
+enum SwXMLTextPElemTokens
+{
+ XML_TOK_SW_SPAN,
+ XML_TOK_SW_TAB_STOP,
+ XML_TOK_SW_LINE_BREAK,
+ XML_TOK_SW_S,
+ XML_TOK_SW_P_ELEM_END=XML_TOK_UNKNOWN
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aTextPElemTokenMap[] =
+{
+ { XML_NAMESPACE_TEXT, sXML_span, XML_TOK_SW_SPAN },
+ { XML_NAMESPACE_TEXT, sXML_tab_stop, XML_TOK_SW_TAB_STOP },
+ { XML_NAMESPACE_TEXT, sXML_line_break, XML_TOK_SW_LINE_BREAK },
+ { XML_NAMESPACE_TEXT, sXML_s, XML_TOK_SW_S },
+ XML_TOKEN_MAP_END
+};
+
+const SvXMLTokenMap& SwXMLImport::GetTextPElemTokenMap()
+{
+ if( !pTextPElemTokenMap )
+ pTextPElemTokenMap = new SvXMLTokenMap( aTextPElemTokenMap );
+
+ return *pTextPElemTokenMap;
+}
+
+// ---------------------------------------------------------------------
+
+class SwXMLHint_Impl
+{
+ SfxItemSet aItemSet;
+ xub_StrLen nStart;
+ xub_StrLen nEnd;
+
+public:
+
+ SwXMLHint_Impl( SfxItemPool& rPool, xub_StrLen nPos ) :
+ aItemSet( rPool, RES_CHRATR_BEGIN, RES_CHRATR_END - 1,
+ RES_TXTATR_BEGIN, RES_TXTATR_END - 1,
+ RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END - 1, 0 ),
+ nStart( nPos ),
+ nEnd( nPos )
+ {}
+
+ SfxItemSet& GetItemSet() { return aItemSet; }
+ xub_StrLen GetStart() const { return nStart; }
+ xub_StrLen GetEnd() const { return nEnd; }
+ void SetEnd( xub_StrLen nPos ) { nEnd = nPos; }
+};
+
+typedef SwXMLHint_Impl *SwXMLHint_ImplPtr;
+SV_DECL_PTRARR_DEL( SwXMLHints_Impl, SwXMLHint_ImplPtr, 5, 5 )
+SV_IMPL_PTRARR( SwXMLHints_Impl, SwXMLHint_ImplPtr )
+
+// ---------------------------------------------------------------------
+
+class SwXMLImpCharContext_Impl : public SvXMLImportContext
+{
+public:
+
+ SwXMLImpCharContext_Impl(
+ SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ sal_Unicode c,
+ sal_Bool bCount );
+
+ virtual ~SwXMLImpCharContext_Impl();
+
+ SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); }
+};
+
+SwXMLImpCharContext_Impl::SwXMLImpCharContext_Impl(
+ SwXMLImport& rImport,
+ sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ sal_Unicode c,
+ sal_Bool bCount ) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ sal_uInt16 nCount = 1;
+
+ if( bCount )
+ {
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ const OUString& rAttrName = xAttrList->getNameByIndex( i );
+
+ OUString aLocalName;
+ sal_uInt16 nPrefix =
+ GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
+ &aLocalName );
+ if( XML_NAMESPACE_TEXT == nPrefix &&
+ aLocalName.compareToAscii( sXML_c ) == 0 )
+ {
+ sal_Int32 nTmp = xAttrList->getValueByIndex(i).toInt32();
+ if( nTmp > 0L )
+ {
+ if( nTmp > USHRT_MAX )
+ nCount = USHRT_MAX;
+ else
+ nCount = (sal_uInt16)nTmp;
+ }
+ }
+ }
+ }
+
+ if( 1U == nCount )
+ {
+ GetSwImport().GetDoc().Insert( GetSwImport().GetPaM(), c );
+ }
+ else
+ {
+ OUStringBuffer sBuff( nCount );
+ while( nCount-- )
+ sBuff.append( c );
+
+ GetSwImport().GetDoc().Insert( GetSwImport().GetPaM(),
+ sBuff.makeStringAndClear() );
+ }
+}
+
+SwXMLImpCharContext_Impl::~SwXMLImpCharContext_Impl()
+{
+}
+
+// ---------------------------------------------------------------------
+
+class SwXMLImpSpanContext_Impl : public SvXMLImportContext
+{
+ SwXMLHints_Impl& rHints;
+ SwXMLHint_Impl *pHint;
+
+ sal_Bool& rIgnoreLeadingSpace;
+
+public:
+
+ SwXMLImpSpanContext_Impl(
+ SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SwXMLHints_Impl& rHnts,
+ sal_Bool& rIgnLeadSpace );
+
+ virtual ~SwXMLImpSpanContext_Impl();
+
+ virtual SvXMLImportContext *CreateChildContext(
+ sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+
+ virtual void Characters( const OUString& rChars );
+
+ SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); }
+};
+
+SwXMLImpSpanContext_Impl::SwXMLImpSpanContext_Impl(
+ SwXMLImport& rImport,
+ sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ SwXMLHints_Impl& rHnts,
+ sal_Bool& rIgnLeadSpace ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ rHints( rHnts ),
+ rIgnoreLeadingSpace( rIgnLeadSpace ),
+ pHint( 0 )
+{
+ OUString aStyleName;
+
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ const OUString& rAttrName = xAttrList->getNameByIndex( i );
+
+ OUString aLocalName;
+ sal_uInt16 nPrefix =
+ GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
+ &aLocalName );
+ if( XML_NAMESPACE_TEXT == nPrefix &&
+ aLocalName.compareToAscii( sXML_style_name ) == 0 )
+ aStyleName = xAttrList->getValueByIndex( i );
+ }
+
+ if( aStyleName.getLength() )
+ {
+ SwDoc& rDoc = GetSwImport().GetDoc();
+
+ // try to find a matching automatic style
+ const SfxItemSet *pAutoItemSet = 0;
+ OUString sParentStyle;
+ if( GetSwImport().FindAutomaticStyle( SFX_STYLE_FAMILY_CHAR,
+ aStyleName, &pAutoItemSet,
+ &sParentStyle ) )
+ {
+ aStyleName = sParentStyle;
+ }
+
+ // if an automatic style has not been found or has been found and
+ // has a parent style, try to find this one.
+ SwCharFmt *pCharFmt = 0;
+ if( aStyleName.getLength() )
+ {
+ const SvI18NMap& rI18NMap = GetSwImport().GetI18NMap();
+ String sName( rI18NMap.Get( SFX_STYLE_FAMILY_CHAR,
+ aStyleName) );
+ pCharFmt = rDoc.FindCharFmtByName( sName );
+ }
+
+ if( pAutoItemSet || pCharFmt )
+ {
+ xub_StrLen nPos =
+ GetSwImport().GetPaM().GetPoint()->nContent.GetIndex();
+ pHint = new SwXMLHint_Impl( rDoc.GetAttrPool(), nPos );
+ rHints.Insert( pHint, rHints.Count() );
+ if( pAutoItemSet )
+ pHint->GetItemSet().Put( *pAutoItemSet );
+ if( pCharFmt )
+ {
+ SwFmtCharFmt aCharFmt( pCharFmt );
+ pHint->GetItemSet().Put( aCharFmt );
+ }
+ }
+ }
+}
+
+SwXMLImpSpanContext_Impl::~SwXMLImpSpanContext_Impl()
+{
+ if( pHint )
+ {
+ xub_StrLen nPos =
+ GetSwImport().GetPaM().GetPoint()->nContent.GetIndex();
+ pHint->SetEnd( nPos );
+ }
+}
+
+SvXMLImportContext *SwXMLImpSpanContext_Impl::CreateChildContext(
+ sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetSwImport().GetTextPElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ {
+ case XML_TOK_SW_SPAN:
+ pContext = new SwXMLImpSpanContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ rHints,
+ rIgnoreLeadingSpace );
+ break;
+
+ case XML_TOK_SW_TAB_STOP:
+ pContext = new SwXMLImpCharContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ 0x0009, sal_False );
+ rIgnoreLeadingSpace = sal_False;
+ break;
+
+ case XML_TOK_SW_LINE_BREAK:
+ pContext = new SwXMLImpCharContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ 0x000A, sal_False );
+ rIgnoreLeadingSpace = sal_False;
+ break;
+
+ case XML_TOK_SW_S:
+ pContext = new SwXMLImpCharContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ 0x0020, sal_True );
+ break;
+
+ default:
+ // ignore unknown content
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
+ break;
+ }
+
+ return pContext;
+}
+
+void SwXMLImpSpanContext_Impl::Characters( const OUString& rChars )
+{
+ sal_Int32 nLen = rChars.getLength();
+ OUStringBuffer sChars( nLen );
+
+ for( sal_Int32 i=0; i < nLen; i++ )
+ {
+ sal_Unicode c = rChars[i];
+ switch( c )
+ {
+ case 0x20:
+ case 0x09:
+ case 0x0a:
+ case 0x0d:
+ if( !rIgnoreLeadingSpace )
+ sChars.append( (sal_Unicode)0x20 );
+ rIgnoreLeadingSpace = sal_True;
+ break;
+ default:
+ rIgnoreLeadingSpace = sal_False;
+ sChars.append( c );
+ break;
+ }
+ }
+
+ GetSwImport().GetDoc().Insert( GetSwImport().GetPaM(),
+ sChars.makeStringAndClear() );
+}
+
+// ---------------------------------------------------------------------
+
+enum SwXMLTextPAttrTokens
+{
+ XML_TOK_SW_P_STYLE_NAME,
+ XML_TOK_SW_P_COND_STYLE_NAME,
+ XML_TOK_SW_P_LEVEL,
+ XML_TOK_SW_P_END=XML_TOK_UNKNOWN
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aTextPAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TEXT, sXML_style_name, XML_TOK_SW_P_STYLE_NAME },
+ { XML_NAMESPACE_TEXT, sXML_cond_style_name,
+ XML_TOK_SW_P_COND_STYLE_NAME },
+ { XML_NAMESPACE_TEXT, sXML_level, XML_TOK_SW_P_LEVEL },
+ XML_TOKEN_MAP_END
+};
+
+SwXMLParaContext::SwXMLParaContext(
+ SwXMLImport& rImport,
+ sal_uInt16 nPrfx,
+ const OUString& rLName,
+ const Reference< xml::sax::XAttributeList > & xAttrList,
+ sal_Bool bHead ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ pItemSet( 0 ),
+ pHints( 0 ),
+ bIgnoreLeadingSpace( sal_True ),
+ bHeading( bHead )
+{
+ const SvXMLTokenMap& rTokenMap = GetSwImport().GetTextPAttrTokenMap();
+
+ OUString aStyleName, aCondStyleName;
+ sal_uInt8 nOutlineLevel = NO_NUMBERING;
+
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ const OUString& rAttrName = xAttrList->getNameByIndex( i );
+ const OUString& rValue = xAttrList->getValueByIndex( i );
+
+ OUString aLocalName;
+ sal_uInt16 nPrefix =
+ GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
+ &aLocalName );
+ switch( rTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SW_P_STYLE_NAME:
+ aStyleName = rValue;
+ break;
+ case XML_TOK_SW_P_COND_STYLE_NAME:
+ aCondStyleName = rValue;
+ break;
+ case XML_TOK_SW_P_LEVEL:
+ {
+ sal_Int32 nTmp = rValue.toInt32() - 1L;
+ if( nTmp >= 0L )
+ {
+ if( nTmp > MAXLEVEL )
+ nTmp = MAXLEVEL;
+ nOutlineLevel = (sal_uInt8)nTmp;
+ }
+ }
+
+ }
+ }
+
+ if( aCondStyleName.getLength() )
+ {
+ OUString sTmp( aStyleName );
+ aStyleName = aCondStyleName;
+ aCondStyleName = sTmp;
+ }
+
+ if( aStyleName.getLength() )
+ {
+ const SfxItemSet *pAutoItemSet = 0;
+ OUString sParentStyle;
+ if( GetSwImport().FindAutomaticStyle( SFX_STYLE_FAMILY_PARA,
+ aStyleName, &pAutoItemSet,
+ &sParentStyle ) )
+ {
+ aStyleName = sParentStyle;
+ }
+
+ if( pAutoItemSet )
+ {
+ if( !pItemSet )
+ pItemSet = new SfxItemSet( GetSwImport().GetDoc().GetAttrPool(),
+ aTxtNodeSetRange );
+ pItemSet->Put( *pAutoItemSet );
+ }
+
+ if( aStyleName.getLength() )
+ {
+ const SvI18NMap& rI18NMap = GetSwImport().GetI18NMap();
+ String sName( rI18NMap.Get( SFX_STYLE_FAMILY_PARA, aStyleName ) );
+ SwDoc& rDoc = GetSwImport().GetDoc();
+ SwTxtFmtColl *pColl = rDoc.FindTxtFmtCollByName( sName );
+ if( pColl )
+ {
+ sal_uInt8 nCollOutlineLevel = pColl->GetOutlineLevel();
+ if( bHeading && !( GetSwImport().IsInsertMode() ||
+ GetSwImport().IsStylesOnlyMode() ) &&
+ NO_NUMBERING != nOutlineLevel &&
+ ( NO_NUMBERING == nCollOutlineLevel ||
+ GetRealLevel(nCollOutlineLevel) != nOutlineLevel ) )
+ {
+ sal_uInt16 nArrLen = rDoc.GetTxtFmtColls()->Count();
+ for( sal_uInt16 i=0; i<nArrLen; i++ )
+ {
+ SwTxtFmtColl* pCur = (*rDoc.GetTxtFmtColls())[i];
+ sal_uInt8 nCurLevel = pCur->GetOutlineLevel();
+ if( nCurLevel != NO_NUMBERING &&
+ GetRealLevel(nCurLevel) == nOutlineLevel )
+ {
+ if( pColl != pCur )
+ pCur->SetOutlineLevel( NO_NUMBERING );
+ break;
+ }
+ }
+ pColl->SetOutlineLevel( nOutlineLevel );
+ }
+ rDoc.SetTxtFmtColl( GetSwImport().GetPaM(), pColl );
+ }
+ }
+ }
+}
+
+SwXMLParaContext::~SwXMLParaContext()
+{
+#ifndef PRODUCT
+ SwCntntNode *pTTTNd = GetSwImport().GetPaM().GetNode()->GetCntntNode();
+#endif
+
+ // Start a new node.
+ SwDoc& rDoc = GetSwImport().GetDoc();
+ rDoc.AppendTxtNode( *GetSwImport().GetPaM().GetPoint() );
+
+ // Create a "attribute" PaM and move it to the previous node.
+ SwPaM aPaM( GetSwImport().GetPaM() );
+ aPaM.Move( fnMoveBackward, fnGoCntnt );
+ aPaM.SetMark();
+ SwCntntNode *pCNd = aPaM.GetNode()->GetCntntNode();
+ ASSERT( pCNd,
+ "SwXMLParaContext::~SwXMLParaContext: no content node" );
+#ifndef PRODUCT
+ ASSERT( pTTTNd == pCNd,
+ "SwXMLParaContext::~SwXMLParaContext: wrong content node" );
+ ASSERT( (const SwIndexReg*)pTTTNd == aPaM.GetPoint()->nContent.GetIdxReg(),
+ "SwXMLParaContext::~SwXMLParaContext: wrong content node" );
+#endif
+
+ aPaM.GetPoint()->nContent.Assign( pCNd, 0 );
+
+ // Set paragraph attributes.
+ if( pItemSet )
+ rDoc.Insert( aPaM, *pItemSet );
+ delete pItemSet;
+
+ // Set numbering rules
+ SwTxtNode *pTxtNd = pCNd->GetTxtNode();
+ const SwNumRule *pNumRule = pTxtNd->GetNumRule();
+ if( GetSwImport().IsInList() )
+ {
+ SwXMLListBlockContext *pListBlock = GetSwImport().GetListBlock();
+ String sStyleName( GetSwImport().GetI18NMap().Get(
+ SFX_STYLE_FAMILY_PSEUDO,pListBlock->GetStyleName()) );
+ if( !pNumRule ||
+ ( !pListBlock->HasGeneratedStyle() &&
+ pNumRule->GetName() != sStyleName ) )
+ {
+ rDoc.Insert( aPaM, SwNumRuleItem( sStyleName ) );
+ pNumRule = pTxtNd->GetNumRule();
+ }
+
+ ASSERT( pNumRule, "SwXMLParaContext::~SwXMLParaContext: no num rule" );
+ GetSwImport().SetUsed( *pNumRule );
+
+ SwXMLListItemContext *pListItem = GetSwImport().GetListItem();
+
+ sal_uInt8 nLevel = pListBlock->GetLevel() > MAXLEVEL
+ ? MAXLEVEL
+ : (sal_uInt8)pListBlock->GetLevel();
+ if( !pListItem )
+ nLevel |= NO_NUMLEVEL;
+
+ SwNodeNum aNodeNum( nLevel );
+ if( pListBlock->IsRestartNumbering() )
+ {
+ aNodeNum.SetStart();
+ pListBlock->ResetRestartNumbering();
+ }
+ if( pListItem && pListItem->HasStartValue() )
+ {
+ aNodeNum.SetSetValue( pListItem->GetStartValue() );
+ }
+
+ pTxtNd->UpdateNum( aNodeNum );
+
+ GetSwImport().SetListItem( 0 );
+ }
+ else
+ {
+ // If the paragraph is not in a list but its style, remove it from
+ // the list.
+ if( pNumRule )
+ rDoc.Insert( aPaM, SwNumRuleItem() );
+ }
+
+ if( pHints && pHints->Count() )
+ {
+ for( sal_uInt16 i=0; i<pHints->Count(); i++ )
+ {
+ SwXMLHint_Impl *pHint = (*pHints)[i];
+ xub_StrLen nStt = pHint->GetStart();
+ xub_StrLen nEnd = pHint->GetEnd();
+ if( nStt != nEnd )
+ {
+ aPaM.GetPoint()->nContent.Assign( pCNd, nEnd );
+ aPaM.SetMark();
+ aPaM.GetPoint()->nContent.Assign( pCNd, nStt );
+ rDoc.Insert( aPaM, pHint->GetItemSet() );
+ }
+ }
+ }
+ delete pHints;
+}
+
+SvXMLImportContext *SwXMLParaContext::CreateChildContext(
+ sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetSwImport().GetTextPElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ {
+ case XML_TOK_SW_SPAN:
+ if( !pHints )
+ pHints = new SwXMLHints_Impl;
+ pContext = new SwXMLImpSpanContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ *pHints, bIgnoreLeadingSpace );
+ break;
+
+ case XML_TOK_SW_TAB_STOP:
+ pContext = new SwXMLImpCharContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ 0x0009, sal_False );
+ bIgnoreLeadingSpace = sal_False;
+ break;
+
+ case XML_TOK_SW_LINE_BREAK:
+ pContext = new SwXMLImpCharContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ 0x000A, sal_False );
+ bIgnoreLeadingSpace = sal_False;
+ break;
+
+ case XML_TOK_SW_S:
+ pContext = new SwXMLImpCharContext_Impl( GetSwImport(), nPrefix,
+ rLocalName, xAttrList,
+ 0x0020, sal_True );
+ break;
+
+ default:
+ // ignore unknown content
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
+ break;
+ }
+
+ return pContext;
+}
+
+void SwXMLParaContext::Characters( const OUString& rChars )
+{
+ sal_Int32 nLen = rChars.getLength();
+ OUStringBuffer sChars( nLen );
+
+ for( sal_Int32 i=0; i < nLen; i++ )
+ {
+ sal_Unicode c = rChars[ i ];
+ switch( c )
+ {
+ case 0x20:
+ case 0x09:
+ case 0x0a:
+ case 0x0d:
+ if( !bIgnoreLeadingSpace )
+ sChars.append( (sal_Unicode)0x20 );
+ bIgnoreLeadingSpace = sal_True;
+ break;
+ default:
+ bIgnoreLeadingSpace = sal_False;
+ sChars.append( c );
+ break;
+ }
+ }
+
+ GetSwImport().GetDoc().Insert( GetSwImport().GetPaM(),
+ sChars.makeStringAndClear() );
+}
+
+const SvXMLTokenMap& SwXMLImport::GetTextPAttrTokenMap()
+{
+ if( !pTextPAttrTokenMap )
+ pTextPAttrTokenMap = new SvXMLTokenMap( aTextPAttrTokenMap );
+
+ return *pTextPAttrTokenMap;
+}
+#endif
+
+// ---------------------------------------------------------------------
+
+#ifdef XML_CORE_API
+static __FAR_DATA SvXMLTokenMapEntry aBodyElemTokenMap[] =
+{
+ { XML_NAMESPACE_TEXT, sXML_p, XML_TOK_SW_P },
+ { XML_NAMESPACE_TEXT, sXML_h, XML_TOK_SW_H },
+ { XML_NAMESPACE_TEXT, sXML_ordered_list, XML_TOK_SW_ORDERED_LIST },
+ { XML_NAMESPACE_TEXT, sXML_unordered_list, XML_TOK_SW_UNORDERED_LIST },
+ { XML_NAMESPACE_TABLE,sXML_table, XML_TOK_TABLE_TABLE },
+ { XML_NAMESPACE_TABLE,sXML_sub_table, XML_TOK_TABLE_SUBTABLE },
+ XML_TOKEN_MAP_END
+};
+#endif
+
+class SwXMLBodyContext_Impl : public SvXMLImportContext
+{
+#ifdef XML_CORE_API
+ const SwXMLImport& GetSwImport() const
+ { return (const SwXMLImport&)GetImport(); }
+#endif
+ SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); }
+
+public:
+
+ SwXMLBodyContext_Impl( SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const OUString& rLName );
+ virtual ~SwXMLBodyContext_Impl();
+
+ virtual SvXMLImportContext *CreateChildContext(
+ sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList );
+};
+
+SwXMLBodyContext_Impl::SwXMLBodyContext_Impl( SwXMLImport& rImport,
+ sal_uInt16 nPrfx,
+ const OUString& rLName ) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+}
+
+SwXMLBodyContext_Impl::~SwXMLBodyContext_Impl()
+{
+}
+
+SvXMLImportContext *SwXMLBodyContext_Impl::CreateChildContext(
+ sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+#ifndef XML_CORE_API
+ pContext = GetSwImport().GetTextImport()->CreateTextChildContext(
+ GetImport(), nPrefix, rLocalName, xAttrList,
+ XML_TEXT_TYPE_BODY );
+#else
+ const SvXMLTokenMap& rTokenMap = GetSwImport().GetBodyElemTokenMap();
+ sal_Bool bOrdered = sal_False;
+ sal_Bool bHeading = sal_False;
+
+ switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ {
+ case XML_TOK_SW_H:
+ bHeading = sal_True;
+ case XML_TOK_SW_P:
+ pContext = new SwXMLParaContext( GetSwImport(),nPrefix, rLocalName,
+ xAttrList, bHeading );
+ break;
+ case XML_TOK_SW_ORDERED_LIST:
+ bOrdered = sal_True;
+ case XML_TOK_SW_UNORDERED_LIST:
+ pContext = new SwXMLListBlockContext( GetSwImport(),nPrefix, rLocalName,
+ xAttrList, bOrdered );
+ break;
+ case XML_TOK_TABLE_TABLE:
+ if( !GetSwImport().GetPaM().GetNode()->FindTableNode() )
+ pContext = new SwXMLTableContext( GetSwImport(),nPrefix, rLocalName,
+ xAttrList );
+ break;
+ }
+#endif
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
+
+ return pContext;
+}
+
+#ifdef XML_CORE_API
+const SvXMLTokenMap& SwXMLImport::GetBodyElemTokenMap()
+{
+ if( !pBodyElemTokenMap )
+ pBodyElemTokenMap = new SvXMLTokenMap( aBodyElemTokenMap );
+
+ return *pBodyElemTokenMap;
+}
+#endif
+
+SvXMLImportContext *SwXMLImport::CreateBodyContext(
+ const OUString& rLocalName )
+{
+ // styles nun einfuegen!
+ InsertStyles();
+
+ SvXMLImportContext *pContext = 0;
+
+ if( !IsStylesOnlyMode() )
+ pContext = new SwXMLBodyContext_Impl( *this, XML_NAMESPACE_OFFICE,
+ rLocalName );
+ else
+ pContext = new SvXMLImportContext( *this, XML_NAMESPACE_OFFICE,
+ rLocalName );
+
+ return pContext;
+}
+
+// ---------------------------------------------------------------------
+
+#ifdef XML_CORE_API
+class SwXMLHintEndPosList : public SwHintEndPosList
+{
+ OUString sQSpan;
+ SwXMLExport& rExport;
+
+public:
+
+ SwXMLHintEndPosList( SwXMLExport& rExp );
+ ~SwXMLHintEndPosList();
+
+ void Insert( const SfxPoolItem& rItem, xub_StrLen nStart, xub_StrLen nEnd );
+
+ sal_Bool HasStartingOrEndingHints( xub_StrLen nPos );
+
+ sal_Bool ExportStartingHints( xub_StrLen nPos );
+ sal_Bool ExportEndingHints( xub_StrLen nPos );
+};
+
+SwXMLHintEndPosList::SwXMLHintEndPosList( SwXMLExport& rExp ) :
+ rExport( rExp )
+{
+ OUString sLName( OUString::createFromAscii( sXML_span ) );
+ sQSpan = rExp.GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TEXT, sLName );
+}
+
+SwXMLHintEndPosList::~SwXMLHintEndPosList()
+{
+}
+
+void SwXMLHintEndPosList::Insert( const SfxPoolItem& rItem,
+ xub_StrLen nStart, xub_StrLen nEnd )
+{
+ // empty hints will be ignored
+ if( nStart != nEnd )
+ {
+ InsertHint( rItem, nStart, nEnd );
+ }
+}
+
+sal_Bool SwXMLHintEndPosList::ExportStartingHints( xub_StrLen nPos )
+{
+ sal_Bool bRet = sal_False;
+
+ // Hints in the start list are sorted ascending.
+
+ sal_uInt16 nCount = GetStartingCount();
+ for( sal_uInt16 i=0; i< nCount; i++ )
+ {
+ SwHintSttEndPos *pPos = GetStartingHint( i );
+ xub_StrLen nStart = pPos->GetStart();
+ if( nStart > nPos )
+ {
+ // This and all following hint will be started later
+ break;
+ }
+ else if( nStart == nPos )
+ {
+ // export hint's start
+// if( bIWSOutside )
+// rExport.GetDocHandler()->ignorableWhitespace( rExport.sWS );
+ const SfxPoolItem& rItem = pPos->GetItem();
+ if( (rItem.Which() >= RES_CHRATR_BEGIN &&
+ rItem.Which() < RES_CHRATR_END) ||
+ (rItem.Which() >= RES_UNKNOWNATR_BEGIN &&
+ rItem.Which() < RES_UNKNOWNATR_END) )
+ {
+ SfxItemSet aItemSet( rExport.GetDoc().GetAttrPool(),
+ RES_CHRATR_BEGIN, RES_CHRATR_END - 1,
+ RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END - 1,
+ 0 );
+ aItemSet.Put( rItem );
+ OUString sName( rExport.GetItemSetAutoStylePool().Find(
+ SFX_STYLE_FAMILY_CHAR, aItemSet ) );
+ ASSERT( sName.getLength(), "no automatic style found" );
+ if( sName.getLength() )
+ rExport.AddAttribute( XML_NAMESPACE_TEXT, sXML_style_name,
+ sName );
+ }
+ else
+ {
+ rExport.GetParaItemMapper().exportXML(
+ rExport.GetAttrList(), rItem,
+ rExport.GetTwipUnitConverter(),
+ rExport.GetNamespaceMap() );
+ }
+
+ rExport.GetDocHandler()->startElement( sQSpan,
+ rExport.GetXAttrList() );
+ rExport.ClearAttrList();
+
+ bRet = sal_True;
+ }
+ }
+
+ return bRet;
+}
+
+sal_Bool SwXMLHintEndPosList::ExportEndingHints( xub_StrLen nPos )
+{
+ sal_Bool bRet = sal_False;
+
+ // Hints in the end list are sorted ascending
+ sal_uInt16 i=0;
+ while( i < GetEndingCount() )
+ {
+ SwHintSttEndPos *pPos = GetEndingHint( i );
+ xub_StrLen nEnd = pPos->GetEnd();
+
+ if( STRING_LEN==nPos || nEnd == nPos )
+ {
+// if( bIgnWS )
+// rExport.GetDocHandler()->ignorableWhitespace( rExport.sWS );
+ rExport.GetDocHandler()->endElement( sQSpan );
+ _RemoveHint( i );
+
+ bRet = sal_True;
+ }
+ else if( nEnd > nPos )
+ {
+ // This and all hints that are following will be closed later
+ break;
+ }
+ else
+ {
+ // This hint should have been exported already!
+ ASSERT( nEnd >= nPos,
+ "SwXMLHintEndPosLst::OutEndAttrs: hint overseen" );
+ i++;
+ }
+ }
+
+ return bRet;
+}
+
+sal_Bool SwXMLHintEndPosList::HasStartingOrEndingHints( xub_StrLen nPos )
+{
+ sal_Bool bRet = sal_False;
+
+ // Hints in the start list are sorted ascending.
+
+ sal_uInt16 nCount = GetStartingCount();
+ for( sal_uInt16 i=0; i< nCount; i++ )
+ {
+ SwHintSttEndPos *pPos = GetStartingHint( i );
+ xub_StrLen nStart = pPos->GetStart();
+ if( nStart == nPos )
+ {
+ bRet = sal_True;
+ break;
+ }
+ else if( nStart > nPos )
+ {
+ // This and all following hint will be started later
+ break;
+ }
+ }
+
+ if( !bRet )
+ {
+ nCount = GetEndingCount();
+ for( i=0; i < nCount; i++ )
+ {
+ SwHintSttEndPos *pPos = GetEndingHint( i );
+ xub_StrLen nEnd = pPos->GetEnd();
+
+ if( nEnd == nPos )
+ {
+ bRet = sal_True;
+ break;
+ }
+ else if( nEnd > nPos )
+ {
+ // This and all hints that are following will be closed later
+ break;
+ }
+ }
+ }
+
+ return bRet;
+}
+
+void SwXMLExport::ExportTxtNode( const SwTxtNode& rTxtNd, xub_StrLen nStart,
+ xub_StrLen nEnd, sal_Bool bExportWholeNode )
+{
+ // <text:p ...>
+ CheckAttrList();
+
+ const SfxItemSet *pItemSet = rTxtNd.GetpSwAttrSet();
+
+ // text:style-name="..."
+ // If the text collection is a conditional style, the current style
+ // is written as style-name rather than the master style.
+ const SwFmtColl& rColl = rTxtNd.GetAnyFmtColl();
+ OUString sStyleName( rColl.GetName() );
+ if( pItemSet )
+ sStyleName = FindParaAutoStyle( sStyleName, *pItemSet );
+ else
+ sStyleName = SwXStyleFamilies::GetProgrammaticName( sStyleName,
+ SFX_STYLE_FAMILY_PARA );
+ ASSERT( sStyleName.getLength(), "auto para style not found" );
+ AddAttribute( XML_NAMESPACE_TEXT, sXML_style_name, sStyleName );
+
+ sal_uInt8 nOutlineLevel = ((const SwTxtFmtColl&)rColl).GetOutlineLevel();
+
+ // text:cond-style-name="..."
+ if( rTxtNd.GetCondFmtColl() )
+ {
+ // master style
+ const SwFmtColl *pColl = rTxtNd.GetFmtColl();
+ OUString sCondStyleName;
+ if( &rColl == pColl )
+ {
+ sCondStyleName = sStyleName;
+ }
+ else
+ {
+ sCondStyleName = pColl->GetName();
+ if( pItemSet )
+ sCondStyleName = FindParaAutoStyle( sCondStyleName, *pItemSet );
+ else
+ sCondStyleName = SwXStyleFamilies::GetProgrammaticName(
+ sCondStyleName,
+ SFX_STYLE_FAMILY_PARA );
+ ASSERT( sCondStyleName.getLength(), "auto para style not found" );
+ nOutlineLevel = ((const SwTxtFmtColl *)pColl)->GetOutlineLevel();
+ }
+ AddAttribute( XML_NAMESPACE_TEXT, sXML_cond_style_name,
+ sCondStyleName );
+ }
+
+ if( NO_NUMBERING != nOutlineLevel )
+ {
+ OUStringBuffer sTmp;
+ sTmp.append( GetRealLevel(nOutlineLevel)+1L );
+ AddAttribute( XML_NAMESPACE_TEXT, sXML_level,
+ sTmp.makeStringAndClear() );
+ }
+
+ {
+ const sal_Char *pElem =
+ NO_NUMBERING == nOutlineLevel ? sXML_p : sXML_h;
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT, pElem, sal_True,
+ sal_False );
+ xub_StrLen nOffset = 0;
+
+ const String& rText = rTxtNd.GetTxt();
+ xub_StrLen nPos = pCurPaM->GetPoint()->nContent.GetIndex();
+ xub_StrLen nEndPos = rText.Len();
+ if( pCurPaM->GetPoint()->nNode == pCurPaM->GetMark()->nNode )
+ nEndPos = pCurPaM->GetMark()->nContent.GetIndex();
+
+ const SwpHints *pHints = rTxtNd.GetpSwpHints();
+ sal_uInt16 nHintCount = pHints ? pHints->Count() : 0;
+ sal_uInt16 nHintPos = 0;
+ SwXMLHintEndPosList aHintLst( *this );
+
+ // export all hints before the current text position
+ const SwTxtAttr * pTxtAttr = 0;
+ if( nHintCount && nPos > *( pTxtAttr = (*pHints)[0] )->GetStart() )
+ {
+ do
+ {
+ nHintPos++;
+
+ if( pTxtAttr->GetEnd() )
+ {
+ DBG_ASSERT( RES_TXTATR_FIELD == pTxtAttr->Which(),
+ "ignore fields" );
+ xub_StrLen nHtEnd = *pTxtAttr->GetEnd(),
+ nHtStt = *pTxtAttr->GetStart();
+ if( (!bExportWholeNode && nHtEnd <= nPos) ||
+ nHtEnd == nHtStt )
+ continue;
+
+ // add hint to hint list
+ if( bExportWholeNode )
+ {
+ aHintLst.Insert( pTxtAttr->GetAttr(), nHtStt + nOffset,
+ nHtEnd + nOffset );
+ }
+ else
+ {
+ xub_StrLen nTmpStt = nHtStt < nPos ? nPos : nHtStt;
+ xub_StrLen nTmpEnd = nHtEnd < nEndPos ? nHtEnd : nEndPos;
+ aHintLst.Insert( pTxtAttr->GetAttr(), nTmpStt + nOffset,
+ nTmpEnd + nOffset );
+ }
+ }
+
+ }
+ while( nHintPos < nHintCount &&
+ nPos > *( pTxtAttr = (*pHints)[nHintPos ] )->GetStart() );
+ }
+
+ xub_StrLen nExpStartPos = nPos;
+ sal_Bool bCurrCharIsSpace = sal_False;
+ xub_StrLen nSpaceChars = 0;
+ for( ; nPos < nEndPos; nPos++ )
+ {
+ sal_Bool bExpCharAsText = sal_True;
+ const SwTxtAttr * pTxtAttrWOEnd = 0;
+ if( nHintPos < nHintCount && *pTxtAttr->GetStart() == nPos
+ && nPos != nEndPos )
+ {
+ do
+ {
+ if( pTxtAttr->GetEnd() )
+ {
+ if( *pTxtAttr->GetEnd() != nPos )
+ {
+ // insert hint into the hint list if its not
+ // empty
+ aHintLst.Insert( pTxtAttr->GetAttr(),
+ nPos + nOffset,
+ *pTxtAttr->GetEnd() + nOffset );
+ }
+ }
+ else
+ {
+ // hints without end must be exported after all
+ // other hints that start at this position
+ ASSERT( !pTxtAttrWOEnd,
+ "SwXMLExport::ExportTxtNode: There is a hint already" );
+ pTxtAttrWOEnd = pTxtAttr;
+ bExpCharAsText = sal_False; // ignore 0xff
+ }
+ }
+ while( ++nHintPos < nHintCount &&
+ nPos == *( pTxtAttr = (*pHints)[nHintPos] )->GetStart() );
+ }
+
+ // Some characters require some extra work ...
+ sal_Bool bExpCharAsElement = sal_False;
+ sal_Bool bPrevCharIsSpace = bCurrCharIsSpace;
+ bCurrCharIsSpace = sal_False;
+ if( bExpCharAsText )
+ {
+ switch( rText.GetChar(nPos) )
+ {
+ case 0x0009: // Tab
+ case 0x000A: // LF
+ // These characters are exported as text.
+ bExpCharAsElement = sal_True;
+ bExpCharAsText = sal_False;
+ break;
+ case 0x0020: // Blank
+ if( bPrevCharIsSpace )
+ {
+ // If the previous character is a space character,
+ // too, export a special space element.
+ bExpCharAsText = sal_False;
+ }
+ bCurrCharIsSpace = sal_True;
+ break;
+ }
+ }
+
+ // If the current character is not exported as text or if there
+ // are hints starting or ending before the current position,
+ // the text that has not been exported by now has to be exported
+ // now.
+ if( nPos > nExpStartPos &&
+ ( !bExpCharAsText ||
+ aHintLst.HasStartingOrEndingHints( nPos+nOffset ) ) )
+ {
+ ASSERT( 0==nSpaceChars,
+ "SwXMLExport::ExportTxtNode: pending spaces" );
+ String sExp( rText.Copy( nExpStartPos,
+ nPos - nExpStartPos ) );
+ GetDocHandler()->characters( sExp );
+ nExpStartPos = nPos;
+ }
+
+ // If there are spaces left that have not been exported and the
+ // current chracter is either not a space or there are some
+ // hints starting or ending, the pending spaces have to be
+ // exported now.
+ if( nSpaceChars > 0 &&
+ ( !bCurrCharIsSpace ||
+ aHintLst.HasStartingOrEndingHints( nPos+nOffset ) ) )
+ {
+ ASSERT( nExpStartPos == nPos,
+ "SwXMLExport::ExportTxtNode: pending characters" );
+
+ if( nSpaceChars > 1 )
+ {
+ OUStringBuffer sTmp;
+ sTmp.append( (sal_Int32)nSpaceChars );
+ AddAttribute( XML_NAMESPACE_TEXT, sXML_c,
+ sTmp.makeStringAndClear() );
+ }
+
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT,
+ sXML_s, sal_False, sal_False );
+
+ nSpaceChars = 0;
+ }
+
+ // Before the text or tag of the current element, ending and
+ // starting hints have to be exported.
+ aHintLst.ExportEndingHints( nPos + nOffset );
+ aHintLst.ExportStartingHints( nPos + nOffset );
+
+ // If the current character has to be exported as a special
+ // element, the elemnt will be exported now.
+ if( bExpCharAsElement )
+ {
+ switch( rText.GetChar(nPos) )
+ {
+ case 0x0009: // Tab
+ {
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT,
+ sXML_tab_stop, sal_False,
+ sal_False );
+ }
+ break;
+ case 0x000A: // LF
+ {
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT,
+ sXML_line_break, sal_False,
+ sal_False );
+ }
+ break;
+ }
+ }
+ if( pTxtAttrWOEnd )
+ {
+ // TODO: This is a hack as long as if there is no field
+ // export.
+ if( RES_TXTATR_FIELD == pTxtAttrWOEnd->Which() )
+ {
+ const SwField *pFld =
+ ((const SwFmtFld&)pTxtAttrWOEnd->GetAttr()).GetFld();
+ if( pFld )
+ {
+ GetDocHandler()->characters( pFld->Expand() );
+ }
+#ifdef XML_CORE_API
+// Reference < XTextField > xFld = new SwXTextField(
+// ((const SwFmtFld&)pTxtAttrWOEnd->GetAttr()),
+// &GetDoc() );
+//
+// GetTextFieldExport().ExportField( xFld );
+#endif
+ }
+ }
+
+ // If the current character is a space, and the previous one
+ // is a space, too, the number of pending spaces is incremented
+ // only.
+ if( bCurrCharIsSpace && bPrevCharIsSpace )
+ nSpaceChars++;
+
+ // If the currect character is not exported as text, the start
+ // position for text is the position behind the current position.
+ if( !bExpCharAsText )
+ {
+ ASSERT( nExpStartPos == nPos, "wrong export start pos" );
+ nExpStartPos = nPos+1;
+ }
+ }
+
+ // If there is some text left, it has to be exported now.
+ if( nExpStartPos < nEndPos )
+ {
+ ASSERT( 0==nSpaceChars,
+ "SwXMLExport::ExportTxtNode: pending spaces " );
+ String sExp( rText.Copy( nExpStartPos, nEndPos - nExpStartPos ) );
+ GetDocHandler()->characters( sExp );
+ }
+
+ // If there are some spaces left, they have to be exported now.
+ if( nSpaceChars > 0 )
+ {
+ if( nSpaceChars > 1 )
+ {
+ OUStringBuffer sTmp;
+ sTmp.append( (sal_Int32)nSpaceChars );
+ AddAttribute( XML_NAMESPACE_TEXT, sXML_c,
+ sTmp.makeStringAndClear() );
+ }
+
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT, sXML_s,
+ sal_False, sal_False );
+ }
+
+ // The same applies to all hints that are currently open.
+ aHintLst.ExportEndingHints( STRING_LEN );
+ }
+}
+
+void SwXMLExport::ExportSection( const SwSectionNode& rSectNd )
+{
+#if 0
+ const SwSection& rSection = rSectNd.GetSection();
+ const SwSectionFmt *pSectFmt = rSection.GetFmt();
+ ASSERT( pSectFmt, "SwXMLExport::ExportSection: section without a format?" );
+
+ // <text:section-desc ...>
+ CheckAttrList();
+
+ // text:name="..."
+ AddAttribute( XML_NAMESPACE_TEXT, sXML_name, S2WS(rSection.GetName()) );
+
+ // text:hidden="..."
+ if( rSection.IsHidden() )
+ {
+ AddAttributeASCII( XML_NAMESPACE_TEXT, sXML_hidden, sXML_true );
+
+ // text:condition="..."
+ if( rSection.IsCondHidden() )
+ {
+ AddAttribute( XML_NAMESPACE_TEXT, sXML_condition,
+ S2WS(rSection.GetCondition()) );
+ }
+ }
+
+ {
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT, sXML_section_desc,
+ sal_True, sal_True );
+// TODO
+// pSectionItemExport->Export( pSectFmt->GetAttrSet(), XML_ITEM_IGN_WS );
+ }
+
+ // <text:section ...>
+ CheckAttrList();
+
+ // text:name="..."
+ AddAttribute( XML_NAMESPACE_TEXT, sXML_section_name,
+ S2WS(rSection.GetName()) );
+#endif
+
+ SwNode *pStartNd = pDoc->GetNodes()[rSectNd.GetIndex() + 1];
+ SwNode *pEndNd = pDoc->GetNodes()[rSectNd.EndOfSectionIndex() - 1];
+
+ {
+#if 0
+ SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT, sXML_section,
+ sal_True, sal_True );
+#endif
+ SwXMLExpContext aContext( *this, *pStartNd, *pEndNd, 0, STRING_LEN );
+ ExportCurPaM();
+ }
+
+ pCurPaM->GetPoint()->nNode = *rSectNd.EndOfSectionNode();
+}
+#endif
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/xmltext.cxx,v 1.1.1.1 2000-09-18 17:15:00 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.48 2000/09/18 16:05:08 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.47 2000/09/18 11:58:03 mib
+ text frames/graphics import and export continued
+
+ Revision 1.46 2000/08/24 11:16:42 mib
+ text import continued
+
+ Revision 1.45 2000/08/10 10:22:16 mib
+ #74404#: Adeptions to new XSL/XLink working draft
+
+ Revision 1.44 2000/08/04 11:39:54 dvo
+ - field declarations import removed from CORE API import
+
+ Revision 1.43 2000/08/03 18:03:58 dvo
+ - variable field declarations import added
+
+ Revision 1.42 2000/07/31 09:42:35 mib
+ text export continued
+
+ Revision 1.41 2000/07/24 10:19:02 dvo
+ - textfield export for XML_CORE_API
+
+ Revision 1.40 2000/07/21 12:55:15 mib
+ text import/export using StarOffice API
+
+ Revision 1.39 2000/07/11 11:17:59 dvo
+ text field export added
+
+ Revision 1.38 2000/06/08 09:45:55 aw
+ changed to use functionality from xmloff project now
+
+ Revision 1.37 2000/05/24 12:08:11 mib
+ unicode bug fix
+
+ Revision 1.36 2000/05/03 12:08:05 mib
+ unicode
+
+ Revision 1.35 2000/03/13 14:33:45 mib
+ UNO3
+
+ Revision 1.34 2000/03/06 10:46:11 mib
+ #72585#: toInt32
+
+ Revision 1.33 2000/02/21 12:51:07 mib
+ #70271#: Export of section element removed
+
+ Revision 1.32 2000/02/17 14:40:30 mib
+ #70271#: XML table import
+
+ Revision 1.30 2000/01/27 08:59:02 mib
+ #70271#: outline numbering
+
+ Revision 1.29 2000/01/20 10:03:16 mib
+ #70271#: Lists reworked
+
+ Revision 1.28 2000/01/12 15:00:23 mib
+ #70271#: lists
+
+ Revision 1.27 2000/01/06 15:08:28 mib
+ #70271#:separation of text/layout, cond. styles, adaptions to wd-xlink-19991229
+
+ Revision 1.26 1999/12/14 09:47:51 mib
+ #70271#: Export field content as text
+
+ Revision 1.25 1999/12/13 08:29:07 mib
+ #70271#: Support for element items added, background and brush item
+
+ Revision 1.24 1999/12/08 10:44:21 cl
+ #70271# added first support for importing tab-stops
+
+ Revision 1.23 1999/12/06 11:41:33 mib
+ #70258#: Container item for unkown attributes
+
+ Revision 1.22 1999/11/26 11:11:49 mib
+ export-flags, loading of styles only
+
+ Revision 1.21 1999/11/19 15:27:59 mib
+ Opt: using C++ arrays instead of string buffers
+
+ Revision 1.20 1999/11/12 11:43:03 mib
+ using item mapper, part iii
+
+ Revision 1.19 1999/11/10 15:08:09 mib
+ Import now uses XMLItemMapper
+
+ Revision 1.18 1999/11/09 15:40:08 mib
+ Using XMLItemMapper for export
+
+ Revision 1.17 1999/11/03 11:13:50 mib
+ list style import continued
+
+ Revision 1.16 1999/11/01 11:38:50 mib
+ List style import
+
+ Revision 1.15 1999/10/26 13:33:50 mib
+ list styles continued
+
+ Revision 1.14 1999/10/25 10:41:48 mib
+ Using new OUString ASCII methods
+
+ Revision 1.13 1999/10/15 12:38:01 mib
+ XML_TOK_SW_LINE_FEED -> XML_TOK_SW_LINE_BREAK
+
+ Revision 1.12 1999/10/08 11:47:56 mib
+ moved some file to SVTOOLS/SVX
+
+ Revision 1.11 1999/10/06 06:48:06 mib
+ WS stripping
+
+ Revision 1.10 1999/10/01 14:12:02 mib
+ tab, line break and space
+
+ Revision 1.9 1999/09/28 10:47:05 mib
+ memory leak
+
+ Revision 1.8 1999/09/28 08:31:47 mib
+ char fmts, hints
+
+ Revision 1.7 1999/09/23 11:54:28 mib
+ i18n, token maps and hard paragraph attributes
+
+ Revision 1.6 1999/09/22 11:57:46 mib
+ string -> wstring
+
+ Revision 1.5 1999/08/18 15:03:38 MIB
+ Style import
+
+
+ Rev 1.4 18 Aug 1999 17:03:38 MIB
+ Style import
+
+ Rev 1.3 17 Aug 1999 16:29:24 MIB
+ import of text nodes started
+
+ Rev 1.2 13 Aug 1999 16:19:42 MIB
+ styles and sections
+
+ Rev 1.1 12 Aug 1999 18:06:22 MIB
+ Export ofSvxFontItem, SvxFontHeightItem and SvxLRSpaceItem
+
+ Rev 1.0 12 Aug 1999 12:29:28 MIB
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/filter/xml/xmltexte.hxx b/sw/source/filter/xml/xmltexte.hxx
new file mode 100644
index 000000000000..0c22b3eaaa70
--- /dev/null
+++ b/sw/source/filter/xml/xmltexte.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmltexte.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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 _XMLTEXTE_HXX
+#define _XMLTEXTE_HXX
+
+#ifndef XML_CORE_API
+
+#ifndef _XMLOFF_TEXTPARAE_HXX_
+#include <xmloff/txtparae.hxx>
+#endif
+
+class SwXMLExport;
+class SvXMLAutoStylePoolP;
+
+namespace com { namespace sun { namespace star { namespace style {
+ class XStyle; } } } }
+
+class SwXMLTextParagraphExport : public XMLTextParagraphExport
+{
+ const ::rtl::OUString sTextTable;
+
+protected:
+ virtual void exportStyleContent(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::style::XStyle > & rStyle );
+
+ virtual void exportTable(
+ const ::com::sun::star::uno::Reference <
+ ::com::sun::star::text::XTextContent > & rTextContent,
+ sal_Bool bAutoStyles );
+
+public:
+ SwXMLTextParagraphExport(
+ SwXMLExport& rExp,
+ SvXMLAutoStylePoolP& rAutoStylePool );
+ ~SwXMLTextParagraphExport();
+};
+#endif
+
+
+#endif // _XMLTEXTE_HXX
diff --git a/sw/source/filter/xml/xmltexti.hxx b/sw/source/filter/xml/xmltexti.hxx
new file mode 100644
index 000000000000..f11faf0e4a77
--- /dev/null
+++ b/sw/source/filter/xml/xmltexti.hxx
@@ -0,0 +1,125 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmltexti.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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 _XMLTEXTI_HXX
+#define _XMLTEXTI_HXX
+
+#ifndef _RTL_USTRING_HXX
+#include <rtl/ustring.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLTKMAP_HXX
+#include <xmloff/xmltkmap.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+
+#ifdef XML_CORE_API
+class SfxItemSet;
+class SwXMLHints_Impl;
+class SwXMLImport;
+namespace com { namespace sun { namespace star { namespace xml {
+ namespace sax { class XAttributeList; } } } } }
+
+
+enum SwXMLBodyElemTokens
+{
+ XML_TOK_SW_P,
+ XML_TOK_SW_H,
+ XML_TOK_SW_ORDERED_LIST,
+ XML_TOK_SW_UNORDERED_LIST,
+ XML_TOK_TABLE_TABLE,
+ XML_TOK_TABLE_SUBTABLE,
+ XML_TOK_SW_ELEM_END=XML_TOK_UNKNOWN
+};
+
+class SwXMLParaContext : public SvXMLImportContext
+{
+ SfxItemSet *pItemSet;
+ SwXMLHints_Impl *pHints;
+ sal_Bool bIgnoreLeadingSpace;
+ sal_Bool bHeading;
+
+public:
+
+ SwXMLParaContext( SwXMLImport& rImport, sal_uInt16 nPrfx,
+ const ::rtl::OUString& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList > & xAttrList,
+ sal_Bool bHeading );
+
+ virtual ~SwXMLParaContext();
+
+ virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
+ const ::rtl::OUString& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList > & xAttrList );
+
+ virtual void Characters( const ::rtl::OUString& rChars );
+
+ SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); }
+};
+#endif
+
+
+#endif // _XMLTEXTI_HXX
diff --git a/sw/source/ui/app/app.src b/sw/source/ui/app/app.src
new file mode 100644
index 000000000000..4aab9297f1d4
--- /dev/null
+++ b/sw/source/ui/app/app.src
@@ -0,0 +1,2966 @@
+/*************************************************************************
+ *
+ * $RCSfile: app.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 <svtools/style.hrc>
+#include <sfx2/sfx.hrc>
+#include <svx/dialogs.hrc>
+#include <svx/globlmn.hrc>
+#include <basctl/basicide.hrc>
+#include <offmgr/sba.hrc>
+#include "cmdid.h"
+#include "globals.hrc"
+#include "app.hrc"
+#include "statstr.hrc"
+#include "swstyle.h"
+#include "comcore.hrc"
+#include "shells.hrc"
+
+
+#define IMAGE_STDBTN_COLOR Color { Red = 0xC000; Green = 0xC000; Blue = 0xC000; }
+
+String RID_SW_NAME
+{
+ TEXT = "StarWriter" ;
+};
+
+String STR_PRINT_MERGE_MACRO
+{
+ TEXT = "Serienbriefe drucken" ;
+ TEXT [ English ] = "Print merge" ;
+ Text [ english_us ] = "Print form letters" ;
+ Text [ italian ] = "Stampa in serie" ;
+ Text [ spanish ] = "Imprimir cartas en serie" ;
+ Text [ french ] = "Imprimer un mailing" ;
+ Text [ dutch ] = "Standaardbrieven afdrukken" ;
+ Text [ swedish ] = "Skriv ut standardbrev" ;
+ Text [ danish ] = "Udskriv flettede breve" ;
+ Text [ portuguese_brazilian ] = "Serienbriefe drucken" ;
+ Text [ portuguese ] = "Imprimir cartas em série" ;
+ Text[ chinese_simplified ] = "´òÓ¡ÓʼþºÏ²¢";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Ïå÷àòü ñëèÿíèÿ";
+ Text[ polish ] = "Drukuj listy seryjne";
+ Text[ japanese ] = "·‚µž‚݈óü";
+ Text[ chinese_traditional ] = "¦X¨Ö¦C¦L";
+ Text[ arabic ] = "ØÈÇÚÉ ÎØÇÈÇÊ ãÓáÓáÉ";
+ Text[ dutch ] = "Standaardbrieven afdrukken";
+ Text[ chinese_simplified ] = "´òÓ¡ÓʼþºÏ²¢";
+ Text[ greek ] = "Åêôýðùóç ïìáäéêÞò åðéóôïëÞò";
+ Text[ korean ] = "¿¬¼ÓÆíÁö Àμâ";
+ Text[ turkish ] = "Standart mektup yazdýr";
+};
+
+String STR_PAGE_COUNT_MACRO
+{
+ TEXT = "Änderung der Seitenanzahl" ;
+ TEXT [ English ] = "Page count changed" ;
+ Text [ english_us ] = "Changing the page count" ;
+ Text [ portuguese_brazilian ] = "Änderung der Seitenanzahl" ;
+ Text [ swedish ] = "Ändring av sidantal" ;
+ Text [ danish ] = "Modificer sideantal" ;
+ Text [ italian ] = "Modifica del numero delle pagine" ;
+ Text [ spanish ] = "Modificación del número de páginas" ;
+ Text [ french ] = "Modification du nombre de pages" ;
+ Text [ dutch ] = "Wijziging van het aantal pagina's" ;
+ Text [ portuguese ] = "Modificar número de páginas" ;
+ Text[ chinese_simplified ] = "¸ü¸ÄÒ³Êý";
+ Text[ russian ] = "Èçìåíåíèå êîëè÷åñòâà ñòðàíèö";
+ Text[ polish ] = "Zmiana liczby stron";
+ Text[ japanese ] = "Íß°¼Þ”‚Ì•ÏX";
+ Text[ chinese_traditional ] = "Åܧ󭶼Æ";
+ Text[ arabic ] = "ÊÛííÑ ÚÏÏ ÇáÕÝÍÇÊ";
+ Text[ dutch ] = "Wijziging van het aantal pagina's";
+ Text[ chinese_simplified ] = "¸ü¸ÄÒ³Êý";
+ Text[ greek ] = "Äéüñèùóç ðëÞèïõò óåëéäþí";
+ Text[ korean ] = "ÆäÀÌÁö Ä«¿îÆ® º¯°æ";
+ Text[ turkish ] = "Sayfa sayýsýnýn deðiþtirilmesi";
+ Text[ language_user1 ] = " ";
+};
+
+ // Image-Liste ----------------------------------------------------------------
+ //Dafuer gibt es jetzt eine Vorsortierung:
+ //1. SID_
+ //2. RID_
+ //3. FN_
+ //4. Ids, die noch aus der Default-Liste entfernt werden muessen
+
+#define IMAGELIST_AND_COUNT \
+ IdList = { \
+ SID_SELECTALL ;\
+ SID_NEWDOCDIRECT ;\
+ SID_DOCINFO ;\
+ SID_CLOSEDOCS ;\
+ SID_MAIL_SENDDOC ;\
+ SID_PRINTPREVIEW ;\
+ \
+ SID_INSERT_GRAPHIC ;\
+ SID_INSERT_DRAW ;\
+ SID_DOCTEMPLATE ;\
+ SID_AUTOFORMAT ;\
+ SID_AUTOSPELL_CHECK ;\
+ SID_EXTENDEDHELP ;\
+ SID_ATTR_CHAR_FONT ;\
+ SID_ATTR_CHAR_FONTHEIGHT ;\
+ SID_ATTR_CHAR_STRIKEOUT ;\
+ SID_ATTR_CHAR_SHADOWED ;\
+ SID_OBJECT_HELL ;\
+ SID_OBJECT_HEAVEN ;\
+ SID_ATTR_FILL_STYLE ;\
+ SID_ATTR_LINE_STYLE ;\
+ SID_ATTR_LINE_WIDTH ;\
+ SID_ATTR_LINE_COLOR ;\
+ SID_ATTR_LINEEND_STYLE ;\
+ SID_BACKGROUND_COLOR ;\
+ SID_FRAME_LINESTYLE ;\
+ SID_FRAME_LINECOLOR ;\
+ SID_SIM_START ;\
+ SID_ATTR_ZOOM ;\
+ SID_WIN_FULLSCREEN ;\
+ SID_FRAME_TO_TOP ;\
+ SID_FRAME_TO_BOTTOM ;\
+ SID_SBA_ADDRPI ;\
+ SID_FONTWORK ;\
+ \
+ SID_ATTR_TRANSFORM ;\
+ SID_ATTR_CHAR_COLOR2;\
+ SID_ATTR_CHAR_COLOR_BACKGROUND ;\
+ \
+ FN_NUMBER_BULLETS ;\
+ FN_NUM_BULLET_DOWN ;\
+ FN_NUM_BULLET_UP ;\
+ FN_NUM_BULLET_MOVEUP ;\
+ FN_NUM_BULLET_MOVEDOWN ;\
+ FN_NUM_BULLET_NONUM ;\
+ FN_NUM_BULLET_OFF ;\
+ FN_NUM_BULLET_OUTLINE_DOWN ;\
+ FN_NUM_BULLET_OUTLINE_UP ;\
+ FN_NUM_BULLET_OUTLINE_MOVEUP ;\
+ FN_NUM_BULLET_OUTLINE_MOVEDOWN ;\
+ FN_NUMBER_NEWSTART ;\
+ FN_INSERT_FIELD ;\
+ FN_VIEW_FIELDS ;\
+ FN_VIEW_FIELDNAME ;\
+ FN_VIEW_GRAPHIC ;\
+ FN_VIEW_MARKS ;\
+ FN_VIEW_META_CHARS ;\
+ FN_INSERT_TABLE ;\
+ FN_INSERT_FRAME_INTERACT ;\
+ FN_INSERT_FRAME_INTERACT_NOCOL ;\
+ FN_FRAME_CHAIN ;\
+ FN_FRAME_UNCHAIN ;\
+ FN_INSERT_FRAME ;\
+ FN_TOOL_ANKER ;\
+ FN_SET_SUPER_SCRIPT ;\
+ FN_SET_SUB_SCRIPT ;\
+ FN_UNDERLINE_DOUBLE ;\
+ SID_ATTR_PARA_ADJUST_BLOCK ;\
+ FN_FORMAT_FRAME_DLG ;\
+ FN_FRAME_NOWRAP ;\
+ FN_FRAME_WRAP ;\
+ FN_FRAME_WRAPTHRU ;\
+ FN_FRAME_WRAP_IDEAL ;\
+ FN_FRAME_WRAP_LEFT ;\
+ FN_FRAME_WRAP_RIGHT ;\
+ FN_FRAME_WRAP_CONTOUR ;\
+ SID_CONTOUR_DLG ;\
+ FN_FRAME_ALIGN_HORZ_LEFT ;\
+ FN_FRAME_ALIGN_HORZ_RIGHT ;\
+ FN_FRAME_ALIGN_HORZ_CENTER ;\
+ FN_FRAME_ALIGN_VERT_TOP ;\
+ FN_FRAME_ALIGN_VERT_BOTTOM ;\
+ FN_FRAME_ALIGN_VERT_CENTER ;\
+ FN_TABLE_INSERT_ROW ;\
+ FN_TABLE_INSERT_COL ;\
+ FN_TABLE_DELETE_ROW ;\
+ FN_TABLE_DELETE_COL ;\
+ FN_TABLE_SPLIT_CELLS ;\
+ FN_TABLE_MERGE_CELLS ;\
+ FN_TABLE_SELECT_ROW ;\
+ FN_TABLE_SELECT_COL ;\
+ FN_TABLE_SELECT_ALL ;\
+ FN_OPTIMIZE_TABLE ;\
+ FN_TABLE_OPTIMAL_HEIGHT;\
+ FN_TABLE_BALANCE_ROWS ;\
+ FN_TABLE_ADJUST_CELLS ;\
+ FN_TABLE_BALANCE_CELLS ;\
+ FN_PAGE_STYLE_SET_COLS ;\
+ FN_FLIP_HORZ_GRAFIC ;\
+ FN_FLIP_VERT_GRAFIC ;\
+ FN_SPELLING_DLG ;\
+ FN_START_TABLE ;\
+ FN_END_TABLE ;\
+ FN_FORMULA_CALC ;\
+ FN_FORMULA_CANCEL ;\
+ FN_FORMULA_APPLY ;\
+ SID_NAVIGATOR ;\
+ FN_PAGEUP ;\
+ FN_PAGEDOWN ;\
+ FN_START_OF_DOCUMENT ;\
+ FN_END_OF_DOCUMENT ;\
+ FN_SHOW_TWO_PAGES ;\
+ FN_SHOW_FOUR_PAGES ;\
+ FN_FORMAT_PAGE_DLG ;\
+ FN_PRINT_PAGEPREVIEW ;\
+ FN_FAX ;\
+ FN_QRY_MERGE ;\
+ FN_EDIT_FORMULA; \
+ FN_INSERT_CTRL ;\
+ FN_INSERT_OBJ_CTRL ;\
+ FN_INSERT_FIELD_CTRL ;\
+ SID_SOURCEVIEW;\
+ FN_TABLE_VERT_NONE;\
+ FN_TABLE_VERT_CENTER;\
+ FN_TABLE_VERT_BOTTOM;\
+ FN_TABLE_MODE_FIX ;\
+ FN_TABLE_MODE_FIX_PROP ;\
+ FN_TABLE_MODE_VARIABLE ;\
+ FN_PRINT_LAYOUT ;\
+ FN_INSERT_HEADER;\
+ FN_INSERT_FOOTER;\
+ FN_TABLE_AUTOSUM;\
+ FN_PREVIEW_PRINT_OPTIONS;\
+ FN_PREVIEW_ZOOM;\
+ \
+ SID_STYLE_APPLY ;\
+ SID_STYLE_NEW_BY_EXAMPLE ;\
+ SID_STYLE_UPDATE_BY_EXAMPLE ;\
+ SID_ATTR_BORDER ;\
+ SID_PLAYMACRO ;\
+ SID_CHAR_DLG ;\
+ SID_PARA_DLG ;\
+ SID_INSERT_PREVIEW ; \
+ SID_INSERT_SPINBUTTON ;\
+ SID_INSERT_HSCROLLBAR ;\
+ SID_INSERT_VSCROLLBAR ;\
+ FN_QRY ;\
+ FN_INSERT_OBJECT_DLG ;\
+ FN_INSERT_SYMBOL ;\
+ FN_POSTIT ;\
+ FN_GROW_FONT_SIZE ;\
+ FN_SHRINK_FONT_SIZE ;\
+ FN_THESAURUS_DLG ;\
+ FN_HYPHENATE_OPT_DLG ;\
+ FN_GLOSSARY_DLG ;\
+ SID_INSERT_URLBUTTON ;\
+ \
+ FN_INSERT_FLD_DATE ;\
+ FN_INSERT_FLD_TIME ;\
+ FN_INSERT_FLD_PGNUMBER;\
+ FN_INSERT_FLD_PGCOUNT ;\
+ FN_INSERT_FLD_TOPIC ;\
+ FN_INSERT_FLD_TITLE ;\
+ FN_INSERT_FLD_AUTHOR ;\
+ FN_INSERT_SIM; \
+ FN_INSERT_SMA; \
+ FN_INSERT_FOOTNOTE; \
+ FN_INSERT_ENDNOTE; \
+ FN_INSERT_IDX_ENTRY_DLG;\
+ FN_INSERT_BOOKMARK; \
+ SID_SEARCH_DLG; \
+ SID_INSERTDOC; \
+ SID_INSERT_FLOATINGFRAME;\
+ FN_SHADOWCURSOR;\
+ FN_INSERT_CAPTION;\
+ FN_INSERT_REF_FIELD;\
+ FN_INSERT_COLUMN_SECTION;\
+ \
+ \
+ }; \
+ IdCount = { \
+ 172; \
+ };
+
+
+
+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" ;
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IMAGELIST_AND_COUNT
+};
+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" ;
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IMAGELIST_AND_COUNT
+};
+
+ // Vorlagen
+SfxStyleFamilies DLG_STYLE_DESIGNER
+{
+ StyleFamilyList =
+ {
+ SfxStyleFamilyItem
+ {
+ StyleImage = Image
+ {
+ ImageBitmap = Bitmap { File = "catpar.bmp" ; };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ };
+ Text = "Absatzvorlagen" ;
+ Text [ ENGLISH ] = "Paragraph Styles" ;
+ Text [ norwegian ] = "Avsnittsmaler" ;
+ Text [ italian ] = "Modelli di paragrafo" ;
+ Text [ portuguese_brazilian ] = "Estilos de parágrafo" ;
+ Text [ portuguese ] = "Estilos de parágrafo" ;
+ Text [ finnish ] = "Kappaletyylit" ;
+ Text [ danish ] = "Afsnitstypografier" ;
+ Text [ french ] = "Styles de paragraphe" ;
+ Text [ swedish ] = "Styckeformatmallar" ;
+ Text [ dutch ] = "Alinea-opmaakprofielen" ;
+ Text [ spanish ] = "Estilos de párrafo" ;
+ Text [ english_us ] = "Paragraph Styles" ;
+ StyleFamily = SFX_STYLE_FAMILY_PARA ;
+ FilterList =
+ {
+ < "Automatisch" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Alle Vorlagen" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Textvorlagen" ; SWSTYLEBIT_TEXT ; > ;
+ < "Kapitelvorlagen" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Listenvorlagen" ; SWSTYLEBIT_LIST ; > ;
+ < "Verzeichnisvorlagen" ; SWSTYLEBIT_IDX ; > ;
+ < "Vorlagen Sonderbereiche" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML Vorlagen" ; SWSTYLEBIT_HTML ; > ;
+ < "Bedingte Vorlagen" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ FilterList [ ENGLISH ] =
+ {
+ < "Automatisch" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Alle Vorlagen" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Textvorlagen" ; SWSTYLEBIT_TEXT ; > ;
+ < "Kapitelvorlagen" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Listenvorlagen" ; SWSTYLEBIT_LIST ; > ;
+ < "Verzeichnisvorlagen" ; SWSTYLEBIT_IDX ; > ;
+ < "Vorlagen Sonderbereiche" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML Vorlagen" ; SWSTYLEBIT_HTML ; > ;
+ < "Bedingte Vorlagen" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ filterlist [ english_us ] =
+ {
+ < "Automatic" ; SFXSTYLEBIT_AUTO ; > ;
+ < "All Styles" ; SFXSTYLEBIT_ALL ; > ;
+ < "Applied Styles" ; SFXSTYLEBIT_USED ; > ;
+ < "Custom Styles" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Text Styles" ; SWSTYLEBIT_TEXT ; > ;
+ < "Chapter Styles" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "List Styles" ; SWSTYLEBIT_LIST ; > ;
+ < "Index Styles" ; SWSTYLEBIT_IDX ; > ;
+ < "Special Styles" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML Styles" ; SWSTYLEBIT_HTML ; > ;
+ < "Conditional Styles" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ filterlist [ portuguese_brazilian ] =
+ {
+ < "Automatisch" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Alle Vorlagen" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Textvorlagen" ; SWSTYLEBIT_TEXT ; > ;
+ < "Kapitelvorlagen" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Listenvorlagen" ; SWSTYLEBIT_LIST ; > ;
+ < "Verzeichnisvorlagen" ; SWSTYLEBIT_IDX ; > ;
+ < "Vorlagen Sonderbereiche" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML Vorlagen" ; SWSTYLEBIT_HTML ; > ;
+ < "Bedingte Vorlagen" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ filterlist [ swedish ] =
+ {
+ < "Automatiskt" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Alla formatmallar" ; SFXSTYLEBIT_ALL ; > ;
+ < "Använda formatmallar" ; SFXSTYLEBIT_USED ; > ;
+ < "Användardefinierade formatmallar" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Textformatmallar" ; SWSTYLEBIT_TEXT ; > ;
+ < "Kapitelformatmallar" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Listformatmallar" ; SWSTYLEBIT_LIST ; > ;
+ < "Förteckningsformatmallar" ; SWSTYLEBIT_IDX ; > ;
+ < "Formatmallar specialområde" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML formatmallar" ; SWSTYLEBIT_HTML ; > ;
+ < "Villkorliga formatmallar" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ filterlist [ danish ] =
+ {
+ < "Automatisk" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Alle typografier" ; SFXSTYLEBIT_ALL ; > ;
+ < "Anvendte typografier" ; SFXSTYLEBIT_USED ; > ;
+ < "Brugerdefinerede typografier" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Teksttypografier" ; SWSTYLEBIT_TEXT ; > ;
+ < "Kapiteltypografier" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Listetypografier" ; SWSTYLEBIT_LIST ; > ;
+ < "Indekstypografier" ; SWSTYLEBIT_IDX ; > ;
+ < "Typografi særområder" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML-typografier" ; SWSTYLEBIT_HTML ; > ;
+ < "Betingede typografier" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ filterlist [ italian ] =
+ {
+ < "Automatico" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Tutti i modelli" ; SFXSTYLEBIT_ALL ; > ;
+ < "Modelli usati" ; SFXSTYLEBIT_USED ; > ;
+ < "Modelli utente" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Modelli di testo" ; SWSTYLEBIT_TEXT ; > ;
+ < "Modelli di capitolo" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Modelli di elenchi" ; SWSTYLEBIT_LIST ; > ;
+ < "Modelli di indice" ; SWSTYLEBIT_IDX ; > ;
+ < "Modelli aree speciali" ; SWSTYLEBIT_EXTRA ; > ;
+ < "Modelli HTML" ; SWSTYLEBIT_HTML ; > ;
+ < "Modelli condizionati" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ filterlist [ spanish ] =
+ {
+ < "Automático" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Todos los estilos" ; SFXSTYLEBIT_ALL ; > ;
+ < "Estilos aplicados" ; SFXSTYLEBIT_USED ; > ;
+ < "Estilos del usuario" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Estilos de texto" ; SWSTYLEBIT_TEXT ; > ;
+ < "Estilos de capítulos" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Estilos de listas" ; SWSTYLEBIT_LIST ; > ;
+ < "Estilos de índices" ; SWSTYLEBIT_IDX ; > ;
+ < "Estilos de áreas especiales" ; SWSTYLEBIT_EXTRA ; > ;
+ < "Estilos HTML" ; SWSTYLEBIT_HTML ; > ;
+ < "Estilos condicionados" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ filterlist [ french ] =
+ {
+ < "Automatiquement" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Tous les styles" ; SFXSTYLEBIT_ALL ; > ;
+ < "Styles utilisés" ; SFXSTYLEBIT_USED ; > ;
+ < "Styles personnalisés" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Styles de texte" ; SWSTYLEBIT_TEXT ; > ;
+ < "Styles de chapitre" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Styles de liste" ; SWSTYLEBIT_LIST ; > ;
+ < "Styles d'index/de tables des matières" ; SWSTYLEBIT_IDX ; > ;
+ < "Styles pour zones spéciales" ; SWSTYLEBIT_EXTRA ; > ;
+ < "Styles HTML" ; SWSTYLEBIT_HTML ; > ;
+ < "Styles conditionnels" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ filterlist [ dutch ] =
+ {
+ < "Automatisch" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Alle opmaakprofielen" ; SFXSTYLEBIT_ALL ; > ;
+ < "Gebruikte opmaakprofielen" ; SFXSTYLEBIT_USED ; > ;
+ < "Eigen opmaakprofielen" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Tekstopmaakprofielen" ; SWSTYLEBIT_TEXT ; > ;
+ < "Opmaakprofielen voor hoofdtukken" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Lijstopmaakprofielen" ; SWSTYLEBIT_LIST ; > ;
+ < "Indexopmaakprofielen" ; SWSTYLEBIT_IDX ; > ;
+ < "Opmaakprof. speciale bereiken" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML-opmaakprofielen" ; SWSTYLEBIT_HTML ; > ;
+ < "Conditionele opmaakprofielen" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ filterlist [ portuguese ] =
+ {
+ < "Automático" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Estilos todos" ; SFXSTYLEBIT_ALL ; > ;
+ < "Estilos usados" ; SFXSTYLEBIT_USED ; > ;
+ < "Estilos personalizados" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Estilos de texto" ; SWSTYLEBIT_TEXT ; > ;
+ < "Estilos de capítulos" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Estilos de listas" ; SWSTYLEBIT_LIST ; > ;
+ < "Estilos de índices" ; SWSTYLEBIT_IDX ; > ;
+ < "Estilos de áreas especiais" ; SWSTYLEBIT_EXTRA ; > ;
+ < "Estilos HTML" ; SWSTYLEBIT_HTML ; > ;
+ < "Estilos condicionados" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ Text[ chinese_simplified ] = "¶ÎÂäÑùʽ";
+ FilterList [ chinese_simplified ] =
+ {
+ < "×Ô¶¯" ; SFXSTYLEBIT_AUTO ; > ;
+ < "È«²¿Ñùʽ" ; SFXSTYLEBIT_ALL ; > ;
+ < "ʹÓõÄÑùʽ" ; SFXSTYLEBIT_USED ; > ;
+ < "×Ô¶¨Ñùʽ" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "ÎÄ×ÖÑùʽ" ; SWSTYLEBIT_TEXT ; > ;
+ < "ÕÂÑùʽ" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Áе¥Ñùʽ" ; SWSTYLEBIT_LIST ; > ;
+ < "Ë÷ÒýÑùʽ" ; SWSTYLEBIT_IDX ; > ;
+ < "ÑùʽÌØÊâÇøÓò" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML Ñùʽ" ; SWSTYLEBIT_HTML ; > ;
+ < "ÓÐÌõ¼þµÄÑùʽ" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ FilterList [ language_user1 ] =
+ {
+ < " " ; SFXSTYLEBIT_AUTO ; > ;
+ < " " ; SFXSTYLEBIT_ALL ; > ;
+ < " " ; SFXSTYLEBIT_USED ; > ;
+ < " " ; SFXSTYLEBIT_USERDEF ; > ;
+ < " " ; SWSTYLEBIT_TEXT ; > ;
+ < " " ; SWSTYLEBIT_CHAPTER ; > ;
+ < " " ; SWSTYLEBIT_LIST ; > ;
+ < " " ; SWSTYLEBIT_IDX ; > ;
+ < " " ; SWSTYLEBIT_EXTRA ; > ;
+ < " " ; SWSTYLEBIT_HTML ; > ;
+ < " " ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ FilterList [ language_user1 ] =
+ {
+ < " " ; SFXSTYLEBIT_AUTO ; > ;
+ < " " ; SFXSTYLEBIT_ALL ; > ;
+ < " " ; SFXSTYLEBIT_USED ; > ;
+ < " " ; SFXSTYLEBIT_USERDEF ; > ;
+ < " " ; SWSTYLEBIT_TEXT ; > ;
+ < " " ; SWSTYLEBIT_CHAPTER ; > ;
+ < " " ; SWSTYLEBIT_LIST ; > ;
+ < " " ; SWSTYLEBIT_IDX ; > ;
+ < " " ; SWSTYLEBIT_EXTRA ; > ;
+ < " " ; SWSTYLEBIT_HTML ; > ;
+ < " " ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Ñòèëè àáçàöà";
+ Text[ polish ] = "Style akapitu";
+ Text[ japanese ] = "’i—Ž½À²Ù";
+ FilterList [ russian ] =
+ {
+ < "Àâòîìàòè÷åñêè" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Âñå ñòèëè" ; SFXSTYLEBIT_ALL ; > ;
+ < "Ïðèìåíåííûå ñòèëè" ; SFXSTYLEBIT_USED ; > ;
+ < "Ñòèëè ïîëüçîâàòåëÿ" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Ñòèëè òåêñòà" ; SWSTYLEBIT_TEXT ; > ;
+ < "Ñòèëè ãëàâû" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Ñòèëè ñïèñêà" ; SWSTYLEBIT_LIST ; > ;
+ < "Ñòèëè óêàçàòåëÿ" ; SWSTYLEBIT_IDX ; > ;
+ < "Ñòèëè ñïåöèàëüíûõ îáëàñòåé" ; SWSTYLEBIT_EXTRA ; > ;
+ < "Ñòèëè HTML" ; SWSTYLEBIT_HTML ; > ;
+ < "Óñëîâíûå ñòèëè" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ FilterList [ polish ] =
+ {
+ < "Automatycznie" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Wszystkie style" ; SFXSTYLEBIT_ALL ; > ;
+ < "U¿yte style" ; SFXSTYLEBIT_USED ; > ;
+ < "Style u¿ytkownika" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Style tekstu" ; SWSTYLEBIT_TEXT ; > ;
+ < "Style rozdzia³u" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Style listy" ; SWSTYLEBIT_LIST ; > ;
+ < "Style indeksu" ; SWSTYLEBIT_IDX ; > ;
+ < "Style dla specjalnych zadañ" ; SWSTYLEBIT_EXTRA ; > ;
+ < "Style HTML" ; SWSTYLEBIT_HTML ; > ;
+ < "Warunkowe style" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ FilterList [ japanese ] =
+ {
+ < "Ž©“®" ; SFXSTYLEBIT_AUTO ; > ;
+ < "‚·‚ׂĂ̽À²Ù" ; SFXSTYLEBIT_ALL ; > ;
+ < "Žg—p‚µ‚½½À²Ù" ; SFXSTYLEBIT_USED ; > ;
+ < "Õ°»Þ°’è‹`‚̽À²Ù" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "•¶‘½À²Ù" ; SWSTYLEBIT_TEXT ; > ;
+ < "͂̽À²Ù" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "ؽĂ̽À²Ù" ; SWSTYLEBIT_LIST ; > ;
+ < "õˆø½À²Ù" ; SWSTYLEBIT_IDX ; > ;
+ < "“Á•Ê”͈͂̽À²Ù" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML½À²Ù" ; SWSTYLEBIT_HTML ; > ;
+ < "ðŒ•t‚«½À²Ù" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ Text[ chinese_traditional ] = "¬q¸¨¼Ë¦¡";
+ FilterList [ chinese_traditional ] =
+ {
+ < "¦Û°Ê" ; SFXSTYLEBIT_AUTO ; > ;
+ < "¥þ³¡¼Ë¦¡" ; SFXSTYLEBIT_ALL ; > ;
+ < "¨Ï¥Îªº¼Ë¦¡" ; SFXSTYLEBIT_USED ; > ;
+ < "¦Û­q¼Ë¦¡" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "¤å¦r¼Ë¦¡" ; SWSTYLEBIT_TEXT ; > ;
+ < "³¹¼Ë¦¡" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "²M³æ¼Ë¦¡" ; SWSTYLEBIT_LIST ; > ;
+ < "¥Ø¿ý¼Ë¦¡" ; SWSTYLEBIT_IDX ; > ;
+ < "¼Ë¦¡¯S®í°Ï°ì" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML ¼Ë¦¡" ; SWSTYLEBIT_HTML ; > ;
+ < "¦³±ø¥óªº¼Ë¦¡" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ Text[ arabic ] = "ÃäãÇØ ÝÞÑÉ";
+ FilterList [ arabic ] =
+ {
+ < "ÊáÞÇÆí" ; SFXSTYLEBIT_AUTO ; > ;
+ < "ßá ÇáÃäãÇØ" ; SFXSTYLEBIT_ALL ; > ;
+ < "ÃäãÇØ ÞíÏ ÇáÇÓÊÎÏÇã" ; SFXSTYLEBIT_USED ; > ;
+ < "ÃäãÇØ ãÎÕÕÉ" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "ÃäãÇØ äÕ" ; SWSTYLEBIT_TEXT ; > ;
+ < "ÃäãÇØ ÇáÝÕá" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "ÃäãÇØ ÇáÞÇÆãÉ" ; SWSTYLEBIT_LIST ; > ;
+ < "ÃäãÇØ ÝåÑÓ" ; SWSTYLEBIT_IDX ; > ;
+ < "ÃäãÇØ äØÇÞÇÊ ÎÇÕÉ" ; SWSTYLEBIT_EXTRA ; > ;
+ < "ÃäãÇØ HTML" ; SWSTYLEBIT_HTML ; > ;
+ < "ÃäãÇØ ãÔÑæØÉ" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ Text[ dutch ] = "Alinea-opmaakprofielen";
+ Text[ chinese_simplified ] = "¶ÎÂäÑùʽ";
+ FilterList [ dutch ] =
+ {
+ < "Automatisch" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Alle opmaakprofielen" ; SFXSTYLEBIT_ALL ; > ;
+ < "Gebruikte opmaakprofielen" ; SFXSTYLEBIT_USED ; > ;
+ < "Eigen opmaakprofielen" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Tekstopmaakprofielen" ; SWSTYLEBIT_TEXT ; > ;
+ < "Opmaakprofielen voor hoofdtukken" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Lijstopmaakprofielen" ; SWSTYLEBIT_LIST ; > ;
+ < "Indexopmaakprofielen" ; SWSTYLEBIT_IDX ; > ;
+ < "Opmaakprof. speciale bereiken" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML-opmaakprofielen" ; SWSTYLEBIT_HTML ; > ;
+ < "Conditionele opmaakprofielen" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ FilterList [ chinese_simplified ] =
+ {
+ < "×Ô¶¯" ; SFXSTYLEBIT_AUTO ; > ;
+ < "È«²¿Ñùʽ" ; SFXSTYLEBIT_ALL ; > ;
+ < "ʹÓõÄÑùʽ" ; SFXSTYLEBIT_USED ; > ;
+ < "×Ô¶¨Ñùʽ" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "ÎÄ×ÖÑùʽ" ; SWSTYLEBIT_TEXT ; > ;
+ < "ÕÂÑùʽ" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Áе¥Ñùʽ" ; SWSTYLEBIT_LIST ; > ;
+ < "Ë÷ÒýÑùʽ" ; SWSTYLEBIT_IDX ; > ;
+ < "ÑùʽÌØÊâÇøÓò" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML Ñùʽ" ; SWSTYLEBIT_HTML ; > ;
+ < "ÓÐÌõ¼þµÄÑùʽ" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ Text[ greek ] = "Ðñüôõðá ðáñáãñÜöùí";
+ Text[ korean ] = "´Ü¶ô À¯Çü";
+ FilterList [ greek ] =
+ {
+ < "Áõôüìáôá" ; SFXSTYLEBIT_AUTO ; > ;
+ < "¼ëá ôá ðñüôõðá" ; SFXSTYLEBIT_ALL ; > ;
+ < "ÅöáñìïóìÝíá óôõë" ; SFXSTYLEBIT_USED ; > ;
+ < "Ðñüôõðá ÷ñÞóôç" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Ðñüôõðï êåéìÝíïõ" ; SWSTYLEBIT_TEXT ; > ;
+ < "Ðñüôõðá êåöáëáßùí" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Óôõë ëßóôáò" ; SWSTYLEBIT_LIST ; > ;
+ < "Ðñüôõðá åõñåôçñßùí" ; SWSTYLEBIT_IDX ; > ;
+ < "Ðñüôõðá åéäéêþí ðåñéï÷þí" ; SWSTYLEBIT_EXTRA ; > ;
+ < "Ðñüôõðá HTML" ; SWSTYLEBIT_HTML ; > ;
+ < "Ðñüôõðá õðü üñïõò" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ FilterList [ korean ] =
+ {
+ < "ÀÚµ¿" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Àüü À¯Çü" ; SFXSTYLEBIT_ALL ; > ;
+ < "À¯ÇüÀÌ Àû¿ëµÇ¾ú½À´Ï´Ù." ; SFXSTYLEBIT_USED ; > ;
+ < "»ç¿ëÀÚ Á¤ÀÇ À¯Çü" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "ÅؽºÆ® À¯Çü" ; SWSTYLEBIT_TEXT ; > ;
+ < "Àå À¯Çü" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "¸®½ºÆ® À¯Çü" ; SWSTYLEBIT_LIST ; > ;
+ < "»öÀÎ À¯Çü" ; SWSTYLEBIT_IDX ; > ;
+ < "Ưº° Áö¿ª À¯Çü" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML À¯Çü" ; SWSTYLEBIT_HTML ; > ;
+ < "Á¶°ÇÀû À¯Çü" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ Text[ turkish ] = "Paragraf biçimi";
+ FilterList [ turkish ] =
+ {
+ < "Otomatik" ; SFXSTYLEBIT_AUTO ; > ;
+ < "Bütün biçimler" ; SFXSTYLEBIT_ALL ; > ;
+ < "Kullanýlan biçim" ; SFXSTYLEBIT_USED ; > ;
+ < "Kullanýcý biçimi" ; SFXSTYLEBIT_USERDEF ; > ;
+ < "Metin biçimi" ; SWSTYLEBIT_TEXT ; > ;
+ < "Bölüm biçimi" ; SWSTYLEBIT_CHAPTER ; > ;
+ < "Liste biçimi" ; SWSTYLEBIT_LIST ; > ;
+ < "Dizin biçimi" ; SWSTYLEBIT_IDX ; > ;
+ < "Özel bölüm biçimi" ; SWSTYLEBIT_EXTRA ; > ;
+ < "HTML biçimi" ; SWSTYLEBIT_HTML ; > ;
+ < "Koþullu biçim" ; SWSTYLEBIT_CONDCOLL ; > ;
+ };
+ };
+ SfxStyleFamilyItem
+ {
+ StyleImage = Image
+ {
+ ImageBitmap = Bitmap { File = "catabc.bmp" ; };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ };
+ Text = "Zeichenvorlagen" ;
+ Text [ ENGLISH ] = "Character Styles" ;
+ Text [ norwegian ] = "Tegnmaler" ;
+ Text [ italian ] = "Modelli di carattere" ;
+ Text [ portuguese_brazilian ] = "Estilo de Caracter" ;
+ Text [ portuguese ] = "Estilos de caracteres" ;
+ Text [ finnish ] = "Merkkityylit" ;
+ Text [ danish ] = "Tegntypografier" ;
+ Text [ french ] = "Styles de caractère" ;
+ Text [ swedish ] = "Teckenformatmallar" ;
+ Text [ dutch ] = "Tekenopmaakprofielen" ;
+ Text [ spanish ] = "Estilos de caracteres" ;
+ Text [ english_us ] = "Character Styles" ;
+ StyleFamily = SFX_STYLE_FAMILY_CHAR ;
+ FilterList =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ ENGLISH ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ dutch ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Gebruikte opmaakprofielen" ; SFXSTYLEBIT_USED ; > ;
+ < "Eigen opmaakprofielen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ english_us ] =
+ {
+ < "All" ; SFXSTYLEBIT_ALL ; > ;
+ < "Applied Styles" ; SFXSTYLEBIT_USED ; > ;
+ < "Custom Styles" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ italian ] =
+ {
+ < "Tutti" ; SFXSTYLEBIT_ALL ; > ;
+ < "Modelli usati" ; SFXSTYLEBIT_USED ; > ;
+ < "Modelli utente" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ spanish ] =
+ {
+ < "Todos" ; SFXSTYLEBIT_ALL ; > ;
+ < "Estilos aplicados" ; SFXSTYLEBIT_USED ; > ;
+ < "Estilos del usuario" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ french ] =
+ {
+ < "Tous les styles" ; SFXSTYLEBIT_ALL ; > ;
+ < "Styles utilisés" ; SFXSTYLEBIT_USED ; > ;
+ < "Styles personnalisés" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ portuguese_brazilian ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ swedish ] =
+ {
+ < "Alla" ; SFXSTYLEBIT_ALL ; > ;
+ < "Använda formatmallar" ; SFXSTYLEBIT_USED ; > ;
+ < "Användardefinierade formatmallar" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ danish ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Anvendte typografier" ; SFXSTYLEBIT_USED ; > ;
+ < "Brugerdefinerede typografier" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ portuguese ] =
+ {
+ < "Todos" ; SFXSTYLEBIT_ALL ; > ;
+ < "Estilos utilizados" ; SFXSTYLEBIT_USED ; > ;
+ < "Estilos personalizados" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ";
+ FilterList [ chinese_simplified ] =
+ {
+ < "È«²¿" ; SFXSTYLEBIT_ALL ; > ;
+ < "ʹÓõÄÑùʽ" ; SFXSTYLEBIT_USED ; > ;
+ < "×Ô¶¨Ñùʽ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ language_user1 ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < " " ; SFXSTYLEBIT_USED ; > ;
+ < " " ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ language_user1 ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < " " ; SFXSTYLEBIT_USED ; > ;
+ < " " ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Ñòèëè çíàêîâ";
+ Text[ polish ] = "Style znaku";
+ Text[ japanese ] = "•¶Žš½À²Ù";
+ FilterList [ russian ] =
+ {
+ < "Âñå" ; SFXSTYLEBIT_ALL ; > ;
+ < "Ïðèìåíåííûå ñòèëè" ; SFXSTYLEBIT_USED ; > ;
+ < "Ñòèëè ïîëüçîâàòåëÿ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ polish ] =
+ {
+ < "Wszystkie" ; SFXSTYLEBIT_ALL ; > ;
+ < "U¿yte style" ; SFXSTYLEBIT_USED ; > ;
+ < "Style u¿ytkownika" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ japanese ] =
+ {
+ < "‚·‚ׂÄ" ; SFXSTYLEBIT_ALL ; > ;
+ < "Žg—p‚µ‚½½À²Ù" ; SFXSTYLEBIT_USED ; > ;
+ < "Õ°»Þ°’è‹`‚̽À²Ù" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ chinese_traditional ] = "¤å¦r¼Ë¦¡";
+ FilterList [ chinese_traditional ] =
+ {
+ < "¥þ³¡" ; SFXSTYLEBIT_ALL ; > ;
+ < "¨Ï¥Îªº¼Ë¦¡" ; SFXSTYLEBIT_USED ; > ;
+ < "¦Û­q¼Ë¦¡" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ arabic ] = "ÃäãÇØ ÃÍÑÝ";
+ FilterList [ arabic ] =
+ {
+ < "Çáßá" ; SFXSTYLEBIT_ALL ; > ;
+ < "ÃäãÇØ ÞíÏ ÇáÇÓÊÎÏÇã" ; SFXSTYLEBIT_USED ; > ;
+ < "ÃäãÇØ ãÎÕÕÉ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ dutch ] = "Tekenopmaakprofielen";
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ";
+ FilterList [ dutch ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Gebruikte opmaakprofielen" ; SFXSTYLEBIT_USED ; > ;
+ < "Eigen opmaakprofielen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ chinese_simplified ] =
+ {
+ < "È«²¿" ; SFXSTYLEBIT_ALL ; > ;
+ < "ʹÓõÄÑùʽ" ; SFXSTYLEBIT_USED ; > ;
+ < "×Ô¶¨Ñùʽ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ greek ] = "Óôõë ÷áñáêôÞñùí";
+ Text[ korean ] = "¹®ÀÚ À¯Çü";
+ FilterList [ greek ] =
+ {
+ < "¼ëá" ; SFXSTYLEBIT_ALL ; > ;
+ < "ÅöáñìïóìÝíá óôõë" ; SFXSTYLEBIT_USED ; > ;
+ < "Ðñüôõðá ÷ñÞóôç" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ korean ] =
+ {
+ < "ÀüºÎ" ; SFXSTYLEBIT_ALL ; > ;
+ < "À¯ÇüÀÌ Àû¿ëµÇ¾ú½À´Ï´Ù." ; SFXSTYLEBIT_USED ; > ;
+ < "»ç¿ëÀÚ Á¤ÀÇ À¯Çü" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ turkish ] = "Karakter biçimi";
+ FilterList [ turkish ] =
+ {
+ < "Tümü" ; SFXSTYLEBIT_ALL ; > ;
+ < "Uygulanan biçim" ; SFXSTYLEBIT_USED ; > ;
+ < "Kullanýcý biçimi" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ };
+ SfxStyleFamilyItem
+ {
+ StyleImage = Image
+ {
+ ImageBitmap = Bitmap { File = "catfrm.bmp" ; };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ };
+ Text = "Rahmenvorlagen" ;
+ Text [ ENGLISH ] = "Frame Styles" ;
+ Text [ norwegian ] = "Rammemaler" ;
+ Text [ italian ] = "Modelli di cornice" ;
+ Text [ portuguese_brazilian ] = "Estilos de Moldura" ;
+ Text [ portuguese ] = "Estilos de molduras" ;
+ Text [ finnish ] = "Kehystyylit" ;
+ Text [ danish ] = "Rammetypografier" ;
+ Text [ french ] = "Styles de cadre" ;
+ Text [ swedish ] = "Ramformatmallar" ;
+ Text [ dutch ] = "Kaderopmaakprofielen" ;
+ Text [ spanish ] = "Estilos de marcos" ;
+ Text [ english_us ] = "Frame Styles" ;
+ StyleFamily = SFX_STYLE_FAMILY_FRAME ;
+ FilterList =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ ENGLISH ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ dutch ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Gebruikte opmaakprofielen" ; SFXSTYLEBIT_USED ; > ;
+ < "Eigen opmaakprofielen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ english_us ] =
+ {
+ < "All" ; SFXSTYLEBIT_ALL ; > ;
+ < "Applied Styles" ; SFXSTYLEBIT_USED ; > ;
+ < "Custom Styles" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ italian ] =
+ {
+ < "Tutti" ; SFXSTYLEBIT_ALL ; > ;
+ < "Modelli usati" ; SFXSTYLEBIT_USED ; > ;
+ < "Modelli utente" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ spanish ] =
+ {
+ < "Todos" ; SFXSTYLEBIT_ALL ; > ;
+ < "Estilos aplicados" ; SFXSTYLEBIT_USED ; > ;
+ < "Estilos del usuario" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ french ] =
+ {
+ < "Tous les styles" ; SFXSTYLEBIT_ALL ; > ;
+ < "Styles utilisés" ; SFXSTYLEBIT_USED ; > ;
+ < "Styles personnalisés" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ portuguese_brazilian ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ swedish ] =
+ {
+ < "Alla" ; SFXSTYLEBIT_ALL ; > ;
+ < "Använda formatmallar" ; SFXSTYLEBIT_USED ; > ;
+ < "Användardefinierade formatmallar" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ danish ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Anvendte typografier" ; SFXSTYLEBIT_USED ; > ;
+ < "Brugerdefinerede typografier" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ portuguese ] =
+ {
+ < "Todos" ; SFXSTYLEBIT_ALL ; > ;
+ < "Estilos usados" ; SFXSTYLEBIT_USED ; > ;
+ < "Estilos personalizados" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ chinese_simplified ] = "¿òÑùʽ";
+ FilterList [ chinese_simplified ] =
+ {
+ < "È«²¿" ; SFXSTYLEBIT_ALL ; > ;
+ < "ʹÓõÄÑùʽ" ; SFXSTYLEBIT_USED ; > ;
+ < "×Ô¶¨Ñùʽ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ language_user1 ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < " " ; SFXSTYLEBIT_USED ; > ;
+ < " " ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ language_user1 ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < " " ; SFXSTYLEBIT_USED ; > ;
+ < " " ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Ñòèëè ðàìîê";
+ Text[ polish ] = "Style ramek";
+ Text[ japanese ] = "˜g½À²Ù";
+ FilterList [ russian ] =
+ {
+ < "Âñå" ; SFXSTYLEBIT_ALL ; > ;
+ < "Ïðèìåíåííûå ñòèëè" ; SFXSTYLEBIT_USED ; > ;
+ < "Ñòèëè ïîëüçîâàòåëÿ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ polish ] =
+ {
+ < "Wszystkie" ; SFXSTYLEBIT_ALL ; > ;
+ < "U¿yte style" ; SFXSTYLEBIT_USED ; > ;
+ < "Style u¿ytkownika" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ japanese ] =
+ {
+ < "‚·‚ׂÄ" ; SFXSTYLEBIT_ALL ; > ;
+ < "Žg—p‚µ‚½½À²Ù" ; SFXSTYLEBIT_USED ; > ;
+ < "Õ°»Þ°’è‹`‚̽À²Ù" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ chinese_traditional ] = "®Ø¼Ë¦¡";
+ FilterList [ chinese_traditional ] =
+ {
+ < "¥þ³¡" ; SFXSTYLEBIT_ALL ; > ;
+ < "¨Ï¥Îªº¼Ë¦¡" ; SFXSTYLEBIT_USED ; > ;
+ < "¦Û­q¼Ë¦¡" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ arabic ] = "ÃäãÇØ ÅØÇÑ";
+ FilterList [ arabic ] =
+ {
+ < "Çáßá" ; SFXSTYLEBIT_ALL ; > ;
+ < "ÃäãÇØ ÞíÏ ÇáÇÓÊÎÏÇã" ; SFXSTYLEBIT_USED ; > ;
+ < "ÃäãÇØ ãÎÕÕÉ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ dutch ] = "Kaderopmaakprofielen";
+ Text[ chinese_simplified ] = "¿òÑùʽ";
+ FilterList [ dutch ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Gebruikte opmaakprofielen" ; SFXSTYLEBIT_USED ; > ;
+ < "Eigen opmaakprofielen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ chinese_simplified ] =
+ {
+ < "È«²¿" ; SFXSTYLEBIT_ALL ; > ;
+ < "ʹÓõÄÑùʽ" ; SFXSTYLEBIT_USED ; > ;
+ < "×Ô¶¨Ñùʽ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ greek ] = "Ðñüôõðá ðëáéóßïõ";
+ Text[ korean ] = "ÇÁ·¹ÀÓ À¯Çü";
+ FilterList [ greek ] =
+ {
+ < "¼ëá" ; SFXSTYLEBIT_ALL ; > ;
+ < "ÅöáñìïóìÝíá óôõë" ; SFXSTYLEBIT_USED ; > ;
+ < "Ðñüôõðá ÷ñÞóôç" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ korean ] =
+ {
+ < "ÀüºÎ" ; SFXSTYLEBIT_ALL ; > ;
+ < "À¯ÇüÀÌ Àû¿ëµÇ¾ú½À´Ï´Ù." ; SFXSTYLEBIT_USED ; > ;
+ < "»ç¿ëÀÚ Á¤ÀÇ À¯Çü" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ turkish ] = "Çerçeve biçimi";
+ FilterList [ turkish ] =
+ {
+ < "Tümü" ; SFXSTYLEBIT_ALL ; > ;
+ < "Uygulanan biçim" ; SFXSTYLEBIT_USED ; > ;
+ < "Kullanýcý biçimi" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ };
+ SfxStyleFamilyItem
+ {
+ StyleImage = Image
+ {
+ ImageBitmap = Bitmap { File = "catpag.bmp" ; };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ };
+ 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" ;
+ StyleFamily = SFX_STYLE_FAMILY_PAGE ;
+ FilterList =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ ENGLISH ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ dutch ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Gebruikte opmaakprofielen" ; SFXSTYLEBIT_USED ; > ;
+ < "Eigen opmaakprofielen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ english_us ] =
+ {
+ < "All" ; SFXSTYLEBIT_ALL ; > ;
+ < "Applied Styles" ; SFXSTYLEBIT_USED ; > ;
+ < "Custom Styles" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ italian ] =
+ {
+ < "Tutti" ; SFXSTYLEBIT_ALL ; > ;
+ < "Modeli usati" ; SFXSTYLEBIT_USED ; > ;
+ < "Modelli utente" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ spanish ] =
+ {
+ < "Todos" ; SFXSTYLEBIT_ALL ; > ;
+ < "Estilos aplicados" ; SFXSTYLEBIT_USED ; > ;
+ < "Estilos del usuario" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ french ] =
+ {
+ < "Tous les styles" ; SFXSTYLEBIT_ALL ; > ;
+ < "Styles utilisés" ; SFXSTYLEBIT_USED ; > ;
+ < "Styles personnalisés" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ portuguese_brazilian ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ swedish ] =
+ {
+ < "Alla" ; SFXSTYLEBIT_ALL ; > ;
+ < "Använda formatmallar" ; SFXSTYLEBIT_USED ; > ;
+ < "Användardefinierade formatmallar" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ danish ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Anvendte typografier" ; SFXSTYLEBIT_USED ; > ;
+ < "Brugerdefinerede typografier" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ portuguese ] =
+ {
+ < "Todos" ; SFXSTYLEBIT_ALL ; > ;
+ < "Estilos usados" ; SFXSTYLEBIT_USED ; > ;
+ < "Estilos personalizados" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ chinese_simplified ] =
+ {
+ < "È«²¿" ; SFXSTYLEBIT_ALL ; > ;
+ < "ʹÓÃÑùʽ" ; SFXSTYLEBIT_USED ; > ;
+ < "×Ô¶¨Ñùʽ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ language_user1 ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < " " ; SFXSTYLEBIT_USED ; > ;
+ < " " ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ language_user1 ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < " " ; SFXSTYLEBIT_USED ; > ;
+ < " " ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ russian ] =
+ {
+ < "Âñå" ; SFXSTYLEBIT_ALL ; > ;
+ < "Ïðèìåíåííûå ñòèëè" ; SFXSTYLEBIT_USED ; > ;
+ < "Ñòèëè ïîëüçîâàòåëÿ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ polish ] =
+ {
+ < "Wszystkie" ; SFXSTYLEBIT_ALL ; > ;
+ < "U¿yte style" ; SFXSTYLEBIT_USED ; > ;
+ < "Style u¿ytkownika" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ japanese ] =
+ {
+ < "‚·‚ׂÄ" ; SFXSTYLEBIT_ALL ; > ;
+ < "Žg—p‚µ‚½½À²Ù" ; SFXSTYLEBIT_USED ; > ;
+ < "Õ°»Þ°’è‹`‚̽À²Ù" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ chinese_traditional ] =
+ {
+ < "¥þ³¡" ; SFXSTYLEBIT_ALL ; > ;
+ < "¦Û­q¼Ë¦¡" ; SFXSTYLEBIT_USED ; > ;
+ < "¦Û­q¼Ë¦¡" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ russian ] = "Ñòèëè ñòðàíèöû";
+ Text[ polish ] = "Style strony";
+ Text[ japanese ] = "Íß°¼Þ½À²Ù";
+ Text[ chinese_simplified ] = "Ò³ÃæÑùʽ";
+ Text[ chinese_traditional ] = "­¶­±¼Ë¦¡";
+ Text[ arabic ] = "ÃäãÇØ ÕÝÍÉ";
+ FilterList [ arabic ] =
+ {
+ < "Çáßá" ; SFXSTYLEBIT_ALL ; > ;
+ < "ÃäãÇØ ÞíÏ ÇáÇÓÊÎÏÇã" ; SFXSTYLEBIT_USED ; > ;
+ < "ÃäãÇØ ãÎÕÕÉ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ dutch ] = "Pagina-opmaakprofielen";
+ Text[ chinese_simplified ] = "Ò³ÃæÑùʽ";
+ FilterList [ dutch ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Gebruikte opmaakprofielen" ; SFXSTYLEBIT_USED ; > ;
+ < "Eigen opmaakprofielen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ chinese_simplified ] =
+ {
+ < "È«²¿" ; SFXSTYLEBIT_ALL ; > ;
+ < "ʹÓÃÑùʽ" ; SFXSTYLEBIT_USED ; > ;
+ < "×Ô¶¨Ñùʽ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ greek ] = "Ðñüôõðá óåëéäþí";
+ Text[ korean ] = "ÆäÀÌÁö À¯Çü";
+ FilterList [ greek ] =
+ {
+ < "¼ëá" ; SFXSTYLEBIT_ALL ; > ;
+ < "ÅöáñìïóìÝíá óôõë" ; SFXSTYLEBIT_USED ; > ;
+ < "Ðñüôõðá ÷ñÞóôç" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ korean ] =
+ {
+ < "ÀüºÎ" ; SFXSTYLEBIT_ALL ; > ;
+ < "À¯ÇüÀÌ Àû¿ëµÇ¾ú½À´Ï´Ù." ; SFXSTYLEBIT_USED ; > ;
+ < "»ç¿ëÀÚ Á¤ÀÇ À¯Çü" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ turkish ] = "Sayfa biçimi";
+ FilterList [ turkish ] =
+ {
+ < "Tümü" ; SFXSTYLEBIT_ALL ; > ;
+ < "Uygulanan biçim" ; SFXSTYLEBIT_USED ; > ;
+ < "Kullanýcý biçimi" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ language_user1 ] = " ";
+ };
+ SfxStyleFamilyItem
+ {
+ StyleImage = Image
+ {
+ ImageBitmap = Bitmap { File = "catnum.bmp" ; };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ };
+ Text = "Nummerierungsvorlagen" ;
+ Text [ ENGLISH ] = "Number Styles" ;
+ StyleFamily = SFX_STYLE_FAMILY_PSEUDO ;
+ FilterList =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ ENGLISH ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ dutch ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Gebruikte opmaakprofielen" ; SFXSTYLEBIT_USED ; > ;
+ < "Eigen opmaakprofielen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ english_us ] =
+ {
+ < "All" ; SFXSTYLEBIT_ALL ; > ;
+ < "Applied Styles" ; SFXSTYLEBIT_USED ; > ;
+ < "Custom Styles" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ italian ] =
+ {
+ < "Tutti" ; SFXSTYLEBIT_ALL ; > ;
+ < "Modeli usati" ; SFXSTYLEBIT_USED ; > ;
+ < "Modelli utente" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ spanish ] =
+ {
+ < "Todos" ; SFXSTYLEBIT_ALL ; > ;
+ < "Estilos aplicados" ; SFXSTYLEBIT_USED ; > ;
+ < "Estilos del usuario" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ french ] =
+ {
+ < "Tous" ; SFXSTYLEBIT_ALL ; > ;
+ < "Styles utilisés" ; SFXSTYLEBIT_USED ; > ;
+ < "Styles personnalisés" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ portuguese_brazilian ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Verwendete Vorlagen" ; SFXSTYLEBIT_USED ; > ;
+ < "Benutzervorlagen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ swedish ] =
+ {
+ < "Alla" ; SFXSTYLEBIT_ALL ; > ;
+ < "Använda formatmallar" ; SFXSTYLEBIT_USED ; > ;
+ < "Användardefinierade formatmallar" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ danish ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Anvendte typografier" ; SFXSTYLEBIT_USED ; > ;
+ < "Brugerdefinerede typografier" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ filterlist [ portuguese ] =
+ {
+ < "Todos" ; SFXSTYLEBIT_ALL ; > ;
+ < "Estilos usados" ; SFXSTYLEBIT_USED ; > ;
+ < "Estilos personalizados" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text [ portuguese ] = "Estilos de numeração" ;
+ Text [ english_us ] = "Numbering Styles" ;
+ Text [ portuguese_brazilian ] = "Numerierungsvorlagen" ;
+ Text [ swedish ] = "Numreringsformatmallar" ;
+ Text [ danish ] = "Nummereringstypografier" ;
+ Text [ italian ] = "Modelli di numerazione" ;
+ Text [ spanish ] = "Estilos de numeración" ;
+ Text [ french ] = "Styles de numérotation" ;
+ Text [ dutch ] = "Opmaakprofielen voor nummering" ;
+ Text[ chinese_simplified ] = "±àºÅÑùʽ";
+ FilterList [ chinese_simplified ] =
+ {
+ < "È«²¿" ; SFXSTYLEBIT_ALL ; > ;
+ < "ʹÓõÄÑùʽ" ; SFXSTYLEBIT_USED ; > ;
+ < "×Ô¶¨Ñùʽ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ language_user1 ] =
+ {
+ < " " ; SFXSTYLEBIT_ALL ; > ;
+ < " " ; SFXSTYLEBIT_USED ; > ;
+ < " " ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ language_user1 ] =
+ {
+ < " " ; SFXSTYLEBIT_ALL ; > ;
+ < " " ; SFXSTYLEBIT_USED ; > ;
+ < " " ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ language_user1 ] = "èë? ñòèë? òèE";
+ Text[ russian ] = "Ñòèëè íóìåðàöèè";
+ Text[ polish ] = "Style numeracji";
+ Text[ japanese ] = "”Ô†•t‚¯½À²Ù";
+ FilterList [ russian ] =
+ {
+ < "Âñå" ; SFXSTYLEBIT_ALL ; > ;
+ < "Ïðèìåíåííûå ñòèëè" ; SFXSTYLEBIT_USED ; > ;
+ < "Ñòèëè ïîëüçîâàòåëÿ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ polish ] =
+ {
+ < "Wszystkie" ; SFXSTYLEBIT_ALL ; > ;
+ < "U¿yte style" ; SFXSTYLEBIT_USED ; > ;
+ < "Style u¿ytkownika" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ japanese ] =
+ {
+ < "‚·‚ׂÄ" ; SFXSTYLEBIT_ALL ; > ;
+ < "Žg—p‚µ‚½½À²Ù" ; SFXSTYLEBIT_USED ; > ;
+ < "Õ°»Þ°’è‹`‚̽À²Ù" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ chinese_traditional ] = "½s¸¹¼Ë¦¡";
+ FilterList [ chinese_traditional ] =
+ {
+ < "¥þ³¡" ; SFXSTYLEBIT_ALL ; > ;
+ < "¨Ï¥Îªº¼Ë¦¡" ; SFXSTYLEBIT_USED ; > ;
+ < "¦Û­q¼Ë¦¡" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ arabic ] = "ÃäãÇØ ÇáÊÑÞíã";
+ FilterList [ arabic ] =
+ {
+ < "Çáßá" ; SFXSTYLEBIT_ALL ; > ;
+ < "ÃäãÇØ ÞíÏ ÇáÇÓÊÎÏÇã" ; SFXSTYLEBIT_USED ; > ;
+ < "ÇáÃäãÇØ ÇáãÎÕÕÉ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ dutch ] = "Opmaakprofielen voor nummering";
+ Text[ chinese_simplified ] = "±àºÅÑùʽ";
+ FilterList [ dutch ] =
+ {
+ < "Alle" ; SFXSTYLEBIT_ALL ; > ;
+ < "Gebruikte opmaakprofielen" ; SFXSTYLEBIT_USED ; > ;
+ < "Eigen opmaakprofielen" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ chinese_simplified ] =
+ {
+ < "È«²¿" ; SFXSTYLEBIT_ALL ; > ;
+ < "ʹÓõÄÑùʽ" ; SFXSTYLEBIT_USED ; > ;
+ < "×Ô¶¨Ñùʽ" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ greek ] = "Óôõë áñßèìçóçò";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â À¯Çü";
+ FilterList [ greek ] =
+ {
+ < "¼ëá" ; SFXSTYLEBIT_ALL ; > ;
+ < "ÅöáñìïóìÝíá óôõë" ; SFXSTYLEBIT_USED ; > ;
+ < "Ðñüôõðá ÷ñÞóôç" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ FilterList [ korean ] =
+ {
+ < "ÀüºÎ" ; SFXSTYLEBIT_ALL ; > ;
+ < "À¯Çü Àû¿ë" ; SFXSTYLEBIT_USED ; > ;
+ < "»ç¿ëÀÚ Á¤ÀÇ À¯Çü" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ Text[ turkish ] = "Numaralama biçimi";
+ FilterList [ turkish ] =
+ {
+ < "Tümü" ; SFXSTYLEBIT_ALL ; > ;
+ < "Kullanýlan biçim" ; SFXSTYLEBIT_USED ; > ;
+ < "Kullanýcý biçimi" ; SFXSTYLEBIT_USERDEF ; > ;
+ };
+ };
+ };
+};
+
+
+
+ // Default Bitmap fuer Toolbox
+BITMAP BMP_FEHLT { FILE = "x.bmp" ; };
+ // Bitmap fuer die NumerierungsVorlagen im Organizer
+Bitmap BMP_STYLES_FAMILY_NUM { File = "styfamnu.bmp" ; };
+
+String STR_ENV_TITLE
+{
+ Text = "Briefumschlag" ;
+ Text [ English ] = "Envelop" ;
+ Text [ norwegian ] = "Konvolutt" ;
+ Text [ italian ] = "Busta" ;
+ Text [ portuguese_brazilian ] = "Envelope" ;
+ Text [ portuguese ] = "Envelope" ;
+ Text [ finnish ] = "Kirjekuori" ;
+ Text [ danish ] = "Konvolut" ;
+ Text [ french ] = "Enveloppe" ;
+ Text [ swedish ] = "Kuvert" ;
+ Text [ dutch ] = "Envelop" ;
+ Text [ spanish ] = "Sobre" ;
+ Text [ english_us ] = "Envelope" ;
+ Text[ chinese_simplified ] = "ÐÅ·â";
+ Text[ russian ] = "Êîíâåðò";
+ Text[ polish ] = "Koperta";
+ Text[ japanese ] = "••“›";
+ Text[ chinese_traditional ] = "«H«Ê";
+ Text[ arabic ] = "ÙÑÝ";
+ Text[ dutch ] = "Envelop";
+ Text[ chinese_simplified ] = "ÐÅ·â";
+ Text[ greek ] = "ÖÜêåëïò";
+ Text[ korean ] = "ºÀÅõ";
+ Text[ turkish ] = "Zarf";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_LAB_TITLE
+{
+ Text = "Etiketten" ;
+ Text [ English ] = "Labels" ;
+ Text [ norwegian ] = "Etiketter" ;
+ Text [ italian ] = "Etichette" ;
+ Text [ portuguese_brazilian ] = "Etiquetas" ;
+ Text [ portuguese ] = "Etiquetas" ;
+ Text [ finnish ] = "Tarrat" ;
+ Text [ danish ] = "Etiketter" ;
+ Text [ french ] = "Étiquettes" ;
+ Text [ swedish ] = "Etiketter" ;
+ Text [ dutch ] = "Etiketten" ;
+ Text [ spanish ] = "Etiquetas" ;
+ Text [ english_us ] = "Labels" ;
+ Text[ chinese_simplified ] = "±êÇ©";
+ Text[ russian ] = "Íàêëåéêè";
+ Text[ polish ] = "Etykiety";
+ Text[ japanese ] = "×ÍÞÙ";
+ Text[ chinese_traditional ] = "¶K¼Ð";
+ Text[ arabic ] = "ÈØÇÞÇÊ ÚäæäÉ";
+ Text[ dutch ] = "Etiketten";
+ Text[ chinese_simplified ] = "±êÇ©";
+ Text[ greek ] = "ÅôéêÝôåò";
+ Text[ korean ] = "¶óº§";
+ Text[ turkish ] = "Etiket";
+ Text[ language_user1 ] = " ";
+};
+
+ // ShortName!!!
+String STR_HUMAN_SWDOC_NAME
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Text : Dokument */
+ Text = "Text" ;
+ Text [ English ] = "Text" ;
+ Text [ english_us ] = "Text" ;
+ Text [ swedish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ italian ] = "Testo" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ french ] = "Texte" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷½Ä";
+ Text[ chinese_traditional ] = "¤å¦r";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_WRITER_DOCUMENT_FULLTYPE_31
+{
+ Text = "StarOffice 3.0 Text" ;
+ Text [ English ] = "StarOffice 3.0 Text" ;
+ Text [ english_us ] = "Text (StarOffice 3.0)" ;
+ Text [ portuguese_brazilian ] = "StarOffice 3.0 Text" ;
+ Text [ swedish ] = "StarOffice 3.0 text" ;
+ Text [ danish ] = "StarOffice 3.0 tekst" ;
+ Text [ italian ] = "Test StarOffice 3.0" ;
+ Text [ spanish ] = "Texto de StarOffice 3.0" ;
+ Text [ french ] = "Texte StarOffice 3.0" ;
+ Text [ dutch ] = "StarOffice 3.0 Tekst" ;
+ Text [ portuguese ] = "StarOffice 3.0 Text" ;
+ Text[ chinese_simplified ] = "StarOffice 3.0 Îı¾";
+ Text[ russian ] = "Òåêñò â StarOffice 3.0";
+ Text[ polish ] = "Tekst StarOffice 3.0";
+ Text[ japanese ] = "StarOffice 3.0 ÷½Ä";
+ Text[ chinese_traditional ] = "StarOffice 3.0 ¤å¦r¤å¥ó";
+ Text[ arabic ] = "äÕ ãä StarOffice 3.0";
+ Text[ dutch ] = "StarOffice 3.0 Tekst";
+ Text[ chinese_simplified ] = "StarOffice 3.0 Îı¾";
+ Text[ greek ] = "Êåßìåíï (StarOffice 3.0)";
+ Text[ korean ] = "ÅؽºÆ® (StarOffice 3.0)";
+ Text[ turkish ] = "StarOffice 3.0 metni";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_WRITER_DOCUMENT_FULLTYPE_40
+{
+ Text = "StarOffice 4.0 Text" ;
+ Text [ English ] = "StarOffice 4.0 Text" ;
+ Text [ english_us ] = "Text (StarOffice 4.0)" ;
+ Text [ portuguese_brazilian ] = "StarOffice 4.0 Text" ;
+ Text [ swedish ] = "StarOffice 4.0 text" ;
+ Text [ danish ] = "StarOffice 4.0 tekst" ;
+ Text [ italian ] = "Testo StarOffice 4.0" ;
+ Text [ spanish ] = "Texto de StarOffice 4.0" ;
+ Text [ french ] = "Texte StarOffice 4.0" ;
+ Text [ dutch ] = "StarOffice 4.0 Tekst" ;
+ Text [ portuguese ] = "Texto (StarOffice 4.0)" ;
+ Text[ chinese_simplified ] = "StarOffice 4.0 Îı¾";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Òåêñò â StarOffice 4.0";
+ Text[ polish ] = "Tekst StarOffice 4.0";
+ Text[ japanese ] = "StarOffice 4.0 ÷½Ä";
+ Text[ chinese_traditional ] = "StarOffice 4.0 ¤å¦r¤å¥ó";
+ Text[ arabic ] = "äÕ ãä StarOffice 4.0";
+ Text[ dutch ] = "StarOffice 4.0 Tekst";
+ Text[ chinese_simplified ] = "StarOffice 4.0 Îı¾";
+ Text[ greek ] = "Êåßìåíï (StarOffice 4.0)";
+ Text[ korean ] = "ÅؽºÆ® (StarOffice 4.0)";
+ Text[ turkish ] = "StarOffice 4.0 metni";
+};
+
+String STR_WRITER_DOCUMENT_FULLTYPE
+{
+ Text = "StarOffice 5.0 Text" ;
+ Text [ English ] = "StarOffice 5.0 Text" ;
+ Text [ english_us ] = "Text (StarOffice 5.0)" ;
+ Text [ portuguese_brazilian ] = "StarOffice 4.0 Text" ;
+ Text [ swedish ] = "StarOffice 5.0 text" ;
+ Text [ danish ] = "StarOffice 4.0 tekst" ;
+ Text [ italian ] = "Testo StarOffice 5.0" ;
+ Text [ spanish ] = "Texto de StarOffice 5.0" ;
+ Text [ french ] = "Texte StarOffice 5.0" ;
+ Text [ dutch ] = "StarOffice 5.0 Tekst" ;
+ Text [ portuguese ] = "Texto (StarOffice 5.0)" ;
+ Text[ chinese_simplified ] = "StarOffice 5.0 Îı¾";
+ Text[ russian ] = "Òåêñò â StarOffice 5.0";
+ Text[ polish ] = "Tekst StarOffice 5.0";
+ Text[ japanese ] = "StarOffice 5.0 ÷½Ä";
+ Text[ chinese_traditional ] = "StarOffice 5.0 ¤å¦r¤å¥ó";
+ Text[ arabic ] = "äÕ ãä StarOffice 5.0";
+ Text[ dutch ] = "StarOffice 5.0 Tekst";
+ Text[ chinese_simplified ] = "StarOffice 5.0 Îı¾";
+ Text[ greek ] = "Êåßìåíï (StarOffice 5.0)";
+ Text[ korean ] = "ÅؽºÆ® (StarOffice 5.0)";
+ Text[ turkish ] = "StarOffice 5.0 metni";
+ Text[ language_user1 ] = " ";
+};
+
+
+String STR_CANTOPEN
+{
+ TEXT = "Kann das Dokument nicht öffnen." ;
+ TEXT [ English ] = "Can't open document." ;
+ TEXT [ norwegian ] = "Kan ikke åpne dokumentet." ;
+ TEXT [ italian ] = "Impossibile aprire il documento" ;
+ TEXT [ portuguese_brazilian ] = "Não posso abrir o documento." ;
+ TEXT [ portuguese ] = "Impossível abrir o documento." ;
+ TEXT [ finnish ] = "Asiakirjaa ei voi avata." ;
+ TEXT [ danish ] = "Kan ikke åbne dokument." ;
+ TEXT [ french ] = "Impossible d'ouvrir le document." ;
+ TEXT [ swedish ] = "Kan inte öppna dokumentet." ;
+ TEXT [ dutch ] = "Document kan niet worden geopend." ;
+ TEXT [ spanish ] = "No es posible abrir el documento." ;
+ TEXT [ english_us ] = "Cannot open document." ;
+ TEXT[ chinese_simplified ] = "ÎÞ·¨´ò¿ªÕâ¸öÎĵµ¡£";
+ TEXT[ russian ] = "Îòêðûòü äîêóìåíò íåâîçìîæíî.";
+ TEXT[ polish ] = "Nie mo¿e otworzyæ dokumentu.";
+ TEXT[ japanese ] = "ÄÞ·­ÒÝÄ‚ðŠJ‚­‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ";
+ TEXT[ chinese_traditional ] = "µLªk¶}±Ò³o­Ó¤å¥ó¡C";
+ TEXT[ arabic ] = "áÇ íÓÊØíÚ ÝÊÍ ÇáãÓÊäÏ.";
+ TEXT[ dutch ] = "Document kan niet worden geopend.";
+ TEXT[ chinese_simplified ] = "ÎÞ·¨´ò¿ªÕâ¸öÎĵµ¡£";
+ TEXT[ greek ] = "Äåí åßíáé äõíáôüí íá áíïé÷èåß ôï Ýããñáöï.";
+ TEXT[ korean ] = "¹®¼­¸¦ ¿­¼ö ¾ø½À´Ï´Ù.";
+ TEXT[ turkish ] = "Belge açýlamýyor.";
+ TEXT[ language_user1 ] = " ";
+};
+
+String STR_CANTCREATE
+{
+ TEXT = "Das Dokument konnte nicht erzeugt werden." ;
+ TEXT [ English ] = "Can't create document." ;
+ TEXT[ italian ] = "Impossibile creare un documento";
+ TEXT[ portuguese_brazilian ] = "Can't create document.";
+ TEXT[ portuguese ] = "Foi impossível criar documento.";
+ TEXT[ danish ] = "Det var ikke muligt at oprette dokumentet.";
+ TEXT[ french ] = "Impossible de créer le document.";
+ TEXT[ swedish ] = "Dokumentet kunde inte skapas.";
+ TEXT[ dutch ] = "Het document kon niet worden gemaakt.";
+ TEXT[ spanish ] = "El documento no pudo ser creado.";
+ TEXT[ english_us ] = "Can't create document.";
+ TEXT[ chinese_simplified ] = "ÎÞ·¨Éú³ÉÎĵµ";
+ TEXT[ russian ] = "Ýòîò äîêóìåíò ñîçäàòü íåâîçìîæíî.";
+ TEXT[ polish ] = "Dokument nie móg³ zostaæ utworzony.";
+ TEXT[ japanese ] = "ÄÞ·­ÒÝÄ‚ð쬂ł«‚Ü‚¹‚ñB";
+ TEXT[ chinese_traditional ] = "µLªk¥Í¦¨¤å¥ó";
+ TEXT[ arabic ] = "ÊÚÐÑ ÅäÔÇÁ ÇáãÓÊäÏ.";
+ TEXT[ dutch ] = "Het document kon niet worden gemaakt.";
+ TEXT[ chinese_simplified ] = "ÎÞ·¨Éú³ÉÎĵµ";
+ TEXT[ greek ] = "Äåí åßíáé äõíáôÞ ç äçìéïõñãßá ôïõ åããñÜöïõ.";
+ TEXT[ korean ] = "¹®¼­¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù.";
+ TEXT[ turkish ] = "Belge oluþturulamadý.";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DLLNOTFOUND
+{
+ TEXT = "Filter nicht gefunden." ;
+ TEXT [ English ] = "Filter not found." ;
+ TEXT [ norwegian ] = "Finner ikke filter." ;
+ TEXT [ italian ] = "Filtro non trovato." ;
+ TEXT [ portuguese_brazilian ] = "Filtro não encontrado." ;
+ TEXT [ portuguese ] = "Filtro não encontrado." ;
+ TEXT [ finnish ] = "Suodinta ei löydy." ;
+ TEXT [ danish ] = "Filter blev ikke fundet." ;
+ TEXT [ french ] = "Filtre introuvable." ;
+ TEXT [ swedish ] = "Filter hittades ej." ;
+ TEXT [ dutch ] = "Filter niet gevonden." ;
+ TEXT [ spanish ] = "No se encontró el filtro." ;
+ TEXT [ english_us ] = "Filter not found." ;
+ TEXT[ chinese_simplified ] = "ûÓÐÕÒµ½É¸Ñ¡¡£";
+ TEXT[ russian ] = "Ôèëüòð íåíàéäåí.";
+ TEXT[ polish ] = "Filtru nie znaleziono.";
+ TEXT[ japanese ] = "̨ÙÀ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ";
+ TEXT[ chinese_traditional ] = "¨S¦³§ä¨ì¿z¿ï¡C";
+ TEXT[ arabic ] = "ÊÚÐÑ ÇáÚËæÑ Úáì ÇáÝáÊÑ.";
+ TEXT[ dutch ] = "Filter niet gevonden.";
+ TEXT[ chinese_simplified ] = "ûÓÐÕÒµ½É¸Ñ¡¡£";
+ TEXT[ greek ] = "Äåí âñÝèçêå ôï ößëôñï.";
+ TEXT[ korean ] = "ÇÊÅÍ°¡ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.";
+ TEXT[ turkish ] = "Filtre bulunamadý.";
+ TEXT[ language_user1 ] = " ";
+};
+
+
+String STR_UNBENANNT
+{
+ TEXT = "Unbenannt" ;
+ TEXT [ English ] = "Untitled" ;
+ TEXT [ norwegian ] = "Uten tittel" ;
+ TEXT [ italian ] = "Senza nome" ;
+ TEXT [ portuguese_brazilian ] = "Sem título" ;
+ TEXT [ portuguese ] = "Sem nome" ;
+ TEXT [ finnish ] = "Nimetön" ;
+ TEXT [ danish ] = "Ikke-navngivet" ;
+ TEXT [ french ] = "Sans titre" ;
+ TEXT [ swedish ] = "Namnlös" ;
+ TEXT [ dutch ] = "Naamloos" ;
+ TEXT [ spanish ] = "Sin nombre" ;
+ TEXT [ english_us ] = "Untitled" ;
+ TEXT[ chinese_simplified ] = "δÃüÃû";
+ TEXT[ russian ] = "Áåç èìåíè";
+ TEXT[ polish ] = "Bez tytu³u";
+ TEXT[ japanese ] = "–³‘è";
+ TEXT[ chinese_traditional ] = "¥¼©R¦W";
+ TEXT[ arabic ] = "ÈÏæä ÚäæÇä";
+ TEXT[ dutch ] = "Naamloos";
+ TEXT[ chinese_simplified ] = "δÃüÃû";
+ TEXT[ greek ] = "Äß÷ùò üíïìá";
+ TEXT[ korean ] = "Á¦¸ñ ¾øÀ½";
+ TEXT[ turkish ] = "Adsýz";
+ TEXT[ language_user1 ] = " ";
+};
+
+
+String STR_LOAD_GLOBAL_DOC
+{
+ TEXT = "Name und Pfad des Globaldokuments" ;
+ TEXT [ English ] = "Name and path of the global document" ;
+ Text [ english_us ] = "Name and Path of Master Document" ;
+ Text [ portuguese_brazilian ] = "Name und Pfad des Globaldokuments" ;
+ Text [ swedish ] = "Samlingsdokumentets namn och sökväg" ;
+ Text [ danish ] = "Hoveddokumentets navn og sti" ;
+ Text [ italian ] = "Nome e percorso del documento master" ;
+ Text [ spanish ] = "Nombre y ruta del documento maestro" ;
+ Text [ french ] = "Nom et chemin du document maître" ;
+ Text [ dutch ] = "Naam en pad van het master-document" ;
+ Text [ portuguese ] = "Nome e atalho do documento-mestre" ;
+ Text[ chinese_simplified ] = "Ö÷¿ØÎĵµµÄÃû³ÆºÍ·¾¶";
+ Text[ russian ] = "Èìÿ è ïóòü ãëàâíîãî äîêóìåíòà";
+ Text[ polish ] = "Nazwa i œcie¿ka dokumentu g³ównego";
+ Text[ japanese ] = "ϽÀ°ÄÞ·­ÒÝÄ‚Ì–¼‘O‚ÆÊß½";
+ Text[ chinese_traditional ] = "¥D±±¤å¥óªº¦WºÙ©M¸ô®|";
+ Text[ arabic ] = "ÇÓã æãÓÇÑ ÇáãÓÊäÏ ÇáÔÇãá";
+ Text[ dutch ] = "Naam en pad van het master-document";
+ Text[ chinese_simplified ] = "Ö÷¿ØÎĵµµÄÃû³ÆºÍ·¾¶";
+ Text[ greek ] = "¼íïìá êáé äéáäñïìÞ ôïõ êõñßïõ åããñÜöïõ";
+ Text[ korean ] = "¸¶½ºÅ¸ ¹®¼­ÀÇ À̸§°ú °æ·Î";
+ Text[ turkish ] = "Ana belgenin adý ve veri yolu";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_LOAD_HTML_DOC
+{
+ TEXT = "Name und Pfad des HTML Dokuments" ;
+ TEXT [ English ] = "Name and path of the html document" ;
+ Text [ english_us ] = "Name and path of the html document" ;
+ Text [ portuguese_brazilian ] = "Name und Pfad des HTML Dokuments" ;
+ Text [ swedish ] = "HTML-dokumentets namn och sökväg" ;
+ Text [ danish ] = "HTML-dokumentets navn og sti" ;
+ Text [ italian ] = "Nome e percorso del documento HTML " ;
+ Text [ spanish ] = "Nombre y ruta del documento HTML " ;
+ Text [ french ] = "Nom et chemin du document HTML" ;
+ Text [ dutch ] = "Naam en pad van het HTML document" ;
+ Text [ portuguese ] = "Nome e atalho do documento HTML" ;
+ Text[ chinese_simplified ] = "HTML ÎĵµÃû³ÆºÍ·¾¶";
+ Text[ russian ] = "Èìÿ è ïóòü äîêóìåíòà HTML";
+ Text[ polish ] = "Nazwa i œcie¿ka dokumentu HTML";
+ Text[ japanese ] = "HTMLŒ`Ž®ÄÞ·­ÒÝÄ‚Ì–¼‘O‚ÆÊß½";
+ Text[ chinese_traditional ] = "HTML ¤å¥ó¦WºÙ©M¸ô®|";
+ Text[ arabic ] = "ÇÓã æãÓÇÑ ãÓÊäÏ HTML";
+ Text[ dutch ] = "Naam en pad van het HTML document";
+ Text[ chinese_simplified ] = "HTML ÎĵµÃû³ÆºÍ·¾¶";
+ Text[ greek ] = "¼íïìá êáé äéáäñïìÞ ôïõ åããñÜöïõ HTML";
+ Text[ korean ] = "HTML ¸¶½ºÅ¸ ¹®¼­ÀÇ À̸§°ú °æ·Î";
+ Text[ turkish ] = "HTML belgesinin adý ve veri yolu";
+ Text[ language_user1 ] = " ";
+};
+
+InfoBox MSG_ERROR_SEND_MAIL
+{
+ BUTTONS = WB_OK ;
+ DEFBUTTON = WB_DEF_OK ;
+ MESSAGE = "Fehler beim Versenden der Nachricht." ;
+ MESSAGE [ English ] = "Error while sending mail." ;
+ MESSAGE [ norwegian ] = "Feil ved sending av mail." ;
+ MESSAGE [ italian ] = "Errore durante l'invio di un messaggio." ;
+ MESSAGE [ portuguese_brazilian ] = "Erro ao enviar correio." ;
+ MESSAGE [ portuguese ] = "Erro ao enviar correio." ;
+ MESSAGE [ finnish ] = "Virhe sähköpostia lähetettäessä." ;
+ MESSAGE [ danish ] = "Fejl ved afsendelse af meddelelsen." ;
+ MESSAGE [ french ] = "Erreur lors de l'envoi du message." ;
+ MESSAGE [ swedish ] = "Fel vid sändning av meddelande." ;
+ MESSAGE [ dutch ] = "Fout bij verzenden van bericht." ;
+ MESSAGE [ spanish ] = "Error al enviar el mensaje." ;
+ MESSAGE [ english_us ] = "Error sending mail." ;
+ MESSAGE[ chinese_simplified ] = "Ôڼķ¢µç×ÓÓʼþʱ·¢Éú´íÎó¡£";
+ MESSAGE[ language_user1 ] = " ";
+ MESSAGE[ russian ] = "Îøèáêà ïðè îòïðàâëåíèè ñîîáùåíèÿ.";
+ MESSAGE[ polish ] = "B³¹d przy wysy³aniu wiadomoœci.";
+ MESSAGE[ japanese ] = "Ò°Ù‘—M‚ÌÛ‚Ì´×°";
+ MESSAGE[ chinese_traditional ] = "¦b±Hµo¹q¤l¶l¥ó®Éµo¥Í¿ù»~¡C";
+ MESSAGE[ arabic ] = "ÎØà ÃËäÇÁ ÅÑÓÇá ÇáÑÓÇáÉ.";
+ MESSAGE[ dutch ] = "Fout bij verzenden van bericht.";
+ MESSAGE[ chinese_simplified ] = "Ôڼķ¢µç×ÓÓʼþʱ·¢Éú´íÎó¡£";
+ MESSAGE[ greek ] = "ÓöÜëìá êáôÜ ôçí áðïóôïëÞ ôïõ ìçíýìáôïò.";
+ MESSAGE[ korean ] = "¸ÞÀÏ º¸³»±â ¿À·ù.";
+ MESSAGE[ turkish ] = "Ýleti gönderilirken hata oluþtu.";
+};
+InfoBox MSG_ERROR_PASSWD
+{
+ BUTTONS = WB_OK ;
+ DEFBUTTON = WB_DEF_OK ;
+ MESSAGE = "Fehlerhaftes Passwort." ;
+ MESSAGE [ English ] = "Password doesn't match." ;
+ MESSAGE [ norwegian ] = "Passord passer ikke." ;
+ MESSAGE [ italian ] = "La password non corrisponde." ;
+ MESSAGE [ portuguese_brazilian ] = "A senha não combina." ;
+ MESSAGE [ portuguese ] = "A senha não é válida." ;
+ MESSAGE [ finnish ] = "Salasana ei kelpaa." ;
+ MESSAGE [ danish ] = "Fejagtig adgangskode" ;
+ MESSAGE [ french ] = "Mot de passe incorrect." ;
+ MESSAGE [ swedish ] = "Felaktigt lösenord." ;
+ MESSAGE [ dutch ] = "Wachtwoord niet correct." ;
+ MESSAGE [ spanish ] = "Contraseña no válida" ;
+ MESSAGE [ english_us ] = "Invalid password." ;
+ MESSAGE[ chinese_simplified ] = "´íÎóµÄ¿ÚÁî¡£";
+ MESSAGE[ russian ] = "Îøèáêà â ïàðîëå.";
+ MESSAGE[ polish ] = "Nieprawid³owe has³o.";
+ MESSAGE[ japanese ] = "³‚µ‚­‚È‚¢Ê߽ܰÄÞ";
+ MESSAGE[ chinese_traditional ] = "±K½XµL®Ä¡C";
+ MESSAGE[ arabic ] = "ßáãÉ ÓÑ ÛíÑ ÕÇáÍÉ.";
+ MESSAGE[ dutch ] = "Wachtwoord niet correct.";
+ MESSAGE[ chinese_simplified ] = "´íÎóµÄ¿ÚÁî¡£";
+ MESSAGE[ greek ] = "ÅóöáëìÝíïò êùäéêüò ðñüóâáóçò.";
+ MESSAGE[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº Æнº¿öµå";
+ MESSAGE[ turkish ] = "Yanlýþ þifre.";
+ MESSAGE[ language_user1 ] = " ";
+};
+
+/*
+ * auskommentiert, da die Toolbox z. Zt. nicht aus der Resource
+ * geladen werden kann
+Window WIN_TOOLBOX {
+HelpText [English] = "";
+HelpText [norwegian] = "";
+HelpText [italian] = "";
+HelpText [portuguese_brazilian] = "";
+HelpText [portuguese] = "";
+HelpText [finnish] = "";
+HelpText [danish] = "";
+HelpText [french] = "";
+HelpText [swedish] = "";
+HelpText [dutch] = "";
+HelpText [spanish] = "";
+HelpText [english_us] = "";
+HelpText = "Die Objektleiste enthält, je nach Bedarf, Buttons für die "
+ "Bearbeitung von Text, Rahmen, Grafik, Tabellen oder "
+ "Numerierungen.";
+HelpText[English] = "The objectbar contains, depending on your current "
+ "working context, buttons for the editing of text, "
+ "frames, graphics, tables or numberings.";
+HelpText[norwegian] = "Objektlinjen inneholder, avhengig av din aktuelle arbeidssituasjon, "
+ "knapper for redigering av tekst,"
+ " rammer, grafikker, tabeller eller nummereringer.";
+HelpText[italian] = "La barra dell'oggetto attivo contiene, in base al proprio"
+ "contesto lavorativo, pulsanti per la modifica del testo,"
+ "cornici, grafici, tabelle o numerazioni..";
+HelpText[portuguese_brazilian] = "A barra de objetos conter , dependendo do contexto de trabalho "
+ "atual, bot es para edição de texto, "
+ "molduras, gráficos, tabelas ou numeração.";
+HelpText[portuguese] = "A barra de objectos conterá, dependendo do contexto de trabalho "
+ "actual, botões para edição de texto, "
+ "molduras, gráficos, tabelas ou numeração.";
+HelpText[finnish] = "Toimintorivillä on tilanteen mukaan painikkeita, "
+ "joilla muokataan tekstiä, kehyksiä, kuvia, "
+ "taulukoita tai numeronteja.";
+HelpText[danish] = "Afhængig af din aktuelle arbejdskontekst"
+ " rummer ikonbåndet knapper for redigering af tekst, "
+ "tekstruder, grafik, tabeller eller nummereringer.";
+HelpText[french] = "Selon votre contexte de travail, la barre d'objets "
+ "contient des boutons de modification du texte, des "
+ "cadres, des graphiques, des tables ou des numérotations.";
+HelpText[swedish] = "Objektlisten innehåller, beroende på aktuellt"
+ "arbetsområde, knappar för redigering av text,"
+ "ramar, bilder, tabeller eller numreringar.";
+HelpText[dutch] = "Afhankelijk van de huidige werkomgeving bevat de objectbalk "
+ "knoppen voor het bewerken van tekst, kaders, illustraties "
+ "of nummeringen.";
+HelpText[spanish] = "La barra de objetos contiene, dependiendo del contexto "
+ "de trabajo actual, botones para la edición de texto, "
+ "marcos, gráficos, tablas o numeraciones.";
+HelpText[english_us] = "The objectbar contains, depending on your current "
+ "working context, buttons for the editing of text, "
+ "frames, graphics, tables or numberings.";
+ OUTPUTSIZE = TRUE;
+ BORDER = TRUE;
+ Size = (28,27);
+};
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+String RID_BUILDVERSION
+{
+ TEXT = UPDVER ;
+};
+
+
+String STR_FMT_STD
+{
+ TEXT = "(keins)" ;
+ TEXT [ English ] = "(none)" ;
+ TEXT [ norwegian ] = "(ingen)" ;
+ TEXT [ italian ] = "(senza)" ;
+ TEXT [ portuguese_brazilian ] = "(nenhum)" ;
+ TEXT [ portuguese ] = "(nenhum)" ;
+ TEXT [ finnish ] = "(ei mitään)" ;
+ TEXT [ danish ] = "(ingen)" ;
+ TEXT [ french ] = "(aucun(e))" ;
+ TEXT [ swedish ] = "(ingen)" ;
+ TEXT [ dutch ] = "(geen)" ;
+ TEXT [ spanish ] = "(ninguna)" ;
+ TEXT [ english_us ] = "(none)" ;
+ TEXT[ chinese_simplified ] = "(ÎÞ)";
+ TEXT[ russian ] = "(áåç)";
+ TEXT[ polish ] = "(brak)";
+ TEXT[ japanese ] = "(‚È‚µ)";
+ TEXT[ chinese_traditional ] = "(µL)";
+ TEXT[ arabic ] = "(ÈÏæä)";
+ TEXT[ dutch ] = "(geen)";
+ TEXT[ chinese_simplified ] = "(ÎÞ)";
+ TEXT[ greek ] = "(êáíÝíá)";
+ TEXT[ korean ] = "(¾øÀ½)";
+ TEXT[ turkish ] = "(yok)";
+ 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[ dutch ] = "Statistiek";
+ TEXT[ chinese_simplified ] = "ͳ¼Æ";
+ TEXT[ greek ] = "ÓôáôéóôéêÜ";
+ TEXT[ korean ] = "Åë°è";
+ TEXT[ turkish ] = "Ýstatistik";
+ TEXT[ language_user1 ] = " ";
+};
+
+ // ----------------------------
+ // Statusleisten-Ueberschriften
+ // ----------------------------
+
+String STR_STATSTR_W4WREAD
+{
+ Text = "Dokument wird importiert..." ;
+ Text [ English ] = "Importing..." ;
+ Text [ norwegian ] = "Importerer..." ;
+ Text [ italian ] = "Il documento viene importato..." ;
+ Text [ portuguese_brazilian ] = "Importando..." ;
+ Text [ portuguese ] = "A importar documento..." ;
+ Text [ finnish ] = "Tuonti..." ;
+ Text [ danish ] = "Importerer dokument..." ;
+ Text [ french ] = "Import du document en cours..." ;
+ Text [ swedish ] = "Dokument importeras..." ;
+ Text [ dutch ] = "Document wordt geïmporteerd..." ;
+ Text [ spanish ] = "Importando el documento..." ;
+ Text [ english_us ] = "Importing document..." ;
+ Text[ chinese_simplified ] = "ÊäÈëÎĵµ...";
+ Text[ russian ] = "Èìïîðò äîêóìåíòà...";
+ Text[ polish ] = "Importowanie dokumentu...";
+ Text[ japanese ] = "•¶‘‚̲ÝÎß°Ä...";
+ Text[ chinese_traditional ] = "¿é¤J¤å¥ó...";
+ Text[ arabic ] = "ÌÇÑí ÇÓÊíÑÇÏ ÇáãÓÊäÏ...";
+ Text[ dutch ] = "Document wordt geïmporteerd...";
+ Text[ chinese_simplified ] = "ÊäÈëÎĵµ...";
+ Text[ greek ] = "ÅéóáãùãÞ åããñÜöïõ...";
+ Text[ korean ] = "¹®¼­ °¡Á®¿À±â...";
+ Text[ turkish ] = "Belge içe aktarýlýyor...";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_STATSTR_W4WWRITE
+{
+ Text = "Dokument wird exportiert..." ;
+ Text [ English ] = "Exporting..." ;
+ Text [ norwegian ] = "Eksporterer..." ;
+ Text [ italian ] = "Il documento viene esportato..." ;
+ Text [ portuguese_brazilian ] = "Exportando..." ;
+ Text [ portuguese ] = "A exportar documento..." ;
+ Text [ finnish ] = "Vienti..." ;
+ Text [ danish ] = "Eksporterer dokument" ;
+ Text [ french ] = "Export du document en cours..." ;
+ Text [ swedish ] = "Dokument exporteras..." ;
+ Text [ dutch ] = "Document wordt geëxporteerd..." ;
+ Text [ spanish ] = "Exportando el documento..." ;
+ Text [ english_us ] = "Exporting document..." ;
+ Text[ chinese_simplified ] = "Êä³öÎĵµ...";
+ Text[ russian ] = "Ýêñïîðò äîêóìåíòà...";
+ Text[ polish ] = "Eksportowanie dokumentu...";
+ Text[ japanese ] = "•¶‘‚Ì´¸½Îß°Ä...";
+ Text[ chinese_traditional ] = "¿é¥X¤å¥ó...";
+ Text[ arabic ] = "ÌÇÑí ÊÕÏíÑ ÇáãÓÊäÏ...";
+ Text[ dutch ] = "Document wordt geëxporteerd...";
+ Text[ chinese_simplified ] = "Êä³öÎĵµ...";
+ Text[ greek ] = "ÅîáãùãÞ åããñÜöïõ...";
+ Text[ korean ] = "¹®¼­ º¸³»±â...";
+ Text[ turkish ] = "Belge dýþa aktarýlýyor...";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_STATSTR_SWGREAD
+{
+ Text = "Dokument wird geladen..." ;
+ Text [ English ] = "Loading..." ;
+ Text [ norwegian ] = "Laster inn..." ;
+ Text [ italian ] = "Il documento viene caricato..." ;
+ Text [ portuguese_brazilian ] = "Carregando..." ;
+ Text [ portuguese ] = "A carregar documento..." ;
+ Text [ finnish ] = "Lataus..." ;
+ Text [ danish ] = "Indlæser dokument..." ;
+ Text [ french ] = "Document en cours de chargement..." ;
+ Text [ swedish ] = "Dokument laddas..." ;
+ Text [ dutch ] = "Document wordt gemaakt..." ;
+ Text [ spanish ] = "Cargando el documento..." ;
+ Text [ english_us ] = "Loading document..." ;
+ Text[ chinese_simplified ] = "×°ÔØÎĵµ...";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Äîêóìåíò çàãðóæàåòñÿ...";
+ Text[ polish ] = "£adowanie dokumentu...";
+ Text[ japanese ] = "•¶‘‚Ì“Ç‚Ýž‚Ý...";
+ Text[ chinese_traditional ] = "¸Ë¸ü¤å¥ó...";
+ Text[ arabic ] = "ÌÇÑí ÊÍãíá ÇáãÓÊäÏ...";
+ Text[ dutch ] = "Document wordt gemaakt...";
+ Text[ chinese_simplified ] = "×°ÔØÎĵµ...";
+ Text[ greek ] = "Ôï Ýããñáöï öïñôþíåôáé...";
+ Text[ korean ] = "¹®¼­ ·Îµù...";
+ Text[ turkish ] = "Belge yükleniyor...";
+};
+
+String STR_STATSTR_SWGWRITE
+{
+ Text = "Dokument wird gespeichert..." ;
+ Text [ English ] = "Saving..." ;
+ Text [ norwegian ] = "Lagrer..." ;
+ Text [ italian ] = "Il documento viene salvato..." ;
+ Text [ portuguese_brazilian ] = "Gravando..." ;
+ Text [ portuguese ] = "A guardar documento..." ;
+ Text [ finnish ] = "Tallennus..." ;
+ Text [ danish ] = "Gemmer dokument..." ;
+ Text [ french ] = "Enreg. du document en cours..." ;
+ Text [ swedish ] = "Dokument sparas..." ;
+ Text [ dutch ] = "Document wordt opgeslagen..." ;
+ Text [ spanish ] = "Guardando el documento..." ;
+ Text [ english_us ] = "Saving document..." ;
+ Text = "Dokument wird gespeichert..." ;
+ Text[ chinese_simplified ] = "´æÅÌÎĵµ...";
+ Text[ russian ] = "Äîêóìåíò ñîõðàíÿåòñÿ...";
+ Text[ polish ] = "Zapisywanie dokumentu...";
+ Text[ japanese ] = "•¶‘‚Ì•Û‘¶...";
+ Text[ chinese_traditional ] = "¥¿¦bÀx¦s¤å¥ó...";
+ Text[ arabic ] = "ÌÇÑí ÍÝÙ ÇáãÓÊäÏ...";
+ Text[ dutch ] = "Document wordt opgeslagen...";
+ Text[ chinese_simplified ] = "´æÅÌÎĵµ...";
+ Text[ greek ] = "ÁðïèÞêåõóç åããñÜöïõ...";
+ Text[ korean ] = "¹®¼­ ÀúÀå...";
+ Text[ turkish ] = "Belge kaydediliyor...";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_STATSTR_REFORMAT
+{
+ TEXT = "Neuformatierung des Dokumentes..." ;
+ TEXT [ English ] = "Repaginating..." ;
+ TEXT [ norwegian ] = "Gjør sidenummerering på nyttRepaginating..." ;
+ TEXT [ italian ] = "Riformattazione del documento..." ;
+ TEXT [ portuguese_brazilian ] = "Repaginando..." ;
+ TEXT [ portuguese ] = "Nova formatação do documento..." ;
+ TEXT [ finnish ] = "Sivutus..." ;
+ TEXT [ danish ] = "Genformatering af dokumentet..." ;
+ TEXT [ french ] = "Repagination du document..." ;
+ TEXT [ swedish ] = "Omformatering av dokumentet..." ;
+ TEXT [ dutch ] = "Bezig met nieuwe opmaak..." ;
+ TEXT [ spanish ] = "Reformateado del documento..." ;
+ TEXT [ english_us ] = "Repagination..." ;
+ TEXT[ chinese_simplified ] = "ÖØÐÂÖÆ×÷Îĵµ¸ñʽ...";
+ TEXT[ language_user1 ] = " ";
+ TEXT[ russian ] = "Íîâîå ôîðìàòèðîâàíèå äîêóìåíòà...";
+ TEXT[ polish ] = "Ponowne formatowanie dokumentu...";
+ TEXT[ japanese ] = "ÄÞ·­ÒÝÄ‚ÌV‹K‘Ž®Ý’è...";
+ TEXT[ chinese_traditional ] = "­«·s¨î§@¤å¥ó®æ¦¡...";
+ TEXT[ arabic ] = "ÅÚÇÏÉ ÊäÓíÞ ÇáãÓÊäÏ...";
+ TEXT[ dutch ] = "Bezig met nieuwe opmaak...";
+ TEXT[ chinese_simplified ] = "ÖØÐÂÖÆ×÷Îĵµ¸ñʽ...";
+ TEXT[ greek ] = "Ìïñöïðïßçóç åê íÝïõ ôïõ åããñÜöïõ...";
+ TEXT[ korean ] = "ÆäÀÌÁö ¸Å±â±â...";
+ TEXT[ turkish ] = "Belge yeniden formatlanýyor...";
+};
+
+String STR_STATSTR_AUTOFORMAT
+{
+ TEXT = "Autoformatierung des Dokumentes..." ;
+ TEXT [ English ] = "Autoformatting..." ;
+ TEXT [ norwegian ] = "Autoformaterer..." ;
+ TEXT [ italian ] = "Formattazione automatica..." ;
+ TEXT [ portuguese_brazilian ] = "Formatação automática..." ;
+ TEXT [ portuguese ] = "A formatar documento automaticamente..." ;
+ TEXT [ finnish ] = "Automaattimuotoilu..." ;
+ TEXT [ danish ] = "Autoformatering af dokumentet..." ;
+ TEXT [ french ] = "Mise en forme automatique du document..." ;
+ TEXT [ swedish ] = "Autoformatering av dokumentet..." ;
+ TEXT [ dutch ] = "Bezig met automatisch opmaken..." ;
+ TEXT [ spanish ] = "AutoFormato del documento..." ;
+ TEXT [ english_us ] = "Formatting document automatically..." ;
+ TEXT[ chinese_simplified ] = "Îĵµ×Ô¶¯¸ñʽ»¯...";
+ TEXT[ language_user1 ] = " ";
+ TEXT[ russian ] = "Àâòîôîðìàòèðîâàíèå äîêóìåíòà...";
+ TEXT[ polish ] = "Autoformatowanie dokumentu";
+ TEXT[ japanese ] = "ÄÞ·­ÒÝĂ̵°ÄÌ«°Ï¯Ä...";
+ TEXT[ chinese_traditional ] = "ª«¥ó¦Û°Ê®æ¦¡¤Æ...";
+ TEXT[ arabic ] = "ÊäÓíÞ ÊáÞÇÆí ááãÓÊäÏ...";
+ TEXT[ dutch ] = "Bezig met automatisch opmaken...";
+ TEXT[ chinese_simplified ] = "Îĵµ×Ô¶¯¸ñʽ»¯...";
+ TEXT[ greek ] = "Áõôüìáôç ìïñöïðïßçóç ôïõ åããñÜöïõ...";
+ TEXT[ korean ] = "ÀÚµ¿ ¹®¼­ ¼­½Ä ¼³Á¤...";
+ TEXT[ turkish ] = "Otomatik belge formatlama...";
+};
+
+String STR_STATSTR_IMPGRF
+{
+ Text = "Grafik wird importiert..." ;
+ Text [ English ] = "Importing picture..." ;
+ Text [ norwegian ] = "Importerer bilde..." ;
+ Text [ italian ] = "L'immagine viene importata..." ;
+ Text [ portuguese_brazilian ] = "Importando figura..." ;
+ Text [ portuguese ] = "A importar imagem..." ;
+ Text [ finnish ] = "Kuvan tuonti..." ;
+ Text [ danish ] = "Importerer billede..." ;
+ Text [ french ] = "Import de l'image en cours..." ;
+ Text [ swedish ] = "Grafik importeras..." ;
+ Text [ dutch ] = "Afbeelding wordt geïmporteerd..." ;
+ Text [ spanish ] = "Importando imagen..." ;
+ Text [ english_us ] = "Importing graphics..." ;
+ Text[ chinese_simplified ] = "ÊäÈëͼÐÎ...";
+ Text[ russian ] = "Èìïîðò ãðàôèêè...";
+ Text[ polish ] = "Importowanie grafiki...";
+ Text[ japanese ] = "}‚̲ÝÎß°Ä’†...";
+ Text[ chinese_traditional ] = "¿é¤J¹Ï¤ù...";
+ Text[ arabic ] = "ÌÇÑí ÇÓÊíÑÇÏ ÇáÑÓã...";
+ Text[ dutch ] = "Afbeelding wordt geïmporteerd...";
+ Text[ chinese_simplified ] = "ÊäÈëͼÐÎ...";
+ Text[ greek ] = "ÅéóáãùãÞ ãñáöéêïý...";
+ Text[ korean ] = "±×·¡ÇÈ °¡Á®¿À±â...";
+ Text[ turkish ] = "Grafik içe aktarýlýyor...";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_STATSTR_SEARCH
+{
+ Text = "Suche..." ;
+ Text [ English ] = "search..." ;
+ Text [ norwegian ] = "Søker..." ;
+ Text [ italian ] = "Cerca..." ;
+ Text [ portuguese_brazilian ] = "buscar..." ;
+ Text [ portuguese ] = "A localizar..." ;
+ Text [ finnish ] = "Etsintä..." ;
+ Text [ danish ] = "Søger..." ;
+ Text [ french ] = "Recherche..." ;
+ Text [ swedish ] = "Söker..." ;
+ Text [ dutch ] = "Bezig met zoeken..." ;
+ Text [ spanish ] = "Búsqueda..." ;
+ Text [ english_us ] = "Search..." ;
+ Text[ chinese_simplified ] = "ËÑÑ°...";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Ïîèñê...";
+ Text[ polish ] = "Szukaj...";
+ Text[ japanese ] = "ŒŸõ...";
+ Text[ chinese_traditional ] = "´M§ä...";
+ Text[ arabic ] = "ÈÍË...";
+ Text[ dutch ] = "Bezig met zoeken...";
+ Text[ chinese_simplified ] = "ËÑÑ°...";
+ Text[ greek ] = "ÁíáæÞôçóç...";
+ Text[ korean ] = "ã±â...";
+ Text[ turkish ] = "Ara...";
+};
+
+String STR_STATSTR_FORMAT
+{
+ Text = "Formatiere..." ;
+ Text [ English ] = "Formatting..." ;
+ Text [ norwegian ] = "Formaterer..." ;
+ Text [ italian ] = "Formattazione..." ;
+ Text [ portuguese_brazilian ] = "Formatando..." ;
+ Text [ portuguese ] = "A formatar..." ;
+ Text [ finnish ] = "Muotoilu..." ;
+ Text [ danish ] = "Formaterer..." ;
+ Text [ french ] = "Formatage..." ;
+ Text [ swedish ] = "Formaterar..." ;
+ Text [ dutch ] = "Bezig met opmaken..." ;
+ Text [ spanish ] = "Formateando..." ;
+ Text [ english_us ] = "Formatting..." ;
+ Text[ chinese_simplified ] = "¸ñʽ»¯...";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Ôîðìàò...";
+ Text[ polish ] = "Formatuj";
+ Text[ japanese ] = "‘Ž®Ý’è...";
+ Text[ chinese_traditional ] = "®æ¦¡¤Æ...";
+ Text[ arabic ] = "ÊäÓíÞ...";
+ Text[ dutch ] = "Bezig met opmaken...";
+ Text[ chinese_simplified ] = "¸ñʽ»¯...";
+ Text[ greek ] = "Ìïñöïðïßçóç...";
+ Text[ korean ] = "¼­½Ä ¼³Á¤...";
+ Text[ turkish ] = "Formatlanýyor...";
+};
+
+String STR_STATSTR_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 ] = "Drukuj...";
+ Text[ japanese ] = "ˆóü...";
+ Text[ chinese_traditional ] = "¦C¦L...";
+ Text[ arabic ] = "ØÈÇÚÉ...";
+ Text[ dutch ] = "Bezig met afdrukken...";
+ Text[ chinese_simplified ] = "´òÓ¡...";
+ Text[ greek ] = "Åêôýðùóç...";
+ Text[ korean ] = "Àμâ...";
+ Text[ turkish ] = "Yazdýrýlýyor...";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_STATSTR_LAYOUTINIT
+{
+ Text = "Konvertiere..." ;
+ Text [ English ] = "Converting..." ;
+ Text [ norwegian ] = "Konverterer..." ;
+ Text [ italian ] = "Converti..." ;
+ Text [ portuguese_brazilian ] = "Convertendo..." ;
+ Text [ portuguese ] = "A converter..." ;
+ Text [ finnish ] = "Muunto..." ;
+ Text [ danish ] = "Konverterer..." ;
+ Text [ french ] = "Conversion..." ;
+ Text [ swedish ] = "Konverterar..." ;
+ Text [ dutch ] = "Bezig met converteren..." ;
+ Text [ spanish ] = "Convirtiendo..." ;
+ Text [ english_us ] = "Converting..." ;
+ Text[ chinese_simplified ] = "ת»»...";
+ Text[ russian ] = "Ïðåîáðàçîâàíèå...";
+ Text[ polish ] = "Konwertuj...";
+ Text[ japanese ] = "•ÏŠ·...";
+ Text[ chinese_traditional ] = "Âà´«...";
+ Text[ arabic ] = "ÊÍæíá...";
+ Text[ dutch ] = "Bezig met converteren...";
+ Text[ chinese_simplified ] = "ת»»...";
+ Text[ greek ] = "ÌåôáôñïðÞ...";
+ Text[ korean ] = "º¯È¯...";
+ Text[ turkish ] = "Dönüþtürülüyor...";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_STATSTR_LETTER
+{
+ Text = "Brief" ;
+ Text [ English ] = "Letter" ;
+ Text [ english_us ] = "Letter" ;
+ Text [ italian ] = "Lettera" ;
+ Text [ spanish ] = "Carta" ;
+ Text [ french ] = "Lettre" ;
+ Text [ dutch ] = "Brief" ;
+ Text [ swedish ] = "Brev" ;
+ Text [ danish ] = "Brev" ;
+ Text [ portuguese_brazilian ] = "Brief" ;
+ Text [ portuguese ] = "Carta" ;
+ Text[ chinese_simplified ] = "Ðź¯";
+ Text[ russian ] = "Ïèñüìî";
+ Text[ polish ] = "List";
+ Text[ japanese ] = "ÚÀ°";
+ Text[ chinese_traditional ] = "«H¨ç";
+ Text[ arabic ] = "ÎØÇÈ";
+ Text[ dutch ] = "Brief";
+ Text[ chinese_simplified ] = "Ðź¯";
+ Text[ greek ] = "ÅðéóôïëÞ";
+ Text[ korean ] = "ÆíÁö";
+ Text[ turkish ] = "Mektup";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_STATSTR_SPELL
+{
+ Text = "Rechtschreibprüfung..." ;
+ Text [ English ] = "Spelling..." ;
+ Text [ english_us ] = "Spellcheck..." ;
+ Text [ italian ] = "Controllo ortografico..." ;
+ Text [ spanish ] = "Revisión ortográfica..." ;
+ Text [ french ] = "Orthographe..." ;
+ Text [ dutch ] = "Bezig met spellingcontrole..." ;
+ Text [ swedish ] = "Rättstavningskontroll..." ;
+ Text [ danish ] = "Stavekontrol..." ;
+ Text [ portuguese_brazilian ] = "Rechtschreibprüfung..." ;
+ Text [ portuguese ] = "Verificação ortográfica..." ;
+ Text[ chinese_simplified ] = "Õý×Ö·¨¼ì²é...";
+ Text[ russian ] = "Ïðîâåðêà îðôîãðàôèè...";
+ Text[ polish ] = "Sprawdzanie pisowni...";
+ Text[ japanese ] = "•¶ÍZ³...";
+ Text[ chinese_traditional ] = "«÷¦r...";
+ Text[ arabic ] = "ÊÏÞíÞ ÅãáÇÆí...";
+ Text[ dutch ] = "Bezig met spellingcontrole...";
+ Text[ chinese_simplified ] = "Õý×Ö·¨¼ì²é...";
+ Text[ greek ] = "¸ëåã÷ïò ïñèïãñáößáò...";
+ Text[ korean ] = "¸ÂÃã¹ý °Ë»ç...";
+ Text[ turkish ] = "Yazým denetimi...";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_STATSTR_HYPHEN
+{
+ Text = "Silbentrennung..." ;
+ Text [ English ] = "Hyphenating..." ;
+ Text [ english_us ] = "Hyphenation..." ;
+ Text [ dutch ] = "Woordafbreking..." ;
+ Text [ italian ] = "Sillabazione..." ;
+ Text [ spanish ] = "Separación silábica..." ;
+ Text [ french ] = "Coupure de mots..." ;
+ Text [ swedish ] = "Avstavning..." ;
+ Text [ danish ] = "Orddeling..." ;
+ Text [ portuguese_brazilian ] = "Silbentrennung..." ;
+ Text [ portuguese ] = "Divisão silábica..." ;
+ Text[ chinese_simplified ] = "Á¬×Ö·û...";
+ Text[ russian ] = "Ðàññòàíîâêà ïåðåíîñîâ...";
+ Text[ polish ] = "Dzielenie wyrazów";
+ Text[ japanese ] = "ʲÌÈ°¼®Ý...";
+ Text[ chinese_traditional ] = "³s±µ²Å...";
+ Text[ arabic ] = "ÝÕá ÇáãÞÇØÚ...";
+ Text[ dutch ] = "Woordafbreking...";
+ Text[ chinese_simplified ] = "Á¬×Ö·û...";
+ Text[ greek ] = "Óõëëáâéóìüò...";
+ Text[ korean ] = "ÇÏÀÌÇÂ ...";
+ Text[ turkish ] = "Heceleme...";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_STATSTR_TOX_INSERT
+{
+ Text = "Verzeichnis wird eingefügt..." ;
+ Text [ English ] = "Inserting Index..." ;
+ Text [ english_us ] = "Inserting Index..." ;
+ Text [ italian ] = "L'indice viene inserito..." ;
+ Text [ spanish ] = "Insertando directorio..." ;
+ Text [ french ] = "Index en cours d'insertion..." ;
+ Text [ dutch ] = "Index wordt ingevoegd..." ;
+ Text [ swedish ] = "Förteckning infogas..." ;
+ Text [ danish ] = "Indsætter indeks..." ;
+ Text [ portuguese_brazilian ] = "Verzeichnis wird eingefügt..." ;
+ Text [ portuguese ] = "Inserindo índice..." ;
+ Text[ chinese_simplified ] = "²åÈëË÷Òý...";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Âñòàâêà óêàçàòåëÿ...";
+ Text[ polish ] = "Wstawianie indeksu...";
+ Text[ japanese ] = "õˆø‚Ì‘}“ü...";
+ Text[ chinese_traditional ] = "´¡¤J¥Ø¿ý...";
+ Text[ arabic ] = "ÌÇÑí ÅÏÑÇÌ ÇáÝåÑÓ...";
+ Text[ dutch ] = "Index wordt ingevoegd...";
+ Text[ chinese_simplified ] = "²åÈëË÷Òý...";
+ Text[ greek ] = "ÅéóáãùãÞ êáôáëüãïõ...";
+ Text[ korean ] = "»öÀÎ »ðÀÔ...";
+ Text[ turkish ] = "Dizin ekleniyor...";
+};
+
+String STR_STATSTR_TOX_UPDATE
+{
+ Text = "Verzeichnis wird aktualisiert..." ;
+ Text [ English ] = "Updating Index..." ;
+ Text [ english_us ] = "Updating Index..." ;
+ Text [ italian ] = "L'indice viene aggiornato..." ;
+ Text [ spanish ] = "Actualizando directorio..." ;
+ Text [ french ] = "Index en cours d'actualisation..." ;
+ Text [ dutch ] = "Index wordt geactualiseerd..." ;
+ Text [ swedish ] = "Förteckning uppdateras..." ;
+ Text [ danish ] = "Opdaterer indeks..." ;
+ Text [ portuguese_brazilian ] = "Verzeichnis wird aktualisiert..." ;
+ Text [ portuguese ] = "Actualizando índice..." ;
+ Text[ chinese_simplified ] = "¸üÐÂË÷Òý...";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Îáíîâëåíèå óêàçàòåëÿ...";
+ Text[ polish ] = "Aktualizacja indeksu...";
+ Text[ japanese ] = "õˆø‚ÌXV...";
+ Text[ chinese_traditional ] = "§ó·s¥Ø¿ý...";
+ Text[ arabic ] = "ÌÇÑí ÊÍÏíË ÇáÝåÑÓ...";
+ Text[ dutch ] = "Index wordt geactualiseerd...";
+ Text[ chinese_simplified ] = "¸üÐÂË÷Òý...";
+ Text[ greek ] = "ÅíçìÝñùóç êáôáëüãïõ...";
+ Text[ korean ] = "»öÀÎ ¾÷ µ¥ÀÌÆ®...";
+ Text[ turkish ] = "Dizin güncelleniyor...";
+};
+
+String STR_STATSTR_SUMMARY
+{
+ Text = "Abstrakt wird erstellt..." ;
+ Text [ English ] = "Creating summary..." ;
+ Text [ english_us ] = "Creating abstract..." ;
+ Text [ portuguese_brazilian ] = "Abstrakt wird erstellt..." ;
+ Text [ swedish ] = "Utdrag skapas..." ;
+ Text [ danish ] = "Opretter abstract..." ;
+ Text [ italian ] = "Il sunto viene creato..." ;
+ Text [ spanish ] = "Creando el extracto..." ;
+ Text [ french ] = "Synthèse en cours de création..." ;
+ Text [ dutch ] = "Overzicht wordt gemaakt..." ;
+ Text [ portuguese ] = "A criar Sumário..." ;
+ Text[ chinese_simplified ] = "ÖÆ×÷ÕªÒª...";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Èäåò ñîçäàíèå ïðîñìîòðà äîêóìåíòà...";
+ Text[ polish ] = "Tworzenie Abstraktu...";
+ Text[ japanese ] = "—v–ñ‚Ìì¬...";
+ Text[ chinese_traditional ] = "»s§@ºK­n...";
+ Text[ arabic ] = "ÌÇÑí ÅäÔÇÁ ÇáÊáÎíÕ...";
+ Text[ dutch ] = "Overzicht wordt gemaakt...";
+ Text[ chinese_simplified ] = "ÖÆ×÷ÕªÒª...";
+ Text[ greek ] = "Äçìéïõñãßá abstract...";
+ Text[ korean ] = "¿ä¾à ¸¸µé±â...";
+ Text[ turkish ] = "Özet oluþturuluyor...";
+};
+
+String STR_STATSTR_SWGPRTOLENOTIFY
+{
+ Text = "Objekte Anpassen..." ;
+ Text [ English ] = "Adjust Objects..." ;
+ Text[ english_us ] = "Adapt Objects...";
+ Text[ portuguese ] = "Ajustar objectos...";
+ Text[ russian ] = "Âûðîâíÿòü îáúåêòû...";
+ Text[ dutch ] = "Objecten aanpassen...";
+ Text[ french ] = "Adapter les objets...";
+ Text[ spanish ] = "Ajustar objetos...";
+ Text[ italian ] = "Adatta oggetti...";
+ Text[ danish ] = "Tilpas objekter...";
+ Text[ swedish ] = "Anpassa objekt...";
+ Text[ polish ] = "Dopasuj obiekty...";
+ Text[ portuguese_brazilian ] = "Adjust Objects...";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä‚Ì’²®...";
+ Text[ chinese_simplified ] = "µ÷Õû¶ÔÏó...";
+ Text[ chinese_traditional ] = "½Õ¾ãª«¥ó...";
+ Text[ arabic ] = "ÖÈØ ßÇÆäÇÊ...";
+ Text[ dutch ] = "Objecten aanpassen...";
+ Text[ chinese_simplified ] = "µ÷Õû¶ÔÏó...";
+ Text[ greek ] = "ÐñïóáñìïãÞ áíôéêåéìÝíùí...";
+ Text[ korean ] = "°³Ã¼ Á¶Á¤...";
+ Text[ turkish ] = "Nesneleri uyarla...";
+ Text[ language_user1 ] = " ";
+};
+
+
+QueryBox MSG_COMCORE_ASKSEARCH
+{
+ Buttons = WB_YES_NO_CANCEL ;
+ DefButton = WB_DEF_YES ;
+ Message = "Diese Aktion benötigt fürs Undo sehr viel Speicher.\nWollen Sie das Undo abschalten?" ;
+ Message [ English ] = "This action needs for undo many memory.\nWould you disable undo?" ;
+ Message [ norwegian ] = "Hvis du vil angre denne handlingen trenger du mye minne.\nVil du sperre angrefunksjonen?" ;
+ Message [ italian ] = "L'annullamento di questa azione occorre molta memoria.\nVolete disattivare la possibilità di annullare?" ;
+ Message [ portuguese_brazilian ] = "Esta ação requer muita memória para desfazer.\nDeseja desativar a função desfazer?" ;
+ Message [ portuguese ] = "Para poder anular esta acção é necessária muita memória.\nDeseja cancelar esta função?" ;
+ Message [ finnish ] = "Tämän toiminnon kumoamiseen tarvitaan paljon muistia.\nPoistetaanko kumoamismahdollisuus käytöstä?" ;
+ Message [ danish ] = "Denne handling kræver megen hukommelse til fortryd-funktionen\nVil du slå fortryd-funktionen fra?" ;
+ Message [ french ] = "Cette action nécessite beaucoup de mémoire pour l'annulation (Undo).\nVoulez-vous désactiver l'annulation ?" ;
+ Message [ swedish ] = "Denna åtgärd kräver alltför mycket minne för Ångra-funktionen.\nVill Du stänga av Ångra-funktionen?" ;
+ Message [ dutch ] = "Het ongedaan maken van deze bewerking beslaat veel geheugen.\nWilt U \"Ongedaan maken\" opheffen ?" ;
+ Message [ spanish ] = "Esta acción necesita mucha memoria para la operación de Deshacer.\n¿Desea desactivar la opción de deshacer?" ;
+ Message [ english_us ] = "A large amount of memory is required to undo this action.\nDo you want to cancel the undo?" ;
+ Message[ chinese_simplified ] = "³·ÏûÃüÁÄÜÐèÒªºÜ¶àµÄÄÚ´æ¡£\nÄúҪʧ»î³·ÏûÃüÁÄÜÂð£¿";
+ Message[ russian ] = "Ýòîìó äåéñòâèþ íåîáõîäèìî äëÿ îòìåíû ñëèøêîì ìíîãî ïàìÿòè.\nÂû õîòèòå îòêëþ÷èòü îòìåíó?";
+ Message[ polish ] = "Cofniêcie tej akcji wymaga du¿ej iloœci pamiêci.\nCzy chcesz przerwaæ cofniêcie?";
+ Message[ japanese ] = "‚±‚Ìì‹Æ‚ͤŒ³‚É–ß‚·‚½‚ß‚É”ñí‚É‘½‚­‚ÌÒÓØ‚ª•K—v‚Å‚·B\nŒ³‚É–ß‚·‚±‚Æ‚ðŽæ‚è‚â‚ß‚Ü‚·‚©?";
+ Message[ chinese_traditional ] = "´_­ì¥\\¯à»Ý­n«Ü¦hªº°O¾ÐÅé¡C\n±z­n¥¢¬¡´_­ì¥\\¯à¡H";
+ Message[ arabic ] = "ÇáÊÑÇÌÚ Úä åÐÇ ÇáÅÌÑÇÁ íÊØáÈ ÐÇßÑÉ ßÈíÑÉ ÌÏÇð.\nåá ÊÑíÏ ÅáÛÇÁ ÇáÊÑÇÌÚ¿";
+ Message[ dutch ] = "Het ongedaan maken van deze bewerking beslaat veel geheugen.\nWilt U \"Ongedaan maken\" opheffen ?";
+ Message[ chinese_simplified ] = "³·ÏûÃüÁÄÜÐèÒªºÜ¶àµÄÄÚ´æ¡£\nÄúҪʧ»î³·ÏûÃüÁÄÜÂð£¿";
+ Message[ greek ] = "Ç åêôÝëåóç áõôÞò ôçò åíÝñãåéáò áðáéôåß ìåãÜëç ðïóüôçôá ìíÞìçò.\nÈÝëåôå íá áêõñþóåôå ôçí áíáßñåóç;";
+ Message[ korean ] = "ÀÌ ÀÛµ¿À» Ãë¼Ò¸¦ À§ÇÏ¿© ´ë¿ë·®ÀÇ ¸Þ¸ð¸®°¡ ¿ä±¸µË´Ï´Ù.\n½ÇÇàÃë¼Ò¸¦ Ãë¼ÒÇϽðڽÀ´Ï±î?";
+ Message[ turkish ] = "Bu iþlemde geri alma için büyük miktarda bellek gerekiyor.\nGeri alma iþlevini kapatmak istiyor musunuz?";
+ Message[ language_user1 ] = " ";
+};
+
+Bitmap RID_GRAPHIC_REPLACEBMP
+{
+ File = "grafikei.bmp" ;
+};
+
+Bitmap RID_GRAPHIC_ERRORBMP
+{
+ File = "grafikde.bmp" ;
+};
+
+String STR_TABLE_DEFNAME
+{
+ Text = "Tabelle" ;
+ Text [ ENGLISH ] = "Table" ;
+ Text [ norwegian ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ portuguese_brazilian ] = "Tabela" ;
+ Text [ portuguese ] = "Tabela" ;
+ Text [ finnish ] = "Taulukko" ;
+ Text [ danish ] = "Tabel" ;
+ Text [ french ] = "Tableau" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ dutch ] = "Tabel" ;
+ Text [ spanish ] = "Tabla" ;
+ Text [ english_us ] = "Table" ;
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "Tabela";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÌÏæá";
+ Text[ dutch ] = "Tabel";
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "Ç¥";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_GRAPHIC_DEFNAME
+{
+ TEXT = "Grafik" ;
+ TEXT [ English ] = "Graphic" ;
+ TEXT [ norwegian ] = "Graphic" ;
+ TEXT [ italian ] = "Immagine" ;
+ TEXT [ portuguese_brazilian ] = "Gráfico" ;
+ TEXT [ portuguese ] = "Imagem" ;
+ TEXT [ finnish ] = "Kuva" ;
+ TEXT [ danish ] = "Grafik" ;
+ TEXT [ french ] = "Image" ;
+ TEXT [ swedish ] = "Grafik" ;
+ TEXT [ dutch ] = "Afbeelding" ;
+ TEXT [ spanish ] = "Imagen" ;
+ TEXT [ english_us ] = "Graphic" ;
+ TEXT[ chinese_simplified ] = "ͼÐÎ";
+ TEXT[ russian ] = "Ðèñóíîê";
+ TEXT[ polish ] = "Grafika";
+ TEXT[ japanese ] = "}";
+ TEXT[ chinese_traditional ] = "¹Ï¤ù";
+ TEXT[ arabic ] = "ÕæÑÉ";
+ TEXT[ dutch ] = "Afbeelding";
+ TEXT[ chinese_simplified ] = "ͼÐÎ";
+ TEXT[ greek ] = "Ãñáöéêü";
+ TEXT[ korean ] = "±×·¡ÇÈ";
+ TEXT[ turkish ] = "Grafik";
+ TEXT[ language_user1 ] = " ";
+};
+
+String STR_OBJECT_DEFNAME
+{
+ TEXT = "Objekt" ;
+ TEXT [ English ] = "Object" ;
+ TEXT [ norwegian ] = "Object" ;
+ TEXT [ italian ] = "Oggetto" ;
+ TEXT [ portuguese_brazilian ] = "Objeto" ;
+ TEXT [ portuguese ] = "Objecto" ;
+ TEXT [ finnish ] = "Objekti" ;
+ TEXT [ danish ] = "Objekt" ;
+ TEXT [ french ] = "Objet" ;
+ TEXT [ swedish ] = "Objekt" ;
+ TEXT [ dutch ] = "Object" ;
+ TEXT [ spanish ] = "Objeto" ;
+ TEXT [ english_us ] = "Object" ;
+ TEXT[ chinese_simplified ] = "¶ÔÏó";
+ TEXT[ russian ] = "Îáúåêò";
+ TEXT[ polish ] = "Obiekt";
+ TEXT[ japanese ] = "µÌÞ¼Þª¸Ä";
+ TEXT[ chinese_traditional ] = "ª«¥ó";
+ TEXT[ arabic ] = "ßÇÆä";
+ TEXT[ dutch ] = "Object";
+ TEXT[ chinese_simplified ] = "¶ÔÏó";
+ TEXT[ greek ] = "Áíôéêåßìåíï";
+ TEXT[ korean ] = "°³Ã¼";
+ TEXT[ turkish ] = "Nesne";
+ TEXT[ language_user1 ] = " ";
+};
+
+String STR_FRAME_DEFNAME
+{
+ Text = "Rahmen" ;
+ Text [ English ] = "Frames" ;
+ Text [ norwegian ] = "Rammer" ;
+ Text [ italian ] = "Cornice" ;
+ Text [ portuguese_brazilian ] = "Molduras" ;
+ Text [ portuguese ] = "Moldura" ;
+ Text [ finnish ] = "Kehys" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ french ] = "Cadre" ;
+ Text [ swedish ] = "Ram" ;
+ Text [ dutch ] = "Kader" ;
+ Text [ spanish ] = "Marco" ;
+ Text [ english_us ] = "Frame" ;
+ Text[ chinese_simplified ] = "¿ò";
+ Text[ russian ] = "Ðàìêà";
+ Text[ polish ] = "Ramka";
+ Text[ japanese ] = "÷½ÄÎÞ¯¸½";
+ Text[ chinese_traditional ] = "¤å¦r¤è¶ô";
+ Text[ arabic ] = "ÅØÇÑ";
+ Text[ dutch ] = "Kader";
+ Text[ chinese_simplified ] = "¿ò";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "Çerçeve";
+ Text[ language_user1 ] = " ";
+};
+String STR_REGION_DEFNAME
+{
+ Text = "Bereich" ;
+ Text [ English ] = "section" ;
+ Text [ norwegian ] = "section" ;
+ Text [ italian ] = "Sezione" ;
+ Text [ portuguese_brazilian ] = "seção" ;
+ Text [ portuguese ] = "Secção" ;
+ Text [ finnish ] = "osa" ;
+ Text [ danish ] = "Område" ;
+ Text [ french ] = "Section" ;
+ Text [ swedish ] = "Område" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ spanish ] = "Area" ;
+ Text [ english_us ] = "Section" ;
+ Text[ chinese_simplified ] = "ÇøÓò";
+ Text[ russian ] = "Îáëàñòü";
+ Text[ polish ] = "Obszar";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "°Ï°ì";
+ Text[ arabic ] = "äØÇÞ";
+ Text[ dutch ] = "Bereik";
+ Text[ chinese_simplified ] = "ÇøÓò";
+ Text[ greek ] = "Åíüôçôá";
+ Text[ korean ] = "±¸¿ª";
+ Text[ turkish ] = "Bölüm";
+ Text[ language_user1 ] = " ";
+};
+String STR_NUMRULE_DEFNAME
+{
+ Text = "Nummerierung" ;
+ Text [ English ] = "Numbering" ;
+ Text [ norwegian ] = "Numbering" ;
+ Text [ italian ] = "Numerazione" ;
+ Text [ portuguese_brazilian ] = "NumeraþÒo" ;
+ Text [ portuguese ] = "Numeração" ;
+ Text [ finnish ] = "Numerointi" ;
+ Text [ danish ] = "Nummerering" ;
+ Text [ french ] = "Numérotation" ;
+ Text [ swedish ] = "Numrering" ;
+ Text [ dutch ] = "Nummering" ;
+ Text [ spanish ] = "Numeración" ;
+ Text [ english_us ] = "Numbering" ;
+ Text[ chinese_simplified ] = "񅧏";
+ Text[ russian ] = "Íóìåðàöèÿ";
+ Text[ polish ] = "Numeracja";
+ Text[ japanese ] = "”Ô†•t‚¯";
+ Text[ chinese_traditional ] = "½s¸¹";
+ Text[ arabic ] = "ÇáÊÑÞíã";
+ Text[ dutch ] = "Nummering";
+ Text[ chinese_simplified ] = "񅧏";
+ Text[ greek ] = "Áñßèìçóç";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Numaralama";
+ Text[ language_user1 ] = " ";
+};
+String STR_EMPTYPAGE
+{
+ Text = "leere Seite" ;
+ Text [ English ] = "empty page" ;
+ Text [ english_us ] = "blank page" ;
+ Text [ portuguese_brazilian ] = "leere Seite" ;
+ Text [ swedish ] = "tom sida" ;
+ Text [ danish ] = "tom side" ;
+ Text [ italian ] = "Pagina vuota" ;
+ Text [ spanish ] = "Página vacía" ;
+ Text [ french ] = "Page vide" ;
+ Text [ dutch ] = "Lege pagina" ;
+ Text [ portuguese ] = "página vazia" ;
+ Text[ chinese_simplified ] = "¿Õ°×Ò³Ãæ";
+ Text[ russian ] = "Ïóñòàÿ ñòðàíèöà";
+ Text[ polish ] = "Pusta strona";
+ Text[ japanese ] = "‹ó”’Íß°¼Þ";
+ Text[ chinese_traditional ] = "ªÅ¥Õ­¶­±";
+ Text[ arabic ] = "ÕÝÍÉ ÝÇÑÛÉ";
+ Text[ dutch ] = "Lege pagina";
+ Text[ chinese_simplified ] = "¿Õ°×Ò³Ãæ";
+ Text[ greek ] = "êåíÞ óåëßäá";
+ Text[ korean ] = "ºó ÆäÀÌÁö";
+ Text[ turkish ] = "Boþ sayfa";
+ Text[ language_user1 ] = " ";
+};
+
+QueryBox MSG_CLPBRD_CLEAR
+{
+ BUTTONS = WB_YES_NO ;
+ DEFBUTTON = WB_DEF_NO ;
+ MESSAGE = "Sie haben größere Datenmengen in die Zwischenablage gestellt.\nSoll der Inhalt der Zwischenablage anderen Applikationen zur Verfügung gestellt werden?" ;
+ MESSAGE [ English ] = "Shall the Clipboard Content be available for other Applications?" ;
+ MESSAGE [ norwegian ] = "Vil du at Innholdet på Utklippstavlen skal være tilgjengelig til andre applikasjoner?" ;
+ MESSAGE [ italian ] = "Negli appunti ci sono molti dati.\nRendere il contenuto degli appunti disponibile per altre applicazioni?" ;
+ MESSAGE [ portuguese_brazilian ] = "O Conteúdo do Clipboard deve estar disponível para outros Aplicativos?" ;
+ MESSAGE [ 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?" ;
+ MESSAGE [ english_us ] = "You have a large amount of data saved in the clipboard.\nShould the clipboard contents remain available for other applications?" ;
+ MESSAGE [ finnish ] = "Pitääkö leikepöydän sisällön olla muiden sovellusten käytettävissä?" ;
+ MESSAGE [ danish ] = "Du har placeret en stor mængde data i udklipsholderen.\nSkal udklipholderens indhold være tilgængeligt for andre applikationer?" ;
+ MESSAGE [ 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 ?" ;
+ MESSAGE [ swedish ] = "Du har stora datamängder i urklippet.\nSkall innehållet i urklippet göras tillgängligt för andra applikationer?" ;
+ MESSAGE [ dutch ] = "U hebt een groot aantal gegevens op het Klembord geplaatst.\nWilt u dat de inhoud van het Klembord beschikbaar blijft voor andere toepassingen?" ;
+ MESSAGE [ spanish ] = "Usted tiene muchos datos en el portapapeles.\n¿Desea mantener disponible el contenido del portapapeles para otras aplicaciones?" ;
+ MESSAGE[ chinese_simplified ] = "Äú½«Ò»¸ö½Ï´óµÄÊý¾Ý¸´ÖƵ½¼ôÌù°å¡£\nÄúÏëÒªÈÃÆäËûµÄÓ¦ÓóÌÐòÒ²Äܹ»Ê¹ÓÃÕâ¸öÊý¾ÝÂð£¿";
+ MESSAGE[ language_user1 ] = " ";
+ MESSAGE[ russian ] = "Âû ñîõðàíèëè áîëüøåå êîëè÷åñòâî äàííûõ â áóôåðå îáìåíà.\nÄîëæíî ëè ñîäåðæèìîå áóôåðà îáìåíà áûòü äîñòóïíûì äëÿ äðóãèõ ïðèëîæåíèé?";
+ MESSAGE[ polish ] = "W schowku zosta³y umieszczone wiêksze iloœci danych.\nCzy treœæ tych danych ma zostaæ udostêpniona innym aplikacjom?";
+ MESSAGE[ japanese ] = "¸Ø¯ÌßÎÞ°ÄÞ‚É‘å—Ê‚ÌÃÞ°À‚ª•Û‘¶‚³‚ê‚Ä‚¢‚Ü‚·B\n¸Ø¯ÌßÎÞ°ÄÞ‚Ì“à—e‚𑼂̱Ìßع°¼®Ý‚ÉŽg—p‚µ‚Ü‚·‚©?";
+ MESSAGE[ chinese_traditional ] = "±z¤w¸g±N¤@­Ó¸û¤jªº¸ê®Æ½Æ»s¨ì°Å¶Kï¡C\n±z·Q­nÅý¨ä¥LªºÀ³¥Îµ{§Ç¤]¯à°÷¨Ï¥Î³o­Ó¸ê®Æ¡H";
+ MESSAGE[ arabic ] = "áÞÏ ÞãÊ ÈÍÝÙ ßãíÇÊ ßÈíÑÉ ãä ÇáÈíÇäÇÊ Ýí ÇáÍÇÝÙÉ.\nåá ÊÑíÏ æÖÚ ãÍÊæíÇÊ ÇáÍÇÝÙÉ ÊÍÊ ÊÕÑÝ ÊØÈíÞÇÊ ÃÎÑì¿";
+ MESSAGE[ dutch ] = "U hebt een groot aantal gegevens op het Klembord geplaatst.\nWilt u dat de inhoud van het Klembord beschikbaar blijft voor andere toepassingen?";
+ MESSAGE[ chinese_simplified ] = "Äú½«Ò»¸ö½Ï´óµÄÊý¾Ý¸´ÖƵ½¼ôÌù°å¡£\nÄúÏëÒªÈÃÆäËûµÄÓ¦ÓóÌÐòÒ²Äܹ»Ê¹ÓÃÕâ¸öÊý¾ÝÂð£¿";
+ MESSAGE[ greek ] = "¸÷åôå áðïèçêåýóåé ìåãÜëï áñéèìü äåäïìÝíùí óôï clipboard.\nÈÝëåôå íá ðáñáìåßíåé äéáèÝóéìï ôï ðåñéå÷üìåíï ôïõ clipboard ãéá Üëëåò åöáñìïãÝò;";
+ MESSAGE[ korean ] = "Ŭ¸³º¸µå¾È¿¡ ÀúÀåµÈ ´ë¿ë·®ÀÇ µ¥ÀÌÅÍ°¡ ÀÖ½À´Ï´Ù.\nŬ¸³º¸µåÀÇ ³»¿ëÀ» ´Ù¸¥ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­ À¯È¿Çϵµ·Ï ³²°ÜµÎ½Ã°Ú½À´Ï±î?";
+ MESSAGE[ turkish ] = "Panoya büyük miktarda veri aktardýnýz.\nPano içeriðini baþka uygulamalarda kullanmak istiyor musunuz?";
+};
+
+QueryBox MSG_SAVE_HTML_QUERY
+{
+ BUTTONS = WB_YES_NO_CANCEL ;
+ DEFBUTTON = WB_DEF_YES ;
+ MESSAGE = "Die Umwandlung in das HTML-Format \nkann Informationsverlust verursachen. \nMöchten Sie das Dokument speichern?" ;
+ MESSAGE [ English ] = "Conversion into HTML \nmay cause information loss. \nWould you like to save the document?" ;
+ Message [ english_us ] = "Conversion into HTML format \nmay cause information loss. \nDo you want to save the document?" ;
+ Message = "Die Umwandlung in das HTML-Format \nkann Informationsverlust verursachen. \nMöchten Sie das Dokument speichern?" ;
+ Message [ italian ] = "La conversione nel formato HTML \npuò causare perdita di informazioni \nSalvare il documento?" ;
+ Message [ spanish ] = "La transformación en el formato HTML \npuede causar la pérdida de información. \n¿Desea guardar el documento?" ;
+ Message [ french ] = "La conversion au format HTML\npeut engendrer une perte d'informations. \nSouhaitez-vous enregistrer le document ?" ;
+ Message [ dutch ] = "De convertering naar het HTML-formaat \nkan verlies van gegevens veroorzaken. \nWilt u het document opslaan?" ;
+ Message [ swedish ] = "Omvandling till HTML-format \nkan förorsaka informationsförlust.\nSkall dokumentet sparas?" ;
+ Message [ danish ] = "Konvertering til HTML-format\nkan medføre informationstab.\nVil du gemme dokumentet?" ;
+ Message [ portuguese_brazilian ] = "Die Umwandlung in das HTML-Format \nkann Informationsverlust verursachen. \nMöchten Sie das Dokument speichern?" ;
+ Message [ portuguese ] = "A conversão para o formato HTML pode \nprovocar perda de informação. \nGuardar o documento?" ;
+ Message[ chinese_simplified ] = "Îļþת»»³É HTML ¸ñʽ\n¿ÉÄÜ»áÒýÆð×ÊÁÏËðʧ¡£\nÄúÒª´æÅÌÕâ¸öÎļþÂð?";
+ Message[ russian ] = "Ïåðåõîä â ôîðìàò HTML \nìîæåò ïðèâåñòè ê ïîòåðå èíôîðìàöèè. \n Âû õîòèòå ñîõðàíèòü ýòîò äîêóìåíò?";
+ Message[ polish ] = "Konwersja na format HTML \nmo¿e spowodowaæ utratê informacji. \nCzy chcesz zapisaæ dokument?";
+ Message[ japanese ] = "HTMLŒ`Ž®‚É•ÏŠ·‚·‚é‚Æ\nî•ñ‚ªŽ¸‚í‚ê‚é‰Â”\\«‚ª‚ ‚è‚Ü‚·B\n‚±‚Ì•¶‘‚ð•Û‘¶‚µ‚Ü‚·‚©?";
+ Message[ chinese_traditional ] = "ÀÉ®×Âà´«¦¨ HTML ®æ¦¡\n¥i¯à·|¤Þ°_¸ê®Æ·l¥¢¡C\n±z­nÀx¦s³o­ÓÀɮסH";
+ Message[ arabic ] = "ÇáÊÍæá Åáì ÊäÓíÞ HTML \níãßä Ãä íÄÏí Åáì ÝÞÏÇä ÈÚÖ ÇáãÚáæãÇÊ. \nåá ÊÑíÏ ÍÝÙ ÇáãÓÊäÏ¿";
+ Message[ dutch ] = "De convertering naar het HTML-formaat \nkan verlies van gegevens veroorzaken. \nWilt u het document opslaan?";
+ Message[ chinese_simplified ] = "Îļþת»»³É HTML ¸ñʽ\n¿ÉÄÜ»áÒýÆð×ÊÁÏËðʧ¡£\nÄúÒª´æÅÌÕâ¸öÎļþÂð?";
+ Message[ greek ] = "Ç ìåôáôñïðÞ óå ìïñöÞ HTML \nìðïñåß íá ðñïêáëÝóåé áðþëåéåò ðëçñïöïñéþí. \nÈÝëåôå íá áðïèçêåýóåôå ôï Ýããñáöï;";
+ Message[ korean ] = "HTML ¼­½ÄÀ¸·Î º¯È¯Àº \nÁ¤º¸ ¼Õ½ÇÀÇ ¿øÀÎÀÌ µË´Ï´Ù. \n¹®¼­¸¦ ÀúÀåÇϽðڽÀ´Ï±î?";
+ Message[ turkish ] = "HTML formatýna \ndönüþüm sonucunda veri kaybý olabilir. \nBelgeyi kaydetmek istiyor musunuz?";
+ Message[ language_user1 ] = " ";
+};
+
+String STR_ABSTRACT_TITLE
+{
+ Text = "Abstrakt : " ;
+ Text [ English ] = "Summary : " ;
+ Text [ portuguese ] = "Abstracto : " ;
+ Text [ english_us ] = "Abstract: " ;
+ Text [ portuguese_brazilian ] = "Abstrakt : " ;
+ Text [ swedish ] = "Utdrag: " ;
+ Text [ danish ] = "Abstract : " ;
+ Text [ italian ] = "Sunto: " ;
+ Text [ spanish ] = "Extracto: " ;
+ Text [ french ] = "Synthèse : " ;
+ Text [ dutch ] = "Extract : " ;
+ Text[ chinese_simplified ] = "ͻ񻣼 ";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Ïðîñìîòð : ";
+ Text[ polish ] = "Abstrakt : ";
+ Text[ japanese ] = "—v–ñ : ";
+ Text[ chinese_traditional ] = "ºK­n¡G ";
+ Text[ arabic ] = "ÇáÊáÎíÕ: ";
+ Text[ dutch ] = "Extract : ";
+ Text[ chinese_simplified ] = "ͻ񻣼 ";
+ Text[ greek ] = "Abstract: ";
+ Text[ korean ] = "̧ȗ: ";
+ Text[ turkish ] = "Özet: ";
+};
+
+String STR_FDLG_TEMPLATE_BUTTON
+{
+ Text = "Vorlage" ;
+ Text [ English ] = "Template" ;
+ Text [ english_us ] = "Style" ;
+ Text [ portuguese_brazilian ] = "Vorlage" ;
+ Text [ swedish ] = "Formatmall" ;
+ Text [ danish ] = "Skabelon" ;
+ Text [ italian ] = "Modello" ;
+ Text [ spanish ] = "Plantilla" ;
+ Text [ french ] = "Style" ;
+ Text [ dutch ] = "Sjabloon" ;
+ Text [ portuguese ] = "Estilo" ;
+ Text[ chinese_simplified ] = "Ñùʽ";
+ Text[ russian ] = "Øàáëîí";
+ Text[ polish ] = "Szablon";
+ Text[ japanese ] = "ÃÝÌßÚ°Ä";
+ Text[ chinese_traditional ] = "¼Ë¦¡";
+ Text[ arabic ] = "äãØ";
+ Text[ dutch ] = "Sjabloon";
+ Text[ chinese_simplified ] = "Ñùʽ";
+ Text[ greek ] = "Ðñüôõðï";
+ Text[ korean ] = "À¯Çü";
+ Text[ turkish ] = "Biçim";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_FDLG_TEMPLATE_NAME
+{
+ Text = "Aktuelle Vorlage: " ;
+ Text [ English ] = "Current template: " ;
+ Text [ english_us ] = "Current Style: " ;
+ Text [ portuguese_brazilian ] = "Aktuelle Vorlage: " ;
+ Text [ swedish ] = "Aktuell formatmall: " ;
+ Text [ danish ] = "Aktuel skabelon: " ;
+ Text [ italian ] = "Modello corrente: " ;
+ Text [ spanish ] = "Plantilla actual: " ;
+ Text [ french ] = "Style actif : " ;
+ Text [ dutch ] = "Actuele sjabloon " ;
+ Text [ portuguese ] = "Modelo actual: " ;
+ Text[ chinese_simplified ] = "µ±Ç°µÄÑùʽ£º ";
+ Text[ russian ] = "Òåêóùèé øàáëîí: ";
+ Text[ polish ] = "Aktualny szablon ";
+ Text[ japanese ] = "ì‹Æ’†‚ÌÃÝÌßÚ°ÄF ";
+ Text[ chinese_traditional ] = "·í«eªº¼Ë¦¡¡G ";
+ Text[ arabic ] = "ÇáäãØ ÇáÍÇáí: ";
+ Text[ dutch ] = "Actuele sjabloon ";
+ Text[ chinese_simplified ] = "µ±Ç°µÄÑùʽ£º ";
+ Text[ greek ] = "ÔñÝ÷ùí ðñüôõðï: ";
+ Text[ korean ] = "ÇöÀç ÅÛÇø®Æ®: ";
+ Text[ turkish ] = "Yürürlükteki biçim: ";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_PAGEOFFSET
+{
+ Text = "Seitennummer: " ;
+ Text [ English ] = "Page number: " ;
+ Text [ english_us ] = "Page number: " ;
+ Text [ portuguese_brazilian ] = "Seitennummer: " ;
+ Text [ swedish ] = "Sidnummer: " ;
+ Text [ danish ] = "Sidetal: " ;
+ Text [ italian ] = "Numero di pagina: " ;
+ Text [ spanish ] = "Número de página: " ;
+ Text [ french ] = "Numéro de page : " ;
+ Text [ dutch ] = "Paginanummer " ;
+ Text [ portuguese ] = "Número de página: " ;
+ Text[ chinese_simplified ] = "Ò³Â룺 ";
+ Text[ russian ] = "Íîìåð ñòðàíèöû: ";
+ Text[ polish ] = "Numer strony: ";
+ Text[ japanese ] = "Íß°¼Þ”Ô†: ";
+ Text[ chinese_traditional ] = "­¶½X¡G ";
+ Text[ arabic ] = "ÑÞã ÇáÕÝÍÉ: ";
+ Text[ dutch ] = "Paginanummer ";
+ Text[ chinese_simplified ] = "Ò³Â룺 ";
+ Text[ greek ] = "Áñéèìüò óåëßäáò: ";
+ Text[ korean ] = "ÆäÀÌÁö ¹øÈ£: ";
+ Text[ turkish ] = "Sayfa numarasý: ";
+ Text[ language_user1 ] = " ";
+};
+String STR_PAGEBREAK
+{
+ Text = "Umbruch vor neuer Seite" ;
+ Text [ English ] = "Break before new page" ;
+ Text [ norwegian ] = "Skift før ny side" ;
+ Text [ italian ] = "Interrompi prima della pagina nuova" ;
+ Text [ portuguese_brazilian ] = "Interromper antes de nova página" ;
+ Text [ portuguese ] = "Quebra antes de nova página" ;
+ Text [ finnish ] = "Väli ennen uutta sivua" ;
+ Text [ danish ] = "Skift før ny side" ;
+ Text [ french ] = "Saut avant nouvelle page" ;
+ Text [ swedish ] = "Bryt före ny sida" ;
+ Text [ dutch ] = "Einde voor nieuwe pagina" ;
+ Text [ spanish ] = "Salto antes de página nueva" ;
+ Text [ english_us ] = "Break before new page" ;
+ Text[ chinese_simplified ] = "ÔÚÐÂһҳ֮ǰ»»Ò³";
+ Text[ russian ] = "Ðàçðûâ ïåðåä íîâîé ñòðàíèöåé";
+ Text[ polish ] = "Podzia³ przed now¹ stron¹";
+ Text[ japanese ] = "V‚µ‚¢Íß°¼Þ‚Ì‘O‚Å‹æØ‚é";
+ Text[ chinese_traditional ] = "¦b·s¤@­¶¤§«e´«­¶";
+ Text[ arabic ] = "ÝÇÕá ÞÈá ÇáÕÝÍÉ ÇáÌÏíÏÉ";
+ Text[ dutch ] = "Einde voor nieuwe pagina";
+ Text[ chinese_simplified ] = "ÔÚÐÂһҳ֮ǰ»»Ò³";
+ Text[ greek ] = "ÁëëáãÞ ðñéí áðü íÝá óåëßäá";
+ Text[ korean ] = "»õ ÆäÀÌÁö ¾Õ¿¡¼­ Áß´Ü";
+ Text[ turkish ] = "Yeni sayfa öncesi kesme";
+ Text[ language_user1 ] = " ";
+};
+
diff --git a/sw/source/ui/app/appenv.cxx b/sw/source/ui/app/appenv.cxx
new file mode 100644
index 000000000000..19eb0c60937a
--- /dev/null
+++ b/sw/source/ui/app/appenv.cxx
@@ -0,0 +1,739 @@
+/*************************************************************************
+ *
+ * $RCSfile: appenv.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#if STLPORT_VERSION>=321
+#include <cstdarg>
+#endif
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#include <hintids.hxx>
+
+#include <svtools/svmedit.hxx>
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFX_OBJFAC_HXX //autogen
+#include <sfx2/docfac.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_PBINITEM_HXX //autogen
+#include <svx/pbinitem.hxx>
+#endif
+#ifndef _SVX_PAPERINF_HXX
+#include <svx/paperinf.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SBASLTID_HRC //autogen
+#include <offmgr/sbasltid.hrc>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+
+#include "paratr.hxx"
+#include "swmodule.hxx"
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "docsh.hxx"
+#include "frmatr.hxx"
+#include "fldbas.hxx"
+#include "swundo.hxx"
+#include "cmdid.h"
+#include "globals.hrc"
+#include "doc.hxx"
+#include "dbmgr.hxx"
+#include "envlop.hxx"
+#include "fmtcol.hxx"
+#include "frmmgr.hxx"
+#include "fldmgr.hxx"
+#include "pagedesc.hxx"
+#include "poolfmt.hxx"
+#include "expfld.hxx"
+#include "app.hrc"
+#include "poolfmt.hrc"
+
+#define ENV_NEWDOC RET_OK
+#define ENV_INSERT RET_USER
+#define ENV_CANCEL SHRT_MAX
+
+
+// --------------------------------------------------------------------------
+
+
+// Funktion wird fuer Etiketten und Briefumschlaege benutzt!
+// im applab.cxx und appenv.cxx
+BOOL InsertLabEnvText( SwWrtShell& rSh, SwFldMgr& rFldMgr, const String& rText )
+{
+ BOOL bRet = FALSE;
+ String aText(rText);
+ aText.EraseAllChars( '\r' );
+
+
+ USHORT nTokenPos = 0;
+ while( STRING_NOTFOUND != nTokenPos )
+ {
+ String aLine = aText.GetToken( 0, '\n', nTokenPos );
+ while ( aLine.Len() )
+ {
+ String sTmpText;
+ BOOL bField = FALSE;
+
+ USHORT nPos = aLine.Search( '<' );
+ if ( nPos )
+ {
+ sTmpText = aLine.Copy( 0, nPos );
+ aLine.Erase( 0, nPos );
+// sTmpText = aLine.Cut( 0, nPos );
+ }
+ else
+ {
+ nPos = aLine.Search( '>' );
+ if ( nPos == STRING_NOTFOUND )
+ {
+ sTmpText = aLine;
+ aLine.Erase();
+// sTmpText = aLine.Cut();
+ }
+ else
+ {
+ sTmpText = aLine.Copy( 0, nPos + 1);
+ aLine.Erase( 0, nPos + 1);
+// sTmpText = aLine.Cut( 0, nPos + 1 );
+
+ // Datenbankfelder muesen mind. 3 Punkte beinhalten!
+ String sDBName( sTmpText.Copy( 1, sTmpText.Len() - 2));
+ USHORT nCnt = sDBName.GetTokenCount('.');
+ if (nCnt >= 3)
+ {
+ ::ReplacePoint(sDBName);
+ rFldMgr.InsertFld( TYP_DBFLD, 0, sDBName, aEmptyStr, 0, &rSh );
+ bRet = TRUE;
+ bField = TRUE;
+ }
+ }
+ }
+ if ( !bField )
+ rSh.Insert( sTmpText );
+ }
+ rSh.InsertLineBreak();
+ }
+ rSh.DelLeft(); // Letzten Linebreak wieder l”schen
+
+ return bRet;
+}
+
+// ----------------------------------------------------------------------------
+
+
+void lcl_CopyCollAttr(SwWrtShell* pOldSh, SwWrtShell* pNewSh, USHORT nCollId)
+{
+ USHORT nCollCnt = pOldSh->GetTxtFmtCollCount();
+ SwTxtFmtColl* pColl;
+ for( USHORT nCnt = 0; nCnt < nCollCnt; ++nCnt )
+ if(nCollId == (pColl = &pOldSh->GetTxtFmtColl(nCnt))->GetPoolFmtId())
+ pNewSh->GetTxtCollFromPool(nCollId)->SetAttr(pColl->GetAttrSet());
+}
+
+// ----------------------------------------------------------------------------
+
+
+void SwModule::InsertEnv()
+{
+static USHORT nTitleNo = 0;
+
+ SwDocShell *pMyDocSh;
+ SfxViewFrame *pFrame;
+ SwView *pView;
+ SwWrtShell *pOldSh,
+ *pSh;
+
+ //aktuelle Shell besorgen
+ pMyDocSh = (SwDocShell*) SfxObjectShell::Current();
+ pOldSh = pMyDocSh ? pMyDocSh->GetWrtShell() : 0;
+
+ // Neues Dokument erzeugen (kein Show!)
+ SfxObjectShellRef xDocSh( new SwDocShell( SFX_CREATE_MODE_STANDARD ) );
+ xDocSh->DoInitNew( 0 );
+ pFrame = SFX_APP()->CreateViewFrame( *xDocSh, 0, TRUE );
+ pView = (SwView*) pFrame->GetViewShell();
+ pView->AttrChangedNotify( &pView->GetWrtShell() );//Damit SelectShell gerufen wird.
+ pSh = pView->GetWrtShellPtr();
+
+ String aTmp( SW_RES(STR_ENV_TITLE) );
+ aTmp += String::CreateFromInt32( ++nTitleNo );
+ xDocSh->SetTitle( aTmp );
+
+ // Ggf. alte Collections "Absender" und "Empfaenger" in neues
+ // Dokument kopieren
+ if ( pOldSh )
+ {
+ ::lcl_CopyCollAttr(pOldSh, pSh, RES_POOLCOLL_JAKETADRESS);
+ ::lcl_CopyCollAttr(pOldSh, pSh, RES_POOLCOLL_SENDADRESS);
+ }
+
+ // SwEnvItem aus Config lesen
+ SwEnvCfgItem aEnvCfg;
+ aEnvCfg.Initialize();
+
+ //Haben wir schon einen Briefumschlag.
+ BOOL bEnvChange = FALSE;
+
+ SfxItemSet aSet(GetPool(), FN_ENVELOP, FN_ENVELOP, 0);
+ aSet.Put(aEnvCfg.aEnvItem);
+
+ SfxPrinter* pTempPrinter = pSh->GetPrt( TRUE );
+ if(pOldSh )
+ {
+ const SwPageDesc& rCurPageDesc = pOldSh->GetPageDesc(pOldSh->GetCurPageDesc());
+ String sJacket; GetDocPoolNm( RES_POOLPAGE_JAKET, sJacket );
+ bEnvChange = rCurPageDesc.GetName() == sJacket;
+ if(pOldSh->GetPrt(FALSE))
+ {
+ pSh->GetDoc()->SetJobsetup(*pOldSh->GetDoc()->GetJobsetup());
+ //#69563# if it isn't the same printer then the pointer has been invalidated!
+ pTempPrinter = pSh->GetPrt( TRUE );
+ }
+ pTempPrinter->SetPaperBin(rCurPageDesc.GetMaster().GetPaperBin().GetValue());
+
+ }
+
+ Window *pParent = pOldSh ? pOldSh->GetWin() : 0;
+ SwEnvDlg* pDlg = new SwEnvDlg( pParent, aSet,
+ pOldSh, pTempPrinter,
+ !bEnvChange);
+
+ short nMode = pDlg->Execute();
+
+ if (nMode == ENV_NEWDOC || nMode == ENV_INSERT)
+ {
+ SwWait aWait( (SwDocShell&)*xDocSh, TRUE );
+
+ // Dialog auslesen, Item in Config speichern
+ const SwEnvItem& rItem = (const SwEnvItem&) pDlg->
+ GetOutputItemSet()->Get(FN_ENVELOP);
+ aEnvCfg.aEnvItem = rItem;
+ aEnvCfg.SetDefault(FALSE);
+ aEnvCfg.StoreConfig();
+
+ //Wenn wir Drucken uebernehmen wir den eingestellten Jobsetup aus
+ //dem Dialog. Die Informationen muessen hier vor dem evtl. zerstoeren
+ //der neuen Shell gesetzt werden, weil deren Drucker an den Dialog
+ //gereicht wurde.
+ if ( nMode != ENV_NEWDOC )
+ {
+ ASSERT(pOldSh, "Kein Dokument - war 'Einfuegen' nicht disabled???");
+ SvxPaperBinItem aItem;
+ aItem.SetValue((BYTE)pSh->GetPrt()->GetPaperBin());
+ pOldSh->GetPageDescFromPool(RES_POOLPAGE_JAKET)->GetMaster().SetAttr(aItem);
+ }
+
+ SwWrtShell *pTmp = nMode == ENV_INSERT ? pOldSh : pSh;
+ const SwPageDesc* pFollow = 0;
+ SwTxtFmtColl *pSend = pTmp->GetTxtCollFromPool( RES_POOLCOLL_SENDADRESS ),
+ *pAddr = pTmp->GetTxtCollFromPool( RES_POOLCOLL_JAKETADRESS);
+ const String &rSendMark = pSend->GetName();
+ const String &rAddrMark = pAddr->GetName();
+
+ if (nMode == ENV_INSERT)
+ {
+
+ SetView(&pOldSh->GetView()); // Pointer auf oberste View restaurieren
+
+ //Neues Dok wieder loeschen
+ xDocSh->DoClose();
+ pSh = pOldSh;
+
+ // Los geht's (Einfuegen)
+ pSh->StartUndo(UIUNDO_INSERT_ENVELOPE);
+ pSh->StartAllAction();
+ pSh->SwCrsrShell::SttDoc();
+
+ if (bEnvChange)
+ {
+ // Folgevorlage: Seite 2
+ pFollow = pSh->GetPageDesc(pSh->GetCurPageDesc()).GetFollow();
+
+ // Text der ersten Seite loeschen
+ if ( !pSh->SttNxtPg(TRUE) )
+ pSh->EndPg(TRUE);
+ pSh->DelRight();
+ // Rahmen der ersten Seite loeschen
+ if( pSh->GotoFly( rSendMark ) )
+ {
+ pSh->EnterSelFrmMode();
+ pSh->DelRight();
+ }
+ if ( pSh->GotoFly( rAddrMark ) )
+ {
+ pSh->EnterSelFrmMode();
+ pSh->DelRight();
+ }
+ pSh->SwCrsrShell::SttDoc();
+ }
+ else
+ // Folgevorlage: Seite 1
+ pFollow = &pSh->GetPageDesc(pSh->GetCurPageDesc());
+
+ // Seitenumbruch einfuegen
+ if ( pSh->IsCrsrInTbl() )
+ {
+ pSh->SplitNode();
+ pSh->Right();
+ SfxItemSet aSet( pSh->GetAttrPool(), RES_BREAK, RES_BREAK, 0 );
+ aSet.Put( SvxFmtBreakItem(SVX_BREAK_PAGE_BEFORE) );
+ pSh->SetTblAttr( aSet );
+ }
+ else
+ pSh->InsertPageBreak(0, FALSE);
+ pSh->SwCrsrShell::SttDoc();
+ }
+ else
+ {
+ pFollow = &pSh->GetPageDesc(pSh->GetCurPageDesc());
+ // Los geht's (Drucken)
+ pSh->StartAllAction();
+ pSh->DoUndo(FALSE);
+
+ // Neue Collections "Absender" und "Empfaenger" wieder in neues
+ // Dokument kopieren
+ if ( pOldSh )
+ {
+ ::lcl_CopyCollAttr(pOldSh, pSh, RES_POOLCOLL_JAKETADRESS);
+ ::lcl_CopyCollAttr(pOldSh, pSh, RES_POOLCOLL_SENDADRESS);
+ }
+ }
+
+ SET_CURR_SHELL(pSh);
+ pSh->SetNewDoc(); // Performanceprobleme vermeiden
+
+ // Flys dieser Seite merken
+ SvPtrarr aFlyArr(0, 5);
+ if( ENV_NEWDOC != nMode && !bEnvChange )
+ pSh->GetPageObjs( aFlyArr );
+
+ // Page-Desc ermitteln
+ SwPageDesc* pDesc = pSh->GetPageDescFromPool(RES_POOLPAGE_JAKET);
+ SwFrmFmt& rFmt = pDesc->GetMaster();
+
+ Printer *pPrt = pSh->GetPrt( TRUE );
+
+ // Raender (setzen sich zusammen aus Shift-Offset und
+ // Ausrichtung)
+ Size aPaperSize = pPrt->PixelToLogic( pPrt->GetPaperSizePixel(),
+ MAP_TWIP);
+ if ( !aPaperSize.Width() && !aPaperSize.Height() )
+ {
+ aPaperSize.Width() = lA4Width;
+ aPaperSize.Height()= lA4Height;
+ }
+ if ( aPaperSize.Width() > aPaperSize.Height() )
+ Swap( aPaperSize );
+
+ long lLeft = rItem.lShiftRight,
+ lUpper = rItem.lShiftDown;
+
+ USHORT nPageW = (USHORT) Max(rItem.lWidth, rItem.lHeight),
+ nPageH = (USHORT) Min(rItem.lWidth, rItem.lHeight);
+
+ switch (rItem.eAlign)
+ {
+ case ENV_HOR_LEFT: break;
+ case ENV_HOR_CNTR: lLeft += Max(0L, long(aPaperSize.Width() - nPageW)) / 2;
+ break;
+ case ENV_HOR_RGHT: lLeft += Max(0L, long(aPaperSize.Width() - nPageW));
+ break;
+ case ENV_VER_LEFT: lUpper += Max(0L, long(aPaperSize.Width() - nPageH));
+ break;
+ case ENV_VER_CNTR: lUpper += Max(0L, long(aPaperSize.Width() - nPageH)) / 2;
+ break;
+ case ENV_VER_RGHT: break;
+ }
+ SvxLRSpaceItem aLRMargin;
+ SvxULSpaceItem aULMargin;
+ aLRMargin.SetLeft ((USHORT) lLeft );
+ aULMargin.SetUpper((USHORT) lUpper);
+ aLRMargin.SetRight(0);
+ aULMargin.SetLower(0);
+ rFmt.SetAttr(aLRMargin);
+ rFmt.SetAttr(aULMargin);
+
+ // Kopf-, Fusszeilen
+ rFmt.SetAttr(SwFmtHeader(BOOL(FALSE)));
+ pDesc->ChgHeaderShare(FALSE);
+ rFmt.SetAttr(SwFmtFooter(BOOL(FALSE)));
+ pDesc->ChgFooterShare(FALSE);
+
+ // Seitennumerierung
+ pDesc->SetUseOn(PD_ALL);
+
+ // Einstellen der Seitengroesse
+ rFmt.SetAttr(SwFmtFrmSize(ATT_FIX_SIZE,
+ nPageW + lLeft, nPageH + lUpper));
+
+ // Einstellen der Numerierungsart der Seite
+ SwNumType aType;
+ aType.eType = SVX_NUM_NUMBER_NONE;
+ pDesc->SetNumType(aType);
+
+ // Folgevorlage
+ if (pFollow)
+ pDesc->SetFollow(pFollow);
+
+ // Landscape
+ pDesc->SetLandscape( rItem.eAlign >= ENV_VER_LEFT &&
+ rItem.eAlign <= ENV_VER_RGHT);
+
+ // Page-Desc anwenden
+
+ USHORT nPos;
+ pSh->FindPageDescByName( pDesc->GetName(),
+ FALSE,
+ &nPos );
+
+
+ pSh->ChgPageDesc( nPos, *pDesc);
+ pSh->ChgCurPageDesc(*pDesc);
+
+ // Rahmen einfuegen
+ SwFlyFrmAttrMgr aMgr(FALSE, pSh, FRMMGR_TYPE_ENVELP);
+ SwFldMgr aFldMgr;
+
+ // Absender
+ if (rItem.bSend)
+ {
+ pSh->SwCrsrShell::SttDoc();
+ aMgr.SetSizeType(ATT_VAR_SIZE);
+
+ //Defaults ueberschreiben!
+ aMgr.GetAttrSet().Put( SvxBoxItem() );
+ aMgr.SetULSpace( 0L, 0L );
+ aMgr.SetLRSpace( 0L, 0L );
+
+ aMgr.InsertFlyFrm(FLY_PAGE,
+ Point(rItem.lSendFromLeft + lLeft, rItem.lSendFromTop + lUpper),
+ Size (rItem.lAddrFromLeft - rItem.lSendFromLeft, 0));
+
+ pSh->EnterSelFrmMode();
+ pSh->SetFlyName( rSendMark );
+ pSh->UnSelectFrm();
+ pSh->LeaveSelFrmMode();
+ pSh->SetTxtFmtColl( pSend );
+ InsertLabEnvText( *pSh, aFldMgr, rItem.aSendText );
+ aMgr.UpdateAttrMgr();
+ }
+
+ // Empfaenger
+ pSh->SwCrsrShell::SttDoc();
+
+ aMgr.SetSizeType(ATT_VAR_SIZE);
+ aMgr.InsertFlyFrm(FLY_PAGE,
+ Point(rItem.lAddrFromLeft + lLeft, rItem.lAddrFromTop + lUpper),
+ Size (nPageW - rItem.lAddrFromLeft - 566, 0));
+ pSh->EnterSelFrmMode();
+ pSh->SetFlyName( rAddrMark );
+ pSh->UnSelectFrm();
+ pSh->LeaveSelFrmMode();
+ pSh->SetTxtFmtColl( pAddr );
+ InsertLabEnvText(*pSh, aFldMgr, rItem.aAddrText);
+
+ // Flys auf die "alten" Seiten verschieben
+ if (aFlyArr.Count())
+ pSh->SetPageObjsNewPage(aFlyArr, 1);
+
+ // Fertig
+ pSh->SwCrsrShell::SttDoc();
+
+ pSh->EndAllAction();
+
+ if (nMode == ENV_NEWDOC)
+ pSh->DoUndo(TRUE);
+ else
+ pSh->EndUndo(UIUNDO_INSERT_ENVELOPE);
+
+ if (nMode == ENV_NEWDOC)
+ {
+ pFrame->GetFrame()->Appear();
+
+ if ( rItem.aAddrText.Search('<') != STRING_NOTFOUND )
+ {
+ static USHORT __READONLY_DATA aInva[] =
+ {
+ SID_SBA_BRW_UPDATE,
+ SID_SBA_BRW_INSERT,
+ SID_SBA_BRW_MERGE,
+ 0
+ };
+ pFrame->GetBindings().Invalidate( aInva );
+
+ // Datenbankbeamer oeffnen
+ String sDBName(pSh->GetDBName());
+ ShowDBObj(*pSh, sDBName);
+ }
+ }
+ }
+ else //Abbruch
+ {
+ xDocSh->DoClose();
+ --nTitleNo;
+
+ // Pointer auf oberste View restaurieren
+ if (pOldSh)
+ SetView(&pOldSh->GetView());
+ }
+ delete pDlg;
+}
+
+/*-------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.103 2000/09/18 16:05:09 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.102 2000/09/07 15:59:19 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.101 2000/07/26 16:33:02 jp
+ use the new function GetDocPoolNm to get the collectionames
+
+ Revision 1.100 2000/07/18 12:50:07 os
+ replace ofadbmgr
+
+ Revision 1.99 2000/06/30 08:52:03 os
+ #76541# string assertions removed
+
+ Revision 1.98 2000/05/23 17:52:04 jp
+ Bugfixes for Unicode
+
+ Revision 1.97 2000/04/20 12:49:34 os
+ GetName() returns String&
+
+ Revision 1.96 2000/04/11 08:01:30 os
+ UNICODE
+
+ Revision 1.95 2000/03/08 17:21:49 os
+ GetAppWindow() - misuse as parent window eliminated
+
+ Revision 1.94 2000/02/11 14:42:22 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.93 1999/11/19 12:58:47 os
+ #69563# after SetJobsetup the printer may be invalid
+
+ Revision 1.92 1999/11/11 14:34:40 hr
+ #65293# STLPORT 3.2.1
+
+ Revision 1.91 1999/10/05 10:18:05 os
+ #67889# some printer problems solved
+
+ Revision 1.90 1999/10/01 13:36:53 os
+ apply AutoText to business cards
+
+ Revision 1.89 1999/07/08 13:59:32 MA
+ Use internal object to toggle wait cursor
+
+
+ Rev 1.88 08 Jul 1999 15:59:32 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.87 10 Jun 1999 10:52:08 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.86 01 Mar 1999 16:20:52 MA
+ #62490# Altlast entfernt (Drucken und Briefumschlaege/Etiketten und Datenbank)
+
+ Rev 1.85 17 Nov 1998 10:49:46 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.84 12 Nov 1998 19:19:20 MA
+ #59315# Tabelle am Dokumentanfang beruecksichtigen
+
+ Rev 1.83 14 Mar 1998 17:05:12 OM
+ Gelinkte Etiketten
+
+ Rev 1.82 05 Feb 1998 16:34:32 OS
+ Change: hidden ViewFrame anlegen
+
+ Rev 1.81 24 Nov 1997 14:22:34 MA
+ includes
+
+ Rev 1.80 30 Sep 1997 08:40:28 OS
+ include
+
+ Rev 1.79 12 Sep 1997 10:38:30 OS
+ ITEMID_* definiert
+
+ Rev 1.78 02 Sep 1997 09:56:50 OM
+ SDB-Headeranpassung
+
+ Rev 1.77 01 Sep 1997 13:06:32 OS
+ DLL-Umstellung
+
+ Rev 1.76 15 Aug 1997 11:45:06 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.75 12 Aug 1997 14:42:40 OS
+ Header-Umstellung
+
+ Rev 1.74 08 Aug 1997 17:26:50 OM
+ Headerfile-Umstellung
+
+ Rev 1.73 07 Aug 1997 14:59:28 OM
+ Headerfile-Umstellung
+
+ Rev 1.72 08 Jul 1997 14:04:10 OS
+ ConfigItems von der App ans Module
+
+ Rev 1.71 11 Apr 1997 12:04:16 NF
+ includes...
+
+ Rev 1.70 08 Apr 1997 15:11:08 MH
+ chg: header
+
+ Rev 1.69 08 Apr 1997 08:32:20 MA
+ includes
+
+ Rev 1.68 13 Mar 1997 16:28:48 OM
+ DB-Feldbefehle korrekt erkennen
+
+ Rev 1.67 26 Feb 1997 03:46:12 OM
+ #37071# Richtige Datenbank nach Briefumschlag und Etiketten anzeigen
+
+ Rev 1.66 25 Feb 1997 22:48:58 OM
+ Datenbankfelder richtig einfuegen
+
+ Rev 1.65 11 Feb 1997 16:51:54 OM
+ Eingabefeld ueber Basic ohne Dialog einfuegen
+
+ Rev 1.64 16 Dec 1996 10:59:24 OM
+ Drucken aus DB-Browser angefangen
+
+ Rev 1.63 11 Dec 1996 09:26:14 MA
+ Entschlackt
+
+ Rev 1.62 06 Dec 1996 13:53:24 MA
+ Umbrueche fuer Tabellen
+
+ Rev 1.61 05 Dec 1996 15:23:54 OM
+ Nach Briefumschlag und Etiketten DB-Browser oeffnen
+
+ Rev 1.60 03 Dec 1996 17:41:12 AMA
+ Chg: Der Drucker wird nur im !Browsemodus angelegt.
+
+ Rev 1.59 08 Nov 1996 19:39:34 MA
+ ResMgr
+
+ Rev 1.58 08 Nov 1996 17:38:14 OM
+ DB-Mode fuer Serienbriefe und Etiketten zum Teil wiederbelebt
+
+ Rev 1.57 24 Oct 1996 13:36:04 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.56 18 Oct 1996 12:12:46 MA
+ fixes und opts
+
+ Rev 1.55 17 Oct 1996 16:54:36 MA
+ #31660# und diverse weitere fixes
+
+ Rev 1.54 26 Sep 1996 09:03:30 MA
+ defautls fuer Rahmen + Aufraeumarbeiten
+
+ Rev 1.53 25 Sep 1996 14:10:24 OM
+ Neue Datenbanktrenner
+
+-------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/app/apphdl.cxx b/sw/source/ui/app/apphdl.cxx
new file mode 100644
index 000000000000..cf78e5ec1c6e
--- /dev/null
+++ b/sw/source/ui/app/apphdl.cxx
@@ -0,0 +1,1389 @@
+/*************************************************************************
+ *
+ * $RCSfile: apphdl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+
+#ifndef _SFXEVENT_HXX //autogen
+#include <sfx2/event.hxx>
+#endif
+
+#ifndef _SFX_SAVEOPT_HXX //autogen
+#include <sfx2/saveopt.hxx>
+#endif
+
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFXSTBMGR_HXX //autogen
+#include <sfx2/stbmgr.hxx>
+#endif
+#ifndef _SFXISETHINT_HXX //autogen
+#include <svtools/isethint.hxx>
+#endif
+#ifndef _SVX_DLG_HYPERLINK_HXX //autogen
+#include <offmgr/hyprlink.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _OFA_OSPLCFG_HXX //autogen
+#include <offmgr/osplcfg.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SVX_ADRITEM_HXX //autogen
+#include <svx/adritem.hxx>
+#endif
+#ifndef _SV_CLIP_HXX //autogen
+#include <vcl/clip.hxx>
+#endif
+#ifndef _DATAEX_HXX //autogen
+#include <dataex.hxx>
+#endif
+#ifndef _VCL_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _VCL_WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SVX_INSCTRL_HXX //autogen
+#include <svx/insctrl.hxx>
+#endif
+#ifndef _SVX_SELCTRL_HXX //autogen
+#include <svx/selctrl.hxx>
+#endif
+#ifndef _NAVICFG_HXX
+#include <navicfg.hxx>
+#endif
+
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "finder.hxx"
+#include "docsh.hxx"
+#include "cmdid.h" // Funktion-Ids
+#include "initui.hxx"
+#include "uitool.hxx"
+#include "swmodule.hxx"
+#include "wdocsh.hxx"
+#include "wview.hxx"
+#include "wizzard.hxx" // Wizzards
+#include "usrpref.hxx"
+#include "gloslst.hxx" // SwGlossaryList
+#include "glosdoc.hxx" // SwGlossaryList
+#include "doc.hxx"
+#include "cfgitems.hxx"
+#include "prtopt.hxx"
+#include "srcvcfg.hxx"
+#include "modcfg.hxx"
+#include "globals.h" // globale Konstanten z.B.
+#include "cfgid.h"
+#include "app.hrc"
+#ifndef _USRPREF_HXX //autogen
+#include <usrpref.hxx>
+#endif
+#ifndef _PRTOPT_HXX //autogen
+#include <prtopt.hxx>
+#endif
+#ifndef _MODOPT_HXX //autogen
+#include <modcfg.hxx>
+#endif
+#ifndef _FONTCFG_HXX //autogen
+#include <fontcfg.hxx>
+#endif
+#include "barcfg.hxx"
+#ifndef _UINUMS_HXX //autogen
+#include <uinums.hxx>
+#endif
+
+#ifndef _LINGU_LNGPROPS_HHX_
+#include <lingu/lngprops.hxx>
+#endif
+#ifndef _UNO_LINGU_HXX
+#include <svx/unolingu.hxx>
+#endif
+#ifndef _SFX_SFXUNO_HXX
+#include <sfx2/sfxuno.hxx>
+#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
+
+using namespace ::com::sun::star;
+
+#define C2S(cChar) String::CreateFromAscii(cChar)
+/*--------------------------------------------------------------------
+ Beschreibung: Slotmaps fuer Methoden der Applikation
+ --------------------------------------------------------------------*/
+
+
+// hier werden die SlotID's included
+// siehe Idl-File
+//
+#define SwModule
+#define ViewSettings
+#define WebViewSettings
+#define PrintSettings
+#define _ExecAddress ExecOther
+#define _StateAddress StateOther
+#include "itemdef.hxx"
+#include <svx/svxslots.hxx>
+#include "swslots.hxx"
+
+
+SFX_IMPL_INTERFACE( SwModule, SfxModule, SW_RES(RID_SW_NAME) )
+{
+ SFX_CHILDWINDOW_REGISTRATION(SvxHyperlinkDlgWrapper::GetChildWindowId());
+ SFX_STATUSBAR_REGISTRATION(SW_RES(CFG_STATUSBAR));
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Funktionen Ansicht
+------------------------------------------------------------------------*/
+
+void lcl_SetViewMetaChars( SwViewOption& rVOpt, sal_Bool bOn)
+{
+ rVOpt.SetViewMetaChars( bOn );
+ if(bOn && !(rVOpt.IsParagraph() ||
+ rVOpt.IsTab() ||
+ rVOpt.IsLineBreak() ||
+ rVOpt.IsBlank()))
+ {
+ rVOpt.SetParagraph(bOn);
+ rVOpt.SetTab(bOn);
+ rVOpt.SetLineBreak(bOn);
+ rVOpt.SetBlank(bOn);
+ }
+}
+
+
+sal_Bool lcl_IsViewMarks( const SwViewOption& rVOpt )
+{
+ return rVOpt.IsHardBlank() &&
+ rVOpt.IsSoftHyph() &&
+ rVOpt.IsTox() &&
+ rVOpt.IsFootNote() &&
+ rVOpt.IsField();
+}
+
+
+void lcl_SetViewMarks(SwViewOption& rVOpt, sal_Bool bOn )
+{
+ rVOpt.SetHardBlank(bOn);
+ rVOpt.SetSoftHyph(bOn);
+ rVOpt.SetTox(bOn);
+ rVOpt.SetFootNote(bOn);
+ rVOpt.SetField(bOn);
+ rVOpt.SetRef(bOn);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: State mit CheckMark fuer ViewOptions
+ --------------------------------------------------------------------*/
+
+
+void SwModule::StateViewOptions(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter(rSet);
+ sal_uInt16 nWhich = aIter.FirstWhich();
+ SfxBoolItem aBool;
+ const SwViewOption* pOpt = 0;
+ SwView* pActView = ::GetActiveView();
+ SwDoc *pDoc = 0;
+ if(pActView)
+ {
+ pOpt = pActView->GetWrtShell().GetViewOptions();
+ pDoc = pActView->GetDocShell()->GetDoc();
+ }
+
+ while(nWhich)
+ {
+ if(pActView)
+ {
+ sal_Bool bReadonly = pActView->GetDocShell()->IsReadOnly();
+ sal_Bool bBrowse = pDoc ? pDoc->IsBrowseMode() : sal_False;
+ if ( bReadonly && nWhich != FN_VIEW_GRAPHIC )
+ {
+ rSet.DisableItem(nWhich);
+ nWhich = 0;
+ }
+ switch(nWhich)
+ {
+ case FN_RULER:
+ aBool.SetValue( pActView->StatTab() ); break;
+ case FN_VIEW_BOUNDS:
+ aBool.SetValue( pOpt->IsSubsLines() ); break;
+ case FN_VIEW_GRAPHIC:
+ aBool.SetValue( !pOpt->IsGraphic() ); break;
+ case FN_VIEW_FIELDS:
+ aBool.SetValue( pOpt->IsField() ); break;
+ case FN_VIEW_FIELDNAME:
+ aBool.SetValue( pOpt->IsFldName() ); break;
+ case FN_VIEW_MARKS:
+ aBool.SetValue( lcl_IsViewMarks(*pOpt) ); break;
+ case FN_VIEW_META_CHARS:
+ aBool.SetValue( pOpt->IsViewMetaChars() ); break;
+ case FN_VIEW_TABLEGRID:
+ aBool.SetValue( pOpt->IsSubsTable() ); break;
+ case FN_VIEW_HIDDEN_PARA:
+ aBool.SetValue( pOpt->IsShowHiddenPara()); break;
+ case SID_GRID_VISIBLE:
+ aBool.SetValue( pOpt->IsGridVisible() ); break;
+ case SID_GRID_USE:
+ aBool.SetValue( pOpt->IsSnap() ); break;
+ case SID_HELPLINES_MOVE:
+ aBool.SetValue( pOpt->IsCrossHair() ); break;
+ case FN_VIEW_SMOOTH_SCROLL:
+ aBool.SetValue( pOpt->IsSmoothScroll()); break;
+ case FN_VLINEAL:
+ aBool.SetValue( pActView->StatVLineal() ); break;
+ case FN_HSCROLLBAR:
+ if(bBrowse)
+ {
+ rSet.DisableItem(nWhich);
+ nWhich = 0;
+ }
+ else
+ aBool.SetValue( pActView->StatHScrollbar() ); break;
+ case FN_VSCROLLBAR:
+ aBool.SetValue( pActView->StatVScrollbar() ); break;
+ case SID_AUTOSPELL_CHECK:
+ aBool.SetValue( pOpt->IsOnlineSpell() );
+ break;
+ case SID_AUTOSPELL_MARKOFF:
+ aBool.SetValue( pOpt->IsHideSpell() );
+ break;
+ case FN_SHADOWCURSOR:
+ if (pDoc == 0 || pDoc->IsBrowseMode())
+ {
+ rSet.DisableItem( nWhich );
+ nWhich = 0;
+ }
+ else
+ aBool.SetValue( pOpt->IsShadowCursor() );
+ break;
+
+ }
+ }
+ else
+ {
+ rSet.DisableItem( nWhich );
+ nWhich = 0;
+ }
+
+ if( nWhich )
+ {
+ aBool.SetWhich( nWhich );
+ rSet.Put( aBool );
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Andere States
+ --------------------------------------------------------------------*/
+
+
+void SwModule::StateOther(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter(rSet);
+ sal_uInt16 nWhich = aIter.FirstWhich();
+
+ SwView* pActView = ::GetActiveView();
+ sal_Bool bWebView = 0 != PTR_CAST(SwWebView, pActView);
+
+ while(nWhich)
+ {
+ switch(nWhich)
+ {
+ case FN_BUSINESS_CARD:
+ case FN_LABEL:
+ case FN_ENVELOP:
+ {
+ sal_Bool bDisable = sal_False;
+ SfxViewShell* pView = SfxViewShell::Current();
+ if( !pView || (pView && !pView->ISA(SwView)) )
+ bDisable = sal_True;
+ SwDocShell *pDocSh = (SwDocShell*) SfxObjectShell::Current();
+ if ( bDisable ||
+ (pDocSh && (pDocSh->IsReadOnly() ||
+ pDocSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED)) )
+ rSet.DisableItem( nWhich );
+
+ }
+ break;
+ case FN_EDIT_FORMULA:
+ {
+ SwWrtShell* pSh = 0;
+ int nSelection = 0;
+ if( pActView )
+ pSh = &pActView->GetWrtShell();
+ if( pSh )
+ nSelection = pSh->GetSelectionType();
+
+ if( (pSh && pSh->HasSelection()) ||
+ !(nSelection & (SwWrtShell::SEL_TXT | SwWrtShell::SEL_TBL)))
+ rSet.DisableItem(nWhich);
+ }
+ break;
+ case SID_ATTR_ADDRESS:
+ {
+ rSet.Put(pPathFinder->GetAddress());
+ }
+ break;
+ case SID_ATTR_UNDO_COUNT:
+ rSet.Put(SfxUInt16Item( SID_ATTR_UNDO_COUNT, SwEditShell::GetUndoActionCount()));
+ break;
+ case SID_ATTR_METRIC:
+ rSet.Put( SfxUInt16Item( SID_ATTR_METRIC, ::GetDfltMetric(bWebView)));
+ break;
+ case FN_SET_MODOPT_TBLNUMFMT:
+ rSet.Put( SfxBoolItem( nWhich, pModuleConfig->
+ IsInsTblFormatNum( bWebView )));
+ break;
+
+ default:
+ DBG_ERROR("::StateOther: default");
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Wizzards
+ --------------------------------------------------------------------*/
+
+
+void SwModule::ExecWizzard(SfxRequest & rReq)
+{
+ Wizzard( rReq.GetSlot() );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Einstellungen fuer den Bildschirm
+ --------------------------------------------------------------------*/
+
+
+
+void SwModule::ExecViewOptions(SfxRequest &rReq)
+{
+ SwViewOption* pOpt = 0;
+ OfficeApplication* pOffApp = OFF_APP();
+ sal_Bool bModified = sal_True;
+ if ( GetView() )
+ {
+ pOpt = new SwViewOption( *GetView()->GetWrtShell().GetViewOptions() );
+ bModified = GetView()->GetWrtShell().IsModified();
+ }
+ else
+ {
+ pOpt = new SwViewOption();
+ DBG_ERROR("ExecViewOptions: ohne View - falsche UsrPref?")
+ MakeUsrPref(*pOpt, sal_False);
+ }
+
+
+ int eState = STATE_TOGGLE;
+ sal_Bool bSet = sal_False;
+
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ sal_uInt16 nSlot = rReq.GetSlot();
+ const SfxPoolItem* pAttr;
+
+ if( pArgs && SFX_ITEM_SET == pArgs->GetItemState( nSlot , sal_False, &pAttr ))
+ {
+ bSet = ((SfxBoolItem*)pAttr)->GetValue();
+ eState = bSet ? STATE_ON : STATE_OFF;
+ }
+
+
+ int bFlag = STATE_ON == eState;
+ // fuer die (WebViewSettings
+ enum WebDepend
+ {
+ DEPEND_NONE,
+ DEPEND_NOWEB,
+ DEPEND_WEB
+ }eWebDepend = DEPEND_NONE;
+
+ uno::Reference< beans::XPropertySet > xLngProp( ::GetLinguPropertySet() );
+
+ switch ( nSlot )
+ {
+ case FN_VIEW_GRAPHIC:
+
+ if( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsGraphic();
+ pOpt->SetGraphic( bFlag );
+ break;
+
+ case FN_VIEW_FIELDS:
+ if( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsField() ;
+
+ pOpt->SetField( bFlag );
+ pOpt->SetRef( bFlag );
+ break;
+
+ case FN_VIEW_BOUNDS:
+
+ if( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsSubsLines();
+
+ pOpt->SetSubsLines( bFlag );
+ break;
+
+ case SID_GRID_VISIBLE:
+ if( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsGridVisible();
+
+ pOpt->SetGridVisible( bFlag );
+ break;
+
+ case SID_GRID_USE:
+ if( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsSnap();
+
+ pOpt->SetSnap( bFlag );
+ break;
+
+ case SID_HELPLINES_MOVE:
+ if( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsCrossHair();
+
+ pOpt->SetCrossHair( bFlag );
+ break;
+
+ case FN_VIEW_HIDDEN_PARA:
+ if ( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsShowHiddenPara();
+
+ pOpt->SetShowHiddenPara( bFlag );
+ break;
+
+ case FN_VIEW_SMOOTH_SCROLL:
+
+ if ( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsSmoothScroll();
+
+ pOpt->SetSmoothScroll( bFlag );
+ break;
+
+
+ case FN_VLINEAL:
+ if( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsViewVLin();
+
+ pOpt->SetViewVLin( bFlag );
+ break;
+
+ case FN_VSCROLLBAR:
+ if( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsViewVScrollBar();
+
+ pOpt->SetViewVScrollBar( bFlag );
+ break;
+
+ case FN_HSCROLLBAR:
+ if( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsViewHScrollBar();
+
+ pOpt->SetViewHScrollBar( bFlag );
+ break;
+ case FN_RULER:
+ if( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsViewTabwin();
+
+ pOpt->SetViewTabwin( bFlag );
+ break;
+
+ case FN_VIEW_TABLEGRID:
+ if( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsSubsTable();
+
+ pOpt->SetSubsTable( bFlag );
+ break;
+
+ case FN_VIEW_FIELDNAME:
+ if( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsFldName() ;
+
+ pOpt->SetFldName( bFlag );
+ break;
+ case FN_VIEW_MARKS:
+ if( STATE_TOGGLE == eState )
+ bFlag = !lcl_IsViewMarks(*pOpt) ;
+
+ lcl_SetViewMarks( *pOpt, bFlag );
+ break;
+ case FN_VIEW_META_CHARS:
+ if( STATE_TOGGLE == eState )
+ bFlag = !pOpt->IsViewMetaChars();
+
+ lcl_SetViewMetaChars( *pOpt, bFlag );
+ break;
+ case SID_AUTOSPELL_CHECK:
+ if( STATE_TOGGLE == eState )
+ bFlag = bSet = !pOpt->IsOnlineSpell();
+
+ pOpt->SetOnlineSpell(bSet);
+ if (xLngProp.is())
+ {
+ uno::Any aVal(&bSet, ::getCppuBooleanType());
+ xLngProp->setPropertyValue( C2S(UPN_IS_SPELL_AUTO), aVal );
+ }
+ //pOffApp->GetLinguConfig()->SetDefault( sal_False );
+
+ if (!(STATE_TOGGLE == eState && bSet && ( pOpt->IsHideSpell() )))
+ break;
+ case SID_AUTOSPELL_MARKOFF:
+ if( STATE_TOGGLE == eState )
+ bFlag = bSet = !pOpt->IsHideSpell();
+
+ pOpt->SetHideSpell(bSet);
+ if (xLngProp.is())
+ {
+ uno::Any aVal(&bSet, ::getCppuBooleanType());
+ xLngProp->setPropertyValue( C2S(UPN_IS_SPELL_HIDE), aVal );
+ }
+ //pOffApp->GetLinguConfig()->SetDefault( sal_False );
+ break;
+
+ case FN_SHADOWCURSOR:
+ if( STATE_TOGGLE == eState )
+ bFlag = bSet = !pOpt->IsShadowCursor();
+
+ pOpt->SetShadowCursor(bSet);
+ break;
+
+ default:
+ ASSERT(sal_False, Falsche Request-Methode);
+ return;
+ }
+
+ // UserPrefs setzen Request als bearbeitet kennzeichnen
+ SwView* pApplyView = GetView();
+ sal_Bool bWebView = 0 != PTR_CAST(SwWebView, pApplyView);
+ // die ViewSettings duerfen nur der View zugewiesen werden,
+ // wenn es auch die richtigen sind
+ if(pApplyView && DEPEND_NONE != eWebDepend)
+ {
+ if(bWebView && DEPEND_NOWEB == eWebDepend ||
+ !bWebView && DEPEND_WEB == eWebDepend )
+ pApplyView = 0;
+ }
+ if( pApplyView )
+ {
+ SwWrtShell &rSh = GetView()->GetWrtShell();
+ rSh.StartAction();
+ if( !(*rSh.GetViewOptions() == *pOpt ))
+ {
+ rSh.ApplyViewOptions( *pOpt );
+
+ //Die UsrPref muessen als Modified gekennzeichnet werden.
+ if(bWebView)
+ {
+ // fuer die Initialisierung
+ if(!pWebUsrPref)
+ GetUsrPref(sal_True);
+ pWebUsrPref->SetDefault( sal_False );
+ }
+ else
+ {
+ if(!pUsrPref)
+ GetUsrPref(sal_False);
+ pUsrPref->SetDefault( sal_False );
+ }
+ SW_MOD()->CheckSpellChanges( pOpt->IsOnlineSpell(), sal_False, sal_False );
+
+ }
+ //OS: Modified wieder zuruecksetzen, weil Ansicht/Felder
+ // das Doc modified setzt.
+ if( !bModified )
+ rSh.ResetModified();
+ }
+ sal_uInt16 nDest = VIEWOPT_DEST_VIEW;
+ if(DEPEND_WEB == eWebDepend )
+ nDest = VIEWOPT_DEST_WEB;
+ else if(DEPEND_NOWEB == eWebDepend)
+ nDest = VIEWOPT_DEST_TEXT;
+ ApplyUsrPref( *pOpt, pApplyView, nDest );
+ if ( pApplyView )
+ pApplyView->GetWrtShell().EndAction();
+
+ delete pOpt;
+ Invalidate(rReq.GetSlot());
+ if(!pArgs)
+ rReq.AppendItem(SfxUInt16Item(nSlot, bFlag));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Felddialog starten
+ --------------------------------------------------------------------*/
+
+
+void SwModule::ExecOther(SfxRequest& rReq)
+{
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem = 0;
+
+ sal_uInt16 nWhich = rReq.GetSlot();
+ switch (nWhich)
+ {
+ case FN_ENVELOP:
+ InsertEnv();
+ break;
+
+ case FN_BUSINESS_CARD:
+ case FN_LABEL:
+ InsertLab(nWhich == FN_LABEL);
+ break;
+
+ case SID_SW_DOCMAN_PATH:
+ {
+ ASSERT(pArgs && pArgs->Count(), "fehlende Parameter GetDocManPath");
+ if(!pArgs)
+ return;
+
+ String aParam(((const SfxStringItem &)pArgs->Get(rReq.GetSlot())).GetValue());
+ String aPath;
+
+ if(aParam == C2S("~~~GetMacroPath"))
+ {
+ aPath = SFX_INIMANAGER()->Get( SFX_KEY_CONFIG_DIR );
+ aPath = URIHelper::SmartRelToAbs(aPath);
+ if(aPath.Len())
+ aPath += INET_PATH_TOKEN;
+ }
+ else if(aParam == C2S("~~~GetDefDocExt"))
+ aPath =
+#if defined(PM2) || defined(MAC_WITHOUT_EXT)
+ aEmptyStr;
+#else
+ C2S(".sdw");
+#endif
+ else if(aParam == C2S("~~~SetNoFrameBeep"))
+ {
+ SwView* pActView = ::GetActiveView();
+ if( pActView && pActView->GetDocShell() )
+ pActView->GetDocShell()->GetDoc()->SetFrmBeepEnabled( sal_False );
+ }
+ else if(aParam == C2S("~~~SetFrameBeep"))
+ {
+ SwView* pActView = ::GetActiveView();
+ if( pActView && pActView->GetDocShell() )
+ pActView->GetDocShell()->GetDoc()->SetFrmBeepEnabled( sal_True );
+ }
+ rReq.SetReturnValue(SfxStringItem( SID_SW_DOCMAN_PATH, aPath ));
+ }
+ break;
+
+ case SID_ATTR_ADDRESS:
+ {
+ if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(nWhich, sal_False, &pItem))
+ {
+ pPathFinder->SetAddress( *(SvxAddressItem*)pItem );
+ }
+ }
+ break;
+ case SID_ATTR_UNDO_COUNT:
+ if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(nWhich, sal_False, &pItem))
+ {
+ const int nNew = ((SfxUInt16Item*)pItem)->GetValue();
+ const int nOld = SwEditShell::GetUndoActionCount();
+ if(!nNew || !nOld)
+ {
+ sal_Bool bUndo = nNew != 0;
+ //ueber DocShells iterieren und Undo umschalten
+
+ TypeId aType(TYPE(SwDocShell));
+ SwDocShell* pDocShell = (SwDocShell*)SfxObjectShell::GetFirst(&aType);
+ while( pDocShell )
+ {
+ pDocShell->GetDoc()->DoUndo( bUndo );
+ pDocShell = (SwDocShell*)SfxObjectShell::GetNext(*pDocShell, &aType);
+ }
+ }
+ SwEditShell::SetUndoActionCount( nNew );
+ // intern kommt der Request aus dem Dialog, dort werden die Options gesetzt
+ if(rReq.IsAPI())
+ OFF_APP()->GetOptions().SetUndoCount( nNew );
+ break;
+ }
+ break;
+ case SID_ATTR_METRIC:
+ if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(nWhich, sal_False, &pItem))
+ {
+ FieldUnit eUnit = (FieldUnit)((const SfxUInt16Item*)pItem)->GetValue();
+ switch( eUnit )
+ {
+ case FUNIT_MM:
+ case FUNIT_CM:
+ case FUNIT_INCH:
+ case FUNIT_PICA:
+ case FUNIT_POINT:
+ {
+ SwView* pActView = ::GetActiveView();
+ sal_Bool bWebView = 0 != PTR_CAST(SwWebView, pActView);
+ ::SetDfltMetric(eUnit, bWebView);
+ OFF_APP()->GetOptions().SetMetric(eUnit);
+ }
+ break;
+ }
+ }
+ break;
+
+ case FN_SET_MODOPT_TBLNUMFMT:
+ {
+ sal_Bool bWebView = 0 != PTR_CAST(SwWebView, ::GetActiveView() ),
+ bSet;
+
+ if( pArgs && SFX_ITEM_SET == pArgs->GetItemState(
+ nWhich, sal_False, &pItem ))
+ bSet = ((SfxBoolItem*)pItem)->GetValue();
+ else
+ bSet = !pModuleConfig->IsInsTblFormatNum( bWebView );
+
+ pModuleConfig->SetInsTblFormatNum( bWebView, bSet );
+ }
+ break;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+/*
+SfxMacro *SwWriterApp::CreateMacro() const
+{
+ return BasicIDE::CreateMacro();
+} */
+
+/*--------------------------------------------------------------------
+ Beschreibung: Notifies abfangen
+ --------------------------------------------------------------------*/
+
+
+ // Hint abfangen fuer DocInfo
+void SwModule::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if( rHint.ISA( SfxEventHint ) )
+ {
+ SfxEventHint& rEvHint = (SfxEventHint&) rHint;
+ SwDocShell* pDocSh = PTR_CAST( SwDocShell, rEvHint.GetObjShell() );
+ if( pDocSh )
+ {
+ SwWrtShell* pWrtSh = pDocSh ? pDocSh->GetWrtShell() : 0;
+ switch( rEvHint.GetEventId() )
+ {
+/* MA 07. Mar. 96: UpdateInputFlds() nur noch bei Dokument neu.
+ (Und bei Einfuegen Textbaust.)
+ case SFX_EVENT_OPENDOC:
+ // dann am aktuellen Dokument die Input-Fedler updaten
+ if( pWrtSh )
+ pWrtSh->UpdateInputFlds();
+ break;
+*/
+ case SFX_EVENT_CREATEDOC:
+ // alle FIX-Date/Time Felder auf akt. setzen
+ if( pWrtSh )
+ {
+ pWrtSh->SetFixFields();
+ pWrtSh->UpdateInputFlds();
+
+ // Sind Datenbankfelder enthalten?
+ // Erstmal alle verwendeten Datenbanken holen
+ SwDoc *pDoc = pDocSh->GetDoc();
+ SvStringsDtor aDBNameList;
+ pDoc->GetAllUsedDB( aDBNameList );
+ sal_uInt16 nCount = aDBNameList.Count();
+ if (nCount)
+ { // Datenbankbeamer oeffnen
+ String sDBName = pDoc->GetDBName();
+ ShowDBObj(*pWrtSh, sDBName);
+ }
+ }
+ break;
+ }
+ }
+ }
+ else if(rHint.ISA(SfxItemSetHint))
+ {
+ if( SFX_ITEM_SET == ((SfxItemSetHint&)rHint).GetItemSet().GetItemState(SID_ATTR_PATHNAME))
+ {
+ ::GetGlossaries()->UpdateGlosPath( sal_False );
+ SwGlossaryList* pList = ::GetGlossaryList();
+ if(pList->IsActive())
+ pList->Update();
+ }
+
+ const SfxPoolItem* pItem = 0;
+
+ if( SFX_ITEM_SET == ((SfxItemSetHint&)rHint).GetItemSet().GetItemState(SID_ATTR_ADDRESS, sal_False, &pItem))
+ {
+ sActAuthor = ((const SvxAddressItem*)pItem)->GetFirstName();
+ sActAuthor += ' ';
+ sActAuthor += ((const SvxAddressItem*)pItem)->GetName();
+ }
+ }
+ else if(rHint.ISA(SfxSimpleHint) &&
+ ((SfxSimpleHint&)rHint).GetId() == SFX_HINT_DEINITIALIZING)
+ {
+ // Clipboard loslassen:
+ if( pClipboard )
+ {
+ sal_Bool bFlushToSystem = sal_False;
+ if( VclClipboard::ExistsSystemClipboard() )
+ {
+ if( pClipboard->IsBig() )
+ {
+ QueryBox aBox( 0, SW_RES(MSG_CLPBRD_CLEAR) );
+ if( RET_YES == aBox.Execute() )
+ bFlushToSystem = sal_True;
+ }
+ else
+ bFlushToSystem = sal_True;
+ }
+
+ if ( pClipboard )
+ {
+ VclClipboard::ReleaseClipboard( bFlushToSystem );
+ ASSERT( !pClipboard, "can't get off this Clipboard" );
+ }
+ }
+
+ if(pSrcViewConfig)
+ {
+ if(!pSrcViewConfig->IsDefault())
+ pSrcViewConfig->StoreConfig();
+ DELETEZ( pSrcViewConfig );
+ }
+
+ DELETEZ(pWebUsrPref);
+ DELETEZ(pUsrPref) ;
+ DELETEZ(pModuleConfig);
+ DELETEZ(pPrtOpt) ;
+ DELETEZ(pWebPrtOpt) ;
+ DELETEZ(pChapterNumRules);
+ DELETEZ(pStdFontConfig) ;
+ DELETEZ(pNavigationConfig) ;
+ DELETEZ(pToolbarConfig) ;
+ DELETEZ(pWebToolbarConfig) ;
+ DELETEZ(pAuthorNames) ;
+ }
+}
+void SwModule::FillStatusBar( StatusBar& rStatusBar )
+{
+ // Hier den StatusBar initialisieren
+ // und Elemente reinschieben
+
+ // Anzeige Seite
+ String aTmp; aTmp.Fill( 10, 'X' );
+ rStatusBar.InsertItem( FN_STAT_PAGE, rStatusBar.GetTextWidth(
+ aTmp ), SIB_AUTOSIZE | SIB_LEFT);
+ rStatusBar.SetHelpId(FN_STAT_PAGE, FN_STAT_PAGE);
+
+ // Seitenvorlage
+ aTmp.Fill( 15, 'X' );
+ rStatusBar.InsertItem( FN_STAT_TEMPLATE, rStatusBar.GetTextWidth(
+ aTmp ), SIB_AUTOSIZE | SIB_LEFT );
+ rStatusBar.SetHelpId(FN_STAT_TEMPLATE, FN_STAT_TEMPLATE);
+
+ // Zoomeinstellungen
+ rStatusBar.InsertItem( SID_ATTR_ZOOM, rStatusBar.GetTextWidth(
+ C2S("1000%")) );
+ rStatusBar.SetHelpId(SID_ATTR_ZOOM, SID_ATTR_ZOOM);
+
+ // Insert/Overwrite
+ rStatusBar.InsertItem( SID_ATTR_INSERT,
+ SvxInsertStatusBarControl::GetDefItemWidth(rStatusBar));
+ rStatusBar.SetHelpId(SID_ATTR_INSERT, SID_ATTR_INSERT);
+
+ // awt::Selection-Modus
+ rStatusBar.InsertItem( FN_STAT_SELMODE,
+ SvxSelectionModeControl::GetDefItemWidth(rStatusBar));
+
+ rStatusBar.SetHelpId(FN_STAT_SELMODE, FN_STAT_SELMODE);
+
+ // Hyperlink ausfuehren/bearbeiten
+ rStatusBar.InsertItem( FN_STAT_HYPERLINKS, rStatusBar.GetTextWidth(
+ C2S("HYP")) );
+ rStatusBar.SetHelpId(FN_STAT_HYPERLINKS, FN_STAT_HYPERLINKS);
+
+ // Dokument geaendert
+ rStatusBar.InsertItem( SID_DOC_MODIFIED, rStatusBar.GetTextWidth(
+ C2S("*")));
+ rStatusBar.SetHelpId(SID_DOC_MODIFIED, SID_DOC_MODIFIED);
+
+ // den aktuellen Context anzeigen Uhrzeit / FrmPos / TabellenInfo
+ aTmp.Fill( 25, sal_Unicode('X') );
+ rStatusBar.InsertItem( SID_ATTR_SIZE, rStatusBar.GetTextWidth(
+ aTmp ), SIB_AUTOSIZE | SIB_LEFT | SIB_USERDRAW);
+ rStatusBar.SetHelpId(SID_ATTR_SIZE, SID_ATTR_SIZE);
+}
+
+/*-----------------18.11.96 10.42-------------------
+
+--------------------------------------------------*/
+
+SwSrcViewConfig* SwModule::GetSourceViewConfig()
+{
+ if(!pSrcViewConfig)
+ {
+ pSrcViewConfig = new SwSrcViewConfig();
+ pSrcViewConfig->Initialize();
+ }
+ return pSrcViewConfig;
+}
+
+/*-----------------30.01.97 08.30-------------------
+
+--------------------------------------------------*/
+const SwMasterUsrPref *SwModule::GetUsrPref(sal_Bool bWeb)
+{
+ if(bWeb && !pWebUsrPref)
+ {
+ // im Load der SwMasterUsrPref wird der SpellChecker gebraucht, dort darf
+ // er aber nicht angelegt werden #58256#
+ pWebUsrPref = new SwMasterUsrPref(CFG_SWWEB_USRPREF);
+ pWebUsrPref->Initialize();
+ }
+ else if(!bWeb && !pUsrPref)
+ {
+ pUsrPref = new SwMasterUsrPref(CFG_USERPREF_ITEM);
+ pUsrPref->Initialize();
+ }
+ return bWeb ? pWebUsrPref : pUsrPref;
+}
+
+/*-------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.289 2000/09/18 16:05:09 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.288 2000/09/08 15:11:56 os
+ use configuration service
+
+ Revision 1.287 2000/07/18 12:50:07 os
+ replace ofadbmgr
+
+ Revision 1.286 2000/06/26 13:03:00 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.285 2000/06/16 08:25:40 martin.hollmichel
+ add: header
+
+ Revision 1.284 2000/06/13 09:56:08 os
+ using UCB
+
+ Revision 1.283 2000/05/26 07:21:27 os
+ old SW Basic API Slots removed
+
+ Revision 1.282 2000/05/11 12:00:13 tl
+ if[n]def ONE_LINGU und alte SUPD entfernt
+
+ Revision 1.281 2000/05/10 11:52:26 os
+ Basic API removed
+
+ Revision 1.280 2000/05/09 14:40:15 os
+ BASIC interface partially removed
+
+ Revision 1.279 2000/05/08 11:23:33 os
+ CreateSubObject
+
+ Revision 1.278 2000/04/11 08:01:30 os
+ UNICODE
+
+ Revision 1.277 2000/03/21 15:47:50 os
+ UNOIII
+
+
+ Revision 1.276 2000/03/14 13:47:26 jp
+ GetAppWindow() - misuse as parent window eliminated
+
+ Revision 1.275 2000/03/08 17:21:49 os
+ GetAppWindow() - misuse as parent window eliminated
+
+ Revision 1.274 2000/01/31 10:14:56 tl
+ #71447# workaround removed
+
+ Revision 1.273 2000/01/11 16:24:13 jp
+ Bug #71447#: set config as modified if AutoSpell-Flag is changed
+
+ Revision 1.272 2000/01/11 10:20:04 tl
+ #70735# CheckSpellChanges now called from SW_MOD for ONE_LINGU
+
+ Revision 1.271 1999/11/30 10:18:55 jp
+ Task #70259#: more entries into to the popup menus
+
+ Revision 1.270 1999/11/29 14:39:27 tl
+ fixed old header merge problem
+
+ Revision 1.269 1999/11/25 09:27:46 tl
+ SvxGetLinguPropertySet => ::GetLinguPropertySet
+
+ Revision 1.266 1999/10/27 11:00:45 hr
+ #65293#
+
+ Revision 1.265 1999/10/25 19:36:26 tl
+ ongoing ONE_LINGU implementation
+
+ Revision 1.264 1999/10/21 17:45:23 jp
+ have to change - SearchFile with SfxIniManager, dont use SwFinder for this
+
+ Revision 1.263 1999/09/28 13:17:45 os
+ #67382# separate dialog for business cards
+
+ Revision 1.262 1999/08/31 08:33:52 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+
+ Rev 1.261 31 Aug 1999 10:33:52 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+ Rev 1.260 04 Feb 1999 21:13:04 JP
+ Bug #61404#/61014#: neu: SetFixFields statt zweier Methoden
+
+ Rev 1.259 04 Jan 1999 13:41:38 OS
+ #60209# StatusBar: Groessen uber GetDefItemWidth am Controller ermitteln
+
+ Rev 1.258 26 Nov 1998 15:20:44 MA
+ #59896# Raster usw jetzt an der Application
+
+ Rev 1.257 23 Nov 1998 17:36:52 JP
+ Bug #59754#: TerminateHdl wird nicht mehr fuers Clipboard benoetigt
+
+ Rev 1.256 05 Nov 1998 11:22:10 OS
+ #58396# ConfigItems im Notify loeschen
+
+ Rev 1.255 21 Oct 1998 15:29:20 OS
+ #58256# Spellchecker vor dem Load der UsrPref anziehen
+
+ Rev 1.254 05 Oct 1998 17:29:26 HR
+ UPD->SUPD
+
+ Rev 1.253 08 Sep 1998 16:48:10 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.252 15 Jul 1998 12:51:00 OS
+ Navigator an der SwView registrieren #34794#
+
+ Rev 1.251 09 Jul 1998 17:13:24 MA
+ muss: kein docman mehr
+
+ Rev 1.250 15 May 1998 17:26:10 OM
+ #50043# DirectCursor nicht im OnlineLayout
+
+ Rev 1.249 03 Apr 1998 14:39:16 OS
+ RID_DEFAULTTOLOLBOX endlich entsorgt
+
+ Rev 1.248 16 Mar 1998 19:09:12 OM
+ Zugriff auf Ini optimiert
+
+ Rev 1.247 12 Feb 1998 14:28:44 OS
+ SID_TOGGLESTATUSBAR
+
+ Rev 1.246 29 Jan 1998 14:20:38 OS
+ SvxItemFactory an der DesktopApplication anlegen #46753#
+
+ Rev 1.245 26 Jan 1998 09:12:54 OS
+ neu: WebViewSettings
+
+ Rev 1.244 22 Dec 1997 17:16:26 MA
+ ShadowCursor
+
+ Rev 1.243 10 Dec 1997 14:42:32 OM
+ Fixe DocInfoFelder
+
+ Rev 1.242 03 Dec 1997 17:01:24 OS
+ Statuszeile per Basic geht wieder #45887#
+
+ Rev 1.241 28 Nov 1997 14:17:14 MA
+ includes
+
+ Rev 1.240 28 Nov 1997 11:00:36 TJ
+ include
+
+ Rev 1.239 24 Nov 1997 14:22:46 MA
+ includes
+
+ Rev 1.238 11 Nov 1997 14:02:58 MA
+ precomp entfernt
+
+ Rev 1.237 03 Nov 1997 16:13:08 JP
+ neu: Optionen/-Page/Basic-Schnittst. fuer ShadowCursor
+
+ Rev 1.236 01 Sep 1997 13:06:38 OS
+ DLL-Umstellung
+
+ Rev 1.235 12 Aug 1997 14:42:40 OS
+ Header-Umstellung
+
+ Rev 1.234 08 Aug 1997 17:27:00 OM
+ Headerfile-Umstellung
+
+ Rev 1.233 05 Aug 1997 16:09:20 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.232 08 Jul 1997 14:04:16 OS
+ ConfigItems von der App ans Module
+
+ Rev 1.231 11 Jun 1997 14:47:10 OM
+ DB-Beamer bei Vorlagen mit DB-Feldern oeffnen
+
+ Rev 1.230 09 Jun 1997 14:28:18 MA
+ chg: Browse-Flag nur noch am Doc
+
+ Rev 1.229 06 Jun 1997 12:43:18 MA
+ chg: versteckte Absaetze ausblenden
+
+ Rev 1.228 05 Jun 1997 09:32:50 OS
+ FN_INSERT_HEADER/FOOTER invalidieren #40441#
+
+ Rev 1.227 28 May 1997 18:17:28 HJS
+ includes
+
+ Rev 1.226 28 May 1997 08:13:06 OS
+ SID_ATTR_METRIC am SwModule ausfuehren fr #40192#
+
+ Rev 1.225 05 May 1997 08:02:14 OS
+ SID_MAIL_NOTIFY mit richtigen Parametern im StatusBar
+
+ Rev 1.224 25 Apr 1997 09:19:52 OS
+ SID_MAIL_NOTIFY in der Statuszeile
+
+ Rev 1.223 11 Apr 1997 11:00:08 MA
+ includes
+
+ Rev 1.222 07 Apr 1997 15:31:10 MH
+ chg: header
+
+ Rev 1.221 01 Apr 1997 16:25:56 MH
+ add: include sfxdcmn.hxx
+
+ Rev 1.220 23 Mar 1997 23:47:42 OS
+ Mail nicht mehr in der Statuszeile
+
+ Rev 1.219 19 Mar 1997 09:26:22 NF
+ includes (OS2)
+
+ Rev 1.218 10 Mar 1997 09:29:48 JP
+ neues Flag am Doc, um die Beeps aus dem LayoutPaint abzuschalten
+
+ Rev 1.217 05 Feb 1997 18:47:20 MH
+ inetdlg.hxx raus
+
+ Rev 1.216 05 Feb 1997 13:34:44 OS
+ PrintOptins auch fuer Web
+
+ Rev 1.215 30 Jan 1997 11:10:30 OS
+ UsrPrefs verdoppelt; neu: FN_PRINT_LAYOUT
+
+ Rev 1.214 27 Jan 1997 16:25:58 OS
+ HtmlMode entfernt
+
+ Rev 1.213 14 Jan 1997 14:25:00 OS
+ pModuleConfig immer anlegen
+
+ Rev 1.212 13 Jan 1997 16:45:24 OS
+ neu: SwModuleOptions
+
+ Rev 1.211 19 Dec 1996 16:05:50 OS
+ BrowseMode mit HtmlMode koppeln; SetPrinter nur, wenn keiner da ist
+
+ Rev 1.210 13 Dec 1996 14:34:08 OS
+ UndoCount wird aus der SfxApp besorgt
+
+ Rev 1.209 12 Dec 1996 20:30:32 OS
+ GetSbxObject und ItemFactories von der App an das Module
+
+ Rev 1.208 12 Dec 1996 08:41:18 OS
+ GetSpellChecker an der App rufen
+
+ Rev 1.207 11 Dec 1996 14:17:40 OS
+ View nicht von der App holen; Spell-Opts auch an der MiscConfig setzen
+
+ Rev 1.206 03 Dec 1996 16:56:48 AMA
+ Chg: Der Drucker wird nur im !Browsemodus angelegt.
+
+ Rev 1.205 26 Nov 1996 19:44:40 OS
+ GetDocManPath mit SID_SW_DOCMAN_PATH
+
+ Rev 1.204 25 Nov 1996 10:30:40 MA
+ apptitle ist desktop, dafuer name fuer interface
+
+ Rev 1.203 22 Nov 1996 13:05:44 OS
+ neue Ids fuer Wizards
+
+ Rev 1.202 18 Nov 1996 14:15:26 OS
+ neu: GetSourceViewConfig am Module
+
+ Rev 1.201 08 Nov 1996 19:39:36 MA
+ ResMgr
+
+ Rev 1.200 07 Nov 1996 16:20:40 OS
+ FillStatusBar jetzt am Module
+
+ Rev 1.199 05 Nov 1996 15:28:40 OS
+ FN_BASIC war auch ueberfluessig
+
+ Rev 1.198 01 Nov 1996 18:02:40 MA
+ Writer Module
+
+ Rev 1.197 24 Oct 1996 16:55:52 MA
+ #32609#
+
+ Rev 1.196 23 Oct 1996 13:49:10 JP
+ SVMEM -> SVSTDARR Umstellung
+
+ Rev 1.195 18 Oct 1996 11:14:14 OS
+ SID_RULER_PROTECT auch fuer Browser-Umschaltung invalidieren
+
+ Rev 1.194 27 Sep 1996 13:59:48 OS
+ Etiketten und Umschlaege nicht in Readonly-Docs
+
+ Rev 1.193 27 Sep 1996 12:58:12 OS
+ Aktualisieren der Autotexte nachdem die Pfade an der App veraendert wurden
+
+ Rev 1.192 23 Sep 1996 08:21:54 OS
+ Umschalten der Viewoptions nur noch per Bool
+
+ -------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/app/applab.cxx b/sw/source/ui/app/applab.cxx
new file mode 100644
index 000000000000..5c6f374b4de6
--- /dev/null
+++ b/sw/source/ui/app/applab.cxx
@@ -0,0 +1,759 @@
+/*************************************************************************
+ *
+ * $RCSfile: applab.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#if STLPORT_VERSION>=321
+#include <cstdarg>
+#endif
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#include <hintids.hxx>
+
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SBASLTID_HRC //autogen
+#include <offmgr/sbasltid.hrc>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SBA_SBAOBJ_HXX //autogen
+#include <offmgr/sbaobj.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SVX_PBINITEM_HXX //autogen
+#include <svx/pbinitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_PAPERINF_HXX
+#include <svx/paperinf.hxx>
+#endif
+#ifndef _LINKMGR_HXX
+#include <so3/linkmgr.hxx>
+#endif
+#ifndef _SVX_PROTITEM_HXX //autogen
+#include <svx/protitem.hxx>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XSTORABLE_HPP_
+#include <com/sun/star/frame/XStorable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+#ifndef _GLOSHDL_HXX
+#include <gloshdl.hxx>
+#endif
+#ifndef _GLOSSARY_HXX
+#include <glossary.hxx>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _DBMGR_HXX
+#include <dbmgr.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx>
+#endif
+#ifndef _FLDMGR_HXX
+#include <fldmgr.hxx>
+#endif
+#ifndef _LABEL_HXX
+#include <label.hxx>
+#endif
+#ifndef _LABIMG_HXX
+#include <labimg.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+
+#ifndef _APP_HRC
+#include <app.hrc>
+#endif
+#ifndef _POOLFMT_HRC
+#include <poolfmt.hrc>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::rtl;
+
+// steht im appenv.cxx
+extern sal_Bool InsertLabEnvText( SwWrtShell& , SwFldMgr& , const String& );
+
+const char __FAR_DATA MASTER_LABEL[] = "MasterLabel";
+
+// --------------------------------------------------------------------------
+
+const SwFrmFmt *lcl_InsertBCText( SwWrtShell& rSh, const SwLabItem& rItem,
+ SwFrmFmt &rFmt,
+ sal_uInt16 nCol, sal_uInt16 nRow, sal_Bool bPage)
+{
+ SfxItemSet aSet(rSh.GetAttrPool(), RES_ANCHOR, RES_ANCHOR,
+ RES_VERT_ORIENT, RES_VERT_ORIENT, RES_HORI_ORIENT, RES_HORI_ORIENT, 0 );
+ sal_uInt16 nPhyPageNum, nVirtPageNum;
+ rSh.GetPageNum( nPhyPageNum, nVirtPageNum );
+
+ aSet.Put(SwFmtAnchor(bPage ? FLY_IN_CNTNT : FLY_PAGE, nPhyPageNum));
+ if (!bPage)
+ {
+ aSet.Put(SwFmtHoriOrient(rItem.lLeft + nCol * rItem.lHDist,
+ HORI_NONE, REL_PG_FRAME ));
+ aSet.Put(SwFmtVertOrient(rItem.lUpper + nRow * rItem.lVDist,
+ VERT_NONE, REL_PG_FRAME ));
+ }
+ const SwFrmFmt *pFmt = rSh.NewFlyFrm(aSet, sal_True, &rFmt ); // Fly einfuegen
+ ASSERT( pFmt, "Fly not inserted" );
+
+ rSh.UnSelectFrm(); //Rahmen wurde automatisch selektiert
+
+ rSh.SetTxtFmtColl( rSh.GetTxtCollFromPool( RES_POOLCOLL_STANDARD ) );
+
+ //
+ if(!rItem.bSynchron || !(nCol|nRow))
+ {
+ SwGlossaryDlg::SetActGroup(rItem.sGlossaryGroup);
+ SwGlossaryHdl* pGlosHdl = rSh.GetView().GetGlosHdl();
+ pGlosHdl->SetCurGroup(rItem.sGlossaryGroup, sal_True);
+ pGlosHdl->InsertGlossary( rItem.sGlossaryBlockName );
+ }
+
+ return pFmt;
+}
+
+const SwFrmFmt *lcl_InsertLabText( SwWrtShell& rSh, const SwLabItem& rItem,
+ SwFrmFmt &rFmt, SwFldMgr& rFldMgr,
+ sal_uInt16 nCol, sal_uInt16 nRow, sal_Bool bLast, sal_Bool bPage)
+{
+ SfxItemSet aSet(rSh.GetAttrPool(), RES_ANCHOR, RES_ANCHOR,
+ RES_VERT_ORIENT, RES_VERT_ORIENT, RES_HORI_ORIENT, RES_HORI_ORIENT, 0 );
+ sal_uInt16 nPhyPageNum, nVirtPageNum;
+ rSh.GetPageNum( nPhyPageNum, nVirtPageNum );
+
+ aSet.Put(SwFmtAnchor(bPage ? FLY_IN_CNTNT : FLY_PAGE, nPhyPageNum));
+ if (!bPage)
+ {
+ aSet.Put(SwFmtHoriOrient(rItem.lLeft + nCol * rItem.lHDist,
+ HORI_NONE, REL_PG_FRAME ));
+ aSet.Put(SwFmtVertOrient(rItem.lUpper + nRow * rItem.lVDist,
+ VERT_NONE, REL_PG_FRAME ));
+ }
+ const SwFrmFmt *pFmt = rSh.NewFlyFrm(aSet, sal_True, &rFmt ); // Fly einfuegen
+ ASSERT( pFmt, "Fly not inserted" );
+
+ rSh.UnSelectFrm(); //Rahmen wurde automatisch selektiert
+
+ rSh.SetTxtFmtColl( rSh.GetTxtCollFromPool( RES_POOLCOLL_STANDARD ) );
+
+ // Ggf. "Naechster Datensatz"
+ if( (!rItem.bSynchron || !(nCol|nRow)) && InsertLabEnvText( rSh, rFldMgr, rItem.aWriting ) && !bLast )
+ rFldMgr.InsertFld( TYP_DBNEXTSETFLD, 0, String::CreateFromAscii("sal_True"), aEmptyStr, 0, &rSh );
+
+ return pFmt;
+}
+
+// ----------------------------------------------------------------------------
+
+
+void SwModule::InsertLab(sal_Bool bLabel)
+{
+static sal_uInt16 nLabelTitleNo = 0;
+static sal_uInt16 nBCTitleNo = 0;
+
+ // DB-Manager anlegen
+ SwNewDBMgr* pNewDBMgr = new SwNewDBMgr;
+
+ // SwLabItem aus Config lesen
+ SwLabCfgItem aLabCfg;
+ aLabCfg.Initialize();
+
+ // Dialog hochfahren
+ SfxItemSet aSet( GetPool(), FN_LABEL, FN_LABEL, 0 );
+ aSet.Put( bLabel ? aLabCfg.GetLabItem(): aLabCfg.GetBusinessItem() );
+
+ SwLabDlg* pDlg = new SwLabDlg(0, aSet, pNewDBMgr, bLabel);
+
+ if ( RET_OK == pDlg->Execute() )
+ {
+ // Dialog auslesen, Item in Config speichern
+ const SwLabItem& rItem = (const SwLabItem&) pDlg->
+ GetOutputItemSet()->Get(FN_LABEL);
+ if(bLabel)
+ aLabCfg.GetLabItem() = rItem;
+ else
+ aLabCfg.GetBusinessItem() = rItem;
+ pDlg->MakeConfigItem( bLabel ? aLabCfg.GetLabItem() : aLabCfg.GetBusinessItem() );
+ aLabCfg.SetDefault(sal_False);
+ aLabCfg.StoreConfig();
+
+ // Neues Dokument erzeugen.
+ SfxObjectShellRef xDocSh( new SwDocShell( SFX_CREATE_MODE_STANDARD));
+ xDocSh->DoInitNew( 0 );
+
+ // Drucker
+ Printer *pPrt = pDlg->GetPrt();
+ if (pPrt)
+ {
+ SwDocShell *pDocSh = (SwDocShell*)(&*xDocSh);
+ pDocSh->GetDoc()->SetJobsetup(pPrt->GetJobSetup());
+ }
+
+ SfxViewFrame *pFrame = SFX_APP()->CreateViewFrame( *xDocSh, 0, sal_True );
+ SwView *pView = (SwView*) pFrame->GetViewShell();
+ pView->AttrChangedNotify( &pView->GetWrtShell() );//Damit SelectShell gerufen wird.
+
+ // Dokumenttitel setzen
+ String aTmp;
+ if(bLabel)
+ {
+ aTmp = String(SW_RES( STR_LAB_TITLE));
+ aTmp += String::CreateFromInt32(++nLabelTitleNo );
+ }
+ else
+ {
+ aTmp = pDlg->GetBusinessCardStr();
+ aTmp += String::CreateFromInt32( ++nBCTitleNo );
+ }
+ xDocSh->SetTitle( aTmp );
+
+ pFrame->GetFrame()->Appear();
+
+ // Shell ermitteln
+ SwWrtShell *pSh = pView->GetWrtShellPtr();
+ ASSERT( pSh, "missing WrtShell" );
+
+ { // block for locks the dispatcher!!
+
+ SwWait aWait( (SwDocShell&)*xDocSh, sal_True );
+
+ SET_CURR_SHELL(pSh);
+ pSh->DoUndo( sal_False );
+ pSh->StartAllAction();
+
+ pSh->SetNewDoc(); // Performanceprobleme vermeiden
+
+ SwPageDesc aDesc = pSh->GetPageDesc( 0 );
+ SwFrmFmt& rFmt = aDesc.GetMaster();
+
+ // Raender
+ SvxLRSpaceItem aLRMargin;
+ SvxULSpaceItem aULMargin;
+ aLRMargin.SetLeft ((sal_uInt16) rItem.lLeft );
+ aULMargin.SetUpper((sal_uInt16) rItem.lUpper);
+ aLRMargin.SetRight(0);
+ aULMargin.SetLower(0);
+ rFmt.SetAttr(aLRMargin);
+ rFmt.SetAttr(aULMargin);
+
+ // Kopf- und Fusszeilen
+ rFmt.SetAttr(SwFmtHeader(sal_Bool(sal_False)));
+ aDesc.ChgHeaderShare(sal_False);
+ rFmt.SetAttr(SwFmtFooter(sal_Bool(sal_False)));
+ aDesc.ChgFooterShare(sal_False);
+
+
+ aDesc.SetUseOn(PD_ALL); // Seitennumerierung
+
+ // Einstellen der Seitengroesse
+ rFmt.SetAttr(SwFmtFrmSize(ATT_FIX_SIZE,
+ rItem.lLeft + rItem.nCols * rItem.lHDist,
+ rItem.lUpper + rItem.nRows * rItem.lVDist));
+
+ // Numerierungsart
+ SwNumType aType;
+ aType.eType = SVX_NUM_NUMBER_NONE;
+ aDesc.SetNumType( aType );
+
+ // Folgevorlage
+ const SwPageDesc &rFollow = pSh->GetPageDesc( pSh->GetCurPageDesc() );
+ aDesc.SetFollow( &rFollow );
+
+ pPrt = pSh->GetPrt( sal_True );
+ SvxPaperBinItem aItem;
+ aItem.SetValue((sal_Int8)pPrt->GetPaperBin());
+ rFmt.SetAttr(aItem);
+
+ aDesc.SetLandscape(ORIENTATION_LANDSCAPE == pPrt->GetOrientation());
+
+ pSh->ChgPageDesc( 0, aDesc );
+
+ // Rahmen einfuegen
+ SwFldMgr* pFldMgr = new SwFldMgr;
+ pFldMgr->SetEvalExpFlds(sal_False);
+
+ //fix(24446): Damit der Text der Ettiketten nicht im unbedruckbaren
+ //Bereich landet stellen wir entsprechende Raender ein. Um das Handling
+ //so Optimal wie moeglich zu halten stellen wir zunaechst an der
+ //aktuellen Absatzvorlage keinen Rand als hartes Attribut ein (Damit die
+ //Formatierung wg. der Zeichengeb. Rahmen passt. Dann stellen wir die
+ //Standarabsatzvorlage anhand des unbedruckbaren Bereiches ein.
+ const long nMin = pPrt->GetPageOffset().X() - rItem.lLeft;
+ if ( nMin > 0 )
+ {
+ SvxLRSpaceItem aLR;
+ pSh->SetAttr( aLR );
+ SwFmt *pStandard = pSh->GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
+ aLR.SetLeft ( sal_uInt16(nMin) );
+ aLR.SetRight( sal_uInt16(nMin) );
+ pStandard->SetAttr( aLR );
+ }
+
+ // Rahmenvorlage vorbereiten
+ SwFrmFmt* pFmt = pSh->GetFrmFmtFromPool( RES_POOLFRM_LABEL );
+ SwFmtFrmSize aFrmSize( ATT_FIX_SIZE,
+ rItem.lHDist - (rItem.lHDist-rItem.lWidth),
+ rItem.lVDist - (rItem.lVDist-rItem.lHeight));
+ pFmt->SetAttr(aFrmSize);
+
+ SvxLRSpaceItem aFrmLRSpace( 0, (sal_uInt16)(rItem.lHDist - rItem.lWidth),
+ 0, 0,
+ RES_LR_SPACE);
+ pFmt->SetAttr(aFrmLRSpace);
+
+ SvxULSpaceItem aFrmULSpace( 0, (sal_uInt16)(rItem.lVDist - rItem.lHeight),
+ RES_UL_SPACE);
+ pFmt->SetAttr(aFrmULSpace);
+
+ const SwFrmFmt *pFirstFlyFmt = 0;
+ if ( rItem.bPage )
+ {
+ SwFmtVertOrient aFrmVertOrient( pFmt->GetVertOrient() );
+ aFrmVertOrient.SetVertOrient( VERT_TOP );
+ pFmt->SetAttr(aFrmVertOrient);
+
+ for ( sal_uInt16 i = 0; i < rItem.nRows; ++i )
+ {
+ for ( sal_uInt16 j = 0; j < rItem.nCols; ++j )
+ {
+ pSh->Push();
+ const SwFrmFmt *pTmp =
+ bLabel ?
+ lcl_InsertLabText( *pSh, rItem, *pFmt, *pFldMgr, j, i,
+ i == rItem.nRows - 1 && j == rItem.nCols - 1,
+ sal_True ) :
+ lcl_InsertBCText(*pSh, rItem, *pFmt, j, i, sal_True);
+ if (!(i|j))
+ {
+ pFirstFlyFmt = pTmp;
+
+ if (rItem.bSynchron)
+ {
+ // if there is no content in the fly then
+ // dont leave the fly!!!
+ pSh->Push();
+ pSh->SttDoc();
+ sal_Bool bInFly = 0 != pSh->WizzardGetFly();
+ pSh->Pop( bInFly );
+
+ if( bInFly )
+ pSh->EndDoc(sal_True); // select all content
+ // in the fly
+ else
+ pSh->SetMark(); // set only the mark
+
+ SwSection aSect( CONTENT_SECTION,
+ String::CreateFromAscii(MASTER_LABEL));
+ pSh->InsertSection(aSect);
+ }
+ }
+ else if (rItem.bSynchron)
+ {
+ SwSection aSect(FILE_LINK_SECTION, pSh->GetUniqueSectionName());
+ String sLinkName(cTokenSeperator);
+ sLinkName += cTokenSeperator;
+ sLinkName += String::CreateFromAscii(MASTER_LABEL);
+ aSect.SetLinkFileName(sLinkName);
+ aSect.SetProtect();
+ pSh->Insert(aDotStr); // Dummytext zum Zuweisen der Section
+ pSh->SttDoc();
+ pSh->EndDoc(sal_True); // Alles im Rahmen selektieren
+ pSh->InsertSection(aSect);
+ }
+ pSh->Pop( sal_False );
+ }
+ if ( i + 1 != rItem.nRows )
+ pSh->SplitNode(); // Kleine Optimierung
+ }
+ }
+ else
+ {
+ pFirstFlyFmt = bLabel ?
+ lcl_InsertLabText( *pSh, rItem, *pFmt, *pFldMgr,
+ rItem.nCol - 1, rItem.nRow - 1, sal_True, sal_False ) :
+ lcl_InsertBCText(*pSh, rItem, *pFmt, rItem.nCol - 1, rItem.nRow - 1, sal_False);
+ }
+
+ //fill the user fields
+ if(!bLabel)
+ {
+ uno::Reference< frame::XModel > xModel = pSh->GetView().GetDocShell()->GetBaseModel();
+ SwLabDlg::UpdateFieldInformation(xModel, rItem);
+ }
+
+ pFldMgr->SetEvalExpFlds(sal_True);
+ pFldMgr->EvalExpFlds(pSh);
+
+ delete pFldMgr;
+
+ pSh->GotoFly(pFirstFlyFmt->GetName(), FLYCNTTYPE_ALL, sal_False);
+
+ pSh->EndAllAction();
+ pSh->DoUndo( sal_True );
+ pSh->SetLabelDoc(rItem.bSynchron);
+ }
+
+ if( STRING_NOTFOUND != rItem.aWriting.Search( '<' ) )
+ {
+ // Datenbankbrowser mit zuletzt verwendeter Datenbank oeffnen
+ ShowDBObj( *pSh, pSh->GetDBName() );
+ }
+
+ if( rItem.bSynchron )
+ {
+ SfxDispatcher* pDisp = pFrame->GetDispatcher();
+ ASSERT(pDisp, "Heute kein Dispatcher am Frame?");
+ pDisp->Execute(FN_SYNC_LABELS, SFX_CALLMODE_ASYNCHRON);
+ }
+ }
+ delete pDlg;
+
+ if( pNewDBMgr )
+ delete pNewDBMgr;
+}
+
+/*-------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.111 2000/09/18 16:05:09 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.110 2000/07/18 12:50:07 os
+ replace ofadbmgr
+
+ Revision 1.109 2000/06/30 08:52:03 os
+ #76541# string assertions removed
+
+ Revision 1.108 2000/06/13 09:56:09 os
+ using UCB
+
+ Revision 1.107 2000/05/23 17:52:08 jp
+ Bugfixes for Unicode
+
+ Revision 1.106 2000/04/20 12:49:35 os
+ GetName() returns String&
+
+ Revision 1.105 2000/04/11 08:01:30 os
+ UNICODE
+
+ Revision 1.104 2000/03/21 15:47:50 os
+ UNOIII
+
+ Revision 1.103 2000/03/08 17:21:49 os
+ GetAppWindow() - misuse as parent window eliminated
+
+ Revision 1.102 2000/02/14 14:50:56 os
+ #70473# Unicode
+
+ Revision 1.101 2000/02/10 22:40:27 jp
+ Bug #72760#: InsertLab - dont leave the fly of the first card or label
+
+ Revision 1.100 2000/02/04 15:13:08 os
+ #72715# document title of business cards corrected
+
+ Revision 1.99 1999/12/01 09:45:27 os
+ #70151# text blocks should always have content
+
+ Revision 1.98 1999/11/29 14:56:12 os
+ #70227# business card position corrected
+
+ Revision 1.97 1999/11/19 16:40:21 os
+ modules renamed
+
+ Revision 1.96 1999/11/11 14:34:40 hr
+ #65293# STLPORT 3.2.1
+
+ Revision 1.95 1999/10/20 10:52:16 jp
+ Bug #67821#: InsertLab - execute on not locked dispatcher
+
+ Revision 1.94 1999/10/01 13:37:02 os
+ apply AutoText to business cards
+
+ Revision 1.93 1999/09/30 07:51:33 os
+ Label config item and LabItem contain business information
+
+ Revision 1.92 1999/09/28 13:17:45 os
+ #67382# separate dialog for business cards
+
+ Revision 1.91 1999/07/08 13:59:32 MA
+ Use internal object to toggle wait cursor
+
+
+ Rev 1.90 08 Jul 1999 15:59:32 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.89 10 Jun 1999 10:52:08 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.88 10 Feb 1999 14:33:56 MA
+ #61674# Direktdruck fuer Etiketten entfernt
+
+ Rev 1.87 17 Nov 1998 10:49:44 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.86 04 Nov 1998 19:43:04 MA
+ #58858# Format fuer MakeNewFly durchreichen
+
+ Rev 1.85 07 Sep 1998 16:59:58 OM
+ #55930# Einzelnes Etikett an der korrekten Position drucken
+
+ Rev 1.84 19 Mar 1998 18:30:32 JP
+ die neue Poolvorlage fuer Etiketten benutzen
+
+ Rev 1.83 19 Mar 1998 13:32:08 OM
+ Etiketten: Rahmenattribute synchronisieren
+
+ Rev 1.82 18 Mar 1998 12:35:26 OM
+ Rahmenvorlagen automatisch aktualisieren
+
+ Rev 1.81 16 Mar 1998 16:19:30 OM
+ Aktualisieren-Button kontextsensitiv
+
+ Rev 1.80 15 Mar 1998 15:13:30 OM
+ Synchron-Button
+
+ Rev 1.79 14 Mar 1998 17:18:14 OM
+ Gelinkte Etiketten
+
+ Rev 1.78 14 Mar 1998 17:05:14 OM
+ Gelinkte Etiketten
+
+ Rev 1.77 05 Feb 1998 16:34:34 OS
+ Change: hidden ViewFrame anlegen
+
+ Rev 1.76 24 Nov 1997 14:22:38 MA
+ includes
+
+ Rev 1.75 30 Sep 1997 08:43:24 OS
+ include
+
+ Rev 1.74 12 Sep 1997 10:38:32 OS
+ ITEMID_* definiert
+
+ Rev 1.73 03 Sep 1997 11:54:00 JP
+ zusaetzliches include von fmtcol
+
+ Rev 1.72 02 Sep 1997 09:56:50 OM
+ SDB-Headeranpassung
+
+ Rev 1.71 01 Sep 1997 13:06:38 OS
+ DLL-Umstellung
+
+ Rev 1.70 15 Aug 1997 11:45:04 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.69 12 Aug 1997 15:58:36 OS
+ frmitems/textitem/paraitem aufgeteilt
+
+ Rev 1.68 08 Aug 1997 17:26:46 OM
+ Headerfile-Umstellung
+
+ Rev 1.67 07 Aug 1997 14:59:22 OM
+ Headerfile-Umstellung
+
+ Rev 1.66 21 Jul 1997 17:16:58 AMA
+ Fix #38434#: Das FontListen-Update wird jetzt von SetPrt angestossen
+
+ Rev 1.65 08 Jul 1997 14:04:10 OS
+ ConfigItems von der App ans Module
+
+ Rev 1.64 20 Jun 1997 14:23:38 OM
+ Cursor in erstes Etikett stellen
+
+ Rev 1.63 07 Apr 1997 15:30:36 MH
+ chg: header
+
+ Rev 1.62 21 Feb 1997 09:28:52 MA
+ #36621# neue Umrandungstechnik beruecksichtigen
+
+ Rev 1.61 20 Feb 1997 16:09:18 MA
+ fix: PoolColl per RES_ und nicht STR_
+
+ Rev 1.60 11 Feb 1997 16:51:54 OM
+ Eingabefeld ueber Basic ohne Dialog einfuegen
+
+ Rev 1.59 11 Dec 1996 09:26:16 MA
+ Entschlackt
+
+ Rev 1.58 05 Dec 1996 15:23:54 OM
+ Nach Briefumschlag und Etiketten DB-Browser oeffnen
+
+ Rev 1.57 03 Dec 1996 17:41:30 AMA
+ Chg: Der Drucker wird nur im !Browsemodus angelegt.
+
+ Rev 1.56 08 Nov 1996 19:39:36 MA
+ ResMgr
+
+ Rev 1.55 08 Nov 1996 17:38:14 OM
+ DB-Mode fuer Serienbriefe und Etiketten zum Teil wiederbelebt
+
+ Rev 1.54 24 Oct 1996 13:36:06 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.53 18 Oct 1996 12:12:56 MA
+ fixes und opts
+
+ Rev 1.52 26 Sep 1996 09:03:30 MA
+ defautls fuer Rahmen + Aufraeumarbeiten
+
+ Rev 1.51 25 Sep 1996 14:10:24 OM
+ Neue Datenbanktrenner
+
+ Rev 1.50 02 Sep 1996 16:20:22 OS
+ GetViewShell() und Show() statt GetShell() und Appear()
+
+ Rev 1.49 21 Aug 1996 10:53:24 OM
+ Umstellung 322: CreateViewFrame
+
+ -------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/app/appopt.cxx b/sw/source/ui/app/appopt.cxx
new file mode 100644
index 000000000000..2bf010ccd4ba
--- /dev/null
+++ b/sw/source/ui/app/appopt.cxx
@@ -0,0 +1,776 @@
+/*************************************************************************
+ *
+ * $RCSfile: appopt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+#include <sot/dtrans.hxx>
+#include "uiparam.hxx"
+#include "hintids.hxx"
+
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_TSTPITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVX_OPTGRID_HXX //autogen
+#include <svx/optgrid.hxx>
+#endif
+#ifndef _SVX_BACKGRND_HXX //autogen
+#include <svx/backgrnd.hxx>
+#endif
+
+#ifndef _OFF_OFAIDS_HRC
+#include <offmgr/ofaids.hrc>
+#endif
+#ifndef _OPTPAGE_HXX //autogen
+#include <optpage.hxx>
+#endif
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+#ifndef _OPTPAGE_HXX //autogen
+#include <optpage.hxx>
+#endif
+#ifndef _SYSTEM_HXX //autogen
+#include <vcl/system.hxx>
+#endif
+
+#include "optins.hxx"
+#include "optload.hxx"
+#include <edtwin.hxx>
+#include "finder.hxx"
+#include "swmodule.hxx"
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "uitool.hxx"
+#include "initui.hxx" // fuer ::GetGlossaries()
+#include "fldbas.hxx" //fuer UpdateFields
+#include "cmdid.h" // Funktion-Ids
+#include "globals.hrc"
+#include "globals.h" // globale Konstanten z.B.
+#include "wview.hxx"
+#include "cfgitems.hxx"
+#include "prtopt.hxx"
+#include "pview.hxx"
+#include "usrpref.hxx"
+#include "modcfg.hxx"
+#include "glosdoc.hxx"
+#include "uiitems.hxx"
+
+
+
+/* -----------------12.02.99 12:28-------------------
+ *
+ * --------------------------------------------------*/
+SfxItemSet* SwModule::CreateItemSet( USHORT nId )
+{
+ BOOL bTextDialog = (nId == SID_SW_EDITOPTIONS) ? TRUE : FALSE;
+
+ // hier werden die Optionen fuer die Web- und den Textdialog zusmmengesetzt
+ SwViewOption aViewOpt = *GetUsrPref(!bTextDialog);
+ BOOL bFrameDoc = FALSE;
+ //kein MakeUsrPref, da hier nur die Optionen von Textdoks genommen werden duerfen
+ SwView* pAppView = GetView();
+ if(pAppView)
+ {
+ // wenn Text dann nicht WebView und umgekehrt
+ BOOL bWebView = 0 != PTR_CAST(SwWebView, pAppView);
+ if( (bWebView && !bTextDialog) ||(!bWebView && bTextDialog))
+ {
+ aViewOpt = *pAppView->GetWrtShell().GetViewOptions();
+ SfxFrameIterator aIter( *pAppView->GetViewFrame()->GetTopFrame() );
+ if( aIter.FirstFrame() )
+ bFrameDoc = TRUE;
+ }
+ else
+ pAppView = 0; // mit View kann hier nichts gewonnen werden
+ }
+ // rApp.MakeUsrPref(aViewOpt);
+
+
+ /********************************************************************/
+ /* */
+ /* Optionen/Bearbeiten */
+ /* */
+ /********************************************************************/
+ SfxItemSet* pRet = new SfxItemSet (GetPool(), FN_PARAM_DOCDISP, FN_PARAM_ELEM,
+ SID_PRINTPREVIEW, SID_PRINTPREVIEW,
+ SID_ATTR_GRID_OPTIONS, SID_ATTR_GRID_OPTIONS,
+ FN_PARAM_PRINTER, FN_PARAM_WRTSHELL,
+ FN_PARAM_ADDPRINTER, FN_PARAM_ADDPRINTER,
+ SID_ATTR_METRIC, SID_ATTR_METRIC,
+ SID_ATTR_DEFTABSTOP, SID_ATTR_DEFTABSTOP,
+ RES_BACKGROUND, RES_BACKGROUND,
+ SID_HTML_MODE, SID_HTML_MODE,
+ FN_PARAM_SHADOWCURSOR, FN_PARAM_SHADOWCURSOR,
+ FN_PARAM_CRSR_IN_PROTECTED, FN_PARAM_CRSR_IN_PROTECTED,
+ FN_VIEW_IN_FRAME, FN_VIEW_IN_FRAME,
+#ifndef PRODUCT
+ FN_PARAM_SWTEST, FN_PARAM_SWTEST,
+#endif
+ 0);
+
+ if(bFrameDoc)
+ pRet->Put(SfxBoolItem(FN_VIEW_IN_FRAME, TRUE));
+ pRet->Put( SwDocDisplayItem( aViewOpt, FN_PARAM_DOCDISP) );
+ pRet->Put( SwElemItem( aViewOpt, FN_PARAM_ELEM) );
+ if( bTextDialog )
+ {
+ pRet->Put( SwShadowCursorItem( aViewOpt, FN_PARAM_SHADOWCURSOR ));
+ pRet->Put( SfxBoolItem(FN_PARAM_CRSR_IN_PROTECTED, aViewOpt.IsCursorInProtectedArea()));
+ }
+
+ SfxPrinter* pPrt = 0;
+ if( pAppView )
+ {
+ SwWrtShell& rWrtShell = pAppView->GetWrtShell();
+
+ SfxPrinter* pPrt = rWrtShell.GetPrt();
+ if( pPrt )
+ pRet->Put(SwPtrItem(FN_PARAM_PRINTER, pPrt));
+ pRet->Put(SwPtrItem(FN_PARAM_WRTSHELL, &rWrtShell));
+
+ }
+ else
+ {
+/* Der Drucker wird jetzt von der TabPage erzeugt und auch geloescht
+ * SfxItemSet* pSet = new SfxItemSet( SFX_APP()->GetPool(),
+ SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
+ SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
+ 0 );
+
+ pPrt = new SfxPrinter(pSet);
+ pRet->Put(SwPtrItem(FN_PARAM_PRINTER, pPrt));*/
+ }
+ if(bTextDialog)
+ pRet->Put(SwPtrItem(FN_PARAM_STDFONTS, GetStdFontConfig()));
+ if( PTR_CAST( SwPagePreView, SfxViewShell::Current())!=0)
+ {
+ SfxBoolItem aBool(SfxBoolItem(SID_PRINTPREVIEW, TRUE));
+ pRet->Put(aBool);
+ }
+
+ SwModuleOptions* pMCfg = GetModuleConfig();
+ pRet->Put(SfxUInt16Item( SID_ATTR_METRIC, pMCfg->GetMetric(!bTextDialog)));
+ if(bTextDialog)
+ {
+ if(pAppView)
+ {
+ const SvxTabStopItem& rDefTabs =
+ (const SvxTabStopItem&)pAppView->GetWrtShell().
+ GetDefault(RES_PARATR_TABSTOP);
+ pRet->Put( SfxUInt16Item( SID_ATTR_DEFTABSTOP, (USHORT)::GetTabDist(rDefTabs)));
+ }
+ else
+ pRet->Put(SfxUInt16Item( SID_ATTR_DEFTABSTOP, pMCfg->GetDefTab()));
+ }
+
+ /*-----------------01.02.97 11.13-------------------
+ Optionen fuer GridTabPage
+ --------------------------------------------------*/
+
+ SvxGridItem aGridItem( SID_ATTR_GRID_OPTIONS);
+
+ aGridItem.SetUseGridSnap( aViewOpt.IsSnap());
+ aGridItem.SetSynchronize( aViewOpt.IsSynchronize());
+ aGridItem.SetGridVisible( aViewOpt.IsGridVisible());
+
+ const Size& rSnapSize = aViewOpt.GetSnapSize();
+ aGridItem.SetFldDrawX( (USHORT) (rSnapSize.Width() ));
+ aGridItem.SetFldDrawY( (USHORT) (rSnapSize.Height()));
+
+ aGridItem.SetFldDivisionX( aViewOpt.GetDivisionX());
+ aGridItem.SetFldDivisionY( aViewOpt.GetDivisionY());
+
+ pRet->Put(aGridItem);
+
+ /*-----------------01.02.97 13.02-------------------
+ Optionen fuer PrintTabPage
+ --------------------------------------------------*/
+ SwPrintOptions* pOpt = GetPrtOptions(!bTextDialog);
+ SwAddPrinterItem aAddPrinterItem (FN_PARAM_ADDPRINTER, pOpt );
+ pRet->Put(aAddPrinterItem);
+
+ /*-----------------01.02.97 13.12-------------------
+ Optionen fuer Web-Hintergrund
+ --------------------------------------------------*/
+ if(!bTextDialog)
+ {
+ pRet->Put(SvxBrushItem(aViewOpt.GetRetoucheColor(), RES_BACKGROUND));
+ }
+
+#ifndef PRODUCT
+ /*-----------------01.02.97 13.02-------------------
+ Test-Optionen
+ --------------------------------------------------*/
+ SwTestItem aTestItem(FN_PARAM_SWTEST);
+ aTestItem.bTest1 = aViewOpt.IsTest1();
+ aTestItem.bTest2 = aViewOpt.IsTest2();
+ aTestItem.bTest3 = aViewOpt.IsTest3();
+ aTestItem.bTest4 = aViewOpt.IsTest4();
+ aTestItem.bTest5 = aViewOpt.IsTest5();
+ aTestItem.bTest6 = aViewOpt.IsTest6();
+ aTestItem.bTest7 = aViewOpt.IsTest7();
+ aTestItem.bTest8 = aViewOpt.IsTest8();
+ aTestItem.bTest9 = SwViewOption::IsTest9();
+ aTestItem.bTest10 = aViewOpt.IsTest10();
+ pRet->Put(aTestItem);
+#endif
+ /*-----------------01.02.97 13.04-------------------
+
+ --------------------------------------------------*/
+ if(!bTextDialog)
+ pRet->Put(SfxUInt16Item(SID_HTML_MODE, HTMLMODE_ON));
+// delete pPrt;
+ return pRet;
+}
+/* -----------------12.02.99 12:28-------------------
+ *
+ * --------------------------------------------------*/
+void SwModule::ApplyItemSet( USHORT nId, const SfxItemSet& rSet )
+{
+ BOOL bTextDialog = nId == SID_SW_EDITOPTIONS;
+ SwView* pAppView = GetView();
+ SwViewOption aViewOpt = *GetUsrPref(!bTextDialog);
+ SwModuleOptions* pMCfg = GetModuleConfig();
+
+ const SfxPoolItem* pItem;
+ SfxBindings &rBnd = pAppView->GetViewFrame()->GetBindings();
+ /*--------------------------------------------------------------------------
+ Seite Dokumentansicht auswerten
+ ----------------------------------------------------------------------------*/
+ if( SFX_ITEM_SET == rSet.GetItemState(
+ FN_PARAM_DOCDISP, FALSE, &pItem ))
+ {
+ const SwDocDisplayItem* pDocDispItem = (const SwDocDisplayItem*)pItem;
+
+ if(!aViewOpt.IsViewMetaChars())
+ {
+ if( !aViewOpt.IsTab( TRUE ) && pDocDispItem->bTab ||
+ !aViewOpt.IsBlank( TRUE ) && pDocDispItem->bSpace ||
+ !aViewOpt.IsParagraph( TRUE ) && pDocDispItem->bParagraphEnd ||
+ !aViewOpt.IsLineBreak( TRUE ) && pDocDispItem->bManualBreak )
+ {
+ aViewOpt.SetViewMetaChars(TRUE);
+ rBnd.Invalidate(FN_VIEW_META_CHARS);
+ }
+
+ }
+ pDocDispItem->FillViewOptions( aViewOpt );
+ rBnd.Invalidate(FN_VIEW_GRAPHIC);
+ rBnd.Invalidate(FN_VIEW_HIDDEN_PARA);
+ }
+
+ /*--------------------------------------------------------------------------
+ Elemente - Item auswerten
+ ----------------------------------------------------------------------------*/
+
+ if( SFX_ITEM_SET == rSet.GetItemState(
+ FN_PARAM_ELEM, FALSE, &pItem ) )
+ {
+ const SwElemItem* pElemItem = (const SwElemItem*)pItem;
+ pElemItem->FillViewOptions( aViewOpt );
+
+ }
+
+ if( SFX_ITEM_SET == rSet.GetItemState(SID_ATTR_METRIC,
+ FALSE, &pItem ) )
+ {
+ SFX_APP()->SetOptions(rSet);
+ const SfxUInt16Item* pMetricItem = (const SfxUInt16Item*)pItem;
+ ::SetDfltMetric((FieldUnit)pMetricItem->GetValue(), !bTextDialog);
+ }
+
+ if( SFX_ITEM_SET == rSet.GetItemState(SID_ATTR_DEFTABSTOP,
+ FALSE, &pItem ) )
+ {
+ USHORT nTabDist = ((const SfxUInt16Item*)pItem)->GetValue();
+ pMCfg->SetDefTab(nTabDist);
+ if(pAppView)
+ {
+ SvxTabStopItem aDefTabs( 0, 0 );
+ MakeDefTabs( nTabDist, aDefTabs );
+ pAppView->GetWrtShell().SetDefault( aDefTabs );
+ }
+ }
+
+
+ /*-----------------01.02.97 11.36-------------------
+ Hintergrund nur im WebDialog
+ --------------------------------------------------*/
+ if(SFX_ITEM_SET == rSet.GetItemState(RES_BACKGROUND))
+ {
+ const SvxBrushItem& rBrushItem = (const SvxBrushItem&)rSet.Get(
+ RES_BACKGROUND);
+ aViewOpt.SetRetoucheColor( rBrushItem.GetColor() );
+ }
+
+ /*--------------------------------------------------------------------------
+ Seite Rastereinstellungen auswerten
+ ----------------------------------------------------------------------------*/
+
+ if( SFX_ITEM_SET == rSet.GetItemState(
+ SID_ATTR_GRID_OPTIONS, FALSE, &pItem ))
+ {
+ const SvxGridItem* pGridItem = (const SvxGridItem*)pItem;
+
+ aViewOpt.SetSnap( pGridItem->GetUseGridSnap() );
+ aViewOpt.SetSynchronize(pGridItem->GetSynchronize());
+ if( aViewOpt.IsGridVisible() != pGridItem->GetGridVisible() )
+ aViewOpt.SetGridVisible( pGridItem->GetGridVisible());
+ Size aSize = Size( pGridItem->GetFldDrawX() ,
+ pGridItem->GetFldDrawY() );
+ if( aViewOpt.GetSnapSize() != aSize )
+ aViewOpt.SetSnapSize( aSize );
+ short nDiv = (short)pGridItem->GetFldDivisionX() ;
+ if( aViewOpt.GetDivisionX() != nDiv )
+ aViewOpt.SetDivisionX( nDiv );
+ nDiv = (short)pGridItem->GetFldDivisionY();
+ if( aViewOpt.GetDivisionY() != nDiv )
+ aViewOpt.SetDivisionY( nDiv );
+
+ rBnd.Invalidate(SID_GRID_VISIBLE);
+ rBnd.Invalidate(SID_GRID_USE);
+ }
+
+ //--------------------------------------------------------------------------
+ // Writer Drucker Zusatzeinstellungen auswerten
+ //----------------------------------------------------------------------------
+
+ if( SFX_ITEM_SET == rSet.GetItemState(
+ FN_PARAM_ADDPRINTER, FALSE, &pItem ))
+ {
+ SwPrintOptions* pOpt = GetPrtOptions(!bTextDialog);
+ if (pOpt)
+ {
+ const SwAddPrinterItem* pAddPrinterAttr = (const SwAddPrinterItem*)pItem;
+ pAddPrinterAttr->SetPrintOptions(pOpt);
+ pOpt->SetFaxName( pAddPrinterAttr->GetFax());
+ }
+
+ }
+
+ if( SFX_ITEM_SET == rSet.GetItemState(
+ FN_PARAM_SHADOWCURSOR, FALSE, &pItem ))
+ {
+ ((SwShadowCursorItem*)pItem)->FillViewOptions( aViewOpt );
+ rBnd.Invalidate(FN_SHADOWCURSOR);
+ }
+
+ if( SFX_ITEM_SET == rSet.GetItemState(
+ FN_PARAM_CRSR_IN_PROTECTED, FALSE, &pItem ))
+ {
+ aViewOpt.SetCursorInProtectedArea(((const SfxBoolItem*)pItem)->GetValue());
+ }
+
+
+#ifndef PRODUCT
+ /*--------------------------------------------------------------------------
+ Writer Testseite auswerten
+ ----------------------------------------------------------------------------*/
+
+ if( SFX_ITEM_SET == rSet.GetItemState(
+ FN_PARAM_SWTEST, FALSE, &pItem ))
+ {
+ const SwTestItem* pTestItem = (const SwTestItem*)pItem;
+ aViewOpt.SetTest1((BOOL)pTestItem->bTest1);
+ aViewOpt.SetTest2((BOOL)pTestItem->bTest2);
+ aViewOpt.SetTest3((BOOL)pTestItem->bTest3);
+ aViewOpt.SetTest4((BOOL)pTestItem->bTest4);
+ aViewOpt.SetTest5((BOOL)pTestItem->bTest5);
+ aViewOpt.SetTest6((BOOL)pTestItem->bTest6);
+ aViewOpt.SetTest7((BOOL)pTestItem->bTest7);
+ aViewOpt.SetTest8((BOOL)pTestItem->bTest8);
+ SwViewOption::SetTest9((BOOL)pTestItem->bTest9);
+ aViewOpt.SetTest10((BOOL)pTestItem->bTest10);
+ }
+#endif
+ // dann an der akt. View und Shell die entsp. Elemente setzen
+ ApplyUsrPref(aViewOpt, pAppView,
+ bTextDialog? VIEWOPT_DEST_TEXT : VIEWOPT_DEST_WEB);
+}
+/* -----------------12.02.99 12:28-------------------
+ *
+ * --------------------------------------------------*/
+SfxTabPage* SwModule::CreateTabPage( USHORT nId, Window* pParent, const SfxItemSet& rSet )
+{
+ SfxTabPage* pRet = 0;
+
+ switch(nId)
+ {
+ case RID_SW_TP_CONTENT_OPT:
+ case RID_SW_TP_HTML_CONTENT_OPT:
+ pRet = SwContentOptPage::Create(pParent, rSet); break;
+ case RID_SW_TP_HTML_LAYOUT_OPT:
+ case RID_SW_TP_LAYOUT_OPT:
+ pRet = SwLayoutOptPage::Create(pParent, rSet);
+ break;
+ case RID_SW_TP_HTML_OPTGRID_PAGE:
+ case RID_SVXPAGE_GRID:
+ pRet = SvxGridTabPage::Create(pParent, rSet);
+ ((SvxGridTabPage*)pRet)->HideSnapGrid();
+ break;
+
+ break;
+ case RID_SW_TP_STD_FONT: pRet = SwStdFontTabPage::Create(pParent, rSet); break;
+ case RID_SW_TP_HTML_OPTPRINT_PAGE:
+ case RID_SW_TP_OPTPRINT_PAGE:
+ {
+ pRet = SwAddPrinterTabPage::Create(pParent, rSet);
+ SvStringsDtor aFaxList;
+ const USHORT nCount = Printer::GetQueueCount();
+ for (USHORT i = 0; i < nCount; ++i)
+ {
+ String* pString = new String( Printer::GetQueueInfo( i ).GetPrinterName());
+ String* &rpString = pString;
+ aFaxList.Insert(rpString, 0);
+ }
+ (( SwAddPrinterTabPage* )pRet)->SetFax( aFaxList );
+ }
+ break;
+ case RID_SW_TP_HTML_OPTTABLE_PAGE:
+ case RID_SW_TP_OPTTABLE_PAGE:
+ {
+ pRet = SwTableOptionsTabPage::Create(pParent, rSet);
+ SwView* pView = GetView();
+ if(pView)
+ {
+ // wenn Text dann nicht WebView und umgekehrt
+ BOOL bWebView = 0 != PTR_CAST(SwWebView, pView);
+ if( (bWebView && RID_SW_TP_HTML_OPTTABLE_PAGE == nId) ||
+ (!bWebView && RID_SW_TP_HTML_OPTTABLE_PAGE != nId) )
+ {
+ ((SwTableOptionsTabPage*)pRet)->SetWrtShell(pView->GetWrtShellPtr());
+ }
+ }
+ }
+ break;
+ case RID_SW_TP_OPTSHDWCRSR: pRet = SwShdwCrsrOptionsTabPage::Create(pParent, rSet); break;
+ case RID_SW_TP_REDLINE_OPT: pRet = SwRedlineOptionsTabPage::Create(pParent, rSet); break;
+ case RID_SW_TP_OPTINSERT_HTML_PAGE:
+ case RID_SW_TP_OPTINSERT_PAGE: pRet = SwInsertOptPage::Create(pParent, rSet); break;
+ case RID_SW_TP_OPTLOAD_PAGE: pRet = SwLoadOptPage::Create(pParent, rSet); break;
+#ifndef PRODUCT
+ case RID_SW_TP_OPTTEST_PAGE: pRet = SwTestTabPage::Create(pParent, rSet); break;
+#endif
+ case RID_SW_TP_BACKGROUND: pRet = SvxBackgroundTabPage::Create(pParent, rSet); break;
+ case RID_SW_TP_OPTSRCVIEW: pRet = SwSourceViewOptionsTabPage::Create(pParent, rSet); break;
+ }
+ DBG_ASSERT(pRet, "Id unbekannt")
+ return pRet;
+}
+
+/*-------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.163 2000/09/18 16:05:10 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.162 2000/09/07 15:59:19 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.161 2000/09/07 08:25:44 os
+ FaxName now in SwPrintOptions
+
+ Revision 1.160 2000/05/10 11:52:26 os
+ Basic API removed
+
+ Revision 1.159 2000/03/03 15:16:58 os
+ StarView remainders removed
+
+ Revision 1.158 2000/02/11 14:42:32 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.157 1999/06/25 06:34:50 OS
+ #67193# default tabstop from current document
+
+
+ Rev 1.156 25 Jun 1999 08:34:50 OS
+ #67193# default tabstop from current document
+
+ Rev 1.155 10 Jun 1999 10:52:08 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.154 08 Jun 1999 15:29:16 OS
+ #66606# HTML background: use WhichId
+
+ Rev 1.153 19 Mar 1999 15:32:18 OS
+ #63750# Tabellenmode auch wieder an der akt. Tabelle setzen
+
+ Rev 1.152 04 Mar 1999 13:54:40 OS
+ #62613# eigene Ids fuer alle HTML-Pages
+
+ Rev 1.151 25 Feb 1999 10:19:04 OS
+ #62329# eigene Id fuer Sw-Html-Einfuegen-Page
+
+ Rev 1.150 17 Feb 1999 15:07:36 OS
+ #61890# Methoden fuer alte Optionsdialoge geloescht
+
+ Rev 1.149 16 Feb 1999 08:08:20 OS
+ #61890# Syntaxfehler TestTabPage
+
+ Rev 1.148 15 Feb 1999 09:20:36 OS
+ #61890# Virt. Methoden fuer neuen Optionendialog ueberladen
+
+ Rev 1.147 27 Jan 1999 10:05:22 OS
+ #58677# Cursor in Readonly-Bereichen
+
+ Rev 1.146 04 Dec 1998 13:35:26 OS
+ #60117# Raster-Slots nach dem Dialog invalidieren
+
+ Rev 1.145 08 Sep 1998 16:47:58 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.144 18 Aug 1998 16:48:54 TJ
+ include
+
+ Rev 1.143 13 Jul 1998 14:39:54 OS
+ include #51814#
+
+ Rev 1.142 13 Jul 1998 08:48:00 OS
+ Dialog-Parent richtig setzen #51814#
+
+ Rev 1.141 06 Jul 1998 14:53:46 OS
+ Scrollbars in FrameDocs disablen
+
+ Rev 1.140 29 Apr 1998 09:27:40 MA
+ BackgroundBrush -> RetoucheColor
+
+ Rev 1.139 05 Mar 1998 14:44:10 OM
+ Redline-Attribute in Module-Cfg speichern
+
+ Rev 1.138 02 Mar 1998 12:50:20 OS
+ Schattencursor-Slot bei Bedarf invalidieren #47601#
+
+ Rev 1.137 23 Feb 1998 12:40:06 OM
+ Redlining-Optionen
+
+ Rev 1.136 28 Nov 1997 14:26:52 MA
+ includes
+
+ Rev 1.135 24 Nov 1997 14:22:48 MA
+ includes
+
+ Rev 1.134 14 Nov 1997 17:14:04 OS
+ TblChgMode auch an der akt. Tabelle setzen #45521#
+
+ Rev 1.133 11 Nov 1997 14:02:58 MA
+ precomp entfernt
+
+ Rev 1.132 03 Nov 1997 16:13:08 JP
+ neu: Optionen/-Page/Basic-Schnittst. fuer ShadowCursor
+
+ Rev 1.131 09 Aug 1997 12:46:32 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.130 08 Aug 1997 17:26:54 OM
+ Headerfile-Umstellung
+
+ Rev 1.129 08 Jul 1997 14:04:14 OS
+ ConfigItems von der App ans Module
+
+ Rev 1.128 19 Jun 1997 16:02:42 OS
+ DefPaqe an den Dialog weiterreichen #40584#
+
+ Rev 1.127 11 Jun 1997 09:17:04 OS
+ Def-Page-Item fuer den Optionsdialog wieder auswerten #40584#
+
+ Rev 1.126 09 Jun 1997 14:28:26 MA
+ chg: Browse-Flag nur noch am Doc
+
+ Rev 1.125 06 Jun 1997 12:43:12 MA
+ chg: versteckte Absaetze ausblenden
+
+ Rev 1.124 25 Mar 1997 15:55:46 OS
+ _if_ fuer Semikolon ?
+
+ Rev 1.123 05 Feb 1997 13:34:46 OS
+ PrintOptins auch fuer Web
+
+ Rev 1.122 03 Feb 1997 12:07:22 OS
+ kompletter Einstellungesdialog fuer HTML-Dok
+
+ Rev 1.121 30 Jan 1997 11:10:08 OS
+ UsrPrefs verdoppelt
+
+ Rev 1.120 14 Jan 1997 14:26:48 OS
+ TabDist auch an der Shell setzen
+
+ Rev 1.119 14 Jan 1997 08:46:26 MA
+ includes
+
+ Rev 1.118 13 Jan 1997 16:46:06 OS
+ Metric und TabStop am Module
+
+ Rev 1.117 19 Dec 1996 17:38:38 OS
+ werden MetaChars ausgewaehlt, muessen auch die Sonderzeichen eingeschaltet werden
+
+ Rev 1.116 11 Dec 1996 14:16:46 OS
+ Optionenumbau - Reste
+
+ Rev 1.115 04 Dec 1996 14:56:10 OS
+ Umbau Optionsdialoge
+
+ Rev 1.114 04 Dec 1996 14:19:30 OS
+ neue Ids fuer Optionendialoge
+
+ Rev 1.113 03 Dec 1996 16:57:02 AMA
+ Chg: Der Drucker wird nur im !Browsemodus angelegt.
+
+ Rev 1.112 11 Nov 1996 19:32:06 OS
+ alten Code entfernt
+
+ Rev 1.111 06 Nov 1996 19:49:24 MH
+ SwSplCfg -> OfaSplCfg
+
+ Rev 1.110 01 Nov 1996 18:02:42 MA
+ Writer Module
+
+ Rev 1.109 21 Oct 1996 09:37:04 OS
+ ColorTable sichern
+
+ Rev 1.108 07 Sep 1996 13:49:52 OS
+ Hintergrundpage auch ohne BrowseView
+
+ Rev 1.107 04 Sep 1996 08:03:48 OS
+ neu: Grundschriften-Tabpage
+
+ Rev 1.106 03 Sep 1996 16:54:18 OS
+ Tabpage Standardfonts
+
+ Rev 1.105 03 Sep 1996 10:15:58 OS
+ Reste
+
+ Rev 1.104 31 Aug 1996 17:15:08 OS
+ neue Optionendialoge
+
+ Rev 1.103 30 Aug 1996 12:36:20 OS
+ UpdateGlosPath kann Blockliste aktualisieren
+
+ Rev 1.102 27 Aug 1996 11:50:54 OS
+ alten cast entfernt
+
+ Rev 1.101 26 Aug 1996 16:55:40 OS
+ neu: Brush fuer BrowseView
+
+ Rev 1.100 29 Jul 1996 19:37:42 MA
+ includes
+
+ Rev 1.99 17 Jul 1996 13:41:06 OS
+ Printereinstellungen auch ohne View
+
+ Rev 1.98 11 Jun 1996 16:44:52 OS
+ UndoActionCount als Null uebergeben, wenn fuer die akt. Shell DoesUndo() == FALSE, Bug #28570#
+
+ Rev 1.98 11 Jun 1996 16:33:22 OS
+ UndoActionCount als Null uebergeben, wenn fuer die akt. Shell DoesUndo() == FALSE, Bug #28570#
+
+ Rev 1.97 10 Jun 1996 13:03:02 OS
+ Range fuer Optionendialog fuer neue Proxies erweitert
+
+ Rev 1.96 24 May 1996 14:58:58 OS
+ HelpIdas aktualisiert
+
+ Rev 1.95 10 May 1996 11:35:52 NF
+ Zeile 76 auskommentiert
+
+ Rev 1.94 09 May 1996 12:38:00 OS
+ Range fuer Optionendialog erweitert
+
+ Rev 1.93 30 Apr 1996 14:00:02 OS
+ Item fuer Preview schicken, DocDisplayTabPage nicht mehr on demand
+
+ Rev 1.92 27 Apr 1996 17:01:52 OS
+ MakeUsrPref benutzen
+
+ Rev 1.91 25 Apr 1996 16:25:28 OS
+ ViewOptions-Umbau: alle Aktionen an pVOpt
+
+ Rev 1.90 24 Apr 1996 15:02:50 OS
+ Umstellung UsrPref/ViewOption
+
+ -------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/app/docsh.cxx b/sw/source/ui/app/docsh.cxx
new file mode 100644
index 000000000000..5f8e618f18fb
--- /dev/null
+++ b/sw/source/ui/app/docsh.cxx
@@ -0,0 +1,1690 @@
+/*************************************************************************
+ *
+ * $RCSfile: docsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _MSGBOX_HXX
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SV_JOBSET_HXX //autogen
+#include <vcl/jobset.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _ZFORLIST_HXX //autogen
+#include <svtools/zforlist.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SBXCLASS_HXX //autogen
+#include <svtools/sbx.hxx>
+#endif
+#ifndef _SFXDOCINF_HXX //autogen
+#include <sfx2/docinf.hxx>
+#endif
+#ifndef _PASSWD_HXX
+#include <sfx2/passwd.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _SFX_EVENTCONF_HXX //autogen
+#include <sfx2/evntconf.hxx>
+#endif
+#ifndef _SFX_DOCFILT_HACK_HXX //autogen
+#include <sfx2/docfilt.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SVXLINKMGR_HXX
+#include <svx/linkmgr.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SVXMSBAS_HXX
+#include <svx/svxmsbas.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _OFA_HTMLCFG_HXX //autogen
+#include <offmgr/htmlcfg.hxx>
+#endif
+#ifndef _OFA_FLTRCFG_HXX
+#include <offmgr/fltrcfg.hxx>
+#endif
+#ifndef _SOERR_HXX
+#include <so3/soerr.hxx>
+#endif
+#ifndef _SO_CLSIDS_HXX
+#include <so3/clsids.hxx>
+#endif
+#ifndef _BASMGR_HXX //autogen
+#include <basic/basmgr.hxx>
+#endif
+#ifndef _SB_SBMOD_HXX //autogen
+#include <basic/sbmod.hxx>
+#endif
+//#ifndef _SB_SBJSMOD_HXX //autogen
+//#include <basic/sbjsmod.hxx>
+//#endif
+
+#ifndef _SWEVENT_HXX //autogen
+#include <swevent.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _NODE_HXX //autogen
+#include <node.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx> // fuer die aktuelle Sicht
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx> // Verbindung zur Core
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx> // Dokumenterzeugung
+#endif
+#ifndef _BASESH_HXX
+#include <basesh.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _WDOCSH_HXX
+#include <wdocsh.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _GLOBDOC_HXX
+#include <globdoc.hxx>
+#endif
+#ifndef _USRPREF_HXX
+#include <usrpref.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx> // I/O
+#endif
+#ifndef _SW3IO_HXX
+#include <sw3io.hxx> // I/O, Hausformat
+#endif
+#ifndef _DOCSTYLE_HXX
+#include <docstyle.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _DATAEX_HXX
+#include <dataex.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _PVIEW_HXX
+#include <pview.hxx>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx>
+#endif
+#ifndef _SWBASLNK_HXX
+#include <swbaslnk.hxx>
+#endif
+#ifndef _SRCVIEW_HXX
+#include <srcview.hxx>
+#endif
+#ifndef _NDINDEX_HXX
+#include <ndindex.hxx>
+#endif
+#ifndef _NDOLE_HXX
+#include <ndole.hxx>
+#endif
+#ifndef _ASCFLDLG_HXX
+#include <ascfldlg.hxx>
+#endif
+
+#ifndef _SWSWERROR_H
+#include <swerror.h> // Fehlermeldungen
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h> //
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _APP_HRC
+#include <app.hrc>
+#endif
+
+extern BOOL bNotLoadLayout;
+
+
+#define SwDocShell
+#ifndef _ITEMDEF_HXX
+#include <itemdef.hxx>
+#endif
+#ifndef _SWSLOTS_HXX
+#include <swslots.hxx>
+#endif
+
+
+class SwTmpPersist : public SvPersist
+{
+ SwDocShell* pDShell;
+ virtual void FillClass( SvGlobalName * pClassName,
+ ULONG * pClipFormat,
+ String * pAppName,
+ String * pLongUserName,
+ String * pUserName,
+ long nFileFormat=SOFFICE_FILEFORMAT_NOW ) const;
+ virtual BOOL Save();
+ virtual BOOL SaveCompleted( SvStorage * );
+public:
+ SwTmpPersist( SwDocShell& rDSh ) : pDShell( &rDSh ) {}
+};
+
+
+SFX_IMPL_INTERFACE( SwDocShell, SfxObjectShell, SW_RES(0) )
+{
+ SwGlobalDocShell::Factory().RegisterHelpFile(String::CreateFromAscii("swriter.svh"));
+ SwGlobalDocShell::Factory().RegisterHelpPIFile(String::CreateFromAscii("swriter.svh"));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Aller Filter registrieren
+ --------------------------------------------------------------------*/
+
+SFX_IMPL_OBJECTFACTORY_DLL(SwDocShell, SFXOBJECTSHELL_STD_NORMAL|SFXOBJECTSHELL_HASMENU, \
+//swriter3 0xDC5C7E40L, 0xB35C, 0x101B, 0x99, 0x61, 0x04, 0x02, 0x1C, 0x00, 0x70,0x02)
+//swriter4 0x8b04e9b0, 0x420e, 0x11d0, 0xa4, 0x5e, 0x0, 0xa0, 0x24, 0x9d, 0x57,0xb1, Sw)
+//swriter5 0xc20cf9d1, 0x85ae, 0x11d1, 0xaa, 0xb4, 0x0, 0x60, 0x97, 0xda, 0x56, 0x1a
+ SvGlobalName(SO3_SW_CLASSID), Sw) /*swriter5,*/
+
+/*{
+ ::RegisterFilterInSfxFactory( (SfxObjectFactory&)Factory(), RC_DOC_ICON );
+}
+ */
+
+
+TYPEINIT2(SwDocShell, SfxObjectShell, SfxListener);
+
+/*--------------------------------------------------------------------
+ Beschreibung: Laden vorbereiten
+ --------------------------------------------------------------------*/
+
+
+Reader* SwDocShell::StartConvertFrom(SfxMedium& rMedium, SwReader** ppRdr,
+ SwCrsrShell *pCrsrShell,
+ SwPaM* pPaM )
+{
+ BOOL bAPICall = FALSE;
+ const SfxPoolItem* pApiItem;
+ const SfxItemSet* pMedSet;
+ if( 0 != ( pMedSet = rMedium.GetItemSet() ) && SFX_ITEM_SET ==
+ pMedSet->GetItemState( FN_API_CALL, TRUE, &pApiItem ) )
+ bAPICall = ((const SfxBoolItem*)pApiItem)->GetValue();
+
+ const SfxFilter* pFlt = rMedium.GetFilter();
+ if( !pFlt )
+ {
+ if(!bAPICall)
+ {
+ InfoBox( 0, SW_RESSTR(STR_CANTOPEN)).Execute();
+ }
+ return 0;
+ }
+ String aFileName( rMedium.GetName() );
+ SwRead pRead = SwIoSystem::GetReader( pFlt->GetUserData() );
+ if( !pRead )
+ return 0;
+
+ if( rMedium.IsStorage()
+ ? SW_STORAGE_READER & pRead->GetReaderType()
+ : SW_STREAM_READER & pRead->GetReaderType() )
+ {
+ *ppRdr = pPaM ? new SwReader( rMedium, aFileName, *pPaM ) :
+ pCrsrShell ?
+ new SwReader( rMedium, aFileName, *pCrsrShell->GetCrsr() )
+ : new SwReader( rMedium, aFileName, pDoc );
+ }
+ else
+ return 0;
+
+ // PassWord Checken
+ String aPasswd;
+ if ((*ppRdr)->NeedsPasswd( *pRead ))
+ {
+ if(!bAPICall)
+ {
+ SfxPasswordDialog* pPasswdDlg =
+ new SfxPasswordDialog( 0 );
+ if(RET_OK == pPasswdDlg->Execute())
+ aPasswd = pPasswdDlg->GetPassword();
+ }
+ else
+ {
+ const SfxItemSet* pSet = rMedium.GetItemSet();
+ const SfxPoolItem *pPassItem;
+ if(pSet && SFX_ITEM_SET == pSet->GetItemState(SID_PASSWORD, TRUE, &pPassItem))
+ aPasswd = ((const SfxStringItem *)pPassItem)->GetValue();
+ }
+
+ if (!(*ppRdr)->CheckPasswd( aPasswd, *pRead ))
+ {
+ InfoBox( 0, SW_RES(MSG_ERROR_PASSWD)).Execute();
+ delete *ppRdr;
+//JP: SFX-Aenderung - kein close rufen
+// if( !rMedium.IsStorage() )
+// rMedium.CloseInStream();
+ return 0;
+ }
+ }
+ if(rMedium.IsStorage())
+ {
+ SvStorageRef aStor( rMedium.GetStorage() );
+ const SfxItemSet* pSet = rMedium.GetItemSet();
+ const SfxPoolItem *pItem;
+ if(pSet && SFX_ITEM_SET == pSet->GetItemState(SID_PASSWORD, TRUE, &pItem))
+ {
+ DBG_ASSERT(pItem->IsA( TYPE(SfxStringItem) ), "Fehler Parametertype");
+ ByteString aPasswd( ((const SfxStringItem *)pItem)->GetValue(),
+ gsl_getSystemTextEncoding() );
+ aStor->SetKey( aPasswd );
+ }
+ // Fuer's Dokument-Einfuegen noch die FF-Version, wenn's der
+ // eigene Filter ist.
+ ASSERT( pRead != ReadSw3 || pFlt->GetVersion(),
+ "Am Filter ist keine FF-Version gesetzt" );
+ if( pRead == ReadSw3 && pFlt->GetVersion() )
+ aStor->SetVersion( (long)pFlt->GetVersion() );
+ }
+ // beim Sw3-Reader noch den pIo-Pointer setzen
+ if( pRead == ReadSw3 )
+ ((Sw3Reader*)pRead)->SetSw3Io( pIo );
+
+ if( pFlt->GetDefaultTemplate().Len() )
+ pRead->SetTemplateName( pFlt->GetDefaultTemplate() );
+
+ if( pRead == ReadAscii && 0 != rMedium.GetInStream() &&
+ String::CreateFromAscii(FILTER_TEXT_DLG) == pFlt->GetUserData() )
+ {
+ SwAsciiOptions aOpt;
+ const SfxItemSet* pSet;
+ const SfxPoolItem* pItem;
+ if( 0 != ( pSet = rMedium.GetItemSet() ) && SFX_ITEM_SET ==
+ pSet->GetItemState( SID_FILE_FILTEROPTIONS, TRUE, &pItem ) )
+ aOpt.ReadUserData( ((const SfxStringItem*)pItem)->GetValue() );
+ else if(!bAPICall)
+ {
+ SwAsciiFilterDlg* pDlg = new SwAsciiFilterDlg( 0, *this,
+ rMedium.GetInStream() );
+
+ if( RET_OK == pDlg->Execute() )
+ // get the options and put it to the reader
+ pDlg->FillOptions( aOpt );
+ else
+ {
+ pRead = 0;
+ SetError( ERRCODE_IO_ABORT ); // silent abort
+ }
+ delete pDlg;
+ }
+
+ if( pRead )
+ pRead->GetReaderOpt().SetASCIIOpts( aOpt );
+ }
+
+ return pRead;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Laden
+ --------------------------------------------------------------------*/
+
+BOOL SwDocShell::ConvertFrom( SfxMedium& rMedium )
+{
+ SwReader* pRdr;
+ SwRead pRead = StartConvertFrom(rMedium, &pRdr);
+ if (!pRead)
+ return FALSE;
+
+#ifdef _JP_LOADTIME
+{
+extern int bIsSttTime;
+extern long nSttTime;
+{
+SvFileStream aStrm( "\\loadtime.txt", STREAM_WRITE );
+aStrm.Seek( STREAM_SEEK_TO_END );
+aStrm << "ConvertFrom: " << rMedium.GetName().GetStr() << endl;
+}
+bIsSttTime = TRUE;
+nSttTime = Time().GetTime();
+}
+#endif
+
+ SwWait aWait( *this, TRUE );
+
+ // SfxProgress unterdruecken, wenn man Embedded ist
+ SW_MOD()->SetEmbeddedLoadSave(
+ SFX_CREATE_MODE_EMBEDDED == GetCreateMode() );
+
+ // fuer MD
+ BOOL bSave = bNotLoadLayout;
+ bNotLoadLayout = BOOL( !LoadLayout() );
+#ifndef PRODUCT
+ BOOL bWeb = 0 != PTR_CAST(SwWebDocShell, this);
+ bNotLoadLayout |= SW_MOD()->GetUsrPref(bWeb)->IsTest1();
+#endif
+
+ pRdr->GetDoc()->SetHTMLMode( ISA(SwWebDocShell) );
+
+ ULONG nErr = pRdr->Read( *pRead );
+ bNotLoadLayout = bSave;
+ // Evtl. ein altes Doc weg
+ if( pDoc )
+ RemoveLink();
+ pDoc = pRdr->GetDoc();
+
+ // die DocInfo vom Doc am DocShell-Medium setzen
+ if( GetMedium()->GetFilter() &&
+ GetMedium()->GetFilter()->UsesStorage() )
+ {
+ SvStorageRef aRef = GetMedium()->GetStorage();
+ if( aRef.Is() )
+ pDoc->GetInfo()->Save(aRef);
+ }
+
+ AddLink();
+
+ ASSERT( !pBasePool, "wer hat seinen Pool nicht zerstoert?" );
+ pBasePool = new SwDocStyleSheetPool( *pDoc,
+ SFX_CREATE_MODE_ORGANIZER == GetCreateMode() );
+ UpdateFontList();
+ InitDraw();
+
+ delete pRdr;
+
+ SW_MOD()->SetEmbeddedLoadSave( FALSE );
+
+ SetError( nErr );
+ BOOL bOk = !IsError( nErr );
+
+ // StartFinishedLoading rufen. Nicht bei asynchronen Filtern!
+ // Diese muessen das selbst rufen!
+ if( bOk && !pDoc->IsInLoadAsynchron() )
+ StartLoadFinishedTimer();
+
+ return bOk;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Sichern des Default-Formats, Stg vorhanden
+ --------------------------------------------------------------------*/
+
+
+BOOL SwDocShell::Save()
+{
+ SwWait aWait( *this, TRUE );
+ ULONG nErr = ERR_SWG_WRITE_ERROR, nVBWarning = ERRCODE_NONE;
+ if( SfxInPlaceObject::Save() )
+ {
+ switch( GetCreateMode() )
+ {
+ case SFX_CREATE_MODE_INTERNAL:
+ nErr = 0;
+ break;
+
+ case SFX_CREATE_MODE_ORGANIZER:
+ nErr = pIo->SaveStyles();
+ break;
+
+ case SFX_CREATE_MODE_EMBEDDED:
+ // SfxProgress unterdruecken, wenn man Embedded ist
+ SW_MOD()->SetEmbeddedLoadSave( TRUE );
+ // kein break;
+
+ case SFX_CREATE_MODE_STANDARD:
+ case SFX_CREATE_MODE_PREVIEW:
+ default:
+ {
+ if( pDoc->ContainsMSVBasic() )
+ {
+ SvxImportMSVBasic aTmp( *this, *pIo->GetStorage() );
+ aTmp.SaveOrDelMSVBAStorage( FALSE, aEmptyStr );
+ if( OFF_APP()->GetFilterOptions()->IsLoadWordBasicStorage() )
+ nVBWarning = SvxImportMSVBasic::
+ GetSaveWarningOfMSVBAStorage( *this );
+ pDoc->SetContainsMSVBasic( FALSE );
+ }
+
+ if( !ISA( SwGlobalDocShell ) && !ISA( SwWebDocShell ) &&
+ SFX_CREATE_MODE_EMBEDDED != GetCreateMode() )
+ AddXMLAsZipToTheStorage( *pIo->GetStorage() );
+
+ // TabellenBox Edit beenden!
+ if( pWrtShell )
+ pWrtShell->EndAllTblBoxEdit();
+
+ WriterRef xWrt;
+ ::GetSw3Writer( aEmptyStr, xWrt );
+ ((Sw3Writer*)&xWrt)->SetSw3Io( pIo, FALSE );
+
+ SwWriter aWrt( *pIo->GetStorage(), *pDoc );
+ nErr = aWrt.Write( xWrt );
+ }
+ break;
+ }
+ SW_MOD()->SetEmbeddedLoadSave( FALSE );
+ }
+ SetError( nErr ? nErr : nVBWarning );
+
+ const SfxStringItem aTmp( SID_DOC_MODIFIED, ' ' );
+ pWrtShell->GetView().GetViewFrame()->GetBindings().SetState( aTmp );
+
+ return !IsError( nErr );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Sichern im Defaultformat
+ --------------------------------------------------------------------*/
+
+
+BOOL SwDocShell::SaveAs( SvStorage * pStor )
+{
+ SwWait aWait( *this, TRUE );
+
+ if( pDoc->IsGlobalDoc() && !pDoc->IsGlblDocSaveLinks() )
+ RemoveOLEObjects();
+
+ {
+ // Task 75666 - is the Document imported by our Microsoft-Filters?
+ const SfxFilter* pOldFilter = GetMedium()->GetFilter();
+ if( pOldFilter &&
+ ( pOldFilter->GetUserData().EqualsAscii( FILTER_WW8 ) ||
+ pOldFilter->GetUserData().EqualsAscii( "CWW6" ) ||
+ pOldFilter->GetUserData().EqualsAscii( "WW6" ) ||
+ pOldFilter->GetUserData().EqualsAscii( "WW1" ) ))
+ {
+ // when saving it in our own fileformat, then remove the template
+ // name from the docinfo.
+ SfxDocumentInfo aInfo = GetDocInfo();
+ if( aInfo.GetTemplateName().Len() ||
+ aInfo.GetTemplateFileName().Len() )
+ {
+ aInfo.SetTemplateName( aEmptyStr );
+ aInfo.SetTemplateFileName( aEmptyStr );
+ SetDocumentInfo( aInfo );
+ }
+ }
+ }
+
+ ULONG nErr = ERR_SWG_WRITE_ERROR, nVBWarning = ERRCODE_NONE;
+ if( SfxInPlaceObject::SaveAs( pStor ) )
+ {
+ if( pDoc->ContainsMSVBasic() )
+ {
+ SvxImportMSVBasic aTmp( *this, *pIo->GetStorage() );
+ aTmp.SaveOrDelMSVBAStorage( FALSE, aEmptyStr );
+ if( OFF_APP()->GetFilterOptions()->IsLoadWordBasicStorage() )
+ nVBWarning = SvxImportMSVBasic::
+ GetSaveWarningOfMSVBAStorage( *this );
+ pDoc->SetContainsMSVBasic( FALSE );
+ }
+
+ if( !ISA( SwGlobalDocShell ) && !ISA( SwWebDocShell ) &&
+ SFX_CREATE_MODE_EMBEDDED != GetCreateMode() )
+ AddXMLAsZipToTheStorage( *pStor );
+
+ // TabellenBox Edit beenden!
+ if( pWrtShell )
+ pWrtShell->EndAllTblBoxEdit();
+
+ // Modified-Flag merken und erhalten ohne den Link zu Callen
+ // (fuer OLE; nach Anweisung von MM)
+ BOOL bIsModified = pDoc->IsModified();
+ Link aOldOLELnk( pDoc->GetOle2Link() );
+ pDoc->SetOle2Link( Link() );
+
+ // SfxProgress unterdruecken, wenn man Embedded ist
+ SW_MOD()->SetEmbeddedLoadSave(
+ SFX_CREATE_MODE_EMBEDDED == GetCreateMode() );
+
+ WriterRef xWrt;
+ ::GetSw3Writer( aEmptyStr, xWrt );
+ ((Sw3Writer*)&xWrt)->SetSw3Io( pIo, TRUE );
+
+ SwWriter aWrt( *pStor, *pDoc );
+ nErr = aWrt.Write( xWrt );
+
+ if( bIsModified )
+ pDoc->SetModified();
+ pDoc->SetOle2Link( aOldOLELnk );
+
+ SW_MOD()->SetEmbeddedLoadSave( FALSE );
+ }
+ SetError( nErr ? nErr : nVBWarning );
+
+ return !IsError( nErr );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Sichern aller Formate
+ --------------------------------------------------------------------*/
+SwSrcView* lcl_GetSourceView( SwDocShell* pSh )
+{
+ // sind wir in der SourceView?
+ SfxViewFrame* pVFrame = SfxViewFrame::GetFirst( pSh );
+ SfxViewShell* pViewShell = pVFrame ? pVFrame->GetViewShell() : 0;
+ return PTR_CAST( SwSrcView, pViewShell);
+}
+
+BOOL SwDocShell::ConvertTo( SfxMedium& rMedium )
+{
+ const SfxFilter* pFlt = rMedium.GetFilter();
+ if( !pFlt )
+ return FALSE;
+
+ WriterRef xWriter;
+ SwIoSystem::GetWriter( pFlt->GetUserData(), xWriter );
+ if( !xWriter.Is() )
+ { // Der Filter ist nicht vorhanden
+ InfoBox( 0,
+ SW_RESSTR(STR_DLLNOTFOUND) ).Execute();
+ return FALSE;
+ }
+
+ ULONG nVBWarning = 0;
+ if( pDoc->ContainsMSVBasic() )
+ {
+ BOOL bSave = pFlt->GetUserData().EqualsAscii( "CWW8" )
+ && OFF_APP()->GetFilterOptions()->IsLoadWordBasicStorage();
+
+ SvStorage* pStg;
+ if( xWriter->IsStgWriter() )
+ pStg = rMedium.GetStorage();
+ else
+ pStg = pIo->GetStorage();
+ SvxImportMSVBasic aTmp( *this, *pStg );
+ nVBWarning = aTmp.SaveOrDelMSVBAStorage( bSave, String::CreateFromAscii("Macros") );
+ pDoc->SetContainsMSVBasic( bSave );
+ }
+
+ // TabellenBox Edit beenden!
+ if( pWrtShell )
+ pWrtShell->EndAllTblBoxEdit();
+
+ if( pFlt->GetUserData().EqualsAscii( "HTML") )
+ {
+ OfficeApplication* pOffApp = OFF_APP();
+ OfaHtmlOptions* pHtmlOpt = pOffApp->GetHtmlOptions();
+ if( !pHtmlOpt->IsStarBasic() && HasBasic())
+ {
+ BOOL bModules = FALSE;
+ BasicManager *pBasicMan = GetBasicManager();
+
+ for( USHORT i=0; i < pBasicMan->GetLibCount(); i++ )
+ {
+ StarBASIC *pBasic = pBasicMan->GetLib( i );
+ SbxArray *pModules = pBasic->GetModules();
+ for( USHORT j = 0; j < pModules->Count(); j++ )
+ {
+ const SbModule *pModule = PTR_CAST( SbModule, pModules->Get(j) );
+ bModules = TRUE;
+ break;
+ }
+ }
+
+ if(bModules && pHtmlOpt->IsStarBasicWarning())
+ {
+ SetError(WARN_SWG_HTML_NO_MACROS);
+ }
+ }
+ UpdateDocInfoForSave();
+ }
+
+ if( xWriter->IsStgWriter() && xWriter->IsSw3Writer() )
+ {
+ // eigenen Typ ermitteln
+ BYTE nMyType = 0;
+ if( ISA( SwWebDocShell) )
+ nMyType = 1;
+ else if( ISA( SwGlobalDocShell) )
+ nMyType = 2;
+
+ // gewuenschten Typ ermitteln
+ BYTE nSaveType = 0;
+ ULONG nSaveClipId = pFlt->GetFormat();
+ if( SOT_FORMATSTR_ID_STARWRITERWEB_50 == nSaveClipId ||
+ SOT_FORMATSTR_ID_STARWRITERWEB_40 == nSaveClipId )
+ nSaveType = 1;
+ else if( SOT_FORMATSTR_ID_STARWRITERGLOB_50 == nSaveClipId ||
+ SOT_FORMATSTR_ID_STARWRITERGLOB_40 == nSaveClipId )
+ nSaveType = 2;
+
+ // Flags am Dokument entsprechend umsetzen
+ BOOL bIsHTMLModeSave = GetDoc()->IsHTMLMode();
+ BOOL bIsGlobalDocSave = GetDoc()->IsGlobalDoc();
+ BOOL bIsGlblDocSaveLinksSave = GetDoc()->IsGlblDocSaveLinks();
+ if( nMyType != nSaveType )
+ {
+ GetDoc()->SetHTMLMode( 1 == nSaveType );
+ GetDoc()->SetGlobalDoc( 2 == nSaveType );
+ GetDoc()->SetGlblDocSaveLinks( FALSE );
+ }
+
+ // Jetzt das Dokument normal speichern
+ BOOL bRet = SaveAs( rMedium.GetStorage() );
+
+ if( nMyType != nSaveType )
+ {
+ GetDoc()->SetHTMLMode( bIsHTMLModeSave );
+ GetDoc()->SetGlobalDoc( bIsGlobalDocSave );
+ GetDoc()->SetGlblDocSaveLinks( bIsGlblDocSaveLinksSave );
+ }
+
+ if( bRet && nMyType != nSaveType )
+ {
+ SvGlobalName aClassName;
+ ULONG nClipFormat;
+ String aAppName, aLongUserName, aUserName;
+ SfxObjectShellRef xDocSh;
+ switch( nSaveType )
+ {
+ case 0:
+ xDocSh = new SwDocShell( SFX_CREATE_MODE_INTERNAL );
+ break;
+ case 1:
+ xDocSh = new SwWebDocShell( SFX_CREATE_MODE_INTERNAL );
+ break;
+ case 2:
+ xDocSh = new SwGlobalDocShell( SFX_CREATE_MODE_INTERNAL );
+ break;
+ }
+ xDocSh->FillClass( &aClassName, &nClipFormat, &aAppName,
+ &aLongUserName, &aUserName,
+ pFlt->GetVersion() );
+ ASSERT( nClipFormat == nSaveClipId,
+ "FillClass hat falsche Clipboard-Id gesetzt" );
+ rMedium.GetStorage()->SetClass( aClassName, nClipFormat,
+ aUserName );
+ }
+
+ return bRet;
+ }
+
+ if( pFlt->GetUserData().EqualsAscii( FILTER_TEXT_DLG ) &&
+ ( pWrtShell || !::lcl_GetSourceView( this ) ))
+ {
+ SwAsciiOptions aOpt;
+ String sItemOpt;
+ BOOL bShowDlg = FALSE;
+ const SfxItemSet* pSet;
+ const SfxPoolItem* pItem;
+ if( 0 != ( pSet = rMedium.GetItemSet() ) )
+ {
+ if( SFX_ITEM_SET == pSet->GetItemState( SID_FILE_FILTEROPTIONS,
+ TRUE, &pItem ) )
+ sItemOpt = ((const SfxStringItem*)pItem)->GetValue();
+ if( SFX_ITEM_SET == pSet->GetItemState( SID_USE_FILTEROPTIONS,
+ TRUE, &pItem ) )
+ bShowDlg = ((const SfxBoolItem*)pItem)->GetValue();
+ }
+
+ if( bShowDlg || !sItemOpt.Len() )
+ {
+ SwAsciiFilterDlg* pDlg = new SwAsciiFilterDlg( 0, *this, 0 );
+ int nDlg = pDlg->Execute();
+
+ if( RET_OK == nDlg )
+ // get the options for the writer
+ pDlg->FillOptions( aOpt );
+
+ delete pDlg;
+
+ if( RET_OK != nDlg )
+ {
+ SetError( ERRCODE_IO_ABORT ); // silent abort
+ return FALSE;
+ }
+ }
+ else
+ aOpt.ReadUserData( sItemOpt );
+
+ xWriter->SetAsciiOptions( aOpt );
+ }
+
+ // SfxProgress unterdruecken, wenn man Embedded ist
+ SW_MOD()->SetEmbeddedLoadSave(
+ SFX_CREATE_MODE_EMBEDDED == GetCreateMode());
+
+ // Kontext aufspannen, um die Anzeige der Selektion zu unterbinden
+ ULONG nErrno;
+ String aFileName( rMedium.GetName() );
+
+ //Keine View also das ganze Dokument!
+ if ( pWrtShell )
+ {
+ SwWait aWait( *this, TRUE );
+ pWrtShell->StartAllAction();
+ pWrtShell->Push();
+ SwWriter aWrt( rMedium, *pWrtShell, TRUE );
+ nErrno = aWrt.Write( xWriter, &aFileName );
+ //JP 16.05.97: falls der SFX uns die View waehrend des speicherns
+ // entzieht
+ if( pWrtShell )
+ {
+ pWrtShell->Pop(FALSE);
+ pWrtShell->EndAllAction();
+ }
+ }
+ else
+ {
+ // sind wir in der SourceView?
+ SwSrcView* pSrcView = ::lcl_GetSourceView( this );
+ if( pSrcView )
+ {
+ pSrcView->SaveContentTo(rMedium);
+ nErrno = 0;
+ }
+ else
+ {
+ SwWriter aWrt( rMedium, *pDoc );
+ nErrno = aWrt.Write( xWriter, &aFileName );
+ }
+ }
+
+ SW_MOD()->SetEmbeddedLoadSave( FALSE );
+ SetError( nErrno ? nErrno : nVBWarning );
+ if( !rMedium.IsStorage() )
+ rMedium.CloseOutStream();
+
+ return !IsError( nErrno );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Haende weg
+ --------------------------------------------------------------------*/
+
+
+void SwDocShell::HandsOff()
+{
+ pIo->HandsOff();
+ SfxInPlaceObject::HandsOff();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: ??? noch nicht zu aktivieren, muss TRUE liefern
+ --------------------------------------------------------------------*/
+
+
+BOOL SwDocShell::SaveCompleted( SvStorage * pStor )
+{
+ BOOL bRet = SfxInPlaceObject::SaveCompleted( pStor );
+ if( bRet )
+ {
+ // erst hier entscheiden, ob das Speichern geklappt hat oder nicht
+ if( IsModified() )
+ pDoc->SetModified();
+ else
+ pDoc->ResetModified();
+
+ bRet = pIo->SaveCompleted( pStor );
+ }
+
+ if( xOLEChildList.Is() )
+ {
+ BOOL bResetModified = IsEnableSetModified();
+ if( bResetModified )
+ EnableSetModified( FALSE );
+
+ SvPersist* pPersist = this;
+ const SvInfoObjectMemberList* pInfList = xOLEChildList->GetObjectList();
+
+ for( ULONG n = pInfList->Count(); n; )
+ {
+ SvInfoObjectRef aRef( pInfList->GetObject( --n ));
+ pPersist->Move( &aRef, aRef->GetStorageName() );
+ }
+
+ xOLEChildList.Clear();
+ if( bResetModified )
+ EnableSetModified( TRUE );
+ }
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Draw()-Overload fuer OLE2 (Sfx)
+ --------------------------------------------------------------------*/
+
+void SwDocShell::Draw( OutputDevice* pDev, const JobSetup& rSetup,
+ USHORT nAspect )
+{
+ //fix #25341# Draw sollte das Modified nicht beeinflussen
+ BOOL bResetModified;
+ if ( TRUE == (bResetModified = IsEnableSetModified()) )
+ EnableSetModified( FALSE );
+
+ //sollte am Document ein JobSetup haengen, dann kopieren wir uns diesen,
+ //um nach dem PrtOle2 diesen wieder am Doc zu verankern.
+ //Einen leeren JobSetup setzen wir nicht ein, denn der wuerde nur zu
+ //fragwuerdigem Ergebnis nach teurer Neuformatierung fuehren (Preview!)
+ JobSetup *pOrig = 0;
+ if ( rSetup.GetPrinterName().Len() || ASPECT_THUMBNAIL != nAspect )
+ {
+ JobSetup* pOrig = (JobSetup*)pDoc->GetJobsetup();
+ if( pOrig ) // dann kopieren wir uns den
+ pOrig = new JobSetup( *pOrig );
+ pDoc->SetJobsetup( rSetup );
+ }
+
+ Rectangle aRect( nAspect == ASPECT_THUMBNAIL ?
+ GetVisArea( nAspect ) : ((SvEmbeddedObject*)this)->GetVisArea() );
+
+ pDev->Push();
+ pDev->SetFillColor();
+ pDev->SetLineColor();
+ pDev->SetBackground();
+ BOOL bWeb = 0 != PTR_CAST(SwWebDocShell, this);
+ ViewShell::PrtOle2( pDoc, SW_MOD()->GetUsrPref(bWeb), pDev, aRect );
+ pDev->Pop();
+
+ if( pOrig )
+ {
+ pDoc->SetJobsetup( *pOrig );
+ delete pOrig;
+ }
+ if ( bResetModified )
+ EnableSetModified( TRUE );
+}
+
+
+void SwDocShell::SetVisArea( const Rectangle &rRect )
+{
+ Rectangle aRect( rRect );
+ if ( pView )
+ {
+ Size aSz( pView->GetDocSz() );
+ aSz.Width() += DOCUMENTBORDER; aSz.Height() += DOCUMENTBORDER;
+ long nMoveX = 0, nMoveY = 0;
+ if ( aRect.Right() > aSz.Width() )
+ nMoveX = aSz.Width() - aRect.Right();
+ if ( aRect.Bottom() > aSz.Height() )
+ nMoveY = aSz.Height() - aRect.Bottom();
+ aRect.Move( nMoveX, nMoveY );
+ nMoveX = aRect.Left() < 0 ? -aRect.Left() : 0;
+ nMoveY = aRect.Top() < 0 ? -aRect.Top() : 0;
+ aRect.Move( nMoveX, nMoveY );
+
+ //Ruft das SfxInPlaceObject::SetVisArea()!
+ pView->SetVisArea( aRect, TRUE );
+ }
+ else
+ SfxInPlaceObject::SetVisArea( aRect );
+}
+
+
+Rectangle SwDocShell::GetVisArea( USHORT nAspect ) const
+{
+ if ( nAspect == ASPECT_THUMBNAIL )
+ {
+ //PreView: VisArea auf die erste Seite einstellen.
+
+ //PageDesc besorgen, vom ersten Absatz oder den default.
+ SwNodeIndex aIdx( pDoc->GetNodes().GetEndOfExtras(), 1 );
+ SwCntntNode* pNd = pDoc->GetNodes().GoNext( &aIdx );
+ const SwFmtPageDesc &rDesc = pNd->GetSwAttrSet().GetPageDesc();
+ const SwPageDesc* pDesc = rDesc.GetPageDesc();
+ if( !pDesc )
+ pDesc = &pDoc->GetPageDesc( 0 );
+
+ //Das Format wird evtl. von der virtuellen Seitennummer bestimmt.
+ const USHORT nPgNum = rDesc.GetNumOffset();
+ const BOOL bOdd = nPgNum % 2 ? TRUE : FALSE;
+ const SwFrmFmt *pFmt = bOdd ? pDesc->GetRightFmt() : pDesc->GetLeftFmt();
+ if ( !pFmt ) //#40568#
+ pFmt = bOdd ? pDesc->GetLeftFmt() : pDesc->GetRightFmt();
+
+ if ( pFmt->GetFrmSize().GetWidth() == LONG_MAX )
+ //Jetzt wird es aber Zeit fuer die Initialisierung
+ pDoc->GetPrt( TRUE );
+
+ const SwFmtFrmSize& rFrmSz = pFmt->GetFrmSize();
+ const Size aSz( rFrmSz.GetWidth(), rFrmSz.GetHeight() );
+ const Point aPt( DOCUMENTBORDER, DOCUMENTBORDER );
+ const Rectangle aRect( aPt, aSz );
+ return aRect;
+ }
+ return SvEmbeddedObject::GetVisArea( nAspect );
+}
+
+Printer *SwDocShell::GetDocumentPrinter()
+{
+ return pDoc->GetPrt();
+}
+
+void SwDocShell::OnDocumentPrinterChanged( Printer * pNewPrinter )
+{
+ if ( pNewPrinter )
+ GetDoc()->SetJobsetup( pNewPrinter->GetJobSetup() );
+ else
+ GetDoc()->SetPrt( 0 );
+}
+
+ULONG SwDocShell::GetMiscStatus() const
+{
+ return SfxInPlaceObject::GetMiscStatus() |
+ SVOBJ_MISCSTATUS_RESIZEONPRINTERCHANGE;
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwDocShell::GetState(SfxItemSet& rSet)
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+
+ while (nWhich)
+ {
+ switch (nWhich)
+ {
+ // MT: MakroChosser immer enablen, weil Neu moeglich
+ // case SID_BASICCHOOSER:
+ // {
+ // StarBASIC* pBasic = GetBasic();
+ // StarBASIC* pAppBasic = SFX_APP()->GetBasic();
+ // if ( !(pBasic->GetModules()->Count() ||
+ // pAppBasic->GetModules()->Count()) )
+ // rSet.DisableItem(nWhich);
+ // }
+ // break;
+ case SID_PRINTPREVIEW:
+ {
+ FASTBOOL bDisable = GetProtocol().IsInPlaceActive();
+ if ( !bDisable )
+ {
+ SfxViewFrame *pTmpFrm = SfxViewFrame::GetFirst(this);
+ while (pTmpFrm) // Preview suchen
+ {
+ if ( PTR_CAST(SwView, pTmpFrm->GetViewShell()) &&
+ ((SwView*)pTmpFrm->GetViewShell())->GetWrtShell().
+ GetDoc()->IsBrowseMode())
+ {
+ bDisable = TRUE;
+ break;
+ }
+ pTmpFrm = pTmpFrm->GetNext(*pTmpFrm, this);
+ }
+ }
+ if ( bDisable )
+ rSet.DisableItem( SID_PRINTPREVIEW );
+ else
+ {
+ SfxBoolItem aBool( SID_PRINTPREVIEW, FALSE );
+ if( PTR_CAST( SwPagePreView, SfxViewShell::Current()) )
+ aBool.SetValue( TRUE );
+ rSet.Put( aBool );
+ }
+ }
+ break;
+ case SID_SOURCEVIEW:
+ {
+ if(IsLoading())
+ rSet.DisableItem(nWhich);
+ else
+ {
+ SfxViewShell* pView = GetView() ? (SfxViewShell*)GetView()
+ : SfxViewShell::Current();
+ BOOL bSourceView = 0 != PTR_CAST(SwSrcView, pView);
+ rSet.Put(SfxBoolItem(SID_SOURCEVIEW, bSourceView));
+ }
+ }
+ break;
+ case SID_HTML_MODE:
+ rSet.Put(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(this)));
+ break;
+
+ case FN_ABSTRACT_STARIMPRESS:
+ case FN_OUTLINE_TO_IMPRESS:
+ if ( !SFX_APP()->HasFeature( SFX_FEATURE_SIMPRESS ) )
+ rSet.DisableItem( nWhich );
+ /* no break here */
+ case FN_ABSTRACT_NEWDOC:
+ case FN_OUTLINE_TO_CLIPBOARD:
+ {
+ if ( !GetDoc()->GetNodes().GetOutLineNds().Count() )
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case SID_BROWSER_MODE:
+ {
+ SfxViewShell* pViewShell = SfxViewShell::Current();
+ BOOL bDisable = PTR_CAST(SwPagePreView, pViewShell) != 0;
+
+ if (bDisable)
+ rSet.DisableItem( nWhich );
+ else
+ rSet.Put( SfxBoolItem( SID_BROWSER_MODE, GetDoc()->IsBrowseMode()));
+ break;
+ }
+ case FN_PRINT_LAYOUT:
+ {
+ rSet.Put( SfxBoolItem( FN_PRINT_LAYOUT, !GetDoc()->IsBrowseMode()));
+ break;
+ }
+ case FN_NEW_GLOBAL_DOC:
+ if ( ISA(SwGlobalDocShell) )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FN_NEW_HTML_DOC:
+ // ??? oder sollte das immer gehen??
+ if( ISA( SwWebDocShell ) )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_ATTR_YEAR2000:
+ rSet.Put(SfxUInt16Item(nWhich, pDoc->GetNumberFormatter(TRUE)->GetYear2000()));
+ break;
+
+ default: DBG_ASSERT(!this,"Hier darfst Du nicht hinein!");
+
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: OLE-Hdls
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwDocShell, Ole2ModifiedHdl, void *, p )
+{
+ // vom Doc wird der Status mitgegeben (siehe doc.cxx)
+ // Bit 0: -> alter Zustand
+ // Bit 1: -> neuer Zustand
+ long nStatus = (long)p;
+ if( IsEnableSetModified() )
+ SetModified( (nStatus & 2) ? TRUE : FALSE );
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Pool returnen Hier weil virtuelll
+ --------------------------------------------------------------------*/
+
+
+SfxStyleSheetBasePool* SwDocShell::GetStyleSheetPool()
+{
+ return pBasePool;
+}
+
+
+void SwDocShell::SetView(SwView* pVw)
+{
+ if ( 0 != (pView = pVw) )
+ pWrtShell = &pView->GetWrtShell();
+ else
+ pWrtShell = 0;
+}
+
+
+void SwDocShell::PrepareReload()
+{
+ ::RemoveFromBackgroundCache( *this, TRUE );
+ ::DelAllGrfCacheEntries( pDoc );
+ pDoc->GetLinkManager().PrepareReload();
+}
+
+
+void SwDocShell::StartLoadFinishedTimer()
+{
+ BOOL bSttTimer = FALSE;
+ // ohne WrtShell haben wir eine WebDocShell und muessen uns die
+ // Optionen vom Modul holen
+ if( pWrtShell ? pWrtShell->GetViewOptions()->IsGraphic()
+ : SW_MOD()->GetUsrPref(TRUE)->IsGraphic() )
+ {
+ const SvxLinkManager& rLnkMgr = pDoc->GetLinkManager();
+ const SvBaseLinks& rLnks = rLnkMgr.GetLinks();
+ for( USHORT n = 0; n < rLnks.Count(); ++n )
+ {
+ SvBaseLink* pLnk = &(*rLnks[ n ]);
+ if( pLnk && OBJECT_CLIENT_GRF == pLnk->GetObjType() &&
+ pLnk->ISA( SwBaseLink ) )
+ {
+ SvPseudoObject* pLnkObj = pLnk->GetObj();
+ if( !pLnkObj )
+ {
+ String sFileNm;
+ if( rLnkMgr.GetDisplayNames( *pLnk, 0, &sFileNm, 0, 0 ))
+ {
+ INetURLObject aURL( sFileNm );
+ switch( aURL.GetProtocol() )
+ {
+ case INET_PROT_NOT_VALID:
+ case INET_PROT_FILE:
+ case INET_PROT_MAILTO:
+ case INET_PROT_NEWS:
+ case INET_PROT_CID:
+ break;
+
+ default:
+ ((SwBaseLink*)pLnk)->SwapIn();
+ ((SwBaseLink*)pLnk)->GetCntntNode()->SetAutoFmtLvl(1);
+ bSttTimer = TRUE;
+ break;
+ }
+ }
+ }
+ else
+ {
+ ULONG nState = pLnkObj->GetUpToDateStatus();
+ if( ERRCODE_SO_FALSE == nState )
+ {
+ // falls aber nicht angetickert werden muss (liegt
+ // im QuickdrawCache)
+ if( !((SwBaseLink*)pLnk)->IsShowQuickDrawBmp() )
+ {
+ ((SwBaseLink*)pLnk)->SwapIn();
+ ((SwBaseLink*)pLnk)->GetCntntNode()->SetAutoFmtLvl(1);
+ bSttTimer = TRUE;
+ }
+ else
+ {
+ // dann muss aber auf jedenfall der Status
+ // an die Handler verschickt werden!
+ SvData aData( SvxLinkManager::RegisterStatusInfoId() );
+ aData.SetData( String::CreateFromInt32(STATE_LOAD_OK ));
+ pLnkObj->DataChanged( aData );
+ }
+ }
+ else if( ERRCODE_NONE != nState )
+ bSttTimer = TRUE; // Pending?
+ else if( ((SwBaseLink*)pLnk)->IsShowQuickDrawBmp() )
+ {
+ // Wenn die Grafik aus dem QuickDrawCache kommt,
+ // wird sie nie angefordert!
+ // Dann muss aber auf jedenfall der Status
+ // an die Handler verschickt werden!
+ SvData aData( SvxLinkManager::RegisterStatusInfoId() );
+ aData.SetData( String::CreateFromInt32(STATE_LOAD_OK) );
+ pLnkObj->DataChanged( aData );
+ }
+ }
+ }
+ }
+ }
+
+ if( bSttTimer )
+ {
+ aFinishedTimer.SetTimeoutHdl( STATIC_LINK( this, SwDocShell, IsLoadFinished ));
+ aFinishedTimer.SetTimeout( 1000 );
+ aFinishedTimer.Start();
+ GetDoc()->StopIdleTimer();
+ }
+ FinishedLoading( SFX_LOADED_MAINDOCUMENT |
+ ( bSttTimer ? 0 : SFX_LOADED_IMAGES ));
+ // jetzt noch testen, ob die SourceView noch geladen werden muá
+ SfxViewFrame* pVFrame = SfxViewFrame::GetFirst(this);
+ if(pVFrame)
+ {
+ SfxViewShell* pShell = pVFrame->GetViewShell();
+ if(PTR_CAST(SwSrcView, pShell))
+ ((SwSrcView*)pShell)->Load(this);
+ }
+}
+
+
+IMPL_STATIC_LINK( SwDocShell, IsLoadFinished, void*, EMPTYARG )
+{
+ BOOL bSttTimer = FALSE;
+
+ if( !pThis->IsAbortingImport() )
+ {
+ const SvxLinkManager& rLnkMgr = pThis->pDoc->GetLinkManager();
+ const SvBaseLinks& rLnks = rLnkMgr.GetLinks();
+ for( USHORT n = rLnks.Count(); n; )
+ {
+ SvBaseLink* pLnk = &(*rLnks[ --n ]);
+ if( pLnk && OBJECT_CLIENT_GRF == pLnk->GetObjType() &&
+ pLnk->ISA( SwBaseLink ) )
+ {
+ SvPseudoObject* pLnkObj = pLnk->GetObj();
+ if( pLnkObj && ERRCODE_SO_PENDING == pLnkObj->GetUpToDateStatus() &&
+ !((SwBaseLink*)pLnk)->IsShowQuickDrawBmp() )
+ {
+ bSttTimer = TRUE;
+ break;
+ }
+ }
+ }
+ }
+
+ if( bSttTimer )
+ pThis->aFinishedTimer.Start();
+ else
+ {
+ BOOL bIsModifiedEnabled = pThis->IsEnableSetModified();
+ pThis->EnableSetModified( FALSE );
+ pThis->FinishedLoading( SFX_LOADED_MAINDOCUMENT | SFX_LOADED_IMAGES );
+ pThis->EnableSetModified( bIsModifiedEnabled );
+
+ pThis->GetDoc()->StartIdleTimer();
+ }
+ return 0;
+}
+
+
+// eine Uebertragung wird abgebrochen (wird aus dem SFX gerufen)
+void SwDocShell::CancelTransfers()
+{
+ // alle Links vom LinkManager Canceln
+ aFinishedTimer.Stop();
+ pDoc->GetLinkManager().CancelTransfers();
+ SfxObjectShell::CancelTransfers();
+}
+
+SwFEShell* SwDocShell::GetFEShell()
+{
+ return pWrtShell;
+}
+
+ // embedded alle lokalen Links (Bereiche/Grafiken)
+BOOL SwDocShell::EmbedAllLinks()
+{
+ if( pWrtShell )
+ return pWrtShell->EmbedAllLinks();
+ return pDoc->EmbedAllLinks();
+}
+
+
+void SwDocShell::RemoveOLEObjects()
+{
+ SvPersist* pPersist = this;
+ SwClientIter aIter( *(SwModify*)pDoc->GetDfltGrfFmtColl() );
+ for( SwCntntNode* pNd = (SwCntntNode*)aIter.First( TYPE( SwCntntNode ) );
+ pNd; pNd = (SwCntntNode*)aIter.Next() )
+ {
+ SwOLENode* pOLENd = pNd->GetOLENode();
+ if( pOLENd && ( pOLENd->IsOLEObjectDeleted() ||
+ ( !pOLENd->GetOLEObj().IsOLELink() &&
+ pOLENd->IsInGlobalDocSection() )))
+ {
+ SvInfoObjectRef aRef( pPersist->Find(
+ pOLENd->GetOLEObj().GetName() ) );
+ if( aRef.Is() )
+ {
+ if( !xOLEChildList.Is() )
+ {
+ xOLEChildList = new SwTmpPersist( *this );
+ xOLEChildList->DoInitNew( 0 );
+ }
+
+ xOLEChildList->Move( &aRef, aRef->GetStorageName() );
+
+ pPersist->Remove( &aRef );
+ }
+ }
+ }
+}
+
+void SwTmpPersist::FillClass( SvGlobalName * pClassName,
+ ULONG * pClipFormat,
+ String * pAppName,
+ String * pLongUserName,
+ String * pUserName,
+ long nFileFormat ) const
+{
+ pDShell->SwDocShell::FillClass( pClassName, pClipFormat, pAppName,
+ pLongUserName, pUserName, nFileFormat );
+}
+
+BOOL SwTmpPersist::Save()
+{
+ if( SaveChilds() )
+ return SvPersist::Save();
+ return FALSE;
+}
+
+BOOL SwTmpPersist::SaveCompleted( SvStorage * pStor )
+{
+ if( SaveCompletedChilds( pStor ) )
+ return SvPersist::SaveCompleted( pStor );
+ return FALSE;
+}
+
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.388 2000/09/18 16:05:10 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.387 2000/09/07 15:59:19 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.386 2000/08/14 17:20:30 jp
+ Task #77577#: new AddXMLAsZipToTheStorage
+
+ Revision 1.385 2000/06/19 17:17:03 jp
+ Must changes
+
+ Revision 1.384 2000/06/13 09:56:09 os
+ using UCB
+
+ Revision 1.383 2000/05/26 07:21:27 os
+ old SW Basic API Slots removed
+
+ Revision 1.382 2000/05/10 11:52:42 os
+ Basic API removed
+
+ Revision 1.381 2000/05/08 11:32:54 jp
+ Bug #75666#: SaveAs - remove templatename when a MS importet doc saved as SWG doc
+
+ Revision 1.380 2000/05/03 13:06:34 jp
+ Bug #75497#: warning for loosing the VBA Basic code
+
+ Revision 1.379 2000/04/11 08:01:30 os
+ UNICODE
+
+ Revision 1.378 2000/03/16 16:39:35 kz
+ remove include sbjsmod.hxx
+
+ Revision 1.377 2000/03/08 17:26:34 os
+ GetAppWindow() - misuse as parent window eliminated
+
+ Revision 1.376 2000/03/06 15:10:58 os
+ #73092# FN_API_CALL - prevent dialogs in inserting documents via API
+
+ Revision 1.375 2000/03/03 16:14:15 pl
+ #73771# workaround for c50 intel compiler
+
+ Revision 1.374 2000/03/03 12:27:49 mib
+ Removed JavaScript
+
+ Revision 1.373 2000/02/14 14:50:56 os
+ #70473# Unicode
+
+ Revision 1.372 2000/02/10 17:02:52 jp
+ Task #72781#: new filter options for MS-filters
+
+ Revision 1.371 2000/02/02 17:00:29 jp
+ Task #72579#: interface of SwReader is changed
+
+ Revision 1.370 2000/01/26 18:55:34 jp
+ Task #72268#: flag for stored M$-VBasic storage
+
+ Revision 1.369 2000/01/11 19:26:33 jp
+ Bug #71674#: IsLoadFinished - dont modifiy the modifyflag
+
+ Revision 1.368 1999/10/21 12:46:06 os
+ CHG: SfxPasswordDialog
+
+ Revision 1.367 1999/09/08 13:44:47 jp
+ ConvertTo: use set the filteroptions if it set and dont show the dialog
+
+ Revision 1.366 1999/08/30 08:01:02 JP
+ save Text with more options
+
+
+ Rev 1.365 30 Aug 1999 10:01:02 JP
+ save Text with more options
+
+ Rev 1.364 26 Aug 1999 20:35:52 JP
+ load and save Text with more options (charset/language/lineend/font)
+
+ Rev 1.363 25 Aug 1999 19:47:32 JP
+ StartConvertFrom: use new dialog for ASCII filter options
+
+ Rev 1.362 30 Jul 1999 12:55:32 JP
+ ConvertTo: call IsSw3Writer at Writer
+
+ Rev 1.361 09 Jul 1999 11:14:10 JP
+ StartLoadFinishedTimer - dont load file/mail/news - graphics
+
+ Rev 1.360 08 Jul 1999 15:59:38 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.359 25 Jun 1999 11:58:52 OS
+ #63132# Macros in HTML not saved: Warning code
+
+ Rev 1.358 22 Jun 1999 17:03:10 KZ
+ Anpass. fuer Linux
+
+ Rev 1.357 10 Jun 1999 10:52:10 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.356 04 May 1999 14:58:42 JP
+ FilterExportklasse Writer von SvRef abgeleitet, damit sie immer zerstoert wird
+
+ Rev 1.355 26 Apr 1999 11:19:54 KZ
+ #include <svtools/sbx.hxx> eingefuegt
+
+ Rev 1.354 11 Mar 1999 10:23:56 OS
+ #63130# Basic-Warnmeldung auch fuer JScript
+
+ Rev 1.353 05 Feb 1999 09:57:42 OS
+ #61208# Warnung fuer Basic-Export abschaltbar
+
+ Rev 1.352 02 Feb 1999 08:42:42 OS
+ #61027# zweistellige Jahreszahlen
+
+ Rev 1.351 26 Nov 1998 13:49:52 MA
+ #54599# OLE: Drucker synchronisieren
+
+ Rev 1.350 18 Nov 1998 15:17:44 JP
+ Task #59398#: ClipboardFormatId Umstellungen
+
+ Rev 1.349 18 Sep 1998 11:20:28 JP
+ Bug #56312# StartFinishLoading - Anforderreihenfolge der Links umgestellt
+
+ Rev 1.348 25 Aug 1998 14:19:50 JP
+ Bug #55502#: Save/SaveAs - WaitObject vorm SFX-Speichern anlegen
+
+ Rev 1.347 12 Aug 1998 18:02:32 HR
+ #54781#: GCC braucht Temporary
+
+ Rev 1.346 23 Jul 1998 17:03:46 OS
+ StartConvertFrom kann auch mit SwPaM* aufgerufen werden #52654#
+
+ Rev 1.345 23 Jul 1998 11:14:36 JP
+ Task #52654#: Einfuegen Doc nicht mit einer CrsrShell sondern mit einen PaM
+
+ Rev 1.344 20 Jul 1998 10:43:42 MA
+ #53013# Nach Anweisung abgeklemmt
+
+ Rev 1.343 17 Jun 1998 16:57:34 OM
+ #51260# Kein Online-Layout in Seitenvorschau
+
+ Rev 1.342 29 Apr 1998 09:28:04 MA
+ OLE Transparent
+
+ Rev 1.341 24 Apr 1998 17:17:26 JP
+ Bug #49791#: nur auf OLE casten wenn auch OLE drin ist (und nicht Grafik)
+
+ Rev 1.340 23 Apr 1998 15:35:38 OM
+ #49689 Aenderung der Seitenanzahl per Basic konfigurierbar
+
+ Rev 1.339 21 Apr 1998 12:39:02 JP
+ StartFinishedLoading: if abfrage korrigiert
+
+ Rev 1.338 02 Apr 1998 10:07:44 MIB
+ ConvertTo kann jetzt auch eigene Formate anderer Sw.*DocShells speichern
+
+ Rev 1.337 26 Mar 1998 18:01:54 MA
+ Draw: keinen Default-Jobsetup uebernehmen
+
+ Rev 1.336 20 Mar 1998 13:23:28 MA
+ OleVis2Page durch BrowseMode ersetzt
+
+ Rev 1.335 17 Mar 1998 15:42:10 JP
+ neu: NewHTMLDoc - aequivalent zum NewGlobalDoc
+
+ Rev 1.334 12 Mar 1998 09:36:18 JP
+ GlobalDoc ohne OLE-Object: Objecte bis zum SavePersist temp. in TempPersist verschieben
+
+ Rev 1.333 09 Mar 1998 10:02:12 JP
+ Bug GlobalDoc(speichern ohne Inhalt) -> OLE-Objecte aus den Sections nicht speichern
+
+ Rev 1.332 02 Mar 1998 16:55:42 OS
+ Fehlermeldung Makro in HTML korrigiert #47694#
+
+ Rev 1.331 02 Mar 1998 12:51:32 OS
+ Hilfedateiname fuer Globaldoc hart setzen #47604#
+
+ Rev 1.330 25 Feb 1998 14:05:08 MIB
+ GetFilter entfernt, weil ueberfluessig
+
+ Rev 1.329 25 Feb 1998 11:31:10 MIB
+ fix: Fileformat-Version fuer eigenen Reader im StartConvertFrom setzen
+
+ Rev 1.328 17 Feb 1998 12:43:12 JP
+ StartConvert: Templatenamen nur setzen, wenn der gesetzt ist
+
+ Rev 1.327 02 Feb 1998 18:19:06 JP
+ StartConvertFrom: DefaultTemplate am Reader setzen
+
+ Rev 1.326 29 Jan 1998 21:33:48 JP
+ GetEndOfIcons ersetzt durch GetEndOfExtras, das auf GetEndOfRedlines mappt
+
+ Rev 1.325 23 Jan 1998 16:04:58 MA
+ includes
+
+ Rev 1.324 08 Jan 1998 08:48:32 OS
+ QueryBox fuer ungspeicherte Basic-Makros #44706#
+
+ Rev 1.323 07 Jan 1998 18:42:04 MIB
+ 5.0 Fileformat
+
+ Rev 1.322 02 Dec 1997 13:56:10 MA
+ includes
+
+ Rev 1.321 28 Nov 1997 14:28:40 MA
+ includes
+
+ Rev 1.320 24 Nov 1997 14:22:40 MA
+ includes
+
+ Rev 1.319 03 Nov 1997 13:08:44 MA
+ precomp entfernt
+
+ Rev 1.318 09 Oct 1997 14:49:46 JP
+ Umstellung NodeIndex/-Array/BigPtrArray
+
+ Rev 1.317 01 Sep 1997 13:06:34 OS
+ DLL-Umstellung
+
+ Rev 1.316 16 Aug 1997 12:51:22 OS
+ include
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/app/docsh2.cxx b/sw/source/ui/app/docsh2.cxx
new file mode 100644
index 000000000000..355c4f44063e
--- /dev/null
+++ b/sw/source/ui/app/docsh2.cxx
@@ -0,0 +1,1981 @@
+/*************************************************************************
+ *
+ * $RCSfile: docsh2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define ITEMID_COLOR_TABLE SID_COLOR_TABLE
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _TOOLS_TEMPFILE_HXX
+#include <tools/tempfile.hxx>
+#endif
+#ifndef _SV_CLIP_HXX //autogen
+#include <vcl/clip.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _LCKBITEM_HXX
+#include <svtools/lckbitem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXMACITEM_HXX //autogen
+#include <svtools/macitem.hxx>
+#endif
+#ifndef _ZFORLIST_HXX //autogen
+#include <svtools/zforlist.hxx>
+#endif
+#ifndef _ZFORMAT_HXX //autogen
+#include <svtools/zformat.hxx>
+#endif
+#ifndef _SFXDOCINF_HXX //autogen
+#include <sfx2/docinf.hxx>
+#endif
+#ifndef _SFX_DINFDLG_HXX //autogen
+#include <sfx2/dinfdlg.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXNEW_HXX //autogen
+#include <sfx2/new.hxx>
+#endif
+#ifndef _IODLG_HXX
+#include "sfx2/iodlg.hxx"
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SFX_EVENTCONF_HXX //autogen
+#include <sfx2/evntconf.hxx>
+#endif
+#ifndef _SFXECODE_HXX //autogen
+#include <svtools/sfxecode.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _SFX_DOCFILT_HACK_HXX //autogen
+#include <sfx2/docfilt.hxx>
+#endif
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SVX_DRAWITEM_HXX //autogen
+#include <svx/drawitem.hxx>
+#endif
+#ifndef _MySVXACORR_HXX //autogen
+#include <svx/svxacorr.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVX_FMSHELL_HXX //autogen
+#include <svx/fmshell.hxx>
+#endif
+#ifndef _OFA_HTMLCFG_HXX //autogen
+#include <offmgr/htmlcfg.hxx>
+#endif
+#ifndef _OFF_OFAITEM_HXX //autogen
+#include <offmgr/ofaitem.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+
+#ifndef _SB_SBSTAR_HXX //autogen
+#include <basic/sbstar.hxx>
+#endif
+#ifndef _BASMGR_HXX //autogen
+#include <basic/basmgr.hxx>
+#endif
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+#ifndef _SO_CLSIDS_HXX
+#include <so3/clsids.hxx>
+#endif
+
+#ifndef _FMTCOL_HXX //autogen
+#include <fmtcol.hxx>
+#endif
+
+#ifndef _SWEVENT_HXX //autogen
+#include <swevent.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx> // fuer die aktuelle Sicht
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx> // Dokumenterzeugung
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _GLOBDOC_HXX
+#include <globdoc.hxx>
+#endif
+#ifndef _DOCSTDLG_HXX
+#include <docstdlg.hxx> // fuer Dokument Style
+#endif
+#ifndef _TMPLDLG_HXX
+#include <tmpldlg.hxx>
+#endif
+#ifndef _FLDWRAP_HXX
+#include <fldwrap.hxx>
+#endif
+#ifndef _REDLNDLG_HXX
+#include <redlndlg.hxx>
+#endif
+#ifndef _ABSTRACT_HXX
+#include <abstract.hxx> // SwInsertAbstractDialog
+#endif
+#ifndef _DOCSTYLE_HXX
+#include <docstyle.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _LTMPDLG_HXX
+#include <ltmpdlg.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _SW3IO_HXX
+#include <sw3io.hxx>
+#endif
+#ifndef _PVIEW_HXX
+#include <pview.hxx>
+#endif
+#ifndef _SRCVIEW_HXX
+#include <srcview.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _USRPREF_HXX
+#include <usrpref.hxx>
+#endif
+#ifndef _WDOCSH_HXX
+#include <wdocsh.hxx>
+#endif
+#ifndef _UNOTXDOC_HXX
+#include <unotxdoc.hxx>
+#endif
+#ifndef _ACMPLWRD_HXX //autogen
+#include <acmplwrd.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _GLOBALS_H
+#include <globals.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _APP_HRC
+#include <app.hrc>
+#endif
+#ifndef _POOLFMT_HRC
+#include <poolfmt.hrc>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::rtl;
+extern FASTBOOL FindPhyStyle( SwDoc& , const String& , SfxStyleFamily );
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: DocInfo setzen am SFX
+ --------------------------------------------------------------------*/
+
+
+BOOL SwDocShell::SetDocumentInfo(const SfxDocumentInfo& rInfo)
+{
+ SfxDocumentInfo& rOldInfo = GetDocInfo();
+ BOOL bRet = !(rOldInfo == rInfo);
+ if( bRet )
+ {
+ rOldInfo = rInfo;
+ Broadcast( SfxDocumentInfoHint( &rOldInfo ) );
+ }
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: DocInfo kreieren (virtuell)
+ --------------------------------------------------------------------*/
+
+
+SfxDocumentInfoDialog* SwDocShell::CreateDocumentInfoDialog(
+ Window *pParent, const SfxItemSet &rSet)
+{
+ SfxDocumentInfoDialog* pDlg = new SfxDocumentInfoDialog(pParent, rSet);
+// const SfxDocumentInfoItem& rItem = (const SfxDocumentInfoItem&)rSet.Get(SID_DOCINFO);
+// if(rItem.IsOwnFormat())
+ //nur mit Statistik, wenn dieses Doc auch angezeigt wird, nicht
+ //aus dem Doc-Manager
+ SwDocShell* pDocSh = (SwDocShell*) SfxObjectShell::Current();
+ if( pDocSh == this )
+ {
+ //Nicht fuer SourceView.
+ SfxViewShell *pVSh = SfxViewShell::Current();
+ if ( pVSh && !pVSh->ISA(SwSrcView) )
+ pDlg->AddTabPage(TP_DOC_STAT, SW_RESSTR(STR_DOC_STAT),
+ SwDocStatPage::Create, 0);
+ }
+ return pDlg;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Benachrichtigung bei geaenderter DocInfo
+ --------------------------------------------------------------------*/
+
+
+void SwDocShell::Notify( SfxBroadcaster&, const SfxHint& rHint )
+{
+ if( !pDoc )
+ {
+//MA: Kommt bei der OLE-Registration vor!
+// ASSERT( !this, "DocShell ist nicht richtig initialisiert!" );
+ return ;
+ }
+
+ if( rHint.ISA(SfxDocumentInfoHint) )
+ {
+ if( pWrtShell )
+ {
+ pWrtShell->LockView( TRUE ); //Sichtbaren bereich Locken.
+ pWrtShell->StartAllAction();
+ }
+ pDoc->DocInfoChgd( *((SfxDocumentInfoHint&)rHint).GetObject() );
+ if( pWrtShell )
+ {
+ pWrtShell->EndAllAction();
+ pWrtShell->LockView( FALSE );
+ }
+ }
+ else if ( rHint.ISA(SfxSimpleHint) )
+ {
+ switch( ((SfxSimpleHint&) rHint).GetId() )
+ {
+ case SFX_HINT_TITLECHANGED:
+ if ( GetMedium() )
+ {
+ if( pWrtShell )
+ {
+ pWrtShell->LockView( TRUE );
+ pWrtShell->StartAllAction();
+ }
+ pDoc->GetSysFldType( RES_FILENAMEFLD )->UpdateFlds();
+ if( pWrtShell )
+ {
+ pWrtShell->EndAllAction();
+ pWrtShell->LockView( FALSE );
+ }
+ }
+ break;
+ }
+ }
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Benachrichtigung Doc schliessen
+ --------------------------------------------------------------------*/
+
+
+USHORT SwDocShell::PrepareClose( BOOL bUI, BOOL bForBrowsing )
+{
+ USHORT nRet = SfxObjectShell::PrepareClose( bUI, bForBrowsing );
+
+ if( TRUE == nRet ) //Unbedingt auf TRUE abfragen! (RET_NEWTASK)
+ EndListening( *this );
+
+ return nRet;
+}
+
+
+void SwDoc::SetInfo( const SfxDocumentInfo& rInfo )
+{
+ if( pDocShell )
+ pDocShell->SetDocumentInfo( rInfo );
+
+ // sollte nur beim "Konvertieren" von Dokumenten hier ankommen!
+ else
+ {
+ // dann setzen wir uns die DocInfo. Nach dem Konvertieren wird diese
+ // am Medium gesetzt. Erst dann ist die DocShell bekannt.
+ delete pSwgInfo;
+ pSwgInfo = new SfxDocumentInfo( rInfo );
+
+// wenn beim Einlesen, dann kein Modify verschicken, diese sollten dann
+// richtig eingelesen werden oder spaetestens beim Expandieren die richtigen
+// Werte finden.
+// GetSysFldType( RES_DOCINFOFLD )->UpdateFlds();
+// GetSysFldType( RES_TEMPLNAMEFLD )->UpdateFlds();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Organizer
+ --------------------------------------------------------------------*/
+
+
+BOOL SwDocShell::Insert( SfxObjectShell &rSource,
+ USHORT nSourceIdx1, // SourcePool: oberste Inhaltsebene (Vorlagen/Makros)
+ USHORT nSourceIdx2, // Index in den Inhalt
+ USHORT nSourceIdx3, // Index in die Inhaltsebene
+ USHORT &rIdx1, // und das gleiche fuer den DestinationPool
+ USHORT &rIdx2, // ""
+ USHORT &rIdx3, // ""
+ USHORT &rRemovedIdx ) // falls doppelte geloescht werden, Pos zurueck
+{
+ BOOL bRet = FALSE;
+
+ if (INDEX_IGNORE == rIdx1 && CONTENT_STYLE == nSourceIdx1)
+ rIdx1 = CONTENT_STYLE;
+
+ if (CONTENT_STYLE == nSourceIdx1 && CONTENT_STYLE == rIdx1)
+ {
+ SfxStyleSheetBasePool* pHisPool = rSource.GetStyleSheetPool();
+ SwDocStyleSheetPool* pMyPool =
+ (SwDocStyleSheetPool*)GetStyleSheetPool();
+
+ // wir koennen nicht in uns selbst hin und her moven
+ if( pHisPool == pMyPool )
+ return FALSE;
+
+ if( INDEX_IGNORE == rIdx2 )
+ rIdx2 = pMyPool->Count();
+
+ // erstmal auf die Such-Maske "positionieren"
+ pHisPool->First();
+ SfxStyleSheetBase* pHisSheet = (*pHisPool)[nSourceIdx2];
+
+ // wenn so eine Vorlage schon existiert: loeschen!
+ const String& rOldName = pHisSheet->GetName();
+ SfxStyleFamily eOldFamily( pHisSheet->GetFamily() );
+
+ // dflt. PageDesc und StandardZeichenvorlage nie loeschen !!!
+ if( ( SFX_STYLE_FAMILY_PAGE == eOldFamily &&
+ pDoc->GetPageDesc(0).GetName() == rOldName ) ||
+ ( SFX_STYLE_FAMILY_CHAR == eOldFamily &&
+ rOldName == *pDoc->GetTextNmArray()[ RES_POOLCOLL_STANDARD -
+ RES_POOLCOLL_TEXT_BEGIN ] ))
+ return FALSE;
+
+ SfxStyleFamily eMyOldFamily( pMyPool->GetSearchFamily() );
+ USHORT nMySrchMask = pMyPool->GetSearchMask();
+
+ SfxStyleSheetBase* pExist;
+ if( ::FindPhyStyle( *pDoc, rOldName, eOldFamily ) )
+ {
+ // Bug 20365: nur uebernehmen, wenn das gewuenscht ist!
+ if( ERRCODE_BUTTON_OK != ErrorHandler::HandleError(
+ *new MessageInfo( ERRCODE_SFXMSG_STYLEREPLACE, rOldName )) )
+ {
+ return FALSE;
+ }
+
+ // Da Replace den aStyleSheet-Member selbst benoetigt, muss
+ // das Ergebnis vom Find kopiert werden (s.u.))
+ SwDocStyleSheet aExist(
+ *(SwDocStyleSheet*)pMyPool->Find( rOldName, eOldFamily ) );
+ pMyPool->Replace( *pHisSheet, aExist );
+
+ // An der Reihenfolge der Vorlagen im Pool aendert sich nichts.
+ rIdx2 = rIdx1 = INDEX_IGNORE;
+
+ GetDoc()->SetModified();
+
+ return TRUE;
+ }
+
+ pMyPool->SetSearchMask( eOldFamily, nMySrchMask );
+
+ // MIB 18.12.98: SwDocStyleSheetPool::Make liefert einen
+ // Pointer auf SwDocStyleSheetPool::aStyleSheet zurueck.
+ // Der gleiche Member von SwDocStyleSheetPool::Find benutzt.
+ // Deshalb muss hier mit einer Kopie gearbeitet werden.
+ // Vorsicht: SfxStyleSheetBase::SetFollow ruft seinerseits
+ // ein SwDocStyleSheetPool::Find auf, do dass es nicht genuegt
+ // die Find-Aufrufe in dieser Methode zu eleminieren.
+
+ SwDocStyleSheet aNewSheet( (SwDocStyleSheet&)pMyPool
+ ->Make(rOldName, eOldFamily, pHisSheet->GetMask() ) );
+ if( SFX_STYLE_FAMILY_PAGE == eOldFamily && rSource.ISA(SwDocShell) )
+ {
+ // gesondert behandeln!!
+ SwPageDesc* pDestDsc = (SwPageDesc*)aNewSheet.GetPageDesc();
+ SwPageDesc* pCpyDsc = (SwPageDesc*)((SwDocStyleSheet*)pHisSheet)->GetPageDesc();
+ pDoc->CopyPageDesc( *pCpyDsc, *pDestDsc );
+ }
+ else
+ // die neue Vorlage mit den Attributen fuellen
+ aNewSheet.SetItemSet( pHisSheet->GetItemSet() );
+
+ pMyPool->SetSearchMask( SFX_STYLE_FAMILY_ALL, nMySrchMask );
+
+ if( aNewSheet.IsUserDefined() || aNewSheet.IsUsed() )
+ {
+ // Benutzte und Benutzer-definierte Vorlagen werden angezeigt.
+ // Dshalb muss hier der Index der neuen Vorlage im Pool
+ // ermittelt werden.
+ pExist = pMyPool->First();
+ USHORT nIdx = 0;
+ while( pExist )
+ {
+ if( pExist->GetName() == rOldName &&
+ eOldFamily == pExist->GetFamily() )
+ {
+ rIdx2 = nIdx;
+ break;
+ }
+ pExist = pMyPool->Next();
+ nIdx++;
+ }
+ }
+ else
+ {
+ // Andere Vorlagen werden nicht angezeigt.
+ rIdx1 = rIdx2 = INDEX_IGNORE;
+ }
+
+/* pMyPool->Count(); //interne Liste neu fuellen lassen!!!!!
+
+ // suchen, um die richige Insert-Position returnen zu koennen
+ pMyPool->Find( rOldName, SFX_STYLE_FAMILY_ALL, nMySrchMask );
+ rIdx2 = pMyPool->GetFindPos();*/
+
+ // wer bekommt den Neuen als Parent? wer benutzt den Neuen als Follow?
+ // (immer nur ueber die Instanziierten!!!)
+ pMyPool->SetSearchMask( eOldFamily, nMySrchMask );
+ pMyPool->SetOrganizerMode( TRUE );
+ SfxStyleSheetBase* pTestSheet = pMyPool->First();
+ while (pTestSheet)
+ {
+ if (pTestSheet->GetFamily() == eOldFamily &&
+ pTestSheet->HasParentSupport() &&
+ pTestSheet->GetParent() == rOldName)
+ {
+ pTestSheet->SetParent(rOldName); // Verknuepfung neu aufbauen
+ }
+
+ if (pTestSheet->GetFamily() == eOldFamily &&
+ pTestSheet->HasFollowSupport() &&
+ pTestSheet->GetFollow() == rOldName)
+ {
+ pTestSheet->SetFollow(rOldName); // Verknuepfung neu aufbauen
+ }
+
+ pTestSheet = pMyPool->Next();
+ }
+ pMyPool->SetOrganizerMode( SFX_CREATE_MODE_ORGANIZER == GetCreateMode() );
+
+ // hat der Neue einen Parent? wenn ja, mit gleichem Namen bei uns suchen
+ if (pHisSheet->HasParentSupport())
+ {
+ const String& rParentName = pHisSheet->GetParent();
+ if (0 != rParentName.Len())
+ {
+ SfxStyleSheetBase* pParentOfNew = pMyPool->Find(rParentName,
+ eOldFamily);
+ if (pParentOfNew)
+ {
+ aNewSheet.SetParent(rParentName);
+ }
+ pMyPool->SetSearchMask( eOldFamily, nMySrchMask );
+ }
+ }
+
+ // hat der Neue einen Follow? wenn ja, mit gleichem Namen bei uns suchen
+ if (pHisSheet->HasFollowSupport())
+ {
+ const String& rFollowName = pHisSheet->GetFollow();
+ if (0 != rFollowName.Len())
+ {
+ SfxStyleSheetBase* pFollowOfNew = pMyPool->Find(rFollowName,
+ eOldFamily);
+ if (pFollowOfNew)
+ {
+ aNewSheet.SetFollow(rFollowName);
+ }
+ pMyPool->SetSearchMask( eOldFamily, nMySrchMask );
+ }
+ }
+
+ // Bug 27347: alte Einstellung wieder setzen
+ pMyPool->SetSearchMask( eMyOldFamily, nMySrchMask );
+
+ // Model geaendert
+ ASSERT(pDoc, "Doc fehlt");
+ GetDoc()->SetModified();
+
+ bRet = TRUE;
+ }
+ else
+ bRet = SfxObjectShell::Insert( rSource,
+ nSourceIdx1,
+ nSourceIdx2,
+ nSourceIdx3,
+ rIdx1,
+ rIdx2,
+ rIdx3,
+ rRemovedIdx);
+
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Vorlagen Remove
+ --------------------------------------------------------------------*/
+
+
+BOOL SwDocShell::Remove(USHORT nIdx1, // siehe Insert
+ USHORT nIdx2,
+ USHORT nIdx3)
+{
+ BOOL bRet = FALSE;
+
+ if (CONTENT_STYLE == nIdx1)
+ {
+ SwDocStyleSheetPool* pMyPool = (SwDocStyleSheetPool*)GetStyleSheetPool();
+
+ pMyPool->First(); // vorm Zugriff Pool aktualisieren!!
+ SfxStyleSheetBase* pMySheet = (*pMyPool)[nIdx2];
+
+ String aName( pMySheet->GetName() );
+ SfxStyleFamily eFamily( pMySheet->GetFamily() );
+
+ // dflt. PageDesc und StandardZeichenvorlage nie loeschen !!!
+ if( ( SFX_STYLE_FAMILY_PAGE == eFamily &&
+ pDoc->GetPageDesc(0).GetName() == aName ) ||
+ ( SFX_STYLE_FAMILY_CHAR == eFamily &&
+ aName == *pDoc->GetTextNmArray()[ RES_POOLCOLL_STANDARD -
+ RES_POOLCOLL_TEXT_BEGIN ] ))
+ return FALSE;
+
+ // also loeschen
+ pMyPool->Erase( pMySheet );
+
+ // jetzt noch die Parents/Follows aller Instanziierten korrigieren
+ pMyPool->SetOrganizerMode( TRUE );
+ SfxStyleSheetBase* pTestSheet = pMyPool->First();
+ while (pTestSheet)
+ {
+ if (pTestSheet->GetFamily() == eFamily &&
+ pTestSheet->HasParentSupport() &&
+ pTestSheet->GetParent() == aName)
+ {
+ pTestSheet->SetParent( aEmptyStr ); // Verknuepfung aufloesen
+ }
+
+ if (pTestSheet->GetFamily() == eFamily &&
+ pTestSheet->HasFollowSupport() &&
+ pTestSheet->GetFollow() == aName)
+ {
+ pTestSheet->SetFollow( aEmptyStr ); // Verknuepfung aufloesen
+ }
+
+ pTestSheet = pMyPool->Next();
+ }
+ pMyPool->SetOrganizerMode( SFX_CREATE_MODE_ORGANIZER == GetCreateMode() );
+
+ bRet = TRUE;
+ }
+ else
+ bRet = SfxObjectShell::Remove( nIdx1,
+ nIdx2,
+ nIdx3 );
+
+
+ // Model geaendert
+ ASSERT(pDoc, "Doc fehlt");
+ GetDoc()->SetModified();
+
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwDocShell::Execute(SfxRequest& rReq)
+{
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem;
+ USHORT nWhich = rReq.GetSlot();
+ BOOL bDone = FALSE;
+ switch ( nWhich )
+ {
+ case FN_AUTO_CORRECT_DLG:
+ {
+ OfficeApplication *pOApp = OFF_APP();
+
+ SfxBoolItem aSwOptions( SID_AUTO_CORRECT_DLG, TRUE );
+ SvxSwAutoFmtFlags* pAFlags = &pOApp->GetAutoCorrect()->GetSwFlags();
+ SwAutoCompleteWord& rACW = SwDoc::GetAutoCompleteWords();
+
+ BOOL bOldLocked = rACW.IsLockWordLstLocked(),
+ bOldAutoCmpltCollectWords = pAFlags->bAutoCmpltCollectWords;
+
+ rACW.SetLockWordLstLocked( TRUE );
+
+ SvStringsISortDtor aTmpLst;
+ aTmpLst.Insert( &rACW.GetWordList() );
+ pAFlags->pAutoCmpltList = &aTmpLst;
+
+ pOApp->GetDispatcher().Execute( SID_AUTO_CORRECT_DLG,
+ SFX_CALLMODE_SYNCHRON, &aSwOptions, 0L );
+
+ rACW.SetLockWordLstLocked( bOldLocked );
+
+ SwEditShell::SetAutoFmtFlags( pAFlags );
+ rACW.SetMinWordLen( pAFlags->nAutoCmpltWordLen );
+ rACW.SetMaxCount( pAFlags->nAutoCmpltListLen );
+ if( pAFlags->pAutoCmpltList ) // any changes?
+ {
+ rACW.CheckChangedList( aTmpLst );
+ // clear the temp WordList pointer
+ pAFlags->pAutoCmpltList = 0;
+ }
+ // remove all pointer we never delete the strings
+ aTmpLst.Remove( (USHORT)0, aTmpLst.Count() );
+
+ if( !bOldAutoCmpltCollectWords && bOldAutoCmpltCollectWords !=
+ pAFlags->bAutoCmpltCollectWords )
+ {
+ // call on all Docs the idle formatter to start
+ // the collection of Words
+ TypeId aType = TYPE(SwDocShell);
+ for( SwDocShell *pDocSh = (SwDocShell*)SfxObjectShell::GetFirst(&aType);
+ pDocSh;
+ pDocSh = (SwDocShell*)SfxObjectShell::GetNext( *pDocSh, &aType ) )
+ {
+ SwDoc* pTmp = pDocSh->GetDoc();
+ if ( pTmp->GetRootFrm() )
+ pTmp->InvalidateAutoCompleteFlag();
+ }
+ }
+ }
+ break;
+
+ case SID_PRINTPREVIEW:
+ {
+ BOOL bSet = FALSE, bFound = FALSE, bOnly = TRUE;
+ SfxViewFrame *pTmpFrm = SfxViewFrame::GetFirst(this);
+ SfxViewShell* pViewShell = SfxViewShell::Current();
+ SwView* pView = PTR_CAST( SwView, pViewShell );
+ BOOL bCurrent = IS_TYPE( SwPagePreView, pViewShell );
+
+ while( pTmpFrm ) // search PreView
+ {
+ if( IS_TYPE( SwView, pTmpFrm->GetViewShell()) )
+ bOnly = FALSE;
+ else if( IS_TYPE( SwPagePreView, pTmpFrm->GetViewShell()))
+ {
+ pTmpFrm->GetFrame()->Appear();
+ bFound = TRUE;
+ }
+ if( bFound && !bOnly )
+ break;
+ pTmpFrm = pTmpFrm->GetNext(*pTmpFrm, this);
+ }
+
+ if( pArgs && SFX_ITEM_SET ==
+ pArgs->GetItemState( SID_PRINTPREVIEW, FALSE, &pItem ))
+ bSet = ((SfxBoolItem*)pItem)->GetValue();
+ else
+ bSet = !bCurrent;
+
+ USHORT nSlotId = 0;
+ if( bSet && !bFound ) // Keine gefunden, daher neue Preview anlegen
+ {
+ //Keine neue anlegen fuer BrowseView!
+ if( !GetDoc()->IsBrowseMode() )
+ nSlotId = SID_VIEWSHELL1;
+ }
+ else if( bFound && !bSet )
+ nSlotId = bOnly ? SID_VIEWSHELL0 : SID_VIEWSHELL1;
+
+ if( nSlotId )
+ {
+ if( pView && pView->GetDocShell() == this )
+ pTmpFrm = pView->GetViewFrame();
+ else
+ pTmpFrm = SfxViewFrame::GetFirst( this );
+
+ pTmpFrm->GetBindings().Execute( nSlotId, NULL, 0,
+ SFX_CALLMODE_ASYNCHRON );
+ }
+ rReq.SetReturnValue(SfxBoolItem(SID_PRINTPREVIEW, bSet ));
+ }
+ break;
+ case SID_TEMPLATE_LOAD:
+ {
+ String aFileName;
+ BOOL bText = FALSE;
+ BOOL bFrame = FALSE;
+ BOOL bPage = FALSE;
+ BOOL bOverwrite = FALSE;
+ BOOL bNumbering = FALSE;
+ USHORT nRet = USHRT_MAX;
+ SwLoadTemplateDlg* pDlg = new SwLoadTemplateDlg(0);
+ pDlg->SetPath( SFX_INIMANAGER()->Get( SFX_KEY_WORK_PATH ));
+ String sSW5(String::CreateFromAscii(FILTER_SW5));
+
+ SfxObjectFactory &rFact = GetFactory();
+ for( USHORT i = 0; i < rFact.GetFilterCount(); i++ )
+ {
+ const SfxFilter* pFlt = rFact.GetFilter( i );
+ if( pFlt && pFlt->IsAllowedAsTemplate() )
+ pDlg->AddFilter( pFlt->GetUIName(),
+ ((WildCard&)pFlt->GetWildcard())(),
+ pFlt->GetTypeName() );
+
+ if( pFlt->GetUserData() == sSW5 )
+ pDlg->SetCurFilter( pFlt->GetUIName() );
+ }
+
+ nRet = pDlg->Execute();
+ if( nRet == RET_OK )
+ {
+ aFileName = pDlg->GetPath();
+ }
+ else if( nRet == RET_TEMPLATE )
+ {
+ SfxNewFileDialog* pNewDlg = pDlg->GetNewFileDlg();
+
+ nRet = pNewDlg->Execute();
+ if( nRet == RET_OK )
+ aFileName = pNewDlg->GetTemplateFileName();
+ }
+ bText = pDlg->IsTextStyle();
+ bFrame = pDlg->IsFrameStyle();
+ bPage = pDlg->IsPageStyle();
+ bOverwrite = pDlg->IsOverwrite();
+ bNumbering = pDlg->IsNumbering();
+ USHORT nFlags = (USHORT)bText +
+ ((USHORT)bFrame << 1) +
+ ((USHORT)bPage << 2) +
+ ((USHORT)bOverwrite << 3) +
+ ((USHORT)bNumbering << 4);
+ delete pDlg;
+ if(aFileName.Len())
+ {
+ // Create a URL from filename
+ INetURLObject aURLObj;
+ aURLObj.SetSmartProtocol( INET_PROT_FILE );
+ aURLObj.SetURL( aFileName );
+ if( INET_PROT_FILE != aURLObj.GetProtocol() )
+ break;
+
+ String sURL( aURLObj.GetMainURL() );
+
+ String sBaseURL( INetURLObject::GetBaseURL() );
+ INetURLObject::SetBaseURL( sURL );
+
+ SvStorageRef pStor;
+ SvFileStream* pStream = 0;
+ SwRead pRead = 0;
+ SwReader* pReader = 0;
+ if( SvStorage::IsStorageFile( aFileName ))
+ {
+ // Filter bestimmen:
+ const SfxFilter* pFlt = SwIoSystem::GetFileFilter(
+ aFileName, aEmptyStr );
+ pStor = new SvStorage( aFileName, STREAM_STD_READ );
+
+ if( pFlt && pFlt->GetVersion() )
+ pStor->SetVersion( (long)pFlt->GetVersion() );
+
+ pRead = ReadSw3;
+ pReader = new SwReader(*pStor, sURL,
+ *pWrtShell->GetCrsr() );
+ }
+ else
+ {
+ const SfxFilter* pFlt = SwIoSystem::GetFileFilter(
+ aFileName, aEmptyStr );
+ if( pFlt )
+ {
+ if( pFlt->GetUserData() == String::CreateFromAscii(FILTER_SWG) ||
+ pFlt->GetUserData() == String::CreateFromAscii(FILTER_SWGV) )
+ {
+ pRead = ReadSwg;
+ }
+ else if( pFlt->GetUserData() == String::CreateFromAscii(FILTER_XML) )
+ {
+ pRead = ReadXML;
+ }
+ }
+
+ if( pRead )
+ {
+ pStream = new SvFileStream( aFileName,
+ STREAM_STD_READ );
+ pReader = new SwReader(*pStream, sURL, pDoc);
+ }
+ }
+ ASSERT( pRead, "no reader found" );
+ if( pRead )
+ {
+ pRead->GetReaderOpt().SetAllFmtsOnly();
+ pRead->GetReaderOpt().SetTxtFmts(bText);
+ pRead->GetReaderOpt().SetFrmFmts(bFrame);
+ pRead->GetReaderOpt().SetPageDescs(bPage);
+ pRead->GetReaderOpt().SetNumRules(bNumbering);
+ pRead->GetReaderOpt().SetMerge(!bOverwrite);
+
+ pWrtShell->StartAllAction();
+ SetError( pReader->Read( *pRead ));
+ pWrtShell->EndAllAction();
+ }
+
+
+ delete pReader;
+ delete pStream;
+
+ INetURLObject::SetBaseURL( sBaseURL );
+ }
+ }
+ break;
+ case SID_SOURCEVIEW:
+ {
+ SfxViewShell* pViewShell = GetView()
+ ? (SfxViewShell*)GetView()
+ : SfxViewShell::Current();
+ SfxViewFrame* pViewFrm = pViewShell->GetViewFrame();
+ SwSrcView* pSrcView = PTR_CAST(SwSrcView, pViewShell);
+ if(!pSrcView)
+ {
+ if(!HasName())
+ {
+ const SfxBoolItem* pBool = (const SfxBoolItem*)
+ pViewFrm->GetDispatcher()->Execute(
+ SID_SAVEASDOC, SFX_CALLMODE_SYNCHRON );
+ if(!pBool || !pBool->GetValue())
+ break;
+ }
+ else
+ {
+ pViewFrm->GetDispatcher()->Execute(
+ SID_SAVEDOC, SFX_CALLMODE_SYNCHRON );
+ }
+ }
+#ifdef DBG_UTIL
+ {
+ BOOL bWeb = 0 != PTR_CAST(SwWebDocShell, this);
+ DBG_ASSERT(bWeb == TRUE, "SourceView nur in der WebDocShell")
+ }
+#endif
+ // die SourceView ist fuer die SwWebDocShell die 1
+ USHORT nSlot = SID_VIEWSHELL1;
+ BOOL bSetModified = FALSE;
+ SfxPrinter* pSavePrinter = 0;
+ if( 0 != pSrcView)
+ {
+ SfxPrinter* pTemp = GetDoc()->GetPrt(FALSE);
+ if(pTemp)
+ pSavePrinter = new SfxPrinter(*pTemp);
+ bSetModified = IsModified() || pSrcView->IsModified();
+ if(pSrcView->IsModified()||pSrcView->HasSourceSaved())
+ {
+ TempFile aTempFile;
+ aTempFile.EnableKillingFile();
+ pSrcView->SaveContent(aTempFile.GetName());
+ bDone = TRUE;
+ SetActualSize(pSrcView->GetEditWin().GetSizePixel());
+ SfxEventConfiguration* pEvent = SFX_APP()->GetEventConfig();
+ SvxMacro aMac(aEmptyStr, aEmptyStr, STARBASIC);
+ pEvent->ConfigureEvent(SFX_EVENT_OPENDOC, aMac, this);
+ pEvent->ConfigureEvent(SFX_EVENT_CLOSEDOC, aMac, this);
+ pEvent->ConfigureEvent(SFX_EVENT_ACTIVATEDOC, aMac, this);
+ pEvent->ConfigureEvent(SFX_EVENT_DEACTIVATEDOC, aMac, this);
+ ReloadFromHtml(aTempFile.GetName(), pSrcView);
+ nSlot = 0;
+ }
+ else
+ {
+ nSlot = SID_VIEWSHELL0;
+ }
+ }
+/* OS 10.04.97 14.20: Im Web-Writer gibt es keinen Unterschied zwischen
+ Export in den SourceMode und dem Speichern des Docs
+ else if(IsModified())
+ {
+ USHORT nRet = QueryBox( SFX_APPWINDOW ,SW_RES(MSG_SAVE_HTML_QUERY)).Execute();
+ if(RET_YES == nRet)
+ {
+ S F X _DISPATCHER().Execute(SID_SAVEDOC,
+ SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD);
+ // der ReturnValue von SID_SAVEDOC ist etwas schwer verstaendlich
+ if(IsModified())
+ nSlot = 0;
+ }
+ else if( RET_CANCEL == nRet )
+ {
+ nSlot = 0;
+ }
+ }*/
+ if(nSlot)
+ pViewFrm->GetDispatcher()->Execute(nSlot, SFX_CALLMODE_SYNCHRON);
+ if(bSetModified)
+ GetDoc()->SetModified();
+ if(pSavePrinter)
+ {
+ GetDoc()->SetPrt(pSavePrinter);
+ //pSavePrinter darf nicht wieder geloescht werden
+ }
+ pViewFrm->GetBindings().SetState(SfxBoolItem(SID_SOURCEVIEW, nSlot == SID_VIEWSHELL2));
+ }
+ break;
+ case SID_GET_COLORTABLE:
+ {
+ SvxColorTableItem* pColItem = (SvxColorTableItem*)GetItem(SID_COLOR_TABLE);
+ XColorTable* pTable = pColItem->GetColorTable();
+ rReq.SetReturnValue(OfaPtrItem(SID_GET_COLORTABLE, pTable));
+ }
+ break;
+ case FN_ABSTRACT_STARIMPRESS:
+ case FN_ABSTRACT_NEWDOC:
+ {
+ SwInsertAbstractDlg* pDlg = new SwInsertAbstractDlg(0);
+ if(RET_OK == pDlg->Execute())
+ {
+ BYTE nLevel = pDlg->GetLevel();
+ BYTE nPara = pDlg->GetPara();
+ SwDoc* pDoc = new SwDoc();
+ SfxObjectShellRef xDocSh( new SwDocShell( pDoc, SFX_CREATE_MODE_STANDARD));
+ xDocSh->DoInitNew( 0 );
+ BOOL bImpress = FN_ABSTRACT_STARIMPRESS == nWhich;
+ pWrtShell->Summary( pDoc, nLevel, nPara, bImpress );
+ if( bImpress )
+ {
+ WriterRef xWrt;
+ ::GetRTFWriter( aEmptyStr, xWrt );
+ SvMemoryStream *pStrm = new SvMemoryStream();
+ pStrm->SetBufferSize( 16348 );
+ SwWriter aWrt( *pStrm, *pDoc );
+ ErrCode eErr = aWrt.Write( xWrt );
+ if( !ERRCODE_TOERROR( eErr ) )
+ {
+ pStrm->Seek( STREAM_SEEK_TO_END );
+ *pStrm << '\0';
+ pStrm->Seek( STREAM_SEEK_TO_BEGIN );
+ //Die Lockbytes werden owner des Stream*
+ SvLockBytes *pLockBytes = new SvLockBytes( pStrm, TRUE );
+ //Das Item wird owner des LockBytes*
+ SfxLockBytesItem aItem( SID_OUTLINE_TO_IMPRESS, pLockBytes );
+ SfxModule *pMod = (*(SfxModule**)GetAppData(SHL_DRAW))->Load();
+ SfxItemSet aSet( pMod->GetPool(), SID_OUTLINE_TO_IMPRESS,
+ SID_OUTLINE_TO_IMPRESS );
+ aSet.Put( aItem );
+ SfxAllItemSet aArgs( pMod->GetPool() );
+ aArgs.Put( aSet );
+ SfxRequest aReq( SID_OUTLINE_TO_IMPRESS, 0, aArgs );
+ pMod->ExecuteSlot( aReq );
+ }
+ else
+ ErrorHandler::HandleError(ErrCode( eErr ));
+ }
+ else
+ {
+ // Neues Dokument erzeugen.
+ SfxViewFrame *pFrame = SFX_APP()->CreateViewFrame( *xDocSh, 0 );
+ SwView *pView = (SwView*) pFrame->GetViewShell();
+
+ // Dokumenttitel setzen
+ String aTmp( SW_RES(STR_ABSTRACT_TITLE) );
+ aTmp += GetTitle();
+ xDocSh->SetTitle( aTmp );
+ pView->GetWrtShell().SetNewDoc();
+ pFrame->Show();
+ pDoc->SetModified();
+ }
+
+ }
+ delete pDlg;
+ }
+ break;
+ case FN_OUTLINE_TO_CLIPBOARD:
+ case FN_OUTLINE_TO_IMPRESS:
+ {
+ WriterRef xWrt;
+ ::GetRTFWriter( 'O', xWrt );
+ SvMemoryStream *pStrm = new SvMemoryStream();
+ pStrm->SetBufferSize( 16348 );
+ SwWriter aWrt( *pStrm, *GetDoc() );
+ ErrCode eErr = aWrt.Write( xWrt );
+ if( !ERRCODE_TOERROR( eErr ) )
+ {
+ pStrm->Seek( STREAM_SEEK_TO_END );
+ *pStrm << '\0';
+ pStrm->Seek( STREAM_SEEK_TO_BEGIN );
+ if ( nWhich == FN_OUTLINE_TO_IMPRESS )
+ {
+ //Die Lockbytes werden owner des Stream*
+ SvLockBytes *pLockBytes = new SvLockBytes( pStrm, TRUE );
+ //Das Item wird owner des LockBytes*
+ SfxLockBytesItem aItem( SID_OUTLINE_TO_IMPRESS, pLockBytes );
+ SfxModule *pMod = (*(SfxModule**)GetAppData(SHL_DRAW))->Load();
+ SfxItemSet aSet( pMod->GetPool(), SID_OUTLINE_TO_IMPRESS,
+ SID_OUTLINE_TO_IMPRESS );
+ aSet.Put( aItem );
+ SfxAllItemSet aArgs( pMod->GetPool() );
+ aArgs.Put( aSet );
+ SfxRequest aReq( SID_OUTLINE_TO_IMPRESS, 0, aArgs );
+ pMod->ExecuteSlot( aReq );
+ }
+ else
+ {
+ Clipboard::Clear();
+ Clipboard::CopyData( pStrm->GetData(), pStrm->GetSize(),
+ FORMAT_RTF );
+ delete pStrm;
+ }
+ }
+ else
+ ErrorHandler::HandleError(ErrCode( eErr ));
+ }
+ break;
+ case SID_SPELLCHECKER_CHANGED:
+ //! FALSE, TRUE, TRUE is on the save side but a probably overdone
+ SW_MOD()->CheckSpellChanges(FALSE, TRUE, TRUE );
+ break;
+
+ case SID_BROWSER_MODE:
+ case FN_PRINT_LAYOUT: //Fuer Web, genau umgekehrt zum BrowserMode
+ {
+ int eState = STATE_TOGGLE;
+ BOOL bSet;
+ const SfxPoolItem* pAttr;
+ if ( pArgs && SFX_ITEM_SET == pArgs->GetItemState( nWhich , FALSE, &pAttr ))
+ {
+ bSet = ((SfxBoolItem*)pAttr)->GetValue();
+ if ( nWhich == FN_PRINT_LAYOUT )
+ bSet = !bSet;
+ eState = bSet ? STATE_ON : STATE_OFF;
+ }
+
+ if ( STATE_TOGGLE == eState )
+ bSet = !GetDoc()->IsBrowseMode();
+
+ ToggleBrowserMode(bSet, 0);
+
+ // OS: numerische Reihenfolge beachten!
+ static USHORT __READONLY_DATA aInva[] =
+ {
+ SID_NEWWINDOW,
+ SID_RULER_BORDERS, SID_RULER_PAGE_POS,
+ SID_ATTR_LONG_LRSPACE,
+ SID_HTML_MODE,
+ SID_RULER_PROTECT,
+ SID_AUTOSPELL_CHECK,
+ SID_AUTOSPELL_MARKOFF,
+ FN_RULER, /*20211*/
+ FN_VIEW_GRAPHIC, /*20313*/
+ FN_VIEW_BOUNDS, /**/
+ FN_VIEW_FIELDS, /**/
+ FN_VLINEAL, /**/
+ FN_VSCROLLBAR, /**/
+ FN_HSCROLLBAR, /**/
+ FN_VIEW_META_CHARS, /**/
+ FN_VIEW_MARKS, /**/
+ FN_VIEW_FIELDNAME, /**/
+ FN_VIEW_TABLEGRID, /**/
+ FN_QRY_MERGE, /*20364*/
+ FN_STAT_HYPERLINKS, /*21186*/
+ FN_INSERT_HEADER, /*21405*/
+ FN_INSERT_FOOTER, /*21406*/
+ 0
+ };
+ pWrtShell->GetView().GetViewFrame()->GetBindings().Invalidate( aInva );
+ }
+ break;
+
+ case SID_MAIL_PREPAREEXPORT:
+ {
+ pWrtShell->StartAllAction();
+ pDoc->UpdateFlds( 0 );
+ pDoc->EmbedAllLinks();
+ pDoc->RemoveInvisibleContent();
+ pWrtShell->EndAllAction();
+ }
+ break;
+
+ case FN_NEW_HTML_DOC:
+ case FN_NEW_GLOBAL_DOC:
+ {
+ bDone = FALSE;
+ String aFileName, sTemplateName;
+
+ const SwTxtFmtColl* pSplitColl = 0;
+
+ SfxFileDialog* pFileDlg =
+ new SfxFileDialog( 0, WB_SAVEAS|WB_SVLOOK );
+ const SfxFilter* pFlt;
+ USHORT nStrId;
+
+ if( FN_NEW_HTML_DOC == nWhich )
+ {
+ // fuer HTML gibts es nur einen Filter!!
+ pFlt = SwIoSystem::GetFilterOfFormat( String::CreateFromAscii("HTML"),
+ SwWebDocShell::Factory().GetFilterContainer() );
+ nStrId = STR_LOAD_HTML_DOC;
+ }
+ else
+ {
+ // Fuer Global-Dokumente bieten wir jetzt auch nur
+ // noch den aktuellen an.
+ pFlt = SwIoSystem::GetFilterOfFormat( String::CreateFromAscii(FILTER_SW5),
+ SwGlobalDocShell::Factory().GetFilterContainer() );
+ nStrId = STR_LOAD_GLOBAL_DOC;
+ }
+
+ if( pFlt )
+ {
+ pFileDlg->AddFilter( pFlt->GetUIName(),
+ ((WildCard&)pFlt->GetWildcard())(),
+ pFlt->GetTypeName() );
+
+ pFileDlg->SetCurFilter( pFlt->GetUIName() );
+ }
+
+ Window *pTemplateFT = AddTemplateBtn(pFileDlg);
+ pFileDlg->SetText( SW_RESSTR( nStrId ));
+ pFileDlg->SetPath( SFX_INIMANAGER()->Get(
+ SFX_KEY_WORK_PATH ) );
+
+ if( RET_OK == pFileDlg->Execute() )
+ {
+ aFileName = pFileDlg->GetPath();
+ sTemplateName = pTemplateFT->GetText();
+ sTemplateName.Erase(0, String(SW_RESSTR(STR_FDLG_TEMPLATE_NAME)).Len());
+
+ if (sTemplateName.Len())
+ pSplitColl = pDoc->FindTxtFmtCollByName(sTemplateName);
+ }
+
+ delete pFileDlg;
+
+ if( aFileName.Len() )
+ {
+ if( PrepareClose( FALSE ) &&
+ ( FN_NEW_HTML_DOC == nWhich
+ ? pWrtShell->GenerateHTMLDoc( aFileName, pSplitColl )
+ : pWrtShell->GenerateGlobalDoc( aFileName, pSplitColl )) )
+ {
+ bDone = TRUE;
+ DoClose();
+ SfxStringItem aName( SID_FILE_NAME, aFileName );
+ SfxStringItem aReferer( SID_REFERER, aEmptyStr );
+
+ SFX_APP()->GetDispatcher().Execute( SID_OPENDOC,
+ SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD,
+ &aName,
+ &aReferer,
+ 0L );
+ }
+ else if( !rReq.IsAPI() )
+ {
+ InfoBox( 0,
+ SW_RESSTR( STR_CANTCREATE )).Execute();
+ }
+ }
+ }
+ rReq.SetReturnValue(SfxBoolItem( nWhich, bDone ));
+ break;
+ case SID_ATTR_YEAR2000:
+ if ( pArgs && SFX_ITEM_SET == pArgs->GetItemState( nWhich , FALSE, &pItem ))
+ {
+ DBG_ASSERT(pItem->ISA(SfxUInt16Item), "falsches Item")
+ USHORT nYear2K = ((SfxUInt16Item*)pItem)->GetValue();
+ //ueber Views iterieren und den State an den FormShells setzen
+
+ SfxViewFrame* pVFrame = SfxViewFrame::GetFirst( this );
+ SfxViewShell* pViewShell = pVFrame ? pVFrame->GetViewShell() : 0;
+ SwView* pView = PTR_CAST(SwView, pViewShell);
+ while(pView)
+ {
+ FmFormShell* pFormShell = pView->GetFormShell();
+ if(pFormShell)
+ pFormShell->SetY2KState(nYear2K);
+ pVFrame = SfxViewFrame::GetNext( *pVFrame, this );
+ pViewShell = pVFrame ? pVFrame->GetViewShell() : 0;
+ pView = PTR_CAST(SwView, pViewShell);
+ }
+ pDoc->GetNumberFormatter(TRUE)->SetYear2000(nYear2K);
+ }
+ break;
+
+ default: DBG_ERROR("falscher Dispatcher");
+ }
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+long SwDocShell::DdeGetData( const String& rItem, SvData& rData )
+{
+ return pDoc->GetData( rItem, rData );
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+long SwDocShell::DdeSetData( const String& rItem, const SvData& rData )
+{
+ return pDoc->ChangeData( rItem, rData );
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SvPseudoObject* SwDocShell::DdeCreateHotLink( const String& rItem )
+{
+ return pDoc->CreateHotLink( rItem );
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwDocShell::FillRegInfo( SvEmbeddedRegistryInfo* pInfo )
+{
+ SfxInPlaceObject::FillRegInfo( pInfo );
+ pInfo->aObjName = String::CreateFromAscii("StarWriterDocument");
+ pInfo->nMajorVers = 5;
+ pInfo->nMinorVers = 0;
+ pInfo->aHumanShortTypeName = SW_RESSTR(STR_HUMAN_SWDOC_NAME);
+ pInfo->nIconResId = REG_ICON_RESID_WRITER;
+/*
+
+JP 25.11.96: das sollte der SFX erledigen!
+
+ SwFilterNms& rFltNms = *GetFilterNames();
+ pInfo->aFilterList.Insert( SvFilter( Exchange::RegisterFormatName(
+ rFltNms.GetSW4FltName()->aFilterName )) );
+
+ SvFilter aFlt( Exchange::RegisterFormatName(
+ rFltNms.GetSW3FltName()->aFilterName ));
+ aFlt.SetExport( FALSE );
+ pInfo->aFilterList.Insert( aFlt );
+*/
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwDocShell::FillClass( SvGlobalName * pClassName,
+ ULONG * pClipFormat,
+ String * pAppName,
+ String * pLongUserName,
+ String * pUserName,
+ long nVersion ) const
+{
+ SfxInPlaceObject::FillClass(pClassName, pClipFormat, pAppName, pLongUserName,
+ pUserName, nVersion);
+
+ if (nVersion == SOFFICE_FILEFORMAT_31)
+ {
+// *pClassName = SvGlobalName(0xDC5C7E40L, 0xB35C, 0x101B, 0x99, 0x61,
+// 0x04, 0x02, 0x1C, 0x00, 0x70,0x02);
+ *pClassName = SvGlobalName( SO3_SW_CLASSID_30 );
+
+ *pClipFormat = SOT_FORMATSTR_ID_STARWRITER_30;
+ *pAppName = String::CreateFromAscii("Swriter 3.1");
+ *pLongUserName = SW_RESSTR(STR_WRITER_DOCUMENT_FULLTYPE_31);
+ }
+ else if (nVersion == SOFFICE_FILEFORMAT_40)
+ {
+// *pClassName = SvGlobalName(0xDC5C7E40L, 0xB35C, 0x101B, 0x99, 0x61,
+// 0x04, 0x02, 0x1C, 0x00, 0x70,0x02);
+ *pClassName = SvGlobalName( SO3_SW_CLASSID_40 );
+
+ *pClipFormat = SOT_FORMATSTR_ID_STARWRITER_40;
+ *pAppName = String::CreateFromAscii("StarWriter 4.0");
+ *pLongUserName = SW_RESSTR(STR_WRITER_DOCUMENT_FULLTYPE_40);
+ }
+ else if (nVersion == SOFFICE_FILEFORMAT_NOW)
+ {
+ *pLongUserName = SW_RESSTR(STR_WRITER_DOCUMENT_FULLTYPE);
+ }
+ *pUserName = SW_RESSTR(STR_HUMAN_SWDOC_NAME);
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwDocShell::SetModified( BOOL bSet )
+{
+ SfxInPlaceObject::SetModified( bSet );
+ if( IsEnableSetModified() && !pDoc->IsInCallModified() )
+ {
+ EnableSetModified( FALSE );
+
+ if( bSet )
+ {
+ BOOL bOld = pDoc->IsModified();
+ pDoc->SetModified();
+ if( !bOld )
+ pDoc->SetUndoNoResetModified();
+ }
+ else
+ pDoc->ResetModified();
+
+ EnableSetModified( TRUE );
+ }
+ UpdateChildWindows();
+ Broadcast(SfxSimpleHint(SFX_HINT_DOCCHANGED));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwDocShell::UpdateChildWindows()
+{
+ // Flddlg ggf neu initialisieren (z.B. fuer TYP_SETVAR)
+ if(!GetView())
+ return;
+ SfxViewFrame* pVFrame = GetView()->GetViewFrame();
+ SwFldDlgWrapper *pWrp = (SwFldDlgWrapper*)pVFrame->
+ GetChildWindow( SwFldDlgWrapper::GetChildWindowId() );
+ if( pWrp )
+ pWrp->ReInitDlg( this );
+
+ // RedlineDlg ggf neu initialisieren
+ SwRedlineAcceptChild *pRed = (SwRedlineAcceptChild*)pVFrame->
+ GetChildWindow( SwRedlineAcceptChild::GetChildWindowId() );
+ if( pRed )
+ pRed->ReInitDlg( this );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwDocShell::ReloadFromHtml( const String& rStreamName, SwSrcView* pSrcView )
+{
+ BOOL bModified = IsModified();
+ SvFileStream aStream(rStreamName, STREAM_READ);
+
+ // MIB 23.6.97: Die HTTP-Header-Felder muessen geloescht werden,
+ // sonst gibt es welche aus Meta-Tags hinter doppelt und dreifach.
+ ClearHeaderAttributesForSourceViewHack();
+
+ // MIB 24.07.97: Das Dokument-Basic muss auch noch d'ran glauben ...
+ // Ein EnterBasicCall braucht man hier nicht, weil man nichts ruft und
+ // in HTML-Dokument kein Dok-Basic vorhanden sein kann, das noch nicht
+ // geladen wurde.
+ OfficeApplication* pOffApp = OFF_APP();
+ OfaHtmlOptions* pHtmlOptions = pOffApp->GetHtmlOptions();
+ //#59620# HasBasic() zeigt an, dass es schon einen BasicManager an der DocShell
+ // gibt. Der wurde im HTML-Import immer angelegt, wenn Macros im Quelltext
+ // vorhanden sind.
+ if( pHtmlOptions && pHtmlOptions->IsStarBasic() && HasBasic())
+ {
+ BasicManager *pBasicMan = GetBasicManager();
+ if( pBasicMan && (pBasicMan != pOffApp->GetBasicManager()) )
+ {
+ USHORT nLibCount = pBasicMan->GetLibCount();
+ while( nLibCount )
+ {
+ StarBASIC *pBasic = pBasicMan->GetLib( --nLibCount );
+ if( pBasic )
+ {
+ // Die IDE benachrichtigen
+ String aLibName( String::CreateFromAscii("[" ));
+ ((aLibName += GetTitle()) += String::CreateFromAscii("].")) += pBasic->GetName();
+ SfxStringItem aStrItem( SID_BASICIDE_ARG_LIBNAME, aLibName );
+
+ pSrcView->GetViewFrame()->GetDispatcher()->Execute( SID_BASICIDE_LIBREMOVED,
+ SFX_CALLMODE_SYNCHRON,
+ &aStrItem, 0L );
+
+ // Aus der Standard-Lib werden nur die Module geloescht
+ if( nLibCount )
+ pBasicMan->RemoveLib( nLibCount, TRUE );
+ else
+ pBasic->Clear();
+ }
+ }
+
+ ASSERT( pBasicMan->GetLibCount() <= 1,
+ "Loschen des Basics hat nicht geklappt" );
+ }
+ }
+
+ RemoveLink();
+ delete pIo;
+ pIo = 0;
+ //jetzt muss auch das UNO-Model ueber das neue Doc informiert werden #51535#
+ uno::Reference<text::XTextDocument> xDoc(GetBaseModel(), uno::UNO_QUERY);
+ text::XTextDocument* pxDoc = xDoc.get();
+ ((SwXTextDocument*)pxDoc)->InitNewDoc();
+
+
+ AddLink();
+ pSrcView->SetPool(&GetPool());
+
+ String sBaseURL = INetURLObject::GetBaseURL();
+ const String& rMedname = GetMedium()->GetName();
+ INetURLObject::SetBaseURL( rMedname );
+
+ // fix #51032#: Die HTML-Vorlage muss noch gesetzt werden
+ SetHTMLTemplate( *GetDoc() ); //Styles aus HTML.vor
+
+ SfxViewShell* pViewShell = GetView() ? (SfxViewShell*)GetView()
+ : SfxViewShell::Current();
+ SfxViewFrame* pViewFrm = pViewShell->GetViewFrame();
+ pViewFrm->GetDispatcher()->Execute( SID_VIEWSHELL0, SFX_CALLMODE_SYNCHRON );
+
+ SubInitNew();
+
+ SwReader aReader( aStream, rMedname, pDoc );
+ aReader.Read( *ReadHTML );
+ aStream.Close();
+ INetURLObject::SetBaseURL(sBaseURL);
+
+
+ // MIB 23.6.97: Die HTTP-Header-Attribute wieder in die DokInfo
+ // uebernehmen. Die Base-URL ist hier egal, da TLX zum absolutieren die
+ // vom Dokument nimmt.
+ SetHeaderAttributesForSourceViewHack();
+
+ if(bModified && !IsReadOnly())
+ SetModified();
+ else
+ pDoc->ResetModified();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+Window *SwDocShell::AddTemplateBtn(SfxFileDialog* pFileDlg)
+{
+ PushButton *pTemplateBtn = new PushButton( pFileDlg );
+ pTemplateBtn->SetText( SW_RESSTR(STR_FDLG_TEMPLATE_BUTTON) );
+ pTemplateBtn->SetClickHdl(LINK(this, SwDocShell, SelTemplateHdl));
+ pTemplateBtn->SetHelpId(HID_SELECT_TEMPLATE);
+#if (SUPD>503)
+ pFileDlg->AddControl( pTemplateBtn, TRUE );
+#else
+ pFileDlg->AddControl( pTemplateBtn );
+#endif
+ pTemplateBtn->Show();
+
+ FixedText *pTemplateFT = new FixedText( pFileDlg );
+
+ String sName( SW_RES( STR_FDLG_TEMPLATE_NAME ));
+ sName += SwSelTemplateDlg::GetStartTemplate( *pWrtShell );
+ pTemplateFT->SetText(sName);
+
+ pFileDlg->AddControl( pTemplateFT );
+ pTemplateFT->SetSizePixel(Size(pTemplateFT->LogicToPixel(Size(160, 1), MAP_APPFONT).Width(), pTemplateFT->GetSizePixel().Height()));
+ pTemplateFT->Show();
+
+ pTemplateBtn->SetData(pTemplateFT); // Verweis auf den Template-Namen
+
+ // Die hinzugefuegten Controls werden spaeter vom FileDlg geloescht
+ return pTemplateFT;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwDocShell, SelTemplateHdl, PushButton *, pBtn )
+{
+ if (pWrtShell)
+ {
+ FixedText *pFT = (FixedText*)pBtn->GetData();
+ String sFixName(SW_RES(STR_FDLG_TEMPLATE_NAME));
+
+ String sName(pFT->GetText());
+ sName.Erase(0, sFixName.Len());
+
+ SwSelTemplateDlg aDlg( pBtn, pWrtShell, sName);
+
+ if( aDlg.Execute() == RET_OK )
+ {
+ sFixName += sName;
+ pFT->SetText(sFixName);
+ }
+ }
+
+ return 0;
+}
+/* -----------------------------14.12.99 16:52--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwDocShell::ToggleBrowserMode(BOOL bSet, SwView* pView )
+{
+ GetDoc()->SetBrowseMode( bSet );
+ SwView* pTempView = pView ? pView : (SwView*)GetView();
+ pTempView->GetViewFrame()->GetBindings().Invalidate(FN_SHADOWCURSOR);
+ UpdateFontList();
+ if( pTempView )
+ {
+ if( !GetDoc()->GetPrt( FALSE ) )
+ pTempView->SetPrinter( GetDoc()->GetPrt( TRUE ),
+ SFX_PRINTER_PRINTER|SFX_PRINTER_JOBSETUP );
+
+ //Wenn wir die BrowseView einschalten, darf es nur diese eine
+ //Sicht auf das Dokument geben, alle anderen werden geschlossen.
+ SfxViewFrame *pTmpFrm = SfxViewFrame::GetFirst(this, 0, FALSE);
+ do
+ { if ( pTmpFrm != pTempView->GetViewFrame() )
+ {
+ pTmpFrm->DoClose();
+ pTmpFrm = SfxViewFrame::GetFirst(this, 0, FALSE);
+ }
+ else
+ pTmpFrm = pTmpFrm->GetNext(*pTmpFrm, this, 0, FALSE);
+
+ } while ( pTmpFrm );
+
+ pTempView->GetWrtShell().CheckBrowseView( TRUE );
+ pTempView->CheckVisArea();
+
+ SvxZoomType eType;
+ if ( GetDoc()->IsBrowseMode() &&
+ SVX_ZOOM_PERCENT !=
+ (eType = (SvxZoomType)pTempView->GetWrtShell().GetViewOptions()->GetZoomType()) )
+ {
+ ((SwView*)GetView())->SetZoom( eType );
+ }
+ pTempView->InvalidateBorder();
+ pTempView->SetNewWindowAllowed(!bSet);
+ }
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.277 2000/09/18 16:05:10 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.276 2000/09/08 08:33:26 os
+ check GetView()
+
+ Revision 1.275 2000/09/08 08:12:50 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.274 2000/09/07 15:59:20 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.273 2000/08/30 16:12:40 os
+ #78341# save document before switching to source view
+
+ Revision 1.272 2000/08/14 17:27:15 jp
+ Task #77422#: PrintPreView in the same window
+
+ Revision 1.271 2000/08/07 11:48:36 jp
+ PagePreView replace the current view
+
+ Revision 1.270 2000/06/09 08:10:13 os
+ using tools/tempfile
+
+ Revision 1.269 2000/05/30 13:39:55 os
+ #70840# HTML source view: for saved documents only, call save as dialog if needed
+
+ Revision 1.268 2000/05/26 07:21:27 os
+ old SW Basic API Slots removed
+
+ Revision 1.267 2000/04/19 12:56:33 os
+ include sfx2/filedlg.hxx removed
+
+ Revision 1.266 2000/04/11 08:01:30 os
+ UNICODE
+
+ Revision 1.265 2000/03/21 15:47:50 os
+ UNOIII
+
+ Revision 1.264 2000/03/08 17:26:34 os
+ GetAppWindow() - misuse as parent window eliminated
+
+ Revision 1.263 2000/03/03 16:16:32 pl
+ #73771# workaround for c50 intel compiler
+
+ Revision 1.262 2000/03/03 15:16:58 os
+ StarView remainders removed
+
+ Revision 1.261 2000/03/03 12:27:49 mib
+ Removed JavaScript
+
+ Revision 1.260 2000/02/24 17:01:58 hr
+ #73447#: removed temporaries
+
+ Revision 1.259 2000/02/11 14:43:03 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.258 2000/02/02 17:00:33 jp
+ Task #72579#: interface of SwReader is changed
+
+ Revision 1.257 2000/01/14 16:29:50 jp
+ Task #71894#: new Options for SW-AutoComplete
+
+ Revision 1.256 2000/01/13 21:27:22 jp
+ Task #71894#: new Options for SW-AutoComplete
+
+ Revision 1.255 2000/01/11 10:22:04 tl
+ #70735# CheckSpellChanges moved to SwModule and called from there
+
+ Revision 1.254 1999/12/14 16:11:08 os
+ #70234# Set Browser Mode via API
+
+ Revision 1.253 1999/11/26 10:58:35 mib
+ Loading of styles from XML documents
+
+ Revision 1.252 1999/11/11 10:40:03 jp
+ SetModified: broadcast the hint DOCCHANGED
+
+ Revision 1.251 1999/11/09 09:44:04 jp
+ SetModified: do nothing if EnableSetModified is not set
+
+ Revision 1.250 1999/10/29 11:31:31 os
+ support XModifiable
+
+ Revision 1.249 1999/10/25 19:37:25 tl
+ ongoing ONE_LINGU implementation
+
+ Revision 1.248 1999/10/21 17:45:27 jp
+ have to change - SearchFile with SfxIniManager, dont use SwFinder for this
+
+ Revision 1.247 1999/10/19 14:30:57 hr
+ #65293#: sfxecode.hxx now in svtools
+
+ Revision 1.246 1999/08/31 08:33:36 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+
+ Rev 1.245 31 Aug 1999 10:33:36 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+ Rev 1.244 22 Jun 1999 17:20:30 KZ
+ Anpass. fuer Linux
+
+ Rev 1.243 10 Jun 1999 10:52:10 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.242 04 May 1999 14:58:44 JP
+ FilterExportklasse Writer von SvRef abgeleitet, damit sie immer zerstoert wird
+
+ Rev 1.241 20 Apr 1999 17:14:34 MA
+ #63638# API-Aenderung PrepareClose
+
+ Rev 1.240 16 Apr 1999 17:22:10 JP
+ Bug #64928#: erfrage an der Vorlage, ob sie an einem Node gesetzt ist
+
+ Rev 1.239 07 Apr 1999 14:13:18 OS
+ #59615# ReleaseDocument aufrufen
+
+ Rev 1.238 29 Mar 1999 15:57:42 OS
+ #59615# InsertDocument am SfxJS rufen
+
+ Rev 1.237 15 Mar 1999 15:07:30 JP
+ Task #61405#: AutoCompleteList wurde statisch
+
+ Rev 1.236 11 Mar 1999 23:59:42 JP
+ Task #61405#: Optionen setzen
+
+ Rev 1.235 09 Mar 1999 14:10:12 OS
+ #62286# SetY2KState an die FormShell weiterleiten
+
+ Rev 1.234 03 Mar 1999 09:44:46 MIB
+ #60932#: Indizes vom Organizer nun richtig
+
+ Rev 1.233 02 Mar 1999 16:01:48 AMA
+ Fix #62568#: Invalidierungen so sparsam wie moeglich, so gruendlich wie noetig
+
+ Rev 1.232 03 Feb 1999 11:46:48 JP
+ Bug #61401#: am Storage die VersionsNummer vom Filter setzen
+
+ Rev 1.231 02 Feb 1999 08:42:44 OS
+ #61027# zweistellige Jahreszahlen
+
+ Rev 1.230 01 Feb 1999 08:23:36 OS
+ #56371# unnoetigen include wieder raus
+
+ Rev 1.229 27 Jan 1999 09:51:50 OS
+ #56371# TF_ONE51
+
+ Rev 1.228 19 Jan 1999 12:05:00 OS
+ #59620 vor GetBasicManager mit HasBasic pruefen
+
+ Rev 1.227 14 Jan 1999 10:18:56 MIB
+ #47231#: Organizer: Ersetzen von Vorlagen ohne Loeschen
+
+ Rev 1.226 12 Jan 1999 12:49:24 OS
+ #60705# AutoFormat-Dialog nicht asynchron aufrufen!
+
+ Rev 1.225 18 Dec 1998 17:18:10 MIB
+ #60483#: Poolvorlagen beim D&D im Organizer, Parents und Follows richtig setzen
+
+ Rev 1.224 09 Dec 1998 16:37:54 OM
+ #59628# Warnung anzeigen, wenn Dok nicht angelegt werden konnt
+
+ Rev 1.223 09 Dec 1998 14:31:10 OS
+ #56371# TF_ONE51
+
+ Rev 1.222 25 Nov 1998 12:42:52 OS
+ #59826# temp. Datei in der DocShell loeschen
+
+ Rev 1.221 25 Nov 1998 11:26:56 OS
+ #59240##59637# SubInitNew vor dem Import, kein TabStop fuer HTML
+
+ Rev 1.220 17 Nov 1998 22:18:02 JP
+ Task #59398#: ClipboardFormatId Umstellungen
+
+ Rev 1.219 05 Nov 1998 10:08:50 OS
+ #58996# SourceView: Flag fuers speichern
+
+ Rev 1.218 22 Sep 1998 12:34:00 JP
+ Bug #55959#: SetBase mit einer URL und keinem FileNamen - der Dialog liefert keine URL (ist eig. der Bug!)
+
+ Rev 1.217 21 Sep 1998 11:57:36 JP
+ Bug #55959#: beim Laden von Vorlagen, muss die BaseURL richtig gesetzt sein
+
+ Rev 1.216 03 Sep 1998 13:27:44 OS
+ #55662# AddControl mit NewLine
+
+ Rev 1.215 23 Jul 1998 11:14:36 JP
+ Task #52654#: Einfuegen Doc nicht mit einer CrsrShell sondern mit einen PaM
+
+ Rev 1.214 09 Jul 1998 09:52:44 JP
+ EmptyStr benutzen
+
+ Rev 1.213 08 Jul 1998 16:21:00 JP
+ Bug #52411#: ReturnWert vom Convert korrekt auswerten
+
+ Rev 1.212 02 Jul 1998 14:34:40 MIB
+ Fix #52035#: Beim Unschalten aus der Source-View View vor dem Import umschalten
+
+ Rev 1.211 25 Jun 1998 11:52:22 OM
+ #51665# Language fuer Zahlenformate
+
+ Rev 1.210 23 Jun 1998 18:13:50 OS
+ InitNewDoc - Member des XTextDocuments zuruecksetzen #51535#
+
+ Rev 1.209 18 Jun 1998 11:02:40 OS
+ FN_NEW_GLOBAL_DOC: ohne Vorlagennamen Null uebergeben
+
+ Rev 1.208 18 Jun 1998 10:08:08 OS
+ Global-Doc erzeugen: Ueberschrift 1 als default #51263#
+
+ Rev 1.207 15 Jun 1998 09:54:50 MIB
+ fix #51032#: HTML-Vorlage beim Umsch. aus der Source-View laden und Seitenvorlage setzen
+
+ Rev 1.206 12 Jun 1998 09:45:58 OS
+ Appear statt ToTop #50485#
+
+ Rev 1.205 28 May 1998 17:40:52 OM
+ Zahlenformat per Basic ermitteln
+
+ Rev 1.204 19 May 1998 12:45:22 OM
+ SvxMacro-Umstellung
+
+ Rev 1.203 15 May 1998 17:26:12 OM
+ #50043# DirectCursor nicht im OnlineLayout
+
+ Rev 1.202 13 May 1998 14:52:34 OM
+ Autokorrektur/Autoformat umgestaltet und zusammengefasst
+
+ Rev 1.201 24 Apr 1998 16:01:04 OM
+ Seitenvorschau auch im Html-Mode
+
+ Rev 1.200 23 Apr 1998 15:35:36 OM
+ #49689 Aenderung der Seitenanzahl per Basic konfigurierbar
+
+ Rev 1.199 02 Apr 1998 10:09:52 MIB
+ Beim Erzeugen eines Global-Dokuments nur noch den 5.0-Filter anbieten
+
+ Rev 1.198 27 Mar 1998 14:12:32 OM
+ ChildWindows im Modified-Hdl updaten
+
+ Rev 1.197 20 Mar 1998 14:57:52 OM
+ Vorlagentext verbreitert
+
+ Rev 1.196 20 Mar 1998 14:42:42 OM
+ Fehlender Include
+
+ Rev 1.195 20 Mar 1998 12:41:58 OM
+ Helpid fuer Template-Button
+
+ Rev 1.194 20 Mar 1998 12:36:32 OM
+ Globaldokument: Vorlage auswaehlen
+
+ Rev 1.193 19 Mar 1998 17:40:56 OM
+ Vorlage auswehlen
+
+ Rev 1.192 17 Mar 1998 13:04:38 JP
+ fuers GenerateHTMLDoc: nur den HTML-Filter anbieten
+
+ Rev 1.191 17 Mar 1998 12:23:04 JP
+ neu: GenerateHTMLDoc - aquivalent zu GenerateGlobalDoc
+
+ Rev 1.190 12 Mar 1998 13:01:54 OS
+ SID_NEWWINDOW nicht mehr ueberladen
+
+ Rev 1.189 02 Feb 1998 13:53:26 OS
+ SID_VIEWSH* am eigenen Dispatcher rufen #46862#
+
+ Rev 1.188 19 Jan 1998 11:52:34 MBA
+ CreateViewFrame verwenden
+
+ Rev 1.187 07 Jan 1998 18:42:08 MIB
+ 5.0 Fileformat
+
+ Rev 1.186 09 Dec 1997 08:19:06 OS
+ Vorlagen laden: auch Numerierung
+
+ Rev 1.185 29 Nov 1997 15:25:40 MA
+ includes
+
+ Rev 1.184 24 Nov 1997 14:22:48 MA
+ includes
+
+ Rev 1.183 11 Nov 1997 11:37:22 AMA
+ Fix #44514#: Fuer die Druckvorschau braucht man einen Drucker
+
+ Rev 1.182 30 Oct 1997 18:24:44 JP
+ Options am Reader nicht mehr public
+
+ Rev 1.181 28 Oct 1997 14:52:34 OS
+ SetPool an der SourceView sofort nach AddLink rufen
+
+ Rev 1.180 24 Oct 1997 15:18:58 OS
+ ReloadFromHtml nur noch rufen, wenn das Doc im SourceMode veraendert wurde #44971#
+
+ Rev 1.179 13 Oct 1997 17:23:22 MA
+ #44630# Keine SwDokInfo fuer SrcView
+
+ Rev 1.178 08 Oct 1997 14:28:20 OS
+ PrintLayout funktioniert jetzt auch aus dem Basic
+
+ Rev 1.177 15 Sep 1997 13:26:06 OS
+ Events am Doc vor Reload loeschen #42231#
+
+ Rev 1.176 12 Sep 1997 16:04:50 OS
+ Vorlagen laden: EAs uebergeben, SW4-Filter als Standard #43699#
+
+ Rev 1.175 01 Sep 1997 13:06:34 OS
+ DLL-Umstellung
+
+ Rev 1.174 14 Aug 1997 15:23:36 MA
+ fix: DocShell ohne Doc bei OLE-Registration
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/app/docshdrw.cxx b/sw/source/ui/app/docshdrw.cxx
new file mode 100644
index 000000000000..3d2f5937ff85
--- /dev/null
+++ b/sw/source/ui/app/docshdrw.cxx
@@ -0,0 +1,194 @@
+/*************************************************************************
+ *
+ * $RCSfile: docshdrw.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+
+#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_DASH_LIST SID_DASH_LIST
+#define ITEMID_LINEEND_LIST SID_LINEEND_LIST
+
+
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SVX_DRAWITEM_HXX //autogen
+#include <svx/drawitem.hxx>
+#endif
+#ifndef _SVDMODEL_HXX //autogen
+#include <svx/svdmodel.hxx>
+#endif
+#ifndef _SVDOUTL_HXX
+#include <svx/svdoutl.hxx>
+#endif
+
+#ifndef _SVX_LANGITEM_HXX
+#include <svx/langitem.hxx>
+#endif
+
+#include "docsh.hxx"
+#include "doc.hxx"
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Document laden
+ --------------------------------------------------------------------*/
+
+
+void SwDocShell::InitDraw()
+{
+ SdrModel *pDrDoc = pDoc->GetDrawModel();
+ if( pDrDoc )
+ {
+ // Listen, bzw. Tables im ItemSet der DocShell anlegen
+ PutItem( SvxGradientListItem( pDrDoc->GetGradientList() ) );
+ PutItem( SvxHatchListItem( pDrDoc->GetHatchList() ) );
+ PutItem( SvxBitmapListItem( pDrDoc->GetBitmapList() ) );
+ PutItem( SvxDashListItem( pDrDoc->GetDashList() ) );
+ PutItem( SvxLineEndListItem( pDrDoc->GetLineEndList() ) );
+
+ Outliner& rOutliner = pDrDoc->GetDrawOutliner();
+ rOutliner.SetHyphenator( ::GetHyphenator() );
+ const SfxPoolItem& rItem = GetDoc()->GetDefault(RES_CHRATR_LANGUAGE);
+ rOutliner.SetDefaultLanguage(((const SvxLanguageItem&)rItem).GetLanguage());
+
+ }
+ else
+ PutItem( SvxColorTableItem( OFF_APP()->GetStdColorTable() ));
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.18 2000/09/18 16:05:10 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.17 2000/02/09 10:14:12 os
+ #72716# set hyphenator and language at the DrawOutliner
+
+ Revision 1.16 1997/11/29 15:04:46 MA
+ includes
+
+
+ Rev 1.15 29 Nov 1997 16:04:46 MA
+ includes
+
+ Rev 1.14 24 Nov 1997 14:22:50 MA
+ includes
+
+ Rev 1.13 03 Sep 1997 15:53:54 OS
+ DLL-Umbau
+
+ Rev 1.12 14 Aug 1996 12:00:56 JP
+ svdraw.hxx entfernt
+
+ Rev 1.11 29 Jul 1996 19:37:38 MA
+ includes
+
+ Rev 1.10 07 Mar 1996 12:09:58 HJS
+ 2 defines zu viel
+
+ Rev 1.9 07 Dec 1995 08:07:08 SWG
+ clooks
+
+ Rev 1.8 05 Dec 1995 09:17:10 JP
+ InitDraw: keine Parameter mehr
+
+ Rev 1.7 24 Nov 1995 16:56:52 OM
+ PCH->PRECOMPILED
+
+ Rev 1.6 17 Nov 1995 19:15:50 OS
+ ColorTable immer von der App
+
+ Rev 1.5 07 Nov 1995 15:25:50 AMA
+ Fix: ColorTable an der DocShell setzen.
+
+ Rev 1.4 03 Nov 1995 19:27:56 AMA
+ Opt.StartUp: DrawView/Model erst bei Bedarf.
+
+ Rev 1.3 22 Aug 1995 09:00:00 MA
+ svxitems-header entfernt
+
+ Rev 1.2 09 Aug 1995 16:39:14 MA
+ drawing-undo-header rein
+
+ Rev 1.1 21 Mar 1995 02:23:32 ER
+ _svdorect_hxx definiert => _svdcapt_hxx definieren
+
+ Rev 1.0 13 Feb 1995 12:20:30 MS
+ Initial revision.
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/app/docshini.cxx b/sw/source/ui/app/docshini.cxx
new file mode 100644
index 000000000000..b223e6e369a2
--- /dev/null
+++ b/sw/source/ui/app/docshini.cxx
@@ -0,0 +1,897 @@
+/*************************************************************************
+ *
+ * $RCSfile: docshini.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SV_SYSTEM_HXX
+#include <vcl/system.hxx>
+#endif
+
+//Statt uiparam.hxx selbst definieren, das spart keys
+#ifndef _SVX_DIALOGS_HRC
+#include <svx/dialogs.hrc>
+#endif
+#define ITEMID_FONTLIST SID_ATTR_CHAR_FONTLIST
+
+#ifndef _SOT_STORINFO_HXX
+#include <sot/storinfo.hxx>
+#endif
+#ifndef _ZFORLIST_HXX //autogen
+#include <svtools/zforlist.hxx>
+#endif
+#ifndef _CTRLTOOL_HXX //autogen
+#include <svtools/ctrltool.hxx>
+#endif
+#ifndef _SFXDOCINF_HXX //autogen
+#include <sfx2/docinf.hxx>
+#endif
+#ifndef _OFA_MISCCFG_HXX //autogen
+#include <sfx2/misccfg.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+
+
+#ifndef _LINGU_LNGPROPS_HHX_
+#include <lingu/lngprops.hxx>
+#endif
+#ifndef _UNO_LINGU_HXX
+#include <svx/unolingu.hxx>
+#endif
+#ifndef _SFX_SFXUNO_HXX
+#include <sfx2/sfxuno.hxx>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+
+#ifndef _SFX_DOCFILT_HACK_HXX //autogen
+#include <sfx2/docfilt.hxx>
+#endif
+#ifndef _XTABLE_HXX //autogen
+#include <svx/xtable.hxx>
+#endif
+#ifndef _SVX_DRAWITEM_HXX //autogen
+#define ITEMID_COLOR_TABLE SID_COLOR_TABLE
+#include <svx/drawitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_FLSTITEM_HXX //autogen
+#include <svx/flstitem.hxx>
+#endif
+#ifndef _SVX_TSTPITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVX_HYZNITEM_HXX //autogen
+#include <svx/hyznitem.hxx>
+#endif
+#ifndef _MySVXACORR_HXX //autogen
+#include <svx/svxacorr.hxx>
+#endif
+
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+
+
+#ifndef _FMTCOL_HXX //autogen
+#include <fmtcol.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _WDOCSH_HXX
+#include <wdocsh.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _DOCFAC_HXX
+#include <docfac.hxx>
+#endif
+#ifndef _DOCSTYLE_HXX
+#include <docstyle.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _TOX_HXX
+#include <tox.hxx>
+#endif
+#ifndef _SW3IO_HXX
+#include <sw3io.hxx> // I/O, Hausformat
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _DATAEX_HXX
+#include <dataex.hxx>
+#endif
+#ifndef _DBMGR_HXX
+#include <dbmgr.hxx>
+#endif
+#ifndef _USRPREF_HXX
+#include <usrpref.hxx>
+#endif
+#ifndef _FONTCFG_HXX
+#include <fontcfg.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _MODCFG_HXX
+#include <modcfg.hxx>
+#endif
+#ifndef _GLOBDOC_HXX
+#include <globdoc.hxx>
+#endif
+#ifndef _NDOLE_HXX
+#include <ndole.hxx>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx>
+#endif
+#ifndef _UNOTXDOC_HXX
+#include <unotxdoc.hxx>
+#endif
+#ifndef _FLDUPDE_HXX
+#include <fldupde.hxx>
+#endif
+#ifndef _LINKENUM_HXX
+#include <linkenum.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+
+#ifndef _SWSWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+
+extern sal_Bool bNotLoadLayout;
+
+#ifdef _JP_LOADTIME
+extern int bIsSttTime = 0;
+extern long nSttTime = 0;
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::rtl;
+/*-----------------21.09.96 15.29-------------------
+
+--------------------------------------------------*/
+
+
+void lcl_SetColl(SwDoc* pDoc, sal_uInt16 nType,
+ SfxPrinter* pPrt, const String& rStyle)
+{
+ sal_Bool bDelete = sal_False;
+ const SfxFont* pFnt = pPrt ? pPrt->GetFontByName(rStyle): 0;
+ if(!pFnt)
+ {
+ pFnt = new SfxFont(FAMILY_DONTKNOW, rStyle);
+ bDelete = sal_True;
+ }
+ SwTxtFmtColl *pColl = pDoc->GetTxtCollFromPool(nType);
+ pColl->SetAttr(SvxFontItem(pFnt->GetFamily(), pFnt->GetName(),
+ aEmptyStr, pFnt->GetPitch(), pFnt->GetCharSet()));
+ if(bDelete)
+ {
+ delete (SfxFont*) pFnt;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Document laden
+ --------------------------------------------------------------------*/
+
+
+sal_Bool SwDocShell::InitNew( SvStorage * pStor )
+{
+ sal_Bool bRet = SfxInPlaceObject::InitNew( pStor );
+ SetMapUnit( MAP_TWIP );
+ if( bRet )
+ {
+ AddLink(); // pDoc / pIo ggf. anlegen
+
+ if ( ISA( SwWebDocShell ) )
+ SetHTMLTemplate( *GetDoc() ); //Styles aus HTML.vor
+ else if( ISA( SwGlobalDocShell ) )
+ GetDoc()->SetGlobalDoc(); // Globaldokument
+
+ // fuer alle
+
+ SwStdFontConfig* pStdFont = SW_MOD()->GetStdFontConfig();
+ SfxPrinter* pPrt = pDoc->GetPrt();
+
+ String sEntry;
+ if(!pStdFont->IsFontDefault(FONT_STANDARD))
+ {
+ sEntry = pStdFont->GetFontStandard();
+ sal_Bool bDelete = sal_False;
+ const SfxFont* pFnt = pPrt ? pPrt->GetFontByName(sEntry): 0;
+ if(!pFnt)
+ {
+ pFnt = new SfxFont(FAMILY_DONTKNOW, sEntry);
+ bDelete = sal_True;
+ }
+ pDoc->SetDefault(SvxFontItem(pFnt->GetFamily(), pFnt->GetName(),
+ aEmptyStr, pFnt->GetPitch(), pFnt->GetCharSet()));
+ SwTxtFmtColl *pColl = pDoc->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
+ pColl->ResetAttr(RES_CHRATR_FONT);
+ if(bDelete)
+ {
+ delete (SfxFont*) pFnt;
+ bDelete = sal_False;
+ }
+
+// lcl_SetColl(pDoc, RES_POOLCOLL_STANDARD, pPrt, sEntry);
+ }
+
+ if(!pStdFont->IsFontDefault(FONT_OUTLINE))
+ {
+ sEntry = pStdFont->GetFontOutline();
+ lcl_SetColl(pDoc, RES_POOLCOLL_HEADLINE_BASE, pPrt, sEntry);
+ }
+
+ if(!pStdFont->IsFontDefault(FONT_LIST))
+ {
+ sEntry = pStdFont->GetFontList();
+ lcl_SetColl(pDoc, RES_POOLCOLL_NUMBUL_BASE, pPrt, sEntry);
+ }
+
+ if(!pStdFont->IsFontDefault(FONT_CAPTION))
+ {
+ sEntry = pStdFont->GetFontCaption();
+ lcl_SetColl(pDoc, RES_POOLCOLL_LABEL, pPrt, sEntry);
+ }
+
+ if(!pStdFont->IsFontDefault(FONT_INDEX))
+ {
+ sEntry = pStdFont->GetFontIndex();
+ lcl_SetColl(pDoc, RES_POOLCOLL_REGISTER_BASE, pPrt, sEntry);
+ }
+
+
+/*
+ //JP 12.07.95: so einfach waere es fuer die neu Mimik
+ pDoc->SetDefault( SvxTabStopItem( 1,
+ GetStar Writer App()->GetUsrPref()->GetDefTabDist(),
+ SVX_TAB_ADJUST_DEFAULT,
+ RES_PARATR_TABSTOP));
+*/
+ if ( GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
+ {
+ // fuer MWERKS (Mac-Compiler): kann nicht selbststaendig casten
+ SvEmbeddedObject* pObj = this;
+ SwDataExchange::InitOle( pObj, pDoc );
+ }
+ SubInitNew();
+ }
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ctor mit SfxCreateMode ?????
+ --------------------------------------------------------------------*/
+
+
+SwDocShell::SwDocShell(SfxObjectCreateMode eMode) :
+ pDoc(0),
+ pIo(0),
+ pBasePool(0),
+ pFontList(0),
+ SfxObjectShell ( eMode ),
+ pView( 0 ),
+ pWrtShell( 0 )
+{
+ SetShell(this);
+ SetBaseModel(new SwXTextDocument(this));
+ // wir als BroadCaster werden auch unser eigener Listener
+ // (fuer DocInfo/FileNamen/....)
+ StartListening( *this );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ctor / Dtor
+ --------------------------------------------------------------------*/
+
+
+SwDocShell::SwDocShell( SwDoc *pD, SfxObjectCreateMode eMode ):
+ pDoc(pD),
+ pIo(0),
+ pBasePool(0),
+ pFontList(0),
+ SfxObjectShell ( eMode ),
+ pView( 0 ),
+ pWrtShell( 0 )
+{
+ SetShell(this);
+ SetBaseModel(new SwXTextDocument(this));
+ // wir als BroadCaster werden auch unser eigener Listener
+ // (fuer DocInfo/FileNamen/....)
+ StartListening( *this );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Dtor
+ --------------------------------------------------------------------*/
+
+
+ SwDocShell::~SwDocShell()
+{
+ ::RemoveFromBackgroundCache( *this, sal_False );
+
+ RemoveLink();
+ delete pIo;
+ delete pFontList;
+
+ // wir als BroadCaster werden auch unser eigener Listener
+ // (fuer DocInfo/FileNamen/....)
+ EndListening( *this );
+ SvxColorTableItem* pColItem = (SvxColorTableItem*)GetItem(SID_COLOR_TABLE);
+ // wird nur die DocInfo fuer den Explorer gelesen, ist das Item nicht da
+ if(pColItem)
+ {
+ XColorTable* pTable = pColItem->GetColorTable();
+ // wurde eine neue Table angelegt, muss sie auch geloescht werden.
+ if((void*)pTable != (void*)(OFF_APP())->GetStdColorTable())
+ delete pTable;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: AddLink
+ --------------------------------------------------------------------*/
+
+
+void SwDocShell::AddLink()
+{
+ if( !pDoc )
+ {
+ SwDocFac aFactory;
+ pDoc = aFactory.GetDoc();
+ pDoc->AddLink();
+ pDoc->SetHTMLMode( ISA(SwWebDocShell) );
+ }
+ else
+ pDoc->AddLink();
+ pDoc->SetDocShell( this ); // am Doc den DocShell-Pointer setzen
+ uno::Reference< text::XTextDocument > xDoc(GetBaseModel(), uno::UNO_QUERY);
+ ((SwXTextDocument*)xDoc.get())->Reactivate(this);
+
+ if( !pIo )
+ pIo = new Sw3Io( *pDoc );
+ else
+ pIo->SetDoc( *pDoc );
+
+ SetPool(&pDoc->GetAttrPool());
+
+ // am besten erst wenn eine sdbcx::View erzeugt wird !!!
+ pDoc->SetOle2Link(LINK(this, SwDocShell, Ole2ModifiedHdl));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: neue FontList erzeugen Aenderung Drucker
+ --------------------------------------------------------------------*/
+
+
+void SwDocShell::UpdateFontList()
+{
+ ASSERT(pDoc, "Kein Doc keine FontList");
+ if( pDoc )
+ {
+ SfxPrinter* pPrt = pDoc->GetPrt();
+ delete pFontList;
+
+ if( pPrt && pPrt->GetDevFontCount() && !pDoc->IsBrowseMode() )
+ pFontList = new FontList( pPrt );
+ else
+ pFontList = new FontList( Application::GetDefaultDevice() );
+
+ PutItem( SvxFontListItem( pFontList, SID_ATTR_CHAR_FONTLIST ) );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: RemoveLink
+ --------------------------------------------------------------------*/
+
+
+void SwDocShell::RemoveLink()
+{
+ // Uno-Object abklemmen
+ uno::Reference< text::XTextDocument > xDoc(GetBaseModel(), uno::UNO_QUERY);
+ ((SwXTextDocument*)xDoc.get())->Invalidate();
+ aFinishedTimer.Stop();
+ if(pDoc)
+ {
+ DELETEZ(pBasePool);
+ sal_Int8 nRefCt = pDoc->RemoveLink();
+ pDoc->SetOle2Link(Link());
+ pDoc->SetDocShell( 0 );
+ if( !nRefCt )
+ delete pDoc;
+ pDoc = 0; // wir haben das Doc nicht mehr !!
+ }
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Laden, Default-Format
+ --------------------------------------------------------------------*/
+
+
+sal_Bool SwDocShell::Load(SvStorage* pStor)
+{
+ sal_Bool bRet = sal_False;
+ if(SfxInPlaceObject::Load( pStor ))
+ {
+ if( pDoc ) // fuer Letzte Version !!
+ RemoveLink(); // das existierende Loslassen
+
+ AddLink(); // Link setzen und Daten updaten !!
+
+ // Das Laden
+ // fuer MD
+ sal_Bool bSave = bNotLoadLayout;
+ bNotLoadLayout = sal_Bool( !LoadLayout() );
+#ifndef PRODUCT
+ sal_Bool bWeb = 0 != PTR_CAST(SwWebDocShell, this);
+ bNotLoadLayout |= SW_MOD()->GetUsrPref(bWeb)->IsTest1();
+#endif
+ SwWait aWait( *this, sal_True );
+ sal_uInt32 nErr = ERR_SWG_READ_ERROR;
+ switch( GetCreateMode() )
+ {
+// case SFX_CREATE_MODE_INTERNAL:
+// nErr = 0;
+// break;
+
+ case SFX_CREATE_MODE_ORGANIZER:
+ nErr = pIo->LoadStyles( pStor );
+ break;
+
+ case SFX_CREATE_MODE_INTERNAL:
+ bNotLoadLayout = sal_True;
+ // kein break;
+
+ case SFX_CREATE_MODE_EMBEDDED:
+ // SfxProgress unterdruecken, wenn man Embedded ist
+ SW_MOD()->SetEmbeddedLoadSave( sal_True );
+ // kein break;
+
+ case SFX_CREATE_MODE_STANDARD:
+ case SFX_CREATE_MODE_PREVIEW:
+ if( ReadSw3 )
+ {
+#ifdef _JP_LOADTIME
+{
+{
+SvFileStream aStrm( "\\loadtime.txt", STREAM_WRITE );
+aStrm.Seek( STREAM_SEEK_TO_END );
+aStrm << "Load: " << pStor->GetName().GetStr() << endl;
+}
+bIsSttTime = sal_True;
+nSttTime = util::Time().GetTime();
+}
+#endif
+ // die DocInfo vom Doc am DocShell-Medium setzen
+ {
+ SfxDocumentInfo aInfo;
+ aInfo.Load( pStor );
+ pDoc->DocInfoChgd( aInfo );
+ }
+ SwReader aRdr( *pStor, aEmptyStr, pDoc );
+ nErr = aRdr.Read( *ReadSw3 );
+ }
+#ifndef PRODUCT
+ else
+ ASSERT( !this, "ohne Sw3Reader geht nichts" );
+#endif
+ break;
+
+#ifndef PRODUCT
+ default:
+ ASSERT( !this, "Load: new CreateMode?" );
+#endif
+
+ }
+ bNotLoadLayout = bSave;
+
+ ASSERT( !pBasePool, "wer hat seinen Pool nicht zerstoert?" );
+ pBasePool = new SwDocStyleSheetPool( *pDoc,
+ SFX_CREATE_MODE_ORGANIZER == GetCreateMode() );
+ UpdateFontList();
+ InitDraw();
+
+ SetError( nErr );
+ bRet = !IsError( nErr );
+
+ // StartFinishedLoading rufen.
+ if( bRet && !pDoc->IsInLoadAsynchron() &&
+ GetCreateMode() == SFX_CREATE_MODE_STANDARD )
+ StartLoadFinishedTimer();
+
+ // SfxProgress unterdruecken, wenn man Embedded ist
+ SW_MOD()->SetEmbeddedLoadSave( sal_False );
+
+ if( pDoc->IsGlobalDoc() && !pDoc->IsGlblDocSaveLinks() )
+ {
+ // dann entferne alle nicht referenzierte OLE-Objecte
+ SvStorageInfoList aInfoList;
+ pStor->FillInfoList( &aInfoList );
+
+ // erstmal alle nicht "OLE-Objecte" aus der Liste entfernen
+ for( sal_uInt32 n = aInfoList.Count(); n; )
+ {
+ const String& rName = aInfoList.GetObject( --n ).GetName();
+ // in ndole.cxx wird dieser PreFix benutzt
+ if( 3 != rName.Match( String::CreateFromAscii("Obj") ))
+ aInfoList.Remove( n );
+ }
+
+ // dann alle referenzierten Object aus der Liste entfernen
+ SwClientIter aIter( *(SwModify*)pDoc->GetDfltGrfFmtColl() );
+ for( SwCntntNode* pNd = (SwCntntNode*)aIter.First( TYPE( SwCntntNode ) );
+ pNd; pNd = (SwCntntNode*)aIter.Next() )
+ {
+ SwOLENode* pOLENd = pNd->GetOLENode();
+ if( pOLENd )
+ {
+ const String& rOLEName = pOLENd->GetOLEObj().GetName();
+ for( n = aInfoList.Count(); n; )
+ {
+ const String& rName = aInfoList.GetObject( --n ).GetName();
+ if( rOLEName == rName )
+ {
+ aInfoList.Remove( n );
+ break;
+ }
+ }
+ }
+ }
+ // und jetzt haben wir alle Objecte, die nicht mehr
+ // referenziert werden
+ SvPersist* p = this;
+ for( n = aInfoList.Count(); n; )
+ {
+ const String& rName = aInfoList.GetObject( --n ).GetName();
+ SvInfoObjectRef aRef( p->Find( rName ) );
+ if( aRef.Is() )
+ p->Remove( &aRef );
+ }
+ }
+ }
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+sal_Bool SwDocShell::LoadFrom(SvStorage* pStor)
+{
+ sal_Bool bRet = sal_False;
+ if( pDoc )
+ RemoveLink();
+
+ AddLink(); // Link setzen und Daten updaten !!
+
+ do { // middle check loop
+ sal_uInt32 nErr = ERR_SWG_READ_ERROR;
+ const String& rNm = pStor->GetName();
+ if( pStor->IsStream( SfxStyleSheetBasePool::GetStreamName() ))
+ {
+ // Das Laden
+ SwWait aWait( *this, sal_True );
+ nErr = pIo->LoadStyles( pStor );
+ }
+ else
+ {
+ // sollte es sich um eine 2. Vrolage handeln ??
+ if( SvStorage::IsStorageFile( rNm ) )
+ break;
+
+ const SfxFilter* pFltr = SwIoSystem::GetFileFilter( rNm, aEmptyStr );
+ if( !pFltr || pFltr->GetUserData() != String::CreateFromAscii(FILTER_SWG) )
+ break;
+
+ SvFileStream aStrm( rNm, STREAM_STD_READ );
+ if( 0 == ( nErr = aStrm.GetError() ) )
+ {
+ SwWait aWait( *this, sal_True );
+ SwReader aRead( aStrm, rNm, pDoc );
+ nErr = aRead.Read( *ReadSwg );
+ }
+ }
+
+ ASSERT( !pBasePool, "wer hat seinen Pool nicht zerstoert?" );
+ pBasePool = new SwDocStyleSheetPool( *pDoc,
+ SFX_CREATE_MODE_ORGANIZER == GetCreateMode() );
+
+ SetError( nErr );
+ bRet = !IsError( nErr );
+
+ } while( sal_False );
+
+ SfxObjectShell::LoadFrom( pStor );
+ pDoc->ResetModified();
+ return bRet;
+}
+
+
+SvDataMemberObjectRef SwDocShell::CreateSnapshot()
+{
+ SvDataMemberObjectRef aRef;
+ if( pDoc )
+ aRef = new SwDataExchange( *pDoc );
+ return aRef;
+}
+
+
+void SwDocShell::SubInitNew()
+{
+ ASSERT( !pBasePool, "wer hat seinen Pool nicht zerstoert?" );
+ pBasePool = new SwDocStyleSheetPool( *pDoc,
+ SFX_CREATE_MODE_ORGANIZER == GetCreateMode() );
+ UpdateFontList();
+ InitDraw();
+
+// const SwModuleOptions& rModCfg = *SW_MOD()->GetModuleConfig();
+// pDoc->SetLinkUpdMode( rModCfg.GetLinkMode() );
+// pDoc->SetFldUpdateFlags( rModCfg.GetFldUpdateFlags() );
+ pDoc->SetLinkUpdMode( GLOBALSETTING );
+ pDoc->SetFldUpdateFlags( AUTOUPD_GLOBALSETTING );
+
+ sal_Bool bWeb = ISA(SwWebDocShell);
+
+ sal_uInt16 nRange[] = {
+ RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE,
+ 0, 0, 0 };
+ if(!bWeb)
+ {
+ nRange[2] = RES_PARATR_TABSTOP;
+ nRange[3] = RES_PARATR_HYPHENZONE;
+ }
+ SfxItemSet aDfltSet( pDoc->GetAttrPool(), nRange );
+ uno::Reference< beans::XPropertySet > xProp( ::GetLinguPropertySet() );
+
+ sal_Int16 nVal;
+ if (xProp.is())
+ {
+ xProp->getPropertyValue( OUString::createFromAscii(UPN_DEFAULT_LANGUAGE)) >>= nVal;
+ }
+ else
+ { // guess DefaultLanguage to be used from other sources
+ nVal = Application::GetAppInternational().GetLanguage();
+ if( nVal == LANGUAGE_SYSTEM )
+ nVal = ::GetSystemLanguage();
+ }
+
+ aDfltSet.Put( SvxLanguageItem( nVal, RES_CHRATR_LANGUAGE ) );
+ if(!bWeb)
+ {
+ SvxHyphenZoneItem aHyp( (SvxHyphenZoneItem&) pDoc->GetDefault(
+ RES_PARATR_HYPHENZONE) );
+ if(xProp.is())
+ xProp->getPropertyValue( OUString::createFromAscii(UPN_HYPH_MIN_LEADING) )>>= nVal;
+ else
+ nVal = 2;
+ aHyp.GetMinLead() = sal_Int8(nVal);
+ if(xProp.is())
+ xProp->getPropertyValue( OUString::createFromAscii(UPN_HYPH_MIN_TRAILING) ) >>= nVal;
+ else
+ nVal = 2;
+ aHyp.GetMinTrail() = sal_Int8(nVal);
+ aDfltSet.Put( aHyp );
+
+ sal_uInt16 nNewPos = SW_MOD()->GetModuleConfig()->GetDefTab();
+ if( nNewPos )
+ aDfltSet.Put( SvxTabStopItem( 1, nNewPos,
+ SVX_TAB_ADJUST_DEFAULT ) );
+ }
+ pDoc->SetDefault( aDfltSet );
+ pDoc->ResetModified();
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.209 2000/09/18 16:05:11 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.208 2000/09/08 15:11:56 os
+ use configuration service
+
+ Revision 1.207 2000/07/13 12:36:19 os
+ new: SwXTextDocument::reactivate()
+
+ Revision 1.206 2000/07/05 10:28:14 os
+ invalidate model in ::RemoveLink()
+
+ Revision 1.205 2000/06/26 10:38:34 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.204 2000/04/11 08:01:30 os
+ UNICODE
+
+ Revision 1.203 2000/03/21 15:47:50 os
+ UNOIII
+
+ Revision 1.202 2000/03/03 15:16:58 os
+ StarView remainders removed
+
+ Revision 1.201 2000/02/02 17:00:37 jp
+ Task #72579#: interface of SwReader is changed
+
+ Revision 1.200 2000/01/19 18:26:37 jp
+ Bug #72117#: create numberformatter only if he is needed
+
+ Revision 1.199 1999/12/10 15:49:58 tl
+ #70667# shadowing of variable fixed
+
+ Revision 1.198 1999/12/10 13:05:52 tl
+ #70383# SvxGetLinguPropertySet => ::GetLinguPropertySet
+
+ Revision 1.197 1999/11/24 18:24:13 tl
+ check for Service availability
+
+ Revision 1.196 1999/11/19 16:40:22 os
+ modules renamed
+
+ Revision 1.195 1999/11/15 10:30:05 tl
+ some property name changes for ONE_LINGU
+
+ Revision 1.194 1999/10/25 19:10:08 tl
+ ongoing ONE_LINGU implementation
+
+ Revision 1.193 1999/08/31 08:34:00 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+
+ Rev 1.192 31 Aug 1999 10:34:00 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+ Rev 1.191 08 Jul 1999 15:59:34 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.190 07 Jul 1999 08:25:26 OS
+ extended indexes: create index types in SwDoc::Ctor
+
+ Rev 1.189 15 Mar 1999 15:07:32 JP
+ Task #61405#: AutoCompleteList wurde statisch
+
+ Rev 1.188 11 Mar 1999 23:58:40 JP
+ Task #63171#: Optionen fuer Feld-/LinkUpdate Doc oder Modul lokal, Task #61405: Optionen setzen
+
+ Rev 1.187 09 Mar 1999 15:36:10 OS
+ #62742# Invalidate am Model rufen, nicht InitNewDoc
+
+ Rev 1.186 04 Feb 1999 11:22:14 ER
+ #61415# OfaMiscCfg nach SFX verschoben
+
+ Rev 1.185 02 Feb 1999 08:42:48 OS
+ #61027# zweistellige Jahreszahlen
+
+ Rev 1.184 01 Feb 1999 08:23:24 OS
+ #56371# unnoetigen include wieder raus
+
+ Rev 1.183 27 Jan 1999 09:51:54 OS
+ #56371# TF_ONE51
+
+ Rev 1.182 10 Dec 1998 15:55:18 OS
+ #56371# TF_ONE51 Zwischenstand
+
+ Rev 1.181 25 Nov 1998 11:26:54 OS
+ #59240##59637# SubInitNew vor dem Import, kein style::TabStop fuer HTML
+
+ Rev 1.180 23 Nov 1998 16:12:16 OM
+ #58216# Verknuepfungsoptionen pro Dokument
+
+ Rev 1.179 11 Nov 1998 09:04:20 OS
+ #59240# keine Defaults fuer style::TabStop und Hyphenation in der WebDocShell
+
+ Rev 1.178 19 Aug 1998 15:18:28 OM
+ #55274# Default-Datenbanknamen am Dokument nur OnDemand setzen
+
+ Rev 1.177 24 Apr 1998 17:17:30 JP
+ Bug #49791#: nur auf OLE casten wenn auch OLE drin ist (und nicht Grafik)
+
+ Rev 1.176 21 Apr 1998 12:37:56 JP
+ Bug #47798#: GlobalDocument ohne Inhalt laden - nicht referenzierte Objecte loeschen
+
+ Rev 1.175 17 Feb 1998 09:19:04 TJ
+ IFDEF TF _STARONE
+
+ Rev 1.174 12 Feb 1998 15:00:10 OS
+ Model im Dtor invalidieren
+
+ Rev 1.173 11 Feb 1998 16:31:30 OS
+ SwXTextDocument wieder aktiv
+
+ Rev 1.172 04 Feb 1998 17:22:50 OS
+ SetModel erstmal raus
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/app/docst.cxx b/sw/source/ui/app/docst.cxx
new file mode 100644
index 000000000000..ba1cf1a974dc
--- /dev/null
+++ b/sw/source/ui/app/docst.cxx
@@ -0,0 +1,1450 @@
+/*************************************************************************
+ *
+ * $RCSfile: docst.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <hintids.hxx>
+
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFX_TEMPLDLG_HXX //autogen
+#include <sfx2/templdlg.hxx>
+#endif
+#ifndef _SFX_TPLPITEM_HXX //autogen
+#include <sfx2/tplpitem.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _NEWSTYLE_HXX //autogen
+#include <sfx2/newstyle.hxx>
+#endif
+#ifndef _SFX_SAVEOPT_HXX //autogen
+#include <sfx2/saveopt.hxx>
+#endif
+#ifndef _SFXMACITEM_HXX //autogen
+#include <svtools/macitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+
+#ifndef _SWWDOCSH_HXX //autogen
+#include <wdocsh.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FCHRFMT_HXX //autogen
+#include <fchrfmt.hxx>
+#endif
+#ifndef _OFA_HTMLCFG_HXX //autogen
+#include <offmgr/htmlcfg.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+
+
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "docsh.hxx"
+#include "uitool.hxx"
+#include "cmdid.h"
+#include "globals.hrc"
+#include "viewopt.hxx"
+#include "doc.hxx"
+#include "swstyle.h"
+#include "frmfmt.hxx"
+#include "charfmt.hxx"
+#include "poolfmt.hxx"
+#include "pagedesc.hxx"
+#include "tmpdlg.hxx"
+#include "docstyle.hxx"
+#include "uiitems.hxx"
+#include "fmtcol.hxx"
+#include "frmmgr.hxx" //SwFrmValid
+#include "swevent.hxx"
+#include "edtwin.hxx"
+
+#include "app.hrc"
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwDocShell::StateStyleSheet(SfxItemSet& rSet, SwWrtShell* pSh)
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ USHORT nActualFamily = USHRT_MAX;
+
+ SwWrtShell* pShell = pSh ? pSh : GetWrtShell();
+ if(!pShell)
+ {
+ while (nWhich)
+ {
+ rSet.DisableItem(nWhich);
+ nWhich = aIter.NextWhich();
+ }
+ return;
+ }
+ else
+ {
+ SfxViewFrame* pFrame = pShell->GetView().GetViewFrame();
+ const ISfxTemplateCommon* pCommon = SFX_APP()->GetCurrentTemplateCommon(pFrame->GetBindings());
+ if( pCommon )
+ nActualFamily = pCommon->GetActualFamily();
+ }
+
+ while (nWhich)
+ {
+ // aktuelle Vorlage zu jeder Familie ermitteln
+ //
+ String aName;
+ switch (nWhich)
+ {
+ case SID_STYLE_APPLY:
+ {//hier wird die Vorlage und ihre Familie an die StyleBox
+ //uebergeben, damit diese Familie angezeigt wird
+ if(pShell->IsFrmSelected())
+ {
+ SwFrmFmt* pFmt = pShell->GetCurFrmFmt();
+ if( pFmt )
+ aName = pFmt->GetName();
+ }
+ else
+ {
+ SwTxtFmtColl* pColl = pShell->GetCurTxtFmtColl();
+ if(pColl)
+ aName = pColl->GetName();
+ }
+ rSet.Put(SfxTemplateItem(nWhich, aName));
+ }
+ break;
+ case SID_STYLE_FAMILY1:
+ if( !pShell->IsFrmSelected() )
+ {
+ SwCharFmt* pFmt = pShell->GetCurCharFmt();
+ if(pFmt)
+ aName = pFmt->GetName();
+ else
+ aName = *pShell->GetDoc()->GetTextNmArray()[
+ RES_POOLCOLL_STANDARD - RES_POOLCOLL_TEXT_BEGIN ];
+
+ rSet.Put(SfxTemplateItem(nWhich, aName));
+ }
+ break;
+
+ case SID_STYLE_FAMILY2:
+ if(!pShell->IsFrmSelected())
+ {
+ SwTxtFmtColl* pColl = pShell->GetCurTxtFmtColl();
+ if(pColl)
+ aName = pColl->GetName();
+
+ SfxTemplateItem aItem(nWhich, aName);
+
+ USHORT nMask = 0;
+ if( pDoc->IsHTMLMode() )
+ nMask = SWSTYLEBIT_HTML;
+ else
+ {
+ const int nSelection = pShell->GetFrmType(0,TRUE);
+ if(pShell->GetCurTOX())
+ nMask = SWSTYLEBIT_IDX ;
+ else if(nSelection & FRMTYPE_HEADER ||
+ nSelection & FRMTYPE_FOOTER ||
+ nSelection & FRMTYPE_TABLE ||
+ nSelection & FRMTYPE_FLY_ANY ||
+ nSelection & FRMTYPE_FOOTNOTE ||
+ nSelection & FRMTYPE_FTNPAGE)
+ nMask = SWSTYLEBIT_EXTRA;
+ else
+ nMask = SWSTYLEBIT_TEXT;
+ }
+
+ aItem.SetValue(nMask);
+ rSet.Put(aItem);
+ }
+ break;
+
+ case SID_STYLE_FAMILY3:
+
+ if( pDoc->IsHTMLMode() )
+ rSet.DisableItem( nWhich );
+ else
+ {
+ SwFrmFmt* pFmt = pShell->GetCurFrmFmt();
+ if(pFmt && pShell->IsFrmSelected())
+ {
+ aName = pFmt->GetName();
+ rSet.Put(SfxTemplateItem(nWhich, aName));
+ }
+ }
+ break;
+
+ case SID_STYLE_FAMILY4:
+ {
+ OfaHtmlOptions* pHtmlOpt = OFF_APP()->GetHtmlOptions();
+ if( pDoc->IsHTMLMode() && !pHtmlOpt->IsPrintLayoutExtension())
+ rSet.DisableItem( nWhich );
+ else
+ {
+ USHORT n = pShell->GetCurPageDesc( FALSE );
+ if( n < pShell->GetPageDescCnt() )
+ aName = pShell->GetPageDesc( n ).GetName();
+
+ rSet.Put(SfxTemplateItem(nWhich, aName));
+ }
+ }
+ break;
+ case SID_STYLE_FAMILY5:
+ {
+ const SwNumRule* pRule = pShell->GetCurNumRule();
+ if( pRule )
+ aName = pRule->GetName();
+
+ rSet.Put(SfxTemplateItem(nWhich, aName));
+ }
+ break;
+
+ case SID_STYLE_WATERCAN:
+ {
+ SwEditWin& rEdtWin = pView->GetEditWin();
+ SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
+ rSet.Put(SfxBoolItem(nWhich, pApply && pApply->eType != 0));
+ break;
+ }
+
+ case SID_STYLE_UPDATE_BY_EXAMPLE:
+ if( pShell->IsFrmSelected()
+ ? SFX_STYLE_FAMILY_FRAME != nActualFamily
+ : ( SFX_STYLE_FAMILY_FRAME == nActualFamily ||
+ SFX_STYLE_FAMILY_PAGE == nActualFamily ||
+ (SFX_STYLE_FAMILY_PSEUDO == nActualFamily && !pShell->GetCurNumRule())) )
+ {
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case SID_STYLE_NEW_BY_EXAMPLE:
+ if( (pShell->IsFrmSelected()
+ ? SFX_STYLE_FAMILY_FRAME != nActualFamily
+ : SFX_STYLE_FAMILY_FRAME == nActualFamily) ||
+ (SFX_STYLE_FAMILY_PSEUDO == nActualFamily && !pShell->GetCurNumRule()) )
+ {
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ default:
+ DBG_ERROR( "Invalid SlotId");
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: StyleSheet-Requeste auswerten
+ --------------------------------------------------------------------*/
+
+
+void SwDocShell::ExecStyleSheet( SfxRequest& rReq )
+{
+ USHORT nSlot = rReq.GetSlot();
+ USHORT nRet = 0xffff;
+
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem;
+ SwWrtShell* pActShell = 0;
+ SFX_APP()->GetOptions().SetMetric(::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, this)));
+ BOOL bSetReturn = TRUE;
+ switch (nSlot)
+ {
+ case SID_STYLE_NEW:
+ if( pArgs && SFX_ITEM_SET == pArgs->GetItemState( SID_STYLE_FAMILY,
+ FALSE, &pItem ))
+ {
+ USHORT nFamily = ((const SfxUInt16Item*)pItem)->GetValue();
+
+ String sName;
+ USHORT nMask = 0;
+ if( SFX_ITEM_SET == pArgs->GetItemState( SID_STYLE_NEW,
+ FALSE, &pItem ))
+ sName = ((const SfxStringItem*)pItem)->GetValue();
+ if( SFX_ITEM_SET == pArgs->GetItemState( SID_STYLE_MASK,
+ FALSE, &pItem ))
+ nMask = ((const SfxUInt16Item*)pItem)->GetValue();
+ String sParent;
+ if( SFX_ITEM_SET == pArgs->GetItemState( SID_STYLE_REFERENCE,
+ FALSE, &pItem ))
+ sParent = ((const SfxStringItem*)pItem)->GetValue();
+
+ nRet = Edit( sName, sParent, nFamily, nMask, TRUE, FALSE, 0, rReq.IsAPI() );
+ }
+ break;
+
+ case SID_STYLE_APPLY:
+ if( !pArgs )
+ {
+ GetView()->GetViewFrame()->GetDispatcher()->Execute(SID_STYLE_DESIGNER, FALSE);
+ break;
+ } // Fall through
+ case SID_STYLE_EDIT:
+ case SID_STYLE_DELETE:
+ case SID_STYLE_WATERCAN:
+ case SID_STYLE_FAMILY:
+ case SID_STYLE_UPDATE_BY_EXAMPLE:
+ case SID_STYLE_NEW_BY_EXAMPLE:
+ {
+ String aParam;
+ USHORT nFamily, nMask = 0;
+
+ if( !pArgs )
+ {
+ nFamily = SFX_STYLE_FAMILY_PARA;
+
+ switch (nSlot)
+ {
+ case SID_STYLE_NEW_BY_EXAMPLE:
+ {
+ SfxNewStyleDlg *pDlg = new SfxNewStyleDlg( 0,
+ *GetStyleSheetPool());
+ if(RET_OK == pDlg->Execute())
+ aParam = pDlg->GetName();
+ delete pDlg;
+ }
+ break;
+
+ case SID_STYLE_UPDATE_BY_EXAMPLE:
+ case SID_STYLE_EDIT:
+ {
+ SwTxtFmtColl* pColl = GetWrtShell()->GetCurTxtFmtColl();
+ if(pColl)
+ {
+ aParam = pColl->GetName();
+ rReq.AppendItem(SfxStringItem(nSlot, aParam));
+ }
+ }
+ break;
+ }
+ }
+ else
+ {
+ ASSERT( pArgs->Count(), "SfxBug ItemSet ist leer");
+
+ SwWrtShell* pShell = GetWrtShell();
+ if( SFX_ITEM_SET == pArgs->GetItemState(nSlot, FALSE, &pItem ))
+ aParam = ((const SfxStringItem*)pItem)->GetValue();
+
+ if( SFX_ITEM_SET == pArgs->GetItemState(SID_STYLE_FAMILY,
+ FALSE, &pItem ))
+ nFamily = ((const SfxUInt16Item*)pItem)->GetValue();
+
+ if( SFX_ITEM_SET == pArgs->GetItemState(SID_STYLE_MASK,
+ FALSE, &pItem ))
+ nMask = ((const SfxUInt16Item*)pItem)->GetValue();
+ if( SFX_ITEM_SET == pArgs->GetItemState(FN_PARAM_WRTSHELL,
+ FALSE, &pItem ))
+ pActShell = pShell = (SwWrtShell*)((SwPtrItem*)pItem)->GetValue();
+
+ if( nSlot == SID_STYLE_UPDATE_BY_EXAMPLE )
+ {
+ switch( nFamily )
+ {
+ case SFX_STYLE_FAMILY_PARA:
+ {
+ SwTxtFmtColl* pColl = pShell->GetCurTxtFmtColl();
+ if(pColl)
+ aParam = pColl->GetName();
+ }
+ break;
+ case SFX_STYLE_FAMILY_FRAME:
+ {
+ SwFrmFmt* pFrm = pWrtShell->GetCurFrmFmt();
+ if( pFrm )
+ aParam = pFrm->GetName();
+ }
+ break;
+ case SFX_STYLE_FAMILY_CHAR:
+ {
+ SwCharFmt* pChar = pWrtShell->GetCurCharFmt();
+ if( pChar )
+ aParam = pChar->GetName();
+ }
+ break;
+ case SFX_STYLE_FAMILY_PSEUDO:
+ if(SFX_ITEM_SET == pArgs->GetItemState(SID_STYLE_UPD_BY_EX_NAME, FALSE, &pItem))
+ {
+ aParam = ((const SfxStringItem*)pItem)->GetValue();
+ }
+ break;
+ }
+ rReq.AppendItem(SfxStringItem(nSlot, aParam));
+ }
+ }
+ if (aParam.Len() || nSlot == SID_STYLE_WATERCAN )
+ {
+ switch(nSlot)
+ {
+ case SID_STYLE_EDIT:
+ nRet = Edit(aParam, aEmptyStr, nFamily, nMask, FALSE, FALSE, pActShell );
+ break;
+ case SID_STYLE_DELETE:
+ nRet = Delete(aParam, nFamily);
+ break;
+ case SID_STYLE_APPLY:
+ // Shellwechsel in ApplyStyles
+ nRet = ApplyStyles(aParam, nFamily, pActShell,
+ rReq.GetModifier() );
+ // nur, wenn es kein API-Call war
+ if(!pActShell)
+ pView->GetEditWin().GrabFocus();
+ break;
+ case SID_STYLE_WATERCAN:
+ nRet = DoWaterCan(aParam, nFamily);
+ break;
+ case SID_STYLE_UPDATE_BY_EXAMPLE:
+ nRet = UpdateStyle(aParam, nFamily, pActShell);
+ break;
+ case SID_STYLE_NEW_BY_EXAMPLE:
+ {
+ nRet = MakeByExample(aParam, nFamily, nMask, pActShell );
+ SfxTemplateDialog* pDlg = SFX_APP()->GetTemplateDialog();
+
+ if(pDlg && pDlg->IsVisible())
+ pDlg->Update();
+ }
+ break;
+
+ default:
+ DBG_ERROR( "Falsche Slot-Id");
+ }
+ }
+ break;
+ }
+ }
+
+ if(bSetReturn)
+ {
+ if(rReq.IsAPI()) // Basic bekommt nur TRUE oder FALSE
+ rReq.SetReturnValue(SfxUInt16Item(nSlot, nRet !=0));
+ else
+ rReq.SetReturnValue(SfxUInt16Item(nSlot, nRet));
+ }
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Edit
+ --------------------------------------------------------------------*/
+
+
+USHORT SwDocShell::Edit( const String &rName, const String &rParent, USHORT nFamily, USHORT nMask,
+ BOOL bNew, BOOL bColumn, SwWrtShell* pActShell,
+ BOOL bBasic )
+{
+ ASSERT(GetWrtShell(), "Keine Shell, keine Styles");
+ SfxStyleSheetBase *pStyle = 0;
+ SFX_APP()->GetOptions().SetMetric(::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, this)));
+
+ USHORT nRet = nMask;
+ BOOL bModified = pDoc->IsModified();
+
+ if( bNew )
+ {
+ if( SFXSTYLEBIT_ALL != nMask && SFXSTYLEBIT_USED != nMask )
+ nMask |= SFXSTYLEBIT_USERDEF;
+ else
+ nMask = SFXSTYLEBIT_USERDEF;
+
+ pStyle = &pBasePool->Make( rName, (SfxStyleFamily)nFamily, nMask );
+
+ // die aktuellen als Parent setzen
+ SwDocStyleSheet* pDStyle = (SwDocStyleSheet*)pStyle;
+ switch( nFamily )
+ {
+ case SFX_STYLE_FAMILY_PARA:
+ {
+ if(rParent.Len())
+ {
+ SwTxtFmtColl* pColl = pWrtShell->FindTxtFmtCollByName( rParent );
+ pDStyle->GetCollection()->SetDerivedFrom( pColl );
+ pDStyle->PresetParent( rParent );
+ }
+ else
+ {
+ SwTxtFmtColl* pColl = pWrtShell->GetCurTxtFmtColl();
+ pDStyle->GetCollection()->SetDerivedFrom( pColl );
+ if( pColl )
+ pDStyle->PresetParent( pColl->GetName() );
+ }
+ }
+ break;
+ case SFX_STYLE_FAMILY_CHAR:
+ {
+ if(rParent.Len())
+ {
+ SwCharFmt* pCFmt = pWrtShell->FindCharFmtByName( rParent );
+
+ pDStyle->GetCharFmt()->SetDerivedFrom( pCFmt );
+ pDStyle->PresetParent( rParent );
+ }
+ else
+ {
+ SwCharFmt* pCFmt = pWrtShell->GetCurCharFmt();
+ pDStyle->GetCharFmt()->SetDerivedFrom( pCFmt );
+ if( pCFmt )
+ pDStyle->PresetParent( pCFmt->GetName() );
+ }
+ }
+ break;
+ case SFX_STYLE_FAMILY_FRAME :
+ {
+ if(rParent.Len())
+ {
+ SwFrmFmt* pFFmt = pWrtShell->GetDoc()->FindFrmFmtByName( rParent );
+ pDStyle->GetFrmFmt()->SetDerivedFrom( pFFmt );
+ pDStyle->PresetParent( rParent );
+ }
+ }
+ break;
+ }
+ }
+ else
+ {
+ pStyle = pBasePool->Find( rName, (SfxStyleFamily)nFamily );
+ ASSERT(pStyle, "Vorlage nicht gefunden");
+ }
+
+ if(!pStyle)
+ return FALSE;
+
+ // Dialoge zusammenstoepseln
+ //
+ SwDocStyleSheet aTmp( *(SwDocStyleSheet*)pStyle );
+ if( SFX_STYLE_FAMILY_PARA == nFamily )
+ {
+ SfxItemSet& rSet = aTmp.GetItemSet();
+ ::SwToSfxPageDescAttr( rSet );
+ // erstmal nur eine Null
+ rSet.Put(SwBackgroundDestinationItem(SID_PARA_BACKGRND_DESTINATION, 0));
+ }
+/* else if( SFX_STYLE_FAMILY_FRAME == nFamily )
+ {
+ // Auskommentiert wegen Bug #45776 (per default keine Breite&Groesse in Rahmenvorlagen)
+ SfxItemSet& rSet = aTmp.GetItemSet();
+ if( SFX_ITEM_SET != rSet.GetItemState( RES_FRM_SIZE ))
+ {
+ // dann sollten wir spaetesten hier eines anlegen
+ SwFrmValid aFrmDefValues;
+ rSet.Put( SwFmtFrmSize( ATT_VAR_SIZE, aFrmDefValues.nWidth,
+ aFrmDefValues.nHeight ));
+ }
+ }*/
+ else if( SFX_STYLE_FAMILY_CHAR == nFamily )
+ {
+ SfxItemSet& rSet = aTmp.GetItemSet();
+ const SfxPoolItem *pTmpBrush;
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_CHRATR_BACKGROUND,
+ TRUE, &pTmpBrush ) )
+ {
+ SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) );
+ aTmpBrush.SetWhich( RES_BACKGROUND );
+ rSet.Put( aTmpBrush );
+ }
+ }
+ if (!bBasic)
+ {
+ // vor dem Dialog wird der HtmlMode an der DocShell versenkt
+ PutItem(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(this)));
+ SwTemplateDlg* pDlg = new SwTemplateDlg( 0, aTmp, nFamily, bColumn,
+ pActShell ? pActShell : pWrtShell, bNew);
+ if(RET_OK == pDlg->Execute())
+ {
+ GetWrtShell()->StartAllAction();
+
+ // nur bei Absatz-Vorlagen die Maske neu setzen
+ if( bNew )
+ {
+ nRet = SFX_STYLE_FAMILY_PARA == pStyle->GetFamily()
+ ? aTmp.GetMask()
+ : SFXSTYLEBIT_USERDEF;
+ }
+ else if( pStyle->GetMask() != aTmp.GetMask() )
+ nRet = aTmp.GetMask();
+
+ if( SFX_STYLE_FAMILY_PARA == nFamily )
+ {
+ SfxItemSet aSet( *pDlg->GetOutputItemSet() );
+ ::SfxToSwPageDescAttr( *GetWrtShell(), aSet );
+ aTmp.SetItemSet( aSet );
+ }
+ else
+ {
+ SfxItemSet aTmpSet( *pDlg->GetOutputItemSet() );
+ if( SFX_STYLE_FAMILY_CHAR == nFamily )
+ {
+ const SfxPoolItem *pTmpBrush;
+ if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_BACKGROUND,
+ FALSE, &pTmpBrush ) )
+ {
+ SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) );
+ aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND );
+ aTmpSet.Put( aTmpBrush );
+ }
+ aTmpSet.ClearItem( RES_BACKGROUND );
+ }
+ aTmp.SetItemSet( aTmpSet );
+ }
+ if(SFX_STYLE_FAMILY_PAGE == nFamily)
+ pView->InvalidateRulerPos();
+
+ if( bNew )
+ pBasePool->Broadcast( SfxStyleSheetHint( SFX_STYLESHEET_CREATED, aTmp ) );
+
+ // JP 19.09.97:
+ // Dialog vorm EndAction zerstoeren - bei Seitenvorlagen kann
+ // muss der ItemSet zerstoert werden, damit die Cursor aus den
+ // Kopf-/Fusszeilen entfernt werden. Sonst kommts zu GPFs!!!
+ delete pDlg;
+
+ pDoc->SetModified();
+ if( !bModified ) // Bug 57028
+ pDoc->SetUndoNoResetModified();
+
+ GetWrtShell()->EndAllAction();
+ }
+ else
+ {
+ if( bNew )
+ pBasePool->Erase( &aTmp );
+ if( !bModified )
+ pDoc->ResetModified();
+ delete pDlg;
+ }
+ }
+ else
+ {
+ // vor dem Dialog wird der HtmlMode an der DocShell versenkt
+ PutItem(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(this)));
+
+ GetWrtShell()->StartAllAction();
+
+ // nur bei Absatz-Vorlagen die Maske neu setzen
+ if( bNew )
+ {
+ nRet = SFX_STYLE_FAMILY_PARA == pStyle->GetFamily()
+ ? aTmp.GetMask()
+ : SFXSTYLEBIT_USERDEF;
+ }
+ else if( pStyle->GetMask() != aTmp.GetMask() )
+ nRet = aTmp.GetMask();
+
+ if( SFX_STYLE_FAMILY_PARA == nFamily )
+ ::SfxToSwPageDescAttr( *GetWrtShell(), aTmp.GetItemSet() );
+ else
+ {
+ SfxItemSet aTmpSet( aTmp.GetItemSet() );
+ if( SFX_STYLE_FAMILY_CHAR == nFamily )
+ {
+ const SfxPoolItem *pTmpBrush;
+ if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_BACKGROUND,
+ FALSE, &pTmpBrush ) )
+ {
+ SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) );
+ aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND );
+ aTmpSet.Put( aTmpBrush );
+ }
+ aTmpSet.ClearItem( RES_BACKGROUND );
+ }
+ aTmp.SetItemSet( aTmpSet );
+ }
+ if(SFX_STYLE_FAMILY_PAGE == nFamily)
+ pView->InvalidateRulerPos();
+
+ if( bNew )
+ pBasePool->Broadcast( SfxStyleSheetHint( SFX_STYLESHEET_CREATED, aTmp ) );
+
+ pDoc->SetModified();
+ if( !bModified ) // Bug 57028
+ pDoc->SetUndoNoResetModified();
+ GetWrtShell()->EndAllAction();
+ }
+
+ return nRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Delete
+ --------------------------------------------------------------------*/
+
+
+USHORT SwDocShell::Delete(const String &rName, USHORT nFamily)
+{
+ SfxStyleSheetBase *pStyle = pBasePool->Find(rName, (SfxStyleFamily)nFamily);
+
+ if(pStyle)
+ {
+ ASSERT(GetWrtShell(), "Keine Shell, keine Styles");
+
+ GetWrtShell()->StartAllAction();
+ pBasePool->Erase(pStyle);
+ GetWrtShell()->EndAllAction();
+
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Vorlage anwenden
+ --------------------------------------------------------------------*/
+
+
+USHORT SwDocShell::ApplyStyles(const String &rName, USHORT nFamily,
+ SwWrtShell* pShell, USHORT nMode )
+{
+ SwDocStyleSheet* pStyle =
+ (SwDocStyleSheet*)pBasePool->Find(rName, (SfxStyleFamily)nFamily);
+
+ ASSERT(pStyle, "Wo ist der StyleSheet");
+ if(!pStyle)
+ return FALSE;
+
+ SwWrtShell *pSh = pShell ? pShell : GetWrtShell();
+
+ ASSERT( pSh, "Keine Shell, keine Styles");
+
+ pSh->StartAllAction();
+
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_CHAR:
+ {
+ SwFmtCharFmt aFmt(pStyle->GetCharFmt());
+ pSh->SetAttr( aFmt, (nMode & KEY_SHIFT) ? SETATTR_DONTREPLACE : SETATTR_DEFAULT );
+ break;
+ }
+ case SFX_STYLE_FAMILY_PARA:
+ {
+ pSh->SetTxtFmtColl(pStyle->GetCollection());
+ break;
+ }
+ case SFX_STYLE_FAMILY_FRAME:
+ {
+ if ( pSh->IsFrmSelected() )
+ pSh->SetFrmFmt( pStyle->GetFrmFmt() );
+ break;
+ }
+ case SFX_STYLE_FAMILY_PAGE:
+ {
+ pSh->SetPageStyle(pStyle->GetPageDesc()->GetName());
+ break;
+ }
+ case SFX_STYLE_FAMILY_PSEUDO:
+ {
+ pSh->SetCurNumRule( *pStyle->GetNumRule() );
+ break;
+ }
+ default:
+ DBG_ERROR("Unbekannte Familie");
+ }
+ pSh->EndAllAction();
+
+ return nFamily;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Giesskanne starten
+ --------------------------------------------------------------------*/
+
+
+
+USHORT SwDocShell::DoWaterCan(const String &rName, USHORT nFamily)
+{
+ ASSERT(GetWrtShell(), "Keine Shell, keine Styles");
+
+ SwEditWin& rEdtWin = pView->GetEditWin();
+ SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
+ BOOL bWaterCan = !(pApply && pApply->eType != 0);
+ if( !rName.Len() )
+ bWaterCan = FALSE;
+ SwApplyTemplate aTemplate;
+ aTemplate.eType = nFamily;
+
+ if(bWaterCan)
+ {
+ SwDocStyleSheet* pStyle =
+ (SwDocStyleSheet*)pBasePool->Find(rName, (SfxStyleFamily)nFamily);
+
+ ASSERT(pStyle, "Wo ist der StyleSheet");
+ if(!pStyle) return nFamily;
+
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_CHAR:
+ aTemplate.aColl.pCharFmt = pStyle->GetCharFmt();
+ break;
+ case SFX_STYLE_FAMILY_PARA:
+ aTemplate.aColl.pTxtColl = pStyle->GetCollection();
+ break;
+ case SFX_STYLE_FAMILY_FRAME:
+ aTemplate.aColl.pFrmFmt = pStyle->GetFrmFmt();
+ break;
+ case SFX_STYLE_FAMILY_PAGE:
+ aTemplate.aColl.pPageDesc = (SwPageDesc*)pStyle->GetPageDesc();
+ break;
+ case SFX_STYLE_FAMILY_PSEUDO:
+ aTemplate.aColl.pNumRule = (SwNumRule*)pStyle->GetNumRule();
+ break;
+
+ default:
+ DBG_ERROR( "Unbekannte Familie");
+ }
+ }
+ else
+ aTemplate.eType = 0;
+
+ // Template anwenden
+ pView->GetEditWin().SetApplyTemplate(aTemplate);
+
+ return nFamily;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Vorlage Updaten
+ --------------------------------------------------------------------*/
+
+
+USHORT SwDocShell::UpdateStyle(const String &rName, USHORT nFamily, SwWrtShell* pShell)
+{
+ SwWrtShell* pWrtShell = pShell ? pShell : GetWrtShell();
+ ASSERT(GetWrtShell(), "Keine Shell, keine Styles");
+
+ SwDocStyleSheet* pStyle =
+ (SwDocStyleSheet*)pBasePool->Find(rName, (SfxStyleFamily)nFamily);
+
+ if(!pStyle)
+ return nFamily;
+
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_PARA:
+ {
+ SwTxtFmtColl* pColl = pStyle->GetCollection();
+ if(pColl && !pColl->IsDefault())
+ {
+ GetWrtShell()->StartAllAction();
+ GetWrtShell()->FillByEx(pColl);
+ // Vorlage auch anwenden, um harte Attributierung
+ // zu entfernen
+ GetWrtShell()->SetTxtFmtColl( pColl );
+ GetWrtShell()->EndAllAction();
+ }
+ break;
+ }
+ case SFX_STYLE_FAMILY_FRAME:
+ {
+ SwFrmFmt* pFrm = pStyle->GetFrmFmt();
+ if( pWrtShell->IsFrmSelected() && pFrm && !pFrm->IsDefault() )
+ {
+ SfxItemSet aSet( GetPool(), aFrmFmtSetRange );
+ pWrtShell->StartAllAction();
+ pWrtShell->GetFlyFrmAttr( aSet );
+
+ // JP 10.06.98: nur automatische Orientierungen uebernehmen
+/* #61359# jetzt auch wieder alle Orientierungen
+ * const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == aSet.GetItemState( RES_VERT_ORIENT,
+ FALSE, &pItem ) &&
+ VERT_NONE == ((SwFmtVertOrient*)pItem)->GetVertOrient())
+ aSet.ClearItem( RES_VERT_ORIENT );
+
+ if( SFX_ITEM_SET == aSet.GetItemState( RES_HORI_ORIENT,
+ FALSE, &pItem ) &&
+ HORI_NONE == ((SwFmtHoriOrient*)pItem)->GetHoriOrient())
+ aSet.ClearItem( RES_HORI_ORIENT );*/
+
+ pFrm->SetAttr( aSet );
+
+ // Vorlage auch anwenden, um harte Attributierung
+ // zu entfernen
+ pWrtShell->SetFrmFmt( pFrm, TRUE );
+ pWrtShell->EndAllAction();
+ }
+ }
+ break;
+ case SFX_STYLE_FAMILY_CHAR:
+ {
+ SwCharFmt* pChar = pStyle->GetCharFmt();
+ if( pChar && !pChar->IsDefault() )
+ {
+ pWrtShell->StartAllAction();
+ pWrtShell->FillByEx(pChar);
+ // Vorlage auch anwenden, um harte Attributierung
+ // zu entfernen
+ pWrtShell->EndAllAction();
+ }
+
+ }
+ break;
+ case SFX_STYLE_FAMILY_PSEUDO:
+ {
+ const SwNumRule* pCurRule;
+ if( pStyle->GetNumRule() &&
+ 0 != ( pCurRule = pWrtShell->GetCurNumRule() ))
+ {
+ SwNumRule aRule( *pCurRule );
+ aRule.SetName( pStyle->GetNumRule()->GetName() );
+ pWrtShell->ChgNumRuleFmts( aRule );
+ }
+ }
+ break;
+ }
+ return nFamily;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: NewByExample
+ --------------------------------------------------------------------*/
+
+
+USHORT SwDocShell::MakeByExample( const String &rName, USHORT nFamily,
+ USHORT nMask, SwWrtShell* pShell )
+{
+ SwWrtShell* pWrtShell = pShell ? pShell : GetWrtShell();
+ SwDocStyleSheet* pStyle = (SwDocStyleSheet*)pBasePool->Find(
+ rName, (SfxStyleFamily)nFamily );
+ if(!pStyle)
+ {
+ // JP 07.07.95: behalte die akt. Maske vom PI bei, dadurch werden
+ // neue sofort in den sichtbaren Bereich einsortiert
+ if( SFXSTYLEBIT_ALL == nMask || SFXSTYLEBIT_USED == nMask )
+ nMask = SFXSTYLEBIT_USERDEF;
+ else
+ nMask |= SFXSTYLEBIT_USERDEF;
+
+ pStyle = (SwDocStyleSheet*)&pBasePool->Make(rName,
+ (SfxStyleFamily)nFamily, nMask );
+ }
+
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_PARA:
+ {
+ SwTxtFmtColl* pColl = pStyle->GetCollection();
+ if(pColl && !pColl->IsDefault())
+ {
+ pWrtShell->StartAllAction();
+ pWrtShell->FillByEx(pColl);
+ // Vorlage auch anwenden, um harte Attributierung
+ // zu entfernen
+ pColl->SetDerivedFrom(pWrtShell->GetCurTxtFmtColl());
+
+ // setze die Maske noch an der Collection:
+ USHORT nId = pColl->GetPoolFmtId() & 0x87ff;
+ switch( nMask & 0x0fff )
+ {
+ case SWSTYLEBIT_TEXT:
+ nId |= COLL_TEXT_BITS;
+ break;
+ case SWSTYLEBIT_CHAPTER:
+ nId |= COLL_DOC_BITS;
+ break;
+ case SWSTYLEBIT_LIST:
+ nId |= COLL_LISTS_BITS;
+ break;
+ case SWSTYLEBIT_IDX:
+ nId |= COLL_REGISTER_BITS;
+ break;
+ case SWSTYLEBIT_EXTRA:
+ nId |= COLL_EXTRA_BITS;
+ break;
+ case SWSTYLEBIT_HTML:
+ nId |= COLL_HTML_BITS;
+ break;
+ }
+ pColl->SetPoolFmtId(nId);
+
+ pWrtShell->SetTxtFmtColl(pColl);
+ pWrtShell->EndAllAction();
+ }
+ }
+ break;
+ case SFX_STYLE_FAMILY_FRAME:
+ {
+ SwFrmFmt* pFrm = pStyle->GetFrmFmt();
+ if(pWrtShell->IsFrmSelected() && pFrm && !pFrm->IsDefault())
+ {
+ pWrtShell->StartAllAction();
+
+ SfxItemSet aSet(GetPool(), aFrmFmtSetRange );
+ pWrtShell->GetFlyFrmAttr( aSet );
+
+ // JP 10.06.98: nur automatische Orientierungen uebernehmen
+/* #61359# jetzt auch wieder alle Orientierungen
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == aSet.GetItemState( RES_VERT_ORIENT,
+ FALSE, &pItem ) &&
+ VERT_NONE == ((SwFmtVertOrient*)pItem)->GetVertOrient())
+ aSet.ClearItem( RES_VERT_ORIENT );
+
+ if( SFX_ITEM_SET == aSet.GetItemState( RES_HORI_ORIENT,
+ FALSE, &pItem ) &&
+ HORI_NONE == ((SwFmtHoriOrient*)pItem)->GetHoriOrient())
+ aSet.ClearItem( RES_HORI_ORIENT );
+ */
+
+ pFrm->SetAttr( aSet );
+ // Vorlage auch anwenden, um harte Attributierung
+ // zu entfernen
+ pWrtShell->SetFrmFmt( pFrm );
+ pWrtShell->EndAllAction();
+ }
+ }
+ break;
+ case SFX_STYLE_FAMILY_CHAR:
+ {
+ SwCharFmt* pChar = pStyle->GetCharFmt();
+ if(pChar && !pChar->IsDefault())
+ {
+ pWrtShell->StartAllAction();
+ pWrtShell->FillByEx( pChar );
+ pChar->SetDerivedFrom( pWrtShell->GetCurCharFmt() );
+ SwFmtCharFmt aFmt( pChar );
+ pWrtShell->SetAttr( aFmt );
+ pWrtShell->EndAllAction();
+ }
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE:
+ {
+ pWrtShell->StartAllAction();
+ USHORT nPgDsc = pWrtShell->GetCurPageDesc();
+ SwPageDesc& rSrc = (SwPageDesc&)pWrtShell->GetPageDesc( nPgDsc );
+ SwPageDesc& rDest = *(SwPageDesc*)pStyle->GetPageDesc();
+
+ USHORT nPoolId = rDest.GetPoolFmtId();
+ USHORT nHId = rDest.GetPoolHelpId();
+ BYTE nHFId = rDest.GetPoolHlpFileId();
+
+ pWrtShell->GetDoc()->CopyPageDesc( rSrc, rDest );
+
+ // PoolId darf NIE kopiert werden!
+ rDest.SetPoolFmtId( nPoolId );
+ rDest.SetPoolHelpId( nHId );
+ rDest.SetPoolHlpFileId( nHFId );
+
+ // werden Kopf-/Fusszeilen angelegt, so gibt es kein Undo mehr!
+ pWrtShell->GetDoc()->DelAllUndoObj();
+
+ pWrtShell->EndAllAction();
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_PSEUDO:
+ {
+ pWrtShell->StartAllAction();
+
+ SwNumRule aRule( *pWrtShell->GetCurNumRule() );
+ String sOrigRule( aRule.GetName() );
+ aRule.SetName( pStyle->GetNumRule()->GetName() );
+ pWrtShell->ChgNumRuleFmts( aRule );
+
+ pWrtShell->ReplaceNumRule( sOrigRule, aRule.GetName() );
+
+
+ pWrtShell->EndAllAction();
+ }
+ break;
+ }
+ return nFamily;
+}
+
+
+
+void SwDocShell::LoadStyles( SfxObjectShell& rSource )
+{
+/* [Beschreibung]
+
+ Diese Methode wird vom SFx gerufen, wenn aus einer Dokument-Vorlage
+ Styles nachgeladen werden sollen. Bestehende Styles soll dabei
+ "uberschrieben werden. Das Dokument mu"s daher neu formatiert werden.
+ Daher werden die Applikationen in der Regel diese Methode "uberladen
+ und in ihrer Implementierung die Implementierung der Basisklasse
+ rufen.
+*/
+ // ist die Source unser Document, dann uebernehmen wir das
+ // abpruefen selbst (wesentlich schneller und laeuft nicht ueber
+ // die Kruecke SfxStylePool
+ if( rSource.ISA( SwDocShell ))
+ {
+ //JP 28.05.99: damit die Kopf-/Fusszeilen nicht den fixen Inhalt
+ // der Vorlage erhalten, einmal alle FixFelder der
+ // Source aktualisieren
+ ((SwDocShell&)rSource).pDoc->SetFixFields();
+ if( pWrtShell )
+ {
+ pWrtShell->StartAllAction();
+ pDoc->ReplaceStyles( *((SwDocShell&)rSource).pDoc );
+ pWrtShell->EndAllAction();
+ }
+ else
+ {
+ BOOL bModified = pDoc->IsModified();
+ pDoc->ReplaceStyles( *((SwDocShell&)rSource).pDoc );
+ if( !bModified && pDoc->IsModified() && !pView )
+ {
+ // die View wird spaeter angelegt, ueberschreibt aber das
+ // Modify-Flag. Per Undo ist sowieso nichts mehr zu machen
+ pDoc->SetUndoNoResetModified();
+ }
+ }
+ }
+ else
+ SfxObjectShell::LoadStyles( rSource );
+}
+
+
+void SwDocShell::FormatPage( const String& rPage, BOOL bColumn, SwWrtShell* pActShell )
+{
+ Edit( rPage, aEmptyStr, SFX_STYLE_FAMILY_PAGE, 0, FALSE, bColumn, pActShell);
+}
+
+Bitmap __EXPORT SwDocShell::GetStyleFamilyBitmap( SfxStyleFamily eFamily )
+{
+ if( SFX_STYLE_FAMILY_PSEUDO == eFamily )
+ return Bitmap( SW_RES( BMP_STYLES_FAMILY_NUM ));
+ return SfxObjectShell::GetStyleFamilyBitmap( eFamily );
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.149 2000/09/18 16:05:11 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.148 2000/09/07 15:59:20 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.147 2000/07/07 13:26:09 jp
+ must changes VCL
+
+ Revision 1.146 2000/05/26 07:21:28 os
+ old SW Basic API Slots removed
+
+ Revision 1.145 2000/04/20 12:53:37 os
+ GetName() returns String&
+
+ Revision 1.144 2000/02/11 14:42:41 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.143 1999/11/29 17:25:33 jp
+ some changes for the compat. attribut
+
+ Revision 1.142 1999/06/09 17:34:54 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+
+ Rev 1.141 09 Jun 1999 19:34:54 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+ Rev 1.140 28 May 1999 10:24:20 JP
+ zu Bug #66327#: LoadStyles - FixFelder aktualisieren
+
+ Rev 1.139 22 Feb 1999 11:28:06 OS
+ #61359# freie Positionierung von Rahmen auch fuer Vorlagen wieder erlaubt
+
+ Rev 1.138 27 Nov 1998 14:49:04 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.137 23 Oct 1998 13:17:20 OS
+ #44617# Parentvorlage fuer SID_NEW_STYLE aus dem Gestalter
+
+ Rev 1.136 24 Sep 1998 11:55:30 JP
+ Bug #57028#: ggfs. das Undo veranlassen, kein Modified zurueck zu setzen
+
+ Rev 1.135 08 Sep 1998 18:00:36 OS
+ #56134# Metric fuer Text und HTML getrennt - auch im ::Edit
+
+ Rev 1.134 08 Sep 1998 16:48:20 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.133 17 Aug 1998 16:06:36 OS
+ GPF nach Shellwechsel waehrend Recording #55041#
+
+ Rev 1.132 27 Jul 1998 16:55:20 JP
+ Bug #45529#: LoadStyles muss ggfs. das Zuruecksetzen des ModifiedFlags verhindern
+
+ Rev 1.131 26 Jun 1998 17:36:46 OS
+ SwBGDestItem mit Which #51751#
+
+ Rev 1.130 17 Jun 1998 18:19:46 OS
+ SwBackgroundDestinationItem
+
+ Rev 1.129 17 Jun 1998 08:34:34 OS
+ im UpdateByExample sel. Eintrag mit eigener Id mitschicken #51141#
+
+ Rev 1.128 10 Jun 1998 14:51:40 JP
+ SetFrmFmt: zusaetzlicher Parameter - Orientierung beibehalten
+
+ Rev 1.127 16 Apr 1998 16:00:42 OS
+ Printing extensions fuer HTML
+
+ Rev 1.126 31 Mar 1998 10:20:36 OM
+ #45776 Per default kein Size-Item in Rahmenvorlagen
+
+ Rev 1.125 14 Mar 1998 13:06:44 OS
+ Chg: GetCurrentTemplateCommen mit SfxBindings&
+
+ Rev 1.124 20 Jan 1998 15:31:52 OS
+ RES_CHRATR:BACKGROUND hat jetzt SlotId
+
+ Rev 1.123 08 Jan 1998 12:55:08 OS
+ Zeichenhintergrund auch im Absatzformatdialog editierbar #46180#
+
+ Rev 1.122 06 Jan 1998 07:27:08 OS
+ New/UpdateByExample fuer Numererierung nur wenn sie gesetzt ist erlauben #46348#
+
+ Rev 1.121 09 Dec 1997 16:50:20 JP
+ neu: ReplaceNumRule fuer MakeByExample fuer NumerierungsVorlagen
+
+ Rev 1.120 04 Dec 1997 12:27:58 OS
+ Edit/FormatPage: WrtShell nicht mehr const
+
+ Rev 1.119 24 Nov 1997 16:57:24 JP
+ GetState: String in der Schleife anlegen
+
+ Rev 1.118 24 Nov 1997 14:22:38 MA
+ includes
+
+ Rev 1.117 17 Nov 1997 10:20:10 JP
+ Umstellung Numerierung
+
+ Rev 1.116 11 Nov 1997 13:22:14 JP
+ neu: NumRule-Vorlage
+
+ Rev 1.115 05 Nov 1997 09:33:30 JP
+ Bug #45341#: SetItemSet nie mit dem eigenen ItemSet aufrufen
+
+ Rev 1.114 19 Sep 1997 14:31:24 JP
+ GPF beim Abschalten der Kopf-/Fusszeilen behoben
+
+ Rev 1.113 04 Sep 1997 17:13:36 MA
+ includes
+
+ Rev 1.112 03 Sep 1997 15:53:52 OS
+ DLL-Umbau
+
+ Rev 1.111 21 Aug 1997 16:09:10 OS
+ Return fuer Basic nur noch Null und Eins #43004#
+
+ Rev 1.110 15 Aug 1997 11:45:06 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.109 12 Aug 1997 15:58:36 OS
+ frmitems/textitem/paraitem aufgeteilt
+
+ Rev 1.108 08 Aug 1997 17:26:42 OM
+ Headerfile-Umstellung
+
+ Rev 1.107 07 Aug 1997 14:59:24 OM
+ Headerfile-Umstellung
+
+ Rev 1.106 01 Aug 1997 17:03:30 OM
+ Basic: NewStyle ohne Dialog ausfuehren
+
+ Rev 1.105 31 Jul 1997 10:13:54 OM
+ #42247# Template-GPF behoben
+
+ Rev 1.104 15 Jul 1997 11:34:20 OS
+ MacroName auch als sub(lib.module)
+
+ Rev 1.103 05 Jul 1997 09:57:26 OS
+ Macro und Script an Rahmenvorlagen setzen/lesen
+
+ Rev 1.102 18 Jun 1997 10:47:58 JP
+ GetStateStyleSheet: der Stylist gibt die Family vor, NIE selbst bestimmen
+
+ Rev 1.101 16 Jun 1997 15:50:26 MA
+ #40739# kein Anchor bei UpdateByExample
+
+ Rev 1.100 28 May 1997 08:15:36 OS
+ Metric fuer Dialog nicht in der Statusmethode setzen, sondern im Execute
+
+ Rev 1.99 21 Feb 1997 15:31:20 OS
+ Watercan ueber den Pointer am EditWin erkennen
+
+ Rev 1.98 19 Feb 1997 15:47:00 JP
+ Execute: UpdateByExample/NewByExample - akt. Family wie beim Gestalter festlegen
+
+ Rev 1.97 11 Feb 1997 14:31:46 JP
+ GetState: Family umschalten wenn das ApplyFlag erfragt wird
+
+ Rev 1.96 10 Feb 1997 14:21:52 JP
+ Im HTML-Mode nur die HTML-Vorlagen anzeigen
+
+ Rev 1.95 04 Feb 1997 13:53:58 JP
+ StateStyle: kein Disable bei den Familien
+
+ Rev 1.94 28 Jan 1997 16:30:42 OS
+ vor dem StyleDialog den HtmlMode in die DocShell putten
+
+ Rev 1.93 16 Jan 1997 16:37:22 OS
+ Metric vor Dialogaufruf an der App setzen
+
+ Rev 1.92 13 Jan 1997 14:57:50 JP
+ virtuelle StandardZeichenvorlage im Gestalter
+
+ Rev 1.91 13 Jan 1997 13:46:06 JP
+ Umstellungen fuers Update
+
+ Rev 1.90 12 Dec 1996 13:24:38 JP
+ GetState: Numerierung schaltet den Gestalter bei Automatisch auf Text (nicht mehr Num.)
+
+ Rev 1.89 04 Dec 1996 17:44:10 JP
+ StateStyleSheet: im HTML-Mode den HTML-Bereich defaulten
+
+ Rev 1.88 04 Dec 1996 15:05:26 JP
+ PoolVorlagen: neuer Bereich - HTML
+
+ Rev 1.87 14 Nov 1996 19:14:32 OS
+ Umstellung SlotIds
+
+ Rev 1.86 06 Nov 1996 10:20:14 JP
+ NewByExample: PageDesc - PoolIds beibehalten
+
+ Rev 1.85 04 Nov 1996 15:02:58 JP
+ neu: NewByExample fuer PageDescs
+
+ Rev 1.84 29 Oct 1996 12:12:06 AMA
+ New: Zeichenvorlagen duerfen jetzt denselben Bereich umfassen (DONTREPLACE)
+
+ Rev 1.83 28 Oct 1996 16:59:10 AMA
+ New: Modifier durchreichen
+
+ Rev 1.82 01 Oct 1996 13:40:12 AMA
+ Fix: RES_CHRATR_BACKGROUND nur bei Aenderung setzen.
+
+ Rev 1.81 18 Sep 1996 14:30:44 AMA
+ Chg: Zeichenhintergrund
+
+ Rev 1.80 17 Sep 1996 16:20:06 OS
+ UI-Anpassung bedingte Vorlagen
+
+ Rev 1.79 09 Sep 1996 15:10:40 OS
+ StyleSheet-Slots koennen auch WrtShell mitbekommen - API-Aufruf von Hintergrund-Views
+
+ Rev 1.78 23 Aug 1996 12:26:40 JP
+ Bug #30613#: GetStyleState - auf die richtige Shelle zugreifen
+
+ Rev 1.77 29 Jul 1996 19:37:30 MA
+ includes
+
+ Rev 1.76 29 Jul 1996 15:14:46 OS
+ FormatPage und Edit mit akt. View
+
+ Rev 1.75 12 Jun 1996 14:55:40 JP
+ Bug #28625#: Edit - neue Vorlage -> Pool benachrictigen
+
+ Rev 1.74 07 May 1996 23:01:44 JP
+ Bug #27306#: LoadStyles - Start/End-AllAction nur wenn Shell vorhanden ist
+
+ Rev 1.73 22 Apr 1996 16:48:16 JP
+ Bug #26860#: Doc als nicht modifiziert kennzeichnen
+
+ Rev 1.72 28 Mar 1996 19:03:38 OS
+ nach PageStyleDialog Lineal invalidieren
+
+ Rev 1.71 22 Mar 1996 13:55:04 HJS
+ umstellung 311
+
+ Rev 1.70 11 Mar 1996 09:58:46 OS
+ StateStyleSheet hat jetzt opt. WrtShell* als 2. Param. wg. Basic
+
+ Rev 1.69 20 Feb 1996 16:27:26 OS
+ neu: FormatPage - ruft Seitenformatdialog ggf. mit Spaltenseite auf
+
+ Rev 1.68 13 Feb 1996 14:30:12 OS
+ ExecStyleSheet: ReturnValue immer am Request setzen
+
+ Rev 1.67 12 Jan 1996 19:39:24 JP
+ ExecStyleSheet: Mask wird vom SFX mit gegeben, Edit und NewByExample wollen es haben
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/app/docstyle.cxx b/sw/source/ui/app/docstyle.cxx
new file mode 100644
index 000000000000..6c0b33bc7e03
--- /dev/null
+++ b/sw/source/ui/app/docstyle.cxx
@@ -0,0 +1,2782 @@
+/*************************************************************************
+ *
+ * $RCSfile: docstyle.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define _SVSTDARR_USHORTS
+
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SFXITEMITER_HXX
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_NUMITEM_HXX //autogen
+#include <svx/numitem.hxx>
+#endif
+
+#ifndef _FMTCOL_HXX //autogen
+#include <fmtcol.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+#ifndef _CHARFMT_HXX
+#include <charfmt.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _DOCSTYLE_HXX
+#include <docstyle.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _CCOLL_HXX
+#include <ccoll.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _HINTS_HXX
+#include <hints.hxx>
+#endif
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+#ifndef _UIITEMS_HXX
+#include <uiitems.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _SWSTYLE_H
+#include <swstyle.h>
+#endif
+#ifndef _APP_HRC
+#include <app.hrc>
+#endif
+
+
+// MD 06.02.95: Die Formatnamen in der Liste aller Namen haben als
+// erstes Zeichen die Familie:
+
+#define cCHAR (sal_Unicode)'c'
+#define cPARA (sal_Unicode)'p'
+#define cFRAME (sal_Unicode)'f'
+#define cPAGE (sal_Unicode)'g'
+#define cNUMRULE (sal_Unicode)'n'
+
+// Dieses Zeichen wird bei der Herausgabe der Namen wieder entfernt und
+// die Familie wird neu generiert.
+
+// Ausserdem gibt es jetzt zusaetzlich das Bit bPhysical. Ist dieses Bit
+// TRUE, werden die Pool-Formatnamen NICHT mit eingetragen.
+
+
+class SwImplShellAction
+{
+ SwWrtShell* pSh;
+ CurrShell* pCurrSh;
+public:
+ SwImplShellAction( SwDoc& rDoc );
+ ~SwImplShellAction();
+
+ SwWrtShell* GetSh() { return pSh; }
+};
+
+SwImplShellAction::SwImplShellAction( SwDoc& rDoc )
+ : pCurrSh( 0 )
+{
+ if( rDoc.GetDocShell() )
+ pSh = rDoc.GetDocShell()->GetWrtShell();
+ else
+ pSh = 0;
+
+ if( pSh )
+ {
+ pCurrSh = new CurrShell( pSh );
+ pSh->StartAllAction();
+ }
+}
+
+SwImplShellAction::~SwImplShellAction()
+{
+ if( pCurrSh )
+ {
+ pSh->EndAllAction();
+ delete pCurrSh;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: SwCharFormate finden/anlegen
+ evtl. Style fuellen
+ --------------------------------------------------------------------*/
+
+SwCharFmt* lcl_FindCharFmt( SwDoc& rDoc,
+ const String& rName,
+ SwDocStyleSheet* pStyle = 0,
+ FASTBOOL bCreate = TRUE )
+{
+ SwCharFmt* pFmt = 0;
+ if( rName.Len() )
+ {
+ pFmt = rDoc.FindCharFmtByName( rName );
+ if( !pFmt && rName == *rDoc.GetTextNmArray()[ RES_POOLCOLL_STANDARD -
+ RES_POOLCOLL_TEXT_BEGIN ] )
+ {
+ // Standard-Zeichenvorlage
+ pFmt = (SwCharFmt*)rDoc.GetDfltCharFmt();
+ }
+
+ if( !pFmt && bCreate )
+ { // Pool abklappern
+ const USHORT nId = rDoc.GetPoolId(rName, GET_POOLID_CHRFMT);
+ if(nId != USHRT_MAX)
+ pFmt = rDoc.GetCharFmtFromPool(nId);
+ }
+ }
+ if(pStyle)
+ {
+ if(pFmt)
+ {
+ pStyle->SetPhysical(TRUE);
+ SwFmt* p = pFmt->DerivedFrom();
+ if( p && !p->IsDefault() )
+ pStyle->PresetParent( p->GetName() );
+ else
+ pStyle->PresetParent( aEmptyStr );
+ }
+ else
+ pStyle->SetPhysical(FALSE);
+ }
+ return pFmt;
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: ParaFormate finden/erzeugen
+ Style fuellen
+ --------------------------------------------------------------------*/
+
+SwTxtFmtColl* lcl_FindParaFmt( SwDoc& rDoc,
+ const String& rName,
+ SwDocStyleSheet* pStyle = 0,
+ FASTBOOL bCreate = TRUE )
+{
+ SwTxtFmtColl* pColl = 0;
+
+ if( rName.Len() )
+ {
+ pColl = rDoc.FindTxtFmtCollByName( rName );
+ if( !pColl && bCreate )
+ { // Pool abklappern
+ const USHORT nId = rDoc.GetPoolId(rName, GET_POOLID_TXTCOLL);
+ if(nId != USHRT_MAX)
+ pColl = rDoc.GetTxtCollFromPool(nId);
+ }
+ }
+
+ if(pStyle)
+ {
+ if(pColl)
+ {
+ pStyle->SetPhysical(TRUE);
+ if( pColl->DerivedFrom() && !pColl->DerivedFrom()->IsDefault() )
+ pStyle->PresetParent( pColl->DerivedFrom()->GetName() );
+ else
+ pStyle->PresetParent( aEmptyStr );
+
+ SwTxtFmtColl& rNext = pColl->GetNextTxtFmtColl();
+ pStyle->PresetFollow(rNext.GetName());
+ }
+ else
+ pStyle->SetPhysical(FALSE);
+ }
+ return pColl;
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Rahmenformate
+ --------------------------------------------------------------------*/
+
+
+SwFrmFmt* lcl_FindFrmFmt( SwDoc& rDoc,
+ const String& rName,
+ SwDocStyleSheet* pStyle = 0,
+ FASTBOOL bCreate = TRUE )
+{
+ SwFrmFmt* pFmt = 0;
+ if( rName.Len() )
+ {
+ pFmt = rDoc.FindFrmFmtByName( rName );
+ if( !pFmt && bCreate )
+ { // Pool abklappern
+ const USHORT nId = rDoc.GetPoolId(rName, GET_POOLID_FRMFMT);
+ if(nId != USHRT_MAX)
+ pFmt = rDoc.GetFrmFmtFromPool(nId);
+ }
+ }
+
+ if(pStyle)
+ {
+ if(pFmt)
+ {
+ pStyle->SetPhysical(TRUE);
+ if( pFmt->DerivedFrom() && !pFmt->DerivedFrom()->IsDefault() )
+ pStyle->PresetParent( pFmt->DerivedFrom()->GetName() );
+ else
+ pStyle->PresetParent( aEmptyStr );
+ }
+ else
+ pStyle->SetPhysical(FALSE);
+ }
+ return pFmt;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Seitendescriptoren
+ --------------------------------------------------------------------*/
+
+
+const SwPageDesc* lcl_FindPageDesc( SwDoc& rDoc,
+ const String& rName,
+ SwDocStyleSheet* pStyle = 0,
+ FASTBOOL bCreate = TRUE )
+{
+ const SwPageDesc* pDesc = 0;
+
+ if( rName.Len() )
+ {
+ pDesc = rDoc.FindPageDescByName( rName );
+ if( !pDesc && bCreate )
+ {
+ USHORT nId = rDoc.GetPoolId(rName, GET_POOLID_PAGEDESC);
+ if(nId != USHRT_MAX)
+ pDesc = rDoc.GetPageDescFromPool(nId);
+ }
+ }
+
+ if(pStyle)
+ {
+ if(pDesc)
+ {
+ pStyle->SetPhysical(TRUE);
+ if(pDesc->GetFollow())
+ pStyle->PresetFollow(pDesc->GetFollow()->GetName());
+ else
+ pStyle->PresetParent( aEmptyStr );
+ }
+ else
+ pStyle->SetPhysical(FALSE);
+ }
+ return pDesc;
+}
+
+const SwNumRule* lcl_FindNumRule( SwDoc& rDoc,
+ const String& rName,
+ SwDocStyleSheet* pStyle = 0,
+ FASTBOOL bCreate = TRUE )
+{
+ const SwNumRule* pRule = 0;
+
+ if( rName.Len() )
+ {
+ pRule = rDoc.FindNumRulePtr( rName );
+ if( !pRule && bCreate )
+ {
+ USHORT nId = rDoc.GetPoolId(rName, GET_POOLID_NUMRULE);
+ if(nId != USHRT_MAX)
+ pRule = rDoc.GetNumRuleFromPool(nId);
+ }
+ }
+
+ if(pStyle)
+ {
+ if(pRule)
+ {
+ pStyle->SetPhysical(TRUE);
+ pStyle->PresetParent( aEmptyStr );
+ }
+ else
+ pStyle->SetPhysical(FALSE);
+ }
+ return pRule;
+}
+
+
+USHORT lcl_FindName( const SwPoolFmtList& rLst, SfxStyleFamily eFam,
+ const String& rName )
+{
+ if( rLst.Count() )
+ {
+ // suchen
+ String sSrch( ' ' );
+ switch( eFam )
+ {
+ case SFX_STYLE_FAMILY_CHAR: sSrch = cCHAR; break;
+ case SFX_STYLE_FAMILY_PARA: sSrch = cPARA; break;
+ case SFX_STYLE_FAMILY_FRAME: sSrch = cFRAME; break;
+ case SFX_STYLE_FAMILY_PAGE: sSrch = cPAGE; break;
+ case SFX_STYLE_FAMILY_PSEUDO: sSrch = cNUMRULE; break;
+ }
+ sSrch += rName;
+ for( USHORT i=0; i < rLst.Count(); ++i )
+ if( *rLst[i] == sSrch )
+ return i;
+ }
+ return USHRT_MAX;
+}
+
+FASTBOOL FindPhyStyle( SwDoc& rDoc, const String& rName, SfxStyleFamily eFam )
+{
+ switch( eFam )
+ {
+ case SFX_STYLE_FAMILY_CHAR :
+ return 0 != lcl_FindCharFmt( rDoc, rName, 0, FALSE );
+ case SFX_STYLE_FAMILY_PARA :
+ return 0 != lcl_FindParaFmt( rDoc, rName, 0, FALSE );
+ case SFX_STYLE_FAMILY_FRAME:
+ return 0 != lcl_FindFrmFmt( rDoc, rName, 0, FALSE );
+ case SFX_STYLE_FAMILY_PAGE :
+ return 0 != lcl_FindPageDesc( rDoc, rName, 0, FALSE );
+ case SFX_STYLE_FAMILY_PSEUDO:
+ return 0 != lcl_FindNumRule( rDoc, rName, 0, FALSE );
+ }
+ return FALSE;
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Einfuegen von Strings in die Liste der Vorlagen
+ --------------------------------------------------------------------*/
+
+
+void SwPoolFmtList::Append( char cChar, const String& rStr )
+{
+ String* pStr = new String( cChar );
+ *pStr += rStr;
+ for ( USHORT i=0; i < Count(); ++i )
+ {
+ if( *operator[](i) == *pStr )
+ {
+ delete pStr;
+ return;
+ }
+ }
+ Insert( pStr, Count() );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Liste kompletti loeschen
+ --------------------------------------------------------------------*/
+
+
+void SwPoolFmtList::Erase()
+{
+ DeleteAndDestroy( 0, Count() );
+}
+
+/* */
+
+/*--------------------------------------------------------------------
+ Beschreibung: UI-seitige implementierung von StyleSheets
+ greift auf die Core-Engine zu
+ --------------------------------------------------------------------*/
+
+SwDocStyleSheet::SwDocStyleSheet( SwDoc& rDocument,
+ const String& rName,
+ SwDocStyleSheetPool& rPool,
+ SfxStyleFamily eFam,
+ USHORT nMask) :
+
+ SfxStyleSheetBase( rName, rPool, eFam, nMask ),
+ rDoc(rDocument),
+ pCharFmt(0),
+ pFrmFmt(0),
+ pColl(0),
+ pDesc(0),
+ pNumRule(0),
+ bPhysical(FALSE),
+ aCoreSet(GetPool().GetPool(),
+ RES_CHRATR_BEGIN, RES_CHRATR_END - 1,
+ RES_PARATR_BEGIN, RES_PARATR_END - 1,
+ RES_FRMATR_BEGIN, RES_FRMATR_END - 1,
+ SID_ATTR_PAGE, SID_ATTR_PAGE_EXT1,
+ SID_ATTR_PAGE_HEADERSET,SID_ATTR_PAGE_FOOTERSET,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
+ FN_PARAM_FTN_INFO, FN_PARAM_FTN_INFO,
+ SID_ATTR_PARA_MODEL, SID_ATTR_PARA_MODEL,
+ SID_ATTR_PARA_PAGENUM, SID_ATTR_PARA_PAGENUM,
+ SID_SWREGISTER_MODE, SID_SWREGISTER_COLLECTION,
+ FN_COND_COLL, FN_COND_COLL,
+ SID_ATTR_AUTO_STYLE_UPDATE, SID_ATTR_AUTO_STYLE_UPDATE,
+ SID_ATTR_NUMBERING_RULE, SID_ATTR_NUMBERING_RULE,
+ SID_PARA_BACKGRND_DESTINATION, SID_ATTR_BRUSH_CHAR,
+ SID_ATTR_NUMBERING_RULE, SID_ATTR_NUMBERING_RULE,
+ 0)
+{
+ nHelpId = UCHAR_MAX;
+}
+
+
+SwDocStyleSheet::SwDocStyleSheet( const SwDocStyleSheet& rOrg) :
+ SfxStyleSheetBase(rOrg),
+ pCharFmt(rOrg.pCharFmt),
+ pFrmFmt(rOrg.pFrmFmt),
+ pColl(rOrg.pColl),
+ pDesc(rOrg.pDesc),
+ pNumRule(rOrg.pNumRule),
+ rDoc(rOrg.rDoc),
+ bPhysical(rOrg.bPhysical),
+ aCoreSet(rOrg.aCoreSet)
+{
+}
+
+
+ SwDocStyleSheet::~SwDocStyleSheet()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Zuruecksetzen
+ --------------------------------------------------------------------*/
+
+
+void SwDocStyleSheet::Reset()
+{
+ aName.Erase();
+ aFollow.Erase();
+ aParent.Erase();
+ SetPhysical(FALSE);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: virtuelle Methoden
+ --------------------------------------------------------------------*/
+
+
+const String& SwDocStyleSheet::GetParent() const
+{
+ if( !bPhysical )
+ {
+ // dann pruefe, ob schon im Doc vorhanden
+ SwFmt* pFmt = 0;
+ SwGetPoolIdFromName eGetType;
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_CHAR:
+ pFmt = rDoc.FindCharFmtByName( aName );
+ eGetType = GET_POOLID_CHRFMT;
+ break;
+
+ case SFX_STYLE_FAMILY_PARA:
+ pFmt = rDoc.FindTxtFmtCollByName( aName );
+ eGetType = GET_POOLID_TXTCOLL;
+ break;
+
+ case SFX_STYLE_FAMILY_FRAME:
+ pFmt = rDoc.FindFrmFmtByName( aName );
+ eGetType = GET_POOLID_FRMFMT;
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE:
+ case SFX_STYLE_FAMILY_PSEUDO:
+ default:
+ return aEmptyStr; // es gibt keinen Parent
+ }
+
+ String sTmp;
+ if( !pFmt ) // noch nicht vorhanden, also dflt. Parent
+ {
+ USHORT i = rDoc.GetPoolId( aName, eGetType );
+ i = ::GetPoolParent( i );
+ if( i && USHRT_MAX != i )
+ SwDoc::GetPoolNm( i, sTmp );
+ }
+ else
+ {
+ SwFmt* p = pFmt->DerivedFrom();
+ if( p && !p->IsDefault() )
+ sTmp = p->GetName();
+ }
+ SwDocStyleSheet* pThis = (SwDocStyleSheet*)this;
+ pThis->aParent = sTmp;
+ }
+ return aParent;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Nachfolger
+ --------------------------------------------------------------------*/
+
+
+const String& SwDocStyleSheet::GetFollow() const
+{
+ if( !bPhysical )
+ {
+ SwDocStyleSheet* pThis = (SwDocStyleSheet*)this;
+ pThis->FillStyleSheet( FillAllInfo );
+ }
+ return aFollow;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Welche Verkettung ist moeglich
+ --------------------------------------------------------------------*/
+
+
+BOOL SwDocStyleSheet::HasFollowSupport() const
+{
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_PARA :
+ case SFX_STYLE_FAMILY_PAGE : return TRUE;
+ case SFX_STYLE_FAMILY_FRAME:
+ case SFX_STYLE_FAMILY_CHAR :
+ case SFX_STYLE_FAMILY_PSEUDO: return FALSE;
+ default:
+ ASSERT(!this, "unbekannte Style-Familie");
+ }
+ return FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Parent ?
+ --------------------------------------------------------------------*/
+
+
+BOOL SwDocStyleSheet::HasParentSupport() const
+{
+ BOOL bRet = FALSE;
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_CHAR :
+ case SFX_STYLE_FAMILY_PARA :
+ case SFX_STYLE_FAMILY_FRAME: bRet = TRUE;
+ }
+ return bRet;
+}
+
+
+BOOL SwDocStyleSheet::HasClearParentSupport() const
+{
+ BOOL bRet = FALSE;
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_PARA :
+ case SFX_STYLE_FAMILY_CHAR :
+ case SFX_STYLE_FAMILY_FRAME: bRet = TRUE;
+ }
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: textuelle Beschreibung ermitteln
+ --------------------------------------------------------------------*/
+String SwDocStyleSheet::GetDescription(SfxMapUnit eUnit)
+{
+ String sPlus(String::CreateFromAscii(" + "));
+ if ( SFX_STYLE_FAMILY_PAGE == nFamily )
+ {
+ if( !pSet )
+ GetItemSet();
+
+ SfxItemIter aIter( *pSet );
+ String aDesc;
+ const SfxPoolItem* pItem = aIter.FirstItem();
+
+ while ( pItem )
+ {
+ if(!IsInvalidItem(pItem))
+ switch ( pItem->Which() )
+ {
+ case RES_LR_SPACE:
+ case SID_ATTR_PAGE_SIZE:
+ case SID_ATTR_PAGE_MAXSIZE:
+ case SID_ATTR_PAGE_PAPERBIN:
+ case SID_ATTR_PAGE_APP:
+ case SID_ATTR_BORDER_INNER:
+ break;
+ default:
+ {
+ String aItemPresentation;
+ if ( !IsInvalidItem( pItem ) &&
+ rPool.GetPool().GetPresentation(
+ *pItem, SFX_ITEM_PRESENTATION_COMPLETE,
+ eUnit, aItemPresentation ) )
+ {
+ if ( aDesc.Len() && aItemPresentation.Len() )
+ aDesc += sPlus;
+ aDesc += aItemPresentation;
+ }
+ }
+ }
+ pItem = aIter.NextItem();
+ }
+ return aDesc;
+ }
+ else if ( SFX_STYLE_FAMILY_FRAME == nFamily ||
+ SFX_STYLE_FAMILY_PARA == nFamily)
+ {
+ if( !pSet )
+ GetItemSet();
+
+ SfxItemIter aIter( *pSet );
+ String aDesc;
+ const SfxPoolItem* pItem = aIter.FirstItem();
+
+ String sPageNum, sModel, sBreak;
+
+ while ( pItem )
+ {
+ if(!IsInvalidItem(pItem))
+ switch ( pItem->Which() )
+ {
+ case SID_ATTR_AUTO_STYLE_UPDATE:
+ case SID_PARA_BACKGRND_DESTINATION:
+ case RES_PAGEDESC:
+ break;
+ default:
+ {
+ String aItemPresentation;
+ if ( !IsInvalidItem( pItem ) &&
+ rPool.GetPool().GetPresentation(
+ *pItem, SFX_ITEM_PRESENTATION_COMPLETE,
+ eUnit, aItemPresentation ) )
+ {
+
+ switch ( pItem->Which() )
+ {
+ case SID_ATTR_PARA_PAGENUM:
+ sPageNum = aItemPresentation;
+ break;
+ case SID_ATTR_PARA_MODEL:
+ sModel = aItemPresentation;
+ break;
+ case RES_BREAK:
+ sBreak = aItemPresentation;
+ break;
+ default:
+ if ( aDesc.Len() && aItemPresentation.Len() )
+ aDesc += sPlus;
+ aDesc += aItemPresentation;
+ }
+ }
+ }
+ }
+ pItem = aIter.NextItem();
+ }
+ //Sonderbehandlung fuer Umburch, Seitenvorlage und Seitenoffset
+ if(sBreak.Len() && !sModel.Len()) // wemm Model. dann ist Break ungueltig
+ {
+ if(aDesc.Len())
+ aDesc += sPlus;
+ aDesc += sBreak;
+ }
+ if(sModel.Len())
+ {
+ if(aDesc.Len())
+ aDesc += sPlus;
+ aDesc += SW_RESSTR(STR_PAGEBREAK);
+ aDesc += sPlus;
+ aDesc += sModel;
+ if(sPageNum != String(UniString::CreateFromInt32(0)))
+ {
+ aDesc += sPlus;
+ aDesc += SW_RESSTR(STR_PAGEOFFSET);
+ aDesc += sPageNum;
+ }
+ }
+ return aDesc;
+ }
+ else if( SFX_STYLE_FAMILY_PSEUDO == nFamily )
+ {
+// if( pNumRule )
+// return pNumRule->GetName();
+ //os: was sollte man bei Numerierungen schon anzeigen?
+ return aEmptyStr;
+ }
+
+ return SfxStyleSheetBase::GetDescription(eUnit);
+}
+
+
+String SwDocStyleSheet::GetDescription()
+{
+ return GetDescription(SFX_MAPUNIT_CM);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Namen setzen
+ --------------------------------------------------------------------*/
+
+
+BOOL SwDocStyleSheet::SetName( const String& rStr)
+{
+ if( !rStr.Len() )
+ return FALSE;
+
+ if( aName != rStr )
+ {
+ if( !SfxStyleSheetBase::SetName( rStr ))
+ return FALSE;
+ }
+ else if(!bPhysical)
+ FillStyleSheet( FillPhysical );
+
+ int bChg = FALSE;
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_CHAR :
+ {
+ ASSERT(pCharFmt, "SwCharFormat fehlt!");
+ if( pCharFmt && pCharFmt->GetName() != rStr )
+ {
+ pCharFmt->SetName( rStr );
+ bChg = TRUE;
+ }
+ break;
+ }
+ case SFX_STYLE_FAMILY_PARA :
+ {
+ ASSERT(pColl, "Collektion fehlt!");
+ if( pColl && pColl->GetName() != rStr )
+ {
+ pColl->SetName( rStr );
+ bChg = TRUE;
+ }
+ break;
+ }
+ case SFX_STYLE_FAMILY_FRAME:
+ {
+ ASSERT(pFrmFmt, "FrmFmt fehlt!");
+ if( pFrmFmt && pFrmFmt->GetName() != rStr )
+ {
+ pFrmFmt->SetName( rStr );
+ bChg = TRUE;
+ }
+ break;
+ }
+ case SFX_STYLE_FAMILY_PAGE :
+ ASSERT(pDesc, "PageDesc fehlt!");
+ if( pDesc && pDesc->GetName() != rStr )
+ {
+ //PageDesc setzen - mit vorherigem kopieren - ist fuer das
+ //setzen des Namens wohl nicht notwendig. Deshalb erlauben
+ //wir hier mal einen cast.
+ ((SwPageDesc*)pDesc)->SetName( rStr );
+ rDoc.SetModified();
+ bChg = TRUE;
+ }
+ break;
+ case SFX_STYLE_FAMILY_PSEUDO:
+ ASSERT(pNumRule, "NumRule fehlt!");
+ if( pNumRule && pNumRule->GetName() != rStr )
+ {
+ ((SwNumRule*)pNumRule)->SetName( rStr );
+ rDoc.SetModified();
+ bChg = TRUE;
+ }
+ break;
+
+
+#ifdef DBG_UTIL
+ default:
+ ASSERT(!this, "unbekannte Style-Familie");
+#endif
+ }
+
+ if( bChg )
+ {
+ rPool.First(); // interne Liste muss geupdatet werden
+ rPool.Broadcast( SfxStyleSheetHint( SFX_STYLESHEET_MODIFIED, *this ) );
+ SwEditShell* pSh = rDoc.GetEditShell();
+ if( pSh )
+ pSh->CallChgLnk();
+ }
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ableitungshirachie
+ --------------------------------------------------------------------*/
+
+
+BOOL SwDocStyleSheet::SetParent( const String& rStr)
+{
+ SwFmt* pFmt = 0, *pParent = 0;
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_CHAR :
+ ASSERT( pCharFmt, "SwCharFormat fehlt!" )
+ if( 0 != ( pFmt = pCharFmt ) && rStr.Len() )
+ pParent = lcl_FindCharFmt(rDoc, rStr);
+ break;
+
+ case SFX_STYLE_FAMILY_PARA :
+ ASSERT( pColl, "Collektion fehlt!")
+ if( 0 != ( pFmt = pColl ) && rStr.Len() )
+ pParent = lcl_FindParaFmt( rDoc, rStr );
+ break;
+
+ case SFX_STYLE_FAMILY_FRAME:
+ ASSERT(pFrmFmt, "FrameFormat fehlt!");
+ if( 0 != ( pFmt = pFrmFmt ) && rStr.Len() )
+ pParent = lcl_FindFrmFmt( rDoc, rStr );
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE:
+ case SFX_STYLE_FAMILY_PSEUDO:
+ break;
+ default:
+ ASSERT(!this, "unbekannte Style-Familie");
+ }
+
+ BOOL bRet = FALSE;
+ if( pFmt && pFmt->DerivedFrom() &&
+ pFmt->DerivedFrom()->GetName() != rStr )
+ {
+ {
+ SwImplShellAction aTmp( rDoc );
+ bRet = pFmt->SetDerivedFrom( pParent );
+ }
+
+ if( bRet )
+ {
+ aParent = rStr;
+ rPool.Broadcast( SfxStyleSheetHint( SFX_STYLESHEET_MODIFIED,
+ *this ) );
+ }
+ }
+
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Nachfolger detzen
+ --------------------------------------------------------------------*/
+
+
+BOOL SwDocStyleSheet::SetFollow( const String& rStr)
+{
+ if( rStr.Len() && !SfxStyleSheetBase::SetFollow( rStr ))
+ return FALSE;
+
+ SwImplShellAction aTmpSh( rDoc );
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_PARA :
+ {
+ ASSERT(pColl, "Collection fehlt!");
+ if( pColl )
+ {
+ SwTxtFmtColl* pFollow = pColl;
+ if( rStr.Len() && 0 == (pFollow = lcl_FindParaFmt(rDoc, rStr) ))
+ pFollow = pColl;
+
+ pColl->SetNextTxtFmtColl(*pFollow);
+ }
+ break;
+ }
+ case SFX_STYLE_FAMILY_PAGE :
+ {
+ ASSERT(pDesc, "PageDesc fehlt!");
+ if( pDesc )
+ {
+ const SwPageDesc* pFollowDesc = rStr.Len()
+ ? lcl_FindPageDesc(rDoc, rStr)
+ : 0;
+ USHORT nId;
+ if( rDoc.FindPageDescByName( pDesc->GetName(), &nId ))
+ {
+ SwPageDesc aDesc( *pDesc );
+ aDesc.SetFollow( pFollowDesc );
+ rDoc.ChgPageDesc( nId, aDesc );
+ pDesc = &rDoc.GetPageDesc( nId );
+ }
+ }
+ break;
+ }
+ case SFX_STYLE_FAMILY_CHAR:
+ case SFX_STYLE_FAMILY_FRAME:
+ case SFX_STYLE_FAMILY_PSEUDO:
+ break;
+ default:
+ ASSERT(!this, "unbekannte Style-Familie");
+ }
+
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: ueber Name und Family, Mask den ItemSet rausholen
+ --------------------------------------------------------------------*/
+
+SfxItemSet& SwDocStyleSheet::GetItemSet()
+{
+ if(!bPhysical)
+ FillStyleSheet( FillPhysical );
+
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_CHAR:
+ {
+ ASSERT(pCharFmt, "Wo ist das SwCharFmt");
+ aCoreSet.Put(pCharFmt->GetAttrSet());
+ if(pCharFmt->DerivedFrom())
+ aCoreSet.SetParent(&pCharFmt->DerivedFrom()->GetAttrSet());
+ }
+ break;
+ case SFX_STYLE_FAMILY_PARA :
+ case SFX_STYLE_FAMILY_FRAME:
+ {
+ SvxBoxInfoItem aBoxInfo;
+ aBoxInfo.SetTable( FALSE );
+ aBoxInfo.SetDist( TRUE); // Abstandsfeld immer anzeigen
+ aBoxInfo.SetMinDist( TRUE );// Minimalgroesse in Tabellen und Absaetzen setzen
+ aBoxInfo.SetDefDist( MIN_BORDER_DIST );// Default-Abstand immer setzen
+ // Einzelne Linien koennen nur in Tabellen DontCare-Status haben
+ aBoxInfo.SetValid( VALID_DISABLE, TRUE );
+ if ( nFamily == SFX_STYLE_FAMILY_PARA )
+ {
+ ASSERT(pColl, "Wo ist die Collektion");
+ aCoreSet.Put(pColl->GetAttrSet());
+ aCoreSet.Put( aBoxInfo );
+ aCoreSet.Put(SfxBoolItem(SID_ATTR_AUTO_STYLE_UPDATE, pColl->IsAutoUpdateFmt()));
+ if(pColl->DerivedFrom())
+ aCoreSet.SetParent(&pColl->DerivedFrom()->GetAttrSet());
+ }
+ else
+ {
+ ASSERT(pFrmFmt, "Wo ist das FrmFmt");
+ aCoreSet.Put(pFrmFmt->GetAttrSet());
+ aCoreSet.Put( aBoxInfo );
+ aCoreSet.Put(SfxBoolItem(SID_ATTR_AUTO_STYLE_UPDATE, pFrmFmt->IsAutoUpdateFmt()));
+ if(pFrmFmt->DerivedFrom())
+ aCoreSet.SetParent(&pFrmFmt->DerivedFrom()->GetAttrSet());
+ }
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE :
+ {
+ ASSERT(pDesc, "Kein PageDescriptor");
+ ::PageDescToItemSet(*((SwPageDesc*)pDesc), aCoreSet);
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_PSEUDO:
+ {
+ ASSERT(pNumRule, "Keine NumRule");
+ SvxNumRule aRule = pNumRule->MakeSvxNumRule();
+ aCoreSet.Put(SvxNumBulletItem(aRule));
+ }
+ break;
+
+
+#ifdef DBG_UTIL
+ default:
+ ASSERT(!this, "unbekannte Style-Familie");
+#endif
+ }
+ // Member der Basisklasse
+ pSet = &aCoreSet;
+
+ return aCoreSet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: ItemSet setzen
+ --------------------------------------------------------------------*/
+
+
+void SwDocStyleSheet::SetItemSet(const SfxItemSet& rSet)
+{
+ // gegebenenfalls Format erst ermitteln
+ if(!bPhysical)
+ FillStyleSheet( FillPhysical );
+
+ SwImplShellAction aTmpSh( rDoc );
+
+ ASSERT( &rSet != &aCoreSet, "SetItemSet mit eigenem Set ist nicht erlaubt" );
+
+ SwFmt* pFmt = 0;
+ SwPageDesc* pNewDsc = 0;
+ USHORT nPgDscPos;
+
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_CHAR :
+ {
+ ASSERT(pCharFmt, "Wo ist das CharFormat");
+ pFmt = pCharFmt;
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_PARA :
+ {
+ ASSERT(pColl, "Wo ist die Collection");
+ const SfxPoolItem* pAutoUpdate;
+ if(SFX_ITEM_SET == rSet.GetItemState(SID_ATTR_AUTO_STYLE_UPDATE,FALSE, &pAutoUpdate ))
+ {
+ pColl->SetAutoUpdateFmt(((const SfxBoolItem*)pAutoUpdate)->GetValue());
+ }
+
+ const SwCondCollItem* pCondItem;
+ if( SFX_ITEM_SET != rSet.GetItemState( FN_COND_COLL, FALSE,
+ (const SfxPoolItem**)&pCondItem ))
+ pCondItem = 0;
+
+ if( RES_CONDTXTFMTCOLL == pColl->Which() && pCondItem )
+ {
+ SwFmt* pFindFmt;
+ const CommandStruct* pCmds = SwCondCollItem::GetCmds();
+ for(USHORT i = 0; i < COND_COMMAND_COUNT; i++)
+ {
+ SwCollCondition aCond( 0, pCmds[ i ].nCnd, pCmds[ i ].nSubCond );
+ ((SwConditionTxtFmtColl*)pColl)->RemoveCondition( aCond );
+ const String& rStyle = pCondItem->GetStyle( i );
+ if( rStyle.Len() &&
+ 0 != ( pFindFmt = lcl_FindParaFmt( rDoc, rStyle, 0, TRUE )))
+ {
+ pFindFmt->Add( &aCond );
+ ((SwConditionTxtFmtColl*)pColl)->InsertCondition( aCond );
+ }
+ }
+
+ // Document auf die neue Bedingungen updaten
+ SwCondCollCondChg aMsg( pColl );
+ pColl->Modify( &aMsg, &aMsg );
+ }
+ else if( pCondItem && !pColl->GetDepends() )
+ {
+ // keine bedingte Vorlage, dann erstmal erzeugen und
+ // alle wichtigen Werte uebernehmen
+ SwConditionTxtFmtColl* pCColl = rDoc.MakeCondTxtFmtColl(
+ pColl->GetName(), (SwTxtFmtColl*)pColl->DerivedFrom() );
+ if( pColl != &pColl->GetNextTxtFmtColl() )
+ pCColl->SetNextTxtFmtColl( pColl->GetNextTxtFmtColl() );
+
+ pCColl->SetOutlineLevel( pColl->GetOutlineLevel() );
+
+ SwTxtFmtColl* pFindFmt;
+ const CommandStruct* pCmds = SwCondCollItem::GetCmds();
+ for( USHORT i = 0; i < COND_COMMAND_COUNT; ++i )
+ {
+ const String& rStyle = pCondItem->GetStyle( i );
+ if( rStyle.Len() &&
+ 0 != ( pFindFmt = lcl_FindParaFmt( rDoc, rStyle, 0, TRUE )))
+ {
+ pCColl->InsertCondition( SwCollCondition( pFindFmt,
+ pCmds[ i ].nCnd, pCmds[ i ].nSubCond ) );
+ }
+ }
+
+ rDoc.DelTxtFmtColl( pColl );
+ pColl = pCColl;
+ }
+ pFmt = pColl;
+
+ USHORT nId = pColl->GetPoolFmtId() &
+ ~ ( COLL_GET_RANGE_BITS | POOLGRP_NOCOLLID );
+ switch( GetMask() & ( 0x0fff & ~SWSTYLEBIT_CONDCOLL ) )
+ {
+ case SWSTYLEBIT_TEXT:
+ nId |= COLL_TEXT_BITS;
+ break;
+ case SWSTYLEBIT_CHAPTER:
+ nId |= COLL_DOC_BITS;
+ break;
+ case SWSTYLEBIT_LIST:
+ nId |= COLL_LISTS_BITS;
+ break;
+ case SWSTYLEBIT_IDX:
+ nId |= COLL_REGISTER_BITS;
+ break;
+ case SWSTYLEBIT_EXTRA:
+ nId |= COLL_EXTRA_BITS;
+ break;
+ case SWSTYLEBIT_HTML:
+ nId |= COLL_HTML_BITS;
+ break;
+ }
+ pColl->SetPoolFmtId( nId );
+ break;
+ }
+ case SFX_STYLE_FAMILY_FRAME:
+ {
+ ASSERT(pFrmFmt, "Wo ist das FrmFmt");
+ const SfxPoolItem* pAutoUpdate;
+ if(SFX_ITEM_SET == rSet.GetItemState(SID_ATTR_AUTO_STYLE_UPDATE,FALSE, &pAutoUpdate ))
+ {
+ pFrmFmt->SetAutoUpdateFmt(((const SfxBoolItem*)pAutoUpdate)->GetValue());
+ }
+ pFmt = pFrmFmt;
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE :
+ {
+ ASSERT(pDesc, "Wo ist der PageDescriptor");
+
+ if( rDoc.FindPageDescByName( pDesc->GetName(), &nPgDscPos ))
+ {
+ pNewDsc = new SwPageDesc( *pDesc );
+ pFmt = &pNewDsc->GetMaster();
+ }
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_PSEUDO:
+ {
+ ASSERT(pNumRule, "Wo ist die NumRule");
+ const SfxPoolItem* pItem;
+ switch( rSet.GetItemState( SID_ATTR_NUMBERING_RULE, FALSE, &pItem ))
+ {
+ case SFX_ITEM_SET:
+ {
+ SvxNumRule* pSetRule = ((SvxNumBulletItem*)pItem)->GetNumRule();
+ pSetRule->UnLinkGraphics();
+ //SwNumRule aSetRule(rDoc.GetUniqueNumRuleName());
+ SwNumRule aSetRule(pNumRule->GetName());
+ aSetRule.SetSvxRule(*pSetRule, &rDoc);
+ rDoc.ChgNumRuleFmts( aSetRule );
+ }
+ break;
+ case SFX_ITEM_DONTCARE:
+ // NumRule auf default Werte
+ // was sind die default Werte?
+ {
+ SwNumRule aRule( pNumRule->GetName() );
+ rDoc.ChgNumRuleFmts( aRule );
+ }
+ break;
+ }
+ }
+ break;
+
+#ifdef DBG_UTIL
+ default:
+ ASSERT(!this, "unbekannte Style-Familie");
+#endif
+ }
+
+ if( pFmt && rSet.Count())
+ {
+ SfxItemIter aIter( rSet );
+ const SfxPoolItem* pItem = aIter.GetCurItem();
+ while( TRUE )
+ {
+ if( IsInvalidItem( pItem ) ) // Clearen
+ pFmt->ResetAttr( rSet.GetWhichByPos(aIter.GetCurPos()));
+
+ if( aIter.IsAtEnd() )
+ break;
+ pItem = aIter.NextItem();
+ }
+ SfxItemSet aSet(rSet);
+ aSet.ClearInvalidItems();
+
+ aCoreSet.ClearItem();
+
+ if( pNewDsc )
+ {
+ ::ItemSetToPageDesc( aSet, *pNewDsc,
+ ::GetActiveWrtShell());
+ rDoc.ChgPageDesc( nPgDscPos, *pNewDsc );
+ pDesc = &rDoc.GetPageDesc( nPgDscPos );
+ delete pNewDsc;
+ }
+ else
+ pFmt->SetAttr( aSet ); // alles gesetzten Putten
+ }
+ else
+ {
+ aCoreSet.ClearItem();
+ if( pNewDsc ) // den muessen wir noch vernichten!!
+ delete pNewDsc;
+ }
+}
+
+void lcl_SaveStyles( USHORT nFamily, SvPtrarr& rArr, SwDoc& rDoc )
+{
+ switch( nFamily )
+ {
+ case SFX_STYLE_FAMILY_CHAR:
+ {
+ const SwCharFmts& rTbl = *rDoc.GetCharFmts();
+ for( sal_uInt16 n = 0, nCnt = rTbl.Count(); n < nCnt; ++n )
+ {
+ void* p = (void*)rTbl[ n ];
+ rArr.Insert( p, n );
+ }
+ }
+ break;
+ case SFX_STYLE_FAMILY_PARA:
+ {
+ const SwTxtFmtColls& rTbl = *rDoc.GetTxtFmtColls();
+ for( sal_uInt16 n = 0, nCnt = rTbl.Count(); n < nCnt; ++n )
+ {
+ void* p = (void*)rTbl[ n ];
+ rArr.Insert( p, n );
+ }
+ }
+ break;
+ case SFX_STYLE_FAMILY_FRAME:
+ {
+ const SwFrmFmts& rTbl = *rDoc.GetFrmFmts();
+ for( sal_uInt16 n = 0, nCnt = rTbl.Count(); n < nCnt; ++n )
+ {
+ void* p = (void*)rTbl[ n ];
+ rArr.Insert( p, n );
+ }
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE:
+ {
+ for( sal_uInt16 n = 0, nCnt = rDoc.GetPageDescCnt(); n < nCnt; ++n )
+ {
+ void* p = (void*)&rDoc.GetPageDesc( n );
+ rArr.Insert( p, n );
+ }
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_PSEUDO:
+ {
+ const SwNumRuleTbl& rTbl = rDoc.GetNumRuleTbl();
+ for( sal_uInt16 n = 0, nCnt = rTbl.Count(); n < nCnt; ++n )
+ {
+ void* p = (void*)rTbl[ n ];
+ rArr.Insert( p, n );
+ }
+ }
+ break;
+ }
+}
+
+void lcl_DeleteInfoStyles( USHORT nFamily, SvPtrarr& rArr, SwDoc& rDoc )
+{
+ sal_uInt16 n, nCnt;
+ switch( nFamily )
+ {
+ case SFX_STYLE_FAMILY_CHAR:
+ {
+ SvUShorts aDelArr;
+ const SwCharFmts& rTbl = *rDoc.GetCharFmts();
+ for( sal_uInt16 n = 0, nCnt = rTbl.Count(); n < nCnt; ++n )
+ {
+ void* p = (void*)rTbl[ n ];
+ if( USHRT_MAX == rArr.GetPos( p ))
+ aDelArr.Insert( n, 0 );
+ }
+ for( n = 0, nCnt = aDelArr.Count(); n < nCnt; ++n )
+ rDoc.DelCharFmt( aDelArr[ n ] );
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_PARA :
+ {
+ SvUShorts aDelArr;
+ const SwTxtFmtColls& rTbl = *rDoc.GetTxtFmtColls();
+ for( sal_uInt16 n = 0, nCnt = rTbl.Count(); n < nCnt; ++n )
+ {
+ void* p = (void*)rTbl[ n ];
+ if( USHRT_MAX == rArr.GetPos( p ))
+ aDelArr.Insert( n, 0 );
+ }
+ for( n = 0, nCnt = aDelArr.Count(); n < nCnt; ++n )
+ rDoc.DelTxtFmtColl( aDelArr[ n ] );
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_FRAME:
+ {
+ SvPtrarr aDelArr;
+ const SwFrmFmts& rTbl = *rDoc.GetFrmFmts();
+ for( sal_uInt16 n = 0, nCnt = rTbl.Count(); n < nCnt; ++n )
+ {
+ void* p = (void*)rTbl[ n ];
+ if( USHRT_MAX == rArr.GetPos( p ))
+ aDelArr.Insert( p, 0 );
+ }
+ for( n = 0, nCnt = aDelArr.Count(); n < nCnt; ++n )
+ rDoc.DelFrmFmt( (SwFrmFmt*)aDelArr[ n ] );
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE:
+ {
+ SvUShorts aDelArr;
+ for( n = 0, nCnt = rDoc.GetPageDescCnt(); n < nCnt; ++n )
+ {
+ void* p = (void*)&rDoc.GetPageDesc( n );
+ if( USHRT_MAX == rArr.GetPos( p ))
+ aDelArr.Insert( n, 0 );
+ }
+ for( n = 0, nCnt = aDelArr.Count(); n < nCnt; ++n )
+ rDoc.DelPageDesc( aDelArr[ n ] );
+ }
+ break;
+
+
+ case SFX_STYLE_FAMILY_PSEUDO:
+ {
+ SvPtrarr aDelArr;
+ const SwNumRuleTbl& rTbl = rDoc.GetNumRuleTbl();
+ for( n = 0, nCnt = rTbl.Count(); n < nCnt; ++n )
+ {
+ void* p = (void*)rTbl[ n ];
+ if( USHRT_MAX == rArr.GetPos( p ))
+ aDelArr.Insert( p, 0 );
+ }
+ for( n = 0, nCnt = aDelArr.Count(); n < nCnt; ++n )
+ rDoc.DelNumRule( ((SwNumRule*)aDelArr[ n ])->GetName() );
+ }
+ break;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Das Format ermitteln
+ --------------------------------------------------------------------*/
+
+BOOL SwDocStyleSheet::FillStyleSheet( FillStyleType eFType )
+{
+ BOOL bRet = FALSE;
+ USHORT nPoolId = USHRT_MAX;
+ SwFmt* pFmt = 0;
+
+ BOOL bCreate = FillPhysical == eFType;
+ BOOL bDeleteInfo = FALSE;
+ BOOL bFillOnlyInfo = FillAllInfo == eFType;
+ SvPtrarr aDelArr;
+
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_CHAR:
+ pCharFmt = lcl_FindCharFmt(rDoc, aName, this, bCreate );
+ bPhysical = 0 != pCharFmt;
+ if( bFillOnlyInfo && !bPhysical )
+ {
+ bDeleteInfo = TRUE;
+ ::lcl_SaveStyles( nFamily, aDelArr, rDoc );
+ pCharFmt = lcl_FindCharFmt(rDoc, aName, this, TRUE );
+ }
+
+ pFmt = pCharFmt;
+ if( !bCreate && !pFmt )
+ {
+ if( aName == *rDoc.GetTextNmArray()[ RES_POOLCOLL_STANDARD -
+ RES_POOLCOLL_TEXT_BEGIN ] )
+ nPoolId = 0;
+ else
+ nPoolId = rDoc.GetPoolId( aName, GET_POOLID_CHRFMT );
+ }
+
+ bRet = 0 != pCharFmt || USHRT_MAX != nPoolId;
+
+ if( bDeleteInfo )
+ pCharFmt = 0;
+ break;
+
+ case SFX_STYLE_FAMILY_PARA:
+ {
+ pColl = lcl_FindParaFmt(rDoc, aName, this, bCreate);
+ bPhysical = 0 != pColl;
+ if( bFillOnlyInfo && !bPhysical )
+ {
+ bDeleteInfo = TRUE;
+ ::lcl_SaveStyles( nFamily, aDelArr, rDoc );
+ pColl = lcl_FindParaFmt(rDoc, aName, this, TRUE );
+ }
+
+ pFmt = pColl;
+ if( pColl )
+ PresetFollow( pColl->GetNextTxtFmtColl().GetName() );
+ else if( !bCreate )
+ nPoolId = rDoc.GetPoolId( aName, GET_POOLID_TXTCOLL );
+
+ bRet = 0 != pColl || USHRT_MAX != nPoolId;
+
+ if( bDeleteInfo )
+ pColl = 0;
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_FRAME:
+ pFrmFmt = lcl_FindFrmFmt(rDoc, aName, this, bCreate);
+ bPhysical = 0 != pFrmFmt;
+ if( bFillOnlyInfo && bPhysical )
+ {
+ bDeleteInfo = TRUE;
+ ::lcl_SaveStyles( nFamily, aDelArr, rDoc );
+ pFrmFmt = lcl_FindFrmFmt(rDoc, aName, this, TRUE );
+ }
+ pFmt = pFrmFmt;
+ if( !bCreate && !pFmt )
+ nPoolId = rDoc.GetPoolId( aName, GET_POOLID_FRMFMT );
+
+ bRet = 0 != pFrmFmt || USHRT_MAX != nPoolId;
+
+ if( bDeleteInfo )
+ pFrmFmt = 0;
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE:
+ pDesc = lcl_FindPageDesc(rDoc, aName, this, bCreate);
+ bPhysical = 0 != pDesc;
+ if( bFillOnlyInfo && !pDesc )
+ {
+ bDeleteInfo = TRUE;
+ ::lcl_SaveStyles( nFamily, aDelArr, rDoc );
+ pDesc = lcl_FindPageDesc( rDoc, aName, this, TRUE );
+ }
+
+ if( pDesc )
+ {
+ nPoolId = pDesc->GetPoolFmtId();
+ nHelpId = pDesc->GetPoolHelpId();
+ if( pDesc->GetPoolHlpFileId() != UCHAR_MAX )
+ aHelpFile = *rDoc.GetDocPattern( pDesc->GetPoolHlpFileId() );
+ else
+ aHelpFile.Erase();
+ }
+ else if( !bCreate )
+ nPoolId = rDoc.GetPoolId( aName, GET_POOLID_PAGEDESC );
+ SetMask( USER_FMT & nPoolId ? SFXSTYLEBIT_USERDEF : 0 );
+
+ bRet = 0 != pDesc || USHRT_MAX != nPoolId;
+ if( bDeleteInfo )
+ pDesc = 0;
+ break;
+
+ case SFX_STYLE_FAMILY_PSEUDO:
+ pNumRule = lcl_FindNumRule(rDoc, aName, this, bCreate);
+ bPhysical = 0 != pNumRule;
+ if( bFillOnlyInfo && !pNumRule )
+ {
+ bDeleteInfo = TRUE;
+ ::lcl_SaveStyles( nFamily, aDelArr, rDoc );
+ pNumRule = lcl_FindNumRule( rDoc, aName, this, TRUE );
+ }
+
+ if( pNumRule )
+ {
+ nPoolId = pNumRule->GetPoolFmtId();
+ nHelpId = pNumRule->GetPoolHelpId();
+ if( pNumRule->GetPoolHlpFileId() != UCHAR_MAX )
+ aHelpFile = *rDoc.GetDocPattern( pNumRule->GetPoolHlpFileId() );
+ else
+ aHelpFile.Erase();
+ }
+ else if( !bCreate )
+ nPoolId = rDoc.GetPoolId( aName, GET_POOLID_NUMRULE );
+ SetMask( USER_FMT & nPoolId ? SFXSTYLEBIT_USERDEF : 0 );
+
+ bRet = 0 != pNumRule || USHRT_MAX != nPoolId;
+
+ if( bDeleteInfo )
+ pNumRule = 0;
+ break;
+ }
+
+ if( SFX_STYLE_FAMILY_CHAR == nFamily ||
+ SFX_STYLE_FAMILY_PARA == nFamily ||
+ SFX_STYLE_FAMILY_FRAME == nFamily )
+ {
+ if( pFmt )
+ nPoolId = pFmt->GetPoolFmtId();
+
+ USHORT nMask = 0;
+ if( pFmt == rDoc.GetDfltCharFmt() )
+ nMask |= SFXSTYLEBIT_READONLY;
+ else if( USER_FMT & nPoolId )
+ nMask |= SFXSTYLEBIT_USERDEF;
+
+ switch ( COLL_GET_RANGE_BITS & nPoolId )
+ {
+ case COLL_TEXT_BITS: nMask |= SWSTYLEBIT_TEXT; break;
+ case COLL_DOC_BITS : nMask |= SWSTYLEBIT_CHAPTER; break;
+ case COLL_LISTS_BITS: nMask |= SWSTYLEBIT_LIST; break;
+ case COLL_REGISTER_BITS: nMask |= SWSTYLEBIT_IDX; break;
+ case COLL_EXTRA_BITS: nMask |= SWSTYLEBIT_EXTRA; break;
+ case COLL_HTML_BITS: nMask |= SWSTYLEBIT_HTML; break;
+ }
+
+ if( pFmt )
+ {
+ ASSERT( bPhysical, "Format nicht gefunden" );
+
+ nHelpId = pFmt->GetPoolHelpId();
+ if( pFmt->GetPoolHlpFileId() != UCHAR_MAX )
+ aHelpFile = *rDoc.GetDocPattern( pFmt->GetPoolHlpFileId() );
+ else
+ aHelpFile.Erase();
+
+ if( RES_CONDTXTFMTCOLL == pFmt->Which() )
+ nMask |= SWSTYLEBIT_CONDCOLL;
+ }
+
+ SetMask( nMask );
+ }
+ if( bDeleteInfo && bFillOnlyInfo )
+ ::lcl_DeleteInfoStyles( nFamily, aDelArr, rDoc );
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Neues Format in der Core anlegen
+ --------------------------------------------------------------------*/
+
+
+void SwDocStyleSheet::Create()
+{
+ switch(nFamily)
+ {
+ case SFX_STYLE_FAMILY_CHAR :
+ pCharFmt = lcl_FindCharFmt( rDoc, aName );
+ if( !pCharFmt )
+ pCharFmt = rDoc.MakeCharFmt(aName,
+ rDoc.GetDfltCharFmt());
+ pCharFmt->SetAuto( FALSE );
+ break;
+
+ case SFX_STYLE_FAMILY_PARA :
+ pColl = lcl_FindParaFmt( rDoc, aName );
+ if( !pColl )
+ {
+ SwTxtFmtColl *pPar = (*rDoc.GetTxtFmtColls())[0];
+ if( nMask & SWSTYLEBIT_CONDCOLL )
+ pColl = rDoc.MakeCondTxtFmtColl( aName, pPar );
+ else
+ pColl = rDoc.MakeTxtFmtColl( aName, pPar );
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_FRAME:
+ pFrmFmt = lcl_FindFrmFmt( rDoc, aName );
+ if( !pFrmFmt )
+ pFrmFmt = rDoc.MakeFrmFmt(aName, rDoc.GetDfltFrmFmt());
+ pFrmFmt->SetAuto( FALSE );
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE :
+ pDesc = lcl_FindPageDesc( rDoc, aName );
+ if( !pDesc )
+ {
+ USHORT nId = rDoc.MakePageDesc(aName);
+ pDesc = &rDoc.GetPageDesc(nId);
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_PSEUDO:
+ pNumRule = lcl_FindNumRule( rDoc, aName );
+ if( !pNumRule )
+ {
+ //JP 05.02.99: temp Namen erzeugen, damit kein ASSERT kommt
+ String sTmpNm( aName );
+ if( !aName.Len() )
+ sTmpNm = rDoc.GetUniqueNumRuleName();
+
+ SwNumRule* pRule = rDoc.GetNumRuleTbl()[
+ rDoc.MakeNumRule( sTmpNm ) ];
+ pRule->SetAutoRule( FALSE );
+ if( !aName.Len() )
+ pRule->SetName( aName );
+ pNumRule = pRule;
+ }
+ break;
+ }
+ bPhysical = TRUE;
+ aCoreSet.ClearItem();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Konkrete Formate rausholen
+ --------------------------------------------------------------------*/
+
+
+
+SwCharFmt* SwDocStyleSheet::GetCharFmt()
+{
+ if(!bPhysical)
+ FillStyleSheet( FillPhysical );
+ return pCharFmt;
+}
+
+
+SwTxtFmtColl* SwDocStyleSheet::GetCollection()
+{
+ if(!bPhysical)
+ FillStyleSheet( FillPhysical );
+ return pColl;
+}
+
+
+const SwPageDesc* SwDocStyleSheet::GetPageDesc()
+{
+ if(!bPhysical)
+ FillStyleSheet( FillPhysical );
+ return pDesc;
+}
+
+const SwNumRule * SwDocStyleSheet::GetNumRule()
+{
+ if(!bPhysical)
+ FillStyleSheet( FillPhysical );
+ return pNumRule;
+}
+
+void SwDocStyleSheet::SetNumRule(const SwNumRule& rRule)
+{
+ DBG_ASSERT(pNumRule, "Wo ist die NumRule")
+ rDoc.ChgNumRuleFmts( rRule );
+}
+
+// Namen UND Familie aus String re-generieren
+// First() und Next() (s.u.) fuegen einen Kennbuchstaben an Pos.1 ein
+
+void SwDocStyleSheet::PresetNameAndFamily(const String& rName)
+{
+ switch( rName.GetChar(0) )
+ {
+ case cPARA: nFamily = SFX_STYLE_FAMILY_PARA; break;
+ case cFRAME: nFamily = SFX_STYLE_FAMILY_FRAME; break;
+ case cPAGE: nFamily = SFX_STYLE_FAMILY_PAGE; break;
+ case cNUMRULE: nFamily = SFX_STYLE_FAMILY_PSEUDO; break;
+ default: nFamily = SFX_STYLE_FAMILY_CHAR; break;
+ }
+ aName = rName;
+ aName.Erase( 0, 1 );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ist das Format physikalisch schon vorhanden
+ --------------------------------------------------------------------*/
+
+
+void SwDocStyleSheet::SetPhysical(BOOL bPhys)
+{
+ bPhysical = bPhys;
+
+ if(!bPhys)
+ {
+ pCharFmt = 0;
+ pColl = 0;
+ pFrmFmt = 0;
+ pDesc = 0;
+ }
+}
+
+SwFrmFmt* SwDocStyleSheet::GetFrmFmt()
+{
+ if(!bPhysical)
+ FillStyleSheet( FillPhysical );
+ return pFrmFmt;
+}
+
+
+BOOL SwDocStyleSheet::IsUsed() const
+{
+ if( !bPhysical )
+ {
+ SwDocStyleSheet* pThis = (SwDocStyleSheet*)this;
+ pThis->FillStyleSheet( FillOnlyName );
+ }
+
+ // immer noch nicht ?
+ if( !bPhysical )
+ return FALSE;
+
+ const SwModify* pMod;
+ switch( nFamily )
+ {
+ case SFX_STYLE_FAMILY_CHAR : pMod = pCharFmt; break;
+ case SFX_STYLE_FAMILY_PARA : pMod = pColl; break;
+ case SFX_STYLE_FAMILY_FRAME: pMod = pFrmFmt; break;
+ case SFX_STYLE_FAMILY_PAGE : pMod = pDesc; break;
+
+ case SFX_STYLE_FAMILY_PSEUDO:
+ return pNumRule ? rDoc.IsUsed( *pNumRule ) : FALSE;
+
+ default:
+ ASSERT(!this, "unbekannte Style-Familie");
+ return FALSE;
+ }
+ return rDoc.IsUsed( *pMod );
+}
+
+
+ULONG SwDocStyleSheet::GetHelpId( String& rFile )
+{
+static String sTemplateHelpFile = String::CreateFromAscii("swrhlppi.hlp");
+
+ USHORT nId, nPoolId;
+ unsigned char nFileId = UCHAR_MAX;
+
+ rFile = sTemplateHelpFile;
+
+ const SwFmt* pTmpFmt = 0;
+ switch( nFamily )
+ {
+ case SFX_STYLE_FAMILY_CHAR :
+ if( !pCharFmt &&
+ 0 == (pCharFmt = lcl_FindCharFmt( rDoc, aName, 0, FALSE )) )
+ {
+ nId = rDoc.GetPoolId( aName, GET_POOLID_CHRFMT );
+ return USHRT_MAX == nId ? 0 : nId;
+ }
+ pTmpFmt = pCharFmt;
+ break;
+
+ case SFX_STYLE_FAMILY_PARA:
+ if( !pColl &&
+ 0 == ( pColl = lcl_FindParaFmt( rDoc, aName, 0, FALSE )) )
+ {
+ nId = rDoc.GetPoolId( aName, GET_POOLID_TXTCOLL );
+ return USHRT_MAX == nId ? 0 : nId;
+ }
+ pTmpFmt = pColl;
+ break;
+
+ case SFX_STYLE_FAMILY_FRAME:
+ if( !pFrmFmt &&
+ 0 == ( pFrmFmt = lcl_FindFrmFmt( rDoc, aName, 0, FALSE ) ) )
+ {
+ nId = rDoc.GetPoolId( aName, GET_POOLID_FRMFMT );
+ return USHRT_MAX == nId ? 0 : nId;
+ }
+ pTmpFmt = pFrmFmt;
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE:
+ if( !pDesc &&
+ 0 == ( pDesc = lcl_FindPageDesc( rDoc, aName, 0, FALSE ) ) )
+ {
+ nId = rDoc.GetPoolId( aName, GET_POOLID_PAGEDESC );
+ return USHRT_MAX == nId ? 0 : nId;
+ }
+
+ nId = pDesc->GetPoolHelpId();
+ nFileId = pDesc->GetPoolHlpFileId();
+ nPoolId = pDesc->GetPoolFmtId();
+ break;
+
+ case SFX_STYLE_FAMILY_PSEUDO:
+ if( !pNumRule &&
+ 0 == ( pNumRule = lcl_FindNumRule( rDoc, aName, 0, FALSE ) ) )
+ {
+ nId = rDoc.GetPoolId( aName, GET_POOLID_NUMRULE );
+ return USHRT_MAX == nId ? 0 : nId;
+ }
+
+ nId = pNumRule->GetPoolHelpId();
+ nFileId = pNumRule->GetPoolHlpFileId();
+ nPoolId = pNumRule->GetPoolFmtId();
+ break;
+
+ default:
+ ASSERT(!this, "unbekannte Style-Familie");
+ return 0;
+ }
+
+ if( pTmpFmt )
+ {
+ nId = pTmpFmt->GetPoolHelpId();
+ nFileId = pTmpFmt->GetPoolHlpFileId();
+ nPoolId = pTmpFmt->GetPoolFmtId();
+ }
+
+ if( UCHAR_MAX != nFileId )
+ {
+ const String *pTemplate = rDoc.GetDocPattern( nFileId );
+ if( pTemplate )
+ {
+// const String aHelpPath(MakeHelpPath(*pTemplate));
+ rFile = *pTemplate;
+ }
+ }
+ else if( !IsPoolUserFmt( nPoolId ) )
+ {
+ nId = nPoolId;
+ }
+
+ // weil sich der SFX so anstellt mit der HilfeId:
+ if( USHRT_MAX == nId )
+ nId = 0; // entsp. keine Hilfe anzeigen
+
+ return nId;
+}
+
+
+void SwDocStyleSheet::SetHelpId( const String& r, ULONG nId )
+{
+ BYTE nFileId = rDoc.SetDocPattern( r );
+ USHORT nHId = nId; //!! SFX hat eigenmaechtig auf ULONG umgestellt!
+
+ SwFmt* pTmpFmt = 0;
+ switch( nFamily )
+ {
+ case SFX_STYLE_FAMILY_CHAR : pTmpFmt = pCharFmt; break;
+ case SFX_STYLE_FAMILY_PARA : pTmpFmt = pColl; break;
+ case SFX_STYLE_FAMILY_FRAME: pTmpFmt = pFrmFmt; break;
+ case SFX_STYLE_FAMILY_PAGE :
+ ((SwPageDesc*)pDesc)->SetPoolHelpId( nHId );
+ ((SwPageDesc*)pDesc)->SetPoolHlpFileId( nFileId );
+ break;
+
+ case SFX_STYLE_FAMILY_PSEUDO:
+ ((SwNumRule*)pNumRule)->SetPoolHelpId( nHId );
+ ((SwNumRule*)pNumRule)->SetPoolHlpFileId( nFileId );
+ break;
+
+ default:
+ ASSERT(!this, "unbekannte Style-Familie");
+ return ;
+ }
+ if( pTmpFmt )
+ {
+ pTmpFmt->SetPoolHelpId( nHId );
+ pTmpFmt->SetPoolHlpFileId( nFileId );
+ }
+}
+
+
+/* */
+
+/*--------------------------------------------------------------------
+ Beschreibung: Methoden fuer den DocStyleSheetPool
+ --------------------------------------------------------------------*/
+
+SwDocStyleSheetPool::SwDocStyleSheetPool( SwDoc& rDocument, BOOL bOrg )
+ : SfxStyleSheetBasePool( rDocument.GetAttrPool() ),
+ aStyleSheet( rDocument, aEmptyStr, *this, SFX_STYLE_FAMILY_CHAR, 0 ),
+ rDoc( rDocument )
+{
+ bOrganizer = bOrg;
+}
+
+ SwDocStyleSheetPool::~SwDocStyleSheetPool()
+{
+}
+
+SfxStyleSheetBase& SwDocStyleSheetPool::Make(
+ const String& rName,
+ SfxStyleFamily eFam,
+ USHORT nMask,
+ USHORT nPos )
+{
+ aStyleSheet.PresetName(rName);
+ aStyleSheet.PresetParent(aEmptyStr);
+ aStyleSheet.PresetFollow(aEmptyStr);
+ aStyleSheet.SetMask(nMask) ;
+ aStyleSheet.SetFamily(eFam);
+ aStyleSheet.SetPhysical(TRUE);
+ aStyleSheet.Create();
+
+ return aStyleSheet;
+}
+
+
+SfxStyleSheetBase* SwDocStyleSheetPool::Create( const SfxStyleSheetBase& rOrg)
+{
+ ASSERT(!this , "Create im SW-Stylesheet-Pool geht nicht" );
+ return NULL;
+}
+
+
+SfxStyleSheetBase* SwDocStyleSheetPool::Create( const String &,
+ SfxStyleFamily, USHORT )
+{
+ ASSERT( !this, "Create im SW-Stylesheet-Pool geht nicht" );
+ return NULL;
+}
+
+void SwDocStyleSheetPool::Replace( SfxStyleSheetBase& rSource,
+ SfxStyleSheetBase& rTarget )
+{
+ SfxStyleFamily eFamily( rSource.GetFamily() );
+ if( rSource.HasParentSupport())
+ {
+ const String& rParentName = rSource.GetParent();
+ if( 0 != rParentName.Len() )
+ {
+ SfxStyleSheetBase* pParentOfNew = Find( rParentName, eFamily );
+ if( pParentOfNew )
+ rTarget.SetParent( rParentName );
+ }
+ }
+ if( rSource.HasFollowSupport())
+ {
+ const String& rFollowName = rSource.GetFollow();
+ if( 0 != rFollowName.Len() )
+ {
+ SfxStyleSheetBase* pFollowOfNew = Find( rFollowName, eFamily );
+ if( pFollowOfNew )
+ rTarget.SetFollow( rFollowName );
+ }
+ }
+
+ SwImplShellAction aTmpSh( rDoc );
+
+ BOOL bSwSrcPool = GetAppName() == rSource.GetPool().GetAppName();
+ if( SFX_STYLE_FAMILY_PAGE == eFamily && bSwSrcPool )
+ {
+ // gesondert behandeln!!
+ SwPageDesc* pDestDsc =
+ (SwPageDesc*)((SwDocStyleSheet&)rTarget).GetPageDesc();
+ SwPageDesc* pCpyDsc =
+ (SwPageDesc*)((SwDocStyleSheet&)rSource).GetPageDesc();
+ rDoc.CopyPageDesc( *pCpyDsc, *pDestDsc );
+ }
+ else
+ {
+ const SwFmt *pSourceFmt = 0;
+ SwFmt *pTargetFmt = 0;
+ SwPageDesc *pTargetDesc = 0;
+ USHORT nPgDscPos = USHRT_MAX;
+ switch( eFamily )
+ {
+ case SFX_STYLE_FAMILY_CHAR :
+ if( bSwSrcPool )
+ pSourceFmt = ((SwDocStyleSheet&)rSource).GetCharFmt();
+ pTargetFmt = ((SwDocStyleSheet&)rTarget).GetCharFmt();
+ break;
+ case SFX_STYLE_FAMILY_PARA :
+ if( bSwSrcPool )
+ pSourceFmt = ((SwDocStyleSheet&)rSource).GetCollection();
+ pTargetFmt = ((SwDocStyleSheet&)rTarget).GetCollection();
+ break;
+ case SFX_STYLE_FAMILY_FRAME:
+ if( bSwSrcPool )
+ pSourceFmt = ((SwDocStyleSheet&)rSource).GetFrmFmt();
+ pTargetFmt = ((SwDocStyleSheet&)rTarget).GetFrmFmt();
+ break;
+ case SFX_STYLE_FAMILY_PAGE:
+ if( bSwSrcPool )
+ pSourceFmt = &((SwDocStyleSheet&)rSource).GetPageDesc()
+ ->GetMaster();
+ {
+ SwPageDesc *pDesc = rDoc.FindPageDescByName(
+ ((SwDocStyleSheet&)rTarget).GetPageDesc()->GetName(),
+ &nPgDscPos );
+
+ if( pDesc )
+ pTargetFmt = &pDesc->GetMaster();
+ }
+ break;
+ case SFX_STYLE_FAMILY_PSEUDO:
+ // Eine NumRule besteht nur aus einem Item, also muss man
+ // hier nichts loeschen.
+ break;
+ }
+ if( pTargetFmt )
+ {
+ if( pSourceFmt )
+ pTargetFmt->DelDiffs( *pSourceFmt );
+ else if( USHRT_MAX != nPgDscPos )
+ pTargetFmt->ResetAttr( RES_PAGEDESC, RES_FRMATR_END-1 );
+ else
+ pTargetFmt->ResetAllAttr();
+
+ if( USHRT_MAX != nPgDscPos )
+ rDoc.ChgPageDesc( nPgDscPos, rDoc.GetPageDesc(nPgDscPos) );
+ }
+ ((SwDocStyleSheet&)rTarget).SetItemSet( rSource.GetItemSet() );
+ }
+}
+
+SfxStyleSheetIterator* SwDocStyleSheetPool::CreateIterator(
+ SfxStyleFamily eFam, USHORT nMask )
+{
+ return new SwStyleSheetIterator( this, eFam, nMask );
+}
+
+void SwDocStyleSheetPool::Erase( SfxStyleSheetBase* pStyle)
+{
+ if( !pStyle )
+ return;
+
+ BOOL bBroadcast = TRUE;
+ SwImplShellAction aTmpSh( rDoc );
+ const String& rName = pStyle->GetName();
+ switch( pStyle->GetFamily() )
+ {
+ case SFX_STYLE_FAMILY_CHAR:
+ {
+ SwCharFmt* pFmt = lcl_FindCharFmt(rDoc, rName, 0, FALSE );
+ if(pFmt)
+ rDoc.DelCharFmt(pFmt);
+ }
+ break;
+ case SFX_STYLE_FAMILY_PARA:
+ {
+ SwTxtFmtColl* pColl = lcl_FindParaFmt(rDoc, rName, 0, FALSE );
+ if(pColl)
+ rDoc.DelTxtFmtColl(pColl);
+ }
+ break;
+ case SFX_STYLE_FAMILY_FRAME:
+ {
+ SwFrmFmt* pFmt = lcl_FindFrmFmt(rDoc, rName, 0, FALSE );
+ if(pFmt)
+ rDoc.DelFrmFmt(pFmt);
+ }
+ break;
+ case SFX_STYLE_FAMILY_PAGE :
+ {
+ USHORT nPos;
+ if( rDoc.FindPageDescByName( rName, &nPos ))
+ rDoc.DelPageDesc( nPos );
+ }
+ break;
+
+ case SFX_STYLE_FAMILY_PSEUDO:
+ {
+ if( !rDoc.DelNumRule( rName ) )
+ // Broadcast nur versenden, wenn etwas geloescht wurde
+ bBroadcast = FALSE;
+ }
+ break;
+
+ default:
+ ASSERT(!this, "unbekannte Style-Familie");
+ bBroadcast = FALSE;
+ }
+
+ if( bBroadcast )
+ Broadcast( SfxStyleSheetHint( SFX_STYLESHEET_ERASED, *pStyle ) );
+}
+
+
+
+BOOL SwDocStyleSheetPool::SetParent( SfxStyleFamily eFam,
+ const String &rStyle, const String &rParent )
+{
+ SwFmt* pFmt = 0, *pParent = 0;
+ switch( eFam )
+ {
+ case SFX_STYLE_FAMILY_CHAR :
+ if( 0 != ( pFmt = lcl_FindCharFmt( rDoc, rStyle ) ) && rParent.Len() )
+ pParent = lcl_FindCharFmt(rDoc, rParent );
+ break;
+
+ case SFX_STYLE_FAMILY_PARA :
+ if( 0 != ( pFmt = lcl_FindParaFmt( rDoc, rStyle ) ) && rParent.Len() )
+ pParent = lcl_FindParaFmt( rDoc, rParent );
+ break;
+
+ case SFX_STYLE_FAMILY_FRAME:
+ if( 0 != ( pFmt = lcl_FindFrmFmt( rDoc, rStyle ) ) && rParent.Len() )
+ pParent = lcl_FindFrmFmt( rDoc, rParent );
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE:
+ case SFX_STYLE_FAMILY_PSEUDO:
+ break;
+
+ default:
+ ASSERT(!this, "unbekannte Style-Familie");
+ }
+
+ BOOL bRet = FALSE;
+ if( pFmt && pFmt->DerivedFrom() &&
+ pFmt->DerivedFrom()->GetName() != rParent )
+ {
+ {
+ SwImplShellAction aTmpSh( rDoc );
+ bRet = pFmt->SetDerivedFrom( pParent );
+ }
+
+ if( bRet )
+ {
+ // nur fuer das Broadcasting
+ aStyleSheet.PresetName( rStyle );
+ aStyleSheet.PresetParent( rParent );
+ if( SFX_STYLE_FAMILY_PARA == eFam )
+ aStyleSheet.PresetFollow( ((SwTxtFmtColl*)pFmt)->
+ GetNextTxtFmtColl().GetName() );
+ else
+ aStyleSheet.PresetFollow( aEmptyStr );
+
+ Broadcast( SfxStyleSheetHint( SFX_STYLESHEET_MODIFIED,
+ aStyleSheet ) );
+ }
+ }
+
+ return bRet;
+}
+
+SfxStyleSheetBase* SwDocStyleSheetPool::Find( const String& rName,
+ SfxStyleFamily eFam, USHORT n )
+{
+ USHORT nSMask = n;
+ if( SFX_STYLE_FAMILY_PARA == eFam && rDoc.IsHTMLMode() )
+ {
+ // dann sind nur HTML-Vorlagen von Interesse
+ if( USHRT_MAX == nSMask )
+ nSMask = SWSTYLEBIT_HTML | SFXSTYLEBIT_USERDEF | SFXSTYLEBIT_USED;
+ else
+ nSMask &= SFXSTYLEBIT_USED | SFXSTYLEBIT_USERDEF |
+ SWSTYLEBIT_CONDCOLL | SWSTYLEBIT_HTML;
+ if( !nSMask )
+ nSMask = SWSTYLEBIT_HTML;
+ }
+
+ const BOOL bSearchUsed = ( n != SFXSTYLEBIT_ALL &&
+ n & SFXSTYLEBIT_USED ) ? TRUE : FALSE;
+ const SwModify* pMod = 0;
+
+ aStyleSheet.SetPhysical( FALSE );
+ aStyleSheet.PresetName( rName );
+ aStyleSheet.SetFamily( eFam );
+ BOOL bFnd = aStyleSheet.FillStyleSheet( SwDocStyleSheet::FillOnlyName );
+
+ if( aStyleSheet.IsPhysical() )
+ {
+ switch( eFam )
+ {
+ case SFX_STYLE_FAMILY_CHAR:
+ pMod = aStyleSheet.GetCharFmt();
+ break;
+
+ case SFX_STYLE_FAMILY_PARA:
+ pMod = aStyleSheet.GetCollection();
+ break;
+
+ case SFX_STYLE_FAMILY_FRAME:
+ pMod = aStyleSheet.GetFrmFmt();
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE:
+ pMod = aStyleSheet.GetPageDesc();
+ break;
+
+ case SFX_STYLE_FAMILY_PSEUDO:
+ {
+ const SwNumRule* pRule = aStyleSheet.GetNumRule();
+ if( pRule &&
+ !(bSearchUsed && (bOrganizer || rDoc.IsUsed(*pRule)) ) &&
+ (( nSMask & ~SFXSTYLEBIT_USED) == SFXSTYLEBIT_USERDEF
+ ? !(pRule->GetPoolFmtId() & USER_FMT)
+ // benutzte gesucht und keine gefunden
+ : bSearchUsed ))
+ bFnd = FALSE;
+ }
+ break;
+
+ default:
+ ASSERT(!this, "unbekannte Style-Familie");
+ }
+ }
+
+ // dann noch die Maske auswerten:
+ if( pMod && !(bSearchUsed && (bOrganizer || rDoc.IsUsed(*pMod)) ) )
+ {
+ const USHORT nId = SFX_STYLE_FAMILY_PAGE == eFam
+ ? ((SwPageDesc*)pMod)->GetPoolFmtId()
+ : ((SwFmt*)pMod)->GetPoolFmtId();
+
+ if( ( nSMask & ~SFXSTYLEBIT_USED) == SFXSTYLEBIT_USERDEF
+ ? !(nId & USER_FMT)
+ // benutzte gesucht und keine gefunden
+ : bSearchUsed )
+ bFnd = FALSE;
+ }
+ return bFnd ? &aStyleSheet : 0;
+}
+
+/* */
+
+SwStyleSheetIterator::SwStyleSheetIterator( SwDocStyleSheetPool* pBase,
+ SfxStyleFamily eFam, USHORT n )
+ : SfxStyleSheetIterator( pBase, eFam, n ),
+ aIterSheet( pBase->GetDoc(), aEmptyStr, *pBase, SFX_STYLE_FAMILY_CHAR, 0 ),
+ aStyleSheet( pBase->GetDoc(), aEmptyStr, *pBase, SFX_STYLE_FAMILY_CHAR, 0 )
+{
+ bFirstCalled = FALSE;
+ nLastPos = 0;
+ StartListening( *pBase );
+}
+
+ SwStyleSheetIterator::~SwStyleSheetIterator()
+{
+ EndListening( aIterSheet.GetPool() );
+}
+
+USHORT SwStyleSheetIterator::Count()
+{
+ // Liste richtig fuellen lassen !!
+ if( !bFirstCalled )
+ First();
+ return aLst.Count();
+}
+
+SfxStyleSheetBase* SwStyleSheetIterator::operator[]( USHORT nIdx )
+{
+ // gefunden
+ if( !bFirstCalled )
+ First();
+ aStyleSheet.PresetNameAndFamily( *aLst[ nIdx ] );
+ aStyleSheet.SetPhysical( FALSE );
+ aStyleSheet.FillStyleSheet( SwDocStyleSheet::FillOnlyName );
+
+ return &aStyleSheet;
+}
+
+SfxStyleSheetBase* SwStyleSheetIterator::First()
+{
+ // Alte Liste loeschen
+ bFirstCalled = TRUE;
+ nLastPos = 0;
+ aLst.Erase();
+
+ // aktuellen loeschen
+ aIterSheet.Reset();
+
+ SwDoc& rDoc = ((SwDocStyleSheetPool*)pBasePool)->GetDoc();
+ const USHORT nSrchMask = nMask;
+ const BOOL bSearchUsed = SearchUsed();
+
+ const BOOL bOrganizer = ((SwDocStyleSheetPool*)pBasePool)->IsOrganizerMode();
+
+ if( nSearchFamily == SFX_STYLE_FAMILY_CHAR
+ || nSearchFamily == SFX_STYLE_FAMILY_ALL )
+ {
+ const USHORT nArrLen = rDoc.GetCharFmts()->Count();
+ for( USHORT i = 0; i < nArrLen; i++ )
+ {
+ SwCharFmt* pFmt = (*rDoc.GetCharFmts())[ i ];
+ if( pFmt->IsDefault() && pFmt != rDoc.GetDfltCharFmt() )
+ continue;
+
+ const BOOL bUsed = bSearchUsed && (bOrganizer || rDoc.IsUsed(*pFmt));
+ if( !bUsed )
+ {
+ // Standard ist keine Benutzervorlage #46181#
+ const USHORT nId = rDoc.GetDfltCharFmt() == pFmt ?
+ RES_POOLCHR_INET_NORMAL :
+ pFmt->GetPoolFmtId();
+ if( (nSrchMask & ~SFXSTYLEBIT_USED) == SFXSTYLEBIT_USERDEF
+ ? !(nId & USER_FMT)
+ // benutzte gesucht und keine gefunden
+ : bSearchUsed )
+ continue;
+
+ if( rDoc.IsHTMLMode() && !(nId & USER_FMT) &&
+ !( RES_POOLCHR_HTML_BEGIN <= nId &&
+ nId < RES_POOLCHR_HTML_END ) &&
+ RES_POOLCHR_INET_NORMAL != nId &&
+ RES_POOLCHR_INET_VISIT != nId &&
+ RES_POOLCHR_FOOTNOTE != nId &&
+ RES_POOLCHR_ENDNOTE != nId )
+ continue;
+ }
+
+ aLst.Append( cCHAR, pFmt == rDoc.GetDfltCharFmt()
+ ? (const String&) *rDoc.GetTextNmArray()[ RES_POOLCOLL_STANDARD -
+ RES_POOLCOLL_TEXT_BEGIN ]
+ : pFmt->GetName() );
+ }
+
+ // PoolFormate
+ //
+ if( nSrchMask == SFXSTYLEBIT_ALL )
+ {
+ if( !rDoc.IsHTMLMode() )
+ AppendStyleList(rDoc.GetChrFmtNmArray(),
+ bSearchUsed, GET_POOLID_CHRFMT, cCHAR);
+ else
+ {
+ aLst.Append( cCHAR, *rDoc.GetChrFmtNmArray()[
+ RES_POOLCHR_INET_NORMAL - RES_POOLCHR_BEGIN ] );
+ aLst.Append( cCHAR, *rDoc.GetChrFmtNmArray()[
+ RES_POOLCHR_INET_VISIT - RES_POOLCHR_BEGIN ] );
+ aLst.Append( cCHAR, *rDoc.GetChrFmtNmArray()[
+ RES_POOLCHR_ENDNOTE - RES_POOLCHR_BEGIN ] );
+ aLst.Append( cCHAR, *rDoc.GetChrFmtNmArray()[
+ RES_POOLCHR_FOOTNOTE - RES_POOLCHR_BEGIN ] );
+ }
+ AppendStyleList(rDoc.GetHTMLChrFmtNmArray(),
+ bSearchUsed, GET_POOLID_CHRFMT, cCHAR);
+ }
+ }
+
+ if( nSearchFamily == SFX_STYLE_FAMILY_PARA ||
+ nSearchFamily == SFX_STYLE_FAMILY_ALL )
+ {
+ USHORT nSMask = nSrchMask;
+ if( rDoc.IsHTMLMode() )
+ {
+ // dann sind nur HTML-Vorlagen von Interesse
+ if( USHRT_MAX == nSMask )
+ nSMask = SWSTYLEBIT_HTML | SFXSTYLEBIT_USERDEF |
+ SFXSTYLEBIT_USED;
+ else
+ nSMask &= SFXSTYLEBIT_USED | SFXSTYLEBIT_USERDEF |
+ SWSTYLEBIT_CONDCOLL | SWSTYLEBIT_HTML;
+ if( !nSMask )
+ nSMask = SWSTYLEBIT_HTML;
+ }
+
+ const USHORT nArrLen = rDoc.GetTxtFmtColls()->Count();
+ for( USHORT i = 0; i < nArrLen; i++ )
+ {
+ SwTxtFmtColl* pColl = (*rDoc.GetTxtFmtColls())[ i ];
+
+ if(pColl->IsDefault())
+ continue;
+
+ const BOOL bUsed = bOrganizer || rDoc.IsUsed(*pColl);
+ if( !(bSearchUsed && bUsed ))
+ {
+ const USHORT nId = pColl->GetPoolFmtId();
+ switch ( (nSMask & ~SFXSTYLEBIT_USED) )
+ {
+ case SFXSTYLEBIT_USERDEF:
+ if(!IsPoolUserFmt(nId)) continue;
+ break;
+ case SWSTYLEBIT_TEXT:
+ if((nId & COLL_GET_RANGE_BITS) != COLL_TEXT_BITS) continue;
+ break;
+ case SWSTYLEBIT_CHAPTER:
+ if((nId & COLL_GET_RANGE_BITS) != COLL_DOC_BITS) continue;
+ break;
+ case SWSTYLEBIT_LIST:
+ if((nId & COLL_GET_RANGE_BITS) != COLL_LISTS_BITS) continue;
+ break;
+ case SWSTYLEBIT_IDX:
+ if((nId & COLL_GET_RANGE_BITS) != COLL_REGISTER_BITS) continue;
+ break;
+ case SWSTYLEBIT_EXTRA:
+ if((nId & COLL_GET_RANGE_BITS) != COLL_EXTRA_BITS) continue;
+ break;
+
+ case SWSTYLEBIT_HTML | SFXSTYLEBIT_USERDEF:
+ if(IsPoolUserFmt(nId))
+ break;
+ // ansonten weiter
+ case SWSTYLEBIT_HTML:
+ if( (nId & COLL_GET_RANGE_BITS) != COLL_HTML_BITS)
+ {
+ // einige wollen wir aber auch in dieser Section sehen
+ BOOL bWeiter = TRUE;
+ switch( nId )
+ {
+ case RES_POOLCOLL_SENDADRESS: // --> ADDRESS
+ case RES_POOLCOLL_TABLE_HDLN: // --> TH
+ case RES_POOLCOLL_TABLE: // --> TD
+ case RES_POOLCOLL_TEXT: // --> P
+ case RES_POOLCOLL_HEADLINE_BASE:// --> H
+ case RES_POOLCOLL_HEADLINE1: // --> H1
+ case RES_POOLCOLL_HEADLINE2: // --> H2
+ case RES_POOLCOLL_HEADLINE3: // --> H3
+ case RES_POOLCOLL_HEADLINE4: // --> H4
+ case RES_POOLCOLL_HEADLINE5: // --> H5
+ case RES_POOLCOLL_HEADLINE6: // --> H6
+ case RES_POOLCOLL_STANDARD: // --> P
+ case RES_POOLCOLL_FOOTNOTE:
+ case RES_POOLCOLL_ENDNOTE:
+ bWeiter = FALSE;
+ break;
+ }
+ if( bWeiter )
+ continue;
+ }
+ break;
+ case SWSTYLEBIT_CONDCOLL:
+ if( RES_CONDTXTFMTCOLL != pColl->Which() ) continue;
+ break;
+ default:
+ // benutzte gesucht und keine gefunden
+ if( bSearchUsed )
+ continue;
+ }
+ }
+ aLst.Append( cPARA, pColl->GetName() );
+ }
+
+ const BOOL bAll = nSMask == SFXSTYLEBIT_ALL;
+ if ( bAll || (nSMask & ~SFXSTYLEBIT_USED) == SWSTYLEBIT_TEXT )
+ AppendStyleList(rDoc.GetTextNmArray(),
+ bSearchUsed, GET_POOLID_TXTCOLL, cPARA );
+ if ( bAll || (nSMask & ~SFXSTYLEBIT_USED) == SWSTYLEBIT_CHAPTER )
+ AppendStyleList(rDoc.GetDocNmArray(),
+ bSearchUsed, GET_POOLID_TXTCOLL, cPARA ) ;
+ if ( bAll || (nSMask & ~SFXSTYLEBIT_USED) == SWSTYLEBIT_LIST )
+ AppendStyleList(rDoc.GetListsNmArray(),
+ bSearchUsed, GET_POOLID_TXTCOLL, cPARA ) ;
+ if ( bAll || (nSMask & ~SFXSTYLEBIT_USED) == SWSTYLEBIT_IDX )
+ AppendStyleList(rDoc.GetRegisterNmArray(),
+ bSearchUsed, GET_POOLID_TXTCOLL, cPARA ) ;
+ if ( bAll || (nSMask & ~SFXSTYLEBIT_USED) == SWSTYLEBIT_EXTRA )
+ AppendStyleList(rDoc.GetExtraNmArray(),
+ bSearchUsed, GET_POOLID_TXTCOLL, cPARA ) ;
+ if ( bAll || (nSMask & ~SFXSTYLEBIT_USED) == SWSTYLEBIT_CONDCOLL )
+ {
+ if( !bSearchUsed ||
+ rDoc.IsPoolTxtCollUsed( RES_POOLCOLL_TEXT ))
+ aLst.Append( cPARA, *rDoc.GetTextNmArray()[
+ RES_POOLCOLL_TEXT - RES_POOLCOLL_TEXT_BEGIN ] );
+ }
+ if ( bAll ||
+ (nSMask & ~SFXSTYLEBIT_USED) == SWSTYLEBIT_HTML ||
+ (nSMask & ~SFXSTYLEBIT_USED) ==
+ (SWSTYLEBIT_HTML | SFXSTYLEBIT_USERDEF) )
+ {
+ AppendStyleList(rDoc.GetHTMLNmArray(),
+ bSearchUsed, GET_POOLID_TXTCOLL, cPARA ) ;
+ if( !bAll )
+ {
+ // dann auch die, die wir mappen:
+ static USHORT aPoolIds[] = {
+ RES_POOLCOLL_SENDADRESS, // --> ADDRESS
+ RES_POOLCOLL_TABLE_HDLN, // --> TH
+ RES_POOLCOLL_TABLE, // --> TD
+ RES_POOLCOLL_STANDARD, // --> P
+ RES_POOLCOLL_TEXT, // --> P
+ RES_POOLCOLL_HEADLINE_BASE, // --> H
+ RES_POOLCOLL_HEADLINE1, // --> H1
+ RES_POOLCOLL_HEADLINE2, // --> H2
+ RES_POOLCOLL_HEADLINE3, // --> H3
+ RES_POOLCOLL_HEADLINE4, // --> H4
+ RES_POOLCOLL_HEADLINE5, // --> H5
+ RES_POOLCOLL_HEADLINE6, // --> H6
+ RES_POOLCOLL_FOOTNOTE,
+ RES_POOLCOLL_ENDNOTE,
+ 0
+ };
+
+ USHORT* pPoolIds = aPoolIds;
+ String s;
+ while( *pPoolIds )
+ {
+ if( !bSearchUsed || rDoc.IsPoolTxtCollUsed( *pPoolIds ) )
+ aLst.Append( cPARA, rDoc.GetPoolNm( *pPoolIds, s ));
+ ++pPoolIds;
+ }
+ }
+ }
+ }
+
+ if( nSearchFamily == SFX_STYLE_FAMILY_FRAME ||
+ nSearchFamily == SFX_STYLE_FAMILY_ALL )
+ {
+ const USHORT nArrLen = rDoc.GetFrmFmts()->Count();
+ for( USHORT i = 0; i < nArrLen; i++ )
+ {
+ SwFrmFmt* pFmt = (*rDoc.GetFrmFmts())[ i ];
+ if(pFmt->IsDefault() || pFmt->IsAuto())
+ continue;
+
+ const USHORT nId = pFmt->GetPoolFmtId();
+ BOOL bUsed = bSearchUsed && ( bOrganizer || rDoc.IsUsed(*pFmt));
+ if( !bUsed )
+ {
+ if( (nSrchMask & ~SFXSTYLEBIT_USED) == SFXSTYLEBIT_USERDEF
+ ? !(nId & USER_FMT)
+ // benutzte gesucht und keine gefunden
+ : bSearchUsed )
+ continue;
+ }
+
+ aLst.Append( cFRAME, pFmt->GetName() );
+ }
+
+ // PoolFormate
+ //
+ if ( nSrchMask == SFXSTYLEBIT_ALL )
+ AppendStyleList(rDoc.GetFrmFmtNmArray(),
+ bSearchUsed, GET_POOLID_FRMFMT, cFRAME);
+ }
+
+ if( nSearchFamily == SFX_STYLE_FAMILY_PAGE ||
+ nSearchFamily == SFX_STYLE_FAMILY_ALL )
+ {
+ const USHORT nCount = rDoc.GetPageDescCnt();
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ const SwPageDesc& rDesc = rDoc.GetPageDesc(i);
+ const USHORT nId = rDesc.GetPoolFmtId();
+ BOOL bUsed = bSearchUsed && ( bOrganizer || rDoc.IsUsed(rDesc));
+ if( !bUsed )
+ {
+ if( (nSrchMask & ~SFXSTYLEBIT_USED) == SFXSTYLEBIT_USERDEF
+ ? !(nId & USER_FMT)
+ // benutzte gesucht und keine gefunden
+ : bSearchUsed )
+ continue;
+ }
+
+ aLst.Append( cPAGE, rDesc.GetName() );
+ }
+ if ( nSrchMask == SFXSTYLEBIT_ALL )
+ AppendStyleList(rDoc.GetPageDescNmArray(),
+ bSearchUsed, GET_POOLID_PAGEDESC, cPAGE);
+ }
+
+ if( nSearchFamily == SFX_STYLE_FAMILY_PSEUDO ||
+ nSearchFamily == SFX_STYLE_FAMILY_ALL )
+ {
+ const SwNumRuleTbl& rNumTbl = rDoc.GetNumRuleTbl();
+ for(USHORT i = 0; i < rNumTbl.Count(); ++i)
+ {
+ const SwNumRule& rRule = *rNumTbl[ i ];
+ if( !rRule.IsAutoRule() )
+ {
+ BOOL bUsed = bSearchUsed && ( bOrganizer || rDoc.IsUsed(rRule) );
+ if( !bUsed )
+ {
+ if( (nSrchMask & ~SFXSTYLEBIT_USED) == SFXSTYLEBIT_USERDEF
+ ? !(rRule.GetPoolFmtId() & USER_FMT)
+ // benutzte gesucht und keine gefunden
+ : bSearchUsed )
+ continue;
+ }
+
+ aLst.Append( cNUMRULE, rRule.GetName() );
+ }
+ }
+ if ( nSrchMask == SFXSTYLEBIT_ALL )
+ AppendStyleList(rDoc.GetNumRuleNmArray(),
+ bSearchUsed, GET_POOLID_NUMRULE, cNUMRULE);
+ }
+
+ if(aLst.Count() > 0)
+ {
+ nLastPos = USHRT_MAX;
+ return Next();
+ }
+ return 0;
+}
+
+SfxStyleSheetBase* SwStyleSheetIterator::Next()
+{
+ nLastPos++;
+ if(aLst.Count() > 0 && nLastPos < aLst.Count())
+ {
+ aIterSheet.PresetNameAndFamily(*aLst[nLastPos]);
+ aIterSheet.SetPhysical( FALSE );
+ aIterSheet.SetMask( nMask );
+ if(aIterSheet.pSet)
+ {
+ aIterSheet.pSet->ClearItem(0);
+ aIterSheet.pSet= 0;
+ }
+ return &aIterSheet;
+ }
+ return 0;
+}
+
+#ifndef ENABLEUNICODE
+SfxStyleSheetBase* SwStyleSheetIterator::Find( const String& rName )
+#else
+SfxStyleSheetBase* SwStyleSheetIterator::Find( const UniString& rName )
+#endif
+{
+ // suchen
+ if( !bFirstCalled )
+ First();
+
+ nLastPos = lcl_FindName( aLst, nSearchFamily, rName );
+ if( USHRT_MAX != nLastPos )
+ {
+ // gefunden
+ aStyleSheet.PresetNameAndFamily(*aLst[nLastPos]);
+ // neuer Name gesetzt, also bestimme seine Daten
+ aStyleSheet.FillStyleSheet( SwDocStyleSheet::FillOnlyName );
+ if( !aStyleSheet.IsPhysical() )
+ aStyleSheet.SetPhysical( FALSE );
+
+ return &aStyleSheet;
+ }
+ return 0;
+}
+
+void SwStyleSheetIterator::AppendStyleList(const SvStringsDtor& rList,
+ BOOL bTestUsed,
+ USHORT nSection, char cType )
+{
+ if( bTestUsed )
+ {
+ SwDoc& rDoc = ((SwDocStyleSheetPool*)pBasePool)->GetDoc();
+ for ( USHORT i=0; i < rList.Count(); ++i )
+ {
+ BOOL bUsed = FALSE;
+ USHORT nId = rDoc.GetPoolId(*rList[i], (SwGetPoolIdFromName)nSection);
+ switch ( nSection )
+ {
+ case GET_POOLID_TXTCOLL:
+ bUsed = rDoc.IsPoolTxtCollUsed( nId );
+ break;
+ case GET_POOLID_CHRFMT:
+ bUsed = rDoc.IsPoolFmtUsed( nId );
+ break;
+ case GET_POOLID_FRMFMT:
+ bUsed = rDoc.IsPoolFmtUsed( nId );
+ case GET_POOLID_PAGEDESC:
+ bUsed = rDoc.IsPoolPageDescUsed( nId );
+ break;
+ default:
+ ASSERT( !this, "unknown PoolFmt-Id" );
+ }
+ if ( bUsed )
+ aLst.Append( cType, *rList[i] );
+ }
+ }
+ else
+ for ( USHORT i=0; i < rList.Count(); ++i )
+ aLst.Append( cType, *rList[i] );
+}
+
+void SwStyleSheetIterator::Notify( SfxBroadcaster&, const SfxHint& rHint )
+{
+ // suchen und aus der Anzeige-Liste entfernen !!
+ if( rHint.ISA( SfxStyleSheetHint ) &&
+ SFX_STYLESHEET_ERASED == ((SfxStyleSheetHint&) rHint).GetHint() )
+ {
+ SfxStyleSheetBase* pStyle = ((SfxStyleSheetHint&)rHint).GetStyleSheet();
+
+ USHORT nTmpPos = lcl_FindName( aLst, pStyle->GetFamily(),
+ pStyle->GetName() );
+ if( nTmpPos < aLst.Count() )
+ aLst.DeleteAndDestroy( nTmpPos );
+ }
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.157 2000/09/18 16:05:11 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.156 2000/06/28 13:04:04 jp
+ FillStyleSheet dont create always a new Style
+
+ Revision 1.155 2000/06/14 13:01:00 jp
+ Bug #71738#: Changes on the templatename must be dispatch
+
+ Revision 1.154 2000/04/20 12:49:35 os
+ GetName() returns String&
+
+ Revision 1.153 2000/04/18 15:23:06 os
+ UNICODE
+
+ Revision 1.152 2000/04/11 08:01:31 os
+ UNICODE
+
+ Revision 1.151 2000/03/10 14:10:27 jp
+ Bug #74104#: SetItemSet - remove Dialog-Flag from the NumRules
+
+ Revision 1.150 2000/02/11 14:42:51 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.149 2000/01/18 17:15:14 jp
+ Bug #72023#: dont create CurrShell-Object with 0-Pointer
+
+ Revision 1.148 1999/11/15 14:22:25 jp
+ Bug #69833#: GetDescription - ignore hint Para-Bckgrnd-destination
+
+ Revision 1.147 1999/02/05 16:43:58 JP
+ Task #61467#/#61014#: neu FindPageDescByName
+
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/app/error.src b/sw/source/ui/app/error.src
new file mode 100644
index 000000000000..0d30d1e88d42
--- /dev/null
+++ b/sw/source/ui/app/error.src
@@ -0,0 +1,1265 @@
+/*************************************************************************
+ *
+ * $RCSfile: error.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 <tools/errcode.hxx>
+#include "globals.hrc"
+#include "app.hrc"
+#include "swerror.h"
+#include "comcore.hrc" // MS: Warum gibst auf der Core-Seite
+ // jetzt Resourcen
+
+/*--------------------------------------------------------------------
+ Beschreibung: Strings
+ --------------------------------------------------------------------*/
+
+String STR_COMCORE_READERROR
+{
+ TEXT = "Lesefehler" ;
+ TEXT [ English ] = "Read Error" ;
+ TEXT [ norwegian ] = "Lesefeil" ;
+ TEXT [ italian ] = "Errore di lettura" ;
+ TEXT [ portuguese_brazilian ] = "Erro de Leitura" ;
+ TEXT [ portuguese ] = "Erro de leitura" ;
+ TEXT [ finnish ] = "Lukuvirhe" ;
+ TEXT [ danish ] = "Læsefejl" ;
+ TEXT [ french ] = "Erreur de lecture" ;
+ TEXT [ swedish ] = "Läsfel" ;
+ TEXT [ dutch ] = "Leesfout" ;
+ TEXT [ spanish ] = "Error de lectura" ;
+ TEXT [ english_us ] = "Read Error" ;
+ TEXT[ chinese_simplified ] = "¶ÁÎļþʱ·¢Éú´íÎó";
+ TEXT[ russian ] = "Îøèáêà ïðè ÷òåíèè";
+ TEXT[ polish ] = "B³¹d odczytu";
+ TEXT[ japanese ] = "“Ç‚ÝŽæ‚è´×°";
+ TEXT[ chinese_traditional ] = "ŪÀɮ׮ɵo¥Í¿ù»~";
+ TEXT[ arabic ] = "ÍÏË ÎØà ÃËäÇÁ ÇáÞÑÇÁÉ";
+ TEXT[ greek ] = "ÓöÜëìá áíÜãíùóçò";
+ TEXT[ korean ] = "Àб⠿À·ù";
+ TEXT[ turkish ] = "Okuma hatasý";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_COMCORE_CANT_SHOW
+{
+ TEXT = "Grafik nicht darstellbar." ;
+ TEXT [ English ] = "Graphic cannot be displayed." ;
+ TEXT [ norwegian ] = "Graphic cannot be displayed." ;
+ TEXT [ italian ] = "L'immagine non è visualizzabile" ;
+ TEXT [ portuguese_brazilian ] = "Graphic cannot be displayed." ;
+ TEXT [ portuguese ] = "Impossível apresentar imagem." ;
+ TEXT [ french ] = "Impossible d'afficher l'image !" ;
+ TEXT [ dutch ] = "Afbeelding kan niet worden weergegeven" ;
+ TEXT [ spanish ] = "No es posible presentar la imagen." ;
+ TEXT [ danish ] = "Grafik kan ikke vises." ;
+ TEXT [ swedish ] = "Grafik kan inte visas." ;
+ TEXT [ finnish ] = "Graphic cannot be displayed." ;
+ TEXT [ english_us ] = "Graphic cannot be displayed." ;
+ TEXT[ chinese_simplified ] = "ÎÞ·¨ÏÔʾͼÐÎ";
+ TEXT[ russian ] = "Ðèñóíîê ïðåäñòàâèòü íåâîçìîæíî";
+ TEXT[ polish ] = "Grafiki nie mo¿na wyœwietliæ.";
+ TEXT[ japanese ] = "¸Þ×̨¯¸‚ð•\\Ž¦‚Å‚«‚Ü‚¹‚ñB";
+ TEXT[ chinese_traditional ] = "µLªkÅã¥Ü¹Ï¤ù";
+ TEXT[ arabic ] = "áÇ íãßä ÚÑÖ ÇáÑÓæãÇÊ.";
+ TEXT[ greek ] = "Äåí åßíáé äõíáôÞ ç ðáñïõóßáóç ôïõ ãñáöéêïý.";
+ TEXT[ korean ] = "±×·¡ÇÈÀÌ Ç¥½ÃµÉ ¼ö ¾ø½À´Ï´Ù.";
+ TEXT[ turkish ] = "Grafik görüntülenemiyor.";
+ TEXT[ language_user1 ] = " ";
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Boxes
+ --------------------------------------------------------------------*/
+InfoBox ERR_CLPBRD_WRITE
+{
+ MESSAGE = "Fehler beim Kopieren in die Zwischenablage." ;
+ MESSAGE [ English ] = "Error while copying into the clipboard." ;
+ MESSAGE [ norwegian ] = "Feil ved kopiering til utklippstavlen." ;
+ MESSAGE [ italian ] = "Errore durante la copia negli appunti" ;
+ MESSAGE [ portuguese_brazilian ] = "Erro durante cópia para o clipboard." ;
+ MESSAGE [ portuguese ] = "Erro ao copiar para a Área de Transferência." ;
+ MESSAGE [ finnish ] = "Virhe kopioitaessa leikepöydälle." ;
+ MESSAGE [ danish ] = "Fejl under kopiering til udskriftsholderen." ;
+ MESSAGE [ french ] = "Erreur lors de la copie vers le presse-papiers." ;
+ MESSAGE [ swedish ] = "Fel vid kopiering till urklippet." ;
+ MESSAGE [ dutch ] = "Fout bij kopiëren naar Klembord." ;
+ MESSAGE [ spanish ] = "Error al copiar al portapapeles." ;
+ MESSAGE [ english_us ] = "Error while copying to the clipboard." ;
+ MESSAGE[ chinese_simplified ] = "ÔÚ¸´ÖÆÊý¾Ýµ½¼ôÌù°åʱ·¢Éú´íÎó¡£";
+ MESSAGE[ russian ] = "Îøèáêà ïðè êîïèðîâàíèè â áóôåð îáìåíà.";
+ MESSAGE[ polish ] = "B³¹d podczas kopiowania do schowka.";
+ MESSAGE[ japanese ] = "¸Ø¯ÌßÎÞ°ÄނɺËß°’†‚É´×°”­¶";
+ MESSAGE[ chinese_traditional ] = "½Æ»s¸ê®Æ¨ì°Å¶Kï®Éµo¥Í¿ù»~¡C";
+ MESSAGE[ arabic ] = "ÍÏË ÎØà ÃËäÇÁ ÇáäÓÎ Åáì ÇáÍÇÝÙÉ.";
+ MESSAGE[ greek ] = "ÓöÜëìá êáôÜ ôçí áíôéãñáöÞ óôï clipboard.";
+ MESSAGE[ korean ] = "Ŭ¸³º¸µå¿¡ º¹»ç Áß ¿À·ù.";
+ MESSAGE[ turkish ] = "Panoya kopyalama hatasý.";
+ MESSAGE[ language_user1 ] = " ";
+};
+InfoBox ERR_CLPBRD_READ
+{
+ MESSAGE = "Fehler beim Lesen aus der Zwischenablage." ;
+ MESSAGE [ English ] = "Error while reading from the clipboard." ;
+ MESSAGE [ norwegian ] = "Feil ved lesing fra utklippstavlen." ;
+ MESSAGE [ italian ] = "Errore durante la lettura dagli appunti" ;
+ MESSAGE [ portuguese_brazilian ] = "Erro durante leitura do clipboard." ;
+ MESSAGE [ portuguese ] = "Erro durante a leitura da Área de Transferência." ;
+ MESSAGE [ finnish ] = "Virhe luettaessa leikepöydältä." ;
+ MESSAGE [ danish ] = "Fejl under læsning fra udskriftsholderen." ;
+ MESSAGE [ french ] = "Erreur lors de la lecture du presse-papiers." ;
+ MESSAGE [ swedish ] = "Fel vid läsning ur urklippet." ;
+ MESSAGE [ dutch ] = "Fout bij lezen van Klembord." ;
+ MESSAGE [ spanish ] = "Error al leer del portapapeles." ;
+ MESSAGE [ english_us ] = "Error reading from the clipboard." ;
+ MESSAGE[ chinese_simplified ] = "ÔÚ¶ÁÈ¡¼ôÌù°åʱ·¢Éú´íÎó¡£";
+ MESSAGE[ russian ] = "Îøèáêà ïðè ÷òåíèè èç áóôåðà îáìåíà.";
+ MESSAGE[ polish ] = "B³¹d odczytu ze schowka.";
+ MESSAGE[ japanese ] = "¸Ø¯ÌßÎÞ°ÄÞ‚©‚ç‚Ì“Ç‚ÝŽæ‚è´×°";
+ MESSAGE[ chinese_traditional ] = "¦bŪ¨ú°Å¶Kï®Éµo¥Í¿ù»~¡C";
+ MESSAGE[ arabic ] = "ÍÏË ÎØà ÃËäÇÁ ÇáÞÑÇÁÉ ãä ÇáÍÇÝÙÉ.";
+ MESSAGE[ language_user1 ] = " ";
+ MESSAGE[ greek ] = "ÓöÜëìá êáôÜ ôçí áíÜãíùóç áðü ôï Clipboard.";
+ MESSAGE[ korean ] = "Ŭ¸³º¸µå·ÎºÎÅÍ Àб⠿À·ù.";
+ MESSAGE[ turkish ] = "Panodan okuma hatasý.";
+};
+
+
+#define ERR_CODE( class, err ) (class | (err - ERROR_SW_BASE))
+#define WARN_CODE( class, err ) (class | ( err - WARN_SW_BASE))
+
+Resource RID_SW_ERRHDL
+{
+ // Import-Errors
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SWG_FILE_FORMAT_ERROR )
+ {
+ TEXT = "Formatfehler in der Datei entdeckt" ;
+ TEXT [ English ] = "File format error" ;
+ TEXT [ norwegian ] = "Feil filformat format error" ;
+ TEXT [ italian ] = "Errore nel formato del file" ;
+ TEXT [ portuguese_brazilian ] = "Erro no formato do arquivo" ;
+ TEXT [ portuguese ] = "Encontrado erro de formato no ficheiro" ;
+ TEXT [ finnish ] = "Tiedostomuodon virhe" ;
+ TEXT [ danish ] = "Opdaget formatfejl i filen" ;
+ TEXT [ french ] = "Erreur de format de fichier" ;
+ TEXT [ swedish ] = "Formatfel upptäckt i filen" ;
+ TEXT [ dutch ] = "Formaatfout ontdekt in het bestand" ;
+ TEXT [ spanish ] = "Se ha descubierto un error de formato en el archivo" ;
+ TEXT [ english_us ] = "File format error found" ;
+ TEXT[ chinese_simplified ] = "·¢ÏÖÁËÎļþ¸ñʽ´íÎó";
+ TEXT[ russian ] = "Îáíàðóæåíà îøèáêà â ôîðìàòå ôàéëà";
+ TEXT[ polish ] = "Znaleziono b³¹d formatu w pliku";
+ TEXT[ japanese ] = "̧²Ù‚É‘Ž®´×°‚ªŒ©‚‚©‚è‚Ü‚µ‚½B";
+ TEXT[ chinese_traditional ] = "µo²{¤FÀɮ׮榡¿ù»~";
+ TEXT[ arabic ] = "Êã ÇßÊÔÇÝ ÎØà ÊäÓíÞ Ýí ÇáãáÝ";
+ TEXT[ greek ] = "ÂñÝèçêå óöÜëìá äéáìüñöùóçò óôï áñ÷åßï";
+ TEXT[ korean ] = "ÆÄÀÏ ¼­½Ä ¿¡·¯°¡ ¹ß°ßµÇ¾ú½À´Ï´Ù.";
+ TEXT[ turkish ] = "Dosya format hatasý bulundu";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SWG_READ_ERROR )
+ {
+ TEXT = "Fehler beim Lesen der Datei " ;
+ TEXT [ English ] = "Error in reading file " ;
+ TEXT [ norwegian ] = "Feil ved lesing av fil " ;
+ TEXT [ italian ] = "Errore durante la lettura del file " ;
+ TEXT [ portuguese_brazilian ] = "Erro na leitura de arquivo" ;
+ TEXT [ portuguese ] = "Erro na leitura do ficheiro " ;
+ TEXT [ finnish ] = "Virhe luettaessa tiedostoa " ;
+ TEXT [ danish ] = "Fejl under læsning af filen " ;
+ TEXT [ french ] = "Erreur de lecture du fichier " ;
+ TEXT [ swedish ] = "Fel vid läsning av fil " ;
+ TEXT [ dutch ] = "Fout bij lezen van het bestand " ;
+ TEXT [ spanish ] = "Error al leer el archivo " ;
+ TEXT [ english_us ] = "Error reading file " ;
+ TEXT[ chinese_simplified ] = "ÔÚ¶ÁÎļþʱ·¢Éú´íÎó ";
+ TEXT[ russian ] = "Îøèáêà ïðè ÷òåíèè ôàéëà ";
+ TEXT[ polish ] = "B³¹d odczytu pliku ";
+ TEXT[ japanese ] = "̧²Ù‚Ì“Ç‚ÝŽæ‚è´×° ";
+ TEXT[ chinese_traditional ] = "ŪÀɮ׮ɵo¥Í¿ù»~ ";
+ TEXT[ arabic ] = "ÍÏË ÎØà ÃËäÇÁ ÞÑÇÁÉ ÇáãáÝ ";
+ TEXT[ greek ] = "ÓöÜëìá êáôÜ ôçí áíÜãíùóç ôïõ áñ÷åßïõ ";
+ TEXT[ korean ] = "ÆÄÀÏ Àб⠿À·ù ";
+ TEXT[ turkish ] = "Dosya okuma hatasý ";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SW6_INPUT_FILE )
+ {
+ TEXT = "Fehler in der Eingabedatei" ;
+ TEXT [ English ] = "Input file error" ;
+ TEXT [ norwegian ] = "Feil i Innlesingsfil" ;
+ TEXT [ italian ] = "Errore nel file di input" ;
+ TEXT [ portuguese_brazilian ] = "Erro no arquivo de entrada" ;
+ TEXT [ portuguese ] = "Erro no ficheiro de entrada" ;
+ TEXT [ finnish ] = "Syöttötiedoston virhe" ;
+ TEXT [ danish ] = "Fejl i inputfilen" ;
+ TEXT [ french ] = "Erreur dans le fichier de saisie" ;
+ TEXT [ swedish ] = "Fel på inmatningsfilen" ;
+ TEXT [ dutch ] = "Fout in invoerbestand" ;
+ TEXT [ spanish ] = "Error en el archivo de entrada" ;
+ TEXT [ english_us ] = "Input file error" ;
+ TEXT[ chinese_simplified ] = "ÊäÈëµÄÎļþº¬ÓдíÎó";
+ TEXT[ russian ] = "Îøèáêà â ôàéëå ââîäà";
+ TEXT[ polish ] = "B³¹d w pliku wejœciowym";
+ TEXT[ japanese ] = "“ü—Í̧²Ù‚Ì’†‚É´×°";
+ TEXT[ chinese_traditional ] = "¿é¤JªºÀɮקt¦³¿ù»~";
+ TEXT[ arabic ] = "ÍÏË ÎØà Ýí ãáÝ ÇáÅÏÎÇá";
+ TEXT[ greek ] = "ÓöÜëìá óôï áñ÷åßï åéóáãùãÞò";
+ TEXT[ korean ] = "ÆÄÀÏ »ðÀÔ ¿À·ù";
+ TEXT[ turkish ] = "Girdi dosyasýnda hata";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SW6_NOWRITER_FILE )
+ {
+ TEXT = "Die Datei ist keine StarWriter-Datei" ;
+ TEXT [ English ] = "This isn't a StarWriter file" ;
+ TEXT [ norwegian ] = "Dette er ikke en Star Writer fil" ;
+ TEXT [ italian ] = "Questo non è un file di StarOffice Writer" ;
+ TEXT [ portuguese_brazilian ] = "Este não é um arquivo do StarOffice Writer" ;
+ TEXT [ portuguese ] = "Este não é um ficheiro do StarOffice Writer" ;
+ TEXT [ finnish ] = "Tämä ei ole StarWriter-tiedosto" ;
+ TEXT [ danish ] = "Filen er ingen StarOffice Writer-fil" ;
+ TEXT [ french ] = "Ceci n'est pas un fichier StarOffice Writer" ;
+ TEXT [ swedish ] = "Detta är inte en StarOffice Writer-fil" ;
+ TEXT [ dutch ] = "Dit bestand is geen StarOffice Writer-bestand" ;
+ TEXT [ spanish ] = "El archivo no es uno de StarOffice Writer" ;
+ TEXT [ english_us ] = "This is not a StarOffice Writer file" ;
+ TEXT[ chinese_simplified ] = "Õâ²»ÊÇÒ»¸ö StarOffice Writer Îļþ";
+ TEXT[ russian ] = "Ýòîò ôàéë íå ÿâëÿåòñÿ ôàéëîì StarOffice Writer";
+ TEXT[ polish ] = "Ten plik nie jest plikiem StarOffice Writer";
+ TEXT[ japanese ] = "‚±‚ê‚ÍStarOffice Writer‚Ì̧²Ù‚Å‚Í‚ ‚è‚Ü‚¹‚ñB";
+ TEXT[ chinese_traditional ] = "³o¤£¬O¤@­Ó StarOffice Writer ÀÉ®×";
+ TEXT[ arabic ] = "åÐÇ ÇáãáÝ áíÓ ãáÝ StarOffice Writer";
+ TEXT[ greek ] = "Ôï áñ÷åßï áõôü äåí åßíáé áñ÷åßï ôïõ StarOffice Writer";
+ TEXT[ korean ] = "ÀÌ ÆÄÀÏÀº StarOffice Writer ÆÄÀÏÀÌ ¾Æ´Õ´Ï´Ù.";
+ TEXT[ turkish ] = "Bu dosya StarOffice Writer dosyasý deðil";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SW6_UNEXPECTED_EOF )
+ {
+ TEXT = "Unerwartetes Dateiende" ;
+ TEXT [ English ] = "Unexpected end of file" ;
+ TEXT [ norwegian ] = "Uventet slutt på fil" ;
+ TEXT [ italian ] = "Fine inattesa del file" ;
+ TEXT [ portuguese_brazilian ] = "Fim de arquivo não esperado" ;
+ TEXT [ portuguese ] = "Fim de ficheiro inesperado" ;
+ TEXT [ finnish ] = "Tiedosto loppui kesken" ;
+ TEXT [ danish ] = "Uventet filafslutning" ;
+ TEXT [ french ] = "Fin de fichier imprévue" ;
+ TEXT [ swedish ] = "Oväntat filslut" ;
+ TEXT [ dutch ] = "Onverwacht bestandeinde" ;
+ TEXT [ spanish ] = "Fin inesperado de archivo" ;
+ TEXT [ english_us ] = "Unexpected end of file" ;
+ TEXT[ chinese_simplified ] = "ÒâÍâµÄÎļþ½áβ";
+ TEXT[ russian ] = "Íåîæèäàííûé êîíåö ôàéëà";
+ TEXT[ polish ] = "Nieoczekiwany koniec pliku";
+ TEXT[ japanese ] = "•s“K“–‚Ȩ̀²Ù––";
+ TEXT[ chinese_traditional ] = "·N¥~ªºÀÉ®×µ²§À";
+ TEXT[ arabic ] = "äåÇíÉ ÛíÑ ãÊæÞÚÉ ááãáÝ";
+ TEXT[ greek ] = "Áðñïóäüêçôï ôÝëïò áñ÷åßïõ";
+ TEXT[ korean ] = "ÆÄÀÏÀÇ ³¡ÀÌ À߸øµÇ¾ú½À´Ï´Ù.";
+ TEXT[ turkish ] = "Beklenmeyen dosya sonu";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SW6_PASSWD )
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Passworte werden nicht unterstützt : Passworte werden nicht unterst³tzt */
+ TEXT = "Passworte werden nicht unterstützt" ;
+ TEXT [ English ] = "Files with passwords are not supported" ;
+ TEXT [ norwegian ] = "Passordbeskyttet filer er ikke tilgjengelige" ;
+ TEXT [ italian ] = "Le password non sono supportate" ;
+ TEXT [ portuguese_brazilian ] = "Arquivos com senhas não s o comportados" ;
+ TEXT [ portuguese ] = "As senhas não têm suporte" ;
+ TEXT [ finnish ] = "Salasanalla suojattuja tiedostoja ei voi käsitellä" ;
+ TEXT [ danish ] = "Adgangskoder understøttes ikke" ;
+ TEXT [ french ] = "Les mots de passe ne sont pas supportés" ;
+ TEXT [ swedish ] = "Lösenord stöds ej" ;
+ TEXT [ dutch ] = "Wachtwoorden worden niet ondersteund" ;
+ TEXT [ spanish ] = "Las contraseñas no son soportadas" ;
+ TEXT [ english_us ] = "Passwords protected files are not supported" ;
+ TEXT[ chinese_simplified ] = "²»Ö§³Ö¿ÚÁî";
+ TEXT[ russian ] = "Ïàðîëè íå ïîääåðæèâàþòñÿ";
+ TEXT[ polish ] = "Has³a nie bêd¹ obs³ugiwane";
+ TEXT[ japanese ] = "Ê߽ܰÄÞ‚ª»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ";
+ TEXT[ chinese_traditional ] = "¤£¤ä´©±K½X";
+ TEXT[ arabic ] = "ßáãÇÊ ÇáÓÑ ÛíÑ ãÚÊãÏÉ";
+ TEXT[ greek ] = "Äåí õðïóôçñßæåôáé ç ëåéôïõñãßá êùäéêïý ðñüóâáóçò";
+ TEXT[ korean ] = "ÆÄÀÏ º¸È£ Æнº¿öµå°¡ Áö¿øµÇÁö ¾Ê½À´Ï´Ù.";
+ TEXT[ turkish ] = "Þifre kullanýmý desteklenmiyor";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_WW6_NO_WW6_FILE_ERR )
+ {
+ TEXT = "Die Datei ist keine WinWord6-Datei" ;
+ TEXT [ English ] = "This isn't a WinWord6 file" ;
+ TEXT [ norwegian ] = "Dette er ikke en WinWord6 fil" ;
+ TEXT [ italian ] = "Questo non è un file di WinWord6" ;
+ TEXT [ portuguese_brazilian ] = "Este não é um arquivo do WinWord6" ;
+ TEXT [ portuguese ] = "Este não é um ficheiro do WinWord6" ;
+ TEXT [ finnish ] = "Tämä ei ole WinWord6-tiedosto" ;
+ TEXT [ danish ] = "Filen er ingen WinWord6-fil" ;
+ TEXT [ french ] = "Ceci n'est pas un fichier WinWord6" ;
+ TEXT [ swedish ] = "Detta är inte en WinWord6-fil" ;
+ TEXT [ dutch ] = "Dit bestand is geen WinWord6-bestand" ;
+ TEXT [ spanish ] = "El archivo no es uno de WinWord6" ;
+ TEXT [ english_us ] = "This is not a WinWord6 file" ;
+ TEXT[ chinese_simplified ] = "Õâ²»ÊÇÒ»¸ö WinWord6 Îļþ";
+ TEXT[ russian ] = "Ýòîò ôàéë íå ÿâëÿåòñÿ ôàéëîì WinWord6";
+ TEXT[ polish ] = "Ten plik nie jest plikiem WinWord6";
+ TEXT[ japanese ] = "‚±‚ê‚Í WinWord6‚Ì̧²Ù‚Å‚Í‚ ‚è‚Ü‚¹‚ñ";
+ TEXT[ chinese_traditional ] = "³o¤£¬O¤@­Ó WinWord6 ÀÉ®×";
+ TEXT[ arabic ] = "åÐÇ ÇáãáÝ áíÓ ãáÝ WinWord6";
+ TEXT[ greek ] = "Ôï áñ÷åßï áõôü äåí åßíáé áñ÷åßï ôïõ WinWord6";
+ TEXT[ korean ] = "WinWord6 ÆÄÀÏÀÌ ¾Æ´Õ´Ï´Ù.";
+ TEXT[ turkish ] = "Bu dosya WinWord6 dosyasý deðil";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_WW6_FASTSAVE_ERR )
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Diese Datei wurde mit der WinWord-Option 'Schnellspeichern' gespeichert. Bitte schalten Sie in WinWord die Option 'Schnellspeichern zulassen' aus und speichern sie die Datei erneut mit WinWord : Diese Datei wurde mit der WinWord-Option ''Schnellspeichern'' gespeichert. Bitte schalten Sie in WinWord die Option ''Schnellspeichern zulassen'' aus und speichern sie die Datei erneut mit WinWord */
+ /* ### ACHTUNG: Neuer Text in Resource? Diese Datei wurde mit der WinWord-Option 'Schnellspeichern' gespeichert. Bitte schalten Sie in WinWord die Option 'Schnellspeichern zulassen' aus und speichern sie die Datei erneut mit WinWord : Diese Datei wurde mit der WinWord-Option ''Schnellspeichern'' gespeichert. Bitte schalten Sie in WinWord die Option ''Schnellspeichern zulassen'' aus und speichern sie die Datei erneut mit WinWord */
+ /* ### ACHTUNG: Neuer Text in Resource? Diese Datei wurde mit der WinWord-Option 'Schnellspeichern' gespeichert. Bitte schalten Sie in WinWord die Option 'Schnellspeichern zulassen' aus und speichern sie die Datei erneut mit WinWord : Diese Datei wurde mit der WinWord-Option ''Schnellspeichern'' gespeichert. Bitte schalten Sie in WinWord die Option ''Schnellspeichern zulassen'' aus und speichern sie die Datei erneut mit WinWord */
+ /* ### ACHTUNG: Neuer Text in Resource? Diese Datei wurde mit der WinWord-Option 'Schnellspeichern' gespeichert. Bitte schalten Sie in WinWord die Option 'Schnellspeichern zulassen' aus und speichern sie die Datei erneut mit WinWord : Diese Datei wurde mit der WinWord-Option ''Schnellspeichern'' gespeichert. Bitte schalten Sie in WinWord die Option ''Schnellspeichern zulassen'' aus und speichern sie die Datei erneut mit WinWord */
+ TEXT = "Diese Datei wurde mit der WinWord-Option 'Schnellspeichern' gespeichert. Bitte schalten Sie in WinWord die Option 'Schnellspeichern zulassen' aus und speichern sie die Datei erneut mit WinWord" ;
+ TEXT [ English ] = "This file is stored with the WinWord-Option 'fastsave'. Please disable the WinWord option 'Allow Fast Saves' and use WinWord to save the file again" ;
+ TEXT [ norwegian ] = "Denne filen er lagret med alternativet til WinWord 'hurtiglagre'. Sperr WinWord alternativet ' Tillat Hurtige Lagringer' og bruk WinWord for å lagre filen igjen" ;
+ TEXT [ italian ] = "Questo file è stato salvato con l'opzione di Winword 'salvataggio veloce'. Disabilitate l'opzione di WinWord 'Salvataggio veloce' e utilizzate WinWord per salvare di nuovo il file." ;
+ TEXT [ portuguese_brazilian ] = "Este arquivo foi armazenado com a opção do WinWord 'fastsave'. Por favor desative a opção do WinWord 'Allow Fast Saves' e utilize o WinWord para gravar novamente o arquivo" ;
+ TEXT [ portuguese ] = "Este ficheiro foi guardado com a opção do WinWord \"Guardar rápido\". Desactive a opção do WinWord \"Permitir Guardar rápido\" e guarde novamente o ficheiro em WinWord" ;
+ TEXT [ finnish ] = "Tämä tiedosto on tallennettu käyttäen WinWordin pikatallennusta. Poista pikatallennus käytöstä WinWordissa ja tallennatiedosto uudelleen" ;
+ TEXT [ danish ] = "Denne fil er blevet gemt med WinWord-indstillingen 'Gem hurtigt'. Deaktiver venligst indstillingen 'Gem hutigt' og gem filen igen med WinWord." ;
+ TEXT [ french ] = "Ce fichier a été enregistré à l'aide de l'option 'Enregistrement rapide' de WinWord. Veuillez désactiver cette option et utiliser WinWord pour enregistrer à nouveau le fichier." ;
+ TEXT [ swedish ] = "Denna fil är sparad med WinWord-alternativet 'snabbspara'. Stäng av WinWord-alternativet 'Tillåt snabbspara' och spara filen med WinWord igen" ;
+ TEXT [ dutch ] = "Dit bestand werd met de WinWord- optie \"Snel opslaan\" opgeslagen. Schakel a.u.b in WinWord de optie \"Snel opslaan toestaan\" uit en sla het bestand opnieuw op met WinWord." ;
+ TEXT [ spanish ] = "Este archivo ha sido guardado con la opción de WinWord 'guardar rápidamente' . Por favor desactive en WinWord la opción 'permitir guardar rápidamente' y guarde el archivo de nuevo en WinWord." ;
+ TEXT [ english_us ] = "This file was saved with WinWord in 'Fast Save' mode. Please uncheck the option 'Allow Fast Saves' and save the file again." ;
+ TEXT[ chinese_simplified ] = "Õâ¸öÎļþ´æÅ̲ÉÓõÄÊÇ WinWord Ñ¡Ïî '¿ìËÙ±£´æ'·½Ê½¡£ÇëÄúʧ»îÕâ¸öÑ¡ÏȻºóÔÚÖØдæÅÌÕâ¸öÎļþ¡£";
+ TEXT[ russian ] = "Ýòîò ôàéë ñîõðàíåí ïðè ïîìîùè ïàðàìåòðà WinWord 'Áûñòðîå ñîõðàíåíèå'. Ïîæàëóéñòà, îòêëþ÷èòå ïàðàìåòð 'Ðàçðåøèòü áûñòðîå ñîõðàíåíèå' è çàíîâî ñîõðàíèòå ýòîò ôàéë ñ ïîìîùüþ WinWord";
+ TEXT[ polish ] = "Ten plik zosta³ zapisany za pomoc¹ opcji WinWord 'Szybkie zapisywanie'. Proszê w³³¹cz w WinWord opcjê 'Dopuœæ szybkie zapisywanie' i zapisz plik ponownie w WinWord";
+ TEXT[ japanese ] = "‚±‚Ì̧²Ù‚ÍAWinWordµÌß¼®Ý‚Ì'‚‘¬•Û‘¶'‚Å•Û‘¶‚³‚ê‚Ä‚¢‚Ü‚·BWinWord‚̵Ìß¼®Ý'‚‘¬•Û‘¶‚Ì'‚ðÁ‹Ž‚µ‚Ä@̧²Ù‚ðV‚½‚ÉWinWord‚Å•Û‘¶‚µ‚ĉº‚³‚¢B";
+ TEXT[ chinese_traditional ] = "Àx¦sÀɮױĥΪº¬O WinWord ¿ï¶µ '§Ö³tÀx¦s'¤è¦¡¡C½Ð±z¥¢¬¡³o­Ó¿ï¶µ¡MµM«á¦b­«·sÀx¦s³o­Ó¤å¥ó¡C";
+ TEXT[ arabic ] = "Êã ÍÝÙ åÐÇ ÇáãáÝ Úä ØÑíÞ ÎíÇÑ 'ÇáÍÝÙ ÇáÓÑíÚ' Ýí WinWord. ÇáÑÌÇÁ ÅíÞÇÝ ÎÇÕíÉ 'ÇáÓãÇÍ ÈÇáÍÝÙ ÇáÓÑíÚ' Ýí WinWord¡ Ëã Þã ÈÍÝÙ ÇáãáÝ ãä ÌÏíÏ ÈæÇÓØÉ WinWord.";
+ TEXT[ greek ] = "Ôï áñ÷åßï áõôü áðïèçêåýôçêå ìå ôçí åðéëïãÞ 'ÃñÞãïñç áðïèÞêåõóç' ôïõ WinWord. Ðáñáêáëþ áðåíåñãïðïéÞóåôå ôçí åðéëïãÞ áõôÞ ôïõ WinWord êáé áðïèçêåýóôå ôï áñ÷åßï îáíÜ óôï WinWord.";
+ TEXT[ korean ] = "ÀÌ ÆÄÀÏÀº WinWord ÀÇ 'ºü¸¥ ÀúÀå' ¸ðµå·Î ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù. ¿É¼Ç 'ºü¸¥ ÀúÀå Çã¿ë' ¸¦ ÇØÁ¦ÇÏ°í, ÆÄÀÏÀ» ´Ù½Ã ÀúÀåÇϽʽÿÀ .";
+ TEXT[ turkish ] = "Bu dosya WinWord seçeneði 'Hýzlý kaydet' ile kaydedilmiþ. WinWord'de 'Hýzlý kaydetmeye olanak saðla' seçeneðini geçersiz kýlýp dosyayý yeniden WinWord ile kaydedin";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_W4W_WRITE_TMP_ERROR )
+ {
+ TEXT = "Fehler beim Schreiben der Temporärdatei" ;
+ TEXT [ English ] = "Error in writing temporary file " ;
+ TEXT [ norwegian ] = "Feil ved skriving av midlertidig fil " ;
+ TEXT [ italian ] = "Errore durante la scrittura del file temporaneo" ;
+ TEXT [ portuguese_brazilian ] = "Erro na gravação de arquivo temporário" ;
+ TEXT [ portuguese ] = "Erro ao gravar o ficheiro temporário" ;
+ TEXT [ finnish ] = "Virhe kirjoitettaessa tilapäistiedostoa " ;
+ TEXT [ danish ] = "Fejl under skrivning af midlertidig fil" ;
+ TEXT [ french ] = "Erreur d'écriture du fichier temporaire" ;
+ TEXT [ swedish ] = "Fel vid skrivning till temporär fil" ;
+ TEXT [ dutch ] = "Fout bij het schrijven van tijdelijk bestand" ;
+ TEXT [ spanish ] = "Error al escribir el archivo temporal" ;
+ TEXT [ english_us ] = "Error writing temporary file" ;
+ TEXT[ chinese_simplified ] = "ÔÚдÈëÔÝʱÎļþʱ·¢Éú´íÎó";
+ TEXT[ russian ] = "Îøèáêà ïðè çàïèñè âðåìåííîãî ôàéëà";
+ TEXT[ polish ] = "B³¹d zapisu pliku tymczasowego";
+ TEXT[ japanese ] = "ÃÝÎß×Ø Ì§²Ù“ü—Í’†‚Ì´×°";
+ TEXT[ chinese_traditional ] = "¦b¼g¤J¼È®ÉÀɮ׮ɵo¥Í¿ù»~";
+ TEXT[ arabic ] = "ÍÏË ÎØà ÃËäÇÁ ßÊÇÈÉ ÇáãáÝ ÇáãÄÞÊ";
+ TEXT[ greek ] = "ÓöÜëìá êáôÜ ôçí åããñáöÞ ðñïóùñéíïý áñ÷åßïõ";
+ TEXT[ korean ] = "ÀÓ½ÃÆÄÀÏ¿¡ ¾²±â ¿À·ù";
+ TEXT[ turkish ] = "Geçici dosya yazma hatasý";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_EXCLOT_WRONG_RANGE )
+ {
+ TEXT = "Einfügebereich in Ini-Datei zu groß" ;
+ TEXT [ English ] = "Import range from ini file to large" ;
+ TEXT [ norwegian ] = "Import range from ini file to large" ;
+ TEXT [ italian ] = "Area di inserimento del file ini troppo grande" ;
+ TEXT [ portuguese_brazilian ] = "Import range from ini file to large" ;
+ TEXT [ portuguese ] = "A área de inserção do ficheiro Ini é demasiado extensa" ;
+ TEXT [ french ] = "Zone d'insertion dans le fichier Ini trop grande" ;
+ TEXT [ dutch ] = "Invoegbereik in INI-bestand is te groot" ;
+ TEXT [ spanish ] = "El área de inserción en el archivo Ini es demasiado grande" ;
+ TEXT [ danish ] = "Importområdet i ini-filen er for stort" ;
+ TEXT [ swedish ] = "Importområdet i Ini-filen är för stort" ;
+ TEXT [ finnish ] = "Import range from ini file to large" ;
+ TEXT [ english_us ] = "Inserted section in ini file too large" ;
+ TEXT[ chinese_simplified ] = "Ini Îļþ²åÈëÇøÓòÌ«´ó";
+ TEXT[ russian ] = "Îáëàñòü âñòàâêè â ôàéë Ini ñëèøêîì áîëüøàÿ";
+ TEXT[ polish ] = "Obszar wstawiania do pliku Ini jest za du¿y";
+ TEXT[ japanese ] = "Ini̧²Ù‚Ì‘}“ü”͈͂ª’·‚·‚¬‚Ü‚·B";
+ TEXT[ chinese_traditional ] = "Ini ÀÉ®×´¡¤J°Ï°ì¤Ó¤j";
+ TEXT[ arabic ] = "äØÇÞ ÇáÅÏÎÇá Ýí ÇáãáÝ Ini ßÈíÑ ÌÏÇð";
+ TEXT[ greek ] = "Ç ðåñéï÷Þ åéóáãùãÞò óôï áñ÷åßï ini åßíáé ðïëý ìåãÜëç";
+ TEXT[ korean ] = "ini ÆÄÀÏ¿¡ »ðÀÔµÈ ±¸¿ªÀÌ ³Ê¹« Å®´Ï´Ù.";
+ TEXT[ turkish ] = "Ini dosyasý ekleme bölümü çok büyük";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_FORMAT_ROWCOL )
+ {
+ TEXT = "Formatfehler an Position $(ARG1)(Zeile,Spalte) in der Datei entdeckt" ;
+ TEXT [ English ] = "File format error at $(ARG1)(row,col)" ;
+ Text [ english_us ] = "File format error found at $(ARG1)(row,col)" ;
+ Text [ italian ] = "È stato trovato un errore di formato nel file alla posizione $(ARG1)(riga, colonna)" ;
+ Text [ spanish ] = "Se ha descubierto un error de formato en el archivo en la posición $(ARG1)(fila,columna)" ;
+ Text [ french ] = "Erreur de format à la position $(ARG1)(ligne,colonne) du fichier" ;
+ Text [ dutch ] = "Formaatfout ontdekt op positie $(ARG1)(cel,kolom) in het bestand" ;
+ Text [ swedish ] = "Formatfel vid position $(ARG1)(rad,kolumn) upptäckt i filen" ;
+ Text [ danish ] = "Der blev opdaget en formatfejl i filen på position $(ARG1)(række,spalte)" ;
+ Text [ portuguese ] = "Descoberto erro de formato na posição $(ARG1)(linha, coluna) do ficheiro" ;
+ Text [ portuguese_brazilian ] = "Formatfehler an Position $(ARG1)(Zeile,Spalte) in der Datei entdeckt" ;
+ Text[ chinese_simplified ] = "Îļþ¸ñʽ´íÎó $(ARG1)(ÐУ¬ÁÐ)";
+ Text[ russian ] = "Â ìåñòå $(ARG1)(ñòðîêà,ñòîëáåö) îáíàðóæåíà îøèáêà ôîðìàòà ôàéëà";
+ Text[ polish ] = "Znaleziono w pliku b³¹d formatu przy pozycji $(ARG1)(Wiersz, kolumna)";
+ Text[ japanese ] = "̧²Ù‚Ì $(ARG1)(sA—ñ)‚É‘Ž®´×°‚ªŒ©‚‚©‚è‚Ü‚µ‚½B";
+ Text[ chinese_traditional ] = "Àɮ׮榡¿ù»~ $(ARG1)(¦æ¡A¦C)";
+ Text[ arabic ] = "Êã ÇßÊÔÇÝ ÎØà Ýí ÇáãæÖÚ $(ARG1)(ÓØÑ¡ÚãæÏ) Ýí ÇáãáÝ";
+ Text[ greek ] = "ÂñÝèçêå óöÜëìá ìïñöïðïßçóçò óôç èÝóç $(ARG1)(ãñáììÞ,óôÞëç) ôïõ áñ÷åßï";
+ Text[ korean ] = "ÆÄÀϼ­½Ä ¿À·ù°¡ $(ARG1)(Çà,¿­)¿¡¼­ ¹ß°ß µË´Ï´Ù.";
+ Text[ turkish ] = "Dosya format hatasý $(ARG1)(satýr, sütun) bulundu";
+ Text[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SWG_NEW_VERSION )
+ {
+ TEXT = "Datei wurde von einer neueren Version geschrieben" ;
+ TEXT [ English ] = "File has been written by a newer version" ;
+ Text [ english_us ] = "File has been written in a newer version" ;
+ Text [ italian ] = "Il file è stato creato da una versione più recente" ;
+ Text [ spanish ] = "El archivo se escribió en una versión más nueva" ;
+ Text [ french ] = "Ce fichier a été créé à l'aide d'une version plus récente" ;
+ Text [ dutch ] = "Bestand werd onder een nieuwere versie opgeslagen" ;
+ Text [ swedish ] = "Filen är skriven i en nyare version" ;
+ Text [ danish ] = "Filen er blevet skrevet af en nyere version" ;
+ Text [ portuguese ] = "O ficheiro foi escrito numa versão mais moderna" ;
+ Text [ portuguese_brazilian ] = "Datei wurde von einer neueren Version geschrieben" ;
+ Text[ chinese_simplified ] = "ÎļþÒѾ­ÓÉÒ»¸öа汾¸üÐÂ";
+ Text[ russian ] = "Ôàéë íàïèñàí â íîâîé âåðñèè";
+ Text[ polish ] = "Plik zosta³ zapisany w nowszej wersji";
+ Text[ japanese ] = "̧²Ù‚ÍV‚µ‚¢ÊÞ°¼Þ®Ý‚Å‘‚©‚ê‚Ä‚¢‚Ü‚·";
+ Text[ chinese_traditional ] = "Àɮפw¸g³Q¤@­Ó·sª©¥»§ó·s";
+ Text[ arabic ] = "Êã ßÊÇÈÉ ÇáãáÝ Ýí ÅÕÏÇÑ ÃÍÏË";
+ Text[ greek ] = "Ôï áñ÷åßï ãñÜöôçêå ìå íåüôåñç Ýêäïóç";
+ Text[ korean ] = "ÆÄÀÏÀÌ ÃֽŠ¹öÁ¯¿¡ ÀÇÇØ ¾²¿©Á³½À´Ï´Ù.";
+ Text[ turkish ] = "Dosya daha yeni bir sürüm ile yazýlmýþ";
+ Text[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_WW8_NO_WW8_FILE_ERR )
+ {
+ TEXT = "Die Datei ist keine WinWord97-Datei" ;
+ TEXT [ English ] = "This isn't a WinWord97 file" ;
+ TEXT[ english_us ] = "This is not a WinWord97 file";
+ TEXT[ portuguese ] = "Não é um ficheiro WinWord97";
+ TEXT[ russian ] = "This isn't a WinWord97 file";
+ TEXT[ greek ] = "Ôï áñ÷åßï áõôü äåí åßíáé ôýðïõ WinWord97";
+ TEXT[ dutch ] = "Dit is geen WinWord97 bestand";
+ TEXT[ french ] = "Il ne s'agit pas d'un fichier WinWord97 !";
+ TEXT[ spanish ] = "This isn't a WinWord97 file";
+ TEXT[ italian ] = "This isn't a WinWord97 file";
+ TEXT[ danish ] = "Filen er ingen WinWord97-fil";
+ TEXT[ swedish ] = "Filen är inte en WinWord97-fil";
+ TEXT[ polish ] = "To nie jest plik WinWord97";
+ TEXT[ portuguese_brazilian ] = "This isn't a WinWord97 file";
+ TEXT[ japanese ] = "‚±‚ê‚Í WinWord97 ̧²Ù‚Å‚Í‚ ‚è‚Ü‚¹‚ñ";
+ TEXT[ korean ] = "This isn't a WinWord97 file";
+ TEXT[ chinese_simplified ] = "Õâ¸öÎļþ²»ÊÇÒ»¸ö WinWord97 Îļþ";
+ TEXT[ chinese_traditional ] = "³o¤£¬O WinWord97 ÀÉ®×";
+ TEXT[ turkish ] = "This isn't a WinWord97 file";
+ TEXT[ arabic ] = "åÐÇ ÇáãáÝ áíÓ ãáÝ WinWord97";
+ };
+ // Export-Errors
+ String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_SWG_WRITE_ERROR )
+ {
+ TEXT = "Fehler beim Schreiben der Datei " ;
+ TEXT [ English ] = "Error in writing file " ;
+ TEXT [ norwegian ] = "Feil ved skriving av fil " ;
+ TEXT [ italian ] = "Errore durante la scrittura del file " ;
+ TEXT [ portuguese_brazilian ] = "Erro na gravação de arquivo" ;
+ TEXT [ portuguese ] = "Erro ao gravar o ficheiro " ;
+ TEXT [ finnish ] = "Virhe kirjoitettaessa tiedostoa " ;
+ TEXT [ danish ] = "Fejl under skrivning af filen " ;
+ TEXT [ french ] = "Erreur d'écriture du fichier " ;
+ TEXT [ swedish ] = "Fel vid skrivning till fil " ;
+ TEXT [ dutch ] = "Fout bij het schrijven van het bestand " ;
+ TEXT [ spanish ] = "Error al escribir el archivo " ;
+ TEXT [ english_us ] = "Error writing file " ;
+ TEXT[ chinese_simplified ] = "дÈëÎļþʱ·¢Éú´íÎó ";
+ TEXT[ russian ] = "Îøèáêà çàïèñè ôàéëà ";
+ TEXT[ polish ] = "B³¹d zapisu pliku ";
+ TEXT[ japanese ] = "̧²Ù“ü—Í’†‚Ì´×° ";
+ TEXT[ chinese_traditional ] = "¼g¤JÀɮ׮ɵo¥Í¿ù»~ ";
+ TEXT[ arabic ] = "ÍÏË ÎØà ÃËäÇÁ ßÊÇÈÉ ÇáãáÝ ";
+ TEXT[ greek ] = "ÓöÜëìá êáôÜ ôçí åããñáöÞ áñ÷åßïõ ";
+ TEXT[ korean ] = "ÆÄÀÏ ¾²±â ¿À·ù ";
+ TEXT[ turkish ] = "Dosya yazma hatasý ";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_SWG_OLD_GLOSSARY )
+ {
+ TEXT = "Das Autotextdokument hat falsche Version" ;
+ TEXT [ English ] = "The glossary document has wrong version" ;
+ Text [ dutch ] = "Het AutoTekst-document heeft de verkeerde versie" ;
+ Text [ english_us ] = "Wrong AutoText document version" ;
+ Text [ italian ] = "Il documento di testo automatico presenta una versione errata" ;
+ Text [ spanish ] = "Versión errónea del documento de AutoTexto" ;
+ Text [ french ] = "La version de l' AutoTexte utilisée est incorrecte" ;
+ Text [ swedish ] = "AutoTextdokumentet har fel version" ;
+ Text [ danish ] = "Forkert AutoTekst dokumentversion" ;
+ Text [ portuguese ] = "O documento do AutoTexto tem a versão errada" ;
+ Text [ portuguese_brazilian ] = "Das Autotextdokument hat falsche Version" ;
+ Text[ chinese_simplified ] = "Õâ¸ö×Ô¶¯Í¼Îļ¯µÄÎĵµ°æ±¾ÎÞЧ";
+ Text[ russian ] = "Íåïðàâèëüíàÿ âåðñèÿ äîêóìåíòà àâòîòåêñòà";
+ Text[ polish ] = "Dokument autotekstu ma z³¹ wersjê";
+ Text[ japanese ] = "“ü—ÍŽx‰‡ÄÞ·­ÒÝÄ‚ÌÊÞ°¼Þ®Ý‚ªˆá‚¢‚Ü‚·";
+ Text[ chinese_traditional ] = "³o­Ó¦Û°Ê¹Ï¤å¶°¤å¥óª©¥»µL®Ä";
+ Text[ arabic ] = "ÅÕÏÇÑ ÎÇØÆ áãÓÊäÏ ÇáäÕ ÇáÊáÞÇÆí";
+ Text[ greek ] = "ËÜèïò Ýêäïóç ôïõ åããñÜöïõ ÁõôïÊåéìÝíïõ";
+ Text[ korean ] = "À߸øµÈ ÀÚµ¿ ÅؽºÆ® ¹®¼­ ¹öÁ¯";
+ Text[ turkish ] = "Otomatik metin belgesi sürümü yanlýþ";
+ Text[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_SWG_CANNOT_WRITE )
+ {
+ TEXT = "Das Dokument kann nicht angelegt werden" ;
+ TEXT [ English ] = "The document cannot be created" ;
+ Text [ dutch ] = "Het document kan niet worden gemaakt" ;
+ Text [ english_us ] = "The document cannot be created" ;
+ Text [ italian ] = "Non è possibile creare il documento" ;
+ Text [ spanish ] = "No se puede crear el documento" ;
+ Text [ french ] = "Impossible de créer le document" ;
+ Text [ swedish ] = "Dokumentet kan inte skapas" ;
+ Text [ danish ] = "Dokumentet kan ikke oprettes" ;
+ Text [ portuguese ] = "É impossível criar o documento" ;
+ Text [ portuguese_brazilian ] = "Das Dokument kann nicht angelegt werden" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨Éú³ÉÕâ¸öÎĵµ¡£";
+ Text[ russian ] = "Äîêóìåíò ñîçäàòü íåâîçìîæíî";
+ Text[ polish ] = "Dokumentu nie mo¿na utworzyæ";
+ Text[ japanese ] = "‚±‚ÌÄÞ·­ÒÝÄ‚Í쬂ł«‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "µLªk¥Í¦¨³o­Ó¤å¥ó";
+ Text[ arabic ] = "áÇ íãßä ÅäÔÇÁ ÇáãÓÊäÏ";
+ Text[ greek ] = "Äåí Þôáí äõíáôÞ ç äçìéïõñãßá ôïõ åããñÜöïõ";
+ Text[ korean ] = "¹®¼­°¡ ¸¸µé¾îÁú¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Belge oluþturulamýyor";
+ Text[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_W4W_READ_TMP_ERROR )
+ {
+ TEXT = "Fehler beim Lesen der Temporärdatei" ;
+ TEXT [ English ] = "Error in reading temporary file " ;
+ TEXT [ norwegian ] = "eil ved lesing av midkertidig fil " ;
+ TEXT [ italian ] = "Errore durante la lettura del file temporaneo" ;
+ TEXT [ portuguese_brazilian ] = "Erro na leitura de arquivo temporário" ;
+ TEXT [ portuguese ] = "Erro na leitura do ficheiro temporário" ;
+ TEXT [ finnish ] = "Virhe luettaessa tilapäistiedostoa " ;
+ TEXT [ danish ] = "Fejl under læsning af midlertidig fil" ;
+ TEXT [ french ] = "Erreur de lecture du fichier temporaire" ;
+ TEXT [ swedish ] = "Fel vid läsning av temporär fil" ;
+ TEXT [ dutch ] = "Fout bij het lezen van tijdelijke bestanden" ;
+ TEXT [ spanish ] = "Error al leer el archivo temporal" ;
+ TEXT [ english_us ] = "Error reading temporary file" ;
+ TEXT[ chinese_simplified ] = "ÔÚ¶ÁÈ¡ÔÝʱÎļþʱ·¢Éú´íÎó";
+ TEXT[ russian ] = "Îøèáêà ïðè ÷òåíèè âðåìåííîãî ôàéëà";
+ TEXT[ polish ] = "B³¹d odczytu pliku tymczasowego";
+ TEXT[ japanese ] = "ÃÝÎß×Ø̧²Ù“Ç‚ÝŽæ‚è‚ÌÛ‚Ì´×°";
+ TEXT[ chinese_traditional ] = "Ū¨ú¼È®ÉÀɮ׮ɵo¥Í¿ù»~";
+ TEXT[ arabic ] = "ÍÏË ÎØà ÃËäÇÁ ÞÑÇÁÉ ÇáãáÝ ÇáãÄÞÊ";
+ TEXT[ greek ] = "ÓöÜëìá êáôÜ ôï äéÜâáóìá ðñïóùñéíïý áñ÷åßïõ";
+ TEXT[ korean ] = "ÀÓ½ÃÆÄÀÏ Àб⠿À·ù";
+ TEXT[ turkish ] = "Geçici dosya okuma hatasý";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_SWG_LARGE_DOC_ERROR )
+ {
+ TEXT = "Das Dokument überschreitet die mögliche 3.1/4.0-Textdokument-Größe" ;
+ TEXT [ English ] = "The document's size exceeds the possible 3.1/4.0 document size" ;
+ Text [ portuguese ] = "O documento ultrapassa o tamanho possível para um documento 3.1/4.0" ;
+ Text [ english_us ] = "The document exceeds the allowed 3.1/4.0 text document size" ;
+ Text [ portuguese_brazilian ] = "Das Dokument überschreitet die mögliche 3.1/4.0-Textdokument-Größe" ;
+ Text [ swedish ] = "Dokumentet överskrider den möjliga 3.1/4.0-textdokumentstorleken" ;
+ Text [ danish ] = "Dokumentet overskrider den mulige 3.1/4.0-tekstdokumentstørrelse" ;
+ Text [ italian ] = "Il documento supera le dimensioni del testo possibili in 3.1/4.0" ;
+ Text [ spanish ] = "El documento sobrepasa el tamaño posible 3.1/4.0 de documento" ;
+ Text [ french ] = "Le document dépasse la taille maximum autorisée pour un document texte 3.1/4.0" ;
+ Text [ dutch ] = "Het document overschrijdt de mogelijke 3.1/4.0-tekstdocumentgrootte" ;
+ Text[ chinese_simplified ] = "Õâ¸öÎĵµ¿ÉÄܳ¬¹ý 3.1/4.0 °æ±¾ÎĵµµÄ´óС¡£";
+ Text[ russian ] = "Äîêóìåíò ïðåâûøàåò âîçìîæíûé îáúåì 3.1/4.0, óñòàíîâëåííûé äëÿ òåêñòîâîãî äîêóìåíòà";
+ Text[ polish ] = "Dokument przekracza dopuszczalny rozmiar dokumentu tekstowego 3.1/4.0";
+ Text[ japanese ] = "‚±‚ÌÄÞ·­ÒÝÄ‚ÍA3.1/4.0‚É‚¨‚¢‚ĉ”\\‚È÷½ÄÄÞ·­ÒÝÄ‚Ì»²½Þ‚ð’´‚¦‚Ä‚¢‚Ü‚·B";
+ Text[ chinese_traditional ] = "³o­Ó¤å¥ó¥i¯à¶W¹L 3.1/4.0 ª©¥»¤å¥óªº¤j¤p¡C";
+ Text[ arabic ] = "íÊÌÇæÒ ÇáãÓÊäÏ ÍÌã ãÓÊäÏ ÇáäÕ 3.1/4.0";
+ Text[ greek ] = "Ôï Ýããñáöï õðåñâáßíåé ôï åðéôñåðüìåíï üñéï ìåãÝèïõò åããñÜöïõ êåéìÝíïõ ãéá ôçí Ýêäïóç 3.1/4.0";
+ Text[ korean ] = "¹®¼­°¡ Çô¿ëµÈ 3.1/4.0 ÅؽºÆ® ¹®ÀÚ Å©±â¸¦ ÃÊ°ú Çß½À´Ï´Ù.";
+ Text[ turkish ] = "Belge izin verilen 3.1/4.0 metin belgesi büyüklüðünü aþýyor";
+ Text[ language_user1 ] = " ";
+ };
+ // Import-/Export-Errors
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SWG_INTERNAL_ERROR )
+ {
+ TEXT = "Interner Fehler im StarWriter Dateiformat" ;
+ TEXT [ English ] = "Internal Error in StarWriter file" ;
+ TEXT [ norwegian ] = "Intern feil i StarWriter fil" ;
+ TEXT [ italian ] = "Errore interno nel formato di file di StarOffice Writer" ;
+ TEXT [ portuguese_brazilian ] = "Erro interno em arquivo do StarOffice Writer" ;
+ TEXT [ portuguese ] = "Erro interno no formato de ficheiro do StarOffice Writer" ;
+ TEXT [ finnish ] = "Sisäinen virhe StarWriter-tiedostossa" ;
+ TEXT [ danish ] = "Intern fejl i StarOffice Writer-filformatet" ;
+ TEXT [ french ] = "Erreur interne dans le format de fichier StarOffice Writer" ;
+ TEXT [ swedish ] = "Internt fel i StarOffice Writer-filformatet" ;
+ TEXT [ dutch ] = "Interne fout in StarOffice Writer bestandsformaat" ;
+ TEXT [ spanish ] = "Error interno en el formato de archivo de StarOffice Writer" ;
+ TEXT [ english_us ] = "Internal error in StarOffice Writer file format" ;
+ TEXT[ chinese_simplified ] = "ÄÚ²¿µÄ StarOffice Writer Îļþ¸ñʽ´íÎó";
+ TEXT[ russian ] = "Îøèáêà âíóòðè ôîðìàòà ôàéëà StarOffice Writer";
+ TEXT[ polish ] = "Wewnêtrzny b³¹d w formacie pliku StarOffice Writer";
+ TEXT[ japanese ] = "StarOffice Writer ̧²Ù‘Ž®‚Ì“à•”´×°";
+ TEXT[ chinese_traditional ] = "¤º³¡ªº StarOffice Writer Àɮ׮榡¿ù»~";
+ TEXT[ arabic ] = "ÍÏË ÎØà ÏÇÎáí Ýí ÊäÓíÞ ãáÝ StarOffice Writer";
+ TEXT[ greek ] = "Åóùôåñéêü óöÜëìá óôç ìïñöÞ áñ÷åßïõ ôïõ StarOffice Writer";
+ TEXT[ korean ] = "StarOffice WriterÆÄÀϼ­½Ä ÀÇ ³»ºÎ ¿À·ù";
+ TEXT[ turkish ] = "Dahili StarOffice Writer dosyasý format hatasý";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_SWG_INTERNAL_ERROR )
+ {
+ TEXT = "Interner Fehler im StarWriter Dateiformat" ;
+ TEXT [ English ] = "Internal Error in StarWriter file" ;
+ TEXT [ norwegian ] = "Intern feil i StarWriter fil" ;
+ TEXT [ italian ] = "Errore interno nel formato di file di StarOffice Writer" ;
+ TEXT [ portuguese_brazilian ] = "Erro interno em arquivo do StarOffice Writer" ;
+ TEXT [ portuguese ] = "Erro interno no formato de ficheiro do StarOffice Writer" ;
+ TEXT [ finnish ] = "Sisäinen virhe StarWriter-tiedostossa" ;
+ TEXT [ danish ] = "Intern fejl i StarOffice Writer-filformatet" ;
+ TEXT [ french ] = "Erreur interne dans le format de fichier StarOffice Writer" ;
+ TEXT [ swedish ] = "Internt fel i StarOffice Writer-filformatet" ;
+ TEXT [ dutch ] = "Interne fout in StarOffice Writer bestandsformaat" ;
+ TEXT [ spanish ] = "Error interno en el formato de archivo de StarOffice Writer" ;
+ TEXT [ english_us ] = "Internal Error in StarOffice Writer file format" ;
+ TEXT[ chinese_simplified ] = "ÄÚ²¿µÄ StarOffice Writer Îļþ¸ñʽ´íÎó";
+ TEXT[ russian ] = "Îøèáêà âíóòðè ôîðìàòà ôàéëà StarOffice Writer";
+ TEXT[ polish ] = "Wewnêtrzny b³¹d w formacie pliku StarOffice Writer";
+ TEXT[ japanese ] = "StarOffice Writer ̧²Ù‘Ž®‚Ì“à•”´×°";
+ TEXT[ chinese_traditional ] = "¤º³¡ªº StarOffice Writer Àɮ׮榡¿ù»~";
+ TEXT[ arabic ] = "ÍÏË ÎØà ÏÇÎáí Ýí ÊäÓíÞ ãáÝ StarOffice Writer";
+ TEXT[ greek ] = "Åóùôåñéêü óöÜëìá óôç ìïñöÞ áñ÷åßïõ ôïõ StarOffice Writer";
+ TEXT[ korean ] = "StarOffice Writer ÆÄÀϼ­½ÄÀÇ ³»ºÎ ¿À·ù";
+ TEXT[ turkish ] = "Dahili StarOffice Writer dosyasý format hatasý";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_W4W_MEM )
+ {
+ TEXT = "Nicht genügend Speicher vorhanden" ;
+ TEXT [ English ] = "Out of memory" ;
+ TEXT [ norwegian ] = "Ute av minne" ;
+ TEXT [ italian ] = "Memoria disponibile insufficiente" ;
+ TEXT [ portuguese_brazilian ] = "Sem memória" ;
+ TEXT [ portuguese ] = "Memória insuficiente" ;
+ TEXT [ finnish ] = "Muisti on lopussa" ;
+ TEXT [ danish ] = "Ikke nok hukommelse" ;
+ TEXT [ french ] = "Mémoire saturée" ;
+ TEXT [ swedish ] = "Inte tillräckligt med minne" ;
+ TEXT [ dutch ] = "Onvoldoende geheugen beschikbaar" ;
+ TEXT [ spanish ] = "Memoria insuficiente" ;
+ TEXT [ english_us ] = "Insufficient memory" ;
+ TEXT[ chinese_simplified ] = "ÄÚ´æ²»×ã";
+ TEXT[ russian ] = "Íåäîñòàòî÷íî ïàìÿòè";
+ TEXT[ polish ] = "Za ma³o pamiêci";
+ TEXT[ japanese ] = "\\•ª‚È‹ó‚«—e—Ê‚ª‚ ‚è‚Ü‚¹‚ñ";
+ TEXT[ chinese_traditional ] = "°O¾ÐÅ餣¨¬";
+ TEXT[ arabic ] = "ÇáÐÇßÑÉ ÛíÑ ßÇÝíÉ";
+ TEXT[ greek ] = "Ç ìíÞìç äåí åðáñêåß.";
+ TEXT[ korean ] = "¸Þ¸ð¸®°¡ ºÎÁ·ÇÕ´Ï´Ù.";
+ TEXT[ turkish ] = "Yetersiz bellek";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_W4W_MEM )
+ {
+ TEXT = "Nicht genügend Speicher vorhanden" ;
+ TEXT [ English ] = "Out of memory" ;
+ TEXT [ norwegian ] = "Ute av minne" ;
+ TEXT [ italian ] = "Memoria disponibile insufficiente" ;
+ TEXT [ portuguese_brazilian ] = "Sem memória" ;
+ TEXT [ portuguese ] = "Memória insuficiente" ;
+ TEXT [ finnish ] = "Muisti on lopussa" ;
+ TEXT [ danish ] = "Ikke nok hukommelse" ;
+ TEXT [ french ] = "Mémoire saturée" ;
+ TEXT [ swedish ] = "Inte tillräckligt med minne" ;
+ TEXT [ dutch ] = "Onvoldoende geheugen beschikbaar" ;
+ TEXT [ spanish ] = "Memoria insuficiente" ;
+ TEXT [ english_us ] = "Insufficient memory" ;
+ TEXT[ chinese_simplified ] = "ÄÚ´æ²»×ã";
+ TEXT[ russian ] = "Íåäîñòàòî÷íî ïàìÿòè";
+ TEXT[ polish ] = "Za ma³o pamiêci";
+ TEXT[ japanese ] = "\\•ª‚È‹ó‚«—e—Ê‚ª‚ ‚è‚Ü‚¹‚ñB";
+ TEXT[ chinese_traditional ] = "°O¾ÐÅ餣¨¬";
+ TEXT[ arabic ] = "ÇáÐÇßÑÉ ÛíÑ ßÇÝíÉ";
+ TEXT[ greek ] = "Ç ìíÞìç äåí åðáñêåß.";
+ TEXT[ korean ] = "¸Þ¸ð¸®°¡ ºÎÁ·ÇÕ´Ï´Ù.";
+ TEXT[ turkish ] = "Yetersiz bellek";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_W4W_WRITE_FULL )
+ {
+ TEXT = "Nicht genügend Platz auf dem Speichermedium" ;
+ TEXT [ English ] = "Not enough space on disk" ;
+ TEXT [ norwegian ] = "Ikke nok plass på disketten" ;
+ TEXT [ italian ] = "Spazio su disco insufficiente" ;
+ TEXT [ portuguese_brazilian ] = "Não há espaço suficiente em disco" ;
+ TEXT [ portuguese ] = "Espaço do disco insuficiente" ;
+ TEXT [ finnish ] = "Levytila ei riitä" ;
+ TEXT [ danish ] = "Ikke tilstrækkelig diskplads" ;
+ TEXT [ french ] = "Espace insuffisant sur le disque" ;
+ TEXT [ swedish ] = "Inte tillräckligt med diskutrymme" ;
+ TEXT [ dutch ] = "Onvoldoende vrije ruimte op opslagmedium" ;
+ TEXT [ spanish ] = "No hay suficiente espacio en el disco" ;
+ TEXT [ english_us ] = "Not enough disk space" ;
+ TEXT[ chinese_simplified ] = "¿ÉÓÿռ䲻×ã";
+ TEXT[ russian ] = "Íåäîñòàòî÷íî ìåñòà íà äèñêå";
+ TEXT[ polish ] = "Brak miejsca na dysku";
+ TEXT[ japanese ] = "ÒÓØ”}‘Ì‚É\\•ª‚È‹ó‚«—e—Ê‚ª‚ ‚è‚Ü‚¹‚ñB";
+ TEXT[ chinese_traditional ] = "¥i¥ÎªÅ¶¡¤£¨¬";
+ TEXT[ arabic ] = "áÇ íæÌÏ ãÓÇÍÉ ßÇÝíÉ Úáì ãÍÑß ÇáÃÞÑÇÕ";
+ TEXT[ greek ] = "Äåí õðÜñ÷åé áñêåôüò äéáèÝóéìïò ÷þñïò óôï ìÝóï áðïèÞêåõóçò";
+ TEXT[ korean ] = "µð½ºÅ© °ø°£ÀÌ ºÎÁ·ÇÕ´Ï´Ù.";
+ TEXT[ turkish ] = "Yeterli disk alaný yok";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_W4W_WRITE_FULL )
+ {
+ TEXT = "Nicht genügend Platz auf dem Speichermedium" ;
+ TEXT [ English ] = "Not enough space on disk" ;
+ TEXT [ norwegian ] = "Ikke nok plass på disketten" ;
+ TEXT [ italian ] = "Spazio su disco insufficiente" ;
+ TEXT [ portuguese_brazilian ] = "Não há espaço suficiente em disco" ;
+ TEXT [ portuguese ] = "Espaço do disco insuficiente" ;
+ TEXT [ finnish ] = "Levytila ei riitä" ;
+ TEXT [ danish ] = "Ikke tilstrækkelig diskplads" ;
+ TEXT [ french ] = "Espace insuffisant sur le disque" ;
+ TEXT [ swedish ] = "Inte tillräckligt med diskutrymme" ;
+ TEXT [ dutch ] = "Onvoldoende vrije ruimte op opslagmedium" ;
+ TEXT [ spanish ] = "No hay suficiente espacio en el disco" ;
+ TEXT [ english_us ] = "Not enough disk space" ;
+ TEXT[ chinese_simplified ] = "¿ÉÓÿռ䲻×ã";
+ TEXT[ russian ] = "Íåäîñòàòî÷íî ìåñòà íà äèñêå";
+ TEXT[ polish ] = "Brak miejsca na dysku";
+ TEXT[ japanese ] = "ÒÓØ”}‘Ì‚É\\•ª‚È‹ó‚«—e—Ê‚ª‚ ‚è‚Ü‚¹‚ñB";
+ TEXT[ chinese_traditional ] = "¥i¥ÎªÅ¶¡¤£¨¬";
+ TEXT[ arabic ] = "áÇ íæÌÏ ãÓÇÍÉ ßÇÝíÉ Úáì ãÍÑß ÇáÃÞÑÇÕ";
+ TEXT[ greek ] = "Äåí õðÜñ÷åé áñêåôüò äéáèÝóéìïò ÷þñïò óôï ìÝóï áðïèÞêåõóçò";
+ TEXT[ korean ] = "µð½ºÅ© °ø°£ÀÌ ÃæºÐÇÏÁö ¾Ê½À´Ï´Ù.";
+ TEXT[ turkish ] = "Yeterli disk alaný yok";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_W4W_INTERNAL_ERROR )
+ {
+ TEXT = "Unbekannter Fehler im W4W-Filter" ;
+ TEXT [ English ] = "Internal Error in W4W filter" ;
+ TEXT [ norwegian ] = "Intern feil I W4W filter" ;
+ TEXT [ italian ] = "Errore sconosciuto nel filtro W4W" ;
+ TEXT [ portuguese_brazilian ] = "Erro interno no filtro W4W" ;
+ TEXT [ portuguese ] = "Erro desconhecido no filtro W4W" ;
+ TEXT [ finnish ] = "Sisäinen virhe W4W-suotimessa" ;
+ TEXT [ danish ] = "Intern fejl i W4W-filtret" ;
+ TEXT [ french ] = "Erreur inconnue du filtre W4W" ;
+ TEXT [ swedish ] = "Obekant fel i W4W-filter" ;
+ TEXT [ dutch ] = "Onbekende fout in W4W-filter" ;
+ TEXT [ spanish ] = "Error desconocido en el filtro W4W" ;
+ TEXT [ english_us ] = "Unknown error in W4W filter" ;
+ TEXT[ chinese_simplified ] = "W4W ¹ýÂËÆ÷·¢Éú²»Ã÷´íÎó¡£";
+ TEXT[ russian ] = "Íåèçâåñòíàÿ îøèáêà â ôèëüòðå W4W";
+ TEXT[ polish ] = "Nieznany b³¹d w filtrze W4W";
+ TEXT[ japanese ] = "W4W̨ÙÀ‚É‚ ‚é•s–¾‚Ì´×°";
+ TEXT[ chinese_traditional ] = "W4W ¹LÂo¾¹µo¥Í¤£©ú¿ù»~¡C";
+ TEXT[ arabic ] = "ÍÏË ÎØà ÛíÑ ãÚÑæÝ Ýí ÝáÊÑ W4W";
+ TEXT[ greek ] = "¢ãíùóôï óöÜëìá óôï ößëôñï W4W";
+ TEXT[ korean ] = "W4W ÇÊÅÍ¿¡ ¾Ë·ÁÁöÁö ¾ÊÀº ¿À·ù";
+ TEXT[ turkish ] = "W4W filtresinde bilinmeyen hata";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_W4W_INTERNAL_ERROR )
+ {
+ TEXT = "Unbekannter Fehler im W4W-Filter" ;
+ TEXT [ English ] = "Internal Error in W4W filter" ;
+ TEXT [ norwegian ] = "Intern feil I W4W filter" ;
+ TEXT [ italian ] = "Errore sconosciuto nel filtro W4W" ;
+ TEXT [ portuguese_brazilian ] = "Erro interno no filtro W4W" ;
+ TEXT [ portuguese ] = "Erro desconhecido no filtro W4W" ;
+ TEXT [ finnish ] = "Sisäinen virhe W4W-suotimessa" ;
+ TEXT [ danish ] = "Intern fejl i W4W-filtret" ;
+ TEXT [ french ] = "Erreur inconnue dans le filtre W4W" ;
+ TEXT [ swedish ] = "Obekant fel i W4W-filter" ;
+ TEXT [ dutch ] = "Onbekende fout in W4W-filter" ;
+ TEXT [ spanish ] = "Error desconocido en el filtro W4W" ;
+ TEXT [ english_us ] = "Unknown error in W4W filter" ;
+ TEXT[ chinese_simplified ] = "W4W ¹ýÂËÆ÷·¢Éú²»Ã÷´íÎó¡£";
+ TEXT[ russian ] = "Íåèçâåñòíàÿ îøèáêà â ôèëüòðå W4W";
+ TEXT[ polish ] = "Nieznany b³¹d w filtrze W4W";
+ TEXT[ japanese ] = "W4W̨ÙÀ‚É‚ ‚é•s–¾‚Ì´×°";
+ TEXT[ chinese_traditional ] = "W4W ¹LÂo¾¹µo¥Í¤£©ú¿ù»~¡C";
+ TEXT[ arabic ] = "ÍÏË ÎØà ÛíÑ ãÚÑæÝ Ýí ÝáÊÑ W4W";
+ TEXT[ greek ] = "¢ãíùóôï óöÜëìá óôï ößëôñï W4W";
+ TEXT[ korean ] = "W4W ÇÊÅÍ¿¡ ¾Ë·ÁÁöÁö ¾ÊÀº ¿À·ù";
+ TEXT[ turkish ] = "W4W filtresinde bilinmeyen hata";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_READ , ERR_W4W_DLL_ERROR )
+ {
+ TEXT = "Fehler beim Laden des Konverters" ;
+ TEXT [ English ] = "Error in loading converter " ;
+ TEXT [ norwegian ] = "Feil ved innlasting av omformer " ;
+ TEXT [ italian ] = "Errore nel caricamento del convertitore" ;
+ TEXT [ portuguese_brazilian ] = "Erro em carregar conversão" ;
+ TEXT [ portuguese ] = "Erro ao carregar o conversor" ;
+ TEXT [ finnish ] = "Virhe ladattaessa suodinta " ;
+ TEXT [ danish ] = "Fejl under indlæsning af konverteren" ;
+ TEXT [ french ] = "Erreur de chargement du convertisseur" ;
+ TEXT [ swedish ] = "Fel vid laddning av konverteraren" ;
+ TEXT [ dutch ] = "Fout bij het laden van de converter" ;
+ TEXT [ spanish ] = "Error al cargar el convertidor" ;
+ TEXT [ english_us ] = "Error loading converter" ;
+ TEXT[ chinese_simplified ] = "ÔÚת»»Ê±·¢Éú´íÎó";
+ TEXT[ russian ] = "Îøèáêà ïðè çàãðóçêå êîíâåðòîðà";
+ TEXT[ polish ] = "B³¹d podczas ³adowania konwertera";
+ TEXT[ japanese ] = "ºÝÊÞ°À“Ç‚Ýž‚Ý’†‚Ì´×°";
+ TEXT[ chinese_traditional ] = "Âà´«®Éµo¥Í¿ù»~";
+ TEXT[ arabic ] = "ÍÏË ÎØà ÃËäÇÁ ÊÍãíá ÇáãÍæá";
+ TEXT[ greek ] = "ÓöÜëìá êáôÜ ôç öüñôùóç ôïõ ìåôáôñïðÝá";
+ TEXT[ korean ] = "º¯È¯ ·Îµå ¿À·ù";
+ TEXT[ turkish ] = "Dönüþtürücü yükleme hatasý";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_W4W_DLL_ERROR )
+ {
+ TEXT = "Fehler beim Laden des Konverters" ;
+ TEXT [ English ] = "Error in loading converter " ;
+ TEXT [ norwegian ] = "Feil ved innlasting av omformer " ;
+ TEXT [ italian ] = "Errore nel caricamento del convertitore" ;
+ TEXT [ portuguese_brazilian ] = "Erro em carregar conversão" ;
+ TEXT [ portuguese ] = "Erro ao carregar o conversor" ;
+ TEXT [ finnish ] = "Virhe ladattaessa suodinta " ;
+ TEXT [ danish ] = "Fejl under indlæsning af konverteren" ;
+ TEXT [ french ] = "Erreur de chargement du convertisseur" ;
+ TEXT [ swedish ] = "Fel vid laddning av konverteraren" ;
+ TEXT [ dutch ] = "Fout bij het laden van de converter" ;
+ TEXT [ spanish ] = "Error al cargar el convertidor" ;
+ TEXT [ english_us ] = "Error loading converter" ;
+ TEXT[ chinese_simplified ] = "ת»»Ê±·¢Éú´íÎó";
+ TEXT[ russian ] = "Îøèáêà ïðè çàãðóçêå êîíâåðòîðà";
+ TEXT[ polish ] = "B³¹d podczas ³adowania konwertera";
+ TEXT[ japanese ] = "ºÝÊÞ°À“Ç‚Ýž‚Ý’†‚Ì´×°";
+ TEXT[ chinese_traditional ] = "Âà´«®Éµo¥Í¿ù»~";
+ TEXT[ arabic ] = "ÍÏË ÎØà ÃËäÇÁ ÊÍãíá ÇáãÍæá";
+ TEXT[ greek ] = "ÓöÜëìá êáôÜ ôç öüñôùóç ôïõ ìåôáôñïðÝá";
+ TEXT[ korean ] = "º¯È¯ ·Îµå ¿À·ù";
+ TEXT[ turkish ] = "Dönüþtürücü yükleme hatasý";
+ TEXT[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_LOCKING , ERR_TXTBLOCK_NEWFILE_ERROR )
+ {
+ TEXT = "$(ARG1) hat sich geändert" ;
+ TEXT [ English ] = "$(ARG1) has changed" ;
+ Text [ dutch ] = "$(ARG1) is veranderd" ;
+ Text [ english_us ] = "$(ARG1) has changed" ;
+ Text [ italian ] = "$(ARG1) è cambiato" ;
+ Text [ spanish ] = "$(ARG1) se ha modificado" ;
+ Text [ french ] = "$(ARG1) a été modifié" ;
+ Text [ swedish ] = "$(ARG1) har ändrats" ;
+ Text [ danish ] = "$(ARG1) er ændret" ;
+ Text [ portuguese ] = "$(ARG1) foi modificado" ;
+ Text [ portuguese_brazilian ] = "$(ARG1) hat sich geändert" ;
+ Text[ chinese_simplified ] = "$(ARG1) ÒѾ­¸ü¸Ä¡£";
+ Text[ russian ] = "$(ARG1) èçìåíèëñÿ";
+ Text[ polish ] = "$(ARG1) uleg³ zmianie";
+ Text[ japanese ] = "$(ARG1)‚Í•ÏX‚³‚ê‚Ü‚µ‚½";
+ Text[ chinese_traditional ] = "$(ARG1) ¤w¸gÅܧó¡C";
+ Text[ arabic ] = "ÊÛíÑ $(ARG1)";
+ Text[ greek ] = "$(ARG1) Ý÷åé áëëÜîåé";
+ Text[ korean ] = "$(ARG1) ÀÌ º¯°æµÇ¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "$(ARG1) deðiþti";
+ Text[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_PATH , ERR_AUTOPATH_ERROR )
+ {
+ TEXT = "$(ARG1) existiert nicht" ;
+ TEXT [ English ] = "$(ARG1) does not exist" ;
+ Text [ dutch ] = "$(ARG1) bestaat niet" ;
+ Text [ english_us ] = "$(ARG1) does not exist" ;
+ Text [ italian ] = "$(ARG1) non esiste" ;
+ Text [ spanish ] = "$(ARG1) no existe" ;
+ Text [ french ] = "$(ARG1) n'existe pas" ;
+ Text [ swedish ] = "$(ARG1) existerar inte" ;
+ Text [ danish ] = "$(ARG1) eksisterer ikke" ;
+ Text [ portuguese ] = "$(ARG1) não existe" ;
+ Text [ portuguese_brazilian ] = "$(ARG1) existiert nicht" ;
+ Text[ chinese_simplified ] = "$(ARG1) ²»´æÔÚ";
+ Text[ russian ] = "$(ARG1) íå ñóùåñòâóåò";
+ Text[ polish ] = "$(ARG1) nie istnieje";
+ Text[ japanese ] = "$(ARG1)‚Í‚ ‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "$(ARG1) ¤£¦s¦b";
+ Text[ arabic ] = "$(ARG1) ÛíÑ ãæÌæÏ";
+ Text[ greek ] = "$(ARG1) äåí õðÜñ÷åé";
+ Text[ korean ] = "$(ARG1) ÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "$(ARG1) mevcut deðil";
+ Text[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_NONE , ERR_TBLSPLIT_ERROR )
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen können nicht mehr geteilt werden : Zellen k÷nnen nicht mehr geteilt werden */
+ TEXT = "Zellen können nicht mehr geteilt werden" ;
+ TEXT [ English ] = "Cells can not be split" ;
+ Text [ dutch ] = "Cellen kunnen niet meer worden gesplitst" ;
+ Text [ english_us ] = "Cells cannot be further split" ;
+ Text [ italian ] = "Non è più possibile dividere le celle" ;
+ Text [ spanish ] = "Las celdas no se pueden dividir más" ;
+ Text [ french ] = "Impossible de scinder (davantage) les cellules" ;
+ Text [ swedish ] = "Cellerna kan inte delas mer" ;
+ Text [ danish ] = "Cellerne kan ikke deles mere" ;
+ Text [ portuguese ] = "É impossível dividir mais as células" ;
+ Text [ portuguese_brazilian ] = "Zellen können nicht mehr geteilt werden" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨·Ö¸ôµ¥Ôª¸ñ";
+ Text[ russian ] = "Ðàçáèòü ÿ÷åéêè áîëüøå íåâîçìîæíî";
+ Text[ polish ] = "Komórek nie mo¿na podzieliæ";
+ Text[ japanese ] = "‚±‚êˆÈã¾Ù‚𕪊„‚Å‚«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªk¤À¶}Àx¦s®æ";
+ Text[ arabic ] = "áÇ íãßä ÊÞÓíã ÇáÎáÇíÇ ÃßËÑ ãä Ðáß";
+ Text[ greek ] = "Ç åðéðëÝïí äéáßñåóç ôùí êåëéþí åßíáé áäýíáôç";
+ Text[ korean ] = "¼¿ÀÌ ´õÀÌ»ó ³ª´©¾îÁöÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Hücreler daha fazla bölünemiyor";
+ Text[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_NONE , ERR_TBLINSCOL_ERROR )
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? weitere Spalten können nicht eingefügt werden : weitere Spalten k÷nnen nicht eingef³gt werden */
+ TEXT = "weitere Spalten können nicht eingefügt werden" ;
+ TEXT [ English ] = "more Columns cannot be insertet" ;
+ Text [ dutch ] = "Meer kolommen kunnen niet worden ingevoegd" ;
+ Text [ english_us ] = "Additional columns cannot be inserted" ;
+ Text [ italian ] = "Impossibile inserire altre colonne." ;
+ Text [ spanish ] = "No se pueden insertar columnas adicionales" ;
+ Text [ french ] = "Impossible d'insérer des colonnes supplémentaires" ;
+ Text [ swedish ] = "Ytterligare kolumner kan inte infogas" ;
+ Text [ danish ] = "Det er ikke muligt at indsætte flere kolonner" ;
+ Text [ portuguese ] = "Impossível inserir colunas adicionais" ;
+ Text [ portuguese_brazilian ] = "weitere Spalten können nicht eingefügt werden" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨²åÈëÆäËüµÄÁÐ";
+ Text[ russian ] = "Äîïîëíèòåëüíûå ñòîëáöû âñòàâèòü íåâîçìîæíî";
+ Text[ polish ] = "dodatkowych kolumn nie mo¿na wstawiæ";
+ Text[ japanese ] = "’ljÁ‚Ì—ñ‚ð‘}“ü‚Å‚«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªk´¡¤J¨ä¥¦Äæ";
+ Text[ arabic ] = "áÇ íãßä ÅÏÑÇÌ ÇáãÒíÏ ãä ÇáÃÚãÏÉ";
+ Text[ greek ] = "äåí ìðïñïýí íá åéóá÷èïýí ðåñéóóüôåñåò óôÞëåò";
+ Text[ korean ] = "ºÎ°¡ÀûÀÎ ¿­ÀÌ »ðÀԵɼö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Daha fazla sütun eklenemiyor";
+ Text[ language_user1 ] = " ";
+ };
+ String ERR_CODE ( ERRCODE_CLASS_NONE , ERR_TBLDDECHG_ERROR )
+ {
+ TEXT = "Bei einer verknüpften Tabelle darf die Struktur nicht verändert werden" ;
+ TEXT [ English ] = "The linked table could not be changed the structure" ;
+ Text [ portuguese ] = "É impossível modificar a estrutura de uma tabela ligada" ;
+ Text [ english_us ] = "The structure of a linked table cannot be modified" ;
+ Text [ portuguese_brazilian ] = "Bei einer verknüpften Tabelle darf die Struktur nicht verändert werden" ;
+ Text [ swedish ] = "Strukturen på en länkad tabell får inte ändras" ;
+ Text [ danish ] = "En kædet tabels struktur må ikke ændres" ;
+ Text [ italian ] = "In una tabella collegata non sono ammesse modifiche alla struttura." ;
+ Text [ spanish ] = "No se puede modificar la estructura de una tabla vinculada" ;
+ Text [ french ] = "La structure d'un tableau ne peut pas être modifiée s'il a fait l'objet d'un lien" ;
+ Text [ dutch ] = "Bij een gekoppelde tabel mag de structuur niet worden veranderd." ;
+ Text[ chinese_simplified ] = "²»Äܸü¸ÄÒ»¸öÁ´½ÓµÄ±í¸ñ½á¹¹";
+ Text[ russian ] = "Èçìåíÿòü ñòðóêòóðó ñâÿçàííîé òàáëèöû íåëüçÿ";
+ Text[ polish ] = "Przy po³¹czonej tabeli nie wolno zmieniaæ jej struktury";
+ Text[ japanese ] = "Øݸ‚³‚ꂽ•\\‚Ì\\‘¢‚Í•ÏX‚Å‚«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¤£¯àÅܧó¤@­Ó³sµ²ªºªí®æµ²ºc";
+ Text[ arabic ] = "áÇ íãßä ÊÚÏíá ÈäíÉ ÌÏæá ãÑÊÈØ";
+ Text[ greek ] = "Äåí åßíáé äõíáôÞ ç áëëáãÞ äïìÞò åíüò óõíäåäåìÝíïõ ðßíáêá";
+ Text[ korean ] = "¿¬°áµÈ Å×À̺íÀÇ ±¸Á¶°¡ ¼öÁ¤µÇ¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Baðlantýlý bir tablonun yapýsý deðiþtirilmez";
+ Text[ language_user1 ] = " ";
+ };
+ // -------------------- Warnings -----------------------------------
+ String WARN_CODE ( ERRCODE_CLASS_READ , WARN_SWG_NO_DRAWINGS )
+ {
+ TEXT = "Es konnten keine Zeichnungen geladen werden" ;
+ TEXT [ English ] = "No drawings could be read" ;
+ Text [ english_us ] = "No drawings could be read" ;
+ Text [ italian ] = "Non è stato possibile caricare alcun disegno" ;
+ Text [ spanish ] = "No se pudo cargar ningún dibujo" ;
+ Text [ french ] = "Impossible de charger des dessins" ;
+ Text [ dutch ] = "Er konden geen tekeningen worden geladen" ;
+ Text [ swedish ] = "Inga teckningar kunde laddas" ;
+ Text [ danish ] = "Det var ikke muligt at indlæse nogen tegninger" ;
+ Text [ portuguese ] = "Foi impossível carregar desenhos" ;
+ Text [ portuguese_brazilian ] = "Es konnten keine Zeichnungen geladen werden" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨×°ÔØͼÏñ";
+ Text[ russian ] = "Çàãðóçêà ðèñóíêîâ íåâîçìîæíà";
+ Text[ polish ] = "¯adne rysunki nie mog³y zostaæ za³adowane";
+ Text[ japanese ] = "}Œ`•`‰æ‚Í“Ç‚Ýž‚Ý‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½";
+ Text[ chinese_traditional ] = "µLªk¸Ë¸ü¼v¹³";
+ Text[ arabic ] = "ÊÚÐÑ ÊÍãíá ÃíÉ ÑÓæãÇÊ";
+ Text[ greek ] = "Äåí Þôáí äõíáôÞ ç öüñôùóç ó÷åäßùí";
+ Text[ korean ] = "±×¸®±â°¡ ÀÐÇôÁú ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Çizim yüklenemedi";
+ Text[ language_user1 ] = " ";
+ };
+ String WARN_CODE ( ERRCODE_CLASS_READ , WARN_WW6_FASTSAVE_ERR )
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Diese Datei wurde mit der WinWord-Option 'Schnellspeichern' gespeichert. Bitte schalten Sie in WinWord die Option 'Schnellspeichern zulassen' aus und speichern sie die Datei erneut mit WinWord : Diese Datei wurde mit der WinWord-Option ''Schnellspeichern'' gespeichert. Bitte schalten Sie in WinWord die Option ''Schnellspeichern zulassen'' aus und speichern sie die Datei erneut mit WinWord */
+ /* ### ACHTUNG: Neuer Text in Resource? Diese Datei wurde mit der WinWord-Option 'Schnellspeichern' gespeichert. Bitte schalten Sie in WinWord die Option 'Schnellspeichern zulassen' aus und speichern sie die Datei erneut mit WinWord : Diese Datei wurde mit der WinWord-Option ''Schnellspeichern'' gespeichert. Bitte schalten Sie in WinWord die Option ''Schnellspeichern zulassen'' aus und speichern sie die Datei erneut mit WinWord */
+ /* ### ACHTUNG: Neuer Text in Resource? Diese Datei wurde mit der WinWord-Option 'Schnellspeichern' gespeichert. Bitte schalten Sie in WinWord die Option 'Schnellspeichern zulassen' aus und speichern sie die Datei erneut mit WinWord : Diese Datei wurde mit der WinWord-Option ''Schnellspeichern'' gespeichert. Bitte schalten Sie in WinWord die Option ''Schnellspeichern zulassen'' aus und speichern sie die Datei erneut mit WinWord */
+ /* ### ACHTUNG: Neuer Text in Resource? Diese Datei wurde mit der WinWord-Option 'Schnellspeichern' gespeichert. Bitte schalten Sie in WinWord die Option 'Schnellspeichern zulassen' aus und speichern sie die Datei erneut mit WinWord : Diese Datei wurde mit der WinWord-Option ''Schnellspeichern'' gespeichert. Bitte schalten Sie in WinWord die Option ''Schnellspeichern zulassen'' aus und speichern sie die Datei erneut mit WinWord */
+ TEXT = "Diese Datei wurde mit der WinWord-Option 'Schnellspeichern' gespeichert. Bitte schalten Sie in WinWord die Option 'Schnellspeichern zulassen' aus und speichern sie die Datei erneut mit WinWord" ;
+ TEXT [ English ] = "This file is stored with the WinWord-Option 'fastsave'. Please disable the WinWord option 'Allow Fast Saves' and use WinWord to save the file again" ;
+ TEXT [ norwegian ] = "Denne filen er lagret med alternativet til WinWord 'hurtiglagre'. Sperr WinWord alternativet ' Tillat Hurtige Lagringer' og bruk WinWord for å lagre filen igjen" ;
+ TEXT [ italian ] = "Questo file è stato salvato con l'opzione di Winword 'salvataggio veloce'. Disabilitate l'opzione di WinWord 'Salvataggio veloce' ed utilizzate WinWord per salvare di nuovo il file." ;
+ TEXT [ portuguese_brazilian ] = "Este arquivo foi armazenado com a opção do WinWord 'fastsave'. Por favor desative a opção do WinWord 'Allow Fast Saves' e utilize o WinWord para gravar novamente o arquivo" ;
+ TEXT [ portuguese ] = "Este ficheiro foi guardado com a opção do WinWord \"Guardar rápido\". Desactive a opção do WinWord \"Permitir Guardar rápido\" e guarde novamente o ficheiro em WinWord" ;
+ TEXT [ finnish ] = "Tämä tiedosto on tallennettu käyttäen WinWordin pikatallennusta. Poista pikatallennus käytöstä WinWordissa ja tallennatiedosto uudelleen" ;
+ TEXT [ danish ] = "Denne fil er blevet gemt med WinWord-indstillingen 'Gem hurtigt'. Deaktiver venligst indstillingen 'Gem hutigt' og gem filen igen med WinWord." ;
+ TEXT [ french ] = "Ce fichier a été enregistré à l'aide de l'option 'Enregistrement rapide' de WinWord. Veuillez désactiver cette option et utiliser WinWord pour enregistrer à nouveau le fichier." ;
+ TEXT [ swedish ] = "Denna fil är sparad med WinWord-alternativet 'snabbspara'. Stäng av WinWord-alternativet 'Tillåt snabbspara' och spara filen med WinWord igen" ;
+ TEXT [ dutch ] = "Dit bestand werd met de WinWord optie \"Snel opslaan\" opgeslagen. Schakel a.u.b in WinWord de optie \"Snel opslaan toestaan\" uit en sla het bestand opnieuw op met WinWord." ;
+ TEXT [ spanish ] = "Este archivo ha sido guardado con la opción de WinWord 'guardar rápidamente' . Por favor desactive en WinWord la opción 'permitir guardar rápidamente' y guarde nuevamente el archivo con WinWord" ;
+ TEXT [ english_us ] = "This file was saved with WinWord in 'Fast Save' mode. Please uncheck the option 'Allow Fast Saves' and save the file again." ;
+ TEXT[ chinese_simplified ] = "Õâ¸öÎļþ´æÅ̲ÉÓõÄÊÇ WinWord Ñ¡Ïî '¿ìËÙ±£´æ'·½Ê½¡£ÇëÄúʧ»îÕâ¸öÑ¡ÏȻºóÔÚÖØдæÅÌÕâ¸öÎļþ¡£";
+ TEXT[ russian ] = "Ýòîò ôàéë ñîõðàíåí ïðè ïîìîùè ïàðàìåòðà WinWord 'Áûñòðîå ñîõðàíåíèå'. Ïîæàëóéñòà, îòêëþ÷èòå ïàðàìåòð 'Ðàçðåøèòü áûñòðîå ñîõðàíåíèå' è çàíîâî ñîõðàíèòå ýòîò ôàéë ñ ïîìîùüþ WinWord";
+ TEXT[ polish ] = "Ten plik zosta³ zapisany za pomoc¹ opcji WinWord 'Szybkie zapisywanie'. Proszê wy³¹cz w WinWord opcjê 'Dopuœæ szybkie zapisywanie' i zapisz plik ponownie w WinWord.";
+ TEXT[ japanese ] = "‚±‚Ì̧²Ù‚ÍAWinWordµÌß¼®Ý‚Ì'‚‘¬•Û‘¶'‚Å•Û‘¶‚³‚ê‚Ä‚¢‚Ü‚·BWinWord‚̵Ìß¼®Ý '‚‘¬•Û‘¶' ‚ðµÌ‚É‚µ‚ÄA̧²Ù‚ðV‚½‚ÉWinWord‚Å•Û‘¶‚µ‚ĉº‚³‚¢B";
+ TEXT[ chinese_traditional ] = "Àx¦sÀɮױĥΪº¬O WinWord ¿ï¶µ '§Ö³tÀx¦s'¤è¦¡¡C½Ð±z¥¢¬¡³o­Ó¿ï¶µ¡MµM«á¦b­«·sÀx¦s³o­ÓÀɮסC";
+ TEXT[ arabic ] = "Êã ÍÝÙ åÐÇ ÇáãáÝ Úä ØÑíÞ ÎíÇýÑ 'ÇáÍÝÙ ÇáÓÑíÚ' Ýí WinWord. ÇáÑÌÇÁ ÅíÞÇÝ ÎÇÕíÉ 'ÇáÓãÇÍ ÈÇáÍÝÙ ÇáÓÑíÚ' Ýí WinWord¡ Ëã Þã ÈÍÝÙ ÇáãáÝ ãä ÌÏíÏ ÈæÇÓØÉ WinWord.";
+ TEXT[ greek ] = "Ôï áñ÷åßï áõôü áðïèçêåýôçêå ìå ôçí åðéëïãÞ 'ÃñÞãïñç áðïèÞêåõóç' ôïõ WinWord. Ðáñáêáëþ áðåíåñãïðïéÞóåôå ôçí åðéëïãÞ áõôÞ ôïõ WinWord êáé áðïèçêåýóôå ôï áñ÷åßï îáíÜ óôï WinWord.";
+ TEXT[ korean ] = "ÀÌ ÆÄÀÏÀº WinWordÀÇ 'ºü¸¥ ÀúÀå' ¸ðµå·Î ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù. ¿É¼Ç 'ºü¸¥ ÀúÀå Çã¿ë'À» ÇØÁ¦ÇϽðí ÆÄÀÏÀ» ´Ù½Ã ÀúÀåÇϽʽÿÀ.";
+ TEXT[ turkish ] = "Bu dosya WinWord seçeneði 'Hýzlý kaydet' ile kaydedilmiþ. WinWord'de 'Hýzlý kaydetmeye olanak saðla' seçeneðini geçersiz kýlýp dosyayý yeniden WinWord ile kaydedin";
+ TEXT[ language_user1 ] = " ";
+ };
+ String WARN_CODE ( ERRCODE_CLASS_READ , WARN_SWG_FEATURES_LOST )
+ {
+ TEXT = "Es konnten nicht alle Attribute gelesen werden" ;
+ TEXT [ English ] = "Not all attributes could be read" ;
+ Text [ dutch ] = "Niet alle attributen konden worden ingelezen" ;
+ Text [ english_us ] = "Not all attributes could be read" ;
+ Text [ italian ] = "Non è stato possibile leggere tutti gli attributi" ;
+ Text [ spanish ] = "No se pudieron leer todos los atributos" ;
+ Text [ french ] = "Impossible de lire tous les attributs" ;
+ Text [ swedish ] = "Alla attribut kunde inte läsas" ;
+ Text [ danish ] = "Det var ikke muligt at læse alle attributter" ;
+ Text [ portuguese ] = "Foi impossível ler todos os atributos" ;
+ Text [ portuguese_brazilian ] = "Es konnten nicht alle Attribute gelesen werden" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨¶ÁÈ¡ËùÓеÄÊôÐÔ";
+ Text[ russian ] = "Âñå àòðèáóòû ïðî÷èòàòü íåâîçìîæíî";
+ Text[ polish ] = "Nie wszystkie atrybuty mog³y zostaæ odczytane";
+ Text[ japanese ] = "‚·‚ׂĂ̑®«‚ð“Ç‚ÝŽæ‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½";
+ Text[ chinese_traditional ] = "µLªkŪ¨ú©Ò¦³ªºÄÝ©Ê";
+ Text[ arabic ] = "ÊÚÐÑ ÞÑÇÁÉ ßá ÇáÓãÇÊ";
+ Text[ greek ] = "Äåí Þôáí äõíáôÞ ç áíÜãíùóç üëùí ôùí ÷áñáêôçñéóôéêþí";
+ Text[ korean ] = "¸ðµç ¼Ó¼ºÀÌ ÀÐÇô Áú¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Tüm öznitelikler okunamadý";
+ Text[ language_user1 ] = " ";
+ };
+ String WARN_CODE ( ERRCODE_CLASS_WRITE , WARN_SWG_FEATURES_LOST )
+ {
+ TEXT = "Es konnten nicht alle Attribute geschrieben werden" ;
+ TEXT [ English ] = "Not all attributes could be written" ;
+ Text [ english_us ] = "Not all attributes could be recorded" ;
+ Text [ italian ] = "Non è stato possibile scrivere tutti gli attributi" ;
+ Text [ spanish ] = "No se pudieron grabar todos los atributos" ;
+ Text [ french ] = "Impossible d'écrire tous les attributs" ;
+ Text [ dutch ] = "Niet alle attributen konden worden geschreven" ;
+ Text [ swedish ] = "Alla attribut kunde inte skrivas" ;
+ Text [ danish ] = "Det var ikke muligt at skrive alle attributter" ;
+ Text [ portuguese ] = "Foi impossível gravar todos os atributos" ;
+ Text [ portuguese_brazilian ] = "Es konnten nicht alle Attribute geschrieben werden" ;
+ Text[ chinese_simplified ] = "²»ÄÜдÈëËùÓеÄÊôÐÔ";
+ Text[ russian ] = "Âñå àòðèáóòû çàïèñàòü íåâîçìîæíî";
+ Text[ polish ] = "Nie wszystkie atrybuty mog³y zostaæ zapisane";
+ Text[ japanese ] = "‚·‚ׂĂ̑®«‚ð‹L˜^‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½";
+ Text[ chinese_traditional ] = "¤£¯à¼g¤J©Ò¦³ªºÄÝ©Ê";
+ Text[ arabic ] = "ÊÚÐÑ ßÊÇÈÉ ßá ÇáÓãÇÊ";
+ Text[ greek ] = "Äåí Þôáí äõíáôÞ ç êáôáãñáöÞ üëùí ôùí ÷áñáêôçñéóôéêþí";
+ Text[ korean ] = "¸ðµç ¼Ó¼ºÀÌ ±â·ÏµÉ ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Tüm öznitelikler yazýlamadý";
+ Text[ language_user1 ] = " ";
+ };
+ String WARN_CODE ( ERRCODE_CLASS_READ , WARN_SWG_OLE )
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Einige OLE-Objekte konnten nur als Grafiken übernommen werden : Einige OLE-Objekte konnten nur als Grafiken ³bernommen werden */
+ TEXT = "Einige OLE-Objekte konnten nur als Grafiken übernommen werden" ;
+ TEXT [ English ] = "Some OLE Objects could only be loaded as graphics" ;
+ Text [ dutch ] = "Enkele OLE-objecten konden alleen als grafische objecten worden overgenomen" ;
+ Text [ english_us ] = "Some OLE objects could only be loaded as graphics" ;
+ Text [ italian ] = "Alcuni oggetti OLE sono stati prelevati solo come immagini" ;
+ Text [ spanish ] = "Algunos objetos OLE se pudieron incluir solo como imágenes" ;
+ Text [ french ] = "Certains objets OLE ont pu être chargés uniquement sous forme d'images" ;
+ Text [ swedish ] = "Några OLE-objekt kunde bara övertas som grafiker" ;
+ Text [ danish ] = "Nogle OLE-objekter kunne kun overtages som grafik" ;
+ Text [ portuguese ] = "Alguns dos objectos OLE puderam ser apenas carregados como imagens" ;
+ Text [ portuguese_brazilian ] = "Einige OLE-Objekte konnten nur als Grafiken übernommen werden" ;
+ Text[ chinese_simplified ] = "һЩ OLE ¶ÔÏóÖ»ÄÜÒÔͼÏñ·½Ê½×°ÔØ";
+ Text[ russian ] = "Çàãðóçêà íåêîòîðûõ îáúåêòîâ OLE âîçìîæíà òîëüêî â êà÷åñòâå ðèñóíêîâ";
+ Text[ polish ] = "Niektóre obiekty OLE mog¹ zostaæ za³adowane tylko jako grafiki";
+ Text[ japanese ] = "‚¢‚­‚‚©‚ÌOLEµÌÞ¼Þª¸Ä‚͸Þׯ̨¯¸½‚Æ‚µ‚Ä‚Ì‚Ý“Ç‚Ýž‚Þ‚±‚Æ‚ª‚Å‚«‚Ü‚·";
+ Text[ chinese_traditional ] = "¤@¨Ç OLE-ª«¥ó¥u¯à¥H¹Ï¤ù¤è¦¡¸Ë¸ü";
+ Text[ arabic ] = "áã íßä ãä Çáããßä ÊØÈíÞ ÈÚÖ ßÇÆäÇÊ OLE ÅáÇ ßÑÓæãÇÊ";
+ Text[ greek ] = "ÌåñéêÜ áíôéêåßìåíá OLE ìðüñåóáí íá öïñôùèïýí ìüíï ùò ãñáöéêÜ";
+ Text[ korean ] = "¾à°£ÀÇ OLE °³Ã¼µéÀº ±×·¡ÇÈÀ¸·Î¸¸ ·Îµå µÉ ¼ö ÀÖ½À´Ï´Ù.";
+ Text[ turkish ] = "Bazý OLE nesneleri yalnýzca grafik olarak yüklenebildi";
+ Text[ language_user1 ] = " ";
+ };
+ String WARN_CODE ( ERRCODE_CLASS_WRITE , WARN_SWG_OLE )
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Einige OLE-Objekte konnten nur als Grafiken übernommen werden : Einige OLE-Objekte konnten nur als Grafiken ³bernommen werden */
+ TEXT = "Einige OLE-Objekte konnten nur als Grafiken übernommen werden" ;
+ TEXT [ English ] = "Some OLE Objects could only be saved as graphics" ;
+ Text [ english_us ] = "Some OLE objects could only be saved as graphics" ;
+ Text [ italian ] = "Alcuni oggetti OLE sono stati prelevati solo come immagini" ;
+ Text [ spanish ] = "Algunos objetos OLE se pudieron incluir solo como imágenes" ;
+ Text [ french ] = "Certains objets OLE ont pu être chargés uniquement sous forme d'images" ;
+ Text [ dutch ] = "Enkele OLE-objecten konden alleen als grafische objecten worden overgenomen" ;
+ Text [ swedish ] = "Några OLE-objekt kunde bara övertas som grafiker" ;
+ Text [ danish ] = "Nogle OLE-objekter kunne kun overtages som grafik" ;
+ Text [ portuguese ] = "Alguns dos objectos OLE foram carregados apenas como imagens" ;
+ Text [ portuguese_brazilian ] = "Einige OLE-Objekte konnten nur als Grafiken übernommen werden" ;
+ Text[ chinese_simplified ] = "һЩ OLE ¶ÔÏóÎÞ·¨±»´æÅÌΪͼÐÎ";
+ Text[ russian ] = "Çàãðóçêà íåêîòîðûõ îáúåêòîâ OLE âîçìîæíà òîëüêî â êà÷åñòâå ðèñóíêîâ";
+ Text[ polish ] = "Niektóre obiekty OLE mog³y zostaæ za³adowane tylko jako grafiki";
+ Text[ japanese ] = "‚¢‚­‚‚©‚ÌOLEµÌÞ¼Þª¸Ä‚͸Þ×̨¯¸½‚Æ‚µ‚Ä‚Ì‚Ý•Û‘¶‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·";
+ Text[ chinese_traditional ] = "¤@¨Ç OLE-ª«¥óµLªk³QÀx¦s¬°¹Ï¤ù";
+ Text[ arabic ] = "áã íßä ãä Çáããßä ÊØÈíÞ ÈÚÖ ßÇÆäÇÊ OLE ÅáÇ ßÑÓæãÇÊ";
+ Text[ greek ] = "ÌåñéêÜ áíôéêåßìåíá OLE ìðüñåóáí íá öïñôùèïýí ìüíï ùò ãñáöéêÜ";
+ Text[ korean ] = "¾à°£ÀÇ OLE °³Ã¼µéÀº ±×·¡ÇÈÀ¸·Î¸¸ ÀúÀå µÉ ¼ö ÀÖ½À´Ï´Ù.";
+ Text[ turkish ] = "Bazý OLE nesneleri yalnýzca grafik olarak yüklenebildi";
+ Text[ language_user1 ] = " ";
+ };
+ String WARN_CODE ( ERRCODE_CLASS_READ , WARN_SWG_POOR_LOAD )
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Dokument konnte nicht vollständig geladen werden : Dokument konnte nicht vollstõndig geladen werden */
+ TEXT = "Dokument konnte nicht vollständig geladen werden" ;
+ TEXT [ English ] = "Document could not be loaded completely" ;
+ Text [ dutch ] = "Document kon niet volledig worden geladen" ;
+ Text [ english_us ] = "Document could not be completely loaded" ;
+ Text [ italian ] = "Non è stato possibile caricare il file completamente" ;
+ Text [ spanish ] = "No se pudo cargar completamente el documento" ;
+ Text [ french ] = "Le document n'a pas pu être chargé dans son intégralité" ;
+ Text [ swedish ] = "Dokumentet kunde inte laddas fullständigt" ;
+ Text [ danish ] = "Det var ikke muligt at indlæse dokumentet helt" ;
+ Text [ portuguese ] = "Foi impossível carregar o documento completamente" ;
+ Text [ portuguese_brazilian ] = "Dokument konnte nicht vollständig geladen werden" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨ÍêȫװÔØÎĵµ";
+ Text[ russian ] = "Ïîëíîñòüþ çàãðóçèòü äîêóìåíò íåâîçìîæíî";
+ Text[ polish ] = "Dokument nie móg³ zostaæ ca³kowicie za³adowany";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ‚ðŠ®‘S‚É“Ç‚Ýž‚Ý‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½";
+ Text[ chinese_traditional ] = "µLªk§¹¥þ¸Ë¸ü¤å¥ó";
+ Text[ arabic ] = "ÊÚÐÑ ÊÍãíá ÇáãÓÊäÏ ÈÔßá ÊÇã";
+ Text[ greek ] = "Äåí Þôáí äõíáôÞ ç öüñôùóç ïëüêëçñïõ ôïõ åããñÜöïõ";
+ Text[ korean ] = "¹®¼­°¡ ¿ÏÀüÈ÷ ·ÎµåµÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Text[ turkish ] = "Belge tümüyle yüklenemedi";
+ Text[ language_user1 ] = " ";
+ };
+ String WARN_CODE ( ERRCODE_CLASS_WRITE , WARN_SWG_POOR_LOAD )
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Dokument konnte nicht vollständig gespeichert werden : Dokument konnte nicht vollstõndig gespeichert werden */
+ TEXT = "Dokument konnte nicht vollständig gespeichert werden" ;
+ TEXT [ English ] = "Document could not be saved completely" ;
+ Text [ english_us ] = "Document could not be completely saved" ;
+ Text [ italian ] = "Non è stato possibile salvare il file completamente" ;
+ Text [ spanish ] = "No se pudo guardar completamente el documento" ;
+ Text [ french ] = "Le document n'a pas pu être enregistré dans son intégralité" ;
+ Text [ dutch ] = "Document kon niet volledig worden opgeslagen" ;
+ Text [ swedish ] = "Dokumentet kunde inte sparas fullständigt" ;
+ Text [ danish ] = "Det var ikke muligt at gemme dokumentet helt" ;
+ Text [ portuguese ] = "Foi impossível guardar o documento completamente" ;
+ Text [ portuguese_brazilian ] = "Dokument konnte nicht vollständig gespeichert werden" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨ÍêÕûµØ´æÅÌÎĵµ";
+ Text[ russian ] = "Ïîëíîñòüþ ñîõðàíèòü äîêóìåíò íåâîçìîæíî";
+ Text[ polish ] = "Dokument nie móg³ zostaæ ca³kowicie zapisany";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ‚ðŠ®‘S‚É•Û‘¶‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½";
+ Text[ chinese_traditional ] = "µLªk§¹¾ãÀx¦s¤å¥ó";
+ Text[ arabic ] = "ÊÚÐÑ ÍÝÙ ÇáãÓÊäÏ ÈÔßá ÊÇã";
+ Text[ greek ] = "Äåí Þôáí äõíáôÞ ç áðïèÞêåõóç ïëüêëçñïõ ôïõ åããñÜöïõ";
+ Text[ korean ] = "¹®¼­°¡ ¿ÏÀüÈ÷ ÀúÀåµÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Text[ turkish ] = "Belge tümüyle kaydedilemedi";
+ Text[ language_user1 ] = " ";
+ };
+ String WARN_CODE ( ERRCODE_CLASS_WRITE , WARN_SWG_HTML_NO_MACROS)
+ {
+ Text = "Das HTML-Dokument enthält StarBasic Makros.\nSie wurden mit den aktuellen Exporteinstellungen nicht gespeichert." ;
+ Text [ English ] = "This HTML document contains StarBasic macros.\nThey were not saved because of the current export options." ;
+ Text[ english_us ] = "This HTML document contains StarOffice Basic macros.\nThey were not saved with the current export settings.";
+ Text[ portuguese ] = "Este documento HTML contém macros StarOffice Basic.\nEstas não foram guardadas com as predefinições de exportação activas.";
+ Text[ russian ] = "Ýòîò äîêóìåíò HTML ñîäåðæèò ìàêðîñû StarOffice Basic.\nÎíè íå ñîõðàíèëèñü ñ òåêóùèìè íàñòðîéêàìè ýêñïîðòà.";
+ Text[ greek ] = "Ôï áñ÷åßï HTML ðåñéÝ÷åé ìáêñïåíôïëÝò ôïõ StarOffice Basic.\nÁõôÝò äåí áðïèçêåýôçêáí ìå ôéò ôñÝ÷ïõóåò ñõèìßóåéò åéóáãùãÞò.";
+ Text[ dutch ] = "Dit HTML document bevat StarOffice Basic-macro's.\nDeze konden niet worden opgeslagen met de actuele exportinstellingen.";
+ Text[ french ] = "Le document HTML contient des macros StarOffice Basic.\nCelles-ci n'ont pas été enregistrées avec les paramètres d'export actifs.";
+ Text[ spanish ] = "El documento HTML contiene macros StarOffice Basic.\nNo se guardaron con la configuración actual de exportación.";
+ Text[ italian ] = "Il documento HTML contiene macro StarOffice Basic che\nnon sono state salvate con le impostazioni attuali di esportazione.";
+ Text[ danish ] = "Dette HTML-dokument indeholder StarOffice Basic-makroer.\nDe blev ikke gemt med de aktuelle eksportindstillinger.";
+ Text[ swedish ] = "HTML-dokumentet innehåller StarOffice Basic-makron.\nDe sparades inte med de aktuella exportinställningarna.";
+ Text[ polish ] = "Dokument HTML zawiera Makra StarOffice Basic.\nNie zosta³y one zapisane razem z aktualnymi ustawieniami ekspotru.";
+ Text[ portuguese_brazilian ] = "This HTML document contains StarOffice Basic macros.\nThey were not saved because of the current export options.";
+ Text[ japanese ] = "‚±‚ÌHTMLÄÞ·­ÒÝÄ‚ÍStarOffice Basic ϸۂðŠÜ‚ñ‚Å‚¢‚Ü‚·B\n‚»‚ê‚ç‚ÍŒ»Ý‚Ì´¸½Îß°ÄÝ’è‚Å‚Í•Û‘¶‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB";
+ Text[ korean ] = "ÀÌ HTML ¹®¼­´Â StarOffice Basic ¸ÅÅ©·Î¸¦ Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù.\nÇöÀçÀÇ º¸³»±â ¼³Á¤À¸·Î´Â ¸ÅÅ©·Î°¡ ÀúÀåµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ chinese_simplified ] = "Õâ¸öHTMLÎĵµº¬ÓÐStarOffice Basicºê¡£\nÓÉÓÚµ±Ç°µÄÊä³öÉ趨¶ø²»ÄÜ´æÅÌÕâЩºê¡£";
+ Text[ chinese_traditional ] = "HTML ¤å¥ó§t¦³ StarOffice Basic ¥¨¶°¡C\n¦]·í«eªº¿é¥X³]©w¦Ó¤£¯àÀx¦s¤å¥ó¡C";
+ Text[ arabic ] = "íÍÊæí ÇáãÓÊäÏ HTML Úáì æÍÏÇÊ ãÇßÑæ StarOffice Basic.\náã íÊã ÍÝÙåÇ ÈÅÚÏÇÏÇÊ ÇáÊÕÏíÑ ÇáÍÇáíÉ.";
+ Text[ turkish ] = "HTML belgesinde StarBasic makrolarý var.\nBu makrolar, yürürlükteki verme ayarlarý ile kaydedilmemiþ.";
+ Text[ language_user1 ] = " ";
+ };
+};
+
+
+
+
diff --git a/sw/source/ui/app/mainwn.cxx b/sw/source/ui/app/mainwn.cxx
new file mode 100644
index 000000000000..9efa9e516084
--- /dev/null
+++ b/sw/source/ui/app/mainwn.cxx
@@ -0,0 +1,343 @@
+/*************************************************************************
+ *
+ * $RCSfile: mainwn.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#ifndef _SHL_HXX //autogen
+#include <tools/shl.hxx>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _SVARRAY_HXX
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _SFX_PROGRESS_HXX //autogen
+#include <sfx2/progress.hxx>
+#endif
+#ifndef _RESID_HXX //autogen
+#include <vcl/resid.hxx>
+#endif
+
+#ifndef _SWDOCSH_HXX //autogen
+#include <docsh.hxx>
+#endif
+#ifndef _SWMODULE_HXX //autogen
+#include <swmodule.hxx>
+#endif
+#include "swtypes.hxx"
+
+class SwDocShell;
+
+struct SwProgress
+{
+ long nStartValue,
+ nStartCount;
+ SwDocShell *pDocShell;
+ SfxProgress *pProgress;
+};
+
+static SvPtrarr *pProgressContainer = 0;
+
+SwProgress *lcl_SwFindProgress( SwDocShell *pDocShell )
+{
+ for ( USHORT i = 0; i < pProgressContainer->Count(); ++i )
+ {
+ SwProgress *pTmp = (SwProgress*)(*pProgressContainer)[i];
+ if ( pTmp->pDocShell == pDocShell )
+ return pTmp;
+ }
+ return 0;
+}
+
+
+void StartProgress( USHORT nMessResId, long nStartValue, long nEndValue,
+ SwDocShell *pDocShell )
+{
+ if( !SW_MOD()->IsEmbeddedLoadSave() )
+ {
+ SwProgress *pProgress = 0;
+
+ if ( !pProgressContainer )
+ pProgressContainer = new SvPtrarr( 2, 2 );
+ else
+ {
+ if ( 0 != (pProgress = lcl_SwFindProgress( pDocShell )) )
+ ++pProgress->nStartCount;
+ }
+ if ( !pProgress )
+ {
+ pProgress = new SwProgress;
+ pProgress->pProgress = new SfxProgress( pDocShell,
+ SW_RESSTR(nMessResId),
+ nEndValue - nStartValue,
+ FALSE,
+ TRUE );
+ pProgress->nStartCount = 1;
+ pProgress->pDocShell = pDocShell;
+ pProgressContainer->Insert( (void*)pProgress, 0 );
+ }
+ pProgress->nStartValue = nStartValue;
+ }
+}
+
+
+void SetProgressState( long nPosition, SwDocShell *pDocShell )
+{
+ if( pProgressContainer && !SW_MOD()->IsEmbeddedLoadSave() )
+ {
+ SwProgress *pProgress = lcl_SwFindProgress( pDocShell );
+ if ( pProgress )
+ pProgress->pProgress->SetState(nPosition - pProgress->nStartValue);
+ }
+}
+
+
+void EndProgress( SwDocShell *pDocShell )
+{
+ if( pProgressContainer && !SW_MOD()->IsEmbeddedLoadSave() )
+ {
+ SwProgress *pProgress = 0;
+ USHORT i;
+ for ( i = 0; i < pProgressContainer->Count(); ++i )
+ {
+ SwProgress *pTmp = (SwProgress*)(*pProgressContainer)[i];
+ if ( pTmp->pDocShell == pDocShell )
+ {
+ pProgress = pTmp;
+ break;
+ }
+ }
+
+ if ( pProgress && 0 == --pProgress->nStartCount )
+ {
+ pProgress->pProgress->Stop();
+ pProgressContainer->Remove( i );
+ delete pProgress->pProgress;
+ delete pProgress;
+ if ( !pProgressContainer->Count() )
+ delete pProgressContainer, pProgressContainer = 0;
+ }
+ }
+}
+
+
+void SetProgressText( USHORT nId, SwDocShell *pDocShell )
+{
+ if( pProgressContainer && !SW_MOD()->IsEmbeddedLoadSave() )
+ {
+ SwProgress *pProgress = lcl_SwFindProgress( pDocShell );
+ if ( pProgress )
+ pProgress->pProgress->SetStateText( 0, SW_RESSTR(nId) );
+ }
+}
+
+
+void RescheduleProgress( SwDocShell *pDocShell )
+{
+ if( pProgressContainer && !SW_MOD()->IsEmbeddedLoadSave() )
+ {
+ SwProgress *pProgress = lcl_SwFindProgress( pDocShell );
+ if ( pProgress )
+ pProgress->pProgress->Reschedule();
+ }
+}
+
+/************************************************************************
+ $Log: not supported by cvs2svn $
+ Revision 1.44 2000/09/18 16:05:11 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.43 2000/02/11 14:42:46 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.42 2000/01/17 14:06:30 jp
+ Bug #71812#: SetProgress call operator==() and not operator=()
+
+ Revision 1.41 2000/01/05 18:21:57 jp
+ Bug #71524#: EndProgress call operator==() and not operator=()
+
+ Revision 1.40 1999/06/29 07:43:54 MA
+ enable wait cursor
+
+
+ Rev 1.39 29 Jun 1999 09:43:54 MA
+ enable wait cursor
+
+ Rev 1.38 28 Jun 1999 14:15:00 MA
+ Blocking of Progress limited to one Document
+
+ Rev 1.37 29 Jun 1998 17:16:14 MA
+ #46809# Nachdem der SFX seinen Service noch immer nicht liefert der
+ Hack jetzt auch in der aktuellen Version.
+
+ Rev 1.36 28 Nov 1997 11:02:30 TJ
+ include
+
+ Rev 1.35 24 Nov 1997 14:22:44 MA
+ includes
+
+ Rev 1.34 09 Sep 1997 11:35:58 OS
+ SwMainWin ueberfluessig
+
+ Rev 1.33 01 Sep 1997 13:08:08 OS
+ DLL-Umstellung
+
+ Rev 1.32 08 Aug 1997 17:26:58 OM
+ Headerfile-Umstellung
+
+ Rev 1.31 06 Aug 1997 11:02:24 TRI
+ GetpApp statt pApp
+
+ Rev 1.30 13 Feb 1997 10:27:38 TRI
+ includes
+
+ Rev 1.29 10 Jan 1997 18:37:58 MA
+ fix: Progress nicht zerstoren fuer Embedded
+
+ Rev 1.28 14 Nov 1996 15:15:26 TRI
+ includes
+
+ Rev 1.27 08 Nov 1996 19:39:32 MA
+ ResMgr
+
+ Rev 1.26 09 Oct 1996 17:55:28 MA
+ Progress
+
+ Rev 1.25 29 Jul 1996 19:37:40 MA
+ includes
+
+ Rev 1.24 29 Feb 1996 12:55:52 OS
+ im Close wird jetzt auch der ChartAutoPilot geschlossen
+
+ Rev 1.23 14 Dec 1995 19:55:54 MIB
+ neue Funktion Reschedule
+
+ Rev 1.22 24 Nov 1995 16:56:50 OM
+ PCH->PRECOMPILED
+
+ Rev 1.21 22 Aug 1995 20:22:14 JP
+ ueberfluessige includes entfernt
+
+ Rev 1.20 15 Aug 1995 19:20:54 JP
+ neu: IsEmbeddedFlag an SwWriterApp - keinen Progressbar anzeigen
+
+ Rev 1.19 14 Aug 1995 18:26:44 MD
+ SfxProgress-ctor erhaelt keinen ViewFrame mehr
+
+ Rev 1.18 09 Aug 1995 21:41:34 ER
+ static vor seg_eofglobals
+
+ Rev 1.17 01 Aug 1995 19:35:22 OS
+ StartWert fuer Progress auf 0 normalisieren
+
+ Rev 1.16 20 Jul 1995 12:01:02 OS
+ RechenleistenChildWindow im Close abschalten
+
+ Rev 1.15 19 Jul 1995 17:31:12 OS
+ Rechenleiste nicht mehr am Doc
+
+ Rev 1.14 11 Jul 1995 15:43:58 OS
+ Close ueberladen, um rechenleiste zu schliessen
+
+ Rev 1.13 09 May 1995 11:29:44 OS
+ -Disable/EnableCmdInterface
+
+ Rev 1.12 08 May 1995 11:59:44 JP
+ StatLineSetPercent: auf 0 - Pointer abfragen
+
+ Rev 1.11 21 Apr 1995 19:04:10 JP
+ BugId 12042: doppeltes Loeschen vom Pointer verhindern!
+
+ Rev 1.10 11 Apr 1995 12:44:00 OS
+ noch ein paar Kleinigkeiten
+
+ Rev 1.9 07 Apr 1995 18:10:12 OS
+ Rest auskommentiert
+
+ Rev 1.8 07 Apr 1995 14:30:22 OS
+ +SfxProgress
+
+ Rev 1.7 26 Feb 1995 18:49:44 MA
+ Laufbalken reanimiert.
+
+ Rev 1.6 23 Feb 1995 22:18:00 ER
+ sexport
+
+ Rev 1.5 09 Jan 1995 16:06:34 ER
+ del: globals hrc, app hrc
+
+ Rev 1.4 25 Oct 1994 14:38:28 ER
+ add: PCH
+
+ Rev 1.3 20 Sep 1994 11:34:06 VB
+ GetStarWriter inline, Flags nach swapp
+
+ Rev 1.2 19 Sep 1994 15:25:00 MS
+ Fix fuers Update
+************************************************************************/
+
+
diff --git a/sw/source/ui/app/makefile.mk b/sw/source/ui/app/makefile.mk
new file mode 100644
index 000000000000..a68c2d82ded4
--- /dev/null
+++ b/sw/source/ui/app/makefile.mk
@@ -0,0 +1,179 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=app
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..$/ui_1st$/ui_pch
+
+LIBTARGET=NO
+
+# future: DEMO\...
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+.INCLUDE : $(UPD)minor.mk
+RSCUPDVER=$(RSCREVISION)(SV$(UPD)$(UPDMINOR))
+
+IMGLST_SRS=$(SRS)$/app.srs
+BMP_IN=$(PRJ)$/win/imglst
+
+# --- Files --------------------------------------------------------
+
+SRCFILES =\
+ acc.src \
+ app.src \
+ mn.src \
+ mnport.src \
+ error.src
+
+
+OBJFILES = \
+ $(OBJ)$/swlib.obj \
+ $(OBJ)$/swcomlib.obj
+
+SLOFILES = \
+ $(SLO)$/appenv.obj \
+ $(SLO)$/apphdl.obj \
+ $(SLO)$/applab.obj \
+ $(SLO)$/appopt.obj \
+ $(SLO)$/docsh.obj \
+ $(SLO)$/docsh2.obj \
+ $(SLO)$/docshdrw.obj \
+ $(SLO)$/docshini.obj \
+ $(SLO)$/docst.obj \
+ $(SLO)$/docstyle.obj \
+ $(SLO)$/mainwn.obj \
+ $(SLO)$/version.obj \
+ $(SLO)$/swmodule.obj \
+ $(SLO)$/swmodul1.obj \
+ $(SLO)$/swdll.obj \
+ $(SLO)$/swwait.obj
+
+EXCEPTIONSFILES= \
+ $(SLO)$/swmodule.obj \
+ $(SLO)$/swmodul1.obj \
+ $(SLO)$/docsh2.obj \
+
+LIB1TARGET= $(SLB)$/app.lib
+
+LIB1OBJFILES= \
+ $(SLO)$/appenv.obj \
+ $(SLO)$/apphdl.obj \
+ $(SLO)$/applab.obj \
+ $(SLO)$/appopt.obj \
+ $(SLO)$/docsh.obj \
+ $(SLO)$/docsh2.obj \
+ $(SLO)$/docshdrw.obj \
+ $(SLO)$/docshini.obj \
+ $(SLO)$/docst.obj \
+ $(SLO)$/docstyle.obj \
+ $(SLO)$/mainwn.obj \
+ $(SLO)$/swmodul1.obj \
+ $(SLO)$/version.obj \
+ $(SLO)$/swwait.obj
+
+
+# --- Targets ------------------------------------------------------
+.IF "$(depend)" == ""
+all: \
+ $(INCCOM)$/swdll0.hxx \
+ $(SLO)$/swdll.obj \
+ $(SLO)$/swmodule.obj \
+ ALLTAR
+.ENDIF
+
+.INCLUDE : target.mk
+
+.IF "$(GUI)"=="OS2"
+$(INCCOM)$/swdll0.hxx: makefile.mk
+ echo #define DLL_NAME "sw$(UPD)$(DLLPOSTFIX)" >$@
+.ENDIF
+
+.IF "$(GUI)"=="MAC"
+$(INCCOM)$/swdll0.hxx: makefile.mk
+ echo "$(HASHMARK)define DLL_NAME ¶"sw$(UPD)$(DLLPOSTFIX).dll¶"" > $@
+.ENDIF
+
+.IF "$(GUIBASE)"=="WIN"
+$(INCCOM)$/swdll0.hxx: makefile.mk
+ echo #define DLL_NAME "sw$(UPD)$(DLLPOSTFIX).DLL" >$@
+.ENDIF
+
+.IF "$(GUI)"=="UNX"
+$(INCCOM)$/swdll0.hxx: makefile.mk
+ echo #define DLL_NAME \"libsw$(UPD)$(DLLPOSTFIX)$(DLLPOST)\" >$@
+.ENDIF
+
+
+$(SRS)$/app.srs: $(SOLARINCDIR)$/svx$/globlmn.hrc
+
diff --git a/sw/source/ui/app/mn.src b/sw/source/ui/app/mn.src
new file mode 100644
index 000000000000..7d93f729e3a6
--- /dev/null
+++ b/sw/source/ui/app/mn.src
@@ -0,0 +1,599 @@
+/*************************************************************************
+ *
+ * $RCSfile: mn.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "swmn.hrc"
+
+/*------------------------------------------------------------------------
+ Beschreibung: Menu Window
+------------------------------------------------------------------------*/
+
+
+/*--Popups---------------------------------------------------------------*/
+
+String MN_TEXT_POPUPMENU
+{
+ Text = "Text" ;
+ Text [ English ] = "Text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ portuguese_brazilian ] = "Texto" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Teksti" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "Text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ english_us ] = "Text" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "tekst";
+ Text[ japanese ] = "÷½Ä";
+ Text[ chinese_traditional ] = "¤å¦r";
+ Text[ arabic ] = "äÕ";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+};
+
+
+String MN_TAB_POPUPMENU
+{
+ Text = "Tabelle" ;
+ Text [ English ] = "Table" ;
+ Text [ norwegian ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ portuguese_brazilian ] = "Tabela" ;
+ Text [ portuguese ] = "Tabela" ;
+ Text [ finnish ] = "Taulukko" ;
+ Text [ danish ] = "Tabel" ;
+ Text [ french ] = "Tableau" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ dutch ] = "Tabel" ;
+ Text [ spanish ] = "Tabla" ;
+ Text [ english_us ] = "Table" ;
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "tabela";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÌÏæá";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "Ç¥";
+ Text[ turkish ] = "Tablo";
+};
+
+Menu MN_TAB_POPUPMENU
+{
+ ItemList =
+ {
+ MN_RESET
+ SEPARATOR ;
+ MN_TEXT_ATTR
+ SEPARATOR ;
+ MenuItem
+ {
+ ITEM_FORMAT_CHAR_DLG
+ };
+ MenuItem
+ {
+ ITEM_FORMAT_PARA_DLG
+ };
+ // MN_BB
+ SEPARATOR ;
+ MN_TAB1
+ MN_TAB2
+ MN_FRM_CAPTION_ITEM
+ // SEPARATOR;
+ MenuItem
+ {
+ Identifier = FN_VIEW_TABLEGRID ;
+ HelpID = FN_VIEW_TABLEGRID ;
+ Text = "Tabellenbegrenz~ung" ;
+ Text [ English ] = "Grid lines" ;
+ Text [ norwegian ] = "Rutenettlinjer" ;
+ Text [ italian ] = "Limte tabella" ;
+ Text [ portuguese_brazilian ] = "Linhas da Grade" ;
+ Text [ portuguese ] = "~Limites da tabela" ;
+ Text [ finnish ] = "Taustaruudukko" ;
+ Text [ danish ] = "Gitterlinjer" ;
+ Text [ french ] = "Délimitations de t~ableau" ;
+ Text [ swedish ] = "Tabellbegr~änsning" ;
+ Text [ dutch ] = "Tabelbegren~zing" ;
+ Text [ spanish ] = "~Límites de la tabla" ;
+ Text [ english_us ] = "Table Limits" ;
+ Text[ chinese_simplified ] = "±í¸ñ±ß½ç";
+ Text[ russian ] = "Ãðàíèöû òàáëèöû";
+ Text[ polish ] = "obramowanie tabeli";
+ Text[ japanese ] = "•\\‚Ì‹«ŠE";
+ Text[ chinese_traditional ] = "ªí®æÃä¬É";
+ Text[ arabic ] = "ÍÏæÏ ÇáÌÏæá";
+ Text[ greek ] = "¼~ñéá ðßíáêá";
+ Text[ korean ] = "Ç¥ °æ°è";
+ Text[ turkish ] = "Tablo sýnýrlamalarý";
+ };
+ MenuItem
+ {
+ Identifier = FN_SET_MODOPT_TBLNUMFMT ;
+ HelpID = FN_SET_MODOPT_TBLNUMFMT ;
+ Text = "Zahlen~erkennung" ;
+ Text [ ENGLISH ] = "Number recognition" ;
+ Text[ english_us ] = "~Number recognition";
+ Text[ portuguese ] = "~Reconhecer números";
+ Text[ russian ] = "Ðàñïîçíàíèå ÷èñëà";
+ Text[ greek ] = "Áíáãíþñ~éóç áñéèìþí";
+ Text[ dutch ] = "Getal~herkenning";
+ Text[ french ] = "~Reconnaissance des nombres";
+ Text[ spanish ] = "~Reconocimiento de número";
+ Text[ italian ] = "Riconoscim~ento numeri";
+ Text[ danish ] = "Talgenkendelse";
+ Text[ swedish ] = "Talig~enkänning";
+ Text[ polish ] = "Rozpoznawanie liczb";
+ Text[ portuguese_brazilian ] = "Number recognition";
+ Text[ japanese ] = "”Žš‚Ì”FŽ¯";
+ Text[ korean ] = "¼ýÀÚ ÀνÄ(~N)";
+ Text[ chinese_simplified ] = "Êý×Öʶ±ð";
+ Text[ chinese_traditional ] = "ÃѧO¼Æ¦r";
+ Text[ arabic ] = "ÊÚÑíÝ ÇáÃÑÞÇã";
+ Text[ turkish ] = "Sayý tanýma";
+ };
+ };
+};
+
+
+String MN_FRM_POPUPMENU
+{
+ Text = "Rahmen" ;
+ Text [ English ] = "Frame" ;
+ Text [ norwegian ] = "Ramme" ;
+ Text [ italian ] = "Cornice" ;
+ Text [ portuguese_brazilian ] = "Moldura" ;
+ Text [ portuguese ] = "Moldura" ;
+ Text [ finnish ] = "Kehys" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ french ] = "Cadre" ;
+ Text [ swedish ] = "Ram" ;
+ Text [ dutch ] = "Kader" ;
+ Text [ spanish ] = "Marco" ;
+ Text [ english_us ] = "Frame" ;
+ Text[ chinese_simplified ] = "¿ò";
+ Text[ russian ] = "Ðàìêà";
+ Text[ polish ] = "ramka";
+ Text[ japanese ] = "÷½Ä ÎÞ¯¸½";
+ Text[ chinese_traditional ] = "¤å¥»¤è¶ô";
+ Text[ arabic ] = "ÅØÇÑ";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "Çerçeve";
+};
+
+Menu MN_FRM_POPUPMENU
+{
+ ItemList =
+ {
+ MN_ALIGN_FRAME
+ MN_MOUSE_FRAME_BEGIN
+ MN_MOUSE_FRAME_END
+ SEPARATOR ;
+ MN_FRM
+ MN_FRM_CAPTION_ITEM
+ };
+};
+
+String MN_DRAW_POPUPMENU
+{
+ Text = "Grafik" ;
+ Text [ English ] = "Graphic" ;
+ Text [ norwegian ] = "Graphic" ;
+ Text [ italian ] = "Grafico" ;
+ Text [ portuguese_brazilian ] = "Gráfico" ;
+ Text [ portuguese ] = "Imagem" ;
+ Text [ finnish ] = "Kuva" ;
+ Text [ danish ] = "Billede" ;
+ Text [ french ] = "Image" ;
+ Text [ swedish ] = "Grafik" ;
+ Text [ dutch ] = "Afbeelding" ;
+ Text [ spanish ] = "Imagen" ;
+ Text [ english_us ] = "Graphic" ;
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ russian ] = "Ðèñóíîê";
+ Text[ polish ] = "Grafika";
+ Text[ japanese ] = "¸Þ×̨¯¸";
+ Text[ chinese_traditional ] = "¹Ï¤ù";
+ Text[ arabic ] = "ÑÓæã";
+ Text[ greek ] = "Ãñáöéêü";
+ Text[ korean ] = "±×·¡ÇÈ";
+ Text[ turkish ] = "Grafik";
+};
+
+Menu MN_DRAW_POPUPMENU
+{
+ ItemList =
+ {
+ MN_DRAW1
+ MN_DRWTXTATTR
+ MenuItem
+ {
+ ITEM_FORMAT_ATTR_TRANSFORM
+ };
+ SEPARATOR ;
+ MN_DRAW5
+ MN_WRAP_DRAW
+ MN_ANCHOR
+ MN_FRM_CAPTION_ITEM
+ SEPARATOR ;
+ MN_DRAW3
+ };
+};
+
+String MN_DRAWFORM_POPUPMENU
+{
+ Text = "Kontrollfeld" ;
+ Text [ English ] = "Control field" ;
+ Text [ english_us ] = "Control" ;
+ Text [ portuguese_brazilian ] = "Kontrollfeld" ;
+ Text [ swedish ] = "Kontrollfält" ;
+ Text [ danish ] = "Kontrolelement" ;
+ Text [ italian ] = "Campo di controllo" ;
+ Text [ spanish ] = "Campo de control" ;
+ Text [ french ] = "Champ de contrôle" ;
+ Text [ dutch ] = "Controleveld" ;
+ Text [ portuguese ] = "Campo de controlo" ;
+ Text[ chinese_simplified ] = "¿ØÖÆ";
+ Text[ russian ] = "Ýëåìåíò óïðàâëåíèÿ";
+ Text[ polish ] = "Pole kontrolne";
+ Text[ japanese ] = "ºÝÄÛ°Ù";
+ Text[ chinese_traditional ] = "±±¨î¶µ";
+ Text[ arabic ] = "ÚäÕÑ ÊÍßã";
+ Text[ greek ] = "Ðåäßï åëÝã÷ïõ";
+ Text[ korean ] = "ÄÁÆ®·Ñ";
+ Text[ turkish ] = "Komut alaný";
+};
+
+Menu MN_DRAWFORM_POPUPMENU
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ ITEM_FORMAT_ATTR_TRANSFORM
+ };
+ MN_FORM
+ SEPARATOR ;
+ MN_DRAW6
+ MN_WRAP_DRAW
+ MN_ANCHOR
+ SEPARATOR ;
+ MN_DRAW3
+ };
+};
+
+String MN_DRWTXT_POPUPMENU
+{
+ Text = "Zeichenobjekt Text" ;
+ Text [ English ] = "Draw object text" ;
+ Text [ english_us ] = "Draw Object text" ;
+ Text [ italian ] = "Oggetto di disegno testo" ;
+ Text [ spanish ] = "Texto del objeto de dibujo" ;
+ Text [ french ] = "Texte objet de dessin" ;
+ Text [ dutch ] = "Tekenobject tekst" ;
+ Text [ swedish ] = "Ritobjekt text" ;
+ Text [ danish ] = "Tegneobjekt tekst" ;
+ Text [ portuguese ] = "Texto do objecto de desenho" ;
+ Text [ portuguese_brazilian ] = "Zeichenobjekt Text" ;
+ Text[ chinese_simplified ] = "»æͼ¶ÔÏó ÎÄ×Ö";
+ Text[ russian ] = "Ãðàôè÷åñêèé îáúåêò Òåêñò";
+ Text[ polish ] = "Tekst w obiekcie rysunkowym";
+ Text[ japanese ] = "}Œ`µÌÞ¼Þª¸Ä@÷½Ä";
+ Text[ chinese_traditional ] = "ø¹Ïª«¥ó ¤å¦r";
+ Text[ arabic ] = "äÕ ßÇÆä ÑÓæãí";
+ Text[ greek ] = "Êåßìåíï áíôéêåéìÝíïõ ó÷åäßáóçò";
+ Text[ korean ] = "±×¸®±â °³Ã¼ ÅؽºÆ®";
+ Text[ turkish ] = "Çizim nesnesi metni";
+};
+
+Menu MN_DRWTXT_POPUPMENU
+{
+ ItemList =
+ {
+ MN_RESET
+ SEPARATOR ;
+ MN_TEXT_ATTR
+ SEPARATOR ;
+ MN_DRWTXT
+ MN_FRM_CAPTION_ITEM
+ };
+};
+
+String MN_GRF_POPUPMENU
+{
+ Text = "Grafik" ;
+ Text [ English ] = "Graphic" ;
+ Text [ norwegian ] = "Graphic" ;
+ Text [ italian ] = "Immagine" ;
+ Text [ portuguese_brazilian ] = "Gráfico" ;
+ Text [ portuguese ] = "Imagem" ;
+ Text [ finnish ] = "Kuva" ;
+ Text [ danish ] = "Billede" ;
+ Text [ french ] = "Image" ;
+ Text [ swedish ] = "Grafik" ;
+ Text [ dutch ] = "Afbeelding" ;
+ Text [ spanish ] = "Imagen" ;
+ Text [ english_us ] = "Graphic" ;
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ russian ] = "Ðèñóíîê";
+ Text[ polish ] = "Grafika";
+ Text[ japanese ] = "¸Þ×̨¯¸";
+ Text[ chinese_traditional ] = "¹Ï¤ù";
+ Text[ arabic ] = "ÑÓæã";
+ Text[ greek ] = "Ãñáöéêü";
+ Text[ korean ] = "±×·¡ÇÈ";
+ Text[ turkish ] = "Grafik";
+};
+
+Menu MN_GRF_POPUPMENU
+{
+ ItemList =
+ {
+ MN_ALIGN_FRAME
+ MN_MOUSE_FRAME_BEGIN
+ MN_WRAP_CONTOUR
+ MN_EDIT_CONTOUR
+ MN_MOUSE_FRAME_END
+ SEPARATOR ;
+ MN_GRAFIC
+ MN_FRM_CAPTION_ITEM
+ MenuItem
+ {
+ ITEM_EDIT_IMAP
+ };
+ };
+};
+
+String MN_OLE_POPUPMENU
+{
+ Text = "Objekt" ;
+ Text [ English ] = "Object" ;
+ Text [ norwegian ] = "Object" ;
+ Text [ italian ] = "Oggetto" ;
+ Text [ portuguese_brazilian ] = "Objeto" ;
+ Text [ portuguese ] = "Objecto" ;
+ Text [ finnish ] = "Objekti" ;
+ Text [ danish ] = "Objekt" ;
+ Text [ french ] = "Objet" ;
+ Text [ swedish ] = "Objekt" ;
+ Text [ dutch ] = "Object" ;
+ Text [ spanish ] = "Objeto" ;
+ Text [ english_us ] = "Object" ;
+ Text[ chinese_simplified ] = "¶ÔÏó";
+ Text[ russian ] = "Îáúåêò";
+ Text[ polish ] = "Obiekt";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "ª«¥ó";
+ Text[ arabic ] = "ßÇÆä";
+ Text[ greek ] = "Áíôéêåßìåíï";
+ Text[ korean ] = "°³Ã¼";
+ Text[ turkish ] = "Nesne";
+};
+
+
+Menu MN_OLE_POPUPMENU
+{
+ ItemList =
+ {
+ MN_ALIGN_FRAME
+ MN_MOUSE_FRAME_BEGIN
+ MN_WRAP_CONTOUR
+ MN_EDIT_CONTOUR
+ MN_MOUSE_FRAME_END
+ SEPARATOR ;
+ MN_OLE
+ MN_FRM_CAPTION_ITEM
+ };
+};
+
+String MN_PPREVIEW_POPUPMENU
+{
+ Text = "Zeichenobjekt Text" ;
+ Text [ English ] = "Draw object text" ;
+ Text [ english_us ] = "Draw Object text" ;
+ Text [ italian ] = "Oggetto di diesegno testo" ;
+ Text [ spanish ] = "Texto del objeto de dibujo" ;
+ Text [ french ] = "Texte objet de dessin" ;
+ Text [ dutch ] = "Tekenobject tekst" ;
+ Text [ swedish ] = "Ritobjekt text" ;
+ Text [ danish ] = "Tegneobjekt" ;
+ Text [ portuguese ] = "Texto do objecto de desenho" ;
+ Text [ portuguese_brazilian ] = "Zeichenobjekt Text" ;
+ Text[ chinese_simplified ] = "»æͼ¶ÔÏó ÎÄ×Ö";
+ Text[ russian ] = "Òåêñò ãðàôè÷åñêîãî îáúåêòà";
+ Text[ polish ] = "Tekst w obiekcie rysunkowym";
+ Text[ japanese ] = "}Œ`µÌÞ¼Þª¸Ä ÷½Ä";
+ Text[ chinese_traditional ] = "ø¹Ïª«¥ó ¤å¦r";
+ Text[ arabic ] = "äÕ ßÇÆä ÑÓæãí";
+ Text[ greek ] = "Êåßìåíï áíôéêåéìÝíïõ ó÷åäßáóçò";
+ Text[ korean ] = "±×¸®±â °´Ã¼ ÅؽºÆ®";
+ Text[ turkish ] = "Çizim nesnesi metni";
+};
+
+Menu MN_PPREVIEW_POPUPMENU
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = FN_PAGEUP ;
+ HelpID = FN_PAGEUP ;
+ Text = "Vorherige Seite" ;
+ Text [ ENGLISH ] = "Previous page" ;
+ Text [ dutch ] = "Vorige pagina" ;
+ Text [ english_us ] = "Previous Page" ;
+ Text [ italian ] = "Pagina precedente" ;
+ Text [ spanish ] = "Página anterior" ;
+ Text [ french ] = "Page précédente" ;
+ Text [ swedish ] = "Föregående sida" ;
+ Text [ danish ] = "Forrige side" ;
+ Text [ portuguese_brazilian ] = "Vorherige Seite" ;
+ Text [ portuguese ] = "Página anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»Ò³";
+ Text[ russian ] = "Ïðåäûäóùàÿ ñòðàíèöà";
+ Text[ polish ] = "Poprzednia strona";
+ Text[ japanese ] = "‘O‚ÌÍß°¼Þ";
+ Text[ chinese_traditional ] = "¤W¤@­¶";
+ Text[ arabic ] = "ÇáÕÝÍÉ ÇáÓÇÈÞÉ";
+ Text[ greek ] = "Ðñïçãïýìåíç óåëßäá";
+ Text[ korean ] = "ÀÌÀü ÆäÀÌÁö";
+ Text[ turkish ] = "Önceki sayfa";
+ };
+ MenuItem
+ {
+ Identifier = FN_PAGEDOWN ;
+ HelpID = FN_PAGEDOWN ;
+ /* ### ACHTUNG: Neuer Text in Resource? Nächste Seite : Nõchste Seite */
+ Text = "Nächste Seite" ;
+ Text [ ENGLISH ] = "Next page" ;
+ Text [ dutch ] = "Volgende pagina" ;
+ Text [ english_us ] = "Next Page" ;
+ Text [ italian ] = "Pagina successiva" ;
+ Text [ spanish ] = "Página siguiente" ;
+ Text [ french ] = "Page suivante" ;
+ Text [ swedish ] = "Nästa sida" ;
+ Text [ danish ] = "Næste side" ;
+ Text [ portuguese_brazilian ] = "Nächste Seite" ;
+ Text [ portuguese ] = "Página seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»Ò³";
+ Text[ russian ] = "Ñëåäóþùàÿ ñòðàíèöà";
+ Text[ polish ] = "Nastêpna strona";
+ Text[ japanese ] = "ŽŸ‚ÌÍß°¼Þ";
+ Text[ chinese_traditional ] = "¤U¤@­¶";
+ Text[ arabic ] = "ÇáÕÝÍÉ ÇáÊÇáíÉ";
+ Text[ greek ] = "Óôçí åðüìåíç óåëßäá";
+ Text[ korean ] = "´ÙÀ½ ÆäÀÌÁö";
+ Text[ turkish ] = "Sonraki sayfa";
+ };
+ MenuItem
+ {
+ ITEM_VIEW_ATTR_ZOOM
+ /* ### ACHTUNG: Neuer Text in Resource? Schließt die Seitenvorschau : Schlie˜t die Seitenvorschau */
+ };
+ SEPARATOR ;
+ MenuItem
+ {
+ Identifier = FN_PRINT_PAGEPREVIEW ;
+ HelpID = FN_PRINT_PAGEPREVIEW ;
+ Text = "Drucken Seitenansicht" ;
+ Text [ ENGLISH ] = "Print page preview" ;
+ Text [ dutch ] = "Afdrukvoorbeeld afdrukken" ;
+ Text [ english_us ] = "Print" ;
+ Text [ italian ] = "Stampa anteprima pagina" ;
+ Text [ spanish ] = "Imprimir vista preliminar" ;
+ Text [ french ] = "Imprimer l'aperçu" ;
+ Text [ swedish ] = "Skriv ut förhandsgranskning" ;
+ Text [ danish ] = "Udskriv vist udskrift" ;
+ Text [ portuguese ] = "Imprimir Ver página" ;
+ Text [ portuguese_brazilian ] = "Drucken Seitenansicht" ;
+ Text[ chinese_simplified ] = "´òÓ¡Ò³ÃæÔ¤ÊÓ";
+ Text[ russian ] = "Ïå÷àòü âèäà ñòðàíèöû";
+ Text[ polish ] = "Drukuj widok strony";
+ Text[ japanese ] = "ˆóüÌßÚËÞ­°";
+ Text[ chinese_traditional ] = "¦C¦L­¶­±À˵ø";
+ Text[ arabic ] = "ÇáØÈÇÚÉ ÍÓÈ ÇáãÚÇíäÉ";
+ Text[ language_user1 ] = "ßíÝ ÓÊÚÑÝ Ãíä ØÈÇÚÉ \\æÃíä ãÚÇíäÉ ÇáÕÝÍÉ ÞÈá ØÈÇÚÊåÇ ¿¿¿¿";
+ Text[ greek ] = "Åêôýðùóç ðñïåðéóêüðçóçò";
+ Text[ korean ] = "Àμâ";
+ Text[ turkish ] = "Yazdýr";
+ };
+ MenuItem
+ {
+ Identifier = FN_PREVIEW_PRINT_OPTIONS;
+ HelpID = FN_PREVIEW_PRINT_OPTIONS;
+ Text = "Druckoptionen" ;
+ Text [ ENGLISH ] = "Print options" ;
+ Text[ italian ] = "Opzioni di stampa";
+ Text[ portuguese_brazilian ] = "Print options";
+ Text[ portuguese ] = "Opções de impressão";
+ Text[ danish ] = "Udskriftsindstillinger";
+ Text[ french ] = "Options d'impression";
+ Text[ swedish ] = "Skrivaralternativ";
+ Text[ dutch ] = "Afdrukopties";
+ Text[ spanish ] = "Opciones de impresión";
+ Text[ english_us ] = "Print Options";
+ Text[ chinese_simplified ] = "´òÓ¡Ñ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû ïå÷àòè";
+ Text[ polish ] = "Opcje druku";
+ Text[ japanese ] = "ˆóüµÌß¼®Ý";
+ Text[ chinese_traditional ] = "¦C¦L¿ï¶µ";
+ Text[ arabic ] = "ÎíÇÑÇÊ ÇáØÈÇÚÉ";
+ Text[ greek ] = "ÅðéëïãÝò åêôýðùóçò";
+ Text[ korean ] = "Àμ⠿ɼÇ";
+ Text[ turkish ] = "Yazdýrma seçenekleri";
+ };
+ SEPARATOR ;
+ MenuItem
+ {
+ ITEM_WINDOW_CLOSEWIN
+ /* ### ACHTUNG: Neuer Text in Resource? Schließt die Seitenvorschau : Schlie˜t die Seitenvorschau */
+ };
+ };
+};
+
diff --git a/sw/source/ui/app/swdll.cxx b/sw/source/ui/app/swdll.cxx
new file mode 100644
index 000000000000..830c7513dfa8
--- /dev/null
+++ b/sw/source/ui/app/swdll.cxx
@@ -0,0 +1,207 @@
+/*************************************************************************
+ *
+ * $RCSfile: swdll.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+
+
+#include "swdll.hxx"
+#ifndef _SWWDOCSH_HXX //autogen
+#include <wdocsh.hxx>
+#endif
+#ifndef _SWGLOBDOCSH_HXX //autogen
+#include <globdoc.hxx>
+#endif
+#ifndef _INITUI_HXX
+#include <initui.hxx>
+#endif
+#ifndef _SWMODULE_HXX //autogen
+#include <swmodule.hxx>
+#endif
+#ifndef _SWTYPES_HXX //autogen
+#include <swtypes.hxx>
+#endif
+#ifndef _INIT_HXX
+#include <init.hxx>
+#endif
+#ifndef _DOBJFAC_HXX //autogen
+#include <dobjfac.hxx>
+#endif
+#ifndef _CFGID_H
+#include <cfgid.h>
+#endif
+
+/*************************************************************************
+|*
+|* Init
+|*
+\************************************************************************/
+
+void SwDLL::Init()
+{
+ // called directly after loading the DLL
+ // do whatever you want, you may use Sw-DLL too
+
+ // the SdModule must be created
+ SwModuleDummy** ppShlPtr = (SwModuleDummy**) GetAppData(SHL_WRITER);
+
+ SvFactory* pDocFact = (SvFactory*)(*ppShlPtr)->pSwDocShellFactory;
+ SvFactory* pWDocFact = (SvFactory*)(*ppShlPtr)->pSwWebDocShellFactory;
+ SvFactory* pGlobDocFact = (SvFactory*)(*ppShlPtr)->pSwGlobalDocShellFactory;
+ delete (*ppShlPtr);
+ SwModule* pModule = new SwModule(pDocFact, pWDocFact, pGlobDocFact);;
+ (*ppShlPtr) = pModule;
+ (*ppShlPtr)->pSwDocShellFactory = pDocFact ;
+ (*ppShlPtr)->pSwWebDocShellFactory = pWDocFact ;
+ (*ppShlPtr)->pSwGlobalDocShellFactory = pGlobDocFact;
+
+ SwDocShell::Factory().RegisterPluginMenuBar( SW_RES(CFG_SW_MENU_PORTAL));
+ SwDocShell::Factory().RegisterMenuBar(SW_RES(CFG_SW_MENU));
+ SwDocShell::Factory().RegisterAccel(SW_RES(CFG_SW_ACCEL));
+ SwWebDocShell::Factory().RegisterPluginMenuBar( SW_RES(CFG_SWWEB_MENU_PORTAL));
+ SwWebDocShell::Factory().RegisterMenuBar(SW_RES(CFG_SWWEB_MENU));
+ SwWebDocShell::Factory().RegisterAccel(SW_RES(CFG_SWWEB_ACCEL));
+ SwGlobalDocShell::Factory().RegisterMenuBar(SW_RES(CFG_SW_MENU));
+ SwGlobalDocShell::Factory().RegisterAccel(SW_RES(CFG_SW_ACCEL));
+
+
+ SdrObjFactory::InsertMakeObjectHdl( LINK( &aSwObjectFactory, SwObjectFactory, MakeObject ) );
+ //Initialisierung der Statics
+ ::_InitCore();
+ ::_InitFilter();
+ ::_InitUI();
+
+ pModule->InitAttrPool();
+ //jetzt darf das SwModule seinen Pool anlegen
+
+ // register your view-factories here
+ RegisterFactories();
+
+ // register your shell-interfaces here
+ RegisterInterfaces();
+
+ // register your controllers here
+ RegisterControls();
+
+}
+
+
+
+/*************************************************************************
+|*
+|* Exit
+|*
+\************************************************************************/
+
+void SwDLL::Exit()
+{
+ // called directly befor unloading the DLL
+ // do whatever you want, Sw-DLL is accessible
+
+ // der Pool muss vor den statics geloescht werden
+ SW_MOD()->RemoveAttrPool();
+
+ ::_FinitUI();
+ ::_FinitFilter();
+ ::_FinitCore();
+ // Objekt-Factory austragen
+ SdrObjFactory::RemoveMakeObjectHdl(LINK(&aSwObjectFactory, SwObjectFactory, MakeObject ));
+ // the SwModule must be destroyed
+ SwModuleDummy** ppShlPtr = (SwModuleDummy**) GetAppData(SHL_WRITER);
+ delete (*ppShlPtr);
+ (*ppShlPtr) = NULL;
+}
+
+
+/*-------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.6 2000/09/18 16:05:12 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.5 2000/08/07 14:02:28 os
+ portal menu added
+
+ Revision 1.4 1999/04/20 10:22:10 OS
+ #64980# eigener SwAttrPool fuer das SwModule
+
+
+ Rev 1.3 20 Apr 1999 12:22:10 OS
+ #64980# eigener SwAttrPool fuer das SwModule
+
+ Rev 1.2 24 Nov 1997 14:22:36 MA
+ includes
+
+ Rev 1.1 07 Nov 1997 15:50:36 OS
+ MakeObject-Link auch aus der richtigen Liste entfernen
+
+ Rev 1.0 01 Sep 1997 13:09:42 OS
+ Initial revision.
+
+
+-------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/app/swmodul1.cxx b/sw/source/ui/app/swmodul1.cxx
new file mode 100644
index 000000000000..6d1e3a224f92
--- /dev/null
+++ b/sw/source/ui/app/swmodul1.cxx
@@ -0,0 +1,1092 @@
+/*************************************************************************
+ *
+ * $RCSfile: swmodul1.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+
+#ifndef _SFXREQUEST_HXX
+#include <sfx2/request.hxx>
+#endif
+#ifndef _CPPUHELPER_WEAK_HXX_
+#include <cppuhelper/weak.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_URL_HPP_
+#include <com/sun/star/util/URL.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XDISPATCHPROVIDER_HPP_
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_FRAMESEARCHFLAG_HPP_
+#include <com/sun/star/frame/FrameSearchFlag.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XSTATUSLISTENER_HPP_
+#include <com/sun/star/frame/XStatusListener.hpp>
+#endif
+
+#ifndef _SBASLTID_HRC //autogen
+#include <offmgr/sbasltid.hrc>
+#endif
+#ifndef _SBA_SBAOBJ_HXX //autogen
+#include <offmgr/sbaobj.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.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_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_CMAPITEM_HXX //autogen
+#include <svx/cmapitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SDB_SDBSTAT_HXX
+#include <sdb/sdbstat.hxx>
+#endif
+
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _USRPREF_HXX
+#include <usrpref.hxx>
+#endif
+#ifndef _MODCFG_HXX
+#include <modcfg.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _PVIEW_HXX
+#include <pview.hxx>
+#endif
+#ifndef _WVIEW_HXX
+#include <wview.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _DBMGR_HXX
+#include <dbmgr.hxx>
+#endif
+#ifndef _UINUMS_HXX
+#include <uinums.hxx>
+#endif
+#ifndef _PRTOPT_HXX
+#include <prtopt.hxx> // fuer PrintOptions
+#endif
+#ifndef _NAVICFG_HXX
+#include <navicfg.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _APP_HRC
+#include <app.hrc>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE1_HXX_
+#include <cppuhelper/implbase1.hxx> // helper for implementations
+#endif
+using namespace ::rtl;
+using namespace ::com::sun::star;
+/* -----------------------------05.01.00 15:14--------------------------------
+
+ ---------------------------------------------------------------------------*/
+
+class SwXDispatchStatusListener : public cppu::WeakImplHelper1
+<
+ frame::XStatusListener
+>
+{
+ uno::Reference< frame::XStatusListener > xSelf;
+ util::URL aDispURL;
+ uno::Reference< frame::XDispatch > xDispatch;
+
+ void Invalidate();
+public:
+ SwXDispatchStatusListener(uno::Reference< frame::XDispatch > & xDisp, const util::URL& aURL);
+ ~SwXDispatchStatusListener();
+
+ //XStatusListener
+ virtual void SAL_CALL statusChanged(const frame::FeatureStateEvent& Event) throw( uno::RuntimeException );
+
+ //XEventListener
+ virtual void SAL_CALL disposing(const lang::EventObject& Source) throw( uno::RuntimeException );
+};
+/* -----------------------------05.01.00 15:18--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwXDispatchStatusListener::SwXDispatchStatusListener(
+ uno::Reference< frame::XDispatch > & xDisp, const util::URL& aURL) :
+ xDispatch(xDisp),
+ aDispURL(aURL)
+{
+ DBG_ASSERT(xDisp.is(), "XDispatch not set")
+ if(xDisp.is())
+ xSelf = this;
+}
+/* -----------------------------05.01.00 15:19--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwXDispatchStatusListener::~SwXDispatchStatusListener()
+{
+}
+/* -----------------------------05.01.00 15:21--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwXDispatchStatusListener::disposing(const lang::EventObject& Source)
+ throw( uno::RuntimeException )
+{
+ Invalidate();
+}
+/* -----------------------------05.01.00 15:22--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwXDispatchStatusListener::statusChanged(const frame::FeatureStateEvent& rEvent)
+ throw( uno::RuntimeException )
+{
+ if(rEvent.FeatureURL.Complete == aDispURL.Complete && rEvent.IsEnabled)
+ {
+ uno::Sequence <beans::PropertyValue > aArgs(0);
+ xDispatch->dispatch(aDispURL, aArgs);
+ Invalidate();
+ }
+}
+/* -----------------------------05.01.00 15:45--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwXDispatchStatusListener::Invalidate()
+{
+ if(xDispatch.is())
+ {
+ try
+ {
+ xDispatch->removeStatusListener(xSelf, aDispURL);
+ }
+ catch(...)
+ {
+ }
+ }
+ xSelf = 0;
+}
+/*-----------------08/28/97 08:41pm-----------------
+
+--------------------------------------------------*/
+void lcl_SetUIPrefs(const SwViewOption* pPref, SwView* pView, ViewShell* pSh )
+{
+ // in FrameSets kann die tatsaechliche Sichtbarkeit von der Einstellung der ViewOptions abweichen
+ sal_Bool bVScrollChanged = pPref->IsViewVScrollBar() != pSh->GetViewOptions()->IsViewVScrollBar();
+ sal_Bool bHScrollChanged = pPref->IsViewHScrollBar() != pSh->GetViewOptions()->IsViewHScrollBar();;
+
+ pSh->SetUIOptions(*pPref);
+
+ const SwViewOption* pNewPref = pSh->GetViewOptions();
+
+ // Scrollbars an / aus
+ if(bVScrollChanged)
+ {
+ if(pNewPref->IsViewVScrollBar())
+ pView->CreateVScrollbar();
+ else
+ pView->KillVScrollbar();
+ }
+ if(bHScrollChanged)
+ {
+ if ( pNewPref->IsViewHScrollBar() || pSh->IsBrowseMode() )
+ pView->CreateHScrollbar();
+ else
+ pView->KillHScrollbar();
+ }
+
+ // Lineale an / aus
+ if(pNewPref->IsViewVLin())
+ pView->CreateVLineal();
+ else
+ pView->KillVLineal();
+
+ // TabWindow an/aus
+ if(pNewPref->IsViewTabwin())
+ pView->CreateTab();
+ else
+ pView->KillTab();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Aktuelle SwWrtShell
+ --------------------------------------------------------------------*/
+
+
+SwWrtShell* GetActiveWrtShell()
+{
+ SwView *pActive = ::GetActiveView();
+ if( pActive )
+ return &pActive->GetWrtShell();
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Pointer auf die aktuelle Sicht
+ --------------------------------------------------------------------*/
+
+
+SwView* GetActiveView()
+{
+ SfxViewShell* pView = SfxViewShell::Current();
+ return PTR_CAST( SwView, pView );
+}
+/*--------------------------------------------------------------------
+ Beschreibung: Ueber Views iterieren - static
+ --------------------------------------------------------------------*/
+
+SwView* SwModule::GetFirstView()
+{
+ // liefert nur sichtbare SwViews
+ const TypeId aTypeId = TYPE(SwView);
+ SwView* pView = (SwView*)SfxViewShell::GetFirst(&aTypeId);
+ return pView;
+}
+
+
+SwView* SwModule::GetNextView(SwView* pView)
+{
+ DBG_ASSERT(PTR_CAST(SwView, pView),"keine SwView uebergeben")
+ const TypeId aTypeId = TYPE(SwView);
+ // auf Sichtbarkeit pruefen, bis der Sfx das GetFirst/Next
+ //mit bOnlyVisible implementiert hat
+ SwView* pNView = (SwView*)SfxViewShell::GetNext(*pView, &aTypeId);
+ while(pNView && !pNView->GetViewFrame()->IsVisible())
+ {
+ pNView = (SwView*)SfxViewShell::GetNext(*pNView, &aTypeId);
+ }
+ return pNView;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Liefert UsrPref mit den Einstellungen des aktuellen
+ Fensters
+------------------------------------------------------------------------*/
+
+
+void SwModule::MakeUsrPref( SwViewOption &rToFill, sal_Bool bWeb ) const
+{
+ // Einstellungen Ansicht der Core setzen
+ SwView* pView = ::GetActiveView();
+ SwPagePreView* pPPView;
+
+ if(pView)
+ {
+ rToFill = *(pView->GetWrtShell().GetViewOptions());
+ SfxFrame* pTopFrame = pView->GetViewFrame()->GetTopFrame();
+ if( pTopFrame->GetChildFrameCount() != 0 )
+ {
+ rToFill.SetViewTabwin(pUsrPref->IsViewTabwin());
+ rToFill.SetViewVLin(pUsrPref->IsViewVLin());
+ }
+ }
+ else if( 0 != (pPPView = PTR_CAST( SwPagePreView, SfxViewShell::Current())) )
+ rToFill = *(pPPView->GetViewShell().GetViewOptions());
+ else
+ rToFill = *((SwModule*)this)->GetUsrPref( bWeb );
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung: Neuer Master fuer die Einstellungen wird gesetzt;
+ dieser wirkt sich auf die aktuelle Sicht und alle
+ folgenden aus.
+------------------------------------------------------------------------*/
+
+void SwModule::ApplyUsrPref(const SwViewOption &rUsrPref, SwView* pActView,
+ sal_uInt16 nDest )
+{
+ SwView* pView = pActView;
+ ViewShell* pSh = 0;
+ sal_Bool bFrameDoc = sal_False;
+
+ if ( pView )
+ {
+ //Fuer FrameViews wird das Umschalten der Grafiken in allen Frames
+ //mit Writer-Dokumenten eingestellt.
+ //Auserdem werden die UI-Prefs in allen Frames eingestellt.
+
+ pSh = &pView->GetWrtShell();
+ SfxFrameIterator aIter( *pView->GetViewFrame()->GetTopFrame() );
+ SfxFrame *pChildFrame;
+ if ( 0 != (pChildFrame = aIter.FirstFrame()) )
+ {
+ bFrameDoc = sal_True;
+ sal_Bool bGraphic = rUsrPref.IsGraphic();
+ do
+ {
+ SfxViewShell* pVShell = pChildFrame->GetCurrentViewFrame()
+ ? pChildFrame->GetCurrentViewFrame()->GetViewShell()
+ : 0;
+ SwView* pFrameView = PTR_CAST(SwView, pVShell);
+ if(!pFrameView || pFrameView == pView)
+ continue;
+
+ SwWrtShell &rSh = pFrameView->GetWrtShell();
+ const SwViewOption* pVOpt = rSh.GetViewOptions();
+ SwViewOption aVOpt(*pVOpt);
+ if(aVOpt.IsGraphic() != bGraphic)
+ {
+ aVOpt.SetReadonly(pVOpt->IsReadonly());
+ aVOpt.SetGraphic( bGraphic );
+ rSh.ApplyViewOptions(aVOpt);
+ }
+ lcl_SetUIPrefs(&rUsrPref, pFrameView, &rSh );
+
+ } while ( 0 != (pChildFrame = aIter.NextFrame( *pChildFrame )));
+ }
+
+ }
+
+ SwMasterUsrPref* pPref = (SwMasterUsrPref*)GetUsrPref(
+ VIEWOPT_DEST_WEB == nDest ? sal_True :
+ VIEWOPT_DEST_TEXT== nDest ? sal_False :
+ pView && pView->ISA(SwWebView) );
+
+ //per Uno soll nur die sdbcx::View, aber nicht das Module veraendert werden
+ sal_Bool bViewOnly = VIEWOPT_DEST_VIEW_ONLY == nDest;
+ //PreView abfruehstuecken
+ SwPagePreView* pPPView;
+ if( !pView && 0 != (pPPView = PTR_CAST( SwPagePreView, SfxViewShell::Current())) )
+ {
+ if(!bViewOnly)
+ pPref->SetUIOptions( rUsrPref );
+ if(pPref->IsViewVScrollBar())
+ pPPView->CreateVScrollbar();
+ else
+ pPPView->KillVScrollbar();
+ if(pPref->IsViewHScrollBar())
+ pPPView->CreateHScrollbar();
+ else
+ pPPView->KillHScrollbar();
+ if(!bViewOnly)
+ {
+ pPref->SetPagePrevRow(rUsrPref.GetPagePrevRow());
+ pPref->SetPagePrevCol(rUsrPref.GetPagePrevCol());
+ }
+ return;
+ }
+
+ sal_Bool bViewHLin, bViewVLin;
+ if(bFrameDoc)
+ {
+ //In Frame-Dokumenten soll die Linealumschaltung nicht in den
+ //default uebernommen werden.
+ const sal_uInt32 nUIOptions = pPref->GetUIOptions();
+ bViewHLin = 0 != (nUIOptions & VIEWOPT_2_TABWIN);
+ bViewVLin = 0 != (nUIOptions & VIEWOPT_2_VLIN);
+ }
+
+ if(!bViewOnly)
+ {
+ pPref->SetDefault( sal_False );
+ pPref->SetUsrPref( rUsrPref );
+ }
+
+ if( !pView )
+ return;
+
+ // Weitergabe an die CORE
+ const sal_Bool bReadonly = pView->GetDocShell()->IsReadOnly();
+ SwViewOption* pViewOpt;
+ if(!bViewOnly)
+ pViewOpt = new SwViewOption( *pPref );
+ else
+ pViewOpt = new SwViewOption( rUsrPref );
+ pViewOpt->SetReadonly( bReadonly );
+ if( !(*pSh->GetViewOptions() == *pViewOpt) )
+ {
+ //Ist evtl. nur eine ViewShell
+ pSh->StartAction();
+ pSh->ApplyViewOptions( *pViewOpt );
+ ((SwWrtShell*)pSh)->SetReadOnlyAvailable(pViewOpt->IsCursorInProtectedArea());
+ pSh->EndAction();
+ }
+ if ( pSh->GetViewOptions()->IsReadonly() != bReadonly )
+ pSh->SetReadonlyOption(bReadonly);
+
+ lcl_SetUIPrefs(pViewOpt, pView, pSh);
+ if(bFrameDoc && !bViewOnly)
+ {
+ pPref->SetViewTabwin(bViewHLin);
+ pPref->SetViewVLin(bViewVLin);
+ }
+ // zum Schluss wird das Idle-Flag wieder gesetzt
+ // #42510#
+ pPref->SetIdle(sal_True);
+
+}
+/*-----------------13.11.96 11.57-------------------
+
+--------------------------------------------------*/
+
+SwNavigationConfig* SwModule::GetNavigationConfig()
+{
+ if(!pNavigationConfig)
+ {
+ pNavigationConfig = new SwNavigationConfig;
+ }
+ return pNavigationConfig;
+}
+
+/*-----------------05.02.97 08.03-------------------
+
+--------------------------------------------------*/
+
+SwPrintOptions* SwModule::GetPrtOptions(sal_Bool bWeb)
+{
+ if(bWeb && !pWebPrtOpt)
+ {
+ pWebPrtOpt = new SwPrintOptions(TRUE);
+ }
+ else if(!bWeb && !pPrtOpt)
+ {
+ pPrtOpt = new SwPrintOptions(FALSE);
+ }
+
+ return bWeb ? pWebPrtOpt : pPrtOpt;
+}
+
+/*-----------------26.06.97 07.52-------------------
+
+--------------------------------------------------*/
+SwChapterNumRules* SwModule::GetChapterNumRules()
+{
+ if(!pChapterNumRules)
+ pChapterNumRules = new SwChapterNumRules;
+ return pChapterNumRules;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwModule::ExecDB(SfxRequest &rReq)
+{
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ SwNewDBMgr* pNewDBMgr = NULL;
+
+ if (GetView())
+ pNewDBMgr = GetView()->GetWrtShell().GetNewDBMgr();
+
+ sal_uInt16 nSlot(rReq.GetSlot());
+
+ switch (nSlot)
+ {
+ case FN_QRY_MERGE:
+ case FN_QRY:
+ {
+ String sDBName;
+
+ if (GetView())
+ {
+ SwWrtShell &rSh = GetView()->GetWrtShell();
+ sDBName = rSh.GetDBName();
+#ifdef REPLACE_OFADBMGR
+#ifdef DEBUG
+ sDBName = String::CreateFromAscii("Address Book File");
+ sDBName += DB_DELIM;
+ sDBName += String::CreateFromAscii("address");
+#endif //DEBUG
+#endif //REPLACE_OFADBMGR
+
+ rSh.EnterStdMode(); // Wechsel in Textshell erzwingen; ist fuer
+ // das Mischen von DB-Feldern notwendig.
+ GetView()->AttrChangedNotify( &rSh );
+ pNewDBMgr->SetMergeType( DBMGR_MERGE );
+ ShowDBObj(rSh, sDBName, sal_True);
+ }
+
+ if (pNewDBMgr && nSlot == FN_QRY_MERGE)
+ {
+ SfxViewFrame* pVFrame = GetView()->GetViewFrame();
+ uno::Reference< frame::XFrame > xFrame = pVFrame->GetFrame()->GetFrameInterface();
+
+ uno::Reference< frame::XFrame > xBeamerFrame = xFrame->findFrame(
+ OUString::createFromAscii("_beamer"), frame::FrameSearchFlag::ALL);
+
+ if(xBeamerFrame.is())
+ {
+ uno::Reference< frame::XController > xCtrl = xBeamerFrame->getController();
+ uno::Reference< frame::XDispatchProvider > xDispProv(xCtrl, uno::UNO_QUERY);
+ if(xDispProv.is())
+ {
+ OUString uEmpty;
+ util::URL aURL;
+ aURL.Complete = OUString::createFromAscii(".uno:WriterDB/MailMerge");
+ uno::Reference< frame::XDispatch > xDisp = xDispProv->queryDispatch(aURL, uEmpty, frame::FrameSearchFlag::AUTO);
+ if(xDisp.is())
+ {
+ uno::Reference< frame::XStatusListener > xDispatchListener =
+ new SwXDispatchStatusListener(xDisp, aURL);
+ xDisp->addStatusListener(xDispatchListener, aURL);
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Schaut nach ob's min eine sdbcx::View gibt
+ --------------------------------------------------------------------*/
+
+void SwModule::StateIsView(SfxItemSet& rSet)
+{
+ SwView *pView = ::GetActiveView();
+
+ // Ist ein Writer-Dok ganz oben?
+ if( !pView || pView->GetDocShell()->GetProtocol().IsInPlaceActive() )
+ rSet.DisableItem(FN_QRY);
+
+ TypeId aType( TYPE(SwView) );
+ if( !SfxViewShell::GetFirst(&aType) ) // Ist irgendein Writer-Dok vorhanden?
+ rSet.DisableItem(FN_QRY_MERGE);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwModule::ShowDBObj(SwWrtShell& rSh, const String& rDBName, sal_Bool bShowError)
+{
+ String sDBName(rDBName.GetToken(0, DB_DELIM));
+
+#ifdef REPLACE_OFADBMGR
+ String sTable(rDBName.GetToken(1, DB_DELIM));
+ rSh.GetNewDBMgr()->ShowInBeamer( sDBName, sTable, SW_DB_SELECT_UNKNOWN, aEmptyStr );
+#else
+ if (sDBName.Len())
+ {
+ OfaDBMgr *pDBMgr = OFF_APP()->GetOfaDBMgr();
+ SbaDatabaseRef pConnection = pDBMgr->GetSbaObject()->
+ GetDatabase(sDBName, bShowError);
+ if ( pConnection )
+ {
+ String sTable(rDBName.GetToken(1, DB_DELIM));
+ DBObject eType;
+ if( !pConnection->HasObject( eType = dbTable, sTable ) &&
+ !pConnection->HasObject( eType = dbQuery , sTable ))
+ eType = dbTable;
+
+ //wenn keine Connection gefunden wurde, dann braucht man auch
+ //den Beamer nicht
+ pDBMgr->ShowInBeamer( sDBName, sTable, eType, aEmptyStr );
+ }
+ }
+#endif
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Redlining
+ --------------------------------------------------------------------*/
+
+sal_uInt16 SwModule::GetRedlineAuthor()
+{
+ if (!bAuthorInitialised)
+ {
+ sActAuthor = SFX_APP()->GetIniManager()->GetUserFullName();
+ bAuthorInitialised = sal_True;
+ }
+
+ return InsertRedlineAuthor(sActAuthor);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+const String& SwModule::GetRedlineAuthor(sal_uInt16 nPos)
+{
+ return *pAuthorNames->GetObject(nPos);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+sal_uInt16 SwModule::GetRedlineAuthorCount()
+{
+ return pAuthorNames->Count();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+sal_uInt16 SwModule::InsertRedlineAuthor(const String& rAuthor)
+{
+ sal_uInt16 nPos = 0;
+
+ while (nPos < pAuthorNames->Count() && *pAuthorNames->GetObject(nPos) != rAuthor)
+ nPos++;
+
+ if (nPos == pAuthorNames->Count())
+ pAuthorNames->Insert(new String(rAuthor), nPos);
+
+ return nPos;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void lcl_FillAuthorAttr( sal_uInt16 nAuthor, SfxItemSet &rSet,
+ const AuthorCharAttr &rAttr )
+{
+ Color aCol((ColorData)rAttr.nColor);
+
+ if (rAttr.nColor == COL_TRANSPARENT)
+ {
+// dynamische Vergabe der Attribute
+ static ColorData aColArr[ 10 ] = {
+ COL_LIGHTRED, COL_LIGHTBLUE, COL_LIGHTMAGENTA,
+ COL_GREEN, COL_RED, COL_BLUE,
+ COL_BROWN, COL_MAGENTA, COL_CYAN };
+
+ aCol.SetColor(aColArr[ nAuthor % 10 ]);
+ }
+
+ sal_Bool bBackGr = sal_False;
+
+ if (rAttr.nColor == COL_NONE)
+ bBackGr = sal_True;
+
+ switch (rAttr.nItemId)
+ {
+ case SID_ATTR_CHAR_WEIGHT:
+ rSet.Put(SvxWeightItem( (FontWeight)rAttr.nAttr, RES_CHRATR_WEIGHT));
+ break;
+
+ case SID_ATTR_CHAR_POSTURE:
+ rSet.Put(SvxPostureItem((FontItalic)rAttr.nAttr, RES_CHRATR_POSTURE));
+ break;
+
+ case SID_ATTR_CHAR_UNDERLINE:
+ rSet.Put(SvxUnderlineItem( (FontUnderline)rAttr.nAttr, RES_CHRATR_UNDERLINE));
+ break;
+
+ case SID_ATTR_CHAR_STRIKEOUT:
+ rSet.Put(SvxCrossedOutItem( (FontStrikeout)rAttr.nAttr, RES_CHRATR_CROSSEDOUT));
+ break;
+
+ case SID_ATTR_CHAR_CASEMAP:
+ rSet.Put(SvxCaseMapItem((SvxCaseMap)rAttr.nAttr, RES_CHRATR_CASEMAP));
+ break;
+
+ case SID_ATTR_BRUSH:
+ rSet.Put(SvxBrushItem(aCol, RES_CHRATR_BACKGROUND));
+ bBackGr = sal_True;
+ break;
+ }
+
+ if (!bBackGr)
+ rSet.Put(SvxColorItem(aCol));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwModule::GetInsertAuthorAttr(sal_uInt16 nAuthor, SfxItemSet &rSet)
+{
+ lcl_FillAuthorAttr(nAuthor, rSet, pModuleConfig->GetInsertAuthorAttr());
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwModule::GetDeletedAuthorAttr(sal_uInt16 nAuthor, SfxItemSet &rSet)
+{
+ lcl_FillAuthorAttr(nAuthor, rSet, pModuleConfig->GetDeletedAuthorAttr());
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+const AuthorCharAttr& SwModule::GetInsertAuthorAttr() const
+{
+ return pModuleConfig->GetInsertAuthorAttr();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+const AuthorCharAttr& SwModule::GetDeletedAuthorAttr() const
+{
+ return pModuleConfig->GetDeletedAuthorAttr();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Fuer zukuenftige Erweiterung:
+ --------------------------------------------------------------------*/
+
+void SwModule::GetFormatAuthorAttr( sal_uInt16 nAuthor, SfxItemSet &rSet )
+{
+ lcl_FillAuthorAttr( nAuthor, rSet, pModuleConfig->GetFormatAuthorAttr() );
+}
+
+const AuthorCharAttr& SwModule::GetFormatAuthorAttr() const
+{
+ return pModuleConfig->GetFormatAuthorAttr();
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+sal_uInt16 SwModule::GetRedlineMarkPos()
+{
+ return pModuleConfig->GetMarkAlignMode();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+sal_Bool SwModule::IsInsTblFormatNum(sal_Bool bHTML) const
+{
+ return pModuleConfig->IsInsTblFormatNum(bHTML);
+}
+
+sal_Bool SwModule::IsInsTblChangeNumFormat(sal_Bool bHTML) const
+{
+ return pModuleConfig->IsInsTblChangeNumFormat(bHTML);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+sal_Bool SwModule::IsInsTblAlignNum(sal_Bool bHTML) const
+{
+ return pModuleConfig->IsInsTblAlignNum(bHTML);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+const Color &SwModule::GetRedlineMarkColor()
+{
+ return pModuleConfig->GetMarkAlignColor();
+}
+
+/*-----------------03.03.98 16:47-------------------
+
+--------------------------------------------------*/
+const SwViewOption* SwModule::GetViewOption(sal_Bool bWeb)
+{
+ return GetUsrPref( bWeb );
+}
+
+// returne den definierten DocStat - WordDelimiter
+const String& SwModule::GetDocStatWordDelim() const
+{
+ return pModuleConfig->GetWordDelimiter();
+}
+
+
+// Durchreichen der Metric von der ModuleConfig (fuer HTML-Export)
+sal_uInt16 SwModule::GetMetric( sal_Bool bWeb ) const
+{
+ return pModuleConfig->GetMetric( bWeb );
+}
+
+// Update-Stati durchreichen
+sal_uInt16 SwModule::GetLinkUpdMode( sal_Bool ) const
+{
+ return pModuleConfig->GetLinkMode();
+}
+
+sal_uInt16 SwModule::GetFldUpdateFlags( sal_Bool ) const
+{
+ return pModuleConfig->GetFldUpdateFlags();
+}
+
+void SwModule::CheckSpellChanges( sal_Bool bOnlineSpelling,
+ sal_Bool bIsSpellWrongAgain, sal_Bool bIsSpellAllAgain )
+{
+ sal_Bool bOnlyWrong = bIsSpellWrongAgain && !bIsSpellAllAgain;
+ sal_Bool bInvalid = bOnlyWrong || bIsSpellAllAgain;
+ if( bOnlineSpelling || bInvalid )
+ {
+ TypeId aType = TYPE(SwDocShell);
+ for( SwDocShell *pDocSh = (SwDocShell*)SfxObjectShell::GetFirst(&aType);
+ pDocSh;
+ pDocSh = (SwDocShell*)SfxObjectShell::GetNext( *pDocSh, &aType ) )
+ {
+ SwDoc* pTmp = pDocSh->GetDoc();
+ if ( pTmp->GetRootFrm() )
+ pTmp->SpellItAgainSam( bInvalid, bOnlyWrong );
+ }
+// pSpell->SetSpellWrongAgain( sal_False );
+// pSpell->SetSpellAllAgain( sal_False );
+ }
+}
+
+/*-------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.50 2000/09/18 16:05:12 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.49 2000/09/08 15:11:56 os
+ use configuration service
+
+ Revision 1.48 2000/09/07 15:59:20 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.47 2000/09/07 08:25:24 os
+ SwPrintOptions uses configuration service
+
+ Revision 1.46 2000/07/18 12:50:07 os
+ replace ofadbmgr
+
+ Revision 1.45 2000/05/26 07:21:28 os
+ old SW Basic API Slots removed
+
+ Revision 1.44 2000/05/16 09:15:11 os
+ project usr removed
+
+ Revision 1.43 2000/05/11 12:05:29 tl
+ if[n]def ONE_LINGU entfernt
+
+ Revision 1.42 2000/03/30 13:28:04 os
+ UNO III
+
+ Revision 1.41 2000/03/29 12:46:55 jp
+ Bug #74570#: ShowDBObj - if no table and no query exist, set default to table
+
+ Revision 1.40 2000/03/21 15:47:50 os
+ UNOIII
+
+ Revision 1.39 2000/02/11 14:43:07 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.38 2000/02/09 07:58:08 os
+ #72824# check if beamer is available
+
+ Revision 1.37 2000/01/13 11:31:37 tl
+ #70735# fixed CheckSpellChanges bug
+
+ Revision 1.36 2000/01/11 10:33:54 tl
+ #70735# CheckSpellChanges moved from SwDoc to here
+
+ Revision 1.35 2000/01/06 12:54:01 hr
+ #65293#: END_CATCH
+
+ Revision 1.34 2000/01/06 07:32:38 os
+ #71436# mail merge dialog: execute via status method disposed
+
+ Revision 1.33 1999/06/22 15:37:58 JP
+ Bug #43028#: disableflag for edit in mailbody
+
+
+ Rev 1.32 22 Jun 1999 17:37:58 JP
+ Bug #43028#: disableflag for edit in mailbody
+
+ Rev 1.31 20 Apr 1999 18:59:24 JP
+ Task #65061#: neu: ZahlenFormaterkennung abschaltbar
+
+ Rev 1.30 12 Mar 1999 09:55:32 JP
+ Task #61405#: Optionen setzen
+
+ Rev 1.29 12 Mar 1999 09:45:04 OS
+ #63044# Datenbank-Fehlermeldung anzeigen
+
+ Rev 1.28 01 Mar 1999 16:20:52 MA
+ #62490# Altlast entfernt (Drucken und Briefumschlaege/Etiketten und Datenbank)
+
+ Rev 1.27 23 Feb 1999 16:19:38 OS
+ #62281# UsrPrefs per UNO nur auf aktuelle sdbcx::View anwenden
+
+ Rev 1.26 17 Feb 1999 08:37:24 OS
+ #58158# Einfuegen TabPage auch in HTML-Docs
+
+ Rev 1.25 27 Jan 1999 10:05:22 OS
+ #58677# Cursor in Readonly-Bereichen
+
+ Rev 1.24 26 Jan 1999 11:50:10 MIB
+ #60875#: Beim HTML-Export Einheit aus Extras/Optionen/Text-/HTML-Dokument nehmen
+
+ Rev 1.23 23 Nov 1998 17:36:52 JP
+ Bug #59754#: TerminateHdl wird nicht mehr fuers Clipboard benoetigt
+
+ Rev 1.22 20 Nov 1998 14:01:32 OM
+ #59720# Neue Tabellenoptionen beim Einfuegen
+
+ Rev 1.21 05 Oct 1998 17:16:54 OM
+ #57458# Auch Queries ueber F4 anzeigen
+
+ Rev 1.20 24 Sep 1998 13:33:02 OS
+ #52654# #56685# XTerminateListener fuer die Anmeldung an der Application
+
+ Rev 1.19 24 Aug 1998 12:20:54 OM
+ #54552# Serienbriefdialog: Statusupdate immer erzwingen
+
+ Rev 1.18 14 Jul 1998 12:09:06 OS
+ Scrollbars nur umschalten, wenn sich die ViewOptions wirklich veraendert haben #52708#
+
+ Rev 1.17 25 May 1998 12:41:28 JP
+ nMergeType wurde private, ueber SetMergeType setzen
+
+ Rev 1.16 15 May 1998 12:50:02 OM
+ Worttrenner
+
+ Rev 1.15 14 May 1998 16:46:00 OM
+ Worttrenner konfigurierbar
+
+ Rev 1.14 24 Apr 1998 19:36:54 JP
+ neu: DocStat WordDelimiter aus der Configuration holen
+
+ Rev 1.13 24 Mar 1998 17:45:28 OM
+ Formataenderung anzeigen
+
+ Rev 1.12 24 Mar 1998 13:43:56 JP
+ neu: Redline fuer harte Attributierung
+
+ Rev 1.11 16 Mar 1998 19:09:48 OM
+ Zugriff auf Ini optimiert
+
+ Rev 1.10 15 Mar 1998 16:57:22 MA
+ #48342# richtig initialisieren
+
+ Rev 1.9 10 Mar 1998 12:23:42 OM
+ Get...AuthorAttr
+
+ Rev 1.8 05 Mar 1998 14:44:08 OM
+ Redline-Attribute in Module-Cfg speichern
+
+ Rev 1.7 03 Mar 1998 17:00:46 OS
+ GetViewOption
+
+ Rev 1.6 28 Feb 1998 15:12:42 OM
+ Accept / reject changes
+
+ Rev 1.5 24 Feb 1998 15:32:04 OM
+ Redline-Darstellungsoptionen setzen
+
+ Rev 1.4 08 Dec 1997 11:46:16 OS
+ benannte Numerierungen entfernt
+
+ Rev 1.3 24 Nov 1997 14:22:36 MA
+ includes
+
+ Rev 1.2 18 Nov 1997 14:33:42 OM
+ Sba-Umstellung 372
+
+ Rev 1.1 02 Sep 1997 10:21:08 OS
+ includes
+
+ Rev 1.0 01 Sep 1997 13:09:16 OS
+ Initial revision.
+
+
+-------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/app/swmodule.cxx b/sw/source/ui/app/swmodule.cxx
new file mode 100644
index 000000000000..1eddf1a7b931
--- /dev/null
+++ b/sw/source/ui/app/swmodule.cxx
@@ -0,0 +1,664 @@
+/*************************************************************************
+ *
+ * $RCSfile: swmodule.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+#include "uiparam.hxx"
+#include "swerror.h"
+
+#ifndef _SV_WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _EHDL_HXX //autogen
+#include <svtools/ehdl.hxx>
+#endif
+#ifndef _OFAACCFG_HXX //autogen
+#include <offmgr/ofaaccfg.hxx>
+#endif
+#ifndef _SVX_FNTSZCTL_HXX //autogen
+#include <svx/fntszctl.hxx>
+#endif
+#ifndef _SVX_FNTCTL_HXX //autogen
+#include <svx/fntctl.hxx>
+#endif
+#ifndef _SVX_PSZCTRL_HXX //autogen
+#include <svx/pszctrl.hxx>
+#endif
+#ifndef _SVX_INSCTRL_HXX //autogen
+#include <svx/insctrl.hxx>
+#endif
+#ifndef _SVX_SELCTRL_HXX //autogen
+#include <svx/selctrl.hxx>
+#endif
+#ifndef _SVX_LINECTRL_HXX //autogen
+#include <svx/linectrl.hxx>
+#endif
+#include <basctl/btbxctl.hxx> //z-Zt falscher includeschutz!
+#include <svx/tbxctl.hxx> //z-Zt falscher includeschutz!
+#ifndef _FILLCTRL_HXX //autogen
+#include <svx/fillctrl.hxx>
+#endif
+#ifndef _SVX_TBCONTRL_HXX //autogen
+#include <svx/tbcontrl.hxx>
+#endif
+#ifndef _CONTDLG_HXX_ //autogen
+#include <svx/contdlg.hxx>
+#endif
+#ifndef _SVX_LAYCTRL_HXX //autogen
+#include <svx/layctrl.hxx>
+#endif
+#ifndef _SVX_FONTWORK_HXX //autogen
+#include <svx/fontwork.hxx>
+#endif
+#ifndef _TBXALIGN_HXX //autogen
+#include <svx/tbxalign.hxx>
+#endif
+#ifndef _SVX_GRAFCTRL_HXX
+#include <svx/grafctrl.hxx>
+#endif
+#ifndef _SVX_DLG_HYPERLINK_HXX //autogen
+#include <offmgr/hyprlink.hxx>
+#endif
+#ifndef _SVSTDARR_STRINGSDTOR
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSINGLESERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCANNER_XSCANNERMANAGER_HPP_
+#include <com/sun/star/scanner/XScannerManager.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XSET_HPP_
+#include <com/sun/star/container/XSet.hpp>
+#endif
+#ifndef _CPPUHELPER_FACTORY_HXX_
+#include <cppuhelper/factory.hxx>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+#include "docsh.hxx"
+#include "swmodule.hxx"
+#include <swtypes.hxx>
+#include <swevent.hxx>
+#include <swacorr.hxx>
+#include "cmdid.h"
+#include <dobjfac.hxx>
+#include <init.hxx>
+#ifndef _SWPVIEW_HXX //autogen
+#include <pview.hxx>
+#endif
+#ifndef _SWWVIEW_HXX //autogen
+#include <wview.hxx>
+#endif
+#ifndef _SWWDOCSH_HXX //autogen
+#include <wdocsh.hxx>
+#endif
+#ifndef _SWGLOBDOCSH_HXX //autogen
+#include <globdoc.hxx>
+#endif
+#ifndef _SRCVIEW_HXX //autogen
+#include <srcview.hxx>
+#endif
+#ifndef _AUTODOC_HXX //autogen
+#include <glshell.hxx>
+#endif
+#ifndef _SWTABSH_HXX //autogen
+#include <tabsh.hxx>
+#endif
+#ifndef _SWLISTSH_HXX //autogen
+#include <listsh.hxx>
+#endif
+#ifndef _SWGRFSH_HXX //autogen
+#include <grfsh.hxx>
+#endif
+#ifndef _SWOLESH_HXX //autogen
+#include <olesh.hxx>
+#endif
+#ifndef _SWDRAWSH_HXX //autogen
+#include <drawsh.hxx>
+#endif
+#ifndef _SWWDRWFORMSH_HXX //autogen
+#include <wformsh.hxx>
+#endif
+#ifndef _SWDRWTXTSH_HXX //autogen
+#include <drwtxtsh.hxx>
+#endif
+#ifndef _SWBEZIERSH_HXX //autogen
+#include <beziersh.hxx>
+#endif
+#ifndef _SWWTEXTSH_HXX //autogen
+#include <wtextsh.hxx>
+#endif
+#ifndef _SWWFRMSH_HXX //autogen
+#include <wfrmsh.hxx>
+#endif
+#include "drformsh.hxx"
+#include "wgrfsh.hxx"
+#include "wolesh.hxx"
+#include "wlistsh.hxx"
+#include "wtabsh.hxx"
+#include "wdrwbase.hxx"
+#ifndef _NAVIPI_HXX //autogen
+#include <navipi.hxx>
+#endif
+#ifndef _SRCVCFG_HXX //autogen
+#include <srcvcfg.hxx>
+#endif
+#ifndef _CHARTINS_HXX //autogen
+#include <chartins.hxx>
+#endif
+#ifndef SW_INPUTWIN_HXX //autogen
+#include <inputwin.hxx>
+#endif
+#ifndef _USRPREF_HXX //autogen
+#include <usrpref.hxx>
+#endif
+#ifndef _UINUMS_HXX //autogen
+#include <uinums.hxx>
+#endif
+#ifndef _PRTOPT_HXX //autogen
+#include <prtopt.hxx>
+#endif
+#include "bookctrl.hxx"
+#include "tmplctrl.hxx"
+#include "tblctrl.hxx"
+#include "zoomctrl.hxx"
+#include "swstbctl.hxx"
+#include "workctrl.hxx"
+#include "numctrl.hxx"
+#include "tbxanchr.hxx"
+#include "fldwrap.hxx"
+#include "redlndlg.hxx"
+#include "syncbtn.hxx"
+#ifndef _HDFTCTRL_HXX
+#include <hdftctrl.hxx>
+#endif
+#ifndef _MODOPT_HXX //autogen
+#include <modcfg.hxx>
+#endif
+#ifndef _FONTCFG_HXX //autogen
+#include <fontcfg.hxx>
+#endif
+#ifndef _UNOMOD_HXX
+#include <unomod.hxx>
+#endif
+#ifndef _UNOATXT_HXX
+#include <unoatxt.hxx>
+#endif
+#ifndef _SFX_APPUNO_HXX //autogen
+#include <sfx2/appuno.hxx>
+#endif
+#ifndef _SWATRSET_HXX //autogen
+#include <swatrset.hxx>
+#endif
+#ifndef _IDXMRK_HXX
+#include "idxmrk.hxx"
+#endif
+#ifndef _DLELSTNR_HXX_
+#include <dlelstnr.hxx>
+#endif
+
+#include "barcfg.hxx"
+
+#include <app.hrc>
+#include "cfgid.h"
+
+ResMgr *pSwResMgr = 0;
+sal_Bool bNoInterrupt = sal_False;
+
+#ifndef PROFILE
+// Code zum Initialisieren von Statics im eigenen Code-Segment
+#pragma code_seg( "SWSTATICS" )
+#endif
+
+#ifndef PROFILE
+#pragma code_seg()
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::scanner;
+using namespace ::com::sun::star::lang;
+using namespace ::rtl;
+#define C2S(cChar) String::CreateFromAscii(cChar)
+
+TYPEINIT1( SwModuleDummy, SfxModule );
+TYPEINIT1( SwModule, SwModuleDummy );
+
+
+//************************************************************************
+
+SwModule::SwModule( SvFactory* pFact,
+ SvFactory* pWebFact,
+ SvFactory* pGlobalFact )
+ : SwModuleDummy( SFX_APP()->CreateResManager( "sw" ), sal_False, pFact,
+ pWebFact, pGlobalFact ),
+ pSrcViewConfig(0),
+ pModuleConfig(0),
+ pView(0),
+ pChapterNumRules(0),
+ pStdFontConfig(0),
+ pNavigationConfig(0),
+ pPrtOpt(0),
+ pWebPrtOpt(0),
+ pWebUsrPref(0),
+ pUsrPref(0),
+ pToolbarConfig(0),
+ pWebToolbarConfig(0),
+ pClipboard(0),
+ pDragDrop(0),
+ pAttrPool(0),
+ bAuthorInitialised(sal_False)
+{
+ SetName( String::CreateFromAscii("StarWriter") );
+ pSwResMgr = GetResMgr();
+ pErrorHdl = new SfxErrorHandler( RID_SW_ERRHDL,
+ ERRCODE_AREA_SW,
+ ERRCODE_AREA_SW_END,
+ pSwResMgr );
+ OFF_APP()->RegisterEvent(SW_EVENT_MAIL_MERGE, SW_RES(STR_PRINT_MERGE_MACRO));
+ OFF_APP()->RegisterEvent(SW_EVENT_PAGE_COUNT, SW_RES(STR_PAGE_COUNT_MACRO));
+ pModuleConfig = new SwModuleOptions;
+ pModuleConfig->Initialize();
+
+ //Die brauchen wie sowieso
+ pToolbarConfig = new SwToolbarConfigItem( sal_False );
+ pToolbarConfig->Initialize();
+ pWebToolbarConfig = new SwToolbarConfigItem( sal_True );
+ pWebToolbarConfig->Initialize();
+
+ pStdFontConfig = new SwStdFontConfig;
+
+ pAuthorNames = new SvStringsDtor(5, 1); // Alle Redlining-Autoren
+
+ //JP 18.10.96: SvxAutocorrect gegen die SwAutocorrect austauschen
+ OfficeApplication* pOffApp = OFF_APP();
+ OfaAutoCorrCfg* pACfg = pOffApp->GetAutoCorrConfig();
+ if( pACfg )
+ {
+ const SvxAutoCorrect* pOld = pACfg->GetAutoCorrect();
+ pACfg->SetAutoCorrect(new SwAutoCorrect( *pOld ));
+ }
+ StartListening( *pOffApp );
+
+ xDicListEvtListener = uno::Reference< linguistic::XDictionaryListEventListener > (
+ new SwDicListEvtListener( ::GetDictionaryList() ) );
+
+ Reference< XMultiServiceFactory > xMgr( ::utl::getProcessServiceFactory() );
+ if( xMgr.is() )
+ {
+ m_xScannerManager = Reference< XScannerManager >(
+ xMgr->createInstance( OUString::createFromAscii( "com.sun.star.scanner.ScannerManager" ) ),
+ UNO_QUERY );
+
+// if( m_xScannerManager.is() )
+// {
+// m_xScannerListener = Reference< lang::XEventListener >(
+// OWeakObject* ( new ScannerEventListener( this ) ), UNO_QUERY );
+// }
+ }
+}
+
+//************************************************************************
+
+SwModule::~SwModule()
+{
+ SetPool(0);
+ delete pAttrPool;
+ delete pErrorHdl;
+ EndListening( *OFF_APP() );
+}
+
+//************************************************************************
+
+void SwDLL::RegisterFactories()
+{
+ //Diese Id's duerfen nicht geaendert werden. Mittels der Id's wird vom
+ //Sfx die sdbcx::View (Dokumentansicht wiederherstellen) erzeugt.
+ SwView::RegisterFactory ( 2 );
+ SwWebView::RegisterFactory ( 5 );
+ SwSrcView::RegisterFactory ( 6 );
+ SwPagePreView::RegisterFactory ( 7 );
+}
+
+//************************************************************************
+
+
+void SwDLL::RegisterInterfaces()
+{
+ SwModule* pMod = SW_MOD();
+ SwModule::RegisterInterface( pMod );
+ SwDocShell::RegisterInterface( pMod );
+ SwWebDocShell::RegisterInterface( pMod );
+ SwGlosDocShell::RegisterInterface( pMod );
+ SwWebGlosDocShell::RegisterInterface( pMod );
+ SwView::RegisterInterface( pMod );
+ SwWebView::RegisterInterface( pMod );
+ SwPagePreView::RegisterInterface( pMod );
+ SwSrcView::RegisterInterface( pMod );
+
+
+ SwBaseShell::RegisterInterface(pMod);
+ SwTextShell::RegisterInterface(pMod);
+ SwTableShell::RegisterInterface(pMod);
+ SwListShell::RegisterInterface(pMod);
+ SwFrameShell::RegisterInterface(pMod);
+ SwDrawBaseShell::RegisterInterface(pMod);
+ SwDrawShell::RegisterInterface(pMod);
+ SwDrawFormShell::RegisterInterface(pMod);
+ SwDrawTextShell::RegisterInterface(pMod);
+ SwBezierShell::RegisterInterface(pMod);
+ SwGrfShell::RegisterInterface(pMod);
+ SwOleShell::RegisterInterface(pMod);
+ SwWebTextShell::RegisterInterface(pMod);
+ SwWebFrameShell::RegisterInterface(pMod);
+ SwWebGrfShell::RegisterInterface(pMod);
+ SwWebListShell::RegisterInterface(pMod);
+ SwWebTableShell::RegisterInterface(pMod);
+ SwWebDrawBaseShell::RegisterInterface(pMod);
+ SwWebDrawFormShell::RegisterInterface(pMod);
+ SwWebOleShell::RegisterInterface(pMod);
+
+ uno::Reference< lang::XMultiServiceFactory > xMgr = utl::getProcessServiceFactory();
+ uno::Reference< container::XSet > xSet(xMgr, uno::UNO_QUERY);
+ if (xSet.is())
+ {
+ OUString sString = C2S("com.sun.star.text.AutoTextContainer");
+
+ uno::Reference< lang::XSingleServiceFactory > xSingleFactory =
+ cppu::createOneInstanceFactory(
+ xMgr,
+ OUString(),
+ SwXAutoTextContainer_CreateInstance,
+ uno::Sequence<OUString>(&sString, 1));
+
+ if (xSingleFactory.is())
+ xSet->insert(uno::Any(&xSingleFactory, ::getCppuType((uno::Reference< lang::XSingleServiceFactory> *)0)));
+
+ sString = C2S("com.sun.star.text.StarWriter");
+ xSingleFactory = cppu::createOneInstanceFactory(
+ xMgr,
+ OUString(),
+ SwXModule_CreateInstance,
+ uno::Sequence<OUString>(&sString, 1));
+
+ if (xSingleFactory.is())
+ xSet->insert(uno::Any(&xSingleFactory, ::getCppuType((uno::Reference< lang::XSingleServiceFactory>*)0)));
+ }
+}
+
+//************************************************************************
+
+void SwDLL::RegisterControls()
+{
+ SwModule* pMod = SW_MOD();
+ SvxTbxCtlDraw::RegisterControl(SID_INSERT_DRAW, pMod );
+ SvxTbxCtlAlign::RegisterControl(SID_OBJECT_ALIGN, pMod );
+ SwTbxAnchor::RegisterControl(FN_TOOL_ANKER, pMod );
+ SwTbxInsertCtrl::RegisterControl(FN_INSERT_CTRL, pMod );
+ SwTbxInsertCtrl::RegisterControl(FN_INSERT_OBJ_CTRL, pMod );
+ SwTbxAutoTextCtrl::RegisterControl(FN_INSERT_FIELD_CTRL, pMod );
+ SwTbxAutoTextCtrl::RegisterControl(FN_GLOSSARY_DLG, pMod );
+
+ SvxFillToolBoxControl::RegisterControl(SID_ATTR_FILL_STYLE, pMod );
+ SvxLineStyleToolBoxControl::RegisterControl(SID_ATTR_LINE_STYLE, pMod );
+ SvxLineWidthToolBoxControl::RegisterControl(SID_ATTR_LINE_WIDTH, pMod );
+ SvxLineColorToolBoxControl::RegisterControl(SID_ATTR_LINE_COLOR, pMod );
+ SvxLineEndToolBoxControl::RegisterControl(SID_ATTR_LINEEND_STYLE, pMod );
+
+ SvxFontNameToolBoxControl::RegisterControl(SID_ATTR_CHAR_FONT, pMod );
+ SvxFontHeightToolBoxControl::RegisterControl(SID_ATTR_CHAR_FONTHEIGHT, pMod );
+ SvxFontColorToolBoxControl::RegisterControl(SID_ATTR_CHAR_COLOR, pMod );
+ SvxFontColorExtToolBoxControl::RegisterControl(SID_ATTR_CHAR_COLOR2, pMod );
+ SvxFontColorExtToolBoxControl::RegisterControl(SID_ATTR_CHAR_COLOR_BACKGROUND, pMod );
+ SvxStyleToolBoxControl::RegisterControl(SID_STYLE_APPLY, 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 );
+
+ SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_FRAME_INTERACT, pMod );
+ SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_FRAME, pMod );
+ SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_COLUMN_SECTION, pMod );
+ SvxTableToolBoxControl::RegisterControl(FN_INSERT_TABLE, pMod );
+ SvxTableToolBoxControl::RegisterControl(FN_PREVIEW_ZOOM, pMod );
+
+ SvxFontMenuControl::RegisterControl(SID_ATTR_CHAR_FONT, pMod );
+ SvxFontSizeMenuControl::RegisterControl(SID_ATTR_CHAR_FONTHEIGHT, pMod );
+
+ SwZoomControl::RegisterControl(SID_ATTR_ZOOM, pMod );
+ SwHyperlinkControl::RegisterControl(FN_STAT_HYPERLINKS, pMod );
+ SvxPosSizeStatusBarControl::RegisterControl(0, pMod );
+ SvxInsertStatusBarControl::RegisterControl(0, pMod );
+ SvxSelectionModeControl::RegisterControl(FN_STAT_SELMODE, pMod );
+
+ SwBookmarkControl::RegisterControl(FN_STAT_PAGE, pMod );
+ SwTemplateControl::RegisterControl(FN_STAT_TEMPLATE, pMod );
+
+ SwTableOptimizeCtrl::RegisterControl(FN_OPTIMIZE_TABLE, pMod);
+
+ SfxMenuControl::RegisterControl(FN_FRAME_ALIGN_VERT_TOP, pMod );
+ SfxMenuControl::RegisterControl(FN_FRAME_ALIGN_VERT_BOTTOM, pMod );
+ SfxMenuControl::RegisterControl(FN_FRAME_ALIGN_VERT_CENTER, pMod );
+
+ SwHeadFootMenuControl::RegisterControl( FN_INSERT_PAGEHEADER, pMod );
+ SwHeadFootMenuControl::RegisterControl( FN_INSERT_PAGEFOOTER, pMod );
+
+ SvxHyperlinkDlgWrapper::RegisterChildWindow( sal_False, pMod );
+ SvxFontWorkChildWindow::RegisterChildWindow( sal_False, pMod );
+ SwFldDlgWrapper::RegisterChildWindow( sal_False, pMod );
+ SvxContourDlgChildWindow::RegisterChildWindow( sal_False, pMod );
+ SwInsertChartChild::RegisterChildWindow( sal_False, pMod );
+ SwNavigationChild::RegisterChildWindowContext( pMod );
+ SwInputChild::RegisterChildWindow( sal_False, pMod );
+ SwRedlineAcceptChild::RegisterChildWindow( sal_False, pMod );
+ SwSyncChildWin::RegisterChildWindow( sal_True, pMod );
+ SwInsertIdxMarkWrapper::RegisterChildWindow( sal_False, pMod );
+ SwInsertAuthMarkWrapper::RegisterChildWindow( sal_False, pMod );
+
+ SvxGrafRedToolBoxControl::RegisterControl( SID_ATTR_GRAF_RED, pMod );
+ SvxGrafGreenToolBoxControl::RegisterControl( SID_ATTR_GRAF_GREEN, pMod );
+ SvxGrafBlueToolBoxControl::RegisterControl( SID_ATTR_GRAF_BLUE, pMod );
+ SvxGrafLuminanceToolBoxControl::RegisterControl( SID_ATTR_GRAF_LUMINANCE, pMod );
+ SvxGrafContrastToolBoxControl::RegisterControl( SID_ATTR_GRAF_CONTRAST, pMod );
+ SvxGrafGammaToolBoxControl::RegisterControl( SID_ATTR_GRAF_GAMMA, pMod );
+ SvxGrafTransparenceToolBoxControl::RegisterControl( SID_ATTR_GRAF_TRANSPARENCE, pMod );
+ SvxGrafModeToolBoxControl::RegisterControl( SID_ATTR_GRAF_MODE, pMod );
+}
+
+
+/*************************************************************************
+|*
+|* Modul laden (nur Attrappe fuer das Linken der DLL)
+|*
+\************************************************************************/
+
+
+SfxModule* SwModuleDummy::Load()
+{
+ return (NULL);
+}
+
+SwModuleDummy::~SwModuleDummy()
+{
+}
+
+
+/*************************************************************************
+|*
+|* Modul laden
+|*
+\************************************************************************/
+
+SfxModule* SwModule::Load()
+{
+ return (this);
+}
+
+/*-----------------15.03.98 11:50-------------------
+
+--------------------------------------------------*/
+/*Reflection* SwModule::GetReflection( UsrUik aUIK )
+{
+ DBG_ERROR("GetReflection - new method not yet available")
+ return 0;
+
+ if(aUIK == ::getCppuType((const uno::Reference< text::XModule >*)0))
+ return ::getCppuType((const SwXModule*)0)();
+ else if(aUIK == ::getCppuType((const uno::Reference< text::XAutoTextContainer >*)0)())
+ return ::getCppuType((const SwXAutoTextContainer*)0)();
+ else
+ return SfxModule::GetReflection(aUIK);
+}*/
+/* -----------------20.04.99 10:46-------------------
+ *
+ * --------------------------------------------------*/
+void SwModule::InitAttrPool()
+{
+ DBG_ASSERT(!pAttrPool, "Pool ist schon da!")
+ pAttrPool = new SwAttrPool(0);
+ SetPool(pAttrPool);
+}
+/* -----------------20.04.99 10:46-------------------
+ *
+ * --------------------------------------------------*/
+void SwModule::RemoveAttrPool()
+{
+ SetPool(0);
+ DELETEZ(pAttrPool);
+}
+
+
+/*-------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.75 2000/09/18 16:05:12 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.74 2000/09/08 15:11:56 os
+ use configuration service
+
+ Revision 1.73 2000/09/04 11:42:21 tbe
+ basicide, isetbrw, si, vcdlged moved from svx to basctl
+
+ Revision 1.72 2000/08/02 07:53:07 jp
+ register GrafToolboxControls with SlotId
+
+ Revision 1.71 2000/07/31 19:25:18 jp
+ new attributes for CJK/CTL and graphic
+
+ Revision 1.70 2000/06/08 09:40:08 os
+ ContentBroker not in SwModule
+
+ Revision 1.69 2000/06/07 13:17:07 os
+ using UCB
+
+ Revision 1.68 2000/05/29 08:03:59 os
+ new scanner interface
+
+ Revision 1.67 2000/05/26 07:21:28 os
+ old SW Basic API Slots removed
+
+ Revision 1.66 2000/05/16 09:15:11 os
+ project usr removed
+
+ Revision 1.65 2000/05/09 14:40:15 os
+ BASIC interface partially removed
+
+ Revision 1.64 2000/04/11 08:01:31 os
+ UNICODE
+
+ Revision 1.63 2000/03/30 10:48:58 os
+ UNO III
+
+ Revision 1.62 2000/03/21 15:47:51 os
+ UNOIII
+
+ Revision 1.61 2000/02/11 14:43:11 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.60 2000/02/01 09:51:46 os
+ #72282# SwWebBaseShell removed
+
+ Revision 1.59 2000/01/11 19:37:43 tl
+ #70735# xDicListEvtListener added
+
+ Revision 1.58 1999/11/23 11:20:12 os
+ header corrected
+
+-------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/app/swwait.cxx b/sw/source/ui/app/swwait.cxx
new file mode 100644
index 000000000000..75ce524e19a3
--- /dev/null
+++ b/sw/source/ui/app/swwait.cxx
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * $RCSfile: swwait.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXVIEWFRM_HXX //autogen wg. SfxViewFrame
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen wg. SfxDispatcher
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SWDOCSH_HXX //autogen wg. SwDocShell
+#include <docsh.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+
+
+void SwDocShell::EnterWait( BOOL bLockDispatcher )
+{
+ SfxViewFrame *pFrame = SfxViewFrame::GetFirst( this, 0, FALSE );
+ while ( pFrame )
+ {
+ pFrame->GetWindow().EnterWait();
+ if ( bLockDispatcher )
+ pFrame->GetDispatcher()->Lock( TRUE );
+ pFrame = SfxViewFrame::GetNext( *pFrame, this, 0, FALSE );
+ }
+}
+
+void SwDocShell::LeaveWait( BOOL bLockDispatcher )
+{
+ SfxViewFrame *pFrame = SfxViewFrame::GetFirst( this, 0, FALSE );
+ while ( pFrame )
+ {
+ pFrame->GetWindow().LeaveWait();
+ if ( bLockDispatcher )
+ pFrame->GetDispatcher()->Lock( FALSE );
+ pFrame = SfxViewFrame::GetNext( *pFrame, this, 0, FALSE );
+ }
+}
+
+SwWait::SwWait( SwDocShell &rDocShell, BOOL bLockDispatcher ) :
+ rDoc ( rDocShell ),
+ bLock( bLockDispatcher )
+{
+ rDoc.EnterWait( bLock );
+}
+
+SwWait::~SwWait()
+{
+ rDoc.LeaveWait( bLock );
+}
+
+
diff --git a/sw/source/ui/cctrl/actctrl.cxx b/sw/source/ui/cctrl/actctrl.cxx
new file mode 100644
index 000000000000..c470b79d88e8
--- /dev/null
+++ b/sw/source/ui/cctrl/actctrl.cxx
@@ -0,0 +1,231 @@
+/*************************************************************************
+ *
+ * $RCSfile: actctrl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#include "actctrl.hxx"
+
+
+
+void NumEditAction::Action()
+{
+ aActionLink.Call( this );
+}
+
+
+long NumEditAction::Notify( NotifyEvent& rNEvt )
+{
+ long nHandled = 0;
+
+ if ( rNEvt.GetType() == EVENT_KEYINPUT )
+ {
+ const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
+ const KeyCode aKeyCode = pKEvt->GetKeyCode();
+ const USHORT nModifier = aKeyCode.GetModifier();
+ if( aKeyCode.GetCode() == KEY_RETURN &&
+ !nModifier)
+ {
+ Action();
+ nHandled = 1;
+ }
+
+ }
+ if(!nHandled)
+ NumericField::Notify( rNEvt );
+ return nHandled;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: KeyInput fuer ShortName - Edits ohne Spaces
+------------------------------------------------------------------------*/
+
+
+void NoSpaceEdit::KeyInput(const KeyEvent& rEvt)
+{
+ BOOL bCallParent = TRUE;
+ if(rEvt.GetCharCode())
+ {
+ String sKey = rEvt.GetCharCode();
+ if( STRING_NOTFOUND != sForbiddenChars.Search(sKey))
+ bCallParent = FALSE;
+ }
+ if(bCallParent)
+ Edit::KeyInput(rEvt);
+}
+/* -----------------------------11.02.00 15:28--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void NoSpaceEdit::Modify()
+{
+ Selection aSel = GetSelection();
+ String sTemp = GetText();
+ for(USHORT i = 0; i < sForbiddenChars.Len(); i++)
+ {
+ sTemp.EraseAllChars( sForbiddenChars.GetChar(i) );
+ }
+ USHORT nDiff = GetText().Len() - sTemp.Len();
+ if(nDiff)
+ {
+ aSel.setMin(aSel.getMin() - nDiff);
+ aSel.setMax(aSel.getMin());
+ SetText(sTemp);
+ SetSelection(aSel);
+ }
+ if(GetModifyHdl().IsSet())
+ GetModifyHdl().Call(this);
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.67 2000/09/18 16:05:12 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.66 2000/07/10 09:25:33 os
+ #76692# check CharCode first
+
+ Revision 1.65 2000/02/21 07:16:20 os
+ #73223# Call ModifyHdl in ::Modify
+
+ Revision 1.64 2000/02/11 14:46:03 os
+ #71914# Check content in ::Modify
+
+ Revision 1.63 2000/02/01 10:08:25 os
+ #71914# forbidden chars in table names: <>. and space
+
+ Revision 1.62 1999/06/10 07:45:50 OS
+ NoSpaceEdit: illegal characters can be set
+
+
+ Rev 1.61 10 Jun 1999 09:45:50 OS
+ NoSpaceEdit: illegal characters can be set
+
+ Rev 1.60 05 Nov 1998 10:43:42 OS
+ #58990# Notify sollte richtig auf KEYINPUT reagieren
+
+ Rev 1.59 21 Apr 1998 08:43:20 OS
+ NoSpaceEdit, TableNameEdit hierher verschoben
+
+ Rev 1.58 30 Mar 1998 18:46:04 TJ
+ chg: header wg. internal Comperror
+
+ Rev 1.57 12 Nov 1997 17:29:42 MBA
+ SP3:Notify,EVENT_KEYUP
+
+ Rev 1.56 03 Nov 1997 13:09:44 MA
+ precomp entfernt
+
+ Rev 1.55 17 Oct 1997 08:22:12 OS
+ Notify anstelle von KeyInput ueberladen #44732#
+
+ Rev 1.54 13 Feb 1997 16:36:26 MA
+ NameEdit entfernt
+
+ Rev 1.53 28 Aug 1996 08:23:40 OS
+ includes
+
+ Rev 1.52 24 Nov 1995 16:57:36 OM
+ PCH->PRECOMPILED
+
+ Rev 1.51 08 Nov 1995 10:18:32 OS
+ switch => if, keine member -> kein DTOR
+
+ Rev 1.50 12 Oct 1995 15:27:26 MA
+ Klasse EditAction entfernt
+
+ Rev 1.49 21 Mar 1995 19:00:08 OS
+ EditAction wieder drin
+
+ Rev 1.48 20 Mar 1995 19:05:22 OS
+ unbenutzte Funktionen entfernt
+
+ Rev 1.47 15 Mar 1995 11:01:46 MS
+ n.b. Ctors entfernt
+
+ Rev 1.46 15 Mar 1995 10:36:46 MS
+ ActionControlls reduziert
+
+ Rev 1.45 04 Mar 1995 23:13:30 ER
+ Help::EnableBalloonMode() hammernichmehr
+
+ Rev 1.44 07 Feb 1995 19:23:44 ER
+ #elif UNX wird vielleicht wahr werden oder auch nicht..
+
+ Rev 1.43 09 Jan 1995 16:17:44 ER
+ del: ctype h
+
+ Rev 1.42 25 Oct 1994 14:55:18 ER
+ add: PCH
+
+ Rev 1.41 22 Aug 1994 08:17:32 MS
+ SPoints entfernt
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/cctrl/makefile.mk b/sw/source/ui/cctrl/makefile.mk
new file mode 100644
index 000000000000..69c49a9f815a
--- /dev/null
+++ b/sw/source/ui/cctrl/makefile.mk
@@ -0,0 +1,97 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=cctrl
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ actctrl.cxx \
+ linbox.cxx \
+ popbox.cxx \
+ swlbox.cxx
+
+SLOFILES = \
+ $(SLO)$/actctrl.obj \
+ $(SLO)$/linbox.obj \
+ $(SLO)$/popbox.obj \
+ $(SLO)$/swlbox.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/cctrl/popbox.cxx b/sw/source/ui/cctrl/popbox.cxx
new file mode 100644
index 000000000000..bb723a4b1c72
--- /dev/null
+++ b/sw/source/ui/cctrl/popbox.cxx
@@ -0,0 +1,182 @@
+/*************************************************************************
+ *
+ * $RCSfile: popbox.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "cmdid.h"
+#include "swtypes.hxx"
+#include "segmentc.hxx"
+
+#include "popbox.hxx"
+
+
+// --- class SwHelpToolBox ---------------------------------------------
+
+
+SwHelpToolBox::SwHelpToolBox( Window* pParent, const ResId& rResId ) :
+ ToolBox( pParent, rResId )
+{
+}
+
+
+void SwHelpToolBox::MouseButtonDown(const MouseEvent &rEvt)
+{
+ // Zuerst DoubleClick-Link auswerten
+ // Dessen Returnwert entscheidet ueber andere Verarbeitung
+ // Doppelclickhandler nur, wenn nicht auf einen Button geclickt wurde
+ if(rEvt.GetButtons() == MOUSE_RIGHT &&
+ 0 == GetItemId(rEvt.GetPosPixel())) {
+ aRightClickLink.Call((MouseEvent *)&rEvt);
+ return;
+ }
+ else
+ ToolBox::MouseButtonDown(rEvt);
+}
+
+
+long SwHelpToolBox::DoubleClick( ToolBox* pCaller )
+{
+ // kein Doppelklick auf einen Button
+ if(0 == pCaller->GetCurItemId() && aDoubleClickLink.Call(0)) return TRUE;
+ return FALSE;
+}
+
+/*-----------------26.02.94 00:36-------------------
+ dtor ueberladen
+--------------------------------------------------*/
+
+
+SwHelpToolBox::~SwHelpToolBox() {}
+
+
+BOOL SwHelpToolBox::Drop( const DropEvent& rEvt)
+{
+ return GetParent()->Drop(rEvt);
+}
+
+
+BOOL SwHelpToolBox::QueryDrop( DropEvent& rEvt)
+{
+ return GetParent()->QueryDrop(rEvt);
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.17 2000/09/18 16:05:12 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.16 2000/04/11 08:03:01 os
+ UNICODE
+
+ Revision 1.15 1997/11/03 12:09:46 MA
+ precomp entfernt
+
+
+ Rev 1.14 03 Nov 1997 13:09:46 MA
+ precomp entfernt
+
+ Rev 1.13 28 Aug 1996 08:23:42 OS
+ includes
+
+ Rev 1.12 19 Jun 1996 14:57:58 OS
+ +Drop/QueryDrop
+
+ Rev 1.11 16 Apr 1996 17:03:48 OM
+ Unbenutzten Ctor entfernt
+
+ Rev 1.10 24 Nov 1995 16:57:38 OM
+ PCH->PRECOMPILED
+
+ Rev 1.9 07 Jul 1995 09:27:26 OM
+ Mouse_Contextmenu entfernt
+
+ Rev 1.8 06 Jul 1995 22:52:36 ER
+ Hack wg. MOUSE_CONTEXTMENU
+
+ Rev 1.7 09 Mar 1995 14:46:30 MA
+ Aufgeraeumt
+
+ Rev 1.6 04 Mar 1995 23:14:18 ER
+ Help::EnableBalloonMode() hammernichmehr
+
+ Rev 1.5 25 Jan 1995 17:13:58 OS
+ Timerinstrumentierung
+
+ Rev 1.4 09 Jan 1995 16:24:12 ER
+ del: initui hxx
+
+ Rev 1.3 25 Oct 1994 14:55:16 ER
+ add: PCH
+
+ Rev 1.2 19 Oct 1994 13:14:08 MA
+ Syntax
+
+ Rev 1.1 19 Oct 1994 12:21:12 MA
+ SV-ChangeXXX -> SetXXX.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/cctrl/swlbox.cxx b/sw/source/ui/cctrl/swlbox.cxx
new file mode 100644
index 000000000000..3328dd6176fd
--- /dev/null
+++ b/sw/source/ui/cctrl/swlbox.cxx
@@ -0,0 +1,622 @@
+/*************************************************************************
+ *
+ * $RCSfile: swlbox.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+#ifndef _UNOTOOLS_CHARCLASS_HXX
+#include <unotools/charclass.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _SWLBOX_HXX
+#include <swlbox.hxx>
+#endif
+
+
+SV_IMPL_PTRARR(SwEntryLst, SwBoxEntry*)
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ein ListboxElement
+ --------------------------------------------------------------------*/
+
+
+SwBoxEntry::SwBoxEntry() :
+ bModified(FALSE),
+ bNew(FALSE),
+ nId(LISTBOX_APPEND)
+{
+}
+
+
+SwBoxEntry::SwBoxEntry(const String& aNam, USHORT nIdx) :
+ bModified(FALSE),
+ bNew(FALSE),
+ aName(aNam),
+ nId(nIdx)
+{
+}
+
+
+SwBoxEntry::SwBoxEntry(const SwBoxEntry& rOld) :
+ aName(rOld.aName),
+ nId(rOld.nId),
+ bNew(rOld.bNew),
+ bModified(rOld.bModified)
+{
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+/*SwListBox::SwListBox(Window* pParent, const ResId& rId):
+ ListBox(pParent, rId)
+{
+ DBG_ASSERT( 0 == (ListBox::GetStyle() & WB_SORT), "NIE sortiert aus der Resource lesen!" );
+ // falls eine Liste ueber die Resource gelesen wurde, die interne
+ // entsprechend updaten
+ USHORT nCnt = ListBox::GetEntryCount();
+ for( USHORT n = 0; n < nCnt; ++n )
+ {
+ const SwBoxEntry* pTmp = new SwBoxEntry( ListBox::GetEntry( n ), n );
+ aEntryLst.Insert( pTmp, n );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Basisklasse Dtor
+ --------------------------------------------------------------------*/
+
+
+/*SwListBox::~SwListBox()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Listen loeschen und Anzeige loeschen
+ --------------------------------------------------------------------*/
+
+
+/*void SwListBox::Clear()
+{
+ ListBox::Clear();
+ aEntryLst.DeleteAndDestroy( 0, aEntryLst.Count() );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Rund um die Entries
+ --------------------------------------------------------------------*/
+
+
+/*const SwBoxEntry& SwListBox::GetEntry(USHORT nPos) const
+{
+ if( nPos < aEntryLst.Count() )
+ return *aEntryLst[ nPos ];
+
+ return aDefault;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: aktullen Eintrag zurueckgeben
+ --------------------------------------------------------------------*/
+
+
+/*const SwBoxEntry& SwListBox::GetSelectEntry() const
+{
+ USHORT nPos = ListBox::GetSelectEntryPos();
+ if( nPos < aEntryLst.Count() )
+ return *aEntryLst[ nPos ];
+
+ return aDefault;
+}
+
+
+void SwListBox::RemoveEntry( USHORT nPos )
+{
+ if( nPos < aEntryLst.Count() )
+ {
+ aEntryLst.DeleteAndDestroy( nPos, 1 );
+ ListBox::RemoveEntry( nPos );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Eintrag in die ListBox aufnehmen
+ --------------------------------------------------------------------*/
+
+
+/*void SwListBox::InsertEntry( const SwBoxEntry& rEntry, USHORT nPos )
+{
+ if( nPos >= aEntryLst.Count() )
+ nPos = aEntryLst.Count();
+
+ SwBoxEntry* pEntry = new SwBoxEntry( rEntry );
+ ListBox::InsertEntry( pEntry->aName, nPos );
+ aEntryLst.C40_INSERT( SwBoxEntry, pEntry, nPos );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Sortiert einfuegen
+ --------------------------------------------------------------------*/
+
+
+/*void SwListBox::InsertEntrySort( const SwBoxEntry& rEntry )
+{
+ USHORT nPos;
+ if( !SeekEntry( rEntry, &nPos ) )
+ {
+ SwBoxEntry* pEntry = new SwBoxEntry( rEntry );
+ ListBox::InsertEntry( pEntry->aName, nPos );
+ aEntryLst.C40_INSERT( SwBoxEntry, pEntry, nPos );
+ }
+}
+
+
+BOOL SwListBox::SeekEntry( const SwBoxEntry& rEntry, USHORT* pPos )
+{
+ register USHORT nO = aEntryLst.Count(), nM, nU = 0;
+ if( nO > 0 )
+ {
+ nO--;
+ while( nU <= nO )
+ {
+ nM = nU + ( nO - nU ) / 2;
+ StringCompare eCmp = aEntryLst[ nM ]->aName.ICompare( rEntry.aName );
+ if( COMPARE_EQUAL == eCmp )
+ {
+ if( pPos ) *pPos = nM;
+ return TRUE;
+ }
+ else if( COMPARE_GREATER == eCmp )
+ nU = nM + 1;
+ else if( nM == 0 )
+ break;
+ else
+ nO = nM - 1;
+ }
+ }
+ if( pPos ) *pPos = nU;
+ return FALSE;
+}
+
+/* */
+
+
+SwComboBox::SwComboBox(Window* pParent, const ResId& rId, USHORT nStyleBits ):
+ ComboBox(pParent, rId),
+ nStyle(nStyleBits)
+{
+ // Verwaltung fuer die Stringlist aus der Resource aufbauen
+ USHORT nSize = GetEntryCount();
+ for( USHORT i=0; i < nSize; ++i )
+ {
+ const SwBoxEntry* pTmp = new SwBoxEntry(ComboBox::GetEntry(i), i);
+ aEntryLst.Insert(pTmp, aEntryLst.Count() );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Basisklasse Dtor
+ --------------------------------------------------------------------*/
+
+
+SwComboBox::~SwComboBox()
+{
+// das erledigen die Listen doch schon selbst im DTOR!
+// aEntryLst.DeleteAndDestroy(0, aEntryLst.Count());
+// aDelEntryLst.DeleteAndDestroy(0, aDelEntryLst.Count());
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: neue Eintraege verwalten
+ --------------------------------------------------------------------*/
+
+
+void SwComboBox::InsertNewEntry(const SwBoxEntry& rEntry)
+{
+ SwBoxEntry* pNew = new SwBoxEntry(rEntry);
+ pNew->bNew = TRUE;
+ InsertSorted(pNew);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Eintrag in die ComboBox aufnehmen
+ --------------------------------------------------------------------*/
+
+
+void SwComboBox::InsertEntry(const SwBoxEntry& rEntry)
+{
+ InsertSorted(new SwBoxEntry(rEntry));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Eintrag aus der Liste loeschen
+ --------------------------------------------------------------------*/
+
+
+void SwComboBox::RemoveEntry(USHORT nPos)
+{
+ if(nPos >= aEntryLst.Count())
+ return;
+
+ // Altes Element austragen
+ SwBoxEntry* pEntry = aEntryLst[nPos];
+ aEntryLst.Remove(nPos, 1);
+ ComboBox::RemoveEntry(nPos);
+
+ // keine neuen Eintraege in die Liste mit aufnehmen
+ if(pEntry->bNew)
+ return;
+
+ // in DeleteListe eintragen
+ aDelEntryLst.C40_INSERT(SwBoxEntry, pEntry, aDelEntryLst.Count());
+}
+
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Position by Name
+ --------------------------------------------------------------------*/
+
+USHORT SwComboBox::GetEntryPos(const SwBoxEntry& rEntry) const
+{
+ return ComboBox::GetEntryPos(rEntry.aName);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Rund um die Entries
+ --------------------------------------------------------------------*/
+
+
+const SwBoxEntry& SwComboBox::GetEntry(USHORT nPos) const
+{
+ if(nPos < aEntryLst.Count())
+ return *aEntryLst[nPos];
+
+ return aDefault;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: geloeschte Eintraege
+ --------------------------------------------------------------------*/
+
+
+USHORT SwComboBox::GetRemovedCount() const
+{
+ return aDelEntryLst.Count();
+}
+
+
+const SwBoxEntry& SwComboBox::GetRemovedEntry(USHORT nPos) const
+{
+ if(nPos < aDelEntryLst.Count())
+ return *aDelEntryLst[nPos];
+
+ return aDefault;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Neue Entries begutachten
+ --------------------------------------------------------------------*/
+
+
+USHORT SwComboBox::GetNewCount() const
+{
+ USHORT nNew = 0;
+ USHORT nSize = aEntryLst.Count();
+ for(USHORT i=0; i < nSize; ++i)
+ if(aEntryLst[i]->bNew)
+ nNew++;
+
+ return nNew;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Alle neuen Eintraege ueberpruefen
+ --------------------------------------------------------------------*/
+
+
+const SwBoxEntry& SwComboBox::GetNewEntry(USHORT nPos) const
+{
+ USHORT nSize = aEntryLst.Count();
+ USHORT nNew = 0;
+
+ for(USHORT i=0; i < nSize; ++i)
+ if( aEntryLst[i]->bNew && nNew++ == nPos )
+ return *aEntryLst[i];
+
+ return aDefault;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Sortiert einfuegen
+ --------------------------------------------------------------------*/
+
+
+void SwComboBox::InsertSorted(SwBoxEntry* pEntry)
+{
+ ComboBox::InsertEntry(pEntry->aName);
+ USHORT nPos = ComboBox::GetEntryPos(pEntry->aName);
+ aEntryLst.C40_INSERT(SwBoxEntry, pEntry, nPos);
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Je nach Option bestimmte Zeichen ausblenden
+ --------------------------------------------------------------------*/
+
+
+void SwComboBox::KeyInput( const KeyEvent& rKEvt )
+{
+ USHORT nChar = rKEvt.GetCharCode();
+
+ if(nStyle & CBS_FILENAME)
+ {
+#ifdef MAC
+ if(nChar == ':')
+ return;
+#elif defined UNX
+ if(nChar == '/' || nChar == ' ' )
+ return;
+#else
+ if(nChar == ':' || nChar == '\\' || nChar == '.' || nChar == ' ')
+ return;
+#endif
+ }
+ ComboBox::KeyInput(rKEvt);
+}
+
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Text nach Option konvertieren
+ --------------------------------------------------------------------*/
+
+
+String SwComboBox::GetText() const
+{
+ String aTxt( ComboBox::GetText() );
+
+ if(nStyle & CBS_LOWER)
+ GetAppCharClass().toLower( aTxt );
+ else if( nStyle & CBS_UPPER )
+ GetAppCharClass().toUpper( aTxt );
+
+ return aTxt;
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.52 2000/09/18 16:05:13 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.51 2000/08/30 16:45:51 jp
+ use CharClass instead of international
+
+ Revision 1.50 2000/04/11 08:03:01 os
+ UNICODE
+
+ Revision 1.49 2000/02/11 14:43:21 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.48 1997/11/03 12:09:46 MA
+ precomp entfernt
+
+
+ Rev 1.47 03 Nov 1997 13:09:46 MA
+ precomp entfernt
+
+ Rev 1.46 08 Aug 1997 17:29:48 OM
+ Headerfile-Umstellung
+
+ Rev 1.45 06 Aug 1997 11:28:38 TRI
+ GetpApp statt pApp
+
+ Rev 1.44 23 Apr 1997 10:39:28 OS
+ ResId const
+
+ Rev 1.43 07 Nov 1996 11:47:52 JP
+ ASSERT korrigiert
+
+ Rev 1.42 05 Nov 1996 15:36:36 JP
+ SwListBox: Sortierung selbst uebernommen; ueberfluessiges entfernt/aufgeraeumt
+
+ Rev 1.41 28 Aug 1996 08:23:42 OS
+ includes
+
+ Rev 1.40 16 Aug 1996 13:24:00 TRI
+ C40_INSERT statt Insert
+
+ Rev 1.39 25 Jun 1996 17:46:54 HJS
+ include tlintl.hxx
+
+ Rev 1.38 16 Apr 1996 16:46:10 OM
+ SwEventListBox entfernt
+
+ Rev 1.37 24 Nov 1995 16:57:38 OM
+ PCH->PRECOMPILED
+
+ Rev 1.36 17 Nov 1995 13:21:36 MA
+ Segmentierung
+
+ Rev 1.35 27 Jul 1995 10:44:42 mk
+ an SCC4.0.1a angepasst (MDA)
+
+ Rev 1.34 20 Mar 1995 19:03:20 OS
+ unbenutzte Funktionen entfernt
+
+ Rev 1.33 15 Dec 1994 20:21:28 SWG
+ *ARR* Ersetzungen, svmem, __far_data etc.
+
+ Rev 1.32 25 Oct 1994 14:55:22 ER
+ add: PCH
+
+ Rev 1.31 10 May 1994 13:48:44 MS
+ boeser Fehler! bei sortierten SwlBoxen kam der Zugriff auf die EntryListe durcheinander
+
+ Rev 1.30 06 May 1994 13:17:28 MS
+ GetSelectEntryPos geandert
+
+ Rev 1.29 02 Mar 1994 17:22:56 MS
+ mit EntryPos
+
+ Rev 1.28 02 Mar 1994 15:46:52 VB
+ ListBox mit MouseButtonDown-Handler
+
+ Rev 1.27 26 Feb 1994 02:59:36 ER
+ virt. dtor mit export
+
+ Rev 1.26 23 Feb 1994 12:07:04 ER
+ SEXPORT
+
+ Rev 1.25 17 Feb 1994 08:35:06 MI
+ SEG_FUNCDEFS ausgefuellt
+
+ Rev 1.24 16 Feb 1994 19:56:36 MI
+ SEG_FUNCDEFS ausgefuellt
+
+ Rev 1.23 16 Feb 1994 15:41:54 MI
+ Pragmas zurechtgerueckt
+
+ Rev 1.22 28 Jan 1994 11:36:26 MI
+ TCOV() entfernt, SW_... nach SEG_... umbenannt
+
+ Rev 1.21 13 Jan 1994 08:33:26 MI
+ Segmentierung per #define ermoeglicht
+
+ Rev 1.20 10 Jan 1994 09:38:36 MS
+ UNX - Fehler behoben
+
+ Rev 1.19 09 Jan 1994 21:06:46 MI
+ Provisorische Segmentierung
+
+ Rev 1.18 06 Jan 1994 13:14:38 MS
+ Default-Options geaendert
+
+ Rev 1.17 08 Dec 1993 11:21:38 MS
+ SwBoxEntry() setz nId auf LISTBOX_ENTRY_NOTFOUND
+
+ Rev 1.16 06 Dec 1993 11:47:10 VB
+ Upper/Lower konvertieren ueber International
+
+ Rev 1.15 24 Sep 1993 18:50:02 VB
+ Segmentierung
+
+ Rev 1.14 24 Sep 1993 08:59:44 MS
+ Beschraenkung der Eingabe geaendert
+
+ Rev 1.13 23 Sep 1993 17:33:46 MS
+ ComboBox Namen im Edit begrenzen
+
+ Rev 1.12 27 Apr 1993 08:18:20 OK
+ NEU: #pragma hdrstop
+
+ Rev 1.11 16 Feb 1993 08:52:18 MS
+ fuer m800
+
+ Rev 1.10 10 Feb 1993 19:42:08 VB
+ Umstellung SV21
+
+ Rev 1.9 06 Jan 1993 09:15:30 OK
+ Anpassung an M70
+
+ Rev 1.8 02 Dec 1992 17:39:46 MS
+ neu SwMultiComboBox
+
+ Rev 1.7 27 Nov 1992 16:04:52 MS
+ RemoveEntry() korrigiert
+
+ Rev 1.6 27 Nov 1992 15:55:48 MS
+ mit InitComboBox
+
+ Rev 1.5 27 Nov 1992 15:42:52 MS
+ Init erweitert
+
+ Rev 1.4 27 Nov 1992 14:42:38 MS
+ mit const SwBoxEntr& Returns
+
+ Rev 1.3 27 Nov 1992 13:43:54 MS
+ GetCurEntry gerichtet
+
+ Rev 1.2 27 Nov 1992 11:40:52 MS
+ neu GetEntryPos
+
+ Rev 1.1 27 Nov 1992 11:30:08 MS
+ neu InitFromResource
+
+ Rev 1.0 27 Nov 1992 10:49:58 MS
+ Initial revision.
+
+ ------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/chrdlg/break.cxx b/sw/source/ui/chrdlg/break.cxx
new file mode 100644
index 000000000000..f3d7e0761fd6
--- /dev/null
+++ b/sw/source/ui/chrdlg/break.cxx
@@ -0,0 +1,408 @@
+/*************************************************************************
+ *
+ * $RCSfile: break.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+
+#ifndef _SV_SVAPP_HXX
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _BASESH_HXX
+#include <basesh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _BREAK_HXX
+#include <break.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+
+#ifndef _BREAK_HRC
+#include <break.hrc>
+#endif
+#ifndef _CHRDLG_HRC
+#include <chrdlg.hrc>
+#endif
+
+
+void SwBreakDlg::Apply()
+{
+ String aTemplate( aEmptyStr );
+ BOOL bTemplate = FALSE;
+ if(aLineBtn.IsChecked())
+ {
+ rSh.InsertLineBreak();
+ }
+ else if(aColumnBtn.IsChecked())
+ {
+ rSh.InsertColumnBreak();
+ }
+ else if(aPageBtn.IsChecked())
+ {
+ rSh.StartAllAction();
+ const USHORT nPos = aPageCollBox.GetSelectEntryPos();
+
+ // auf Position 0 steht 'Ohne' Seitenvorlage.
+ if(0 != nPos && LISTBOX_ENTRY_NOTFOUND != nPos)
+ {
+ aTemplate = aPageCollBox.GetSelectEntry();
+ USHORT nPgNum = aPageNumBox.IsChecked() ? (USHORT)aPageNumEdit.GetValue()
+ : 0;
+ rSh.InsertPageBreak(&aTemplate, nPgNum);
+ bTemplate = TRUE;
+ }
+ else
+ rSh.InsertPageBreak();
+ rSh.EndAllAction();
+ }
+}
+
+
+IMPL_LINK_INLINE_START( SwBreakDlg, ClickHdl, void *, EMPTYARG )
+{
+ CheckEnable();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwBreakDlg, ClickHdl, void *, EMPTYARG )
+
+/*------------------------------------------------------------------------
+ Beschreibung: Handler fuer Aendern Seitenummer
+------------------------------------------------------------------------*/
+
+IMPL_LINK_INLINE_START( SwBreakDlg, PageNumHdl, CheckBox *, pBox )
+{
+ if(pBox->IsChecked()) aPageNumEdit.SetValue(1);
+ else aPageNumEdit.SetText(aEmptyStr);
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwBreakDlg, PageNumHdl, CheckBox *, pBox )
+
+/*------------------------------------------------------------------------
+ Beschreibung: Durch Aendern der Seitennummer wird die Checkbox gecheckt.
+------------------------------------------------------------------------*/
+
+IMPL_LINK_INLINE_START( SwBreakDlg, PageNumModifyHdl, Edit *, EMPTYARG )
+{
+ aPageNumBox.Check();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwBreakDlg, PageNumModifyHdl, Edit *, EMPTYARG )
+
+/*------------------------------------------------------------------------
+ Beschreibung: Ok-Handler;
+ prueft, ob die Seitenummer nPage eine legale Seitennummer
+ ist (linke Seiten mit geraden Nummern etc. bei einer Seitenvorlage
+ mit wechselnden Seiten)
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwBreakDlg, OkHdl, Button *, EMPTYARG )
+{
+ if(aPageNumBox.IsChecked()) {
+ // wenn unterschiedliche Seitenvorlagen, testen auf Gueltigkeit
+ const USHORT nPos = aPageCollBox.GetSelectEntryPos();
+ // auf Position 0 steht 'Ohne'.
+ const SwPageDesc *pPageDesc;
+ if ( 0 != nPos && LISTBOX_ENTRY_NOTFOUND != nPos )
+ pPageDesc = rSh.FindPageDescByName( aPageCollBox.GetSelectEntry(),
+ TRUE );
+ else
+ pPageDesc = &rSh.GetPageDesc(rSh.GetCurPageDesc());
+
+ ASSERT(pPageDesc, Seitenvorlage nicht gefunden.);
+ const USHORT nUserPage = USHORT(aPageNumEdit.GetValue());
+ BOOL bOk = TRUE;
+ switch(pPageDesc->GetUseOn()) {
+ case PD_MIRROR:
+ case PD_ALL: break;
+ case PD_LEFT: bOk = 0 == nUserPage % 2; break;
+ case PD_RIGHT: bOk = nUserPage % 2; break;
+ }
+ if(!bOk) {
+ InfoBox(this, SW_RES(MSG_ILLEGAL_PAGENUM)).Execute();
+ aPageNumEdit.GrabFocus();
+ return 0;
+ }
+ }
+ EndDialog(RET_OK);
+ return 0;
+}
+
+SwBreakDlg::SwBreakDlg( Window *pParent, SwWrtShell &rS ) :
+
+ SvxStandardDialog( pParent,SW_RES(DLG_BREAK) ),
+
+ rSh(rS),
+ aLineBtn(this,SW_RES(RB_LINE)),
+ aColumnBtn(this,SW_RES(RB_COL)),
+ aPageBtn(this,SW_RES(RB_PAGE)),
+ aPageCollText(this, SW_RES(FT_COLL)),
+ aPageCollBox(this, SW_RES(LB_COLL)),
+ aPageNumBox(this, SW_RES(CB_PAGENUM)),
+ aPageNumEdit(this, SW_RES(ED_PAGENUM)),
+ aBreakFrm(this,SW_RES(GB_BREAK)),
+ aOkBtn(this,SW_RES(BT_OK)),
+ aCancelBtn(this,SW_RES(BT_CANCEL)),
+ aHelpBtn(this,SW_RES(BT_HELP)),
+ bHtmlMode(0 != ::GetHtmlMode(rS.GetView().GetDocShell()))
+{
+ Link aLk = LINK(this,SwBreakDlg,ClickHdl);
+ aPageBtn.SetClickHdl( aLk );
+ aLineBtn.SetClickHdl( aLk );
+ aColumnBtn.SetClickHdl( aLk );
+ aPageCollBox.SetSelectHdl( aLk );
+
+ aOkBtn.SetClickHdl(LINK(this,SwBreakDlg,OkHdl));
+ aPageNumBox.SetClickHdl(LINK(this,SwBreakDlg,PageNumHdl));
+ aPageNumEdit.SetModifyHdl(LINK(this,SwBreakDlg,PageNumModifyHdl));
+
+
+ // Einfuegen der vorhandenen Seitenvorlagen in die Listbox
+ const International& rInt = Application::GetAppInternational();
+ const USHORT nCount = rSh.GetPageDescCnt();
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ const SwPageDesc &rPageDesc = rSh.GetPageDesc(i);
+ ::InsertStringSorted(rPageDesc.GetName(), aPageCollBox, TRUE, rInt);
+ }
+
+ String aFmtName;
+ for(i = RES_POOLPAGE_BEGIN; i <= RES_POOLPAGE_REGISTER; ++i)
+ if(LISTBOX_ENTRY_NOTFOUND == aPageCollBox.GetEntryPos(
+ GetDocPoolNm( i, aFmtName )))
+ ::InsertStringSorted(aFmtName, aPageCollBox, TRUE, rInt);
+
+ CheckEnable();
+ aPageNumEdit.SetText( aEmptyStr );
+ FreeResource();
+}
+
+
+void SwBreakDlg::CheckEnable()
+{
+ BOOL bEnable = TRUE;
+ if ( bHtmlMode )
+ {
+ aColumnBtn .Enable(FALSE);
+ aPageCollBox.Enable(FALSE);
+ bEnable = FALSE;
+ }
+ else if(rSh.GetFrmType(0,TRUE)
+ & (FRMTYPE_FLY_ANY | FRMTYPE_HEADER | FRMTYPE_FOOTER | FRMTYPE_FOOTNOTE))
+ {
+ aPageBtn.Enable(FALSE);
+ if(aPageBtn.IsChecked())
+ aLineBtn.Check(TRUE);
+ bEnable = FALSE;
+ }
+ const BOOL bPage = aPageBtn.IsChecked();
+ aPageCollText.Enable( bPage );
+ aPageCollBox.Enable ( bPage );
+
+ bEnable &= bPage;
+ if ( bEnable )
+ {
+ // auf Position 0 steht 'Ohne' Seitenvorlage.
+ const USHORT nPos = aPageCollBox.GetSelectEntryPos();
+ if ( 0 == nPos || LISTBOX_ENTRY_NOTFOUND == nPos )
+ bEnable = FALSE;
+ }
+ aPageNumBox .Enable(bEnable);
+ aPageNumEdit.Enable(bEnable);
+}
+
+
+SwBreakDlg::~SwBreakDlg() {}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.62 2000/09/18 16:05:13 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.61 2000/08/25 10:12:26 os
+ #77214# style listbox sorted
+
+ Revision 1.60 2000/07/26 16:32:15 jp
+ use the new function GetDocPoolNm to get the collectionames
+
+ Revision 1.59 2000/05/26 07:21:28 os
+ old SW Basic API Slots removed
+
+ Revision 1.58 2000/05/10 11:55:37 os
+ Basic API removed
+
+ Revision 1.57 2000/02/11 14:43:29 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.56 1999/06/18 13:45:28 OS
+ #66704# wrong fix fixed
+
+
+ Rev 1.55 18 Jun 1999 15:45:28 OS
+ #66704# wrong fix fixed
+
+ Rev 1.54 09 Jun 1999 08:47:48 OS
+ #66704# no page breaks in header/footer/frame
+
+ Rev 1.53 05 Feb 1999 17:44:20 JP
+ Task #61467#/#61014#: neu FindPageDescByName
+
+ Rev 1.52 21 Nov 1997 12:24:34 MA
+ includes
+
+ Rev 1.51 03 Nov 1997 13:10:20 MA
+ precomp entfernt
+
+ Rev 1.50 30 Jul 1997 18:15:32 HJS
+ includes
+
+ Rev 1.49 23 Jul 1997 20:22:14 HJS
+ includes
+
+ Rev 1.48 27 Jan 1997 16:14:42 OS
+ HtmlMode wird ueber GetHtmlMode ermittelt
+
+ Rev 1.47 18 Dec 1996 19:07:30 MA
+ fix: richtiges enablen
+
+ Rev 1.46 06 Dec 1996 13:53:20 MA
+ Umbrueche fuer Tabellen
+
+ Rev 1.45 11 Nov 1996 09:16:38 MA
+ ResMgr
+
+ Rev 1.44 10 Oct 1996 13:18:52 OS
+ HtmlMode beruecksichtigen
+
+ Rev 1.43 02 Oct 1996 08:36:16 MA
+ Umstellung Enable/Disable
+
+ Rev 1.42 28 Aug 1996 08:59:06 OS
+ includes
+
+ Rev 1.41 06 Feb 1996 15:18:38 JP
+ Link Umstellung 305
+
+ Rev 1.40 24 Nov 1995 16:57:32 OM
+ PCH->PRECOMPILED
+
+ Rev 1.39 08 Nov 1995 12:47:36 OM
+ Change->Set
+
+ Rev 1.38 23 Oct 1995 17:25:10 OS
+ Umbrueche einfuegen recordable
+
+ Rev 1.37 11 Sep 1995 18:47:40 OM
+ Helpbutton eingefuegt
+
+ Rev 1.36 30 Aug 1995 14:08:52 MA
+ fix: sexport'iert
+
+ Rev 1.35 21 Aug 1995 09:22:06 MA
+ chg: swstddlg -> svxstandarddialog, Optimierungen
+
+ Rev 1.34 05 Apr 1995 09:15:28 JP
+ Benutzung vom Link-Makro eingeschraenkt
+
+ Rev 1.33 25 Oct 1994 15:50:04 ER
+ add: PCH
+
+ Rev 1.32 05 Oct 1994 17:45:56 VB
+ Umbruch freigeschaltet
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/chrdlg/break.hrc b/sw/source/ui/chrdlg/break.hrc
new file mode 100644
index 000000000000..fa0dd2089e9a
--- /dev/null
+++ b/sw/source/ui/chrdlg/break.hrc
@@ -0,0 +1,75 @@
+/*************************************************************************
+ *
+ * $RCSfile: break.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 RB_PAGE 1
+#define RB_LINE 2
+#define RB_COL 3
+#define FT_COLL 4
+#define LB_COLL 5
+#define GB_BREAK 6
+#define CB_PAGENUM 7
+#define ED_PAGENUM 8
+
+#define BT_OK 100
+#define BT_CANCEL 101
+#define BT_HELP 102
+
+
diff --git a/sw/source/ui/chrdlg/ccoll.cxx b/sw/source/ui/chrdlg/ccoll.cxx
new file mode 100644
index 000000000000..e02185f22ab6
--- /dev/null
+++ b/sw/source/ui/chrdlg/ccoll.cxx
@@ -0,0 +1,593 @@
+/*************************************************************************
+ *
+ * $RCSfile: ccoll.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "cmdid.h"
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#include "swmodule.hxx"
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "globals.hrc"
+#include "helpid.h"
+
+
+#ifndef _SFX_STYFITEM_HXX //autogen
+#include <sfx2/styfitem.hxx>
+#endif
+
+#include "uitool.hxx"
+#include "ccoll.hxx"
+#include "fmtcol.hxx"
+#include "hintids.hxx"
+#include "docsh.hxx"
+#include "docstyle.hxx"
+#include "hints.hxx"
+
+#include "chrdlg.hrc"
+#include "ccoll.hrc"
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+
+// Globals ******************************************************************
+
+static USHORT __FAR_DATA aPageRg[] = {
+ FN_COND_COLL, FN_COND_COLL,
+ 0
+};
+
+// Achtung im Code wird dieses Array direkt (0, 1, ...) indiziert
+static long nTabs[] =
+ { 2, // Number of Tabs
+ 0, 100
+ };
+
+
+CommandStruct SwCondCollItem::aCmds[] = {
+ PARA_IN_TABLEHEAD, 0,
+ PARA_IN_TABLEBODY, 0,
+ PARA_IN_FRAME, 0,
+ PARA_IN_SECTION, 0,
+ PARA_IN_FOOTENOTE, 0,
+ PARA_IN_ENDNOTE, 0,
+ PARA_IN_HEADER, 0,
+ PARA_IN_FOOTER, 0,
+ PARA_IN_OUTLINE, 0,
+ PARA_IN_OUTLINE, 1,
+ PARA_IN_OUTLINE, 2,
+ PARA_IN_OUTLINE, 3,
+ PARA_IN_OUTLINE, 4,
+ PARA_IN_OUTLINE, 5,
+ PARA_IN_OUTLINE, 6,
+ PARA_IN_OUTLINE, 7,
+ PARA_IN_OUTLINE, 8,
+ PARA_IN_OUTLINE, 9,
+ PARA_IN_LIST, 0,
+ PARA_IN_LIST, 1,
+ PARA_IN_LIST, 2,
+ PARA_IN_LIST, 3,
+ PARA_IN_LIST, 4,
+ PARA_IN_LIST, 5,
+ PARA_IN_LIST, 6,
+ PARA_IN_LIST, 7,
+ PARA_IN_LIST, 8,
+ PARA_IN_LIST, 9
+ };
+
+
+
+TYPEINIT1_AUTOFACTORY(SwCondCollItem, SfxPoolItem)
+
+
+/****************************************************************************
+Page: Ctor
+****************************************************************************/
+
+
+SwCondCollPage::SwCondCollPage(Window *pParent, const SfxItemSet &rSet)
+
+ : SfxTabPage(pParent, SW_RES(TP_CONDCOLL), rSet),
+ aConditionCB( this, SW_RES( CB_CONDITION ) ),
+ aContextFT ( this, SW_RES( FT_CONTEXT ) ),
+ aUsedFT ( this, SW_RES( FT_USED ) ),
+ aTbLinks( this, SW_RES( TB_CONDCOLLS ) ),
+ aStyleFT ( this, SW_RES( FT_STYLE ) ),
+ aStyleLB ( this, SW_RES( LB_STYLE ) ),
+ aFilterLB ( this, SW_RES( LB_FILTER ) ),
+ aRemovePB ( this, SW_RES( PB_REMOVE ) ),
+ aAssignPB ( this, SW_RES( PB_ASSIGN ) ),
+ sNoTmpl ( SW_RES( STR_NOTEMPL ) ),
+ aStrArr ( SW_RES( STR_REGIONS ) ),
+ rSh(::GetActiveView()->GetWrtShell()),
+ pFmt(0),
+ pCmds( SwCondCollItem::GetCmds() ),
+ bNewTemplate(FALSE)
+{
+ FreeResource();
+ SetExchangeSupport();
+
+ // Handler installieren
+ aConditionCB.SetClickHdl( LINK(this, SwCondCollPage, OnOffHdl));
+ aTbLinks.SetDoubleClickHdl( LINK(this, SwCondCollPage, AssignRemoveHdl ));
+ aStyleLB.SetDoubleClickHdl( LINK(this, SwCondCollPage, AssignRemoveHdl ));
+ aRemovePB.SetClickHdl( LINK(this, SwCondCollPage, AssignRemoveHdl ));
+ aAssignPB.SetClickHdl( LINK(this, SwCondCollPage, AssignRemoveHdl ));
+ aTbLinks.SetSelectHdl( LINK(this, SwCondCollPage, SelectHdl));
+ aStyleLB.SetSelectHdl( LINK(this, SwCondCollPage, SelectHdl));
+ aFilterLB.SetSelectHdl( LINK(this, SwCondCollPage, SelectHdl));
+
+ aTbLinks.SetWindowBits(WB_HSCROLL|WB_CLIPCHILDREN);
+ aTbLinks.SetSelectionMode( SINGLE_SELECTION );
+ aTbLinks.SetTabs( &nTabs[0], MAP_APPFONT );
+ aTbLinks.Resize(); // OS: Hack fuer richtige Selektion
+ aTbLinks.SetSpaceBetweenEntries( 0 );
+ aTbLinks.SetHelpId(HID_COND_COLL_TABLIST);
+
+ SfxStyleFamilies aFamilies(SW_RES(DLG_STYLE_DESIGNER));
+ const SfxStyleFamilyItem* pFamilyItem;
+ USHORT nCount = aFamilies.Count();
+
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ if(SFX_STYLE_FAMILY_PARA == (USHORT)(pFamilyItem = aFamilies.GetObject(i))->GetFamily())
+ break;
+ }
+
+ const SfxStyleFilter& rFilterList = pFamilyItem->GetFilterList();
+ for( i = 0; i < rFilterList.Count(); ++i)
+ {
+ aFilterLB.InsertEntry(rFilterList.GetObject(i)->aName);
+ USHORT* pFilter = new USHORT(rFilterList.GetObject(i)->nFlags);
+ aFilterLB.SetEntryData(i, pFilter);
+ }
+ aFilterLB.SelectEntryPos(1);
+
+ aTbLinks.Show();
+
+}
+
+/****************************************************************************
+Page: Dtor
+****************************************************************************/
+
+
+__EXPORT SwCondCollPage::~SwCondCollPage()
+{
+ for(USHORT i = 0; i < aFilterLB.GetEntryCount(); ++i)
+ delete (USHORT*)aFilterLB.GetEntryData(i);
+
+}
+
+
+int __EXPORT SwCondCollPage::DeactivatePage(SfxItemSet * pSet)
+{
+ FillItemSet(*pSet);
+
+ return LEAVE_PAGE;
+}
+
+/****************************************************************************
+Page: Factory
+****************************************************************************/
+
+
+SfxTabPage* __EXPORT SwCondCollPage::Create(Window *pParent, const SfxItemSet &rSet)
+{
+ return new SwCondCollPage(pParent, rSet);
+}
+
+/****************************************************************************
+Page: FillItemSet-Overload
+****************************************************************************/
+
+
+BOOL __EXPORT SwCondCollPage::FillItemSet(SfxItemSet &rSet)
+{
+ BOOL bModified = TRUE;
+ SwCondCollItem aCondItem;
+ for(USHORT i = 0; i < aStrArr.Count(); i++)
+ {
+ String sEntry = aTbLinks.GetEntryText(i, 1);
+ aCondItem.SetStyle( &sEntry, i);
+ }
+ rSet.Put(aCondItem);
+ return bModified;
+}
+
+/****************************************************************************
+Page: Reset-Overload
+****************************************************************************/
+
+
+void __EXPORT SwCondCollPage::Reset(const SfxItemSet &rSet)
+{
+ if(bNewTemplate)
+ aConditionCB.Enable();
+ if(RES_CONDTXTFMTCOLL == pFmt->Which())
+ aConditionCB.Check();
+ OnOffHdl(&aConditionCB);
+
+ aTbLinks.Clear();
+
+ SfxStyleSheetBasePool* pPool = rSh.GetView().GetDocShell()->GetStyleSheetPool();
+ pPool->SetSearchMask(SFX_STYLE_FAMILY_PARA, SFXSTYLEBIT_ALL);
+ aStyleLB.Clear();
+ const SfxStyleSheetBase* pBase = pPool->First();
+ while( pBase )
+ {
+ if(!pFmt || pBase->GetName() != pFmt->GetName())
+ aStyleLB.InsertEntry(pBase->GetName());
+ pBase = pPool->Next();
+ }
+ aStyleLB.SelectEntryPos(0);
+
+ for( USHORT n = 0; n < aStrArr.Count(); n++)
+ {
+ String aEntry( aStrArr.GetString(n) );
+ aEntry += '\t';
+
+ const SwCollCondition* pCond;
+ if( pFmt && RES_CONDTXTFMTCOLL == pFmt->Which() &&
+ 0 != ( pCond = ((SwConditionTxtFmtColl*)pFmt)->
+ HasCondition( SwCollCondition( 0, pCmds[n].nCnd, pCmds[n].nSubCond ) ) )
+ && pCond->GetTxtFmtColl() )
+ {
+ aEntry += pCond->GetTxtFmtColl()->GetName();
+ }
+
+ SvLBoxEntry* pE = aTbLinks.InsertEntry( aEntry, n );
+ if(0 == n)
+ aTbLinks.Select(pE);
+ }
+
+}
+
+/****************************************************************************
+
+****************************************************************************/
+
+
+USHORT* __EXPORT SwCondCollPage::GetRanges()
+{
+ return aPageRg;
+}
+
+
+/****************************************************************************
+
+****************************************************************************/
+
+
+IMPL_LINK( SwCondCollPage, OnOffHdl, CheckBox*, pBox )
+{
+ const BOOL bEnable = pBox->IsChecked();
+ aContextFT.Enable( bEnable );
+ aUsedFT .Enable( bEnable );
+ aTbLinks .Enable( bEnable );
+ aStyleFT .Enable( bEnable );
+ aStyleLB .Enable( bEnable );
+ aFilterLB .Enable( bEnable );
+ aRemovePB .Enable( bEnable );
+ aAssignPB .Enable( bEnable );
+ if( bEnable )
+ SelectHdl(0);
+ return 0;
+}
+
+/****************************************************************************
+
+****************************************************************************/
+
+
+IMPL_LINK( SwCondCollPage, AssignRemoveHdl, PushButton*, pBtn)
+{
+ SvLBoxEntry* pE = aTbLinks.FirstSelected();
+ ULONG nPos;
+ if( !pE || LISTBOX_ENTRY_NOTFOUND ==
+ ( nPos = aTbLinks.GetModel()->GetAbsPos( pE ) ) )
+ {
+ ASSERT( pE, "wo kommt der leere Eintrag her?" );
+ return 0;
+ }
+
+ String sSel = aStrArr.GetString( USHORT(nPos) );
+ sSel += '\t';
+
+ const BOOL bAssEnabled = pBtn != &aRemovePB && aAssignPB.IsEnabled();
+ aAssignPB.Enable( !bAssEnabled );
+ aRemovePB.Enable( bAssEnabled );
+ if ( bAssEnabled )
+ sSel += aStyleLB.GetSelectEntry();
+
+ aTbLinks.SetUpdateMode(FALSE);
+ aTbLinks.GetModel()->Remove(pE);
+ pE = aTbLinks.InsertEntry(sSel, nPos);
+ aTbLinks.Select(pE);
+ aTbLinks.MakeVisible(pE);
+ aTbLinks.SetUpdateMode(TRUE);
+ return 0;
+}
+
+/****************************************************************************
+
+****************************************************************************/
+
+
+IMPL_LINK( SwCondCollPage, SelectHdl, ListBox*, pBox)
+{
+ if(pBox == &aFilterLB)
+ {
+ aStyleLB.Clear();
+ USHORT nSearchFlags = pBox->GetSelectEntryPos();
+ nSearchFlags = *(USHORT*)aFilterLB.GetEntryData(nSearchFlags);
+ SfxStyleSheetBasePool* pPool = rSh.GetView().GetDocShell()->GetStyleSheetPool();
+ pPool->SetSearchMask(SFX_STYLE_FAMILY_PARA, nSearchFlags);
+ const SfxStyleSheetBase* pBase = pPool->First();
+ while( pBase )
+ {
+ if(!pFmt || pBase->GetName() != pFmt->GetName())
+ aStyleLB.InsertEntry(pBase->GetName());
+ pBase = pPool->Next();
+ }
+ aStyleLB.SelectEntryPos(0);
+ SelectHdl(&aStyleLB);
+
+ }
+ else
+ {
+ String sTbEntry;
+ SvLBoxEntry* pE = aTbLinks.FirstSelected();
+ if(pE)
+ sTbEntry = aTbLinks.GetEntryText(pE);
+ sTbEntry = sTbEntry.GetToken(1, '\t');
+ String sStyle = aStyleLB.GetSelectEntry();
+
+ aAssignPB.Enable( sStyle != sTbEntry && aConditionCB.IsChecked() );
+
+ if(pBox != &aStyleLB)
+ aRemovePB.Enable( aConditionCB.IsChecked() && sTbEntry.Len() );
+ }
+ return 0;
+}
+
+/****************************************************************************
+
+****************************************************************************/
+
+
+void SwCondCollPage::SetCollection( SwFmt* pFormat, BOOL bNew )
+{
+ pFmt = pFormat;
+ bNewTemplate = bNew;
+}
+
+
+/****************************************************************************
+ Item fuer den Transport der Bedingungstabelle
+****************************************************************************/
+
+
+SwCondCollItem::SwCondCollItem(USHORT nWhich ) :
+ SfxPoolItem(nWhich)
+{
+
+}
+/****************************************************************************
+
+****************************************************************************/
+
+
+SwCondCollItem::~SwCondCollItem()
+{
+}
+
+/****************************************************************************
+
+****************************************************************************/
+
+
+SfxPoolItem* SwCondCollItem::Clone( SfxItemPool *pPool ) const
+{
+ return new SwCondCollItem(*this);
+}
+
+/****************************************************************************
+
+****************************************************************************/
+
+
+int SwCondCollItem::operator==( const SfxPoolItem& rItem) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==(rItem), "unterschiedliche Typen" );
+ BOOL bReturn = TRUE;
+ for(USHORT i = 0; i < COND_COMMAND_COUNT; i++)
+ if(sStyles[i] != ((SwCondCollItem&)rItem).sStyles[i])
+ {
+ bReturn = FALSE;
+ break;
+ }
+
+ return bReturn;
+}
+
+/****************************************************************************
+
+****************************************************************************/
+
+
+const String& SwCondCollItem::GetStyle(USHORT nPos) const
+{
+#ifndef IRIX
+ return nPos < COND_COMMAND_COUNT ? sStyles[nPos] : aEmptyStr;
+#else
+ return nPos < COND_COMMAND_COUNT ? (String)sStyles[nPos] : aEmptyStr;
+#endif
+}
+
+/****************************************************************************
+
+****************************************************************************/
+
+
+void SwCondCollItem::SetStyle(const String* pStyle, USHORT nPos)
+{
+ if( nPos < COND_COMMAND_COUNT )
+#ifndef IRIX
+ sStyles[nPos] = pStyle ? *pStyle : aEmptyStr;
+#else
+ sStyles[nPos] = pStyle ? (String)*pStyle : aEmptyStr;
+#endif
+}
+
+
+/****************************************************************************
+
+****************************************************************************/
+
+
+const CommandStruct* SwCondCollItem::GetCmds()
+{
+ return aCmds;
+}
+
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.21 2000/09/18 16:05:13 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.20 2000/04/20 12:54:31 os
+ GetName() returns String&
+
+ Revision 1.19 2000/02/11 14:43:33 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.18 1999/05/06 07:52:58 OS
+ #65847# Font an der TabListBox nicht aendern
+
+
+ Rev 1.17 06 May 1999 09:52:58 OS
+ #65847# Font an der TabListBox nicht aendern
+
+ Rev 1.16 10 Jul 1998 13:46:30 MH
+ internal comp.err
+
+ Rev 1.15 21 Jan 1998 17:57:38 JP
+ neu: neue Bedinung - Endnote
+
+ Rev 1.14 17 Jan 1998 09:45:14 OS
+ Numerierung und Gliederung bis 10.
+
+ Rev 1.13 30 Sep 1997 15:53:30 TJ
+ include
+
+ Rev 1.12 01 Sep 1997 13:25:28 OS
+ DLL-Umstellung
+
+ Rev 1.11 09 Jul 1997 17:20:50 HJS
+ includes
+
+ Rev 1.10 06 Jun 1997 16:25:54 OS
+ im Reset ::Clear auch an der Vorlagen-Box rufen
+
+ Rev 1.9 05 Feb 1997 10:18:52 OM
+ FillItemSet in DeactivatePage rufen
+
+ Rev 1.8 14 Nov 1996 12:44:36 OS
+ DLG_STYLE_DESIGNER
+
+ Rev 1.7 14 Nov 1996 08:39:04 SWG
+ neu: RES_TEMPLATE_FAMILIES
+
+ Rev 1.6 11 Nov 1996 09:16:40 MA
+ ResMgr
+
+ Rev 1.5 02 Oct 1996 08:35:56 MA
+ Umstellung Enable/Disable
+
+ Rev 1.4 25 Sep 1996 11:20:32 PL
+ IRIX
+
+ Rev 1.3 23 Sep 1996 08:23:44 OS
+ keine GroupBox fuer Bedingungs-TabPage
+
+ Rev 1.2 18 Sep 1996 19:01:38 OS
+ neu: HScrollBars, Disable/Enable-Bug behoben
+
+ Rev 1.1 17 Sep 1996 16:19:18 OS
+ UI-Anpassung bedingte Vorlagen
+
+ Rev 1.0 06 Sep 1996 19:01:44 JP
+ TabPage fuer bedingte Vorlagen
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/chrdlg/ccoll.hrc b/sw/source/ui/chrdlg/ccoll.hrc
new file mode 100644
index 000000000000..a327ff50dfd1
--- /dev/null
+++ b/sw/source/ui/chrdlg/ccoll.hrc
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * $RCSfile: ccoll.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _CCOLL_HRC
+#define _CCOLL_HRC
+
+// #define ******************************************************************
+
+#define CB_CONDITION 1
+#define GB_CONDITION 2
+#define FT_CONTEXT 3
+#define FT_USED 4
+#define TB_CONDCOLLS 5
+#define FT_STYLE 6
+#define LB_STYLE 7
+#define LB_FILTER 8
+#define PB_REMOVE 9
+#define PB_ASSIGN 10
+#define STR_REGIONS 11
+#define STR_NOTEMPL 12
+
+
+// ********************************************************************** EOF
+
+#endif
+
diff --git a/sw/source/ui/chrdlg/ccoll.src b/sw/source/ui/chrdlg/ccoll.src
new file mode 100644
index 000000000000..c198463d9b0c
--- /dev/null
+++ b/sw/source/ui/chrdlg/ccoll.src
@@ -0,0 +1,949 @@
+/*************************************************************************
+ *
+ * $RCSfile: ccoll.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ******************************************************************
+
+ // #include *****************************************************************
+#include "globals.hrc"
+#include "chrdlg.hrc"
+#include "ccoll.hrc"
+#include "helpid.h"
+ // TabPage ******************************************************************
+TabPage TP_CONDCOLL
+{
+ HelpID = HID_COND_COLL ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ CheckBox CB_CONDITION
+ {
+ Pos = MAP_APPFONT ( 12 , 10 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Als bedingte Vorlage" ;
+ Text [ English ] = "~As conditioned Style" ;
+ TabStop = TRUE ;
+ Disable = TRUE ;
+ Text [ english_us ] = "~Conditional Style" ;
+ Text [ italian ] = "Come modello condizionato" ;
+ Text [ spanish ] = "C~omo estilo condicional" ;
+ Text [ french ] = "Co~mme style conditionnel" ;
+ Text [ dutch ] = "~Als conditioneel opmaakprofiel" ;
+ Text [ swedish ] = "som villkorlig m~all" ;
+ Text [ danish ] = "Som betinget typografi" ;
+ Text [ portuguese_brazilian ] = "~Als bedingte Vorlage" ;
+ Text [ portuguese ] = "~Estilo condicional" ;
+ Text[ chinese_simplified ] = "µ±×÷ÓÐÌõ¼þµÄÑùʽ(~S)";
+ Text[ russian ] = "Êàê óñëîâíûé ñòèëü";
+ Text[ polish ] = "Jako warunkowy szablon";
+ Text[ japanese ] = "ðŒ•t‚«½À²Ù‚Æ‚µ‚Ä(~S)";
+ Text[ chinese_traditional ] = "·í§@¦³±ø¥óªº¼Ë¦¡(~S)";
+ Text[ arabic ] = "ßäãØ ãÔÑæØ";
+ Text[ greek ] = "Ùò åîáñôþìåíï ðñüôõðï";
+ Text[ korean ] = "Á¶°ÇÀû À¯Çü(~C)";
+ Text[ turkish ] = "~Koþullu biçim olarak";
+ Text[ language_user1 ] = "\"Vorlagen\" Styles are capitalized. EM15.5.00";
+ };
+ FixedText FT_CONTEXT
+ {
+ Pos = MAP_APPFONT ( 12 , 25 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Kontext" ;
+ Text [ English ] = "~Context" ;
+ Disable = TRUE ;
+ Text [ dutch ] = "~Context" ;
+ Text [ english_us ] = "Conte~xt" ;
+ Text [ italian ] = "Contesto" ;
+ Text [ spanish ] = "~Contexto" ;
+ Text [ french ] = "~Contexte" ;
+ Text [ swedish ] = "~Sammanhang" ;
+ Text [ danish ] = "Kontekst" ;
+ Text [ portuguese ] = "~Contexto" ;
+ Text [ portuguese_brazilian ] = "~Kontext" ;
+ Text[ chinese_simplified ] = "ÉÏÏÂÎÄ(~C)";
+ Text[ russian ] = "~Êîíòåêñò";
+ Text[ polish ] = "Kontekst";
+ Text[ japanese ] = "ºÝ÷½Ä(~C)";
+ Text[ chinese_traditional ] = "¤W¤U¤å(~C)";
+ Text[ arabic ] = "ÇáÓíÇÞ";
+ Text[ greek ] = "Óõìöñáæüìåíá";
+ Text[ korean ] = "³»¿ë(~C)";
+ Text[ turkish ] = "Baðlam";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_USED
+ {
+ Pos = MAP_APPFONT ( 100 , 25 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Text = "Verwendete Vorlage" ;
+ Text [ English ] = "Used Style" ;
+ Disable = TRUE ;
+ Text [ dutch ] = "Gebruikt opmaakprofiel" ;
+ Text [ english_us ] = "Applied Styles" ;
+ Text [ italian ] = "Modello utilizzato" ;
+ Text [ spanish ] = "Estilos utilizados" ;
+ Text [ french ] = "Style utilisé" ;
+ Text [ swedish ] = "Använda formatmallar" ;
+ Text [ danish ] = "Anvendt typografi" ;
+ Text [ portuguese ] = "Estilos em uso" ;
+ Text [ portuguese_brazilian ] = "Verwendete Vorlage" ;
+ Text[ chinese_simplified ] = "ʹÓõÄÑùʽ";
+ Text[ russian ] = "Ïðèìåíåííûå ñòèëè";
+ Text[ polish ] = "U¿yte style";
+ Text[ japanese ] = "Žg—p‚³‚ꂽ½À²Ù";
+ Text[ chinese_traditional ] = "¨Ï¥Îªº¼Ë¦¡";
+ Text[ arabic ] = "ÃäãÇØ ÞíÏ ÇáÇÓÊÎÏÇã";
+ Text[ greek ] = "ÅöáñìïóìÝíá ðñüôõðá";
+ Text[ korean ] = "À¯ÇüÀÌ Àû¿ëµÇ¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Uygulanan biçim";
+ Text[ language_user1 ] = " ";
+ };
+ Control TB_CONDCOLLS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 36 ) ;
+ Size = MAP_APPFONT ( 173 , 80 ) ;
+ TabStop = TRUE ;
+ ClipChildren = TRUE ;
+ Disable = TRUE ;
+ Border = TRUE ;
+ };
+ FixedText FT_STYLE
+ {
+ Pos = MAP_APPFONT ( 190 , 25 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "Absatzvorlagen" ;
+ Text [ English ] = "Styles" ;
+ Disable = TRUE ;
+ Text [ dutch ] = "Alineaprofielen" ;
+ Text [ english_us ] = "Paragraph Styles" ;
+ Text [ italian ] = "Modelli di paragrafo" ;
+ Text [ spanish ] = "Estilos de párrafo" ;
+ Text [ french ] = "Styles de paragraphe" ;
+ Text [ swedish ] = "Styckeformatmallar" ;
+ Text [ danish ] = "Afsnitstypografier" ;
+ Text [ portuguese ] = "Estilos de parágrafo" ;
+ Text [ portuguese_brazilian ] = "Absatzvorlagen" ;
+ Text[ chinese_simplified ] = "¶ÎÂäÑùʽ";
+ Text[ russian ] = "Ñòèëè àáçàöà";
+ Text[ polish ] = "Style akapitu";
+ Text[ japanese ] = "’i—Ž½À²Ù";
+ Text[ chinese_traditional ] = "¬q¸¨¼Ë¦¡";
+ Text[ arabic ] = "ÃäãÇØ ÝÞÑÉ";
+ Text[ greek ] = "Ðñüôõðá ðáñáãñÜöïõ";
+ Text[ korean ] = "´Ü¶ô À¯Çü";
+ Text[ turkish ] = "Paragraf biçimi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_STYLE
+ {
+ Pos = MAP_APPFONT ( 188 , 36 ) ;
+ Size = MAP_APPFONT ( 60 , 60 ) ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ Sort = TRUE ;
+ Disable = TRUE ;
+ HScroll = TRUE ;
+ };
+ ListBox LB_FILTER
+ {
+ Pos = MAP_APPFONT ( 188 , 104 ) ;
+ Size = MAP_APPFONT ( 60 , 50 ) ;
+ DropDown = TRUE ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ Disable = TRUE ;
+ HScroll = TRUE ;
+ };
+ PushButton PB_REMOVE
+ {
+ Pos = MAP_APPFONT ( 129 , 119 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Text = "~Entfernen" ;
+ Text [ English ] = "~Remove" ;
+ TabStop = TRUE ;
+ Disable = TRUE ;
+ Text [ dutch ] = "~Verwijderen" ;
+ Text [ english_us ] = "Re~move" ;
+ Text [ italian ] = "~Rimuovi" ;
+ Text [ spanish ] = "~Eliminar" ;
+ Text [ french ] = "~Supprimer" ;
+ Text [ swedish ] = "Ta ~bort" ;
+ Text [ danish ] = "Fjern" ;
+ Text [ portuguese ] = "~Remover" ;
+ Text [ portuguese_brazilian ] = "~Entfernen" ;
+ Text[ chinese_simplified ] = "ɾ³ý(~R)";
+ Text[ russian ] = "~Óäàëèòü";
+ Text[ polish ] = "~Usuñ";
+ Text[ japanese ] = "íœ(~R)";
+ Text[ chinese_traditional ] = "§R°£(~R)";
+ Text[ arabic ] = "ÅÒÇáÉ";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "Á¦°Å(~M)";
+ Text[ turkish ] = "~Kaldýr";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton PB_ASSIGN
+ {
+ Pos = MAP_APPFONT ( 185 , 119 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Text = "~Zuweisen" ;
+ Text [ English ] = "Assign" ;
+ TabStop = TRUE ;
+ Disable = TRUE ;
+ Text [ dutch ] = "~Toewijzen" ;
+ Text [ english_us ] = "~Apply" ;
+ Text [ italian ] = "~Assegna" ;
+ Text [ spanish ] = "~Asignar" ;
+ Text [ french ] = "~Assigner" ;
+ Text [ swedish ] = "Till~dela" ;
+ Text [ danish ] = "Tildel" ;
+ Text [ portuguese ] = "~Atribuir" ;
+ Text [ portuguese_brazilian ] = "~Zuweisen" ;
+ Text[ chinese_simplified ] = "Ö¸¶¨(~A)";
+ Text[ russian ] = "~Íàçíà÷èòü";
+ Text[ polish ] = "P~rzypisz";
+ Text[ japanese ] = "Š„‚è“–‚Ä(~A)";
+ Text[ chinese_traditional ] = "¤À°t(~A)";
+ Text[ arabic ] = "ÊÚííä";
+ Text[ greek ] = "Áíôéóôïß÷éóç";
+ Text[ korean ] = "ÁöÁ¤(~A)";
+ Text[ turkish ] = "~Ata";
+ Text[ language_user1 ] = " ";
+ };
+ StringArray STR_REGIONS
+ {
+ ItemList =
+ {
+ < "Tabellen Kopfzeile" ; > ;
+ < "Tabelle" ; > ;
+ < "Rahmen" ; > ;
+ < "Bereich" ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 5 : Fußnote*/
+ < "Fußnote" ; > ;
+ < "Endnote" ; > ;
+ < "Kopfzeile" ; > ;
+ < "Fusszeile" ; > ;
+ < " 1. Ebene Gliederung" ; > ;
+ < " 2. Ebene Gliederung" ; > ;
+ < " 3. Ebene Gliederung" ; > ;
+ < " 4. Ebene Gliederung" ; > ;
+ < " 5. Ebene Gliederung" ; > ;
+ < " 6. Ebene Gliederung" ; > ;
+ < " 7. Ebene Gliederung" ; > ;
+ < " 8. Ebene Gliederung" ; > ;
+ < " 9. Ebene Gliederung" ; > ;
+ < "10. Ebene Gliederung" ; > ;
+ < " 1. Ebene Nummerierung" ; > ;
+ < " 2. Ebene Nummerierung" ; > ;
+ < " 3. Ebene Nummerierung" ; > ;
+ < " 4. Ebene Nummerierung" ; > ;
+ < " 5. Ebene Nummerierung" ; > ;
+ < " 6. Ebene Nummerierung" ; > ;
+ < " 7. Ebene Nummerierung" ; > ;
+ < " 8. Ebene Nummerierung" ; > ;
+ < " 9. Ebene Nummerierung" ; > ;
+ < "10. Ebene Nummerierung" ; > ;
+ };
+ ItemList [ English ] =
+ {
+ < "Tabellen Kopfzeile" ; > ;
+ < "Tabelle" ; > ;
+ < "Rahmen" ; > ;
+ < "Bereich" ; > ;
+ < "Fußnote" ; > ;
+ < "Endnote" ; > ;
+ < "Kopfzeile" ; > ;
+ < "Fusszeile" ; > ;
+ < " 1. Ebene Gliederung" ; > ;
+ < " 2. Ebene Gliederung" ; > ;
+ < " 3. Ebene Gliederung" ; > ;
+ < " 4. Ebene Gliederung" ; > ;
+ < " 5. Ebene Gliederung" ; > ;
+ < " 6. Ebene Gliederung" ; > ;
+ < " 7. Ebene Gliederung" ; > ;
+ < " 8. Ebene Gliederung" ; > ;
+ < " 9. Ebene Gliederung" ; > ;
+ < "10. Ebene Gliederung" ; > ;
+ < " 1. Ebene Numerierung" ; > ;
+ < " 2. Ebene Numerierung" ; > ;
+ < " 3. Ebene Numerierung" ; > ;
+ < " 4. Ebene Numerierung" ; > ;
+ < " 5. Ebene Numerierung" ; > ;
+ < " 6. Ebene Numerierung" ; > ;
+ < " 7. Ebene Numerierung" ; > ;
+ < " 8. Ebene Numerierung" ; > ;
+ < " 9. Ebene Numerierung" ; > ;
+ < "10. Ebene Numerierung" ; > ;
+ };
+ itemlist [ portuguese ] =
+ {
+ < "Cabeçalho de folha" ; > ;
+ < "Folha" ; > ;
+ < "Moldura" ; > ;
+ < "Secção" ; > ;
+ < "Nota de rodapé" ; > ;
+ < "Nota final" ; > ;
+ < "Cabeçalho" ; > ;
+ < "Rodapé" ; > ;
+ < "1° nível do esquema" ; > ;
+ < "2° nível do esquema" ; > ;
+ < "3° nível do esquema" ; > ;
+ < "4° nível do esquema" ; > ;
+ < "5° nível do esquema" ; > ;
+ < "6° nível do esquema" ; > ;
+ < "7° nível do esquema" ; > ;
+ < "8° nível do esquema" ; > ;
+ < "9° nível do esquema" ; > ;
+ < "10° nível do esquema" ; > ;
+ < "1° nível de numeração" ; > ;
+ < "2° nível de numeração" ; > ;
+ < "3° nível de numeração" ; > ;
+ < "4° nível de numeração" ; > ;
+ < "5° nível de numeração" ; > ;
+ < "6° nível de numeração" ; > ;
+ < "7° nível de numeração" ; > ;
+ < "8° nível de numeração" ; > ;
+ < "9° nível de numeração" ; > ;
+ < "10° nível de numeração" ; > ;
+ };
+ itemlist [ english_us ] =
+ {
+ < "Sheet Header" ; > ;
+ < "Table" ; > ;
+ < "Frame" ; > ;
+ < "Section" ; > ;
+ < "Footnote" ; > ;
+ < "Endnote" ; > ;
+ < "Header" ; > ;
+ < "Footer" ; > ;
+ < " 1st Outline Level" ; > ;
+ < " 2nd Outline Level" ; > ;
+ < " 3rd Outline Level" ; > ;
+ < " 4th Outline Level" ; > ;
+ < " 5th Outline Level" ; > ;
+ < " 6th Outline Level" ; > ;
+ < " 7th Outline Level" ; > ;
+ < " 8th Outline Level" ; > ;
+ < " 9th Outline Level" ; > ;
+ < "10th Outline Level" ; > ;
+ < " 1st Numbering Level" ; > ;
+ < " 2nd Numbering Level" ; > ;
+ < " 3rd Numbering Level" ; > ;
+ < " 4th Numbering Level" ; > ;
+ < " 5th Numbering Level" ; > ;
+ < " 6th Numbering Level" ; > ;
+ < " 7th Numbering Level" ; > ;
+ < " 8th Numbering Level" ; > ;
+ < " 9th Numbering Level" ; > ;
+ < "10th Numbering Level" ; > ;
+ };
+ itemlist [ portuguese_brazilian ] =
+ {
+ < "Tabellen Kopfzeile" ; > ;
+ < "Tabelle" ; > ;
+ < "Rahmen" ; > ;
+ < "Bereich" ; > ;
+ < "Fußnote" ; > ;
+ < "Kopfzeile" ; > ;
+ < "Fusszeile" ; > ;
+ < "1. Ebene Gliederung" ; > ;
+ < "2. Ebene Gliederung" ; > ;
+ < "3. Ebene Gliederung" ; > ;
+ < "4. Ebene Gliederung" ; > ;
+ < "5. Ebene Gliederung" ; > ;
+ < "1. Ebene Numerierung" ; > ;
+ < "2. Ebene Numerierung" ; > ;
+ < "3. Ebene Numerierung" ; > ;
+ < "4. Ebene Numerierung" ; > ;
+ < "5. Ebene Numerierung" ; > ;
+ < "10. Ebene Gliederung" ; > ;
+ < "1. Ebene Numerierung" ; > ;
+ < "2. Ebene Numerierung" ; > ;
+ < "3. Ebene Numerierung" ; > ;
+ < "4. Ebene Numerierung" ; > ;
+ < "5. Ebene Numerierung" ; > ;
+ < "6. Ebene Numerierung" ; > ;
+ < "7. Ebene Numerierung" ; > ;
+ < "8. Ebene Numerierung" ; > ;
+ < "9. Ebene Numerierung" ; > ;
+ < "10. Ebene Numerierung" ; > ;
+ };
+ itemlist [ swedish ] =
+ {
+ < "Sidhuvud tabell" ; > ;
+ < "Tabell" ; > ;
+ < "Ram" ; > ;
+ < "Område" ; > ;
+ < "Fotnot" ; > ;
+ < "Slutnot" ; > ;
+ < "Sidhuvud" ; > ;
+ < "Sidfot" ; > ;
+ < "1:a dispositionsnivån" ; > ;
+ < "2:a dispositionsnivån" ; > ;
+ < "3:e dispositionsnivån" ; > ;
+ < "4:e dispositionsnivån" ; > ;
+ < "5:e dispositionsnivån" ; > ;
+ < "2:a dispositionsnivån" ; > ;
+ < "7:e dispositionsnivån" ; > ;
+ < "8:e dispositionsnivån" ; > ;
+ < "9:e dispositionsnivån" ; > ;
+ < "10:e dispositionsnivån" ; > ;
+ < "1:a numreringsnivån" ; > ;
+ < "2:a numreringsnivån" ; > ;
+ < "3:e numreringsnivån" ; > ;
+ < "4:e numreringsnivån" ; > ;
+ < "5:e numreringsnivån" ; > ;
+ < "6:e numreringsnivån" ; > ;
+ < "7:e numreringsnivån" ; > ;
+ < "8:e numreringsnivån" ; > ;
+ < "9:e numreringsnivån" ; > ;
+ < "10:e numreringsnivån" ; > ;
+ };
+ itemlist [ danish ] =
+ {
+ < "Tabelsidehoved" ; > ;
+ < "Tabel" ; > ;
+ < "Ramme" ; > ;
+ < "Område" ; > ;
+ < "Fodnote" ; > ;
+ < "Slutnote" ; > ;
+ < "Sidehoved" ; > ;
+ < "Sidefod" ; > ;
+ < "1. dispositionsniveau" ; > ;
+ < "2. dispositionsniveau" ; > ;
+ < "3. dispositionsniveau" ; > ;
+ < "4. dispositionsniveau" ; > ;
+ < "5. dispositionsniveau" ; > ;
+ < "6. dispositionsniveau" ; > ;
+ < "7. dispositionsniveau" ; > ;
+ < "8. dispositionsniveau" ; > ;
+ < "9. dispositionsniveau" ; > ;
+ < "10. dispositionsniveau" ; > ;
+ < "1. nummereringsniveau" ; > ;
+ < "2. nummereringsniveau" ; > ;
+ < "3. nummereringsniveau" ; > ;
+ < "4. nummereringsniveau" ; > ;
+ < "5. nummereringsniveau" ; > ;
+ < "6. nummereringsniveau" ; > ;
+ < "7. nummereringsniveau" ; > ;
+ < "8. nummereringsniveau" ; > ;
+ < "9. nummereringsniveau" ; > ;
+ < "10. nummereringsniveau" ; > ;
+ };
+ itemlist [ italian ] =
+ {
+ < "Intestazione tabella" ; > ;
+ < "Tabella" ; > ;
+ < "Cornice" ; > ;
+ < "Sezione" ; > ;
+ < "Nota a piè pagina" ; > ;
+ < "Nota di chiusura" ; > ;
+ < "Riga d'intestazione" ; > ;
+ < "Piè di pagina" ; > ;
+ < "Livello struttura 1" ; > ;
+ < "Livello struttura 2" ; > ;
+ < "Livello struttura 3" ; > ;
+ < "Livello struttura 4" ; > ;
+ < "Livello struttura 5" ; > ;
+ < "Livello struttura 6" ; > ;
+ < "Livello struttura 7 " ; > ;
+ < "Livello struttura 8" ; > ;
+ < "Livello struttura 9" ; > ;
+ < "10° livello di struttura" ; > ;
+ < "1° livello di numerazione" ; > ;
+ < "2° livello di numerazione" ; > ;
+ < "3° livello di numerazione" ; > ;
+ < "4° livello di numerazione" ; > ;
+ < "5° livello di numerazione" ; > ;
+ < "6° livello di numerazione" ; > ;
+ < "7° livello di numerazione" ; > ;
+ < "8° livello di numerazione" ; > ;
+ < "9° livello di numerazione" ; > ;
+ < "10° livello di numerazione" ; > ;
+ };
+ itemlist [ spanish ] =
+ {
+ < "Encabezamiento de la hoja" ; > ;
+ < "Tabla" ; > ;
+ < "Marco" ; > ;
+ < "Area" ; > ;
+ < "Nota al pie" ; > ;
+ < "Nota al final" ; > ;
+ < "Encabezamiento" ; > ;
+ < "Pie de página" ; > ;
+ < "1° nivel del esquema" ; > ;
+ < "2° nivel del esquema" ; > ;
+ < "3° nivel del esquema" ; > ;
+ < "4° nivel del esquema" ; > ;
+ < "5° nivel del esquema" ; > ;
+ < "6° nivel del esquema" ; > ;
+ < "7° nivel del esquema" ; > ;
+ < "8° nivel del esquema" ; > ;
+ < "9° nivel del esquema" ; > ;
+ < "10° nivel del esquema" ; > ;
+ < "1° nivel de la numeración" ; > ;
+ < "2° nivel de la numeración" ; > ;
+ < "3° nivel de la numeración" ; > ;
+ < "4° nivel de la numeración" ; > ;
+ < "5° nivel de la numeración" ; > ;
+ < "6° nivel de la numeración" ; > ;
+ < "7° nivel de la numeración" ; > ;
+ < "8° nivel de la numeración" ; > ;
+ < "9° nivel de la numeración" ; > ;
+ < "10° nivel de numeración" ; > ;
+ };
+ itemlist [ french ] =
+ {
+ < "En-tête tableau" ; > ;
+ < "Tableau" ; > ;
+ < "Cadre" ; > ;
+ < "Section" ; > ;
+ < "Note de bas de page" ; > ;
+ < "Note de fin" ; > ;
+ < "En-tête" ; > ;
+ < "Pied de page" ; > ;
+ < "1er niveau de plan" ; > ;
+ < "2ème niveau de plan" ; > ;
+ < "3ème niveau de plan" ; > ;
+ < "4ème niveau de plan" ; > ;
+ < "5ème niveau de plan" ; > ;
+ < "6ème niveau de plan" ; > ;
+ < "7ème niveau de plan" ; > ;
+ < "8ème niveau de plan" ; > ;
+ < "9ème niveau de plan" ; > ;
+ < "10ème niveau de plan" ; > ;
+ < "1er niveau de numérotation" ; > ;
+ < "2ème niveau de numérotation" ; > ;
+ < "3ème niveau de numérotation" ; > ;
+ < "4ème niveau de numérotation" ; > ;
+ < "5ème niveau de numérotation" ; > ;
+ < "6ème niveau de numérotation" ; > ;
+ < "7ème niveau de numérotation" ; > ;
+ < "8ème niveau de numérotation" ; > ;
+ < "9ème niveau de numérotation" ; > ;
+ < "10ème niveau de numérotation" ; > ;
+ };
+ itemlist [ dutch ] =
+ {
+ < "Koptekst tabel" ; > ;
+ < "Tabel" ; > ;
+ < "Kader" ; > ;
+ < "Bereik" ; > ;
+ < "Voetnoot" ; > ;
+ < "Eindnoot" ; > ;
+ < "Koptekst" ; > ;
+ < "Voettekst" ; > ;
+ < "1. niveau overzicht" ; > ;
+ < "2. niveau overzicht" ; > ;
+ < "3. niveau overzicht" ; > ;
+ < "4. niveau overzicht" ; > ;
+ < "5. niveau nummering" ; > ;
+ < "6. niveau overzicht" ; > ;
+ < "7. niveau overzicht" ; > ;
+ < "8. niveau overzicht" ; > ;
+ < "9. niveau overzicht" ; > ;
+ < "10. niveau overzicht" ; > ;
+ < "1. niveau nummering" ; > ;
+ < "2.niveau nummering" ; > ;
+ < "3.niveau nummering" ; > ;
+ < "4. niveau nummering" ; > ;
+ < "5. niveau nummering" ; > ;
+ < "6. niveau nummering" ; > ;
+ < "7. niveau nummering" ; > ;
+ < "8. niveau nummering" ; > ;
+ < "9. niveau nummering" ; > ;
+ < "10. niveau nummering" ; > ;
+ };
+ ItemList [ chinese_simplified ] =
+ {
+ < "±í¸ñҳü" ; > ;
+ < "±í¸ñ" ; > ;
+ < "¿ò" ; > ;
+ < "ÇøÓò" ; > ;
+ < "×¢½Å" ; > ;
+ < "βע" ; > ;
+ < "ҳü" ; > ;
+ < "Ò³½Å" ; > ;
+ < "µÚÒ»¸ö´ó¸Ù¼¶" ; > ;
+ < "µÚ¶þ¸ö´ó¸Ù¼¶" ; > ;
+ < "µÚÈý¸ö´ó¸Ù¼¶" ; > ;
+ < "µÚËĸö´ó¸Ù¼¶" ; > ;
+ < "µÚÎå¸ö´ó¸Ù¼¶" ; > ;
+ < "µÚÁù¸ö´ó¸Ù¼¶" ; > ;
+ < "µÚÆ߸ö´ó¸Ù¼¶" ; > ;
+ < "µÚ°Ë¸ö´ó¸Ù¼¶" ; > ;
+ < "µÚ¾Å¸ö´ó¸Ù¼¶" ; > ;
+ < "µÚÊ®¸ö´ó¸Ù¼¶" ; > ;
+ < "µÚÒ»¼¶±àºÅ" ; > ;
+ < "µÚ¶þ¼¶±àºÅ" ; > ;
+ < "µÚÈý¼¶±àºÅ" ; > ;
+ < "µÚËļ¶±àºÅ" ; > ;
+ < "µÚÎ弶±àºÅ" ; > ;
+ < "µÚÁù¼¶±àºÅ" ; > ;
+ < "µÚÆß¼¶±àºÅ" ; > ;
+ < "µÚ°Ë¼¶±àºÅ" ; > ;
+ < "µÚ¾Å¼¶±àºÅ" ; > ;
+ < "µÚÊ®¼¶±àºÅ" ; > ;
+ };
+ ItemList [ russian ] =
+ {
+ < "Âåðõíèé êîëîíòèòóë òàáëèöû" ; > ;
+ < "Òàáëèöà" ; > ;
+ < "Ðàìêà" ; > ;
+ < "Îáëàñòü" ; > ;
+ < "Ñíîñêà" ; > ;
+ < "Êîíöåâàÿ ñíîñêà" ; > ;
+ < "Âåðõíèé êîëîíòèòóë" ; > ;
+ < "Íèæíèé êîëîíòèòóë" ; > ;
+ < "1-ûé óðîâåíü ñòðóêòóðû" ; > ;
+ < "2-îé óðîâåíü ñòðóêòóðû" ; > ;
+ < "3-èé óðîâåíü ñòðóêòóðû" ; > ;
+ < "4-ûé óðîâåíü ñòðóêòóðû" ; > ;
+ < "5-ûé óðîâåíü ñòðóêòóðû" ; > ;
+ < "6-îé óðîâåíü ñòðóêòóðû" ; > ;
+ < "7-îé óðîâåíü ñòðóêòóðû" ; > ;
+ < "8-îé óðîâåíü ñòðóêòóðû" ; > ;
+ < "9-ûé óðîâåíü ñòðóêòóðû" ; > ;
+ < "10-ûé óðîâåíü ñòðóêòóðû" ; > ;
+ < "1-ûé óðîâåíü íóìåðàöèè" ; > ;
+ < "2-îé óðîâåíü íóìåðàöèè" ; > ;
+ < "3-èé óðîâåíü íóìåðàöèè" ; > ;
+ < "4-ûé óðîâåíü íóìåðàöèè" ; > ;
+ < "5-ûé óðîâåíü íóìåðàöèè" ; > ;
+ < "6-îé óðîâåíü íóìåðàöèè" ; > ;
+ < "7-îé óðîâåíü íóìåðàöèè" ; > ;
+ < "8-îé óðîâåíü íóìåðàöèè" ; > ;
+ < "9-ûé óðîâåíü íóìåðàöèè" ; > ;
+ < "10-ûé óðîâåíü íóìåðàöèè" ; > ;
+ };
+ ItemList [ polish ] =
+ {
+ < "Tabele Nag³ówek" ; > ;
+ < "Tabela" ; > ;
+ < "Ramka" ; > ;
+ < "Sekcja" ; > ;
+ < "Przypis dolny" ; > ;
+ < "Przypis koñc." ; > ;
+ < "Nag³ówek" ; > ;
+ < "Stopka" ; > ;
+ < "1. Poziom kontekstu" ; > ;
+ < "2. poziom konspektu" ; > ;
+ < "3. Poziom konspektu" ; > ;
+ < "4. Poziom konspektu" ; > ;
+ < "5. Poziom konspektu" ; > ;
+ < "6. Poziom konspektu" ; > ;
+ < "7. Poziom konspektu" ; > ;
+ < "8. Poziom konspektu" ; > ;
+ < "9. Poziom konspektu" ; > ;
+ < "10. Poziom konspektu" ; > ;
+ < "1 Poziom numeracji" ; > ;
+ < "2. Poziom numeracji" ; > ;
+ < "3. Poziom numeracji" ; > ;
+ < "4. Poziom numeracji" ; > ;
+ < "5. Poziom numeracji" ; > ;
+ < "6. Poziom numeracji" ; > ;
+ < "7. Poziom numeracji" ; > ;
+ < "8. Poziom numeracji" ; > ;
+ < "9. Poziom numeracji" ; > ;
+ < "10. Poziom numeracji" ; > ;
+ };
+ ItemList [ japanese ] =
+ {
+ < "•\\‚ÌͯÀÞ" ; > ;
+ < "•\\" ; > ;
+ < "˜g" ; > ;
+ < "”͈Í" ; > ;
+ < "‹r’" ; > ;
+ < "•¶––‹r’" ; > ;
+ < "ͯÀÞ" ; > ;
+ < "̯À" ; > ;
+ < "1ÚÍÞٖڂ̱³ÄײÝ" ; > ;
+ < "2ÚÍÞٖڂ̱³ÄײÝ" ; > ;
+ < "3ÚÍÞٖڂ̱³ÄײÝ" ; > ;
+ < "4ÚÍÞٖڂ̱³ÄײÝ" ; > ;
+ < "5ÚÍÞٖڂ̱³ÄײÝ" ; > ;
+ < "6ÚÍÞٖڂ̱³ÄײÝ" ; > ;
+ < "7ÚÍÞٖڂ̱³ÄײÝ" ; > ;
+ < "8ÚÍÞٖڂ̱³ÄײÝ" ; > ;
+ < "9ÚÍÞٖڂ̱³ÄײÝ" ; > ;
+ < "10ÚÍÞٖڂ̱³ÄײÝ" ; > ;
+ < "1ÚÍÞٖڂ̔Ԇ•t‚¯" ; > ;
+ < "2ÚÍÞٖڂ̔Ԇ•t‚¯" ; > ;
+ < "3ÚÍÞٖڂ̔Ԇ•t‚¯" ; > ;
+ < "4ÚÍÞٖڂ̔Ԇ•t‚¯" ; > ;
+ < "5ÚÍÞٖڂ̔Ԇ•t‚¯" ; > ;
+ < "6ÚÍÞٖڂ̔Ԇ•t‚¯" ; > ;
+ < "7ÚÍÞٖڂ̔Ԇ•t‚¯" ; > ;
+ < "8ÚÍÞٖڂ̔Ԇ•t‚¯" ; > ;
+ < "9ÚÍÞٖڂ̔Ԇ•t‚¯" ; > ;
+ < "10ÚÍÞٖڂ̔Ԇ•t‚¯" ; > ;
+ };
+ ItemList [ chinese_traditional ] =
+ {
+ < "ªí®æ­¶­º" ; > ;
+ < "ªí®æ" ; > ;
+ < "¤å¦r¤è¶ô" ; > ;
+ < "°Ï°ì" ; > ;
+ < "µù¸}" ; > ;
+ < "§Àª`" ; > ;
+ < "­¶­º" ; > ;
+ < "­¶§À" ; > ;
+ < "²Ä¤@­Ó¤jºõ¯Å" ; > ;
+ < "²Ä¤G­Ó¤jºõ¯Å" ; > ;
+ < "²Ä¤T­Ó¤jºõ¯Å" ; > ;
+ < "²Ä¥|­Ó¤jºõ¯Å" ; > ;
+ < "²Ä¤­­Ó¤jºõ¯Å" ; > ;
+ < "²Ä¤»­Ó¤jºõ¯Å" ; > ;
+ < "²Ä¤C­Ó¤jºõ¯Å" ; > ;
+ < "²Ä¤K­Ó¤jºõ¯Å" ; > ;
+ < "²Ä¤E­Ó¤jºõ¯Å" ; > ;
+ < "²Ä¤Q­Ó¤jºõ¯Å" ; > ;
+ < "²Ä¤@¯Å½s¸¹" ; > ;
+ < "²Ä¤G¯Å½s¸¹" ; > ;
+ < "²Ä¤T¯Å½s¸¹" ; > ;
+ < "²Ä¥|¯Å½s¸¹" ; > ;
+ < "²Ä¤­¯Å½s¸¹" ; > ;
+ < "²Ä¤»¯Å½s¸¹" ; > ;
+ < "²Ä¤C¯Å½s¸¹" ; > ;
+ < "²Ä¤K¯Å½s¸¹" ; > ;
+ < "²Ä¤E¯Å½s¸¹" ; > ;
+ < "²Ä¤Q¯Å½s¸¹" ; > ;
+ };
+ ItemList [ arabic ] =
+ {
+ < "ÑÃÓ ÇáÌÏæá" ; > ;
+ < "ÌÏæá" ; > ;
+ < "ÅØÇÑ" ; > ;
+ < "äØÇÞ" ; > ;
+ < "ÍÇÔíÉ ÓÝáíÉ" ; > ;
+ < "ÊÚáíÞ ÎÊÇãí" ; > ;
+ < "ÑÃÓ ÇáÕÝÍÉ" ; > ;
+ < "ÊÐííá ÇáÕÝÍÉ" ; > ;
+ < "Ãæá ãÓÊæì ÊÞÓíã" ; > ;
+ < "ËÇäí ãÓÊæì ÊÞÓíã" ; > ;
+ < "ËÇáË ãÓÊæì ÊÞÓíã" ; > ;
+ < "ÑÇÈÚ ãÓÊæì ÊÞÓíã" ; > ;
+ < "ÎÇãÓ ãÓÊæì ÊÞÓíã" ; > ;
+ < "ÓÇÏÓ ãÓÊæì ÊÞÓíã" ; > ;
+ < "ÓÇÈÚ ãÓÊæì ÊÞÓíã" ; > ;
+ < "ËÇãä ãÓÊæì ÊÞÓíã" ; > ;
+ < "ÊÇÓÚ ãÓÊæì ÊÞÓíã" ; > ;
+ < "ÚÇÔÑ ãÓÊæì ÊÞÓíã" ; > ;
+ < "Ãæá ãÓÊæì ÊÑÞíã" ; > ;
+ < "ËÇäí ãÓÊæì ÊÑÞíã" ; > ;
+ < "ËÇáË ãÓÊæì ÊÑÞíã" ; > ;
+ < "ÑÇÈÚ ãÓÊæì ÊÑÞíã" ; > ;
+ < "ÎÇãÓ ãÓÊæì ÊÑÞíã" ; > ;
+ < "ÓÇÏÓ ãÓÊæì ÊÑÞíã" ; > ;
+ < "ÓÇÈÚ ãÓÊæì ÊÑÞíã" ; > ;
+ < "ËÇãä ãÓÊæì ÊÑÞíã" ; > ;
+ < "ÊÇÓÚ ãÓÊæì ÊÑÞíã" ; > ;
+ < "ÚÇÔÑ ãÓÊæì ÊÑÞíã" ; > ;
+ };
+ ItemList [ greek ] =
+ {
+ < "Êåöáëßäá ðßíáêá" ; > ;
+ < "Ðßíáêáò" ; > ;
+ < "Ðåñßãñáììá" ; > ;
+ < "Åíüôçôá" ; > ;
+ < "Õðïóçìåßùóç" ; > ;
+ < "Óçìåßùóç ôÝëïõò" ; > ;
+ < "Êåöáëßäá" ; > ;
+ < "ÕðïóÝëéäï" ; > ;
+ < "1ï Åðßðåäï õðïäéáßñåóçò" ; > ;
+ < "2ï. Åðßðåäï õðïäéáßñåóçò" ; > ;
+ < "3ï Åðßðåäï õðïäéáßñåóçò" ; > ;
+ < "4ï Åðßðåäï õðïäéáßñåóçò" ; > ;
+ < "5ï Åðßðåäï õðïäéáßñåóçò" ; > ;
+ < "6ï Åðßðåäï õðïäéáßñåóçò" ; > ;
+ < "7ï Åðßðåäï õðïäéáßñåóçò" ; > ;
+ < "8ï Åðßðåäï õðïäéáßñåóçò" ; > ;
+ < "9ï Åðßðåäï õðïäéáßñåóçò" ; > ;
+ < "10ï Åðßðåäï õðïäéáßñåóçò" ; > ;
+ < "1ï. Åðßðåäï áñßèìçóçò" ; > ;
+ < "2ï. Åðßðåäï áñßèìçóçò" ; > ;
+ < "3ï. Åðßðåäï áñßèìçóçò" ; > ;
+ < "4ï. Åðßðåäï áñßèìçóçò" ; > ;
+ < "5ï. Åðßðåäï áñßèìçóçò" ; > ;
+ < "6ï. Åðßðåäï áñßèìçóçò" ; > ;
+ < "7ï. Åðßðåäï áñßèìçóçò" ; > ;
+ < "8ï. Åðßðåäï áñßèìçóçò" ; > ;
+ < "9ï. Åðßðåäï áñßèìçóçò" ; > ;
+ < "10ï. Åðßðåäï áñßèìçóçò" ; > ;
+ };
+ ItemList [ korean ] =
+ {
+ < "½ÃÆ® ¸Ó¸®¸»" ; > ;
+ < "Ç¥" ; > ;
+ < "ÅؽºÆ® ¹Ú½º" ; > ;
+ < "±¸¿ª" ; > ;
+ < "°¢ÁÖ" ; > ;
+ < "¹ÌÁÖ" ; > ;
+ < "¸Ó¸®±Û" ; > ;
+ < "¹Ù´Ú±Û" ; > ;
+ < "1¹ø°°³¿ä¼öÁØ" ; > ;
+ < "2¹ø°°³¿ä¼öÁØ" ; > ;
+ < "3¹ø°°³¿ä¼öÁØ" ; > ;
+ < "4¹ø°°³¿ä¼öÁØ" ; > ;
+ < "5¹ø°°³¿ä¼öÁØ" ; > ;
+ < "6¹ø°°³¿ä¼öÁØ" ; > ;
+ < "7¹ø°°³¿ä¼öÁØ" ; > ;
+ < "8¹ø°°³¿ä¼öÁØ" ; > ;
+ < "9¹ø°°³¿ä¼öÁØ" ; > ;
+ < "10¹ø°°³¿ä¼öÁØ" ; > ;
+ < "1¹ø° ¹øÈ£ ¸Å±â±â ¼öÁØ" ; > ;
+ < "2¹ø° ¹øÈ£ ¸Å±â±â ¼öÁØ" ; > ;
+ < "3¹ø° ¹øÈ£ ¸Å±â±â ¼öÁØ" ; > ;
+ < "4¹ø° ¹øÈ£ ¸Å±â±â ¼öÁØ" ; > ;
+ < "5¹ø° ¹øÈ£ ¸Å±â±â ¼öÁØ" ; > ;
+ < "6¹ø° ¹øÈ£ ¸Å±â±â ¼öÁØ" ; > ;
+ < "7¹ø° ¹øÈ£ ¸Å±â±â ¼öÁØ" ; > ;
+ < "8¹ø° ¹øÈ£ ¸Å±â±â ¼öÁØ" ; > ;
+ < "9¹ø° ¹øÈ£ ¸Å±â±â ¼öÁØ" ; > ;
+ < "10¹ø° ¹øÈ£ ¸Å±â±â ¼öÁØ" ; > ;
+ };
+ ItemList [ turkish ] =
+ {
+ < "Tablo baþlýðý" ; > ;
+ < "Tablo" ; > ;
+ < "Çerçeve" ; > ;
+ < "Bölüm" ; > ;
+ < "Dipnot" ; > ;
+ < "Sonnot" ; > ;
+ < "Üst bilgi" ; > ;
+ < "Alt bilgi" ; > ;
+ < "1. Anahat düzeyi" ; > ;
+ < "2. Anahat düzeyi" ; > ;
+ < "3. Anahat düzeyi" ; > ;
+ < "4. Anahat düzeyi" ; > ;
+ < "5. Anahat düzeyi" ; > ;
+ < "6. Anahat düzeyi" ; > ;
+ < "7. Anahat düzeyi" ; > ;
+ < "8. Anahat düzeyi" ; > ;
+ < "9. Anahat düzeyi" ; > ;
+ < "10. Anahat düzeyi" ; > ;
+ < "1. Numaralama düzeyi" ; > ;
+ < "2. Numaralama düzeyi" ; > ;
+ < "3. Numaralama düzeyi" ; > ;
+ < "4. Numaralama düzeyi" ; > ;
+ < "5. Numaralama düzeyi" ; > ;
+ < "6. Numaralama düzeyi" ; > ;
+ < "7. Numaralama düzeyi" ; > ;
+ < "8. Numaralama düzeyi" ; > ;
+ < "9. Numaralama düzeyi" ; > ;
+ < "10. Numaralama düzeyi" ; > ;
+ };
+ ItemList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ String STR_NOTEMPL
+ {
+ Text = "<keine>" ;
+ Text [ English ] = "<none>" ;
+ Text [ dutch ] = "<geen>" ;
+ Text [ english_us ] = "<none>" ;
+ Text [ italian ] = "<nessuno>" ;
+ Text [ spanish ] = "<ninguno>" ;
+ Text [ french ] = "<aucun(e)>" ;
+ Text [ swedish ] = "<ingen>" ;
+ Text [ danish ] = "<ingen>" ;
+ Text [ portuguese ] = "<nenhum>" ;
+ Text [ portuguese_brazilian ] = "<keine>" ;
+ Text[ chinese_simplified ] = "<ÎÞ>";
+ Text[ russian ] = "<íåò>";
+ Text[ polish ] = "<brak>";
+ Text[ japanese ] = "<‚È‚µ>";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "<µL>";
+ Text[ arabic ] = "<ÈÏæä>";
+ Text[ greek ] = "<êáíÝíá>";
+ Text[ korean ] = "<¾øÀ½>";
+ Text[ turkish ] = "<yok>";
+ };
+};
+ // ********************************************************************** EOF
diff --git a/sw/source/ui/chrdlg/chardlg.cxx b/sw/source/ui/chrdlg/chardlg.cxx
new file mode 100644
index 000000000000..a5d17ab8dd96
--- /dev/null
+++ b/sw/source/ui/chrdlg/chardlg.cxx
@@ -0,0 +1,520 @@
+/*************************************************************************
+ *
+ * $RCSfile: chardlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _IODLG_HXX
+#include <sfx2/iodlg.hxx>
+#endif
+#ifndef _SVX_CHARDLG_HXX //autogen
+#include <svx/chardlg.hxx>
+#endif
+#ifndef _SVX_BACKGRND_HXX //autogen
+#include <svx/backgrnd.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _MACASSGN_HXX
+#include <macassgn.hxx>
+#endif
+#ifndef _CHRDLG_HXX
+#include <chrdlg.hxx> // der Dialog
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _CHRDLG_HRC
+#include <chrdlg.hrc>
+#endif
+#ifndef _CHARDLG_HRC
+#include <chardlg.hrc>
+#endif
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Der Traeger des Dialoges
+ --------------------------------------------------------------------*/
+
+
+SwCharDlg::SwCharDlg(Window* pParent, SwView& rVw, const SfxItemSet& rCoreSet,
+ const String* pStr, BOOL bIsDrwTxtDlg) :
+ SfxTabDialog(pParent, SW_RES(DLG_CHAR), &rCoreSet, pStr != 0),
+ rView(rVw),
+ bIsDrwTxtMode(bIsDrwTxtDlg)
+{
+ FreeResource();
+
+ // bspFonr fuer beide Bsp-TabPages
+
+ if(pStr)
+ {
+ String aTmp( GetText() );
+ aTmp += SW_RESSTR(STR_TEXTCOLL_HEADER);
+ aTmp += *pStr;
+ aTmp += ')';
+ SetText(aTmp);
+ }
+
+ //OS: Unter OS/2 darf die erste TabPage nie per RemoveTabPage entfernt werden
+ AddTabPage(TP_CHAR_STD, SvxCharStdPage::Create, 0);
+ AddTabPage(TP_CHAR_EXT, SvxCharExtPage::Create, 0);
+ AddTabPage(TP_CHAR_URL, SwCharURLPage::Create, 0);
+ AddTabPage(TP_BACKGROUND,SvxBackgroundTabPage::Create, 0);
+ if(bIsDrwTxtMode)
+ {
+ RemoveTabPage(TP_CHAR_URL);
+ RemoveTabPage(TP_BACKGROUND);
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwCharDlg::~SwCharDlg()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: FontList setzen
+ --------------------------------------------------------------------*/
+
+
+
+void SwCharDlg::PageCreated( USHORT nId, SfxTabPage &rPage )
+{
+ switch( nId )
+ {
+ case TP_CHAR_STD:
+ ((SvxCharStdPage&)rPage).SetFontList( *( (SvxFontListItem*)
+ ( rView.GetDocShell()->GetItem( SID_ATTR_CHAR_FONTLIST ) ) ) );
+ break;
+ case TP_CHAR_EXT:
+ if(bIsDrwTxtMode)
+ ((SvxCharExtPage&)rPage).DisableControls(DISABLE_CASEMAP);
+ else
+ ((SvxCharExtPage&)rPage).EnableFlash();
+ break;
+ }
+}
+
+/*-----------------14.08.96 11.28-------------------
+
+--------------------------------------------------*/
+
+SwCharURLPage::SwCharURLPage( Window* pParent,
+ const SfxItemSet& rCoreSet ) :
+ SfxTabPage( pParent, SW_RES( TP_CHAR_URL ), rCoreSet ),
+ aURLGB ( this, SW_RES(GB_URL)),
+ aURLFT( this, SW_RES(FT_URL )),
+ aURLED( this, SW_RES(ED_URL )),
+ aTextFT( this, SW_RES(FT_TEXT )),
+ aTextED( this, SW_RES(ED_TEXT )),
+ aNameFT( this, SW_RES(FT_NAME )),
+ aNameED( this, SW_RES(ED_NAME)),
+ aTargetFrmFT( this, SW_RES(FT_TARGET )),
+ aTargetFrmLB( this, SW_RES(LB_TARGET )),
+ aStyleGB( this, SW_RES(GB_STYLE )),
+ aVisitedFT( this, SW_RES(FT_VISITED )),
+ aVisitedLB( this, SW_RES(LB_VISITED )),
+ aNotVisitedFT( this, SW_RES(FT_NOT_VISITED)),
+ aNotVisitedLB( this, SW_RES(LB_NOT_VISITED)),
+ aEventPB( this, SW_RES(PB_EVENT )),
+ aURLPB( this, SW_RES(PB_URL )),
+ pINetItem(0),
+ bModified(FALSE)
+
+{
+ FreeResource();
+
+ const SfxPoolItem* pItem;
+ SfxObjectShell* pShell;
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_HTML_MODE, FALSE, &pItem) ||
+ ( 0 != ( pShell = SfxObjectShell::Current()) &&
+ 0 != (pItem = pShell->GetItem(SID_HTML_MODE))))
+ {
+ USHORT nHtmlMode = ((const SfxUInt16Item*)pItem)->GetValue();
+ if(HTMLMODE_ON & nHtmlMode)
+ {
+ aStyleGB.Hide();
+ aVisitedFT.Hide();
+ aVisitedLB.Hide();
+ aNotVisitedFT.Hide();
+ aNotVisitedLB.Hide();
+ }
+ }
+
+ aURLPB.SetClickHdl (LINK( this, SwCharURLPage, InsertFileHdl));
+ aEventPB.SetClickHdl(LINK( this, SwCharURLPage, EventHdl ));
+
+ SwView *pView = ::GetActiveView();
+ ::FillCharStyleListBox(aVisitedLB, pView->GetDocShell());
+ ::FillCharStyleListBox(aNotVisitedLB, pView->GetDocShell());
+
+ TargetList* pList = new TargetList;
+ const SfxFrame* pFrame = pView->GetViewFrame()->GetTopFrame();
+ pFrame->GetTargetList(*pList);
+ USHORT nCount = (USHORT)pList->Count();
+ if( nCount )
+ {
+ for ( USHORT i = 0; i < nCount; i++ )
+ {
+ aTargetFrmLB.InsertEntry(*pList->GetObject(i));
+ }
+ for ( i = nCount; i; i-- )
+ {
+ delete pList->GetObject( i - 1 );
+ }
+ }
+ delete pList;
+
+
+}
+
+/*-----------------15.08.96 09.04-------------------
+
+--------------------------------------------------*/
+
+SwCharURLPage::~SwCharURLPage()
+{
+ delete pINetItem;
+}
+
+/*-----------------14.08.96 11.31-------------------
+
+--------------------------------------------------*/
+
+void SwCharURLPage::Reset(const SfxItemSet& rSet)
+{
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == rSet.GetItemState(RES_TXTATR_INETFMT, FALSE, &pItem))
+ {
+ const SwFmtINetFmt* pINetFmt = (const SwFmtINetFmt*)pItem;
+ aURLED.SetText( INetURLObject::decode( pINetFmt->GetValue(),
+ INET_HEX_ESCAPE,
+ INetURLObject::DECODE_WITH_CHARSET,
+ RTL_TEXTENCODING_UTF8 ));
+ aURLED.SaveValue();
+ aNameED.SetText(pINetFmt->GetName());
+ String sEntry = pINetFmt->GetVisitedFmt();
+ if( !sEntry.Len() )
+ GetDocPoolNm( RES_POOLCHR_INET_VISIT, sEntry );
+ aVisitedLB.SelectEntry(sEntry);
+ sEntry = pINetFmt->GetINetFmt();
+ if(!sEntry.Len())
+ GetDocPoolNm( RES_POOLCHR_INET_NORMAL, sEntry );
+ aNotVisitedLB.SelectEntry(sEntry);
+
+ aTargetFrmLB.SetText(pINetFmt->GetTargetFrame());
+ aVisitedLB. SaveValue();
+ aNotVisitedLB.SaveValue();
+ aTargetFrmLB. SaveValue();
+ pINetItem = new SvxMacroItem(FN_INET_FIELD_MACRO);
+
+ if( pINetFmt->GetMacroTbl() )
+ pINetItem->SetMacroTable( *pINetFmt->GetMacroTbl() );
+ }
+ if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_SELECTION, FALSE, &pItem))
+ {
+ aTextED.SetText(((const SfxStringItem*)pItem)->GetValue());
+ aTextFT.Enable( FALSE );
+ aTextED.Enable( FALSE );
+ }
+}
+
+/*-----------------14.08.96 11.32-------------------
+
+--------------------------------------------------*/
+
+BOOL SwCharURLPage::FillItemSet(SfxItemSet& rSet)
+{
+ String sURL = aURLED.GetText();
+ if(sURL.Len())
+ sURL = URIHelper::SmartRelToAbs(sURL);
+ SwFmtINetFmt aINetFmt(sURL, aTargetFrmLB.GetText());
+ aINetFmt.SetName(aNameED.GetText());
+ SwWrtShell &rSh = ::GetActiveView()->GetWrtShell();
+ bModified |= aURLED.GetText() != aURLED.GetSavedValue();
+ bModified |= aNameED.IsModified();
+ bModified |= aTargetFrmLB.GetSavedValue() != aTargetFrmLB.GetText();
+
+ //zuerst die gueltigen Einstellungen setzen
+ String sEntry = aVisitedLB.GetSelectEntry();
+ USHORT nId = rSh.GetPoolId( sEntry, GET_POOLID_CHRFMT);
+ aINetFmt.SetVisitedFmtId(nId);
+ aINetFmt.SetVisitedFmt(nId == RES_POOLCHR_INET_VISIT ? aEmptyStr : sEntry);
+
+ sEntry = aNotVisitedLB.GetSelectEntry();
+ nId = rSh.GetPoolId( sEntry, GET_POOLID_CHRFMT);
+ aINetFmt.SetINetFmtId( nId );
+ aINetFmt.SetINetFmt(nId == RES_POOLCHR_INET_NORMAL ? aEmptyStr : sEntry);
+
+ if( pINetItem && pINetItem->GetMacroTable().Count() )
+ aINetFmt.SetMacroTbl( &pINetItem->GetMacroTable() );
+
+ if(aVisitedLB.GetSavedValue() != aVisitedLB.GetSelectEntryPos())
+ bModified = TRUE;
+
+ if(aNotVisitedLB.GetSavedValue() != aNotVisitedLB.GetSelectEntryPos())
+ bModified = TRUE;
+
+ if(aTextED.IsModified())
+ {
+ bModified = TRUE;
+ rSet.Put(SfxStringItem(FN_PARAM_SELECTION, aTextED.GetText()));
+ }
+ if(bModified)
+ rSet.Put(aINetFmt);
+ return bModified;
+}
+
+
+/*-----------------14.08.96 11.30-------------------
+
+--------------------------------------------------*/
+
+SfxTabPage* SwCharURLPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return ( new SwCharURLPage( pParent, rAttrSet ) );
+}
+
+/*-----------------14.08.96 15.00-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK( SwCharURLPage, InsertFileHdl, PushButton *, pBtn )
+{
+ SfxFileDialog* pFileDlg = new SfxFileDialog(pBtn, WB_OPEN);
+ pFileDlg->DisableSaveLastDirectory();
+ pFileDlg->SetHelpId(HID_FILEDLG_CHARDLG);
+
+ if(RET_OK == pFileDlg->Execute())
+ {
+ aURLED.SetText(URIHelper::SmartRelToAbs(pFileDlg->GetPath()));
+ }
+ delete pFileDlg;
+
+ return 0;
+}
+/*-----------------14.08.96 15.00-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK( SwCharURLPage, EventHdl, PushButton *, EMPTYARG )
+{
+ bModified |= SwMacroAssignDlg::INetFmtDlg( this,
+ ::GetActiveView()->GetWrtShell(), pINetItem );
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.213 2000/09/18 16:05:13 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.212 2000/08/31 11:37:50 jp
+ add missing include
+
+ Revision 1.211 2000/08/17 13:48:23 jp
+ UI with decode URL
+
+ Revision 1.210 2000/07/26 16:32:19 jp
+ use the new function GetDocPoolNm to get the collectionames
+
+ Revision 1.209 2000/07/03 10:33:17 os
+ #72742# resource warnings corrected
+
+ Revision 1.208 2000/06/26 13:06:44 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.207 2000/04/19 12:56:33 os
+ include sfx2/filedlg.hxx removed
+
+ Revision 1.206 2000/02/11 14:43:26 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.205 2000/01/24 12:53:41 os
+ #72153# call SfxFileDialog::DisableSaveLastDirectory
+
+ Revision 1.204 1999/02/19 07:48:02 MA
+ #61949# CurrShell gibt es nicht mehr
+
+
+ Rev 1.203 19 Feb 1999 08:48:02 MA
+ #61949# CurrShell gibt es nicht mehr
+
+ Rev 1.202 12 Feb 1999 07:35:36 OS
+ #61800# Keine URL und kein Hintergrund fuer DrawText
+
+ Rev 1.201 02 Sep 1998 14:11:10 OM
+ #45378# HelpIDs fuer Dateidialoge
+
+ Rev 1.200 09 Jul 1998 08:57:10 OS
+ vor dem putten in jedem Fall Listbox-Inhalte auswerten #52425#
+
+ Rev 1.199 29 Jun 1998 09:39:30 OS
+ kein Blinken fuer DrawText#48019#
+
+ Rev 1.198 15 Apr 1998 14:33:06 OS
+ ::FillCharStyleListBox
+
+ Rev 1.197 28 Nov 1997 15:01:48 MA
+ includes
+
+ Rev 1.196 01 Sep 1997 13:25:14 OS
+ DLL-Umstellung
+
+ Rev 1.195 15 Aug 1997 12:12:36 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.194 09 Aug 1997 13:01:46 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.193 08 Aug 1997 17:29:44 OM
+ Headerfile-Umstellung
+
+ Rev 1.192 18 Jun 1997 17:30:02 OS
+ URL wird jetzt mit SfxFileDialog gesucht #40815#
+
+ Rev 1.191 21 Apr 1997 16:27:00 OS
+ TargetFrame jetzt in ComboBox
+
+ Rev 1.190 08 Apr 1997 09:22:40 MA
+ chg: falsche Definition entfernt
+
+ Rev 1.189 07 Apr 1997 14:15:08 MH
+ chg: header
+
+ Rev 1.188 20 Mar 1997 16:58:20 OS
+ Leerstring: URL zuruecksetzen
+
+ Rev 1.187 10 Mar 1997 17:28:48 OS
+ URL-Edit per GetSavedValue auf Modifikation testen
+
+ Rev 1.186 14 Feb 1997 18:04:06 OM
+ Zahlenformat-Dlg
+
+ Rev 1.185 05 Feb 1997 13:31:32 OS
+ keine Zeichenvorlagen fuer Hyperlinks im HTML
+
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/chrdlg/chardlg.hrc b/sw/source/ui/chrdlg/chardlg.hrc
new file mode 100644
index 000000000000..1a03e2a6d322
--- /dev/null
+++ b/sw/source/ui/chrdlg/chardlg.hrc
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * $RCSfile: chardlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 FONT_FT 1
+#define FONT_CB 2
+#define FACE_FT 3
+#define FACE_LB 4
+#define SIZE_FT 5
+#define SIZE_CB 6
+#define OUTLINE_TB 7
+#define SHADOW_TB 8
+#define UNDERL_TB 9
+#define STRIKETHRU_TB 10
+#define COLOR_FT 11
+#define COLOR_LB 12
+#define LANG_FT 13
+#define LANG_LB 14
+#define EXAMPLE_WN 15
+#define EXAMPLE_GB 16
+#define CASEMAP_GB 17
+#define NONE_RB 20
+#define CAPS_RB 21
+#define LOWERCASE_RB 22
+#define SMALLCAPS_RB 23
+#define TITEL_RB 24
+#define HIGH_RB 25
+#define NORMAL_RB 26
+#define DEEP_RB 27
+#define DEEPHIGHT_FT 28
+#define DEEPHIGH_MF 29
+#define RELSIZE_FT 30
+#define RELSIZE_MF 31
+#define KERN_LB 32
+#define KERN_FT 33
+#define KERN_MF 34
+#define UNDERLINE_FT 35
+#define UNDERLINE_LB 36
+#define STRIKE_FT 37
+#define STRIKE_LB 38
+#define STRIKE_CB 39
+#define EFFECT_GB 41
+#define POS_GB 42
+#define POSEXT_GB 43
+#define KERN_GB 45
+#define FONTTYPE_FT 46
+
+#define GB_URL 50
+#define FT_URL 51
+#define ED_URL 52
+#define GB_STYLE 53
+#define FT_VISITED 55
+#define LB_VISITED 56
+#define FT_NOT_VISITED 57
+#define LB_NOT_VISITED 58
+#define PB_EVENT 59
+#define PB_URL 60
+#define LB_TARGET 61
+#define FT_TARGET 62
+#define FT_TEXT 63
+#define ED_TEXT 64
+#define FT_NAME 65
+#define ED_NAME 66
+
diff --git a/sw/source/ui/chrdlg/chardlg.src b/sw/source/ui/chrdlg/chardlg.src
new file mode 100644
index 000000000000..74cefc409fac
--- /dev/null
+++ b/sw/source/ui/chrdlg/chardlg.src
@@ -0,0 +1,615 @@
+/*************************************************************************
+ *
+ * $RCSfile: chardlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "globals.hrc"
+#include "chrdlg.hrc"
+#include "chardlg.hrc"
+#include "helpid.h"
+
+#define LBOX_DIFF 4
+TabDialog DLG_CHAR
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zeichen : Schrift */
+ 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ère" ;
+ Text [ swedish ] = "Tecken" ;
+ Text [ dutch ] = "Teken" ;
+ Text [ spanish ] = "Caracteres" ;
+ Text [ english_us ] = "Character" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_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 = TP_CHAR_STD ;
+ Text[ chinese_simplified ] = "×ÖÌå";
+ Text[ russian ] = "Øðèôò";
+ Text[ polish ] = "Czcionka";
+ Text[ japanese ] = "Ì«ÝÄ";
+ Text[ chinese_traditional ] = "¦r«¬";
+ Text[ arabic ] = "ÇáÎØ";
+ Text[ dutch ] = "Lettertype";
+ Text[ chinese_simplified ] = "×ÖÌå";
+ Text[ greek ] = "ÃñáììáôïóåéñÜ";
+ Text[ korean ] = "±Û²Ã";
+ Text[ turkish ] = "Yazýtipi";
+ };
+ PageItem
+ {
+ Identifier = TP_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 = TP_CHAR_EXT ;
+ Text[ chinese_simplified ] = "×ÖÌåЧ¹û";
+ Text[ russian ] = "Ýôôåêòû øðèôòà";
+ Text[ polish ] = "Efekty czcionek";
+ Text[ japanese ] = "Ì«ÝÄŒø‰Ê";
+ Text[ chinese_traditional ] = "¤å¦r®ÄªG";
+ Text[ arabic ] = "ÊÃËíÑÇÊ ÇáÎØæØ";
+ Text[ dutch ] = "Schrifteffecten";
+ Text[ chinese_simplified ] = "×ÖÌåЧ¹û";
+ Text[ greek ] = "ÅöÝ ÷áñáêôÞñùí";
+ Text[ korean ] = "±Û²Ã È¿°ú";
+ Text[ turkish ] = "Yazýtipi efektleri";
+ };
+ PageItem
+ {
+ Identifier = TP_CHAR_URL ;
+ Text = "Hyperlink" ;
+ Text [ ENGLISH ] = "Hyperlink" ;
+ Text [ english_us ] = "Hyperlink" ;
+ Text [ italian ] = "Hyperlink" ;
+ Text [ spanish ] = "Hiperenlace" ;
+ Text [ french ] = "Hyperlien" ;
+ Text [ dutch ] = "Hyperlink" ;
+ Text [ swedish ] = "Hyperlänk" ;
+ Text [ danish ] = "Hyperlink" ;
+ Text [ portuguese_brazilian ] = "Hyperlink" ;
+ Text [ portuguese ] = "Hiperligação" ;
+ Text[ chinese_simplified ] = "³¬Á´½Ó";
+ Text[ russian ] = "Ãèïåðññûëêà";
+ Text[ polish ] = "Hiper³¹cze";
+ Text[ japanese ] = "ʲÊß°Øݸ";
+ Text[ chinese_traditional ] = "¶W³sµ²";
+ Text[ arabic ] = "ÇÑÊÈÇØ ÊÔÚÈí";
+ Text[ dutch ] = "Hyperlink";
+ Text[ chinese_simplified ] = "³¬Á´½Ó";
+ Text[ greek ] = "Õðåñ-óýíäåóç";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ©";
+ Text[ turkish ] = "Hyperlink";
+ };
+ 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" ;
+ PageResID = TP_BACKGROUND ;
+ Text[ chinese_simplified ] = "±³¾°";
+ Text[ russian ] = "Ôîí";
+ Text[ polish ] = "T³o";
+ Text[ japanese ] = "”wŒi";
+ Text[ chinese_traditional ] = "­I´º";
+ Text[ arabic ] = "ÇáÎáÝíÉ";
+ Text[ dutch ] = "Achtergrond";
+ Text[ chinese_simplified ] = "±³¾°";
+ Text[ greek ] = "Öüíôï";
+ Text[ korean ] = "¹è°æ";
+ Text[ turkish ] = "Artalan";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "×Ö·û";
+ Text[ russian ] = "Çíàê";
+ Text[ polish ] = "Znak";
+ Text[ japanese ] = "•¶Žš";
+ Text[ language_user1 ] = "èëè: Ñèìâîë - -";
+ Text[ chinese_traditional ] = "¦r¤¸";
+ Text[ arabic ] = "ÇáÎØ";
+ Text[ dutch ] = "Teken";
+ Text[ chinese_simplified ] = "×Ö·û";
+ Text[ greek ] = "×áñáêôÞñåò";
+ Text[ korean ] = "¹®ÀÚ";
+ Text[ turkish ] = "Karakter";
+};
+TabDialog DLG_DRAWCHAR
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ 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" ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_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 = TP_CHAR_STD ;
+ Text[ chinese_simplified ] = "×ÖÌå";
+ Text[ russian ] = "Øðèôò";
+ Text[ polish ] = "Czcionka";
+ Text[ japanese ] = "Ì«ÝÄ";
+ Text[ chinese_traditional ] = "¦r«¬";
+ Text[ arabic ] = "ÇáÎØ";
+ Text[ dutch ] = "Lettertype";
+ Text[ chinese_simplified ] = "×ÖÌå";
+ Text[ greek ] = "ÃñáììáôïóåéñÜ";
+ Text[ korean ] = "±Û²Ã";
+ Text[ turkish ] = "Yazýtipi";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "×ÖÌå";
+ Text[ russian ] = "Øðèôò";
+ Text[ polish ] = "Czcionka";
+ Text[ japanese ] = "Ì«ÝÄ";
+ Text[ chinese_traditional ] = "¦r«¬";
+ Text[ arabic ] = "ÇáÎØ";
+ Text[ dutch ] = "Lettertype";
+ Text[ chinese_simplified ] = "×ÖÌå";
+ Text[ greek ] = "ÃñáììáôïóåéñÜ";
+ Text[ korean ] = "±Û²Ã";
+ Text[ turkish ] = "Yazýtipi";
+};
+TabPage TP_CHAR_URL
+{
+ HelpID = HID_CHAR_URL ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ GroupBox GB_URL
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 72 + LBOX_DIFF ) ;
+ Text = "Hyperlink" ;
+ Text [ English ] = "Hyperlink" ;
+ Text [ english_us ] = "Hyperlink" ;
+ Text [ italian ] = "Hyperlink" ;
+ Text [ spanish ] = "Hiperenlace" ;
+ Text [ french ] = "Hyperlien" ;
+ Text [ dutch ] = "Hyperlink" ;
+ Text [ swedish ] = "Hyperlänk" ;
+ Text [ danish ] = "Hyperlink" ;
+ Text [ portuguese_brazilian ] = "Hyperlink" ;
+ Text [ portuguese ] = "Hiperligação" ;
+ Text[ chinese_simplified ] = "³¬Á´½Ó";
+ Text[ russian ] = "Ãèïåðññûëêà";
+ Text[ polish ] = "Hiper³¹cze";
+ Text[ japanese ] = "ʲÊß°Øݸ";
+ Text[ chinese_traditional ] = "¶W³sµ²";
+ Text[ arabic ] = "ÇÑÊÈÇØ ÊÔÚÈí";
+ Text[ dutch ] = "Hyperlink";
+ Text[ chinese_simplified ] = "³¬Á´½Ó";
+ Text[ greek ] = "Õðåñ-óýíäåóç";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ©";
+ Text[ turkish ] = "Hyperlink";
+ };
+ FixedText FT_URL
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 63 , 10 ) ;
+ Text = "U~RL" ;
+ Text [ English ] = "U~RL" ;
+ Text [ english_us ] = "~URL" ;
+ Text [ italian ] = "U~RL" ;
+ Text [ spanish ] = "~URL" ;
+ Text [ french ] = "U~RL" ;
+ Text [ dutch ] = "U~RL" ;
+ Text [ swedish ] = "U~RL" ;
+ Text [ danish ] = "URL" ;
+ Text [ portuguese_brazilian ] = "U~RL" ;
+ Text [ portuguese ] = "U~RL" ;
+ Text[ chinese_simplified ] = "~URL";
+ Text[ russian ] = "U~RL";
+ Text[ polish ] = "URL";
+ Text[ japanese ] = "URL(~U)";
+ Text[ chinese_traditional ] = "~URL";
+ Text[ arabic ] = "U~RL";
+ Text[ dutch ] = "U~RL";
+ Text[ chinese_simplified ] = "~URL";
+ Text[ greek ] = "URL";
+ Text[ korean ] = "~URL";
+ Text[ turkish ] = "U~RL";
+ };
+ Edit ED_URL
+ {
+ Pos = MAP_APPFONT ( 78 , 14 ) ;
+ Size = MAP_APPFONT ( 104 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_URL
+ {
+ Pos = MAP_APPFONT ( 188 , 14 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ Text = "~Auswählen..." ;
+ Text [ English ] = "~Browse..." ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Browse..." ;
+ Text [ portuguese_brazilian ] = "Durch~suchen..." ;
+ Text [ swedish ] = "~Välj ut..." ;
+ Text [ danish ] = "Gennemse..." ;
+ Text [ italian ] = "~Sfoglia..." ;
+ Text [ spanish ] = "~Seleccionar..." ;
+ Text [ french ] = "~Sélectionner..." ;
+ Text [ dutch ] = "~Selecteren..." ;
+ Text [ portuguese ] = "~Pesquisar..." ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ(~B)...";
+ Text[ russian ] = "~Âûáðàòü...";
+ Text[ polish ] = "Wybierz...";
+ Text[ japanese ] = "‘I‘ð(~B)...";
+ Text[ chinese_traditional ] = "¿ï¾Ü(~B)...";
+ Text[ arabic ] = "ÇÓÊÚÑÇÖ...";
+ Text[ dutch ] = "~Selecteren...";
+ Text[ chinese_simplified ] = "Ñ¡Ôñ(~B)...";
+ Text[ greek ] = "~ÅðéëïãÞ...";
+ Text[ korean ] = "¼±ÅÃÇϱâ(~B)...";
+ Text[ turkish ] = "A~raþtýr...";
+ };
+ FixedText FT_TEXT
+ {
+ Pos = MAP_APPFONT ( 12 , 30 ) ;
+ Size = MAP_APPFONT ( 63 , 10 ) ;
+ Text = "Te~xt" ;
+ Text [ English ] = "Text" ;
+ Text[ english_us ] = "Te~xt";
+ Text[ portuguese ] = "Te~xto";
+ Text[ russian ] = "Óêàçàíèå";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ dutch ] = "~Opmerking";
+ Text[ french ] = "~Texte";
+ Text[ spanish ] = "In~dicación";
+ Text[ italian ] = "Nota";
+ Text[ danish ] = "Tekst";
+ Text[ swedish ] = "Hänv~isning";
+ Text[ polish ] = "Tekst";
+ Text[ portuguese_brazilian ] = "H~inweis";
+ Text[ japanese ] = "•¶Žš—ñ(~K)";
+ Text[ korean ] = "¸Þ¸ð(~O)";
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ chinese_traditional ] = "¤å¦r";
+ Text[ turkish ] = "B~ilgi";
+ Text[ arabic ] = "äÕ";
+ };
+ Edit ED_TEXT
+ {
+ Pos = MAP_APPFONT ( 78 , 29 ) ;
+ Size = MAP_APPFONT ( 104 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ };
+ FixedText FT_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 45 ) ;
+ Size = MAP_APPFONT ( 63 , 10 ) ;
+ Text = "~Name" ;
+ Text [ English ] = "~Name" ;
+ Text [ english_us ] = "~Name" ;
+ Text [ italian ] = "~Nome" ;
+ Text [ spanish ] = "~Nombre" ;
+ Text [ french ] = "~Nom" ;
+ Text [ dutch ] = "~Naam" ;
+ Text [ swedish ] = "~Namn" ;
+ Text [ danish ] = "Navn" ;
+ Text [ portuguese_brazilian ] = "~Name" ;
+ Text [ portuguese ] = "~Nome" ;
+ Text[ chinese_simplified ] = "Ãû³Æ(~N)";
+ Text[ russian ] = "~Èìÿ";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "–¼‘O(~N)";
+ Text[ chinese_traditional ] = "¦WºÙ(~N)";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ dutch ] = "~Naam";
+ Text[ chinese_simplified ] = "Ãû³Æ(~N)";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§(~N)";
+ Text[ turkish ] = "~Ad";
+ };
+ Edit ED_NAME
+ {
+ Pos = MAP_APPFONT ( 78 , 44 ) ;
+ Size = MAP_APPFONT ( 104 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ };
+ FixedText FT_TARGET
+ {
+ Pos = MAP_APPFONT ( 12 , 60 ) ;
+ Size = MAP_APPFONT ( 63 , 10 ) ;
+ Text = "~Frame" ;
+ Text [ English ] = "Frame" ;
+ Text [ english_us ] = "Target Frame" ;
+ Text [ portuguese_brazilian ] = "~Targetframe" ;
+ Text [ swedish ] = "~Ram" ;
+ Text [ danish ] = "Frame" ;
+ Text [ italian ] = "~Frame" ;
+ Text [ spanish ] = "~Frame" ;
+ Text [ french ] = "~Frame" ;
+ Text [ dutch ] = "~Frame" ;
+ Text [ portuguese ] = "~Frame" ;
+ Text[ chinese_simplified ] = "¿ò¶ÔÏó";
+ Text[ russian ] = "~Êàäð";
+ Text[ polish ] = "Ramka";
+ Text[ japanese ] = "ÌÚ°Ñ";
+ Text[ chinese_traditional ] = "°T®Ø";
+ Text[ arabic ] = "~Frame";
+ Text[ dutch ] = "~Frame";
+ Text[ chinese_simplified ] = "¿ò¶ÔÏó";
+ Text[ greek ] = "Ðëáßóéï";
+ Text[ korean ] = "¸ñÇ¥ ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "~Frame";
+ };
+ ComboBox LB_TARGET
+ {
+ Pos = MAP_APPFONT ( 78 , 59 ) ;
+ Size = MAP_APPFONT ( 104 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ Group = TRUE ;
+ };
+ PushButton PB_EVENT
+ {
+ Pos = MAP_APPFONT ( 188 , 31 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ TabStop = TRUE ;
+ Text = "~Ereignisse..." ;
+ Text [ English ] = "Events..." ;
+ Text [ english_us ] = "~Events..." ;
+ Text [ italian ] = "~Eventi" ;
+ Text [ french ] = "~Événements..." ;
+ Text [ dutch ] = "~Gebeurtenissen" ;
+ Text [ swedish ] = "Händ~elser..." ;
+ Text [ danish ] = "Begivenheder..." ;
+ Text [ spanish ] = "~Acontecimientos..." ;
+ Text [ portuguese_brazilian ] = "~Ereignisse..." ;
+ Text [ portuguese ] = "~Eventos..." ;
+ Text[ chinese_simplified ] = "ʼþ(~E)...";
+ Text[ russian ] = "Ñîáûòèÿ...";
+ Text[ polish ] = "Wy~darzenia...";
+ Text[ japanese ] = "ŽÀsŒ_‹@(~E)...";
+ Text[ chinese_traditional ] = "¬ù·|(~E)...";
+ Text[ arabic ] = "ÃÍÏÇË...";
+ Text[ dutch ] = "~Gebeurtenissen";
+ Text[ chinese_simplified ] = "ʼþ(~E)...";
+ Text[ greek ] = "Ãåãïíüôá...";
+ Text[ korean ] = "À̺¥Æ®(~E)...";
+ Text[ turkish ] = "Olaylar...";
+ };
+ GroupBox GB_STYLE
+ {
+ Pos = MAP_APPFONT ( 6 , 78 + LBOX_DIFF ) ;
+ Size = MAP_APPFONT ( 248 , 42 + 2 * LBOX_DIFF ) ;
+ Text = "Zeichenvorlagen" ;
+ Text [ English ] = "Character styles" ;
+ Text [ dutch ] = "Tekenopmaakprofielen" ;
+ Text [ english_us ] = "Character Styles" ;
+ Text [ italian ] = "Modelli di carattere" ;
+ Text [ spanish ] = "Estilos de caracteres" ;
+ Text [ french ] = "Styles de caractère" ;
+ Text [ swedish ] = "Teckenformatmallar" ;
+ Text [ danish ] = "Tegntypografier" ;
+ Text [ portuguese_brazilian ] = "Zeichenvorlagen" ;
+ Text [ portuguese ] = "Estilos de caracteres" ;
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ";
+ Text[ russian ] = "Ñòèëè çíàêîâ";
+ Text[ polish ] = "Style znaku";
+ Text[ japanese ] = "÷½Ä½À²Ù";
+ Text[ chinese_traditional ] = "¦r¤¸¼Ë¦¡";
+ Text[ arabic ] = "ÃäãÇØ ÃÍÑÝ";
+ Text[ dutch ] = "Tekenopmaakprofielen";
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ";
+ Text[ greek ] = "Óôõë ÷áñáêôÞñùí";
+ Text[ korean ] = "¹®ÀÚ À¯Çü";
+ Text[ turkish ] = "Karakter biçimi";
+ };
+ FixedText FT_VISITED
+ {
+ Pos = MAP_APPFONT ( 12 , 91 + LBOX_DIFF ) ;
+ Size = MAP_APPFONT ( 63 , 10 ) ;
+ Text = "~Besuchter Link" ;
+ Text [ English ] = "Visited link" ;
+ Text [ dutch ] = "B~ezochte Link" ;
+ Text [ english_us ] = "~Visited links" ;
+ Text [ italian ] = "Per il ~sito visitato" ;
+ Text [ spanish ] = "Vínculos ~visitados" ;
+ Text [ french ] = "Lien ~visité" ;
+ Text [ swedish ] = "~Besökt länk" ;
+ Text [ danish ] = "Besøgt hyperlink" ;
+ Text [ portuguese_brazilian ] = "~Besuchte Links" ;
+ Text [ portuguese ] = "Links ~visitados" ;
+ Text[ chinese_simplified ] = "·ÃÎʹýµÄÁ´½Ó(~V)";
+ Text[ russian ] = "Ïîñåùåííûå ññûëêè";
+ Text[ polish ] = "Odwiedzone ³¹cze";
+ Text[ japanese ] = "ŠJ‚¢‚½‚±‚Æ‚Ì‚ ‚éØݸ(~V)";
+ Text[ chinese_traditional ] = "³X°Ý¹Lªº±¶®|(~V)";
+ Text[ arabic ] = "ÇÑÊÈÇØ ÓÈÞ ÒíÇÑÊå";
+ Text[ dutch ] = "B~ezochte Link";
+ Text[ chinese_simplified ] = "·ÃÎʹýµÄÁ´½Ó(~V)";
+ Text[ greek ] = "ÓõíäÝóåéò ðïõ Ý÷ïõí åðéóêåöèåß";
+ Text[ korean ] = "¹æ¹®ÇÑ ¸µÅ©(~V)";
+ Text[ turkish ] = "~Kullanýlmýþ baðlantý";
+ };
+ ListBox LB_VISITED
+ {
+ Pos = MAP_APPFONT ( 78 , 90 + LBOX_DIFF ) ;
+ Size = MAP_APPFONT ( 104 , 60 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ Group = TRUE ;
+ };
+ FixedText FT_NOT_VISITED
+ {
+ Pos = MAP_APPFONT ( 12 , 106 + 2 * LBOX_DIFF ) ;
+ Size = MAP_APPFONT ( 63 , 10 ) ;
+ Text = "~Unbesuchter Link" ;
+ Text [ English ] = "Unvisited link" ;
+ Text [ english_us ] = "Unvisited ~links" ;
+ Text [ italian ] = "Per il sito non ~visitato" ;
+ Text [ spanish ] = "Vínculos no v~isitados" ;
+ Text [ french ] = "Lien ~non visité" ;
+ Text [ dutch ] = "N~iet-bezochte Link" ;
+ Text [ swedish ] = "~Obesökt länk" ;
+ Text [ danish ] = "Ubesøgt hyperlink" ;
+ Text [ portuguese_brazilian ] = "~Unbesuchte Links" ;
+ Text [ portuguese ] = "~Link não visitado" ;
+ Text[ chinese_simplified ] = "ÉÐδ·ÃÎʹýµÄÁ´½Ó(~L)";
+ Text[ russian ] = "Íåïîñåùåííûå ññûëêè";
+ Text[ polish ] = "Nie odwiedzone ³¹cze";
+ Text[ japanese ] = "ŠJ‚¢‚½‚±‚Æ‚Ì‚È‚¢Øݸ(~L)";
+ Text[ chinese_traditional ] = "¥¼³X°Ý¹Lªº±¶®|(~L)";
+ Text[ arabic ] = "ÇÑÊÈÇØ áã íÓÈÞ ÒíÇÑÊå";
+ Text[ dutch ] = "N~iet-bezochte Link";
+ Text[ chinese_simplified ] = "ÉÐδ·ÃÎʹýµÄÁ´½Ó(~L)";
+ Text[ greek ] = "ÓõíäÝóåéò ÷ùñßò åðßóêåøç";
+ Text[ korean ] = "¹æ¹®ÇÏÁö ¾ÊÀº ¸µÅ©(~L)";
+ Text[ turkish ] = "Kullanýl~mamýþ baðlantý";
+ };
+ ListBox LB_NOT_VISITED
+ {
+ Pos = MAP_APPFONT ( 78 , 105 + 2 * LBOX_DIFF ) ;
+ Size = MAP_APPFONT ( 104 , 60 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ Group = TRUE ;
+ };
+};
diff --git a/sw/source/ui/chrdlg/chrdlg.src b/sw/source/ui/chrdlg/chrdlg.src
new file mode 100644
index 000000000000..b21061744a8f
--- /dev/null
+++ b/sw/source/ui/chrdlg/chrdlg.src
@@ -0,0 +1,169 @@
+/*************************************************************************
+ *
+ * $RCSfile: chrdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "chrdlg.hrc"
+String STR_TEXTCOLL_HEADER
+{
+ TEXT = " (Absatzvorlage: " ;
+ TEXT [ English ] = " (Paragraph Style: " ;
+ TEXT [ norwegian ] = " (Avsnittsmal: " ;
+ TEXT [ italian ] = "(Modello di paragrafo: " ;
+ TEXT [ portuguese_brazilian ] = "(Estilo de Parágrafo: " ;
+ TEXT [ portuguese ] = "(Estilo de parágrafo: " ;
+ TEXT [ finnish ] = " (Kappaletyyli: " ;
+ TEXT [ danish ] = "(Afsnitstypografi: " ;
+ TEXT [ french ] = "(Style de paragraphe : " ;
+ TEXT [ swedish ] = "(Styckeformatmall: " ;
+ TEXT [ dutch ] = "(Alinea-opmaakprofiel: " ;
+ TEXT [ spanish ] = "(Estilo de párrafo: " ;
+ TEXT [ english_us ] = "(Paragraph Style: " ;
+ TEXT[ chinese_simplified ] = "(¶ÎÂäÑùʽ£º ";
+ TEXT[ russian ] = "(Ñòèëü àáçàöà: ";
+ TEXT[ polish ] = "(Styl akapitu: ";
+ TEXT[ japanese ] = "(’i—Ž½À²Ù: ";
+ TEXT[ chinese_traditional ] = "(¬q¸¨¼Ë¦¡¡G ";
+ TEXT[ arabic ] = "(äãØ ÝÞÑÉ: ";
+ TEXT[ greek ] = "(Ðñüôõðï ðáñáãñÜöïõ: ";
+ TEXT[ korean ] = "(´Ü¶ô À¯Çü: ";
+ TEXT[ turkish ] = "(Paragraf biçimi: ";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_PAGEFMT_HEADER
+{
+ TEXT = " (Seitenvorlage: " ;
+ TEXT [ English ] = " (Page Style: " ;
+ TEXT [ norwegian ] = " (Sidemal: " ;
+ TEXT [ italian ] = "(Modello di pagina: " ;
+ TEXT [ portuguese_brazilian ] = "(Estilo de 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 página: " ;
+ TEXT [ english_us ] = "(Page Style: " ;
+ TEXT[ chinese_simplified ] = "(Ò³ÃæÑùʽ£º ";
+ TEXT[ russian ] = "(Ñòèëü ñòðàíèöû: ";
+ TEXT[ polish ] = "(Styl strony: ";
+ TEXT[ japanese ] = "(Íß°¼Þ½À²Ù: ";
+ TEXT[ chinese_traditional ] = "(­¶­±¼Ë¦¡¡G ";
+ TEXT[ arabic ] = "(ÞÇáÈ ÇáÕÝÍÉ: ";
+ TEXT[ greek ] = "(Ðñüôõðï óåëßäáò: ";
+ TEXT[ korean ] = "(ÆäÀÌÁö À¯Çü: ";
+ TEXT[ turkish ] = "(Sayfa biçimi: ";
+ TEXT[ language_user1 ] = " ";
+};
+String SW_STR_NONE
+{
+ Text = "[Keine]" ;
+ Text [ English ] = "[None]" ;
+ Text [ norwegian ] = "[Ingen]" ;
+ Text [ italian ] = "[Nessuno]" ;
+ Text [ portuguese_brazilian ] = "[Nenhum]" ;
+ Text [ portuguese ] = "[Nenhum]" ;
+ Text [ finnish ] = "[Ei ole]" ;
+ Text [ danish ] = "[Ingen]" ;
+ Text [ french ] = "[Aucun(e)]" ;
+ Text [ swedish ] = "[Ingen]" ;
+ Text [ dutch ] = "[Geen]" ;
+ Text [ spanish ] = "[Ninguno]" ;
+ Text [ english_us ] = "[None]" ;
+ Text[ chinese_simplified ] = "[ÎÞ]";
+ Text[ russian ] = "[Áåç]";
+ Text[ polish ] = "[brak]";
+ Text[ japanese ] = "[‚È‚µ]";
+ Text[ language_user1 ] = "èë? áå";
+ Text[ chinese_traditional ] = "[µL]";
+ Text[ arabic ] = "[ÈÏæä]";
+ Text[ greek ] = "[ÊáíÝíá]";
+ Text[ korean ] = "[¾øÀ½]";
+ Text[ turkish ] = "[yok]";
+};
+InfoBox MSG_ILLEGAL_PAGENUM
+{
+ BUTTONS = WB_OK ;
+ DEFBUTTON = WB_DEF_OK ;
+ /* ### ACHTUNG: Neuer Text in Resource? Seitennummer kann nicht gesetzt werden. Auf linken Seiten dürfen nur gerade Seitenzahlen, auf rechten Seiten nur ungerade Seitenzahlen verwendet werden. : Seitennummer kann nicht gesetzt werden. Auf linken Seiten d³rfen nur gerade Seitenzahlen, auf rechten Seiten nur ungerade Seitenzahlen verwendet werden. */
+ MESSAGE = "Seitennummer kann nicht gesetzt werden. Auf linken Seiten dürfen nur gerade Seitenzahlen, auf rechten Seiten nur ungerade Seitenzahlen verwendet werden." ;
+ MESSAGE [ English ] = "Page number can't be applied to the actual page. Even numbers can be used on left pages, odd numbers on right pages." ;
+ MESSAGE [ norwegian ] = "Sidenummer kan ikke brukes på den aktuelle siden. Partall kan brukes på venstre sider, oddetall på høyre sider." ;
+ MESSAGE [ italian ] = "Impossibile usare il numero pagina alla pagina corrente. I numeri pari possono essere usati sulle pagine sinistre, i numeri dispari sulle pagine destre." ;
+ MESSAGE [ portuguese_brazilian ] = "Número de página não pode ser aplicado à página atual. Números pares podem ser utilizados em páginas esquerdas, números ímpares em páginas direitas." ;
+ MESSAGE [ portuguese ] = "Número de página não pode ser atribuído à página actual. Nas páginas da esquerda podem apenas ser usados números pares e nas páginas da direita números ímpares." ;
+ MESSAGE [ finnish ] = "Sivunumeroa ei voi lisätä sivulle. Parillista numeroa käytetään vasemmalla sivulla ja paritonta oikealla sivulla." ;
+ MESSAGE [ danish ] = "Sidetallet kan ikke indsættes. Der må kun bruges lige sidetal på venstre side og ulige sidetal på højre sider." ;
+ MESSAGE [ french ] = "Le numéro de page ne peut être assigné à cette page. Les nombres pairs ne peuvent être utilisés que sur des pages de gauche, les nombres impairs que sur celles de droite." ;
+ MESSAGE [ swedish ] = "Sidnumret kan inte sättas in på den här sidan. På vänstersidor får bara jämna nummer användas, på högersidor bara udda nummer." ;
+ MESSAGE [ dutch ] = "Dit paginanummer kan niet aan de actiuele pagina worden toegewezen. Linkerpagina's krijgen even nummers, rechterpagina's oneven nummers." ;
+ MESSAGE [ spanish ] = "El número de la página no se puede colocar. En páginas izquierdas se pueden utilizar solo números pares, en las derechas solo impares." ;
+ MESSAGE [ english_us ] = "Page numbers cannot be applied to the current page. Even numbers can be used on left pages, odd numbers on right pages." ;
+ MESSAGE[ chinese_simplified ] = "ÎÞ·¨É趨ҳÂë¡£ÔÚ×óÒ³ÉÏÖ»ÔÊÐí²ÉÓÃżÊýÒ³Â룬ÔÚÓÒÒ³ÉÏÖ»ÔÊÐí²ÉÓÃÆæÊýÒ³Âë¡£";
+ MESSAGE[ russian ] = "Íîìåðà ñòðàíèö ïðîñòàâèòü íåâîçìîæíî. Ñ ëåâîé ñòîðîíû ìîãóò áûòü ïðîñòàâëåíû òîëüêî ÷åòíûå, ñ ïðàâîé - òîëüêî íå÷åòíûå öèôðû.";
+ MESSAGE[ polish ] = "Nie mo¿na nanieœæ numeru stron. Na lewych stronach mo¿na nanieœæ tylko parzyste numery stron, na prawych tylko nieparzyste numery stron.";
+ MESSAGE[ japanese ] = "Íß°¼Þ”Ô†‚ª“K—p‚Å‚«‚Ü‚¹‚ñB¶Íß°¼Þ‚É‚Í‹ô”¤‰EÍß°¼Þ‚ɂ͊ðŽg—p‚µ‚ĉº‚³‚¢B";
+ MESSAGE[ chinese_traditional ] = "µLªk³]©w­¶½X¡C¦b¥ª­¶¥u¯à°÷³]©w°¸¼Æ¡A¦b¥k­¶¥u¯à³]©w©_¼Æ¡C";
+ MESSAGE[ arabic ] = "áÇ íãßä ÅÏÑÇÌ ÃÑÞÇã ÇáÕÝÍÇÊ Ýí ÇáÕÝÍÉ ÇáÍÇáíÉ. Úáì ÇáÕÝÍÇÊ ÇáíÓÑì¡ íÓãÍ ÈÇÓÊÎÏÇã ÃÑÞÇã ÒæÌíÉ ÝÞØ¡ æÚáì ÇáÕÝÍÇÊ Çáíãäì¡ ÃÑÞÇã ÝÑÏíÉ ÝÞØ.";
+ MESSAGE[ greek ] = "Äåí åßíáé äõíáôüí íá ôïðïèåôçèåß ï áñéèìüò óåëßäáò. Óå áñéóôåñÝò óåëßäåò åðéôñÝðåôáé ç ôïðïèÝôçóç ìüíï æõãþí áñéèìþí óåëßäáò, åíþ óå äåîéÝò óåëßäåò ìüíï áñôßùí áñéèìþí.";
+ MESSAGE[ korean ] = "ÆäÀÌÁö ¹øÈ£´Â ÇöÀç ÆäÀÌÁö¿¡ Àû¿ëµÇÁö ¾Ê½À´Ï´Ù. ¦¼ö´Â ¿ÞÂÊ ÆäÀÌÁö¿¡ »ç¿ëµÇ°í,Ȧ¼ö´Â ¿À¸¥ÂÊ ÆäÀÌÁö¿¡ »ç¿ëµË´Ï´Ù.";
+ MESSAGE[ turkish ] = "Sayfa numarasý verilemiyor. Sol sayfalarda yalnýzca çift sayfa numaralarý, sað sayfalarda ise yalnýzca tek sayfa numaralarý kullanýlabilir.";
+ MESSAGE[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/chrdlg/drpcps.cxx b/sw/source/ui/chrdlg/drpcps.cxx
new file mode 100644
index 000000000000..ea8b4bfeee2e
--- /dev/null
+++ b/sw/source/ui/chrdlg/drpcps.cxx
@@ -0,0 +1,744 @@
+/*************************************************************************
+ *
+ * $RCSfile: drpcps.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <hintids.hxx>
+#define _SVSTDARR_STRINGSDTOR
+#define _SVSTDARR_STRINGSISORTDTOR
+#include <svtools/svstdarr.hxx>
+
+#include "cmdid.h"
+#include "swmodule.hxx"
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "globals.hrc"
+
+
+#ifndef _METRIC_HXX //autogen
+#include <vcl/metric.hxx>
+#endif
+
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SFX_OBJSH_HXX //autogen
+#include <sfx2/objsh.hxx>
+#endif
+
+#include "charatr.hxx"
+#include "viewopt.hxx"
+#include "drpcps.hxx"
+#include "paratr.hxx"
+#include "uitool.hxx"
+#include "charfmt.hxx"
+
+#include "chrdlg.hrc"
+#include "drpcps.hrc"
+
+// Globals ******************************************************************
+
+static USHORT __FAR_DATA aPageRg[] = {
+ RES_PARATR_DROP, RES_PARATR_DROP,
+ 0
+};
+
+
+
+// class SwDropCapsPict *****************************************************
+
+class SwDropCapsPict : public Control
+{
+ String aText;
+ BYTE nLines;
+ USHORT nDistance;
+
+ virtual void Paint(const Rectangle &rRect);
+
+public:
+
+ SwDropCapsPict(Window *pParent, const ResId &rResId) : Control(pParent, rResId) {}
+ ~SwDropCapsPict();
+
+ void SetText (const String &rT) {aText = rT; Invalidate();}
+ void SetLines ( BYTE nL) {nLines = nL; Invalidate();}
+ void SetDistance( USHORT nD) {nDistance = nD; Invalidate();}
+};
+
+
+/****************************************************************************
+Default-String aus Zeichenanzahl erzeugen (A, AB, ABC, ...)
+****************************************************************************/
+
+
+String GetDefaultString(USHORT nChars)
+{
+ String aStr;
+ for (USHORT i = 0; i < nChars; i++)
+ aStr += String((char) (i + 65));
+ return aStr;
+}
+
+/****************************************************************************
+Pict: Dtor
+****************************************************************************/
+
+
+ SwDropCapsPict::~SwDropCapsPict()
+{
+}
+
+/****************************************************************************
+Pict: Paint-Overload
+****************************************************************************/
+
+#define LINES 10
+#define BORDER 2
+
+
+void SwDropCapsPict::Paint(const Rectangle &rRect)
+{
+ if (!IsVisible())
+ return;
+
+ SetMapMode(MapMode(MAP_PIXEL));
+ SetLineColor();
+
+ // Weisser Hintergrund
+ SetFillColor(Color(COL_WHITE));
+ DrawRect(Rectangle(Point(0, 0), GetOutputSizePixel()));
+ SetClipRegion(Region(Rectangle(
+ Point(BORDER, BORDER),
+ Size (GetOutputSizePixel().Width () - 2 * BORDER,
+ GetOutputSizePixel().Height() - 2 * BORDER))));
+
+ // Graue Linien
+ long nTotLineH = (GetOutputSizePixel().Height() - 2 * BORDER) / LINES,
+ nLineH = nTotLineH - 2;
+
+ ASSERT(nLineH > 0, "So klein lassen wir uns nicht machen");
+ long nY0 = (GetOutputSizePixel().Height() - (LINES * nTotLineH)) / 2;
+ SetFillColor(Color(COL_LIGHTGRAY));
+ for (USHORT i = 0; i < LINES; i++)
+ DrawRect(Rectangle(Point(BORDER, nY0 + i * nTotLineH), Size(GetOutputSizePixel().Width() - 2 * BORDER, nLineH)));
+
+ // Text berechnen
+ Font aFont;
+ {
+ SwDropCapsPage *pPage = (SwDropCapsPage *) GetParent();
+ if (!pPage->aTemplateBox.GetSelectEntryPos())
+ {
+ // Font an Absatzanfang erfragen
+ pPage->rSh.SttCrsrMove();
+ pPage->rSh.Push();
+ pPage->rSh.ClearMark();
+ pPage->rSh.MovePara(fnParaCurr,fnParaStart);
+
+ SfxItemSet aSet(pPage->rSh.GetAttrPool(), RES_CHRATR_FONT, RES_CHRATR_FONT);
+ pPage->rSh.GetAttr(aSet);
+ SvxFontItem aFmtFont((SvxFontItem &) aSet.Get(RES_CHRATR_FONT));
+
+ aFont.SetFamily (aFmtFont.GetFamily());
+ aFont.SetName (aFmtFont.GetFamilyName());
+ aFont.SetPitch (aFmtFont.GetPitch());
+ aFont.SetCharSet(aFmtFont.GetCharSet());
+
+ pPage->rSh.Pop(FALSE);
+ pPage->rSh.EndCrsrMove();
+ }
+ else
+ {
+ // Font an Zeichenvorlage erfragen
+ SwCharFmt *pFmt = pPage->rSh.GetCharStyle(
+ pPage->aTemplateBox.GetSelectEntry(),
+ SwWrtShell::GETSTYLE_CREATEANY );
+ ASSERT(pFmt, "Zeichenvorlage existiert nicht!");
+ const SvxFontItem &rFmtFont = pFmt->GetFont();
+
+ aFont.SetFamily (rFmtFont.GetFamily());
+ aFont.SetName (rFmtFont.GetFamilyName());
+ aFont.SetPitch (rFmtFont.GetPitch());
+ aFont.SetCharSet(rFmtFont.GetCharSet());
+ }
+ }
+
+ long nTextH = nLines * nTotLineH;
+ aFont.SetSize(Size(0, nTextH));
+ aFont.SetTransparent(TRUE);
+ SetFont(aFont);
+ USHORT nLeading = (USHORT) GetFontMetric().GetLeading();
+ aFont.SetSize(Size(0, aFont.GetSize().Height() + nLeading));
+ SetFont(aFont);
+
+ // Texthintergrund mit Abstand (240 twips ~ 1 Zeilenhoehe)
+
+ ULONG lDistance = nDistance;
+ USHORT nDistW = (USHORT) (ULONG) (((lDistance * 100) / 240) * nTotLineH) / 100;
+ SetFillColor(Color(COL_WHITE));
+ if(((SwDropCapsPage*)GetParent())->aDropCapsBox.IsChecked())
+ {
+ DrawRect(Rectangle(
+ Point(BORDER, nY0),
+ Size (GetTextWidth(aText) + nDistW, nTextH)));
+
+ // Text zeichnen
+ DrawText(Point(BORDER, nY0 - nLeading), aText);
+ }
+
+ SetClipRegion();
+}
+
+/****************************************************************************
+Dlg: Ctor
+****************************************************************************/
+
+
+SwDropCapsDlg::SwDropCapsDlg(Window *pParent, const SfxItemSet &rSet ) :
+
+ SfxSingleTabDialog(pParent, rSet, 0)
+
+{
+ SwDropCapsPage* pPage = (SwDropCapsPage*) SwDropCapsPage::Create(this, rSet);
+ pPage->SetFormat(FALSE);
+ SetTabPage(pPage);
+}
+
+/****************************************************************************
+Dlg: Dtor
+****************************************************************************/
+
+
+ SwDropCapsDlg::~SwDropCapsDlg()
+{
+}
+
+/****************************************************************************
+Page: Ctor
+****************************************************************************/
+
+
+SwDropCapsPage::SwDropCapsPage(Window *pParent, const SfxItemSet &rSet) :
+
+ SfxTabPage(pParent, SW_RES(TP_DROPCAPS), rSet),
+
+ aDropCapsBox (this, SW_RES(CB_SWITCH )),
+ aWholeWordCB (this, SW_RES(CB_WORD )),
+ aSwitchText (this, SW_RES(FT_DROPCAPS )),
+ aDropCapsField(this, SW_RES(FLD_DROPCAPS)),
+ aLinesText (this, SW_RES(TXT_LINES )),
+ aLinesField (this, SW_RES(FLD_LINES )),
+ aDistanceText (this, SW_RES(TXT_DISTANCE)),
+ aDistanceField(this, SW_RES(FLD_DISTANCE)),
+ aTextText (this, SW_RES(TXT_TEXT )),
+ aTextEdit (this, SW_RES(EDT_TEXT )),
+ aTemplateText (this, SW_RES(TXT_TEMPLATE)),
+ aTemplateBox (this, SW_RES(BOX_TEMPLATE)),
+ aSettingsGroup(this, SW_RES(GRP_SETTINGS)),
+ aPictBox (this, SW_RES(BOX_PICT )),
+ aContentBox (this, SW_RES(BOX_CONTENT )),
+ pPict (new SwDropCapsPict(this, SW_RES(CNT_PICT))),
+ bModified(FALSE),
+ bFormat(TRUE),
+ rSh(::GetActiveView()->GetWrtShell())
+{
+ FreeResource();
+ SetExchangeSupport();
+
+ USHORT nHtmlMode = ::GetHtmlMode((const SwDocShell*)SfxObjectShell::Current());
+ bHtmlMode = nHtmlMode & HTMLMODE_ON ? TRUE : FALSE;
+
+ //Im Vorlagendialog kann der Text nicht beeinflusst werden
+ aTextText.Enable( !bFormat );
+ aTextEdit.Enable( !bFormat );
+
+ // Metriken
+ SetMetric( aDistanceField, GetDfltMetric(bHtmlMode) );
+
+ // Handler installieren
+ Link aLk = LINK(this, SwDropCapsPage, ModifyHdl);
+ aDropCapsField.SetModifyHdl( aLk );
+ aLinesField .SetModifyHdl( aLk );
+ aDistanceField.SetModifyHdl( aLk );
+ aTextEdit .SetModifyHdl( aLk );
+ aDropCapsBox .SetClickHdl (LINK(this, SwDropCapsPage, ClickHdl ));
+ aTemplateBox .SetSelectHdl(LINK(this, SwDropCapsPage, SelectHdl));
+ aWholeWordCB .SetClickHdl (LINK(this, SwDropCapsPage, WholeWordHdl ));
+}
+
+/****************************************************************************
+Page: Dtor
+****************************************************************************/
+
+
+ SwDropCapsPage::~SwDropCapsPage()
+{
+ delete pPict;
+}
+
+
+int SwDropCapsPage::DeactivatePage(SfxItemSet * pSet)
+{
+ if ( pSet )
+ FillSet( *pSet );
+
+ return LEAVE_PAGE;
+}
+
+/****************************************************************************
+Page: Factory
+****************************************************************************/
+
+
+SfxTabPage* SwDropCapsPage::Create(Window *pParent,
+ const SfxItemSet &rSet)
+{
+ return new SwDropCapsPage(pParent, rSet);
+}
+
+/****************************************************************************
+Page: FillItemSet-Overload
+****************************************************************************/
+
+
+BOOL SwDropCapsPage::FillItemSet(SfxItemSet &rSet)
+{
+ if(bModified)
+ FillSet(rSet);
+ return bModified;
+}
+
+/****************************************************************************
+Page: Reset-Overload
+****************************************************************************/
+
+
+void SwDropCapsPage::Reset(const SfxItemSet &rSet)
+{
+ // Zeichen, Zeilen, Abstand und Text
+ SwFmtDrop aFmtDrop((SwFmtDrop &) rSet.Get(RES_PARATR_DROP));
+ if (aFmtDrop.GetLines() > 1)
+ {
+ aDropCapsField.SetValue(aFmtDrop.GetChars());
+ aLinesField .SetValue(aFmtDrop.GetLines());
+ aDistanceField.SetValue(aDistanceField.Normalize(aFmtDrop.GetDistance()), FUNIT_TWIP);
+ aWholeWordCB .Check (aFmtDrop.GetWholeWord());
+ }
+ else
+ {
+ aDropCapsField.SetValue(1);
+ aLinesField .SetValue(3);
+ aDistanceField.SetValue(0);
+ }
+
+ // Preview
+ pPict->SetText(aTextEdit.GetText());
+ pPict->SetLines((BYTE )aLinesField.GetValue());
+ pPict->SetDistance((USHORT)aDistanceField.Denormalize(aDistanceField.GetValue(FUNIT_TWIP)));
+
+ ::FillCharStyleListBox(aTemplateBox, rSh.GetView().GetDocShell(), TRUE);
+
+ aTemplateBox.InsertEntry(SW_RESSTR(SW_STR_NONE), 0);
+ // Vorlage defaulten
+ aTemplateBox.SelectEntryPos(0);
+ if (aFmtDrop.GetCharFmt())
+ aTemplateBox.SelectEntry(aFmtDrop.GetCharFmt()->GetName());
+
+ // Controls enablen
+ aDropCapsBox.Check(aFmtDrop.GetLines() > 1);
+ const USHORT nVal = USHORT(aDropCapsField.GetValue());
+ if (bFormat)
+ aTextEdit.SetText(GetDefaultString(nVal));
+ else
+ {
+ aTextEdit.SetText(rSh.GetDropTxt(nVal));
+ aTextEdit.Enable();
+ aTextText.Enable();
+ }
+ ClickHdl(&aDropCapsBox);
+ bModified = FALSE;
+}
+
+/****************************************************************************
+Page: Click-Handler der CheckBox
+****************************************************************************/
+
+
+IMPL_LINK( SwDropCapsPage, ClickHdl, Button *, EMPTYARG )
+{
+ BOOL bChecked = aDropCapsBox.IsChecked();
+
+ aWholeWordCB .Enable( bChecked && !bHtmlMode );
+
+ aSwitchText.Enable( bChecked && !aWholeWordCB.IsChecked() );
+ aDropCapsField.Enable( bChecked && !aWholeWordCB.IsChecked() );
+ aLinesText .Enable( bChecked );
+ aLinesField .Enable( bChecked );
+ aDistanceText.Enable( bChecked );
+ aDistanceField.Enable( bChecked );
+ aTemplateText .Enable( bChecked );
+ aTemplateBox .Enable( bChecked );
+ aTextEdit .Enable( bChecked && !bFormat );
+ aTextText .Enable( bChecked && !bFormat );
+
+ if ( bChecked )
+ {
+ ModifyHdl(&aDropCapsField);
+ aDropCapsField.GrabFocus();
+ }
+ else
+ pPict->SetText(aEmptyStr);
+
+ bModified = TRUE;
+
+ return 0;
+}
+
+/****************************************************************************
+Page: Click-Handler der CheckBox
+****************************************************************************/
+
+
+IMPL_LINK( SwDropCapsPage, WholeWordHdl, CheckBox *, EMPTYARG )
+{
+ aDropCapsField.Enable( !aWholeWordCB.IsChecked() );
+
+ ModifyHdl(&aDropCapsField);
+
+ bModified = TRUE;
+
+ return 0;
+}
+
+/****************************************************************************
+Page: Modify-Handler der SpinFields
+****************************************************************************/
+
+
+IMPL_LINK( SwDropCapsPage, ModifyHdl, Edit *, pEdit )
+{
+ String sPreview;
+
+ // Ggf. Text setzen
+ if (pEdit == &aDropCapsField)
+ {
+ USHORT nVal;
+ BOOL bSetText = FALSE;
+
+ if (!aWholeWordCB.IsChecked())
+ nVal = (USHORT)aDropCapsField.GetValue();
+ else
+ nVal = (USHORT)aDropCapsField.GetMax();
+
+ if (bFormat || !rSh.GetDropTxt(1).Len())
+ sPreview = GetDefaultString(nVal);
+ else
+ {
+ bSetText = TRUE;
+ sPreview = rSh.GetDropTxt(nVal);
+ }
+
+ String sEdit(aTextEdit.GetText());
+
+ if (sEdit.Len() && sPreview.CompareTo(sEdit, sEdit.Len()) != COMPARE_EQUAL)
+ {
+ sPreview = sEdit.Copy(0, sPreview.Len());
+ bSetText = FALSE;
+ }
+
+ if (aWholeWordCB.IsChecked()) // Nur erstes Wort anzeigen
+ {
+ USHORT nPos = sPreview.Search(' ');
+
+ if (nPos != STRING_NOTFOUND)
+ sPreview.Erase(nPos);
+ }
+
+ if (bSetText)
+ aTextEdit.SetText(sPreview);
+ }
+ else if (pEdit == &aTextEdit) // Ggf. Anzahl setzen
+ {
+ USHORT nTmp = aTextEdit.GetText().Len();
+ aDropCapsField.SetValue(Max((USHORT)1, nTmp));
+
+ sPreview = aTextEdit.GetText().Copy(0, nTmp);
+ }
+
+ // Bild anpassen
+ if (pEdit == &aDropCapsField || pEdit == &aTextEdit)
+ pPict->SetText (sPreview);
+ else if (pEdit == &aLinesField)
+ pPict->SetLines((BYTE)aLinesField.GetValue());
+ else
+ pPict->SetDistance((USHORT)aDistanceField.Denormalize(aDistanceField.GetValue(FUNIT_TWIP)));
+
+ bModified = TRUE;
+
+ return 0;
+}
+
+/****************************************************************************
+Page: Select-Handler der Template-Box.
+*****************************************************************************/
+
+
+IMPL_LINK_INLINE_START( SwDropCapsPage, SelectHdl, ListBox *, EMPTYARG )
+{
+ pPict->Invalidate();
+ bModified = TRUE;
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwDropCapsPage, SelectHdl, ListBox *, EMPTYARG )
+
+
+USHORT* SwDropCapsPage::GetRanges()
+{
+ return aPageRg;
+}
+
+
+void SwDropCapsPage::FillSet( SfxItemSet &rSet )
+{
+ if(bModified)
+ {
+ SwFmtDrop aFmt;
+
+ BOOL bOn = aDropCapsBox.IsChecked();
+ if(bOn)
+ {
+ // Anzahl, Zeilen, Abstand
+ aFmt.GetChars() = (BYTE) aDropCapsField.GetValue();
+ aFmt.GetLines() = (BYTE) aLinesField.GetValue();
+ aFmt.GetDistance() = (USHORT) aDistanceField.Denormalize(aDistanceField.GetValue(FUNIT_TWIP));
+ aFmt.GetWholeWord() = aWholeWordCB.IsChecked();
+
+ // Vorlage
+ if (aTemplateBox.GetSelectEntryPos())
+ aFmt.SetCharFmt(rSh.GetCharStyle(aTemplateBox.GetSelectEntry()));
+ }
+ else
+ {
+ aFmt.GetChars() = 1;
+ aFmt.GetLines() = 1;
+ aFmt.GetDistance() = 0;
+ }
+
+ // Attribute setzen
+ const SfxPoolItem* pOldItem;
+ if(0 == (pOldItem = GetOldItem( rSet, FN_FORMAT_DROPCAPS )) ||
+ aFmt != *pOldItem )
+ rSet.Put(aFmt);
+
+ // Harte Textformatierung
+ // Bug 24974: In Gestalter/Vorlagenkatoplog macht das keinen Sinn!!
+ if( !bFormat && aDropCapsBox.IsChecked() )
+ {
+ String sText(aTextEdit.GetText());
+
+ if (!aWholeWordCB.IsChecked())
+ sText.Erase(aDropCapsField.GetValue());
+
+ SfxStringItem aStr(FN_PARAM_1, sText);
+ rSet.Put( aStr );
+ }
+ }
+}
+
+
+/*--------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.100 2000/09/18 16:05:14 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.99 2000/08/25 10:13:51 os
+ style listbox sorted
+
+ Revision 1.98 2000/07/03 10:33:17 os
+ #72742# resource warnings corrected
+
+ Revision 1.97 2000/07/03 08:04:44 os
+ #72742# resource warnings corrected
+
+ Revision 1.96 2000/04/20 12:54:31 os
+ GetName() returns String&
+
+ Revision 1.95 2000/04/11 08:03:22 os
+ UNICODE
+
+ Revision 1.94 2000/03/03 15:16:58 os
+ StarView remainders removed
+
+ Revision 1.93 2000/02/11 14:43:37 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.92 1999/11/16 17:11:59 os
+ use FillCharStyleListBox
+
+ Revision 1.91 1998/09/08 14:49:16 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+
+ Rev 1.90 08 Sep 1998 16:49:16 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.89 03 Apr 1998 17:06:10 OM
+ #49189 Korrekte Initialenvorschau
+
+ Rev 1.88 03 Apr 1998 16:59:36 OM
+ #49189 Korrekte Initialenvorschau
+
+ Rev 1.87 20 Mar 1998 17:43:28 OM
+ Ganzes Wort als Initialie
+
+ Rev 1.86 12 Sep 1997 10:35:36 OS
+ ITEMID_* definiert
+
+ Rev 1.85 09 Sep 1997 13:33:42 OS
+ lokale class
+
+ Rev 1.84 04 Sep 1997 17:16:22 MA
+ includes
+
+ Rev 1.83 01 Sep 1997 13:25:16 OS
+ DLL-Umstellung
+
+ Rev 1.82 15 Aug 1997 12:12:34 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.81 09 Aug 1997 13:01:26 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.80 08 Aug 1997 17:29:40 OM
+ Headerfile-Umstellung
+
+ Rev 1.79 09 Jul 1997 17:20:50 HJS
+ includes
+
+ Rev 1.78 24 Feb 1997 17:19:44 OS
+ #36936# -> keine PoolId benutzen
+
+ Rev 1.77 19 Feb 1997 19:11:54 MA
+ fix: DropCap, Text per Item
+
+ Rev 1.76 11 Feb 1997 16:35:04 OS
+ Vorlagen in SvStringsISortDtor sortieren
+
+ Rev 1.75 11 Dec 1996 15:46:50 JP
+ neu: holen der HTML-CharVorlagen
+
+ Rev 1.74 11 Nov 1996 09:16:38 MA
+ ResMgr
+
+ Rev 1.73 30 Oct 1996 08:12:10 MA
+ includes
+
+ Rev 1.72 29 Oct 1996 17:36:42 HJS
+ includes
+
+ Rev 1.71 24 Oct 1996 17:07:14 JP
+ Optimierung: Find...ByName
+
+ Rev 1.70 23 Oct 1996 13:49:12 JP
+ SVMEM -> SVSTDARR Umstellung
+
+ Rev 1.69 02 Oct 1996 08:36:14 MA
+ Umstellung Enable/Disable
+
+ Rev 1.68 28 Aug 1996 08:59:10 OS
+ includes
+
+ Rev 1.67 25 Jun 1996 13:57:34 MA
+ atrpafnchxx entfernt
+
+ Rev 1.66 04 Apr 1996 13:38:54 OS
+ Bug 26699: neue Methode FillSet, die keine Aenderungen an der Shell vornimmt
+
+ Rev 1.65 22 Feb 1996 08:28:36 OS
+ Text beim Ausschalten zuruecksetzen
+
+ Rev 1.64 21 Feb 1996 12:41:44 OS
+ Dialog verschoenert, disable ist nicht mehr gleichbedeutend mit Inhalt loeschen
+
+ Rev 1.63 06 Feb 1996 15:18:40 JP
+ Link Umstellung 305
+
+ Rev 1.62 30 Jan 1996 22:52:14 JP
+ Bug #24974#: DropCaps-Text nie bei Vorlagen austauschen
+
+ Rev 1.61 23 Jan 1996 11:27:38 OS
+ richtige Reaktion auf Standard-Button im Formatdialog
+
+ Rev 1.60 28 Nov 1995 21:15:16 JP
+ UiSystem-Klasse aufgehoben, in initui/swtype aufgeteilt
+
+--------------------------------------------------*/
+
+
diff --git a/sw/source/ui/chrdlg/drpcps.hrc b/sw/source/ui/chrdlg/drpcps.hrc
new file mode 100644
index 000000000000..19b00fc6c305
--- /dev/null
+++ b/sw/source/ui/chrdlg/drpcps.hrc
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: drpcps.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DRPCPS_HRC
+#define _DRPCPS_HRC
+
+// #define ******************************************************************
+
+#define FT_DROPCAPS 1
+#define FLD_DROPCAPS 2
+#define TXT_LINES 3
+#define FLD_LINES 4
+#define TXT_DISTANCE 5
+#define FLD_DISTANCE 6
+#define CNT_PICT 7
+#define TXT_TEXT 8
+#define EDT_TEXT 9
+#define TXT_TEMPLATE 10
+#define BOX_TEMPLATE 11
+#define GRP_SETTINGS 12
+#define CB_SWITCH 13
+#define BOX_PICT 14
+#define BOX_CONTENT 15
+#define CB_WORD 16
+
+#endif
+
+// ********************************************************************** EOF
diff --git a/sw/source/ui/chrdlg/drpcps.src b/sw/source/ui/chrdlg/drpcps.src
new file mode 100644
index 000000000000..c555432b45f3
--- /dev/null
+++ b/sw/source/ui/chrdlg/drpcps.src
@@ -0,0 +1,493 @@
+/*************************************************************************
+ *
+ * $RCSfile: drpcps.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ******************************************************************
+
+ // #include *****************************************************************
+#include "globals.hrc"
+#include "chrdlg.hrc"
+#include "drpcps.hrc"
+#include "helpid.h"
+ // TabDialog ****************************************************************
+TabDialog DLG_DROPCAPS
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Initialen" ;
+ Text [ English ] = "Drop Caps" ;
+ Text [ norwegian ] = "Drop Caps" ;
+ Text [ italian ] = "Capolettera" ;
+ Text [ portuguese_brazilian ] = "Capitulares descidas" ;
+ Text [ portuguese ] = "Iniciais" ;
+ Text [ finnish ] = "Anfangit" ;
+ Text [ danish ] = "Initialer" ;
+ Text [ french ] = "Lettrines" ;
+ Text [ swedish ] = "Anfangsbokstäver" ;
+ Text [ dutch ] = "Initialen" ;
+ Text [ spanish ] = "Iniciales" ;
+ Text [ english_us ] = "Drop Caps" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_DROPCAPS ;
+ Text = "Initialen" ;
+ Text [ ENGLISH ] = "Drop Caps" ;
+ Text [ norwegian ] = "Drop Caps" ;
+ Text [ italian ] = "Capolettera" ;
+ Text [ portuguese_brazilian ] = "Capitulares descidas" ;
+ Text [ portuguese ] = "Iniciais" ;
+ Text [ finnish ] = "Anfangit" ;
+ Text [ danish ] = "Initialer" ;
+ Text [ french ] = "Lettrines" ;
+ Text [ swedish ] = "Anfangsbokstäver" ;
+ Text [ dutch ] = "Initialen" ;
+ Text [ spanish ] = "Iniciales" ;
+ Text [ english_us ] = "Drop Caps" ;
+ PageResID = TP_DROPCAPS ;
+ Text[ chinese_simplified ] = "×ÖÊ×´óд";
+ Text[ russian ] = "Èíèöèàëû";
+ Text[ polish ] = "Inicja³y";
+ Text[ japanese ] = "ÄÞÛ¯Ìß·¬¯Ìß";
+ Text[ chinese_traditional ] = "¦r­º¤j¼g";
+ Text[ arabic ] = "ÇáÃÍÑÝ ÇáÇÓÊåáÇáíÉ";
+ Text[ greek ] = "Áñ÷éãñÜììáôá";
+ Text[ korean ] = "´Ü¶ô ù¹®ÀÚ Àå½Ä";
+ Text[ turkish ] = "Baþharfler";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "Æðʼ´óд×Öĸ";
+ Text[ russian ] = "Èíèöèàëû";
+ Text[ polish ] = "Inicja³y";
+ Text[ japanese ] = "ÄÞÛ¯Ìß·¬¯Ìß";
+ Text[ chinese_traditional ] = "¤j¼g¦r¥À";
+ Text[ arabic ] = "ÇáÃÍÑÝ ÇáÇÓÊåáÇáíÉ";
+ Text[ greek ] = "Áñ÷éãñÜììáôá";
+ Text[ korean ] = "´Ü¶ô ù¹®ÀÚ Àå½Ä";
+ Text[ turkish ] = "Baþharfler";
+ Text[ language_user1 ] = " ";
+};
+ // TabPage ******************************************************************
+TabPage TP_DROPCAPS
+{
+ HelpID = HID_DROPCAPS ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ CheckBox CB_SWITCH
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "I~nitialen anzeigen" ;
+ Text [ English ] = "Show Drop Caps" ;
+ Text [ english_us ] = "Display drop caps" ;
+ Text [ italian ] = "Mostra capolettera" ;
+ Text [ spanish ] = "Mostrar iniciales" ;
+ Text [ french ] = "~Première(s) lettre(s)" ;
+ Text [ dutch ] = "I~nitialen weergeven" ;
+ Text [ swedish ] = "Visa anfangsbokstäver" ;
+ Text [ danish ] = "Vis initialer" ;
+ Text [ portuguese_brazilian ] = "Initialen anzeigen" ;
+ Text [ portuguese ] = "Mostrar i~niciais" ;
+ Text[ chinese_simplified ] = "ÏÔʾ´óдÊ××Öĸ";
+ Text[ russian ] = "Ïîêàçàòü èíèöèàëû";
+ Text[ polish ] = "Po~ka¿ inicja³y";
+ Text[ japanese ] = "ÄÞÛ¯Ìß·¬¯Ìß‚Ì•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü¦r­º¤j¼g";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáÃÍÑÝ ÇáÇÓÊåáÇáíÉ";
+ Text[ greek ] = "ÅìöÜ~íéóç áñ÷éãñáììÜôùí";
+ Text[ korean ] = "´Ü¶ô ù¹®ÀÚ Àå½Ä Ç¥½Ã(~O)";
+ Text[ turkish ] = "Baþ harfleri vurgula";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_WORD
+ {
+ Pos = MAP_APPFONT ( 12 , 26 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Ganzes ~Wort" ;
+ Text [ English ] = "Whole Word" ;
+ Text [ english_us ] = "~Whole word" ;
+ Text [ portuguese_brazilian ] = "Ganzes ~Wort" ;
+ Text [ swedish ] = "Helt ~ord" ;
+ Text [ danish ] = "Helt ord" ;
+ Text [ italian ] = "~Parola intera" ;
+ Text [ spanish ] = "Toda la pala~bra" ;
+ Text [ french ] = "~Mot entier" ;
+ Text [ dutch ] = "Heel ~woord" ;
+ Text [ portuguese ] = "~Palavra inteira" ;
+ Text[ chinese_simplified ] = "Õû¸ö×Ö(~W)";
+ Text[ russian ] = "Âñå ñëîâî";
+ Text[ polish ] = "Ca³e s³owo";
+ Text[ japanese ] = "Œê‘S‘Ì(~W)";
+ Text[ chinese_traditional ] = "¾ã­Ó¦r(~W)";
+ Text[ arabic ] = "ßáãÉ ßÇãáÉ";
+ Text[ greek ] = "Ïëüêëçñç ëÝîç";
+ Text[ korean ] = "Àüü ´Ü¾î(~W)";
+ Text[ turkish ] = "Tam sözcük";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_DROPCAPS
+ {
+ Pos = MAP_APPFONT ( 12 , 39 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "Anzahl der Ze~ichen" ;
+ Text [ English ] = "Number of characters" ;
+ // Text[norwegian] = "~Drop Caps";
+ // Text[italian] = "~Annulla maiuscole.";
+ // Text[portuguese_brazilian] = "~Capitulares descidas";
+ // Text[portuguese] = "~Capitulares descidas";
+ // Text[finnish] = "~Anfangit";
+ // Text[danish] = "~Uncialer";
+ // Text[french] = "~Drop Caps";
+ // Text[swedish] = "~Anfanger";
+ // Text[dutch] = "~Initialen";
+ // Text[spanish] = "~Quitar mayúsculas";
+ // Text[english_us] = "~Drop Caps";
+ Text [ english_us ] = "Number of ~characters:" ;
+ Text [ italian ] = "Numero di caratteri" ;
+ Text [ spanish ] = "~Número de caracteres" ;
+ Text [ french ] = "~Largeur (en caractères)" ;
+ Text [ dutch ] = "~Aantal tekens" ;
+ Text [ swedish ] = "Antal te~cken" ;
+ Text [ danish ] = "Antal tegn" ;
+ Text [ portuguese_brazilian ] = "Anzahl der Ze~ichen" ;
+ Text [ portuguese ] = "Quantidade de ~caracteres" ;
+ Text[ chinese_simplified ] = "×Ö·ûÊýÄ¿(~C)";
+ Text[ russian ] = "Êîëè÷åñòâî çíàêîâ";
+ Text[ polish ] = "Liczba znaków";
+ Text[ japanese ] = "•¶Žš”(~C)";
+ Text[ chinese_traditional ] = "¦r¤¸¼Æ¥Ø(~C)";
+ Text[ arabic ] = "ÚÏÏ ÇáÃÍÑÝ";
+ Text[ greek ] = "Áñéèìüò ÷áñáêôÞñùí";
+ Text[ korean ] = "¹®ÀÚ ¼ö:(~C)";
+ Text[ turkish ] = "Karakter sayýsý";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField FLD_DROPCAPS
+ {
+ Border = TRUE ;
+ First = 1 ;
+ Last = 9 ;
+ Left = TRUE ;
+ Maximum = 9 ;
+ Minimum = 1 ;
+ Pos = MAP_APPFONT ( 89 , 37 ) ;
+ Repeat = TRUE ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ Spin = TRUE ;
+ TabStop = TRUE ;
+ };
+ FixedText TXT_LINES
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 53 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "Zei~len" ;
+ Text [ English ] = "~Lines" ;
+ Text [ norwegian ] = "~Linjer" ;
+ Text [ italian ] = "Righe" ;
+ Text [ portuguese_brazilian ] = "~Linhas" ;
+ Text [ portuguese ] = "~Linhas" ;
+ Text [ finnish ] = "~Viivat" ;
+ Text [ danish ] = "Rækker" ;
+ Text [ french ] = "~Hauteur (en lignes)" ;
+ Text [ swedish ] = "~Rader" ;
+ Text [ dutch ] = "~Regels" ;
+ Text [ spanish ] = "~Líneas" ;
+ Text [ english_us ] = "~Lines" ;
+ Text[ chinese_simplified ] = "ÐÐ(~L)";
+ Text[ russian ] = "Ñòðîêè";
+ Text[ polish ] = "Wiersze";
+ Text[ japanese ] = "s(~Lj";
+ Text[ chinese_traditional ] = "¦æ(~L)";
+ Text[ arabic ] = "ÃÓØÑ";
+ Text[ greek ] = "ÃñáììÝò";
+ Text[ korean ] = "¼±(~L)";
+ Text[ turkish ] = "Satýr adedi";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField FLD_LINES
+ {
+ Border = TRUE ;
+ First = 2 ;
+ Last = 9 ;
+ Left = TRUE ;
+ Maximum = 9 ;
+ Minimum = 2 ;
+ Pos = MAP_APPFONT ( 89 , 51 ) ;
+ Repeat = TRUE ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ Spin = TRUE ;
+ TabStop = TRUE ;
+ };
+ FixedText TXT_DISTANCE
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 67 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "A~bstand zum Text" ;
+ Text [ English ] = "D~istance" ;
+ Text [ norwegian ] = "A~vstand" ;
+ Text [ italian ] = "D~istanza dal testo" ;
+ Text [ portuguese_brazilian ] = "D~istância" ;
+ Text [ portuguese ] = "~Distância do texto" ;
+ Text [ finnish ] = "~Etäisyys" ;
+ Text [ danish ] = "Afstand til tekst" ;
+ Text [ french ] = "~Écart du texte" ;
+ Text [ swedish ] = "A~vstånd till text" ;
+ Text [ dutch ] = "A~fstand tot tekst" ;
+ Text [ spanish ] = "~Distancia hasta el texto" ;
+ Text [ english_us ] = "Space to text" ;
+ Text[ chinese_simplified ] = "ÖÁÕýÎĵľàÀë(~D)";
+ Text[ russian ] = "Ðàññòîÿíèå îò òåêñòà";
+ Text[ polish ] = "Odstêp do tekstu";
+ Text[ japanese ] = "÷½Ä‚Ü‚Å‚ÌŠÔŠu(~D)";
+ Text[ chinese_traditional ] = "¦Ü¤º¤åªº¶ZÖÃ(~D)";
+ Text[ arabic ] = "ÇáãÓÇÝÉ ÍÊì ÇáäÕ";
+ Text[ greek ] = "Á~ðüóôáóç áðü ôï êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®·ÎºÎÅÍÀÇ °Å¸®(~D)";
+ Text[ turkish ] = "Metne uzaklýk";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_DISTANCE
+ {
+ Border = TRUE ;
+ DecimalDigits = 2 ;
+ First = 0 ;
+ Last = 200 ;
+ Left = TRUE ;
+ Maximum = 200 ;
+ Minimum = 0 ;
+ Pos = MAP_APPFONT ( 89 , 65 ) ;
+ Repeat = TRUE ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ Spin = TRUE ;
+ SpinSize = 10 ;
+ TabStop = TRUE ;
+ Unit = FUNIT_CM ;
+ };
+ GroupBox GRP_SETTINGS
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 125 , 79 ) ;
+ Text = "Einstellungen" ;
+ Text [ English ] = "Options" ;
+ Text [ norwegian ] = "Options" ;
+ Text [ italian ] = "Impostazioni" ;
+ Text [ portuguese_brazilian ] = "Opções" ;
+ Text [ portuguese ] = "Predefinições" ;
+ Text [ finnish ] = "Määritykset" ;
+ Text [ danish ] = "Indstillinger" ;
+ Text [ french ] = "Paramètres" ;
+ Text [ swedish ] = "Inställningar" ;
+ Text [ dutch ] = "Instellingen" ;
+ Text [ spanish ] = "Configuración" ;
+ Text [ english_us ] = "Settings" ;
+ 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 ] = " ";
+ };
+ Control CNT_PICT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 143 , 14 ) ;
+ Size = MAP_APPFONT ( 105 , 62 ) ;
+ };
+ GroupBox BOX_PICT
+ {
+ Pos = MAP_APPFONT ( 137 , 3 ) ;
+ Size = MAP_APPFONT ( 117 , 79 ) ;
+ Text = "Beispiel" ;
+ Text [ English ] = "Example" ;
+ Text [ dutch ] = "Voorbeeld" ;
+ Text [ english_us ] = "Preview" ;
+ Text [ italian ] = "Esempio" ;
+ Text [ spanish ] = "Ejemplo" ;
+ Text [ french ] = "Exemple" ;
+ Text [ swedish ] = "Exempel" ;
+ Text [ danish ] = "Eksempel" ;
+ Text [ portuguese_brazilian ] = "Beispiel" ;
+ Text [ portuguese ] = "Exemplo" ;
+ Text[ chinese_simplified ] = "Ô¤ÊÓ";
+ Text[ russian ] = "Ïðèìåð";
+ Text[ polish ] = "Przyk³ad";
+ Text[ japanese ] = "—á";
+ Text[ chinese_traditional ] = "¹wÄý";
+ Text[ arabic ] = "äãæÐÌ";
+ Text[ greek ] = "ÐáñÜäåéãìá";
+ Text[ korean ] = "¹Ì¸®º¸±â";
+ Text[ turkish ] = "Önizleme";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText TXT_TEXT
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 96 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "Initialen~text" ;
+ Text [ English ] = "~Text" ;
+ Text [ norwegian ] = "~Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ portuguese_brazilian ] = "~Texto" ;
+ Text [ portuguese ] = "~Texto" ;
+ Text [ finnish ] = "~Teksti" ;
+ Text [ danish ] = "Initialtekst" ;
+ Text [ french ] = "~Autre caractère" ;
+ Text [ swedish ] = "Anfangs~text" ;
+ Text [ dutch ] = "~Initialentekst" ;
+ Text [ spanish ] = "Te~xto" ;
+ Text [ english_us ] = "~Text" ;
+ Text[ chinese_simplified ] = "´óд×Ö(~T)";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst z inicja³ami";
+ Text[ japanese ] = "ÄÞÛ¯Ìß·¬¯Ìß‚Ì÷½Ä(~T)";
+ Text[ chinese_traditional ] = "¤j¼g¦r(~T)";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®(~T)";
+ Text[ turkish ] = "Baþharf metni";
+ Text[ language_user1 ] = " ";
+ };
+ Edit EDT_TEXT
+ {
+ Border = TRUE ;
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 143 , 95 ) ;
+ Size = MAP_APPFONT ( 105 , 12 ) ;
+ TabStop = TRUE ;
+ MaxTextLength = 9 ;
+ };
+ FixedText TXT_TEMPLATE
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 111 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "Zeichen~vorlage" ;
+ Text [ English ] = "Character st~yle" ;
+ Text [ norwegian ] = "M~al" ;
+ Text [ italian ] = "Modello di carattere" ;
+ Text [ portuguese_brazilian ] = "Es~tilo" ;
+ Text [ portuguese ] = "Es~tilo de caracteres" ;
+ Text [ finnish ] = "~Tyyli" ;
+ Text [ danish ] = "Tegntypografi" ;
+ Text [ french ] = "~Style de caractères" ;
+ Text [ swedish ] = "Tecken~formatmall" ;
+ Text [ dutch ] = "~Tekenopmaakprofiel" ;
+ Text [ spanish ] = "E~stilo de carácter" ;
+ Text [ english_us ] = "Character St~yle" ;
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ(~Y)";
+ Text[ russian ] = "Ñòèëü òåêñòà";
+ Text[ polish ] = "Styl znaku";
+ Text[ japanese ] = "•¶Žš½À²Ù(~Y)";
+ Text[ chinese_traditional ] = "¦r¤¸¼Ë¦¡(~Y)";
+ Text[ arabic ] = "äãØ ÇáÃÍÑÝ";
+ Text[ greek ] = "Óôõë ÷áñáêôÞñùí";
+ Text[ korean ] = "¹®ÀÚ À¯Çü(~Y)";
+ Text[ turkish ] = "Karakter ~biçimi";
+ Text[ language_user1 ] = "All \"Vorlage\"/Styles are always written with capital S. 10.5.00EM";
+ };
+ ListBox BOX_TEMPLATE
+ {
+ Border = TRUE ;
+ DropDown = TRUE ;
+ Pos = MAP_APPFONT ( 143 , 110 ) ;
+ Size = MAP_APPFONT ( 105 , 61 ) ;
+ TabStop = TRUE ;
+ };
+ GroupBox BOX_CONTENT
+ {
+ Pos = MAP_APPFONT ( 6 , 85 ) ;
+ Size = MAP_APPFONT ( 248 , 44 ) ;
+ Text = "Inhalt" ;
+ Text [ English ] = "Content" ;
+ Text [ english_us ] = "Contents" ;
+ Text [ italian ] = "Contenuto" ;
+ Text [ spanish ] = "Contenido" ;
+ Text [ french ] = "Contenu" ;
+ Text [ dutch ] = "Inhoud" ;
+ Text [ swedish ] = "Innehåll" ;
+ Text [ danish ] = "Indhold" ;
+ Text [ portuguese_brazilian ] = "Inhalt" ;
+ Text [ portuguese ] = "Conteúdo" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝ";
+ Text[ russian ] = "Ñîäåðæèìîå";
+ Text[ polish ] = "ZawartoϾ";
+ Text[ japanese ] = "“à—e";
+ Text[ chinese_traditional ] = "¤º®e";
+ Text[ arabic ] = "ÇáãÍÊæíÇÊ";
+ Text[ greek ] = "Ðåñéå÷üìåíá";
+ Text[ korean ] = "³»¿ë";
+ Text[ turkish ] = "Ýçerik";
+ Text[ language_user1 ] = " ";
+ };
+};
+ // ********************************************************************** EOF
diff --git a/sw/source/ui/chrdlg/makefile.mk b/sw/source/ui/chrdlg/makefile.mk
new file mode 100644
index 000000000000..a03e3cf12a6e
--- /dev/null
+++ b/sw/source/ui/chrdlg/makefile.mk
@@ -0,0 +1,112 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=chrdlg
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ break.cxx \
+ chardlg.cxx \
+ drpcps.cxx \
+ ccoll.cxx \
+ pardlg.cxx \
+ tblnumfm.cxx \
+ numpara.cxx
+
+SRCFILES = \
+ swbreak.src \
+ chardlg.src \
+ chrdlg.src \
+ drpcps.src \
+ ccoll.src \
+ paradlg.src \
+ numpara.src
+
+SLOFILES = \
+ $(SLO)$/break.obj \
+ $(SLO)$/chardlg.obj \
+ $(SLO)$/drpcps.obj \
+ $(SLO)$/ccoll.obj \
+ $(SLO)$/pardlg.obj \
+ $(SLO)$/tblnumfm.obj \
+ $(SLO)$/numpara.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/chrdlg/numpara.cxx b/sw/source/ui/chrdlg/numpara.cxx
new file mode 100644
index 000000000000..b58efe96b478
--- /dev/null
+++ b/sw/source/ui/chrdlg/numpara.cxx
@@ -0,0 +1,366 @@
+/*************************************************************************
+ *
+ * $RCSfile: numpara.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "cmdid.h"
+#include "swtypes.hxx"
+#include "hintids.hxx"
+#include "globals.hrc"
+#include "helpid.h"
+
+#ifndef _SFX_OBJSH_HXX //autogen
+#include <sfx2/objsh.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SVX_SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef SW_FMTLINE_HXX
+#include <fmtline.hxx>
+#endif
+#include <numpara.hxx>
+#include <numpara.hrc>
+
+// Globals ******************************************************************
+
+static USHORT __FAR_DATA aPageRg[] = {
+ FN_NUMBER_NEWSTART, FN_NUMBER_NEWSTART_AT,
+ 0
+};
+/*-----------------31.01.98 08:34-------------------
+
+--------------------------------------------------*/
+SwParagraphNumTabPage::SwParagraphNumTabPage(Window* pParent,
+ const SfxItemSet& rAttr ) :
+ SfxTabPage(pParent, SW_RES(TP_NUMPARA), rAttr),
+ aNumberStyleGB ( this, ResId( GB_NUMBER_STYLE ) ),
+ aNumberStyleLB ( this, ResId( LB_NUMBER_STYLE ) ),
+ aNewStartGB ( this, ResId( GB_NEW_START ) ),
+ aNewStartCB ( this, ResId( CB_NEW_START ) ),
+ aNewStartFT ( this, ResId( FT_NEW_START ) ),
+ aNewStartNF ( this, ResId( NF_NEW_START ) ),
+ aCountParaGB ( this, ResId( GB_COUNT_PARA ) ),
+ aCountParaCB ( this, ResId( CB_COUNT_PARA ) ),
+ aRestartParaCountCB ( this, ResId( CB_RESTART_PARACOUNT ) ),
+ aRestartFT ( this, ResId( FT_RESTART_NO ) ),
+ aRestartNF ( this, ResId( NF_RESTART_PARA ) ),
+ bModified(FALSE),
+ bCurNumrule(FALSE)
+{
+ FreeResource();
+
+ const SfxPoolItem* pItem;
+ SfxObjectShell* pObjSh;
+ if(SFX_ITEM_SET == rAttr.GetItemState(SID_HTML_MODE, FALSE, &pItem) ||
+ ( 0 != ( pObjSh = SfxObjectShell::Current()) &&
+ 0 != (pItem = pObjSh->GetItem(SID_HTML_MODE))))
+ {
+ USHORT nHtmlMode = ((const SfxUInt16Item*)pItem)->GetValue();
+ if(HTMLMODE_ON & nHtmlMode)
+ {
+ aCountParaGB .Hide();
+ aCountParaCB .Hide();
+ aRestartParaCountCB .Hide();
+ aRestartFT .Hide();
+ aRestartNF .Hide();
+ }
+ }
+ aNewStartCB.SetClickHdl(LINK(this, SwParagraphNumTabPage, NewStartHdl_Impl));
+ aNumberStyleLB.SetSelectHdl(LINK(this, SwParagraphNumTabPage, StyleHdl_Impl));
+ aCountParaCB.SetClickHdl(LINK(this,
+ SwParagraphNumTabPage, LineCountHdl_Impl));
+ aRestartParaCountCB.SetClickHdl(
+ LINK(this, SwParagraphNumTabPage, LineCountHdl_Impl));
+}
+/*-----------------31.01.98 08:34-------------------
+
+--------------------------------------------------*/
+SwParagraphNumTabPage::~SwParagraphNumTabPage()
+{
+}
+
+/*-----------------31.01.98 08:38-------------------
+
+--------------------------------------------------*/
+SfxTabPage* SwParagraphNumTabPage::Create( Window* pParent,
+ const SfxItemSet& rSet )
+{
+ return new SwParagraphNumTabPage(pParent, rSet);
+}
+
+/*-----------------31.01.98 08:38-------------------
+
+--------------------------------------------------*/
+USHORT* SwParagraphNumTabPage::GetRanges()
+{
+ return aPageRg;
+}
+
+/*-----------------31.01.98 08:38-------------------
+
+--------------------------------------------------*/
+BOOL SwParagraphNumTabPage::FillItemSet( SfxItemSet& rSet )
+{
+ if( aNumberStyleLB.GetSelectEntryPos() != aNumberStyleLB.GetSavedValue())
+ {
+ String aStyle;
+ if(aNumberStyleLB.GetSelectEntryPos())
+ aStyle = aNumberStyleLB.GetSelectEntry();
+ const SfxStringItem* pOldRule = (const SfxStringItem*)GetOldItem( rSet, SID_ATTR_PARA_NUMRULE);
+ SfxStringItem* pRule = (SfxStringItem*)pOldRule->Clone();
+ pRule->SetValue(aStyle);
+ rSet.Put(*pRule);
+ delete pRule;
+ bModified = TRUE;
+ }
+ if(aNewStartCB.GetState() != aNewStartCB.GetSavedValue() ||
+ aNewStartNF.GetText() != aNewStartNF.GetSavedValue())
+ {
+ bModified = TRUE;
+ rSet.Put(SfxBoolItem(FN_NUMBER_NEWSTART, aNewStartCB.GetState() == STATE_CHECK));
+ rSet.Put(SfxUInt16Item(FN_NUMBER_NEWSTART_AT, (USHORT)aNewStartNF.GetValue()));
+ }
+
+ if(aCountParaCB.GetSavedValue() != aCountParaCB.GetState() ||
+ aRestartParaCountCB.GetSavedValue() != aRestartParaCountCB.GetState() ||
+ aRestartNF.GetSavedValue() != aRestartNF.GetText() )
+ {
+ SwFmtLineNumber aFmt;
+ aFmt.SetStartValue( aRestartParaCountCB.GetState() == STATE_CHECK ?
+ aRestartNF.GetValue() : 0 );
+ aFmt.SetCountLines( aCountParaCB.IsChecked() );
+ rSet.Put(aFmt);
+ bModified = TRUE;
+ }
+ return bModified;
+}
+
+/*-----------------31.01.98 08:38-------------------
+
+--------------------------------------------------*/
+void SwParagraphNumTabPage::Reset( const SfxItemSet& rSet )
+{
+ SfxItemState eItemState = rSet.GetItemState( GetWhich(SID_ATTR_PARA_NUMRULE) );
+
+ String aStyle;
+ if( eItemState >= SFX_ITEM_AVAILABLE )
+ {
+ aStyle = ((const SfxStringItem &)rSet.Get( GetWhich(SID_ATTR_PARA_NUMRULE) )).GetValue();
+ if(!aStyle.Len())
+ aStyle = aNumberStyleLB.GetEntry(0);
+ aNumberStyleLB.SelectEntry( aStyle );
+ }
+ else
+ {
+ aNumberStyleLB.SetNoSelection();
+ }
+
+ aNumberStyleLB.SaveValue();
+
+
+ eItemState = rSet.GetItemState( FN_NUMBER_NEWSTART );
+ if(eItemState > SFX_ITEM_AVAILABLE )
+ {
+ bCurNumrule = TRUE;
+ aNewStartCB.SetState(
+ ((const SfxBoolItem&)rSet.Get(FN_NUMBER_NEWSTART)).GetValue() ?
+ STATE_CHECK : STATE_NOCHECK );
+ aNewStartCB.EnableTriState(FALSE);
+ }
+ else
+ aNewStartCB.SetState(STATE_DONTKNOW);
+ aNewStartCB.SaveValue();
+
+ eItemState = rSet.GetItemState( FN_NUMBER_NEWSTART_AT);
+ if( eItemState > SFX_ITEM_AVAILABLE )
+ {
+ USHORT nNewStart = ((const SfxUInt16Item&)rSet.Get(FN_NUMBER_NEWSTART_AT)).GetValue();
+ if(USHRT_MAX == nNewStart)
+ nNewStart = 1;
+ aNewStartNF.SetValue(nNewStart);
+ NewStartHdl_Impl(&aNewStartCB);
+ }
+ aNewStartNF.SaveValue();
+ StyleHdl_Impl(&aNumberStyleLB);
+ if( SFX_ITEM_AVAILABLE <= rSet.GetItemState(RES_LINENUMBER))
+ {
+ SwFmtLineNumber& rNum = (SwFmtLineNumber&)rSet.Get(RES_LINENUMBER);
+ ULONG nStartValue = rNum.GetStartValue();
+ BOOL bCount = rNum.IsCount();
+ aCountParaCB.SetState( bCount ? STATE_CHECK : STATE_NOCHECK );
+ aRestartParaCountCB.SetState( 0 != nStartValue ? STATE_CHECK : STATE_NOCHECK );
+ aRestartNF.SetValue(nStartValue == 0 ? 1 : nStartValue);
+ LineCountHdl_Impl(&aCountParaCB);
+ aCountParaCB.EnableTriState(FALSE);
+ aRestartParaCountCB.EnableTriState(FALSE);
+ }
+ else
+ {
+ aCountParaCB.SetState(STATE_DONTKNOW);
+ aRestartParaCountCB.SetState(STATE_DONTKNOW);
+ }
+ aCountParaCB.SaveValue();
+ aRestartParaCountCB.SaveValue();
+ aRestartNF.SaveValue();
+
+ bModified = FALSE;
+}
+
+/*-----------------31.01.98 08:38-------------------
+
+--------------------------------------------------*/
+void SwParagraphNumTabPage::EnableNewStart()
+{
+ aNewStartGB.Show();
+ aNewStartCB.Show();
+ aNewStartFT.Show();
+ aNewStartNF.Show();
+}
+
+/*-----------------31.01.98 08:56-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwParagraphNumTabPage, NewStartHdl_Impl, CheckBox*, pBox )
+{
+ BOOL bEnable = pBox->IsChecked();
+ aNewStartFT.Enable(bEnable);
+ aNewStartNF.Enable(bEnable);
+ return 0;
+}
+
+/*-----------------05.02.98 10:01-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwParagraphNumTabPage, LineCountHdl_Impl, CheckBox* , EMPTYARG)
+{
+ aRestartParaCountCB.Enable(aCountParaCB.IsChecked());
+
+ BOOL bEnableRestartValue = aRestartParaCountCB.IsEnabled() &&
+ aRestartParaCountCB.IsChecked();
+ aRestartFT.Enable(bEnableRestartValue);
+ aRestartNF.Enable(bEnableRestartValue);
+
+ return 0;
+}
+
+/*-----------------05.02.98 13:39-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwParagraphNumTabPage, StyleHdl_Impl, ListBox*, pBox )
+{
+ BOOL bEnable = bCurNumrule || pBox->GetSelectEntryPos() > 0;
+ aNewStartCB.Enable(bEnable);
+ NewStartHdl_Impl(&aNewStartCB);
+ return 0;
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.9 2000/09/18 16:05:14 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.8 2000/07/03 08:04:44 os
+ #72742# resource warnings corrected
+
+ Revision 1.7 1998/04/15 12:31:48 OS
+ TriState-Boxen #49486#
+
+
+ Rev 1.6 15 Apr 1998 14:31:48 OS
+ TriState-Boxen #49486#
+
+ Rev 1.5 17 Mar 1998 17:55:24 OS
+ Vorlagenlistbox bei unbekannter Vorlage unselektiert #47570#
+
+ Rev 1.4 03 Mar 1998 10:14:48 OS
+ Zeilennumerierung nicht in HTML
+
+ Rev 1.3 20 Feb 1998 11:23:42 MA
+ Restarbeiten Zeilennummerierung
+
+ Rev 1.2 05 Feb 1998 14:56:26 OS
+ Paste-Fehler
+
+ Rev 1.1 05 Feb 1998 14:43:30 OS
+ Zeilennumerierung
+
+ Rev 1.0 02 Feb 1998 09:15:52 OS
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/ui/chrdlg/numpara.hrc b/sw/source/ui/chrdlg/numpara.hrc
new file mode 100644
index 000000000000..cbe488697f9b
--- /dev/null
+++ b/sw/source/ui/chrdlg/numpara.hrc
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * $RCSfile: numpara.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _NUMPARA_HRC
+#define _NUMPARA_HRC
+
+// #define ******************************************************************
+
+#define LB_NUMBER_STYLE 1
+#define GB_NUMBER_STYLE 2
+#define CB_NEW_START 3
+#define FT_NEW_START 4
+#define GB_NEW_START 5
+#define NF_NEW_START 6
+#define GB_COUNT_PARA 7
+#define CB_COUNT_PARA 8
+#define CB_RESTART_PARACOUNT 9
+#define FT_RESTART_NO 10
+#define NF_RESTART_PARA 11
+
+// **********************************************************************
+
+#endif
+
+
+
+
diff --git a/sw/source/ui/chrdlg/numpara.src b/sw/source/ui/chrdlg/numpara.src
new file mode 100644
index 000000000000..6c3a615e02c4
--- /dev/null
+++ b/sw/source/ui/chrdlg/numpara.src
@@ -0,0 +1,417 @@
+/*************************************************************************
+ *
+ * $RCSfile: numpara.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ******************************************************************
+
+ // #include *****************************************************************
+#include "globals.hrc"
+#include "chrdlg.hrc"
+#include "numpara.hrc"
+#include "helpid.h"
+ // TabPage ******************************************************************
+TabPage TP_NUMPARA
+{
+ HelpID = HID_NUMPARA ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ GroupBox GB_NUMBER_STYLE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 176 , 26 ) ;
+ Text = "Nummerierungsvorlage" ;
+ Text [ ENGLISH ] = "Number style" ;
+ Text [ portuguese ] = "Estilo de numeração" ;
+ Text [ english_us ] = "Numbering Style" ;
+ Text [ portuguese_brazilian ] = "Numerierungsvorlage" ;
+ Text [ swedish ] = "Numreringsformatmall" ;
+ Text [ danish ] = "Nummereringstypografi" ;
+ Text [ italian ] = "Modello di numerazione" ;
+ Text [ spanish ] = "Estilo de numeración" ;
+ Text [ french ] = "Style de numérotation" ;
+ Text [ dutch ] = "Opmaakprofiel voor nummering" ;
+ Text[ chinese_simplified ] = "±àºÅÑùʽ";
+ Text[ russian ] = "Ñòèëü íóìåðàöèè";
+ Text[ polish ] = "Styl numeracji";
+ Text[ japanese ] = "”Ô†•t‚¯‚̽À²Ù";
+ Text[ chinese_traditional ] = "½s¸¹¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÇáÊÑÞíã";
+ Text[ greek ] = "Óôõë áñßèìçóçò";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â À¯Çü";
+ Text[ turkish ] = "Numaralama biçimi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_NUMBER_STYLE
+ {
+ Pos = MAP_APPFONT ( 12 , 12 ) ;
+ Size = MAP_APPFONT ( 158 , 65 ) ;
+ DropDown = TRUE ;
+ Border = TRUE ;
+ StringList =
+ {
+ < "keine" ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "keine" ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "None" ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "Nenhum" ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "ingen" ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "ingen" ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "senza" ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "Ninguno" ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "Aucun(e)" ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "geen" ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "Nenhum" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÎÞ" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "íåò" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "brak" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‚È‚µ" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "µL" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÈÏæä" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "êáíÝíá" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¾øÀ½" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "yok" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ };
+ };
+ GroupBox GB_NEW_START
+ {
+ Pos = MAP_APPFONT ( 6 , 32 ) ;
+ Size = MAP_APPFONT ( 176 , 40 ) ;
+ Text = "Nummerierung" ;
+ Text [ English ] = "Numbering" ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ Text [ portuguese ] = "Numeração" ;
+ Text [ english_us ] = "Numbering" ;
+ Text [ portuguese_brazilian ] = "Numerierung" ;
+ Text [ swedish ] = "Numrering" ;
+ Text [ danish ] = "Nummerering" ;
+ Text [ italian ] = "Numerazione" ;
+ Text [ spanish ] = "Numeración" ;
+ Text [ french ] = "Numérotation" ;
+ Text [ dutch ] = "Nummering" ;
+ Text[ chinese_simplified ] = "񅧏";
+ Text[ russian ] = "Íóìåðàöèÿ";
+ Text[ polish ] = "Numeracja";
+ Text[ japanese ] = "”Ô†•t‚¯";
+ Text[ chinese_traditional ] = "½s¸¹";
+ Text[ arabic ] = "ÇáÊÑÞíã";
+ Text[ greek ] = "Áñßèìçóç";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Numaralama";
+ Text[ language_user1 ] = " ";
+ };
+ TriStateBox CB_NEW_START
+ {
+ Pos = MAP_APPFONT ( 12 , 44 ) ;
+ Size = MAP_APPFONT ( 160 , 10 ) ;
+ Text = "~An diesem Absatz neu beginnen" ;
+ Text [ English ] = "~Restart at this paragraph" ;
+ Hide = TRUE ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "~Recomeçar neste parágrafo" ;
+ Text [ english_us ] = "R~estart at this paragraph" ;
+ Text [ portuguese_brazilian ] = "~An diesem Absatz neu beginnen" ;
+ Text [ swedish ] = "Börj~a om vid detta stycke" ;
+ Text [ danish ] = "Begynd nyt ved dette afsnit" ;
+ Text [ italian ] = "~Ricomincia con questo paragrafo" ;
+ Text [ spanish ] = "~Volver a empezar en este párrafo" ;
+ Text [ french ] = "~Commencer avec ce paragraphe" ;
+ Text [ dutch ] = "~Bij deze alinea opnieuw beginnen" ;
+ Text[ chinese_simplified ] = "´ÓÕâ¸ö¶ÎÂäÖØпªÊ¼(~R)";
+ Text[ russian ] = "Íà÷àòü ñ ýòîãî àáçàöà";
+ Text[ polish ] = "Zacznij ponownie przy tym akapicie";
+ Text[ japanese ] = "‚±‚Ì’i—Ž‚ÅV‚µ‚­Žn‚ß‚é(~R)";
+ Text[ chinese_traditional ] = "±q³o­Ó¬q¸¨­«·s¶}©l(~R)";
+ Text[ arabic ] = "ÇáÈÏÁ ãä ÌÏíÏ ÚäÏ åÐå ÇáÝÞÑÉ";
+ Text[ greek ] = "Åð~áíåêêßíçóç áðü áõôÞ ôçí ðáñÜãñáöï";
+ Text[ korean ] = "ÀÌ ´Ü¶ô¿¡¼­ ´Ù½Ã ½ÃÀÛ(~E)";
+ Text[ turkish ] = "Bu paragraf ile yeniden baþla";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_NEW_START
+ {
+ Pos = MAP_APPFONT ( 12 , 56 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Beginnen mit:" ;
+ Text [ English ] = "~Start at:" ;
+ Hide = TRUE ;
+ Disable = TRUE ;
+ Text [ portuguese ] = "~Começar com:" ;
+ Text [ english_us ] = "~Start with:" ;
+ Text [ portuguese_brazilian ] = "~Beginnen mit:" ;
+ Text [ swedish ] = "~Börja med:" ;
+ Text [ danish ] = "Begynd med:" ;
+ Text [ italian ] = "~Inizia con..." ;
+ Text [ spanish ] = "Empezar ~con:" ;
+ Text [ french ] = "~Commencer avec :" ;
+ Text [ dutch ] = "~Beginnen met:" ;
+ Text[ chinese_simplified ] = "¿ªÊ¼´Ó(~S)";
+ Text[ russian ] = "Íà÷àòü ñ:";
+ Text[ polish ] = "Zacznij od:";
+ Text[ japanese ] = "ŠJŽn:(~S)";
+ Text[ chinese_traditional ] = "¶}©l±q(~S)";
+ Text[ arabic ] = "ÇáÈÏÁ ÈÜ:";
+ Text[ greek ] = "¸íáñîç áðü:";
+ Text[ korean ] = "¿Í ÇÔ²² ½ÃÀÛ:(~S)";
+ Text[ turkish ] = "~Baþlangýç deðeri:";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField NF_NEW_START
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 144 , 56 ) ;
+ Size = MAP_APPFONT ( 26 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 9999 ;
+ Value = 0 ;
+ First = 0 ;
+ Last = 9999 ;
+ Hide = TRUE ;
+ Disable = TRUE ;
+ };
+ GroupBox GB_COUNT_PARA
+ {
+ Pos = MAP_APPFONT ( 6 , 75 ) ;
+ Size = MAP_APPFONT ( 176 , 53 ) ;
+ Text = "Zeilennummerierung" ;
+ Text [ English ] = "Line numbering" ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "Numeração de linhas" ;
+ Text [ english_us ] = "Line Numbering" ;
+ Text [ portuguese_brazilian ] = "Zeilennumerierung" ;
+ Text [ swedish ] = "Radnumrering" ;
+ Text [ danish ] = "Linjenummerering" ;
+ Text [ italian ] = "Numerazione righe" ;
+ Text [ spanish ] = "Numeración de líneas" ;
+ Text [ french ] = "Numérotation de lignes" ;
+ Text [ dutch ] = "Regelnummering" ;
+ Text[ chinese_simplified ] = "ÐбàºÅ";
+ Text[ russian ] = "Íóìåðàöèÿ ñòðîê";
+ Text[ polish ] = "Numeracja wierszy";
+ Text[ japanese ] = "s‚̔Ԇ•t‚¯";
+ Text[ chinese_traditional ] = "¦æ½s¸¹";
+ Text[ arabic ] = "ÊÑÞíã ÇáÃÓØÑ";
+ Text[ greek ] = "Áñßèìçóç ãñáììþí";
+ Text[ korean ] = "¼± ¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Satýr numaralama";
+ Text[ language_user1 ] = " ";
+ };
+ TriStateBox CB_COUNT_PARA
+ {
+ Pos = MAP_APPFONT ( 12 , 89 ) ;
+ Size = MAP_APPFONT ( 160 , 10 ) ;
+ Text = "~Die Zeilen dieses Absatzes mitzählen" ;
+ Text [ English ] = "~Include this paragraph in line numbering" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Include this paragraph in line numbering" ;
+ Text [ portuguese_brazilian ] = "~Die Zeilen dieses Absatzes mitzählen" ;
+ Text [ swedish ] = "~Räkna med raderna i det här stycket" ;
+ Text [ danish ] = "Inkluder dette afsnits rækker" ;
+ Text [ italian ] = "~Conta le righe di questo paragrafo" ;
+ Text [ spanish ] = "Con~tar las líneas de este párrafo" ;
+ Text [ french ] = "~Inclure les lignes de ce paragraphe" ;
+ Text [ dutch ] = "~De regels van deze alinea meetellen." ;
+ Text [ portuguese ] = "~Incluir este parágrafo na numeração de linhas" ;
+ Text[ chinese_simplified ] = "°üÀ¨Õâ¸ö¶ÎÂäµÄÐÐ(~I)";
+ Text[ russian ] = "Ñ÷èòàòü, âêëþ÷àÿ ñòðîêè ýòîãî àáçàöà";
+ Text[ polish ] = "W³¹cznie z wierszami tego akapitu";
+ Text[ japanese ] = "‚±‚Ì’i—Ž‚Ìs”‚ðŠÜ‚ß‚é(~I)";
+ Text[ chinese_traditional ] = "¥]¬A³o­Ó¬q¸¨ªº¦æ(~I)";
+ Text[ arabic ] = "ÚÏ ÃÓØÑ åÐå ÇáÝÞÑÉ ÃíÖÇð";
+ Text[ greek ] = "Íá óõìðåñéëçöèïýí ïé ãñáììÝò áõôÞò ôçò ðáñáãñÜöïõ";
+ Text[ korean ] = "´Ü¶ô¿¡ ¼± ¹øÈ£ ¸Å±â±âÆ÷ÇÔ(~I)";
+ Text[ turkish ] = "Bu paragrafýn da satýrlarýný numarala";
+ Text[ language_user1 ] = " ";
+ };
+ TriStateBox CB_RESTART_PARACOUNT
+ {
+ Pos = MAP_APPFONT ( 12 , 101 ) ;
+ Size = MAP_APPFONT ( 160 , 10 ) ;
+ Text = "An diese~m Absatz neu beginnen" ;
+ Text [ English ] = "~Restart at this paragraph" ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "~Recomeçar neste parágrafo" ;
+ Text [ english_us ] = "Rest~art at this paragraph" ;
+ Text [ portuguese_brazilian ] = "~An diesem Absatz neu beginnen" ;
+ Text [ swedish ] = "Börj~a om vid detta stycke" ;
+ Text [ danish ] = "Begynd nyt ved dette afsnit" ;
+ Text [ italian ] = "~Ricomincia con questo paragrafo" ;
+ Text [ spanish ] = "Volver a empe~zar en este párrafo" ;
+ Text [ french ] = "~Recommencer avec ce paragraphe" ;
+ Text [ dutch ] = "~Bij deze alinea opnieuw beginnen" ;
+ Text[ chinese_simplified ] = "ÔÚÕâ¸ö¶ÎÂä´¦ÖØпªÊ¼(~A)";
+ Text[ russian ] = "Íà÷àòü ñ ýòîãî àáçàöà";
+ Text[ polish ] = "Zacznij p~onownie przy tym akapicie";
+ Text[ japanese ] = "‚±‚Ì’i—Ž‚ÅV‚µ‚­Žn‚ß‚é(~R)";
+ Text[ chinese_traditional ] = "±q³o­Ó¬q¸¨­«·s¶}©l(~R)";
+ Text[ arabic ] = "ÇáÈÏÁ ãä ÌÏíÏ ÚäÏ åÐå ÇáÝÞÑÉ";
+ Text[ greek ] = "Åðáíåêêßíçóç áðü áõôÞ ôçí ðáñÜãñáöï";
+ Text[ korean ] = "ÀÌ ´Ü¶ô¿¡¼­ ´Ù½Ã ½ÃÀÛ(~A)";
+ Text[ turkish ] = "Bu paragraf ile yeniden baþla";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_RESTART_NO
+ {
+ Pos = MAP_APPFONT ( 12 , 113 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "B~eginnen mit:" ;
+ Text [ English ] = "~Start at:" ;
+ Disable = TRUE ;
+ Text [ portuguese ] = "~Começar com:" ;
+ Text [ english_us ] = "~Start with:" ;
+ Text [ portuguese_brazilian ] = "~Beginnen mit:" ;
+ Text [ swedish ] = "~Börja med:" ;
+ Text [ danish ] = "Begynd med:" ;
+ Text [ italian ] = "~Inizia con..." ;
+ Text [ spanish ] = "Empezar ~con:" ;
+ Text [ french ] = "~Commencer avec :" ;
+ Text [ dutch ] = "~Beginnen met:" ;
+ Text[ chinese_simplified ] = "¿ªÊ¼´Ó(~S)£º";
+ Text[ russian ] = "Íà÷àòü ñ:";
+ Text[ polish ] = "Zacznij od:";
+ Text[ japanese ] = "ŠJŽn”Ô†(~S):";
+ Text[ chinese_traditional ] = "¶}©l±q(~S)¡G";
+ Text[ arabic ] = "ÇáÈÏÁ ÈÜ:";
+ Text[ greek ] = "¸íáñîç ì~å:";
+ Text[ korean ] = "¿Í ÇÔ²² ½ÃÀÛ:(~S)";
+ Text[ turkish ] = "~Baþlangýç deðeri:";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField NF_RESTART_PARA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 144 , 113 ) ;
+ Size = MAP_APPFONT ( 26 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 65000 ;
+ Value = 1 ;
+ First = 1 ;
+ Last = 65000 ;
+ Disable = TRUE ;
+ };
+};
+ // ********************************************************************** EOF
diff --git a/sw/source/ui/chrdlg/paradlg.hrc b/sw/source/ui/chrdlg/paradlg.hrc
new file mode 100644
index 000000000000..b5736eba5865
--- /dev/null
+++ b/sw/source/ui/chrdlg/paradlg.hrc
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: paradlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 TAB_CONTROL 55
+#define INDENT_FRM 1
+#define LEFT_LABEL 2
+#define FLINE_LABEL 3
+#define RIGHT_LABEL 4
+#define LEFT_INDENT 5
+#define FLINE_INDENT 6
+#define RIGHT_INDENT 7
+#define DIST_FRM 8
+#define TOP_LABEL 9
+#define TOP_DIST 10
+#define BOTTOM_LABEL 11
+#define BOTTOM_DIST 12
+#define ALG_LEFT 13
+#define ALG_RIGHT 50
+#define ALG_CENTER 51
+#define ALG_JUSTIFY 52
+#define ALG_FRM 14
+#define LINEDIST_FRM 15
+#define LINEDIST_BOX 16
+#define LINEDIST_AT_LABEL 17
+#define LINEDIST_AT_PERCENTBOX 18
+#define LINEDIST_AT_METRICBOX 19
+#define HYPHEN_FRM 21
+#define HYPHEN_BOX_AFTER 44
+#define HYPHEN_BOX_BEFORE 22
+#define EXTHYPHEN_BOX_AFTER 42
+#define EXTHYPHEN_BOX_BEFORE 23
+#define HYPHEN_LABEL_AFTER 43
+#define HYPHEN_LABEL_BEFORE 24
+#define EXTEND_FRM 25
+#define PAGEBREAK_BOX 26
+#define PAGEBREAK_DAVOR 27
+#define PAGEBREAK_DAHINTER 28
+#define KEEP_TOGETHER_BOX 29
+#define WIDOW_BOX 31
+#define WIDOW_ROW_NO 32
+#define WIDOW_ROW_LABEL 33
+#define ORPHAN_BOX 34
+#define ORPHAN_ROW_NO 35
+#define ORPHAN_ROW_LABEL 36
+#define PAGE_COLL_BTN 40
+#define PAGE_COLL_BOX 41
+#define OK_BTN 50
+#define CANCEL_BTN 51
diff --git a/sw/source/ui/chrdlg/paradlg.src b/sw/source/ui/chrdlg/paradlg.src
new file mode 100644
index 000000000000..b71302d9c664
--- /dev/null
+++ b/sw/source/ui/chrdlg/paradlg.src
@@ -0,0 +1,446 @@
+/*************************************************************************
+ *
+ * $RCSfile: paradlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "globals.hrc"
+#include "chrdlg.hrc"
+#include "paradlg.hrc"
+#define HelpText "error - hier keine HelpTexte HelpText"
+ // #define DLG_PARA 256
+TabDialog DLG_PARA
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ 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 ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_PARA_STD ;
+ /* ### ACHTUNG: Neuer Text in Resource? Einzüge und Abstände : Einz³ge und Abstõnde */
+ Text = "Einzüge und Abstände" ;
+ Text [ ENGLISH ] = "Paragraph" ;
+ Text [ norwegian ] = "Avsnitt" ;
+ Text [ italian ] = "Paragrafo" ;
+ Text [ portuguese_brazilian ] = "Parágrafo" ;
+ Text [ portuguese ] = "Avanços e espaçamento" ;
+ Text [ finnish ] = "Kappale" ;
+ Text [ danish ] = "Indrykning og mellemrum" ;
+ Text [ french ] = "Retraits et écarts" ;
+ Text [ swedish ] = "Indrag och avstånd" ;
+ Text [ dutch ] = "Inspringen en afstanden" ;
+ Text [ spanish ] = "Sangrías y espacios" ;
+ Text [ english_us ] = "Indents & Spacing" ;
+ PageResID = TP_PARA_STD ;
+ 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 ] = " ";
+ };
+#if SUPD>352
+ PageItem
+ {
+ Identifier = TP_PARA_ALIGN ;
+ Text = "Ausrichtung" ;
+ Text [ ENGLISH ] = "Alignment" ;
+ PageResID = TP_PARA_ALIGN ;
+ 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 ] = " ";
+ };
+#endif
+ PageItem
+ {
+ Identifier = TP_PARA_EXT ;
+ /* ### ACHTUNG: Neuer Text in Resource? Textfluß : Textflu˜ */
+ Text = "Textfluss" ;
+ Text [ ENGLISH ] = "Paragraph Extensions" ;
+ Text [ norwegian ] = "Utvidelse av avsnitt" ;
+ Text [ italian ] = "Flusso di testo" ;
+ Text [ portuguese_brazilian ] = "Extens es de Parágrafo" ;
+ Text [ portuguese ] = "Fluxo de texto" ;
+ Text [ finnish ] = "Tekstin rivitys" ;
+ Text [ danish ] = "Tekstretning" ;
+ Text [ french ] = "Enchaînements" ;
+ Text [ swedish ] = "Textflöde" ;
+ Text [ dutch ] = "Tekstverloop" ;
+ Text [ spanish ] = "Flujo del texto" ;
+ Text [ english_us ] = "Text Flow" ;
+ PageResID = TP_PARA_EXT ;
+ Text[ chinese_simplified ] = "»»ÐкͷÖÒ³";
+ Text[ russian ] = "Ïîëîæåíèå íà ñòðàíèöå";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "‘ÌÙ";
+ Text[ chinese_traditional ] = "´«¦æ©M¤À­¶";
+ Text[ arabic ] = "ÇäÓíÇÈ ÇáäÕ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "ÑïÞ êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® È帧";
+ Text[ turkish ] = "Metin akýþý";
+ };
+ PageItem
+ {
+ Identifier = TP_NUMPARA ;
+ Text = "Nummerierung" ;
+ Text [ ENGLISH ] = "Numbering" ;
+ Text [ english_us ] = "Numbering" ;
+ Text [ portuguese_brazilian ] = "Numerierung" ;
+ Text [ swedish ] = "Numrering" ;
+ Text [ danish ] = "Nummerering" ;
+ Text [ italian ] = "Numerazione" ;
+ Text [ spanish ] = "Numeración" ;
+ Text [ french ] = "Numérotation" ;
+ Text [ dutch ] = "Nummering" ;
+ Text [ portuguese ] = "Numeração" ;
+ Text[ chinese_simplified ] = "񅧏";
+ Text[ russian ] = "Íóìåðàöèÿ";
+ Text[ polish ] = "Numeracja";
+ Text[ japanese ] = "”Ô†•t‚¯";
+ Text[ chinese_traditional ] = "½s¸¹";
+ Text[ arabic ] = "ÇáÊÑÞíã";
+ Text[ greek ] = "Áñßèìçóç";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Numaralama";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_TABULATOR ;
+ Text = "Tabulator" ;
+ Text [ ENGLISH ] = "Tab" ;
+ Text [ norwegian ] = "Tab" ;
+ Text [ italian ] = "Tabulazione" ;
+ Text [ portuguese_brazilian ] = "Tabulação" ;
+ Text [ portuguese ] = "Tabulação" ;
+ Text [ finnish ] = "Sarkain" ;
+ Text [ danish ] = "Tabulator" ;
+ Text [ french ] = "Tabulation" ;
+ Text [ swedish ] = "Tabulator" ;
+ Text [ dutch ] = "Tab" ;
+ Text [ spanish ] = "Tabulaciones" ;
+ Text [ english_us ] = "Tabs" ;
+ PageResID = TP_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 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_DROPCAPS ;
+ Text = "Initialen" ;
+ Text [ ENGLISH ] = "Drop caps" ;
+ Text [ norwegian ] = "Drop caps" ;
+ Text [ italian ] = "Capolettera" ;
+ Text [ portuguese_brazilian ] = "Capitulares descidas" ;
+ Text [ portuguese ] = "Iniciais" ;
+ Text [ finnish ] = "Anfangit" ;
+ Text [ danish ] = "Initialer" ;
+ Text [ french ] = "Lettrines" ;
+ Text [ swedish ] = "Anfangsbokstäver" ;
+ Text [ dutch ] = "Initialen" ;
+ Text [ spanish ] = "Iniciales" ;
+ Text [ english_us ] = "Drop Caps" ;
+ PageResID = TP_DROPCAPS ;
+ Text[ chinese_simplified ] = "×ÖÊ×´óд";
+ Text[ russian ] = "Èíèöèàëû";
+ Text[ polish ] = "Inicja³y";
+ Text[ japanese ] = "ÄÞÛ¯Ìß·¬¯Ìß";
+ Text[ chinese_traditional ] = "¦r­º¤j¼g";
+ Text[ arabic ] = "ÇáÃÍÑÝ ÇáÇÓÊåáÇáíÉ";
+ Text[ greek ] = "Áñ÷éãñÜììáôá";
+ Text[ korean ] = "´Ü¶ô ù¹®ÀÚ Àå½Ä";
+ Text[ turkish ] = "Baþharfler";
+ 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" ;
+ PageResID = TP_BORDER ;
+ 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" ;
+ PageResID = TP_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 ] = " ";
+ };
+ };
+ };
+ 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 ] = " ";
+};
+TabDialog DLG_DRAWPARA
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ 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 ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_PARA_STD ;
+ /* ### ACHTUNG: Neuer Text in Resource? Einzüge und Abstände : Einz³ge und Abstõnde */
+ Text = "Einzüge und Abstände" ;
+ Text [ ENGLISH ] = "Paragraph" ;
+ Text [ norwegian ] = "Avsnitt" ;
+ Text [ italian ] = "Rientri e spaziature" ;
+ Text [ portuguese_brazilian ] = "Parágrafo" ;
+ Text [ portuguese ] = "Avanços e espaçamento" ;
+ Text [ finnish ] = "Kappale" ;
+ 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 = TP_PARA_STD ;
+ 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[ language_user1 ] = " ";
+ Text[ greek ] = "Åóï÷Ýò êáé áðïóôÜóåéò";
+ Text[ korean ] = "µé¿©¾²±â¿Í °£°Ý";
+ Text[ turkish ] = "Girinti ve aralýklar";
+ };
+#if SUPD>352
+ PageItem
+ {
+ Identifier = TP_PARA_ALIGN ;
+ Text = "Ausrichtung" ;
+ Text [ ENGLISH ] = "Alignment" ;
+ PageResID = TP_PARA_ALIGN ;
+ 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 ] = " ";
+ };
+#endif
+ PageItem
+ {
+ Identifier = TP_TABULATOR ;
+ Text = "Tabulator" ;
+ Text [ ENGLISH ] = "Tab" ;
+ Text [ norwegian ] = "Tab" ;
+ Text [ italian ] = "Tabulazione" ;
+ Text [ portuguese_brazilian ] = "Tabulação" ;
+ Text [ portuguese ] = "Tabulação" ;
+ Text [ finnish ] = "Sarkain" ;
+ Text [ danish ] = "Tabulator" ;
+ Text [ french ] = "Tabulation" ;
+ Text [ swedish ] = "Tabulator" ;
+ Text [ dutch ] = "Tab" ;
+ Text [ spanish ] = "Tabulaciones" ;
+ Text [ english_us ] = "Tabs" ;
+ PageResID = TP_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 ] = " ";
+ };
+ };
+ };
+ 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/sw/source/ui/chrdlg/pardlg.cxx b/sw/source/ui/chrdlg/pardlg.cxx
new file mode 100644
index 000000000000..6830eb535abe
--- /dev/null
+++ b/sw/source/ui/chrdlg/pardlg.cxx
@@ -0,0 +1,505 @@
+/*************************************************************************
+ *
+ * $RCSfile: pardlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SVX_TABSTPGE_HXX //autogen
+#include <svx/tabstpge.hxx>
+#endif
+#ifndef _SVX_PARAGRPH_HXX //autogen
+#include <svx/paragrph.hxx>
+#endif
+#ifndef _SVX_BACKGRND_HXX
+#include <svx/backgrnd.hxx>
+#endif
+#ifndef _SVX_BORDER_HXX
+#include <svx/border.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SFXSTYLE_HXX //autogen
+#include <svtools/style.hxx>
+#endif
+#ifndef _OFA_HTMLCFG_HXX //autogen
+#include <offmgr/htmlcfg.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+
+#ifndef _SVSTDARR_STRINGSISORTDTOR
+#define _SVSTDARR_STRINGSISORTDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+
+#include "docsh.hxx"
+#include "wrtsh.hxx"
+#include "frmatr.hxx"
+#include "view.hxx"
+#include "globals.hrc"
+#include "pardlg.hxx"
+#include "pagedesc.hxx"
+#include "paratr.hxx"
+#include "drpcps.hxx"
+#include "uitool.hxx"
+#include "viewopt.hxx"
+
+#ifndef _NUMPARA_HXX
+#include <numpara.hxx>
+#endif
+#include "chrdlg.hrc"
+#include "poolfmt.hrc"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+
+SwParaDlg::SwParaDlg(Window *pParent,
+ SwView& rVw,
+ const SfxItemSet& rCoreSet,
+ BYTE nDialogMode,
+ const String *pTitle,
+ BOOL bDraw,
+ UINT16 nDefPage):
+
+ SfxTabDialog(pParent, bDraw ? SW_RES(DLG_DRAWPARA) : SW_RES(DLG_PARA),
+ &rCoreSet, 0 != pTitle),
+
+ rView(rVw),
+ nDlgMode(nDialogMode),
+ bDrawParaDlg(bDraw)
+
+{
+ FreeResource();
+
+ nHtmlMode = ::GetHtmlMode(rVw.GetDocShell());
+ BOOL bHtmlMode = nHtmlMode & HTMLMODE_ON;
+ if(pTitle)
+ {
+ // Update des Titels
+ String aTmp( GetText() );
+ aTmp += SW_RESSTR(STR_TEXTCOLL_HEADER);
+ aTmp += *pTitle;
+ aTmp += ')';
+ SetText(aTmp);
+ }
+
+ AddTabPage(TP_PARA_STD, SvxStdParagraphTabPage::Create,SvxStdParagraphTabPage::GetRanges);
+ AddTabPage(TP_PARA_ALIGN, SvxParaAlignTabPage::Create,SvxParaAlignTabPage::GetRanges);
+
+ OfaHtmlOptions* pHtmlOpt = OFF_APP()->GetHtmlOptions();
+ if (!bDrawParaDlg && (!bHtmlMode || pHtmlOpt->IsPrintLayoutExtension()))
+ AddTabPage(TP_PARA_EXT, SvxExtParagraphTabPage::Create,SvxExtParagraphTabPage::GetRanges);
+ else
+ RemoveTabPage(TP_PARA_EXT);
+
+ USHORT nWhich(rCoreSet.GetPool()->GetWhich(SID_ATTR_LRSPACE));
+ BOOL bLRValid = SFX_ITEM_AVAILABLE <= rCoreSet.GetItemState(nWhich);
+ if(bHtmlMode || !bLRValid)
+ RemoveTabPage(TP_TABULATOR);
+ else
+ AddTabPage(TP_TABULATOR, SvxTabulatorTabPage::Create, SvxTabulatorTabPage::GetRanges);
+
+ if (!bDrawParaDlg)
+ {
+ if(!(nDlgMode & DLG_ENVELOP))
+ AddTabPage(TP_NUMPARA, SwParagraphNumTabPage::Create,SwParagraphNumTabPage::GetRanges);
+ else
+ RemoveTabPage(TP_NUMPARA);
+ if(!bHtmlMode || (nHtmlMode & HTMLMODE_FULL_STYLES))
+ {
+ AddTabPage(TP_DROPCAPS, SwDropCapsPage::Create, SwDropCapsPage::GetRanges);
+ AddTabPage(TP_BACKGROUND,SvxBackgroundTabPage::Create, SvxBackgroundTabPage::GetRanges);
+ }
+ else
+ {
+ RemoveTabPage(TP_DROPCAPS);
+ RemoveTabPage(TP_BACKGROUND);
+ }
+ if(!bHtmlMode || (nHtmlMode & HTMLMODE_PARA_BORDER))
+ AddTabPage(TP_BORDER, SvxBorderTabPage::Create, SvxBorderTabPage::GetRanges);
+ else
+ RemoveTabPage(TP_BORDER);
+ }
+
+ if (nDefPage)
+ SetCurPageId(nDefPage);
+}
+
+
+__EXPORT SwParaDlg::~SwParaDlg()
+{
+}
+
+
+void __EXPORT SwParaDlg::PageCreated(USHORT nId, SfxTabPage& rPage)
+{
+ SwWrtShell& rSh = rView.GetWrtShell();
+
+ // Bei Tabellenumrandung kann im Writer kein Schatten eingestellt werden
+ if (nId == TP_BORDER)
+ {
+ ((SvxBorderTabPage&) rPage).SetSWMode(SW_BORDER_MODE_PARA);
+ }
+ else if( nId == TP_PARA_STD )
+ {
+ ((SvxStdParagraphTabPage&)rPage).SetPageWidth(
+ rSh.GetAnyCurRect(RECT_PAGE_PRT).Width());
+ if (!bDrawParaDlg)
+ {
+ ((SvxStdParagraphTabPage&)rPage).EnableRegisterMode();
+ ((SvxStdParagraphTabPage&)rPage).EnableAutoFirstLine();
+ ((SvxStdParagraphTabPage&)rPage).EnableAbsLineDist(MM50/2);
+ ((SvxStdParagraphTabPage&)rPage).EnableNegativeMode();
+ }
+ }
+ else if( TP_PARA_ALIGN == nId)
+ {
+ if (!bDrawParaDlg)
+ ((SvxParaAlignTabPage&)rPage).EnableJustifyExt();
+ }
+ else if( TP_PARA_EXT == nId )
+ {
+ // Seitenumbruch nur, wenn der Cursor im Body-Bereich und nicht in
+ // einer Tabelle steht
+ const USHORT eType = rSh.GetFrmType(0,TRUE);
+ if( !(FRMTYPE_BODY & eType) ||
+ rSh.GetSelectionType() & SwWrtShell::SEL_TBL )
+ ((SvxExtParagraphTabPage&)rPage).DisablePageBreak();
+ }
+ else if( TP_DROPCAPS == nId )
+ {
+ ((SwDropCapsPage&)rPage).SetFormat(FALSE);
+ }
+ else if( TP_BACKGROUND == nId )
+ {
+ if(!( nHtmlMode & HTMLMODE_ON ) ||
+ nHtmlMode & HTMLMODE_SOME_STYLES)
+ ((SvxBackgroundTabPage&)rPage).ShowSelector();
+ }
+ else if( TP_NUMPARA == nId)
+ {
+ ((SwParagraphNumTabPage&)rPage).EnableNewStart();
+ ListBox & rBox = ((SwParagraphNumTabPage&)rPage).GetStyleBox();
+ SfxStyleSheetBasePool* pPool = rView.GetDocShell()->GetStyleSheetPool();
+ pPool->SetSearchMask(SFX_STYLE_FAMILY_PSEUDO, SFXSTYLEBIT_ALL);
+ const SfxStyleSheetBase* pBase = pPool->First();
+ SvStringsISortDtor aNames;
+ while(pBase)
+ {
+ aNames.Insert(new String(pBase->GetName()));
+ pBase = pPool->Next();
+ }
+ for(USHORT i = 0; i < aNames.Count(); i++)
+ rBox.InsertEntry(*aNames.GetObject(i));
+ }
+
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.195 2000/09/18 16:05:14 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.194 2000/08/24 08:44:19 ama
+ New: Negative margins
+
+ Revision 1.193 1999/05/19 07:59:54 OS
+ #66015# Absatzausrichtung: Erweiterungen nicht fuer Draw-Text
+
+
+ Rev 1.192 19 May 1999 09:59:54 OS
+ #66015# Absatzausrichtung: Erweiterungen nicht fuer Draw-Text
+
+ Rev 1.191 27 Nov 1998 14:51:26 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.190 28 Apr 1998 09:08:54 OS
+ Background: ShowSelector mit HTML-Beruecksichtigung #49862#
+
+ Rev 1.189 21 Apr 1998 15:33:44 OS
+ zwei ! an der falschen Stelle
+
+ Rev 1.188 16 Apr 1998 16:00:10 OS
+ Ranges der TabPages mitgeben #47097# Printing extensions fuer HTML
+
+ Rev 1.187 05 Feb 1998 14:45:16 OS
+ Remove-/AddTabPage alternativ, TableMode entsorgt, keine Numerierung fuer Umschlaege
+
+ Rev 1.186 02 Feb 1998 09:13:32 OS
+ neue Num-Tabpage
+
+ Rev 1.185 09 Dec 1997 16:46:28 OS
+ Numerierungsvorlagen sortieren
+
+ Rev 1.184 04 Dec 1997 16:59:12 OS
+ Numerierung im Absatzdialog
+
+ Rev 1.183 28 Nov 1997 15:03:02 MA
+ includes
+
+ Rev 1.182 21 Nov 1997 12:24:36 MA
+ includes
+
+ Rev 1.181 02 Sep 1997 10:46:12 OS
+ includes
+
+ Rev 1.180 29 Aug 1997 17:30:02 HJS
+ includes
+
+ Rev 1.179 03 Jul 1997 12:55:34 OS
+ SwSwMode jetzt mit BYTE #41255#
+
+ Rev 1.178 11 Jun 1997 16:19:54 OS
+ absolute Zeilenhoehe aktiviert
+
+ Rev 1.177 10 Feb 1997 13:22:58 OS
+ Absatz HG nur fuer FULL_STYLES
+
+ Rev 1.176 05 Feb 1997 16:20:56 OS
+ kein Hintergrund ohne Styles
+
+ Rev 1.175 05 Feb 1997 13:32:12 OS
+ im SW sind DropCaps auch fuer HTML erlaubt
+
+ Rev 1.174 28 Jan 1997 16:32:54 OS
+ alte defines entfernt
+
+ Rev 1.173 27 Jan 1997 16:15:18 OS
+ HtmlMode wird ueber GetHtmlMode ermittelt
+
+ Rev 1.172 17 Jan 1997 12:56:34 OS
+ neue Absatz-Tabpage ab 353: Ausrichtung
+
+ Rev 1.171 16 Jan 1997 18:14:12 OM
+ Tabulator-TP fuer DrawTextMode wiederbelebt
+
+ Rev 1.170 08 Jan 1997 10:54:24 OS
+ HtmlMode ueber GetHtmlMode ermitteln
+
+ Rev 1.169 28 Nov 1996 14:57:32 OS
+ keine Tabulatorpage mit uneindeutigen Absatzeinzuegen
+
+ Rev 1.168 11 Nov 1996 09:16:40 MA
+ ResMgr
+
+ Rev 1.167 14 Oct 1996 17:43:56 HJS
+ include
+
+ Rev 1.166 14 Oct 1996 12:51:16 OS
+ einige TabPages im Html-Mode verstecken
+
+ Rev 1.165 12 Sep 1996 17:03:06 OS
+ GetAnyCurRect() ersetzt GetCur*Rect
+
+ Rev 1.164 28 Aug 1996 08:59:08 OS
+ includes
+
+ Rev 1.163 09 Aug 1996 11:38:06 OM
+ #30084#GPF behoben
+
+ Rev 1.162 23 Jul 1996 16:08:18 OS
+ EnableRegisterMode am Absatzdialog setzen
+
+ Rev 1.161 24 May 1996 14:31:50 OS
+ Hintergrundgrafik enabled
+
+ Rev 1.160 05 Feb 1996 17:27:14 OM
+ #24879# Parent-Win in Ctor uebergeben
+
+ Rev 1.159 28 Nov 1995 23:37:14 JP
+ uisys.hxx gibt es nicht mehr
+
+ Rev 1.158 24 Nov 1995 16:57:34 OM
+ PCH->PRECOMPILED
+
+ Rev 1.157 23 Nov 1995 17:57:00 OM
+ Default-TabPage setzen
+
+ Rev 1.156 09 Nov 1995 17:56:38 OS
+ Format-Bit an der Initialen-Page FALSE setzen
+
+ Rev 1.155 03 Nov 1995 20:17:10 MA
+ GetUpper..Rect returne keine Objecte mehr
+
+ Rev 1.154 31 Oct 1995 18:36:08 OM
+ GetActive... entfernt
+
+ Rev 1.153 07 Aug 1995 13:42:30 JP
+ Breaks nur im Body-Bereich zulassen
+
+ Rev 1.152 06 Aug 1995 18:26:46 OM
+ DrawTextShell-Popup
+
+ Rev 1.151 14 Jul 1995 17:47:04 OS
+ Seitenbreite an der StdParagraphTabPage setzen
+
+ Rev 1.150 07 Jul 1995 10:46:52 OS
+ Seitenvorlagen werden jetzt vom Svx besorgt
+
+ Rev 1.149 25 Apr 1995 17:21:52 OS
+ PageModels fuellen BugFix 11100/11105
+
+ Rev 1.148 30 Mar 1995 18:38:18 PK
+ caption fuer absatzvorlagen
+
+ Rev 1.147 29 Mar 1995 09:12:22 OS
+ TabDialog - weniger Parameter
+
+ Rev 1.146 01 Feb 1995 17:45:44 PK
+ hideshadowcontrol()
+
+ Rev 1.145 27 Jan 1995 06:59:44 MS
+ HideShadowControls auskommentiert
+
+ Rev 1.144 26 Jan 1995 17:36:26 PK
+ hideshadowcontrols() scharfgeschaltet
+
+ Rev 1.143 26 Jan 1995 17:00:34 PK
+ pagecreated() ueberladen
+
+ Rev 1.142 24 Jan 1995 12:51:14 SWG
+ Map entfernt
+
+ Rev 1.141 09 Jan 1995 16:31:52 ER
+ del: paradlg hrc
+
+ Rev 1.140 07 Dec 1994 09:44:04 MS
+ Fix 122c
+
+ Rev 1.139 06 Dec 1994 16:30:04 MS
+ Einbau allgemeiner AbsatzDlg
+
+ Rev 1.138 05 Dec 1994 16:54:16 MS
+ Anpassung Tabdlg
+
+ Rev 1.137 01 Dec 1994 16:49:58 MS
+ GetActiveView
+
+ Rev 1.136 01 Dec 1994 16:14:02 MS
+ Id Tabpages in globals.hrc
+
+ Rev 1.135 18 Nov 1994 15:31:58 MA
+ min -> Min, max -> Max
+
+ Rev 1.134 15 Nov 1994 09:02:36 SWG
+ SetLineSpace static deklariert
+
+ Rev 1.133 02 Nov 1994 11:25:38 AMA
+ Reimport Absatzattr. als Svx (paraitem.hxx)
+ SvxSizeItem->SvxFontHeight (textitem.hxx)
+
+ Rev 1.132 28 Oct 1994 19:13:18 MA
+ Reimport frmatr.
+
+ Rev 1.131 25 Oct 1994 15:50:14 ER
+ add: PCH
+
+ Rev 1.130 14 Oct 1994 15:09:50 MS
+ ctor umgestellt
+
+ Rev 1.129 12 Oct 1994 08:12:14 MS
+ Anpassung Sfx
+
+ Rev 1.128 07 Oct 1994 10:50:02 PK
+ sexport fuer dtor
+
+ Rev 1.127 06 Oct 1994 12:09:12 VB
+ Bugfix Aenderung Parent TabPages im Sfx
+
+ Rev 1.126 06 Oct 1994 09:59:32 VB
+ Bugfix Sfx
+
+ Rev 1.125 05 Oct 1994 09:35:22 SWG
+ Aenderungen Sfx
+
+ Rev 1.124 04 Oct 1994 18:21:02 SWG
+ Syntaxaederungen Sfx
+
+ Rev 1.123 04 Oct 1994 18:07:50 SWG
+ FillSet -> FillItemSet
+
+ Rev 1.122 04 Oct 1994 16:49:40 VB
+ Grenzwerte, Handler
+
+ Rev 1.121 30 Sep 1994 16:50:32 VB
+ Zwischensicherung
+
+ Rev 1.120 29 Sep 1994 17:42:56 VB
+ Syntaxprobleme
+
+ Rev 1.119 29 Sep 1994 16:02:06 VB
+ Umstellung SfxTabDlg
+
+ Rev 1.118 28 Sep 1994 12:57:48 VB
+ Absatzdialog als Huelle
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/chrdlg/swbreak.src b/sw/source/ui/chrdlg/swbreak.src
new file mode 100644
index 000000000000..8ae036820a55
--- /dev/null
+++ b/sw/source/ui/chrdlg/swbreak.src
@@ -0,0 +1,412 @@
+/*************************************************************************
+ *
+ * $RCSfile: swbreak.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "chrdlg.hrc"
+#include "break.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ // #define DLG_BREAK 256
+ModalDialog DLG_BREAK
+{
+ HelpID = FN_INSERT_BREAK_DLG ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 161 , 114 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Umbruch einfügen : Umbruch einf³gen */
+ Text = "Umbruch einfügen" ;
+ Text [ ENGLISH ] = "Insert Break" ;
+ Text [ norwegian ] = "Sett inn Skift" ;
+ Text [ italian ] = "Inserisci interruzione" ;
+ Text [ portuguese_brazilian ] = "Inserir Interrupção" ;
+ Text [ portuguese ] = "Inserir quebra" ;
+ Text [ finnish ] = "Lisää vaihto" ;
+ Text [ danish ] = "Indsæt skift" ;
+ Text [ french ] = "Insérer un saut" ;
+ Text [ swedish ] = "Infoga brytning" ;
+ Text [ dutch ] = "Einde invoegen" ;
+ Text [ spanish ] = "Insertar salto" ;
+ Text [ english_us ] = "Insert Break" ;
+ Moveable = TRUE ;
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 105 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 105 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 105 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ };
+ RadioButton RB_LINE
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 63 , 10 ) ;
+ Text = "~Zeilenumbruch" ;
+ Text [ ENGLISH ] = "~Line break" ;
+ Text [ norwegian ] = "~Linjeskift" ;
+ Text [ italian ] = "I~nterruzione riga" ;
+ Text [ portuguese_brazilian ] = "~Quebra de linha" ;
+ Text [ portuguese ] = "~Quebra de linha" ;
+ Text [ finnish ] = "~Rivinvaihto" ;
+ Text [ danish ] = "Linjeskift" ;
+ Text [ french ] = "R~envoi à la ligne" ;
+ Text [ swedish ] = "~Radbrytning" ;
+ Text [ dutch ] = "~Regeleinde" ;
+ Text [ spanish ] = "Salto de ~línea" ;
+ Text [ english_us ] = "~Line break" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "»»ÐÐ(~L)";
+ Text[ russian ] = "Ðàçðûâ ñòðîêè";
+ Text[ polish ] = "Podzia³ ~wierszy";
+ Text[ japanese ] = "‰üs(~L)";
+ Text[ chinese_traditional ] = "´«¦æ(~L)";
+ Text[ arabic ] = "ÝÇÕá ÃÓØÑ";
+ Text[ greek ] = "ÁëëáãÞ ãñáììÞò";
+ Text[ korean ] = "¼± ³ª´©±â(~L)";
+ Text[ turkish ] = "Satýr sonu";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_PAGE
+ {
+ Pos = MAP_APPFONT ( 12 , 39 ) ;
+ Size = MAP_APPFONT ( 63 , 10 ) ;
+ Text = "~Seitenumbruch" ;
+ Text [ ENGLISH ] = "~Page break" ;
+ Text [ norwegian ] = "~Sideskift" ;
+ Text [ italian ] = "In~terruzione pagina" ;
+ Text [ portuguese_brazilian ] = "~Quebra de página" ;
+ Text [ portuguese ] = "~Quebra de página" ;
+ Text [ finnish ] = "~Sivunvaihto" ;
+ Text [ danish ] = "Sideskift" ;
+ Text [ french ] = "Saut de p~age" ;
+ Text [ swedish ] = "~Sidbrytning" ;
+ Text [ dutch ] = "~Pagina-einde" ;
+ Text [ spanish ] = "Salto de ~página" ;
+ Text [ english_us ] = "~Page break" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Text[ chinese_simplified ] = "»»Ò³(~P)";
+ Text[ russian ] = "Ðàçðûâ ñòðàíèöû";
+ Text[ polish ] = "Podzia³ stron";
+ Text[ japanese ] = "‰üÍß°¼Þ(~P)";
+ Text[ chinese_traditional ] = "´«­¶(~P)";
+ Text[ arabic ] = "ÝÇÕá ÕÝÍÇÊ";
+ Text[ greek ] = "ÁëëáãÞ óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ³ª´©±â(~P)";
+ Text[ turkish ] = "~Sayfa sonu";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_COL
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 69 , 10 ) ;
+ Text = "S~paltenumbruch" ;
+ Text [ ENGLISH ] = "~Column break" ;
+ Text [ norwegian ] = "~Kolonneskift" ;
+ Text [ italian ] = "Interr~uzione colonna" ;
+ Text [ portuguese_brazilian ] = "~Quebra de coluna" ;
+ Text [ portuguese ] = "~Quebra de coluna" ;
+ Text [ finnish ] = "~Palstanvaihto" ;
+ Text [ danish ] = "Spalteskift" ;
+ Text [ french ] = "Saut de ~colonne" ;
+ Text [ swedish ] = "Kolumnbrytning" ;
+ Text [ dutch ] = "~Kolomeinde" ;
+ Text [ spanish ] = "Salto de colu~mna" ;
+ Text [ english_us ] = "~Column break" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "»»À¸(~C)";
+ Text[ russian ] = "Ðàçðûâ êîëîíêè";
+ Text[ polish ] = "Podzia³ kolumny";
+ Text[ japanese ] = "‰ü’i(~C)";
+ Text[ chinese_traditional ] = "´«Äæ(~C)";
+ Text[ arabic ] = "ÝÇÕá ÃÚãÏÉ";
+ Text[ greek ] = "ÁëëáãÞ óôÞëçò";
+ Text[ korean ] = "¿­ ³ª´©±â(~C)";
+ Text[ turkish ] = "Sütun sonu";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_BREAK
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 93 , 105 ) ;
+ Text = "Art" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "Tipo" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "Typ" ;
+ Text [ dutch ] = "Type" ;
+ Text [ spanish ] = "Tipo" ;
+ Text [ english_us ] = "Type" ;
+ Text[ chinese_simplified ] = "ÀàÐÍ";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Ží—Þ";
+ Text[ chinese_traditional ] = "Ãþ«¬";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tür";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_COLL
+ {
+ Pos = MAP_APPFONT ( 12 , 51 ) ;
+ Size = MAP_APPFONT ( 30 , 8 ) ;
+ Text = "~Vorlage" ;
+ Text [ ENGLISH ] = "~Style" ;
+ Text [ norwegian ] = "~Style" ;
+ Text [ italian ] = "Modello" ;
+ Text [ portuguese_brazilian ] = "~Estilo" ;
+ Text [ portuguese ] = "~Estilo" ;
+ Text [ finnish ] = "~Tyyli" ;
+ Text [ danish ] = "Typografi" ;
+ Text [ french ] = "~Style" ;
+ Text [ swedish ] = "~Formatmall" ;
+ Text [ dutch ] = "~Profiel" ;
+ Text [ spanish ] = "~Estilo" ;
+ Text [ english_us ] = "~Style" ;
+ Group = TRUE ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ñùʽ(~S)";
+ Text[ russian ] = "Øàáëîí";
+ Text[ polish ] = "Szablon";
+ Text[ japanese ] = "½À²Ù(~S)";
+ Text[ chinese_traditional ] = "¼Ë¦¡(~S)";
+ Text[ arabic ] = "äãØ";
+ Text[ greek ] = "Ðñüôõðï";
+ Text[ korean ] = "À¯Çü(~S)";
+ Text[ turkish ] = "~Biçim";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_COLL
+ {
+ Pos = MAP_APPFONT ( 12 , 62 ) ;
+ Size = MAP_APPFONT ( 75 , 50 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ StringList =
+ {
+ < "[Ohne]" ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "[Ohne]" ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "[Ohne]" ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "[Nessuno]" ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "[Nenhum]" ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "[sem]" ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "[Ohne]" ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "[Uden]" ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "[Aucun]" ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "[Utan]" ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "[Geen]" ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "[Sin]" ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "[None]" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "[ÎÞ]" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "[Áåç]" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "[Brak]" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "[‚È‚µ]" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "[µL]" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "[ÈÏæä]" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "[×ùñßò]" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "[¾øÀ½]" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "[Yok]" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ };
+ };
+ CheckBox CB_PAGENUM
+ {
+ Pos = MAP_APPFONT ( 12 , 77 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Seitennummer ~ändern : Seitennummer ~õndern */
+ Text = "Seitennummer ~ändern" ;
+ Text [ English ] = "Change page number" ;
+ Text [ norwegian ] = "Endre sidenummer" ;
+ Text [ italian ] = "Cambia numero pagina" ;
+ Text [ portuguese_brazilian ] = "Mudar número de página" ;
+ Text [ portuguese ] = "Alterar número de página" ;
+ Text [ finnish ] = "Muuttaa sivunumeroa" ;
+ Text [ danish ] = "Modificer sidetal" ;
+ Text [ french ] = "Modifier ~no. de page" ;
+ Text [ swedish ] = "~Ändra sidnummer" ;
+ Text [ dutch ] = "~Paginanummer wijzigen" ;
+ Text [ spanish ] = "Cam~biar número de página" ;
+ Text [ english_us ] = "Change page ~number" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¸ü¸ÄÒ³Âë(~N)";
+ Text[ russian ] = "Èçìåíèòü íîìåð ñòðàíèöû";
+ Text[ polish ] = "Zmieñ numer strony";
+ Text[ japanese ] = "Íß°¼Þ”Ô†‚Ì•ÏX(~N)";
+ Text[ chinese_traditional ] = "Åܧ󭶽X(~N)";
+ Text[ arabic ] = "ÊÛííÑ ÑÞã ÇáÕÝÍÉ";
+ Text[ greek ] = "ÁëëáãÞ áñéèìïý óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ¹øÈ£ º¯°æ(~N)";
+ Text[ turkish ] = "Sayfa numarasýný deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField ED_PAGENUM
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 90 ) ;
+ Size = MAP_APPFONT ( 31 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 9999 ;
+ Value = 1 ;
+ First = 1 ;
+ Last = 9999 ;
+ };
+ Text[ chinese_simplified ] = "²åÈë»»ÐÐ";
+ Text[ russian ] = "Âñòàâèòü ðàçðûâ";
+ Text[ polish ] = "Wstaw podzia³";
+ Text[ japanese ] = "‹æØ‚è‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J´«¦æ";
+ Text[ arabic ] = "ÅÏÑÇÌ ÝÇÕá";
+ Text[ greek ] = "ÅéóáãùãÞ áëëáãÞò";
+ Text[ korean ] = "³ª´©±â »ðÀÔ";
+ Text[ turkish ] = "Kesme ekle";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/chrdlg/tblnumfm.cxx b/sw/source/ui/chrdlg/tblnumfm.cxx
new file mode 100644
index 000000000000..1be5e38a3f89
--- /dev/null
+++ b/sw/source/ui/chrdlg/tblnumfm.cxx
@@ -0,0 +1,127 @@
+/*************************************************************************
+ *
+ * $RCSfile: tblnumfm.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SVX_NUMFMT_HXX //autogen
+#include <svx/numfmt.hxx>
+#endif
+
+#include "swtypes.hxx"
+
+#include "chrdlg.hrc"
+#include "tblnumfm.hxx"
+
+
+SwNumFmtDlg::SwNumFmtDlg(Window* pParent, SfxItemSet& rSet) :
+
+ SfxSingleTabDialog(pParent, rSet, 0)
+
+{
+// SetText(SW_RESSTR(STR_NUMFMT));
+
+ // TabPage erzeugen
+ SvxNumberFormatTabPage* pPage = (SvxNumberFormatTabPage*) SvxNumberFormatTabPage::Create(this, rSet);
+ const SfxPoolItem& rInfoItem = pPage->GetItemSet().Get(SID_ATTR_NUMBERFORMAT_INFO);
+ pPage->SetNumberFormatList((const SvxNumberInfoItem&)rInfoItem );
+
+ SetTabPage(pPage);
+}
+
+
+SwNumFmtDlg::~SwNumFmtDlg()
+{
+}
+
+/*************************************************************************
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.5 2000/09/18 16:05:15 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.4 1998/02/25 11:39:14 TJ
+ include
+
+
+ Rev 1.3 25 Feb 1998 12:39:14 TJ
+ include
+
+ Rev 1.2 21 Nov 1997 12:24:36 MA
+ includes
+
+ Rev 1.1 03 Nov 1997 13:10:22 MA
+ precomp entfernt
+
+ Rev 1.0 14 Feb 1997 18:05:02 OM
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/ui/config/barcfg.cxx b/sw/source/ui/config/barcfg.cxx
new file mode 100644
index 000000000000..2bf41ce41495
--- /dev/null
+++ b/sw/source/ui/config/barcfg.cxx
@@ -0,0 +1,183 @@
+/*************************************************************************
+ *
+ * $RCSfile: barcfg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _TOOLS_TABLE_HXX //autogen
+#include <tools/table.hxx>
+#endif
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+
+#include "barcfg.hxx"
+#include "cfgid.h"
+
+#define BAR_VERSION UINT16(1)
+
+DECLARE_TABLE(CfgUSHORTTable,void*);
+
+SwToolbarConfigItem::SwToolbarConfigItem( BOOL bWeb ) :
+ SfxConfigItem( bWeb ? CFG_TOOLBARCONFIG_ITEM : CFG_WEBTOOLBARCONFIG_ITEM ),
+ pTbl( new CfgUSHORTTable )
+{
+ SetInternal( TRUE );
+}
+
+SwToolbarConfigItem::~SwToolbarConfigItem()
+{
+ delete pTbl;
+}
+
+void SwToolbarConfigItem::SetTopToolbar( int nSelType, USHORT nBarId )
+{
+ if ( !pTbl->IsKeyValid( ULONG(nSelType) ) )
+ pTbl->Insert( ULONG(nSelType), (void*)(ULONG)nBarId );
+ else
+ pTbl->Replace( ULONG(nSelType), (void*)(ULONG)nBarId );
+}
+
+USHORT SwToolbarConfigItem::GetTopToolbar( int nSelType )
+{
+ if ( !pTbl->IsKeyValid( ULONG(nSelType) ) )
+ return USHRT_MAX;
+ else
+ return (USHORT)(ULONG)pTbl->Get( ULONG(nSelType) );
+}
+
+BOOL SwToolbarConfigItem::Store(SvStream& rStrm)
+{
+ rStrm << BAR_VERSION;
+ rStrm << UINT16(pTbl->Count());
+
+ if ( pTbl->Count() )
+ {
+ UINT16 nVal = UINT16((ULONG)pTbl->First());
+ while ( nVal )
+ {
+ UINT16 nKey = UINT16((ULONG)pTbl->GetCurKey());
+ rStrm << nKey << nVal;
+ nVal = UINT16((ULONG)pTbl->Next());
+ }
+ }
+
+ return SfxConfigItem::ERR_OK;
+}
+
+
+int SwToolbarConfigItem::Load(SvStream& rStrm)
+{
+ UINT16 nVersion;
+ rStrm >> nVersion;
+
+ if ( nVersion >= BAR_VERSION )
+ {
+ UINT16 nCount;
+ rStrm >> nCount;
+ if ( nCount )
+ {
+ for ( UINT16 i = 0; i < nCount; ++i )
+ {
+ UINT16 nKey, nVal;
+ rStrm >> nKey >> nVal;
+ pTbl->Insert( nKey, (void*)(ULONG)nVal );
+ }
+ }
+
+ SetDefault(FALSE);
+ return SfxConfigItem::ERR_OK;
+ }
+ else
+ return SfxConfigItem::WARNING_VERSION;
+}
+
+
+void SwToolbarConfigItem::UseDefault()
+{
+ SfxConfigItem::UseDefault();
+ pTbl->Clear();
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.4 2000/09/18 16:05:15 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.3 1998/04/08 11:46:42 OS
+ einer noch..
+
+
+ Rev 1.2 08 Apr 1998 13:46:42 OS
+ einer noch..
+
+ Rev 1.1 08 Apr 1998 13:41:32 OS
+ Table mit void* -> fuer UNX und MAC
+
+ Rev 1.0 02 Apr 1998 10:06:04 MA
+ new: ToolbarCfg
+
+
+------------------------------------------------------------------------*/
diff --git a/sw/source/ui/config/caption.cxx b/sw/source/ui/config/caption.cxx
new file mode 100644
index 000000000000..e15b1cf66b48
--- /dev/null
+++ b/sw/source/ui/config/caption.cxx
@@ -0,0 +1,238 @@
+/*************************************************************************
+ *
+ * $RCSfile: caption.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _TOOLS_DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+
+#include "numrule.hxx"
+#include "caption.hxx"
+
+#define VERSION_01 1
+#define CAPTION_VERSION VERSION_01
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+InsCaptionOpt::InsCaptionOpt(const SwCapObjType eType, const SvGlobalName* pOleId) :
+ bUseCaption(FALSE),
+ eObjType(eType),
+ nNumType(SVX_NUM_ARABIC),
+ nPos(1),
+ nLevel(0),
+ cSeparator('.'),
+ bIgnoreSeqOpts(FALSE),
+ bCopyAttributes(FALSE)
+{
+ if (pOleId)
+ aOleId = *pOleId;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+InsCaptionOpt::InsCaptionOpt(const InsCaptionOpt& rOpt)
+{
+ *this = rOpt;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+InsCaptionOpt::~InsCaptionOpt()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+InsCaptionOpt& InsCaptionOpt::operator=( const InsCaptionOpt& rOpt )
+{
+ bUseCaption = rOpt.bUseCaption;
+ eObjType = rOpt.eObjType;
+ aOleId = rOpt.aOleId;
+ sCategory = rOpt.sCategory;
+ nNumType = rOpt.nNumType;
+ sCaption = rOpt.sCaption;
+ nPos = rOpt.nPos;
+ nLevel = rOpt.nLevel;
+ cSeparator = rOpt.cSeparator;
+ bIgnoreSeqOpts = rOpt.bIgnoreSeqOpts;
+ bCopyAttributes = rOpt.bCopyAttributes;
+
+ return *this;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+BOOL InsCaptionOpt::operator==( const InsCaptionOpt& rOpt ) const
+{
+ return (eObjType == rOpt.eObjType &&
+ aOleId == rOpt.aOleId); // Damit gleiche Ole-IDs nicht mehrfach eingefuegt
+ // werden koennen, auf nichts weiteres vergleichen
+
+
+/* &&
+ sCategory == rOpt.sCategory &&
+ nNumType == rOpt.nNumType &&
+ sCaption == rOpt.sCaption &&
+ nPos == rOpt.nPos &&
+ nLevel == rOpt.nLevel &&
+ cSeparator == rOpt.cSeparator);*/
+}
+
+/*************************************************************************
+|*
+|* InsCaptionOpt::operator>>()
+|*
+|* Beschreibung Stream-Leseoperator
+|*
+*************************************************************************/
+
+SvStream& operator>>( SvStream& rIStream, InsCaptionOpt& rCapOpt )
+{
+ rtl_TextEncoding eEncoding = gsl_getSystemTextEncoding();
+ UINT16 nVal;
+ BYTE cVal;
+ BYTE nVersion;
+
+ rIStream >> nVersion;
+ rIStream >> cVal; rCapOpt.UseCaption() = cVal != 0;
+ rIStream >> nVal; rCapOpt.eObjType = (SwCapObjType)nVal;
+ rIStream >> rCapOpt.aOleId;
+
+ rIStream.ReadByteString( rCapOpt.sCategory, eEncoding );
+ rIStream >> nVal; rCapOpt.nNumType = nVal;
+ rIStream.ReadByteString( rCapOpt.sCaption, eEncoding );
+ rIStream >> nVal; rCapOpt.nPos = nVal;
+ rIStream >> nVal; rCapOpt.nLevel = nVal;
+
+ rIStream >> cVal;
+ rCapOpt.cSeparator = UniString( ByteString(cVal) , eEncoding).GetChar(0);
+
+ return rIStream;
+}
+
+/*************************************************************************
+|*
+|* InsCaptionOpt::operator<<()
+|*
+|* Beschreibung Stream-Schreiboperator
+|*
+*************************************************************************/
+
+SvStream& operator<<( SvStream& rOStream, const InsCaptionOpt& rCapOpt )
+{
+ rtl_TextEncoding eEncoding = gsl_getSystemTextEncoding();
+ rOStream << (BYTE)CAPTION_VERSION
+ << (BYTE)rCapOpt.UseCaption()
+ << (UINT16)rCapOpt.eObjType
+ << rCapOpt.aOleId;
+
+ rOStream.WriteByteString( rCapOpt.sCategory, eEncoding );
+
+ rOStream << (UINT16)rCapOpt.nNumType;
+
+ rOStream.WriteByteString( rCapOpt.sCaption, eEncoding );
+
+ BYTE cSep = ByteString(UniString(rCapOpt.cSeparator), eEncoding).GetChar(0);
+ rOStream << (UINT16)rCapOpt.nPos
+ << (UINT16)rCapOpt.nLevel
+ << cSep;
+
+ return rOStream;
+}
+
+/*--------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.5 2000/09/18 16:05:15 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.4 2000/04/11 08:02:23 os
+ UNICODE
+
+ Revision 1.3 1999/06/09 08:49:44 OS
+ #66732# Insert caption: copy border and shadow optionally
+
+
+ Rev 1.2 09 Jun 1999 10:49:44 OS
+ #66732# Insert caption: copy border and shadow optionally
+
+ Rev 1.1 17 Nov 1998 10:50:12 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.0 06 Nov 1998 17:01:32 OM
+ Initial revision.
+
+ --------------------------------------------------------------------*/
diff --git a/sw/source/ui/config/cfgitems.cxx b/sw/source/ui/config/cfgitems.cxx
new file mode 100644
index 000000000000..e50d8860f821
--- /dev/null
+++ b/sw/source/ui/config/cfgitems.cxx
@@ -0,0 +1,855 @@
+/*************************************************************************
+ *
+ * $RCSfile: cfgitems.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef __SBX_SBXVARIABLE_HXX //autogen
+#include <svtools/sbxvar.hxx>
+#endif
+
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+
+#ifndef _SVX_SVXENUM_HXX //autogen
+#include <svx/svxenum.hxx>
+#endif
+
+
+#include "viewopt.hxx"
+#include "swtypes.hxx"
+#include "cmdid.h"
+#include "prtopt.hxx"
+#include "cfgitems.hxx"
+#include "crstate.hxx"
+
+
+
+TYPEINIT1_AUTOFACTORY(SwDocDisplayItem, SfxPoolItem)
+TYPEINIT1_AUTOFACTORY(SwElemItem, SfxPoolItem)
+TYPEINIT1_AUTOFACTORY(SwAddPrinterItem, SfxPoolItem)
+TYPEINIT1_AUTOFACTORY(SwShadowCursorItem, SfxPoolItem)
+
+
+SwDocDisplayItem::SwDocDisplayItem( USHORT nWhich ) :
+ SfxPoolItem(nWhich),
+ aIndexBackgrndCol(COL_GRAY)
+{
+ bParagraphEnd =
+ bTab =
+ bSpace =
+ bNonbreakingSpace =
+ bSoftHyphen =
+ bHiddenText =
+ bManualBreak =
+ bIndexEntry =
+ bIndexBackground =
+ bFootnoteBackground =
+ bField =
+ bTable =
+ bGraphic =
+ bDrawing =
+ bFieldName =
+ bNotes =
+ bShowHiddenPara = FALSE;
+};
+
+
+/*------------OS 12.01.95 -------------------------------------------
+ Item fuer Einstellungsdialog, Seite Dokumentansicht
+--------------------------------------------------------------------*/
+
+SwDocDisplayItem::SwDocDisplayItem( const SwDocDisplayItem& rDocDisplayItem ):
+ SfxPoolItem(rDocDisplayItem)
+{
+ *this = rDocDisplayItem;
+};
+
+/*----------------------- -------------------------------------------
+
+--------------------------------------------------------------------*/
+
+SwDocDisplayItem::SwDocDisplayItem(const SwViewOption& rVOpt, USHORT nWhich ) :
+ SfxPoolItem( nWhich )
+{
+ bParagraphEnd = rVOpt.IsParagraph(TRUE);
+ bTab = rVOpt.IsTab(TRUE);
+ bSpace = rVOpt.IsBlank(TRUE);
+ bNonbreakingSpace = rVOpt.IsHardBlank();
+ bSoftHyphen = rVOpt.IsSoftHyph();
+ bHiddenText = rVOpt.IsHidden();
+ bManualBreak = rVOpt.IsLineBreak(TRUE);
+ bIndexEntry = rVOpt.IsTox();
+ bIndexBackground = rVOpt.IsIndexBackground();
+ bFootnoteBackground = rVOpt.IsFootNote();
+ bField = rVOpt.IsField();
+ bTable = rVOpt.IsTable();
+ bGraphic = rVOpt.IsGraphic();
+ bDrawing = rVOpt.IsDraw() && rVOpt.IsControl();
+ bFieldName = rVOpt.IsFldName();
+ bNotes = rVOpt.IsPostIts();
+ bShowHiddenPara = rVOpt.IsShowHiddenPara();
+
+ aIndexBackgrndCol = rVOpt.GetIndexBackgrndColor();
+
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxPoolItem* SwDocDisplayItem::Clone( SfxItemPool* ) const
+{
+ return new SwDocDisplayItem( *this );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+int SwDocDisplayItem::operator==( const SfxPoolItem& rAttr ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unterschiedliche Typen" );
+
+ const SwDocDisplayItem& rItem = (SwDocDisplayItem&)rAttr;
+
+ return ( bParagraphEnd == rItem.bParagraphEnd &&
+ bTab == rItem.bTab &&
+ bSpace == rItem.bSpace &&
+ bNonbreakingSpace == rItem.bNonbreakingSpace &&
+ bSoftHyphen == rItem.bSoftHyphen &&
+ bHiddenText == rItem.bHiddenText &&
+ bManualBreak == rItem.bManualBreak &&
+ bIndexEntry == rItem.bIndexEntry &&
+ bIndexBackground == rItem.bIndexBackground &&
+ bFootnoteBackground == rItem.bFootnoteBackground &&
+ bField == rItem.bField &&
+ bTable == rItem.bTable &&
+ bGraphic == rItem.bGraphic &&
+ bDrawing == rItem.bDrawing &&
+ bFieldName == rItem.bFieldName &&
+ bNotes == rItem.bNotes &&
+ bShowHiddenPara == rItem.bShowHiddenPara &&
+ aIndexBackgrndCol == rItem.aIndexBackgrndCol );
+}
+
+
+/*-----------------31.08.96 14.14-------------------
+
+--------------------------------------------------*/
+
+
+void SwDocDisplayItem::operator=( const SwDocDisplayItem& rDocDisplayItem)
+{
+ bParagraphEnd = rDocDisplayItem.bParagraphEnd ;
+ bTab = rDocDisplayItem.bTab ;
+ bSpace = rDocDisplayItem.bSpace ;
+ bNonbreakingSpace = rDocDisplayItem.bNonbreakingSpace ;
+ bSoftHyphen = rDocDisplayItem.bSoftHyphen ;
+ bHiddenText = rDocDisplayItem.bHiddenText ;
+ bManualBreak = rDocDisplayItem.bManualBreak ;
+ bIndexEntry = rDocDisplayItem.bIndexEntry ;
+ bIndexBackground = rDocDisplayItem.bIndexBackground ;
+ bFootnoteBackground = rDocDisplayItem.bFootnoteBackground ;
+ bField = rDocDisplayItem.bField ;
+ bTable = rDocDisplayItem.bTable ;
+ bGraphic = rDocDisplayItem.bGraphic ;
+ bDrawing = rDocDisplayItem.bDrawing ;
+ bFieldName = rDocDisplayItem.bFieldName ;
+ bNotes = rDocDisplayItem.bNotes ;
+ bShowHiddenPara = rDocDisplayItem.bShowHiddenPara ;
+ aIndexBackgrndCol = rDocDisplayItem.aIndexBackgrndCol ;
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwDocDisplayItem::FillViewOptions( SwViewOption& rVOpt) const
+{
+ rVOpt.SetParagraph (bParagraphEnd );
+ rVOpt.SetTab (bTab );
+ rVOpt.SetBlank (bSpace );
+ rVOpt.SetHardBlank (bNonbreakingSpace );
+ rVOpt.SetSoftHyph (bSoftHyphen );
+ rVOpt.SetHidden (bHiddenText );
+ rVOpt.SetLineBreak (bManualBreak );
+ rVOpt.SetTox (bIndexEntry );
+ rVOpt.SetFootNote (bFootnoteBackground);
+ rVOpt.SetIndexBackground(bIndexBackground);
+ rVOpt.SetField (bField );
+ rVOpt.SetTable (bTable );
+ rVOpt.SetGraphic (bGraphic );
+ rVOpt.SetDraw (bDrawing );
+ rVOpt.SetControl (bDrawing );
+ rVOpt.SetFldName (bFieldName );
+ rVOpt.SetPostIts (bNotes );
+ rVOpt.SetShowHiddenPara(bShowHiddenPara );
+
+ rVOpt.SetIndexBackgrndColor(aIndexBackgrndCol);
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwElemItem::SwElemItem( USHORT nWhich ) :
+ SfxPoolItem(nWhich)
+{
+ bHorzScrollbar =
+ bVertScrollbar =
+ bHorzRuler =
+ bVertRuler =
+ bTableBounds =
+ bSectionBounds =
+ bCrosshair =
+ bBounds =
+ bStatusLine =
+ bHandles =
+ bBigHandles =
+ bSmoothScroll = FALSE;
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwElemItem::SwElemItem( const SwElemItem& rElemItem ):
+ SfxPoolItem(rElemItem)
+{
+ *this = rElemItem;
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwElemItem::SwElemItem(const SwViewOption& rVOpt, USHORT nWhich) :
+ SfxPoolItem( nWhich )
+{
+ bHorzScrollbar = rVOpt.IsViewHScrollBar();
+ bVertScrollbar = rVOpt.IsViewVScrollBar();
+ bHorzRuler = rVOpt.IsViewTabwin();
+ bVertRuler = rVOpt.IsViewVLin();
+ bTableBounds = rVOpt.IsSubsTable();
+ bSectionBounds = rVOpt.IsSectionBounds();
+ bCrosshair = rVOpt.IsCrossHair();
+ bBounds = rVOpt.IsSubsLines();
+ bHandles = rVOpt.IsSolidMarkHdl();
+ bBigHandles = rVOpt.IsBigMarkHdl();
+ bSmoothScroll = rVOpt.IsSmoothScroll();
+
+// bStatusLine
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxPoolItem* SwElemItem::Clone( SfxItemPool* ) const
+{
+ return new SwElemItem( *this );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+int SwElemItem::operator==( const SfxPoolItem& rAttr ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unterschiedliche Typen" );
+
+ const SwElemItem& rItem = (SwElemItem&)rAttr;
+
+ return ( bHorzScrollbar == rItem.bHorzScrollbar &&
+ bVertScrollbar == rItem.bVertScrollbar &&
+ bHorzRuler == rItem.bHorzRuler &&
+ bVertRuler == rItem.bVertRuler &&
+ bTableBounds == rItem.bTableBounds &&
+ bSectionBounds == rItem.bSectionBounds &&
+ bCrosshair == rItem.bCrosshair &&
+ bBounds == rItem.bBounds &&
+ bStatusLine == rItem.bStatusLine &&
+ bHandles == rItem.bHandles &&
+ bBigHandles == rItem.bBigHandles &&
+ bSmoothScroll == rItem.bSmoothScroll );
+}
+
+/*-----------------31.08.96 14.13-------------------
+
+--------------------------------------------------*/
+
+
+void SwElemItem::operator=( const SwElemItem& rElemItem)
+{
+ bHorzScrollbar = rElemItem. bHorzScrollbar ;
+ bVertScrollbar = rElemItem. bVertScrollbar ;
+ bHorzRuler = rElemItem. bHorzRuler ;
+ bVertRuler = rElemItem. bVertRuler ;
+ bTableBounds = rElemItem. bTableBounds ;
+ bSectionBounds = rElemItem. bSectionBounds ;
+ bCrosshair = rElemItem. bCrosshair ;
+ bBounds = rElemItem. bBounds ;
+ bStatusLine = rElemItem. bStatusLine ;
+ bHandles = rElemItem. bHandles ;
+ bBigHandles = rElemItem. bBigHandles ;
+ bSmoothScroll = rElemItem. bSmoothScroll ;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwElemItem::FillViewOptions( SwViewOption& rVOpt) const
+{
+ rVOpt.SetViewHScrollBar(bHorzScrollbar );
+ rVOpt.SetViewVScrollBar(bVertScrollbar );
+ rVOpt.SetViewTabwin(bHorzRuler );
+ rVOpt.SetViewVLin(bVertRuler );
+ rVOpt.SetSubsTable(bTableBounds );
+ rVOpt.SetSectionBounds(bSectionBounds);
+ rVOpt.SetCrossHair(bCrosshair );
+ rVOpt.SetSubsLines(bBounds );
+ rVOpt.SetSolidMarkHdl(bHandles );
+ rVOpt.SetBigMarkHdl(bBigHandles );
+ rVOpt.SetSmoothScroll(bSmoothScroll);
+// bStatusLine
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: CopyCTOR
+ --------------------------------------------------------------------*/
+
+SwAddPrinterItem::SwAddPrinterItem( const SwAddPrinterItem& rAddPrinterItem ):
+ SfxPoolItem(rAddPrinterItem)
+{
+ bPrintGraphic = rAddPrinterItem.bPrintGraphic ;
+ bPrintTable = rAddPrinterItem.bPrintTable ;
+ bPrintDrawing = rAddPrinterItem.bPrintDrawing ;
+ bPrintControl = rAddPrinterItem.bPrintControl ;
+ bPrintLeftPage = rAddPrinterItem.bPrintLeftPage ;
+ bPrintRightPage = rAddPrinterItem.bPrintRightPage;
+ bPrintReverse = rAddPrinterItem.bPrintReverse ;
+ bPaperFromSetup = rAddPrinterItem.bPaperFromSetup;
+ bPrintProspect = rAddPrinterItem.bPrintProspect ;
+ bPrintPageBackground= rAddPrinterItem.bPrintPageBackground;
+ bPrintBlackFont = rAddPrinterItem.bPrintBlackFont;
+ bPrintSingleJobs = rAddPrinterItem.bPrintSingleJobs;
+ nPrintPostIts = rAddPrinterItem.nPrintPostIts ;
+ sFaxName = rAddPrinterItem.sFaxName ;
+
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: CTOR fuer leeres Item
+ --------------------------------------------------------------------*/
+
+SwAddPrinterItem::SwAddPrinterItem( USHORT nWhich):
+ SfxPoolItem(nWhich),
+ bPrintGraphic(FALSE),
+ bPrintTable(FALSE),
+ bPrintDrawing(FALSE),
+ bPrintControl(FALSE),
+ bPrintLeftPage(FALSE),
+ bPrintRightPage(FALSE),
+ bPrintReverse(FALSE),
+ bPaperFromSetup(FALSE),
+ bPrintProspect(FALSE),
+ bPrintPageBackground(FALSE),
+ nPrintPostIts(0),
+ sFaxName( aEmptyStr )
+{
+}
+/*--------------------------------------------------------------------
+ Beschreibung: CTOR aus SwPrintOptions
+ --------------------------------------------------------------------*/
+
+SwAddPrinterItem::SwAddPrinterItem( USHORT nWhich, SwPrintOptions* pPrtOpt ) :
+ SfxPoolItem(nWhich)
+{
+ bPrintGraphic = pPrtOpt->IsPrintGraphic();
+ bPrintTable = pPrtOpt->IsPrintTable();
+ bPrintDrawing = pPrtOpt->IsPrintDraw();
+ bPrintControl = pPrtOpt->IsPrintControl();
+ bPrintLeftPage = pPrtOpt->IsPrintLeftPage();
+ bPrintRightPage= pPrtOpt->IsPrintRightPage();
+ bPrintReverse = pPrtOpt->IsPrintReverse();
+ bPaperFromSetup= pPrtOpt->IsPaperFromSetup();
+ bPrintProspect = pPrtOpt->IsPrintProspect();
+ bPrintPageBackground= pPrtOpt->IsPrintPageBackground();
+ nPrintPostIts = pPrtOpt->GetPrintPostIts();
+ bPrintBlackFont = pPrtOpt->IsPrintBlackFont();
+ bPrintSingleJobs = pPrtOpt->IsPrintSingleJobs();
+ sFaxName = pPrtOpt->GetFaxName();
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxPoolItem* SwAddPrinterItem::Clone( SfxItemPool* ) const
+{
+ return new SwAddPrinterItem( *this );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+int SwAddPrinterItem::operator==( const SfxPoolItem& rAttr ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unterschiedliche Typen" );
+
+ const SwAddPrinterItem& rItem = (SwAddPrinterItem&)rAttr;
+
+ return ( bPrintGraphic == rItem.bPrintGraphic &&
+ bPrintDrawing == rItem.bPrintDrawing &&
+ bPrintControl == rItem.bPrintControl &&
+ bPrintTable == rItem.bPrintTable &&
+ bPrintLeftPage == rItem.bPrintLeftPage &&
+ bPrintRightPage == rItem.bPrintRightPage &&
+ bPrintReverse == rItem.bPrintReverse &&
+ bPaperFromSetup == rItem.bPaperFromSetup &&
+ bPrintProspect == rItem.bPrintProspect &&
+ bPrintPageBackground == rItem.bPrintPageBackground &&
+ bPrintBlackFont == rItem.bPrintBlackFont &&
+ bPrintSingleJobs== rItem.bPrintSingleJobs&&
+ nPrintPostIts == rItem.nPrintPostIts &&
+ sFaxName == rItem.sFaxName );
+}
+// -----------------------------------------------------------------------
+
+void SwAddPrinterItem::SetPrintOptions( SwPrintOptions* pPrtOpt ) const
+{
+ pPrtOpt->SetPrintGraphic (bPrintGraphic);
+ pPrtOpt->SetPrintTable (bPrintTable);
+ pPrtOpt->SetPrintDraw (bPrintDrawing);
+ pPrtOpt->SetPrintControl (bPrintControl);
+ pPrtOpt->SetPrintLeftPage (bPrintLeftPage);
+ pPrtOpt->SetPrintRightPage (bPrintRightPage);
+ pPrtOpt->SetPrintReverse (bPrintReverse);
+ pPrtOpt->SetPaperFromSetup (bPaperFromSetup);
+ pPrtOpt->SetPrintPostIts (nPrintPostIts);
+ pPrtOpt->SetPrintProspect (bPrintProspect);
+ pPrtOpt->SetPrintPageBackground( bPrintPageBackground );
+ pPrtOpt->SetPrintBlackFont( bPrintBlackFont );
+ pPrtOpt->SetPrintSingleJobs( bPrintSingleJobs );
+}
+
+
+/*-----------------03.11.97 10:00-------------------
+ Item fuer Einstellungsdialog, ShadowCursorSeite
+--------------------------------------------------*/
+
+SwShadowCursorItem::SwShadowCursorItem( USHORT nWhich )
+ : SfxPoolItem( nWhich ),
+ bOn( FALSE ), eMode( FILL_TAB ), aColor( COL_BLUE )
+{
+}
+
+SwShadowCursorItem::SwShadowCursorItem( const SwShadowCursorItem& rCpy )
+ : SfxPoolItem( rCpy.Which() ),
+ bOn( rCpy.IsOn() ), eMode( rCpy.GetMode() ), aColor( rCpy.GetColor() )
+{
+}
+
+SwShadowCursorItem::SwShadowCursorItem( const SwViewOption& rVOpt, USHORT nWhich )
+ : SfxPoolItem( nWhich ),
+ bOn( rVOpt.IsShadowCursor() ),
+ eMode( rVOpt.GetShdwCrsrFillMode() ),
+ aColor( rVOpt.GetShdwCrsrColor() )
+{
+}
+
+SfxPoolItem* SwShadowCursorItem::Clone( SfxItemPool* ) const
+{
+ return new SwShadowCursorItem( *this );
+}
+
+int SwShadowCursorItem::operator==( const SfxPoolItem& rCmp ) const
+{
+ return IsOn() == ((SwShadowCursorItem&)rCmp).IsOn() &&
+ GetMode() == ((SwShadowCursorItem&)rCmp).GetMode() &&
+ GetColor() == ((SwShadowCursorItem&)rCmp).GetColor();
+}
+
+void SwShadowCursorItem::operator=( const SwShadowCursorItem& rCpy )
+{
+ SetOn( rCpy.IsOn() );
+ SetMode( rCpy.GetMode() );
+ SetColor( rCpy.GetColor() );
+}
+
+
+void SwShadowCursorItem::FillViewOptions( SwViewOption& rVOpt ) const
+{
+ rVOpt.SetShadowCursor( bOn );
+ rVOpt.SetShdwCrsrFillMode( eMode );
+ rVOpt.SetShdwCrsrColor( aColor );
+}
+
+#ifndef PRODUCT
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwTestItem::SwTestItem( const SwTestItem& rTestItem ):
+ SfxPoolItem(rTestItem)
+{
+ bTest1=rTestItem.bTest1;
+ bTest2=rTestItem.bTest2;
+ bTest3=rTestItem.bTest3;
+ bTest4=rTestItem.bTest4;
+ bTest5=rTestItem.bTest5;
+ bTest6=rTestItem.bTest6;
+ bTest7=rTestItem.bTest7;
+ bTest8=rTestItem.bTest8;
+ bTest9=rTestItem.bTest9;
+ bTest10=rTestItem.bTest10;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxPoolItem* SwTestItem::Clone( SfxItemPool* ) const
+{
+ return new SwTestItem( *this );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+int SwTestItem::operator==( const SfxPoolItem& rAttr ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unterschiedliche Typen" );
+
+ const SwTestItem& rItem = (const SwTestItem&) rAttr;
+
+ return ( bTest1==rItem.bTest1&&
+ bTest2==rItem.bTest2&&
+ bTest3==rItem.bTest3&&
+ bTest4==rItem.bTest4&&
+ bTest5==rItem.bTest5&&
+ bTest6==rItem.bTest6&&
+ bTest7==rItem.bTest7&&
+ bTest8==rItem.bTest8&&
+ bTest9==rItem.bTest9&&
+ bTest10==rItem.bTest10);
+}
+
+#endif
+
+
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.80 2000/09/18 16:05:15 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.79 2000/09/07 08:26:13 os
+ FaxName now in SwPrintOptions
+
+ Revision 1.78 2000/05/26 07:21:28 os
+ old SW Basic API Slots removed
+
+ Revision 1.77 1999/12/14 14:29:10 jp
+ Bug #69595#: print can create single Jobs
+
+ Revision 1.76 1999/09/22 12:37:43 os
+ big handles
+
+ Revision 1.75 1999/09/01 08:42:36 OS
+ useless GetPresentation() removed
+
+
+ Rev 1.74 01 Sep 1999 10:42:36 OS
+ useless GetPresentation() removed
+
+ Rev 1.73 16 Aug 1999 14:09:42 OS
+ #68153# show drawings and controls: call SetControl()
+
+ Rev 1.72 09 Jun 1999 13:20:54 OS
+ index background
+
+ Rev 1.71 27 Jan 1999 10:03:12 OS
+ #58677# Cursor in Readonly-Bereichen
+
+ Rev 1.70 05 Mar 1998 14:34:08 OM
+ Redline-Attribute in Module-Cfg speichern
+
+ Rev 1.69 20 Feb 1998 17:10:50 OM
+ ConfigItem fuer Redlining-Darstellungsoptionen
+
+ Rev 1.68 24 Nov 1997 17:58:50 MA
+ include
+
+ Rev 1.67 11 Nov 1997 14:04:30 MA
+ precomp entfernt
+
+ Rev 1.66 03 Nov 1997 16:12:16 JP
+ neu: Optionen/-Page/Basic-Schnittst. fuer ShadowCursor
+
+ Rev 1.65 19 Aug 1997 10:36:08 OS
+ PrintPreview aus den ViewSettings raus #42797#
+
+ Rev 1.64 16 Aug 1997 09:33:06 OS
+ Col/RowPreView aus den PrintSettings entfernt #42797#
+
+ Rev 1.63 09 Jun 1997 14:28:40 MA
+ chg: Browse-Flag nur noch am Doc
+
+ Rev 1.62 06 Jun 1997 12:44:30 MA
+ chg: versteckte Absaetze ausblenden
+
+ Rev 1.61 25 Feb 1997 10:21:16 OS
+ farbige Handles
+
+ Rev 1.60 27 Jan 1997 16:29:42 OS
+ HtmlMode entfernt
+
+ Rev 1.59 11 Dec 1996 18:16:28 NF
+ Cut-Copy-Paste Fehler behoben !?
+
+ Rev 1.58 11 Dec 1996 14:12:02 OS
+ Warnings auch fuers Basic ausbauen
+
+ Rev 1.57 10 Dec 1996 17:00:06 OS
+ Warnungen von der OFA
+
+ Rev 1.56 28 Nov 1996 15:20:24 OS
+ neu: Schwarz drucken
+
+ Rev 1.55 06 Sep 1996 14:31:54 OS
+ Postits beruecksichtigen
+
+ Rev 1.54 31 Aug 1996 17:14:02 OS
+ neue Optionendialoge
+
+ Rev 1.53 25 Jul 1996 15:34:56 OS
+ neu: HtmlMode
+
+ Rev 1.52 17 Jul 1996 13:41:44 OS
+ PrintBackground auch fuer Basic
+
+ Rev 1.51 16 Jul 1996 20:19:52 MA
+ includes
+
+ Rev 1.50 16 Jul 1996 15:52:20 MA
+ new: PrintPageBackground
+
+ Rev 1.49 25 Jun 1996 17:58:08 HJS
+ include prtopt.hxx
+
+ Rev 1.48 25 Apr 1996 16:23:14 OS
+ ViewOptions-Umbau: ElemItem wird nur noch aus ViewOptions erzeugt
+
+ Rev 1.47 15 Mar 1996 15:28:18 JP
+ TestFlags erweitert
+
+ Rev 1.46 07 Mar 1996 16:54:38 JP
+ AddPrintItem um weiters Flag erweitert
+
+ Rev 1.45 01 Feb 1996 16:42:42 OS
+ Reihenfolge der Printoptionen berichtigt
+
+ Rev 1.44 04 Dec 1995 16:09:14 OS
+ Set/FillVariable impl.
+
+ Rev 1.43 28 Nov 1995 23:37:36 JP
+ uisys.hxx gibt es nicht mehr
+
+ Rev 1.42 27 Nov 1995 19:50:50 JP
+ TYPEINIT_AUTOFACTORY segmentiert
+
+ Rev 1.41 27 Nov 1995 18:55:22 OS
+ Umstellung 303a
+
+ Rev 1.40 24 Nov 1995 16:58:50 OM
+ PCH->PRECOMPILED
+
+ Rev 1.39 23 Nov 1995 19:49:30 OS
+ Typeinfo und Default CTOR
+
+ Rev 1.38 16 Nov 1995 18:23:22 OS
+ neu: Get/SetVariable, teilweise impl.
+
+ Rev 1.37 06 Nov 1995 17:15:00 OS
+ SwElemItem bearbeitet nur noch die ViewOptions, keine UsrPrefs
+
+ Rev 1.36 17 Oct 1995 19:20:20 OS
+ AddPrinterItem Ctor(SwPrintOptions) PageView-Member initalisieren
+
+ Rev 1.35 10 Oct 1995 18:55:44 OS
+ GridItem geloescht
+
+ Rev 1.34 15 Sep 1995 12:39:10 OS
+ GetName() implementiert und ColorSetItem entfernt
+
+ Rev 1.33 04 Sep 1995 17:14:32 OS
+ +include sbx.hxx
+
+ Rev 1.32 04 Sep 1995 13:40:24 HJS
+ add: #include <sbx.hxx>
+
+ Rev 1.31 30 Aug 1995 16:31:48 OS
+ Einbau Warnungen fuer Papiergroesse und -orientierung
+
+ Rev 1.30 09 Aug 1995 19:00:28 AMA
+ kein GetPresentation
+
+ Rev 1.29 07 Aug 1995 18:19:24 AMA
+ Umbau: GetValueText -> GetPresentation
+
+ Rev 1.28 27 Jul 1995 10:39:54 OS
+ bDraw auch in Viewopt setzen
+
+ Rev 1.27 05 Jul 1995 19:10:50 OS
+ +bCtrlFld fuer Kontrollfelder
+
+ Rev 1.26 03 Jul 1995 19:28:36 OS
+ CTOR TestItem korrigiert
+
+ Rev 1.25 27 Jun 1995 19:11:20 OS
+ bTest9 fuer MD
+
+ Rev 1.24 27 Jun 1995 17:50:06 ER
+ __EXPORT
+
+ Rev 1.23 27 Jun 1995 14:47:48 ER
+ segprag
+
+ Rev 1.22 25 Jun 1995 19:31:24 OS
+ cfgitems werden jetzt direkt mit swusrpref bzw. swviewoption bearbeitet
+
+ Rev 1.21 24 Jun 1995 10:37:40 SWG
+ syntax
+
+ Rev 1.20 23 Jun 1995 17:49:52 OS
+ AddPrinterItem setzt PrintOptions selbst, +bPrintDrawing
+
+ Rev 1.19 20 Jun 1995 19:20:42 OS
+ CrossHair vom Grid zum DocDisp
+
+ Rev 1.18 24 May 1995 18:09:26 ER
+ Segmentierung
+
+ Rev 1.17 12 May 1995 18:15:58 OS
+ -SVLook
+
+ Rev 1.16 10 May 1995 19:03:14 OS
+ AddPrinterItem umgestellt
+
+ Rev 1.15 10 May 1995 10:59:48 OS
+ == > =
+
+ Rev 1.14 28 Apr 1995 17:07:48 OS
+ AddPrinterItem veraendert und um Fax und Preview-Optionen erweitert
+
+ Rev 1.13 27 Feb 1995 12:56:18 OS
+ segdefs aktualisiert
+
+ Rev 1.12 24 Feb 1995 17:27:34 OS
+ Raster-Page vollstaendig
+
+ Rev 1.11 24 Feb 1995 13:00:00 OS
+ Grid Page
+
+ Rev 1.10 24 Feb 1995 00:54:08 ER
+ sexport
+
+ Rev 1.9 24 Feb 1995 00:32:12 OS
+ (ER) add: GridItems
+
+ Rev 1.8 05 Feb 1995 16:08:56 OS
+ NT und product
+
+ Rev 1.7 05 Feb 1995 11:33:12 OS
+ keine structs mehr
+
+ Rev 1.6 03 Feb 1995 21:20:30 ER
+ wegen unresolved externals bei product einige Funktionen
+ vor das ifndef product gezogen
+ an OS: checken, ob die bei product als inline in das .hxx sollen!
+
+ Rev 1.5 03 Feb 1995 09:33:22 OS
+ addprintoptions - item
+
+ Rev 1.4 01 Feb 1995 20:01:16 OS
+ SwxxxStruct statisch
+
+ Rev 1.3 24 Jan 1995 19:33:38 OS
+ pch Anpassung
+
+ Rev 1.2 23 Jan 1995 07:36:44 OS
+ struct in items erzeugt
+
+ Rev 1.1 17 Jan 1995 19:22:18 OS
+ Header eingefuegt
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/config/config.hrc b/sw/source/ui/config/config.hrc
new file mode 100644
index 000000000000..e7ee890f2bb8
--- /dev/null
+++ b/sw/source/ui/config/config.hrc
@@ -0,0 +1,98 @@
+/*************************************************************************
+ *
+ * $RCSfile: config.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CONFIG_HRC
+#define _CONFIG_HRC
+
+#include "rcid.hrc"
+
+// Dialoge fuer die Konfiguration
+
+// Strings fuer die Konfiguration
+#define STR_CFG_SIGNATUR (RC_CONFIG_BEGIN + 0)
+#define DLG_CONFIG_VIEW (RC_CONFIG_BEGIN + 1)
+#define DLG_CONFIG_MISC (RC_CONFIG_BEGIN + 2)
+#define DLG_CONFIG_SAVE (RC_CONFIG_BEGIN + 3)
+#define DLG_CONFIG_PATH (RC_CONFIG_BEGIN + 4)
+#define DLG_CONFIG_MENU (RC_CONFIG_BEGIN + 5)
+#define DLG_CONFIG_KEY (RC_CONFIG_BEGIN + 6)
+#define DLG_CONFIG_TOOLBOX (RC_CONFIG_BEGIN + 7)
+#define DLG_CONFIG_COLOR (RC_CONFIG_BEGIN + 8)
+#define DLG_TBSEL (RC_CONFIG_BEGIN + 9)
+#define DLG_CFGSEL (RC_CONFIG_BEGIN + 10)
+#define DLG_CONFIG (RC_CONFIG_BEGIN + 11)
+#define DLG_MAC_ASSIGN (RC_CONFIG_BEGIN + 12)
+
+#define MSG_DOUBLE_MENU_ID (RC_CONFIG_BEGIN + 13)
+#define MSG_DOUBLE_ID (RC_CONFIG_BEGIN + 14)
+#define DLG_SYMBOL_SELECT (RC_CONFIG_BEGIN + 15)
+#define DLG_CONFIG_GRID (RC_CONFIG_BEGIN + 16)
+#define DLG_CONFIG_ADDR (RC_CONFIG_BEGIN + 17)
+
+#define STR_ERROR_PATH (RC_CONFIG_BEGIN + 25)
+
+#define CONFIG_ACT_END STR_ERROR_PATH
+
+#if CONFIG_ACT_END > RC_CONFIG_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+
+#endif
diff --git a/sw/source/ui/config/fontcfg.cxx b/sw/source/ui/config/fontcfg.cxx
new file mode 100644
index 000000000000..bdfa09623b2a
--- /dev/null
+++ b/sw/source/ui/config/fontcfg.cxx
@@ -0,0 +1,240 @@
+/*************************************************************************
+ *
+ * $RCSfile: fontcfg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _FONTCFG_HXX
+#include <fontcfg.hxx>
+#endif
+
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_UNO_ANY_HXX_
+#include <com/sun/star/uno/Any.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_
+#include <com/sun/star/uno/Sequence.hxx>
+#endif
+
+using namespace utl;
+using namespace rtl;
+using namespace com::sun::star::uno;
+#define C2S(cChar) String::CreateFromAscii(cChar)
+#define C2U(cChar) OUString::createFromAscii(cChar)
+
+/* -----------------------------08.09.00 15:52--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Sequence<OUString> SwStdFontConfig::GetPropertyNames()
+{
+ static const char* aPropNames[] =
+ {
+ "Standard", // 0
+ "Heading", // 1
+ "List", // 2
+ "Caption", // 3
+ "Index", // 4
+ };
+ const int nCount = 5;
+ Sequence<OUString> aNames(nCount);
+ OUString* pNames = aNames.getArray();
+ for(int i = 0; i < nCount; i++)
+ {
+ pNames[i] = OUString::createFromAscii(aPropNames[i]);
+ }
+ return aNames;
+}
+/*-----------------03.09.96 15.00-------------------
+
+--------------------------------------------------*/
+SwStdFontConfig::SwStdFontConfig() :
+ utl::ConfigItem(C2U("Office.Writer/DefaultFont"))
+{
+ String sDefFont = C2S("Times");
+ sFontStandard = sFontList = sFontCaption = sFontIndex = sDefFont;
+ sFontOutline = SwStdFontConfig::GetDefaultFor(FONT_OUTLINE);
+
+ Sequence<OUString> aNames = GetPropertyNames();
+ Sequence<Any> aValues = GetProperties(aNames);
+// EnableNotification(aNames);
+ const Any* pValues = aValues.getConstArray();
+ DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed")
+ if(aValues.getLength() == aNames.getLength())
+ {
+ for(int nProp = 0; nProp < aNames.getLength(); nProp++)
+ {
+ DBG_ASSERT(pValues[nProp].hasValue(), "property value missing")
+ if(pValues[nProp].hasValue())
+ {
+ OUString sVal;
+ pValues[nProp] >>= sVal;
+ switch(nProp)
+ {
+ case 0: sFontStandard= sVal; break;
+ case 1: sFontOutline = sVal; break;
+ case 2: sFontList = sVal; break;
+ case 3: sFontCaption = sVal; break;
+ case 4: sFontIndex = sVal; break;
+ }
+ }
+ }
+ }
+}
+/* -----------------------------08.09.00 15:58--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwStdFontConfig::Commit()
+{
+ Sequence<OUString> aNames = GetPropertyNames();
+ OUString* pNames = aNames.getArray();
+ Sequence<Any> aValues(aNames.getLength());
+ Any* pValues = aValues.getArray();
+ for(int nProp = 0; nProp < aNames.getLength(); nProp++)
+ {
+ switch(nProp)
+ {
+ case 0: pValues[nProp] <<= OUString(sFontStandard); break;
+ case 1: pValues[nProp] <<= OUString(sFontOutline ); break;
+ case 2: pValues[nProp] <<= OUString(sFontList ); break;
+ case 3: pValues[nProp] <<= OUString(sFontCaption ); break;
+ case 4: pValues[nProp] <<= OUString(sFontIndex ); break;
+ }
+ }
+ PutProperties(aNames, aValues);
+}
+/* -----------------------------08.09.00 15:56--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwStdFontConfig::~SwStdFontConfig()
+{}
+/*-----------------18.01.97 10.05-------------------
+
+--------------------------------------------------*/
+BOOL SwStdFontConfig::IsFontDefault(USHORT nFontType) const
+{
+ BOOL bSame;
+ const String rStd(C2S("Times"));
+ switch( nFontType )
+ {
+ case FONT_STANDARD:
+ bSame = sFontStandard == rStd;
+ break;
+ case FONT_OUTLINE :
+#if defined(UNX)
+ bSame = sFontOutline == C2S("helvetica");
+#elif defined(WNT) || defined(WIN)
+ bSame = sFontOutline == C2S("Arial");
+#elif defined(MAC)
+ bSame = sFontOutline == C2S("Helvetica");
+#elif defined(PM20)
+ bSame = sFontOutline == C2S("Helvetica");
+#else
+#error Defaultfont fuer diese Plattform?
+#endif
+ break;
+ case FONT_LIST :
+ bSame = (sFontList == rStd) && (sFontStandard == rStd);
+ break;
+ case FONT_CAPTION :
+ bSame = (sFontCaption == rStd) && (sFontStandard == rStd);
+ break;
+ case FONT_INDEX :
+ bSame = (sFontIndex == rStd) && (sFontStandard == rStd);
+ break;
+ }
+ return bSame;
+}
+
+/* -----------------11.01.99 13:16-------------------
+ * Standards auslesen
+ * --------------------------------------------------*/
+String SwStdFontConfig::GetDefaultFor(USHORT nFontType)
+{
+ String sRet(C2S("Times"));
+ switch( nFontType )
+ {
+ case FONT_STANDARD:
+ case FONT_LIST :
+ case FONT_CAPTION :
+ case FONT_INDEX :
+ break;
+ case FONT_OUTLINE :
+#if defined(UNX)
+ sRet = C2S("helvetica");
+#elif defined(WNT) || defined(WIN)
+ sRet = C2S("Arial");
+#elif defined(MAC)
+ sRet = C2S("Helvetica");
+#elif defined(PM20)
+ sRet = C2S("Helvetica");
+#else
+#error Defaultfont fuer diese Plattform?
+#endif
+ break;
+ }
+ return sRet;
+}
diff --git a/sw/source/ui/config/makefile.mk b/sw/source/ui/config/makefile.mk
new file mode 100644
index 000000000000..a808bbd0812d
--- /dev/null
+++ b/sw/source/ui/config/makefile.mk
@@ -0,0 +1,122 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=config
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ barcfg.cxx \
+ caption.cxx \
+ cfgitems.cxx \
+ fontcfg.cxx \
+ modcfg.cxx \
+ optins.cxx \
+ optload.cxx \
+ optpage.cxx \
+ prtopt.cxx \
+ uinums.cxx \
+ srcvcfg.cxx \
+ usrpref.cxx \
+ viewopt.cxx
+
+SRCFILES = \
+ optdlg.src \
+ optins.src \
+ optload.src \
+ redlopt.src \
+ cfgstr.src
+
+SLOFILES = \
+ $(SLO)$/barcfg.obj \
+ $(SLO)$/caption.obj \
+ $(SLO)$/cfgitems.obj \
+ $(SLO)$/fontcfg.obj \
+ $(SLO)$/modcfg.obj \
+ $(SLO)$/optins.obj \
+ $(SLO)$/optload.obj \
+ $(SLO)$/optpage.obj \
+ $(SLO)$/prtopt.obj \
+ $(SLO)$/uinums.obj \
+ $(SLO)$/srcvcfg.obj \
+ $(SLO)$/usrpref.obj \
+ $(SLO)$/viewopt.obj
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/config/modcfg.cxx b/sw/source/ui/config/modcfg.cxx
new file mode 100644
index 000000000000..d2c755fb015c
--- /dev/null
+++ b/sw/source/ui/config/modcfg.cxx
@@ -0,0 +1,573 @@
+/*************************************************************************
+ *
+ * $RCSfile: modcfg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _MAILENUM_HXX //autogen
+#include <goodies/mailenum.hxx>
+#endif
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SVX_SVXENUM_HXX //autogen
+#include <svx/svxenum.hxx>
+#endif
+#ifndef _WORDSEL_HXX
+#include <svtools/wordsel.hxx>
+#endif
+#ifndef _TOOLS_DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+#ifndef _FACTORY_HXX //autogen
+#include <so3/factory.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _ITABENUM_HXX
+#include <itabenum.hxx>
+#endif
+#ifndef _CFGID_H
+#include <cfgid.h>
+#endif
+#ifndef _MODCFG_HXX
+#include <modcfg.hxx>
+#endif
+#ifndef _CFGSTR_HRC
+#include <cfgstr.hrc>
+#endif
+#ifndef _FLDUPDE_HXX
+#include <fldupde.hxx>
+#endif
+
+
+#define VERSION_01 1
+#define VERSION_02 2
+#define VERSION_03 3
+#define VERSION_04 4
+#define VERSION_05 5
+#define VERSION_06 6
+#define VERSION_07 7
+#define VERSION_08 8
+#define VERSION_09 9
+#define VERSION_10 10
+#define VERSION_11 11
+#define VERSION_12 12
+#define VERSION_13 13
+#define VERSION_14 14 //nFldUpdateFlags
+#define VERSION_15 15 //Insert-Flags auch fuer HTML
+#define VERSION_16 16 //Insert-Flags auch fuer HTML
+#define VERSION_17 17 //Preview flags AutoText + Index
+#define VERSION_18 18 //bDefaultFontsInCurrDocOnly
+#define MODCFG_VERSION VERSION_18
+
+SV_IMPL_PTRARR_SORT(InsCapOptArr, InsCaptionOptPtr)
+
+/* -----------------03.11.98 13:46-------------------
+ *
+ * --------------------------------------------------*/
+
+InsCaptionOpt* InsCaptionOptArr::Find(const SwCapObjType eType, const SvGlobalName *pOleId) const
+{
+ for (USHORT i = 0; i < Count(); i++ )
+ {
+ InsCaptionOpt* pObj = GetObject(i);
+ if (pObj->GetObjType() == eType &&
+ (eType != OLE_CAP ||
+ (pOleId &&
+ (pObj->GetOleId() == *pOleId ||
+ SvFactory::GetAutoConvertTo(pObj->GetOleId()) == *pOleId))))
+ return pObj;
+ }
+
+ return 0;
+}
+
+/* -----------------03.11.98 15:05-------------------
+ *
+ * --------------------------------------------------*/
+
+const InsCaptionOpt* SwModuleOptions::GetCapOption(BOOL bHTML, const SwCapObjType eType, const SvGlobalName *pOleId)
+{
+ return bHTML ? aHTMLCapOptions.Find(eType, pOleId) : aCapOptions.Find(eType, pOleId);
+}
+
+/* -----------------03.11.98 15:05-------------------
+ *
+ * --------------------------------------------------*/
+
+BOOL SwModuleOptions::SetCapOption(BOOL bHTML, const InsCaptionOpt* pOpt)
+{
+ BOOL bRet = FALSE;
+
+ if (pOpt)
+ {
+ InsCaptionOptArr& rArr = bHTML ? aHTMLCapOptions : aCapOptions;
+ InsCaptionOpt *pObj = rArr.Find(pOpt->GetObjType(), &pOpt->GetOleId());
+
+ if (pObj)
+ {
+ *pObj = *pOpt;
+ SetDefault(FALSE);
+ }
+ else
+ rArr.Insert(new InsCaptionOpt(*pOpt));
+
+ SetDefault(FALSE);
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+/*-----------------13.01.97 12.44-------------------
+
+--------------------------------------------------*/
+
+int SwModuleOptions::Load(SvStream& rStream)
+{
+ rtl_TextEncoding eEncoding = gsl_getSystemTextEncoding();
+ int nRet;
+ SetDefault(FALSE);
+ UINT16 nVersion;
+ rStream >> nVersion;
+ if(nVersion >= VERSION_01)
+ {
+ UINT32 nColor;
+ UINT16 nVal;
+ rStream >> nVal;
+ nDefTab = nVal;
+
+ rStream >> nVal;
+ nTblHMove = nVal;
+
+ rStream >> nVal;
+ nTblVMove = nVal;
+
+ rStream >> nVal;
+ nTblHInsert = nVal;
+
+ rStream >> nVal;
+ nTblVInsert = nVal;
+
+ BYTE bVal;
+ rStream >> bVal;
+ eUserMetric = (FieldUnit)bVal;
+ if (nVersion >= VERSION_08)
+ {
+ rStream >> bVal;
+ eWebUserMetric = (FieldUnit)bVal;
+ }
+
+
+ rStream >> bVal;
+ eTblChgMode = (TblChgMode)bVal;
+
+ if ( nVersion >= VERSION_02 )
+ {
+ rStream >> bVal;
+ bGrfToGalleryAsLnk = BOOL(bVal);
+ }
+ if ( nVersion >= VERSION_03 )
+ {
+ rStream >> bVal;
+ nMailingFormats = bVal;
+
+ rStream >> bVal;
+ bSinglePrintJob = BOOL(bVal);
+
+ rStream >> bVal;
+ bNumAlignSize = BOOL(bVal);
+ }
+
+ if ( nVersion >= VERSION_04 )
+ {
+ rStream >> bVal;
+ bNameFromColumn = bVal;
+
+ rStream.ReadByteString(sMailingPath, eEncoding);
+ rStream.ReadByteString(sMailName, eEncoding);
+ }
+ if ( nVersion >= VERSION_05 )
+ {
+
+ rStream >> nVal; aInsertAttr.nItemId = nVal;
+ rStream >> nVal; aInsertAttr.nAttr = nVal;
+ rStream >> nColor; aInsertAttr.nColor = nColor;
+
+ rStream >> nVal; aDeletedAttr.nItemId = nVal;
+ rStream >> nVal; aDeletedAttr.nAttr = nVal;
+ rStream >> nColor; aDeletedAttr.nColor = nColor;
+
+ rStream >> nVal; nMarkAlign = nVal;
+ rStream >> nColor; aMarkColor.SetColor(nColor);
+ }
+
+ if( nVersion >= VERSION_06 )
+ {
+ rStream >> nVal; aFormatAttr.nItemId = nVal;
+ rStream >> nVal; aFormatAttr.nAttr = nVal;
+ rStream >> nColor; aFormatAttr.nColor = nColor;
+ }
+
+ if( nVersion >= VERSION_07 )
+ rStream.ReadByteString(sWordDelimiter, eEncoding);
+
+ if (nVersion >= VERSION_09)
+ {
+ rStream >> bVal; bInsWithCaption = bVal;
+ if (nVersion == VERSION_09)
+ rStream >> bVal; // Flag gibts nicht mehr
+
+ if (nVersion < VERSION_13)
+ { // Flags gibts nicht mehr
+ rStream >> bVal;
+ rStream >> bVal;
+ }
+
+ rStream >> nVal;
+ InsCaptionOpt aOpt;
+
+ for (USHORT i = 0; i < nVal; i++)
+ {
+ rStream >> aOpt;
+ aCapOptions.Insert(new InsCaptionOpt(aOpt));
+ }
+ }
+
+ if (nVersion >= VERSION_10)
+ {
+ if (nVersion < VERSION_13)
+ rStream >> bVal; // Flag gibts nicht mehr
+
+ if (nVersion >= VERSION_11)
+ {
+ rStream >> bVal; bInsTblFormatNum = bVal;
+ rStream >> bVal; bInsTblAlignNum = bVal;
+ rStream >> nVal; nLinkMode = nVal;
+
+ if (nVersion == VERSION_12)
+ rStream >> bVal; // Flag gibts nicht mehr
+
+ if (nVersion >= VERSION_13)
+ {
+ rStream >> nVal; nInsTblFlags = nVal;
+ }
+ if(nVersion >= VERSION_14)
+ {
+ rStream>> nVal; nFldUpdateFlags = nVal;
+ }
+ else
+ nFldUpdateFlags = AUTOUPD_OFF;
+ if(nVersion >= VERSION_15)
+ {
+ rStream >> bVal; bHTMLInsWithCaption = bVal;
+ rStream >> bVal; bHTMLInsTblFormatNum = bVal;
+ rStream >> bVal; bHTMLInsTblAlignNum = bVal;
+ rStream >> nVal; nHTMLInsTblFlags = nVal;
+ rStream >> nVal;
+ InsCaptionOpt aOpt;
+
+ for (USHORT i = 0; i < nVal; i++)
+ {
+ rStream >> aOpt;
+ aHTMLCapOptions.Insert(new InsCaptionOpt(aOpt));
+ }
+ }
+ else
+ {
+ bHTMLInsWithCaption = bHTMLInsTblAlignNum = FALSE;
+ bHTMLInsTblFormatNum = TRUE;
+ nHTMLInsTblFlags = ALL_TBL_INS_ATTR;
+ }
+
+ if( nVersion >= VERSION_16)
+ {
+ rStream >> bVal; bInsTblChangeNumFormat = bVal;
+ rStream >> bVal; bHTMLInsTblChangeNumFormat = bVal;
+ if(nVersion >= VERSION_17)
+ {
+ rStream >> bVal; bShowAutoTextPreview = bVal;
+ rStream >> bVal; bShowIndexPreview = bVal;
+ if(nVersion >= VERSION_18)
+ {
+ rStream >> bVal; bDefaultFontsInCurrDocOnly = bVal;
+ }
+ }
+ }
+ }
+ }
+
+ nRet = SfxConfigItem::ERR_OK;
+ }
+ else
+ nRet = SfxConfigItem::WARNING_VERSION;
+
+ return nRet;
+}
+
+/*-----------------13.01.97 12.44-------------------
+
+--------------------------------------------------*/
+
+BOOL SwModuleOptions::Store(SvStream& rStream)
+{
+ rtl_TextEncoding eEncoding = gsl_getSystemTextEncoding();
+ rStream << (UINT16) MODCFG_VERSION;
+ rStream << (UINT16) nDefTab;
+ rStream << (UINT16) nTblHMove;
+ rStream << (UINT16) nTblVMove;
+ rStream << (UINT16) nTblHInsert;
+ rStream << (UINT16) nTblVInsert;
+ rStream << (BYTE) eUserMetric;
+ rStream << (BYTE) eWebUserMetric;
+ rStream << (BYTE) eTblChgMode;
+ rStream << (BYTE) bGrfToGalleryAsLnk;
+ rStream << (BYTE) nMailingFormats;
+ rStream << (BYTE) bSinglePrintJob;
+ rStream << (BYTE) bNumAlignSize;
+ rStream << (BYTE) bNameFromColumn;
+ rStream.WriteByteString(sMailingPath, eEncoding);
+ rStream.WriteByteString(sMailName, eEncoding);
+ rStream << (UINT16) aInsertAttr.nItemId;
+ rStream << (UINT16) aInsertAttr.nAttr;
+ rStream << (UINT32) aInsertAttr.nColor;
+ rStream << (UINT16) aDeletedAttr.nItemId;
+ rStream << (UINT16) aDeletedAttr.nAttr;
+ rStream << (UINT32) aDeletedAttr.nColor;
+ rStream << (UINT16) nMarkAlign;
+ rStream << (UINT32) aMarkColor.GetColor();
+ rStream << (UINT16) aFormatAttr.nItemId;
+ rStream << (UINT16) aFormatAttr.nAttr;
+ rStream << (UINT32) aFormatAttr.nColor;
+ rStream.WriteByteString(sWordDelimiter, eEncoding);
+ rStream << (BYTE) bInsWithCaption;
+ rStream << (UINT16) aCapOptions.Count();
+ for (USHORT i = 0; i < aCapOptions.Count(); i++)
+ rStream << *aCapOptions[i];
+ rStream << (BYTE) bInsTblFormatNum;
+ rStream << (BYTE) bInsTblAlignNum;
+ rStream << (UINT16) nLinkMode;
+ rStream << (UINT16) nInsTblFlags;
+ rStream << (UINT16) nFldUpdateFlags;
+
+ rStream << (BYTE) bHTMLInsWithCaption;
+ rStream << (BYTE) bHTMLInsTblFormatNum;
+ rStream << (BYTE) bHTMLInsTblAlignNum;
+ rStream << (UINT16) nHTMLInsTblFlags;
+ rStream << (UINT16) aHTMLCapOptions.Count();
+ for( i = 0; i < aHTMLCapOptions.Count(); i++)
+ rStream << *aHTMLCapOptions[i];
+ rStream << (BYTE) bHTMLInsTblChangeNumFormat;
+ rStream << (BYTE) bInsTblChangeNumFormat;
+
+ rStream << (BYTE) bShowAutoTextPreview;
+ rStream << (BYTE) bShowIndexPreview;
+
+ rStream << (BYTE) bDefaultFontsInCurrDocOnly;
+ return SfxConfigItem::ERR_OK;
+}
+/*-----------------13.01.97 12.44-------------------
+
+--------------------------------------------------*/
+
+void SwModuleOptions::UseDefault()
+{
+ MeasurementSystem eSys = Application::GetAppInternational().GetMeasurementSystem();
+ if(MEASURE_METRIC != eSys)
+ {
+ eUserMetric = eWebUserMetric = FUNIT_INCH;
+ nDefTab = 720; // 1/2"
+ nTblHMove = nTblVMove = 360; // 1/4"
+ nTblHInsert = 360; // 1/4"
+ nTblVInsert = 1440; // 1"
+ }
+ else
+ {
+ eUserMetric = eWebUserMetric = FUNIT_CM;
+ nDefTab = 709; // 1,25 cm
+ nTblHMove = nTblVMove = MM50; // 0,5 cm
+ nTblHInsert = MM50; // 0,5 cm
+ nTblVInsert = 1415; // 2,5 cm
+ }
+
+ eTblChgMode = TBLVAR_CHGABS;
+
+ aInsertAttr.nItemId = SID_ATTR_CHAR_UNDERLINE;
+ aInsertAttr.nAttr = UNDERLINE_SINGLE;
+ aInsertAttr.nColor = COL_TRANSPARENT;
+ aDeletedAttr.nItemId = SID_ATTR_CHAR_STRIKEOUT;
+ aDeletedAttr.nAttr = STRIKEOUT_SINGLE;
+ aDeletedAttr.nColor = COL_TRANSPARENT;
+ aFormatAttr.nItemId = SID_ATTR_CHAR_WEIGHT;
+ aFormatAttr.nAttr = WEIGHT_BOLD;
+ aFormatAttr.nColor = COL_BLACK;
+ nMarkAlign = HORI_OUTSIDE;
+ aMarkColor.SetColor(COL_BLACK);
+
+ bGrfToGalleryAsLnk = TRUE;
+
+ nMailingFormats = TXTFORMAT_OFFICE;
+ bNumAlignSize = TRUE;
+ bSinglePrintJob = FALSE;
+ bNameFromColumn = FALSE;
+
+ sWordDelimiter = String::CreateFromAscii("() \t\xa\x1");
+
+ bHTMLInsWithCaption = bInsWithCaption = FALSE;
+
+ nHTMLInsTblFlags = nInsTblFlags = ALL_TBL_INS_ATTR;
+ bHTMLInsTblFormatNum = bInsTblFormatNum = TRUE;
+ bHTMLInsTblChangeNumFormat = bInsTblChangeNumFormat = TRUE;
+ bHTMLInsTblAlignNum = bInsTblAlignNum = TRUE;
+
+ nLinkMode = MANUAL;
+ nFldUpdateFlags = AUTOUPD_FIELD_ONLY;
+
+ bShowAutoTextPreview = TRUE;
+ bShowIndexPreview = TRUE;
+
+ bDefaultFontsInCurrDocOnly = FALSE;
+
+ aCapOptions.DeleteAndDestroy( 0, aCapOptions.Count() );
+ aHTMLCapOptions.DeleteAndDestroy( 0, aCapOptions.Count() );
+
+ SfxConfigItem::UseDefault();
+}
+
+/*-----------------13.01.97 12.44-------------------
+
+--------------------------------------------------*/
+
+SwModuleOptions::SwModuleOptions() :
+ SfxConfigItem( CFG_SW_MODULE )
+{
+ UseDefault();
+}
+
+/*-----------------13.01.97 13.11-------------------
+
+--------------------------------------------------*/
+
+String SwModuleOptions::GetName() const
+{
+ return String(SW_RES(STR_CFG_MODULE));
+}
+
+/*--------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.34 2000/09/18 16:05:15 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.33 2000/07/20 13:16:58 jp
+ change old txtatr-character to the two new characters
+
+ Revision 1.32 2000/06/13 13:22:43 os
+ #75770# Doc only flag in standard font TabPage now persistent
+
+ Revision 1.31 2000/05/18 14:57:43 os
+ append CH_TXTATR instead of 0xff in CreateFromAscii
+
+ Revision 1.30 2000/04/11 08:02:23 os
+ UNICODE
+
+ Revision 1.29 2000/02/11 14:43:50 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.28 1999/12/29 07:54:07 os
+ #71320# flags for AutoText and index preview
+
+ Revision 1.27 1999/04/20 16:58:38 JP
+ Task #65061#: neu: ZahlenFormaterkennung abschaltbar
+
+
+ Rev 1.26 20 Apr 1999 18:58:38 JP
+ Task #65061#: neu: ZahlenFormaterkennung abschaltbar
+
+ Rev 1.25 15 Mar 1999 09:46:20 MA
+ #63047# neue Defaults
+
+ Rev 1.24 11 Mar 1999 23:56:40 JP
+ Task #63171#: Optionen fuer Feld-/LinkUpdate Doc oder Modul lokal
+
+ Rev 1.23 17 Feb 1999 08:37:56 OS
+ #58158# Einfuegen TabPage auch in HTML-Docs
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/config/optdlg.hrc b/sw/source/ui/config/optdlg.hrc
new file mode 100644
index 000000000000..2085ae238eb4
--- /dev/null
+++ b/sw/source/ui/config/optdlg.hrc
@@ -0,0 +1,263 @@
+/*************************************************************************
+ *
+ * $RCSfile: optdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+/* TabPage Ansicht*/
+#define GB_DISP 1
+#define GB_NOPRINT 2
+#define GB_WINDOW 3
+#define GB_BACK 4
+#define GB_METRIC 5
+#define ST_METRIC 6
+#define GB_TAB 7
+#define MF_TAB 8
+
+#define CB_GRF 1
+#define CB_TBL 2
+#define CB_DRWFAST 3
+#define CB_FIELD 4
+#define CB_PARA 5
+#define CB_TAB 6
+#define CB_SPACE 7
+#define CB_HSPACE 8
+#define CB_SHYPH 9
+#define CB_HIDDEN 10
+#define CB_BREAK 11
+#define CB_TXTBEG 12
+#define CB_TABBEG 13
+#define CB_CROSS 14
+#define CB_HSCROLL 15
+#define CB_VSCROLL 16
+#define CB_HRULER 17
+#define CB_VRULER 18
+#define CB_IDX_ENTRY 19
+#define CB_FOOTBACK 20
+#define CB_FLDBACK 21
+#define GB_LINE 22
+#define CB_POSTIT 23
+#define LB_METRIC 24
+#define CB_BIGHANDLE 25
+
+#define CB_TEST1 25
+#define CB_TEST2 26
+#define CB_TEST3 27
+#define CB_TEST4 28
+#define CB_TEST5 29
+#define CB_TEST6 30
+#define CB_TEST7 31
+#define CB_TEST8 32
+#define CB_TEST9 33
+#define CB_TEST10 34
+#define GB_TEST 35
+
+#define CB_HIDDEN_PARA 36 //Mittendrin, damit die HelpIds zum FPII kompatibel bleiben
+#define CB_SMOOTH_SCROLL 37
+
+#define BT_OK 38
+#define BT_CANCEL 39
+#define BT_MORE 40
+#define BT_GRID 41
+#define MF_HFRAME 42
+#define MF_VFRAME 43
+
+#define CB_INDEX 44
+
+#define LB_COLOR 50
+#define GB_1 51
+#define WIN_COLOR 52
+#define ED_COLORNAME 53
+#define GB_2 54
+#define BT_EDIT 55
+#define BT_NEW 56
+#define BT_DELETE 57
+#define BT_DEFAULT 58
+#define CB_HANDLE 59
+#define CB_SECT_BOUNDS 60
+// Print-Extra-Page
+#define CB_PGRF 61
+#define CB_PTAB 62
+#define CB_PDRAW 63
+#define CB_LEFTP 64
+#define CB_RIGHTP 65
+#define CB_REVERSE 66
+#define CB_PROSPECT 67
+#define CB_SINGLEJOBS 68
+#define CB_CTRLFLD 69
+#define CB_PAPERFROMSETUP 70
+#define GRP_1 71
+#define GRP_2 72
+#define GRP_3 73
+#define GRP_4 74
+#define GRP_5 75
+#define GB_FAX 76
+#define CB_BACKGROUND 79
+
+#define RB_NO 80
+#define RB_ONLY 81
+#define RB_END 82
+#define RB_PAGEEND 83
+#define LB_FAX 86
+#define CB_BLACK_FONT 87
+
+//Grid-Page
+#define GB_GRID 90
+#define MTR_FLD_GRID 2
+#define BTN_MORE 3
+#define GRP_DRAWGRID 4
+#define GRP_OPTIONS 5
+#define GRP_SNAPGRID 6
+#define GRP_ORIGIN 7
+#define CBX_GRID_SNAP 8
+#define CBX_SYNCHRONIZE 9
+#define CBX_EQUAL_GRID 10
+#define CBX_SNAPGRID 11
+#define CBX_ORIGIN 12
+#define CBX_GRID_VISIBLE 13
+#define MTR_FLD_DRAW_Y 18
+#define MTR_FLD_DRAW_X 21
+#define MTR_FLD_DIVISION_X 22
+#define MTR_FLD_DIVISION_Y 23
+#define FT_DRAW_X 26
+#define FT_DRAW_Y 27
+#define FT_RESOLUTION 28
+#define FT_DIVISION 29
+#define CBX_CROSSHAIR 30
+#define CB_RULER 31
+
+
+// DefaultFarben
+#define SW_COLOR_START 1
+#define CL_BLACK (SW_COLOR_START + 0)
+#define CL_BLUE (SW_COLOR_START + 1)
+#define CL_GREEN (SW_COLOR_START + 2)
+#define CL_CYAN (SW_COLOR_START + 3)
+#define CL_RED (SW_COLOR_START + 4)
+#define CL_MAGENTA (SW_COLOR_START + 5)
+#define CL_BROWN (SW_COLOR_START + 6)
+#define CL_GRAY (SW_COLOR_START + 7)
+#define CL_LIGHTGRAY (SW_COLOR_START + 8)
+#define CL_LIGHTBLUE (SW_COLOR_START + 9)
+#define CL_LIGHTGREEN (SW_COLOR_START + 10)
+#define CL_LIGHTCYAN (SW_COLOR_START + 11)
+#define CL_LIGHTRED (SW_COLOR_START + 12)
+#define CL_LIGHTMAGENTA (SW_COLOR_START + 13)
+#define CL_YELLOW (SW_COLOR_START + 14)
+#define CL_WHITE (SW_COLOR_START + 15)
+#define SW_COLOR_END CL_WHITE
+
+// Tabpage Grundschriften
+#define FT_STANDARD 90
+#define LB_STANDARD 91
+#define FT_TITLE 92
+#define LB_TITLE 93
+#define FT_LIST 94
+#define LB_LIST 95
+#define FT_LABEL 96
+#define LB_LABEL 97
+#define FT_IDX 98
+#define LB_IDX 99
+#define GB_STDCHR 100
+#define PB_STANDARD 101
+#define CB_DOCONLY 102
+
+//Tabpage Tabelle
+#define GB_MOVE 110
+#define FT_ROWMOVE 111
+#define MF_ROWMOVE 112
+#define FT_COLMOVE 113
+#define MF_COLMOVE 114
+#define GB_INSERT 115
+#define FT_ROWINSERT 116
+#define MF_ROWINSERT 117
+#define FT_COLINSERT 118
+#define MF_COLINSERT 119
+#define GB_HANDLING 120
+#define RB_FIX 121
+#define RB_FIXPROP 122
+#define RB_VAR 123
+#define FT_FIX 124
+#define FT_FIXPROP 125
+#define FT_VAR 126
+#define FT_DESC 127
+
+#define GB_COLOR 130
+#define FT_SGML 131
+#define LB_SGML 132
+#define FT_COMMENT 133
+#define LB_COMMENT 134
+#define FT_KEYWD 135
+#define LB_KEYWD 136
+#define FT_UNKNOWN 137
+#define LB_UNKNOWN 138
+
+#define GB_SHDWCRSFLAG 1
+#define CB_SHDWCRSONOFF 2
+#define GB_SHDWCRSMODE 3
+#define FT_SHDWCRSFILLMODE 4
+#define RB_SHDWCRSFILLMARGIN 5
+#define RB_SHDWCRSFILLINDENT 6
+#define RB_SHDWCRSFILLTAB 7
+#define RB_SHDWCRSFILLSPACE 8
+#define GB_SHDWCRSCOLOR 9
+#define FT_SHDWCRSCOLOR 10
+#define LB_SHDWCRSCOLOR 11
+#define CB_ALLOW_IN_PROT 12
+#define GB_CRSR_OPT 13
+
diff --git a/sw/source/ui/config/optdlg.src b/sw/source/ui/config/optdlg.src
new file mode 100644
index 000000000000..7b79894fca57
--- /dev/null
+++ b/sw/source/ui/config/optdlg.src
@@ -0,0 +1,3186 @@
+/*************************************************************************
+ *
+ * $RCSfile: optdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 */
+#ifndef _SFX_HRC
+#include <sfx2/sfx.hrc>
+#endif
+#ifndef _SVX_DIALOGS_HRC
+#include <svx/dialogs.hrc>
+#endif
+#include "globals.hrc"
+#include "config.hrc"
+#include "optdlg.hrc"
+#include "helpid.h"
+
+/**************************************************************************/
+/* */
+/* TabPage Ansicht/Inhalt */
+/* */
+/**************************************************************************/
+TabPage TP_CONTENT_OPT
+{
+ HelpID = HID_CONTENT_OPT ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ GroupBox GB_DISP
+ {
+ Pos = MAP_APPFONT ( 6 , 2 ) ;
+ Size = MAP_APPFONT ( 120 , 69 ) ;
+ 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" ;
+ Group = TRUE ;
+ 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_GRF
+ {
+ Pos = MAP_APPFONT ( 12 , 11 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "~Grafiken und Objekte" ;
+ Text [ ENGLISH ] = "Gra~phics and Objects" ;
+ Text [ norwegian ] = "Gra~phics and Objects" ;
+ Text [ italian ] = "~Immagini e oggetti" ;
+ Text [ portuguese_brazilian ] = "Gra~phics and Objects" ;
+ Text [ portuguese ] = "~Imagens e objectos" ;
+ Text [ french ] = "~Images et objets" ;
+ Text [ dutch ] = "~Afbeeldingen en objecten" ;
+ Text [ spanish ] = "~Imágenes y objetos" ;
+ Text [ danish ] = "Billeder og objekter" ;
+ Text [ swedish ] = "~Grafiker och objekt" ;
+ Text [ finnish ] = "Gra~phics and Objects" ;
+ Text [ english_us ] = "~Graphics and objects" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "ͼÐκͶÔÏó(~O)";
+ Text[ russian ] = "Ðèñóíêè è îáúåêòû";
+ Text[ polish ] = "Gr~afiki i obiekty";
+ Text[ japanese ] = "}‚ƵÌÞ¼Þª¸Ä(~O)";
+ Text[ chinese_traditional ] = "¹Ï¤ù©Mª«¥ó(~O)";
+ Text[ arabic ] = "ÕæÑ æßÇÆäÇÊ";
+ Text[ greek ] = "ÃñáöéêÜ êáé áíôéêåßìåíá";
+ Text[ korean ] = "±×·¡ÇÈ°ú °³Ã¼(~G)";
+ Text[ turkish ] = "Grafik ve nesneler";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_TBL
+ {
+ Pos = MAP_APPFONT ( 12 , 23 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "~Tabellen " ;
+ Text [ ENGLISH ] = "~Tables" ;
+ Text [ norwegian ] = "~Tables" ;
+ Text [ italian ] = "~Tabelle " ;
+ Text [ portuguese_brazilian ] = "~Tabelas " ;
+ Text [ portuguese ] = "~Tabelas " ;
+ Text [ finnish ] = "~Taulukot" ;
+ Text [ danish ] = "Tabeller " ;
+ Text [ french ] = "~Tableaux " ;
+ Text [ swedish ] = "Tabe~ller " ;
+ Text [ dutch ] = "~Tabellen " ;
+ Text [ spanish ] = "~Tablas " ;
+ Text [ english_us ] = "~Tables " ;
+ Text[ chinese_simplified ] = "±í¸ñ(~A)";
+ Text[ russian ] = "Òàáëèöû ";
+ Text[ polish ] = "Ta~bele ";
+ Text[ japanese ] = "•\\(~A)";
+ Text[ chinese_traditional ] = "ªí®æ(~A)";
+ Text[ arabic ] = "ÌÏÇæá ";
+ Text[ greek ] = "Ðßíáêåò ";
+ Text[ korean ] = "Ç¥ (~T)";
+ Text[ turkish ] = "Tablolar ";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_DRWFAST
+ {
+ Pos = MAP_APPFONT ( 12 , 35 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Zeichnungen und ~Kontrollfelder" ;
+ Text [ ENGLISH ] = "Dra~wings and controls" ;
+ Text [ norwegian ] = "Dra~wings" ;
+ Text [ italian ] = "~Disegni e controlli" ;
+ Text [ portuguese_brazilian ] = "Dra~wings" ;
+ Text [ portuguese ] = "~Desenhos e controlos" ;
+ Text [ french ] = "~Dessins et champs de contrôle" ;
+ Text [ dutch ] = "Tekeningen en ~controlevelden" ;
+ Text [ spanish ] = "~Dibujos y campos de control" ;
+ Text [ danish ] = "Tegninger og kontrolelementer" ;
+ Text [ swedish ] = "Teckningar och ~kontrollfält" ;
+ Text [ finnish ] = "Dra~wings" ;
+ Text [ english_us ] = "Dra~wings and controls" ;
+ Text[ chinese_simplified ] = "»æͼºÍ¿Ø¼þ×Ö¶Î(~D)";
+ Text[ russian ] = "Ðèñóíêè è ýëåìåíòû óïðàâëåíèÿ";
+ Text[ polish ] = "Rysunki i pola kontrolne";
+ Text[ japanese ] = "}Œ`•`‰æ‚ƺÝÄÛ°Ù(~D)";
+ Text[ chinese_traditional ] = "ø¹Ï©M±±¨î¶µ(~D)";
+ Text[ arabic ] = "ÑÓæãÇÊ æÚäÇÕÑ ÊÍßã";
+ Text[ greek ] = "Ó÷Ýäéá ~êáé Ðåäßá åëÝã÷ïõ";
+ Text[ korean ] = "±×¸®±â¿Í ÄÁÆ®·Ñ(~W)";
+ Text[ turkish ] = "Çizim ve ~komut alanlarý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_FIELD
+ {
+ Pos = MAP_APPFONT ( 12 , 47 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? F~eldname : F~eldname anzeigen */
+ Text = "F~eldnamen" ;
+ Text [ ENGLISH ] = "~Field names" ;
+ Text [ english_us ] = "~Field codes" ;
+ Text [ swedish ] = "Fält~namn" ;
+ Text [ danish ] = "Feltnavne" ;
+ Text [ italian ] = "Nome di campo" ;
+ Text [ spanish ] = "~Nombres del campo" ;
+ Text [ french ] = "~Noms de champ" ;
+ Text [ dutch ] = "~Veldnaam" ;
+ Text [ portuguese_brazilian ] = "F~eldnamen" ;
+ Text [ portuguese ] = "Nomes de ~campo" ;
+ Text[ chinese_simplified ] = "×Ö¶ÎÃû³Æ(~C)";
+ Text[ russian ] = "Èìåíà ïîëÿ";
+ Text[ polish ] = "Nazwy pól";
+ Text[ japanese ] = "̨°ÙÄÞ–¼(~C)";
+ Text[ chinese_traditional ] = "Äæ¦ì¦WºÙ(~C)";
+ Text[ arabic ] = "ÃÓãÇÁ ÇáÍÞá";
+ Text[ greek ] = "Ïíüìáôá ðåäßùí";
+ Text[ korean ] = "Çʵå ÄÚµå(~F)";
+ Text[ turkish ] = "Alan adlarý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_POSTIT
+ {
+ Pos = MAP_APPFONT ( 12 , 59 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "N~otizen" ;
+ Text [ ENGLISH ] = "N~otes" ;
+ Text [ english_us ] = "~Notes" ;
+ Text [ swedish ] = "Anteckninga~r" ;
+ Text [ danish ] = "Noter" ;
+ Text [ italian ] = "N~ote" ;
+ Text [ spanish ] = "~Notas" ;
+ Text [ french ] = "~Notes" ;
+ Text [ dutch ] = "Aa~ntekeningen" ;
+ Text [ portuguese_brazilian ] = "N~otizen" ;
+ Text [ portuguese ] = "Anotações" ;
+ Text[ chinese_simplified ] = "±¸×¢(~N)";
+ Text[ russian ] = "Ïðèìå÷àíèÿ";
+ Text[ polish ] = "No~tatki";
+ Text[ japanese ] = "ÒÓ’ (~N)";
+ Text[ chinese_traditional ] = "³Æª`(~N)";
+ Text[ arabic ] = "ãáÇÍÙÇÊ";
+ Text[ greek ] = "Óçìåéþóåéò";
+ Text[ korean ] = "¸Þ¸ð(~N)";
+ Text[ turkish ] = "Notlar";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_BACK
+ {
+ Pos = MAP_APPFONT ( 6 , 74 ) ;
+ Size = MAP_APPFONT ( 120 , 57 ) ;
+ Text = "Hinterlegung" ;
+ Text [ ENGLISH ] = "Background" ;
+ Text [ norwegian ] = "Background" ;
+ Text [ italian ] = "Sfondo" ;
+ Text [ portuguese_brazilian ] = "Fundo" ;
+ Text [ portuguese ] = "Destaque" ;
+ Text [ finnish ] = "Tausta" ;
+ Text [ danish ] = "Underlægning" ;
+ Text [ french ] = "Trame de fond" ;
+ Text [ swedish ] = "Bakgrund" ;
+ Text [ dutch ] = "Achtergrond" ;
+ Text [ spanish ] = "Destacar" ;
+ Text [ english_us ] = "Highlighting" ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "»ÒÉ«±³¾°±ê¼Ç";
+ Text[ russian ] = "Çàòåíåíèå";
+ Text[ polish ] = "Cieniowanie";
+ Text[ japanese ] = "ŠDF‚ÌÊÞ¯¸‚Å‹­’²";
+ Text[ chinese_traditional ] = "¦Ç¦â­I´º¼Ð°O";
+ Text[ arabic ] = "ÊÙáíá";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "Óêßáóç ðåäßùí";
+ Text[ korean ] = "°­Á¶";
+ Text[ turkish ] = "Vurgu";
+ };
+ CheckBox CB_IDX_ENTRY
+ {
+ Pos = MAP_APPFONT ( 12 , 83 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Verzeichniseintr~äge" ;
+ Text [ ENGLISH ] = "Index entries" ;
+ Text [ norwegian ] = "Index entries" ;
+ Text [ italian ] = "~Voci di indice" ;
+ Text [ portuguese_brazilian ] = "Entradas do índice" ;
+ Text [ portuguese ] = "~Entradas de índice" ;
+ Text [ finnish ] = "Hakemistotekstit" ;
+ Text [ danish ] = "Indekselementer" ;
+ Text [ french ] = "E~ntrées d'index" ;
+ Text [ swedish ] = "Förte~ckningsposter" ;
+ Text [ dutch ] = "Inde~xgegevens" ;
+ Text [ spanish ] = "~Entradas al índice" ;
+ Text [ english_us ] = "~Index entries" ;
+ Text[ chinese_simplified ] = "Ŀ¼ÌõÄ¿(~I)";
+ Text[ russian ] = "Ýëåìåíòû óêàçàòåëÿ";
+ Text[ polish ] = "Wpisy do indeksu";
+ Text[ japanese ] = "–ÚŽŸ‚Æõˆø‚Ì€–Ú(~I)";
+ Text[ chinese_traditional ] = "¥Ø¿ý±ø¥Ø(~I)";
+ Text[ arabic ] = "ÇáÅÏÎÇáÇÊ ÇáÝåÑÓíÉ";
+ Text[ greek ] = "Êáôá÷ùñßóåéò åõñåôçñßïõ";
+ Text[ korean ] = "»öÀÎ Ç׸ñ(~I)";
+ Text[ turkish ] = "Dizin giri~þleri";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_INDEX
+ {
+ Pos = MAP_APPFONT ( 12 , 95 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Verzeichn~isse" ;
+ Text [ ENGLISH ] = "Indexes" ;
+ Text[ english_us ] = "Inde~xes";
+ Text[ portuguese ] = "~Índices";
+ Text[ russian ] = "Óêàçàòåëè";
+ Text[ greek ] = "ÅõñåôÞñéá";
+ Text[ dutch ] = "Indi~ces";
+ Text[ french ] = "~Index";
+ Text[ spanish ] = "~Índices";
+ Text[ italian ] = "~Indici";
+ Text[ danish ] = "Indeks";
+ Text[ swedish ] = "Förteckn~ingar";
+ Text[ polish ] = "Indeksy";
+ Text[ portuguese_brazilian ] = "Entradas do índice";
+ Text[ japanese ] = "ÃÞ¨Ú¸ÄØ(~I)";
+ Text[ korean ] = "»öÀÎ(~X)";
+ Text[ chinese_simplified ] = "Ŀ¼(~I)";
+ Text[ chinese_traditional ] = "¥Ø¿ý(~I)";
+ Text[ arabic ] = "ÇáÝåÇÑÓ";
+ Text[ turkish ] = "Di~zinler";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_FOOTBACK
+ {
+ Pos = MAP_APPFONT ( 12 , 107 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Fu~ßnoten" ;
+ Text [ ENGLISH ] = "Footnotes" ;
+ Text [ english_us ] = "Footnot~es" ;
+ Text [ swedish ] = "F~otnoter" ;
+ Text [ danish ] = "Fodnoter" ;
+ Text [ italian ] = "Note a piè pagina" ;
+ Text [ spanish ] = "Notas al ~pie" ;
+ Text [ french ] = "Notes de ~bas de page" ;
+ Text [ dutch ] = "V~oetnoten" ;
+ Text [ portuguese_brazilian ] = "Fu~ßnoten" ;
+ Text [ portuguese ] = "Notas de rodapé" ;
+ Text[ chinese_simplified ] = "×¢½Å(~E)";
+ Text[ russian ] = "Ñíîñêè";
+ Text[ polish ] = "Przypisy ~dolne";
+ Text[ japanese ] = "‹r’(~E)";
+ Text[ chinese_traditional ] = "µù¸}(~E)";
+ Text[ arabic ] = "ÇáÍæÇÔí ÇáÓÝáíÉ";
+ Text[ greek ] = "Õðïóçìåéþóåéò";
+ Text[ korean ] = "°¢ÁÖ(~E)";
+ Text[ turkish ] = "Dipnotlar";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_FLDBACK
+ {
+ Pos = MAP_APPFONT ( 12 , 119 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Felder : ~Felder hinterlegen */
+ Text = "~Felder" ;
+ Text [ ENGLISH ] = "Fields" ;
+ Text [ english_us ] = "Fie~lds" ;
+ Text [ swedish ] = "~Fält" ;
+ Text [ danish ] = "Felter" ;
+ Text [ italian ] = "Campi" ;
+ Text [ spanish ] = "~Campos" ;
+ Text [ french ] = "~Champs" ;
+ Text [ dutch ] = "Ve~lden" ;
+ Text [ portuguese_brazilian ] = "~Felder" ;
+ Text [ portuguese ] = "~Campos" ;
+ Text[ chinese_simplified ] = "×Ö¶Î(~F)";
+ Text[ russian ] = "Ïîëÿ";
+ Text[ polish ] = "P~ola";
+ Text[ japanese ] = "̨°ÙÄÞ(~F)";
+ Text[ chinese_traditional ] = "Äæ¦ì(~F)";
+ Text[ arabic ] = "ÇáÍÞæá";
+ Text[ greek ] = "Ðåäßá";
+ Text[ korean ] = "Çʵå(~L)";
+ Text[ turkish ] = "Alanlar";
+ Text[ language_user1 ] = " ";
+ };
+ //_----------------------------
+ GroupBox GB_NOPRINT
+ {
+ Pos = MAP_APPFONT ( 134 , 2 ) ;
+ Size = MAP_APPFONT ( 120 , 129 ) ;
+ Text = "Nicht druckbare Zeichen" ;
+ Text [ ENGLISH ] = "Unprintable Characters" ;
+ Text [ norwegian ] = "Unprintable Characters" ;
+ Text [ italian ] = "Caratteri non stampabili" ;
+ Text [ portuguese_brazilian ] = "Unprintable Characters" ;
+ Text [ portuguese ] = "Caracteres não imprimíveis" ;
+ Text [ finnish ] = "Unprintable Characters" ;
+ Text [ danish ] = "Tegn som ikke kan udskrives" ;
+ Text [ french ] = "Caractères non imprimables " ;
+ Text [ swedish ] = "Icke utskrivbara tecken" ;
+ Text [ dutch ] = "Niet-afdrukbare tekens" ;
+ Text [ spanish ] = "Caracteres no imprimibles" ;
+ Text [ english_us ] = "Nonprinting characters" ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "²»¿É´òÓ¡µÄ×Ö·û";
+ Text[ russian ] = "Íåïå÷àòàåìûå ñèìâîëû";
+ Text[ polish ] = "Znaki niedrukowalne";
+ Text[ japanese ] = "ˆóü‚³‚ê‚È‚¢•¶Žš‚â‹L†‚Ì•\\Ž¦/”ñ•\\Ž¦";
+ Text[ chinese_traditional ] = "±±¨î²Å";
+ Text[ arabic ] = "ÃÍÑÝ áÇ ÊõØÈÚ";
+ Text[ greek ] = "Ìç åêôõðþóéìïé ÷áñáêôÞñåò";
+ Text[ korean ] = "ÀμâÇÒ¼ö ¾ø´Â ¹®ÀÚ";
+ Text[ turkish ] = "Yazdýrýlmayan karakterler";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_PARA
+ {
+ Pos = MAP_APPFONT ( 140 , 12 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "~Absatzende" ;
+ Text [ ENGLISH ] = "Paragraph ends" ;
+ Text [ norwegian ] = "Paragraph ends" ;
+ Text [ italian ] = "Fine paragrafo" ;
+ Text [ portuguese_brazilian ] = "Finais de parágrafo" ;
+ Text [ portuguese ] = "~Fim de parágrafo" ;
+ Text [ finnish ] = "Kappaleenvaihdot" ;
+ Text [ danish ] = "Afsnitsslutning" ;
+ Text [ french ] = "~Fin de paragraphe" ;
+ Text [ swedish ] = "Styck~etecken" ;
+ Text [ dutch ] = "~Einde alinea" ;
+ Text [ spanish ] = "~Fin de párrafo" ;
+ Text [ english_us ] = "Pa~ragraph end" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "¶ÎÂäβ¶Ë (~M)";
+ Text[ russian ] = "Êîíåö àáçàöà";
+ Text[ polish ] = "Koniec akapitu";
+ Text[ japanese ] = "’i—Ž–– (~M)";
+ Text[ chinese_traditional ] = "¬q¸¨§ÀºÝ (~M)";
+ Text[ arabic ] = "äåÇíÉ ÝÞÑÉ";
+ Text[ greek ] = "ÔÝëïò ðáñáãñÜöïõ";
+ Text[ korean ] = "´Ü¶ô ³¡(~R)";
+ Text[ turkish ] = "Paragraf sonu";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_SHYPH
+ {
+ Pos = MAP_APPFONT ( 140 , 25 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "~Weiche Trenner" ;
+ Text [ ENGLISH ] = "Soft hyphens" ;
+ Text [ norwegian ] = "Soft hyphens" ;
+ Text [ italian ] = "Sillabazioni morbide" ;
+ Text [ portuguese_brazilian ] = "Hífens soft" ;
+ Text [ portuguese ] = "~Hífens opcionais" ;
+ Text [ finnish ] = "Ehdolliset tavuviivat" ;
+ Text [ danish ] = "Bløde skilletegn" ;
+ Text [ french ] = "Traits d'union ~automatiques" ;
+ Text [ swedish ] = "~Mjuka bindestreck" ;
+ Text [ dutch ] = "Tij~delijke afbreektekens" ;
+ Text [ spanish ] = "G~uiones opcionales" ;
+ Text [ english_us ] = "Optional h~yphens" ;
+ Text[ chinese_simplified ] = "ÈíÐÔÁ¬×Ö·û(~Y)";
+ Text[ russian ] = "Ìÿãêèé ïåðåíîñ";
+ Text[ polish ] = "Miêkkie znaki podzia³u";
+ Text[ japanese ] = "—áŠO‚ÌʲÌÝ(~Y)";
+ Text[ chinese_traditional ] = "¥i¿ï¥Îªº³s¦r²Å(~Y)";
+ Text[ arabic ] = "æÇÕáÉ ÇÎÊíÇÑíÉ";
+ Text[ greek ] = "¹~ðéá äéá÷ùñéóôéêÜ";
+ Text[ korean ] = "¼±ÅÃÀû ÇÏÀÌÇÂ(~Y)";
+ Text[ turkish ] = "Ay~ýrma iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_SPACE
+ {
+ Pos = MAP_APPFONT ( 140 , 38 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Lee~rzeichen" ;
+ Text [ ENGLISH ] = "Spaces" ;
+ Text [ norwegian ] = "Spaces" ;
+ Text [ italian ] = "Spazi" ;
+ Text [ portuguese_brazilian ] = "Espaçamentos" ;
+ Text [ portuguese ] = "Espaçamentos" ;
+ Text [ finnish ] = "Välilyönnit" ;
+ Text [ danish ] = "Mellemrum" ;
+ Text [ french ] = "Es~paces" ;
+ Text [ swedish ] = "Bl~anksteg" ;
+ Text [ dutch ] = "~Spaties" ;
+ Text [ spanish ] = "Esp~acios" ;
+ Text [ english_us ] = "Spa~ces" ;
+ Text[ chinese_simplified ] = "¿Õ°××Ö·û(~S)";
+ Text[ russian ] = "Ïðîáåëû";
+ Text[ polish ] = "Spa~cje";
+ Text[ japanese ] = "½Íß°½(~S)";
+ Text[ chinese_traditional ] = "ªÅ¥Õ¦r¤¸(~S)";
+ Text[ arabic ] = "ÃÍÑÝ ãÓÇÝÉ";
+ Text[ greek ] = "Êåíü";
+ Text[ korean ] = "°£°Ý(~C)";
+ Text[ turkish ] = "~Boþluklar";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_HSPACE
+ {
+ Pos = MAP_APPFONT ( 140 , 51 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Ge~sch. Leerzeichen" ;
+ Text [ ENGLISH ] = "Nonbreaking spaces" ;
+ Text [ norwegian ] = "Nonbreaking spaces" ;
+ Text [ italian ] = "Spazi protetti" ;
+ Text [ portuguese_brazilian ] = "Espaços ininterruptos" ;
+ Text [ portuguese ] = "Espaços p~rotegidos" ;
+ Text [ finnish ] = "Sitovat välilyönnit" ;
+ Text [ danish ] = "Beskyttede mellemrum" ;
+ Text [ french ] = "~Espaces protégés" ;
+ Text [ swedish ] = "~Skyddade blanksteg" ;
+ Text [ dutch ] = "~Beveiligde spatie" ;
+ Text [ spanish ] = "Espacios proteg~idos" ;
+ Text [ english_us ] = "~Protected spaces" ;
+ Text[ chinese_simplified ] = "Êܱ£»¤µÄ¿Õ°××Ö·û(~P)";
+ Text[ russian ] = "Çàùèùåííûå ïðîáåëû";
+ Text[ polish ] = "Zab~ezpieczone spacje";
+ Text[ japanese ] = "•ÛŒì½Íß°½(~P)";
+ Text[ chinese_traditional ] = "¨ü«OÅ@ªºªÅ¥Õ¦r¤¸(~P)";
+ Text[ arabic ] = "ÃÍÑÝ ãÓÇÝÉ ãÍãíÉ";
+ Text[ greek ] = "×áñáêôÞñå~ò êåíþí ìå ðñïóôáóßá";
+ Text[ korean ] = "°£°Ý º¸È£(~P)";
+ Text[ turkish ] = "Korunan boþluklar";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_TAB
+ {
+ Pos = MAP_APPFONT ( 140 , 64 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Ta~bulatoren" ;
+ Text [ ENGLISH ] = "~Tabs" ;
+ Text [ norwegian ] = "~Tabs" ;
+ Text [ italian ] = "~Tabulazioni" ;
+ Text [ portuguese_brazilian ] = "~Tabulações" ;
+ Text [ portuguese ] = "~Tabulações" ;
+ Text [ finnish ] = "~Sarkaimet" ;
+ Text [ danish ] = "Tabulatorer" ;
+ Text [ french ] = "~Tabulations" ;
+ Text [ swedish ] = "Ta~bulatorer" ;
+ Text [ dutch ] = "Tabsto~ps" ;
+ Text [ spanish ] = "Ta~bulaciones" ;
+ Text [ english_us ] = "Tabs" ;
+ Text[ chinese_simplified ] = "ÖƱí·û(~B)";
+ Text[ russian ] = "Òàáóëÿòîðû";
+ Text[ polish ] = "Tabulatory";
+ Text[ japanese ] = "ÀÌÞ(~B)";
+ Text[ chinese_traditional ] = "»sªí²Å(~B)";
+ Text[ arabic ] = "ÚáÇãÇÊ ÇáÌÏæáÉ";
+ Text[ greek ] = "ÓôçëïèÝôåò";
+ Text[ korean ] = "ÅÇ";
+ Text[ turkish ] = "Sekmeler";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_BREAK
+ {
+ Pos = MAP_APPFONT ( 140 , 77 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Umbr~üche" ;
+ Text [ ENGLISH ] = "Breaks" ;
+ Text [ norwegian ] = "Breaks" ;
+ Text [ italian ] = "Interruzioni" ;
+ Text [ portuguese_brazilian ] = "Interrupções" ;
+ Text [ portuguese ] = "Quebras" ;
+ Text [ finnish ] = "Vaihdot" ;
+ Text [ danish ] = "Skift" ;
+ Text [ french ] = "~Sauts" ;
+ Text [ swedish ] = "Br~ytningar" ;
+ Text [ dutch ] = "Ve~randeringen" ;
+ Text [ spanish ] = "~Saltos" ;
+ Text [ english_us ] = "Brea~ks" ;
+ Text[ chinese_simplified ] = "»»Ðзû(~K)";
+ Text[ russian ] = "Ðàçðûâû";
+ Text[ polish ] = "Podzia~³y";
+ Text[ japanese ] = "‰üs(~K)";
+ Text[ chinese_traditional ] = "´«¦æ²Å(~K)";
+ Text[ arabic ] = "ÝæÇÕá";
+ Text[ greek ] = "ÁëëáãÝò";
+ Text[ korean ] = "³ª´©±â(~K)";
+ Text[ turkish ] = "Kesmeler";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_HIDDEN
+ {
+ Pos = MAP_APPFONT ( 140 , 90 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Verste~ckter Text" ;
+ Text [ ENGLISH ] = "~Hidden text" ;
+ Text [ norwegian ] = "~Hidden text" ;
+ Text [ italian ] = "Testo nascosto" ;
+ Text [ portuguese_brazilian ] = "~Texto oculto" ;
+ Text [ portuguese ] = "~Texto oculto" ;
+ Text [ finnish ] = "~Piiloteksti" ;
+ Text [ danish ] = "Skjult tekst" ;
+ Text [ french ] = "Texte ~masqué" ;
+ Text [ swedish ] = "Dold te~xt" ;
+ Text [ dutch ] = "On~zichtbare tekst" ;
+ Text [ spanish ] = "Te~xto oculto" ;
+ Text [ english_us ] = "Hidden text" ;
+ Text[ chinese_simplified ] = "ÒþÈëµÄÎÄ×Ö(~H)";
+ Text[ russian ] = "Ñêðûòûé òåêñò";
+ Text[ polish ] = "Ukryty tek~st";
+ Text[ japanese ] = "‰B‚µÃ·½Ä(~H)";
+ Text[ chinese_traditional ] = "Áô¤Jªº¤å¦r(~H)";
+ Text[ arabic ] = "äÕ ãÎÝí";
+ Text[ greek ] = "Êñõöü êåßìåíï";
+ Text[ korean ] = "¼û°ÜÁø ÅؽºÆ®";
+ Text[ turkish ] = "~Gizli metin";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_HIDDEN_PARA
+ {
+ Pos = MAP_APPFONT ( 140 , 103 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "~Versteckte Absätze" ;
+ Text [ ENGLISH ] = "H~idden paragraphs" ;
+ Text [ english_us ] = "Hidden p~aragraphs" ;
+ Text [ portuguese_brazilian ] = "~Versteckte Absätze" ;
+ Text [ swedish ] = "~Dolda stycken" ;
+ Text [ danish ] = "Skulte afsnit" ;
+ Text [ italian ] = "~Paragrafi nascosti" ;
+ Text [ spanish ] = "Pá~rrafos ocultos" ;
+ Text [ french ] = "~Paragraphes masqués" ;
+ Text [ dutch ] = "Verborgen al~inea´s" ;
+ Text [ portuguese ] = "~Parágrafos ocultos" ;
+ Text[ chinese_simplified ] = "ÒþÈëµÄ¶ÎÂä(~H)";
+ Text[ russian ] = "Ñêðûòûå àáçàöû";
+ Text[ polish ] = "~Uk~yte akapity";
+ Text[ japanese ] = "‰B‚µ’i—Ž(~H)";
+ Text[ chinese_traditional ] = "Áô¤Jªº¬q¸¨(~H)";
+ Text[ arabic ] = "ÝÞÑÇÊ ãÎÝíÉ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "ÊñõöÞ ðáñÜãñáöïò";
+ Text[ korean ] = "¼û°ÜÁø ´Ü¶ô(~A)";
+ Text[ turkish ] = "Gizili paragraflar";
+ };
+};
+/**************************************************************************/
+/* */
+/* TabPage Anzeige/Layout */
+/* */
+/**************************************************************************/
+TabPage TP_LAYOUT_OPT
+{
+ HelpID = HID_LAYOUT_OPT ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ GroupBox GB_LINE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 120 , 93 ) ;
+ Text = "Linien" ;
+ Text [ ENGLISH ] = "Lines" ;
+ Group = TRUE ;
+ 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 ] = "Çizgiler";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_TXTBEG
+ {
+ Pos = MAP_APPFONT ( 12 , 12 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Te~xtbegrenzungen" ;
+ Text [ ENGLISH ] = "Text boundaries" ;
+ Text [ norwegian ] = "Text boundaries" ;
+ Text [ italian ] = "Limiti di ~testo" ;
+ Text [ portuguese_brazilian ] = "Limites do texto" ;
+ Text [ portuguese ] = "~Limites do texto" ;
+ Text [ finnish ] = "Tekstin rajat" ;
+ Text [ danish ] = "Tekstmargener" ;
+ Text [ french ] = "Délimitations du te~xte" ;
+ Text [ swedish ] = "Te~xtbegränsningar" ;
+ Text [ dutch ] = "Tekst~begrenzingen" ;
+ Text [ spanish ] = "Límites del ~texto" ;
+ Text [ english_us ] = "Te~xt limits" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÕýÎı߽ç(~X)";
+ Text[ russian ] = "Ãðàíèöû òåêñòà";
+ Text[ polish ] = "Granice tekstu";
+ Text[ japanese ] = "÷½Ä‚Ì‹«ŠE(~X)";
+ Text[ chinese_traditional ] = "¤º¤åÃä¬É(~X)";
+ Text[ arabic ] = "ÍÏæÏ ÇáäÕ";
+ Text[ greek ] = "¼ñéá êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® °æ°è(~X)";
+ Text[ turkish ] = "Metin sýnýrlarý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_TABBEG
+ {
+ Pos = MAP_APPFONT ( 12 , 25 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Tabelle~nbegrenzungen" ;
+ Text [ ENGLISH ] = "~Table boundaries" ;
+ Text [ norwegian ] = "~Table boundaries" ;
+ Text [ italian ] = "Limiti ~tabella" ;
+ Text [ portuguese_brazilian ] = "~Limites da tabela" ;
+ Text [ portuguese ] = "~Limites da tabela" ;
+ Text [ finnish ] = "~Taulukon rajat" ;
+ Text [ danish ] = "Tabelgrænser" ;
+ Text [ french ] = "~Bordures de tableau" ;
+ Text [ swedish ] = "Tabellbegrä~nsningar" ;
+ Text [ dutch ] = "~Tabelbegrenzingen" ;
+ Text [ spanish ] = "Límites de la t~abla" ;
+ Text [ english_us ] = "T~able limits" ;
+ Text[ chinese_simplified ] = "±í¸ñ±ß½ç(~B)";
+ Text[ russian ] = "Ãðàíèöû òàáëèöû";
+ Text[ polish ] = "Ograniczenia tabeli";
+ Text[ japanese ] = "•\\‚Ì‹«ŠE(~B)";
+ Text[ chinese_traditional ] = "ªí®æÃä¬É(~B)";
+ Text[ arabic ] = "ÍÏæÏ ÇáÌÏæá";
+ Text[ greek ] = "¼ñéá ðßíáêá";
+ Text[ korean ] = "Ç¥ °æ°è(~A)";
+ Text[ turkish ] = "Tablo sýnýrlarý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_SECT_BOUNDS
+ {
+ Pos = MAP_APPFONT ( 12 , 38 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "~Bereichsbegrenzungen" ;
+ Text [ ENGLISH ] = "~Section boundaries" ;
+ Text[ english_us ] = "~Section limits";
+ Text[ portuguese ] = "~Limites de área";
+ Text[ russian ] = "Ãðàíèöû îáëàñòè";
+ Text[ dutch ] = "~Bereiksgrenzen";
+ Text[ french ] = "~Limites de sections";
+ Text[ spanish ] = "~Límites de área";
+ Text[ italian ] = "Limiti area";
+ Text[ danish ] = "Områdegrænser";
+ Text[ swedish ] = "Områdesbegränsningar";
+ Text[ polish ] = "Ograniczenie obszaru";
+ Text[ portuguese_brazilian ] = "~Section boundaries";
+ Text[ japanese ] = "¾¸¼®Ý‹æØ‚è(~S)";
+ Text[ chinese_simplified ] = "ÇøÓò±ß½ç(~S)";
+ Text[ chinese_traditional ] = "°Ï°ìÃä¬É(~S)";
+ Text[ arabic ] = "ÍÏæÏ ÇáäØÇÞ";
+ Text[ greek ] = "¼ñéá ôïìÝá";
+ Text[ korean ] = "±¸¿ª °æ°è(~S)";
+ Text[ turkish ] = "~Bölüm sýnýrlarý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_CROSS
+ {
+ Pos = MAP_APPFONT ( 12 , 51 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "H~ilfslinien" ;
+ Text [ ENGLISH ] = "~Crosshair" ;
+ Text [ norwegian ] = "~Crosshair" ;
+ Text [ italian ] = "Linee guida" ;
+ Text [ portuguese_brazilian ] = "~Crosshair" ;
+ Text [ portuguese ] = "~Guias" ;
+ Text [ finnish ] = "~Ristikkäin" ;
+ Text [ danish ] = "Hjælpelinjer" ;
+ Text [ french ] = "~Repères" ;
+ Text [ swedish ] = "Hj~älplinjer" ;
+ Text [ dutch ] = "~Hulplijnen" ;
+ Text [ spanish ] = "~Guías" ;
+ Text [ english_us ] = "~Guides" ;
+ Text[ chinese_simplified ] = "¸¨ÖúÏß(~G)";
+ Text[ russian ] = "Íàïðàâëÿþùèå ëèíèè";
+ Text[ polish ] = "Linie pomocnicze";
+ Text[ japanese ] = "•â•ü(~G)";
+ Text[ chinese_traditional ] = "»²§U½u(~G)";
+ Text[ arabic ] = "ÎØæØ ãÓÇÚÏÉ";
+ Text[ greek ] = "ÂïçèçôéêÝò ãñáììÝò";
+ Text[ korean ] = "¾È³»(~G)";
+ Text[ turkish ] = "Kýlavuzlar";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_HANDLE
+ {
+ Pos = MAP_APPFONT ( 12 , 64 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "~Einfache Griffe" ;
+ Text [ ENGLISH ] = "Simple Handles" ;
+ Text[ english_us ] = "~Simple control points";
+ Text[ portuguese ] = "Guias sim~ples";
+ 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 ] = "±ê×¼¿Øµã";
+ Text[ chinese_traditional ] = "¼Ð­ã±±ÂI(~S)";
+ Text[ arabic ] = "ãÞÇÈÖ ÈÓíØÉ";
+ Text[ turkish ] = "Basit çekme noktalarý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_BIGHANDLE
+ {
+ Pos = MAP_APPFONT ( 12 , 77 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "~Große Griffe" ;
+ Text [ ENGLISH ] = "Big Handles" ;
+ Text[ english_us ] = "Large co~ntrol points";
+ Text[ portuguese ] = "~Guias grandes";
+ Text[ russian ] = "Êðóïíûå óçëû";
+ Text[ greek ] = "Ìå~ãÜëá óçìåßá åëÝã÷ïõ";
+ Text[ dutch ] = "~Grote handvatten";
+ Text[ french ] = "~Grandes poignées";
+ Text[ spanish ] = "Agarrader~as grandes";
+ Text[ italian ] = "Maniglie ~grandi";
+ Text[ danish ] = "Store håndtag";
+ Text[ swedish ] = "~Stora handtag";
+ Text[ polish ] = "Du¿e uchwyty";
+ Text[ portuguese_brazilian ] = "Big Handles";
+ Text[ japanese ] = "‘å‚«‚¢»²½Þ•ÏXÊÝÄÞÙ(~B)";
+ Text[ korean ] = "´ëÇü ÇÚµé(~N)";
+ Text[ chinese_simplified ] = "´ó¿Øµã";
+ Text[ chinese_traditional ] = "¤j±±ÂI(~B)";
+ 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 [ italian ] = "Finestra";
+ Text [ portuguese_brazilian ] = "Janela";
+ Text [ portuguese ] = "Janela";
+ 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 [ norwegian ] = "Window" ;
+ Text [ italian ] = "Finestra" ;
+ Group = TRUE ;
+ Text[ chinese_traditional ] = "µøµ¡";
+ Text[ arabic ] = "äÇÝÐÉ";
+ Text[ greek ] = "ÐáñÜèõñï";
+ Text[ korean ] = "â";
+ Text[ turkish ] = "Pencere";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_HSCROLL
+ {
+ Pos = MAP_APPFONT ( 140 , 12 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Horizontale Bildla~ufleiste" ;
+ Text [ ENGLISH ] = "~Horizontal scrollbar" ;
+ Text [ english_us ] = "H~orizontal scroll" ;
+ Text [ italian ] = "Barra di scorrimento orizzontale" ;
+ Text [ spanish ] = "Barra de desplazamiento ~horizontal" ;
+ Text [ french ] = "Barre de défilement ~horizontale" ;
+ Text [ dutch ] = "H~orizontale beeldschuifbalk" ;
+ Text [ swedish ] = "H~orisontell bildrullningslist" ;
+ Text [ danish ] = "Vandret rullepanel" ;
+ Text [ portuguese_brazilian ] = "Horizontale Bildla~ufleiste" ;
+ Text [ portuguese ] = "Barra de deslocação ~horizontal" ;
+ Text[ chinese_simplified ] = "ˮƽÏò¹ö¶¯À¸(~H)";
+ Text[ russian ] = "Ãîðèçîíòàëüíàÿ ïîëîñà ïðîêðóòêè";
+ Text[ polish ] = "Poziomy pa~sek przewijania obrazu";
+ Text[ japanese ] = "…•½½¸Û°ÙÊÞ°(~H)";
+ Text[ chinese_traditional ] = "¤ô¥­¦V¨÷¶b(~H)";
+ Text[ arabic ] = "ÔÑíØ ÊÍÑíß ÇáÕÝÍÉ ÃÝÞíÇð";
+ Text[ greek ] = "Ïñéæüíôéá ãñáììÞ êýëéóçò";
+ Text[ korean ] = "¼öÆò ½ºÅ©·Ñ(~O)";
+ Text[ turkish ] = "Yatay kaydýrma ~çubuðu";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_VSCROLL
+ {
+ Pos = MAP_APPFONT ( 140 , 25 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "~Vertikale Bildlaufleiste" ;
+ Text [ ENGLISH ] = "~Vertical scrollbar" ;
+ Text [ english_us ] = "~Vertical scroll" ;
+ Text [ italian ] = "Barra di scorrimento verticale" ;
+ Text [ spanish ] = "Barra de desplazamiento ~vertical" ;
+ Text [ french ] = "Barre de défilement ~verticale" ;
+ Text [ dutch ] = "~Verticale schuifbalk" ;
+ Text [ swedish ] = "~Vertikal bildrullningslist" ;
+ Text [ danish ] = "Lodret rullepanel" ;
+ Text [ portuguese_brazilian ] = "~Vertikale Bildlaufleiste" ;
+ Text [ portuguese ] = "Barra de deslocação ~vertical" ;
+ Text[ chinese_simplified ] = "´¹Ö±Ïò¹ö¶¯À¸(~V)";
+ Text[ russian ] = "Âåðòèêàëüíàÿ ïîëîñà ïðîêðóòêè";
+ Text[ polish ] = "Piono~wy pasek przewijania obrazu";
+ Text[ japanese ] = "‚’¼½¸Û°ÙÊÞ°(~V)";
+ Text[ chinese_traditional ] = "««ª½¦¡¨÷¶b(~V)";
+ Text[ arabic ] = "ÔÑíØ ÊÍÑíß ÇáÕÝÍÉ ÑÃÓíÇð";
+ Text[ greek ] = "Êáôáêüñõöç ãñáììÞ êýëéóçò";
+ Text[ korean ] = "¼öÁ÷ ½ºÅ©·Ñ(~V)";
+ Text[ turkish ] = "Di~key kaydýrma çubuðu";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_HRULER
+ {
+ Pos = MAP_APPFONT ( 140 , 38 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Horizontales ~Lineal" ;
+ Text [ ENGLISH ] = "~Horic. ruler" ;
+ Text [ norwegian ] = "~Horic. ruler" ;
+ Text [ italian ] = "Rig~hello orizzontale" ;
+ Text [ portuguese_brazilian ] = "~Régua horizontal" ;
+ Text [ portuguese ] = "~Régua horizontal" ;
+ Text [ finnish ] = "~Vaakaviivain" ;
+ Text [ danish ] = "Vandret lineal" ;
+ Text [ french ] = "Règle hori~zontale" ;
+ Text [ swedish ] = "Horisontell ~linjal" ;
+ Text [ dutch ] = "Horizontale ~liniaal" ;
+ Text [ spanish ] = "Regla h~orizontal" ;
+ Text [ english_us ] = "Hori~zontal ruler" ;
+ Text[ chinese_simplified ] = "ˮƽ±ê³ß(~O)";
+ Text[ russian ] = "Ãîðèçîíòàëüíàÿ ëèíåéêà";
+ Text[ polish ] = "Linijka pozioma";
+ Text[ japanese ] = "…•½Ù°×(~O)";
+ Text[ chinese_traditional ] = "¤ô¥­¼Ð¤Ø(~O)";
+ Text[ arabic ] = "ÇáãÓØÑÉ ÇáÃÝÞíÉ";
+ Text[ greek ] = "Ïñéæüíôéïò ÷Üñáêáò";
+ Text[ korean ] = "¼öÆò ´«±ÝÀÚ(~Z)";
+ Text[ turkish ] = "Yatay cetvel";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_VRULER
+ {
+ Pos = MAP_APPFONT ( 140 , 51 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "Verti~kales Lineal" ;
+ Text [ ENGLISH ] = "~Vert. ruler" ;
+ Text [ norwegian ] = "~Vert. ruler" ;
+ Text [ italian ] = "Ri~ghello verticale" ;
+ Text [ portuguese_brazilian ] = "~Régua vertical" ;
+ Text [ portuguese ] = "~Régua vertical" ;
+ Text [ finnish ] = "~Pystyviivain" ;
+ Text [ danish ] = "Lodret lineal" ;
+ Text [ french ] = "Règle verti~cale" ;
+ Text [ swedish ] = "Verti~kal linjal" ;
+ Text [ dutch ] = "Verticale l~iniaal" ;
+ Text [ spanish ] = "Regla v~ertical" ;
+ Text [ english_us ] = "V~ertical ruler" ;
+ Text[ chinese_simplified ] = "´¹Ö±±ê³ß(~E)";
+ Text[ russian ] = "Âåðòèêàëüíàÿ ëèíåéêà";
+ Text[ polish ] = "Linij~ka pionowa";
+ Text[ japanese ] = "‚’¼Ù°×(~E)";
+ Text[ chinese_traditional ] = "««ª½¦¡¼Ð¤Ø(~E)";
+ Text[ arabic ] = "ÇáãÓØÑÉ ÇáÑÃÓíÉ";
+ Text[ greek ] = "Êáôáêüñõöïò ÷Üñáêáò";
+ Text[ korean ] = "¼öÁ÷ ´«±ÝÀÚ(~E)";
+ Text[ turkish ] = "Dikey cetvel";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_SMOOTH_SCROLL
+ {
+ Pos = MAP_APPFONT ( 140 , 64 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Text = "~Weiches Scrollen" ;
+ Text [ ENGLISH ] = "S~mooth scroll" ;
+ Text [ english_us ] = "S~mooth scroll" ;
+ Text [ portuguese_brazilian ] = "~Weiches Scrollen" ;
+ Text [ swedish ] = "~Mjuk rullning" ;
+ Text [ danish ] = "Blød rulning" ;
+ Text [ italian ] = "Scorrimento dolce" ;
+ Text [ spanish ] = "Desplazamiento ~suave" ;
+ Text [ french ] = "~Défilement doux" ;
+ Text [ dutch ] = "~Zacht scrollen" ;
+ Text [ portuguese ] = "~Mover suavemente" ;
+ Text[ chinese_simplified ] = "ƽ»¬¹ö¶¯(~M)";
+ Text[ russian ] = "Ìÿãêàÿ ïðîêðóòêà";
+ Text[ polish ] = "Miêkkie przewijanie";
+ Text[ japanese ] = "ŠŠ‚ç‚©‚Ƚ¸Û°Ù(~M)";
+ Text[ chinese_traditional ] = "¥­·Æ±²°Ê(~M)";
+ Text[ arabic ] = "ÇáÊÍÑíß ÇáãØÇæÚ";
+ Text[ greek ] = "ÁðáëÞ êýëéóç";
+ Text[ korean ] = "ºÎµå·´°Ô ½ºÅ©·Ñ(~M)";
+ Text[ turkish ] = "Yavaþ kaydýrma";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_METRIC
+ {
+ Pos = MAP_APPFONT ( 6 , 101 ) ;
+ Size = MAP_APPFONT ( 120 , 26 ) ;
+ Text = "Maßeinheit";
+ Text [ ENGLISH ] = "Metric Units" ;
+ Text [ italian ] = "Unità di misura";
+ Text [ portuguese_brazilian ] = "Unidades métricas";
+ Text [ portuguese ] = "Unidades métricas";
+ Text [ danish ] = "Måleenhed";
+ Text [ french ] = "Unité de mesure";
+ Text [ swedish ] = "Måttenhet";
+ Text [ dutch ] = "Maateenheid";
+ Text [ spanish ] = "Unidad de medida";
+ Text [ english_us ] = "Meas. units";
+ Text[ chinese_simplified ] = "¶ÈÁ¿µ¥Î»";
+ Text[ russian ] = "Åäèíèöà èçìåðåíèÿ";
+ Text[ polish ] = "Jednostka miary";
+ Text[ japanese ] = "’PˆÊ";
+ Text [ norwegian ] = "Metriske Enheter" ;
+ Text [ finnish ] = "Metriset yksiköt" ;
+ Text[ chinese_traditional ] = "«×¶q³æ¦ì";
+ Text[ arabic ] = "æÍÏÉ ÇáÞíÇÓ";
+ Text[ greek ] = "ÌïíÜäá ìÝôñçóçò";
+ Text[ korean ] = "ÃøÁ¤ ´ÜÀ§";
+ Text[ turkish ] = "Ölçü birimi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_METRIC
+ {
+ Pos = MAP_APPFONT ( 12 , 112 ) ;
+ Size = MAP_APPFONT ( 70 , 50 ) ;
+ Border = TRUE ;
+ DropDown = TRUE ;
+ };
+ StringArray ST_METRIC
+ {
+ ItemList =
+ {
+ < "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 ] =
+ {
+ < "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 ; > ;
+ < "miglia" ; 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 ; > ;
+ < "Punkt" ; 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 ; > ;
+ < "Mile" ; 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 [ italian ] = "Intervallo di tabulazione";
+ Text [ portuguese_brazilian ] = "Default Tab distance";
+ Text [ portuguese ] = "Intervalo entre tabulações";
+ Text [ danish ] = "Tabulatorafstand";
+ Text [ french ] = "Tabulations";
+ Text [ swedish ] = "Tabulatoravstånd";
+ Text [ dutch ] = "Tabstops";
+ Text [ spanish ] = "Distancia entre tabuladores";
+ Text [ english_us ] = "Tab stops";
+ Text[ chinese_simplified ] = "ÖƱí·û¼ä¸ô";
+ Text[ russian ] = "Øàã òàáóëÿöèè";
+ Text[ polish ] = "Odstêp tabulatorów";
+ Text[ japanese ] = "ÀÌÞŠÔŠu";
+ Text [ norwegian ] = "Standard tabulatoravstand" ;
+ Text [ finnish ] = "Default Tab distance" ;
+ Group = TRUE ;
+ Text[ chinese_traditional ] = "»sªí²Å¶¡¹j";
+ Text[ arabic ] = "ÚáÇãÇÊ ÇáÌÏæáÉ";
+ Text[ greek ] = "ÁðïóôÜóåéò óôçëïèåôþí";
+ Text[ korean ] = "ÅÇ ¸ØÃã";
+ Text[ turkish ] = "Sekme duraðý";
+ 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 TP_OPTPRINT_PAGE
+{
+ HelpID = HID_OPTPRINT_PAGE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ GroupBox GRP_1
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 78 , 92 ) ;
+ Text = "Inhalt" ;
+ Text [ ENGLISH ] = "Contents" ;
+ Text [ norwegian ] = "Innhold " ;
+ Text [ italian ] = "Contenuto" ;
+ Text [ portuguese_brazilian ] = "Conteúdo" ;
+ Text [ portuguese ] = "Conteúdo" ;
+ Text [ finnish ] = "Sisältö" ;
+ Text [ danish ] = "Indhold" ;
+ Text [ french ] = "Contenu" ;
+ Text [ swedish ] = "Innehåll" ;
+ Text [ dutch ] = "Inhoud" ;
+ Text [ spanish ] = "Contenido" ;
+ Text [ english_us ] = "Contents" ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "ÄÚÈÝ";
+ Text[ russian ] = "Ñîäåðæèìîå";
+ Text[ polish ] = "TreϾ";
+ Text[ japanese ] = "“à—e";
+ Text[ chinese_traditional ] = "¤º®e";
+ Text[ arabic ] = "ÇáãÍÊæíÇÊ";
+ Text[ greek ] = "Ðåñéå÷üìåíá";
+ Text[ korean ] = "³»¿ë";
+ Text[ turkish ] = "Ýçerik";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_PGRF
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 66 , 10 ) ;
+ Text = "~Grafiken" ;
+ Text [ ENGLISH ] = "~Graphics" ;
+ Text [ norwegian ] = "~Graphics" ;
+ Text [ italian ] = "~Immagini" ;
+ Text [ portuguese_brazilian ] = "~Gráficos" ;
+ Text [ portuguese ] = "~Imagens" ;
+ Text [ finnish ] = "~Kuvat" ;
+ Text [ danish ] = "Billeder" ;
+ Text [ french ] = "~Images" ;
+ Text [ swedish ] = "~Grafiker" ;
+ Text [ dutch ] = "A~fbeeldingen" ;
+ Text [ spanish ] = "~Imágenes" ;
+ Text [ english_us ] = "~Graphics" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "ͼÐÎ(~G)";
+ Text[ russian ] = "Ãðàôèêè";
+ Text[ polish ] = "Grafiki";
+ Text[ japanese ] = "¸Þ×̨¯¸(~G)";
+ Text[ chinese_traditional ] = "¹Ï¤ù(~G)";
+ Text[ arabic ] = "ÕæÑ";
+ Text[ greek ] = "ÃñáöéêÜ";
+ Text[ korean ] = "±×·¡ÇÈ(~G)";
+ Text[ turkish ] = "Grafik";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_PTAB
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 66 , 10 ) ;
+ Text = "~Tabellen" ;
+ Text [ ENGLISH ] = "~Tables" ;
+ Text [ norwegian ] = "~Tables" ;
+ Text [ italian ] = "~Tabelle" ;
+ Text [ portuguese_brazilian ] = "~Tabelas" ;
+ Text [ portuguese ] = "~Tabelas" ;
+ Text [ finnish ] = "~Taulukot" ;
+ Text [ danish ] = "Tabeller" ;
+ Text [ french ] = "~Tableaux" ;
+ Text [ swedish ] = "~Tabeller" ;
+ Text [ dutch ] = "~Tabellen" ;
+ Text [ spanish ] = "~Tablas" ;
+ Text [ english_us ] = "~Tables" ;
+ Text[ chinese_simplified ] = "±í¸ñ(~T)";
+ Text[ russian ] = "Òàáëèöû";
+ Text[ polish ] = "Ta~bele";
+ Text[ japanese ] = "•\\(~T)";
+ Text[ chinese_traditional ] = "ªí®æ(~T)";
+ Text[ arabic ] = "ÌÏÇæá";
+ Text[ greek ] = "Ðßíáêåò";
+ Text[ korean ] = "Ç¥(~T)";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_PDRAW
+ {
+ Pos = MAP_APPFONT ( 12 , 40 ) ;
+ Size = MAP_APPFONT ( 66 , 10 ) ;
+ Text = "Zei~chnungen" ;
+ Text [ ENGLISH ] = "~Drawings" ;
+ Text [ norwegian ] = "~Drawings" ;
+ Text [ italian ] = "~Disegni" ;
+ Text [ portuguese_brazilian ] = "~Drawings" ;
+ Text [ portuguese ] = "~Desenhos" ;
+ Text [ finnish ] = "~Drawings" ;
+ Text [ danish ] = "Tegninger" ;
+ Text [ french ] = "~Dessins" ;
+ Text [ swedish ] = "Te~ckningar" ;
+ Text [ dutch ] = "T~ekeningen" ;
+ Text [ spanish ] = "~Dibujos" ;
+ Text [ english_us ] = "Dra~wings" ;
+ Text[ chinese_simplified ] = "»æͼ(~W)";
+ Text[ russian ] = "Ðèñóíêè";
+ Text[ polish ] = "Rysunki";
+ Text[ japanese ] = "}Œ`•`‰æ(~W)";
+ Text[ chinese_traditional ] = "ø¹Ï(~W)";
+ Text[ arabic ] = "ÑÓæãÇÊ";
+ Text[ greek ] = "Ó÷Ýäéá";
+ Text[ korean ] = "±×¸®±â(~W)";
+ Text[ turkish ] = "Çizim";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_CTRLFLD
+ {
+ Pos = MAP_APPFONT ( 12 , 53 ) ;
+ Size = MAP_APPFONT ( 66 , 10 ) ;
+ Text = "Kontroll~felder" ;
+ Text [ ENGLISH ] = "Controls" ;
+ Text [ norwegian ] = "Kontroller" ;
+ Text [ italian ] = "Campi di controllo" ;
+ Text [ portuguese_brazilian ] = "Controles" ;
+ Text [ portuguese ] = "Campos de controlo" ;
+ Text [ english_us ] = "Controls" ;
+ Text [ finnish ] = "Ohjausobjektit" ;
+ Text [ danish ] = "Kontrolelementer" ;
+ Text [ french ] = "~Champs de contrôle" ;
+ Text [ swedish ] = "Kontroll~fält" ;
+ Text [ dutch ] = "Controle~velden" ;
+ Text [ spanish ] = "~Campos de control" ;
+ Text[ chinese_simplified ] = "¿ØÖÆ(~F)";
+ Text[ russian ] = "Ýëåìåíòû óïðàâëåíèÿ";
+ Text[ polish ] = "Pola kon~trolne";
+ Text[ japanese ] = "ºÝÄÛ-Ù(~F)";
+ Text[ chinese_traditional ] = "±±¨î¶µ(~F)";
+ Text[ arabic ] = "ÚäÇÕÑ ÊÍßã";
+ Text[ greek ] = "Ðåäßá åëÝã÷ïõ";
+ Text[ korean ] = "ÄÁÆ®·Ñ";
+ Text[ turkish ] = "Komut alanlarý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_BACKGROUND
+ {
+ Pos = MAP_APPFONT ( 12 , 66 ) ;
+ Size = MAP_APPFONT ( 66 , 10 ) ;
+ Text = "H~intergrund" ;
+ Text [ ENGLISH ] = "Background" ;
+ Text [ dutch ] = "A~chtergrond" ;
+ Text [ english_us ] = "Ba~ckground" ;
+ Text [ italian ] = "Sfondo" ;
+ Text [ spanish ] = "~Fondo" ;
+ Text [ french ] = "A~rrière-plan" ;
+ Text [ swedish ] = "Bak~grund" ;
+ Text [ danish ] = "Baggrund" ;
+ Text [ portuguese ] = "~Plano de fundo" ;
+ Text [ portuguese_brazilian ] = "H~intergrund" ;
+ Text[ chinese_simplified ] = "±³¾°(~C)";
+ Text[ russian ] = "Ôîí";
+ Text[ polish ] = "T³o";
+ Text[ japanese ] = "”wŒi(~C)";
+ Text[ chinese_traditional ] = "­I´º(~C)";
+ Text[ arabic ] = "ÇáÎáÝíÉ";
+ Text[ greek ] = "Öüíôï";
+ Text[ korean ] = "¹è°æ(~C)";
+ Text[ turkish ] = "Artalan";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_BLACK_FONT
+ {
+ Pos = MAP_APPFONT ( 12 , 79 ) ;
+ Size = MAP_APPFONT ( 66 , 10 ) ;
+ Text = "Sch~warz drucken" ;
+ Text [ ENGLISH ] = "Print black" ;
+ Text [ english_us ] = "Print blac~k" ;
+ Text [ swedish ] = "S~vart utskrift" ;
+ Text [ danish ] = "Udskriv sort" ;
+ Text [ italian ] = "Stampa in nero" ;
+ Text [ spanish ] = "Imprimir ~en negro" ;
+ Text [ french ] = "Imprimer en ~noir" ;
+ Text [ dutch ] = "~Zwart afdrukken" ;
+ Text [ portuguese_brazilian ] = "Sch~warz drucken" ;
+ Text [ portuguese ] = "Imprimir ~preto" ;
+ Text[ chinese_simplified ] = "´òÓ¡ºÚÉ«(~K)";
+ Text[ russian ] = "×åðíûì öâåòîì";
+ Text[ polish ] = "Drukuj czarnym kol.";
+ Text[ japanese ] = "•‚ňóü(~K)";
+ Text[ chinese_traditional ] = "¦C¦L¶Â¦â(~K)";
+ Text[ arabic ] = "ÇáØÈÇÚÉ ÈÇáæä ÃÓæÏ";
+ Text[ greek ] = "Åêôýðùóç óå ìáýñï";
+ Text[ korean ] = "°ËÁ¤ Àμâ(~K)";
+ Text[ turkish ] = "Siyah/beyaz yazdýr";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GRP_2
+ {
+ Pos = MAP_APPFONT ( 90 , 3 ) ;
+ Size = MAP_APPFONT ( 78 , /*92*/66 ) ;
+ Text = "Seiten" ;
+ Text [ ENGLISH ] = "Pages" ;
+ Text [ norwegian ] = "Pages" ;
+ Text [ italian ] = "Pagine" ;
+ Text [ portuguese_brazilian ] = "Páginas" ;
+ Text [ portuguese ] = "Páginas" ;
+ Text [ finnish ] = "Sivumäärä" ;
+ Text [ danish ] = "Sider" ;
+ Text [ french ] = "Pages" ;
+ Text [ swedish ] = "Sidor" ;
+ Text [ dutch ] = "Pagina's" ;
+ Text [ spanish ] = "Páginas" ;
+ Text [ english_us ] = "Pages" ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "Ò³";
+ Text[ russian ] = "Ñòðàíèöû";
+ Text[ polish ] = "Strony";
+ Text[ japanese ] = "Íß°¼Þ";
+ Text[ chinese_traditional ] = "­¶";
+ Text[ arabic ] = "ÇáÕÝÍÇÊ";
+ Text[ greek ] = "Óåëßäåò";
+ Text[ korean ] = "ÆäÀÌÁö";
+ Text[ turkish ] = "Sayfa";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_LEFTP
+ {
+ Pos = MAP_APPFONT ( 96 , 14 ) ;
+ Size = MAP_APPFONT ( 66 , 10 ) ;
+ Text = "~Linke Seiten" ;
+ Text [ ENGLISH ] = "~Left pages" ;
+ Text [ norwegian ] = "~Left pages" ;
+ Text [ italian ] = "Pa~gine sinistre" ;
+ Text [ portuguese_brazilian ] = "~Páginas esquerdas" ;
+ Text [ portuguese ] = "~Páginas esquerdas" ;
+ Text [ finnish ] = "~Vasemmat sivut" ;
+ Text [ danish ] = "Venstre sider" ;
+ Text [ french ] = "Pages de ~gauche" ;
+ Text [ swedish ] = "~Vänstersidor" ;
+ Text [ dutch ] = "~Linker pagina's" ;
+ Text [ spanish ] = "Páginas ~izquierdas" ;
+ Text [ english_us ] = "~Left pages" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "×óÒ³(~L)";
+ Text[ russian ] = "Ëåâûå ñòðàíèöû";
+ Text[ polish ] = "~Lewe strony";
+ Text[ japanese ] = "¶Íß°¼Þ(~L)";
+ Text[ chinese_traditional ] = "¥ª­¶(~L)";
+ Text[ arabic ] = "ÇáÕÝÍÇÊ ÇáíÓÑì";
+ Text[ greek ] = "ÁñéóôåñÝò óåëßäåò";
+ Text[ korean ] = "¿ÞÂÊ ÆäÀÌÁö(~L)";
+ Text[ turkish ] = "Sol sayfalar";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_RIGHTP
+ {
+ Pos = MAP_APPFONT ( 96 , 27 ) ;
+ Size = MAP_APPFONT ( 66 , 10 ) ;
+ Text = "~Rechte Seiten" ;
+ Text [ ENGLISH ] = "~Right pages" ;
+ Text [ norwegian ] = "~Right pages" ;
+ Text [ italian ] = "Pagine ~destre" ;
+ Text [ portuguese_brazilian ] = "~Páginas direitas" ;
+ Text [ portuguese ] = "~Páginas direitas" ;
+ Text [ finnish ] = "~Oikeat sivut" ;
+ Text [ danish ] = "Højre sider" ;
+ Text [ french ] = "Pages de ~droite" ;
+ Text [ swedish ] = "Höge~rsidor" ;
+ Text [ dutch ] = "~Rechter pagina's" ;
+ Text [ spanish ] = "Páginas derec~has" ;
+ Text [ english_us ] = "~Right pages" ;
+ Text[ chinese_simplified ] = "ÓÒÒ³(~H)";
+ Text[ russian ] = "Ïðàâûå ñòðàíèöû";
+ Text[ polish ] = "Prawe ~strony";
+ Text[ japanese ] = "‰EÍß°¼Þ(~H)";
+ Text[ chinese_traditional ] = "¥k­¶(~H)";
+ Text[ arabic ] = "ÇáÕÝÍÇÊ Çáíãäì";
+ Text[ greek ] = "ÄåîéÝò óåëßäåò";
+ Text[ korean ] = "¿À¸¥ÂÊ ÆäÀÌÁö(~R)";
+ Text[ turkish ] = "Sað sayfalar";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_REVERSE
+ {
+ Pos = MAP_APPFONT ( 96 , 40 ) ;
+ Size = MAP_APPFONT ( 66 , 10 ) ;
+ Text = "~Umgekehrt" ;
+ Text [ ENGLISH ] = "Re~versed" ;
+ Text [ norwegian ] = "Re~versed" ;
+ Text [ italian ] = "I~nvertito" ;
+ Text [ portuguese_brazilian ] = "Re~vertido" ;
+ Text [ portuguese ] = "~Inversão" ;
+ Text [ finnish ] = "~Käänteinen" ;
+ Text [ danish ] = "Omvendt" ;
+ Text [ french ] = "Ordre in~versé" ;
+ Text [ swedish ] = "~Omvänt" ;
+ Text [ dutch ] = "~Omgekeerd" ;
+ Text [ spanish ] = "In~vertido" ;
+ Text [ english_us ] = "Re~versed" ;
+ Text[ chinese_simplified ] = "·´Ïò(~V)";
+ Text[ russian ] = "Íàîáîðîò";
+ Text[ polish ] = "Odwrotnie";
+ Text[ japanese ] = "ˆóü‡˜‚ð‹t‚É‚·‚é(~V)";
+ Text[ chinese_traditional ] = "¤Ï¦V(~V)";
+ Text[ arabic ] = "ÈÊÑÊíÈ ãÚßæÓ";
+ Text[ greek ] = "Áíôßóôñïöá";
+ Text[ korean ] = "°Å²Ù·Î(~V)";
+ Text[ turkish ] = "Ters sýra";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_PROSPECT
+ {
+ Pos = MAP_APPFONT ( 96 , 53 ) ;
+ Size = MAP_APPFONT ( 66 , 10 ) ;
+ Text = "Pr~ospekt" ;
+ Text [ ENGLISH ] = "Pr~ospectus" ;
+ Text [ dutch ] = "~Prospectus" ;
+ Text [ english_us ] = "Bro~chure" ;
+ Text [ italian ] = "Depliant" ;
+ Text [ spanish ] = "~Prospecto" ;
+ Text [ french ] = "Pr~ospectus" ;
+ Text [ swedish ] = "Pr~ospekt" ;
+ Text [ danish ] = "Brochure" ;
+ Text [ portuguese_brazilian ] = "Pr~ospekt" ;
+ Text [ portuguese ] = "Pr~ospecto" ;
+ Text[ chinese_simplified ] = "СÊÖ²á(~C)";
+ Text[ russian ] = "Áðîøþðà";
+ Text[ polish ] = "Brosz~ura";
+ Text[ japanese ] = "ÊßÝÌÚ¯Ä(~C)";
+ Text[ chinese_traditional ] = "¤p¤â¥U(~C)";
+ Text[ arabic ] = "äÔÑÉ";
+ Text[ greek ] = "ÐñïóðÝêôïõò";
+ Text[ korean ] = "ÆÊÇ÷¿(~C)";
+ Text[ turkish ] = "Broþür";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_NO
+ {
+ Pos = MAP_APPFONT ( 180 , 14 ) ;
+ Size = MAP_APPFONT ( 68 , 10 ) ;
+ Text = "~Keine" ;
+ Text [ ENGLISH ] = "~None" ;
+ Text [ norwegian ] = "~Ingen " ;
+ Text [ italian ] = "~Senza" ;
+ 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 ] = "~Sin" ;
+ Text [ english_us ] = "~None" ;
+ TabStop = TRUE ;
+ Group = 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 RB_ONLY
+ {
+ Pos = MAP_APPFONT ( 180 , 27 ) ;
+ Size = MAP_APPFONT ( 68 , 10 ) ;
+ Text = "~Nur Notizen" ;
+ Text [ ENGLISH ] = "~Notes only" ;
+ Text [ norwegian ] = "~Notes only" ;
+ Text [ italian ] = "~Solo note" ;
+ Text [ portuguese_brazilian ] = "~Observações apenas" ;
+ Text [ portuguese ] = "~Só anotações" ;
+ Text [ finnish ] = "~Vain huomautukset" ;
+ Text [ danish ] = "Kun noter" ;
+ Text [ french ] = "~Notes uniquement" ;
+ Text [ swedish ] = "~Endast anteckningar" ;
+ Text [ dutch ] = "A~lleen aantekeningen" ;
+ Text [ spanish ] = "Solo ~notas" ;
+ Text [ english_us ] = "Notes ~only" ;
+ Text[ chinese_simplified ] = "Ö»ÊDZ¸×¢(~O)";
+ Text[ russian ] = "Òîëüêî ïðèìå÷àíèÿ";
+ Text[ polish ] = "Tylko notatki";
+ Text[ japanese ] = "ÒÓ’ ‚Ì‚Ý(~O)";
+ Text[ chinese_traditional ] = "¶È¬O³Æª`(~O)";
+ Text[ arabic ] = "ãáÇÍÙÇÊ ÝÞØ";
+ Text[ greek ] = "Ìüíï óçìåéþóåéò";
+ Text[ korean ] = "¸Þ¸ð¸¸(~O)";
+ Text[ turkish ] = "~Yalnýzca not";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_END
+ {
+ Pos = MAP_APPFONT ( 180 , 40 ) ;
+ Size = MAP_APPFONT ( 68 , 10 ) ;
+ Text = "Dokument~ende" ;
+ Text [ ENGLISH ] = "End of ~document" ;
+ Text [ norwegian ] = "End of ~document" ;
+ Text [ italian ] = "Fine ~documento" ;
+ Text [ portuguese_brazilian ] = "Final do ~documento" ;
+ Text [ portuguese ] = "Fim de ~documento" ;
+ Text [ finnish ] = "~Asiakirjan loppu" ;
+ Text [ danish ] = "Dokumentets slutn." ;
+ Text [ french ] = "Fin du ~document" ;
+ Text [ swedish ] = "~Dokumentslut" ;
+ Text [ dutch ] = "~Documenteinde" ;
+ Text [ spanish ] = "~Fin del documento" ;
+ Text [ english_us ] = "End of docu~ment" ;
+ Text[ chinese_simplified ] = "ÎĵµÎ²¶Ë(~M)";
+ Text[ russian ] = "Â êîíöå äîêóìåíòà";
+ Text[ polish ] = "Koniec dokumentu";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ––(~M)";
+ Text[ chinese_traditional ] = "¤å¥ó§ÀºÝ(~M)";
+ Text[ arabic ] = "äåÇíÉ ÇáãÓÊäÏ";
+ Text[ greek ] = "ÔÝëïò êåéìÝíïõ";
+ Text[ korean ] = "¹®¼­ÀÇ ³¡(~M)";
+ Text[ turkish ] = "Belge ~sonu";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_PAGEEND
+ {
+ Pos = MAP_APPFONT ( 180 , 53 ) ;
+ Size = MAP_APPFONT ( 68 , 10 ) ;
+ Text = "~Seitenende" ;
+ Text [ ENGLISH ] = "End of ~page" ;
+ Text [ norwegian ] = "End of ~page" ;
+ Text [ italian ] = "Fine ~pagina" ;
+ Text [ portuguese_brazilian ] = "Final de ~página" ;
+ Text [ portuguese ] = "Fim de ~página" ;
+ Text [ finnish ] = "~Sivun loppu" ;
+ Text [ danish ] = "Sidens slutning" ;
+ Text [ french ] = "Fin de la ~page" ;
+ Text [ swedish ] = "~Sidslut" ;
+ Text [ dutch ] = "Pag~ina-einde" ;
+ Text [ spanish ] = "Fi~n de página" ;
+ Text [ english_us ] = "~End of page" ;
+ Text[ chinese_simplified ] = "ҳβ(~E)";
+ Text[ russian ] = "Â êîíöå ñòðàíèöû";
+ Text[ polish ] = "Konie~c strony";
+ Text[ japanese ] = "Íß°¼Þ––(~E)";
+ Text[ chinese_traditional ] = "­¶§À(~E)";
+ Text[ arabic ] = "äåÇíÉ ÇáÕÝÍÉ";
+ Text[ greek ] = "ÔÝëïò óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁöÀÇ ³¡(~E)";
+ Text[ turkish ] = "~Sayfa sonu";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GRP_3
+ {
+ Pos = MAP_APPFONT ( 174 , 3 ) ;
+ Size = MAP_APPFONT ( 80 , /*92*/66 ) ;
+ 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" ;
+ Group = TRUE ;
+ 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 ] = " ";
+ };
+
+ GroupBox GRP_5
+ {
+ Pos = MAP_APPFONT ( 90 , 70 ) ;
+ Size = MAP_APPFONT ( 164 , 25 ) ;
+ Text = "Ausgabe" ;
+ Text [ ENGLISH ] = "Destination" ;
+ Text [ english_us ] = "Output" ;
+ Text [ italian ] = "Destinazione" ;
+ Text [ spanish ] = "Destino" ;
+ Text [ french ] = "Sortie" ;
+ Text [ dutch ] = "Uitgave" ;
+ Text [ swedish ] = "Utdata" ;
+ Text [ danish ] = "Output" ;
+ Text [ portuguese_brazilian ] = "Ausgabe" ;
+ Text [ portuguese ] = "Destino" ;
+ Text[ chinese_simplified ] = "Êä³ö";
+ Text[ russian ] = "Âûâîä";
+ Text[ polish ] = "Wyjœcie";
+ Text[ japanese ] = "±³ÄÌ߯Ä";
+ Text[ chinese_traditional ] = "¿é¥X";
+ Text[ arabic ] = "ÇáÅÎÑÇÌ";
+ Text[ greek ] = "ÅîáãùãÞ";
+ Text[ korean ] = "Ãâ·Â";
+ Text[ turkish ] = "Çýktý";
+ };
+ CheckBox CB_SINGLEJOBS
+ {
+ Pos = MAP_APPFONT ( 96 , 81 ) ;
+ Size = MAP_APPFONT ( 152 , 10 ) ;
+ Text = "Einzelne Druck~jobs erzeugen" ;
+ Text [ ENGLISH ] = "Si~ngle print jobs" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Create ~single print jobs" ;
+ Text [ portuguese_brazilian ] = "Einzelne Druckjobs erzeugen" ;
+ Text [ swedish ] = "Skapa enstaka utskrifts~jobb" ;
+ Text [ danish ] = "Opret enkelte printerjob" ;
+ Text [ italian ] = "Cr~ea singoli ordini di stampa" ;
+ Text [ spanish ] = "Crear ~tareas individuales de impresión" ;
+ Text [ french ] = "~Travaux d'impression individuels" ;
+ Text [ dutch ] = "Af~zonderlijke afdrukjobs" ;
+ Text [ portuguese ] = "C~riar tarefas de impressão individuais" ;
+ Text[ chinese_simplified ] = "½¨Á¢µ¥¸ö´òÓ¡ÈÎÎñ(~S)";
+ Text[ russian ] = "Ñîçäàòü îòäåëüíûå çàäàíèÿ ïå÷àòè";
+ Text[ polish ] = "Utwórz pojedyncze zadania wydruku";
+ Text[ japanese ] = "1‚‚¸‚ˆóü(~S)";
+ Text[ chinese_traditional ] = "¥Í¦¨³æ­Ó¦C¦L¥ô°È(~S)";
+ Text[ arabic ] = "ÅäÔÇÁ æÙÇÆÝ ØÈÇÚÉ ÝÑÏíÉ";
+ Text[ greek ] = "Äçìéïõñãßá ìåìïíùìÝíùí åñãáóéþí åêôýðùóçò";
+ Text[ korean ] = "´ÜÀÏ Àμâ ÀÛ¾÷¸¸µé±â(~S)";
+ Text[ turkish ] = "Bi~reysel yazdýrma iþleri oluþtur";
+ };
+
+ CheckBox CB_PAPERFROMSETUP
+ {
+ Pos = MAP_APPFONT ( 138 , 112 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "aus ~Druckereinstellung" ;
+ Text [ ENGLISH ] = "from printer ~setup" ;
+ Text [ norwegian ] = "from printer ~setup" ;
+ Text [ italian ] = "Come da imposta~zione stampante" ;
+ Text [ portuguese_brazilian ] = "da impressora ~setup" ;
+ Text [ portuguese ] = "Da configuração da ~impressora" ;
+ Text [ finnish ] = "kirjoittimen ~asetuksista" ;
+ Text [ danish ] = "fra udskriftsindstillingerne" ;
+ Text [ french ] = "d'après ~les paramètres de l'imprimante" ;
+ Text [ swedish ] = "från ~skrivarinställning" ;
+ Text [ dutch ] = "~uit printerinstelling" ;
+ Text [ spanish ] = "De la c~onfiguración de la impresora" ;
+ Text [ english_us ] = "From printer ~settings" ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "²ÉÓôòÓ¡»úµÄÉ趨(~S)";
+ Text[ russian ] = "èç íàñòðîéêè ïðèíòåðà";
+ Text[ polish ] = "Z ustaw~ienia drukarki";
+ Text[ japanese ] = "ÌßØÝÀ‚ÌÝ’è‚©‚ç(~S)";
+ Text[ chinese_traditional ] = "±Ä¥Î¦Lªí¾÷ªº³]©w(~S)";
+ Text[ arabic ] = "ãä ÅÚÏÇÏÇÊ ÇáØÇÈÚÉ";
+ Text[ greek ] = "áðü ôéò ñõèìßóåéò ôïõ åêôõðùôÞ";
+ Text[ korean ] = "ÇÁ¸°ÅÍ ¼³Á¤À¸·Î ºÎÅÍ(~S)";
+ Text[ turkish ] = "Yazýcý ayarlarýný kullan";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GRP_4
+ {
+ Pos = MAP_APPFONT ( 132 , 101 ) ;
+ Size = MAP_APPFONT ( 122 , 29 ) ;
+ Text = "Papierschacht" ;
+ Text [ English ] = "Paper tray" ;
+ Text [ norwegian ] = "Paper tray" ;
+ Text [ italian ] = "Cassetto" ;
+ Text [ portuguese_brazilian ] = "Bandeja para o papel" ;
+ Text [ portuguese ] = "Tabuleiro de alimentação" ;
+ Text [ finnish ] = "Paperilokero" ;
+ Text [ danish ] = "Papirbakke" ;
+ Text [ french ] = "Bac d'alimentation" ;
+ Text [ swedish ] = "Pappersmagasin" ;
+ Text [ dutch ] = "Papierinvoer" ;
+ Text [ spanish ] = "Origen del papel" ;
+ Text [ english_us ] = "Paper tray" ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "Ö½ÕÅÀ´Ô´";
+ Text[ russian ] = "Ïîäà÷à áóìàãè";
+ Text[ polish ] = "Zasobnik papieru";
+ Text[ japanese ] = "‹‹Ž†•û–@";
+ Text[ chinese_traditional ] = "¯È±i¨Ó·½";
+ Text[ arabic ] = "ÏÑÌ ÇáæÑÞ";
+ Text[ greek ] = "Äßóêïò ÷áñôéïý";
+ Text[ korean ] = "¿ëÁö °ø±Þ";
+ Text[ turkish ] = "Kaðýt kaynaðý";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_FAX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 112 ) ;
+ Size = MAP_APPFONT ( 108 , 70 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ Group = TRUE ;
+ };
+ GroupBox GB_FAX
+ {
+ Pos = MAP_APPFONT ( 6 , 101 ) ;
+ Size = MAP_APPFONT ( 120 , 29 ) ;
+ Text = "Fax" ;
+ Text[English] = "Fax" ;
+ Group = TRUE ;
+ Text[ english_us ] = "Fax";
+ Text[ portuguese ] = "Fax";
+ Text[ russian ] = "Ôàêñ";
+ Text[ greek ] = "Fax";
+ Text[ dutch ] = "Fax";
+ Text[ french ] = "Fax";
+ Text[ spanish ] = "Fax";
+ Text[ italian ] = "Fax";
+ Text[ danish ] = "Fax";
+ Text[ swedish ] = "Fax";
+ Text[ polish ] = "Faks";
+ Text[ portuguese_brazilian ] = "Fax";
+ Text[ japanese ] = "Fax";
+ Text[ korean ] = "Æѽº";
+ Text[ chinese_simplified ] = "´«Õæ";
+ Text[ chinese_traditional ] = "¶Ç¯u";
+ Text[ arabic ] = "ÇáÝÇßÓ";
+ Text[ turkish ] = "Faks";
+ Text[ language_user1 ] = " ";
+ };
+};
+/**************************************************************************/
+/* */
+/* */
+/* */
+/**************************************************************************/
+TabPage TP_STD_FONT
+{
+ HelpID = HID_STD_FONT ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ GroupBox GB_STDCHR
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 159 , 113 ) ;
+ Text = "Grundschriften" ;
+ Text [ English ] = "Standard fonts" ;
+ Text [ norwegian ] = "Standard fonts" ;
+ Text [ italian ] = "Caratteri standard" ;
+ Text [ portuguese_brazilian ] = "Fontes padrao" ;
+ Text [ portuguese ] = "Tipos de letra padrão" ;
+ Text [ finnish ] = "Vakiofontit" ;
+ Text [ danish ] = "Standardskrifttyper" ;
+ Text [ french ] = "Polices de base" ;
+ Text [ swedish ] = "Standardteckensnitt" ;
+ Text [ dutch ] = "Standaardlettertypen" ;
+ Text [ spanish ] = "Fuentes estándar" ;
+ Text [ english_us ] = "Default fonts" ;
+ Text[ chinese_simplified ] = "±ê×¼×ÖÌå";
+ Text[ russian ] = "Ñòàíäàðòíûå øðèôòû";
+ Text[ polish ] = "Czcionki podstawowe";
+ Text[ japanese ] = "Šù’è‚ÌÌ«ÝÄ";
+ Text[ chinese_traditional ] = "¼Ð·Ç¦r«¬";
+ Text[ arabic ] = "ÇáÎØæØ ÇáÃÓÇÓíÉ";
+ Text[ greek ] = "ÂáóéêÝò ãñáììáôïóåéñÝò";
+ Text[ korean ] = "±âº» ±Û²Ã";
+ Text[ turkish ] = "Standart yazýtipi";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_STANDARD
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 48 , 10 ) ;
+ Text = "~Standard" ;
+ Text [ English ] = "~Standard" ;
+ Left = TRUE ;
+ Text [ english_us ] = "~Standard" ;
+ Text [ portuguese_brazilian ] = "~Standard" ;
+ Text [ swedish ] = "~Standard" ;
+ Text [ danish ] = "Standard" ;
+ Text [ italian ] = "~Standard" ;
+ Text [ spanish ] = "~Predeterminado" ;
+ Text [ french ] = "~Standard" ;
+ Text [ dutch ] = "~Standaard" ;
+ Text [ portuguese ] = "~Padrão" ;
+ Text[ chinese_simplified ] = "±ê×¼(~S)";
+ Text[ russian ] = "Ñòàíäàðò";
+ Text[ polish ] = "Domyœlnie";
+ Text[ japanese ] = "•W€(~S)";
+ Text[ chinese_traditional ] = "¼Ð·Ç(~S)";
+ Text[ arabic ] = "ÞíÇÓí";
+ Text[ greek ] = "ÐñïåðéëïãÞ";
+ Text[ korean ] = "Ç¥ÁØ(~S)";
+ Text[ turkish ] = "~Standart";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_TITLE
+ {
+ Pos = MAP_APPFONT ( 12 , 32 ) ;
+ Size = MAP_APPFONT ( 48 , 10 ) ;
+ Text = "~Überschrift" ;
+ Text [ English ] = "~Title" ;
+ Text [ norwegian ] = "~Tittel" ;
+ Text [ italian ] = "~Intestazione" ;
+ Text [ portuguese_brazilian ] = "~Título" ;
+ Text [ portuguese ] = "~Título" ;
+ Text [ finnish ] = "~Arvo" ;
+ Text [ danish ] = "Overskrift" ;
+ Text [ french ] = "~Titre" ;
+ Text [ swedish ] = "~Överskrift" ;
+ Text [ dutch ] = "~Kop" ;
+ Text [ spanish ] = "~Encabezado" ;
+ Text [ english_us ] = "~Heading" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "±êÌâ(~H)";
+ Text[ russian ] = "Çàãîëîâîê";
+ Text[ polish ] = "Nag³ówek";
+ Text[ japanese ] = "Œ©o‚µ(~H)";
+ Text[ chinese_traditional ] = "¼ÐÃD(~H)";
+ Text[ arabic ] = "ÇáÚäæÇä";
+ Text[ greek ] = "Åðéêåöáëßäá";
+ Text[ korean ] = "¸Ó¸®±Û(~H)";
+ Text[ turkish ] = "~Baþlýk";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_LIST
+ {
+ Pos = MAP_APPFONT ( 12 , 49 ) ;
+ Size = MAP_APPFONT ( 48 , 10 ) ;
+ Text = "~Liste" ;
+ Text [ English ] = "~List" ;
+ Text [ norwegian ] = "~List" ;
+ Text [ italian ] = "~Elenco" ;
+ Text [ portuguese_brazilian ] = "~Lista" ;
+ Text [ portuguese ] = "~Lista" ;
+ Text [ finnish ] = "~Luettelo" ;
+ Text [ danish ] = "Liste" ;
+ Text [ french ] = "L~iste" ;
+ Text [ swedish ] = "~Lista" ;
+ Text [ dutch ] = "~Lijst" ;
+ Text [ spanish ] = "~Lista" ;
+ Text [ english_us ] = "~List" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Áе¥(~L)";
+ Text[ russian ] = "Ñïèñîê";
+ Text[ polish ] = "Lista";
+ Text[ japanese ] = "ؽÄ(~L)";
+ Text[ chinese_traditional ] = "²M³æ(~L)";
+ Text[ arabic ] = "ÇáÞÇÆãÉ";
+ Text[ greek ] = "Ëßóôá";
+ Text[ korean ] = "¸®½ºÆ®(~L)";
+ Text[ turkish ] = "~Liste";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_LABEL
+ {
+ Pos = MAP_APPFONT ( 12 , 66 ) ;
+ Size = MAP_APPFONT ( 48 , 10 ) ;
+ Text = "~Beschriftung" ;
+ Text [ English ] = "Caption" ;
+ Text [ norwegian ] = "Bildetekst" ;
+ Text [ italian ] = "Dicitura" ;
+ Text [ portuguese_brazilian ] = "Captura" ;
+ Text [ portuguese ] = "~Legenda" ;
+ Text [ finnish ] = "Selite" ;
+ Text [ danish ] = "Billedtekst" ;
+ Text [ french ] = "~Légende" ;
+ Text [ swedish ] = "~Bildtext" ;
+ Text [ dutch ] = "~Bijschrift" ;
+ Text [ spanish ] = "E~tiqueta" ;
+ Text [ english_us ] = "C~aption" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "±êÇ©(~A)";
+ Text[ russian ] = "Íàçâàíèå";
+ Text[ polish ] = "Opis";
+ Text[ japanese ] = "×ÍÞÙ(~A)";
+ Text[ chinese_traditional ] = "¼ÐÅÒ(~A)";
+ Text[ arabic ] = "ÊÓãíÉ ÊæÖíÍíÉ";
+ Text[ greek ] = "ÅðéãñáöÞ";
+ Text[ korean ] = "ĸ¼Ç(~A)";
+ Text[ turkish ] = "~Resim yazýsý";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_IDX
+ {
+ Pos = MAP_APPFONT ( 12 , 83 ) ;
+ Size = MAP_APPFONT ( 48 , 10 ) ;
+ Text = "~Verzeichnis" ;
+ Text [ English ] = "~Index" ;
+ Text [ norwegian ] = "~Index" ;
+ Text [ italian ] = "~Indice" ;
+ Text [ portuguese_brazilian ] = "~Índice" ;
+ Text [ portuguese ] = "~Índice" ;
+ Text [ finnish ] = "~Hakemisto" ;
+ Text [ danish ] = "Indeks" ;
+ Text [ french ] = "~Index" ;
+ Text [ swedish ] = "~Katalog" ;
+ Text [ dutch ] = "~Index" ;
+ Text [ spanish ] = "Í~ndice" ;
+ Text [ english_us ] = "~Index" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ŀ¼(~I)";
+ Text[ russian ] = "Óêàçàòåëü";
+ Text[ polish ] = "Indeks";
+ Text[ japanese ] = "–ÚŽŸ‚Æõˆø(~I)";
+ Text[ chinese_traditional ] = "¥Ø¿ý(~I)";
+ Text[ arabic ] = "ÇáÝåÑÓ";
+ Text[ greek ] = "ÅõñåôÞñéï";
+ Text[ korean ] = "»öÀÎ(~I)";
+ Text[ turkish ] = "~Dizin";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox LB_STANDARD
+ {
+ Pos = MAP_APPFONT ( 63 , 14 ) ;
+ Size = MAP_APPFONT ( 96 , 73 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ ComboBox LB_TITLE
+ {
+ Pos = MAP_APPFONT ( 63 , 31 ) ;
+ Size = MAP_APPFONT ( 96 , 73 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ ComboBox LB_LIST
+ {
+ Pos = MAP_APPFONT ( 63 , 48 ) ;
+ Size = MAP_APPFONT ( 96 , 73 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ ComboBox LB_LABEL
+ {
+ Pos = MAP_APPFONT ( 63 , 65 ) ;
+ Size = MAP_APPFONT ( 96 , 73 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ ComboBox LB_IDX
+ {
+ Pos = MAP_APPFONT ( 63 , 83 ) ;
+ Size = MAP_APPFONT ( 96 , 73 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ CheckBox CB_DOCONLY
+ {
+ Pos = MAP_APPFONT ( 12 , 100 ) ;
+ Size = MAP_APPFONT ( 147 , 10 ) ;
+ Text = "~Nur für das aktuelle Dokument" ;
+ Text [ English ] = "Actual document only" ;
+ Text [ dutch ] = "~Alleen in het actuele document" ;
+ Text [ english_us ] = "C~urrent document only" ;
+ Text [ italian ] = "Solo per il documento corrente" ;
+ Text [ spanish ] = "Solo para el documento ~actual" ;
+ Text [ french ] = "~Uniquement pour le document actif" ;
+ Text [ swedish ] = "Bara för det ~aktuella dokumentet" ;
+ Text [ danish ] = "Kun det aktuelle dokument" ;
+ Text [ portuguese ] = "~Apenas para documento actual" ;
+ Text [ portuguese_brazilian ] = "~Nur für das aktuelle Dokument" ;
+ Text[ chinese_simplified ] = "Ö»ÓÃÓÚµ±Ç°µÄÎĵµ(~O)";
+ Text[ russian ] = "Òîëüêî äëÿ òåêóùåãî äîêóìåíòà";
+ Text[ polish ] = "Tylko dla aktualnego dokumentu";
+ Text[ japanese ] = "Œ»Ýì‹Æ’†‚ÌÄÞ·­ÒÝÄ‚Ì‚Ý(~O)";
+ Text[ chinese_traditional ] = "¶ÈÓì¥Î©ó·í«eªº¤å¥ó(~O)";
+ Text[ arabic ] = "ááãÓÊäÏ ÇáÍÇáí ÝÞØ";
+ Text[ greek ] = "Ìüíï ãéá ôï ôñÝ÷ùí Ýããñáöï";
+ Text[ korean ] = "ÇöÀç ¹®¼­ ¸¸(~U)";
+ Text[ turkish ] = "Yalnýzca açýk belge için";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton PB_STANDARD
+ {
+ Pos = MAP_APPFONT ( 171 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "S~tandard" ;
+ Text [ English ] = "S~tandard" ;
+ Text [ english_us ] = "~Default" ;
+ Text [ italian ] = "~Standard" ;
+ Text [ spanish ] = "~Predeterminado" ;
+ Text [ french ] = "P~ar défaut" ;
+ Text [ dutch ] = "S~tandaard" ;
+ Text [ swedish ] = "St~andard" ;
+ Text [ danish ] = "Standard" ;
+ Text [ portuguese_brazilian ] = "S~tandard" ;
+ Text [ portuguese ] = "~Padrão" ;
+ Text[ chinese_simplified ] = "±ê×¼(~D)";
+ Text[ russian ] = "Ñòàíäàðò";
+ Text[ polish ] = "Standardowy";
+ Text[ japanese ] = "•W€(~D)";
+ Text[ chinese_traditional ] = "¼Ð·Ç(~D)";
+ Text[ arabic ] = "ÇÝÊÑÇÖí";
+ Text[ greek ] = "ÐñïåðéëïãÞ";
+ Text[ korean ] = "±âº»°ª(~D)";
+ Text[ turkish ] = "S~tandart";
+ Text[ language_user1 ] = " ";
+ };
+};
+/**************************************************************************/
+/* */
+/* */
+/* */
+/**************************************************************************/
+TabPage TP_OPTTABLE_PAGE
+{
+ HelpID = HID_OPTTABLE_PAGE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ GroupBox GB_MOVE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 120 , 39 ) ;
+ Text = "Verschieben" ;
+ Text [ English ] = "Move" ;
+ Text [ english_us ] = "Shift" ;
+ Text [ portuguese_brazilian ] = "Verschieben" ;
+ Text [ swedish ] = "Flytta" ;
+ Text [ danish ] = "Flyt" ;
+ Text [ italian ] = "Sposta" ;
+ Text [ spanish ] = "Desplazar" ;
+ Text [ french ] = "Décaler" ;
+ Text [ dutch ] = "Verplaatsen" ;
+ Text [ portuguese ] = "Mover" ;
+ 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 ] = " ";
+ };
+ FixedText FT_ROWMOVE
+ {
+ Pos = MAP_APPFONT ( 12 , 12 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ Text = "~Zeile" ;
+ Text [ English ] = "~Row" ;
+ Text [ english_us ] = "~Row" ;
+ Text [ portuguese_brazilian ] = "~Zeile" ;
+ Text [ swedish ] = "~Rad" ;
+ Text [ danish ] = "Række" ;
+ Text [ italian ] = "Riga" ;
+ Text [ spanish ] = "~Fila" ;
+ Text [ french ] = "~Ligne" ;
+ Text [ dutch ] = "~Rij" ;
+ Text [ portuguese ] = "~Linha" ;
+ Text[ chinese_simplified ] = "ÐÐ(~R)";
+ Text[ russian ] = "Ñòðîêà";
+ Text[ polish ] = "Wiersz";
+ Text[ japanese ] = "s(~R)";
+ Text[ chinese_traditional ] = "¦æ(~R)";
+ Text[ arabic ] = "ÕÝ";
+ Text[ greek ] = "ÃñáììÞ";
+ Text[ korean ] = "Çà(~R)";
+ Text[ turkish ] = "~Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField MF_ROWMOVE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 66 , 11 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ SpinSize = 10 ;
+ Minimum = 25 ;
+ Maximum = 999 ;
+ First = 25 ;
+ Last = 2000 ;
+ };
+ FixedText FT_COLMOVE
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ Text = "~Spalte" ;
+ Text [ English ] = "~Column" ;
+ Text [ english_us ] = "~Column" ;
+ Text [ portuguese_brazilian ] = "~Spalte" ;
+ Text [ swedish ] = "~Kolumn" ;
+ Text [ danish ] = "Kolonne" ;
+ Text [ italian ] = "Colonna" ;
+ Text [ spanish ] = "~Columna" ;
+ Text [ french ] = "C~olonne" ;
+ Text [ dutch ] = "~Kolom" ;
+ Text [ portuguese ] = "~Coluna" ;
+ 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 ] = " ";
+ };
+ MetricField MF_COLMOVE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 66 , 26 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ SpinSize = 10 ;
+ Minimum = 25 ;
+ Maximum = 999 ;
+ First = 25 ;
+ Last = 2000 ;
+ };
+ GroupBox GB_INSERT
+ {
+ Pos = MAP_APPFONT ( 132 , 3 ) ;
+ Size = MAP_APPFONT ( 120 , 39 ) ;
+ Text = "Einfügen" ;
+ Text [ English ] = "Insert" ;
+ Text [ english_us ] = "Insert" ;
+ Text [ portuguese_brazilian ] = "Einfügen" ;
+ Text [ swedish ] = "Infoga" ;
+ Text [ danish ] = "Indsæt" ;
+ Text [ italian ] = "Inserisci" ;
+ Text [ spanish ] = "Insertar" ;
+ Text [ french ] = "Insérer" ;
+ Text [ dutch ] = "Invoegen" ;
+ Text [ portuguese ] = "Inserir" ;
+ 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 ] = " ";
+ };
+ FixedText FT_ROWINSERT
+ {
+ Pos = MAP_APPFONT ( 138 , 12 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ Text = "Z~eile" ;
+ Text [ English ] = "Ro~w" ;
+ Text [ english_us ] = "Ro~w" ;
+ Text [ portuguese_brazilian ] = "Z~eile" ;
+ Text [ swedish ] = "Ra~d" ;
+ Text [ danish ] = "Række" ;
+ Text [ italian ] = "Riga" ;
+ Text [ spanish ] = "F~ila" ;
+ Text [ french ] = "~Ligne" ;
+ Text [ dutch ] = "R~ij" ;
+ Text [ portuguese ] = "~Linha" ;
+ Text[ chinese_simplified ] = "ÐÐ(~W)";
+ Text[ russian ] = "Ñòðîêà";
+ Text[ polish ] = "Wiersz";
+ Text[ japanese ] = "s(~Wj";
+ Text[ chinese_traditional ] = "¦æ(~W)";
+ Text[ arabic ] = "ÕÝ";
+ Text[ greek ] = "ÃñáììÞ";
+ Text[ korean ] = "¿­(~W)";
+ Text[ turkish ] = "S~atýr";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField MF_ROWINSERT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 192 , 11 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ SpinSize = 10 ;
+ Minimum = 25 ;
+ Maximum = 999 ;
+ First = 25 ;
+ Last = 2000 ;
+ };
+ FixedText FT_COLINSERT
+ {
+ Pos = MAP_APPFONT ( 138 , 27 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ Text = "S~palte" ;
+ Text [ English ] = "C~olumn" ;
+ Text [ portuguese ] = "~Coluna" ;
+ Text [ english_us ] = "Colu~mn" ;
+ Text [ portuguese_brazilian ] = "S~palte" ;
+ Text [ swedish ] = "K~olumn" ;
+ Text [ danish ] = "Kolonne" ;
+ Text [ italian ] = "Colonna" ;
+ Text [ spanish ] = "C~olumna" ;
+ Text [ french ] = "C~olonne" ;
+ Text [ dutch ] = "K~olom" ;
+ Text[ chinese_simplified ] = "ÁÐ(~M)";
+ Text[ russian ] = "Êîëîíêà";
+ Text[ polish ] = "Kolumna";
+ Text[ japanese ] = "—ñ(~M)";
+ Text[ chinese_traditional ] = "Äæ(~M)";
+ Text[ arabic ] = "ÚãæÏ";
+ Text[ greek ] = "ÓôÞëç";
+ Text[ korean ] = "¿­(~M)";
+ Text[ turkish ] = "~Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField MF_COLINSERT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 192 , 26 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ SpinSize = 10 ;
+ Minimum = 25 ;
+ Maximum = 999 ;
+ First = 25 ;
+ Last = 2000 ;
+ };
+ GroupBox GB_HANDLING
+ {
+ Pos = MAP_APPFONT ( 6 , 45 ) ;
+ Size = MAP_APPFONT ( 246 , 74 ) ;
+ Text = "Verhalten" ;
+ Text [ English ] = "Behaviour" ;
+ Text [ english_us ] = "Behavior" ;
+ Text [ portuguese_brazilian ] = "Verhalten" ;
+ Text [ swedish ] = "Effekt" ;
+ Text [ danish ] = "Effekt" ;
+ Text [ italian ] = "Effetto" ;
+ Text [ spanish ] = "Comportamiento" ;
+ Text [ french ] = "Fonctionnement" ;
+ Text [ dutch ] = "Effect" ;
+ Text [ portuguese ] = "Efeito" ;
+ Text[ chinese_simplified ] = "·½Ê½";
+ Text[ russian ] = "Ñâîéñòâà";
+ Text[ polish ] = "Efekt";
+ Text[ japanese ] = "•ÏX‚Ŷ‚¶‚é‰e‹¿‚ð’²®";
+ Text[ chinese_traditional ] = "¤è¦¡";
+ Text[ arabic ] = "ÇáÊÃËíÑÇÊ";
+ Text[ greek ] = "ÓõìðåñéöïñÜ";
+ Text[ korean ] = "È¿°ú";
+ Text[ turkish ] = "Etki";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_FIX
+ {
+ Pos = MAP_APPFONT ( 12 , 56 ) ;
+ Size = MAP_APPFONT ( 78 , 10 ) ;
+ Text = "~Fix" ;
+ Text [ English ] = "~Fix" ;
+ Text [ english_us ] = "~Fixed" ;
+ Text [ portuguese_brazilian ] = "~Fix" ;
+ Text [ swedish ] = "~Fast" ;
+ Text [ danish ] = "Fast" ;
+ Text [ italian ] = "~Fisso" ;
+ Text [ spanish ] = "Fi~jo" ;
+ Text [ french ] = "~Fixe" ;
+ Text [ dutch ] = "Va~st" ;
+ Text [ portuguese ] = "~Fixo" ;
+ Text[ chinese_simplified ] = "¹Ì¶¨(~F)";
+ Text[ russian ] = "Ôèêñ.";
+ Text[ polish ] = "Sta³y";
+ Text[ japanese ] = "΁Տ(~F)";
+ Text[ chinese_traditional ] = "©T©w(~F)";
+ Text[ arabic ] = "ËÇÈÊ";
+ Text[ greek ] = "ÓôáèåñÜ";
+ Text[ korean ] = "°íÁ¤µÊ(~F)";
+ Text[ turkish ] = "Sab~it";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_FIX
+ {
+ Pos = MAP_APPFONT ( 93 , 56 ) ;
+ Size = MAP_APPFONT ( 155 , 19 ) ;
+ Text = "Veränderungen einer Zeile bzw. Spalte wirken sich nur auf den direkten Nachbarn aus" ;
+ Text [ English ] = "Changes of a row and column respectively will affect the direct neighbor only" ;
+ WordBreak = TRUE ;
+ Text [ english_us ] = "Changes to a row or column affect the adjacent area only" ;
+ Text [ portuguese_brazilian ] = "Veränderungen einer Zeile bzw. Spalte wirken sich nur auf den direkten Nachbarn aus" ;
+ Text [ swedish ] = "Ändringar i en rad resp. kolumn påverkar endast den omedelbara omgivningen" ;
+ Text [ danish ] = "Række- eller kolonneændringer påvirker kun den direkte nabo" ;
+ Text [ italian ] = "Le modifiche di una riga si ripercuotono solo sulle aree adiacenti" ;
+ Text [ spanish ] = "Las modificaciones en una fila o columna afectan solo a la fila o columna contigua" ;
+ Text [ french ] = "Modifications de ligne/colonne n'affecteront que la plage adjacente" ;
+ Text [ dutch ] = "Veranderingen in een rij of kolom beïnvloeden alleen de aangrenzende rij-/kolom" ;
+ Text [ portuguese ] = "As modificações numa linha ou coluna afectam apenas a área adjacente" ;
+ Text[ chinese_simplified ] = "ÐÐÁеĸü¸ÄÖ»»áÓ°Ïìµ½Ö±½ÓÁ¬½ÓµÄÇøÓò¡£";
+ Text[ russian ] = "Èçìåíåíèÿ ñòðîêè èëè êîëîíêè ïîâëèÿþò òîëüêî íà íåïîñðåäñòâåííûõ ñîñåäåé";
+ Text[ polish ] = "Zmiany wiersza lub kolumny wywieraj¹ wp³yw tylko na obszary przyleg³e";
+ Text[ japanese ] = "s‚ ‚é‚¢‚Í—ñ‚Ì•ÏX‚ͤ’¼Ú—×Ú‚µ‚Ä‚¢‚é”͈͂ɂ̂Ýì—p";
+ Text[ chinese_traditional ] = "Äæ¦CªºÅܧó¶È·|¼vÅT¨ìª½±µ³sµ²ªº°Ï°ì¡C";
+ Text[ arabic ] = "ÊÄËÑ ÇáÊÛííÑÇÊ ÇáÍÇÏËÉ Ýí ÕÝ Ãæ ÚãæÏ Úáì ÇáãäØÞÉ ÇáãÌÇæÑÉ ÝÞØ";
+ Text[ greek ] = "ÁëëáãÝò ìéáò óôÞëçò Þ ãñáììÞò åðéñåÜæïõí ìüíï ôçí Üìåóá ãåéôïíéêÞ ðåñéï÷Þ";
+ Text[ korean ] = "¿­ ¶Ç´Â ÇàÀÇ º¯°æÀº ÀÎÁ¢ÇÑ ¿µ¿ª¿¡¸¸ ¿µÇâÀ» ÁÝ´Ï´Ù.";
+ Text[ turkish ] = "Satýr ya da sütunlar üzerinde yapýlan deðiþiklikler yalnýzca bitiþik birimleri etkiler";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_FIXPROP
+ {
+ Pos = MAP_APPFONT ( 12 , 77 ) ;
+ Size = MAP_APPFONT ( 78 , 10 ) ;
+ Text = "F~ix, proportional" ;
+ Text [ English ] = "F~ix, proportional" ;
+ Text [ english_us ] = "Fi~xed, proportional" ;
+ Text [ portuguese_brazilian ] = "F~ix, proportional" ;
+ Text [ swedish ] = "Fast, ~proportionell" ;
+ Text [ danish ] = "Fast, proportional" ;
+ Text [ italian ] = "F~isso, proporzionale" ;
+ Text [ spanish ] = "Fijo, ~proporcional" ;
+ Text [ french ] = "F~ixe, proportionnel" ;
+ Text [ dutch ] = "V~ast, proportioneel" ;
+ Text [ portuguese ] = "F~ixo, proporcional" ;
+ Text[ chinese_simplified ] = "¹Ì¶¨³É±ÈÀý(~X)";
+ Text[ russian ] = "Ôèêñ., ïðîïîðöèîíàëüí.";
+ Text[ polish ] = "Sta³y, p~roporcjonalny";
+ Text[ japanese ] = "΁ՏAӊч(~X)";
+ Text[ chinese_traditional ] = "©T©w¦¨¤ñ¨Ò(~X)";
+ Text[ arabic ] = "ËÇÈÊ¡ ãÊäÇÓÈ";
+ Text[ greek ] = "ÓôáèåñÜ, áíáëïã~éêÜ";
+ Text[ korean ] = "°íÁ¤µÊ,ºñ·Ê(~X)";
+ Text[ turkish ] = "Sabi~t orantýlý";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_FIXPROP
+ {
+ Pos = MAP_APPFONT ( 93 , 77 ) ;
+ Size = MAP_APPFONT ( 155 , 19 ) ;
+ Text = "Veränderungen einer Zeile bzw. Spalte wirken sich auf die gesamte Tabelle aus" ;
+ Text [ English ] = "Changes of a row and column respectively will affect the whole table" ;
+ WordBreak = TRUE ;
+ Text [ english_us ] = "Changes to a row or column may affect the entire table" ;
+ Text [ portuguese_brazilian ] = "Veränderungen einer Zeile bzw. Spalte wirken sich auf die gesamte Tabelle aus" ;
+ Text [ swedish ] = "Ändringar i en rad resp. kolumn påverkar hela tabellen" ;
+ Text [ danish ] = "Række- eller kolonneændringer påvirker hele tabellen" ;
+ Text [ italian ] = "Le modifiche di una riga o colonna si ripercuotono sull'intera tabella" ;
+ Text [ spanish ] = "Las modificaciones en una fila o columna afectan a toda la tabla" ;
+ Text [ french ] = "Modifications de ligne/colonne affecteront la totalité du tableau " ;
+ Text [ dutch ] = "Veranderingen in een rij of kolom beïnvloeden de hele tabel" ;
+ Text [ portuguese ] = "As modificações numa linha ou coluna podem afectar a tabela inteira" ;
+ Text[ chinese_simplified ] = "ÐÐÁеĸü¸Ä»áÓ°Ïìµ½Õû¸ö±í¸ñ¡£";
+ Text[ russian ] = "Èçìåíåíèÿ ñòðîêè èëè êîëîíêè ïîâëèÿþò íà âñþ òàáëèöó";
+ Text[ polish ] = "Zmiany wiersza lub kolumny wywieraj¹ wp³yw na ca³¹ tabelê";
+ Text[ japanese ] = "s‚ ‚é‚¢‚Í—ñ‚Ì•ÏX‚ͤ•\\‘S‘Ì‚Éì—p";
+ Text[ chinese_traditional ] = "Äæ¦CªºÅܧó·|¼vÅT¨ì¾ã­Óªí®æ¡C";
+ Text[ arabic ] = "ÊÄËÑ ÇáÊÛííÑÇÊ ÇáÍÇÏËÉ Ýí ÕÝ Ãæ ÚãæÏ Úáì ÇáÌÏæá ÈÃËÑå";
+ Text[ greek ] = "ÁëëáãÝò ìéáò ãñáììÞò Þ óôÞëçò åðéñåÜæïõí ïëüêëçñï ôïí ðßíáêá";
+ Text[ korean ] = "¿­ ¶Ç´Â ÇàÀÇ º¯°æÀº Àüü Ç¥¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.";
+ Text[ turkish ] = "Satýr ya da sütunlar üzerinde yapýlan deðiþiklikler tablonun tümünü etkiler";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_VAR
+ {
+ Pos = MAP_APPFONT ( 12 , 98 ) ;
+ Size = MAP_APPFONT ( 78 , 10 ) ;
+ Text = "~Variabel" ;
+ Text [ English ] = "~Variable" ;
+ Text [ english_us ] = "~Variable" ;
+ Text [ portuguese_brazilian ] = "~Variabel" ;
+ Text [ swedish ] = "~Variabel" ;
+ Text [ danish ] = "Variabel" ;
+ Text [ italian ] = "~Variabile" ;
+ Text [ spanish ] = "~Variable" ;
+ Text [ french ] = "~Variable" ;
+ Text [ dutch ] = "~Variabel" ;
+ Text [ portuguese ] = "~Variável" ;
+ Text[ chinese_simplified ] = "¿É±ä(~V)";
+ Text[ russian ] = "Èçì.";
+ Text[ polish ] = "Zmie~nny";
+ Text[ japanese ] = "•Ï”(~V)";
+ Text[ chinese_traditional ] = "¥iÅÜ(~V)";
+ Text[ arabic ] = "ãÊÛíÑ";
+ Text[ greek ] = "ÌåôáâëçôÞ";
+ Text[ korean ] = "º¯¼ö(~V)";
+ Text[ turkish ] = "~Deðiþken";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_VAR
+ {
+ Pos = MAP_APPFONT ( 93 , 98 ) ;
+ Size = MAP_APPFONT ( 155 , 16 ) ;
+ Text = "Veränderungen einer Zeile bzw. Spalte wirken sich auf die Tabellengröße aus" ;
+ Text [ English ] = "Changes of a row and column respectively will affect the table size" ;
+ WordBreak = TRUE ;
+ Text [ english_us ] = "Changes to a row or column may affect the table size" ;
+ Text [ portuguese_brazilian ] = "Veränderungen einer Zeile bzw. Spalte wirken sich auf die Tabellengröße aus" ;
+ Text [ swedish ] = "Ändringar i en rad resp. kolumn påverkar tabellstorleken" ;
+ Text [ danish ] = "Række- eller kolonneændringer påvirker tabelstørrelsen" ;
+ Text [ italian ] = "Le modifiche di una riga o colonna si ripercuotono sulle dimensioni della tabella" ;
+ Text [ spanish ] = "Las modificaciones en una fila o columna afectan el tamaño de la tabla" ;
+ Text [ french ] = "Modifications de ligne/colonne affecteront la taille du tableau" ;
+ Text [ dutch ] = "Veranderingen in een rij of kolom beïnvloeden de tabelgrootte" ;
+ Text [ portuguese ] = "As modificações numa linha ou coluna podem afectar o tamanho da tabela" ;
+ Text[ chinese_simplified ] = "Ò»ÐкÍÁеĸü¸Ä»áÓ°Ïì±í¸ñµÄ´óС¡£";
+ Text[ russian ] = "Èçìåíåíèÿ ñòðîêè èëè êîëîíêè ïîâëèÿþò íà ðàçìåð òàáëèöû";
+ Text[ polish ] = "Zmiany wiersza lub kolumny wywieraj¹ wp³yw na rozmiar tabeli";
+ Text[ japanese ] = "s‚ ‚é‚¢‚Í—ñ‚Ì•ÏX‚ͤ•\\‚Ì‘å‚«‚³‚Éì—p";
+ Text[ chinese_traditional ] = "¤@­ÓÄæ¦CªºÅܧó·|¼vÅTªí®æªº¤j¤p¡C";
+ Text[ arabic ] = "ÊÄËÑ ÇáÊÛííÑÇÊ ÇáÍÇÏËÉ Ýí ÕÝ Ãæ ÚãæÏ Úáì ÍÌã ÇáÌÏæá";
+ Text[ greek ] = "ÁëëáãÝò ìéáò ãñáììÞò Þ óôÞëçò åðéñåÜæïõí ôï ìÝãåèïò ôïõ ðßíáêá";
+ Text[ korean ] = "¿­ ¶Ç´Â ÇàÀÇ º¯°æÀº Ç¥ÀÇ Å©±â¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.";
+ Text[ turkish ] = "Satýr ya da sütunlar üzerinde yapýlan deðiþiklikler tablo boyutunu etkiler";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_DESC
+ {
+ Pos = MAP_APPFONT ( 12 , 121 ) ;
+ Size = MAP_APPFONT ( 236 , 10 ) ;
+ Text = "Diese Einstellungen sind bei der Tastaturbedienung wirksam." ;
+ Text [ English ] = "These settings affect the keyboard handling." ;
+ WordBreak = TRUE ;
+ Text [ english_us ] = "These settings affect the keyboard handling." ;
+ Text [ portuguese_brazilian ] = "Diese Einstellungen sind bei der Tastaturbedienung wirksam." ;
+ Text [ swedish ] = "Dessa inställningar gäller för tangentbord." ;
+ Text [ danish ] = "Disse indstillinger udfolder virkning ved tastaturbetjening" ;
+ Text [ italian ] = "Queste impostazioni sono effettive con l'uso della tastiera" ;
+ Text [ spanish ] = "Esta configuración es efectiva al usar el teclado." ;
+ Text [ french ] = "Ces paramètres ne seront appliqués que pour l'utilisation du clavier." ;
+ Text [ dutch ] = "Deze instellingen zijn bij de bediening van de tastatuur werkzaam." ;
+ Text [ portuguese ] = "Estas predefinições podem ser activadas com o teclado." ;
+ Text[ chinese_simplified ] = "Õâ¸öÉ趨¿ÉÓÃÓÚ¼üÅ̲Ù×÷¡£";
+ Text[ russian ] = "Ýòè íàñòðîéêè äåéñòâóþò ïðè îáñëóæèâàíèè êëàâèàòóðû.";
+ Text[ polish ] = "Ustawienia te s¹ uaktywnione podczas korzystania z klawiatury.";
+ Text[ japanese ] = "‚±‚ÌÝ’è‚Í·°ÎÞ°ÄÞ‘€ì‚Éì—p‚µ‚Ü‚·";
+ Text[ chinese_traditional ] = "³o­Ó³]©wÓì¥Î©óÁä½L¾Þ§@¡C";
+ Text[ arabic ] = "ÓÊßæä åÐå ÇáÅÚÏÇÏÇÊ ÓÇÑíÉ ÇáãÝÚæá ÚäÏ ÇÓÊÎÏÇã áæÍÉ ÇáãÝÇÊíÍ.";
+ Text[ greek ] = "ÁõôÝò ïé ñõèìßóåéò åðéñåÜæïõí ôïí ÷åéñéóìü ôïõ ðëçêôñïëïãßïõ.";
+ Text[ korean ] = "ÀÌ·¯ÇÑ ¼³Á¤Àº Å°º¸µå Á¦¾î¿¡¿µÇâÀ» ÁÝ´Ï´Ù .";
+ Text[ turkish ] = "Bu ayarlar klavye kullanýmýný etkiler.";
+ Text[ language_user1 ] = " ";
+ };
+};
+/**************************************************************************/
+/* */
+/* TabPage SourceView */
+/* */
+/**************************************************************************/
+TabPage TP_OPTSRCVIEW
+{
+ HelpID = HID_OPTSRCVIEW ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ GroupBox GB_COLOR
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 80 ) ;
+ Text = "Farbzuordnung Syntax - Highlighting" ;
+ Text [ English ] = "Color assignment syntax highlighting" ;
+ Text [ english_us ] = "Colors for syntax highlighting" ;
+ Text [ portuguese_brazilian ] = "Farbzuordnung Syntax - Highlighting" ;
+ Text [ swedish ] = "Färgtilldelning för syntaxframhävning" ;
+ Text [ danish ] = "Farvetildeling syntaks - fremhævning" ;
+ Text [ italian ] = "Correlazione colori per evidenziazione sintassi" ;
+ Text [ spanish ] = "Colores para sintaxis-destacado" ;
+ Text [ french ] = "Couleurs pour marquage de syntaxe" ;
+ Text [ dutch ] = "Kleuren voor Syntax - Highlighting" ;
+ Text [ portuguese ] = "Cores para destaques de sintaxe" ;
+ Text[ chinese_simplified ] = "ÓòÊÉ«Í»³öÏÔʾÓï·¨²¿·Ö";
+ Text[ russian ] = "Öâåòà äëÿ âûäåëåíèÿ ñèíòàêñèñà";
+ Text[ polish ] = "Kolory dla wyró¿niania sk³adni.";
+ Text[ japanese ] = "\\•¶‹­’²‚ÌF";
+ Text[ chinese_traditional ] = "¥Î±m¦â¬ð¥XÅã¥Ü»yªk³¡¤À";
+ Text[ arabic ] = "ÇáÃáæÇä ÇáãÓÊÎÏãÉ áÊãííÒ ÈäÇÁ ÇáÌãáÉ";
+ Text[ greek ] = "Ïñéóìüò ÷ñùìÜôùí ãéá åðéóÞìáíóç óýíôáîçò";
+ Text[ korean ] = "±¸¹® °­Á¶¸¦ À§ÇÑ »ö»ó";
+ Text[ turkish ] = "Söz dizimi vurgusu için renk düzeni";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_SGML
+ {
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ Size = MAP_APPFONT ( 50 , 8 ) ;
+ Text = "~SGML" ;
+ Text [ English ] = "~SGML" ;
+ Text [ english_us ] = "~SGML" ;
+ Text [ portuguese_brazilian ] = "~SGML" ;
+ Text [ swedish ] = "~SGML" ;
+ Text [ danish ] = "SGML" ;
+ Text [ italian ] = "~SGML" ;
+ Text [ spanish ] = "~SGML" ;
+ Text [ french ] = "~SGML" ;
+ Text [ dutch ] = "~SGML" ;
+ Text [ portuguese ] = "~SGML" ;
+ Text[ chinese_simplified ] = "~SGML";
+ Text[ russian ] = "~SGML";
+ Text[ polish ] = "SGML";
+ Text[ japanese ] = "~SGML";
+ Text[ chinese_traditional ] = "~SGML";
+ Text[ arabic ] = "SGML~";
+ Text[ greek ] = "SGML";
+ Text[ korean ] = "~SGML";
+ Text[ turkish ] = "~SGML";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_SGML
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 188 , 16 ) ;
+ Size = MAP_APPFONT ( 60 , 50 ) ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_COMMENT
+ {
+ Pos = MAP_APPFONT ( 12 , 31 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Kommentar" ;
+ Text [ English ] = "~Comment" ;
+ Text [ portuguese ] = "~Comentário" ;
+ Text [ english_us ] = "~Comment" ;
+ Text [ portuguese_brazilian ] = "~Kommentar" ;
+ Text [ swedish ] = "~Kommentar" ;
+ Text [ danish ] = "Kommentar" ;
+ Text [ italian ] = "~Commento" ;
+ Text [ spanish ] = "~Comentario" ;
+ Text [ french ] = "~Commentaire" ;
+ Text [ dutch ] = "~Commentaar" ;
+ Text[ chinese_simplified ] = "×¢½â(~C)";
+ Text[ russian ] = "Êîììåíòàðèé";
+ Text[ polish ] = "Komentarz";
+ Text[ japanese ] = "ºÒÝÄ(~C)";
+ Text[ chinese_traditional ] = "ª`¸Ñ(~C)";
+ Text[ arabic ] = "ÊÚáíÞ";
+ Text[ greek ] = "Ó÷üëéï";
+ Text[ korean ] = "¸Þ¸ð(~C)";
+ Text[ turkish ] = "Açýklama";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_COMMENT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 188 , 31 ) ;
+ Size = MAP_APPFONT ( 60 , 50 ) ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_KEYWD
+ {
+ Pos = MAP_APPFONT ( 12 , 46 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "Sch~lüsselwort" ;
+ Text [ English ] = "~Keyword" ;
+ Text [ english_us ] = "~Key word" ;
+ Text [ portuguese_brazilian ] = "Sch~lüsselwort" ;
+ Text [ swedish ] = "Nycke~lord" ;
+ Text [ danish ] = "Nøgleord" ;
+ Text [ italian ] = "Parola chiave" ;
+ Text [ spanish ] = "~Palabra clave" ;
+ Text [ french ] = "~Mot-clé" ;
+ Text [ dutch ] = "S~leutelwoord" ;
+ Text [ portuguese ] = "Palavra-~chave" ;
+ Text[ chinese_simplified ] = "¹Ø¼ü×Ö(~K)";
+ Text[ russian ] = "Êëþ÷åâîå ñëîâî";
+ Text[ polish ] = "S³owo kluczowe";
+ Text[ japanese ] = "·°Ü°ÄÞ(~K)";
+ Text[ chinese_traditional ] = "ÃöÁä¦r(~K)";
+ Text[ arabic ] = "ßáãÉ ÃÓÇÓíÉ";
+ Text[ greek ] = "ËÝîç-êëåéäß";
+ Text[ korean ] = "Å° ¿öµå(~K)";
+ Text[ turkish ] = "Anahtar sözcük";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_KEYWD
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT (188 , 46 ) ;
+ Size = MAP_APPFONT ( 60 , 50 ) ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_UNKNOWN
+ {
+ Pos = MAP_APPFONT ( 12 , 61 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Unbekannt" ;
+ Text [ English ] = "~Unknown" ;
+ Text [ english_us ] = "~Unknown" ;
+ Text [ portuguese_brazilian ] = "~Unbekannt" ;
+ Text [ swedish ] = "~Okänd" ;
+ Text [ danish ] = "Ukendt" ;
+ Text [ italian ] = "~Sconosciuto" ;
+ Text [ spanish ] = "~Desconocido" ;
+ Text [ french ] = "~Inconnu" ;
+ Text [ dutch ] = "~Onbekend" ;
+ Text [ portuguese ] = "~Desconhecido" ;
+ Text[ chinese_simplified ] = "²»Ã÷µÄ(~U)";
+ Text[ russian ] = "~Íåèçâåñòíî";
+ Text[ polish ] = "Nieznany";
+ Text[ japanese ] = "•s–¾(~U)";
+ Text[ chinese_traditional ] = "¤£©úªº(~U)";
+ Text[ arabic ] = "ÛíÑ ãÚÑæÝ";
+ Text[ greek ] = "¢ãíùóôï";
+ Text[ korean ] = "¾Ë·ÁÁöÁö ¾ÊÀ½(~U)";
+ Text[ turkish ] = "Bilinmeyen";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_UNKNOWN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 188 , 61 ) ;
+ Size = MAP_APPFONT ( 60 , 50 ) ;
+ DropDown = TRUE ;
+ };
+};
+/**************************************************************************/
+/* */
+/* TabPage ShadowCursor */
+/* */
+/**************************************************************************/
+TabPage TP_OPTSHDWCRSR
+{
+ HelpID = HID_OPTSHDWCRSR ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ GroupBox GB_SHDWCRSFLAG
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 100 ) ;
+ Text = "Direkt-Cursor" ;
+ Text [ ENGLISH ] = "Direct cursor" ;
+ Text [ english_us ] = "Direct Cursor" ;
+ Text [ portuguese_brazilian ] = "Opۼes" ;
+ Text [ swedish ] = "Direktmarkör" ;
+ Text [ danish ] = "Direkt-markør" ;
+ Text [ italian ] = "Cursore diretto" ;
+ Text [ spanish ] = "Cursor directo" ;
+ Text [ french ] = "Curseur direct" ;
+ Text [ dutch ] = "Directcursor" ;
+ Text [ portuguese ] = "Cursor directo" ;
+ Text[ chinese_simplified ] = "Ö±½Ó¶¨Î»¹â±ê";
+ Text[ russian ] = "Ñâîáîäíûé êóðñîð";
+ Text[ polish ] = "Kursor bezpoœredni";
+ Text[ japanese ] = "ÀÞ²Ú¸Ä ¶°¿Ù";
+ Text[ chinese_traditional ] = "ª½±µ©w¦ì¥ú¼Ð";
+ Text[ arabic ] = "ãÄÔÑ ãÈÇÔÑ";
+ Text[ greek ] = "¢ìåóïò äñïìÝáò";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Serbest imleç";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_SHDWCRSONOFF
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Direkt-Cursor" ;
+ Text [ ENGLISH ] = "~Direct cursor" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text [ portuguese ] = "Cursor ~directo" ;
+ Text [ english_us ] = "~Direct cursor" ;
+ Text [ portuguese_brazilian ] = "~Direkt-Cursor" ;
+ Text [ swedish ] = "~Direktmarkör" ;
+ Text [ danish ] = "Direkt-markør" ;
+ Text [ italian ] = "Cursore ~diretto" ;
+ Text [ spanish ] = "~Cursor directo" ;
+ Text [ french ] = "Curseur ~direct" ;
+ Text [ dutch ] = "~Direct-cursor" ;
+ Text[ chinese_simplified ] = "Ö±½Ó¶¨Î»¹â±ê(~D)";
+ Text[ russian ] = "Ñâîáîäíûé êóðñîð";
+ Text[ polish ] = "Kursor bezpoœredni";
+ Text[ japanese ] = "ÀÞ²Ú¸Ä ¶°¿Ù(~D)";
+ Text[ chinese_traditional ] = "ª½±µ©w¦ì¥ú¼Ð(~D)";
+ Text[ arabic ] = "ãÄÔÑ ãÈÇÔÑ";
+ Text[ greek ] = "¢ìåóïò äñïìÝáò";
+ Text[ korean ] = "Á÷Á¢ Ä¿¼­(~D)";
+ Text[ turkish ] = "Serbest imleç";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_SHDWCRSFILLMODE
+ {
+ Pos = MAP_APPFONT ( 12 , 31 ) ;
+ Size = MAP_APPFONT ( 48 , 10 ) ;
+ Text = "Einfügen" ;
+ Text [ English ] = "Insert" ;
+ Left = TRUE ;
+ Text [ english_us ] = "Insert" ;
+ Text [ portuguese_brazilian ] = "Einfügen" ;
+ Text [ swedish ] = "Infoga" ;
+ Text [ danish ] = "Indsæt" ;
+ Text [ italian ] = "Inserisci" ;
+ Text [ spanish ] = "Insertar" ;
+ Text [ french ] = "Insérer" ;
+ Text [ dutch ] = "Invoegen" ;
+ Text [ portuguese ] = "Inserir" ;
+ 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 ] = " ";
+ };
+ RadioButton RB_SHDWCRSFILLMARGIN
+ {
+ Pos = MAP_APPFONT ( 80 , 31 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Absatzausrichtung" ;
+ Text [ ENGLISH ] = "~Adjustment" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text [ english_us ] = "~Paragraph alignment" ;
+ Text [ portuguese_brazilian ] = "~Absatzausrichtung" ;
+ Text [ swedish ] = "St~yckejustering" ;
+ Text [ danish ] = "Afsnitsjustering" ;
+ Text [ italian ] = "~Allineamento paragrafo" ;
+ Text [ spanish ] = "~Alineación de párrafo" ;
+ Text [ french ] = "A~lignement de paragraphe" ;
+ Text [ dutch ] = "~Alinea-uitlijning" ;
+ Text [ portuguese ] = "~Alinhamento de parágrafos" ;
+ Text[ chinese_simplified ] = "¶ÎÂä¶ÔÆë(~P)";
+ Text[ russian ] = "Âûðàâíèâàíèå àáçàöà";
+ Text[ polish ] = "Wyrównanie akapitu";
+ Text[ japanese ] = "’i—Ž‚Ì”z’u(~P)";
+ Text[ chinese_traditional ] = "¬q¸¨¹ï»ô(~P)";
+ Text[ arabic ] = "ãÍÇÐÇÉ ÇáÝÞÑÉ";
+ Text[ greek ] = "Óôïß÷éóç ðáñáãñÜöïõ";
+ Text[ korean ] = "´Ü¶ô ¸ÂÃã(~P)";
+ Text[ turkish ] = "Pa~ragraf hizalama";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_SHDWCRSFILLINDENT
+ {
+ Pos = MAP_APPFONT ( 80 , 44 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "linker Absatz~rand" ;
+ Text [ ENGLISH ] = "Left ~margin" ;
+ Text [ english_us ] = "~Left paragraph margin" ;
+ Text [ portuguese_brazilian ] = "linker Absatz~rand" ;
+ Text [ swedish ] = "Vänster styckema~rginal" ;
+ Text [ danish ] = "Venstre afsnitsmargen" ;
+ Text [ italian ] = "Margine paragrafo ~sinistro" ;
+ Text [ spanish ] = "~Margen izquierdo del párrafo" ;
+ Text [ french ] = "~Marge gauche du paragraphe" ;
+ Text [ dutch ] = "Linker alinea~rand" ;
+ Text [ portuguese ] = "Margem ~esquerda do parágrafo" ;
+ Text[ chinese_simplified ] = "¶ÎÂä×ó¼ä¸ô(~P)";
+ Text[ russian ] = "ëåâûé êðàé àáçàöà";
+ Text[ polish ] = "Lewy margines akapitu";
+ Text[ japanese ] = "’i—Ž¶—]”’(~P)";
+ Text[ chinese_traditional ] = "¬q¸¨¥ª¶¡¹j(~P)";
+ Text[ arabic ] = "åÇãÔ ÇáÝÞÑÉ ÇáÃíÓÑ";
+ Text[ greek ] = "áñéóôåñü ðåñéèþñéï ðáñáãñÜöïõ";
+ Text[ korean ] = "´Ü¶ô ¿ÞÂÊ ¿©¹é(~L)";
+ Text[ turkish ] = "Sol ~paragraf kenarý";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_SHDWCRSFILLTAB
+ {
+ Pos = MAP_APPFONT ( 80 , 57 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Tabulator" ;
+ Text [ ENGLISH ] = "~Tab" ;
+ Text [ english_us ] = "~Tabs" ;
+ Text [ portuguese_brazilian ] = "~Tabulator" ;
+ Text [ swedish ] = "Ta~bulator" ;
+ Text [ danish ] = "Tabulator" ;
+ Text [ italian ] = "Tabulazione" ;
+ Text [ spanish ] = "~Tabulación" ;
+ Text [ french ] = "~Tabulation" ;
+ Text [ dutch ] = "~Tabulator" ;
+ Text [ portuguese ] = "~Tabulações" ;
+ Text[ chinese_simplified ] = "ÖƱí·û(~T)";
+ Text[ russian ] = "Òàáóëÿòîðû";
+ Text[ polish ] = "Tabulator";
+ Text[ japanese ] = "ÀÌÞ(~T)";
+ Text[ chinese_traditional ] = "»sªí²Å(~T)";
+ Text[ arabic ] = "ÚáÇãÉ ÌÏæáÉ";
+ Text[ greek ] = "ÓôçëïèÝôçò";
+ Text[ korean ] = "ÅÇ(~T)";
+ Text[ turkish ] = "~Sekmeler";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_SHDWCRSFILLSPACE
+ {
+ Pos = MAP_APPFONT ( 80 , 70 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "Tabulator und ~Leerzeichen" ;
+ Text [ ENGLISH ] = "Tabs and ~space" ;
+ Text [ english_us ] = "Tabs and ~spaces" ;
+ Text [ portuguese_brazilian ] = "Tabulator und ~Leerzeichen" ;
+ Text [ swedish ] = "Tabulator och b~lanksteg" ;
+ Text [ danish ] = "Tabulator og mellemrum" ;
+ Text [ italian ] = "Tabulazione e ~spazi" ;
+ Text [ spanish ] = "Tabulación y ~espacios" ;
+ Text [ french ] = "Tabulation et ~espaces" ;
+ Text [ dutch ] = "Tabulator en ~spaties" ;
+ Text [ portuguese ] = "Tabulações e ~espaços" ;
+ Text[ chinese_simplified ] = "ÖƱí·ûºÍ¿Õ¸ñ(~S)";
+ Text[ russian ] = "Òàáóëÿòîðû è ïðîáåëû";
+ Text[ polish ] = "Tabulator i ~spacja";
+ Text[ japanese ] = "ÀÌނƽÍß°½(~S)";
+ Text[ chinese_traditional ] = "»sªí²Å©MªÅ®æ(~S)";
+ Text[ arabic ] = "ÚáÇãÇÊ ÌÏæáÉ æÃÍÑÝ ãÓÇÝÉ";
+ Text[ greek ] = "ÓôçëïèÝôåò êáé êåíÜ";
+ Text[ korean ] = "ÅÇ°ú °£°Ý(~S)";
+ Text[ turkish ] = "Sekmeler ve ~boþluklar";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_SHDWCRSCOLOR
+ {
+ Pos = MAP_APPFONT ( 12 , 86 ) ;
+ Size = MAP_APPFONT ( 50 , 8 ) ;
+ Text = "~Farbe" ;
+ Text [ English ] = "~Color" ;
+ Text [ english_us ] = "~Color" ;
+ Text [ portuguese_brazilian ] = "~Farbe" ;
+ Text [ swedish ] = "~Färg" ;
+ Text [ danish ] = "Farve" ;
+ Text [ italian ] = "~Colore" ;
+ Text [ spanish ] = "~Color" ;
+ Text [ french ] = "~Couleur" ;
+ Text [ dutch ] = "~Kleur" ;
+ Text [ portuguese ] = "~Cor" ;
+ 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_SHDWCRSCOLOR
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 80 , 86 ) ;
+ Size = MAP_APPFONT ( 60 , 50 ) ;
+ DropDown = TRUE ;
+ };
+ GroupBox GB_CRSR_OPT
+ {
+ Pos = MAP_APPFONT ( 6 , 106 ) ;
+ Size = MAP_APPFONT ( 248 , 25 ) ;
+ Text = "Optionen" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ NORWEGIAN ] = "Options" ;
+ Text [ DANISH ] = "Indstillinger" ;
+ Text [ ENGLISH_US ] = "Options" ;
+ Text [ SPANISH ] = "Opciones" ;
+ Text [ FINNISH ] = "Määritykset" ;
+ Text [ FRENCH ] = "Options" ;
+ Text [ ITALIAN ] = "Opzioni" ;
+ Text [ DUTCH ] = "Opties" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Opۼes" ;
+ Text [ SWEDISH ] = "Alternativ" ;
+ 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 CB_ALLOW_IN_PROT
+ {
+ Pos = MAP_APPFONT ( 12 , 118 ) ;
+ Size = MAP_APPFONT ( 220 , 10 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+
+ Text = "~Cursor in geschützten Zonen zulassen" ;
+ Text [ ENGLISH ] = "~Allow cursor in protected areas" ;
+ Text[ english_us ] = "~Allow cursor in protected areas";
+ Text[ portuguese ] = "~Permitir cursor em zonas protegidas";
+ Text[ russian ] = "Äîïóñê êóðñîðà â çàùèùåííûõ çîíàõ";
+ Text[ dutch ] = "~Cursor in beveiligde zones toelaten";
+ Text[ french ] = "~Autoriser l'utilisation du curseur dans les zones protégées";
+ Text[ spanish ] = "~Permitir cursor en zonas protegidas";
+ Text[ italian ] = "Permetti cursore in aree protette";
+ Text[ danish ] = "Tillad markør i beskyttede områder";
+ Text[ swedish ] = "Tillåt ~markören i skyddade områden";
+ Text[ polish ] = "DopuϾ kursor w chronionych obszarach";
+ Text[ portuguese_brazilian ] = "~Allow cursor in protected areas";
+ Text[ japanese ] = "¶°¿Ù‚Ì•ÛŒì—̈æ‚Ö‚Ìi“ü‹–‰Â(~A)";
+ Text[ chinese_simplified ] = "ÔÊÐí¹â±ê¶¨Î»ÔÚ±£»¤ÇøÓò(~A)";
+ Text[ chinese_traditional ] = "¤¹³\\¥ú¼Ð©w¦ì¦b«OÅ@°Ï°ì(~A)";
+ Text[ arabic ] = "ÇáÓãÇÍ ÈÇÓÊÎÏÇã ÇáãÄÔÑ Ýí ãäÇØÞ ãÍãíÉ";
+ Text[ greek ] = "Äõíáôüôçôá åéóáãùãÞò ôïõ äåßêôç óå ðñïóôáôåõüìåíåò ðåñéï÷Ýò";
+ Text[ korean ] = "º¸È£µÈ ¿µ¿ª¿¡ Ä¿¼­ Çã¿ë(~A)";
+ Text[ turkish ] = "Ýmlecin korumalý bölümlere girmesine izin ver";
+ Text[ language_user1 ] = " ";
+ };
+
+};
+/**************************************************************************/
+/* */
+/* */
+/* */
+/**************************************************************************/
diff --git a/sw/source/ui/config/optload.cxx b/sw/source/ui/config/optload.cxx
new file mode 100644
index 000000000000..5b5ef335648f
--- /dev/null
+++ b/sw/source/ui/config/optload.cxx
@@ -0,0 +1,311 @@
+/*************************************************************************
+ *
+ * $RCSfile: optload.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SHL_HXX
+#include <tools/shl.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX //autogen
+#include <swtypes.hxx>
+#endif
+
+#ifndef _UIITEMS_HXX //autogen
+#include <uiitems.hxx>
+#endif
+
+#include "swmodule.hxx"
+#include "modcfg.hxx"
+#include "wrtsh.hxx"
+
+#include "globals.hrc"
+#include "cmdid.h"
+
+#include "optload.hrc"
+#include "optload.hxx"
+
+#ifndef _FLDUPDE_HXX
+#include <fldupde.hxx>
+#endif
+
+/* -----------------22.10.98 15:12-------------------
+ *
+ * --------------------------------------------------*/
+
+SwLoadOptPage::SwLoadOptPage( Window* pParent, const SfxItemSet& rSet ) :
+ SfxTabPage(pParent, SW_RES(TP_OPTLOAD_PAGE), rSet),
+ aAlwaysRB (this, ResId(RB_ALWAYS )),
+ aRequestRB (this, ResId(RB_REQUEST )),
+ aNeverRB (this, ResId(RB_NEVER )),
+ aLinkDocOnlyCB (this, ResId(CB_LINK_DOCONLY )),
+ aLinkGB (this, ResId(GB_LINK )),
+ aAutoUpdateFields(this, ResId(CB_AUTO_UPDATE_FIELDS )),
+ aAutoUpdateCharts(this, ResId(CB_AUTO_UPDATE_CHARTS )),
+ aFldDocOnlyCB (this, ResId(CB_FLD_DOCONLY )),
+ aFldGB (this, ResId(GB_FIELD )),
+ aMergeDistCB(this, ResId(CB_MERGE_PARA_DIST )),
+ aMergeDistPageStartCB(this, ResId(CB_MERGE_PARA_DIST_PAGESTART )),
+ aCompatGB (this, ResId(GB_COMPAT )),
+
+ pWrtShell (0),
+ nOldLinkMode(MANUAL)
+{
+ FreeResource();
+
+ aAutoUpdateFields.SetClickHdl(LINK(this, SwLoadOptPage, UpdateHdl));
+}
+
+/*-----------------18.01.97 12.43-------------------
+
+--------------------------------------------------*/
+
+SwLoadOptPage::~SwLoadOptPage()
+{
+}
+/* -----------------09.02.99 12:10-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwLoadOptPage, UpdateHdl, CheckBox*, pBox )
+{
+ aAutoUpdateCharts.Enable(pBox->IsChecked());
+ return 0;
+}
+
+/*-----------------18.01.97 12.43-------------------
+
+--------------------------------------------------*/
+
+SfxTabPage* __EXPORT SwLoadOptPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return new SwLoadOptPage(pParent, rAttrSet );
+}
+
+/*-----------------18.01.97 12.42-------------------
+
+--------------------------------------------------*/
+
+BOOL __EXPORT SwLoadOptPage::FillItemSet( SfxItemSet& rSet )
+{
+ BOOL bRet = FALSE;
+ SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+ BOOL bFldDocOnly = aFldDocOnlyCB.IsChecked();
+ BOOL bLinkDocOnly = aLinkDocOnlyCB.IsChecked();
+
+ USHORT nNewLinkMode;
+ if (aNeverRB.IsChecked())
+ nNewLinkMode = NEVER;
+ else if (aRequestRB.IsChecked())
+ nNewLinkMode = MANUAL;
+ else if (aAlwaysRB.IsChecked())
+ nNewLinkMode = AUTOMATIC;
+
+ USHORT nFldFlags = aAutoUpdateFields.IsChecked() ?
+ aAutoUpdateCharts.IsChecked() ? AUTOUPD_FIELD_AND_CHARTS : AUTOUPD_FIELD_ONLY : AUTOUPD_OFF;
+
+ if(aAutoUpdateFields.IsChecked() != aAutoUpdateFields.GetSavedValue() ||
+ aAutoUpdateCharts.IsChecked() != aAutoUpdateCharts.GetSavedValue())
+ {
+ if (!bFldDocOnly || !pWrtShell)
+ pModOpt->SetFldUpdateFlags(nFldFlags);
+ if(pWrtShell)
+ {
+ USHORT nSet = bFldDocOnly ? nFldFlags : AUTOUPD_GLOBALSETTING;
+ pWrtShell->SetFldUpdateFlags(nSet);
+ pWrtShell->SetModified();
+ }
+ }
+
+ if (nNewLinkMode != nOldLinkMode)
+ {
+ if (!bLinkDocOnly || !pWrtShell)
+ pModOpt->SetLinkMode(nNewLinkMode);
+
+ if (pWrtShell)
+ {
+ USHORT nSet = bLinkDocOnly ? nNewLinkMode : (USHORT)GLOBALSETTING;
+ pWrtShell->SetLinkUpdMode( nSet );
+ pWrtShell->SetModified();
+ }
+
+ bRet = TRUE;
+ }
+ if (pWrtShell)
+ {
+ if(aMergeDistCB.IsChecked() != aMergeDistCB.GetSavedValue() ||
+ aMergeDistPageStartCB.IsChecked() != aMergeDistPageStartCB.GetSavedValue())
+ {
+ pWrtShell->SetParaSpaceMax(aMergeDistCB.IsChecked(),
+ aMergeDistPageStartCB.IsChecked());
+ }
+
+ }
+ return bRet;
+}
+/*-----------------18.01.97 12.42-------------------
+
+--------------------------------------------------*/
+
+void __EXPORT SwLoadOptPage::Reset( const SfxItemSet& rSet)
+{
+ const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+ const SfxPoolItem* pItem;
+
+ if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_WRTSHELL, FALSE, &pItem))
+ pWrtShell = (SwWrtShell*)((const SwPtrItem*)pItem)->GetValue();
+
+ USHORT nFldFlags = AUTOUPD_GLOBALSETTING;
+ nOldLinkMode = GLOBALSETTING;
+ BOOL bFldDocOnly = TRUE;
+ BOOL bLinkDocOnly = TRUE;
+ if (pWrtShell)
+ {
+ nFldFlags = pWrtShell->GetFldUpdateFlags(TRUE);
+ nOldLinkMode = pWrtShell->GetLinkUpdMode(TRUE);
+ aMergeDistCB.Check(pWrtShell->IsParaSpaceMax());
+ aMergeDistPageStartCB.Check(pWrtShell->IsParaSpaceMaxAtPages());
+
+ aMergeDistCB.SaveValue();
+ aMergeDistPageStartCB.SaveValue();
+ }
+ if(nOldLinkMode == GLOBALSETTING)
+ {
+ nOldLinkMode = pModOpt->GetLinkMode();
+ bLinkDocOnly = FALSE;
+ }
+ if(nFldFlags == AUTOUPD_GLOBALSETTING)
+ {
+ nFldFlags = pModOpt->GetFldUpdateFlags();
+ bFldDocOnly = FALSE;
+ }
+
+ aAutoUpdateFields.Check(nFldFlags != AUTOUPD_OFF);
+ aAutoUpdateCharts.Check(nFldFlags == AUTOUPD_FIELD_AND_CHARTS);
+ aAutoUpdateCharts.Enable(nFldFlags != AUTOUPD_OFF);
+
+ aLinkDocOnlyCB.Enable(pWrtShell != 0);
+ aLinkDocOnlyCB.Check(bLinkDocOnly);
+ aFldDocOnlyCB.Enable(pWrtShell != 0);
+ aFldDocOnlyCB.Check(bFldDocOnly);
+ aMergeDistCB.Enable(pWrtShell != 0);
+ aMergeDistPageStartCB.Enable(pWrtShell != 0);
+ aCompatGB.Enable(pWrtShell != 0);
+
+ switch (nOldLinkMode)
+ {
+ case NEVER: aNeverRB.Check(); break;
+ case MANUAL: aRequestRB.Check(); break;
+ case AUTOMATIC: aAlwaysRB.Check(); break;
+ }
+
+ aAutoUpdateFields.SaveValue();
+ aAutoUpdateCharts.SaveValue();
+}
+
+/*--------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.12 2000/09/18 16:05:17 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.11 1999/10/01 06:04:24 os
+ enable new compatibility button
+
+ Revision 1.10 1999/09/30 09:59:56 os
+ new compatibility option
+
+ Revision 1.9 1999/09/30 09:45:35 os
+ new compatibility option
+
+ Revision 1.8 1999/03/15 15:22:58 OS
+ #63171# Fieldpdate und LinkMode in getrennten Gruppen
+
+
+ Rev 1.7 15 Mar 1999 16:22:58 OS
+ #63171# Fieldpdate und LinkMode in getrennten Gruppen
+
+ Rev 1.6 11 Mar 1999 23:56:38 JP
+ Task #63171#: Optionen fuer Feld-/LinkUpdate Doc oder Modul lokal
+
+ Rev 1.5 09 Feb 1999 15:19:10 OS
+ #61404# Optionen fuer Felder/Charts aktualisieren
+
+ Rev 1.4 07 Jan 1999 15:04:24 OS
+ #60625# Absatzabstaende addieren
+
+ Rev 1.3 03 Dec 1998 11:24:54 OM
+ #58216# Verknuepfungsoptionen nur fuer aktuelles Dok
+
+ Rev 1.2 30 Nov 1998 17:30:12 OM
+ #59770# Tabellenoptionen: Ueberschrift nur auf erster Seite
+
+ Rev 1.1 23 Nov 1998 16:13:42 OM
+ #58216# Verknuepfungsoptionen pro Dokument
+
+ Rev 1.0 20 Nov 1998 17:03:42 OM
+ Initial revision.
+
+ --------------------------------------------------------------------*/
diff --git a/sw/source/ui/config/optload.hrc b/sw/source/ui/config/optload.hrc
new file mode 100644
index 000000000000..93a62aa0d8b0
--- /dev/null
+++ b/sw/source/ui/config/optload.hrc
@@ -0,0 +1,75 @@
+/*************************************************************************
+ *
+ * $RCSfile: optload.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 GB_LINK 1
+#define RB_ALWAYS 2
+#define RB_REQUEST 3
+#define RB_NEVER 4
+#define CB_FLD_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
+#define CB_LINK_DOCONLY 11
+#define GB_FIELD 13
+#define CB_MERGE_PARA_DIST_PAGESTART 14
+
diff --git a/sw/source/ui/config/optload.src b/sw/source/ui/config/optload.src
new file mode 100644
index 000000000000..0d1cd4e41be0
--- /dev/null
+++ b/sw/source/ui/config/optload.src
@@ -0,0 +1,413 @@
+/*************************************************************************
+ *
+ * $RCSfile: optload.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "globals.hrc"
+#include "optload.hrc"
+#include "helpid.h"
+
+/**************************************************************************/
+/* */
+/**************************************************************************/
+
+TabPage TP_OPTLOAD_PAGE
+{
+ HelpID = HID_OPTLOAD_PAGE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+/* FixedText FT_UPDATE_LINKS
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 150 , 10 ) ;
+ Text = "Verknüpfungen beim Laden aktualisieren" ;
+ Text [ English ] = "Update links while loading" ;
+ Text[ italian ] = "Aggiorna collegamenti durante il caricamento";
+ Text[ portuguese_brazilian ] = "Refresh links";
+ Text[ portuguese ] = "Actualizar ligações ao carregar";
+ Text[ danish ] = "Refresh links";
+ Text[ french ] = "Actualiser les liens lors du chargement";
+ Text[ swedish ] = "Uppdatera länkar vid laddning";
+ Text[ dutch ] = "Verbindingen bij het laden actualiseren";
+ Text[ spanish ] = "Actualizar vínculos al cargar";
+ Text[ english_us ] = "Update links";
+ Text[ chinese_simplified ] = "ÔÚ×°ÔØʱ¸üÐÂÁ´½Ó";
+ Text[ russian ] = "Îáíîâèòü ñâÿçè";
+ Text[ polish ] = "Aktualizuj ³¹cza";
+ Text[ japanese ] = "Verknüpfungen aktualisieren";
+ };*/
+ GroupBox GB_LINK
+ {
+ Pos = MAP_APPFONT ( 6 , 2 ) ;
+ Size = MAP_APPFONT ( 248 , 37 ) ;
+ Text = "Verknüpfungen aktualisieren" ;
+ Text [ English ] = "Update links" ;
+ Text[ english_us ] = "Update links";
+ Text[ portuguese ] = "Actualizar ligações";
+ Text[ russian ] = "Îáíîâèòü ññûëêè";
+ Text[ dutch ] = "Verbindingen actualiseren";
+ Text[ french ] = "Actualiser les liens";
+ Text[ spanish ] = "Actualizar vínculos";
+ Text[ italian ] = "Aggiorna collegamenti";
+ Text[ danish ] = "Opdater kæder";
+ Text[ swedish ] = "Uppdatera länkar";
+ Text[ polish ] = "Aktualizuj ³¹cza";
+ Text[ portuguese_brazilian ] = "Refresh links";
+ Text[ japanese ] = "Øݸ‚ÌXV";
+ Text[ chinese_simplified ] = "¸üÐÂÁ´½Ó";
+ Text[ chinese_traditional ] = "§ó·s±¶®|";
+ Text[ arabic ] = "ÊÍÏíË ÇáÇÑÊÈÇØÇÊ";
+ Text[ greek ] = "ÅíçìÝñùóç óõíäÝóåùí";
+ Text[ korean ] = "¿¬°á ¾÷ µ¥ÀÌÆ®";
+ Text[ turkish ] = "Baðlantýlarý güncelle";
+ Text[ language_user1 ] = " ";
+};
+ RadioButton RB_ALWAYS
+ {
+ Pos = MAP_APPFONT ( 12 , 13 ) ;
+ Size = MAP_APPFONT ( 75 , 10 ) ;
+ Text = "~Immer" ;
+ Text [ ENGLISH ] = "~Always" ;
+ TabStop = TRUE ;
+ Text[ italian ] = "Sempre";
+ Text[ portuguese_brazilian ] = "~Always";
+ Text[ portuguese ] = "~Sempre";
+ Text[ danish ] = "Altid";
+ Text[ french ] = "Toujours";
+ Text[ swedish ] = "~Alltid";
+ Text[ dutch ] = "~Altijd";
+ Text[ spanish ] = "~Siempre";
+ Text[ english_us ] = "Always";
+ Text[ chinese_simplified ] = "×ÜÊÇ";
+ Text[ russian ] = "Âñåãäà";
+ Text[ polish ] = "Zawsze";
+ Text[ japanese ] = "í‚É";
+ Text[ chinese_traditional ] = "Á`¬O";
+ Text[ arabic ] = "ÏÇÆãÇð";
+ Text[ greek ] = "ÐÜíôá";
+ Text[ korean ] = "Ç×»ó";
+ Text[ turkish ] = "Her zaman";
+ Text[ language_user1 ] = " ";
+};
+ RadioButton RB_REQUEST
+ {
+ Pos = MAP_APPFONT ( 90 , 13 ) ;
+ Size = MAP_APPFONT ( 75 , 10 ) ;
+ Text = "Auf Nach~frage" ;
+ Text [ ENGLISH ] = "On request" ;
+ TabStop = TRUE ;
+ Text[ italian ] = "Su richiesta";
+ Text[ portuguese_brazilian ] = "On request";
+ Text[ portuguese ] = "A ~pedido";
+ Text[ danish ] = "På anmodning";
+ Text[ french ] = "Sur demande";
+ Text[ swedish ] = "På ~begäran";
+ Text[ dutch ] = "Op aan~vraag";
+ Text[ spanish ] = "A ~petición";
+ Text[ english_us ] = "On request";
+ Text[ chinese_simplified ] = "ÔÚÇëÇóʱ";
+ Text[ russian ] = "Ïî òðåáîâàíèþ";
+ Text[ polish ] = "Gdy jest wymagane";
+ Text[ japanese ] = "•K—v‚ɉž‚¶‚Ä";
+ Text[ chinese_traditional ] = "¦b½Ð¨D®É";
+ Text[ arabic ] = "ÈÚÏ ÇáÇÓÊÝÓÇÑ";
+ Text[ greek ] = "Óå æÞôçóç";
+ Text[ korean ] = "¿äû";
+ Text[ turkish ] = "Ýstek üzerine";
+ Text[ language_user1 ] = " ";
+};
+ RadioButton RB_NEVER
+ {
+ Pos = MAP_APPFONT ( 168 , 13 ) ;
+ Size = MAP_APPFONT ( 75 , 10 ) ;
+ Text = "~Nie" ;
+ Text [ ENGLISH ] = "Never" ;
+ TabStop = TRUE ;
+ Text[ italian ] = "Mai";
+ Text[ portuguese_brazilian ] = "Never";
+ Text[ portuguese ] = "~Nunca";
+ Text[ danish ] = "Aldrig";
+ Text[ french ] = "Jamais";
+ Text[ swedish ] = "Al~drig";
+ Text[ dutch ] = "~Nooit";
+ Text[ spanish ] = "~Nunca";
+ Text[ english_us ] = "Never";
+ Text[ chinese_simplified ] = "ÓÀÔ¶²»";
+ Text[ russian ] = "Íèêîãäà";
+ Text[ polish ] = "Nigdy";
+ Text[ japanese ] = "•s•K—v";
+ Text[ chinese_traditional ] = "¥Ã»·¤£";
+ Text[ arabic ] = "ÈÊÇÊÇð";
+ Text[ greek ] = "ÐïôÝ";
+ Text[ korean ] = "ÀüÇô";
+ Text[ turkish ] = "Hiçbir zaman";
+ Text[ language_user1 ] = " ";
+};
+ CheckBox CB_LINK_DOCONLY
+ {
+ Pos = MAP_APPFONT ( 12 , 25) ;
+ Size = MAP_APPFONT ( 220 , 10 ) ;
+ Text = "Nur für das aktuelle ~Dokument" ;
+ Text [ English ] = "Actual document only" ;
+ Text [ dutch ] = "~Alleen in het actuele document" ;
+ Text [ english_us ] = "Current document only" ;
+ Text [ italian ] = "Solo per il documento corrente" ;
+ Text [ spanish ] = "Solo para el documento ~actual" ;
+ Text [ french ] = "Uniquement pour le document actif" ;
+ Text [ swedish ] = "~Endast för det aktuella dokumentet" ;
+ Text [ danish ] = "Kun for det aktuelle dokument" ;
+ Text [ portuguese ] = "~Apenas para documento activo" ;
+ Text[ portuguese_brazilian ] = "~Nur für das aktuelle Dokument";
+ Text[ chinese_simplified ] = "Ö»ÓÃÓÚµ±Ç°µÄÎĵµ";
+ Text[ russian ] = "Òîëüêî äëÿ òåêóùåãî äîêóìåíòà";
+ Text[ polish ] = "Tylko dla aktualnego dokumentu";
+ Text[ japanese ] = "Œ»Ý‚ÌÄÞ·­ÒÝÄ‚¾‚¯";
+ Text[ chinese_traditional ] = "¥u¥Î©ó·í«eªº¤å¥ó";
+ Text[ arabic ] = "ÇáãÓÊäÏ ÇáÍÇáí ÝÞØ";
+ Text[ greek ] = "Ìüíï ãéá ôï ðáñüí Ýããñáöï";
+ Text[ korean ] = "ÇöÀç ¹®¼­ ¸¸";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Yalnýzca açýk belgede";
+};
+ GroupBox GB_FIELD
+ {
+ Pos = MAP_APPFONT ( 6 , 42 ) ;
+ Size = MAP_APPFONT ( 248 , 53 ) ;
+ Text = "Felder und Diagramme" ;
+ Text [ English ] = "Update" ;
+ Text[ english_us ] = "Fields and charts";
+ Text[ portuguese ] = "Campos e gráficos";
+ Text[ russian ] = "Ïîëÿ è äèàãðàììû";
+ Text[ dutch ] = "Velden en diagrammen";
+ Text[ french ] = "Champs et diagrammes";
+ Text[ spanish ] = "Campos y diagramas";
+ Text[ italian ] = "Campi e diagrammi";
+ Text[ danish ] = "Felter og diagrammer";
+ Text[ swedish ] = "Fält och diagram";
+ Text[ polish ] = "Pola i diagramy";
+ Text[ portuguese_brazilian ] = "Refresh links";
+ Text[ japanese ] = "̨°ÙÄނƸÞ×Ì";
+ Text[ chinese_simplified ] = "×ֶκÍͼ±í";
+ Text[ chinese_traditional ] = "Äæ¦ì©M¹Ïªí";
+ Text[ arabic ] = "ÍÞæá æÑÓæã ÈíÇäíÉ";
+ Text[ greek ] = "Ðåäßá êáé äéáãñÜììáôá";
+ Text[ korean ] = "Çʵå¿Í Â÷Æ®";
+ Text[ turkish ] = "Alan ve þemalar";
+ Text[ language_user1 ] = " ";
+};
+ CheckBox CB_AUTO_UPDATE_FIELDS
+ {
+ Pos = MAP_APPFONT ( 12 , 55) ;
+ Size = MAP_APPFONT ( 213 , 10 ) ;
+ Text = "F~eldbefehle automatisch aktualisieren" ;
+ Text [ English ] = "Update fields automatically" ;
+ Text[ english_us ] = "Update ~fields automatically";
+ Text[ portuguese ] = "Actualizar ~campos automaticamente";
+ Text[ russian ] = "Îáíîâëÿòü àâòîìàòè÷åñêè ïîëÿ";
+ Text[ dutch ] = "V~eldopdrachten automatisch actualiseren";
+ Text[ french ] = "Actualiser automatiquement les ~instructions de champ";
+ Text[ spanish ] = "Actualizar ~campos automáticamente";
+ Text[ italian ] = "Aggiorna i comandi di campo automaticamente";
+ Text[ danish ] = "Opdater felter automatisk";
+ Text[ swedish ] = "Uppdatera ~fältkommandon automatiskt";
+ Text[ polish ] = "Aktualizuj pola automatycznie";
+ Text[ portuguese_brazilian ] = "Update fields automatically";
+ Text[ japanese ] = "̨°ÙÄÞ‚ðŽ©“®“I‚ÉXV(~F)";
+ Text[ chinese_simplified ] = "×Ô¶¯¸üÐÂ×Ö¶ÎÃüÁî(~F)";
+ Text[ chinese_traditional ] = "¦Û°Ê§ó·sÄæ¦ì©R¥O(~F)";
+ Text[ arabic ] = "ÊÍÏíË ÇáÍÞæá ÊáÞÇÆíÇð";
+ Text[ greek ] = "Áõôüìáôç åíçìÝñùóç åíôïëþí ðåäßùí";
+ Text[ korean ] = "Çʵå ÀÚµ¿ ¾÷ µ¥ÀÌÆ®(~F)";
+ Text[ turkish ] = "Alan öðelerini otomatik olarak güncelle";
+ Text[ language_user1 ] = " ";
+};
+ CheckBox CB_AUTO_UPDATE_CHARTS
+ {
+ Pos = MAP_APPFONT ( 12 , 68) ;
+ Size = MAP_APPFONT ( 213 , 10 ) ;
+ Text = "Dia~gramme automatisch aktualisieren" ;
+ Text [ English ] = "Update charts automatically" ;
+ Text[ english_us ] = "Update ~charts automatically";
+ Text[ portuguese ] = "Actualizar ~gráficos automaticamente";
+ Text[ russian ] = "Îáíîâëÿòü àâòîìàòè÷åñêè äèàãðàììû";
+ Text[ dutch ] = "~Diagrammen automatisch actualiseren";
+ Text[ french ] = "Actualiser automatiquement les diagrammes";
+ Text[ spanish ] = "Actualizar ~diagramas automáticamente";
+ Text[ italian ] = "Aggiorna i diagrammi automaticamente";
+ Text[ danish ] = "Opdater diagrammer automatisk";
+ Text[ swedish ] = "Uppdatera ~diagram automatiskt";
+ Text[ polish ] = "Aktualizuj wykresy automatycznie";
+ Text[ portuguese_brazilian ] = "Update charts automatically";
+ Text[ japanese ] = "¸Þ×Ì‚ðŽ©“®“I‚ÉXV(~C)";
+ Text[ chinese_simplified ] = "×Ô¶¯¸üÐÂͼ±í(~C)";
+ Text[ chinese_traditional ] = "¦Û°Ê§ó·s¹Ïªí(~C)";
+ Text[ arabic ] = "ÊÍÏíË ÇáÑÓæã ÇáÈíÇäíÉ ÊáÞÇÆíÇð";
+ Text[ greek ] = "Áõôüìáôç åíçìÝñùóç äéáãñáììÜôùí";
+ Text[ korean ] = "Â÷Æ® ÀÚµ¿ ¾÷ µ¥ÀÌÆ®(~C)";
+ Text[ turkish ] = "Þemalarý otomatik olarak güncelle";
+ Text[ language_user1 ] = " ";
+};
+ CheckBox CB_FLD_DOCONLY
+ {
+ Pos = MAP_APPFONT ( 12 , 83) ;
+ Size = MAP_APPFONT ( 213 , 10 ) ;
+ Text = "Nur für das aktuelle D~okument" ;
+ Text [ English ] = "Current document only" ;
+ Text [ dutch ] = "~Alleen in het actuele document" ;
+ Text [ english_us ] = "Current document only" ;
+ Text [ italian ] = "Solo per il documento corrente" ;
+ Text [ spanish ] = "Solo para el documento ~actual" ;
+ Text [ french ] = "Uniquement pour le document actif" ;
+ Text [ swedish ] = "~Endast för det aktuella dokumentet" ;
+ Text [ danish ] = "Kun for det aktuelle dokument" ;
+ Text [ portuguese ] = "~Apenas para documento actual" ;
+ Text[ portuguese_brazilian ] = "~Nur für das aktuelle Dokument";
+ Text[ chinese_simplified ] = "Ö»ÓÃÓÚµ±Ç°µÄÎĵµ";
+ Text[ russian ] = "Òîëüêî äëÿ òåêóùåãî äîêóìåíòà";
+ Text[ polish ] = "Tylko dla aktualnego dokumentu";
+ Text[ japanese ] = "Œ»Ý‚ÌÄÞ·­ÒÝÄ‚¾‚¯";
+ Text[ chinese_traditional ] = "¥u¥Î©ó·í«eªº¤å¥ó";
+ Text[ arabic ] = "ÇáãÓÊäÏ ÇáÍÇáí ÝÞØ";
+ Text[ greek ] = "Ìüíï ãéá ôï ðáñþí Ýããñáöï";
+ Text[ korean ] = "ÇöÀç ¹®¼­ ¸¸";
+ Text[ turkish ] = "Yalnýzca açýk belgede";
+ Text[ language_user1 ] = " ";
+};
+ GroupBox GB_COMPAT
+ {
+ Pos = MAP_APPFONT ( 6 , 98 ) ;
+ Size = MAP_APPFONT ( 248 , 33 ) ;
+ Text = "Kompatibilität" ;
+ Text [ English ] = "Compatibility" ;
+ Text[ english_us ] = "Compatibility";
+ Text[ portuguese ] = "Compatibilidade";
+ Text[ russian ] = "Ñîâìåñòèìîñòü";
+ Text[ dutch ] = "Compatibiliteit";
+ Text[ french ] = "Compatibilité";
+ Text[ spanish ] = "Compatibilidad";
+ Text[ italian ] = "Compatibilità";
+ Text[ danish ] = "Kompatibilitet";
+ Text[ swedish ] = "Kompatibilitet";
+ Text[ polish ] = "ZgodnoϾ";
+ Text[ portuguese_brazilian ] = "Compatibility";
+ Text[ japanese ] = "ŒÝŠ·«";
+ Text[ chinese_simplified ] = "¼æÈÝ";
+ Text[ chinese_traditional ] = "¬Û®e";
+ Text[ arabic ] = "ÊæÇÝÞ";
+ Text[ greek ] = "Óõìâáôüôçôá";
+ Text[ korean ] = "ȣȯ";
+ Text[ turkish ] = "Uyumluluk";
+ Text[ language_user1 ] = " ";
+};
+ CheckBox CB_MERGE_PARA_DIST
+ {
+ Pos = MAP_APPFONT ( 12 , 109) ;
+ Size = MAP_APPFONT ( 236 , 10 ) ;
+ Text = "Im aktuellen Dokument alle Absatz- und Tabellen~abstände addieren";
+ Text [ English ] = "Add ~distances between paragraphs and tables" ;
+ Text[ english_us ] = "Add spacing between paragraphs and tables in the current document";
+ Text[ portuguese ] = "Somar ~espaçamento entre parágrafos e tabelas no documento activo";
+ Text[ russian ] = "Ñëîæèòü â òåêóùåì äîêóìåíòå âñå èíòåðâàëû àáçàöåâ è òàáëèö";
+ Text[ dutch ] = "In het actuele document alle ~afstanden tussen alinea's en tabellen optellen";
+ Text[ french ] = "Additionner les espaces entre paragraphes et tableaux dans le document actif";
+ Text[ spanish ] = "Sumar ~espacios de párrafos y tablas en el documento actual";
+ Text[ italian ] = "Aggiungi distanze tra i paragrafi e le tabelle nel documento attuale";
+ Text[ danish ] = "Tæl alle afsnits- og tabelafstande i det aktuelle dokument sammen";
+ Text[ swedish ] = "Addera alla stycke- och tabell~avstånd i det aktuella dokumentet";
+ Text[ polish ] = "Dodaj w aktualnym dokumencie wszystkie odstêpy akapitów i tabel";
+ Text[ portuguese_brazilian ] = "Add ~distances between paragraphs and tables";
+ Text[ japanese ] = "Œ»Ý‚ÌÄÞ·­ÒÝÄ‚É‚·‚ׂĂ̒i—Ž‚¨‚æ‚Ñ•\\‚ÌŠÔŠu‚ð•t‰Á‚·‚é";
+ Text[ chinese_simplified ] = "ÔÚµ±Ç°ÎĵµÄÚÀ©´óËùÓжÎÂäºÍ±í¸ñÖ®¼äµÄ¼ä¸ô(~S)";
+ Text[ chinese_traditional ] = "¦b·í«e¤å¥ó¤ºÂX¤j©Ò¦³¬q¸¨©Mªí®æ¤§¶¡ªº¶¡¹j(~S)";
+ Text[ arabic ] = "ÅÖÇÝÉ ãÓÇÝÉ ÇáÊÈÇÚÏ Åáì ßá ÝÞÑÇÊ æÌÏÇæá ÇáãÓÊäÏ ÇáÍÇáí";
+ Text[ greek ] = "¢èñïéóìá üëùí ôùí áðïóôÜóåùí ðáñáãñÜöùí êáé ðéíÜêùí óôï ôñÝ÷ùí Ýããñáöï";
+ Text[ korean ] = "ÇöÀç ¹®¼­ÀÇ ´Ü¶ô°ú Ç¥ »çÀÌÀÇ °£°Ý Ãß°¡";
+ Text[ turkish ] = "Açýk belgedeki tüm paragraf ve tablo aralýklarýný topla";
+ Text[ language_user1 ] = " ";
+};
+ CheckBox CB_MERGE_PARA_DIST_PAGESTART
+ {
+ Pos = MAP_APPFONT ( 12 , 121) ;
+ Size = MAP_APPFONT ( 236 , 10 ) ;
+ Text = "A~bsatz- und Tabellenabstände an Seitenanfängen addieren";
+ Text [ English ] = "Add distances at the beginning of pages" ;
+ Text[ english_us ] = "Add paragraph and table spacing to start of pages";
+ Text[ portuguese ] = "A~dicionar espaços de parágrafos e tabelas no início das páginas";
+ Text[ russian ] = "Äîáàâèòü èíòåðâàëû àáçàöåâ è òàáëèö â íà÷àëå ñòðàíèöû";
+ Text[ greek ] = "¢èñïéóìá ôùí áðïóôÜóåùí ôùí ðáñáãñÜöùí êáé ðéíÜêùí óôçí áñ÷Þ ôçò óåëßäáò";
+ Text[ dutch ] = "~Alinea- en tabellenafstanden invoegen aan paginabegin.";
+ Text[ french ] = "Additionner les ~espaces entre paragraphes et tableaux en début de page";
+ Text[ spanish ] = "Su~mar espacios de tablas y párrafos a los comienzos de página";
+ Text[ italian ] = "Aggiungi distanze paragrafi e tabelle a inizio pagina.";
+ Text[ danish ] = "Læg afsnits- og tabelafstande til ved sidebegyndelser";
+ Text[ swedish ] = "Lägg till stycke- och tabellavstånd vid början av sidor";
+ Text[ polish ] = "Dodaj a~kapity i odstêpy tabeli do pocz¹tków stron";
+ Text[ portuguese_brazilian ] = "Add distances at the beginning of pages";
+ Text[ japanese ] = "’i—Ž‚¨‚æ‚Ñ•\\ŠÔŠu‚ðÍß°¼Þ‚ÌŽn‚ß‚É•t‰Á‚·‚é";
+ Text[ korean ] = "ÆäÀÌÁö ½ÃÀÛ¿¡ ´Ü¶ô°ú Ç¥ °£°Ý Ãß°¡";
+ Text[ chinese_simplified ] = "ÔÚÒ³ÃæÆðʼ´¦Ôö¼Ó¶ÎÂäºÍ±í¸ñµÄ¼ä¸ô";
+ Text[ chinese_traditional ] = "­¶­±¶}ºÝ³B¥[¤J¬q¸¨©Mªí®æ¶¡¹j";
+ Text[ arabic ] = "ÅÖÇÝÉ ÇáÝÞÑÉ æÊÈÇÚÏ ÇáÌÏÇæá Åáì ÈÏÇíÉ ÇáÕÝÍÇÊ";
+ Text[ turkish ] = "Paragraf ve tablo aralýklarýný sayfa baþlarýna ekle";
+ Text[ language_user1 ] = " ";
+};
+};
+
diff --git a/sw/source/ui/config/optpage.cxx b/sw/source/ui/config/optpage.cxx
new file mode 100644
index 000000000000..f1aa10c19e5c
--- /dev/null
+++ b/sw/source/ui/config/optpage.cxx
@@ -0,0 +1,2695 @@
+/*************************************************************************
+ *
+ * $RCSfile: optpage.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _XTABLE_HXX //autogen
+#include <svx/xtable.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_DLGUTIL_HXX //autogen
+#include <svx/dlgutil.hxx>
+#endif
+#ifndef _SV_SYSTEM_HXX //autogen
+#include <vcl/system.hxx>
+#endif
+#ifndef _SV_WALL_HXX
+#include <vcl/wall.hxx>
+#endif
+
+
+#ifndef _FMTCOL_HXX //autogen
+#include <fmtcol.hxx>
+#endif
+#ifndef _CHARATR_HXX
+#include <charatr.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _SWATRSET_HXX
+#include <swatrset.hxx>
+#endif
+#ifndef _OPTDLG_HXX
+#include <optdlg.hxx>
+#endif
+#ifndef _CFGITEMS_HXX
+#include <cfgitems.hxx> //Items fuer Sw-Seiten
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _UIITEMS_HXX
+#include <uiitems.hxx>
+#endif
+#ifndef _INITUI_HXX
+#include <initui.hxx>
+#endif
+#ifndef _OPTPAGE_HXX
+#include <optpage.hxx>
+#endif
+#ifndef _SWPRTOPT_HXX
+#include <swprtopt.hxx>
+#endif
+#ifndef _FONTCFG_HXX
+#include <fontcfg.hxx>
+#endif
+#ifndef _MODCFG_HXX
+#include <modcfg.hxx>
+#endif
+#ifndef _SRCVCFG_HXX
+#include <srcvcfg.hxx>
+#endif
+#ifndef _SRCVIEW_HXX
+#include <srcview.hxx>
+#endif
+#ifndef _SRCEDTW_HXX
+#include <srcedtw.hxx>
+#endif
+#ifndef _CRSTATE_HXX
+#include <crstate.hxx>
+#endif
+
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _CONFIG_HRC
+#include <config.hrc>
+#endif
+#ifndef _REDLOPT_HRC
+#include <redlopt.hrc>
+#endif
+#ifndef _OPTDLG_HRC
+#include <optdlg.hrc>
+#endif
+
+#define C2S(cChar) String::CreateFromAscii(cChar)
+/*******************************************************
+ ******************************************************/
+
+/*-----------------31.08.96 10.16-------------------
+ TabPage Anzeige/Inhalt
+--------------------------------------------------*/
+
+SwContentOptPage::SwContentOptPage( Window* pParent,
+ const SfxItemSet& rCoreSet ) :
+ SfxTabPage( pParent, SW_RES( TP_CONTENT_OPT ), rCoreSet ),
+ aDispBox ( this, SW_RES( GB_DISP ) ),
+ aGrfCB ( this, SW_RES( CB_GRF ) ),
+ aTblCB ( this, SW_RES( CB_TBL ) ),
+ aDrwCB ( this, SW_RES( CB_DRWFAST ) ),
+ aFldNameCB ( this, SW_RES( CB_FIELD ) ),
+ aPostItCB ( this, SW_RES( CB_POSTIT ) ),
+
+ aUnprintBox ( this, SW_RES( GB_NOPRINT ) ),
+ aParaCB ( this, SW_RES( CB_PARA ) ),
+ aSHyphCB ( this, SW_RES( CB_SHYPH ) ),
+ aSpacesCB ( this, SW_RES( CB_SPACE ) ),
+ aHSpacesCB ( this, SW_RES( CB_HSPACE ) ),
+ aTabCB ( this, SW_RES( CB_TAB ) ),
+ aBreakCB ( this, SW_RES( CB_BREAK ) ),
+ aHiddenCB ( this, SW_RES( CB_HIDDEN ) ),
+ aHiddenParaCB ( this, SW_RES( CB_HIDDEN_PARA ) ),
+
+ aBackBox ( this, SW_RES( GB_BACK ) ),
+ aIdxEntryCB ( this, SW_RES( CB_IDX_ENTRY ) ),
+ aIdxBackCB ( this, SW_RES( CB_INDEX ) ),
+ aFootBackCB ( this, SW_RES( CB_FOOTBACK ) ),
+ aFldBackCB ( this, SW_RES( CB_FLDBACK ) )
+{
+ FreeResource();
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_HTML_MODE, FALSE, &pItem )
+ && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
+ {
+ aFootBackCB .Hide();
+ aIdxEntryCB .Hide();
+ aIdxBackCB.Hide();
+ aTabCB .Hide();
+ aHiddenCB .Hide();
+ aHiddenParaCB.Hide();
+ aFldBackCB.SetPosPixel(aIdxEntryCB.GetPosPixel());
+ aBreakCB.SetPosPixel(aTabCB.GetPosPixel());
+ }
+}
+
+#undef _INIT
+
+/*-----------------31.08.96 13.58-------------------
+
+--------------------------------------------------*/
+
+
+SwContentOptPage::~SwContentOptPage()
+{
+}
+
+/*-----------------31.08.96 13.58-------------------
+
+--------------------------------------------------*/
+
+
+SfxTabPage* SwContentOptPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet)
+{
+ return new SwContentOptPage(pParent, rAttrSet);
+}
+
+/*-----------------31.08.96 13.58-------------------
+
+--------------------------------------------------*/
+
+
+void SwContentOptPage::Reset(const SfxItemSet& rSet)
+{
+ const SwDocDisplayItem* pDocDisplayAttr = 0;
+
+ rSet.GetItemState( FN_PARAM_DOCDISP, FALSE,
+ (const SfxPoolItem**)&pDocDisplayAttr );
+ if(pDocDisplayAttr)
+ {
+ aParaCB .Check (pDocDisplayAttr->bParagraphEnd );
+ aTabCB .Check (pDocDisplayAttr->bTab );
+ aSpacesCB .Check (pDocDisplayAttr->bSpace );
+ aHSpacesCB .Check (pDocDisplayAttr->bNonbreakingSpace );
+ aSHyphCB .Check (pDocDisplayAttr->bSoftHyphen );
+ aHiddenCB .Check (pDocDisplayAttr->bHiddenText );
+ aHiddenParaCB.Check (pDocDisplayAttr->bShowHiddenPara );
+ aBreakCB .Check (pDocDisplayAttr->bManualBreak );
+ aIdxEntryCB .Check (pDocDisplayAttr->bIndexEntry );
+ aIdxBackCB.Check (pDocDisplayAttr->bIndexBackground );
+ aFootBackCB .Check (pDocDisplayAttr->bFootnoteBackground );
+ aFldBackCB .Check (pDocDisplayAttr->bField );
+ aTblCB .Check (pDocDisplayAttr->bTable );
+ aGrfCB .Check (pDocDisplayAttr->bGraphic );
+ aDrwCB .Check (pDocDisplayAttr->bDrawing );
+ aFldNameCB .Check (pDocDisplayAttr->bFieldName );
+ aPostItCB .Check (pDocDisplayAttr->bNotes );
+// bHtmlMode
+ }
+
+}
+
+/*-----------------31.08.96 13.58-------------------
+
+--------------------------------------------------*/
+
+
+BOOL SwContentOptPage::FillItemSet(SfxItemSet& rSet)
+{
+ const SwDocDisplayItem* pOldAttr = (const SwDocDisplayItem*)
+ GetOldItem(GetItemSet(), FN_PARAM_DOCDISP);
+
+ SwDocDisplayItem aDisp;
+ if(pOldAttr)
+ aDisp = *pOldAttr;
+ aDisp.bParagraphEnd = aParaCB .IsChecked();
+ aDisp.bTab = aTabCB .IsChecked();
+ aDisp.bSpace = aSpacesCB .IsChecked();
+ aDisp.bNonbreakingSpace = aHSpacesCB .IsChecked();
+ aDisp.bSoftHyphen = aSHyphCB .IsChecked();
+ aDisp.bHiddenText = aHiddenCB .IsChecked();
+ aDisp.bShowHiddenPara = aHiddenParaCB .IsChecked();
+ aDisp.bManualBreak = aBreakCB .IsChecked();
+ aDisp.bIndexEntry = aIdxEntryCB .IsChecked();
+ aDisp.bIndexBackground = aIdxBackCB .IsChecked();
+ aDisp.bFootnoteBackground = aFootBackCB .IsChecked();
+ aDisp.bField = aFldBackCB .IsChecked();
+ aDisp.bTable = aTblCB .IsChecked();
+ aDisp.bGraphic = aGrfCB .IsChecked();
+ aDisp.bDrawing = aDrwCB .IsChecked();
+ aDisp.bFieldName = aFldNameCB .IsChecked();
+ aDisp.bNotes = aPostItCB .IsChecked();
+
+
+ BOOL bRet = !pOldAttr || aDisp != *pOldAttr;
+ if(bRet)
+ bRet = 0 != rSet.Put(aDisp);
+ return bRet;
+}
+
+/*-----------------31.08.96 10.30-------------------
+ TabPage Anzeige/Layout
+--------------------------------------------------*/
+
+
+// -----------------------------------------------------------------------
+
+
+SwLayoutOptPage::SwLayoutOptPage( Window* pParent,
+ const SfxItemSet& rCoreSet ) :
+ SfxTabPage( pParent, SW_RES( TP_LAYOUT_OPT ), rCoreSet ),
+ aLineGB ( this, SW_RES( GB_LINE ) ),
+ aTxtbegCB ( this, SW_RES( CB_TXTBEG ) ),
+ aTblbegCB ( this, SW_RES( CB_TABBEG ) ),
+ aSectBoundsCB( this, SW_RES( CB_SECT_BOUNDS ) ),
+ aCrossCB ( this, SW_RES( CB_CROSS ) ),
+ aSolidHandleCB( this, SW_RES( CB_HANDLE ) ),
+ aBigHandleCB ( this, SW_RES( CB_BIGHANDLE) ),
+ aWindowGB ( this, SW_RES( GB_WINDOW ) ),
+ aHScrollBox ( this, SW_RES( CB_HSCROLL ) ),
+ aVScrollBox ( this, SW_RES( CB_VSCROLL ) ),
+ aHRulerCBox ( this, SW_RES( CB_HRULER ) ),
+ aVRulerCBox ( this, SW_RES( CB_VRULER ) ),
+ aSmoothCBox ( this, SW_RES( CB_SMOOTH_SCROLL ) ),
+ aMetricLB ( this, SW_RES( LB_METRIC ) ),
+ aMetricGB ( this, SW_RES( GB_METRIC ) ),
+ aTabGB ( this, SW_RES( GB_TAB ) ),
+ aTabMF ( this, SW_RES( MF_TAB ) ),
+ aMetricArr ( SW_RES( ST_METRIC ) ),
+ nLastTab(0)
+{
+ FreeResource();
+ for ( USHORT i = 0; i < aMetricArr.Count(); ++i )
+ {
+ String sMetric = aMetricArr.GetStringByPos( i );
+ FieldUnit eFUnit = (FieldUnit)aMetricArr.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 = aMetricLB.InsertEntry( sMetric );
+ aMetricLB.SetEntryData( nPos, (void*)(long)eFUnit );
+ }
+ }
+ }
+ aMetricLB.SetSelectHdl(LINK(this, SwLayoutOptPage, MetricHdl));
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_HTML_MODE, FALSE, &pItem )
+ && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
+ {
+ aTabGB.Hide();
+ aTabMF.Hide();
+ }
+
+}
+
+#undef _INIT
+
+/*-----------------31.08.96 13.58-------------------
+
+--------------------------------------------------*/
+
+SwLayoutOptPage::~SwLayoutOptPage()
+{
+}
+
+/*-----------------31.08.96 13.58-------------------
+
+--------------------------------------------------*/
+
+
+SfxTabPage* SwLayoutOptPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet)
+{
+ return new SwLayoutOptPage(pParent, rAttrSet);
+}
+
+/*-----------------31.08.96 13.58-------------------
+
+--------------------------------------------------*/
+
+
+void SwLayoutOptPage::Reset(const SfxItemSet& rSet)
+{
+ const SwElemItem* pElemAttr = 0;
+
+ rSet.GetItemState( FN_PARAM_ELEM , FALSE,
+ (const SfxPoolItem**)&pElemAttr );
+ if(pElemAttr)
+ {
+ aTxtbegCB .Check( pElemAttr->bBounds );
+ aTblbegCB .Check( pElemAttr->bTableBounds );
+ aSectBoundsCB.Check( pElemAttr->bSectionBounds );
+ aCrossCB .Check( pElemAttr->bCrosshair );
+ aSolidHandleCB.Check( !pElemAttr->bHandles );
+ aBigHandleCB.Check(pElemAttr->bBigHandles );
+ aHScrollBox.Check( pElemAttr->bHorzScrollbar );
+ aVScrollBox.Check( pElemAttr->bVertScrollbar );
+ aHRulerCBox.Check( pElemAttr->bHorzRuler );
+ aVRulerCBox.Check( pElemAttr->bVertRuler );
+ aSmoothCBox.Check( pElemAttr->bSmoothScroll );
+ }
+
+
+ aMetricLB.SetNoSelection();
+ if ( rSet.GetItemState( SID_ATTR_METRIC ) >= SFX_ITEM_AVAILABLE )
+ {
+ const SfxUInt16Item& rItem = (SfxUInt16Item&)rSet.Get( SID_ATTR_METRIC );
+ FieldUnit eFieldUnit = (FieldUnit)rItem.GetValue();
+
+ for ( USHORT i = 0; i < aMetricLB.GetEntryCount(); ++i )
+ {
+ if ( (int)aMetricLB.GetEntryData( i ) == (int)eFieldUnit )
+ {
+ aMetricLB.SelectEntryPos( i );
+ break;
+ }
+ }
+ ::SetFieldUnit(aTabMF, eFieldUnit);
+ }
+ aMetricLB.SaveValue();
+
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == rSet.GetItemState(SID_ATTR_DEFTABSTOP, FALSE, &pItem))
+ {
+ nLastTab = ((SfxUInt16Item*)pItem)->GetValue();
+ aTabMF.SetValue(aTabMF.Normalize(nLastTab), FUNIT_TWIP);
+ }
+ // in FrameDocs koennen Scrollbars nicht sinnvoll eingestellt werden
+ if(SFX_ITEM_SET == rSet.GetItemState(FN_VIEW_IN_FRAME, FALSE, &pItem) &&
+ ((const SfxBoolItem*)pItem)->GetValue())
+ {
+ aHScrollBox.Enable(FALSE);
+ aVScrollBox.Enable(FALSE);
+ }
+ aTabMF.SaveValue();
+
+}
+
+/*-----------------31.08.96 13.58-------------------
+
+--------------------------------------------------*/
+
+
+BOOL SwLayoutOptPage::FillItemSet(SfxItemSet& rSet)
+{
+ const SwElemItem* pOldAttr = (const SwElemItem*)
+ GetOldItem(GetItemSet(), FN_PARAM_ELEM);
+
+ SwElemItem aElem;
+ if(pOldAttr)
+ aElem = *pOldAttr;
+
+ aElem.bBounds = aTxtbegCB .IsChecked();
+ aElem.bTableBounds = aTblbegCB .IsChecked();
+ aElem.bSectionBounds = aSectBoundsCB.IsChecked();
+ aElem.bCrosshair = aCrossCB .IsChecked();
+ aElem.bHandles = !aSolidHandleCB.IsChecked();
+ aElem.bBigHandles = aBigHandleCB.IsChecked();
+ aElem.bHorzScrollbar = aHScrollBox.IsChecked();
+ aElem.bVertScrollbar = aVScrollBox.IsChecked();
+ aElem.bHorzRuler = aHRulerCBox.IsChecked();
+ aElem.bVertRuler = aVRulerCBox.IsChecked();
+ aElem.bSmoothScroll = aSmoothCBox.IsChecked();
+
+ BOOL bRet = !pOldAttr || aElem != *pOldAttr;
+ if(bRet)
+ bRet = 0 != rSet.Put(aElem);
+
+ const USHORT nMPos = aMetricLB.GetSelectEntryPos();
+ if ( nMPos != aMetricLB.GetSavedValue() )
+ {
+ // Doppel-Cast fuer VA3.0
+ USHORT nFieldUnit = (USHORT)(long)aMetricLB.GetEntryData( nMPos );
+ bRet |= 0 != rSet.Put( SfxUInt16Item( SID_ATTR_METRIC,
+ (UINT16)nFieldUnit ) );
+ }
+
+ if(aTabMF.IsVisible() && aTabMF.GetText() != aTabMF.GetSavedValue())
+ bRet |= 0 != rSet.Put(SfxUInt16Item(SID_ATTR_DEFTABSTOP,
+ (USHORT)aTabMF.Denormalize(aTabMF.GetValue(FUNIT_TWIP))));
+
+ return bRet;
+}
+
+/*-----------------13.01.97 14.44-------------------
+ Metric des Deftabstops umschalten
+--------------------------------------------------*/
+
+IMPL_LINK(SwLayoutOptPage, MetricHdl, ListBox*, EMPTYARG)
+{
+ const USHORT nMPos = aMetricLB.GetSelectEntryPos();
+ if(nMPos != USHRT_MAX)
+ {
+ // Doppel-Cast fuer VA3.0
+ FieldUnit eFieldUnit = (FieldUnit)(long)aMetricLB.GetEntryData( nMPos );
+ BOOL bModified = aTabMF.IsModified();
+ long nVal = bModified ?
+ aTabMF.Denormalize( aTabMF.GetValue( FUNIT_TWIP ) ) :
+ nLastTab;
+ ::SetFieldUnit( aTabMF, eFieldUnit );
+ aTabMF.SetValue( aTabMF.Normalize( nVal ), FUNIT_TWIP );
+ if(!bModified)
+ aTabMF.ClearModifyFlag();
+ }
+
+ return 0;
+}
+
+/*----------------- OS 27.01.95 -----------------------
+ TabPage Drucker Zusatzeinstellungen
+-------------------------------------------------------*/
+
+// makro fuers init ------------------------------------------------------
+
+#define _INIT \
+ aGrfCB (this, SW_RES(CB_PGRF)), \
+ aTabCB (this, SW_RES(CB_PTAB)), \
+ aDrawCB (this, SW_RES(CB_PDRAW)), \
+ aCtrlFldCB (this, SW_RES(CB_CTRLFLD)), \
+ aBackgroundCB (this, SW_RES(CB_BACKGROUND)),\
+ aBlackFontCB (this, SW_RES(CB_BLACK_FONT)),\
+ aGroup1 (this, SW_RES(GRP_1)), \
+ aLeftPageCB (this, SW_RES(CB_LEFTP)),\
+ aRightPageCB (this, SW_RES(CB_RIGHTP)),\
+ aReverseCB (this, SW_RES(CB_REVERSE)),\
+ aProspectCB (this, SW_RES(CB_PROSPECT)),\
+ aGroup2 (this, SW_RES(GRP_2)), \
+ aNoRB (this, SW_RES(RB_NO)), \
+ aOnlyRB (this, SW_RES(RB_ONLY)), \
+ aEndRB (this, SW_RES(RB_END)), \
+ aEndPageRB (this, SW_RES(RB_PAGEEND)),\
+ aGroup3 (this, SW_RES(GRP_3)), \
+ aPaperFromSetupCB(this, SW_RES(CB_PAPERFROMSETUP)),\
+ aGroup5 (this, SW_RES(GRP_5)), \
+ aSingleJobsCB (this, SW_RES(CB_SINGLEJOBS)),\
+ aGroup4 (this, SW_RES(GRP_4)), \
+ aFaxLB (this, SW_RES(LB_FAX)), \
+ aFaxGB (this, SW_RES(GB_FAX)), \
+ bAttrModified( FALSE )
+
+// -----------------------------------------------------------------------
+
+
+SwAddPrinterTabPage::SwAddPrinterTabPage( Window* pParent,
+ const SfxItemSet& rCoreSet) :
+ SfxTabPage( pParent, SW_RES( TP_OPTPRINT_PAGE ), rCoreSet),
+ bPreview ( FALSE ),
+ _INIT
+{
+ Init();
+ FreeResource();
+
+ Link aLk = LINK( this, SwAddPrinterTabPage, AutoClickHdl);
+ aGrfCB.SetClickHdl( aLk );
+ aRightPageCB.SetClickHdl( aLk );
+ aLeftPageCB.SetClickHdl( aLk );
+ aTabCB.SetClickHdl( aLk );
+ aDrawCB.SetClickHdl( aLk );
+ aCtrlFldCB.SetClickHdl( aLk );
+ aBackgroundCB.SetClickHdl( aLk );
+ aBlackFontCB.SetClickHdl( aLk );
+ aReverseCB.SetClickHdl( aLk );
+ aProspectCB.SetClickHdl( aLk );
+ aPaperFromSetupCB.SetClickHdl( aLk );
+ aEndPageRB.SetClickHdl( aLk );
+ aEndRB.SetClickHdl( aLk );
+ aOnlyRB.SetClickHdl( aLk );
+ aNoRB.SetClickHdl( aLk );
+ aSingleJobsCB.SetClickHdl( aLk );
+ aFaxLB.SetSelectHdl( LINK( this, SwAddPrinterTabPage, SelectHdl ) );
+
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_HTML_MODE, FALSE, &pItem )
+ && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
+ {
+ aDrawCB .Hide();
+ aLeftPageCB .Hide();
+ aRightPageCB .Hide();
+ aReverseCB.SetPosPixel(aLeftPageCB .GetPosPixel());
+ aProspectCB.SetPosPixel(aRightPageCB .GetPosPixel());
+ aBlackFontCB.SetPosPixel(aBackgroundCB.GetPosPixel());
+ aBackgroundCB.SetPosPixel(aCtrlFldCB.GetPosPixel());
+ aCtrlFldCB.SetPosPixel(aDrawCB.GetPosPixel());
+ }
+
+}
+
+#undef _INIT
+//------------------------------------------------------------------------
+
+void SwAddPrinterTabPage::SetPreview(BOOL bPrev)
+{
+ bPreview = bPrev;
+
+ if (bPreview)
+ {
+ aLeftPageCB.Disable();
+ aRightPageCB.Disable();
+ aProspectCB.Disable();
+ aGroup3.Disable();
+ aNoRB.Disable();
+ aOnlyRB.Disable();
+ aEndRB.Disable();
+ aEndPageRB.Disable();
+ }
+}
+
+//------------------------------------------------------------------------
+
+SfxTabPage* SwAddPrinterTabPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return ( new SwAddPrinterTabPage( pParent, rAttrSet ) );
+}
+//------------------------------------------------------------------------
+
+
+BOOL SwAddPrinterTabPage::FillItemSet( SfxItemSet& rCoreSet )
+{
+ if ( bAttrModified )
+ {
+ SwAddPrinterItem aAddPrinterAttr (FN_PARAM_ADDPRINTER);
+ aAddPrinterAttr.bPrintGraphic = aGrfCB.IsChecked();
+ aAddPrinterAttr.bPrintTable = aTabCB.IsChecked();
+ aAddPrinterAttr.bPrintDrawing = aDrawCB.IsChecked();
+ aAddPrinterAttr.bPrintControl = aCtrlFldCB.IsChecked();
+ aAddPrinterAttr.bPrintPageBackground = aBackgroundCB.IsChecked();
+ aAddPrinterAttr.bPrintBlackFont = aBlackFontCB.IsChecked();
+
+ aAddPrinterAttr.bPrintLeftPage = aLeftPageCB.IsChecked();
+ aAddPrinterAttr.bPrintRightPage = aRightPageCB.IsChecked();
+ aAddPrinterAttr.bPrintReverse = aReverseCB.IsChecked();
+ aAddPrinterAttr.bPrintProspect = aProspectCB.IsChecked();
+ aAddPrinterAttr.bPaperFromSetup = aPaperFromSetupCB.IsChecked();
+ aAddPrinterAttr.bPrintSingleJobs = aSingleJobsCB.IsChecked();
+
+ if (aNoRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
+ POSTITS_NONE;
+ if (aOnlyRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
+ POSTITS_ONLY;
+ if (aEndRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
+ POSTITS_ENDDOC;
+ if (aEndPageRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
+ POSTITS_ENDPAGE;
+
+ aAddPrinterAttr.sFaxName = aFaxLB.GetSelectEntry();
+ rCoreSet.Put(aAddPrinterAttr);
+ }
+ return bAttrModified;
+}
+//------------------------------------------------------------------------
+
+
+void SwAddPrinterTabPage::Reset( const SfxItemSet& )
+{
+ const SfxItemSet& rSet = GetItemSet();
+ const SwAddPrinterItem* pAddPrinterAttr = 0;
+
+ if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_ADDPRINTER , FALSE,
+ (const SfxPoolItem**)&pAddPrinterAttr ))
+ {
+ aGrfCB.Check( pAddPrinterAttr->bPrintGraphic);
+ aTabCB.Check( pAddPrinterAttr->bPrintTable);
+ aDrawCB.Check( pAddPrinterAttr->bPrintDrawing);
+ aCtrlFldCB.Check( pAddPrinterAttr->bPrintControl);
+ aBackgroundCB.Check( pAddPrinterAttr->bPrintPageBackground);
+ aBlackFontCB.Check( pAddPrinterAttr->bPrintBlackFont);
+ aLeftPageCB.Check( pAddPrinterAttr->bPrintLeftPage);
+ aRightPageCB.Check( pAddPrinterAttr->bPrintRightPage);
+ aReverseCB.Check( pAddPrinterAttr->bPrintReverse);
+ aPaperFromSetupCB.Check(pAddPrinterAttr->bPaperFromSetup);
+ aProspectCB.Check( pAddPrinterAttr->bPrintProspect);
+ aSingleJobsCB.Check( pAddPrinterAttr->bPrintSingleJobs);
+
+ aNoRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_NONE ) ;
+ aOnlyRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ONLY ) ;
+ aEndRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDDOC ) ;
+ aEndPageRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDPAGE ) ;
+ aFaxLB.SelectEntry( pAddPrinterAttr->sFaxName );
+ }
+}
+//-----------------------------------------------------------------------
+
+//-----------------------------------------------------------------------
+
+
+void SwAddPrinterTabPage::Init()
+{
+
+}
+//------------------------------------------------------------------------
+
+
+IMPL_LINK_INLINE_START( SwAddPrinterTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
+{
+ bAttrModified = TRUE;
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwAddPrinterTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
+
+//------------------------------------------------------------------------
+
+
+void SwAddPrinterTabPage::SetFax( const SvStringsDtor& rFaxLst )
+{
+ for ( USHORT i = 0; i < rFaxLst.Count(); ++i )
+ aFaxLB.InsertEntry( *rFaxLst.GetObject(i) );
+ aFaxLB.SelectEntryPos( 0 );
+}
+
+//------------------------------------------------------------------------
+
+
+IMPL_LINK_INLINE_START( SwAddPrinterTabPage, SelectHdl, ListBox *, EMPTYARG )
+{
+ bAttrModified=TRUE;
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwAddPrinterTabPage, SelectHdl, ListBox *, EMPTYARG )
+
+/*-----------------03.09.96 11.53-------------------
+ Tabpage Standardfonts
+--------------------------------------------------*/
+
+
+SwStdFontTabPage::SwStdFontTabPage( Window* pParent,
+ const SfxItemSet& rSet ) :
+ SfxTabPage( pParent, SW_RES( TP_STD_FONT ), rSet),
+ aStandardLbl(this, SW_RES(FT_STANDARD)),
+ aStandardBox(this, SW_RES(LB_STANDARD)),
+ aTitleLbl (this, SW_RES(FT_TITLE )),
+ aTitleBox (this, SW_RES(LB_TITLE )),
+ aListLbl (this, SW_RES(FT_LIST )),
+ aListBox (this, SW_RES(LB_LIST )),
+ aLabelLbl (this, SW_RES(FT_LABEL )),
+ aLabelBox (this, SW_RES(LB_LABEL )),
+ aIdxLbl (this, SW_RES(FT_IDX )),
+ aIdxBox (this, SW_RES(LB_IDX )),
+ aStdChrFrm (this, SW_RES(GB_STDCHR )),
+ aDocOnlyCB (this, SW_RES(CB_DOCONLY )),
+ aStandardPB (this, SW_RES(PB_STANDARD)),
+ pPrt(0),
+ pFontConfig(0),
+ pWrtShell(0),
+ bListDefault(FALSE),
+ bLabelDefault(FALSE),
+ bSetListDefault(TRUE),
+ bSetLabelDefault(TRUE),
+ bSetIdxDefault(TRUE),
+ bIdxDefault(FALSE),
+ bDeletePrinter(FALSE)
+{
+ FreeResource();
+ aStandardPB.SetClickHdl(LINK(this, SwStdFontTabPage, StandardHdl));
+ aStandardBox.SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
+ aListBox .SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
+ aLabelBox .SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
+ aIdxBox .SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
+
+ aDocOnlyCB.Check(SW_MOD()->GetModuleConfig()->IsDefaultFontInCurrDocOnly());
+}
+
+/*-----------------03.09.96 11.53-------------------
+
+--------------------------------------------------*/
+
+SwStdFontTabPage::~SwStdFontTabPage()
+{
+ if(bDeletePrinter)
+ delete pPrt;
+}
+
+/*-----------------03.09.96 11.53-------------------
+
+--------------------------------------------------*/
+
+
+SfxTabPage* SwStdFontTabPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return new SwStdFontTabPage(pParent, rAttrSet);
+}
+
+/*-----------------03.09.96 11.53-------------------
+
+--------------------------------------------------*/
+
+
+void lcl_SetColl(SwWrtShell* pWrtShell, USHORT nType,
+ SfxPrinter* pPrt, const String& rStyle)
+{
+ BOOL bDelete = FALSE;
+ const SfxFont* pFnt = pPrt ? pPrt->GetFontByName(rStyle): 0;
+ if(!pFnt)
+ {
+ pFnt = new SfxFont(FAMILY_DONTKNOW, rStyle);
+ bDelete = TRUE;
+ }
+ SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(nType);
+ pColl->SetAttr(SvxFontItem(pFnt->GetFamily(), pFnt->GetName(),
+ aEmptyStr, pFnt->GetPitch(), pFnt->GetCharSet()));
+ if(bDelete)
+ {
+ delete (SfxFont*) pFnt;
+ bDelete = FALSE;
+ }
+}
+
+
+/*-----------------03.09.96 11.53-------------------
+
+--------------------------------------------------*/
+
+
+BOOL SwStdFontTabPage::FillItemSet( SfxItemSet& rSet )
+{
+ BOOL bNotDocOnly = !aDocOnlyCB.IsChecked();
+ SW_MOD()->GetModuleConfig()->SetDefaultFontInCurrDocOnly(!bNotDocOnly);
+
+ String sStandard = aStandardBox.GetText();
+ String sTitle = aTitleBox .GetText();
+ String sList = aListBox .GetText();
+ String sLabel = aLabelBox .GetText();
+ String sIdx = aIdxBox .GetText();
+ String sStandardBak = aStandardBox.GetSavedValue();
+ String sTitleBak = aTitleBox .GetSavedValue();
+ String sListBak = aListBox .GetSavedValue();
+ String sLabelBak = aLabelBox .GetSavedValue();
+ String sIdxBak = aIdxBox .GetSavedValue();
+
+
+ if(bNotDocOnly)
+ {
+ if(sStandard != sStandardBak)
+ pFontConfig->SetFontStandard(sStandard);
+ if(sTitle != sTitleBak )
+ pFontConfig->SetFontOutline(sTitle);
+ if(sList != sListBak )
+ pFontConfig->SetFontList(sList);
+ if(sLabel != sLabelBak )
+ pFontConfig->SetFontCaption(sLabel);
+ if(sIdx != sIdxBak )
+ pFontConfig->SetFontIndex(sIdx);
+ }
+ if(pWrtShell)
+ {
+ pWrtShell->StartAllAction();
+ SfxPrinter* pPrt = pWrtShell->GetPrt();
+ BOOL bMod = FALSE;
+ if(sStandard != sShellStd)
+ {
+ BOOL bDelete = FALSE;
+ const SfxFont* pFnt = pPrt ? pPrt->GetFontByName(sStandard): 0;
+ if(!pFnt)
+ {
+ pFnt = new SfxFont(FAMILY_DONTKNOW, sStandard);
+ bDelete = TRUE;
+ }
+ pWrtShell->SetDefault(SvxFontItem(pFnt->GetFamily(), pFnt->GetName(),
+ aEmptyStr, pFnt->GetPitch(), pFnt->GetCharSet()));
+ SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
+ pColl->ResetAttr(RES_CHRATR_FONT);
+ if(bDelete)
+ {
+ delete (SfxFont*) pFnt;
+ bDelete = FALSE;
+ }
+// lcl_SetColl(pWrtShell, RES_POOLCOLL_STANDARD, pPrt, sStandard);
+ bMod = TRUE;
+ }
+ if(sTitle != sShellTitle )
+ {
+ lcl_SetColl(pWrtShell, RES_POOLCOLL_HEADLINE_BASE, pPrt, sTitle);
+ bMod = TRUE;
+ }
+ if(sList != sShellList && (!bListDefault || !bSetListDefault ))
+ {
+ lcl_SetColl(pWrtShell, RES_POOLCOLL_NUMBUL_BASE, pPrt, sList);
+ bMod = TRUE;
+ }
+ if(sLabel != sShellLabel && (!bLabelDefault || !bSetLabelDefault))
+ {
+ lcl_SetColl(pWrtShell, RES_POOLCOLL_LABEL, pPrt, sLabel);
+ bMod = TRUE;
+ }
+ if(sIdx != sShellIndex && (!bIdxDefault || !bSetIdxDefault))
+ {
+ lcl_SetColl(pWrtShell, RES_POOLCOLL_REGISTER_BASE, pPrt, sIdx);
+ bMod = TRUE;
+ }
+ if ( bMod )
+ pWrtShell->SetModified();
+ pWrtShell->EndAllAction();
+ }
+
+ return FALSE;
+}
+
+/*-----------------03.09.96 11.53-------------------
+
+--------------------------------------------------*/
+
+void SwStdFontTabPage::Reset( const SfxItemSet& rSet )
+{
+ const SfxPoolItem* pItem;
+
+ if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_PRINTER, FALSE, &pItem))
+ {
+ pPrt = (SfxPrinter*)((const SwPtrItem*)pItem)->GetValue();
+ }
+ else
+ {
+ SfxItemSet* pSet = new SfxItemSet( *rSet.GetPool(),
+ SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
+ SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
+ 0 );
+ pPrt = new SfxPrinter(pSet);
+ bDeletePrinter = TRUE;
+ }
+ const USHORT nCount = pPrt->GetFontCount();
+ for (USHORT i = 0; i < nCount; ++i)
+ {
+ const String &rString = pPrt->GetFont(i)->GetName();
+ aStandardBox.InsertEntry( rString );
+ aTitleBox .InsertEntry( rString );
+ aListBox .InsertEntry( rString );
+ aLabelBox .InsertEntry( rString );
+ aIdxBox .InsertEntry( rString );
+ }
+ if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_STDFONTS, FALSE, &pItem))
+ {
+ pFontConfig = (SwStdFontConfig*)((const SwPtrItem*)pItem)->GetValue();
+ }
+
+ if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_WRTSHELL, FALSE, &pItem))
+ {
+ pWrtShell = (SwWrtShell*)((const SwPtrItem*)pItem)->GetValue();
+ }
+ String sStdBackup;
+ String sOutBackup;
+ String sListBackup;
+ String sCapBackup;
+ String sIdxBackup;
+
+ if(!pWrtShell)
+ {
+ sStdBackup = pFontConfig->GetFontStandard();
+ sOutBackup = pFontConfig->GetFontOutline();
+ sListBackup= pFontConfig->GetFontList();
+ sCapBackup = pFontConfig->GetFontCaption();
+ sIdxBackup = pFontConfig->GetFontIndex();
+ aDocOnlyCB.Enable(FALSE);
+ }
+ else
+ {
+ SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
+ sShellStd = sStdBackup = pColl->GetFont().GetFamilyName();
+
+ pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_HEADLINE_BASE);
+ sShellTitle = sOutBackup = pColl->GetFont().GetFamilyName();
+
+ pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_NUMBUL_BASE);
+ bListDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(RES_CHRATR_FONT, FALSE);
+ sShellList = sListBackup = pColl->GetFont().GetFamilyName();
+
+ pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_LABEL);
+ bLabelDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(RES_CHRATR_FONT, FALSE);
+ sShellLabel = sCapBackup = pColl->GetFont().GetFamilyName();
+
+ pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_REGISTER_BASE);
+ bIdxDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(RES_CHRATR_FONT, FALSE);
+ sShellIndex = sIdxBackup = pColl->GetFont().GetFamilyName();
+ }
+ aStandardBox.SetText(sStdBackup );
+ aTitleBox .SetText(sOutBackup );
+ aListBox .SetText(sListBackup);
+ aLabelBox .SetText(sCapBackup );
+ aIdxBox .SetText(sIdxBackup );
+
+ aStandardBox.SaveValue();
+ aTitleBox .SaveValue();
+ aListBox .SaveValue();
+ aLabelBox .SaveValue();
+ aIdxBox .SaveValue();
+}
+
+/*-----------------07.09.96 12.28-------------------
+
+--------------------------------------------------*/
+
+
+IMPL_LINK( SwStdFontTabPage, StandardHdl, PushButton *, EMPTYARG )
+{
+ aStandardBox.SetText(SwStdFontConfig::GetDefaultFor(FONT_STANDARD));
+ aTitleBox .SetText(SwStdFontConfig::GetDefaultFor(FONT_OUTLINE));
+ aListBox .SetText(SwStdFontConfig::GetDefaultFor(FONT_LIST));
+ aLabelBox .SetText(SwStdFontConfig::GetDefaultFor(FONT_CAPTION));
+ aIdxBox .SetText(SwStdFontConfig::GetDefaultFor(FONT_INDEX));
+ aStandardBox.SaveValue();
+ aTitleBox .SaveValue();
+ aListBox .SaveValue();
+ aLabelBox .SaveValue();
+ aIdxBox .SaveValue();
+
+ return 0;
+}
+/*-----------------17.01.97 15.43-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK( SwStdFontTabPage, ModifyHdl, ComboBox*, pBox )
+{
+ if(pBox == &aStandardBox)
+ {
+ String sEntry = pBox->GetText();
+ if(bSetListDefault && bListDefault)
+ aListBox.SetText(sEntry);
+ if(bSetLabelDefault && bLabelDefault)
+ aLabelBox.SetText(sEntry);
+ if(bSetIdxDefault && bIdxDefault)
+ aIdxBox.SetText(sEntry);
+ }
+ else if(pBox == &aListBox)
+ {
+ bSetListDefault = FALSE;
+ }
+ else if(pBox == &aLabelBox)
+ {
+ bSetLabelDefault = FALSE;
+ }
+ else if(pBox == &aIdxBox)
+ {
+ bSetIdxDefault = FALSE;
+ }
+ return 0;
+}
+
+#undef _INIT
+
+/*-----------------18.01.97 12.14-------------------
+ Optionen Tabelle
+--------------------------------------------------*/
+
+SwTableOptionsTabPage::SwTableOptionsTabPage( Window* pParent, const SfxItemSet& rSet ) :
+ SfxTabPage(pParent, SW_RES(TP_OPTTABLE_PAGE), rSet),
+ aMoveGB( this, ResId(GB_MOVE )),
+ aRowMoveFT( this, ResId(FT_ROWMOVE )),
+ aRowMoveMF( this, ResId(MF_ROWMOVE )),
+ aColMoveFT( this, ResId(FT_COLMOVE )),
+ aColMoveMF( this, ResId(MF_COLMOVE )),
+ aInsertGB( this, ResId(GB_INSERT )),
+ aRowInsertFT( this, ResId(FT_ROWINSERT)),
+ aRowInsertMF( this, ResId(MF_ROWINSERT)),
+ aColInsertFT( this, ResId(FT_COLINSERT)),
+ aColInsertMF( this, ResId(MF_COLINSERT)),
+ aHandlingGB( this, ResId(GB_HANDLING )),
+ aFixRB( this, ResId(RB_FIX )),
+ aFixFT( this, ResId(FT_FIX )),
+ aFixPropRB( this, ResId(RB_FIXPROP )),
+ aFixPropFT( this, ResId(FT_FIXPROP )),
+ aVarRB( this, ResId(RB_VAR )),
+ aVarFT( this, ResId(FT_VAR )),
+ aDescFT( this, ResId(FT_DESC )),
+ pWrtShell(0)
+{
+ FreeResource();
+}
+
+/*-----------------18.01.97 12.43-------------------
+
+--------------------------------------------------*/
+
+SwTableOptionsTabPage::~SwTableOptionsTabPage()
+{
+}
+
+/*-----------------18.01.97 12.43-------------------
+
+--------------------------------------------------*/
+
+SfxTabPage* SwTableOptionsTabPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return new SwTableOptionsTabPage(pParent, rAttrSet );
+}
+
+/*-----------------18.01.97 12.42-------------------
+
+--------------------------------------------------*/
+
+BOOL SwTableOptionsTabPage::FillItemSet( SfxItemSet& rSet )
+{
+ BOOL bRet = FALSE;
+ SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+
+ if(aRowMoveMF.IsModified())
+ pModOpt->SetTblHMove( (USHORT)aRowMoveMF.Denormalize( aRowMoveMF.GetValue(FUNIT_TWIP)));
+
+ if(aColMoveMF.IsModified())
+ pModOpt->SetTblVMove( (USHORT)aColMoveMF.Denormalize( aColMoveMF.GetValue(FUNIT_TWIP)));
+
+ if(aRowInsertMF.IsModified())
+ pModOpt->SetTblHInsert((USHORT)aRowInsertMF.Denormalize( aRowInsertMF.GetValue(FUNIT_TWIP)));
+
+ if(aColInsertMF.IsModified())
+ pModOpt->SetTblVInsert((USHORT)aColInsertMF.Denormalize( aColInsertMF.GetValue(FUNIT_TWIP)));
+
+ TblChgMode eMode;
+ if(aFixRB.IsChecked())
+ eMode = TBLFIX_CHGABS;
+ else if(aFixPropRB.IsChecked())
+ eMode = TBLFIX_CHGPROP;
+ else
+ eMode = TBLVAR_CHGABS;
+ if(eMode != pModOpt->GetTblMode())
+ {
+ pModOpt->SetTblMode(eMode);
+ // der Tabellen-Tastatur-Modus hat sich geaendert, das soll
+ // jetzt auch die aktuelle Tabelle erfahren
+ if(pWrtShell && SwWrtShell::SEL_TBL & pWrtShell->GetSelectionType())
+ {
+ pWrtShell->SetTblChgMode(eMode);
+ }
+ static USHORT __READONLY_DATA aInva[] =
+ { FN_TABLE_MODE_FIX,
+ FN_TABLE_MODE_FIX_PROP,
+ FN_TABLE_MODE_VARIABLE,
+ 0
+ };
+ pWrtShell->GetView().GetViewFrame()->GetBindings().Invalidate( aInva );
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+/*-----------------18.01.97 12.42-------------------
+
+--------------------------------------------------*/
+
+void SwTableOptionsTabPage::Reset( const SfxItemSet& rSet)
+{
+ const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+ if ( rSet.GetItemState( SID_ATTR_METRIC ) >= SFX_ITEM_AVAILABLE )
+ {
+ const SfxUInt16Item& rItem = (SfxUInt16Item&)rSet.Get( SID_ATTR_METRIC );
+ FieldUnit eFieldUnit = (FieldUnit)rItem.GetValue();
+ ::SetFieldUnit( aRowMoveMF, eFieldUnit );
+ ::SetFieldUnit( aColMoveMF, eFieldUnit );
+ ::SetFieldUnit( aRowInsertMF, eFieldUnit );
+ ::SetFieldUnit( aColInsertMF, eFieldUnit );
+ }
+
+ aRowMoveMF .SetValue(aRowMoveMF.Normalize(pModOpt->GetTblHMove()), FUNIT_TWIP);
+ aColMoveMF .SetValue(aColMoveMF.Normalize(pModOpt->GetTblVMove()), FUNIT_TWIP);
+ aRowInsertMF.SetValue(aRowInsertMF.Normalize(pModOpt->GetTblHInsert()), FUNIT_TWIP);
+ aColInsertMF.SetValue(aColInsertMF.Normalize(pModOpt->GetTblVInsert()), FUNIT_TWIP);
+
+ switch(pModOpt->GetTblMode())
+ {
+ case TBLFIX_CHGABS: aFixRB.Check(); break;
+ case TBLFIX_CHGPROP: aFixPropRB.Check(); break;
+ case TBLVAR_CHGABS: aVarRB.Check(); break;
+ }
+}
+/*-----------------19.04.97 13:20-------------------
+
+--------------------------------------------------*/
+SwSourceViewOptionsTabPage::SwSourceViewOptionsTabPage(
+ Window* pParent, const SfxItemSet& rSet ) :
+ SfxTabPage(pParent, SW_RES(TP_OPTSRCVIEW), rSet),
+ aColorGB(this, ResId(GB_COLOR )),
+ aSGMLFT(this, ResId(FT_SGML )),
+ aSGMLLB(this, ResId(LB_SGML )),
+ aCommentFT(this, ResId(FT_COMMENT)),
+ aCommentLB(this, ResId(LB_COMMENT)),
+ aKeywdFT(this, ResId(FT_KEYWD )),
+ aKeywdLB(this, ResId(LB_KEYWD )),
+ aUnknownFT(this, ResId(FT_UNKNOWN)),
+ aUnknownLB(this, ResId(LB_UNKNOWN))
+{
+ FreeResource();
+ String sSGML ;
+ String sComment ;
+ String sKeywd ;
+ String sUnknown ;
+
+ XColorTable* pColorTbl = OFF_APP()->GetStdColorTable();
+ SwSrcViewConfig* pSrcVwCfg = SW_MOD()->GetSourceViewConfig();
+ USHORT nCount = (USHORT)pColorTbl->Count();
+ aSGMLLB .SetUpdateMode(FALSE);
+ aCommentLB .SetUpdateMode(FALSE);
+ aKeywdLB .SetUpdateMode(FALSE);
+ aUnknownLB .SetUpdateMode(FALSE);
+
+ Color aTmpColSGML(pSrcVwCfg->GetSyntaxColor(SRC_SYN_SGML));
+ Color aTmpColComment(pSrcVwCfg->GetSyntaxColor(SRC_SYN_COMMENT));
+ Color aTmpColKey(pSrcVwCfg->GetSyntaxColor(SRC_SYN_KEYWRD));
+ Color aTmpColUnknown(pSrcVwCfg->GetSyntaxColor(SRC_SYN_UNKNOWN));
+
+ for(USHORT i = 0; i < nCount; i++)
+ {
+ XColorEntry* pEntry = pColorTbl->Get(i);
+ Color aColor = pEntry->GetColor();
+ String sName = pEntry->GetName();
+ if(aColor == aTmpColSGML )
+ sSGML = sName;
+ if(aColor == aTmpColComment )
+ sComment = sName;
+ if(aColor == aTmpColKey )
+ sKeywd = sName;
+ if(aColor == aTmpColUnknown )
+ sUnknown = sName;
+ aSGMLLB .InsertEntry(aColor, sName);
+ aCommentLB .InsertEntry(aColor, sName);
+ aKeywdLB .InsertEntry(aColor, sName);
+ aUnknownLB .InsertEntry(aColor, sName);
+ }
+ aSGMLLB .SetUpdateMode(TRUE);
+ aCommentLB .SetUpdateMode(TRUE);
+ aKeywdLB .SetUpdateMode(TRUE);
+ aUnknownLB .SetUpdateMode(TRUE);
+ aSGMLLB .SelectEntry(sSGML );
+ aCommentLB .SelectEntry(sComment );
+ aKeywdLB .SelectEntry(sKeywd );
+ aUnknownLB .SelectEntry(sUnknown );
+
+}
+
+/*-----------------19.04.97 13:22-------------------
+
+--------------------------------------------------*/
+SwSourceViewOptionsTabPage::~SwSourceViewOptionsTabPage()
+{
+}
+
+/*-----------------19.04.97 13:22-------------------
+
+--------------------------------------------------*/
+SfxTabPage* SwSourceViewOptionsTabPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return new SwSourceViewOptionsTabPage(pParent, rAttrSet);
+}
+
+/*-----------------19.04.97 13:23-------------------
+
+--------------------------------------------------*/
+BOOL SwSourceViewOptionsTabPage::FillItemSet( SfxItemSet& rSet )
+{
+ SwSrcViewConfig* pSrcVwCfg = SW_MOD()->GetSourceViewConfig();
+ BOOL bModified = FALSE;
+ if(aSGMLLB.GetSelectEntry().Len() &&
+ !aSGMLLB.GetSelectEntryColor().IsRGBEqual(pSrcVwCfg->GetSyntaxColor(SRC_SYN_SGML)))
+ {
+ bModified = TRUE;
+ pSrcVwCfg->SetSyntaxColor(SRC_SYN_SGML, aSGMLLB.GetSelectEntryColor());
+ }
+ if(aCommentLB.GetSelectEntry().Len() &&
+ !aCommentLB.GetSelectEntryColor().IsRGBEqual(pSrcVwCfg->GetSyntaxColor(SRC_SYN_COMMENT)))
+ {
+ bModified = TRUE;
+ pSrcVwCfg->SetSyntaxColor(SRC_SYN_COMMENT, aCommentLB.GetSelectEntryColor());
+ }
+ if(aKeywdLB.GetSelectEntry().Len() &&
+ !aKeywdLB.GetSelectEntryColor().IsRGBEqual(pSrcVwCfg->GetSyntaxColor(SRC_SYN_KEYWRD)))
+ {
+ bModified = TRUE;
+ pSrcVwCfg->SetSyntaxColor(SRC_SYN_KEYWRD, aKeywdLB.GetSelectEntryColor());
+ }
+ if(aUnknownLB.GetSelectEntry().Len() &&
+ !aUnknownLB.GetSelectEntryColor().IsRGBEqual(pSrcVwCfg->GetSyntaxColor(SRC_SYN_UNKNOWN)))
+ {
+ bModified = TRUE;
+ pSrcVwCfg->SetSyntaxColor(SRC_SYN_UNKNOWN, aUnknownLB.GetSelectEntryColor());
+ }
+ if(bModified)
+ {
+ TypeId aType(TYPE(SwSrcView));
+ SfxViewShell* pShell = SfxViewShell::GetFirst(&aType);
+ while( pShell )
+ {
+ ((SwSrcView*)pShell)->GetEditWin().SyntaxColorsChanged();
+ pShell = SfxViewShell::GetNext(*pShell, &aType);
+ }
+
+ }
+ return FALSE;
+}
+
+/*-----------------19.04.97 13:23-------------------
+
+--------------------------------------------------*/
+void SwSourceViewOptionsTabPage::Reset( const SfxItemSet& rSet )
+{
+ SwSrcViewConfig* pSrcVwCfg = SW_MOD()->GetSourceViewConfig();
+
+ aSGMLLB .SelectEntry( pSrcVwCfg->GetSyntaxColor(SRC_SYN_SGML) );
+ aCommentLB .SelectEntry( pSrcVwCfg->GetSyntaxColor(SRC_SYN_COMMENT) );
+ aKeywdLB .SelectEntry( pSrcVwCfg->GetSyntaxColor(SRC_SYN_KEYWRD) );
+ aUnknownLB .SelectEntry( pSrcVwCfg->GetSyntaxColor(SRC_SYN_UNKNOWN) );
+}
+
+/* */
+
+/*-----------------31.10.97 17:55-------------------
+ TabPage fuer ShadowCrsr
+--------------------------------------------------*/
+
+SwShdwCrsrOptionsTabPage::SwShdwCrsrOptionsTabPage( Window* pParent,
+ const SfxItemSet& rSet )
+ : SfxTabPage(pParent, SW_RES(TP_OPTSHDWCRSR), rSet),
+ aFlagGB( this, SW_RES( GB_SHDWCRSFLAG )),
+ aOnOffCB( this, SW_RES( CB_SHDWCRSONOFF )),
+ aFillModeFT( this, SW_RES( FT_SHDWCRSFILLMODE )),
+ aFillMarginRB( this, SW_RES( RB_SHDWCRSFILLMARGIN )),
+ aFillIndentRB( this, SW_RES( RB_SHDWCRSFILLINDENT )),
+ aFillTabRB( this, SW_RES( RB_SHDWCRSFILLTAB )),
+ aFillSpaceRB( this, SW_RES( RB_SHDWCRSFILLSPACE )),
+// aColorGB( this, SW_RES( GB_SHDWCRSCOLOR )),
+ aColorFT( this, SW_RES( FT_SHDWCRSCOLOR )),
+ aColorLB( this, SW_RES( LB_SHDWCRSCOLOR )),
+ aCrsrOptGB ( this, SW_RES( GB_CRSR_OPT)),
+ aCrsrInProtCB( this, SW_RES( CB_ALLOW_IN_PROT ))
+{
+ FreeResource();
+
+ const SfxPoolItem* pItem = 0;
+ SwShadowCursorItem aOpt;
+
+ if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, FALSE, &pItem ))
+ aOpt = *(SwShadowCursorItem*)pItem;
+
+ aOnOffCB.Check( aOpt.IsOn() );
+
+ BYTE eMode = aOpt.GetMode();
+ aFillIndentRB.Check( FILL_INDENT == eMode );
+ aFillMarginRB.Check( FILL_MARGIN == eMode );
+ aFillTabRB.Check( FILL_TAB == eMode );
+ aFillSpaceRB.Check( FILL_SPACE == eMode );
+
+ const Color& rShdwCol = aOpt.GetColor();
+
+ String sColor;
+ aColorLB.SetUpdateMode(FALSE);
+
+ XColorTable* pColorTbl = OFF_APP()->GetStdColorTable();
+ for( USHORT i = 0; i < pColorTbl->Count(); ++i )
+ {
+ XColorEntry* pEntry = pColorTbl->Get( i );
+ Color aColor = pEntry->GetColor();
+ String sName = pEntry->GetName();
+ if( aColor == rShdwCol )
+ sColor = sName;
+ aColorLB.InsertEntry( aColor, sName );
+ }
+ aColorLB.SetUpdateMode( TRUE );
+ aColorLB.SelectEntry( sColor );
+}
+
+SwShdwCrsrOptionsTabPage::~SwShdwCrsrOptionsTabPage()
+{
+}
+
+
+SfxTabPage* SwShdwCrsrOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet )
+{
+ return new SwShdwCrsrOptionsTabPage( pParent, rSet );
+}
+
+BOOL SwShdwCrsrOptionsTabPage::FillItemSet( SfxItemSet& rSet )
+{
+ SwShadowCursorItem aOpt;
+ aOpt.SetOn( aOnOffCB.IsChecked() );
+
+ BYTE eMode;
+ if( aFillIndentRB.IsChecked() )
+ eMode= FILL_INDENT;
+ else if( aFillMarginRB.IsChecked() )
+ eMode = FILL_MARGIN;
+ else if( aFillTabRB.IsChecked() )
+ eMode = FILL_TAB;
+ else
+ eMode = FILL_SPACE;
+ aOpt.SetMode( eMode );
+ aOpt.SetColor( aColorLB.GetSelectEntryColor() );
+
+ BOOL bRet = FALSE;
+ const SfxPoolItem* pItem = 0;
+ if( SFX_ITEM_SET != rSet.GetItemState( FN_PARAM_SHADOWCURSOR, FALSE, &pItem )
+ || ((SwShadowCursorItem&)*pItem) != aOpt )
+ {
+ rSet.Put( aOpt );
+ bRet = TRUE;
+ }
+
+ if( aCrsrInProtCB.IsChecked() != aCrsrInProtCB.GetSavedValue())
+ {
+ rSet.Put(SfxBoolItem(FN_PARAM_CRSR_IN_PROTECTED, aCrsrInProtCB.IsChecked()));
+ bRet |= TRUE;
+ }
+
+ return bRet;
+}
+
+void SwShdwCrsrOptionsTabPage::Reset( const SfxItemSet& rSet )
+{
+ const SfxPoolItem* pItem = 0;
+ SwShadowCursorItem aOpt;
+
+ if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, FALSE, &pItem ))
+ aOpt = *(SwShadowCursorItem*)pItem;
+
+ aOnOffCB.Check( aOpt.IsOn() );
+
+ BYTE eMode = aOpt.GetMode();
+ aFillIndentRB.Check( FILL_INDENT == eMode );
+ aFillMarginRB.Check( FILL_MARGIN == eMode );
+ aFillTabRB.Check( FILL_TAB == eMode );
+ aFillSpaceRB.Check( FILL_SPACE == eMode );
+
+ aColorLB.SelectEntry( aOpt.GetColor() );
+
+ if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_CRSR_IN_PROTECTED, FALSE, &pItem ))
+ aCrsrInProtCB.Check(((const SfxBoolItem*)pItem)->GetValue());
+ aCrsrInProtCB.SaveValue();
+}
+
+/*-----------------31.10.97 17:55-------------------
+ TabPage fuer Redlining
+--------------------------------------------------*/
+
+struct CharAttr
+{
+ USHORT nItemId;
+ USHORT nAttr;
+};
+
+// Editieren entspricht Einfuegen-Attributen
+static CharAttr __FAR_DATA aInsertAttr[] =
+{
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_NOT_MAPPED,
+ SID_ATTR_CHAR_WEIGHT, WEIGHT_BOLD,
+ SID_ATTR_CHAR_POSTURE, ITALIC_NORMAL,
+ SID_ATTR_CHAR_UNDERLINE, UNDERLINE_SINGLE,
+ SID_ATTR_CHAR_UNDERLINE, UNDERLINE_DOUBLE,
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_VERSALIEN,
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_GEMEINE,
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_KAPITAELCHEN,
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_TITEL,
+ SID_ATTR_BRUSH, 0,
+};
+
+static CharAttr __FAR_DATA aDeletedAttr[] =
+{
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_NOT_MAPPED,
+ SID_ATTR_CHAR_WEIGHT, WEIGHT_BOLD,
+ SID_ATTR_CHAR_POSTURE, ITALIC_NORMAL,
+ SID_ATTR_CHAR_STRIKEOUT, STRIKEOUT_SINGLE,
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_VERSALIEN,
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_GEMEINE,
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_KAPITAELCHEN,
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_TITEL,
+ SID_ATTR_BRUSH, 0,
+};
+
+static CharAttr __FAR_DATA aChangedAttr[] =
+{
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_NOT_MAPPED,
+ SID_ATTR_CHAR_WEIGHT, WEIGHT_BOLD,
+ SID_ATTR_CHAR_POSTURE, ITALIC_NORMAL,
+ SID_ATTR_CHAR_UNDERLINE, UNDERLINE_SINGLE,
+ SID_ATTR_CHAR_UNDERLINE, UNDERLINE_DOUBLE,
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_VERSALIEN,
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_GEMEINE,
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_KAPITAELCHEN,
+ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_TITEL,
+ SID_ATTR_BRUSH, 0,
+};
+
+/*-----------------------------------------------------------------------
+ Beschreibung: Markierungsvorschau
+ -----------------------------------------------------------------------*/
+
+SwMarkPreview::SwMarkPreview( Window *pParent, const ResId& rResID ) :
+
+ Window(pParent, rResID),
+
+ aTransColor (COL_TRANSPARENT),
+ aMarkColor (COL_LIGHTRED),
+
+ nMarkPos(0)
+
+{
+ SetMapMode(MAP_PIXEL);
+
+ const Size aSz(GetOutputSizePixel());
+
+ // Seite
+ aPage.SetSize(Size(aSz.Width() - 3, aSz.Height() - 3));
+
+ ULONG nOutWPix = aPage.GetWidth();
+ ULONG nOutHPix = aPage.GetHeight();
+
+ // PrintArea
+ ULONG nLBorder = 8;
+ ULONG nRBorder = 8;
+ ULONG nTBorder = 4;
+ ULONG nBBorder = 4;
+
+ aLeftPagePrtArea = Rectangle(Point(nLBorder, nTBorder), Point((nOutWPix - 1) - nRBorder, (nOutHPix - 1) - nBBorder));
+ USHORT nWidth = (USHORT)aLeftPagePrtArea.GetWidth();
+ USHORT nKorr = (nWidth & 1) != 0 ? 0 : 1;
+ aLeftPagePrtArea.SetSize(Size(nWidth / 2 - (nLBorder + nRBorder) / 2 + nKorr, aLeftPagePrtArea.GetHeight()));
+
+ aRightPagePrtArea = aLeftPagePrtArea;
+ aRightPagePrtArea.Move(aLeftPagePrtArea.GetWidth() + nLBorder + nRBorder + 1, 0);
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+SwMarkPreview::~SwMarkPreview()
+{
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+void SwMarkPreview::Paint(const Rectangle &rRect)
+{
+ // Schatten zeichnen
+ Rectangle aShadow(aPage);
+ aShadow += Point(3, 3);
+ DrawRect(aShadow, Color(COL_GRAY), aTransColor);
+
+ // Seite zeichnen
+ DrawRect(aPage, Color(COL_WHITE), Color(COL_BLACK));
+
+ // Separator zeichnen
+ Rectangle aPageSeparator(aPage);
+ aPageSeparator.SetSize(Size(2, aPageSeparator.GetHeight()));
+ aPageSeparator.Move(aPage.GetWidth() / 2 - 1, 0);
+ DrawRect(aPageSeparator, Color(COL_BLACK), aTransColor);
+
+ PaintPage(aLeftPagePrtArea);
+ PaintPage(aRightPagePrtArea);
+
+ Rectangle aLeftMark(Point(aPage.Left() + 2, aLeftPagePrtArea.Top() + 4), Size(aLeftPagePrtArea.Left() - 4, 2));
+ Rectangle aRightMark(Point(aRightPagePrtArea.Right() + 2, aRightPagePrtArea.Bottom() - 6), Size(aLeftPagePrtArea.Left() - 4, 2));
+
+ switch (nMarkPos)
+ {
+ case 1: // Links
+ aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
+ break;
+
+ case 2: // Rechts
+ aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
+ break;
+
+ case 3: // Aussen
+ break;
+
+ case 4: // Innen
+ aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
+ aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
+ break;
+
+ case 0: // Keine
+ default:
+ return;
+ }
+ DrawRect(aLeftMark, aMarkColor, aTransColor);
+ DrawRect(aRightMark, aMarkColor, aTransColor);
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+void SwMarkPreview::PaintPage(const Rectangle &rRect)
+{
+ // PrintArea zeichnen
+ DrawRect(rRect, aTransColor, Color(COL_GRAY));
+
+ // Testabsatz zeichnen
+ ULONG nLTxtBorder = 4;
+ ULONG nRTxtBorder = 4;
+ ULONG nTTxtBorder = 4;
+
+ Rectangle aTextLine = rRect;
+ aTextLine.SetSize(Size(aTextLine.GetWidth(), 2));
+ aTextLine.Left() += nLTxtBorder;
+ aTextLine.Right() -= nRTxtBorder;
+ aTextLine.Move(0, nTTxtBorder);
+
+ USHORT nStep, nLines;
+ const long nTxtLineHeight = aTextLine.GetHeight();
+
+ nStep = aTextLine.GetHeight() + 2;
+ nLines = (USHORT)(rRect.GetHeight() / (aTextLine.GetHeight() + 2)) - 1;
+
+ // Text simulieren
+ //
+ for (USHORT i = 0; i < nLines; ++i)
+ {
+ if (i == (nLines - 1))
+ aTextLine.SetSize(Size(aTextLine.GetWidth() / 2, aTextLine.GetHeight()));
+
+ if (aPage.IsInside(aTextLine))
+ DrawRect(aTextLine, Color(COL_GRAY), aTransColor);
+
+ aTextLine.Move(0, nStep);
+ }
+ aTextLine.Move(0, -nStep);
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+void SwMarkPreview::DrawRect(const Rectangle &rRect, const Color &rFillColor, const Color &rLineColor)
+{
+ SetFillColor(rFillColor);
+ SetLineColor(rLineColor);
+ Window::DrawRect(rRect);
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+SwRedlineOptionsTabPage::SwRedlineOptionsTabPage( Window* pParent,
+ const SfxItemSet& rSet )
+ : SfxTabPage(pParent, SW_RES(TP_REDLINE_OPT), rSet),
+
+ aInsertRB ( this, SW_RES( RB_INSERT )),
+ aDeletedRB ( this, SW_RES( RB_DELETED )),
+ aChangedRB ( this, SW_RES( RB_CHANGED )),
+
+ aInsertFT ( this, SW_RES( FT_TE_ATTRIB )),
+ aInsertLB ( this, SW_RES( LB_TE_ATTRIB )),
+ aDeletedLB ( this, SW_RES( LB_TL_ATTRIB )),
+ aChangedLB ( this, SW_RES( LB_TC_ATTRIB )),
+
+ aInsertColorFT ( this, SW_RES( FT_TE_COL )),
+ aInsertColorLB ( this, SW_RES( LB_TE_COL )),
+ aDeletedColorLB ( this, SW_RES( LB_TL_COL )),
+ aChangedColorLB ( this, SW_RES( LB_TC_COL )),
+
+ aAttribPreviewWN ( this, SW_RES( WIN_TE )),
+ aInsertGB ( this, SW_RES( GB_TE )),
+
+ aMarkPosFT ( this, SW_RES( FT_MARKPOS )),
+ aMarkPosLB ( this, SW_RES( LB_MARKPOS )),
+ aMarkColorFT ( this, SW_RES( FT_LC_COL )),
+ aMarkColorLB ( this, SW_RES( LB_LC_COL )),
+ aMarkPreviewWN ( this, SW_RES( WIN_MARK )),
+ aChangedGB ( this, SW_RES( GB_LC )),
+ sAuthor ( SW_RES( STR_AUTHOR )),
+ sNone ( SW_RES( STR_NOTHING ))
+
+{
+ FreeResource();
+
+ Link aLk = LINK(this, SwRedlineOptionsTabPage, RadioHdl);
+ aInsertRB.SetClickHdl( aLk );
+ aDeletedRB.SetClickHdl( aLk );
+ aChangedRB.SetClickHdl( aLk );
+
+ aLk = LINK(this, SwRedlineOptionsTabPage, AttribHdl);
+ aInsertLB.SetSelectHdl( aLk );
+ aDeletedLB.SetSelectHdl( aLk );
+ aChangedLB.SetSelectHdl( aLk );
+
+ aLk = LINK(this, SwRedlineOptionsTabPage, ColorHdl);
+ aInsertColorLB.SetSelectHdl( aLk );
+ aDeletedColorLB.SetSelectHdl( aLk );
+ aChangedColorLB.SetSelectHdl( aLk );
+
+ aLk = LINK(this, SwRedlineOptionsTabPage, ChangedMaskPrevHdl);
+ aMarkPosLB.SetSelectHdl( aLk );
+ aMarkColorLB.SetSelectHdl( aLk );
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+SwRedlineOptionsTabPage::~SwRedlineOptionsTabPage()
+{
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+SfxTabPage* SwRedlineOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet )
+{
+ return new SwRedlineOptionsTabPage( pParent, rSet );
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+BOOL SwRedlineOptionsTabPage::FillItemSet( SfxItemSet& rSet )
+{
+ CharAttr *pAttr;
+ SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
+
+ AuthorCharAttr aInsertAttr;
+ AuthorCharAttr aDeletedAttr;
+ AuthorCharAttr aChangedAttr;
+
+ AuthorCharAttr aOldInsertAttr(pOpt->GetInsertAuthorAttr());
+ AuthorCharAttr aOldDeletedAttr(pOpt->GetDeletedAuthorAttr());
+ AuthorCharAttr aOldChangedAttr(pOpt->GetFormatAuthorAttr());
+
+ ULONG nOldMarkColor = pOpt->GetMarkAlignColor().GetColor();
+ USHORT nOldMarkMode = pOpt->GetMarkAlignMode();
+
+ USHORT nPos = aInsertLB.GetSelectEntryPos();
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ pAttr = (CharAttr *)aInsertLB.GetEntryData(nPos);
+ aInsertAttr.nItemId = pAttr->nItemId;
+ aInsertAttr.nAttr = pAttr->nAttr;
+
+ nPos = aInsertColorLB.GetSelectEntryPos();
+
+ switch (nPos)
+ {
+ case 0:
+ aInsertAttr.nColor = COL_NONE;
+ break;
+ case 1:
+ case LISTBOX_ENTRY_NOTFOUND:
+ aInsertAttr.nColor = COL_TRANSPARENT;
+ break;
+ default:
+ aInsertAttr.nColor = aInsertColorLB.GetEntryColor(nPos).GetColor();
+ break;
+ }
+
+ pOpt->SetInsertAuthorAttr(aInsertAttr);
+ }
+
+ nPos = aDeletedLB.GetSelectEntryPos();
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ pAttr = (CharAttr *)aDeletedLB.GetEntryData(nPos);
+ aDeletedAttr.nItemId = pAttr->nItemId;
+ aDeletedAttr.nAttr = pAttr->nAttr;
+
+ nPos = aDeletedColorLB.GetSelectEntryPos();
+
+ switch (nPos)
+ {
+ case 0:
+ aDeletedAttr.nColor = COL_NONE;
+ break;
+ case 1:
+ case LISTBOX_ENTRY_NOTFOUND:
+ aDeletedAttr.nColor = COL_TRANSPARENT;
+ break;
+ default:
+ aDeletedAttr.nColor = aDeletedColorLB.GetEntryColor(nPos).GetColor();
+ break;
+ }
+
+ pOpt->SetDeletedAuthorAttr(aDeletedAttr);
+ }
+
+ nPos = aChangedLB.GetSelectEntryPos();
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ pAttr = (CharAttr *)aChangedLB.GetEntryData(nPos);
+ aChangedAttr.nItemId = pAttr->nItemId;
+ aChangedAttr.nAttr = pAttr->nAttr;
+
+ nPos = aChangedColorLB.GetSelectEntryPos();
+
+ switch (nPos)
+ {
+ case 0:
+ aChangedAttr.nColor = COL_NONE;
+ break;
+ case 1:
+ case LISTBOX_ENTRY_NOTFOUND:
+ aChangedAttr.nColor = COL_TRANSPARENT;
+ break;
+ default:
+ aChangedAttr.nColor = aChangedColorLB.GetEntryColor(nPos).GetColor();
+ break;
+ }
+
+ pOpt->SetFormatAuthorAttr(aChangedAttr);
+ }
+
+ nPos = 0;
+ switch (aMarkPosLB.GetSelectEntryPos())
+ {
+ case 0: nPos = HORI_NONE; break;
+ case 1: nPos = HORI_LEFT; break;
+ case 2: nPos = HORI_RIGHT; break;
+ case 3: nPos = HORI_OUTSIDE; break;
+ case 4: nPos = HORI_INSIDE; break;
+ }
+ pOpt->SetMarkAlignMode(nPos);
+
+ pOpt->SetMarkAlignColor(aMarkColorLB.GetSelectEntryColor());
+
+ if (!(aInsertAttr == aOldInsertAttr) ||
+ !(aDeletedAttr == aOldDeletedAttr) ||
+ !(aChangedAttr == aOldChangedAttr) ||
+ nOldMarkColor != pOpt->GetMarkAlignColor().GetColor() ||
+ nOldMarkMode != pOpt->GetMarkAlignMode())
+ {
+ // Alle Dokumente aktualisieren
+ TypeId aType(TYPE(SwDocShell));
+ SwDocShell* pDocShell = (SwDocShell*)SfxObjectShell::GetFirst(&aType);
+
+ while( pDocShell )
+ {
+ pDocShell->GetWrtShell()->UpdateRedlineAttr();
+ pDocShell = (SwDocShell*)SfxObjectShell::GetNext(*pDocShell, &aType);
+ }
+ }
+
+ return FALSE;
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+void SwRedlineOptionsTabPage::Reset( const SfxItemSet& rSet )
+{
+ const SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
+
+ const AuthorCharAttr &rInsertAttr = pOpt->GetInsertAuthorAttr();
+ const AuthorCharAttr &rDeletedAttr = pOpt->GetDeletedAuthorAttr();
+ const AuthorCharAttr &rChangedAttr = pOpt->GetFormatAuthorAttr();
+
+ // Preview initialisieren
+ InitFontStyle(aAttribPreviewWN);
+
+ // Farblistboxen initialisieren
+ String sColor;
+ aInsertColorLB.SetUpdateMode(FALSE);
+ aDeletedColorLB.SetUpdateMode(FALSE);
+ aChangedColorLB.SetUpdateMode(FALSE);
+ aMarkColorLB.SetUpdateMode(FALSE);
+
+ aInsertColorLB.InsertEntry(sNone);
+ aDeletedColorLB.InsertEntry(sNone);
+ aChangedColorLB.InsertEntry(sNone);
+
+ aInsertColorLB.InsertEntry(sAuthor);
+ aDeletedColorLB.InsertEntry(sAuthor);
+ aChangedColorLB.InsertEntry(sAuthor);
+
+ XColorTable* pColorTbl = OFF_APP()->GetStdColorTable();
+ for( USHORT i = 0; i < pColorTbl->Count(); ++i )
+ {
+ XColorEntry* pEntry = pColorTbl->Get( i );
+ Color aColor = pEntry->GetColor();
+ String sName = pEntry->GetName();
+
+ aInsertColorLB.InsertEntry( aColor, sName );
+ aDeletedColorLB.InsertEntry( aColor, sName );
+ aChangedColorLB.InsertEntry( aColor, sName );
+ aMarkColorLB.InsertEntry( aColor, sName );
+ }
+ aInsertColorLB.SetUpdateMode( TRUE );
+ aDeletedColorLB.SetUpdateMode( TRUE );
+ aChangedColorLB.SetUpdateMode( TRUE );
+ aMarkColorLB.SetUpdateMode( TRUE );
+
+ ULONG nColor = rInsertAttr.nColor;
+
+ switch (nColor)
+ {
+ case COL_TRANSPARENT:
+ aInsertColorLB.SelectEntryPos(1);
+ break;
+ case COL_NONE:
+ aInsertColorLB.SelectEntryPos(0);
+ break;
+ default:
+ aInsertColorLB.SelectEntry(Color(nColor));
+ }
+
+ nColor = rDeletedAttr.nColor;
+
+ switch (nColor)
+ {
+ case COL_TRANSPARENT:
+ aDeletedColorLB.SelectEntryPos(1);
+ break;
+ case COL_NONE:
+ aDeletedColorLB.SelectEntryPos(0);
+ break;
+ default:
+ aDeletedColorLB.SelectEntry(Color(nColor));
+ }
+
+ nColor = rChangedAttr.nColor;
+
+ switch (nColor)
+ {
+ case COL_TRANSPARENT:
+ aChangedColorLB.SelectEntryPos(1);
+ break;
+ case COL_NONE:
+ aChangedColorLB.SelectEntryPos(0);
+ break;
+ default:
+ aChangedColorLB.SelectEntry(Color(nColor));
+ }
+
+ aMarkColorLB.SelectEntry(pOpt->GetMarkAlignColor());
+
+ // Attributlistboxen initialisieren
+ USHORT nNum = sizeof(aInsertAttr) / sizeof(CharAttr);
+
+ for (i = 0; i < nNum; i++)
+ {
+ aInsertLB.SetEntryData(i, &aInsertAttr[i]);
+ if (aInsertAttr[i].nItemId == rInsertAttr.nItemId &&
+ aInsertAttr[i].nAttr == rInsertAttr.nAttr)
+ aInsertLB.SelectEntryPos(i);
+ }
+
+ nNum = sizeof(aDeletedAttr) / sizeof(CharAttr);
+ for (i = 0; i < nNum; i++)
+ {
+ aDeletedLB.SetEntryData(i, &aDeletedAttr[i]);
+ if (aDeletedAttr[i].nItemId == rDeletedAttr.nItemId &&
+ aDeletedAttr[i].nAttr == rDeletedAttr.nAttr)
+ aDeletedLB.SelectEntryPos(i);
+ }
+
+ nNum = sizeof(aChangedAttr) / sizeof(CharAttr);
+ for (i = 0; i < nNum; i++)
+ {
+ aChangedLB.SetEntryData(i, &aChangedAttr[i]);
+ if (aChangedAttr[i].nItemId == rChangedAttr.nItemId &&
+ aChangedAttr[i].nAttr == rChangedAttr.nAttr)
+ aChangedLB.SelectEntryPos(i);
+ }
+
+ USHORT nPos = 0;
+ switch (pOpt->GetMarkAlignMode())
+ {
+ case HORI_NONE: nPos = 0; break;
+ case HORI_LEFT: nPos = 1; break;
+ case HORI_RIGHT: nPos = 2; break;
+ case HORI_OUTSIDE: nPos = 3; break;
+ case HORI_INSIDE: nPos = 4; break;
+ }
+ aMarkPosLB.SelectEntryPos(nPos);
+
+ // Einstellungen in Preview anzeigen
+ AttribHdl(&aInsertLB);
+ ColorHdl(&aInsertColorLB);
+
+ ChangedMaskPrevHdl();
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineOptionsTabPage, AttribHdl, ListBox *, pLB )
+{
+ SvxFontPrevWindow *pPrev = &aAttribPreviewWN;
+ ColorListBox *pColorLB;
+
+ if (pLB == &aInsertLB)
+ pColorLB = &aInsertColorLB;
+ else if (pLB == &aDeletedLB)
+ pColorLB = &aDeletedColorLB;
+ else
+ pColorLB = &aChangedColorLB;
+
+ SvxFont& rFont = pPrev->GetFont();
+ rFont.SetWeight(WEIGHT_NORMAL);
+ rFont.SetItalic(ITALIC_NONE);
+ rFont.SetUnderline(UNDERLINE_NONE);
+ rFont.SetStrikeout(STRIKEOUT_NONE);
+ rFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
+ pPrev->SetColor(Color(COL_WHITE));
+
+ USHORT nPos = pColorLB->GetSelectEntryPos();
+
+ switch (nPos)
+ {
+ case 0:
+ rFont.SetColor(Color(COL_BLACK));
+ break;
+ case 1:
+ case LISTBOX_ENTRY_NOTFOUND:
+ rFont.SetColor(Color(COL_RED));
+ break;
+ default:
+ rFont.SetColor(pColorLB->GetEntryColor(nPos));
+ break;
+ }
+
+ nPos = pLB->GetSelectEntryPos();
+ if (nPos == LISTBOX_ENTRY_NOTFOUND)
+ nPos = 0;
+
+ CharAttr *pAttr = (CharAttr *)pLB->GetEntryData(nPos);
+
+ switch (pAttr->nItemId)
+ {
+ case SID_ATTR_CHAR_WEIGHT:
+ rFont.SetWeight((FontWeight)pAttr->nAttr);
+ break;
+
+ case SID_ATTR_CHAR_POSTURE:
+ rFont.SetItalic((FontItalic)pAttr->nAttr);
+ break;
+
+ case SID_ATTR_CHAR_UNDERLINE:
+ rFont.SetUnderline((FontUnderline)pAttr->nAttr);
+ break;
+
+ case SID_ATTR_CHAR_STRIKEOUT:
+ rFont.SetStrikeout((FontStrikeout)pAttr->nAttr);
+ break;
+
+ case SID_ATTR_CHAR_CASEMAP:
+ rFont.SetCaseMap((SvxCaseMap)pAttr->nAttr);
+ break;
+
+ case SID_ATTR_BRUSH:
+ {
+ nPos = pColorLB->GetSelectEntryPos();
+ if (nPos)
+ {
+ pPrev->SetColor(pColorLB->GetSelectEntryColor());
+ }
+ else
+ {
+ pPrev->SetColor(Color(COL_LIGHTGRAY));
+ }
+ rFont.SetColor(Color(COL_BLACK));
+ }
+ break;
+ }
+
+ pPrev->Invalidate();
+
+ return 0;
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineOptionsTabPage, ColorHdl, ColorListBox *, pColorLB )
+{
+ SvxFontPrevWindow *pPrev = &aAttribPreviewWN;
+ ListBox *pLB;
+
+ if (pColorLB == &aInsertColorLB)
+ pLB = &aInsertLB;
+ else if (pColorLB == &aDeletedColorLB)
+ pLB = &aDeletedLB;
+ else
+ pLB = &aChangedLB;
+
+ 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)
+ {
+ pPrev->SetColor(pColorLB->GetSelectEntryColor());
+ }
+ else
+ {
+ pPrev->SetColor(Color(COL_LIGHTGRAY));
+ }
+ }
+ else
+ {
+ nPos = pColorLB->GetSelectEntryPos();
+
+ switch (nPos)
+ {
+ case 0:
+ rFont.SetColor(Color(COL_BLACK));
+ break;
+ case 1:
+ case LISTBOX_ENTRY_NOTFOUND:
+ rFont.SetColor(Color(COL_RED));
+ break;
+ default:
+ rFont.SetColor(pColorLB->GetEntryColor(nPos));
+ break;
+ }
+ }
+
+ pPrev->Invalidate();
+
+ return 0;
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineOptionsTabPage, ChangedMaskPrevHdl, ListBox *, pLB )
+{
+ aMarkPreviewWN.SetMarkPos(aMarkPosLB.GetSelectEntryPos());
+ aMarkPreviewWN.SetColor(aMarkColorLB.GetSelectEntryColor().GetColor());
+
+ aMarkPreviewWN.Invalidate();
+
+ return 0;
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineOptionsTabPage, RadioHdl, RadioButton *, pRB )
+{
+ BOOL bInsert = FALSE, bDeleted = FALSE, bChanged = FALSE;
+
+ if (pRB == &aInsertRB)
+ {
+ AttribHdl(&aInsertLB);
+ bInsert = TRUE;
+ }
+ else if (pRB == &aDeletedRB)
+ {
+ AttribHdl(&aDeletedLB);
+ bDeleted = TRUE;
+ }
+ else if (pRB == &aChangedRB)
+ {
+ AttribHdl(&aChangedLB);
+ bChanged = TRUE;
+ }
+
+ aInsertLB.Show(bInsert);
+ aInsertColorLB.Show(bInsert);
+ aDeletedLB.Show(bDeleted);
+ aDeletedColorLB.Show(bDeleted);
+ aChangedLB.Show(bChanged);
+ aChangedColorLB.Show(bChanged);
+
+ return 0;
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+void SwRedlineOptionsTabPage::InitFontStyle(SvxFontPrevWindow& rExampleWin)
+{
+ SvxFont& rFont = rExampleWin.GetFont();
+
+ Font aFont;
+ aFont.SetCharSet( gsl_getSystemTextEncoding() );
+ aFont.SetSize( Size( 0, 12 ) );
+ aFont.SetPitch( PITCH_VARIABLE );
+
+ aFont.SetName( C2S("Times") );
+ aFont.SetFamily( FAMILY_ROMAN );
+
+// Font aFont = System::GetStandardFont(STDFONT_ROMAN);
+ aFont.SetFillColor(Color(COL_WHITE));
+ aFont.SetWeight(WEIGHT_NORMAL);
+
+ rFont = aFont;
+ const Size aLogSize( rExampleWin.GetOutputSize() );
+ rFont.SetSize(Size(0, aLogSize.Height() * 2 / 3));
+ rExampleWin.SetFont(rFont);
+ rExampleWin.UseResourceText();
+
+ Color aWhiteColor = COL_WHITE;
+ Wallpaper aWall(aWhiteColor);
+// Wallpaper aWall(Color( COL_WHITE ));
+ rExampleWin.SetBackground(aWall);
+ rExampleWin.Invalidate();
+}
+
+
+#ifndef PRODUCT
+/*******************************************************
+ ******************************************************/
+/*----------------- OS 11.01.95 -----------------------
+ TabPage Testeinstellungen
+-------------------------------------------------------*/
+
+void lcl_SetPosSize(Window& rWin, Point aPos, Size aSize)
+{
+ aPos = rWin.LogicToPixel(aPos, MAP_APPFONT);
+ aSize = rWin.OutputDevice::LogicToPixel(aSize, MAP_APPFONT);
+ rWin.SetPosSizePixel(aPos, aSize);
+}
+
+SwTestTabPage::SwTestTabPage( Window* pParent,
+ const SfxItemSet& rCoreSet) :
+ SfxTabPage( pParent, WB_HIDE, rCoreSet),
+ aTestGBox ( this, WB_GROUP ),
+ aTest1CBox ( this, 0 ),
+ aTest2CBox ( this, 0 ),
+ aTest3CBox ( this, 0 ),
+ aTest4CBox ( this, 0 ),
+ aTest5CBox ( this, 0 ),
+ aTest6CBox ( this, 0 ),
+ aTest7CBox ( this, 0 ),
+ aTest8CBox ( this, 0 ),
+ aTest9CBox ( this, 0 ),
+ aTest10CBox ( this, 0 ),
+ bAttrModified( FALSE )
+{
+ lcl_SetPosSize(*this, Point(0,0), Size(260 , 135));
+ lcl_SetPosSize(aTestGBox, Point(6,2), Size(209,126));
+ lcl_SetPosSize(aTest1CBox , Point(12 , 14), Size(74 , 10));
+ lcl_SetPosSize(aTest2CBox , Point(12 , 27), Size(74 , 10));
+ lcl_SetPosSize(aTest3CBox , Point(12 , 40), Size(74 , 10));
+ lcl_SetPosSize(aTest4CBox , Point(12 , 53), Size(74 , 10));
+ lcl_SetPosSize(aTest5CBox , Point(12 , 66), Size(74 , 10));
+ lcl_SetPosSize(aTest6CBox , Point(116, 14), Size(74 , 10));
+ lcl_SetPosSize(aTest7CBox , Point(116, 27), Size(74 , 10));
+ lcl_SetPosSize(aTest8CBox , Point(116, 40), Size(74 , 10));
+ lcl_SetPosSize(aTest9CBox , Point(116, 53), Size(74 , 10));
+ lcl_SetPosSize(aTest10CBox , Point(116, 66), Size(74 , 10));
+
+ aTestGBox.SetText( String(ByteString("Einstellungen nur für Testzwecke" ), RTL_TEXTENCODING_MS_1252));
+ aTest1CBox .SetText( C2S("Layout not loading"));
+ aTest2CBox .SetText( C2S("dynamic"));
+ aTest3CBox .SetText( C2S("No calm" ));
+ aTest4CBox .SetText( C2S("WYSIWYG debug" ));
+ aTest5CBox .SetText( C2S("No idle format" ));
+ aTest6CBox .SetText( C2S("No screen adj" ));
+ aTest7CBox .SetText( C2S("win format" ));
+ aTest8CBox .SetText( C2S("No Scroll" ));
+ aTest9CBox .SetText( C2S("DrawingLayerNotLoading"));
+ aTest10CBox.SetText( C2S("AutoFormat by Input" ));
+ aTestGBox.Show();
+ aTest1CBox .Show();
+ aTest2CBox .Show();
+ aTest3CBox .Show();
+ aTest4CBox .Show();
+ aTest5CBox .Show();
+ aTest6CBox .Show();
+ aTest7CBox .Show();
+ aTest8CBox .Show();
+ aTest9CBox .Show();
+ aTest10CBox.Show();
+ Init();
+
+}
+
+
+//------------------------------------------------------------------------
+
+
+SfxTabPage* SwTestTabPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return ( new SwTestTabPage( pParent, rAttrSet ) );
+}
+//------------------------------------------------------------------------
+
+
+BOOL SwTestTabPage::FillItemSet( SfxItemSet& rCoreSet )
+{
+
+ if ( bAttrModified )
+ {
+ SwTestItem aTestItem(FN_PARAM_SWTEST);
+ aTestItem.bTest1=aTest1CBox.IsChecked();
+ aTestItem.bTest2=aTest2CBox.IsChecked();
+ aTestItem.bTest3=aTest3CBox.IsChecked();
+ aTestItem.bTest4=aTest4CBox.IsChecked();
+ aTestItem.bTest5=aTest5CBox.IsChecked();
+ aTestItem.bTest6=aTest6CBox.IsChecked();
+ aTestItem.bTest7=aTest7CBox.IsChecked();
+ aTestItem.bTest8=aTest8CBox.IsChecked();
+ aTestItem.bTest9=aTest9CBox.IsChecked();
+ aTestItem.bTest10=aTest10CBox.IsChecked();
+ rCoreSet.Put(aTestItem);
+ }
+ return bAttrModified;
+}
+//------------------------------------------------------------------------
+
+
+void SwTestTabPage::Reset( const SfxItemSet& )
+{
+ const SfxItemSet& rSet = GetItemSet();
+ const SwTestItem* pTestAttr = 0;
+
+ if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SWTEST , FALSE,
+ (const SfxPoolItem**)&pTestAttr ))
+ {
+ aTest1CBox.Check(pTestAttr->bTest1);
+ aTest2CBox.Check(pTestAttr->bTest2);
+ aTest3CBox.Check(pTestAttr->bTest3);
+ aTest4CBox.Check(pTestAttr->bTest4);
+ aTest5CBox.Check(pTestAttr->bTest5);
+ aTest6CBox.Check(pTestAttr->bTest6);
+ aTest7CBox.Check(pTestAttr->bTest7);
+ aTest8CBox.Check(pTestAttr->bTest8);
+ aTest9CBox.Check(pTestAttr->bTest9);
+ aTest10CBox.Check(pTestAttr->bTest10);
+ }
+}
+//------------------------------------------------------------------------
+
+
+void SwTestTabPage::Init()
+{
+ // handler
+ Link aLk = LINK( this, SwTestTabPage, AutoClickHdl );
+ aTest1CBox.SetClickHdl( aLk );
+ aTest2CBox.SetClickHdl( aLk );
+ aTest3CBox.SetClickHdl( aLk );
+ aTest4CBox.SetClickHdl( aLk );
+ aTest5CBox.SetClickHdl( aLk );
+ aTest6CBox.SetClickHdl( aLk );
+ aTest7CBox.SetClickHdl( aLk );
+ aTest8CBox.SetClickHdl( aLk );
+ aTest9CBox.SetClickHdl( aLk );
+ aTest10CBox.SetClickHdl( aLk );
+}
+//------------------------------------------------------------------------
+
+
+IMPL_LINK_INLINE_START( SwTestTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
+{
+ bAttrModified = TRUE;
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwTestTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
+
+
+#undef _INIT
+#endif
+
+ /*--------------------------------------------------------------------
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/ui/config/optpage.cxx,v 1.1.1.1 2000-09-18 17:14:33 hr Exp $
+
+ $Log: not supported by cvs2svn $
+ Revision 1.123 2000/09/18 16:05:17 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.122 2000/09/08 15:11:56 os
+ use configuration service
+
+ Revision 1.121 2000/09/07 15:59:21 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.120 2000/09/07 08:26:30 os
+ FaxName now in SwPrintOptions
+
+ Revision 1.119 2000/06/27 07:59:40 obo
+ #65293
+
+ Revision 1.118 2000/06/13 13:22:43 os
+ #75770# Doc only flag in standard font TabPage now persistent
+
+ Revision 1.117 2000/05/23 13:16:41 os
+ wrong CreateFromAscii corrected
+
+ Revision 1.116 2000/04/11 08:02:23 os
+ UNICODE
+
+ Revision 1.115 2000/03/03 15:16:58 os
+ StarView remainders removed
+
+ Revision 1.114 2000/02/24 17:26:00 hr
+ 43447#: gcc
+
+ Revision 1.113 2000/02/11 14:44:06 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.112 2000/01/06 14:46:58 os
+ #71448# no differences between PRODUCT and NONPRODUCT resources
+
+ Revision 1.111 1999/12/14 14:31:36 jp
+ Bug #69595#: print can create single Jobs
+
+ Revision 1.110 1999/10/21 17:47:33 jp
+ have to change - SearchFile with SfxIniManager, dont use SwFinder for this
+
+ Revision 1.109 1999/09/22 12:37:43 os
+ big handles
+
+ Revision 1.108 1999/06/09 11:20:58 OS
+ index background
+
+
+ Rev 1.107 09 Jun 1999 13:20:58 OS
+ index background
+
+ Rev 1.106 10 May 1999 13:11:14 OS
+ #64976# Tabulatorwert fuer Metricumstellung merken
+
+ Rev 1.105 29 Mar 1999 09:17:00 OS
+ #63971# kein TabStop putten, wenn Control unsichtbar
+
+ Rev 1.104 19 Mar 1999 15:32:04 OS
+ #63750# Tabellenmode auch wieder an der akt. Tabelle setzen
+
+ Rev 1.103 15 Feb 1999 09:22:02 OS
+ #61890# StdFontTabTage legt Drucker jetzt bei Bedarf selbst an
+
+ Rev 1.102 27 Jan 1999 10:04:00 OS
+ #58677# Cursor in Readonly-Bereichen
+
+ Rev 1.101 11 Jan 1999 13:36:18 OS
+ #60139# Set/UseDefault jetzt richtig
+
+ Rev 1.100 16 Nov 1998 10:38:50 OS
+ #59455# Grundschrifte auch nach Standard im Doc richtig setzen
+
+ Rev 1.99 08 Sep 1998 16:49:54 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.98 06 Jul 1998 13:03:54 MH
+ add: SfxBoolItem header
+
+ Rev 1.97 03 Jul 1998 18:15:34 OS
+ ScrollBar-CheckBoxen per Item disablen
+
+ Rev 1.96 24 Jun 1998 16:16:56 OM
+ #51575# Printoptionen auch in Seitenvorschau beachten
+
+ Rev 1.95 24 Mar 1998 17:46:50 OM
+ Formataenderung anzeigen
+
+ Rev 1.94 10 Mar 1998 16:11:34 OM
+ Gegen rottige Config abgesichert
+
+ Rev 1.93 05 Mar 1998 14:34:08 OM
+ Redline-Attribute in Module-Cfg speichern
+
+ Rev 1.92 24 Feb 1998 15:32:24 OM
+ Redline-Darstellungsoptionen setzen
+
+ Rev 1.91 23 Feb 1998 12:40:44 OM
+ Redlining-Optionen
+
+ Rev 1.90 20 Feb 1998 14:45:52 OM
+ Markierungs-Preview
+
+ Rev 1.89 19 Feb 1998 15:26:24 OM
+ Redlining-Optionen
+
+ Rev 1.88 18 Feb 1998 09:46:54 OM
+ Redlining Optionen
+
+ Rev 1.87 18 Feb 1998 09:10:22 OM
+ Redlining-Optionen
+
+ Rev 1.86 28 Nov 1997 15:22:22 MA
+ includes
+
+ Rev 1.85 24 Nov 1997 17:58:50 MA
+ include
+
+ Rev 1.84 14 Nov 1997 17:13:34 OS
+ TRUE returnen, wenn TblChgMode veraendert wurde #45521#
+
+ Rev 1.83 03 Nov 1997 16:12:18 JP
+ neu: Optionen/-Page/Basic-Schnittst. fuer ShadowCursor
+
+ Rev 1.82 09 Oct 1997 14:40:40 OS
+ UpdateMode fuer ColorListBoxen abschalten #44451#
+
+ Rev 1.81 09 Sep 1997 11:38:50 OS
+ includes
+
+ Rev 1.80 15 Aug 1997 11:45:22 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.79 09 Aug 1997 12:50:22 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.78 08 Aug 1997 17:37:30 OM
+ Headerfile-Umstellung
+
+ Rev 1.77 08 Jul 1997 14:07:30 OS
+ ConfigItems von der App ans Module
+
+ Rev 1.76 12 Jun 1997 10:11:04 MA
+ Option fuer Smooth
+
+ Rev 1.75 06 Jun 1997 12:44:10 MA
+ chg: versteckte Absaetze ausblenden
+
+ Rev 1.74 05 May 1997 14:15:18 OS
+ Grundschrift fuer Standard als Pool-Default setzen
+
+ Rev 1.73 23 Apr 1997 14:20:36 OS
+ GetEntryData von void* auf USHORT ueber long wg. IBM VA3.0
+
+ Rev 1.72 21 Apr 1997 13:48:20 OS
+ SEXPORT -> __EXPORT
+
+ Rev 1.71 21 Apr 1997 11:01:42 OS
+ Quelltextkonfiguration
+
+ Rev 1.70 16 Apr 1997 12:30:38 OS
+ SEXPORT
+
+ Rev 1.69 25 Feb 1997 10:21:16 OS
+ farbige Handles
+
+ Rev 1.68 23 Feb 1997 10:34:12 OS
+ zusaetzlicher Hilfstext fuer Tabellen
+
+ Rev 1.67 03 Feb 1997 12:20:16 OS
+ Hor. Scrollbar nicht mehr Browse-abhaengig
+
+ Rev 1.66 03 Feb 1997 12:10:34 OS
+ Pages fuer Html umgruppieren
+
+ Rev 1.65 22 Jan 1997 11:36:30 MA
+ Umstellung Put
+
+ Rev 1.64 18 Jan 1997 15:12:16 OS
+ Dialog Tabellenoptionen
+
+ Rev 1.63 18 Jan 1997 11:14:46 OS
+ Defaulteinstellungen fuer Grundschriften beruecksichtigen
+
+ Rev 1.62 15 Jan 1997 16:21:54 MA
+ #35010# Modified setzen
+
+ Rev 1.61 14 Jan 1997 08:57:50 MA
+ includes
+
+ Rev 1.60 13 Jan 1997 16:54:54 OS
+ TabStop auf der LayoutPage
+
+ Rev 1.59 20 Dec 1996 13:38:28 OS
+ auf SFX_ITEM_SET pruefen
+
+ Rev 1.58 12 Dec 1996 08:44:16 OS
+ keine Defaults suchen
+
+ Rev 1.57 11 Dec 1996 14:12:48 OS
+ Metric auf der Layout-Page
+
+ Rev 1.56 10 Dec 1996 17:00:04 OS
+ Warnungen von der OFA
+
+ Rev 1.55 04 Dec 1996 23:02:42 MH
+ chg: header
+
+ Rev 1.54 03 Dec 1996 17:01:30 AMA
+ Chg: Der Drucker wird nur im !Browsemodus angelegt.
+
+ Rev 1.53 28 Nov 1996 15:20:26 OS
+ neu: Schwarz drucken
+
+ Rev 1.52 11 Nov 1996 09:22:10 MA
+ ResMgr
+
+ Rev 1.51 24 Oct 1996 13:14:58 OS
+ Grundschriften nur nach Veraenderung im Doc auch in die Applikation eintragen
+
+ Rev 1.50 23 Oct 1996 13:49:16 JP
+ SVMEM -> SVSTDARR Umstellung
+
+ Rev 1.49 02 Oct 1996 18:31:00 MA
+ Umstellung Enable/Disable
+
+ Rev 1.48 23 Sep 1996 19:28:28 HJS
+ const nach nicht-const gecastet
+
+ Rev 1.47 21 Sep 1996 15:56:42 OS
+ Grundschriften in Comboboxen, damit nicht vorhandene Schriften gesetzt werden koennen; CheckBox fuer reine Dokumenteinstellung
+
+ Rev 1.46 07 Sep 1996 14:04:28 OS
+ Standard-Button fuer Grundschriften
+
+ Rev 1.45 06 Sep 1996 14:32:06 OS
+ Postits beruecksichtigen
+
+ Rev 1.44 04 Sep 1996 08:09:12 OS
+ neu: Grundschriften-Tabpage
+
+ Rev 1.43 03 Sep 1996 16:56:24 OS
+ Tabpage Standardfonts
+
+ Rev 1.42 31 Aug 1996 17:14:00 OS
+ neue Optionendialoge
+
+ Rev 1.41 26 Aug 1996 16:57:54 MA
+ chg: Lineale auch im BrowseMode
+
+ Rev 1.40 17 Jul 1996 11:13:48 OS
+ neu: Checkbox fuer Hintergrunddruck
+
+ Rev 1.39 16 Jul 1996 20:19:50 MA
+ includes
+
+ Rev 1.38 24 May 1996 14:58:16 OS
+ FN_STAT_MODIFIED -> SID_DOC_MODIFIED
+
+ Rev 1.37 30 Apr 1996 14:03:10 OS
+ Ansichts-Controls fuer Preview disablen
+
+ Rev 1.36 25 Apr 1996 16:23:58 OS
+ Im Browse-Mode Lineale und HScroll disablen
+
+ Rev 1.35 15 Mar 1996 15:28:18 JP
+ TestFlags erweitert
+
+ Rev 1.34 07 Mar 1996 16:54:42 JP
+ AddPrintItem um weiters Flag erweitert
+
+ Rev 1.33 06 Feb 1996 15:18:42 JP
+ Link Umstellung 305
+
+ Rev 1.32 28 Nov 1995 23:37:36 JP
+ uisys.hxx gibt es nicht mehr
+
+ --------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/config/prtopt.cxx b/sw/source/ui/config/prtopt.cxx
new file mode 100644
index 000000000000..7190620841d4
--- /dev/null
+++ b/sw/source/ui/config/prtopt.cxx
@@ -0,0 +1,228 @@
+/*************************************************************************
+ *
+ * $RCSfile: prtopt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _UTL_CONFIGMGR_HXX_
+#include <unotools/configmgr.hxx>
+#endif
+#ifndef _PRTOPT_HXX
+#include <prtopt.hxx>
+#endif
+#ifndef _SWPRTOPT_HXX
+#include <swprtopt.hxx>
+#endif
+
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UNO_ANY_HXX_
+#include <com/sun/star/uno/Any.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_
+#include <com/sun/star/uno/Sequence.hxx>
+#endif
+
+using namespace utl;
+using namespace rtl;
+using namespace com::sun::star::uno;
+
+#define C2U(cChar) OUString::createFromAscii(cChar)
+/*--------------------------------------------------------------------
+ Beschreibung: Ctor
+ --------------------------------------------------------------------*/
+
+Sequence<OUString> SwPrintOptions::GetPropertyNames()
+{
+ static const char* aPropNames[] =
+ {
+ "Content/Graphic", // 0
+ "Content/Table", // 1
+ "Content/Drawing", // 2
+ "Content/Control", // 3
+ "Content/Background", // 4
+ "Content/PrintBlack", // 5
+ "Content/Note", // 6
+ "Page/LeftPage", // 7
+ "Page/RightPage", // 8
+ "Page/Reversed", // 9
+ "Page/Brochure", // 10
+ "Output/SinglePrintJob", // 11
+ "Output/Fax", // 12
+ "Papertray/FromPrinterSetup"// 13
+ };
+ const int nCount = 14;
+ Sequence<OUString> aNames(nCount);
+ OUString* pNames = aNames.getArray();
+ for(int i = 0; i < nCount; i++)
+ {
+ pNames[i] = OUString::createFromAscii(aPropNames[i]);
+ }
+ return aNames;
+}
+/* -----------------------------06.09.00 16:44--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwPrintOptions::SwPrintOptions(sal_Bool bWeb) :
+ ConfigItem(bWeb ? C2U("Office.WriterWeb/Print") : C2U("Office.Writer/Print")),
+ bPrintGraphic(sal_True),
+ bPrintTable(sal_True),
+ bPrintDraw(sal_True),
+ bPrintControl(sal_True),
+ bPrintLeftPage(sal_True),
+ bPrintRightPage(sal_True),
+ bReverse(sal_False),
+ bPaperFromSetup(sal_False),
+ bPrintProspect(sal_False),
+ bPrintSingleJobs(sal_False),
+ bPrintPageBackground(!bWeb),
+ bPrintBlackFont(bWeb),
+ nPrintPostIts(POSTITS_NONE)
+{
+ Sequence<OUString> aNames = GetPropertyNames();
+ Sequence<Any> aValues = GetProperties(aNames);
+ EnableNotification(aNames);
+ const Any* pValues = aValues.getConstArray();
+ DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed")
+ if(aValues.getLength() == aNames.getLength())
+ {
+ for(int nProp = 0; nProp < aNames.getLength(); nProp++)
+ {
+ DBG_ASSERT(pValues[nProp].hasValue(), "property value missing")
+ if(pValues[nProp].hasValue())
+ {
+ switch(nProp)
+ {
+ case 0: bPrintGraphic = *(sal_Bool*)pValues[nProp].getValue(); break;
+ case 1: bPrintTable = *(sal_Bool*)pValues[nProp].getValue(); break;
+ case 2: bPrintDraw = *(sal_Bool*)pValues[nProp].getValue() ; break;
+ case 3: bPrintControl = *(sal_Bool*)pValues[nProp].getValue() ; break;
+ case 4: bPrintPageBackground= *(sal_Bool*)pValues[nProp].getValue(); break;
+ case 5: bPrintBlackFont = *(sal_Bool*)pValues[nProp].getValue(); break;
+ case 6: pValues[nProp] >>= nPrintPostIts ; break;
+ case 7: bPrintLeftPage = *(sal_Bool*)pValues[nProp].getValue(); break;
+ case 8: bPrintRightPage = *(sal_Bool*)pValues[nProp].getValue(); break;
+ case 9: bReverse = *(sal_Bool*)pValues[nProp].getValue(); break;
+ case 10:bPrintProspect = *(sal_Bool*)pValues[nProp].getValue(); break;
+ case 11:bPrintSingleJobs = *(sal_Bool*)pValues[nProp].getValue(); break;
+ case 12: pValues[nProp] >>= sFaxName; break;
+ case 13: bPaperFromSetup = *(sal_Bool*)pValues[nProp].getValue(); break;
+ }
+ }
+ }
+ }
+}
+/* -----------------------------06.09.00 16:50--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwPrintOptions::~SwPrintOptions()
+{
+}
+/* -----------------------------06.09.00 16:43--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwPrintOptions::Commit()
+{
+ Sequence<OUString> aNames = GetPropertyNames();
+
+ OUString* pNames = aNames.getArray();
+ Sequence<Any> aValues(aNames.getLength());
+ Any* pValues = aValues.getArray();
+
+ const Type& rType = ::getBooleanCppuType();
+ BOOL bVal;
+ for(int nProp = 0; nProp < aNames.getLength(); nProp++)
+ {
+ switch(nProp)
+ {
+ case 0: bVal = bPrintGraphic; pValues[nProp].setValue(&bVal, rType);break;
+ case 1: bVal = bPrintTable ;pValues[nProp].setValue(&bVal, rType); break;
+ case 2: bVal = bPrintDraw ; pValues[nProp].setValue(&bVal, rType); break;
+ case 3: bVal = bPrintControl ; pValues[nProp].setValue(&bVal, rType); break;
+ case 4: bVal = bPrintPageBackground; pValues[nProp].setValue(&bVal, rType); break;
+ case 5: bVal = bPrintBlackFont ; pValues[nProp].setValue(&bVal, rType); break;
+ case 6: pValues[nProp] <<= nPrintPostIts ; break;
+ case 7: bVal = bPrintLeftPage ; pValues[nProp].setValue(&bVal, rType); break;
+ case 8: bVal = bPrintRightPage ; pValues[nProp].setValue(&bVal, rType); break;
+ case 9: bVal = bReverse ; pValues[nProp].setValue(&bVal, rType); break;
+ case 10: bVal = bPrintProspect ; pValues[nProp].setValue(&bVal, rType); break;
+ case 11: bVal = bPrintSingleJobs ; pValues[nProp].setValue(&bVal, rType); break;
+ case 12: pValues[nProp] <<= sFaxName; break;
+ case 13: bVal = bPaperFromSetup ; pValues[nProp].setValue(&bVal, rType); break;
+ }
+ }
+ PutProperties(aNames, aValues);
+}
+/* -----------------------------06.09.00 16:46--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwPrintOptions::Notify( const Sequence<rtl::OUString>& aPropertyNames)
+{
+ DBG_ERROR("properties have been changed")
+}
+
+
+
+
diff --git a/sw/source/ui/config/redlopt.hrc b/sw/source/ui/config/redlopt.hrc
new file mode 100644
index 000000000000..3a4d0950b674
--- /dev/null
+++ b/sw/source/ui/config/redlopt.hrc
@@ -0,0 +1,83 @@
+/*************************************************************************
+ *
+ * $RCSfile: redlopt.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 RB_INSERT 1
+#define RB_DELETED 2
+#define RB_CHANGED 3
+#define FT_TE_ATTRIB 4
+#define LB_TE_ATTRIB 5
+#define LB_TL_ATTRIB 6
+#define LB_TC_ATTRIB 7
+#define FT_TE_COL 8
+#define LB_TE_COL 9
+#define LB_TL_COL 10
+#define LB_TC_COL 11
+#define WIN_TE 12
+#define GB_TE 13
+
+#define FT_MARKPOS 14
+#define LB_MARKPOS 15
+#define FT_LC_COL 16
+#define LB_LC_COL 17
+#define WIN_MARK 18
+#define GB_LC 19
+#define STR_AUTHOR 20
+#define STR_NOTHING 21
+
diff --git a/sw/source/ui/config/redlopt.src b/sw/source/ui/config/redlopt.src
new file mode 100644
index 000000000000..1bf8abf37761
--- /dev/null
+++ b/sw/source/ui/config/redlopt.src
@@ -0,0 +1,1422 @@
+/*************************************************************************
+ *
+ * $RCSfile: redlopt.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 */
+
+#ifndef _SFX_HRC
+#include <sfx2/sfx.hrc>
+#endif
+#ifndef _SVX_DIALOGS_HRC
+#include <svx/dialogs.hrc>
+#endif
+#include "globals.hrc"
+#include "config.hrc"
+#include "redlopt.hrc"
+#include "helpid.h"
+/**************************************************************************/
+/* */
+/**************************************************************************/
+TabPage TP_REDLINE_OPT
+{
+ HelpID = HID_REDLINE_OPT ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ RadioButton RB_INSERT
+ {
+ Pos = MAP_APPFONT ( 12 , 18 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "~Einfügen" ;
+ Text [ ENGLISH ] = "Insert" ;
+ Check = TRUE ;
+ Text [ portuguese ] = "~Inserir" ;
+ Text [ english_us ] = "~Insert" ;
+ Text [ portuguese_brazilian ] = "Einfügen" ;
+ Text [ swedish ] = "~Infoga" ;
+ Text [ danish ] = "~Indsæt" ;
+ Text [ italian ] = "Inserisci" ;
+ Text [ spanish ] = "~Insertar" ;
+ Text [ french ] = "Insérer" ;
+ Text [ dutch ] = "~Invoegen" ;
+ Text[ chinese_simplified ] = "²åÈë(~I)";
+ Text[ russian ] = "Âñò~àâêà";
+ Text[ polish ] = "Wstaw";
+ Text[ japanese ] = "‘}“ü(~I)";
+ Text[ chinese_traditional ] = "´¡¤J(~I)";
+ Text[ arabic ] = "ÅÏÑÇÌ";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "»ðÀÔ(~I)";
+ Text[ turkish ] = "~Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_DELETED
+ {
+ Pos = MAP_APPFONT ( 12 , 34 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "~Löschen" ;
+ Text [ ENGLISH ] = "Delete" ;
+ Text [ portuguese ] = "E~liminar" ;
+ 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[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦";
+ Text[ turkish ] = "~Sil";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_CHANGED
+ {
+ Pos = MAP_APPFONT ( 12 , 50 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Attributänderung" ;
+ Text [ ENGLISH ] = "Change attribute" ;
+ Text [ portuguese ] = "~Modificar atributo" ;
+ Text [ english_us ] = "Changed attribute" ;
+ Text [ portuguese_brazilian ] = "Attributänderung" ;
+ Text [ swedish ] = "~Attributändring" ;
+ Text [ danish ] = "Attributændring" ;
+ Text [ italian ] = "Modifica attributi" ;
+ Text [ spanish ] = "Modificación de ~atributo" ;
+ Text [ french ] = "Modification d'attributs" ;
+ Text [ dutch ] = "~Attribuutwijziging" ;
+ Text[ chinese_simplified ] = "¸ü¸ÄÊôÐÔ";
+ Text[ russian ] = "Èçìåíåíèå àòðèáóòîâ";
+ Text[ polish ] = "Z~miana atrybutów";
+ Text[ japanese ] = "‘®«‚Ì•ÏX";
+ Text[ chinese_traditional ] = "ÅܧóÄÝ©Ê";
+ Text[ arabic ] = "ÊÛííÑ ÇáÓãÇÊ";
+ Text[ greek ] = "~ÁëëáãÞ éäéüôçôáò";
+ Text[ korean ] = "¼Ó¼º º¯°æ";
+ Text[ turkish ] = "Öznitelik deðiþikliði";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_TE_ATTRIB
+ {
+ Pos = MAP_APPFONT ( 74 , 18 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "A~ttribute" ;
+ Text [ English ] = "Attributes" ;
+ Text [ portuguese ] = "A~tributos" ;
+ Text [ english_us ] = "Attributes" ;
+ Text [ portuguese_brazilian ] = "Attribute" ;
+ Text [ swedish ] = "A~ttribut" ;
+ Text [ danish ] = "Attributter" ;
+ Text [ italian ] = "Attributi" ;
+ Text [ spanish ] = "~Atributos" ;
+ Text [ french ] = "Attributs" ;
+ Text [ dutch ] = "~Attributen" ;
+ 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 ] = " ";
+ };
+ ListBox LB_TE_ATTRIB
+ {
+ Pos = MAP_APPFONT ( 115 , 17 ) ;
+ Size = MAP_APPFONT ( 80 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "[Keine]" ; > ;
+ < "Fett" ; > ;
+ < "Kursiv" ; > ;
+ < "Unterstrichen" ; > ;
+ < "Doppelt unterstrichen" ; > ;
+ < "Versalien" ; > ;
+ < "Gemeine" ; > ;
+ < "Kapitälchen" ; > ;
+ < "Titelschrift" ; > ;
+ < "Hintergrundfarbe" ; > ;
+ };
+ StringList [ English ] =
+ {
+ < "[Keine]" ; > ;
+ < "Fett" ; > ;
+ < "Kursiv" ; > ;
+ < "Unterstrichen" ; > ;
+ < "Doppelt unterstrichen" ; > ;
+ < "Versalien" ; > ;
+ < "Gemeine" ; > ;
+ < "Kapitälchen" ; > ;
+ < "Titelschrift" ; > ;
+ < "Hintergrundfarbe" ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "[None]" ; > ;
+ < "Bold" ; > ;
+ < "Italic" ; > ;
+ < "Underline" ; > ;
+ < "Underline: double" ; > ;
+ < "Caps" ; > ;
+ < "Lower case" ; > ;
+ < "Small caps" ; > ;
+ < "Title Font" ; > ;
+ < "Background color" ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "[Keine]" ; > ;
+ < "Fett" ; > ;
+ < "Kursiv" ; > ;
+ < "Unterstrichen" ; > ;
+ < "Doppelt unterstrichen" ; > ;
+ < "Versalien" ; > ;
+ < "Gemeine" ; > ;
+ < "Kapitälchen" ; > ;
+ < "Titelschrift" ; > ;
+ < "Hintergrundfarbe" ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "[Inga]" ; > ;
+ < "Fet" ; > ;
+ < "Kursiv" ; > ;
+ < "Understruken" ; > ;
+ < "Dubbelt understruket" ; > ;
+ < "Versaler" ; > ;
+ < "Gemener" ; > ;
+ < "Små kapitäler" ; > ;
+ < "Titelteckensnitt" ; > ;
+ < "Bakgrundsfärg" ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "[Ingen]" ; > ;
+ < "Fed" ; > ;
+ < "Kursiv" ; > ;
+ < "Understreget" ; > ;
+ < "Dobbelt understreget" ; > ;
+ < "Store bogstaver" ; > ;
+ < "Små bogstaver" ; > ;
+ < "Kapitæler" ; > ;
+ < "Titelskrift" ; > ;
+ < "Baggrundsfarve" ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "[nessuno]" ; > ;
+ < "Grassetto" ; > ;
+ < "Corsivo" ; > ;
+ < "Sottolineato" ; > ;
+ < "Sottolineatura doppia" ; > ;
+ < "Maiuscolo" ; > ;
+ < "Minuscolo" ; > ;
+ < "Maiuscoletto" ; > ;
+ < "Carattere del titolo" ; > ;
+ < "Colore di sfondo" ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "[Ninguno]" ; > ;
+ < "Negrita" ; > ;
+ < "Cursiva" ; > ;
+ < "Subrayado" ; > ;
+ < "Subrayado doble" ; > ;
+ < "Mayúsculas" ; > ;
+ < "Minúsculas" ; > ;
+ < "Versalitas" ; > ;
+ < "Caracteres del título" ; > ;
+ < "Color de fondo" ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "[Aucun(e)]" ; > ;
+ < "Gras" ; > ;
+ < "Italique" ; > ;
+ < "Soulignage" ; > ;
+ < "Soulignage : double" ; > ;
+ < "Majuscules" ; > ;
+ < "Minuscules" ; > ;
+ < "Petites majuscules" ; > ;
+ < "Caractères du titre" ; > ;
+ < "Couleur d'arrière-plan" ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "[Geen]" ; > ;
+ < "Vet" ; > ;
+ < "Cursief" ; > ;
+ < "Onderstrepen" ; > ;
+ < "Dubbel onderstrepen" ; > ;
+ < "Hoofdletters" ; > ;
+ < "Kleine letters" ; > ;
+ < "Kapitalen" ; > ;
+ < "Titelschrift" ; > ;
+ < "Achtergrondkleur" ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "[nenhum]" ; > ;
+ < "Negrito" ; > ;
+ < "Itálico" ; > ;
+ < "Sublinhado" ; > ;
+ < "Sublinhado duplo" ; > ;
+ < "Maiúsculas" ; > ;
+ < "Minúsculas" ; > ;
+ < "Versaletes" ; > ;
+ < "Letra para título" ; > ;
+ < "Cor do plano de fundo" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "[ÎÞ]" ; > ;
+ < "´ÖÌå" ; > ;
+ < "бÌå" ; > ;
+ < "Ï»®Ïß" ; > ;
+ < "Ë«Ï»®Ïß" ; > ;
+ < "´óд×Öĸ" ; > ;
+ < "Сд×Öĸ" ; > ;
+ < "СÐÍ´óд×Öĸ" ; > ;
+ < "±êÌâ×ÖÌå" ; > ;
+ < "±³¾°ÑÕÉ«" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "[Áåç]" ; > ;
+ < "Æèðíûé" ; > ;
+ < "Êóðñèâ" ; > ;
+ < "Ïîä÷åðêíóòûé" ; > ;
+ < "Äâîéíîå ïîä÷åðêèâàíèå" ; > ;
+ < "Ïðîïèñíûå" ; > ;
+ < "Ñòðî÷íûå áóêâû" ; > ;
+ < "Ìàëûå ïðîïèñíûå" ; > ;
+ < "Çàãëàâíûé øðèôò" ; > ;
+ < "Öâåò ôîíà" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "[Brak]" ; > ;
+ < "Pogrubienie" ; > ;
+ < "Kursywa" ; > ;
+ < "Podkreœlenie" ; > ;
+ < "Podwójne podkreœlenie" ; > ;
+ < "Wersaliki" ; > ;
+ < "Ma³e litery" ; > ;
+ < "Kapitaliki" ; > ;
+ < "Czcionka tytu³owa" ; > ;
+ < "Kolor t³a" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "[‚È‚µ]" ; > ;
+ < "‘¾Žš" ; > ;
+ < "ŽÎ‘Ì" ; > ;
+ < "伟" ; > ;
+ < "Җd伟" ; > ;
+ < "‘啶Žš" ; > ;
+ < "¬•¶Žš" ; > ;
+ < "¬Œ^‘啶Žš" ; > ;
+ < "À²ÄÙ•¶Žš" ; > ;
+ < "”wŒiF" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "[µL]" ; > ;
+ < "²ÊÅé" ; > ;
+ < "±×Åé" ; > ;
+ < "¤U¹º½u" ; > ;
+ < "Âù¤U¹º½u" ; > ;
+ < "¤j¼g¦r¥À" ; > ;
+ < "¤p¼g¦r¥À" ; > ;
+ < "¤p«¬¤j¼g¦r¥À" ; > ;
+ < "¼ÐÃD¦r«¬" ; > ;
+ < "­I´ºÃC¦â" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "[ÈÏæä]" ; > ;
+ < "ÚÑíÖ" ; > ;
+ < "ãÇÆá" ; > ;
+ < "ÊÍÊå ÎØ" ; > ;
+ < "ÎØ ÊÍÊí ãÒÏæÌ" ; > ;
+ < "ÃÍÑÝ ßÈíÑÉ" ; > ;
+ < "ÃÍÑÝ ÕÛíÑÉ" ; > ;
+ < "ÍÑÝ ÈÏÇíÉ ÃßÈÑ" ; > ;
+ < "ÎØ ÇáÚäæÇä" ; > ;
+ < "áæä ÇáÎáÝíÉ" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "[ÊáíÝíá]" ; > ;
+ < "¸íôïíï" ; > ;
+ < "ÐëÜãéá" ; > ;
+ < "ÕðïãñÜììéóç" ; > ;
+ < "ÄéðëÞ õðïãñÜììéóç" ; > ;
+ < "Êåöáëáßá" ; > ;
+ < "Ðåæïß ÷áñáêôÞñåò" ; > ;
+ < "ÌéêñÜ êåöáëáßá" ; > ;
+ < "ÃñáììáôïóåéñÜ ôßôëïõ" ; > ;
+ < "×ñþìá öüíôïõ" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "[¾øÀ½]" ; > ;
+ < "ÁøÇÏ°Ô" ; > ;
+ < "±â¿ïÀÓ²Ã" ; > ;
+ < "¹ØÁÙ" ; > ;
+ < "ÀÌÁß ¹ØÁÙ" ; > ;
+ < "´ë¹®ÀÚ" ; > ;
+ < "¼Ò¹®ÀÚ" ; > ;
+ < "ÀÛÀº ´ë¹®ÀÚ" ; > ;
+ < "Á¦¸ñ ±Û²Ã" ; > ;
+ < "¹è°æ»ö" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "[Yok]" ; > ;
+ < "Kalýn" ; > ;
+ < "Ýtalik" ; > ;
+ < "Altý çizili" ; > ;
+ < "Altý çift çizili" ; > ;
+ < "Büyük harflerle" ; > ;
+ < "Küçük harflerle" ; > ;
+ < "Küçük büyük harf" ; > ;
+ < "Baþlýk yazýtipi" ; > ;
+ < "Artalan rengi" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ ListBox LB_TL_ATTRIB
+ {
+ Pos = MAP_APPFONT ( 115 , 17 ) ;
+ Size = MAP_APPFONT ( 80 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Hide = TRUE ;
+ StringList =
+ {
+ < "[Keine]" ; > ;
+ < "Fett" ; > ;
+ < "Kursiv" ; > ;
+ < "Durchstreichen" ; > ;
+ < "Versalien" ; > ;
+ < "Gemeine" ; > ;
+ < "Kapitälchen" ; > ;
+ < "Titelschrift" ; > ;
+ < "Hintergrundfarbe" ; > ;
+ };
+ StringList [ English ] =
+ {
+ < "[Keine]" ; > ;
+ < "Fett" ; > ;
+ < "Kursiv" ; > ;
+ < "Durchstreichen" ; > ;
+ < "Versalien" ; > ;
+ < "Gemeine" ; > ;
+ < "Kapitälchen" ; > ;
+ < "Titelschrift" ; > ;
+ < "Hintergrundfarbe" ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "[None]" ; > ;
+ < "Bold" ; > ;
+ < "Italic" ; > ;
+ < "Strikethrough" ; > ;
+ < "Caps" ; > ;
+ < "Lower case" ; > ;
+ < "Small caps" ; > ;
+ < "Title Font" ; > ;
+ < "Background color" ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "[Keine]" ; > ;
+ < "Fett" ; > ;
+ < "Kursiv" ; > ;
+ < "Durchstreichen" ; > ;
+ < "Versalien" ; > ;
+ < "Gemeine" ; > ;
+ < "Kapitälchen" ; > ;
+ < "Titelschrift" ; > ;
+ < "Hintergrundfarbe" ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "[Inga]" ; > ;
+ < "Fet" ; > ;
+ < "Kursiv" ; > ;
+ < "Genomstruken" ; > ;
+ < "Versaler" ; > ;
+ < "Gemener" ; > ;
+ < "Små kapitäler" ; > ;
+ < "Titelteckensnitt" ; > ;
+ < "Bakgrundsfärg" ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "[Ingen]" ; > ;
+ < "Fed" ; > ;
+ < "Kursiv" ; > ;
+ < "Gennemstreget" ; > ;
+ < "Store bogstaver" ; > ;
+ < "Små bogstaver" ; > ;
+ < "Kapitæler" ; > ;
+ < "Titelskrift" ; > ;
+ < "Baggrundsfarve" ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "[nessuno]" ; > ;
+ < "Grassetto" ; > ;
+ < "Corsivo" ; > ;
+ < "Barrato" ; > ;
+ < "Maiuscolo" ; > ;
+ < "Minuscolo" ; > ;
+ < "Maiuscoletto" ; > ;
+ < "Carattere del titolo" ; > ;
+ < "Colore di sfondo" ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "[Ninguno]" ; > ;
+ < "Negrita" ; > ;
+ < "Cursiva" ; > ;
+ < "Tachar" ; > ;
+ < "Mayúsculas" ; > ;
+ < "Minúsculas" ; > ;
+ < "Versalitas" ; > ;
+ < "Caracteres del título" ; > ;
+ < "Color de fondo" ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "[Aucun(e)]" ; > ;
+ < "Gras" ; > ;
+ < "Italique" ; > ;
+ < "Barré" ; > ;
+ < "Majuscules" ; > ;
+ < "Minuscules" ; > ;
+ < "Petites majuscules" ; > ;
+ < "Caractères du titre" ; > ;
+ < "Couleur d'arrière-plan" ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "[Geen]" ; > ;
+ < "Vet" ; > ;
+ < "Cursief" ; > ;
+ < "Doorstrepen" ; > ;
+ < "Hoofdletters" ; > ;
+ < "Kleine letters" ; > ;
+ < "Kapitalen" ; > ;
+ < "Titelschrift" ; > ;
+ < "Achtergrondkleur" ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "[nenhum]" ; > ;
+ < "Negrito" ; > ;
+ < "Itálico" ; > ;
+ < "Rasurar" ; > ;
+ < "Maiúsculas" ; > ;
+ < "Minúsculas" ; > ;
+ < "Versaletes" ; > ;
+ < "Letra para título" ; > ;
+ < "Cor do plano de fundo" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "[ÎÞ]" ; > ;
+ < "´ÖÌå" ; > ;
+ < "бÌå" ; > ;
+ < "ɾ³ýÏß" ; > ;
+ < "´óд×Öĸ" ; > ;
+ < "Сд×Öĸ" ; > ;
+ < "СÐÍ´óд×Öĸ" ; > ;
+ < "±êÌâ×ÖÌå" ; > ;
+ < "±³¾°ÑÕÉ«" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "[Áåç]" ; > ;
+ < "Æèðíûé" ; > ;
+ < "Êóðñèâ" ; > ;
+ < "Çà÷åðêíóòûé" ; > ;
+ < "Ïðîïèñíûå" ; > ;
+ < "Ñòðî÷íûå áóêâû" ; > ;
+ < "Ìàëûå ïðîïèñíûå" ; > ;
+ < "Çàãëàâíûé øðèôò" ; > ;
+ < "Öâåò ôîíà" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "[Brak]" ; > ;
+ < "Pogrubienie" ; > ;
+ < "Kursywa" ; > ;
+ < "Przekreœlenie" ; > ;
+ < "Wersaliki" ; > ;
+ < "Ma³e litery" ; > ;
+ < "Kapitaliki" ; > ;
+ < "Czcionka tytu³owa" ; > ;
+ < "Kolor t³a" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "[‚È‚µ]" ; > ;
+ < "‘¾Žš" ; > ;
+ < "ŽÎ‘Ì" ; > ;
+ < "Žæ‚èÁ‚µü" ; > ;
+ < "‘啶Žš" ; > ;
+ < "¬•¶Žš" ; > ;
+ < "¬Œ^‘啶Žš" ; > ;
+ < "À²ÄÙ•¶Žš" ; > ;
+ < "”wŒiF" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "[µL]" ; > ;
+ < "²ÊÅé" ; > ;
+ < "±×Åé" ; > ;
+ < "§R°£½u" ; > ;
+ < "¤j¼g¦r¥À" ; > ;
+ < "¤p¼g¦r¥À" ; > ;
+ < "¤p«¬¤j¼g¦r¥À" ; > ;
+ < "¼ÐÃD¦r«¬" ; > ;
+ < "­I´ºÃC¦â" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "[ÈÏæä]" ; > ;
+ < "ÚÑíÖ" ; > ;
+ < "ãÇÆá" ; > ;
+ < "ÔØÈ" ; > ;
+ < "ÃÍÑÝ ßÈíÑÉ" ; > ;
+ < "ÃÍÑÝ ÕÛíÑÉ" ; > ;
+ < "ÍÑÝ ÈÏÇíÉ ÃßÈÑ" ; > ;
+ < "ÎØ ÇáÚäæÇä" ; > ;
+ < "áæä ÇáÎáÝíÉ" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "[ÊáíÝíá]" ; > ;
+ < "¸íôïíï" ; > ;
+ < "ÐëÜãéá" ; > ;
+ < "ÄéáãñÜììéóç" ; > ;
+ < "Êåöáëáßá" ; > ;
+ < "Ðåæïß ÷áñáêôÞñåò" ; > ;
+ < "ÌéêñÜ êåöáëáßá" ; > ;
+ < "ÃñáììáôïóåéñÜ ôßôëïõ" ; > ;
+ < "×ñþìá öüíôïõ" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "[¾øÀ½]" ; > ;
+ < "ÁøÇÏ°Ô" ; > ;
+ < "±â¿ïÀÓ²Ã" ; > ;
+ < "Ãë¼Ò¼±" ; > ;
+ < "´ë¹®ÀÚ" ; > ;
+ < "¼Ò¹®ÀÚ" ; > ;
+ < "ÀÛÀº ´ë¹®ÀÚ" ; > ;
+ < "Á¦¸ñ ±Û²Ã" ; > ;
+ < "¹è°æ»ö" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "[Yok]" ; > ;
+ < "Kalýn" ; > ;
+ < "Ýtalik" ; > ;
+ < "Üzerini çiz" ; > ;
+ < "Büyük harflerle" ; > ;
+ < "Küçük harflerle" ; > ;
+ < "Küçük büyük harf" ; > ;
+ < "Baþlýk yazýtipi" ; > ;
+ < "Artalan rengi" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ ListBox LB_TC_ATTRIB
+ {
+ Pos = MAP_APPFONT ( 115 , 17 ) ;
+ Size = MAP_APPFONT ( 80 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Hide = TRUE ;
+ StringList =
+ {
+ < "[Keine]" ; > ;
+ < "Fett" ; > ;
+ < "Kursiv" ; > ;
+ < "Unterstrichen" ; > ;
+ < "Doppelt unterstrichen" ; > ;
+ < "Versalien" ; > ;
+ < "Gemeine" ; > ;
+ < "Kapitälchen" ; > ;
+ < "Titelschrift" ; > ;
+ < "Hintergrundfarbe" ; > ;
+ };
+ StringList [ English ] =
+ {
+ < "[Keine]" ; > ;
+ < "Fett" ; > ;
+ < "Kursiv" ; > ;
+ < "Unterstrichen" ; > ;
+ < "Doppelt unterstrichen" ; > ;
+ < "Versalien" ; > ;
+ < "Gemeine" ; > ;
+ < "Kapitälchen" ; > ;
+ < "Titelschrift" ; > ;
+ < "Hintergrundfarbe" ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "[None]" ; > ;
+ < "Bold" ; > ;
+ < "Italic" ; > ;
+ < "Underline" ; > ;
+ < "Underline: double" ; > ;
+ < "Caps" ; > ;
+ < "Lower case" ; > ;
+ < "Small caps" ; > ;
+ < "Title Font" ; > ;
+ < "Background color" ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "[Keine]" ; > ;
+ < "Fett" ; > ;
+ < "Kursiv" ; > ;
+ < "Unterstrichen" ; > ;
+ < "Doppelt unterstrichen" ; > ;
+ < "Versalien" ; > ;
+ < "Gemeine" ; > ;
+ < "Kapitälchen" ; > ;
+ < "Titelschrift" ; > ;
+ < "Hintergrundfarbe" ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "[Inga]" ; > ;
+ < "Fet" ; > ;
+ < "Kursiv" ; > ;
+ < "Understruken" ; > ;
+ < "Dubbelt understruken" ; > ;
+ < "Versaler" ; > ;
+ < "Gemener" ; > ;
+ < "Små kapitäler" ; > ;
+ < "Titelteckensnitt" ; > ;
+ < "Bakgrundsfärg" ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "[Ingen]" ; > ;
+ < "Fed" ; > ;
+ < "Kursiv" ; > ;
+ < "Understreget" ; > ;
+ < "Dobbelt understreget" ; > ;
+ < "Store bogstaver" ; > ;
+ < "Små bogstaver" ; > ;
+ < "Kapitæler" ; > ;
+ < "Titelskrift" ; > ;
+ < "Baggrundsfarve" ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "[nessuno]" ; > ;
+ < "Grassetto" ; > ;
+ < "Corsivo" ; > ;
+ < "Sotttolineato" ; > ;
+ < "Sottolineatura doppia" ; > ;
+ < "Maiuscolo" ; > ;
+ < "Minuscolo" ; > ;
+ < "Maiuscoletto" ; > ;
+ < "Carattere del titolo" ; > ;
+ < "Colore di sfondo" ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "[Ninguno]" ; > ;
+ < "Negrita" ; > ;
+ < "Cursiva" ; > ;
+ < "Subrayado" ; > ;
+ < "Subrayado doble" ; > ;
+ < "Mayúsculas" ; > ;
+ < "Minúsculas" ; > ;
+ < "Versalitas" ; > ;
+ < "Caracteres del título" ; > ;
+ < "Color de fondo" ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "[Aucun(e)]" ; > ;
+ < "Gras" ; > ;
+ < "Italique" ; > ;
+ < "Soulignage" ; > ;
+ < "Soulignage : double" ; > ;
+ < "Majuscules" ; > ;
+ < "Minuscules" ; > ;
+ < "Petites majuscules" ; > ;
+ < "Caractères du titre" ; > ;
+ < "Couleur d'arrière-plan" ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "[Geen]" ; > ;
+ < "Vet" ; > ;
+ < "Cursief" ; > ;
+ < "Onderstrepen" ; > ;
+ < "Dubbel onderstrepen" ; > ;
+ < "Hoofdletters" ; > ;
+ < "Kleine letters" ; > ;
+ < "Kapitalen" ; > ;
+ < "Titelschrift" ; > ;
+ < "Achtergrondkleur" ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "(nenhuns]" ; > ;
+ < "Negrito" ; > ;
+ < "Itálico" ; > ;
+ < "Sublinhado" ; > ;
+ < "Sublinhado: duplo" ; > ;
+ < "Maiúsculas" ; > ;
+ < "Minúsculas" ; > ;
+ < "Versaletes" ; > ;
+ < "Letra para título" ; > ;
+ < "Cor do plano fundo" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "[ÎÞ]" ; > ;
+ < "´ÖÌå" ; > ;
+ < "бÌå" ; > ;
+ < "Ï»®Ïß" ; > ;
+ < "Ë«Ï»®Ïß" ; > ;
+ < "´óд×Öĸ" ; > ;
+ < "Сд×Öĸ" ; > ;
+ < "СÐÍ´óд×Öĸ" ; > ;
+ < "±êÌâ×ÖÌå" ; > ;
+ < "±³¾°ÑÕÉ«" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "[Áåç]" ; > ;
+ < "Æèðíûé" ; > ;
+ < "Êóðñèâ" ; > ;
+ < "Ïîä÷åðêèâàíèå" ; > ;
+ < "Äâîéíîå ïîä÷åðêèâàíèå" ; > ;
+ < "Ïðîïèñíûå" ; > ;
+ < "Ñòðî÷íûå áóêâû" ; > ;
+ < "Ìàëûå ïðîïèñíûå" ; > ;
+ < "Çàãëàâíûé øðèôò" ; > ;
+ < "Öâåò ôîíà" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "[Brak]" ; > ;
+ < "Pogrubianie" ; > ;
+ < "Kursywa" ; > ;
+ < "Podkreœlenie" ; > ;
+ < "Podwójne podkreœlenie" ; > ;
+ < "Wersaliki" ; > ;
+ < "Ma³e litery" ; > ;
+ < "Kapitaliki" ; > ;
+ < "Czcionka tytu³owa" ; > ;
+ < "Kolor t³a" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "[‚È‚µ]" ; > ;
+ < "‘¾Žš" ; > ;
+ < "ŽÎ‘Ì" ; > ;
+ < "伟" ; > ;
+ < "Җd伟" ; > ;
+ < "‘啶Žš" ; > ;
+ < "¬•¶Žš" ; > ;
+ < "¬Œ^‘啶Žš" ; > ;
+ < "À²ÄÙ•¶Žš" ; > ;
+ < "”wŒiF" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "[µL]" ; > ;
+ < "²ÊÅé" ; > ;
+ < "±×Åé" ; > ;
+ < "¤U¹º½u" ; > ;
+ < "Âù¤U¹º½u" ; > ;
+ < "¤j¼g¦r¥À" ; > ;
+ < "¤p¼g¦r¥À" ; > ;
+ < "¤p«¬¤j¼g¦r¥À" ; > ;
+ < "¼ÐÃD¦r«¬" ; > ;
+ < "­I´ºÃC¦â" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "[ÈÏæä]" ; > ;
+ < "ÚÑíÖ" ; > ;
+ < "ãÇÆá" ; > ;
+ < "ÊÍÊå ÎØ" ; > ;
+ < "ÎØ ÊÍÊí ãÒÏæÌ" ; > ;
+ < "ÃÍÑÝ ßÈíÑÉ" ; > ;
+ < "ÃÍÑÝ ÕÛíÑÉ" ; > ;
+ < "ÍÑÝ ÈÏÇíÉ ÃßÈÑ" ; > ;
+ < "ÎØ ÇáÚäæÇä" ; > ;
+ < "áæä ÇáÎáÝíÉ" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "[ÊáíÝíá]" ; > ;
+ < "¸íôïíï" ; > ;
+ < "ÐëÜãéá" ; > ;
+ < "ÕðïãñÜììéóç" ; > ;
+ < "ÄéðëÞ õðïãñÜììéóç" ; > ;
+ < "Êåöáëáßá" ; > ;
+ < "Ðåæïß ÷áñáêôÞñåò" ; > ;
+ < "ÌéêñÜ êåöáëáßá" ; > ;
+ < "ÃñáììáôïóåéñÜ ôßôëïõ" ; > ;
+ < "×ñþìá öüíôïõ" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "[¾øÀ½]" ; > ;
+ < "ÁøÇÏ°Ô" ; > ;
+ < "±â¿ïÀÓ²Ã" ; > ;
+ < "¹ØÁÙ" ; > ;
+ < "¹ØÁÙ: 2Áß" ; > ;
+ < "´ë¹®ÀÚ" ; > ;
+ < "¼Ò¹®ÀÚ" ; > ;
+ < "ÀÛÀº ´ë¹®ÀÚ" ; > ;
+ < "Á¦¸ñ ±Û²Ã" ; > ;
+ < "¹è°æ»ö" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "[Yok]" ; > ;
+ < "Kalýn" ; > ;
+ < "Ýtalik" ; > ;
+ < "Altý çizili" ; > ;
+ < "Altý çift çizili" ; > ;
+ < "Büyük harflerle" ; > ;
+ < "Küçük harflerle" ; > ;
+ < "Küçük büyük harf" ; > ;
+ < "Baþlýk yazýtipi" ; > ;
+ < "Artalan rengi" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ FixedText FT_TE_COL
+ {
+ Pos = MAP_APPFONT ( 74 , 34 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Farbe" ;
+ Text [ English ] = "Color" ;
+ Text [ portuguese ] = "~Cor" ;
+ Text [ english_us ] = "Color" ;
+ Text [ portuguese_brazilian ] = "Farbe" ;
+ Text [ swedish ] = "~Färg" ;
+ Text [ danish ] = "Farve" ;
+ Text [ italian ] = "Colore" ;
+ Text [ spanish ] = "~Color" ;
+ Text [ french ] = "Couleur" ;
+ Text [ dutch ] = "~Kleur" ;
+ Text[ chinese_simplified ] = "ÑÕÉ«";
+ Text[ russian ] = "Öâåò";
+ Text[ polish ] = "Kolor";
+ Text[ japanese ] = "F";
+ Text[ chinese_traditional ] = "ÃC¦â";
+ Text[ arabic ] = "Çááæä";
+ Text[ greek ] = "×ñþìá";
+ Text[ korean ] = "»ö»ó";
+ Text[ turkish ] = "~Renk";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_TE_COL
+ {
+ Pos = MAP_APPFONT ( 115 , 33 ) ;
+ Size = MAP_APPFONT ( 80 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ListBox LB_TL_COL
+ {
+ Pos = MAP_APPFONT ( 115 , 33 ) ;
+ Size = MAP_APPFONT ( 80 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Hide = TRUE ;
+ };
+ ListBox LB_TC_COL
+ {
+ Pos = MAP_APPFONT ( 115 , 33 ) ;
+ Size = MAP_APPFONT ( 80 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Hide = TRUE ;
+ };
+ Window WIN_TE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 198 , 22 ) ;
+ Size = MAP_APPFONT ( 50 , 18 ) ;
+ Text = "Beispiel" ;
+ Text [ English ] = "Example" ;
+ Text [ portuguese ] = "Exemplo" ;
+ Text [ english_us ] = "Example" ;
+ Text [ portuguese_brazilian ] = "Beispiel" ;
+ Text [ swedish ] = "Exempel" ;
+ Text [ danish ] = "Eksempel" ;
+ Text [ italian ] = "Esempio" ;
+ Text [ spanish ] = "Ejemplo" ;
+ Text [ french ] = "Exemple" ;
+ Text [ dutch ] = "Voorbeeld" ;
+ Text[ chinese_simplified ] = "Àý×Ó";
+ Text[ russian ] = "Ïðèìåð";
+ Text[ polish ] = "Przyk³ad";
+ Text[ japanese ] = "—á";
+ Text[ chinese_traditional ] = "¨Ò¤l";
+ Text[ arabic ] = "ãËÇá";
+ Text[ greek ] = "ÐáñÜäåéãìá";
+ Text[ korean ] = "¿¹";
+ Text[ turkish ] = "Örnek";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_TE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 70 ) ;
+ Text = "Textdarstellung" ;
+ Text [ English ] = "Text representation" ;
+ Text [ portuguese ] = "Visualizar texto" ;
+ Text [ english_us ] = "Text display" ;
+ Text [ portuguese_brazilian ] = "Textdarstellung" ;
+ Text [ swedish ] = "Textvisning" ;
+ Text [ danish ] = "Tekstvisning" ;
+ Text [ italian ] = "Rappresentazione testo" ;
+ Text [ spanish ] = "Ver texto" ;
+ Text [ french ] = "Affichage du texte" ;
+ Text [ dutch ] = "Tekstweergave" ;
+ Text[ chinese_simplified ] = "ÎÄ×ÖÏÔʾ";
+ Text[ russian ] = "Ïîêàç òåêñòà";
+ Text[ polish ] = "Wyœwietl tekst";
+ Text[ japanese ] = "÷½Ä‚ÌÃÞ¨½ÌßÚ²";
+ Text[ chinese_traditional ] = "¤å¦rÅã¥Ü";
+ Text[ arabic ] = "ÚÑÖ ÇáäÕ";
+ Text[ greek ] = "ÄéÜôáîç êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® Ç¥½Ã";
+ Text[ turkish ] = "Metin görünümü";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_MARKPOS
+ {
+ Pos = MAP_APPFONT ( 65 , 93 ) ;
+ Size = MAP_APPFONT ( 48 , 10 ) ;
+ Text = "Markierung" ;
+ Text [ English ] = "Mark" ;
+ Text [ portuguese ] = "Marca" ;
+ Text [ english_us ] = "Mark" ;
+ Text [ portuguese_brazilian ] = "Markierung" ;
+ Text [ swedish ] = "Markering" ;
+ Text [ danish ] = "Markering" ;
+ Text [ italian ] = "Contrassegno" ;
+ Text [ spanish ] = "Marca" ;
+ Text [ french ] = "Marque" ;
+ Text [ dutch ] = "Markering" ;
+ Text[ chinese_simplified ] = "񈬀";
+ Text[ russian ] = "Âûäåëåíèå";
+ Text[ polish ] = "Zaznaczenie";
+ Text[ japanese ] = "‘I‘ð";
+ Text[ chinese_traditional ] = "¼Ð°O";
+ Text[ arabic ] = "ÇáÊÍÏíÏ";
+ Text[ greek ] = "ÌáñêÜñéóìá";
+ Text[ korean ] = "Ç¥½Ã";
+ Text[ turkish ] = "Ýþaret";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_MARKPOS
+ {
+ Pos = MAP_APPFONT ( 115 , 92 ) ;
+ Size = MAP_APPFONT ( 80 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "[Keine]" ; > ;
+ < "Linker Rand" ; > ;
+ < "Rechter Rand" ; > ;
+ < "Außenrand" ; > ;
+ < "Innenrand" ; > ;
+ };
+ StringList [ English ] =
+ {
+ < "[Keine]" ; > ;
+ < "Linker Rand" ; > ;
+ < "Rechter Rand" ; > ;
+ < "Außenrand" ; > ;
+ < "Innenrand" ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "[nenhuns]" ; > ;
+ < "Margem esquerda" ; > ;
+ < "Margem direita" ; > ;
+ < "Margem exterior" ; > ;
+ < "Margem interior" ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "[None]" ; > ;
+ < "Left margin" ; > ;
+ < "Right margin" ; > ;
+ < "Outer margin" ; > ;
+ < "Inward margin" ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "[Keine]" ; > ;
+ < "Linker Rand" ; > ;
+ < "Rechter Rand" ; > ;
+ < "Außenrand" ; > ;
+ < "Innenrand" ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "[Inga]" ; > ;
+ < "Vänster marginal" ; > ;
+ < "Höger marginal" ; > ;
+ < "Utvändig marginal" ; > ;
+ < "Invändig marginal" ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "[Ingen]" ; > ;
+ < "Venstre margen" ; > ;
+ < "Højre margen" ; > ;
+ < "Ydermargen" ; > ;
+ < "Indermargen" ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "[nessuno]" ; > ;
+ < "Bordo sinistro" ; > ;
+ < "Bordo destro" ; > ;
+ < "Bordo esterno" ; > ;
+ < "Bordo interno" ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "[Ninguno]" ; > ;
+ < "Margen izquierdo" ; > ;
+ < "Margen derecho" ; > ;
+ < "Margen exterior" ; > ;
+ < "Margen interior" ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "[Aucun(e)]" ; > ;
+ < "Marge gauche" ; > ;
+ < "Marge droite" ; > ;
+ < "Marge extérieure" ; > ;
+ < "Marge intérieure" ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "[Geen]" ; > ;
+ < "Linker rand" ; > ;
+ < "Rechter rand" ; > ;
+ < "Buitenste rand" ; > ;
+ < "Binnenste rand" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "[ÎÞ]" ; > ;
+ < "×ó·½Ò³±ß¾à" ; > ;
+ < "ÓÒ·½Ò³±ß¾à" ; > ;
+ < "Íâ²àÒ³±ß¾à" ; > ;
+ < "ÄÚ²àÒ³±ß¾à" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "[Áåç]" ; > ;
+ < "Ëåâûé êðàé" ; > ;
+ < "Ïðàâûé êðàé" ; > ;
+ < "Íàðóæíûé êðàé" ; > ;
+ < "Âíóòðåííèé êðàé" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "[¿adne]" ; > ;
+ < "Lewy margines" ; > ;
+ < "Prawy margines" ; > ;
+ < "Margines zewnêtrzny" ; > ;
+ < "Margines wewnêtrzny" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "[‚È‚µ]" ; > ;
+ < "¶—]”’" ; > ;
+ < "‰E—]”’" ; > ;
+ < "ŠO‘¤‚Ì—]”’" ; > ;
+ < "“à‘¤‚Ì—]”’" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "[µL]" ; > ;
+ < "¥ª¦VÃä®Ø" ; > ;
+ < "¥k¦VÃä®Ø" ; > ;
+ < "Ãä®Ø¥~°¼" ; > ;
+ < "Ãä®Ø¤º°¼" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "[ÈÏæä]" ; > ;
+ < "ÇáåÇãÔ ÇáÃíÓÑ" ; > ;
+ < "ÇáåÇãÔ ÇáÃíãä" ; > ;
+ < "ÇáåÇãÔ ÇáÎÇÑÌí" ; > ;
+ < "ÇáåÇãÔ ÇáÏÇÎáí" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "[Êáìßá]" ; > ;
+ < "Áñéóôåñü ðåñéèþñéï" ; > ;
+ < "Äåîéü ðåñéèþñéï" ; > ;
+ < "Åîùôåñéêü ðåñéèþñéï" ; > ;
+ < "Åóùôåñéêü ðåñéèþñéï" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "[¾øÀ½]" ; > ;
+ < "¿ÞÂÊ ¿©¹é" ; > ;
+ < "¿À¸¥ÂÊ ¿©¹é" ; > ;
+ < "¹Ù±ùÂÊ ¿©¹é" ; > ;
+ < "¾ÈÂÊ ¿©¹é" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "[Yok]" ; > ;
+ < "Sol kenar" ; > ;
+ < "Sað kenar" ; > ;
+ < "Dýþ kenar" ; > ;
+ < "Ýç kenar" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ FixedText FT_LC_COL
+ {
+ Pos = MAP_APPFONT ( 65 , 109 ) ;
+ Size = MAP_APPFONT ( 48 , 10 ) ;
+ Text = "Farbe" ;
+ Text [ English ] = "Color" ;
+ Text [ english_us ] = "Color" ;
+ Text [ portuguese_brazilian ] = "Farbe" ;
+ Text [ swedish ] = "Färg" ;
+ Text [ danish ] = "Farve" ;
+ Text [ italian ] = "Colore" ;
+ Text [ spanish ] = "Color" ;
+ Text [ french ] = "Couleur" ;
+ Text [ dutch ] = "Kleur" ;
+ Text [ portuguese ] = "Cor" ;
+ Text[ chinese_simplified ] = "ÑÕÉ«";
+ Text[ russian ] = "Öâåò";
+ Text[ polish ] = "Kolor";
+ Text[ japanese ] = "F";
+ Text[ chinese_traditional ] = "ÃC¦â";
+ Text[ arabic ] = "Çááæä";
+ Text[ greek ] = "×ñþìá";
+ Text[ korean ] = "»ö»ó";
+ Text[ turkish ] = "Renk";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_LC_COL
+ {
+ Pos = MAP_APPFONT ( 115 , 108 ) ;
+ Size = MAP_APPFONT ( 80 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ Window WIN_MARK
+ {
+ Pos = MAP_APPFONT ( 198 , 92 ) ;
+ Size = MAP_APPFONT ( 52 , 31 ) ;
+ };
+ GroupBox GB_LC
+ {
+ Pos = MAP_APPFONT ( 6 , 79 ) ;
+ Size = MAP_APPFONT ( 248 , 50 ) ;
+ Text = "Geänderte Zeilen" ;
+ Text [ English ] = "Changed lines" ;
+ Text [ portuguese ] = "Linhas modificadas" ;
+ Text [ english_us ] = "Lines changed " ;
+ Text [ portuguese_brazilian ] = "Geänderte Zeilen" ;
+ Text [ swedish ] = "Ändrade rader" ;
+ Text [ danish ] = "Ændrede rækker" ;
+ Text [ italian ] = "Righe modificate" ;
+ Text [ spanish ] = "Líneas modificadas" ;
+ Text [ french ] = "Lignes modifiées" ;
+ Text [ dutch ] = "Gewijzigde regels" ;
+ Text[ chinese_simplified ] = "¸ü¸ÄµÄÐÐ";
+ Text[ russian ] = "Èçìåíåííûå ñòðîêè";
+ Text[ polish ] = "Zmienione wiersze";
+ Text[ japanese ] = "•ÏX‚µ‚½s";
+ Text[ chinese_traditional ] = "Åܧ󪺦æ";
+ Text[ arabic ] = "ÃÓØÑ ãÚÏáÉ";
+ Text[ greek ] = "ÃñáììÝò ðïõ Ý÷ïõí áëëá÷èåß";
+ Text[ korean ] = "¼±ÀÌ º¯°æµÇ¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Deðiþtirilen satýrlar";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTHOR
+ {
+ Text = "Nach Autor" ;
+ Text [ English ] = "By author" ;
+ Text [ portuguese ] = "Por autor" ;
+ Text [ english_us ] = "By author" ;
+ Text [ portuguese_brazilian ] = "Nach Autor" ;
+ Text [ swedish ] = "Efter författare" ;
+ Text [ danish ] = "Efter forfatter" ;
+ Text [ italian ] = "Secondo 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 ] = " ";
+ };
+ String STR_NOTHING
+ {
+ Text = "[Keine]" ;
+ Text [ English ] = "[None]" ;
+ Text [ portuguese ] = "[nenhum]" ;
+ Text [ english_us ] = "[None]" ;
+ Text [ portuguese_brazilian ] = "[Keine]" ;
+ Text [ swedish ] = "[Inga]" ;
+ Text [ danish ] = "[Ingen]" ;
+ Text [ italian ] = "[senza]" ;
+ Text [ spanish ] = "[Ningún]" ;
+ Text [ french ] = "[Aucun(e)]" ;
+ Text [ dutch ] = "[Geen]" ;
+ Text[ chinese_simplified ] = "[ÎÞ]";
+ Text[ russian ] = "[Áåç]";
+ Text[ polish ] = "[Brak]";
+ Text[ japanese ] = "[‚È‚µ]";
+ Text[ greek ] = "[ÊáíÝíá]";
+ Text[ korean ] = "[¾øÀ½]";
+ Text[ chinese_traditional ] = "[µL]";
+ Text[ arabic ] = "[ÈÏæä]";
+ Text[ turkish ] = "[Yok]";
+ };
+};
diff --git a/sw/source/ui/config/uinums.cxx b/sw/source/ui/config/uinums.cxx
new file mode 100644
index 000000000000..46c35bf3f88c
--- /dev/null
+++ b/sw/source/ui/config/uinums.cxx
@@ -0,0 +1,795 @@
+/*************************************************************************
+ *
+ * $RCSfile: uinums.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _SFXCFGITEM_HXX //autogen
+#include <sfx2/cfgitem.hxx>
+#endif
+#ifndef _SFX_INIMGR_HXX
+#include <sfx2/inimgr.hxx>
+#endif
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+
+
+#ifndef _TOOLS_RESID_HXX
+#include <tools/resid.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx> // Leerstring
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _UINUMS_HXX
+#include <uinums.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _CHARFMT_HXX
+#include <charfmt.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+
+#ifndef _CFGID_H
+#include <cfgid.h>
+#endif
+#ifndef _CFGSTR_HRC
+#include <cfgstr.hrc>
+#endif
+
+#define VERSION_30B ((USHORT)250)
+#define VERSION_31B ((USHORT)326)
+#define VERSION_40A ((USHORT)364)
+#define VERSION_50A ((USHORT)373)
+#define VERSION_53A ((USHORT)596)
+#define ACT_NUM_VERSION VERSION_53A
+
+#define NUMRULE_FILENAME "numrule.cfg"
+#define CHAPTER_FILENAME "chapter.cfg"
+#define C2S(cChar) String::CreateFromAscii(cChar)
+/*------------------------------------------------------------------------
+ Beschreibung: Ops. zum Laden / Speichern
+------------------------------------------------------------------------*/
+
+
+SV_IMPL_PTRARR( _SwNumFmtsAttrs, SfxPoolItem* )
+
+
+// SwNumRulesWithName ----------------------------------------------------
+// PUBLIC METHODES -------------------------------------------------------
+/*------------------------------------------------------------------------
+ Beschreibung: Speichern einer Regel
+ Parameter: rCopy -- die zu speichernde Regel
+ nIdx -- Position, an der die Regel zu speichern ist.
+ Eine alte Regel an dieser Position wird ueberschrieben.
+------------------------------------------------------------------------*/
+
+SwBaseNumRules::SwBaseNumRules( const String& rFileName )
+ : nVersion(0),
+ sFileName( rFileName ),
+ bModified( FALSE )
+{
+ Init();
+}
+
+/*-----------------26.06.97 08.30-------------------
+
+--------------------------------------------------*/
+SwBaseNumRules::~SwBaseNumRules()
+{
+ if( bModified )
+ {
+ String sNm( SFX_INIMANAGER()->Get( SFX_KEY_USERCONFIG_PATH ));
+ sNm = URIHelper::SmartRelToAbs(sNm);
+
+ sNm += INET_PATH_TOKEN;
+ sNm += sFileName;
+ INetURLObject aTempObj(sNm);
+ sNm = aTempObj.GetFull();
+ SvFileStream aStrm( sNm, STREAM_WRITE | STREAM_TRUNC |
+ STREAM_SHARE_DENYALL );
+ Store( aStrm );
+ }
+
+ for( USHORT i = 0; i < nMaxRules; ++i )
+ delete pNumRules[i];
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+void SwBaseNumRules::Init()
+{
+ for(USHORT i = 0; i < nMaxRules; ++i )
+ pNumRules[i] = 0;
+
+ String sNm( sFileName );
+ if( SFX_INIMANAGER()->SearchFile( sNm, SFX_KEY_USERCONFIG_PATH ))
+ {
+ SvFileStream aStrm( sNm, STREAM_STD_READ );
+ Load( aStrm );
+ }
+}
+
+/*-----------------26.06.97 08.30-------------------
+
+--------------------------------------------------*/
+
+void SwBaseNumRules::ApplyNumRules(const SwNumRulesWithName &rCopy, USHORT nIdx)
+{
+ ASSERT(nIdx < nMaxRules, Array der NumRules ueberindiziert.);
+ if( !pNumRules[nIdx] )
+ pNumRules[nIdx] = new SwNumRulesWithName( rCopy );
+ else
+ *pNumRules[nIdx] = rCopy;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Zugriff auf eine Regel ueber ihren Namen
+ Return: Pointer auf die Regel oder Nullptr, wenn nicht vorhanden
+------------------------------------------------------------------------*/
+
+
+const SwNumRulesWithName *SwBaseNumRules::GetRules(const String &rName) const
+{
+ for(USHORT i = 0; i < nMaxRules; ++i)
+ {
+ SwNumRulesWithName *pRule = pNumRules[i];
+ if( pRule && pRule->GetName() == rName)
+ return pRule;
+ }
+ return 0;
+}
+// PROTECTED METHODES ----------------------------------------------------
+/*------------------------------------------------------------------------
+ Beschreibung: Speichern
+------------------------------------------------------------------------*/
+
+BOOL /**/ SwBaseNumRules::Store(SvStream &rStream)
+{
+ rStream << ACT_NUM_VERSION;
+ // Schreiben, welche Positionen durch eine Regel belegt sind
+ // Anschliessend Schreiben der einzelnen Rules
+ for(USHORT i = 0; i < nMaxRules; ++i)
+ {
+ if(pNumRules[i])
+ {
+ rStream << (unsigned char) TRUE;
+ pNumRules[i]->Store( rStream );
+ }
+ else
+ rStream << (unsigned char) FALSE;
+ }
+ return SfxConfigItem::ERR_OK;
+}
+
+
+
+/*------------------------------------------------------------------------
+ Beschreibung: Speichern / Laden
+------------------------------------------------------------------------*/
+
+
+int SwBaseNumRules::Load(SvStream &rStream)
+{
+ int rc = SfxConfigItem::ERR_OK;
+
+ rStream >> nVersion;
+
+ // wegen eines kleinen aber schweren Fehlers schreibt die PreFinal die
+ // gleiche VERSION_40A wie das SP2 #55402#
+ if(VERSION_40A == nVersion)
+ {
+ DBG_ERROR("Version 364 ist nicht eindeutig #55402#")
+ }
+ else if( VERSION_30B == nVersion || VERSION_31B == nVersion ||
+ ACT_NUM_VERSION >= nVersion )
+ {
+ unsigned char bRule = FALSE;
+ for(USHORT i = 0; i < nMaxRules; ++i)
+ {
+ rStream >> bRule;
+ if(bRule)
+ pNumRules[i] = new SwNumRulesWithName( rStream, nVersion );
+ }
+ }
+ else
+ {
+ rc = SfxConfigItem::WARNING_VERSION;
+ }
+
+ return rc;
+}
+
+/*-----------------26.06.97 08.34-------------------
+
+--------------------------------------------------*/
+
+/*------------------------------------------------------------------------*/
+
+
+SwChapterNumRules::SwChapterNumRules() :
+ SwBaseNumRules(C2S(CHAPTER_FILENAME))
+{
+}
+
+/*------------------------------------------------------------------------*/
+
+ SwChapterNumRules::~SwChapterNumRules()
+{
+}
+
+/*-----------------26.06.97 08.23-------------------
+
+--------------------------------------------------*/
+void SwChapterNumRules::ApplyNumRules(const SwNumRulesWithName &rCopy, USHORT nIdx)
+{
+ bModified = TRUE;
+ SwBaseNumRules::ApplyNumRules(rCopy, nIdx);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+String SwChapterNumRules::GetName() const
+{
+ return SW_RESSTR( STR_CFG_UINUM );
+}
+
+/*------------------------------------------------------------------------*/
+
+SwNumRulesWithName::SwNumRulesWithName(const SwNumRule &rCopy,
+ const String &rName)
+ : aName(rName)
+{
+ for( int n = 0; n < MAXLEVEL; ++n )
+ {
+ const SwNumFmt* pFmt = rCopy.GetNumFmt( n );
+ if( pFmt )
+ aFmts[ n ] = new _SwNumFmtGlobal( *pFmt );
+ else
+ aFmts[ n ] = 0;
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+SwNumRulesWithName::SwNumRulesWithName( const SwNumRulesWithName& rCopy )
+{
+ memset( aFmts, 0, sizeof( aFmts ));
+ *this = rCopy;
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+SwNumRulesWithName::~SwNumRulesWithName()
+{
+ for( int n = 0; n < MAXLEVEL; ++n )
+ delete aFmts[ n ];
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+const SwNumRulesWithName& SwNumRulesWithName::operator=(const SwNumRulesWithName &rCopy)
+{
+ if( this != &rCopy )
+ {
+ aName = rCopy.aName;
+ for( int n = 0; n < MAXLEVEL; ++n )
+ {
+ delete aFmts[ n ];
+
+ _SwNumFmtGlobal* pFmt = rCopy.aFmts[ n ];
+ if( pFmt )
+ aFmts[ n ] = new _SwNumFmtGlobal( *pFmt );
+ else
+ aFmts[ n ] = 0;
+ }
+ }
+ return *this;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+SwNumRulesWithName::SwNumRulesWithName( SvStream &rStream, USHORT nVersion )
+{
+ CharSet eEncoding = gsl_getSystemTextEncoding();
+ rStream.ReadByteString(aName, eEncoding);
+
+ char c;
+ for(USHORT n = 0; n < MAXLEVEL; ++n )
+ {
+ if( VERSION_30B == nVersion )
+ c = 1;
+ // wegen eines kleinen aber schweren Fehlers schreibt die PreFinal die
+ // gleiche VERSION_40A wie das SP2 #55402#
+ else if(nVersion < VERSION_40A && n > 5)
+// else if(nVersion < VERSION_50A && n > 5)
+ c = 0;
+ else
+ rStream >> c;
+
+ if( c )
+ aFmts[ n ] = new _SwNumFmtGlobal( rStream, nVersion );
+ else
+ aFmts[ n ] = 0;
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwNumRulesWithName::MakeNumRule( SwWrtShell& rSh, SwNumRule& rChg ) const
+{
+ rChg = SwNumRule( aName );
+ rChg.SetAutoRule( FALSE );
+ _SwNumFmtGlobal* pFmt;
+ for( USHORT n = 0; n < MAXLEVEL; ++n )
+ if( 0 != ( pFmt = aFmts[ n ] ) )
+ {
+ SwNumFmt aNew;
+ pFmt->ChgNumFmt( rSh, aNew );
+ rChg.Set( n, aNew );
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+void SwNumRulesWithName::Store( SvStream &rStream )
+{
+ CharSet eEncoding = gsl_getSystemTextEncoding();
+ rStream.WriteByteString(aName, eEncoding);
+
+ for( USHORT n = 0; n < MAXLEVEL; ++n )
+ {
+ _SwNumFmtGlobal* pFmt = aFmts[ n ];
+ if( pFmt )
+ {
+ rStream << (char)1;
+ pFmt->Store( rStream );
+ }
+ else
+ rStream << (char)0;
+ }
+}
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+SwNumRulesWithName::_SwNumFmtGlobal::_SwNumFmtGlobal( const SwNumFmt& rFmt )
+ : aFmt( rFmt ), nCharPoolId( USHRT_MAX )
+{
+ // relative Abstaende ?????
+
+ SwCharFmt* pFmt = rFmt.GetCharFmt();
+ if( pFmt )
+ {
+ sCharFmtName = pFmt->GetName();
+ nCharPoolId = pFmt->GetPoolFmtId();
+ if( pFmt->GetAttrSet().Count() )
+ {
+ SfxItemIter aIter( pFmt->GetAttrSet() );
+ const SfxPoolItem *pCurr = aIter.GetCurItem();
+ while( TRUE )
+ {
+ aItems.Insert( pCurr->Clone(), aItems.Count() );
+ if( aIter.IsAtEnd() )
+ break;
+ pCurr = aIter.NextItem();
+ }
+ }
+
+ aFmt.SetCharFmt( 0 );
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwNumRulesWithName::_SwNumFmtGlobal::_SwNumFmtGlobal( const _SwNumFmtGlobal& rFmt )
+ : aFmt( rFmt.aFmt ), nCharPoolId( rFmt.nCharPoolId ),
+ sCharFmtName( rFmt.sCharFmtName )
+{
+ for( USHORT n = rFmt.aItems.Count(); n; )
+ aItems.Insert( rFmt.aItems[ --n ]->Clone(), aItems.Count() );
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwNumRulesWithName::_SwNumFmtGlobal::_SwNumFmtGlobal( SvStream& rStream,
+ USHORT nVersion )
+ : nCharPoolId( USHRT_MAX )
+{
+ CharSet eEncoding = gsl_getSystemTextEncoding();
+ {
+ USHORT nUS;
+ sal_Char cChar;
+ short nShort;
+ BOOL bFlag;
+ String sStr;
+
+ rStream >> nUS; aFmt.eType = SvxExtNumType( nUS );
+ if( VERSION_53A > nVersion )
+ {
+ rStream >> cChar; aFmt.SetBulletChar( cChar );
+ }
+ else
+ {
+ rStream >> nUS; aFmt.SetBulletChar( nUS );
+ }
+
+ rStream >> bFlag; aFmt.SetInclUpperLevel( bFlag );
+
+ if( VERSION_30B == nVersion )
+ {
+ long nL;
+ rStream >> cChar; aFmt.SetStartValue( (USHORT)cChar );
+
+ rStream.ReadByteString(sStr, eEncoding);
+ aFmt.SetPrefix( sStr );
+ rStream.ReadByteString(sStr, eEncoding);
+ aFmt.SetPostfix( sStr );
+ rStream >> nUS; aFmt.SetAdjust( SvxAdjust( nUS ) );
+ rStream >> nL; aFmt.SetLSpace( lNumIndent );
+ rStream >> nL; aFmt.SetFirstLineOffset( (short)nL );
+ aFmt.SetRelLSpace( TRUE );
+ }
+ else // alter StartWert war ein Byte
+ {
+ rStream >> nUS; aFmt.SetStartValue( nUS );
+ rStream.ReadByteString(sStr, eEncoding);
+ aFmt.SetPrefix( sStr );
+ rStream.ReadByteString(sStr, eEncoding);
+ aFmt.SetPostfix( sStr );
+ rStream >> nUS; aFmt.SetAdjust( SvxAdjust( nUS ) );
+ rStream >> nUS; aFmt.SetAbsLSpace( nUS );
+ rStream >> nShort; aFmt.SetFirstLineOffset( nShort );
+ rStream >> nUS; aFmt.SetCharTextOffset( nUS );
+ rStream >> nShort; aFmt.SetLSpace( nShort );
+ rStream >> bFlag; aFmt.SetRelLSpace( bFlag );
+ }
+
+ USHORT nFamily;
+ USHORT nCharSet;
+ short nWidth;
+ short nHeight;
+ USHORT nPitch;
+ String aName;
+
+ rStream.ReadByteString(aName, eEncoding);
+ rStream >> nFamily >> nCharSet >> nWidth >> nHeight >> nPitch;
+
+ if( aName.Len() )
+ {
+ Font aFont( nFamily, Size( nWidth, nHeight ) );
+ aFont.SetName( aName );
+ aFont.SetCharSet( (CharSet)nCharSet );
+ aFont.SetPitch( (FontPitch)nPitch );
+
+ aFmt.SetBulletFont( &aFont );
+ }
+ else
+ nCharSet = RTL_TEXTENCODING_SYMBOL;
+
+ if( VERSION_53A > nVersion )
+ aFmt.SetBulletChar( ByteString::ConvertToUnicode(
+ aFmt.GetBulletChar(), nCharSet ));
+ }
+
+ if( VERSION_30B != nVersion )
+ {
+ USHORT nItemCount;
+ rStream >> nCharPoolId;
+ rStream.ReadByteString(sCharFmtName, eEncoding);
+ rStream >> nItemCount;
+
+ while( nItemCount-- )
+ {
+ USHORT nWhich, nVers;
+ rStream >> nWhich >> nVers;
+ aItems.Insert( GetDfltAttr( nWhich )->Create( rStream, nVers ),
+ aItems.Count() );
+ }
+ }
+
+ if( VERSION_40A == nVersion && SVX_NUM_BITMAP == aFmt.eType )
+ {
+ BYTE cF;
+ Size aSz;
+
+ rStream >> aSz.Width() >> aSz.Height();
+
+ rStream >> cF;
+ if( cF )
+ {
+ SvxBrushItem* pBrush = 0;
+ SwFmtVertOrient* pVOrient = 0;
+ USHORT nVer;
+
+ if( cF & 1 )
+ {
+ rStream >> nVer;
+ pBrush = (SvxBrushItem*)GetDfltAttr( RES_BACKGROUND )
+ ->Create( rStream, nVer );
+ }
+
+ if( cF & 2 )
+ {
+ rStream >> nVer;
+ pVOrient = (SwFmtVertOrient*)GetDfltAttr( RES_VERT_ORIENT )
+ ->Create( rStream, nVer );
+ }
+ aFmt.SetGrfBrush( pBrush, &aSz, pVOrient );
+ }
+ }
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwNumRulesWithName::_SwNumFmtGlobal::~_SwNumFmtGlobal()
+{
+}
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+void SwNumRulesWithName::_SwNumFmtGlobal::Store( SvStream& rStream )
+{
+ CharSet eEncoding = gsl_getSystemTextEncoding();
+ {
+ String aName;
+ USHORT nFamily = FAMILY_DONTKNOW, nCharSet = 0, nPitch = 0;
+ short nWidth = 0, nHeight = 0;
+
+ const Font* pFnt = aFmt.GetBulletFont();
+ if( pFnt )
+ {
+ aName = pFnt->GetName();
+ nFamily = (USHORT)pFnt->GetFamily();
+ nCharSet = (USHORT)pFnt->GetCharSet();
+ nWidth = (short)pFnt->GetSize().Width();
+ nHeight = (short)pFnt->GetSize().Height();
+ nPitch = (USHORT)pFnt->GetPitch();
+ }
+
+ rStream << USHORT(aFmt.eType)
+ << aFmt.GetBulletChar()
+ << aFmt.IsInclUpperLevel()
+ << aFmt.GetStartValue();
+ rStream.WriteByteString( aFmt.GetPrefix(), eEncoding );
+ rStream.WriteByteString( aFmt.GetPostfix(), eEncoding );
+ rStream << USHORT( aFmt.GetAdjust() )
+ << aFmt.GetAbsLSpace()
+ << aFmt.GetFirstLineOffset()
+ << aFmt.GetCharTextOffset()
+ << aFmt.GetLSpace()
+ << aFmt.IsRelLSpace();
+ rStream.WriteByteString( aName, eEncoding );
+ rStream << nFamily
+ << nCharSet
+ << nWidth
+ << nHeight
+ << nPitch;
+ }
+ rStream << nCharPoolId;
+ rStream.WriteByteString( sCharFmtName, eEncoding );
+ rStream << aItems.Count();
+
+ for( USHORT n = aItems.Count(); n; )
+ {
+ SfxPoolItem* pItem = aItems[ --n ];
+ USHORT nIVers = pItem->GetVersion( SOFFICE_FILEFORMAT_NOW );
+ ASSERT( nIVers != USHRT_MAX,
+ "Was'n das: Item-Version USHRT_MAX in der aktuellen Version" );
+ rStream << pItem->Which()
+ << nIVers;
+ pItem->Store( rStream, nIVers );
+ }
+
+ // Erweiterungen fuer Version 40A
+
+ if( SVX_NUM_BITMAP == aFmt.eType )
+ {
+ rStream << (INT32)aFmt.GetGrfSize().Width()
+ << (INT32)aFmt.GetGrfSize().Height();
+ BYTE cFlg = ( 0 != aFmt.GetGrfBrush() ? 1 : 0 ) +
+ ( 0 != aFmt.GetGrfOrient() ? 2 : 0 );
+ rStream << cFlg;
+
+ if( aFmt.GetGrfBrush() )
+ {
+ USHORT nVersion = aFmt.GetGrfBrush()->GetVersion( SOFFICE_FILEFORMAT_NOW );
+ rStream << nVersion;
+ aFmt.GetGrfBrush()->Store( rStream, nVersion );
+ }
+ if( aFmt.GetGrfOrient() )
+ {
+ USHORT nVersion = aFmt.GetGrfOrient()->GetVersion( SOFFICE_FILEFORMAT_NOW );
+ rStream << nVersion;
+ aFmt.GetGrfOrient()->Store( rStream, nVersion );
+ }
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwNumRulesWithName::_SwNumFmtGlobal::ChgNumFmt( SwWrtShell& rSh,
+ SwNumFmt& rNew ) const
+{
+ SwCharFmt* pFmt = 0;
+ if( sCharFmtName.Len() )
+ {
+ // suche erstmal ueber den Namen
+ USHORT nArrLen = rSh.GetCharFmtCount();
+ for( USHORT i = 1; i < nArrLen; ++i )
+ {
+ pFmt = &rSh.GetCharFmt( i );
+ if( COMPARE_EQUAL == pFmt->GetName().CompareTo( sCharFmtName ))
+ // ist vorhanden, also belasse die Attribute wie sie sind!
+ break;
+ pFmt = 0;
+ }
+
+ if( !pFmt )
+ {
+ if( IsPoolUserFmt( nCharPoolId ) )
+ {
+ pFmt = rSh.MakeCharFmt( sCharFmtName );
+ pFmt->SetAuto( FALSE );
+ }
+ else
+ pFmt = rSh.GetCharFmtFromPool( nCharPoolId );
+
+ if( !pFmt->GetDepends() ) // Attribute setzen
+ for( USHORT n = aItems.Count(); n; )
+ pFmt->SetAttr( *aItems[ --n ] );
+ }
+ }
+ ((SwNumFmt&)aFmt).SetCharFmt( pFmt );
+ rNew = aFmt;
+ if( pFmt )
+ ((SwNumFmt&)aFmt).SetCharFmt( 0 );
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.69 2000/09/18 16:05:18 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.68 2000/07/26 10:46:37 jp
+ Bulletchar is now an unicode char, so we must write a new format
+
+ Revision 1.67 2000/07/24 12:55:43 jp
+ Bug #76561#: convert Bulletchar to unicode
+
+ Revision 1.66 2000/06/26 13:09:13 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.65 2000/06/07 13:08:17 os
+ using UCB
+
+ Revision 1.64 2000/04/20 12:50:49 os
+ GetName() returns String&
+
+ Revision 1.63 2000/04/11 08:02:24 os
+ UNICODE
+
+ Revision 1.62 2000/03/03 15:16:59 os
+ StarView remainders removed
+
+ Revision 1.61 1999/10/21 17:47:37 jp
+ have to change - SearchFile with SfxIniManager, dont use SwFinder for this
+
+ Revision 1.60 1998/11/17 09:50:14 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+
+ Rev 1.59 17 Nov 1998 10:50:14 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/config/usrpref.cxx b/sw/source/ui/config/usrpref.cxx
new file mode 100644
index 000000000000..1180dc1ec072
--- /dev/null
+++ b/sw/source/ui/config/usrpref.cxx
@@ -0,0 +1,818 @@
+/*************************************************************************
+ *
+ * $RCSfile: usrpref.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+
+
+#include "swtypes.hxx"
+#include "hintids.hxx"
+#include "uitool.hxx"
+#include "usrpref.hxx"
+#include "crstate.hxx"
+#include "cfgid.h"
+#include "cfgstr.hrc"
+#ifndef _OFA_OSPLCFG_HXX
+#include <offmgr/osplcfg.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+
+#ifndef _LINGU_LNGPROPS_HHX_
+#include <lingu/lngprops.hxx>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::rtl;
+
+#define C2U(cChar) OUString::createFromAscii(cChar)
+#define C2S(cChar) String::CreateFromAscii(cChar)
+
+#define VERSION_30B ((sal_uInt16)250) //Beta1 ??
+#define VERSION_30B2 ((sal_uInt16)251) //Beta2
+#define VERSION_30B3 ((sal_uInt16)252) //Beta2.9
+#define VERSION_30B4 ((sal_uInt16)253) //Beta3.1
+#define VERSION_30B5 ((sal_uInt16)254) //Beta4
+#define VERSION_30B6 ((sal_uInt16)256) //Beta6
+#define VERSION_301B6 ((sal_uInt16)257) //Beta6+OnlineSpelling
+#define VERSION_301_03 ((sal_uInt16)258) //Flag fuer BrowseMode
+#define VERSION_301_04 ((sal_uInt16)259) //Flag fuer Massstab beibehalten (Crop)
+#define VERSION_391_05 ((sal_uInt16)260) //Endlich das product/non-product chaos aufgeloest.
+#define VERSION_302_01 ((sal_uInt16)313) //Zusammenfassung der Optionen ab SV 313
+#define VERSION_302_02 ((sal_uInt16)325) //nTblDest neu
+#define VERSION_326e ((sal_uInt16)326) //PrintPageBack neu
+#define VERSION_327c ((sal_uInt16)327) //ExecHyperlinks neu
+#define VERSION_328 ((sal_uInt16)328) //HtmlMode
+#define VERSION_332 ((sal_uInt16)332) //DefaultBackground
+#define VERSION_333 ((sal_uInt16)333) //Symbolfont-Position
+#define VERSION_346 ((sal_uInt16)346) //nCore2Options neu
+#define VERSION_349 ((sal_uInt16)349) //TabDist und UndoCount raus
+#define VERSION_4SP2a ((sal_uInt16)400) //HiddenPara, Fixpack II
+#define VERSION_371 ((sal_uInt16)471) //ShadowCrsr
+#define VERSION_388 ((sal_uInt16)500) //BackgroundBrush -> Background Color
+#define VERSION_511 ((sal_uInt16)511) //Bereichsbegrenzung, Cursor in gesch. Zonen
+#define VERSION_512 ((sal_uInt16)512) //index background flag and color
+
+
+// mit der naechsten Version koennen die Dummies fuer die TabDist raus
+
+#define USRPEF_VERSION VERSION_512
+
+
+sal_Bool bNotLoadLayout = sal_False; // fuer MD
+
+
+void SwMasterUsrPref::SetUsrPref(const SwViewOption &rCopy)
+{
+ *((SwViewOption*)this) = rCopy;
+
+#ifndef PRODUCT
+ bNotLoadLayout = rCopy.IsTest1(); // MD Layout lesen
+#endif
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Schreiben / Lesen Konfiguration.
+ Die einzelnen Bits des Bitfeldes muessen als
+ char geschrieben werden, da die Bits eines Bytes
+ auf den verschiedenen Plattformen unterschiedlich
+ abgelegt werden.
+------------------------------------------------------------------------*/
+
+
+sal_Bool SwMasterUsrPref::Store(SvStream& rStream)
+{
+ rStream << USRPEF_VERSION;
+
+#ifdef PRODUCT
+ rStream << sal_Int8(1);
+#else
+ rStream << sal_Int8(0);
+#endif
+
+ rStream << nCoreOptions;
+ rStream << nCore2Options;
+ rStream << nUIOptions;
+
+ rStream << sal_uInt32(GetSnapSize().Width());
+ rStream << sal_uInt32(GetSnapSize().Height());
+ rStream << sal_uInt16(GetDivisionX());
+ rStream << sal_uInt16(GetDivisionY());
+
+ rStream << sal_uInt16(GetZoom());
+ rStream << sal_uInt16(eZoom);
+ rStream << sal_Int8(nTblDest);
+
+ rStream << sal_uInt16(::GetDfltMetric(sal_False));
+
+ rStream.WriteByteString(sSymbolFont, gsl_getSystemTextEncoding());
+
+ rStream << sal_Int8(GetPagePrevRow());
+ rStream << sal_Int8(GetPagePrevCol());
+
+ rStream << sal_uInt32(GetRetoucheColor().GetColor());
+
+ rStream << (sal_Int8)nShdwCrsrFillMode;
+ rStream << (sal_uInt32)aShdwCrsrCol.GetColor();
+
+ rStream << (sal_uInt32)aIdxBackgrndCol.GetColor();
+
+#ifndef PRODUCT
+ sal_Int8 nFlags3 = 0;
+ if ( bTest1 ) nFlags3 |= 0x01;
+ if ( bTest2 ) nFlags3 |= 0x02;
+ if ( bTest3 ) nFlags3 |= 0x04;
+ if ( bTest4 ) nFlags3 |= 0x08;
+ if ( bTest5 ) nFlags3 |= 0x10;
+ if ( bTest6 ) nFlags3 |= 0x20;
+ if ( bTest7 ) nFlags3 |= 0x40;
+ if ( bTest8 ) nFlags3 |= 0x80;
+ rStream << nFlags3;
+#endif
+
+ return SfxConfigItem::ERR_OK;
+}
+
+
+
+int SwMasterUsrPref::Load(SvStream& rStream)
+{
+ SetDefault( sal_False );
+
+ sal_uInt16 nVersion;
+ rStream >> nVersion;
+
+ sal_Int8 nProductFlag;
+ if ( nVersion >= VERSION_391_05 )
+ rStream >> nProductFlag;
+
+ if( nVersion >= VERSION_30B6 && nVersion < VERSION_302_01 )
+ {
+ nCore2Options = VIEWOPT_CORE2_BLACKFONT;
+ sal_uInt16 nFlags;
+ rStream >> nFlags;
+ nUIOptions = 0;
+ nUIOptions |= (nFlags & 0x0001) ? VIEWOPT_2_TOOLBOX : 0 ;
+ nUIOptions |= (nFlags & 0x0002) ? VIEWOPT_2_TOOLBOXTEXT : 0 ;
+ nUIOptions |= (nFlags & 0x0004) ? VIEWOPT_2_TOOLBOXBITMAP : 0 ;
+ nUIOptions |= (nFlags & 0x0008) ? VIEWOPT_2_TOOLBOXBOTH : 0 ;
+ nUIOptions |= (nFlags & 0x0010) ? VIEWOPT_2_TOOLBOXLEFT : 0 ;
+ nUIOptions |= (nFlags & 0x0020) ? VIEWOPT_2_TOOLBOXRIGHT : 0 ;
+ nUIOptions |= (nFlags & 0x0040) ? VIEWOPT_2_TOOLBOXTOP : 0 ;
+ nUIOptions |= (nFlags & 0x0080) ? VIEWOPT_2_TOOLBOXBOTTOM : 0 ;
+ nUIOptions |= (nFlags & 0x0100) ? VIEWOPT_2_UNUSED1 : 0 ;
+ nUIOptions |= (nFlags & 0x0200) ? VIEWOPT_2_RIBBONBAR : 0 ;
+ nUIOptions |= (nFlags & 0x0400) ? VIEWOPT_2_TABWIN : 0 ;
+ nUIOptions |= (nFlags & 0x0800) ? VIEWOPT_2_VSCROLLBAR : 0 ;
+ nUIOptions |= (nFlags & 0x1000) ? VIEWOPT_2_HSCROLLBAR : 0 ;
+ nUIOptions |= (nFlags & 0x2000) ? VIEWOPT_2_STATUSLINE : 0 ;
+ nUIOptions |= (nFlags & 0x4000) ? VIEWOPT_2_VLIN : 0 ;
+ nUIOptions |= (nFlags & 0x8000) ? VIEWOPT_2_SVLOOK : 0 ;
+
+
+ sal_uInt32 nFlags2;
+ rStream >> nFlags2;
+ nCoreOptions = VIEWOPT_1_IDLE;
+ nCoreOptions |= (nFlags2 & 0x00000001) ? VIEWOPT_1_TAB : 0;
+ nCoreOptions |= (nFlags2 & 0x00000002) ? VIEWOPT_1_BLANK : 0;
+ nCoreOptions |= (nFlags2 & 0x00000004) ? VIEWOPT_1_HARDBLANK : 0;
+ nCoreOptions |= (nFlags2 & 0x00000008) ? VIEWOPT_1_PARAGRAPH : 0;
+ nCoreOptions |= (nFlags2 & 0x00000010) ? VIEWOPT_1_LINEBREAK : 0;
+ nCoreOptions |= (nFlags2 & 0x00000020) ? VIEWOPT_1_PAGEBREAK : 0;
+ nCoreOptions |= (nFlags2 & 0x00000040) ? VIEWOPT_1_COLUMNBREAK: 0;
+ nCoreOptions |= (nFlags2 & 0x00000080) ? VIEWOPT_1_SOFTHYPH : 0;
+ nCoreOptions |= (nFlags2 & 0x00000100) ? VIEWOPT_1_TOX : 0;
+ nCoreOptions |= (nFlags2 & 0x00000200) ? VIEWOPT_1_REF : 0;
+ nCoreOptions |= (nFlags2 & 0x00000400) ? VIEWOPT_1_FLDNAME : 0;
+ nCoreOptions |= (nFlags2 & 0x00000800) ? VIEWOPT_1_FIELD : 0;
+ nCoreOptions |= (nFlags2 & 0x00001000) ? VIEWOPT_1_FOOTNOTE : 0;
+ nCoreOptions |= (nFlags2 & 0x00002000) ? VIEWOPT_1_POSTITS : 0;
+ nCoreOptions |= (nFlags2 & 0x00004000) ? VIEWOPT_1_HIDDEN : 0;
+ nCoreOptions |= (nFlags2 & 0x00008000) ? VIEWOPT_1_SUBSLINES : 0;
+ nCoreOptions |= (nFlags2 & 0x00010000) ? VIEWOPT_1_GRAPHIC : 0;
+ nCoreOptions |= (nFlags2 & 0x00020000) ? VIEWOPT_1_TABLE : 0;
+ nCoreOptions |= (nFlags2 & 0x00040000) ? VIEWOPT_1_SUBSTABLE : 0;
+ nCoreOptions |= (nFlags2 & 0x00080000) ? VIEWOPT_1_CROSSHAIR : 0;
+ nCoreOptions |= (nFlags2 & 0x00100000) ? VIEWOPT_1_SNAP : 0;
+ nCoreOptions |= (nFlags2 & 0x00200000) ? VIEWOPT_1_SYNCHRONIZE: 0;
+ nCoreOptions |= (nFlags2 & 0x00400000) ? VIEWOPT_1_GRIDVISIBLE: 0;
+ nCoreOptions |= (nFlags2 & 0x00800000) ? VIEWOPT_1_DRAW : 0;
+
+ sal_uInt32 lWidth, lHeight;
+ rStream >> lWidth;
+ rStream >> lHeight;
+ Size aSz( lWidth, lHeight );
+ SetSnapSize( aSz );
+
+ sal_uInt16 sVal;
+ rStream >> sVal;
+ SetDivisionX( sVal );
+ rStream >> sVal;
+ SetDivisionY( sVal );
+
+ sal_uInt16 nZoom;
+ rStream >> nZoom;
+ SetZoom( nZoom );
+ rStream >> nZoom;
+ eZoom = int(nZoom);
+ nTblDest = TBL_DEST_CELL;
+
+ sal_uInt16 nMet;
+ //Default-Tabulator und Metric
+ // werden noch gelesen/geschrieben, damit die Version bleiben kann
+ rStream >> nMet;
+ rStream >> nMet;
+
+ sal_Int8 nPrev;
+ rStream >> nPrev;
+ SetPagePrevRow(nPrev);
+ rStream >> nPrev;
+ SetPagePrevCol(nPrev);
+
+ sal_uInt16 nUndo;
+ rStream >> nUndo;
+
+ if( nVersion > VERSION_30B6 )
+ {
+ rStream >> nPrev;
+ SetKeepRatio( nPrev );
+ }
+ else
+ SetKeepRatio( sal_False );
+ if( nVersion > VERSION_301_03 )
+ {
+ rStream >> nPrev;
+ SetGrfKeepZoom( nPrev ) ;
+ }
+ else
+ SetGrfKeepZoom( sal_False );
+
+#ifndef PRODUCT
+ if ( nVersion < VERSION_391_05 || nProductFlag == sal_Int8(0) )
+ {
+ sal_Int8 nFlags3;
+ rStream >> nFlags3;
+ bTest1 = sal_Int8( (nFlags3 & 0x01) != 0 );
+ if(bNotLoadLayout && !bTest1)
+ DBG_ERROR("Layout wird doch geladen - nochmal versuchen!")
+ bNotLoadLayout = bTest1;
+
+ bTest2 = sal_Int8( (nFlags3 & 0x02) != 0 );
+ bTest3 = sal_Int8( (nFlags3 & 0x04) != 0 );
+ bTest4 = sal_Int8( (nFlags3 & 0x08) != 0 );
+ bTest5 = sal_Int8( (nFlags3 & 0x10) != 0 );
+ bTest6 = sal_Int8( (nFlags3 & 0x20) != 0 );
+ bTest7 = sal_Int8( (nFlags3 & 0x40) != 0 );
+ bTest8 = sal_Int8( (nFlags3 & 0x80) != 0 );
+ }
+ else
+ bTest1 = bTest2 = bTest3 = bTest4 = bTest5 = bTest6 =
+ bTest7 = bTest8 = bNotLoadLayout = sal_False;
+#endif
+ }
+ else if( nVersion >= VERSION_302_01)
+ {
+ rStream >> nCoreOptions;
+ nCoreOptions |= VIEWOPT_1_IDLE;
+ if( nVersion < VERSION_326e )
+ nCoreOptions |= VIEWOPT_1_PAGEBACK;
+ if(nVersion >= VERSION_346)
+ {
+ rStream >> nCore2Options;
+ if ( nVersion < VERSION_4SP2a )
+ nCore2Options |= VIEWOPT_CORE2_HIDDENPARA;
+ }
+ else
+ nCore2Options = VIEWOPT_CORE2_BLACKFONT | VIEWOPT_CORE2_HIDDENPARA;
+
+ if(nVersion < VERSION_511)
+ {
+ nCore2Options &= ~VIEWOPT_CORE2_SECTION_BOUNDS;
+ nCore2Options |= VIEWOPT_CORE2_CRSR_IN_PROT;
+ }
+ if(nVersion < VERSION_512)
+ {
+ nCore2Options |= VIEWOPT_CORE2_INDEX_BACKGROUND;
+ }
+
+ rStream >> nUIOptions;
+ if( nVersion < VERSION_327c )
+ nUIOptions |= VIEWOPT_2_EXECHYPERLINKS;
+ sal_uInt32 lWidth, lHeight;
+ rStream >> lWidth;
+ rStream >> lHeight;
+ Size aSz( lWidth, lHeight );
+ SetSnapSize( aSz );
+
+ sal_uInt16 sVal;
+ rStream >> sVal;
+ SetDivisionX( sVal );
+ rStream >> sVal;
+ SetDivisionY( sVal );
+
+ sal_uInt16 nZoom;
+ rStream >> nZoom;
+ SetZoom( nZoom );
+ rStream >> nZoom;
+ eZoom = int(nZoom);
+ if(nVersion >= VERSION_302_02)
+ {
+ sal_Int8 nDest;
+ rStream >> nDest;
+ nTblDest = Min((sal_Int8)TBL_DEST_TBL, nDest);
+ }
+ else
+ {
+ nTblDest = TBL_DEST_CELL;
+ }
+
+
+ sal_uInt16 nMet;
+ //Default-Tabulator und Metric
+ // werden noch gelesen/geschrieben, damit die Version bleiben kann
+ rStream >> nMet;
+ if(nVersion < VERSION_349)
+ rStream >> nMet;
+
+ if(nVersion >= VERSION_333)
+ rStream.ReadByteString(sSymbolFont, gsl_getSystemTextEncoding());
+
+ sal_Int8 nPrev;
+ rStream >> nPrev;
+ SetPagePrevRow(nPrev);
+ rStream >> nPrev;
+ SetPagePrevCol(nPrev);
+
+ // Undo einlesen
+ if(nVersion < VERSION_349)
+ {
+ sal_uInt16 nUndo;
+ rStream >> nUndo;
+ }
+
+ if(nVersion >= VERSION_332)
+ {
+ sal_uInt32 nColor;
+ if ( nVersion < VERSION_388 )
+ {
+ sal_Int8 nStyle;
+ if(GetType() == CFG_USERPREF_ITEM)
+ {
+ // fuer Textdokumente wird keine Farbe gesetzt!
+ rStream >> nColor;
+ rStream >> nColor;
+ rStream >> nStyle;
+ rStream >> nStyle;
+ }
+ else
+ {
+ rStream >> nColor;
+ aRetoucheColor.SetColor( nColor );
+ rStream >> nColor;
+ rStream >> nStyle;
+ if ( nStyle == 0 /*BRUSH_NULL*/ )
+ aRetoucheColor.SetColor( COL_TRANSPARENT );
+ rStream >> nStyle;
+ }
+ }
+ else
+ {
+ if ( GetType() == CFG_USERPREF_ITEM )
+ rStream >> nColor;
+ else
+ {
+ rStream >> nColor;
+ aRetoucheColor.SetColor( nColor );
+ }
+ }
+ }
+ if(nVersion >= VERSION_371)
+ {
+ sal_Int8 nMode;
+ sal_uInt32 nColor;
+ rStream >> nMode;
+ rStream >> nColor;
+
+ aShdwCrsrCol.SetColor( nColor );
+ nShdwCrsrFillMode = nMode;
+ }
+ if(nVersion >= VERSION_512)
+ {
+ sal_uInt32 nColor;
+ rStream >> nColor;
+ aIdxBackgrndCol.SetColor(nColor);
+ }
+
+#ifndef PRODUCT
+ if ( nVersion < VERSION_391_05 || nProductFlag == sal_Int8(0) )
+ {
+ sal_Int8 nFlags3;
+ rStream >> nFlags3;
+ bTest1 = sal_Int8( (nFlags3 & 0x01) != 0 );
+ if(bNotLoadLayout && !bTest1)
+ DBG_ERROR("Layout wird doch geladen - nochmal versuchen!")
+ bNotLoadLayout = bTest1;
+ bTest2 = sal_Int8( (nFlags3 & 0x02) != 0 );
+ bTest3 = sal_Int8( (nFlags3 & 0x04) != 0 );
+ bTest4 = sal_Int8( (nFlags3 & 0x08) != 0 );
+ bTest5 = sal_Int8( (nFlags3 & 0x10) != 0 );
+ bTest6 = sal_Int8( (nFlags3 & 0x20) != 0 );
+ bTest7 = sal_Int8( (nFlags3 & 0x40) != 0 );
+ bTest8 = sal_Int8( (nFlags3 & 0x80) != 0 );
+ }
+ else
+ bTest1 = bTest2 = bTest3 = bTest4 = bTest5 = bTest6 =
+ bTest7 = bTest8 = bNotLoadLayout = sal_False;
+#endif
+ }
+ else
+ return SfxConfigItem::WARNING_VERSION;
+
+ uno::Reference< beans::XPropertySet > xProp( ::GetLinguPropertySet() );
+
+ sal_Bool bVal;
+ bVal = xProp.is() ?
+ *(sal_Bool*)xProp->getPropertyValue( C2U(UPN_IS_SPELL_AUTO) ).getValue() : sal_False;
+ SetOnlineSpell( bVal );
+ bVal = xProp.is() ?
+ *(sal_Bool*)xProp->getPropertyValue( C2U(UPN_IS_SPELL_HIDE) ).getValue() : sal_False;
+ SetHideSpell( bVal );
+ return SfxConfigItem::ERR_OK;
+}
+
+
+void SwMasterUsrPref::UseDefault()
+{
+ nUIOptions = VIEWOPT_2_TOOLBOXBITMAP | VIEWOPT_2_TOOLBOXTOP |
+ VIEWOPT_2_TOOLBOX | VIEWOPT_2_RIBBONBAR |
+ VIEWOPT_2_TABWIN | VIEWOPT_2_STATUSLINE |
+ VIEWOPT_2_VSCROLLBAR | VIEWOPT_2_HSCROLLBAR |
+ VIEWOPT_2_SVLOOK| VIEWOPT_2_EXECHYPERLINKS;
+ nCore2Options = VIEWOPT_CORE2_BLACKFONT | VIEWOPT_CORE2_HIDDENPARA|
+ VIEWOPT_CORE2_CRSR_IN_PROT| VIEWOPT_CORE2_INDEX_BACKGROUND|
+ VIEWOPT_CORE2_SECTION_BOUNDS;
+
+ eZoom = 0;
+ nTblDest = TBL_DEST_CELL;
+
+ sSymbolFont = aEmptyStr;
+
+ aShdwCrsrCol.SetColor( COL_BLUE );
+ nShdwCrsrFillMode = FILL_TAB;
+
+ aIdxBackgrndCol.SetColor( RGB_COLORDATA( 0xF0, 0xF0, 0xF0 ) );
+
+ uno::Reference< beans::XPropertySet > xProp( ::GetLinguPropertySet() );
+
+ sal_Bool bVal;
+ bVal = xProp.is() ?
+ *(sal_Bool*)xProp->getPropertyValue( C2U(UPN_IS_SPELL_AUTO) ).getValue() : sal_False;
+ SetOnlineSpell( bVal );
+ bVal = xProp.is() ?
+ *(sal_Bool*)xProp->getPropertyValue( C2U(UPN_IS_SPELL_HIDE) ).getValue() : sal_False;
+ SetHideSpell( bVal );
+ SfxConfigItem::UseDefault();
+}
+
+
+SwMasterUsrPref::SwMasterUsrPref(sal_uInt16 nType) :
+ SfxConfigItem( nType )
+{}
+
+
+String SwMasterUsrPref::GetName() const
+{
+ String sName(SW_RES( STR_CFG_USRPREF ));
+ if(GetType() != CFG_USERPREF_ITEM)
+ sName.SearchAndReplace(C2S("StarOffice Writer"), C2S("StarOffice Writer/Web"));
+ return sName;
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.128 2000/09/18 16:05:18 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.127 2000/04/11 08:02:24 os
+ UNICODE
+
+ Revision 1.126 2000/03/23 08:17:22 os
+ UNO III
+
+ Revision 1.125 2000/03/03 15:16:59 os
+ StarView remainders removed
+
+ Revision 1.124 2000/02/24 17:26:00 hr
+ 43447#: gcc
+
+ Revision 1.123 2000/01/19 18:24:06 jp
+ Bug #72118#: change default of view sectionboundaries
+
+ Revision 1.122 1999/12/10 13:07:24 tl
+ #70383# SvxGetLinguPropertySet => ::GetLinguPropertySet
+
+ Revision 1.121 1999/11/24 18:26:26 tl
+ check for Service availability
+
+ Revision 1.120 1999/11/19 16:40:22 os
+ modules renamed
+
+ Revision 1.119 1999/10/25 19:47:09 tl
+ ongoing ONE_LINGU implementation
+
+ Revision 1.118 1999/10/22 11:06:41 os
+ index background with a lighter background
+
+ Revision 1.117 1999/10/13 14:19:58 os
+ index background in light gray
+
+ Revision 1.116 1999/08/31 08:46:22 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+
+ Rev 1.115 31 Aug 1999 10:46:22 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+ Rev 1.114 09 Jun 1999 13:22:42 OS
+ index background
+
+ Rev 1.113 19 May 1999 13:32:56 OS
+ #61245# DBG_ERROR, wenn Layout trotz CtrlAltL geladen wird
+
+ Rev 1.112 27 Jan 1999 10:03:10 OS
+ #58677# Cursor in Readonly-Bereichen
+
+ Rev 1.111 08 Sep 1998 16:49:52 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.110 31 Aug 1998 11:19:14 OS
+ #55750# OnlineSpelling immer aus der OFA uebernehmen
+
+ Rev 1.109 12 Jun 1998 09:44:14 OS
+ Konfigurationsnamen berichtigt
+
+ Rev 1.108 29 Apr 1998 09:27:06 MA
+ BackgroundBrush -> RetoucheColor
+
+ Rev 1.107 24 Nov 1997 17:58:48 MA
+ include
+
+ Rev 1.106 11 Nov 1997 14:04:28 MA
+ precomp entfernt
+
+ Rev 1.105 03 Nov 1997 16:12:36 JP
+ neu: Optionen/-Page/Basic-Schnittst. fuer ShadowCursor
+
+ Rev 1.104 16 Sep 1997 13:23:10 OS
+ Color fuer VCL nicht konvertieren, fuer TextDocs Brush nie laden #43824#
+
+ Rev 1.103 08 Aug 1997 16:11:40 OS
+ IDLE-Flag auch in der aktuellen Version im Load immer einschalten #42510#
+
+ Rev 1.102 09 Jun 1997 14:28:44 MA
+ chg: Browse-Flag nur noch am Doc
+
+ Rev 1.101 06 Jun 1997 12:44:14 MA
+ chg: versteckte Absaetze ausblenden
+
+ Rev 1.100 31 Jan 1997 13:41:24 OS
+ alten Code fuer Metric geloescht
+
+ Rev 1.99 27 Jan 1997 16:30:04 OS
+ HtmlMode entfernt
+
+ Rev 1.98 13 Dec 1996 14:33:32 OS
+ UndoCount wird aus der SfxApp besorgt
+
+ Rev 1.97 10 Dec 1996 16:58:48 OS
+ TabDist ab sofort in der OFA
+
+ Rev 1.96 09 Dec 1996 17:02:02 OS
+ Grenzwerte fuer TblDest und Metric beim Load ueberpruefen
+
+ Rev 1.95 28 Nov 1996 15:20:24 OS
+ neu: Schwarz drucken
+
+ Rev 1.94 18 Nov 1996 10:26:22 OS
+ includes berichtigt
+
+ Rev 1.93 11 Nov 1996 09:22:12 MA
+ ResMgr
+
+ Rev 1.92 17 Oct 1996 16:43:44 OS
+ Altlasten der BrowseUsrPref entfernt
+
+ Rev 1.91 25 Sep 1996 11:11:48 OS
+ IsTransparent wird jetzt auch gespeichert
+
+ Rev 1.90 30 Aug 1996 08:44:06 OS
+ neu: sSymbolFont
+
+ Rev 1.89 26 Aug 1996 16:56:10 OS
+ neu: Brush fuer BrowseView
+
+ Rev 1.88 25 Jul 1996 15:35:36 OS
+ neu : HTML-Mode
+
+ Rev 1.87 22 Jul 1996 15:06:30 OS
+ neu: ..EXECHYPERLINKS
+
+ Rev 1.86 16 Jul 1996 20:19:50 MA
+ includes
+
+ Rev 1.85 16 Jul 1996 15:52:20 MA
+ new: PrintPageBackground
+
+ Rev 1.84 10 Jul 1996 12:01:26 OS
+ neu: nTblDest : Ziel fuer Tabellenhintergrund
+
+ Rev 1.83 28 Jun 1996 10:11:42 OS
+ UseDefault: Basisklasse rufen
+
+ Rev 1.82 07 May 1996 08:32:06 OS
+ im Laden der UsrPref Browse-Optionen absichern
+
+ Rev 1.81 27 Apr 1996 14:53:14 OS
+ Idle-Flag im Load setzen
+
+ Rev 1.80 26 Apr 1996 13:54:16 OS
+ Versionspruefung korrigiert
+
+ Rev 1.79 25 Apr 1996 16:21:58 OS
+ ViewOptions ohne sal_Bool, dafuer massenweise defines
+
+ Rev 1.78 24 Apr 1996 15:09:00 OS
+ Umstellung UsrPref/ViewOption
+
+ Rev 1.77 25 Mar 1996 19:45:50 MA
+ wechsel product/non-product
+
+ Rev 1.76 21 Mar 1996 12:51:50 OS
+ neu: bGrfKeepZoom fuer CropPage
+
+ Rev 1.75 03 Mar 1996 16:48:48 MA
+ new: Flag fuer BrowseView
+
+ Rev 1.74 27 Feb 1996 12:18:54 OS
+ Metric nicht mehr in den UsrPref
+
+ Rev 1.73 23 Feb 1996 13:25:28 OS
+ neu: nUndoCount = UNDO_ACTION_COUNT
+
+ Rev 1.72 20 Feb 1996 16:31:40 OS
+ neu: bKeepAspectRatio fuer Abgleich im Grafik/OLE-Dialog
+
+ Rev 1.71 20 Feb 1996 11:01:52 AMA
+ New: bOnlineSpell und bHideSpell
+
+ Rev 1.70 28 Nov 1995 22:36:04 JP
+ UiSystem-Klasse aufgehoben, in initui/swtypes aufgeteilt
+
+ Rev 1.69 24 Nov 1995 16:58:52 OM
+ PCH->PRECOMPILED
+
+ Rev 1.68 08 Nov 1995 12:48:16 OM
+ Change->Set
+
+ Rev 1.67 03 Nov 1995 18:54:54 OS
+ vergessenes Table-Flag nachgetragen
+
+ Rev 1.66 29 Sep 1995 16:58:40 OM
+ HelpPI entfernt
+
+ Rev 1.65 17 Sep 1995 20:00:58 OS
+ neu: nUndoCount
+
+ Rev 1.64 15 Sep 1995 12:40:20 OS
+ GetName() implementiert und ColorSetItem entfernt
+
+ Rev 1.63 15 Aug 1995 17:04:52 OM
+ Preview-Zoomfaktor gesichert
+
+ Rev 1.62 14 Jul 1995 09:57:22 MA
+ fix: TabDist ab Version B3 nicht groesser B3
+
+ Rev 1.61 13 Jul 1995 17:12:22 OS
+ DefaultAttribut fuer nTabDist holen
+
+ Rev 1.60 13 Jul 1995 09:05:02 MA
+ fix: Tab zum x-ten, default fuer Load verbessert
+
+ Rev 1.59 12 Jul 1995 11:31:00 MA
+ fix: Load(), TabDist fuer alte Versionen defaulten
+
+ Rev 1.58 12 Jul 1995 10:49:42 MA
+ chg: MinTabDist ist MM50
+
+ Rev 1.57 11 Jul 1995 15:48:06 OS
+ neuer Member=>neue Version
+
+ Rev 1.56 10 Jul 1995 19:27:32 OS
+ +nTabDist in Load, ::com::sun::star::ucb::Store, UseDefault
+
+ Rev 1.55 25 Jun 1995 13:20:22 MA
+ opt: ViewOptions aufgeraeumt
+
+ Rev 1.54 17 May 1995 17:26:06 MA
+ UsrPref: gefixt, aufgeraumt, optimiert, includes gerichtet.
+
+ Rev 1.53 03 Apr 1995 19:56:36 OS
+ Einstellungen mehr als einmal laden
+
+ Rev 1.52 20 Mar 1995 19:07:40 OS
+ unbenutzte Funktionen entfernt
+
+ Rev 1.51 08 Mar 1995 03:56:52 OS
+ Raster-Einstellungen auch sichern
+
+ Rev 1.50 19 Feb 1995 17:44:50 MA
+ SEXPORT'iert.
+
+ Rev 1.49 25 Oct 1994 16:13:02 ER
+ add: PCH
+
+ Rev 1.48 20 Oct 1994 12:54:42 JN
+ Versionskontrolle bei Load/Store
+
+ Rev 1.47 05 Oct 1994 10:07:56 SWG
+ Anpassung Sfx
+
+ Rev 1.46 15 Sep 1994 14:38:40 MS
+ Reanimation die 1.
+
+ Rev 1.45 15 Sep 1994 14:10:56 MS
+
+ Rev 1.44 04 Aug 1994 10:36:00 SWG
+ swg32: SED Size to SSize, LSize to Size etc.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/config/viewopt.cxx b/sw/source/ui/config/viewopt.cxx
new file mode 100644
index 000000000000..3d8123a8423e
--- /dev/null
+++ b/sw/source/ui/config/viewopt.cxx
@@ -0,0 +1,754 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewopt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _OFA_HTMLCFG_HXX //autogen
+#include <offmgr/htmlcfg.hxx>
+#endif
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SVX_SVXENUM_HXX //autogen
+#include <svx/svxenum.hxx>
+#endif
+#ifndef _MySVXACORR_HXX //autogen
+#include <svx/svxacorr.hxx>
+#endif
+
+#include "swtypes.hxx"
+#include "viewopt.hxx"
+#include "wdocsh.hxx"
+#include "swrect.hxx"
+#include "crstate.hxx"
+
+
+#ifndef PRODUCT
+BOOL SwViewOption::bTest9 = FALSE; //DrawingLayerNotLoading
+#endif
+USHORT SwViewOption::nPixelTwips = 0; //ein Pixel auf dem Bildschirm
+
+
+#define LINEBREAK_SIZE 12, 8
+#define TAB_SIZE 12, 6
+
+#define MIN_BLANKWIDTH 40
+#define MIN_BLANKHEIGHT 40
+#define MIN_TABWIDTH 120
+#define MIN_TABHEIGHT 200
+
+static const char __FAR_DATA aPostItStr[] = " ";
+
+/*************************************************************************
+ * SwViewOption::IsEqualFlags()
+ *************************************************************************/
+
+BOOL SwViewOption::IsEqualFlags( const SwViewOption &rOpt ) const
+{
+ return nCoreOptions == rOpt.nCoreOptions
+ && nCore2Options == rOpt.nCore2Options
+ && aSnapSize == rOpt.aSnapSize
+ && nDivisionX == rOpt.GetDivisionX()
+ && nDivisionY == rOpt.GetDivisionY()
+ && nPagePrevRow == rOpt.GetPagePrevRow()
+ && nPagePrevCol == rOpt.GetPagePrevCol()
+ && aRetoucheColor == rOpt.GetRetoucheColor()
+#ifndef PRODUCT
+ // korrespondieren zu den Angaben in ui/config/cfgvw.src
+ && bTest1 == rOpt.IsTest1()
+ && bTest2 == rOpt.IsTest2()
+ && bTest3 == rOpt.IsTest3()
+ && bTest4 == rOpt.IsTest4()
+ && bTest5 == rOpt.IsTest5()
+ && bTest6 == rOpt.IsTest6()
+ && bTest7 == rOpt.IsTest7()
+ && bTest8 == rOpt.IsTest8()
+ && bTest10 == rOpt.IsTest10()
+#endif
+ ;
+}
+
+/*************************************************************************
+ * class SwPxlToTwips
+ *************************************************************************/
+
+class SwPxlToTwips
+{
+ OutputDevice *pOut;
+ Color aLineColor;
+ BOOL bClip;
+ Region aClip;
+ Point aStart;
+ SwRect aRect;
+public:
+ SwPxlToTwips( OutputDevice *pOut, const SwRect &rRect, const Size &rSize );
+ ~SwPxlToTwips();
+ inline const Point &GetStartPoint() const { return aStart; }
+ inline BOOL IsTooSmall() const {return 0 == pOut;}
+ inline const SwRect &GetRect() const { return aRect; }
+ void DrawLine( const Point &rStart, const Point &rEnd );
+};
+
+/*************************************************************************
+ * SwPxlToTwips::CTOR
+ *************************************************************************/
+
+SwPxlToTwips::SwPxlToTwips( OutputDevice *pOutDev,
+ const SwRect &rRect, const Size &rSize )
+ : pOut( pOutDev )
+{
+ aRect = pOut->LogicToPixel( rRect.SVRect() );
+
+ // Wenn der Tab nicht mehr darstellbar ist, geben wir auf.
+ if( 3 > aRect.Width() )
+ {
+ pOut = NULL;
+ return;
+ }
+
+ if( rSize.Height() - 1 > aRect.Height() )
+ {
+ pOut = NULL;
+ return;
+ }
+
+ aStart = aRect.Pos();
+ aStart.X() += (aRect.Width() / 2) - (rSize.Width() / 2);
+ aStart.Y() += (aRect.Height() / 2) - (rSize.Height() / 2);
+ if ( aStart.X() < aRect.Left() )
+ aStart.X() = aRect.Left();
+
+ if ( pOut->GetConnectMetaFile() )
+ pOut->Push();
+
+ bClip = pOut->IsClipRegion();
+ if ( bClip )
+ {
+ aClip = pOut->GetClipRegion();
+ pOut->SetClipRegion();
+ }
+
+ aLineColor = pOut->GetLineColor( );
+ pOut->SetLineColor( Color(COL_BLACK) );
+}
+
+/*************************************************************************
+ * SwPxlToTwips::DTOR
+ *************************************************************************/
+
+SwPxlToTwips::~SwPxlToTwips()
+{
+ if( pOut )
+ {
+ if ( pOut->GetConnectMetaFile() )
+ pOut->Pop();
+ else
+ {
+ pOut->SetLineColor( aLineColor );
+ if( bClip )
+ pOut->SetClipRegion( aClip );
+ }
+ }
+}
+
+/*************************************************************************
+ * SwPxlToTwips::DrawLine
+ *************************************************************************/
+
+void SwPxlToTwips::DrawLine( const Point &rStart, const Point &rEnd )
+{
+ if( pOut )
+ {
+ const Point aStart( pOut->PixelToLogic( rStart ) );
+ const Point aEnd( pOut->PixelToLogic( rEnd ) );
+ pOut->DrawLine( aStart, aEnd );
+ }
+}
+
+/*************************************************************************
+ * SwViewOption::DrawRect()
+ *************************************************************************/
+
+void SwViewOption::DrawRect( OutputDevice *pOut,
+ const SwRect &rRect, long nCol ) const
+{
+ if ( pOut->GetOutDevType() != OUTDEV_PRINTER )
+ {
+ const Color aCol( nCol );
+ const Color aOldColor( pOut->GetFillColor() );
+ pOut->SetFillColor( aCol );
+ pOut->DrawRect( rRect.SVRect() );
+ pOut->SetFillColor( aOldColor );
+ }
+ else
+ DrawRectPrinter( pOut, rRect );
+}
+
+/*************************************************************************
+ * SwViewOption::DrawRectPrinter()
+ *************************************************************************/
+
+void SwViewOption::DrawRectPrinter( OutputDevice *pOut,
+ const SwRect &rRect ) const
+{
+ Color aOldColor(pOut->GetLineColor());
+ Color aOldFillColor( pOut->GetFillColor() );
+ pOut->SetLineColor( Color(COL_BLACK) );
+ pOut->SetFillColor( Color(COL_TRANSPARENT ));
+ pOut->DrawRect( rRect.SVRect() );
+ pOut->SetFillColor( aOldFillColor );
+ pOut->SetLineColor( aOldColor );
+}
+
+/*************************************************************************
+ * SwViewOption::PaintTab()
+ *************************************************************************/
+void SwViewOption::PaintTab( OutputDevice *pOut, const SwRect &rRect ) const
+{
+ SwPxlToTwips aSave( pOut, rRect, Size( TAB_SIZE ) );
+
+ if( aSave.IsTooSmall() )
+ return;
+
+ Point aStart( aSave.GetStartPoint() );
+ const SwRect &rPaintRect = aSave.GetRect();
+
+ // horizontale
+ aStart.Y() += 2;
+ aStart.X() += 1;
+ Point aEnd( aStart );
+ aEnd.X() += 10;
+ if( aEnd.X() >= rPaintRect.Right() )
+ aEnd.X() = rPaintRect.Right() - 1;
+ long nDiff = aEnd.X() - aStart.X();
+ aSave.DrawLine( aStart, aEnd );
+
+ // Pfeil
+ aEnd.X() -= 1;
+ aStart.X() = aEnd.X();
+ aStart.Y() -= 1;
+ aEnd.Y() += 1;
+ aSave.DrawLine( aStart, aEnd );
+
+ if( nDiff > 1 && rPaintRect.Height() > 8 )
+ {
+ aStart.X() -= 1;
+ aStart.Y() -= 1;
+ aEnd.X() = aStart.X();
+ aEnd.Y() += 1;
+ aSave.DrawLine( aStart, aEnd );
+ if( nDiff > 2 && rPaintRect.Height() > 12 )
+ {
+ aStart.X() -= 1;
+ aEnd.X() -= 1;
+ aSave.DrawLine( aStart, aEnd );
+ }
+ }
+}
+
+/*************************************************************************
+ * SwViewOption::GetLineBreakWidth()
+ *************************************************************************/
+
+USHORT SwViewOption::GetLineBreakWidth( const OutputDevice *pOut ) const
+{
+ ASSERT( pOut, "no Outdev" );
+ const Size aSz( LINEBREAK_SIZE );
+ return USHORT(pOut->PixelToLogic( aSz ).Width());
+}
+
+/*************************************************************************
+ * SwViewOption::PaintLineBreak()
+ *************************************************************************/
+
+void SwViewOption::PaintLineBreak( OutputDevice *pOut, const SwRect &rRect ) const
+{
+ const Size aSz( LINEBREAK_SIZE );
+ SwPxlToTwips aSave( pOut, rRect, aSz );
+ if( aSave.IsTooSmall() )
+ return;
+ Point aStart( aSave.GetStartPoint() );
+ const SwRect &rPaintRect = aSave.GetRect();
+
+ // horizontale
+ aStart.Y() += 4;
+ aStart.X() += 1;
+ Point aEnd( aStart );
+ aEnd.X() += 8;
+ if( aEnd.X() >= rPaintRect.Right() - 1 )
+ aEnd.X() = rPaintRect.Right() - 2;
+ aSave.DrawLine( aStart, aEnd );
+
+ // Pfeil
+ aStart.Y() -= 1;
+ aStart.X() += 1;
+ aEnd.Y() = aStart.Y() + 2;
+ aEnd.X() = aStart.X();
+ aSave.DrawLine( aStart, aEnd );
+
+ // Pfeil
+ aStart.Y() -= 1;
+ aStart.X() += 1;
+ aEnd.Y() += 1;
+ aEnd.X() += 1;
+ aSave.DrawLine( aStart, aEnd );
+
+ // Pfeil
+ aStart.X() += 1;
+ aEnd.X() += 1;
+ aSave.DrawLine( aStart, aEnd );
+
+ // vertikale
+ aStart.Y() -= 2;
+ aStart.X() += 6;
+ if( aStart.X() >= rPaintRect.Right() )
+ aStart.X() = rPaintRect.Right() - 1;
+ aEnd.X() = aStart.X();
+ aEnd.Y() = aStart.Y() + 3;
+ aSave.DrawLine( aStart, aEnd );
+}
+
+/*************************************************************************
+ * SwViewOption::GetPostItsWidth()
+ *************************************************************************/
+
+USHORT SwViewOption::GetPostItsWidth( const OutputDevice *pOut ) const
+{
+ ASSERT( pOut, "no Outdev" );
+ return USHORT(pOut->GetTextWidth( String::CreateFromAscii(aPostItStr )));
+}
+
+/*************************************************************************
+ * SwViewOption::PaintPostIts()
+ *************************************************************************/
+
+void SwViewOption::PaintPostIts( OutputDevice *pOut, const SwRect &rRect,
+ long nCol ) const
+{
+ if( pOut )
+ {
+ Color aOldLineColor( pOut->GetLineColor() );
+ pOut->SetLineColor( Color(COL_GRAY ) );
+ // Wir ziehen ueberall zwei Pixel ab, damit es schick aussieht
+ USHORT nPix = GetPixelTwips() * 2;
+ if( rRect.Width() <= 2 * nPix || rRect.Height() <= 2 * nPix )
+ nPix = 0;
+ const Point aTopLeft( rRect.Left() + nPix, rRect.Top() + nPix );
+ const Point aBotRight( rRect.Right() - nPix, rRect.Bottom() - nPix );
+ const SwRect aRect( aTopLeft, aBotRight );
+ DrawRect( pOut, aRect, nCol );
+ pOut->SetLineColor( aOldLineColor );
+ }
+}
+
+
+/*************************************************************************
+|*
+|* ViewOption::ViewOption()
+|*
+|* Letzte Aenderung MA 04. Aug. 93
+|*
+|*************************************************************************/
+
+SwViewOption::SwViewOption() :
+ nZoom( 100 ),
+ nPagePrevRow( 1 ),
+ nPagePrevCol( 2 ),
+ eZoom( 0 ),
+ nTblDest(TBL_DEST_CELL),
+ bReadonly(FALSE),
+ aRetoucheColor( COL_TRANSPARENT ),
+ aShdwCrsrCol( COL_BLUE ),
+ aIdxBackgrndCol( COL_LIGHTGRAY ),
+ nShdwCrsrFillMode( FILL_TAB ),
+ bStarOneSetting(FALSE)
+{
+ // Initialisierung ist jetzt etwas einfacher
+ // alle Bits auf 0
+ nCoreOptions = VIEWOPT_1_IDLE | VIEWOPT_1_HARDBLANK | VIEWOPT_1_SOFTHYPH |
+ VIEWOPT_1_TOX | VIEWOPT_1_REF | VIEWOPT_1_FIELD |
+ VIEWOPT_1_FOOTNOTE | VIEWOPT_1_SUBSLINES | VIEWOPT_1_GRAPHIC |
+ VIEWOPT_1_TABLE | VIEWOPT_1_DRAW | VIEWOPT_1_CONTROL |
+ VIEWOPT_1_SUBSTABLE| VIEWOPT_1_PAGEBACK |
+ VIEWOPT_1_SOLIDMARKHDL | VIEWOPT_1_POSTITS;
+ nCore2Options = VIEWOPT_CORE2_BLACKFONT | VIEWOPT_CORE2_HIDDENPARA|
+ VIEWOPT_CORE2_INDEX_BACKGROUND | VIEWOPT_CORE2_SECTION_BOUNDS;
+ nUIOptions = VIEWOPT_2_MODIFIED | VIEWOPT_2_EXECHYPERLINKS;
+
+ MeasurementSystem eSys = Application::GetAppInternational().GetMeasurementSystem();
+ if(MEASURE_METRIC != eSys)
+ aSnapSize.Width() = aSnapSize.Height() = 720; // 1/2"
+ else
+ aSnapSize.Width() = aSnapSize.Height() = 567; // 1 cm
+ nDivisionX = nDivisionY = 1;
+
+
+#ifndef PRODUCT
+ // korrespondieren zu den Angaben in ui/config/cfgvw.src
+ bTest1 = bTest2 = bTest3 = bTest4 =
+ bTest5 = bTest6 = bTest7 = bTest8 = bTest10 = FALSE;
+#endif
+}
+
+
+SwViewOption::SwViewOption(const SwViewOption& rVOpt)
+{
+ bReadonly = FALSE;
+ nZoom = rVOpt.nZoom ;
+ aSnapSize = rVOpt.aSnapSize ;
+ nDivisionX = rVOpt.nDivisionX ;
+ nDivisionY = rVOpt.nDivisionY ;
+ nPagePrevRow = rVOpt.nPagePrevRow;
+ nPagePrevCol = rVOpt.nPagePrevCol;
+ eZoom = rVOpt.eZoom ;
+ nTblDest = rVOpt.nTblDest ;
+ nUIOptions = rVOpt.nUIOptions ;
+ nCoreOptions = rVOpt.nCoreOptions ;
+ nCore2Options = rVOpt.nCore2Options ;
+ aRetoucheColor = rVOpt.GetRetoucheColor();
+ sSymbolFont = rVOpt.sSymbolFont;
+ aShdwCrsrCol = rVOpt.aShdwCrsrCol;
+ aIdxBackgrndCol = rVOpt.aIdxBackgrndCol;
+ nShdwCrsrFillMode = rVOpt.nShdwCrsrFillMode;
+ bStarOneSetting = rVOpt.bStarOneSetting;
+
+#ifndef PRODUCT
+ bTest1 = rVOpt.bTest1 ;
+ bTest2 = rVOpt.bTest2 ;
+ bTest3 = rVOpt.bTest3 ;
+ bTest4 = rVOpt.bTest4 ;
+ bTest5 = rVOpt.bTest5 ;
+ bTest6 = rVOpt.bTest6 ;
+ bTest7 = rVOpt.bTest7 ;
+ bTest8 = rVOpt.bTest8 ;
+ bTest10 = rVOpt.bTest10 ;
+#endif
+}
+
+
+SwViewOption& SwViewOption::operator=( const SwViewOption &rVOpt )
+{
+ nZoom = rVOpt.nZoom ;
+ aSnapSize = rVOpt.aSnapSize ;
+ nDivisionX = rVOpt.nDivisionX ;
+ nDivisionY = rVOpt.nDivisionY ;
+ nPagePrevRow = rVOpt.nPagePrevRow;
+ nPagePrevCol = rVOpt.nPagePrevCol;
+ eZoom = rVOpt.eZoom ;
+ nTblDest = rVOpt.nTblDest ;
+ nUIOptions = rVOpt.nUIOptions ;
+ nCoreOptions = rVOpt.nCoreOptions;
+ nCore2Options = rVOpt.nCore2Options;
+ aRetoucheColor = rVOpt.GetRetoucheColor();
+ sSymbolFont = rVOpt.sSymbolFont;
+ aShdwCrsrCol = rVOpt.aShdwCrsrCol;
+ aIdxBackgrndCol = rVOpt.aIdxBackgrndCol;
+ nShdwCrsrFillMode = rVOpt.nShdwCrsrFillMode;
+ bStarOneSetting = rVOpt.bStarOneSetting;
+
+#ifndef PRODUCT
+ bTest1 = rVOpt.bTest1 ;
+ bTest2 = rVOpt.bTest2 ;
+ bTest3 = rVOpt.bTest3 ;
+ bTest4 = rVOpt.bTest4 ;
+ bTest5 = rVOpt.bTest5 ;
+ bTest6 = rVOpt.bTest6 ;
+ bTest7 = rVOpt.bTest7 ;
+ bTest8 = rVOpt.bTest8 ;
+ bTest10 = rVOpt.bTest10 ;
+#endif
+ return *this;
+}
+
+
+SwViewOption::~SwViewOption()
+{
+}
+
+/*************************************************************************
+|*
+|* ViewOption::Init()
+|*
+|* Letzte Aenderung MA 04. Aug. 93
+|*
+|*************************************************************************/
+
+void SwViewOption::Init( Window *pWin )
+{
+ if( !nPixelTwips && pWin )
+ {
+ nPixelTwips = (USHORT)pWin->PixelToLogic( Size(1,1) ).Height();
+ }
+}
+
+BOOL SwViewOption::IsAutoCompleteWords() const
+{
+ const SvxSwAutoFmtFlags& rFlags = OFF_APP()->GetAutoCorrect()->GetSwFlags();
+ return /*rFlags.bAutoCompleteWords &&*/ rFlags.bAutoCmpltCollectWords;
+}
+
+/*************************************************************************/
+/*
+/*************************************************************************/
+
+AuthorCharAttr::AuthorCharAttr() :
+ nItemId (SID_ATTR_CHAR_UNDERLINE),
+ nAttr (UNDERLINE_SINGLE),
+ nColor (COL_TRANSPARENT)
+{
+}
+
+/*-----------------07.01.97 13.50-------------------
+
+--------------------------------------------------*/
+
+USHORT GetHtmlMode(const SwDocShell* pShell)
+{
+ USHORT nRet = 0;
+ if(!pShell || PTR_CAST(SwWebDocShell, pShell))
+ {
+ nRet = HTMLMODE_ON;
+ OfaHtmlOptions* pHtmlOpt = OFF_APP()->GetHtmlOptions();
+ switch ( pHtmlOpt->GetExportMode() )
+ {
+ case HTML_CFG_MSIE_40:
+ nRet |= HTMLMODE_PARA_BORDER|HTMLMODE_SMALL_CAPS|
+ HTMLMODE_SOME_STYLES|
+ HTMLMODE_FULL_STYLES|HTMLMODE_GRAPH_POS|
+ HTMLMODE_FULL_ABS_POS|HTMLMODE_SOME_ABS_POS;
+ break;
+ case HTML_CFG_NS30:
+ nRet |= HTMLMODE_BLINK|HTMLMODE_FRM_COLUMNS|HTMLMODE_FIRSTLINE;
+ break;
+ case HTML_CFG_NS40:
+ nRet |= HTMLMODE_PARA_BORDER|HTMLMODE_SOME_STYLES|
+ HTMLMODE_FRM_COLUMNS|HTMLMODE_BLINK|HTMLMODE_GRAPH_POS|
+ HTMLMODE_SOME_ABS_POS;
+ break;
+ case HTML_CFG_WRITER:
+ nRet |= HTMLMODE_PARA_BORDER|HTMLMODE_SMALL_CAPS|
+ HTMLMODE_SOME_STYLES|
+ HTMLMODE_FRM_COLUMNS|HTMLMODE_FULL_STYLES|
+ HTMLMODE_BLINK|HTMLMODE_DROPCAPS|HTMLMODE_GRAPH_POS|
+ HTMLMODE_FULL_ABS_POS|HTMLMODE_SOME_ABS_POS;
+ break;
+ case HTML_CFG_HTML32:
+ break;
+ }
+ }
+ return nRet;
+}
+
+
+/************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.57 2000/09/18 16:05:18 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.56 2000/04/11 08:02:24 os
+ UNICODE
+
+ Revision 1.55 2000/03/03 15:16:59 os
+ StarView remainders removed
+
+ Revision 1.54 2000/01/19 18:24:09 jp
+ Bug #72118#: change default of view sectionboundaries
+
+ Revision 1.53 2000/01/13 21:28:44 jp
+ Task #71894#: new Options for SW-AutoComplete
+
+ Revision 1.52 1999/09/20 10:35:00 os
+ Color changes
+
+ Revision 1.51 1999/07/28 11:03:20 OS
+ index background in lighter gray
+
+
+ Rev 1.50 28 Jul 1999 13:03:20 OS
+ index background in lighter gray
+
+ Rev 1.49 13 Jul 1999 08:47:52 OS
+ #67584# Scrollbar settings via StarOne
+
+ Rev 1.48 09 Jun 1999 13:22:34 OS
+ index background
+
+ Rev 1.47 17 Mar 1999 11:24:10 JP
+ Task #63576#: IsAutoCompleteWords - das Flag von der OffApp erfragen
+
+ Rev 1.46 15 Mar 1999 09:47:52 MA
+ #63047# neue Defaults
+
+ Rev 1.45 09 Mar 1999 19:34:34 JP
+ Task #61405#: AutoCompletion von Woertern
+
+ Rev 1.44 19 Jan 1999 08:47:36 MIB
+ #60957#: Kapitaelchen auch fuer IE4
+
+ Rev 1.43 29 Apr 1998 09:27:06 MA
+ BackgroundBrush -> RetoucheColor
+
+ Rev 1.42 20 Apr 1998 09:10:42 OS
+ IE3 entfaellt
+
+ Rev 1.41 03 Apr 1998 14:42:22 OS
+ HTMLMODE_SOME/FULL_ABS_POS
+
+ Rev 1.40 05 Mar 1998 14:34:12 OM
+ Redline-Attribute in Module-Cfg speichern
+
+ Rev 1.39 23 Feb 1998 12:40:46 OM
+ Redlining-Optionen
+
+ Rev 1.38 04 Feb 1998 17:53:06 MA
+ chg: Notiz wieder per default an
+
+ Rev 1.37 09 Jan 1998 17:15:14 AMA
+ Fix #46523#: Colors sollten als long durchgereicht werden...
+
+ Rev 1.36 28 Nov 1997 15:24:22 MA
+ includes
+
+ Rev 1.35 24 Nov 1997 17:58:48 MA
+ include
+
+ Rev 1.34 03 Nov 1997 16:12:36 JP
+ neu: Optionen/-Page/Basic-Schnittst. fuer ShadowCursor
+
+ Rev 1.33 01 Sep 1997 13:16:58 OS
+ DLL-Umstellung
+
+ Rev 1.32 08 Aug 1997 17:37:24 OM
+ Headerfile-Umstellung
+
+ Rev 1.31 05 Aug 1997 14:52:06 OS
+ Option fuer Grafikhintergrund #41663#
+
+ Rev 1.30 02 Jul 1997 12:46:00 MA
+ inlines
+
+ Rev 1.29 17 Jun 1997 17:24:06 MIB
+ HTML-Modus-Flgas fuer Netacpe 4.0
+
+ Rev 1.28 06 Jun 1997 12:44:24 MA
+ chg: versteckte Absaetze ausblenden
+
+ Rev 1.27 05 May 1997 10:56:32 AMA
+ Fix #39418#: Tabulatorsymbolgroesse jetzt zoomabhaengig.
+
+ Rev 1.26 25 Feb 1997 09:11:14 MA
+ chg: Option fuer SolidHdl
+
+ Rev 1.25 13 Feb 1997 18:57:16 AMA
+ New: JavaScript-Felder werden gruen dargestellt.
+
+ Rev 1.24 07 Feb 1997 18:25:30 OS
+ HtmlMode auch fuer pDocSh == 0; Flags berichtigt
+
+ Rev 1.23 05 Feb 1997 13:44:18 OS
+ HTML-Modi erweitert
+
+ Rev 1.22 27 Jan 1997 16:33:52 OS
+ GetHtmlMode wird mit der DocShell ermittelt
+
+ Rev 1.21 08 Jan 1997 10:47:10 OS
+ neu: ::GetHtmlMode()
+
+ Rev 1.20 13 Dec 1996 14:33:32 OS
+ UndoCount wird aus der SfxApp besorgt
+
+ Rev 1.19 10 Dec 1996 16:58:46 OS
+ TabDist ab sofort in der OFA
+
+ Rev 1.18 28 Nov 1996 15:20:24 OS
+ neu: Schwarz drucken
+
+ Rev 1.17 25 Sep 1996 14:56:18 OS
+ Linealabfragen nicht mehr inline
+
+ Rev 1.16 19 Sep 1996 18:40:54 OS
+ SetUIOptions enthaelt auch nTblDest
+
+ Rev 1.15 06 Sep 1996 14:32:20 OS
+ UsrPrefs wieder vereinheitlicht
+
+ Rev 1.14 30 Aug 1996 08:44:04 OS
+ neu: sSymbolFont
+
+ Rev 1.13 27 Aug 1996 10:11:44 OS
+ IsEqualFlags: Brush vergleichen
+
+ Rev 1.12 27 Aug 1996 09:44:46 OS
+ operator=
+
+*************************************************************************/
+
diff --git a/sw/source/ui/dbui/dbinsdlg.cxx b/sw/source/ui/dbui/dbinsdlg.cxx
new file mode 100644
index 000000000000..e0c0ad1f3b02
--- /dev/null
+++ b/sw/source/ui/dbui/dbinsdlg.cxx
@@ -0,0 +1,2470 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbinsdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifdef REPLACE_OFADBMGR
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XDATASOURCE_HPP_
+#include <com/sun/star/sdbc/XDataSource.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XROW_HPP_
+#include <com/sun/star/sdbc/XRow.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XTABLESSUPPLIER_HPP_
+#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XCOLUMNSSUPPLIER_HPP_
+#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XQUERIESSUPPLIER_HPP_
+#include <com/sun/star/sdb/XQueriesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XCOLUMN_HPP_
+#include <com/sun/star/sdb/XColumn.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XDATABASEACCESS_HPP_
+#include <com/sun/star/sdb/XDatabaseAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_DATATYPE_HPP_
+#include <com/sun/star/sdbc/DataType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_RESULTSETTYPE_HPP_
+#include <com/sun/star/sdbc/ResultSetType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATTER_HPP_
+#include <com/sun/star/util/XNumberFormatter.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATTYPES_HPP_
+#include <com/sun/star/util/XNumberFormatTypes.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATSSUPPLIER_HPP_
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+#ifndef _UTL_UNO3_DB_TOOLS_HXX_
+#include <unotools/dbtools.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVX_UNOMID_HXX
+#include <svx/unomid.hxx>
+#endif
+#ifndef _NUMUNO_HXX
+#include <svtools/numuno.hxx>
+#endif
+
+#else
+
+#endif //REPLACE_OFADBMGR
+
+#include <sdb/tools.hxx>
+#ifndef _SDB_SDBCURS_HXX //autogen
+#include <sdb/sdbcurs.hxx>
+#endif
+#include <float.h>
+
+
+#ifndef _TOOLS_INTN_HXX //autogen
+#include <tools/intn.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SBAITEMS_HRC //autogen
+#include <offmgr/sbaitems.hrc>
+#endif
+#ifndef _SFXSTYLE_HXX //autogen
+#include <svtools/style.hxx>
+#endif
+#ifndef _ZFORLIST_HXX //autogen
+#include <svtools/zforlist.hxx>
+#endif
+#ifndef _ZFORMAT_HXX //autogen
+#include <svtools/zformat.hxx>
+#endif
+#ifndef _SFXCFGITEM_HXX //autogen
+#include <sfx2/cfgitem.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFX_SAVEOPT_HXX //autogen
+#include <sfx2/saveopt.hxx>
+#endif
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_RULRITEM_HXX //autogen
+#include <svx/rulritem.hxx>
+#endif
+
+#ifndef _TABLEDLG_HXX //autogen
+#include <tabledlg.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _TABCOL_HXX //autogen
+#include <tabcol.hxx>
+#endif
+#ifndef _UIITEMS_HXX //autogen
+#include <uiitems.hxx>
+#endif
+#ifndef _VIEWOPT_HXX //autogen
+#include <viewopt.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _DBINSDLG_HXX
+#include <dbinsdlg.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _WVIEW_HXX
+#include <wview.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _DBMGR_HXX
+#include <dbmgr.hxx>
+#endif
+#ifndef _TAUTOFMT_HXX
+#include <tautofmt.hxx>
+#endif
+#ifndef _TBLAFMT_HXX
+#include <tblafmt.hxx>
+#endif
+#ifndef _CELLATR_HXX
+#include <cellatr.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+#ifndef _DBFLD_HXX
+#include <dbfld.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _SECTION_HXX //autogen
+#include <section.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+#ifndef _MODOPT_HXX //autogen
+#include <modcfg.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+
+#ifndef _DBINSDLG_HRC
+#include <dbinsdlg.hrc>
+#endif
+#ifndef _DBUI_HRC
+#include <dbui.hrc>
+#endif
+#ifndef _CFGSTR_HRC
+#include <cfgstr.hrc>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _CFGID_H
+#include <cfgid.h>
+#endif
+
+
+#ifdef REPLACE_OFADBMGR
+using namespace rtl;
+using namespace com::sun::star;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::container;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::sdb;
+using namespace com::sun::star::sdbc;
+using namespace com::sun::star::sdbcx;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::util;
+#define C2U(cChar) OUString::createFromAscii(cChar)
+#endif
+
+const char cDBFldStart = '<';
+const char cDBFldEnd = '>';
+#define C2S(cChar) String::CreateFromAscii(cChar)
+
+// Hilfsstruktur fuers einfuegen von Datenbankspalten als Felder oder Text
+struct _DB_Column
+{
+ enum { DB_FILLTEXT, DB_COL_FIELD, DB_COL_TEXT, DB_SPLITPARA } eColType;
+
+ union {
+ String* pText;
+ SwField* pField;
+ ULONG nFormat;
+ } DB_ColumnData;
+ const SwInsDBColumn* pColInfo;
+
+ _DB_Column()
+ {
+ pColInfo = 0;
+ DB_ColumnData.pText = 0;
+ eColType = DB_SPLITPARA;
+ }
+
+ _DB_Column( const String& rTxt )
+ {
+ pColInfo = 0;
+ DB_ColumnData.pText = new String( rTxt );
+ eColType = DB_FILLTEXT;
+ }
+
+ _DB_Column( const SwInsDBColumn& rInfo, ULONG nFormat )
+ {
+ pColInfo = &rInfo;
+ DB_ColumnData.nFormat = nFormat;
+ eColType = DB_COL_TEXT;
+ }
+
+ _DB_Column( const SwInsDBColumn& rInfo, SwDBField& rFld )
+ {
+ pColInfo = &rInfo;
+ DB_ColumnData.pField = &rFld;
+ eColType = DB_COL_FIELD;
+ }
+
+ ~_DB_Column()
+ {
+ if( DB_COL_FIELD == eColType )
+ delete DB_ColumnData.pField;
+ else if( DB_FILLTEXT == eColType )
+ delete DB_ColumnData.pText;
+ }
+};
+
+typedef _DB_Column* _DB_ColumnPtr;
+SV_DECL_PTRARR_DEL( _DB_Columns, _DB_ColumnPtr, 32, 32 )
+SV_IMPL_PTRARR( _DB_Columns, _DB_ColumnPtr )
+
+SV_IMPL_OP_PTRARR_SORT( SwInsDBColumns, SwInsDBColumnPtr )
+
+/* */
+
+#define DBCOLUMN_CONFIG_VERSION1 1
+#define DBCOLUMN_CONFIG_VERSION DBCOLUMN_CONFIG_VERSION1
+#define DBCOLUMN_MAXDATA 5
+
+struct _DB_ColumnConfigData
+{
+ SwInsDBColumns aDBColumns;
+ String sDBName, sEdit, sTblList, sTmplNm, sTAutoFmtNm;
+ BOOL bIsTable : 1,
+ bIsField : 1,
+ bIsHeadlineOn : 1,
+ bIsEmptyHeadln : 1;
+
+ _DB_ColumnConfigData()
+ {
+ bIsTable = bIsHeadlineOn = TRUE;
+ bIsField = bIsEmptyHeadln = FALSE;
+ }
+
+ _DB_ColumnConfigData( SvStream& rStream, UINT16 nVers );
+
+ ~_DB_ColumnConfigData();
+
+ void Save( SvStream& rStream ) const;
+
+ BOOL IsEqualDB( const _DB_ColumnConfigData& ) const;
+private:
+ _DB_ColumnConfigData( const _DB_ColumnConfigData& );
+ _DB_ColumnConfigData& operator =( const _DB_ColumnConfigData& );
+};
+
+class _DB_ColumnConfig : public SfxConfigItem
+{
+ _DB_ColumnConfigData* aData[ DBCOLUMN_MAXDATA ];
+
+protected:
+ virtual String GetName() const;
+ virtual int Load(SvStream& rStream);
+ virtual BOOL Store(SvStream& rStream);
+
+public:
+ _DB_ColumnConfig();
+ virtual ~_DB_ColumnConfig();
+
+ virtual void UseDefault();
+
+ const _DB_ColumnConfigData* HasData( const _DB_ColumnConfigData& rData ) const;
+ void SetData( _DB_ColumnConfigData* pData );
+};
+
+/* */
+
+int SwInsDBColumn::operator<( const SwInsDBColumn& rCmp ) const
+{
+ return COMPARE_LESS == Application::GetAppInternational().Compare(
+ sColumn, rCmp.sColumn );
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+#ifdef REPLACE_OFADBMGR
+SwInsertDBColAutoPilot::SwInsertDBColAutoPilot( SwView& rView,
+ Reference<XDataSource> xDataSource,
+ Reference<sdbcx::XColumnsSupplier> xColSupp,
+ const SwInsDBData& rData )
+#else
+SwInsertDBColAutoPilot::SwInsertDBColAutoPilot( SwView& rView )
+#endif //REPLACE_OFADBMGR
+ : SfxModalDialog( rView.GetWindow(), SW_RES( DLG_AP_INSERT_DB_SEL )),
+ aFtInsertData( this, SW_RES( FT_INSERT_DATA )),
+ aRbAsTable( this, SW_RES( RB_AS_TABLE )),
+ aRbAsField( this, SW_RES( RB_AS_FIELD )),
+ aRbAsText( this, SW_RES( RB_AS_TEXT )),
+ aBtOk( this, SW_RES( BT_OK )),
+ aBtCancel( this, SW_RES( BT_CANCEL )),
+ aBtHelp( this, SW_RES( BT_HELP )),
+ aGbSelection( this, SW_RES( GB_SELECTION )),
+ aFtDbColumn( this, SW_RES( FT_DB_COLUMN )),
+ aGbDbFormat( this, SW_RES( GB_DB_FORMAT )),
+ aRbDbFmtFromDb( this, SW_RES( RB_DBFMT_FROM_DB )),
+ aRbDbFmtFromUsr( this, SW_RES( RB_DBFMT_FROM_USR )),
+ aLbDbFmtFromUsr( this, &rView, SW_RES( LB_DBFMT_FROM_USR )),
+
+ /* ----- Page Text/Field ------- */
+ aLbTxtDbColumn( this, SW_RES( LB_TXT_DB_COLUMN )),
+ aPbDbcolToEdit( this, SW_RES( PB_DBCOL_TOEDIT )),
+ aEdDbText( this, SW_RES( ED_DB_TEXT )),
+ aFtDbParaColl( this, SW_RES( FT_DB_PARA_COLL )),
+ aLbDbParaColl( this, SW_RES( LB_DB_PARA_COLL )),
+
+ /* ----- Page Table ------------ */
+ aLbTblDbColumn( this, SW_RES( LB_TBL_DB_COLUMN )),
+ aPbDbcolAllTo( this, SW_RES( PB_DBCOL_ALL_TO )),
+ aPbDbcolOneTo( this, SW_RES( PB_DBCOL_ONE_TO )),
+ aPbDbcolOneFrom( this, SW_RES( PB_DBCOL_ONE_FROM )),
+ aPbDbcolAllFrom( this, SW_RES( PB_DBCOL_ALL_FROM )),
+ aFtTableCol( this, SW_RES( FT_TABLE_COL )),
+ aLbTableCol( this, SW_RES( LB_TABLE_COL )),
+ aGbTableHead( this, SW_RES( GB_TABLE_HEAD )),
+ aCbTableHeadon( this, SW_RES( CB_TABLE_HEADON )),
+ aRbHeadlColnms( this, SW_RES( RB_HEADL_COLNMS )),
+ aRbHeadlEmpty( this, SW_RES( RB_HEADL_EMPTY )),
+ aPbTblFormat( this, SW_RES( PB_TBL_FORMAT )),
+ aPbTblAutofmt( this, SW_RES( PB_TBL_AUTOFMT )),
+
+ sNoTmpl( SW_RES( STR_NOTEMPL )),
+#ifdef REPLACE_OFADBMGR
+ aDBData(rData),
+#endif //REPLACE_OFADBMGR
+ pView( &rView ),
+ pTAutoFmt( 0 ),
+ pTblSet( 0 ),
+ pRep( 0 ),
+ aOldNumFmtLnk( aLbDbFmtFromUsr.GetSelectHdl() ),
+ pConfig( 0 )
+{
+ FreeResource();
+
+ nGBFmtLen = aGbDbFormat.GetText().Len();
+
+#ifdef REPLACE_OFADBMGR
+ if(xColSupp.is())
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ SvNumberFormatter* pNumFmtr = rSh.GetNumberFormatter();
+ SfxItemSet aSet(pView->GetPool(), RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE);
+ rSh.GetAttr( aSet );
+ Locale aDocLocale;
+ if(SFX_ITEM_DEFAULT <= aSet.GetItemState(RES_CHRATR_LANGUAGE, TRUE))
+ {
+ Any aLoc;
+ const SfxPoolItem& rItem = aSet.Get(RES_CHRATR_LANGUAGE);
+ rItem.QueryValue(aLoc, MID_LANG_LOCALE);
+ aDocLocale = *(Locale*)aLoc.getValue();
+ }
+
+ SvNumberFormatsSupplierObj* pNumFmt = new SvNumberFormatsSupplierObj( pNumFmtr );
+ Reference< util::XNumberFormatsSupplier > xDocNumFmtsSupplier = pNumFmt;
+ Reference< XNumberFormats > xDocNumberFormats = xDocNumFmtsSupplier->getNumberFormats();
+ Reference< XNumberFormatTypes > xDocNumberFormatTypes(xDocNumberFormats, UNO_QUERY);
+
+ Reference<XPropertySet> xSourceProps(xDataSource, UNO_QUERY);
+ Reference< XNumberFormats > xNumberFormats;
+ if(xSourceProps.is())
+ {
+ Any aFormats = xSourceProps->getPropertyValue(C2U("NumberFormatsSupplier"));
+ if(aFormats.hasValue())
+ {
+ Reference<XNumberFormatsSupplier> xSuppl = *(Reference<util::XNumberFormatsSupplier>*) aFormats.getValue();
+ if(xSuppl.is())
+ {
+ xNumberFormats = xSuppl->getNumberFormats( );
+ }
+ }
+ }
+ Reference <XNameAccess> xCols = xColSupp->getColumns();
+ Sequence<OUString> aColNames = xCols->getElementNames();
+ const OUString* pColNames = aColNames.getConstArray();
+ long nCount = aColNames.getLength();
+ for (long n = 0; n < nCount; n++)
+ {
+ SwInsDBColumn* pNew = new SwInsDBColumn(
+ pColNames[n], n );
+ Any aCol = xCols->getByName(pColNames[n]);
+ Reference <XPropertySet> xCol = *(Reference <XPropertySet>*)aCol.getValue();
+ Any aType = xCol->getPropertyValue(C2S("Type"));
+ sal_Int32 eDataType;
+ aType >>= eDataType;
+ switch(eDataType)
+ {
+ case DataType::BIT:
+ case DataType::TINYINT:
+ case DataType::SMALLINT:
+ case DataType::INTEGER:
+ case DataType::BIGINT:
+ case DataType::FLOAT:
+ case DataType::REAL:
+ case DataType::DOUBLE:
+ case DataType::NUMERIC:
+ case DataType::DECIMAL:
+ case DataType::DATE:
+ case DataType::TIME:
+ case DataType::TIMESTAMP:
+ {
+ pNew->bHasFmt = TRUE;
+ Any aFormat = xCol->getPropertyValue(C2U("FormatKey"));
+ if(aFormat.hasValue())
+ {
+ sal_Int32 nFmt;
+ aFormat >>= nFmt;
+ if(xNumberFormats.is())
+ {
+ try
+ {
+ Reference<XPropertySet> xNumProps = xNumberFormats->getByKey( nFmt );
+ Any aFormat = xNumProps->getPropertyValue(C2U("FormatString"));
+ Any aLocale = xNumProps->getPropertyValue(C2U("Locale"));
+ OUString sFormat;
+ aFormat >>= sFormat;
+ com::sun::star::lang::Locale aLoc;
+ aLocale >>= aLoc;
+ nFmt = xDocNumberFormats->addNew( sFormat, aLoc ),
+ pNew->nDBNumFmt = nFmt;
+ }
+ catch(...)
+ {
+ DBG_ERROR("illegal number format key")
+ }
+ }
+ }
+ else
+ pNew->nDBNumFmt = utl::getDefaultNumberFormat(xCol,
+ xDocNumberFormatTypes,
+ aDocLocale);
+
+ }
+ break;
+ }
+ if( !aDBColumns.Insert( pNew ))
+ {
+ ASSERT( !this, "Spaltenname mehrfach vergeben?" );
+ delete pNew;
+ }
+ }
+ }
+#else
+ // die ListBoxen mit den Spaltenkoepfen fuellen:
+ {
+ USHORT n;
+ SwNewDBMgr* pDBMgr = pView->GetWrtShell().GetNewDBMgr();
+ const String& rDBName = pView->GetWrtShell().GetDBDesc();
+
+ if( pDBMgr->IsDBOpen( DBMGR_STD, rDBName) ||
+ pDBMgr->OpenDB( DBMGR_STD, rDBName, TRUE ) )
+ {
+ SbaDBDataDefRef xDBDef = pDBMgr->OpenColumnNames( DBMGR_STD );
+ if( xDBDef.Is() )
+ {
+ const SbaColumnList& rCols = xDBDef->GetOriginalColumns();
+ for( n = 0; n < rCols.Count(); ++n )
+ {
+ const SbaColumn* pCol = rCols.GetObject( n );
+ const SbaNameItem& rNmItm = (SbaNameItem&)pCol->Get(
+ SBA_DEF_FLTNAME );
+ const SbaDataFieldTypeItem& rType = (SbaDataFieldTypeItem&)
+ pCol->Get( SBA_DEF_FLTTYPE );
+
+ SwInsDBColumn* pNew = new SwInsDBColumn(
+ rNmItm.GetValue(), n );
+
+ switch( rType.GetValue() )
+ {
+ case dbCurrency:
+ case dbCounter:
+ case dbNumeric:
+ case dbDateTime:
+ case dbDate:
+ case dbTime:
+ case dbBool:
+ case dbDecimal:
+ case dbBigInt:
+ pNew->bHasFmt = TRUE;
+ pNew->nDBNumFmt = ((SfxUInt32Item&)pCol->Get(
+ SBA_DEF_FMTVALUE)).GetValue();
+ break;
+ }
+
+ if( !aDBColumns.Insert( pNew ))
+ {
+ ASSERT( !this, "Spaltenname mehrfach vergeben?" );
+ delete pNew;
+ }
+ }
+ }
+ }
+ }
+#endif //REPLACE_OFADBMGR
+
+ // Absatzvorlagen-ListBox fuellen
+ {
+ SfxStyleSheetBasePool* pPool = pView->GetDocShell()->GetStyleSheetPool();
+ pPool->SetSearchMask( SFX_STYLE_FAMILY_PARA, SFXSTYLEBIT_ALL );
+ aLbDbParaColl.InsertEntry( sNoTmpl );
+
+ const SfxStyleSheetBase* pBase = pPool->First();
+ while( pBase )
+ {
+ aLbDbParaColl.InsertEntry( pBase->GetName() );
+ pBase = pPool->Next();
+ }
+ aLbDbParaColl.SelectEntryPos( 0 );
+ }
+
+ // steht der Cursor in einer Tabelle, darf NIE Tabelle auswaehlbar sein
+ if( pView->GetWrtShell().GetTableFmt() )
+ {
+ aRbAsTable.Enable( FALSE );
+ aRbAsField.Check( TRUE );
+ aRbDbFmtFromDb.Check( TRUE );
+ }
+ else
+ {
+ aRbAsTable.Check( TRUE );
+ aRbDbFmtFromDb.Check( TRUE );
+ aPbDbcolOneFrom.Enable( FALSE );
+ aPbDbcolAllFrom.Enable( FALSE );
+ }
+
+ aRbAsTable.SetClickHdl( LINK(this, SwInsertDBColAutoPilot, PageHdl ));
+ aRbAsField.SetClickHdl( LINK(this, SwInsertDBColAutoPilot, PageHdl ));
+ aRbAsText.SetClickHdl( LINK(this, SwInsertDBColAutoPilot, PageHdl ));
+
+ aRbDbFmtFromDb.SetClickHdl( LINK(this, SwInsertDBColAutoPilot, DBFormatHdl ));
+ aRbDbFmtFromUsr.SetClickHdl( LINK(this, SwInsertDBColAutoPilot, DBFormatHdl ));
+
+ aPbTblFormat.SetClickHdl(LINK(this, SwInsertDBColAutoPilot, TblFmtHdl ));
+ aPbTblAutofmt.SetClickHdl(LINK(this, SwInsertDBColAutoPilot, AutoFmtHdl ));
+
+ aPbDbcolAllTo.SetClickHdl( LINK(this, SwInsertDBColAutoPilot, TblToFromHdl ));
+ aPbDbcolOneTo.SetClickHdl( LINK(this, SwInsertDBColAutoPilot, TblToFromHdl ));
+ aPbDbcolOneFrom.SetClickHdl( LINK(this, SwInsertDBColAutoPilot, TblToFromHdl ));
+ aPbDbcolAllFrom.SetClickHdl( LINK(this, SwInsertDBColAutoPilot, TblToFromHdl ));
+ aPbDbcolToEdit.SetClickHdl( LINK(this, SwInsertDBColAutoPilot, TblToFromHdl ));
+
+ aCbTableHeadon.SetClickHdl( LINK(this, SwInsertDBColAutoPilot, HeaderHdl ));
+ aRbHeadlColnms.SetClickHdl( LINK(this, SwInsertDBColAutoPilot, HeaderHdl ));
+ aRbHeadlEmpty.SetClickHdl( LINK(this, SwInsertDBColAutoPilot, HeaderHdl ));
+
+ aLbTxtDbColumn.SetSelectHdl( LINK( this, SwInsertDBColAutoPilot, SelectHdl ));
+ aLbTblDbColumn.SetSelectHdl( LINK( this, SwInsertDBColAutoPilot, SelectHdl ));
+ aLbDbFmtFromUsr.SetSelectHdl( LINK( this, SwInsertDBColAutoPilot, SelectHdl ));
+ aLbTableCol.SetSelectHdl( LINK( this, SwInsertDBColAutoPilot, SelectHdl ));
+
+ aLbTxtDbColumn.SetDoubleClickHdl( LINK( this, SwInsertDBColAutoPilot, DblClickHdl ));
+ aLbTblDbColumn.SetDoubleClickHdl( LINK( this, SwInsertDBColAutoPilot, DblClickHdl ));
+ aLbTableCol.SetDoubleClickHdl( LINK( this, SwInsertDBColAutoPilot, DblClickHdl ));
+
+ for( USHORT n = 0; n < aDBColumns.Count(); ++n )
+ {
+ const String& rS = aDBColumns[ n ]->sColumn;
+ aLbTblDbColumn.InsertEntry( rS, n );
+ aLbTxtDbColumn.InsertEntry( rS, n );
+ }
+ aLbTxtDbColumn.SelectEntryPos( 0 );
+ aLbTblDbColumn.SelectEntryPos( 0 );
+
+ // Daten aus dem INI-File lesen:
+ ReadIniToUI();
+
+ // Controls initialisieren:
+ PageHdl( aRbAsTable.IsChecked() ? &aRbAsTable : &aRbAsField );
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwInsertDBColAutoPilot::~SwInsertDBColAutoPilot()
+{
+ delete pTblSet;
+ delete pRep;
+
+ delete pConfig;
+ delete pTAutoFmt;
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK( SwInsertDBColAutoPilot, PageHdl, Button*, pButton )
+{
+ BOOL bShowTbl = pButton == &aRbAsTable;
+
+ String sTxt( pButton->GetText() );
+ aGbSelection.SetText( sTxt.EraseAllChars( '~' ) );
+
+ aLbTxtDbColumn.Show( !bShowTbl );
+ aPbDbcolToEdit.Show( !bShowTbl );
+ aEdDbText.Show( !bShowTbl );
+ aFtDbParaColl.Show( !bShowTbl );
+ aLbDbParaColl.Show( !bShowTbl );
+
+ aLbTblDbColumn.Show( bShowTbl );
+ aPbDbcolAllTo.Show( bShowTbl );
+ aPbDbcolOneTo.Show( bShowTbl );
+ aPbDbcolOneFrom.Show( bShowTbl );
+ aPbDbcolAllFrom.Show( bShowTbl );
+ aFtTableCol.Show( bShowTbl );
+ aLbTableCol.Show( bShowTbl );
+ aGbTableHead.Show( bShowTbl );
+ aCbTableHeadon.Show( bShowTbl );
+ aRbHeadlColnms.Show( bShowTbl );
+ aRbHeadlEmpty.Show( bShowTbl );
+ aPbTblFormat.Show( bShowTbl );
+ aPbTblAutofmt.Show( bShowTbl );
+
+ if( bShowTbl )
+ aPbTblFormat.Enable( 0 != aLbTableCol.GetEntryCount() );
+
+ SelectHdl( bShowTbl ? &aLbTblDbColumn : &aLbTxtDbColumn );
+
+ return 0;
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK( SwInsertDBColAutoPilot, DBFormatHdl, Button*, pButton )
+{
+ USHORT nFndPos;
+ ListBox& rBox = aRbAsTable.IsChecked()
+ ? ( 0 == aLbTableCol.GetEntryData( 0 )
+ ? aLbTblDbColumn
+ : aLbTableCol )
+ : aLbTxtDbColumn;
+
+ SwInsDBColumn aSrch( rBox.GetSelectEntry(), 0 );
+ aDBColumns.Seek_Entry( &aSrch, &nFndPos );
+
+ BOOL bFromDB = &aRbDbFmtFromDb == pButton;
+ aDBColumns[ nFndPos ]->bIsDBFmt = bFromDB;
+ aLbDbFmtFromUsr.Enable( !bFromDB );
+
+ return 0;
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK( SwInsertDBColAutoPilot, TblToFromHdl, Button*, pButton )
+{
+ BOOL bChgEnable = TRUE, bEnableTo = TRUE, bEnableFrom = TRUE;
+ aLbTblDbColumn.SetUpdateMode( FALSE );
+ aLbTableCol.SetUpdateMode( FALSE );
+
+ if( pButton == &aPbDbcolAllTo )
+ {
+ bEnableTo = FALSE;
+
+ USHORT n, nInsPos = aLbTableCol.GetSelectEntryPos(),
+ nCnt = aLbTblDbColumn.GetEntryCount();
+ if( LISTBOX_APPEND == nInsPos )
+ for( n = 0; n < nCnt; ++n )
+ aLbTableCol.InsertEntry( aLbTblDbColumn.GetEntry( n ),
+ LISTBOX_APPEND );
+ else
+ for( n = 0; n < nCnt; ++n, ++nInsPos )
+ aLbTableCol.InsertEntry( aLbTblDbColumn.GetEntry( n ), nInsPos );
+ aLbTblDbColumn.Clear();
+ aLbTableCol.SelectEntryPos( nInsPos );
+ aLbTblDbColumn.SelectEntryPos( LISTBOX_APPEND );
+ }
+ else if( pButton == &aPbDbcolOneTo &&
+ LISTBOX_ENTRY_NOTFOUND != aLbTblDbColumn.GetSelectEntryPos() )
+ {
+ USHORT nInsPos = aLbTableCol.GetSelectEntryPos(),
+ nDelPos = aLbTblDbColumn.GetSelectEntryPos(),
+ nTopPos = aLbTblDbColumn.GetTopEntry();
+ aLbTableCol.InsertEntry( aLbTblDbColumn.GetEntry( nDelPos ), nInsPos );
+ aLbTblDbColumn.RemoveEntry( nDelPos );
+
+ aLbTableCol.SelectEntryPos( nInsPos );
+ if( nDelPos >= aLbTblDbColumn.GetEntryCount() )
+ nDelPos = aLbTblDbColumn.GetEntryCount() - 1;
+ aLbTblDbColumn.SelectEntryPos( nDelPos );
+ aLbTblDbColumn.SetTopEntry( nTopPos );
+
+ bEnableTo = 0 != aLbTblDbColumn.GetEntryCount();
+ }
+ else if( pButton == &aPbDbcolOneFrom )
+ {
+ if( LISTBOX_ENTRY_NOTFOUND != aLbTableCol.GetSelectEntryPos() )
+ {
+ USHORT nFndPos, nInsPos,
+ nDelPos = aLbTableCol.GetSelectEntryPos(),
+ nTopPos = aLbTableCol.GetTopEntry();
+
+ // die richtige InsertPos suchen!!
+ SwInsDBColumn aSrch( aLbTableCol.GetEntry( nDelPos ), 0 );
+ aDBColumns.Seek_Entry( &aSrch, &nFndPos );
+ if( !nFndPos || nFndPos == aDBColumns.Count()-1 )
+ nInsPos = nFndPos;
+ else
+ {
+ nInsPos = LISTBOX_ENTRY_NOTFOUND;
+ while( ++nFndPos < aDBColumns.Count() &&
+ LISTBOX_ENTRY_NOTFOUND == (nInsPos = aLbTblDbColumn.
+ GetEntryPos( aDBColumns[ nFndPos ]->sColumn )) )
+ ;
+ }
+
+ aLbTblDbColumn.InsertEntry( aSrch.sColumn, nInsPos );
+ aLbTableCol.RemoveEntry( nDelPos );
+
+ if( nInsPos >= aLbTblDbColumn.GetEntryCount() )
+ nInsPos = aLbTblDbColumn.GetEntryCount() - 1;
+ aLbTblDbColumn.SelectEntryPos( nInsPos );
+
+ if( nDelPos >= aLbTableCol.GetEntryCount() )
+ nDelPos = aLbTableCol.GetEntryCount() - 1;
+ aLbTableCol.SelectEntryPos( nDelPos );
+ aLbTableCol.SetTopEntry( nTopPos );
+ }
+ else
+ bEnableTo = 0 != aLbTblDbColumn.GetEntryCount();
+
+ bEnableFrom = 0 != aLbTableCol.GetEntryCount();
+ }
+ else if( pButton == &aPbDbcolAllFrom )
+ {
+ bEnableFrom = FALSE;
+
+ aLbTblDbColumn.Clear();
+ aLbTableCol.Clear();
+ for( USHORT n = 0; n < aDBColumns.Count(); ++n )
+ aLbTblDbColumn.InsertEntry( aDBColumns[ n ]->sColumn, n );
+ aLbTblDbColumn.SelectEntryPos( 0 );
+ }
+ else if( pButton == &aPbDbcolToEdit )
+ {
+ bChgEnable = FALSE;
+ // Daten ins Edit moven:
+ String aFld( aLbTxtDbColumn.GetSelectEntry() );
+ if( aFld.Len() )
+ {
+ String aStr( aEdDbText.GetText() );
+ USHORT nPos = (USHORT)aEdDbText.GetSelection().Min();
+ USHORT nSel = USHORT(aEdDbText.GetSelection().Max()) - nPos;
+ if( nSel )
+ // dann loesche erstmal die bestehende Selektion
+ aStr.Erase( nPos, nSel );
+
+ aFld.Insert( cDBFldStart, 0 );
+ aFld += cDBFldEnd;
+ if( aStr.Len() )
+ {
+ if( nPos ) // ein Space davor
+ {
+ char c = aStr.GetChar( nPos-1 );
+ if( '\n' != c && '\r' != c )
+ aFld.Insert( ' ', 0 );
+ }
+ if( nPos < aStr.Len() ) // ein Space dahinter
+ {
+ char c = aStr.GetChar( nPos );
+ if( '\n' != c && '\r' != c )
+ aFld += ' ';
+ }
+ }
+
+ aStr.Insert( aFld, nPos );
+ aEdDbText.SetText( aStr );
+ nPos += aFld.Len();
+ aEdDbText.SetSelection( Selection( nPos ));
+ }
+ }
+
+ if( bChgEnable )
+ {
+ aPbDbcolOneTo.Enable( bEnableTo );
+ aPbDbcolAllTo.Enable( bEnableTo );
+ aPbDbcolOneFrom.Enable( bEnableFrom );
+ aPbDbcolAllFrom.Enable( bEnableFrom );
+
+ aRbDbFmtFromDb.Enable( FALSE );
+ aRbDbFmtFromUsr.Enable( FALSE );
+ aLbDbFmtFromUsr.Enable( FALSE );
+
+ aPbTblFormat.Enable( bEnableFrom );
+ }
+ aLbTblDbColumn.SetUpdateMode( TRUE );
+ aLbTableCol.SetUpdateMode( TRUE );
+
+ return 0;
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK( SwInsertDBColAutoPilot, DblClickHdl, ListBox*, pBox )
+{
+ Button* pButton = 0;
+ if( pBox == &aLbTxtDbColumn )
+ pButton = &aPbDbcolToEdit;
+ else if( pBox == &aLbTblDbColumn && aPbDbcolOneTo.IsEnabled() )
+ pButton = &aPbDbcolOneTo;
+ else if( pBox == &aLbTableCol && aPbDbcolOneFrom.IsEnabled() )
+ pButton = &aPbDbcolOneFrom;
+
+ if( pButton )
+ TblToFromHdl( pButton );
+
+ return 0;
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK( SwInsertDBColAutoPilot, TblFmtHdl, PushButton*, pButton )
+{
+ SwWrtShell& rSh = pView->GetWrtShell();
+ SFX_APP()->GetOptions().SetMetric( ::GetDfltMetric(0 != PTR_CAST(SwWebView, pView)) );
+ BOOL bNewSet = FALSE;
+ if( !pTblSet )
+ {
+ bNewSet = TRUE;
+ pTblSet = new SfxItemSet( rSh.GetAttrPool(), aUITableAttrRange );
+
+ //Ersteinmal die einfachen Attribute besorgen.
+ pTblSet->Put( SfxStringItem( FN_PARAM_TABLE_NAME, rSh.GetUniqueTblName() ));
+ pTblSet->Put( SfxBoolItem( FN_PARAM_TABLE_HEADLINE, TRUE ) );
+
+ pTblSet->Put( SfxUInt16Item( SID_BACKGRND_DESTINATION,
+ rSh.GetViewOptions()->GetTblDest() ));
+
+ SvxBrushItem aBrush( RES_BACKGROUND );
+ pTblSet->Put( aBrush );
+ pTblSet->Put( aBrush, SID_ATTR_BRUSH_ROW );
+ pTblSet->Put( aBrush, SID_ATTR_BRUSH_TABLE );
+
+ SvxBoxInfoItem aBoxInfo;
+ // Tabellenvariante, wenn mehrere Tabellenzellen selektiert
+ aBoxInfo.SetTable( TRUE );
+ // Abstandsfeld immer anzeigen
+ aBoxInfo.SetDist( TRUE);
+ // Minimalgroesse in Tabellen und Absaetzen setzen
+ aBoxInfo.SetMinDist( FALSE );
+ // Default-Abstand immer setzen
+ aBoxInfo.SetDefDist( MIN_BORDER_DIST );
+ // Einzelne Linien koennen nur in Tabellen DontCare-Status haben
+ aBoxInfo.SetValid( VALID_DISABLE, TRUE );
+ pTblSet->Put( aBoxInfo );
+
+ SwGetCurColNumPara aPara;
+ const int nNum = rSh.GetCurColNum( &aPara );
+ long nWidth;
+
+ if( nNum )
+ {
+ nWidth = aPara.pPrtRect->Width();
+ const SwFmtCol& rCol = aPara.pFrmFmt->GetCol();
+ const SwColumns& rCols = rCol.GetColumns();
+
+ //nStart und nEnd initialisieren fuer nNum == 0
+ long nWidth1 = 0,
+ nStart1 = 0,
+ nEnd1 = nWidth;
+ for( int i = 0; i < nNum; ++i )
+ {
+ SwColumn* pCol = rCols[i];
+ nStart1 = pCol->GetLeft() + nWidth1;
+ nWidth1 += (long)rCol.CalcColWidth( i, (USHORT)nWidth );
+ nEnd1 = nWidth1 - pCol->GetRight();
+ }
+ if(nStart1 || nEnd1 != nWidth)
+ nWidth = nEnd1 - nStart1;
+ }
+ else
+ nWidth = rSh.GetAnyCurRect(
+ FRMTYPE_FLY_ANY & rSh.GetFrmType( 0, TRUE )
+ ? RECT_FLY_PRT_EMBEDDED
+ : RECT_PAGE_PRT ).Width();
+
+ SwTabCols aTabCols;
+ aTabCols.SetRight( nWidth );
+ aTabCols.SetRightMax( nWidth );
+ pRep = new SwTableRep( aTabCols, FALSE );
+ pRep->SetAlign( HORI_NONE );
+ pRep->SetSpace( nWidth );
+ pRep->SetWidth( nWidth );
+ pRep->SetWidthPercent( 100 );
+ pTblSet->Put( SwPtrItem( FN_TABLE_REP, pRep ));
+
+ pTblSet->Put( SfxUInt16Item( SID_HTML_MODE,
+ ::GetHtmlMode( pView->GetDocShell() )));
+ }
+
+ if( aLbTableCol.GetEntryCount() != pRep->GetAllColCount() )
+ {
+ // Anzahl der Spalten hat sich geaendert: dann muessen die
+ // TabCols angepasst werden
+ long nWidth = pRep->GetWidth();
+ USHORT nCols = aLbTableCol.GetEntryCount() - 1;
+ SwTabCols aTabCols( nCols );
+ aTabCols.SetRight( nWidth );
+ aTabCols.SetRightMax( nWidth );
+ if( nCols )
+ for( USHORT n = 0, nStep = nWidth / (nCols+1), nW = nStep;
+ n < nCols; ++n, nW += nStep )
+ {
+ aTabCols.Insert( nW, n );
+ aTabCols.InsertHidden( n, FALSE );
+ }
+ delete pRep;
+ pRep = new SwTableRep( aTabCols, FALSE );
+ pRep->SetAlign( HORI_NONE );
+ pRep->SetSpace( nWidth );
+ pRep->SetWidth( nWidth );
+ pRep->SetWidthPercent( 100 );
+ pTblSet->Put( SwPtrItem( FN_TABLE_REP, pRep ));
+ }
+
+ SwTableTabDlg* pDlg = new SwTableTabDlg( pButton, rSh.GetAttrPool(),
+ pTblSet, &rSh );
+ if( RET_OK == pDlg->Execute() )
+ pTblSet->Put( *pDlg->GetOutputItemSet() );
+ else if( bNewSet )
+ {
+ delete pTblSet, pTblSet = 0;
+ delete pRep, pRep = 0;
+ }
+ delete pDlg;
+
+ return 0;
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK( SwInsertDBColAutoPilot, AutoFmtHdl, PushButton*, pButton )
+{
+ SwAutoFormatDlg aDlg( pButton, pView->GetWrtShellPtr(), FALSE, pTAutoFmt );
+ if( RET_OK == aDlg.Execute())
+ aDlg.FillAutoFmtOfIndex( pTAutoFmt );
+ return 0;
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK( SwInsertDBColAutoPilot, SelectHdl, ListBox*, pBox )
+{
+ ListBox* pGetBox = pBox == &aLbDbFmtFromUsr
+ ? ( aRbAsTable.IsChecked()
+ ? ( 0 == aLbTableCol.GetEntryData( 0 )
+ ? &aLbTblDbColumn
+ : &aLbTableCol )
+ : &aLbTxtDbColumn )
+ : pBox;
+
+ USHORT nFndPos;
+ SwInsDBColumn aSrch( pGetBox->GetSelectEntry(), 0 );
+ aDBColumns.Seek_Entry( &aSrch, &nFndPos );
+
+ if( pBox == &aLbDbFmtFromUsr )
+ {
+ if( aSrch.sColumn.Len() )
+ {
+ aOldNumFmtLnk.Call( pBox );
+ aDBColumns[ nFndPos ]->nUsrNumFmt = aLbDbFmtFromUsr.GetFormat();
+ }
+ }
+ else
+ {
+ // an der FormatGroupBox den ausgewaehlten FeldNamen setzen, damit
+ // klar ist, welches Feld ueber das Format eingestellt wird!
+ String sTxt( aGbDbFormat.GetText().Copy( 0, nGBFmtLen ));
+ if( !aSrch.sColumn.Len() )
+ {
+ aRbDbFmtFromDb.Enable( FALSE );
+ aRbDbFmtFromUsr.Enable( FALSE );
+ aLbDbFmtFromUsr.Enable( FALSE );
+ }
+ else
+ {
+ BOOL bEnableFmt = aDBColumns[ nFndPos ]->bHasFmt;
+ aRbDbFmtFromDb.Enable( bEnableFmt );
+ aRbDbFmtFromUsr.Enable( bEnableFmt );
+
+ if( bEnableFmt )
+ (( sTxt += C2S(" (" )) += aSrch.sColumn ) += (sal_Unicode)')';
+
+ BOOL bIsDBFmt = aDBColumns[ nFndPos ]->bIsDBFmt;
+ aRbDbFmtFromDb.Check( bIsDBFmt );
+ aRbDbFmtFromUsr.Check( !bIsDBFmt );
+ aLbDbFmtFromUsr.Enable( !bIsDBFmt );
+ if( !bIsDBFmt )
+ aLbDbFmtFromUsr.SetDefFormat( aDBColumns[ nFndPos ]->nUsrNumFmt );
+ }
+
+ aGbDbFormat.SetText( sTxt );
+
+ // um spaeter zu wissen, welche ListBox die "aktive" war, wird sich
+ // im 1. Eintrag ein Flag gemerkt,
+ void* pPtr = pBox == &aLbTableCol ? &aLbTableCol : 0;
+ aLbTableCol.SetEntryData( 0, pPtr );
+ }
+ return 0;
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK( SwInsertDBColAutoPilot, HeaderHdl, Button*, pButton )
+{
+ if( pButton == &aCbTableHeadon )
+ {
+ BOOL bEnable = aCbTableHeadon.IsChecked();
+
+ aRbHeadlColnms.Enable( bEnable );
+ aRbHeadlEmpty.Enable( bEnable );
+ }
+ return 0;
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+void lcl_InsTextInArr( const String& rTxt, _DB_Columns& rColArr )
+{
+ _DB_Column* pNew;
+ USHORT nSttPos = 0, nFndPos;
+ while( STRING_NOTFOUND != ( nFndPos = rTxt.Search( '\x0A', nSttPos )) )
+ {
+ if( 1 < nFndPos )
+ {
+ pNew = new _DB_Column( rTxt.Copy( nSttPos, nFndPos -1 ) );
+ rColArr.Insert( pNew, rColArr.Count() );
+ }
+ pNew = new _DB_Column;
+ rColArr.Insert( pNew, rColArr.Count() );
+ nSttPos = nFndPos + 1;
+ }
+ if( nSttPos < rTxt.Len() )
+ {
+ pNew = new _DB_Column( rTxt.Copy( nSttPos ) );
+ rColArr.Insert( pNew, rColArr.Count() );
+ }
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+FASTBOOL SwInsertDBColAutoPilot::SplitTextToColArr( const String& rTxt,
+ _DB_Columns& rColArr,
+ BOOL bInsField )
+{
+ // aus dem Text wieder die einzelnen Datenbank - Spalten erzeugen
+ // und dann in einem Array speichern
+ // Die Datenbankspalten stehen in <> und muessen im Array der Spalten
+ // vorhanden sein:
+ String sTxt( rTxt );
+ USHORT nFndPos, nEndPos, nSttPos = 0;
+
+ while( STRING_NOTFOUND != ( nFndPos = sTxt.Search( cDBFldStart, nSttPos )))
+ {
+ nSttPos = nFndPos + 1;
+ if( STRING_NOTFOUND != ( nEndPos = sTxt.Search( cDBFldEnd, nSttPos+1 )))
+ {
+ // Text in <> geklammert gefunden: was ist es denn:
+ SwInsDBColumn aSrch( sTxt.Copy( nSttPos, nEndPos - nSttPos ), 0);
+ if( aDBColumns.Seek_Entry( &aSrch, &nFndPos ) )
+ {
+ // das ist ein gueltiges Feld
+ // also sicher den Text "davor":
+ const SwInsDBColumn& rFndCol = *aDBColumns[ nFndPos ];
+
+ _DB_Column* pNew;
+
+ if( 1 < nSttPos )
+ {
+ ::lcl_InsTextInArr( sTxt.Copy( 0, nSttPos-1 ), rColArr );
+ sTxt.Erase( 0, nSttPos-1 );
+ }
+
+ sTxt.Erase( 0, rFndCol.sColumn.Len() + 2 );
+ nSttPos = 0;
+
+ USHORT nSubType = 0;
+ ULONG nFormat;
+ if( rFndCol.bHasFmt )
+ {
+ if( rFndCol.bIsDBFmt )
+ nFormat = rFndCol.nDBNumFmt;
+ else
+ {
+ nFormat = rFndCol.nUsrNumFmt;
+ nSubType = SUB_OWN_FMT;
+ }
+ }
+ else
+ nFormat = 0;
+
+ if( bInsField )
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+#ifdef REPLACE_OFADBMGR
+ String sDBContent(aDBData.sDataBaseName);
+ sDBContent += DB_DELIM;
+ sDBContent += aDBData.sDataTableName;
+ SwDBFieldType aFldType( rSh.GetDoc(), aSrch.sColumn,
+ sDBContent );
+#else
+ SwDBFieldType aFldType( rSh.GetDoc(), aSrch.sColumn,
+ rSh.GetDBName() );
+#endif
+ pNew = new _DB_Column( rFndCol, *new SwDBField(
+ (SwDBFieldType*)rSh.InsertFldType( aFldType ),
+ nFormat ) );
+ if( nSubType )
+ pNew->DB_ColumnData.pField->SetSubType( nSubType );
+ }
+ else
+ pNew = new _DB_Column( rFndCol, nFormat );
+
+ rColArr.Insert( pNew, rColArr.Count() );
+ }
+ }
+ }
+
+ // den letzten Text nicht vergessen
+ if( sTxt.Len() )
+ ::lcl_InsTextInArr( sTxt, rColArr );
+
+ return 0 != rColArr.Count();
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+#ifdef REPLACE_OFADBMGR
+void SwInsertDBColAutoPilot::DataToDoc( const SbaSelectionList* pSelList,
+ Reference< XDataSource> xSource,
+ Reference< XConnection> xConnection )
+#else
+void SwInsertDBColAutoPilot::DataToDoc( const SbaSelectionList* pSelList )
+#endif
+{
+ SwWrtShell& rSh = pView->GetWrtShell();
+
+#ifdef REPLACE_OFADBMGR
+ Reference< sdbc::XResultSet > xResultSet;
+ Reference< sdbc::XRow > xRow;
+ Reference< sdbc::XStatement > xStatement;
+ BOOL bScrollable;
+ try
+ {
+ bScrollable = xConnection->getMetaData()->supportsResultSetType((sal_Int32)ResultSetType::SCROLL_INSENSITIVE);
+
+ xStatement = xConnection->createStatement();
+ Reference< XPropertySet > xStatProp(xStatement, UNO_QUERY);
+ if(bScrollable)
+ {
+ Any aResType;
+ aResType <<= (sal_Int32)ResultSetType::SCROLL_INSENSITIVE;
+ xStatProp->setPropertyValue(C2U("ResultSetType"), aResType);
+ }
+ if(xStatement.is())
+ xResultSet = xStatement->executeQuery(aDBData.sStatement);
+ xRow = Reference< sdbc::XRow >(xResultSet, UNO_QUERY);
+ }
+ catch(Exception aExcept)
+ {
+ DBG_ERROR("exception caught")
+ }
+ if(!xResultSet.is() || !xRow.is())
+ return;
+#else
+
+ SwNewDBMgr* pDBMgr = rSh.GetNewDBMgr();
+ if( ( aRbAsTable.IsChecked() ? !aLbTableCol.GetEntryCount()
+ : !aEdDbText.GetText().Len() ) ||
+ !pDBMgr->ToFirstSelectedRecord( DBMGR_STD ) ||
+ !pDBMgr->IsSuccessful( DBMGR_STD ) )
+ return ;
+
+ OfaDBParam& rParam = pDBMgr->GetDBData( DBMGR_STD );
+
+ rParam.pSelectionList->Clear();
+ if( pSelList && -1L != (long)pSelList->GetObject( 0 ) )
+ {
+ *rParam.pSelectionList = *pSelList;
+ if( !pSelList->Count() )
+ pSelList = 0;
+ }
+ else
+ pSelList = 0;
+
+ SbaDBDataDefRef xColDef = pDBMgr->OpenColumnNames( DBMGR_STD );
+
+#endif
+ rSh.StartAllAction();
+ rSh.StartUndo( 0 );
+ BOOL bGroupUndo = rSh.DoesGroupUndo();
+ rSh.DoGroupUndo( FALSE );
+
+ SvNumberFormatter& rNumFmtr = *rSh.GetNumberFormatter();
+
+ if( rSh.HasSelection() )
+ rSh.DelRight();
+
+ SwWait *pWait = 0;
+
+ if( aRbAsTable.IsChecked() ) // Daten als Tabelle einfuegen
+ {
+ USHORT n, nRows = 0, nCols = aLbTableCol.GetEntryCount();
+ if( aCbTableHeadon.IsChecked() )
+ nRows++;
+
+ if( pSelList )
+ nRows += (USHORT)pSelList->Count();
+ else
+ ++nRows;
+
+ // bereite das Array fuer die ausgewaehlten Spalten auf
+ SwInsDBColumns_SAR aColFlds( 255 >= nCols ? (BYTE)nCols : 255, 5 );
+ for( n = 0; n < nCols; ++n )
+ {
+ USHORT nFndPos;
+ SwInsDBColumn aSrch( aLbTableCol.GetEntry( n ), 0 );
+ if( aDBColumns.Seek_Entry( &aSrch, &nFndPos ) )
+ aColFlds.Insert( aDBColumns[ nFndPos ], n );
+ else
+ ASSERT( !this, "Datenbankspalte nicht mehr gefunden" );
+ }
+
+ if( nCols != aColFlds.Count() )
+ {
+ ASSERT( !this, "nicht alle Datenbankspalten gefunden" );
+ nCols = aColFlds.Count();
+ }
+
+ const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+
+ BOOL bHTML = 0 != (::GetHtmlMode( pView->GetDocShell() ) & HTMLMODE_ON);
+ rSh.InsertTable( nRows, nCols, HORI_FULL,
+ pModOpt->GetInsTblFlags(bHTML),
+ (pSelList ? pTAutoFmt : 0));
+ rSh.MoveTable( fnTablePrev, fnTableStart );
+
+ if( pSelList && pTblSet )
+ SetTabSet();
+
+ SfxItemSet aTblSet( rSh.GetAttrPool(), RES_BOXATR_FORMAT,
+ RES_BOXATR_VALUE );
+ BOOL bIsAutoUpdateCells = rSh.IsAutoUpdateCells();
+ rSh.SetAutoUpdateCells( FALSE );
+
+
+ if( aCbTableHeadon.IsChecked() )
+ {
+ for( n = 0; n < nCols; ++n )
+ {
+ if( aRbHeadlColnms.IsChecked() )
+ rSh.SwEditShell::Insert( aColFlds[ n ]->sColumn );
+ rSh.GoNextCell();
+ }
+ }
+ else
+ rSh.SetHeadlineRepeat( FALSE );
+
+ for( ULONG i = 0 ; ; ++i )
+ {
+#ifdef REPLACE_OFADBMGR
+ BOOL bBreak = FALSE;
+ try
+ {
+ if(bScrollable)
+ {
+ if(pSelList)
+ bBreak = !xResultSet->absolute((ULONG)pSelList->GetObject( i ) );
+ else if(!i)
+ bBreak = !xResultSet->first();
+ }
+ else if(pSelList)
+ {
+ ULONG nOldPos = i ? 0 : (ULONG)pSelList->GetObject( i -1 );
+ ULONG nPos = (ULONG)pSelList->GetObject( i );
+ long nDiff = nPos - nOldPos;
+ while(nDiff > 0 && !bBreak)
+ {
+ bBreak = !xResultSet->next();
+ nDiff--;
+ }
+ }
+ else if(!i)
+ bBreak = !xResultSet->next();
+
+ }
+ catch(Exception aExcept)
+ {
+ bBreak = TRUE;
+ }
+ if(bBreak)
+ break;
+#else
+ if( pSelList )
+ // naechsten zu lesenden Datensatz ansteuern
+ pDBMgr->GotoRecord( (ULONG)pSelList->GetObject( i ));
+ const ODbRowRef& xRow = rParam.GetCursor()->GetRow();
+#endif
+ for( n = 0; n < nCols; ++n )
+ {
+ // beim aller erstenmal KEIN GoNextCell, weil wir schon
+ // drin stehen. Auch nicht nach dem Insert das GoNextCell,
+ // weil am Ende eine leere Zeile einfuegt wird.
+ if( i || n )
+ rSh.GoNextCell();
+
+ const SwInsDBColumn* pEntry = aColFlds[ n ];
+#ifdef REPLACE_OFADBMGR
+ Reference< XColumnsSupplier > xColsSupp( xResultSet, UNO_QUERY );
+ Reference <XNameAccess> xCols = xColsSupp->getColumns();
+ Any aCol = xCols->getByName(pEntry->sColumn);
+ Reference< XPropertySet > xColumnProps;
+ if(aCol.hasValue())
+ xColumnProps = *(Reference< XPropertySet >*)aCol.getValue();
+ Reference< XColumn > xColumn(xColumnProps, UNO_QUERY);
+#else
+ const ODbVariantRef& xVar = (*xRow)[pEntry->nCol+1];
+#endif
+ try
+ {
+ if( pEntry->bHasFmt )
+ {
+ SwTblBoxNumFormat aNumFmt(
+ pEntry->bIsDBFmt ? pEntry->nDBNumFmt
+ : pEntry->nUsrNumFmt );
+ aTblSet.Put(aNumFmt);
+#ifdef REPLACE_OFADBMGR
+ if( xColumn.is() )
+#else
+ if( !xVar->isNull() )
+#endif
+ {
+#ifdef REPLACE_OFADBMGR
+ double fVal = xColumn->getDouble();
+ if( xColumn->wasNull() )
+ aTblSet.ClearItem( RES_BOXATR_VALUE );
+ else
+ {
+#else
+ double fVal = xVar->toDouble();
+#endif
+ if(rNumFmtr.GetType(aNumFmt.GetValue()) & NUMBERFORMAT_DATE)
+ {
+ ::Date aStandard(1,1,1900);
+ if (*rNumFmtr.GetNullDate() != aStandard)
+ fVal += (aStandard - *rNumFmtr.GetNullDate());
+ }
+ aTblSet.Put( SwTblBoxValue( fVal ));
+#ifdef REPLACE_OFADBMGR
+ }
+#endif
+ }
+ else
+ aTblSet.ClearItem( RES_BOXATR_VALUE );
+ rSh.SetTblBoxFormulaAttrs( aTblSet );
+ }
+#ifdef REPLACE_OFADBMGR
+ else
+ {
+ OUString sVal = xColumn->getString();
+ if(!xColumn->wasNull())
+ rSh.SwEditShell::Insert( sVal );
+ }
+#else
+ else if( !xVar->isNull() )
+ rSh.SwEditShell::Insert( xVar->toString() );
+#endif
+ }
+#ifdef REPLACE_OFADBMGR
+ catch(Exception aExcept)
+ {
+ DBG_ERROR(ByteString(String(aExcept.Message), gsl_getSystemTextEncoding()).GetBuffer())
+ }
+#else
+ catch(...)
+ {
+ }
+#endif
+ }
+
+ if( !pSelList )
+ {
+#ifdef REPLACE_OFADBMGR
+ BOOL bNext = xResultSet->next();
+ if(!bNext)
+ break;
+#else
+ rParam.GetCursor()->Next();
+ rParam.CurrentPos()++;
+ if( rParam.GetCursor()->IsOffRange() )
+ break;
+#endif
+ }
+ else if( i+1 >= pSelList->Count() )
+ break;
+
+ if( 10 == i )
+ pWait = new SwWait( *pView->GetDocShell(), TRUE );
+ }
+
+ rSh.MoveTable( fnTableCurr, fnTableStart );
+ if( !pSelList && ( pTblSet || pTAutoFmt ))
+ {
+ if( pTblSet )
+ SetTabSet();
+
+ if( pTAutoFmt )
+ rSh.SetTableAutoFmt( *pTAutoFmt );
+ }
+ rSh.SetAutoUpdateCells( bIsAutoUpdateCells );
+ }
+ else // Daten als Felder/Text einfuegen
+ {
+ _DB_Columns aColArr;
+ if( SplitTextToColArr( aEdDbText.GetText(), aColArr, aRbAsField.IsChecked() ) )
+ {
+ // jetzt kann bei jedem Datensatz einfach ueber das Array iteriert
+ // und die Daten eingefuegt werden
+
+ if( !rSh.IsSttPara() )
+ rSh.SwEditShell::SplitNode();
+ if( !rSh.IsEndPara() )
+ {
+ rSh.SwEditShell::SplitNode();
+ rSh.SwCrsrShell::Left();
+ }
+
+ SwTxtFmtColl* pColl = 0;
+ {
+ String sTmplNm( aLbDbParaColl.GetSelectEntry() );
+ if( sNoTmpl != sTmplNm )
+ {
+ pColl = rSh.FindTxtFmtCollByName( sTmplNm );
+ if( !pColl )
+ {
+ USHORT nId = rSh.GetPoolId( sTmplNm, GET_POOLID_TXTCOLL );
+ if( USHRT_MAX != nId )
+ pColl = rSh.GetTxtCollFromPool( nId );
+ else
+ pColl = rSh.MakeTxtFmtColl( sTmplNm );
+ }
+ rSh.SetTxtFmtColl( pColl );
+ }
+ }
+
+ // fuers Einfuegen als Felder -> nach jedem Datensatz ein
+ // "NextField" einfuegen
+#ifdef REPLACE_OFADBMGR
+ SwDBFormatData aDBFormatData;
+ Reference< XMultiServiceFactory > xMgr( ::utl::getProcessServiceFactory() );
+ if( xMgr.is() )
+ {
+ Reference<XInterface> xInstance = xMgr->createInstance( C2U( "com.sun.star.util.NumberFormatter" ));
+ aDBFormatData.xFormatter = Reference<util::XNumberFormatter>(xInstance, UNO_QUERY) ;
+ }
+
+ Reference<XPropertySet> xSourceProps(xSource, UNO_QUERY);
+ if(xSourceProps.is())
+ {
+ Any aFormats = xSourceProps->getPropertyValue(C2U("NumberFormatsSupplier"));
+ if(aFormats.hasValue())
+ {
+ Reference<XNumberFormatsSupplier> xSuppl = *(Reference<util::XNumberFormatsSupplier>*) aFormats.getValue();
+ if(xSuppl.is())
+ {
+ Reference< XPropertySet > xSettings = xSuppl->getNumberFormatSettings();
+ Any aNull = xSettings->getPropertyValue(C2U("NullDate"));
+ if(aNull.hasValue())
+ aDBFormatData.aNullDate = *(util::Date*)aNull.getValue();
+ }
+ }
+ }
+ if(xSourceProps.is())
+ {
+ Any aFormats = xSourceProps->getPropertyValue(C2U("NumberFormatsSupplier"));
+ if(aFormats.hasValue())
+ {
+ Reference<XNumberFormatsSupplier> xSuppl = *(Reference<util::XNumberFormatsSupplier>*) aFormats.getValue();
+ if(xSuppl.is())
+ {
+ Reference< XPropertySet > xSettings = xSuppl->getNumberFormatSettings();
+ Any aNull = xSettings->getPropertyValue(C2U("NullDate"));
+ if(aNull.hasValue())
+ aDBFormatData.aNullDate = *(util::Date*)aNull.getValue();
+ }
+ }
+ }
+ SfxItemSet aSet(pView->GetPool(), RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE);
+ rSh.GetAttr( aSet );
+ if(SFX_ITEM_DEFAULT <= aSet.GetItemState(RES_CHRATR_LANGUAGE, TRUE))
+ {
+ Any aLoc;
+ const SfxPoolItem& rItem = aSet.Get(RES_CHRATR_LANGUAGE);
+ rItem.QueryValue(aLoc, MID_LANG_LOCALE);
+ aDBFormatData.aLocale = *(Locale*)aLoc.getValue();
+ }
+
+ String sDBContent(aDBData.sDataBaseName);
+ sDBContent += DB_DELIM;
+ sDBContent += aDBData.sDataTableName;
+ sDBContent += ';';
+ sDBContent += aDBData.sStatement;
+ SwDBNextSetField aNxtDBFld( (SwDBNextSetFieldType*)rSh.
+ GetFldType( 0, RES_DBNEXTSETFLD ),
+ C2S("1"), aEmptyStr, sDBContent );
+
+#else
+ SwDBNextSetField aNxtDBFld( (SwDBNextSetFieldType*)rSh.
+ GetFldType( 0, RES_DBNEXTSETFLD ),
+ C2S("1"), aEmptyStr, rSh.GetDBName() );
+#endif
+
+ BOOL bSetCrsr = TRUE;
+ USHORT n, nCols = aColArr.Count();
+ for( ULONG i = 0 ; ; ++i )
+ {
+#ifdef REPLACE_OFADBMGR
+ BOOL bBreak = FALSE;
+ try
+ {
+ if(bScrollable)
+ {
+ if(pSelList)
+ bBreak = !xResultSet->absolute((ULONG)pSelList->GetObject( i ) );
+ else if(!i)
+ bBreak = !xResultSet->first();
+ }
+ else if(pSelList)
+ {
+ ULONG nOldPos = i ? 0 : (ULONG)pSelList->GetObject( i -1 );
+ ULONG nPos = (ULONG)pSelList->GetObject( i );
+ long nDiff = nPos - nOldPos;
+ while(nDiff > 0 && !bBreak)
+ {
+ bBreak = !xResultSet->next();
+ nDiff--;
+ }
+ }
+ else if(!i)
+ bBreak = !xResultSet->next();
+ }
+ catch(...){ bBreak = TRUE; }
+ if(bBreak)
+ break;
+#else
+ if( pSelList )
+ {
+ ULONG nIndex = (ULONG)pSelList->GetObject( i );
+ // naechsten zu lesenden Datensatz ansteuern
+ pDBMgr->GotoRecord( nIndex );
+ }
+
+ const ODbRowRef& xRow = rParam.GetCursor()->GetRow();
+#endif
+ for( n = 0; n < nCols; ++n )
+ {
+ _DB_Column* pDBCol = aColArr[ n ];
+ String sIns;
+ switch( pDBCol->eColType )
+ {
+ case _DB_Column::DB_FILLTEXT:
+ sIns = *pDBCol->DB_ColumnData.pText;
+ break;
+
+ case _DB_Column::DB_SPLITPARA:
+ rSh.SplitNode();
+ // wenn nicht die gleiche Vorlage die Follow Vorlage
+ // ist, dann muss die ausgewaehlte neu gesetzt werden
+ if( pColl && &pColl->GetNextTxtFmtColl() != pColl )
+ rSh.SetTxtFmtColl( pColl );
+ break;
+
+ case _DB_Column::DB_COL_FIELD:
+ {
+ SwDBField* pFld = (SwDBField*)pDBCol->DB_ColumnData.
+ pField->Copy();
+ double nValue = DBL_MAX;
+#ifdef REPLACE_OFADBMGR
+ Reference< XColumnsSupplier > xColsSupp( xResultSet, UNO_QUERY );
+ Reference <XNameAccess> xCols = xColsSupp->getColumns();
+ Any aCol = xCols->getByName(pDBCol->pColInfo->sColumn);
+ Reference< XPropertySet > xColumnProps;
+ if(aCol.hasValue())
+ xColumnProps = *(Reference< XPropertySet >*)aCol.getValue();
+ pFld->SetExpansion( SwNewDBMgr::GetDBField(
+ xColumnProps,
+ aDBFormatData,
+ &nValue ) );
+#else
+ pFld->SetExpansion( pDBMgr->ImportDBField(
+ pDBCol->pColInfo->nCol+1,
+ &xColDef, xRow, &nValue ) );
+#endif
+ if( DBL_MAX != nValue )
+ pFld->ChgValue( nValue, TRUE );
+ pFld->SetInitialized();
+
+ rSh.Insert( *pFld );
+ delete pFld;
+ }
+ break;
+
+ case _DB_Column::DB_COL_TEXT:
+ {
+ double nValue = DBL_MAX;
+#ifdef REPLACE_OFADBMGR
+ Reference< XColumnsSupplier > xColsSupp( xResultSet, UNO_QUERY );
+ Reference <XNameAccess> xCols = xColsSupp->getColumns();
+ Any aCol = xCols->getByName(pDBCol->pColInfo->sColumn);
+ Reference< XPropertySet > xColumnProps;
+ if(aCol.hasValue())
+ xColumnProps = *(Reference< XPropertySet >*)aCol.getValue();
+ sIns = SwNewDBMgr::GetDBField(
+ xColumnProps,
+ aDBFormatData,
+ &nValue );
+#else
+ sIns = pDBMgr->ImportDBField(
+ pDBCol->pColInfo->nCol+1,
+ &xColDef, xRow, &nValue );
+#endif
+ if( pDBCol->DB_ColumnData.nFormat &&
+ DBL_MAX != nValue )
+ {
+ Color* pCol;
+ SvNumberFormatter& rNFmtr =
+ *rSh.GetNumberFormatter();
+ rNFmtr.GetOutputString( nValue,
+ pDBCol->DB_ColumnData.nFormat,
+ sIns, &pCol );
+ }
+ }
+ break;
+ }
+
+ if( sIns.Len() )
+ rSh.Insert( sIns );
+
+ if( bSetCrsr && sIns.Len() )
+ {
+ // zum Anfang und eine Mark setzen, damit der
+ // Cursor am Ende wieder auf Anfangsposition
+ // gesetzt werden kann.
+ BOOL bDoesUndo = rSh.DoesUndo();
+ rSh.DoUndo( FALSE );
+ rSh.SwCrsrShell::MovePara( fnParaCurr, fnParaStart );
+ rSh.SetBookmark( KeyCode(), C2S("DB_Mark"), aEmptyStr, MARK );
+ rSh.SwCrsrShell::MovePara( fnParaCurr, fnParaEnd );
+ bSetCrsr = FALSE;
+ rSh.DoUndo( bDoesUndo );
+ }
+ }
+
+ if( !pSelList )
+ {
+#ifdef REPLACE_OFADBMGR
+ BOOL bNext = xResultSet->next();
+ if(!bNext)
+ break;
+#else
+ rParam.GetCursor()->Next();
+ rParam.CurrentPos()++;
+
+ if( rParam.GetCursor()->IsOffRange() )
+ break;
+#endif
+ }
+ else if( i+1 >= pSelList->Count() )
+ break;
+
+ if( aRbAsField.IsChecked() )
+ rSh.Insert( aNxtDBFld );
+
+ if( !rSh.IsSttPara() )
+ rSh.SwEditShell::SplitNode();
+
+ if( 10 == i )
+ pWait = new SwWait( *pView->GetDocShell(), TRUE );
+ }
+
+ if( !bSetCrsr && USHRT_MAX != (n = rSh.FindBookmark( C2S("DB_Mark" ))) )
+ {
+ BOOL bDoesUndo = rSh.DoesUndo();
+ rSh.DoUndo( FALSE );
+ rSh.GotoBookmark( n );
+ rSh.DelBookmark( n );
+ rSh.DoUndo( bDoesUndo );
+ }
+ }
+ }
+
+ // Daten ins INI-File schreiben
+ WriteUIToIni();
+
+ rSh.DoGroupUndo( bGroupUndo );
+ rSh.EndUndo( 0 );
+ rSh.EndAllAction();
+ delete pWait;
+}
+void SwInsertDBColAutoPilot::SetTabSet()
+{
+ SwWrtShell& rSh = pView->GetWrtShell();
+ const SfxPoolItem* pItem;
+
+ if( pTAutoFmt )
+ {
+ if( pTAutoFmt->IsFrame() )
+ {
+ // Umrandung kommt vom AutoFormat
+ pTblSet->ClearItem( RES_BOX );
+ pTblSet->ClearItem( SID_ATTR_BORDER_INNER );
+ }
+ if( pTAutoFmt->IsBackground() )
+ {
+ pTblSet->ClearItem( RES_BACKGROUND );
+ pTblSet->ClearItem( SID_ATTR_BRUSH_ROW );
+ pTblSet->ClearItem( SID_ATTR_BRUSH_TABLE );
+ }
+ }
+ else
+ {
+ // die Defaults wieder entfernen, es macht keinen Sinn sie zu setzen
+ SvxBrushItem aBrush( RES_BACKGROUND );
+ static USHORT __READONLY_DATA aIds[3] =
+ { RES_BACKGROUND, SID_ATTR_BRUSH_ROW, SID_ATTR_BRUSH_TABLE };
+ for( int i = 0; i < 3; ++i )
+ if( SFX_ITEM_SET == pTblSet->GetItemState( aIds[ i ],
+ FALSE, &pItem ) && *pItem == aBrush )
+ pTblSet->ClearItem( aIds[ i ] );
+ }
+
+ if( SFX_ITEM_SET == pTblSet->GetItemState( FN_PARAM_TABLE_NAME, FALSE,
+ &pItem ) && ((const SfxStringItem*)pItem)->GetValue() ==
+ rSh.GetTableFmt()->GetName() )
+ pTblSet->ClearItem( FN_PARAM_TABLE_NAME );
+
+ rSh.MoveTable( fnTableCurr, fnTableStart );
+ rSh.SetMark();
+ rSh.MoveTable( fnTableCurr, fnTableEnd );
+
+ ::lcl_ItemSetToTableParam( *pTblSet, rSh );
+
+ rSh.ClearMark();
+ rSh.MoveTable( fnTableCurr, fnTableStart );
+}
+
+ // Daten ins INI-File schreiben
+void SwInsertDBColAutoPilot::WriteUIToIni()
+{
+ if( !pConfig )
+ {
+ pConfig = new _DB_ColumnConfig;
+ pConfig->Initialize();
+ }
+
+ _DB_ColumnConfigData* pNewData = new _DB_ColumnConfigData;
+
+ //die Column-Daten Pointer gehen in den Besitz des pNewData!
+ pNewData->aDBColumns.Insert( &aDBColumns );
+ aDBColumns.Remove( (USHORT)0, aDBColumns.Count() );
+
+ pNewData->sDBName = pView->GetWrtShell().GetDBName();
+ pNewData->sEdit = aEdDbText.GetText();
+
+ String sTmp;
+ for( USHORT n = 0, nCnt = aLbTableCol.GetEntryCount(); n < nCnt; ++n )
+ ( sTmp += aLbTableCol.GetEntry( n ) ) += '\x0a';
+
+ if( sTmp.Len() )
+ pNewData->sTblList = sTmp;
+
+ if( sNoTmpl != (sTmp = aLbDbParaColl.GetSelectEntry()) )
+ pNewData->sTmplNm = sTmp;
+
+ if( pTAutoFmt )
+ pNewData->sTAutoFmtNm = pTAutoFmt->GetName();
+
+ pNewData->bIsTable = aRbAsTable.IsChecked();
+ pNewData->bIsField = aRbAsField.IsChecked();
+ pNewData->bIsHeadlineOn = aCbTableHeadon.IsChecked();
+ pNewData->bIsEmptyHeadln = aRbHeadlEmpty.IsChecked();
+
+
+ // jetzt noch die benutzerdefinierten Numberformatstrings erfragen,
+ // denn nur diese lassen sich "unabhaengig" speichern!
+ SvNumberFormatter& rNFmtr = *pView->GetWrtShell().GetNumberFormatter();
+ GetDocPoolNm( RES_POOLCOLL_STANDARD, sTmp );
+ for( n = 0; n < pNewData->aDBColumns.Count(); ++n )
+ {
+ SwInsDBColumn& rSet = *pNewData->aDBColumns[ n ];
+ if( rSet.bHasFmt && !rSet.bIsDBFmt )
+ {
+ const SvNumberformat* pNF = rNFmtr.GetEntry( rSet.nUsrNumFmt );
+ if( pNF )
+ {
+ rSet.sUsrNumFmt = pNF->GetFormatstring();
+ rSet.eUsrNumFmtLng = pNF->GetLanguage();
+ }
+ else
+ {
+ rSet.sUsrNumFmt = sTmp;
+ rSet.eUsrNumFmtLng = LANGUAGE_SYSTEM;
+ }
+ }
+ }
+
+ pConfig->SetData( pNewData );
+ pConfig->StoreConfig();
+}
+
+ // Daten aus dem INI-File lesen:
+void SwInsertDBColAutoPilot::ReadIniToUI()
+{
+ if( !pConfig )
+
+ {
+ pConfig = new _DB_ColumnConfig;
+ pConfig->Initialize();
+ }
+
+ _DB_ColumnConfigData aData;
+
+ //die Column-Daten Pointer werden kopiert, bleiben im Besitz vom Dialog!
+ aData.aDBColumns.Insert( &aDBColumns );
+ aData.sDBName = pView->GetWrtShell().GetDBName();
+
+ const _DB_ColumnConfigData* pFndData = pConfig->HasData( aData );
+ if( pFndData )
+ {
+ USHORT n = 0;
+ String sTmp( pFndData->sTblList );
+ if( sTmp.Len() )
+ {
+ do {
+ String sEntry( sTmp.GetToken( 0, '\x0a', n ) );
+ aLbTableCol.InsertEntry( sEntry );
+ aLbTblDbColumn.RemoveEntry( sEntry );
+ } while( n < sTmp.Len() );
+
+ if( !aLbTblDbColumn.GetEntryCount() )
+ {
+ aPbDbcolAllTo.Enable( FALSE );
+ aPbDbcolOneTo.Enable( FALSE );
+ }
+ aPbDbcolOneFrom.Enable( TRUE );
+ aPbDbcolAllFrom.Enable( TRUE );
+ }
+ aEdDbText.SetText( pFndData->sEdit );
+
+ sTmp = pFndData->sTmplNm;
+ if( sTmp.Len() )
+ aLbDbParaColl.SelectEntry( sTmp );
+ else
+ aLbDbParaColl.SelectEntryPos( 0 );
+
+ if( pTAutoFmt )
+ delete pTAutoFmt, pTAutoFmt = 0;
+ sTmp = pFndData->sTAutoFmtNm;
+ if( sTmp.Len() )
+ {
+ // dann erstmal die AutoFmt-Datei laden und das Autoformat suchen
+ SwTableAutoFmtTbl aAutoFmtTbl;
+ aAutoFmtTbl.Load();
+ for( USHORT n = aAutoFmtTbl.Count(); n; )
+ if( sTmp == aAutoFmtTbl[ --n ]->GetName() )
+ {
+ pTAutoFmt = new SwTableAutoFmt( *aAutoFmtTbl[ n ] );
+ break;
+ }
+ }
+
+ aRbAsTable.Check( pFndData->bIsTable );
+ aRbAsField.Check( pFndData->bIsField );
+ aRbAsText.Check( !pFndData->bIsTable && !pFndData->bIsField );
+
+ aCbTableHeadon.Check( pFndData->bIsHeadlineOn );
+ aRbHeadlColnms.Check( !pFndData->bIsEmptyHeadln );
+ aRbHeadlEmpty.Check( pFndData->bIsEmptyHeadln );
+
+ // jetzt noch die benutzerdefinierten Numberformat Strings in die
+ // Shell kopieren. Nur diese sind dann als ID verfuegbar
+ SvNumberFormatter& rNFmtr = *pView->GetWrtShell().GetNumberFormatter();
+ for( n = 0; n < aDBColumns.Count(); ++n )
+ {
+ SwInsDBColumn& rSet = *aDBColumns[ n ];
+ const SwInsDBColumn& rGet = *pFndData->aDBColumns[ n ];
+ if( rGet.bHasFmt && !rGet.bIsDBFmt )
+ {
+ rSet.bIsDBFmt = FALSE;
+ rSet.nUsrNumFmt = rNFmtr.GetEntryKey( rGet.sUsrNumFmt,
+ rGet.eUsrNumFmtLng );
+ if( NUMBERFORMAT_ENTRY_NOT_FOUND == rSet.nUsrNumFmt )
+ {
+ xub_StrLen nCheckPos;
+ short nType;
+ rNFmtr.PutEntry( (String&)rGet.sUsrNumFmt, nCheckPos, nType,
+ rSet.nUsrNumFmt, rGet.eUsrNumFmtLng );
+ }
+ }
+ }
+
+ // steht der Cursor in einer Tabelle, darf NIE Tabelle auswaehlbar sein
+ if( !aRbAsTable.IsEnabled() && aRbAsTable.IsChecked() )
+ aRbAsField.Check( TRUE );
+ }
+
+ aData.aDBColumns.Remove( (USHORT)0, aDBColumns.Count() );
+}
+
+/* */
+
+
+_DB_ColumnConfigData::~_DB_ColumnConfigData() {}
+
+BOOL _DB_ColumnConfigData::IsEqualDB( const _DB_ColumnConfigData& rCmp ) const
+{
+ // teste, ob die Daten von der gleiche Databanktabelle kommen und
+ // ob sie noch die gleichen Werte enthaelt.
+ BOOL bRet = FALSE;
+ if( sDBName == rCmp.sDBName &&
+ aDBColumns.Count() == rCmp.aDBColumns.Count() )
+ {
+ bRet = TRUE;
+ for( USHORT n = aDBColumns.Count(); n; )
+ {
+ --n;
+ const SwInsDBColumn& rCmp1 = *aDBColumns[ n ];
+ const SwInsDBColumn& rCmp2 = *rCmp.aDBColumns[ n ];
+ if( rCmp1.sColumn != rCmp2.sColumn ||
+ rCmp1.nCol != rCmp2.nCol ||
+ rCmp1.bHasFmt != rCmp2.bHasFmt )
+ {
+ bRet = FALSE;
+ break;
+ }
+ }
+ }
+ return bRet;
+}
+
+_DB_ColumnConfigData::_DB_ColumnConfigData( SvStream& rStream, UINT16 nVers )
+{
+ rStream.ReadByteString( sDBName ).ReadByteString(sEdit )
+ .ReadByteString( sTblList ).ReadByteString( sTmplNm )
+ .ReadByteString( sTAutoFmtNm );
+
+ UINT16 n;
+ rStream >> n;
+ if( n )
+ {
+#ifdef WITH_STREAM_CORRECT
+ ULONG nSttPos = rStream.Tell();
+ UINT16 nOffset;
+#endif
+ UINT16 nCol, eLng;
+ UINT8 nFlags;
+ String sNm, sUsrFmt;
+
+ for( UINT16 i = 0; i < n; ++i )
+ {
+#ifdef WITH_STREAM_CORRECT
+ rStream >> nOffset;
+#endif
+ rStream.ReadByteString( sNm );
+ rStream >> nCol
+ >> nFlags;
+ rStream.ReadByteString( sUsrFmt );
+ rStream >> eLng;
+
+ SwInsDBColumn* pNew = new SwInsDBColumn( sNm, nCol );
+ pNew->sUsrNumFmt = sUsrFmt;
+ pNew->eUsrNumFmtLng = (LanguageType)eLng;
+
+ pNew->bHasFmt = 0 != (nFlags & 0x1);
+ pNew->bIsDBFmt = 0 != (nFlags & 0x2);
+
+ aDBColumns.Insert( pNew, i );
+
+#ifdef WITH_STREAM_CORRECT
+ // muss etwas uebersprungen werden?
+ ULONG nCurPos = rStream.Tell();
+ if( nCurPos != ( nSttPos + nOffset ))
+ rStream.Seek( nCurPos = ( nSttPos + nOffset ) );
+ nSttPos = nCurPos;
+#endif
+ }
+ }
+
+ rStream >> n;
+ bIsTable = 0 != (n & 0x01);
+ bIsField = 0 != (n & 0x02);
+ bIsHeadlineOn = 0 != (n & 0x04);
+ bIsEmptyHeadln = 0 != (n & 0x08);
+
+/*
+ if( nVers > DBCOLUMN_CONFIG_VERSION1 )
+ {
+ }
+*/
+}
+
+void _DB_ColumnConfigData::Save( SvStream& rStream ) const
+{
+ rStream.WriteByteString( sDBName ).WriteByteString( sEdit )
+ .WriteByteString( sTblList ).WriteByteString( sTmplNm )
+ .WriteByteString( sTAutoFmtNm );
+
+ UINT16 n = aDBColumns.Count();
+ rStream << n;
+ if( n )
+ {
+#ifdef WITH_STREAM_CORRECT
+ ULONG nCurPos, nSttPos = rStream.Tell();
+#endif
+ for( UINT16 i = 0; i < n; ++i )
+ {
+#ifdef WITH_STREAM_CORRECT
+ rStream << (UINT16)0;
+#endif
+
+ const SwInsDBColumn& rCol = *aDBColumns[ i ];
+ UINT8 nFlags = 0;
+ if( rCol.bHasFmt ) nFlags |= 0x1;
+ if( rCol.bIsDBFmt ) nFlags |= 0x2;
+
+ rStream.WriteByteString( rCol.sColumn )
+ << (UINT16)rCol.nCol
+ << nFlags;
+ rStream.WriteByteString( rCol.sUsrNumFmt )
+ << (UINT16)rCol.eUsrNumFmtLng
+ ;
+
+#ifdef WITH_STREAM_CORRECT
+ nCurPos = rStream.Tell();
+ rStream.Seek( nSttPos );
+ rStream << (UINT16)(nCurPos - nSttPos);
+ rStream.Seek( nCurPos );
+ nSttPos = nCurPos;
+#endif
+ }
+ }
+
+ n = 0;
+ if( bIsTable ) n |= 0x01;
+ if( bIsField ) n |= 0x02;
+ if( bIsHeadlineOn ) n |= 0x04;
+ if( bIsEmptyHeadln ) n |= 0x08;
+ rStream << n;
+}
+
+
+
+
+_DB_ColumnConfig::_DB_ColumnConfig()
+ : SfxConfigItem( CFG_INSERT_DBCOLUMN_ITEM )
+{
+ memset( &aData, 0, sizeof( aData ));
+}
+
+_DB_ColumnConfig::~_DB_ColumnConfig()
+{
+ for( USHORT n = DBCOLUMN_MAXDATA; n; )
+ delete aData[ --n ];
+}
+
+void _DB_ColumnConfig::UseDefault()
+{
+ for( USHORT n = DBCOLUMN_MAXDATA; n; )
+ delete aData[ --n ];
+ SfxConfigItem::UseDefault();
+}
+
+String _DB_ColumnConfig::GetName() const
+{
+ return SW_RESSTR( STR_CFG_INSERT_DBCOLUMN );
+}
+
+int _DB_ColumnConfig::Load( SvStream& rStream )
+{
+ int nRet = SfxConfigItem::ERR_OK;
+
+ SetDefault( FALSE );
+ UINT16 nVers;
+ rStream >> nVers;
+ if( DBCOLUMN_CONFIG_VERSION1 >= nVers )
+ {
+ UINT16 n, nCnt;
+ CharSet eOldCharSet = rStream.GetStreamCharSet();
+ rStream >> n >> nCnt;
+
+ if( nCnt )
+ {
+ rStream.SetStreamCharSet( (CharSet)n );
+
+#ifdef WITH_STREAM_CORRECT
+ ULONG nSttPos = rStream.Tell();
+#endif
+ for( UINT16 i = 0; i < nCnt; ++i )
+ {
+#ifdef WITH_STREAM_CORRECT
+ rStream >> n;
+#endif
+ if( i < DBCOLUMN_MAXDATA )
+ aData[ i ] = new _DB_ColumnConfigData( rStream, nVers );
+
+#ifdef WITH_STREAM_CORRECT
+ // muss etwas uebersprungen werden?
+ ULONG nCurPos = rStream.Tell();
+ if( nCurPos != ( nSttPos + n ))
+ rStream.Seek( nCurPos = ( nSttPos + n ) );
+ nSttPos = nCurPos;
+#endif
+ }
+ rStream.SetStreamCharSet( eOldCharSet );
+ }
+ }
+ else
+ nRet = SfxConfigItem::WARNING_VERSION;
+
+ return nRet;
+}
+
+BOOL _DB_ColumnConfig::Store( SvStream& rStream )
+{
+ CharSet eOldCharSet = rStream.GetStreamCharSet();
+ rtl_TextEncoding eCurCharSet = ::gsl_getSystemTextEncoding();
+ rStream.SetStreamCharSet( eCurCharSet );
+
+ rStream << (UINT16)DBCOLUMN_CONFIG_VERSION
+ << (UINT16)eCurCharSet;
+
+ USHORT nCnt = DBCOLUMN_MAXDATA;
+ for( USHORT n = 0; n < nCnt; ++n )
+ if( !aData[ n ] )
+ {
+ nCnt = n;
+ break;
+ }
+
+ rStream << (UINT16)nCnt;
+ if( nCnt )
+ {
+#ifdef WITH_STREAM_CORRECT
+ ULONG nCurPos, nSttPos = rStream.Tell();
+#endif
+ for( USHORT n = 0; n < nCnt; ++n )
+ {
+#ifdef WITH_STREAM_CORRECT
+ rStream << (UINT16)0;
+#endif
+
+ aData[ n ]->Save( rStream );
+
+#ifdef WITH_STREAM_CORRECT
+ nCurPos = rStream.Tell();
+ rStream.Seek( nSttPos );
+ rStream << (UINT16)(nCurPos - nSttPos);
+ rStream.Seek( nCurPos );
+ nSttPos = nCurPos;
+#endif
+ }
+ }
+ rStream.SetStreamCharSet( eOldCharSet );
+
+ return SfxConfigItem::ERR_OK;
+}
+
+const _DB_ColumnConfigData* _DB_ColumnConfig::HasData(
+ const _DB_ColumnConfigData& rData ) const
+{
+ const _DB_ColumnConfigData* pRet = 0;
+ for( USHORT n = 0; n < DBCOLUMN_MAXDATA; ++n )
+ if( aData[ n ] && aData[ n ]->IsEqualDB( rData ))
+ {
+ pRet = aData[ n ];
+ break;
+ }
+ return pRet;
+}
+
+void _DB_ColumnConfig::SetData( _DB_ColumnConfigData* pData )
+{
+ ASSERT( pData, "kein pData ans SetData uebergeben" );
+ if( pData )
+ {
+ USHORT n, nDelPos = DBCOLUMN_MAXDATA-1;
+ for( n = 0; n < DBCOLUMN_MAXDATA; ++n )
+ if( !aData[ n ] || aData[ n ]->IsEqualDB( *pData ))
+ {
+ nDelPos = n;
+ break;
+ }
+
+ // loesche den Eintrag an der DelPos und verschiebe alle
+ // vorhergehenden eine Position runter. Der aktuelle wird
+ // dann wieder am Anfang eingefuegt.
+ delete aData[ nDelPos ];
+ if( nDelPos )
+ memmove( aData+1, aData, nDelPos * sizeof( aData[ 0 ] ));
+ aData[ 0 ] = pData;
+
+ SetDefault( FALSE );
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.40 2000/09/18 16:05:18 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.39 2000/07/27 21:15:40 jp
+ opt: get template names direct from the doc and don't load it from the resource
+
+ Revision 1.38 2000/07/10 07:02:55 os
+ replace ofadbmgr
+
+ Revision 1.37 2000/07/06 07:59:10 os
+ replace ofadbmgr
+
+ Revision 1.36 2000/07/05 08:21:49 os
+ Replace ofadbmgr
+
+ Revision 1.35 2000/05/26 07:21:28 os
+ old SW Basic API Slots removed
+
+ Revision 1.34 2000/05/23 18:11:01 jp
+ Bugfixes for Unicode
+
+ Revision 1.33 2000/04/20 12:54:38 os
+ GetName() returns String&
+
+ Revision 1.32 2000/04/11 08:03:52 os
+ UNICODE
+
+ Revision 1.31 2000/03/30 13:25:58 os
+ UNO III
+
+ Revision 1.30 2000/02/11 14:44:18 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.29 1999/09/24 13:50:13 os
+ chg: ODbRow/ODbVariant
+
+ Revision 1.28 1999/08/10 08:31:24 JP
+ Bug #67040#: data to text - set double to defined value
+
+
+ Rev 1.27 10 Aug 1999 10:31:24 JP
+ Bug #67040#: data to text - set double to defined value
+
+ Rev 1.26 08 Jul 1999 16:07:52 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.25 08 Jul 1999 09:13:50 MA
+ limit wait cursor to document window
+
+ Rev 1.24 18 Jun 1999 14:03:36 JP
+ Bug #67040#: DataToDoc - clear ValueItem in TableSet
+
+ Rev 1.23 16 Jun 1999 22:05:08 JP
+ Bug #66996##66995#: DataToDoc - set userformat flag at field, use userformat for text
+
+ Rev 1.22 09 Jun 1999 16:25:46 JP
+ Bug #66735#: TblFmtHdl: no 0 pointer access
+
+ Rev 1.21 11 May 1999 21:48:20 JP
+ Task #66127#: Methoden rund ums Lineal verbessert und Schnittstellen veraendert/erweitert
+
+ Rev 1.20 29 Apr 1999 09:59:04 JP
+ Bug #65544#: Spalten ggfs. auch vom Bereich besorgen
+
+ Rev 1.19 22 Feb 1999 11:50:02 JP
+ fuer Bug #61545#: Code optimiert
+
+ Rev 1.18 17 Feb 1999 08:39:24 OS
+ #58158# Einfuegen TabPage auch in HTML-Docs
+
+ Rev 1.17 30 Nov 1998 17:31:02 OM
+ #59770# Tabellenoptionen: Ueberschrift nur auf erster Seite
+
+ Rev 1.16 27 Nov 1998 14:49:56 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.15 11 Nov 1998 16:49:36 OM
+ #58158# Einfuegeoptionen fuer Tabellen
+
+ Rev 1.14 10 Nov 1998 19:18:34 JP
+ Task #58158#: InsertTable/TextToTable - Flags fuer HdlRepeat/LayoutSplit mitgeben
+
+ Rev 1.13 08 Sep 1998 16:51:16 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.12 15 Jul 1998 09:52:26 JP
+ Bug #52951#: TabellenEigenschaftenButton nur enablen wenn Spalten ausgewaehlt sind
+
+ Rev 1.11 21 Jun 1998 14:23:30 JP
+ Feld in FormatGroupBox anzeigen, Format richtig zuweisen
+
+ Rev 1.10 19 Jun 1998 16:19:24 TJ
+ include
+
+ Rev 1.9 17 Jun 1998 13:50:56 JP
+ Bug #50989#: DataToDoc - Absatztvorlagen mit anderem Follow beachten; GPF bei Eigenschaften ohne Eintraege
+
+ Rev 1.8 15 Jun 1998 12:27:18 OM
+ #51009# Numberformatter-Listbox ViewPtr reinreichen
+
+ Rev 1.7 09 Jun 1998 13:05:34 JP
+ Bug #50993# ReadIniToUI - bei disabled'ten InTable wird jetzt auch InFelder gecheckt
+
+ Rev 1.6 09 Jun 1998 12:18:16 JP
+ Bug #50989# DataToDoc - Vorlagen setzen ist nicht so einfach moeglich
+
+ Rev 1.5 02 Jun 1998 10:39:20 JP
+ TabellenAutoFormat aus der Konf. erzeugen
+
+ Rev 1.4 29 May 1998 19:08:58 JP
+ Tabellen Eigenschaften koennen jetzt eingestellt werden
+
+ Rev 1.3 28 May 1998 17:05:58 JP
+ Handling zum einstellen der Nummernformate geaendert
+
+ Rev 1.2 27 May 1998 19:48:42 JP
+ kleinere Verbesserungen
+
+ Rev 1.1 25 May 1998 09:49:32 JP
+ Tabelle formatieren erstmal abgeklemmt, bis der Dialog auch ohne Tabelle benutzbar ist
+
+ Rev 1.0 20 May 1998 21:35:22 JP
+ Autopilot fuers Datenbankspalten einfuegen als Text/Felder/Tabelle
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/dbui/dbinsdlg.hrc b/sw/source/ui/dbui/dbinsdlg.hrc
new file mode 100644
index 000000000000..df30feaea82c
--- /dev/null
+++ b/sw/source/ui/dbui/dbinsdlg.hrc
@@ -0,0 +1,107 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbinsdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBINSDLG_HRC
+#define _DBINSDLG_HRC
+
+
+#define FT_INSERT_DATA 1
+#define RB_AS_TABLE 2
+#define RB_AS_FIELD 3
+#define RB_AS_TEXT 4
+#define BT_OK 5
+#define BT_CANCEL 6
+#define BT_HELP 7
+#define GB_SELECTION 8
+#define FT_DB_COLUMN 10
+#define GB_DB_FORMAT 11
+#define RB_DBFMT_FROM_DB 12
+#define RB_DBFMT_FROM_USR 13
+#define LB_DBFMT_FROM_USR 14
+
+/* ------------- Page Text/Field ------------------ */
+#define LB_TXT_DB_COLUMN 15
+
+#define PB_DBCOL_TOEDIT 16
+#define ED_DB_TEXT 17
+#define FT_DB_PARA_COLL 18
+#define LB_DB_PARA_COLL 19
+
+/* ------------- Page Table -------------------- */
+#define LB_TBL_DB_COLUMN 20
+
+#define PB_DBCOL_ALL_TO 21
+#define PB_DBCOL_ONE_TO 22
+#define PB_DBCOL_ONE_FROM 23
+#define PB_DBCOL_ALL_FROM 24
+#define FT_TABLE_COL 25
+#define LB_TABLE_COL 26
+#define GB_TABLE_HEAD 27
+#define CB_TABLE_HEADON 28
+#define RB_HEADL_COLNMS 29
+#define RB_HEADL_EMPTY 30
+#define PB_TBL_FORMAT 31
+#define PB_TBL_AUTOFMT 32
+
+#define STR_NOTEMPL 33
+
+
+#endif
diff --git a/sw/source/ui/dbui/dbinsdlg.src b/sw/source/ui/dbui/dbinsdlg.src
new file mode 100644
index 000000000000..e7634662a15e
--- /dev/null
+++ b/sw/source/ui/dbui/dbinsdlg.src
@@ -0,0 +1,666 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbinsdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "dbinsdlg.hrc"
+#include "dbui.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ModalDialog DLG_AP_INSERT_DB_SEL
+{
+ HelpID = HID_AP_INSERT_DB_SEL ;
+ OUTPUTSIZE = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 291 , 189 ) ;
+ Text = "Datenbankspalten einfügen" ;
+ Text [ ENGLISH ] = "Insert database columns" ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ SVLOOK = TRUE ;
+ FixedText FT_INSERT_DATA
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 66 , 10 ) ;
+ Text = "Daten einfügen als:" ;
+ Text [ ENGLISH ] = "Insert data as:" ;
+ Text [ english_us ] = "Insert data as:" ;
+ Text [ portuguese_brazilian ] = "Daten einfügen als:" ;
+ Text [ swedish ] = "Infoga data som:" ;
+ Text [ danish ] = "Indsæt data som:" ;
+ Text [ italian ] = "Inserisci file come:" ;
+ Text [ spanish ] = "Insertar datos como:" ;
+ Text [ french ] = "Insertion des données :" ;
+ Text [ dutch ] = "Data invoegen als" ;
+ Text [ portuguese ] = "Inserir dados como:" ;
+ Text[ chinese_simplified ] = "²åÈëÊý¾ÝµÄ·½Ê½£º";
+ Text[ russian ] = "Âñòàâèòü äàííûå êàê:";
+ Text[ polish ] = "Wstaw dane jako:";
+ Text[ japanese ] = "ÃÞ°À‚Ì‘}“ü:";
+ Text[ chinese_traditional ] = "´¡¤J¸ê®Æªº¤è¦¡¡G";
+ Text[ arabic ] = "ÅÏÑÇÌ ÇáÈíÇäÇÊ ßÜ:";
+ Text[ dutch ] = "Data invoegen als";
+ Text[ chinese_simplified ] = "²åÈëÊý¾ÝµÄ·½Ê½£º";
+ Text[ greek ] = "ÅéóáãùãÞ äåäïìÝíùí ùò:";
+ Text[ korean ] = "·Î µ¥ÀÌÅÍ »ðÀÔ:";
+ Text[ turkish ] = "Eklenecek verilerin türü:";
+ };
+ RadioButton RB_AS_TABLE
+ {
+ Pos = MAP_APPFONT ( 80 , 6 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "T~abelle" ;
+ Text [ ENGLISH ] = "T~able" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Text [ portuguese ] = "T~abela" ;
+ Text [ english_us ] = "T~able" ;
+ Text [ portuguese_brazilian ] = "T~abelle" ;
+ Text [ swedish ] = "T~abell" ;
+ Text [ danish ] = "Tabel" ;
+ Text [ italian ] = "T~abella" ;
+ Text [ spanish ] = "T~abla" ;
+ Text [ french ] = "T~able" ;
+ Text [ dutch ] = "T~abel" ;
+ Text[ chinese_simplified ] = "±í¸ñ(~A)";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "Tabela";
+ Text[ japanese ] = "•\\(~A)";
+ Text[ chinese_traditional ] = "ªí®æ(~A)";
+ Text[ arabic ] = "ÌÏæá";
+ Text[ dutch ] = "T~abel";
+ Text[ chinese_simplified ] = "±í¸ñ(~A)";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "Ç¥(~A)";
+ Text[ turkish ] = "T~ablo";
+ };
+ RadioButton RB_AS_FIELD
+ {
+ Pos = MAP_APPFONT ( 145 , 6 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "~Felder" ;
+ Text [ ENGLISH ] = "~Fields" ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "~Campos" ;
+ Text [ english_us ] = "~Fields" ;
+ Text [ portuguese_brazilian ] = "~Felder" ;
+ Text [ swedish ] = "~Fält" ;
+ Text [ danish ] = "Felter" ;
+ Text [ italian ] = "~Campi" ;
+ Text [ spanish ] = "~Campos" ;
+ Text [ french ] = "~Champs" ;
+ Text [ dutch ] = "~Velden" ;
+ Text[ chinese_simplified ] = "×Ö¶Î(~F)";
+ Text[ russian ] = "Ïîëÿ";
+ Text[ polish ] = "Pola";
+ Text[ japanese ] = "̨°ÙÄÞ(~F)";
+ Text[ chinese_traditional ] = "Äæ¦ì(~F)";
+ Text[ arabic ] = "ÍÞæá";
+ Text[ dutch ] = "~Velden";
+ Text[ chinese_simplified ] = "×Ö¶Î(~F)";
+ Text[ greek ] = "Ðåäßá";
+ Text[ korean ] = "Çʵå(~F)";
+ Text[ turkish ] = "~Alanlar";
+ };
+ RadioButton RB_AS_TEXT
+ {
+ Pos = MAP_APPFONT ( 210 , 6 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "~Text" ;
+ Text [ ENGLISH ] = "~Text" ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "~Texto" ;
+ Text [ english_us ] = "~Text" ;
+ Text [ portuguese_brazilian ] = "~Text" ;
+ Text [ swedish ] = "~Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ italian ] = "~Testo" ;
+ Text [ spanish ] = "~Texto" ;
+ Text [ french ] = "~Texte" ;
+ Text [ dutch ] = "~Tekst" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö(~T)";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷½Ä(~T)";
+ Text[ chinese_traditional ] = "¤å¦r(~T)";
+ Text[ arabic ] = "äÕ";
+ Text[ dutch ] = "~Tekst";
+ Text[ chinese_simplified ] = "ÎÄ×Ö(~T)";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®(~T)";
+ Text[ turkish ] = "~Metin";
+ };
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 123 , 172 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 179 , 172 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 235 , 172 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ GroupBox GB_SELECTION
+ {
+ Pos = MAP_APPFONT ( 6 , 19 ) ;
+ Size = MAP_APPFONT ( 279 , 150 ) ;
+ /* wird dynamisch gesetzt! */
+ Text = "" ;
+ };
+ FixedText FT_DB_COLUMN
+ {
+ Pos = MAP_APPFONT ( 12 , 31 ) ;
+ Size = MAP_APPFONT ( 72 , 10 ) ;
+ Text = "Datenbank~spalten" ;
+ Text [ ENGLISH ] = "Database columns" ;
+ Text [ english_us ] = "Database ~columns" ;
+ Text [ portuguese_brazilian ] = "Datenbank~spalten" ;
+ Text [ swedish ] = "Databa~skolumner" ;
+ Text [ danish ] = "Databasekolonner" ;
+ Text [ italian ] = "Colonne database" ;
+ Text [ spanish ] = "~Columnas de la base de datos" ;
+ Text [ french ] = "Colonnes de ~B.D." ;
+ Text [ dutch ] = "Database~kolommen" ;
+ Text [ portuguese ] = "~Colunas da base de dados" ;
+ Text[ chinese_simplified ] = "Êý¾Ý¿âÀ¸(~C)";
+ Text[ russian ] = "Êîëîíêè áàçû äàííûõ";
+ Text[ polish ] = "Kolumny w bazie danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½—ñ(~C)";
+ Text[ chinese_traditional ] = "¸ê®Æ®wÄæ(~C)";
+ Text[ arabic ] = "ÃÚãÏÉ ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ dutch ] = "Database~kolommen";
+ Text[ chinese_simplified ] = "Êý¾Ý¿âÀ¸(~C)";
+ Text[ greek ] = "ÓôÞëåò âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º ¿­(~C)";
+ Text[ turkish ] = "Veritabaný ~sütunlarý";
+ };
+ GroupBox GB_DB_FORMAT
+ {
+ Pos = MAP_APPFONT ( 12 , 121 ) ;
+ Size = MAP_APPFONT ( 99 , 42 ) ;
+ Text = "For~mat" ;
+ Text [ ENGLISH ] = "For~mat" ;
+ Text [ english_us ] = "For~mat" ;
+ Text [ portuguese_brazilian ] = "For~mat" ;
+ Text [ swedish ] = "For~mat" ;
+ Text [ danish ] = "Format" ;
+ Text [ italian ] = "For~mato" ;
+ Text [ spanish ] = "For~mato" ;
+ Text [ french ] = "For~mat" ;
+ Text [ dutch ] = "Op~maak" ;
+ Text [ portuguese ] = "For~mato" ;
+ Text[ chinese_simplified ] = "¸ñʽ(~M)";
+ Text[ russian ] = "Ôîðìàò";
+ Text[ polish ] = "Format";
+ Text[ japanese ] = "‘Ž®(~M)";
+ Text[ chinese_traditional ] = "®æ¦¡(~M)";
+ Text[ arabic ] = "ÇáÊäÓíÞ";
+ Text[ dutch ] = "Op~maak";
+ Text[ chinese_simplified ] = "¸ñʽ(~M)";
+ Text[ greek ] = "~ÌïñöÞ";
+ Text[ korean ] = "¼­½Ä(~M)";
+ Text[ turkish ] = "For~mat";
+ };
+ RadioButton RB_DBFMT_FROM_DB
+ {
+ Pos = MAP_APPFONT ( 15 , 133 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "A~us Datenbank" ;
+ Text [ ENGLISH ] = "From database" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Text [ portuguese ] = "Da ~base de dados" ;
+ Text [ english_us ] = "From ~database" ;
+ Text [ portuguese_brazilian ] = "A~us Datenbank" ;
+ Text [ swedish ] = "Från ~databas" ;
+ Text [ danish ] = "Fra database" ;
+ Text [ italian ] = "Dal ~database" ;
+ Text [ spanish ] = "~De la base de datos" ;
+ Text [ french ] = "De la ~B.D." ;
+ Text [ dutch ] = "U~it databank" ;
+ Text[ chinese_simplified ] = "´ÓÊý¾Ý¿â(~D)";
+ Text[ russian ] = "Èç áàçû äàííûõ";
+ Text[ polish ] = "Z bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½‚©‚ç(~D)";
+ Text[ chinese_traditional ] = "±q¸ê®Æ®w(~D)";
+ Text[ arabic ] = "ãä ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ dutch ] = "U~it databank";
+ Text[ chinese_simplified ] = "´ÓÊý¾Ý¿â(~D)";
+ Text[ greek ] = "Áðü âÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ(~D)";
+ Text[ turkish ] = "Kaynak veritabaný";
+ };
+ RadioButton RB_DBFMT_FROM_USR
+ {
+ Pos = MAP_APPFONT ( 15 , 148 ) ;
+ Size = MAP_APPFONT ( 10 , 10 ) ;
+ TabStop = TRUE ;
+ };
+ ListBox LB_DBFMT_FROM_USR
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 30 , 146 ) ;
+ Size = MAP_APPFONT ( 75 , 44 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ AutoHScroll = TRUE ;
+ };
+ /* -------------- Page Text / Fields -------------------------------- */
+ ListBox LB_TXT_DB_COLUMN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 41 ) ;
+ Size = MAP_APPFONT ( 75 , 70 ) ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ };
+ PushButton PB_DBCOL_TOEDIT
+ {
+ Pos = MAP_APPFONT ( 92 , 99 ) ;
+ Size = MAP_APPFONT ( 20 , 12 ) ;
+ Text = "=>" ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ };
+ MultiLineEdit ED_DB_TEXT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 118 , 41 ) ;
+ Size = MAP_APPFONT ( 161 , 70 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ VScroll = TRUE ;
+ HScroll = TRUE ;
+ Hide = TRUE ;
+ IgnoreTab = TRUE;
+ };
+ FixedText FT_DB_PARA_COLL
+ {
+ Pos = MAP_APPFONT ( 118 , 133 ) ;
+ Size = MAP_APPFONT ( 58 , 10 ) ;
+ TEXT = "Absat~zvorlage:" ;
+ TEXT [ English ] = "Paragraph Style:" ;
+ TEXT [ norwegian ] = "Avsnittsmal:" ;
+ TEXT [ italian ] = "Modello di paragrafo:" ;
+ TEXT [ portuguese_brazilian ] = "(Estilo de Parágrafo:" ;
+ TEXT [ portuguese ] = "Estilo de ~parágrafo:" ;
+ TEXT [ finnish ] = "Kappaletyyli:" ;
+ TEXT [ danish ] = "Afsnitstypografi:" ;
+ TEXT [ french ] = "~Style de paragraphe :" ;
+ TEXT [ swedish ] = "Sty~ckeformatmall:" ;
+ TEXT [ dutch ] = "~Alinea-opmaakprofiel:" ;
+ TEXT [ spanish ] = "~Estilo de párrafo:" ;
+ TEXT [ english_us ] = "Paragraph ~Style:" ;
+ Hide = TRUE ;
+ TEXT[ chinese_simplified ] = "¶ÎÂäÑùʽ(~S)£º";
+ TEXT[ russian ] = "Ñòèëü àáçàöà:";
+ TEXT[ polish ] = "Styl akapitu:";
+ TEXT[ japanese ] = "’i—Ž½À²Ù:(~S)";
+ TEXT[ chinese_traditional ] = "¬q¸¨¼Ë¦¡(~S)";
+ TEXT[ arabic ] = "äãØ ÝÞÑÉ:";
+ TEXT[ dutch ] = "~Alinea-opmaakprofiel:";
+ TEXT[ chinese_simplified ] = "¶ÎÂäÑùʽ(~S)£º";
+ TEXT[ greek ] = "Ðñüôõðo ðáñáãñÜöïõ:";
+ TEXT[ korean ] = "´Ü¶ô À¯Çü:(~S)";
+ TEXT[ turkish ] = "Paragraf b~içimi:";
+ };
+ ListBox LB_DB_PARA_COLL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 182 , 131 ) ;
+ Size = MAP_APPFONT ( 90 , 59 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Hide = TRUE ;
+ Sort = TRUE ;
+ };
+ /* -------------- Page Table ---------------------------------------- */
+ ListBox LB_TBL_DB_COLUMN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 41 ) ;
+ Size = MAP_APPFONT ( 75 , 70 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_DBCOL_ALL_TO
+ {
+ Pos = MAP_APPFONT ( 92 , 41 ) ;
+ Size = MAP_APPFONT ( 20 , 12 ) ;
+ Text = "~=>>" ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_DBCOL_ONE_TO
+ {
+ Pos = MAP_APPFONT ( 92 , 56 ) ;
+ Size = MAP_APPFONT ( 20 , 12 ) ;
+ Text = "-~>" ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_DBCOL_ONE_FROM
+ {
+ Pos = MAP_APPFONT ( 92 , 84 ) ;
+ Size = MAP_APPFONT ( 20 , 12 ) ;
+ Text = "<~-" ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_DBCOL_ALL_FROM
+ {
+ Pos = MAP_APPFONT ( 92 , 99 ) ;
+ Size = MAP_APPFONT ( 20 , 12 ) ;
+ Text = "~<<=" ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_TABLE_COL
+ {
+ Pos = MAP_APPFONT ( 118 , 31 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "Tabe~lle" ;
+ Text [ ENGLISH ] = "Tab~le" ;
+ Text [ english_us ] = "Tab~le" ;
+ Text [ portuguese_brazilian ] = "Tabe~lle" ;
+ Text [ swedish ] = "Tabe~ll" ;
+ Text [ danish ] = "Tabel" ;
+ Text [ italian ] = "Tabe~lla" ;
+ Text [ spanish ] = "Tab~la" ;
+ Text [ french ] = "Tab~le" ;
+ Text [ dutch ] = "Tabe~l" ;
+ Text [ portuguese ] = "Ta~bela" ;
+ Text[ chinese_simplified ] = "±í¸ñ(~L)";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "Tabela";
+ Text[ japanese ] = "•\\(~L)";
+ Text[ chinese_traditional ] = "ªí®æ(~L)";
+ Text[ arabic ] = "ÇáÌÏæá";
+ Text[ dutch ] = "Tabe~l";
+ Text[ chinese_simplified ] = "±í¸ñ(~L)";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "Ç¥(~L)";
+ Text[ turkish ] = "~Tablo";
+ };
+ ListBox LB_TABLE_COL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 118 , 42 ) ;
+ Size = MAP_APPFONT ( 75 , 70 ) ;
+ TabStop = TRUE ;
+ };
+ GroupBox GB_TABLE_HEAD
+ {
+ Pos = MAP_APPFONT ( 199 , 41 ) ;
+ Size = MAP_APPFONT ( 80 , 58 ) ;
+ Text = "Tabellenüberschrift" ;
+ Text [ ENGLISH ] = "Table headline" ;
+ Text [ english_us ] = "Table heading" ;
+ Text [ portuguese_brazilian ] = "Tabellenüberschrift" ;
+ Text [ swedish ] = "Tabellöverskrift" ;
+ Text [ danish ] = "Tabeloverskrift" ;
+ Text [ italian ] = "Titolo tabella" ;
+ Text [ spanish ] = "Encabezado de la tabla" ;
+ Text [ french ] = "Titre de la table" ;
+ Text [ dutch ] = "Tabelopschrift" ;
+ Text [ portuguese ] = "Título da tabela" ;
+ Text[ chinese_simplified ] = "±í¸ñ±êÌâ";
+ Text[ russian ] = "Çàãîëîâîê òàáëèöû";
+ Text[ polish ] = "Nag³ówek tabeli";
+ Text[ japanese ] = "•\\‚ÌŒ©o‚µ";
+ Text[ chinese_traditional ] = "ªí®æ¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÇáÌÏÇæá";
+ Text[ dutch ] = "Tabelopschrift";
+ Text[ chinese_simplified ] = "±í¸ñ±êÌâ";
+ Text[ greek ] = "Åðéêåöáëßäá ðßíáêá";
+ Text[ korean ] = "Ç¥ Á¦¸ñ";
+ Text[ turkish ] = "Tablo baþlýðý";
+ };
+ CheckBox CB_TABLE_HEADON
+ {
+ Pos = MAP_APPFONT ( 205 , 56 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "E~inschalten" ;
+ Text [ ENGLISH ] = "On" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Text [ english_us ] = "~On" ;
+ Text [ portuguese_brazilian ] = "E~inschalten" ;
+ Text [ swedish ] = "~På" ;
+ Text [ danish ] = "Aktiver" ;
+ Text [ italian ] = "Attiva" ;
+ Text [ spanish ] = "~Activar" ;
+ Text [ french ] = "~Activer" ;
+ Text [ dutch ] = "In~schakelen" ;
+ Text [ portuguese ] = "~Activar" ;
+ Text[ chinese_simplified ] = "¼¤»î(~O)";
+ Text[ russian ] = "Âêëþ÷èòü";
+ Text[ polish ] = "W³¹cz";
+ Text[ japanese ] = "µÝ(~O)";
+ Text[ chinese_traditional ] = "¿E¬¡(~O)";
+ Text[ arabic ] = "ÊÔÛíá";
+ Text[ dutch ] = "In~schakelen";
+ Text[ chinese_simplified ] = "¼¤»î(~O)";
+ Text[ greek ] = "Åíåñãïðïßçóç";
+ Text[ korean ] = "È°¼º(~O)";
+ Text[ turkish ] = "Çalýþtýr";
+ };
+ RadioButton RB_HEADL_COLNMS
+ {
+ Pos = MAP_APPFONT ( 217 , 72 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "S~paltenamen" ;
+ Text [ English ] = "Column name" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Text [ portuguese ] = "~Nome da coluna" ;
+ Text [ english_us ] = "Column ~name" ;
+ Text [ portuguese_brazilian ] = "S~paltenamen" ;
+ Text [ swedish ] = "Kolumn~namn" ;
+ Text [ danish ] = "Kolonnenavn" ;
+ Text [ italian ] = "Nomi colonne" ;
+ Text [ spanish ] = "~Nombres de columnas" ;
+ Text [ french ] = "Noms ~de colonne" ;
+ Text [ dutch ] = "K~olomnaam" ;
+ Text[ chinese_simplified ] = "À¸Ãû(~N)";
+ Text[ russian ] = "Èìåíà êîëîíîê";
+ Text[ polish ] = "Nazwa kolumny";
+ Text[ japanese ] = "—ñ–¼(~N)";
+ Text[ chinese_traditional ] = "Äæ¦W(~N)";
+ Text[ arabic ] = "ÃÓãÇÁ ÇáÃÚãÏÉ";
+ Text[ dutch ] = "K~olomnaam";
+ Text[ chinese_simplified ] = "À¸Ãû(~N)";
+ Text[ greek ] = "Ïíüìáôá óôÞëçò";
+ Text[ korean ] = "¿­ À̸§(~N)";
+ Text[ turkish ] = "~Sütun adý";
+ };
+ RadioButton RB_HEADL_EMPTY
+ {
+ Pos = MAP_APPFONT ( 217 , 87 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "lee~r" ;
+ Text [ English ] = "empty" ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "~vazio" ;
+ Text [ english_us ] = "~empty" ;
+ Text [ portuguese_brazilian ] = "lee~r" ;
+ Text [ swedish ] = "t~om" ;
+ Text [ danish ] = "tom" ;
+ Text [ italian ] = "v~uoto" ;
+ Text [ spanish ] = "~vacío" ;
+ Text [ french ] = "~Vide" ;
+ Text [ dutch ] = "lee~g" ;
+ Text[ chinese_simplified ] = "¿Õȱ(~E)";
+ Text[ russian ] = "ïóñòîé";
+ Text[ polish ] = "pusty";
+ Text[ japanese ] = "‹ó”’(~E)";
+ Text[ chinese_traditional ] = "ªÅ¯Ê(~E)";
+ Text[ arabic ] = "ÝÇÑÛ";
+ Text[ dutch ] = "lee~g";
+ Text[ chinese_simplified ] = "¿Õȱ(~E)";
+ Text[ greek ] = "êåíü";
+ Text[ korean ] = "ºñ¾îÀÖÀ½(~E)";
+ Text[ turkish ] = "boþ";
+ };
+ PushButton PB_TBL_FORMAT
+ {
+ Pos = MAP_APPFONT ( 199 , 124 ) ;
+ Size = MAP_APPFONT ( 60 , 12 ) ;
+ Text = "Ei~genschaften..." ;
+ Text [ English ] = "Properties..." ;
+ Text [ english_us ] = "Pr~operties..." ;
+ Text [ portuguese_brazilian ] = "Eigenschaften..." ;
+ Text [ swedish ] = "E~genskaper..." ;
+ Text [ danish ] = "Egenskaber..." ;
+ Text [ italian ] = "Proprietà..." ;
+ Text [ spanish ] = "P~ropiedades..." ;
+ Text [ french ] = "Propriétés..." ;
+ Text [ dutch ] = "~Eigenschappen..." ;
+ Text [ portuguese ] = "~Propriedades..." ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÊôÐÔ(~O)...";
+ Text[ russian ] = "Ñâîéñòâà...";
+ Text[ polish ] = "W³aœciwoœci";
+ Text[ japanese ] = "ÌßÛÊßè(~O)...";
+ Text[ chinese_traditional ] = "ÄÝ©Ê(~O)...";
+ Text[ arabic ] = "ÎÕÇÆÕ...";
+ Text[ dutch ] = "~Eigenschappen...";
+ Text[ chinese_simplified ] = "ÊôÐÔ(~O)...";
+ Text[ greek ] = "Éäéüôçôåò...";
+ Text[ korean ] = "µî·ÏÁ¤º¸(~O)...";
+ Text[ turkish ] = "Ö~zelikler...";
+ };
+ PushButton PB_TBL_AUTOFMT
+ {
+ Pos = MAP_APPFONT ( 199 , 142 ) ;
+ Size = MAP_APPFONT ( 60 , 12 ) ;
+ Text = "Aut~oformat..." ;
+ Text [ English ] = "Aut~oformat..." ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "Aut~oFormato..." ;
+ Text [ english_us ] = "Aut~oFormat..." ;
+ Text [ portuguese_brazilian ] = "Aut~oformat..." ;
+ Text [ swedish ] = "Aut~oFormat..." ;
+ Text [ danish ] = "AutoFormat..." ;
+ Text [ italian ] = "Formatt. auto..." ;
+ Text [ spanish ] = "~Autoformato..." ;
+ Text [ french ] = "Aut~oFormat..." ;
+ Text [ dutch ] = "Aut~oOpmaak..." ;
+ Text[ chinese_simplified ] = "×Ô¶¯¸ñʽ(~O)...";
+ Text[ russian ] = "Àâòîôîðìàò...";
+ Text[ polish ] = "Autoformat";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä(~O)...";
+ Text[ chinese_traditional ] = "¦Û°Ê®æ¦¡(~O)...";
+ Text[ arabic ] = "ÊäÓíÞ ÊáÞÇÆí...";
+ Text[ dutch ] = "Aut~oOpmaak...";
+ Text[ chinese_simplified ] = "×Ô¶¯¸ñʽ(~O)...";
+ Text[ greek ] = "ÁõôïÌïñöïðïßçóç...";
+ Text[ korean ] = "ÀÚµ¿ ¼­½Ä(~O)...";
+ Text[ turkish ] = "Otomatik formatla...";
+ };
+ String STR_NOTEMPL
+ {
+ Text = "<keine>" ;
+ Text [ English ] = "<none>" ;
+ Text [ dutch ] = "<geen>" ;
+ Text [ english_us ] = "<none>" ;
+ Text [ italian ] = "<senza>" ;
+ Text [ spanish ] = "<ninguno>" ;
+ Text [ french ] = "<aucun(e)>" ;
+ Text [ swedish ] = "<inga>" ;
+ Text [ danish ] = "<ingen>" ;
+ Text [ portuguese ] = "<nenhum>" ;
+ Text [ portuguese_brazilian ] = "<keine>" ;
+ Text[ chinese_simplified ] = "<ÎÞ>";
+ Text[ russian ] = "<áåç>";
+ Text[ polish ] = "<brak>";
+ Text[ japanese ] = "<‚È‚µ>";
+ Text[ chinese_traditional ] = "<µL>";
+ Text[ arabic ] = "<ÈÏæä>";
+ Text[ dutch ] = "<geen>";
+ Text[ chinese_simplified ] = "<ÎÞ>";
+ Text[ greek ] = "<êáíÝíá>";
+ Text[ korean ] = "<¾øÀ½>";
+ Text[ turkish ] = "<yok>";
+ };
+ Text [ english_us ] = "Insert Database Columns" ;
+ Text [ portuguese_brazilian ] = "Datenbankspalten einfügen" ;
+ Text [ swedish ] = "Infoga databaskolumner" ;
+ Text [ danish ] = "Indsæt databasekolonner" ;
+ Text [ italian ] = "Inserisci colonne di database" ;
+ Text [ spanish ] = "Insertar columnas de la base de datos" ;
+ Text [ french ] = "Insertion de colonnes de base de données" ;
+ Text [ dutch ] = "Database-kolommen invoegen" ;
+ Text [ portuguese ] = "Inserir colunas para bases de dados" ;
+ Text[ chinese_simplified ] = "²åÈëÊý¾Ý¿âÀ¸";
+ Text[ russian ] = "Âñòàâêà êîëîíêè áàçû äàííûõ";
+ Text[ polish ] = "Wstaw kolumny w bazie danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½‚Ì—ñ‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¸ê®Æ®wÄæ";
+ Text[ arabic ] = "ÅÏÑÇÌ ÃÚãÏÉ ÞÇÚÏÉ ÈíÇäÇÊ";
+ Text[ dutch ] = "Database-kolommen invoegen";
+ Text[ chinese_simplified ] = "²åÈëÊý¾Ý¿âÀ¸";
+ Text[ greek ] = "ÐñïóèÞêç óôçëþí âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º ¿­ »ðÀÔ";
+ Text[ turkish ] = "Veritabaný sütunu ekle";
+};
diff --git a/sw/source/ui/dbui/dbmgr.cxx b/sw/source/ui/dbui/dbmgr.cxx
new file mode 100644
index 000000000000..46c7b4a25710
--- /dev/null
+++ b/sw/source/ui/dbui/dbmgr.cxx
@@ -0,0 +1,2589 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbmgr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#if STLPORT_VERSION>=321
+#include <cstdarg>
+#endif
+
+#include <stdio.h>
+
+#ifndef _UCBHELPER_CONTENT_HXX
+#include <ucbhelper/content.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UCB_XCOMMANDENVIRONMENT_HPP_
+#include <com/sun/star/ucb/XCommandEnvironment.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UCB_TRANSFERINFO_HPP_
+#include <com/sun/star/ucb/TransferInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UCB_NAMECLASH_HPP_
+#include <com/sun/star/ucb/NameClash.hpp>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _TOOLS_TEMPFILE_HXX
+#include <tools/tempfile.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _ZFORLIST_HXX //autogen
+#include <svtools/zforlist.hxx>
+#endif
+#ifndef _ZFORMAT_HXX //autogen
+#include <svtools/zformat.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _SFX_PROGRESS_HXX //autogen
+#include <sfx2/progress.hxx>
+#endif
+#ifndef _SFX_DOCFILT_HACK_HXX //autogen
+#include <sfx2/docfilt.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SBAOBJ_HXX //autogen
+#include <offmgr/sbaobj.hxx>
+#endif
+#ifndef _SBA_SBADB_HXX //autogen
+#include <offmgr/sbadb.hxx>
+#endif
+#ifndef _SBAITEMS_HRC
+#include <offmgr/sbaitems.hrc>
+#endif
+#ifndef _SBAITEMS_HXX
+#include <offmgr/sbaitems.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SDB_SDBCURS_HXX //autogen
+#include <sdb/sdbcurs.hxx>
+#endif
+#ifndef _MAILENUM_HXX //autogen
+#include <goodies/mailenum.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _FINDER_HXX
+#include <finder.hxx>
+#endif
+#ifndef _INITUI_HXX
+#include <initui.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx>
+#endif
+#ifndef _FLDDAT_HXX
+#include <flddat.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _MODCFG_HXX
+#include <modcfg.hxx>
+#endif
+#ifndef _SWPRTOPT_HXX
+#include <swprtopt.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _DBUI_HXX
+#include <dbui.hxx>
+#endif
+#ifndef _DBMGR_HXX
+#include <dbmgr.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+
+#ifndef _DBUI_HRC
+#include <dbui.hrc>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _STATSTR_HRC
+#include <statstr.hrc>
+#endif
+
+#ifdef REPLACE_OFADBMGR
+#ifndef _SFXREQUEST_HXX
+#include <sfx2/request.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UTL_DB_CONVERSION_HXX_
+#include <unotools/dbconversion.hxx>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XDATASOURCE_HPP_
+#include <com/sun/star/sdbc/XDataSource.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XTABLESSUPPLIER_HPP_
+#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XCOLUMNSSUPPLIER_HPP_
+#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XQUERIESSUPPLIER_HPP_
+#include <com/sun/star/sdb/XQueriesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XCOLUMN_HPP_
+#include <com/sun/star/sdb/XColumn.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_DATATYPE_HPP_
+#include <com/sun/star/sdbc/DataType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XSTATEMENT_HPP_
+#include <com/sun/star/sdbc/XStatement.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_RESULTSETTYPE_HPP_
+#include <com/sun/star/sdbc/ResultSetType.hpp>
+#endif
+//#ifndef _COM_SUN_STAR_SDB_XDATABASEACCESS_HPP_
+//#include <com/sun/star/sdb/XDatabaseAccess.hpp>
+//#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+#ifndef _ISOLANG_HXX
+#include <tools/isolang.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATTYPES_HPP_
+#include <com/sun/star/util/XNumberFormatTypes.hpp>
+#endif
+#ifndef _UTL_UNO3_DB_TOOLS_HXX_
+#include <unotools/dbtools.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVX_UNOMID_HXX
+#include <svx/unomid.hxx>
+#endif
+#ifndef _NUMUNO_HXX
+#include <svtools/numuno.hxx>
+#endif
+#else
+
+#endif //REPLACE_OFADBMGR
+
+#ifdef REPLACE_OFADBMGR
+using namespace rtl;
+using namespace com::sun::star::container;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::sdb;
+using namespace com::sun::star::sdbc;
+using namespace com::sun::star::sdbcx;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::util;
+#define C2S(cChar) String::CreateFromAscii(cChar)
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::ucb;
+
+#define C2U(char) rtl::OUString::createFromAscii(char)
+
+#define DB_SEP_SPACE 0
+#define DB_SEP_TAB 1
+#define DB_SEP_RETURN 2
+#define DB_SEP_NEWLINE 3
+
+#ifdef REPLACE_OFADBMGR
+SV_IMPL_PTRARR(SwDSParamArr, SwDSParamPtr);
+
+/* -----------------------------17.07.00 17:04--------------------------------
+
+ ---------------------------------------------------------------------------*/
+BOOL lcl_MoveAbsolute(SwDSParam* pParam, long nAbsPos)
+{
+ BOOL bRet = FALSE;
+ try
+ {
+ if(pParam->bScrollable)
+ {
+ bRet = pParam->xResultSet->absolute( nAbsPos );
+ }
+ else
+ {
+ pParam->nSelectionIndex = 0;
+ pParam->xResultSet = pParam->xStatement->executeQuery( pParam->sStatement );
+ bRet = TRUE;
+ while(nAbsPos >= 0 && bRet)
+ {
+ bRet &= !pParam->xResultSet->next();
+ pParam->nSelectionIndex++;
+ nAbsPos--;
+ }
+ bRet &= nAbsPos != -1;
+ }
+ }
+ catch(Exception aExcept)
+ {
+ DBG_ERROR("exception caught")
+ }
+ return bRet;
+}
+/* -----------------------------17.07.00 17:23--------------------------------
+
+ ---------------------------------------------------------------------------*/
+BOOL lcl_GetColumnCnt(SwDSParam* pParam,
+ const String& rColumnName, long nLanguage, String& rResult, double* pNumber)
+{
+ Reference< XColumnsSupplier > xColsSupp( pParam->xResultSet, UNO_QUERY );
+ Reference <XNameAccess> xCols = xColsSupp->getColumns();
+ if(!xCols->hasByName(rColumnName))
+ return FALSE;
+ Any aCol = xCols->getByName(rColumnName);
+ Reference< XPropertySet > xColumnProps;
+ if(aCol.hasValue())
+ xColumnProps = *(Reference< XPropertySet >*)aCol.getValue();
+
+ SwDBFormatData aFormatData;
+ aFormatData.aNullDate = pParam->aNullDate;
+ aFormatData.xFormatter = pParam->xFormatter;
+
+ String sLanguage, sCountry;
+ ::ConvertLanguageToIsoNames( nLanguage, sLanguage, sCountry );
+ aFormatData.aLocale.Language = sLanguage;
+ aFormatData.aLocale.Country = sCountry;
+
+ DBG_ERROR("pFormat unset!")
+ rResult = SwNewDBMgr::GetDBField( xColumnProps, aFormatData, pNumber);
+ return TRUE;
+};
+#endif
+/*--------------------------------------------------------------------
+ Beschreibung: Daten importieren
+ --------------------------------------------------------------------*/
+
+BOOL SwNewDBMgr::Merge( USHORT nOpt, SwWrtShell* pSh,
+ const String& rStatement,
+ const SbaSelectionListRef xSelectionList,
+#ifdef REPLACE_OFADBMGR
+ const String& rDataSource,
+ const String& rTableOrQuery,
+#else
+ const String& rDBName,
+#endif
+ const String *pPrinter)
+{
+#ifdef REPLACE_OFADBMGR
+ ChgDBName(pSh, rDataSource, rTableOrQuery,rStatement);
+#else
+ ChgDBName(pSh, rDBName, rStatement);
+#endif
+ // Falls noch nicht offen, spaetestens hier
+
+#ifdef REPLACE_OFADBMGR
+ if(!OpenMergeSource(rDataSource, rTableOrQuery, rStatement, xSelectionList))
+ return FALSE;
+#else
+ if(!OpenDB(FALSE, pSh->GetDBDesc()))
+ return FALSE;
+#endif
+
+ if (IsInitDBFields())
+ {
+ // Bei Datenbankfeldern ohne DB-Name DB-Name von Dok einsetzen
+ SvStringsDtor aDBNames(1, 1);
+ aDBNames.Insert( new String(), 0);
+ pSh->ChangeDBFields( aDBNames, pSh->GetDBName());
+ SetInitDBFields(FALSE);
+ }
+#ifdef REPLACE_OFADBMGR
+ const SbaSelectionList* pSelList = 0;
+ if( xSelectionList.Is() && (long)xSelectionList->GetObject(0) != -1L )
+ {
+ if( xSelectionList->Count() )
+ pSelList = &xSelectionList;
+ }
+#else
+ OfaDBParam& rParam = GetDBData(FALSE);
+ ChangeStatement(FALSE, rStatement);
+ const SbaSelectionList* pSelList = 0;
+ rParam.pSelectionList->Clear();
+ if( xSelectionList.Is() && (long)xSelectionList->GetObject(0) != -1L )
+ {
+ *rParam.pSelectionList = *xSelectionList;
+ if( xSelectionList->Count() )
+ pSelList = &xSelectionList;
+ }
+#endif
+
+ BOOL bRet = TRUE;
+ switch(nOpt)
+ {
+ case DBMGR_MERGE:
+ bRet = Merge(pSh); // Mischen
+ break;
+
+ case DBMGR_MERGE_MAILMERGE: // Serienbrief
+ {
+ SfxDispatcher *pDis = pSh->GetView().GetViewFrame()->GetDispatcher();
+ if (pPrinter) // Aufruf kommt aus dem Basic
+ {
+ SfxBoolItem aSilent( SID_SILENT, TRUE );
+ if (pPrinter)
+ {
+ SfxStringItem aPrinterName(SID_PRINTER_NAME, *pPrinter);
+ pDis->Execute( SID_PRINTDOC, SFX_CALLMODE_SYNCHRON,
+ &aPrinterName, &aSilent, 0L );
+ }
+ else
+ {
+ pDis->Execute( SID_PRINTDOC, SFX_CALLMODE_SYNCHRON,
+ &aSilent, 0L );
+ }
+ }
+ else
+ pDis->Execute(SID_PRINTDOC, SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD);
+ }
+ break;
+
+ case DBMGR_MERGE_MAILING:
+ bRet = MergeMailing(pSh); // Mailing
+ break;
+
+ case DBMGR_MERGE_MAILFILES:
+ bRet = MergeMailFiles(pSh); // Serienbriefe als Dateien abspeichern
+ break;
+
+ default: // Einfuegen der selektierten Eintraege
+ // (war: InsertRecord)
+#ifdef REPLACE_OFADBMGR
+ ImportFromConnection(pSh );
+#else
+ ImportFromConnection(pSh, pSelList );
+#endif
+ break;
+ }
+
+#ifdef REPLACE_OFADBMGR
+ EndMerge();
+#else
+ CloseAll();
+#endif
+ return bRet;
+}
+/*--------------------------------------------------------------------
+ Beschreibung: Daten importieren
+ --------------------------------------------------------------------*/
+
+
+BOOL SwNewDBMgr::Merge(SwWrtShell* pSh)
+{
+ pSh->StartAllAction();
+#ifdef REPLACE_OFADBMGR
+#else
+ bInMerge = TRUE;
+
+ // 1. Satz positionieren, Evaluierung ueber die Felder
+ for (USHORT i = 0; i < aDBDataArr.Count(); i++)
+ {
+ OfaDBParam* pParam = aDBDataArr[i];
+
+ // Alle Im Dok enthaltenen Datenbanken oeffnen und Cursorpos initialisieren
+ if (OpenDB(FALSE, pParam->GetDBName()))
+ {
+ if (pParam->GetCursor())
+ Flush(FALSE); // Cursor initialisieren
+ ToFirstSelectedRecord(FALSE);
+ }
+ }
+#endif
+
+/* for (ULONG i = 0 ; i < GetDBData().pSelectionList->Count(); i++)
+ {
+ ULONG nIndex = (ULONG)GetDBData().pSelectionList->GetObject(i);
+ DBG_TRACE(String(nIndex));
+ }*/
+
+ pSh->ViewShell::UpdateFlds(TRUE);
+ pSh->SetModified();
+
+#ifdef REPLACE_OFADBMGR
+#else
+ bInMerge = FALSE;
+#endif
+
+ pSh->EndAllAction();
+
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Daten importieren
+ --------------------------------------------------------------------*/
+
+
+/*void SwNewDBMgr::UpdateImport( const BOOL bBasic, SwWrtShell* pSh,
+ const String& rDBName,
+ const String& rStatement,
+ const SbaSelectionListRef xSelectionList )
+{
+ ChgDBName(pSh, rDBName, rStatement);
+
+ if( OpenDB( bBasic, pSh->GetDBDesc()) )
+ {
+ OfaDBParam& rParam = GetDBData(bBasic);
+
+ ChangeStatement(bBasic, rStatement);
+
+ const SbaSelectionList* pSelList = 0;
+ rParam.pSelectionList->Clear();
+ if( xSelectionList.Is() && -1L != (long)xSelectionList->GetObject(0) )
+ {
+ *rParam.pSelectionList = *xSelectionList;
+ if( xSelectionList->Count() )
+ pSelList = &xSelectionList;
+ }
+
+ ImportFromConnection( bBasic, pSh, pSelList );
+ }
+} */
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+#ifdef REPLACE_OFADBMGR
+void SwNewDBMgr::ImportFromConnection( SwWrtShell* pSh )
+#else
+void SwNewDBMgr::ImportFromConnection( SwWrtShell* pSh,
+ const SbaSelectionList* pSelList )
+#endif
+{
+#ifdef REPLACE_OFADBMGR
+ if(pMergeData && !pMergeData->bEndOfDB)
+#else
+ OfaDBParam& rParam = GetDBData(FALSE);
+ ASSERT(rParam.GetCursor(), "Cursor");
+
+ if( ToFirstSelectedRecord( FALSE ) && IsSuccessful( FALSE ) )
+#endif
+ {
+#ifdef REPLACE_OFADBMGR
+#else
+ // Spaltenkoepfe
+ SbaDBDataDefRef aDBDef = OpenColumnNames(FALSE);
+ if( aDBDef.Is() )
+#endif
+ {
+ pSh->StartAllAction();
+ pSh->StartUndo(0);
+ BOOL bGroupUndo(pSh->DoesGroupUndo());
+ pSh->DoGroupUndo(FALSE);
+
+ if( pSh->HasSelection() )
+ pSh->DelRight();
+
+ SwWait *pWait = 0;
+
+#ifdef REPLACE_OFADBMGR
+#else
+ if( pSelList )
+ {
+ for( ULONG i = 0; i < pSelList->Count(); ++i )
+ {
+
+ ULONG nIndex = (ULONG)pSelList->GetObject( i );
+
+ ASSERT(nIndex >= rParam.CurrentPos(),
+ "Zu lesender Datensatz < vorhergehender Datensatz!");
+
+ // N„chsten zu lesenden Datensatz ansteuern
+ GotoRecord( nIndex );
+ ImportDBEntry(&aDBDef, pSh);
+
+ if( i == 10 )
+ pWait = new SwWait( *pSh->GetView().GetDocShell(), TRUE );
+ }
+ }
+ else
+#endif
+ {
+ ULONG i = 0;
+ do {
+
+#ifdef REPLACE_OFADBMGR
+ ImportDBEntry(pSh);
+#else
+ ImportDBEntry(&aDBDef, pSh);
+ rParam.GetCursor()->Next();
+ rParam.CurrentPos()++;
+#endif
+ if( 10 == ++i )
+ pWait = new SwWait( *pSh->GetView().GetDocShell(), TRUE);
+
+#ifdef REPLACE_OFADBMGR
+ } while(ToNextMergeRecord());
+#else
+ } while( !rParam.GetCursor()->IsOffRange() );
+#endif
+ }
+
+ pSh->DoGroupUndo(bGroupUndo);
+ pSh->EndUndo(0);
+ pSh->EndAllAction();
+ delete pWait;
+ }
+ }
+#ifdef REPLACE_OFADBMGR
+#else
+ CloseAll();
+#endif
+}
+
+
+/*-----------------24.02.97 10.30-------------------
+
+--------------------------------------------------*/
+
+String lcl_FindColumn(const String& sFormatStr,USHORT &nUsedPos, BYTE &nSeparator)
+{
+ String sReturn;
+ USHORT nLen = sFormatStr.Len();
+ nSeparator = 0xff;
+ while(nUsedPos < nLen && nSeparator == 0xff)
+ {
+ sal_Unicode cAkt = sFormatStr.GetChar(nUsedPos);
+ switch(cAkt)
+ {
+ case ',':
+ nSeparator = DB_SEP_SPACE;
+ break;
+ case ';':
+ nSeparator = DB_SEP_RETURN;
+ break;
+ case ':':
+ nSeparator = DB_SEP_TAB;
+ break;
+ case '#':
+ nSeparator = DB_SEP_NEWLINE;
+ break;
+ default:
+ sReturn += cAkt;
+ }
+ nUsedPos++;
+
+ }
+ return sReturn;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+#ifdef REPLACE_OFADBMGR
+void SwNewDBMgr::ImportDBEntry(SwWrtShell* pSh)
+#else
+void SwNewDBMgr::ImportDBEntry(SbaDBDataDef* pDef, SwWrtShell* pSh)
+#endif
+{
+#ifdef REPLACE_OFADBMGR
+ if(pMergeData && !pMergeData->bEndOfDB)
+#else
+ OfaDBParam& rParam = GetDBData(FALSE);
+ if( !rParam.GetCursor()->IsOffRange() )
+#endif
+ {
+#ifdef REPLACE_OFADBMGR
+ Reference< XColumnsSupplier > xColsSupp( pMergeData->xResultSet, UNO_QUERY );
+ Reference <XNameAccess> xCols = xColsSupp->getColumns();
+ String sSymDBName(pMergeData->sDataSource);
+ sSymDBName += DB_DELIM;
+ sSymDBName += pMergeData->sTableOrQuery;
+ String sFormatStr = pPathFinder->GetDBInsertMode(sSymDBName);
+#else
+ const ODbRowRef& xRow = rParam.GetCursor()->GetRow();
+ ULONG nCount = (UINT16)xRow->size();
+ String sFormatStr = pPathFinder->GetDBInsertMode(rParam.GetSymDBName());
+#endif
+ USHORT nFmtLen = sFormatStr.Len();
+ if( nFmtLen )
+ {
+ const char cSpace = ' ';
+ const char cTab = '\t';
+ USHORT nUsedPos = 0;
+ BYTE nSeparator;
+ String sColumn = lcl_FindColumn(sFormatStr, nUsedPos, nSeparator);
+ while( sColumn.Len() )
+ {
+#ifdef REPLACE_OFADBMGR
+ if(!xCols->hasByName(sColumn))
+ return;
+ Any aCol = xCols->getByName(sColumn);
+ Reference< XPropertySet > xColumnProp = *(Reference< XPropertySet >*)aCol.getValue();;
+ if(xColumnProp.is())
+ {
+ SwDBFormatData aDBFormat;
+ String sInsert = GetDBField( xColumnProp, aDBFormat);
+#else
+ int nColumn = GetColumnPos(DBMGR_STD, sColumn);
+ if(nColumn > 0)
+ {
+ String sInsert = ImportDBField(nColumn, pDef, xRow);
+#endif
+ if( DB_SEP_SPACE == nSeparator )
+ sInsert += cSpace;
+ else if( DB_SEP_TAB == nSeparator)
+ sInsert += cTab;
+ pSh->Insert(sInsert);
+ if( DB_SEP_RETURN == nSeparator)
+ pSh->SplitNode();
+ else if(DB_SEP_NEWLINE == nSeparator)
+ pSh->InsertLineBreak();
+ }
+ else
+ {
+ // Spalte nicht gefunden -> Fehler anzeigen
+ String sInsert = '?';
+ sInsert += sColumn;
+ sInsert += '?';
+ pSh->Insert(sInsert);
+ }
+ sColumn = lcl_FindColumn(sFormatStr, nUsedPos, nSeparator);
+ }
+ pSh->SplitNode();
+ }
+ else
+ {
+ String sStr;
+#ifdef REPLACE_OFADBMGR
+ Sequence<OUString> aColNames = xCols->getElementNames();
+ const OUString* pColNames = aColNames.getConstArray();
+ long nLength = aColNames.getLength();
+ for(long i = 0; i < nLength; i++)
+ {
+ Any aCol = xCols->getByName(pColNames[i]);
+ Reference< XPropertySet > xColumnProp = *(Reference< XPropertySet >*)aCol.getValue();;
+ SwDBFormatData aDBFormat;
+ sStr += GetDBField( xColumnProp, aDBFormat);
+ if (i < nLength - 1)
+ sStr += '\t';
+ }
+#else
+ for (ULONG i = 1; i < nCount; i++) // 0 = Bookmark
+ {
+ sStr += ImportDBField(i, pDef, xRow);
+ if (i < nCount - 1)
+ sStr += '\t';
+ }
+#endif
+ pSh->SwEditShell::Insert(sStr);
+ pSh->SwFEShell::SplitNode(); // Zeilenvorschub
+ }
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwNewDBMgr::ChgDBName(SwWrtShell* pSh,
+#ifdef REPLACE_OFADBMGR
+ const String& rDataSource,
+ const String& rTableOrQuery,
+#else
+ const String& rDBName,
+#endif
+ const String& rStatement)
+{
+ if (pSh)
+ {
+#ifdef REPLACE_OFADBMGR
+ String sNewDBName(rDataSource);
+ sNewDBName += DB_DELIM;
+ sNewDBName += rTableOrQuery;
+#else
+ String sNewDBName(ExtractDBName(rDBName));
+#endif
+ sNewDBName += ';';
+ sNewDBName += rStatement;
+ pSh->ChgDBName(sNewDBName);
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Listbox mit Tabellenliste fuellen
+ --------------------------------------------------------------------*/
+#ifdef REPLACE_OFADBMGR
+BOOL SwNewDBMgr::GetTableNames(ListBox* pListBox, const String& rDBName)
+#else
+BOOL SwNewDBMgr::GetTableNames(ListBox* pListBox, String sDBName)
+#endif
+{
+ BOOL bRet = FALSE;
+ String sOldTableName(pListBox->GetSelectEntry());
+ pListBox->Clear();
+#ifdef REPLACE_OFADBMGR
+ Reference< XDataSource> xSource;
+ Reference< XConnection> xConnection = SwNewDBMgr::GetConnection(rDBName, xSource);
+ if(xConnection.is())
+ {
+ Reference<XTablesSupplier> xTSupplier = Reference<XTablesSupplier>(xConnection, UNO_QUERY);
+ if(xTSupplier.is())
+ {
+ Reference<XNameAccess> xTbls = xTSupplier->getTables();
+ Sequence<OUString> aTbls = xTbls->getElementNames();
+ const OUString* pTbls = aTbls.getConstArray();
+ for(long i = 0; i < aTbls.getLength(); i++)
+ pListBox->InsertEntry(pTbls[i]);
+ }
+ Reference<XQueriesSupplier> xQSupplier = Reference<XQueriesSupplier>(xConnection, UNO_QUERY);
+ if(xQSupplier.is())
+ {
+ Reference<XNameAccess> xQueries = xQSupplier->getQueries();
+ Sequence<OUString> aQueries = xQueries->getElementNames();
+ const OUString* pQueries = aQueries.getConstArray();
+ for(long i = 0; i < aQueries.getLength(); i++)
+ pListBox->InsertEntry(pQueries[i]);
+ }
+ if (sOldTableName.Len())
+ pListBox->SelectEntry(sOldTableName);
+ bRet = TRUE;
+ }
+#else
+
+ sDBName = OFF_APP()->LocalizeDBName(NATIONAL2INI, sDBName);
+ if (sDBName.Len())
+ {
+ SbaDatabaseRef pConnection = pSbaObject->GetDatabase(sDBName, TRUE);
+
+ if (pConnection)
+ {
+ String sTableName;
+
+ USHORT nCount = pConnection->GetObjectCount(dbTable);
+
+ for (USHORT i = 0; i < nCount; i++)
+ {
+ sTableName = pConnection->GetObjectName(dbTable, i);
+ pListBox->InsertEntry(sTableName);
+ }
+
+ nCount = pConnection->GetObjectCount(dbQuery);
+
+ for (i = 0; i < nCount; i++)
+ {
+ sTableName = pConnection->GetObjectName(dbQuery, i);
+ pListBox->InsertEntry(sTableName);
+ }
+
+ if (sOldTableName.Len())
+ pListBox->SelectEntry(sOldTableName);
+ if (!pListBox->GetSelectEntryCount())
+ pListBox->SelectEntryPos(0);
+ bRet = TRUE;
+ }
+ }
+#endif
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Listbox mit Spaltennamen einer Datenbank fuellen
+ --------------------------------------------------------------------*/
+#ifdef REPLACE_OFADBMGR
+BOOL SwNewDBMgr::GetColumnNames(ListBox* pListBox,
+ const String& rDBName, const String& rTableName, BOOL bAppend)
+#else
+BOOL SwNewDBMgr::GetColumnNames(ListBox* pListBox, String sDBName, BOOL bAppend)
+#endif
+{
+ if (!bAppend)
+ pListBox->Clear();
+#ifdef REPLACE_OFADBMGR
+ Reference< XDataSource> xSource;
+ Reference< XConnection> xConnection = SwNewDBMgr::GetConnection(rDBName, xSource);
+ Reference< XColumnsSupplier> xColsSupp = SwNewDBMgr::GetColumnSupplier(xConnection, rTableName);
+ if(xColsSupp.is())
+ {
+ Reference <XNameAccess> xCols = xColsSupp->getColumns();
+ const Sequence<OUString> aColNames = xCols->getElementNames();
+ const OUString* pColNames = aColNames.getConstArray();
+ for(int nCol = 0; nCol < aColNames.getLength(); nCol++)
+ {
+ pListBox->InsertEntry(pColNames[nCol]);
+ }
+ }
+#else
+ if (!sDBName.Len() || (!IsDBOpen(DBMGR_STD, sDBName) && !OpenDB(DBMGR_STD, sDBName, TRUE)))
+ return(FALSE);
+
+ SbaDBDataDefRef aDBDef = OpenColumnNames(DBMGR_STD);
+
+ if (aDBDef.Is())
+ {
+ const SbaColumnList& rCols = aDBDef->GetOriginalColumns();
+
+ for (USHORT i = 1; i <= rCols.Count(); i++)
+ {
+ const SbaNameItem* pNameItem = (const SbaNameItem*)&rCols.GetObject(i-1)->Get(SBA_DEF_FLTNAME);
+ pListBox->InsertEntry(pNameItem->GetValue());
+ }
+
+ pListBox->SelectEntryPos(0);
+ }
+#endif
+ return(TRUE);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: CTOR
+ --------------------------------------------------------------------*/
+
+SwNewDBMgr::SwNewDBMgr() :
+#ifdef REPLACE_OFADBMGR
+ pMergeData(0),
+ bInMerge(FALSE),
+#else
+ OfaDBMgr(),
+#endif
+ nMergeType(DBMGR_INSERT),
+ bInitDBFields(FALSE)
+{
+ pMergeList = new SbaSelectionList;
+}
+/* -----------------------------18.07.00 08:56--------------------------------
+
+ ---------------------------------------------------------------------------*/
+#ifdef REPLACE_OFADBMGR
+SwNewDBMgr::~SwNewDBMgr()
+{
+}
+#endif
+/*--------------------------------------------------------------------
+ Beschreibung: Serienbrief drucken
+ --------------------------------------------------------------------*/
+
+
+BOOL SwNewDBMgr::MergePrint( SwView& rView,
+ SwPrtOptions& rOpt, SfxProgress& rProgress )
+{
+ SwWrtShell* pSh = &rView.GetWrtShell();
+ //check if the doc is synchronized and contains at least one linked section
+ BOOL bSynchronizedDoc = pSh->IsLabelDoc() && pSh->GetSectionFmtCount() > 1;
+#ifdef REPLACE_OFADBMGR
+ //merge source is already open
+ rOpt.nMergeCnt = pMergeData && pMergeData->xSelectionList.Is() ?
+ pMergeData->xSelectionList->Count() : 0;
+#else
+ OfaDBParam& rParam = GetDBData(FALSE);
+
+ // 1. Satz positionieren, Evaluierung ueber die Felder
+ for (USHORT i = 0; i < aDBDataArr.Count(); i++)
+ {
+ OfaDBParam* pParam = aDBDataArr[i];
+
+ // Alle Im Dok enthaltenen Datenbanken oeffnen und Cursorpos initialisieren
+ if (OpenDB(FALSE, pParam->GetDBName()))
+ {
+ if (pParam->GetCursor())
+ Flush(FALSE); // Cursor initialisieren
+ ToFirstSelectedRecord(FALSE);
+ }
+ }
+
+ OpenDB(FALSE, rParam.GetDBName());
+ if (!ToFirstSelectedRecord(FALSE))
+ return(FALSE);
+ ODbRowRef xRow = GetCurSelectedRecord(FALSE);
+ // keine Arme keine Kekse
+ if(!xRow.is())
+ return FALSE;
+
+ bInMerge = TRUE;
+
+ rOpt.nMergeCnt = GetDBData(FALSE).pSelectionList.Is()
+ ? GetDBData(FALSE).pSelectionList->Count()
+ : 0;
+ rOpt.nMergeAct = 0;
+
+ Flush(FALSE); // Cursor initialisieren
+#endif
+
+// if (IsPrintFromBasicDB())
+// rOpt.bSinglePrtJobs = IsSingleJobs();
+// else
+// {
+ SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+ rOpt.bSinglePrtJobs = pModOpt->IsSinglePrintJob();
+// }
+
+ SfxPrinter *pPrt = pSh->GetPrt();
+ Link aSfxSaveLnk = pPrt->GetEndPrintHdl();
+ if( rOpt.bSinglePrtJobs )
+ pPrt->SetEndPrintHdl( Link() );
+
+ BOOL bNewJob = FALSE,
+ bUserBreak = FALSE,
+ bRet = FALSE;
+
+ do {
+#ifdef REPLACE_OFADBMGR
+
+#else
+ xRow = GetCurSelectedRecord(FALSE); // Naechste Selektion holen
+ ULONG nOldRec = GetCurRecordId(FALSE); // Alte Position merken
+ if(xRow.Is())
+#endif
+ {
+ pSh->ViewShell::UpdateFlds();
+ ++rOpt.nMergeAct;
+ rView.SfxViewShell::Print( rProgress ); // ggf Basic-Macro ausfuehren
+
+ if( rOpt.bSinglePrtJobs && bRet )
+ {
+ //rOpt.bJobStartet = FALSE;
+ bRet = FALSE;
+ }
+
+ if( pSh->Prt( rOpt, rProgress ) )
+ bRet = TRUE;
+
+ if( !pPrt->IsJobActive() )
+ {
+ bUserBreak = TRUE;
+ bRet = FALSE;
+ break;
+ }
+ if( !rOpt.bSinglePrtJobs )
+ {
+ String& rJNm = (String&)rOpt.GetJobName();
+ rJNm.Erase();
+ }
+ }
+#ifdef REPLACE_OFADBMGR
+ } while( bSynchronizedDoc ? ExistsNextRecord() : ToNextMergeRecord());
+#else
+ // Kontext fuer ToNextSelectedRecord auf richtige Datenbank stellen:
+ GetDBData(FALSE, &rParam.GetDBName());
+ // Endlosschleifen durch "Erster Datensatz" verhindern:
+ if (GetCurRecordId(FALSE) < nOldRec)
+ ToSelectedRecord(FALSE, nOldRec); // Alte Position restaurieren
+ } while( xRow.is() && GotoNextSelectedRecord( bSynchronizedDoc) );
+#endif
+
+ if( rOpt.bSinglePrtJobs )
+ {
+ pSh->GetPrt()->SetEndPrintHdl( aSfxSaveLnk );
+ if ( !bUserBreak && !pSh->GetPrt()->IsJobActive() ) //Schon zu spaet?
+ aSfxSaveLnk.Call( pSh->GetPrt() );
+ }
+
+ rOpt.nMergeCnt = 0;
+ rOpt.nMergeAct = 0;
+
+ bInMerge = FALSE;
+
+ nMergeType = DBMGR_INSERT;
+
+ SwDocShell* pDocSh = rView.GetDocShell();
+ SfxViewFrame *pTmpFrm = SfxViewFrame::GetFirst(pDocSh);
+
+ while (pTmpFrm) // Alle Views Invalidieren
+ {
+ SwView *pVw = PTR_CAST(SwView, pTmpFrm->GetViewShell());
+ if (pVw)
+ pVw->GetEditWin().Invalidate();
+ pTmpFrm = pTmpFrm->GetNext(*pTmpFrm, pDocSh);
+ }
+
+#ifdef REPLACE_OFADBMGR
+#else
+ CloseAll();
+#endif
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Serienbrief als Mail versenden
+ --------------------------------------------------------------------*/
+
+
+BOOL SwNewDBMgr::MergeMailing(SwWrtShell* pSh)
+{
+ //check if the doc is synchronized and contains at least one linked section
+ BOOL bSynchronizedDoc = pSh->IsLabelDoc() && pSh->GetSectionFmtCount() > 1;
+#ifdef REPLACE_OFADBMGR
+#else
+
+ OfaDBParam& rParam = GetDBData(FALSE);
+
+ // 1. Satz positionieren, Evaluierung ueber die Felder
+ for (USHORT i = 0; i < aDBDataArr.Count(); i++)
+ {
+ OfaDBParam* pParam = aDBDataArr[i];
+
+ // Alle Im Dok enthaltenen Datenbanken oeffnen und Cursorpos initialisieren
+ if (OpenDB(FALSE, pParam->GetDBName()))
+ {
+ if (pParam->GetCursor())
+ Flush(FALSE); // Cursor initialisieren
+ ToFirstSelectedRecord(FALSE);
+ }
+ }
+
+ OpenDB(FALSE, rParam.GetDBName());
+ if (!ToFirstSelectedRecord(FALSE))
+ return(FALSE);
+
+ ODbRowRef xRow = GetCurSelectedRecord(FALSE);
+#endif
+ BOOL bLoop = TRUE;
+
+#ifdef REPLACE_OFADBMGR
+#else
+ // keine Arme keine Kekse
+ if(!xRow.is())
+ return FALSE;
+ SbaDBDataDefRef aDBDef = OpenColumnNames(FALSE);
+ if (aDBDef.Is())
+#endif
+ {
+#ifdef REPLACE_OFADBMGR
+ Reference< XColumnsSupplier > xColsSupp( pMergeData->xResultSet, UNO_QUERY );
+ Reference <XNameAccess> xCols = xColsSupp->getColumns();
+ if(!xCols->hasByName(sEMailAddrFld))
+ return FALSE;
+ Any aCol = xCols->getByName(sEMailAddrFld);
+ Reference< XPropertySet > xColumnProp = *(Reference< XPropertySet >*)aCol.getValue();;
+#else
+ const SbaColumnList& rCols = aDBDef->GetOriginalColumns();
+ USHORT nColPos = 0;
+ for (nColPos = 0; nColPos < rCols.Count(); nColPos++)
+ {
+ const SbaNameItem* pNameItem = (const SbaNameItem*)&rCols.GetObject(nColPos)->Get(SBA_DEF_FLTNAME);
+ if (pNameItem->GetValue() == sEMailAddrFld)
+ break;
+ }
+
+ if (nColPos >= rCols.Count())
+ return FALSE;
+ nColPos++;
+#endif
+
+ bInMerge = TRUE;
+ SfxDispatcher* pSfxDispatcher = pSh->GetView().GetViewFrame()->GetDispatcher();
+ if (!sSubject.Len()) // Kein leeres Subject wegen Automail (PB)
+ sSubject = ' ';
+ SfxStringItem aSubject(SID_MAIL_SUBJECT, sSubject);
+ SfxStringItem aText(SID_MAIL_TEXT, ' '); // Leerer Text ist nicht moeglich
+ SfxStringItem aAttached(SID_MAIL_ATTACH_FILE, sAttached);
+ SfxBoolItem aAttach(SID_MAIL_ATTACH, TRUE);
+
+ SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+ BYTE nMailFmts = pModOpt->GetMailingFormats() | TXTFORMAT_ASCII; // Immer Ascii
+ SfxByteItem aTextFormats(SID_MAIL_TXTFORMAT, nMailFmts);
+#ifdef REPLACE_OFADBMGR
+#else
+ Flush(FALSE); // Cursor initialisieren
+#endif
+
+ pSfxDispatcher->Execute( SID_SAVEDOC, SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD);
+ if( !pSh->IsModified() )
+ {
+ // Beim Speichern wurde kein Abbruch gedrueckt
+ // neue DocShell erzeugen, alle gelinkten Bereiche embedden
+ // und unter temporaerem Namen wieder speichern.
+ BOOL bDelTempFile = TRUE;
+ String sTmpName;
+ const SfxFilter* pSfxFlt;
+
+ {
+ SfxMedium* pOrig = pSh->GetView().GetDocShell()->GetMedium();
+
+ pSfxFlt = SwIoSystem::GetFileFilter( pOrig->GetPhysicalName(), ::aEmptyStr );
+
+ String sFileName = ::GetTmpFileName();
+ String sTmpName = URIHelper::SmartRelToAbs(sFileName);
+
+ BOOL bCopyCompleted = TRUE;
+ try
+ {
+ String sMain(sTmpName);
+ sal_Unicode cSlash = '/';
+ xub_StrLen nSlashPos = sMain.SearchBackward(cSlash);
+ sMain.Erase(nSlashPos);
+ ::ucb::Content aNewContent( sMain, Reference< XCommandEnvironment > ());
+ Any aAny;
+ TransferInfo aInfo;
+ aInfo.NameClash = NameClash::OVERWRITE;
+ aInfo.NewTitle = INetURLObject(sTmpName).GetName();
+ aInfo.SourceURL = pOrig->GetPhysicalName();
+ aInfo.MoveData = FALSE;
+ aAny <<= aInfo;
+ aNewContent.executeCommand( C2U( "transfer" ), aAny);
+ }
+ catch( ... )
+ {
+ bCopyCompleted = FALSE;
+ }
+
+ if( !bCopyCompleted )
+ {
+ // Neues Dokument erzeugen.
+ SfxObjectShellRef xDocSh( new SwDocShell( SFX_CREATE_MODE_INTERNAL ));
+ SfxMedium* pMed = new SfxMedium( sTmpName, STREAM_READ, TRUE );
+ pMed->SetFilter( pSfxFlt );
+
+ // alle gelinkten Bereiche/Grafiken aufs lokale FileSystem
+ // einbetten
+ if( xDocSh->DoLoad( pOrig ) &&
+ ((SwDocShell*)(&xDocSh))->EmbedAllLinks() )
+ {
+ xDocSh->DoSaveAs(*pMed);
+ xDocSh->DoSaveCompleted(pMed);
+ }
+ else
+ bDelTempFile = FALSE;
+
+ xDocSh->DoClose();
+ }
+ else
+ bDelTempFile = FALSE;
+
+ if( !bDelTempFile )
+ sTmpName = pOrig->GetPhysicalName();
+ }
+
+
+ String sAddress;
+ ULONG nDocNo = 1;
+ bCancel = FALSE;
+
+ PrintMonitor aPrtMonDlg(&pSh->GetView().GetEditWin(), TRUE);
+ aPrtMonDlg.aDocName.SetText(pSh->GetView().GetDocShell()->GetTitle(22));
+ aPrtMonDlg.aCancel.SetClickHdl(LINK(this, SwNewDBMgr, PrtCancelHdl));
+ aPrtMonDlg.Show();
+
+ OfficeApplication* pOffApp = OFF_APP();
+ SfxRequest aReq( SID_OPENDOC, SFX_CALLMODE_SYNCHRON, pOffApp->GetPool() );
+ aReq.AppendItem( SfxStringItem( SID_FILE_NAME, sTmpName ));
+ aReq.AppendItem( SfxStringItem( SID_FILTER_NAME, pSfxFlt->GetName() ));
+ aReq.AppendItem( SfxBoolItem( SID_HIDDEN, TRUE ) );
+ aReq.AppendItem( SfxStringItem( SID_REFERER, String::CreateFromAscii(URL_PREFIX_PRIV_SOFFICE )));
+
+ pOffApp->ExecuteSlot( aReq, pOffApp->SfxApplication::GetInterface());
+ if( aReq.IsDone() )
+ {
+ // DocShell besorgen
+ SfxViewFrameItem* pVItem = (SfxViewFrameItem*)aReq.GetReturnValue();
+ SwView* pView = (SwView*) pVItem->GetFrame()->GetViewShell();
+ SwWrtShell& rSh = pView->GetWrtShell();
+ pView->AttrChangedNotify( &rSh );//Damit SelectShell gerufen wird.
+
+ SwDoc* pDoc = rSh.GetDoc();
+ SwNewDBMgr* pOldDBMgr = pDoc->GetNewDBMgr();
+ pDoc->SetNewDBMgr( this );
+ pDoc->EmbedAllLinks();
+ String sTempStat(SW_RES(STR_DB_EMAIL));
+
+ do
+ {
+#ifdef REPLACE_OFADBMGR
+#else
+ // Naechste Selektion holen
+ xRow = GetCurSelectedRecord(FALSE);
+ ULONG nOldRec = GetCurRecordId(FALSE); // Alte Position merken
+ if( xRow.is() && xRow->size() > 0)
+#endif
+ {
+
+ if(UIUNDO_DELETE_INVISIBLECNTNT == rSh.GetUndoIds())
+ rSh.Undo();
+ rSh.ViewShell::UpdateFlds();
+
+ // alle versteckten Felder/Bereiche entfernen
+ rSh.RemoveInvisibleContent();
+
+ SfxFrameItem aFrame( SID_DOCFRAME, pVItem->GetFrame() );
+#ifdef REPLACE_OFADBMGR
+ SwDBFormatData aDBFormat;
+ sAddress = GetDBField( xColumnProp, aDBFormat);
+#else
+ sAddress = ImportDBField(nColPos, &aDBDef, xRow);
+#endif
+ if (!sAddress.Len())
+ sAddress = '_';
+
+ String sStat(sTempStat);
+ sStat += ' ';
+ sStat += String::CreateFromInt32( nDocNo++ );
+ aPrtMonDlg.aPrintInfo.SetText(sStat);
+ aPrtMonDlg.aPrinter.SetText( sAddress );
+
+ // Rechenzeit fuer EMail-Monitor:
+ for (USHORT i = 0; i < 25; i++)
+ Application::Reschedule();
+
+ sAddress.Insert(String::CreateFromAscii("mailto:"), 0);
+ SfxStringItem aRecipient( SID_MAIL_RECIPIENT, sAddress );
+
+ const SfxPoolItem* pRet = pSfxDispatcher->Execute(
+ SID_MAIL_SENDDOC,
+ SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD,
+ &aRecipient, &aSubject, &aAttach, &aAttached,
+ &aText, &aTextFormats, &aFrame,
+ 0L );
+ //this must be done here because pRet may be destroyed in Reschedule (DeleteOnIdle)
+ BOOL bBreak = pRet && !( (SfxBoolItem*)pRet )->GetValue();
+
+ // Rechenzeit fuer EMail-Monitor:
+ for (i = 0; i < 25; i++)
+ Application::Reschedule();
+
+ if ( bBreak )
+ break; // das Verschicken wurde unterbrochen
+
+ }
+#ifdef REPLACE_OFADBMGR
+ } while( !bCancel && bSynchronizedDoc ? ExistsNextRecord() : ToNextMergeRecord());
+#else
+ // Kontext fuer ToNextSelectedRecord auf richtige Datenbank stellen:
+ GetDBData(FALSE, &rParam.GetDBName());
+
+ // Endlosschleifen durch "Erster Datensatz" verhindern:
+ if (GetCurRecordId(FALSE) < nOldRec)
+ ToSelectedRecord(FALSE, nOldRec); // Alte Position restaurieren
+ } while(!bCancel && xRow.is() && GotoNextSelectedRecord( bSynchronizedDoc));
+#endif
+ pDoc->SetNewDBMgr( pOldDBMgr );
+ pView->GetDocShell()->OwnerLock( FALSE );
+
+ }
+ // jetzt noch die temp Datei entfernen
+ if( bDelTempFile )
+ {
+ try
+ {
+ ::ucb::Content aTempContent(
+ sTmpName,
+ Reference< XCommandEnvironment > ());
+ aTempContent.executeCommand( C2U( "delete" ),
+ makeAny( sal_Bool( sal_True ) ) );
+ }
+ catch( ... )
+ {
+ DBG_ERRORFILE( "Exception" );
+ }
+
+ }
+ SW_MOD()->SetView(&pSh->GetView());
+ }
+
+ bInMerge = FALSE;
+ nMergeType = DBMGR_INSERT;
+ }
+
+#ifdef REPLACE_OFADBMGR
+#else
+ CloseAll();
+#endif
+ return bLoop;
+}
+
+/* -----------------------------17.04.00 11:18--------------------------------
+
+ ---------------------------------------------------------------------------*/
+#ifdef REPLACE_OFADBMGR
+#else
+BOOL SwNewDBMgr::GotoNextSelectedRecord( BOOL bSyncronized )
+{
+ BOOL bRet = FALSE;
+ if(!bSyncronized)
+ bRet = ToNextSelectedRecord( FALSE );
+ else
+ {
+ OfaDBParam& rParam = GetDBData(FALSE);
+ if (rParam.GetCursor())
+ {
+ if (rParam.pSelectionList.Is() && rParam.pSelectionList->Count())
+ {
+ bRet = (rParam.CurrentSelPos() < rParam.pSelectionList->Count());
+ }
+ else
+ {
+ bRet = !rParam.GetCursor()->IsOffRange();
+ }
+ }
+ }
+ return(bRet);
+}
+#endif
+/*--------------------------------------------------------------------
+ Beschreibung: Serienbriefe als einzelne Dokumente speichern
+ --------------------------------------------------------------------*/
+
+BOOL SwNewDBMgr::MergeMailFiles(SwWrtShell* pSh)
+{
+ //check if the doc is synchronized and contains at least one linked section
+ BOOL bSynchronizedDoc = pSh->IsLabelDoc() && pSh->GetSectionFmtCount() > 1;
+#ifdef REPLACE_OFADBMGR
+#else
+ OfaDBParam& rParam = GetDBData(FALSE);
+
+ // 1. Satz positionieren, Evaluierung ueber die Felder
+ for (USHORT i = 0; i < aDBDataArr.Count(); i++)
+ {
+ OfaDBParam* pParam = aDBDataArr[i];
+
+ // Alle im Dok enthaltenen Datenbanken oeffnen und Cursorpos initialisieren
+ if (OpenDB(FALSE, pParam->GetDBName()))
+ {
+ if (pParam->GetCursor())
+ Flush(FALSE); // Cursor initialisieren
+ ToFirstSelectedRecord(FALSE);
+ }
+ }
+
+ OpenDB(FALSE, rParam.GetDBName());
+ if (!ToFirstSelectedRecord(FALSE))
+ return(FALSE);
+
+ ODbRowRef xRow = GetCurSelectedRecord(FALSE);
+
+ // keine Arme keine Kekse
+ if(!xRow.is())
+ return FALSE;
+#endif
+ BOOL bLoop = TRUE;
+
+#ifdef REPLACE_OFADBMGR
+ Reference< XPropertySet > xColumnProp;
+#else
+ SbaDBDataDefRef aDBDef = OpenColumnNames(FALSE);
+ if (aDBDef.Is())
+#endif
+ {
+ USHORT nColPos = 0;
+ BOOL bColumnName = sEMailAddrFld.Len() > 0;
+
+ if (bColumnName)
+ {
+#ifdef REPLACE_OFADBMGR
+ Reference< XColumnsSupplier > xColsSupp( pMergeData->xResultSet, UNO_QUERY );
+ Reference <XNameAccess> xCols = xColsSupp->getColumns();
+ if(!xCols->hasByName(sEMailAddrFld))
+ return FALSE;
+ Any aCol = xCols->getByName(sEMailAddrFld);
+ xColumnProp = *(Reference< XPropertySet >*)aCol.getValue();;
+#else
+ const SbaColumnList& rCols = aDBDef->GetOriginalColumns();
+
+ for (nColPos = 0; nColPos < rCols.Count(); nColPos++)
+ {
+ const SbaNameItem* pNameItem = (const SbaNameItem*)&rCols.GetObject(nColPos)->Get(SBA_DEF_FLTNAME);
+ if (pNameItem->GetValue() == sEMailAddrFld)
+ break;
+ }
+
+ if (nColPos >= rCols.Count())
+ return FALSE;
+
+ nColPos++;
+#endif
+ }
+
+ bInMerge = TRUE;
+ SfxDispatcher* pSfxDispatcher = pSh->GetView().GetViewFrame()->GetDispatcher();
+
+#ifdef REPLACE_OFADBMGR
+#else
+ Flush(FALSE); // Cursor initialisieren
+#endif
+
+ pSfxDispatcher->Execute( SID_SAVEDOC, SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD);
+ if( !pSh->IsModified() )
+ {
+ // Beim Speichern wurde kein Abbruch gedrueckt
+ SfxMedium* pOrig = pSh->GetView().GetDocShell()->GetMedium();
+ String sOldName(pOrig->GetPhysicalName());
+ const SfxFilter* pSfxFlt = SwIoSystem::GetFileFilter(
+ sOldName, ::aEmptyStr );
+ String sAddress;
+ bCancel = FALSE;
+
+ PrintMonitor aPrtMonDlg(&pSh->GetView().GetEditWin());
+ aPrtMonDlg.aDocName.SetText(pSh->GetView().GetDocShell()->GetTitle(22));
+
+ aPrtMonDlg.aCancel.SetClickHdl(LINK(this, SwNewDBMgr, PrtCancelHdl));
+ aPrtMonDlg.Show();
+
+ SwDocShell *pDocSh = pSh->GetView().GetDocShell();
+ // Progress, um KeyInputs zu unterbinden
+ SfxProgress aProgress(pDocSh, ::aEmptyStr, 1);
+
+ // Alle Dispatcher sperren
+ SfxViewFrame* pViewFrm = SfxViewFrame::GetFirst(pDocSh);
+ while (pViewFrm)
+ {
+ pViewFrm->GetDispatcher()->Lock(TRUE);
+ pViewFrm = SfxViewFrame::GetNext(*pViewFrm, pDocSh);
+ }
+ ULONG nDocNo = 1;
+ ULONG nCounter = 0;
+ String sExt( INetURLObject( sOldName ).GetExtension() );
+
+ do {
+#ifdef REPLACE_OFADBMGR
+#else
+ // Naechste Selektion holen
+ xRow = GetCurSelectedRecord(FALSE);
+ ULONG nOldRec = GetCurRecordId(FALSE); // Alte Position merken
+
+ if( xRow.is() && xRow->size() > 0 )
+#endif
+ {
+ String sPath(sSubject);
+
+ if( bColumnName )
+ {
+#ifdef REPLACE_OFADBMGR
+ SwDBFormatData aDBFormat;
+ sAddress = GetDBField( xColumnProp, aDBFormat);
+#else
+
+ sAddress = ImportDBField(nColPos, &aDBDef, xRow);
+#endif
+ if (!sAddress.Len())
+ sAddress = '_';
+ sPath += sAddress;
+ nCounter = 0;
+ }
+
+ INetURLObject aEntry(sPath);
+ String sLeading(aEntry.GetBase());
+ aEntry.removeSegment();
+ sPath = aEntry.GetMainURL();
+ TempFile aTemp(sLeading,&sExt,&sPath );
+
+ if( !aTemp.IsValid() )
+ {
+ ErrorHandler::HandleError( ERRCODE_IO_NOTSUPPORTED );
+ bLoop = FALSE;
+ bCancel = TRUE;
+ }
+ else
+ {
+ INetURLObject aTempFile(aTemp.GetName());
+ aPrtMonDlg.aPrinter.SetText( aTempFile.GetBase() );
+ String sStat(SW_RES(STR_STATSTR_LETTER)); // Brief
+ sStat += ' ';
+ sStat += String::CreateFromInt32( nDocNo++ );
+ aPrtMonDlg.aPrintInfo.SetText(sStat);
+
+ // Rechenzeit fuer Save-Monitor:
+ for (USHORT i = 0; i < 10; i++)
+ Application::Reschedule();
+
+ // Neues Dokument erzeugen und speichern
+ SfxObjectShellRef xDocSh( new SwDocShell( SFX_CREATE_MODE_INTERNAL ));
+ SfxMedium* pMed = new SfxMedium( sOldName, STREAM_STD_READ, TRUE );
+ pMed->SetFilter( pSfxFlt );
+
+ if (xDocSh->DoLoad(pMed))
+ {
+ SwDoc* pDoc = ((SwDocShell*)(&xDocSh))->GetDoc();
+ SwNewDBMgr* pOldDBMgr = pDoc->GetNewDBMgr();
+ pDoc->SetNewDBMgr( this );
+ pDoc->UpdateFlds(0);
+
+ // alle versteckten Felder/Bereiche entfernen
+ pDoc->RemoveInvisibleContent();
+
+ SfxMedium* pDstMed = new SfxMedium( aTempFile.GetFull(), STREAM_STD_READWRITE, TRUE );
+ pDstMed->SetFilter( pSfxFlt );
+
+ xDocSh->DoSaveAs(*pDstMed);
+ xDocSh->DoSaveCompleted(pDstMed);
+ if( xDocSh->GetError() )
+ {
+ // error message ??
+ ErrorHandler::HandleError( xDocSh->GetError() );
+ bCancel = TRUE;
+ bLoop = FALSE;
+ }
+ pDoc->SetNewDBMgr( pOldDBMgr );
+ }
+ xDocSh->DoClose();
+ }
+ }
+#ifdef REPLACE_OFADBMGR
+ } while( !bCancel && bSynchronizedDoc ? ExistsNextRecord() : ToNextMergeRecord());
+#else
+ // Kontext fuer ToNextSelectedRecord auf
+ // richtige Datenbank stellen:
+ GetDBData(FALSE, &rParam.GetDBName());
+
+ // Endlosschleifen durch "Erster Datensatz" verhindern:
+ if( !bCancel && GetCurRecordId(FALSE) < nOldRec )
+ ToSelectedRecord(FALSE, nOldRec); // Alte Position restaurieren
+ } while( !bCancel && xRow.is() &&
+ GotoNextSelectedRecord( bSynchronizedDoc) );
+#endif
+ // Alle Dispatcher freigeben
+ pViewFrm = SfxViewFrame::GetFirst(pDocSh);
+ while (pViewFrm)
+ {
+ pViewFrm->GetDispatcher()->Lock(FALSE);
+ pViewFrm = SfxViewFrame::GetNext(*pViewFrm, pDocSh);
+ }
+
+ SW_MOD()->SetView(&pSh->GetView());
+ }
+
+ bInMerge = FALSE;
+ nMergeType = DBMGR_INSERT;
+ }
+
+#ifdef REPLACE_OFADBMGR
+#else
+ CloseAll();
+#endif
+ return bLoop;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK_INLINE_START( SwNewDBMgr, PrtCancelHdl, Button *, pButton )
+{
+ pButton->GetParent()->Hide();
+ bCancel = TRUE;
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwNewDBMgr, PrtCancelHdl, Button *, pButton )
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Numberformat der Spalte ermitteln und ggfs. in
+ den uebergebenen Formatter uebertragen
+ --------------------------------------------------------------------*/
+
+#ifdef REPLACE_OFADBMGR
+ULONG SwNewDBMgr::GetColumnFmt( const String& rDBName,
+ const String& rTableName,
+ const String& rColNm,
+ SvNumberFormatter* pNFmtr,
+ long nLanguage )
+#else
+ULONG SwNewDBMgr::GetColumnFmt( const String& rDBName, const String& rColNm,
+ SvNumberFormatter* pNFmtr )
+#endif
+{
+ //JP 12.01.99: ggfs. das NumberFormat im Doc setzen
+ ULONG nRet = 0;
+#ifdef REPLACE_OFADBMGR
+ if(pNFmtr)
+ {
+ SvNumberFormatsSupplierObj* pNumFmt = new SvNumberFormatsSupplierObj( pNFmtr );
+ Reference< util::XNumberFormatsSupplier > xDocNumFmtsSupplier = pNumFmt;
+ Reference< XNumberFormats > xDocNumberFormats = xDocNumFmtsSupplier->getNumberFormats();
+ Reference< XNumberFormatTypes > xDocNumberFormatTypes(xDocNumberFormats, UNO_QUERY);
+
+ String sLanguage, sCountry;
+ ::ConvertLanguageToIsoNames( nLanguage, sLanguage, sCountry );
+ Locale aLocale;
+ aLocale.Language = sLanguage;
+ aLocale.Country = sCountry;
+
+ Reference< XDataSource> xSource;
+ Reference< XConnection> xConnection = SwNewDBMgr::GetConnection(rDBName, xSource);
+
+ //get the number formatter of the data source
+ Reference<XPropertySet> xSourceProps(xSource, UNO_QUERY);
+ Reference< XNumberFormats > xNumberFormats;
+ if(xSourceProps.is())
+ {
+ Any aFormats = xSourceProps->getPropertyValue(C2U("NumberFormatsSupplier"));
+ if(aFormats.hasValue())
+ {
+ Reference<XNumberFormatsSupplier> xSuppl = *(Reference<util::XNumberFormatsSupplier>*) aFormats.getValue();
+ if(xSuppl.is())
+ {
+ xNumberFormats = xSuppl->getNumberFormats();
+ }
+ }
+ }
+ Reference< XColumnsSupplier> xColsSupp = SwNewDBMgr::GetColumnSupplier(xConnection, rTableName);
+ if(xColsSupp.is())
+ {
+ Reference <XNameAccess> xCols = xColsSupp->getColumns();
+ if(!xCols->hasByName(rColNm))
+ return nRet;
+ Any aCol = xCols->getByName(rColNm);
+ Reference< XPropertySet > xColumnProp = *(Reference< XPropertySet >*)aCol.getValue();;
+
+ Any aFormat = xColumnProp->getPropertyValue(C2U("FormatKey"));
+ if(aFormat.hasValue())
+ {
+ sal_Int32 nFmt;
+ aFormat >>= nFmt;
+ if(xNumberFormats.is())
+ {
+ try
+ {
+ Reference<XPropertySet> xNumProps = xNumberFormats->getByKey( nFmt );
+ Any aFormat = xNumProps->getPropertyValue(C2U("FormatString"));
+ Any aLocale = xNumProps->getPropertyValue(C2U("Locale"));
+ OUString sFormat;
+ aFormat >>= sFormat;
+ com::sun::star::lang::Locale aLoc;
+ aLocale >>= aLoc;
+ nFmt = xDocNumberFormats->addNew( sFormat, aLoc );
+ nRet = nFmt;
+ }
+ catch(...)
+ {
+ DBG_ERROR("illegal number format key")
+ }
+ }
+ }
+ else
+ nRet = utl::getDefaultNumberFormat(xColumnProp, xDocNumberFormatTypes, aLocale);
+ }
+ else
+ nRet = pNFmtr->GetFormatIndex( NF_NUMBER_STANDARD, LANGUAGE_SYSTEM );
+ }
+#else
+ if( pNFmtr )
+ {
+ int nCol;
+ if( OpenDB( DBMGR_STD, rDBName, FALSE ) &&
+ 0 != ( nCol = GetColumnPos( DBMGR_STD, rColNm )))
+ nRet = GetRealColumnFmt( rColNm, GetColumnFormat( DBMGR_STD, nCol ),
+ *pNFmtr );
+ else
+ nRet = pNFmtr->GetFormatIndex( NF_NUMBER_STANDARD, LANGUAGE_SYSTEM );
+ }
+#endif
+ return nRet;
+}
+/* -----------------------------17.07.00 09:47--------------------------------
+
+ ---------------------------------------------------------------------------*/
+#ifdef REPLACE_OFADBMGR
+sal_Int32 SwNewDBMgr::GetColumnType( const String& rDBName,
+ const String& rTableName,
+ const String& rColNm )
+{
+ sal_Int32 nRet = DataType::SQLNULL;
+ Reference< XDataSource> xSource;
+ Reference< XConnection> xConnection = SwNewDBMgr::GetConnection(rDBName, xSource);
+ Reference< XColumnsSupplier> xColsSupp = SwNewDBMgr::GetColumnSupplier(xConnection, rTableName);
+ if(xColsSupp.is())
+ {
+ Reference <XNameAccess> xCols = xColsSupp->getColumns();
+ if(xCols->hasByName(rColNm))
+ {
+ Any aCol = xCols->getByName(rColNm);
+ Reference <XPropertySet> xCol = *(Reference <XPropertySet>*)aCol.getValue();
+ Any aType = xCol->getPropertyValue(C2S("Type"));
+ aType >>= nRet;
+ }
+ }
+ return nRet;
+}
+#else
+#endif
+
+#ifdef REPLACE_OFADBMGR
+#else
+ULONG SwNewDBMgr::GetRealColumnFmt( const String& rColNm, ULONG nFmt,
+ SvNumberFormatter& rNFmtr )
+{
+ SvNumberFormatter* pDBNumFmtr;
+ const SvNumberformat* pNFmt;
+ SbaDBDataDefRef aDBDef = OpenColumnNames( DBMGR_STD );
+ if( aDBDef.Is() && 0 != ( pDBNumFmtr = aDBDef->GetFormatter() ) &&
+ 0 != (pNFmt = pDBNumFmtr->GetEntry( nFmt ) ) )
+ {
+ nFmt = rNFmtr.GetEntryKey( pNFmt->GetFormatstring(), pNFmt->GetLanguage() );
+ if( NUMBERFORMAT_ENTRY_NOT_FOUND == nFmt )
+ {
+ xub_StrLen nCheckPos;
+ short nType;
+ XubString aTmp( pNFmt->GetFormatstring() );
+ rNFmtr.PutEntry( aTmp, nCheckPos, nType, nFmt, pNFmt->GetLanguage() );
+ }
+ }
+ else
+ nFmt = rNFmtr.GetFormatIndex( NF_NUMBER_STANDARD, LANGUAGE_SYSTEM );
+
+ return nFmt;
+}
+BOOL SwNewDBMgr::IsDBCaseSensitive( const String& rName ) const
+{
+ BOOL bRet = FALSE;
+ String sDBName = OFF_APP()->LocalizeDBName( NATIONAL2INI, rName );
+ if( sDBName.Len() )
+ {
+ SbaDatabaseRef xConnection = pSbaObject->GetDatabase(sDBName, TRUE);
+ if( xConnection.Is() )
+ // JP 18.11.99: looked from
+ // \offmgr\source\sba\core\db\dbtabobj.cxx
+ bRet = SDB_IC_OBJECT == xConnection->GetIdentifierCase();
+ }
+ return bRet;
+}
+#endif
+
+#ifdef REPLACE_OFADBMGR
+/* -----------------------------03.07.00 17:12--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Reference< sdbc::XConnection> SwNewDBMgr::GetConnection(const String& rDataSource,
+ Reference<XDataSource>& rxSource)
+{
+ Reference< sdbc::XConnection> xConnection;
+ Reference<XNameAccess> xDBContext;
+ Reference< XMultiServiceFactory > xMgr( ::utl::getProcessServiceFactory() );
+ if( xMgr.is() )
+ {
+ Reference<XInterface> xInstance = xMgr->createInstance( C2U( "com.sun.star.sdb.DatabaseContext" ));
+ xDBContext = Reference<XNameAccess>(xInstance, UNO_QUERY) ;
+ }
+ DBG_ASSERT(xDBContext.is(), "com.sun.star.sdb.DataBaseContext: service not available")
+ if(xDBContext.is())
+ {
+ try
+ {
+ if(xDBContext->hasByName(rDataSource))
+ {
+ Any aDBSource = xDBContext->getByName(rDataSource);
+ Reference<XDataSource>* pxSource = (Reference<XDataSource>*)aDBSource.getValue();
+ OUString sDummy;
+ xConnection = (*pxSource)->getConnection(sDummy, sDummy);
+ rxSource = (*pxSource);
+ }
+ }
+ catch(...) {}
+ }
+ return xConnection;
+}
+/* -----------------------------03.07.00 17:12--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Reference< sdbcx::XColumnsSupplier> SwNewDBMgr::GetColumnSupplier(Reference<sdbc::XConnection> xConnection,
+ const String& rTableOrQuery,
+ BYTE eTableOrQuery)
+{
+ Reference< sdbcx::XColumnsSupplier> xRet;
+ if(SW_DB_SELECT_QUERY != eTableOrQuery)
+ {
+ Reference<XTablesSupplier> xTSupplier = Reference<XTablesSupplier>(xConnection, UNO_QUERY);
+ if(xTSupplier.is())
+ {
+ Reference<XNameAccess> xTbls = xTSupplier->getTables();
+ if(xTbls->hasByName(rTableOrQuery))
+ try
+ {
+ Any aTable = xTbls->getByName(rTableOrQuery);
+ Reference<XPropertySet> xPropSet = *(Reference<XPropertySet>*)aTable.getValue();
+ xRet = Reference<XColumnsSupplier>(xPropSet, UNO_QUERY);
+ }
+ catch(...){}
+ }
+ }
+ if(!xRet.is() && SW_DB_SELECT_QUERY != SW_DB_SELECT_TABLE)
+ {
+ Reference<XQueriesSupplier> xQSupplier = Reference<XQueriesSupplier>(xConnection, UNO_QUERY);
+ if(xQSupplier.is())
+ {
+ Reference<XNameAccess> xQueries = xQSupplier->getQueries();
+ if(xQueries->hasByName(rTableOrQuery))
+ try
+ {
+ Any aQuery = xQueries->getByName(rTableOrQuery);
+ Reference<XPropertySet> xPropSet = *(Reference<XPropertySet>*)aQuery.getValue();
+ xRet = Reference<XColumnsSupplier>(xPropSet, UNO_QUERY);
+ }
+ catch(...){}
+ }
+ }
+ return xRet;
+}
+/* -----------------------------05.07.00 13:44--------------------------------
+
+ ---------------------------------------------------------------------------*/
+String SwNewDBMgr::GetDBField(Reference<XPropertySet> xColumnProps,
+ const SwDBFormatData& rDBFormatData,
+ double* pNumber)
+{
+ Reference< XColumn > xColumn(xColumnProps, UNO_QUERY);
+ String sRet;
+ DBG_ASSERT(xColumn.is(), "SwNewDBMgr::::ImportDBField: illegal arguments")
+ if(!xColumn.is())
+ return sRet;
+
+ Any aType = xColumnProps->getPropertyValue(C2U("Type"));
+ sal_Int32 eDataType;
+ aType >>= eDataType;
+ switch(eDataType)
+ {
+ case DataType::CHAR:
+ case DataType::VARCHAR:
+ case DataType::LONGVARCHAR:
+ sRet = xColumn->getString();
+ break;
+ case DataType::BIT:
+ case DataType::TINYINT:
+ case DataType::SMALLINT:
+ case DataType::INTEGER:
+ case DataType::BIGINT:
+ case DataType::FLOAT:
+ case DataType::REAL:
+ case DataType::DOUBLE:
+ case DataType::NUMERIC:
+ case DataType::DECIMAL:
+ case DataType::DATE:
+ case DataType::TIME:
+ case DataType::TIMESTAMP:
+ {
+ ::Date aTempDate(rDBFormatData.aNullDate.Day,
+ rDBFormatData.aNullDate.Month, rDBFormatData.aNullDate.Year);
+
+ try
+ {
+ sRet = utl::DBTypeConversion::getValue(
+ xColumnProps,
+ rDBFormatData.xFormatter,
+ rDBFormatData.aLocale,
+ aTempDate);
+ double fVal = xColumn->getDouble();
+ if (pNumber)
+ *pNumber = fVal;
+ }
+ catch(Exception aExcept)
+ {
+ DBG_ERROR("exception caught")
+ }
+
+ }
+ break;
+
+// case DataType::BINARY:
+// case DataType::VARBINARY:
+// case DataType::LONGVARBINARY:
+// case DataType::SQLNULL:
+// case DataType::OTHER:
+// case DataType::OBJECT:
+// case DataType::DISTINCT:
+// case DataType::STRUCT:
+// case DataType::ARRAY:
+// case DataType::BLOB:
+// case DataType::CLOB:
+// case DataType::REF:
+// default:
+ }
+// if (pFormat)
+// {
+// SFX_ITEMSET_GET(*pCol, pFormatItem, SfxUInt32Item, SBA_DEF_FMTVALUE, sal_True);
+// *pFormat = pFormatItem->GetValue();
+// }
+
+ return sRet;
+}
+/* -----------------------------06.07.00 14:26--------------------------------
+ opens a data source table or query and keeps the reference
+ until EndMerge() is called
+ ---------------------------------------------------------------------------*/
+BOOL SwNewDBMgr::OpenMergeSource(const String& rDataSource,
+ const String& rDataTableOrQuery,
+ const String& rStatement,
+ const SbaSelectionListRef xSelectionList)
+{
+ DBG_ASSERT(!bInMerge && !pMergeData, "merge already activated!")
+ bInMerge = TRUE;
+ pMergeData = new SwDSParam(rDataSource, rDataTableOrQuery, SW_DB_SELECT_UNKNOWN, rStatement);
+ //remove corresponding data from aDataSourceParams and insert the merge data
+ String sDBName(rDataSource);
+ sDBName += DB_DELIM;
+ sDBName += rDataTableOrQuery;
+ SwDSParam* pTemp = FindDSData(sDBName, FALSE);
+ if(pTemp)
+ pTemp = pMergeData;
+ else
+ aDataSourceParams.Insert(pMergeData, aDataSourceParams.Count());
+
+ Reference<XDataSource> xSource;
+ pMergeData->xConnection = SwNewDBMgr::GetConnection(rDataSource, xSource);
+ pMergeData->xSelectionList = xSelectionList;
+ if( xSelectionList.Is() && xSelectionList->Count() && (long)xSelectionList->GetObject(0) != -1L )
+ {
+ pMergeData->bSelectionList = TRUE;
+ }
+
+ if(pMergeData->xConnection.is())
+ {
+ try
+ {
+ pMergeData->bScrollable = pMergeData->xConnection->getMetaData()
+ ->supportsResultSetType((sal_Int32)ResultSetType::SCROLL_INSENSITIVE);
+ pMergeData->xStatement = pMergeData->xConnection->createStatement();
+ pMergeData->xResultSet = pMergeData->xStatement->executeQuery( rStatement );
+ //after executeQuery the cursor must be positioned
+ if(pMergeData->bSelectionList)
+ {
+ if(pMergeData->bScrollable)
+ {
+ pMergeData->bEndOfDB = !pMergeData->xResultSet->absolute(
+ (ULONG)pMergeData->xSelectionList->GetObject( 0 ) );
+ }
+ else
+ {
+ ULONG nPos = (ULONG)pMergeData->xSelectionList->GetObject( 0 );
+ while(nPos > 0 && !pMergeData->bEndOfDB)
+ {
+ pMergeData->bEndOfDB |= !pMergeData->xResultSet->next();
+ nPos--;
+ }
+ }
+ if(1 == pMergeData->xSelectionList->Count())
+ pMergeData->bEndOfDB = TRUE;
+ }
+ else
+ {
+ pMergeData->bEndOfDB = !pMergeData->xResultSet->next();
+ ++pMergeData->nSelectionIndex;
+ }
+ Reference< XMultiServiceFactory > xMgr( ::utl::getProcessServiceFactory() );
+ if( xMgr.is() )
+ {
+ Reference<XInterface> xInstance = xMgr->createInstance( C2U( "com.sun.star.util.NumberFormatter" ));
+ pMergeData->xFormatter = Reference<util::XNumberFormatter>(xInstance, UNO_QUERY) ;
+ }
+
+ Reference<XPropertySet> xSourceProps(xSource, UNO_QUERY);
+ if(xSourceProps.is())
+ {
+ Any aFormats = xSourceProps->getPropertyValue(C2U("NumberFormatsSupplier"));
+ if(aFormats.hasValue())
+ {
+ Reference<XNumberFormatsSupplier> xSuppl = *(Reference<util::XNumberFormatsSupplier>*) aFormats.getValue();
+ if(xSuppl.is())
+ {
+ Reference< XPropertySet > xSettings = xSuppl->getNumberFormatSettings();
+ Any aNull = xSettings->getPropertyValue(C2U("NullDate"));
+ if(aNull.hasValue())
+ pMergeData->aNullDate = *(util::Date*)aNull.getValue();
+ }
+ }
+ }
+ }
+ catch(Exception aExcept)
+ {
+ DBG_ERROR("exception caught")
+ }
+ }
+ BOOL bRet = pMergeData && pMergeData->xResultSet.is();
+ if(!bRet)
+ pMergeData = 0;
+ return bRet;
+}
+/* -----------------------------06.07.00 14:28--------------------------------
+ releases the merge data source table or query after merge is completed
+ ---------------------------------------------------------------------------*/
+void SwNewDBMgr::EndMerge()
+{
+ DBG_ASSERT(bInMerge, "merge is not active")
+ bInMerge = FALSE;
+ pMergeData = 0;
+}
+/* -----------------------------06.07.00 14:28--------------------------------
+ checks if a desired data source table or query is open
+ ---------------------------------------------------------------------------*/
+BOOL SwNewDBMgr::IsDataSourceOpen(const String& rDataSource, const String& rTableOrQuery) const
+{
+ if(pMergeData)
+ {
+ return rDataSource == pMergeData->sDataSource &&
+ rTableOrQuery == pMergeData->sTableOrQuery &&
+ pMergeData->xResultSet.is();
+ }
+ else
+ return FALSE;
+}
+/* -----------------------------17.07.00 16:44--------------------------------
+ read column data a a specified position
+ ---------------------------------------------------------------------------*/
+BOOL SwNewDBMgr::GetColumnCnt(const String& rSourceName, const String& rTableName,
+ const String& rColumnName, sal_uInt32 nAbsRecordId,
+ long nLanguage,
+ String& rResult, double* pNumber)
+{
+ BOOL bRet = FALSE;
+ //check if it's the merge data source
+ if(pMergeData &&
+ rSourceName == pMergeData->sDataSource &&
+ rTableName == pMergeData->sTableOrQuery)
+ {
+ if(!pMergeData->xResultSet.is())
+ return FALSE;
+ //keep the old index
+ sal_Int32 nOldRow = pMergeData->xResultSet->getRow();
+ //position to the desired index
+ BOOL bMove;
+ if(nOldRow != nAbsRecordId)
+ bMove = lcl_MoveAbsolute(pMergeData, nAbsRecordId);
+ if(bMove)
+ {
+ bRet = lcl_GetColumnCnt(pMergeData, rColumnName, nLanguage, rResult, pNumber);
+ }
+ if(nOldRow != nAbsRecordId)
+ bMove = lcl_MoveAbsolute(pMergeData, nOldRow);
+ }
+ //
+ return bRet;
+}
+/* -----------------------------06.07.00 16:47--------------------------------
+ reads the column data at the current position
+ ---------------------------------------------------------------------------*/
+BOOL SwNewDBMgr::GetMergeColumnCnt(const String& rColumnName, USHORT nLanguage,
+ String &rResult, double *pNumber, sal_uInt32 *pFormat)
+{
+ if(!pMergeData || !pMergeData->xResultSet.is())
+ return FALSE;
+
+ BOOL bRet = lcl_GetColumnCnt(pMergeData, rColumnName, nLanguage, rResult, pNumber);
+ return bRet;
+}
+/* -----------------------------07.07.00 14:28--------------------------------
+
+ ---------------------------------------------------------------------------*/
+BOOL SwNewDBMgr::ToNextMergeRecord()
+{
+ DBG_ASSERT(pMergeData && pMergeData->xResultSet.is(), "no data source in merge")
+ if(!pMergeData || !pMergeData->xResultSet.is() || pMergeData->bEndOfDB)
+ return FALSE;
+ try
+ {
+ if(pMergeData->bSelectionList)
+ {
+ if(pMergeData->bScrollable)
+ {
+ pMergeData->bEndOfDB = !pMergeData->xResultSet->absolute(
+ (ULONG)pMergeData->xSelectionList->GetObject( ++pMergeData->nSelectionIndex ) );
+ }
+ else
+ {
+ ULONG nOldPos = pMergeData->nSelectionIndex ?
+ (ULONG)pMergeData->xSelectionList->GetObject(pMergeData->nSelectionIndex): 0;
+ ULONG nPos = (ULONG)pMergeData->xSelectionList->GetObject( ++pMergeData->nSelectionIndex );
+ DBG_ASSERT(nPos >=0, "selection invalid!")
+ long nDiff = nPos - nOldPos;
+ //if a backward move is necessary then the result set must be created again
+ if(nDiff < 0)
+ {
+ try
+ {
+ pMergeData->xResultSet = pMergeData->xStatement->executeQuery( pMergeData->sStatement );
+ }
+ catch(...)
+ {
+ pMergeData->bEndOfDB = TRUE;
+ }
+ nDiff = nPos;
+ }
+ while(nDiff > 0 && !pMergeData->bEndOfDB)
+ {
+ pMergeData->bEndOfDB |= !pMergeData->xResultSet->next();
+ nDiff--;
+ }
+ }
+ if(pMergeData->nSelectionIndex >= pMergeData->xSelectionList->Count())
+ pMergeData->bEndOfDB = TRUE;
+ }
+ else
+ {
+ pMergeData->bEndOfDB = !pMergeData->xResultSet->next();
+ ++pMergeData->nSelectionIndex;
+ }
+ }
+ catch(Exception aExcept)
+ {
+ DBG_ERROR("exception caught")
+ }
+ return TRUE;
+}
+/* -----------------------------13.07.00 17:23--------------------------------
+ synchronized labels contain a next record field at their end
+ to assure that the next page can be created in mail merge
+ the cursor position must be validated
+ ---------------------------------------------------------------------------*/
+BOOL SwNewDBMgr::ExistsNextRecord() const
+{
+ return pMergeData && !pMergeData->bEndOfDB;
+}
+/* -----------------------------13.07.00 10:41--------------------------------
+
+ ---------------------------------------------------------------------------*/
+sal_uInt32 SwNewDBMgr::GetSelectedRecordId()
+{
+ sal_uInt32 nRet = 0;
+ DBG_ASSERT(pMergeData && pMergeData->xResultSet.is(), "no data source in merge")
+ if(!pMergeData || !pMergeData->xResultSet.is())
+ return FALSE;
+ try
+ {
+ nRet = pMergeData->xResultSet->getRow();
+ }
+ catch(Exception aExcept)
+ {
+ DBG_ERROR("exception caught")
+ }
+ return nRet;
+}
+/* -----------------------------13.07.00 10:58--------------------------------
+
+ ---------------------------------------------------------------------------*/
+sal_Bool SwNewDBMgr::ToRecordId(sal_Int32 nSet)
+{
+ DBG_ASSERT(pMergeData && pMergeData->xResultSet.is(), "no data source in merge")
+ if(!pMergeData || !pMergeData->xResultSet.is()|| nSet < 0)
+ return FALSE;
+ sal_Bool bRet = FALSE;
+ sal_Int32 nAbsPos = -1;
+ if(pMergeData->bSelectionList)
+ {
+ if(pMergeData->xSelectionList->Count() > nSet)
+ {
+ nAbsPos = (sal_Int32)pMergeData->xSelectionList->GetObject(nSet);
+ }
+ }
+ else
+ nAbsPos = nSet;
+
+ if(nAbsPos >= 0)
+ {
+ bRet = lcl_MoveAbsolute(pMergeData, nAbsPos);
+ pMergeData->bEndOfDB = !bRet;
+ }
+ return bRet;
+}
+/* -----------------------------17.07.00 11:14--------------------------------
+
+ ---------------------------------------------------------------------------*/
+BOOL SwNewDBMgr::ShowInBeamer(const String& rDBName, const String& rTableName,
+ BYTE nType, const String& rStatement)
+{
+ DBG_ERROR("no beamer interface available!")
+ return FALSE;
+}
+/* -----------------------------17.07.00 14:50--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void lcl_ExtractMembers(const String& rDBName, String& sSource, String& sTable, String& sStatement)
+{
+ sSource = rDBName.GetToken(0, DB_DELIM);
+ sTable = rDBName.GetToken(0).GetToken(1, DB_DELIM);
+ sal_uInt16 nPos;
+ if ((nPos = rDBName.Search(';')) != STRING_NOTFOUND)
+ sStatement = rDBName.Copy(nPos + 1);
+}
+/* -----------------------------17.07.00 14:17--------------------------------
+
+ ---------------------------------------------------------------------------*/
+BOOL SwNewDBMgr::OpenDataSource(const String& rDataSource, const String& rTableOrQuery)
+{
+ String sDBName = rDataSource;
+ sDBName += DB_DELIM;
+ sDBName += rTableOrQuery;
+ SwDSParam* pFound = FindDSData(sDBName, TRUE);
+ pFound->bSelectionList = pFound->xSelectionList.Is() && pFound->xSelectionList->Count();
+ Reference< XDataSource> xSource;
+ if(pFound->xResultSet.is())
+ return TRUE;
+ pFound->xConnection = SwNewDBMgr::GetConnection(rDataSource, xSource );
+ if(pFound->xConnection.is())
+ {
+ try
+ {
+ pFound->bScrollable = pFound->xConnection->getMetaData()
+ ->supportsResultSetType((sal_Int32)ResultSetType::SCROLL_INSENSITIVE);
+ pFound->xStatement = pFound->xConnection->createStatement();
+ pFound->xResultSet = pFound->xStatement->executeQuery( pFound->sStatement );
+
+ //after executeQuery the cursor must be positioned
+ if(pFound->bSelectionList)
+ {
+ if(pFound->bScrollable)
+ {
+ pFound->bEndOfDB = !pMergeData->xResultSet->absolute(
+ (ULONG)pFound->xSelectionList->GetObject( 0 ) );
+ }
+ else
+ {
+ ULONG nPos = (ULONG)pFound->xSelectionList->GetObject( 0 );
+ while(nPos > 0 && !pFound->bEndOfDB)
+ {
+ pFound->bEndOfDB |= !pFound->xResultSet->next();
+ nPos--;
+ }
+ }
+ if(1 == pFound->xSelectionList->Count())
+ pFound->bEndOfDB = TRUE;
+ }
+ else
+ {
+ pFound->bEndOfDB = !pMergeData->xResultSet->next();
+ ++pMergeData->nSelectionIndex;
+ }
+ }
+ catch(...)
+ {
+ pFound->xResultSet = 0;
+ pFound->xStatement = 0;
+ pFound->xConnection = 0;
+ }
+ }
+ return pFound->xResultSet.is();
+}
+/* -----------------------------17.07.00 15:55--------------------------------
+
+ ---------------------------------------------------------------------------*/
+sal_uInt32 SwNewDBMgr::GetSelectedRecordId(const String& rDataSource, const String& rTableOrQuery)
+{
+ sal_uInt32 nRet = -1;
+ //check for merge data source first
+ if(pMergeData && rDataSource == pMergeData->sDataSource &&
+ rTableOrQuery == pMergeData->sTableOrQuery &&
+ pMergeData->xResultSet.is())
+ nRet = GetSelectedRecordId();
+ else
+ {
+ String sDBName(rDataSource);
+ sDBName += DB_DELIM;
+ sDBName += rTableOrQuery;
+ SwDSParam* pFound = SwNewDBMgr::FindDSData(sDBName, FALSE);
+ if(pFound && pFound->xResultSet.is())
+ {
+ try
+ {
+ nRet = pFound->xResultSet->getRow();
+ }
+ catch(...){}
+ }
+ }
+ return nRet;
+}
+
+/* -----------------------------17.07.00 14:18--------------------------------
+ close all data sources - after fields were updated
+ ---------------------------------------------------------------------------*/
+void SwNewDBMgr::CloseAll(BOOL bIncludingMerge)
+{
+ for(USHORT nPos = 0; nPos < aDataSourceParams.Count(); nPos++)
+ {
+ SwDSParam* pParam = aDataSourceParams[nPos];
+ if(bIncludingMerge || pParam != pMergeData)
+ {
+ pParam->xResultSet = 0;
+ pParam->xStatement = 0;
+ pParam->xConnection = 0;
+ }
+ }
+}
+/* -----------------------------17.07.00 14:54--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwDSParam* SwNewDBMgr::FindDSData(const String& rDBName, BOOL bCreate)
+{
+ String sSource;
+ String sTable;
+ String sStatement;
+ lcl_ExtractMembers(rDBName, sSource, sTable, sStatement);
+ SwDSParam* pFound = 0;
+
+ for(USHORT nPos = 0; nPos < aDataSourceParams.Count(); nPos++)
+ {
+ SwDSParam* pParam = aDataSourceParams[nPos];
+ if(sSource == pParam->sDataSource &&
+ sTable == pParam->sTableOrQuery)
+ {
+ pFound = pParam;
+ break;
+ }
+ }
+ if(bCreate)
+ {
+ if(!pFound)
+ {
+ pFound = new SwDSParam(sSource, sTable, SW_DB_SELECT_UNKNOWN, sStatement);
+ aDataSourceParams.Insert(pFound, aDataSourceParams.Count());
+ }
+ else
+ pFound->sStatement = sStatement;
+ }
+ return pFound;
+}
+/* -----------------------------17.07.00 14:31--------------------------------
+ rDBName: <Source> + DB_DELIM + <Table>; + <Statement>
+ ---------------------------------------------------------------------------*/
+void SwNewDBMgr::AddDSData(const String& rDBName, long nSelStart, long nSelEnd)
+{
+ SwDSParam* pFound = FindDSData(rDBName, TRUE);
+ if(pFound->xSelectionList.Is())
+ pFound->xSelectionList->Clear();
+ else
+ pFound->xSelectionList = new SbaSelectionList;
+ if (nSelStart > 0)
+ {
+ if (nSelEnd < nSelStart)
+ {
+ sal_uInt32 nZw = nSelEnd;
+ nSelEnd = nSelStart;
+ nSelStart = nZw;
+ }
+
+ for (long i = nSelStart; i <= nSelEnd; i++)
+ pFound->xSelectionList->Insert((void*)i , LIST_APPEND);
+ }
+}
+/* -----------------------------17.07.00 14:31--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwNewDBMgr::GetDSSelection(const String& rDBDesc, long& rSelStart, long& rSelEnd)
+{
+ SwDSParam* pFound = FindDSData(rDBDesc, FALSE);
+ if(!pFound || !pFound->xSelectionList.Is() || !pFound->xSelectionList->Count())
+ rSelStart = -1L;
+ else
+ {
+ if(pFound->xSelectionList->Count())
+ {
+ rSelStart = (sal_uInt32)pFound->xSelectionList->GetObject(0);
+ for (sal_uInt32 i = 1; i < pFound->xSelectionList->Count(); i++)
+ {
+ long nPrev = (sal_uInt32)pFound->xSelectionList->GetObject(i - 1);
+ long nNow = (sal_uInt32)pFound->xSelectionList->GetObject(i);
+
+ if (nNow - nPrev > 1)
+ {
+ rSelEnd = nPrev;
+ return;
+ }
+ }
+ rSelEnd = (sal_uInt32)pFound->xSelectionList->GetObject(i - 1);
+ }
+ }
+}
+/* -----------------------------17.07.00 14:34--------------------------------
+
+ ---------------------------------------------------------------------------*/
+const String& SwNewDBMgr::GetAddressDBName()
+{
+ DBG_ERROR("no address data base selection available")
+ return aEmptyStr;
+}
+/* -----------------------------18.07.00 13:13--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Sequence<OUString> SwNewDBMgr::GetExistingDatabaseNames()
+{
+ Reference<XNameAccess> xDBContext;
+ Reference< XMultiServiceFactory > xMgr( ::utl::getProcessServiceFactory() );
+ if( xMgr.is() )
+ {
+ Reference<XInterface> xInstance = xMgr->createInstance( C2U( "com.sun.star.sdb.DatabaseContext" ));
+ xDBContext = Reference<XNameAccess>(xInstance, UNO_QUERY) ;
+ }
+ if(xDBContext.is())
+ {
+ return xDBContext->getElementNames();
+ }
+ return Sequence<OUString>();
+}
+#endif //REPLACE_OFADBMGR
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.372 2000/09/18 16:05:18 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.371 2000/08/08 10:10:39 os
+ ucb transfer command used
+
+ Revision 1.370 2000/07/18 12:50:07 os
+ replace ofadbmgr
+
+ Revision 1.369 2000/07/07 15:25:43 os
+ replace ofadbmgr
+
+ Revision 1.368 2000/07/06 07:59:10 os
+ replace ofadbmgr
+
+ Revision 1.367 2000/07/05 08:23:06 os
+ Replace ofadbmgr
+
+ Revision 1.366 2000/06/26 13:18:45 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.365 2000/06/13 09:57:36 os
+ using UCB
+
+ Revision 1.364 2000/06/08 09:46:48 os
+ ContentBroker not in SwModule
+
+ Revision 1.363 2000/06/07 13:26:07 os
+ using UCB
+
+ Revision 1.362 2000/05/23 18:11:05 jp
+ Bugfixes for Unicode
+
+ Revision 1.361 2000/04/17 10:01:56 os
+ #74698# detect synchronized documents with an additional DBNextSet - field
+
+ Revision 1.360 2000/04/11 08:03:52 os
+ UNICODE
+
+ Revision 1.359 2000/02/11 14:44:23 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.358 2000/01/06 18:20:27 jp
+ Bug #71413#: MergeMailFiles: HandleErrors, created filenames starts with 1
+
+ Revision 1.357 2000/01/06 07:31:29 os
+ #71436# mail merge dialog: execute via status method disposed
+
+ Revision 1.356 1999/12/22 15:57:02 jp
+ Bug #71238#: MergePrint - behind the first call erase the JobName
+
+ Revision 1.355 1999/12/14 14:35:04 jp
+ Bug #69595#: print can create single Jobs
+
+ Revision 1.354 1999/11/23 11:20:55 os
+ comment
+
+ Revision 1.353 1999/11/18 21:02:54 jp
+ for Bug #68744#: new: IsCaseSensitive
+
+
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/dbui/dbtree.cxx b/sw/source/ui/dbui/dbtree.cxx
new file mode 100644
index 000000000000..75c7ef3fd41e
--- /dev/null
+++ b/sw/source/ui/dbui/dbtree.cxx
@@ -0,0 +1,833 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbtree.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ---------------------------------------------------------------
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SOT_FORMATS_HXX
+#include <sot/formats.hxx>
+#endif
+
+#ifdef REPLACE_OFADBMGR
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XDATASOURCE_HPP_
+#include <com/sun/star/sdbc/XDataSource.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XTABLESSUPPLIER_HPP_
+#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XCOLUMNSSUPPLIER_HPP_
+#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XQUERIESSUPPLIER_HPP_
+#include <com/sun/star/sdb/XQueriesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XDATABASEACCESS_HPP_
+#include <com/sun/star/sdb/XDatabaseAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+
+#else
+
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SBAOBJ_HXX //autogen
+#include <offmgr/sbaobj.hxx>
+#endif
+#ifndef _SBA_SBADB_HXX //autogen
+#include <offmgr/sbadb.hxx>
+#endif
+#ifndef _SBAITEMS_HRC
+#include <offmgr/sbaitems.hrc>
+#endif
+#ifndef _SBAITEMS_HXX
+#include <offmgr/sbaitems.hxx>
+#endif
+
+#endif //REPLACE_OFADBMGR
+
+#ifndef _DRAG_HXX //autogen
+#include <vcl/drag.hxx>
+#endif
+
+#include "helpid.h"
+#include "dbmgr.hxx"
+#include "swmodule.hxx"
+#include "view.hxx"
+#include "wrtsh.hxx"
+
+#include "dbui.hrc"
+#include "dbtree.hxx"
+
+#ifdef REPLACE_OFADBMGR
+using namespace rtl;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::container;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::sdb;
+using namespace com::sun::star::sdbc;
+using namespace com::sun::star::sdbcx;
+using namespace com::sun::star::beans;
+#endif
+
+#define C2U(cChar) rtl::OUString::createFromAscii(cChar)
+// STATIC DATA -----------------------------------------------------------
+
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+SwDBTreeList::SwDBTreeList(Window *pParent, const ResId& rResId, const String& rDefDBName, const BOOL bShowCol):
+
+ SvTreeListBox (pParent, rResId),
+
+ aRootClosed (SW_RES(BMP_ROOT_CLOSED)),
+ aRootOpened (SW_RES(BMP_ROOT_OPENED)),
+ aDBBMP (SW_RES(BMP_DB)),
+ aTableBMP (SW_RES(BMP_TABLE)),
+ aQueryBMP (SW_RES(BMP_QUERY)),
+
+ sDefDBName (rDefDBName),
+ bShowColumns (bShowCol),
+ bInitialized (FALSE)
+{
+#ifdef REPLACE_OFADBMGR
+ Reference< XMultiServiceFactory > xMgr( ::utl::getProcessServiceFactory() );
+ if( xMgr.is() )
+ {
+ Reference<XInterface> xInstance = xMgr->createInstance( C2U( "com.sun.star.sdb.DatabaseContext" ));
+ xDBContext = Reference<XNameAccess>(xInstance, UNO_QUERY) ;
+ }
+ DBG_ASSERT(xDBContext.is(), "com.sun.star.sdb.DataBaseContext: service not available")
+#endif
+
+ SetHelpId(HID_DB_SELECTION_TLB);
+
+ if (IsVisible())
+ InitTreeList();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+ SwDBTreeList::~SwDBTreeList()
+{
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+void SwDBTreeList::InitTreeList()
+{
+#ifdef REPLACE_OFADBMGR
+ if(!xDBContext.is())
+ return;
+#endif
+ SetSelectionMode(SINGLE_SELECTION);
+ SetWindowBits(WB_HASLINES|WB_CLIPCHILDREN|WB_SORT|WB_HASBUTTONS|WB_HASBUTTONSATROOT|WB_HSCROLL);
+ // Font nicht setzen, damit der Font des Controls uebernommen wird!
+ SetSpaceBetweenEntries(0);
+ SetNodeBitmaps( aRootClosed, aRootOpened );
+
+ SetDragDropMode(SV_DRAGDROP_APP_COPY);
+
+
+ GetModel()->SetCompareHdl(LINK(this, SwDBTreeList, DBCompare));
+
+#ifdef REPLACE_OFADBMGR
+ Sequence<OUString> aDBNames = xDBContext->getElementNames();
+ const OUString* pDBNames = aDBNames.getConstArray();
+ long nCount = aDBNames.getLength();
+
+ for(long i = 0; i < nCount; i++)
+ {
+ String sDBName(pDBNames[i]);
+ InsertEntry(sDBName, aDBBMP, aDBBMP, NULL, TRUE);
+ }
+ String sDBName(sDefDBName.GetToken(0, DB_DELIM));
+ String sTableName(sDefDBName.GetToken(1, DB_DELIM));
+ String sColumnName(sDefDBName.GetToken(2, DB_DELIM));
+ Select(sDBName, sTableName, sColumnName);
+
+#else
+ OfficeApplication* pOffApp = OFF_APP();
+ SbaObject* pSbaObject = pOffApp->GetSbaObject();
+ String sDBNames = pSbaObject->GetDatabaseNames();
+ USHORT nCount = sDBNames.GetTokenCount();
+
+ for (USHORT i = 0; i < nCount; i++)
+ {
+ String sDBName(sDBNames.GetToken(i));
+ InsertEntry(sDBName, aDBBMP, aDBBMP, NULL, TRUE);
+ }
+ Select(sDefDBName);
+#endif
+
+ bInitialized = TRUE;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwDBTreeList::ShowColumns(BOOL bShowCol)
+{
+ if (bShowCol != bShowColumns)
+ {
+ bShowColumns = bShowCol;
+#ifdef REPLACE_OFADBMGR
+ String sTableName, sColumnName;
+ String sDBName(GetDBName(sTableName, sColumnName));
+#else
+ String sDBName(GetDBName());
+#endif
+
+ SetUpdateMode(FALSE);
+
+ SvLBoxEntry* pEntry = First();
+
+ while (pEntry)
+ {
+ pEntry = (SvLBoxEntry*)GetRootLevelParent( pEntry );
+ Collapse(pEntry); // zuklappen
+
+ SvLBoxEntry* pChild;
+ while ((pChild = FirstChild(pEntry)) != 0L)
+ GetModel()->Remove(pChild);
+
+ pEntry = Next(pEntry);
+ }
+
+ if (sDBName.Len())
+ {
+#ifdef REPLACE_OFADBMGR
+ Select(sDBName, sTableName, sColumnName); // force RequestingChilds
+#else
+ Select(sDBName); // RequestingChilds erzwingen
+#endif
+ }
+ SetUpdateMode(TRUE);
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwDBTreeList::RequestingChilds(SvLBoxEntry* pParent)
+{
+ if (!pParent->HasChilds())
+ {
+#ifdef REPLACE_OFADBMGR
+
+ if (GetParent(pParent)) // column names
+ {
+
+ String sSourceName = GetEntryText(GetParent(pParent));
+ String sTableName = GetEntryText(pParent);
+
+ if(!xDBContext->hasByName(sSourceName))
+ return;
+ Any aDBSource = xDBContext->getByName(sSourceName);
+ Reference<XDataSource>* pxSource = (Reference<XDataSource>*)aDBSource.getValue();
+ BOOL bTable = pParent->GetUserData != 0;
+ Reference<XConnection> xConnection;
+ try
+ {
+ OUString sDummy;
+ xConnection = (*pxSource)->getConnection(sDummy, sDummy);
+ }
+ catch(...) {}
+ Reference<XColumnsSupplier> xColsSupplier;
+ if(bTable)
+ {
+ Reference<XTablesSupplier> xTSupplier = Reference<XTablesSupplier>(xConnection, UNO_QUERY);
+ if(xTSupplier.is())
+ {
+ Reference<XNameAccess> xTbls = xTSupplier->getTables();
+ DBG_ASSERT(xTbls->hasByName(sTableName), "table not available anymore?")
+ try
+ {
+ Any aTable = xTbls->getByName(sTableName);
+ Reference<XPropertySet> xPropSet = *(Reference<XPropertySet>*)aTable.getValue();
+ xColsSupplier = Reference<XColumnsSupplier>(xPropSet, UNO_QUERY);
+ }
+ catch(...){}
+ }
+ }
+ else
+ {
+ Reference<XQueriesSupplier> xQSupplier = Reference<XQueriesSupplier>(xConnection, UNO_QUERY);
+ if(xQSupplier.is())
+ {
+ Reference<XNameAccess> xQueries = xQSupplier->getQueries();
+ DBG_ASSERT(xQueries->hasByName(sTableName), "table not available anymore?")
+ try
+ {
+ Any aQuery = xQueries->getByName(sTableName);
+ Reference<XPropertySet> xPropSet = *(Reference<XPropertySet>*)aQuery.getValue();
+ xColsSupplier = Reference<XColumnsSupplier>(xPropSet, UNO_QUERY);
+ }
+ catch(...){}
+ }
+ }
+
+ if(xColsSupplier.is())
+ {
+ Reference <XNameAccess> xCols = xColsSupplier->getColumns();
+ Sequence<OUString> aColNames = xCols->getElementNames();
+ const OUString* pColNames = aColNames.getConstArray();
+ long nCount = aColNames.getLength();
+ for (long i = 0; i < nCount; i++)
+ {
+ String sName = pColNames[i];
+ if(bTable)
+ InsertEntry(sName, pParent);
+ else
+ InsertEntry(sName, pParent);
+ }
+ }
+ }
+ else // Tabellennamen
+ {
+ String sSourceName = GetEntryText(pParent);
+ if(!xDBContext->hasByName(sSourceName))
+ return;
+ Any aDBSource = xDBContext->getByName(sSourceName);
+ Reference<XDataSource>* pxSource = (Reference<XDataSource>*)aDBSource.getValue();
+
+ Reference<XConnection> xConnection;
+ try
+ {
+ OUString sDummy;
+ xConnection = (*pxSource)->getConnection(sDummy, sDummy);
+ }
+ catch(...) {}
+// SbaDatabaseRef pConnection = pSbaObject->GetDatabase(sDBName, TRUE);
+ if (xConnection.is())
+ {
+ Reference<XTablesSupplier> xTSupplier = Reference<XTablesSupplier>(xConnection, UNO_QUERY);
+ if(xTSupplier.is())
+ {
+ Reference<XNameAccess> xTbls = xTSupplier->getTables();
+ Sequence<OUString> aTblNames = xTbls->getElementNames();
+ String sTableName;
+ long nCount = aTblNames.getLength();
+ const OUString* pTblNames = aTblNames.getConstArray();
+ for (long i = 0; i < nCount; i++)
+ {
+ sTableName = pTblNames[i];
+ SvLBoxEntry* pTableEntry = InsertEntry(sTableName, aTableBMP, aTableBMP, pParent, bShowColumns);
+ //to discriminate between queries and tables the user data of table entries is set
+ pTableEntry->SetUserData((void*)1);
+ }
+ }
+
+ Reference<XQueriesSupplier> xQSupplier = Reference<XQueriesSupplier>(xConnection, UNO_QUERY);
+ if(xQSupplier.is())
+ {
+ Reference<XNameAccess> xQueries = xQSupplier->getQueries();
+ Sequence<OUString> aQueryNames = xQueries->getElementNames();
+ String sQueryName;
+ long nCount = aQueryNames.getLength();
+ const OUString* pQueryNames = aQueryNames.getConstArray();
+ for (long i = 0; i < nCount; i++)
+ {
+ sQueryName = pQueryNames[i];
+ InsertEntry(sQueryName, aQueryBMP, aQueryBMP, pParent, bShowColumns);
+ }
+ }
+ }
+ }
+#else
+ SbaObject* pSbaObject = OFF_APP()->GetSbaObject();
+ if (GetParent(pParent)) // Spaltennamen
+ {
+ SwWrtShell *pSh = ::GetActiveView()->GetWrtShellPtr();
+ SwNewDBMgr *pMgr = pSh->GetNewDBMgr();
+
+ String sDBName = GetEntryText(GetParent(pParent));
+ sDBName += DB_DELIM;
+ sDBName += GetEntryText(pParent);
+
+ if (!sDBName.Len() || (!pMgr->IsDBOpen(DBMGR_STD, sDBName) && !pMgr->OpenDB(DBMGR_STD, sDBName, TRUE)))
+ return;
+
+ SbaDBDataDefRef aDBDef = pMgr->OpenColumnNames(DBMGR_STD);
+
+ if (aDBDef.Is())
+ {
+ const SbaColumnList& rCols = aDBDef->GetOriginalColumns();
+
+ for (USHORT i = 1; i <= rCols.Count(); i++)
+ {
+ const SbaNameItem* pNameItem = (const SbaNameItem*)&rCols.GetObject(i-1)->Get(SBA_DEF_FLTNAME);
+ InsertEntry(pNameItem->GetValue(), pParent);
+ }
+ }
+ pMgr->CloseAll(DBMGR_STD);
+ }
+ else // Tabellennamen
+ {
+ String sDBName = GetEntryText(pParent);
+
+ SbaDatabaseRef pConnection = pSbaObject->GetDatabase(sDBName, TRUE);
+ if (pConnection.Is())
+ {
+ String sTableName;
+
+ USHORT nCount = pConnection->GetObjectCount(dbTable);
+
+ for (USHORT i = 0; i < nCount; i++)
+ {
+ sTableName = pConnection->GetObjectName(dbTable, i);
+ InsertEntry(sTableName, aTableBMP, aTableBMP, pParent, bShowColumns);
+ }
+
+ nCount = pConnection->GetObjectCount(dbQuery);
+
+ for (i = 0; i < nCount; i++)
+ {
+ sTableName = pConnection->GetObjectName(dbQuery, i);
+ InsertEntry(sTableName, aQueryBMP, aQueryBMP, pParent, bShowColumns);
+ }
+ }
+ }
+#endif
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwDBTreeList, DBCompare, SvSortData*, pData )
+{
+ SvLBoxEntry* pRight = (SvLBoxEntry*)(pData->pRight );
+
+ if (GetParent(pRight) && GetParent(GetParent(pRight)))
+ return COMPARE_GREATER; // Spaltennamen nicht sortieren
+
+ return DefaultCompare(pData); // Sonst Basisklasse rufen
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+#ifdef REPLACE_OFADBMGR
+String SwDBTreeList::GetDBName(String& rTableName, String& rColumnName, BOOL* pbIsTable)
+#else
+String SwDBTreeList::GetDBName() const
+#endif
+{
+ String sDBName;
+#ifdef REPLACE_OFADBMGR
+#else
+ String sColumnName;
+#endif
+ SvLBoxEntry* pEntry = FirstSelected();
+
+ if (pEntry && GetParent(pEntry))
+ {
+ if (GetParent(GetParent(pEntry)))
+ {
+#ifdef REPLACE_OFADBMGR
+ rColumnName = GetEntryText(pEntry);
+#else
+ sColumnName = GetEntryText(pEntry);
+#endif
+ pEntry = GetParent(pEntry); // Spaltenname war selektiert
+ }
+ sDBName = GetEntryText(GetParent(pEntry));
+#ifdef REPLACE_OFADBMGR
+ if(pbIsTable)
+ {
+ *pbIsTable = pEntry->GetUserData() != 0;
+ }
+ rTableName = GetEntryText(pEntry);
+#else
+ sDBName += DB_DELIM;
+ sDBName += GetEntryText(pEntry);
+
+ if (sColumnName.Len())
+ {
+ sDBName += DB_DELIM;
+ sDBName += sColumnName;
+ }
+#endif
+ }
+ return sDBName;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Format: Datenbank.Tabelle
+------------------------------------------------------------------------*/
+
+
+#ifdef REPLACE_OFADBMGR
+void SwDBTreeList::Select(const String& rDBName, const String& rTableName, const String& rColumnName)
+#else
+void SwDBTreeList::Select(const String& rDataBaseName)
+#endif
+{
+#ifdef REPLACE_OFADBMGR
+#else
+ String rDBName(rDataBaseName.GetToken(0, DB_DELIM));
+ String rTableName(rDataBaseName.GetToken(1, DB_DELIM));
+ String rColumnName(rDataBaseName.GetToken(2, DB_DELIM));
+#endif
+ SvLBoxEntry* pParent;
+ SvLBoxEntry* pChild;
+ USHORT nParent = 0;
+ USHORT nChild = 0;
+
+ while ((pParent = GetEntry(nParent++)) != NULL)
+ {
+ if (rDBName == GetEntryText(pParent))
+ {
+ if (!pParent->HasChilds())
+ RequestingChilds(pParent);
+ while ((pChild = GetEntry(pParent, nChild++)) != NULL)
+ {
+ if (rTableName == GetEntryText(pChild))
+ {
+ pParent = pChild;
+
+ if (bShowColumns && rColumnName.Len())
+ {
+ nChild = 0;
+
+ if (!pParent->HasChilds())
+ RequestingChilds(pParent);
+
+ while ((pChild = GetEntry(pParent, nChild++)) != NULL)
+ if (rColumnName == GetEntryText(pChild))
+ break;
+ }
+ if (!pChild)
+ pChild = pParent;
+
+ MakeVisible(pChild);
+ SvTreeListBox::Select(pChild);
+ return;
+ }
+ }
+ }
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Initialisierung verz”gern
+------------------------------------------------------------------------*/
+
+void SwDBTreeList::Show()
+{
+ if (!bInitialized)
+ InitTreeList();
+
+ SvTreeListBox::Show();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwDBTreeList::Command( const CommandEvent& rCEvt )
+{
+ switch( rCEvt.GetCommand() )
+ {
+ case COMMAND_STARTDRAG:
+ StartExecuteDrag();
+ ExecuteDrag(Pointer(POINTER_MOVEDATA), Pointer(POINTER_COPYDATA),
+ Pointer(POINTER_LINKDATA), DRAG_COPYABLE | DRAG_LINKABLE);
+ break;
+ default:
+ SvTreeListBox::Command(rCEvt);
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwDBTreeList::StartExecuteDrag()
+{
+ DragServer::Clear();
+#ifdef REPLACE_OFADBMGR
+ String sTableName, sColumnName;
+ String sDBName(GetDBName(sTableName, sColumnName));
+ if(sDBName.Len())
+ {
+ if (sColumnName.Len())
+ {
+ String aCopyData = sDBName;
+ aCopyData += char(11);
+ aCopyData += sTableName;
+ aCopyData += char(11);
+ aCopyData += String(String::CreateFromAscii("0"));
+ aCopyData += char(11);
+ aCopyData += sColumnName;
+
+ // Datenbankfeld draggen
+ DragServer::CopyData(aCopyData.GetBuffer(), aCopyData.Len() + 1,
+ SOT_FORMATSTR_ID_SBA_FIELDDATAEXCHANGE);
+ }
+
+ sDBName += '.';
+ sDBName += sTableName;
+ if(sColumnName.Len())
+ {
+ sDBName += '.';
+ sDBName += sColumnName;
+ }
+ DragServer::CopyString(sDBName);
+ }
+#else
+ String sDBName(GetDBName());
+ if(sDBName.Len())
+ {
+ if (sDBName.GetTokenCount(DB_DELIM) > 2) // Spaltenname ist enthalten
+ {
+ String aCopyData = sDBName.GetToken(0, DB_DELIM);
+ aCopyData += char(11);
+ aCopyData += sDBName.GetToken(1, DB_DELIM);
+ aCopyData += char(11);
+ aCopyData += String(String::CreateFromAscii("0"));
+ aCopyData += char(11);
+ aCopyData += sDBName.GetToken(2, DB_DELIM);
+
+ // Datenbankfeld draggen
+ DragServer::CopyData(aCopyData.GetBuffer(), aCopyData.Len() + 1,
+ SOT_FORMATSTR_ID_SBA_FIELDDATAEXCHANGE);
+ }
+
+ USHORT nPos;
+ while ((nPos = sDBName.SearchAndReplace(DB_DELIM, '.')) != STRING_NOTFOUND);
+ DragServer::CopyString(sDBName);
+ }
+#endif
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+BOOL SwDBTreeList::QueryDrop( DropEvent& rEvt)
+{
+ return FALSE;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.41 2000/09/18 16:05:19 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.40 2000/06/26 13:31:03 os
+ new DataBase API
+
+ Revision 1.39 2000/04/11 08:03:52 os
+ UNICODE
+
+ Revision 1.38 2000/02/11 14:44:29 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.37 1999/11/09 16:54:18 os
+ #69090# default in ::Command
+
+ Revision 1.36 1999/01/20 16:00:04 AWO
+ #59398#FormatIds
+
+
+ Rev 1.35 20 Jan 1999 17:00:04 AWO
+ #59398#FormatIds
+
+ Rev 1.34 21 Aug 1998 12:59:04 OM
+ #55373# D&D von DB-Feldern
+
+ Rev 1.33 07 Mar 1998 13:30:14 OM
+ Alles bei Column-Umschaltung einklappen
+
+ Rev 1.32 27 Feb 1998 18:26:26 OM
+ Aufgeraeumt
+
+ Rev 1.31 03 Feb 1998 12:21:12 OM
+ #46621# HelpIDs fuer Feldbefehl-Dlg
+
+ Rev 1.30 06 Jan 1998 18:12:02 OM
+ Felbefehl-Dlg
+
+ Rev 1.29 05 Jan 1998 17:44:54 OM
+ DB-Feldbefehl bearbeiten
+
+ Rev 1.28 15 Dec 1997 11:32:08 OM
+ GetObjectName gefixt
+
+ Rev 1.27 12 Dec 1997 10:37:44 OM
+ GetObjectName angepasst
+
+ Rev 1.26 12 Dec 1997 10:11:02 OM
+ Spaltennamen nicht sortieren
+
+ Rev 1.25 11 Dec 1997 17:01:10 OM
+ Feldumstellung
+
+ Rev 1.24 19 Nov 1997 16:33:06 OM
+ Datenbank-TP Drag&Drop
+
+ Rev 1.23 18 Nov 1997 14:34:02 OM
+ Sba-Umstellung 372
+
+ Rev 1.22 18 Nov 1997 10:35:42 OM
+ Neuer Feldbefehldialog
+
+ Rev 1.21 17 Nov 1997 14:36:32 OM
+ Column-Darstellung an/abschaltbar
+
+ Rev 1.20 10 Nov 1997 10:48:56 TJ
+ GetTableName und GetQueryName durch GetObjectName ersetzt
+
+ Rev 1.19 06 Nov 1997 17:01:50 OM
+ #45188# Schriftgroesse in TreeListBox anders initialisieren
+
+ Rev 1.18 06 Nov 1997 13:01:26 OM
+ Geaenderte Datenbankauswahl
+
+ Rev 1.17 05 Nov 1997 17:02:12 OM
+ Spaltennamen anzeigen
+
+ Rev 1.16 14 Oct 1997 14:10:34 OM
+ Feldumstellung
+
+ Rev 1.15 02 Sep 1997 09:57:10 OM
+ SDB-Headeranpassung
+
+ Rev 1.14 01 Sep 1997 13:16:04 OS
+ DLL-Umstellung
+
+ Rev 1.13 25 Aug 1997 11:53:54 OS
+ 368-Changes SBA
+
+ Rev 1.12 06 Aug 1997 11:36:00 TRI
+ GetpApp statt pApp
+
+ Rev 1.11 14 Mar 1997 14:09:26 OM
+ Sortierte DB-Listboxen
+
+ Rev 1.10 11 Nov 1996 09:25:38 MA
+ ResMgr
+
+ Rev 1.9 14 Oct 1996 16:06:44 OM
+ Datenbankumstellung 341c
+
+ Rev 1.8 25 Sep 1996 14:10:44 OM
+ Neue Datenbanktrenner
+
+ Rev 1.7 03 Sep 1996 12:01:58 OM
+ #30967# Fehlendes SEXPORT
+
+ Rev 1.6 28 Aug 1996 09:18:04 OS
+ includes
+
+ Rev 1.5 14 Aug 1996 11:39:36 OM
+ RequestingChilds nur bei leerem Parent
+
+ Rev 1.4 08 Aug 1996 16:15:54 OM
+ Neue Segs
+
+ Rev 1.3 08 Aug 1996 16:15:14 OM
+ Tabellen nur on demand anfordern
+
+ Rev 1.2 05 Aug 1996 15:48:38 OM
+ Neue Segs
+
+ Rev 1.1 05 Aug 1996 15:47:52 OM
+ Datenbankumstellung
+
+ Rev 1.0 25 Jul 1996 16:35:50 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/dbui/dbui.cxx b/sw/source/ui/dbui/dbui.cxx
new file mode 100644
index 000000000000..46321b778011
--- /dev/null
+++ b/sw/source/ui/dbui/dbui.cxx
@@ -0,0 +1,216 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbui.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ---------------------------------------------------------------
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#include "wrtsh.hxx"
+
+
+#include "dbui.hrc"
+#include "dbui.hxx"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+#if 0
+SwDBSelect::SwDBSelect(Window *pParent, SwWrtShell *pSh, const String& rDefDBName):
+
+ SvxStandardDialog(pParent, SW_RES(DLG_DBSELECTION)),
+
+ aTree (this, SW_RES(TLB_DBLIST), rDefDBName),
+
+ aOkBTN (this, SW_RES(BTN_OK)),
+ aCancelBTN (this, SW_RES(BTN_CANCEL)),
+ aHelpBTN (this, SW_RES(BTN_HELP))
+{
+ FreeResource();
+
+ aTree.SetSelectHdl(LINK(this, SwDBSelect, TreeSelectHdl));
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+__EXPORT SwDBSelect::~SwDBSelect()
+{
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+void __EXPORT SwDBSelect::Apply()
+{
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+String SwDBSelect::GetDBName() const
+{
+ return aTree.GetDBName();
+}
+
+/*---------------------------------------------------------------------
+ Beschreibung:
+---------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwDBSelect, TreeSelectHdl, SvTreeListBox *, pBox )
+{
+ SvLBoxEntry* pEntry = pBox->GetCurEntry();
+ if (pEntry)
+ aOkBTN.Enable(aTree.GetParent(pEntry) != 0);
+ return 0;
+}
+#endif
+/*---------------------------------------------------------------------
+ Beschreibung:
+---------------------------------------------------------------------*/
+
+PrintMonitor::PrintMonitor( Window *pParent, BOOL bEMail )
+: ModelessDialog( pParent, SW_RES(DLG_PRINTMONITOR) ),
+ aDocName (this, SW_RES( FT_DOCNAME )),
+ aPrinting (this, SW_RES( bEMail ? FT_SENDING : FT_PRINTING )),
+ aPrinter (this, SW_RES( FT_PRINTER )),
+ aPrintInfo (this, SW_RES( FT_PRINTINFO )),
+ aCancel (this, SW_RES( PB_CANCELPRNMON ))
+{
+ if (bEMail)
+ {
+ SetText(SW_RES(STR_EMAILMON));
+ }
+ FreeResource();
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.15 2000/09/18 16:05:19 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.14 2000/06/26 13:31:03 os
+ new DataBase API
+
+ Revision 1.13 1999/03/08 08:56:26 MH
+ chg: header
+
+
+ Rev 1.12 08 Mar 1999 09:56:26 MH
+ chg: header
+
+ Rev 1.11 27 Oct 1998 12:17:08 OM
+ #58132# Progress fuer Serienmailings
+
+ Rev 1.10 09 Dec 1997 12:30:52 OM
+ #45200# Serienbrief: Speichern-Monitor
+
+ Rev 1.9 02 Sep 1997 09:57:12 OM
+ SDB-Headeranpassung
+
+ Rev 1.8 01 Sep 1997 13:16:04 OS
+ DLL-Umstellung
+
+ Rev 1.7 11 Nov 1996 09:25:38 MA
+ ResMgr
+
+ Rev 1.6 02 Oct 1996 18:00:56 MA
+ Umstellung Enable/Disable
+
+ Rev 1.5 28 Aug 1996 09:18:04 OS
+ includes
+
+ Rev 1.4 05 Aug 1996 15:47:52 OM
+ Datenbankumstellung
+
+ Rev 1.3 25 Jul 1996 16:36:26 OM
+ Eigene TreeListbox fuer Datenbankauswahl
+
+ Rev 1.2 23 Jul 1996 13:28:38 OM
+ Neue Segs
+
+ Rev 1.1 23 Jul 1996 13:26:08 OM
+ Datenbank und Tabelle auswaehlen
+
+ Rev 1.0 22 Jul 1996 11:01:52 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/dbui/dbui.src b/sw/source/ui/dbui/dbui.src
new file mode 100644
index 000000000000..cbaf59a62727
--- /dev/null
+++ b/sw/source/ui/dbui/dbui.src
@@ -0,0 +1,322 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbui.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ******************************************************************
+
+ // #include *****************************************************************
+#include "dbui.hrc"
+#include "helpid.h"
+ModalDialog DLG_DBSELECTION
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 168 , 132 ) ;
+ Text = "Datenbankauswahl" ;
+ Text [ ENGLISH ] = "Database Selection" ;
+ Moveable = TRUE ;
+ Control TLB_DBLIST
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 100 , 120 ) ;
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 112 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Disable = 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 ;
+ };
+ Text [ english_us ] = "Database Selection" ;
+ Text [ italian ] = "Scelta database" ;
+ Text [ spanish ] = "Seleccionar base de datos" ;
+ Text [ french ] = "Sélection d'une base de données" ;
+ Text [ dutch ] = "Selectie database" ;
+ Text [ swedish ] = "Databasurval" ;
+ Text [ danish ] = "Databaseudvalg" ;
+ Text [ portuguese_brazilian ] = "Datenbankauswahl" ;
+ Text [ portuguese ] = "Seleccionar base de dados" ;
+ Text[ chinese_simplified ] = "Ñ¡ÔñÊý¾Ý¿â";
+ Text[ russian ] = "Âûáîð áàçû äàííûõ";
+ Text[ polish ] = "Selekcja bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½‚Ì‘I‘ð";
+ Text[ chinese_traditional ] = "¿ï¾Ü¸ê®Æ®w";
+ Text[ arabic ] = "ÇÎÊíÇÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "ÅðéëïãÞ âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º ¼±ÅÃ";
+ Text[ turkish ] = "Veritabaný seçimi";
+ Text[ language_user1 ] = " ";
+};
+ // DLG_PRINTMONITOR ------------------------------------------------------
+ModelessDialog DLG_PRINTMONITOR
+{
+ HelpID = HID_MERGE_PRINTMONITOR ;
+ SVLOOK = TRUE ;
+ HIDE = TRUE ;
+ OUTPUTSIZE = TRUE ;
+ _WHMAPMODE = MAP_APPFONT ;
+ _WIDTH = 118 ;
+ _HEIGHT = 72 ;
+ MOVEABLE = TRUE ;
+ APP = FALSE ;
+ Text [ english ] = "Save Monitor" ;
+ Text = "Speichern-Monitor" ;
+ FixedText FT_DOCNAME
+ {
+ HIDE = FALSE ;
+ _XYMAPMODE = MAP_APPFONT ;
+ _X = 6 ;
+ _Y = 6 ;
+ _WHMAPMODE = MAP_APPFONT ;
+ _WIDTH = 100 ;
+ _HEIGHT = 8 ;
+ TEXT = "" ;
+ LEFT = FALSE ;
+ CENTER = TRUE ;
+ RIGHT = FALSE ;
+ };
+ FixedText FT_PRINTING
+ {
+ HIDE = FALSE ;
+ _XYMAPMODE = MAP_APPFONT ;
+ _X = 6 ;
+ _Y = 17 ;
+ _WHMAPMODE = MAP_APPFONT ;
+ _WIDTH = 100 ;
+ _HEIGHT = 8 ;
+ TEXT = "wird ausgegeben als" ;
+ TEXT [ English ] = "is being printed as" ;
+ LEFT = FALSE ;
+ CENTER = TRUE ;
+ RIGHT = FALSE ;
+ Text [ english_us ] = "is being printed on" ;
+ Text [ portuguese_brazilian ] = "está sendo impresso na" ;
+ Text [ swedish ] = "skrivs ut på" ;
+ Text [ danish ] = "udskrives som" ;
+ Text [ italian ] = "viene stampato su" ;
+ Text [ spanish ] = "se está imprimiendo en" ;
+ Text [ french ] = "en cours d'impression sur" ;
+ Text [ dutch ] = "wordt afgedrukt als" ;
+ Text [ portuguese ] = "está a ser impresso na" ;
+ Text[ chinese_simplified ] = "Êä³öÖÁ";
+ Text[ russian ] = "Áóäåò íàïå÷àòàíî êàê";
+ Text[ polish ] = "zostanie wydrukowany jako";
+ Text[ japanese ] = "ˆóü’†";
+ Text[ chinese_traditional ] = "¿é¥X¦Ü";
+ Text[ arabic ] = "íÊã ØÈÇÚÊå ßÜ";
+ Text[ greek ] = "åêôõðþíåôáé ùò";
+ Text[ korean ] = "Ãâ·Â Çü½Ä";
+ Text[ turkish ] = "Çýktý türü";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_SENDING
+ {
+ HIDE = FALSE ;
+ _XYMAPMODE = MAP_APPFONT ;
+ _X = 6 ;
+ _Y = 17 ;
+ _WHMAPMODE = MAP_APPFONT ;
+ _WIDTH = 100 ;
+ _HEIGHT = 8 ;
+ TEXT = "wird versandt an" ;
+ TEXT [ English ] = "is being send at" ;
+ LEFT = FALSE ;
+ CENTER = TRUE ;
+ RIGHT = FALSE ;
+ TEXT[ italian ] = "viene inviato a";
+ TEXT[ portuguese_brazilian ] = "is being send at";
+ TEXT[ portuguese ] = "está a ser enviado para";
+ TEXT[ danish ] = "bliver sendt til";
+ TEXT[ french ] = "est en cours d'envoi à";
+ TEXT[ swedish ] = "skickas till";
+ TEXT[ dutch ] = "wordt verzonden aan";
+ TEXT[ spanish ] = "se envía a";
+ TEXT[ english_us ] = "is being send to";
+ TEXT[ chinese_simplified ] = "¼Ä·¢¸ø";
+ TEXT[ russian ] = "Áóäåò îòïðàâëåíî";
+ TEXT[ polish ] = "zostanie przes³any do";
+ TEXT[ japanese ] = "ˆ¶æ‚É‘—M’†";
+ TEXT[ chinese_traditional ] = "±Hµoµ¹";
+ TEXT[ arabic ] = "íÊã ÅÑÓÇáå Åáì";
+ TEXT[ greek ] = "áðïóôÝëëåôáé ðñïò";
+ TEXT[ korean ] = "Àü¼Û ´ë»ó";
+ TEXT[ turkish ] = "Alýcý";
+ TEXT[ language_user1 ] = " ";
+ };
+ FixedText FT_PRINTER
+ {
+ HIDE = FALSE ;
+ _XYMAPMODE = MAP_APPFONT ;
+ _X = 6 ;
+ _Y = 28 ;
+ _WHMAPMODE = MAP_APPFONT ;
+ _WIDTH = 100 ;
+ _HEIGHT = 8 ;
+ TEXT = "" ;
+ LEFT = FALSE ;
+ CENTER = TRUE ;
+ RIGHT = FALSE ;
+ };
+ FixedText FT_PRINTINFO
+ {
+ HIDE = FALSE ;
+ _XYMAPMODE = MAP_APPFONT ;
+ _X = 6 ;
+ _Y = 39 ;
+ _WHMAPMODE = MAP_APPFONT ;
+ _WIDTH = 100 ;
+ _HEIGHT = 8 ;
+ TEXT = "" ;
+ LEFT = FALSE ;
+ CENTER = TRUE ;
+ RIGHT = FALSE ;
+ };
+ CancelButton PB_CANCELPRNMON
+ {
+ HIDE = FALSE ;
+ _XYMAPMODE = MAP_APPFONT ;
+ _X = 31 ;
+ _Y = 52 ;
+ _WHMAPMODE = MAP_APPFONT ;
+ _WIDTH = 50 ;
+ _HEIGHT = 14 ;
+ TABSTOP = TRUE ;
+ };
+ String STR_EMAILMON
+ {
+ Text [ english ] = "Send Monitor" ;
+ Text = "Versenden-Monitor" ;
+ Text[ italian ] = "Invia monitor";
+ Text[ portuguese_brazilian ] = "Send Monitor";
+ Text[ portuguese ] = "Enviar - Monitor";
+ Text[ danish ] = "Send-monitor";
+ Text[ french ] = "Moniteur d'envoi";
+ Text[ swedish ] = "Skicka monitor";
+ Text[ dutch ] = "Monitor verzenden";
+ Text[ spanish ] = "Enviar-Monitor";
+ Text[ english_us ] = "Send-Monitor";
+ Text[ chinese_simplified ] = "¼Ä·¢-¼àÊÓÆ÷";
+ Text[ russian ] = "Îòïðàâêà òåêóùåãî èçîáðàæåíèÿ";
+ Text[ polish ] = "Pokaz stanu przesy³ania";
+ Text[ japanese ] = "‘—MÓÆÀ°";
+ Text[ chinese_traditional ] = "±Hµo-ºÊµø¾¹";
+ Text[ arabic ] = "ãÑÇÞÈ ÇáÅÑÓÇá";
+ Text[ greek ] = "ÁðïóôïëÞ-Ïèüíç";
+ Text[ korean ] = "Àü¼Û ¸ð´ÏÅÍ";
+ Text[ turkish ] = "Gönderme ekraný";
+ Text[ language_user1 ] = " ";
+ };
+ Text [ portuguese ] = "Monitor de impressão" ;
+ Text [ english_us ] = "Print monitor" ;
+ Text [ portuguese_brazilian ] = "O monitor de impressão" ;
+ Text [ swedish ] = "Skriv ut skärmbild" ;
+ Text [ danish ] = "Gem-monitor" ;
+ Text [ italian ] = "Controllo stampa" ;
+ Text [ spanish ] = "Monitor de impresión" ;
+ Text [ french ] = "Moniteur d'impression" ;
+ Text [ dutch ] = "Opslaan-monitor" ;
+ Text[ chinese_simplified ] = "´òÓ¡¼àÊÓ";
+ Text[ russian ] = "Ñîõðàíåíèå òåêóùåãî èçîáðàæåíèÿ";
+ Text[ polish ] = "Pokaz stanu zapisu";
+ Text[ japanese ] = "ÒÓØ ÓÆÀ°";
+ Text[ chinese_traditional ] = "¦C¦LºÊµø";
+ Text[ arabic ] = "ãÑÇÞÈ ÇáÍÝÙ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "ÁðïèÞêåõóç-Ïèüíç";
+ Text[ korean ] = "ÀúÀå ¸ð´ÏÅÍ";
+ Text[ turkish ] = "Yazdýrma ekraný";
+};
+
+String STR_DB_EMAIL
+{
+ TEXT = "E-Mail" ;
+ TEXT [ English ] = "E-mail" ;
+ Text [ english_us ] = "E-mail" ;
+ Text[ italian ] = "eMail";
+ Text[ portuguese_brazilian ] = "E-mail";
+ Text[ portuguese ] = "E-mail";
+ Text[ danish ] = "E-mail";
+ Text[ french ] = "E-mail";
+ Text[ swedish ] = "E-post";
+ Text[ dutch ] = "E-mail";
+ Text[ spanish ] = "E-mail";
+ Text[ chinese_simplified ] = "µç×ÓÓʼþ";
+ Text[ russian ] = "Ýëåêòðîííàÿ ïî÷òà";
+ Text[ polish ] = "e-mail";
+ Text[ japanese ] = "E-mail";
+ Text[ chinese_traditional ] = "¹q¤l¶l¥ó";
+ Text[ arabic ] = "ÈÑíÏ ÅáßÊÑæäí";
+ Text[ greek ] = "E-mail";
+ Text[ korean ] = "ÀüÀÚ¿ìÆí";
+ Text[ turkish ] = "E-posta";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/dbui/makefile.mk b/sw/source/ui/dbui/makefile.mk
new file mode 100644
index 000000000000..07244f2e0cf4
--- /dev/null
+++ b/sw/source/ui/dbui/makefile.mk
@@ -0,0 +1,107 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=dbui
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ dbinsdlg.cxx \
+ dbmgr.cxx \
+ dbtree.cxx \
+ dbui.cxx
+
+SRCFILES = \
+ dbinsdlg.src \
+ dbtree.src \
+ dbui.src
+
+SLOFILES = \
+ $(SLO)$/dbinsdlg.obj \
+ $(SLO)$/dbmgr.obj \
+ $(SLO)$/dbtree.obj \
+ $(SLO)$/dbui.obj
+
+EXCEPTIONSFILES= \
+ $(SLO)$/dbinsdlg.obj \
+ $(SLO)$/dbmgr.obj \
+ $(SLO)$/dbtree.obj \
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/dialog/abstract.cxx b/sw/source/ui/dialog/abstract.cxx
new file mode 100644
index 000000000000..b9148833ff04
--- /dev/null
+++ b/sw/source/ui/dialog/abstract.cxx
@@ -0,0 +1,144 @@
+/*************************************************************************
+ *
+ * $RCSfile: abstract.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "swtypes.hxx"
+#include "hintids.hxx"
+
+#include "dialog.hrc"
+#include "abstract.hxx"
+#include "abstract.hrc"
+
+
+/*-----------------22.02.97 15.32-------------------
+
+--------------------------------------------------*/
+
+SwInsertAbstractDlg::SwInsertAbstractDlg( Window* pParent ) :
+ SfxModalDialog(pParent, SW_RES(DLG_INSERT_ABSTRACT)),
+ aGB (this, ResId(GB_1 )),
+ aParaFT (this, ResId(FT_PARA )),
+ aParaNF (this, ResId(NF_PARA )),
+ aLevelFT(this, ResId(FT_LEVEL )),
+ aLevelNF(this, ResId(NF_LEVEL )),
+ aDescFT (this, ResId(FT_DESC )),
+ aOkPB (this, ResId(PB_OK )),
+ aCancelPB (this, ResId(PB_CANCEL )),
+ aHelpPB (this, ResId(PB_HELP ))
+{
+ FreeResource();
+}
+
+/*-----------------22.02.97 15.32-------------------
+
+--------------------------------------------------*/
+
+SwInsertAbstractDlg::~SwInsertAbstractDlg()
+{
+}
+
+/*-----------------22.02.97 15.34-------------------
+
+--------------------------------------------------*/
+
+BYTE SwInsertAbstractDlg::GetLevel() const
+{
+ return aLevelNF.GetValue() - 1;
+}
+/*-----------------22.02.97 15.34-------------------
+
+--------------------------------------------------*/
+
+BYTE SwInsertAbstractDlg::GetPara() const
+{
+ return (BYTE) aParaNF.GetValue();
+}
+
+
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.4 2000/09/18 16:05:19 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.3 1997/11/03 12:12:26 MA
+ precomp entfernt
+
+
+ Rev 1.2 03 Nov 1997 13:12:26 MA
+ precomp entfernt
+
+ Rev 1.1 23 May 1997 10:09:12 OS
+ Ableitung von SfxModalDialog
+
+ Rev 1.0 22 Feb 1997 20:18:04 OS
+ Initial revision.
+
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/dialog/abstract.hrc b/sw/source/ui/dialog/abstract.hrc
new file mode 100644
index 000000000000..1a5f245f79c7
--- /dev/null
+++ b/sw/source/ui/dialog/abstract.hrc
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * $RCSfile: abstract.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 GB_1 1
+#define FT_PARA 2
+#define NF_PARA 3
+#define FT_LEVEL 4
+#define NF_LEVEL 5
+#define FT_DESC 6
+#define PB_OK 7
+#define PB_CANCEL 8
+#define PB_HELP 9
diff --git a/sw/source/ui/dialog/abstract.src b/sw/source/ui/dialog/abstract.src
new file mode 100644
index 000000000000..1a405c3cb931
--- /dev/null
+++ b/sw/source/ui/dialog/abstract.src
@@ -0,0 +1,258 @@
+/*************************************************************************
+ *
+ * $RCSfile: abstract.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "dialog.hrc"
+#include "helpid.h"
+#include "abstract.hrc"
+
+ModalDialog DLG_INSERT_ABSTRACT
+{
+ HelpID = HID_INSERT_ABSTRACT ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 239 , 68 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? AutoAbstract erzeugen : AutoAbstrakt erzeugen */
+ /* ### ACHTUNG: Neuer Text in Resource? AutoAbstract erzeugen : AutoAbstrakt erzeugen */
+ /* ### ACHTUNG: Neuer Text in Resource? AutoAbstract erzeugen : AutoAbstrakt erzeugen */
+ Text = "AutoAbstract erzeugen" ;
+ Text [ English ] = "Create abstract" ;
+ Moveable = TRUE ;
+ GroupBox GB_1
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 174 , 62 ) ;
+ Text = "Eigenschaften" ;
+ Text [ English ] = "Properties" ;
+ 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 [ portuguese ] = "Propriedades" ;
+ 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";
+ };
+ FixedText FT_LEVEL
+ {
+ Pos = MAP_APPFONT ( 12 , 12 ) ;
+ Size = MAP_APPFONT ( 120 , 8 ) ;
+ Text = "Einbezogene Kapitelebenen" ;
+ Text [ English ] = "Included outline levels" ;
+ Text [ english_us ] = "Included outline levels" ;
+ Text [ portuguese_brazilian ] = "Einbezogene Kapitelebenen" ;
+ Text [ swedish ] = "Inkluderade kapitelnivåer" ;
+ Text [ danish ] = "Inkluderede kapitelniveauer" ;
+ Text [ italian ] = "Livelli di capitolo inclusi" ;
+ Text [ spanish ] = "Niveles del capítulo incluidos" ;
+ Text [ french ] = "Niveaux de plan à inclure" ;
+ Text [ dutch ] = "Aantal overzichtsniveau's" ;
+ Text [ portuguese ] = "Níveis de capítulo incluídos" ;
+ Text[ chinese_simplified ] = "°üº¬µÄÕ½ڴó¸Ù¼¶";
+ Text[ russian ] = "Âêëþ÷åííûå óðîâíè ðàçäåëîâ";
+ Text[ polish ] = "W³¹cznie z poziomami rozdzia³u";
+ Text[ japanese ] = "ŠY“–‚·‚é±³Äײ݂ÌÚÍÞÙ";
+ Text[ chinese_traditional ] = "¥]§tªº³¹¸`¤jºõ";
+ Text[ arabic ] = "ãÓÊæíÇÊ ÇáÝÕá ÇáãÖãäÉ";
+ Text[ dutch ] = "Aantal overzichtsniveau's";
+ Text[ chinese_simplified ] = "°üº¬µÄÕ½ڴó¸Ù¼¶";
+ Text[ greek ] = "Óõìðåñéëáìâáíüìåíá åðßðåäá êåöáëáßùí";
+ Text[ korean ] = "°³¿ä¼öÁØÀÌ Æ÷ÇԵǾú½À´Ï´Ù.";
+ Text[ turkish ] = "Dahil edilen bölüm düzeyleri";
+ };
+ NumericField NF_LEVEL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 153 , 12 ) ;
+ Size = MAP_APPFONT ( 24 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 5 ;
+ Value = 3 ;
+ First = 1 ;
+ Last = 5 ;
+ };
+ FixedText FT_PARA
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 120 , 8 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Absätze je Kapitel : Absõtze je Kapitel */
+ Text = "Absätze je Kapitel" ;
+ Text [ English ] = "Paragraphs per Outline" ;
+ Text [ english_us ] = "Subpoints per level" ;
+ Text [ portuguese_brazilian ] = "Absätze je Kapitel" ;
+ Text [ swedish ] = "Stycken per kapitel" ;
+ Text [ danish ] = "Afsnit per kapitel" ;
+ Text [ italian ] = "Paragrafi per capitolo" ;
+ Text [ spanish ] = "Párrafos por capítulo" ;
+ Text [ french ] = "Nbre resp. de paragraphes" ;
+ Text [ dutch ] = "Alinea's per kop" ;
+ Text [ portuguese ] = "Parágrafos por capítulo" ;
+ Text[ chinese_simplified ] = "ÿÕ½ڰüº¬µÄ¶ÎÂä";
+ Text[ russian ] = "Àáçàöåâ â ãëàâå";
+ Text[ polish ] = "Akapity w rozdziale";
+ Text[ japanese ] = "Í‚²‚Æ‚Ì’i—Ž";
+ Text[ chinese_traditional ] = "¨C³¹¸`¥]§tªº¬q¸¨";
+ Text[ arabic ] = "ÝÞÑÇÊ Ýí ßá ÝÕá";
+ Text[ dutch ] = "Alinea's per kop";
+ Text[ chinese_simplified ] = "ÿÕ½ڰüº¬µÄ¶ÎÂä";
+ Text[ greek ] = "ÐáñÜãñáöïé áíÜ êåöÜëáéï";
+ Text[ korean ] = "·¹º§´ç ¼­ºêÆ÷ÀÎÆ®";
+ Text[ turkish ] = "Beher bölüm paragraf sayýsý";
+ };
+ NumericField NF_PARA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 153 , 27 ) ;
+ Size = MAP_APPFONT ( 24 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 5 ;
+ Value = 1 ;
+ First = 1 ;
+ Last = 5 ;
+ };
+ FixedText FT_DESC
+ {
+ Pos = MAP_APPFONT ( 12 , 43 ) ;
+ Size = MAP_APPFONT ( 165 , 16 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Im Abstrakt erscheint die ausgewählte Anzahl von Absätzen aus den einbezogenen Kapitelebenen. : Im Abstrakt erscheint die ausgewõhlte Anzahl von Absõtzen aus den einbezogenen Kapitelebenen. */
+ Text = "Im Abstrakt erscheint die ausgewählte Anzahl von Absätzen aus den einbezogenen Kapitelebenen." ;
+ Text [ English ] = "The selected number of paragraphs of the included outline levels will be used to create the summary." ;
+ WordBreak = TRUE ;
+ Text [ english_us ] = "The abstract contains the selected number of paragraphs from the included outline levels." ;
+ Text [ portuguese_brazilian ] = "Im Abstrakt erscheint die ausgewählte Anzahl von Absätzen aus den einbezogenen Kapitelebenen." ;
+ Text [ swedish ] = "Utdraget innehåller det utvalda antalet stycken från de inkluderade kapitelnivåerna." ;
+ Text [ danish ] = "Abstractet indeholder det valgte antal afsnit fra de inkluderede kapitelniveauer." ;
+ Text [ italian ] = "Il sunto contiene il numero di paragrafi scelto dai livelli di capitolo inclusi." ;
+ Text [ spanish ] = "En el extracto aparece la cantidad deseada de párrafos de los niveles de los capítulos incluidos." ;
+ Text [ french ] = "La synthèse reprendra, pour chaque niveau de plan inclus, le nombre de paragraphes indiqué." ;
+ Text [ dutch ] = "In het extract verschijnt het geselecteerde aantal alinea´s van de erbij betrokken overzichtsniveaus." ;
+ Text [ portuguese ] = "O Abstracto contém a quantidade de parágrafos seleccionada dos níveis de capítulos incluídos." ;
+ Text[ chinese_simplified ] = "´Ó°üÀ¨µÄÕ½ڼ¶ÖÐÑ¡³öµÄÒ»¶¨ÊýÄ¿µÄ¶ÎÂäÏÔʾÔÚÕªÒªÖС£";
+ Text[ russian ] = " Ïðîñìîòðå ïîÿâèòñÿ âûáðàííîå ÷èñëî àáçàöåâ èç âêëþ÷åííûõ óðîâíåé ãëàâ";
+ Text[ polish ] = "Abstrakt zawiera wybran¹ iloœæ akapitów z awieraj¹cych w³¹czone poziomy akapitu.";
+ Text[ japanese ] = "—v–ñ‚É‚ÍAŠY“–‚·‚é±³Äײ݂ÌÚÍÞÙ‚©‚ç‘I‘ð‚³‚ê‚½’i—Ž‚Ì”‚ª•\\Ž¦‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "ºK­n¼Ò¦¡Åã¥Ü¬ÛÃö³¹¸`¤¤¿ï¨úªº¤@©w¼Æ¥Øªº¬q¸¨";
+ Text[ arabic ] = "ÓæÝ íÙåÑ Ýí ÇáÊáÎíÕ ÚÏÏ ÇáÝÞÑÇÊ ÇáÊí Êã ÊÍÏíÏåÇ ãä Èíä ãÓÊæíÇÊ ÇáÝÕæá ÇáãÖãäÉ.";
+ Text[ dutch ] = "In het extract verschijnt het geselecteerde aantal alinea´s van de erbij betrokken overzichtsniveaus.";
+ Text[ chinese_simplified ] = "´Ó°üÀ¨µÄÕ½ڼ¶ÖÐÑ¡³öµÄÒ»¶¨ÊýÄ¿µÄ¶ÎÂäÏÔʾÔÚÕªÒªÖС£";
+ Text[ greek ] = "Óôï Abstract åìöáíßæåôáé ôï åðéëåãìÝíï ðëÞèïò ðáñáãñÜöùí áðü ôá óõìðåñéëáìâáíüìåíá åðßðåäá êåöáëáßùí.";
+ Text[ korean ] = "Ã߻󿡼­´Â ¿¬°üµÈ °³¿ä ·¹º§¿¡¼­ ¼±ÅÃÇÑ ´Ü¶ôÀÇ ¼ö°¡ ³ªÅ¸³³´Ï´Ù.";
+ Text[ turkish ] = "Özet içinde, dahil edilen bölüm düzeylerinden seçilen paragraflar bulunuyor.";
+ };
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 186 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 186 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 186 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ Text [ english_us ] = "Create AutoAbstract" ;
+ Text [ portuguese_brazilian ] = "AutoAbstrakt erzeugen" ;
+ Text [ swedish ] = "Skapa AutoUtdrag" ;
+ Text [ danish ] = "Opret AutoAbstract" ;
+ Text [ italian ] = "Crea un sommario automatico" ;
+ Text [ spanish ] = "Crear abstracto automático" ;
+ Text [ french ] = "Création d'une AutoSynthèse" ;
+ Text [ dutch ] = "AutoExtract maken" ;
+ Text [ portuguese ] = "Criar AutoAbstracto" ;
+ Text[ chinese_simplified ] = "Éú³É×Ô¶¯ÕªÒª";
+ Text[ russian ] = "Ñîçäàòü Àâòîðåôåðàò";
+ Text[ polish ] = "Utwórz AutoAbstract ";
+ Text[ japanese ] = "Ž©“®’Šo‚Ìì¬";
+ Text[ chinese_traditional ] = "¥Í¦¨¦Û°ÊºK­n";
+ Text[ arabic ] = "ÅäÔÇÁ ÊáÎíÕ ÊáÞÇÆí";
+ Text[ dutch ] = "AutoExtract maken";
+ Text[ chinese_simplified ] = "Éú³É×Ô¶¯ÕªÒª";
+ Text[ greek ] = "Äçìéïõñãßá AutoAbstract";
+ Text[ korean ] = "ÀÚµ¿ Ãß»ó ¸¸µé±â";
+ Text[ turkish ] = "Otomatik özet oluþtur";
+};
diff --git a/sw/source/ui/dialog/addrdlg.cxx b/sw/source/ui/dialog/addrdlg.cxx
new file mode 100644
index 000000000000..ff7b1a4affae
--- /dev/null
+++ b/sw/source/ui/dialog/addrdlg.cxx
@@ -0,0 +1,175 @@
+/*************************************************************************
+ *
+ * $RCSfile: addrdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVX_OPTGENRL_HXX //autogen
+#include <svx/optgenrl.hxx>
+#endif
+
+#include "addrdlg.hxx"
+
+
+/****************************************************************************
+Ctor
+****************************************************************************/
+
+
+SwAddrDlg::SwAddrDlg(Window* pParent, SfxItemSet& rSet ) :
+
+ SfxSingleTabDialog(pParent, rSet, 0)
+
+{
+ // TabPage erzeugen
+ SvxGeneralTabPage* pPage = (SvxGeneralTabPage*) SvxGeneralTabPage::Create(this, rSet);
+ SetTabPage(pPage);
+}
+
+/****************************************************************************
+Dtor
+****************************************************************************/
+
+
+__EXPORT SwAddrDlg::~SwAddrDlg()
+{
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/ui/dialog/addrdlg.cxx,v 1.1.1.1 2000-09-18 17:14:34 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.10 2000/09/18 16:05:20 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.9 1997/11/25 09:43:20 MA
+ includes
+
+
+ Rev 1.8 25 Nov 1997 10:43:20 MA
+ includes
+
+ Rev 1.7 03 Nov 1997 13:12:26 MA
+ precomp entfernt
+
+ Rev 1.6 16 Jul 1997 16:26:50 TRI
+ mit __EXPORT gehts viel besser
+
+ Rev 1.5 15 Jul 1997 14:48:12 OS
+ HideExtra entfernt
+
+ Rev 1.4 28 Aug 1996 10:10:00 OS
+ includes
+
+ Rev 1.3 04 Jul 1996 09:03:38 SWG
+ include svfield - Workaround wg. optgenrl.hxx
+
+ Rev 1.2 24 Nov 1995 16:58:16 OM
+ PCH->PRECOMPILED
+
+ Rev 1.1 27 Jul 1995 18:20:56 OS
+ HideExtras jetzt aktiv
+
+ Rev 1.0 26 Jul 1995 19:20:02 OS
+ Initial revision.
+
+*************************************************************************/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sw/source/ui/dialog/ascfldlg.cxx b/sw/source/ui/dialog/ascfldlg.cxx
new file mode 100644
index 000000000000..38b03b23b10a
--- /dev/null
+++ b/sw/source/ui/dialog/ascfldlg.cxx
@@ -0,0 +1,682 @@
+/*************************************************************************
+ *
+ * $RCSfile: ascfldlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+
+#ifndef _RTL_TEXTENC_H //autogen wg. rtl_TextEncoding
+#include <rtl/textenc.h>
+#endif
+
+
+#ifndef _UNO_LINGU_HXX
+#include <svx/unolingu.hxx>
+#endif
+
+#ifndef _SFX_PRINTER_HXX
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SVX_FLSTITEM_HXX //autogen wg. SvxFontListItem
+#include <svx/flstitem.hxx>
+#endif
+#ifndef _SVX_DLGUTIL_HXX //autogen wg. GetLanguageString
+#include <svx/dlgutil.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen wg. SvxFontItem
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen wg. SvxLanguageItem
+#include <svx/langitem.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _ASCFLDLG_HXX
+#include <ascfldlg.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _SWDOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+
+#ifndef _DIALOG_HRC
+#include <dialog.hrc>
+#endif
+#ifndef _ASCFLDLG_HRC
+#include <ascfldlg.hrc>
+#endif
+
+using namespace ::com::sun::star;
+
+const sal_Unicode cDialogExtraDataClose = '}';
+const char __FAR_DATA sDialogImpExtraData[] = "EncImpDlg:{";
+const char __FAR_DATA sDialogExpExtraData[] = "EncExpDlg:{";
+const USHORT nDialogExtraDataLen = 11; // 12345678901
+
+// in the resource exist an equal list - only with the names!
+static rtl_TextEncoding aCharSetArr[] = {
+ RTL_TEXTENCODING_MS_1252, // Western (Window-1252/WinLatin 1)
+ RTL_TEXTENCODING_APPLE_ROMAN, // Western (Apple Macintosh)
+ RTL_TEXTENCODING_IBM_850, // Western (DOS/OS2-850/International)
+ RTL_TEXTENCODING_IBM_437, // Western (DOS/OS2-437/US)
+ RTL_TEXTENCODING_IBM_860, // Western (DOS/OS2-860/Portugese)
+ RTL_TEXTENCODING_IBM_861, // Western (DOS/OS2-861/Icelandic)
+ RTL_TEXTENCODING_IBM_863, // Western (DOS/OS2-863/Canadian-French)
+ RTL_TEXTENCODING_IBM_865, // Western (DOS/OS2-865/Nordic)
+ RTL_TEXTENCODING_ASCII_US, // Western (ASCII/US)
+ RTL_TEXTENCODING_ISO_8859_1, // Western (ISO-8859-1)
+ RTL_TEXTENCODING_ISO_8859_2, // Central European (ISO-8859-2)
+ RTL_TEXTENCODING_ISO_8859_3, // Latin 3 (ISO-8859-3)
+ RTL_TEXTENCODING_ISO_8859_4, // Baltic (ISO-8859-4)
+ RTL_TEXTENCODING_ISO_8859_5, // Cyrillic (ISO-8859-5)
+// RTL_TEXTENCODING_ISO_8859_6, // Arabic (ISO-8859-6)
+ RTL_TEXTENCODING_ISO_8859_7, // Greek (ISO-8859-7)
+// RTL_TEXTENCODING_ISO_8859_8, // Hebrew (ISO-8859-8)
+ RTL_TEXTENCODING_ISO_8859_9, // Turkish (ISO-8859-9)
+ RTL_TEXTENCODING_ISO_8859_14, // Western (ISO-8859-14)
+ RTL_TEXTENCODING_ISO_8859_15, // Western (ISO-8859-15/EURO)
+ RTL_TEXTENCODING_IBM_737, // Greek (DOS/OS2-737)
+ RTL_TEXTENCODING_IBM_775, // Baltic (DOS/OS2-775)
+ RTL_TEXTENCODING_IBM_852, // Central European (DOS/OS2-852)
+ RTL_TEXTENCODING_IBM_855, // Cyrillic (DOS/OS2-855)
+ RTL_TEXTENCODING_IBM_857, // Turkish (DOS/OS2-857)
+// RTL_TEXTENCODING_IBM_862, // Hebrew (DOS/OS2-862)
+// RTL_TEXTENCODING_IBM_864, // Arabic (DOS/OS2-864)
+ RTL_TEXTENCODING_IBM_866, // Cyrillic (DOS/OS2-866/Russian)
+ RTL_TEXTENCODING_IBM_869, // Greek (DOS/OS2-869/Modern)
+// RTL_TEXTENCODING_MS_874, // Thai (Dos/Windows-874)
+ RTL_TEXTENCODING_MS_1250, // Central European (Windows-1250/WinLatin 2)
+ RTL_TEXTENCODING_MS_1251, // Cyrillic (Windows-1251)
+ RTL_TEXTENCODING_MS_1253, // Greek (Windows-1253)
+ RTL_TEXTENCODING_MS_1254, // Turkish (Windows-1254)
+// RTL_TEXTENCODING_MS_1255, // Hebrew (Windows-1255)
+// RTL_TEXTENCODING_MS_1256, // Arabic (Windows-1256)
+ RTL_TEXTENCODING_MS_1257, // Baltic (Windows-1257)
+// RTL_TEXTENCODING_MS_1258, // Vietnamese (Windows-1258)
+// RTL_TEXTENCODING_APPLE_ARABIC, // Arabic (Apple Macintosh)
+ RTL_TEXTENCODING_APPLE_CENTEURO, // Central European (Apple Macintosh)
+ RTL_TEXTENCODING_APPLE_CROATIAN, // Central European (Apple Macintosh/Croatian)
+ RTL_TEXTENCODING_APPLE_CYRILLIC, // Cyrillic (Apple Macintosh)
+// RTL_TEXTENCODING_APPLE_DEVANAGARI, // APPLE DEVANAGARI
+// RTL_TEXTENCODING_APPLE_FARSI, // APPLE FARSI
+ RTL_TEXTENCODING_APPLE_GREEK, // Greek (Apple Macintosh)
+// RTL_TEXTENCODING_APPLE_GUJARATI, // APPLE GUJARATI
+// RTL_TEXTENCODING_APPLE_GURMUKHI, // APPLE GURMUKHI
+// RTL_TEXTENCODING_APPLE_HEBREW, // Hebrew (Apple Macintosh)
+ RTL_TEXTENCODING_APPLE_ICELAND, // Western (Apple Macintosh/Icelandic)
+ RTL_TEXTENCODING_APPLE_ROMANIAN, // Central European (Apple Macintosh/Romanian)
+// RTL_TEXTENCODING_APPLE_THAI, // Thai (Apple Macintosh)
+ RTL_TEXTENCODING_APPLE_TURKISH, // Turkish (Apple Macintosh)
+ RTL_TEXTENCODING_APPLE_UKRAINIAN, // Cyrillic (Apple Macintosh/Ukrainian)
+ RTL_TEXTENCODING_APPLE_CHINSIMP, // Chinese Simplified (Apple Macintosh)
+ RTL_TEXTENCODING_APPLE_CHINTRAD, // Chinese Traditional (Apple Macintosh)
+ RTL_TEXTENCODING_APPLE_JAPANESE, // Japanese (Apple Macintosh)
+ RTL_TEXTENCODING_APPLE_KOREAN, // Korean (Apple Macintosh)
+ RTL_TEXTENCODING_MS_932, // Japanese (Windows-932)
+ RTL_TEXTENCODING_MS_936, // Chinese Simplified (Windows-936)
+ RTL_TEXTENCODING_MS_949, // Korean (Windows-949)
+ RTL_TEXTENCODING_MS_950, // Chinese Traditional (Windows-950)
+ RTL_TEXTENCODING_SHIFT_JIS, // Japanese (Shift-JIS)
+ RTL_TEXTENCODING_GB_2312, // Chinese Simplified (GB-2312)
+ RTL_TEXTENCODING_GBT_12345, // Chinese Traditional (GBT-12345)
+ RTL_TEXTENCODING_GBK, // Chinese Simplified (GBK/GB-2312-80)
+ RTL_TEXTENCODING_BIG5, // Chinese Traditional (BIG5)
+// RTL_TEXTENCODING_EUC_JP, // Japanese (EUC-JP)
+ RTL_TEXTENCODING_EUC_CN, // Chinese Simplified (EUC-CN)
+// RTL_TEXTENCODING_EUC_TW, // Chinese Traditional (EUC-TW)
+// RTL_TEXTENCODING_ISO_2022_JP, // Japanese (ISO-2022-JP)
+// RTL_TEXTENCODING_ISO_2022_CN, // Chinese Simplified (ISO-2022-CN)
+ RTL_TEXTENCODING_KOI8_R, // Cyrillic (KOI8-R)
+ RTL_TEXTENCODING_UTF7, // Unicode (UTF-7)
+ RTL_TEXTENCODING_UTF8, // Unicode (UTF-8)
+ RTL_TEXTENCODING_ISO_8859_10, // Central European (ISO-8859-10)
+ RTL_TEXTENCODING_ISO_8859_13, // Central European (ISO-8859-13)
+ RTL_TEXTENCODING_EUC_KR, // Korean (EUC-KR)
+// RTL_TEXTENCODING_ISO_2022_KR, // Korean (ISO-2022-KR)
+ RTL_TEXTENCODING_UCS2 // Unicode (2 byte)
+ };
+
+
+SwAsciiFilterDlg::SwAsciiFilterDlg( Window* pParent, SwDocShell& rDocSh,
+ SvStream* pStream )
+ : SfxModalDialog( pParent, SW_RES( DLG_ASCII_FILTER )),
+ aGB( this, ResId( GB_1 )),
+ aCharSetFT( this, ResId( FT_CHARSET )),
+ aCharSetLB( this, ResId( LB_CHARSET )),
+ aFontFT( this, ResId( FT_FONT )),
+ aFontLB( this, ResId( LB_FONT )),
+ aLanguageFT( this, ResId( FT_LANGUAGE )),
+ aLanguageLB( this, ResId( LB_LANGUAGE )),
+ aCRLF_FT( this, ResId( FT_CRLF )),
+ aCRLF_RB( this, ResId( RB_CRLF )),
+ aCR_RB( this, ResId( RB_CR )),
+ aLF_RB( this, ResId( RB_LF )),
+ aOkPB( this, ResId( PB_OK )),
+ aCancelPB( this, ResId( PB_CANCEL )),
+ aHelpPB( this, ResId( PB_HELP )),
+ sCharSet( ResId( STR_CHARSET )),
+ sSystemCharSet( ResId( STR_SYS_CHARSET )),
+ bSaveLineStatus( TRUE )
+{
+ FreeResource();
+
+ SwAsciiOptions aOpt;
+ {
+ const String& rFindNm = String::CreateFromAscii(
+ pStream ? sDialogImpExtraData
+ : sDialogExpExtraData);
+ USHORT nEnd, nStt = GetExtraData().Search( rFindNm );
+ if( STRING_NOTFOUND != nStt )
+ {
+ nStt += nDialogExtraDataLen;
+ nEnd = GetExtraData().Search( cDialogExtraDataClose, nStt );
+ if( STRING_NOTFOUND != nEnd )
+ {
+ aOpt.ReadUserData( GetExtraData().Copy( nStt, nEnd - nStt ));
+ nStt -= nDialogExtraDataLen;
+ GetExtraData().Erase( nStt, nEnd - nStt + 1 );
+ }
+ }
+ }
+
+ // read the first chars and check the charset, (language - with L&H)
+ if( pStream )
+ {
+ char aBuffer[ 4098 ];
+ ULONG nOldPos = pStream->Tell();
+ ULONG nBytesRead = pStream->Read( aBuffer, 4096 );
+ pStream->Seek( nOldPos );
+
+ if( nBytesRead <= 4096 )
+ {
+ aBuffer[ nBytesRead ] = '0';
+ aBuffer[ nBytesRead+1 ] = '0';
+ if( 0 != ( nBytesRead & 0x00000001 ) )
+ aBuffer[ nBytesRead + 2 ] = '0';
+ }
+
+ BOOL bCR = FALSE, bLF = FALSE, bNoNormalChar = FALSE,
+ bNullChar = FALSE;
+ for( USHORT nCnt = 0; nCnt < nBytesRead; ++nCnt )
+ switch( aBuffer[ nCnt ] )
+ {
+ case 0x0: bNullChar = TRUE; break;
+ case 0xA: bLF = TRUE; break;
+ case 0xD: bCR = TRUE; break;
+ case 0xC:
+ case 0x1A:
+ case 0x9: break;
+ default:
+ if( 0x20 > aBuffer[ nCnt ] )
+ bNoNormalChar = TRUE;
+ }
+
+ if( !bNullChar )
+ {
+ if( bCR )
+ {
+ if( bLF )
+ {
+ aOpt.SetParaFlags( LINEEND_CRLF );
+// have to check if of CharSet is type of ANSI
+// aOpt.SetCharSet( CHARSET_ANSI );
+ }
+ else
+ {
+ aOpt.SetParaFlags( LINEEND_CR );
+// have to check if CharSet is type of MAC
+// aOpt.SetCharSet( CHARSET_MAC );
+ }
+ }
+ else if( bLF )
+ {
+ aOpt.SetParaFlags( LINEEND_LF );
+// have to check if of CharSet is type of ANSI
+// aOpt.SetCharSet( CHARSET_ANSI );
+ }
+ }
+
+ {
+ BOOL bDelPrinter = FALSE;
+ SfxPrinter* pPrt = rDocSh.GetDoc()->GetPrt();
+ if( !pPrt )
+ {
+ SfxItemSet* pSet = new SfxItemSet( rDocSh.GetPool(),
+ SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
+ SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
+ 0 );
+ pPrt = new SfxPrinter( pSet );
+ bDelPrinter = TRUE;
+ }
+
+ const USHORT nCount = pPrt->GetFontCount();
+ for (USHORT i = 0; i < nCount; ++i)
+ {
+ const String &rStr = pPrt->GetFont(i)->GetName();
+ aFontLB.InsertEntry( rStr );
+ }
+
+ if( !aOpt.GetFontName().Len() )
+ aOpt.SetFontName( ((SvxFontItem&)rDocSh.GetDoc()->GetDefault(
+ RES_CHRATR_FONT )).GetFamilyName() );
+ aFontLB.SelectEntry( aOpt.GetFontName() );
+
+ if( bDelPrinter )
+ delete pPrt;
+ }
+
+ // initialisiere Sprache
+ {
+ if( !aOpt.GetLanguage() )
+ aOpt.SetLanguage( ((SvxLanguageItem&)rDocSh.GetDoc()->
+ GetDefault( RES_CHRATR_LANGUAGE )).GetLanguage());
+
+ const USHORT nLanguageCount = (USHORT) SvxGetSelectableLanguages().getLength();
+ const util::Language *pLang = SvxGetSelectableLanguages().getConstArray();
+ for( USHORT i = 0; i < nLanguageCount; ++i )
+ {
+ LanguageType eType = pLang[ i ];
+ USHORT nPos = aLanguageLB.InsertEntry( ::GetLanguageString( eType ) );
+
+ aLanguageLB.SetEntryData( nPos, (void*)(ULONG)eType );
+ if( eType == aOpt.GetLanguage() )
+ aLanguageLB.SelectEntryPos( nPos );
+ }
+ }
+ }
+ else
+ {
+ // hide the used Control for the Export and move the
+ // other behind the charset controls
+ aFontFT.Hide();
+ aFontLB.Hide();
+ aLanguageFT.Hide();
+ aLanguageLB.Hide();
+
+ long nY = aFontFT.GetPosPixel().Y();
+ Point aPos( aCRLF_FT.GetPosPixel() ); aPos.Y() = nY;
+ aCRLF_FT.SetPosPixel( aPos );
+
+ aPos = aCRLF_RB.GetPosPixel(); aPos.Y() = nY;
+ aCRLF_RB.SetPosPixel( aPos );
+
+ aPos = aCR_RB.GetPosPixel(); aPos.Y() = nY;
+ aCR_RB.SetPosPixel( aPos );
+
+ aPos = aLF_RB.GetPosPixel(); aPos.Y() = nY;
+ aLF_RB.SetPosPixel( aPos );
+ }
+
+ // initialisiere Zeichensatz
+ {
+ rtl_TextEncoding eSystem = gsl_getSystemTextEncoding();
+ USHORT nToken = 0, nPos, nCnt = 0;
+ String sToken;
+ do {
+ if( 0 != (sToken = sCharSet.GetToken( 0, ';', nToken )).Len() )
+ {
+ rtl_TextEncoding eCode = aCharSetArr[ nCnt ];
+ if( eCode == eSystem )
+ sToken = sSystemCharSet;
+ nPos = aCharSetLB.InsertEntry( sToken );
+ aCharSetLB.SetEntryData( nPos, (void*)(ULONG)eCode );
+ if( eCode == aOpt.GetCharSet() )
+ aCharSetLB.SelectEntryPos( nPos );
+ }
+ ++nCnt;
+ } while( STRING_NOTFOUND != nToken );
+ }
+
+ aCharSetLB.SetSelectHdl( LINK( this, SwAsciiFilterDlg, CharSetSelHdl ));
+ aCRLF_RB.SetToggleHdl( LINK( this, SwAsciiFilterDlg, LineEndHdl ));
+ aLF_RB.SetToggleHdl( LINK( this, SwAsciiFilterDlg, LineEndHdl ));
+ aCR_RB.SetToggleHdl( LINK( this, SwAsciiFilterDlg, LineEndHdl ));
+
+ SetCRLF( aOpt.GetParaFlags() );
+
+ aCRLF_RB.SaveValue();
+ aLF_RB.SaveValue();
+ aCR_RB.SaveValue();
+}
+
+
+SwAsciiFilterDlg::~SwAsciiFilterDlg()
+{
+}
+
+
+void SwAsciiFilterDlg::FillOptions( SwAsciiOptions& rOptions )
+{
+ ULONG nCCode = (ULONG)aCharSetLB.GetEntryData(
+ aCharSetLB.GetSelectEntryPos() );
+
+ String sFont;
+ ULONG nLng = 0;
+ if( aFontLB.IsVisible() )
+ {
+ sFont = aFontLB.GetSelectEntry();
+ nLng = (ULONG)aLanguageLB.GetEntryData(
+ aLanguageLB.GetSelectEntryPos() );
+ }
+
+ rOptions.SetFontName( sFont );
+ rOptions.SetCharSet( rtl_TextEncoding( nCCode ) );
+ rOptions.SetLanguage( USHORT( nLng ) );
+ rOptions.SetParaFlags( GetCRLF() );
+
+ // JP: Task #71802# save the user settings
+ String sData;
+ rOptions.WriteUserData( sData );
+ if( sData.Len() )
+ {
+ const String& rFindNm = String::CreateFromAscii(
+ aFontLB.IsVisible() ? sDialogImpExtraData
+ : sDialogExpExtraData);
+ USHORT nEnd, nStt = GetExtraData().Search( rFindNm );
+ if( STRING_NOTFOUND != nStt )
+ {
+ // called twice, so remove "old" settings
+ nEnd = GetExtraData().Search( cDialogExtraDataClose,
+ nStt + nDialogExtraDataLen );
+ if( STRING_NOTFOUND != nEnd )
+ GetExtraData().Erase( nStt, nEnd - nStt + 1 );
+ }
+ String sTmp(GetExtraData());
+ sTmp += rFindNm;
+ sTmp += sData;
+ sTmp += cDialogExtraDataClose;
+ GetExtraData() = sTmp;
+ }
+}
+
+void SwAsciiFilterDlg::SetCRLF( LineEnd eEnd )
+{
+ switch( eEnd )
+ {
+ case LINEEND_CR: aCR_RB.Check(); break;
+ case LINEEND_CRLF: aCRLF_RB.Check(); break;
+ case LINEEND_LF: aLF_RB.Check(); break;
+ }
+}
+
+LineEnd SwAsciiFilterDlg::GetCRLF() const
+{
+ LineEnd eEnd;
+ if( aCR_RB.IsChecked() )
+ eEnd = LINEEND_CR;
+ else if( aLF_RB.IsChecked() )
+ eEnd = LINEEND_LF;
+ else
+ eEnd = LINEEND_CRLF;
+ return eEnd;
+}
+
+IMPL_LINK( SwAsciiFilterDlg, CharSetSelHdl, ListBox*, pBox )
+{
+ LineEnd eOldEnd = GetCRLF(), eEnd = (LineEnd)-1;
+ ULONG nLng = aFontLB.IsVisible()
+ ? (ULONG)aLanguageLB.GetEntryData(
+ aLanguageLB.GetSelectEntryPos() )
+ : 0,
+ nOldLng = nLng;
+
+ ULONG nChrSet = (ULONG)pBox->GetEntryData( pBox->GetSelectEntryPos() );
+ if( nChrSet == gsl_getSystemTextEncoding() )
+ eEnd = GetSystemLineEnd();
+ else
+ {
+ switch( nChrSet )
+ {
+ case RTL_TEXTENCODING_MS_1252:
+#ifdef UNX
+ eEnd = LINEEND_LF;
+#else
+ eEnd = LINEEND_CRLF; // ANSI
+#endif
+ break;
+
+ case RTL_TEXTENCODING_APPLE_ROMAN: // MAC
+ eEnd = LINEEND_CR;
+ break;
+
+ case RTL_TEXTENCODING_IBM_850: // DOS
+ eEnd = LINEEND_CRLF;
+ break;
+
+ case RTL_TEXTENCODING_APPLE_ARABIC:
+ case RTL_TEXTENCODING_APPLE_CENTEURO:
+ case RTL_TEXTENCODING_APPLE_CROATIAN:
+ case RTL_TEXTENCODING_APPLE_CYRILLIC:
+ case RTL_TEXTENCODING_APPLE_DEVANAGARI:
+ case RTL_TEXTENCODING_APPLE_FARSI:
+ case RTL_TEXTENCODING_APPLE_GREEK:
+ case RTL_TEXTENCODING_APPLE_GUJARATI:
+ case RTL_TEXTENCODING_APPLE_GURMUKHI:
+ case RTL_TEXTENCODING_APPLE_HEBREW:
+ case RTL_TEXTENCODING_APPLE_ICELAND:
+ case RTL_TEXTENCODING_APPLE_ROMANIAN:
+ case RTL_TEXTENCODING_APPLE_THAI:
+ case RTL_TEXTENCODING_APPLE_TURKISH:
+ case RTL_TEXTENCODING_APPLE_UKRAINIAN:
+ case RTL_TEXTENCODING_APPLE_CHINSIMP:
+ case RTL_TEXTENCODING_APPLE_CHINTRAD:
+ case RTL_TEXTENCODING_APPLE_JAPANESE:
+ case RTL_TEXTENCODING_APPLE_KOREAN:
+ eEnd = LINEEND_CR;
+ break;
+
+#if 0
+which charset and language?
+ case RTL_TEXTENCODING_IBM_437:
+ case RTL_TEXTENCODING_IBM_860:
+ case RTL_TEXTENCODING_IBM_861:
+ case RTL_TEXTENCODING_IBM_863:
+ case RTL_TEXTENCODING_IBM_865:
+ case RTL_TEXTENCODING_ASCII_US:
+ case RTL_TEXTENCODING_ISO_8859_1:
+ case RTL_TEXTENCODING_ISO_8859_2:
+ case RTL_TEXTENCODING_ISO_8859_3:
+ case RTL_TEXTENCODING_ISO_8859_4:
+ case RTL_TEXTENCODING_ISO_8859_5:
+ case RTL_TEXTENCODING_ISO_8859_6:
+ case RTL_TEXTENCODING_ISO_8859_7:
+ case RTL_TEXTENCODING_ISO_8859_8:
+ case RTL_TEXTENCODING_ISO_8859_9:
+ case RTL_TEXTENCODING_ISO_8859_14:
+ case RTL_TEXTENCODING_ISO_8859_15:
+ case RTL_TEXTENCODING_IBM_737:
+ case RTL_TEXTENCODING_IBM_775:
+ case RTL_TEXTENCODING_IBM_852:
+ case RTL_TEXTENCODING_IBM_855:
+ case RTL_TEXTENCODING_IBM_857:
+ case RTL_TEXTENCODING_IBM_862:
+ case RTL_TEXTENCODING_IBM_864:
+ case RTL_TEXTENCODING_IBM_866:
+ case RTL_TEXTENCODING_IBM_869:
+ case RTL_TEXTENCODING_MS_874:
+ case RTL_TEXTENCODING_MS_1250:
+ case RTL_TEXTENCODING_MS_1251:
+ case RTL_TEXTENCODING_MS_1253:
+ case RTL_TEXTENCODING_MS_1254:
+ case RTL_TEXTENCODING_MS_1255:
+ case RTL_TEXTENCODING_MS_1256:
+ case RTL_TEXTENCODING_MS_1257:
+ case RTL_TEXTENCODING_MS_1258:
+ case RTL_TEXTENCODING_MS_932:
+ case RTL_TEXTENCODING_MS_936:
+ case RTL_TEXTENCODING_MS_949:
+ case RTL_TEXTENCODING_MS_950:
+ case RTL_TEXTENCODING_SHIFT_JIS:
+ case RTL_TEXTENCODING_GB_2312:
+ case RTL_TEXTENCODING_GBT_12345:
+ case RTL_TEXTENCODING_GBK:
+ case RTL_TEXTENCODING_BIG5:
+ case RTL_TEXTENCODING_EUC_JP:
+ case RTL_TEXTENCODING_EUC_CN:
+ case RTL_TEXTENCODING_EUC_TW:
+ case RTL_TEXTENCODING_ISO_2022_JP:
+ case RTL_TEXTENCODING_ISO_2022_CN:
+ case RTL_TEXTENCODING_KOI8_R:
+#endif
+ }
+ }
+
+ bSaveLineStatus = FALSE;
+ if( eEnd != (LineEnd)-1 ) // changed?
+ {
+ if( eOldEnd != eEnd )
+ SetCRLF( eEnd );
+ }
+ else
+ {
+ // restore old user choise (not the automatic!)
+ aCRLF_RB.Check( aCRLF_RB.GetSavedValue() );
+ aCR_RB.Check( aCR_RB.GetSavedValue() );
+ aLF_RB.Check( aLF_RB.GetSavedValue() );
+ }
+ bSaveLineStatus = TRUE;
+
+ if( nOldLng != nLng && aFontLB.IsVisible() )
+ {
+ for( USHORT n = 0, nCnt = aLanguageLB.GetEntryCount(); n < nCnt; ++n )
+ if( nLng == (ULONG)aLanguageLB.GetEntryData( n ))
+ {
+ aLanguageLB.SelectEntryPos( n );
+ break;
+ }
+ }
+ return 0;
+}
+
+IMPL_LINK( SwAsciiFilterDlg, LineEndHdl, RadioButton*, pBtn )
+{
+ if( bSaveLineStatus )
+ pBtn->SaveValue();
+ return 0;
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.13 2000/09/18 16:05:20 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.12 2000/08/04 16:24:47 jp
+ read/write unicode ascii files
+
+ Revision 1.11 2000/08/01 07:40:17 jp
+ new CJK filters
+
+ Revision 1.10 2000/04/13 08:01:20 os
+ UNICODE
+
+ Revision 1.9 2000/03/30 10:59:20 os
+ UNO III
+
+ Revision 1.8 2000/03/16 16:38:36 kz
+ chg. include sfx2/printer.hxx
+
+ Revision 1.7 2000/02/07 16:01:51 jp
+ Task #72603#: new textencodings
+
+ Revision 1.6 2000/01/14 16:28:47 jp
+ Task #71802#: one user settings for export and one for import
+
+ Revision 1.5 2000/01/13 23:13:19 jp
+ Task #71802#: save/restore user settings
+
+ Revision 1.4 1999/11/15 14:21:12 jp
+ remove not supportet charsets from the list
+
+ Revision 1.3 1999/10/25 19:10:51 tl
+ ongoing ONE_LINGU implementation
+
+ Revision 1.2 1999/08/26 18:35:26 JP
+ load and save Text with more options (charset/language/lineend/font)
+
+
+ Rev 1.1 26 Aug 1999 20:35:26 JP
+ load and save Text with more options (charset/language/lineend/font)
+
+ Rev 1.0 25 Aug 1999 19:45:40 JP
+ Dialog for ASCII filter options
+
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/dialog/ascfldlg.hrc b/sw/source/ui/dialog/ascfldlg.hrc
new file mode 100644
index 000000000000..e39d4d9a6af4
--- /dev/null
+++ b/sw/source/ui/dialog/ascfldlg.hrc
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: ascfldlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 GB_1 1
+#define FT_CHARSET 2
+#define LB_CHARSET 3
+#define FT_FONT 4
+#define LB_FONT 5
+#define FT_LANGUAGE 6
+#define LB_LANGUAGE 7
+#define FT_CRLF 8
+#define RB_CRLF 9
+#define RB_CR 10
+#define RB_LF 11
+#define PB_OK 12
+#define PB_CANCEL 13
+#define PB_HELP 14
+#define STR_NO_LANGUAGE 15
+#define STR_CHARSET 16
+#define STR_SYS_CHARSET 17
+
+
diff --git a/sw/source/ui/dialog/ascfldlg.src b/sw/source/ui/dialog/ascfldlg.src
new file mode 100644
index 000000000000..66fc5a0981c4
--- /dev/null
+++ b/sw/source/ui/dialog/ascfldlg.src
@@ -0,0 +1,563 @@
+/*************************************************************************
+ *
+ * $RCSfile: ascfldlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "dialog.hrc"
+#include "helpid.h"
+#include "ascfldlg.hrc"
+
+ModalDialog DLG_ASCII_FILTER
+{
+ HelpID = HID_ASCII_FILTER ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 239 , 84 ) ;
+ Text = "ASCII Filter Optionen" ;
+ Text [ English ] = "ASCII filter options" ;
+ Moveable = TRUE ;
+ GroupBox GB_1
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 174 , 78 ) ;
+ Text = "Eigenschaften" ;
+ Text [ English ] = "Properties" ;
+ Text[ english_us ] = "Properties";
+ Text[ portuguese ] = "Propriedades";
+ Text[ russian ] = "Ñâîéñòâà";
+ Text[ greek ] = "Éäéüôçôåò";
+ Text[ dutch ] = "Eigenschappen";
+ Text[ french ] = "Propriétés";
+ Text[ spanish ] = "Propiedades";
+ Text[ italian ] = "Proprietà";
+ Text[ danish ] = "Egenskaber";
+ Text[ swedish ] = "Egenskaper";
+ Text[ polish ] = "W³aœciwoœci";
+ Text[ portuguese_brazilian ] = "Properties";
+ Text[ japanese ] = "ÌßÛÊßè";
+ Text[ korean ] = "µî·ÏÁ¤º¸";
+ Text[ chinese_simplified ] = "ÊôÐÔ";
+ Text[ chinese_traditional ] = "ÄÝ©Ê";
+ Text[ arabic ] = "ÎÕÇÆÕ";
+ Text[ turkish ] = "Özellikler";
+ };
+ FixedText FT_CHARSET
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 53 , 10 ) ;
+ Text = "Z~eichensatz" ;
+ Text [ English ] = "Character Set" ;
+ Text[ english_us ] = "~Font";
+ Text[ portuguese ] = "~Conjunto de caracteres";
+ Text[ russian ] = "Íàáîð çíàêîâ";
+ Text[ greek ] = "Ó~åô ÷áñáêôÞñùí";
+ Text[ dutch ] = "~Tekenset";
+ Text[ french ] = "~Jeu de caractères";
+ Text[ spanish ] = "~Caracteres";
+ Text[ italian ] = "Ti~po di carattere";
+ Text[ danish ] = "Tegnsæt";
+ Text[ swedish ] = "Teckenuppsättning";
+ Text[ polish ] = "Zbiór znaków";
+ Text[ portuguese_brazilian ] = "Charset";
+ Text[ japanese ] = "•¶Žš—ñ(~F)";
+ Text[ korean ] = "±Û²Ã(~F)";
+ Text[ chinese_simplified ] = "×Ö·û¼¯(~F)";
+ Text[ chinese_traditional ] = "¦r«¬(~F)";
+ Text[ turkish ] = "Karakter kümesi";
+ Text[ arabic ] = "ãÌãæÚÉ ÃÍÑÝ";
+ };
+ ListBox LB_CHARSET
+ {
+ Pos = MAP_APPFONT ( 80 , 14 ) ;
+ Size = MAP_APPFONT ( 86 , 61 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText FT_FONT
+ {
+ Pos = MAP_APPFONT ( 12 , 31 ) ;
+ Size = MAP_APPFONT ( 53 , 10 ) ;
+ Text = "~Grundschrift" ;
+ Text [ English ] = "Standard font" ;
+ Text[ english_us ] = "Default fonts";
+ Text[ portuguese ] = "Tipo de letra ~padrão";
+ Text[ russian ] = "Ñòàíäàðòíûé øðèôò";
+ Text[ greek ] = "ÂáóéêÝò ãñáììáôïóåéñÝò";
+ Text[ dutch ] = "~Standaardlettertype";
+ Text[ french ] = "Police de base";
+ Text[ spanish ] = "~Fuente estándar";
+ Text[ italian ] = "Carattere standard";
+ Text[ danish ] = "Standardskrifttyper";
+ Text[ swedish ] = "Standardteckensnitt";
+ Text[ polish ] = "Czcionka podstawowa";
+ Text[ portuguese_brazilian ] = "Standard fonts";
+ Text[ japanese ] = "Šù’èÌ«ÝÄ";
+ Text[ korean ] = "±âº» ±Û²Ã";
+ Text[ chinese_simplified ] = "±ê×¼×ÖÌå";
+ Text[ chinese_traditional ] = "Àq»{¦r«¬";
+ Text[ turkish ] = "Standart yazýtipi";
+ Text[ arabic ] = "ÇáÎØ ÇáÞíÇÓí";
+ };
+ ListBox LB_FONT
+ {
+ Pos = MAP_APPFONT ( 80 , 30 ) ;
+ Size = MAP_APPFONT ( 86 , 61 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText FT_LANGUAGE
+ {
+ Pos = MAP_APPFONT ( 12 , 47 ) ;
+ Size = MAP_APPFONT ( 53 , 10 ) ;
+ Text = "~Sprache" ;
+ Text [ English ] = "Language" ;
+ Text[ english_us ] = "Lan~guage";
+ Text[ portuguese ] = "~Língua";
+ Text[ russian ] = "ßçûê";
+ Text[ greek ] = "Ãëþóóá";
+ Text[ dutch ] = "~Taal";
+ Text[ french ] = "~Langue";
+ Text[ spanish ] = "Idio~ma";
+ Text[ italian ] = "Lin~gua";
+ Text[ danish ] = "Sprog";
+ Text[ swedish ] = "Språk";
+ Text[ polish ] = "Jêzyk";
+ Text[ portuguese_brazilian ] = "Language";
+ Text[ japanese ] = "Œ¾Œê(~G)";
+ Text[ korean ] = "¾ð¾î(~G)";
+ Text[ chinese_simplified ] = "ÓïÑÔ(~G)";
+ Text[ chinese_traditional ] = "»y¨¥(~G)";
+ Text[ arabic ] = "ÇááÛÉ";
+ Text[ turkish ] = "~Dil";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_LANGUAGE
+ {
+ Pos = MAP_APPFONT ( 80 , 46 ) ;
+ Size = MAP_APPFONT ( 86 , 61 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText FT_CRLF
+ {
+ Pos = MAP_APPFONT ( 12 , 63 ) ;
+ Size = MAP_APPFONT ( 53 , 10 ) ;
+ Text = "~Absatzumbruch" ;
+ Text [ English ] = "Paragraphbreak" ;
+ Text[ english_us ] = "~Paragraph break";
+ Text[ portuguese ] = "~Quebra de parágrafo";
+ Text[ russian ] = "Ðàçðûâ àáçàöà";
+ Text[ greek ] = "ÁëëáãÞ ðáñáãñÜöïõ";
+ Text[ dutch ] = "~Alinea-einde";
+ Text[ french ] = "Saut de ~paragraphe";
+ Text[ spanish ] = "Salt~o de párrafo";
+ Text[ italian ] = "~Interruzione di paragrafo";
+ Text[ danish ] = "Afsnitsskift";
+ Text[ swedish ] = "Styckebrytning";
+ Text[ polish ] = "Podzia³ akapitu";
+ Text[ portuguese_brazilian ] = "Paragraphbreak";
+ Text[ japanese ] = "’i—Ž‹æØ‚è(~P)";
+ Text[ korean ] = "´Ü¶ô ³ª´©±â(~P)";
+ Text[ chinese_simplified ] = "»»¶ÎÂä(~P)";
+ Text[ chinese_traditional ] = "´«¬q¸¨(~P)";
+ Text[ arabic ] = "ÝÇÕá ÝÞÑÇÊ";
+ Text[ turkish ] = "Paragraf sonu";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_CRLF
+ {
+ Pos = MAP_APPFONT ( 80 , 62 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Check = TRUE;
+ Text = "~CR & LF" ;
+ Text [ ENGLISH ] = "CR & LF" ;
+ Text[ english_us ] = "~CR & LF";
+ Text[ portuguese ] = "~CR & LF";
+ Text[ russian ] = "CR & LF";
+ Text[ greek ] = "~CR & LF";
+ Text[ dutch ] = "~CR & LF";
+ Text[ french ] = "~CR & LF";
+ Text[ spanish ] = "CR & LF";
+ Text[ italian ] = "~CR & LF";
+ Text[ danish ] = "CR og LF";
+ Text[ swedish ] = "CR & LF";
+ Text[ polish ] = "~CR & LF";
+ Text[ portuguese_brazilian ] = "CR & LF";
+ Text[ japanese ] = "CR & LF(~C)";
+ Text[ korean ] = "CR & LF(~C)";
+ Text[ chinese_simplified ] = "»Ø³µ²¢»»ÐÐ(~C)";
+ Text[ chinese_traditional ] = "~CR & LF";
+ Text[ arabic ] = "CR & LF";
+ Text[ turkish ] = "~CR & LF";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_CR
+ {
+ Pos = MAP_APPFONT ( 123 , 62 ) ;
+ Size = MAP_APPFONT ( 20 , 12 ) ;
+// TabStop = TRUE ;
+ Text = "C~R" ;
+ Text [ ENGLISH ] = "CR" ;
+ Text[ english_us ] = "C~R";
+ Text[ portuguese ] = "C~R";
+ Text[ russian ] = "CR";
+ Text[ greek ] = "C~R";
+ Text[ dutch ] = "C~R";
+ Text[ french ] = "C~R";
+ Text[ spanish ] = "C~R";
+ Text[ italian ] = "C~R";
+ Text[ danish ] = "CR";
+ Text[ swedish ] = "CR";
+ Text[ polish ] = "C~R";
+ Text[ portuguese_brazilian ] = "CR";
+ Text[ japanese ] = "CR(~R)";
+ Text[ korean ] = "CR(~R)";
+ Text[ chinese_simplified ] = "»Ø³µ(~R)";
+ Text[ chinese_traditional ] = "C~R";
+ Text[ arabic ] = "CR";
+ Text[ turkish ] = "C~R";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_LF
+ {
+ Pos = MAP_APPFONT ( 146 , 62 ) ;
+ Size = MAP_APPFONT ( 20 , 12 ) ;
+// TabStop = TRUE ;
+ Text = "~LF" ;
+ Text [ ENGLISH ] = "LF" ;
+ Text[ english_us ] = "~LF";
+ Text[ portuguese ] = "~LF";
+ Text[ russian ] = "LF";
+ Text[ greek ] = "~LF";
+ Text[ dutch ] = "~LF";
+ Text[ french ] = "~LF";
+ Text[ spanish ] = "~LF";
+ Text[ italian ] = "~LF";
+ Text[ danish ] = "LF";
+ Text[ swedish ] = "LF";
+ Text[ polish ] = "~LF";
+ Text[ portuguese_brazilian ] = "LF";
+ Text[ japanese ] = "LF(~L)";
+ Text[ korean ] = "LF(~L)";
+ Text[ chinese_simplified ] = "ÐÂÐÐ(~L)";
+ Text[ chinese_traditional ] = "~LF";
+ Text[ arabic ] = "LF";
+ Text[ turkish ] = "~LF";
+ Text[ language_user1 ] = " ";
+ };
+
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 186 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 186 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 186 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ String STR_NO_LANGUAGE
+ {
+ Text = "[Keine]" ;
+ Text [ ENGLISH ] = "[None]" ;
+ Text[ english_us ] = "[None]";
+ Text[ portuguese ] = "[Nenhum]";
+ Text[ russian ] = "[Áåç]";
+ Text[ greek ] = "[Êáìßá]";
+ Text[ dutch ] = "[Geen]";
+ Text[ french ] = "[Aucune]";
+ Text[ spanish ] = "[Ninguno]";
+ Text[ italian ] = "[Nessuna]";
+ Text[ danish ] = "[Ingen]";
+ Text[ swedish ] = "[Inget]";
+ Text[ polish ] = "[Brak]";
+ Text[ portuguese_brazilian ] = "[None]";
+ Text[ japanese ] = "[‚È‚µ]";
+ Text[ korean ] = "[¾øÀ½]";
+ Text[ chinese_simplified ] = "[ÎÞ]";
+ Text[ chinese_traditional ] = "[µL]";
+ Text[ arabic ] = "[ÈÏæä]";
+ Text[ turkish ] = "[Yok]";
+ };
+ String STR_SYS_CHARSET
+ {
+ Text = "System" ;
+ Text [ ENGLISH ] = "System" ;
+ Text[ english_us ] = "System";
+ Text[ portuguese ] = "Sistema";
+ Text[ russian ] = "Èç ñèñòåìû";
+ Text[ greek ] = "Óýóôçìá";
+ Text[ dutch ] = "Systeem";
+ Text[ french ] = "Système";
+ Text[ spanish ] = "Sistema";
+ Text[ italian ] = "Sistema";
+ Text[ danish ] = "System";
+ Text[ swedish ] = "System";
+ Text[ polish ] = "System";
+ Text[ portuguese_brazilian ] = "System";
+ Text[ japanese ] = "¼½ÃÑ";
+ Text[ korean ] = "½Ã½ºÅÛ";
+ Text[ chinese_simplified ] = "ϵͳ";
+ Text[ chinese_traditional ] = "¨t²Î";
+ Text[ arabic ] = "ÇáäÙÇã";
+ Text[ turkish ] = "Sistem";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHARSET
+ {
+ Text = "Westeuropa (Window-1252/WinLatin 1);"
+ "Westeuropa (Apple Macintosh);"
+ "Westeuropa (DOS/OS2-850/International);"
+ "Westeuropa (DOS/OS2-437/US);"
+ "Westeuropa (DOS/OS2-860/Portugiesisch);"
+ "Westeuropa (DOS/OS2-861/Isländisch);"
+ "Westeuropa (DOS/OS2-863/Französisch (Kand.));"
+ "Westeuropa (DOS/OS2-865/Nordisch);"
+ "Westeuropa (ASCII/US);"
+ "Westeuropa (ISO-8859-1);"
+ "Osteuropa (ISO-8859-2);"
+ "Latin 3 (ISO-8859-3);"
+ "Baltisch (ISO-8859-4);"
+ "Kyrillisch (ISO-8859-5);"
+// RTL_TEXTENCODING_ISO_8859_6, // Arabic (ISO-8859-6)
+ "Griechisch (ISO-8859-7);"
+// RTL_TEXTENCODING_ISO_8859_8, // Hebrew (ISO-8859-8)
+ "Türkisch (ISO-8859-9);"
+ "Westeuropa (ISO-8859-14);"
+ "Westeuropa (ISO-8859-15/EURO);"
+ "Griechisch (DOS/OS2-737);"
+ "Baltisch (DOS/OS2-775);"
+ "Osteuropa (DOS/OS2-852);"
+ "Kyrillisch (DOS/OS2-855);"
+ "Türkisch (DOS/OS2-857);"
+// RTL_TEXTENCODING_IBM_862, // Hebrew (DOS/OS2-862)
+// RTL_TEXTENCODING_IBM_864, // Arabic (DOS/OS2-864)
+ "Kyrillisch (DOS/OS2-866/Russisch);"
+ "Griechisch (DOS/OS2-869/Modern);"
+// RTL_TEXTENCODING_MS_874, // Thai (Dos/Windows-874)
+ "Osteuropa (Windows-1250/WinLatin 2);"
+ "Kyrillisch (Windows-1251);"
+ "Griechisch (Windows-1253);"
+ "Türkisch (Windows-1254);"
+// RTL_TEXTENCODING_MS_1255, // Hebrew (Windows-1255)
+// RTL_TEXTENCODING_MS_1256, // Arabic (Windows-1256)
+ "Baltisch (Windows-1257);"
+// RTL_TEXTENCODING_MS_1258, // Vietnamese (Windows-1258)
+// RTL_TEXTENCODING_APPLE_ARABIC, // Arabic (Apple Macintosh)
+ "Osteuropa (Apple Macintosh);"
+ "Osteuropa (Apple Macintosh/Kroatisch);"
+ "Kyrillisch (Apple Macintosh);"
+// RTL_TEXTENCODING_APPLE_DEVANAGARI, // APPLE DEVANAGARI
+// RTL_TEXTENCODING_APPLE_FARSI, // APPLE FARSI
+ "Griechisch (Apple Macintosh);"
+// RTL_TEXTENCODING_APPLE_GUJARATI, // APPLE GUJARATI
+// RTL_TEXTENCODING_APPLE_GURMUKHI, // APPLE GURMUKHI
+// RTL_TEXTENCODING_APPLE_HEBREW, // Hebrew (Apple Macintosh)
+ "Westeuropa (Apple Macintosh/Isländisch);"
+ "Osteuropa (Apple Macintosh/Rumänisch);"
+// RTL_TEXTENCODING_APPLE_THAI, // Thai (Apple Macintosh)
+ "Türkisch (Apple Macintosh);"
+ "Kyrillisch (Apple Macintosh/Ukrainisch);"
+ "Chinesisch vereinfacht (Apple Macintosh);"
+ "Chinesisch traditionell (Apple Macintosh);"
+ "Japanisch (Apple Macintosh);"
+ "Koreanisch (Apple Macintosh);"
+ "Japanisch (Windows-932);"
+ "Chinesisch vereinfacht (Windows-936);"
+ "Koreanisch (Windows-949);"
+ "Chinesisch traditionell (Windows-950);"
+ "Japanisch (Shift-JIS);"
+ "Chinesisch vereinfacht (GB-2312);"
+ "Chinesisch traditionell (GBT-12345);"
+ "Chinesisch vereinfacht (GBK/GB-2312-80);"
+ "Chinesisch traditionell (BIG5);"
+// "Japanisch (EUC-JP);"
+ "Chinesisch vereinfacht (EUC-CN);"
+// "Chinesisch traditionell (EUC-TW);"
+// "Japanisch (ISO-2022-JP);"
+// "Chinesisch vereinfacht (ISO-2022-CN);"
+ "Kyrillisch (KOI8-R);"
+ "Unicode (UTF-7);"
+ "Unicode (UTF-8);"
+ "Osteuropa (ISO-8859-10);"
+ "Osteuropa (ISO-8859-13);"
+ "Koreanisch (EUC-KR);"
+// "Koreanisch (ISO-2022-KR);"
+ "Unicode;"
+ ;
+ Text[ English ] =
+ "Western (Window-1252/WinLatin 1);"
+ "Western (Apple Macintosh);"
+ "Western (DOS/OS2-850/International);"
+ "Western (DOS/OS2-437/US);"
+ "Western (DOS/OS2-860/Portugese);"
+ "Western (DOS/OS2-861/Icelandic);"
+ "Western (DOS/OS2-863/Canadian-French);"
+ "Western (DOS/OS2-865/Nordic);"
+ "Western (ASCII/US);"
+ "Western (ISO-8859-1);"
+ "Central European (ISO-8859-2);"
+ "Latin 3 (ISO-8859-3);"
+ "Baltic (ISO-8859-4);"
+ "Cyrillic (ISO-8859-5);"
+// RTL_TEXTENCODING_ISO_8859_6, // Arabic (ISO-8859-6)
+ "Greek (ISO-8859-7);"
+// RTL_TEXTENCODING_ISO_8859_8, // Hebrew (ISO-8859-8)
+ "Turkish (ISO-8859-9);"
+ "Western (ISO-8859-14);"
+ "Western (ISO-8859-15/EURO);"
+ "Greek (DOS/OS2-737);"
+ "Baltic (DOS/OS2-775);"
+ "Central European (DOS/OS2-852);"
+ "Cyrillic (DOS/OS2-855);"
+ "Turkish (DOS/OS2-857);"
+// RTL_TEXTENCODING_IBM_862, // Hebrew (DOS/OS2-862)
+// RTL_TEXTENCODING_IBM_864, // Arabic (DOS/OS2-864)
+ "Cyrillic (DOS/OS2-866/Russian);"
+ "Greek (DOS/OS2-869/Modern);"
+// RTL_TEXTENCODING_MS_874, // Thai (Dos/Windows-874)
+ "Central European (Windows-1250/WinLatin 2);"
+ "Cyrillic (Windows-1251);"
+ "Greek (Windows-1253);"
+ "Turkish (Windows-1254);"
+// RTL_TEXTENCODING_MS_1255, // Hebrew (Windows-1255)
+// RTL_TEXTENCODING_MS_1256, // Arabic (Windows-1256)
+ "Baltic (Windows-1257);"
+// RTL_TEXTENCODING_MS_1258, // Vietnamese (Windows-1258)
+// RTL_TEXTENCODING_APPLE_ARABIC, // Arabic (Apple Macintosh)
+ "Central European (Apple Macintosh);"
+ "Central European (Apple Macintosh/Croatian);"
+ "Cyrillic (Apple Macintosh);"
+// RTL_TEXTENCODING_APPLE_DEVANAGARI, // APPLE DEVANAGARI
+// RTL_TEXTENCODING_APPLE_FARSI, // APPLE FARSI
+ "Greek (Apple Macintosh);"
+// RTL_TEXTENCODING_APPLE_GUJARATI, // APPLE GUJARATI
+// RTL_TEXTENCODING_APPLE_GURMUKHI, // APPLE GURMUKHI
+// RTL_TEXTENCODING_APPLE_HEBREW, // Hebrew (Apple Macintosh)
+ "Western (Apple Macintosh/Icelandic);"
+ "Central European (Apple Macintosh/Romanian);"
+// RTL_TEXTENCODING_APPLE_THAI, // Thai (Apple Macintosh)
+ "Turkish (Apple Macintosh);"
+ "Cyrillic (Apple Macintosh/Ukrainian);"
+ "Chinese Simplified (Apple Macintosh);"
+ "Chinese Traditional (Apple Macintosh);"
+ "Japanese (Apple Macintosh);"
+ "Korean (Apple Macintosh);"
+ "Japanese (Windows-932);"
+ "Chinese Simplified (Windows-936);"
+ "Korean (Windows-949);"
+ "Chinese Traditional (Windows-950);"
+ "Japanese (Shift-JIS);"
+ "Chinese Simplified (GB-2312);"
+ "Chinese Traditional (GBT-12345);"
+ "Chinese Simplified (GBK/GB-2312-80);"
+ "Chinese Traditional (BIG5);"
+// "Japanese (EUC-JP);"
+ "Chinese Simplified (EUC-CN);"
+// "Chinese Traditional (EUC-TW);"
+// "Japanese (ISO-2022-JP);"
+// "Chinese Simplified (ISO-2022-CN);"
+ "Cyrillic (KOI8-R);"
+ "Unicode (UTF-7);"
+ "Unicode (UTF-8);"
+ "Central European (ISO-8859-10);"
+ "Central European (ISO-8859-13);"
+ "Korean (EUC-KR);"
+// "Korean (ISO-2022-KR);"
+ "Unicode;"
+ ;
+ };
+ Text[ english_us ] = "ASCII Filter Options";
+ Text[ portuguese ] = "Opções de filtro ASCII";
+ Text[ russian ] = "Ïàðàìåòðû ôèëüòðà ASCII";
+ Text[ greek ] = "ÅðéëïãÝò ößëôñùí ASCII";
+ Text[ dutch ] = "ASCII filteropties";
+ Text[ french ] = "Options de filtre ASCII";
+ Text[ spanish ] = "Opciones de filtro ASCII";
+ Text[ italian ] = "Opzioni filtro ASCII";
+ Text[ danish ] = "ASCII filterindstillinger";
+ Text[ swedish ] = "ASCII filteralternativ";
+ Text[ polish ] = "Opcje filtra ASCII";
+ Text[ portuguese_brazilian ] = "ASCII filter options";
+ Text[ japanese ] = "ASCIĮÙÀµÌß¼®Ý";
+ Text[ korean ] = "¾Æ½ºÅ° ÇÊÅÍ ¿É¼Ç";
+ Text[ chinese_simplified ] = "ASCII ¹ýÂËÆ÷Ñ¡Ïî";
+ Text[ chinese_traditional ] = "ASCII ¹LÂo¾¹¿ï¶µ";
+ Text[ arabic ] = "ÎÕÇÆÕ ÝáÊÑ ASCII";
+ Text[ turkish ] = "ASCII filtre seçenekleri";
+ Text[ language_user1 ] = " ";
+};
+
+
+
+
+
diff --git a/sw/source/ui/dialog/dialog.src b/sw/source/ui/dialog/dialog.src
new file mode 100644
index 000000000000..28a5be47f737
--- /dev/null
+++ b/sw/source/ui/dialog/dialog.src
@@ -0,0 +1,201 @@
+/*************************************************************************
+ *
+ * $RCSfile: dialog.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "dialog.hrc"
+
+CheckBox CB_USE_PASSWD
+{
+ /* ### ACHTUNG: Neuer Text in Resource? ~Paßwort : ~Pa˜wort */
+ Text = "~Passwort" ;
+ 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 ] = "¿ÚÁî(~P)";
+ Text[ russian ] = "Ïàðîëü";
+ Text[ polish ] = "Has³o";
+ Text[ japanese ] = "Ê߽ܰÄÞ(~P)";
+ Text[ chinese_traditional ] = "±K½X(~P)";
+ Text[ arabic ] = "ßáãÉ ÇáÓÑ";
+ Text[ greek ] = "Êùäéêüò ðñüóâáóçò";
+ Text[ korean ] = "Æнº¿öµå(~P)";
+ Text[ turkish ] = "Þifre";
+ Text[ language_user1 ] = " ";
+};
+CheckBox CB_READ_ONLY
+{
+ Text = "Nu~r lesen" ;
+ Text [ ENGLISH ] = "~Read only" ;
+ Text [ norwegian ] = "~Skrivebeskyttet" ;
+ Text [ italian ] = "~Sola lettura" ;
+ Text [ portuguese_brazilian ] = "~Só leitura" ;
+ Text [ portuguese ] = "~Só leitura" ;
+ Text [ finnish ] = "~Vain luku" ;
+ Text [ danish ] = "Skrivebeskyttet" ;
+ Text [ french ] = "En ~lecture seule" ;
+ Text [ swedish ] = "Sk~rivskyddad" ;
+ Text [ dutch ] = "~Alleen lezen" ;
+ Text [ spanish ] = "~Solo lectura" ;
+ Text [ english_us ] = "~Read only" ;
+ Text[ chinese_simplified ] = "Ö»¶Á(~R)";
+ Text[ russian ] = "Òîëüêî äëÿ ÷òåíèÿ";
+ Text[ polish ] = "Tylko do odczytu";
+ Text[ japanese ] = "“Ç‚ÝŽæ‚èê—p(~R)";
+ Text[ chinese_traditional ] = "°ßŪ(~R)";
+ Text[ arabic ] = "ááÞÑÇÁÉ ÝÞØ";
+ Text[ greek ] = "Ìüíï ãéá áíÜãíùóç";
+ Text[ korean ] = "Àбâ Àü¿ë(~R)";
+ Text[ turkish ] = "~Salt okunur";
+ Text[ language_user1 ] = " ";
+};
+String STR_LINKEDIT_TEXT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Verknüpfungen bearbeiten : Verkn³pfungen bearbeiten */
+ Text = "Verknüpfungen bearbeiten" ;
+ Text [ ENGLISH ] = "Edit links" ;
+ Text [ norwegian ] = "Edit links" ;
+ Text [ italian ] = "Modifica collegamenti" ;
+ Text [ portuguese_brazilian ] = "Editar ligações" ;
+ Text [ portuguese ] = "Editar ligações" ;
+ Text [ finnish ] = "Muokkaa linkkejä" ;
+ Text [ danish ] = "Rediger kæder" ;
+ Text [ french ] = "Édition de liens" ;
+ Text [ swedish ] = "Redigera länkar" ;
+ Text [ dutch ] = "Koppelingen bewerken" ;
+ Text [ spanish ] = "Modificar vínculos" ;
+ Text [ english_us ] = "Edit links" ;
+ Text[ chinese_simplified ] = "±à¼­Á´½Ó";
+ Text[ russian ] = "Ïðàâêà ññûëîê";
+ Text[ polish ] = "Edytuj ³¹cza";
+ Text[ japanese ] = "Øݸ‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿è±¶®|";
+ Text[ arabic ] = "ÊÍÑíÑ ÇáÇÑÊÈÇØÇÊ";
+ Text[ greek ] = "Åðåîåñãáóßá óõíäÝóåùí";
+ Text[ korean ] = "¿¬°á ÆíÁý";
+ Text[ turkish ] = "Baðlantýlarý düzenle";
+ Text[ language_user1 ] = " ";
+};
+String STR_PATH_NOT_FOUND1
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Das Verzeichnis ' : Das Verzeichnis '' */
+ Text = "Das Verzeichnis '" ;
+ Text [ English ] = "The directory '" ;
+ Text [ norwegian ] = "The directory '" ;
+ Text [ italian ] = "La cartella" ;
+ Text [ portuguese_brazilian ] = "O diretório" ;
+ Text [ portuguese ] = "O directório '" ;
+ Text [ finnish ] = "Hakemistoa '" ;
+ Text [ danish ] = "Biblioteket '" ;
+ Text [ french ] = "Le répertoire'" ;
+ Text [ swedish ] = "Mappen '" ;
+ Text [ dutch ] = "Map '" ;
+ Text [ spanish ] = "El directorio '" ;
+ Text [ english_us ] = "The directory '" ;
+ Text[ chinese_simplified ] = "Õâ¸öĿ¼ '";
+ Text[ russian ] = "Äèðåêòîðèÿ '";
+ Text[ polish ] = "Katalog";
+ Text[ japanese ] = "ÃÞ¨Ú¸ÄØ'";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "³o­Ó¥Ø¿ý '";
+ Text[ arabic ] = "ÇáÏáíá '";
+ Text[ greek ] = "Ï êáôÜëïãïò '";
+ Text[ korean ] = "µð·ºÅ丮'";
+ Text[ turkish ] = "Dizin '";
+};
+String STR_PATH_NOT_FOUND2
+{
+ /* ### ACHTUNG: Neuer Text in Resource? ' existiert nicht. : '' existiert nicht. */
+ /* ### ACHTUNG: Neuer Text in Resource? ' existiert nicht. : '' existiert nicht. */
+ Text = "' existiert nicht." ;
+ Text [ English ] = "' does not exist." ;
+ Text [ norwegian ] = "' does not exist." ;
+ Text [ italian ] = "' non esiste." ;
+ Text [ portuguese_brazilian ] = "' não existe." ;
+ Text [ portuguese ] = "' não existe." ;
+ Text [ finnish ] = "' ei ole." ;
+ Text [ danish ] = "' eksisterer ikke." ;
+ Text [ french ] = "' n'existe pas." ;
+ Text [ swedish ] = "' finns inte." ;
+ Text [ dutch ] = "' bestaat niet." ;
+ Text [ spanish ] = "' no existe." ;
+ Text [ english_us ] = "' does not exist." ;
+ Text[ chinese_simplified ] = "' ²»´æÔÚ¡£";
+ Text[ russian ] = "' íå ñóùåñòâóåò.";
+ Text[ polish ] = "nie istnieje.";
+ Text[ japanese ] = "'‚Í‘¶Ý‚µ‚Ä‚¢‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "' ¤£¦s¦b¡C";
+ Text[ arabic ] = "' ÛíÑ ãæÌæÏ.";
+ Text[ greek ] = "' äåí õðÜñ÷åé.";
+ Text[ korean ] = "' °¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "' mevcut deðil.";
+ Text[ language_user1 ] = " ";
+};
+String STR_FLT_SGV
+{
+ Text = "SGV - StarDraw 2.0,SGV" ;
+};
diff --git a/sw/source/ui/dialog/docstdlg.cxx b/sw/source/ui/dialog/docstdlg.cxx
new file mode 100644
index 000000000000..35d13bc7909d
--- /dev/null
+++ b/sw/source/ui/dialog/docstdlg.cxx
@@ -0,0 +1,427 @@
+/*************************************************************************
+ *
+ * $RCSfile: docstdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <stdio.h>
+#include <ctype.h>
+
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _FESH_HXX
+#include <fesh.hxx>
+#endif
+
+#ifndef _PVIEW_HXX
+#include <pview.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _DOCSTDLG_HXX
+#include <docstdlg.hxx>
+#endif
+#ifndef _DOCSTAT_HXX
+#include <docstat.hxx>
+#endif
+#ifndef _MODCFG_HXX
+#include <modcfg.hxx>
+#endif
+
+// fuer Statistikfelder
+#ifndef _FLDMGR_HXX
+#include <fldmgr.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+
+#ifndef _DOCSTDLG_HRC
+#include <docstdlg.hrc>
+#endif
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Create
+ --------------------------------------------------------------------*/
+
+
+SfxTabPage * SwDocStatPage::Create(Window *pParent, const SfxItemSet &rSet)
+{
+ return new SwDocStatPage(pParent, rSet);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ctor
+ --------------------------------------------------------------------*/
+
+
+SwDocStatPage::SwDocStatPage(Window *pParent, const SfxItemSet &rSet) :
+
+ SfxTabPage (pParent, SW_RES(TP_DOC_STAT), rSet),
+
+ aTableLbl (this, SW_RES( FT_TABLE )),
+ aGrfLbl (this, SW_RES( FT_GRF )),
+ aOLELbl (this, SW_RES( FT_OLE )),
+ aPageLbl (this, SW_RES( FT_PAGE )),
+ aParaLbl (this, SW_RES( FT_PARA )),
+ aWordLbl (this, SW_RES( FT_WORD )),
+ aWordDelimFT(this, SW_RES( FT_WORD_DELIM )),
+ aWordDelim (this, SW_RES( ED_WORD_DELIM )),
+ aCharLbl (this, SW_RES( FT_CHAR )),
+ aTableNo (this, SW_RES( FT_TABLE_COUNT)),
+ aGrfNo (this, SW_RES( FT_GRF_COUNT )),
+ aOLENo (this, SW_RES( FT_OLE_COUNT )),
+ aPageNo (this, SW_RES( FT_PAGE_COUNT )),
+ aParaNo (this, SW_RES( FT_PARA_COUNT )),
+ aWordNo (this, SW_RES( FT_WORD_COUNT )),
+ aCharNo (this, SW_RES( FT_CHAR_COUNT )),
+ aLineLbl (this, SW_RES( FT_LINE )),
+ aLineNo (this, SW_RES( FT_LINE_COUNT )),
+ aUpdatePB (this, SW_RES( PB_PDATE ))
+{
+ Update();
+ FreeResource();
+ aUpdatePB.SetClickHdl(LINK(this, SwDocStatPage, UpdateHdl));
+}
+
+
+ SwDocStatPage::~SwDocStatPage()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: ItemSet fuellen bei Aenderung
+ --------------------------------------------------------------------*/
+
+
+BOOL SwDocStatPage::FillItemSet(SfxItemSet &rSet)
+{
+ // evtl UserData setzen
+
+ String sEd(aWordDelim.GetText());
+ String sDelim;
+ String sChar;
+
+ xub_StrLen i = 0;
+ sal_Unicode c;
+
+ while (i < sEd.Len())
+ {
+ c = sEd.GetChar(i++);
+
+ if (c == '\\')
+ {
+ c = sEd.GetChar(i++);
+
+ switch (c)
+ {
+ case 'n': sDelim += '\n'; break;
+ case 't': sDelim += '\t'; break;
+ case '\\': sDelim += '\\'; break;
+
+ case 'x':
+ {
+ sal_Unicode nVal, nChar;
+ BOOL bValidData = TRUE;
+ xub_StrLen n;
+ for( n = 0, nChar = 0; n < 2 && i < sEd.Len(); ++n, ++i )
+ {
+ if( ((nVal = sEd.GetChar( i )) >= '0') && ( nVal <= '9') )
+ nVal -= '0';
+ else if( (nVal >= 'A') && (nVal <= 'F') )
+ nVal -= 'A' - 10;
+ else if( (nVal >= 'a') && (nVal <= 'f') )
+ nVal -= 'a' - 10;
+ else
+ {
+ DBG_ASSERT( !this, "ungueltiger Hex-Wert" );
+ bValidData = FALSE;
+ break;
+ }
+
+ (nChar <<= 4 ) += nVal;
+ }
+ if( bValidData )
+ sDelim += nChar;
+ break;
+ }
+
+ default: // Unbekannt, daher nur Backslash einfuegen
+ sDelim += '\\';
+ i--;
+ break;
+ }
+ }
+ else
+ sDelim += c;
+ }
+
+
+ SW_MOD()->GetModuleConfig()->SetWordDelimiter(sDelim);
+
+ return FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwDocStatPage::Reset(const SfxItemSet &rSet)
+{
+ // Im Set befindet sich die DocInfo
+ // bei Bedarf UserData auswerten
+ String sDelim(SW_MOD()->GetDocStatWordDelim());
+ String sEd;
+ for (xub_StrLen i = 0; i < sDelim.Len(); i++)
+ {
+ sal_Unicode c = sDelim.GetChar(i);
+
+ switch (c)
+ {
+ case '\n': sEd.AppendAscii(RTL_CONSTASCII_STRINGPARAM("\\n")); break;
+ case '\t': sEd.AppendAscii(RTL_CONSTASCII_STRINGPARAM("\\t")); break;
+ case '\\': sEd.AppendAscii(RTL_CONSTASCII_STRINGPARAM("\\\\")); break;
+
+ default:
+ if( c <= 0x1f || c >= 0x7f )
+ {
+ sEd.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "\\x" ))
+ += String::CreateFromInt32( c, 16 );
+ }
+ else
+ sEd += c;
+ }
+ }
+ aWordDelim.SetText(sEd);
+ aWordDelim.ClearModifyFlag();
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung: Aktualisieren / Setzen der Daten
+------------------------------------------------------------------------*/
+
+
+void SwDocStatPage::SetData(const SwDocStat &rStat)
+{
+ aTableNo.SetText(String::CreateFromInt32( rStat.nTbl ));
+ aGrfNo.SetText(String::CreateFromInt32( rStat.nGrf ));
+ aOLENo.SetText(String::CreateFromInt32( rStat.nOLE ));
+ aPageNo.SetText(String::CreateFromInt32( rStat.nPage ));
+ aParaNo.SetText(String::CreateFromInt32( rStat.nPara ));
+ aWordNo.SetText(String::CreateFromInt32( rStat.nWord ));
+ aCharNo.SetText(String::CreateFromInt32( rStat.nChar ));
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Aktualisieren der Statistik
+------------------------------------------------------------------------*/
+
+
+void SwDocStatPage::Update()
+{
+ SfxViewShell *pVSh = SfxViewShell::Current();
+ ViewShell *pSh = 0;
+ if ( pVSh->ISA(SwView) )
+ pSh = ((SwView*)pVSh)->GetWrtShellPtr();
+ else if ( pVSh->ISA(SwPagePreView) )
+ pSh = &((SwPagePreView*)pVSh)->GetViewShell();
+
+ ASSERT( pSh, "Shell not found" );
+
+ SwWait aWait( *pSh->GetDoc()->GetDocShell(), TRUE );
+ pSh->StartAction();
+ pSh->GetDoc()->UpdateDocStat( aDocStat, pSh->GetNumPages() );
+ pSh->EndAction();
+
+ SetData(aDocStat);
+}
+
+/*-----------------19.06.97 16.37-------------------
+ Zeilennummer aktualisieren
+--------------------------------------------------*/
+IMPL_LINK( SwDocStatPage, UpdateHdl, PushButton*, pButton)
+{
+ FillItemSet(*(SfxItemSet *)0); // Worttrenner setzen
+ aDocStat.bModified |= aWordDelim.IsModified();
+ aWordDelim.ClearModifyFlag();
+ Update();
+ SwDocShell* pDocShell = (SwDocShell*) SfxObjectShell::Current();
+ SwFEShell* pFEShell = pDocShell->GetFEShell();
+ aLineNo.SetText( String::CreateFromInt32( pFEShell->GetLineCount(FALSE)));
+ //pButton->Disable();
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.43 2000/09/18 16:05:20 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.42 2000/05/22 16:26:16 jp
+ Changes for Unicode
+
+ Revision 1.41 2000/04/13 08:01:20 os
+ UNICODE
+
+ Revision 1.40 1999/07/08 17:16:10 MA
+ Use internal object to toggle wait cursor
+
+
+ Rev 1.39 08 Jul 1999 19:16:10 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.38 26 May 1998 12:04:42 OM
+ #50480 Worttrenner aktualisieren
+
+ Rev 1.37 15 May 1998 12:48:22 OM
+ Worttrenner
+
+ Rev 1.36 14 May 1998 16:46:54 OM
+ Worttrenner konfigurierbar
+
+ Rev 1.35 01 Sep 1997 13:15:08 OS
+ DLL-Umstellung
+
+ Rev 1.34 27 Aug 1997 09:53:10 MH
+ chg: header
+
+ Rev 1.33 26 Aug 1997 14:53:38 TRI
+ VCL includes
+
+ Rev 1.32 23 Jun 1997 10:57:00 OS
+ LineCount: nicht die akt. Psition
+
+ Rev 1.31 20 Jun 1997 16:46:58 HJS
+ sexport -> __export
+
+ Rev 1.30 20 Jun 1997 16:41:40 HJS
+ sexport -> __export
+
+ Rev 1.29 19 Jun 1997 17:29:00 OS
+ Zeilen zaehlen
+
+ Rev 1.28 11 Nov 1996 09:31:16 MA
+ ResMgr
+
+ Rev 1.27 01 Nov 1996 10:32:20 OM
+ Statistik-TP auf Standardgroesse gebracht
+
+ Rev 1.26 28 Aug 1996 10:10:00 OS
+ includes
+
+ Rev 1.25 02 Jul 1996 18:43:38 MA
+ Wait-Umstellung 325
+
+ Rev 1.24 19 Jan 1996 20:07:42 MA
+ fix#24463# UpdateDocStat in Seitenansicht
+
+ Rev 1.23 24 Nov 1995 16:58:16 OM
+ PCH->PRECOMPILED
+
+ Rev 1.22 26 Feb 1995 15:37:28 MA
+ fix: SEXPORT nachgeruestet.
+
+ Rev 1.21 24 Jan 1995 12:49:46 SWG
+ Map entfernt
+
+ Rev 1.20 18 Jan 1995 19:12:48 ER
+ fld.hxx -> *fld*.hxx
+
+ Rev 1.19 09 Dec 1994 18:26:00 MS
+ DocStat geaendert
+
+ Rev 1.18 07 Dec 1994 17:00:20 MS
+ DocStat -> TabPage
+
+ Rev 1.17 25 Oct 1994 16:31:12 ER
+ add: PCH
+
+ Rev 1.16 17 Oct 1994 16:26:38 PK
+ ausgeboxtes wieder reingeboxt
+
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/dialog/docstdlg.hrc b/sw/source/ui/dialog/docstdlg.hrc
new file mode 100644
index 000000000000..3b75e178e84f
--- /dev/null
+++ b/sw/source/ui/dialog/docstdlg.hrc
@@ -0,0 +1,83 @@
+/*************************************************************************
+ *
+ * $RCSfile: docstdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 FT_TABLE 1
+#define FT_GRF 2
+#define FT_OLE 3
+#define FT_PAGE 4
+#define FT_PARA 5
+#define FT_WORD 6
+#define ED_WORD_DELIM 7
+#define FT_WORD_DELIM 8
+#define FT_CHAR 9
+#define FT_TABLE_COUNT 10
+#define FT_GRF_COUNT 11
+#define FT_OLE_COUNT 12
+#define FT_PAGE_COUNT 13
+#define FT_PARA_COUNT 14
+#define FT_WORD_COUNT 15
+#define FT_CHAR_COUNT 16
+#define FT_LINE 17
+#define FT_LINE_COUNT 18
+#define PB_PDATE 19
+
+#define BT_OK 100
+
diff --git a/sw/source/ui/dialog/docstdlg.src b/sw/source/ui/dialog/docstdlg.src
new file mode 100644
index 000000000000..48271d1d8822
--- /dev/null
+++ b/sw/source/ui/dialog/docstdlg.src
@@ -0,0 +1,411 @@
+/*************************************************************************
+ *
+ * $RCSfile: docstdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "globals.hrc"
+#include "docstdlg.hrc"
+#include "helpid.h"
+ // #define TP_DOC_STAT 256
+TabPage TP_DOC_STAT
+{
+ HelpID = HID_DOC_STAT ;
+ Hide = TRUE;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ FixedText FT_PAGE
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Anzahl Seiten:" ;
+ Text [ ENGLISH ] = "Number of pages:" ;
+ Text [ norwegian ] = "Number of pages:" ;
+ Text [ italian ] = "Numero di pagine:" ;
+ Text [ portuguese_brazilian ] = "Número de páginas:" ;
+ Text [ portuguese ] = "Número de páginas:" ;
+ Text [ finnish ] = "Sivuja:" ;
+ Text [ danish ] = "Antal sider:" ;
+ Text [ french ] = "Nombre de pages :" ;
+ Text [ swedish ] = "Antal sidor:" ;
+ Text [ dutch ] = "Aantal pagina's:" ;
+ Text [ spanish ] = "Número de páginas:" ;
+ Text [ english_us ] = "Number of Pages:" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ò³ÃæÊýÄ¿£º";
+ Text[ russian ] = "Êîëè÷åñòâî ñòðàíèö:";
+ Text[ polish ] = "Liczba stron:";
+ Text[ japanese ] = "Íß°¼Þ‘”:";
+ Text[ chinese_traditional ] = "¼Æ¥Ø ­¶¡G";
+ Text[ arabic ] = "ÚÏÏ ÇáÕÝÍÇÊ:";
+ Text[ greek ] = "Áñéèìüò óåëßäùí:";
+ Text[ korean ] = "ÆäÀÌÁö ¼ö:";
+ Text[ turkish ] = "Sayfa:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_TABLE
+ {
+ Pos = MAP_APPFONT ( 6 , 22 ) ;
+ 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 tableaux :" ;
+ Text [ swedish ] = "Antal tabeller:" ;
+ Text [ dutch ] = "Aantal tabellen:" ;
+ Text [ spanish ] = "Número de tablas:" ;
+ Text [ english_us ] = "Number of Tables:" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "±í¸ñÊýÄ¿£º";
+ Text[ russian ] = "Êîëè÷åñòâî òàáëèö:";
+ Text[ polish ] = "Liczba tabel:";
+ Text[ japanese ] = "•\\”:";
+ Text[ chinese_traditional ] = "ªí®æ¼Æ¥Ø¡G";
+ Text[ arabic ] = "ÚÏÏ ÇáÌÏÇæá:";
+ Text[ greek ] = "Áñéèìüò ðéíÜêùí:";
+ Text[ korean ] = "Ç¥ °³¼ö:";
+ Text[ turkish ] = "Tablo:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_GRF
+ {
+ Pos = MAP_APPFONT ( 6 , 38 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Anzahl Grafiken:" ;
+ Text [ ENGLISH ] = "Number of graphics:" ;
+ Text [ norwegian ] = "Number of graphics:" ;
+ Text [ italian ] = "Numero di immagini:" ;
+ Text [ portuguese_brazilian ] = "Número de gráficos:" ;
+ Text [ portuguese ] = "Número de imagens:" ;
+ Text [ finnish ] = "Kuvia:" ;
+ Text [ danish ] = "Antal billeder:" ;
+ Text [ french ] = "Nombre d'images :" ;
+ Text [ swedish ] = "Antal grafiker:" ;
+ Text [ dutch ] = "Aantal afbeeldingen:" ;
+ Text [ spanish ] = "Número de imágenes:" ;
+ Text [ english_us ] = "Number of Graphics:" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ͼÐÎÊýÄ¿£º";
+ Text[ russian ] = "Êîëè÷åñòâî ðèñóíêîâ:";
+ Text[ polish ] = "Liczba grafik:";
+ Text[ japanese ] = "¸Þ×̨¯¸‚Ì”:";
+ Text[ chinese_traditional ] = "¼Æ¥Ø ¹Ï¤ù¡G";
+ Text[ arabic ] = "ÚÏÏ ÇáÑÓæãÇÊ:";
+ Text[ greek ] = "Áñéèìüò ãñáöéêþí:";
+ Text[ korean ] = "±×·¡ÇÈ °³¼ö:";
+ Text[ turkish ] = "Grafik:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_OLE
+ {
+ Pos = MAP_APPFONT ( 6 , 54 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Anzahl OLE-Objekte:" ;
+ Text [ ENGLISH ] = "Number of OLE objects:" ;
+ Text [ norwegian ] = "Number of OLE objects:" ;
+ Text [ italian ] = "Numero di oggetti OLE:" ;
+ Text [ portuguese_brazilian ] = "Número de objetos OLE:" ;
+ Text [ portuguese ] = "Número de objectos OLE:" ;
+ Text [ finnish ] = "OLE-objekteja:" ;
+ Text [ danish ] = "Antal OLE-objekter:" ;
+ Text [ french ] = "Nombre d'objets OLE :" ;
+ Text [ swedish ] = "Antal OLE-objekt:" ;
+ Text [ dutch ] = "Aantal OLE-objecten:" ;
+ Text [ spanish ] = "Número de objetos OLE:" ;
+ Text [ english_us ] = "Number of OLE Objects:" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "OLE ¶ÔÏóÊýÄ¿£º";
+ Text[ russian ] = "Êîëè÷åñòâî îáúåêòîâ OLÅ:";
+ Text[ polish ] = "Liczba obiektów OLE:";
+ Text[ japanese ] = "OLEµÌÞ¼Þª¸Ä‚Ì”:";
+ Text[ chinese_traditional ] = "¼Æ¥Ø OLE-ª«¥ó¡G";
+ Text[ arabic ] = "ÚÏÏ ßÇÆäÇÊ OLE:";
+ Text[ greek ] = "Áñéèìüò áíôéêåéìÝíùí OLE:";
+ Text[ korean ] = "OLE °³Ã¼ °³¼ö:";
+ Text[ turkish ] = "OLE nesneleri:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_PARA
+ {
+ Pos = MAP_APPFONT ( 6 , 70 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Anzahl Absätze: : Anzahl Absõtze: */
+ Text = "Anzahl Absätze:" ;
+ Text [ ENGLISH ] = "Number of paragraphs:" ;
+ Text [ norwegian ] = "Number of paragraphs:" ;
+ Text [ italian ] = "Numero di paragrafi:" ;
+ Text [ portuguese_brazilian ] = "Número de parágrafos:" ;
+ Text [ portuguese ] = "Número de parágrafos:" ;
+ Text [ finnish ] = "Kappaleita:" ;
+ Text [ danish ] = "Antal afsnit:" ;
+ Text [ french ] = "Nombre de paragraphes :" ;
+ Text [ swedish ] = "Antal stycken:" ;
+ Text [ dutch ] = "Aantal alinea's:" ;
+ Text [ spanish ] = "Número de párrafos:" ;
+ Text [ english_us ] = "Number of Paragraphs:" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¶ÎÂäÊýÄ¿£º";
+ Text[ russian ] = "Êîëè÷åñòâî àáçàöåâ:";
+ Text[ polish ] = "Liczba akapitów:";
+ Text[ japanese ] = "’i—Ž”:";
+ Text[ chinese_traditional ] = "¼Æ¥Ø ¬q¸¨¡G";
+ Text[ arabic ] = "ÚÏÏ ÇáÝÞÑÇÊ:";
+ Text[ greek ] = "Áñéèìüò ðáñáãñÜöùí:";
+ Text[ korean ] = "´Ü¶ô °³¼ö:";
+ Text[ turkish ] = "Paragraf:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_WORD
+ {
+ Pos = MAP_APPFONT ( 6 , 86 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Anzahl Wörter: : Anzahl W÷rter: */
+ Text = "Anzahl Wörter:" ;
+ Text [ ENGLISH ] = "Number of words:" ;
+ Text [ norwegian ] = "Number of words:" ;
+ Text [ italian ] = "Numero di parole:" ;
+ Text [ portuguese_brazilian ] = "Número de palavras:" ;
+ Text [ portuguese ] = "Número de palavras:" ;
+ Text [ finnish ] = "Sanoja:" ;
+ Text [ danish ] = "Antal ord:" ;
+ Text [ french ] = "Nombre de mots :" ;
+ Text [ swedish ] = "Antal ord:" ;
+ Text [ dutch ] = "Aantal woorden:" ;
+ Text [ spanish ] = "Número de palabras:" ;
+ Text [ english_us ] = "Number of Words:" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "µ¥´ÊÊýÄ¿£º";
+ Text[ russian ] = "Êîëè÷åñòâî ñëîâ:";
+ Text[ polish ] = "Liczba s³ów:";
+ Text[ japanese ] = "Œê”:";
+ Text[ chinese_traditional ] = "¼Æ¥Ø ¦r¡G";
+ Text[ arabic ] = "ÚÏÏ ÇáßáãÇÊ:";
+ Text[ greek ] = "Áñéèìüò ëÝîåùí:";
+ Text[ korean ] = "´Ü¾î °³¼ö:";
+ Text[ turkish ] = "Sözcük:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_WORD_DELIM
+ {
+ Pos = MAP_APPFONT ( 144 , 86 ) ;
+ Size = MAP_APPFONT ( 57 , 10 ) ;
+ Text = "~Trenner" ;
+ Text [ ENGLISH ] = "Delimiter" ;
+ Left = TRUE ;
+ Text [ portuguese ] = "~Separador" ;
+ Text [ english_us ] = "Separator" ;
+ Text [ portuguese_brazilian ] = "Trenner" ;
+ Text [ swedish ] = "Avgränsare" ;
+ Text [ danish ] = "Separator" ;
+ Text [ italian ] = "~Separatore" ;
+ Text [ spanish ] = "Sepa~rador" ;
+ Text [ french ] = "~Séparateur" ;
+ Text [ dutch ] = "~Scheidingsteken" ;
+ Text[ chinese_simplified ] = "·Ö¸ô·û";
+ Text[ russian ] = "Ðàçäåëèòåëü";
+ Text[ polish ] = "Separator";
+ Text[ japanese ] = "‹æØ‚è‹L†";
+ Text[ chinese_traditional ] = "³s¦r²Å";
+ Text[ arabic ] = "ÝÇÕá";
+ Text[ greek ] = "Äéá÷ùñéóôéêü";
+ Text[ korean ] = "±¸ºÐÀÚ";
+ Text[ turkish ] = "~Ayýrma iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_WORD_DELIM
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 204 , 85 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_CHAR
+ {
+ Pos = MAP_APPFONT ( 6 , 102 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Anzahl Zeichen:" ;
+ Text [ ENGLISH ] = "Number of chars:" ;
+ Text [ norwegian ] = "Number of chars:" ;
+ Text [ italian ] = "Numero di caratteri:" ;
+ Text [ portuguese_brazilian ] = "Número de caracteres:" ;
+ Text [ portuguese ] = "Número de caracteres:" ;
+ Text [ finnish ] = "Merkkejä:" ;
+ Text [ danish ] = "Antal tegn:" ;
+ Text [ french ] = "Nombre de caractères :" ;
+ Text [ swedish ] = "Antal tecken:" ;
+ Text [ dutch ] = "Aantal tekens:" ;
+ Text [ spanish ] = "Número de caracteres:" ;
+ Text [ english_us ] = "Number of Characters:" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "×Ö·ûÊýÄ¿£º";
+ Text[ russian ] = "Êîëè÷åñòâî çíàêîâ:";
+ Text[ polish ] = "Liczba znaków:";
+ Text[ japanese ] = "•¶Žš”:";
+ Text[ chinese_traditional ] = "¼Æ¥Ø ¦r¤¸¡G";
+ Text[ arabic ] = "ÚÏÏ ÇáÃÍÑÝ:";
+ Text[ greek ] = "Áñéèìüò ÷áñáêôÞñùí:";
+ Text[ korean ] = "¹®ÀÚ °³¼ö:";
+ Text[ turkish ] = "Karakter:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_LINE
+ {
+ Pos = MAP_APPFONT ( 6 , 118 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Anzahl Zeilen:" ;
+ Text [ ENGLISH ] = "Number of lines:" ;
+ Text [ portuguese ] = "Número de linhas:" ;
+ Text [ english_us ] = "Number of Lines:" ;
+ Text [ portuguese_brazilian ] = "Anzahl Zeilen:" ;
+ Text [ swedish ] = "Antal rader:" ;
+ Text [ danish ] = "Antal rækker:" ;
+ Text [ italian ] = "Numero di righe:" ;
+ Text [ spanish ] = "Número de líneas:" ;
+ Text [ french ] = "Nombre de lignes :" ;
+ Text [ dutch ] = "Aantal regels:" ;
+ Text[ chinese_simplified ] = "ÐÐÊý£º";
+ Text[ russian ] = "Êîëè÷åñòâî ñòðîê:";
+ Text[ polish ] = "Liczba wierszy:";
+ Text[ japanese ] = "s”:";
+ Text[ chinese_traditional ] = "¼Æ¥Ø ¦æ¡G";
+ Text[ arabic ] = "ÚÏÏ ÇáÃÓØÑ:";
+ Text[ greek ] = "Áñéèìüò ãñáììþí:";
+ Text[ korean ] = "¼± °³¼ö:";
+ Text[ turkish ] = "Satýr:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_PAGE_COUNT
+ {
+ Pos = MAP_APPFONT ( 114 , 6 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Left = TRUE ;
+ };
+ FixedText FT_TABLE_COUNT
+ {
+ Pos = MAP_APPFONT ( 114 , 22 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Left = TRUE ;
+ };
+ FixedText FT_GRF_COUNT
+ {
+ Pos = MAP_APPFONT ( 114 , 38 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Left = TRUE ;
+ };
+ FixedText FT_OLE_COUNT
+ {
+ Pos = MAP_APPFONT ( 114 , 54 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Left = TRUE ;
+ };
+ FixedText FT_PARA_COUNT
+ {
+ Pos = MAP_APPFONT ( 114 , 70 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Left = TRUE ;
+ };
+ FixedText FT_WORD_COUNT
+ {
+ Pos = MAP_APPFONT ( 114 , 86 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Left = TRUE ;
+ };
+ FixedText FT_CHAR_COUNT
+ {
+ Pos = MAP_APPFONT ( 114 , 102 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Left = TRUE ;
+ };
+ FixedText FT_LINE_COUNT
+ {
+ Pos = MAP_APPFONT ( 114 , 118 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Left = TRUE ;
+ Text = "..." ;
+ };
+ PushButton PB_PDATE
+ {
+ Pos = MAP_APPFONT ( 204 , 116 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "~Aktualisieren" ;
+ Text [ ENGLISH ] = "~Update" ;
+ Text [ portuguese ] = "~Actualizar" ;
+ Text [ english_us ] = "~Update" ;
+ Text [ portuguese_brazilian ] = "Aktualisieren" ;
+ Text [ swedish ] = "Uppd~atera" ;
+ Text [ danish ] = "Opdater" ;
+ Text [ italian ] = "Aggiorna" ;
+ Text [ spanish ] = "~Actualizar" ;
+ Text [ french ] = "~Actualiser" ;
+ Text [ dutch ] = "~Actualiseren" ;
+ Text[ chinese_simplified ] = "¸üÐÂ(~U)";
+ Text[ russian ] = "Îáíîâèòü";
+ Text[ polish ] = "Aktualizuj";
+ Text[ japanese ] = "XV‚·‚é(~U)";
+ Text[ chinese_traditional ] = "§ó·s(~U)";
+ Text[ arabic ] = "ÊÍÏíË";
+ Text[ greek ] = "~ÅíçìÝñùóç";
+ Text[ korean ] = "¾÷ µ¥ÀÌÆ®(~U)";
+ Text[ turkish ] = "~Güncelle";
+ Text[ language_user1 ] = " ";
+ };
+};
diff --git a/sw/source/ui/dialog/macassgn.cxx b/sw/source/ui/dialog/macassgn.cxx
new file mode 100644
index 000000000000..a2731979772a
--- /dev/null
+++ b/sw/source/ui/dialog/macassgn.cxx
@@ -0,0 +1,293 @@
+/*************************************************************************
+ *
+ * $RCSfile: macassgn.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+
+#ifndef _SVX_HTMLMODE_HXX
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+#include "swtypes.hxx"
+#include "wrtsh.hxx"
+#include "viewopt.hxx"
+#include "macassgn.hxx"
+#include "swevent.hxx"
+#include "docsh.hxx"
+#include "globals.hrc"
+
+
+SvStringsDtor* __EXPORT _GetRangeHdl( _SfxMacroTabPage*, const String& );
+
+
+SwMacroAssignDlg::SwMacroAssignDlg( Window* pParent, SfxItemSet& rSet,
+ DlgEventType eType )
+ : SfxMacroAssignDlg( pParent, rSet )
+{
+ // TabPage holen
+ SwMacroAssignDlg::AddEvents( *(SfxSmallMacroTabPage*) GetTabPage(), eType );
+}
+
+
+SwMacroAssignDlg::~SwMacroAssignDlg()
+{
+}
+
+
+void SwMacroAssignDlg::AddEvents( SfxSmallMacroTabPage& rPg, DlgEventType eType )
+{
+ const SfxItemSet& rSet = rPg.GetItemSet();
+
+ BOOL bHtmlMode = FALSE;
+ USHORT nHtmlMode = ::GetHtmlMode((const SwDocShell*)SfxObjectShell::Current());
+ bHtmlMode = nHtmlMode & HTMLMODE_ON ? TRUE : FALSE;
+
+ switch( eType )
+ {
+ case MACASSGN_TEXTBAUST: // Textbausteine
+ rPg.SetGetRangeLink( &_GetRangeHdl );
+ rPg.AddEvent( String( SW_RES(STR_EVENT_START_INS_GLOSSARY) ),
+ SW_EVENT_START_INS_GLOSSARY );
+ rPg.AddEvent( String( SW_RES(STR_EVENT_END_INS_GLOSSARY) ),
+ SW_EVENT_END_INS_GLOSSARY);
+ // damit der neue Handler aktiv wird!
+ rPg.Reset( rSet );
+ break;
+ case MACASSGN_ALLFRM:
+ case MACASSGN_GRAPHIC: // Grafiken
+ {
+ rPg.AddEvent( String( SW_RES(STR_EVENT_IMAGE_ERROR) ),
+ SVX_EVENT_IMAGE_ERROR);
+ rPg.AddEvent( String( SW_RES(STR_EVENT_IMAGE_ABORT) ),
+ SVX_EVENT_IMAGE_ABORT);
+ rPg.AddEvent( String( SW_RES(STR_EVENT_IMAGE_LOAD) ),
+ SVX_EVENT_IMAGE_LOAD);
+ }
+ // kein break;
+ case MACASSGN_FRMURL: // Frm - URL-Attribute
+ {
+ if( !bHtmlMode &&
+ (MACASSGN_FRMURL == eType || MACASSGN_ALLFRM == eType))
+ {
+ rPg.AddEvent( String( SW_RES( STR_EVENT_FRM_KEYINPUT_A ) ),
+ SW_EVENT_FRM_KEYINPUT_ALPHA );
+ rPg.AddEvent( String( SW_RES( STR_EVENT_FRM_KEYINPUT_NOA ) ),
+ SW_EVENT_FRM_KEYINPUT_NOALPHA );
+ rPg.AddEvent( String( SW_RES( STR_EVENT_FRM_RESIZE ) ),
+ SW_EVENT_FRM_RESIZE );
+ rPg.AddEvent( String( SW_RES( STR_EVENT_FRM_MOVE ) ),
+ SW_EVENT_FRM_MOVE );
+ }
+ }
+ // kein break;
+ case MACASSGN_OLE: // OLE
+ {
+ if( !bHtmlMode )
+ rPg.AddEvent( String( SW_RES(STR_EVENT_OBJECT_SELECT) ),
+ SW_EVENT_OBJECT_SELECT );
+ }
+ // kein break;
+ case MACASSGN_INETFMT: // INetFmt-Attribute
+ {
+ rPg.AddEvent( String( SW_RES(STR_EVENT_MOUSEOVER_OBJECT) ),
+ SFX_EVENT_MOUSEOVER_OBJECT );
+ rPg.AddEvent( String( SW_RES(STR_EVENT_MOUSECLICK_OBJECT) ),
+ SFX_EVENT_MOUSECLICK_OBJECT);
+ rPg.AddEvent( String( SW_RES(STR_EVENT_MOUSEOUT_OBJECT) ),
+ SFX_EVENT_MOUSEOUT_OBJECT);
+ }
+ break;
+ }
+}
+
+
+BOOL SwMacroAssignDlg::INetFmtDlg( Window* pParent, SwWrtShell& rSh,
+ SvxMacroItem*& rpINetItem )
+{
+ BOOL bRet = FALSE;
+ SfxItemSet aSet( rSh.GetAttrPool(), RES_FRMMACRO, RES_FRMMACRO );
+ SvxMacroItem aItem;
+ if( !rpINetItem )
+ rpINetItem = new SvxMacroItem;
+ else
+ aItem.SetMacroTable( rpINetItem->GetMacroTable() );
+
+ aSet.Put( aItem );
+
+ SwMacroAssignDlg aMacDlg( pParent, aSet, MACASSGN_INETFMT );
+ if( aMacDlg.Execute() == RET_OK )
+ {
+ const SfxItemSet* pOutSet = aMacDlg.GetOutputItemSet();
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pOutSet->GetItemState( RES_FRMMACRO, FALSE, &pItem ))
+ {
+ rpINetItem->SetMacroTable( ((SvxMacroItem*)pItem)->GetMacroTable() );
+ bRet = TRUE;
+ }
+ }
+ return bRet;
+}
+
+
+SvStringsDtor* __EXPORT _GetRangeHdl( _SfxMacroTabPage* pTbPg, const String& rLanguage )
+{
+ SvStringsDtor* pNew = new SvStringsDtor;
+
+ SfxApplication* pSfxApp = SFX_APP();
+ if ( !rLanguage.EqualsAscii(SVX_MACRO_LANGUAGE_JAVASCRIPT) )
+ {
+ pSfxApp->EnterBasicCall();
+
+ String* pNewEntry = new String( pSfxApp->GetName() );
+ pNew->Insert( pNewEntry, pNew->Count() );
+
+ TypeId aType( TYPE( SwDocShell ));
+ SfxObjectShell* pDoc = SfxObjectShell::GetFirst( &aType );
+ while( pDoc )
+ {
+ pNewEntry = new String( pDoc->GetTitle() );
+ pNew->Insert( pNewEntry, pNew->Count() );
+ pDoc = SfxObjectShell::GetNext( *pDoc, &aType );
+ }
+ pSfxApp->LeaveBasicCall();
+ }
+
+ return pNew;
+}
+
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.40 2000/09/18 16:05:20 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.39 2000/04/20 12:55:01 os
+ GetName() returns String&
+
+ Revision 1.38 2000/02/11 14:44:39 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.37 1998/07/17 08:17:28 OS
+ SfxxSmallMacroTabPage einsetzen #52809#
+
+
+ Rev 1.36 17 Jul 1998 10:17:28 OS
+ SfxxSmallMacroTabPage einsetzen #52809#
+
+ Rev 1.35 10 Jul 1998 11:04:14 MBA
+ GetRangeHdl jetzt mit String
+
+ Rev 1.34 28 Nov 1997 17:57:10 MA
+ includes
+
+ Rev 1.33 25 Nov 1997 10:43:20 MA
+ includes
+
+ Rev 1.32 03 Nov 1997 13:12:26 MA
+ precomp entfernt
+
+ Rev 1.31 06 Aug 1997 11:59:46 TRI
+ VCL: includes
+
+ Rev 1.30 07 Apr 1997 14:24:32 MH
+ chg: header
+
+ Rev 1.29 21 Feb 1997 09:23:42 OS
+ ALL-define fuer Rahmenvorlagen
+
+ Rev 1.28 18 Feb 1997 17:07:52 JP
+ Erweiterung fuer Events am Frame
+
+ Rev 1.27 28 Jan 1997 16:31:18 OS
+ HtmlMode mit GetHtmlMode ermitteln
+
+ Rev 1.26 27 Jan 1997 15:34:46 OS
+ InetFmtDlg returnt Bool
+
+ Rev 1.25 08 Jan 1997 11:01:00 OS
+ SID_HTML_MODE jetzt UInt16Item
+
+ Rev 1.24 04 Dec 1996 15:04:52 JP
+ SW_EVENT -> SVX_EVENT/SFX_EVENT
+
+ Rev 1.23 03 Dec 1996 19:56:32 JP
+ Macrozuweisen-TabPage/-Dialog aus dem Writer exportiert, eigene Ableitung fuer setzen der Events
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/dialog/makefile.mk b/sw/source/ui/dialog/makefile.mk
new file mode 100644
index 000000000000..e9d132965c17
--- /dev/null
+++ b/sw/source/ui/dialog/makefile.mk
@@ -0,0 +1,114 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=dialog
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# future: DEMO\dialog.srs
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ addrdlg.cxx \
+ abstract.cxx \
+ ascfldlg.cxx \
+ docstdlg.cxx \
+ ltmpdlg.cxx \
+ macassgn.cxx \
+ regionsw.cxx
+
+SRCFILES = \
+ abstract.src \
+ ascfldlg.src \
+ dialog.src \
+ docstdlg.src \
+ macassgn.src \
+ ltmpdlg.src \
+ regionsw.src
+
+SLOFILES = \
+ $(SLO)$/abstract.obj \
+ $(SLO)$/addrdlg.obj \
+ $(SLO)$/ascfldlg.obj \
+ $(SLO)$/docstdlg.obj \
+ $(SLO)$/ltmpdlg.obj \
+ $(SLO)$/macassgn.obj \
+ $(SLO)$/regionsw.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/dialog/regionsw.cxx b/sw/source/ui/dialog/regionsw.cxx
new file mode 100644
index 000000000000..537fecae6556
--- /dev/null
+++ b/sw/source/ui/dialog/regionsw.cxx
@@ -0,0 +1,2365 @@
+/*************************************************************************
+ *
+ * $RCSfile: regionsw.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _DRAG_HXX //autogen
+#include <vcl/drag.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SOT_FORMATS_HXX //autogen
+#include <sot/formats.hxx>
+#endif
+#ifndef _PASSWD_HXX //autogen
+#include <sfx2/passwd.hxx>
+#endif
+#ifndef _SFX_DOCFILT_HACK_HXX //autogen
+#include <sfx2/docfilt.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _LINKMGR_HXX
+#include <so3/linkmgr.hxx>
+#endif
+#ifndef _SVX_SIZEITEM_HXX //autogen
+#define ITEMID_SIZE 0
+#include <svx/sizeitem.hxx>
+#endif
+#ifndef _OFA_HTMLCFG_HXX
+#include <offmgr/htmlcfg.hxx>
+#endif
+
+#ifndef _BOOKMRK_HXX //autogen
+#include <bookmrk.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx> // fuers SwSectionFmt-Array
+#endif
+#ifndef _SW3IO_HXX
+#include <sw3io.hxx> //fuer lcl_ReadSections
+#endif
+#ifndef _REGIONSW_HXX
+#include <regionsw.hxx>
+#endif
+#ifndef _BASESH_HXX
+#include <basesh.hxx>
+#endif
+#ifndef _WDOCSH_HXX
+#include <wdocsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx> // fuer Undo-Ids
+#endif
+#ifndef _COLUMN_HXX
+#include <column.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _SVX_BACKGRND_HXX //autogen
+#include <svx/backgrnd.hxx>
+#endif
+
+
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _REGIONSW_HRC
+#include <regionsw.hrc>
+#endif
+#ifndef _COMCORE_HRC
+#include <comcore.hrc>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+
+#define FILE_NAME_LENGTH 17
+
+
+SV_IMPL_OP_PTRARR_SORT( SectReprArr, SectReprPtr )
+
+
+USHORT lcl_GetRegion( const String& rRegionName, SwWrtShell& rWrtShell );
+void lcl_ReadSections( SwWrtShell& rSh, SfxMedium& rMedium, ComboBox& rBox );
+
+/* -----------------25.06.99 15:38-------------------
+
+ --------------------------------------------------*/
+class SwTestPasswdDlg : public SfxPasswordDialog
+{
+public:
+ SwTestPasswdDlg(Window* pParent) :
+ SfxPasswordDialog(pParent)
+ {
+ SetHelpId(HID_DLG_PASSWD_SECTION);
+ }
+
+
+};
+/*----------------------------------------------------------------------------
+ Beschreibung: User Data Klasse fuer Bereichsinformationen
+----------------------------------------------------------------------------*/
+
+SectRepr::SectRepr( USHORT nPos, SwSection& rSect ) :
+ aSection( CONTENT_SECTION, aEmptyStr ),
+ bSelected(FALSE),
+ bIsCondition(rSect.GetCondition().Len() > 0)
+{
+ aSection = rSect;
+ bContent = aSection.GetLinkFileName().Len() == 0;
+ nArrPos=nPos;
+ SwSectionFmt *pFmt = rSect.GetFmt();
+ if( pFmt )
+ {
+ aCol = pFmt->GetCol();
+ aBrush = pFmt->GetBackground();
+ aFtnNtAtEnd = pFmt->GetFtnAtTxtEnd();
+ aEndNtAtEnd = pFmt->GetEndAtTxtEnd();
+ aBalance.SetValue(pFmt->GetBalancedColumns().GetValue());
+ }
+}
+
+
+void SectRepr::SetFile( const String& rFile )
+{
+ String sNewFile( INetURLObject::decode( rFile, INET_HEX_ESCAPE,
+ INetURLObject::DECODE_WITH_CHARSET,
+ RTL_TEXTENCODING_UTF8 ));
+ String sOldFileName( aSection.GetLinkFileName() );
+ String sSub( sOldFileName.GetToken( 2, cTokenSeperator ) );
+
+ if( rFile.Len() || sSub.Len() )
+ {
+ sNewFile += cTokenSeperator;
+ if( rFile.Len() ) // Filter nur mit FileName
+ sNewFile += sOldFileName.GetToken( 1, cTokenSeperator );
+
+ sNewFile += cTokenSeperator;
+ sNewFile += sSub;
+ }
+
+ aSection.SetLinkFileName( sNewFile );
+
+ if( rFile.Len() || sSub.Len() )
+ aSection.SetType( FILE_LINK_SECTION );
+ else
+ aSection.SetType( CONTENT_SECTION );
+}
+
+
+void SectRepr::SetFilter( const String& rFilter )
+{
+ String sNewFile;
+ String sOldFileName( aSection.GetLinkFileName() );
+ String sFile( sOldFileName.GetToken( 0, cTokenSeperator ) );
+ String sSub( sOldFileName.GetToken( 2, cTokenSeperator ) );
+
+ if( sFile.Len() )
+ (((( sNewFile = sFile ) += cTokenSeperator ) += rFilter )
+ += cTokenSeperator ) += sSub;
+ else if( sSub.Len() )
+ (( sNewFile = cTokenSeperator ) += cTokenSeperator ) += sSub;
+
+ aSection.SetLinkFileName( sNewFile );
+
+ if( sNewFile.Len() )
+ aSection.SetType( FILE_LINK_SECTION );
+}
+
+void SectRepr::SetSubRegion(const String& rSubRegion)
+{
+ String sNewFile;
+ String sOldFileName( aSection.GetLinkFileName() );
+ String sFilter( sOldFileName.GetToken( 1, cTokenSeperator ) );
+ sOldFileName = sOldFileName.GetToken( 0, cTokenSeperator );
+
+ if( rSubRegion.Len() || sOldFileName.Len() )
+ (((( sNewFile = sOldFileName ) += cTokenSeperator ) += sFilter )
+ += cTokenSeperator ) += rSubRegion;
+
+ aSection.SetLinkFileName( sNewFile );
+
+ if( rSubRegion.Len() || sOldFileName.Len() )
+ aSection.SetType( FILE_LINK_SECTION );
+ else
+ aSection.SetType( CONTENT_SECTION );
+}
+
+
+String SectRepr::GetFile() const
+{
+ String sLinkFile( aSection.GetLinkFileName() );
+ if( sLinkFile.Len() )
+ {
+#ifdef DDE_AVAILABLE
+ if( DDE_LINK_SECTION == aSection.GetType() )
+ {
+ USHORT n = sLinkFile.SearchAndReplace( cTokenSeperator, ' ' );
+ sLinkFile.SearchAndReplace( cTokenSeperator, ' ', n );
+ }
+ else
+#endif
+ sLinkFile = sLinkFile.GetToken( 0, cTokenSeperator );
+ }
+ return sLinkFile;
+}
+
+
+String SectRepr::GetSubRegion() const
+{
+ String sLinkFile( aSection.GetLinkFileName() );
+ if( sLinkFile.Len() )
+ sLinkFile = sLinkFile.GetToken( 2, cTokenSeperator );
+ return sLinkFile;
+}
+
+
+
+
+/*----------------------------------------------------------------------------
+ Beschreibung: Dialog Bearbeiten Bereiche
+----------------------------------------------------------------------------*/
+
+//---------------------------------------------------------------------
+
+SwEditRegionDlg::SwEditRegionDlg( Window* pParent, SwWrtShell& rWrtSh )
+ : SfxModalDialog( pParent, SW_RES(MD_EDIT_REGION) ),
+ pAktEntry( 0 ),
+ rSh( rWrtSh ),
+#ifdef DDE_AVAILABLE
+ aDDECB ( this, SW_RES( CB_DDE ) ) ,
+ aDDECommandFT ( this, SW_RES( FT_DDE ) ) ,
+#endif
+ aConditionED ( this, SW_RES( ED_CONDITION ) ),
+ aOK ( this, SW_RES( PB_OK ) ),
+ aOptionsPB ( this, SW_RES( PB_OPTIONS ) ),
+ aDismiss ( this, SW_RES( CB_DISMISS ) ),
+ aHelp ( this, SW_RES( PB_HELP ) ),
+ aNameFT ( this, SW_RES( FT_RNAME ) ),
+ aCurName ( this, SW_RES( ED_RANAME ) ),
+ aProtectCB ( this, SW_RES( CB_PROTECT ) ),
+ aPasswdCB ( this, SW_RES( CB_PASSWD ) ),
+ aHideCB ( this, SW_RES( CB_HIDE ) ),
+ aCondCB ( this, SW_RES( CB_CONDITION ) ),
+ aFileCB ( this, SW_RES( CB_FILE ) ),
+ aFilePB ( this, SW_RES( PB_FILE ) ),
+ aFileNameFT ( this, SW_RES( FT_FILE ) ) ,
+ aFileNameED ( this, SW_RES( ED_FILE ) ),
+ aSubRegionFT ( this, SW_RES( FT_SUBREG ) ) ,
+ aSubRegionED ( this, SW_RES( LB_SUBREG ) ) ,
+ aGroupBoxName ( this, SW_RES( GB_EDIT_SECTION ) ),
+ aCancel ( this, SW_RES( PB_CANCEL ) ),
+ aProtHideBM ( SW_RES( BMP_REG_PROT_HIDE ) ),
+ aProtNoHideBM ( SW_RES( BMP_REG_PROT_NOHIDE ) ),
+ aNoProtHideBM ( SW_RES( BMP_REG_NOPROT_HIDE ) ),
+ aNoProtNoHideBM ( SW_RES( BMP_REG_NOPROT_NOHIDE ) ),
+ aExpNode ( SW_RES( BMP_REG_EXPNODE ) ),
+ aCollNode ( SW_RES( BMP_REG_COLLNODE ) ),
+ aGroupBoxOptions ( this, SW_RES( GB_EDIT_OPTIONS ) ),
+ aTree ( this, SW_RES( TLB_SECTION ))
+{
+ FreeResource();
+ bWeb = 0 != PTR_CAST( SwWebDocShell, rSh.GetView().GetDocShell() );
+ bIsPasswd=FALSE;
+ bIsPasswdSet=FALSE;
+
+ aTree.SetSelectHdl ( LINK( this, SwEditRegionDlg, GetFirstEntryHdl));
+ aTree.SetDeselectHdl ( LINK( this, SwEditRegionDlg, DeselectHdl));
+ aCurName.SetModifyHdl ( LINK( this, SwEditRegionDlg, NameEditHdl));
+ aConditionED.SetModifyHdl( LINK( this, SwEditRegionDlg, ConditionEditHdl));
+ aOK.SetClickHdl ( LINK( this, SwEditRegionDlg, OkHdl));
+ aPasswdCB.SetClickHdl ( LINK( this, SwEditRegionDlg, ChangePasswdHdl));
+ aHideCB.SetClickHdl ( LINK( this, SwEditRegionDlg, ChangeHideHdl));
+ aOptionsPB.Show();
+ aOptionsPB.SetClickHdl ( LINK( this, SwEditRegionDlg, OptionsHdl));
+ aCondCB.SetClickHdl ( LINK( this, SwEditRegionDlg, ChangeCondHdl));
+ aProtectCB.SetClickHdl ( LINK( this, SwEditRegionDlg, ChangeProtectHdl));
+ aDismiss.SetClickHdl ( LINK( this, SwEditRegionDlg, ChangeDismissHdl));
+ aFileCB.SetClickHdl ( LINK( this, SwEditRegionDlg, UseFileHdl ));
+ aFilePB.SetClickHdl ( LINK( this, SwEditRegionDlg, FileSearchHdl ));
+ aFileNameED.SetModifyHdl( LINK( this, SwEditRegionDlg, FileNameHdl ));
+ aSubRegionED.SetModifyHdl( LINK( this, SwEditRegionDlg, FileNameHdl ));
+
+ aTree.SetHelpId(HID_REGION_TREE);
+ aTree.SetSelectionMode( MULTIPLE_SELECTION );
+ aTree.SetWindowBits(WB_HASBUTTONSATROOT|WB_CLIPCHILDREN|WB_HSCROLL);
+ aTree.SetFont(Application::GetSettings().GetStyleSettings().GetAppFont());
+ aTree.SetNodeBitmaps( aExpNode,aCollNode );
+ aTree.SetSpaceBetweenEntries(0);
+
+ if(bWeb)
+ {
+ aConditionED .Hide();
+ aPasswdCB .Hide();
+ aHideCB .Hide();
+ aCondCB .Hide();
+#ifdef DDE_AVAILABLE
+ aDDECB .Hide();
+ aDDECommandFT .Hide();
+#endif
+ }
+
+#ifdef DDE_AVAILABLE
+ aDDECB.SetClickHdl ( LINK( this, SwEditRegionDlg, DDEHdl ));
+#endif
+
+ //Array enthaelt Bitmaps nach den Eigenschaften Hide und Protect
+ aBmpArr[0]= aNoProtNoHideBM;
+ aBmpArr[1]= aProtNoHideBM;
+ aBmpArr[2]= aNoProtHideBM;
+ aBmpArr[3]= aProtHideBM;
+
+ //Ermitteln der vorhandenen Bereiche
+ pCurrSect = rSh.GetCurrSection();
+ RecurseList( 0, 0 );
+ //falls der Cursor nicht in einem Bereich steht,
+ //wird immer der erste selektiert
+ if( !aTree.FirstSelected() && aTree.First() )
+ aTree.Select( aTree.First() );
+ aTree.Show();
+}
+
+/*-----------------18.09.97 08:09-------------------
+
+--------------------------------------------------*/
+void SwEditRegionDlg::SetPassword(const String& rPassWd)
+{
+ aNewPasswd = rPassWd;
+ aPasswdCB.Check(rPassWd.Len() > 0);
+}
+/*---------------------------------------------------------------------
+ Beschreibung: Durchsuchen nach Child-Sections, rekursiv
+---------------------------------------------------------------------*/
+
+void SwEditRegionDlg::RecurseList( const SwSectionFmt* pFmt, SvLBoxEntry* pEntry )
+{
+ SwSection* pSect;
+ SvLBoxEntry* pSelEntry = 0;
+
+ if (!pFmt)
+ {
+ SvLBoxEntry* pEntry;
+ const SwSectionFmt* pFmt;
+ USHORT nCount=rSh.GetSectionFmtCount();
+ for ( USHORT n=0; n < nCount; n++ )
+ {
+ SectionType eTmpType;
+ if( !( pFmt = &rSh.GetSectionFmt(n))->GetParent() &&
+ pFmt->IsInNodesArr() &&
+ (eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
+ && TOX_HEADER_SECTION != eTmpType )
+ {
+ SectRepr* pSectRepr = new SectRepr( n,
+ *(pSect=pFmt->GetSection()) );
+ Bitmap aBM=BuildBitmap( pSect->IsProtect(),pSect->IsHidden());
+ pEntry = aTree.InsertEntry( pSect->GetName(), aBM, aBM );
+ pEntry->SetUserData(pSectRepr);
+ RecurseList( pFmt, pEntry );
+ if (pEntry->HasChilds())
+ aTree.Expand(pEntry);
+ if (pCurrSect==pSect)
+ aTree.Select(pEntry);
+ }
+ }
+ }
+ else
+ {
+ SwSections aTmpArr;
+ SvLBoxEntry* pNEntry;
+ USHORT nCnt = pFmt->GetChildSections(aTmpArr,SORTSECT_POS);
+ if( nCnt )
+ {
+ for( USHORT n = 0; n < nCnt; ++n )
+ {
+ SectionType eTmpType;
+ const SwSectionFmt* pFmt = aTmpArr[n]->GetFmt();
+ if( pFmt->IsInNodesArr() &&
+ (eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
+ && TOX_HEADER_SECTION != eTmpType )
+ {
+ pSect=aTmpArr[n];
+ SectRepr* pSectRepr=new SectRepr(
+ FindArrPos( pSect->GetFmt() ), *pSect );
+ Bitmap aBM=BuildBitmap( pSect->IsProtect(),
+ pSect->IsHidden());
+ pNEntry=aTree.InsertEntry( pSect->GetName(),aBM,aBM,pEntry);
+ pNEntry->SetUserData(pSectRepr);
+ RecurseList( aTmpArr[n]->GetFmt(), pNEntry );
+ if( pNEntry->HasChilds())
+ aTree.Expand(pNEntry);
+ if (pCurrSect==pSect)
+ pSelEntry = pNEntry;
+ }
+ }
+ }
+ }
+ if(0 != pSelEntry)
+ {
+ aTree.MakeVisible(pSelEntry);
+ aTree.Select(pSelEntry);
+ }
+}
+/*---------------------------------------------------------------------
+
+---------------------------------------------------------------------*/
+
+USHORT SwEditRegionDlg::FindArrPos(const SwSectionFmt* pFmt )
+{
+ USHORT nCount=rSh.GetSectionFmtCount();
+ for (USHORT i=0;i<nCount;i++)
+ if (pFmt==&rSh.GetSectionFmt(i))
+ return i;
+
+ DBG_ERROR( "SectionFormat nicht in der Liste" );
+ return USHRT_MAX;
+}
+/*---------------------------------------------------------------------
+ Beschreibung:
+---------------------------------------------------------------------*/
+
+SwEditRegionDlg::~SwEditRegionDlg( )
+{
+ SvLBoxEntry* pEntry = aTree.First();
+ while( pEntry )
+ {
+ delete (SectRepr*)pEntry->GetUserData();
+ pEntry = aTree.Next( pEntry );
+ }
+
+ aSectReprArr.DeleteAndDestroy( 0, aSectReprArr.Count() );
+}
+
+/*---------------------------------------------------------------------
+ Beschreibung: Selektierte Eintrag in der TreeListBox wird im
+ Edit-Fenster angezeigt
+ Bei Multiselektion werden einige Controls disabled
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwEditRegionDlg, GetFirstEntryHdl, SvTreeListBox *, pBox )
+{
+ SvLBoxEntry* pEntry=pBox->FirstSelected();
+ aHideCB .Enable(TRUE);
+ aProtectCB .Enable(TRUE);
+ aFileCB .Enable(TRUE);
+
+ if( 1 < pBox->GetSelectionCount() )
+ {
+ aHideCB.EnableTriState( TRUE );
+ aProtectCB.EnableTriState( TRUE );
+ aCondCB.EnableTriState( TRUE );
+ aFileCB.EnableTriState( TRUE );
+
+ BOOL bHiddenValid = TRUE;
+ BOOL bProtectValid = TRUE;
+ BOOL bIsConditionValid = TRUE;
+ BOOL bConditionValid = TRUE;
+ BOOL bHidden = TRUE;
+ BOOL bProtect = TRUE;
+ String sCondition;
+ BOOL bFirst = TRUE;
+ BOOL bFileValid = TRUE;
+ BOOL bFile = TRUE;
+
+ SvLBoxEntry* pEntry = pBox->FirstSelected();
+ while( pEntry )
+ {
+ SectRepr* pRepr=(SectRepr*) pEntry->GetUserData();
+ if(bFirst)
+ {
+ sCondition = pRepr->GetCondition();
+ bHidden = pRepr->IsHidden();
+ bProtect = pRepr->IsProtect();
+ bFile = pRepr->GetSectionType() != CONTENT_SECTION;
+ }
+ else
+ {
+ String sTemp(pRepr->GetCondition());
+ if(sCondition != sTemp)
+ bConditionValid = FALSE;
+ bHiddenValid = bHidden == pRepr->IsHidden();
+ bProtectValid = bProtect == pRepr->IsProtect();
+ bIsConditionValid = (sTemp.Len() > 0) == (sCondition.Len() > 0);
+ bFileValid = (pRepr->GetSectionType() != CONTENT_SECTION) == bFile;
+ }
+ pEntry = pBox->NextSelected(pEntry);
+ bFirst = FALSE;
+ }
+
+ aHideCB.SetState( !bHiddenValid ? STATE_DONTKNOW :
+ bHidden ? STATE_CHECK : STATE_NOCHECK);
+ aProtectCB.SetState( !bProtectValid ? STATE_DONTKNOW :
+ bProtect ? STATE_CHECK : STATE_NOCHECK);
+ aCondCB.SetState(!bIsConditionValid ? STATE_DONTKNOW :
+ sCondition.Len() > 0 ? STATE_CHECK : STATE_NOCHECK);
+ aFileCB.SetState(!bFileValid ? STATE_DONTKNOW :
+ bFile ? STATE_CHECK : STATE_NOCHECK);
+
+ if(bConditionValid)
+ aConditionED.SetText(sCondition);
+ else
+ {
+// aConditionED.SetText(aEmptyStr);
+ aConditionED.Enable(FALSE);
+ }
+
+ aFilePB.Enable(FALSE);
+ aFileNameFT .Enable(FALSE);
+ aFileNameED .Enable(FALSE);
+ aSubRegionFT.Enable(FALSE);
+ aSubRegionED.Enable(FALSE);
+ aNameFT .Enable(FALSE);
+ aCurName .Enable(FALSE);
+ aOptionsPB .Enable(FALSE);
+#ifdef DDE_AVAILABLE
+ aDDECB .Enable(FALSE);
+ aDDECommandFT .Enable(FALSE);
+#endif
+
+ }
+ else if (pEntry )
+ {
+ aNameFT .Enable(TRUE);
+ aCurName .Enable(TRUE);
+ aOptionsPB .Enable(TRUE);
+ SectRepr* pRepr=(SectRepr*) pEntry->GetUserData();
+ aConditionED.SetText(pRepr->GetCondition());
+ aHideCB.Enable();
+ aHideCB.SetState(pRepr->IsHidden() ? STATE_CHECK : STATE_NOCHECK);
+ aCondCB.SetState( 0 != aConditionED.GetText().Len() ? STATE_CHECK : STATE_NOCHECK);
+ BOOL bHide = STATE_CHECK == aHideCB.GetState();
+ aCondCB.Enable(bHide);
+ aConditionED.Enable(STATE_CHECK == aCondCB.GetState() && bHide);
+
+ aOK.Enable();
+ aPasswdCB.Enable();
+ aCurName.SetText(pBox->GetEntryText(pEntry));
+ aCurName.Enable();
+ aDismiss.Enable();
+ String aFile = pRepr->GetFile();
+ String sSub = pRepr->GetSubRegion();
+ if(aFile.Len()||sSub.Len())
+ {
+ aFileCB.Check(TRUE);
+ aFileNameED.SetText(aFile);
+ aSubRegionED.SetText(sSub);
+#ifdef DDE_AVAILABLE
+ aDDECB.Check(pRepr->GetSectionType() == DDE_LINK_SECTION );
+#endif
+ }
+ else
+ {
+ aFileCB.Check(FALSE);
+ aFileNameED.SetText(aFile);
+#ifdef DDE_AVAILABLE
+ aDDECB.Enable(FALSE);
+ aDDECB.Check(FALSE);
+#endif
+ }
+ UseFileHdl(&aFileCB);
+#ifdef DDE_AVAILABLE
+ DDEHdl( &aDDECB );
+#endif
+ aProtectCB.SetState(pRepr->IsProtect() ? STATE_CHECK : STATE_NOCHECK);
+ aProtectCB.Enable();
+ }
+ return 0;
+}
+/*-----------------28.06.97 09:19-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwEditRegionDlg, DeselectHdl, SvTreeListBox *, pBox )
+{
+ if( !pBox->GetSelectionCount() )
+ {
+ aHideCB .Enable(FALSE);
+ aProtectCB .Enable(FALSE);
+ aCondCB .Enable(FALSE);
+ aConditionED.Enable(FALSE);
+ aFileCB .Enable(FALSE);
+ aFilePB .Enable(FALSE);
+ aFileNameFT .Enable(FALSE);
+ aFileNameED .Enable(FALSE);
+ aSubRegionFT .Enable(FALSE);
+ aSubRegionED .Enable(FALSE);
+ aNameFT .Enable(FALSE);
+ aCurName .Enable(FALSE);
+#ifdef DDE_AVAILABLE
+ aDDECB .Enable(FALSE);
+ aDDECommandFT .Enable(FALSE);
+#endif
+
+ UseFileHdl(&aFileCB);
+#ifdef DDE_AVAILABLE
+ DDEHdl( &aDDECB );
+#endif
+ }
+ return 0;
+}
+
+/*---------------------------------------------------------------------
+ Beschreibung: Im OkHdl werden die veraenderten Einstellungen
+ uebernommen und aufgehobene Bereiche geloescht
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwEditRegionDlg, OkHdl, CheckBox *, EMPTYARG )
+{
+ // JP 13.03.96:
+ // temp. Array weil sich waehrend des aendern eines Bereiches die
+ // Position innerhalb des "Core-Arrays" verschieben kann:
+ // - bei gelinkten Bereichen, wenn sie weitere SubBereiche haben oder
+ // neu erhalten.
+ // JP 30.05.97: StartUndo darf natuerlich auch erst nach dem Kopieren
+ // der Formate erfolgen (ClearRedo!)
+
+ const SwSectionFmts& rDocFmts = rSh.GetDoc()->GetSections();
+ SwSectionFmts aOrigArray( 0, 5 );
+ aOrigArray.Insert( &rDocFmts, 0 );
+
+ rSh.StartAllAction();
+ rSh.StartUndo( UNDO_CHGSECTION );
+ rSh.ResetSelect( 0,FALSE );
+ SvLBoxEntry* pEntry = aTree.First();
+
+ while( pEntry )
+ {
+ SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
+ SwSectionFmt* pFmt = aOrigArray[ pRepr->GetArrPos() ];
+ USHORT nNewPos = rDocFmts.GetPos( pFmt );
+ if( USHRT_MAX != nNewPos )
+ {
+ SfxItemSet* pSet = pFmt->GetAttrSet().Clone( FALSE );
+ if( pFmt->GetCol() != pRepr->GetCol() )
+ pSet->Put( pRepr->GetCol() );
+
+ if( pFmt->GetBackground(FALSE) != pRepr->GetBackground() )
+ pSet->Put( pRepr->GetBackground() );
+
+ if( pFmt->GetFtnAtTxtEnd(FALSE) != pRepr->GetFtnNtAtEnd() )
+ pSet->Put( pRepr->GetFtnNtAtEnd() );
+
+ if( pFmt->GetEndAtTxtEnd(FALSE) != pRepr->GetEndNtAtEnd() )
+ pSet->Put( pRepr->GetEndNtAtEnd() );
+
+ if( pFmt->GetBalancedColumns() != pRepr->GetBalance() )
+ pSet->Put( pRepr->GetBalance() );
+
+ //the condition depends on the string and the setting of the CheckBox/bIsCondition flag
+ if(!pRepr->IsConditionValid() && pRepr->GetCondition().Len())
+ pRepr->SetCondition(aEmptyStr);
+
+ rSh.ChgSection( nNewPos, pRepr->GetSection(),
+ pSet->Count() ? pSet : 0 );
+ delete pSet;
+ }
+ pEntry = aTree.Next( pEntry );
+ }
+
+ for(USHORT i = aSectReprArr.Count(); i; )
+ {
+ SwSectionFmt* pFmt = aOrigArray[ aSectReprArr[ --i ]->GetArrPos() ];
+ USHORT nNewPos = rDocFmts.GetPos( pFmt );
+ if( USHRT_MAX != nNewPos )
+ rSh.DelSectionFmt( nNewPos );
+ }
+ rSh.ChgSectionPasswd(aNewPasswd);
+
+ aOrigArray.Remove( 0, aOrigArray.Count() );
+
+ //JP 21.05.97: EndDialog muss vor Ende der EndAction gerufen werden,
+ // sonst kann es ScrollFehler geben.
+ EndDialog(RET_OK);
+
+ rSh.EndUndo( UNDO_CHGSECTION );
+ rSh.EndAllAction();
+
+ return 0;
+}
+/*---------------------------------------------------------------------
+ Beschreibung: Toggle protect
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwEditRegionDlg, ChangeProtectHdl, TriStateBox *, pBox )
+{
+ pBox->EnableTriState( FALSE );
+ SvLBoxEntry* pEntry=aTree.FirstSelected();
+ DBG_ASSERT(pEntry,"kein Entry gefunden");
+ while( pEntry )
+ {
+ SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
+ pRepr->SetProtect(STATE_CHECK == pBox->GetState());
+ Bitmap& aBmp=BuildBitmap(STATE_CHECK == pBox->GetState(),
+ STATE_CHECK == aHideCB.GetState());
+ aTree.SetExpandedEntryBmp(pEntry,aBmp);
+ aTree.SetCollapsedEntryBmp(pEntry,aBmp);
+ pEntry = aTree.NextSelected(pEntry);
+ }
+ return 0;
+}
+/*---------------------------------------------------------------------
+ Beschreibung: Toggle hide
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwEditRegionDlg, ChangeHideHdl, TriStateBox *, pBox )
+{
+ pBox->EnableTriState( FALSE );
+ SvLBoxEntry* pEntry=aTree.FirstSelected();
+ DBG_ASSERT(pEntry,"kein Entry gefunden");
+ while( pEntry )
+ {
+ SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
+ pRepr->SetHidden(STATE_CHECK == pBox->GetState());
+ Bitmap& aBmp=BuildBitmap(STATE_CHECK == aProtectCB.GetState(),
+ STATE_CHECK == pBox->GetState());
+ aTree.SetExpandedEntryBmp(pEntry,aBmp);
+ aTree.SetCollapsedEntryBmp(pEntry,aBmp);
+
+ pEntry = aTree.NextSelected(pEntry);
+ }
+
+ BOOL bHide = STATE_CHECK == pBox->GetState();
+ aConditionED.Enable(bHide && STATE_CHECK == aCondCB.GetState());
+ aCondCB.Enable(bHide);
+ if(!bHide)
+ {
+ aCondCB.SetState(STATE_NOCHECK);
+ ChangeCondHdl(&aCondCB);
+ }
+ return 0;
+}
+/*---------------------------------------------------------------------
+
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwEditRegionDlg, ChangeCondHdl, TriStateBox *, pBox )
+{
+ pBox->EnableTriState( FALSE );
+ BOOL bCond = STATE_CHECK == pBox->GetState();
+ aConditionED.Enable(bCond);
+ SvLBoxEntry* pEntry=aTree.FirstSelected();
+ DBG_ASSERT(pEntry,"kein Entry gefunden");
+ while( pEntry )
+ {
+ SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
+ pRepr->SetConditionValid(bCond);
+ pEntry = aTree.NextSelected(pEntry);
+ }
+ if(bCond)
+ aConditionED.GrabFocus();
+ return 0;
+}
+/*---------------------------------------------------------------------
+ Beschreibung: selektierten Bereich aufheben
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwEditRegionDlg, ChangeDismissHdl, CheckBox *, EMPTYARG )
+{
+ SvLBoxEntry* pEntry = aTree.FirstSelected();
+ SvLBoxEntry* pChild;
+ SvLBoxEntry* pParent;
+ //zuerst alle selektierten markieren
+ while(pEntry)
+ {
+ const SectReprPtr pSectRepr = (SectRepr*)pEntry->GetUserData();
+ pSectRepr->SetSelected();
+ pEntry = aTree.NextSelected(pEntry);
+ }
+ pEntry = aTree.FirstSelected();
+ // dann loeschen
+ while(pEntry)
+ {
+ const SectReprPtr pSectRepr = (SectRepr*)pEntry->GetUserData();
+ SvLBoxEntry* pRemove = 0;
+ BOOL bRestart = FALSE;
+ if(pSectRepr->IsSelected())
+ {
+ aSectReprArr.Insert( pSectRepr );
+ while( (pChild = aTree.FirstChild(pEntry) )!= 0 )
+ {
+ //durch das Umhaengen muss wieder am Anfang aufgesetzt werden
+ bRestart = TRUE;
+ pParent=aTree.GetParent(pEntry);
+ aTree.GetModel()->Move(pChild, pParent, aTree.GetModel()->GetRelPos(pEntry));
+ }
+ pRemove = pEntry;
+ }
+ if(bRestart)
+ pEntry = aTree.First();
+ else
+ pEntry = aTree.Next(pEntry);
+ if(pRemove)
+ aTree.GetModel()->Remove( pRemove );
+ }
+
+ if ( (pEntry=aTree.FirstSelected()) == 0 )
+ {
+ aConditionED. Enable(FALSE);
+ aDismiss. Enable(FALSE);
+ aCurName. Enable(FALSE);
+ aProtectCB. Enable(FALSE);
+ aPasswdCB. Enable(FALSE);
+ aHideCB. Enable(FALSE);
+ aProtectCB. SetState(STATE_NOCHECK);
+ aPasswdCB. Check(FALSE);
+ aHideCB. SetState(STATE_NOCHECK);
+ aFileCB. Check(FALSE);
+ //sonst liegt der Focus auf dem HelpButton
+ aOK.GrabFocus();
+ UseFileHdl(&aFileCB);
+ }
+ return 0;
+}
+/*---------------------------------------------------------------------
+ Beschreibung: CheckBox mit Datei verknuepfenï
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwEditRegionDlg, UseFileHdl, CheckBox *, pBox )
+{
+ SvLBoxEntry* pEntry = aTree.FirstSelected();
+ pBox->EnableTriState(FALSE);
+ BOOL bMulti = 1 < aTree.GetSelectionCount();
+ BOOL bFile = pBox->IsChecked();
+ if(pEntry)
+ {
+ while(pEntry)
+ {
+ const SectReprPtr pSectRepr = (SectRepr*)pEntry->GetUserData();
+ BOOL bContent = pSectRepr->IsContent();
+ if( pBox->IsChecked() && bContent && rSh.HasSelection() )
+ {
+ if( RET_NO == QueryBox( this, SW_RES(QB_CONNECT) ).Execute() )
+ pBox->Check( FALSE );
+ }
+ if( bFile )
+ pSectRepr->SetContent(FALSE);
+ else
+ {
+ pSectRepr->SetFile(aEmptyStr);
+ pSectRepr->SetSubRegion(aEmptyStr);
+ pSectRepr->SetFilePasswd(aEmptyStr);
+ }
+
+ pEntry = aTree.NextSelected(pEntry);
+ }
+ aFileNameFT.Enable(bFile && ! bMulti);
+ aFileNameED.Enable(bFile && ! bMulti);
+ aFilePB.Enable(bFile && ! bMulti);
+ aSubRegionED.Enable(bFile && ! bMulti);
+ aSubRegionFT.Enable(bFile && ! bMulti);
+#ifdef DDE_AVAILABLE
+ aDDECommandFT.Enable(bFile && ! bMulti);
+ aDDECB.Enable(bFile && ! bMulti);
+#endif
+ if( bFile )
+ {
+ aProtectCB.SetState(STATE_CHECK);
+ aFileNameED.GrabFocus();
+
+ }
+ else
+ {
+#ifdef DDE_AVAILABLE
+ aDDECB.Check(FALSE);
+ DDEHdl(&aDDECB);
+#endif
+// aFileNameED.SetText(aEmptyStr);
+ aSubRegionED.SetText(aEmptyStr);
+ }
+ }
+ else
+ {
+ pBox->Check(FALSE);
+ pBox->Enable(FALSE);
+ aFilePB.Enable(FALSE);
+ aFileNameED.Enable(FALSE);
+ aFileNameFT.Enable(FALSE);
+ aSubRegionED.Enable(FALSE);
+ aSubRegionFT.Enable(FALSE);
+#ifdef DDE_AVAILABLE
+ aDDECB.Check(FALSE);
+ aDDECB.Enable(FALSE);
+ aDDECommandFT.Enable(FALSE);
+#endif
+ }
+ return 0;
+}
+
+/*---------------------------------------------------------------------
+ Beschreibung: Dialog Datei einfuegen rufen
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwEditRegionDlg, FileSearchHdl, PushButton *, EMPTYARG )
+{
+ SfxMedium* pMed;
+ String sFileName, sFilterName, sFilePasswd;
+ if( GetFileFilterNameDlg( *this, sFileName, &sFilePasswd,
+ &sFilterName, &pMed ))
+ {
+ aFileNameED.SetText( sFileName );
+ ::lcl_ReadSections( rSh, *pMed, aSubRegionED );
+ delete pMed;
+ }
+
+ SvLBoxEntry* pEntry = aTree.FirstSelected();
+ DBG_ASSERT(pEntry,"kein Entry gefunden");
+ if(pEntry)
+ {
+ SectReprPtr pSectRepr = (SectRepr*)pEntry->GetUserData();
+ pSectRepr->SetFile( sFileName );
+ pSectRepr->SetFilter( sFilterName );
+ pSectRepr->SetFilePasswd( sFilePasswd );
+ }
+ return 0;
+}
+
+/*---------------------------------------------------------------------
+ Beschreibung:
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwEditRegionDlg, OptionsHdl, PushButton *, EMPTYARG )
+{
+ SvLBoxEntry* pEntry = aTree.FirstSelected();
+
+ if(pEntry)
+ {
+ SectReprPtr pSectRepr = (SectRepr*)pEntry->GetUserData();
+ SfxItemSet aSet(rSh.GetView().GetPool(),
+ RES_COL, RES_COL,
+ RES_COLUMNBALANCE, RES_COLUMNBALANCE,
+ RES_BACKGROUND, RES_BACKGROUND,
+ RES_FRM_SIZE, RES_FRM_SIZE,
+ SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
+ RES_LR_SPACE, RES_LR_SPACE,
+ RES_FTN_AT_TXTEND, RES_END_AT_TXTEND,
+ 0);
+
+ aSet.Put( pSectRepr->GetCol() );
+ aSet.Put( pSectRepr->GetBackground() );
+ aSet.Put( pSectRepr->GetFtnNtAtEnd() );
+ aSet.Put( pSectRepr->GetEndNtAtEnd() );
+ aSet.Put( pSectRepr->GetBalance() );
+
+ const SwSectionFmts& rDocFmts = rSh.GetDoc()->GetSections();
+ SwSectionFmts aOrigArray( 0, 5 );
+ aOrigArray.Insert( &rDocFmts, 0 );
+
+ SwSectionFmt* pFmt = aOrigArray[pSectRepr->GetArrPos()];
+ long nWidth = rSh.GetSectionWidth(*pFmt);
+ aOrigArray.Remove( 0, aOrigArray.Count() );
+ if (!nWidth)
+ nWidth = USHRT_MAX;
+
+ aSet.Put(SwFmtFrmSize(ATT_VAR_SIZE, nWidth));
+ aSet.Put(SvxSizeItem(SID_ATTR_PAGE_SIZE, Size(nWidth, nWidth)));
+
+ SwSectionPropertyTabDialog aTabDlg(this, aSet, rSh);
+ if(RET_OK == aTabDlg.Execute())
+ {
+ const SfxItemSet* pOutSet = aTabDlg.GetOutputItemSet();
+ if( pOutSet && pOutSet->Count() )
+ {
+ const SfxPoolItem *pColItem, *pBrushItem,
+ *pFtnItem, *pEndItem, *pBalanceItem;
+ SfxItemState eColState = pOutSet->GetItemState(
+ RES_COL, FALSE, &pColItem );
+ SfxItemState eBrushState = pOutSet->GetItemState(
+ RES_BACKGROUND, FALSE, &pBrushItem );
+ SfxItemState eFtnState = pOutSet->GetItemState(
+ RES_FTN_AT_TXTEND, FALSE, &pFtnItem );
+ SfxItemState eEndState = pOutSet->GetItemState(
+ RES_END_AT_TXTEND, FALSE, &pEndItem );
+ SfxItemState eBalanceState = pOutSet->GetItemState(
+ RES_COLUMNBALANCE, FALSE, &pBalanceItem );
+ if( SFX_ITEM_SET == eColState ||
+ SFX_ITEM_SET == eBrushState ||
+ SFX_ITEM_SET == eFtnState ||
+ SFX_ITEM_SET == eEndState ||
+ SFX_ITEM_SET == eBalanceState)
+ {
+ SvLBoxEntry* pEntry = aTree.FirstSelected();
+ while( pEntry )
+ {
+ SectReprPtr pRepr = (SectReprPtr)pEntry->GetUserData();
+ if( SFX_ITEM_SET == eColState )
+ pRepr->GetCol() = *(SwFmtCol*)pColItem;
+ if( SFX_ITEM_SET == eBrushState )
+ pRepr->GetBackground() = *(SvxBrushItem*)pBrushItem;
+ if( SFX_ITEM_SET == eFtnState )
+ pRepr->GetFtnNtAtEnd() = *(SwFmtFtnAtTxtEnd*)pFtnItem;
+ if( SFX_ITEM_SET == eEndState )
+ pRepr->GetEndNtAtEnd() = *(SwFmtEndAtTxtEnd*)pEndItem;
+ if( SFX_ITEM_SET == eBalanceState )
+ pRepr->GetBalance().SetValue(((SwFmtNoBalancedColumns*)pBalanceItem)->GetValue());
+
+ pEntry = aTree.NextSelected(pEntry);
+ }
+ }
+ }
+ }
+ }
+
+ return 0;
+}
+
+/*---------------------------------------------------------------------
+ Beschreibung: Uebernahme des Dateinamen oder
+ des verknuepften Bereichs
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwEditRegionDlg, FileNameHdl, Edit *, pEdit )
+{
+ SvLBoxEntry* pEntry=aTree.FirstSelected();
+ DBG_ASSERT(pEntry,"kein Entry gefunden");
+ SectReprPtr pSectRepr = (SectRepr*)pEntry->GetUserData();
+ if(pEdit == &aFileNameED)
+ {
+ BOOL bDDe = FALSE;
+#ifdef DDE_AVAILABLE
+ bDDe = aDDECB.IsChecked();
+#endif
+ if( bDDe )
+ {
+ String sLink( pEdit->GetText() );
+ USHORT nPos = 0;
+ while( STRING_NOTFOUND != (nPos = sLink.SearchAscii( " ", nPos )) )
+ sLink.Erase( nPos--, 1 );
+
+ nPos = sLink.SearchAndReplace( ' ', cTokenSeperator );
+ sLink.SearchAndReplace( ' ', cTokenSeperator, nPos );
+
+ pSectRepr->GetSection().SetLinkFileName( sLink );
+ pSectRepr->GetSection().SetType( DDE_LINK_SECTION );
+ }
+ else
+ {
+ String sTmp(pEdit->GetText());
+ if(sTmp.Len())
+ sTmp = URIHelper::SmartRelToAbs( sTmp );
+ pSectRepr->SetFile( sTmp );
+ pSectRepr->SetFilePasswd( aEmptyStr );
+ }
+ }
+ else
+ {
+ pSectRepr->SetSubRegion( pEdit->GetText() );
+ }
+ return 0;
+}
+/*---------------------------------------------------------------------
+ Beschreibung:
+---------------------------------------------------------------------*/
+#ifdef DDE_AVAILABLE
+
+IMPL_LINK( SwEditRegionDlg, DDEHdl, CheckBox*, pBox )
+{
+ SvLBoxEntry* pEntry=aTree.FirstSelected();
+ if(pEntry)
+ {
+ BOOL bFile = aFileCB.IsChecked();
+ SectReprPtr pSectRepr = (SectRepr*)pEntry->GetUserData();
+ BOOL bDDE = pBox->IsChecked();
+ if(bDDE)
+ {
+ aFileNameFT.Hide();
+ aDDECommandFT.Enable();
+ aDDECommandFT.Show();
+ aSubRegionFT.Hide();
+ aSubRegionED.Hide();
+ if(FILE_LINK_SECTION == pSectRepr->GetSectionType() )
+ {
+ pSectRepr->SetFile(aEmptyStr);
+ aFileNameED.SetText(aEmptyStr);
+ pSectRepr->SetFilePasswd( aEmptyStr );
+ }
+ pSectRepr->SetSectionType( DDE_LINK_SECTION );
+ }
+ else
+ {
+ aDDECommandFT.Hide();
+ aFileNameFT.Enable(bFile);
+ aFileNameFT.Show();
+ aSubRegionED.Show();
+ aSubRegionFT.Show();
+ aSubRegionED.Enable(bFile);
+ aSubRegionFT.Enable(bFile);
+ aSubRegionED.Enable(bFile);
+ if(DDE_LINK_SECTION == pSectRepr->GetSectionType() )
+ {
+ pSectRepr->SetSectionType( FILE_LINK_SECTION );
+ pSectRepr->SetFile(aEmptyStr);
+ pSectRepr->SetFilePasswd( aEmptyStr );
+ aFileNameED.SetText(aEmptyStr);
+ }
+ }
+ aFilePB.Enable(bFile && !bDDE);
+ }
+ return 0;
+}
+#endif
+/*---------------------------------------------------------------------
+
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwEditRegionDlg, ChangePasswdHdl, CheckBox *, pBox )
+{
+ if (pBox->IsChecked())
+ {
+ if(!bIsPasswd&&!aNewPasswd.Len())
+ {
+ bIsPasswd = FALSE;
+ SwTestPasswdDlg aPasswdDlg(this);
+ aPasswdDlg.ShowExtras(SHOWEXTRAS_CONFIRM);
+// aPasswdDlg.SetHelpId(HID_DLG_PASSWD_SECTION);
+ if (aPasswdDlg.Execute())
+ {
+ aNewPasswd = aPasswdDlg.GetPassword();
+ if(aPasswdDlg.GetConfirm() == aNewPasswd)
+ bIsPasswd = TRUE;
+ else
+ InfoBox(pBox, SW_RES(REG_WRONG_PASSWD_REPEAT)).Execute();
+ }
+ }
+ if(!bIsPasswd)
+ pBox->Check(FALSE);
+ }
+ if( !pBox->IsChecked() )
+ {
+ aNewPasswd = aEmptyStr;
+ bIsPasswd = FALSE;
+ }
+ return 0;
+}
+/*---------------------------------------------------------------------
+ Beschreibung: Aktueller Bereichsname wird sofort beim editieren
+ in die TreeListBox eingetragen, mit leerem String
+ kein Ok()
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwEditRegionDlg, NameEditHdl, Edit *, EMPTYARG )
+{
+ SvLBoxEntry* pEntry=aTree.FirstSelected();
+ DBG_ASSERT(pEntry,"kein Entry gefunden");
+ if (pEntry)
+ {
+ String aName = aCurName.GetText();
+ Bitmap& aBmp=BuildBitmap(STATE_CHECK == aProtectCB.GetState(),
+ STATE_CHECK == aHideCB.GetState());
+ aTree.SetEntryText(pEntry,aName);
+ aTree.SetExpandedEntryBmp(pEntry,aBmp);
+ aTree.SetCollapsedEntryBmp(pEntry,aBmp);
+ SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
+ pRepr->GetSection().SetName(aName);
+
+ aOK.Enable(aName.Len() != 0);
+ }
+ return 0;
+}
+/*---------------------------------------------------------------------
+
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwEditRegionDlg, ConditionEditHdl, Edit *, pEdit )
+{
+ SvLBoxEntry* pEntry=aTree.FirstSelected();
+ DBG_ASSERT(pEntry,"kein Entry gefunden");
+ while( pEntry )
+ {
+ SectReprPtr pRepr = (SectReprPtr)pEntry->GetUserData();
+ pRepr->SetCondition (pEdit->GetText());
+ pEntry = aTree.NextSelected(pEntry);
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Bereiche einfuegen
+ --------------------------------------------------------------------*/
+
+
+void SwBaseShell::InsertRegionDialog(SfxRequest& rReq)
+{
+ SwWrtShell& rSh = GetShell();
+ const SfxItemSet *pSet = rReq.GetArgs();
+
+ SfxItemSet aSet(GetPool(),
+ RES_COL, RES_COL,
+ RES_COLUMNBALANCE, RES_COLUMNBALANCE,
+ RES_BACKGROUND, RES_BACKGROUND,
+ RES_FRM_SIZE, RES_FRM_SIZE,
+ RES_FTN_AT_TXTEND, RES_END_AT_TXTEND,
+ SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
+ 0);
+
+ if (!pSet || pSet->Count()==0)
+ {
+ SwRect aRect;
+ rSh.CalcBoundRect(aRect, FLY_IN_CNTNT);
+
+ long nWidth = aRect.Width();
+ aSet.Put(SwFmtFrmSize(ATT_VAR_SIZE, nWidth));
+
+ // Hoehe=Breite fuer konsistentere Vorschau (analog zu Bereich bearbeiten)
+ aSet.Put(SvxSizeItem(SID_ATTR_PAGE_SIZE, Size(nWidth, nWidth)));
+ SwInsertSectionTabDialog aTabDlg(&GetView().GetViewFrame()->GetWindow(),aSet , rSh);
+ aTabDlg.Execute();
+ }
+ else
+ {
+ const SfxPoolItem *pItem = 0;
+ String aTmpStr = rSh.GetUniqueSectionName();
+
+ SwSection aSection(CONTENT_SECTION,aTmpStr);
+ rReq.SetReturnValue(SfxStringItem(FN_INSERT_REGION, aTmpStr));
+
+ aSet.Put( *pSet );
+ if(SFX_ITEM_SET == pSet->GetItemState(SID_ATTR_COLUMNS, FALSE, &pItem))
+ {
+ SwFmtCol aCol;
+ SwRect aRect;
+ rSh.CalcBoundRect(aRect, FLY_IN_CNTNT);
+ long nWidth = aRect.Width();
+
+ USHORT nCol = ((SfxUInt16Item *)pItem)->GetValue();
+ if(nCol)
+ {
+ aCol.Init( nCol, 0, nWidth );
+ aSet.Put(aCol);
+ }
+ }
+ else if(SFX_ITEM_SET == pSet->GetItemState(RES_COL, FALSE, &pItem))
+ {
+ aSet.Put(*pItem);
+ }
+ rSh.InsertSection(aSection, aSet.Count() ? &aSet : 0);
+ }
+}
+
+IMPL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSection*, pSect )
+{
+ if( pSect )
+ {
+ SfxItemSet aSet(pThis->GetView().GetPool(),
+ RES_COL, RES_COL,
+ RES_BACKGROUND, RES_BACKGROUND,
+ RES_FRM_SIZE, RES_FRM_SIZE,
+ SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
+ 0);
+ SwRect aRect;
+ pThis->CalcBoundRect(aRect, FLY_IN_CNTNT);
+ long nWidth = aRect.Width();
+ aSet.Put(SwFmtFrmSize(ATT_VAR_SIZE, nWidth));
+ // Hoehe=Breite fuer konsistentere Vorschau (analog zu Bereich bearbeiten)
+ aSet.Put(SvxSizeItem(SID_ATTR_PAGE_SIZE, Size(nWidth, nWidth)));
+ SwInsertSectionTabDialog aTabDlg(&pThis->GetView().GetViewFrame()->GetWindow(),aSet , *pThis);
+ aTabDlg.SetSection(*pSect);
+ aTabDlg.Execute();
+
+ delete pSect;
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Bereich bearbeiten
+ --------------------------------------------------------------------*/
+
+void SwBaseShell::EditRegionDialog(SfxRequest& rReq)
+{
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ int nSlot = rReq.GetSlot();
+ const SfxPoolItem* pItem = 0;
+ if(pArgs)
+ pArgs->GetItemState(nSlot, FALSE, &pItem);
+ SwWrtShell& rWrtShell = GetShell();
+
+ switch ( nSlot )
+ {
+ case FN_EDIT_REGION:
+ {
+ Window* pParentWin = &GetView().GetViewFrame()->GetWindow();
+ BOOL bStart = TRUE;
+ String sPasswdSect = rWrtShell.GetSectionPasswd();
+ if (sPasswdSect.Len())
+ {
+ SwTestPasswdDlg aPasswdDlg(pParentWin);
+// aPasswdDlg.SetHelpId(HID_DLG_PASSWD_SECTION);
+ aPasswdDlg.Execute();
+ if ( aPasswdDlg.GetPassword() != sPasswdSect )
+ {
+ bStart = FALSE;
+ }
+ }
+ if(bStart)
+ {
+ SwEditRegionDlg* pEditRegionDlg = new SwEditRegionDlg(
+ pParentWin, rWrtShell );
+ pEditRegionDlg->SetPassword(sPasswdSect);
+ pEditRegionDlg->Execute();
+ delete pEditRegionDlg;
+ }
+ else
+ InfoBox(pParentWin, SW_RES(REG_WRONG_PASSWORD)).Execute();
+ }
+ break;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Hilfsfunktion - Bereichsindex ermitteln
+ --------------------------------------------------------------------*/
+
+USHORT lcl_GetRegion( const String& rRegionName, SwWrtShell& rWrtShell )
+{
+ USHORT nCount = rWrtShell.GetSectionFmtCount();
+ for(USHORT i=0; i< nCount; i++)
+ {
+ const SwSectionFmt& rFmt = rWrtShell.GetSectionFmt(i);
+ if(rFmt.IsInNodesArr() && rFmt.GetSection()->GetName()
+ == rRegionName)
+ return i;
+ }
+ return USHRT_MAX;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Hilfsfunktion - Bereichsnamen aus dem Medium lesen
+ --------------------------------------------------------------------*/
+
+void lcl_ReadSections( SwWrtShell& rSh, SfxMedium& rMedium, ComboBox& rBox )
+{
+ rBox.Clear();
+ if( rMedium.IsStorage() )
+ {
+ SvStorageRef aStor = rMedium.GetStorage();
+ // ist das unser eigenes Format?
+ if( aStor.Is() && (
+ SOT_FORMATSTR_ID_STARWRITER_50 == aStor->GetFormat() ||
+ SOT_FORMATSTR_ID_STARWRITER_40 == aStor->GetFormat() ||
+ SOT_FORMATSTR_ID_STARWRITER_30 == aStor->GetFormat() ||
+ SOT_FORMATSTR_ID_STARWRITERGLOB_50 == aStor->GetFormat() ||
+ SOT_FORMATSTR_ID_STARWRITERGLOB_40 == aStor->GetFormat() ) )
+ {
+ // Dann noch die Fileformat-Version vom
+ // Filter abholen.
+ const SfxFilter* pFlt = rMedium.GetFilter();
+ ASSERT( pFlt && pFlt->GetVersion(),
+ "Kein Filter oder Filter ohne FF-Version" );
+ if( pFlt && pFlt->GetVersion() )
+ aStor->SetVersion( (long)pFlt->GetVersion() );
+
+ Sw3Io& rIo = *rSh.GetView().GetDocShell()->GetIoSystem();
+ SvStringsDtor aArr( 10, 10 );
+ if( !rIo.GetSectionList( &aStor, (SvStrings&)aArr ) && aArr.Count() )
+ {
+ for( USHORT n = 0; n < aArr.Count(); ++n )
+ rBox.InsertEntry( *aArr[ n ] );
+ }
+ }
+ }
+}
+/* -----------------21.05.99 10:16-------------------
+ *
+ * --------------------------------------------------*/
+SwInsertSectionTabDialog::SwInsertSectionTabDialog(
+ Window* pParent, const SfxItemSet& rSet, SwWrtShell& rSh) :
+ SfxTabDialog( pParent, SW_RES(DLG_INSERT_SECTION), &rSet ),
+ rWrtSh(rSh),
+ pToInsertSection(0)
+{
+ String sInsert(ResId(ST_INSERT));
+ GetOKButton().SetText(sInsert);
+ FreeResource();
+ AddTabPage(TP_INSERT_SECTION, SwInsertSectionTabPage::Create, 0);
+ AddTabPage(TP_COLUMN, SwColumnPage::Create, 0);
+ AddTabPage(TP_BACKGROUND,SvxBackgroundTabPage::Create, 0);
+ AddTabPage(TP_SECTION_FTNENDNOTES, SwSectionFtnEndTabPage::Create, 0);
+
+ OfaHtmlOptions* pHtmlOpt = OFF_APP()->GetHtmlOptions();
+ long nHtmlMode = pHtmlOpt->GetExportMode();
+
+ BOOL bWeb = 0 != PTR_CAST( SwWebDocShell, rSh.GetView().GetDocShell() );
+ if(bWeb)
+ {
+ RemoveTabPage(TP_SECTION_FTNENDNOTES);
+ if( HTML_CFG_NS30 != nHtmlMode && HTML_CFG_NS40 != nHtmlMode && HTML_CFG_WRITER != nHtmlMode)
+ RemoveTabPage(TP_COLUMN);
+ }
+ SetCurPageId(TP_INSERT_SECTION);
+}
+/* -----------------21.05.99 10:17-------------------
+ *
+ * --------------------------------------------------*/
+SwInsertSectionTabDialog::~SwInsertSectionTabDialog()
+{
+ delete pToInsertSection;
+}
+/* -----------------21.05.99 10:23-------------------
+ *
+ * --------------------------------------------------*/
+void SwInsertSectionTabDialog::PageCreated( USHORT nId, SfxTabPage &rPage )
+{
+ if(TP_INSERT_SECTION == nId)
+ ((SwInsertSectionTabPage&)rPage).SetWrtShell(rWrtSh);
+ else if( TP_BACKGROUND == nId )
+ ((SvxBackgroundTabPage&)rPage).ShowSelector();
+ else if( TP_COLUMN == nId )
+ {
+ const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)GetInputSetImpl()->Get(RES_FRM_SIZE);
+ ((SwColumnPage&)rPage).SetPageWidth(rSize.GetWidth());
+ ((SwColumnPage&)rPage).ShowBalance(TRUE);
+ }
+}
+/* -----------------21.05.99 13:08-------------------
+ *
+ * --------------------------------------------------*/
+
+void SwInsertSectionTabDialog::SetSection(const SwSection& rSect)
+{
+ pToInsertSection = new SwSection(CONTENT_SECTION, aEmptyStr);
+ *pToInsertSection = rSect;
+}
+/* -----------------21.05.99 13:10-------------------
+ *
+ * --------------------------------------------------*/
+short SwInsertSectionTabDialog::Ok()
+{
+ short nRet = SfxTabDialog::Ok();
+ DBG_ASSERT(pToInsertSection, "keiner Section?")
+ rWrtSh.InsertSection(*pToInsertSection, GetOutputItemSet());
+ return nRet;
+}
+
+/* -----------------21.05.99 10:31-------------------
+ *
+ * --------------------------------------------------*/
+SwInsertSectionTabPage::SwInsertSectionTabPage(
+ Window *pParent, const SfxItemSet &rAttrSet) :
+ SfxTabPage( pParent, SW_RES(TP_INSERT_SECTION), rAttrSet ),
+#ifdef DDE_AVAILABLE
+ aDDECB ( this, SW_RES( CB_DDE ) ) ,
+ aDDECommandFT ( this, SW_RES( FT_DDE ) ) ,
+#endif
+ aCurName ( this, SW_RES( ED_RNAME ) ),
+ aHideCB ( this, SW_RES( CB_HIDE ) ),
+ aProtectCB ( this, SW_RES( CB_PROTECT ) ),
+ aCondCB ( this, SW_RES( CB_CONDITION ) ),
+ aFileCB ( this, SW_RES( CB_FILE ) ),
+ aFilePB ( this, SW_RES( PB_FILE ) ),
+ aFileNameFT ( this, SW_RES( FT_FILE ) ) ,
+ aFileNameED ( this, SW_RES( ED_FILE ) ),
+ aSubRegionFT ( this, SW_RES( FT_SUBREG ) ) ,
+ aSubRegionED ( this, SW_RES( LB_SUBREG ) ) ,
+ aGroupBoxName ( this, SW_RES( GB_NEW_SECTION ) ),
+ aConditionED ( this, SW_RES( ED_CONDITION ) ),
+ aGroupBoxOptions ( this, SW_RES( GB_NEW_OPTIONS ) ),
+ sSection (SW_RES( STR_REGION_DEFNAME )),
+ pWrtSh(0)
+{
+ FreeResource();
+
+ aProtectCB.SetClickHdl ( LINK( this, SwInsertSectionTabPage, ChangeProtectHdl));
+ aHideCB.SetClickHdl ( LINK( this, SwInsertSectionTabPage, ChangeHideHdl));
+ aCondCB.SetClickHdl ( LINK( this, SwInsertSectionTabPage, ChangeCondHdl));
+ aFileCB.SetClickHdl ( LINK( this, SwInsertSectionTabPage, UseFileHdl ));
+ aFilePB.SetClickHdl ( LINK( this, SwInsertSectionTabPage, FileSearchHdl ));
+ aCurName.SetModifyHdl ( LINK( this, SwInsertSectionTabPage, NameEditHdl));
+#ifdef DDE_AVAILABLE
+ aDDECB.SetClickHdl ( LINK( this, SwInsertSectionTabPage, DDEHdl ));
+#endif
+}
+/* -----------------21.05.99 10:31-------------------
+ *
+ * --------------------------------------------------*/
+SwInsertSectionTabPage::~SwInsertSectionTabPage()
+{
+}
+/* -----------------21.05.99 12:58-------------------
+ *
+ * --------------------------------------------------*/
+void SwInsertSectionTabPage::SetWrtShell(SwWrtShell& rSh)
+{
+ pWrtSh = &rSh;
+
+ BOOL bWeb = 0 != PTR_CAST(SwWebDocShell, pWrtSh->GetView().GetDocShell());
+ if(bWeb)
+ {
+ aHideCB .Hide();
+ aCondCB .Hide();
+ aConditionED .Hide();
+#ifdef DDE_AVAILABLE
+ aDDECB .Hide();
+ aDDECommandFT .Hide();
+#endif
+ }
+
+ USHORT nCount = pWrtSh->GetSectionFmtCount();
+ pPasswdSect = (const String*)&pWrtSh->GetSectionPasswd();
+ FillList();
+ USHORT nCnt = pWrtSh->GetBookmarkCnt();
+ for( USHORT i = 0; i < nCnt; ++i )
+ {
+ SwBookmark& rBm = pWrtSh->GetBookmark( i );
+ if( rBm.GetOtherPos() )
+ aSubRegionED.InsertEntry( rBm.GetName() );
+ }
+
+ SwSection* pSect = ((SwInsertSectionTabDialog*)GetTabDialog())->GetSection();
+ if( pSect ) // etwas vorgegeben ?
+ {
+ aCurName.SetText( rSh.GetUniqueSectionName( &pSect->GetName() ));
+ aProtectCB.Check( 0 != pSect->IsProtect() );
+ sFileName = pSect->GetLinkFileName();
+ sFilePasswd = pSect->GetLinkFilePassWd();
+ aFileCB.Check( 0 != sFileName.Len() );
+ aFileNameED.SetText( sFileName );
+ UseFileHdl( &aFileCB );
+ }
+ else
+ {
+ aCurName.SetText( rSh.GetUniqueSectionName() );
+ }
+}
+/* -----------------21.05.99 10:32-------------------
+ *
+ * --------------------------------------------------*/
+BOOL SwInsertSectionTabPage::FillItemSet( SfxItemSet& rSet)
+{
+ BOOL bRecording = FALSE;//pRequest && 0 != SfxRequest::GetRecordingMacro();
+ SwSection aSection(CONTENT_SECTION, aCurName.GetText());
+ if( aCondCB.IsChecked() )
+ aSection.SetCondition(aConditionED.GetText());
+ aSection.SetProtect(aProtectCB.IsChecked());
+ aSection.SetHidden(aHideCB.IsChecked());
+ String sFileName = aFileNameED.GetText();
+ String sSubRegion = aSubRegionED.GetText();
+ BOOL bDDe = FALSE;
+ if(bRecording)
+ {
+// pRequest->AppendItem(SfxStringItem(FN_PARAM_REGION_NAME, aCurName.GetText()));
+// if(aCondCB.IsChecked())
+// pRequest->AppendItem(SfxStringItem(FN_PARAM_REGION_CONDITION, aConditionED.GetText()));
+// pRequest->AppendItem(SfxBoolItem(FN_PARAM_REGION_HIDDEN, aHideCB.IsChecked()));
+// pRequest->AppendItem(SfxBoolItem(FN_PARAM_REGION_PROTECT, aProtectCB.IsChecked()));
+ }
+#ifdef DDE_AVAILABLE
+ bDDe = aDDECB.IsChecked();
+#endif
+ if(aFileCB.IsChecked() && (sFileName.Len() || sSubRegion.Len() || bDDe))
+ {
+ String aLinkFile;
+ if( bDDe )
+ {
+ aLinkFile = sFileName;
+
+ USHORT nPos = 0;
+ while( STRING_NOTFOUND != (nPos = aLinkFile.SearchAscii( " ", nPos )) )
+ aLinkFile.Erase( nPos--, 1 );
+
+ nPos = aLinkFile.SearchAndReplace( ' ', cTokenSeperator );
+ aLinkFile.SearchAndReplace( ' ', cTokenSeperator, nPos );
+ }
+ else
+ {
+ if(sFileName.Len())
+ {
+ aLinkFile = URIHelper::SmartRelToAbs( sFileName );
+ aSection.SetLinkFilePassWd( sFilePasswd );
+ }
+
+ aLinkFile += cTokenSeperator;
+ aLinkFile += sFilterName;
+ aLinkFile += cTokenSeperator;
+ aLinkFile += sSubRegion;
+ if(bRecording)
+ {
+// pRequest->AppendItem(SfxStringItem(FN_PARAM_1,
+// aLinkFile.GetToken(0, cTokenSeperator)));
+// pRequest->AppendItem(SfxStringItem(FN_PARAM_2,
+// sFilterName));
+// pRequest->AppendItem(SfxStringItem(FN_PARAM_3,
+// sSubRegion));
+ }
+
+ }
+
+ aSection.SetLinkFileName(aLinkFile);
+ if(aLinkFile.Len())
+ {
+#ifdef DDE_AVAILABLE
+ aSection.SetType( aDDECB.IsChecked() ?
+ DDE_LINK_SECTION :
+ FILE_LINK_SECTION);
+#else
+ aSection.SetType( FILE_LINK_SECTION);
+#endif
+ }
+ }
+ ((SwInsertSectionTabDialog*)GetTabDialog())->SetSection(aSection);
+ return TRUE;
+}
+/* -----------------21.05.99 10:32-------------------
+ *
+ * --------------------------------------------------*/
+void SwInsertSectionTabPage::Reset( const SfxItemSet& )
+{
+}
+/* -----------------21.05.99 11:22-------------------
+ *
+ * --------------------------------------------------*/
+SfxTabPage* SwInsertSectionTabPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet)
+{
+ return new SwInsertSectionTabPage(pParent, rAttrSet);
+}
+/*---------------------------------------------------------------------
+
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwInsertSectionTabPage, ChangeHideHdl, CheckBox *, pBox )
+{
+ BOOL bHide = pBox->IsChecked();
+ aCondCB.Enable(bHide);
+ aConditionED.Enable(bHide && aCondCB.IsChecked());
+ return 0;
+}
+/*---------------------------------------------------------------------
+
+---------------------------------------------------------------------*/
+
+IMPL_LINK_INLINE_START( SwInsertSectionTabPage, ChangeCondHdl, CheckBox *, pBox )
+{
+ aConditionED.Enable( pBox->IsChecked() );
+ if( pBox->IsChecked() )
+ aConditionED.GrabFocus();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwInsertSectionTabPage, ChangeCondHdl, CheckBox *, pBox )
+/*---------------------------------------------------------------------
+
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwInsertSectionTabPage, ChangeProtectHdl, CheckBox *, pBox )
+{
+ if (pPasswdSect->Len()&&pBox->IsChecked())
+ {
+ SwTestPasswdDlg aPasswdDlg(this);
+// aPasswdDlg.SetHelpId(HID_DLG_PASSWD_SECTION);
+ if (aPasswdDlg.Execute())
+ pBox->Check(aPasswdDlg.GetPassword()==*pPasswdSect);
+ else
+ pBox->Check(FALSE);
+ }
+ return 0;
+}
+/*---------------------------------------------------------------------
+
+---------------------------------------------------------------------*/
+
+IMPL_LINK_INLINE_START( SwInsertSectionTabPage, NameEditHdl, Edit *, EMPTYARG )
+{
+ String aName=aCurName.GetText();
+ GetTabDialog()->GetOKButton().Enable(aName.Len() && aCurName.GetEntryPos( aName ) == USHRT_MAX);
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwInsertSectionTabPage, NameEditHdl, Edit *, EMPTYARG )
+
+/*---------------------------------------------------------------------
+
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwInsertSectionTabPage, UseFileHdl, CheckBox *, pBox )
+{
+ if( pBox->IsChecked() )
+ {
+ if( pWrtSh->HasSelection() &&
+ RET_NO == QueryBox( this, SW_RES(QB_CONNECT) ).Execute() )
+ pBox->Check( FALSE );
+ }
+
+ BOOL bFile = pBox->IsChecked();
+ aFileNameFT.Enable(bFile);
+ aFileNameED.Enable(bFile);
+ aFilePB.Enable(bFile);
+ aSubRegionFT.Enable(bFile);
+ aSubRegionED.Enable(bFile);
+#ifdef DDE_AVAILABLE
+ aDDECommandFT.Enable(bFile);
+ aDDECB.Enable(bFile);
+#endif
+ if( bFile )
+ {
+// aFileNameED.SetText( aFileName );
+ aFileNameED.GrabFocus();
+ aProtectCB.Check( TRUE );
+ }
+ else
+ {
+#ifdef DDE_AVAILABLE
+ aDDECB.Check(FALSE);
+ DDEHdl(&aDDECB);
+#endif
+// aFileNameED.SetText(aEmptyStr);
+ }
+ return 0;
+}
+
+/*---------------------------------------------------------------------
+
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwInsertSectionTabPage, FileSearchHdl, PushButton *, EMPTYARG )
+{
+ SfxMedium* pMed;
+ if( GetFileFilterNameDlg( *this, sFileName, &sFilePasswd,
+ &sFilterName, &pMed ))
+ {
+ aFileNameED.SetText( sFileName );
+ ::lcl_ReadSections( *pWrtSh, *pMed, aSubRegionED );
+ delete pMed; // das brauchen wir nicht mehr !
+ }
+ else
+ sFilterName = sFilePasswd = aEmptyStr;
+ return 0;
+}
+
+/*---------------------------------------------------------------------
+
+---------------------------------------------------------------------*/
+#ifdef DDE_AVAILABLE
+
+IMPL_LINK( SwInsertSectionTabPage, DDEHdl, CheckBox*, pBox )
+{
+ BOOL bDDE = pBox->IsChecked();
+ BOOL bFile = aFileCB.IsChecked();
+ aFilePB.Enable(!bDDE && bFile);
+ if(bDDE)
+ {
+ aFileNameFT.Hide();
+ aDDECommandFT.Enable(bDDE);
+ aDDECommandFT.Show();
+ aSubRegionFT.Hide();
+ aSubRegionED.Hide();
+ }
+ else
+ {
+ aDDECommandFT.Hide();
+ aFileNameFT.Enable(bFile);
+ aFileNameFT.Show();
+ aSubRegionFT.Show();
+ aSubRegionED.Show();
+ aSubRegionED.Enable(bFile);
+ }
+ return 0;
+}
+#endif
+/*--------------------------------------------------------------------
+ Beschreibung: Liste der verwendeten Namen fuellen
+ --------------------------------------------------------------------*/
+
+void SwInsertSectionTabPage::FillList( const SwSectionFmt* pNewFmt )
+{
+ const SwSectionFmt* pFmt;
+ if( !pNewFmt )
+ {
+ USHORT nCount = pWrtSh->GetSectionFmtCount();
+ for(USHORT i=0;i<nCount;i++)
+ {
+ SectionType eTmpType;
+ if( !(pFmt = &pWrtSh->GetSectionFmt(i))->GetParent() &&
+ pFmt->IsInNodesArr() &&
+ (eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
+ && TOX_HEADER_SECTION != eTmpType )
+ {
+ String* pString = new String(pFmt->GetSection()->GetName());
+ aCurName.InsertEntry(*pString);
+ aSubRegionED.InsertEntry(*pString);
+ FillList( pFmt );
+ }
+ }
+ }
+ else
+ {
+ SwSections aTmpArr;
+ USHORT nCnt = pNewFmt->GetChildSections(aTmpArr,SORTSECT_POS);
+ if( nCnt )
+ {
+ SectionType eTmpType;
+ for( USHORT n = 0; n < nCnt; ++n )
+ if( (pFmt = aTmpArr[n]->GetFmt())->IsInNodesArr()&&
+ (eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
+ && TOX_HEADER_SECTION != eTmpType )
+ {
+ String* pString = new String(pFmt->GetSection()->GetName());
+ aCurName.InsertEntry(*pString);
+ aSubRegionED.InsertEntry(*pString);
+ FillList( pFmt );
+ }
+ }
+ }
+}
+
+// --------------------------------------------------------------
+
+// Numerierungsformat Umsetzung:
+// ListBox - Format - Enum-Wert
+// 0 - A, B, C, ... - 0
+// 1 - a, b, c, ... - 1
+// 2 - I, II, III, ... - 2
+// 3 - i, ii, iii, ... - 3
+// 4 - 1, 2, 3, ... - 4
+// 5 - A, .., AA, .., - 9
+// 6 - a, .., aa, .., - 10
+
+inline USHORT GetNumPos( USHORT n )
+{
+ return SVX_NUM_ARABIC < n ? n - 4 : n;
+}
+
+inline SvxExtNumType GetNumType( USHORT n )
+{
+ return (SvxExtNumType)(4 < n ? n + 4 : n );
+}
+
+SwSectionFtnEndTabPage::SwSectionFtnEndTabPage( Window *pParent,
+ const SfxItemSet &rAttrSet)
+ : SfxTabPage( pParent, SW_RES( TP_SECTION_FTNENDNOTES ), rAttrSet ),
+ aGroupBoxFtn ( this, SW_RES( GB_FTN ) ),
+ aFtnNtAtTextEndCB ( this, SW_RES( CB_FTN_AT_TXTEND ) ),
+ aFtnNtNumCB ( this, SW_RES( CB_FTN_NUM ) ),
+ aFtnNtNumFmtCB ( this, SW_RES( CB_FTN_NUM_FMT ) ),
+ aFtnNumViewBox ( this, SW_RES( LB_FTN_NUMVIEW )),
+ aFtnOffsetLbl ( this, SW_RES( FT_FTN_OFFSET )),
+ aFtnOffsetFld ( this, SW_RES( FLD_FTN_OFFSET )),
+ aFtnPrefixFT ( this, SW_RES( FT_FTN_PREFIX )),
+ aFtnPrefixED ( this, SW_RES( ED_FTN_PREFIX )),
+ aFtnSuffixFT ( this, SW_RES( FT_FTN_SUFFIX )),
+ aFtnSuffixED ( this, SW_RES( ED_FTN_SUFFIX )),
+ aGroupBoxEnd ( this, SW_RES( GB_END ) ),
+ aEndNtAtTextEndCB ( this, SW_RES( CB_END_AT_TXTEND )),
+ aEndNtNumCB ( this, SW_RES( CB_END_NUM )),
+ aEndNtNumFmtCB ( this, SW_RES( CB_END_NUM_FMT ) ),
+ aEndNumViewBox ( this, SW_RES( LB_END_NUMVIEW )),
+ aEndOffsetLbl ( this, SW_RES( FT_END_OFFSET )),
+ aEndOffsetFld ( this, SW_RES( FLD_END_OFFSET )),
+ aEndPrefixFT ( this, SW_RES( FT_END_PREFIX )),
+ aEndPrefixED ( this, SW_RES( ED_END_PREFIX )),
+ aEndSuffixFT ( this, SW_RES( FT_END_SUFFIX )),
+ aEndSuffixED ( this, SW_RES( ED_END_SUFFIX ))
+{
+ FreeResource();
+
+ Link aLk( LINK( this, SwSectionFtnEndTabPage, FootEndHdl));
+ aFtnNtAtTextEndCB.SetClickHdl( aLk );
+ aFtnNtNumCB.SetClickHdl( aLk );
+ aEndNtAtTextEndCB.SetClickHdl( aLk );
+ aEndNtNumCB.SetClickHdl( aLk );
+ aFtnNtNumFmtCB.SetClickHdl( aLk );
+ aEndNtNumFmtCB.SetClickHdl( aLk );
+}
+
+SwSectionFtnEndTabPage::~SwSectionFtnEndTabPage()
+{
+}
+
+BOOL SwSectionFtnEndTabPage::FillItemSet( SfxItemSet& rSet )
+{
+ BOOL bRecording = FALSE;//pRequest && 0 != SfxRequest::GetRecordingMacro();
+ if(bRecording)
+ {
+// pRequest->AppendItem(SfxStringItem(FN_PARAM_REGION_NAME, aCurName.GetText()));
+// if(aCondCB.IsChecked())
+// pRequest->AppendItem(SfxStringItem(FN_PARAM_REGION_CONDITION, aConditionED.GetText()));
+// pRequest->AppendItem(SfxBoolItem(FN_PARAM_REGION_HIDDEN, aHideCB.IsChecked()));
+// pRequest->AppendItem(SfxBoolItem(FN_PARAM_REGION_PROTECT, aProtectCB.IsChecked()));
+ }
+
+ SwFmtFtnAtTxtEnd aFtn( aFtnNtAtTextEndCB.IsChecked()
+ ? ( aFtnNtNumCB.IsChecked()
+ ? ( aFtnNtNumFmtCB.IsChecked()
+ ? FTNEND_ATTXTEND_OWNNUMANDFMT
+ : FTNEND_ATTXTEND_OWNNUMSEQ )
+ : FTNEND_ATTXTEND )
+ : FTNEND_ATPGORDOCEND );
+
+ switch( aFtn.GetValue() )
+ {
+ case FTNEND_ATTXTEND_OWNNUMANDFMT:
+ aFtn.SetNumType( GetNumType( aFtnNumViewBox.GetSelectEntryPos() ));
+ aFtn.SetPrefix( aFtnPrefixED.GetText() );
+ aFtn.SetSuffix( aFtnSuffixED.GetText() );
+ // no break;
+
+ case FTNEND_ATTXTEND_OWNNUMSEQ:
+ aFtn.SetOffset( aFtnOffsetFld.GetValue()-1 );
+ // no break;
+ }
+
+ SwFmtEndAtTxtEnd aEnd( aEndNtAtTextEndCB.IsChecked()
+ ? ( aEndNtNumCB.IsChecked()
+ ? ( aEndNtNumFmtCB.IsChecked()
+ ? FTNEND_ATTXTEND_OWNNUMANDFMT
+ : FTNEND_ATTXTEND_OWNNUMSEQ )
+ : FTNEND_ATTXTEND )
+ : FTNEND_ATPGORDOCEND );
+
+ switch( aEnd.GetValue() )
+ {
+ case FTNEND_ATTXTEND_OWNNUMANDFMT:
+ aEnd.SetNumType( GetNumType( aEndNumViewBox.GetSelectEntryPos() ));
+ aEnd.SetPrefix( aEndPrefixED.GetText() );
+ aEnd.SetSuffix( aEndSuffixED.GetText() );
+ // no break;
+
+ case FTNEND_ATTXTEND_OWNNUMSEQ:
+ aEnd.SetOffset( aEndOffsetFld.GetValue()-1 );
+ // no break;
+ }
+
+ rSet.Put( aFtn );
+ rSet.Put( aEnd );
+
+ return TRUE;
+}
+
+void SwSectionFtnEndTabPage::ResetState( BOOL bFtn,
+ const SwFmtFtnEndAtTxtEnd& rAttr )
+{
+ CheckBox *pNtAtTextEndCB, *pNtNumCB, *pNtNumFmtCB;
+ FixedText*pPrefixFT, *pSuffixFT;
+ Edit *pPrefixED, *pSuffixED;
+ ListBox *pNumViewBox;
+ FixedText* pOffsetTxt;
+ NumericField *pOffsetFld;
+
+ if( bFtn )
+ {
+ pNtAtTextEndCB = &aFtnNtAtTextEndCB;
+ pNtNumCB = &aFtnNtNumCB;
+ pNtNumFmtCB = &aFtnNtNumFmtCB;
+ pPrefixFT = &aFtnPrefixFT;
+ pPrefixED = &aFtnPrefixED;
+ pSuffixFT = &aFtnSuffixFT;
+ pSuffixED = &aFtnSuffixED;
+ pNumViewBox = &aFtnNumViewBox;
+ pOffsetTxt = &aFtnOffsetLbl;
+ pOffsetFld = &aFtnOffsetFld;
+ }
+ else
+ {
+ pNtAtTextEndCB = &aEndNtAtTextEndCB;
+ pNtNumCB = &aEndNtNumCB;
+ pNtNumFmtCB = &aEndNtNumFmtCB;
+ pPrefixFT = &aEndPrefixFT;
+ pPrefixED = &aEndPrefixED;
+ pSuffixFT = &aEndSuffixFT;
+ pSuffixED = &aEndSuffixED;
+ pNumViewBox = &aEndNumViewBox;
+ pOffsetTxt = &aEndOffsetLbl;
+ pOffsetFld = &aEndOffsetFld;
+ }
+
+ USHORT eState = rAttr.GetValue();
+ switch( eState )
+ {
+ // case FTNEND_ATPGORDOCEND:
+ case FTNEND_ATTXTEND_OWNNUMANDFMT:
+ pNtNumFmtCB->SetState( STATE_CHECK );
+ // no break;
+
+ case FTNEND_ATTXTEND_OWNNUMSEQ:
+ pNtNumCB->SetState( STATE_CHECK );
+ // no break;
+
+ case FTNEND_ATTXTEND:
+ pNtAtTextEndCB->SetState( STATE_CHECK );
+ // no break;
+ }
+
+ pNumViewBox->SelectEntryPos( GetNumPos( rAttr.GetNumType() ));
+ pOffsetFld->SetValue( rAttr.GetOffset() + 1 );
+ pPrefixED->SetText( rAttr.GetPrefix() );
+ pSuffixED->SetText( rAttr.GetSuffix() );
+
+ switch( eState )
+ {
+ case FTNEND_ATPGORDOCEND:
+ pNtNumCB->Enable( FALSE );
+ // no break;
+
+ case FTNEND_ATTXTEND:
+ pNtNumFmtCB->Enable( FALSE );
+ pOffsetFld->Enable( FALSE );
+ pOffsetTxt->Enable( FALSE );
+ // no break;
+
+ case FTNEND_ATTXTEND_OWNNUMSEQ:
+ pNumViewBox->Enable( FALSE );
+ pPrefixFT->Enable( FALSE );
+ pPrefixED->Enable( FALSE );
+ pSuffixFT->Enable( FALSE );
+ pSuffixED->Enable( FALSE );
+ // no break;
+ }
+}
+
+void SwSectionFtnEndTabPage::Reset( const SfxItemSet& rSet )
+{
+ ResetState( TRUE, (const SwFmtFtnAtTxtEnd&)rSet.Get(
+ RES_FTN_AT_TXTEND, FALSE ));
+ ResetState( FALSE, (const SwFmtEndAtTxtEnd&)rSet.Get(
+ RES_END_AT_TXTEND, FALSE ));
+}
+
+SfxTabPage* SwSectionFtnEndTabPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet)
+{
+ return new SwSectionFtnEndTabPage(pParent, rAttrSet);
+}
+
+IMPL_LINK( SwSectionFtnEndTabPage, FootEndHdl, CheckBox *, pBox )
+{
+// pBox->EnableTriState( FALSE );
+ BOOL bFoot = &aFtnNtAtTextEndCB == pBox || &aFtnNtNumCB == pBox ||
+ &aFtnNtNumFmtCB == pBox ;
+
+ CheckBox *pNumBox, *pNumFmtBox, *pEndBox;
+ ListBox* pNumViewBox;
+ FixedText* pOffsetTxt;
+ NumericField *pOffsetFld;
+ FixedText*pPrefixFT, *pSuffixFT;
+ Edit *pPrefixED, *pSuffixED;
+
+ if( bFoot )
+ {
+ pEndBox = &aFtnNtAtTextEndCB;
+ pNumBox = &aFtnNtNumCB;
+ pNumFmtBox = &aFtnNtNumFmtCB;
+ pNumViewBox = &aFtnNumViewBox;
+ pOffsetTxt = &aFtnOffsetLbl;
+ pOffsetFld = &aFtnOffsetFld;
+ pPrefixFT = &aFtnPrefixFT;
+ pSuffixFT = &aFtnSuffixFT;
+ pPrefixED = &aFtnPrefixED;
+ pSuffixED = &aFtnSuffixED;
+ }
+ else
+ {
+ pEndBox = &aEndNtAtTextEndCB;
+ pNumBox = &aEndNtNumCB;
+ pNumFmtBox = &aEndNtNumFmtCB;
+ pNumViewBox = &aEndNumViewBox;
+ pOffsetTxt = &aEndOffsetLbl;
+ pOffsetFld = &aEndOffsetFld;
+ pPrefixFT = &aEndPrefixFT;
+ pSuffixFT = &aEndSuffixFT;
+ pPrefixED = &aEndPrefixED;
+ pSuffixED = &aEndSuffixED;
+ }
+
+ BOOL bEnableAtEnd = STATE_CHECK == pEndBox->GetState();
+ BOOL bEnableNum = bEnableAtEnd && STATE_CHECK == pNumBox->GetState();
+ BOOL bEnableNumFmt = bEnableNum && STATE_CHECK == pNumFmtBox->GetState();
+
+ pNumBox->Enable( bEnableAtEnd );
+ pOffsetTxt->Enable( bEnableNum );
+ pOffsetFld->Enable( bEnableNum );
+ pNumFmtBox->Enable( bEnableNum );
+ pNumViewBox->Enable( bEnableNumFmt );
+ pPrefixED->Enable( bEnableNumFmt );
+ pSuffixED->Enable( bEnableNumFmt );
+ pPrefixFT->Enable( bEnableNumFmt );
+ pSuffixFT->Enable( bEnableNumFmt );
+
+ return 0;
+}
+
+/* -----------------21.05.99 13:59-------------------
+ *
+ * --------------------------------------------------*/
+SwSectionPropertyTabDialog::SwSectionPropertyTabDialog(
+ Window* pParent, const SfxItemSet& rSet, SwWrtShell& rSh) :
+ SfxTabDialog(pParent, SW_RES(DLG_SECTION_PROPERTIES), &rSet)
+{
+ FreeResource();
+
+ AddTabPage(TP_COLUMN, SwColumnPage::Create, 0);
+ AddTabPage(TP_BACKGROUND,SvxBackgroundTabPage::Create, 0);
+ AddTabPage(TP_SECTION_FTNENDNOTES, SwSectionFtnEndTabPage::Create, 0);
+
+ OfaHtmlOptions* pHtmlOpt = OFF_APP()->GetHtmlOptions();
+ long nHtmlMode = pHtmlOpt->GetExportMode();
+ BOOL bWeb = 0 != PTR_CAST( SwWebDocShell, rSh.GetView().GetDocShell() );
+ if(bWeb)
+ {
+ RemoveTabPage(TP_SECTION_FTNENDNOTES);
+ if( HTML_CFG_NS30 != nHtmlMode && HTML_CFG_NS40 != nHtmlMode && HTML_CFG_WRITER != nHtmlMode)
+ RemoveTabPage(TP_COLUMN);
+ }
+}
+/* -----------------21.05.99 13:59-------------------
+ *
+ * --------------------------------------------------*/
+SwSectionPropertyTabDialog::~SwSectionPropertyTabDialog()
+{
+}
+/* -----------------21.05.99 13:59-------------------
+ *
+ * --------------------------------------------------*/
+void SwSectionPropertyTabDialog::PageCreated( USHORT nId, SfxTabPage &rPage )
+{
+ if( TP_BACKGROUND == nId )
+ ((SvxBackgroundTabPage&)rPage).ShowSelector();
+ else if( TP_COLUMN == nId )
+ ((SwColumnPage&)rPage).ShowBalance(TRUE);
+}
+
+/*-------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.176 2000/09/18 16:05:21 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.175 2000/08/17 14:03:56 jp
+ UI with decode URL
+
+ Revision 1.174 2000/08/14 13:22:59 os
+ #77401# additional flag for 'Condition'
+
+ Revision 1.173 2000/08/01 16:55:55 jp
+ Bug #72901#: FillItemSet - ask the right control
+
+ Revision 1.172 2000/07/26 16:28:28 jp
+ Bug #77158#: InsertRegionDialog - take complete Itemset
+
+ Revision 1.171 2000/07/21 13:26:56 os
+ #77029# column dialog works again
+
+ Revision 1.170 2000/07/10 10:01:23 os
+ #76625# column item conversion
+
+ Revision 1.169 2000/07/03 08:08:35 os
+ #72742# resource warnings corrected
+
+ Revision 1.168 2000/06/26 13:10:14 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.167 2000/06/20 14:49:49 os
+ #70060# less occurences of columns in HTML
+
+ Revision 1.166 2000/06/13 11:06:54 os
+ include is back
+
+ Revision 1.165 2000/06/07 13:19:48 os
+ include removed
+
+ Revision 1.164 2000/05/26 07:21:29 os
+ old SW Basic API Slots removed
+
+ Revision 1.163 2000/04/13 08:01:20 os
+ UNICODE
+
+ Revision 1.162 2000/03/03 15:16:59 os
+ StarView remainders removed
+
+ Revision 1.161 2000/02/25 13:46:57 jp
+ Bug #73596#: wrong name for regions
+
+ Revision 1.160 2000/02/11 14:44:46 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.159 2000/01/31 10:14:11 os
+ #72343# Background/Footnote/Endnote attributes - not from parent
+
+ Revision 1.158 2000/01/04 15:35:39 os
+ #71411# balanced columns
+
+ Revision 1.157 1999/12/01 09:09:42 os
+ #70321# dont show index sections
+
+ Revision 1.156 1999/11/17 14:58:57 os
+ no foot/endnotes in html
+
+ Revision 1.155 1999/11/08 19:35:39 jp
+ little bugfixes for Foot-/Endnote attributes
+
+ Revision 1.154 1999/11/08 18:07:13 jp
+ numberformat for Foot-/Endnotes at sectionend
+
+ Revision 1.153 1999/11/03 13:49:46 jp
+ SwFmtFtn-/-EndAtTxtEnd: change to EnumItem
+
+ Revision 1.152 1999/10/21 17:47:51 jp
+ have to change - SearchFile with SfxIniManager, dont use SwFinder for this
+
+ Revision 1.151 1999/10/21 12:45:50 os
+ CHG: SfxPasswordDialog
+
+ Revision 1.150 1999/09/15 09:58:34 os
+ footnotes and endnotes in sections
+
+ Revision 1.149 1999/07/30 11:32:26 OS
+ TOXBase in sections
+
+
+ Rev 1.148 30 Jul 1999 13:32:26 OS
+ TOXBase in sections
+
+ Rev 1.147 28 Jul 1999 13:03:48 OS
+ TOXBase in sections
+
+ Rev 1.146 13 Jul 1999 12:56:00 OS
+ default section names are indexed
+
+ Rev 1.145 08 Jul 1999 09:04:24 OS
+ #67441# WB_HSCROLL
+
+ Rev 1.144 25 Jun 1999 15:45:18 OS
+ #67229# HelpId for PasswordDialog in foramt/sections
+
+ Rev 1.143 07 Jun 1999 13:51:30 OS
+ #65686# Multiselektion beim Aufheben richtig behandeln
+
+ Rev 1.142 27 May 1999 12:54:44 OS
+ Einf?gen/Bearbeiten von Spalten ueberarbeitet
+
+ Rev 1.141 21 May 1999 15:25:04 OS
+ #66310# Bereiche mit Hintergrund, TabDialog fuers Einfuegen
+
+ Rev 1.140 19 Mar 1999 13:34:24 OS
+ #63701# unbenutztes Break-Attribut aus den Sections entfernt
+
+ Rev 1.139 05 Mar 1999 20:09:32 JP
+ Bug #62914#: Handling des Dialoges verbessert
+
+ Rev 1.138 03 Mar 1999 18:21:44 JP
+ Bug #57749#: Spalten nur setzen wenn sie im OutputSet des Dialoges vorhanden sind
+
+ Rev 1.137 05 Feb 1999 12:54:18 OS
+ #61096# nach dem letzten aufheben kommt der Fokus auf OK
+
+ Rev 1.136 28 Jan 1999 18:12:22 JP
+ Task #57749#: Undo von Bereichs-Attributen (Spalten, Hintergr...)
+
+ Rev 1.135 27 Jan 1999 15:48:50 AMA
+ Fix #57749#: Der Spaltendialog bekommt ein Gedaechtnis
+
+ Rev 1.134 30 Nov 1998 14:55:40 OS
+ #59995# richtige Abwahl verknuepfter Bereiche, auch in Mehrfachselektion
+
+ Rev 1.133 17 Nov 1998 22:18:22 JP
+ Task #59398#: ClipboardFormatId Umstellungen
+
+ Rev 1.132 12 Nov 1998 15:06:48 JP
+ Bug #54342#: auch bei GlobalDocs das Filepasswort an die Section uebertragen
+
+ Rev 1.131 28 Oct 1998 18:07:28 JP
+ Bug #54342#: File-Passwort von der Section merken und vom Medium besorgen
+
+ Rev 1.130 13 Oct 1998 12:47:28 OM
+ #57749# UI fuer spaltige Bereiche
+
+-------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/dialog/regionsw.hrc b/sw/source/ui/dialog/regionsw.hrc
new file mode 100644
index 000000000000..a4866227e97f
--- /dev/null
+++ b/sw/source/ui/dialog/regionsw.hrc
@@ -0,0 +1,144 @@
+/*************************************************************************
+ *
+ * $RCSfile: regionsw.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _REGIONSW_HRC
+#define _REGIONSW_HRC
+
+#include "dialog.hrc"
+
+
+#define CB_CONDITION 1
+#define CB_DDE 2
+#define CB_DISMISS 3
+#define CB_END_AT_TXTEND 4
+#define CB_END_NUM 5
+#define CB_FILE 6
+#define CB_FTN_AT_TXTEND 7
+#define CB_FTN_NUM 8
+#define CB_HIDE 9
+#define CB_PASSWD 10
+#define CB_PROTECT 11
+#define CB_FTN_NUM_FMT 12
+#define CB_END_NUM_FMT 13
+
+#define ED_CONDITION 1
+#define ED_END_PREFIX 2
+#define ED_END_SUFFIX 3
+#define ED_FILE 4
+#define ED_FTN_PREFIX 5
+#define ED_FTN_SUFFIX 6
+#define ED_RANAME 7
+#define ED_RNAME 8
+
+#define FLD_END_OFFSET 1
+#define FLD_FTN_OFFSET 2
+
+#define FT_DDE 1
+#define FT_END_OFFSET 2
+#define FT_END_PREFIX 3
+#define FT_END_SUFFIX 4
+#define FT_FILE 5
+#define FT_FTN_OFFSET 6
+#define FT_FTN_PREFIX 7
+#define FT_FTN_SUFFIX 8
+#define FT_RNAME 9
+#define FT_SUBREG 10
+
+#define GB_EDIT_OPTIONS 1
+#define GB_EDIT_SECTION 2
+#define GB_END 3
+#define GB_FTN 4
+#define GB_NEW_OPTIONS 5
+#define GB_NEW_SECTION 6
+
+#define LB_END_NUMVIEW 1
+#define LB_FTN_NUMVIEW 2
+#define LB_SUBREG 3
+
+#define PB_CANCEL 1
+#define PB_FILE 2
+#define PB_HELP 3
+#define PB_OK 4
+#define PB_OPTIONS 5
+#define PB_SAVED 6
+
+#define ST_INSERT 1
+#define TLB_SECTION 2
+
+
+
+/* Globale Resourcen */
+#define BMP_REG_NOPROT_NOHIDE (RC_REGIONSW_BEGIN+0)
+#define BMP_REG_NOPROT_HIDE (RC_REGIONSW_BEGIN+1)
+#define BMP_REG_PROT_NOHIDE (RC_REGIONSW_BEGIN+2)
+#define BMP_REG_PROT_HIDE (RC_REGIONSW_BEGIN+3)
+#define BMP_REG_EXPNODE (RC_REGIONSW_BEGIN+4)
+#define BMP_REG_COLLNODE (RC_REGIONSW_BEGIN+5)
+
+#define STR_REG_DUPLICATE (RC_REGIONSW_BEGIN+6)
+#define STR_INFO_DUPLICATE (RC_REGIONSW_BEGIN+7)
+
+#define MD_INS_REGION (RC_REGIONSW_BEGIN+8)
+#define MD_EDIT_REGION (RC_REGIONSW_BEGIN+9)
+#define QB_CONNECT (RC_REGIONSW_BEGIN+10)
+#define REG_WRONG_PASSWORD (RC_REGIONSW_BEGIN+11)
+#define REG_WRONG_PASSWD_REPEAT (RC_REGIONSW_BEGIN+12)
+
+#endif
diff --git a/sw/source/ui/dialog/regionsw.src b/sw/source/ui/dialog/regionsw.src
new file mode 100644
index 000000000000..05f9248bdae3
--- /dev/null
+++ b/sw/source/ui/dialog/regionsw.src
@@ -0,0 +1,1697 @@
+/*************************************************************************
+ *
+ * $RCSfile: regionsw.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "regionsw.hrc"
+#include "cmdid.h"
+#include "globals.hrc"
+#include "helpid.h"
+/*************************************************************************
+
+ Dialog "Bereich einfuegen"
+
+*************************************************************************/
+#define FT_SUBREG_TEXT \
+ Text = "Berei~ch" ; \
+ Text [ English ] = "Section" ; \
+ Text [ dutch ] = "~Bereik" ; \
+ Text [ english_us ] = "~Section" ; \
+ Text [ italian ] = "~Sezione" ; \
+ Text [ spanish ] = "Ar~ea" ; \
+ Text [ french ] = "~Section" ; \
+ Text [ swedish ] = "~Område" ; \
+ Text [ danish ] = "Område" ; \
+ Text [ portuguese_brazilian ] = "Berei~ch" ; \
+ Text [ portuguese ] = "Secção" ; \
+ Text[ chinese_simplified ] = "ÇøÓò(~S)"; \
+ Text[ russian ] = "Îáëàñòü"; \
+ Text[ polish ] = "Sekcja"; \
+ Text[ japanese ] = "”͈Í(~S)"; \
+ Text[ language_user1 ] = "èëè: Ðàçäåë - -"; \
+ Text[ chinese_traditional ] = "°Ï°ì(~S)"; \
+ Text[ arabic ] = "ÇáäØÇÞ"; \
+ Text[ greek ] = "Å~íüôçôá"; \
+ Text[ korean ] = "±¸¿ª(~S)"; \
+ Text[ turkish ] = "Bölüm";
+
+#define CB_HIDE_TEXT \
+ Text = "Aus~blenden" ; \
+ Text [ English ] = "~Hidden" ; \
+ Text [ norwegian ] = "~Hidden" ; \
+ Text [ italian ] = "~Nascondi" ; \
+ Text [ portuguese_brazilian ] = "~Oculto" ; \
+ Text [ portuguese ] = "~Ocultar" ; \
+ Text [ finnish ] = "~Piilotettu" ; \
+ Text [ danish ] = "Skjul" ; \
+ Text [ french ] = "~Masquer" ; \
+ Text [ swedish ] = "Döl~j" ; \
+ Text [ dutch ] = "~Verbergen" ; \
+ Text [ spanish ] = "~Ocultar" ; \
+ Text [ english_us ] = "~Hidden" ; \
+ 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";
+
+#define CB_CONDITION_TEXT \
+ Text = "M~it Bedingung" ; \
+ Text [ English ] = "~With condition" ; \
+ Text [ english_us ] = "~With condition" ; \
+ Text [ italian ] = "Con condizione" ; \
+ Text [ spanish ] = "Con ~condición" ; \
+ Text [ french ] = "Sous ~condition" ; \
+ Text [ dutch ] = "~Met conditie" ; \
+ Text [ swedish ] = "~Med villkor" ; \
+ Text [ danish ] = "Med betingelse" ; \
+ Text [ portuguese ] = "~Com condição" ; \
+ Text [ portuguese_brazilian ] = "M~it Bedingung" ; \
+ Text[ chinese_simplified ] = "´øÌõ¼þ(~W)"; \
+ Text[ russian ] = "Ïðè óñëîâèè"; \
+ Text[ polish ] = "Warunkowy"; \
+ Text[ japanese ] = "ðŒ•t(~W)"; \
+ Text[ chinese_traditional ] = "¦³±ø¥ó(~W)"; \
+ Text[ arabic ] = "ÈÔÑØ"; \
+ Text[ greek ] = "Ìå óõíèÞê~ç"; \
+ Text[ korean ] = "Á¶°Ç°ú ÇÔ²²(~W)"; \
+ Text[ turkish ] = "Koþul";
+
+#define CB_FILE_TEXT \
+ Text = "~Verknüpfung" ; \
+ Text [ English ] = "~Link" ; \
+ Text [ english_us ] = "~Link" ; \
+ Text [ italian ] = "~Collegamento" ; \
+ Text [ spanish ] = "~Vínculo" ; \
+ Text [ french ] = "~Lien" ; \
+ Text [ dutch ] = "~Koppeling" ; \
+ Text [ swedish ] = "~Länk" ; \
+ Text [ danish ] = "Kæde" ; \
+ Text [ portuguese_brazilian ] = "~Verknüpfung" ; \
+ Text [ portuguese ] = "~Ligação" ; \
+ Text[ chinese_simplified ] = "Á´½Ó(~L)"; \
+ Text[ russian ] = "Ññûëêà"; \
+ Text[ polish ] = "£¹cze"; \
+ Text[ japanese ] = "Øݸ(~L)"; \
+ Text[ chinese_traditional ] = "±¶®|(~L)"; \
+ Text[ arabic ] = "ÇÑÊÈÇØ"; \
+ Text[ greek ] = "~Óýíäåóç"; \
+ Text[ korean ] = "¿¬°á(~L)"; \
+ Text[ turkish ] = "Baðlantý";
+
+#define CB_DDE_TEXT \
+ Text = "~DDE" ; \
+ Text [ English ] = "~DDE" ; \
+ Text [ dutch ] = "~DDE" ; \
+ Text [ english_us ] = "DD~E" ; \
+ Text [ italian ] = "~DDE" ; \
+ Text [ spanish ] = "~DDE" ; \
+ Text [ french ] = "~DDE" ; \
+ Text [ swedish ] = "~DDE" ; \
+ Text [ danish ] = "DDE" ; \
+ Text [ portuguese_brazilian ] = "~DDE" ; \
+ Text [ portuguese ] = "~DDE" ; \
+ Text[ chinese_simplified ] = "DDE(~E)"; \
+ Text[ russian ] = "~DDE"; \
+ Text[ polish ] = "DDE"; \
+ Text[ japanese ] = "DDE(~E)"; \
+ Text[ chinese_traditional ] = "DD~E"; \
+ Text[ arabic ] = "DDE~"; \
+ Text[ greek ] = "~DDE"; \
+ Text[ korean ] = "DD~E"; \
+ Text[ turkish ] = "DDE";
+
+#define FT_DDE_TEXT \
+ Text = "DDE~-Befehl" ; \
+ Text [ English ] = "DDE command" ; \
+ Text [ english_us ] = "DDE ~Command" ; \
+ Text [ italian ] = "Comando DDE" ; \
+ Text [ spanish ] = "~Comando DDE" ; \
+ Text [ french ] = "Commande ~DDE" ; \
+ Text [ dutch ] = "~DDE-opdracht" ; \
+ Text [ swedish ] = "DDE-~kommando" ; \
+ Text [ danish ] = "DDE-kommando" ; \
+ Text [ portuguese_brazilian ] = "DDE~-Befehl" ; \
+ Text [ portuguese ] = "~Comando DDE" ; \
+ Text[ chinese_simplified ] = "DDE Ö¸Áî(~C)"; \
+ Text[ russian ] = "Êîìàíäà DDE~"; \
+ Text[ polish ] = "Polecenie DDE"; \
+ Text[ japanese ] = "DDEŽwŽ¦(~C)"; \
+ Text[ chinese_traditional ] = "~DDE - «ü¥O"; \
+ Text[ arabic ] = "ÃãÑ DDE"; \
+ Text[ greek ] = "~ÅíôïëÞ DDE"; \
+ Text[ korean ] = "DDE ¸í·É(~C)"; \
+ Text[ turkish ] = "DDE komutu";
+
+#define FT_FILE_TEXT \
+ Text = "Dateina~me" ; \
+ Text [ English ] = "File name" ; \
+ Text [ english_us ] = "~File name" ; \
+ Text [ italian ] = "Nome file" ; \
+ Text [ spanish ] = "~Nombre de archivo" ; \
+ Text [ french ] = "Nom de ~fichier" ; \
+ Text [ dutch ] = "~Bestandsnaam" ; \
+ Text [ swedish ] = "~Filnamn" ; \
+ Text [ danish ] = "Filnavn" ; \
+ Text [ portuguese_brazilian ] = "Dateina~me" ; \
+ Text [ portuguese ] = "~Nome do ficheiro" ; \
+ Text[ chinese_simplified ] = "ÎļþÃû(~F)"; \
+ Text[ russian ] = "Èìÿ ôàéëà"; \
+ Text[ polish ] = "Nazwa pliku"; \
+ Text[ japanese ] = "̧²Ù–¼(~F)"; \
+ Text[ chinese_traditional ] = "ÀɮצWºÙ(~F)"; \
+ Text[ arabic ] = "ÇÓã ÇáãáÝ"; \
+ Text[ greek ] = "¼íï~ìá áñ÷åßïõ"; \
+ Text[ korean ] = "ÆÄÀÏ À̸§(~F)"; \
+ Text[ turkish ] = "D~osya adý";
+
+#define PB_FILE_TEXT \
+ Text = "Au~swählen..." ; \
+ Text [ English ] = "~Browse..." ; \
+ Text [ english_us ] = "~Browse..." ; \
+ Text [ portuguese ] = "~Seleccionar..." ; \
+ Text [ portuguese_brazilian ] = "Durchs~uchen..." ; \
+ Text [ swedish ] = "~Välj ut..." ; \
+ Text [ danish ] = "Gennemse..." ; \
+ Text [ italian ] = "~Sfoglia..." ; \
+ Text [ spanish ] = "Se~leccionar..." ; \
+ Text [ french ] = "~Sélectionner..." ; \
+ Text [ dutch ] = "~Selecteren..." ; \
+ Text[ chinese_simplified ] = "ä¯ÀÀ(~B)..."; \
+ Text[ russian ] = "Âûáðàòü..."; \
+ Text[ polish ] = "Wybierz..."; \
+ Text[ japanese ] = "‘I‘ð(~B)..."; \
+ Text[ chinese_traditional ] = "ÂsÄý(~B)..."; \
+ Text[ arabic ] = "ÇÎÊíÇÑ..."; \
+ Text[ greek ] = "Å~ðéëïãÞ..."; \
+ Text[ korean ] = "¼±ÅÃÇϱâ(~B)..."; \
+ Text[ turkish ] = "Seç...";
+
+#define GB_OPTIONS_TEXT \
+ 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";
+
+/*************************************************************************
+
+ Dialog "Bereiche bearbeiten"
+
+*************************************************************************/
+ModalDialog MD_EDIT_REGION
+{
+ HelpID = FN_EDIT_REGION ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 296 , 164 ) ;
+ Text = "Bereiche bearbeiten" ;
+ Text [ English ] = "Edit Sections" ;
+ Text [ norwegian ] = "Redigere Områder" ;
+ Text [ italian ] = "Modifica sezioni" ;
+ Text [ portuguese_brazilian ] = "Editar Seções" ;
+ Text [ portuguese ] = "Editar secções" ;
+ Text [ finnish ] = "Muokkaa asiakirjan osia" ;
+ Text [ danish ] = "Rediger områder" ;
+ Text [ french ] = "Édition des sections" ;
+ Text [ swedish ] = "Redigera områden" ;
+ Text [ dutch ] = "Bereiken bewerken" ;
+ Text [ spanish ] = "Modificar áreas" ;
+ Text [ english_us ] = "Edit Sections" ;
+ Moveable = TRUE ;
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 240 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Disable = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 240 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_OPTIONS
+ {
+ Pos = MAP_APPFONT ( 240 , 40 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ Text = "~Optionen..." ;
+ Text [ English ] = "~Options...";
+ Text[ english_us ] = "~Options...";
+ Text[ portuguese ] = "~Opções...";
+ Text[ russian ] = "Ïàðàìåòðû...";
+ Text[ greek ] = "ÅðéëïãÝò";
+ Text[ dutch ] = "~Opties...";
+ Text[ french ] = "~Options...";
+ Text[ spanish ] = "~Opciones...";
+ Text[ italian ] = "~Opzioni...";
+ Text[ danish ] = "Indstillinger...";
+ Text[ swedish ] = "Alternativ";
+ Text[ polish ] = "Opcje...";
+ Text[ portuguese_brazilian ] = "~Options";
+ Text[ japanese ] = "µÌß¼®Ý(~O)";
+ Text[ korean ] = "¿É¼Ç(~O)...";
+ Text[ chinese_simplified ] = "Ñ¡Ïî(~O)";
+ Text[ chinese_traditional ] = "¿ï¶µ(~O)";
+ Text[ arabic ] = "ÎíÇÑÇÊ...";
+ Text[ turkish ] = "Seçenekler...";
+ };
+ PushButton CB_DISMISS
+ {
+ Pos = MAP_APPFONT ( 240 , 57 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Disable = TRUE ;
+ TabStop = TRUE ;
+ Text = "A~ufheben" ;
+ Text [ English ] = "~Dismiss" ;
+ Text [ norwegian ] = "~Dismiss" ;
+ Text [ italian ] = "Rimuovi" ;
+ Text [ portuguese_brazilian ] = "~Dispensar" ;
+ Text [ portuguese ] = "~Remover" ;
+ Text [ finnish ] = "~Poista" ;
+ Text [ danish ] = "Ophæv" ;
+ Text [ french ] = "~Éliminer" ;
+ Text [ swedish ] = "Upphäv" ;
+ Text [ dutch ] = "~Opheffen" ;
+ Text [ spanish ] = "An~ular" ;
+ Text [ english_us ] = "~Undo" ;
+ Text[ chinese_simplified ] = "ÒƳý(~R)";
+ Text[ russian ] = "Óáðàòü";
+ Text[ polish ] = "Anuluj";
+ Text[ japanese ] = "‰ðœ(~R)";
+ Text[ chinese_traditional ] = "²¾°£(~R)";
+ Text[ arabic ] = "ÅÒÇáÉ";
+ Text[ greek ] = "ÊáôÜñãçóç";
+ Text[ korean ] = "»èÁ¦(~R)";
+ Text[ turkish ] = "Kaldýr";
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 240 , 77 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_RNAME
+ {
+ Pos = MAP_APPFONT ( 129 , 17 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ 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 ] = "Ãû³Æ(~N)";
+ Text[ russian ] = "Èìÿ";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "–¼‘O(~N)";
+ Text[ chinese_traditional ] = "¦WºÙ(~N)";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§(~N)";
+ Text[ turkish ] = "~Ad";
+ };
+ Edit ED_RANAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 160 , 16 ) ;
+ Size = MAP_APPFONT ( 68 , 12 ) ;
+ TabStop = TRUE ;
+ Disable = TRUE ;
+ };
+ TriStateBox CB_PROTECT
+ {
+ Pos = MAP_APPFONT ( 129 , 31 ) ;
+ Size = MAP_APPFONT ( 70 , 12 ) ;
+ TabStop = TRUE ;
+ Disable = TRUE ;
+ TriStateDisable = FALSE ;
+ Text = "~Geschützt" ;
+ Text [ English ] = "Pro~tected" ;
+ Text [ norwegian ] = "Pro~tected" ;
+ Text [ italian ] = "Pro~tetta" ;
+ Text [ portuguese_brazilian ] = "Pro~tegido" ;
+ Text [ portuguese ] = "~Proteger" ;
+ Text [ finnish ] = "~Suojattu" ;
+ Text [ danish ] = "Beskyttet" ;
+ Text [ french ] = "~Protégé" ;
+ Text [ swedish ] = "Skyddad" ;
+ Text [ dutch ] = "~Beveiligd" ;
+ Text [ spanish ] = "Pro~tegida" ;
+ Text [ english_us ] = "~Protected" ;
+ Text[ chinese_simplified ] = "Êܱ£»¤µÄ(~P)";
+ Text[ russian ] = "Çàùèùåíî";
+ Text[ polish ] = "Chroniony";
+ Text[ japanese ] = "•ÛŒì‚³‚ꂽ(~P)";
+ Text[ chinese_traditional ] = "¨ü«OÅ@(~P)";
+ Text[ arabic ] = "ãÍãí";
+ Text[ greek ] = "Ðñïóôáôåõüìåíï";
+ Text[ korean ] = "º¸È£(~P)";
+ Text[ turkish ] = "Korumalý";
+ };
+ TriStateBox CB_HIDE
+ {
+ Pos = MAP_APPFONT ( 129 , 46 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ TabStop = TRUE ;
+ TriStateDisable = FALSE ;
+ CB_HIDE_TEXT
+ };
+ TriStateBox CB_CONDITION
+ {
+ Pos = MAP_APPFONT ( 144 , 59 ) ;
+ Size = MAP_APPFONT ( 85 , 10 ) ;
+ TriStateDisable = FALSE ;
+ CB_CONDITION_TEXT
+ };
+ Edit ED_CONDITION
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 160 , 72 ) ;
+ Size = MAP_APPFONT ( 68 , 12 ) ;
+ TabStop = TRUE ;
+ Disable = TRUE ;
+ };
+ TriStateBox CB_FILE
+ {
+ Pos = MAP_APPFONT ( 129 , 102 ) ;
+ Size = MAP_APPFONT ( 59 , 10 ) ;
+ TabStop = TRUE ;
+ CB_FILE_TEXT
+ };
+ CheckBox CB_DDE
+ {
+ Pos = MAP_APPFONT ( 190 , 102 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Disable = TRUE ;
+ CB_DDE_TEXT
+ };
+ FixedText FT_DDE
+ {
+ Pos = MAP_APPFONT ( 144 , 115 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ Hide = TRUE ;
+ FT_DDE_TEXT
+ };
+ FixedText FT_FILE
+ {
+ Pos = MAP_APPFONT ( 144 , 115 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ Disable = TRUE ;
+ FT_FILE_TEXT
+ };
+ Edit ED_FILE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 144 , 126 ) ;
+ Size = MAP_APPFONT ( 84 , 12 ) ;
+ Disable = TRUE ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_FILE
+ {
+ Pos = MAP_APPFONT ( 240 , 125 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Disable = TRUE ;
+ PB_FILE_TEXT
+ };
+ FixedText FT_SUBREG
+ {
+ Pos = MAP_APPFONT ( 144 , 141 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Disable = TRUE ;
+ FT_SUBREG_TEXT
+ };
+ ComboBox LB_SUBREG
+ {
+ Pos = MAP_APPFONT ( 175 , 141 ) ;
+ Size = MAP_APPFONT ( 53 , 50 ) ;
+ Disable = TRUE ;
+ TabStop = TRUE ;
+ Sort = TRUE ;
+ DropDown = TRUE ;
+ };
+ CheckBox CB_PASSWD
+ {
+ Pos = MAP_APPFONT ( 12 , 145 ) ;
+ Size = MAP_APPFONT ( 104 , 12 ) ;
+ TabStop = TRUE ;
+ Text = "Bereiche mit ~Passwortschutz" ;
+ Text [ English ] = "Sections ~password protected" ;
+ Text [ dutch ] = "Bereiken met ~wachtwoordbeveiliging" ;
+ Text [ english_us ] = "P~assword protected" ;
+ Text [ italian ] = "Sezioni con protezione password" ;
+ Text [ spanish ] = "Areas protegidas con ~contraseña" ;
+ Text [ french ] = "Protégées par ~mot de passe" ;
+ Text [ swedish ] = "Områden med ~lösenordsskydd" ;
+ Text [ danish ] = "Områder med adgangskodebeskyttelse" ;
+ Text [ portuguese_brazilian ] = "Bereiche mit ~Paßwortschutz" ;
+ Text [ portuguese ] = "Proteger com ~senha" ;
+ Text[ chinese_simplified ] = "ʹÓÿÚÁî±£»¤µÄÇøÓò(~A)";
+ Text[ russian ] = "Îáëàñòè, çàùèùåííûå ïàðîëåì";
+ Text[ polish ] = "Obszary zabezpieczone has³em";
+ Text[ japanese ] = "Ê߽ܰÄÞ•ÛŒì•t‚«‚͈̔Í(~A)";
+ Text[ chinese_traditional ] = "¨Ï¥Î±K½X«OÅ@°Ï°ì(~A)";
+ Text[ arabic ] = "äØÇÞÇÊ ãÍãíÉ ÈßáãÉ ÓÑ";
+ Text[ greek ] = "Ðåñéï÷Ýò ìå ðñïóôáóßá êùäéêïý ðñüóâáóçò";
+ Text[ korean ] = "Æнº¿öµå°¡ º¸È£µÇ¾ú½À´Ï´Ù.(~A)";
+ Text[ turkish ] = "Þifre korumalý bölümler";
+ };
+ GroupBox GB_EDIT_SECTION
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 111 , 157 ) ;
+ Text = "Bereich" ;
+ Text [ English ] = "section" ;
+ Text [ norwegian ] = "section" ;
+ Text [ italian ] = "Sezione" ;
+ Text [ portuguese_brazilian ] = "seção" ;
+ Text [ portuguese ] = "Secção" ;
+ Text [ finnish ] = "osa" ;
+ Text [ danish ] = "Område" ;
+ Text [ french ] = "Section" ;
+ Text [ swedish ] = "Område" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ spanish ] = "Area" ;
+ Text [ english_us ] = "Section" ;
+ Text[ chinese_simplified ] = "·ÖÀà";
+ Text[ russian ] = "Îáëàñòü";
+ Text[ polish ] = "Obszar";
+ Text[ japanese ] = "”͈Í";
+ Text[ language_user1 ] = "èëè: Îáëàñòü - -";
+ Text[ chinese_traditional ] = "¤ÀÃþ";
+ Text[ arabic ] = "ÇáäØÇÞ";
+ Text[ greek ] = "Åíüôçôá";
+ Text[ korean ] = "±¸¿ª";
+ Text[ turkish ] = "Bölüm";
+ };
+ Control TLB_SECTION
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 99 , 127 ) ;
+ TabStop = TRUE ;
+ };
+ /* FixedText FT_CONDITION
+ {
+ Pos = MAP_APPFONT( 97, 48 );
+ 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";
+ Disable = TRUE;
+ };*/
+ GroupBox GB_EDIT_OPTIONS
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 123 , 3 ) ;
+ Size = MAP_APPFONT ( 111 , 157 ) ;
+ GB_OPTIONS_TEXT
+ };
+ Text[ chinese_simplified ] = "±à¼­ÇøÓò";
+ Text[ russian ] = "Ïðàâêà îáëàñòåé";
+ Text[ polish ] = "Edytuj sekcje";
+ Text[ japanese ] = "”͈͂̕ÒW";
+ Text[ chinese_traditional ] = "½s¿è°Ï°ì";
+ Text[ arabic ] = "ÊÍÑíÑ äØÇÞÇÊ";
+ Text[ greek ] = "Åðåîåñãáóßá ôïìÝùí";
+ Text[ korean ] = "±¸¿ª ÆíÁý";
+ Text[ turkish ] = "Bölümleri düzenle";
+};
+Bitmap BMP_REG_NOPROT_NOHIDE
+{
+ File = "lock1.bmp" ;
+};
+Bitmap BMP_REG_NOPROT_HIDE
+{
+ File = "lock2.bmp" ;
+};
+Bitmap BMP_REG_PROT_NOHIDE
+{
+ File = "lock.bmp" ;
+};
+Bitmap BMP_REG_PROT_HIDE
+{
+ File = "lock3.bmp" ;
+};
+Bitmap BMP_REG_EXPNODE
+{
+ File = "plus.bmp" ;
+};
+Bitmap BMP_REG_COLLNODE
+{
+ File = "minus.bmp" ;
+};
+String STR_REG_DUPLICATE
+{
+ Text = "Bereichsname geändert:" ;
+ Text [ English ] = "Section name changed:" ;
+ Text [ norwegian ] = "Section name changed:" ;
+ Text [ italian ] = "Nome sezione modificato:" ;
+ Text [ portuguese_brazilian ] = "Nome da seção alterado:" ;
+ Text [ portuguese ] = "Nome da secção mudou:" ;
+ Text [ finnish ] = "Osan nimi vaihdettu:" ;
+ Text [ danish ] = "Områdenavn ændret:" ;
+ Text [ french ] = "Nom de section modifié :" ;
+ Text [ swedish ] = "Områdesnamn ändrat:" ;
+ Text [ dutch ] = "Bereiknaam gewijzigd:" ;
+ Text [ spanish ] = "Nombre de área modificado:" ;
+ Text [ english_us ] = "Section name changed:" ;
+ Text[ chinese_simplified ] = "ÇøÓòÃû³ÆÒѾ­¸Ä±ä£º";
+ Text[ russian ] = "Èìÿ ðàçäåëà èçìåíåíî:";
+ Text[ polish ] = "Zmieniona nazwa sekcji:";
+ Text[ japanese ] = "”͈͖¼‚Ì•ÏX:";
+ Text[ chinese_traditional ] = "°Ï°ì¦WºÙ¤w¸gÅܧó¡G";
+ Text[ arabic ] = "Êã ÊÛííÑ ÇÓã ÇáäØÇÞ:";
+ Text[ greek ] = "ÁëëáãÞ ïíüìáôïò ôïõ ôïìÝá:";
+ Text[ korean ] = "±¸¿ª À̸§ÀÌ º¯°æµÇ¾ú½À´Ï´Ù:";
+ Text[ turkish ] = "Bölüm adý deðiþtirildi:";
+};
+String STR_INFO_DUPLICATE
+{
+ Text = "Doppelter Bereichsname" ;
+ Text [ English ] = "Duplicate section name" ;
+ Text [ norwegian ] = "Duplicate section name" ;
+ Text [ italian ] = "Nome area doppio" ;
+ Text [ portuguese_brazilian ] = "Nome da seção duplo" ;
+ Text [ portuguese ] = "Nome de secção duplo" ;
+ Text [ finnish ] = "Osan nimi toistettu" ;
+ Text [ danish ] = "Dobbelt områdenavn" ;
+ Text [ french ] = "Dupliquer nom de la section" ;
+ Text [ swedish ] = "Dubbelt områdesnamn" ;
+ Text [ dutch ] = "Dubbele bereiknaam" ;
+ Text [ spanish ] = "Nombre doble de área" ;
+ Text [ english_us ] = "Duplicate section name" ;
+ Text[ chinese_simplified ] = "Ë«ÇøÓòÃû³Æ";
+ Text[ russian ] = "Ïîâòîð èìåíè îáëàñòè";
+ Text[ polish ] = "Zduplikowane nazwy sekcji";
+ Text[ japanese ] = "d•¡‚µ‚½”͈͖¼";
+ Text[ chinese_traditional ] = "Âù°Ï°ì¦WºÙ";
+ Text[ arabic ] = "ÇÓã äØÇÞ ãÒÏæÌ";
+ Text[ greek ] = "ÄéðëÞ ïíïìáóßá ôïìÝá";
+ Text[ korean ] = "Áߺ¹µÈ ±¸¿ªÀ̸§";
+ Text[ turkish ] = "Bölüm adý daha önce kullanýldý";
+};
+QueryBox QB_CONNECT
+{
+ Buttons = WB_YES_NO ;
+ DefButton = WB_DEF_NO ;
+ Message = "Eine Dateiverbindung löscht den aktuellen Inhalt des Bereichs. Trotzdem verbinden ?" ;
+ Message [ English ] = "A file connection will delete the content of the current section. Continue ?" ;
+ Message [ dutch ] = "Door een bestandsverbinding wordt de inhoud van het actuele bereik verwijderd. Toch verbinden?" ;
+ Message [ english_us ] = "A file connection will delete the contents of the current section. Connect anyway?" ;
+ Message [ italian ] = "Un collegamento di file cancella il contenuto dell'area. Volete collegare lo stesso?" ;
+ Message [ spanish ] = "Un enlace de archivos borra el contenido actual del área. ¿Enlazar de todos modos?" ;
+ Message [ french ] = "Une connexion supprime le contenu de la section courante. Connecter quand même?" ;
+ Message [ swedish ] = "En filförbindelse raderar det aktuella innehållet i området. Förbinda ändå?" ;
+ Message [ danish ] = "En filforbindelse sletter områdets aktuelle indhold. Vil du forbinde alligevel?" ;
+ Message [ portuguese ] = "Uma ligação de ficheiros elimina o conteúdo da actual secção. Mesmo assim, ligar?" ;
+ Message [ portuguese_brazilian ] = "Eine Dateiverbindung löscht den aktuellen Inhalt des Bereichs. Trotzdem verbinden ?" ;
+ Message[ chinese_simplified ] = "ʹÓÃÎļþÁ¬½Ó»áɾ³ýµ±Ç°ÇøÓòÄÚµÄÄÚÈÝ¡£Äú»¹ÊÇÒªÖ´ÐÐÁ¬½ÓÃüÁ";
+ Message[ russian ] = "Ñâÿçü ôàéëîâ óäàëèò òåêóùåå ñîäåðæèìîå îáëàñòè. Ñâÿçàòü íåñìîòðÿ íà ýòî ?";
+ Message[ polish ] = "Po³¹czenie pliku usunie aktualn¹ zawartoœæ obszaru. Mimo to po³¹czyæ?";
+ Message[ japanese ] = "̧²Ù‚ÌÚ‘±‚Íì‹Æ’†‚͈͓̔à—e‚ð휂µ‚Ü‚·B‚»‚ê‚Å‚àÚ‘±‚µ‚Ü‚·‚©?";
+ Message[ chinese_traditional ] = "¨Ï¥ÎÀɮ׳sµ²·|§R°£°Ï°ì¤º·í«eªº¤º®e¡C±zÁÙ¬O­n°õ¦æ³sµ²¡H";
+ Message[ arabic ] = "ÓíÄÏí ÇÊÕÇá ÇáãáÝ Åáì ÍÐÝ ÇáãÍÊæíÇÊ ÇáÍÇáíÉ. åá ÊÑíÏ ÇáÇÊÕÇá Úáì ÇáÑÛã ãä Ðáß¿";
+ Message[ greek ] = "Ìéá óýíäåóç áñ÷åßïõ äéáãñÜöåé ôï ôñÝ÷ïí ðåñéå÷üìåíï ôïõ ôìÞìáôïò. Íá ðñáãìáôïðïéçèåß ç óýíäåóç ðáñ´ üëá áõôÜ;";
+ Message[ korean ] = "ÆÄÀÏ Á¢¼ÓÀÌ ÇöÀç ±¸¿ªÀÇ ³»¿ëÀ» »èÁ¦ ÇÒ°ÍÀÔ´Ï´Ù . ±×·¡µµ Á¢¼ÓÇϽðڽÀ´Ï±î?";
+ Message[ turkish ] = "Bir dosya baðlantýsý, þu anki bölüm içeriðini silecek? Baðlantý yine de yapýlsýn mý?";
+};
+InfoBox REG_WRONG_PASSWORD
+{
+ BUTTONS = WB_OK ;
+ DEFBUTTON = WB_DEF_OK ;
+ /* ### ACHTUNG: Neuer Text in Resource? Es wurde ein falsches Paßwort eingegeben. : Es wurde ein falsches Passwort gesetzt */
+ Message = "Es wurde ein falsches Passwort eingegeben." ;
+ Message [ English ] = "A wrong password was specified." ;
+ Message [ dutch ] = "Er werd een verkeerd wachtwoord aangegeven" ;
+ Message [ english_us ] = "The password entered is invalid." ;
+ Message [ italian ] = "È stata impostata una password errata" ;
+ Message [ spanish ] = "Se empleó una contraseña falsa." ;
+ Message [ french ] = "Le mot de passe indiqué est incorrect." ;
+ Message [ swedish ] = "Det inmatade lösenordet är felaktigt" ;
+ Message [ danish ] = "Den indtastede adgangskode er forkert." ;
+ Message [ portuguese ] = "A senha especificada está errada." ;
+ Message [ portuguese_brazilian ] = "Es wurde ein falsches Passwort gesetzt" ;
+ Message[ chinese_simplified ] = "ÊäÈëµÄ¿ÚÁî´íÎó¡£";
+ Message[ russian ] = "Ââåäåí íåïðàâèëüíûé ïàðîëü.";
+ Message[ polish ] = "Zosta³o wpisane nieprawid³owe has³o.";
+ Message[ japanese ] = "“ü—Í‚³‚ꂽÊ߽ܰÄÞ‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB";
+ Message[ chinese_traditional ] = "¿é¤Jªº±K½XµL®Ä¡C";
+ Message[ arabic ] = "Êã ÅÏÎÇá ßáãÉ ÓÑ ÛíÑ ÕÍíÍÉ.";
+ Message[ greek ] = "ÅéóáãùãÞ Üêõñïõ êùäéêïý ðñüóâáóçò.";
+ Message[ korean ] = "ÁöÁ¤µÈ Æнº¿öµå°¡ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù.";
+ Message[ turkish ] = "Girilen þifre yanlýþ.";
+};
+InfoBox REG_WRONG_PASSWD_REPEAT
+{
+ BUTTONS = WB_OK ;
+ DEFBUTTON = WB_DEF_OK ;
+ Message = "Das Passwort wurde nicht gesetzt." ;
+ Message [ English ] = "The password has not been set." ;
+ Message [ portuguese ] = "A senha não foi especificada." ;
+ Message [ english_us ] = "The password has not been set." ;
+ Message [ portuguese_brazilian ] = "Das Paßwort wurde nicht gesetzt." ;
+ Message [ swedish ] = "Lösenordet har inte angivits." ;
+ Message [ danish ] = "Adgangskoden blev ikke indtastet." ;
+ Message [ italian ] = "La password non è stata impostata." ;
+ Message [ spanish ] = "No se ha definido la contraseña." ;
+ Message [ french ] = "Vous n'avez pas saisi de mot de passe !" ;
+ Message [ dutch ] = "Er werd geen wachtwoord gedefinieerd." ;
+ Message[ chinese_simplified ] = "»¹Î´É趨¿ÚÁî¡£";
+ Message[ russian ] = "Ïàðîëü íå óñòàíîâëåí.";
+ Message[ polish ] = "Has³o nie zosta³o wpisane.";
+ Message[ japanese ] = "Ê߽ܰÄÞ‚ªÝ’肳‚ê‚Ä‚¢‚Ü‚¹‚ñB";
+ Message[ chinese_traditional ] = "ÁÙ¥¼³]©w±K½X¡C";
+ Message[ arabic ] = "áã íÊã ÅÏÎÇá ßáãÉ ÇáÓÑ.";
+ Message[ greek ] = "Äåí êáèïñßóôçêå êùäéêüò ðñüóâáóçò.";
+ Message[ korean ] = "Æнº¿öµå°¡ ÁöÁ¤µÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Message[ turkish ] = "Þifre belirlenmedi.";
+};
+
+TabDialog DLG_INSERT_SECTION
+{
+ HelpId = HID_INSERT_SECTION_DLG;
+ Text = "Bereich einfügen" ;
+ Text [ English ] = "Insert Sections" ;
+ Text [ norwegian ] = "Insert Sections" ;
+ Text [ italian ] = "Inserisci sezioni" ;
+ Text [ portuguese_brazilian ] = "Inserir Seções" ;
+ Text [ portuguese ] = "Inserir secção" ;
+ Text [ finnish ] = "Lisää osia" ;
+ Text [ danish ] = "Indsæt område" ;
+ Text [ french ] = "Insertion d'une section" ;
+ Text [ swedish ] = "Infoga område" ;
+ Text [ dutch ] = "Bereik invoegen" ;
+ Text [ spanish ] = "Insertar área" ;
+ Text [ english_us ] = "Insert Section" ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_INSERT_SECTION;
+ PageResID = TP_INSERT_SECTION;
+ Text = "Bereich" ;
+ Text [ ENGLISH ] = "Section" ;
+ Text[ english_us ] = "Section";
+ Text[ portuguese ] = "Secção";
+ Text[ russian ] = "Îáëàñòü";
+ Text[ greek ] = "Åíüôçôá";
+ Text[ dutch ] = "Bereik";
+ Text[ french ] = "Section";
+ Text[ spanish ] = "Área";
+ Text[ italian ] = "Sezione";
+ Text[ danish ] = "Område";
+ Text[ swedish ] = "Område";
+ Text[ polish ] = "Obszar";
+ Text[ portuguese_brazilian ] = "Section";
+ Text[ japanese ] = "”͈Í";
+ Text[ korean ] = "±¸¿ª";
+ Text[ chinese_simplified ] = "ÇøÓò";
+ Text[ chinese_traditional ] = "°Ï°ì";
+ Text[ arabic ] = "ÇáäØÇÞ";
+ Text[ turkish ] = "Bölüm";
+ };
+ PageItem
+ {
+ Identifier = TP_COLUMN ;
+ PageResID = TP_COLUMN ;
+ Text = "Spalten" ;
+ Text [ ENGLISH ] = "Columns" ;
+ Text [ norwegian ] = "Kolonner" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ portuguese_brazilian ] = "Colunas" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ finnish ] = "Sarakkeet" ;
+ Text [ danish ] = "Kolonner" ;
+ Text [ french ] = "Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ spanish ] = "Columnas" ;
+ Text [ english_us ] = "Columns" ;
+ Text[ chinese_simplified ] = "À¸";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "’i‘g‚Ý";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­";
+ Text[ arabic ] = "ÇáÃÚãÏÉ";
+ Text[ turkish ] = "Sütun";
+ };
+ PageItem
+ {
+ Identifier = TP_BACKGROUND ;
+ PageResID = 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[ greek ] = "Öüíôï";
+ Text[ korean ] = "¹è°æ";
+ Text[ arabic ] = "ÇáÎáÝíÉ";
+ Text[ turkish ] = "Artalan";
+ };
+ PageItem
+ {
+ Identifier = TP_SECTION_FTNENDNOTES ;
+ PageResID = TP_SECTION_FTNENDNOTES ;
+ Text = "Fuß-/Endnoten" ;
+ Text [ ENGLISH ] = "Foot-/Endnotes" ;
+ Text[ english_us ] = "Footnotes/Endnotes";
+ Text[ portuguese ] = "Notas de rodapé/finais";
+ Text[ russian ] = "Îáû÷íûå/Êîíöåâûå ñíîñêè";
+ Text[ greek ] = "Õðïóçìåéþóåéò/Óçìåéþóåéò ôÝëïõò";
+ Text[ dutch ] = "Voet-/eindnoten";
+ Text[ french ] = "Notes de bas de page / de fin";
+ Text[ spanish ] = "Notas al pie/finales";
+ Text[ italian ] = "Note a piè di pagina/di chiusura";
+ Text[ danish ] = "Fod-/slutnoter";
+ Text[ swedish ] = "Fot-/slutnoter";
+ Text[ polish ] = "Przypisy dolne / koñcowe";
+ Text[ portuguese_brazilian ] = "Foot-/Endnotes";
+ Text[ japanese ] = "‹r’/•¶––‹r’";
+ Text[ korean ] = "°¢ÁÖ/¹ÌÁÖ";
+ Text[ chinese_simplified ] = "×¢½ÅºÍβע";
+ Text[ chinese_traditional ] = "ª`¸}©M§Àª`";
+ Text[ arabic ] = "ÍæÇÔí ÓÝáíÉ/ÊÚáíÞÇÊ ÎÊÇãíÉ";
+ Text[ turkish ] = "Dipnot/Sonnot";
+ };
+ };
+ };
+ String ST_INSERT
+ {
+ 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" ;
+ Text[ chinese_simplified ] = "²åÈë";
+ Text[ russian ] = "Âñòàâèòü";
+ Text[ polish ] = "Wstaw";
+ Text[ japanese ] = "‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J";
+ Text[ arabic ] = "ÅÏÑÇÌ";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "»ðÀÔ";
+ Text[ turkish ] = "Ekle";
+ };
+ Text[ russian ] = "Âñòàâèòü îáëàñòü";
+ Text[ greek ] = "ÐñïóèÞêç ôïìÝá";
+ Text[ polish ] = "Wstaw obszar";
+ Text[ japanese ] = "”͈͂̑}“ü";
+ Text[ korean ] = "±¸¿ª»ðÀÔ";
+ Text[ chinese_simplified ] = "²åÈëÇøÓò";
+ Text[ chinese_traditional ] = "´¡¤J°Ï°ì";
+ Text[ arabic ] = "ÅÏÑÇÌ äØÇÞ";
+ Text[ turkish ] = "Bölüm ekle";
+};
+
+TabPage TP_INSERT_SECTION
+{
+ HelpID = HID_INSERT_SECTION_PAGE;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ ComboBox ED_RNAME
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 66 , 104 ) ;
+ TabStop = TRUE ;
+ AutoHScroll = TRUE ;
+ SORT = TRUE ;
+ };
+ GroupBox GB_NEW_SECTION
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 78 , 129 ) ;
+ Text = "Neuer Bereich" ;
+ Text [ English ] = "New section" ;
+ Text [ english_us ] = "New section" ;
+ Text [ italian ] = "Nuova area" ;
+ Text [ spanish ] = "Nueva área" ;
+ Text [ french ] = "Nouvelle section" ;
+ Text [ dutch ] = "Nieuw bereik" ;
+ Text [ swedish ] = "Nytt område" ;
+ Text [ danish ] = "Nyt område" ;
+ Text [ portuguese_brazilian ] = "Neuer Bereich" ;
+ Text [ portuguese ] = "Nova secção" ;
+ Text[ chinese_simplified ] = "ÐÂÇøÓò";
+ Text[ russian ] = "Íîâàÿ îáëàñòü";
+ Text[ polish ] = "Nowy obszar";
+ Text[ japanese ] = "V‚µ‚¢”͈Í";
+ Text[ chinese_traditional ] = "·s¼W°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÌÏíÏ";
+ Text[ greek ] = "ÍÝïò ôïìÝáò";
+ Text[ korean ] = "»õ ±¸¿ª";
+ Text[ turkish ] = "Yeni bölüm";
+ };
+ CheckBox CB_PROTECT
+ {
+ Pos = MAP_APPFONT ( 96 , 17 ) ;
+ Size = MAP_APPFONT ( 100 , 12 ) ;
+ TabStop = TRUE ;
+ Text = "~Geschützt" ;
+ Text [ English ] = "Pro~tected" ;
+ Text [ norwegian ] = "Pro~tected" ;
+ Text [ italian ] = "Pro~tetta" ;
+ Text [ portuguese_brazilian ] = "Pro~tegido" ;
+ Text [ portuguese ] = "Pro~teger" ;
+ Text [ finnish ] = "~Suojattu" ;
+ Text [ danish ] = "Beskyttet" ;
+ Text [ french ] = "~Protégé" ;
+ Text [ swedish ] = "~Skyddat" ;
+ Text [ dutch ] = "~Beveiligd" ;
+ Text [ spanish ] = "~Protegida" ;
+ Text [ english_us ] = "~Protected" ;
+ Text[ chinese_simplified ] = "Êܱ£»¤µÄ(~P)";
+ Text[ russian ] = "Çàùèùåíî";
+ Text[ polish ] = "Chroniony";
+ Text[ japanese ] = "•ÛŒì‚³‚ꂽ(~P)";
+ Text[ chinese_traditional ] = "¨ü«OÅ@(~P)";
+ Text[ arabic ] = "ãÍãí";
+ Text[ language_user1 ] = "(ÄÄ) ÐñïóôáôåõìÝíï; - - - -";
+ Text[ greek ] = "Ðñïóôáôåõüìåíï";
+ Text[ korean ] = "º¸È£(~P)";
+ Text[ turkish ] = "Korumalý";
+ };
+ CheckBox CB_HIDE
+ {
+ Pos = MAP_APPFONT ( 96 , 31 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ CB_HIDE_TEXT
+ };
+ CheckBox CB_CONDITION
+ {
+ Pos = MAP_APPFONT ( 102 , 44 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Disable = TRUE ;
+ CB_CONDITION_TEXT
+ };
+ Edit ED_CONDITION
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 185 , 43 ) ;
+ Size = MAP_APPFONT ( 68 , 12 ) ;
+ Disable = TRUE ;
+ TabStop = TRUE ;
+ };
+ CheckBox CB_FILE
+ {
+ Pos = MAP_APPFONT ( 96 , 73 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ TabStop = TRUE ;
+ CB_FILE_TEXT
+ };
+ CheckBox CB_DDE
+ {
+ Pos = MAP_APPFONT ( 157 , 73 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Disable = TRUE ;
+ CB_DDE_TEXT
+ };
+ FixedText FT_DDE
+ {
+ Pos = MAP_APPFONT ( 111 , 85 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ Hide = TRUE ;
+ FT_DDE_TEXT
+ };
+ FixedText FT_FILE
+ {
+ Pos = MAP_APPFONT ( 111 , 85 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ Disable = TRUE ;
+ FT_FILE_TEXT
+ };
+ Edit ED_FILE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 111 , 97 ) ;
+ Size = MAP_APPFONT ( 84 , 12 ) ;
+ Disable = TRUE ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_FILE
+ {
+ Pos = MAP_APPFONT ( 204 , 97 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Disable = TRUE ;
+ TabStop = TRUE ;
+ PB_FILE_TEXT
+ };
+ FixedText FT_SUBREG
+ {
+ Pos = MAP_APPFONT ( 111 , 113 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Disable = TRUE ;
+ FT_SUBREG_TEXT
+ };
+ ComboBox LB_SUBREG
+ {
+ Pos = MAP_APPFONT ( 142 , 112 ) ;
+ Size = MAP_APPFONT ( 53 , 50 ) ;
+ DropDown = TRUE ;
+ Disable = TRUE ;
+ TabStop = TRUE ;
+ Sort = TRUE ;
+ };
+
+ GroupBox GB_NEW_OPTIONS
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 90 , 3 ) ;
+ Size = MAP_APPFONT ( 167 , 129 ) ;
+ GB_OPTIONS_TEXT
+ };
+};
+
+TabDialog DLG_SECTION_PROPERTIES
+{
+ HelpId = HID_SECTION_PROPERTIES_DLG;
+ Text = "Optionen" ;
+ Text [ English ] = "Options" ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_COLUMN ;
+ PageResID = TP_COLUMN ;
+ Text = "Spalten" ;
+ Text [ ENGLISH ] = "Columns" ;
+ Text [ norwegian ] = "Kolonner" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ portuguese_brazilian ] = "Colunas" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ finnish ] = "Sarakkeet" ;
+ Text [ danish ] = "Kolonner" ;
+ Text [ french ] = "Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ spanish ] = "Columnas" ;
+ Text [ english_us ] = "Columns" ;
+ Text[ chinese_simplified ] = "À¸";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "’i‘g‚Ý";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­";
+ Text[ arabic ] = "ÇáÃÚãÏÉ";
+ Text[ turkish ] = "Sütun";
+ };
+ PageItem
+ {
+ Identifier = TP_BACKGROUND ;
+ PageResID = 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[ greek ] = "Öüíôï";
+ Text[ korean ] = "¹è°æ";
+ Text[ arabic ] = "ÇáÎáÝíÉ";
+ Text[ turkish ] = "Artalan";
+ };
+ PageItem
+ {
+ Identifier = TP_SECTION_FTNENDNOTES ;
+ PageResID = TP_SECTION_FTNENDNOTES ;
+ Text = "Fuß-/Endnoten" ;
+ Text [ ENGLISH ] = "Foot-/Endnotes" ;
+ Text[ english_us ] = "Footnotes/Endnotes";
+ Text[ portuguese ] = "Notas de rodapé/finais";
+ Text[ russian ] = "Îáû÷íûå/Êîíöåâûå ñíîñêè";
+ Text[ greek ] = "Õðïóçìåéþóåéò/Óçìåéþóåéò ôÝëïõò";
+ Text[ dutch ] = "Voet-/eindnoten";
+ Text[ french ] = "Notes de bas de page / de fin";
+ Text[ spanish ] = "Notas al pie/finales";
+ Text[ italian ] = "Note a piè di pagina/di chiusura";
+ Text[ danish ] = "Fod-/slutnoter";
+ Text[ swedish ] = "Fot-/slutnoter";
+ Text[ polish ] = "Przypisy dolne / koñcowe";
+ Text[ portuguese_brazilian ] = "Foot-/Endnotes";
+ Text[ japanese ] = "‹r’/•¶––‹r’";
+ Text[ korean ] = "°¢ÁÖ/¹ÌÁÖ";
+ Text[ chinese_simplified ] = "×¢½ÅºÍβע";
+ Text[ chinese_traditional ] = "ª`¸}©M§Àª`";
+ Text[ arabic ] = "ÍæÇÔí ÓÝáíÉ/ÊÚáíÞÇÊ ÎÊÇãíÉ";
+ Text[ turkish ] = "Dipnot/Sonnot";
+ };
+ };
+ };
+ Text[ english_us ] = "Options";
+ Text[ portuguese ] = "Opções";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ greek ] = "ÅðéëïãÝò";
+ Text[ dutch ] = "Opties";
+ Text[ french ] = "Options";
+ Text[ spanish ] = "Opciones";
+ Text[ italian ] = "Opzioni";
+ Text[ danish ] = "Indstillinger";
+ Text[ swedish ] = "Alternativ";
+ Text[ polish ] = "Opcje";
+ Text[ portuguese_brazilian ] = "Options";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ chinese_simplified ] = "Ñ¡Ïî";
+ Text[ chinese_traditional ] = "¿ï¶µ";
+ Text[ arabic ] = "ÇáÎíÇÑÇÊ";
+ Text[ turkish ] = "Seçenekler";
+};
+
+
+TabPage TP_SECTION_FTNENDNOTES
+{
+ HelpID = HID_SECTION_FTNENDNOTES_PAGE;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ GroupBox GB_FTN
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 59 ) ;
+ Text = "Fußnoten" ;
+ Text [ English ] = "Footnotes" ;
+ Text[ english_us ] = "Footnotes";
+ Text[ portuguese ] = "Notas de rodapé";
+ Text[ russian ] = "Ñíîñêè";
+ Text[ greek ] = "Õðïóçìåéþóåéò";
+ Text[ dutch ] = "Voetnoten";
+ Text[ french ] = "Notes de bas de page";
+ Text[ spanish ] = "Notas al pie";
+ Text[ italian ] = "Note a piè pagina";
+ Text[ danish ] = "Fodnoter";
+ Text[ swedish ] = "Fotnoter";
+ Text[ polish ] = "Przypisy dolne";
+ Text[ portuguese_brazilian ] = "Footnotes";
+ Text[ japanese ] = "‹r’";
+ Text[ korean ] = "°¢ÁÖ";
+ Text[ chinese_simplified ] = "×¢½Å";
+ Text[ chinese_traditional ] = "ª`¸}";
+ Text[ arabic ] = "ÍæÇÔí ÓÝáíÉ";
+ Text[ turkish ] = "Altbilgi";
+ };
+ CheckBox CB_FTN_AT_TXTEND
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "am ~Textende sammeln" ;
+ Text [ English ] = "Collect at end of text" ;
+ Text[ english_us ] = "Collec~t at end of text";
+ Text[ portuguese ] = "Agrupar no ~final do texto";
+ Text[ russian ] = "Ñîáðàòü â êîíöå òåêñòà";
+ Text[ greek ] = "ÓõãêÝíôñùóç óôï ôÝëïò ôïõ ~êåéìÝíïõ";
+ Text[ dutch ] = "Aan ~teksteinde verzamelen";
+ Text[ french ] = "Regrouper en ~fin de texte";
+ Text[ spanish ] = "~recoger al final del texto";
+ Text[ italian ] = "Raccogli a fine ~testo";
+ Text[ danish ] = "saml ved tekstens slutning";
+ Text[ swedish ] = "samla vid ~textslut";
+ Text[ polish ] = "zbierz na koñcu tekstu";
+ Text[ portuguese_brazilian ] = "Collect at end of text";
+ Text[ japanese ] = "•¶‘––‚É‘}“ü(~T)";
+ Text[ korean ] = "ÅؽºÆ® ³¡¿¡ ¼öÁý(~T)";
+ Text[ chinese_simplified ] = "¼¯ÖÐÔÚÎı¾Î²¶Ë";
+ Text[ chinese_traditional ] = "©w¦ì¦b¤º¤å¥½ºÝ";
+ Text[ arabic ] = "ÊÌãíÚ ÚäÏ äåÇíÉ ÇáäÕ";
+
+ Text[ turkish ] = "Metin sonunda topla";
+ };
+ CheckBox CB_FTN_NUM
+ {
+ Pos = MAP_APPFONT ( 12 , 29 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "~Nummer neu starten" ;
+ Text [ English ] = "Restart number" ;
+ Text[ english_us ] = "~Restart numbering";
+ Text[ portuguese ] = "~Reiniciar numeração";
+ Text[ russian ] = "Ïåðåçàïóñê íóìåðàöèè";
+ Text[ greek ] = "Åðáíåêêß~íçóç áñéèìïý";
+ Text[ dutch ] = "~Nieuwe nummering";
+ Text[ french ] = "Numérotation ~séparée";
+ Text[ spanish ] = "reiniciar nu~meración";
+ Text[ italian ] = "Avvia nuovo ~numero";
+ Text[ danish ] = "Uafhængig nummerering forfra";
+ Text[ swedish ] = "oberoende ~numrering";
+ Text[ polish ] = "Uruchom ponownie numer";
+ Text[ portuguese_brazilian ] = "own number sequence";
+ Text[ japanese ] = "”Ô†‚ðV‚µ‚­Žn‚ß‚é(~R)";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â ´Ù½Ã ½ÃÀÛ(~R)";
+ Text[ chinese_simplified ] = "ÖØпªÊ¼±àºÅ";
+ Text[ chinese_traditional ] = "­«·s½s¸¹";
+ Text[ arabic ] = "ÅÚÇÏÉ ÈÏÁ ÇáÊÑÞíã";
+ Text[ turkish ] = "Num. yeniden baþlat";
+ };
+ FixedText FT_FTN_OFFSET
+ {
+ Pos = MAP_APPFONT ( 85 , 29 ) ;
+ Size = MAP_APPFONT ( 36 , 8 ) ;
+ Text = "~Beginn bei" ;
+ Text [ ENGLISH ] = "~Start at" ;
+ Left = TRUE ;
+ Text [ english_us ] = "~Start at" ;
+ Text [ italian ] = "Inizia con" ;
+ Text [ spanish ] = "Comen~zar en" ;
+ Text [ french ] = "À partir ~de" ;
+ Text [ dutch ] = "~Begin met" ;
+ Text [ swedish ] = "~Börja med" ;
+ Text [ danish ] = "Begynd med" ;
+ Text [ portuguese_brazilian ] = "Be~ginn bei" ;
+ Text [ portuguese ] = "~Iniciar em" ;
+ Text[ chinese_simplified ] = "¿ªÊ¼´Ó(~S)";
+ Text[ russian ] = "Íà÷àòü ñ";
+ Text[ polish ] = "Zacznij od";
+ Text[ japanese ] = "ŠJŽn•¶––‹r’”Ô†(~S)";
+ Text[ chinese_traditional ] = "¶}©l±q(~S)";
+ Text[ arabic ] = "ÇáÈÏÁ ÈÜ";
+ Text[ greek ] = "ÈÝóç åêêßíçóçò";
+ Text[ korean ] = "¿¡¼­ ½ÃÀÛ(~S)";
+ Text[ turkish ] = "Baþlang~ýç";
+ };
+ NumericField FLD_FTN_OFFSET
+ {
+ Pos = MAP_APPFONT ( 136 , 29 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ First = 1 ;
+ Last = 9999 ;
+ Maximum = 9999 ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ };
+ CheckBox CB_FTN_NUM_FMT
+ {
+ Pos = MAP_APPFONT ( 12 , 44 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "eigenes ~Format" ;
+ Text [ English ] = "Own format" ;
+ Text[ english_us ] = "Custom ~format";
+ Text[ portuguese ] = "~Formato personalizado";
+ Text[ russian ] = "ñîáñòâåííûé ôîðìàò";
+ Text[ greek ] = "ÐñïóùðéêÞ ìïñ~öÞ";
+ Text[ dutch ] = "Eigen ~formaat";
+ Text[ french ] = "~Format personnalisé";
+ Text[ spanish ] = "for~mato propio";
+ Text[ italian ] = "~Formato proprio";
+ Text[ danish ] = "eget format";
+ Text[ swedish ] = "eget format";
+ Text[ polish ] = "Format w³asny";
+ Text[ portuguese_brazilian ] = "Own format";
+ Text[ japanese ] = "”CˆÓ‚Ì‘Ž®(~F)";
+ Text[ korean ] = "°³ÀÎ ¼­½Ä(~F)";
+ Text[ chinese_simplified ] = "×Ô¶¨µÄ¸ñʽ";
+ Text[ chinese_traditional ] = "¦Û­q®æ¦¡";
+ Text[ arabic ] = "ÊäÓíÞ ÎÇÕ";
+ Text[ turkish ] = "Özgün format";
+ };
+ FixedText FT_FTN_PREFIX
+ {
+ Pos = MAP_APPFONT ( 85 , 44 ) ;
+ Size = MAP_APPFONT ( 25 , 10 ) ;
+ Text = "~Davor" ;
+ Text [ ENGLISH ] = "Before" ;
+ Text [ norwegian ] = "Før" ;
+ Text [ italian ] = "~Davanti" ;
+ Text [ portuguese_brazilian ] = "Antes" ;
+ Text [ portuguese ] = "An~tes" ;
+ Text [ finnish ] = "Edellä" ;
+ Text [ danish ] = "Før" ;
+ Text [ french ] = "A~vant" ;
+ Text [ swedish ] = "~Före" ;
+ Text [ dutch ] = "~Ervoor" ;
+ Text [ spanish ] = "~Delante" ;
+ Text [ english_us ] = "Be~fore" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "֮ǰ(~F)";
+ Text[ russian ] = "Äî";
+ Text[ polish ] = "Przed";
+ Text[ japanese ] = "”Ô†‘O(~F)";
+ Text[ chinese_traditional ] = "¤§«e(~F)";
+ Text[ arabic ] = "ÞÈá";
+ Text[ greek ] = "Ðñéí áðü";
+ Text[ korean ] = "Àü¿¡(~F)";
+ Text[ turkish ] = "Önünde";
+ };
+ Edit ED_FTN_PREFIX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 113 , 44 ) ;
+ Size = MAP_APPFONT ( 20 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ MaxTextLength = 50 ;
+ };
+ ListBox LB_FTN_NUMVIEW
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 136 , 44 ) ;
+ Size = MAP_APPFONT ( 62 , 50 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ StringList =
+ {
+ "A, B, C" ;
+ "a, b, c" ;
+ "I, II, III" ;
+ "i, ii, iii" ;
+ "1, 2, 3" ;
+ "A, .., AA, .., AAA" ;
+ "a, .., aa, .., aaa" ;
+ };
+ };
+ FixedText FT_FTN_SUFFIX
+ {
+ Pos = MAP_APPFONT ( 201 , 44 ) ;
+ Size = MAP_APPFONT ( 25 , 10 ) ;
+ Text = "Dah~inter" ;
+ Text [ ENGLISH ] = "Behind" ;
+ Text [ norwegian ] = "Bak" ;
+ Text [ italian ] = "D~ietro" ;
+ Text [ portuguese_brazilian ] = "Atrás" ;
+ Text [ portuguese ] = "A~trás" ;
+ Text [ finnish ] = "Jäljessä" ;
+ Text [ danish ] = "Efter" ;
+ Text [ french ] = "A~près" ;
+ Text [ swedish ] = "~Bakom" ;
+ Text [ dutch ] = "E~rachter" ;
+ Text [ spanish ] = "D~etrás" ;
+ Text [ english_us ] = "Aft~er" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ö®ºó(~E)";
+ Text[ russian ] = "Ïîñëå";
+ Text[ polish ] = "Za";
+ Text[ japanese ] = "”Ô†Œã(~E)";
+ Text[ chinese_traditional ] = "¤§«á(~E)";
+ Text[ arabic ] = "ÈÚÏ";
+ Text[ greek ] = "ÌåôÜ áðü";
+ Text[ korean ] = "ÈÄ¿¡(~E)";
+ Text[ turkish ] = "Önünde";
+ };
+ Edit ED_FTN_SUFFIX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 229 , 44 ) ;
+ Size = MAP_APPFONT ( 20 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ MaxTextLength = 50 ;
+ };
+
+
+ GroupBox GB_END
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 65 ) ;
+ Size = MAP_APPFONT ( 248 , 59 ) ;
+ Text = "Endnoten" ;
+ Text [ English ] = "Endnotes" ;
+ Text[ english_us ] = "Endnotes";
+ Text[ portuguese ] = "Notas finais";
+ Text[ russian ] = "Êîíöåâûå ñíîñêè";
+ Text[ greek ] = "Óçìåéþóåéò ôÝëïõò";
+ Text[ dutch ] = "Eindnoten";
+ Text[ french ] = "Notes de fin";
+ Text[ spanish ] = "Notas finales";
+ Text[ italian ] = "Note di chiusura";
+ Text[ danish ] = "Slutnoter";
+ Text[ swedish ] = "Slutnoter";
+ Text[ polish ] = "Przypisy koñcowe";
+ Text[ portuguese_brazilian ] = "Endnotes";
+ Text[ japanese ] = "•¶––‹r’";
+ Text[ korean ] = "¹ÌÁÖ";
+ Text[ chinese_simplified ] = "βע";
+ Text[ chinese_traditional ] = "§Àª`";
+ Text[ arabic ] = "ÊÚáíÞÇÊ ÎÊÇãíÉ";
+ Text[ turkish ] = "Sonnot";
+ };
+ CheckBox CB_END_AT_TXTEND
+ {
+ Pos = MAP_APPFONT ( 12 , 76 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "~am Bereichsende sammeln" ;
+ Text[ english ] = "Collect at end of section";
+ Text[ english_us ] = "C~ollect at end of section";
+ Text[ portuguese ] = "Agrupar no ~final da secção";
+ Text[ russian ] = "Ñîáðàòü â êîíöå îáëàñòè";
+ Text[ greek ] = "ÓõãêÝíôñùóç óôï ôÝëïò ôïõ ~ôìÞìáôïò";
+ Text[ dutch ] = "aan ~bereikseinde verzamelen";
+ Text[ french ] = "Regrouper en fin de ~section";
+ Text[ spanish ] = "recoger al fi~nal del área";
+ Text[ italian ] = "Raccogli a fine sezione";
+ Text[ danish ] = "saml ved områdets slutning";
+ Text[ swedish ] = "samla vid ~områdets slut";
+ Text[ polish ] = "zbierz na koñcu obszaru";
+ Text[ portuguese_brazilian ] = "Collect at end of section";
+ Text[ japanese ] = "”͈͖–‚É‘}“ü(~O)";
+ Text[ korean ] = "±¸¿ª ³¡¿¡ ¼öÁý(~O)";
+ Text[ chinese_simplified ] = "¼¯ÖÐÔÚÇøÓòβ¶Ë(~O)";
+ Text[ chinese_traditional ] = "¦b°Ï°ì§ÀºÝ¦¬¶°";
+ Text[ arabic ] = "ÊÌãíÚ ÚäÏ äåÇíÉ ÇáäØÇÞ";
+ Text[ turkish ] = "Bölüm sonunda topla";
+ };
+ CheckBox CB_END_NUM
+ {
+ Pos = MAP_APPFONT ( 12 , 91 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "Nummer neu ~starten" ;
+ Text [ English ] = "Restart number" ;
+ Text[ english_us ] = "~Restart numbering";
+ Text[ portuguese ] = "~Reiniciar numeração";
+ Text[ russian ] = "Ïåðåçàïóñê íóìåðàöèè";
+ Text[ greek ] = "Åðáíåêêßíç~óç áñéèìïý";
+ Text[ dutch ] = "Nieuwe n~ummering";
+ Text[ french ] = "Numérotation ~séparée";
+ Text[ spanish ] = "rei~niciar numeración";
+ Text[ italian ] = "Avvia nuovo numero";
+ Text[ danish ] = "Uafhængig nummerering forfra";
+ Text[ swedish ] = "oberoende ~numrering";
+ Text[ polish ] = "Uruchom ponownie numer";
+ Text[ portuguese_brazilian ] = "own number sequence";
+ Text[ japanese ] = "”Ô†‚ðV‚µ‚­Žn‚ß‚é(~R)";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â ´Ù½Ã ½ÃÀÛ(~R)";
+ Text[ chinese_simplified ] = "ÖØпªÊ¼±àºÅ";
+ Text[ chinese_traditional ] = "­«·s½s¸¹";
+ Text[ arabic ] = "ÅÚÇÏÉ ÈÏÁ ÇáÊÑÞíã";
+ Text[ turkish ] = "Num. yeniden baþlat";
+ };
+ FixedText FT_END_OFFSET
+ {
+ Pos = MAP_APPFONT ( 85 , 91 ) ;
+ Size = MAP_APPFONT ( 36 , 8 ) ;
+ Text = "Be~ginn bei" ;
+ Text [ ENGLISH ] = "~Start at" ;
+ Left = TRUE ;
+ Text [ english_us ] = "~Start at" ;
+ Text [ italian ] = "Inizia con" ;
+ Text [ spanish ] = "Comen~zar en" ;
+ Text [ french ] = "À partir ~de" ;
+ Text [ dutch ] = "~Begin met" ;
+ Text [ swedish ] = "~Börja vid" ;
+ Text [ danish ] = "Begynd med" ;
+ Text [ portuguese_brazilian ] = "Be~ginn bei" ;
+ Text [ portuguese ] = "~Iniciar em" ;
+ Text[ chinese_simplified ] = "¿ªÊ¼´Ó(~S)";
+ Text[ russian ] = "Íà÷àòü ñ";
+ Text[ polish ] = "Zacznij od";
+ Text[ japanese ] = "ŠJŽn•¶––‹r’”Ô†(~S)";
+ Text[ chinese_traditional ] = "¶}©l±q(~S)";
+ Text[ arabic ] = "ÇáÈÏÁ ÈÜ";
+ Text[ greek ] = "ÈÝóç åêêßíçóçò";
+ Text[ korean ] = "¿¡¼­ ½ÃÀÛ(~S)";
+ Text[ turkish ] = "Baþlang~ýç";
+ };
+ NumericField FLD_END_OFFSET
+ {
+ Pos = MAP_APPFONT ( 136 , 91 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ First = 1 ;
+ Last = 9999 ;
+ Maximum = 9999 ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ };
+ CheckBox CB_END_NUM_FMT
+ {
+ Pos = MAP_APPFONT ( 12 , 106 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "~eigenes Format" ;
+ Text [ English ] = "Own format" ;
+ Text[ english_us ] = "Custom format";
+ Text[ portuguese ] = "Formato ~personalizado";
+ Text[ russian ] = "ñîáñòâåííûé ôîðìàò";
+ Text[ greek ] = "ÐñïóùðéêÞ ìïñöÞ";
+ Text[ dutch ] = "~Eigen formaat";
+ Text[ french ] = "Format ~personnalisé";
+ Text[ spanish ] = "for~mato propio";
+ Text[ italian ] = "Formato proprio";
+ Text[ danish ] = "eget format";
+ Text[ swedish ] = "~eget format";
+ Text[ polish ] = "Format w³asny";
+ Text[ portuguese_brazilian ] = "Own format";
+ Text[ japanese ] = "”CˆÓ‚Ì‘Ž®(~W)";
+ Text[ korean ] = "ÀÚü ¼­½Ä(~W)";
+ Text[ chinese_simplified ] = "×Ô¶¨µÄ¸ñʽ";
+ Text[ chinese_traditional ] = "¦Û­q®æ¦¡";
+ Text[ arabic ] = "ÊäÓíÞ ÎÇÕ";
+ Text[ turkish ] = "Özgün format";
+ };
+
+ FixedText FT_END_PREFIX
+ {
+ Pos = MAP_APPFONT ( 85 , 106 ) ;
+ Size = MAP_APPFONT ( 25 , 10 ) ;
+ Text = "Da~vor" ;
+ Text [ ENGLISH ] = "Before" ;
+ Text [ norwegian ] = "Før" ;
+ Text [ italian ] = "Da~vanti" ;
+ Text [ portuguese_brazilian ] = "Antes" ;
+ Text [ portuguese ] = "An~tes" ;
+ Text [ finnish ] = "Edellä" ;
+ Text [ danish ] = "Før" ;
+ Text [ french ] = "A~vant" ;
+ Text [ swedish ] = "~Före" ;
+ Text [ dutch ] = "~Ervoor" ;
+ Text [ spanish ] = "~Delante" ;
+ Text [ english_us ] = "Be~fore" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "֮ǰ(~F)";
+ Text[ russian ] = "Äî";
+ Text[ polish ] = "Przed";
+ Text[ japanese ] = "”Ô†‘O(~F)";
+ Text[ chinese_traditional ] = "¤§«e(~F)";
+ Text[ arabic ] = "ÞÈá";
+ Text[ greek ] = "Ðñéí áðü";
+ Text[ korean ] = "¾Õ¿¡(~F)";
+ Text[ turkish ] = "Önünde";
+ };
+ Edit ED_END_PREFIX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 113 , 106 ) ;
+ Size = MAP_APPFONT ( 20 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ MaxTextLength = 50 ;
+ };
+ ListBox LB_END_NUMVIEW
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 136 , 106 ) ;
+ Size = MAP_APPFONT ( 62 , 50 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ StringList =
+ {
+ "A, B, C" ;
+ "a, b, c" ;
+ "I, II, III" ;
+ "i, ii, iii" ;
+ "1, 2, 3" ;
+ "A, .., AA, .., AAA" ;
+ "a, .., aa, .., aaa" ;
+ };
+ };
+ FixedText FT_END_SUFFIX
+ {
+ Pos = MAP_APPFONT ( 201 , 106 ) ;
+ Size = MAP_APPFONT ( 25 , 10 ) ;
+ Text = "Dahinte~r" ;
+ Text [ ENGLISH ] = "Behind" ;
+ Text [ norwegian ] = "Bak" ;
+ Text [ italian ] = "Dietro" ;
+ Text [ portuguese_brazilian ] = "Atrás" ;
+ Text [ portuguese ] = "A~trás" ;
+ Text [ finnish ] = "Jäljessä" ;
+ Text [ danish ] = "Efter" ;
+ Text [ french ] = "A~près" ;
+ Text [ swedish ] = "~Bakom" ;
+ Text [ dutch ] = "E~rachter" ;
+ Text [ spanish ] = "D~etrás" ;
+ Text [ english_us ] = "Aft~er" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ö®ºó(~E)";
+ Text[ russian ] = "Ïîñëå";
+ Text[ polish ] = "Za";
+ Text[ japanese ] = "”Ô†Œã(~E)";
+ Text[ chinese_traditional ] = "¤§«á(~E)";
+ Text[ arabic ] = "ÈÚÏ";
+ Text[ greek ] = "ÌåôÜ áðü";
+ Text[ korean ] = "ÈÄ¿¡(~E)";
+ Text[ turkish ] = "Arkasýnda";
+ };
+ Edit ED_END_SUFFIX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 229 , 106 ) ;
+ Size = MAP_APPFONT ( 20 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ MaxTextLength = 50 ;
+ };
+};
diff --git a/sw/source/ui/dochdl/dochdl.src b/sw/source/ui/dochdl/dochdl.src
new file mode 100644
index 000000000000..c708a22da28a
--- /dev/null
+++ b/sw/source/ui/dochdl/dochdl.src
@@ -0,0 +1,431 @@
+/*************************************************************************
+ *
+ * $RCSfile: dochdl.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "dochdl.hrc"
+#include "globals.hrc"
+
+
+String STR_NOGLOS1
+{
+ /* ### ACHTUNG: Neuer Text in Resource? AutoText zum Kürzel ' : AutoText zum Kürzel '' */
+ /* ### ACHTUNG: Neuer Text in Resource? AutoText zum Kürzel ' : AutoText zum Kürzel '' */
+ /* ### ACHTUNG: Neuer Text in Resource? AutoText zum Kürzel ' : AutoText zum K³rzel ' */
+ TEXT = "AutoText zum Kürzel '" ;
+ TEXT [ English ] = "AutoText for Short Name '" ;
+ TEXT [ norwegian ] = "AutoText for Short Name '" ;
+ TEXT [ italian ] = "Testo automatico per la sigla" ;
+ TEXT [ portuguese_brazilian ] = "Texto Automático para Abreviação" ;
+ TEXT [ portuguese ] = "AutoTexto para abreviatura '" ;
+ TEXT [ finnish ] = "Automaattitekstiä lyhenteelle '" ;
+ TEXT [ danish ] = "AutoTekst til genvej '" ;
+ TEXT [ french ] = "AutoTexte pour raccourci '" ;
+ TEXT [ swedish ] = "AutoText till genvägen '" ;
+ TEXT [ dutch ] = "AutoTekst voor afkortingen'" ;
+ TEXT [ spanish ] = "AutoTexto para la abreviatura '" ;
+ TEXT [ english_us ] = "AutoText for Shortcut '" ;
+ TEXT[ chinese_simplified ] = "×Ô¶¯Í¼Îļ¯µÄËõд '";
+ TEXT[ russian ] = "Àâòîòåêñò ê ñîêðàùåíèþ '";
+ TEXT[ polish ] = "Autotekst do skrótu '";
+ TEXT[ japanese ] = "“ü—ÍŽx‰‡‚̼®°Ä¶¯Ä '";
+ TEXT[ chinese_traditional ] = "¦Û°Ê¹Ï¤å¶°ªºÁY¼g '";
+ TEXT[ arabic ] = "äÕ ÊáÞÇÆí ááÇÎÊÕÇÑ '";
+ TEXT[ dutch ] = "AutoTekst voor afkortingen'";
+ TEXT[ chinese_simplified ] = "×Ô¶¯Í¼Îļ¯µÄËõд '";
+ TEXT[ greek ] = "Áõôïêåßìåíï ðñïò ôç óõíôüìåõóç '";
+ TEXT[ korean ] = "ÀÚµ¿ ÅؽºÆ® ¹Ù·Î°¡±â '";
+ TEXT[ turkish ] = "Otomatik metin kýsaltmasý '";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_NOGLOS2
+{
+ /* ### ACHTUNG: Neuer Text in Resource? ' nicht gefunden. : '' nicht gefunden. */
+ /* ### ACHTUNG: Neuer Text in Resource? ' nicht gefunden. : '' nicht gefunden. */
+ /* ### ACHTUNG: Neuer Text in Resource? ' nicht gefunden. : '' nicht gefunden. */
+ /* ### ACHTUNG: Neuer Text in Resource? ' nicht gefunden. : '' nicht gefunden. */
+ TEXT = "' nicht gefunden." ;
+ TEXT [ English ] = "' not found." ;
+ TEXT [ norwegian ] = "' not found." ;
+ TEXT [ italian ] = "' non trovato." ;
+ TEXT [ portuguese_brazilian ] = "' não encontrado." ;
+ TEXT [ portuguese ] = "' não localizado." ;
+ TEXT [ finnish ] = "' ei löydy." ;
+ TEXT [ danish ] = "' blev ikke fundet." ;
+ TEXT [ french ] = "' introuvable." ;
+ TEXT [ swedish ] = "' hittades inte." ;
+ TEXT [ dutch ] = "' niet gevonden." ;
+ TEXT [ spanish ] = "' no se encontró." ;
+ TEXT [ english_us ] = "' not found." ;
+ TEXT[ chinese_simplified ] = "' ûÓб»ÕÒµ½¡£";
+ TEXT[ russian ] = "' íå íàéäåí.";
+ TEXT[ polish ] = "' nie znaleziono.";
+ TEXT[ japanese ] = "' ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB";
+ TEXT[ chinese_traditional ] = "' ¨S¦³³Q§ä¨ì¡C";
+ TEXT[ arabic ] = "' ÛíÑ ãæÌæÏ.";
+ TEXT[ dutch ] = "' niet gevonden.";
+ TEXT[ chinese_simplified ] = "' ûÓб»ÕÒµ½¡£";
+ TEXT[ greek ] = "' äåí âñÝèçêå.";
+ TEXT[ korean ] = "' °¡ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.";
+ TEXT[ turkish ] = "' bulunamadý.";
+ TEXT[ language_user1 ] = " ";
+};
+
+String STR_NO_TABLE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Zu diesem Zeitpunkt kann keine Tabelle eingefügt werden. : Zu diesem Zeitpunkt kann keine Tabelle eingef³gt werden. */
+ Text = "Zu diesem Zeitpunkt kann keine Tabelle eingefügt werden." ;
+ Text [ English ] = "Inserting a table is impossible now." ;
+ Text [ norwegian ] = "Inserting a table is impossible now." ;
+ Text [ italian ] = "Adesso è impossibile inserire una tabella." ;
+ Text [ portuguese_brazilian ] = "Inserir a tabela é agora impossível." ;
+ Text [ portuguese ] = "De momento não é possível inserir a tabela." ;
+ Text [ finnish ] = "Taulukon lisääminen ei ole nyt mahdollista." ;
+ Text [ danish ] = "Det er for tiden ikke muligt at indsætte en tabel" ;
+ Text [ french ] = "Impossible d'insérer un tableau maintenant." ;
+ Text [ swedish ] = "En tabell kan inte infogas vid denna tidpunkt." ;
+ Text [ dutch ] = "Tabel kan op dit ogenblik niet worden ingevoegd." ;
+ Text [ spanish ] = "Actualmente no se puede insertar ninguna tabla." ;
+ Text [ english_us ] = "It is currently not possible to insert a table" ;
+ Text[ chinese_simplified ] = "µ±Ç°ÎÞ·¨²åÈëÈκαí¸ñ¡£";
+ Text[ russian ] = "Â íàñòîÿùåå âðåìÿ âñòàâèòü òàáëèöó íåâîçìîæíî.";
+ Text[ polish ] = "W tym momencie nie mo¿e byæ wstawiona tabela.";
+ Text[ japanese ] = "Œ»ÝA•\\‚Ì‘}“ü‚Í‚Å‚«‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "·í«eµLªk´¡¤J¥ô¦óªí®æ¡C";
+ Text[ arabic ] = "ÅÏÑÇÌ ÌÏæá ÛíÑ ããßä ÍÇáíÇð.";
+ Text[ dutch ] = "Tabel kan op dit ogenblik niet worden ingevoegd.";
+ Text[ chinese_simplified ] = "µ±Ç°ÎÞ·¨²åÈëÈκαí¸ñ¡£";
+ Text[ greek ] = "Ðñïò ôï ðáñüí åßíáé áäýíáôïí íá åéóá÷èåß ðßíáêáò.";
+ Text[ korean ] = "Ç¥¸¦ »ðÀÔÇϴ°ÍÀÌ ÇöÀç ºÒ°¡´ÉÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Þu an tablo eklenemiyor.";
+ Text[ language_user1 ] = " ";
+};
+
+
+InfoBox MSG_ERR_INSERT_GLOS
+{
+ MESSAGE = "AutoText konnte nicht angelegt werden." ;
+ MESSAGE [ English ] = "Could not insert AutoText." ;
+ MESSAGE [ norwegian ] = "Could not insert AutoText." ;
+ MESSAGE [ italian ] = "Impossibile creare voce di glossario." ;
+ MESSAGE [ portuguese_brazilian ] = "Não pude inserir Texto Automático." ;
+ MESSAGE [ portuguese ] = "Impossível inserir o AutoTexto." ;
+ MESSAGE [ finnish ] = "Automaattitekstiä ei voi lisätä." ;
+ MESSAGE [ danish ] = "Det var ikke muligt at oprette AutoTeksten." ;
+ MESSAGE [ french ] = "Impossible de créer l'AutoTexte." ;
+ MESSAGE [ swedish ] = "AutoText kunde inte skapas." ;
+ MESSAGE [ dutch ] = "AutoTekst kon niet worden gemaakt" ;
+ MESSAGE [ spanish ] = "No se pudo crear el AutoTexto." ;
+ MESSAGE [ english_us ] = "AutoText could not be created." ;
+ MESSAGE[ chinese_simplified ] = "ÎÞ·¨½¨Á¢×Ô¶¯Í¼Îļ¯¡£";
+ MESSAGE[ russian ] = "Ñîçäàòü àâòîòåêñò íåâîçìîæíî.";
+ MESSAGE[ polish ] = "Autotekst nie móg³ zostaæ utworzony.";
+ MESSAGE[ japanese ] = "“ü—ÍŽx‰‡‚Å‚«‚Ü‚¹‚ñ";
+ MESSAGE[ chinese_traditional ] = "µLªk«Ø¥ß¦Û°Ê¹Ï¤å¶°¡C";
+ MESSAGE[ arabic ] = "ÊÚÐÑ Úãá äÕ ÊáÞÇÆí.";
+ MESSAGE[ dutch ] = "AutoTekst kon niet worden gemaakt";
+ MESSAGE[ chinese_simplified ] = "ÎÞ·¨½¨Á¢×Ô¶¯Í¼Îļ¯¡£";
+ MESSAGE[ greek ] = "Äåí Þôáí äõíáôÞ ç åéóáãùãÞ ÁõôïÊåßìåíï.";
+ MESSAGE[ korean ] = "ÀÚµ¿ ÅؽºÆ®¸¦ »ðÀÔÇÒ ¼ö ¾ø½À´Ï´Ù.";
+ MESSAGE[ turkish ] = "Otomatik metin oluþturulamadý.";
+ MESSAGE[ language_user1 ] = " ";
+};
+
+InfoBox MSG_CLPBRD_FORMAT_ERROR
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Gewünschtes Clipboardformat steht nicht zur Verfügung. : Gew³nschtes Clipboardformat steht nicht zur Verf³gung. */
+ MESSAGE = "Gewünschtes Clipboardformat steht nicht zur Verfügung." ;
+ MESSAGE [ English ] = "Requested clipboard format is not available." ;
+ MESSAGE [ norwegian ] = "Requested clipboard format is not available." ;
+ MESSAGE [ italian ] = "Il formato appunti richiesto non è disponibile." ;
+ MESSAGE [ portuguese_brazilian ] = "Formato solicitado de clipboard não está disponível." ;
+ MESSAGE [ portuguese ] = "Formato da área de transferência solicitado não se encontra disponível." ;
+ MESSAGE [ finnish ] = "Pyydetty leikepöydän muoto ei ole käytettävissä." ;
+ MESSAGE [ danish ] = "Det anmodede udskriftsholderformat er ikke tilgængeligt." ;
+ MESSAGE [ french ] = "Le format de presse-papiers souhaité n'est pas disponible." ;
+ MESSAGE [ swedish ] = "Önskat urklippformat står inte till förfogande." ;
+ MESSAGE [ dutch ] = "Gevraagd clipboardformaat is niet beschikbaar." ;
+ MESSAGE [ spanish ] = "El formato deseado del portapapeles no está disponible." ;
+ MESSAGE [ english_us ] = "Requested clipboard format is not available." ;
+ MESSAGE[ chinese_simplified ] = "ËùÐèÒªµÄ²Ã¼ô°å¸ñʽ²»´æÔÚ¡£";
+ MESSAGE[ russian ] = "Æåëàåìûé ôîðìàò áóôåðà îáìåíà íåäîñòóïåí.";
+ MESSAGE[ polish ] = "Szukany format schowka jest niedostêpny.";
+ MESSAGE[ japanese ] = "Žw’è‚̸دÌßÜ°ÄÞ‘Ž®‚ÍŽg—p‚Å‚«‚Ü‚¹‚ñB";
+ MESSAGE[ chinese_traditional ] = "©Ò»Ý­nªºµô°Åï®æ¦¡¤£¦s¦b¡C";
+ MESSAGE[ arabic ] = "ÊäÓíÞ ÇáÍÇÝÙÉ ÇáãØáæÈ ÛíÑ ãÊæÝÑ.";
+ MESSAGE[ dutch ] = "Gevraagd clipboardformaat is niet beschikbaar.";
+ MESSAGE[ chinese_simplified ] = "ËùÐèÒªµÄ²Ã¼ô°å¸ñʽ²»´æÔÚ¡£";
+ MESSAGE[ greek ] = "Ç æçôïýìåíç ìïñöÞ ôïõ clipboard äåí åßíáé äéáèÝóéìç.";
+ MESSAGE[ korean ] = "¿äûµÈ Ŭ¸³º¸µå ¼­½ÄÀÌ °¡´ÉÇÏÁö ¾Ê½À´Ï´Ù.";
+ MESSAGE[ turkish ] = "Ýstenen pano formatý mevcut deðil.";
+ MESSAGE[ language_user1 ] = " ";
+};
+
+QueryBox MSG_UPDATE_NEW_GLOS_FMT
+{
+ BUTTONS = WB_YES_NO ;
+ DEFBUTTON = WB_DEF_YES ;
+ MESSAGE = "Der Bereich liegt in einem alten Format vor.\nEr muss konvertiert werden, um Änderungen\nspeichern zu können.\nSoll er konvertiert werden?" ;
+ MESSAGE [ English ] = "The file format of the region is out-of-date.\nIt must be converted in order to save modifications.\nDo you want to convert it?" ;
+ MESSAGE [ norwegian ] = "The file format of the region is out-of-date.\nIt must be converted in order to save modifications.\nDo you want to convert it?" ;
+ MESSAGE [ italian ] = "Il formato dell'area è vecchio.\nÈ necessario convertirlo per poter\nsalvare le modifiche apportate\nVolete convertirlo?" ;
+ MESSAGE [ portuguese_brazilian ] = "O formato de arquivo da regiao está desatualizado.\nDeve ser convertido para que se possa gravar modificações.\nDeseja convertê-lo?" ;
+ MESSAGE [ portuguese ] = "O formato do ficheiro está desactualizado.\nDeve ser convertido para que se possam\n guardar as respectivas alterações.\nDeseja convertê-lo?" ;
+ MESSAGE [ finnish ] = "Alueen tiedostomuoto ei ole ajan tasalla.\nSe on muunnettava, jotta muutokset voitaisiin tallentaa.\nHaluatko muuntaa sen?" ;
+ MESSAGE [ danish ] = "Områdets filformat er forældet.\nDet skal konverteres, for at ændringerne kan gemmes.\nVil du konvertere det?" ;
+ MESSAGE [ french ] = "La section se trouve dans un format périmé.\nVous ne pourrrez enregistrer aucune modification \n à moins de le convertir.\nVoulez-vous procéder à la conversion sans plus attendre ?" ;
+ MESSAGE [ swedish ] = "Området har ett gammalt format.\nDet måste konverteras för att\nändringar skall kunna sparas.\nVill Du konvertera det?" ;
+ MESSAGE [ dutch ] = "Het bereik heeft een verouderd formaat.\nHet moet worden geconverteerd om de wijzigingen\nte kunnen opslaan.\nWilt u de conversie nu uitvoeren?" ;
+ MESSAGE [ spanish ] = "El formato del área no es actual.\nHay que convertirlo\npara poder guardar las modificaciones.\n¿Desea usted convertirlo?" ;
+ MESSAGE [ english_us ] = "The section format is outdated.\nIt needs to be converted so that changes\ncan be saved.\nShould it be converted now?" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Der Bereich liegt in einem alten Format vor.\nEr muß konvertiert werden, um Änderungen\nspeichern zu können.\nSoll er konvertiert werden? : Der Bereich liegt in einem alten Format vor.\nEr mu˜ konvertiert werden, um Žnderungen\nspeichern zu k÷nnen.\nSoll er konvertiert werden? */
+ Message = "Der Bereich liegt in einem alten Format vor.\nEr muss konvertiert werden, um Änderungen\nspeichern zu können.\nSoll er konvertiert werden?" ;
+ Message[ chinese_simplified ] = "Õâ¸öÇøÓò¾ßÓеĸñʽÊǾɵġ£\nÒª´æÅ̸ü¸Ä¾Í±ØÐë½øÐиñʽת»»¡£\nҪת»»¸ñʽÂð£¿";
+ Message[ russian ] = "Ðàçäåë ïðåäñòàâëåí â ñòàðîì ôîðìàòå.\nÅãî íåîáõîäèìî ïðåîáðàçîâàòü, ñ òåì ÷òîáû ìîæíî \náûëî ñîõðàíèòü èçìåíåíèÿ\n.Ïðåîáðàçîâàòü?";
+ Message[ polish ] = "Format obszaru nie jest aktualny.\nObszar musi byæ skonwertowany, by mo¿na by³o zapisaæ zmiany\n. Skonwertowaæ go?";
+ Message[ japanese ] = "‚±‚͈̔͂͋Œ‘Ž®‚É‚ ‚è‚Ü‚·B\n•ÏX‚ð•Û‘¶‚·‚é‚É‚Í\n‘Ž®‚ð•ÏŠ·‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB\n‘Ž®•ÏŠ·‚µ‚Ü‚·‚©?";
+ Message[ chinese_traditional ] = "³o­Ó°Ï°ìªº®æ¦¡¬Oªº¡C\n­nÀx¦sÅܧó´N¥²¶·Âà´«¥¦®æ¦¡¡C\n±z­nÂà´«¥¦ªº®æ¦¡¡H";
+ Message[ arabic ] = "ÊäÓíÞ ÇáäØÇÞ ÞÏíã.\níÌÈ ÊÍæíáå¡ ÍÊì íãßä \nÍÝÙ ÇáÊÛííÑÇÊ.\nåá ÊÑíÏ ÊÍæíáå¿";
+ Message[ dutch ] = "Het bereik heeft een verouderd formaat.\nHet moet worden geconverteerd om de wijzigingen\nte kunnen opslaan.\nWilt u de conversie nu uitvoeren?";
+ Message[ chinese_simplified ] = "Õâ¸öÇøÓò¾ßÓеĸñʽÊǾɵġ£\nÒª´æÅ̸ü¸Ä¾Í±ØÐë½øÐиñʽת»»¡£\nҪת»»¸ñʽÂð£¿";
+ Message[ greek ] = "Ç ðåñéï÷Þ õðÜñ÷åé óå ðáëéÜ ìïñöÞ.\nÐñÝðåé íá ãßíåé ìåôáôñïðÞ ôçò ãéá íá åßíáé äõíáôÞ\nç áðïèÞêåõóç ôùí áëëáãþí.\nÈÝëåôå íá ãßíåé ç ìåôáôñïðÞ;";
+ Message[ korean ] = "±¸¿ª ¼­½ÄÀÌ ¿À·¡µÈ°ÍÀÔ´Ï´Ù.\n ÀÌ°ÍÀ» º¯È¯ÇÏ¿©¾ß º¯°æÀÌ\nÀúÀåÀ̵˴ϴÙ.\n Áö±Ý º¯È¯ ÇϽðڽÀ´Ï±î?";
+ Message[ turkish ] = "Bölümün formatý eski.\nDeðiþikliklerin kaydedilebilmesi n\niçin deðiþtirilmesi gerekiyor.\nFormat deðiþtirilsin mi?";
+ Message[ language_user1 ] = " ";
+};
+
+String STR_PRIVATETEXT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? StarWriter : Formatierter Text [StarWriter] */
+ Text = "StarOffice Writer" ;
+ Text [ dutch ] = "StarOffice Writer" ;
+ Text [ english_us ] = "StarOffice Writer" ;
+ Text [ italian ] = "StarOffice Writer" ;
+ Text [ spanish ] = "StarOffice Writer" ;
+ Text [ french ] = "StarOffice Writer" ;
+ Text [ swedish ] = "StarOffice Writer" ;
+ Text [ danish ] = "StarOffice Writer" ;
+ Text [ portuguese ] = "StarOffice Writer" ;
+ Text [ portuguese_brazilian ] = "StarOffice Writer" ;
+ Text[ chinese_simplified ] = "StarOffice Writer";
+ Text[ russian ] = "StarOffice Writer";
+ Text[ polish ] = "StarOffice Writer";
+ Text[ japanese ] = "StarOffice Writer";
+ Text[ chinese_traditional ] = "StarOffice Writer";
+ Text[ arabic ] = "StarOffice Writer";
+ Text[ greek ] = "StarOffice Writer";
+ Text[ korean ] = "StarOffice Writer";
+ Text[ turkish ] = "StarOffice Writer";
+ Text[ language_user1 ] = " ";
+};
+String STR_PRIVATEGRAPHIC
+{
+ Text = "Grafik [StarOffice Writer]" ;
+ Text [ ENGLISH ] = "Graphic [StarOffice Writer]" ;
+ Text [ norwegian ] = "Graphic [StarOffice Writer]" ;
+ Text [ italian ] = "Immagine [StarOffice Writer]" ;
+ Text [ portuguese_brazilian ] = "Gráfico [StarOffice Writer]" ;
+ Text [ portuguese ] = "Imagem [StarOffice Writer]" ;
+ Text [ finnish ] = "Kuva [StarOffice Writer]" ;
+ Text [ danish ] = "Grafik [StarOffice Writer]" ;
+ Text [ french ] = "Image [StarOffice Writer]" ;
+ Text [ swedish ] = "Grafik [StarOffice Writer]" ;
+ Text [ dutch ] = "Afbeelding [StarOffice Writer]" ;
+ Text [ spanish ] = "Imagen [StarOffice Writer]" ;
+ Text [ english_us ] = "Graphics [StarOffice Writer]" ;
+ Text[ chinese_simplified ] = "ͼÐÎ [StarOffice Writer]";
+ Text[ russian ] = "Ðèñóíîê [StarOffice Writer]";
+ Text[ polish ] = "Grafika [StarOffice Writer]";
+ Text[ japanese ] = "¸Þ×̨¯¸ [StarOffice Writer]";
+ Text[ greek ] = "Ãñáöéêü [StarOffice Writer]";
+ Text[ korean ] = "±×·¡ÇÈ [StarOffice Writer]";
+ Text[ chinese_traditional ] = "¹Ï§Î [StarOffice Writer]";
+ Text[ arabic ] = "[StarOffice Writer] ÑÓæãÇÊ";
+ Text[ turkish ] = "Grafik [StarOffice Writer]";
+};
+String STR_PRIVATEOLE
+{
+ Text = "Objekt [StarOffice Writer]" ;
+ Text [ ENGLISH ] = "Object [StarOffice Writer]" ;
+ Text [ english_us ] = "Object [StarOffice Writer]" ;
+ Text [ italian ] = "Oggetto [StarOffice Writer]" ;
+ Text [ spanish ] = "Objeto [StarOffice Writer]" ;
+ Text [ french ] = "Objet [StarOffice Writer]" ;
+ Text [ dutch ] = "Object [StarOffice Writer]" ;
+ Text [ swedish ] = "Objekt [StarOffice Writer]" ;
+ Text [ danish ] = "Objekt [StarOffice Writer]" ;
+ Text [ portuguese ] = "Objecto [StarOffice Writer]" ;
+ Text [ portuguese_brazilian ] = "Objekt [StarOffice Writer]" ;
+ Text[ chinese_simplified ] = "¶ÔÏó [StarOffice Writer]";
+ Text[ russian ] = "Îáúåêò [StarOffice Writer]";
+ Text[ polish ] = "Obiekt [StarOffice Writer]";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä [StarOffice Writer]";
+ Text[ greek ] = "Áíôéêåßìåíï [StarOffice Writer]";
+ Text[ korean ] = "°³Ã¼ [StarOffice Writer]";
+ Text[ chinese_traditional ] = "ª«¥ó [StarOffice Writer]";
+ Text[ arabic ] = "[StarOffice Writer]ßÇÆä ";
+ Text[ turkish ] = "Nesne [StarOffice Writer]";
+};
+String STR_DDEFORMAT
+{
+ /* ### 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 ] = "£¹cza DDE ";
+ Text[ japanese ] = "DDE Øݸ";
+ Text[ chinese_traditional ] = "DDE ±¶®|";
+ Text[ arabic ] = "ÇÑÊÈÇØ DDE";
+ Text[ dutch ] = "DDE-koppeling";
+ Text[ chinese_simplified ] = "DDE Á´½Ó";
+ Text[ greek ] = "Óýíäåóìïò DDE";
+ Text[ korean ] = "DDE ¿¬°á";
+ Text[ turkish ] = "DDE baðlantýsý";
+ Text[ language_user1 ] = " ";
+};
+String STR_RTFFORMAT
+{
+ 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 STR_TEXTFORMAT
+{
+ 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 bez formatu";
+ Text[ japanese ] = "‘Ž®Ý’肳‚ê‚Ä‚¢‚È‚¢Ã·½Ä";
+ Text[ chinese_traditional ] = "¥¼®æ¦¡¤Æªº¤å¦r";
+ Text[ arabic ] = "äÕ ÛíÑ ãäÓÞ";
+ Text[ dutch ] = "Tekst zonder opmaak";
+ Text[ chinese_simplified ] = "δ¸ñʽ»¯µÄÎı¾";
+ Text[ greek ] = "Êåßìåíï ÷ùñßò ìïñöïðïßçóç";
+ Text[ korean ] = "¼­½Ä¾ø´Â ÅؽºÆ®";
+ Text[ turkish ] = "Formatlanmamýþ metin";
+ Text[ language_user1 ] = " ";
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sw/source/ui/dochdl/gloshdl.cxx b/sw/source/ui/dochdl/gloshdl.cxx
new file mode 100644
index 000000000000..aee3290dc6a0
--- /dev/null
+++ b/sw/source/ui/dochdl/gloshdl.cxx
@@ -0,0 +1,1099 @@
+/*************************************************************************
+ *
+ * $RCSfile: gloshdl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef __RSC //autogen
+#include <tools/errinf.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXMACITEM_HXX //autogen
+#include <svtools/macitem.hxx>
+#endif
+#ifndef _SFX_FCONTNR_HXX
+#include <sfx2/fcontnr.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _OFAACCFG_HXX //autogen
+#include <offmgr/ofaaccfg.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#define _SVSTDARR_STRINGS
+#include <svtools/svstdarr.hxx>
+
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx> // Fehlermeldungen
+#endif
+#ifndef _SWVIEW_HXX //autogen
+#include <view.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _SWEVENT_HXX
+#include <swevent.hxx>
+#endif
+#ifndef _GLOSHDL_HXX
+#include <gloshdl.hxx>
+#endif
+#ifndef _GLOSDOC_HXX
+#include <glosdoc.hxx>
+#endif
+#ifndef _GLOSSARY_HXX
+#include <glossary.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx> // fuer Undo-Ids
+#endif
+
+#ifndef _SELGLOS_HXX
+#include <selglos.hxx>
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx>
+#endif
+#ifndef _INITUI_HXX
+#include <initui.hxx> // fuer ::GetGlossaries()
+#endif
+#ifndef _GLOSLST_HXX
+#include <gloslst.hxx>
+#endif
+#ifndef _DATAEX_HXX
+#include <dataex.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+
+#ifndef _DOCHDL_HRC
+#include <dochdl.hrc>
+#endif
+#ifndef _SWERROR_H
+#include <swerror.h>
+#endif
+
+
+// PUBLIC METHODES -------------------------------------------------------
+struct TextBlockInfo_Impl
+{
+ String sTitle;
+ String sLongName;
+ String sGroupName;
+};
+typedef TextBlockInfo_Impl* TextBlockInfo_ImplPtr;
+SV_DECL_PTRARR_DEL( TextBlockInfoArr, TextBlockInfo_ImplPtr, 0, 4 )
+SV_IMPL_PTRARR( TextBlockInfoArr, TextBlockInfo_ImplPtr )
+/*------------------------------------------------------------------------
+ Beschreibung: Dialog fuer Bearbeiten Vorlagen
+------------------------------------------------------------------------*/
+
+
+void SwGlossaryHdl::GlossaryDlg()
+{
+ SwGlossaryDlg* pDlg = new SwGlossaryDlg( pViewFrame, this, pWrtShell );
+ String sName, sShortName;
+
+ if( RET_EDIT == pDlg->Execute() )
+ {
+ sName = pDlg->GetCurrGrpName();
+ sShortName = pDlg->GetCurrShortName();
+ }
+
+ delete pDlg;
+ DELETEZ(pCurGrp);
+ if(HasGlossaryList())
+ {
+ GetGlossaryList()->ClearGroups();
+ }
+
+ if( sName.Len() || sShortName.Len() )
+ rStatGlossaries.EditGroupDoc( sName, sShortName );
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Setzen der aktuellen Gruppe; falls aus dem Dialog
+ gerufen, wird die Gruppe temp. erzeugt fuer einen
+ schnelleren Zugriff
+------------------------------------------------------------------------*/
+
+
+void SwGlossaryHdl::SetCurGroup(const String &rGrp, BOOL bApi, BOOL bAlwaysCreateNew )
+{
+ String sGroup(rGrp);
+ if(STRING_NOTFOUND == sGroup.Search(GLOS_DELIM) && !FindGroupName(sGroup))
+ {
+ sGroup += GLOS_DELIM;
+ sGroup += '0';
+ }
+ if(pCurGrp)
+ {
+ BOOL bPathEqual = FALSE;
+ if(!bAlwaysCreateNew)
+ {
+ const String& sCurPath = URIHelper::SmartRelToAbs(pCurGrp->GetFileName());
+ xub_StrLen nSlashPos = sCurPath.SearchBackward( INET_PATH_TOKEN );
+ const String sCurEntryPath = sCurPath.Copy(0, nSlashPos);
+ const SvStrings* pPathArr = rStatGlossaries.GetPathArray();
+ USHORT nCurrentPath = USHRT_MAX;
+ for(USHORT nPath = 0; nPath < pPathArr->Count(); nPath++)
+ {
+ if(sCurEntryPath == *(*pPathArr)[nPath])
+ {
+ nCurrentPath = nPath;
+ break;
+ }
+ }
+ String sPath = sGroup.GetToken(1, GLOS_DELIM);
+ USHORT nComparePath = (USHORT)sPath.ToInt32();
+ const String sCurBase = sCurPath.Copy(nSlashPos + 1, sCurPath.Len() - nSlashPos - 5);
+ if(nCurrentPath == nComparePath &&
+ sGroup.GetToken(0, GLOS_DELIM) == sCurBase)
+ bPathEqual = TRUE;
+ }
+// const String aMac_Tmp(pCurGrp->GetName());
+ // Beim Pfadwechsel kann man sich auf den Namen nicht verlassen
+ if(!bAlwaysCreateNew &&
+ bPathEqual
+// aMac_Tmp == sGroup
+ )
+ return;
+ }
+ aCurGrp = sGroup;
+ if(!bApi)
+ {
+ if(pCurGrp)
+ {
+ rStatGlossaries.PutGroupDoc(pCurGrp);
+ pCurGrp = 0;
+ }
+ pCurGrp = rStatGlossaries.GetGroupDoc(aCurGrp, TRUE);
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+USHORT SwGlossaryHdl::GetGroupCnt() const
+{
+ return rStatGlossaries.GetGroupCnt();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+String SwGlossaryHdl::GetGroupName( USHORT nId, String* pTitle )
+{
+ String sRet = rStatGlossaries.GetGroupName(nId);
+ if(pTitle)
+ {
+ SwTextBlocks* pGroup = rStatGlossaries.GetGroupDoc(sRet, FALSE);
+ if(pGroup)
+ {
+ *pTitle = pGroup->GetName();
+ if(!pTitle->Len())
+ {
+ *pTitle = sRet.GetToken(0, GLOS_DELIM);
+ pGroup->SetName(*pTitle);
+ }
+ rStatGlossaries.PutGroupDoc( pGroup );
+ }
+
+ }
+ return sRet;
+}
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+BOOL SwGlossaryHdl::NewGroup(String &rGrpName, const String& rTitle)
+{
+ if(STRING_NOTFOUND == rGrpName.Search(GLOS_DELIM))
+ FindGroupName(rGrpName);
+ return rStatGlossaries.NewGroupDoc(rGrpName, rTitle);
+}
+/* -----------------23.11.98 13:10-------------------
+ * Umbenennen eines Textbausteins
+ * --------------------------------------------------*/
+BOOL SwGlossaryHdl::RenameGroup(const String & rOld, String& rNew, const String& rNewTitle)
+{
+ BOOL bRet = FALSE;
+ String sOldGroup(rOld);
+ if(STRING_NOTFOUND == rOld.Search(GLOS_DELIM))
+ FindGroupName(sOldGroup);
+ if(rOld == rNew)
+ {
+ SwTextBlocks* pGroup = rStatGlossaries.GetGroupDoc(sOldGroup, FALSE);
+ if(pGroup)
+ {
+ pGroup->SetName(rNewTitle);
+ rStatGlossaries.PutGroupDoc( pGroup );
+ bRet = TRUE;
+ }
+ }
+ else
+ {
+ String sNewGroup(rNew);
+ if(STRING_NOTFOUND == sNewGroup.Search(GLOS_DELIM))
+ {
+ sNewGroup += GLOS_DELIM;
+ sNewGroup += '0';
+ }
+ bRet = rStatGlossaries.RenameGroupDoc(sOldGroup, sNewGroup, rNewTitle);
+ rNew = sNewGroup;
+ }
+ return bRet;
+}
+/* -----------------27.11.98 13:49-------------------
+ *
+ * --------------------------------------------------*/
+BOOL SwGlossaryHdl::CopyOrMove( const String& rSourceGroupName, String& rSourceShortName,
+ const String& rDestGroupName, const String& rLongName, BOOL bMove )
+{
+ SwTextBlocks* pSourceGroup = rStatGlossaries.GetGroupDoc(rSourceGroupName, FALSE);
+
+ SwTextBlocks* pDestGroup = rStatGlossaries.GetGroupDoc(rDestGroupName, FALSE);
+ if(pDestGroup->IsReadOnly() || (bMove && pSourceGroup->IsReadOnly()) )
+ return FALSE;
+ if(pDestGroup->IsOld()&& 0!= pDestGroup->ConvertToNew())
+ return FALSE;
+ if(bMove && pSourceGroup->IsOld() && 0 != pSourceGroup->ConvertToNew())
+ return FALSE;
+
+ //Der Index muss hier ermittelt werden, weil rSourceShortName in CopyBlock evtl veraendert wird
+ USHORT nDeleteIdx = pSourceGroup->GetIndex( rSourceShortName );
+ DBG_ASSERT(USHRT_MAX != nDeleteIdx, "Eintrag nicht gefunden")
+ ULONG nRet = pSourceGroup->CopyBlock( *pDestGroup, rSourceShortName, rLongName );
+ if(!nRet && bMove)
+ {
+ // der Index muss existieren
+ nRet = pSourceGroup->Delete( nDeleteIdx ) ? 0 : 1;
+ }
+ rStatGlossaries.PutGroupDoc( pSourceGroup );
+ rStatGlossaries.PutGroupDoc( pDestGroup );
+ return !nRet;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Loeschen einer Textbausteindatei-Gruppe
+------------------------------------------------------------------------*/
+
+
+BOOL SwGlossaryHdl::DelGroup(const String &rGrpName)
+{
+ String sGroup(rGrpName);
+ if(STRING_NOTFOUND == sGroup.Search(GLOS_DELIM))
+ FindGroupName(sGroup);
+ if( rStatGlossaries.DelGroupDoc(sGroup) )
+ {
+ if(pCurGrp)
+ {
+ const String aMac_Tmp(pCurGrp->GetName());
+ if(aMac_Tmp == sGroup)
+ DELETEZ(pCurGrp);
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Anzahl Textbausteine erfragen
+------------------------------------------------------------------------*/
+
+
+USHORT SwGlossaryHdl::GetGlossaryCnt()
+{
+ return pCurGrp ? pCurGrp->GetCount() : 0;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Anzahl Textbausteine aus dem Basic erfragen
+------------------------------------------------------------------------*/
+
+
+USHORT SwGlossaryHdl::GetGlossaryCnt(const String& rGroupName)
+{
+ String sGroupName(rGroupName);
+ if(STRING_NOTFOUND == sGroupName.Search(GLOS_DELIM))
+ FindGroupName(sGroupName);
+ SwTextBlocks* pGrp = rStatGlossaries.GetGroupDoc(sGroupName, FALSE);
+ USHORT nCount = 0;
+ if(pGrp)
+ {
+ nCount = pGrp->GetCount();
+ rStatGlossaries.PutGroupDoc(pGrp);
+
+ }
+ return nCount;
+}
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+String SwGlossaryHdl::GetGlossaryName( USHORT nId )
+{
+ ASSERT(nId < GetGlossaryCnt(), Textbausteinarray ueberindiziert.);
+ return pCurGrp->GetLongName( nId );
+}
+/* -----------------30.11.98 13:18-------------------
+ *
+ * --------------------------------------------------*/
+String SwGlossaryHdl::GetGlossaryShortName(USHORT nId)
+{
+ ASSERT(nId < GetGlossaryCnt(), Textbausteinarray ueberindiziert.);
+ return pCurGrp->GetShortName( nId );
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+String SwGlossaryHdl::GetGlossaryName( USHORT nId, const String& rGroupName )
+{
+ String sGroupName(rGroupName);
+ if(STRING_NOTFOUND == sGroupName.Search(GLOS_DELIM))
+ FindGroupName(sGroupName);
+ SwTextBlocks* pGrp = rStatGlossaries.GetGroupDoc(sGroupName, FALSE);
+ String sName;
+ if(pGrp)
+ {
+ if( nId < pGrp->GetCount())
+ sName = pGrp->GetLongName( nId );
+ rStatGlossaries.PutGroupDoc(pGrp);
+ }
+ return sName;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Kurzname erfragen
+------------------------------------------------------------------------*/
+
+
+String SwGlossaryHdl::GetGlossaryShortName(const String &rName)
+{
+ String sReturn;
+ SwTextBlocks *pTmp =
+ pCurGrp ? pCurGrp: rStatGlossaries.GetGroupDoc( aCurGrp, FALSE );
+ if(pTmp)
+ {
+ USHORT nIdx = pTmp->GetLongIndex( rName );
+ if( nIdx != (USHORT) -1 )
+ sReturn = pTmp->GetShortName( nIdx );
+ if( !pCurGrp )
+ rStatGlossaries.PutGroupDoc( pTmp );
+ }
+ return sReturn;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Kuerzel fuer Textbaustein bereits verwendet?
+------------------------------------------------------------------------*/
+
+
+BOOL SwGlossaryHdl::HasShortName(const String& rShortName) const
+{
+ SwTextBlocks *pBlock = pCurGrp ? pCurGrp
+ : rStatGlossaries.GetGroupDoc( aCurGrp );
+ BOOL bRet = pBlock->GetIndex( rShortName ) != (USHORT) -1;
+ if( !pCurGrp )
+ rStatGlossaries.PutGroupDoc( pBlock );
+ return bRet;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Erzeugen eines Textbausteines
+------------------------------------------------------------------------*/
+
+BOOL SwGlossaryHdl::NewGlossary(const String& rName, const String& rShortName,
+ BOOL bCreateGroup, BOOL bNoAttr)
+{
+ SwTextBlocks *pTmp =
+ pCurGrp ? pCurGrp: rStatGlossaries.GetGroupDoc( aCurGrp, bCreateGroup );
+ //pTmp == 0 if the AutoText path setting is wrong
+ if(!pTmp)
+ return FALSE;
+ if( pTmp->IsOld() )
+ {
+ QueryBox aAsk( pWrtShell->GetView().GetWindow(), SW_RES( MSG_UPDATE_NEW_GLOS_FMT ) );
+ if( aAsk.Execute() == RET_YES )
+ {
+ if( pTmp->ConvertToNew() )
+ {
+ InfoBox(pWrtShell->GetView().GetWindow(), SW_RES(MSG_ERR_INSERT_GLOS)).Execute();
+ return FALSE;
+ }
+ }
+ else
+ return FALSE;
+ }
+
+ String sOnlyTxt;
+ String* pOnlyTxt = 0;
+ if( bNoAttr )
+ {
+ if( !pWrtShell->GetSelectedText( sOnlyTxt, GETSELTXT_PARABRK_TO_ONLYCR ))
+ return FALSE;
+ pOnlyTxt = &sOnlyTxt;
+ }
+
+ const OfaAutoCorrCfg* pCfg = OFF_APP()->GetAutoCorrConfig();
+
+ const USHORT nSuccess = pWrtShell->MakeGlossary( *pTmp, rName, rShortName,
+ pCfg->IsSaveRelFile(), pCfg->IsSaveRelNet(),
+ pOnlyTxt );
+ if(nSuccess == (USHORT) -1 )
+ {
+ InfoBox(pWrtShell->GetView().GetWindow(), SW_RES(MSG_ERR_INSERT_GLOS)).Execute();
+ }
+ if( !pCurGrp )
+ rStatGlossaries.PutGroupDoc( pTmp );
+ return BOOL( nSuccess != (USHORT) -1 );
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Loeschen eines Textbausteines
+------------------------------------------------------------------------*/
+
+
+BOOL SwGlossaryHdl::DelGlossary(const String &rShortName)
+{
+ SwTextBlocks *pGlossary = pCurGrp ? pCurGrp
+ : rStatGlossaries.GetGroupDoc(aCurGrp);
+ //pTmp == 0 if the AutoText path setting is wrong
+ if(!pGlossary)
+ return FALSE;
+ USHORT nIdx = pGlossary->GetIndex( rShortName );
+ if( nIdx != (USHORT) -1 )
+ pGlossary->Delete( nIdx );
+ if( !pCurGrp )
+ rStatGlossaries.PutGroupDoc( pGlossary );
+ return TRUE;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Kurzform expandieren
+------------------------------------------------------------------------*/
+
+
+BOOL SwGlossaryHdl::ExpandGlossary(BOOL bUseStandard, BOOL bApi)
+{
+ ASSERT(pWrtShell->CanInsert(), illegal);
+ SwTextBlocks *pGlossary;
+ if( bUseStandard )
+ {
+ String sGroupName(SwGlossaryDlg::GetCurrGroup());
+ if(STRING_NOTFOUND == sGroupName.Search(GLOS_DELIM))
+ FindGroupName(sGroupName);
+ pGlossary = rStatGlossaries.GetGroupDoc(sGroupName);
+ }
+ else
+ pGlossary = rStatGlossaries.GetGroupDoc(aCurGrp);
+
+ String aShortName;
+
+ // bei Textselektion diese verwenden
+ if(pWrtShell->SwCrsrShell::HasSelection())
+ {
+ aShortName = pWrtShell->GetSelTxt();
+ }
+ else
+ {
+ if(pWrtShell->IsAddMode())
+ pWrtShell->LeaveAddMode();
+ else if(pWrtShell->IsExtMode())
+ pWrtShell->LeaveExtMode();
+ // Wort selektieren
+ pWrtShell->SelNearestWrd();
+ // Wort erfragen
+ if(pWrtShell->IsSelection())
+ aShortName = pWrtShell->GetSelTxt();
+ }
+ return pGlossary ? Expand( aShortName, &rStatGlossaries, pGlossary, bApi ) : FALSE;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Expansion aus Basic aufrufen
+------------------------------------------------------------------------*/
+
+
+BOOL SwGlossaryHdl::ExpandGlossary( const String& rShortName, BOOL bApi )
+{
+ ASSERT(pWrtShell->CanInsert(), illegal);
+ String sGroup(SwGlossaryDlg::GetCurrGroup());
+ if(STRING_NOTFOUND == sGroup.Search(GLOS_DELIM))
+ FindGroupName(sGroup);
+
+ SwTextBlocks *pGlossary = rStatGlossaries.GetGroupDoc(sGroup);
+ return pGlossary ? Expand( rShortName, &rStatGlossaries, pGlossary, bApi ) : FALSE;
+}
+
+
+BOOL SwGlossaryHdl::Expand( const String& rShortName,
+ SwGlossaries *pGlossaries,
+ SwTextBlocks *pGlossary,
+ BOOL bApi )
+{
+ TextBlockInfoArr aFoundArr;
+ String aShortName( rShortName );
+ BOOL bCancel = FALSE;
+ // Textbaustein suchen
+ USHORT nFound = pGlossary->GetIndex( aShortName );
+ // Suchen in allen anderen Bereichen
+ if( nFound == (USHORT) -1 )
+ {
+ const International& rAppInt = Application::GetAppInternational();
+ SwGlossaryList* pGlossaryList = ::GetGlossaryList();
+ USHORT nGroupCount = pGlossaryList->GetGroupCount();
+ for(USHORT i = 1; i <= nGroupCount; i++)
+ {
+ // Gruppenname mit Pfad-Extension besorgen
+ String sTitle;
+ String sGroupName = pGlossaryList->GetGroupName(i - 1, FALSE, &sTitle);
+ if(sGroupName == pGlossary->GetName())
+ continue;
+ USHORT nBlockCount = pGlossaryList->GetBlockCount(i -1);
+ if(nBlockCount)
+ {
+ for(USHORT j = 0; j < nBlockCount; j++)
+ {
+ String sEntry;
+ String sLongName(pGlossaryList->GetBlockName(i - 1, j, sEntry));
+ if(COMPARE_EQUAL == rAppInt.Compare(rShortName, sEntry, INTN_COMPARE_IGNORECASE))
+ {
+ TextBlockInfo_Impl* pData = new TextBlockInfo_Impl;
+ pData->sTitle = sTitle;
+ pData->sLongName = sLongName;
+ pData->sGroupName = sGroupName;
+ aFoundArr.Insert(pData, aFoundArr.Count());
+ }
+ }
+ }
+ }
+ if( aFoundArr.Count() ) // einer wurde gefunden
+ {
+ pGlossaries->PutGroupDoc(pGlossary);
+ if(1 == aFoundArr.Count())
+ {
+ TextBlockInfo_Impl* pData = aFoundArr.GetObject(0);
+ pGlossary = (SwTextBlocks *)pGlossaries->GetGroupDoc(pData->sGroupName);
+ nFound = pGlossary->GetIndex( aShortName );
+ }
+ else
+ {
+ SwSelGlossaryDlg *pDlg =
+ new SwSelGlossaryDlg(0, aShortName);
+ for(USHORT i = 0; i < aFoundArr.Count(); ++i)
+ {
+ TextBlockInfo_Impl* pData = aFoundArr.GetObject(i);
+ pDlg->InsertGlos(pData->sTitle, pData->sLongName);
+ }
+ pDlg->SelectEntryPos(0);
+ const USHORT nRet = RET_OK == pDlg->Execute()?
+ pDlg->GetSelectedIdx():
+ LISTBOX_ENTRY_NOTFOUND;
+ delete pDlg;
+ if(LISTBOX_ENTRY_NOTFOUND != nRet)
+ {
+ TextBlockInfo_Impl* pData = aFoundArr.GetObject(nRet);
+ pGlossary = (SwTextBlocks *)pGlossaries->GetGroupDoc(pData->sGroupName);
+ nFound = pGlossary->GetIndex( aShortName );
+ }
+ else
+ {
+ nFound = (USHORT) -1;
+ bCancel = TRUE;
+ }
+ }
+ }
+ }
+
+ // nicht gefunden
+ if( nFound == (USHORT) -1 )
+ {
+ if( !bCancel )
+ {
+ pGlossaries->PutGroupDoc(pGlossary);
+
+ const USHORT nMaxLen = 50;
+ if(pWrtShell->IsSelection() && aShortName.Len() > nMaxLen)
+ {
+ aShortName.Erase(nMaxLen);
+ aShortName.AppendAscii(" ...");
+ }
+ if(!bApi)
+ {
+ String aTmp( SW_RES(STR_NOGLOS1));
+ aTmp += aShortName;
+ aTmp += SW_RESSTR(STR_NOGLOS2);
+ InfoBox( pWrtShell->GetView().GetWindow(), aTmp ).Execute();
+ }
+ }
+
+ return FALSE;
+ }
+ else
+ {
+ String aLongName = pGlossary->GetLongName( nFound );
+ SvxMacro aStartMacro(aEmptyStr, aEmptyStr, STARBASIC);
+ SvxMacro aEndMacro(aEmptyStr, aEmptyStr, STARBASIC);
+ GetMacros( aShortName, aStartMacro, aEndMacro, pGlossary );
+
+ // StartAction darf nich vor HasSelection und DelRight stehen,
+ // sonst wird der moeglich Shellwechsel verzoegert und
+ // API-Programme wuerden dann haengenbleiben
+ // ausserdem darf das Ereignismacro ebenfalls nicht in einer Action gerufen werden
+ pWrtShell->StartUndo(UNDO_INSGLOSSARY);
+ if( aStartMacro.GetMacName().Len() )
+ pWrtShell->ExecMacro( aStartMacro );
+ if(pWrtShell->HasSelection())
+ pWrtShell->DelLeft();
+ pWrtShell->StartAllAction();
+
+ // alle InputFelder zwischenspeichern
+ SwInputFieldList aFldLst( pWrtShell, TRUE );
+
+ pWrtShell->InsertGlossary(*pGlossary, aShortName);
+ pWrtShell->EndAllAction();
+ if( aEndMacro.GetMacName().Len() )
+ {
+ pWrtShell->ExecMacro( aEndMacro );
+ }
+ pWrtShell->EndUndo(UNDO_INSGLOSSARY);
+
+ // fuer alle neuen InputFelder die Eingaben abfordern
+ if( aFldLst.BuildSortLst() )
+ pWrtShell->UpdateInputFlds( &aFldLst );
+ }
+ pGlossaries->PutGroupDoc(pGlossary);
+ return TRUE;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Textbaustein einfuegen
+------------------------------------------------------------------------*/
+
+
+BOOL SwGlossaryHdl::InsertGlossary(const String &rName)
+{
+ ASSERT(pWrtShell->CanInsert(), illegal);
+
+ SwTextBlocks *pGlos =
+ pCurGrp? pCurGrp: rStatGlossaries.GetGroupDoc(aCurGrp);
+
+ if (!pGlos)
+ return FALSE;
+
+ SvxMacro aStartMacro(aEmptyStr, aEmptyStr, STARBASIC);
+ SvxMacro aEndMacro(aEmptyStr, aEmptyStr, STARBASIC);
+ GetMacros( rName, aStartMacro, aEndMacro, pGlos );
+
+ // StartAction darf nich vor HasSelection und DelRight stehen,
+ // sonst wird der moeglich Shellwechsel verzoegert und
+ // API-Programme wuerden dann haengenbleiben
+ // ausserdem darf das Ereignismacro ebenfalls nicht in einer Action gerufen werden
+ if( aStartMacro.GetMacName().Len() )
+ pWrtShell->ExecMacro( aStartMacro );
+ if( pWrtShell->HasSelection() )
+ pWrtShell->DelRight();
+ pWrtShell->StartAllAction();
+
+ // alle InputFelder zwischenspeichern
+ SwInputFieldList aFldLst( pWrtShell, TRUE );
+
+ pWrtShell->InsertGlossary(*pGlos, rName);
+ pWrtShell->EndAllAction();
+ if( aEndMacro.GetMacName().Len() )
+ {
+ pWrtShell->ExecMacro( aEndMacro );
+ }
+
+ // fuer alle neuen InputFelder die Eingaben abfordern
+ if( aFldLst.BuildSortLst() )
+ pWrtShell->UpdateInputFlds( &aFldLst );
+
+ if(!pCurGrp)
+ rStatGlossaries.PutGroupDoc(pGlos);
+ return TRUE;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Macro setzen / erfragen
+------------------------------------------------------------------------*/
+
+
+void SwGlossaryHdl::SetMacros(const String& rShortName,
+ const SvxMacro* pStart,
+ const SvxMacro* pEnd,
+ SwTextBlocks *pGlossary )
+{
+ SwTextBlocks *pGlos = pGlossary ? pGlossary :
+ pCurGrp ? pCurGrp
+ : rStatGlossaries.GetGroupDoc( aCurGrp );
+ int nIdx = pGlos->GetIndex( rShortName );
+ pGlos->BeginGetDoc( nIdx );
+ SwDoc* pDoc = pGlos->GetDoc();
+
+ if( pStart )
+ pDoc->SetGlobalMacro( SW_EVENT_START_INS_GLOSSARY, *pStart );
+ else
+ pDoc->DelGlobalMacro( SW_EVENT_START_INS_GLOSSARY );
+ if( pEnd )
+ pDoc->SetGlobalMacro( SW_EVENT_END_INS_GLOSSARY, *pEnd );
+ else
+ pDoc->DelGlobalMacro( SW_EVENT_END_INS_GLOSSARY );
+ pGlos->EndGetDoc();
+
+ pGlos->BeginPutDoc( rShortName, pGlos->GetLongName( nIdx ) );
+ pGlos->PutDoc();
+ if( pGlos->GetError() )
+ ErrorHandler::HandleError( pGlos->GetError() );
+
+ if(!pCurGrp && !pGlossary)
+ rStatGlossaries.PutGroupDoc(pGlos);
+}
+
+void SwGlossaryHdl::GetMacros( const String &rShortName,
+ SvxMacro& rStart,
+ SvxMacro& rEnd,
+ SwTextBlocks *pGlossary )
+{
+ SwTextBlocks *pGlos = pGlossary ? pGlossary
+ : pCurGrp ? pCurGrp
+ : rStatGlossaries.GetGroupDoc(aCurGrp);
+ USHORT nIndex = pGlos->GetIndex( rShortName );
+ if( nIndex != USHRT_MAX )
+ {
+ SvxMacroTableDtor aMacroTbl;
+ if( pGlos->GetMacroTable( nIndex, aMacroTbl ) )
+ {
+ SvxMacro *pMacro = aMacroTbl.Get( SW_EVENT_START_INS_GLOSSARY );
+ if( pMacro )
+ rStart = *pMacro;
+
+ pMacro = aMacroTbl.Get( SW_EVENT_END_INS_GLOSSARY );
+ if( pMacro )
+ rEnd = *pMacro;
+ }
+ }
+
+ if( !pCurGrp && !pGlossary )
+ rStatGlossaries.PutGroupDoc( pGlos );
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung: ctor, dtor
+------------------------------------------------------------------------*/
+
+
+SwGlossaryHdl::SwGlossaryHdl(SfxViewFrame* pVwFrm, SwWrtShell *pSh)
+ : rStatGlossaries( *::GetGlossaries() ),
+ pViewFrame( pVwFrm ),
+ pWrtShell( pSh ),
+ pCurGrp( 0 ),
+ aCurGrp( rStatGlossaries.GetDefName() )
+{}
+
+
+SwGlossaryHdl::~SwGlossaryHdl()
+{
+ if( pCurGrp )
+ rStatGlossaries.PutGroupDoc( pCurGrp );
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Umbenennen eines Textbausteines
+------------------------------------------------------------------------*/
+
+
+BOOL SwGlossaryHdl::Rename(const String& rOldShort, const String& rNewShortName,
+ const String& rNewName )
+{
+ BOOL bRet = FALSE;
+ SwTextBlocks *pGlossary = pCurGrp ? pCurGrp
+ : rStatGlossaries.GetGroupDoc(aCurGrp);
+ if(pGlossary)
+ {
+ USHORT nIdx = pGlossary->GetIndex( rOldShort );
+ USHORT nOldLongIdx = pGlossary->GetLongIndex( rNewName );
+ USHORT nOldIdx = pGlossary->GetIndex( rNewShortName );
+
+ if( nIdx != USHRT_MAX &&
+ (nOldLongIdx == USHRT_MAX || nOldLongIdx == nIdx )&&
+ (nOldIdx == USHRT_MAX || nOldIdx == nIdx ))
+ {
+ String aNewShort( rNewShortName );
+ String aNewName( rNewName );
+ pGlossary->Rename( nIdx, &aNewShort, &aNewName );
+ bRet = pGlossary->GetError() == 0;
+ }
+ if( !pCurGrp )
+ rStatGlossaries.PutGroupDoc(pGlossary);
+ }
+ return bRet;
+}
+
+
+BOOL SwGlossaryHdl::IsReadOnly( const String* pGrpNm ) const
+{
+ SwTextBlocks *pGlossary = pGrpNm ? rStatGlossaries.GetGroupDoc( *pGrpNm )
+ : pCurGrp
+ ? pCurGrp
+ : rStatGlossaries.GetGroupDoc(aCurGrp);
+
+ BOOL bRet = pGlossary ? pGlossary->IsReadOnly() : TRUE;
+ if( !pCurGrp )
+ delete pGlossary;
+ return bRet;
+}
+
+
+BOOL SwGlossaryHdl::IsOld() const
+{
+ SwTextBlocks *pGlossary = pCurGrp ? pCurGrp
+ : rStatGlossaries.GetGroupDoc(aCurGrp);
+ BOOL bRet = pGlossary ? pGlossary->IsOld() : FALSE;
+ if( !pCurGrp )
+ delete pGlossary;
+ return bRet;
+}
+
+/*-----------------09.06.97 16:15-------------------
+ Gruppe ohne Pfadindex finden
+--------------------------------------------------*/
+BOOL SwGlossaryHdl::FindGroupName(String & rGroup)
+{
+ return rStatGlossaries.FindGroupName(rGroup);
+}
+
+/* -----------------29.07.99 08:34-------------------
+
+ --------------------------------------------------*/
+BOOL SwGlossaryHdl::CopyToClipboard(SwWrtShell& rSh, const String& rShortName)
+{
+ SwTextBlocks *pGlossary = pCurGrp ? pCurGrp
+ : rStatGlossaries.GetGroupDoc(aCurGrp);
+ SwDataExchangeRef xExch = new SwDataExchange( rSh );
+ int nRet = xExch->CopyGlossary( *pGlossary, rShortName );
+ if( !pCurGrp )
+ rStatGlossaries.PutGroupDoc( pGlossary );
+ return 0 != nRet;
+}
+
+BOOL SwGlossaryHdl::ImportGlossaries( const String& rName )
+{
+ BOOL bRet = FALSE;
+ if( rName.Len() )
+ {
+ const SfxFilter* pFilter = 0;
+ SfxMedium* pMed = new SfxMedium( rName, STREAM_READ, TRUE, TRUE, 0, 0 );
+ SfxFilterMatcher aMatcher( SwDocShell::Factory().GetFilterContainer() );
+ if( !aMatcher.GuessFilter( *pMed, &pFilter, FALSE ) )
+ {
+ SwTextBlocks *pGlossary;
+ pMed->SetFilter( pFilter );
+ Reader* pR = SwIoSystem::GetReader( pFilter->GetUserData() );
+ if( pR && 0 != ( pGlossary = pCurGrp ? pCurGrp
+ : rStatGlossaries.GetGroupDoc(aCurGrp)) )
+ {
+ SwReader aReader( *pMed, rName );
+ if( aReader.HasGlossaries( *pR ) )
+ {
+ const OfaAutoCorrCfg* pCfg = OFF_APP()->GetAutoCorrConfig();
+ bRet = aReader.ReadGlossaries( *pR, *pGlossary,
+ pCfg->IsSaveRelFile() );
+ }
+ }
+ }
+ DELETEZ(pMed);
+ }
+ return bRet;
+}
+
+String SwGlossaryHdl::GetValidShortCut( const String& rLong,
+ BOOL bCheckInBlock ) const
+{
+ String sRet;
+ SwTextBlocks *pGlossary = pCurGrp ? pCurGrp
+ : rStatGlossaries.GetGroupDoc( aCurGrp );
+ if( pGlossary )
+ sRet = pGlossary->GetValidShortCut( rLong, bCheckInBlock );
+ return sRet;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.150 2000/09/18 16:05:22 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.149 2000/07/07 13:25:39 jp
+ must changes VCL
+
+ Revision 1.148 2000/06/26 13:12:30 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.147 2000/06/13 09:59:20 os
+ using UCB
+
+ Revision 1.146 2000/06/09 06:51:31 os
+ using UCB
+
+ Revision 1.145 2000/05/23 20:09:50 jp
+ Bugfixes for Unicode
+
+ Revision 1.144 2000/04/17 12:54:30 os
+ UNICODE
+
+ Revision 1.143 2000/04/17 12:36:14 os
+ #74949# search for AutoText short name via SwGlossaryList
+
+ Revision 1.142 2000/04/13 08:22:23 os
+ UNICODE
+
+ Revision 1.141 2000/03/06 08:46:06 os
+ #70359# GetGroupName: if no title is set - set group name as title
+
+ Revision 1.140 2000/02/14 14:49:37 os
+ #70473# Unicode
+
+ Revision 1.139 2000/02/10 10:33:49 os
+ #70359# titles added to AutoText groups
+
+ Revision 1.138 2000/02/09 11:41:28 jp
+ Task #72579#: WW8Reader can import glossaries
+
+ Revision 1.137 2000/02/03 11:08:22 jp
+ Task #72579#: new method GetValidShortCut
+
+ Revision 1.136 2000/02/02 17:01:52 jp
+ Task #72579#: WW8Reader can import glossaries
+
+ Revision 1.135 1999/12/22 09:20:47 os
+ #71203# editing of AutoText: keep macros
+
+ Revision 1.134 1999/11/16 16:18:20 jp
+ remove unused Dialog-Pointer
+
+ Revision 1.133 1999/09/15 14:03:11 os
+ language improvements
+
+ Revision 1.132 1999/08/24 08:28:02 OS
+ #68352# NewGlossary et. al.: GPF if AutoText path settings were wrong
+
+
+ Rev 1.131 24 Aug 1999 10:28:02 OS
+ #68352# NewGlossary et. al.: GPF if AutoText path settings were wrong
+
+ Rev 1.130 29 Jul 1999 09:10:02 OS
+ CopyToClipboard
+
+ Rev 1.129 23 Jul 1999 10:26:32 OS
+ #67828# glossary - methods on doc level
+
+ Rev 1.128 14 Jun 1999 14:40:26 JP
+ Bug #66858#: there is no MDIApplication
+
+ Rev 1.127 14 Jun 1999 08:51:54 OS
+ #66858# MDIApplication::GetActiveWindow now static
+
+ Rev 1.126 19 Feb 1999 16:46:20 OS
+ IsCaseSensitive nicht mehr inline
+
+ Rev 1.125 10 Feb 1999 16:11:58 OS
+ #61050# bei gleichen Gruppennamen immer den richtigen finden
+
+ Rev 1.124 09 Feb 1999 10:46:38 OS
+ #61205# AutoText-Gruppen koennen beliebige Namen erhalten
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/dochdl/makefile.mk b/sw/source/ui/dochdl/makefile.mk
new file mode 100644
index 000000000000..ee59800654c7
--- /dev/null
+++ b/sw/source/ui/dochdl/makefile.mk
@@ -0,0 +1,99 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:34 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=dochdl
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ dataex.cxx \
+ gloshdl.cxx \
+ selglos.cxx
+
+SRCFILES = \
+ dochdl.src \
+ selglos.src
+
+SLOFILES = \
+ $(SLO)$/dataex.obj \
+ $(SLO)$/gloshdl.obj \
+ $(SLO)$/selglos.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/dochdl/selglos.cxx b/sw/source/ui/dochdl/selglos.cxx
new file mode 100644
index 000000000000..b82d51ec2d32
--- /dev/null
+++ b/sw/source/ui/dochdl/selglos.cxx
@@ -0,0 +1,170 @@
+/*************************************************************************
+ *
+ * $RCSfile: selglos.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "swtypes.hxx"
+#include "segmentc.hxx"
+
+#include "selglos.hxx"
+
+#include "selglos.hrc"
+#include "dochdl.hrc"
+
+#ifndef _SV_MSGBOX_HXX
+#include <vcl/msgbox.hxx>
+#endif
+
+// STATIC DATA -----------------------------------------------------------
+
+
+// CTOR / DTOR -----------------------------------------------------------
+
+SwSelGlossaryDlg::SwSelGlossaryDlg(Window * pParent, const String &rShortName)
+ : ModalDialog(pParent, SW_RES(DLG_SEL_GLOS)),
+ aGlosBox(this, SW_RES( LB_GLOS)),
+ aGlosFrm(this, SW_RES( GB_GLOS)),
+ aOKBtn(this, SW_RES( BT_OK)),
+ aCancelBtn(this, SW_RES( BT_CANCEL)),
+ aHelpBtn(this, SW_RES(BT_HELP))
+{
+ String sText(aGlosFrm.GetText());
+ sText += rShortName;
+ aGlosFrm.SetText(sText);
+ FreeResource();
+
+ aGlosBox.SetDoubleClickHdl(LINK(this, SwSelGlossaryDlg, DoubleClickHdl));
+}
+
+/*-----------------25.02.94 20:50-------------------
+ dtor ueberladen
+--------------------------------------------------*/
+SwSelGlossaryDlg::~SwSelGlossaryDlg() {}
+/* -----------------25.10.99 08:33-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwSelGlossaryDlg, DoubleClickHdl, ListBox*, pBox)
+{
+ EndDialog(RET_OK);
+ return 0;
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.16 2000/09/18 16:05:22 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.15 2000/04/13 08:22:23 os
+ UNICODE
+
+ Revision 1.14 1999/10/25 06:44:30 os
+ #68967# HelpButton and DoubleClickHdl
+
+ Revision 1.13 1997/11/03 12:13:06 MA
+ precomp entfernt
+
+
+ Rev 1.12 03 Nov 1997 13:13:06 MA
+ precomp entfernt
+
+ Rev 1.11 14 Nov 1996 15:23:02 TRI
+ includes
+
+ Rev 1.10 11 Nov 1996 09:35:36 MA
+ ResMgr
+
+ Rev 1.9 28 Aug 1996 10:27:36 OS
+ includes
+
+ Rev 1.8 24 Nov 1995 16:58:42 OM
+ PCH->PRECOMPILED
+
+ Rev 1.7 25 Oct 1994 17:08:08 ER
+ add: PCH
+
+ Rev 1.6 26 Feb 1994 01:59:36 ER
+ virt. dtor mit export
+
+ Rev 1.5 25 Feb 1994 20:51:54 ER
+ virtuellen dtor wegen export ueberladen
+
+ Rev 1.4 17 Feb 1994 08:41:20 MI
+ SEG_FUNCDEFS ausgefuellt
+
+ Rev 1.3 16 Feb 1994 20:02:32 MI
+ SEG_FUNCDEFS ausgefuellt
+
+ Rev 1.2 16 Feb 1994 16:21:24 MI
+ Pragmas zurechtgerueckt
+
+ Rev 1.1 28 Jan 1994 11:41:02 MI
+ TCOV() entfernt, SW_... nach SEG_... umbenannt
+
+ Rev 1.0 25 Jan 1994 16:01:06 VB
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/dochdl/selglos.hrc b/sw/source/ui/dochdl/selglos.hrc
new file mode 100644
index 000000000000..a5657aed1323
--- /dev/null
+++ b/sw/source/ui/dochdl/selglos.hrc
@@ -0,0 +1,65 @@
+/*************************************************************************
+ *
+ * $RCSfile: selglos.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 BT_OK 100
+#define BT_CANCEL 101
+#define BT_HELP 102
+#define LB_GLOS 1
+#define GB_GLOS 2
diff --git a/sw/source/ui/dochdl/selglos.src b/sw/source/ui/dochdl/selglos.src
new file mode 100644
index 000000000000..4ba82ef17ff7
--- /dev/null
+++ b/sw/source/ui/dochdl/selglos.src
@@ -0,0 +1,155 @@
+/*************************************************************************
+ *
+ * $RCSfile: selglos.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "selglos.hrc"
+#include "dochdl.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+
+ // #define DLG_SEL_GLOS 256
+ModalDialog DLG_SEL_GLOS
+{
+ HelpID = FN_EXPAND_GLOSSARY ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 220 , 100 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? AutoText einfügen : AutoText einf³gen */
+ Text = "AutoText einfügen" ;
+ Text [ ENGLISH ] = "Insert AutoText" ;
+ Text [ norwegian ] = "Insert AutoText" ;
+ Text [ italian ] = "Inserisci testo automatico" ;
+ Text [ portuguese_brazilian ] = "Inserir Texto Automático" ;
+ Text [ portuguese ] = "Inserir AutoTexto" ;
+ Text [ finnish ] = "Lisää automaattiteksti" ;
+ Text [ danish ] = "Indsæt AutoTekst" ;
+ Text [ french ] = "Insérer AutoTexte" ;
+ Text [ swedish ] = "Infoga AutoText" ;
+ Text [ dutch ] = "AutoTekst invoegen" ;
+ Text [ spanish ] = "Insertar AutoTexto" ;
+ Text [ english_us ] = "Insert AutoText" ;
+ Moveable = TRUE ;
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 164 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 164 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 164 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ GroupBox GB_GLOS
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 152 , 91 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? AutoTexte zum Kürzel : AutoTexte zum K³rzel */
+ Text = "AutoTexte zum Kürzel " ;
+ Text [ ENGLISH ] = "Entries for Short Name " ;
+ Text [ norwegian ] = "Entries for Short Name " ;
+ Text [ italian ] = "Testo automatico per la sigla " ;
+ Text [ portuguese_brazilian ] = "Entadas para Abreviações " ;
+ Text [ portuguese ] = "AutoTexto Abreviatura " ;
+ Text [ finnish ] = "Lyhenteen vastineet " ;
+ Text [ danish ] = "AutoTekst til genvej " ;
+ Text [ french ] = "AutoTextes pour raccourci " ;
+ Text [ swedish ] = "AutoText till genvägen " ;
+ Text [ dutch ] = "AutoTekst voor afkortingen " ;
+ Text [ spanish ] = "AutoTexto para abreviatura " ;
+ Text [ english_us ] = "AutoTexts for shortcut " ;
+ Text[ chinese_simplified ] = "×Ô¶¯Í¼Îļ¯µÄËõд ";
+ Text[ russian ] = "Àâòîòåêñò ê ñîêðàùåíèþ ";
+ Text[ polish ] = "Autotekst do skrótu ";
+ Text[ japanese ] = "¼®°Ä¶¯Ä“ü—ÍŽx‰‡ ";
+ Text[ chinese_traditional ] = "¦Û°Ê¹Ï¤å¶°ªºÁY¼g ";
+ Text[ arabic ] = "äÕ ÊáÞÇÆí ááÇÎÊÕÇÑ ";
+ Text[ greek ] = "ÁõôïÊåßìåíï ðñïò óõíôüìåõóç ";
+ Text[ korean ] = "ÀÚµ¿ ÅؽºÆ® ¹Ù·Î°¡±â ";
+ Text[ turkish ] = "Otomatik metin kýsaltmasý ";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_GLOS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 140 , 74 ) ;
+ TabStop = TRUE ;
+ AutoHScroll = TRUE ;
+ };
+ Text[ chinese_simplified ] = "²åÈë×Ô¶¯Í¼Îļ¯";
+ Text[ russian ] = "Âñòàâêà àâòîòåêñòà";
+ Text[ polish ] = "Wstaw autotekst";
+ Text[ japanese ] = "“ü—ÍŽx‰‡‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¦Û°Ê¹Ï¤å¶°";
+ Text[ arabic ] = "ÅÏÑÇÌ äÕ ÊáÞÇÆí";
+ Text[ greek ] = "ÐñïóèÞêç ÁõôïÊåéìÝíïõ";
+ Text[ korean ] = "ÀÚµ¿ ÅؽºÆ® »ðÀÔ";
+ Text[ turkish ] = "Otomatik metin ekle";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/docvw/docvw.hrc b/sw/source/ui/docvw/docvw.hrc
new file mode 100644
index 000000000000..6cfd24ae360f
--- /dev/null
+++ b/sw/source/ui/docvw/docvw.hrc
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * $RCSfile: docvw.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DOCVW_HRC
+#define _DOCVW_HRC
+
+#include "rcid.hrc"
+
+#define MN_READONLY_POPUP (RC_DOCVW_BEGIN + 1)
+#define MN_READONLY_OPENURL (RC_DOCVW_BEGIN + 2)
+#define MN_READONLY_OPENURLNEW (RC_DOCVW_BEGIN + 3)
+#define MN_READONLY_EDITDOC (RC_DOCVW_BEGIN + 4)
+#define MN_READONLY_BROWSE_STOP (RC_DOCVW_BEGIN + 5)
+#define MN_READONLY_BROWSE_BACKWARD (RC_DOCVW_BEGIN + 6)
+#define MN_READONLY_BROWSE_FORWARD (RC_DOCVW_BEGIN + 7)
+#define MN_READONLY_CREATELINK (RC_DOCVW_BEGIN + 8)
+#define MN_READONLY_CREATEGRAPHIKLINK (RC_DOCVW_BEGIN + 9)
+#define MN_READONLY_DOWNLOAD (RC_DOCVW_BEGIN + 10)
+#define MN_READONLY_SAVEGRAPHIC (RC_DOCVW_BEGIN + 11)
+#define MN_READONLY_SAVEBACKGROUND (RC_DOCVW_BEGIN + 12)
+#define MN_READONLY_COPYLINK (RC_DOCVW_BEGIN + 13)
+#define MN_READONLY_COPYGRAPHIC (RC_DOCVW_BEGIN + 14)
+#define MN_READONLY_LOADGRAPHIC (RC_DOCVW_BEGIN + 15)
+#define MN_READONLY_GRAPHICOFF (RC_DOCVW_BEGIN + 16)
+#define MN_READONLY_PLUGINOFF (RC_DOCVW_BEGIN + 17)
+#define MN_READONLY_TOGALLERYLINK (RC_DOCVW_BEGIN + 18)
+#define MN_READONLY_TOGALLERYCOPY (RC_DOCVW_BEGIN + 19)
+#define MN_READONLY_SOURCEVIEW (RC_DOCVW_BEGIN + 20)
+#define MN_READONLY_RELOAD_FRAME (RC_DOCVW_BEGIN + 21)
+#define MN_READONLY_RELOAD (RC_DOCVW_BEGIN + 22)
+
+//Bei den folgenden brauchen wir Luft fuer die Gallery-Themen
+#define MN_READONLY_GRAPHICTOGALLERY (RC_DOCVW_BEGIN + 23)
+#define MN_READONLY_BACKGROUNDTOGALLERY (RC_DOCVW_BEGIN + 60)
+
+
+#define STR_EXPORT_GRAFIK_TITLE (RC_DOCVW_BEGIN + 1)
+#define STR_CHAIN_OK (RC_DOCVW_BEGIN + 2)
+#define STR_CHAIN_NOT_EMPTY (RC_DOCVW_BEGIN + 3)
+#define STR_CHAIN_IS_IN_CHAIN (RC_DOCVW_BEGIN + 4)
+#define STR_CHAIN_WRONG_AREA (RC_DOCVW_BEGIN + 5)
+#define STR_CHAIN_NOT_FOUND (RC_DOCVW_BEGIN + 6)
+#define STR_CHAIN_SOURCE_CHAINED (RC_DOCVW_BEGIN + 7)
+#define STR_CHAIN_SELF (RC_DOCVW_BEGIN + 8)
+#define STR_REDLINE_INSERT (RC_DOCVW_BEGIN + 9)
+#define STR_REDLINE_DELETE (RC_DOCVW_BEGIN + 10)
+#define STR_REDLINE_FORMAT (RC_DOCVW_BEGIN + 11)
+#define STR_REDLINE_TABLE (RC_DOCVW_BEGIN + 12)
+#define STR_REDLINE_FMTCOLL (RC_DOCVW_BEGIN + 13)
+#define STR_ENDNOTE (RC_DOCVW_BEGIN + 14)
+#define STR_FTNNOTE (RC_DOCVW_BEGIN + 15)
+
+#define MSG_READONLY_CONTENT (RC_DOCVW_BEGIN + 1)
+
+#define DOCVW_ACT_END MN_READONLY_BACKGROUNDTOGALLERY
+
+#if DOCVW_ACT_END > RC_DOCVW_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+
+#endif
diff --git a/sw/source/ui/docvw/docvw.src b/sw/source/ui/docvw/docvw.src
new file mode 100644
index 000000000000..ed9eb5042091
--- /dev/null
+++ b/sw/source/ui/docvw/docvw.src
@@ -0,0 +1,1216 @@
+/*************************************************************************
+ *
+ * $RCSfile: docvw.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "docvw.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+#define SEPARATOR MenuItem { Separator = TRUE; };
+Menu MN_READONLY_POPUP
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = MN_READONLY_OPENURL ;
+ HelpID = SID_OPENDOC ;
+ Text = "~Öffnen" ;
+ Text [ English ] = "~Open" ;
+ Text [ english_us ] = "~Open" ;
+ Text [ italian ] = "~Apri" ;
+ Text [ spanish ] = "~Abrir" ;
+ Text [ french ] = "~Ouvrir" ;
+ Text [ dutch ] = "Ope~nen" ;
+ Text [ swedish ] = "~Öppna" ;
+ Text [ danish ] = "~Åbn" ;
+ Text [ portuguese ] = "~Abrir" ;
+ Text [ portuguese_brazilian ] = "~Öffnen" ;
+ Text[ chinese_simplified ] = "´ò¿ª(~O)";
+ Text[ russian ] = "Îòêðûòü";
+ Text[ polish ] = "Otwórz";
+ Text[ japanese ] = "ŠJ‚­(~O)";
+ Text[ chinese_traditional ] = "¶}±ÒÂÂÀÉ(~O)";
+ Text[ arabic ] = "ÝÊÍ";
+ Text[ dutch ] = "Ope~nen";
+ Text[ chinese_simplified ] = "´ò¿ª(~O)";
+ Text[ greek ] = "¢í~ïéãìá";
+ Text[ korean ] = "¿­±â(~O)";
+ Text[ turkish ] = "Aç";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_OPENURLNEW ;
+ HelpID = SID_OPENDOC ;
+ Text = "Öffnen in neuem ~Fenster" ;
+ Text [ English ] = "Open in new ~Window" ;
+ Text [ dutch ] = "Openen in n~ieuw venster" ;
+ Text [ english_us ] = "Open in New Window" ;
+ Text [ italian ] = "Apri in una nuova fines~tra" ;
+ Text [ spanish ] = "Abrir en nueva ~ventana" ;
+ Text [ french ] = "Ouvrir dans une nouvelle ~fenêtre" ;
+ Text [ swedish ] = "Öppna i nytt ~fönster" ;
+ Text [ danish ] = "Åbn i nyt vindue" ;
+ Text [ portuguese ] = "Nova ~janela" ;
+ Text [ portuguese_brazilian ] = "Öffnen in neuem ~Fenster" ;
+ Text[ chinese_simplified ] = "ʹÓÃÐÂÊÓ´°´ò¿ª(~W)";
+ Text[ russian ] = "Îòêðûòü â íîâîì îêíå";
+ Text[ polish ] = "Otwórz w nowym oknie";
+ Text[ japanese ] = "V‚µ‚¢³¨ÝÄÞ³‚ÉŠJ‚­";
+ Text[ chinese_traditional ] = "¥Î·sµøµ¡¶}±Ò(~W)";
+ Text[ arabic ] = "ÝÊÍ Ýí äÇÝÐÉ ÌÏíÏÉ";
+ Text[ dutch ] = "Openen in n~ieuw venster";
+ Text[ chinese_simplified ] = "ʹÓÃÐÂÊÓ´°´ò¿ª(~W)";
+ Text[ greek ] = "¢íïéãìá óå íÝï ~ðáñÜèõñï";
+ Text[ korean ] = "»õâ¿¡¼­ ¿­±â";
+ Text[ turkish ] = "Yeni bir pencerede aç";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_DOWNLOAD ;
+ HelpID = HID_MN_READONLY_DOWNLOAD ;
+ Text = "~Download..." ;
+ Text [ English ] = "~Download..." ;
+ Text [ english_us ] = "Download..." ;
+ Text [ italian ] = "Download..." ;
+ Text [ spanish ] = "~Descargar..." ;
+ Text [ french ] = "~Téléchargement..." ;
+ Text [ dutch ] = "~Download..." ;
+ Text [ swedish ] = "La~dda ned..." ;
+ Text [ danish ] = "~Overfør..." ;
+ Text [ portuguese ] = "Do~wnload..." ;
+ Text [ portuguese_brazilian ] = "~Download..." ;
+ Text[ chinese_simplified ] = "ÏÂÔØ(~D)...";
+ Text[ russian ] = "Çàãðóçêà...";
+ Text[ polish ] = "Pobieranie...";
+ Text[ japanese ] = "ÀÞ³ÝÛ°ÄÞ...";
+ Text[ chinese_traditional ] = "¤U¸ü(~D)...";
+ Text[ arabic ] = "ÊäÒíá...";
+ Text[ dutch ] = "~Download...";
+ Text[ chinese_simplified ] = "ÏÂÔØ(~D)...";
+ Text[ greek ] = "~ËÞøç áñ÷åßùí...";
+ Text[ korean ] = "´Ù¿î·Îµå...";
+ Text[ turkish ] = "Ýndir...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_EDITDOC ;
+ HelpID = SID_EDITDOC ;
+ Text = "~Bearbeiten" ;
+ Text [ English ] = "~Edit" ;
+ Text [ english_us ] = "~Edit" ;
+ Text [ italian ] = "~Modifica" ;
+ Text [ spanish ] = "~Editar" ;
+ Text [ french ] = "~Edition" ;
+ Text [ dutch ] = "Be~werken" ;
+ Text [ swedish ] = "~Redigera" ;
+ Text [ danish ] = "~Rediger" ;
+ Text [ portuguese ] = "E~ditar" ;
+ Text [ portuguese_brazilian ] = "~Bearbeiten" ;
+ Text[ chinese_simplified ] = "±à¼­(~E)";
+ Text[ russian ] = "~Ïðàâêà";
+ Text[ polish ] = "~Edytuj";
+ Text[ japanese ] = "•ÒW(~‚d)";
+ Text[ chinese_traditional ] = "½s¿è(~E)";
+ Text[ arabic ] = "~ÊÍÑíÑ";
+ Text[ dutch ] = "Be~werken";
+ Text[ chinese_simplified ] = "±à¼­(~E)";
+ Text[ greek ] = "~Åðåîåñãáóßá";
+ Text[ korean ] = "ÆíÁý(~E)";
+ Text[ turkish ] = "D~üzenle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_RELOAD;
+ HelpID = SID_RELOAD;
+ Text = "~Neu laden" ;
+ Text [ English ] = "~Reload" ;
+ Text[ italian ] = "~Ricarica";
+ Text[ portuguese_brazilian ] = "~Reload";
+ Text[ portuguese ] = "~Recarregar";
+ Text[ danish ] = "Indlæs igen";
+ Text[ french ] = "~Recharger";
+ Text[ swedish ] = "~Ladda på nytt";
+ Text[ dutch ] = "~Opnieuw laden";
+ Text[ spanish ] = "~Recargar";
+ Text[ english_us ] = "Re~load";
+ Text[ chinese_simplified ] = "ÖØÐÂ×°ÔØ(~L)";
+ Text[ russian ] = "Ïåðåçàãðóçèòü";
+ Text[ polish ] = "Za³aduj ponownie";
+ Text[ japanese ] = "Ä“Ç‚Ýž‚Ý(~L)";
+ Text[ chinese_traditional ] = "­«·s¸Ë¸ü(~L)";
+ Text[ arabic ] = "ÅÚÇÏÉ ÊÍãíá";
+ Text[ dutch ] = "~Opnieuw laden";
+ Text[ chinese_simplified ] = "ÖØÐÂ×°ÔØ(~L)";
+ Text[ greek ] = "Åðá~íáöüñôùóç";
+ Text[ korean ] = "Àç ·Îµå(~L)";
+ Text[ turkish ] = "Yeniden yükle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_RELOAD_FRAME;
+ HelpID = SID_RELOAD;
+ Text = "~Frame neu laden" ;
+ Text [ English ] = "~Reload frame" ;
+ Text[ italian ] = "Ricarica ~frame";
+ Text[ portuguese_brazilian ] = "~Reload frame";
+ Text[ portuguese ] = "~Recarregar frame";
+ Text[ danish ] = "Indlæs frame igen";
+ Text[ french ] = "~Recharger le frame";
+ Text[ swedish ] = "~Ladda ram på nytt";
+ Text[ dutch ] = "~Frame opnieuw laden";
+ Text[ spanish ] = "~Recargar frame";
+ Text[ english_us ] = "Reload Frame";
+ Text[ chinese_simplified ] = "ÖØÐÂ×°ÔØ¿ò¶ÔÏó";
+ Text[ russian ] = "Ïåðåçàãðóçèòü ðàìêó";
+ Text[ polish ] = "Za³aduj ponownie ramkê";
+ Text[ japanese ] = "ÌÚ°Ñ‚ðV‚½‚É“Ç‚Ýž‚Þ";
+ Text[ chinese_traditional ] = "­«·s¸Ë¸ü°T®Ø";
+ Text[ arabic ] = "ÅÚÇÏÉ ÊÍãíá ÇáÜ Frame";
+ Text[ dutch ] = "~Frame opnieuw laden";
+ Text[ chinese_simplified ] = "ÖØÐÂ×°ÔØ¿ò¶ÔÏó";
+ Text[ greek ] = "Åðáíáöüñôùóç ~ðëáéóßïõ";
+ Text[ korean ] = "ÇÁ·¹ÀÓ ´Ù½Ã ·Îµå";
+ Text[ turkish ] = "Frame'i yeniden yükle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_SOURCEVIEW ;
+ HelpID = HID_SOURCEVIEW ;
+ Text = "HTM~L - Quelltext" ;
+ Text [ English ] = "~HTML ~source" ;
+ Text [ dutch ] = "~HTML - brontekst" ;
+ Text [ english_us ] = "HT~ML Source" ;
+ Text [ italian ] = "Testo sorgente HTML" ;
+ Text [ spanish ] = "Texto fuente ~HTML" ;
+ Text [ french ] = "Texte source HTM~L" ;
+ Text [ swedish ] = "HTM~L-källtext" ;
+ Text [ danish ] = "~HTML-kildetekst" ;
+ Text [ portuguese ] = "Texto ~fonte HTML" ;
+ Text [ portuguese_brazilian ] = "HTM~L - Quelltext" ;
+ Text[ chinese_simplified ] = "~HTML Ô´Îı¾";
+ Text[ russian ] = "Èñòî÷íèê HTM~L";
+ Text[ polish ] = "Tekst Ÿród³owy HTML";
+ Text[ japanese ] = "HTML¿°½(~M)";
+ Text[ chinese_traditional ] = "~HTML ­ì©lÀÉ";
+ Text[ arabic ] = "HTML ãÕÏÑ";
+ Text[ dutch ] = "~HTML - brontekst";
+ Text[ chinese_simplified ] = "~HTML Ô´Îı¾";
+ Text[ greek ] = "Êåßìåíï ðñïÝëåõóçò HTM~L";
+ Text[ korean ] = "HTML ¼Ò½º(~M)";
+ Text[ turkish ] = "HTM~L kaynak kodu";
+ Text[ language_user1 ] = " ";
+ };
+ SEPARATOR
+ MenuItem
+ {
+ Identifier = MN_READONLY_BROWSE_STOP ;
+ HelpID = SID_BROWSE_STOP ;
+ Text = "~Stopp" ;
+ Text [ English ] = "~Stop" ;
+ Text [ english_us ] = "~Stop" ;
+ Text [ italian ] = "~Stop" ;
+ Text [ spanish ] = "~Stop" ;
+ Text [ french ] = "~Stop" ;
+ Text [ dutch ] = "~Stop" ;
+ Text [ swedish ] = "S~topp" ;
+ Text [ danish ] = "~Stop" ;
+ Text [ portuguese ] = "S~top" ;
+ Text [ portuguese_brazilian ] = "~Stop" ;
+ Text[ chinese_simplified ] = "ÔÝÍ£";
+ Text[ russian ] = "Ñòîï";
+ Text[ polish ] = "Zatrzymaj";
+ Text[ japanese ] = "’†Ž~(~S)";
+ Text[ chinese_traditional ] = "¼È°±(~T)";
+ Text[ arabic ] = "ÅíÞÇÝ";
+ Text[ dutch ] = "~Stop";
+ Text[ chinese_simplified ] = "ÔÝÍ£";
+ Text[ greek ] = "~ÄéáêïðÞ";
+ Text[ korean ] = "ÁßÁö(~S)";
+ Text[ turkish ] = "Dur";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_BROWSE_BACKWARD ;
+ HelpID = SID_BROWSE_BACKWARD ;
+ Text = "~Rückwärts" ;
+ Text [ English ] = "Bac~kward" ;
+ Text [ english_us ] = "Backward" ;
+ Text [ italian ] = "~Indietro" ;
+ Text [ spanish ] = "~Retroceder" ;
+ Text [ french ] = "~Précédent" ;
+ Text [ dutch ] = "~Achteruit" ;
+ Text [ swedish ] = "~Bakåt" ;
+ Text [ danish ] = "~Tilbage" ;
+ Text [ portuguese ] = "~Anterior" ;
+ Text [ portuguese_brazilian ] = "~Rückwärts" ;
+ Text[ chinese_simplified ] = "Ïòºó(~B)";
+ Text[ russian ] = "Íàçàä";
+ Text[ polish ] = "Wstecz";
+ Text[ japanese ] = "Œã•û‚Ö";
+ Text[ chinese_traditional ] = "¦V«á(~B)";
+ Text[ arabic ] = "ááÎáÝ";
+ Text[ language_user1 ] = "Áíôßóôñïöá ;";
+ Text[ dutch ] = "~Achteruit";
+ Text[ chinese_simplified ] = "Ïòºó(~B)";
+ Text[ greek ] = "~Ðßóù";
+ Text[ korean ] = "µÚ·Î";
+ Text[ turkish ] = "Geri";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_BROWSE_FORWARD ;
+ HelpID = SID_BROWSE_FORWARD ;
+ Text = "~Vorwärts" ;
+ Text [ English ] = "Forward" ;
+ Text [ english_us ] = "~Forward" ;
+ Text [ italian ] = "A~vanti" ;
+ Text [ spanish ] = "~Avanzar" ;
+ Text [ french ] = "~Suivant" ;
+ Text [ dutch ] = "~Vooruit" ;
+ Text [ swedish ] = "~Framåt" ;
+ Text [ danish ] = "~Næste" ;
+ Text [ portuguese ] = "~Seguinte" ;
+ Text [ portuguese_brazilian ] = "~Vorwärts" ;
+ Text[ chinese_simplified ] = "ÏòÇ°(~F)";
+ Text[ russian ] = "Âïåðåä";
+ Text[ polish ] = "Do przodu";
+ Text[ japanese ] = "i‚Þ(~F)";
+ Text[ chinese_traditional ] = "¦V«e(~F)";
+ Text[ arabic ] = "ááÃãÇã";
+ Text[ language_user1 ] = " ";
+ Text[ dutch ] = "~Vooruit";
+ Text[ chinese_simplified ] = "ÏòÇ°(~F)";
+ Text[ greek ] = "Åìðñü~ò";
+ Text[ korean ] = "¾ÕÀ¸·Î(~F)";
+ Text[ turkish ] = "Ýleri";
+ };
+ SEPARATOR
+ MenuItem
+ {
+ Identifier = MN_READONLY_CREATELINK ;
+ HelpID = SID_CREATELINK ;
+ /* ### ACHTUNG: Neuer Text in Resource? Verknüpfung ~hinzufügen : Bookmark ~hinzufügen */
+ /* ### ACHTUNG: Neuer Text in Resource? Verknüpfung ~hinzufügen : Bookmark ~hinzufügen */
+ Text = "Verknüpfung ~hinzufügen" ;
+ Text [ English ] = "~Add Link" ;
+ Text [ dutch ] = "Koppeling ~toevoegen" ;
+ Text [ english_us ] = "~Add Link" ;
+ Text [ swedish ] = "Lägg till ~länk" ;
+ Text [ danish ] = "Tilføj kæde" ;
+ Text [ italian ] = "Aggiungi collegamento" ;
+ Text [ spanish ] = "Añadir ~vínculo" ;
+ Text [ french ] = "Ajouter un l~ien" ;
+ Text [ portuguese ] = "Adicionar ~ligação" ;
+ Text [ portuguese_brazilian ] = "Verknüpfung ~hinzufügen" ;
+ Text[ chinese_simplified ] = "ÐÂÔöÁ´½Ó(~A)";
+ Text[ russian ] = "Äîáàâèòü ññûëêó";
+ Text[ polish ] = "Dodaj ³¹cze";
+ Text[ japanese ] = "Øݸ‚̒ljÁ(~A)";
+ Text[ chinese_traditional ] = "·s¼W±¶®|(~A)";
+ Text[ arabic ] = "ÅÖÇÝÉ ÇÑÊÈÇØ";
+ Text[ dutch ] = "Koppeling ~toevoegen";
+ Text[ chinese_simplified ] = "ÐÂÔöÁ´½Ó(~A)";
+ Text[ greek ] = "ÐñïóèÞê~ç óýíäåóçò";
+ Text[ korean ] = "¿¬°á Ãß°¡(~A)";
+ Text[ turkish ] = "Baðlantý ekle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_CREATEGRAPHIKLINK ;
+ HelpID = HID_MN_READONLY_CREATEGRAPHIKLINK ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Verknüpfung auf Grafik hinzufügen : B~ookmark auf Grafik hinzufügen */
+ /* ### ACHTUNG: Neuer Text in Resource? ~Verknüpfung auf Grafik hinzufügen : B~ookmark auf Grafik hinzufügen */
+ Text = "~Verknüpfung auf Grafik hinzufügen" ;
+ Text [ English ] = "Add ~Link to Image" ;
+ Text [ dutch ] = "~Koppeling aan afbeelding toevoegen" ;
+ Text [ english_us ] = "~Add Link to Picture" ;
+ Text [ swedish ] = "~Lägga till länk på grafik" ;
+ Text [ danish ] = "Tilføj kæde til billede" ;
+ Text [ italian ] = "Aggiungi collegamento al grafico" ;
+ Text [ spanish ] = "Añadir ~vínculo a imagen" ;
+ Text [ french ] = "Ajouter un l~ien à l'image" ;
+ Text [ portuguese ] = "Adicionar ~ligação à imagem" ;
+ Text [ portuguese_brazilian ] = "~Verknüpfung auf Grafik hinzufügen" ;
+ Text[ chinese_simplified ] = "ÐÂÔöͼÐεÄÁ´½Ó(~A)";
+ Text[ russian ] = "Äîáàâèòü ññûëêó íà ðèñóíîê";
+ Text[ polish ] = "Dodaj ³¹cze do grafiki";
+ Text[ japanese ] = "}‚ÉØݸ‚ð’ljÁ‚·‚é(~A)";
+ Text[ chinese_traditional ] = "·s¼W¹Ï¤ùªº±¶®|(~A)";
+ Text[ arabic ] = "ÅÖÇÝÉ ÇÑÊÈÇØ áÕæÑÉ";
+ Text[ dutch ] = "~Koppeling aan afbeelding toevoegen";
+ Text[ chinese_simplified ] = "ÐÂÔöͼÐεÄÁ´½Ó(~A)";
+ Text[ greek ] = "ÐñïóèÞêç óýíäåóçò óå ãñá~öéêü";
+ Text[ korean ] = "±×¸²¿¡ ¿¬°á Ãß°¡(~A)";
+ Text[ turkish ] = "Baðlantýyý grafiðe ekle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_SAVEGRAPHIC ;
+ HelpID = HID_MN_READONLY_SAVEGRAPHIC ;
+ Text = "~Grafik speichern..." ;
+ Text [ English ] = "Save ~Image..." ;
+ Text [ dutch ] = "Afbeelding ops~laan..." ;
+ Text [ italian ] = "~Salva immagine..." ;
+ Text [ spanish ] = "Guardar ~imagen..." ;
+ Text [ french ] = "Enregistrer l'~image..." ;
+ Text [ english_us ] = "Save Graphics..." ;
+ Text [ swedish ] = "~Spara grafik..." ;
+ Text [ danish ] = "~Gem billede..." ;
+ Text [ portuguese ] = "~Guardar imagem..." ;
+ Text [ portuguese_brazilian ] = "~Grafik speichern..." ;
+ Text[ chinese_simplified ] = "´æÅÌͼÐÎ(~S)...";
+ Text[ russian ] = "Ñîõðàíèòü ðèñóíîê...";
+ Text[ polish ] = "Zapisz grafikê...";
+ Text[ japanese ] = "¸Þ×̨¯¸‚Ì•Û‘¶...";
+ Text[ chinese_traditional ] = "Àx¦s¹Ï¤ù(~S)...";
+ Text[ arabic ] = "...ÍÝÙ ÇáÕæÑÉ";
+ Text[ dutch ] = "Afbeelding ops~laan...";
+ Text[ chinese_simplified ] = "´æÅÌͼÐÎ(~S)...";
+ Text[ greek ] = "ÁðïèÞêåõóç ~ãñáöéêïý...";
+ Text[ korean ] = "±×·¡ÇÈ ÀúÀå...";
+ Text[ turkish ] = "Grafiði kaydet...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_GRAPHICTOGALLERY ;
+ HelpID = HID_MN_READONLY_GRAPHICTOGALLERY ;
+ Text = "Grafik hinzuf~ügen" ;
+ Text [ English ] = "A~dd Image" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = MN_READONLY_TOGALLERYLINK ;
+ HelpID = HID_MN_READONLY_TOGALLERYLINK ;
+ Text = "Als Link" ;
+ Text [ english ] = "as link" ;
+ Text [ english_us ] = "As Link" ;
+ Text [ portuguese_brazilian ] = "Als Link" ;
+ Text [ swedish ] = "Som länk" ;
+ Text [ danish ] = "Som kæde" ;
+ Text [ italian ] = "Come link" ;
+ Text [ spanish ] = "Como vínculo" ;
+ Text [ french ] = "Comme lien" ;
+ Text [ dutch ] = "Als koppeling" ;
+ Text [ portuguese ] = "Como ligação" ;
+ Text[ chinese_simplified ] = "Á´½Ó";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Êàê ññûëêó";
+ Text[ polish ] = "Jako ³¹cze";
+ Text[ japanese ] = "Øݸ‚Æ‚µ‚Ä";
+ Text[ chinese_traditional ] = "±¶®|";
+ Text[ arabic ] = "ßÇÑÊÈÇØ";
+ Text[ dutch ] = "Als koppeling";
+ Text[ chinese_simplified ] = "Á´½Ó";
+ Text[ greek ] = "Ùò óýíäåóç";
+ Text[ korean ] = "¿¬°á·Î";
+ Text[ turkish ] = "Baðlantý olarak";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_TOGALLERYCOPY ;
+ HelpID = HID_MN_READONLY_TOGALLERYCOPY ;
+ Text = "Kopieren" ;
+ Text [ english ] = "copy" ;
+ Text [ english_us ] = "Copy" ;
+ Text [ portuguese_brazilian ] = "Kopieren" ;
+ Text [ swedish ] = "Kopiera" ;
+ Text [ danish ] = "Kopier" ;
+ Text [ italian ] = "Copia" ;
+ Text [ spanish ] = "Copiar" ;
+ Text [ french ] = "Copier" ;
+ Text [ dutch ] = "Kopiëren" ;
+ Text [ portuguese ] = "Copiar" ;
+ Text[ chinese_simplified ] = "¸´ÖÆ";
+ Text[ russian ] = "Êîïèðîâàòü";
+ Text[ polish ] = "Kopiuj";
+ Text[ japanese ] = "ºËß°";
+ Text[ chinese_traditional ] = "½Æ»s";
+ Text[ arabic ] = "äÓÎ";
+ Text[ dutch ] = "Kopiëren";
+ Text[ chinese_simplified ] = "¸´ÖÆ";
+ Text[ greek ] = "ÁíôéãñáöÞ";
+ Text[ korean ] = "º¹»ç";
+ Text[ turkish ] = "Kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ SEPARATOR
+ };
+ };
+ Text [ portuguese ] = "~Adicionar imagem" ;
+ Text [ english_us ] = "Add Graphics" ;
+ Text [ portuguese_brazilian ] = "Grafik hinzuf~ügen" ;
+ Text [ swedish ] = "Lägg till ~grafik" ;
+ Text [ danish ] = "Tilføj billede" ;
+ Text [ italian ] = "Aggi~ungi immagine" ;
+ Text [ spanish ] = "~Añadir imagen" ;
+ Text [ french ] = "~Ajouter une image" ;
+ Text [ dutch ] = "Afbeelding t~oevoegen" ;
+ Text[ chinese_simplified ] = "ÐÂÔöͼÐÎ(~D)";
+ Text[ russian ] = "Äîáàâèòü ðèñóíîê";
+ Text[ polish ] = "Dodaj grafikê";
+ Text[ japanese ] = "¸Þ×̨¯¸‚̒ljÁ";
+ Text[ chinese_traditional ] = "·s¼W¹Ï¤ù(~D)";
+ Text[ arabic ] = "ÅÖÇÝÉ ÑÓæã";
+ Text[ dutch ] = "Afbeelding t~oevoegen";
+ Text[ chinese_simplified ] = "ÐÂÔöͼÐÎ(~D)";
+ Text[ greek ] = "Ðñïó~èÞêç ãñáöéêþí";
+ Text[ korean ] = "±×·¡ÇÈ Ãß°¡";
+ Text[ turkish ] = "Grafik ekle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_SAVEBACKGROUND ;
+ HelpID = HID_MN_READONLY_SAVEBACKGROUND ;
+ Text = "H~intergrund speichern..." ;
+ Text [ English ] = "Save ~Background..." ;
+ Text [ dutch ] = "Achte~rgrond opslaan..." ;
+ Text [ english_us ] = "Save Background..." ;
+ Text [ swedish ] = "Spara ~bakgrund..." ;
+ Text [ danish ] = "Gem baggrunden..." ;
+ Text [ italian ] = "Salva sfondo..." ;
+ Text [ spanish ] = "Guardar ~fondo..." ;
+ Text [ french ] = "Enregistrer l'~arrière-plan..." ;
+ Text [ portuguese ] = "Guardar plano de f~undo..." ;
+ Text [ portuguese_brazilian ] = "H~intergrund speichern..." ;
+ Text[ chinese_simplified ] = "´æÅ̱³¾°(~B)...";
+ Text[ russian ] = "Ñîõðàíèòü ôîí";
+ Text[ polish ] = "Zapisz t³o";
+ Text[ japanese ] = "”wŒi‚Ì•Û‘¶...";
+ Text[ chinese_traditional ] = "Àx¦s­I´º(~B)...";
+ Text[ arabic ] = "ÍÝÙ ÇáÎáÝíÉ...";
+ Text[ dutch ] = "Achte~rgrond opslaan...";
+ Text[ chinese_simplified ] = "´æÅ̱³¾°(~B)...";
+ Text[ greek ] = "ÁðïèÞêåõó~ç öüíôïõ...";
+ Text[ korean ] = "¹è°æ ÀúÀå...";
+ Text[ turkish ] = "Artalaný kaydet";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_BACKGROUNDTOGALLERY ;
+ HelpID = HID_MN_READONLY_BACKGROUNDTOGALLERY ;
+ Text = "H~intergrund hinzufügen" ;
+ Text [ English ] = "Add ~Background" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = MN_READONLY_TOGALLERYLINK ;
+ HelpID = HID_MN_READONLY_TOGALLERYLINK ;
+ Text = "Als Link" ;
+ Text [ english ] = "as link" ;
+ Text [ english_us ] = "As Link" ;
+ Text [ portuguese_brazilian ] = "Als Link" ;
+ Text [ swedish ] = "Som länk" ;
+ Text [ danish ] = "Som kæde" ;
+ Text [ italian ] = "Come link" ;
+ Text [ spanish ] = "Como vínculo" ;
+ Text [ french ] = "Comme lien" ;
+ Text [ dutch ] = "Als koppeling" ;
+ Text [ portuguese ] = "Como ligação" ;
+ Text[ chinese_simplified ] = "Á´½Ó";
+ Text[ russian ] = "Êàê ññûëêó";
+ Text[ polish ] = "Jako ³¹cze";
+ Text[ japanese ] = "Øݸ‚Æ‚µ‚Ä";
+ Text[ chinese_traditional ] = "±¶®|";
+ Text[ arabic ] = "ßÇÑÊÈÇØ";
+ Text[ dutch ] = "Als koppeling";
+ Text[ chinese_simplified ] = "Á´½Ó";
+ Text[ greek ] = "Ùò óýíäåóç";
+ Text[ korean ] = "¿¬°á·Î";
+ Text[ turkish ] = "Baðlantý olarak";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_TOGALLERYCOPY ;
+ HelpID = HID_MN_READONLY_TOGALLERYCOPY ;
+ Text = "Kopieren" ;
+ Text [ english ] = "copy" ;
+ Text [ english_us ] = "Copy" ;
+ Text [ portuguese_brazilian ] = "Kopieren" ;
+ Text [ swedish ] = "Kopiera" ;
+ Text [ danish ] = "Kopier" ;
+ Text [ italian ] = "Copia" ;
+ Text [ spanish ] = "Copiar" ;
+ Text [ french ] = "Copier" ;
+ Text [ dutch ] = "Kopiëren" ;
+ Text [ portuguese ] = "Copiar" ;
+ Text[ chinese_simplified ] = "¸´ÖÆ";
+ Text[ russian ] = "Êîïèðîâàòü";
+ Text[ polish ] = "Kopiuj";
+ Text[ japanese ] = "ºËß°";
+ Text[ chinese_traditional ] = "½Æ»s";
+ Text[ arabic ] = "äÓÎ";
+ Text[ dutch ] = "Kopiëren";
+ Text[ chinese_simplified ] = "¸´ÖÆ";
+ Text[ greek ] = "ÁíôéãñáöÞ";
+ Text[ korean ] = "º¹»ç";
+ Text[ turkish ] = "Kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ SEPARATOR
+ };
+ };
+ Text [ english_us ] = "Add Background" ;
+ Text [ portuguese_brazilian ] = "H~intergrund hinzufügen" ;
+ Text [ swedish ] = "Lägg till ~bakgrund" ;
+ Text [ danish ] = "Tilføj baggrund" ;
+ Text [ italian ] = "Aggiungi sfon~do" ;
+ Text [ spanish ] = "Añadir ~fondo" ;
+ Text [ french ] = "Aj~outer un arrière-plan" ;
+ Text [ dutch ] = "A~chtergrond toevoegen" ;
+ Text [ portuguese ] = "Adicionar plano de ~fundo" ;
+ Text[ chinese_simplified ] = "ÐÂÔö±³¾°(~B)";
+ Text[ russian ] = "Âñòàâèòü ôîí";
+ Text[ polish ] = "Dodaj t³o";
+ Text[ japanese ] = "”wŒi‚̒ljÁ";
+ Text[ chinese_traditional ] = "·s¼W­I´º(~B)";
+ Text[ arabic ] = "ÅÖÇÝÉ ÎáÝíÉ";
+ Text[ dutch ] = "A~chtergrond toevoegen";
+ Text[ chinese_simplified ] = "ÐÂÔö±³¾°(~B)";
+ Text[ greek ] = "ÐñïóèÞê~ç öüíôïõ";
+ Text[ korean ] = "¹è°æ Ãß°¡";
+ Text[ turkish ] = "Artalaný ekle";
+ Text[ language_user1 ] = " ";
+ };
+ SEPARATOR
+ MenuItem
+ {
+ Identifier = MN_READONLY_COPYLINK ;
+ HelpID = HID_MN_READONLY_COPYLINK ;
+ Text = "~Link kopieren" ;
+ Text [ English ] = "~Copy Link" ;
+ Text [ dutch ] = "~Koppeling kopiëren" ;
+ Text [ english_us ] = "Copy ~Link" ;
+ Text [ italian ] = "Copia link" ;
+ Text [ spanish ] = "~Copiar vínculo" ;
+ Text [ french ] = "Copier le ~lien" ;
+ Text [ swedish ] = "Kopiera l~änk" ;
+ Text [ danish ] = "Kopier kæde" ;
+ Text [ portuguese ] = "Copiar ~ligação" ;
+ Text [ portuguese_brazilian ] = "~Link kopieren" ;
+ Text[ chinese_simplified ] = "¸´ÖÆÁ´½Ó(~L)";
+ Text[ russian ] = "Êîïèðîâàòü ññûëêó";
+ Text[ polish ] = "Kopiuj ³¹cze";
+ Text[ japanese ] = "Øݸ‚̺Ëß°(~L)";
+ Text[ chinese_traditional ] = "½Æ»s±¶®|(~L)";
+ Text[ arabic ] = "äÓÎ ÇáÇÑÊÈÇØ";
+ Text[ dutch ] = "~Koppeling kopiëren";
+ Text[ chinese_simplified ] = "¸´ÖÆÁ´½Ó(~L)";
+ Text[ greek ] = "ÁíôéãñáöÞ ~óýíäåóçò";
+ Text[ korean ] = "¿¬°á º¹»ç(~L)";
+ Text[ turkish ] = "Baðlantýyý kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_COPYGRAPHIC ;
+ HelpID = HID_MN_READONLY_COPYGRAPHIC ;
+ /* ### ACHTUNG: Neuer Text in Resource? Grafik ~kopieren : ~Grafik kopieren */
+ /* ### ACHTUNG: Neuer Text in Resource? Grafik ~kopieren : ~Grafik kopieren */
+ /* ### ACHTUNG: Neuer Text in Resource? Grafik ~kopieren : ~Grafik kopieren */
+ Text = "Grafik ~kopieren" ;
+ Text [ English ] = "C~opy ™mage" ;
+ Text [ dutch ] = "Afbeelding ko~piëren" ;
+ Text [ italian ] = "~Copia immagine" ;
+ Text [ spanish ] = "~Copiar imagen" ;
+ Text [ french ] = "~Copier une image" ;
+ Text [ english_us ] = "Copy ~Graphics" ;
+ Text [ swedish ] = "Kopiera ~grafik" ;
+ Text [ danish ] = "Kopier billede" ;
+ Text [ portuguese ] = "Co~piar imagem" ;
+ Text [ portuguese_brazilian ] = "Grafik ~kopieren" ;
+ Text[ chinese_simplified ] = "¸´ÖÆͼÐÎ(~G)";
+ Text[ russian ] = "Êîïèðîâàòü ðèñóíîê";
+ Text[ polish ] = "Kopiuj grafikê";
+ Text[ japanese ] = "¸Þ×̨¯¸‚̺Ëß°(~G)";
+ Text[ chinese_traditional ] = "½Æ»s¹Ï¤ù(~G)";
+ Text[ arabic ] = "äÓÎ ÇáÕæÑÉ";
+ Text[ dutch ] = "Afbeelding ko~piëren";
+ Text[ chinese_simplified ] = "¸´ÖÆͼÐÎ(~G)";
+ Text[ greek ] = "ÁíôéãñáöÞ ãñáöé~êþí";
+ Text[ korean ] = "±×·¡ÇÈ º¹»ç(~G)";
+ Text[ turkish ] = "Grafiði kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ SEPARATOR
+ MenuItem
+ {
+ Identifier = MN_READONLY_LOADGRAPHIC ;
+ HelpID = HID_MN_READONLY_LOADGRAPHIC ;
+ Text = "G~rafiken laden" ;
+ Text [ English ] = "Load Images" ;
+ Text [ dutch ] = "A~fbeeldingen laden" ;
+ Text [ english_us ] = "Load Graphics" ;
+ Text [ swedish ] = "Ladda g~rafik" ;
+ Text [ danish ] = "Indlæs grafik" ;
+ Text [ italian ] = "Ca~rica immagine" ;
+ Text [ spanish ] = "Cargar ~imágenes" ;
+ Text [ french ] = "Charger des i~mages" ;
+ Text [ portuguese ] = "~Carregar imagens" ;
+ Text [ portuguese_brazilian ] = "G~rafiken laden" ;
+ Text[ chinese_simplified ] = "×°ÔØͼÐÎ";
+ Text[ russian ] = "Çàãðóçèòü ðèñóíêè";
+ Text[ polish ] = "Za³aduj grafiki";
+ Text[ japanese ] = "¸Þ×̨¯¸½‚Ì“Ç‚Ýž‚Ý";
+ Text[ chinese_traditional ] = "¸Ë¸ü¹Ï¤ù";
+ Text[ arabic ] = "ÊÍãíá ÇáÕæÑ";
+ Text[ dutch ] = "A~fbeeldingen laden";
+ Text[ chinese_simplified ] = "×°ÔØͼÐÎ";
+ Text[ greek ] = "Öü~ñôùóç ãñáöéêþí";
+ Text[ korean ] = "±×·¡ÇÈ ·Îµå";
+ Text[ turkish ] = "Grafikleri yükle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_READONLY_GRAPHICOFF ;
+ HelpID = HID_MN_READONLY_GRAPHICOFF ;
+ Text = "Grafiken ~ausschalten" ;
+ Text [ English ] = "Images ~off" ;
+ Text [ italian ] = "~Nascondi le immagini" ;
+ Text [ spanish ] = "Desactivar ~imágenes" ;
+ Text [ french ] = "~Désactiver des images" ;
+ Text [ dutch ] = "~Afbeeldingen uitschakelen" ;
+ Text [ english_us ] = "Graphics Off" ;
+ Text [ swedish ] = "~Stäng av grafiker" ;
+ Text [ danish ] = "~Sluk billeder" ;
+ Text [ portuguese ] = "~Ocultar imagens" ;
+ Text [ portuguese_brazilian ] = "Grafiken ~ausschalten" ;
+ Text[ chinese_simplified ] = "ÒþÈëͼÐÎ";
+ Text[ russian ] = "Îòêëþ÷èòü ðèñóíêè";
+ Text[ polish ] = "Wy³¹cz grafiki";
+ Text[ japanese ] = "¸Þ×̨¯¸½‚Ì”ñ•\\Ž¦";
+ Text[ chinese_traditional ] = "Áô¤J¹Ï¤ù";
+ Text[ arabic ] = "ÅÎÝÇÁ ÇáÕæÑ";
+ Text[ dutch ] = "~Afbeeldingen uitschakelen";
+ Text[ chinese_simplified ] = "ÒþÈëͼÐÎ";
+ Text[ greek ] = "~Áðåíåñãïðïßçóç ãñáöéêþí";
+ Text[ korean ] = "±×·¡ÇÈ ´Ý±â";
+ Text[ turkish ] = "Grafikleri kapat";
+ Text[ language_user1 ] = " ";
+ };
+#ifdef WNT
+ MenuItem
+ {
+ Identifier = MN_READONLY_PLUGINOFF ;
+ HelpID = HID_MN_READONLY_PLUGINOFF ;
+ Text = "~PlugIns ausschalten" ;
+ Text [ English ] = "~PlugIns off" ;
+ Text [ english_us ] = "Plug-Ins Off" ;
+ Text [ italian ] = "Disattiva i PlugIn" ;
+ Text [ spanish ] = "Desactivar ~Plug-ins" ;
+ Text [ french ] = "Désactiver les ~Plug-Ins" ;
+ Text [ dutch ] = "~PlugIns uitschakelen" ;
+ Text [ swedish ] = "Stäng av ~PlugIns" ;
+ Text [ danish ] = "Sluk ~PlugIns" ;
+ Text [ portuguese ] = "Desactivar ~PlugIns" ;
+ Text [ portuguese_brazilian ] = "~PlugIns ausschalten" ;
+ Text[ chinese_simplified ] = "ʧ»î ~Plug-In";
+ Text[ russian ] = "Îòêëþ÷èòü Plug-Ins";
+ Text[ polish ] = "Wy³¹cz dodatki PlugIn";
+ Text[ japanese ] = "Ìß×¸Þ²Ý µÌ";
+ Text[ chinese_traditional ] = "¥¢¬¡ ~PlugIn";
+ Text[ arabic ] = "ÅíÞÇÝ Plug-Ins";
+ Text[ dutch ] = "~PlugIns uitschakelen";
+ Text[ chinese_simplified ] = "ʧ»î ~Plug-In";
+ Text[ greek ] = "Áðåíåñãïðïßçóç ~Plug-Ins";
+ Text[ korean ] = "Ç÷¯±×ÀÎ Á¾·á";
+ Text[ turkish ] = "Plug-in'leri kapat";
+ Text[ language_user1 ] = " ";
+ };
+#endif
+ };
+};
+String STR_EXPORT_GRAFIK_TITLE
+{
+ Text = "Grafik-Export" ;
+ Text [ English ] = "Image export" ;
+ Text [ dutch ] = "Afbeelding exporteren" ;
+ Text [ italian ] = "Esporta immagine" ;
+ Text [ spanish ] = "Exportar imagen" ;
+ Text [ french ] = "Export d'image" ;
+ Text [ english_us ] = "Graphics Export" ;
+ Text [ swedish ] = "Grafik-export" ;
+ Text [ danish ] = "Billedeksport" ;
+ Text [ portuguese ] = "Exportar imagem" ;
+ Text [ portuguese_brazilian ] = "Grafik-Export" ;
+ Text[ chinese_simplified ] = "ͼÐÎ-Êä³ö";
+ Text[ russian ] = "Ýêñïîðò ðèñóíêà";
+ Text[ polish ] = "Eksport grafiki";
+ Text[ japanese ] = "¸Þ×̨¯¸ ´¸½Îß°Ä";
+ Text[ chinese_traditional ] = "¹Ï¤ù-¿é¥X";
+ Text[ arabic ] = "ÊÕÏíÑ ÕæÑ";
+ Text[ dutch ] = "Afbeelding exporteren";
+ Text[ chinese_simplified ] = "ͼÐÎ-Êä³ö";
+ Text[ greek ] = "ÅîáãùãÞ ãñáöéêþí";
+ Text[ korean ] = "±×·¡ÇÈ º¸³»±â";
+ Text[ turkish ] = "Grafik ver";
+ Text[ language_user1 ] = " ";
+};
+String STR_CHAIN_OK
+{
+ Text = "Betätigen Sie die linke Maustaste um die Rahmen zu verketten." ;
+ Text [ english ] = "Klick the left mouse button to chain the Frames." ;
+ Text [ portuguese ] = "Clique no botão esquerdo do rato para ligar as molduras." ;
+ Text [ english_us ] = "Click the left mouse button to link the frames." ;
+ Text [ portuguese_brazilian ] = "Betätigen Sie die linke Maustaste um die Rahmen zu verketten." ;
+ Text [ swedish ] = "Klicka på den vänstra musknappen för att länka samman ramen." ;
+ Text [ danish ] = "Klik på venstre museknap for at kæde rammerne." ;
+ Text [ italian ] = "Per collegare la cornice cliccate con il tasto sinistro del mouse." ;
+ Text [ spanish ] = "Pulse el botón izquierdo del ratón para vincular las marcos." ;
+ Text [ french ] = "Cliquez sur le bouton gauche de la souris pour lier les cadres." ;
+ Text [ dutch ] = "Gebruik de linker muistoets om het kader te koppelen." ;
+ Text[ chinese_simplified ] = "ÇëÄúͨ¹ý°´»÷Êó±ê×ó¼üÀ´Á¬½Ó¿ò¡£";
+ Text[ russian ] = "Íàæìèòå ëåâóþ êëàâèøó ìûøè äëÿ ñâÿçè ðàìêè.";
+ Text[ polish ] = "Kliknij lewy przycisk myszy, by po³¹czyæ ramki.";
+ Text[ japanese ] = "˜g‚ð‚‚Ȃ®‚½‚߂ɶ‚Ìϳ½ÎÞÀÝ‚ð¸Ø¯¸‚µ‚ĉº‚³‚¢";
+ Text[ chinese_traditional ] = "½Ð±z«ö¥H¤U·Æ¹«ªº¥ªÁä¡M³sµ²°T®Ø¡C";
+ Text[ arabic ] = ".ÇäÞÑ ÇáÒÑ ÇáÃíÓÑ ááãÇæÓ áÑÈØ ÇáÃØÑ";
+ Text[ dutch ] = "Gebruik de linker muistoets om het kader te koppelen.";
+ Text[ chinese_simplified ] = "ÇëÄúͨ¹ý°´»÷Êó±ê×ó¼üÀ´Á¬½Ó¿ò¡£";
+ Text[ greek ] = "ÐáôÞóôå ôï áñéóôåñü ðëÞêôñï ôïõ ðïíôéêéïý ãéá íá óõíäåèïýí ôá ðåñéãñÜììáôá.";
+ Text[ korean ] = "ÇÁ·¹ÀÓ¿¡ ¿¬°áÇϱâ À§Çؼ­ ¿ÞÂÊ ¸¶¿ì½º ¹öÆ°À» Ŭ¸¯Çϼ¼¿ä.";
+ Text[ turkish ] = "Çerçeveler arasý baðlantý oluþturmak için sol fare tuþunu kullanýn.";
+ Text[ language_user1 ] = " ";
+};
+String STR_CHAIN_NOT_EMPTY
+{
+ Text = "Der Zielrahmen ist nicht leer." ;
+ Text [ english ] = "The target is not empty." ;
+ Text [ portuguese ] = "A moldura de destino não está vazia." ;
+ Text [ english_us ] = "Target frame not empty." ;
+ Text [ portuguese_brazilian ] = "Der Zielrahmen ist nicht leer." ;
+ Text [ swedish ] = "Målramen är inte tom." ;
+ Text [ danish ] = "Målrammen er ikke tom." ;
+ Text [ italian ] = "La cornice di destinazione non è vuota." ;
+ Text [ spanish ] = "El marco destino no está vacío." ;
+ Text [ french ] = "Le cadre cible n'est pas vide." ;
+ Text [ dutch ] = "Het doelkader is niet leeg." ;
+ Text[ chinese_simplified ] = "Ä¿±ê¿ò²»Êǿյġ£";
+ Text[ russian ] = "Öåëåâàÿ ðàìêà íå ÿâëÿåòñÿ ïóñòîé.";
+ Text[ polish ] = "Ramka docelowa nie jest pusta.";
+ Text[ japanese ] = "–Ú•W‚̘g‚Í‹ó‚Å‚·";
+ Text[ chinese_traditional ] = "¥Ø¼Ð¤è¶ô¤£¬OªÅªº¡C";
+ Text[ arabic ] = ".ÇáÅØÇÑ ÇáåÏÝ ÛíÑ ÝÇÑÛ";
+ Text[ dutch ] = "Het doelkader is niet leeg.";
+ Text[ chinese_simplified ] = "Ä¿±ê¿ò²»Êǿյġ£";
+ Text[ greek ] = "Ôï ðëáßóéï ðñïïñéóìïý äåí åßíáé êåíü.";
+ Text[ korean ] = "¸ñÇ¥ ÇÁ·¹ÀÓÀÌ ºñ¾îÀÖÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Hedef çerçeve boþ deðil.";
+ Text[ language_user1 ] = " ";
+};
+String STR_CHAIN_IS_IN_CHAIN
+{
+ Text = "Der Zielrahmen ist bereits verkettet." ;
+ Text [ english ] = "The target is already target of a chain." ;
+ Text [ portuguese ] = "A moldura de destino já está ligada." ;
+ Text [ english_us ] = "Target frame is already linked." ;
+ Text [ portuguese_brazilian ] = "Der Zielrahmen ist bereits verkettet." ;
+ Text [ swedish ] = "Målramen är redan länkad. " ;
+ Text [ danish ] = "Målrammen er allerede sammenkædet." ;
+ Text [ italian ] = "La cornice di destinazione è già collegata." ;
+ Text [ spanish ] = "El marco destino ya está vinculado." ;
+ Text [ french ] = "Le cadre cible est déjà lié." ;
+ Text [ dutch ] = "Het doelkader is reeds gekoppeld." ;
+ Text[ chinese_simplified ] = "ÒѾ­Á´½ÓÄ¿±ê¿ò¡£";
+ Text[ russian ] = "Öåëåàâÿ ðàìêà óæå ñâÿçàíà.";
+ Text[ polish ] = "Ramka docelowa jest ju¿ po³¹czona.";
+ Text[ japanese ] = "–Ú•W‚̘g‚Í‚·‚łɂ‚Ȃª‚ê‚Ä‚¢‚Ü‚·";
+ Text[ chinese_traditional ] = "¤w¸g³sµ²¥Ø¼Ð¤è¶ô¡C";
+ Text[ arabic ] = ".ÇáÅØÇÑ ÇáåÏÝ ãÑÊÈØ ÈÇáÝÚá";
+ Text[ dutch ] = "Het doelkader is reeds gekoppeld.";
+ Text[ chinese_simplified ] = "ÒѾ­Á´½ÓÄ¿±ê¿ò¡£";
+ Text[ greek ] = "Ôï ðëáßóéï ðñïïñéóìïý åßíáé Þäç óõíäåäåìÝíï.";
+ Text[ korean ] = "¸ñÇ¥ ÇÁ·¹ÀÓÀÌ ÀÌ¹Ì ¿¬°á µÇ¾î ÀÖ½À´Ï´Ù.";
+ Text[ turkish ] = "Hedef çerçeve baðlantýsý oluþturulmuþ durumda.";
+ Text[ language_user1 ] = " ";
+};
+String STR_CHAIN_WRONG_AREA
+{
+ Text = "Der Zielrahmen steht in einem Bereich in dem keine Verkettung möglich ist." ;
+ Text [ english ] = "The target is in an invalid area." ;
+ Text [ portuguese ] = "A moldura de destino encontra-se numa área que não permite a ligação." ;
+ Text [ english_us ] = "The target frame for the link is in an invalid area." ;
+ Text [ portuguese_brazilian ] = "Der Zielrahmen steht in einem Bereich in dem keine Verkettung möglich ist." ;
+ Text [ swedish ] = "Målramen finns i ett område där ingen länkning är möjlig. " ;
+ Text [ danish ] = "Målrammen befinder sig i et område hvor sammenkædning ikke er mulig." ;
+ Text [ italian ] = "La cornice di destinazione si trova in un'area nella quale non sono possibili collegamenti." ;
+ Text [ spanish ] = "El marco destino se encuentra en un área en la que los vínculos no son posibles." ;
+ Text [ french ] = "Le cadre-cible se trouve dans une section ne pouvant pas faire l'objet d'un lien." ;
+ Text [ dutch ] = "Het bronkader staat in een bereik waarin geen koppeling mogelijk is." ;
+ Text[ chinese_simplified ] = "Ä¿±ê¿ò´¦ÓÚÒ»¸öÎÞ·¨Á´½ÓµÄÇøÓò¡£";
+ Text[ russian ] = "Öåëåâàÿ ðàìêà íàõîäèòñÿ â îáëàñòè, â êîòîðîé ñâÿçü íåâîçìîæíà.";
+ Text[ polish ] = "Ramka docelowa znajduje siê w obszarze, w którym niemo¿liwe jest po³¹czenie.";
+ Text[ japanese ] = "–Ú•W‚̘g‚͂‚Ȃ®‚±‚Æ‚Ì‚Å‚«‚È‚¢”͈͂ɂ ‚è‚Ü‚·";
+ Text[ chinese_traditional ] = "¥Ø¼Ð°T®Ø³B©ó¤@­ÓµLªk°T®Øªº°Ï°ì¡C";
+ Text[ arabic ] = ".íÊæÇÌÏ ÇáÅØÇÑ ÇáåÏÝ Ýí ãäØÞÉ áÇ íãßä Úãá ÊÓáÓá ÝíåÇ";
+ Text[ dutch ] = "Het bronkader staat in een bereik waarin geen koppeling mogelijk is.";
+ Text[ chinese_simplified ] = "Ä¿±ê¿ò´¦ÓÚÒ»¸öÎÞ·¨Á´½ÓµÄÇøÓò¡£";
+ Text[ greek ] = "Ôï ðëáßóéï ðñïïñéóìïý âñßóêåôáé óå ìéá ðåñéï÷Þ óôçí ïðïßá åßíáé áäýíáôïí íá äçìéïõñãçèåß ìßá óýíäåóç.";
+ Text[ korean ] = "¿¬°áÀ» À§ÇÑ ¸ñÇ¥ ÇÁ·¹ÀÓÀÌ À¯È¿ÇÏÁö ¾ÊÀº ¿µ¿ª¿¡ ÀÖ½À´Ï´Ù.";
+ Text[ turkish ] = "Hedef çerçeve baðlantý oluþturulamayacak bir alanda bulunuyor.";
+ Text[ language_user1 ] = " ";
+};
+String STR_CHAIN_NOT_FOUND
+{
+ Text = "An der aktuellen Position kann kein Zielrahmen gefunden werden." ;
+ Text [ english ] = "No target found at this position." ;
+ Text [ portuguese ] = "Impossível encontrar moldura de destino na posição actual." ;
+ Text [ english_us ] = "Target frame not found at current position." ;
+ Text [ portuguese_brazilian ] = "An der aktuellen Position kann kein Zielrahmen gefunden werden." ;
+ Text [ swedish ] = "Vid den aktuella positionen kan ingen målram hittas." ;
+ Text [ danish ] = "Der blev ikke fundet en målramme på den aktuelle position." ;
+ Text [ italian ] = "Impossibile trovare una cornice di destinazione nella posizione corrente." ;
+ Text [ spanish ] = "En la posición actual no se puede encontrar ningún marco destino." ;
+ Text [ french ] = "Aucun cadre cible ne peut être trouvé à la position courante." ;
+ Text [ dutch ] = "Op de actuele positie kan geen doelkader worden gevonden." ;
+ Text[ chinese_simplified ] = "ÔÚµ±Ç°µÄλÖÃûÓÐÕÒµ½Ä¿±ê¿ò¡£";
+ Text[ russian ] = "Â òåêóùåé ïîçèöèè öåëåâàÿ ðàìêà íåîáíàðóæåíà.";
+ Text[ polish ] = "Przy aktualnej pozycji nie znaleziono ramki docelowej.";
+ Text[ japanese ] = "Œ»ˆÊ’u‚É–Ú•W‚̘g‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¦b·í«eªº¦ì¸m¨S¦³§ä¨ì¥Ø¼Ð¤è¶ô¡C";
+ Text[ arabic ] = ".áÇ íæÌÏ ÅØÇÑ åÏÝ Ýí ÇáãæÞÚ ÇáÍÇáí";
+ Text[ dutch ] = "Op de actuele positie kan geen doelkader worden gevonden.";
+ Text[ chinese_simplified ] = "ÔÚµ±Ç°µÄλÖÃûÓÐÕÒµ½Ä¿±ê¿ò¡£";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá âñåèåß ðëáßóéï ðñïïñéóìïý óôçí ôñÝ÷ïõóá èÝóç.";
+ Text[ korean ] = "ÇöÀçÀÇ À§Ä¡¿¡¼­ ¸ñÇ¥ ÇÁ·¹ÀÓÀÌ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Yürürlükteki konumda hedef çerçeve bulunamýyor.";
+ Text[ language_user1 ] = " ";
+};
+String STR_CHAIN_SOURCE_CHAINED
+{
+ Text = "Der Quellrahmen ist bereits Quelle einer Verkettung." ;
+ Text [ english ] = "The source is already source of a chain." ;
+ Text [ portuguese ] = "A moldura-fonte já é a fonte de uma ligação." ;
+ Text [ english_us ] = "The source frame is already the source of a link." ;
+ Text [ portuguese_brazilian ] = "Der Quellrahmen ist bereits Quelle einer Verkettung." ;
+ Text [ swedish ] = "Källramen är redan källa till en länk." ;
+ Text [ danish ] = "Kilderammen er allerede kilde til en sammenkædning." ;
+ Text [ italian ] = "La cornice sorgente è già sorgente di un collegamento." ;
+ Text [ spanish ] = "El marco origen ya es la fuente de un vínculo." ;
+ Text [ french ] = "Le cadre source est déjà la source d'un lien." ;
+ Text [ dutch ] = "Het bronkader is reeds basis van een koppeling." ;
+ Text[ chinese_simplified ] = "Õâ¸öÀ´Ô´¿òÒѾ­ÊÇÒ»¸öÁ´½ÓµÄÀ´Ô´¿ò¡£";
+ Text[ russian ] = "Èñõîäíàÿ ðàìêà óæå ÿâëÿåòñÿ èñòî÷íèêîì ñâÿçè.";
+ Text[ polish ] = "Ramka Ÿród³owa jest ju¿ Ÿród³em po³¹czenia.";
+ Text[ japanese ] = "Œ³‚̘g‚Í‚·‚łɂ‚Ȃ¬‚ÌŒ³‚Å‚·";
+ Text[ chinese_traditional ] = "³o­Ó¨Ó·½°T®Ø¤w¸g¬O¤@­Ó³sµ²ªº·½°T®Ø¡C";
+ Text[ arabic ] = ".ÅØÇÑ ÇáãÕÏÑ åæ ãÓÈÞÇð ãÕÏÑ ÇáÊÓáÓá";
+ Text[ dutch ] = "Het bronkader is reeds basis van een koppeling.";
+ Text[ chinese_simplified ] = "Õâ¸öÀ´Ô´¿òÒѾ­ÊÇÒ»¸öÁ´½ÓµÄÀ´Ô´¿ò¡£";
+ Text[ greek ] = "Ôï ðëáßóéï ðñïÝëåõóçò åßíáé Þäç ç ðñïÝëåõóç ìéáò óýíäåóçò.";
+ Text[ korean ] = "¼Ò½º ÇÁ·¹ÀÓÀº À̹̿¬°á ÀÇ ¼Ò½ºÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Kaynak çerçeve zaten bir baðlantý zincirinin kaynaðý.";
+ Text[ language_user1 ] = " ";
+};
+String STR_CHAIN_SELF
+{
+ Text = "Eine geschlossene Kette ist nicht möglich." ;
+ Text [ english ] = "a chain connot be closed." ;
+ Text [ portuguese ] = "Impossível uma sequência fechada." ;
+ Text [ english_us ] = "A closed link is not possible." ;
+ Text [ portuguese_brazilian ] = "Eine geschlossene Kette ist nicht möglich." ;
+ Text [ swedish ] = "Det är inte möjligt med en sluten kedja." ;
+ Text [ danish ] = "En lukket kæde er ikke mulig." ;
+ Text [ italian ] = "Un collegamento chiuso non è possibile." ;
+ Text [ spanish ] = "No es posible una secuencia cerrada." ;
+ Text [ french ] = "Une chaine fermée n'est pas possible." ;
+ Text [ dutch ] = "Een gesloten koppeling is niet mogelijk." ;
+ Text[ chinese_simplified ] = "Ò»¸ö·â±ÕʽµÄÁ´½ÓÊDz»¿ÉÄܵġ£";
+ Text[ russian ] = "Çàìêíóòàÿ öåïü íåâîçìîæíà.";
+ Text[ polish ] = "Zamkniête ³¹cze nie jest mo¿liwe.";
+ Text[ japanese ] = "•Â‚¶‚½‚‚Ȃª‚è‚Í•s‰Â”\\‚Å‚·";
+ Text[ chinese_traditional ] = "¤@­Ó«Ê³¬¦¡ªº³sµ²¬O¤£¥i¯àªº¡C";
+ Text[ arabic ] = "ÇáÓáÓáÉ ÇáãÛáÞÉ ÃãÑ ÛíÑ ããßä";
+ Text[ dutch ] = "Een gesloten koppeling is niet mogelijk.";
+ Text[ chinese_simplified ] = "Ò»¸ö·â±ÕʽµÄÁ´½ÓÊDz»¿ÉÄܵġ£";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá äçìéïõñãçèåß áëõóßäá ðïõ êëåßíåé.";
+ Text[ korean ] = "´ÝÈù ¿¬°áÀº ºÒ°¡´ÉÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Kapalý bir zincir oluþturulamaz.";
+ Text[ language_user1 ] = " ";
+};
+String STR_REDLINE_INSERT
+{
+ Text = "Eingefügt" ;
+ Text [ english ] = "Inserted" ;
+ Text [ portuguese ] = "Inserido" ;
+ Text [ english_us ] = "Inserted" ;
+ Text [ portuguese_brazilian ] = "Eingefügt" ;
+ Text [ swedish ] = "Infogad" ;
+ Text [ danish ] = "Indsat" ;
+ Text [ italian ] = "Inserito" ;
+ Text [ spanish ] = "Insertado" ;
+ Text [ french ] = "Inséré" ;
+ Text [ dutch ] = "Ingevoegd" ;
+ Text[ chinese_simplified ] = "ÒѾ­²åÈë";
+ Text[ russian ] = "Âñòàâëåí";
+ Text[ polish ] = "Wstawiony";
+ Text[ japanese ] = "‘}“üÏ‚Ý";
+ Text[ chinese_traditional ] = "¤w¸g´¡¤J";
+ Text[ arabic ] = "ãÏÑÌ";
+ Text[ language_user1 ] = " ";
+ Text[ dutch ] = "Ingevoegd";
+ Text[ chinese_simplified ] = "ÒѾ­²åÈë";
+ Text[ greek ] = "Åéóáãüìåíá";
+ Text[ korean ] = "»ðÀÔµÊ";
+ Text[ turkish ] = "Eklendi";
+};
+String STR_REDLINE_DELETE
+{
+ Text = "Gelöscht" ;
+ Text [ english ] = "Deleted" ;
+ Text [ portuguese ] = "Eliminado" ;
+ Text [ english_us ] = "Deleted" ;
+ Text [ portuguese_brazilian ] = "Gelöscht" ;
+ Text [ swedish ] = "Raderat" ;
+ Text [ danish ] = "Slettet" ;
+ Text [ italian ] = "Cancellato" ;
+ Text [ spanish ] = "Eliminado" ;
+ Text [ french ] = "Supprimé" ;
+ Text [ dutch ] = "Gewist" ;
+ Text[ chinese_simplified ] = "ÒѾ­É¾³ý";
+ Text[ russian ] = "Óäàëåí";
+ Text[ polish ] = "Usuniêty";
+ Text[ japanese ] = "íœÏ‚Ý";
+ Text[ chinese_traditional ] = "¤w¸g§R°£";
+ Text[ arabic ] = "ãÍÐæÝ";
+ Text[ dutch ] = "Gewist";
+ Text[ chinese_simplified ] = "ÒѾ­É¾³ý";
+ Text[ greek ] = "ÄéáãñáììÝíï";
+ Text[ korean ] = "»èÁ¦µÊ";
+ Text[ turkish ] = "Silindi";
+ Text[ language_user1 ] = " ";
+};
+String STR_REDLINE_FORMAT
+{
+ Text = "Attributiert" ;
+ Text [ english ] = "Formatted" ;
+ Text [ portuguese ] = "Formatado" ;
+ Text [ english_us ] = "Formatted" ;
+ Text [ portuguese_brazilian ] = "Attributiert" ;
+ Text [ swedish ] = "Attributerat" ;
+ Text [ danish ] = "Formateret" ;
+ Text [ italian ] = "Fomattato" ;
+ Text [ spanish ] = "Formateado" ;
+ Text [ french ] = "Mis en forme" ;
+ Text [ dutch ] = "Opgemaakt" ;
+ Text[ chinese_simplified ] = "ÒѾ­¸ñʽ»¯";
+ Text[ russian ] = "Îòôîðìàòèðîâàí";
+ Text[ polish ] = "sformatowany";
+ Text[ japanese ] = "‘®«";
+ Text[ chinese_traditional ] = "¤w¸g®æ¦¡¤Æ";
+ Text[ arabic ] = "ãäÓÞ";
+ Text[ language_user1 ] = " ";
+ Text[ dutch ] = "Opgemaakt";
+ Text[ chinese_simplified ] = "ÒѾ­¸ñʽ»¯";
+ Text[ greek ] = "ÌïñöïðïéçìÝíï";
+ Text[ korean ] = "¼­½Ä Àû¿ë";
+ Text[ turkish ] = "Faormatlandý";
+};
+String STR_REDLINE_TABLE
+{
+ Text = "Tabelle verändert" ;
+ Text [ english ] = "Table changed" ;
+ Text [ portuguese ] = "Tabela modificada" ;
+ Text [ english_us ] = "Table changed" ;
+ Text [ portuguese_brazilian ] = "Tabelle verändert" ;
+ Text [ swedish ] = "Tabell ändrad" ;
+ Text [ danish ] = "Tabel ændret" ;
+ Text [ italian ] = "Tabella modificata" ;
+ Text [ spanish ] = "Tabla modificada" ;
+ Text [ french ] = "Tableau modifié" ;
+ Text [ dutch ] = "Tabel veranderd" ;
+ Text[ chinese_simplified ] = "±í¸ñÒѱ»¸ü¸Ä";
+ Text[ russian ] = "Òàáëèöà èçìåíåíà";
+ Text[ polish ] = "Tabela zmieniona";
+ Text[ japanese ] = "•\\‚Í•ÏX‚³‚ê‚Ä‚¢‚Ü‚·";
+ Text[ chinese_traditional ] = "ªí®æ¤w³QÅܧó";
+ Text[ arabic ] = "ÊÛííÑ ÇáÌÏæá";
+ Text[ dutch ] = "Tabel veranderd";
+ Text[ chinese_simplified ] = "±í¸ñÒѱ»¸ü¸Ä";
+ Text[ greek ] = "¸÷ïõí ãßíåé áëëáãÝò óôïí ðßíáêá";
+ Text[ korean ] = "Ç¥°¡ ¹Ù²î¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Tablo deðiþtirildi";
+ Text[ language_user1 ] = " ";
+};
+String STR_REDLINE_FMTCOLL
+{
+ Text = "Absatzvorlage gesetzt" ;
+ Text [ english ] = "Paragraph Styles set" ;
+ Text[ italian ] = "Modello di paragrafo impostato";
+ Text[ portuguese_brazilian ] = "Paragraph Styles set";
+ Text[ portuguese ] = "Estilo de parágrafo definido";
+ Text[ danish ] = "Afsnitstypografi defineret";
+ Text[ french ] = "Le style de paragraphe a été défini";
+ Text[ swedish ] = "Styckeformatmall definierad";
+ Text[ dutch ] = "Alinea-opmaakprofiel gedefinieerd";
+ Text[ spanish ] = "Aplicado estilo de párrafo";
+ Text[ english_us ] = "Applied Paragraph Styles";
+ Text[ chinese_simplified ] = "É趨¶ÎÂäÑùʽ";
+ Text[ russian ] = "Óñòàíîâëåíû ñòèëè àáçàöåâ";
+ Text[ polish ] = "Ustaw styl akapitu";
+ Text[ japanese ] = "’i—Ž½À²Ù‚ÌÝ’è";
+ Text[ chinese_traditional ] = "³]©w¬q¸¨¼Ë¦¡";
+ Text[ arabic ] = "ÊÚííä äãØ ÇáÝÞÑÉ";
+ Text[ dutch ] = "Alinea-opmaakprofiel gedefinieerd";
+ Text[ chinese_simplified ] = "É趨¶ÎÂäÑùʽ";
+ Text[ greek ] = "Êáèïñßóôçêå ðñüôõðï ðáñáãñÜöïõ";
+ Text[ korean ] = "´Ü¶ô À¯Çü ÁýÇÕ";
+ Text[ turkish ] = "Paragraf þablonu belirlendi";
+ Text[ language_user1 ] = " ";
+};
+String STR_ENDNOTE
+{
+ Text = "Endnote: " ;
+ Text [ ENGLISH ] = "Endnote: " ;
+ Text [ portuguese ] = "Nota final: " ;
+ Text [ english_us ] = "Endnote: " ;
+ Text [ portuguese_brazilian ] = "Endnote: " ;
+ Text [ swedish ] = "Slutnot: " ;
+ Text [ danish ] = "Slutnote: " ;
+ Text [ italian ] = "Nota di chiusura: " ;
+ Text [ spanish ] = "Nota final: " ;
+ Text [ french ] = "Note de fin : " ;
+ Text [ dutch ] = "Eindnoot: " ;
+ Text[ chinese_simplified ] = "βע: ";
+ Text[ russian ] = "Êîíöåâàÿ ñíîñêà: ";
+ Text[ polish ] = "Przypis koñcowy: ";
+ Text[ japanese ] = "•¶––‹r’: ";
+ Text[ chinese_traditional ] = "§Àª`: ";
+ Text[ arabic ] = "ÊÚáíÞÇÊ ÎÊÇãíÉ: ";
+ Text[ dutch ] = "Eindnoot: ";
+ Text[ chinese_simplified ] = "βע: ";
+ Text[ greek ] = "Óçìåßùóç ôÝëïõò: ";
+ Text[ korean ] = "¹ÌÁÖ: ";
+ Text[ turkish ] = "Son not: ";
+ Text[ language_user1 ] = " ";
+};
+String STR_FTNNOTE
+{
+ Text = "Fußnote: " ;
+ Text [ ENGLISH ] = "Footnote: " ;
+ Text [ portuguese ] = "Nota de rodapé: " ;
+ Text [ english_us ] = "Footnote: " ;
+ Text [ portuguese_brazilian ] = "Fußnote: " ;
+ Text [ swedish ] = "Fotnot: " ;
+ Text [ danish ] = "Fodnote: " ;
+ Text [ italian ] = "Nota a piè pagina: " ;
+ Text [ spanish ] = "Nota al pie: " ;
+ Text [ french ] = "Note de bas de page : " ;
+ Text [ dutch ] = "Voetnoot: " ;
+ Text[ chinese_simplified ] = "×¢½Å: ";
+ Text[ russian ] = "Ñíîñêà: ";
+ Text[ polish ] = "Przypis dolny: ";
+ Text[ japanese ] = "‹r’: ";
+ Text[ chinese_traditional ] = "µù¸}: ";
+ Text[ arabic ] = "ÍæÇÔí ÓÝáíÉ: ";
+ Text[ dutch ] = "Voetnoot: ";
+ Text[ chinese_simplified ] = "×¢½Å: ";
+ Text[ greek ] = "Õðïóçìåßùóç: ";
+ Text[ korean ] = "°¢ÁÖ: ";
+ Text[ turkish ] = "Dipnot: ";
+ Text[ language_user1 ] = " ";
+};
+
+InfoBox MSG_READONLY_CONTENT
+{
+ MESSAGE = "Die Schreibmarke oder Selektion befindet sich an einer geschützten Position.\nEine Änderung kann deshalb nicht akzeptiert werden.";
+ MESSAGE [ English ] = "Readonly content may not be changed." ;
+ MESSAGE[ english_us ] = "Readonly content cannot be changed.\nNo modifications will be accepted";
+ MESSAGE[ portuguese ] = "A selecção encontra-se numa posição protegida.\nImpossível qualquer modificação.";
+ MESSAGE[ russian ] = "Ìåòêà çàïèñè èëè âûäàëåíèå íàõîäèòñÿ â çàùèùåííîé ïîçèöèè.\nÏîýòîìó èçìåíåíèÿ íå ïðèíèìàþòñÿ.";
+ MESSAGE[ dutch ] = "De cursor of de selectie bevindt zich op een schrijfbeveiligde positie.\nDe inhoud kan daarom niet worden gewijzigd.";
+ MESSAGE[ french ] = "Le contenu du signet ou de la sélection est en lecture seule.\nAucune modification permise.";
+ MESSAGE[ spanish ] = "La marca o selección se encuentra en una posición protegida.\nPor ello no se puede aceptar una modificación.";
+ MESSAGE[ italian ] = "La selezione si trova in una posizione protetta. \nPertanto non è possibile accettare nessuna modifica.";
+ MESSAGE[ danish ] = "Markøren befinder sig på en skrivebeskyttet position.\nÆndringer kan derfor ikke accepteres.";
+ MESSAGE[ swedish ] = "Markören eller markering befinner sig i en skrivskyddad position.\nEn ändring kan därför ej accepteras.";
+ MESSAGE[ polish ] = "Znacznik zapisu lub selekcji znajduje siê na chronionej pozycji.\nZmiany nie mo¿na zaakceptowaæ.";
+ MESSAGE[ portuguese_brazilian ] = "Readonly content may not be changed.";
+ MESSAGE[ japanese ] = "‚±‚͈͓̔͂ǂݎæ‚èê—p‚Å‚·B“à—e‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñB";
+ MESSAGE[ chinese_simplified ] = "ÊäÈë¹â±ê»òÑ¡ÖеÈÄÚÈÝÊÇÒ»¸öÊܱ£»¤µÄ¡£\nÎÞ·¨¸ü¸Ä·À¸²Ð´µÄÄÚÈÝ¡£";
+ MESSAGE[ chinese_traditional ] = "¿é¤J¥ú¼Ð©Î¿ï¨úªº¦ì¸m¬O¨ü«OÅ@ªº¡C\nµLªk­×§ï¨¾Âмgªº¤º®e¡C";
+ MESSAGE[ arabic ] = "ÊÞÚ ÚáÇãÉ ÇáßÊÇÈÉ Ãæ ÇáÊÍÏíÏ Ýí ãæÖÚ ãÍãí ÖÏ ÇáßÊÇÈÉ.\náåÐÇ áÇ íãßä ÞÈæá ÃíÉ ÊÛííÑÇÊ.";
+ MESSAGE[ dutch ] = "De cursor of de selectie bevindt zich op een schrijfbeveiligde positie.\nDe inhoud kan daarom niet worden gewijzigd.";
+ MESSAGE[ chinese_simplified ] = "ÊäÈë¹â±ê»òÑ¡ÖеÈÄÚÈÝÊÇÒ»¸öÊܱ£»¤µÄ¡£\nÎÞ·¨¸ü¸Ä·À¸²Ð´µÄÄÚÈÝ¡£";
+ MESSAGE[ greek ] = "Ç óÞìáíóç åããñáöÞò Þ ç åðéëïãÞ âñßóêåôáé óå ìßá ðñïóôáôåõüìåíç èÝóç.\nÃé áõôü ôï ëüãï äåí ìðïñïýí íá ãßíïõí äåêôÝò ïðïéåóäÞðïôå ôñïðïðïéÞóåéò.";
+ MESSAGE[ korean ] = "Àбâ Àü¿ë ³»¿ëÀº º¯°æµÉ ¼ö ¾ø½À´Ï´Ù.\n¼öÁ¤Àº Çã¿ëµÉ ¼ö ¾ø½À´Ï´Ù.";
+ MESSAGE[ turkish ] = "Salt okunur bir içerik deðiþtirilemez.\nYapýlan deðiþiklikler nu nedenle kabul edilmeyecek.";
+ MESSAGE[ language_user1 ] = " ";
+};
+
diff --git a/sw/source/ui/docvw/edtdd.cxx b/sw/source/ui/docvw/edtdd.cxx
new file mode 100644
index 000000000000..4b6c902709b0
--- /dev/null
+++ b/sw/source/ui/docvw/edtdd.cxx
@@ -0,0 +1,787 @@
+/*************************************************************************
+ *
+ * $RCSfile: edtdd.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _OUTLINER_HXX //autogen
+#include <svx/outliner.hxx>
+#endif
+#ifndef _SVDVMARK_HXX //autogen
+#include <svx/svdvmark.hxx>
+#endif
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+#ifndef _SOT_EXCHANGE_HXX //autogen
+#include <sot/exchange.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SOT_FORMATS_HXX //autogen
+#include <sot/formats.hxx>
+#endif
+
+
+#ifndef _FMTURL_HXX //autogen
+#include <fmturl.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _DATAEX_HXX
+#include <dataex.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _SWWDOCSH_HXX //autogen
+#include <wdocsh.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx>
+#endif
+
+
+extern BOOL bNoInterrupt;
+extern BOOL bFrmDrag;
+extern BOOL bDDTimerStarted;
+
+static BOOL bDroped = FALSE;
+BOOL bExecuteDrag = FALSE;
+
+void SwEditWin::StartDDTimer()
+{
+ aTimer.SetTimeoutHdl(LINK(this, SwEditWin, DDHandler));
+ aTimer.SetTimeout(480);
+ aTimer.Start();
+ bDDTimerStarted = TRUE;
+}
+
+
+void SwEditWin::StopDDTimer(SwWrtShell *pSh, const Point &rPt)
+{
+ aTimer.Stop();
+ bDDTimerStarted = FALSE;
+ if(!pSh->IsSelFrmMode())
+ (pSh->*pSh->fnSetCrsr)(&rPt,FALSE);
+ aTimer.SetTimeoutHdl(LINK(this,SwEditWin, TimerHandler));
+}
+
+
+void SwEditWin::StartExecuteDrag()
+{
+ if( !bExecuteDrag || bIsInDrag )
+ return;
+
+ bDroped = FALSE;
+ bIsInDrag = TRUE;
+
+ SwWrtShell *pSh = &rView.GetWrtShell();
+
+ BOOL bOldIdle = pSh->GetViewOptions()->IsIdle();
+ ((SwViewOption *)pSh->GetViewOptions())->SetIdle(FALSE);
+
+ if( pSh->IsSelFrmMode() )
+ pSh->ShowCrsr();
+
+ DropAction eAction;
+#ifdef MAC
+ const Region aRegion( pSh->GetCrsrRegion() );
+#endif
+
+ //Object bereits hier auf den Stack legen, weil es sich im DTor aus dem
+ //SwView austragen wurde und deshalb hinter dem else-Scope nicht mehr
+ //erreichbar waere.
+ SwDataExchangeRef aRef( new SwDataExchange( rView.GetWrtShell() ) );
+ SW_MOD()->pDragDrop = aRef;
+ aRef->Copy( TRUE );
+
+ DBG_TRACE("SW: Vor ExecuteDrag" );
+
+ // JP 02.10.96: aus ReadOnly-Docs darf nichts gemovt werden!
+ // JP 19.01.99: aus ReadOnly-Docs darf eigentlich nur kopiert werden!
+ USHORT nDragOptions = DRAG_ALL;
+ if( ( rView.GetDocShell() && rView.GetDocShell()->IsReadOnly() ) ||
+ rView.GetWrtShell().HasReadonlySel() )
+ nDragOptions = DRAG_COPYABLE;
+
+ eAction = aRef->ExecuteDrag( this, Pointer( POINTER_MOVEDATA ),
+ Pointer( POINTER_COPYDATA ),
+ nDragOptions
+#ifdef MAC
+ , &aRegion
+#endif
+ );
+
+ DBG_TRACE("SW: Nach ExecuteDrag" );
+
+ //Und noch die letzten Nacharbeiten damit alle Stati stimmen.
+ if ( eAction == DROP_MOVE || eAction == DROP_DISCARD )
+ {
+ if ( !bDroped )
+ {
+ //Es wurde auserhalb des Writers gedroped. Wir muessen noch
+ //loeschen.
+
+ pSh->StartAllAction();
+ pSh->StartUndo( UIUNDO_DRAG_AND_MOVE );
+ if ( pSh->IsTableMode() )
+ pSh->DeleteTblSel();
+ else
+ {
+ if ( !(pSh->IsSelFrmMode() || pSh->IsObjSelected()) )
+ //SmartCut, eines der Blanks mitnehmen.
+ pSh->IntelligentCut( pSh->GetSelectionType(), TRUE );
+ pSh->DelRight();
+ }
+ pSh->EndUndo( UIUNDO_DRAG_AND_MOVE );
+ pSh->EndAllAction();
+ }
+ else
+ {
+ const int nSelection = pSh->GetSelectionType();
+ if( ( SwWrtShell::SEL_FRM | SwWrtShell::SEL_GRF |
+ SwWrtShell::SEL_OLE | SwWrtShell::SEL_DRW ) & nSelection )
+ {
+ pSh->EnterSelFrmMode();
+ }
+ }
+ }
+ if ( pSh->IsSelFrmMode() )
+ pSh->HideCrsr();
+ else if ( DROP_NONE != eAction )
+ pSh->ShowCrsr();
+ else
+ {
+ //Muss wohl sein weil gescrollt wurde und ?...?
+ pSh->StartAction();
+ pSh->EndAction();
+ }
+ aTimer.SetTimeoutHdl( LINK(this,SwEditWin, TimerHandler) );
+ ((SwViewOption *)pSh->GetViewOptions())->SetIdle(bOldIdle);
+ bIsInDrag = FALSE;
+
+ DBG_TRACE("SW: Fertig mit D&D" );
+}
+
+
+void SwEditWin::DropCleanup()
+{
+ SwWrtShell &rSh = rView.GetWrtShell();
+
+ // Stati zuruecksetzen
+ bNoInterrupt = FALSE;
+ if ( bOldIdleSet )
+ {
+ ((SwViewOption*)rSh.GetViewOptions())->SetIdle( bOldIdle );
+ bOldIdleSet = FALSE;
+ }
+ if ( pUserMarker )
+ CleanupDropUserMarker();
+ else
+ rSh.UnSetVisCrsr();
+
+}
+
+void SwEditWin::CleanupDropUserMarker()
+{
+ if ( pUserMarker )
+ {
+ delete pUserMarker, pUserMarker = 0;
+ pUserMarkerObj = 0;
+ }
+}
+
+
+//Messehack (MA,MBA)
+void lcl_SelectShellForDrop( SwView &rView )
+{
+ if ( !rView.GetCurShell() )
+ rView.SelectShell();
+}
+
+BOOL SwEditWin::Drop( const DropEvent& rEvt )
+{
+ ::lcl_SelectShellForDrop( GetView() );
+ DropCleanup();
+
+ //Ein Drop auf eine offene OutlinerView geht uns nichts an (siehe auch QueryDrop)
+ SwWrtShell &rSh = rView.GetWrtShell();
+ SdrObject *pObj = 0;
+ const Point aDocPt( PixelToLogic( rEvt.GetPosPixel() ) );
+ rSh.GetObjCntType( aDocPt, pObj );
+ if( pObj )
+ {
+ OutlinerView* pOLV = rSh.GetDrawView()->GetTextEditOutlinerView();
+ if ( pOLV )
+ {
+ Rectangle aRect( pOLV->GetOutputArea() );
+ aRect.Union( pObj->GetLogicRect() );
+ const Point aPos = pOLV->GetWindow()->PixelToLogic(rEvt.GetPosPixel());
+ if ( aRect.IsInside(aPos) )
+ {
+ rSh.StartAllAction();
+ BOOL bRet = pOLV->Drop( rEvt );
+ rSh.EndAllAction();
+ return bRet;
+ }
+ }
+ }
+
+ BOOL bRet = rEvt.GetData() &&
+ 0 != SwDataExchange::PasteData( *rEvt.GetData(), rSh,
+ nDropAction, nDropFormat,
+ nDropDestination, &rEvt );
+
+ if ( bRet )
+ {
+ if ( SW_MOD()->pDragDrop )
+ bDroped = TRUE; //Bei internem D&D nicht mehr aufraeumen!
+ }
+ else
+ bRet = OFF_APP()->Drop( (DropEvent&)rEvt );
+ return bRet;
+}
+
+
+BOOL SwEditWin::QueryDrop( DropEvent& rEvt )
+{
+ if ( rEvt.IsLeaveWindow() )
+ {
+ DropCleanup();
+ return TRUE;
+ }
+
+ if(rView.GetDocShell()->IsReadOnly())
+ return FALSE;
+
+ SwWrtShell &rSh = rView.GetWrtShell();
+
+ //Ein bischen scrollen?
+ Point aPixPt( rEvt.GetPosPixel() );
+ Point aPoint;
+ Rectangle aWin( aPoint, GetOutputSizePixel() );
+ Rectangle aWin2( aWin );
+ aWin.Left() += 10;
+ aWin.Top() += 10;
+ aWin.Right() -= 10;
+ aWin.Bottom()-= 10;
+
+ if ( !aWin.IsInside( aPixPt ) )
+ {
+ if ( !bOldIdleSet )
+ {
+ bOldIdle = rSh.GetViewOptions()->IsIdle();
+ ((SwViewOption *)rSh.GetViewOptions())->SetIdle(FALSE);
+ bOldIdleSet = TRUE;
+ }
+ CleanupDropUserMarker();
+
+ aWin2.Left() += 5;
+ aWin2.Top() += 5;
+ aWin2.Right() -= 5;
+ aWin2.Bottom()-= 5;
+
+ long x = 0;
+ if ( aPixPt.Y() < aWin2.Top() )
+ x = aPixPt.Y() = -5;
+ else if ( aPixPt.Y() > aWin2.Bottom() )
+ x = aPixPt.Y() += 10;
+ if ( aPixPt.X() < aWin2.Left() )
+ x = aPixPt.X() = -5;
+ else if ( aPixPt.X() > aWin2.Right() )
+ x = aPixPt.X() += 10;
+ Point aDocPt( PixelToLogic( aPixPt ) );
+ aDocPt = rSh.GetCntntPos( aDocPt, x > 0 );
+ rSh.SwCrsrShell::SetVisCrsr( aDocPt );
+ return TRUE;
+ }
+
+ if ( bOldIdleSet )
+ {
+ ((SwViewOption *)rSh.GetViewOptions())->SetIdle( bOldIdle );
+ bOldIdleSet = FALSE;
+ }
+
+ //Drop auf Selektion ist nicht statthaft.
+ //JP 19.01.99: Drop in geschuetzte Bereiche ist nicht statthaft
+ const Point aDocPt( PixelToLogic( aPixPt ) );
+ if( rSh.ChgCurrPam( aDocPt ) || rSh.IsOverReadOnlyPos( aDocPt ) )
+ return FALSE;
+
+ //Auf was wollen wir denn gerade droppen?
+ nDropDestination = 0;
+
+ BOOL bDropCursor = TRUE; //UserMarker oder DropCursor anzeigen.
+
+ SdrObject *pObj = NULL;
+ const ObjCntType eType = rSh.GetObjCntType( aDocPt, pObj );
+
+ //Drop auf OutlinerView (TextEdit im Drawing) soll diese selbst entscheiden!
+ if ( pObj )
+ {
+ OutlinerView* pOLV = rSh.GetDrawView()->GetTextEditOutlinerView();
+ if ( pOLV )
+ {
+ Rectangle aRect( pOLV->GetOutputArea() );
+ aRect.Union( pObj->GetLogicRect() );
+ const Point aPos = pOLV->GetWindow()->PixelToLogic(aPixPt);
+ if ( aRect.IsInside(aPos) )
+ return pOLV->QueryDrop( rEvt );
+ }
+ }
+
+ //Sonst etwas aus der DrawingEngine getroffen?
+ if ( OBJCNT_NONE != eType )
+ {
+ switch ( eType )
+ {
+ case OBJCNT_GRF:
+ {
+ BOOL bLink,
+ bIMap = 0 != rSh.GetFmtFromObj( aDocPt )->GetURL().GetMap();
+ String aDummy;
+ rSh.GetGrfAtPos( aDocPt, aDummy, bLink );
+ if ( bLink && bIMap )
+ nDropDestination = EXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP;
+ else if ( bLink )
+ nDropDestination = EXCHG_DEST_DOC_LNKD_GRAPHOBJ;
+ else if ( bIMap )
+ nDropDestination = EXCHG_DEST_DOC_GRAPH_W_IMAP;
+ else
+ nDropDestination = EXCHG_DEST_DOC_GRAPHOBJ;
+ }
+ break;
+ case OBJCNT_FLY:
+ if( rSh.GetView().GetDocShell()->ISA(SwWebDocShell) )
+ nDropDestination = EXCHG_DEST_DOC_TEXTFRAME_WEB;
+ else
+ nDropDestination = EXCHG_DEST_DOC_TEXTFRAME;
+ break;
+ case OBJCNT_OLE: nDropDestination = EXCHG_DEST_DOC_OLEOBJ; break;
+ case OBJCNT_CONTROL: /* no Action avail */
+ case OBJCNT_SIMPLE: nDropDestination = EXCHG_DEST_DOC_DRAWOBJ; break;
+ case OBJCNT_URLBUTTON: nDropDestination = EXCHG_DEST_DOC_URLBUTTON; break;
+ case OBJCNT_GROUPOBJ: nDropDestination = EXCHG_DEST_DOC_GROUPOBJ; break;
+
+ default: ASSERT( !this, "new ObjectType?" );
+ }
+ }
+ if ( !nDropDestination )
+ {
+/*
+JP 13.07.98: Bug 52637: es wird ein URL-Feld erkannt also werden nur die
+ Inhalte zugelassen. Das ist aber bestimmt nicht das
+ gewollte.
+ SwContentAtPos aCntntAtPos( SwContentAtPos::SW_INETATTR );
+ if ( rSh.GetContentAtPos( aDocPt, aCntntAtPos, FALSE ) )
+ nDropDestination = EXCHG_DEST_DOC_URLFIELD;
+ else
+*/
+ if( rSh.GetView().GetDocShell()->ISA(SwWebDocShell) )
+ nDropDestination = EXCHG_DEST_SWDOC_FREE_AREA_WEB;
+ else
+ nDropDestination = EXCHG_DEST_SWDOC_FREE_AREA;
+
+ }
+ else
+ bDropCursor = FALSE;
+
+ USHORT nEventAction, nUserOpt = EXCHG_IN_ACTION_DEFAULT;
+ if( !rEvt.IsDefaultAction() )
+ nUserOpt = rEvt.GetAction();
+
+ nDropAction = SotExchange::GetExchangeAction( *rEvt.GetData(),
+ nDropDestination, rEvt.GetSourceOptions(),
+ nUserOpt, nDropFormat, nEventAction );
+
+ BOOL bRet = TRUE;
+ if( EXCHG_INOUT_ACTION_NONE != nDropAction )
+ {
+ //Bei den default Aktionen wollen wir noch ein bischen mitreden.
+ SwModule *pMod = SW_MOD();
+ if ( pMod->pDragDrop )
+ {
+ BOOL bCleanup = FALSE;
+ //Zeichenobjekte in Kopf-/Fusszeilen sind nicht erlaubt
+ SwWrtShell *pSrcSh = pMod->pDragDrop->GetShell();
+ if( (pSrcSh->GetSelFrmType() == FRMTYPE_DRAWOBJ) &&
+ (rSh.GetFrmType( &aDocPt, FALSE ) & (FRMTYPE_HEADER|FRMTYPE_FOOTER)) )
+ {
+ bCleanup = TRUE;
+ }
+ // keine positionsgeschuetzten Objecte verschieben!
+ else if( DROP_MOVE == rEvt.GetAction() &&
+ pSrcSh->IsSelObjProtected( FLYPROTECT_POS ) )
+ {
+ bCleanup = TRUE;
+ }
+ else if( rEvt.IsDefaultAction() )
+ {
+ // JP 13.08.98: internes Drag&Drop: bei gleichem Doc ein Move
+ // ansonten ein Copy - Task 54974
+ nEventAction = pSrcSh->GetDoc() == rSh.GetDoc()
+ ? DROP_MOVE
+ : DROP_COPY;
+ }
+ if ( bCleanup )
+ {
+ CleanupDropUserMarker();
+ rSh.UnSetVisCrsr();
+ return FALSE;
+ }
+ }
+ else
+ {
+ //D&D von ausserhalb des SW soll per default ein Copy sein.
+ if( EXCHG_IN_ACTION_DEFAULT == nEventAction &&
+ DROP_MOVE == rEvt.GetAction() )
+ nEventAction = DROP_COPY;
+
+ if( (SOT_FORMATSTR_ID_SBA_FIELDDATAEXCHANGE == nDropFormat &&
+ EXCHG_IN_ACTION_LINK != nDropAction) ||
+ SOT_FORMATSTR_ID_SBA_CTRLDATAEXCHANGE == nDropFormat )
+ {
+ SdrMarkView* pMView = PTR_CAST( SdrMarkView, rSh.GetDrawView() );
+ if( pMView && !pMView->IsDesignMode() )
+ return FALSE;
+ }
+
+ }
+
+ if ( EXCHG_IN_ACTION_DEFAULT != nEventAction )
+ rEvt.SetAction( (DropAction)nEventAction );
+
+ if ( bDropCursor )
+ {
+ CleanupDropUserMarker();
+ rSh.SwCrsrShell::SetVisCrsr( aDocPt );
+ }
+ else
+ {
+ rSh.UnSetVisCrsr();
+ if ( !pUserMarker )
+ pUserMarker = new SdrViewUserMarker( rSh.GetDrawView() );
+ if ( pUserMarkerObj != pObj )
+ {
+ pUserMarkerObj = pObj;
+ pUserMarker->SetXPolyPolygon( pUserMarkerObj,
+ rSh.GetDrawView()->GetPageView(
+ rSh.GetDrawView()->GetModel()->GetPage(0)));
+ pUserMarker->Show();
+ }
+ }
+ return TRUE;
+ }
+
+ CleanupDropUserMarker();
+ rSh.UnSetVisCrsr();
+ return OFF_APP()->QueryDrop( rEvt );
+}
+
+
+IMPL_LINK( SwEditWin, DDHandler, Timer *, EMPTYARG )
+{
+ bDDTimerStarted = FALSE;
+ aTimer.Stop();
+ aTimer.SetTimeout(240);
+ bMBPressed = FALSE;
+ ReleaseMouse();
+ bFrmDrag = FALSE;
+
+ if ( rView.GetViewFrame() && rView.GetViewFrame()->GetFrame() &&
+ !rView.GetViewFrame()->GetFrame()->TransferForReplaceInProgress() )
+ {
+ bExecuteDrag = TRUE;
+ StartExecuteDrag();
+ }
+ return 0;
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.174 2000/09/18 16:05:23 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.173 1999/05/11 19:50:40 JP
+ Task #66127#: Methoden rund ums Lineal verbessert und Schnittstellen veraendert/erweitert
+
+
+ Rev 1.172 11 May 1999 21:50:40 JP
+ Task #66127#: Methoden rund ums Lineal verbessert und Schnittstellen veraendert/erweitert
+
+ Rev 1.171 25 Jan 1999 16:11:42 JP
+ Bug #61109#: QueryDrop - DropModifier nicht ueberbuegeln
+
+ Rev 1.170 19 Jan 1999 22:57:28 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.169 11 Dec 1998 11:46:02 JP
+ Task #58217#: WebDocShell als D&D Ziel erkennen
+
+ Rev 1.168 27 Nov 1998 14:50:42 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.167 17 Nov 1998 22:17:06 JP
+ Task #59398#: ClipboardId Umstellungen
+
+ Rev 1.166 12 Nov 1998 13:31:08 JP
+ Task #59398# Umstellung von SotFormatStringId
+
+ Rev 1.165 02 Sep 1998 12:10:46 MA
+ #55895# ctrldataexchange
+
+ Rev 1.164 13 Aug 1998 14:20:14 JP
+ Bug #54974# QueryDrop - bei DefaultAction per internem Format im eigenen Doc immer move, sonst copy
+
+ Rev 1.163 16 Jul 1998 19:21:22 JP
+ Bug #53113# DatenbankControls nur im DesignModus einfuegen
+
+ Rev 1.162 08 Jul 1998 14:17:32 JP
+ das richtige define fuer supd benutzen
+
+ Rev 1.161 08 Jul 1998 12:24:36 JP
+ neues Drag&Drop ab Version 5.0
+
+ Rev 1.160 04 Jul 1998 16:06:24 JP
+ Umstellung auf Tabelle weiergemacht
+
+ Rev 1.159 27 Jun 1998 18:44:00 JP
+ Umstellung auf Tabelle weitergemacht
+
+ Rev 1.158 25 Jun 1998 14:12:50 JP
+ SvDataObject -> SotObject
+
+ Rev 1.157 16 Jun 1998 17:14:42 OM
+ #51085# Draw-Objekte nicht auf die Wiese droppen
+
+ Rev 1.156 16 Jun 1998 16:35:44 OM
+ #51085# Draw-Objekte nicht auf die Wiese droppen
+
+ Rev 1.155 09 Jun 1998 15:31:32 OM
+ VC-Controls entfernt
+
+ Rev 1.154 27 Apr 1998 21:15:26 JP
+ Bug #49842#: Drop - bei Grafiken den FileNamen in eine URL wandeln
+
+ Rev 1.153 31 Mar 1998 17:30:22 MA
+ erstmal abgebrochen, neues DD
+
+ Rev 1.152 26 Mar 1998 18:02:54 MA
+ ein paar vorb. D&D
+
+ Rev 1.151 20 Feb 1998 16:18:20 MA
+ headerfiles gewandert
+
+ Rev 1.150 19 Feb 1998 08:53:20 OK
+ NEW: include mieclip.hxx
+
+ Rev 1.149 07 Jan 1998 18:46:26 MIB
+ 5.0 Fileformat
+
+ Rev 1.148 28 Nov 1997 18:02:26 MA
+ includes
+
+ Rev 1.147 25 Nov 1997 10:33:00 MA
+ includes
+
+ Rev 1.146 22 Oct 1997 16:04:52 OM
+ Farbendrop
+
+ Rev 1.145 17 Oct 1997 13:24:02 JP
+ neu: MSE40-HTML-Format erkennen/lesen
+
+ Rev 1.144 15 Oct 1997 14:03:44 OS
+ lcl_SelectShellForDrop - SelectShell() nur bei Bedarf rufen #44690#
+
+ Rev 1.143 17 Sep 1997 11:26:04 MA
+ #43801# precedence nicht beachtet
+
+ Rev 1.142 17 Sep 1997 09:57:22 OS
+ Nummer 3: pSdrView pruefen!
+
+ Rev 1.141 10 Sep 1997 10:50:08 JP
+ neu: Undo fuers kopieren von Tabellen & in Tabellen
+
+ Rev 1.140 08 Sep 1997 11:02:36 MA
+ includes
+
+ Rev 1.139 05 Sep 1997 13:10:48 OM
+ #42027# D&D auf DrawText-Objekte
+
+ Rev 1.138 02 Sep 1997 13:20:48 OS
+ includes
+
+ Rev 1.137 01 Sep 1997 13:15:38 OS
+ DLL-Umstellung
+
+ Rev 1.136 28 Aug 1997 10:29:56 JP
+ Bug #42430#: Drop - bei INetAttr. den SourceCursor auf das Attribut setzen
+
+ Rev 1.135 15 Aug 1997 12:09:54 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.134 11 Aug 1997 20:06:16 HJS
+ includes
+
+ Rev 1.133 11 Aug 1997 10:08:40 MH
+ chg: header
+
+ Rev 1.132 17 Jul 1997 19:06:32 MA
+ #41801# File zur absoluten URL verarbeiten
+
+ Rev 1.131 19 Jun 1997 11:38:52 MA
+ #40833# Drop_Link, sdw nicht einfuegen bei sw/web
+
+ Rev 1.130 09 Jun 1997 20:08:48 JP
+ SwFilterNms/SwFilterNm entfernt
+
+ Rev 1.129 29 May 1997 14:31:14 MA
+ fix: Grafik nur verknuepft fuer WebDocShell
+
+ Rev 1.128 16 May 1997 15:07:42 MH
+ add: defines wg. CLOOKS
+
+ Rev 1.127 25 Apr 1997 13:00:46 MA
+ #39306# ggf. den UserMarker loeschen
+
+ Rev 1.126 14 Apr 1997 17:25:00 MH
+ add: header
+
+ Rev 1.125 10 Apr 1997 16:05:18 TRI
+ includes
+
+ Rev 1.124 08 Apr 1997 10:31:46 OM
+ Fehlende Includes
+
+ Rev 1.123 08 Apr 1997 09:55:34 NF
+ includes...
+
+ Rev 1.122 21 Mar 1997 13:53:18 MA
+ #36900# D&D offset beseitigt
+
+ Rev 1.121 16 Mar 1997 13:44:16 MA
+ fix: Kein D&D wenn der Frame schon klinisch tot ist
+
+ Rev 1.120 07 Mar 1997 09:47:24 MA
+ Neue D&D Moeglichkeiten, Handling verbessert
+
+ Rev 1.119 23 Feb 1997 22:03:10 MA
+ fix: Drop von Grafik auf Grafik reanimiert
+
+ Rev 1.118 07 Feb 1997 12:05:44 OS
+ Navigator benutzt eigenes Drag-Format
+
+ Rev 1.117 05 Feb 1997 19:13:18 JP
+ ExcuteDrag: Modus der WrtShell setzen, wenn Flys selektiert sind
+
+ Rev 1.116 19 Dec 1996 16:12:18 MA
+ fix: Crsr wieder umschalten
+
+ Rev 1.115 28 Nov 1996 14:20:06 MA
+ fix: Drop per Link auch bei einem File
+
+ Rev 1.114 20 Nov 1996 16:58:42 MA
+ #33444# QueryDrop, Pos fuer Objekte anpassen
+
+ Rev 1.113 18 Oct 1996 16:57:56 MA
+ Messehack: eine hoffentlich kurzlebige Freundschaft
+
+ Rev 1.112 15 Oct 1996 12:14:20 MA
+ new: Drawing per Clipboard
+
+ Rev 1.111 02 Oct 1996 13:50:52 JP
+ StartExecuteDrag: aus ReadOnly-Docs darf nur kopiert werden!
+
+ Rev 1.110 16 Sep 1996 14:00:58 JP
+ Drop: INetBookmark am URL-Button setzen
+
+-------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx
new file mode 100644
index 000000000000..7afe4e36e40d
--- /dev/null
+++ b/sw/source/ui/docvw/edtwin.cxx
@@ -0,0 +1,4222 @@
+/*************************************************************************
+ *
+ * $RCSfile: edtwin.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <tools/list.hxx>
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SV_HELP_HXX //autogen
+#include <vcl/help.hxx>
+#endif
+#ifndef _SV_GRAPH_HXX //autogen
+#include <vcl/graph.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SV_KEYCODES_HXX //autogen
+#include <vcl/keycodes.hxx>
+#endif
+#ifndef _VCL_CMDEVT_HXX //autogen
+#include <vcl/cmdevt.hxx>
+#endif
+#ifndef _VCL_CMDEVT_HXX //autogen
+#include <vcl/cmdevt.hxx>
+#endif
+#ifndef _VCL_CMDEVT_H //autogen
+#include <vcl/cmdevt.h>
+#endif
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+#ifndef _ARGS_HXX //autogen
+#include <svtools/args.hxx>
+#endif
+#ifndef _SFXMACITEM_HXX //autogen
+#include <svtools/macitem.hxx>
+#endif
+#ifndef __SBX_SBXVARIABLE_HXX //autogen
+#include <svtools/sbxvar.hxx>
+#endif
+#ifndef _SBXCLASS_HXX //autogen
+#include <svtools/sbx.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _WORDSEL_HXX
+#include <svtools/wordsel.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SVDVMARK_HXX //autogen
+#include <svx/svdvmark.hxx>
+#endif
+#ifndef _SVDHDL_HXX //autogen
+#include <svx/svdhdl.hxx>
+#endif
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+#ifndef _MySVXACORR_HXX //autogen
+#include <svx/svxacorr.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVX_FLDITEM_HXX
+# ifndef ITEMID_FIELD
+# ifndef _EEITEM_HXX //autogen
+# include <svx/eeitem.hxx>
+# endif
+# define ITEMID_FIELD EE_FEATURE_FIELD // wird fuer #include <flditem.hxx> benoetigt
+# endif
+# ifndef _SVX_FLDITEM_HXX //autogen
+# include <svx/flditem.hxx>
+# endif
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _OUTLINER_HXX //autogen
+#include <svx/outliner.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_PROTITEM_HXX //autogen
+#include <svx/protitem.hxx>
+#endif
+#ifndef _OFAACCFG_HXX //autogen
+#include <offmgr/ofaaccfg.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SIMDLL0_HXX //autogen
+#include <sim2/simdll0.hxx>
+#endif
+#ifndef _SIMDLL_HXX //autogen
+#include <sim2/simdll.hxx>
+#endif
+
+
+#ifndef _EDTWIN_HXX //autogen
+#include <edtwin.hxx>
+#endif
+#ifndef _SWVIEW_HXX //autogen
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX //autogen
+#include <wrtsh.hxx>
+#endif
+#ifndef _FLDBAS_HXX //autogen
+#include <fldbas.hxx>
+#endif
+#ifndef _SWMODULE_HXX //autogen
+#include <swmodule.hxx>
+#endif
+#ifndef _SWDOCSH_HXX //autogen
+#include <docsh.hxx>
+#endif
+#ifndef _VIEWOPT_HXX //autogen
+#include <viewopt.hxx>
+#endif
+#ifndef _SW_DRAWBASE_HXX //autogen
+#include <drawbase.hxx>
+#endif
+#ifndef _SW_DSELECT_HXX //autogen
+#include <dselect.hxx>
+#endif
+#ifndef _SWTEXTSH_HXX //autogen
+#include <textsh.hxx>
+#endif
+#ifndef _SHDWCRSR_HXX
+#include <shdwcrsr.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+#ifndef _MODOPT_HXX //autogen
+#include <modcfg.hxx>
+#endif
+#ifndef _FMTCOL_HXX //autogen
+#include <fmtcol.hxx>
+#endif
+#ifndef _SWWVIEW_HXX //autogen
+#include <wview.hxx>
+#endif
+#ifndef _SWLISTSH_HXX //autogen
+#include <listsh.hxx>
+#endif
+#ifndef _GLOSLST_HXX //autogen
+#include <gloslst.hxx>
+#endif
+#ifndef SW_INPUTWIN_HXX //autogen
+#include <inputwin.hxx>
+#endif
+#ifndef _GLOSHDL_HXX //autogen
+#include <gloshdl.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx>
+#endif
+#ifndef _SWDRWTXTSH_HXX //autogen
+#include <drwtxtsh.hxx>
+#endif
+#ifndef _FCHRFMT_HXX //autogen
+#include <fchrfmt.hxx>
+#endif
+#ifndef _ROMENU_HXX
+#include <romenu.hxx>
+#endif
+#ifndef _INITUI_HXX
+#include <initui.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _EXTINPUT_HXX
+#include <extinput.hxx>
+#endif
+#ifndef _ACMPLWRD_HXX
+#include <acmplwrd.hxx>
+#endif
+
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _DOCVW_HRC
+#include <docvw.hrc>
+#endif
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Globals
+ --------------------------------------------------------------------*/
+
+extern BOOL bNoInterrupt; // in mainwn.cxx
+
+//Normalerweise wird im MouseButtonUp eine Selektion aufgehoben wenn die
+//Selektion nicht gerade aufgezogen wird. Leider wird im MouseButtonDown
+//bei doppel-/dreifach-Klick Selektiert, diese Selektion wird in dem Handler
+//komplett abgeschlossen und kann deshalb im Up nicht mehr unterschieden
+//werden. Um dies Aufzuloese wird bHoldSelection im Down gesetzt und im
+//Up ausgewertet.
+static BOOL bHoldSelection = FALSE;
+
+BOOL bFrmDrag = FALSE;
+BOOL bValidCrsrPos = FALSE;
+BOOL bModePushed = FALSE;
+BOOL bDDTimerStarted = FALSE;
+BOOL bFlushCharBuffer = FALSE;
+BOOL SwEditWin::bReplaceQuote = FALSE;
+BOOL bDDINetAttr = FALSE;
+SdrHdlKind eSdrMoveHdl = HDL_USER;
+
+QuickHelpData* SwEditWin::pQuickHlpData = 0;
+
+long SwEditWin::nDDStartPosY = 0;
+long SwEditWin::nDDStartPosX = 0;
+Color SwEditWin::aTextBackColor(COL_YELLOW);
+Color SwEditWin::aTextColor(COL_RED);
+BOOL SwEditWin::bTransparentBackColor = FALSE; // Hintergrund nicht transparent
+
+
+extern BOOL bExecuteDrag;
+
+SfxShell* lcl_GetShellFromDispatcher( SwView& rView, TypeId nType );
+
+DBG_NAME(edithdl);
+
+class SwAnchorMarker
+{
+ SdrHdl* pHdl;
+ Point aLastPos;
+public:
+ SwAnchorMarker( SdrHdl* pH ) :
+ pHdl( pH ), aLastPos( pH->GetPos() ) {}
+ const Point& GetLastPos() const { return aLastPos; }
+ void SetLastPos( const Point& rNew ) { aLastPos = rNew; }
+ void SetPos( const Point& rNew ) { pHdl->SetPos( rNew ); }
+};
+
+struct QuickHelpData
+{
+ SvStringsISortDtor aArr;
+ USHORT* pAttrs;
+ CommandExtTextInputData* pCETID;
+ ULONG nTipId;
+ USHORT nLen, nCurArrPos;
+ BOOL bClear : 1, bChkInsBlank : 1, bIsTip : 1, bIsAutoText : 1;
+
+ QuickHelpData() : pCETID( 0 ), pAttrs( 0 ) { ClearCntnt(); }
+
+ void Move( QuickHelpData& rCpy );
+ void ClearCntnt();
+ void Start( SwWrtShell& rSh, USHORT nWrdLen );
+ void Stop( SwWrtShell& rSh );
+
+ BOOL HasCntnt() const { return aArr.Count() && 0 != nLen; }
+
+ void Inc( BOOL bEndLess )
+ {
+ if( ++nCurArrPos >= aArr.Count() )
+ nCurArrPos = (bEndLess && !bIsAutoText )? 0 : nCurArrPos-1;
+ }
+ void Dec( BOOL bEndLess )
+ {
+ if( 0 == nCurArrPos-- )
+ nCurArrPos = (bEndLess && !bIsAutoText ) ? aArr.Count()-1 : 0;
+ }
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Minimale Bewegung Zittern vermeiden
+ --------------------------------------------------------------------*/
+
+#define HIT_PIX 2 /* Hit-Toleranz in Pixel */
+#define MIN_MOVE 4
+
+inline BOOL IsMinMove(const Point &rStartPos, const Point &rLPt)
+{
+ return Abs(rStartPos.X() - rLPt.X()) > MIN_MOVE ||
+ Abs(rStartPos.Y() - rLPt.Y()) > MIN_MOVE;
+}
+
+/*--------------------------------------------------------------------
+ JP 30.07.98: fuer MouseButtonDown - feststellen, ob ein DrawObject
+ und KEIN SwgFrame getroffen wurde! Shift/Ctrl sollen
+ nur bei DrawObjecte zum Selektieren fuehren, bei SwgFlys
+ ggfs zum ausloesen von Hyperlinks (DownLoad/NewWindow!)
+ --------------------------------------------------------------------*/
+inline BOOL IsDrawObjSelectable( const SwWrtShell& rSh, const Point& rPt )
+{
+ BOOL bRet = TRUE;
+ SdrObject* pObj;
+ switch( rSh.GetObjCntType( rPt, pObj ))
+ {
+ case OBJCNT_NONE:
+ case OBJCNT_FLY:
+ case OBJCNT_GRF:
+ case OBJCNT_OLE:
+ bRet = FALSE;
+ break;
+ }
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Pointer umschalten
+ --------------------------------------------------------------------*/
+
+
+void SwEditWin::UpdatePointer(const Point &rLPt, USHORT nModifier )
+{
+ SwWrtShell &rSh = rView.GetWrtShell();
+ if( pApplyTempl )
+ {
+ PointerStyle eStyle = POINTER_FILL;
+ if( rSh.IsOverReadOnlyPos( rLPt ))
+ {
+ if( pUserMarker )
+ DELETEZ( pUserMarker );
+// rSh.SwCrsrShell::UnSetVisCrsr( rLPt );
+ eStyle = POINTER_NOTALLOWED;
+ }
+ else
+ {
+ SwRect aRect;
+ SwRect* pRect = &aRect;
+ const SwFrmFmt* pFmt = 0;
+ if(!pApplyTempl->nColor &&
+ pApplyTempl->eType == SFX_STYLE_FAMILY_FRAME &&
+ 0 !=(pFmt = rSh.GetFmtFromObj( rLPt, &pRect )) &&
+ PTR_CAST(SwFlyFrmFmt, pFmt))
+ {
+ //Highlight fuer Rahmen anwerfen
+ Rectangle aTmp( pRect->SVRect() );
+ if ( !pUserMarker )
+ pUserMarker = new SdrViewUserMarker( rSh.GetDrawView() );
+ pUserMarker->SetRectangle( aTmp );
+ pUserMarker->Show();
+ }
+ else if(pUserMarker)
+ DELETEZ(pUserMarker);
+ rSh.SwCrsrShell::SetVisCrsr( rLPt );
+ }
+ SetPointer( eStyle );
+ return;
+ }
+
+ if( !rSh.VisArea().Width() )
+ return;
+
+ SET_CURR_SHELL(&rSh);
+
+ if ( IsChainMode() )
+ {
+ SwRect aRect;
+ int nChainable = rSh.Chainable( aRect, *rSh.GetFlyFrmFmt(), rLPt );
+ PointerStyle eStyle = nChainable
+ ? POINTER_CHAIN_NOTALLOWED : POINTER_CHAIN;
+ if ( !nChainable )
+ {
+ Rectangle aTmp( aRect.SVRect() );
+ if ( !pUserMarker )
+ pUserMarker = new SdrViewUserMarker( rSh.GetDrawView() );
+ pUserMarker->SetRectangle( aTmp );
+ pUserMarker->Show();
+ }
+ else
+ {
+ DELETEZ( pUserMarker );
+ }
+ rView.GetViewFrame()->ShowStatusText(
+ SW_RESSTR(STR_CHAIN_OK+nChainable));
+ SetPointer( eStyle );
+ return;
+ }
+
+ BOOL bExecHyperlinks = rSh.GetViewOptions()->IsExecHyperlinks() ^
+ (nModifier == KEY_MOD2 ? TRUE : FALSE);
+
+ SdrView *pSdrView = rSh.GetDrawView();
+ BOOL bPrefSdrPointer = FALSE;
+ BOOL bHitHandle = FALSE;
+ BOOL bCntAtPos = FALSE;
+ BOOL bIsDocReadOnly = rView.GetDocShell()->IsReadOnly() &&
+ rSh.IsCrsrReadonly();
+ aActHitType = SDRHIT_NONE;
+ PointerStyle eStyle = POINTER_TEXT;
+ if ( !pSdrView )
+ bCntAtPos = TRUE;
+ else if ( bHitHandle = pSdrView->HitHandle( rLPt, *(rSh.GetOut())) != 0 )
+ {
+ aActHitType = SDRHIT_OBJECT;
+ bPrefSdrPointer = TRUE;
+ }
+ else
+ {
+ const BOOL bNotInSelObj = !rSh.IsInsideSelectedObj( rLPt );
+ if ( rView.GetDrawFuncPtr() && !bInsDraw && bNotInSelObj )
+ {
+ aActHitType = SDRHIT_OBJECT;
+ if (GetDrawMode() == SID_OBJECT_SELECT)
+ eStyle = POINTER_ARROW;
+ else
+ bPrefSdrPointer = TRUE;
+ }
+ else
+ {
+ SdrObject* pObj; SdrPageView* pPV;
+ pSdrView->SetHitTolerancePixel( HIT_PIX );
+ if ( bNotInSelObj && bExecHyperlinks &&
+ pSdrView->PickObj( rLPt, pObj, pPV, SDRSEARCH_PICKMACRO ))
+ {
+ SdrObjMacroHitRec aTmp;
+ aTmp.aPos = rLPt;
+ aTmp.pPageView = pPV;
+ SetPointer( pObj->GetMacroPointer( aTmp ) );
+ return;
+ }
+ else
+ {
+ if ( rSh.IsObjSelectable( rLPt ) )
+ {
+ if (pSdrView->IsTextEdit())
+ {
+ aActHitType = SDRHIT_NONE;
+ bPrefSdrPointer = TRUE;
+ }
+ else
+ {
+ SdrViewEvent aVEvt;
+ SdrHitKind eHit = pSdrView->PickAnything(rLPt, aVEvt);
+
+ if (eHit == SDRHIT_URLFIELD && bExecHyperlinks)
+ {
+ aActHitType = SDRHIT_OBJECT;
+ bPrefSdrPointer = TRUE;
+ }
+ else
+ {
+ eStyle = POINTER_MOVE;
+
+ if (!bNotInSelObj)
+ {
+ if (rSh.IsObjSelected() || rSh.IsFrmSelected())
+ {
+ if (rSh.IsSelObjProtected(FLYPROTECT_POS))
+ eStyle = POINTER_NOTALLOWED;
+ }
+ }
+ aActHitType = SDRHIT_OBJECT;
+ }
+ }
+ }
+ else
+ {
+ if ( rSh.IsFrmSelected() && !bNotInSelObj )
+ {
+ if (rSh.IsSelObjProtected(FLYPROTECT_SIZE))
+ eStyle = POINTER_NOTALLOWED;
+ else
+ eStyle = POINTER_MOVE;
+ aActHitType = SDRHIT_OBJECT;
+ }
+ else
+ {
+ if ( rView.GetDrawFuncPtr() )
+ bPrefSdrPointer = TRUE;
+ else
+ bCntAtPos = TRUE;
+ }
+ }
+ }
+ }
+ }
+ if ( bPrefSdrPointer )
+ {
+ if (bIsDocReadOnly || (rSh.IsObjSelected() && rSh.IsSelObjProtected(FLYPROTECT_CONTENT)))
+ SetPointer( POINTER_NOTALLOWED );
+ else
+ {
+ if (rView.GetDrawFuncPtr() && rView.GetDrawFuncPtr()->IsInsertForm() && !bHitHandle)
+ SetPointer( POINTER_DRAW_RECT );
+ else
+ SetPointer( pSdrView->GetPreferedPointer( rLPt, rSh.GetOut() ) );
+ }
+ }
+ else
+ {
+ if( pAnchorMarker )
+ eStyle = POINTER_ARROW;
+ else if( bCntAtPos && bExecHyperlinks )
+ {
+ // sollten wir ueber einem InternetAttr/ClickFeld/Fussnote stehen?
+ SwContentAtPos aSwContentAtPos(
+ SwContentAtPos::SW_CLICKFIELD|
+ SwContentAtPos::SW_INETATTR|
+ SwContentAtPos::SW_FTN );
+ if( rSh.GetContentAtPos( rLPt, aSwContentAtPos) )
+ eStyle = POINTER_REFHAND;
+ }
+
+ SetPointer( eStyle );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Timer fuer Selektion vergroessern
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwEditWin, TimerHandler, Timer *, EMPTYARG )
+{
+ DBG_PROFSTART(edithdl);
+
+ SwWrtShell &rSh = rView.GetWrtShell();
+ Point aModPt( aMovePos );
+ const SwRect aOldVis( rSh.VisArea() );
+ FASTBOOL bDone = FALSE;
+
+ if ( !rSh.VisArea().IsInside( aModPt ) )
+ {
+ if ( bInsDraw )
+ {
+ const int nMaxScroll = 40;
+ rView.Scroll( Rectangle(aModPt,Size(1,1)), nMaxScroll, nMaxScroll);
+ bDone = TRUE;
+ }
+ else if ( bFrmDrag )
+ {
+ (rSh.*rSh.fnDrag)(&aModPt,FALSE);
+ bDone = TRUE;
+ }
+ if ( !bDone )
+ aModPt = rSh.GetCntntPos( aModPt,aModPt.Y() > rSh.VisArea().Bottom() );
+ }
+ if ( !bDone && !(bFrmDrag || bInsDraw) )
+ {
+ (rSh.*rSh.fnSetCrsr)( &aModPt, FALSE );
+
+ //fix(24138): Es kann sein, dass der "Sprung" ueber eine Tabelle so
+ //nicht geschafft wird. Deshalb wir hier eben per Up/Down ueber die
+ //Tabelle gesprungen.
+ if ( aOldVis == rSh.VisArea() &&
+ !rSh.IsStartOfDoc() && !rSh.IsEndOfDoc() && !rSh.IsTableMode())
+ {
+ if ( aModPt.Y() < rSh.VisArea().Top() )
+ rSh.Up( TRUE );
+ else
+ rSh.Down( TRUE );
+ }
+ }
+
+ aMovePos += rSh.VisArea().Pos() - aOldVis.Pos();
+ JustifyAreaTimer();
+ DBG_PROFSTOP(edithdl);
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwEditWin::JustifyAreaTimer()
+{
+ const Rectangle &rVisArea = GetView().GetVisArea();
+ long nTimeout = 800,
+ nDiff = Max(
+ Max( aMovePos.Y() - rVisArea.Bottom(), rVisArea.Top() - aMovePos.Y() ),
+ Max( aMovePos.X() - rVisArea.Right(), rVisArea.Left() - aMovePos.X()));
+ aTimer.SetTimeout( Max( 0L, nTimeout - nDiff*2L) );
+}
+
+void SwEditWin::LeaveArea(const Point &rPos)
+{
+ aMovePos = rPos;
+ JustifyAreaTimer();
+ if ( !aTimer.IsActive() )
+ aTimer.Start();
+ if( pShadCrsr )
+ delete pShadCrsr, pShadCrsr = 0;
+}
+
+inline void SwEditWin::EnterArea()
+{
+ aTimer.Stop();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Modus fuer Rahmen einfuegen
+------------------------------------------------------------------------*/
+
+
+void SwEditWin::InsFrm(USHORT nCols)
+{
+ StdDrawMode(OBJ_NONE);
+ bInsFrm = TRUE;
+ nInsFrmColCount = nCols;
+}
+
+
+
+void SwEditWin::StdDrawMode(USHORT nSlotId)
+{
+ SetDrawMode( nSlotId );
+
+/* if (GetDrawFuncPtr())
+ GetDrawFuncPtr()->Deactivate();*/
+
+ if (nSlotId == OBJ_NONE)
+ rView.SetDrawFuncPtr(new SwDrawBase( &rView.GetWrtShell(), this, &rView ));
+ else
+ rView.SetDrawFuncPtr(new DrawSelection( &rView.GetWrtShell(), this, &rView ));
+
+ rView.SetSelDrawSlot();
+ SetDrawMode(nSlotId);
+ rView.GetDrawFuncPtr()->Activate( nSlotId );
+ bInsFrm = FALSE;
+ nInsFrmColCount = 1;
+}
+
+
+
+void SwEditWin::StopInsFrm()
+{
+ if (rView.GetDrawFuncPtr())
+ {
+ rView.GetDrawFuncPtr()->Deactivate();
+ rView.SetDrawFuncPtr(NULL);
+ }
+ rView.LeaveDrawCreate(); // Konstruktionsmode verlassen
+ bInsFrm = FALSE;
+ nInsFrmColCount = 1;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Der Character Buffer wird in das Dokument eingefuegt
+ --------------------------------------------------------------------*/
+
+
+void SwEditWin::FlushInBuffer( SwWrtShell *pSh )
+{
+ if ( aInBuffer.Len() )
+ {
+ pSh->Insert( aInBuffer );
+ aInBuffer.Erase();
+ bFlushCharBuffer = FALSE;
+ }
+}
+
+
+
+void SwEditWin::ChangeFly( BYTE nDir, BOOL bWeb )
+{
+ SwWrtShell &rSh = rView.GetWrtShell();
+ SwRect aTmp = rSh.GetFlyRect();
+ if( aTmp.HasArea() )
+ {
+ SfxItemSet aSet(rSh.GetAttrPool(),
+ RES_FRM_SIZE, RES_FRM_SIZE,
+ RES_VERT_ORIENT, RES_ANCHOR,
+ RES_COL, RES_COL, 0);
+ rSh.GetFlyFrmAttr( aSet );
+ RndStdIds eAnchorId = ((SwFmtAnchor&)aSet.Get(RES_ANCHOR)).GetAnchorId();
+ Size aSnap( rSh.GetViewOptions()->GetSnapSize() );
+ short nDiv = rSh.GetViewOptions()->GetDivisionX();
+ if ( nDiv > 0 )
+ aSnap.Width() = Max( (ULONG)1, (ULONG)aSnap.Width() / nDiv );
+ nDiv = rSh.GetViewOptions()->GetDivisionY();
+ if ( nDiv > 0 )
+ aSnap.Height() = Max( (ULONG)1, (ULONG)aSnap.Height() / nDiv );
+ SwRect aBoundRect;
+ Point aRefPoint;
+ rSh.CalcBoundRect( aBoundRect, eAnchorId, FRAME, FALSE, &aRefPoint );
+ long nLeft = Min( aTmp.Left() - aBoundRect.Left(), aSnap.Width() );
+ long nRight = Min( aBoundRect.Right() - aTmp.Right(), aSnap.Width() );
+ long nUp = Min( aTmp.Top() - aBoundRect.Top(), aSnap.Height() );
+ long nDown = Min( aBoundRect.Bottom() - aTmp.Bottom(), aSnap.Height() );
+
+ switch ( nDir )
+ {
+ case 4:
+ case 0: aTmp.Left( aTmp.Left() - nLeft ); break;
+ case 5:
+ case 1: aTmp.Top( aTmp.Top() - nUp ); break;
+ case 6: if( aTmp.Width() < aSnap.Width() + MINFLY ) break;
+ nRight = aSnap.Width(); // kein break
+ case 2: aTmp.Left( aTmp.Left() + nRight ); break;
+ case 7: if( aTmp.Height() < aSnap.Height() + MINFLY ) break;
+ nDown = aSnap.Height(); // kein break
+ case 3: aTmp.Top( aTmp.Top() + nDown ); break;
+ case 8: if( aTmp.Width() >= aSnap.Width() + MINFLY )
+ aTmp.Right( aTmp.Right() - aSnap.Width() );
+ break;
+ case 9: if( aTmp.Height() >= aSnap.Height() + MINFLY )
+ aTmp.Height( aTmp.Height() - aSnap.Height() );
+ break;
+ case 10: aTmp.Width( aTmp.Width() + nRight ); break;
+ case 11: aTmp.Height( aTmp.Height() + nDown ); break;
+ default: ASSERT( TRUE, "ChangeFly: Unknown direction." );
+ }
+ BOOL bSet = FALSE;
+ if( nDir < 8 && FLY_IN_CNTNT == eAnchorId && ( nDir % 2 ) )
+ {
+ long aDiff = aTmp.Top() - aRefPoint.Y();
+ if( aDiff > 0 )
+ aDiff = 0;
+ else if ( aDiff < -aTmp.Height() )
+ aDiff = -aTmp.Height();
+ SwFmtVertOrient aVert( (SwFmtVertOrient&)aSet.Get(RES_VERT_ORIENT) );
+ SwVertOrient eNew;
+ if( bWeb )
+ {
+ eNew = aVert.GetVertOrient();
+ BOOL bDown = 0 != ( nDir & 0x02 );
+ switch( eNew )
+ {
+ case VERT_CHAR_TOP:
+ if( bDown ) eNew = VERT_CENTER; break;
+ case VERT_CENTER:
+ eNew = bDown ? VERT_TOP : VERT_CHAR_TOP; break;
+ case VERT_TOP:
+ if( !bDown ) eNew = VERT_CENTER; break;
+ case VERT_LINE_TOP:
+ if( bDown ) eNew = VERT_LINE_CENTER; break;
+ case VERT_LINE_CENTER:
+ eNew = bDown ? VERT_LINE_BOTTOM : VERT_LINE_TOP; break;
+ case VERT_LINE_BOTTOM:
+ if( !bDown ) eNew = VERT_LINE_CENTER; break;
+ }
+ }
+ else
+ {
+ aVert.SetPos( aDiff );
+ eNew = VERT_NONE;
+ }
+ aVert.SetVertOrient( eNew );
+ aSet.Put( aVert );
+ bSet = TRUE;
+ }
+ if( bWeb && FLY_AT_CNTNT == eAnchorId && ( nDir==0 || nDir==2 ) )
+ {
+ SwFmtHoriOrient aHori( (SwFmtHoriOrient&)aSet.Get(RES_HORI_ORIENT) );
+ SwHoriOrient eNew;
+ eNew = aHori.GetHoriOrient();
+ switch( eNew )
+ {
+ case HORI_RIGHT:
+ if( !nDir ) eNew = HORI_LEFT; break;
+ case HORI_LEFT:
+ if( nDir ) eNew = HORI_RIGHT; break;
+ }
+ if( eNew != aHori.GetHoriOrient() )
+ {
+ aHori.SetHoriOrient( eNew );
+ aSet.Put( aHori );
+ bSet = TRUE;
+ }
+ }
+ if( nDir > 3 )
+ {
+ SwFmtFrmSize aSize( (SwFmtFrmSize&)aSet.Get(RES_FRM_SIZE) );
+
+ long nMinWidth = MINFLY;
+ // alle Spalten muessen passen
+ if (SFX_ITEM_DEFAULT <= aSet.GetItemState(RES_COL))
+ {
+ const SwFmtCol& rCol = (const SwFmtCol&)aSet.Get(RES_COL);
+ if ( rCol.GetColumns().Count() > 1 )
+ {
+ for ( USHORT i = 0; i < rCol.GetColumns().Count(); ++i )
+ {
+ nMinWidth += rCol.GetColumns()[i]->GetLeft() +
+ rCol.GetColumns()[i]->GetRight() +
+ MINFLY;
+ }
+ nMinWidth -= MINFLY;//einen hatten wir schon mit drin!
+ }
+ }
+
+ aSize.SetSize(Size(Max(aTmp.Width(), nMinWidth), Max(aTmp.Height(), long(MINFLY))));
+ aSet.Put( aSize );
+ bSet = TRUE;
+ }
+ rSh.StartAllAction();
+ if( bSet )
+ rSh.SetFlyFrmAttr( aSet );
+ if( !bWeb && nDir < 8 && FLY_IN_CNTNT != eAnchorId )
+ rSh.SetFlyPos( aTmp.Pos() );
+ rSh.EndAllAction();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: KeyEvents
+ --------------------------------------------------------------------*/
+
+
+void SwEditWin::KeyInput(const KeyEvent &rKEvt)
+{
+ SfxObjectShell *pObjSh = (SfxObjectShell*)rView.GetViewFrame()->GetObjectShell();
+ if ( bLockInput || pObjSh && pObjSh->GetProgress() )
+ // Wenn die Rechenleiste aktiv ist oder
+ // auf dem Document ein Progress laeuft wird keine
+ // Bestellungen angenommen.
+ return;
+
+ if( pShadCrsr )
+ delete pShadCrsr, pShadCrsr = 0;
+ aKeyInputFlushTimer.Stop();
+
+ SwWrtShell &rSh = rView.GetWrtShell();
+ BOOL bIsDocReadOnly = rView.GetDocShell()->IsReadOnly() &&
+ rSh.IsCrsrReadonly();
+
+ QuickHelpData aTmpQHD;
+ if( pQuickHlpData->bClear )
+ {
+ aTmpQHD.Move( *pQuickHlpData );
+ pQuickHlpData->Stop( rSh );
+ }
+
+ // OS:auch die DrawView braucht noch ein readonly-Flag
+ if ( !bIsDocReadOnly && rSh.GetDrawView() && rSh.GetDrawView()->KeyInput( rKEvt, this ) )
+ {
+ rSh.GetView().GetViewFrame()->GetBindings().InvalidateAll( FALSE );
+ rSh.SetModified();
+ return; // Event von der SdrView ausgewertet
+ }
+
+ if ( rView.GetDrawFuncPtr() && bInsFrm )
+ {
+ StopInsFrm();
+ rSh.Edit();
+ }
+
+ BOOL bFlushBuffer = FALSE;
+ BOOL bNormalChar = FALSE;
+ BOOL bChkInsBlank = pQuickHlpData->bChkInsBlank;
+ pQuickHlpData->bChkInsBlank = FALSE;
+
+ const KeyCode& rKeyCode = rKEvt.GetKeyCode();
+ sal_Unicode aCh = rKEvt.GetCharCode();
+
+ const SwFrmFmt* pFlyFmt = rSh.GetFlyFrmFmt();
+ if( pFlyFmt )
+ {
+ USHORT nEvent;
+
+ if( 32 <= aCh &&
+ 0 == (( KEY_MOD1 | KEY_MOD2 ) & rKeyCode.GetModifier() ))
+ nEvent = SW_EVENT_FRM_KEYINPUT_ALPHA;
+ else
+ nEvent = SW_EVENT_FRM_KEYINPUT_NOALPHA;
+
+ const SvxMacro* pMacro = pFlyFmt->GetMacro().GetMacroTable().Get( nEvent );
+ if( pMacro )
+ {
+ String sRet;
+ SbxArrayRef xArgs = new SbxArray;
+ SbxVariableRef xVar = new SbxVariable;
+ xVar->PutString( pFlyFmt->GetName() );
+ xArgs->Put( &xVar, 1 );
+
+ xVar = new SbxVariable;
+ if( SW_EVENT_FRM_KEYINPUT_ALPHA == nEvent )
+ xVar->PutChar( aCh );
+ else
+ xVar->PutUShort( rKeyCode.GetModifier() | rKeyCode.GetCode() );
+ xArgs->Put( &xVar, 2 );
+
+ rSh.ExecMacro( *pMacro, &sRet, &xArgs );
+ if( sRet.Len() && 0 != sRet.ToInt32() )
+ return ;
+ }
+ }
+
+ OfaAutoCorrCfg* pACfg = OFF_APP()->GetAutoCorrConfig();
+ SvxAutoCorrect* pACorr = pACfg->GetAutoCorrect();
+
+ SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+
+ /*TblChgWidthHeightType*/int eTblChgMode;
+ USHORT nTblChgSize = 0;
+ BOOL bStopKeyInputTimer = TRUE;
+ String sFmlEntry;
+
+ enum SW_KeyState { KS_Start,
+ KS_CheckKey, KS_InsChar, KS_InsTab,
+ KS_NoNum, KS_NumOff, KS_NumOrNoNum, KS_NumDown, KS_NumUp,
+ KS_NextCell, KS_PrevCell, KS_OutlineUp, KS_OutlineDown,
+ KS_GlossaryExpand, KS_NextPrevGlossary,
+ KS_AutoFmtByInput, KS_DontExpand,
+ KS_KeyToView,
+ KS_CheckAutoCorrect, KS_EditFormula,
+ KS_ColLeftBig, KS_ColRightBig,
+ KS_ColLeftSmall, KS_ColRightSmall,
+ KS_ColTopBig, KS_ColBottomBig,
+ KS_ColTopSmall, KS_ColBottomSmall,
+ KS_CellLeftBig, KS_CellRightBig,
+ KS_CellLeftSmall, KS_CellRightSmall,
+ KS_CellTopBig, KS_CellBottomBig,
+ KS_CellTopSmall, KS_CellBottomSmall,
+//-----
+ KS_InsDel_ColLeftBig, KS_InsDel_ColRightBig,
+ KS_InsDel_ColLeftSmall, KS_InsDel_ColRightSmall,
+ KS_InsDel_ColTopBig, KS_InsDel_ColBottomBig,
+ KS_InsDel_ColTopSmall, KS_InsDel_ColBottomSmall,
+ KS_InsDel_CellLeftBig, KS_InsDel_CellRightBig,
+ KS_InsDel_CellLeftSmall, KS_InsDel_CellRightSmall,
+ KS_InsDel_CellTopBig, KS_InsDel_CellBottomBig,
+ KS_InsDel_CellTopSmall, KS_InsDel_CellBottomSmall,
+ KS_TblColCellInsDel,
+//-----
+ KS_Fly_Change,
+ KS_AppendNodeInSection,
+ KS_Ende };
+
+ SW_KeyState eKeyState = bIsDocReadOnly ? KS_KeyToView : KS_CheckKey,
+ eNextKeyState = KS_Ende;
+
+ while( KS_Ende != eKeyState )
+ {
+ SW_KeyState eFlyState = KS_KeyToView;
+ BYTE nDir;
+
+ switch( eKeyState )
+ {
+ case KS_CheckKey:
+ eKeyState = KS_KeyToView; // default weiter zur View
+
+#ifndef PRODUCT
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ // JP 19.01.99: zum Umschalten des Cursor Verhaltens in ReadOnly
+ // Bereichen
+ if( 0x7210 == rKeyCode.GetFullCode() )
+ rSh.SetReadOnlyAvailable( !rSh.IsReadOnlyAvailable() );
+ else
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#endif
+
+ if( !rKeyCode.IsControlMod() && '=' == aCh &&
+ !rSh.IsTableMode() && rSh.GetTableFmt() &&
+ rSh.IsSttPara() /*&& rSh.IsEndPara()*/ &&
+ !rSh.HasReadonlySel() )
+ {
+ // in der Tabelle am Anfang der Zelle ein '=' ->
+ // EditZeile aufrufen (F2-Funktionalitaet)
+ rSh.Push();
+ if( !rSh.MoveSection( fnSectionCurr, fnSectionStart) &&
+ !rSh.IsTableBoxTextFormat() )
+ {
+ // steht also am Anfang der Box
+ eKeyState = KS_EditFormula;
+ if( rSh.HasMark() )
+ rSh.SwapPam();
+ else
+ rSh.SttSelect();
+ rSh.MoveSection( fnSectionCurr, fnSectionEnd );
+ rSh.Pop( TRUE );
+ rSh.EndSelect();
+ sFmlEntry = '=';
+ }
+ else
+ rSh.Pop( FALSE );
+ }
+ else
+ {
+ if( pACorr && aTmpQHD.HasCntnt() && !rSh.HasSelection() &&
+ !rSh.HasReadonlySel() && !aTmpQHD.bIsAutoText &&
+ pACorr->GetSwFlags().nAutoCmpltExpandKey ==
+ (rKeyCode.GetModifier() | rKeyCode.GetCode()) )
+ {
+ eKeyState = KS_GlossaryExpand;
+ break;
+ }
+
+ switch( rKeyCode.GetModifier() | rKeyCode.GetCode() )
+ {
+ case KEY_RIGHT | KEY_MOD2:
+ eKeyState = KS_ColRightBig;
+ eFlyState = KS_Fly_Change;
+ nDir = 2;
+ goto KEYINPUT_CHECKTABLE;
+
+ case KEY_LEFT | KEY_MOD2:
+ eKeyState = KS_ColRightSmall;
+ eFlyState = KS_Fly_Change;
+ nDir = 0;
+ goto KEYINPUT_CHECKTABLE;
+ case KEY_RIGHT | KEY_MOD2 | KEY_SHIFT:
+ eKeyState = KS_ColLeftSmall;
+ goto KEYINPUT_CHECKTABLE;
+ case KEY_LEFT | KEY_MOD2 | KEY_SHIFT:
+ eKeyState = KS_ColLeftBig;
+ goto KEYINPUT_CHECKTABLE;
+
+ case KEY_RIGHT | KEY_MOD2 | KEY_MOD1:
+ eKeyState = KS_CellRightBig;
+ eFlyState = KS_Fly_Change;
+ nDir = 10;
+ goto KEYINPUT_CHECKTABLE;
+ case KEY_LEFT | KEY_MOD2 | KEY_MOD1:
+ eKeyState = KS_CellRightSmall;
+ eFlyState = KS_Fly_Change;
+ nDir = 8;
+ goto KEYINPUT_CHECKTABLE;
+ case KEY_RIGHT | KEY_MOD2 | KEY_SHIFT | KEY_MOD1:
+ eKeyState = KS_CellLeftSmall;
+ eFlyState = KS_Fly_Change;
+ nDir = 6;
+ goto KEYINPUT_CHECKTABLE;
+ case KEY_LEFT | KEY_MOD2 | KEY_SHIFT | KEY_MOD1:
+ eKeyState = KS_CellLeftBig;
+ eFlyState = KS_Fly_Change;
+ nDir = 4;
+ goto KEYINPUT_CHECKTABLE;
+
+ case KEY_UP | KEY_MOD2:
+ eKeyState = KS_ColBottomSmall;
+ eFlyState = KS_Fly_Change;
+ nDir = 1;
+ goto KEYINPUT_CHECKTABLE;
+ case KEY_DOWN | KEY_MOD2:
+ eKeyState = KS_ColBottomBig;
+ eFlyState = KS_Fly_Change;
+ nDir = 3;
+ goto KEYINPUT_CHECKTABLE;
+ case KEY_UP | KEY_MOD2 | KEY_SHIFT:
+ eKeyState = KS_ColTopBig;
+ goto KEYINPUT_CHECKTABLE;
+ case KEY_DOWN | KEY_MOD2 | KEY_SHIFT:
+ eKeyState = KS_ColTopSmall;
+ goto KEYINPUT_CHECKTABLE;
+
+ case KEY_UP | KEY_MOD2 | KEY_MOD1:
+ eKeyState = KS_CellBottomSmall;
+ eFlyState = KS_Fly_Change;
+ nDir = 9;
+ goto KEYINPUT_CHECKTABLE;
+ case KEY_DOWN | KEY_MOD2 | KEY_MOD1:
+ eKeyState = KS_CellBottomBig;
+ eFlyState = KS_Fly_Change;
+ nDir = 11;
+ goto KEYINPUT_CHECKTABLE;
+ case KEY_UP | KEY_MOD2 | KEY_SHIFT | KEY_MOD1:
+ eKeyState = KS_CellTopBig;
+ eFlyState = KS_Fly_Change;
+ nDir = 5;
+ goto KEYINPUT_CHECKTABLE;
+ case KEY_DOWN | KEY_MOD2 | KEY_SHIFT | KEY_MOD1:
+ eKeyState = KS_CellTopSmall;
+ eFlyState = KS_Fly_Change;
+ nDir = 7;
+ goto KEYINPUT_CHECKTABLE;
+
+KEYINPUT_CHECKTABLE:
+ if( rSh.IsTableMode() || !rSh.GetTableFmt() )
+ {
+
+ if( pFlyFmt && KS_KeyToView != eFlyState )
+ {
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pFlyFmt->GetItemState(
+ RES_PROTECT, TRUE, &pItem ) && (
+ ((SvxProtectItem*)pItem)->IsSizeProtected() ||
+ ((SvxProtectItem*)pItem)->IsPosProtected() ))
+ {
+ //JP 18.01.99: man koennte es noch feiner
+ // ermitteln (nDir auswerten)
+ pFlyFmt = 0;
+ }
+ }
+
+ if( pFlyFmt )
+ eKeyState = eFlyState;
+ else
+ eKeyState = KS_KeyToView;
+ }
+ break;
+
+//-------
+// Insert/Delete
+ case KEY_LEFT:
+ case KEY_LEFT | KEY_MOD1:
+ eTblChgMode = WH_FLAG_INSDEL |
+ ( rKeyCode.GetModifier() & KEY_MOD1
+ ? WH_CELL_LEFT
+ : WH_COL_LEFT );
+ nTblChgSize = pModOpt->GetTblVInsert();
+ goto KEYINPUT_CHECKTABLE_INSDEL;
+// case KEY_RIGHT:
+ case KEY_RIGHT | KEY_MOD1:
+ eTblChgMode = WH_FLAG_INSDEL | WH_CELL_RIGHT;
+ nTblChgSize = pModOpt->GetTblVInsert();
+ goto KEYINPUT_CHECKTABLE_INSDEL;
+
+ case KEY_UP:
+ case KEY_UP | KEY_MOD1:
+ eTblChgMode = WH_FLAG_INSDEL |
+ ( rKeyCode.GetModifier() & KEY_MOD1
+ ? WH_CELL_TOP
+ : WH_ROW_TOP );
+ nTblChgSize = pModOpt->GetTblHInsert();
+ goto KEYINPUT_CHECKTABLE_INSDEL;
+ case KEY_DOWN:
+ case KEY_DOWN | KEY_MOD1:
+ eTblChgMode = WH_FLAG_INSDEL |
+ ( rKeyCode.GetModifier() & KEY_MOD1
+ ? WH_CELL_BOTTOM
+ : WH_ROW_BOTTOM );
+ nTblChgSize = pModOpt->GetTblHInsert();
+ goto KEYINPUT_CHECKTABLE_INSDEL;
+
+KEYINPUT_CHECKTABLE_INSDEL:
+ if( rSh.IsTableMode() || !rSh.GetTableFmt() ||
+ !bTblInsDelMode ||
+ FALSE /* Tabelle geschuetzt */
+ )
+ eKeyState = KS_KeyToView;
+ else
+ {
+ if( !bTblIsInsMode )
+ eTblChgMode = eTblChgMode | WH_FLAG_BIGGER;
+ eKeyState = KS_TblColCellInsDel;
+ }
+ break;
+
+ case KEY_DELETE | KEY_MOD2:
+ if( !rSh.IsTableMode() && rSh.GetTableFmt() )
+ {
+ eKeyState = KS_Ende;
+ bTblInsDelMode = TRUE;
+ bTblIsInsMode = FALSE;
+ bTblIsColMode = TRUE;
+ aKeyInputTimer.Start();
+ bStopKeyInputTimer = FALSE;
+ }
+ break;
+ case KEY_INSERT | KEY_MOD2:
+ if( !rSh.IsTableMode() && rSh.GetTableFmt() )
+ {
+ eKeyState = KS_Ende;
+ bTblInsDelMode = TRUE;
+ bTblIsInsMode = TRUE;
+ bTblIsColMode = TRUE;
+ aKeyInputTimer.Start();
+ bStopKeyInputTimer = FALSE;
+ }
+ break;
+
+ case KEY_RETURN: // Return
+ if( !rSh.HasReadonlySel() )
+ {
+ if( aTmpQHD.HasCntnt() && !rSh.HasSelection() &&
+ aTmpQHD.bIsAutoText )
+ eKeyState = KS_GlossaryExpand;
+
+ //RETURN und leerer Absatz in Numerierung -> Num. beenden
+ else if( rSh.GetCurNumRule() && !rSh.HasSelection() &&
+ rSh.IsSttPara() && rSh.IsEndPara() )
+ eKeyState = KS_NumOff;
+
+ //RETURN fuer neuen Absatz mit AutoFormatierung
+ else if( pACfg && pACfg->IsAutoFmtByInput() &&
+ !(rSh.GetSelectionType() & (SwWrtShell::SEL_GRF |
+ SwWrtShell::SEL_OLE | SwWrtShell::SEL_FRM |
+ SwWrtShell::SEL_TBL_CELLS | SwWrtShell::SEL_DRW |
+ SwWrtShell::SEL_DRW_TXT)) )
+ eKeyState = KS_CheckAutoCorrect, eNextKeyState = KS_AutoFmtByInput;
+ else
+ eNextKeyState = eKeyState, eKeyState = KS_CheckAutoCorrect;
+ }
+ break;
+
+ case KEY_RETURN | KEY_MOD2: // ALT-Return
+ if( !rSh.HasReadonlySel() && rSh.GetCurNumRule() )
+ eKeyState = KS_NoNum;
+ else if( rSh.CanInsertNodeAtEndOfSection() )
+ eKeyState = KS_AppendNodeInSection;
+ break;
+
+ case KEY_BACKSPACE:
+ case KEY_BACKSPACE | KEY_SHIFT:
+ if( !rSh.HasReadonlySel() )
+ {
+ BOOL bOutline = FALSE;
+#ifdef TASK_59308
+ const SwTxtFmtColl* pColl;
+ if( !rSh.SwCrsrShell::HasSelection() &&
+ 0 != ( pColl = rSh.GetCurTxtFmtColl() ) &&
+ NO_NUMBERING != pColl->GetOutlineLevel() &&
+ NO_NUMBERING == rSh.GetNumLevel( FALSE ) )
+ bOutline = TRUE;
+#endif
+
+ if( rSh.NumOrNoNum(
+ KEY_BACKSPACE != rKeyCode.GetFullCode(),
+ TRUE, bOutline ))
+ eKeyState = KS_NumOrNoNum;
+ }
+ break;
+
+ case KEY_END:
+ if( !rSh.HasReadonlySel() && rSh.IsEndPara() &&
+ rSh.DontExpandFmt() )
+ eKeyState = KS_DontExpand;
+ break;
+
+ case KEY_RIGHT:
+ if( !rSh.HasReadonlySel() )
+ {
+ if( rSh.IsEndPara() && rSh.DontExpandFmt() )
+ eKeyState = KS_DontExpand;
+ else
+ {
+ eTblChgMode = WH_FLAG_INSDEL | WH_COL_RIGHT;
+ nTblChgSize = pModOpt->GetTblVInsert();
+ goto KEYINPUT_CHECKTABLE_INSDEL;
+ }
+ }
+ break;
+
+ case KEY_TAB:
+ {
+#ifdef SW_CRSR_TIMER
+ BOOL bOld = rSh.ChgCrsrTimerFlag( FALSE );
+#endif
+ if( rSh.GetCurNumRule() && rSh.IsSttOfPara() &&
+ !rSh.HasReadonlySel() )
+ eKeyState = KS_NumDown;
+ else if ( rSh.GetTableFmt() )
+ {
+ if( rSh.HasSelection() || rSh.HasReadonlySel() )
+ eKeyState = KS_NextCell;
+ else
+ eKeyState = KS_CheckAutoCorrect, eNextKeyState = KS_NextCell;
+ }
+ else
+ {
+ eKeyState = KS_InsTab;
+ if( rSh.IsSttOfPara() && !rSh.HasReadonlySel() )
+ {
+ SwTxtFmtColl* pColl = rSh.GetCurTxtFmtColl();
+ if( pColl && 0 <= pColl->GetOutlineLevel() &&
+ MAXLEVEL - 1 > pColl->GetOutlineLevel() )
+ eKeyState = KS_OutlineDown;
+ }
+ }
+#ifdef SW_CRSR_TIMER
+ rSh.ChgCrsrTimerFlag( bOld );
+#endif
+ }
+ break;
+ case KEY_TAB | KEY_SHIFT:
+ {
+#ifdef SW_CRSR_TIMER
+ BOOL bOld = rSh.ChgCrsrTimerFlag( FALSE );
+#endif
+ if( rSh.GetCurNumRule() && rSh.IsSttOfPara() &&
+ !rSh.HasReadonlySel() )
+ eKeyState = KS_NumUp;
+ else if ( rSh.GetTableFmt() )
+ {
+ if( rSh.HasSelection() || rSh.HasReadonlySel() )
+ eKeyState = KS_PrevCell;
+ else
+ eKeyState = KS_CheckAutoCorrect, eNextKeyState = KS_PrevCell;
+ }
+ else
+ {
+ eKeyState = KS_Ende;
+ if( rSh.IsSttOfPara() && !rSh.HasReadonlySel() )
+ {
+ SwTxtFmtColl* pColl = rSh.GetCurTxtFmtColl();
+ if( pColl && 0 < pColl->GetOutlineLevel() &&
+ MAXLEVEL - 1 >= pColl->GetOutlineLevel() )
+ eKeyState = KS_OutlineUp;
+ }
+ }
+#ifdef SW_CRSR_TIMER
+ rSh.ChgCrsrTimerFlag( bOld );
+#endif
+ }
+ break;
+ case KEY_TAB | KEY_MOD1:
+ if( !rSh.HasReadonlySel() )
+ {
+ if( aTmpQHD.HasCntnt() && !rSh.HasSelection() )
+ {
+ // zum naechsten Tip
+ aTmpQHD.Inc( pACorr && pACorr->GetSwFlags().
+ bAutoCmpltEndless );
+ eKeyState = KS_NextPrevGlossary;
+ }
+ else if( rSh.GetTableFmt() )
+ eKeyState = KS_InsTab;
+ else if( rSh.IsSttOfPara() )
+ {
+ if( rSh.GetCurNumRule() )
+ eKeyState = KS_InsTab;
+ else
+ {
+ SwTxtFmtColl* pColl = rSh.GetCurTxtFmtColl();
+ if( pColl && 0 <= pColl->GetOutlineLevel() &&
+ MAXLEVEL - 1 > pColl->GetOutlineLevel() )
+ eKeyState = KS_InsTab;
+ }
+ }
+ }
+ break;
+
+ case KEY_TAB | KEY_MOD1 | KEY_SHIFT:
+ if( aTmpQHD.HasCntnt() && !rSh.HasSelection() &&
+ !rSh.HasReadonlySel() )
+ {
+ // zum vorherigen Tip
+ aTmpQHD.Dec( pACorr && pACorr->GetSwFlags().
+ bAutoCmpltEndless );
+ eKeyState = KS_NextPrevGlossary;
+ }
+ break;
+ }
+ }
+ break;
+
+ case KS_KeyToView:
+ {
+ eKeyState = KS_Ende;
+ bNormalChar = !rKeyCode.IsControlMod() &&
+ SW_ISPRINTABLE( aCh );
+ if( aInBuffer.Len() && ( !bNormalChar || bIsDocReadOnly ))
+ FlushInBuffer( &rSh );
+
+ if( rView.KeyInput( rKEvt ) )
+ bFlushBuffer = TRUE, bNormalChar = FALSE;
+ else
+ {
+// OS 22.09.95: Da der Sfx Acceleratoren nur aufruft, wenn sie beim letzten
+// Statusupdate enabled wurden, muss copy ggf. von uns
+// 'gewaltsam' gerufen werden.
+ if( rKeyCode.GetFunction() == KEYFUNC_COPY )
+ GetView().GetViewFrame()->GetDispatcher()->Execute(SID_COPY);
+
+
+ if( !bIsDocReadOnly && bNormalChar )
+ eKeyState = KS_InsChar;
+ else
+ {
+ bNormalChar = FALSE;
+ Window::KeyInput( rKEvt );
+ }
+ }
+ }
+ break;
+
+ case KS_InsTab:
+ if( rView.ISA( SwWebView )) //Kein Tabulator fuer Web!
+ {
+ // Bug 56196 - dann sollte der weiter gereicht werden.
+ Window::KeyInput( rKEvt );
+ eKeyState = KS_Ende;
+ break;
+ }
+ aCh = '\t';
+ // kein break!
+ case KS_InsChar:
+ if( !rSh.HasReadonlySel() )
+ {
+ if( bChkInsBlank && WordSelection::IsNormalChar( aCh ) &&
+ (aInBuffer.Len() || !rSh.IsSttPara() || !rSh.IsEndPara() ))
+ {
+ // vor dem Zeichen noch ein Blank einfuegen. Dieses
+ // kommt zwischen den Expandierten Text und dem neuen
+ // "nicht Worttrenner".
+ aInBuffer.Expand( aInBuffer.Len() + 1, ' ' );
+ }
+
+
+ if( !rKEvt.GetRepeat() && pACorr &&
+ (( pACorr->IsAutoCorrFlag( ChgWeightUnderl ) &&
+ ( '*' == aCh || '_' == aCh ) ) ||
+ ( pACorr->IsAutoCorrFlag( ChgQuotes ) && ('\"' == aCh ))||
+ ( pACorr->IsAutoCorrFlag( ChgSglQuotes ) && ( '\'' == aCh))))
+ {
+ FlushInBuffer( &rSh );
+ rSh.AutoCorrect( *pACorr, aCh );
+ if( '\"' != aCh && '\'' != aCh ) // nur bei "*_" rufen!
+ rSh.UpdateAttr();
+ }
+ else if( !rKEvt.GetRepeat() && pACorr &&
+ pACorr->IsAutoCorrFlag( CptlSttSntnc | CptlSttWrd |
+ ChgFractionSymbol | ChgOrdinalNumber |
+ ChgToEnEmDash | SetINetAttr |
+ Autocorrect ) &&
+ '\"' != aCh && '\'' != aCh && '*' != aCh && '_' != aCh &&
+// !Application::GetAppInternational().IsAlphaNumeric(
+// STR_HACK( aCh ))
+ !WordSelection::IsNormalChar( aCh )
+ )
+ {
+ FlushInBuffer( &rSh );
+ rSh.AutoCorrect( *pACorr, aCh );
+ }
+ else
+ {
+ aInBuffer.Expand( aInBuffer.Len() + rKEvt.GetRepeat() + 1,aCh );
+ bFlushCharBuffer = Application::AnyInput( INPUT_KEYBOARD );
+ bFlushBuffer = !bFlushCharBuffer;
+ if( bFlushCharBuffer )
+ aKeyInputFlushTimer.Start();
+ }
+ eKeyState = KS_Ende;
+ }
+ else
+ {
+ InfoBox( this, SW_RES( MSG_READONLY_CONTENT )).Execute();
+// ??? Window::KeyInput( rKEvt );
+ eKeyState = KS_Ende;
+ }
+ break;
+
+ case KS_CheckAutoCorrect:
+ {
+ if( pACorr &&
+ pACorr->IsAutoCorrFlag( CptlSttSntnc | CptlSttWrd |
+ ChgFractionSymbol | ChgOrdinalNumber |
+ ChgToEnEmDash | SetINetAttr |
+ Autocorrect ) &&
+ !rSh.HasReadonlySel() )
+ {
+ FlushInBuffer( &rSh );
+ rSh.AutoCorrect( *pACorr, 0 );
+ }
+ eKeyState = eNextKeyState;
+ }
+ break;
+
+ default:
+ {
+ TypeId pTypeId = 0;
+
+ FlushInBuffer( &rSh );
+//??? if( bFlushCharBuffer )
+//??? FlushInBuffer( &rSh );
+ switch( eKeyState )
+ {
+ case KS_AppendNodeInSection:
+ {
+ rSh.AppendNodeInSection();
+ }
+ break;
+
+ case KS_NoNum:
+ {
+ rSh.NoNum();
+ pTypeId = TYPE(SwListShell);
+ }
+ break;
+ case KS_NumOff:
+ {
+ // Shellwechsel - also vorher aufzeichnen
+ rSh.DelNumRules();
+ }
+ break;
+
+ case KS_NumDown:
+ {
+ rSh.NumUpDown( TRUE );
+ }
+ break;
+ case KS_NumUp:
+ {
+ rSh.NumUpDown( FALSE );
+ }
+ break;
+ case KS_NumOrNoNum:
+ {
+ //Backspace in Numerierung und Nummer -> Nummer auschalten
+ //SHIFT-Backspace in Numerierung und NoNum -> Nummer wieder einschalten
+ pTypeId = TYPE(SwListShell);
+ }
+ break;
+
+ case KS_OutlineDown:
+ rSh.OutlineUpDown( 1 );
+ break;
+ case KS_OutlineUp:
+ rSh.OutlineUpDown( -1 );
+ break;
+
+ case KS_NextCell:
+ {
+ //In Tabelle immer 'flushen'
+ rSh.GoNextCell();
+ }
+ break;
+ case KS_PrevCell:
+ {
+ rSh.GoPrevCell();
+ }
+ break;
+ case KS_AutoFmtByInput:
+ {
+ rSh.SplitNode( TRUE );
+ pTypeId = TYPE(SwTextShell);
+ }
+ break;
+
+ case KS_DontExpand:
+ break;
+
+ case KS_GlossaryExpand:
+ {
+ // ersetze das Wort oder Kuerzel durch den den Textbaustein
+ rSh.StartUndo( UNDO_START );
+
+ String sFnd( *aTmpQHD.aArr[ aTmpQHD.nCurArrPos ] );
+ if( aTmpQHD.bIsAutoText )
+ {
+ SwGlossaryList* pList = ::GetGlossaryList();
+ String sShrtNm;
+ String sGroup;
+ if(pList->GetShortName( sFnd, sShrtNm, sGroup))
+ {
+ rSh.SttSelect();
+ rSh.ExtendSelection( FALSE, aTmpQHD.nLen );
+ SwGlossaryHdl* pGlosHdl = GetView().GetGlosHdl();
+ pGlosHdl->SetCurGroup(sGroup, TRUE);
+ pGlosHdl->InsertGlossary( sShrtNm);
+ pQuickHlpData->bChkInsBlank = TRUE;
+ }
+ }
+ else
+ {
+ rSh.Insert( sFnd.Erase( 0, aTmpQHD.nLen ));
+ pQuickHlpData->bChkInsBlank = !pACorr ||
+ pACorr->GetSwFlags().bAutoCmpltAppendBlanc;
+ }
+ rSh.EndUndo( UNDO_END );
+ }
+ break;
+
+ case KS_NextPrevGlossary:
+ pQuickHlpData->Move( aTmpQHD );
+ pQuickHlpData->Start( rSh, USHRT_MAX );
+ break;
+
+ case KS_EditFormula:
+ {
+ pTypeId = TYPE(SwTextShell);
+ const USHORT nId = SwInputChild::GetChildWindowId();
+
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ pVFrame->ToggleChildWindow( nId );
+ SwInputChild* pChildWin = (SwInputChild*)pVFrame->
+ GetChildWindow( nId );
+ if( pChildWin )
+ pChildWin->SetFormula( sFmlEntry );
+ }
+ break;
+
+ case KS_ColLeftBig: rSh.SetColRowWidthHeight( WH_COL_LEFT|WH_FLAG_BIGGER, pModOpt->GetTblHMove() ); break;
+ case KS_ColRightBig: rSh.SetColRowWidthHeight( WH_COL_RIGHT|WH_FLAG_BIGGER, pModOpt->GetTblHMove() ); break;
+ case KS_ColLeftSmall: rSh.SetColRowWidthHeight( WH_COL_LEFT, pModOpt->GetTblHMove() ); break;
+ case KS_ColRightSmall: rSh.SetColRowWidthHeight( WH_COL_RIGHT, pModOpt->GetTblHMove() ); break;
+ case KS_ColTopBig: rSh.SetColRowWidthHeight( WH_ROW_TOP|WH_FLAG_BIGGER, pModOpt->GetTblVMove() ); break;
+ case KS_ColBottomBig: rSh.SetColRowWidthHeight( WH_ROW_BOTTOM|WH_FLAG_BIGGER, pModOpt->GetTblVMove() ); break;
+ case KS_ColTopSmall: rSh.SetColRowWidthHeight( WH_ROW_TOP, pModOpt->GetTblVMove() ); break;
+ case KS_ColBottomSmall: rSh.SetColRowWidthHeight( WH_ROW_BOTTOM, pModOpt->GetTblVMove() ); break;
+ case KS_CellLeftBig: rSh.SetColRowWidthHeight( WH_CELL_LEFT|WH_FLAG_BIGGER, pModOpt->GetTblHMove() ); break;
+ case KS_CellRightBig: rSh.SetColRowWidthHeight( WH_CELL_RIGHT|WH_FLAG_BIGGER, pModOpt->GetTblHMove() ); break;
+ case KS_CellLeftSmall: rSh.SetColRowWidthHeight( WH_CELL_LEFT, pModOpt->GetTblHMove() ); break;
+ case KS_CellRightSmall: rSh.SetColRowWidthHeight( WH_CELL_RIGHT, pModOpt->GetTblHMove() ); break;
+ case KS_CellTopBig: rSh.SetColRowWidthHeight( WH_CELL_TOP|WH_FLAG_BIGGER, pModOpt->GetTblVMove() ); break;
+ case KS_CellBottomBig: rSh.SetColRowWidthHeight( WH_CELL_BOTTOM|WH_FLAG_BIGGER, pModOpt->GetTblVMove() ); break;
+ case KS_CellTopSmall: rSh.SetColRowWidthHeight( WH_CELL_TOP, pModOpt->GetTblVMove() ); break;
+ case KS_CellBottomSmall: rSh.SetColRowWidthHeight( WH_CELL_BOTTOM, pModOpt->GetTblVMove() ); break;
+
+//---------------
+ case KS_InsDel_ColLeftBig: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_COL_LEFT|WH_FLAG_BIGGER, pModOpt->GetTblHInsert() ); break;
+ case KS_InsDel_ColRightBig: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_COL_RIGHT|WH_FLAG_BIGGER, pModOpt->GetTblHInsert() ); break;
+ case KS_InsDel_ColLeftSmall: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_COL_LEFT, pModOpt->GetTblHInsert() ); break;
+ case KS_InsDel_ColRightSmall: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_COL_RIGHT, pModOpt->GetTblHInsert() ); break;
+ case KS_InsDel_ColTopBig: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_ROW_TOP|WH_FLAG_BIGGER, pModOpt->GetTblVInsert() ); break;
+ case KS_InsDel_ColBottomBig: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_ROW_BOTTOM|WH_FLAG_BIGGER, pModOpt->GetTblVInsert() ); break;
+ case KS_InsDel_ColTopSmall: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_ROW_TOP, pModOpt->GetTblVInsert() ); break;
+ case KS_InsDel_ColBottomSmall: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_ROW_BOTTOM, pModOpt->GetTblVInsert() ); break;
+ case KS_InsDel_CellLeftBig: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_CELL_LEFT|WH_FLAG_BIGGER, pModOpt->GetTblHInsert() ); break;
+ case KS_InsDel_CellRightBig: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_CELL_RIGHT|WH_FLAG_BIGGER, pModOpt->GetTblHInsert() ); break;
+ case KS_InsDel_CellLeftSmall: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_CELL_LEFT, pModOpt->GetTblHInsert() ); break;
+ case KS_InsDel_CellRightSmall: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_CELL_RIGHT, pModOpt->GetTblHInsert() ); break;
+ case KS_InsDel_CellTopBig: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_CELL_TOP|WH_FLAG_BIGGER, pModOpt->GetTblVInsert() ); break;
+ case KS_InsDel_CellBottomBig: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_CELL_BOTTOM|WH_FLAG_BIGGER, pModOpt->GetTblVInsert() ); break;
+ case KS_InsDel_CellTopSmall: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_CELL_TOP, pModOpt->GetTblVInsert() ); break;
+ case KS_InsDel_CellBottomSmall: rSh.SetColRowWidthHeight( WH_FLAG_INSDEL|WH_CELL_BOTTOM, pModOpt->GetTblVInsert() ); break;
+//---------------
+ case KS_TblColCellInsDel:
+ rSh.SetColRowWidthHeight( eTblChgMode, nTblChgSize );
+ break;
+ case KS_Fly_Change:
+ ChangeFly( nDir, rView.ISA( SwWebView ) );
+ break;
+ }
+
+ eKeyState = KS_Ende;
+ }
+ }
+ }
+
+ if( bStopKeyInputTimer )
+ {
+ aKeyInputTimer.Stop();
+ bTblInsDelMode = FALSE;
+ }
+
+ // falls die gepufferten Zeichen eingefuegt werden sollen
+ if( bFlushBuffer && aInBuffer.Len() )
+ {
+ //OS 16.02.96 11.04: bFlushCharBuffer wurde hier nicht zurueckgesetzt
+ // warum nicht?
+ BOOL bSave = bFlushCharBuffer;
+ FlushInBuffer(&rSh);
+ bFlushCharBuffer = bSave;
+
+ // evt. Tip-Hilfe anzeigen
+ String sWord;
+ if( bNormalChar && pACfg && pACorr &&
+ ( pACfg->IsAutoTextTip() ||
+ pACorr->GetSwFlags().bAutoCompleteWords ) &&
+ rSh.GetPrevAutoCorrWord( *pACorr, sWord ) )
+ {
+ pQuickHlpData->ClearCntnt();
+ if( pACfg->IsAutoTextTip() )
+ {
+ SwGlossaryList* pList = ::GetGlossaryList();
+ pList->HasLongName( sWord, &pQuickHlpData->aArr );
+ }
+
+ if( pQuickHlpData->aArr.Count() )
+ {
+ pQuickHlpData->bIsTip = TRUE;
+ pQuickHlpData->bIsAutoText = TRUE;
+ }
+ else if( pACorr->GetSwFlags().bAutoCompleteWords )
+ {
+ pQuickHlpData->bIsAutoText = FALSE;
+ pQuickHlpData->bIsTip = !pACorr ||
+ pACorr->GetSwFlags().bAutoCmpltShowAsTip;
+ const International* pIntl = &Application::GetAppInternational();
+ {
+ // besorge mal die akt. Sprache:
+ SfxItemSet aSet( pObjSh->GetPool(), RES_CHRATR_LANGUAGE,
+ RES_CHRATR_LANGUAGE );
+ rSh.GetAttr( aSet );
+
+ LanguageType eLang = ((const SvxLanguageItem&)aSet.Get(
+ RES_CHRATR_LANGUAGE )).GetLanguage();
+
+ if( eLang != pIntl->GetLanguage() &&
+ LANGUAGE_SYSTEM != eLang && LANGUAGE_DONTKNOW != eLang )
+ pIntl = new International( eLang );
+ }
+
+ for( int n = MONDAY; n <= SUNDAY; ++n )
+ {
+ const String& rDay = pIntl->GetDayText( (DayOfWeek)n );
+ if( sWord.Len() + 1 < rDay.Len() &&
+ pIntl->CompareEqual(sWord, rDay.Copy(0,sWord.Len()), INTN_COMPARE_IGNORECASE ) )
+ {
+ String* pNew = new String( rDay );
+ if( !pQuickHlpData->aArr.Insert( pNew ) )
+ delete pNew;
+ }
+ }
+
+ for( n = 1; n <= 12; ++n )
+ {
+ const String& rMon = pIntl->GetMonthText( n );
+ if( sWord.Len() + 1 < rMon.Len() &&
+ pIntl->CompareEqual(sWord, rMon.Copy(0,sWord.Len()), INTN_COMPARE_IGNORECASE ))
+ {
+ String* pNew = new String( rMon );
+ if( !pQuickHlpData->aArr.Insert( pNew ) )
+ delete pNew;
+ }
+ }
+
+ // wurde die International - Klasse von uns angelegt?
+ if( pIntl != &Application::GetAppInternational() )
+ delete (International*)pIntl;
+
+ USHORT nStt, nEnd;
+ const SwAutoCompleteWord& rACLst = rSh.GetAutoCompleteWords();
+ if( rACLst.GetRange( sWord, nStt, nEnd ) )
+ {
+ while( nStt < nEnd )
+ {
+ const String& rS = rACLst[ nStt ];
+ //JP 16.06.99: Bug 66927 - only if the count of chars
+ // from the suggest greater as the
+ // actual word
+ if( rS.Len() > sWord.Len() )
+ {
+ String* pNew = new String( rS );
+ if( !pQuickHlpData->aArr.Insert( pNew ) )
+ delete pNew;
+ }
+ ++nStt;
+ }
+ }
+ }
+
+ if( pQuickHlpData->aArr.Count() )
+ pQuickHlpData->Start( rSh, sWord.Len() );
+ }
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: MouseEvents
+ --------------------------------------------------------------------*/
+
+
+void SwEditWin::RstMBDownFlags()
+{
+ //Nicht auf allen Systemen kommt vor dem modalen
+ //Dialog noch ein MouseButton Up (wie unter WINDOWS).
+ //Daher hier die Stati zuruecksetzen und die Maus
+ //fuer den Dialog freigeben.
+ bMBPressed = bNoInterrupt = FALSE;
+ EnterArea();
+ ReleaseMouse();
+}
+
+
+
+
+
+void SwEditWin::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ GrabFocus();
+
+ bWasShdwCrsr = 0 != pShadCrsr;
+ if( bWasShdwCrsr )
+ delete pShadCrsr, pShadCrsr = 0;
+
+ SwWrtShell &rSh = rView.GetWrtShell();
+ const Point aDocPos( PixelToLogic( rMEvt.GetPosPixel() ) );
+
+ if ( IsChainMode() )
+ {
+ SetChainMode( FALSE );
+ SwRect aDummy;
+ SwFlyFrmFmt *pFmt = (SwFlyFrmFmt*)rSh.GetFlyFrmFmt();
+ if ( !rSh.Chainable( aDummy, *pFmt, aDocPos ) )
+ rSh.Chain( *pFmt, aDocPos );
+ UpdatePointer( aDocPos, rMEvt.GetModifier() );
+ return;
+ }
+
+ //Nach GrabFocus sollte eine Shell gepusht sein. Das muss eigentlich
+ //klappen aber in der Praxis ...
+ lcl_SelectShellForDrop( rView );
+
+ BOOL bIsDocReadOnly = rView.GetDocShell()->IsReadOnly();
+ BOOL bCallBase = TRUE;
+
+ if( pQuickHlpData->bClear )
+ pQuickHlpData->Stop( rSh );
+ pQuickHlpData->bChkInsBlank = FALSE;
+
+ if( rSh.FinishOLEObj() )
+ return; //InPlace beenden und der Klick zaehlt nicht mehr
+
+ SET_CURR_SHELL( &rSh );
+
+ SdrView *pSdrView = rSh.GetDrawView();
+ if ( pSdrView )
+ {
+ if (pSdrView->MouseButtonDown( rMEvt, this ) )
+ {
+ rSh.GetView().GetViewFrame()->GetBindings().InvalidateAll(FALSE);
+ return; // Event von der SdrView ausgewertet
+ }
+ }
+
+#ifdef MAC
+ if (rMEvt.IsMod1() && rMEvt.IsMod2())
+ return;
+#endif
+
+ bIsInMove = FALSE;
+ aStartPos = rMEvt.GetPosPixel();
+ aRszMvHdlPt.X() = 0, aRszMvHdlPt.Y() = 0;
+
+ if ( !rSh.IsDrawCreate() && !pApplyTempl && !rSh.IsInSelect() &&
+ rMEvt.GetClicks() == 1 && MOUSE_LEFT == rMEvt.GetButtons() &&
+ !rSh.IsTableMode() &&
+ rSh.IsMouseTabCol( aDocPos ) )
+ {
+ //Zuppeln von Tabellenspalten aus dem Dokument heraus.
+ rView.SetTabColFromDoc( TRUE );
+ rView.SetTabColFromDocPos( aDocPos );
+ rView.InvalidateRulerPos();
+ SfxBindings& rBind = rView.GetViewFrame()->GetBindings();
+ rBind.Update();
+ if ( RulerClook( rView , rMEvt ) )
+ {
+ rView.SetTabColFromDoc( FALSE );
+ rView.InvalidateRulerPos();
+ rBind.Update();
+ bCallBase = FALSE;
+ }
+ else
+ {
+ return;
+ }
+ }
+
+ //Man kann sich in einem Selektionszustand befinden, wenn zuletzt
+ //mit dem Keyboard selektiert wurde, aber noch kein CURSOR_KEY
+ //anschliessend bewegt worden ist. In diesem Fall muss die vorher-
+ //gehende Selektion zuerst beendet werden.
+ //MA 07. Oct. 95: Und zwar nicht nur bei Linker Maustaste sondern immer.
+ //siehe auch Bug: 19263
+ if ( rSh.IsInSelect() )
+ rSh.EndSelect();
+
+ //Abfrage auf LEFT, da sonst auch bei einem Click mit der rechten Taste
+ //beispielsweise die Selektion aufgehoben wird.
+ if ( MOUSE_LEFT == rMEvt.GetButtons() )
+ {
+ BOOL bOnlyText = FALSE;
+ bMBPressed = bNoInterrupt = TRUE;
+ CaptureMouse();
+
+ //ggf. Cursorpositionen zuruecksetzen
+ rSh.ResetCursorStack();
+
+ switch ( rMEvt.GetModifier() + rMEvt.GetButtons() )
+ {
+ case MOUSE_LEFT:
+ case MOUSE_LEFT + KEY_SHIFT:
+ case MOUSE_LEFT + KEY_MOD2:
+ if( rSh.IsObjSelected() )
+ {
+ SdrHdl* pHdl;
+ if( !bIsDocReadOnly && !pAnchorMarker && 0 !=
+ ( pHdl = pSdrView->HitHandle(aDocPos, *(rSh.GetOut())) )
+ && pHdl->GetKind() == HDL_ANCHOR )
+ {
+ pAnchorMarker = new SwAnchorMarker( pHdl );
+ UpdatePointer( aDocPos, rMEvt.GetModifier() );
+ return;
+ }
+ }
+ if ( EnterDrawMode( rMEvt, aDocPos ) )
+ {
+ bNoInterrupt = FALSE;
+ return;
+ }
+ else if ( rView.GetDrawFuncPtr() && bInsFrm )
+ {
+ StopInsFrm();
+ rSh.Edit();
+ }
+
+ // Ohne SHIFT, da sonst Toggle bei Selektion nicht funktioniert
+ if (rMEvt.GetClicks() == 1)
+ {
+ if ( rSh.IsSelFrmMode())
+ {
+ SdrHdl* pHdl = rSh.GetDrawView()->HitHandle
+ (aDocPos, *(rSh.GetOut()));
+ BOOL bHitHandle = pHdl && pHdl->GetKind() != HDL_ANCHOR;
+
+ if ((rSh.IsInsideSelectedObj(aDocPos) || bHitHandle) &&
+ !(rMEvt.GetModifier() == KEY_SHIFT && !bHitHandle))
+ {
+ rSh.EnterSelFrmMode( &aDocPos );
+ if ( !pApplyTempl )
+ {
+ //nur, wenn keine Position zum Sizen getroffen ist.
+ if (!bHitHandle)
+ {
+ StartDDTimer();
+ SwEditWin::nDDStartPosY = aDocPos.Y();
+ SwEditWin::nDDStartPosX = aDocPos.X();
+ }
+ bFrmDrag = TRUE;
+ }
+ bNoInterrupt = FALSE;
+ return;
+ }
+ }
+ }
+ }
+
+ BOOL bExecHyperlinks = rSh.GetViewOptions()->IsExecHyperlinks()^
+ (rMEvt.GetModifier() == KEY_MOD2 ? TRUE : FALSE);
+
+ switch ( rMEvt.GetModifier() + rMEvt.GetButtons() )
+ {
+ case MOUSE_LEFT:
+ case MOUSE_LEFT + KEY_MOD1:
+ case MOUSE_LEFT + KEY_MOD2:
+ switch ( rMEvt.GetClicks() )
+ {
+ case 1:
+ {
+ UpdatePointer( aDocPos, rMEvt.GetModifier() );
+ SwEditWin::nDDStartPosY = aDocPos.Y();
+ SwEditWin::nDDStartPosX = aDocPos.X();
+
+ // URL in DrawText-Objekt getroffen?
+ BOOL bExecDrawTextLink = FALSE;
+
+ if (bExecHyperlinks && pSdrView)
+ {
+ SdrViewEvent aVEvt;
+ SdrHitKind eHit = pSdrView->PickAnything(rMEvt, SDRMOUSEBUTTONDOWN, aVEvt);
+
+ if (aVEvt.eEvent == SDREVENT_EXECUTEURL)
+ bExecDrawTextLink = TRUE;
+ }
+
+ //Rahmen nur zu selektieren versuchen, wenn
+ //der Pointer bereits entsprechend geschaltet wurde
+ if ( aActHitType != SDRHIT_NONE && !rSh.IsSelFrmMode() &&
+ !SFX_APP()->IsDispatcherLocked() &&
+ !bExecDrawTextLink)
+ {
+ rView.NoRotate();
+ rSh.HideCrsr();
+ if( rSh.SelectObj( aDocPos, FALSE, rMEvt.IsMod1() ) )
+ {
+ // falls im Macro der Rahmen deselektiert
+ // wurde, muss nur noch der Cursor
+ // wieder angezeigt werden.
+ if( FRMTYPE_NONE == rSh.GetSelFrmType() )
+ rSh.ShowCrsr();
+ else
+ {
+ if (rSh.IsFrmSelected() && rView.GetDrawFuncPtr())
+ {
+ rView.GetDrawFuncPtr()->Deactivate();
+ rView.SetDrawFuncPtr(NULL);
+ rView.LeaveDrawCreate();
+ rView.AttrChangedNotify( &rSh );
+ }
+
+ rSh.EnterSelFrmMode( &aDocPos );
+ bFrmDrag = TRUE;
+ UpdatePointer( aDocPos, rMEvt.GetModifier() );
+ }
+ return;
+ }
+ else
+ bOnlyText = rSh.IsObjSelectable( aDocPos );
+
+ if (!rView.GetDrawFuncPtr())
+ rSh.ShowCrsr();
+ }
+ else if ( rSh.IsSelFrmMode() &&
+ (aActHitType == SDRHIT_NONE ||
+ !rSh.IsInsideSelectedObj( aDocPos )))
+ {
+ rView.NoRotate();
+ SdrHdl *pHdl;
+ if( !bIsDocReadOnly && !pAnchorMarker && 0 !=
+ ( pHdl = pSdrView->HitHandle(aDocPos, *(rSh.GetOut())) )
+ && pHdl->GetKind() == HDL_ANCHOR )
+ {
+ pAnchorMarker = new SwAnchorMarker( pHdl );
+ UpdatePointer( aDocPos, rMEvt.GetModifier() );
+ return;
+ }
+ else
+ {
+ BOOL bUnLockView = !rSh.IsViewLocked();
+ rSh.LockView( TRUE );
+ BOOL bSelObj = rSh.SelectObj( aDocPos,
+ rMEvt.IsShift(), rMEvt.IsMod1() );
+ if( bUnLockView )
+ rSh.LockView( FALSE );
+
+ if( !bSelObj )
+ {
+ // Cursor hier umsetzen, damit er nicht zuerst
+ // im Rahmen gezeichnet wird; ShowCrsr() geschieht
+ // in LeaveSelFrmMode()
+ bValidCrsrPos = !(CRSR_POSCHG & (rSh.*rSh.fnSetCrsr)(&aDocPos,FALSE));
+ rSh.LeaveSelFrmMode();
+ rView.AttrChangedNotify( &rSh );
+ bCallBase = FALSE;
+ }
+ else
+ {
+ rSh.HideCrsr();
+ rSh.EnterSelFrmMode( &aDocPos );
+ rSh.SelFlyGrabCrsr();
+ rSh.MakeSelVisible();
+ bFrmDrag = TRUE;
+ if( rSh.IsFrmSelected() &&
+ rView.GetDrawFuncPtr() )
+ {
+ rView.GetDrawFuncPtr()->Deactivate();
+ rView.SetDrawFuncPtr(NULL);
+ rView.LeaveDrawCreate();
+ rView.AttrChangedNotify( &rSh );
+ }
+ UpdatePointer( aDocPos, rMEvt.GetModifier() );
+ return;
+ }
+ }
+ }
+ break;
+ }
+ case 2:
+ {
+ bFrmDrag = FALSE;
+ if ( !bIsDocReadOnly && rSh.IsInsideSelectedObj(aDocPos) &&
+ 0 == rSh.IsSelObjProtected( (FlyProtectType)(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) ) )
+ switch ( rSh.GetSelectionType() )
+ {
+ case SwWrtShell::SEL_GRF:
+ RstMBDownFlags();
+ GetView().GetViewFrame()->GetDispatcher()->Execute(
+ FN_FORMAT_GRAFIC_DLG, SFX_CALLMODE_RECORD|SFX_CALLMODE_SLOT);
+ return;
+
+ // Doppelklick auf OLE-Objekt --> OLE-InPlace
+ case SwWrtShell::SEL_OLE:
+ if (!rSh.IsSelObjProtected(FLYPROTECT_CONTENT))
+ {
+ RstMBDownFlags();
+ rSh.LaunchOLEObj();
+ }
+ return;
+
+ case SwWrtShell::SEL_FRM:
+ RstMBDownFlags();
+ GetView().GetViewFrame()->GetDispatcher()->Execute(
+ FN_FORMAT_FRAME_DLG, SFX_CALLMODE_RECORD|SFX_CALLMODE_SLOT);
+ return;
+
+ case SwWrtShell::SEL_DRW:
+ RstMBDownFlags();
+ EnterDrawTextMode(aDocPos);
+ if ( rView.GetCurShell()->ISA(SwDrawTextShell) )
+ ((SwDrawTextShell*)rView.GetCurShell())->Init();
+ return;
+ }
+
+ //falls die Cursorposition korrigiert wurde oder
+ // ein Fly im ReadOnlyModus selektiert ist,
+ //keine Wortselektion.
+ if ( !bValidCrsrPos ||
+ (rSh.IsFrmSelected() && rSh.IsFrmSelected() ))
+ return;
+
+ SwField *pFld;
+ BOOL bFtn = FALSE;
+
+ if( !bIsDocReadOnly &&
+ ( 0 != ( pFld = rSh.GetCurFld() ) ||
+ 0 != ( bFtn = rSh.GetCurFtn() )) )
+ {
+ RstMBDownFlags();
+ if( bFtn )
+ GetView().GetViewFrame()->GetDispatcher()->Execute( FN_EDIT_FOOTNOTE );
+ else
+ {
+ USHORT nTypeId = pFld->GetTypeId();
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ switch( nTypeId )
+ {
+ case TYP_POSTITFLD:
+ case TYP_SCRIPTFLD:
+ {
+ //falls es ein Readonly-Bereich ist, dann muss der Status
+ //enabled werden
+ USHORT nSlot = TYP_POSTITFLD == nTypeId ? FN_POSTIT : FN_JAVAEDIT;
+ SfxBoolItem aItem(nSlot, TRUE);
+ pVFrame->GetBindings().SetState(aItem);
+ pVFrame->GetDispatcher()->Execute(nSlot);
+ break;
+ }
+ case TYP_AUTHORITY :
+ pVFrame->GetDispatcher()->Execute(FN_EDIT_AUTH_ENTRY_DLG);
+ break;
+ default:
+ pVFrame->GetBindings().Execute(FN_EDIT_FIELD);
+ }
+ }
+ return;
+ }
+ //im Extended Mode hat Doppel- und
+ //Dreifachklick keine Auswirkungen.
+ if ( rSh.IsExtMode() )
+ return;
+
+ //Wort selektieren, gfs. Additional Mode
+ if ( KEY_MOD1 == rMEvt.GetModifier() && !rSh.IsAddMode() )
+ {
+ rSh.EnterAddMode();
+ rSh.SelWrd( &aDocPos );
+ rSh.LeaveAddMode();
+ }
+ else
+ rSh.SelWrd( &aDocPos );
+ bHoldSelection = TRUE;
+ return;
+ }
+ case 3:
+ bFrmDrag = FALSE;
+ //im Extended Mode hat Doppel- und
+ //Dreifachklick keine Auswirkungen.
+ if ( rSh.IsExtMode() )
+ return;
+
+ //falls die Cursorposition korrigiert wurde oder
+ // ein Fly im ReadOnlyModus selektiert ist,
+ //keine Wortselektion.
+ if ( !bValidCrsrPos || rSh.IsFrmSelected() )
+ return;
+
+ //Zeile selektieren, gfs. Additional Mode
+ if ( KEY_MOD1 == rMEvt.GetModifier() && !rSh.IsAddMode())
+ {
+ rSh.EnterAddMode();
+ rSh.SelLine( &aDocPos );
+ rSh.LeaveAddMode();
+ }
+ else
+ rSh.SelLine( &aDocPos );
+ bHoldSelection = TRUE;
+ return;
+
+ default:
+ return;
+ }
+ /* no break */
+ case MOUSE_LEFT + KEY_SHIFT:
+ case MOUSE_LEFT + KEY_SHIFT + KEY_MOD1:
+ {
+ BOOL bLockView = bWasShdwCrsr;
+
+ switch ( rMEvt.GetModifier() )
+ {
+ case KEY_MOD1 + KEY_SHIFT:
+ {
+ if ( !bInsDraw && IsDrawObjSelectable( rSh, aDocPos ) )
+ {
+ rView.NoRotate();
+ rSh.HideCrsr();
+ if ( rSh.IsSelFrmMode() )
+ rSh.SelectObj(aDocPos, TRUE, TRUE);
+ else
+ { if ( rSh.SelectObj( aDocPos, TRUE, TRUE ) )
+ {
+ rSh.EnterSelFrmMode( &aDocPos );
+ SwEditWin::nDDStartPosY = aDocPos.Y();
+ SwEditWin::nDDStartPosX = aDocPos.X();
+ bFrmDrag = TRUE;
+ return;
+ }
+ }
+ }
+ else if( rSh.IsSelFrmMode() &&
+ rSh.GetDrawView()->HitHandle( aDocPos,
+ *rSh.GetOut() ))
+ {
+ bFrmDrag = TRUE;
+ bNoInterrupt = FALSE;
+ return;
+ }
+ }
+ break;
+ case KEY_MOD1:
+ {
+ if ( !bInsDraw && IsDrawObjSelectable( rSh, aDocPos ) )
+ {
+ rView.NoRotate();
+ rSh.HideCrsr();
+ if ( rSh.IsSelFrmMode() )
+ rSh.SelectObj(aDocPos, FALSE, TRUE);
+ else
+ { if ( rSh.SelectObj( aDocPos, FALSE, TRUE ) )
+ {
+ rSh.EnterSelFrmMode( &aDocPos );
+ SwEditWin::nDDStartPosY = aDocPos.Y();
+ SwEditWin::nDDStartPosX = aDocPos.X();
+ bFrmDrag = TRUE;
+ return;
+ }
+ }
+ }
+ else if( rSh.IsSelFrmMode() &&
+ rSh.GetDrawView()->HitHandle( aDocPos,
+ *rSh.GetOut() ))
+ {
+ bFrmDrag = TRUE;
+ bNoInterrupt = FALSE;
+ return;
+ }
+ else
+ {
+ if ( !rSh.IsAddMode() && !rSh.IsExtMode())
+ {
+ rSh.PushMode();
+ bModePushed = TRUE;
+ rSh.EnterAddMode();
+ }
+ bCallBase = FALSE;
+ }
+ }
+ break;
+ case KEY_SHIFT:
+ {
+ if ( !bInsDraw && IsDrawObjSelectable( rSh, aDocPos ) )
+ {
+ rView.NoRotate();
+ rSh.HideCrsr();
+ if ( rSh.IsSelFrmMode() )
+ {
+ rSh.SelectObj(aDocPos, TRUE);
+
+ const SdrMarkList& rMarkList = pSdrView->GetMarkList();
+ if (rMarkList.GetMark(0) == NULL)
+ {
+ rSh.LeaveSelFrmMode();
+ rView.AttrChangedNotify(&rSh);
+ bFrmDrag = FALSE;
+ }
+ }
+ else
+ { if ( rSh.SelectObj( aDocPos ) )
+ {
+ rSh.EnterSelFrmMode( &aDocPos );
+ SwEditWin::nDDStartPosY = aDocPos.Y();
+ SwEditWin::nDDStartPosX = aDocPos.X();
+ bFrmDrag = TRUE;
+ return;
+ }
+ }
+ }
+ else
+ {
+ if ( rSh.IsSelFrmMode() &&
+ rSh.IsInsideSelectedObj( aDocPos ) )
+ {
+ rSh.EnterSelFrmMode( &aDocPos );
+ SwEditWin::nDDStartPosY = aDocPos.Y();
+ SwEditWin::nDDStartPosX = aDocPos.X();
+ bFrmDrag = TRUE;
+ return;
+ }
+ if ( rSh.IsSelFrmMode() )
+ {
+ rSh.UnSelectFrm();
+ rSh.LeaveSelFrmMode();
+ rView.AttrChangedNotify(&rSh);
+ bFrmDrag = FALSE;
+ }
+ if ( !rSh.IsExtMode() )
+ {
+ // keine Selection anfangen, wenn in ein URL-
+ // Feld oder eine -Grafik geklickt wird
+ BOOL bSttSelect = rSh.HasSelection() ||
+ Pointer(POINTER_REFHAND) != GetPointer();
+
+ if( !bSttSelect )
+ {
+ bSttSelect = TRUE;
+ if( bExecHyperlinks )
+ {
+ SwContentAtPos aCntntAtPos(
+ SwContentAtPos::SW_FTN |
+ SwContentAtPos::SW_INETATTR );
+
+ if( rSh.GetContentAtPos( aDocPos, aCntntAtPos ) )
+ {
+ if( !rSh.IsViewLocked() &&
+ !rSh.IsReadOnlyAvailable() &&
+ aCntntAtPos.IsInProtectSect() )
+ bLockView = TRUE;
+
+ bSttSelect = FALSE;
+ }
+ else if( rSh.IsURLGrfAtPos( aDocPos ))
+ bSttSelect = FALSE;
+ }
+ }
+
+ if( bSttSelect )
+ rSh.SttSelect();
+ }
+ }
+ bCallBase = FALSE;
+ break;
+ }
+ default:
+ if( !rSh.IsViewLocked() )
+ {
+ SwContentAtPos aCntntAtPos( SwContentAtPos::SW_CLICKFIELD |
+ SwContentAtPos::SW_INETATTR );
+ if( rSh.GetContentAtPos( aDocPos, aCntntAtPos, FALSE ) &&
+ !rSh.IsReadOnlyAvailable() &&
+ aCntntAtPos.IsInProtectSect() )
+ bLockView = TRUE;
+ }
+ }
+
+ if ( rSh.IsGCAttr() )
+ {
+ rSh.GCAttr();
+ rSh.ClearGCAttr();
+ }
+
+ BOOL bOverSelect = rSh.ChgCurrPam( aDocPos ), bOverURLGrf = FALSE;
+ if( !bOverSelect )
+ bOverURLGrf = bOverSelect = 0 != rSh.IsURLGrfAtPos( aDocPos );
+
+ if ( !bOverSelect )
+ {
+ const BOOL bTmp = bNoInterrupt;
+ bNoInterrupt = FALSE;
+
+ if( !rSh.IsViewLocked() && bLockView )
+ rSh.LockView( TRUE );
+ else
+ bLockView = FALSE;
+
+ { // nur temp. Move-Kontext aufspannen, da sonst die
+ // Abfrage auf die Inhaltsform nicht funktioniert!!!
+ MV_KONTEXT( &rSh );
+ bValidCrsrPos = !(CRSR_POSCHG & (rSh.*rSh.fnSetCrsr)(&aDocPos,bOnlyText));
+ bCallBase = FALSE;
+ }
+
+ if( bLockView )
+ rSh.LockView( FALSE );
+
+ bNoInterrupt = bTmp;
+ }
+ if( !bOverURLGrf )
+ {
+ const int nSelType = rSh.GetSelectionType();
+ if( nSelType == SwWrtShell::SEL_OLE ||
+ nSelType == SwWrtShell::SEL_GRF )
+ {
+ MV_KONTEXT( &rSh );
+ if( !rSh.IsFrmSelected() )
+ rSh.GotoNextFly();
+ rSh.EnterSelFrmMode();
+ bCallBase = FALSE;
+ }
+ }
+ // nicht mehr hier zuruecksetzen, damit -- falls durch MouseMove
+ // bei gedrueckter Ctrl-Taste eine Mehrfachselektion erfolgen soll,
+ // im Drag nicht die vorherige Selektion aufgehoben wird.
+// if(bModePushed)
+// rSh.PopMode(FALSE);
+ break;
+ }
+ }
+ }
+ if (bCallBase)
+ Window::MouseButtonDown(rMEvt);
+}
+
+#pragma optimize("",off)
+
+/*--------------------------------------------------------------------
+ Beschreibung: MouseMove
+ --------------------------------------------------------------------*/
+
+
+void SwEditWin::MouseMove(const MouseEvent& rMEvt)
+{
+ // solange eine Action laeuft sollte das MouseMove abgeklemmt sein
+ // Ansonsten gibt es den Bug 40102
+ SwWrtShell &rSh = rView.GetWrtShell();
+ if( rSh.ActionPend() )
+ return ;
+
+ if( pShadCrsr && 0 != (rMEvt.GetModifier() + rMEvt.GetButtons() ) )
+ delete pShadCrsr, pShadCrsr = 0;
+
+ BOOL bIsDocReadOnly = rView.GetDocShell()->IsReadOnly();
+
+ SET_CURR_SHELL( &rSh );
+
+ //aPixPt == Point in Pixel, rel. zu ChildWin
+ //aDocPt == Point in Twips, Dokumentkoordinaten
+ const Point aPixPt( rMEvt.GetPosPixel() );
+ const Point aDocPt( PixelToLogic( aPixPt ) );
+
+ if ( IsChainMode() )
+ {
+ UpdatePointer( aDocPt, rMEvt.GetModifier() );
+ if ( rMEvt.IsLeaveWindow() )
+ rView.GetViewFrame()->HideStatusText();
+ return;
+ }
+
+ SdrView *pSdrView = rSh.GetDrawView();
+
+ const SwCallMouseEvent aLastCallEvent( aSaveCallEvent );
+ aSaveCallEvent.Clear();
+
+ if ( !bIsDocReadOnly && pSdrView && pSdrView->MouseMove(rMEvt,this) )
+ {
+ SetPointer( POINTER_TEXT );
+ return; // Event von der SdrView ausgewertet
+ }
+
+ const Point aOldPt( rSh.VisArea().Pos() );
+ const BOOL bInsWin = rSh.VisArea().IsInside( aDocPt );
+
+ if( pShadCrsr && !bInsWin )
+ delete pShadCrsr, pShadCrsr = 0;
+
+ // Position ist noetig fuer OS/2, da dort nach einem MB-Down
+ // offensichtlich sofort ein MB-Move gerufen wird.
+ if( bDDTimerStarted )
+ {
+ Point aDD( SwEditWin::nDDStartPosX, SwEditWin::nDDStartPosY );
+ aDD = LogicToPixel( aDD );
+ Rectangle aRect( aDD.X()-3, aDD.Y()-3, aDD.X()+3, aDD.Y()+3 );
+ if ( !aRect.IsInside( aPixPt ) ) // MA 23. May. 95: Tatterschutz.
+ StopDDTimer( &rSh, aDocPt );
+ }
+
+ if ( bInsDraw && rView.GetDrawFuncPtr() )
+ {
+ rView.GetDrawFuncPtr()->MouseMove( rMEvt );
+ if ( !bInsWin )
+ {
+ Point aTmp( aDocPt );
+ aTmp += rSh.VisArea().Pos() - aOldPt;
+ LeaveArea( aTmp );
+ }
+ else
+ EnterArea();
+ return;
+ }
+
+ if( !bIsDocReadOnly && bInsWin && !pApplyTempl && !rSh.IsInSelect() &&
+ rSh.IsMouseTabCol( aDocPt ) && !rSh.IsTableMode())
+ {
+ //Zuppeln von Tabellenspalten aus dem Dokument heraus.
+ SetPointer( POINTER_HSIZEBAR );
+ return;
+ }
+
+ BOOL bDelShadCrsr = TRUE;
+
+ switch ( rMEvt.GetModifier() + rMEvt.GetButtons() )
+ {
+ case MOUSE_LEFT:
+ if( pAnchorMarker )
+ {
+ Point aNew = rSh.FindAnchorPos( aDocPt );
+ if( aNew.X() || aNew.Y() )
+ {
+ pAnchorMarker->SetPos( aNew );
+ pAnchorMarker->SetLastPos( aDocPt );
+ pSdrView->RefreshAllIAOManagers();
+ }
+ }
+ if ( bInsDraw )
+ {
+ if ( !bMBPressed )
+ break;
+ if ( bIsInMove || IsMinMove( aStartPos, aPixPt ) )
+ {
+ if ( !bInsWin )
+ LeaveArea( aDocPt );
+ else
+ EnterArea();
+ if ( rView.GetDrawFuncPtr() )
+ {
+ pSdrView->SetOrtho(FALSE);
+ rView.GetDrawFuncPtr()->MouseMove( rMEvt );
+ }
+ bIsInMove = TRUE;
+ }
+ return;
+ }
+ case MOUSE_LEFT + KEY_SHIFT:
+ case MOUSE_LEFT + KEY_SHIFT + KEY_MOD1:
+ if ( !bMBPressed )
+ break;
+ case MOUSE_LEFT + KEY_MOD1:
+ if ( bFrmDrag && rSh.IsSelFrmMode() )
+ {
+ if( !bMBPressed )
+ break;
+
+ if ( bIsInMove || IsMinMove( aStartPos, aPixPt ) )
+ {
+ // Event-Verarbeitung fuers Resizen
+ if( pSdrView->HasMarkedObj() )
+ {
+ const SwFrmFmt* pFlyFmt;
+ const SvxMacro* pMacro;
+
+ const Point aSttPt( PixelToLogic( aStartPos ) );
+
+ // geht es los?
+ if( HDL_USER == eSdrMoveHdl )
+ {
+ SdrHdl* pHdl = pSdrView->HitHandle( aSttPt, *this );
+ eSdrMoveHdl = pHdl ? pHdl->GetKind() : HDL_MOVE;
+ }
+
+ USHORT nEvent = HDL_MOVE == eSdrMoveHdl
+ ? SW_EVENT_FRM_MOVE
+ : SW_EVENT_FRM_RESIZE;
+
+ if( 0 != ( pFlyFmt = rSh.GetFlyFrmFmt() ) &&
+ 0 != ( pMacro = pFlyFmt->GetMacro().GetMacroTable().
+ Get( nEvent )) &&
+// oder nur z.B. alle 20 Twip bescheid sagen?
+// ( 20 > Abs( aRszMvHdlPt.X() - aDocPt.X() ) ||
+// 20 > Abs( aRszMvHdlPt.Y() - aDocPt.Y() ) )
+ aRszMvHdlPt != aDocPt )
+ {
+ aRszMvHdlPt = aDocPt;
+ USHORT nPos = 0;
+ String sRet;
+ SbxArrayRef xArgs = new SbxArray;
+ SbxVariableRef xVar = new SbxVariable;
+ xVar->PutString( pFlyFmt->GetName() );
+ xArgs->Put( &xVar, ++nPos );
+
+ if( SW_EVENT_FRM_RESIZE == nEvent )
+ {
+ xVar = new SbxVariable;
+ xVar->PutUShort( eSdrMoveHdl );
+ xArgs->Put( &xVar, ++nPos );
+ }
+
+ xVar = new SbxVariable;
+ xVar->PutLong( aDocPt.X() - aSttPt.X() );
+ xArgs->Put( &xVar, ++nPos );
+ xVar = new SbxVariable;
+ xVar->PutLong( aDocPt.Y() - aSttPt.Y() );
+ xArgs->Put( &xVar, ++nPos );
+
+ ReleaseMouse();
+
+ rSh.ExecMacro( *pMacro, &sRet, &xArgs );
+
+ CaptureMouse();
+
+ if( sRet.Len() && 0 != sRet.ToInt32() )
+ return ;
+ }
+ }
+ // Event-Verarbeitung fuers Resizen
+
+ if( bIsDocReadOnly )
+ break;
+
+ if ( rMEvt.IsShift() )
+ {
+ pSdrView->SetOrtho(TRUE);
+ pSdrView->SetAngleSnapEnabled(TRUE);
+ }
+ else
+ {
+ pSdrView->SetOrtho(FALSE);
+ pSdrView->SetAngleSnapEnabled(FALSE);
+ }
+
+ (rSh.*rSh.fnDrag)( &aDocPt, rMEvt.IsShift() );
+ bIsInMove = TRUE;
+ }
+ else if( bIsDocReadOnly )
+ break;
+
+ if ( !bInsWin )
+ {
+ Point aTmp( aDocPt );
+ aTmp += rSh.VisArea().Pos() - aOldPt;
+ LeaveArea( aTmp );
+ }
+ else if(bIsInMove)
+ EnterArea();
+ return;
+ }
+ if ( !rSh.IsSelFrmMode() && !bDDINetAttr &&
+ (IsMinMove( aStartPos,aPixPt ) || bIsInMove) &&
+ (rSh.IsInSelect() || !rSh.ChgCurrPam( aDocPt )) )
+ {
+ if ( pSdrView )
+ {
+ if ( rMEvt.IsShift() )
+ pSdrView->SetOrtho(TRUE);
+ else
+ pSdrView->SetOrtho(FALSE);
+ }
+ if ( !bInsWin )
+ {
+ Point aTmp( aDocPt );
+ aTmp += rSh.VisArea().Pos() - aOldPt;
+ LeaveArea( aTmp );
+ }
+ else
+ {
+ //JP 24.09.98: Fix fuer die Bugs 55592 / 55931
+ //JP 23.04.99: Fix fuer den Bugs 65289
+ //JP 06.07.99: Fix fuer den Bugs 67360
+ if( !rMEvt.IsSynthetic() &&
+ !(( MOUSE_LEFT + KEY_MOD1 ==
+ rMEvt.GetModifier() + rMEvt.GetButtons() ) &&
+ rSh.Is_FnDragEQBeginDrag() && !rSh.IsAddMode() ))
+ {
+ (rSh.*rSh.fnDrag)( &aDocPt,FALSE );
+
+ bValidCrsrPos = !(CRSR_POSCHG & (rSh.*rSh.fnSetCrsr)(&aDocPt,FALSE));
+ EnterArea();
+ }
+ }
+ }
+ bDDINetAttr = FALSE;
+ break;
+ case 0:
+ if ( pApplyTempl )
+ {
+ UpdatePointer(aDocPt, 0); // evtl. muss hier ein Rahmen markiert werden
+ break;
+ }
+ case KEY_SHIFT:
+ case KEY_MOD2:
+ case KEY_MOD1:
+ if ( !bInsDraw )
+ {
+ BOOL bTstShdwCrsr = TRUE;
+
+ UpdatePointer( aDocPt, rMEvt.GetModifier() );
+
+ const SwFrmFmt* pFmt;
+ const SwFmtINetFmt* pINet = 0;
+ SwContentAtPos aCntntAtPos( SwContentAtPos::SW_INETATTR );
+ if( rSh.GetContentAtPos( aDocPt, aCntntAtPos ) )
+ pINet = (SwFmtINetFmt*)aCntntAtPos.aFnd.pAttr;
+
+ const void* pTmp = pINet;
+
+ if( pINet ||
+ 0 != ( pTmp = pFmt = rSh.GetFmtFromAnyObj( aDocPt )))
+ {
+ bTstShdwCrsr = FALSE;
+ if( pTmp == pINet )
+ aSaveCallEvent.Set( pINet );
+ else
+ {
+ IMapObject* pIMapObj = pFmt->GetIMapObject( aDocPt );
+ if( pIMapObj )
+ aSaveCallEvent.Set( pFmt, pIMapObj );
+ else
+ aSaveCallEvent.Set( EVENT_OBJECT_URLITEM, pFmt );
+ }
+
+ // sollte wir ueber einem InternetFeld mit einem
+ // gebundenen Macro stehen?
+ if( aSaveCallEvent != aLastCallEvent )
+ {
+ if( aLastCallEvent.HasEvent() )
+ rSh.CallEvent( SFX_EVENT_MOUSEOUT_OBJECT,
+ aLastCallEvent, TRUE );
+ // 0 besagt, das das Object gar keine Tabelle hat
+ if( !rSh.CallEvent( SFX_EVENT_MOUSEOVER_OBJECT,
+ aSaveCallEvent ))
+ aSaveCallEvent.Clear();
+ }
+ }
+ else if( aLastCallEvent.HasEvent() )
+ {
+ // Cursor stand auf einem Object
+ rSh.CallEvent( SFX_EVENT_MOUSEOUT_OBJECT,
+ aLastCallEvent, TRUE );
+ }
+
+ if( bTstShdwCrsr && bInsWin && !bIsDocReadOnly &&
+ !bInsFrm && !rSh.IsBrowseMode() &&
+ rSh.GetViewOptions()->IsShadowCursor() &&
+ !(rMEvt.GetModifier() + rMEvt.GetButtons()) &&
+ !rSh.HasSelection() && !GetConnectMetaFile() )
+ {
+ SwRect aRect;
+ SwHoriOrient eOrient;
+ SwFillMode eMode = (SwFillMode)rSh.GetViewOptions()->GetShdwCrsrFillMode();
+ if( rSh.GetShadowCrsrPos( aDocPt, eMode, aRect, eOrient ))
+ {
+ if( !pShadCrsr )
+ pShadCrsr = new SwShadowCursor( *this,
+ rSh.GetViewOptions()->GetShdwCrsrColor() );
+ if( HORI_RIGHT != eOrient && HORI_CENTER != eOrient )
+ eOrient = HORI_LEFT;
+ pShadCrsr->SetPos( aRect.Pos(), aRect.Height(), eOrient );
+ bDelShadCrsr = FALSE;
+ }
+ }
+ }
+ break;
+ }
+
+ if( bDelShadCrsr && pShadCrsr )
+ delete pShadCrsr, pShadCrsr = 0;
+ bWasShdwCrsr = FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Button Up
+ --------------------------------------------------------------------*/
+
+
+void SwEditWin::MouseButtonUp(const MouseEvent& rMEvt)
+{
+ BOOL bCallBase = TRUE;
+
+ BOOL bCallShadowCrsr = bWasShdwCrsr;
+ bWasShdwCrsr = FALSE;
+ if( pShadCrsr )
+ delete pShadCrsr, pShadCrsr = 0;
+
+ SdrHdlKind eOldSdrMoveHdl = eSdrMoveHdl;
+ eSdrMoveHdl = HDL_USER; // fuer die MoveEvents - wieder zuruecksetzen
+
+ // sicherheitshalber zuruecksetzen Bug 27900
+ rView.SetTabColFromDoc( FALSE );
+ SwWrtShell &rSh = rView.GetWrtShell();
+ SET_CURR_SHELL( &rSh );
+ SdrView *pSdrView = rSh.GetDrawView();
+ if ( pSdrView )
+ {
+ pSdrView->SetOrtho(FALSE);
+
+ if ( pSdrView->MouseButtonUp( rMEvt,this ) )
+ {
+ rSh.GetView().GetViewFrame()->GetBindings().InvalidateAll(FALSE);
+ return; // Event von der SdrView ausgewertet
+ }
+ }
+ //MouseButtonUp nur bearbeiten, wenn auch das Down an dieses Fenster ging.
+ if ( !bMBPressed )
+ {
+// OS 25.02.97 Undo fuer die Giesskann ist bereits im CommandHdl
+//JP 29.09.95: so sollte es sein!!! if(pApplyTempl->bUndo)
+// if( pApplyTempl && MOUSE_RIGHT == rMEvt.GetModifier() + rMEvt.GetButtons() )
+// rSh.Do( SwWrtShell::UNDO );
+ return;
+ }
+
+ Point aDocPt( PixelToLogic( rMEvt.GetPosPixel() ) );
+
+ if ( bDDTimerStarted )
+ {
+ StopDDTimer( &rSh, aDocPt );
+ bMBPressed = FALSE;
+ if ( rSh.IsSelFrmMode() )
+ {
+ (rSh.*rSh.fnEndDrag)( &aDocPt, FALSE );
+ bFrmDrag = FALSE;
+ }
+ bNoInterrupt = FALSE;
+ ReleaseMouse();
+ return;
+ }
+
+ if( pAnchorMarker )
+ {
+ Point aPnt( pAnchorMarker->GetLastPos() );
+ pSdrView->RefreshAllIAOManagers();
+ DELETEZ( pAnchorMarker );
+ if( aPnt.X() || aPnt.Y() )
+ rSh.FindAnchorPos( aPnt, TRUE );
+ }
+ if ( bInsDraw && rView.GetDrawFuncPtr() )
+ {
+ if ( rView.GetDrawFuncPtr()->MouseButtonUp( rMEvt ) )
+ {
+ if (rView.GetDrawFuncPtr()) // Koennte im MouseButtonUp zerstoert worden sein
+ {
+ rView.GetDrawFuncPtr()->Deactivate();
+
+ if (!rView.IsDrawMode())
+ rView.SetDrawFuncPtr(NULL);
+ }
+
+ if ( rSh.IsObjSelected() )
+ {
+ rSh.EnterSelFrmMode();
+ if (!rView.GetDrawFuncPtr())
+ StdDrawMode(SID_OBJECT_SELECT);
+ }
+ else if ( rSh.IsFrmSelected() )
+ {
+ rSh.EnterSelFrmMode();
+ StopInsFrm();
+ }
+ else
+ {
+ const Point aDocPos( PixelToLogic( aStartPos ) );
+ bValidCrsrPos = !(CRSR_POSCHG & (rSh.*rSh.fnSetCrsr)(&aDocPos,FALSE));
+ rSh.Edit();
+ }
+
+ rView.AttrChangedNotify( &rSh );
+ }
+ else if (rMEvt.GetButtons() == MOUSE_RIGHT && rSh.IsDrawCreate())
+ rView.GetDrawFuncPtr()->BreakCreate(); // Zeichnen abbrechen
+
+ bNoInterrupt = FALSE;
+ ReleaseMouse();
+ return;
+ }
+ BOOL bPopMode = FALSE;
+ switch ( rMEvt.GetModifier() + rMEvt.GetButtons() )
+ {
+ case MOUSE_LEFT:
+ if ( bInsDraw && rSh.IsDrawCreate() )
+ {
+ if ( rView.GetDrawFuncPtr() && rView.GetDrawFuncPtr()->MouseButtonUp(rMEvt) == TRUE )
+ {
+ rView.GetDrawFuncPtr()->Deactivate();
+ rView.AttrChangedNotify( &rSh );
+ if ( rSh.IsObjSelected() )
+ rSh.EnterSelFrmMode();
+ if ( rView.GetDrawFuncPtr() && bInsFrm )
+ StopInsFrm();
+ }
+ bCallBase = FALSE;
+ break;
+ }
+ case MOUSE_LEFT + KEY_MOD1:
+ case MOUSE_LEFT + KEY_MOD2:
+ case MOUSE_LEFT + KEY_SHIFT + KEY_MOD1:
+ if ( bFrmDrag && rSh.IsSelFrmMode() )
+ {
+ if ( rMEvt.IsMod1() ) //Kopieren und nicht moven.
+ {
+ //Drag abbrechen, statt dessen internes Copy verwenden
+ Rectangle aRect;
+ rSh.GetDrawView()->TakeActionRect( aRect );
+ if (!aRect.IsEmpty())
+ {
+ rSh.BreakDrag();
+ Point aEndPt, aSttPt;
+ if ( rSh.GetSelFrmType() & FRMTYPE_FLY_ATCNT )
+ {
+ aEndPt = aRect.TopLeft();
+ aSttPt = rSh.GetDrawView()->GetAllMarkedRect().TopLeft();
+ }
+ else
+ {
+ aEndPt = aRect.Center();
+ aSttPt = rSh.GetDrawView()->GetAllMarkedRect().Center();
+ }
+ if ( aSttPt != aEndPt )
+ {
+ rSh.StartUndo( UIUNDO_DRAG_AND_COPY );
+ rSh.Copy(&rSh, aSttPt, aEndPt, FALSE);
+ rSh.EndUndo( UIUNDO_DRAG_AND_COPY );
+ }
+ }
+ else
+ (rSh.*rSh.fnEndDrag)( &aDocPt,FALSE );
+ }
+ else
+ {
+ {
+ const SwFrmFmt* pFlyFmt;
+ const SvxMacro* pMacro;
+
+ USHORT nEvent = HDL_MOVE == eOldSdrMoveHdl
+ ? SW_EVENT_FRM_MOVE
+ : SW_EVENT_FRM_RESIZE;
+
+ if( 0 != ( pFlyFmt = rSh.GetFlyFrmFmt() ) &&
+ 0 != ( pMacro = pFlyFmt->GetMacro().GetMacroTable().
+ Get( nEvent )) )
+ {
+ const Point aSttPt( PixelToLogic( aStartPos ) );
+ aRszMvHdlPt = aDocPt;
+ USHORT nPos = 0;
+ SbxArrayRef xArgs = new SbxArray;
+ SbxVariableRef xVar = new SbxVariable;
+ xVar->PutString( pFlyFmt->GetName() );
+ xArgs->Put( &xVar, ++nPos );
+
+ if( SW_EVENT_FRM_RESIZE == nEvent )
+ {
+ xVar = new SbxVariable;
+ xVar->PutUShort( eOldSdrMoveHdl );
+ xArgs->Put( &xVar, ++nPos );
+ }
+
+ xVar = new SbxVariable;
+ xVar->PutLong( aDocPt.X() - aSttPt.X() );
+ xArgs->Put( &xVar, ++nPos );
+ xVar = new SbxVariable;
+ xVar->PutLong( aDocPt.Y() - aSttPt.Y() );
+ xArgs->Put( &xVar, ++nPos );
+
+ xVar = new SbxVariable;
+ xVar->PutUShort( 1 );
+ xArgs->Put( &xVar, ++nPos );
+
+ ReleaseMouse();
+
+ rSh.ExecMacro( *pMacro, 0, &xArgs );
+
+ CaptureMouse();
+ }
+ }
+ (rSh.*rSh.fnEndDrag)( &aDocPt,FALSE );
+ }
+ bFrmDrag = FALSE;
+ bCallBase = FALSE;
+ break;
+ }
+ bPopMode = TRUE;
+ // no break
+ case MOUSE_LEFT + KEY_SHIFT:
+ if (rSh.IsSelFrmMode())
+ {
+
+ (rSh.*rSh.fnEndDrag)( &aDocPt, FALSE );
+ bFrmDrag = FALSE;
+ bCallBase = FALSE;
+ break;
+ }
+
+ if( bHoldSelection )
+ {
+ //JP 27.04.99: Bug 65389 - das EndDrag sollte auf jedenfall
+ // gerufen werden.
+ bHoldSelection = FALSE;
+ (rSh.*rSh.fnEndDrag)( &aDocPt, FALSE );
+ }
+ else
+ {
+ if ( !rSh.IsInSelect() && rSh.ChgCurrPam( aDocPt ) )
+ {
+ const BOOL bTmp = bNoInterrupt;
+ bNoInterrupt = FALSE;
+ { // nur temp. Move-Kontext aufspannen, da sonst die
+ // Abfrage auf die Inhaltsform nicht funktioniert!!!
+ MV_KONTEXT( &rSh );
+ const Point aDocPos( PixelToLogic( aStartPos ) );
+ bValidCrsrPos = !(CRSR_POSCHG & (rSh.*rSh.fnSetCrsr)(&aDocPos,FALSE));
+ }
+ bNoInterrupt = bTmp;
+
+ }
+ else
+ {
+ BOOL bInSel = rSh.IsInSelect();
+ (rSh.*rSh.fnEndDrag)( &aDocPt, FALSE );
+
+ // Internetfield? --> Link-Callen (DocLaden!!)
+//JP 18.10.96: Bug 32437 -
+// if( !rSh.HasSelection() )
+ if( !bInSel )
+ {
+ USHORT nFilter = KEY_SHIFT == rMEvt.GetModifier()
+ ? URLLOAD_DOWNLOADFILTER
+ : URLLOAD_NOFILTER;
+ if( KEY_MOD1 == rMEvt.GetModifier() )
+ nFilter |= URLLOAD_NEWVIEW;
+
+ BOOL bExecHyperlinks = rSh.GetViewOptions()->IsExecHyperlinks()^
+ (rMEvt.GetModifier() == KEY_MOD2 ? TRUE : FALSE);
+ if(pApplyTempl)
+ bExecHyperlinks = FALSE;
+ SwContentAtPos aCntntAtPos( SwContentAtPos::SW_CLICKFIELD |
+ SwContentAtPos::SW_INETATTR );
+
+ if( rSh.GetContentAtPos( aDocPt, aCntntAtPos, TRUE ) )
+ {
+ BOOL bViewLocked = rSh.IsViewLocked();
+ if( !bViewLocked && !rSh.IsReadOnlyAvailable() &&
+ aCntntAtPos.IsInProtectSect() )
+ rSh.LockView( TRUE );
+
+ ReleaseMouse();
+ if( SwContentAtPos::SW_FIELD == aCntntAtPos.eCntntAtPos )
+ {
+ if( bExecHyperlinks )
+ rSh.ClickToField( *aCntntAtPos.aFnd.pFld, nFilter );
+ }
+ else if( bExecHyperlinks )
+ {
+ rSh.ClickToINetAttr( *(SwFmtINetFmt*)
+ aCntntAtPos.aFnd.pAttr, nFilter );
+ }
+ rSh.LockView( bViewLocked );
+ bCallShadowCrsr = FALSE;
+ }
+ else if( bExecHyperlinks )
+ {
+ aCntntAtPos = SwContentAtPos( SwContentAtPos::SW_FTN );
+ if( !rSh.GetContentAtPos( aDocPt, aCntntAtPos, TRUE ) )
+ {
+ SdrViewEvent aVEvt;
+
+ if (pSdrView)
+ pSdrView->PickAnything(rMEvt, SDRMOUSEBUTTONDOWN, aVEvt);
+
+ if (pSdrView && aVEvt.eEvent == SDREVENT_EXECUTEURL)
+ {
+ // URL-Feld getroffen
+ const SvxURLField *pField = aVEvt.pURLField;
+ if (pField)
+ {
+ String sURL(pField->GetURL());
+ String sTarget(pField->GetTargetFrame());
+ ::LoadURL( sURL, &rSh, nFilter, &sTarget);
+ }
+ bCallShadowCrsr = FALSE;
+ }
+ else
+ {
+ // Grafik getroffen
+ ReleaseMouse();
+ if( rSh.ClickToINetGrf( aDocPt, nFilter ))
+ bCallShadowCrsr = FALSE;
+ }
+ }
+ }
+
+ if( bCallShadowCrsr &&
+ rSh.GetViewOptions()->IsShadowCursor() &&
+ MOUSE_LEFT == (rMEvt.GetModifier() + rMEvt.GetButtons()) &&
+ !rSh.HasSelection() &&
+ !GetConnectMetaFile() &&
+ rSh.VisArea().IsInside( aDocPt ))
+ {
+ if( UNDO_INS_FROM_SHADOWCRSR == rSh.GetUndoIds() )
+ rSh.Undo();
+ SwFillMode eMode = (SwFillMode)rSh.GetViewOptions()->GetShdwCrsrFillMode();
+ rSh.SetShadowCrsrPos( aDocPt, eMode );
+ }
+ }
+ }
+ bCallBase = FALSE;
+
+ }
+
+ // gfs. im Down gepushten Mode wieder zuruecksetzen
+ if ( bPopMode && bModePushed )
+ {
+ rSh.PopMode();
+ bModePushed = FALSE;
+ bCallBase = FALSE;
+ }
+ break;
+
+ default:
+ ReleaseMouse();
+ return;
+ }
+
+ if( pApplyTempl )
+ {
+ int eSelection = rSh.GetSelectionType();
+ if( pApplyTempl->nColor )
+ {
+ USHORT nId = 0;
+ switch( pApplyTempl->nColor )
+ {
+ case SID_ATTR_CHAR_COLOR_EXT:
+ nId = RES_CHRATR_COLOR;
+ break;
+ case SID_ATTR_CHAR_COLOR_BACKGROUND_EXT:
+ nId = RES_CHRATR_BACKGROUND;
+ break;
+ }
+ if( nId && (SwWrtShell::SEL_TXT|SwWrtShell::SEL_TBL) & eSelection)
+ {
+ if( rSh.IsSelection() && !rSh.HasReadonlySel() )
+ {
+ if(nId == RES_CHRATR_BACKGROUND)
+ {
+ Color aColor( COL_TRANSPARENT );
+ if( !SwEditWin::bTransparentBackColor )
+ aColor = SwEditWin::aTextBackColor;
+ rSh.SetAttr( SvxBrushItem( aColor, nId ) );
+ }
+ else
+ rSh.SetAttr( SvxColorItem(SwEditWin::aTextColor, nId) );
+ rSh.UnSetVisCrsr();
+ rSh.EnterStdMode();
+ rSh.SetVisCrsr(aDocPt);
+
+ pApplyTempl->bUndo = TRUE;
+ bCallBase = FALSE;
+ aTemplateTimer.Stop();
+ }
+ else if(rMEvt.GetClicks() == 1)
+ {
+ // keine Selektion -> also Giesskanne abschalten
+ aTemplateTimer.Start();
+ }
+ }
+ }
+ else
+ {
+ switch ( pApplyTempl->eType )
+ {
+ case SFX_STYLE_FAMILY_PARA:
+ if( (( SwWrtShell::SEL_TXT | SwWrtShell::SEL_TBL )
+ & eSelection ) && !rSh.HasReadonlySel() )
+ {
+ rSh.SetTxtFmtColl( pApplyTempl->aColl.pTxtColl );
+ pApplyTempl->bUndo = TRUE;
+ bCallBase = FALSE;
+ }
+ break;
+ case SFX_STYLE_FAMILY_CHAR:
+ if( (( SwWrtShell::SEL_TXT | SwWrtShell::SEL_TBL )
+ & eSelection ) && !rSh.HasReadonlySel() )
+ {
+ rSh.SetAttr( SwFmtCharFmt(pApplyTempl->aColl.pCharFmt) );
+ rSh.UnSetVisCrsr();
+ rSh.EnterStdMode();
+ rSh.SetVisCrsr(aDocPt);
+ pApplyTempl->bUndo = TRUE;
+ bCallBase = FALSE;
+ }
+ break;
+ case SFX_STYLE_FAMILY_FRAME :
+ {
+ const SwFrmFmt* pFmt = rSh.GetFmtFromObj( aDocPt );
+ if(PTR_CAST(SwFlyFrmFmt, pFmt))
+ {
+ rSh.SetFrmFmt( pApplyTempl->aColl.pFrmFmt, FALSE, &aDocPt );
+ pApplyTempl->bUndo = TRUE;
+ bCallBase = FALSE;
+ }
+ break;
+ }
+ case SFX_STYLE_FAMILY_PAGE:
+ // Kein Undo bei Seitenvorlagen
+ rSh.ChgCurPageDesc( *pApplyTempl->aColl.pPageDesc );
+ bCallBase = FALSE;
+ break;
+ case SFX_STYLE_FAMILY_PSEUDO:
+ if( !rSh.HasReadonlySel() )
+ {
+ rSh.SetCurNumRule( *pApplyTempl->aColl.pNumRule );
+ bCallBase = FALSE;
+ pApplyTempl->bUndo = TRUE;
+ }
+ break;
+ }
+ }
+
+ }
+ ReleaseMouse();
+ // Hier kommen nur verarbeitete MouseEvents an; nur bei diesen duerfen
+ // die Modi zurueckgesetzt werden.
+ bMBPressed = FALSE;
+
+ //sicherheitshalber aufrufen, da jetzt das Selektieren bestimmt zu Ende ist.
+ //Andernfalls koennte der Timeout des Timers Kummer machen.
+ EnterArea();
+ bNoInterrupt = FALSE;
+
+ if (bCallBase)
+ Window::MouseButtonUp(rMEvt);
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Vorlage anwenden
+ --------------------------------------------------------------------*/
+
+
+void SwEditWin::SetApplyTemplate(const SwApplyTemplate &rTempl)
+{
+ static BOOL bIdle = FALSE;
+ DELETEZ(pApplyTempl);
+ SwWrtShell &rSh = rView.GetWrtShell();
+
+ if(rTempl.nColor)
+ {
+ pApplyTempl = new SwApplyTemplate( rTempl );
+ SetPointer( POINTER_FILL );
+ rSh.NoEdit( FALSE );
+ bIdle = rSh.GetViewOptions()->IsIdle();
+ ((SwViewOption *)rSh.GetViewOptions())->SetIdle( FALSE );
+ }
+ else if( rTempl.eType )
+ {
+ pApplyTempl = new SwApplyTemplate( rTempl );
+ SetPointer( POINTER_FILL );
+ rSh.NoEdit( FALSE );
+ bIdle = rSh.GetViewOptions()->IsIdle();
+ ((SwViewOption *)rSh.GetViewOptions())->SetIdle( FALSE );
+ }
+ else
+ {
+ SetPointer( POINTER_TEXT );
+ rSh.UnSetVisCrsr();
+
+ ((SwViewOption *)rSh.GetViewOptions())->SetIdle( bIdle );
+ if ( !rSh.IsSelFrmMode() )
+ rSh.Edit();
+ }
+
+ static USHORT __READONLY_DATA aInva[] =
+ {
+ SID_STYLE_WATERCAN,
+ SID_ATTR_CHAR_COLOR_EXT,
+ SID_ATTR_CHAR_COLOR_BACKGROUND_EXT,
+ 0
+ };
+ rView.GetViewFrame()->GetBindings().Invalidate(aInva);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: ctor
+ --------------------------------------------------------------------*/
+
+
+SwEditWin::SwEditWin(Window *pParent, SwView &rMyView):
+ Window(pParent, WinBits(WB_CLIPCHILDREN | WB_DIALOGCONTROL)),
+ aActHitType(SDRHIT_NONE),
+ eDrawMode(OBJ_NONE),
+ pApplyTempl(0),
+ rView( rMyView ),
+ pAnchorMarker( 0 ),
+ pUserMarker( 0 ),
+ pUserMarkerObj( 0 ),
+ pShadCrsr( 0 ),
+ nDropAction( 0 ),
+ nDropFormat( 0 ),
+ nDropDestination( 0 ),
+ nInsFrmColCount( 1 ),
+ bLockInput(FALSE)
+{
+ SetHelpId(HID_EDIT_WIN);
+ EnableChildTransparentMode();
+ SetDialogControlFlags( WINDOW_DLGCTRL_RETURN | WINDOW_DLGCTRL_WANTFOCUS );
+
+ bLinkRemoved = bMBPressed = bInsDraw = bInsFrm = bGrfToOle =
+ bIsInDrag = bOldIdle = bOldIdleSet = bChainMode = bWasShdwCrsr = FALSE;
+
+ SetMapMode(MapMode(MAP_TWIP));
+
+ SetPointer( POINTER_TEXT );
+ aTimer.SetTimeoutHdl(LINK(this, SwEditWin, TimerHandler));
+ EnableDrop();
+
+ bTblInsDelMode = FALSE;
+ aKeyInputTimer.SetTimeout( 3000 );
+ aKeyInputTimer.SetTimeoutHdl(LINK(this, SwEditWin, KeyInputTimerHandler));
+
+ aKeyInputFlushTimer.SetTimeout( 200 );
+ aKeyInputFlushTimer.SetTimeoutHdl(LINK(this, SwEditWin, KeyInputFlushHandler));
+
+ // TemplatePointer fuer Farben soll nach Einfachclick
+ // ohne Selektion zurueckgesetzt werden
+ aTemplateTimer.SetTimeout(400);
+ aTemplateTimer.SetTimeoutHdl(LINK(this, SwEditWin, TemplateTimerHdl));
+
+ //JP 16.12.98: temporaere Loesung!!! Sollte bei jeder Cursorbewegung
+ // den Font von der akt. einfuege Position setzen!
+ if( !rMyView.GetDocShell()->IsReadOnly() )
+ {
+ Font aFont;
+ SetInputContext( InputContext( aFont, INPUTCONTEXT_TEXT |
+ INPUTCONTEXT_EXTTEXTINPUT ) );
+ }
+}
+
+
+
+SwEditWin::~SwEditWin()
+{
+ aKeyInputTimer.Stop();
+ delete pShadCrsr;
+ if( pQuickHlpData->bClear && rView.GetWrtShellPtr() )
+ pQuickHlpData->Stop( rView.GetWrtShell() );
+ bExecuteDrag = FALSE;
+ delete pApplyTempl;
+ rView.SetDrawFuncPtr(NULL);
+ delete pUserMarker;
+ delete pAnchorMarker;
+}
+
+
+
+
+//Fuer MSC 2.0 W95
+#pragma optimize("",off)
+
+void SwEditWin::GrfToOle()
+{
+ //Wir machen aus einer Grafik ein OLE-Object (StarImage)
+ //Wird von MouseButtonDown bei Doppelklick gerufen.
+
+ //Wer das nicht versteht ist selber schuld ;-)
+ SvStorageRef aStor = new SvStorage( aEmptyStr );
+ SvInPlaceObjectRef aIPObj;
+#ifdef SO3
+ aIPObj = &((SvFactory *)SvInPlaceObject::ClassFactory())->CreateAndInit( *SIM_MOD()->pSimDrawDocShellFactory, aStor );
+#else
+ aIPObj = &SvInPlaceObject::ClassFactory()->CreateAndInit( *SIM_MOD()->pSimDrawDocShellFactory, aStor );
+#endif
+
+ if ( aIPObj.Is() )
+ {
+ SwWrtShell &rSh = GetView().GetWrtShell();
+ SimDLL::Update( aIPObj, rSh.GetGraphic(), rSh.GetOut() );
+
+ Size aSz;
+ rSh.GetGrfSize( aSz );
+ aSz = OutputDevice::LogicToLogic
+ ( aSz, MapMode( MAP_TWIP), MapMode( aIPObj->GetMapUnit()));
+ aIPObj->SetVisAreaSize( aSz );
+
+ rSh.StartAllAction();
+ rSh.GrfToOle( aIPObj );
+ rSh.EndAllAction();
+ bGrfToOle = TRUE;
+ }
+}
+
+
+
+void SwEditWin::OleToGrf()
+{
+ //Wenn wir ein Ole an der Hand haben und dies ein SIM-Object ist, so
+ //wird daraus wieder eine Graphic.
+
+ if ( bGrfToOle )
+ {
+ SwWrtShell &rSh = GetView().GetWrtShell();
+ if ( rSh.IsOLEObj() )
+ {
+ SvInPlaceObjectRef aRef = rSh.GetOLEObj();
+
+ //Wer das nicht versteht ist selber schuld ;-)
+ if ( SimModuleDummy::HasID( *aRef->GetSvFactory() ) )
+ {
+ Graphic aGrf( SimDLL::GetGraphic( aRef ) );
+ rSh.StartAllAction();
+ rSh.OleToGrf( &aGrf );
+ rSh.EndAllAction();
+ }
+ }
+ bGrfToOle = FALSE;
+ }
+}
+
+#pragma optimize("",on)
+
+/******************************************************************************
+ * Beschreibung: DrawTextEditMode einschalten
+ ******************************************************************************/
+
+
+void SwEditWin::EnterDrawTextMode( const Point& aDocPos )
+{
+ if ( rView.EnterDrawTextMode(aDocPos) == TRUE )
+ {
+ if (rView.GetDrawFuncPtr())
+ {
+ rView.GetDrawFuncPtr()->Deactivate();
+ rView.SetDrawFuncPtr(NULL);
+ rView.LeaveDrawCreate();
+ }
+ rView.NoRotate();
+ rView.AttrChangedNotify( &rView.GetWrtShell() );
+ }
+}
+
+/******************************************************************************
+ * Beschreibung: DrawMode einschalten
+ ******************************************************************************/
+
+
+
+BOOL SwEditWin::EnterDrawMode(const MouseEvent& rMEvt, const Point& aDocPos)
+{
+ SwWrtShell &rSh = rView.GetWrtShell();
+ SdrView *pSdrView = rSh.GetDrawView();
+
+// if ( GetDrawFuncPtr() && (aActHitType == SDRHIT_NONE || rSh.IsDrawCreate()) )
+ if ( rView.GetDrawFuncPtr() )
+ {
+ if (rSh.IsDrawCreate())
+ return TRUE;
+
+ BOOL bRet = rView.GetDrawFuncPtr()->MouseButtonDown( rMEvt );
+ rView.AttrChangedNotify( &rSh );
+ return bRet;
+ }
+
+ if ( pSdrView && pSdrView->IsTextEdit() )
+ {
+ rSh.EndTextEdit(); // Danebengeklickt, Ende mit Edit
+ rSh.SelectObj( aDocPos );
+ if ( !rSh.IsObjSelected() && !rSh.IsFrmSelected() )
+ rSh.LeaveSelFrmMode();
+ else
+ {
+ SwEditWin::nDDStartPosY = aDocPos.Y();
+ SwEditWin::nDDStartPosX = aDocPos.X();
+ bFrmDrag = TRUE;
+ }
+ rView.AttrChangedNotify( &rSh );
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/******************************************************************************
+ * Beschreibung:
+ ******************************************************************************/
+
+
+
+BOOL SwEditWin::IsDrawSelMode()
+{
+// return (IsFrmAction() == FALSE && GetDrawMode() == OBJ_NONE);
+ return (GetDrawMode() == SID_OBJECT_SELECT);
+}
+
+/******************************************************************************
+ * Beschreibung:
+ ******************************************************************************/
+
+
+void SwEditWin::GetFocus()
+{
+ rView.GotFocus();
+ Window::GetFocus();
+}
+
+/******************************************************************************
+ * Beschreibung:
+ ******************************************************************************/
+
+
+
+void SwEditWin::LoseFocus()
+{
+ Window::LoseFocus();
+ if( pQuickHlpData->bClear )
+ pQuickHlpData->Stop( rView.GetWrtShell() );
+ rView.LostFocus();
+}
+
+/******************************************************************************
+ * Beschreibung:
+ ******************************************************************************/
+
+
+
+void SwEditWin::Command( const CommandEvent& rCEvt )
+{
+ if ( !rView.GetViewFrame() || !rView.GetViewFrame()->GetFrame() ||
+ rView.GetViewFrame()->GetFrame()->TransferForReplaceInProgress())
+ {
+ //Wenn der ViewFrame in Kuerze stirbt kein Popup mehr!
+ Window::Command(rCEvt);
+ return;
+ }
+
+ BOOL bCallBase = TRUE;
+
+ SwWrtShell &rSh = rView.GetWrtShell();
+
+ switch ( rCEvt.GetCommand() )
+ {
+ case COMMAND_STARTDRAG:
+ {
+ if (rSh.GetDrawView() && rSh.GetDrawView()->Command(rCEvt, this))
+ {
+ rView.GetViewFrame()->GetBindings().InvalidateAll(FALSE);
+ return; // Event von der SdrView ausgewertet
+ }
+ if ( !pApplyTempl && !rSh.IsDrawCreate() && !IsDrawAction())
+ {
+ BOOL bStart = FALSE, bDelSelect = FALSE;
+ SdrObject *pObj = NULL;
+ Point aDocPos( PixelToLogic( rCEvt.GetMousePosPixel() ) );
+ if ( !rSh.IsInSelect() && rSh.ChgCurrPam( aDocPos, TRUE, TRUE))
+ //Wir sind nicht beim Selektieren und stehen auf einer
+ //Selektion
+ bStart = TRUE;
+ else if ( !bFrmDrag && rSh.IsSelFrmMode() &&
+ rSh.IsInsideSelectedObj( aDocPos ) )
+ //Wir sind nicht am internen Draggen und stehen auf
+ //einem Objekt (Rahmen, Zeichenobjekt)
+ bStart = TRUE;
+ else if( !bFrmDrag && rView.GetDocShell()->IsReadOnly() &&
+ OBJCNT_NONE != rSh.GetObjCntType( aDocPos, pObj ))
+ {
+ rSh.LockPaint();
+ if( rSh.SelectObj( aDocPos, FALSE, FALSE, pObj ))
+ bStart = bDelSelect = TRUE;
+ else
+ rSh.UnlockPaint();
+ }
+ else
+ {
+ SwContentAtPos aSwContentAtPos( SwContentAtPos::SW_INETATTR );
+ bStart = rSh.GetContentAtPos( aDocPos,
+ aSwContentAtPos,
+ FALSE );
+ }
+
+ if ( bStart && !bIsInDrag )
+ {
+ bMBPressed = FALSE;
+ ReleaseMouse();
+ bFrmDrag = FALSE;
+ bExecuteDrag = TRUE;
+ SwEditWin::nDDStartPosY = aDocPos.Y();
+ SwEditWin::nDDStartPosX = aDocPos.X();
+ aMovePos = aDocPos;
+ StartExecuteDrag();
+ bCallBase = FALSE;
+ if( bDelSelect )
+ {
+ rSh.UnSelectFrm();
+ rSh.UnlockPaint();
+ }
+ }
+ }
+ }
+ break;
+
+ case COMMAND_CONTEXTMENU:
+ {
+ const USHORT nId = SwInputChild::GetChildWindowId();
+ SwInputChild* pChildWin = (SwInputChild*)GetView().GetViewFrame()->
+ GetChildWindow( nId );
+
+ if((!pChildWin || pChildWin->GetView() != &rView) &&
+ !rSh.IsDrawCreate() && !IsDrawAction())
+ {
+ SET_CURR_SHELL( &rSh );
+ if (!pApplyTempl)
+ {
+ if (bNoInterrupt == TRUE)
+ {
+ ReleaseMouse();
+ bNoInterrupt = FALSE;
+ bMBPressed = FALSE;
+ }
+ Point aDocPos( PixelToLogic( rCEvt.GetMousePosPixel() ) );
+ if ( !rCEvt.IsMouseEvent() )
+ aDocPos = rSh.GetCharRect().Center();
+ const Point aPixPos = LogicToPixel( aDocPos );
+
+ if ( rView.GetDocShell()->IsReadOnly() )
+ SwReadOnlyPopup( aDocPos, rView ).Execute( this, aPixPos );
+ else if ( !rView.ExecSpellPopup( aDocPos ) )
+ GetView().GetViewFrame()->GetDispatcher()->ExecutePopup( 0, this, &aPixPos);
+ }
+ else if (pApplyTempl->bUndo)
+ rSh.Do(SwWrtShell::UNDO);
+ bCallBase = FALSE;
+ }
+ }
+ break;
+
+ case COMMAND_WHEEL:
+ case COMMAND_STARTAUTOSCROLL:
+ case COMMAND_AUTOSCROLL:
+ if( pShadCrsr )
+ delete pShadCrsr, pShadCrsr = 0;
+ bCallBase = !rView.HandleWheelCommands( rCEvt );
+ break;
+
+ case COMMAND_VOICE:
+ {
+ //ggf. an Outliner weiterleiten
+ if ( rSh.HasDrawView() && rSh.GetDrawView()->IsTextEdit() )
+ {
+ bCallBase = FALSE;
+ rSh.GetDrawView()->GetTextEditOutlinerView()->Command( rCEvt );
+ break;
+ }
+
+ const CommandVoiceData *pCData = rCEvt.GetVoiceData();
+ if ( VOICECOMMANDTYPE_CONTROL == pCData->GetType() )
+ break;
+
+
+ USHORT nSlotId = 0;
+ SfxPoolItem *pItem = 0;
+
+ switch ( pCData->GetCommand() )
+ {
+ case DICTATIONCOMMAND_NEWPARAGRAPH: nSlotId = FN_INSERT_BREAK; break;
+ case DICTATIONCOMMAND_NEWLINE: nSlotId = FN_INSERT_LINEBREAK; break;
+ case DICTATIONCOMMAND_LEFT: nSlotId = FN_PREV_WORD; break;
+ case DICTATIONCOMMAND_RIGHT: nSlotId = FN_NEXT_WORD; break;
+ case DICTATIONCOMMAND_UP: nSlotId = FN_LINE_UP; break;
+ case DICTATIONCOMMAND_DOWN: nSlotId = FN_LINE_DOWN; break;
+ case DICTATIONCOMMAND_UNDO: nSlotId = SID_UNDO; break;
+ case DICTATIONCOMMAND_REPEAT: nSlotId = SID_REPEAT; break;
+ case DICTATIONCOMMAND_DEL: nSlotId = FN_DELETE_BACK_WORD; break;
+
+ case DICTATIONCOMMAND_BOLD_ON: nSlotId = SID_ATTR_CHAR_WEIGHT;
+ pItem = new SvxWeightItem( WEIGHT_BOLD );
+ break;
+ case DICTATIONCOMMAND_BOLD_OFF: nSlotId = SID_ATTR_CHAR_WEIGHT;
+ pItem = new SvxWeightItem( WEIGHT_NORMAL );
+ break;
+ case DICTATIONCOMMAND_UNDERLINE_ON: nSlotId = SID_ATTR_CHAR_UNDERLINE;
+ pItem = new SvxUnderlineItem( UNDERLINE_SINGLE );
+ break;
+ case DICTATIONCOMMAND_UNDERLINE_OFF:nSlotId = SID_ATTR_CHAR_UNDERLINE;
+ pItem = new SvxUnderlineItem( UNDERLINE_NONE );
+ break;
+ case DICTATIONCOMMAND_ITALIC_ON: nSlotId = SID_ATTR_CHAR_POSTURE;
+ pItem = new SvxPostureItem( ITALIC_NORMAL );
+ break;
+ case DICTATIONCOMMAND_ITALIC_OFF: nSlotId = SID_ATTR_CHAR_POSTURE;
+ pItem = new SvxPostureItem( ITALIC_NONE );
+ break;
+ case DICTATIONCOMMAND_NUMBERING_ON:
+ if ( !rSh.GetCurNumRule() )
+ nSlotId = FN_NUM_NUMBERING_ON;
+ break;
+ case DICTATIONCOMMAND_NUMBERING_OFF:
+ if ( rSh.GetCurNumRule() )
+ nSlotId = FN_NUM_NUMBERING_ON;
+ break;
+ case DICTATIONCOMMAND_TAB:
+ {
+ rSh.Insert( '\t' );
+ }
+ break;
+ case DICTATIONCOMMAND_UNKNOWN:
+ {
+ rView.GetWrtShell().Insert( pCData->GetText() );
+ }
+ break;
+
+#ifdef DBG_UTIL
+ default:
+ ASSERT( !this, "unknown speech command." );
+#endif
+ }
+ if ( nSlotId )
+ {
+ bCallBase = FALSE;
+ if ( pItem )
+ {
+ //Eigentumsuebergang des Items
+ GetView().GetViewFrame()->GetDispatcher()->Execute( nSlotId, SFX_CALLMODE_STANDARD,
+ pItem, 0 );
+ }
+ else
+ GetView().GetViewFrame()->GetDispatcher()->Execute( nSlotId );
+ }
+ }
+ break;
+
+ case COMMAND_STARTEXTTEXTINPUT:
+ if( rSh.HasDrawView() && rSh.GetDrawView()->IsTextEdit() )
+ {
+ bCallBase = FALSE;
+ rSh.GetDrawView()->GetTextEditOutlinerView()->Command( rCEvt );
+ }
+ else
+ {
+ if( rSh.HasSelection() )
+ rSh.DelRight();
+
+ bCallBase = FALSE;
+ rSh.CreateExtTextInput();
+ }
+ break;
+
+ case COMMAND_ENDEXTTEXTINPUT:
+ if( rSh.HasDrawView() && rSh.GetDrawView()->IsTextEdit() )
+ {
+ bCallBase = FALSE;
+ rSh.GetDrawView()->GetTextEditOutlinerView()->Command( rCEvt );
+ }
+ else
+ {
+ bCallBase = FALSE;
+ rSh.DeleteExtTextInput();
+ }
+ break;
+
+ case COMMAND_EXTTEXTINPUT:
+ if( rSh.HasDrawView() && rSh.GetDrawView()->IsTextEdit() )
+ {
+ bCallBase = FALSE;
+ rSh.GetDrawView()->GetTextEditOutlinerView()->Command( rCEvt );
+ }
+ else
+ {
+ const CommandExtTextInputData* pData = rCEvt.GetExtTextInputData();
+ if( pData )
+ {
+ bCallBase = FALSE;
+ rSh.SetExtTextInputData( *pData );
+ }
+ }
+ break;
+
+ case COMMAND_CURSORPOS:
+ // will be handled by the base class
+ break;
+
+ case COMMAND_EXTTEXTINPUTPOS:
+ if( rSh.HasDrawView() && rSh.GetDrawView()->IsTextEdit() )
+ {
+ bCallBase = FALSE;
+ rSh.GetDrawView()->GetTextEditOutlinerView()->Command( rCEvt );
+ }
+ else
+ {
+ SwExtTextInput* pInput = rSh.GetExtTextInput();
+ const CommandExtTextInputPosData* pData = rCEvt.GetExtTextInputPosData();
+ if( pInput && pData )
+ {
+ const Point aPt( rSh.GetCharRect().Pos() );
+ Rectangle* pRects = pInput->GetPosInputData( *pData, &aPt );
+ SetExtTextInputPos( pData->GetFirstPos(),
+ pData->GetChars(), pRects );
+ delete pRects;
+ bCallBase = FALSE;
+ }
+ }
+ break;
+
+#ifdef DBG_UTIL
+ default:
+ ASSERT( !this, "unknown command." );
+#endif
+ }
+ if (bCallBase)
+ Window::Command(rCEvt);
+}
+
+
+
+SfxShell* lcl_GetShellFromDispatcher( SwView& rView, TypeId nType )
+{
+ //Shell ermitteln
+ SfxShell* pShell;
+ SfxDispatcher* pDispatcher = rView.GetViewFrame()->GetDispatcher();
+ for(int i = 0; TRUE; ++i )
+ {
+ pShell = pDispatcher->GetShell( i );
+ if( !pShell || pShell->IsA( nType ) )
+ break;
+ }
+ return pShell;
+}
+
+
+
+void SwEditWin::ClearTip()
+{
+}
+
+IMPL_LINK( SwEditWin, KeyInputFlushHandler, Timer *, EMPTYARG )
+{
+ FlushInBuffer( &rView.GetWrtShell() );
+ return 0;
+}
+
+
+IMPL_LINK( SwEditWin, KeyInputTimerHandler, Timer *, EMPTYARG )
+{
+ bTblInsDelMode = FALSE;
+ return 0;
+}
+
+void SwEditWin::_InitStaticData()
+{
+ pQuickHlpData = new QuickHelpData();
+}
+
+void SwEditWin::_FinitStaticData()
+{
+ delete pQuickHlpData;
+}
+
+/*-----------------23.02.97 18:39-------------------
+
+--------------------------------------------------*/
+
+
+IMPL_LINK(SwEditWin, TemplateTimerHdl, Timer*, EMPTYARG)
+{
+ SetApplyTemplate(SwApplyTemplate());
+ return 0;
+}
+
+
+void SwEditWin::SetChainMode( BOOL bOn )
+{
+ if ( !bChainMode )
+ StopInsFrm();
+ if ( pUserMarker )
+ {
+ DELETEZ( pUserMarker );
+ }
+ bChainMode = bOn;
+ if ( !bChainMode )
+ rView.GetViewFrame()->HideStatusText();
+
+ static USHORT __READONLY_DATA aInva[] =
+ {
+ FN_FRAME_CHAIN, FN_FRAME_UNCHAIN, 0
+ };
+ rView.GetViewFrame()->GetBindings().Invalidate(aInva);
+}
+
+//-------------------------------------------------------------
+
+void QuickHelpData::Move( QuickHelpData& rCpy )
+{
+ // Pointer verschieben
+ aArr.Insert( &rCpy.aArr );
+ rCpy.aArr.Remove( (USHORT)0, rCpy.aArr.Count() );
+// nTipId = rCpy.nTipId;
+ bClear = rCpy.bClear;
+ nLen = rCpy.nLen;
+ nCurArrPos = rCpy.nCurArrPos;
+ bChkInsBlank = rCpy.bChkInsBlank;
+ bIsTip = rCpy.bIsTip;
+ bIsAutoText = rCpy.bIsAutoText;
+
+ if( pCETID ) delete pCETID;
+ pCETID = rCpy.pCETID;
+ rCpy.pCETID = 0;
+
+ if( pAttrs ) delete pAttrs;
+ pAttrs = rCpy.pAttrs;
+ rCpy.pAttrs = 0;
+}
+
+void QuickHelpData::ClearCntnt()
+{
+ nLen = nCurArrPos = 0;
+ bClear = bChkInsBlank = FALSE;
+ nTipId = 0;
+ aArr.DeleteAndDestroy( 0 , aArr.Count() );
+ bIsTip = TRUE;
+ bIsAutoText = TRUE;
+ delete pCETID, pCETID = 0;
+ delete pAttrs, pAttrs = 0;
+}
+
+
+void QuickHelpData::Start( SwWrtShell& rSh, USHORT nWrdLen )
+{
+ if( pCETID ) delete pCETID, pCETID = 0;
+ if( pAttrs ) delete pAttrs, pAttrs = 0;
+
+ if( USHRT_MAX != nWrdLen )
+ {
+ nLen = nWrdLen;
+ nCurArrPos = 0;
+ }
+ bClear = TRUE;
+
+ if( bIsTip )
+ {
+ Window& rWin = rSh.GetView().GetEditWin();
+ Point aPt( rWin.OutputToScreenPixel( rWin.LogicToPixel(
+ rSh.GetCharRect().Pos() )));
+ aPt.Y() -= 3;
+ nTipId = Help::ShowTip( &rWin, Rectangle( aPt, Size( 1, 1 )),
+ *aArr[ nCurArrPos ],
+ QUICKHELP_LEFT | QUICKHELP_BOTTOM );
+ }
+ else
+ {
+ String sStr( *aArr[ nCurArrPos ] );
+ sStr.Erase( 0, nLen );
+ USHORT nL = sStr.Len();
+ pAttrs = new USHORT[ nL ];
+ for( USHORT n = nL; n; )
+ *(pAttrs + --n ) = EXTTEXTINPUT_ATTR_DOTTEDUNDERLINE |
+ EXTTEXTINPUT_ATTR_HIGHLIGHT;
+ pCETID = new CommandExtTextInputData( sStr, pAttrs, nL,
+ TRUE, 0, 0, FALSE );
+ rSh.CreateExtTextInput();
+ rSh.SetExtTextInputData( *pCETID );
+ }
+}
+
+void QuickHelpData::Stop( SwWrtShell& rSh )
+{
+ if( !bIsTip )
+ rSh.DeleteExtTextInput( 0, FALSE );
+ else if( nTipId )
+ Help::HideTip( nTipId );
+ ClearCntnt();
+}
+
+
+/***********************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.776 2000/09/18 16:05:23 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.775 2000/09/08 08:12:50 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.774 2000/09/07 16:06:14 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.773 2000/09/07 15:59:21 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.772 2000/07/18 18:30:46 jp
+ KeyInput: start a timer if AnyInput don't call the KeyInput again, for flush the data
+
+ Revision 1.771 2000/06/28 09:40:29 os
+ #76471# call FN_EDIT_FIELD via SfxBindings instead of SfxDispatcher
+
+ Revision 1.770 2000/06/13 14:56:20 os
+ #76167# character background color assignment corrected
+
+ Revision 1.769 2000/06/13 10:00:15 os
+ using UCB
+
+ Revision 1.768 2000/06/09 13:35:02 ama
+ Fix: No assert for COMMAND_CURSORPOS
+
+ Revision 1.767 2000/05/26 07:21:29 os
+ old SW Basic API Slots removed
+
+ Revision 1.766 2000/05/24 10:39:15 jp
+ Fix for solaris compiler
+
+ Revision 1.765 2000/05/19 13:12:42 jp
+ Changes for Unicode
+
+ Revision 1.764 2000/05/19 11:04:59 jp
+ Changes for Unicode
+
+ Revision 1.763 2000/05/10 11:54:57 os
+ Basic API removed
+
+ Revision 1.762 2000/05/09 14:46:33 os
+ BASIC interface partially removed
+
+ Revision 1.761 2000/05/03 09:04:35 os
+ #75368# prevent hyperlink execution if watercan mode is activated
+
+ Revision 1.760 2000/04/20 12:55:18 os
+ GetName() returns String&
+
+ Revision 1.759 2000/04/18 15:18:16 os
+ UNICODE
+
+ Revision 1.758 2000/03/03 15:16:59 os
+ StarView remainders removed
+
+ Revision 1.757 2000/02/11 14:44:59 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.756 2000/02/09 12:02:37 jp
+ Task #72684#: AutoText expand only with return-Key
+
+ Revision 1.755 2000/01/13 21:28:12 jp
+ Task #71894#: new Options for SW-AutoComplete
+
+ Revision 1.754 1999/12/06 18:19:55 jp
+ Bug #70535#: Wheelcommands - hide ShadowCursor
+
+ Revision 1.753 1999/11/10 09:38:34 ama
+ Fix #69089#: HitHandle and hit anchor
+
+ Revision 1.752 1999/10/19 12:24:44 os
+ call authority-entry dialog on double click
+
+ Revision 1.751 1999/10/12 14:33:19 jp
+ Bug #69139#: DTOR - stop QuickHelpData only if the WrtShell exist
+
+ Revision 1.750 1999/10/12 13:39:17 ama
+ Fix #69089#: Use sdr-anchor-handle
+
+ Revision 1.749 1999/10/11 20:10:29 jp
+ Bug #68496#: append paragraph behind a section
+
+ Revision 1.748 1999/10/08 09:42:58 os
+ #69059# last cast from GetpApp to SfxApplication* removed
+
+ Revision 1.747 1999/10/06 08:41:11 jp
+ Bug #68761#: MouseMove - use new function GetFmtFromAnyObj
+
+ Revision 1.746 1999/08/27 09:34:38 JP
+ no cast from GetpApp to SfxApp
+
+
+ Rev 1.745 27 Aug 1999 11:34:38 JP
+ no cast from GetpApp to SfxApp
+
+ Rev 1.744 06 Aug 1999 16:48:18 JP
+ Bug #68113#: MouseButtonDown - lockview before call SelectObject
+
+ Rev 1.743 06 Jul 1999 20:06:50 JP
+ Bug #67360#: MouseMove - check for aditional mode
+
+ Rev 1.742 17 Jun 1999 09:36:30 JP
+ Bug #66927#: KeyInput - fill AutoCompleteList only with words which has lower count of characters
+
+ Rev 1.741 27 May 1999 13:00:40 OS
+ Einf?gen/Bearbeiten von Spalten ueberarbeitet
+
+ Rev 1.740 11 May 1999 20:09:22 HJS
+ includes
+
+ Rev 1.739 27 Apr 1999 14:50:20 JP
+ Bug #65389#: MouseButtonUp - im HoldSelection auf jedenfall das EndDrag rufen
+
+ Rev 1.738 26 Apr 1999 12:20:14 KZ
+ #include <svtools/args.hxx> eingefuegt
+
+ Rev 1.737 23 Apr 1999 17:02:32 JP
+ Bug #65289#: MouseMove: synthetische Moves/ButtonDowns ignorieren
+
+ Rev 1.736 22 Apr 1999 12:33:40 JP
+ Bug #65171#: UpdatePointer - bei ApplyStyle den richtigen MousePointer setzen
+
+ Rev 1.735 19 Apr 1999 13:38:44 OS
+ #64780# Notizen und Scripts in geschuetzten Bereichen
+
+ Rev 1.734 01 Apr 1999 15:26:38 JP
+ Bug #64154#: KeyInput - beim AutoComplete die schon eingegebenen Buchstaben nicht entfernen
+
+ Rev 1.733 17 Mar 1999 11:31:40 JP
+ Task #63576#: KeyInput - das AutoComplete-Flag von der OffApp erfragen
+
+ Rev 1.732 10 Mar 1999 09:40:30 JP
+ Task #61405#: AutoCompletion von Woertern
+
+ Rev 1.731 09 Mar 1999 19:38:14 JP
+ Task #61405#: AutoCompletion von Woertern
+
+ Rev 1.730 08 Mar 1999 11:52:14 JP
+ Bug #62920#: aus readonly Docs Grafiken einfacher herausdraggen
+
+ Rev 1.729 01 Mar 1999 23:01:24 JP
+ Bug #62582#: InInProtectCntnt nur noch auswerten, wenn Cursor nicht im Readonly zugelassen ist
+
+ Rev 1.728 03 Feb 1999 13:59:58 JP
+ Bug #61399#: MouseButtonDown - CTRL auf Handels behandeln
+
+ Rev 1.727 28 Jan 1999 20:46:08 JP
+ Bug #61264#: MouseButtonDown - SHIFT-CTRL auf Handels behandeln
+
+ Rev 1.726 26 Jan 1999 11:01:24 AWO
+ Syntax
+
+ Rev 1.725 22 Jan 1999 16:56:44 JP
+ Bug Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.724 20 Jan 1999 14:17:30 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.723 19 Jan 1999 22:58:12 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.722 17 Dec 1998 19:19:54 JP
+ Task #59490# ExtTextInput fuer japan./chine. Version
+
+ Rev 1.721 11 Dec 1998 12:47:42 MT
+ #59490# IME
+
+ Rev 1.720 11 Nov 1998 15:04:26 JP
+ Task #59308#: NoNum auch bei Outlines setzen
+
+ Rev 1.719 06 Nov 1998 14:43:04 OS
+ #57903# NumOff kann weg
+
+ Rev 1.718 03 Nov 1998 11:51:40 JP
+ Task #57916#: Vorbereitungen fuer den Selektionshandler vom Chart
+
+ Rev 1.717 25 Sep 1998 13:21:00 JP
+ Bug #56196#: KeyInput - Tab in der WebView ans Window weiterleiten, damit der SFX ggfs. was tun kann
+
+ Rev 1.716 24 Sep 1998 13:33:22 JP
+ Bug #55592#/#55931#: synthetische MouseMoves mit Ctrl-Taste sollten keine Selektion anfangen
+
+ Rev 1.715 10 Sep 1998 10:39:28 OS
+ #56290# Rahmenvorlage per Giesskanne auch ohne Selektion
+
+**********************************************************************/
+
diff --git a/sw/source/ui/docvw/edtwin2.cxx b/sw/source/ui/docvw/edtwin2.cxx
new file mode 100644
index 000000000000..6810c9ae298d
--- /dev/null
+++ b/sw/source/ui/docvw/edtwin2.cxx
@@ -0,0 +1,694 @@
+/*************************************************************************
+ *
+ * $RCSfile: edtwin2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <tools/ref.hxx>
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef PRODUCT
+#include <stdio.h>
+#endif
+
+#ifndef _HELP_HXX //autogen
+#include <vcl/help.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _IPENV_HXX //autogen
+#include <so3/ipenv.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _TXTRFMRK_HXX //autogen wg. SwTxtRefMark
+#include <txtrfmrk.hxx>
+#endif
+#ifndef _FMTRFMRK_HXX //autogen wg. SwFmtRefMark
+#include <fmtrfmrk.hxx>
+#endif
+
+#ifndef _SVX_FLDITEM_HXX
+# ifndef ITEMID_FIELD
+# ifndef _EEITEM_HXX //autogen
+# include <svx/eeitem.hxx>
+# endif
+# define ITEMID_FIELD EE_FEATURE_FIELD /* wird fuer #include <flditem.hxx> benoetigt */
+# endif
+# ifndef _SVX_FLDITEM_HXX //autogen
+# include <svx/flditem.hxx>
+# endif
+#endif
+
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SVDOTEXT_HXX //autogen
+#include <svx/svdotext.hxx>
+#endif
+#ifndef _OUTLINER_HXX //autogen
+#define _EEITEMID_HXX
+#include <svx/outliner.hxx>
+#endif
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SVDPAGV_HXX //autogen
+#include <svx/svdpagv.hxx>
+#endif
+
+
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _DPAGE_HXX
+#include <dpage.hxx>
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _DBFLD_HXX
+#include <dbfld.hxx>
+#endif
+#ifndef _REFFLD_HXX
+#include <reffld.hxx>
+#endif
+#ifndef _CELLATR_HXX
+#include <cellatr.hxx>
+#endif
+#ifndef _SHDWCRSR_HXX
+#include <shdwcrsr.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _CHARFMT_HXX
+#include <charfmt.hxx>
+#endif
+#ifndef _FMTFTN_HXX
+#include <fmtftn.hxx>
+#endif
+#ifndef _REDLINE_HXX
+#include <redline.hxx>
+#endif
+#ifndef _REDLENUM_HXX
+#include <redlenum.hxx>
+#endif
+#ifndef _TOX_HXX
+#include <tox.hxx>
+#endif
+#ifndef _TXTTXMRK_HXX //autogen
+#include <txttxmrk.hxx>
+#endif
+
+#ifndef _DOCVW_HRC
+#include <docvw.hrc>
+#endif
+#ifndef _UTLUI_HRC
+#include <utlui.hrc>
+#endif
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+/*--------------------------------------------------------------------
+ Beschreibung: KeyEvents
+ --------------------------------------------------------------------*/
+void lcl_GetRedlineHelp( const SwRedline& rRedl, String& rTxt, BOOL bBalloon )
+{
+ USHORT nResId = 0;
+ switch( rRedl.GetType() )
+ {
+ case REDLINE_INSERT: nResId = STR_REDLINE_INSERT; break;
+ case REDLINE_DELETE: nResId = STR_REDLINE_DELETE; break;
+ case REDLINE_FORMAT: nResId = STR_REDLINE_FORMAT; break;
+ case REDLINE_TABLE: nResId = STR_REDLINE_TABLE; break;
+ case REDLINE_FMTCOLL: nResId = STR_REDLINE_FMTCOLL; break;
+ }
+
+ if( nResId )
+ {
+ const DateTime& rDT = rRedl.GetTimeStamp();
+ const International& rIntl = Application::GetAppInternational();
+ rTxt = SW_RESSTR( nResId );
+ (rTxt += C2S(": " )) += rRedl.GetAuthorString();
+ (rTxt += C2S(" - " )) += rIntl.GetDate( rDT );
+ (rTxt += ' ') += rIntl.GetTime( rDT, FALSE, FALSE );
+ if( bBalloon && rRedl.GetComment().Len() )
+ ( rTxt += '\n' ) += rRedl.GetComment();
+ }
+}
+
+
+void SwEditWin::RequestHelp(const HelpEvent &rEvt)
+{
+ BOOL bWeiter = TRUE;
+ SwWrtShell &rSh = rView.GetWrtShell();
+ SET_CURR_SHELL(&rSh);
+ String sTxt;
+ Point aPos( PixelToLogic( ScreenToOutputPixel( rEvt.GetMousePosPixel() ) ));
+ BOOL bBalloon = rEvt.GetMode() & HELPMODE_BALLOON;
+
+ SdrView *pSdrView = rSh.GetDrawView();
+
+ if( rEvt.GetMode() & ( HELPMODE_QUICK | HELPMODE_BALLOON ) )
+ {
+ if( pSdrView )
+ {
+ SdrPageView* pPV = pSdrView->GetPageViewPvNum(0);
+ bWeiter = ((SwDPage*)pPV->GetPage())->RequestHelp(this,
+ pSdrView, rEvt);
+ }
+ }
+
+ if( bWeiter && rEvt.GetMode() & ( HELPMODE_QUICK | HELPMODE_BALLOON ))
+ {
+ SwRect aFldRect;
+ SwContentAtPos aCntntAtPos( SwContentAtPos::SW_FIELD |
+ SwContentAtPos::SW_INETATTR |
+ SwContentAtPos::SW_FTN |
+ SwContentAtPos::SW_REDLINE |
+ SwContentAtPos::SW_TOXMARK |
+ SwContentAtPos::SW_REFMARK |
+#ifndef PRODUCT
+ SwContentAtPos::SW_TABLEBOXVALUE |
+ ( bBalloon ? SwContentAtPos::SW_CURR_ATTRS : 0) |
+#endif
+ SwContentAtPos::SW_TABLEBOXFML );
+
+ if( rSh.GetContentAtPos( aPos, aCntntAtPos, FALSE, &aFldRect ) )
+ {
+ switch( aCntntAtPos.eCntntAtPos )
+ {
+ case SwContentAtPos::SW_TABLEBOXFML:
+ ( sTxt = C2S("= ")) += ((SwTblBoxFormula*)aCntntAtPos.aFnd.pAttr)->GetFormula();
+ break;
+#ifndef PRODUCT
+ case SwContentAtPos::SW_TABLEBOXVALUE:
+ {
+ ByteString sTmp;
+ sprintf( sTmp.AllocBuffer( 30 ), "%E",
+ ((SwTblBoxValue*)aCntntAtPos.aFnd.pAttr)->GetValue() );
+ sTxt = UniString(sTmp.GetBuffer(), gsl_getSystemTextEncoding());
+ }
+ break;
+ case SwContentAtPos::SW_CURR_ATTRS:
+ sTxt = aCntntAtPos.sStr;
+ break;
+#endif
+
+ case SwContentAtPos::SW_INETATTR:
+ sTxt = ((SfxStringItem*)aCntntAtPos.aFnd.pAttr)->GetValue();
+ sTxt = URIHelper::removePassword( sTxt,
+ INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET );
+
+ break;
+
+ case SwContentAtPos::SW_FTN:
+ if( aCntntAtPos.pFndTxtAttr && aCntntAtPos.aFnd.pAttr )
+ {
+ const SwFmtFtn* pFtn = (SwFmtFtn*)aCntntAtPos.aFnd.pAttr;
+ pFtn->GetFtnText( sTxt );
+ sTxt.Insert( SW_RESSTR( pFtn->IsEndNote()
+ ? STR_ENDNOTE : STR_FTNNOTE ), 0 );
+ }
+ break;
+
+ case SwContentAtPos::SW_REDLINE:
+ ::lcl_GetRedlineHelp( *aCntntAtPos.aFnd.pRedl, sTxt, bBalloon );
+ break;
+
+ case SwContentAtPos::SW_TOXMARK:
+ sTxt = aCntntAtPos.sStr;
+ if( sTxt.Len() && aCntntAtPos.pFndTxtAttr )
+ {
+ const SwTOXType* pTType = aCntntAtPos.pFndTxtAttr->
+ GetTOXMark().GetTOXType();
+ if( pTType && pTType->GetTypeName().Len() )
+ {
+ sTxt.Insert( C2S(": "), 0 );
+ sTxt.Insert( pTType->GetTypeName(), 0 );
+ }
+ }
+ break;
+ case SwContentAtPos::SW_REFMARK:
+ if(aCntntAtPos.aFnd.pAttr)
+ {
+ sTxt = SW_RES(STR_CONTENT_TYPE_SINGLE_REFERENCE);
+ sTxt += C2S(": ");
+ sTxt += ((const SwFmtRefMark*)aCntntAtPos.aFnd.pAttr)->GetRefName();
+ }
+ break;
+
+ default:
+ {
+ const SwField* pFld = aCntntAtPos.aFnd.pFld;
+ switch( pFld->Which() )
+ {
+ case RES_SETEXPFLD:
+ case RES_TABLEFLD:
+ case RES_GETEXPFLD:
+ {
+ USHORT nOldSubType = pFld->GetSubType();
+ ((SwField*)pFld)->SetSubType(SUB_CMD);
+ sTxt = pFld->Expand();
+ ((SwField*)pFld)->SetSubType(nOldSubType);
+ }
+ break;
+
+ case RES_POSTITFLD:
+ case RES_INPUTFLD: // BubbleHelp, da der Hinweis ggf ziemlich lang sein kann
+ bBalloon = TRUE;
+ /* no break */
+ case RES_JUMPEDITFLD:
+ sTxt = pFld->GetPar2();
+ break;
+
+ case RES_DBFLD:
+ sTxt = ((SwDBField*)pFld)->GetCntnt(TRUE);
+ break;
+
+ case RES_USERFLD:
+ case RES_HIDDENTXTFLD:
+ sTxt = pFld->GetPar1();
+ break;
+
+ case RES_DOCSTATFLD:
+ break;
+
+ case RES_MACROFLD:
+ sTxt = ((const SwMacroField*)pFld)->GetMacro();
+ break;
+
+ case RES_GETREFFLD:
+ sTxt = ((SwGetRefField*)pFld)->GetSetRefName();
+ break;
+ }
+
+ if( !sTxt.Len() )
+ {
+ aCntntAtPos.eCntntAtPos = SwContentAtPos::SW_REDLINE;
+ if( rSh.GetContentAtPos( aPos, aCntntAtPos, FALSE, &aFldRect ) )
+ ::lcl_GetRedlineHelp( *aCntntAtPos.aFnd.pRedl,
+ sTxt, bBalloon );
+ }
+ }
+ }
+ if (sTxt.Len() )
+ {
+ if( bBalloon )
+ Help::ShowBalloon( this, rEvt.GetMousePosPixel(), sTxt );
+ else
+ {
+ // dann zeige die Hilfe mal an:
+ Rectangle aRect( aFldRect.SVRect() );
+ Point aPt( OutputToScreenPixel( LogicToPixel( aRect.TopLeft() )));
+ aRect.Left() = aPt.X();
+ aRect.Top() = aPt.Y();
+ aPt = OutputToScreenPixel( LogicToPixel( aRect.BottomRight() ));
+ aRect.Right() = aPt.X();
+ aRect.Bottom() = aPt.Y();
+ Help::ShowQuickHelp( this, aRect, sTxt );
+ }
+ }
+
+ bWeiter = FALSE;
+ }
+ }
+
+/*
+aktuelle Zeichenvorlage anzeigen?
+ if( bWeiter && rEvt.GetMode() & ( HELPMODE_QUICK | HELPMODE_BALLOON ))
+ {
+ SwCharFmt* pChrFmt = rSh.GetCurCharFmt();
+
+ }
+*/
+ if( bWeiter && pSdrView && rEvt.GetMode() & ( HELPMODE_QUICK | HELPMODE_BALLOON ))
+ {
+ SdrViewEvent aVEvt;
+ SdrHitKind eHit = pSdrView->PickAnything(aPos, aVEvt);
+ const SvxURLField *pField;
+ SdrObject* pObj = NULL;
+
+ if ((pField = aVEvt.pURLField) != 0)
+ {
+ // URL-Feld getroffen
+ if (pField)
+ {
+ pObj = aVEvt.pObj;
+ sTxt = pField->GetURL();
+
+ bWeiter = FALSE;
+ }
+ }
+ if (bWeiter && eHit == SDRHIT_TEXTEDIT)
+ {
+ // URL-Feld in zum Editieren ge”ffneten DrawText-Objekt suchen
+ OutlinerView* pOLV = pSdrView->GetTextEditOutlinerView();
+ const SvxFieldItem* pFieldItem;
+ const SdrTextObj* pTextObj = NULL;
+
+ if (pSdrView->HasMarkedObj())
+ {
+ const SdrMarkList& rMarkList = pSdrView->GetMarkList();
+
+ if (rMarkList.GetMarkCount() == 1)
+ pObj = rMarkList.GetMark(0)->GetObj();
+ }
+
+ if (pObj && pObj->ISA(SdrTextObj) && pOLV &&
+ (pFieldItem = pOLV->GetFieldUnderMousePointer()) != 0)
+ {
+ const SvxFieldData* pField = pFieldItem->GetField();
+
+ if (pField && pField->ISA(SvxURLField))
+ {
+ sTxt = ((const SvxURLField*) pField)->GetURL();
+ bWeiter = FALSE;
+ }
+ }
+ }
+ if (sTxt.Len() && pObj)
+ {
+ sTxt = URIHelper::removePassword( sTxt, INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET );
+
+ Rectangle aLogicPix = LogicToPixel(pObj->GetLogicRect());
+ Rectangle aScreenRect(OutputToScreenPixel(aLogicPix.TopLeft()),
+ OutputToScreenPixel(aLogicPix.BottomRight()));
+
+ if (bBalloon)
+ Help::ShowBalloon(this, rEvt.GetMousePosPixel(), aScreenRect, sTxt);
+ else
+ Help::ShowQuickHelp(this, aScreenRect, sTxt);
+ }
+ }
+
+ if( bWeiter )
+ Window::RequestHelp( rEvt );
+}
+
+void SwEditWin::Paint(const Rectangle& rRect)
+{
+#if defined(MYDEBUG)
+ // StartUp-Statistik
+ if ( pTickList )
+ {
+ SYSTICK( "Start SwEditWin::Paint" );
+ READ_FIRST_TICKS()
+ FLUSH_TICKS()
+ }
+#endif
+
+ SwWrtShell* pWrtShell = GetView().GetWrtShellPtr();
+ if(!pWrtShell)
+ return;
+ BOOL bPaintShadowCrsr = FALSE;
+ if( pShadCrsr )
+ {
+ Rectangle aRect( pShadCrsr->GetRect());
+ // liegt vollstaendig drin?
+ if( rRect.IsInside( aRect ) )
+ // dann aufheben
+ delete pShadCrsr, pShadCrsr = 0;
+ else if( rRect.IsOver( aRect ))
+ {
+ // liegt irgendwie drueber, dann ist alles ausserhalb geclippt
+ // und wir muessen den "inneren Teil" am Ende vom Paint
+ // wieder sichtbar machen. Sonst kommt es zu Paintfehlern!
+ bPaintShadowCrsr = TRUE;
+ }
+ }
+
+ SwDocShell* pDocShell = GetView().GetDocShell();
+ SvInPlaceEnvironment *pIpEnv = pDocShell ?
+ pDocShell->GetIPEnv() : 0;
+ if ( pIpEnv && pIpEnv->GetRectsChangedLockCount() )
+ //Wir stehen in Groessenverhandlungen (MM), Paint verzoegern
+ Invalidate( rRect );
+ else if ( GetView().GetVisArea().GetWidth() <= 0 ||
+ GetView().GetVisArea().GetHeight() <= 0 )
+ Invalidate( rRect );
+ else
+ pWrtShell->Paint( rRect );
+
+ if( bPaintShadowCrsr )
+ pShadCrsr->Paint();
+}
+
+
+/***********************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.77 2000/09/18 16:05:23 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.76 2000/08/31 11:38:26 jp
+ RequestHelp: get the correct string for the TableValue
+
+ Revision 1.75 2000/08/15 18:58:30 jp
+ Task #77160#: use URIHelper class instead of GetUrlNoPass
+
+ Revision 1.74 2000/04/18 15:18:17 os
+ UNICODE
+
+ Revision 1.73 2000/03/03 15:16:59 os
+ StarView remainders removed
+
+ Revision 1.72 2000/02/11 14:44:54 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.71 1999/07/22 07:05:40 OS
+ #67715# QuickHelp for RefMarks
+
+
+ Rev 1.70 22 Jul 1999 09:05:40 OS
+ #67715# QuickHelp for RefMarks
+
+ Rev 1.69 14 Jun 1999 13:28:24 JP
+ Task #66520#: show TOX-TypeName and TOX-Entry by RequestHelp
+
+ Rev 1.68 02 Jun 1999 11:04:42 JP
+ Task #66520#: Verzeichniseintraege ohne Bereich per TipHilfe anzeigen
+
+ Rev 1.67 29 Jan 1999 11:48:08 MH
+ add: header
+
+ Rev 1.66 09 Oct 1998 17:01:28 JP
+ Bug #57741#: neue ResourceIds
+
+ Rev 1.65 17 Jul 1998 15:23:52 OM
+ #53182# TipHilfe fuer Macrofelder
+
+ Rev 1.64 09 Jun 1998 15:31:26 OM
+ VC-Controls entfernt
+
+ Rev 1.63 02 Apr 1998 11:38:54 OS
+ SET_CURR_SHELL im RequestHelp
+
+ Rev 1.62 25 Mar 1998 18:44:34 JP
+ Bug #48368#: RequestHelp - falls Felder keine TipHilfe haben, dann frage mal nach Redlines
+
+ Rev 1.61 13 Mar 1998 14:09:36 OM
+ #48150# BubbleHelp fuer Eingabefeld
+
+ Rev 1.60 04 Feb 1998 19:47:42 JP
+ neu: SetRedlineComment - Kommentar am RedlineObject setzen
+
+ Rev 1.59 23 Jan 1998 14:53:02 JP
+ neu: Quick/Tip-Hilfe fuer Fuss-/Endnoten
+
+ Rev 1.58 15 Jan 1998 13:16:14 JP
+ neu: TipHilfe fuer Redlines
+
+ Rev 1.57 07 Jan 1998 13:37:36 OS
+ Hosentraeger und Guertel: im Paint Existenz der wrtsh an der view testen #46436#
+
+ Rev 1.56 28 Nov 1997 18:43:00 MA
+ includes
+
+ Rev 1.55 25 Nov 1997 10:33:02 MA
+ includes
+
+ Rev 1.54 11 Nov 1997 14:04:06 MA
+ precomp entfernt
+
+ Rev 1.53 06 Nov 1997 20:45:48 JP
+ RequestHelp: fuer !PRODUCT bei Balloon die akt. Attributierung anzeigen
+
+ Rev 1.52 03 Nov 1997 16:13:46 JP
+ neu: Optionen/-Page/Basic-Schnittst. fuer ShadowCursor
+
+ Rev 1.51 24 Oct 1997 18:37:02 JP
+ neu: ShadowCursor
+
+ Rev 1.50 02 Oct 1997 15:22:32 OM
+ Feldumstellung
+
+ Rev 1.49 15 Sep 1997 09:58:48 OM
+ Auf vorhandene SdrView pruefen
+
+ Rev 1.48 12 Sep 1997 17:19:00 OM
+ Quickhelp fuer Drawtext-Objekte
+
+ Rev 1.47 11 Aug 1997 15:54:08 OM
+ #42625# Kein Passwort in Tip-Hilfe anzeigen
+
+ Rev 1.46 11 Aug 1997 12:20:24 MH
+ chg: header, ::Paint nach edtwin2.cxx verschoben
+
+ Rev 1.45 07 Aug 1997 15:00:16 OM
+ Headerfile-Umstellung
+
+ Rev 1.44 05 Aug 1997 12:27:56 MH
+ chg: header
+
+ Rev 1.43 03 Jul 1997 13:09:32 OV
+ #41226# VCMouseButtonDown: bVCAction=FALSE, wenn kein VCControl getroffen
+
+ Rev 1.42 02 May 1997 19:54:28 NF
+ includes...
+
+ Rev 1.41 11 Apr 1997 11:25:48 MA
+ includes
+
+ Rev 1.40 03 Apr 1997 17:22:28 TRI
+ includes
+
+ Rev 1.39 15 Feb 1997 14:54:54 JP
+ TipHilfe: TabellenFormel/-Value anzeigen
+
+ Rev 1.38 08 Nov 1996 11:40:22 HJS
+ include w.g. positivdefine
+
+ Rev 1.37 07 Nov 1996 14:32:58 MA
+ immer Balloon fuer Notizen
+
+ Rev 1.36 05 Nov 1996 15:34:42 JP
+ GotoRefMark: Parameter erweitert fuer erweiterte RefMarks
+
+ Rev 1.35 22 Oct 1996 14:03:08 JP
+ RequestHelp: RefFelder umgestellt auf neu SS
+
+ Rev 1.34 25 Sep 1996 14:11:00 OM
+ Neue Datenbanktrenner
+
+ Rev 1.33 02 Sep 1996 18:42:36 JP
+ INetFeld entfernt
+
+ Rev 1.32 28 Aug 1996 11:31:22 OS
+ PCH-Header korrigiert
+
+ Rev 1.31 28 Aug 1996 11:25:48 OS
+ includes
+
+ Rev 1.30 26 Aug 1996 12:35:16 OS
+ wieder mit PCH
+
+ Rev 1.29 14 Aug 1996 15:23:10 JP
+ svdraw.hxx entfernt
+
+ Rev 1.28 08 Aug 1996 10:03:16 JP
+ GetFldAtPos ersetzt durch GetCntntAtPos
+
+ Rev 1.27 07 Aug 1996 14:59:12 JP
+ Umstellung fuer Upd. 330
+
+ Rev 1.26 01 Jul 1996 15:27:56 HJS
+ define raus
+
+ Rev 1.25 13 Jun 1996 14:44:02 MA
+ splitt sihxx
+
+ Rev 1.24 24 May 1996 16:49:28 OM
+ QuickHelp von ExpressionFields wandeln
+
+ Rev 1.23 06 May 1996 09:26:10 OS
+ kein PCH wg. positiv-define
+
+ Rev 1.22 30 Apr 1996 17:51:14 HJS
+ docfilt darf nicht ausdefined sein
+
+ Rev 1.21 22 Mar 1996 15:16:50 HJS
+ umstellung 311
+
+**********************************************************************/
+
diff --git a/sw/source/ui/docvw/edtwin3.cxx b/sw/source/ui/docvw/edtwin3.cxx
new file mode 100644
index 000000000000..ea707b814824
--- /dev/null
+++ b/sw/source/ui/docvw/edtwin3.cxx
@@ -0,0 +1,346 @@
+/*************************************************************************
+ *
+ * $RCSfile: edtwin3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SV_SETTINGS_HXX
+#include <vcl/settings.hxx>
+#endif
+#ifndef _SVX_RULER_HXX //autogen
+#include <svx/ruler.hxx>
+#endif
+
+#ifndef _VIEWOPT_HXX //autogen
+#include <viewopt.hxx>
+#endif
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "basesh.hxx"
+#include "pview.hxx"
+#include "mdiexp.hxx"
+#include "edtwin.hxx"
+#include "swmodule.hxx"
+#include "modcfg.hxx"
+#include "swtable.hxx"
+#include "docsh.hxx"
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Core-Notify
+ --------------------------------------------------------------------*/
+
+
+
+void ScrollMDI( ViewShell* pVwSh, const SwRect &rRect,
+ USHORT nRangeX, USHORT nRangeY)
+{
+ SfxViewShell *pSfxVwSh = pVwSh->GetSfxViewShell();
+ if (pSfxVwSh && pSfxVwSh->ISA(SwView))
+ ((SwView *)pSfxVwSh)->Scroll( rRect.SVRect(), nRangeX, nRangeY );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Docmdi - verschiebbar
+ --------------------------------------------------------------------*/
+
+
+
+BOOL IsScrollMDI( ViewShell* pVwSh, const SwRect &rRect )
+{
+ SfxViewShell *pSfxVwSh = pVwSh->GetSfxViewShell();
+ if (pSfxVwSh && pSfxVwSh->ISA(SwView))
+ return (((SwView *)pSfxVwSh)->IsScroll(rRect.SVRect()));
+ return FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Notify fuer Groessen-Aenderung
+ --------------------------------------------------------------------*/
+
+
+
+void SizeNotify(ViewShell* pVwSh, const Size &rSize)
+{
+ SfxViewShell *pSfxVwSh = pVwSh->GetSfxViewShell();
+ if (pSfxVwSh)
+ {
+ if (pSfxVwSh->ISA(SwView))
+ ((SwView *)pSfxVwSh)->DocSzChgd(rSize);
+ else if (pSfxVwSh->ISA(SwPagePreView))
+ ((SwPagePreView *)pSfxVwSh)->DocSzChgd( rSize );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Notify fuer Seitenzahl-Update
+ --------------------------------------------------------------------*/
+
+
+
+void PageNumNotify( ViewShell* pVwSh, USHORT nPhyNum, USHORT nVirtNum,
+ const String& rPgStr)
+{
+ SfxViewShell *pSfxVwSh = pVwSh->GetSfxViewShell();
+ if ( pSfxVwSh && pSfxVwSh->ISA(SwView) &&
+ ((SwView*)pSfxVwSh)->GetCurShell() )
+ ((SwView *)pSfxVwSh)->UpdatePageNums(nPhyNum, nVirtNum, rPgStr);
+}
+
+/******************************************************************************
+ * Methode : void FrameNotify( DocMDIBase *pWin, FlyMode eMode )
+ * Beschreibung:
+ * Erstellt : OK 08.02.94 13:49
+ * Aenderung :
+ ******************************************************************************/
+
+
+
+void FrameNotify( ViewShell* pVwSh, FlyMode eMode )
+{
+ if ( pVwSh->ISA(SwCrsrShell) )
+ SwBaseShell::SetFrmMode( eMode, (SwWrtShell*)pVwSh );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Notify fuer Seitenzahl-Update
+ --------------------------------------------------------------------*/
+
+
+
+BOOL SwEditWin::RulerClook( SwView& rView , const MouseEvent& rMEvt)
+{
+ return (!rView.GetHLineal()->StartDocDrag( rMEvt, RULER_TYPE_BORDER ) &&
+ !rView.GetHLineal()->StartDocDrag( rMEvt, RULER_TYPE_MARGIN1) &&
+ !rView.GetHLineal()->StartDocDrag( rMEvt, RULER_TYPE_MARGIN2));
+}
+
+
+
+Dialog* GetSearchDialog()
+{
+ return SwView::GetSearchDialog();
+}
+
+
+
+void JavaScriptScrollMDI( SfxFrame* pFrame, INT32 nX, INT32 nY )
+{
+ SfxViewShell *pSfxVwSh = pFrame->GetCurrentViewFrame()->GetViewShell();
+ if( pSfxVwSh && pSfxVwSh->ISA( SwView ))
+ {
+ SwView* pView = (SwView *)pSfxVwSh;
+
+ Size aSz( nX, nY );
+ aSz = pView->GetEditWin().PixelToLogic( aSz );
+
+ Point aTopLeft( aSz.Width(), aSz.Height() );
+ if( aTopLeft.X() < DOCUMENTBORDER ) aTopLeft.X() = DOCUMENTBORDER;
+ if( aTopLeft.Y() < DOCUMENTBORDER ) aTopLeft.Y() = DOCUMENTBORDER;
+
+ const Size& rVisSize = pView->GetVisArea().GetSize();
+ Size aDocSize( pView->GetDocSz() );
+ aDocSize.Width() += DOCUMENTBORDER;
+ aDocSize.Height() += DOCUMENTBORDER;
+
+ if( aTopLeft.X() + rVisSize.Width() > aDocSize.Width() )
+ aTopLeft.X() = rVisSize.Width() > aDocSize.Width()
+ ? DOCUMENTBORDER
+ : aDocSize.Width() - rVisSize.Width();
+
+ if( aTopLeft.Y() + rVisSize.Height() > aDocSize.Height() )
+ aTopLeft.Y() = rVisSize.Height() > aDocSize.Height()
+ ? DOCUMENTBORDER
+ : aDocSize.Height() - rVisSize.Height();
+
+ pView->SetVisArea( aTopLeft );
+ }
+}
+
+
+
+USHORT GetTblChgDefaultMode()
+{
+ SwModuleOptions* pOpt = SW_MOD()->GetModuleConfig();
+ return pOpt ? pOpt->GetTblMode() : TBLVAR_CHGABS;
+}
+
+
+
+void RepaintPagePreview( ViewShell* pVwSh, const SwRect& rRect )
+{
+ SfxViewShell *pSfxVwSh = pVwSh->GetSfxViewShell();
+ if (pSfxVwSh && pSfxVwSh->ISA( SwPagePreView ))
+ ((SwPagePreView *)pSfxVwSh)->RepaintCoreRect( rRect );
+}
+
+BOOL JumpToSwMark( ViewShell* pVwSh, const String& rMark )
+{
+ SfxViewShell *pSfxVwSh = pVwSh->GetSfxViewShell();
+ if( pSfxVwSh && pSfxVwSh->ISA( SwView ) )
+ return ((SwView *)pSfxVwSh)->JumpToSwMark( rMark );
+ return FALSE;
+}
+
+void SwEditWin::DataChanged( const DataChangedEvent &rEvt )
+{
+ SwWrtShell &rSh = GetView().GetWrtShell();
+ rSh.LockView( TRUE );
+ rSh.LockPaint();
+ GetView().InvalidateBorder(); //Scrollbarbreiten
+ GetView().GetDocShell()->UpdateFontList(); //z.B. Druckerwechsel
+ rSh.LockView( FALSE );
+ rSh.UnlockPaint();
+}
+
+
+/***********************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.26 2000/09/18 16:05:24 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.25 1999/03/10 11:00:28 MA
+ #52642# Fontwechsel im DataChanged
+
+
+ Rev 1.24 10 Mar 1999 12:00:28 MA
+ #52642# Fontwechsel im DataChanged
+
+ Rev 1.23 24 Jun 1998 18:43:10 MA
+ DataChanged fuer ScrollBar und Retouche, Retouche ganz umgestellt
+
+ Rev 1.22 21 Apr 1998 15:25:14 JP
+ Bug #49438#: JavaScriptScrollMDI - Grenzen beachten, absolut positionieren
+
+ Rev 1.21 25 Nov 1997 10:33:04 MA
+ includes
+
+ Rev 1.20 03 Nov 1997 13:14:06 MA
+ precomp entfernt
+
+ Rev 1.19 17 Sep 1997 12:34:22 JP
+ neu: JumpToSwMark - springe eine Marke an
+
+ Rev 1.18 01 Sep 1997 13:15:38 OS
+ DLL-Umstellung
+
+ Rev 1.17 17 Jun 1997 15:47:06 MA
+ DrawTxtShell nicht von BaseShell ableiten + Opts
+
+ Rev 1.16 06 Jun 1997 11:08:40 OS
+ Seitennummer mit richtigem NumType anzeigen
+
+ Rev 1.15 11 Mar 1997 15:56:10 MA
+ fix: FrameNotify, SubShell vorhanden?
+
+ Rev 1.14 09 Feb 1997 20:58:10 JP
+ Bug #35760#: beim Core-Repaint die Bereiche der PagePreView mitteilen
+
+ Rev 1.13 15 Jan 1997 15:04:42 JP
+ default des TablenChgMode aus dem ConfigItem holen
+
+ Rev 1.12 25 Nov 1996 11:22:06 JP
+ neu: JavaScriptScrollMDI
+
+ Rev 1.11 28 Aug 1996 11:25:48 OS
+ includes
+
+ Rev 1.10 14 Dec 1995 17:32:16 OS
+ Search wieder an der view
+
+ Rev 1.9 30 Nov 1995 16:14:00 OS
+ SearchDialog kommt von der App
+
+ Rev 1.8 30 Nov 1995 13:25:32 MA
+ del: IsWinForPagePreview() entfernt
+
+ Rev 1.7 24 Nov 1995 16:58:36 OM
+ PCH->PRECOMPILED
+
+ Rev 1.6 30 Oct 1995 18:42:04 OM
+ GetData und GetViewWin entfernt
+
+ Rev 1.5 25 Sep 1995 21:55:56 JP
+ PageNumNotify kann auch kommen, wenn noch keine Shell gesetzt ist (Bug19864)
+
+ Rev 1.4 11 Sep 1995 11:04:20 JP
+ neu: GetSearchDialog - CrsrShell braucht den Pointer fuer die QueryBox
+
+ Rev 1.3 17 Aug 1995 08:38:52 OS
+ +RulerClook
+
+ Rev 1.2 14 Jul 1995 19:19:30 ER
+ segprag
+
+ Rev 1.1 11 Jun 1995 18:57:36 JP
+ neu: IsWinForPagePreview - Window von der SeitenAnsicht?
+
+ Rev 1.0 28 Mar 1995 09:51:24 SWG
+ Initial revision.
+
+**********************************************************************/
+
+
+
diff --git a/sw/source/ui/docvw/makefile.mk b/sw/source/ui/docvw/makefile.mk
new file mode 100644
index 000000000000..540457086655
--- /dev/null
+++ b/sw/source/ui/docvw/makefile.mk
@@ -0,0 +1,104 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=docvw
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ edtdd.cxx \
+ edtwin.cxx \
+ edtwin2.cxx \
+ edtwin3.cxx \
+ romenu.cxx \
+ srcedtw.cxx
+
+SRCFILES = \
+ docvw.src
+
+SLOFILES = \
+ $(SLO)$/edtdd.obj \
+ $(SLO)$/edtwin.obj \
+ $(SLO)$/edtwin2.obj \
+ $(SLO)$/edtwin3.obj \
+ $(SLO)$/romenu.obj \
+ $(SLO)$/srcedtw.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/docvw/romenu.cxx b/sw/source/ui/docvw/romenu.cxx
new file mode 100644
index 000000000000..48f462772af7
--- /dev/null
+++ b/sw/source/ui/docvw/romenu.cxx
@@ -0,0 +1,820 @@
+/*************************************************************************
+ *
+ * $RCSfile: romenu.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <hintids.hxx>
+
+
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _IODLG_HXX
+#include "sfx2/iodlg.hxx"
+#endif
+
+#ifndef _SOT_FORMATS_HXX
+#include <sot/formats.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _XOUTBMP_HXX //autogen
+#include <svx/xoutbmp.hxx>
+#endif
+#ifndef _SVX_IMPGRF_HXX //autogen
+#include <svx/impgrf.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _GRAPH_HXX //autogen
+#include <vcl/graph.hxx>
+#endif
+#ifndef _GALLERY_HXX_ //autogen
+#include <svx/gallery.hxx>
+#endif
+#ifndef _FILTER_HXX //autogen
+#include <svtools/filter.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _CLIP_HXX //autogen
+#include <vcl/clip.hxx>
+#endif
+#ifndef _SFX_INIMGR_HXX //autogen
+#include <sfx2/inimgr.hxx>
+#endif
+#ifndef _SFXINIMGR_HXX //autogen
+#include <svtools/iniman.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _IMAP_HXX //autogen
+#include <svtools/imap.hxx>
+#endif
+#ifndef _INETIMG_HXX //autogen
+#include <svtools/inetimg.hxx>
+#endif
+
+
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _FMTURL_HXX //autogen
+#include <fmturl.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _SWDOCSH_HXX //autogen
+#include <docsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _ROMENU_HXX
+#include <romenu.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _MODCFG_HXX
+#include <modcfg.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _DOCVW_HRC
+#include <docvw.hrc>
+#endif
+#ifndef _DOCVW_HRC
+#include <docvw.hrc>
+#endif
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+
+SwReadOnlyPopup::~SwReadOnlyPopup()
+{
+ String *pDel = (String*)aThemeList.First();
+ while ( pDel )
+ {
+ delete pDel;
+ pDel = (String*)aThemeList.Next();
+ }
+ delete pImageMap;
+ delete pTargetURL;
+}
+
+
+
+void SwReadOnlyPopup::Check( USHORT nMID, USHORT nSID, SfxDispatcher &rDis )
+{
+ SfxPoolItem *pItem = 0;
+ SfxItemState eState = rDis.GetBindings()->QueryState( nSID, pItem );
+ if (eState >= SFX_ITEM_AVAILABLE)
+ {
+ EnableItem( nMID, TRUE );
+ if (pItem)
+ {
+ CheckItem ( nMID, !pItem->ISA(SfxVoidItem) &&
+ pItem->ISA(SfxBoolItem) &&
+ ((SfxBoolItem*)pItem)->GetValue());
+ }
+ }
+ else
+ EnableItem( nMID, FALSE );
+
+ delete pItem;
+}
+
+
+SwReadOnlyPopup::SwReadOnlyPopup( const Point &rDPos, SwView &rV ) :
+ PopupMenu( SW_RES(MN_READONLY_POPUP) ),
+ rDocPos( rDPos ),
+ rView ( rV ),
+ pImageMap( 0 ),
+ pTargetURL( 0 )
+{
+ bGrfToGalleryAsLnk = SW_MOD()->GetModuleConfig()->IsGrfToGalleryAsLnk();
+ SwWrtShell &rSh = rView.GetWrtShell();
+ rSh.IsURLGrfAtPos( rDocPos, &sURL, &sTargetFrameName, &sDescription );
+ if ( !sURL.Len() )
+ {
+ SwContentAtPos aCntntAtPos( SwContentAtPos::SW_INETATTR );
+ if( rSh.GetContentAtPos( rDocPos, aCntntAtPos, FALSE))
+ {
+ SwFmtINetFmt &rIItem = *(SwFmtINetFmt*)aCntntAtPos.aFnd.pAttr;
+ sURL = rIItem.GetValue();
+ sTargetFrameName = rIItem.GetTargetFrame();
+ sDescription = aCntntAtPos.sStr;
+ }
+ }
+
+ BOOL bLink = FALSE;
+ const Graphic *pGrf;
+ if ( 0 == (pGrf = rSh.GetGrfAtPos( rDocPos, sGrfName, bLink )) )
+ {
+ EnableItem( MN_READONLY_SAVEGRAPHIC, FALSE );
+ EnableItem( MN_READONLY_COPYGRAPHIC, FALSE );
+ }
+ else
+ {
+ aGraphic = *pGrf;
+ const SwFrmFmt* pGrfFmt = rSh.GetFmtFromObj( rDocPos );
+ const SfxPoolItem* pItem;
+ if( pGrfFmt && SFX_ITEM_SET == pGrfFmt->GetItemState(
+ RES_URL, TRUE, &pItem ))
+ {
+ const SwFmtURL& rURL = *(SwFmtURL*)pItem;
+ if( rURL.GetMap() )
+ pImageMap = new ImageMap( *rURL.GetMap() );
+ else if( rURL.GetURL().Len() )
+ pTargetURL = new INetImage( bLink ? sGrfName : aEmptyStr,
+ rURL.GetURL(),
+ rURL.GetTargetFrameName(),
+ aEmptyStr, Size() );
+ }
+ }
+
+ BOOL bEnableGraphicToGallery;
+ if ( TRUE == (bEnableGraphicToGallery = bLink) )
+ {
+ GalleryExplorer::FillThemeList( aThemeList );
+ if ( aThemeList.Count() )
+ {
+ PopupMenu *pMenu = GetPopupMenu(MN_READONLY_GRAPHICTOGALLERY);
+ pMenu->CheckItem( MN_READONLY_TOGALLERYLINK, bGrfToGalleryAsLnk );
+ pMenu->CheckItem( MN_READONLY_TOGALLERYCOPY, !bGrfToGalleryAsLnk );
+ for ( USHORT i=0; i < aThemeList.Count(); ++i )
+ pMenu->InsertItem( MN_READONLY_GRAPHICTOGALLERY+i + 3,
+ *(String*)aThemeList.GetObject( i ) );
+ }
+ else
+ bEnableGraphicToGallery = FALSE;
+ }
+ EnableItem( MN_READONLY_GRAPHICTOGALLERY, bEnableGraphicToGallery );
+
+ SfxViewFrame * pVFrame = rV.GetViewFrame();
+ SfxDispatcher &rDis = *pVFrame->GetDispatcher();
+ const SfxPoolItem *pTmp;
+ EnableItem( MN_READONLY_CREATEGRAPHIKLINK, bLink &&
+ SFX_ITEM_AVAILABLE == rDis.QueryState( SID_CREATELINK, pTmp ));
+
+ const SwPageDesc &rDesc = rSh.GetPageDesc( rSh.GetCurPageDesc() );
+ pItem = &rDesc.GetMaster().GetBackground();
+ BOOL bEnableBackGallery = FALSE,
+ bEnableBack = FALSE;
+
+ if ( GPOS_NONE != pItem->GetGraphicPos() )
+ {
+ bEnableBack = TRUE;
+ if ( pItem->GetGraphicLink() )
+ {
+ if ( !aThemeList.Count() )
+ GalleryExplorer::FillThemeList( aThemeList );
+ if ( aThemeList.Count() )
+ {
+ PopupMenu *pMenu = GetPopupMenu(MN_READONLY_BACKGROUNDTOGALLERY);
+ pMenu->CheckItem( MN_READONLY_TOGALLERYLINK, bGrfToGalleryAsLnk );
+ pMenu->CheckItem( MN_READONLY_TOGALLERYCOPY, !bGrfToGalleryAsLnk );
+ bEnableBackGallery = TRUE;
+ for ( USHORT i=0; i < aThemeList.Count(); ++i )
+ pMenu->InsertItem( MN_READONLY_BACKGROUNDTOGALLERY+i + 3,
+ *(String*)aThemeList.GetObject( i ) );
+ }
+ }
+ }
+ EnableItem( MN_READONLY_SAVEBACKGROUND, bEnableBack );
+ EnableItem( MN_READONLY_BACKGROUNDTOGALLERY, bEnableBackGallery );
+
+ if ( !rSh.GetViewOptions()->IsGraphic() )
+ CheckItem( MN_READONLY_GRAPHICOFF );
+ else
+ EnableItem( MN_READONLY_LOADGRAPHIC, FALSE );
+
+ BOOL bReloadFrame = 0 != rSh.GetView().GetViewFrame()->GetFrame()->GetParentFrame();
+ EnableItem( MN_READONLY_RELOAD_FRAME,
+ bReloadFrame );
+ EnableItem( MN_READONLY_RELOAD, !bReloadFrame);
+
+ Check( MN_READONLY_EDITDOC, SID_EDITDOC, rDis );
+ Check( MN_READONLY_SOURCEVIEW, SID_SOURCEVIEW, rDis );
+ Check( MN_READONLY_BROWSE_STOP, SID_BROWSE_STOP, rDis );
+ Check( MN_READONLY_BROWSE_BACKWARD, SID_BROWSE_BACKWARD,rDis );
+ Check( MN_READONLY_BROWSE_FORWARD, SID_BROWSE_FORWARD, rDis );
+ Check( MN_READONLY_CREATELINK, SID_CREATELINK, rDis );
+#ifdef WNT
+ Check( MN_READONLY_PLUGINOFF, SID_PLUGINS_ACTIVE, rDis );
+#endif
+ Check( MN_READONLY_OPENURL, SID_OPENDOC, rDis );
+ Check( MN_READONLY_OPENURLNEW, SID_OPENDOC, rDis );
+
+ SfxPoolItem* pState;
+ SfxItemState eState = pVFrame->GetBindings().QueryState( SID_EDITDOC, pState );
+ if(eState < SFX_ITEM_DEFAULT ||
+ rSh.IsGlobalDoc() && rView.GetDocShell()->IsReadOnlyUI())
+ EnableItem( MN_READONLY_EDITDOC, FALSE );
+
+ if ( !sURL.Len() )
+ {
+ EnableItem( MN_READONLY_OPENURL, FALSE );
+ EnableItem( MN_READONLY_OPENURLNEW, FALSE );
+ EnableItem( MN_READONLY_CREATELINK, FALSE );
+ EnableItem( MN_READONLY_DOWNLOAD, FALSE );
+ EnableItem( MN_READONLY_COPYLINK, FALSE );
+ }
+
+ RemoveDisabledEntries( TRUE, TRUE );
+
+#if 0
+ //Jetzt noch das unnuetze Geraffel entfernen.
+ MenuItemType eLast = MENUITEM_DONTKNOW;
+ for ( int i = 0; i < GetItemCount(); ++i )
+ {
+ if ( MENUITEM_SEPARATOR == GetItemType( i ) )
+ {
+ if ( i == 0 || eLast == MENUITEM_SEPARATOR )
+ RemoveItem( i-- );
+ }
+ else if ( !IsItemEnabled( GetItemId( i ) ) )
+ RemoveItem( i-- );
+ eLast = i >= 0 ? GetItemType(i) : MENUITEM_DONTKNOW;
+ }
+#endif
+}
+
+struct _CastINetImage : INetImage
+{
+ void Copy()
+ {
+ String sData( CopyExchange() );
+ if( sData.Len() )
+ Clipboard::CopyData( sData.GetBuffer(), sData.Len() / 2,
+ SOT_FORMATSTR_ID_INET_IMAGE );
+ }
+};
+
+void SwReadOnlyPopup::Execute( Window* pWin, const Point &rPixPos )
+{
+ SwWrtShell &rSh = rView.GetWrtShell();
+ SfxDispatcher &rDis = *rView.GetViewFrame()->GetDispatcher();
+ USHORT nId = PopupMenu::Execute(
+ pWin,
+ rPixPos );
+
+ if ( nId >= MN_READONLY_GRAPHICTOGALLERY )
+ {
+ String sTmp;
+ USHORT nSaveId;
+ if ( nId >= MN_READONLY_BACKGROUNDTOGALLERY )
+ {
+ nId -= MN_READONLY_BACKGROUNDTOGALLERY+3;
+ nSaveId = MN_READONLY_SAVEBACKGROUND;
+ sTmp = *pItem->GetGraphicLink();
+ }
+ else
+ {
+ nId -= MN_READONLY_GRAPHICTOGALLERY+3;
+ nSaveId = MN_READONLY_SAVEGRAPHIC;
+ sTmp = sGrfName;
+ }
+ if ( !bGrfToGalleryAsLnk )
+ sTmp = SaveGraphic( nSaveId );
+
+ if ( sTmp.Len() )
+ {
+ String sThemeName( *(String*)aThemeList.GetObject( nId ));
+ GalleryExplorer::InsertURL( sThemeName, sTmp );
+ }
+ return;
+ }
+
+ USHORT nExecId = USHRT_MAX;
+ USHORT nFilter = USHRT_MAX;
+ switch( nId )
+ {
+ case MN_READONLY_OPENURL: nFilter = URLLOAD_NOFILTER; break;
+ case MN_READONLY_OPENURLNEW: nFilter = URLLOAD_NEWVIEW; break;
+ case MN_READONLY_EDITDOC: nExecId = SID_EDITDOC; break;
+ case MN_READONLY_RELOAD:
+ case MN_READONLY_RELOAD_FRAME:
+ rSh.GetView().GetViewFrame()->GetDispatcher()->Execute(SID_RELOAD);
+ break;
+
+ case MN_READONLY_BROWSE_STOP: nExecId = SID_BROWSE_STOP; break;
+ case MN_READONLY_BROWSE_BACKWARD: nExecId = SID_BROWSE_BACKWARD;break;
+ case MN_READONLY_BROWSE_FORWARD: nExecId = SID_BROWSE_FORWARD; break;
+ case MN_READONLY_SOURCEVIEW: nExecId = SID_SOURCEVIEW; break;
+ case MN_READONLY_CREATELINK:
+ {
+ SfxStringItem aName( SID_BOOKMARK_TITLE, sDescription );
+ SfxStringItem aURL( SID_BOOKMARK_URL, sURL );
+ rDis.Execute( SID_CREATELINK, SFX_CALLMODE_ASYNCHRON,
+ &aName, &aURL, 0L);
+ }
+ break;
+ case MN_READONLY_CREATEGRAPHIKLINK:
+ {
+ SfxStringItem aURL ( SID_BOOKMARK_URL, sGrfName );
+ INetURLObject aTmp;
+ aTmp.SetSmartURL( sGrfName );
+ SfxStringItem aName( SID_BOOKMARK_TITLE, aTmp.GetName() );
+ rDis.Execute( SID_CREATELINK, SFX_CALLMODE_ASYNCHRON,
+ &aName, &aURL, 0L);
+ }
+ case MN_READONLY_DOWNLOAD: nFilter =
+ URLLOAD_NEWVIEW |
+ URLLOAD_DOWNLOADFILTER; break;
+ case MN_READONLY_SAVEGRAPHIC:
+ case MN_READONLY_SAVEBACKGROUND:
+ {
+ SaveGraphic( nId );
+ break;
+ }
+ case MN_READONLY_COPYLINK:
+ Clipboard::Clear();
+ Clipboard::CopyString( sURL );
+ break;
+
+ case MN_READONLY_COPYGRAPHIC:
+ Clipboard::Clear();
+ aGraphic.Copy();
+ if( pImageMap ) pImageMap->Copy();
+ if( pTargetURL ) ((_CastINetImage*)pTargetURL)->Copy();
+ break;
+
+ case MN_READONLY_LOADGRAPHIC:
+ {
+ BOOL bModified = rSh.IsModified();
+ SwViewOption aOpt( *rSh.GetViewOptions() );
+ aOpt.SetGraphic( TRUE );
+ rSh.ApplyViewOptions( aOpt );
+ if(!bModified)
+ rSh.ResetModified();
+ break;
+ }
+ case MN_READONLY_GRAPHICOFF: nExecId = FN_VIEW_GRAPHIC; break;
+#ifdef WNT
+ case MN_READONLY_PLUGINOFF: nExecId = SID_PLUGINS_ACTIVE; break;
+#endif
+ case MN_READONLY_TOGALLERYLINK:
+ SW_MOD()->GetModuleConfig()->SetGrfToGalleryAsLnk( TRUE );
+ break;
+ case MN_READONLY_TOGALLERYCOPY:
+ SW_MOD()->GetModuleConfig()->SetGrfToGalleryAsLnk( FALSE );
+ break;
+
+ default: /* do nothing */;
+ }
+ if ( nExecId != USHRT_MAX )
+ rDis.GetBindings()->Execute( nExecId );
+ if ( nFilter != USHRT_MAX )
+ ::LoadURL( sURL, &rSh, nFilter, &sTargetFrameName);
+}
+ //nicht const, weil GetLink() noch
+ //nicht const. kann bei naechster
+ //Aenderung dieses Files mit
+ //erledigt werden.
+void lcl_GetPreferedExtension( String &rExt, /*const*/ Graphic &rGrf )
+{
+ // dann ggfs. ueber die native-Info der Grafik den "besten"
+ // Filter vorschlagen
+ switch( rGrf.GetLink().GetType() )
+ {
+ case GFX_LINK_TYPE_NATIVE_GIF: rExt = C2S("gif"); break;
+ case GFX_LINK_TYPE_NATIVE_TIF: rExt = C2S("tif"); break;
+ case GFX_LINK_TYPE_NATIVE_WMF: rExt = C2S("wmf"); break;
+ case GFX_LINK_TYPE_NATIVE_MET: rExt = C2S("met"); break;
+ case GFX_LINK_TYPE_NATIVE_PCT: rExt = C2S("pct"); break;
+ case GFX_LINK_TYPE_NATIVE_JPG: rExt = C2S("jpg"); break;
+
+ // case GFX_LINK_TYPE_NATIVE_PNG:
+ default: rExt = C2S("png"); break;
+ }
+}
+
+
+String SwReadOnlyPopup::SaveGraphic( USHORT nId )
+{
+ static String sGrfPath;
+ if(!sGrfPath.Len())
+ sGrfPath = SFX_INIMANAGER()->Get(SFX_KEY_GRAPHICS_PATH);
+ SwWrtShell &rSh = rView.GetWrtShell();
+ SfxFileDialog aExpDlg( NULL, WinBits(WB_SAVEAS|WB_3DLOOK) );
+ aExpDlg.DisableSaveLastDirectory();
+ aExpDlg.SetHelpId(HID_FILEDLG_ROMENU);
+ INetURLObject aPath;
+ aPath.SetSmartURL( sGrfPath);
+
+ //Namen der Grafik herausfischen.
+ String aName;
+ if ( MN_READONLY_SAVEBACKGROUND == nId )
+ {
+ if ( pItem->GetGraphicLink() )
+ aName = *pItem->GetGraphicLink();
+ ((SvxBrushItem*)pItem)->SetDoneLink( Link() );
+ const Graphic *pGrf = pItem->GetGraphic( rView.GetDocShell() );
+ if ( pGrf )
+ {
+ aGraphic = *pGrf;
+ if ( pItem->GetGraphicLink() )
+ sGrfName = *pItem->GetGraphicLink();
+ }
+ else
+ return aEmptyStr;
+ }
+ else
+ aName = sGrfName;
+ INetURLObject aURL;
+ aURL.SetSmartURL( aName );
+ aPath.Append( aURL.GetName() );
+ aExpDlg.SetPath( aPath.GetMainURL() );
+ aExpDlg.SetText( SW_RESSTR(STR_EXPORT_GRAFIK_TITLE));
+
+ GraphicFilter& rGF = *GetGrfFilter();
+ const USHORT nCount = rGF.GetExportFormatCount();
+
+ String aExt( aURL.GetExtension() );
+ if( !aExt.Len() )
+ lcl_GetPreferedExtension( aExt, aGraphic );
+
+ aExpDlg.SetDefaultExt( aExt );
+ aExt.ToLowerAscii();
+ int nDfltFilter = INT_MAX;
+
+ for ( int i = 0; i < nCount; i++ )
+ {
+ aExpDlg.AddFilter( rGF.GetExportFormatName( i ),
+ rGF.GetExportWildcard( i ),
+ rGF.GetExportOSFileType( i ) );
+ if ( COMPARE_EQUAL == aExt.CompareIgnoreCaseToAscii(rGF.GetExportFormatType( i ).ToLowerAscii() ))
+ nDfltFilter = i;
+ }
+ if ( INT_MAX == nDfltFilter )
+ {
+ //"falsche" Extension?
+ lcl_GetPreferedExtension( aExt, aGraphic );
+ for ( int i = 0; i < nCount; ++i )
+ if ( aExt == rGF.GetExportFormatType( i ).ToLowerAscii() )
+ {
+ nDfltFilter = i;
+ break;
+ }
+ }
+
+ if( INT_MAX != nDfltFilter )
+ {
+ aExpDlg.SetCurFilter( rGF.GetExportFormatName( nDfltFilter ) );
+
+ if( RET_OK == aExpDlg.Execute() )
+ {
+ String sPath( aExpDlg.GetPath() );
+ //verwendeten Pfad merken - bitte nicht wieder wegoptimieren!
+ aPath.SetSmartURL( sPath);
+ sGrfPath = aPath.GetPath();
+
+ if( sGrfName.Len() &&
+ nDfltFilter == rGF.GetExportFormatNumber( aExpDlg.GetCurFilter()))
+ {
+ //Versuchen die Originalgrafik zu speichern.
+ SfxMedium aIn( sGrfName, STREAM_READ | STREAM_NOCREATE,
+ TRUE, TRUE );
+ if( aIn.GetInStream() && !aIn.GetInStream()->GetError() )
+ {
+ SfxMedium aOut( sPath, STREAM_WRITE | STREAM_SHARE_DENYNONE,
+ FALSE, FALSE );
+ if( aOut.GetOutStream() && !aOut.GetOutStream()->GetError())
+ {
+ *aOut.GetOutStream() << *aIn.GetInStream();
+ if ( 0 == aIn.GetError() )
+ {
+ aOut.Close();
+ aOut.Commit();
+ if ( 0 == aOut.GetError() )
+ return sPath;
+ }
+ }
+ }
+ }
+
+ int nFilter;
+ if ( aExpDlg.GetCurFilter().Len() && rGF.GetExportFormatCount() )
+ nFilter = rGF.GetExportFormatNumber( aExpDlg.GetCurFilter() );
+ else
+ nFilter = GRFILTER_FORMAT_DONTKNOW;
+ String aFilter( rGF.GetExportFormatShortName( nFilter ) );
+ XOutBitmap::WriteGraphic( aGraphic, sPath, aFilter,
+ XOUTBMP_DONT_EXPAND_FILENAME );
+ return sPath;
+ }
+ }
+ return aEmptyStr;
+}
+
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.56 2000/09/18 16:05:24 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.55 2000/09/07 15:59:22 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.54 2000/04/19 12:56:34 os
+ include sfx2/filedlg.hxx removed
+
+ Revision 1.53 2000/04/18 15:18:17 os
+ UNICODE
+
+ Revision 1.52 2000/03/03 15:17:00 os
+ StarView remainders removed
+
+ Revision 1.51 2000/02/11 14:45:03 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.50 2000/01/24 12:49:10 os
+ #72153# call SfxFileDialog::DisableSaveLastDirectory
+
+ Revision 1.49 1999/03/08 10:51:04 JP
+ Bug #62925#: ImageMap/INetImage mit ins Clipboard stellen
+
+
+ Rev 1.48 08 Mar 1999 11:51:04 JP
+ Bug #62925#: ImageMap/INetImage mit ins Clipboard stellen
+
+ Rev 1.47 25 Nov 1998 13:56:30 OS
+ #59809# Grafik-Pfad wieder merken
+
+ Rev 1.46 26 Oct 1998 16:16:06 OS
+ #58159# Reload und ReloadFrame im ReadOnlyPopup
+
+ Rev 1.45 21 Oct 1998 13:23:26 OM
+ #58267# Slotstatus ueber Bindings abfragen
+
+ Rev 1.44 02 Sep 1998 14:11:48 OM
+ #45378# HelpIDs fuer Dateidialoge
+
+ Rev 1.43 12 Aug 1998 09:41:54 MA
+ #54165# Phantasie-Extensions verarbeiten
+
+ Rev 1.42 11 Aug 1998 14:15:24 JP
+ Bug #54446#: bei embeddeten Grafiken, das default Format aus der Grafik besorgen
+
+ Rev 1.41 05 Aug 1998 12:42:10 JP
+ Bug #54446#: bei embeddeten Grafiken keine leeren Dateien erzeugen
+
+ Rev 1.40 30 Jul 1998 22:15:16 JP
+ Bug #54446# auch nicht gelinkte Grafiken speichern
+
+ Rev 1.39 30 Jun 1998 17:47:44 MA
+ RemoveDisabledEntries genutzt
+
+ Rev 1.38 07 May 1998 17:58:42 MA
+ PlugIn fuer WNT wieder aktiv
+
+ Rev 1.37 29 Apr 1998 18:30:26 MA
+ #49873# so macht man das also
+
+ Rev 1.36 28 Apr 1998 15:07:54 MA
+ chg: PathToFileName statt GetFull am URL-Objekt
+
+ Rev 1.35 16 Apr 1998 08:15:10 OS
+ nach Grafiken einschalten evtl. Modify-Flag zuruecksetzen#49488#
+
+ Rev 1.34 25 Mar 1998 14:24:12 OS
+ im ReadonlyUI-Zustand der Globaldokumente Bearbeiten nicht moeglich #48871#
+
+ Rev 1.33 25 Nov 1997 10:32:58 MA
+ includes
+
+ Rev 1.32 16 Oct 1997 12:03:08 OS
+ PlugIn nicht im VCL
+
+ Rev 1.31 12 Sep 1997 10:38:44 OS
+ ITEMID_* definiert
+
+ Rev 1.30 02 Sep 1997 13:20:48 OS
+ includes
+
+ Rev 1.29 29 Aug 1997 16:03:32 OS
+ PopupMenu::Execute mit Window* fuer VCL
+
+ Rev 1.28 29 Aug 1997 14:35:36 OS
+ DLL-Umbau
+
+ Rev 1.27 15 Aug 1997 12:09:56 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.26 12 Aug 1997 15:59:04 OS
+ frmitems/textitem/paraitem aufgeteilt
+
+ Rev 1.25 12 Aug 1997 12:40:30 MA
+ #41880# Original der Grafiken speichern
+
+ Rev 1.24 08 Aug 1997 17:30:12 OM
+ Headerfile-Umstellung
+
+ Rev 1.23 07 Aug 1997 15:00:18 OM
+ Headerfile-Umstellung
+
+ Rev 1.22 06 Aug 1997 10:18:12 OS
+ FN_SOURCEVIEW->SID_SOURCEVIEW
+
+ Rev 1.21 27 May 1997 13:22:10 OS
+ FN_SOURCEVIEW im Popup
+
+ Rev 1.20 15 Apr 1997 14:14:24 OS
+ Status fuer EDITDOC an den Bindings erfragen
+
+ Rev 1.19 20 Mar 1997 16:59:42 MA
+ fix: richtige Extension und damit Filtererkennung reanimiert
+
+ Rev 1.18 18 Mar 1997 14:40:18 OS
+ letzten Save-Pfad merken und am Dialog richtig einstellen
+
+ Rev 1.17 23 Feb 1997 17:56:50 MA
+ #36840# mit den Separatoren aufraeumen.
+
+ Rev 1.16 14 Feb 1997 19:42:26 MA
+ new: Flag fuer Readonly-Gallery
+
+ Rev 1.15 12 Feb 1997 17:05:36 MA
+ #36004# Background disablen
+
+ Rev 1.14 10 Feb 1997 16:48:10 MA
+ fix: BackgroundToGallery ggf. disablen
+
+ Rev 1.13 06 Feb 1997 08:24:02 MA
+ BackgroundToGallery, removen disableter Items
+
+ Rev 1.12 04 Feb 1997 16:04:18 MA
+ chg: Aufnehmen in Gallery
+
+ Rev 1.11 02 Dec 1996 08:32:00 TRI
+ SfxPoolItem const gemacht
+
+ Rev 1.10 29 Nov 1996 10:20:36 MA
+ fix: dontexpandfilename
+
+ Rev 1.9 28 Nov 1996 18:15:00 HJS
+ cast fuer os2
+
+ Rev 1.8 28 Nov 1996 14:20:32 MA
+ fix: Grafiken speichern, fehlt noch der TempName
+
+ Rev 1.7 21 Nov 1996 20:07:08 MA
+ chg: neue Eintraege
+
+ Rev 1.6 18 Nov 1996 18:22:08 MA
+ chg: SfxFileDialog statt FileDialog
+
+ Rev 1.5 11 Nov 1996 09:39:32 MA
+ ResMgr
+
+ Rev 1.4 24 Oct 1996 15:37:18 MA
+ chg: Filter per Extension detecten
+
+ Rev 1.3 22 Oct 1996 12:27:50 MA
+ new: Namen und Filter defaulten
+
+ Rev 1.2 24 Sep 1996 16:45:16 OS
+ OS/2-Absturz behoben; richtiges enablen
+
+ Rev 1.1 18 Sep 1996 18:20:12 MA
+ #31458# Dispatcher statt Bindings
+
+ Rev 1.0 16 Sep 1996 14:56:38 MA
+ new: Readonly-Popup
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/docvw/romenu.hxx b/sw/source/ui/docvw/romenu.hxx
new file mode 100644
index 000000000000..baf34c5fe79f
--- /dev/null
+++ b/sw/source/ui/docvw/romenu.hxx
@@ -0,0 +1,111 @@
+/*************************************************************************
+ *
+ * $RCSfile: romenu.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ROMENU_HXX
+#define _ROMENU_HXX
+
+
+#ifndef _GRAPH_HXX //autogen
+#include <vcl/graph.hxx>
+#endif
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+
+class SwView;
+class SfxDispatcher;
+class SvxBrushItem;
+class ImageMap;
+class INetImage;
+
+class SwReadOnlyPopup : public PopupMenu
+{
+ SwView &rView;
+ const SvxBrushItem *pItem;
+ const Point &rDocPos;
+ Graphic aGraphic;
+ String sURL,
+ sTargetFrameName,
+ sDescription,
+ sGrfName;
+ List aThemeList;
+ BOOL bGrfToGalleryAsLnk;
+ ImageMap* pImageMap;
+ INetImage* pTargetURL;
+
+ void Check( USHORT nMID, USHORT nSID, SfxDispatcher &rDis );
+ String SaveGraphic( USHORT nId );
+
+public:
+ SwReadOnlyPopup( const Point &rDPos, SwView &rV );
+ ~SwReadOnlyPopup();
+#ifdef VCL
+ void Execute( Window* pWin, const Point &rPPos );
+#else
+ void Execute( const Point &rPPos );
+#endif
+};
+
+
+#endif
+
diff --git a/sw/source/ui/docvw/srcedtw.cxx b/sw/source/ui/docvw/srcedtw.cxx
new file mode 100644
index 000000000000..45eac58447c3
--- /dev/null
+++ b/sw/source/ui/docvw/srcedtw.cxx
@@ -0,0 +1,1016 @@
+/*************************************************************************
+ *
+ * $RCSfile: srcedtw.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+#include "cmdid.h"
+
+
+#ifndef _SYSTEM_HXX //autogen
+#include <vcl/system.hxx>
+#endif
+#ifndef _TEXTVIEW_HXX
+#include <svtools/textview.hxx>
+#endif
+#ifndef _SVX_SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SCRBAR_HXX //autogen
+#include <vcl/scrbar.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _HTMLTOKN_H
+#include <svtools/htmltokn.h>
+#endif
+#ifndef _TXTATTR_HXX //autogen
+#include <svtools/txtattr.hxx>
+#endif
+
+
+#include "swmodule.hxx"
+#include "docsh.hxx"
+#include "srcview.hxx"
+#include "srcedtw.hxx"
+#include "srcvcfg.hxx"
+#include "helpid.h"
+
+
+enum SwHtmlTextType {
+ TT_SGML = SRC_SYN_SGML ,
+ TT_COMMENT = SRC_SYN_COMMENT ,
+ TT_KEYWORD = SRC_SYN_KEYWRD ,
+ TT_UNKNOWN = SRC_SYN_UNKNOWN
+};
+
+
+struct SwTextPortion
+{
+ USHORT nLine;
+ USHORT nStart, nEnd;
+ SwHtmlTextType eType;
+};
+
+#define MAX_SYNTAX_HIGHLIGHT 20
+
+SV_DECL_VARARR(SwTextPortions, SwTextPortion,16,16)
+
+/* -----------------15.01.97 12.07-------------------
+
+--------------------------------------------------*/
+
+SV_IMPL_VARARR(SwTextPortions, SwTextPortion)
+
+/*-----------------15.01.97 12.08-------------------
+
+--------------------------------------------------*/
+
+void lcl_Highlight(const String& rSource, SwTextPortions& aPortionList)
+{
+ const sal_Unicode cOpenBracket = '<';
+ const sal_Unicode cCloseBracket= '>';
+ const sal_Unicode cSlash = '/';
+ const sal_Unicode cExclamation = '!';
+ const sal_Unicode cQuote = '"';
+ const sal_Unicode cSQuote = '\'';
+ const sal_Unicode cMinus = '-';
+ const sal_Unicode cSpace = ' ';
+ const sal_Unicode cTab = 0x09;
+ const sal_Unicode cLF = 0x0a;
+ const sal_Unicode cCR = 0x0d;
+
+
+ const USHORT nStrLen = rSource.Len();
+ USHORT nInsert = 0; // Anzahl der eingefuegten Portions
+ USHORT nActPos = 0; //Position, an der '<' gefunden wurde
+ USHORT nOffset = 0; //Offset von nActPos zur '<'
+ USHORT nPortStart = USHRT_MAX; // fuer die TextPortion
+ USHORT nPortEnd = 0; //
+ SwTextPortion aText;
+ while(nActPos < nStrLen)
+ {
+ SwHtmlTextType eFoundType = TT_UNKNOWN;
+ if(rSource.GetChar(nActPos) == cOpenBracket && nActPos < nStrLen - 2 )
+ {
+ // 'leere' Portion einfuegen
+ if(nPortEnd < nActPos - 1 )
+ {
+ aText.nLine = 0;
+ // am Anfang nicht verschieben
+ aText.nStart = nPortEnd;
+ if(nInsert)
+ aText.nStart += 1;
+ aText.nEnd = nActPos - 1;
+ aText.eType = TT_UNKNOWN;
+ aPortionList.Insert(aText, nInsert++);
+ }
+ sal_Unicode cFollowFirst = rSource.GetChar((xub_StrLen)(nActPos + 1));
+ sal_Unicode cFollowNext = rSource.GetChar((xub_StrLen)(nActPos + 2));
+ if(cExclamation == cFollowFirst)
+ {
+ // "<!" SGML oder Kommentar
+ if(cMinus == cFollowNext &&
+ nActPos < nStrLen - 3 && cMinus == rSource.GetChar((xub_StrLen)(nActPos + 3)))
+ {
+ eFoundType = TT_COMMENT;
+ }
+ else
+ eFoundType = TT_SGML;
+ nPortStart = nActPos;
+ nPortEnd = nActPos + 1;
+ }
+ else if(cSlash == cFollowFirst)
+ {
+ // "</" Slash ignorieren
+ nPortStart = nActPos;
+ nActPos++;
+ nOffset++;
+ }
+ if(TT_UNKNOWN == eFoundType)
+ {
+ //jetzt koennte hier ein keyword folgen
+ USHORT nSrchPos = nActPos;
+ while(++nSrchPos < nStrLen - 1)
+ {
+ sal_Unicode cNext = rSource.GetChar(nSrchPos);
+ if( cNext == cSpace ||
+ cNext == cTab ||
+ cNext == cLF ||
+ cNext == cCR)
+ break;
+ else if(cNext == cCloseBracket)
+ {
+ break;
+ }
+ }
+ if(nSrchPos > nActPos + 1)
+ {
+ //irgend ein String wurde gefunden
+ String sToken = rSource.Copy(nActPos + 1, nSrchPos - nActPos - 1 );
+ sToken.ToUpperAscii();
+ int nToken = ::GetHTMLToken(sToken);
+ if(nToken)
+ {
+ //Token gefunden
+ eFoundType = TT_KEYWORD;
+ nPortEnd = nSrchPos;
+ nPortStart = nActPos;
+ }
+ else
+ {
+ //was war das denn?
+#ifdef DEBUG
+ DBG_ERROR("Token nicht erkannt!")
+ DBG_ERROR(ByteString(sToken, gsl_getSystemTextEncoding()).GetBuffer())
+#endif
+ }
+
+ }
+ }
+ // jetzt muss noch '>' gesucht werden
+ if(TT_UNKNOWN != eFoundType)
+ {
+ BOOL bFound = FALSE;
+ for(USHORT i = nPortEnd; i < nStrLen; i++)
+ if(cCloseBracket == rSource.GetChar(i))
+ {
+ bFound = TRUE;
+ nPortEnd = i;
+ break;
+ }
+ if(!bFound && (eFoundType == TT_COMMENT))
+ {
+ // Kommentar ohne Ende in dieser Zeile
+ bFound = TRUE;
+ nPortEnd = nStrLen - 1;
+ }
+
+ if(bFound ||(eFoundType == TT_COMMENT))
+ {
+ SwTextPortion aText;
+ aText.nLine = 0;
+ aText.nStart = nPortStart + 1;
+ aText.nEnd = nPortEnd;
+ aText.eType = eFoundType;
+ aPortionList.Insert(aText, nInsert++);
+ eFoundType = TT_UNKNOWN;
+ }
+
+ }
+ }
+ nActPos++;
+ }
+ if(nInsert && nPortEnd < nActPos - 1)
+ {
+ aText.nLine = 0;
+ aText.nStart = nPortEnd + 1;
+ aText.nEnd = nActPos - 1;
+ aText.eType = TT_UNKNOWN;
+ aPortionList.Insert(aText, nInsert++);
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwSrcEditWindow::SwSrcEditWindow( Window* pParent, SwSrcView* pParentView ) :
+ Window( pParent, WB_BORDER|WB_CLIPCHILDREN ),
+ pTextEngine(0),
+ pOutWin(0),
+ pHScrollbar(0),
+ pVScrollbar(0),
+ pSrcView(pParentView),
+ nCurTextWidth(0),
+ bDoSyntaxHighlight(TRUE),
+ bHighlighting(FALSE),
+ pSrcVwConfig(SW_MOD()->GetSourceViewConfig()),
+ nStartLine(USHRT_MAX)
+{
+ SetHelpId(HID_SOURCE_EDITWIN);
+ CreateTextEngine();
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+ SwSrcEditWindow::~SwSrcEditWindow()
+{
+ aSyntaxIdleTimer.Stop();
+ if ( pTextEngine )
+ {
+ EndListening( *pTextEngine );
+ pTextEngine->RemoveView( pTextView );
+
+ delete pHScrollbar;
+ delete pVScrollbar;
+
+ delete pTextView;
+ delete pTextEngine;
+ }
+ delete pOutWin;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+#if (SUPD>397)
+void SwSrcEditWindow::DataChanged( const DataChangedEvent& )
+{
+ Resize();
+}
+#endif
+
+void SwSrcEditWindow::Resize()
+{
+ // ScrollBars, etc. passiert in Adjust...
+ if ( pTextView )
+ {
+ long nVisY = pTextView->GetStartDocPos().Y();
+ pTextView->ShowCursor();
+ Size aOutSz( GetOutputSizePixel() );
+ long nMaxVisAreaStart = pTextView->GetTextEngine()->GetTextHeight() - aOutSz.Height();
+ if ( nMaxVisAreaStart < 0 )
+ nMaxVisAreaStart = 0;
+ if ( pTextView->GetStartDocPos().Y() > nMaxVisAreaStart )
+ {
+ Point aStartDocPos( pTextView->GetStartDocPos() );
+ aStartDocPos.Y() = nMaxVisAreaStart;
+ pTextView->SetStartDocPos( aStartDocPos );
+ pTextView->ShowCursor();
+ }
+ InitScrollBars();
+ long nScrollStd = GetSettings().GetStyleSettings().GetScrollBarSize();
+ Size aScrollSz(aOutSz.Width() - nScrollStd, nScrollStd );
+ Point aScrollPos(0, aOutSz.Height() - nScrollStd);
+
+ pHScrollbar->SetPosSizePixel( aScrollPos, aScrollSz);
+
+ aScrollSz.Width() = aScrollSz.Height();
+ aScrollSz.Height() = aOutSz.Height();
+ aScrollPos = Point(aOutSz.Width() - nScrollStd, 0);
+
+ pVScrollbar->SetPosSizePixel( aScrollPos, aScrollSz);
+ aOutSz.Width() -= nScrollStd;
+ aOutSz.Height() -= nScrollStd;
+ pOutWin->SetOutputSizePixel(aOutSz);
+ // Zeile im ersten Resize setzen
+ if(USHRT_MAX != nStartLine)
+ {
+ if(nStartLine < pTextEngine->GetParagraphCount())
+ {
+ TextSelection aSel(TextPaM( nStartLine, 0 ), TextPaM( nStartLine, 0x0 ));
+ pTextView->SetSelection(aSel);
+ pTextView->ShowCursor();
+ }
+ nStartLine = USHRT_MAX;
+ }
+
+ if ( nVisY != pTextView->GetStartDocPos().Y() )
+ Invalidate();
+ }
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void TextViewOutWin::DataChanged( const DataChangedEvent& )
+{
+ const Color &rCol = GetSettings().GetStyleSettings().GetWindowColor();
+ SetBackground( rCol );
+ Font aFont( pTextView->GetTextEngine()->GetFont() );
+ aFont.SetFillColor( rCol );
+ pTextView->GetTextEngine()->SetFont( aFont );
+}
+
+void TextViewOutWin::MouseMove( const MouseEvent &rEvt )
+{
+ if ( pTextView )
+ pTextView->MouseMove( rEvt );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void TextViewOutWin::MouseButtonUp( const MouseEvent &rEvt )
+{
+ if ( pTextView )
+ {
+ pTextView->MouseButtonUp( rEvt );
+ ((SwSrcEditWindow*)GetParent())->GetSrcView()->GetViewFrame()->
+ GetBindings().Invalidate( SID_TABLE_CELL );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void TextViewOutWin::MouseButtonDown( const MouseEvent &rEvt )
+{
+ GrabFocus();
+ if ( pTextView )
+ pTextView->MouseButtonDown( rEvt );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void TextViewOutWin::Command( const CommandEvent& rCEvt )
+{
+ switch(rCEvt.GetCommand())
+ {
+ case COMMAND_CONTEXTMENU:
+ ((SwSrcEditWindow*)GetParent())->GetSrcView()->GetViewFrame()->
+ GetDispatcher()->ExecutePopup();
+ break;
+ case COMMAND_WHEEL:
+ case COMMAND_STARTAUTOSCROLL:
+ case COMMAND_AUTOSCROLL:
+ {
+ const CommandWheelData* pWData = rCEvt.GetWheelData();
+ if( !pWData || COMMAND_WHEEL_ZOOM != pWData->GetMode() )
+ {
+ ((SwSrcEditWindow*)GetParent())->HandleWheelCommand( rCEvt );
+ }
+ }
+ break;
+
+ default:
+ if ( pTextView )
+ pTextView->Command( rCEvt );
+ else
+ Window::Command(rCEvt);
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+BOOL TextViewOutWin::Drop( const DropEvent& rEvt )
+{
+ BOOL bDone = FALSE;
+ if ( pTextView )
+ {
+ bDone = pTextView->Drop( rEvt );
+ if ( bDone )
+ {
+ SfxBindings& rBindings = ((SwSrcEditWindow*)GetParent())->
+ GetSrcView()->GetViewFrame()->GetBindings();
+ rBindings.Invalidate( SID_TABLE_CELL );
+ rBindings.Invalidate( SID_SAVEDOC );
+ rBindings.Invalidate( SID_DOC_MODIFIED );
+ }
+ }
+ return bDone;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+BOOL TextViewOutWin::QueryDrop( DropEvent& rEvt )
+{
+ if ( pTextView && !((SwSrcEditWindow*)GetParent())->IsReadonly() )
+ return pTextView->QueryDrop( rEvt );
+ return FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void TextViewOutWin::KeyInput( const KeyEvent& rKEvt )
+{
+ BOOL bDone = FALSE;
+ SwSrcEditWindow* pSrcEditWin = (SwSrcEditWindow*)GetParent();
+ BOOL bChange = !pSrcEditWin->IsReadonly() || !TextEngine::DoesKeyChangeText( rKEvt );
+ if(bChange)
+ bDone = pTextView->KeyInput( rKEvt );
+
+ if ( !bDone )
+ {
+ if ( !SfxViewShell::Current()->KeyInput( rKEvt ) )
+ Window::KeyInput( rKEvt );
+ }
+ else
+ {
+ SfxBindings& rBindings = ((SwSrcEditWindow*)GetParent())->GetSrcView()->GetViewFrame()->GetBindings();
+ rBindings.Invalidate( SID_TABLE_CELL );
+ if ( rKEvt.GetKeyCode().GetGroup() == KEYGROUP_CURSOR )
+ rBindings.Update( SID_BASICIDE_STAT_POS );
+ if (pSrcEditWin->GetTextEngine()->IsModified() )
+ {
+ rBindings.Invalidate( SID_SAVEDOC );
+ rBindings.Invalidate( SID_DOC_MODIFIED );
+ }
+ if( rKEvt.GetKeyCode().GetCode() == KEY_INSERT )
+ rBindings.Invalidate( SID_ATTR_INSERT );
+ }
+ SwDocShell* pDocShell = pSrcEditWin->GetSrcView()->GetDocShell();
+ if(pSrcEditWin->GetTextEngine()->IsModified())
+ {
+ pDocShell->SetModified();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void TextViewOutWin::Paint( const Rectangle& rRect )
+{
+ pTextView->Paint( rRect );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwSrcEditWindow::CreateTextEngine()
+{
+ const Color &rCol = GetSettings().GetStyleSettings().GetWindowColor();
+ pOutWin = new TextViewOutWin(this, 0);
+ pOutWin->SetBackground(Wallpaper(rCol));
+ pOutWin->SetPointer(Pointer(POINTER_TEXT));
+ pOutWin->Show();
+
+ //Scrollbars anlegen
+ pHScrollbar = new ScrollBar(this, WB_3DLOOK |WB_HSCROLL|WB_DRAG);
+ pHScrollbar->SetScrollHdl(LINK(this, SwSrcEditWindow, ScrollHdl));
+ pHScrollbar->Show();
+
+ pVScrollbar = new ScrollBar(this, WB_3DLOOK |WB_VSCROLL|WB_DRAG);
+ pVScrollbar->SetScrollHdl(LINK(this, SwSrcEditWindow, ScrollHdl));
+ pHScrollbar->EnableDrag();
+ pVScrollbar->Show();
+
+ pTextEngine = new ExtTextEngine;
+ pTextView = new ExtTextView( pTextEngine, pOutWin );
+ pTextView->SetAutoIndentMode(TRUE);
+ pOutWin->SetTextView(pTextView);
+
+ pTextEngine->SetUpdateMode( FALSE );
+ pTextEngine->InsertView( pTextView );
+
+ Font aFont;
+ aFont.SetCharSet( gsl_getSystemTextEncoding() );
+ aFont.SetSize( Size( 0, 12 ) );
+ aFont.SetPitch( PITCH_VARIABLE );
+ aFont.SetWeight( WEIGHT_NORMAL );
+ aFont.SetName( String::CreateFromAscii("Courier") );
+ aFont.SetFamily( FAMILY_MODERN );
+ aFont.SetPitch( PITCH_FIXED );
+// Font aFont( System::GetStandardFont( STDFONT_FIXED ) );
+ aFont.SetTransparent( FALSE );
+
+ Size aFontSize( 0, 10 );
+
+#ifdef MAC
+ aFont.SetName( "Monaco" );
+#endif
+
+ aFont.SetFillColor( rCol );
+ aFont.SetSize( aFontSize );
+ SetPointFont( aFont );
+ aFont = GetFont();
+ aFont.SetFillColor( rCol );
+ pOutWin->SetFont( aFont );
+
+ pTextEngine->SetFont( aFont );
+
+
+ aSyntaxIdleTimer.SetTimeout( 200 );
+ aSyntaxIdleTimer.SetTimeoutHdl( LINK( this, SwSrcEditWindow, SyntaxTimerHdl ) );
+
+ pTextEngine->EnableUndo( TRUE );
+ pTextEngine->SetUpdateMode( TRUE );
+
+ pTextView->ShowCursor( TRUE, TRUE );
+ InitScrollBars();
+ StartListening( *pTextEngine );
+
+ SfxBindings& rBind = GetSrcView()->GetViewFrame()->GetBindings();
+ rBind.Invalidate( SID_TABLE_CELL );
+ rBind.Invalidate( SID_ATTR_CHAR_FONTHEIGHT );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwSrcEditWindow::SetScrollBarRanges()
+{
+ // Extra-Methode, nicht InitScrollBars, da auch fuer TextEngine-Events.
+
+ pHScrollbar->SetRange( Range( 0, nCurTextWidth ) );
+ pVScrollbar->SetRange( Range(0, pTextEngine->GetTextHeight()) );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwSrcEditWindow::InitScrollBars()
+{
+ SetScrollBarRanges();
+
+ Size aOutSz( GetOutputSizePixel() );
+ pVScrollbar->SetVisibleSize( aOutSz.Height() );
+ pVScrollbar->SetPageSize( aOutSz.Height() * 8 / 10 );
+ pVScrollbar->SetLineSize( pOutWin->GetTextHeight() );
+ pVScrollbar->SetThumbPos( pTextView->GetStartDocPos().Y() );
+ pHScrollbar->SetVisibleSize( aOutSz.Width() );
+ pHScrollbar->SetPageSize( aOutSz.Width() * 8 / 10 );
+ pHScrollbar->SetLineSize( pOutWin->GetTextWidth( 'x' ) );
+ pHScrollbar->SetThumbPos( pTextView->GetStartDocPos().X() );
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK(SwSrcEditWindow, ScrollHdl, ScrollBar*, pScroll)
+{
+ if(pScroll == pVScrollbar)
+ {
+ long nDiff = pTextView->GetStartDocPos().Y() - pScroll->GetThumbPos();
+ GetTextView()->Scroll( 0, nDiff );
+ pTextView->ShowCursor( FALSE, TRUE );
+ pScroll->SetThumbPos( pTextView->GetStartDocPos().Y() );
+ }
+ else
+ {
+ long nDiff = pTextView->GetStartDocPos().X() - pScroll->GetThumbPos();
+ GetTextView()->Scroll( nDiff, 0 );
+ pTextView->ShowCursor( FALSE, TRUE );
+ pScroll->SetThumbPos( pTextView->GetStartDocPos().X() );
+ }
+ GetSrcView()->GetViewFrame()->GetBindings().Invalidate( SID_TABLE_CELL );
+ return 0;
+}
+
+/*-----------------15.01.97 09.22-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK( SwSrcEditWindow, SyntaxTimerHdl, Timer *, pTimer )
+{
+ DBG_ASSERT( pTextView, "Noch keine View, aber Syntax-Highlight ?!" );
+ pTextEngine->SetUpdateMode( FALSE );
+
+ bHighlighting = TRUE;
+ USHORT nLine;
+ USHORT nCount = 0;
+ // zuerst wird der Bereich um dem Cursor bearbeitet
+ TextSelection aSel = pTextView->GetSelection();
+ USHORT nCur = aSel.GetStart().GetPara();
+ if(nCur > 40)
+ nCur -= 40;
+ else
+ nCur = 0;
+ if(aSyntaxLineTable.Count())
+ for(USHORT i = 0; i < 80 && nCount < 40; i++, nCur++)
+ {
+ void * p = aSyntaxLineTable.Get(nCur);
+ if(p)
+ {
+ DoSyntaxHighlight( nCur );
+ aSyntaxLineTable.Remove( nCur );
+ nCount++;
+ if(!aSyntaxLineTable.Count())
+ break;
+ }
+ }
+
+ // wenn dann noch etwas frei ist, wird von Beginn an weitergearbeitet
+ void* p = aSyntaxLineTable.First();
+ while ( p && nCount < MAX_SYNTAX_HIGHLIGHT)
+ {
+ nLine = (USHORT)aSyntaxLineTable.GetCurKey();
+ DoSyntaxHighlight( nLine );
+ USHORT nCur = (USHORT)aSyntaxLineTable.GetCurKey();
+ p = aSyntaxLineTable.Next();
+ aSyntaxLineTable.Remove(nCur);
+ nCount ++;
+ }
+ // os: #43050# hier wird ein TextView-Problem umpopelt:
+ // waehrend des Highlightings funktionierte das Scrolling nicht
+ TextView* pTmp = pTextEngine->GetActiveView();
+ pTextEngine->SetActiveView(0);
+ pTextEngine->SetUpdateMode( TRUE );
+ pTextEngine->SetActiveView(pTmp);
+ pTextView->ShowCursor(FALSE, FALSE);
+
+ if(aSyntaxLineTable.Count() && !pTimer->IsActive())
+ pTimer->Start();
+ // SyntaxTimerHdl wird gerufen, wenn Text-Aenderung
+ // => gute Gelegenheit, Textbreite zu ermitteln!
+ long nPrevTextWidth = nCurTextWidth;
+ nCurTextWidth = pTextEngine->CalcTextWidth() + 25; // kleine Toleranz
+ if ( nCurTextWidth != nPrevTextWidth )
+ SetScrollBarRanges();
+ bHighlighting = FALSE;
+
+ return 0;
+}
+/*-----------------15.01.97 10.01-------------------
+
+--------------------------------------------------*/
+
+void SwSrcEditWindow::DoSyntaxHighlight( USHORT nPara )
+{
+ // Durch das DelayedSyntaxHighlight kann es passieren,
+ // dass die Zeile nicht mehr existiert!
+ if ( nPara < pTextEngine->GetParagraphCount() )
+ {
+ BOOL bTempModified = IsModified();
+ pTextEngine->RemoveAttribs( nPara );
+ String aSource( pTextEngine->GetText( nPara ) );
+ pTextEngine->SetUpdateMode( FALSE );
+ ImpDoHighlight( aSource, nPara );
+ // os: #43050# hier wird ein TextView-Problem umpopelt:
+ // waehrend des Highlightings funktionierte das Scrolling nicht
+ TextView* pTmp = pTextEngine->GetActiveView();
+ pTmp->SetAutoScroll(FALSE);
+ pTextEngine->SetActiveView(0);
+ pTextEngine->SetUpdateMode( TRUE );
+ pTextEngine->SetActiveView(pTmp);
+ // Bug 72887 show the cursor
+ pTmp->SetAutoScroll(TRUE);
+ pTmp->ShowCursor( FALSE/*pTmp->IsAutoScroll()*/ );
+
+ if(!bTempModified)
+ ClearModifyFlag();
+ }
+}
+
+/*-----------------15.01.97 09.49-------------------
+
+--------------------------------------------------*/
+
+void SwSrcEditWindow::DoDelayedSyntaxHighlight( USHORT nPara )
+{
+ if ( !bHighlighting && bDoSyntaxHighlight )
+ {
+ aSyntaxLineTable.Insert( nPara, (void*)(USHORT)1 );
+ aSyntaxIdleTimer.Start();
+ }
+}
+
+/*-----------------15.01.97 11.32-------------------
+
+--------------------------------------------------*/
+
+void SwSrcEditWindow::ImpDoHighlight( const String& rSource, USHORT nLineOff )
+{
+ SwTextPortions aPortionList;
+ lcl_Highlight(rSource, aPortionList);
+
+ USHORT nCount = aPortionList.Count();
+ if ( !nCount )
+ return;
+
+ SwTextPortion& rLast = aPortionList[nCount-1];
+ if ( rLast.nStart > rLast.nEnd ) // Nur bis Bug von MD behoeben
+ {
+ nCount--;
+ aPortionList.Remove( nCount);
+ if ( !nCount )
+ return;
+ }
+
+ // Evtl. Optimieren:
+ // Wenn haufig gleiche Farbe, dazwischen Blank ohne Farbe,
+ // ggf. zusammenfassen, oder zumindest das Blank,
+ // damit weniger Attribute
+ BOOL bOptimizeHighlight = TRUE; // war in der BasicIDE static
+ if ( bOptimizeHighlight )
+ {
+ // Es muessen nur die Blanks und Tabs mit attributiert werden.
+ // Wenn zwei gleiche Attribute hintereinander eingestellt werden,
+ // optimiert das die TextEngine.
+ USHORT nLastEnd = 0;
+ USHORT nLine = aPortionList[0].nLine;
+ for ( USHORT i = 0; i < nCount; i++ )
+ {
+ SwTextPortion& r = aPortionList[i];
+ DBG_ASSERT( r.nLine == nLine, "doch mehrere Zeilen ?" );
+ if ( r.nStart > r.nEnd ) // Nur bis Bug von MD behoeben
+ continue;
+
+ if ( r.nStart > nLastEnd )
+ {
+ // Kann ich mich drauf verlassen, dass alle ausser
+ // Blank und Tab gehighlightet wird ?!
+ r.nStart = nLastEnd;
+ }
+ nLastEnd = r.nEnd+1;
+ if ( ( i == (nCount-1) ) && ( r.nEnd < rSource.Len() ) )
+ r.nEnd = rSource.Len();
+ }
+ }
+
+ for ( USHORT i = 0; i < aPortionList.Count(); i++ )
+ {
+ SwTextPortion& r = aPortionList[i];
+ if ( r.nStart > r.nEnd ) // Nur bis Bug von MD behoeben
+ continue;
+ USHORT nCol = r.eType;
+ DBG_ASSERT( nCol < SYNTAX_COLOR_MAX, "Neue Syntax-Farbe?" );
+ if ( nCol < SYNTAX_COLOR_MAX )
+ {
+ Color aColor = pSrcVwConfig->GetSyntaxColor(nCol);
+ USHORT nLine = nLineOff+r.nLine; //
+ pTextEngine->SetAttrib( TextAttribFontColor( aColor ), nLine, r.nStart, r.nEnd+1 );
+ }
+ }
+}
+/*-----------------21.04.97 09:42-------------------
+
+--------------------------------------------------*/
+void SwSrcEditWindow::SyntaxColorsChanged()
+{
+ for(USHORT i = 0; i < pTextEngine->GetParagraphCount(); i++)
+ aSyntaxLineTable.Insert( i, (void*)(USHORT)1 );
+ if(!aSyntaxIdleTimer.IsActive())
+ aSyntaxIdleTimer.Start();
+
+}
+/*-----------------30.06.97 09:12-------------------
+
+--------------------------------------------------*/
+
+void SwSrcEditWindow::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( TextHint ) )
+ {
+ const TextHint& rTextHint = (const TextHint&)rHint;
+ if( rTextHint.GetId() == TEXT_HINT_VIEWSCROLLED )
+ {
+ pHScrollbar->SetThumbPos( pTextView->GetStartDocPos().X() );
+ pVScrollbar->SetThumbPos( pTextView->GetStartDocPos().Y() );
+ }
+ else if( rTextHint.GetId() == TEXT_HINT_TEXTHEIGHTCHANGED )
+ {
+ if ( (long)pTextEngine->GetTextHeight() < pOutWin->GetOutputSizePixel().Height() )
+ pTextView->Scroll( 0, pTextView->GetStartDocPos().Y() );
+ pVScrollbar->SetThumbPos( pTextView->GetStartDocPos().Y() );
+ SetScrollBarRanges();
+ }
+ else if( rTextHint.GetId() == TEXT_HINT_FORMATPARA )
+ {
+ DoDelayedSyntaxHighlight( rTextHint.GetValue() );
+ }
+ }
+}
+
+/*-----------------30.06.97 13:22-------------------
+
+--------------------------------------------------*/
+
+void SwSrcEditWindow::Invalidate()
+{
+ pOutWin->Invalidate();
+ Window::Invalidate();
+
+}
+
+void SwSrcEditWindow::Command( const CommandEvent& rCEvt )
+{
+ switch(rCEvt.GetCommand())
+ {
+ case COMMAND_WHEEL:
+ case COMMAND_STARTAUTOSCROLL:
+ case COMMAND_AUTOSCROLL:
+ {
+ const CommandWheelData* pWData = rCEvt.GetWheelData();
+ if( !pWData || COMMAND_WHEEL_ZOOM != pWData->GetMode() )
+ HandleScrollCommand( rCEvt, pHScrollbar, pVScrollbar );
+ }
+ break;
+ default:
+ Window::Command(rCEvt);
+ }
+}
+
+void SwSrcEditWindow::HandleWheelCommand( const CommandEvent& rCEvt )
+{
+ pTextView->Command(rCEvt);
+ HandleScrollCommand( rCEvt, pHScrollbar, pVScrollbar );
+}
+
+void SwSrcEditWindow::GetFocus()
+{
+// rView.GotFocus();
+ pOutWin->GrabFocus();
+// pOutWin->GetFocus();
+// Window::GetFocus();
+}
+
+/*void SwSrcEditWindow::LoseFocus()
+{
+ Window::LoseFocus();
+// pOutWin->LoseFocus();
+// rView.LostFocus();
+} */
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.55 2000/09/18 16:05:24 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.54 2000/09/14 10:36:36 os
+ GetBindings() access corrected
+
+ Revision 1.53 2000/09/07 15:59:22 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.52 2000/06/23 07:49:49 os
+ #75591# disable AutoScroll while syntax highlighting
+
+ Revision 1.51 2000/04/18 15:18:17 os
+ UNICODE
+
+ Revision 1.50 2000/03/03 15:17:00 os
+ StarView remainders removed
+
+ Revision 1.49 2000/02/14 14:48:40 os
+ #70473# Unicode
+
+ Revision 1.48 2000/02/10 20:45:06 jp
+ Bug #72887#: ShowCursor in HTML code view
+
+ Revision 1.47 1999/11/10 14:25:10 os
+ KeyInput: Assertion removed
+
+ Revision 1.46 1999/05/21 13:14:40 OS
+ #55722# Scrolling waehrend Syntax-Highlight
+
+
+ Rev 1.45 21 May 1999 15:14:40 OS
+ #55722# Scrolling waehrend Syntax-Highlight
+
+ Rev 1.44 02 Dec 1998 16:30:22 OS
+ #66066# Hintergrund- und Font-Farbe initial aus den Systemeinstellungen holen
+
+ Rev 1.43 18 Aug 1998 13:38:14 OS
+ Mouse auf Raedern eingebaut #55166#
+
+ Rev 1.42 29 Jun 1998 12:56:52 OS
+ SW_MOD statt GetActiveModule
+
+ Rev 1.41 24 Jun 1998 18:43:08 MA
+ DataChanged fuer ScrollBar und Retouche, Retouche ganz umgestellt
+
+ Rev 1.40 02 Apr 1998 11:38:08 OS
+ neue HelpId
+
+ Rev 1.39 24 Mar 1998 15:59:28 OS
+ AutoIndent fuer TextEngine
+
+ Rev 1.38 19 Mar 1998 18:11:28 OS
+ ShowCursor nach dem Highlight #48789#
+
+ Rev 1.37 18 Mar 1998 15:05:48 OS
+ Fontgroesse berichtigt #47428#
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/envelp/envelp.src b/sw/source/ui/envelp/envelp.src
new file mode 100644
index 000000000000..8cf07e2fe1f9
--- /dev/null
+++ b/sw/source/ui/envelp/envelp.src
@@ -0,0 +1,202 @@
+/*************************************************************************
+ *
+ * $RCSfile: envelp.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ******************************************************************
+
+ // #include *****************************************************************
+#include "envelp.hrc"
+#include "globals.hrc"
+ // Strings ******************************************************************
+String STR_DATABASE_NOT_OPENED
+{
+ Text = "Datenbank konnte nicht geöffnet werden." ;
+ Text [ English ] = "Could not open database." ;
+ Text [ norwegian ] = "Could not open database." ;
+ Text [ italian ] = "Impossibile aprire il database." ;
+ Text [ portuguese_brazilian ] = "Não pude abrir base de dados." ;
+ Text [ portuguese ] = "Foi impossível abrir base de dados." ;
+ Text [ finnish ] = "Tietokantaa ei voi avata." ;
+ Text [ danish ] = "Det var ikke muligt at åbne databasen." ;
+ Text [ french ] = "Impossible d'ouvrir la base de données." ;
+ Text [ swedish ] = "Databas kunde inte öppnas." ;
+ Text [ dutch ] = "Database kon niet worden geopend." ;
+ Text [ spanish ] = "No se pudo abrir la base de datos." ;
+ Text [ english_us ] = "Database could not be opened." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨´ò¿ªÊý¾Ý¿â¡£";
+ Text[ russian ] = "Îòêðûòü áàçó äàííûõ íåâîçìîæíî.";
+ Text[ polish ] = "Baza danych nie mog³a byæ otworzona.";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½‚ðŠJ‚­‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½";
+ Text[ chinese_traditional ] = "µLªk¶}±Ò¸ê®Æ®w¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÝÊÍ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Database kon niet worden geopend.";
+ Text[ chinese_simplified ] = "ÎÞ·¨´ò¿ªÊý¾Ý¿â¡£";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá áíïé÷ôåß ç âÜóç äåäïìÝíùí.";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º°¡ ¿­¸±¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Veritabaný açýlamadý.";
+ Text[ language_user1 ] = " ";
+};
+String STR_NO_DRIVERS
+{
+ Text = "Keine Datenbanktreiber installiert." ;
+ Text [ English ] = "No database drivers installed." ;
+ Text [ norwegian ] = "No database drivers installed." ;
+ Text [ italian ] = "Non sono installati driver di controllo database." ;
+ Text [ portuguese_brazilian ] = "Nenhum driver de base de dados instalado." ;
+ Text [ portuguese ] = "Controlador da base de dados não instalado." ;
+ Text [ finnish ] = "Tietokanta-ajureita ei ole asennettu." ;
+ Text [ danish ] = "Ingen databasedriverere installeret." ;
+ Text [ french ] = "Aucun gestionnaire de base de données installé." ;
+ Text [ swedish ] = "Inga databasdrivrutiner är installerade." ;
+ Text [ dutch ] = "Geen database-drivers geïnstalleerd." ;
+ Text [ spanish ] = "No se han instalado controladores de bases de datos." ;
+ Text [ english_us ] = "No database drivers installed." ;
+ Text[ chinese_simplified ] = "ûÓа²×°Êý¾Ý¿âÇý¶¯³ÌÐò¡£";
+ Text[ russian ] = "Äðàéâåð äëÿ áàçû äàííûõ íå èíñòàëèðîâàí.";
+ Text[ polish ] = "Nie zainstalowany sterownik bazy danych.";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ÄÞ×ÊÞ‚ª²Ý½Ä°Ù‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "¨S¦³¦w¸Ë¸ê®Æ®wÅX°Êµ{¦¡¡C";
+ Text[ arabic ] = "áÇ íæÌÏ ÈÑÇãÌ ÊÔÛíá ÞæÇÚÏ ÈíÇäÇÊ ãËÈÊå.";
+ Text[ dutch ] = "Geen database-drivers geïnstalleerd.";
+ Text[ chinese_simplified ] = "ûÓа²×°Êý¾Ý¿âÇý¶¯³ÌÐò¡£";
+ Text[ greek ] = "Äåí Ý÷åé ãßíåé åãêáôÜóôáóç ðñïãñÜììáôïò ïäÞãçóçò âÜóçò äåäïìÝíùí.";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º µå¶óÀ̹ö°¡ ¼³Ä¡µÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Text[ turkish ] = "Kurulmuþ veritabaný sürücüsü mevcut deðil.";
+ Text[ language_user1 ] = " ";
+};
+String STR_BTN_NEW_DOC
+{
+ Text = "~Neues Dokument" ;
+ Text [ English ] = "~New document" ;
+ Text [ norwegian ] = "~New doc." ;
+ Text [ italian ] = "Nuovo documento" ;
+ Text [ portuguese_brazilian ] = "~Novo doc." ;
+ 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 ] = "н¨Îĵµ(~N)";
+ Text[ russian ] = "Íîâûé äîêóìåíò";
+ Text[ polish ] = "Nowy dok.";
+ Text[ japanese ] = "V‚µ‚¢•¶‘(~N)";
+ Text[ chinese_traditional ] = "¶}±Ò·sÀÉ(~N)";
+ Text[ arabic ] = "ãÓÊäÏ ÌÏíÏ";
+ Text[ dutch ] = "~Nieuw document";
+ Text[ chinese_simplified ] = "н¨Îĵµ(~N)";
+ Text[ greek ] = "Äçìéïõñãßá åããñÜöïõ";
+ Text[ korean ] = "»õ·Î¿î ¹®¼­(~N)";
+ Text[ turkish ] = "~Yeni belge";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_BTN_NEWDOC
+{
+ Text = "~Neues Dok." ;
+ Text [ English ] = "~New doc." ;
+ Text[ english_us ] = "~New doc.";
+ Text[ portuguese ] = "~Novo doc.";
+ Text[ russian ] = "Íîâûé äîêóìåíò";
+ Text[ dutch ] = "~Nieuw doc.";
+ Text[ french ] = "~Nouveau doc.";
+ Text[ spanish ] = "~Nuevo doc.";
+ Text[ italian ] = "Nuovo doc.";
+ Text[ danish ] = "Nyt dok.";
+ Text[ swedish ] = "~Nytt dok.";
+ Text[ polish ] = "Nowy dok.";
+ Text[ portuguese_brazilian ] = "~New doc.";
+ Text[ japanese ] = "V‚µ‚¢•¶‘(~N)";
+ Text[ chinese_simplified ] = "н¨Îĵµ(~N)";
+ Text[ chinese_traditional ] = "¶}±Ò·sÀÉ(~N)";
+ Text[ arabic ] = "ãÓÊäÏ ÌÏíÏ";
+ Text[ dutch ] = "~Nieuw doc.";
+ Text[ chinese_simplified ] = "н¨Îĵµ(~N)";
+ Text[ greek ] = "Äçìéïõñãßá åããñÜöïõ";
+ Text[ korean ] = "»õ·Î¿î ¹®¼­.(~N)";
+ Text[ turkish ] = "~Yeni blg.";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_SENDER_TOKENS
+{
+ Text = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;COUNTRY; ;POSTALCODE; ;CITY;CR;";
+ Text [ English ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;CITY; ;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+ Text [ english_us ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;CITY; ;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+ Text[ portuguese ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;COUNTRY; ;POSTALCODE; ;CITY;CR;";
+ Text[ russian ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;CITY; ;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+ Text[ greek ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;CITY; ;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+ Text[ dutch ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;CITY; ;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+ Text[ french ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;CITY; ;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+ Text[ spanish ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;COUNTRY; ;POSTALCODE; ;CITY;CR;";
+ Text[ italian ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;COUNTRY; ;POSTALCODE; ;CITY;CR;";
+ Text[ danish ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;COUNTRY; ;POSTALCODE; :CITY;CR;";
+ Text[ swedish ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;COUNTRY; ;POSTALCODE; ;CITY;CR; ";
+ Text[ polish ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;CITY; ;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+ Text[ portuguese_brazilian ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;CITY; ;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+ Text[ japanese ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;CITY; ;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+ Text[ korean ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;CITY; ;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+ Text[ chinese_simplified ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;CITY; ;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+ Text[ chinese_traditional ] = "COMPANY;CR;FIRSTNAME;;LASTNAME;CR;ADDRESS;CR;CITY;;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+ Text[ turkish ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;CITY; ;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+ Text[ arabic ] = "COMPANY;CR;FIRSTNAME; ;LASTNAME;CR;ADDRESS;CR;CITY; ;STATEPROV; ;POSTALCODE;CR;COUNTRY;CR;";
+};
+
diff --git a/sw/source/ui/envelp/envfmt.cxx b/sw/source/ui/envelp/envfmt.cxx
new file mode 100644
index 000000000000..d6d9b6dbde44
--- /dev/null
+++ b/sw/source/ui/envelp/envfmt.cxx
@@ -0,0 +1,803 @@
+/*************************************************************************
+ *
+ * $RCSfile: envfmt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+#include <tools/pstm.hxx>
+#include "hintids.hxx"
+
+#ifndef _SVX_PAPERINF_HXX //autogen
+#include <svx/paperinf.hxx>
+#endif
+#ifndef _SVX_TSTPITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+
+
+#include "cmdid.h"
+#include "frmatr.hxx"
+#include "swtypes.hxx"
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "basesh.hxx"
+#include "chrdlg.hxx"
+#include "drpcps.hxx"
+#include "envfmt.hxx"
+#include "fmtcol.hxx"
+#include "pardlg.hxx"
+#include "pattern.hxx"
+#include "poolfmt.hxx"
+#include "uiborder.hxx"
+#include "uitool.hxx"
+
+#include "envfmt.hrc"
+
+static PopupMenu *pMenu;
+static long lUserW = 5669; // 10 cm
+static long lUserH = 5669; // 10 cm
+
+SV_DECL_VARARR_SORT( ItemRanges, long, 0, 10 )
+SV_IMPL_VARARR_SORT( ItemRanges, long )
+
+SV_DECL_VARARR( CompactRanges, long, 0, 10 )
+SV_IMPL_VARARR( CompactRanges, long )
+
+// --------------------------------------------------------------------------
+
+
+SwEnvFmtPage::SwEnvFmtPage(Window* pParent, const SfxItemSet& rSet) :
+
+ SfxTabPage(pParent, SW_RES(TP_ENV_FMT), rSet),
+
+ aAddrInfo (this, SW_RES(TXT_ADDRESSEE)),
+ aAddrLeftText (this, SW_RES(TXT_ADDR_LEFT)),
+ aAddrLeftField (this, SW_RES(FLD_ADDR_LEFT)),
+ aAddrTopText (this, SW_RES(TXT_ADDR_TOP )),
+ aAddrTopField (this, SW_RES(FLD_ADDR_TOP )),
+ aAddrEditButton(this, SW_RES(BTN_ADDR_EDIT)),
+ aSendInfo (this, SW_RES(TXT_SENDER )),
+ aSendLeftText (this, SW_RES(TXT_SEND_LEFT)),
+ aSendLeftField (this, SW_RES(FLD_SEND_LEFT)),
+ aSendTopText (this, SW_RES(TXT_SEND_TOP )),
+ aSendTopField (this, SW_RES(FLD_SEND_TOP )),
+ aSendEditButton(this, SW_RES(BTN_SEND_EDIT)),
+ aPreview (this, SW_RES(WIN_PREVIEW )),
+ aPositionsGroup(this, SW_RES(GRP_POSITIONS)),
+ aFormatText (this, SW_RES(TXT_FORMAT )),
+ aFormatBox (this, SW_RES(BOX_FORMAT )),
+ aWidthText (this, SW_RES(TXT_WIDTH )),
+ aWidthField (this, SW_RES(FLD_WIDTH )),
+ aHeightText (this, SW_RES(TXT_HEIGHT )),
+ aHeightField (this, SW_RES(FLD_HEIGHT )),
+ aSizeGroup (this, SW_RES(GRP_SIZE ))
+
+{
+ FreeResource();
+ SetExchangeSupport();
+
+ // Metriken
+ FieldUnit aMetric = ::GetDfltMetric(FALSE);
+ SetMetric(aAddrLeftField, aMetric);
+ SetMetric(aAddrTopField , aMetric);
+ SetMetric(aSendLeftField, aMetric);
+ SetMetric(aSendTopField , aMetric);
+ SetMetric(aWidthField , aMetric);
+ SetMetric(aHeightField , aMetric);
+
+ // Menues einhaengen
+ ::pMenu = new PopupMenu(SW_RES(MNU_EDIT));
+ aAddrEditButton.SetPopupMenu(::pMenu);
+ aSendEditButton.SetPopupMenu(::pMenu);
+
+ // Handler installieren
+ Link aLk = LINK(this, SwEnvFmtPage, ModifyHdl);
+ aAddrLeftField .SetModifyHdl( aLk );
+ aAddrTopField .SetModifyHdl( aLk );
+ aSendLeftField .SetModifyHdl( aLk );
+ aSendTopField .SetModifyHdl( aLk );
+ aWidthField .SetModifyHdl( aLk );
+ aHeightField .SetModifyHdl( aLk );
+
+ aLk = LINK(this, SwEnvFmtPage, EditHdl );
+ aAddrEditButton.SetSelectHdl( aLk );
+ aSendEditButton.SetSelectHdl( aLk );
+
+ aFormatBox .SetSelectHdl(LINK(this, SwEnvFmtPage, FormatHdl));
+
+ // aFormatBox
+ int i;
+ for (i = SVX_PAPER_A3; i <= SVX_PAPER_KAI32BIG; i++)
+ {
+ if (i != SVX_PAPER_USER)
+ {
+ String aPaperName = SvxPaperInfo::GetName((SvxPaper) i),
+ aEntryName;
+
+ USHORT nPos = 0;
+ BOOL bFound = FALSE;
+ while (nPos < aFormatBox.GetEntryCount() && !bFound)
+ {
+ aEntryName = aFormatBox.GetEntry(i);
+ if (aEntryName < aPaperName)
+ nPos++;
+ else
+ bFound = TRUE;
+ }
+ aFormatBox.InsertEntry(aPaperName, nPos);
+ aIDs.Insert((USHORT) i, nPos);
+ }
+ }
+ aFormatBox.InsertEntry(SvxPaperInfo::GetName(SVX_PAPER_USER));
+ aIDs.Insert((USHORT) SVX_PAPER_USER, aIDs.Count());
+
+ // Timer einstellen
+ aPreviewTimer.SetTimeout(500);
+ aPreviewTimer.SetTimeoutHdl(LINK(this, SwEnvFmtPage, PreviewHdl));
+}
+
+// --------------------------------------------------------------------------
+
+
+__EXPORT SwEnvFmtPage::~SwEnvFmtPage()
+{
+ aAddrEditButton.SetPopupMenu(0);
+ aSendEditButton.SetPopupMenu(0);
+ delete ::pMenu;
+}
+
+// --------------------------------------------------------------------------
+
+
+IMPL_LINK_INLINE_START( SwEnvFmtPage, ModifyHdl, Edit *, pEdit )
+{
+ pLastEdit = pEdit;
+ aPreviewTimer.Start();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwEnvFmtPage, ModifyHdl, Edit *, pEdit )
+
+// --------------------------------------------------------------------------
+
+
+IMPL_LINK( SwEnvFmtPage, EditHdl, MenuButton *, pButton )
+{
+ SwWrtShell* pSh = GetParent()->pSh;
+ ASSERT(pSh, "Shell fehlt");
+
+ // Collection-Ptr ermitteln
+ BOOL bSender = pButton != &aAddrEditButton;
+
+ SwTxtFmtColl* pColl = pSh->GetTxtCollFromPool(
+ bSender ? RES_POOLCOLL_SENDADRESS : RES_POOLCOLL_JAKETADRESS);
+ ASSERT(pColl, "Text-Collection fehlt");
+
+ switch (pButton->GetCurItemId())
+ {
+ case MID_CHAR:
+ {
+ SfxItemSet *pSet = GetCollItemSet(pColl, bSender);
+
+ // Damit die Hintergrundfarbe nicht uebergebuegelt wird:
+ SfxAllItemSet aTmpSet(*pSet);
+
+ // Das CHRATR_BACKGROUND-Attribut wird fuer den Dialog in
+ // ein RES_BACKGROUND verwandelt und wieder zurueck ...
+ const SfxPoolItem *pTmpBrush;
+
+ if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_CHRATR_BACKGROUND,
+ TRUE, &pTmpBrush ) )
+ {
+ SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) );
+ aTmpBrush.SetWhich( RES_BACKGROUND );
+ aTmpSet.Put( aTmpBrush );
+ }
+ else
+ aTmpSet.ClearItem( RES_BACKGROUND );
+
+ SwCharDlg* pDlg = new SwCharDlg(GetParent(), pSh->GetView(), aTmpSet, &pColl->GetName());
+ if (pDlg->Execute() == RET_OK)
+ {
+ SfxItemSet aOutputSet( *pDlg->GetOutputItemSet() );
+ if( SFX_ITEM_SET == aOutputSet.GetItemState( RES_BACKGROUND,
+ FALSE, &pTmpBrush ) )
+ {
+ SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) );
+ aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND );
+ pSet->Put( aTmpBrush );
+ }
+ aOutputSet.ClearItem( RES_BACKGROUND );
+ //pColl->SetAttr( aTmpSet );
+ pSet->Put(aOutputSet);
+ }
+ delete pDlg;
+ }
+ break;
+
+ case MID_PARA:
+ {
+ SfxItemSet *pSet = GetCollItemSet(pColl, bSender);
+
+ // Damit die Tabulatoren nicht uebergebuegelt werden:
+ SfxAllItemSet aTmpSet(*pSet);
+
+ // Tabulatoren, DefaultTabs ins ItemSet Stecken
+ const SvxTabStopItem& rDefTabs = (const SvxTabStopItem&)
+ pSh->GetView().GetCurShell()->GetPool().GetDefaultItem(RES_PARATR_TABSTOP);
+
+ USHORT nDefDist = ::GetTabDist( rDefTabs );
+ SfxUInt16Item aDefDistItem( SID_ATTR_TABSTOP_DEFAULTS, nDefDist );
+ aTmpSet.Put( aDefDistItem );
+
+ // Aktueller Tab
+ SfxUInt16Item aTabPos( SID_ATTR_TABSTOP_POS, 0 );
+ aTmpSet.Put( aTabPos );
+
+ // linker Rand als Offset
+ const long nOff = ((SvxLRSpaceItem&)aTmpSet.Get( RES_LR_SPACE )).
+ GetTxtLeft();
+ SfxInt32Item aOff( SID_ATTR_TABSTOP_OFFSET, nOff );
+ aTmpSet.Put( aOff );
+
+ // BoxInfo setzen
+ ::PrepareBoxInfo( aTmpSet, *pSh );
+
+ SwParaDlg *pDlg = new SwParaDlg(GetParent(), pSh->GetView(), aTmpSet, DLG_ENVELOP, &pColl->GetName());
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ // Defaults evtl umsetzen
+ const SfxPoolItem* pItem = 0;
+ SfxItemSet* pOutputSet = (SfxItemSet*)pDlg->GetOutputItemSet();
+ USHORT nNewDist;
+ if( SFX_ITEM_SET == pOutputSet->GetItemState( SID_ATTR_TABSTOP_DEFAULTS,
+ FALSE, &pItem ) &&
+ nDefDist != (nNewDist = ((SfxUInt16Item*)pItem)->GetValue()) )
+ {
+ SvxTabStopItem aDefTabs( 0, 0 );
+ MakeDefTabs( nNewDist, aDefTabs );
+ pSh->SetDefault( aDefTabs );
+ pOutputSet->ClearItem( SID_ATTR_TABSTOP_DEFAULTS );
+ }
+ if( pOutputSet->Count() )
+ {
+ //pColl->SetAttr( *pOutputSet );
+ pSet->Put(*pOutputSet);
+ }
+ }
+ delete pDlg;
+ }
+ break;
+ }
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Ein temporaeres Itemset, das bei Abbruch verworfen wird
+------------------------------------------------------------------------*/
+
+SfxItemSet *SwEnvFmtPage::GetCollItemSet(SwTxtFmtColl* pColl, BOOL bSender)
+{
+ SfxItemSet *&pSet = bSender ? GetParent()->pSenderSet : GetParent()->pAddresseeSet;
+
+ if (!pSet)
+ {
+ // Range ermitteln (Ranges beider Itemsets mergen)
+ const USHORT *pRanges = pColl->GetAttrSet().GetRanges();
+
+ static USHORT __READONLY_DATA aRanges[] =
+ {
+ RES_PARATR_BEGIN, RES_PARATR_ADJUST,
+ RES_PARATR_TABSTOP, RES_PARATR_END-1,
+ RES_LR_SPACE, RES_UL_SPACE,
+ RES_BACKGROUND, RES_SHADOW,
+ SID_ATTR_TABSTOP_POS, SID_ATTR_TABSTOP_POS,
+ SID_ATTR_TABSTOP_DEFAULTS, SID_ATTR_TABSTOP_DEFAULTS,
+ SID_ATTR_TABSTOP_OFFSET, SID_ATTR_TABSTOP_OFFSET,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
+ 0, 0
+ };
+
+ // BruteForce-Merge, weil MergeRange in SvTools buggy ist:
+ USHORT i = 0;
+ ItemRanges aMergedRanges;
+
+ while (pRanges[i])
+ {
+ for (USHORT nPos = pRanges[i]; nPos <= pRanges[i+1]; nPos++)
+ aMergedRanges.Insert(nPos);
+ i += 2;
+ }
+
+ i = 0;
+
+ while (aRanges[i])
+ {
+ for (USHORT nPos = aRanges[i]; nPos <= aRanges[i+1]; nPos++)
+ aMergedRanges.Insert(nPos);
+ i += 2;
+ }
+
+ // Ranges kompaktieren
+ CompactRanges aCompactedRanges;
+
+ aCompactedRanges.Insert(aMergedRanges[0], aCompactedRanges.Count());
+
+ for (i = 0; i < aMergedRanges.Count(); i++)
+ {
+ while (i + 1 < aMergedRanges.Count() &&
+ aMergedRanges[i+1] - aMergedRanges[i] == 1)
+ {
+ i++;
+ }
+ long nEnd = aMergedRanges[i];
+ aCompactedRanges.Insert(nEnd, aCompactedRanges.Count());
+
+ if (i + 1 < aMergedRanges.Count())
+ {
+ long nStart = aMergedRanges[i+1];
+ aCompactedRanges.Insert(nStart, aCompactedRanges.Count());
+ }
+ }
+
+ // Neue Ranges erzeugen
+ USHORT *pNewRanges = new USHORT[aCompactedRanges.Count() + 1];
+ for (i = 0; i < aCompactedRanges.Count(); i++)
+ pNewRanges[i] = (USHORT)aCompactedRanges[i];
+
+ pNewRanges[i] = 0;
+
+ pSet = new SfxItemSet(GetParent()->pSh->GetView().GetCurShell()->GetPool(),
+ pNewRanges);
+
+ pSet->Put(pColl->GetAttrSet());
+ delete pNewRanges;
+ }
+
+ return pSet;
+}
+
+// --------------------------------------------------------------------------
+
+
+IMPL_LINK( SwEnvFmtPage, FormatHdl, ListBox *, EMPTYARG )
+{
+ long lWidth;
+ long lHeight;
+ long lSendFromLeft;
+ long lSendFromTop;
+ long lAddrFromLeft;
+ long lAddrFromTop;
+
+ USHORT nPaper = aIDs[aFormatBox.GetSelectEntryPos()];
+ if (nPaper != (USHORT)SVX_PAPER_USER)
+ {
+ Size aSz = SvxPaperInfo::GetPaperSize((SvxPaper)nPaper);
+ lWidth = Max(aSz.Width(), aSz.Height());
+ lHeight = Min(aSz.Width(), aSz.Height());
+ }
+ else
+ {
+ lWidth = lUserW;
+ lHeight = lUserH;
+ }
+
+ lSendFromLeft = 566; // 1cm
+ lSendFromTop = 566; // 1cm
+ lAddrFromLeft = lWidth / 2;
+ lAddrFromTop = lHeight / 2;
+
+ SetFldVal(aAddrLeftField, lAddrFromLeft);
+ SetFldVal(aAddrTopField , lAddrFromTop );
+ SetFldVal(aSendLeftField, lSendFromLeft);
+ SetFldVal(aSendTopField , lSendFromTop );
+
+ SetFldVal(aWidthField , lWidth );
+ SetFldVal(aHeightField, lHeight);
+
+ SetMinMax();
+
+ FillItem(GetParent()->aEnvItem);
+ aPreview.Invalidate();
+ return 0;
+}
+
+// --------------------------------------------------------------------------
+
+
+IMPL_LINK( SwEnvFmtPage, PreviewHdl, Timer *, EMPTYARG )
+{
+ long lWVal = GetFldVal(aWidthField );
+ long lHVal = GetFldVal(aHeightField);
+
+ long lWidth = Max(lWVal, lHVal);
+ long lHeight = Min(lWVal, lHVal);
+
+ if (pLastEdit == &aWidthField || pLastEdit == &aHeightField)
+ {
+ SvxPaper ePaper = SvxPaperInfo::GetPaper(
+ Size(lHeight, lWidth), MAP_TWIP, TRUE);
+ for (USHORT i = 0; i < aIDs.Count(); i++)
+ if (aIDs[i] == (USHORT)ePaper)
+ aFormatBox.SelectEntryPos(i);
+
+ // Benutzergroesse merken
+ if (aIDs[aFormatBox.GetSelectEntryPos()] == (USHORT)SVX_PAPER_USER)
+ {
+ lUserW = lWidth ;
+ lUserH = lHeight;
+ }
+
+ aFormatBox.GetSelectHdl().Call(&aFormatBox);
+ }
+ else
+ {
+ FillItem(GetParent()->aEnvItem);
+ SetMinMax();
+ aPreview.Invalidate();
+ }
+ return 0;
+}
+
+// --------------------------------------------------------------------------
+
+
+void SwEnvFmtPage::SetMinMax()
+{
+ long lWVal = GetFldVal(aWidthField );
+ long lHVal = GetFldVal(aHeightField);
+
+ long lWidth = Max(lWVal, lHVal),
+ lHeight = Min(lWVal, lHVal);
+
+ // Min und Max
+ aAddrLeftField.SetMin((long) 100 * (GetFldVal(aSendLeftField) + 566), FUNIT_TWIP);
+ aAddrLeftField.SetMax((long) 100 * (lWidth - 2 * 566), FUNIT_TWIP);
+ aAddrTopField .SetMin((long) 100 * (GetFldVal(aSendTopField ) + 2 * 566), FUNIT_TWIP);
+ aAddrTopField .SetMax((long) 100 * (lHeight - 2 * 566), FUNIT_TWIP);
+ aSendLeftField.SetMin((long) 100 * (566), FUNIT_TWIP);
+ aSendLeftField.SetMax((long) 100 * (GetFldVal(aAddrLeftField) - 566), FUNIT_TWIP);
+ aSendTopField .SetMin((long) 100 * (566), FUNIT_TWIP);
+ aSendTopField .SetMax((long) 100 * (GetFldVal(aAddrTopField ) - 2 * 566), FUNIT_TWIP);
+
+ // First und Last
+ aAddrLeftField.SetFirst(aAddrLeftField.GetMin());
+ aAddrLeftField.SetLast (aAddrLeftField.GetMax());
+ aAddrTopField .SetFirst(aAddrTopField .GetMin());
+ aAddrTopField .SetLast (aAddrTopField .GetMax());
+ aSendLeftField.SetFirst(aSendLeftField.GetMin());
+ aSendLeftField.SetLast (aSendLeftField.GetMax());
+ aSendTopField .SetFirst(aSendTopField .GetMin());
+ aSendTopField .SetLast (aSendTopField .GetMax());
+
+ // Fields neu formatieren
+ aAddrLeftField.Reformat();
+ aAddrTopField .Reformat();
+ aSendLeftField.Reformat();
+ aSendTopField .Reformat();
+ aWidthField .Reformat();
+ aHeightField .Reformat();
+}
+
+// --------------------------------------------------------------------------
+
+
+SfxTabPage* __EXPORT SwEnvFmtPage::Create(Window* pParent, const SfxItemSet& rSet)
+{
+ return new SwEnvFmtPage(pParent, rSet);
+}
+
+// ----------------------------------------------------------------------------
+
+
+void __EXPORT SwEnvFmtPage::ActivatePage(const SfxItemSet& rSet)
+{
+ SfxItemSet aSet(rSet);
+ aSet.Put(GetParent()->aEnvItem);
+ Reset(aSet);
+}
+
+// ----------------------------------------------------------------------------
+
+
+int __EXPORT SwEnvFmtPage::DeactivatePage(SfxItemSet* pSet)
+{
+ FillItemSet(*pSet);
+ return SfxTabPage::LEAVE_PAGE;
+}
+
+// --------------------------------------------------------------------------
+
+
+void SwEnvFmtPage::FillItem(SwEnvItem& rItem)
+{
+ rItem.lAddrFromLeft = GetFldVal(aAddrLeftField);
+ rItem.lAddrFromTop = GetFldVal(aAddrTopField );
+ rItem.lSendFromLeft = GetFldVal(aSendLeftField);
+ rItem.lSendFromTop = GetFldVal(aSendTopField );
+
+ USHORT nPaper = aIDs[aFormatBox.GetSelectEntryPos()];
+ if (nPaper == (USHORT)SVX_PAPER_USER)
+ {
+ long lWVal = GetFldVal(aWidthField );
+ long lHVal = GetFldVal(aHeightField);
+ rItem.lWidth = Max(lWVal, lHVal);
+ rItem.lHeight = Min(lWVal, lHVal);
+ }
+ else
+ {
+ long lWVal = SvxPaperInfo::GetPaperSize((SvxPaper)nPaper).Width ();
+ long lHVal = SvxPaperInfo::GetPaperSize((SvxPaper)nPaper).Height();
+ rItem.lWidth = Max(lWVal, lHVal);
+ rItem.lHeight = Min(lWVal, lHVal);
+ }
+}
+
+// --------------------------------------------------------------------------
+
+
+BOOL __EXPORT SwEnvFmtPage::FillItemSet(SfxItemSet& rSet)
+{
+ FillItem(GetParent()->aEnvItem);
+ rSet.Put(GetParent()->aEnvItem);
+ return TRUE;
+}
+
+// --------------------------------------------------------------------------
+
+
+void __EXPORT SwEnvFmtPage::Reset(const SfxItemSet& rSet)
+{
+ const SwEnvItem& rItem = (const SwEnvItem&) rSet.Get(FN_ENVELOP);
+
+ SvxPaper ePaper = SvxPaperInfo::GetPaper(
+ Size( Min(rItem.lWidth, rItem.lHeight),
+ Max(rItem.lWidth, rItem.lHeight)), MAP_TWIP, TRUE);
+ for (USHORT i = 0; i < (USHORT) aIDs.Count(); i++)
+ if (aIDs[i] == (USHORT)ePaper)
+ aFormatBox.SelectEntryPos(i);
+
+ // Die MetricFields
+ SetFldVal(aAddrLeftField, rItem.lAddrFromLeft);
+ SetFldVal(aAddrTopField , rItem.lAddrFromTop );
+ SetFldVal(aSendLeftField, rItem.lSendFromLeft);
+ SetFldVal(aSendTopField , rItem.lSendFromTop );
+ SetFldVal(aWidthField , Max(rItem.lWidth, rItem.lHeight));
+ SetFldVal(aHeightField , Min(rItem.lWidth, rItem.lHeight));
+ SetMinMax();
+
+ DELETEZ(GetParent()->pSenderSet);
+ DELETEZ(GetParent()->pAddresseeSet);
+}
+
+
+/*--------------------------------------------------------------------
+$Log: not supported by cvs2svn $
+Revision 1.78 2000/09/18 16:05:24 willem.vandorp
+OpenOffice header added.
+
+Revision 1.77 2000/04/26 14:44:49 os
+GetName() returns const String&
+
+Revision 1.76 2000/04/17 05:36:01 os
+#75131# paper formats unlimited
+
+Revision 1.75 2000/02/11 14:45:16 hr
+#70473# changes for unicode ( patched by automated patchtool )
+
+Revision 1.74 1998/09/08 14:52:42 OS
+#56134# Metric fuer Text und HTML getrennt
+
+
+ Rev 1.73 08 Sep 1998 16:52:42 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.72 29 May 1998 12:01:42 TJ
+ include
+
+ Rev 1.71 09 Apr 1998 14:23:48 OM
+ #47097# Undo von Vorlagenaenderungen ermoeglichen
+
+ Rev 1.70 05 Feb 1998 16:47:06 OM
+ #47086# Fuer HPUX mit USHORT statt mit SvxPaper arbeiten
+
+ Rev 1.69 05 Feb 1998 15:33:26 OM
+ HPUX-Umstellung SvxPaper
+
+ Rev 1.68 05 Feb 1998 14:49:04 OS
+ Absatzdialog: Numerierung nicht fuer Umschlaege
+
+ Rev 1.67 24 Nov 1997 11:52:12 MA
+ includes
+
+ Rev 1.66 12 Sep 1997 10:42:14 OS
+ ITEMID_* definiert
+
+ Rev 1.65 02 Sep 1997 13:23:50 OS
+ includes
+
+ Rev 1.64 09 Aug 1997 13:13:14 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.63 08 Aug 1997 17:29:38 OM
+ Headerfile-Umstellung
+
+ Rev 1.62 07 Aug 1997 15:00:12 OM
+ Headerfile-Umstellung
+
+ Rev 1.61 20 Feb 1997 17:51:38 MA
+ fix: Deactivate ueber Fill
+
+ Rev 1.60 11 Nov 1996 09:44:18 MA
+ ResMgr
+
+ Rev 1.59 01 Oct 1996 13:31:20 AMA
+ Fix: RES_CHRATR_BACKGROUND nur bei Aenderung setzen.
+
+ Rev 1.58 17 Sep 1996 16:55:22 AMA
+ Chg: Zeichenhintergrund als Zeichenattribut
+
+ Rev 1.57 26 Jul 1996 20:36:38 MA
+ includes
+
+ Rev 1.56 06 Feb 1996 15:18:56 JP
+ Link Umstellung 305
+
+ Rev 1.55 05 Feb 1996 17:29:02 OM
+ Parent-Win an Par/Chardlg uebergeben
+
+ Rev 1.54 28 Nov 1995 21:14:56 JP
+ UiSystem-Klasse aufgehoben, in initui/swtype aufgeteilt
+
+ Rev 1.53 27 Nov 1995 19:35:46 OM
+ HasExchangeSupport->303a
+
+ Rev 1.52 24 Nov 1995 16:59:44 OM
+ PCH->PRECOMPILED
+
+ Rev 1.51 23 Nov 1995 18:01:28 OM
+ TabDlg entfernt
+
+ Rev 1.50 22 Nov 1995 18:57:36 MA
+ opt/fix: blc-Warnings
+
+ Rev 1.49 13 Nov 1995 13:44:26 MA
+ chg: Link-Cast entfernt
+
+ Rev 1.48 08 Nov 1995 13:48:24 OM
+ Change->Set
+
+ Rev 1.47 31 Oct 1995 18:38:20 OM
+ GetActive... entfernt
+
+ Rev 1.46 24 Aug 1995 09:25:30 MA
+ fix: Ranges verfeinert
+
+ Rev 1.45 22 Aug 1995 09:31:38 MA
+ svxitems-header entfernt
+
+ Rev 1.44 16 Aug 1995 17:47:58 MA
+ Riesenheader dialogs entfernt.
+
+ Rev 1.43 14 Aug 1995 08:39:28 MA
+ fix: Absatz-Dlg, einige Items entfernt.
+
+ Rev 1.42 12 Aug 1995 16:29:18 MA
+ fix: fehlende Impl notduerftig nachgeholt
+
+ Rev 1.41 02 Aug 1995 17:39:26 OM
+ Datenbankumstellung
+
+ Rev 1.40 30 May 1995 17:01:36 ER
+ Umstellung SwPaper... SvxPaper...
+
+ Rev 1.39 24 May 1995 18:16:48 ER
+ Segmentierung
+
+ Rev 1.38 05 Apr 1995 09:26:48 JP
+ Benutzung vom Link-Makro eingeschraenkt
+
+ Rev 1.37 30 Mar 1995 18:38:44 PK
+ geht immer weiter
+
+ Rev 1.36 24 Mar 1995 20:30:04 PK
+ geht immer weiter
+
+ Rev 1.35 23 Mar 1995 18:33:18 PK
+ geht immer weiter ...
+
+ Rev 1.34 17 Mar 1995 17:10:02 PK
+ geht immer weiter
+
+ Rev 1.33 15 Mar 1995 18:37:42 PK
+ geht immer weiter
+
+ Rev 1.32 06 Mar 1995 00:08:14 PK
+ linkbarer envelp-zustand
+
+ Rev 1.31 04 Mar 1995 22:54:52 PK
+ geht immer weiter
+
+ Rev 1.30 01 Mar 1995 11:12:20 MA
+ weg: Sw-BoxItem, neu: KeepItem.
+
+ Rev 1.29 21 Feb 1995 15:39:04 PK
+ erstmal eingecheckt
+
+ Rev 1.28 20 Feb 1995 19:39:18 PK
+ erstma eingecheckt
+
+--------------------------------------------------------------*/
+
diff --git a/sw/source/ui/envelp/envfmt.hrc b/sw/source/ui/envelp/envfmt.hrc
new file mode 100644
index 000000000000..7053bee6dd44
--- /dev/null
+++ b/sw/source/ui/envelp/envfmt.hrc
@@ -0,0 +1,111 @@
+/*************************************************************************
+ *
+ * $RCSfile: envfmt.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _ENVFMT_HRC
+#define _ENVFMT_HRC
+
+// #include *****************************************************************
+
+#include "envelp.hrc"
+
+// Lokale Resourcen *********************************************************
+
+#define TXT_ADDRESSEE 1
+#define TXT_ADDR_LEFT 2
+#define FLD_ADDR_LEFT 3
+#define TXT_ADDR_TOP 4
+#define FLD_ADDR_TOP 5
+#define BTN_ADDR_EDIT 6
+#define TXT_SENDER 7
+#define TXT_SEND_LEFT 8
+#define FLD_SEND_LEFT 9
+#define TXT_SEND_TOP 10
+#define FLD_SEND_TOP 11
+#define BTN_SEND_EDIT 12
+#define WIN_PREVIEW 13
+#define GRP_POSITIONS 14
+#define TXT_FORMAT 15
+#define BOX_FORMAT 16
+#define TXT_WIDTH 17
+#define FLD_WIDTH 18
+#define TXT_HEIGHT 19
+#define FLD_HEIGHT 20
+#define GRP_SIZE 21
+#define BTN_OK 22
+#define BTN_CANCEL 23
+
+#define MID_CHAR 1
+#define MID_PARA 2
+
+// Globale Resourcen ********************************************************
+
+#define MNU_EDIT (RC_ENVFMT_BEGIN )
+
+// Ueberlaufpruefung ********************************************************
+
+#define ENVFMT_ACT_END MNU_EDIT
+
+#if ENVFMT_ACT_END > RC_ENVFMT_END
+#error Resource-Ueberlauf in #file, #line
+#endif
+
+#endif
+
diff --git a/sw/source/ui/envelp/envfmt.hxx b/sw/source/ui/envelp/envfmt.hxx
new file mode 100644
index 000000000000..933a3149df11
--- /dev/null
+++ b/sw/source/ui/envelp/envfmt.hxx
@@ -0,0 +1,140 @@
+/*************************************************************************
+ *
+ * $RCSfile: envfmt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ENVFMT_HXX
+#define _ENVFMT_HXX
+
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_USHORTS
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#ifndef _MENUBTN_HXX //autogen
+#include <vcl/menubtn.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#include "envlop.hxx"
+
+// class SwEnvFmtPage ---------------------------------------------------------
+
+class SwEnvFmtPage : public SfxTabPage
+{
+ FixedInfo aAddrInfo;
+ FixedText aAddrLeftText;
+ MetricField aAddrLeftField;
+ FixedText aAddrTopText;
+ MetricField aAddrTopField;
+ MenuButton aAddrEditButton;
+ FixedInfo aSendInfo;
+ FixedText aSendLeftText;
+ MetricField aSendLeftField;
+ FixedText aSendTopText;
+ MetricField aSendTopField;
+ MenuButton aSendEditButton;
+ SwEnvPreview aPreview;
+ GroupBox aPositionsGroup;
+ FixedText aFormatText;
+ ListBox aFormatBox;
+ FixedText aWidthText;
+ MetricField aWidthField;
+ FixedText aHeightText;
+ MetricField aHeightField;
+ GroupBox aSizeGroup;
+
+ SvUShorts aIDs;
+ Timer aPreviewTimer;
+ Edit* pLastEdit;
+
+ SwEnvFmtPage(Window* pParent, const SfxItemSet& rSet);
+ ~SwEnvFmtPage();
+
+ DECL_LINK( ModifyHdl, Edit * );
+ DECL_LINK( EditHdl, MenuButton * );
+ DECL_LINK( FormatHdl, ListBox * );
+ DECL_LINK( PreviewHdl, Timer * );
+
+ void SetMinMax();
+
+ SfxItemSet *GetCollItemSet(SwTxtFmtColl* pColl, BOOL bSender);
+ SwEnvDlg *GetParent() {return (SwEnvDlg*) SfxTabPage::GetParent()->GetParent();}
+
+public:
+
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rSet);
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet* pSet = 0);
+ void FillItem(SwEnvItem& rItem);
+ virtual BOOL FillItemSet(SfxItemSet& rSet);
+ virtual void Reset(const SfxItemSet& rSet);
+};
+
+#endif
+
+
diff --git a/sw/source/ui/envelp/envfmt.src b/sw/source/ui/envelp/envfmt.src
new file mode 100644
index 000000000000..fae839ad9059
--- /dev/null
+++ b/sw/source/ui/envelp/envfmt.src
@@ -0,0 +1,632 @@
+/*************************************************************************
+ *
+ * $RCSfile: envfmt.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ******************************************************************
+
+ // #include *****************************************************************
+#include "envfmt.hrc"
+#include "helpid.h"
+ // TP_ENV_FMT ---------------------------------------------------------------
+TabPage TP_ENV_FMT
+{
+ HelpID = HID_ENV_FMT ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ FixedText TXT_ADDRESSEE
+ {
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ Size = MAP_APPFONT ( 40 , 8 ) ;
+ Text = "Empfänger" ;
+ Text [ ENGLISH ] = "Addressee" ;
+ Text [ norwegian ] = "Addressee" ;
+ Text [ italian ] = "Destinatario" ;
+ Text [ portuguese_brazilian ] = "Endereço" ;
+ Text [ portuguese ] = "Destinatário" ;
+ Text [ finnish ] = "Vastaanottaja" ;
+ Text [ danish ] = "Modtager" ;
+ Text [ french ] = "Destinataire" ;
+ Text [ swedish ] = "Mottagare" ;
+ Text [ dutch ] = "Ontvanger" ;
+ Text [ spanish ] = "Destinatario" ;
+ Text [ english_us ] = "Addressee" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÊÕ¼þÈË";
+ Text[ russian ] = "Ïîëó÷àòåëü";
+ Text[ polish ] = "Odbiorca";
+ Text[ japanese ] = "ŽóŽæl";
+ Text[ chinese_traditional ] = "¦¬¥óªÌ";
+ Text[ arabic ] = "ÇáãÓÊáã";
+ Text[ greek ] = "ÐáñáëÞðôçò";
+ Text[ korean ] = "¹Þ´Â»ç¶÷";
+ Text[ turkish ] = "Alýcý";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText TXT_ADDR_LEFT
+ {
+ Pos = MAP_APPFONT ( 55 , 16 ) ;
+ Size = MAP_APPFONT ( 40 , 8 ) ;
+ Text = "v~on links" ;
+ Text [ ENGLISH ] = "from left" ;
+ Text [ norwegian ] = "from left" ;
+ Text [ italian ] = "Da sinistra" ;
+ Text [ portuguese_brazilian ] = "da esquerda" ;
+ Text [ portuguese ] = "a partir da esquerda" ;
+ Text [ finnish ] = "vasemmalta" ;
+ Text [ danish ] = "fra venstre" ;
+ Text [ french ] = "à ~gauche" ;
+ Text [ swedish ] = "från vänster" ;
+ Text [ dutch ] = "~vanaf links" ;
+ Text [ spanish ] = "de izquierda" ;
+ Text [ english_us ] = "from left" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "´Ó×ó";
+ Text[ russian ] = "ñëåâà";
+ Text[ polish ] = "z lewej strony";
+ Text[ japanese ] = "¶‚©‚ç";
+ Text[ chinese_traditional ] = "±q¥ª";
+ Text[ arabic ] = "ãä ÇáíÓÇÑ";
+ Text[ greek ] = "áðü áñéóôåñÜ";
+ Text[ korean ] = "Á¿¡¼­";
+ Text[ turkish ] = "Soldan";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_ADDR_LEFT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 98 , 14 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Minimum = 0 ;
+ Maximum = 10000 ;
+ First = 0 ;
+ Last = 10000 ;
+ SpinSize = 10 ;
+ Repeat = TRUE ;
+ };
+ FixedText TXT_ADDR_TOP
+ {
+ Pos = MAP_APPFONT ( 55 , 31 ) ;
+ Size = MAP_APPFONT ( 40 , 8 ) ;
+ Text = "~von oben" ;
+ Text [ ENGLISH ] = "from top" ;
+ Text [ norwegian ] = "from top" ;
+ Text [ italian ] = "Dall'alto" ;
+ Text [ portuguese_brazilian ] = "do topo" ;
+ Text [ portuguese ] = "a partir do topo" ;
+ Text [ finnish ] = "ylhäältä" ;
+ Text [ danish ] = "fra oven" ;
+ Text [ french ] = "en ~haut" ;
+ Text [ swedish ] = "uppifrån" ;
+ Text [ dutch ] = "v~anaf boven" ;
+ Text [ spanish ] = "desde arriba" ;
+ Text [ english_us ] = "from top" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "´ÓÉÏ";
+ Text[ russian ] = "ñâåðõó";
+ Text[ polish ] = "z góry";
+ Text[ japanese ] = "ã‚©‚ç";
+ Text[ chinese_traditional ] = "±q¤W";
+ Text[ arabic ] = "ãä ÃÚáì";
+ Text[ greek ] = "áðü ðÜíù";
+ Text[ korean ] = "À§¿¡¼­";
+ Text[ turkish ] = "Yukardan";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_ADDR_TOP
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 98 , 29 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Minimum = 0 ;
+ Maximum = 10000 ;
+ First = 0 ;
+ Last = 10000 ;
+ SpinSize = 10 ;
+ Repeat = TRUE ;
+ };
+ MenuButton BTN_ADDR_EDIT
+ {
+ Pos = MAP_APPFONT ( 12 , 29 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Text = "Bearb." ;
+ Text [ ENGLISH ] = "Edit" ;
+ Text [ norwegian ] = "Rediger" ;
+ Text [ italian ] = "Modifica" ;
+ Text [ portuguese_brazilian ] = "Editar" ;
+ Text [ portuguese ] = "Editar" ;
+ Text [ finnish ] = "Muokkaa" ;
+ Text [ danish ] = "Rediger" ;
+ Text [ french ] = "Modifier" ;
+ Text [ swedish ] = "Redigera" ;
+ Text [ dutch ] = "Bewerk." ;
+ Text [ spanish ] = "Editar" ;
+ Text [ english_us ] = "Edit" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "±à¼­";
+ Text[ russian ] = "Ïðàâêà";
+ Text[ polish ] = "E~dytuj";
+ Text[ japanese ] = "•ÒW";
+ Text[ chinese_traditional ] = "½s¿è";
+ Text[ arabic ] = "ÊÍÑíÑ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "Åðåîåñã.";
+ Text[ korean ] = "ÆíÁý";
+ Text[ turkish ] = "Düzenle";
+ };
+ FixedText TXT_SENDER
+ {
+ Pos = MAP_APPFONT ( 12 , 46 ) ;
+ Size = MAP_APPFONT ( 40 , 8 ) ;
+ Text = "Absender" ;
+ Text [ ENGLISH ] = "Sender" ;
+ Text [ norwegian ] = "Sender" ;
+ Text [ italian ] = "Mittente" ;
+ Text [ portuguese_brazilian ] = "Remetente" ;
+ Text [ portuguese ] = "Remetente" ;
+ Text [ finnish ] = "Lähettäjä" ;
+ Text [ danish ] = "Afsender" ;
+ Text [ french ] = "Expéditeur" ;
+ Text [ swedish ] = "Avsändare" ;
+ Text [ dutch ] = "Afzender" ;
+ Text [ spanish ] = "Remitente" ;
+ Text [ english_us ] = "Sender" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "·¢¼þÈË";
+ Text[ russian ] = "Îòïðàâèòåëü";
+ Text[ polish ] = "Nadawca";
+ Text[ japanese ] = "·ol";
+ Text[ chinese_traditional ] = "±H¥óªÌ";
+ Text[ arabic ] = "ÇáãÑÓá";
+ Text[ greek ] = "ÁðïóôïëÝáò";
+ Text[ korean ] = "º¸³½ »ç¶÷";
+ Text[ turkish ] = "Gönderen";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText TXT_SEND_LEFT
+ {
+ Pos = MAP_APPFONT ( 55 , 46 ) ;
+ Size = MAP_APPFONT ( 40 , 8 ) ;
+ Text = "von ~links" ;
+ Text [ ENGLISH ] = "from left" ;
+ Text [ norwegian ] = "from left" ;
+ Text [ italian ] = "Da sinistra" ;
+ Text [ portuguese_brazilian ] = "da esquerda" ;
+ Text [ portuguese ] = "a partir da esquerda" ;
+ Text [ finnish ] = "vasemmalta" ;
+ Text [ danish ] = "fra venstre" ;
+ Text [ french ] = "à g~auche" ;
+ Text [ swedish ] = "från vänster" ;
+ Text [ dutch ] = "vanaf ~links" ;
+ Text [ spanish ] = "de izquierda" ;
+ Text [ english_us ] = "from left" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "´Ó×ó";
+ Text[ russian ] = "ñëåâà";
+ Text[ polish ] = "z lewej strony";
+ Text[ japanese ] = "¶‚©‚ç";
+ Text[ chinese_traditional ] = "±q¥ª";
+ Text[ arabic ] = "ãä ÇáíÓÇÑ";
+ Text[ greek ] = "áðü áñéóôåñÜ";
+ Text[ korean ] = "Á¿¡¼­";
+ Text[ turkish ] = "Soldan";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_SEND_LEFT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 98 , 44 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Minimum = 0 ;
+ Maximum = 10000 ;
+ First = 0 ;
+ Last = 10000 ;
+ SpinSize = 10 ;
+ Repeat = TRUE ;
+ };
+ FixedText TXT_SEND_TOP
+ {
+ Pos = MAP_APPFONT ( 55 , 61 ) ;
+ Size = MAP_APPFONT ( 40 , 8 ) ;
+ Text = "vo~n oben" ;
+ Text [ ENGLISH ] = "from top" ;
+ Text [ norwegian ] = "from top" ;
+ Text [ italian ] = "Dall'alto" ;
+ Text [ portuguese_brazilian ] = "do topo" ;
+ Text [ portuguese ] = "a partir do topo" ;
+ Text [ finnish ] = "ylhäältä" ;
+ Text [ danish ] = "fra oven" ;
+ Text [ french ] = "en ha~ut" ;
+ Text [ swedish ] = "uppifrån" ;
+ Text [ dutch ] = "vanaf ~boven" ;
+ Text [ spanish ] = "desde arriba" ;
+ Text [ english_us ] = "from top" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "´ÓÉÏ";
+ Text[ russian ] = "ñâåðõó";
+ Text[ polish ] = "z góry";
+ Text[ japanese ] = "ã‚©‚ç";
+ Text[ chinese_traditional ] = "±q¤W";
+ Text[ arabic ] = "ãä ÃÚáì";
+ Text[ greek ] = "áðü ðÜ~íù";
+ Text[ korean ] = "À§¿¡¼­";
+ Text[ turkish ] = "Yukardan";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_SEND_TOP
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 98 , 59 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Minimum = 0 ;
+ Maximum = 10000 ;
+ First = 0 ;
+ Last = 10000 ;
+ SpinSize = 10 ;
+ Repeat = TRUE ;
+ };
+ MenuButton BTN_SEND_EDIT
+ {
+ Pos = MAP_APPFONT ( 12 , 59 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Text = "Bearb." ;
+ Text [ ENGLISH ] = "Edit" ;
+ Text [ norwegian ] = "Rediger" ;
+ Text [ italian ] = "Modifica" ;
+ Text [ portuguese_brazilian ] = "Editar" ;
+ Text [ portuguese ] = "Editar" ;
+ Text [ finnish ] = "Muokkaa" ;
+ Text [ danish ] = "Rediger" ;
+ Text [ french ] = "Modifier" ;
+ Text [ swedish ] = "Redigera" ;
+ Text [ dutch ] = "Bewerk." ;
+ Text [ spanish ] = "Editar" ;
+ Text [ english_us ] = "Edit" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "±à¼­";
+ Text[ russian ] = "Ïðàâêà";
+ Text[ polish ] = "Edyt~uj";
+ Text[ japanese ] = "•ÒW";
+ Text[ chinese_traditional ] = "½s¿è";
+ Text[ arabic ] = "ÊÍÑíÑ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "Åðåîåñã.";
+ Text[ korean ] = "ÆíÁý";
+ Text[ turkish ] = "Düzenle";
+ };
+ Window WIN_PREVIEW
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 144 , 14 ) ;
+ Size = MAP_APPFONT ( 78 , 57 ) ;
+ };
+ GroupBox GRP_POSITIONS
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 222 , 74 ) ;
+ Text = "Positionen" ;
+ Text [ ENGLISH ] = "Positions" ;
+ Text [ norwegian ] = "Positions" ;
+ Text [ italian ] = "Posizioni" ;
+ Text [ portuguese_brazilian ] = "Posições" ;
+ Text [ portuguese ] = "Posições" ;
+ Text [ finnish ] = "Paikat" ;
+ Text [ danish ] = "Placering" ;
+ Text [ french ] = "Positions" ;
+ Text [ swedish ] = "Positioner" ;
+ Text [ dutch ] = "Posities" ;
+ Text [ spanish ] = "Posiciones" ;
+ Text [ english_us ] = "Positions" ;
+ Text[ chinese_simplified ] = "λÖÃ";
+ Text[ russian ] = "Ïîçèöèè";
+ Text[ polish ] = "Pozycje";
+ Text[ japanese ] = "ˆÊ’u";
+ Text[ chinese_traditional ] = "¦ì¸m";
+ Text[ arabic ] = "ÇáãæÇÖÚ";
+ Text[ greek ] = "ÈÝóåéò";
+ Text[ korean ] = "À§Ä¡";
+ Text[ turkish ] = "Konumlar";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText TXT_FORMAT
+ {
+ Pos = MAP_APPFONT ( 12 , 92 ) ;
+ Size = MAP_APPFONT ( 32 , 8 ) ;
+ Text = "~Format" ;
+ Text [ ENGLISH ] = "Format" ;
+ Text [ norwegian ] = "Format" ;
+ Text [ italian ] = "Formato" ;
+ Text [ portuguese_brazilian ] = "Formato" ;
+ Text [ portuguese ] = "Fo~rmato" ;
+ Text [ finnish ] = "Muotoile" ;
+ Text [ danish ] = "~Format" ;
+ Text [ french ] = "Forma~t" ;
+ Text [ swedish ] = "F~ormat" ;
+ Text [ dutch ] = "~Formaat" ;
+ Text [ spanish ] = "~Formato" ;
+ Text [ english_us ] = "F~ormat" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¸ñʽ(~O)";
+ Text[ russian ] = "Ôîð~ìàò";
+ Text[ polish ] = "Format";
+ Text[ japanese ] = "‘Ž®(~O)";
+ Text[ chinese_traditional ] = "®æ¦¡(~O)";
+ Text[ arabic ] = "ÇáÍÌã";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "ÅðéëïãÝò";
+ Text[ korean ] = "¼­½Ä(~O)";
+ Text[ turkish ] = "Format";
+ };
+ ListBox BOX_FORMAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 47 , 90 ) ;
+ Size = MAP_APPFONT ( 102 , 61 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText TXT_WIDTH
+ {
+ Pos = MAP_APPFONT ( 155 , 92 ) ;
+ Size = MAP_APPFONT ( 24 , 8 ) ;
+ Text = "~Breite" ;
+ Text [ ENGLISH ] = "Width" ;
+ Text [ norwegian ] = "Bredde " ;
+ Text [ italian ] = "~Largh." ;
+ Text [ portuguese_brazilian ] = "Largura" ;
+ Text [ portuguese ] = "~Largura" ;
+ Text [ finnish ] = "Leveys" ;
+ Text [ danish ] = "Bredde" ;
+ Text [ french ] = "~Largeur" ;
+ Text [ swedish ] = "~Bredd" ;
+ Text [ dutch ] = "B~reedte" ;
+ Text [ spanish ] = "A~ncho" ;
+ Text [ english_us ] = "~Width" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¿í(~W)";
+ Text[ russian ] = "Øèðèíà";
+ Text[ polish ] = "Szer.";
+ Text[ japanese ] = "•(~W)";
+ Text[ chinese_traditional ] = "¼e(~W)";
+ Text[ arabic ] = "ÇáÚÑÖ";
+ Text[ greek ] = "ÐëÜôïò";
+ Text[ korean ] = "³Êºñ(~W)";
+ Text[ turkish ] = "Geniþlik";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_WIDTH
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 182 , 90 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Minimum = 500 ;
+ Maximum = 10000 ;
+ First = 500 ;
+ Last = 10000 ;
+ SpinSize = 10 ;
+ Repeat = TRUE ;
+ };
+ FixedText TXT_HEIGHT
+ {
+ Pos = MAP_APPFONT ( 155 , 107 ) ;
+ Size = MAP_APPFONT ( 24 , 8 ) ;
+ 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 ] = "A~ltura" ;
+ Text [ english_us ] = "~Height" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¸ß(~H)";
+ Text[ russian ] = "Âûñîòà";
+ Text[ polish ] = "Wys.";
+ Text[ japanese ] = "‚‚³(~H)";
+ Text[ chinese_traditional ] = "°ª(~H)";
+ Text[ arabic ] = "ÇáÇÑÊÝÇÚ";
+ Text[ greek ] = "¾øïò";
+ Text[ korean ] = "³ôÀÌ(~H)";
+ Text[ turkish ] = "Yükseklik";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_HEIGHT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 182 , 105 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Minimum = 500 ;
+ Maximum = 10000 ;
+ First = 500 ;
+ Last = 10000 ;
+ SpinSize = 10 ;
+ Repeat = TRUE ;
+ };
+ GroupBox GRP_SIZE
+ {
+ Pos = MAP_APPFONT ( 6 , 79 ) ;
+ Size = MAP_APPFONT ( 222 , 44 ) ;
+ Text = "Größe" ;
+ Text [ ENGLISH ] = "Size" ;
+ Text [ norwegian ] = "Størrelse" ;
+ Text [ italian ] = "Dimensione" ;
+ Text [ portuguese_brazilian ] = "Tamanho" ;
+ Text [ portuguese ] = "Tamanho" ;
+ Text [ finnish ] = "Koko" ;
+ Text [ danish ] = "Størrelse" ;
+ Text [ french ] = "Taille" ;
+ Text [ swedish ] = "Storlek" ;
+ Text [ dutch ] = "Grootte" ;
+ Text [ spanish ] = "Tamaño" ;
+ Text [ english_us ] = "Size" ;
+ Text[ chinese_simplified ] = "´óС";
+ Text[ russian ] = "Ðàçìåð";
+ Text[ polish ] = "Rozmiar";
+ Text[ japanese ] = "»²½Þ";
+ Text[ chinese_traditional ] = "¤j¤p";
+ Text[ arabic ] = "ÇáÍÌã";
+ Text[ greek ] = "ÌÝãåèïò";
+ Text[ korean ] = "Å©±â";
+ Text[ turkish ] = "Boyut";
+ Text[ language_user1 ] = " ";
+ };
+};
+ // Menu *********************************************************************
+Menu MNU_EDIT
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ IDENTIFIER = MID_CHAR ;
+ TEXT = "~Zeichen..." ;
+ TEXT [ English ] = "~Character..." ;
+ TEXT [ norwegian ] = "~Character..." ;
+ TEXT [ italian ] = "~Carattere..." ;
+ TEXT [ portuguese_brazilian ] = "~Caracter..." ;
+ TEXT [ portuguese ] = "~Caracteres..." ;
+ TEXT [ finnish ] = "~Merkki..." ;
+ TEXT [ danish ] = "Tegn..." ;
+ TEXT [ french ] = "~Caractère..." ;
+ TEXT [ swedish ] = "~Tecken..." ;
+ TEXT [ dutch ] = "~Teken..." ;
+ TEXT [ spanish ] = "~Caracteres..." ;
+ TEXT [ english_us ] = "C~haracter..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Setzt Zeichenattribute für den selektierten Text : Define character attributes for selected text */
+ /* ### ACHTUNG: Neuer Text in Resource? Setzt Zeichenattribute für den selektierten Text : Define character attributes for selected text */
+ /* ### ACHTUNG: Neuer Text in Resource? Setzt Zeichenattribute für den selektierten Text : Define character attributes for selected text */
+ /* ### ACHTUNG: Neuer Text in Resource? Setzt Zeichenattribute für den selektierten Text : Define character attributes for selected text */
+ TEXT[ chinese_simplified ] = "×Ö·û(~H)...";
+ TEXT[ russian ] = "Çíàê...";
+ TEXT[ polish ] = "Znak...";
+ TEXT[ japanese ] = "•¶Žš(~H)...";
+ TEXT[ language_user1 ] = " ";
+ TEXT[ chinese_traditional ] = "¦r¤¸(~H)...";
+ TEXT[ arabic ] = "ÎØ...";
+ TEXT[ greek ] = "~×áñáêôÞñåò...";
+ TEXT[ korean ] = "±âÈ£(~H)...";
+ TEXT[ turkish ] = "Karakter...";
+ };
+ MenuItem
+ {
+ IDENTIFIER = MID_PARA ;
+ TEXT = "~Absatz..." ;
+ TEXT [ English ] = "~Paragraph..." ;
+ TEXT [ norwegian ] = "~Paragraph..." ;
+ 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 ] = "P~aragraph..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Setzt Absatzattribute : Define paragraph attributes */
+ /* ### ACHTUNG: Neuer Text in Resource? Setzt Absatzattribute : Define paragraph attributes */
+ /* ### ACHTUNG: Neuer Text in Resource? Setzt Absatzattribute : Define paragraph attributes */
+ /* ### ACHTUNG: Neuer Text in Resource? Setzt Absatzattribute : Define paragraph attributes */
+ TEXT[ chinese_simplified ] = "¶ÎÂä(~A)...";
+ TEXT[ russian ] = "Àáçàö...";
+ TEXT[ polish ] = "Akapit...";
+ TEXT[ japanese ] = "’i—Ž(~A)...";
+ TEXT[ chinese_traditional ] = "¬q¸¨(~A)...";
+ TEXT[ arabic ] = "...ÝÞÑÉ";
+ TEXT[ greek ] = "Ð~áñÜãñáöïò...";
+ TEXT[ korean ] = "´Ü¶ô(~A)...";
+ TEXT[ turkish ] = "Paragraf...";
+ TEXT[ language_user1 ] = " ";
+ };
+ };
+};
diff --git a/sw/source/ui/envelp/envimg.cxx b/sw/source/ui/envelp/envimg.cxx
new file mode 100644
index 000000000000..195e20c6a82b
--- /dev/null
+++ b/sw/source/ui/envelp/envimg.cxx
@@ -0,0 +1,496 @@
+/*************************************************************************
+ *
+ * $RCSfile: envimg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SVX_ADRITEM_HXX //autogen
+#include <svx/adritem.hxx>
+#endif
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _TOOLS_RESID_HXX //autogen
+#include <tools/resid.hxx>
+#endif
+#ifndef _SVX_PAPERINF_HXX //autogen
+#include <svx/paperinf.hxx>
+#endif
+
+
+
+#include "errhdl.hxx"
+#include "finder.hxx"
+#include "swtypes.hxx"
+#include "cmdid.h"
+#include "cfgid.h"
+#include "envimg.hxx"
+#include "cfgstr.hrc"
+#include "envelp.hrc"
+
+#define ENV_VERSION 1
+
+#ifdef WIN
+#define NEXTLINE UniString::CreateFromAscii("\r\n")
+#else
+#define NEXTLINE '\n'
+#endif
+//#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+
+
+String MakeSender()
+{
+ ASSERT( pPathFinder, "PathFinder not found" );
+ SvxAddressItem aAdr( pPathFinder->GetAddress() );
+
+ String sRet;
+ String sSenderToken(SW_RES(STR_SENDER_TOKENS));
+ USHORT nTokenCount = sSenderToken.GetTokenCount(';');
+ BOOL bLastLength = TRUE;
+ for(USHORT i = 0; i < nTokenCount; i++)
+ {
+ String sToken = sSenderToken.GetToken(i, ';');
+ if(sToken.EqualsAscii("COMPANY"))
+ {
+ String sTmp = aAdr.GetToken( ADDRESS_COMPANY );
+ sRet += sTmp;
+ bLastLength = sTmp.Len() > 0;
+ }
+ else if(sToken.EqualsAscii("CR"))
+ {
+ if(bLastLength)
+ sRet +=NEXTLINE;
+ bLastLength = TRUE;
+ }
+ else if(sToken.EqualsAscii("FIRSTNAME"))
+ sRet += aAdr.GetFirstName();
+ else if(sToken.EqualsAscii("LASTNAME"))
+ sRet += aAdr.GetName();
+ else if(sToken.EqualsAscii("ADDRESS"))
+ sRet += aAdr.GetToken( ADDRESS_STREET );
+ else if(sToken.EqualsAscii("COUNTRY"))
+ sRet += aAdr.GetToken( ADDRESS_COUNTRY );
+ else if(sToken.EqualsAscii("POSTALCODE"))
+ sRet += aAdr.GetToken( ADDRESS_PLZ );
+ else if(sToken.EqualsAscii("CITY"))
+ sRet += aAdr.GetToken( ADDRESS_CITY );
+ else if(sToken.EqualsAscii("STATEPROV"))
+ sRet += aAdr.GetToken( ADDRESS_STATE );
+ else if(sToken.Len()) //spaces
+ sRet += sToken;
+ }
+ return sRet;
+
+
+ /*
+ SvxAddressItem aAdr( pPathFinder->GetAddress() );
+ String aSender, aTmp;
+ aSender += aAdr.GetFirstName();
+ aTmp = aAdr.GetName();
+ if ( aTmp.Len() ) ls
+
+ {
+ if ( aSender.Len() )
+ aSender += ' ';
+ aSender += aTmp;
+ }
+ if ( aSender.Len() )
+ aSender += NEXTLINE;
+ aTmp = aAdr.GetToken( ADDRESS_STREET );
+ if ( aTmp.Len() )
+ {
+ aSender += aTmp;
+ aSender += NEXTLINE;
+ }
+ aTmp = aAdr.GetToken( ADDRESS_COUNTRY );
+ if ( aTmp.Len() )
+ {
+ aSender += aTmp;
+ aSender += '-';
+ }
+ aTmp = aAdr.GetToken( ADDRESS_PLZ );
+ if ( aTmp.Len() )
+ {
+ aSender += aTmp;
+ aSender += ' ';
+ }
+ aSender += aAdr.GetToken( ADDRESS_CITY );
+ return aSender;
+ */
+}
+
+
+
+SwEnvItem::SwEnvItem() :
+
+ SfxPoolItem(FN_ENVELOP)
+
+{
+ aAddrText = aEmptyStr;
+ bSend = TRUE;
+ aSendText = MakeSender();
+ lSendFromLeft = 566; // 1 cm
+ lSendFromTop = 566; // 1 cm
+ lWidth = lC65Width;
+ lHeight = lC65Height;
+ eAlign = ENV_HOR_LEFT;
+ bPrintFromAbove = TRUE;
+ lShiftRight = 0;
+ lShiftDown = 0;
+
+ lAddrFromLeft = Max(lWidth, lHeight) / 2;
+ lAddrFromTop = Min(lWidth, lHeight) / 2;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwEnvItem::SwEnvItem(const SwEnvItem& rItem) :
+
+ SfxPoolItem(FN_ENVELOP),
+
+ aAddrText (rItem.aAddrText),
+ bSend (rItem.bSend),
+ aSendText (rItem.aSendText),
+ lSendFromLeft (rItem.lSendFromLeft),
+ lSendFromTop (rItem.lSendFromTop),
+ lAddrFromLeft (rItem.lAddrFromLeft),
+ lAddrFromTop (rItem.lAddrFromTop),
+ lWidth (rItem.lWidth),
+ lHeight (rItem.lHeight),
+ eAlign (rItem.eAlign),
+ bPrintFromAbove(rItem.bPrintFromAbove),
+ lShiftRight (rItem.lShiftRight),
+ lShiftDown (rItem.lShiftDown),
+ aSlot (rItem.aSlot)
+
+{
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwEnvItem& SwEnvItem::operator =(const SwEnvItem& rItem)
+{
+ aAddrText = rItem.aAddrText;
+ bSend = rItem.bSend;
+ aSendText = rItem.aSendText;
+ lSendFromLeft = rItem.lSendFromLeft;
+ lSendFromTop = rItem.lSendFromTop;
+ lAddrFromLeft = rItem.lAddrFromLeft;
+ lAddrFromTop = rItem.lAddrFromTop;
+ lWidth = rItem.lWidth;
+ lHeight = rItem.lHeight;
+ eAlign = rItem.eAlign;
+ bPrintFromAbove = rItem.bPrintFromAbove;
+ lShiftRight = rItem.lShiftRight;
+ lShiftDown = rItem.lShiftDown;
+ aSlot = rItem.aSlot;
+
+ return *this;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+int SwEnvItem::operator ==(const SfxPoolItem& rItem) const
+{
+ const SwEnvItem& rEnv = (const SwEnvItem&) rItem;
+
+ return aAddrText == rEnv.aAddrText &&
+ bSend == rEnv.bSend &&
+ aSendText == rEnv.aSendText &&
+ lSendFromLeft == rEnv.lSendFromLeft &&
+ lSendFromTop == rEnv.lSendFromTop &&
+ lAddrFromLeft == rEnv.lAddrFromLeft &&
+ lAddrFromTop == rEnv.lAddrFromTop &&
+ lWidth == rEnv.lWidth &&
+ lHeight == rEnv.lHeight &&
+ eAlign == rEnv.eAlign &&
+ bPrintFromAbove == rEnv.bPrintFromAbove &&
+ lShiftRight == rEnv.lShiftRight &&
+ lShiftDown == rEnv.lShiftDown &&
+ aSlot == rEnv.aSlot;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SfxPoolItem* SwEnvItem::Clone(SfxItemPool*) const
+{
+ return new SwEnvItem(*this);
+}
+
+
+// --------------------------------------------------------------------------
+
+SwEnvCfgItem::SwEnvCfgItem() :
+ SfxConfigItem(CFG_ENV_ITEM)
+{
+}
+// ----------------------------------------------------------------------------
+
+int SwEnvCfgItem::Load(SvStream& rStrm)
+{
+ USHORT nVersion;
+ rStrm >> nVersion;
+
+ if (nVersion == ENV_VERSION)
+ {
+ unsigned char b;
+ long l;
+ USHORT i;
+ rtl_TextEncoding eEncoding = gsl_getSystemTextEncoding();
+ rStrm.ReadByteString(aEnvItem.aAddrText, eEncoding);
+ rStrm >> b; aEnvItem.bSend = (BOOL) b;
+ rStrm.ReadByteString(aEnvItem.aSendText, eEncoding);
+ rStrm >> l; aEnvItem.lAddrFromLeft = l;
+ rStrm >> l; aEnvItem.lAddrFromTop = l;
+ rStrm >> l; aEnvItem.lSendFromLeft = l;
+ rStrm >> l; aEnvItem.lSendFromTop = l;
+ rStrm >> l; aEnvItem.lWidth = l;
+ rStrm >> l; aEnvItem.lHeight = l;
+ rStrm >> i; aEnvItem.eAlign = (SwEnvAlign) i;
+ rStrm >> b; aEnvItem.bPrintFromAbove = (BOOL) b;
+ rStrm >> l; aEnvItem.lShiftRight = l;
+ rStrm >> l; aEnvItem.lShiftDown = l;
+ rStrm.ReadByteString(aEnvItem.aSlot, eEncoding);
+
+ SetDefault(FALSE);
+
+ return SfxConfigItem::ERR_OK;
+ }
+ else
+ return SfxConfigItem::WARNING_VERSION;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+BOOL SwEnvCfgItem::Store(SvStream& rStrm)
+{
+ rStrm << (USHORT)ENV_VERSION;
+
+ rtl_TextEncoding eEncoding = gsl_getSystemTextEncoding();
+ rStrm.WriteByteString(aEnvItem.aAddrText, eEncoding);
+ rStrm << (unsigned char) aEnvItem.bSend;
+ rStrm.WriteByteString(aEnvItem.aSendText, eEncoding);
+ rStrm << aEnvItem.lAddrFromLeft;
+ rStrm << aEnvItem.lAddrFromTop;
+ rStrm << aEnvItem.lSendFromLeft;
+ rStrm << aEnvItem.lSendFromTop;
+ rStrm << aEnvItem.lWidth;
+ rStrm << aEnvItem.lHeight;
+ rStrm << (USHORT) aEnvItem.eAlign;
+ rStrm << (unsigned char) aEnvItem.bPrintFromAbove;
+ rStrm << aEnvItem.lShiftRight;
+ rStrm << aEnvItem.lShiftDown;
+ rStrm.WriteByteString(aEnvItem.aSlot, eEncoding);
+
+ return SfxConfigItem::ERR_OK;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwEnvCfgItem::UseDefault()
+{
+ aEnvItem = SwEnvItem();
+ SfxConfigItem::UseDefault();
+
+}
+
+
+
+String SwEnvCfgItem::GetName() const
+{
+ return SW_RESSTR(STR_CFG_ENVIMG);
+}
+
+
+
+/*
+$Log: not supported by cvs2svn $
+Revision 1.36 2000/09/18 16:05:25 willem.vandorp
+OpenOffice header added.
+
+Revision 1.35 2000/06/26 16:32:11 jp
+have to change: enums of AddressToken
+
+Revision 1.34 2000/05/26 07:21:29 os
+old SW Basic API Slots removed
+
+Revision 1.33 2000/04/19 13:58:58 os
+#74742# STATEPROV added
+
+Revision 1.32 2000/04/18 15:31:35 os
+UNICODE
+
+Revision 1.31 2000/04/11 13:37:29 os
+#74742# Sender field of envelopes and labels language specific
+
+Revision 1.30 1999/10/22 14:09:27 jp
+have to change - SearchFile with SfxIniManager, dont use SwFinder for this
+
+Revision 1.29 1997/11/24 10:52:12 MA
+includes
+
+
+ Rev 1.28 24 Nov 1997 11:52:12 MA
+ includes
+
+ Rev 1.27 03 Nov 1997 13:17:16 MA
+ precomp entfernt
+
+ Rev 1.26 08 Apr 1997 10:30:14 OM
+ Fehlende Includes
+
+ Rev 1.25 08 Apr 1997 10:06:30 NF
+ includes...
+
+ Rev 1.24 11 Nov 1996 09:44:18 MA
+ ResMgr
+
+ Rev 1.23 26 Jul 1996 20:36:40 MA
+ includes
+
+ Rev 1.22 28 Jun 1996 10:10:52 OS
+ UseDefault: Basisklasse rufen
+
+ Rev 1.21 19 Mar 1996 16:33:48 MA
+ chg: Umstellungen, Finder und AdrItem
+
+ Rev 1.20 15 Mar 1996 13:29:24 MA
+ opt: Finder abgespeckt
+
+ Rev 1.19 27 Nov 1995 18:55:34 OS
+ Umstellung 303a
+
+ Rev 1.18 24 Nov 1995 16:59:40 OM
+ PCH->PRECOMPILED
+
+ Rev 1.17 16 Nov 1995 18:37:44 OS
+ neu: Get/SetVariable, nicht impl.
+
+ Rev 1.16 15 Sep 1995 21:14:22 OS
+ add: cfgstr.hrc
+
+ Rev 1.15 15 Sep 1995 12:41:00 OS
+ GetName() implementiert
+
+ Rev 1.14 11 Sep 1995 18:06:08 HJS
+ add: sbx.hxx
+
+ Rev 1.13 09 Aug 1995 18:59:36 AMA
+ kein GetPresentation
+
+ Rev 1.12 07 Aug 1995 18:19:58 AMA
+ Umbau: GetValueText -> GetPresentation
+
+ Rev 1.11 08 Jun 1995 19:02:06 OM
+ Absturz unter OS/2 gefixt
+
+ Rev 1.10 30 May 1995 17:01:32 ER
+ Umstellung SwPaper... SvxPaper...
+
+ Rev 1.9 24 May 1995 18:14:22 ER
+ Segmentierung
+
+ Rev 1.8 23 Mar 1995 18:33:20 PK
+ geht immer weiter ...
+
+ Rev 1.7 17 Mar 1995 17:10:04 PK
+ geht immer weiter
+
+ Rev 1.6 06 Mar 1995 00:08:20 PK
+ linkbarer envelp-zustand
+
+ Rev 1.5 04 Mar 1995 22:55:14 PK
+ geht immer weiter
+
+ Rev 1.4 20 Feb 1995 19:39:44 PK
+ erstma eingecheckt
+
+ Rev 1.3 18 Nov 1994 15:55:28 MA
+ min -> Min, max -> Max
+
+ Rev 1.2 25 Oct 1994 17:33:38 ER
+ add: PCH
+
+ Rev 1.1 15 Apr 1994 17:28:30 PK
+ warnungen raus, strings optimiert
+
+ Rev 1.0 22 Mar 1994 17:48:14 PK
+ umschlaege vorerst fertig
+*/
+
diff --git a/sw/source/ui/envelp/envlop.hrc b/sw/source/ui/envelp/envlop.hrc
new file mode 100644
index 000000000000..66eb3e99089d
--- /dev/null
+++ b/sw/source/ui/envelp/envlop.hrc
@@ -0,0 +1,99 @@
+/*************************************************************************
+ *
+ * $RCSfile: envlop.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _ENVLOP_HRC
+#define _ENVLOP_HRC
+
+// #include *****************************************************************
+
+#include "envelp.hrc"
+
+// Lokale Resourcen *********************************************************
+
+#define TXT_ADDR 1
+#define EDT_ADDR 2
+#define FT_DATABASE 3
+#define LB_DATABASE 4
+#define FT_TABLE 5
+#define LB_TABLE 6
+#define BTN_INSERT 7
+#define FT_DBFIELD 8
+#define LB_DBFIELD 9
+#define BOX_SEND 10
+#define EDT_SEND 11
+#define WIN_PREVIEW 12
+#define ST_INSERT 13
+#define ST_CHANGE 14
+// Globale Resourcen ********************************************************
+
+#define STR_DOC_TITLE (RC_ENVLOP_BEGIN)
+
+// Ueberlaufpruefung ********************************************************
+
+#define ENVLOP_ACT_END STR_DOC_TITLE
+
+#if ENVLOP_ACT_END > RC_ENVLOP_END
+#error Resource-Ueberlauf in #file, #line
+#endif
+
+#endif
+
+
diff --git a/sw/source/ui/envelp/envlop.src b/sw/source/ui/envelp/envlop.src
new file mode 100644
index 000000000000..a8c5f954b51b
--- /dev/null
+++ b/sw/source/ui/envelp/envlop.src
@@ -0,0 +1,473 @@
+/*************************************************************************
+ *
+ * $RCSfile: envlop.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ******************************************************************
+
+ // #include *****************************************************************
+#include "envlop.hrc"
+#include "helpid.h"
+ // DLG_ENV ------------------------------------------------------------------
+TabDialog DLG_ENV
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Briefumschlag" ;
+ Text [ ENGLISH ] = "Envelope" ;
+ Text [ norwegian ] = "Envelope" ;
+ Text [ italian ] = "Busta" ;
+ Text [ portuguese_brazilian ] = "Envelope" ;
+ Text [ portuguese ] = "Envelope" ;
+ Text [ finnish ] = "Kirjekuori" ;
+ Text [ danish ] = "Konvolut" ;
+ Text [ french ] = "Enveloppe" ;
+ Text [ swedish ] = "Kuvert" ;
+ Text [ dutch ] = "Envelop" ;
+ Text [ spanish ] = "Sobre" ;
+ Text [ english_us ] = "Envelope" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_ENV_ENV ;
+ Text = "Umschlag" ;
+ Text [ ENGLISH ] = "Envelop" ;
+ Text [ norwegian ] = "Konvolutt" ;
+ Text [ italian ] = "Busta" ;
+ Text [ portuguese_brazilian ] = "Envelope" ;
+ Text [ portuguese ] = "Envelope" ;
+ Text [ finnish ] = "Kirjekuori" ;
+ Text [ danish ] = "Konvolut" ;
+ Text [ french ] = "Enveloppe" ;
+ Text [ swedish ] = "Kuvert" ;
+ Text [ dutch ] = "Envelop" ;
+ Text [ spanish ] = "Sobre" ;
+ Text [ english_us ] = "Envelope" ;
+ PageResID = TP_ENV_ENV ;
+ Text[ chinese_simplified ] = "ÐÅ·â";
+ Text[ russian ] = "Êîíâåðò";
+ Text[ polish ] = "Koperta";
+ Text[ japanese ] = "••“›";
+ Text[ chinese_traditional ] = "«H«Ê";
+ Text[ arabic ] = "ÙÑÝ";
+ Text[ greek ] = "ÖÜêåëïò";
+ Text[ korean ] = "ºÀÅõ";
+ Text[ turkish ] = "Zarf";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_ENV_FMT ;
+ Text = "Format" ;
+ Text[English] = "Format" ;
+ PageResID = TP_ENV_FMT ;
+ Text[ english_us ] = "Format";
+ Text[ portuguese ] = "Formato";
+ Text[ russian ] = "Ôîðìàò";
+ Text[ greek ] = "ÌïñöÞ";
+ Text[ dutch ] = "Formaat";
+ Text[ french ] = "Format";
+ Text[ spanish ] = "Formato";
+ Text[ italian ] = "Formato";
+ Text[ danish ] = "Format";
+ Text[ swedish ] = "Format";
+ Text[ polish ] = "Format";
+ Text[ portuguese_brazilian ] = "Format";
+ Text[ japanese ] = "‘Ž®";
+ Text[ korean ] = "Format";
+ Text[ chinese_simplified ] = "¸ñʽ";
+ Text[ chinese_traditional ] = "®æ¦¡";
+ Text[ turkish ] = "Format";
+ Text[ arabic ] = "ÇáÊäÓíÞ";
+ };
+ PageItem
+ {
+ Identifier = TP_ENV_PRT ;
+ Text = "Drucker" ;
+ Text [ English ] = "Printer" ;
+ Text [ norwegian ] = "Printer" ;
+ Text [ italian ] = "Stampante" ;
+ Text [ portuguese_brazilian ] = "Impressora" ;
+ Text [ portuguese ] = "Impressora" ;
+ Text [ finnish ] = "Kirjoitin" ;
+ Text [ danish ] = "Printer" ;
+ Text [ french ] = "Imprimante" ;
+ Text [ swedish ] = "Skrivare" ;
+ Text [ dutch ] = "Printer" ;
+ Text [ spanish ] = "Impresora" ;
+ Text [ english_us ] = "Printer" ;
+ PageResID = TP_ENV_PRT ;
+ Text[ chinese_simplified ] = "´òÓ¡»ú";
+ Text[ russian ] = "Ïðèíòåð";
+ Text[ polish ] = "Drukarka";
+ Text[ japanese ] = "ÌßØÝÀ";
+ Text[ chinese_traditional ] = "¦Lªí¾÷";
+ Text[ arabic ] = "ÇáØÇÈÚÉ";
+ Text[ greek ] = "ÅêôõðùôÞò";
+ Text[ korean ] = "ÇÁ¸°ÅÍ";
+ Text[ turkish ] = "Yazýcý";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ String ST_INSERT
+ {
+ 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 ] = "In~sérer" ;
+ Text [ swedish ] = "~Infoga" ;
+ Text [ dutch ] = "~Invoegen" ;
+ Text [ spanish ] = "I~nsertar" ;
+ Text [ english_us ] = "~Insert" ;
+ Text[ chinese_simplified ] = "²åÈë(~I)";
+ Text[ russian ] = "Âñòàâêà";
+ Text[ polish ] = "Wstaw";
+ Text[ japanese ] = "‘}“ü(~I)";
+ Text[ chinese_traditional ] = "´¡¤J(~I)";
+ Text[ arabic ] = "ÅÏÑÇÌ";
+ Text[ dutch ] = "~Invoegen";
+ Text[ chinese_simplified ] = "²åÈë(~I)";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "»ðÀÔ(~I)";
+ Text[ turkish ] = "~Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_CHANGE
+ {
+ Text = "~Ändern" ;
+ Text [ English ] = "Change" ;
+ Text [ norwegian ] = "Endre" ;
+ Text [ italian ] = "C~ambia" ;
+ Text [ portuguese_brazilian ] = "Mudar" ;
+ Text [ portuguese ] = "~Modificar" ;
+ Text [ finnish ] = "Muuta" ;
+ Text [ danish ] = "Modificer" ;
+ Text [ french ] = "~Modifier" ;
+ Text [ swedish ] = "~Ändra" ;
+ Text [ dutch ] = "~Wijzigen" ;
+ 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[ dutch ] = "~Wijzigen";
+ Text[ chinese_simplified ] = "¸ü¸Ä(~M)";
+ Text[ greek ] = "Ôñïðïðïßçóç";
+ Text[ korean ] = "¼öÁ¤(~M)";
+ Text[ turkish ] = "D~eðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "ÐÅ·â";
+ Text[ russian ] = "Êîíâåðò";
+ Text[ polish ] = "Koperta listowa";
+ Text[ japanese ] = "••“›";
+ Text[ chinese_traditional ] = "«H«Ê";
+ Text[ arabic ] = "ÙÑÝ";
+ Text[ greek ] = "ÖÜêåëïò";
+ Text[ korean ] = "ºÀÅõ";
+ Text[ turkish ] = "Zarf";
+ Text[ language_user1 ] = " ";
+};
+ // TP_ENV_ENV ---------------------------------------------------------------
+TabPage TP_ENV_ENV
+{
+ HelpID = HID_ENV_ENV ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ FixedText TXT_ADDR
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 40 , 8 ) ;
+ Text = "~Empfänger" ;
+ Text [ English ] = "Addressee" ;
+ Text [ norwegian ] = "Addressee" ;
+ Text [ italian ] = "Destinatario" ;
+ Text [ portuguese_brazilian ] = "Endereço" ;
+ Text [ portuguese ] = "~Destinatário" ;
+ Text [ finnish ] = "Vastaanottaja" ;
+ Text [ danish ] = "Modtager" ;
+ Text [ french ] = "~Destinataire" ;
+ Text [ swedish ] = "Mottagar~e" ;
+ Text [ dutch ] = "~Geadresseerde" ;
+ Text [ spanish ] = "~Destinatario" ;
+ Text [ english_us ] = "Addr~essee" ;
+ Group = TRUE ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÊÕ¼þÈË(~E)";
+ Text[ russian ] = "Ïîëó÷àòåëü";
+ Text[ polish ] = "Odbiorca";
+ Text[ japanese ] = "ŽóMŽÒ(~E)";
+ Text[ chinese_traditional ] = "¦¬¥óªÌ(~E)";
+ Text[ arabic ] = "ÇáãÓÊáã";
+ Text[ greek ] = "ÐáñáëÞðôçò";
+ Text[ korean ] = "¹Þ´Â »ç¶÷(~E)";
+ Text[ turkish ] = "Alýcý";
+ Text[ language_user1 ] = " ";
+ };
+ MultiLineEdit EDT_ADDR
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 14 ) ;
+ Size = MAP_APPFONT ( 110 , 44 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ HScroll = TRUE ;
+ VScroll = TRUE ;
+ IgnoreTab = TRUE;
+ };
+ FixedText FT_DATABASE
+ {
+ Pos = MAP_APPFONT ( 122 , 3 ) ;
+ Size = MAP_APPFONT ( 57 , 10 ) ;
+ Text = "~Datenbank" ;
+ Text [ English ] = "Database" ;
+ Text [ norwegian ] = "Database" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Base de Dados" ;
+ Text [ portuguese ] = "~Base de dados" ;
+ Text [ finnish ] = "Tietokanta" ;
+ 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 ] = "Êý¾Ý¿â(~D)";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "¸ê®Æ®w";
+ Text[ arabic ] = "ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "ÂÜóç ~äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DATABASE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 122 , 14 ) ;
+ Size = MAP_APPFONT ( 57 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_TABLE
+ {
+ Pos = MAP_APPFONT ( 185 , 3 ) ;
+ Size = MAP_APPFONT ( 57 , 10 ) ;
+ Text = "~Tabelle" ;
+ Text [ ENGLISH ] = "Table" ;
+ Text [ english_us ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ spanish ] = "Tabla" ;
+ Text [ french ] = "~Table" ;
+ Text [ dutch ] = "~Tabel" ;
+ Text [ swedish ] = "~Tabell" ;
+ Text [ danish ] = "Tabel" ;
+ Text [ portuguese_brazilian ] = "Tabelle" ;
+ Text [ portuguese ] = "~Tabela" ;
+ Text[ chinese_simplified ] = "±í¸ñ(~T)";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "Tabela";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÇáÌÏæá";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "Ç¥";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_TABLE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 185 , 14 ) ;
+ Size = MAP_APPFONT ( 57 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ImageButton BTN_INSERT
+ {
+ Pos = MAP_APPFONT ( 122 , 45 ) ;
+ Size = MAP_APPFONT ( 18 , 12 ) ;
+ SYMBOL = IMAGEBUTTON_ARROW_LEFT ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_DBFIELD
+ {
+ Pos = MAP_APPFONT ( 146 , 34 ) ;
+ Size = MAP_APPFONT ( 57 , 10 ) ;
+ Text = "Datenbank~feld" ;
+ Text [ English ] = "Database field" ;
+ Text [ norwegian ] = "Database field" ;
+ Text [ italian ] = "Campo database" ;
+ Text [ portuguese_brazilian ] = "Campo base de dados" ;
+ Text [ portuguese ] = "Campo base de dados" ;
+ Text [ finnish ] = "Tietokantakenttä" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "~Champ de B.D." ;
+ Text [ swedish ] = "Databas~fält" ;
+ Text [ dutch ] = "Database~veld" ;
+ Text [ spanish ] = "~Campo base de datos" ;
+ Text [ english_us ] = "~Database field" ;
+ Text[ chinese_simplified ] = "Êý¾Ý¿â×Ö¶Î(~D)";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ(~D)";
+ Text[ chinese_traditional ] = "¸ê®Æ®wÄæ¦ì(~D)";
+ Text[ arabic ] = "ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå(~D)";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DBFIELD
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 146 , 45 ) ;
+ Size = MAP_APPFONT ( 96 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ CheckBox BOX_SEND
+ {
+ Pos = MAP_APPFONT ( 6 , 72 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "~Absender" ;
+ Text [ English ] = "Sender" ;
+ Text [ norwegian ] = "Sender" ;
+ Text [ italian ] = "Mittente" ;
+ Text [ portuguese_brazilian ] = "Remetente" ;
+ Text [ portuguese ] = "~Remetente" ;
+ Text [ finnish ] = "Lähettäjä" ;
+ Text [ danish ] = "Afsender" ;
+ Text [ french ] = "~Expéditeur" ;
+ Text [ swedish ] = "~Avsändare" ;
+ Text [ dutch ] = "Af~zender" ;
+ Text [ spanish ] = "R~emitente" ;
+ Text [ english_us ] = "~Sender" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "·¢¼þÈË(~S)";
+ Text[ russian ] = "Îòïðàâèòåëü";
+ Text[ polish ] = "Nadawca";
+ Text[ japanese ] = "·ol(~S)";
+ Text[ chinese_traditional ] = "±H¥óªÌ(~S)";
+ Text[ arabic ] = "ÇáãÑÓá";
+ Text[ greek ] = "ÁðïóôïëÝáò";
+ Text[ korean ] = "º¸³½ »ç¶÷(~S)";
+ Text[ turkish ] = "Gönderen";
+ Text[ language_user1 ] = " ";
+ };
+ MultiLineEdit EDT_SEND
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 85 ) ;
+ Size = MAP_APPFONT ( 110 , 44 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ HScroll = TRUE ;
+ VScroll = TRUE ;
+ IgnoreTab = TRUE;
+ };
+ Window WIN_PREVIEW
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 122 , 68 ) ;
+ Size = MAP_APPFONT ( 83 , 61 ) ;
+ };
+};
+ // Strings ******************************************************************
+String STR_DOC_TITLE
+{
+ Text = "Briefumschlag" ;
+ Text [ English ] = "Envelope" ;
+ Text [ norwegian ] = "Envelope" ;
+ Text [ italian ] = "Busta" ;
+ Text [ portuguese_brazilian ] = "Envelope" ;
+ Text [ portuguese ] = "Envelope" ;
+ Text [ finnish ] = "Kirjekuori" ;
+ Text [ danish ] = "Konvolut" ;
+ Text [ french ] = "Enveloppe" ;
+ Text [ swedish ] = "Kuvert" ;
+ Text [ dutch ] = "Envelop" ;
+ Text [ spanish ] = "Sobre" ;
+ Text [ english_us ] = "Envelope" ;
+ Text[ chinese_simplified ] = "ÐÅ·â";
+ Text[ russian ] = "Êîíâåðò";
+ Text[ polish ] = "Koperta listowa";
+ Text[ japanese ] = "••“›";
+ Text[ chinese_traditional ] = "«H«Ê";
+ Text[ arabic ] = "ÙÑÝ";
+ Text[ greek ] = "ÖÜêåëïò";
+ Text[ korean ] = "ºÀÅõ";
+ Text[ turkish ] = "Zarf";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/envelp/envlop1.cxx b/sw/source/ui/envelp/envlop1.cxx
new file mode 100644
index 000000000000..6ef27b8d43be
--- /dev/null
+++ b/sw/source/ui/envelp/envlop1.cxx
@@ -0,0 +1,617 @@
+/*************************************************************************
+ *
+ * $RCSfile: envlop1.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "dbmgr.hxx"
+#ifndef _SBA_SBAOBJ_HXX //autogen
+#include <offmgr/sbaobj.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+
+#include "wrtsh.hxx"
+#include "errhdl.hxx"
+#include "cmdid.h"
+#include "helpid.h"
+#include "envfmt.hxx"
+#include "envlop.hxx"
+#include "envprt.hxx"
+#include "fmtcol.hxx"
+#include "poolfmt.hxx"
+#include "view.hxx"
+
+#include "envlop.hrc"
+
+#ifdef REPLACE_OFADBMGR
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+using namespace com::sun::star::lang;
+using namespace com::sun::star::container;
+using namespace com::sun::star::uno;
+using namespace com::sun::star;
+using namespace rtl;
+#define C2U(char) rtl::OUString::createFromAscii(char)
+#else
+
+#endif //REPLACE_OFADBMGR
+
+// --------------------------------------------------------------------------
+
+
+
+SwEnvPreview::SwEnvPreview(SfxTabPage* pParent, const ResId& rResID) :
+
+ Window(pParent, rResID)
+
+{
+ SetMapMode(MapMode(MAP_PIXEL));
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwEnvPreview::~SwEnvPreview()
+{
+}
+
+// ----------------------------------------------------------------------------
+
+
+
+void SwEnvPreview::Paint(const Rectangle &)
+{
+ const SwEnvItem& rItem =
+ ((SwEnvDlg*) GetParent()->GetParent()->GetParent())->aEnvItem;
+
+ USHORT nPageW = (USHORT) Max(rItem.lWidth, rItem.lHeight),
+ nPageH = (USHORT) Min(rItem.lWidth, rItem.lHeight);
+
+ float fx = (float) GetOutputSizePixel().Width () / nPageW,
+ fy = (float) GetOutputSizePixel().Height() / nPageH,
+ f = fx < fy ? fx : fy;
+
+ // Umschlag
+ long nW = (USHORT) (f * nPageW),
+ nH = (USHORT) (f * nPageH),
+ nX = (GetOutputSizePixel().Width () - nW) / 2,
+ nY = (GetOutputSizePixel().Height() - nH) / 2;
+ SetFillColor(Color(COL_WHITE));
+ DrawRect(Rectangle(Point(nX, nY), Size(nW, nH)));
+
+ // Absender
+ if (rItem.bSend)
+ {
+ long nSendX = nX + (USHORT) (f * rItem.lSendFromLeft),
+ nSendY = nY + (USHORT) (f * rItem.lSendFromTop ),
+ nSendW = (USHORT) (f * (rItem.lAddrFromLeft - rItem.lSendFromLeft)),
+ nSendH = (USHORT) (f * (rItem.lAddrFromTop - rItem.lSendFromTop - 566));
+ SetFillColor(Color(COL_GRAY));
+ DrawRect(Rectangle(Point(nSendX, nSendY), Size(nSendW, nSendH)));
+ }
+
+ // Empfaenger
+ long nAddrX = nX + (USHORT) (f * rItem.lAddrFromLeft),
+ nAddrY = nY + (USHORT) (f * rItem.lAddrFromTop ),
+ nAddrW = (USHORT) (f * (nPageW - rItem.lAddrFromLeft - 566)),
+ nAddrH = (USHORT) (f * (nPageH - rItem.lAddrFromTop - 566));
+ SetFillColor(Color(COL_GRAY));
+ DrawRect(Rectangle(Point(nAddrX, nAddrY), Size(nAddrW, nAddrH)));
+
+ // Briefmarke
+ long nStmpW = (USHORT) (f * 1417 /* 2,5 cm */),
+ nStmpH = (USHORT) (f * 1701 /* 3,0 cm */),
+ nStmpX = nX + nW - (USHORT) (f * 566) - nStmpW,
+ nStmpY = nY + (USHORT) (f * 566);
+
+ SetFillColor(Color(COL_WHITE));
+ DrawRect(Rectangle(Point(nStmpX, nStmpY), Size(nStmpW, nStmpH)));
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwEnvDlg::SwEnvDlg(Window* pParent, const SfxItemSet& rSet,
+ SwWrtShell* pWrtSh, Printer* pPrt, BOOL bInsert) :
+
+ SfxTabDialog(pParent, SW_RES(DLG_ENV), &rSet, FALSE, &aEmptyStr),
+ sInsert(ResId(ST_INSERT)),
+ sChange(ResId(ST_CHANGE)),
+ aEnvItem((const SwEnvItem&) rSet.Get(FN_ENVELOP)),
+ pSh(pWrtSh),
+ pPrinter(pPrt),
+ pAddresseeSet(0),
+ pSenderSet(0)
+{
+ FreeResource();
+
+ GetOKButton().SetText(String(SW_RES(STR_BTN_NEWDOC)));
+ GetOKButton().SetHelpId(HID_ENVELOP_PRINT);
+ GetOKButton().SetHelpText(aEmptyStr); // Damit generierter Hilfetext verwendet wird
+ if (GetUserButton())
+ {
+ GetUserButton()->SetText(bInsert ? sInsert : sChange);
+ GetUserButton()->SetHelpId(HID_ENVELOP_INSERT);
+ }
+
+ AddTabPage(TP_ENV_ENV, SwEnvPage ::Create, 0);
+ AddTabPage(TP_ENV_FMT, SwEnvFmtPage::Create, 0);
+ AddTabPage(TP_ENV_PRT, SwEnvPrtPage::Create, 0);
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwEnvDlg::~SwEnvDlg()
+{
+ delete pAddresseeSet;
+ delete pSenderSet;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwEnvDlg::PageCreated(USHORT nId, SfxTabPage &rPage)
+{
+ if (nId == TP_ENV_PRT)
+ {
+ ((SwEnvPrtPage*)&rPage)->SetPrt(pPrinter);
+ }
+}
+
+// --------------------------------------------------------------------------
+
+short SwEnvDlg::Ok()
+{
+ short nRet = SfxTabDialog::Ok();
+
+ if (nRet == RET_OK || nRet == RET_USER)
+ {
+ if (pAddresseeSet)
+ {
+ SwTxtFmtColl* pColl = pSh->GetTxtCollFromPool(RES_POOLCOLL_JAKETADRESS);
+ pColl->SetAttr(*pAddresseeSet);
+ }
+ if (pSenderSet)
+ {
+ SwTxtFmtColl* pColl = pSh->GetTxtCollFromPool(RES_POOLCOLL_SENDADRESS);
+ pColl->SetAttr(*pSenderSet);
+ }
+ }
+
+ return nRet;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwEnvPage::SwEnvPage(Window* pParent, const SfxItemSet& rSet) :
+
+ SfxTabPage(pParent, SW_RES(TP_ENV_ENV), rSet),
+
+ aAddrText (this, SW_RES(TXT_ADDR )),
+ aAddrEdit (this, SW_RES(EDT_ADDR )),
+ aDatabaseFT (this, SW_RES(FT_DATABASE)),
+ aDatabaseLB (this, SW_RES(LB_DATABASE)),
+ aTableFT (this, SW_RES(FT_TABLE )),
+ aTableLB (this, SW_RES(LB_TABLE )),
+ aInsertBT (this, SW_RES(BTN_INSERT )),
+ aDBFieldFT (this, SW_RES(FT_DBFIELD )),
+ aDBFieldLB (this, SW_RES(LB_DBFIELD )),
+ aSenderBox (this, SW_RES(BOX_SEND )),
+ aSenderEdit (this, SW_RES(EDT_SEND )),
+ aPreview (this, SW_RES(WIN_PREVIEW))
+
+{
+ FreeResource();
+ SetExchangeSupport();
+ pSh = GetParent()->pSh;
+
+ // Handler installieren
+ aDatabaseLB .SetSelectHdl(LINK(this, SwEnvPage, DatabaseHdl ));
+ aTableLB .SetSelectHdl(LINK(this, SwEnvPage, DatabaseHdl ));
+ aInsertBT .SetClickHdl (LINK(this, SwEnvPage, FieldHdl ));
+ aSenderBox .SetClickHdl (LINK(this, SwEnvPage, SenderHdl ));
+
+ sActDBName = pSh->GetDBName();
+ InitDatabaseBox();
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwEnvPage::~SwEnvPage()
+{
+}
+
+// --------------------------------------------------------------------------
+
+
+
+IMPL_LINK( SwEnvPage, DatabaseHdl, ListBox *, pListBox )
+{
+#ifdef REPLACE_OFADBMGR
+#else
+ sActDBName = SFX_APP()->LocalizeDBName(NATIONAL2INI, aDatabaseLB.GetSelectEntry());
+#endif
+ SwWait aWait( *pSh->GetView().GetDocShell(), TRUE );
+
+ if (pListBox == &aDatabaseLB)
+ pSh->GetNewDBMgr()->GetTableNames(&aTableLB, sActDBName);
+#ifdef REPLACE_OFADBMGR
+ pSh->GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName, aTableLB.GetSelectEntry());
+#else
+ sActDBName += DB_DELIM;
+ sActDBName += aTableLB.GetSelectEntry();
+ pSh->GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName);
+#endif
+ return 0;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+IMPL_LINK( SwEnvPage, FieldHdl, Button *, EMPTYARG )
+{
+ String aStr ( '<' );
+ aStr += aDatabaseLB.GetSelectEntry();
+ aStr += '.';
+// aStr += DB_DELIM;
+ aStr += aTableLB.GetSelectEntry();
+ aStr += '.';
+// aStr += DB_DELIM;
+ aStr += aDBFieldLB.GetSelectEntry();
+ aStr += '>';
+ aAddrEdit.ReplaceSelected(aStr);
+ Selection aSel = aAddrEdit.GetSelection();
+ aAddrEdit.GrabFocus();
+ aAddrEdit.SetSelection(aSel);
+ return 0;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+IMPL_LINK( SwEnvPage, SenderHdl, Button *, EMPTYARG )
+{
+ const BOOL bEnable = aSenderBox.IsChecked();
+ GetParent()->aEnvItem.bSend = bEnable;
+ aSenderEdit.Enable(bEnable);
+ if ( bEnable )
+ aSenderEdit.GrabFocus();
+ aPreview.Invalidate();
+ return 0;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwEnvPage::InitDatabaseBox()
+{
+ if (pSh->GetNewDBMgr())
+ {
+ aDatabaseLB.Clear();
+#ifdef REPLACE_OFADBMGR
+ Sequence<OUString> aDataNames = SwNewDBMgr::GetExistingDatabaseNames();
+ const OUString* pDataNames = aDataNames.getConstArray();
+ for (long i = 0; i < aDataNames.getLength(); i++)
+ aDatabaseLB.InsertEntry(pDataNames[i]);
+
+ String sDBName = sActDBName.GetToken( 0, DB_DELIM );
+ String sTableName = sActDBName.GetToken( 1, DB_DELIM );
+ aDatabaseLB.SelectEntry(sDBName);
+ if (pSh->GetNewDBMgr()->GetTableNames(&aTableLB, sDBName))
+ {
+ aTableLB.SelectEntry(sTableName);
+ pSh->GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName, sTableName);
+ }
+ else
+ aDBFieldLB.Clear();
+#else
+ SbaObject *pSbaObject = pSh->GetNewDBMgr()->GetSbaObject();
+ if(!pSbaObject)
+ return;
+ String sDBNames = pSbaObject->GetDatabaseNames();
+ sDBNames = SFX_APP()->LocalizeDBName(INI2NATIONAL, sDBNames);
+ USHORT nCount = sDBNames.GetTokenCount();
+
+ for (USHORT i = 0; i < nCount; i++)
+ aDatabaseLB.InsertEntry(sDBNames.GetToken(i));
+ String sDBName = SFX_APP()->LocalizeDBName( INI2NATIONAL,
+ sActDBName.GetToken( 0, DB_DELIM ));
+ aDatabaseLB.SelectEntry(sDBName);
+ if (pSh->GetNewDBMgr()->GetTableNames(&aTableLB, sDBName))
+ {
+ aTableLB.SelectEntry(sActDBName.GetToken(1, DB_DELIM));
+ pSh->GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName);
+ }
+ else
+ aDBFieldLB.Clear();
+#endif
+
+ }
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SfxTabPage* SwEnvPage::Create(Window* pParent, const SfxItemSet& rSet)
+{
+ return new SwEnvPage(pParent, rSet);
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwEnvPage::ActivatePage(const SfxItemSet& rSet)
+{
+ SfxItemSet aSet(rSet);
+ aSet.Put(GetParent()->aEnvItem);
+ Reset(aSet);
+}
+
+// --------------------------------------------------------------------------
+
+
+
+int SwEnvPage::DeactivatePage(SfxItemSet* pSet)
+{
+ FillItem(GetParent()->aEnvItem);
+ FillItemSet(*pSet);
+ return SfxTabPage::LEAVE_PAGE;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwEnvPage::FillItem(SwEnvItem& rItem)
+{
+ rItem.aAddrText = aAddrEdit .GetText();
+ rItem.bSend = aSenderBox .IsChecked();
+ rItem.aSendText = aSenderEdit.GetText();
+}
+
+// --------------------------------------------------------------------------
+
+
+
+BOOL SwEnvPage::FillItemSet(SfxItemSet& rSet)
+{
+ FillItem(GetParent()->aEnvItem);
+ rSet.Put(GetParent()->aEnvItem);
+ return TRUE;
+}
+
+// ----------------------------------------------------------------------------
+
+
+
+void SwEnvPage::Reset(const SfxItemSet& rSet)
+{
+ SwEnvItem aItem = (const SwEnvItem&) rSet.Get(FN_ENVELOP);
+ aAddrEdit .SetText(aItem.aAddrText.ConvertLineEnd());
+ aSenderEdit.SetText(aItem.aSendText.ConvertLineEnd());
+ aSenderBox .Check (aItem.bSend);
+ aSenderBox.GetClickHdl().Call(&aSenderBox);
+}
+
+
+
+// ----------------------------------------------------------------------------
+
+/*
+$Log: not supported by cvs2svn $
+Revision 1.91 2000/09/18 16:05:25 willem.vandorp
+OpenOffice header added.
+
+Revision 1.90 2000/07/18 12:50:08 os
+replace ofadbmgr
+
+Revision 1.89 2000/03/03 15:17:00 os
+StarView remainders removed
+
+Revision 1.88 2000/02/11 14:45:12 hr
+#70473# changes for unicode ( patched by automated patchtool )
+
+Revision 1.87 1999/10/08 10:00:09 jp
+no cast from GetpApp to SfxApp
+
+Revision 1.86 1999/10/05 10:18:49 os
+#67889# some printer problems solved
+
+Revision 1.85 1999/09/28 13:21:24 os
+survive without database
+
+Revision 1.84 1999/09/24 13:53:09 os
+chg: ODbRow/ODbVariant - includes moved
+
+Revision 1.83 1999/08/26 17:36:02 JP
+no cast from GetpApp to SfxApp
+
+
+ Rev 1.82 26 Aug 1999 19:36:02 JP
+ no cast from GetpApp to SfxApp
+
+ Rev 1.81 13 Jul 1999 14:28:34 HR
+ #65293#: include <swwait.hxx> and <view.hxx>
+
+ Rev 1.80 08 Jul 1999 18:25:00 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.79 09 Jun 1999 19:34:42 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+ Rev 1.78 01 Mar 1999 16:21:52 MA
+ #62490# Altlast entfernt (Drucken und Briefumschlaege/Etiketten und Datenbank)
+
+ Rev 1.77 09 Jul 1998 09:52:30 JP
+ EmptyStr benutzen
+
+ Rev 1.76 09 Apr 1998 14:23:46 OM
+ #47097# Undo von Vorlagenaenderungen ermoeglichen
+
+ Rev 1.75 24 Nov 1997 11:52:12 MA
+ includes
+
+ Rev 1.74 03 Nov 1997 13:17:16 MA
+ precomp entfernt
+
+ Rev 1.73 03 Sep 1997 13:59:12 OM
+ #36627# Sinnvolle Fehlermeldungen liefern
+
+ Rev 1.72 02 Sep 1997 09:58:24 OM
+ SDB-Headeranpassung
+
+ Rev 1.71 05 May 1997 11:16:30 OM
+ Hilfetext fuer OK loeschen
+
+ Rev 1.70 24 Apr 1997 11:06:30 OM
+ HelpID fuer Briefumschlag aendern
+
+ Rev 1.69 04 Apr 1997 14:04:52 OM
+ HelpIDs fuer DruckButton
+
+ Rev 1.68 05 Feb 1997 10:19:06 OM
+ FillItemSet in DeactivatePage rufen
+
+ Rev 1.67 04 Dec 1996 13:54:02 OM
+ Kein konstanter AdressDBName mehr
+
+ Rev 1.66 11 Nov 1996 09:44:16 MA
+ ResMgr
+
+ Rev 1.65 07 Oct 1996 09:33:18 MA
+ Umstellung Enable/Disable
+
+ Rev 1.64 25 Sep 1996 14:11:12 OM
+ Neue Datenbanktrenner
+
+ Rev 1.63 06 Aug 1996 16:46:38 OM
+ Neue Segs
+
+ Rev 1.62 06 Aug 1996 16:45:36 OM
+ Datenbankumstellung
+
+ Rev 1.61 26 Jul 1996 20:36:38 MA
+ includes
+
+ Rev 1.60 17 Jul 1996 13:47:04 OM
+ Datenbankumstellung 327
+
+ Rev 1.59 02 Jul 1996 18:47:06 MA
+ Wait-Umstellung 325
+
+ Rev 1.58 31 May 1996 16:01:20 OM
+ Datenbankumstellung
+
+ Rev 1.57 29 May 1996 12:29:28 OM
+ Umstellung auf 320
+
+ Rev 1.56 18 Apr 1996 16:32:16 OM
+ Datenbankumstellung: Basic-Entkopplung
+
+ Rev 1.55 15 Apr 1996 09:59:44 OM
+ #26838# DefWin fuer DatenbankDlg setzen
+
+ Rev 1.54 12 Apr 1996 14:07:50 OM
+ #26838# Richtiges Window-Parent disabled
+
+ Rev 1.53 11 Apr 1996 12:27:16 OM
+ #26838# Mehrfachoeffnung vom Datenbank-Dlg unterbunden
+
+ Rev 1.52 04 Apr 1996 12:09:00 OM
+ patches legalisiert
+
+ Rev 1.51 20 Mar 1996 15:36:34 OM
+ DB-Namensumstellung auf ODBC
+
+*/
+
diff --git a/sw/source/ui/envelp/envprt.cxx b/sw/source/ui/envelp/envprt.cxx
new file mode 100644
index 000000000000..b8a0e1216bf7
--- /dev/null
+++ b/sw/source/ui/envelp/envprt.cxx
@@ -0,0 +1,428 @@
+/*************************************************************************
+ *
+ * $RCSfile: envprt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SV_PRINT_HXX //autogen
+#include <vcl/print.hxx>
+#endif
+#ifndef _SV_PRNSETUP_HXX_ //autogen
+#include <svtools/prnsetup.hxx>
+#endif
+
+#include "swtypes.hxx"
+#include "cmdid.h"
+#include "envprt.hxx"
+#include "envlop.hxx"
+#include "uitool.hxx"
+
+#include "envprt.hrc"
+
+
+
+
+
+SwEnvPrtPage::SwEnvPrtPage(Window* pParent, const SfxItemSet& rSet) :
+
+ SfxTabPage(pParent, SW_RES(TP_ENV_PRT), rSet),
+
+ aAlignBox (this, SW_RES(BOX_ALIGN )),
+ aTopButton (this, SW_RES(BTN_TOP )),
+ aBottomButton(this, SW_RES(BTN_BOTTOM )),
+ aRightText (this, SW_RES(TXT_RIGHT )),
+ aRightField (this, SW_RES(FLD_RIGHT )),
+ aDownText (this, SW_RES(TXT_DOWN )),
+ aDownField (this, SW_RES(FLD_DOWN )),
+ aPrinterInfo (this, SW_RES(TXT_PRINTER)),
+ aNoNameGroup (this, SW_RES(GRP_NONAME )),
+ aPrtSetup (this, SW_RES(BTN_PRTSETUP))
+
+{
+ FreeResource();
+ SetExchangeSupport();
+
+ // Metriken
+ FieldUnit eUnit = ::GetDfltMetric(FALSE);
+ SetMetric(aRightField, eUnit);
+ SetMetric(aDownField , eUnit);
+
+ // Handler installieren
+ aTopButton .SetClickHdl(LINK(this, SwEnvPrtPage, ClickHdl));
+ aBottomButton.SetClickHdl(LINK(this, SwEnvPrtPage, ClickHdl));
+
+ aPrtSetup .SetClickHdl(LINK(this, SwEnvPrtPage, ButtonHdl));
+
+ // Bitmaps
+ aBottomButton.GetClickHdl().Call(&aBottomButton);
+
+ // ToolBox
+ Size aSz = aAlignBox.CalcWindowSizePixel();
+ aAlignBox.SetSizePixel(aSz);
+ aAlignBox.SetPosPixel(Point(aNoNameGroup.GetPosPixel().X() + (aNoNameGroup.GetSizePixel().Width() - aSz.Width()) / 2, aAlignBox.GetPosPixel().Y()));
+ aAlignBox.SetClickHdl(LINK(this, SwEnvPrtPage, AlignHdl));
+
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwEnvPrtPage::~SwEnvPrtPage()
+{
+}
+
+// --------------------------------------------------------------------------
+
+
+
+IMPL_LINK( SwEnvPrtPage, ClickHdl, Button *, EMPTYARG )
+{
+ if (aBottomButton.IsChecked())
+ {
+ // Briefumschlaege von unten
+ aAlignBox.SetItemImage(ITM_HOR_LEFT, Bitmap(SW_RES(BMP_HOR_LEFT_LOWER)));
+ aAlignBox.SetItemImage(ITM_HOR_CNTR, Bitmap(SW_RES(BMP_HOR_CNTR_LOWER)));
+ aAlignBox.SetItemImage(ITM_HOR_RGHT, Bitmap(SW_RES(BMP_HOR_RGHT_LOWER)));
+ aAlignBox.SetItemImage(ITM_VER_LEFT, Bitmap(SW_RES(BMP_VER_LEFT_LOWER)));
+ aAlignBox.SetItemImage(ITM_VER_CNTR, Bitmap(SW_RES(BMP_VER_CNTR_LOWER)));
+ aAlignBox.SetItemImage(ITM_VER_RGHT, Bitmap(SW_RES(BMP_VER_RGHT_LOWER)));
+ }
+ else
+ {
+ // Briefumschlaege von oben
+ aAlignBox.SetItemImage(ITM_HOR_LEFT, Bitmap(SW_RES(BMP_HOR_LEFT_UPPER)));
+ aAlignBox.SetItemImage(ITM_HOR_CNTR, Bitmap(SW_RES(BMP_HOR_CNTR_UPPER)));
+ aAlignBox.SetItemImage(ITM_HOR_RGHT, Bitmap(SW_RES(BMP_HOR_RGHT_UPPER)));
+ aAlignBox.SetItemImage(ITM_VER_LEFT, Bitmap(SW_RES(BMP_VER_LEFT_UPPER)));
+ aAlignBox.SetItemImage(ITM_VER_CNTR, Bitmap(SW_RES(BMP_VER_CNTR_UPPER)));
+ aAlignBox.SetItemImage(ITM_VER_RGHT, Bitmap(SW_RES(BMP_VER_RGHT_UPPER)));
+ }
+ return 0;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+IMPL_LINK( SwEnvPrtPage, ButtonHdl, Button *, pBtn )
+{
+ if (pBtn == &aPrtSetup)
+ {
+ // Druck-Setup aufrufen
+ if (pPrt)
+ {
+ PrinterSetupDialog* pDlg = new PrinterSetupDialog(this );
+ pDlg->SetPrinter(pPrt);
+ pDlg->Execute();
+ delete pDlg;
+ GrabFocus();
+ aPrinterInfo.SetText(pPrt->GetName());
+ }
+ }
+ return 0;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+IMPL_LINK( SwEnvPrtPage, AlignHdl, ToolBox *, EMPTYARG )
+{
+ if (aAlignBox.GetCurItemId())
+ {
+ for (USHORT i = ITM_HOR_LEFT; i <= ITM_VER_RGHT; i++)
+ aAlignBox.CheckItem(i, FALSE);
+ aAlignBox.CheckItem(aAlignBox.GetCurItemId(), TRUE);
+ }
+ else
+ {
+ // GetCurItemId() == 0 ist moeglich!
+ const SwEnvItem& rItem = (const SwEnvItem&) GetItemSet().Get(FN_ENVELOP);
+ aAlignBox.CheckItem((USHORT) rItem.eAlign + ITM_HOR_LEFT, TRUE);
+ }
+ return 0;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SfxTabPage* SwEnvPrtPage::Create(Window* pParent, const SfxItemSet& rSet)
+{
+ return new SwEnvPrtPage(pParent, rSet);
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwEnvPrtPage::ActivatePage(const SfxItemSet& rSet)
+{
+ if (pPrt)
+ aPrinterInfo.SetText(pPrt->GetName());
+}
+
+// --------------------------------------------------------------------------
+
+
+
+int SwEnvPrtPage::DeactivatePage(SfxItemSet* pSet)
+{
+ FillItemSet(*pSet);
+ return SfxTabPage::LEAVE_PAGE;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwEnvPrtPage::FillItem(SwEnvItem& rItem)
+{
+ USHORT nID = 0;
+ for (USHORT i = ITM_HOR_LEFT; i <= ITM_VER_RGHT && !nID; i++)
+ if (aAlignBox.IsItemChecked(i))
+ nID = i;
+
+ rItem.eAlign = (SwEnvAlign) (nID - ITM_HOR_LEFT);
+ rItem.bPrintFromAbove = aTopButton.IsChecked();
+ rItem.lShiftRight = GetFldVal(aRightField);
+ rItem.lShiftDown = GetFldVal(aDownField );
+}
+
+// --------------------------------------------------------------------------
+
+
+
+BOOL SwEnvPrtPage::FillItemSet(SfxItemSet& rSet)
+{
+ FillItem(GetParent()->aEnvItem);
+ rSet.Put(GetParent()->aEnvItem);
+ return TRUE;
+}
+
+// ----------------------------------------------------------------------------
+
+
+
+void SwEnvPrtPage::Reset(const SfxItemSet& rSet)
+{
+// SfxItemSet aSet(rSet);
+// aSet.Put(GetParent()->aEnvItem);
+
+ // Item auslesen
+ const SwEnvItem& rItem = (const SwEnvItem&) rSet.Get(FN_ENVELOP);
+ aAlignBox.CheckItem((USHORT) rItem.eAlign + ITM_HOR_LEFT);
+
+ if (rItem.bPrintFromAbove)
+ aTopButton .Check();
+ else
+ aBottomButton.Check();
+
+ SetFldVal(aRightField, rItem.lShiftRight);
+ SetFldVal(aDownField , rItem.lShiftDown );
+
+ ActivatePage(rSet);
+ ClickHdl(&aTopButton);
+}
+
+
+
+// ----------------------------------------------------------------------------
+/*
+$Log: not supported by cvs2svn $
+Revision 1.43 2000/09/18 16:05:25 willem.vandorp
+OpenOffice header added.
+
+Revision 1.42 2000/02/11 14:45:23 hr
+#70473# changes for unicode ( patched by automated patchtool )
+
+Revision 1.41 1999/10/05 10:18:49 os
+#67889# some printer problems solved
+
+Revision 1.40 1998/09/08 14:52:44 OS
+#56134# Metric fuer Text und HTML getrennt
+
+
+ Rev 1.39 08 Sep 1998 16:52:44 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.38 16 Feb 1998 15:33:18 RG
+ ->DOS-Format
+
+ Rev 1.37 28 Nov 1997 18:18:56 MA
+ includes
+
+ Rev 1.36 24 Nov 1997 11:52:10 MA
+ includes
+
+ Rev 1.35 03 Nov 1997 13:17:14 MA
+ precomp entfernt
+
+ Rev 1.34 01 Oct 1997 10:49:10 TRI
+ PrintDialogumstellung
+
+ Rev 1.33 20 Feb 1997 17:51:40 MA
+ fix: Deactivate ueber Fill
+
+ Rev 1.32 11 Nov 1996 09:44:16 MA
+ ResMgr
+
+ Rev 1.31 29 Oct 1996 17:59:28 HJS
+ includes
+
+ Rev 1.30 26 Jul 1996 20:36:36 MA
+ includes
+
+ Rev 1.29 06 Feb 1996 15:19:00 JP
+ Link Umstellung 305
+
+ Rev 1.28 28 Nov 1995 21:14:58 JP
+ UiSystem-Klasse aufgehoben, in initui/swtype aufgeteilt
+
+ Rev 1.27 27 Nov 1995 19:35:48 OM
+ HasExchangeSupport->303a
+
+ Rev 1.26 24 Nov 1995 16:59:42 OM
+ PCH->PRECOMPILED
+
+ Rev 1.25 13 Nov 1995 13:44:50 MA
+ chg: Link-Cast entfernt
+
+ Rev 1.24 10 Nov 1995 18:23:40 OM
+ Brief-Image richtig initialisiert
+
+ Rev 1.23 08 Nov 1995 13:48:24 OM
+ Change->Set
+
+ Rev 1.22 05 Aug 1995 19:15:40 ER
+ segprag
+
+ Rev 1.21 04 Aug 1995 18:32:44 OM
+ Umstellung Drucktabpage
+
+ Rev 1.20 03 Aug 1995 18:49:36 OM
+ Umstellung Print-TabPage
+
+ Rev 1.19 24 May 1995 18:14:56 ER
+ Segmentierung
+
+ Rev 1.18 24 Mar 1995 20:30:38 PK
+ geht immer weiter
+
+ Rev 1.17 23 Mar 1995 18:33:22 PK
+ geht immer weiter ...
+
+ Rev 1.16 17 Mar 1995 17:10:06 PK
+ geht immer weiter
+
+ Rev 1.15 15 Mar 1995 18:37:42 PK
+ geht immer weiter
+
+ Rev 1.14 06 Mar 1995 00:08:20 PK
+ linkbarer envelp-zustand
+
+ Rev 1.13 04 Mar 1995 22:55:30 PK
+ geht immer weiter
+
+ Rev 1.12 21 Feb 1995 15:39:10 PK
+ erstmal eingecheckt
+
+ Rev 1.11 25 Oct 1994 17:33:28 ER
+ add: PCH
+
+ Rev 1.10 09 Aug 1994 16:12:52 MS
+ Entwarnung
+
+ Rev 1.9 04 Aug 1994 09:38:32 SWG
+ swg32: SED Size to SSize, LSize to Size etc.
+
+ Rev 1.8 19 Jul 1994 15:14:28 PK
+ globale metriken
+
+ Rev 1.7 31 Mar 1994 16:26:36 PK
+ (vor)letzter feinschliff beim druck
+
+ Rev 1.6 23 Mar 1994 12:50:28 PK
+ bugfix in alignhdl()
+
+ Rev 1.5 22 Mar 1994 17:51:02 PK
+ umschlaege vorerst fertig
+
+ Rev 1.4 22 Mar 1994 09:41:34 SWG
+ fehlerhafte FUNCDEFS gerichtet
+
+ Rev 1.3 21 Mar 1994 19:02:56 PK
+ weiter
+
+ Rev 1.2 09 Mar 1994 19:33:48 PK
+ ->update
+
+ Rev 1.1 08 Mar 1994 19:33:04 PK
+
+
+ Rev 1.0 08 Mar 1994 12:22:24 PK
+
+*/
+
diff --git a/sw/source/ui/envelp/envprt.hrc b/sw/source/ui/envelp/envprt.hrc
new file mode 100644
index 000000000000..bf435c393750
--- /dev/null
+++ b/sw/source/ui/envelp/envprt.hrc
@@ -0,0 +1,114 @@
+/*************************************************************************
+ *
+ * $RCSfile: envprt.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _ENVPRT_HRC
+#define _ENVPRT_HRC
+
+// #include *****************************************************************
+
+#include "envelp.hrc"
+
+// Lokale Resourcen *********************************************************
+
+#define BOX_ALIGN 1
+#define BTN_TOP 7
+#define BTN_BOTTOM 8
+#define TXT_RIGHT 9
+#define FLD_RIGHT 10
+#define TXT_DOWN 11
+#define FLD_DOWN 12
+#define TXT_PRINTER 13
+#define GRP_NONAME 14
+#define BTN_PRTSETUP 15
+
+// Globale Resourcen ********************************************************
+
+#define BMP_HOR_LEFT_LOWER (RC_ENVPRT_BEGIN )
+#define BMP_HOR_LEFT_UPPER (RC_ENVPRT_BEGIN + 1)
+#define BMP_HOR_CNTR_LOWER (RC_ENVPRT_BEGIN + 2)
+#define BMP_HOR_CNTR_UPPER (RC_ENVPRT_BEGIN + 3)
+#define BMP_HOR_RGHT_LOWER (RC_ENVPRT_BEGIN + 4)
+#define BMP_HOR_RGHT_UPPER (RC_ENVPRT_BEGIN + 5)
+
+#define BMP_VER_LEFT_LOWER (RC_ENVPRT_BEGIN + 6)
+#define BMP_VER_LEFT_UPPER (RC_ENVPRT_BEGIN + 7)
+#define BMP_VER_CNTR_LOWER (RC_ENVPRT_BEGIN + 8)
+#define BMP_VER_CNTR_UPPER (RC_ENVPRT_BEGIN + 9)
+#define BMP_VER_RGHT_LOWER (RC_ENVPRT_BEGIN + 10)
+#define BMP_VER_RGHT_UPPER (RC_ENVPRT_BEGIN + 11)
+
+#define ITM_HOR_LEFT (RC_ENVPRT_BEGIN + 12)
+#define ITM_HOR_CNTR (RC_ENVPRT_BEGIN + 13)
+#define ITM_HOR_RGHT (RC_ENVPRT_BEGIN + 14)
+#define ITM_VER_LEFT (RC_ENVPRT_BEGIN + 15)
+#define ITM_VER_CNTR (RC_ENVPRT_BEGIN + 16)
+#define ITM_VER_RGHT (RC_ENVPRT_BEGIN + 17)
+
+// Ueberlaufpruefung ********************************************************
+
+#define ENVPRT_ACT_END BMP_VER_RGHT_UPPER
+
+#if ENVPRT_ACT_END > RC_ENVPRT_END
+#error Resource-Ueberlauf in #file, #line
+#endif
+
+#endif
+
diff --git a/sw/source/ui/envelp/envprt.hxx b/sw/source/ui/envelp/envprt.hxx
new file mode 100644
index 000000000000..4eccbe5d1e90
--- /dev/null
+++ b/sw/source/ui/envelp/envprt.hxx
@@ -0,0 +1,134 @@
+/*************************************************************************
+ *
+ * $RCSfile: envprt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _ENVPRT_HXX
+#define _ENVPRT_HXX
+
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+#ifndef _SV_TOOLBOX_HXX //autogen
+#include <vcl/toolbox.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 _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+
+
+
+#include "envimg.hxx"
+
+class SwEnvDlg;
+
+// class SwEnvPrtPage ---------------------------------------------------------
+
+class SwEnvPrtPage : public SfxTabPage
+{
+ ToolBox aAlignBox;
+ RadioButton aTopButton;
+ RadioButton aBottomButton;
+ FixedText aRightText;
+ MetricField aRightField;
+ FixedText aDownText;
+ MetricField aDownField;
+ FixedInfo aPrinterInfo;
+ GroupBox aNoNameGroup;
+ PushButton aPrtSetup;
+
+ Printer* pPrt;
+
+ SwEnvPrtPage(Window* pParent, const SfxItemSet& rSet);
+ ~SwEnvPrtPage();
+
+ DECL_LINK( ClickHdl, Button * );
+ DECL_LINK( AlignHdl, ToolBox * );
+ DECL_LINK( ButtonHdl, Button * );
+
+ SwEnvDlg* GetParent() {return (SwEnvDlg*) SfxTabPage::GetParent()->GetParent();}
+
+public:
+
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rSet);
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet* pSet = 0);
+ void FillItem(SwEnvItem& rItem);
+ virtual BOOL FillItemSet(SfxItemSet& rSet);
+ virtual void Reset(const SfxItemSet& rSet);
+
+ inline void SetPrt(Printer* pPrinter) { pPrt = pPrinter; }
+};
+
+#endif
+
diff --git a/sw/source/ui/envelp/envprt.src b/sw/source/ui/envelp/envprt.src
new file mode 100644
index 000000000000..53e9979002f2
--- /dev/null
+++ b/sw/source/ui/envelp/envprt.src
@@ -0,0 +1,372 @@
+/*************************************************************************
+ *
+ * $RCSfile: envprt.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 *****************************************************************
+
+ // #include ****************************************************************
+#include "envprt.hrc"
+#include "helpid.h"
+ // TP_ENV_PRT ---------------------------------------------------------------
+TabPage TP_ENV_PRT
+{
+ HelpID = HID_ENV_PRT ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ ToolBox BOX_ALIGN
+ {
+ Pos = MAP_APPFONT ( 35 , 14 ) ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = ITM_HOR_LEFT ;
+ HelpID = ITM_HOR_LEFT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = ITM_HOR_CNTR ;
+ HelpID = ITM_HOR_CNTR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = ITM_HOR_RGHT ;
+ HelpID = ITM_HOR_RGHT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = ITM_VER_LEFT ;
+ HelpID = ITM_VER_LEFT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = ITM_VER_CNTR ;
+ HelpID = ITM_VER_CNTR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = ITM_VER_RGHT ;
+ HelpID = ITM_VER_RGHT ;
+ };
+ };
+ };
+ RadioButton BTN_TOP
+ {
+ Pos = MAP_APPFONT ( 12 , 39 ) ;
+ Size = MAP_APPFONT ( 166 , 10 ) ;
+ Text = "Von ~oben bedrucken" ;
+ Text [ ENGLISH ] = "Print upper side" ;
+ Text [ NORWEGIAN ] = "Print upper side" ;
+ Text [ DANISH ] = "Forsiden opad" ;
+ Text [ ENGLISH_US ] = "~Print from top" ;
+ Text [ SPANISH ] = "Imprimir r~everso" ;
+ Text [ FINNISH ] = "Tulosta ylõpuoli" ;
+ Text [ FRENCH ] = "Imprimer du ~haut" ;
+ Text [ ITALIAN ] = "Stampa da sopra" ;
+ Text [ DUTCH ] = "B~ovenkant bedrukken" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Imprimir parte superior" ;
+ Text [ SWEDISH ] = "Skriv ut u~ppifrån" ;
+ Text [ PORTUGUESE ] = "Imprimir a partir de cima" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Check = TRUE ;
+ Text[ chinese_simplified ] = "´ÓÉÏ·½¿ªÊ¼´òÓ¡(~T)";
+ Text[ russian ] = "Ïå÷àòàòü ñâåðõó";
+ Text[ polish ] = "Drukuj od góry";
+ Text[ japanese ] = "ã‚©‚çˆóü(~T)";
+ Text[ chinese_traditional ] = "±q¤W¤è¶}©l¦C¦L(~T)";
+ Text[ arabic ] = "ÇáØÈÇÚÉ ãä ÃÚáì";
+ Text[ greek ] = "Åêôýðùóç áðü ðÜíù";
+ Text[ korean ] = "À§·ÎºÎÅÍ Àμâ(~P)";
+ Text[ turkish ] = "Üstten yazdýr";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_BOTTOM
+ {
+ Pos = MAP_APPFONT ( 12 , 52 ) ;
+ Size = MAP_APPFONT ( 166 , 10 ) ;
+ Text = "Von ~unten bedrucken" ;
+ Text [ ENGLISH ] = "Print lower side" ;
+ Text [ NORWEGIAN ] = "Print lower side" ;
+ Text [ DANISH ] = "Forsiden nedad" ;
+ Text [ ENGLISH_US ] = "Print from ~bottom" ;
+ Text [ SPANISH ] = "Imprimir ~anverso" ;
+ Text [ FINNISH ] = "Tulosta alapuoli" ;
+ Text [ FRENCH ] = "Imprimer du ~bas" ;
+ Text [ ITALIAN ] = "Stampa da sotto" ;
+ Text [ DUTCH ] = "~Onderkant bedrukken" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Imprimir parte inferior" ;
+ Text [ SWEDISH ] = "Skriv ~ut nedifrån" ;
+ Text [ PORTUGUESE ] = "Imprimir a partir de baixo" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "´ÓÏ·½¿ªÊ¼´òÓ¡(~B)";
+ Text[ russian ] = "Ïå÷àòàòü ñíèçó";
+ Text[ polish ] = "Drukuj od do³u";
+ Text[ japanese ] = "‰º‚©‚çˆóü(~B)";
+ Text[ chinese_traditional ] = "±q¤U¤è¶}©l¦C¦L(~B)";
+ Text[ arabic ] = "ÇáØÈÇÚÉ ãä ÃÓÝá";
+ Text[ greek ] = "Åêôýðùóç áðü êÜôù";
+ Text[ korean ] = "¾Æ·¡·ÎºÎÅÍ Àμâ(~B)";
+ Text[ turkish ] = "Alttan yazdýr";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText TXT_RIGHT
+ {
+ Pos = MAP_APPFONT ( 12 , 68 ) ;
+ Size = MAP_APPFONT ( 50 , 8 ) ;
+ Text = "Nach ~rechts" ;
+ Text [ ENGLISH ] = "Shift right" ;
+ Text [ NORWEGIAN ] = "Shift right" ;
+ Text [ DANISH ] = "Mod højre" ;
+ Text [ ENGLISH_US ] = "~Shift right" ;
+ Text [ SPANISH ] = "Hacia la ~derecha" ;
+ Text [ FINNISH ] = "Siirrõ oikealle" ;
+ Text [ FRENCH ] = "A ~droite" ;
+ Text [ ITALIAN ] = "Sposta a destra" ;
+ Text [ DUTCH ] = "Naar re~chts" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Trocar Ó direita" ;
+ Text [ SWEDISH ] = "Åt höger" ;
+ Text [ PORTUGUESE ] = "À direita" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÓÒ(~S)";
+ Text[ russian ] = "Âïðàâî";
+ Text[ polish ] = "Na prawo";
+ Text[ japanese ] = "‰E‚É(~S)";
+ Text[ chinese_traditional ] = "¦V¥k(~S)";
+ Text[ arabic ] = "Åáì Çáíãíä";
+ Text[ greek ] = "Ðñïò ôá äåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊÀ¸·Î ¹Ð±â(~S)";
+ Text[ turkish ] = "S~aða";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_RIGHT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 78 , 66 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 10000 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 0 ;
+ Last = 10000 ;
+ SpinSize = 10 ;
+ };
+ FixedText TXT_DOWN
+ {
+ Pos = MAP_APPFONT ( 12 , 83 ) ;
+ Size = MAP_APPFONT ( 50 , 8 ) ;
+ Text = "~Nach unten" ;
+ Text [ ENGLISH ] = "Shift down" ;
+ Text [ NORWEGIAN ] = "Shift down" ;
+ Text [ DANISH ] = "Nedad" ;
+ Text [ ENGLISH_US ] = "Shift ~down" ;
+ Text [ SPANISH ] = "Hacia a~bajo" ;
+ Text [ FINNISH ] = "Siirrõ alas" ;
+ Text [ FRENCH ] = "Vers le ~bas" ;
+ Text [ ITALIAN ] = "Sposta in basso" ;
+ Text [ DUTCH ] = "~Naar beneden" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Trocar abaixo" ;
+ Text [ SWEDISH ] = "~Nedåt" ;
+ Text [ PORTUGUESE ] = "Para baixo" ;
+ Left = TRUE ;
+ 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 ] = "¾Æ·¡·Î ¹Ð±â(~D)";
+ Text[ turkish ] = "~Aþaðý";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_DOWN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 78 , 81 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 10000 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 0 ;
+ Last = 10000 ;
+ SpinSize = 10 ;
+ };
+ FixedText TXT_PRINTER
+ {
+ Pos = MAP_APPFONT ( 12 , 111 ) ;
+ Size = MAP_APPFONT ( 183 , 10 ) ;
+ Text = "- Kein Drucker installiert -" ;
+ Text [ ENGLISH ] = "- No printer installed -" ;
+ Text [ NORWEGIAN ] = "- No printer installed -" ;
+ Text [ DANISH ] = "- Ingen printer installeret -" ;
+ Text [ ENGLISH_US ] = "- No printer installed -" ;
+ Text [ SPANISH ] = "- No hay instalada ninguna impresora -" ;
+ Text [ FINNISH ] = "- Kirjoitinta ei asennettu -" ;
+ Text [ FRENCH ] = "- Aucune imprimante installée -" ;
+ Text [ ITALIAN ] = "- Nessuna stampante installata -." ;
+ Text [ DUTCH ] = "- Geen printer geïnstalleerd -" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "- Nenhuma impressora instalada -" ;
+ Text [ SWEDISH ] = "- Ingen skrivare installerad -" ;
+ Text [ PORTUGUESE ] = "- Nenhuma impressora instalada -" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "- ûÓа²×°´òÓ¡»ú -";
+ Text[ russian ] = "- Ïðèíòåð íå èíñòàëëèðîâàí -";
+ Text[ polish ] = "- Drukarka nie jest zainstalowana -";
+ Text[ japanese ] = "- ÌßØÝÀ‚ª²Ý½Ä°Ù‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ -";
+ Text[ chinese_traditional ] = "- ¨S¦³¦w¸Ë¦Lªí¾÷ -";
+ Text[ arabic ] = "- áÇ íæÌÏ ØÇÈÚÉ ãËÈÊÉ -";
+ Text[ greek ] = "- Äåí Ý÷åé åãêáôáóôáèåß åêôõðùôÞò -";
+ Text[ korean ] = "- ÇÁ¸°ÅÍ°¡ ¼³Ä¡µÇÁö ¾Ê¾Ò½À´Ï´Ù. -";
+ Text[ turkish ] = "- Kurulu yazýcý yok -";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GRP_NONAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 125 ) ;
+ Group = TRUE ;
+ };
+ PushButton BTN_PRTSETUP
+ {
+ Pos = MAP_APPFONT ( 201 , 109 ) ;
+ Size = MAP_APPFONT ( 48 , 14 ) ;
+ Text = "~Einrichten..." ;
+ Text [ ENGLISH ] = "Setup..." ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Setup..." ;
+ Text [ italian ] = "Imposta..." ;
+ Text [ spanish ] = "Configurar..." ;
+ Text [ french ] = "~Paramétrer..." ;
+ Text [ dutch ] = "~Configureren..." ;
+ Text [ swedish ] = "Inrä~tta..." ;
+ Text [ danish ] = "Indstil..." ;
+ Text [ portuguese_brazilian ] = "Einrichten..." ;
+ Text [ portuguese ] = "~Configurar..." ;
+ Text[ chinese_simplified ] = "ÉèÖÃ(~S)...";
+ Text[ russian ] = "Óñòàíîâèòü...";
+ Text[ polish ] = "Ustaw...";
+ Text[ japanese ] = "Ý’è...";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "³]¸m...";
+ Text[ arabic ] = "...ÅÚÏÇÏ";
+ Text[ greek ] = "~ÅãêáôÜóôáóç...";
+ Text[ korean ] = "¼³Á¤...";
+ Text[ turkish ] = "Ayarlar...";
+ };
+};
+ // Bitmaps ******************************************************************
+Bitmap BMP_HOR_LEFT_LOWER
+{
+ File = "envhl_l.bmp" ;
+};
+Bitmap BMP_HOR_LEFT_UPPER
+{
+ File = "envhl_u.bmp" ;
+};
+Bitmap BMP_HOR_CNTR_LOWER
+{
+ File = "envhc_l.bmp" ;
+};
+Bitmap BMP_HOR_CNTR_UPPER
+{
+ File = "envhc_u.bmp" ;
+};
+Bitmap BMP_HOR_RGHT_LOWER
+{
+ File = "envhr_l.bmp" ;
+};
+Bitmap BMP_HOR_RGHT_UPPER
+{
+ File = "envhr_u.bmp" ;
+};
+Bitmap BMP_VER_LEFT_LOWER
+{
+ File = "envvl_l.bmp" ;
+};
+Bitmap BMP_VER_LEFT_UPPER
+{
+ File = "envvl_u.bmp" ;
+};
+Bitmap BMP_VER_CNTR_LOWER
+{
+ File = "envvc_l.bmp" ;
+};
+Bitmap BMP_VER_CNTR_UPPER
+{
+ File = "envvc_u.bmp" ;
+};
+Bitmap BMP_VER_RGHT_LOWER
+{
+ File = "envvr_l.bmp" ;
+};
+Bitmap BMP_VER_RGHT_UPPER
+{
+ File = "envvr_u.bmp" ;
+};
diff --git a/sw/source/ui/envelp/label.hrc b/sw/source/ui/envelp/label.hrc
new file mode 100644
index 000000000000..6c1751a70225
--- /dev/null
+++ b/sw/source/ui/envelp/label.hrc
@@ -0,0 +1,158 @@
+/*************************************************************************
+ *
+ * $RCSfile: label.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _LABEL_HRC
+#define _LABEL_HRC
+
+// #include *****************************************************************
+
+#include "envelp.hrc"
+
+// Lokale Resourcen *********************************************************
+
+#define TXT_WRITING 1
+#define BOX_ADDR 2
+#define EDT_WRITING 3
+#define FT_DATABASE 4
+#define LB_DATABASE 5
+#define FT_TABLE 6
+#define LB_TABLE 7
+#define GRP_WRITING 8
+#define BTN_CONT 9
+#define BTN_SHEET 10
+#define TXT_MAKE 11
+#define BOX_MAKE 12
+#define TXT_TYPE 13
+#define BOX_TYPE 14
+#define INF_FORMAT 15
+#define GRP_FORMAT 16
+#define FT_DBFIELD 17
+#define LB_DBFIELD 18
+#define BTN_INSERT 19
+#define BTN_SYNC 20
+
+#define RB_FROM_AUTO_TEXT 1
+#define RB_FROM_EDIT 2
+#define LB_AUTO_TEXT 3
+#define FT_AUTO_TEXT_GROUP 4
+#define LB_AUTO_TEXT_GROUP 5
+#define ED_TEXT 6
+#define GB_CONTENT 7
+#define WIN_EXAMPLE 8
+#define GB_EXAMPLE 9
+#define ST_VISCARD_GROUP 10
+
+#define GB_DATA 30
+#define FT_NAME 31
+#define ED_FIRSTNAME 32
+#define ED_NAME 33
+#define ED_SHORTCUT 34
+#define FT_STREET 35
+#define ED_STREET 36
+#define FT_ZIPCITY 37
+#define ED_ZIP 38
+#define ED_CITY 39
+#define FT_COUNTRYSTATE 40
+#define ED_COUNTRY 41
+#define FT_TITLEPROF 42
+#define ED_PROFESSION 43
+#define ED_TITLE 44
+#define FT_PHONE 45
+#define ED_PHONE 46
+#define ED_MOBILE 47
+#define FT_FAX 48
+#define ED_FAX 49
+#define FT_WWWMAIL 50
+#define ED_WWW 51
+#define ED_MAIL 52
+#define ED_STATE 53
+#define FT_COMP 54
+#define ED_COMP 55
+#define FT_COMP_EXT 56
+#define ED_COMP_EXT 57
+#define FT_SLOGAN 58
+#define ED_SLOGAN 59
+#define FT_POSITION 60
+#define ED_POSITION 61
+
+#define ST_BUSINESSCARDDLG 62
+#define ST_FIRSTPAGE_LAB 63
+#define ST_FIRSTPAGE_BC 64
+
+#define FT_NAME_2 65
+#define ED_FIRSTNAME_2 66
+#define ED_NAME_2 67
+#define ED_SHORTCUT_2 68
+
+// Globale Resourcen ********************************************************
+#define STR_DOC_TITLE (RC_LABEL_BEGIN)
+#define STR_CUSTOM (RC_LABEL_BEGIN + 1)
+
+// Ueberlaufpruefung ********************************************************
+
+#define LABEL_ACT_END STR_CUSTOM
+
+#if LABEL_ACT_END > RC_LABEL_END
+#error Resource-Ueberlauf in #file, #line
+#endif
+
+#endif
+
diff --git a/sw/source/ui/envelp/label.src b/sw/source/ui/envelp/label.src
new file mode 100644
index 000000000000..1e21c908a2d8
--- /dev/null
+++ b/sw/source/ui/envelp/label.src
@@ -0,0 +1,1606 @@
+/*************************************************************************
+ *
+ * $RCSfile: label.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ******************************************************************
+
+ // #include *****************************************************************
+#include "label.hrc"
+#include "globals.hrc"
+#include "helpid.h"
+// ----- defined strings -----------------------------------------------------
+#define LABEL_STRING \
+ Text = "Etiketten" ; \
+ Text [ ENGLISH ] = "Labels" ; \
+ Text [ norwegian ] = "Etiketter" ; \
+ Text [ italian ] = "Etichette" ; \
+ Text [ portuguese_brazilian ] = "Etiquetas" ; \
+ Text [ portuguese ] = "Etiquetas" ; \
+ Text [ finnish ] = "Tarrat" ; \
+ Text [ danish ] = "Etiketter" ; \
+ Text [ french ] = "Étiquettes" ; \
+ Text [ swedish ] = "Etiketter" ; \
+ Text [ dutch ] = "Etiketten" ; \
+ Text [ spanish ] = "Etiquetas" ; \
+ Text [ english_us ] = "Labels" ; \
+ Text[ chinese_simplified ] = "±êÇ©"; \
+ Text[ russian ] = "Íàêëåéêè"; \
+ Text[ polish ] = "Etykiety"; \
+ Text[ japanese ] = "×ÍÞÙ"; \
+ Text[ chinese_traditional ] = "¼ÐÅÒ"; \
+ Text[ arabic ] = "ÈØÇÞÇÊ ÚäæäÉ"; \
+ Text[ greek ] = "ÅôéêÝôåò"; \
+ Text[ korean ] = "¶óº§"; \
+ Text[ turkish ] = "Etiket";
+
+ #define BUSINESS_CARD_STRING \
+ Text = "Visitenkarten" ; \
+ Text [ ENGLISH ] = "Business cards" ; \
+ Text[ english_us ] = "Business cards"; \
+ Text[ portuguese ] = "Cartões de visita"; \
+ Text[ russian ] = "Âèçèòíûå êàðòî÷êè"; \
+ Text[ greek ] = "Visiting cards"; \
+ Text[ dutch ] = "Visitekaartjes"; \
+ Text[ french ] = "Cartes de visite"; \
+ Text[ spanish ] = "Tarjetas de visita"; \
+ Text[ italian ] = "Biglietti da visita"; \
+ Text[ danish ] = "Visitkort"; \
+ Text[ swedish ] = "Visitkort"; \
+ Text[ polish ] = "Wizytówki"; \
+ Text[ portuguese_brazilian ] = "Visiting cards"; \
+ Text[ japanese ] = "–¼Žh"; \
+ Text[ korean ] = "Visiting cards"; \
+ Text[ chinese_simplified ] = "ÃûƬ"; \
+ Text[ chinese_traditional ] = "¦W¤ù"; \
+ Text[ arabic ] = "ÈØÇÞÇÊ ÇáÒíÇÑÉ";
+
+ // DLG_LAB ------------------------------------------------------------------
+TabDialog DLG_LAB
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Moveable = TRUE ;
+ LABEL_STRING
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+/* PageItem
+ {
+ Identifier = TP_LAB_LAB ;
+ Text = "Etiketten" ;
+ Text [ ENGLISH ] = "Labels" ;
+ Text [ norwegian ] = "Etiketter" ;
+ Text [ italian ] = "Etichette" ;
+ Text [ portuguese_brazilian ] = "Etiquetas" ;
+ Text [ portuguese ] = "Etiquetas" ;
+ Text [ finnish ] = "Tarrat" ;
+ Text [ danish ] = "Etiketter" ;
+ Text [ french ] = "Etiquettes" ;
+ Text [ swedish ] = "Etiketter" ;
+ Text [ dutch ] = "Etiketten" ;
+ Text [ spanish ] = "Etiquetas" ;
+ Text [ english_us ] = "Labels" ;
+ PageResID = TP_LAB_LAB ;
+ Text[ chinese_simplified ] = "±êÇ©";
+ Text[ russian ] = "Íàêëåéêè";
+ Text[ polish ] = "Etykiety";
+ Text[ japanese ] = "×ÍÞÙ";
+ Text[ chinese_traditional ] = "¼ÐÅÒ";
+ Text[ arabic ] = "ÈØÇÞÇÊ ÚäæäÉ";
+ Text[ greek ] = "ÅôéêÝôåò";
+ Text[ korean ] = "Labels";
+ };*/
+ PageItem
+ {
+ Identifier = TP_VISITING_CARDS;
+ PageResID = TP_VISITING_CARDS;
+ BUSINESS_CARD_STRING
+ };
+ PageItem
+ {
+ Identifier = TP_PRIVATE_DATA;
+ PageResID = TP_PRIVATE_DATA;
+ Text = "Privat" ;
+ Text [ ENGLISH ] = "Private" ;
+ Text[ english_us ] = "Private";
+ Text[ portuguese ] = "Pessoal";
+ Text[ russian ] = "Ëè÷íûå";
+ Text[ greek ] = "Ïéêßá";
+ Text[ dutch ] = "Privé";
+ Text[ french ] = "Privé";
+ Text[ spanish ] = "Privado";
+ Text[ italian ] = "Privato";
+ Text[ danish ] = "Privat";
+ Text[ swedish ] = "Privat";
+ Text[ polish ] = "Prywatne";
+ Text[ portuguese_brazilian ] = "Private";
+ Text[ japanese ] = "ÌßײÍÞ°Ä";
+ Text[ korean ] = "°³ÀÎ";
+ Text[ chinese_simplified ] = "˽ÈË";
+ Text[ chinese_traditional ] = "¨p¤H";
+ Text[ arabic ] = "ÔÎÕí";
+ Text[ turkish ] = "Özel";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_BUSINESS_DATA;
+ PageResID = TP_BUSINESS_DATA;
+ Text = "Geschäft" ;
+ Text [ ENGLISH ] = "Business" ;
+ Text[ english_us ] = "Business";
+ Text[ portuguese ] = "Emprego";
+ Text[ russian ] = "Ñëóæåáíûå";
+ Text[ greek ] = "Åñãáóßá";
+ Text[ dutch ] = "Zaak";
+ Text[ french ] = "Bureau";
+ Text[ spanish ] = "Trabajo";
+ Text[ italian ] = "Lavoro";
+ Text[ danish ] = "Arbejdsrelateret";
+ Text[ swedish ] = "Affärsmässig";
+ Text[ polish ] = "Biznes";
+ Text[ portuguese_brazilian ] = "Business";
+ Text[ japanese ] = "ŽÐ—p";
+ Text[ korean ] = "¾÷¹«";
+ Text[ chinese_simplified ] = "ÉÌÎñ";
+ Text[ chinese_traditional ] = "°Ó°È";
+ Text[ arabic ] = "Úãá";
+ Text[ turkish ] = "Ýþ";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_LAB_FMT ;
+ Text = "Format" ;
+ Text [ ENGLISH ] = "Format" ;
+ PageResID = TP_LAB_FMT ;
+ Text [ english_us ] = "Format" ;
+ Text [ italian ] = "Formato" ;
+ Text [ spanish ] = "Formato" ;
+ Text [ french ] = "Format" ;
+ Text [ dutch ] = "Grootte" ;
+ Text [ swedish ] = "Format" ;
+ Text [ danish ] = "Format" ;
+ Text [ portuguese_brazilian ] = "Format" ;
+ Text [ portuguese ] = "Formato" ;
+ Text[ chinese_simplified ] = "¸ñʽ";
+ Text[ russian ] = "Ôîðìàò";
+ Text[ polish ] = "Format";
+ Text[ japanese ] = "‘Ž®";
+ Text[ chinese_traditional ] = "®æ¦¡";
+ Text[ arabic ] = "ÇáÊäÓíÞ";
+ Text[ greek ] = "ÌïñöÞ";
+ Text[ korean ] = "¼­½Ä";
+ Text[ turkish ] = "Format";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_LAB_PRT ;
+ Text = "Zusätze" ;
+ Text [ ENGLISH ] = "Options" ;
+ PageResID = TP_LAB_PRT ;
+ Text [ english_us ] = "Options" ;
+ Text [ portuguese_brazilian ] = "Drucker" ;
+ Text [ swedish ] = "Tillägg" ;
+ Text [ danish ] = "Flere" ;
+ Text [ italian ] = "Extra" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ french ] = "Impression" ;
+ Text [ dutch ] = "Overige" ;
+ Text [ portuguese ] = "Opções" ;
+ Text[ chinese_simplified ] = "ÆäËû";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Dodatki";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¨ä¥L";
+ Text[ arabic ] = "ÎíÇÑÇÊ";
+ Text[ greek ] = "Ðñüóèåôá";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Seçenekler";
+ };
+ };
+ };
+ String ST_BUSINESSCARDDLG
+ {
+ BUSINESS_CARD_STRING
+ };
+ String ST_FIRSTPAGE_LAB
+ {
+ LABEL_STRING
+ };
+ String ST_FIRSTPAGE_BC
+ {
+ Text = "Medium" ;
+ Text [ ENGLISH ] = "Media" ;
+ Text[ english_us ] = "Medium";
+ Text[ portuguese ] = "Media";
+ Text[ russian ] = "Ñðåäñòâî";
+ Text[ greek ] = "ÌÝóïí";
+ Text[ dutch ] = "Medium";
+ Text[ french ] = "Média";
+ Text[ spanish ] = "Tipo";
+ Text[ italian ] = "Impostazioni";
+ Text[ danish ] = "Medium";
+ Text[ swedish ] = "Medium";
+ Text[ polish ] = "Noœnik danych";
+ Text[ portuguese_brazilian ] = "Media";
+ Text[ japanese ] = "”}‘Ì";
+ Text[ korean ] = "Áß°£";
+ Text[ chinese_simplified ] = "Ö½ÕÅ";
+ Text[ chinese_traditional ] = "¯È±i";
+ Text[ arabic ] = "æÓÇÆØ";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Kaðýt";
+ };
+};
+ // TP_LAB_LAB ---------------------------------------------------------------
+TabPage TP_LAB_LAB
+{
+ HelpID = HID_LAB_LAB ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ FixedText TXT_WRITING
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 60 , 8 ) ;
+ Text = "~Aufschrift" ;
+ Text [ English ] = "Writing" ;
+ Text [ norwegian ] = "Writing" ;
+ Text [ italian ] = "~Testo etichetta" ;
+ Text [ portuguese_brazilian ] = "Gravar" ;
+ Text [ portuguese ] = "~Inscrição" ;
+ Text [ finnish ] = "Otsikko" ;
+ Text [ danish ] = "Etikettekst" ;
+ Text [ french ] = "~Libellé" ;
+ Text [ swedish ] = "~Påskrift" ;
+ Text [ dutch ] = "~Tekst" ;
+ Text [ spanish ] = "Te~xto" ;
+ Text [ english_us ] = "Label text" ;
+ Group = TRUE ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÊäÈëÎÄ×Ö";
+ Text[ russian ] = "Ïîäïèñü";
+ Text[ polish ] = "Oznaczenie";
+ Text[ japanese ] = "ˆ¶æ";
+ Text[ chinese_traditional ] = "¿é¤J¤å¦r";
+ Text[ arabic ] = "äÕ ÇáÈØÇÞÉ";
+ Text[ greek ] = "ÅðéãñáöÞ";
+ Text[ korean ] = "¶óº§ ÅؽºÆ®";
+ Text[ turkish ] = "Etiket metni";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BOX_ADDR
+ {
+ Pos = MAP_APPFONT ( 82 , 13 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "Adre~sse" ;
+ Text [ English ] = "Address" ;
+ Text [ norwegian ] = "Adresse" ;
+ Text [ italian ] = "Indirizzo" ;
+ Text [ portuguese_brazilian ] = "Endereço" ;
+ Text [ portuguese ] = "Endereço" ;
+ Text [ finnish ] = "Valitse osoite" ;
+ Text [ danish ] = "Adresse" ;
+ Text [ french ] = "Adre~sse" ;
+ Text [ swedish ] = "Adre~ss" ;
+ Text [ dutch ] = "Adre~s" ;
+ Text [ spanish ] = "~Dirección" ;
+ Text [ english_us ] = "Address" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "µØÖ·";
+ Text[ russian ] = "Àäðåñ";
+ Text[ polish ] = "Adres";
+ Text[ japanese ] = "ZŠ";
+ Text[ chinese_traditional ] = "¦a§}";
+ Text[ arabic ] = "ÇáÚäæÇä";
+ Text[ greek ] = "Äéåýèõíóç";
+ Text[ korean ] = "ÁÖ¼Ò";
+ Text[ turkish ] = "Adres";
+ Text[ language_user1 ] = " ";
+ };
+ MultiLineEdit EDT_WRITING
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 25 ) ;
+ Size = MAP_APPFONT ( 110 , 44 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ HScroll = TRUE ;
+ VScroll = TRUE ;
+ IgnoreTab = TRUE;
+ };
+ FixedText FT_DATABASE
+ {
+ Pos = MAP_APPFONT ( 128 , 14 ) ;
+ Size = MAP_APPFONT ( 57 , 10 ) ;
+ Text = "~Datenbank" ;
+ Text [ English ] = "Database" ;
+ Text [ norwegian ] = "Database" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Base de Dados" ;
+ Text [ portuguese ] = "~Base de dados" ;
+ Text [ finnish ] = "Tietokanta" ;
+ 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 ] = "Êý¾Ý¿â";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "¸ê®Æ®w";
+ Text[ arabic ] = "ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "ÂÜóç ~äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DATABASE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 128 , 25 ) ;
+ Size = MAP_APPFONT ( 57 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_TABLE
+ {
+ Pos = MAP_APPFONT ( 191 , 14 ) ;
+ Size = MAP_APPFONT ( 57 , 10 ) ;
+ Text = "Tabe~lle" ;
+ Text [ ENGLISH ] = "Table" ;
+ Text [ english_us ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ spanish ] = "Tabla" ;
+ Text [ french ] = "Tab~le" ;
+ Text [ dutch ] = "~Tabel" ;
+ Text [ swedish ] = "Tabe~ll" ;
+ Text [ danish ] = "Tabel" ;
+ Text [ portuguese_brazilian ] = "Tabelle" ;
+ Text [ portuguese ] = "~Tabela" ;
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "Tabela";
+ Text[ japanese ] = "ðÌÞÙ";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÇáÌÏæá";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "Ç¥";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Tablo";
+ };
+ ListBox LB_TABLE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 191 , 25 ) ;
+ Size = MAP_APPFONT ( 57 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ImageButton BTN_INSERT
+ {
+ Pos = MAP_APPFONT ( 128 , 56 ) ;
+ Size = MAP_APPFONT ( 18 , 12 ) ;
+ SYMBOL = IMAGEBUTTON_ARROW_LEFT ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_DBFIELD
+ {
+ Pos = MAP_APPFONT ( 152 , 45 ) ;
+ Size = MAP_APPFONT ( 57 , 10 ) ;
+ Text = "Datenbank~feld" ;
+ Text [ English ] = "Database field" ;
+ Text [ norwegian ] = "Database field" ;
+ Text [ italian ] = "Campo database" ;
+ Text [ portuguese_brazilian ] = "Campo base de dados" ;
+ Text [ portuguese ] = "Campo base de dados" ;
+ Text [ finnish ] = "Tietokantakenttä" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "~Champ de B.D." ;
+ Text [ swedish ] = "Databas~fält" ;
+ Text [ dutch ] = "~Databaseveld" ;
+ Text [ spanish ] = "~Campo base de datos" ;
+ Text [ english_us ] = "Database Field" ;
+ Text[ chinese_simplified ] = "Êý¾Ý¿â×Ö¶Î";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "¸ê®Æ®wÄæ¦ì";
+ Text[ arabic ] = "ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DBFIELD
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 152 , 56 ) ;
+ Size = MAP_APPFONT ( 96 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ GroupBox GRP_WRITING
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 72 ) ;
+ Text = "Aufschrift" ;
+ Text [ English ] = "Writing" ;
+ Text [ norwegian ] = "Writing" ;
+ Text [ italian ] = "Testo etichetta" ;
+ Text [ portuguese_brazilian ] = "Gravar" ;
+ Text [ portuguese ] = "Inscrição" ;
+ Text [ finnish ] = "Otsikko" ;
+ Text [ danish ] = "Etikettekst" ;
+ Text [ french ] = "Libellé" ;
+ Text [ swedish ] = "Påskrift" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "Etiqueta" ;
+ Text [ english_us ] = "Inscription" ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "ÄÚÈÝ";
+ Text[ russian ] = "Ïîäïèñü";
+ Text[ polish ] = "Oznaczenie";
+ Text[ japanese ] = "ˆ¶æ";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¤º®e";
+ Text[ arabic ] = "äÕ ÇáÈØÇÞÉ";
+ Text[ greek ] = "ÅðéãñáöÞ";
+ Text[ korean ] = "Ç¥Á¦";
+ Text[ turkish ] = "Etiket metni";
+ };
+ RadioButton BTN_CONT
+ {
+ Pos = MAP_APPFONT ( 12 , 90 ) ;
+ Size = MAP_APPFONT ( 43 , 10 ) ;
+ Text = "~Endlos" ;
+ Text [ English ] = "Continuous" ;
+ Text [ norwegian ] = "Continuous" ;
+ Text [ italian ] = "~Continuo" ;
+ Text [ portuguese_brazilian ] = "~Contínuo" ;
+ Text [ portuguese ] = "~Contínuo" ;
+ Text [ finnish ] = "Jatkuva" ;
+ Text [ danish ] = "Endeløs" ;
+ Text [ french ] = "~Continu" ;
+ Text [ swedish ] = "~Kontinuerlig" ;
+ Text [ dutch ] = "~Eindeloos" ;
+ Text [ spanish ] = "Cont~inuo" ;
+ Text [ english_us ] = "~Continuous" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "Á¬Ðø(~C)";
+ Text[ russian ] = "Íåïðåðûâíî";
+ Text[ polish ] = "Bez koñca";
+ Text[ japanese ] = "˜A‘±(~C)";
+ Text[ chinese_traditional ] = "¤£¶¡Â_(~C)";
+ Text[ arabic ] = "æÑÞ ÛíÑ ãÊÞØÚ";
+ Text[ greek ] = "Óõíå÷Þò";
+ Text[ korean ] = "°è¼Ó(~C)";
+ Text[ turkish ] = "Sonsuz form";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_SHEET
+ {
+ Pos = MAP_APPFONT ( 12 , 105 ) ;
+ Size = MAP_APPFONT ( 43 , 10 ) ;
+ Text = "~Bogen" ;
+ Text [ English ] = "Sheet" ;
+ Text [ norwegian ] = "Sheet" ;
+ Text [ italian ] = "Foglio" ;
+ Text [ portuguese_brazilian ] = "Folha" ;
+ Text [ portuguese ] = "~Folha" ;
+ Text [ finnish ] = "Arkki" ;
+ Text [ danish ] = "Ark" ;
+ Text [ french ] = "~Feuille" ;
+ Text [ swedish ] = "~Ark" ;
+ Text [ dutch ] = "~Blad" ;
+ Text [ spanish ] = "~Hoja" ;
+ Text [ english_us ] = "~Sheet" ;
+ Text[ chinese_simplified ] = "Ö½ÕÅ(~S)";
+ Text[ russian ] = "Îòäåëüíî";
+ Text[ polish ] = "Arkusz";
+ Text[ japanese ] = "¼°Ä(~S)";
+ Text[ chinese_traditional ] = "¯È±i(~S)";
+ Text[ arabic ] = "ÝÑÎ æÑÞ";
+ Text[ greek ] = "~ÖÜêåëïò";
+ Text[ korean ] = "½ÃÆ®(~S)";
+ Text[ turkish ] = "Föy";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText TXT_MAKE
+ {
+ Pos = MAP_APPFONT ( 58 , 91 ) ;
+ Size = MAP_APPFONT ( 28 , 8 ) ;
+ Text = "~Marke" ;
+ Text [ English ] = "Make" ;
+ Text [ norwegian ] = "Make" ;
+ Text [ italian ] = "Marca" ;
+ Text [ portuguese_brazilian ] = "Fazer" ;
+ Text [ portuguese ] = "Marca" ;
+ Text [ finnish ] = "Merkki" ;
+ Text [ danish ] = "Mærke" ;
+ Text [ french ] = "~Marque" ;
+ Text [ swedish ] = "~Märke" ;
+ Text [ dutch ] = "~Merk" ;
+ Text [ spanish ] = "~Marca" ;
+ Text [ english_us ] = "Brand" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "É̱ê";
+ Text[ russian ] = "Ìàðêà";
+ Text[ polish ] = "Znacznik";
+ Text[ japanese ] = "»‘¢Œ³";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "°Ó¼Ð";
+ Text[ arabic ] = "ÇáãÇÑßÉ";
+ Text[ greek ] = "~ÌÜñêá";
+ Text[ korean ] = "»óÇ¥";
+ Text[ turkish ] = "Markasý";
+ };
+ ListBox BOX_MAKE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 92 , 89 ) ;
+ Size = MAP_APPFONT ( 119 , 91 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText TXT_TYPE
+ {
+ Pos = MAP_APPFONT ( 58 , 106 ) ;
+ Size = MAP_APPFONT ( 28 , 8 ) ;
+ Text = "~Typ" ;
+ Text [ English ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "Tipo" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "~Type" ;
+ Text [ swedish ] = "~Typ" ;
+ Text [ dutch ] = "~Type" ;
+ Text [ spanish ] = "~Tipo" ;
+ Text [ english_us ] = "~Type" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÀàÐÍ(~T)";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Ží—Þ(~T)";
+ Text[ chinese_traditional ] = "Ãþ«¬(~T)";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ greek ] = "~Ôýðïò";
+ Text[ korean ] = "À¯Çü(~T)";
+ Text[ turkish ] = "Tipi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox BOX_TYPE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 92 , 104 ) ;
+ Size = MAP_APPFONT ( 119 , 61 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText INF_FORMAT
+ {
+ Pos = MAP_APPFONT ( 12 , 119 ) ;
+ Size = MAP_APPFONT ( 199 , 8 ) ;
+ Left = TRUE ;
+ };
+ GroupBox GRP_FORMAT
+ {
+ Pos = MAP_APPFONT ( 6 , 78 ) ;
+ Size = MAP_APPFONT ( 248 , 55 ) ;
+ Text = "Format" ;
+ Text [ English ] = "Format" ;
+ Text [ norwegian ] = "Format" ;
+ Text [ italian ] = "Formato" ;
+ Text [ portuguese_brazilian ] = "Formato" ;
+ Text [ portuguese ] = "Formato" ;
+ Text [ finnish ] = "Muotoile" ;
+ Text [ danish ] = "Format" ;
+ Text [ french ] = "Format" ;
+ Text [ swedish ] = "Format" ;
+ Text [ dutch ] = "Formaat" ;
+ Text [ spanish ] = "Formato" ;
+ Text [ english_us ] = "Format" ;
+ Text[ chinese_simplified ] = "¸ñʽ";
+ Text[ russian ] = "Ôîðìàò";
+ Text[ polish ] = "Format";
+ Text[ japanese ] = "‘Ž®";
+ Text[ chinese_traditional ] = "®æ¦¡";
+ Text[ arabic ] = "ÇáÊäÓíÞ";
+ Text[ greek ] = "ÌïñöÞ";
+ Text[ korean ] = "¼­½Ä";
+ Group = TRUE ;
+ Text[ turkish ] = "Format";
+ Text[ language_user1 ] = " ";
+ };
+};
+#define WIDTH 100
+#define HEIGHT 16
+FloatingWindow DLG_SYNC_BTN
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( WIDTH , HEIGHT ) ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ Sizeable = FALSE ;
+ Zoomable = TRUE ;
+ HelpID = HID_SYNC_BTN ;
+ Hide = TRUE ;
+ PushButton BTN_SYNC
+ {
+ Pos = MAP_APPFONT ( 1 , 1 ) ;
+ Size = MAP_APPFONT ( WIDTH - 1 , HEIGHT - 1 ) ;
+ Text = "Etiketten synchronisieren" ;
+ Text [ ENGLISH ] = "Synchronize labels" ;
+ Text [ english_us ] = "Synchronize Labels" ;
+ Text [ portuguese_brazilian ] = "Etiketten synchronisieren" ;
+ Text [ swedish ] = "Synkronisera etiketter" ;
+ Text [ danish ] = "Synkroniser etiketter" ;
+ Text [ italian ] = "Sincronizza etichette" ;
+ Text [ spanish ] = "Sincronizar etiquetas" ;
+ Text [ french ] = "Synchroniser les étiquettes" ;
+ Text [ dutch ] = "Etiketten synchroniseren" ;
+ Text [ portuguese ] = "Sincronizar etiquetas" ;
+ Text[ chinese_simplified ] = "±êǩͬ²½»¯";
+ Text[ russian ] = "Ñèíõðîíèçèðîâàòü íàêëåéêè";
+ Text[ polish ] = "Synchronizuj etykiety";
+ Text[ japanese ] = "×ÍÞق𓯊ú‚·‚é";
+ Text[ chinese_traditional ] = "¶K¼Ð¦P¨B¤Æ";
+ Text[ arabic ] = "ÊÒÇãä ÈØÇÞÇÊ ÇáÚäæäÉ";
+ Text[ greek ] = "Óõã÷ñïíéóìüò åôéêåôþí";
+ Text[ korean ] = "¶óº§ µ¿±âÈ­";
+ Text[ turkish ] = "Etiket içeriðini çoðalt";
+ Text[ language_user1 ] = " ";
+ };
+};
+ // String *******************************************************************
+String STR_DOC_TITLE
+{
+ Text = "Etiketten" ;
+ Text [ English ] = "Labels" ;
+ Text [ norwegian ] = "Etiketter" ;
+ Text [ italian ] = "Busta" ;
+ Text [ portuguese_brazilian ] = "Etiquetas" ;
+ Text [ portuguese ] = "Etiquetas" ;
+ Text [ finnish ] = "Tarrat" ;
+ Text [ danish ] = "Etiketter" ;
+ Text [ french ] = "Étiquettes" ;
+ Text [ swedish ] = "Etiketter" ;
+ Text [ dutch ] = "Etiketten" ;
+ Text [ spanish ] = "Etiquetas" ;
+ Text [ english_us ] = "Labels" ;
+ Text[ chinese_simplified ] = "±êÇ©";
+ Text[ russian ] = "Íàêëåéêè";
+ Text[ polish ] = "Etykiety";
+ Text[ japanese ] = "×ÍÞÙ";
+ Text[ chinese_traditional ] = "¶K¼Ð";
+ Text[ arabic ] = "ÈØÇÞÇÊ ÚäæäÉ";
+ Text[ greek ] = "ÅôéêÝôåò";
+ Text[ korean ] = "¶óº§";
+ Text[ turkish ] = "Etiket";
+ Text[ language_user1 ] = " ";
+};
+String STR_CUSTOM
+{
+ Text = "[Benutzer]" ;
+ Text [ English ] = "[Custom]" ;
+ Text [ norwegian ] = "[Custom]" ;
+ Text [ italian ] = "[Utente]" ;
+ Text [ portuguese_brazilian ] = "[Pessoal]" ;
+ Text [ portuguese ] = "[Utilizador]" ;
+ Text [ finnish ] = "[Oma]" ;
+ Text [ danish ] = "[Bruger]" ;
+ Text [ french ] = "[Personnalisé]" ;
+ Text [ swedish ] = "[Användare]" ;
+ Text [ dutch ] = "[Gebruiker] " ;
+ Text [ spanish ] = "[Usuario]" ;
+ Text [ english_us ] = "[User-defined]" ;
+ Text[ chinese_simplified ] = "[ʹÓÃÕß]";
+ Text[ russian ] = "[Ïîëüçîâàòåëü]";
+ Text[ polish ] = "[U¿ytkownik]";
+ Text[ japanese ] = "[Õ°»Þ°]";
+ Text[ greek ] = "[×ñÞóôçò]";
+ Text[ korean ] = "[»ç¿ëÀÚ]";
+ Text[ chinese_traditional ] = "[¨Ï¥ÎªÌ]";
+ Text[ arabic ] = "[ãÓÊÎÏã]";
+ Text[ turkish ] = "[Kullanýcý tanýmlý]";
+};
+/********************************************************************/
+TabPage TP_VISITING_CARDS
+{
+ HelpID = HID_TP_VISITING_CARDS ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+
+ Control LB_AUTO_TEXT
+ {
+ Pos = MAP_APPFONT ( 12 , 12 ) ;
+ Size = MAP_APPFONT ( 109 , 83 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_AUTO_TEXT_GROUP
+ {
+ Pos = MAP_APPFONT ( 12 , 98) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "AutoText - ~Bereich" ;
+ Text [ English ] = "AutoText group" ;
+ Text[ english_us ] = "AutoText - Section";
+ Text[ portuguese ] = "AutoTexto - ~secção";
+ Text[ russian ] = "Îáëàñòü àâòîòåêñòà";
+ Text[ greek ] = "Ðåñéï÷Þ ÁõôïÊåéìÝíïõ";
+ Text[ dutch ] = "AutoTekst - ~bereik";
+ Text[ french ] = "AutoTexte - ~Section";
+ Text[ spanish ] = "Área AutoT~exto";
+ Text[ italian ] = "Testo automatico - Sezione";
+ Text[ danish ] = "AutoTekst - område";
+ Text[ swedish ] = "AutoText - område";
+ Text[ polish ] = "Obszar Autotekstu";
+ Text[ portuguese_brazilian ] = "AutoText group";
+ Text[ japanese ] = "“ü—ÍŽx‰‡ ”͈Í(~S)";
+ Text[ korean ] = "ÀÚµ¿ ÅؽºÆ® - ±¸¿ª(~S)";
+ Text[ chinese_simplified ] = "×Ô¶¯Í¼Îļ¯·ÖÀà(~S)";
+ Text[ chinese_traditional ] = "¦Û°Ê¹Ï¤å¶°¤ÀÃþ(~S)";
+ Text[ arabic ] = "äØÇÞ ÇáäÕ ÇáÊáÞÇÆí";
+ Text[ turkish ] = "Otomatik metin - alaný";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_AUTO_TEXT_GROUP
+ {
+ Pos = MAP_APPFONT ( 12 , 111) ;
+ Size = MAP_APPFONT ( 109 , 40 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ GroupBox GB_CONTENT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 121 , 129 ) ;
+ Text = "Inhalt" ;
+ Text [ English ] = "Content" ;
+ Text[ english_us ] = "Content";
+ Text[ portuguese ] = "Conteúdo";
+ Text[ russian ] = "Ñîäåðæèìîå";
+ Text[ greek ] = "Ðåñéå÷üìåíá";
+ Text[ dutch ] = "Inhoud";
+ Text[ french ] = "Contenu";
+ Text[ spanish ] = "Contenido";
+ Text[ italian ] = "Contenuto";
+ Text[ danish ] = "Indhold";
+ Text[ swedish ] = "Innehåll";
+ Text[ polish ] = "ZawartoϾ";
+ Text[ portuguese_brazilian ] = "Content";
+ Text[ japanese ] = "“à—e";
+ Text[ korean ] = "³»¿ë";
+ Text[ chinese_simplified ] = "ÄÚÈÝ";
+ Text[ chinese_traditional ] = "¤º®e";
+ Text[ arabic ] = "ÇáãÍÊæíÇÊ";
+ Text[ turkish ] = "Ýçerik";
+ Text[ language_user1 ] = " ";
+ };
+ Window WIN_EXAMPLE
+ {
+ Pos = MAP_APPFONT ( 136, 12 ) ;
+ Size = MAP_APPFONT ( 115 , 117 ) ;
+ };
+ GroupBox GB_EXAMPLE
+ {
+ Pos = MAP_APPFONT ( 133 , 3 ) ;
+ Size = MAP_APPFONT ( 121 , 129 ) ;
+ Text = "Vorschau" ;
+ Text [ English ] = "Preview" ;
+ Text[ english_us ] = "Preview";
+ Text[ portuguese ] = "Previsualizar";
+ Text[ russian ] = "Ïðîñìîòð";
+ Text[ greek ] = "Ðñïåðéóêüðçóç";
+ Text[ dutch ] = "Voorbeeld";
+ Text[ french ] = "Aperçu";
+ Text[ spanish ] = "Previsualización";
+ Text[ italian ] = "Anteprima";
+ Text[ danish ] = "Eksempel";
+ Text[ swedish ] = "Förhandsvisning";
+ Text[ polish ] = "Podgl¹d";
+ Text[ portuguese_brazilian ] = "Preview";
+ Text[ japanese ] = "ÌßÚËÞ­°";
+ Text[ korean ] = "¹Ì¸®º¸±â";
+ Text[ chinese_simplified ] = "Ô¤ÊÓ";
+ Text[ chinese_traditional ] = "¹wÄý";
+ Text[ arabic ] = "ÇáãÚÇíäÉ";
+ Text[ turkish ] = "Önizleme";
+ };
+ String ST_VISCARD_GROUP
+ {
+ Text = "Cards";
+ };
+};
+TabPage TP_PRIVATE_DATA
+{
+ HelpID = HID_TP_PRIVATE_DATA ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ GroupBox GB_DATA
+ {
+ Pos = MAP_APPFONT ( 6 , 2 ) ;
+ Size = MAP_APPFONT ( 248 , 130 ) ;
+ Text = "Private Daten" ;
+ Text [ English ] = "Private data" ;
+ Text[ english_us ] = "Private data";
+ Text[ portuguese ] = "Dados pessoais";
+ Text[ russian ] = "Ëè÷íûå äàííûå";
+ Text[ greek ] = "ÐñïóùðéêÜ óôïé÷åßá";
+ Text[ dutch ] = "Privégegevens";
+ Text[ french ] = "Coordonnées privées";
+ Text[ spanish ] = "Datos privados";
+ Text[ italian ] = "Dati privati";
+ Text[ danish ] = "Private data";
+ Text[ swedish ] = "Privata data";
+ Text[ polish ] = "Dane prywatne";
+ Text[ portuguese_brazilian ] = "Private data";
+ Text[ japanese ] = "ÌßײÍÞ°ÄÃÞ°À";
+ Text[ korean ] = "°³ÀÎ µ¥ÀÌÅÍ";
+ Text[ chinese_simplified ] = "˽ÈË×ÊÁÏ";
+ Text[ chinese_traditional ] = "¨p¤H¼ÆÕu";
+ Text[ arabic ] = "ÈíÇäÇÊ ÔÎÕíÉ";
+ Text[ turkish ] = "Özel bilgiler";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 13) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "~Vor-/Name/Kürzel" ;
+ Text [ English ] = "First/Last ~name" ;
+ Text[ english_us ] = "First/Last ~name/Initials";
+ Text[ portuguese ] = "~Nome próprio/Apelido/Iniciais";
+ Text[ russian ] = "Ôàìèëèÿ/èìÿ/èíèöèàëû";
+ Text[ greek ] = "¼íïìá/Åðþíõìï/Áñ÷éêÜ";
+ Text[ dutch ] = "~Voor-/achternaam/Initialen";
+ Text[ french ] = "~Prénom/Nom/Initiales";
+ Text[ spanish ] = "No~mbre/Apellidos/Iniciales";
+ Text[ italian ] = "Nome/Cognome/Iniziali";
+ Text[ danish ] = "For-/Efternavn/Initialer";
+ Text[ swedish ] = "~För-/efternamn/initialer";
+ Text[ polish ] = "Imiê/Nazwisko/Inicja³y";
+ Text[ portuguese_brazilian ] = "First/Last ~name";
+ Text[ japanese ] = "–¼/©/²Æ¼¬Ù(~N)";
+ Text[ korean ] = "À̸§/¼º/ÀÌ´Ï¼È 2(~N)";
+ Text[ chinese_simplified ] = "Ãû×Ö/ÐÕÊÏ/Ëõд(~N)";
+ Text[ chinese_traditional ] = "¦W¦r/©m¤ó/ÁY¼g(~N)";
+ Text[ arabic ] = "ÇáÇÓã/ÇÓã ÇáÚÇÆáÉ/ÇáÇÎÊÕÇÑ";
+ Text[ turkish ] = "Ad/Soyad/Baþharfler";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_FIRSTNAME
+ {
+ Pos = MAP_APPFONT ( 105 , 12 ) ;
+ Size = MAP_APPFONT ( 55 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_NAME
+ {
+ Pos = MAP_APPFONT ( 163 , 12 ) ;
+ Size = MAP_APPFONT ( 55 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_SHORTCUT
+ {
+ Pos = MAP_APPFONT ( 221 , 12 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_NAME_2
+ {
+ Pos = MAP_APPFONT ( 12 , 26) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "~Vor-/Name/Kürzel 2" ;
+ Text [ English ] = "First/Last ~name 2" ;
+ Text[ english_us ] = "First / Last ~Name / Initials 2";
+ Text[ portuguese ] = "~Nome próprio/Apelido/Iniciais 2";
+ Text[ russian ] = "Ôàìèëèÿ/èìÿ/ñîêðàùåíèå 2";
+ Text[ greek ] = "¼íïìá/Åðßèåôï/Áñ÷éêÜ 2";
+ Text[ dutch ] = "Voor/achter ~naam 2";
+ Text[ french ] = "~Prénom/Nom/Initiales 2";
+ Text[ spanish ] = "Nombre/Apellidos/Iniciales 2";
+ Text[ italian ] = "Nome/Cognome/Iniziali 2";
+ Text[ danish ] = "For-/Efternavn/Initialer 2";
+ Text[ swedish ] = "För-/efter~namn/initialer 2";
+ Text[ polish ] = "Imiê/Nazwisko/Inicja³y";
+ Text[ portuguese_brazilian ] = "First/Last ~name 2";
+ Text[ japanese ] = "©/–¼/²Æ¼¬Ù 2i~Nj";
+ Text[ korean ] = "À̸§/¼º/ÀÌ´Ï¼È 2(~N)";
+ Text[ chinese_simplified ] = "Ãû×Ö/ÐÕÊÏ/Ëõд 2";
+ Text[ chinese_traditional ] = "¦W¦r/©m¤ó/ÁY¼g 2";
+ Text[ arabic ] = "ÇáÇÓã/ÇÓã ÇáÚÇÆáÉ/ÇáÇÎÊÕÇÑ 2";
+ Text[ turkish ] = "Ad/Soyad/Baþharfler 2";
+ };
+ Edit ED_FIRSTNAME_2
+ {
+ Pos = MAP_APPFONT ( 105 , 25 ) ;
+ Size = MAP_APPFONT ( 55 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_NAME_2
+ {
+ Pos = MAP_APPFONT ( 163 , 25 ) ;
+ Size = MAP_APPFONT ( 55 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_SHORTCUT_2
+ {
+ Pos = MAP_APPFONT ( 221 , 25 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_STREET
+ {
+ Pos = MAP_APPFONT ( 12 , 39) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "~Straße" ;
+ Text [ English ] = "Street" ;
+ Text[ english_us ] = "S~treet";
+ Text[ portuguese ] = "~Rua";
+ Text[ russian ] = "Óëèöà";
+ Text[ greek ] = "Ïäüò";
+ Text[ dutch ] = "~Straat";
+ Text[ french ] = "~Rue";
+ Text[ spanish ] = "~Calle";
+ Text[ italian ] = "Via";
+ Text[ danish ] = "Gade";
+ Text[ swedish ] = "Gatuadres~s";
+ Text[ polish ] = "Ulica";
+ Text[ portuguese_brazilian ] = "Street";
+ Text[ japanese ] = "’¬–¼(~T)";
+ Text[ korean ] = "ÁÖ¼Ò¹øÁö(~T)";
+ Text[ chinese_simplified ] = "½ÖµÀ(~T)";
+ Text[ chinese_traditional ] = "µó¹D(~T)";
+ Text[ arabic ] = "ÇáÔÇÑÚ";
+ Text[ turkish ] = "Sokak";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_STREET
+ {
+ Pos = MAP_APPFONT ( 105 , 38 ) ;
+ Size = MAP_APPFONT ( 146 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_ZIPCITY
+ {
+ Pos = MAP_APPFONT ( 12 , 52) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "PLZ/Or~t" ;
+ Text [ English ] = "Zip/City" ;
+ Text[ english_us ] = "Zip/Cit~y";
+ Text[ portuguese ] = "CP/~Localidade";
+ Text[ russian ] = "Ïî÷ò.èíäåêñ/ãîðîä";
+ Text[ greek ] = "Ô.Ê./Ðüëç";
+ Text[ dutch ] = "~Postcode/Plaats";
+ Text[ french ] = "C.P./~Ville";
+ Text[ spanish ] = "CP/Ciuda~d";
+ Text[ italian ] = "C.A.P./Località";
+ Text[ danish ] = "Postnr./By";
+ Text[ swedish ] = "~Postnr/Ort";
+ Text[ polish ] = "Kod pocztowy/MiejscowoϾ";
+ Text[ portuguese_brazilian ] = "Zip/City";
+ Text[ japanese ] = "—X•Ö”Ô†/“s“¹•{Œ§–¼(~Y)";
+ Text[ korean ] = "¿ìÆí¹øÈ£/µµ½Ã(~Y)";
+ Text[ chinese_simplified ] = "Óʱà/³ÇÊÐ(~Y)";
+ Text[ chinese_traditional ] = "¶l»¼°Ï¸¹/«°¥«(~Y)";
+ Text[ arabic ] = "ÇáÑãÒ ÇáÈÑíÏí/ÇáãÏíäÉ";
+ Text[ turkish ] = "Posta kodu/Þehir";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_ZIP
+ {
+ Pos = MAP_APPFONT ( 105 , 51 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_CITY
+ {
+ Pos = MAP_APPFONT ( 158 , 51 ) ;
+ Size = MAP_APPFONT ( 93 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_COUNTRYSTATE
+ {
+ Pos = MAP_APPFONT ( 12 , 65) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "~Land/Bundesland" ;
+ Text [ English ] = "Country/State" ;
+ Text[ english_us ] = "Co~untry/State";
+ Text[ portuguese ] = "~País";
+ Text[ russian ] = "Ñòðàíà/îáëàñòü";
+ Text[ greek ] = "×þñá";
+ Text[ dutch ] = "~Land";
+ Text[ french ] = "~Pays/État (US)";
+ Text[ spanish ] = "~País/Provincia";
+ Text[ italian ] = "Provincia/Paese";
+ Text[ danish ] = "Land";
+ Text[ swedish ] = "~Land/Delstat";
+ Text[ polish ] = "Kraj/Województwo";
+ Text[ portuguese_brazilian ] = "Country/State";
+ Text[ japanese ] = "‘–¼/“s“¹•{Œ§–¼(~U)";
+ Text[ korean ] = "±¹°¡/ÁÖ(~U)";
+ Text[ chinese_simplified ] = "¹ú¼Ò/Ê¡ÊÐ(~U)";
+ Text[ chinese_traditional ] = "°ê®a/¬Ù(~U)";
+ Text[ arabic ] = "ÇáÏæáÉ/ÇáæáÇíÉ";
+ Text[ turkish ] = "Ülke/Ýl";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_COUNTRY
+ {
+ Pos = MAP_APPFONT ( 105 , 64 ) ;
+ Size = MAP_APPFONT ( 71 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_STATE
+ {
+ Pos = MAP_APPFONT ( 179 , 64 ) ;
+ Size = MAP_APPFONT ( 72 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_TITLEPROF
+ {
+ Pos = MAP_APPFONT ( 12 , 78) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "~Titel/Beruf" ;
+ Text [ English ] = "Title/Profession" ;
+ Text[ english_us ] = "Title/~Profession";
+ Text[ portuguese ] = "~Título/Profissão";
+ Text[ russian ] = "Òèòóë/ïðîôåññèÿ";
+ Text[ greek ] = "~Ôßôëïò/ÅðÜããåëìá";
+ Text[ dutch ] = "Titel/Beroep";
+ Text[ french ] = "~Titre/Profession";
+ Text[ spanish ] = "Título/Pro~fesión";
+ Text[ italian ] = "Titolo/Professione";
+ Text[ danish ] = "Titel/Stilling";
+ Text[ swedish ] = "~Titel/Yrke";
+ Text[ polish ] = "Tytu³/Zawód";
+ Text[ portuguese_brazilian ] = "Title/Profession";
+ Text[ japanese ] = "Œ¨‘‚«/E‹Æ(~P)";
+ Text[ korean ] = "Á÷À§/Àü¹®ºÐ¾ß(~P)";
+ Text[ chinese_simplified ] = "Í·ÏÎ/Ö°Òµ(~P)";
+ Text[ chinese_traditional ] = "ºÙ©I/¾·~";
+ Text[ arabic ] = "ÇááÞÈ Çáãåäí/ÇáæÙíÝÉ";
+ Text[ turkish ] = "Unvan/Meslek";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_TITLE
+ {
+ Pos = MAP_APPFONT ( 105 , 77 ) ;
+ Size = MAP_APPFONT ( 71 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_PROFESSION
+ {
+ Pos = MAP_APPFONT ( 179 , 77 ) ;
+ Size = MAP_APPFONT ( 72 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_PHONE
+ {
+ Pos = MAP_APPFONT ( 12 , 91) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Telef~on/Mobil" ;
+ Text [ English ] = "Phone/mobile" ;
+ Text[ english_us ] = "Phone/cellphone";
+ Text[ portuguese ] = "Telefone/Tele~móvel";
+ Text[ russian ] = "Òåëåôîí/ìîáèëüíûé";
+ Text[ greek ] = "ÔçëÝöùíï/Êéíçôü";
+ Text[ dutch ] = "Tele~foon/mobile";
+ Text[ french ] = "~Tel/Portable";
+ Text[ spanish ] = "T~eléfono/Móvil";
+ Text[ italian ] = "Tel./Cell.";
+ Text[ danish ] = "Telefon/Mobil";
+ Text[ swedish ] = "Telef~on/Mobil";
+ Text[ polish ] = "Telefon/Komórka";
+ Text[ portuguese_brazilian ] = "Phone/mobile";
+ Text[ japanese ] = "“d˜b/Œg‘Ñ“d˜b";
+ Text[ korean ] = "ÀüÈ­/ ÇÚµåÆù";
+ Text[ chinese_simplified ] = "µç»°/ÊÖ»ú";
+ Text[ chinese_traditional ] = "¹q¸Ü/²¾°Ê¹q¸Ü";
+ Text[ arabic ] = "ÇáåÇÊÝ/ÇáãÍãæá";
+ Text[ turkish ] = "Telef~on/Cep telefonu";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_PHONE
+ {
+ Pos = MAP_APPFONT ( 105 , 90 ) ;
+ Size = MAP_APPFONT ( 71 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_MOBILE
+ {
+ Pos = MAP_APPFONT ( 179 , 90 ) ;
+ Size = MAP_APPFONT ( 72 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_FAX
+ {
+ Pos = MAP_APPFONT ( 12 , 104) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Fa~x" ;
+ Text [ English ] = "Fax" ;
+ Text[ english_us ] = "Fa~x";
+ Text[ portuguese ] = "Fa~x";
+ Text[ russian ] = "Ôàêñ";
+ Text[ greek ] = "Fax";
+ Text[ dutch ] = "Fa~x";
+ Text[ french ] = "~Fax";
+ Text[ spanish ] = "Fa~x";
+ Text[ italian ] = "Fa~x";
+ Text[ danish ] = "Fax";
+ Text[ swedish ] = "Fa~x";
+ Text[ polish ] = "Faks";
+ Text[ portuguese_brazilian ] = "Fax";
+ Text[ japanese ] = "Fa~x";
+ Text[ korean ] = "Æѽº(~X)";
+ Text[ chinese_simplified ] = "´«Õæ(~X)";
+ Text[ chinese_traditional ] = "¶Ç¯u(~X)";
+ Text[ arabic ] = "ÇáÝÇßÓ";
+ Text[ turkish ] = "Faks";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_FAX
+ {
+ Pos = MAP_APPFONT ( 105 , 103 ) ;
+ Size = MAP_APPFONT ( 146 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_WWWMAIL
+ {
+ Pos = MAP_APPFONT ( 12 , 117) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Homepage / E-Mail" ;
+ Text [ English ] = "Homepage / eMail" ;
+ Text[ english_us ] = "Homepage / e-mail";
+ Text[ portuguese ] = "Homepage / e-mail";
+ Text[ russian ] = "Äîì.ñòðàíèöà / ýë.ïî÷òà";
+ Text[ greek ] = "ÊåíôñéêÞ óåëßäá / E-Mail";
+ Text[ dutch ] = "Homepage / e-mail";
+ Text[ french ] = "Homepage / E-mail";
+ Text[ spanish ] = "Página principal / e-mail";
+ Text[ italian ] = "Homepage/eMail";
+ Text[ danish ] = "Hjemmeside/E-mail";
+ Text[ swedish ] = "Hemsida / e-post";
+ Text[ polish ] = "Strona macierzysta/e-mail";
+ Text[ portuguese_brazilian ] = "Homepage / eMail";
+ Text[ japanese ] = "ΰÑÍß°¼Þ/E-mail";
+ Text[ korean ] = "ȨÆäÀÌÁö / ÀüÀÚ¿ìÆí";
+ Text[ chinese_simplified ] = "Ö÷Ò³/µç×ÓÓʼþ";
+ Text[ chinese_traditional ] = "­º­¶/¹q¤l¶l¥ó";
+ Text[ arabic ] = "ãæÞÚ ÇáÅäÊÑäÊ / ÇáÈÑíÏ ÇáÅáßÊÑæäí";
+ Text[ turkish ] = "Web sayfasý / E-posta";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_WWW
+ {
+ Pos = MAP_APPFONT ( 105 , 116) ;
+ Size = MAP_APPFONT ( 71 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_MAIL
+ {
+ Pos = MAP_APPFONT ( 179 , 116) ;
+ Size = MAP_APPFONT ( 72 , 12 ) ;
+ Border = TRUE ;
+ };
+};
+TabPage TP_BUSINESS_DATA
+{
+ HelpID = HID_TP_BUSINESS_DATA;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ GroupBox GB_DATA
+ {
+ Pos = MAP_APPFONT ( 6 , 2 ) ;
+ Size = MAP_APPFONT ( 248 , 130 ) ;
+ Text = "Geschäftliche Daten" ;
+ Text [ English ] = "Business data" ;
+ Text[ english_us ] = "Business data";
+ Text[ portuguese ] = "Dados do emprego";
+ Text[ russian ] = "Ñëóæåáíûå äàííûå";
+ Text[ greek ] = "ÅðáããåëìáôéêÜ óôïé÷åßá";
+ Text[ dutch ] = "Zakelijke gegevens";
+ Text[ french ] = "Coordonnées du bureau";
+ Text[ spanish ] = "Datos del trabajo";
+ Text[ italian ] = "Dati lavoro";
+ Text[ danish ] = "Forretningsdata";
+ Text[ swedish ] = "Affärsdata";
+ Text[ polish ] = "Dane s³u¿bowe";
+ Text[ portuguese_brazilian ] = "Business data";
+ Text[ japanese ] = "ŽÐ—pÃÞ°À";
+ Text[ korean ] = "¾÷¹« µ¥ÀÌÅÍ";
+ Text[ chinese_simplified ] = "ÉÌÎñ×ÊÁÏ";
+ Text[ chinese_traditional ] = "°Ó°È¼ÆÕu";
+ Text[ arabic ] = "ÈíÇäÇÊ ÇáÚãá";
+ Text[ turkish ] = "Ýþ Bilgileri";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_COMP
+ {
+ Pos = MAP_APPFONT ( 12 , 13) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "~Firma" ;
+ Text [ English ] = "Company" ;
+ Text[ english_us ] = "Company";
+ Text[ portuguese ] = "~Firma";
+ Text[ russian ] = "Ïðåäïðèÿòèå";
+ Text[ greek ] = "Å~ôáéñßá";
+ Text[ dutch ] = "~Firma";
+ Text[ french ] = "~Société";
+ Text[ spanish ] = "E~mpresa";
+ Text[ italian ] = "Ditta";
+ Text[ danish ] = "Firma";
+ Text[ swedish ] = "~Företag";
+ Text[ polish ] = "Firma";
+ Text[ portuguese_brazilian ] = "Company";
+ Text[ japanese ] = "‰ïŽÐ–¼";
+ Text[ korean ] = "ȸ»ç";
+ Text[ chinese_simplified ] = "¹«Ë¾";
+ Text[ chinese_traditional ] = "¤½¥q";
+ Text[ arabic ] = "ÇáÔÑßÉ";
+ Text[ turkish ] = "~Þirket adý";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_COMP
+ {
+ Pos = MAP_APPFONT ( 105 , 12) ;
+ Size = MAP_APPFONT ( 146 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_COMP_EXT
+ {
+ Pos = MAP_APPFONT ( 12 , 26) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Firma ~2. Zeile" ;
+ Text [ English ] = "Company 2nd line" ;
+ Text[ english_us ] = "Company 2nd line";
+ Text[ portuguese ] = "Firma: ~2ª linha";
+ Text[ russian ] = "Ïðåäïðèÿòèå 2-ÿ ñòðîêà";
+ Text[ greek ] = "Åôáéñßá 2ç ãñáììÞ";
+ Text[ dutch ] = "Firma ~2e regel";
+ Text[ french ] = "Société : ~2e ligne";
+ Text[ spanish ] = "Empresa ~2da línea";
+ Text[ italian ] = "Ditta (2ª riga)";
+ Text[ danish ] = "Firma 2. linje";
+ Text[ swedish ] = "Företag rad ~2";
+ Text[ polish ] = "Firma 2 wiersz";
+ Text[ portuguese_brazilian ] = "Company 2nd line";
+ Text[ japanese ] = "‰ïŽÐ–¼ 2s–Ú";
+ Text[ korean ] = "ȸ»ç 2¹ø° ¼±";
+ Text[ chinese_simplified ] = "¹«Ë¾(µÚ¶þÐÐ)";
+ Text[ chinese_traditional ] = "¤½¥q(²Ä¤G¦æ)";
+ Text[ arabic ] = "ÇáÔÑßÉ ÇáÓØÑ ÇáËÇäí";
+ Text[ turkish ] = "Þirket adý ( 2'nci satýr)";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_COMP_EXT
+ {
+ Pos = MAP_APPFONT ( 105 , 25) ;
+ Size = MAP_APPFONT ( 146 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_SLOGAN
+ {
+ Pos = MAP_APPFONT ( 12 , 39) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Sl~ogan" ;
+ Text [ English ] = "Slogan" ;
+ Text[ english_us ] = "Slogan";
+ Text[ portuguese ] = "~Slogan";
+ Text[ russian ] = "Äåâèç";
+ Text[ greek ] = "Óëüãêáí";
+ Text[ dutch ] = "Sl~ogan";
+ Text[ french ] = "~Devise";
+ Text[ spanish ] = "Esl~ogan";
+ Text[ italian ] = "Sl~ogan";
+ Text[ danish ] = "Slogan";
+ Text[ swedish ] = "Sl~ogan";
+ Text[ polish ] = "Slogan";
+ Text[ portuguese_brazilian ] = "Slogan";
+ Text[ japanese ] = "½Û°¶ÞÝ";
+ Text[ korean ] = "½½·Î°Ç";
+ Text[ chinese_simplified ] = "¹ã¸æÓÃÓï";
+ Text[ chinese_traditional ] = "¦W¨¥";
+ Text[ arabic ] = "ÇáÔÚÇÑ";
+ Text[ turkish ] = "Slogan";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_SLOGAN
+ {
+ Pos = MAP_APPFONT ( 105 , 38) ;
+ Size = MAP_APPFONT ( 146 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_STREET
+ {
+ Pos = MAP_APPFONT ( 12 , 52) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "~Straße" ;
+ Text [ English ] = "Street" ;
+ Text[ english_us ] = "Street";
+ Text[ portuguese ] = "~Rua";
+ Text[ russian ] = "Óëèöà";
+ Text[ greek ] = "Ïäüò";
+ Text[ dutch ] = "~Straat";
+ Text[ french ] = "~Rue";
+ Text[ spanish ] = "~Calle";
+ Text[ italian ] = "Via";
+ Text[ danish ] = "Gade";
+ Text[ swedish ] = "Besöksadre~ss";
+ Text[ polish ] = "Ulica";
+ Text[ portuguese_brazilian ] = "Street";
+ Text[ japanese ] = "’¬–¼";
+ Text[ korean ] = "ÁÖ¼Ò¹øÁö";
+ Text[ chinese_simplified ] = "½ÖµÀ";
+ Text[ chinese_traditional ] = "µó¹D";
+ Text[ arabic ] = "ÇáÔÇÑÚ";
+ Text[ turkish ] = "Sokak";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_STREET
+ {
+ Pos = MAP_APPFONT ( 105 , 51) ;
+ Size = MAP_APPFONT ( 146 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_ZIPCITY
+ {
+ Pos = MAP_APPFONT ( 12 , 65) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "PLZ/Or~t" ;
+ Text [ English ] = "ZIP/City" ;
+ Text[ english_us ] = "ZIP/City";
+ Text[ portuguese ] = "CP/~Localidade";
+ Text[ russian ] = "Ïî÷ò.èíäåêñ/ãîðîä";
+ Text[ greek ] = "Ô.Ê./Ðüëç";
+ Text[ dutch ] = "Pos~tcode/Plaats";
+ Text[ french ] = "C.P/~Ville";
+ Text[ spanish ] = "CP/Ciu~dad";
+ Text[ italian ] = "C.A.P./Località";
+ Text[ danish ] = "Postnr./By";
+ Text[ swedish ] = "Postnr/Or~t";
+ Text[ polish ] = "Kod pocztowy/MiejscowoϾ";
+ Text[ portuguese_brazilian ] = "ZIP/City";
+ Text[ japanese ] = "—X•Ö”Ô†/“s“¹•{Œ§–¼";
+ Text[ korean ] = "¿ìÆí¹øÈ£/µµ½Ã";
+ Text[ chinese_simplified ] = "Óʱà/³ÇÊÐ";
+ Text[ chinese_traditional ] = "¶l»¼°Ï¸¹/«°¥«";
+ Text[ arabic ] = "ÇáÑãÒ ÇáÈÑíÏí/ÇáãÏíäÉ";
+ Text[ turkish ] = "Posta kodu/Þehir";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_ZIP
+ {
+ Pos = MAP_APPFONT ( 105 , 64) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_CITY
+ {
+ Pos = MAP_APPFONT ( 158 , 64) ;
+ Size = MAP_APPFONT ( 93 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_COUNTRYSTATE
+ {
+ Pos = MAP_APPFONT ( 12 , 78) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "~Land/Bundesland" ;
+ Text [ English ] = "Country/State" ;
+ Text[ english_us ] = "Country/State";
+ Text[ portuguese ] = "~País";
+ Text[ russian ] = "Ñòðàíà/îáëàñòü";
+ Text[ greek ] = "×þñá";
+ Text[ dutch ] = "~Land";
+ Text[ french ] = "~Pays/État (US)";
+ Text[ spanish ] = "País/Pro~vincia";
+ Text[ italian ] = "Provincia/Paese";
+ Text[ danish ] = "Land";
+ Text[ swedish ] = "~Land/Delstat";
+ Text[ polish ] = "Kraj/Województwo";
+ Text[ portuguese_brazilian ] = "Country/State";
+ Text[ japanese ] = "‘/“s“¹•{Œ§";
+ Text[ korean ] = "±¹°¡/ÁÖ";
+ Text[ chinese_simplified ] = "¹ú¼Ò/Ê¡ÊÐ";
+ Text[ chinese_traditional ] = "°ê®a/¬Ù";
+ Text[ arabic ] = "ÇáÏæáÉ/ÇáæáÇíÉ";
+ Text[ turkish ] = "Ülke/Ýl";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_COUNTRY
+ {
+ Pos = MAP_APPFONT ( 105 , 77) ;
+ Size = MAP_APPFONT ( 71 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_STATE
+ {
+ Pos = MAP_APPFONT ( 179 , 77) ;
+ Size = MAP_APPFONT ( 72 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_POSITION
+ {
+ Pos = MAP_APPFONT ( 12 , 91) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "~Position" ;
+ Text [ English ] = "Position" ;
+ Text[ english_us ] = "Position";
+ Text[ portuguese ] = "~Posição";
+ Text[ russian ] = "Äîëæíîñòü";
+ Text[ greek ] = "ÈÝóç";
+ Text[ dutch ] = "~Positie";
+ Text[ french ] = "~Fonction";
+ Text[ spanish ] = "~Posición";
+ Text[ italian ] = "~Posizione";
+ Text[ danish ] = "Stilling";
+ Text[ swedish ] = "~Befattning";
+ Text[ polish ] = "Pozycja";
+ Text[ portuguese_brazilian ] = "Position";
+ Text[ japanese ] = "–ðE";
+ Text[ korean ] = "Á÷À§";
+ Text[ chinese_simplified ] = "ְλ";
+ Text[ chinese_traditional ] = "¦ì¸m";
+ Text[ arabic ] = "ÇáãäÕÈ ÇáæÙíÝí";
+ Text[ turkish ] = "Pozisyon";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_POSITION
+ {
+ Pos = MAP_APPFONT ( 105 , 90) ;
+ Size = MAP_APPFONT ( 146 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_PHONE
+ {
+ Pos = MAP_APPFONT ( 12 , 104) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Telefo~n/Mobil/Fax" ;
+ Text [ English ] = "Phone/Mobile/Fax" ;
+ Text[ english_us ] = "Phone/Cellphone/Fax";
+ Text[ portuguese ] = "Telefo~ne/Telemóvel/Fax";
+ Text[ russian ] = "Òåëåôîí/Ìîáèëüíûé/Ôàêñ";
+ Text[ greek ] = "ÔçëÝöùíï/Êéíçôü/Fax";
+ Text[ dutch ] = "Telefoo~n/Mobile/Fax";
+ Text[ french ] = "~Téléphone/Portable/Fax";
+ Text[ spanish ] = "~Teléfono/Móvil/Fax";
+ Text[ italian ] = "Tel./Cell./Fax";
+ Text[ danish ] = "Telefon/Mobil/Fax";
+ Text[ swedish ] = "Telefo~n/Mobil/Fax";
+ Text[ polish ] = "Telefon/Komórka/Faks";
+ Text[ portuguese_brazilian ] = "Phone/Mobile/Fax";
+ Text[ japanese ] = "“d˜b/Œg‘Ñ“d˜b/Fax";
+ Text[ korean ] = "ÀüÇÏ/ÇÚµåÆù/Æѽº";
+ Text[ chinese_simplified ] = "µç»°/ÊÖ»ú/´«Õæ";
+ Text[ chinese_traditional ] = "¹q¸Ü/²¾°Ê¹q¸Ü/¶Ç¯u";
+ Text[ arabic ] = "ÇáåÇÊÝ/ÇáãÍãæá/ÇáÝÇßÓ";
+ Text[ turkish ] = "Telefon/Cep telefonu/Faks";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_PHONE
+ {
+ Pos = MAP_APPFONT ( 105 , 103) ;
+ Size = MAP_APPFONT ( 47 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_MOBILE
+ {
+ Pos = MAP_APPFONT ( 155 , 103) ;
+ Size = MAP_APPFONT ( 47 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_FAX
+ {
+ Pos = MAP_APPFONT ( 205 , 103) ;
+ Size = MAP_APPFONT ( 46 , 12 ) ;
+ Border = TRUE ;
+ };
+ FixedText FT_WWWMAIL
+ {
+ Pos = MAP_APPFONT ( 12 , 117) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Ho~mepage / E-Mail" ;
+ Text [ English ] = "Homepage / eMail" ;
+ Text[ english_us ] = "Ho~mepage / e-mail";
+ Text[ portuguese ] = "Ho~mepage / e-mail";
+ Text[ russian ] = "Äîì.ñòðàíèöà /ýë.ïî÷òà";
+ Text[ greek ] = "ÊåíôñéêÞ óåëßäá / E-Mail";
+ Text[ dutch ] = "Ho~mepage / e-mail";
+ Text[ french ] = "~Homepage / E-mail";
+ Text[ spanish ] = "Página principal / ~e-mail";
+ Text[ italian ] = "Ho~mepage/eMail";
+ Text[ danish ] = "Hjemmeside/E-mail";
+ Text[ swedish ] = "He~msida / e-post";
+ Text[ polish ] = "Strona macierzysta/e-mail";
+ Text[ portuguese_brazilian ] = "Homepage / eMail";
+ Text[ japanese ] = "ΰÑÍß°¼Þ/E-mail";
+ Text[ korean ] = "ȨÆäÀÌÁö / ÀüÀÚ¿ìÆí(~M)";
+ Text[ chinese_simplified ] = "Ö÷Ò³/µç×ÓÓʼþ";
+ Text[ chinese_traditional ] = "­º­¶/¹q¤l¶l¥ó";
+ Text[ arabic ] = "ãæÞÚ ÇáÅäÊÑäÊ / ÇáÈÑíÏ ÇáÅáßÊÑæäí";
+ Text[ turkish ] = "Web sayfasý / E-posta";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_WWW
+ {
+ Pos = MAP_APPFONT ( 105 , 116) ;
+ Size = MAP_APPFONT ( 71 , 12 ) ;
+ Border = TRUE ;
+ };
+ Edit ED_MAIL
+ {
+ Pos = MAP_APPFONT ( 179 , 116) ;
+ Size = MAP_APPFONT ( 72 , 12 ) ;
+ Border = TRUE ;
+ };
+};
diff --git a/sw/source/ui/envelp/label1.cxx b/sw/source/ui/envelp/label1.cxx
new file mode 100644
index 000000000000..4da5ecb65c82
--- /dev/null
+++ b/sw/source/ui/envelp/label1.cxx
@@ -0,0 +1,1846 @@
+/*************************************************************************
+ *
+ * $RCSfile: label1.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTFIELDSSUPPLIER_HPP_
+#include <com/sun/star/text/XTextFieldsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XREFRESHABLE_HPP_
+#include <com/sun/star/util/XRefreshable.hpp>
+#endif
+#ifndef _SV_CONFIG_HXX //autogen
+#include <vcl/config.hxx>
+#endif
+#ifndef _SV_WAITOBJ_HXX //autogen
+#include <vcl/waitobj.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFX_INIMGR_HXX
+#include <sfx2/inimgr.hxx>
+#endif
+#ifndef _SBA_SBAOBJ_HXX //autogen
+#include <offmgr/sbaobj.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _INITUI_HXX
+#include <initui.hxx>
+#endif
+#ifndef _LABIMP_HXX
+#include <labimp.hxx>
+#endif
+#ifndef _LABEL_HXX
+#include <label.hxx>
+#endif
+#ifndef _LABFMT_HXX
+#include <labfmt.hxx>
+#endif
+#ifndef _LABPRT_HXX
+#include <labprt.hxx>
+#endif
+#ifndef _LABIMG_HXX
+#include <labimg.hxx>
+#endif
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+#ifndef _UNOCRSR_HXX //autogen wg. SwUnoCrsr
+#include <unocrsr.hxx>
+#endif
+#ifndef _UNOTOOLS_HXX
+#include <unotools.hxx>
+#endif
+#ifndef _UNOATXT_HXX //autogen wg. SwXAutoTextEntry
+#include <unoatxt.hxx>
+#endif
+#ifndef _UNOOBJ_HXX //
+#include <unoobj.hxx>
+#endif
+#ifndef _UNOPRNMS_HXX //
+#include <unoprnms.hxx>
+#endif
+#ifndef _SWDOCSH_HXX //autogen wg. SwDocShell
+#include <docsh.hxx>
+#endif
+
+#ifndef _DBMGR_HXX
+#include <dbmgr.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _LABEL_HRC
+#include <label.hrc>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+
+#ifdef REPLACE_OFADBMGR
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+using namespace com::sun::star::lang;
+using namespace com::sun::star::container;
+using namespace com::sun::star::uno;
+#define C2U(char) rtl::OUString::createFromAscii(char)
+#else
+
+#endif //REPLACE_OFADBMGR
+
+using namespace ::com::sun::star;
+using namespace ::utl;
+using namespace ::rtl;
+
+#define CL2S(cChar) UniString::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(cChar))
+
+#define USER_FIELD_FIRSTNAME "BC_PRIV_FIRSTNAME"
+#define USER_FIELD_NAME "BC_PRIV_NAME"
+#define USER_FIELD_PRIVSHORTCUT "BC_PRIV_INITIALS"
+#define USER_FIELD_FIRSTNAME_2 "BC_PRIV_FIRSTNAME_2"
+#define USER_FIELD_NAME_2 "BC_PRIV_NAME_2"
+#define USER_FIELD_PRIVSHORTCUT_2 "BC_PRIV_INITIALS_2"
+
+#define USER_FIELD_PRIVSTREET "BC_PRIV_STREET"
+#define USER_FIELD_PRIVZIP "BC_PRIV_ZIP"
+#define USER_FIELD_PRIVCITY "BC_PRIV_CITY"
+#define USER_FIELD_PRIVCOUNTRY "BC_PRIV_COUNTRY"
+#define USER_FIELD_PRIVSTATE "BC_PRIV_STATE"
+#define USER_FIELD_PRIVTITLE "BC_PRIV_TITLE"
+#define USER_FIELD_PRIVPROFESSION "BC_PRIV_PROFESSION"
+#define USER_FIELD_PRIVPHONE "BC_PRIV_PHONE"
+#define USER_FIELD_PRIVMOBILE "BC_PRIV_MOBILE"
+#define USER_FIELD_PRIVFAX "BC_PRIV_FAX"
+#define USER_FIELD_PRIVWWW "BC_PRIV_WWW"
+#define USER_FIELD_PRIVMAIL "BC_PRIV_MAIL"
+#define USER_FIELD_COMPCOMPANY "BC_COMP_COMPANY"
+#define USER_FIELD_COMPCOMPANYEXT "BC_COMP_COMPANYEXT"
+#define USER_FIELD_COMPSLOGAN "BC_COMP_SLOGAN"
+#define USER_FIELD_COMPSTREET "BC_COMP_STREET"
+#define USER_FIELD_COMPZIP "BC_COMP_ZIP"
+#define USER_FIELD_COMPCITY "BC_COMP_CITY"
+#define USER_FIELD_COMPCOUNTRY "BC_COMP_COUNTRY"
+#define USER_FIELD_COMPSTATE "BC_COMP_STATE"
+#define USER_FIELD_COMPPOSITION "BC_COMP_POSITION"
+#define USER_FIELD_COMPPHONE "BC_COMP_PHONE"
+#define USER_FIELD_COMPMOBILE "BC_COMP_MOBILE"
+#define USER_FIELD_COMPFAX "BC_COMP_FAX"
+#define USER_FIELD_COMPWWW "BC_COMP_WWW"
+#define USER_FIELD_COMPMAIL "BC_COMP_MAIL"
+
+SV_IMPL_PTRARR( SwLabRecs, SwLabRec* );
+
+inline sal_Bool NextToken( String &rStr, sal_uInt16 &nPos, sal_uInt16 &nPos2 )
+{
+ nPos = nPos2+1;
+ nPos2 = rStr.Search( ';', nPos );
+ return nPos2 != STRING_NOTFOUND;
+}
+
+
+
+SwLabRec::SwLabRec( String& rStr, MetricField& rField )
+{
+ //Fuer die ersten beiden Token duefen nur Trailing und Leading Blanks
+ //vernichtet werden.
+ sal_uInt16 nPos = rStr.Search( ';' );
+ if ( nPos == STRING_NOTFOUND )
+ return;
+ aMake = rStr.Copy( 0, nPos );
+ ++nPos;
+ sal_uInt16 nPos2 = rStr.Search( ';', nPos );
+ if ( nPos2 == STRING_NOTFOUND )
+ return;
+ aType = rStr.Copy( nPos, nPos2 - nPos );
+
+ aMake.EraseLeadingChars(); aMake.EraseTrailingChars();
+ aType.EraseLeadingChars(); aType.EraseTrailingChars();
+
+ //Fuer alle weiteren Token koennen alle Blanks vernichtet werden.
+ rStr.EraseAllChars();
+ nPos = rStr.Search( ';' );
+ nPos2 = rStr.Search( ';', nPos+1 );
+
+ if ( !::NextToken( rStr, nPos, nPos2 ) )
+ return;
+ bCont = (rStr.GetChar(nPos) == 'C' || rStr.GetChar(nPos) == 'c') ? sal_True : sal_False;
+
+ if ( !::NextToken( rStr, nPos, nPos2 ) )
+ return;
+ lHDist = GetLong( rStr.Copy( nPos, nPos2 - nPos ), rField );
+
+ if ( !::NextToken( rStr, nPos, nPos2 ) )
+ return;
+ lVDist = GetLong( rStr.Copy( nPos, nPos2 - nPos ), rField );
+
+ if ( !::NextToken( rStr, nPos, nPos2 ) )
+ return;
+ lWidth = GetLong( rStr.Copy( nPos, nPos2 - nPos ), rField );
+
+ if ( !::NextToken( rStr, nPos, nPos2 ) )
+ return;
+ lHeight = GetLong( rStr.Copy( nPos, nPos2 - nPos ), rField );
+
+ if ( !::NextToken( rStr, nPos, nPos2 ) )
+ return;
+ lLeft = GetLong( rStr.Copy( nPos, nPos2 - nPos ), rField );
+
+ if ( !::NextToken( rStr, nPos, nPos2 ) )
+ return;
+ lUpper = GetLong( rStr.Copy( nPos, nPos2 - nPos ), rField );
+
+ if ( !::NextToken( rStr, nPos, nPos2 ) )
+ return;
+
+ nCols = rStr.Copy( nPos, nPos2 - nPos ).ToInt32();
+
+ nPos = nPos2+1;
+ nRows = rStr.Copy( nPos ).ToInt32();
+
+ // Ggf. Zeilenanzahl fuer Endlosetiketten automatisch berechnen
+ if ( bCont && !nRows )
+ {
+ static const long lMax = 31748; // 56 cm
+ nRows = (sal_uInt16)((lMax - lUpper) / Max(1L, lVDist));
+ }
+}
+
+// --------------------------------------------------------------------------
+
+
+
+long SwLabRec::GetLong(const String& rStr, MetricField& rField)
+{
+ rField.SetText( rStr );
+ rField.Reformat();
+ return GETFLDVAL( rField );
+}
+
+// --------------------------------------------------------------------------
+
+String lcl_GetLabelsIni()
+{
+ String sRet( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM(
+ "labels.ini" )));
+ SfxIniManager* pIniManager = SFX_INIMANAGER();
+ if( !pIniManager->SearchFile( sRet, SFX_KEY_USERCONFIG_PATH ))
+ {
+ sRet.Insert( INET_PATH_TOKEN, 0 );
+ sRet.Insert( pIniManager->Get( SFX_KEY_USERCONFIG_PATH ), 0 );
+ }
+ return sRet;
+}
+
+
+void SwLabDlg::_ReplaceGroup( const String &rMake, SwLabItem *pItem )
+{
+ //Die alten Eintraege vernichten.
+ pRecs->Remove( 1, pRecs->Count() - 1 );
+
+ // Etiketten aus labels.ini lesen, zum Konvertieren verwenden wir ein
+ // MetricField.
+ MetricField aField( this, WinBits(0) );
+ aField.SetUnit (FUNIT_CM);
+ aField.SetDecimalDigits(3);
+ aField.SetMin (0);
+ aField.SetMax (LONG_MAX);
+ International aInter;
+ aInter.SetNumThousandSep( '.' );
+ aInter.SetNumDecimalSep ( ',' );
+ aField.SetInternational( aInter );
+
+ rtl_TextEncoding eSysEnc = gsl_getSystemTextEncoding();
+ Config aCfg( ::lcl_GetLabelsIni() );
+ aCfg.SetGroup( ByteString( rMake, eSysEnc ));
+
+ String aTmp( rMake );
+ aTmp += ';';
+ const sal_uInt16 nCount = aCfg.GetKeyCount();
+ for ( sal_uInt16 i = 0; i < nCount; ++i )
+ {
+ String aStr( aTmp );
+ aStr += String(aCfg.ReadKey( i ), eSysEnc);
+ SwLabRec* pRec = new SwLabRec( aStr, aField );
+ sal_Bool bDouble = sal_False;
+
+ for (sal_uInt16 nRecPos = 0; nRecPos < pRecs->Count(); nRecPos++)
+ {
+ if (pRec->aMake == pRecs->GetObject(nRecPos)->aMake &&
+ pRec->aType == pRecs->GetObject(nRecPos)->aType)
+ {
+ bDouble = sal_True;
+ break;
+ }
+ }
+
+ if (!bDouble)
+ {
+ pRecs->C40_INSERT( SwLabRec, pRec, pRecs->Count() );
+
+ if ( pRec->aMake == pItem->aMake && pRec->aType == pItem->aType )
+ {
+ pItem->lHDist = pRec->lHDist;
+ pItem->lVDist = pRec->lVDist;
+ pItem->lWidth = pRec->lWidth;
+ pItem->lHeight = pRec->lHeight;
+ pItem->lLeft = pRec->lLeft;
+ pItem->lUpper = pRec->lUpper;
+ pItem->nCols = pRec->nCols;
+ pItem->nRows = pRec->nRows;
+ pItem->bCont = pRec->bCont;
+ }
+ }
+ }
+ aLstGroup = rMake;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwLabDlg::PageCreated(sal_uInt16 nId, SfxTabPage &rPage)
+{
+ if (nId == TP_LAB_LAB)
+ {
+ if(m_bLabel)
+ {
+ ((SwLabPage*)&rPage)->SetNewDBMgr(pNewDBMgr);
+ ((SwLabPage*)&rPage)->InitDatabaseBox();
+ }
+ else
+ ((SwLabPage*)&rPage)->SetToBusinessCard();
+ }
+ else if (nId == TP_LAB_PRT)
+ pPrtPage = (SwLabPrtPage*)&rPage;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwLabDlg::SwLabDlg(Window* pParent, const SfxItemSet& rSet,
+ SwNewDBMgr* pDBMgr, sal_Bool bLabel) :
+ SfxTabDialog( pParent, SW_RES(DLG_LAB), &rSet, sal_False ),
+ sBusinessCardDlg(ResId(ST_BUSINESSCARDDLG)),
+ sMedium(ResId(ST_FIRSTPAGE_BC)),
+ sFormat(ResId(ST_FIRSTPAGE_LAB)),
+ aTypeIds( 50, 10 ),
+ aMakes ( 5, 0 ),
+ pRecs ( new SwLabRecs() ),
+ pNewDBMgr(pDBMgr),
+ pPrtPage(0),
+ m_bLabel(bLabel)
+{
+ WaitObject aWait( pParent );
+
+ FreeResource();
+
+ GetOKButton().SetText(String(SW_RES(STR_BTN_NEW_DOC)));
+ GetOKButton().SetHelpId(HID_LABEL_INSERT);
+ GetOKButton().SetHelpText(aEmptyStr); // Damit generierter Hilfetext verwendet wird
+
+ AddTabPage(TP_LAB_LAB, m_bLabel ? sFormat : sMedium ,SwLabPage ::Create, 0, sal_False, 0);
+ AddTabPage(TP_VISITING_CARDS, SwVisitingCardPage::Create, 0);
+ AddTabPage(TP_LAB_FMT, SwLabFmtPage::Create, 0);
+ AddTabPage(TP_LAB_PRT, SwLabPrtPage::Create, 0);
+ AddTabPage(TP_BUSINESS_DATA, SwBusinessDataPage::Create, 0 );
+ AddTabPage(TP_PRIVATE_DATA, SwPrivateDataPage::Create, 0);
+
+
+ if(m_bLabel)
+ {
+ RemoveTabPage(TP_BUSINESS_DATA);
+ RemoveTabPage(TP_PRIVATE_DATA);
+ RemoveTabPage(TP_VISITING_CARDS);
+ }
+ else
+ {
+ SetText(sBusinessCardDlg);
+ }
+ // Benutzer-Etikette aus writer.cfg lesen
+ SwLabItem aItem((const SwLabItem&)rSet.Get(FN_LABEL));
+ SwLabRec* pRec = new SwLabRec;
+ const String aTmp( SW_RES( STR_CUSTOM ) );
+ pRec->aMake = pRec->aType = aTmp;
+ pRec->lHDist = aItem.lHDist;
+ pRec->lVDist = aItem.lVDist;
+ pRec->lWidth = aItem.lWidth;
+ pRec->lHeight = aItem.lHeight;
+ pRec->lLeft = aItem.lLeft;
+ pRec->lUpper = aItem.lUpper;
+ pRec->nCols = aItem.nCols;
+ pRec->nRows = aItem.nRows;
+ pRec->bCont = aItem.bCont;
+
+ sal_Bool bDouble = sal_False;
+
+ for (sal_uInt16 nRecPos = 0; nRecPos < pRecs->Count(); nRecPos++)
+ {
+ if (pRec->aMake == pRecs->GetObject(nRecPos)->aMake &&
+ pRec->aType == pRecs->GetObject(nRecPos)->aType)
+ {
+ bDouble = sal_True;
+ break;
+ }
+ }
+
+ if (!bDouble)
+ pRecs->C40_INSERT( SwLabRec, pRec, 0 );
+
+ Config aCfg( ::lcl_GetLabelsIni() );
+ aCfg.SetGroup( "Labels" );
+ sal_uInt16 nLstGroup = 0;
+ rtl_TextEncoding eSysEnc = gsl_getSystemTextEncoding();
+ const sal_uInt16 nGroups = aCfg.GetKeyCount();
+ for ( sal_uInt16 nGroup = 0; nGroup < nGroups; ++nGroup )
+ {
+ String *pMake = new String( aCfg.ReadKey( nGroup ), eSysEnc );
+ pMake->EraseLeadingChars();
+ pMake->EraseTrailingChars();
+ aMakes.Insert( pMake, aMakes.Count() );
+ if ( *pMake == aItem.aLstMake )
+ nLstGroup = nGroup;
+ }
+ if ( aMakes.Count() )
+ _ReplaceGroup( *aMakes[nLstGroup], &aItem );
+ if (pExampleSet)
+ pExampleSet->Put(aItem);
+}
+
+// --------------------------------------------------------------------------
+
+SwLabDlg::~SwLabDlg()
+{
+ delete pRecs;
+}
+
+/* --------------------------------------------------------------------------
+
+Diese Routine modifiziert ein uebergebenes SwLabItem so, dass es hernach in
+der Config gespeichert werden kann. Durch die Angabe des Herstellers und des
+Artikels sind die weiteren Groessenangaben redundant, daher werden in lHDist
+und den folgenden Membern die Eigenschaften der benutzerdefinierten Etiketten
+gespeichert.
+
+-------------------------------------------------------------------------- */
+
+
+
+void SwLabDlg::MakeConfigItem( SwLabItem& rItem ) const
+{
+ if ( rItem.aType != String(SW_RES(STR_CUSTOM)) )
+ {
+ SwLabRec* pRec = (*pRecs)[0];
+ rItem.lHDist = pRec->lHDist;
+ rItem.lVDist = pRec->lVDist;
+ rItem.lWidth = pRec->lWidth;
+ rItem.lHeight = pRec->lHeight;
+ rItem.lLeft = pRec->lLeft;
+ rItem.lUpper = pRec->lUpper;
+ rItem.nCols = pRec->nCols;
+ rItem.nRows = pRec->nRows;
+ }
+ const SwLabItem& rActItem = (const SwLabItem&)GetExampleSet()->Get(FN_LABEL);
+ rItem.bCont = rActItem.bCont;
+ rItem.aLstMake = rActItem.aLstMake;
+ rItem.aLstType = rActItem.aLstType;
+ rItem.sDBName = rActItem.sDBName;
+}
+
+// --------------------------------------------------------------------------
+
+void SwLabDlg::GetLabItem(SwLabItem &rItem)
+{
+ const SwLabItem& rActItem = (const SwLabItem&)GetExampleSet()->Get(FN_LABEL);
+ const SwLabItem& rOldItem = (const SwLabItem&)GetInputSetImpl()->Get(FN_LABEL);
+
+ if (rActItem != rOldItem)
+ { // Wurde schon mal mit (hoffentlich) korrektem Inhalt "geputtet"
+ rItem = rActItem;
+ }
+ else
+ {
+ rItem = rOldItem;
+
+ // Im rItem stehen (vom Namen mal abgesehen) immer nur die
+ // benutzerdefinierbaren Einstellungen. Daher richtige Werte
+ // direkt aus dem Record besorgen:
+ SwLabRec* pRec = GetRecord(rItem.aType, rItem.bCont);
+
+ rItem.lHDist = pRec->lHDist;
+ rItem.lVDist = pRec->lVDist;
+ rItem.lWidth = pRec->lWidth;
+ rItem.lHeight = pRec->lHeight;
+ rItem.lLeft = pRec->lLeft;
+ rItem.lUpper = pRec->lUpper;
+ rItem.nCols = pRec->nCols;
+ rItem.nRows = pRec->nRows;
+ }
+}
+
+// --------------------------------------------------------------------------
+
+SwLabRec* SwLabDlg::GetRecord(const String &rRecName, sal_Bool bCont)
+{
+ SwLabRec* pRec = NULL;
+ sal_Bool bFound = sal_False;
+ String sCustom(SW_RES(STR_CUSTOM));
+
+ const sal_uInt16 nCount = Recs().Count();
+ for (sal_uInt16 i = 0; i < nCount; i++)
+ {
+ pRec = Recs()[i];
+ if (pRec->aType != sCustom &&
+ rRecName == pRec->aType && bCont == pRec->bCont)
+ {
+ bFound = sal_True;
+ break;
+ }
+ }
+ if (!bFound) // Benutzerdefiniert
+ pRec = Recs()[0];
+
+ return(pRec);
+}
+
+// --------------------------------------------------------------------------
+
+
+
+Printer *SwLabDlg::GetPrt()
+{
+ if (pPrtPage)
+ return (pPrtPage->GetPrt());
+ else
+ return (NULL);
+}
+
+// --------------------------------------------------------------------------
+
+SwLabPage::SwLabPage(Window* pParent, const SfxItemSet& rSet) :
+ SfxTabPage(pParent, SW_RES(TP_LAB_LAB), rSet),
+ pNewDBMgr(NULL),
+ aItem ((const SwLabItem&) rSet.Get(FN_LABEL)),
+
+ aWritingText (this, SW_RES(TXT_WRITING)),
+ aAddrBox (this, SW_RES(BOX_ADDR )),
+ aWritingEdit (this, SW_RES(EDT_WRITING)),
+ aDatabaseFT (this, SW_RES(FT_DATABASE)),
+ aDatabaseLB (this, SW_RES(LB_DATABASE)),
+ aTableFT (this, SW_RES(FT_TABLE )),
+ aTableLB (this, SW_RES(LB_TABLE )),
+ aInsertBT (this, SW_RES(BTN_INSERT )),
+ aDBFieldFT (this, SW_RES(FT_DBFIELD )),
+ aDBFieldLB (this, SW_RES(LB_DBFIELD )),
+ aWritingGroup (this, SW_RES(GRP_WRITING)),
+ aContButton (this, SW_RES(BTN_CONT )),
+ aSheetButton (this, SW_RES(BTN_SHEET )),
+ aMakeText (this, SW_RES(TXT_MAKE )),
+ aMakeBox (this, SW_RES(BOX_MAKE )),
+ aTypeText (this, SW_RES(TXT_TYPE )),
+ aTypeBox (this, SW_RES(BOX_TYPE )),
+ aFormatInfo (this, SW_RES(INF_FORMAT )),
+ aFormatGroup (this, SW_RES(GRP_FORMAT ))
+
+{
+ WaitObject aWait( pParent );
+
+ FreeResource();
+ SetExchangeSupport();
+
+
+ // Handler installieren
+ aAddrBox .SetClickHdl (LINK(this, SwLabPage, AddrHdl ));
+ aDatabaseLB .SetSelectHdl(LINK(this, SwLabPage, DatabaseHdl ));
+ aTableLB .SetSelectHdl(LINK(this, SwLabPage, DatabaseHdl ));
+ aInsertBT .SetClickHdl (LINK(this, SwLabPage, FieldHdl ));
+ aContButton .SetClickHdl (LINK(this, SwLabPage, PageHdl ));
+ aSheetButton .SetClickHdl (LINK(this, SwLabPage, PageHdl ));
+ aMakeBox .SetSelectHdl(LINK(this, SwLabPage, MakeHdl ));
+ aTypeBox .SetSelectHdl(LINK(this, SwLabPage, TypeHdl ));
+
+ InitDatabaseBox();
+
+ sal_uInt16 nLstGroup = 0;
+
+ const sal_uInt16 nCount = (sal_uInt16)GetParent()->Makes().Count();
+ for (sal_uInt16 i = 0; i < nCount; ++i)
+ {
+ String &rStr = *GetParent()->Makes()[i];
+ aMakeBox.InsertEntry( rStr );
+ if ( rStr == aItem.aLstMake )
+ nLstGroup = i;
+ }
+// Reset(rSet);
+ aMakeBox.SelectEntryPos( nLstGroup );
+ aMakeBox.GetSelectHdl().Call( &aMakeBox );
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwLabPage::~SwLabPage()
+{
+}
+/* -----------------29.09.99 09:08-------------------
+
+ --------------------------------------------------*/
+void lcl_ChgYPos(Window& rWin, long nDiff)
+{
+ Point aTempPos(rWin.GetPosPixel());
+ aTempPos.Y() += nDiff;
+ rWin.SetPosPixel(aTempPos);
+}
+
+void SwLabPage::SetToBusinessCard()
+{
+ m_bLabel = sal_False;
+ aWritingText.Hide();
+ aAddrBox.Hide();
+ aWritingEdit.Hide();
+ aDatabaseFT.Hide();
+ aDatabaseLB.Hide();
+ aTableFT.Hide();
+ aTableLB.Hide();
+ aInsertBT.Hide();
+ aDBFieldFT.Hide();
+ aDBFieldLB.Hide();
+ aWritingGroup.Hide();
+
+ //resize the form
+ Point aGBPos(aWritingGroup.GetPosPixel());
+ long nDiffPos = aFormatGroup.GetPosPixel().Y() - aGBPos.Y();
+ Size aGBSz(aFormatGroup.GetSizePixel());
+ aGBSz.Height() += nDiffPos;
+ aFormatGroup.SetPosSizePixel(aGBPos, aGBSz);
+
+ // move all controls up
+ lcl_ChgYPos(aContButton, -nDiffPos);
+ lcl_ChgYPos(aSheetButton, -nDiffPos);
+ lcl_ChgYPos(aMakeText, -nDiffPos);
+
+ lcl_ChgYPos(aTypeText, -nDiffPos);
+ lcl_ChgYPos(aFormatInfo, -nDiffPos);
+
+ Size aTmpSz(3, 3);
+ aTmpSz = LogicToPixel(aTmpSz, MAP_APPFONT);
+
+ //
+ aMakeBox.SetStyle((aMakeBox.GetStyle()&~WB_DROPDOWN));
+ aTypeBox.SetStyle((aTypeBox.GetStyle()&~WB_DROPDOWN));
+
+ lcl_ChgYPos(aMakeBox, - nDiffPos);
+ Point aLBPos(aMakeBox.GetPosPixel());
+ aLBPos.Y() += aMakeBox.GetSizePixel().Height() + aTmpSz.Height();
+ aTypeBox.SetPosPixel(aLBPos);
+};
+
+// --------------------------------------------------------------------------
+
+//impl in envimg.cxx
+extern String MakeSender();
+
+
+
+IMPL_LINK( SwLabPage, AddrHdl, Button *, EMPTYARG )
+{
+ String aWriting;
+ if ( aAddrBox.IsChecked() )
+ aWriting = MakeSender();
+ aWritingEdit.SetText( aWriting.ConvertLineEnd() );
+ aWritingEdit.GrabFocus();
+ return 0;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+IMPL_LINK( SwLabPage, DatabaseHdl, ListBox *, pListBox )
+{
+ sActDBName = SFX_APP()->LocalizeDBName(NATIONAL2INI, aDatabaseLB.GetSelectEntry());
+
+ WaitObject aObj( GetParent() );
+
+ if (pListBox == &aDatabaseLB)
+ GetNewDBMgr()->GetTableNames(&aTableLB, sActDBName);
+#ifdef REPLACE_OFADBMGR
+ GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName, aTableLB.GetSelectEntry());
+#else
+ sActDBName += DB_DELIM;
+ sActDBName += aTableLB.GetSelectEntry();
+ GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName);
+#endif
+ return 0;
+}
+
+
+
+IMPL_LINK( SwLabPage, FieldHdl, Button *, EMPTYARG )
+{
+ String aStr ( '<' );
+ aStr += aDatabaseLB.GetSelectEntry();
+ aStr += '.';
+ aStr += aTableLB.GetSelectEntry();
+ aStr += '.';
+ aStr += aDBFieldLB.GetSelectEntry();
+ aStr += '>';
+ aWritingEdit.ReplaceSelected(aStr);
+ Selection aSel = aWritingEdit.GetSelection();
+ aWritingEdit.GrabFocus();
+ aWritingEdit.SetSelection(aSel);
+ return 0;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+IMPL_LINK_INLINE_START( SwLabPage, PageHdl, Button *, EMPTYARG )
+{
+ aMakeBox.GetSelectHdl().Call( &aMakeBox );
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwLabPage, PageHdl, Button *, EMPTYARG )
+
+// --------------------------------------------------------------------------
+
+
+
+IMPL_LINK( SwLabPage, MakeHdl, ListBox *, EMPTYARG )
+{
+ WaitObject aWait( GetParent() );
+
+ aTypeBox.Clear();
+ GetParent()->TypeIds().Remove( 0, GetParent()->TypeIds().Count() );
+
+ const String aMake = aMakeBox.GetSelectEntry();
+ GetParent()->ReplaceGroup( aMake, &aItem );
+ aItem.aLstMake = aMake;
+
+ const sal_Bool bCont = aContButton.IsChecked();
+ const sal_uInt16 nCount = GetParent()->Recs().Count();
+ sal_uInt16 nLstType = 0;
+
+ for ( sal_uInt16 i = 0; i < nCount; ++i )
+ {
+ if ( GetParent()->Recs()[i]->aType == String( SW_RES(STR_CUSTOM) ) ||
+ GetParent()->Recs()[i]->bCont == bCont )
+ {
+ const String aType ( GetParent()->Recs()[i]->aType );
+ if ( aTypeBox.GetEntryPos(aType) == LISTBOX_ENTRY_NOTFOUND )
+ {
+ if ( !nLstType && aType == aItem.aLstType )
+ nLstType = GetParent()->TypeIds().Count();
+ aTypeBox.InsertEntry( aType );
+ GetParent()->TypeIds().Insert(i, GetParent()->TypeIds().Count());
+ }
+ }
+ }
+ if (nLstType)
+ aTypeBox.SelectEntry(aItem.aLstType);
+ else
+ aTypeBox.SelectEntryPos(0);
+ aTypeBox.GetSelectHdl().Call( &aTypeBox );
+ return 0;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+IMPL_LINK_INLINE_START( SwLabPage, TypeHdl, ListBox *, EMPTYARG )
+{
+ DisplayFormat();
+ aItem.aType = aTypeBox.GetSelectEntry();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwLabPage, TypeHdl, ListBox *, EMPTYARG )
+
+// --------------------------------------------------------------------------
+
+
+
+void SwLabPage::DisplayFormat()
+{
+ MetricField aField(this, WinBits(0));
+ aField.SetUnit (FUNIT_CM);
+ aField.SetDecimalDigits(2);
+ aField.SetMin (0);
+ aField.SetMax (LONG_MAX);
+
+ SwLabRec* pRec = GetSelectedEntryPos();
+ aItem.aLstType = pRec->aType;
+ SETFLDVAL(aField, pRec->lWidth);
+ aField.Reformat();
+ const String aWString = aField.GetText();
+
+ SETFLDVAL(aField, pRec->lHeight);
+ aField.Reformat();
+
+ String aText = pRec->aType;
+ aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": "));
+ aText += aWString;
+ aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" x "));
+ aText += aField.GetText();
+ aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" ("));
+ aText += String::CreateFromInt32( pRec->nCols );
+ aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" x "));
+ aText += String::CreateFromInt32( pRec->nRows );
+ aText += ')';
+ aFormatInfo.SetText(aText);
+}
+
+// --------------------------------------------------------------------------
+
+SwLabRec* SwLabPage::GetSelectedEntryPos()
+{
+ String sSelEntry(aTypeBox.GetSelectEntry());
+
+ return GetParent()->GetRecord(sSelEntry, aContButton.IsChecked());
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwLabPage::InitDatabaseBox()
+{
+ if(GetNewDBMgr())
+ {
+ aDatabaseLB.Clear();
+#ifdef REPLACE_OFADBMGR
+ Sequence<OUString> aDataNames = SwNewDBMgr::GetExistingDatabaseNames();
+ const OUString* pDataNames = aDataNames.getConstArray();
+ for (long i = 0; i < aDataNames.getLength(); i++)
+ aDatabaseLB.InsertEntry(pDataNames[i]);
+ String sDBName = sActDBName.GetToken( 0, DB_DELIM );
+ String sTableName = sActDBName.GetToken( 1, DB_DELIM );
+ aDatabaseLB.SelectEntry(sDBName);
+ if (GetNewDBMgr()->GetTableNames(&aTableLB, sDBName))
+ {
+ aTableLB.SelectEntry(sTableName);
+ GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName, sTableName);
+ }
+ else
+ aDBFieldLB.Clear();
+#else
+ SbaObject *pSbaObject = GetNewDBMgr()->GetSbaObject();
+ if(!pSbaObject)
+ return;
+ String sDBNames = pSbaObject->GetDatabaseNames();
+ sActDBName = aItem.sDBName;
+ if ( !sActDBName.Len() )
+ sActDBName = GetNewDBMgr()->GetAddressDBName();
+
+ sDBNames = SFX_APP()->LocalizeDBName(INI2NATIONAL, sDBNames);
+
+ sal_uInt16 nCount = sDBNames.GetTokenCount();
+
+ for (sal_uInt16 i = 0; i < nCount; i++)
+ aDatabaseLB.InsertEntry(sDBNames.GetToken(i));
+
+ String sDBName = SFX_APP()->LocalizeDBName( INI2NATIONAL,
+ sActDBName.GetToken( 0, DB_DELIM ));
+ aDatabaseLB.SelectEntry(sDBName);
+ if (GetNewDBMgr()->GetTableNames(&aTableLB, sDBName))
+ {
+ aTableLB.SelectEntry(sActDBName.GetToken(1, DB_DELIM));
+ GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName);
+ }
+ else
+ aDBFieldLB.Clear();
+#endif
+ }
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SfxTabPage* SwLabPage::Create(Window* pParent, const SfxItemSet& rSet)
+{
+ return new SwLabPage(pParent, rSet);
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwLabPage::ActivatePage(const SfxItemSet& rSet)
+{
+ Reset( rSet );
+}
+
+// --------------------------------------------------------------------------
+
+
+
+int SwLabPage::DeactivatePage(SfxItemSet* pSet)
+{
+ if (pSet)
+ FillItemSet(*pSet);
+
+ return sal_True;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwLabPage::FillItem(SwLabItem& rItem)
+{
+ rItem.bAddr = aAddrBox.IsChecked();
+ rItem.aWriting = aWritingEdit.GetText();
+ rItem.bCont = aContButton.IsChecked();
+ rItem.aMake = aMakeBox.GetSelectEntry();
+ rItem.aType = aTypeBox.GetSelectEntry();
+ rItem.sDBName = sActDBName;
+
+ SwLabRec* pRec = GetSelectedEntryPos();
+
+ rItem.lHDist = pRec->lHDist;
+ rItem.lVDist = pRec->lVDist;
+ rItem.lWidth = pRec->lWidth;
+ rItem.lHeight = pRec->lHeight;
+ rItem.lLeft = pRec->lLeft;
+ rItem.lUpper = pRec->lUpper;
+ rItem.nCols = pRec->nCols;
+ rItem.nRows = pRec->nRows;
+
+ rItem.aLstMake = aMakeBox.GetSelectEntry();
+ rItem.aLstType = aTypeBox.GetSelectEntry();
+}
+
+// --------------------------------------------------------------------------
+
+
+
+sal_Bool SwLabPage::FillItemSet(SfxItemSet& rSet)
+{
+ FillItem( aItem );
+ rSet.Put( aItem );
+
+ return sal_True;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwLabPage::Reset(const SfxItemSet& rSet)
+{
+ aItem = (const SwLabItem&) rSet.Get(FN_LABEL);
+ String sDBName = aItem.sDBName;
+
+ String aWriting( aItem.aWriting );
+
+ aAddrBox .Check ( aItem.bAddr );
+ aWritingEdit.SetText ( aWriting.ConvertLineEnd() );
+ aMakeBox .SelectEntry( aItem.aMake );
+
+ if (aTypeBox.GetEntryPos(aItem.aType) != LISTBOX_ENTRY_NOTFOUND)
+ {
+ aTypeBox.SelectEntry(aItem.aType);
+ aTypeBox.GetSelectHdl().Call(&aTypeBox);
+ }
+ if (aDatabaseLB.GetEntryPos(sDBName) != LISTBOX_ENTRY_NOTFOUND)
+ {
+ aDatabaseLB.SelectEntry(sDBName);
+ aDatabaseLB.GetSelectHdl().Call(&aDatabaseLB);
+ }
+
+ if (aItem.bCont)
+ aContButton .Check();
+ else
+ aSheetButton.Check();
+}
+/*-- 08.07.99 14:00:02---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwVisitingCardPage::SwVisitingCardPage(Window* pParent, const SfxItemSet& rSet) :
+ SfxTabPage(pParent, SW_RES(TP_VISITING_CARDS), rSet),
+ aAutoTextLB(this, ResId( LB_AUTO_TEXT )),
+ aAutoTextGroupFT(this, ResId( FT_AUTO_TEXT_GROUP )),
+ aAutoTextGroupLB(this, ResId( LB_AUTO_TEXT_GROUP )),
+ aContentGB(this, ResId( GB_CONTENT )),
+ aExampleWIN(this, ResId( WIN_EXAMPLE )),
+ aExampleGB(this, ResId( GB_EXAMPLE )),
+ sVisCardGroup(ResId(ST_VISCARD_GROUP)),
+ pExampleFrame(0)
+{
+ FreeResource();
+ aAutoTextLB.SetWindowBits( WB_HSCROLL );
+ aAutoTextLB.SetSpaceBetweenEntries(0);
+ aAutoTextLB.SetSelectionMode( SINGLE_SELECTION );
+ aAutoTextLB.SetHelpId(HID_BUSINESS_CARD_CONTENT);
+
+ SetExchangeSupport();
+ aAutoTextLB.SetSelectHdl(LINK(this, SwVisitingCardPage, AutoTextSelectHdl));
+ aAutoTextGroupLB.SetSelectHdl(LINK(this, SwVisitingCardPage, AutoTextSelectHdl));
+
+ aAutoTextLB.Show();
+ aAutoTextGroupFT.Show();
+ aAutoTextGroupLB.Show();
+ InitFrameControl();
+ aExampleWIN.Hide();
+
+}
+/*-- 08.07.99 14:00:03---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwVisitingCardPage::~SwVisitingCardPage()
+{
+ for(sal_uInt16 i = 0; i < aAutoTextGroupLB.GetEntryCount(); i++)
+ delete (String*)aAutoTextGroupLB.GetEntryData( i );
+ _xAutoText = 0;
+ SvLBoxEntry* pEntry = aAutoTextLB.First();
+ while(pEntry)
+ {
+ String * pString = (String*)pEntry->GetUserData();
+ delete pString;
+ pEntry = aAutoTextLB.Next(pEntry);
+ }
+ delete pExampleFrame;
+}
+/*-- 08.07.99 14:00:03---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SfxTabPage* SwVisitingCardPage::Create(Window* pParent, const SfxItemSet& rSet)
+{
+ return new SwVisitingCardPage(pParent, rSet);
+}
+/*-- 08.07.99 14:00:03---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwVisitingCardPage::ActivatePage(const SfxItemSet& rSet)
+{
+ Reset( rSet );
+ UpdateFields();
+}
+/*-- 08.07.99 14:00:04---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+int SwVisitingCardPage::DeactivatePage(SfxItemSet* pSet)
+{
+ if (pSet)
+ FillItemSet(*pSet);
+ return LEAVE_PAGE;
+}
+/*-- 08.07.99 14:00:04---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwVisitingCardPage::FillItemSet(SfxItemSet& rSet)
+{
+ String* pGroup = (String*)aAutoTextGroupLB.GetEntryData(
+ aAutoTextGroupLB.GetSelectEntryPos());
+ DBG_ASSERT(pGroup, "no group selected?")
+ if(pGroup)
+ aLabItem.sGlossaryGroup = *pGroup;
+
+ SvLBoxEntry* pSelEntry = aAutoTextLB.FirstSelected();
+ if(pSelEntry)
+ aLabItem.sGlossaryBlockName = *(String*)pSelEntry->GetUserData();
+ rSet.Put(aLabItem);
+ return sal_True;
+}
+/*-- 08.07.99 14:00:05---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void lcl_SelectBlock(SvTreeListBox& rAutoTextLB, const String& rBlockName)
+{
+ SvLBoxEntry* pEntry = rAutoTextLB.First();
+ while(pEntry)
+ {
+ if(*(String*)pEntry->GetUserData() == rBlockName)
+ {
+ rAutoTextLB.Select(pEntry);
+ rAutoTextLB.MakeVisible(pEntry);
+ }
+ pEntry = rAutoTextLB.Next(pEntry);
+ }
+}
+//-----------------------------------------------------------------------------
+sal_Bool lcl_FindBlock(SvTreeListBox& rAutoTextLB, const String& rBlockName)
+{
+ SvLBoxEntry* pEntry = rAutoTextLB.First();
+ while(pEntry)
+ {
+ if(*(String*)pEntry->GetUserData() == rBlockName)
+ {
+ rAutoTextLB.Select(pEntry);
+ return sal_True;
+ }
+ pEntry = rAutoTextLB.Next(pEntry);
+ }
+ return sal_False;
+}
+//-----------------------------------------------------------------------------
+void SwVisitingCardPage::Reset(const SfxItemSet& rSet)
+{
+ aLabItem = (const SwLabItem&) rSet.Get(FN_LABEL);
+
+ sal_Bool bFound = sal_False;
+ for(sal_uInt16 i = 0; i < aAutoTextGroupLB.GetEntryCount() && !bFound; i++)
+ if(aLabItem.sGlossaryGroup == *(String*)aAutoTextGroupLB.GetEntryData( i ))
+ {
+ bFound = sal_True;
+ break;
+ }
+
+ if(bFound)
+ {
+ if(aAutoTextGroupLB.GetSelectEntryPos() != i)
+ {
+ aAutoTextGroupLB.SelectEntryPos(i);
+ AutoTextSelectHdl(&aAutoTextGroupLB);
+ }
+ if(lcl_FindBlock(aAutoTextLB, aLabItem.sGlossaryBlockName))
+ {
+ SvLBoxEntry* pSelEntry = aAutoTextLB.FirstSelected();
+ if( pSelEntry &&
+ *(String*)pSelEntry->GetUserData() != aLabItem.sGlossaryBlockName)
+ {
+ lcl_SelectBlock(aAutoTextLB, aLabItem.sGlossaryBlockName);
+ AutoTextSelectHdl(&aAutoTextLB);
+ }
+ }
+ }
+}
+/* -----------------08.07.99 15:15-------------------
+
+ --------------------------------------------------*/
+void SwVisitingCardPage::InitFrameControl()
+{
+ Link aLink(LINK(
+ this, SwVisitingCardPage, FrameControlInitializedHdl));
+ pExampleFrame = new SwOneExampleFrame(aExampleWIN, EX_SHOW_BUSINESS_CARDS, &aLink);
+
+ uno::Reference< lang::XMultiServiceFactory > xMgr = getProcessServiceFactory();
+ //now the AutoText ListBoxes have to be filled
+
+ uno::Reference< uno::XInterface > xAText =
+ xMgr->createInstance( C2U("com.sun.star.text.AutoTextContainer") );
+ _xAutoText = uno::Reference< container::XNameAccess >(xAText, uno::UNO_QUERY);
+
+ uno::Sequence<OUString> aNames = _xAutoText->getElementNames();
+ const OUString* pGroups = aNames.getConstArray();
+ for(sal_uInt16 i = 0; i < aNames.getLength(); i++)
+ {
+ uno::Any aGroup = _xAutoText->getByName(pGroups[i]);
+ uno::Reference< text::XAutoTextGroup > xGroup = *(uno::Reference< text::XAutoTextGroup > *)aGroup.getValue();
+ uno::Reference< container::XIndexAccess > xIdxAcc(xGroup, uno::UNO_QUERY);
+ if(!xIdxAcc.is() || xIdxAcc->getCount())
+ {
+ uno::Reference< beans::XPropertySet > xPrSet(xGroup, uno::UNO_QUERY);
+ uno::Any aTitle = xPrSet->getPropertyValue(CL2S(UNO_NAME_TITLE));
+ OUString uTitle;
+ aTitle >>= uTitle;
+ String sGroup(pGroups[i]);
+ sal_uInt16 nEntry = aAutoTextGroupLB.InsertEntry(uTitle);
+ aAutoTextGroupLB.SetEntryData(nEntry, new String(sGroup));
+ }
+ }
+ if(LISTBOX_ENTRY_NOTFOUND == aAutoTextGroupLB.GetSelectEntryPos())
+ aAutoTextGroupLB.SelectEntryPos(0);
+ String sCurGroupName(
+ *(String*)aAutoTextGroupLB.GetEntryData(aAutoTextGroupLB.GetSelectEntryPos()));
+ if(_xAutoText->hasByName(sCurGroupName))
+ {
+ uno::Any aGroup = _xAutoText->getByName(sCurGroupName);
+ try
+ {
+ uno::Reference< text::XAutoTextGroup > xGroup = *(uno::Reference< text::XAutoTextGroup > *)aGroup.getValue();
+ uno::Sequence<OUString> aBlockNames = xGroup->getElementNames();
+ const OUString* pBlocks = aBlockNames.getConstArray();
+ uno::Sequence< OUString > aTitles = xGroup->getTitles() ;
+ const OUString* pTitles = aTitles.getConstArray();
+ for(i = 0; i < aBlockNames.getLength();i++)
+ {
+ String sTitle(pTitles[i]);
+ SvLBoxEntry* pEntry = aAutoTextLB.InsertEntry(sTitle);
+ String sBlock(pBlocks[i]);
+ pEntry->SetUserData(new String(sBlock));
+ }
+ }
+ catch( uno::RuntimeException& )
+ {
+ // we'll be her if path settings were wrong
+ }
+ }
+}
+/* -----------------01.10.99 13:19-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK( SwVisitingCardPage, FrameControlInitializedHdl, void*, EMPTYARG )
+{
+ AutoTextSelectHdl(&aAutoTextGroupLB);
+ return 0;
+};
+/* -----------------22.07.99 11:06-------------------
+
+ --------------------------------------------------*/
+void lcl_SetUserField(uno::Reference< container::XNameAccess > & xFldMasters,
+ const String& rFldName, const String& rContent )
+{
+ String sFldName( CL2S("com.sun.star.text.FieldMaster.User."));
+ sFldName += rFldName;
+ OUString uFldName(sFldName);
+ if(xFldMasters->hasByName(uFldName))
+ {
+ uno::Any aFirstName = xFldMasters->getByName(uFldName);
+ uno::Reference< beans::XPropertySet > xFld = *(uno::Reference< beans::XPropertySet > *)aFirstName.getValue();
+ uno::Any aContent;
+ aContent <<= rtl::OUString(rContent);
+ xFld->setPropertyValue(CL2S(UNO_NAME_CONTENT), aContent);
+ }
+}
+
+IMPL_LINK( SwVisitingCardPage, AutoTextSelectHdl, void*, pBox )
+{
+ if(pExampleFrame->IsInitialized() && _xAutoText.is())
+ {
+ sal_Bool bGroup = &aAutoTextGroupLB == pBox;
+
+ String sGroup(
+ *(String*)aAutoTextGroupLB.GetEntryData(aAutoTextGroupLB.GetSelectEntryPos()));
+ uno::Any aGroup = _xAutoText->getByName(sGroup);
+ uno::Reference< text::XAutoTextGroup > xGroup = *(uno::Reference< text::XAutoTextGroup > *)aGroup.getValue();
+
+ if(bGroup)
+ {
+ SvLBoxEntry* pEntry = aAutoTextLB.First();
+ while(pEntry)
+ {
+ String * pString = (String*)pEntry->GetUserData();
+ delete pString;
+ pEntry = aAutoTextLB.Next(pEntry);
+ }
+ aAutoTextLB.Clear();
+ uno::Sequence<OUString> aBlockNames = xGroup->getElementNames();
+ const OUString* pBlocks = aBlockNames.getConstArray();
+ uno::Sequence< OUString > aTitles = xGroup->getTitles() ;
+ const OUString* pTitles = aTitles.getConstArray();
+ for(sal_uInt16 i = 0; i < aBlockNames.getLength();i++)
+ {
+ String sTitle(pTitles[i]);
+ SvLBoxEntry* pEntry = aAutoTextLB.InsertEntry(sTitle);
+ String sBlock(pBlocks[i]);
+ pEntry->SetUserData(new String(sBlock));
+ }
+ }
+ SvLBoxEntry* pSel = aAutoTextLB.FirstSelected();
+ String sEntry;
+ if(pSel)
+ sEntry = *(String*)pSel->GetUserData();
+ pExampleFrame->ExecUndo();
+ uno::Reference< text::XTextCursor > & xCrsr = pExampleFrame->GetTextCursor();
+ OUString uEntry(sEntry);
+ if(sEntry.Len() && xGroup->hasByName(uEntry))
+ {
+ uno::Any aEntry(xGroup->getByName(uEntry));
+ uno::Reference< text::XAutoTextEntry > xEntry = *(uno::Reference< text::XAutoTextEntry > *)aEntry.getValue();
+ if(xEntry.is())
+ {
+ uno::Reference< text::XTextRange > xRange(xCrsr, uno::UNO_QUERY);
+ xEntry->applyTo(xRange);
+ }
+ UpdateFields();
+ }
+ }
+ return 0;
+}
+/* -----------------01.10.99 11:59-------------------
+
+ --------------------------------------------------*/
+void SwVisitingCardPage::UpdateFields()
+{
+ uno::Reference< frame::XModel > xModel;
+ if(pExampleFrame && (xModel = pExampleFrame->GetModel()).is())
+ {
+ SwLabDlg::UpdateFieldInformation(xModel, aLabItem);
+ }
+}
+/* -----------------01.10.99 15:16-------------------
+
+ --------------------------------------------------*/
+void SwLabDlg::UpdateFieldInformation(uno::Reference< frame::XModel > & xModel, const SwLabItem& rItem)
+{
+ uno::Reference< text::XTextFieldsSupplier > xFlds(xModel, uno::UNO_QUERY);
+ uno::Reference< container::XNameAccess > xFldMasters = xFlds->getTextFieldMasters();
+
+ try
+ {
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_FIRSTNAME ), rItem.aPrivFirstName );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_NAME ), rItem.aPrivName );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVSHORTCUT ), rItem.aPrivShortCut );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_FIRSTNAME_2 ), rItem.aPrivFirstName2 );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_NAME_2 ), rItem.aPrivName2 );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVSHORTCUT_2 ), rItem.aPrivShortCut2 );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVSTREET ), rItem.aPrivStreet );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVZIP ), rItem.aPrivZip );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVCITY ), rItem.aPrivCity );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVCOUNTRY ), rItem.aPrivCountry );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVSTATE ), rItem.aPrivState );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVTITLE ), rItem.aPrivTitle );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVPROFESSION ), rItem.aPrivProfession );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVPHONE ), rItem.aPrivPhone );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVMOBILE ), rItem.aPrivMobile );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVFAX ), rItem.aPrivFax );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVWWW ), rItem.aPrivWWW );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_PRIVMAIL ), rItem.aPrivMail );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPCOMPANY ), rItem.aCompCompany );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPCOMPANYEXT ), rItem.aCompCompanyExt );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPSLOGAN ), rItem.aCompSlogan );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPSTREET ), rItem.aCompStreet );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPZIP ), rItem.aCompZip );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPCITY ), rItem.aCompCity );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPCOUNTRY ), rItem.aCompCountry );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPSTATE ), rItem.aCompState );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPPOSITION ), rItem.aCompPosition );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPPHONE ), rItem.aCompPhone );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPMOBILE ), rItem.aCompMobile );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPFAX ), rItem.aCompFax );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPWWW ), rItem.aCompWWW );
+ lcl_SetUserField(xFldMasters, CL2S(USER_FIELD_COMPMAIL ), rItem.aCompMail );
+ }
+ catch( uno::RuntimeException&)
+ {
+ //
+ }
+
+ uno::Reference< container::XEnumerationAccess > xFldAcc = xFlds->getTextFields();
+ uno::Reference< util::XRefreshable > xRefresh(xFldAcc, uno::UNO_QUERY);
+ xRefresh->refresh();
+}
+
+/* -----------------29.09.99 08:55-------------------
+
+ --------------------------------------------------*/
+SwPrivateDataPage::SwPrivateDataPage(Window* pParent, const SfxItemSet& rSet) :
+ SfxTabPage(pParent, SW_RES(TP_PRIVATE_DATA), rSet),
+ aDataGB(this, ResId( GB_DATA )),
+ aNameFT(this, ResId( FT_NAME )),
+ aFirstNameED(this, ResId( ED_FIRSTNAME )),
+ aNameED(this, ResId( ED_NAME )),
+ aShortCutED(this, ResId( ED_SHORTCUT )),
+ aName2FT(this, ResId( FT_NAME_2 )),
+ aFirstName2ED(this, ResId( ED_FIRSTNAME_2 )),
+ aName2ED(this, ResId( ED_NAME_2 )),
+ aShortCut2ED(this, ResId( ED_SHORTCUT_2 )),
+ aStreetFT(this, ResId( FT_STREET )),
+ aStreetED(this, ResId( ED_STREET )),
+ aZipCityFT(this, ResId( FT_ZIPCITY )),
+ aZipED(this, ResId( ED_ZIP )),
+ aCityED(this, ResId( ED_CITY )),
+ aCountryStateFT(this, ResId(FT_COUNTRYSTATE )),
+ aCountryED(this, ResId( ED_COUNTRY )),
+ aStateED(this, ResId( ED_STATE )),
+ aTitleProfessionFT(this, ResId(FT_TITLEPROF )),
+ aProfessionED(this, ResId( ED_PROFESSION )),
+ aTitleED(this, ResId( ED_TITLE )),
+ aPhoneFT(this, ResId( FT_PHONE )),
+ aPhoneED(this, ResId( ED_PHONE )),
+ aMobilePhoneED(this, ResId( ED_MOBILE )),
+ aFaxFT(this, ResId( FT_FAX )),
+ aFaxED(this, ResId( ED_FAX )),
+ aWWWMailFT(this, ResId( FT_WWWMAIL )),
+ aHomePageED(this, ResId( ED_WWW )),
+ aMailED(this, ResId( ED_MAIL ))
+{
+ FreeResource();
+ SetExchangeSupport();
+}
+
+/*-- 29.09.99 08:55:57---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwPrivateDataPage::~SwPrivateDataPage()
+{
+}
+/*-- 29.09.99 08:55:57---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SfxTabPage* SwPrivateDataPage::Create(Window* pParent, const SfxItemSet& rSet)
+{
+ return new SwPrivateDataPage(pParent, rSet);
+}
+/*-- 29.09.99 08:55:57---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwPrivateDataPage::ActivatePage(const SfxItemSet& rSet)
+{
+ Reset(rSet);
+}
+/*-- 29.09.99 08:55:58---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+int SwPrivateDataPage::DeactivatePage(SfxItemSet* pSet)
+{
+ if (pSet)
+ FillItemSet(*pSet);
+ return LEAVE_PAGE;
+}
+/*-- 29.09.99 08:55:58---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwPrivateDataPage::FillItemSet(SfxItemSet& rSet)
+{
+
+ SwLabItem aItem = (const SwLabItem&) GetTabDialog()->GetExampleSet()->Get(FN_LABEL);
+ aItem.aPrivFirstName = aFirstNameED .GetText();
+ aItem.aPrivName = aNameED .GetText( );
+ aItem.aPrivShortCut = aShortCutED .GetText( );
+ aItem.aPrivFirstName2 = aFirstName2ED .GetText();
+ aItem.aPrivName2 = aName2ED .GetText( );
+ aItem.aPrivShortCut2 = aShortCut2ED .GetText( );
+ aItem.aPrivStreet = aStreetED .GetText( );
+ aItem.aPrivZip = aZipED .GetText( );
+ aItem.aPrivCity = aCityED .GetText( );
+ aItem.aPrivCountry = aCountryED .GetText( );
+ aItem.aPrivState = aStateED .GetText( );
+ aItem.aPrivTitle = aTitleED .GetText( );
+ aItem.aPrivProfession= aProfessionED.GetText( );
+ aItem.aPrivPhone = aPhoneED .GetText( );
+ aItem.aPrivMobile = aMobilePhoneED.GetText( );
+ aItem.aPrivFax = aFaxED .GetText( );
+ aItem.aPrivWWW = aHomePageED .GetText( );
+ aItem.aPrivMail = aMailED .GetText( );
+
+ rSet.Put(aItem);
+ return sal_True;
+}
+/*-- 29.09.99 08:55:59---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwPrivateDataPage::Reset(const SfxItemSet& rSet)
+{
+ const SwLabItem& aItem = (const SwLabItem&) rSet.Get(FN_LABEL);
+ aFirstNameED.SetText(aItem.aPrivFirstName);
+ aNameED .SetText(aItem.aPrivName);
+ aShortCutED .SetText(aItem.aPrivShortCut);
+ aFirstName2ED.SetText(aItem.aPrivFirstName2);
+ aName2ED .SetText(aItem.aPrivName2);
+ aShortCut2ED .SetText(aItem.aPrivShortCut2);
+ aStreetED .SetText(aItem.aPrivStreet);
+ aZipED .SetText(aItem.aPrivZip);
+ aCityED .SetText(aItem.aPrivCity);
+ aCountryED .SetText(aItem.aPrivCountry);
+ aStateED .SetText(aItem.aPrivState);
+ aTitleED .SetText(aItem.aPrivTitle);
+ aProfessionED.SetText(aItem.aPrivProfession);
+ aPhoneED .SetText(aItem.aPrivPhone);
+ aMobilePhoneED.SetText(aItem.aPrivMobile);
+ aFaxED .SetText(aItem.aPrivFax);
+ aHomePageED .SetText(aItem.aPrivWWW);
+ aMailED .SetText(aItem.aPrivMail);
+}
+/* -----------------29.09.99 08:56-------------------
+
+ --------------------------------------------------*/
+SwBusinessDataPage::SwBusinessDataPage(Window* pParent, const SfxItemSet& rSet) :
+ SfxTabPage(pParent, SW_RES(TP_BUSINESS_DATA), rSet),
+ aDataGB(this, ResId(GB_DATA)),
+ aCompanyFT(this, ResId( FT_COMP )),
+ aCompanyED(this, ResId( ED_COMP )),
+ aCompanyExtFT(this, ResId( FT_COMP_EXT )),
+ aCompanyExtED(this, ResId( ED_COMP_EXT )),
+ aSloganFT(this, ResId( FT_SLOGAN )),
+ aSloganED(this, ResId( ED_SLOGAN )),
+ aStreetFT(this, ResId( FT_STREET )),
+ aStreetED(this, ResId( ED_STREET )),
+ aZipCityFT(this, ResId( FT_ZIPCITY )),
+ aZipED(this, ResId( ED_ZIP )),
+ aCityED(this, ResId( ED_CITY )),
+ aCountryStateFT(this, ResId(FT_COUNTRYSTATE )),
+ aCountryED(this, ResId( ED_COUNTRY )),
+ aStateED(this, ResId( ED_STATE )),
+ aPositionFT(this, ResId( FT_POSITION )),
+ aPositionED(this, ResId( ED_POSITION )),
+ aPhoneFT(this, ResId( FT_PHONE )),
+ aPhoneED(this, ResId( ED_PHONE )),
+ aMobilePhoneED(this, ResId( ED_MOBILE )),
+ aFaxED(this, ResId( ED_FAX )),
+ aWWWMailFT(this, ResId( FT_WWWMAIL )),
+ aHomePageED(this, ResId( ED_WWW )),
+ aMailED(this, ResId( ED_MAIL ))
+{
+ FreeResource();
+ SetExchangeSupport();
+}
+
+/*-- 29.09.99 08:56:06---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwBusinessDataPage::~SwBusinessDataPage()
+{
+}
+/*-- 29.09.99 08:56:06---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SfxTabPage* SwBusinessDataPage::Create(Window* pParent, const SfxItemSet& rSet)
+{
+ return new SwBusinessDataPage(pParent, rSet);
+}
+/*-- 29.09.99 08:56:06---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwBusinessDataPage::ActivatePage(const SfxItemSet& rSet)
+{
+ Reset(rSet);
+}
+/*-- 29.09.99 08:56:06---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+int SwBusinessDataPage::DeactivatePage(SfxItemSet* pSet)
+{
+ if (pSet)
+ FillItemSet(*pSet);
+ return LEAVE_PAGE;
+}
+/*-- 29.09.99 08:56:06---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwBusinessDataPage::FillItemSet(SfxItemSet& rSet)
+{
+ SwLabItem aItem = (const SwLabItem&) GetTabDialog()->GetExampleSet()->Get(FN_LABEL);
+
+ aItem.aCompCompany = aCompanyED .GetText();
+ aItem.aCompCompanyExt= aCompanyExtED .GetText();
+ aItem.aCompSlogan = aSloganED .GetText();
+ aItem.aCompStreet = aStreetED .GetText();
+ aItem.aCompZip = aZipED .GetText();
+ aItem.aCompCity = aCityED .GetText();
+ aItem.aCompCountry = aCountryED .GetText();
+ aItem.aCompState = aStateED .GetText();
+ aItem.aCompPosition = aPositionED .GetText();
+ aItem.aCompPhone = aPhoneED .GetText();
+ aItem.aCompMobile = aMobilePhoneED .GetText();
+ aItem.aCompFax = aFaxED .GetText();
+ aItem.aCompWWW = aHomePageED .GetText();
+ aItem.aCompMail = aMailED .GetText();
+
+ rSet.Put(aItem);
+ return sal_True;
+}
+/*-- 29.09.99 08:56:07---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwBusinessDataPage::Reset(const SfxItemSet& rSet)
+{
+ const SwLabItem& aItem = (const SwLabItem&) rSet.Get(FN_LABEL);
+ aCompanyED .SetText(aItem.aCompCompany);
+ aCompanyExtED .SetText(aItem.aCompCompanyExt);
+ aSloganED .SetText(aItem.aCompSlogan);
+ aStreetED .SetText(aItem.aCompStreet);
+ aZipED .SetText(aItem.aCompZip);
+ aCityED .SetText(aItem.aCompCity);
+ aCountryED .SetText(aItem.aCompCountry);
+ aStateED .SetText(aItem.aCompState);
+ aPositionED .SetText(aItem.aCompPosition);
+ aPhoneED .SetText(aItem.aCompPhone);
+ aMobilePhoneED .SetText(aItem.aCompMobile);
+ aFaxED .SetText(aItem.aCompFax);
+ aHomePageED .SetText(aItem.aCompWWW);
+ aMailED .SetText(aItem.aCompMail);
+}
+
+/*-----------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.136 2000/09/18 16:05:25 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.135 2000/07/18 12:50:08 os
+ replace ofadbmgr
+
+ Revision 1.134 2000/06/21 13:54:54 os
+ unicode error remvoed
+
+ Revision 1.133 2000/06/16 08:31:13 martin.hollmichel
+ add: header
+
+ Revision 1.132 2000/06/13 09:59:42 os
+ using UCB
+
+ Revision 1.131 2000/05/30 15:09:06 jp
+ Bugfix and optimation for unicode
+
+ Revision 1.130 2000/05/16 17:29:11 jp
+ Changes for Unicode
+
+ Revision 1.129 2000/05/16 09:15:12 os
+ project usr removed
+
+ Revision 1.128 2000/04/18 15:31:35 os
+ UNICODE
+
+ Revision 1.127 2000/03/23 08:20:15 os
+ UNO III
+
+ Revision 1.126 2000/03/06 15:45:05 os
+ #73802# preview improved
+
+ Revision 1.125 2000/02/24 17:37:08 hr
+ 43447#: gcc
+
+ Revision 1.124 2000/02/14 14:47:58 os
+ #70473# Unicode
+
+ Revision 1.123 2000/02/10 11:31:39 os
+ #70359# titles added to AutoText groups
+
+ Revision 1.122 2000/02/09 14:08:55 os
+ #72787# HelpId added
+
+ Revision 1.121 2000/01/13 11:40:09 os
+ #71840# check selected entry
+
+ Revision 1.120 1999/12/27 09:52:27 os
+ #71262# Undo in SwOneExampleFrame; TreeListBox as AutoText - box
+
+ Revision 1.119 1999/12/07 16:34:13 os
+ #70355##70559# SHORTCUT->INITIALS; second private name
+
+ Revision 1.118 1999/11/26 11:27:36 os
+ #70154# check if the text block is available
+
+ Revision 1.117 1999/11/25 15:42:54 os
+ headers corrected
+
+ Revision 1.116 1999/11/23 08:14:51 os
+ header corrected
+
+ Revision 1.115 1999/11/19 16:40:22 os
+ modules renamed
+
+ Revision 1.114 1999/11/19 14:08:47 os
+ #69462# Names corrected
+
+ Revision 1.113 1999/11/10 15:39:22 os
+ SwOneExampleFrame: CTor changed
+
+ Revision 1.112 1999/11/10 10:53:07 tl
+ includes rearranged
+
+ Revision 1.111 1999/10/21 17:48:05 jp
+ have to change - SearchFile with SfxIniManager, dont use SwFinder for this
+
+ Revision 1.110 1999/10/08 10:00:05 jp
+ no cast from GetpApp to SfxApp
+
+ Revision 1.109 1999/10/01 13:41:17 os
+ apply AutoText to business cards
+
+ Revision 1.108 1999/10/01 12:03:55 os
+ all fields are available
+
+ Revision 1.107 1999/09/30 07:52:42 os
+ new pages for business cards
+
+ Revision 1.106 1999/09/28 13:36:41 os
+ #67382# separate dialog for business cards; survive without data base
+
+ Revision 1.105 1999/09/24 13:53:09 os
+ chg: ODbRow/ODbVariant - includes moved
+
+ Revision 1.104 1999/09/10 13:07:12 os
+ TRY/CATCH block in StarOne AutoText access
+
+ Revision 1.103 1999/08/26 17:36:00 JP
+ no cast from GetpApp to SfxApp
+
+
+ Rev 1.102 26 Aug 1999 19:36:00 JP
+ no cast from GetpApp to SfxApp
+
+ Rev 1.101 28 Jul 1999 13:05:08 OS
+ new: SwOneExampleFrame
+
+ Rev 1.100 23 Jul 1999 10:06:00 OS
+ visiting cards tabpage
+
+ Rev 1.99 19 Jul 1999 15:58:42 MA
+ pass a Parent to the wait object
+
+ Rev 1.98 13 Jul 1999 09:32:50 OS
+ visiting cards TabPage
+
+ Rev 1.97 09 Jun 1999 19:34:42 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+ Rev 1.96 10 Feb 1999 14:33:10 MA
+ #61674# Direktdruck fuer Etiketten entfernt
+
+ Rev 1.95 07 Sep 1998 16:59:30 OM
+ #55930# Einzelnes Etikett an der korrekten Position drucken
+
+ Rev 1.94 09 Jul 1998 09:52:32 JP
+ EmptyStr benutzen
+
+ Rev 1.93 14 Mar 1998 15:12:50 OM
+ ExchangeSupport repariert/implementiert
+
+ Rev 1.92 14 Mar 1998 14:26:46 OM
+ ExchangeSupport repariert/implementiert
+
+ Rev 1.91 14 Mar 1998 14:10:22 OM
+ ExchangeSupport repariert/implementiert
+
+ Rev 1.90 24 Nov 1997 11:52:12 MA
+ includes
+
+ Rev 1.89 03 Nov 1997 13:17:12 MA
+ precomp entfernt
+
+ Rev 1.88 03 Sep 1997 13:59:14 OM
+ #36627# Sinnvolle Fehlermeldungen liefern
+
+ Rev 1.87 02 Sep 1997 09:58:24 OM
+ SDB-Headeranpassung
+
+ Rev 1.86 05 May 1997 11:16:30 OM
+ Hilfetext fuer OK loeschen
+
+ Rev 1.85 29 Apr 1997 17:09:50 OM
+ HelpID fuer UserButton
+
+ Rev 1.84 21 Apr 1997 15:54:50 OM
+ #39002# GPF Etiketten gefixt
+
+ Rev 1.83 14 Apr 1997 12:03:36 OM
+ #38747# GPF nach Etikettenauswahl behoben
+
+ Rev 1.82 08 Apr 1997 10:10:12 NF
+ includes...
+
+ Rev 1.81 04 Apr 1997 14:04:54 OM
+ HelpIDs fuer DruckButton
+
+ Rev 1.80 25 Feb 1997 22:47:40 OM
+ Unvollstaendige Datenbank am Dialog korrigiert
+
+ Rev 1.79 20 Feb 1997 18:50:12 MA
+ fix: letzte Datenbank merken
+
+ Rev 1.78 20 Feb 1997 17:51:40 MA
+ fix: Deactivate ueber Fill
+
+ Rev 1.77 04 Dec 1996 13:54:02 OM
+ Kein konstanter AdressDBName mehr
+
+ Rev 1.76 11 Nov 1996 09:44:18 MA
+ ResMgr
+
+ Rev 1.75 29 Oct 1996 17:59:28 HJS
+ includes
+
+ Rev 1.74 24 Oct 1996 13:36:10 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.73 25 Sep 1996 14:11:12 OM
+ Neue Datenbanktrenner
+
+ Rev 1.72 16 Aug 1996 13:46:18 TRI
+ C40_INSERT statt Insert
+
+ Rev 1.71 05 Aug 1996 15:17:36 OM
+ Datenbankumstellung
+
+ Rev 1.70 26 Jul 1996 20:36:36 MA
+ includes
+
+ Rev 1.69 17 Jul 1996 13:47:04 OM
+ Datenbankumstellung 327
+
+*/
+
+
+
diff --git a/sw/source/ui/envelp/labfmt.cxx b/sw/source/ui/envelp/labfmt.cxx
new file mode 100644
index 000000000000..01c6edbf26f3
--- /dev/null
+++ b/sw/source/ui/envelp/labfmt.cxx
@@ -0,0 +1,754 @@
+/*************************************************************************
+ *
+ * $RCSfile: labfmt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SV_POLY_HXX //autogen
+#include <vcl/poly.hxx>
+#endif
+
+
+#include "swtypes.hxx"
+#include "cmdid.h"
+#include "label.hxx"
+#include "labimp.hxx"
+#include "labimg.hxx"
+#include "labfmt.hxx"
+#include "uitool.hxx"
+
+#include "label.hrc"
+#include "labfmt.hrc"
+
+
+// #define ------------------------------------------------------------------
+
+#define ROUND(x) ((USHORT) ((x) + .5))
+
+// --------------------------------------------------------------------------
+
+
+
+SwLabPreview::SwLabPreview( const SwLabFmtPage* pParent, const ResId& rResID ) :
+
+ Window((Window*) pParent, rResID),
+
+ aHDistStr (SW_RES(STR_HDIST )),
+ aVDistStr (SW_RES(STR_VDIST )),
+ aWidthStr (SW_RES(STR_WIDTH )),
+ aHeightStr(SW_RES(STR_HEIGHT)),
+ aLeftStr (SW_RES(STR_LEFT )),
+ aUpperStr (SW_RES(STR_UPPER )),
+ aColsStr (SW_RES(STR_COLS )),
+ aRowsStr (SW_RES(STR_ROWS )),
+ aBlackColor(COL_BLACK),
+ aGrayColor(COL_LIGHTGRAY),
+ aWhiteColor(COL_WHITE)
+
+{
+ SetMapMode(MAP_PIXEL);
+
+ const Size aSz(GetOutputSizePixel());
+
+ lOutWPix = aSz.Width ();
+ lOutHPix = aSz.Height();
+
+
+ SetBackground(Wallpaper(aWhiteColor));
+
+ Font aFont = GetFont();
+ aFont.SetFillColor(Color(COL_WHITE));
+ aFont.SetWeight (WEIGHT_NORMAL);
+ SetFont(aFont);
+
+ lHDistWidth = GetTextWidth(aHDistStr );
+ lVDistWidth = GetTextWidth(aVDistStr );
+ lHeightWidth = GetTextWidth(aHeightStr);
+ lLeftWidth = GetTextWidth(aLeftStr );
+ lUpperWidth = GetTextWidth(aUpperStr );
+ lColsWidth = GetTextWidth(aColsStr );
+
+ lXHeight = GetTextHeight();
+ lXWidth = GetTextWidth('X');
+
+ // Skalierungsfaktor
+ float fx = (float)(lOutWPix - (2 * (lLeftWidth + 15))) / (float)lOutWPix;
+
+ lOutWPix23 = (long)((float)lOutWPix * fx);
+ lOutHPix23 = (long)((float)lOutHPix * fx);
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwLabPreview::~SwLabPreview()
+{
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwLabPreview::Paint(const Rectangle &rRect)
+{
+ SetLineColor(aWhiteColor);
+ SetFillColor(aGrayColor);
+ Font aPaintFont(GetFont());
+ aPaintFont.SetTransparent(FALSE);
+ SetFont(aPaintFont);
+
+ // Groesse des darzustellenden Bereichs
+ long lDispW = ROUND(aItem.lLeft + aItem.lHDist);
+ long lDispH = ROUND(aItem.lUpper + aItem.lVDist);
+ if (aItem.nCols == 1)
+ lDispW += ROUND(aItem.lLeft );
+ else
+ lDispW += ROUND(aItem.lHDist / 10);
+ if (aItem.nRows == 1)
+ lDispH += ROUND(aItem.lUpper);
+ else
+ lDispH += ROUND(aItem.lVDist / 10);
+
+ // Skalierungsfaktor
+ float fx = (float) lOutWPix23 / Max(1L, lDispW),
+ fy = (float) lOutHPix23 / Max(1L, lDispH),
+ f = fx < fy ? fx : fy;
+
+ // Nullpunkt
+ long lOutlineW = ROUND(f * lDispW);
+ long lOutlineH = ROUND(f * lDispH);
+
+ long lX0 = (lOutWPix - lOutlineW) / 2;
+ long lY0 = (lOutHPix - lOutlineH) / 2;
+ long lX1 = ROUND(lX0 + f * aItem.lLeft );
+ long lY1 = ROUND(lY0 + f * aItem.lUpper);
+ long lX2 = ROUND(lX0 + f * (aItem.lLeft + aItem.lWidth ));
+ long lY2 = ROUND(lY0 + f * (aItem.lUpper + aItem.lHeight));
+ long lX3 = ROUND(lX0 + f * (aItem.lLeft + aItem.lHDist ));
+ long lY3 = ROUND(lY0 + f * (aItem.lUpper + aItem.lVDist ));
+
+ // Umriss zeichnen (Flaeche)
+ DrawRect(Rectangle(Point(lX0, lY0), Size(lOutlineW, lOutlineH)));
+
+ // Umriss zeichnen (Umrandung)
+ SetLineColor(aBlackColor);
+ DrawLine(Point(lX0, lY0), Point(lX0 + lOutlineW - 1, lY0)); // Oben
+ DrawLine(Point(lX0, lY0), Point(lX0, lY0 + lOutlineH - 1)); // Links
+ if (aItem.nCols == 1)
+ DrawLine(Point(lX0 + lOutlineW - 1, lY0), Point(lX0 + lOutlineW - 1, lY0 + lOutlineH - 1)); // Rechts
+ if (aItem.nRows == 1)
+ DrawLine(Point(lX0, lY0 + lOutlineH - 1), Point(lX0 + lOutlineW - 1, lY0 + lOutlineH - 1)); // Unten
+
+ // Etiketten
+ SetClipRegion (Rectangle(Point(lX0, lY0), Size(lOutlineW, lOutlineH)));
+ SetFillColor(aWhiteColor);
+ for (USHORT nRow = 0; nRow < Min((USHORT) 2, (USHORT) aItem.nRows); nRow++)
+ for (USHORT nCol = 0; nCol < Min((USHORT) 2, (USHORT) aItem.nCols); nCol++)
+ DrawRect(Rectangle(
+ Point(ROUND(lX0 + f * (aItem.lLeft + nCol * aItem.lHDist)),
+ ROUND(lY0 + f * (aItem.lUpper + nRow * aItem.lVDist))),
+ Size (ROUND(f * aItem.lWidth ),
+ ROUND(f * aItem.lHeight))));
+ SetClipRegion();
+
+ // Beschritung: Rand links
+ if (aItem.lLeft)
+ {
+ long lX = (lX0 + lX1) / 2;
+ DrawArrow(Point(lX0, lY0 - 5), Point(lX1, lY0 - 5), FALSE);
+ DrawArrow(Point(lX, lY0 - 10), Point(lX, lY0 - 5), TRUE);
+ DrawText(Point(lX1 - lLeftWidth, lY0 - 10 - lXHeight), aLeftStr);
+ }
+
+ // Beschriftung: Rand oben
+ if (aItem.lUpper)
+ {
+ DrawArrow(Point(lX0 - 5, lY0), Point(lX0 - 5, lY1), FALSE);
+ DrawText(Point(lX0 - 10 - lUpperWidth, ROUND(lY0 + f * aItem.lUpper / 2 - lXHeight / 2)), aUpperStr);
+ }
+
+ // Beschriftung: Breite und Hoehe
+ {
+ long lX = lX2 - lXWidth / 2 - lHeightWidth / 2;
+ long lY = lY1 + lXHeight;
+
+ DrawLine(Point(lX1, lY), Point(lX2 - 1, lY));
+ DrawLine(Point(lX, lY1), Point(lX, lY2 - 1));
+
+ DrawText(Point(lX1 + lXWidth / 2, lY - lXHeight / 2), aWidthStr);
+ DrawText(Point(lX - lHeightWidth / 2, lY2 - lXHeight - lXHeight / 2), aHeightStr);
+ }
+
+ // Beschriftung: Horz. Abstand
+ if (aItem.nCols > 1)
+ {
+ long lX = (lX1 + lX3) / 2;
+ DrawArrow(Point(lX1, lY0 - 5), Point(lX3, lY0 - 5), FALSE);
+ DrawArrow(Point(lX, lY0 - 10), Point(lX, lY0 - 5), TRUE);
+ DrawText(Point(lX - lHDistWidth / 2, lY0 - 10 - lXHeight), aHDistStr);
+ }
+
+ // Beschriftung: Vertikaler Abstand
+ if (aItem.nRows > 1)
+ {
+ DrawArrow(Point(lX0 - 5, lY1), Point(lX0 - 5, lY3), FALSE);
+ DrawText(Point(lX0 - 10 - lVDistWidth, ROUND(lY1 + f * aItem.lVDist / 2 - lXHeight / 2)), aVDistStr);
+ }
+
+ // Beschriftung: Spalten
+ {
+ long lY = lY0 + lOutlineH + 4;
+ DrawArrow(Point(lX0, lY), Point(lX0 + lOutlineW - 1, lY), TRUE);
+ DrawText(Point((lX0 + lX0 + lOutlineW - 1) / 2 - lColsWidth / 2, lY + 5), aColsStr);
+ }
+
+ // Beschriftung: Zeilen
+ {
+ long lX = lX0 + lOutlineW + 4;
+ DrawArrow(Point(lX, lY0), Point(lX, lY0 + lOutlineH - 1), TRUE);
+ DrawText(Point(lX + 5, (lY0 + lY0 + lOutlineH - 1 - lXHeight / 2) / 2), aRowsStr);
+ }
+}
+
+// Pfeil bzw. Intervall zeichnen --------------------------------------------
+
+
+
+void SwLabPreview::DrawArrow(const Point &rP1, const Point &rP2, BOOL bArrow)
+{
+ DrawLine(rP1, rP2);
+
+ if (bArrow)
+ {
+ Point aArr[3];
+
+ // Pfeil zeichnen
+ if (rP1.Y() == rP2.Y())
+ {
+ // Waagerecht
+ aArr[0].X() = rP2.X() - 5;
+ aArr[0].Y() = rP2.Y() - 2;
+ aArr[1].X() = rP2.X();
+ aArr[1].Y() = rP2.Y();
+ aArr[2].X() = rP2.X() - 5;
+ aArr[2].Y() = rP2.Y() + 2;
+ }
+ else
+ {
+ // Senkrecht
+ aArr[0].X() = rP2.X() - 2;
+ aArr[0].Y() = rP2.Y() - 5;
+ aArr[1].X() = rP2.X() + 2;
+ aArr[1].Y() = rP2.Y() - 5;
+ aArr[2].X() = rP2.X();
+ aArr[2].Y() = rP2.Y();
+ }
+
+ SetFillColor(aBlackColor);
+ DrawPolygon(Polygon(3, aArr));
+ }
+ else
+ {
+ // Intervall zeichnen
+ if (rP1.Y() == rP2.Y())
+ {
+ // Waagerecht
+ DrawLine(Point(rP1.X(), rP1.Y() - 2), Point(rP1.X(), rP1.Y() + 2));
+ DrawLine(Point(rP2.X(), rP2.Y() - 2), Point(rP2.X(), rP2.Y() + 2));
+ }
+ else
+ {
+ // Senkrecht
+ DrawLine(Point(rP1.X() - 2, rP1.Y()), Point(rP1.X() + 2, rP1.Y()));
+ DrawLine(Point(rP2.X() - 2, rP2.Y()), Point(rP2.X() + 2, rP2.Y()));
+ }
+ }
+}
+
+// --------------------------------------------------------------------------
+
+void SwLabPreview::Update(const SwLabItem& rItem)
+{
+ aItem = rItem;
+ Invalidate();
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwLabFmtPage::SwLabFmtPage(Window* pParent, const SfxItemSet& rSet) :
+
+ SfxTabPage(pParent, SW_RES(TP_LAB_FMT), rSet),
+ aItem ((const SwLabItem&) rSet.Get(FN_LABEL)),
+
+ aPreview (this, SW_RES(WIN_PREVIEW)),
+ aHDistText (this, SW_RES(TXT_HDIST )),
+ aHDistField (this, SW_RES(FLD_HDIST )),
+ aVDistText (this, SW_RES(TXT_VDIST )),
+ aVDistField (this, SW_RES(FLD_VDIST )),
+ aWidthText (this, SW_RES(TXT_WIDTH )),
+ aWidthField (this, SW_RES(FLD_WIDTH )),
+ aHeightText (this, SW_RES(TXT_HEIGHT )),
+ aHeightField (this, SW_RES(FLD_HEIGHT )),
+ aLeftText (this, SW_RES(TXT_LEFT )),
+ aLeftField (this, SW_RES(FLD_LEFT )),
+ aUpperText (this, SW_RES(TXT_UPPER )),
+ aUpperField (this, SW_RES(FLD_UPPER )),
+ aColsText (this, SW_RES(TXT_COLUMNS)),
+ aColsField (this, SW_RES(FLD_COLUMNS)),
+ aRowsText (this, SW_RES(TXT_ROWS )),
+ aRowsField (this, SW_RES(FLD_ROWS )),
+
+ bModified(FALSE)
+
+{
+ FreeResource();
+ SetExchangeSupport();
+
+ // Metriken
+ FieldUnit aMetric = ::GetDfltMetric(FALSE);
+ SetMetric(aHDistField , aMetric);
+ SetMetric(aVDistField , aMetric);
+ SetMetric(aWidthField , aMetric);
+ SetMetric(aHeightField, aMetric);
+ SetMetric(aLeftField , aMetric);
+ SetMetric(aUpperField , aMetric);
+
+ // Handler installieren
+ Link aLk = LINK(this, SwLabFmtPage, ModifyHdl);
+ aHDistField .SetModifyHdl( aLk );
+ aVDistField .SetModifyHdl( aLk );
+ aWidthField .SetModifyHdl( aLk );
+ aHeightField.SetModifyHdl( aLk );
+ aLeftField .SetModifyHdl( aLk );
+ aUpperField .SetModifyHdl( aLk );
+ aColsField .SetModifyHdl( aLk );
+ aRowsField .SetModifyHdl( aLk );
+
+ aLk = LINK(this, SwLabFmtPage, LoseFocusHdl);
+ aHDistField .SetLoseFocusHdl( aLk );
+ aVDistField .SetLoseFocusHdl( aLk );
+ aWidthField .SetLoseFocusHdl( aLk );
+ aHeightField.SetLoseFocusHdl( aLk );
+ aLeftField .SetLoseFocusHdl( aLk );
+ aUpperField .SetLoseFocusHdl( aLk );
+ aColsField .SetLoseFocusHdl( aLk );
+ aRowsField .SetLoseFocusHdl( aLk );
+
+ // Timer einstellen
+ aPreviewTimer.SetTimeout(1000);
+ aPreviewTimer.SetTimeoutHdl(LINK(this, SwLabFmtPage, PreviewHdl));
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwLabFmtPage::~SwLabFmtPage()
+{
+}
+
+// Modify-Handler der MetricFields. Preview-Timer starten -------------------
+
+
+
+IMPL_LINK_INLINE_START( SwLabFmtPage, ModifyHdl, Edit *, EMPTYARG )
+{
+ bModified = TRUE;
+ aPreviewTimer.Start();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwLabFmtPage, ModifyHdl, Edit *, EMPTYARG )
+
+// Preview invalidaten ------------------------------------------------------
+
+
+
+IMPL_LINK_INLINE_START( SwLabFmtPage, PreviewHdl, Timer *, EMPTYARG )
+{
+ aPreviewTimer.Stop();
+ ChangeMinMax();
+ FillItem( aItem );
+ aPreview.Update( aItem );
+
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwLabFmtPage, PreviewHdl, Timer *, EMPTYARG )
+
+// LoseFocus-Handler: Bei Aenderung sofort updaten --------------------------
+
+
+
+IMPL_LINK_INLINE_START( SwLabFmtPage, LoseFocusHdl, Control *, pControl )
+{
+ if (((Edit*) pControl)->IsModified())
+ PreviewHdl(0);
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwLabFmtPage, LoseFocusHdl, Control *, pControl )
+
+// Minima und Maxima fuer Fields festlegen ----------------------------------
+
+
+void SwLabFmtPage::ChangeMinMax()
+{
+ long lMax = 31748; // 56 cm
+
+ // Min und Max
+
+ long lLeft = GETFLDVAL(aLeftField ),
+ lUpper = GETFLDVAL(aUpperField),
+ lHDist = GETFLDVAL(aHDistField),
+ lVDist = GETFLDVAL(aVDistField);
+
+ long nMinSize = 10; // 0,1cm
+
+ aHDistField .SetMin(nMinSize, FUNIT_CM);
+ aVDistField .SetMin(nMinSize, FUNIT_CM);
+
+ aHDistField .SetMax((long) 100 * ((lMax - lLeft ) / Max(1L, (long) aColsField.GetValue())), FUNIT_TWIP);
+ aVDistField .SetMax((long) 100 * ((lMax - lUpper) / Max(1L, (long) aRowsField.GetValue())), FUNIT_TWIP);
+
+ aWidthField .SetMin(nMinSize, FUNIT_CM);
+ aHeightField.SetMin(nMinSize, FUNIT_CM);
+
+ aWidthField .SetMax((long) 100 * (lHDist), FUNIT_TWIP);
+ aHeightField.SetMax((long) 100 * (lVDist), FUNIT_TWIP);
+
+ aLeftField .SetMax((long) 100 * (lMax - (long) aColsField.GetValue() * GETFLDVAL(aHDistField)), FUNIT_TWIP);
+ aUpperField .SetMax((long) 100 * (lMax - (long) aRowsField.GetValue() * GETFLDVAL(aVDistField)), FUNIT_TWIP);
+
+ aColsField .SetMax((lMax - lLeft ) / Max(1L, lHDist));
+ aRowsField .SetMax((lMax - lUpper) / Max(1L, lVDist));
+
+ // First und Last
+
+ aHDistField .SetFirst(aHDistField .GetMin());
+ aVDistField .SetFirst(aVDistField .GetMin());
+
+ aHDistField .SetLast (aHDistField .GetMax());
+ aVDistField .SetLast (aVDistField .GetMax());
+
+ aWidthField .SetFirst(aWidthField .GetMin());
+ aHeightField.SetFirst(aHeightField.GetMin());
+
+ aWidthField .SetLast (aWidthField .GetMax());
+ aHeightField.SetLast (aHeightField.GetMax());
+
+ aLeftField .SetLast (aLeftField .GetMax());
+ aUpperField .SetLast (aUpperField .GetMax());
+
+ aColsField .SetLast (aColsField .GetMax());
+ aRowsField .SetLast (aRowsField .GetMax());
+
+ aHDistField .Reformat();
+ aVDistField .Reformat();
+ aWidthField .Reformat();
+ aHeightField.Reformat();
+ aLeftField .Reformat();
+ aUpperField .Reformat();
+ aColsField .Reformat();
+ aRowsField .Reformat();
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SfxTabPage* SwLabFmtPage::Create(Window* pParent, const SfxItemSet& rSet)
+{
+ return new SwLabFmtPage(pParent, rSet);
+}
+
+// ----------------------------------------------------------------------------
+
+
+
+void SwLabFmtPage::ActivatePage(const SfxItemSet& rSet)
+{
+ SfxItemSet aSet(rSet);
+ Reset(aSet);
+}
+
+// ----------------------------------------------------------------------------
+
+
+
+int SwLabFmtPage::DeactivatePage(SfxItemSet* pSet)
+{
+ if (pSet)
+ FillItemSet(*pSet);
+
+ return TRUE;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwLabFmtPage::FillItem(SwLabItem& rItem)
+{
+ if (bModified)
+ {
+ rItem.aMake = rItem.aType = SW_RESSTR(STR_CUSTOM);
+
+ SwLabRec& rRec = *GetParent()->Recs()[0];
+ rItem.lHDist = rRec.lHDist = GETFLDVAL(aHDistField );
+ rItem.lVDist = rRec.lVDist = GETFLDVAL(aVDistField );
+ rItem.lWidth = rRec.lWidth = GETFLDVAL(aWidthField );
+ rItem.lHeight = rRec.lHeight = GETFLDVAL(aHeightField);
+ rItem.lLeft = rRec.lLeft = GETFLDVAL(aLeftField );
+ rItem.lUpper = rRec.lUpper = GETFLDVAL(aUpperField );
+ rItem.nCols = rRec.nCols = (USHORT) aColsField.GetValue();
+ rItem.nRows = rRec.nRows = (USHORT) aRowsField.GetValue();
+ }
+}
+
+// --------------------------------------------------------------------------
+
+
+
+BOOL SwLabFmtPage::FillItemSet(SfxItemSet& rSet)
+{
+ SwLabItem aItem;
+ GetParent()->GetLabItem(aItem);
+ FillItem(aItem);
+ rSet.Put(aItem);
+
+ return TRUE;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwLabFmtPage::Reset(const SfxItemSet& rSet)
+{
+ // Fields initialisieren
+ GetParent()->GetLabItem(aItem);
+
+ aHDistField .SetMax(100 * aItem.lHDist , FUNIT_TWIP);
+ aVDistField .SetMax(100 * aItem.lVDist , FUNIT_TWIP);
+ aWidthField .SetMax(100 * aItem.lWidth , FUNIT_TWIP);
+ aHeightField.SetMax(100 * aItem.lHeight, FUNIT_TWIP);
+ aLeftField .SetMax(100 * aItem.lLeft , FUNIT_TWIP);
+ aUpperField .SetMax(100 * aItem.lUpper , FUNIT_TWIP);
+
+ SETFLDVAL(aHDistField , aItem.lHDist );
+ SETFLDVAL(aVDistField , aItem.lVDist );
+ SETFLDVAL(aWidthField , aItem.lWidth );
+ SETFLDVAL(aHeightField, aItem.lHeight);
+ SETFLDVAL(aLeftField , aItem.lLeft );
+ SETFLDVAL(aUpperField , aItem.lUpper );
+
+ aColsField.SetMax(aItem.nCols);
+ aRowsField.SetMax(aItem.nRows);
+
+ aColsField .SetValue(aItem.nCols);
+ aRowsField .SetValue(aItem.nRows);
+
+ PreviewHdl(0);
+}
+
+
+
+/*
+$Log: not supported by cvs2svn $
+Revision 1.60 2000/09/18 16:05:26 willem.vandorp
+OpenOffice header added.
+
+Revision 1.59 2000/04/18 15:31:35 os
+UNICODE
+
+Revision 1.58 2000/03/03 15:17:00 os
+StarView remainders removed
+
+Revision 1.57 2000/02/11 14:45:37 hr
+#70473# changes for unicode ( patched by automated patchtool )
+
+Revision 1.56 1999/07/23 08:00:30 OS
+#67818# set font transparent
+
+
+ Rev 1.55 23 Jul 1999 10:00:30 OS
+ #67818# set font transparent
+
+ Rev 1.54 23 Sep 1998 12:42:28 OM
+ #56852# Minimale Etikettengroesse 1mm
+
+ Rev 1.53 11 Sep 1998 12:29:46 OM
+ #56319# Richtiges Etikettenformat verwenden
+
+ Rev 1.52 08 Sep 1998 16:52:34 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.51 07 Sep 1998 16:59:32 OM
+ #55930# Einzelnes Etikett an der korrekten Position drucken
+
+ Rev 1.50 08 Jul 1998 17:16:48 OM
+ #52127# os2icci3-Compiler Optimierungsbug umpropelt
+
+ Rev 1.49 14 Mar 1998 14:31:36 OM
+ ExchangeSupport repariert/implementiert
+
+ Rev 1.48 14 Mar 1998 14:10:24 OM
+ ExchangeSupport repariert/implementiert
+
+ Rev 1.47 24 Nov 1997 11:52:12 MA
+ includes
+
+ Rev 1.46 03 Nov 1997 13:17:10 MA
+ precomp entfernt
+
+ Rev 1.45 07 Apr 1997 14:46:28 MH
+ chg: header
+
+ Rev 1.44 11 Nov 1996 09:44:16 MA
+ ResMgr
+
+ Rev 1.43 26 Jul 1996 20:36:38 MA
+ includes
+
+ Rev 1.42 07 Mar 1996 14:14:44 HJS
+ line 270: &aArr => aArr
+
+ Rev 1.41 06 Mar 1996 10:52:36 MA
+ chg: SV309
+
+ Rev 1.40 06 Feb 1996 15:19:04 JP
+ Link Umstellung 305
+
+ Rev 1.39 25 Jan 1996 16:58:16 OM
+ Dialogfelder richtig initialisieren
+
+ Rev 1.38 24 Jan 1996 18:25:08 OM
+ #24534# Redraw-Bug in Etiketten Preview gefixt
+
+ Rev 1.37 22 Jan 1996 12:36:50 OM
+ Berechnungsfehler in Labels-Preview gefixt
+
+ Rev 1.36 28 Nov 1995 21:14:56 JP
+ UiSystem-Klasse aufgehoben, in initui/swtype aufgeteilt
+
+ Rev 1.35 27 Nov 1995 19:36:32 OM
+ HasExchangeSupport->303a
+
+ Rev 1.34 24 Nov 1995 16:59:42 OM
+ PCH->PRECOMPILED
+
+ Rev 1.33 23 Nov 1995 18:02:08 OM
+ In DeactivatePage ItemSet fuellen
+
+ Rev 1.32 08 Nov 1995 13:48:22 OM
+ Change->Set
+
+ Rev 1.31 10 Jul 1995 09:50:56 MA
+ LabelDlg optimiert und etwas aufgeraeumt.
+
+ Rev 1.30 24 May 1995 18:15:58 ER
+ Segmentierung
+
+ Rev 1.29 23 Apr 1995 17:33:32 PK
+ bugfix: etik.-fmt. wurde manchm. falsch angezeigt
+
+ Rev 1.28 05 Apr 1995 19:35:18 PK
+ fertig zur beta
+
+ Rev 1.27 05 Apr 1995 09:26:58 JP
+ Benutzung vom Link-Makro eingeschraenkt
+
+ Rev 1.26 04 Apr 1995 18:38:42 PK
+ geht immer weiter
+
+ Rev 1.25 24 Mar 1995 20:30:40 PK
+ geht immer weiter
+
+ Rev 1.24 23 Mar 1995 18:33:48 PK
+ geht immer weiter ...
+
+ Rev 1.23 17 Mar 1995 17:10:30 PK
+ geht immer weiter
+
+ Rev 1.22 15 Mar 1995 13:27:04 PK
+ geht immer weiter
+
+ Rev 1.21 06 Mar 1995 00:08:18 PK
+ linkbarer envelp-zustand
+
+ Rev 1.20 21 Feb 1995 15:39:32 PK
+ erstmal eingecheckt
+
+ Rev 1.19 25 Jan 1995 17:55:56 OS
+ Timerinstrumentierung
+
+ Rev 1.18 18 Nov 1994 15:54:42 MA
+ min -> Min, max -> Max
+
+ Rev 1.17 25 Oct 1994 17:33:36 ER
+ add: PCH
+
+*/
+
diff --git a/sw/source/ui/envelp/labfmt.hrc b/sw/source/ui/envelp/labfmt.hrc
new file mode 100644
index 000000000000..fb07093b4426
--- /dev/null
+++ b/sw/source/ui/envelp/labfmt.hrc
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * $RCSfile: labfmt.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _LABFMT_HRC
+#define _LABFMT_HRC
+
+// #include *****************************************************************
+
+#include "envelp.hrc"
+
+// Lokale Resourcen *********************************************************
+
+#define WIN_PREVIEW 1
+#define TXT_HDIST 2
+#define FLD_HDIST 3
+#define TXT_VDIST 4
+#define FLD_VDIST 5
+#define TXT_WIDTH 6
+#define FLD_WIDTH 7
+#define TXT_HEIGHT 8
+#define FLD_HEIGHT 9
+#define TXT_LEFT 10
+#define FLD_LEFT 11
+#define TXT_UPPER 12
+#define FLD_UPPER 13
+#define TXT_COLUMNS 14
+#define FLD_COLUMNS 15
+#define TXT_ROWS 16
+#define FLD_ROWS 17
+#define GRP_NONAME 18
+#define BTN_OK 19
+#define BTN_CANCEL 20
+
+// Globale Resourcen ********************************************************
+
+#define STR_HDIST (RC_LABFMT_BEGIN + 1)
+#define STR_VDIST (RC_LABFMT_BEGIN + 2)
+#define STR_WIDTH (RC_LABFMT_BEGIN + 3)
+#define STR_HEIGHT (RC_LABFMT_BEGIN + 4)
+#define STR_LEFT (RC_LABFMT_BEGIN + 5)
+#define STR_UPPER (RC_LABFMT_BEGIN + 6)
+#define STR_COLS (RC_LABFMT_BEGIN + 7)
+#define STR_ROWS (RC_LABFMT_BEGIN + 8)
+
+// Ueberlaufpruefung ********************************************************
+
+#define LABFMT_ACT_END STR_ROWS
+
+#if LABFMT_ACT_END > RC_LABFMT_END
+#error Resource-Ueberlauf in #file, #line
+#endif
+
+#endif
+
diff --git a/sw/source/ui/envelp/labfmt.hxx b/sw/source/ui/envelp/labfmt.hxx
new file mode 100644
index 000000000000..1e280c1ae8ad
--- /dev/null
+++ b/sw/source/ui/envelp/labfmt.hxx
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * $RCSfile: labfmt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _LABFMT_HXX
+#define _LABFMT_HXX
+
+#include "labimp.hxx"
+#include "labimg.hxx"
+
+class SwLabFmtPage;
+
+// class SwLabPreview -------------------------------------------------------
+
+class SwLabPreview : public Window
+{
+ long lOutWPix;
+ long lOutHPix;
+ long lOutWPix23;
+ long lOutHPix23;
+
+ Color aBlackColor;
+ Color aGrayColor;
+ Color aWhiteColor;
+
+ String aHDistStr;
+ String aVDistStr;
+ String aWidthStr;
+ String aHeightStr;
+ String aLeftStr;
+ String aUpperStr;
+ String aColsStr;
+ String aRowsStr;
+
+ long lHDistWidth;
+ long lVDistWidth;
+ long lHeightWidth;
+ long lLeftWidth;
+ long lUpperWidth;
+ long lColsWidth;
+
+ long lXWidth;
+ long lXHeight;
+
+ SwLabItem aItem;
+
+ void Paint(const Rectangle&);
+
+ void DrawArrow(const Point& rP1, const Point& rP2, BOOL bArrow);
+ SwLabFmtPage* GetParent() {return (SwLabFmtPage*) Window::GetParent();}
+
+public:
+
+ SwLabPreview(const SwLabFmtPage* pParent, const ResId& rResID);
+ ~SwLabPreview();
+
+ void Update(const SwLabItem& rItem);
+};
+
+// class SwLabFmtPage -------------------------------------------------------
+
+class SwLabFmtPage : public SfxTabPage
+{
+ SwLabPreview aPreview;
+ FixedText aHDistText;
+ MetricField aHDistField;
+ FixedText aVDistText;
+ MetricField aVDistField;
+ FixedText aWidthText;
+ MetricField aWidthField;
+ FixedText aHeightText;
+ MetricField aHeightField;
+ FixedText aLeftText;
+ MetricField aLeftField;
+ FixedText aUpperText;
+ MetricField aUpperField;
+ FixedText aColsText;
+ NumericField aColsField;
+ FixedText aRowsText;
+ NumericField aRowsField;
+
+ Timer aPreviewTimer;
+ BOOL bModified;
+
+ SwLabItem aItem;
+
+ SwLabFmtPage(Window* pParent, const SfxItemSet& rSet);
+ ~SwLabFmtPage();
+
+ DECL_LINK( ModifyHdl, Edit * );
+ DECL_LINK( PreviewHdl, Timer * );
+ DECL_LINK( LoseFocusHdl, Control * );
+
+ void ChangeMinMax();
+
+public:
+
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rSet);
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet* pSet = 0);
+ void FillItem(SwLabItem& rItem);
+ virtual BOOL FillItemSet(SfxItemSet& rSet);
+ virtual void Reset(const SfxItemSet& rSet);
+
+ SwLabDlg* GetParent() {return (SwLabDlg*) SfxTabPage::GetParent()->GetParent();}
+};
+
+#endif
+
diff --git a/sw/source/ui/envelp/labfmt.src b/sw/source/ui/envelp/labfmt.src
new file mode 100644
index 000000000000..c667285f4f8b
--- /dev/null
+++ b/sw/source/ui/envelp/labfmt.src
@@ -0,0 +1,626 @@
+/*************************************************************************
+ *
+ * $RCSfile: labfmt.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ******************************************************************
+
+ // #include *****************************************************************
+#include "labfmt.hrc"
+#include "helpid.h"
+ // TP_LAB_FMT ---------------------------------------------------------------
+TabPage TP_LAB_FMT
+{
+ HelpID = HID_LAB_FMT ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ Window WIN_PREVIEW
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 108 , 6 ) ;
+ Size = MAP_APPFONT ( 146 , 123 ) ;
+ };
+ FixedText TXT_HDIST
+ {
+ Pos = MAP_APPFONT ( 6 , 8 ) ;
+ Size = MAP_APPFONT ( 50 , 8 ) ;
+ Text = "~Horiz. Abstand" ;
+ Text [ English ] = "Horiz. distance" ;
+ Text [ norwegian ] = "Horiz. distance" ;
+ Text [ italian ] = "Distanza ~orizzont." ;
+ Text [ portuguese_brazilian ] = "Distância horizontal" ;
+ Text [ portuguese ] = "Espaçamento ~horiz." ;
+ Text [ finnish ] = "Vaakaetäisyys" ;
+ Text [ danish ] = "Vandret afstand" ;
+ Text [ french ] = "Écart ~horizontal" ;
+ Text [ swedish ] = "~Horis. avstånd" ;
+ Text [ dutch ] = "~Horiz. afstand" ;
+ Text [ spanish ] = "Distancia ~horiz." ;
+ Text [ english_us ] = "Hori~zontal pitch" ;
+ Group = TRUE ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ˮƽ¼ä¸ô(~Z)";
+ Text[ russian ] = "Øàã ïî ãîðèçîíò.";
+ Text[ polish ] = "Odstêp poziomy";
+ Text[ japanese ] = "‰¡‚ÌŠÔŠu(~Z)";
+ Text[ chinese_traditional ] = "¤ô¥­¶¡¹j(~Z)";
+ Text[ arabic ] = "ÇáÎØæÉ ÇáÃÝÞíÉ";
+ Text[ greek ] = "Ïñéæüíôéá áðüóôáóç";
+ Text[ korean ] = "°¡·Î °£°Ý(~Z)";
+ Text[ turkish ] = "~Yatay boþluk";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_HDIST
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 62 , 6 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Repeat = TRUE ;
+ SpinSize = 10 ;
+ };
+ FixedText TXT_VDIST
+ {
+ Pos = MAP_APPFONT ( 6 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 8 ) ;
+ Text = "~Vert. Abstand" ;
+ Text [ English ] = "Vert. distance" ;
+ Text [ norwegian ] = "Vert. distance" ;
+ Text [ italian ] = "Distanza verticale" ;
+ Text [ portuguese_brazilian ] = "Distância vertical" ;
+ Text [ portuguese ] = "Espaçamento vertical" ;
+ Text [ finnish ] = "Pystyetäisyys" ;
+ Text [ danish ] = "Lodret afstand" ;
+ Text [ french ] = "Écart ~vertical" ;
+ Text [ swedish ] = "~Vert. avstånd" ;
+ Text [ dutch ] = "V~ert. afstand" ;
+ Text [ spanish ] = "Distancia ~vert." ;
+ Text [ english_us ] = "~Vertical pitch" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "´¹Ö±¼ä¸ô(~V)";
+ Text[ russian ] = "Øàã ïî âåðòèê.";
+ Text[ polish ] = "Odstêp pionowy";
+ Text[ japanese ] = "c‚ÌŠÔŠu(~V)";
+ Text[ chinese_traditional ] = "««ª½¶¡¹j(~V)";
+ Text[ arabic ] = "ÇáÎØæÉ ÇáÑÃÓíÉ";
+ Text[ greek ] = "Êáôáêüñõöç áðüóôáóç";
+ Text[ korean ] = "¼¼·Î °£°Ý(~V)";
+ Text[ turkish ] = "Dikey boþluk";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_VDIST
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 62 , 21 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Repeat = TRUE ;
+ SpinSize = 10 ;
+ };
+ FixedText TXT_WIDTH
+ {
+ Pos = MAP_APPFONT ( 6 , 38 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Breite" ;
+ Text [ English ] = "Width" ;
+ Text [ norwegian ] = "Bredde " ;
+ Text [ italian ] = "~Largh." ;
+ Text [ portuguese_brazilian ] = "Largura" ;
+ Text [ portuguese ] = "~Largura" ;
+ Text [ finnish ] = "Leveys" ;
+ Text [ danish ] = "Bredde" ;
+ Text [ french ] = "~Largeur" ;
+ Text [ swedish ] = "~Bredd" ;
+ Text [ dutch ] = "B~reedte" ;
+ Text [ spanish ] = "A~ncho" ;
+ Text [ english_us ] = "~Width" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¿í(~W)";
+ Text[ russian ] = "Øèðèíà";
+ Text[ polish ] = "Szer.";
+ Text[ japanese ] = "•(~W)";
+ Text[ chinese_traditional ] = "¼e(~W)";
+ Text[ arabic ] = "ÇáÚÑÖ";
+ Text[ greek ] = "ÐëÜôïò";
+ Text[ korean ] = "³Êºñ(~W)";
+ Text[ turkish ] = "Ge~niþlik";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_WIDTH
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 62 , 36 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Repeat = TRUE ;
+ SpinSize = 10 ;
+ };
+ FixedText TXT_HEIGHT
+ {
+ Pos = MAP_APPFONT ( 6 , 53 ) ;
+ Size = MAP_APPFONT ( 50 , 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öj~d" ;
+ Text [ dutch ] = "H~oogte" ;
+ Text [ spanish ] = "A~ltura" ;
+ Text [ english_us ] = "~Height" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¸ß(~H)";
+ Text[ russian ] = "Âûñîòà";
+ Text[ polish ] = "Wys.";
+ Text[ japanese ] = "‚‚³(~H)";
+ Text[ chinese_traditional ] = "°ª(~H)";
+ Text[ arabic ] = "ÇáÇÑÊÝÇÚ";
+ Text[ greek ] = "¾øïò";
+ Text[ korean ] = "³ôÀÌ(~H)";
+ Text[ turkish ] = "~Yükseklik";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_HEIGHT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 62 , 51 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Repeat = TRUE ;
+ SpinSize = 10 ;
+ };
+ FixedText TXT_LEFT
+ {
+ Pos = MAP_APPFONT ( 6 , 68 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "Rand ~links" ;
+ Text [ English ] = "Left margin" ;
+ Text [ norwegian ] = "Left margin" ;
+ Text [ italian ] = "Margine sinistro" ;
+ Text [ portuguese_brazilian ] = "Margem esquerda" ;
+ Text [ portuguese ] = "Margem esquerda" ;
+ Text [ finnish ] = "Vasen reunus" ;
+ Text [ danish ] = "Margen venstre" ;
+ Text [ french ] = "~Marge gauche" ;
+ Text [ swedish ] = "Vänster margina~l" ;
+ Text [ dutch ] = "~Marge links" ;
+ Text [ spanish ] = "Margen i~zquierdo" ;
+ Text [ english_us ] = "~Left margin" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "×ó·½Ò³±ß¾à(~L)";
+ Text[ russian ] = "Ëåâûé êðàé";
+ Text[ polish ] = "Lewy margines";
+ Text[ japanese ] = "¶—]”’(~L)";
+ Text[ chinese_traditional ] = "¥ª¦VÃä®Ø(~L)";
+ Text[ arabic ] = "ÇáåÇãÔ ÇáÃíÓÑ";
+ Text[ greek ] = "Áñéóôåñü ðåñéèþñéï";
+ Text[ korean ] = "¿ÞÂÊ ¿©¹é(~L)";
+ Text[ turkish ] = "S~ol kenar";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_LEFT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 62 , 66 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Repeat = TRUE ;
+ Minimum = 0 ;
+ First = 0 ;
+ SpinSize = 10 ;
+ };
+ FixedText TXT_UPPER
+ {
+ Pos = MAP_APPFONT ( 6 , 83 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "Rand ~oben" ;
+ Text [ English ] = "Upper margin" ;
+ Text [ norwegian ] = "Upper margin" ;
+ Text [ italian ] = "Margine superiore" ;
+ Text [ portuguese_brazilian ] = "Margem superior" ;
+ Text [ portuguese ] = "Margem superior" ;
+ Text [ finnish ] = "Oikea reunus" ;
+ Text [ danish ] = "Margen foroven" ;
+ Text [ french ] = "Marge ~supérieure" ;
+ Text [ swedish ] = "~Övre marginal" ;
+ Text [ dutch ] = "~Bovenmarge" ;
+ Text [ spanish ] = "M~argen superior" ;
+ Text [ english_us ] = "~Top margin" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÉÏ·½Ò³±ß¾à(~T)";
+ Text[ russian ] = "Âåðõíèé êðàé";
+ Text[ polish ] = "Margines górny";
+ Text[ japanese ] = "ã—]”’(~T)";
+ Text[ chinese_traditional ] = "¤WÃä®Ø(~T)";
+ Text[ arabic ] = "ÇáåÇãÔ ÇáÚáæí";
+ Text[ greek ] = "¢íù ðåñéèþñéï";
+ Text[ korean ] = "À§ ¿©¹é(~T)";
+ Text[ turkish ] = "Üst kenar";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField FLD_UPPER
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 62 , 81 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Repeat = TRUE ;
+ Minimum = 0 ;
+ First = 0 ;
+ SpinSize = 10 ;
+ };
+ FixedText TXT_COLUMNS
+ {
+ Pos = MAP_APPFONT ( 6 , 98 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Spalten" ;
+ Text [ English ] = "Columns" ;
+ Text [ norwegian ] = "Kolonner" ;
+ Text [ italian ] = "~Colonne" ;
+ Text [ portuguese_brazilian ] = "Colunas" ;
+ Text [ portuguese ] = "~Colunas" ;
+ Text [ finnish ] = "Sarakkeet" ;
+ Text [ danish ] = "Kolonner" ;
+ Text [ french ] = "~Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "~Kolommen" ;
+ Text [ spanish ] = "Column~as" ;
+ Text [ english_us ] = "~Columns" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÁÐ(~C)";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "’i‘g‚Ý(~C)";
+ Text[ chinese_traditional ] = "Äæ(~C)";
+ Text[ arabic ] = "ÇáÃÚãÏÉ";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­(~C)";
+ Text[ turkish ] = "~Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField FLD_COLUMNS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 62 , 96 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ First = 1 ;
+ };
+ FixedText TXT_ROWS
+ {
+ Pos = MAP_APPFONT ( 6 , 113 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Zeilen" ;
+ Text [ English ] = "Rows" ;
+ Text [ norwegian ] = "Rows" ;
+ Text [ italian ] = "Righe" ;
+ Text [ portuguese_brazilian ] = "Fileiras" ;
+ Text [ portuguese ] = "Linhas" ;
+ Text [ finnish ] = "~Rivejä" ;
+ Text [ danish ] = "Rækker" ;
+ Text [ french ] = "~Lignes" ;
+ Text [ swedish ] = "~Rader" ;
+ Text [ dutch ] = "~Rijen" ;
+ Text [ spanish ] = "~Filas" ;
+ Text [ english_us ] = "R~ows" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÐÐ(~O)";
+ Text[ russian ] = "Ñòðîêè";
+ Text[ polish ] = "Wiersze";
+ Text[ japanese ] = "s(~Oj";
+ Text[ chinese_traditional ] = "¦æ(~O)";
+ Text[ arabic ] = "ÇáÕÝæÝ";
+ Text[ greek ] = "ÃñáììÝò";
+ Text[ korean ] = "Çà(~O)";
+ Text[ turkish ] = "~Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField FLD_ROWS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 62 , 111 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ First = 1 ;
+ };
+};
+ // String *******************************************************************
+String STR_HDIST
+{
+ Text = "H. Abstand" ;
+ Text [ English ] = "H. distance" ;
+ Text [ norwegian ] = "H. distance" ;
+ Text [ italian ] = "Distanza orizzontale" ;
+ Text [ portuguese_brazilian ] = "Distância h." ;
+ Text [ portuguese ] = "Espaço H." ;
+ Text [ finnish ] = "Vaakaetäi." ;
+ Text [ danish ] = "V. afstand" ;
+ Text [ french ] = "Écart H." ;
+ Text [ swedish ] = "H. avstånd" ;
+ Text [ dutch ] = "H. afstand" ;
+ Text [ spanish ] = "Distancia h." ;
+ Text [ english_us ] = "H. Pitch" ;
+ Text[ chinese_simplified ] = "ˮƽ¼ä¸ô";
+ Text[ russian ] = "Øàã ïî ãîðèçîíò.";
+ Text[ polish ] = "Odstêp poziomy";
+ Text[ japanese ] = "‰¡ŠÔŠu";
+ Text[ chinese_traditional ] = "¤ô¥­¶¡¹j";
+ Text[ arabic ] = "ÇáÎØæÉ ÇáÃÝÞíÉ";
+ Text[ greek ] = "Ïñéæüíôéá áðüóôáóç";
+ Text[ korean ] = "°¡·Î °£°Ý";
+ Text[ turkish ] = "Y. boþluk";
+ Text[ language_user1 ] = " ";
+};
+String STR_VDIST
+{
+ Text = "V. Abstand" ;
+ Text [ English ] = "V. distance" ;
+ Text [ norwegian ] = "V. distance" ;
+ Text [ italian ] = "Distanza verticale" ;
+ Text [ portuguese_brazilian ] = "Distância v." ;
+ Text [ portuguese ] = "Espaço V." ;
+ Text [ finnish ] = "Pystyetäis." ;
+ Text [ danish ] = "L. afstand" ;
+ Text [ french ] = "Écart V." ;
+ Text [ swedish ] = "V. avstånd" ;
+ Text [ dutch ] = "V. afstand" ;
+ Text [ spanish ] = "Distancia v." ;
+ Text [ english_us ] = "V. Pitch" ;
+ Text[ chinese_simplified ] = "´¹Ö±¼ä¸ô";
+ Text[ russian ] = "Øàã ïî âåðòèê.";
+ Text[ polish ] = "Odstêp pionowy";
+ Text[ japanese ] = "cŠÔŠu";
+ Text[ chinese_traditional ] = "««ª½¶¡¹j";
+ Text[ arabic ] = "ÇáÎØæÉ ÇáÑÃÓíÉ";
+ Text[ greek ] = "Êáôáê. áðüóôáóç";
+ Text[ korean ] = "¼¼·Î °£°Ý";
+ Text[ turkish ] = "D. boþluk";
+ Text[ language_user1 ] = " ";
+};
+String STR_WIDTH
+{
+ 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_HEIGHT
+{
+ 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_LEFT
+{
+ Text = "Rand links" ;
+ Text [ English ] = "Left margin" ;
+ Text [ norwegian ] = "Left margin" ;
+ Text [ italian ] = "Margine sinistro" ;
+ Text [ portuguese_brazilian ] = "Margem esquerda" ;
+ Text [ portuguese ] = "Margem esquerda" ;
+ Text [ finnish ] = "Vasen reunus" ;
+ Text [ danish ] = "Margen venstre" ;
+ Text [ french ] = "Marge gauche" ;
+ Text [ swedish ] = "Vänster marginal" ;
+ Text [ dutch ] = "Linker marge" ;
+ Text [ spanish ] = "Margen izquierdo" ;
+ Text [ english_us ] = "Left margin" ;
+ Text[ chinese_simplified ] = "×ó·½Ò³±ß¾à";
+ Text[ russian ] = "Ëåâûé êðàé";
+ Text[ polish ] = "Lewy margines";
+ Text[ japanese ] = "¶—]”’";
+ Text[ chinese_traditional ] = "¥ª¦VÃä®Ø";
+ Text[ arabic ] = "ÇáåÇãÔ ÇáÃíÓÑ";
+ Text[ greek ] = "Áñéóôåñü ðåñéèþñéï";
+ Text[ korean ] = "¿À¸¥ÂÊ ¿©¹é";
+ Text[ turkish ] = "Sol kenar";
+ Text[ language_user1 ] = " ";
+};
+String STR_UPPER
+{
+ Text = "Rand oben" ;
+ Text [ English ] = "Upper margin" ;
+ Text [ norwegian ] = "Upper margin" ;
+ Text [ italian ] = "Margine superiore" ;
+ Text [ portuguese_brazilian ] = "Margem superior" ;
+ Text [ portuguese ] = "Margem superior" ;
+ Text [ finnish ] = "Oikea reunus" ;
+ Text [ danish ] = "Margen foroven" ;
+ Text [ french ] = "Marge supérieure" ;
+ Text [ swedish ] = "Övre marginal" ;
+ Text [ dutch ] = "Bovenmarge" ;
+ Text [ spanish ] = "Margen superior" ;
+ Text [ english_us ] = "Top margin" ;
+ Text[ chinese_simplified ] = "ÉÏ·½Ò³±ß¾à";
+ Text[ russian ] = "Âåðõíèé êðàé";
+ Text[ polish ] = "Górny margines";
+ Text[ japanese ] = "ã—]”’";
+ Text[ chinese_traditional ] = "¤WÃä®Ø";
+ Text[ arabic ] = "ÇáåÇãÔ ÇáÚáæí";
+ Text[ greek ] = "¢íù ðåñéèþñéï";
+ Text[ korean ] = "À§ ¿©¹é";
+ Text[ turkish ] = "Üst kenar";
+ Text[ language_user1 ] = " ";
+};
+String STR_COLS
+{
+ Text = "Spalten" ;
+ Text [ English ] = "Columns" ;
+ Text [ norwegian ] = "Kolonner" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ portuguese_brazilian ] = "Colunas" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ finnish ] = "Sarakkeet" ;
+ Text [ danish ] = "Kolonner" ;
+ Text [ french ] = "Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ spanish ] = "Columnas" ;
+ Text [ english_us ] = "Columns" ;
+ Text[ chinese_simplified ] = "À¸";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "’i‘g‚Ý";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÇáÃÚãÏÉ";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ Text[ language_user1 ] = " ";
+};
+String STR_ROWS
+{
+ Text = "Zeilen" ;
+ Text [ English ] = "Rows" ;
+ Text [ norwegian ] = "Rows" ;
+ Text [ italian ] = "Righe" ;
+ Text [ portuguese_brazilian ] = "Fileiras" ;
+ Text [ portuguese ] = "Linhas" ;
+ Text [ finnish ] = "~Rivejä" ;
+ Text [ danish ] = "Rækker" ;
+ Text [ french ] = "Lignes" ;
+ Text [ swedish ] = "Rader" ;
+ Text [ dutch ] = "Rijen" ;
+ Text [ spanish ] = "Filas" ;
+ Text [ english_us ] = "Rows" ;
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ russian ] = "Ñòðîêè";
+ Text[ polish ] = "Wiersze";
+ Text[ japanese ] = "s";
+ Text[ chinese_traditional ] = "¦æ";
+ Text[ arabic ] = "ÇáÕÝæÝ";
+ Text[ greek ] = "ÃñáììÝò";
+ Text[ korean ] = "Çà";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/envelp/labimg.cxx b/sw/source/ui/envelp/labimg.cxx
new file mode 100644
index 000000000000..06a4e77a3168
--- /dev/null
+++ b/sw/source/ui/envelp/labimg.cxx
@@ -0,0 +1,594 @@
+/*************************************************************************
+ *
+ * $RCSfile: labimg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _RESID_HXX //autogen
+#include <vcl/resid.hxx>
+#endif
+
+#ifndef _SVX_ADRITEM_HXX
+#include <svx/adritem.hxx>
+#endif
+#ifndef _FINDER_HXX
+#include <finder.hxx>
+#endif
+
+
+#include "cmdid.h"
+#include "swtypes.hxx"
+#include "cfgid.h"
+#include "labimg.hxx"
+#include "cfgstr.hrc"
+
+#define LAB_VERSION 1
+#define LAB_VERSION2 2
+#define LAB_VERSION3 3
+#define LAB_VERSION4 4
+#define LAB_VERSION5 5
+#define LAB_VERSION6 6
+
+#define CUR_LAB_VERSION LAB_VERSION6
+SwLabItem::SwLabItem() :
+
+ SfxPoolItem(FN_LABEL),
+ nCol (1),
+ nRow (1),
+ lLeft (0),
+ lUpper(0),
+ nCols (1),
+ nRows (1)
+{
+ bAddr = bCont = bSynchron = FALSE;
+ bPage = TRUE;
+ lHDist =
+ lVDist =
+ lWidth =
+ lHeight = 5669; // 10 cm
+}
+
+// ----------------------------------------------------------------------------
+
+
+
+SwLabItem::SwLabItem(const SwLabItem& rItem) :
+ SfxPoolItem(FN_LABEL)
+{
+ *this = rItem;
+}
+
+// ----------------------------------------------------------------------------
+
+
+
+SwLabItem& SwLabItem::operator =(const SwLabItem& rItem)
+{
+ bAddr = rItem.bAddr;
+ aWriting = rItem.aWriting;
+ bCont = rItem.bCont;
+ sDBName = rItem.sDBName;
+ aLstMake = rItem.aLstMake;
+ aLstType = rItem.aLstType;
+ aMake = rItem.aMake;
+ aType = rItem.aType;
+ bPage = rItem.bPage;
+ bSynchron = rItem.bSynchron;
+ aBin = rItem.aBin;
+ nCol = rItem.nCol;
+ nRow = rItem.nRow;
+ lHDist = rItem.lHDist;
+ lVDist = rItem.lVDist;
+ lWidth = rItem.lWidth;
+ lHeight = rItem.lHeight;
+ lLeft = rItem.lLeft;
+ lUpper = rItem.lUpper;
+ nCols = rItem.nCols;
+ nRows = rItem.nRows;
+ aPrivFirstName = rItem.aPrivFirstName;
+ aPrivName = rItem.aPrivName;
+ aPrivShortCut = rItem.aPrivShortCut;
+ aPrivFirstName2 = rItem.aPrivFirstName2;
+ aPrivName2 = rItem.aPrivName2;
+ aPrivShortCut2 = rItem.aPrivShortCut2;
+ aPrivStreet = rItem.aPrivStreet;
+ aPrivZip = rItem.aPrivZip;
+ aPrivCity = rItem.aPrivCity;
+ aPrivCountry = rItem.aPrivCountry;
+ aPrivState = rItem.aPrivState;
+ aPrivTitle = rItem.aPrivTitle;
+ aPrivProfession = rItem.aPrivProfession;
+ aPrivPhone = rItem.aPrivPhone;
+ aPrivMobile = rItem.aPrivMobile;
+ aPrivFax = rItem.aPrivFax;
+ aPrivWWW = rItem.aPrivWWW;
+ aPrivMail = rItem.aPrivMail;
+ aCompCompany = rItem.aCompCompany;
+ aCompCompanyExt = rItem.aCompCompanyExt;
+ aCompSlogan = rItem.aCompSlogan;
+ aCompStreet = rItem.aCompStreet;
+ aCompZip = rItem.aCompZip;
+ aCompCity = rItem.aCompCity;
+ aCompCountry = rItem.aCompCountry;
+ aCompState = rItem.aCompState;
+ aCompPosition = rItem.aCompPosition;
+ aCompPhone = rItem.aCompPhone;
+ aCompMobile = rItem.aCompMobile;
+ aCompFax = rItem.aCompFax;
+ aCompWWW = rItem.aCompWWW;
+ aCompMail = rItem.aCompMail;
+ sGlossaryGroup = rItem.sGlossaryGroup;
+ sGlossaryBlockName = rItem.sGlossaryBlockName;
+ return *this;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+int SwLabItem::operator ==(const SfxPoolItem& rItem) const
+{
+ const SwLabItem& rLab = (const SwLabItem&) rItem;
+
+ return bAddr == rLab.bAddr &&
+ bCont == rLab.bCont &&
+ bPage == rLab.bPage &&
+ bSynchron == rLab.bSynchron &&
+ aBin == rLab.aBin &&
+ nCol == rLab.nCol &&
+ nRow == rLab.nRow &&
+ lHDist == rLab.lHDist &&
+ lVDist == rLab.lVDist &&
+ lWidth == rLab.lWidth &&
+ lHeight == rLab.lHeight &&
+ lLeft == rLab.lLeft &&
+ lUpper == rLab.lUpper &&
+ nCols == rLab.nCols &&
+ nRows == rLab.nRows &&
+ aWriting == rLab.aWriting&&
+ aMake == rLab.aMake &&
+ aType == rLab.aType &&
+ aLstMake == rLab.aLstMake&&
+ aLstType == rLab.aLstType&&
+ sDBName == rLab.sDBName &&
+ aPrivFirstName == rLab.aPrivFirstName&&
+ aPrivName == rLab.aPrivName&&
+ aPrivShortCut == rLab.aPrivShortCut&&
+ aPrivFirstName2 == rLab.aPrivFirstName2&&
+ aPrivName2 == rLab.aPrivName2&&
+ aPrivShortCut2 == rLab.aPrivShortCut2&&
+ aPrivStreet == rLab.aPrivStreet&&
+ aPrivZip == rLab.aPrivZip&&
+ aPrivCity == rLab.aPrivCity&&
+ aPrivCountry == rLab.aPrivCountry&&
+ aPrivState == rLab.aPrivState&&
+ aPrivTitle == rLab.aPrivTitle&&
+ aPrivProfession == rLab.aPrivProfession&&
+ aPrivPhone == rLab.aPrivPhone&&
+ aPrivMobile == rLab.aPrivMobile&&
+ aPrivFax == rLab.aPrivFax&&
+ aPrivWWW == rLab.aPrivWWW&&
+ aPrivMail == rLab.aPrivMail&&
+ aCompCompany == rLab.aCompCompany&&
+ aCompCompanyExt == rLab.aCompCompanyExt&&
+ aCompSlogan == rLab.aCompSlogan&&
+ aCompStreet == rLab.aCompStreet&&
+ aCompZip == rLab.aCompZip&&
+ aCompCity == rLab.aCompCity&&
+ aCompCountry == rLab.aCompCountry&&
+ aCompState == rLab.aCompState&&
+ aCompPosition == rLab.aCompPosition&&
+ aCompPhone == rLab.aCompPhone&&
+ aCompMobile == rLab.aCompMobile&&
+ aCompFax == rLab.aCompFax&&
+ aCompWWW == rLab.aCompWWW&&
+ aCompMail == rLab.aCompMail &&
+ sGlossaryGroup == rLab.sGlossaryGroup &&
+ sGlossaryBlockName == rLab.sGlossaryBlockName;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SfxPoolItem* SwLabItem::Clone(SfxItemPool*) const
+{
+ return new SwLabItem(*this);
+}
+
+// ----------------------------------------------------------------------------
+SwLabCfgItem::SwLabCfgItem() :
+ SfxConfigItem(CFG_LAB_ITEM)
+{
+}
+
+// ----------------------------------------------------------------------------
+
+int SwLabItem::Load (SvStream& rStrm, USHORT nVersion, BOOL bLabel)
+{
+ unsigned char b;
+ USHORT i;
+ long l;
+
+ rtl_TextEncoding eEncoding = gsl_getSystemTextEncoding();
+ rStrm >> b; bAddr = (BOOL) b;
+ rStrm.ReadByteString(aWriting, eEncoding);
+ rStrm >> b; bCont = (BOOL) b;
+ rStrm.ReadByteString(aMake, eEncoding);
+ rStrm.ReadByteString(aType, eEncoding);
+ rStrm >> b; bPage = (BOOL) b;
+ rStrm.ReadByteString(aBin, eEncoding);
+ rStrm >> i; nCol = i;
+ rStrm >> i; nRow = i;
+ rStrm >> l; lHDist = l;
+ rStrm >> l; lVDist = l;
+ rStrm >> l; lWidth = l;
+ rStrm >> l; lHeight = l;
+ rStrm >> l; lLeft = l;
+ rStrm >> l; lUpper = l;
+ rStrm >> i; nCols = i;
+ rStrm >> i; nRows = i;
+
+ if ( nVersion >= LAB_VERSION2 )
+ {
+ rStrm.ReadByteString(aLstMake, eEncoding);
+ rStrm.ReadByteString(aLstType, eEncoding);
+ }
+ if ( nVersion >= LAB_VERSION3 )
+ rStrm.ReadByteString(sDBName, eEncoding);
+
+ if ( nVersion >= LAB_VERSION4 )
+ {
+ rStrm >> b;
+ bSynchron = (BOOL)b;
+ }
+ if(!bLabel)
+ {
+ rStrm.ReadByteString(aPrivFirstName, eEncoding);
+ rStrm.ReadByteString(aPrivName, eEncoding);
+ rStrm.ReadByteString(aPrivShortCut, eEncoding);
+ if ( nVersion >= LAB_VERSION6 )
+ {
+ rStrm.ReadByteString(aPrivFirstName2, eEncoding);
+ rStrm.ReadByteString(aPrivName2, eEncoding);
+ rStrm.ReadByteString(aPrivShortCut2, eEncoding);
+ }
+ rStrm.ReadByteString(aPrivStreet, eEncoding);
+ rStrm.ReadByteString(aPrivZip, eEncoding);
+ rStrm.ReadByteString(aPrivCity, eEncoding);
+ rStrm.ReadByteString(aPrivCountry, eEncoding);
+ rStrm.ReadByteString(aPrivState , eEncoding);
+ rStrm.ReadByteString(aPrivTitle , eEncoding);
+ rStrm.ReadByteString(aPrivProfession , eEncoding);
+ rStrm.ReadByteString(aPrivPhone , eEncoding);
+ rStrm.ReadByteString(aPrivMobile , eEncoding);
+ rStrm.ReadByteString(aPrivFax , eEncoding);
+ rStrm.ReadByteString(aPrivWWW , eEncoding);
+ rStrm.ReadByteString(aPrivMail , eEncoding);
+ rStrm.ReadByteString(aCompCompany , eEncoding);
+ rStrm.ReadByteString(aCompCompanyExt , eEncoding);
+ rStrm.ReadByteString(aCompSlogan , eEncoding);
+ rStrm.ReadByteString(aCompStreet , eEncoding);
+ rStrm.ReadByteString(aCompZip , eEncoding);
+ rStrm.ReadByteString(aCompCity , eEncoding);
+ rStrm.ReadByteString(aCompCountry , eEncoding);
+ rStrm.ReadByteString(aCompState , eEncoding);
+ rStrm.ReadByteString(aCompPosition , eEncoding);
+ rStrm.ReadByteString(aCompPhone , eEncoding);
+ rStrm.ReadByteString(aCompMobile , eEncoding);
+ rStrm.ReadByteString(aCompFax , eEncoding);
+ rStrm.ReadByteString(aCompWWW , eEncoding);
+ rStrm.ReadByteString(aCompMail , eEncoding);
+
+ rStrm.ReadByteString(sGlossaryGroup , eEncoding);
+ rStrm.ReadByteString(sGlossaryBlockName , eEncoding);
+ }
+ return SfxConfigItem::ERR_OK;
+}
+// ----------------------------------------------------------------------------
+
+BOOL SwLabItem::Store(SvStream& rStrm, BOOL bLabel)
+{
+ rtl_TextEncoding eEncoding = gsl_getSystemTextEncoding();
+ rStrm << (unsigned char) bAddr;
+ rStrm.WriteByteString(aWriting, eEncoding);
+ rStrm << (unsigned char) bCont;
+ rStrm.WriteByteString(aMake, eEncoding);
+ rStrm.WriteByteString(aType, eEncoding);
+ rStrm << (unsigned char) bPage;
+ rStrm.WriteByteString(aBin, eEncoding);
+ rStrm << nCol;
+ rStrm << nRow;
+ rStrm << lHDist;
+ rStrm << lVDist;
+ rStrm << lWidth;
+ rStrm << lHeight;
+ rStrm << lLeft;
+ rStrm << lUpper;
+ rStrm << nCols;
+ rStrm << nRows;
+ rStrm.WriteByteString(aLstMake, eEncoding);
+ rStrm.WriteByteString(aLstType, eEncoding);
+ rStrm.WriteByteString(sDBName, eEncoding);
+ rStrm << bSynchron;
+ if(!bLabel)
+ {
+ rStrm.WriteByteString(aPrivFirstName, eEncoding);
+ rStrm.WriteByteString(aPrivName, eEncoding);
+ rStrm.WriteByteString(aPrivShortCut, eEncoding);
+ rStrm.WriteByteString(aPrivFirstName2, eEncoding);
+ rStrm.WriteByteString(aPrivName2, eEncoding);
+ rStrm.WriteByteString(aPrivShortCut2, eEncoding);
+ rStrm.WriteByteString(aPrivStreet, eEncoding);
+ rStrm.WriteByteString(aPrivZip, eEncoding);
+ rStrm.WriteByteString(aPrivCity, eEncoding);
+ rStrm.WriteByteString(aPrivCountry, eEncoding);
+ rStrm.WriteByteString(aPrivState, eEncoding);
+ rStrm.WriteByteString(aPrivTitle, eEncoding);
+ rStrm.WriteByteString(aPrivProfession, eEncoding);
+ rStrm.WriteByteString(aPrivPhone, eEncoding);
+ rStrm.WriteByteString(aPrivMobile, eEncoding);
+ rStrm.WriteByteString(aPrivFax, eEncoding);
+ rStrm.WriteByteString(aPrivWWW, eEncoding);
+ rStrm.WriteByteString(aPrivMail, eEncoding);
+ rStrm.WriteByteString(aCompCompany, eEncoding);
+ rStrm.WriteByteString(aCompCompanyExt, eEncoding);
+ rStrm.WriteByteString(aCompSlogan, eEncoding);
+ rStrm.WriteByteString(aCompStreet, eEncoding);
+ rStrm.WriteByteString(aCompZip, eEncoding);
+ rStrm.WriteByteString(aCompCity, eEncoding);
+ rStrm.WriteByteString(aCompCountry, eEncoding);
+ rStrm.WriteByteString(aCompState, eEncoding);
+ rStrm.WriteByteString(aCompPosition, eEncoding);
+ rStrm.WriteByteString(aCompPhone, eEncoding);
+ rStrm.WriteByteString(aCompMobile, eEncoding);
+ rStrm.WriteByteString(aCompFax, eEncoding);
+ rStrm.WriteByteString(aCompWWW, eEncoding);
+ rStrm.WriteByteString(aCompMail, eEncoding);
+
+ rStrm.WriteByteString(sGlossaryGroup, eEncoding);
+ rStrm.WriteByteString(sGlossaryBlockName, eEncoding);
+ }
+
+ return SfxConfigItem::ERR_OK;
+}
+// ----------------------------------------------------------------------------
+int SwLabCfgItem::Load(SvStream& rStrm)
+{
+ USHORT nVersion;
+ rStrm >> nVersion;
+
+ if( nVersion >= LAB_VERSION )
+ {
+ aLabItem.Load(rStrm, nVersion, TRUE);
+ if(LAB_VERSION5 <= nVersion)
+ aBusinessItem.Load(rStrm, nVersion, FALSE);
+
+ SetDefault(FALSE);
+
+ return SfxConfigItem::ERR_OK;
+ }
+ else
+ return SfxConfigItem::WARNING_VERSION;
+}
+
+BOOL SwLabCfgItem::Store(SvStream& rStrm)
+{
+ rStrm << (USHORT)CUR_LAB_VERSION;
+ aLabItem.Store(rStrm, TRUE);
+ aBusinessItem.Store(rStrm, FALSE);
+ return SfxConfigItem::ERR_OK;
+}
+// ----------------------------------------------------------------------------
+void SwLabCfgItem::UseDefault()
+{
+ aLabItem = SwLabItem();
+ aBusinessItem = SwLabItem();
+ //Fill item with user data
+ SvxAddressItem aAdr( pPathFinder->GetAddress() );
+
+ aBusinessItem.aPrivFirstName = aAdr.GetFirstName();
+ aBusinessItem.aPrivName = aAdr.GetName();
+ aBusinessItem.aPrivShortCut = aAdr.GetShortName();
+ aBusinessItem.aCompCompany = aAdr.GetToken( ADDRESS_COMPANY );
+ aBusinessItem.aCompStreet = aBusinessItem.aPrivStreet = aAdr.GetToken( ADDRESS_STREET);
+
+ aBusinessItem.aCompCountry = aBusinessItem.aPrivCountry = aAdr.GetToken( ADDRESS_COUNTRY);
+ aBusinessItem.aCompZip = aBusinessItem.aPrivZip= aAdr.GetToken( ADDRESS_PLZ );
+ aBusinessItem.aCompCity = aBusinessItem.aPrivCity = aAdr.GetToken( ADDRESS_CITY );
+ aBusinessItem.aPrivTitle = aAdr.GetToken( ADDRESS_TITLE );
+ aBusinessItem.aCompPosition = aAdr.GetToken( ADDRESS_POSITION );
+ aBusinessItem.aPrivPhone = aAdr.GetToken( ADDRESS_TEL_PRIVATE );
+ aBusinessItem.aCompPhone = aAdr.GetToken( ADDRESS_TEL_COMPANY );
+ aBusinessItem.aCompFax = aBusinessItem.aPrivFax = aAdr.GetToken( ADDRESS_FAX );
+ aBusinessItem.aCompMail = aBusinessItem.aPrivMail = aAdr.GetToken( ADDRESS_EMAIL );
+ aBusinessItem.aCompState = aBusinessItem.aPrivState = aAdr.GetToken( ADDRESS_STATE );
+ aBusinessItem.bSynchron = TRUE;
+
+ SfxConfigItem::UseDefault();
+}
+// ----------------------------------------------------------------------------
+String SwLabCfgItem::GetName() const
+{
+ return SW_RESSTR(STR_CFG_LABIMG);
+}
+
+
+
+/*
+$Log: not supported by cvs2svn $
+Revision 1.38 2000/09/18 16:05:26 willem.vandorp
+OpenOffice header added.
+
+Revision 1.37 2000/06/26 16:32:15 jp
+have to change: enums of AddressToken
+
+Revision 1.36 2000/05/26 07:21:29 os
+old SW Basic API Slots removed
+
+Revision 1.35 2000/04/18 15:31:35 os
+UNICODE
+
+Revision 1.34 2000/02/11 14:45:49 hr
+#70473# changes for unicode ( patched by automated patchtool )
+
+Revision 1.33 2000/01/11 13:26:13 os
+#71720# business cards synchronized by default
+
+Revision 1.32 1999/12/07 16:34:13 os
+#70355##70559# SHORTCUT->INITIALS; second private name
+
+Revision 1.31 1999/09/30 07:53:06 os
+Label config item and LabItem contain business information
+
+Revision 1.30 1998/03/14 16:06:50 OM
+Gelinkte Etiketten
+
+
+ Rev 1.29 14 Mar 1998 17:06:50 OM
+ Gelinkte Etiketten
+
+ Rev 1.28 24 Nov 1997 11:52:10 MA
+ includes
+
+ Rev 1.27 03 Nov 1997 13:17:14 MA
+ precomp entfernt
+
+ Rev 1.26 08 Aug 1997 17:29:34 OM
+ Headerfile-Umstellung
+
+ Rev 1.25 18 Nov 1996 10:45:48 SWG
+ includes
+
+ Rev 1.24 14 Nov 1996 15:24:44 TRI
+ includes
+
+ Rev 1.23 11 Nov 1996 09:44:16 MA
+ ResMgr
+
+ Rev 1.22 26 Jul 1996 20:36:40 MA
+ includes
+
+ Rev 1.21 28 Jun 1996 10:10:52 OS
+ UseDefault: Basisklasse rufen
+
+ Rev 1.20 06 Jun 1996 12:59:42 OM
+ Datenbankname merken
+
+ Rev 1.19 27 Nov 1995 18:55:40 OS
+ Umstellung 303a
+
+ Rev 1.18 24 Nov 1995 16:59:40 OM
+ PCH->PRECOMPILED
+
+ Rev 1.17 16 Nov 1995 18:37:46 OS
+ neu: Get/SetVariable, nicht impl.
+
+ Rev 1.16 21 Sep 1995 00:40:56 JP
+ Bug 19511: VersionsNummer im richtigen Format aus dem Stream lesen (int <-> USHORT!!!)
+
+ Rev 1.15 15 Sep 1995 21:14:22 OS
+ add: cfgstr.hrc
+
+ Rev 1.14 15 Sep 1995 12:41:00 OS
+ GetName() implementiert
+
+ Rev 1.13 04 Sep 1995 13:53:58 HJS
+ add: #include <sbx.hxx>
+
+ Rev 1.12 09 Aug 1995 18:59:46 AMA
+ kein GetPresentation
+
+ Rev 1.11 07 Aug 1995 18:19:46 AMA
+ Umbau: GetValueText -> GetPresentation
+
+ Rev 1.10 30 Jul 1995 11:25:30 MA
+ chg: Letze Einstellung merken fuer Label
+
+ Rev 1.9 10 Jul 1995 09:52:36 MA
+ LabelDlg optimiert und etwas aufgeraeumt.
+
+ Rev 1.8 24 May 1995 18:17:14 ER
+ Segmentierung
+
+ Rev 1.7 17 Mar 1995 17:10:30 PK
+ geht immer weiter
+
+ Rev 1.6 15 Mar 1995 13:27:04 PK
+ geht immer weiter
+
+ Rev 1.5 06 Mar 1995 00:08:28 PK
+ linkbarer envelp-zustand
+
+ Rev 1.4 20 Feb 1995 19:39:52 PK
+ erstma eingecheckt
+
+ Rev 1.3 09 Jan 1995 16:57:48 ER
+ del: envelp hrc
+
+*/
+
diff --git a/sw/source/ui/envelp/labimp.hxx b/sw/source/ui/envelp/labimp.hxx
new file mode 100644
index 000000000000..9f8ae92f7595
--- /dev/null
+++ b/sw/source/ui/envelp/labimp.hxx
@@ -0,0 +1,456 @@
+/*************************************************************************
+ *
+ * $RCSfile: labimp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _LABIMP_HXX
+#define _LABIMP_HXX
+
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _SVEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XCONTROLLER_HPP_
+#include <com/sun/star/frame/XController.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTCURSOR_HPP_
+#include <com/sun/star/text/XTextCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XWORDCURSOR_HPP_
+#include <com/sun/star/text/XWordCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XPARAGRAPHCURSOR_HPP_
+#include <com/sun/star/text/XParagraphCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XPAGECURSOR_HPP_
+#include <com/sun/star/text/XPageCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XSENTENCECURSOR_HPP_
+#include <com/sun/star/text/XSentenceCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XFILEDIALOG_HPP_
+#include <com/sun/star/awt/XFileDialog.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTEXTCOMPONENT_HPP_
+#include <com/sun/star/awt/XTextComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XLISTBOX_HPP_
+#include <com/sun/star/awt/XListBox.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XPROGRESSMONITOR_HPP_
+#include <com/sun/star/awt/XProgressMonitor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_TEXTALIGN_HPP_
+#include <com/sun/star/awt/TextAlign.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XSCROLLBAR_HPP_
+#include <com/sun/star/awt/XScrollBar.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XVCLCONTAINERPEER_HPP_
+#include <com/sun/star/awt/XVclContainerPeer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTABCONTROLLERMODEL_HPP_
+#include <com/sun/star/awt/XTabControllerModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XMESSAGEBOX_HPP_
+#include <com/sun/star/awt/XMessageBox.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTEXTEDITFIELD_HPP_
+#include <com/sun/star/awt/XTextEditField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_STYLE_HPP_
+#include <com/sun/star/awt/Style.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTIMEFIELD_HPP_
+#include <com/sun/star/awt/XTimeField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XVCLWINDOWPEER_HPP_
+#include <com/sun/star/awt/XVclWindowPeer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCONTROLMODEL_HPP_
+#include <com/sun/star/awt/XControlModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XSPINFIELD_HPP_
+#include <com/sun/star/awt/XSpinField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XUNOCONTROLCONTAINER_HPP_
+#include <com/sun/star/awt/XUnoControlContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTEXTLAYOUTCONSTRAINS_HPP_
+#include <com/sun/star/awt/XTextLayoutConstrains.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XNUMERICFIELD_HPP_
+#include <com/sun/star/awt/XNumericField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XBUTTON_HPP_
+#include <com/sun/star/awt/XButton.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTEXTAREA_HPP_
+#include <com/sun/star/awt/XTextArea.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XIMAGEBUTTON_HPP_
+#include <com/sun/star/awt/XImageButton.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XFIXEDTEXT_HPP_
+#include <com/sun/star/awt/XFixedText.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCONTROLCONTAINER_HPP_
+#include <com/sun/star/awt/XControlContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XDIALOG_HPP_
+#include <com/sun/star/awt/XDialog.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_SCROLLBARORIENTATION_HPP_
+#include <com/sun/star/awt/ScrollBarOrientation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XRADIOBUTTON_HPP_
+#include <com/sun/star/awt/XRadioButton.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCURRENCYFIELD_HPP_
+#include <com/sun/star/awt/XCurrencyField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XPATTERNFIELD_HPP_
+#include <com/sun/star/awt/XPatternField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_VCLWINDOWPEERATTRIBUTE_HPP_
+#include <com/sun/star/awt/VclWindowPeerAttribute.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTABCONTROLLER_HPP_
+#include <com/sun/star/awt/XTabController.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XVCLCONTAINER_HPP_
+#include <com/sun/star/awt/XVclContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XDATEFIELD_HPP_
+#include <com/sun/star/awt/XDateField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCOMBOBOX_HPP_
+#include <com/sun/star/awt/XComboBox.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCONTROL_HPP_
+#include <com/sun/star/awt/XControl.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCHECKBOX_HPP_
+#include <com/sun/star/awt/XCheckBox.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_MESSAGEBOXCOMMAND_HPP_
+#include <com/sun/star/awt/MessageBoxCommand.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XLAYOUTCONSTRAINS_HPP_
+#include <com/sun/star/awt/XLayoutConstrains.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XPROGRESSBAR_HPP_
+#include <com/sun/star/awt/XProgressBar.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _SVTREEBOX_HXX
+#include <svtools/svtreebx.hxx>
+#endif
+
+#include "label.hxx"
+#include "labimg.hxx"
+
+#define GETFLDVAL(rField) (rField).Denormalize((rField).GetValue(FUNIT_TWIP))
+#define SETFLDVAL(rField, lValue) (rField).SetValue((rField).Normalize(lValue), FUNIT_TWIP)
+
+class SwNewDBMgr;
+
+class SwLabRec
+{
+ long GetLong(const String& rStr, MetricField& rField);
+
+public:
+ SwLabRec() {}
+ SwLabRec( String& rStr, MetricField& rField );
+
+ String aMake;
+ String aType;
+ long lHDist;
+ long lVDist;
+ long lWidth;
+ long lHeight;
+ long lLeft;
+ long lUpper;
+ sal_uInt16 nCols;
+ sal_uInt16 nRows;
+ sal_Bool bCont;
+};
+
+/* --------------------------------------------------
+
+ --------------------------------------------------*/
+SV_DECL_PTRARR_DEL( SwLabRecs, SwLabRec*, 110, 10 );
+
+class SwLabPage : public SfxTabPage
+{
+ SwNewDBMgr* pNewDBMgr;
+ String sActDBName;
+ SwLabItem aItem;
+
+ FixedText aWritingText;
+ CheckBox aAddrBox;
+ MultiLineEdit aWritingEdit;
+ FixedText aDatabaseFT;
+ ListBox aDatabaseLB;
+ FixedText aTableFT;
+ ListBox aTableLB;
+ ImageButton aInsertBT;
+ FixedText aDBFieldFT;
+ ListBox aDBFieldLB;
+// PushButton aDatabaseButton;
+ GroupBox aWritingGroup;
+
+ RadioButton aContButton;
+ RadioButton aSheetButton;
+ FixedText aMakeText;
+ ListBox aMakeBox;
+ FixedText aTypeText;
+ ListBox aTypeBox;
+ FixedInfo aFormatInfo;
+ GroupBox aFormatGroup;
+
+ sal_Bool m_bLabel;
+
+ SwLabPage(Window* pParent, const SfxItemSet& rSet);
+ ~SwLabPage();
+
+ DECL_LINK( AddrHdl, Button * );
+ DECL_LINK( DatabaseHdl, ListBox *pListBox );
+// DECL_LINK( DatabaseButtonHdl, Button * );
+ DECL_LINK( FieldHdl, Button * );
+ DECL_LINK( PageHdl, Button * );
+ DECL_LINK( MakeHdl, ListBox * );
+ DECL_LINK( TypeHdl, ListBox * );
+
+ void DisplayFormat ();
+ SwLabRec* GetSelectedEntryPos();
+
+public:
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rSet);
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet* pSet = 0);
+ void FillItem(SwLabItem& rItem);
+ virtual sal_Bool FillItemSet(SfxItemSet& rSet);
+ virtual void Reset(const SfxItemSet& rSet);
+
+ SwLabDlg* GetParent() {return (SwLabDlg*) SfxTabPage::GetParent()->GetParent();}
+
+ void SetToBusinessCard();
+
+ void InitDatabaseBox();
+ inline void SetNewDBMgr(SwNewDBMgr* pDBMgr) { pNewDBMgr = pDBMgr; }
+ inline SwNewDBMgr* GetNewDBMgr() const { return pNewDBMgr; }
+};
+
+/* -----------------08.07.99 13:48-------------------
+
+ --------------------------------------------------*/
+class SwOneExampleFrame;
+class SwVisitingCardPage : public SfxTabPage
+{
+ SvTreeListBox aAutoTextLB;
+ FixedText aAutoTextGroupFT;
+ ListBox aAutoTextGroupLB;
+
+ GroupBox aContentGB;
+
+ Window aExampleWIN;
+ GroupBox aExampleGB;
+
+ String sVisCardGroup;
+ String sTempURL;
+
+ SwLabItem aLabItem;
+
+ SwOneExampleFrame* pExampleFrame;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > _xAutoText;
+
+ DECL_LINK( AutoTextSelectHdl, void* );
+ DECL_LINK( FrameControlInitializedHdl, void* );
+
+ void InitFrameControl();
+ void UpdateFields();
+
+ SwVisitingCardPage(Window* pParent, const SfxItemSet& rSet);
+ ~SwVisitingCardPage();
+
+public:
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rSet);
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet* pSet = 0);
+ virtual sal_Bool FillItemSet(SfxItemSet& rSet);
+ virtual void Reset(const SfxItemSet& rSet);
+};
+/* -----------------29.09.99 08:51-------------------
+
+ --------------------------------------------------*/
+class SwPrivateDataPage : public SfxTabPage
+{
+ GroupBox aDataGB;
+
+ FixedText aNameFT;
+ Edit aFirstNameED;
+ Edit aNameED;
+ Edit aShortCutED;
+
+ FixedText aName2FT;
+ Edit aFirstName2ED;
+ Edit aName2ED;
+ Edit aShortCut2ED;
+
+ FixedText aStreetFT;
+ Edit aStreetED;
+ FixedText aZipCityFT;
+ Edit aZipED;
+ Edit aCityED;
+ FixedText aCountryStateFT;
+ Edit aCountryED;
+ Edit aStateED;
+ FixedText aTitleProfessionFT;
+ Edit aTitleED;
+ Edit aProfessionED;
+ FixedText aPhoneFT;
+ Edit aPhoneED;
+ Edit aMobilePhoneED;
+ FixedText aFaxFT;
+ Edit aFaxED;
+ FixedText aWWWMailFT;
+ Edit aHomePageED;
+ Edit aMailED;
+
+ SwPrivateDataPage(Window* pParent, const SfxItemSet& rSet);
+ ~SwPrivateDataPage();
+
+public:
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rSet);
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet* pSet = 0);
+ virtual sal_Bool FillItemSet(SfxItemSet& rSet);
+ virtual void Reset(const SfxItemSet& rSet);
+};
+/* -----------------29.09.99 08:51-------------------
+
+ --------------------------------------------------*/
+class SwBusinessDataPage : public SfxTabPage
+{
+ GroupBox aDataGB;
+ FixedText aCompanyFT;
+ Edit aCompanyED;
+ FixedText aCompanyExtFT;
+ Edit aCompanyExtED;
+ FixedText aSloganFT;
+ Edit aSloganED;
+
+ FixedText aStreetFT;
+ Edit aStreetED;
+ FixedText aZipCityFT;
+ Edit aZipED;
+ Edit aCityED;
+ FixedText aCountryStateFT;
+ Edit aCountryED;
+ Edit aStateED;
+
+ FixedText aPositionFT;
+ Edit aPositionED;
+
+ FixedText aPhoneFT;
+ Edit aPhoneED;
+ Edit aMobilePhoneED;
+ Edit aFaxED;
+
+ FixedText aWWWMailFT;
+ Edit aHomePageED;
+ Edit aMailED;
+
+ SwBusinessDataPage(Window* pParent, const SfxItemSet& rSet);
+ ~SwBusinessDataPage();
+
+public:
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rSet);
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet* pSet = 0);
+ virtual sal_Bool FillItemSet(SfxItemSet& rSet);
+ virtual void Reset(const SfxItemSet& rSet);
+};
+
+#endif
+
diff --git a/sw/source/ui/envelp/labprt.cxx b/sw/source/ui/envelp/labprt.cxx
new file mode 100644
index 000000000000..6ea70368a7a6
--- /dev/null
+++ b/sw/source/ui/envelp/labprt.cxx
@@ -0,0 +1,381 @@
+/*************************************************************************
+ *
+ * $RCSfile: labprt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <vcl/system.hxx>
+#ifndef _SV_PRNSETUP_HXX_ //autogen
+#include <svtools/prnsetup.hxx>
+#endif
+#ifndef _SV_PRINT_HXX
+#include <vcl/print.hxx>
+#endif
+
+#include "wrtsh.hxx"
+#include "cmdid.h"
+#include "label.hxx"
+#include "labprt.hxx"
+#include "labimg.hxx"
+#include "labimp.hxx"
+
+#include "labprt.hrc"
+
+
+// --------------------------------------------------------------------------
+
+
+
+SwLabPrtPage::SwLabPrtPage(Window* pParent, const SfxItemSet& rSet) :
+
+ SfxTabPage(pParent, SW_RES(TP_LAB_PRT), rSet),
+
+ pPrinter( 0 ),
+ aPageButton (this, SW_RES(BTN_PAGE )),
+ aSingleButton (this, SW_RES(BTN_SINGLE )),
+ aColText (this, SW_RES(TXT_COL )),
+ aColField (this, SW_RES(FLD_COL )),
+ aRowText (this, SW_RES(TXT_ROW )),
+ aRowField (this, SW_RES(FLD_ROW )),
+ aSynchronCB (this, SW_RES(CB_SYNCHRON)),
+ aGBDontKnow (this, SW_RES(GB_DONTKNOW)),
+ aPrinterInfo (this, SW_RES(INF_PRINTER)),
+ aPrtSetup (this, SW_RES(BTN_PRTSETUP)),
+ aGBPrinter (this, SW_RES(GB_PRINTER ))
+
+{
+ FreeResource();
+ SetExchangeSupport();
+
+ // Handler installieren
+ Link aLk = LINK(this, SwLabPrtPage, CountHdl);
+ aPageButton .SetClickHdl( aLk );
+ aSingleButton.SetClickHdl( aLk );
+
+ aPrtSetup.SetClickHdl( aLk );
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SwLabPrtPage::~SwLabPrtPage()
+{
+ if (pPrinter)
+ delete pPrinter;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+IMPL_LINK( SwLabPrtPage, CountHdl, Button *, pButton )
+{
+ if (pButton == &aPrtSetup)
+ {
+ // Druck-Setup aufrufen
+ if (!pPrinter)
+ pPrinter = new Printer;
+
+ PrinterSetupDialog* pDlg = new PrinterSetupDialog(this );
+ pDlg->SetPrinter(pPrinter);
+ pDlg->Execute();
+ delete pDlg;
+ GrabFocus();
+ aPrinterInfo.SetText(pPrinter->GetName());
+ return 0;
+ }
+ const BOOL bEnable = pButton == &aSingleButton;
+ aColText .Enable(bEnable);
+ aColField.Enable(bEnable);
+ aRowText .Enable(bEnable);
+ aRowField.Enable(bEnable);
+ aSynchronCB.Enable(!bEnable);
+
+ if ( bEnable )
+ aColField.GrabFocus();
+#ifndef PRODUCT
+ else
+ ASSERT( pButton == &aPageButton, "NewButton?" );
+#endif
+ return 0;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+SfxTabPage* SwLabPrtPage::Create(Window* pParent, const SfxItemSet& rSet)
+{
+ return new SwLabPrtPage( pParent, rSet );
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwLabPrtPage::ActivatePage( const SfxItemSet& rSet )
+{
+ Reset(rSet);
+}
+
+// --------------------------------------------------------------------------
+
+
+
+int SwLabPrtPage::DeactivatePage(SfxItemSet* pSet)
+{
+ if ( pSet )
+ FillItemSet(*pSet);
+
+ return TRUE;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwLabPrtPage::FillItem(SwLabItem& rItem)
+{
+ rItem.bPage = aPageButton.IsChecked();
+ rItem.nCol = (USHORT) aColField.GetValue();
+ rItem.nRow = (USHORT) aRowField.GetValue();
+ rItem.bSynchron = aSynchronCB.IsChecked() && aSynchronCB.IsEnabled();
+}
+
+// --------------------------------------------------------------------------
+
+
+
+BOOL SwLabPrtPage::FillItemSet(SfxItemSet& rSet)
+{
+ SwLabItem aItem;
+ GetParent()->GetLabItem(aItem);
+ FillItem(aItem);
+ rSet.Put(aItem);
+
+ return TRUE;
+}
+
+// --------------------------------------------------------------------------
+
+
+
+void SwLabPrtPage::Reset(const SfxItemSet& rSet)
+{
+ SwLabItem aItem;
+ GetParent()->GetLabItem(aItem);
+
+ aColField.SetValue (aItem.nCol);
+ aRowField.SetValue (aItem.nRow);
+
+ if (aItem.bPage)
+ {
+ aPageButton.Check();
+ aPageButton.GetClickHdl().Call(&aPageButton);
+ }
+ else
+ {
+ aSingleButton.GetClickHdl().Call(&aSingleButton);
+ aSingleButton.Check();
+ }
+
+ if (pPrinter)
+ {
+ // Drucker anzeigen
+ aPrinterInfo.SetText(pPrinter->GetName());
+ }
+ else
+ aPrinterInfo.SetText(Printer::GetDefaultPrinterName());
+
+ aColField.SetMax(aItem.nCols);
+ aRowField.SetMax(aItem.nRows);
+
+ aColField.SetLast(aColField.GetMax());
+ aRowField.SetLast(aRowField.GetMax());
+
+ aSynchronCB.Check(aItem.bSynchron);
+}
+
+// --------------------------------------------------------------------------
+/*
+$Log: not supported by cvs2svn $
+Revision 1.37 2000/09/18 16:05:26 willem.vandorp
+OpenOffice header added.
+
+Revision 1.36 2000/03/03 15:17:00 os
+StarView remainders removed
+
+Revision 1.35 2000/02/11 14:45:41 hr
+#70473# changes for unicode ( patched by automated patchtool )
+
+Revision 1.34 1998/09/11 10:29:48 OM
+#56319# Richtiges Etikettenformat verwenden
+
+
+ Rev 1.33 11 Sep 1998 12:29:48 OM
+ #56319# Richtiges Etikettenformat verwenden
+
+ Rev 1.32 07 Sep 1998 16:59:32 OM
+ #55930# Einzelnes Etikett an der korrekten Position drucken
+
+ Rev 1.31 14 Mar 1998 17:06:50 OM
+ Gelinkte Etiketten
+
+ Rev 1.30 14 Mar 1998 14:26:48 OM
+ ExchangeSupport repariert/implementiert
+
+ Rev 1.29 14 Mar 1998 14:10:46 OM
+ ExchangeSupport repariert/implementiert
+
+ Rev 1.28 16 Feb 1998 15:35:42 RG
+ ->DOS-Format
+
+ Rev 1.27 24 Nov 1997 11:52:14 MA
+ includes
+
+ Rev 1.26 03 Nov 1997 13:17:10 MA
+ precomp entfernt
+
+ Rev 1.25 01 Oct 1997 10:53:46 TRI
+ PrintDialogumstellung
+
+ Rev 1.24 11 Nov 1996 09:44:18 MA
+ ResMgr
+
+ Rev 1.23 29 Oct 1996 17:59:30 HJS
+ includes
+
+ Rev 1.22 07 Oct 1996 09:33:18 MA
+ Umstellung Enable/Disable
+
+ Rev 1.21 26 Jul 1996 20:36:38 MA
+ includes
+
+ Rev 1.20 28 Jun 1996 16:37:30 HJS
+ includes
+
+ Rev 1.19 06 Feb 1996 15:19:08 JP
+ Link Umstellung 305
+
+ Rev 1.18 25 Jan 1996 16:58:22 OM
+ Dialogfelder richtig initialisieren
+
+ Rev 1.17 08 Dec 1995 18:07:14 OM
+ Drucker im Dtor loeschen
+
+ Rev 1.16 27 Nov 1995 19:36:34 OM
+ HasExchangeSupport->303a
+
+ Rev 1.15 24 Nov 1995 16:59:40 OM
+ PCH->PRECOMPILED
+
+ Rev 1.14 23 Nov 1995 18:03:02 OM
+ Etikettenanzahl richtig initialisieren
+
+ Rev 1.13 13 Nov 1995 13:44:04 MA
+ chg: Link-Cast entfernt
+
+ Rev 1.12 08 Nov 1995 13:48:20 OM
+ Change->Set
+
+ Rev 1.11 04 Aug 1995 18:32:48 OM
+ Umstellung Drucktabpage
+
+ Rev 1.10 03 Aug 1995 18:49:38 OM
+ Umstellung Print-TabPage
+
+ Rev 1.9 13 Jul 1995 13:44:18 MA
+ chg: LabelDlg jetzt ohne vorher ein Dokument zu erzeugen
+
+ Rev 1.8 10 Jul 1995 09:50:20 MA
+ LabelDlg optimiert und etwas aufgeraeumt.
+
+ Rev 1.7 24 May 1995 18:13:48 ER
+ Segmentierung
+
+ Rev 1.6 18 Apr 1995 18:08:34 PK
+ kleine bugfixes
+
+ Rev 1.5 05 Apr 1995 09:27:00 JP
+ Benutzung vom Link-Makro eingeschraenkt
+
+ Rev 1.4 23 Mar 1995 18:33:50 PK
+ geht immer weiter ...
+
+ Rev 1.3 17 Mar 1995 17:10:32 PK
+ geht immer weiter
+
+ Rev 1.2 15 Mar 1995 13:27:08 PK
+ geht immer weiter
+
+ Rev 1.1 06 Mar 1995 02:33:38 PK
+ envelp cebit-fertig
+
+ Rev 1.0 06 Mar 1995 00:08:26 PK
+ linkbarer envelp-zustand
+*/
+
+
+
diff --git a/sw/source/ui/envelp/labprt.hrc b/sw/source/ui/envelp/labprt.hrc
new file mode 100644
index 000000000000..4b79b2335ee8
--- /dev/null
+++ b/sw/source/ui/envelp/labprt.hrc
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * $RCSfile: labprt.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _LABPRT_HRC
+#define _LABPRT_HRC
+
+// #include *****************************************************************
+
+#include "envelp.hrc"
+
+// Lokale Resourcen *********************************************************
+
+#define BTN_PAGE 1
+#define BTN_SINGLE 2
+#define INF_PRINTER 3
+#define TXT_COL 4
+#define FLD_COL 5
+#define TXT_ROW 6
+#define FLD_ROW 7
+#define BTN_PRTSETUP 8
+#define GB_PRINTER 9
+#define GB_DONTKNOW 10
+#define CB_SYNCHRON 11
+
+// Ueberlaufpruefung ********************************************************
+
+#define LABPRT_ACT_END 0
+
+#if LABPRT_ACT_END > RC_LABPRT_END
+#error Resource-Ueberlauf in #file, #line
+#endif
+
+#endif
+
+
diff --git a/sw/source/ui/envelp/labprt.hxx b/sw/source/ui/envelp/labprt.hxx
new file mode 100644
index 000000000000..847397410548
--- /dev/null
+++ b/sw/source/ui/envelp/labprt.hxx
@@ -0,0 +1,124 @@
+/*************************************************************************
+ *
+ * $RCSfile: labprt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _LABPRT_HXX
+#define _LABPRT_HXX
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+
+class SwLabDlg;
+class SwLabItem;
+
+// class SwLabPrtPage -------------------------------------------------------
+
+class SwLabPrtPage : public SfxTabPage
+{
+ Printer* pPrinter; //Fuer die Schachteinstellug - leider.
+
+ RadioButton aPageButton;
+ RadioButton aSingleButton;
+ FixedText aColText;
+ NumericField aColField;
+ FixedText aRowText;
+ NumericField aRowField;
+ CheckBox aSynchronCB;
+ GroupBox aGBDontKnow;
+
+ FixedInfo aPrinterInfo;
+ PushButton aPrtSetup;
+ GroupBox aGBPrinter;
+
+ SwLabPrtPage(Window* pParent, const SfxItemSet& rSet);
+ ~SwLabPrtPage();
+
+ DECL_LINK( CountHdl, Button * );
+
+ SwLabDlg* GetParent() {return (SwLabDlg*) SfxTabPage::GetParent()->GetParent();}
+
+public:
+
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rSet);
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet* pSet = 0);
+ void FillItem(SwLabItem& rItem);
+ virtual BOOL FillItemSet(SfxItemSet& rSet);
+ virtual void Reset(const SfxItemSet& rSet);
+ inline Printer* GetPrt() { return (pPrinter); }
+};
+
+#endif
+
+
diff --git a/sw/source/ui/envelp/labprt.src b/sw/source/ui/envelp/labprt.src
new file mode 100644
index 000000000000..8e924b92197b
--- /dev/null
+++ b/sw/source/ui/envelp/labprt.src
@@ -0,0 +1,317 @@
+/*************************************************************************
+ *
+ * $RCSfile: labprt.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ******************************************************************
+
+ // #include *****************************************************************
+#include "labprt.hrc"
+#include "helpid.h"
+ // TP_LAB_PRT ---------------------------------------------------------------
+TabPage TP_LAB_PRT
+{
+ HelpID = HID_LAB_PRT ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ RadioButton BTN_PAGE
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ Text = "~Ganze Seite" ;
+ Text [ ENGLISH ] = "Whole page" ;
+ Text [ NORWEGIAN ] = "Hele siden" ;
+ Text [ DANISH ] = "Hele siden" ;
+ Text [ ENGLISH_US ] = "~Entire page" ;
+ Text [ SPANISH ] = "~Toda la página" ;
+ Text [ FINNISH ] = "Koko sivu" ;
+ Text [ FRENCH ] = "~Page entière" ;
+ Text [ ITALIAN ] = "Pagina ~intera" ;
+ Text [ DUTCH ] = "~Hele pagina" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Pßgina inteira" ;
+ Text [ SWEDISH ] = "H~ela sidan" ;
+ Text [ PORTUGUESE ] = "Página ~inteira" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "ÕûÒ³(~E)";
+ Text[ russian ] = "Âñÿ ñòðàíèöà";
+ Text[ polish ] = "Ca³a strona";
+ Text[ japanese ] = "Íß°¼Þ‘S‘Ì(~E)";
+ Text[ chinese_traditional ] = "¾ã­¶(~E)";
+ Text[ arabic ] = "ÕÝÍÉ ßÇãáÉ";
+ Text[ greek ] = "Ïëüêëçñç óåëßäá";
+ Text[ korean ] = "Àüü ÆäÀÌÁö(~E)";
+ Text[ turkish ] = "~Tam sayfa";
+ };
+ RadioButton BTN_SINGLE
+ {
+ Pos = MAP_APPFONT ( 12 , 26 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "Einzelnes Eti~kett" ;
+ Text [ ENGLISH ] = "Single label" ;
+ Text [ NORWEGIAN ] = "Single label" ;
+ Text [ DANISH ] = "Enkelt etiket" ;
+ Text [ ENGLISH_US ] = "~Single label" ;
+ Text [ SPANISH ] = "~Una etiqueta" ;
+ Text [ FINNISH ] = "Yksi tarra" ;
+ Text [ FRENCH ] = "~Étiquette unique" ;
+ Text [ ITALIAN ] = "Singola etichetta" ;
+ Text [ DUTCH ] = "~Een enkel" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Etiqueta simples" ;
+ Text [ SWEDISH ] = "Enstaka eti~kett" ;
+ Text [ PORTUGUESE ] = "E~tiqueta única" ;
+ Text[ chinese_simplified ] = "µ¥¸ö±êÇ©(~S)";
+ Text[ russian ] = "Îòäåëüíàÿ íàêëåéêà";
+ Text[ polish ] = "Poj~edyncza etykieta";
+ Text[ japanese ] = "1–‡‚‚Ì×ÍÞÙ(~S)";
+ Text[ chinese_traditional ] = "³æ­Ó¶K¼Ð(~S)";
+ Text[ arabic ] = "ÈØÇÞÉ ÚäæäÉ ãÝÑÏÉ";
+ Text[ greek ] = "ÌåìïíùìÝíç åôéêÝôá";
+ Text[ korean ] = "´ÜÀÏ ¶óº§(~S)";
+ Text[ turkish ] = "Tek Eti~ket";
+ };
+ FixedText TXT_COL
+ {
+ Pos = MAP_APPFONT ( 132 , 27 ) ;
+ Size = MAP_APPFONT ( 28 , 8 ) ;
+ Text = "S~palte" ;
+ Text [ ENGLISH ] = "Column" ;
+ Text [ NORWEGIAN ] = "Column" ;
+ Text [ DANISH ] = "Kolonne" ;
+ Text [ ENGLISH_US ] = "Colu~mn" ;
+ Text [ SPANISH ] = "C~olumna" ;
+ Text [ FINNISH ] = "Sarake" ;
+ Text [ FRENCH ] = "~Colonne" ;
+ Text [ ITALIAN ] = "Colonna" ;
+ Text [ DUTCH ] = "~Kolom" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Coluna" ;
+ Text [ SWEDISH ] = "Kolu~mn" ;
+ Text [ PORTUGUESE ] = "~Coluna" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÁÐ(~M)";
+ Text[ russian ] = "Êîëîíêà";
+ Text[ polish ] = "Kolumna";
+ Text[ japanese ] = "—ñ(~M)";
+ Text[ chinese_traditional ] = "Äæ(~M)";
+ Text[ arabic ] = "ÚãæÏ";
+ Text[ greek ] = "ÓôÞëç";
+ Text[ korean ] = "¿­(~M)";
+ Text[ turkish ] = "~Sütun";
+ };
+ NumericField FLD_COL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 161 , 24 ) ;
+ Size = MAP_APPFONT ( 24 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ First = 1 ;
+ };
+ FixedText TXT_ROW
+ {
+ Pos = MAP_APPFONT ( 193 , 27 ) ;
+ Size = MAP_APPFONT ( 28 , 10 ) ;
+ Text = "Zei~le" ;
+ Text [ ENGLISH ] = "Row" ;
+ Text [ NORWEGIAN ] = "Row" ;
+ Text [ DANISH ] = "Række" ;
+ Text [ ENGLISH_US ] = "Ro~w" ;
+ Text [ SPANISH ] = "~Fila" ;
+ Text [ FINNISH ] = "Rivi" ;
+ Text [ FRENCH ] = "~Ligne" ;
+ Text [ ITALIAN ] = "Riga" ;
+ Text [ DUTCH ] = "~Rij" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Fileira" ;
+ Text [ SWEDISH ] = "~Rad" ;
+ Text [ PORTUGUESE ] = "~Linha" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÐÐ(~W)";
+ Text[ russian ] = "Ñòðîêà";
+ Text[ polish ] = "Wiersz";
+ Text[ japanese ] = "s(~Wj";
+ Text[ chinese_traditional ] = "¦æ(~W)";
+ Text[ arabic ] = "ÕÝ";
+ Text[ greek ] = "ÃñáììÞ";
+ Text[ korean ] = "Çà(~W)";
+ Text[ turkish ] = "S~atýr";
+ };
+ NumericField FLD_ROW
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 224 , 24 ) ;
+ Size = MAP_APPFONT ( 24 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ First = 1 ;
+ };
+ CheckBox CB_SYNCHRON
+ {
+ Pos = MAP_APPFONT ( 12 , 43 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "Inhalte ~synchronisieren" ;
+ Text [ ENGLISH ] = "~Synchronize content" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Synchroni~ze contents" ;
+ Text [ portuguese_brazilian ] = "Inhalte ~synchronisieren" ;
+ Text [ swedish ] = "~Synkronisera innehåll" ;
+ Text [ danish ] = "Synkroniser indhold" ;
+ Text [ italian ] = "Sincronizza ~contenuti" ;
+ Text [ spanish ] = "~Sincronizar contenidos" ;
+ Text [ french ] = "~Synchroniser le contenu" ;
+ Text [ dutch ] = "Inhoud ~synchroniseren" ;
+ Text [ portuguese ] = "~Sincronizar conteúdos" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝͬ²½»¯(~S)";
+ Text[ russian ] = "Ñèíõðîíèçàöèÿ ñîäåðæèìîãî";
+ Text[ polish ] = "Synchronizacja treœci";
+ Text[ japanese ] = "“à—e‚𓯊ú‚·‚é(~S)";
+ Text[ chinese_traditional ] = "¤º®e¦P¨B¤Æ(~S)";
+ Text[ arabic ] = "ÊÒÇãä ÇáãÍÊæíÇÊ";
+ Text[ greek ] = "Óõã÷ñïíéóìüò ðåñéå÷ïìÝíùí";
+ Text[ korean ] = "³»¿ë µ¿±âÈ­(~Z)";
+ Text[ turkish ] = "Ýçeriði çoðalt";
+ };
+ GroupBox GB_DONTKNOW
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 60 ) ;
+ };
+ FixedText INF_PRINTER
+ {
+ Pos = MAP_APPFONT ( 12 , 82 ) ;
+ Size = MAP_APPFONT ( 171 , 10 ) ;
+ Text = "Druckername" ;
+ Text [ ENGLISH ] = "Printer name" ;
+ Left = TRUE ;
+ Text [ english_us ] = "Printer Name" ;
+ Text [ italian ] = "Nome stampante" ;
+ Text [ spanish ] = "Nombre de la impresora" ;
+ Text [ french ] = "Nom de l'imprimante" ;
+ Text [ dutch ] = "Printer naam" ;
+ Text [ swedish ] = "Skrivarnamn" ;
+ Text [ danish ] = "Printernavn" ;
+ Text [ portuguese_brazilian ] = "Druckername" ;
+ Text [ portuguese ] = "Nome da impressora" ;
+ Text[ chinese_simplified ] = "´òÓ¡»úÃû³Æ";
+ Text[ russian ] = "Íàçâàíèå ïðèíòåðà";
+ Text[ polish ] = "Nazwa drukarki";
+ Text[ japanese ] = "ÌßØÝÀ–¼";
+ Text[ chinese_traditional ] = "¦Lªí¾÷¦WºÙ";
+ Text[ arabic ] = "ÇÓã ÇáØÇÈÚÉ";
+ Text[ greek ] = "¼íïìá åêôõðùôÞ";
+ Text[ korean ] = "ÇÁ¸°ÅÍ À̸§";
+ Text[ turkish ] = "Yazýcý adý";
+ };
+ PushButton BTN_PRTSETUP
+ {
+ Pos = MAP_APPFONT ( 200 , 80 ) ;
+ Size = MAP_APPFONT ( 48 , 14 ) ;
+ Text = "~Einrichten..." ;
+ Text [ ENGLISH ] = "Setup..." ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Setup..." ;
+ Text [ italian ] = "Imposta..." ;
+ Text [ spanish ] = "Configurar..." ;
+ Text [ french ] = "~Paramétrer..." ;
+ Text [ dutch ] = "~Configureren..." ;
+ Text [ swedish ] = "Inrätta..." ;
+ Text [ danish ] = "Indstil..." ;
+ Text [ portuguese_brazilian ] = "Einrichten..." ;
+ Text [ portuguese ] = "~Configurar..." ;
+ Text[ chinese_simplified ] = "ÉèÖÃ...";
+ Text[ russian ] = "Íàñòðîéêà...";
+ Text[ polish ] = "Ust~aw";
+ Text[ japanese ] = "Ý’è...";
+ Text[ chinese_traditional ] = "³]¸m...";
+ Text[ arabic ] = "...ÅÚÏÇÏ";
+ Text[ greek ] = "~ÅãêáôÜóôáóç...";
+ Text[ korean ] = "¼³Á¤...";
+ Text[ turkish ] = "Ayarlar...";
+ };
+ GroupBox GB_PRINTER
+ {
+ Pos = MAP_APPFONT ( 6 , 70 ) ;
+ Size = MAP_APPFONT ( 248 , 32 ) ;
+ Text = " Drucker " ;
+ Text [ ENGLISH ] = " Printer " ;
+ Text [ dutch ] = "Printer " ;
+ Text [ english_us ] = "Printer " ;
+ Text [ italian ] = "Stampante " ;
+ Text [ spanish ] = "Impresora " ;
+ Text [ french ] = "Imprimante " ;
+ Text [ swedish ] = "Skrivare " ;
+ Text [ danish ] = "Printer " ;
+ Text [ portuguese_brazilian ] = "Drucker " ;
+ Text [ portuguese ] = "Impressora " ;
+ Text[ chinese_simplified ] = "´òÓ¡»ú ";
+ Text[ russian ] = "Ïðèíòåð ";
+ Text[ polish ] = "Drukarka ";
+ Text[ japanese ] = "ÌßØÝÀ ";
+ Text[ chinese_traditional ] = "¦Lªí¾÷ ";
+ Text[ arabic ] = "ÇáØÇÈÚÉ ";
+ Text[ greek ] = "ÅêôõðùôÞò ";
+ Text[ korean ] = "ÇÁ¸°ÅÍ ";
+ Text[ turkish ] = "Yazýcý ";
+ };
+};
+ // **************************************************************************
diff --git a/sw/source/ui/envelp/mailmrge.cxx b/sw/source/ui/envelp/mailmrge.cxx
new file mode 100644
index 000000000000..549677723f4e
--- /dev/null
+++ b/sw/source/ui/envelp/mailmrge.cxx
@@ -0,0 +1,686 @@
+/*************************************************************************
+ *
+ * $RCSfile: mailmrge.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:35 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+#ifndef _SDB_SDBHASH_HXX
+#include <sdb/sdbhash.hxx>
+#endif
+#ifndef _IODLG_HXX
+#include "sfx2/iodlg.hxx"
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _MAILENUM_HXX //autogen
+#include <goodies/mailenum.hxx>
+#endif
+#ifndef _SFXINIMGR_HXX //autogen
+#include <svtools/iniman.hxx>
+#endif
+#ifndef _SVX_MULTIFIL_HXX
+#include <svx/multifil.hxx>
+#endif
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+
+#include "helpid.h"
+#include "view.hxx"
+#include "docsh.hxx"
+#include "wrtsh.hxx"
+#include "dbmgr.hxx"
+#include "dbui.hxx"
+#include "swmodule.hxx"
+#include "modcfg.hxx"
+
+#include "envelp.hrc"
+#include "mailmrge.hrc"
+#include "mailmrge.hxx"
+
+#ifdef REPLACE_OFADBMGR
+#ifndef _COM_SUN_STAR_SDBCX_XCOLUMNSSUPPLIER_HPP_
+#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XDATASOURCE_HPP_
+#include <com/sun/star/sdbc/XDataSource.hpp>
+#endif
+
+using namespace rtl;
+using namespace com::sun::star::container;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::sdbc;
+using namespace com::sun::star::sdbcx;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::util;
+using namespace com::sun::star::uno;
+
+#endif
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwMailMergeDlg::SwMailMergeDlg(Window *pParent, SwWrtShell *pShell,
+ const String& rName,
+#ifdef REPLACE_OFADBMGR
+ const String& rTblName,
+#endif
+ const String& rStat,
+ SbaSelectionListRef& pSelList):
+
+ SvxStandardDialog(pParent, SW_RES(DLG_MAILMERGE)),
+
+ aAllRB (this, SW_RES(RB_ALL)),
+ aMarkedRB (this, SW_RES(RB_MARKED)),
+ aFromRB (this, SW_RES(RB_FROM)),
+ aFromNF (this, SW_RES(NF_FROM)),
+ aBisFT (this, SW_RES(FT_BIS)),
+ aToNF (this, SW_RES(NF_TO)),
+ aRecordGB (this, SW_RES(GB_RECORD)),
+
+ aPrinterRB (this, SW_RES(RB_PRINTER)),
+ aMailingRB (this, SW_RES(RB_MAILING)),
+ aFileRB (this, SW_RES(RB_FILE)),
+
+ aSingleJobsCB (this, SW_RES(CB_SINGLE_JOBS)),
+
+ aPathFT (this, SW_RES(FT_PATH)),
+ aPathED (this, SW_RES(ED_PATH)),
+ aPathPB (this, SW_RES(PB_PATH)),
+ aFilenameFT (this, SW_RES(FT_FILENAME)),
+ aColumnRB (this, SW_RES(RB_COLUMN)),
+ aFilenameRB (this, SW_RES(RB_FILENAME)),
+ aColumnLB (this, SW_RES(LB_COLUMN)),
+ aFilenameED (this, SW_RES(ED_FILENAME)),
+
+ aAddressFT (this, SW_RES(FT_ADDRESS)),
+ aAddressFldLB (this, SW_RES(LB_ADDRESSFLD)),
+ aSubjectFT (this, SW_RES(FT_SUBJECT)),
+ aSubjectED (this, SW_RES(ED_SUBJECT)),
+ aFormatFT (this, SW_RES(FT_FORMAT)),
+ aAttachFT (this, SW_RES(FT_ATTACH)),
+ aAttachED (this, SW_RES(ED_ATTACH)),
+ aAttachPB (this, SW_RES(PB_ATTACH)),
+ aFormatSwCB (this, SW_RES(CB_FORMAT_SW)),
+ aFormatHtmlCB (this, SW_RES(CB_FORMAT_HTML)),
+ aFormatRtfCB (this, SW_RES(CB_FORMAT_RTF)),
+ aDestGB (this, SW_RES(GB_DEST)),
+
+ aOkBTN (this, SW_RES(BTN_OK)),
+ aCancelBTN (this, SW_RES(BTN_CANCEL)),
+ aHelpBTN (this, SW_RES(BTN_HELP)),
+
+ pSh (pShell),
+ rDBName (rName),
+#ifdef REPLACE_OFADBMGR
+ rTableName (rTblName),
+#endif
+ rStatement (rStat),
+ rSelectionList (pSelList),
+ nMergeType (DBMGR_MERGE_MAILING)
+
+{
+ FreeResource();
+
+ DBG_ASSERT(pSh, "Shell fehlt" );
+
+#ifdef REPLACE_OFADBMGR
+#else
+ pSbaObject = pSh->GetNewDBMgr()->GetSbaObject();
+#endif
+ pModOpt = SW_MOD()->GetModuleConfig();
+
+ aSingleJobsCB.Check(pModOpt->IsSinglePrintJob());
+
+ BYTE nMailingMode(pModOpt->GetMailingFormats());
+ aFormatSwCB.Check((nMailingMode & TXTFORMAT_OFFICE) != 0);
+ aFormatHtmlCB.Check((nMailingMode & TXTFORMAT_HTML) != 0);
+ aFormatRtfCB.Check((nMailingMode & TXTFORMAT_RTF) != 0);
+
+#ifdef REPLACE_OFADBMGR
+#else
+ DBG_ASSERT(pSbaObject, "SbaObject nicht gefunden!");
+#endif
+ aAllRB.Check(TRUE);
+
+ // Handler installieren
+ Link aLk = LINK(this, SwMailMergeDlg, ButtonHdl);
+ aOkBTN.SetClickHdl(aLk);
+
+ aPathPB.SetClickHdl(LINK(this, SwMailMergeDlg, InsertPathHdl));
+ aAttachPB.SetClickHdl(LINK(this, SwMailMergeDlg, AttachFileHdl));
+
+ aLk = LINK(this, SwMailMergeDlg, RadioButtonHdl);
+ aPrinterRB.SetClickHdl(aLk);
+ aMailingRB.SetClickHdl(aLk);
+ aFileRB.SetClickHdl(aLk);
+
+ aLk = LINK(this, SwMailMergeDlg, FilenameHdl);
+ aColumnRB.SetClickHdl(aLk);
+ aFilenameRB.SetClickHdl(aLk);
+ BOOL bColumn = pModOpt->IsNameFromColumn();
+ if (bColumn)
+ aColumnRB.Check();
+ else
+ aFilenameRB.Check();
+
+ FilenameHdl(bColumn ? &aColumnRB : &aFilenameRB);
+
+ aLk = LINK(this, SwMailMergeDlg, ModifyHdl);
+ aFromNF.SetModifyHdl(aLk);
+ aToNF.SetModifyHdl(aLk);
+
+#ifdef REPLACE_OFADBMGR
+ pSh->GetNewDBMgr()->GetColumnNames(&aAddressFldLB, rDBName, rTableName);
+#else
+ pSh->GetNewDBMgr()->GetColumnNames(&aAddressFldLB, rDBName);
+#endif
+ for(USHORT nEntry = 0; nEntry < aAddressFldLB.GetEntryCount(); nEntry++)
+ aColumnLB.InsertEntry(aAddressFldLB.GetEntry(nEntry));
+ aAddressFldLB.SelectEntry(C2S("EMAIL"));
+
+ aPathED.SetText(pModOpt->GetMailingPath());
+ if (!aPathED.GetText().Len())
+ {
+ SfxIniManager* pIniManager = SFX_APP()->GetIniManager();
+ ASSERT(pIniManager, "Kein Inimanager angelegt !!");
+ aPathED.SetText(pIniManager->Get(SFX_KEY_WORK_PATH));
+ }
+ String sMailName = pModOpt->GetMailName();
+
+ if (!bColumn || !sMailName.Len())
+ {
+ aColumnLB.SelectEntry(C2S("NAME"));
+ aFilenameED.SetText(sMailName);
+ }
+ else
+ aColumnLB.SelectEntry(sMailName);
+
+ if (aAddressFldLB.GetSelectEntryCount() == 0)
+ aAddressFldLB.SelectEntryPos(0);
+ if (aColumnLB.GetSelectEntryCount() == 0)
+ aColumnLB.SelectEntryPos(0);
+
+ const BOOL bEnable = rSelectionList->Count() != 0;
+ aMarkedRB.Enable(bEnable);
+ if (bEnable && (long)rSelectionList->GetObject(0) != -1L)
+ aMarkedRB.Check();
+ else
+ {
+ aAllRB.Check();
+ aMarkedRB.Enable(FALSE);
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwMailMergeDlg::~SwMailMergeDlg()
+{
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwMailMergeDlg::Apply()
+{
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwMailMergeDlg, ButtonHdl, Button *, pBtn )
+{
+ if (pBtn == &aOkBTN)
+ {
+ ExecQryShell(FALSE);
+ EndDialog(RET_OK);
+ }
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwMailMergeDlg, RadioButtonHdl, RadioButton *, pBtn )
+{
+ if (pBtn == &aFileRB)
+ {
+ aAddressFT.Hide();
+ aAddressFldLB.Hide();
+ aSubjectFT.Hide();
+ aSubjectED.Hide();
+ aFormatFT.Hide();
+ aFormatSwCB.Hide();
+ aFormatHtmlCB.Hide();
+ aFormatRtfCB.Hide();
+ aSingleJobsCB.Hide();
+ aAttachFT.Hide();
+ aAttachED.Hide();
+ aAttachPB.Hide();
+
+ aPathFT.Show();
+ aPathED.Show();
+ aPathPB.Show();
+ aFilenameFT.Show();
+ aColumnRB.Show();
+ aFilenameRB.Show();
+ aColumnLB.Show();
+ aFilenameED.Show();
+ }
+ else
+ {
+ aAddressFT.Show();
+ aAddressFldLB.Show();
+ aSubjectFT.Show();
+ aSubjectED.Show();
+ aFormatFT.Show();
+ aFormatSwCB.Show();
+ aFormatHtmlCB.Show();
+ aFormatRtfCB.Show();
+ aAttachFT.Show();
+ aAttachED.Show();
+ aAttachPB.Show();
+
+ aPathFT.Hide();
+ aPathED.Hide();
+ aPathPB.Hide();
+ aFilenameFT.Hide();
+ aColumnRB.Hide();
+ aFilenameRB.Hide();
+ aColumnLB.Hide();
+ aFilenameED.Hide();
+
+ const BOOL bEnable = pBtn != &aPrinterRB;
+ aAddressFT.Enable(bEnable);
+ aAddressFldLB.Enable(bEnable);
+ aSubjectFT.Enable(bEnable);
+ aSubjectED.Enable(bEnable);
+ aFormatFT.Enable(bEnable);
+ aFormatSwCB.Enable(bEnable);
+ aFormatHtmlCB.Enable(bEnable);
+ aFormatRtfCB.Enable(bEnable);
+ aAttachFT.Enable(bEnable);
+ aAttachED.Enable(bEnable);
+ aAttachPB.Enable(bEnable);
+
+ aAddressFT.Show(bEnable);
+ aAddressFldLB.Show(bEnable);
+ aSingleJobsCB.Show(!bEnable);
+ aSingleJobsCB.Enable(!bEnable);
+ }
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwMailMergeDlg, FilenameHdl, RadioButton *, pBtn )
+{
+ BOOL bEnable = pBtn == &aColumnRB;
+
+ aColumnLB.Enable(bEnable);
+ aFilenameED.Enable(!bEnable);
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwMailMergeDlg, ModifyHdl, NumericField *, pFld )
+{
+ aFromRB.Check();
+ return (0);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwMailMergeDlg::ExecQryShell(BOOL bVisible)
+{
+ SwNewDBMgr* pMgr = pSh->GetNewDBMgr();
+
+ if (aPrinterRB.IsChecked())
+ nMergeType = DBMGR_MERGE_MAILMERGE;
+ else if (aMailingRB.IsChecked())
+ {
+ nMergeType = DBMGR_MERGE_MAILING;
+ pMgr->SetEMailColumn(aAddressFldLB.GetSelectEntry());
+ pMgr->SetSubject(aSubjectED.GetText());
+ pMgr->SetAttachment(aAttachED.GetText());
+ }
+ else
+ {
+ nMergeType = DBMGR_MERGE_MAILFILES;
+ String sPath(aPathED.GetText());
+ pModOpt->SetMailingPath(sPath);
+ String sDelim(INET_PATH_TOKEN);
+
+ if (sPath.Len() >= sDelim.Len() &&
+ sPath.Copy(sPath.Len()-sDelim.Len()).CompareTo(sDelim) != COMPARE_EQUAL)
+ sPath += sDelim;
+
+ pModOpt->SetNameFromColumn(aColumnRB.IsChecked());
+
+ if (aColumnRB.IsChecked())
+ {
+ pMgr->SetEMailColumn(aColumnLB.GetSelectEntry());
+ pModOpt->SetMailName(aColumnLB.GetSelectEntry());
+ }
+ else
+ {
+ String sName(aFilenameED.GetText());
+ if (!sName.Len())
+ {
+ sName = pSh->GetView().GetDocShell()->GetTitle();
+ INetURLObject aTemp(sName);
+ sName = aTemp.GetBase();
+ }
+ sPath += sName;
+ pMgr->SetEMailColumn(aEmptyStr);
+ pModOpt->SetMailName(sName);
+ }
+
+ pMgr->SetSubject(sPath);
+ }
+
+ if (aFromRB.IsChecked()) // Liste Einfuegen
+ {
+ ULONG nStart = aFromNF.GetValue();
+ ULONG nEnd = aToNF.GetValue();
+
+ if (nEnd < nStart)
+ {
+ ULONG nZw = nEnd;
+ nEnd = nStart;
+ nStart = nZw;
+ }
+
+ rSelectionList->Clear();
+
+ for (ULONG i = nStart; i <= nEnd; i++)
+ rSelectionList->Insert((void*)i , LIST_APPEND);
+ }
+
+ if (aAllRB.IsChecked() )
+ rSelectionList->Clear(); // Leere Selektion = Alles einfuegen
+
+ pModOpt->SetSinglePrintJob(aSingleJobsCB.IsChecked());
+
+ BYTE nMailingMode = 0;
+
+ if (aFormatSwCB.IsChecked())
+ nMailingMode |= TXTFORMAT_OFFICE;
+ if (aFormatHtmlCB.IsChecked())
+ nMailingMode |= TXTFORMAT_HTML;
+ if (aFormatRtfCB.IsChecked())
+ nMailingMode |= TXTFORMAT_RTF;
+ pModOpt->SetMailingFormats(nMailingMode);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwMailMergeDlg, InsertPathHdl, PushButton *, pBtn )
+{
+ SfxIniManager* pIniManager = SFX_APP()->GetIniManager();
+ ASSERT(pIniManager, "Kein Inimanager angelegt !!");
+ String sPath(aPathED.GetText());
+ if (!sPath.Len())
+ sPath = pIniManager->Get(SFX_KEY_WORK_PATH);
+ WinBits nBits = WB_3DLOOK|WB_STDMODAL|WB_OPEN|SFXWB_PATHDIALOG;
+
+ SfxFileDialog* pFileDlg = new SfxFileDialog( this, nBits );
+ pFileDlg->DisableSaveLastDirectory();
+ pFileDlg->SetPath( sPath );
+ pFileDlg->SetHelpId(HID_FILEDLG_MAILMRGE1);
+
+ if (pFileDlg->Execute())
+ aPathED.SetText(pFileDlg->GetPath());
+
+ delete pFileDlg;
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwMailMergeDlg, AttachFileHdl, PushButton *, pBtn )
+{
+ SvxMultiFileDialog* pFileDlg = new SvxMultiFileDialog(this);
+ pFileDlg->SetFiles(aAttachED.GetText());
+ pFileDlg->SetHelpId(HID_FILEDLG_MAILMRGE2);
+
+ if (pFileDlg->Execute())
+ aAttachED.SetText(pFileDlg->GetFiles());
+
+ delete pFileDlg;
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.75 2000/09/18 16:05:27 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.74 2000/07/18 12:50:08 os
+ replace ofadbmgr
+
+ Revision 1.73 2000/06/07 13:26:46 os
+ using UCB
+
+ Revision 1.72 2000/04/19 12:56:34 os
+ include sfx2/filedlg.hxx removed
+
+ Revision 1.71 2000/04/18 15:31:35 os
+ UNICODE
+
+ Revision 1.70 2000/03/03 15:17:00 os
+ StarView remainders removed
+
+ Revision 1.69 2000/02/11 14:45:27 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.68 2000/01/24 12:48:37 os
+ #72153# call SfxFileDialog::DisableSaveLastDirectory
+
+ Revision 1.67 1998/09/02 12:11:56 OM
+ #45378# HelpIDs fuer Dateidialoge
+
+
+ Rev 1.66 02 Sep 1998 14:11:56 OM
+ #45378# HelpIDs fuer Dateidialoge
+
+ Rev 1.65 23 Jul 1998 13:26:52 OM
+ #52257# Mail Attachments
+
+ Rev 1.64 17 Jul 1998 17:19:52 TJ
+ include
+
+ Rev 1.63 09 Jul 1998 09:52:32 JP
+ EmptyStr benutzen
+
+ Rev 1.62 09 Dec 1997 12:31:28 OM
+ #45200# Serienbrief: Speichern-Monitor
+
+ Rev 1.61 02 Dec 1997 19:39:12 MA
+ #45900#, SelectionList muss fuer Dialog existieren
+
+ Rev 1.60 24 Nov 1997 11:52:12 MA
+ includes
+
+ Rev 1.59 03 Nov 1997 13:17:14 MA
+ precomp entfernt
+
+ Rev 1.58 30 Sep 1997 14:22:06 MH
+ chg: header
+
+ Rev 1.57 02 Sep 1997 09:58:22 OM
+ SDB-Headeranpassung
+
+ Rev 1.56 26 Aug 1997 15:34:46 TRI
+ VCL Includes
+
+ Rev 1.55 05 Aug 1997 12:31:44 MH
+ chg: header
+
+ Rev 1.54 08 Jul 1997 14:12:44 OS
+ ConfigItems von der App ans Module
+
+ Rev 1.53 09 Jun 1997 17:22:32 OM
+ Serienbriefe als Dateien speichern
+
+ Rev 1.52 04 Jun 1997 11:43:02 OM
+ Korrektes Mailformat RTF
+
+ Rev 1.51 20 Mar 1997 12:44:42 OM
+ Mailing: Format RTF
+
+ Rev 1.50 11 Mar 1997 11:27:18 OM
+ Serienbrief-eMail in waehlbaren Formaten versenden
+
+ Rev 1.49 14 Feb 1997 11:36:24 OM
+ #36178# GPF im Serienbriefdruck behoben
+
+ Rev 1.48 29 Jan 1997 18:13:04 MA
+ unbenutzes entfernt
+
+ Rev 1.47 06 Dec 1996 14:39:36 OM
+ OpenDB-Fehlercode korrigiert
+
+ Rev 1.46 05 Dec 1996 13:36:58 OM
+ Serienbrief reanimiert
+
+ Rev 1.45 11 Nov 1996 09:44:18 MA
+ ResMgr
+
+ Rev 1.44 07 Oct 1996 09:33:18 MA
+ Umstellung Enable/Disable
+
+ Rev 1.43 18 Sep 1996 10:38:54 OM
+ Serienbriefe wieder angebunden
+
+ Rev 1.42 13 Sep 1996 15:46:48 OM
+ Serienbrief
+
+ Rev 1.41 22 Aug 1996 12:30:32 OM
+ Serienbrief Dlg umgestellt
+
+ Rev 1.40 06 Aug 1996 16:45:38 OM
+ Datenbankumstellung
+
+ Rev 1.39 26 Jul 1996 20:36:38 MA
+ includes
+
+ Rev 1.38 25 Jul 1996 16:39:52 OM
+ DB-Auswahldialog eingebaut
+
+ Rev 1.37 23 Jul 1996 13:26:32 OM
+ Datenbank und Tabelle auswaehlen
+
+ Rev 1.36 22 Jul 1996 11:03:00 OM
+ Datenbankauswahldialog
+
+ Rev 1.35 19 Jul 1996 16:10:02 OM
+ SBA-Umstellung
+
+ Rev 1.34 17 Jul 1996 13:47:06 OM
+ Datenbankumstellung 327
+
+ Rev 1.33 05 Jul 1996 15:57:50 OM
+ #28464# Serienbrief mit markierten Datensaetzen
+
+ Rev 1.32 28 Jun 1996 10:21:50 OM
+ Neue Segs
+
+ Rev 1.31 28 Jun 1996 10:20:54 OM
+ #29103# Radiobutton bei Eingabe selektieren
+
+ Rev 1.30 04 Jun 1996 14:10:28 OM
+ Neue Segs
+
+ Rev 1.29 04 Jun 1996 14:09:40 OM
+ Serienbrief Mailing
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/envelp/mailmrge.hrc b/sw/source/ui/envelp/mailmrge.hrc
new file mode 100644
index 000000000000..3d03b62fd82c
--- /dev/null
+++ b/sw/source/ui/envelp/mailmrge.hrc
@@ -0,0 +1,108 @@
+/*************************************************************************
+ *
+ * $RCSfile: mailmrge.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _MAILMRGE_HRC
+#define _MAILMRGE_HRC
+
+// #include -----------------------------------------------------------------
+
+#include "envelp.hrc"
+
+// Elemente -----------------------------------------------------------------
+
+#define GB_RECORD 1
+#define RB_ALL 2
+#define RB_MARKED 3
+#define RB_FROM 4
+#define NF_FROM 5
+#define FT_BIS 6
+#define NF_TO 7
+#define BTN_OK 8
+#define BTN_CANCEL 9
+#define BTN_HELP 10
+#define RB_PRINTER 11
+#define RB_MAILING 12
+#define FT_ADDRESS 13
+#define LB_ADDRESSFLD 14
+#define FT_SUBJECT 15
+#define ED_SUBJECT 16
+#define GB_DEST 17
+#define CB_SINGLE_JOBS 18
+#define FT_FORMAT 19
+#define CB_FORMAT_SW 20
+#define CB_FORMAT_HTML 21
+#define CB_FORMAT_RTF 22
+#define RB_FILE 23
+#define FT_PATH 24
+#define ED_PATH 25
+#define PB_PATH 26
+#define FT_FILENAME 27
+#define RB_COLUMN 28
+#define RB_FILENAME 29
+#define LB_COLUMN 30
+#define ED_FILENAME 31
+#define FT_ATTACH 32
+#define ED_ATTACH 33
+#define PB_ATTACH 34
+
+#endif
+
+
diff --git a/sw/source/ui/envelp/mailmrge.src b/sw/source/ui/envelp/mailmrge.src
new file mode 100644
index 000000000000..f749259c6e83
--- /dev/null
+++ b/sw/source/ui/envelp/mailmrge.src
@@ -0,0 +1,785 @@
+/*************************************************************************
+ *
+ * $RCSfile: mailmrge.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ******************************************************************
+
+ // #include *****************************************************************
+#include "mailmrge.hrc"
+#include "cmdid.h"
+ModalDialog DLG_MAILMERGE
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 242 , 179 ) ;
+ Text = "Serienbrief" ;
+ Text [ ENGLISH ] = "Print merge" ;
+ Text [ norwegian ] = "Print merge" ;
+ Text [ italian ] = "Stampa in serie" ;
+ Text [ portuguese_brazilian ] = "Imprimir Intercalação" ;
+ Text [ portuguese ] = "Carta em série" ;
+ Text [ finnish ] = "Yhdistelytulostus" ;
+ Text [ danish ] = "Brevfletning" ;
+ Text [ french ] = "Mailing" ;
+ Text [ swedish ] = "Kopplad utskrift" ;
+ Text [ dutch ] = "Standaardbrief" ;
+ Text [ spanish ] = "Carta en serie" ;
+ Text [ english_us ] = "Form Letter" ;
+ Moveable = TRUE ;
+ HelpID = FN_QRY_MERGE ;
+ RadioButton RB_ALL
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 162 , 10 ) ;
+ Text = "~Alle" ;
+ Text [ ENGLISH ] = "~All" ;
+ Text [ norwegian ] = "~All" ;
+ Text [ italian ] = "~Tutti" ;
+ Text [ portuguese_brazilian ] = "~Tudo" ;
+ Text [ portuguese ] = "~Todos" ;
+ Text [ finnish ] = "~Kaikki" ;
+ Text [ danish ] = "Alle" ;
+ Text [ french ] = "~Tous" ;
+ Text [ swedish ] = "~Alla" ;
+ Text [ dutch ] = "~Alles" ;
+ Text [ spanish ] = "T~odos" ;
+ Text [ english_us ] = "~All" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "È«²¿(~A)";
+ Text[ russian ] = "Âñå";
+ Text[ polish ] = "Wszystkie";
+ Text[ japanese ] = "‚·‚ׂÄ(~A)";
+ Text[ chinese_traditional ] = "¥þ³¡(~A)";
+ Text[ arabic ] = "Çáßá";
+ Text[ greek ] = "¼ëá";
+ Text[ korean ] = "Àüü(~A)";
+ Text[ turkish ] = "Tümü";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_MARKED
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 162 , 10 ) ;
+ Text = "Markierte ~Datensätze" ;
+ Text [ ENGLISH ] = "S~elected records" ;
+ Text [ norwegian ] = "Selected records" ;
+ Text [ italian ] = "R~ecord selezionati" ;
+ Text [ portuguese_brazilian ] = "~Selected records" ;
+ Text [ portuguese ] = "~Registos seleccionados" ;
+ Text [ finnish ] = "~Selected records" ;
+ Text [ danish ] = "Markerede dataposter" ;
+ Text [ french ] = "Enregistrements ~sélectionnés" ;
+ Text [ swedish ] = "Markerade ~dataposter" ;
+ Text [ dutch ] = "~Gemarkeerde records" ;
+ Text [ spanish ] = "~Registros seleccionados" ;
+ Text [ english_us ] = "~Selected records" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Ñ¡ÖеÄÊý¾ÝÌõÄ¿(~S)";
+ Text[ russian ] = "Âûäåëåííûå çàïèñè";
+ Text[ polish ] = "Zaznaczone rekordy";
+ Text[ japanese ] = "‘I‘ð‚µ‚½Úº°ÄÞ(~S)";
+ Text[ chinese_traditional ] = "¿ï¨úªº¸ê®Æ¶µ¥Ø(~S)";
+ Text[ arabic ] = "ÇáÓÌáÇÊ ÇáãÍÏÏÉ";
+ Text[ greek ] = "ÅðéëåãìÝíåò åããñáöÝò";
+ Text[ korean ] = "¼±ÅÃµÈ ·¹ÄÚµå(~S)";
+ Text[ turkish ] = "Seçili veri kümeleri";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_FROM
+ {
+ Pos = MAP_APPFONT ( 12 , 41 ) ;
+ Size = MAP_APPFONT ( 33 , 10 ) ;
+ Text = "~Von:" ;
+ Text [ ENGLISH ] = "~From:" ;
+ Text [ norwegian ] = "~From:" ;
+ Text [ italian ] = "~Da:" ;
+ Text [ portuguese_brazilian ] = "~De:" ;
+ Text [ portuguese ] = "~De:" ;
+ Text [ finnish ] = "~From:" ;
+ Text [ danish ] = "Fra:" ;
+ Text [ french ] = "~De :" ;
+ Text [ swedish ] = "~Från:" ;
+ Text [ dutch ] = "~Vanaf:" ;
+ Text [ spanish ] = "~Del:" ;
+ Text [ english_us ] = "~From:" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "´Ó(~F)£º";
+ Text[ russian ] = "Îò:";
+ Text[ polish ] = "Od:";
+ Text[ japanese ] = "Žn‚ß:(~F)";
+ Text[ chinese_traditional ] = "±q(~F)¡G";
+ Text[ arabic ] = "ãä:";
+ Text[ greek ] = "Áðü:";
+ Text[ korean ] = "·Î ºÎÅÍ:(~F)";
+ Text[ turkish ] = "Ýlk:";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField NF_FROM
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 48 , 40 ) ;
+ Size = MAP_APPFONT ( 24 , 12 ) ;
+ TabStop = TRUE ;
+ StrictFormat = TRUE ;
+ Minimum = 1 ;
+ Maximum = 999999 ;
+ };
+ FixedText FT_BIS
+ {
+ Pos = MAP_APPFONT ( 75 , 41 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Text = "~Bis:" ;
+ Text [ ENGLISH ] = "~To:" ;
+ Text [ norwegian ] = "~To:" ;
+ Text [ italian ] = "a:" ;
+ Text [ portuguese_brazilian ] = "~Para:" ;
+ Text [ portuguese ] = "~Para:" ;
+ Text [ finnish ] = "~To:" ;
+ Text [ danish ] = "Til:" ;
+ Text [ french ] = "~À :" ;
+ Text [ swedish ] = "~Till:" ;
+ Text [ dutch ] = "~Tot:" ;
+ Text [ spanish ] = "~al:" ;
+ Text [ english_us ] = "~To:" ;
+ Center = TRUE ;
+ Text[ chinese_simplified ] = "ÖÁ(~T)£º";
+ Text[ russian ] = "Äî:";
+ Text[ polish ] = "Do:";
+ Text[ japanese ] = "I‚è:(~T)";
+ Text[ chinese_traditional ] = "¦¬¥óªÌ(~T)";
+ Text[ arabic ] = "Åáì:";
+ Text[ greek ] = "Ðñïò:";
+ Text[ korean ] = "¿¡°Ô:(~T)";
+ Text[ turkish ] = "Son:";
+ Text[ language_user1 ] = "RB: SW Datei - Serienbrief";
+ };
+ NumericField NF_TO
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 105 , 40 ) ;
+ Size = MAP_APPFONT ( 24 , 12 ) ;
+ TabStop = TRUE ;
+ StrictFormat = TRUE ;
+ Minimum = 1 ;
+ Maximum = 999999 ;
+ };
+ GroupBox GB_RECORD
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 174 , 55 ) ;
+ Text = "Datensätze" ;
+ Text [ ENGLISH ] = "Records" ;
+ Text [ norwegian ] = "Records" ;
+ Text [ italian ] = "Record di dati" ;
+ Text [ portuguese_brazilian ] = "Registros" ;
+ Text [ portuguese ] = "Registos" ;
+ Text [ finnish ] = "Records" ;
+ Text [ danish ] = "Dataposter" ;
+ Text [ french ] = "Enregistrements" ;
+ Text [ swedish ] = "Dataposter" ;
+ Text [ dutch ] = "Records" ;
+ Text [ spanish ] = "Registros" ;
+ Text [ english_us ] = "Records" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÌõÄ¿";
+ Text[ russian ] = "Çàïèñè äàííûõ";
+ Text[ polish ] = "Rekordy";
+ Text[ japanese ] = "Úº°ÄÞ";
+ Text[ chinese_traditional ] = "¸ê®Æ¶µ¥Ø";
+ Text[ arabic ] = "ÇáÓÌáÇÊ";
+ Text[ greek ] = "ÅããñáöÝò";
+ Text[ korean ] = "·¹ÄÚµå";
+ Text[ turkish ] = "Veri kümeleri";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_PRINTER
+ {
+ Pos = MAP_APPFONT ( 12 , 75 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Dr~ucker : ~Drucker */
+ Text = "Dr~ucker" ;
+ Text [ ENGLISH ] = "~Printer" ;
+ Check = TRUE ;
+ TabStop = TRUE ;
+ Text [ dutch ] = "~Printer" ;
+ Text [ english_us ] = "~Printer" ;
+ Text [ italian ] = "Stampante" ;
+ Text [ spanish ] = "~Impresora" ;
+ Text [ french ] = "~Sur l'imprimante" ;
+ Text [ swedish ] = "S~krivare" ;
+ Text [ danish ] = "Printer" ;
+ Text [ portuguese ] = "~Impressora" ;
+ Text [ portuguese_brazilian ] = "~Drucker" ;
+ Text[ chinese_simplified ] = "´òÓ¡»ú(~P)";
+ Text[ russian ] = "Ïðèíòåð";
+ Text[ polish ] = "Drukarka";
+ Text[ japanese ] = "ÌßØÝÀ‚Ö(~P)";
+ Text[ chinese_traditional ] = "¦Lªí¾÷(~P)";
+ Text[ arabic ] = "Åáì ÇáØÇÈÚÉ";
+ Text[ greek ] = "ÅêôõðùôÞò";
+ Text[ korean ] = "ÇÁ¸°ÅÍ(~P)";
+ Text[ turkish ] = "~Yazýcý";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_MAILING
+ {
+ Pos = MAP_APPFONT ( 66 , 75 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ Text = "~Mailing" ;
+ Text [ ENGLISH ] = "~Mailing" ;
+ TabStop = TRUE ;
+ Text [ dutch ] = "~Mailing" ;
+ Text [ english_us ] = "~Electronic" ;
+ Text [ italian ] = "~Mailing" ;
+ Text [ spanish ] = "~Enviar correo" ;
+ Text [ french ] = "~Par e-mail" ;
+ Text [ swedish ] = "~Mailing" ;
+ Text [ danish ] = "Mailing" ;
+ Text [ portuguese ] = "~Correio-e" ;
+ Text [ portuguese_brazilian ] = "~Mailing" ;
+ Text[ chinese_simplified ] = "µç×ÓÓʼþ(~M)";
+ Text[ russian ] = "Ïî÷òà";
+ Text[ polish ] = "Po~czta";
+ Text[ japanese ] = "Ò°Ù‚Æ‚µ‚Ä(~M)";
+ Text[ chinese_traditional ] = "¹q¤l¶l¥ó(~M)";
+ Text[ arabic ] = "ßÈÑíÏ ÅáßÊÑæäí";
+ Text[ greek ] = "Áëëçëïãñáößá";
+ Text[ korean ] = "ÆíÁö(~M)";
+ Text[ turkish ] = "E-posta";
+ Text[ language_user1 ] = "ENG:the anglicism \"Mailing\" as used in German cannot be used in Eng. because the real meaning has nothing to do with e-mail.EM17.5.00";
+ };
+ RadioButton RB_FILE
+ {
+ Pos = MAP_APPFONT ( 120 , 75 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ Text = "Datei" ;
+ Text [ ENGLISH ] = "File" ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "Ficheiro" ;
+ Text [ english_us ] = "File" ;
+ Text [ portuguese_brazilian ] = "Datei" ;
+ Text [ swedish ] = "Fil" ;
+ Text [ danish ] = "Fil" ;
+ Text [ italian ] = "File" ;
+ Text [ spanish ] = "Archivo" ;
+ Text [ french ] = "Dans un fichier" ;
+ Text [ dutch ] = "Bestand" ;
+ Text[ chinese_simplified ] = "Îļþ";
+ Text[ russian ] = "Ôàéë";
+ Text[ polish ] = "Pli~k";
+ Text[ japanese ] = "̧²Ù‚Æ‚µ‚Ä";
+ Text[ chinese_traditional ] = "ÀÉ®×";
+ Text[ arabic ] = "Ýí ãáÝ";
+ Text[ greek ] = "Áñ÷åßï";
+ Text[ korean ] = "ÆÄÀÏ";
+ Text[ turkish ] = "Dosya";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_PATH
+ {
+ Pos = MAP_APPFONT ( 12 , 94 ) ;
+ Size = MAP_APPFONT ( 41 , 10 ) ;
+ Hide = TRUE ;
+ Text = "Pfad" ;
+ Text [ ENGLISH ] = "Path" ;
+ Text [ english_us ] = "Path" ;
+ Text [ portuguese_brazilian ] = "Pfad" ;
+ Text [ swedish ] = "Sökväg" ;
+ Text [ danish ] = "Sti" ;
+ Text [ italian ] = "Percorso" ;
+ Text [ spanish ] = "Ruta" ;
+ Text [ french ] = "Chemin" ;
+ Text [ dutch ] = "Pad" ;
+ Text [ portuguese ] = "Atalho" ;
+ Text[ chinese_simplified ] = "·¾¶";
+ Text[ russian ] = "Ïóòü";
+ Text[ polish ] = "Œcie¿ka";
+ Text[ japanese ] = "Êß½";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¸ô®|";
+ Text[ arabic ] = "ÇáãÓÇÑ";
+ Text[ greek ] = "ÄéáäñïìÞ";
+ Text[ korean ] = "°æ·Î";
+ Text[ turkish ] = "Veri yolu";
+ };
+ Edit ED_PATH
+ {
+ Pos = MAP_APPFONT ( 53 , 93 ) ;
+ Size = MAP_APPFONT ( 101 , 12 ) ;
+ Hide = TRUE ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_PATH
+ {
+ Pos = MAP_APPFONT ( 160 , 93 ) ;
+ Size = MAP_APPFONT ( 14 , 12 ) ;
+ // Soll Groesse des Edits haben (12)!
+ Text = "~..." ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ };
+ FixedText FT_FILENAME
+ {
+ Pos = MAP_APPFONT ( 12 , 116 ) ;
+ Size = MAP_APPFONT ( 102 , 10 ) ;
+ Hide = TRUE ;
+ Text = "Dateiname generiert aus" ;
+ Text [ ENGLISH ] = "Generate filename from" ;
+ Text [ english_us ] = "Generate file name from" ;
+ Text [ portuguese_brazilian ] = "Dateiname generiert aus" ;
+ Text [ swedish ] = "Generera filnamn från" ;
+ Text [ danish ] = "Generer filnavn fra" ;
+ Text [ italian ] = "Nome di file generato da " ;
+ Text [ spanish ] = "Nombre de archivo a partir de" ;
+ Text [ french ] = "Génération du nom de fichier :" ;
+ Text [ dutch ] = "Bestandsnaam ontnemen aan" ;
+ Text [ portuguese ] = "Gerar nome do ficheiro a partir de" ;
+ Text[ chinese_simplified ] = "ÎļþÃûµÄÉú³É·½Ê½";
+ Text[ russian ] = "Èìÿ ôàéëà ñîçäàíî èç";
+ Text[ polish ] = "Generuj nazwê pliku z";
+ Text[ japanese ] = "̧²Ù–¼‚ÌŽw’è‚Í";
+ Text[ chinese_traditional ] = "ÀɮצWªº¥Í¦¨¤è¦¡";
+ Text[ arabic ] = "ÅäÔÇÁ ÇÓã ÇáãáÝ ãä";
+ Text[ greek ] = "Äçìéïõñãßá ïíüìáôïò áñ÷åßïõ áðü";
+ Text[ korean ] = "·ÎºÎÅÍ ÆÄÀÏ À̸§ »ý¼º";
+ Text[ turkish ] = "Dosya adý kaynaðý";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_COLUMN
+ {
+ Pos = MAP_APPFONT ( 18 , 131 ) ;
+ Size = MAP_APPFONT ( 81 , 10 ) ;
+ Text = "Datenbankfeld" ;
+ Text [ ENGLISH ] = "Database field" ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ Text [ portuguese ] = "Campo da base de dados" ;
+ Text [ english_us ] = "Database field" ;
+ Text [ portuguese_brazilian ] = "Datenbankfeld" ;
+ Text [ swedish ] = "Databasfält" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ italian ] = "Campo database" ;
+ Text [ spanish ] = "Campo de base de datos" ;
+ Text [ french ] = "Champ de B.D." ;
+ Text [ dutch ] = "Database-veld" ;
+ Text[ chinese_simplified ] = "Êý¾Ý¿â×Ö¶Î";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½Ì¨°ÙÄÞ‚©‚ç";
+ Text[ chinese_traditional ] = "¸ê®Æ®wÄæ";
+ Text[ arabic ] = "ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "Å×ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_FILENAME
+ {
+ Pos = MAP_APPFONT ( 18 , 147 ) ;
+ Size = MAP_APPFONT ( 81 , 10 ) ;
+ Text = "Manueller Vorgabe" ;
+ Text [ ENGLISH ] = "Custom" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Hide = TRUE ;
+ Text [ portuguese ] = "Predefinição manual" ;
+ Text [ english_us ] = "Manual setting" ;
+ Text [ portuguese_brazilian ] = "Manueller Vorgabe" ;
+ Text [ swedish ] = "Anpassa" ;
+ Text [ danish ] = "Manuel forudindstilling" ;
+ Text [ italian ] = "Preimpostazione manuale" ;
+ Text [ spanish ] = "Manualmente" ;
+ Text [ french ] = "Saisie manuelle" ;
+ Text [ dutch ] = "Handmatige voorgift" ;
+ Text[ chinese_simplified ] = "ÊÖ¹¤Ô¤Éè";
+ Text[ russian ] = "Óñòàíîâêà âðó÷íóþ";
+ Text[ polish ] = "Ustawienie rêczne";
+ Text[ japanese ] = "”CˆÓÝ’è";
+ Text[ chinese_traditional ] = "¤â¤u¹w³]";
+ Text[ arabic ] = "ÇáÅÚÏÇÏ ÇáíÏæí";
+ Text[ greek ] = "×åéñïêßíçôç ñýèìéóç";
+ Text[ korean ] = "¼öµ¿ ¼³Á¤";
+ Text[ turkish ] = "Manüel giriþ";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_COLUMN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 100 , 130 ) ;
+ Size = MAP_APPFONT ( 74 , 84 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Hide = TRUE ;
+ };
+ Edit ED_FILENAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 100 , 146 ) ;
+ Size = MAP_APPFONT ( 74 , 12 ) ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ };
+ CheckBox CB_SINGLE_JOBS
+ {
+ Pos = MAP_APPFONT ( 12 , 88 ) ;
+ Size = MAP_APPFONT ( 162 , 10 ) ;
+ Text = "~Einzelne Druckjobs erzeugen" ;
+ Text [ ENGLISH ] = "Si~ngle print jobs" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Single print jobs" ;
+ Text [ portuguese_brazilian ] = "Einzelne Druckjobs erzeugen" ;
+ Text [ swedish ] = "skapa ~enstaka utskriftsjobb" ;
+ Text [ danish ] = "Opret enkelte printerjob" ;
+ Text [ italian ] = "Crea singoli ordini di stampa" ;
+ Text [ spanish ] = "~Crear tareas individuales de impresión" ;
+ Text [ french ] = "~Travaux d'impression individuels" ;
+ Text [ dutch ] = "Af~zonderlijke afdrukjobs" ;
+ Text [ portuguese ] = "C~riar tarefas de impressão individuais" ;
+ Text[ chinese_simplified ] = "Éú³Éµ¥¸ö´òÓ¡ÈÎÎñ(~S)";
+ Text[ russian ] = "Ñîçäàòü îòäåëüíîå çàäàíèå ïå÷àòè";
+ Text[ polish ] = "Utwórz pojedyncze zadania wydruku";
+ Text[ japanese ] = "1‚‚¸‚ˆóü(~S)";
+ Text[ chinese_traditional ] = "¥Í¦¨³æ­Ó¦C¦L¥ô°È(~S)";
+ Text[ arabic ] = "ÅäÔÇÁ æÙÇÆÝ ØÈÇÚÉ ÝÑÏíÉ";
+ Text[ greek ] = "Äçìéïõñãßá ìåìïíùìÝíùí åñãáóéþí åêôýðùóçò";
+ Text[ korean ] = "´ÜÀÏ Àμâ ÀÛ¾÷(~S)";
+ Text[ turkish ] = "Bireysel yazdýrma iþleri oluþtur";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_ADDRESS
+ {
+ Pos = MAP_APPFONT ( 12 , 89 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ Disable = TRUE ;
+ Hide = TRUE ;
+ Text = "Adress~feld" ;
+ Text [ ENGLISH ] = "A~ddress Field" ;
+ Text [ english_us ] = "Address ~field" ;
+ Text [ italian ] = "Campo indirizzo" ;
+ Text [ spanish ] = "~Campo dirección" ;
+ Text [ french ] = "~Champ d'adresse" ;
+ Text [ dutch ] = "A~dresveld" ;
+ Text [ swedish ] = "Adress~fält" ;
+ Text [ danish ] = "Adressefelt" ;
+ Text [ portuguese_brazilian ] = "Adressfeld" ;
+ Text [ portuguese ] = "~Campo de endereço" ;
+ Text[ chinese_simplified ] = "µØÖ·À¸(~F)";
+ Text[ russian ] = "Àäðåñíîå ïîëå";
+ Text[ polish ] = "Pole adresowe";
+ Text[ japanese ] = "ZŠÌ¨°ÙÄÞ(~F)";
+ Text[ chinese_traditional ] = "¦a§}Äæ(~F)";
+ Text[ arabic ] = "ÍÞá ÇáÚäæÇä";
+ Text[ greek ] = "Ðåäßï äéåýèõíóçò";
+ Text[ korean ] = "ÁÖ¼Ò Çʵå(~F)";
+ Text[ turkish ] = "Adres alaný";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_ADDRESSFLD
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 66 , 88 ) ;
+ Size = MAP_APPFONT ( 108 , 84 ) ;
+ Disable = TRUE ;
+ Hide = TRUE ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_SUBJECT
+ {
+ Pos = MAP_APPFONT ( 12 , 104 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ Disable = TRUE ;
+ /* ### ACHTUNG: Neuer Text in Resource? Be~treff : Betreff */
+ Text = "Be~treff" ;
+ Text [ ENGLISH ] = "S~ubject" ;
+ Text [ english_us ] = "~Subject" ;
+ Text [ italian ] = "~Oggetto" ;
+ Text [ spanish ] = "A~sunto" ;
+ Text [ french ] = "~Objet" ;
+ Text [ dutch ] = "~Betreft" ;
+ Text [ swedish ] = "~Angående" ;
+ Text [ danish ] = "Emne" ;
+ Text [ portuguese_brazilian ] = "Betreff" ;
+ Text [ portuguese ] = "~Assunto" ;
+ Text[ chinese_simplified ] = "ÊÂÓÉ(~S)";
+ Text[ russian ] = "Òåìà";
+ Text[ polish ] = "Temat";
+ Text[ japanese ] = "Œ–¼(~S)";
+ Text[ chinese_traditional ] = "¥D¦®(~S)";
+ Text[ arabic ] = "ÇáãæÖæÚ";
+ Text[ greek ] = "ÈÝìá";
+ Text[ korean ] = "ÁÖÁ¦(~S)";
+ Text[ turkish ] = "Konu";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_SUBJECT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 66 , 103 ) ;
+ Size = MAP_APPFONT ( 108 , 12 ) ;
+ Disable = TRUE ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_ATTACH
+ {
+ Pos = MAP_APPFONT ( 12 , 118 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ Disable = TRUE ;
+ Text = "Anhänge" ;
+ Text [ ENGLISH ] = "Attachments" ;
+ Text [ english_us ] = "Attachments" ;
+ Text [ portuguese_brazilian ] = "Anhänge" ;
+ Text [ swedish ] = "Bilagor" ;
+ Text [ danish ] = "Vedhæftede filer" ;
+ Text [ italian ] = "Allegati" ;
+ Text [ spanish ] = "Anexos" ;
+ Text [ french ] = "Fichiers joints" ;
+ Text [ dutch ] = "Aanhangsels" ;
+ Text [ portuguese ] = "Anexos" ;
+ Text[ chinese_simplified ] = "¸½¼þ";
+ Text[ russian ] = "Ïðèëîæåíèÿ";
+ Text[ polish ] = "Za³¹czniki";
+ Text[ japanese ] = "“Y•t";
+ Text[ chinese_traditional ] = "´¡¤JÀÉ®×";
+ Text[ arabic ] = "ÅÑÝÇÞÇÊ";
+ Text[ greek ] = "ÓõíçììÝíá";
+ Text[ korean ] = "÷ºÎ";
+ Text[ turkish ] = "Ekler";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_ATTACH
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 66 , 117 ) ;
+ Size = MAP_APPFONT ( 88 , 12 ) ;
+ Disable = TRUE ;
+ TabStop = TRUE ;
+ ReadOnly = TRUE ;
+ };
+ PushButton PB_ATTACH
+ {
+ Pos = MAP_APPFONT ( 160 , 117 ) ;
+ Size = MAP_APPFONT ( 14 , 12 ) ;
+ // Soll Groesse des Edits haben (12)!
+ Text = "~..." ;
+ TabStop = TRUE ;
+ Disable = TRUE ;
+ };
+ FixedText FT_FORMAT
+ {
+ Pos = MAP_APPFONT ( 12 , 133 ) ;
+ Size = MAP_APPFONT ( 51 , 10 ) ;
+ Disable = TRUE ;
+ Text = "Mail-Format" ;
+ Text [ ENGLISH ] = "Mail format" ;
+ Text [ english_us ] = "Mail Format" ;
+ Text [ portuguese_brazilian ] = "Format" ;
+ Text [ swedish ] = "E-postformat" ;
+ Text [ danish ] = "Mail-format" ;
+ Text [ italian ] = "Formato mail" ;
+ Text [ spanish ] = "Formato de correo" ;
+ Text [ french ] = "Format de message" ;
+ Text [ dutch ] = "Mail-formaat" ;
+ Text [ portuguese ] = "Formato da mensagem" ;
+ Text[ chinese_simplified ] = "Óʼþ¸ñʽ";
+ Text[ russian ] = "Ôîðìàò Mail";
+ Text[ polish ] = "Format wiadomoœci";
+ Text[ japanese ] = "Ò°Ù‘Ž®";
+ Text[ chinese_traditional ] = "¶l¥ó®æ¦¡";
+ Text[ arabic ] = "ÊäÓíÞ ÇáÈÑíÏ";
+ Text[ greek ] = "ÌïñöÞ ìçíýìáôïò";
+ Text[ korean ] = "¿ìÆí ¼­½Ä";
+ Text[ turkish ] = "E-posta formatý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_FORMAT_HTML
+ {
+ Pos = MAP_APPFONT ( 66 , 133 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Disable = TRUE ;
+ /* ### ACHTUNG: Neuer Text in Resource? HTM~L : HTML */
+ Text = "HTM~L" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "HTM~L" ;
+ Text [ portuguese_brazilian ] = "HTML" ;
+ Text [ swedish ] = "HTM~L" ;
+ Text [ danish ] = "HTML" ;
+ Text [ italian ] = "HTML" ;
+ Text [ spanish ] = "HTM~L" ;
+ Text [ french ] = "HTM~L" ;
+ Text [ dutch ] = "~HTML" ;
+ Text [ portuguese ] = "HTM~L" ;
+ Text[ chinese_simplified ] = "HTML(~L)";
+ Text[ russian ] = "HTM~L";
+ Text[ polish ] = "HTML";
+ Text[ japanese ] = "HTMLŒ`Ž®(~L)";
+ Text[ chinese_traditional ] = "HTM~L";
+ Text[ arabic ] = "HTM~L";
+ Text[ greek ] = "HTML";
+ Text[ korean ] = "HTM~L";
+ Text[ turkish ] = "HTM~L";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_FORMAT_RTF
+ {
+ Pos = MAP_APPFONT ( 66 , 145 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Disable = TRUE ;
+ Text = "~RTF" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "RT~F" ;
+ Text [ portuguese_brazilian ] = "RTF" ;
+ Text [ swedish ] = "~RTF" ;
+ Text [ danish ] = "RTF" ;
+ Text [ italian ] = "RTF" ;
+ Text [ spanish ] = "R~TF" ;
+ Text [ french ] = "~RTF" ;
+ Text [ dutch ] = "~RTF" ;
+ Text [ portuguese ] = "~RTF" ;
+ Text[ chinese_simplified ] = "RTF(~F)";
+ Text[ russian ] = "~RTF";
+ Text[ polish ] = "RTF";
+ Text[ japanese ] = "RTF(~F)";
+ Text[ chinese_traditional ] = "RT~F";
+ Text[ arabic ] = "RTF~";
+ Text[ greek ] = "RTF";
+ Text[ korean ] = "RT~F";
+ Text[ turkish ] = "~RTF";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_FORMAT_SW
+ {
+ Pos = MAP_APPFONT ( 66 , 157 ) ;
+ Size = MAP_APPFONT ( 108 , 10 ) ;
+ Disable = TRUE ;
+ Text = "~StarOffice Writer" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~StarOffice Writer" ;
+ Text [ portuguese_brazilian ] = "StarOffice Writer" ;
+ Text [ swedish ] = "~StarOffice Writer" ;
+ Text [ danish ] = "StarOffice Writer" ;
+ Text [ italian ] = "~StarOffice Writer" ;
+ Text [ spanish ] = "~StarOffice Writer" ;
+ Text [ french ] = "StarOffice ~Writer" ;
+ Text [ dutch ] = "~StarOffice Writer" ;
+ Text [ portuguese ] = "~StarOffice Writer" ;
+ Text[ chinese_simplified ] = "StarOffice Writer";
+ Text[ russian ] = "~StarOffice Writer";
+ Text[ polish ] = "~StarOffice Writer";
+ Text[ japanese ] = "StarOffice Writer";
+ Text[ chinese_traditional ] = "~StarOffice Writer";
+ Text[ arabic ] = "StarOffice Writer~";
+ Text[ greek ] = "StarOffice Writer";
+ Text[ korean ] = "~StarOffice Writer";
+ Text[ turkish ] = "~StarOffice Writer";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_DEST
+ {
+ Pos = MAP_APPFONT ( 6 , 64 ) ;
+ Size = MAP_APPFONT ( 174 , 109 ) ;
+ Text = "Ausgabe" ;
+ Text [ ENGLISH ] = "Destination" ;
+ Text [ english_us ] = "Output" ;
+ Text [ italian ] = "Destinazione" ;
+ Text [ spanish ] = "Destino" ;
+ Text [ french ] = "Sortie" ;
+ Text [ dutch ] = "Uitgave" ;
+ Text [ swedish ] = "Utdata" ;
+ Text [ danish ] = "Output" ;
+ Text [ portuguese_brazilian ] = "Ausgabe" ;
+ Text [ portuguese ] = "Destino" ;
+ Text[ chinese_simplified ] = "Êä³ö";
+ Text[ russian ] = "Âûâîä";
+ Text[ polish ] = "Wyjœcie";
+ Text[ japanese ] = "±³ÄÌ߯Ä";
+ Text[ chinese_traditional ] = "¿é¥X";
+ Text[ arabic ] = "ÇáÅÎÑÇÌ";
+ Text[ greek ] = "ÅîáãùãÞ";
+ Text[ korean ] = "Ãâ·Â";
+ Text[ turkish ] = "Çýktý";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 186 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 186 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 186 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ Text[ chinese_simplified ] = "ÓʼþºÏ²¢";
+ Text[ russian ] = "Ñëèÿíèå";
+ Text[ polish ] = "List seryjny";
+ Text[ japanese ] = "·‚µž‚݈óü";
+ Text[ chinese_traditional ] = "¦X¨Ö¦C¦L";
+ Text[ arabic ] = "ÎØÇÈ ãÓáÓá";
+ Text[ greek ] = "ÏìáäéêÞ åðéóôïëÞ";
+ Text[ korean ] = "ÆíÁö º´ÇÕ";
+ Text[ turkish ] = "Standart mektup";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/envelp/makefile.mk b/sw/source/ui/envelp/makefile.mk
new file mode 100644
index 000000000000..b0cc87381e9d
--- /dev/null
+++ b/sw/source/ui/envelp/makefile.mk
@@ -0,0 +1,122 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=envelp
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ envfmt.cxx \
+ envimg.cxx \
+ envlop1.cxx \
+ envprt.cxx \
+ label1.cxx \
+ labfmt.cxx \
+ labprt.cxx \
+ labimg.cxx \
+ mailmrge.cxx \
+ syncbtn.cxx
+
+SRCFILES =\
+ envelp.src \
+ envfmt.src \
+ envlop.src \
+ envprt.src \
+ label.src \
+ labfmt.src \
+ labprt.src \
+ mailmrge.src
+
+SLOFILES = \
+ $(SLO)$/envfmt.obj \
+ $(SLO)$/envimg.obj \
+ $(SLO)$/envlop1.obj \
+ $(SLO)$/envprt.obj \
+ $(SLO)$/label1.obj \
+ $(SLO)$/labfmt.obj \
+ $(SLO)$/labprt.obj \
+ $(SLO)$/labimg.obj \
+ $(SLO)$/mailmrge.obj \
+ $(SLO)$/syncbtn.obj
+
+EXCEPTIONSFILES= \
+ $(SLO)$/label1.obj
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/envelp/syncbtn.cxx b/sw/source/ui/envelp/syncbtn.cxx
new file mode 100644
index 000000000000..5af231ba39c4
--- /dev/null
+++ b/sw/source/ui/envelp/syncbtn.cxx
@@ -0,0 +1,171 @@
+/*************************************************************************
+ *
+ * $RCSfile: syncbtn.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "uiparam.hxx"
+
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+
+#include "cmdid.h"
+#include "swmodule.hxx"
+#include "view.hxx"
+#include "edtwin.hxx"
+#include "label.hrc"
+
+#define _SYNCDLG
+#include "syncbtn.hxx"
+#include "swtypes.hxx"
+
+SFX_IMPL_FLOATINGWINDOW( SwSyncChildWin, FN_SYNC_LABELS )
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwSyncChildWin::SwSyncChildWin( Window* pParent,
+ USHORT nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo ) :
+ SfxChildWindow( pParent, nId )
+{
+ pWindow = new SwSyncBtnDlg( pBindings, this, pParent);
+
+ if (!pInfo->aSize.Width() || !pInfo->aSize.Height())
+ {
+ const SwEditWin &rEditWin = ::GetActiveView()->GetEditWin();
+ pWindow->SetPosPixel(rEditWin.OutputToScreenPixel(Point(0, 0)));
+ pInfo->aPos = pWindow->GetPosPixel();
+ pInfo->aSize = pWindow->GetSizePixel();
+ }
+
+ ((SwSyncBtnDlg *)pWindow)->Initialize(pInfo);
+
+ pWindow->Show();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwSyncBtnDlg::SwSyncBtnDlg( SfxBindings* pBindings,
+ SfxChildWindow* pChild,
+ Window *pParent) :
+ SfxFloatingWindow(pBindings, pChild, pParent, SW_RES(DLG_SYNC_BTN)),
+ aSyncBtn (this, SW_RES(BTN_SYNC ))
+{
+ FreeResource();
+ aSyncBtn.SetClickHdl(LINK(this, SwSyncBtnDlg, BtnHdl));
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+__EXPORT SwSyncBtnDlg::~SwSyncBtnDlg()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwSyncBtnDlg, BtnHdl, PushButton *, pBtn )
+{
+ SfxViewFrame::Current()->GetDispatcher()->Execute(FN_UPDATE_ALL_LINKS, SFX_CALLMODE_ASYNCHRON);
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.6 2000/09/18 16:05:27 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.5 2000/09/07 15:59:23 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.4 1998/03/18 10:27:32 OM
+ #48713# SynchronButton initial oben links positionieren
+
+
+ Rev 1.3 18 Mar 1998 11:27:32 OM
+ #48713# SynchronButton initial oben links positionieren
+
+ Rev 1.2 16 Mar 1998 20:11:34 OM
+ Initial in der View positionieren
+
+ Rev 1.1 16 Mar 1998 16:17:40 OM
+ Aktualisieren-Button kontextsensitiv
+
+ Rev 1.0 15 Mar 1998 14:09:52 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
diff --git a/sw/source/ui/fldui/changedb.cxx b/sw/source/ui/fldui/changedb.cxx
new file mode 100644
index 000000000000..51fb0631bece
--- /dev/null
+++ b/sw/source/ui/fldui/changedb.cxx
@@ -0,0 +1,663 @@
+/*************************************************************************
+ *
+ * $RCSfile: changedb.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define _CHANGEDB_CXX
+
+#include <svtools/stdctrl.hxx>
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+#ifdef REPLACE_OFADBMGR
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XDATABASEACCESS_HPP_
+#include <com/sun/star/sdb/XDatabaseAccess.hpp>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+
+#else
+
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SBA_SBAOBJ_HXX //autogen
+#include <offmgr/sbaobj.hxx>
+#endif
+
+#endif
+
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _DBMGR_HXX
+#include <dbmgr.hxx>
+#endif
+#ifndef _FLDMGR_HXX
+#include <fldmgr.hxx>
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx>
+#endif
+#ifndef _TXTATR_HXX
+#include <txtatr.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _DBFLD_HXX
+#include <dbfld.hxx>
+#endif
+#ifndef _CHANGEDB_HXX
+#include <changedb.hxx>
+#endif
+
+#ifndef _FLDUI_HRC
+#include <fldui.hrc>
+#endif
+#ifndef _CHANGEDB_HRC
+#include <changedb.hrc>
+#endif
+
+#ifdef REPLACE_OFADBMGR
+using namespace rtl;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::container;
+using namespace com::sun::star::lang;
+//using namespace com::sun::star::sdb;
+//using namespace com::sun::star::sdbc;
+//using namespace com::sun::star::sdbcx;
+//using namespace com::sun::star::beans;
+#define C2U(cChar) OUString::createFromAscii(cChar)
+#endif
+
+/*--------------------------------------------------------------------
+ Beschreibung: Feldeinfuegen bearbeiten
+ --------------------------------------------------------------------*/
+
+
+SwChangeDBDlg::SwChangeDBDlg(SwView& rVw) :
+ SvxStandardDialog(&rVw.GetViewFrame()->GetWindow(), SW_RES(DLG_CHANGE_DB)),
+
+ aDescFT (this, SW_RES(FT_DESC )),
+ aUsedDBFT (this, SW_RES(FT_USEDDB )),
+ aAvailDBFT (this, SW_RES(FT_AVAILDB )),
+ aDBListGB (this, SW_RES(GB_DBLIST )),
+ aUsedDBTLB (this, SW_RES(TLB_USEDDB )),
+ aAvailDBTLB (this, SW_RES(TLB_AVAILDB )),
+ aDocDBTextFT(this, SW_RES(FT_DOCDBTEXT )),
+ aDocDBNameFT(this, SW_RES(FT_DOCDBNAME )),
+ aOKBT (this, SW_RES(BT_OK )),
+ aCancelBT (this, SW_RES(BT_CANCEL )),
+ aHelpBT (this, SW_RES(BT_HELP )),
+// aChangeBT (this, SW_RES(BT_CHANGEDB )),
+
+ aRootOpened (SW_RES(BMP_ROOT_CLOSED)),
+ aRootClosed (SW_RES(BMP_ROOT_OPENED)),
+ aDBBMP (SW_RES(BMP_DB)),
+ aTableBMP (SW_RES(BMP_TABLE)),
+
+ pMgr( new SwFldMgr() ),
+ pSh(rVw.GetWrtShellPtr())
+{
+ FillDBPopup();
+
+ FreeResource();
+
+ ShowDBName(pSh->GetDBName());
+ aOKBT.SetClickHdl(LINK(this, SwChangeDBDlg, ButtonHdl));
+
+ aUsedDBTLB.SetSelectionMode(MULTIPLE_SELECTION);
+ aUsedDBTLB.SetWindowBits(WB_HASLINES|WB_CLIPCHILDREN|WB_SORT|WB_HASBUTTONS|WB_HASBUTTONSATROOT|WB_HSCROLL);
+ aUsedDBTLB.SetFont(GetSettings().GetStyleSettings().GetAppFont());
+ aUsedDBTLB.SetSpaceBetweenEntries(0);
+ aUsedDBTLB.SetNodeBitmaps( aRootOpened, aRootClosed );
+
+ Link aLink = LINK(this, SwChangeDBDlg, TreeSelectHdl);
+
+ aUsedDBTLB.SetSelectHdl(aLink);
+ aUsedDBTLB.SetDeselectHdl(aLink);
+ aAvailDBTLB.SetSelectHdl(aLink);
+ aAvailDBTLB.SetDeselectHdl(aLink);
+ TreeSelectHdl();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Datenbank-Listboxen initialisieren
+ --------------------------------------------------------------------*/
+
+
+void SwChangeDBDlg::FillDBPopup()
+{
+#ifdef REPLACE_OFADBMGR
+ Reference<XNameAccess> xDBContext;
+ Reference< XMultiServiceFactory > xMgr( ::utl::getProcessServiceFactory() );
+ if( xMgr.is() )
+ {
+ Reference<XInterface> xInstance = xMgr->createInstance( C2U( "com.sun.star.sdb.DatabaseContext" ));
+ xDBContext = Reference<XNameAccess>(xInstance, UNO_QUERY) ;
+ }
+ DBG_ASSERT(xDBContext.is(), "com.sun.star.sdb.DataBaseContext: service not available")
+// SwNewDBMgr* pNewDBMgr = pSh->GetNewDBMgr();
+
+// String sDBNames = pNewDBMgr->GetSbaObject()->GetDatabaseNames();
+// SfxApplication* pSfxApp = SFX_APP();
+// sDBNames = pSfxApp->LocalizeDBName(INI2NATIONAL, sDBNames);
+
+// USHORT nDBNamesCount = sDBNames.GetTokenCount();
+
+ String sDataBaseName(pSh->GetDBName());
+ String sDBName(sDataBaseName.GetToken(0, DB_DELIM));
+ String sTableName(sDataBaseName.GetToken(1, DB_DELIM));
+ aAvailDBTLB.Select(sDBName, sTableName, aEmptyStr);
+
+// sDBNames = pNewDBMgr->GetSbaObject()->GetDatabaseNames();
+ SvStringsDtor aAllDBNames(5, 5);
+
+ Sequence<OUString> aDBNames = xDBContext->getElementNames();
+ const OUString* pDBNames = aDBNames.getConstArray();
+ long nDBCount = aDBNames.getLength();
+
+ for(long i = 0; i < nDBCount; i++)
+ {
+ String sDBName(pDBNames[i]);
+ aAllDBNames.Insert(new String(sDBName), aAllDBNames.Count());
+ }
+
+ SvStringsDtor aDBNameList(5, 1);
+ pSh->GetAllUsedDB( aDBNameList, &aAllDBNames );
+
+ USHORT nCount = aDBNameList.Count();
+ aUsedDBTLB.Clear();
+ SvLBoxEntry *pFirst = 0;
+ SvLBoxEntry *pLast = 0;
+
+ for (i = 0; i < nCount; i++)
+ {
+ sDBName = *aDBNameList.GetObject(i);
+ sDBName = sDBName.GetToken(0);
+ pLast = Insert(sDBName);
+ if (!pFirst)
+ pFirst = pLast;
+ }
+
+ if (pFirst)
+ {
+ aUsedDBTLB.MakeVisible(pFirst);
+ aUsedDBTLB.Select(pFirst);
+ }
+
+#else
+
+ SwNewDBMgr* pNewDBMgr = pSh->GetNewDBMgr();
+
+ String sDBNames = pNewDBMgr->GetSbaObject()->GetDatabaseNames();
+ SfxApplication* pSfxApp = SFX_APP();
+ sDBNames = pSfxApp->LocalizeDBName(INI2NATIONAL, sDBNames);
+
+ USHORT nDBNamesCount = sDBNames.GetTokenCount();
+
+
+
+// if (rDBName.Len())
+// sDBName = pSfxApp->LocalizeDBName(INI2NATIONAL, rDBName);
+// else
+ String sDBName = pSfxApp->LocalizeDBName(INI2NATIONAL, pSh->GetDBName());
+ aAvailDBTLB.Select(sDBName);
+
+ SvStringsDtor aDBNameList(5, 1);
+
+ sDBNames = pNewDBMgr->GetSbaObject()->GetDatabaseNames();
+ SvStringsDtor aAllDBNames(5, 5);
+ for (USHORT i = 0; i < nDBNamesCount; i++)
+#ifdef UNX
+ aAllDBNames.Insert(new String(sDBNames.GetToken(i)), aAllDBNames.Count());
+#else
+ aAllDBNames.Insert(new String(sDBNames.GetToken(i).ToUpperAscii()), aAllDBNames.Count());
+#endif
+
+
+ pSh->GetAllUsedDB( aDBNameList, &aAllDBNames );
+
+ USHORT nCount = aDBNameList.Count();
+ aUsedDBTLB.Clear();
+ SvLBoxEntry *pFirst = 0;
+ SvLBoxEntry *pLast = 0;
+
+ for (i = 0; i < nCount; i++)
+ {
+ sDBName = pNewDBMgr->ExtractDBName(*aDBNameList.GetObject(i));
+
+#ifndef UNX
+ // Richtige Schreibweise ermitteln (upper/lower-case)
+ for (USHORT i2 = 0; i2 < nDBNamesCount; i2++)
+ {
+ if (sDBName.GetToken(0, DB_DELIM).ToUpperAscii() == sDBNames.GetToken(i2).ToUpperAscii())
+ {
+ sDBName = sDBNames.GetToken(i2);
+ break;
+ }
+ }
+#endif
+ pLast = Insert(sDBName);
+ if (!pFirst)
+ pFirst = pLast;
+ }
+
+ if (pFirst)
+ {
+ aUsedDBTLB.MakeVisible(pFirst);
+ aUsedDBTLB.Select(pFirst);
+ }
+#endif //REPLACE_OFADBMGR
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SvLBoxEntry* SwChangeDBDlg::Insert(const String& rDBName)
+{
+ String sDBName(rDBName.GetToken(0, DB_DELIM));
+ String sTableName(rDBName.GetToken(1, DB_DELIM));
+ SvLBoxEntry* pParent;
+ SvLBoxEntry* pChild;
+
+#ifdef REPLACE_OFADBMGR
+#else
+ sDBName = SFX_APP()->LocalizeDBName(INI2NATIONAL, sDBName);
+#endif //REPLACE_OFADBMGR
+
+ USHORT nParent = 0;
+ USHORT nChild = 0;
+
+#ifdef REPLACE_OFADBMGR
+ while ((pParent = aUsedDBTLB.GetEntry(nParent++)) != NULL)
+ {
+ if (sDBName == aUsedDBTLB.GetEntryText(pParent))
+ {
+ while ((pChild = aUsedDBTLB.GetEntry(pParent, nChild++)) != NULL)
+ {
+ if (sTableName == aUsedDBTLB.GetEntryText(pChild))
+ return pChild;
+ }
+ return aUsedDBTLB.InsertEntry(sTableName, aTableBMP, aTableBMP, pParent);
+ }
+ }
+#else
+ while ((pParent = aUsedDBTLB.GetEntry(nParent++)) != NULL)
+ {
+#ifdef UNX
+ if (sDBName == aUsedDBTLB.GetEntryText(pParent))
+#else
+ if (sDBName.ToUpperAscii() == aUsedDBTLB.GetEntryText(pParent).ToUpperAscii())
+#endif
+ {
+ while ((pChild = aUsedDBTLB.GetEntry(pParent, nChild++)) != NULL)
+ {
+#ifdef UNX
+ if (sTableName == aUsedDBTLB.GetEntryText(pChild))
+#else
+ if (sTableName.ToUpperAscii() == aUsedDBTLB.GetEntryText(pChild).ToUpperAscii())
+#endif
+ return pChild;
+ }
+ return aUsedDBTLB.InsertEntry(sTableName, aTableBMP, aTableBMP, pParent);
+ }
+ }
+#endif
+ pParent = aUsedDBTLB.InsertEntry(sDBName, aDBBMP, aDBBMP);
+ return aUsedDBTLB.InsertEntry(sTableName, aTableBMP, aTableBMP, pParent);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Dialog zerstoeren
+ --------------------------------------------------------------------*/
+
+
+__EXPORT SwChangeDBDlg::~SwChangeDBDlg()
+{
+ delete pMgr;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Schliessen
+ --------------------------------------------------------------------*/
+
+
+void __EXPORT SwChangeDBDlg::Apply()
+{
+ UpdateFlds();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwChangeDBDlg::UpdateFlds()
+{
+ SvStringsDtor aDBNames( (BYTE)aUsedDBTLB.GetSelectionCount(), 1 );
+ SvLBoxEntry* pEntry = aUsedDBTLB.FirstSelected();
+
+ while( pEntry )
+ {
+ if( aUsedDBTLB.GetParent( pEntry ))
+ {
+ String* pTmp = new String( aUsedDBTLB.GetEntryText(
+ aUsedDBTLB.GetParent( pEntry )));
+#ifdef REPLACE_OFADBMGR
+#else
+ *pTmp = SFX_APP()->LocalizeDBName( NATIONAL2INI, *pTmp);
+#endif
+ *pTmp += DB_DELIM;
+ *pTmp += aUsedDBTLB.GetEntryText( pEntry );
+ aDBNames.Insert(pTmp, aDBNames.Count() );
+ }
+ pEntry = aUsedDBTLB.NextSelected(pEntry);
+ }
+
+ pSh->StartAllAction();
+#ifdef REPLACE_OFADBMGR
+ String sTableName, sColumnName;
+ String sTemp(aAvailDBTLB.GetDBName(sTableName, sColumnName));
+ sTemp += DB_DELIM;
+ sTemp += sTableName;
+ pSh->ChangeDBFields( aDBNames, sTemp);
+#else
+ pSh->ChangeDBFields( aDBNames, aAvailDBTLB.GetDBName());
+#endif
+ pSh->EndAllAction();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwChangeDBDlg, ButtonHdl, Button *, pBtn )
+{
+#ifdef REPLACE_OFADBMGR
+ String sTableName, sColumnName;
+ String sTemp(aAvailDBTLB.GetDBName(sTableName, sColumnName));
+ sTemp += DB_DELIM;
+ sTemp += sTableName;
+ sTemp += DB_DELIM;
+ sTemp += sColumnName;
+ pSh->ChgDBName(sTemp);
+#else
+ String sNewDBName(aAvailDBTLB.GetDBName());
+ pSh->ChgDBName(sNewDBName);
+#endif
+ ShowDBName(pSh->GetDBName());
+ EndDialog(RET_OK);
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwChangeDBDlg, TreeSelectHdl, SvTreeListBox *, pBox )
+{
+ BOOL bEnable = FALSE;
+
+ SvLBoxEntry* pEntry = aAvailDBTLB.GetCurEntry();
+
+ if (pEntry)
+ {
+ if (aAvailDBTLB.GetParent(pEntry))
+ bEnable = TRUE;
+ aOKBT.Enable( bEnable );
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Datenbankname fuer Anzeige wandeln
+ --------------------------------------------------------------------*/
+
+void SwChangeDBDlg::ShowDBName(const String& rDBName)
+{
+ String sTmp(rDBName.GetToken(0, DB_DELIM));
+ String sName;
+
+#ifdef REPLACE_OFADBMGR
+#else
+ sTmp = SFX_APP()->LocalizeDBName(INI2NATIONAL, sTmp);
+#endif
+ sTmp += '.';
+ sTmp += rDBName.GetToken(1, DB_DELIM);
+
+ for (USHORT i = 0; i < sTmp.Len(); i++)
+ {
+ sName += sTmp.GetChar(i);
+ if (sTmp.GetChar(i) == '~')
+ sName += '~';
+ }
+
+ aDocDBNameFT.SetText(sName);
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.43 2000/09/18 16:05:27 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.42 2000/07/07 15:25:43 os
+ replace ofadbmgr
+
+ Revision 1.41 2000/06/26 13:35:59 os
+ new DataBase API
+
+ Revision 1.40 2000/04/18 15:17:31 os
+ UNICODE
+
+ Revision 1.39 2000/03/03 15:17:00 os
+ StarView remainders removed
+
+ Revision 1.38 2000/02/11 14:46:04 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.37 2000/01/31 12:53:09 os
+ #72339# dialog needs one apply button only
+
+ Revision 1.36 1999/09/29 06:49:52 mh
+ chg: header
+
+ Revision 1.35 1999/06/09 17:34:28 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+
+ Rev 1.34 09 Jun 1999 19:34:28 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+ Rev 1.33 04 Feb 1999 21:18:30 JP
+ Bug #61404#/#61014#: Optimierung der Schnittstellen
+
+ Rev 1.32 19 Nov 1998 13:18:44 OM
+ #59660# Eintrag vorselektieren
+
+ Rev 1.31 06 Nov 1997 17:03:22 OM
+ Geaenderte DB-Selektionsbox
+
+ Rev 1.30 03 Nov 1997 13:18:10 MA
+ precomp entfernt
+
+ Rev 1.29 30 Oct 1997 14:30:48 OM
+ Feldbefehl-Umstellung
+
+ Rev 1.28 18 Sep 1997 14:34:04 OM
+ Feldumstellung
+
+ Rev 1.27 02 Sep 1997 09:55:54 OM
+ SDB-Headeranpassung
+
+ Rev 1.26 15 Aug 1997 12:11:20 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.25 06 Aug 1997 13:39:54 TRI
+ VCL: GetpApp() statt pApp
+
+ Rev 1.24 23 Jul 1997 20:25:52 HJS
+ includes
+
+ Rev 1.23 14 May 1997 19:01:46 OM
+ Datenbank auch in ExpressionFields austauschen
+
+ Rev 1.22 13 May 1997 13:11:06 OM
+ #39586# Datenbank festlegen beendet Dialog
+
+ Rev 1.21 08 Apr 1997 12:44:38 MA
+ includes
+
+ Rev 1.20 07 Apr 1997 18:23:06 MH
+ chg: header
+
+ Rev 1.19 18 Mar 1997 15:24:14 OM
+ Sortierte Treelistbox
+
+ Rev 1.18 11 Nov 1996 09:56:04 MA
+ ResMgr
+
+ Rev 1.17 28 Oct 1996 11:29:52 OM
+ #32799#Namen der aktuellen Datenbank korrekt anzeigen
+
+ Rev 1.16 02 Oct 1996 16:50:26 MA
+ Umstellung Enable/Disable
+
+ Rev 1.15 25 Sep 1996 14:11:42 OM
+ Neue Datenbanktrenner
+
+ Rev 1.14 28 Aug 1996 12:13:32 OS
+ includes
+
+ Rev 1.13 14 Aug 1996 11:45:54 OM
+ Neue Segs
+
+ Rev 1.12 14 Aug 1996 11:44:34 OM
+ Datenbankumstellung
+
+ Rev 1.11 23 Jul 1996 16:08:30 OM
+ Neue Segs
+
+ Rev 1.10 23 Jul 1996 16:07:28 OM
+ Datenbank am Dok umsetzen
+
+ Rev 1.9 17 Jul 1996 13:47:30 OM
+ Datenbankumstellung 327
+
+ Rev 1.8 23 May 1996 16:34:40 OM
+ DB-Namen in Expressionfields austauschen
+
+ Rev 1.7 23 May 1996 15:29:02 OM
+ Schreibweise der DB-Namen restaurieren
+
+ Rev 1.6 22 May 1996 12:04:38 OM
+ ChangeDBFields an Doc verlagert
+
+ Rev 1.5 20 May 1996 16:33:28 OM
+ Nur verwendete Datenbanken zu Auswahl stellen
+
+ Rev 1.4 20 May 1996 11:06:44 OM
+ ChangeDBFields in die EditShell verlagert
+
+ Rev 1.3 15 May 1996 17:05:28 OM
+ Neue Segs
+
+ Rev 1.2 15 May 1996 17:05:02 OM
+ Datenbanken austauschen
+
+ Rev 1.1 15 May 1996 14:02:22 OM
+ Neue Segs
+
+ Rev 1.0 15 May 1996 14:01:12 OM
+ Initial revision.
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/fldui/changedb.hrc b/sw/source/ui/fldui/changedb.hrc
new file mode 100644
index 000000000000..0588662bafbe
--- /dev/null
+++ b/sw/source/ui/fldui/changedb.hrc
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * $RCSfile: changedb.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _CHANGEDB_HRC
+#define _CHANGEDB_HRC
+
+// #include -----------------------------------------------------------------
+
+// Elemente -----------------------------------------------------------------
+
+#define FT_DESC 1
+#define FT_DOCDBTEXT 2
+#define FT_DOCDBNAME 3
+#define BT_CHANGEDB 4
+#define FT_USEDDB 5
+#define FT_AVAILDB 6
+#define TLB_USEDDB 7
+#define TLB_AVAILDB 8
+#define GB_DBLIST 9
+#define BT_OK 10
+#define BT_CANCEL 11
+#define BT_HELP 11
+
+/*--------------------------------------------------------------------
+ Beschreibung: Bitmaps
+ --------------------------------------------------------------------*/
+
+#define BMP_ROOT_CLOSED 1
+#define BMP_ROOT_OPENED 2
+#define BMP_DB 3
+#define BMP_TABLE 4
+
+#endif
+
+
diff --git a/sw/source/ui/fldui/changedb.src b/sw/source/ui/fldui/changedb.src
new file mode 100644
index 000000000000..53c74a8a33ad
--- /dev/null
+++ b/sw/source/ui/fldui/changedb.src
@@ -0,0 +1,413 @@
+/*************************************************************************
+ *
+ * $RCSfile: changedb.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "changedb.hrc"
+#include "fldui.hrc"
+
+#define IMAGE_STDBTN_COLOR Color { Red = 0xff00 ; Green = 0x0000 ; Blue = 0xff00 ; }
+
+ModalDialog DLG_CHANGE_DB
+{
+ // HelpID = HID_EDIT_FIELD;
+ OutputSize = TRUE ;
+ // Hide = TRUE;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 266 , 151 ) ;
+ Text = "Datenbank austauschen" ;
+ Text [ ENGLISH ] = "Change Database Name" ;
+ Text [ english_us ] = "Exchange Databases" ;
+ Text [ italian ] = "Scambia database" ;
+ Text [ spanish ] = "Cambiar Bases de Datos" ;
+ Text [ french ] = "Changer de base de données" ;
+ Text [ dutch ] = "Database wisselen" ;
+ Text [ swedish ] = "Byt databas" ;
+ Text [ danish ] = "Udskift database" ;
+ Text [ portuguese_brazilian ] = "Datenbank austauschen" ;
+ Text [ portuguese ] = "Substituir base de dados" ;
+ Moveable = TRUE ;
+ FixedText FT_DESC
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 190 , 45 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? In diesem Dialog können Sie Datenbanken, auf die Sie in Ihrem Dokument über Datenbankfelder zugreifen, durch andere Datenbanken austauschen. Sie können nur eine Änderung pro Arbeitsgang durchführen. In der linken Liste ist Mehrfachselektion möglich. : In diesem Dialog k÷nnen Sie Datenbanken, auf die Sie in Ihrem Dokument ³ber Datenbankfelder zugreifen, durch andere Datenbanken austauschen. Sie k÷nnen nur eine Žnderung pro Arbeitsgang durchf³hren. In der linken Liste ist Mehrfachselektion m÷glich. */
+ Text = "In diesem Dialog können Sie Datenbanken, auf die Sie in Ihrem Dokument über Datenbankfelder zugreifen, durch andere Datenbanken austauschen. Sie können nur eine Änderung pro Arbeitsgang durchführen. In der linken Liste ist Mehrfachselektion möglich." ;
+ Text [ ENGLISH ] = "???" ;
+ WordBreak = TRUE ;
+ Left = TRUE ;
+ Text [ english_us ] = "Use this dialog to exchange the database accessed in your document via database fields with another one. You can only make one change at a time. Multiple selection is possible in the list on the left." ;
+ Text [ italian ] = "In questo dialogo si possono scambiare database ai quali si accede tramite campi di database. Si può effettuare una modifica per volta. Nell'elenco di sinistra è possibile una selezione multipla." ;
+ Text [ spanish ] = "En este diálogo puede intercambiar por otras las bases de datos a las que acceda a través de los campos. Se puede realizar solo un cambio por fase de trabajo. En la lista izquierda es posible hacer una selección múltiple." ;
+ Text [ french ] = "Cette boîte de dialogue vous permet d'échanger les bases de données auxquelles vous accédez dans vos documents par des champs de formulaire. Vous pouvez exécuter une seule modification par saisie. La liste de gauche permet une sélection multiple." ;
+ Text [ dutch ] = "In deze dialoog kunt u gegevensbestanden waarop u in uw document via de speciale velden betrekking neemt, door andere gegevensbestanden vervangen. In de linker lijst is een meervoudige keuze mogelijk." ;
+ Text [ swedish ] = "I denna dialog kan man byta ut de databaser, som kan nås via databasfältet i Ditt dokument, mot andra databaser. Man kan bara göra en ändring åt gången. I den vänstra listen finns möjlighet till multipel markering." ;
+ Text [ danish ] = "I denne dialog kan du udskifte databaser, som du har adgang til via databasefelter. Du kan kun udføre en ændring ad gangen. I listen til venstre er der mulighed for multimarkering." ;
+ Text [ portuguese_brazilian ] = "In diesem Dialog können Sie Datenbanken, auf die Sie in Ihrem Dokument über Datenbankfelder zugreifen, durch andere Datenbanken austauschen. Sie können nur eine Änderung pro Arbeitsgang durchführen. In der linken Liste ist Mehrfachselektion möglich." ;
+ Text [ portuguese ] = "Nesta caixa de diálogo poderá substituir bases de dados por outras, tendo acesso a elas no seu documento através dos campos da base de dados. É apenas possível uma alteração por cada operação. Na lista da esquerda poderá seleccionar várias opções." ;
+ Text[ chinese_simplified ] = "ÔÚÕâ¸ö¶Ô»°¿òÄÚÄúÄܹ»Ê¹ÓÃÒ»¸öÆäËûÊý¾Ý¿âÀ´´úÌæÄúµ±Ç°±à¼­µÄÎĵµËùʹÓõÄÊý¾Ý¿â¡£Ã¿´ÎÄúÖ»ÄÜ×öÒ»Ïî¸ü¸Ä¡£ÔÚ×ó·½µÄÁе¥ÄÚÄú¿ÉÒÔ½øÐжàÖØÑ¡Ôñ¡£";
+ Text[ russian ] = "Â ýòîì äèàëîãå Âû ìîæåòå çàìåíèòü áàçû äàííûõ, äîñòóï ê êîòîðûì âîçìîæåí ïðè ïîìîùè ïîëåé áàçû äàííûõ, äðóãèìè áàçàìè äàííûõ. Çà îäíó îïåðàöèþ Âû ìîæåòå ïðîèçâåñòè òîëüêî îäíî èçìåíåíèå. Â ñïèñêå ñëåâà âîçìîæíî ìíîãîêðàòíîå âûäåëåíèå.";
+ Text[ polish ] = "W tym dialogu mo¿esz wymieniæ dostêpne w twoim dokumencie poprzez pola bazy danych na inne. Mo¿esz dokonaæ tylko jednej zmiany podczas sesji roboczej. Na liœcie z lewej strony mo¿liwa jest wielokrotna selekcja.";
+ Text[ japanese ] = "‚±‚ÌÀÞ²±Û¸Þ‚Å‚ÍÃÞ°ÀÍÞ°½Ì¨°ÙÄÞ‚ð’Ê‚µ‚ÄAÄÞ·­ÒÝĂɱ¸¾½‚·‚éÃÞ°ÀÍÞ°½‚𑼂ÌÃÞ°ÀÍÞ°½‚ÆŒðŠ·‚Å‚«‚Ü‚·Bˆê“x‚É1‚‚̕ÏX‚µ‚©‚Å‚«‚Ü‚¹‚ñB¶‚ÌؽĂł͕¡”‘I‘ð‚ª‰Â”\\‚Å‚·B";
+ Text[ chinese_traditional ] = "¦b³o­Ó¹ï¸Ü¤è¶ô¤º±z¯à°÷¨Ï¥Î¤@­Ó¨ä¥L¸ê®Æ®w¨Ó¥N´À±z·í«e½s¿èªº¤å¥ó©Ò¨Ï¥Îªº¸ê®Æ®w¡C±z¨C¦¸¥u¯à§@¤@¦¸Åܧó¡C±z¯à°÷¦b¥ªÄ椺§@¦h­«¿ï¾Ü¡C";
+ Text[ arabic ] = "Ýí ãÑÈÚ ÇáÍæÇÑ åÐÇ¡ íãßäß ÇÓÊÈÏÇá ÞæÇÚÏ ÇáÈíÇäÇÊ¡ ÇáÊí ÊÕá ÅáíåÇ Ýí ãÓÊäÏß ÈæÇÓØÉ ÍÞæá ÞæÇÚÏ ÇáÈíÇäÇÊ¡ ÈÃÎÑì. áÇÍÙ Ãäå íãßäß Úãá ÊÛííÑ æÇÍÏ ÝÞØ ßá ãÑÉ. íãßä Úãá ÃßËÑ ãä ÊÍÏíÏ Ýí ÇáÞÇÆãÉ ÇáíÓÑì.";
+ Text[ dutch ] = "In deze dialoog kunt u gegevensbestanden waarop u in uw document via de speciale velden betrekking neemt, door andere gegevensbestanden vervangen. In de linker lijst is een meervoudige keuze mogelijk.";
+ Text[ chinese_simplified ] = "ÔÚÕâ¸ö¶Ô»°¿òÄÚÄúÄܹ»Ê¹ÓÃÒ»¸öÆäËûÊý¾Ý¿âÀ´´úÌæÄúµ±Ç°±à¼­µÄÎĵµËùʹÓõÄÊý¾Ý¿â¡£Ã¿´ÎÄúÖ»ÄÜ×öÒ»Ïî¸ü¸Ä¡£ÔÚ×ó·½µÄÁе¥ÄÚÄú¿ÉÒÔ½øÐжàÖØÑ¡Ôñ¡£";
+ Text[ greek ] = "Óå áõôüí ôïí äéÜëïãï ìðïñåßôå íá áíôáëëÜîåôå ôéò âÜóåéò äåäïìÝíùí, ôéò ïðïßåò ÷ñçóéìïðïéåßôå ãéá ôï Ýããñáöï óáò ìÝóù ôùí ðåäßùí âÜóåùí äåäïìÝíùí, ìå Üëëåò âÜóåéò äåäïìÝíùí. ÅðéôñÝðåôáé ìüíï ìéá áëëáãÞ áíÜ åñãÜóéìç çìÝñá. Óôï áñéóôåñü ôìÞìá ìðïñïýí íá ãßíïõí ðïëëáëÝò åðéëïãÝò.";
+ Text[ korean ] = "ÀÌ ´ëÈ­»óÀÚ¿¡¼­,´ç½ÅÀº ¹®¼­¿¡¼­ µ¥ÀÌÅͺ£À̽º¿¡ Á¢±ÙÇϰųª ±³È¯ÇÏ´Â µ¥ÀÌÅͺ£À̽º Çʵ带 »ç¿ëÇϽǼö ÀÖ½À´Ï´Ù.Çѹø¿¡ Çѹø º¯°æÀÌ ¸¸µé¾î Áý´Ï´Ù. ¿ÞÂÊÀÇ ¸®½ºÆ® »ó¿¡¼­, ´ÙÁß ¼±ÅÃÀÌ °¡´ÉÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Bu diyalogda, belgenizdeki veritabaný alanlarý yoluyla eriþtiðiniz veritabanlarýný baþkalarý ile deðiþtirebilirsiniz. Her iþlemde yalnýzca tek bir deðiþiklik yapýlabilir. Soldaki listede birden fazla seçim yapýlabilir.";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_USEDDB
+ {
+ Pos = MAP_APPFONT ( 12 , 60 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Text = "Verwendete Datenbanken" ;
+ Text [ ENGLISH ] = "Used Databases" ;
+ Left = TRUE ;
+ Text [ english_us ] = "Databases in Use" ;
+ Text [ italian ] = "Database utilizzati" ;
+ Text [ spanish ] = "Bases de datos utilizadas" ;
+ Text [ french ] = "Bases de données utilisées" ;
+ Text [ dutch ] = "Gebruikte gegevensbestanden" ;
+ Text [ swedish ] = "Använda databaser" ;
+ Text [ danish ] = "Anvendte databaser" ;
+ Text [ portuguese_brazilian ] = "Verwendete Datenbanken" ;
+ Text [ portuguese ] = "Bases de dados utilizadas" ;
+ Text[ chinese_simplified ] = "ʹÓõÄÊý¾Ý¿â";
+ Text[ russian ] = "Èñïîëüçóåìûå áàçû äàííûõ";
+ Text[ polish ] = "U¿yte bazy danych";
+ Text[ japanese ] = "Žg—p‚³‚ꂽÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "©Ò¨Ï¥Îªº¸ê®Æ®w";
+ Text[ arabic ] = "ÞæÇÚÏ ÇáÈíÇäÇÊ ÞíÏ ÇáÇÓÊÎÏÇã";
+ Text[ dutch ] = "Gebruikte gegevensbestanden";
+ Text[ chinese_simplified ] = "ʹÓõÄÊý¾Ý¿â";
+ Text[ greek ] = "×ñçóéìïðïéçìÝíåò âÜóåéò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º°¡ »ç¿ëÁß ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Kullanýlan veritabanlarý";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_AVAILDB
+ {
+ Pos = MAP_APPFONT ( 108 , 60 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Verfügbare Datenbanken : Verf³gbare Datenbanken */
+ Text = "Verfügbare Datenbanken" ;
+ Text [ ENGLISH ] = "Available Databases" ;
+ Left = TRUE ;
+ Text [ english_us ] = "Available Databases" ;
+ Text [ italian ] = "Database disponibili" ;
+ Text [ spanish ] = "Bases de datos diponibles" ;
+ Text [ french ] = "Bases de données disponibles" ;
+ Text [ dutch ] = "Beschikbare gegevensbestanden" ;
+ Text [ swedish ] = "Tillgängliga databaser" ;
+ Text [ danish ] = "Tilgængelige databaser" ;
+ Text [ portuguese_brazilian ] = "Verfügbare Datenbanken" ;
+ Text [ portuguese ] = "Bases de dados disponíveis" ;
+ Text[ chinese_simplified ] = "¿ÉʹÓõÄÊý¾Ý¿â";
+ Text[ russian ] = "Äîñòóïíûå áàçû äàííûõ";
+ Text[ polish ] = "Dostêpne bazy danych";
+ Text[ japanese ] = "Žg—p‚Å‚«‚éÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "²{¦sªº¸ê®Æ®w";
+ Text[ arabic ] = "ÞæÇÚÏ ÇáÈíÇäÇÊ ÇáãÊÇÍÉ";
+ Text[ dutch ] = "Beschikbare gegevensbestanden";
+ Text[ chinese_simplified ] = "¿ÉʹÓõÄÊý¾Ý¿â";
+ Text[ greek ] = "ÄéáèÝóéìåò âÜóåéò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º »ç¿ë°¡´É";
+ Text[ turkish ] = "Mevcut veritabanlarý";
+ Text[ language_user1 ] = " ";
+ };
+ Control TLB_USEDDB
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 73 ) ;
+ Size = MAP_APPFONT ( 90 , 52 ) ;
+ TabStop = TRUE ;
+ };
+ Control TLB_AVAILDB
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 108 , 73 ) ;
+ Size = MAP_APPFONT ( 90 , 52 ) ;
+ TabStop = TRUE ;
+ };
+ /* MultiListBox LB_USEDDB {
+ Sort = TRUE;
+ Border = TRUE;
+ SimpleMode = TRUE;
+ Pos = MAP_APPFONT( 12, 73 );
+ Size = MAP_APPFONT( 90, 52 );
+ TabStop = TRUE;
+ };
+ ListBox LB_AVAILDB {
+ Sort = TRUE;
+ Border = TRUE;
+ Pos = MAP_APPFONT( 108, 73 );
+ Size = MAP_APPFONT( 90, 52 );
+ TabStop = TRUE;
+ };*/
+ FixedText FT_DOCDBTEXT
+ {
+ Pos = MAP_APPFONT ( 6 , 136 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "Am Dokument gesetzte Datenbank:" ;
+ Text [ ENGLISH ] = "???" ;
+ Left = TRUE ;
+ Text [ english_us ] = "Database applied to document:" ;
+ Text [ italian ] = "Database applicato a documento" ;
+ Text [ spanish ] = "Base de datos aplicada al doc.:" ;
+ Text [ french ] = "Base de données attachée au document :" ;
+ Text [ dutch ] = "Gekoppeld gegevensbestand" ;
+ Text [ swedish ] = "Databaser använda för dokumentet:" ;
+ Text [ danish ] = "Database tilknyttet til dokument:" ;
+ Text [ portuguese_brazilian ] = "Am Dokument gesetzte Datenbank:" ;
+ Text [ portuguese ] = "Base de dados aplicada ao documento:" ;
+ Text[ chinese_simplified ] = "ÎĵµÊ¹ÓõÄÊý¾Ý¿â£º";
+ Text[ russian ] = "Áàçà äàííûõ, óñòàíîâëåííàÿ â äîêóìåíòå:";
+ Text[ polish ] = "Baza danych ustawiona przy dok.:";
+ Text[ japanese ] = "ÄÞ·¨ÒÝÄ‚É“K—p‚³‚ꂽÃÞ°ÀÍÞ°½:";
+ Text[ chinese_traditional ] = "¤å¥ó¨Ï¥Îªº¸ê®Æ®w¡G";
+ Text[ arabic ] = "ÞÇÚÏÉ ÇáÈíÇäÇÊ ÇáãÑÊÈØÉ ÈÇáãÓÊäÏ:";
+ Text[ dutch ] = "Gekoppeld gegevensbestand";
+ Text[ chinese_simplified ] = "ÎĵµÊ¹ÓõÄÊý¾Ý¿â£º";
+ Text[ greek ] = "Óôï Ýããñáöï åöáñìïóìÝíç âÜóç äåäïìÝíùí:";
+ Text[ korean ] = "¹®¼­¿¡ µ¥ÀÌÅͺ£À̽º Àû¿ë:";
+ Text[ turkish ] = "Belge ile kullanýlan veritabaný:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_DOCDBNAME
+ {
+ Pos = MAP_APPFONT ( 109 , 136 ) ;
+ Size = MAP_APPFONT ( 94 , 10 ) ;
+ Text = "Adressen.Adressen" ;
+ Text [ ENGLISH ] = "???" ;
+ Left = TRUE ;
+ Text [ dutch ] = "Adressen.Adressen" ;
+ Text [ english_us ] = "Addresses.Addresses" ;
+ Text [ italian ] = "Indirizzi.Indirizzi" ;
+ Text [ spanish ] = "Direcciones.Direcciones" ;
+ Text [ french ] = "Adresses.Adresses" ;
+ Text [ swedish ] = "Adresser.Adresser" ;
+ Text [ danish ] = "Adresser.Adresser" ;
+ Text [ portuguese_brazilian ] = "Adressen.Adressen" ;
+ Text [ portuguese ] = "Endereços. Endereços" ;
+ Text[ chinese_simplified ] = "µØÖ·.µØÖ·";
+ Text[ russian ] = "Àäðåñà.Àäðåñà";
+ Text[ polish ] = "Adresy.Adresy";
+ Text[ japanese ] = "ZŠ.ZŠ";
+ Text[ chinese_traditional ] = "¦a§}.¦a§}";
+ Text[ arabic ] = "ÚäÇæíä ÚäÇæíä";
+ Text[ dutch ] = "Adressen.Adressen";
+ Text[ chinese_simplified ] = "µØÖ·.µØÖ·";
+ Text[ greek ] = "Äéåõèýíóåéò.Äéåõèýíóåéò";
+ Text[ korean ] = "ÁÖ¼Ò.ÁÖ¼Ò";
+ Text[ turkish ] = "Adresler.Adresler";
+ Text[ language_user1 ] = " ";
+ };
+/* PushButton BT_CHANGEDB
+ {
+ Pos = MAP_APPFONT ( 210 , 135 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "Festlegen" ;
+ Text [ ENGLISH ] = "???" ;
+ TabStop = TRUE ;
+ Text [ dutch ] = "Definiëren" ;
+ Text [ english_us ] = "Define" ;
+ Text [ italian ] = "Definisci" ;
+ Text [ spanish ] = "Definir" ;
+ Text [ french ] = "Définir" ;
+ Text [ swedish ] = "Definiera" ;
+ Text [ danish ] = "Fastlæg" ;
+ Text [ portuguese ] = "Definir" ;
+ Text [ portuguese_brazilian ] = "Festlegen" ;
+ Text[ chinese_simplified ] = "¶¨Òå";
+ Text[ russian ] = "Óñòàíîâèòü";
+ Text[ polish ] = "Zdefiniuj";
+ Text[ japanese ] = "Šm’è";
+ Text[ chinese_traditional ] = "©w¸q";
+ Text[ arabic ] = "ÊÚÑíÝ";
+ Text[ dutch ] = "Define";
+ Text[ chinese_simplified ] = "Define";
+ Text[ greek ] = "Êáèïñéóìüò";
+ Text[ korean ] = "Define";
+ };
+ */ GroupBox GB_DBLIST
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 198 , 128 ) ;
+ Text = "Datenbank austauschen" ;
+ Text [ ENGLISH ] = "Change Database Names" ;
+ Text [ dutch ] = "Database wisselen" ;
+ Text [ english_us ] = "Exchange databases" ;
+ Text [ italian ] = "Scambia database" ;
+ Text [ spanish ] = "Cambiar Bases de Datos" ;
+ Text [ french ] = "Changer de base de données" ;
+ Text [ swedish ] = "Byt databas" ;
+ Text [ danish ] = "Udskift database" ;
+ Text [ portuguese_brazilian ] = "Datenbank austauschen" ;
+ Text [ portuguese ] = "Substituir base de dados" ;
+ Text[ chinese_simplified ] = "¸ü»»Êý¾Ý¿â";
+ Text[ russian ] = "Çàìåíèòü áàçó äàííûõ";
+ Text[ polish ] = "Wymieñ bazê danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½‚ÌŒðŠ·";
+ Text[ chinese_traditional ] = "´À´«¸ê®Æ®w";
+ Text[ arabic ] = "ÇÓÊÈÏÇá ÞæÇÚÏ ÇáÈíÇäÇÊ";
+ Text[ dutch ] = "Database wisselen";
+ Text[ chinese_simplified ] = "¸ü»»Êý¾Ý¿â";
+ Text[ greek ] = "ÁíôáëëáãÞ âÜóåùí äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º ±³È¯";
+ Text[ turkish ] = "Veritabanýnýn deðiþtirilmesi";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 210 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ Disable = TRUE ;
+ Text = "Festlegen" ;
+ TabStop = TRUE ;
+ Text [ dutch ] = "Definiëren" ;
+ Text [ english_us ] = "Define" ;
+ Text [ italian ] = "Definisci" ;
+ Text [ spanish ] = "Definir" ;
+ Text [ french ] = "Définir" ;
+ Text [ swedish ] = "Definiera" ;
+ Text [ danish ] = "Definer" ;
+ Text [ portuguese ] = "Definir" ;
+ Text [ portuguese_brazilian ] = "Festlegen" ;
+ Text[ chinese_simplified ] = "¶¨Òå";
+ Text[ russian ] = "Çàäàòü";
+ Text[ polish ] = "Zdefiniuj";
+ Text[ japanese ] = "Šm”F";
+ Text[ chinese_traditional ] = "©w¸q";
+ Text[ arabic ] = "ÊÚÑíÝ";
+ Text[ dutch ] = "Definiëren";
+ Text[ chinese_simplified ] = "¶¨Òå";
+ Text[ greek ] = "Êáèïñéóìüò";
+ Text[ korean ] = "Á¤ÀÇ";
+ Text[ turkish ] = "Tanýmla";
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 210 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ 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ýþ";
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 210 , 60 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ Bitmap BMP_ROOT_CLOSED
+ {
+ File = "plus.bmp" ;
+ };
+ Bitmap BMP_ROOT_OPENED
+ {
+ File = "minus.bmp" ;
+ };
+ Image BMP_DB
+ {
+ ImageBitmap = Bitmap { File = "db.bmp" ; };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ };
+ Image BMP_TABLE
+ {
+ ImageBitmap = Bitmap { File = "table.bmp" ; };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ };
+ Text[ chinese_simplified ] = "¸ü»»Êý¾Ý¿â";
+ Text[ russian ] = "Çàìåíèòü áàçó äàííûõ";
+ Text[ polish ] = "Wymieñ bazê danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½‚ÌŒðŠ·";
+ Text[ chinese_traditional ] = "§ó´«¸ê®Æ®w";
+ Text[ arabic ] = "ÇÓÊÈÏÇá ÞæÇÚÏ ÇáÈíÇäÇÊ";
+ Text[ dutch ] = "Database wisselen";
+ Text[ chinese_simplified ] = "¸ü»»Êý¾Ý¿â";
+ Text[ greek ] = "ÁíôáëëáãÞ âÜóåùí äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º ±³È¯";
+ Text[ turkish ] = "Veritabanýnýn deðiþtirilmesi";
+ Text[ language_user1 ] = " ";
+};
+
diff --git a/sw/source/ui/fldui/flddb.cxx b/sw/source/ui/fldui/flddb.cxx
new file mode 100644
index 000000000000..3ef394ce56ff
--- /dev/null
+++ b/sw/source/ui/fldui/flddb.cxx
@@ -0,0 +1,756 @@
+/*************************************************************************
+ *
+ * $RCSfile: flddb.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _DBFLD_HXX
+#include <dbfld.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _FLDTDLG_HXX
+#include <fldtdlg.hxx>
+#endif
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+
+#ifndef _FLDTDLG_HRC
+#include <fldtdlg.hrc>
+#endif
+#ifndef _FLDUI_HRC
+#include <fldui.hrc>
+#endif
+#ifndef _FLDDB_HXX
+#include <flddb.hxx>
+#endif
+
+#define USER_DATA_VERSION_1 "1"
+#define USER_DATA_VERSION USER_DATA_VERSION_1
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldDBPage::SwFldDBPage(Window* pParent, const SfxItemSet& rCoreSet ) :
+ SwFldPage( pParent, SW_RES( TP_FLD_DB ), rCoreSet ),
+ aTypeFT (this, SW_RES(FT_DBTYPE)),
+ aTypeLB (this, SW_RES(LB_DBTYPE)),
+ aSelectionFT(this, SW_RES(FT_DBSELECTION)),
+ aDatabaseTLB(this, SW_RES(TLB_DBLIST), aEmptyStr, FALSE),
+ aConditionFT(this, SW_RES(FT_DBCONDITION)),
+ aConditionED(this, SW_RES(ED_DBCONDITION)),
+ aValueFT (this, SW_RES(FT_DBSETNUMBER)),
+ aValueED (this, SW_RES(ED_DBSETNUMBER)),
+ aDBFormatRB (this, SW_RES(RB_DBOWNFORMAT)),
+ aNewFormatRB(this, SW_RES(RB_DBFORMAT)),
+ aNumFormatLB(this, SW_RES(LB_DBNUMFORMAT)),
+ aFormatLB (this, SW_RES(LB_DBFORMAT)),
+ aFormatGB (this, SW_RES(GB_DBFORMAT))
+{
+ FreeResource();
+
+ aOldNumSelectHdl = aNumFormatLB.GetSelectHdl();
+
+ aNumFormatLB.SetSelectHdl(LINK(this, SwFldDBPage, NumSelectHdl));
+ aDatabaseTLB.SetSelectHdl(LINK(this, SwFldDBPage, TreeSelectHdl));
+ aDatabaseTLB.SetDoubleClickHdl(LINK(this, SwFldDBPage, InsertHdl));
+
+ aValueED.SetModifyHdl(LINK(this, SwFldDBPage, ModifyHdl));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+__EXPORT SwFldDBPage::~SwFldDBPage()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: TabPage initialisieren
+ --------------------------------------------------------------------*/
+
+void __EXPORT SwFldDBPage::Reset(const SfxItemSet& rSet)
+{
+ Init(); // Allgemeine initialisierung
+
+ aTypeLB.SetUpdateMode(FALSE);
+ USHORT nOldPos = aTypeLB.GetSelectEntryPos();
+#ifdef REPLACE_OFADBMGR
+ sOldDBName = aDatabaseTLB.GetDBName(sOldTableName, sOldColumnName);
+#else
+ sOldDBName = aDatabaseTLB.GetDBName();
+#endif
+
+ aTypeLB.Clear();
+
+ USHORT nPos, nTypeId, i;
+
+ if (!IsFldEdit())
+ {
+ // TypeListBox initialisieren
+ const SwFldGroupRgn& rRg = GetFldMgr().GetGroupRange(IsFldDlgHtmlMode(), GetGroup());
+
+ for(i = rRg.nStart; i < rRg.nEnd; ++i)
+ {
+ nTypeId = GetFldMgr().GetTypeId(i);
+ nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(i));
+ aTypeLB.SetEntryData(nPos, (void*)nTypeId);
+ }
+ }
+ else
+ {
+ nTypeId = GetCurField()->GetTypeId();
+ nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(GetFldMgr().GetPos(nTypeId)));
+ aTypeLB.SetEntryData(nPos, (void*)nTypeId);
+ }
+
+ // alte Pos selektieren
+ if (GetTypeSel() != LISTBOX_ENTRY_NOTFOUND)
+ aTypeLB.SelectEntryPos(GetTypeSel());
+
+ aFormatLB.Clear();
+
+ USHORT nSize = GetFldMgr().GetFormatCount(TYP_DBSETNUMBERFLD, FALSE, IsFldDlgHtmlMode());
+ for( i = 0; i < nSize; ++i )
+ {
+ USHORT nPos = aFormatLB.InsertEntry(GetFldMgr().GetFormatStr(TYP_DBSETNUMBERFLD, i));
+ USHORT nFmtId = GetFldMgr().GetFormatId( TYP_DBSETNUMBERFLD, i );
+ aFormatLB.SetEntryData( nPos, (void*)nFmtId );
+ if( SVX_NUM_ARABIC == nFmtId )
+ aFormatLB.SelectEntryPos( nPos );
+ }
+
+ if (!IsFldEdit())
+ {
+ if (nOldPos != LISTBOX_ENTRY_NOTFOUND)
+ aTypeLB.SelectEntryPos(nOldPos);
+
+ if (sOldDBName.Len())
+ {
+#ifdef REPLACE_OFADBMGR
+ aDatabaseTLB.Select(sOldDBName, sOldTableName, sOldColumnName);
+#else
+ aDatabaseTLB.Select(sOldDBName);
+#endif
+ }
+ else
+ {
+ SwWrtShell *pSh = ::GetActiveView()->GetWrtShellPtr();
+#ifdef REPLACE_OFADBMGR
+ String sTmp(pSh->GetDBName());
+
+ aDatabaseTLB.Select(
+ sTmp.GetToken(0, DB_DELIM),
+ sTmp.GetToken(1, DB_DELIM),
+ sTmp.GetToken(2, DB_DELIM));
+#else
+ aDatabaseTLB.Select(pSh->GetDBName());
+#endif
+ }
+ }
+
+ if( !IsRefresh() )
+ {
+ String sUserData = GetUserData();
+ if(sUserData.GetToken(0, ';').EqualsIgnoreCaseAscii(USER_DATA_VERSION_1))
+ {
+ String sVal = sUserData.GetToken(1, ';');
+ USHORT nVal = sVal.ToInt32();
+ if(nVal != USHRT_MAX)
+ {
+ for(USHORT i = 0; i < aTypeLB.GetEntryCount(); i++)
+ if(nVal == (USHORT)(ULONG)aTypeLB.GetEntryData(i))
+ {
+ aTypeLB.SelectEntryPos(i);
+ break;
+ }
+ }
+ }
+ }
+ TypeHdl(0);
+
+ aTypeLB.SetUpdateMode(TRUE);
+ aTypeLB.SetSelectHdl(LINK(this, SwFldDBPage, TypeHdl));
+ aTypeLB.SetDoubleClickHdl(LINK(this, SwFldDBPage, InsertHdl));
+
+ if (IsFldEdit())
+ {
+ aConditionED.SaveValue();
+ aValueED.SaveValue();
+#ifdef REPLACE_OFADBMGR
+ sOldDBName = aDatabaseTLB.GetDBName(sOldTableName, sOldColumnName);
+#else
+ sOldDBName = aDatabaseTLB.GetDBName();
+#endif
+ nOldFormat = GetCurField()->GetFormat();
+ nOldSubType = GetCurField()->GetSubType();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+BOOL __EXPORT SwFldDBPage::FillItemSet(SfxItemSet& rSet)
+{
+#ifdef REPLACE_OFADBMGR
+ String sTableName, sColumnName;
+ String sDBName = aDatabaseTLB.GetDBName(sTableName, sColumnName);
+#else
+ String sDBName = aDatabaseTLB.GetDBName();
+#endif
+ SwWrtShell *pSh = ::GetActiveView()->GetWrtShellPtr();
+
+ if (!sDBName.Len())
+ {
+#ifdef REPLACE_OFADBMGR
+ String sTmp = pSh->GetDBName();
+ sDBName = sTmp.GetToken(0, DB_DELIM);
+ sTableName = sTmp.GetToken(1, DB_DELIM);
+#else
+ sDBName = pSh->GetDBName();
+#endif
+ }
+ else
+ {
+#ifdef REPLACE_OFADBMGR
+ String sNewDBName = sDBName;
+ sNewDBName += DB_DELIM;
+ sNewDBName += sTableName;
+ pSh->ChgDBName(sNewDBName);
+#else
+ // keine Spaltennamen an ChgDBName uebergeben
+ String sNewDBName = sDBName.GetToken(0, DB_DELIM);
+ sNewDBName += DB_DELIM;
+ sNewDBName += sDBName.GetToken(1, DB_DELIM);
+ pSh->ChgDBName(sNewDBName);
+#endif
+ }
+
+ if (sDBName.Len()) // Ohne Datenbank kein neuer Feldbefehl
+ {
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+ String aVal(aValueED.GetText());
+ String aName(aConditionED.GetText());
+ ULONG nFormat = 0;
+ USHORT nSubType = 0;
+
+ sDBName += DB_DELIM;
+#ifdef REPLACE_OFADBMGR
+ sDBName += sTableName;
+ sDBName += DB_DELIM;
+ if(sColumnName.Len())
+ {
+ sDBName += sColumnName;
+ sDBName += DB_DELIM;
+ }
+#endif
+ aName.Insert(sDBName, 0);
+
+ switch (nTypeId)
+ {
+ case TYP_DBFLD:
+ nFormat = aNumFormatLB.GetFormat();
+ if (aNewFormatRB.IsEnabled() && aNewFormatRB.IsChecked())
+ nSubType = SUB_OWN_FMT;
+ aName = sDBName;
+ break;
+
+ case TYP_DBSETNUMBERFLD:
+ nFormat = (USHORT)(ULONG)aFormatLB.GetEntryData(
+ aFormatLB.GetSelectEntryPos() );
+ break;
+ }
+
+
+#ifdef REPLACE_OFADBMGR
+ String sTempDBName, sTempTableName, sTempColumnName;
+ sTempDBName = aDatabaseTLB.GetDBName(sTempTableName, sTempColumnName);
+ BOOL bDBListBoxChanged = sOldDBName != sTempDBName ||
+ sOldTableName != sTempTableName || sOldColumnName != sTempColumnName;
+#else
+ BOOL bDBListBoxChanged = sOldDBName != aDatabaseTLB.GetDBName();
+#endif
+ if (!IsFldEdit() ||
+ aConditionED.GetSavedValue() != aConditionED.GetText() ||
+ aValueED.GetSavedValue() != aValueED.GetText() ||
+ bDBListBoxChanged ||
+ nOldFormat != nFormat || nOldSubType != nSubType)
+ {
+ InsertFld( nTypeId, nSubType, aName, aVal, nFormat);
+ }
+ }
+
+ return FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxTabPage* __EXPORT SwFldDBPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return ( new SwFldDBPage( pParent, rAttrSet ) );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFldDBPage::GetGroup()
+{
+ return GRP_DB;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldDBPage, TypeHdl, ListBox *, pBox )
+{
+ // Alte ListBoxPos sichern
+ const USHORT nOld = GetTypeSel();
+
+ // Aktuelle ListBoxPos
+ SetTypeSel(aTypeLB.GetSelectEntryPos());
+
+ if(GetTypeSel() == LISTBOX_ENTRY_NOTFOUND)
+ {
+ SetTypeSel(0);
+ aTypeLB.SelectEntryPos(0);
+ }
+
+ if (nOld != GetTypeSel())
+ {
+ SwWrtShell *pSh = ::GetActiveView()->GetWrtShellPtr();
+ BOOL bCond = FALSE, bSetNo = FALSE, bFormat = FALSE, bDBFormat = FALSE;
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ aDatabaseTLB.ShowColumns(nTypeId == TYP_DBFLD);
+
+ if (IsFldEdit())
+ {
+#ifdef REPLACE_OFADBMGR
+ String sDBName, sTableName, sColumnName;
+ if (nTypeId == TYP_DBFLD)
+ {
+ sDBName = ((SwDBField*)GetCurField())->GetDBName();
+ sColumnName = ((SwDBFieldType*)GetCurField()->GetTyp())->GetColumnName();
+ }
+ else
+ {
+ sDBName = ((SwDBNameInfField*)GetCurField())->GetDBName(pSh->GetDoc());
+ }
+ sTableName = sDBName.GetToken(1, DB_DELIM);
+ sDBName = sDBName.GetToken(0, DB_DELIM);
+
+ aDatabaseTLB.Select(sDBName, sTableName, sColumnName);
+#else
+ String sDBName;
+ if (nTypeId == TYP_DBFLD)
+ {
+ sDBName = ((SwDBField*)GetCurField())->GetDBName();
+ sDBName += DB_DELIM;
+ sDBName += ((SwDBFieldType*)GetCurField()->GetTyp())->GetColumnName();
+ }
+ else
+ sDBName = ((SwDBNameInfField*)GetCurField())->GetDBName(pSh->GetDoc());
+
+ aDatabaseTLB.Select(sDBName);
+#endif
+ }
+
+ switch (nTypeId)
+ {
+ case TYP_DBFLD:
+ bFormat = TRUE;
+ bDBFormat = TRUE;
+ aNumFormatLB.Show();
+ aFormatLB.Hide();
+
+ if (pBox) // Typ wurde vom User geaendert
+ aDBFormatRB.Check();
+
+ if (IsFldEdit())
+ {
+ if (GetCurField()->GetFormat() != 0 && GetCurField()->GetFormat() != ULONG_MAX)
+ aNumFormatLB.SetDefFormat(GetCurField()->GetFormat());
+
+ if (GetCurField()->GetSubType() & SUB_OWN_FMT)
+ aNewFormatRB.Check();
+ else
+ aDBFormatRB.Check();
+ }
+ break;
+
+ case TYP_DBNUMSETFLD:
+ bSetNo = TRUE;
+ // kein break!
+ case TYP_DBNEXTSETFLD:
+ bCond = TRUE;
+ if (IsFldEdit())
+ {
+ aConditionED.SetText(GetCurField()->GetPar1());
+ aValueED.SetText(GetCurField()->GetPar2());
+ }
+ break;
+
+ case TYP_DBNAMEFLD:
+ break;
+
+ case TYP_DBSETNUMBERFLD:
+ bFormat = TRUE;
+ aNewFormatRB.Check();
+ aNumFormatLB.Hide();
+ aFormatLB.Show();
+ if( IsFldEdit() )
+ {
+ for( USHORT nI = aFormatLB.GetEntryCount(); nI; )
+ if( GetCurField()->GetFormat() == (USHORT)(ULONG)
+ aFormatLB.GetEntryData( --nI ))
+ {
+ aFormatLB.SelectEntryPos( nI );
+ break;
+ }
+ }
+ break;
+ }
+
+ aConditionFT.Enable(bCond);
+ aConditionED.Enable(bCond);
+ aValueFT.Enable(bSetNo);
+ aValueED.Enable(bSetNo);
+ if (nTypeId != TYP_DBFLD)
+ {
+ aDBFormatRB.Enable(bDBFormat);
+ aNewFormatRB.Enable(bDBFormat|bFormat);
+ aNumFormatLB.Enable(bDBFormat);
+ aFormatLB.Enable(bFormat);
+ }
+ aFormatGB.Enable(bDBFormat|bFormat);
+
+ if (!IsFldEdit())
+ {
+ aValueED.SetText(aEmptyStr);
+ if (bCond)
+ aConditionED.SetText( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "TRUE" )));
+ else
+ aConditionED.SetText(aEmptyStr);
+ }
+
+ CheckInsert();
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldDBPage, NumSelectHdl, NumFormatListBox *, pLB )
+{
+ aNewFormatRB.Check();
+ aOldNumSelectHdl.Call(pLB);
+
+ return 0;
+}
+
+/*---------------------------------------------------------------------
+ Beschreibung:
+---------------------------------------------------------------------*/
+
+void SwFldDBPage::CheckInsert()
+{
+ BOOL bInsert = TRUE;
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ SvLBoxEntry* pEntry = aDatabaseTLB.GetCurEntry();
+
+ if (pEntry)
+ {
+ pEntry = aDatabaseTLB.GetParent(pEntry);
+
+ if (nTypeId == TYP_DBFLD && pEntry)
+ pEntry = aDatabaseTLB.GetParent(pEntry);
+
+ bInsert &= pEntry != 0;
+ }
+ else
+ bInsert = FALSE;
+
+ if (nTypeId == TYP_DBNUMSETFLD)
+ {
+ BOOL bHasValue = aValueED.GetText().Len() != 0;
+
+ bInsert &= bHasValue;
+ }
+
+ EnableInsert(bInsert);
+}
+
+/*---------------------------------------------------------------------
+ Beschreibung:
+---------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldDBPage, TreeSelectHdl, SvTreeListBox *, pBox )
+{
+ SvLBoxEntry* pColEntry;
+ SvLBoxEntry* pEntry = pColEntry = pBox->GetCurEntry();
+ if (pEntry)
+ {
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ pEntry = aDatabaseTLB.GetParent(pEntry);
+
+ if (nTypeId == TYP_DBFLD && pEntry)
+ pEntry = aDatabaseTLB.GetParent(pEntry);
+
+ CheckInsert();
+
+ if (nTypeId == TYP_DBFLD)
+ {
+ BOOL bNumFormat = FALSE;
+
+ if (pEntry != 0)
+ {
+#ifdef REPLACE_OFADBMGR
+ String sTableName;
+ String sColumnName;
+ BOOL bIsTable;
+ String sDBName = aDatabaseTLB.GetDBName(sTableName, sColumnName, &bIsTable);
+ bNumFormat = GetFldMgr().IsDBNumeric(sDBName,
+ sTableName,
+ bIsTable,
+ sColumnName);
+#else
+ String sName(aDatabaseTLB.GetDBName());
+ String sColumnName(sName.GetToken(2, DB_DELIM));
+ String sDBName(sName.GetToken(0, DB_DELIM));
+ sDBName += DB_DELIM;
+ sDBName += sName.GetToken(1, DB_DELIM);
+ bNumFormat = GetFldMgr().IsDBNumeric(sDBName, sColumnName);
+#endif
+ if (!IsFldEdit())
+ aDBFormatRB.Check();
+ }
+
+ aDBFormatRB.Enable(bNumFormat);
+ aNewFormatRB.Enable(bNumFormat);
+ aNumFormatLB.Enable(bNumFormat);
+ aFormatGB.Enable(bNumFormat);
+ }
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Modify
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldDBPage, ModifyHdl, Edit *, EMPTYARG )
+{
+ CheckInsert();
+ return 0;
+}
+
+/* -----------------12.01.99 11:21-------------------
+ *
+ * --------------------------------------------------*/
+void SwFldDBPage::FillUserData()
+{
+ String sData( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( USER_DATA_VERSION )));
+ sData += ';';
+ USHORT nTypeSel = aTypeLB.GetSelectEntryPos();
+
+ if( LISTBOX_ENTRY_NOTFOUND == nTypeSel )
+ nTypeSel = USHRT_MAX;
+ else
+ nTypeSel = (ULONG)aTypeLB.GetEntryData( nTypeSel );
+ sData += String::CreateFromInt32( nTypeSel );
+ SetUserData(sData);
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.31 2000/09/18 16:05:28 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.30 2000/07/07 15:25:43 os
+ replace ofadbmgr
+
+ Revision 1.29 2000/06/30 08:52:52 os
+ #76541# string assertions removed
+
+ Revision 1.28 2000/06/26 13:35:59 os
+ new DataBase API
+
+ Revision 1.27 2000/05/23 18:36:33 jp
+ Bugfixes for Unicode
+
+ Revision 1.26 2000/04/18 15:17:31 os
+ UNICODE
+
+ Revision 1.25 1999/02/25 16:24:50 JP
+ Bug #62438#: UserData nur auswerten, wenn kein Refresh ist
+
+
+ Rev 1.24 25 Feb 1999 17:24:50 JP
+ Bug #62438#: UserData nur auswerten, wenn kein Refresh ist
+
+ Rev 1.23 21 Jan 1999 09:50:36 OS
+ #59900# Fussnoten im Dialog korrekt sortieren; keine prot. Member
+
+ Rev 1.22 12 Jan 1999 11:42:26 OS
+ #60579# ausgewaehlten Typ in den UserData speichern
+
+ Rev 1.21 11 Dec 1998 15:16:24 OM
+ #60051# Richtiges Format fuer Serienbrieffelder waehlen
+
+ Rev 1.20 17 Nov 1998 10:50:38 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.19 04 Nov 1998 13:27:56 OM
+ #58939# Bei Formataenderung RadioButton vorselektieren
+
+ Rev 1.18 10 Aug 1998 16:39:58 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.17 09 Jul 1998 09:52:58 JP
+ EmptyStr benutzen
+
+ Rev 1.16 10 Jun 1998 13:26:08 OM
+ Alten Typ nach Reset restaurieren
+
+ Rev 1.15 27 Mar 1998 15:23:54 OM
+ #48909# Insert-Btn korrekt enablen/disablen
+
+ Rev 1.14 06 Mar 1998 13:07:48 OM
+ Nur bei Aenderung Feld aktualisieren
+
+ Rev 1.13 04 Mar 1998 08:32:24 MH
+ chg: Syntax
+
+ Rev 1.12 16 Feb 1998 09:39:00 OM
+ Fuer Solaris nicht direkt von void* auf ushort casten
+
+ Rev 1.11 06 Jan 1998 18:12:54 OM
+ Felbefehl-Dlg
+
+ Rev 1.10 05 Jan 1998 17:44:34 OM
+ DB-Feldbefehl bearbeiten
+
+ Rev 1.9 12 Dec 1997 17:14:00 OM
+ Listbox bei numerischen Formaten enablen
+
+ Rev 1.8 11 Dec 1997 16:58:00 OM
+ Feldumstellung
+
+ Rev 1.7 20 Nov 1997 17:01:20 OM
+ Neuer Felddialog
+
+ Rev 1.6 19 Nov 1997 16:30:42 OM
+ Datenbank-TP Drag&Drop
+
+ Rev 1.5 18 Nov 1997 10:34:36 OM
+ Neuer Feldbefehldialog
+
+ Rev 1.4 17 Nov 1997 09:06:36 OM
+ Basisklasse fuer Feldbefehl-TPs
+
+ Rev 1.3 05 Nov 1997 17:02:46 OM
+ Spaltennamen anzeigen
+
+ Rev 1.2 05 Nov 1997 15:35:38 OM
+ Neuer Feldbefehldialog
+
+ Rev 1.1 30 Oct 1997 14:31:42 OM
+ Feldbefehl-Umstellung
+
+ Rev 1.0 28 Oct 1997 15:05:06 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/fldui/flddb.hxx b/sw/source/ui/fldui/flddb.hxx
new file mode 100644
index 000000000000..5dc89b9b2ca9
--- /dev/null
+++ b/sw/source/ui/fldui/flddb.hxx
@@ -0,0 +1,137 @@
+/*************************************************************************
+ *
+ * $RCSfile: flddb.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWFLDDB_HXX
+#define _SWFLDDB_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_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#include "condedit.hxx"
+#include "dbtree.hxx"
+#include "numfmtlb.hxx"
+
+#include "fldpage.hxx"
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SwFldDBPage : public SwFldPage
+{
+ FixedText aTypeFT;
+ ListBox aTypeLB;
+ FixedText aSelectionFT;
+ SwDBTreeList aDatabaseTLB;
+ FixedText aConditionFT;
+ ConditionEdit aConditionED;
+ FixedText aValueFT;
+ Edit aValueED;
+ RadioButton aDBFormatRB;
+ RadioButton aNewFormatRB;
+ NumFormatListBox aNumFormatLB;
+ ListBox aFormatLB;
+ GroupBox aFormatGB;
+
+ String sOldDBName;
+#ifdef REPLACE_OFADBMGR
+ String sOldTableName;
+ String sOldColumnName;
+#endif
+ ULONG nOldFormat;
+ USHORT nOldSubType;
+ Link aOldNumSelectHdl;
+
+ DECL_LINK( TypeHdl, ListBox* );
+ DECL_LINK( NumSelectHdl, NumFormatListBox* pLB = 0);
+ DECL_LINK( TreeSelectHdl, SvTreeListBox* pBox );
+ DECL_LINK( ModifyHdl, Edit *pED = 0 );
+
+ void CheckInsert();
+
+protected:
+ virtual USHORT GetGroup();
+
+public:
+ SwFldDBPage(Window* pParent, const SfxItemSet& rSet);
+
+ ~SwFldDBPage();
+
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rAttrSet);
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+ virtual void FillUserData();
+};
+
+
+#endif
+
diff --git a/sw/source/ui/fldui/flddb.src b/sw/source/ui/fldui/flddb.src
new file mode 100644
index 000000000000..2dc7bc334cef
--- /dev/null
+++ b/sw/source/ui/fldui/flddb.src
@@ -0,0 +1,337 @@
+/*************************************************************************
+ *
+ * $RCSfile: flddb.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "globals.hrc"
+#include "fldtdlg.hrc"
+#include "helpid.h"
+TabPage TP_FLD_DB
+{
+ HelpID = HID_FLD_DB ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Text = "Datenbank" ;
+ Text [ ENGLISH ] = "Database" ;
+ FixedText FT_DBTYPE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ Text = "~Feldtyp" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "~Tipo di campo" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "Tipo de ~campo" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Felttype" ;
+ Text [ french ] = "~Type de champ" ;
+ Text [ swedish ] = "~Fälttyp" ;
+ Text [ dutch ] = "~Veldtype" ;
+ Text [ spanish ] = "~Tipo de campo" ;
+ Text [ english_us ] = "~Type" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "×Ö¶ÎÀàÐÍ(~T)";
+ Text[ russian ] = "Òèï ïîëÿ";
+ Text[ polish ] = "Typ pola";
+ Text[ japanese ] = "̨°ÙÄÞ‚ÌŽí—Þ(~T)";
+ Text[ chinese_traditional ] = "Ãþ«¬(~T)";
+ Text[ arabic ] = "äæÚ ÇáÍÞá";
+ Text[ greek ] = "~Ôýðïò ðåäßïõ";
+ Text[ korean ] = "ÇüÅÂ(~T)";
+ Text[ turkish ] = "Alan tipi";
+ };
+ ListBox LB_DBTYPE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 16 ) ;
+ Size = MAP_APPFONT ( 76 , 54 ) ;
+ TabStop = TRUE ;
+ Sort = TRUE ;
+ AutoHScroll = TRUE ;
+ /* StringList =
+ {
+ < "Beliebiger Datensatz" ; > ;
+ < "Datensatznummer" ; > ;
+ < "Nächster Datensatz" ; > ;
+ < "Serienbrieffeld" ; > ;
+ < "Datenbankname" ; > ;
+ };*/
+ };
+ FixedText FT_DBCONDITION
+ {
+ Pos = MAP_APPFONT ( 6 , 76 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ TEXT = "Bedin~gung" ;
+ TEXT [ English ] = "Conditio~n" ;
+ TEXT [ norwegian ] = "Vilkår" ;
+ TEXT [ italian ] = "Con~dizione" ;
+ TEXT [ portuguese_brazilian ] = "condição" ;
+ TEXT [ portuguese ] = "~Condição" ;
+ TEXT [ finnish ] = "Ehto" ;
+ TEXT [ danish ] = "Betingelse" ;
+ TEXT [ french ] = "~Si" ;
+ TEXT [ swedish ] = "~Villkor" ;
+ TEXT [ dutch ] = "~Voorwaarde" ;
+ TEXT [ spanish ] = "Con~dición" ;
+ TEXT [ english_us ] = "~Condition" ;
+ Left = TRUE ;
+ TEXT[ chinese_simplified ] = "Ìõ¼þ(~C)";
+ TEXT[ russian ] = "Óñëîâèå";
+ TEXT[ polish ] = "Warunek";
+ TEXT[ japanese ] = "ðŒ(~C)";
+ TEXT[ chinese_traditional ] = "±ø¥ó(~C)";
+ TEXT[ arabic ] = "ÇáÔÑØ";
+ TEXT[ greek ] = "¼ñïò";
+ TEXT[ korean ] = "Á¶°Ç(~C)";
+ TEXT[ turkish ] = "Koþul";
+ };
+ Edit ED_DBCONDITION
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 88 ) ;
+ Size = MAP_APPFONT ( 76 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ FixedText FT_DBSETNUMBER
+ {
+ Pos = MAP_APPFONT ( 6 , 105 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ TEXT = "Sat~znummer" ;
+ TEXT [ English ] = "Setnumber" ;
+ TEXT [ norwegian ] = "Setnumber" ;
+ TEXT [ italian ] = "Numero di record" ;
+ TEXT [ portuguese_brazilian ] = "Definir número" ;
+ TEXT [ portuguese ] = "~Número de registo" ;
+ TEXT [ finnish ] = "Joukon numero" ;
+ TEXT [ danish ] = "Datapostnummer" ;
+ TEXT [ french ] = "~Numéro de l'enregistrement" ;
+ TEXT [ swedish ] = "Datapostnummer" ;
+ TEXT [ dutch ] = "~Record-nummer" ;
+ TEXT [ spanish ] = "Número de registro" ;
+ TEXT [ english_us ] = "Record number" ;
+ Left = TRUE ;
+ TEXT[ chinese_simplified ] = "ÌõÄ¿±àºÅ";
+ TEXT[ russian ] = "Íîìåð ïðåäëîæåíèÿ";
+ TEXT[ polish ] = "Numer zdania";
+ TEXT[ japanese ] = "Úº°ÄÞ”Ô†";
+ TEXT[ chinese_traditional ] = "¶µ¥Ø¸¹½X";
+ TEXT[ arabic ] = "ÑÞã ÇáÓÌá";
+ TEXT[ greek ] = "Áñéèìüò åããñáöÞò";
+ TEXT[ korean ] = "·¹ÄÚµå ¹øÈ£";
+ TEXT[ turkish ] = "Veri kümesi numarasý";
+ };
+ Edit ED_DBSETNUMBER
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 117 ) ;
+ Size = MAP_APPFONT ( 76 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ FixedText FT_DBSELECTION
+ {
+ Pos = MAP_APPFONT ( 88 , 3 ) ;
+ Size = MAP_APPFONT ( 166 , 10 ) ;
+ Text = "Datenbank~auswahl" ;
+ Text [ ENGLISH ] = "Database s~election" ;
+ Left = TRUE ;
+ Text [ english_us ] = "Database s~election" ;
+ Text [ portuguese_brazilian ] = "Datenbank~auswahl" ;
+ Text [ swedish ] = "Datab~asurval" ;
+ Text [ danish ] = "Databaseudvalg" ;
+ Text [ italian ] = "Scelta ~database" ;
+ Text [ spanish ] = "~Seleccionar base de datos" ;
+ Text [ french ] = "~Sélection d'une base de données" ;
+ Text [ dutch ] = "Selectie ~database" ;
+ Text [ portuguese ] = "~Seleccionar base de dados" ;
+ Text[ chinese_simplified ] = "Ñ¡ÔñÊý¾Ý¿â(~E)";
+ Text[ russian ] = "Âûáîð áàçû äàííûõ";
+ Text[ polish ] = "Wybór bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½‚Ì‘I‘ð(~E)";
+ Text[ chinese_traditional ] = "¿ï¾Ü¸ê®Æ®w(~E)";
+ Text[ arabic ] = "ÇÎÊíÇÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "ÅðéëïãÞ âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º ¼±ÅÃ(~E)";
+ Text[ turkish ] = "Veritabaný seçimi";
+ };
+ Control TLB_DBLIST
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 88 , 16 ) ;
+ Size = MAP_APPFONT ( 166 , 72 ) ;
+ TabStop = TRUE ;
+ };
+ RadioButton RB_DBOWNFORMAT
+ {
+ Pos = MAP_APPFONT ( 94 , 103 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "A~us Datenbank" ;
+ Text [ ENGLISH ] = "From database" ;
+ Check = TRUE ;
+ Text [ english_us ] = "From database" ;
+ Text [ portuguese_brazilian ] = "Aus Datenbank" ;
+ Text [ swedish ] = "Från databas" ;
+ Text [ danish ] = "Fra database" ;
+ Text [ italian ] = "Dal database" ;
+ Text [ spanish ] = "De la base de datos" ;
+ Text [ french ] = "~De la B.D." ;
+ Text [ dutch ] = "~Uit database" ;
+ Text [ portuguese ] = "~Da base de dados" ;
+ Text[ chinese_simplified ] = "´ÓÊý¾Ý¿â";
+ Text[ russian ] = "èç áàçû äàííûõ";
+ Text[ polish ] = "Z bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½‚©‚ç";
+ Text[ chinese_traditional ] = "±q¸ê®Æ®w";
+ Text[ arabic ] = "ãä ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "Áðü âÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º·Î ºÎÅÍ";
+ Text[ turkish ] = "Kaynak veritabaný";
+ };
+ RadioButton RB_DBFORMAT
+ {
+ Pos = MAP_APPFONT ( 94 , 115 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Se~lbst definiert" ;
+ Text [ ENGLISH ] = "User defined" ;
+ Text [ english_us ] = "User-defined" ;
+ Text [ portuguese_brazilian ] = "Selbstdefiniert" ;
+ Text [ swedish ] = "Användardefinierat" ;
+ Text [ danish ] = "Brugerdefineret" ;
+ Text [ italian ] = "Personalizzato" ;
+ Text [ spanish ] = "Definido por el usuario" ;
+ Text [ french ] = "Dé~fini par l'utilisateur" ;
+ Text [ dutch ] = "~Zelf gedefinieerd" ;
+ Text [ portuguese ] = "D~efinido pelo utilizador" ;
+ Text[ chinese_simplified ] = "Óû§×Ô¶¨";
+ Text[ russian ] = "ïîëüçîâàòåëÿ";
+ Text[ polish ] = "Zdefiniowane przez u¿ytkownika";
+ Text[ japanese ] = "Õ°»Þ°’è‹`";
+ Text[ chinese_traditional ] = "¦Û­q";
+ Text[ arabic ] = "ãõÚÑÝ ãä ÞÈá ÇáãÓÊÎÏã";
+ Text[ greek ] = "ÐñïóáñìïóìÝíï";
+ Text[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ";
+ Text[ turkish ] = "Kullanýcý tanýmlý";
+ };
+ ListBox LB_DBNUMFORMAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 160 , 113 ) ;
+ Size = MAP_APPFONT ( 88 , 60 ) ;
+ TabStop = TRUE ;
+ AutoHScroll = TRUE ;
+ DropDown = TRUE ;
+ };
+ ListBox LB_DBFORMAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 160 , 113 ) ;
+ Size = MAP_APPFONT ( 88 , 60 ) ;
+ TabStop = TRUE ;
+ AutoHScroll = TRUE ;
+ DropDown = TRUE ;
+ Sort = FALSE ;
+ Hide = TRUE ;
+ };
+ GroupBox GB_DBFORMAT
+ {
+ Pos = MAP_APPFONT ( 88 , 91 ) ;
+ Size = MAP_APPFONT ( 166 , 38 ) ;
+ TEXT = "Format" ;
+ TEXT [ English ] = "Format" ;
+ Text [ english_us ] = "Format" ;
+ Text [ portuguese_brazilian ] = "Format" ;
+ Text [ swedish ] = "Format" ;
+ Text [ danish ] = "Format" ;
+ Text [ italian ] = "Formato" ;
+ Text [ spanish ] = "Formato" ;
+ Text [ french ] = "Format" ;
+ Text [ dutch ] = "Formaat" ;
+ Text [ portuguese ] = "Formato" ;
+ Text[ chinese_simplified ] = "¸ñʽ";
+ Text[ russian ] = "Ôîðìàò";
+ Text[ polish ] = "Format";
+ Text[ japanese ] = "‘Ž®";
+ Text[ chinese_traditional ] = "®æ¦¡";
+ Text[ arabic ] = "ÇáÊäÓíÞ";
+ Text[ greek ] = "ÌïñöÞ";
+ Text[ korean ] = "¼­½Ä";
+ Text[ turkish ] = "Format";
+ };
+ Text [ english_us ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ swedish ] = "Databas" ;
+ Text [ danish ] = "Database" ;
+ Text [ italian ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ french ] = "Base de données" ;
+ Text [ dutch ] = "Database" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text[ chinese_simplified ] = "Êý¾Ý¿â";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "¸ê®Æ®w";
+ Text[ arabic ] = "ÞÇÚÏÉ ÈíÇäÇÊ";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+};
diff --git a/sw/source/ui/fldui/flddinf.cxx b/sw/source/ui/fldui/flddinf.cxx
new file mode 100644
index 000000000000..9ba592230a3e
--- /dev/null
+++ b/sw/source/ui/fldui/flddinf.cxx
@@ -0,0 +1,571 @@
+/*************************************************************************
+ *
+ * $RCSfile: flddinf.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+
+#ifndef _ZFORLIST_HXX //autogen
+#include <svtools/zforlist.hxx>
+#endif
+
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+
+#ifndef _FLDTDLG_HRC
+#include <fldtdlg.hrc>
+#endif
+#ifndef _FLDDINF_HXX
+#include <flddinf.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+
+#define USER_DATA_VERSION_1 "1"
+#define USER_DATA_VERSION USER_DATA_VERSION_1
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldDokInfPage::SwFldDokInfPage(Window* pWindow, const SfxItemSet& rCoreSet ) :
+ SwFldPage( pWindow, SW_RES( TP_FLD_DOKINF ), rCoreSet ),
+
+ aTypeFT (this, SW_RES(FT_DOKINFTYPE)),
+ aTypeTLB (this, SW_RES(TLB_DOKINFTYPE)),
+ aSelectionFT(this, SW_RES(FT_DOKINFSELECTION)),
+ aSelectionLB(this, SW_RES(LB_DOKINFSELECTION)),
+ aFormatFT (this, SW_RES(FT_DOKINFFORMAT)),
+ aFormatLB (this, SW_RES(LB_DOKINFFORMAT)),
+ aFixedCB (this, SW_RES(CB_DOKINFFIXEDCONTENT)),
+
+ aRootOpened (SW_RES(BMP_DOKINFROOT_OPENED)),
+ aRootClosed (SW_RES(BMP_DOKINFROOT_CLOSED)),
+ aInfoStr (SW_RES(STR_DOKINF_INFO)),
+ pSelEntry (0)
+{
+ FreeResource();
+
+ aTypeTLB.SetHelpId(HID_FIELD_DINF_TYPE);
+ aTypeTLB.SetSelectionMode(SINGLE_SELECTION);
+ aTypeTLB.SetWindowBits(WB_HASLINES|WB_CLIPCHILDREN|WB_SORT|WB_HASBUTTONS|WB_HASBUTTONSATROOT|WB_HSCROLL);
+ // Font nicht setzen, damit der Font des Controls uebernommen wird!
+ // Sonst bei falschem Font Bug an OV.
+ aTypeTLB.SetSpaceBetweenEntries(0);
+
+ aTypeTLB.SetNodeBitmaps( aRootOpened, aRootClosed );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+__EXPORT SwFldDokInfPage::~SwFldDokInfPage()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void __EXPORT SwFldDokInfPage::Reset(const SfxItemSet& rSet)
+{
+ Init(); // Allgemeine initialisierung
+
+ // TypeListBox initialisieren
+ aTypeTLB.SetUpdateMode(FALSE);
+ aTypeTLB.Clear();
+ pSelEntry = 0;
+
+ // SubTypes in der TypeLB anzeigen
+ USHORT nTypeId = TYP_DOCINFOFLD;
+ SvLBoxEntry* pEntry = 0;
+
+ SvLBoxEntry* pInfo = 0;
+
+ USHORT nSubType = USHRT_MAX;
+
+ if (IsFldEdit())
+ nSubType = ((SwDocInfoField*)GetCurField())->GetSubType() & 0xff;
+
+ USHORT nSelEntryData = USHRT_MAX;
+ String sUserData = GetUserData();
+ if(sUserData.GetToken(0, ';').EqualsIgnoreCaseAscii(USER_DATA_VERSION_1))
+ {
+ String sVal = sUserData.GetToken(1, ';');
+ nSelEntryData = sVal.ToInt32();
+ }
+
+ SvStringsDtor& rLst = GetFldMgr().GetSubTypes(nTypeId);
+ for (USHORT i = 0; i < rLst.Count(); ++i)
+ {
+ if (!IsFldEdit() || nSubType == i)
+ {
+ if (i >= DI_INFO1 && i <= DI_INFO4)
+ {
+ if (!pInfo && !IsFldEdit())
+ {
+ pInfo = aTypeTLB.InsertEntry(aInfoStr);
+ pInfo->SetUserData((void*)USHRT_MAX);
+ }
+ pEntry = aTypeTLB.InsertEntry(*rLst[i], pInfo);
+ pEntry->SetUserData((void*)i);
+ }
+ else
+ {
+ if (!(IsFldDlgHtmlMode() && (i == DI_EDIT || i == DI_THEMA || i == DI_PRINT)))
+ {
+ pEntry = aTypeTLB.InsertEntry(*rLst[i]);
+ pEntry->SetUserData((void*)i);
+ }
+ }
+ if(nSelEntryData == i)
+ pSelEntry = pEntry;
+ }
+ }
+
+ // alte Pos selektieren
+ if (pSelEntry != 0)
+ {
+ aTypeTLB.Select(pSelEntry);
+ nSubType = (USHORT)(ULONG)pSelEntry->GetUserData();
+ }
+ else
+ {
+ pSelEntry = aTypeTLB.GetEntry(0);
+ nSubType = (USHORT)(ULONG)pSelEntry->GetUserData();
+ }
+
+ FillSelectionLB(nSubType);
+ TypeHdl();
+
+ aTypeTLB.SetUpdateMode(TRUE);
+ aTypeTLB.SetSelectHdl(LINK(this, SwFldDokInfPage, TypeHdl));
+ aTypeTLB.SetDoubleClickHdl(LINK(this, SwFldDokInfPage, InsertHdl));
+ aSelectionLB.SetSelectHdl(LINK(this, SwFldDokInfPage, SubTypeHdl));
+ aSelectionLB.SetDoubleClickHdl(LINK(this, SwFldDokInfPage, InsertHdl));
+ aFormatLB.SetDoubleClickHdl(LINK(this, SwFldDokInfPage, InsertHdl));
+
+ if (IsFldEdit())
+ {
+ nOldSel = aSelectionLB.GetSelectEntryPos();
+ nOldFormat = GetCurField()->GetFormat();
+ aFixedCB.SaveValue();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldDokInfPage, TypeHdl, ListBox *, EMPTYARG )
+{
+ // Alte ListBoxPos sichern
+ SvLBoxEntry* pOldEntry = pSelEntry;
+
+ // Aktuelle ListBoxPos
+ pSelEntry = aTypeTLB.FirstSelected();
+
+ if(!pSelEntry)
+ {
+ pSelEntry = aTypeTLB.GetEntry(0);
+ aTypeTLB.Select(pSelEntry);
+ }
+ else
+
+ if (pOldEntry != pSelEntry)
+ FillSelectionLB((USHORT)(ULONG)pSelEntry->GetUserData());
+
+ SubTypeHdl();
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, pBox )
+{
+ USHORT nSubType = (USHORT)(ULONG)pSelEntry->GetUserData();
+ USHORT nPos = aSelectionLB.GetSelectEntryPos();
+ USHORT nExtSubType;
+
+ if (nSubType != DI_EDIT)
+ {
+ if (nPos == LISTBOX_ENTRY_NOTFOUND)
+ {
+ if (!aSelectionLB.GetEntryCount())
+ {
+ aFormatLB.Clear();
+ aFormatLB.Enable(FALSE);
+ aFormatFT.Enable(FALSE);
+ return 0;
+ }
+ nPos = 0;
+ }
+
+ nExtSubType = (USHORT)(ULONG)aSelectionLB.GetEntryData(nPos);
+ }
+ else
+ nExtSubType = DI_SUB_TIME;
+
+ USHORT nOldType = 0;
+ USHORT nNewType = 0;
+ BOOL bEnable = FALSE;
+ BOOL bOneArea = FALSE;
+
+ if (aFormatLB.IsEnabled())
+ nOldType = aFormatLB.GetFormatType();
+
+ switch (nExtSubType)
+ {
+ case DI_SUB_AUTHOR:
+ break;
+
+ case DI_SUB_DATE:
+ nNewType = NUMBERFORMAT_DATE;
+ bOneArea = TRUE;
+ break;
+
+ case DI_SUB_TIME:
+ nNewType = NUMBERFORMAT_TIME;
+ bOneArea = TRUE;
+ break;
+ }
+
+ if (!nNewType)
+ {
+ aFormatLB.Clear();
+ }
+ else
+ {
+ if (nOldType != nNewType)
+ {
+ aFormatLB.SetFormatType(nNewType);
+ aFormatLB.SetOneArea(bOneArea);
+ }
+ bEnable = TRUE;
+ }
+
+ ULONG nFormat = IsFldEdit() ? ((SwDocInfoField*)GetCurField())->GetFormat() : 0;
+
+ USHORT nOldSubType = IsFldEdit() ? (((SwDocInfoField*)GetCurField())->GetSubType() & 0xff00) : 0;
+
+ if (IsFldEdit())
+ {
+ USHORT nPos = aSelectionLB.GetSelectEntryPos();
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ nSubType = (USHORT)(ULONG)aSelectionLB.GetEntryData(nPos);
+
+ nOldSubType &= ~DI_SUB_FIXED;
+ if (nOldSubType == nSubType)
+ {
+ if (!nFormat && (nNewType == NUMBERFORMAT_DATE || nNewType == NUMBERFORMAT_TIME))
+ {
+ SwWrtShell &rSh = ::GetActiveView()->GetWrtShell();
+ SvNumberFormatter* pFormatter = rSh.GetNumberFormatter();
+ LanguageType eLang = aFormatLB.GetCurLanguage();
+
+ if (nNewType == NUMBERFORMAT_DATE)
+ nFormat = pFormatter->GetFormatIndex( NF_DATE_SYSTEM_SHORT, eLang);
+ else if (nNewType == NUMBERFORMAT_TIME)
+ nFormat = pFormatter->GetFormatIndex( NF_TIME_HHMM, eLang);
+ }
+ aFormatLB.SetDefFormat(nFormat);
+ }
+ }
+ }
+
+ aFormatLB.Enable(bEnable);
+ aFormatFT.Enable(bEnable);
+
+ if (bEnable && aFormatLB.GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND)
+ {
+ aFormatLB.SelectEntryPos(0);
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFldDokInfPage::FillSelectionLB(USHORT nSubType)
+{
+ // Format-Listbox fuellen
+ USHORT nTypeId = TYP_DOCINFOFLD;
+
+ EnableInsert(nSubType != USHRT_MAX);
+
+ if (nSubType == USHRT_MAX) // Info-Text
+ nSubType = DI_INFO1;
+
+ aSelectionLB.Clear();
+
+ USHORT nSize = 0;
+ USHORT nSelPos = USHRT_MAX;
+ USHORT nExtSubType = IsFldEdit() ? (((SwDocInfoField*)GetCurField())->GetSubType() & 0xff00) : 0;
+
+ if (IsFldEdit())
+ {
+ aFixedCB.Check((nExtSubType & DI_SUB_FIXED) != 0);
+ nExtSubType = ((nExtSubType & ~DI_SUB_FIXED) >> 8) - 1;
+ }
+
+ if (nSubType < DI_CREATE || nSubType == DI_DOCNO || nSubType == DI_EDIT)
+ {
+ // Format Box ist fuer Title und Time leer
+ }
+ else
+ {
+ nSize = GetFldMgr().GetFormatCount(nTypeId, FALSE, IsFldDlgHtmlMode());
+ for (USHORT i = 0; i < nSize; i++)
+ {
+ USHORT nPos = aSelectionLB.InsertEntry(GetFldMgr().GetFormatStr(nTypeId, i));
+ aSelectionLB.SetEntryData(nPos, (void*)GetFldMgr().GetFormatId(nTypeId, i));
+ if (IsFldEdit() && i == nExtSubType)
+ nSelPos = nPos;
+ }
+ }
+
+ BOOL bEnable = nSize != 0;
+
+ if (nSize)
+ {
+ if (!aSelectionLB.GetSelectEntryCount())
+ aSelectionLB.SelectEntryPos(nSelPos == USHRT_MAX ? 0 : nSelPos);
+
+ bEnable = TRUE;
+ }
+
+ aSelectionFT.Enable(bEnable);
+ aSelectionLB.Enable(bEnable);
+
+ return nSize;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+BOOL __EXPORT SwFldDokInfPage::FillItemSet(SfxItemSet& rSet)
+{
+ if (!pSelEntry || (USHORT)(ULONG)pSelEntry->GetUserData() == USHRT_MAX)
+ return FALSE;
+
+ USHORT nTypeId = TYP_DOCINFOFLD;
+ USHORT nSubType = (USHORT)(ULONG)pSelEntry->GetUserData();
+
+ ULONG nFormat = 0;
+
+ USHORT nPos = aSelectionLB.GetSelectEntryPos();
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ nSubType |= (USHORT)(ULONG)aSelectionLB.GetEntryData(nPos);
+
+ if (aFixedCB.IsChecked())
+ nSubType |= DI_SUB_FIXED;
+
+ nPos = aFormatLB.GetSelectEntryPos();
+ if(nPos != LISTBOX_ENTRY_NOTFOUND)
+ nFormat = aFormatLB.GetFormat();
+
+ if (!IsFldEdit() || nOldSel != aSelectionLB.GetSelectEntryPos() ||
+ nOldFormat != nFormat || aFixedCB.GetState() != aFixedCB.GetSavedValue())
+ {
+ InsertFld(nTypeId, nSubType, aEmptyStr, aEmptyStr, nFormat);
+ }
+
+ return FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxTabPage* __EXPORT SwFldDokInfPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return ( new SwFldDokInfPage( pParent, rAttrSet ) );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFldDokInfPage::GetGroup()
+{
+ return GRP_REG;
+}
+/* -----------------12.01.99 11:21-------------------
+ *
+ * --------------------------------------------------*/
+void SwFldDokInfPage::FillUserData()
+{
+ String sData( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( USER_DATA_VERSION )));
+ sData += ';';
+ SvLBoxEntry* pEntry = aTypeTLB.FirstSelected();
+ USHORT nTypeSel = pEntry ? (ULONG)pEntry->GetUserData() : USHRT_MAX;
+ sData += String::CreateFromInt32( nTypeSel );
+ SetUserData(sData);
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.21 2000/09/18 16:05:28 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.20 2000/06/30 08:52:52 os
+ #76541# string assertions removed
+
+ Revision 1.19 2000/05/23 18:36:37 jp
+ Bugfixes for Unicode
+
+ Revision 1.18 2000/04/18 15:17:31 os
+ UNICODE
+
+ Revision 1.17 2000/02/11 14:46:08 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.16 1999/02/19 07:48:26 MA
+ #61949# CurrShell gibt es nicht mehr
+
+
+ Rev 1.15 19 Feb 1999 08:48:26 MA
+ #61949# CurrShell gibt es nicht mehr
+
+ Rev 1.14 21 Jan 1999 09:46:24 OS
+ #59900# Fussnoten im Dialog korrekt sortieren; keine prot. Member
+
+ Rev 1.13 12 Jan 1999 11:42:24 OS
+ #60579# ausgewaehlten Typ in den UserData speichern
+
+ Rev 1.12 06 Mar 1998 14:53:52 OM
+ Nur bei Aenderung Feld aktualisieren
+
+ Rev 1.11 25 Feb 1998 16:47:58 OM
+ Fixe Author- und ExtUser-Felder
+
+ Rev 1.10 16 Feb 1998 10:10:22 OM
+ Fuer Solaris nicht direkt von void* auf ushort casten
+
+ Rev 1.9 12 Feb 1998 11:06:02 OM
+ Zahlenformat fuer Docinfofelder
+
+ Rev 1.8 03 Feb 1998 12:21:38 OM
+ #46621# HelpIDs fuer Feldbefehl-Dlg
+
+ Rev 1.7 19 Dec 1997 18:24:30 OM
+ Feldbefehl-bearbeiten Dlg
+
+ Rev 1.6 12 Dec 1997 16:10:06 OM
+ AutoUpdate bei FocusWechsel u.a.
+
+ Rev 1.5 11 Dec 1997 16:58:00 OM
+ Feldumstellung
+
+ Rev 1.4 10 Dec 1997 14:42:08 OM
+ Fixe DocInfoFelder
+
+ Rev 1.3 21 Nov 1997 17:19:46 OM
+ Feldbefehl-Umstellung: DocInfo
+
+ Rev 1.2 20 Nov 1997 17:01:22 OM
+ Neuer Felddialog
+
+ Rev 1.1 05 Nov 1997 15:35:38 OM
+ Neuer Feldbefehldialog
+
+ Rev 1.0 30 Oct 1997 14:30:02 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/fldui/flddinf.hxx b/sw/source/ui/fldui/flddinf.hxx
new file mode 100644
index 000000000000..5a61b627e10b
--- /dev/null
+++ b/sw/source/ui/fldui/flddinf.hxx
@@ -0,0 +1,132 @@
+/*************************************************************************
+ *
+ * $RCSfile: flddinf.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWFLDDINF_HXX
+#define _SWFLDDINF_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 _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SVTREEBOX_HXX //autogen
+#include <svtools/svtreebx.hxx>
+#endif
+
+#include "numfmtlb.hxx"
+#include "fldpage.hxx"
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SwFldDokInfPage : public SwFldPage
+{
+ FixedText aTypeFT;
+ SvTreeListBox aTypeTLB;
+ FixedText aSelectionFT;
+ ListBox aSelectionLB;
+ FixedText aFormatFT;
+ NumFormatListBox aFormatLB;
+ CheckBox aFixedCB;
+
+ SvLBoxEntry* pSelEntry;
+
+ Bitmap aRootOpened;
+ Bitmap aRootClosed;
+ String aInfoStr;
+
+ USHORT nOldSel;
+ ULONG nOldFormat;
+
+ DECL_LINK( TypeHdl, ListBox* pLB = 0 );
+ DECL_LINK( SubTypeHdl, ListBox* pLB = 0 );
+
+ USHORT FillSelectionLB(USHORT nSubTypeId);
+
+protected:
+ virtual USHORT GetGroup();
+
+public:
+ SwFldDokInfPage(Window* pWindow, const SfxItemSet& rSet);
+
+ ~SwFldDokInfPage();
+
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rAttrSet);
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+ virtual void FillUserData();
+};
+
+
+#endif
+
diff --git a/sw/source/ui/fldui/flddinf.src b/sw/source/ui/fldui/flddinf.src
new file mode 100644
index 000000000000..9a968d45c076
--- /dev/null
+++ b/sw/source/ui/fldui/flddinf.src
@@ -0,0 +1,398 @@
+/*************************************************************************
+ *
+ * $RCSfile: flddinf.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "globals.hrc"
+#include "fldtdlg.hrc"
+#include "helpid.h"
+TabPage TP_FLD_DOKINF
+{
+ HelpID = HID_FLD_DOKINF ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Text = "Dokumentinfo" ;
+ Text [ ENGLISH ] = "Document information" ;
+ FixedText FT_DOKINFTYPE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ Text = "~Feldtyp" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "~Tipo di campo" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "Tipo de ~campo" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Felttype" ;
+ Text [ french ] = "~Type de champ" ;
+ Text [ swedish ] = "~Fälttyp" ;
+ Text [ dutch ] = "~Veldtype" ;
+ Text [ spanish ] = "~Tipo de campo" ;
+ Text [ english_us ] = "~Type" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "×Ö¶ÎÀàÐÍ(~T)";
+ Text[ russian ] = "Òèï ïîëÿ";
+ Text[ polish ] = "Typ pola";
+ Text[ japanese ] = "̨°ÙÄÞ‚ÌŽí—Þ(~T)";
+ Text[ chinese_traditional ] = "Ãþ«¬(~T)";
+ Text[ arabic ] = "äæÚ ÇáÍÞá";
+ Text[ greek ] = "~Ôýðïò ðåäßïõ";
+ Text[ korean ] = "ÇüÅÂ(~T)";
+ Text[ turkish ] = "A~lan tipi";
+ Text[ language_user1 ] = " ";
+ };
+ Control TLB_DOKINFTYPE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 16 ) ;
+ Size = MAP_APPFONT ( 76 , 113 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_DOKINFSELECTION
+ {
+ Pos = MAP_APPFONT ( 88 , 3 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ Text = "~Auswahl" ;
+ Text [ ENGLISH ] = "Selection" ;
+ Text [ norwegian ] = "Selection" ;
+ Text [ italian ] = "Selezione" ;
+ Text [ portuguese_brazilian ] = "Seleção" ;
+ Text [ portuguese ] = "~Selecção" ;
+ Text [ finnish ] = "Valinta" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ french ] = "~Sélection" ;
+ Text [ swedish ] = "~Urval" ;
+ Text [ dutch ] = "~Selectie" ;
+ Text [ spanish ] = "Se~lección" ;
+ Text [ english_us ] = "S~elect" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ(~E)";
+ Text[ russian ] = "Âûáîð";
+ Text[ polish ] = "Wybór";
+ Text[ japanese ] = "‘I‘ð(~E)";
+ Text[ chinese_traditional ] = "¿ï¾Ü(~E)";
+ Text[ arabic ] = "ÇáÊÍÏíÏ";
+ Text[ greek ] = "~ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ(~E)";
+ Text[ turkish ] = "S~eçim";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DOKINFSELECTION
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 88 , 16 ) ;
+ Size = MAP_APPFONT ( 76 , 113 ) ;
+ TabStop = TRUE ;
+ StringList =
+ {
+ < "Autor" ; > ;
+ < "Uhrzeit" ; > ;
+ < "Datum" ; > ;
+ < "Datum Zeit Autor" ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "Author" ; > ;
+ < "Time" ; > ;
+ < "Date" ; > ;
+ < "Date Time Author" ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "Autor" ; > ;
+ < "Uhrzeit" ; > ;
+ < "Datum" ; > ;
+ < "Datum Zeit Autor" ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "Författare" ; > ;
+ < "Klockslag" ; > ;
+ < "Datum" ; > ;
+ < "Datum Tid Författare" ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "Forfatter" ; > ;
+ < "Klokkeslæt" ; > ;
+ < "Dato" ; > ;
+ < "Dato Tid Forfatter" ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "Autore" ; > ;
+ < "Orario" ; > ;
+ < "Data" ; > ;
+ < "Data orario autore" ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "Autor" ; > ;
+ < "Hora" ; > ;
+ < "Fecha" ; > ;
+ < "Fecha Hora Autor" ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "Auteur" ; > ;
+ < "Heure" ; > ;
+ < "Date" ; > ;
+ < "Date Heure Auteur" ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "Auteur" ; > ;
+ < "Tijd" ; > ;
+ < "Datum" ; > ;
+ < "Datum Tijd Auteur" ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "Autor" ; > ;
+ < "Horas" ; > ;
+ < "Data" ; > ;
+ < "Data Horas Autor" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "×÷Õß" ; > ;
+ < "ʱ¼ä" ; > ;
+ < "ÈÕÆÚ" ; > ;
+ < "ÈÕÆÚ Ê±¼ä ×÷Õß" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Àâòîð" ; > ;
+ < "Âðåìÿ" ; > ;
+ < "Äàòà" ; > ;
+ < "Äàòà Âðåìÿ Àâòîð" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Autor" ; > ;
+ < "Godzina" ; > ;
+ < "Data" ; > ;
+ < "Data Godzina Autor" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "쬎Ò" ; > ;
+ < "Žž" ; > ;
+ < "“ú•t" ; > ;
+ < "“ú•t@Žž@쬎Ò" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "§@ªÌ" ; > ;
+ < "®É¶¡" ; > ;
+ < "¤é´Á" ; > ;
+ < "¤é´Á ®É¶¡ §@ªÌ" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÇáãÄáÝ" ; > ;
+ < "ÇáæÞÊ" ; > ;
+ < "ÇáÊÇÑíÎ" ; > ;
+ < "ÇáÊÇÑíÎ ÇáæÞÊ ÇáãÄáÝ" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÓõíôÜêôçò" ; > ;
+ < "¿ñá" ; > ;
+ < "Çìåñïìçíßá" ; > ;
+ < "Çìåñïìçíßá ¿ñá ÓõíôÜêôçò" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "ÀÛ¼ºÀÎ" ; > ;
+ < "½Ã°£" ; > ;
+ < "ÀÏÀÚ" ; > ;
+ < "ÀÏÀÚ ½Ã°£ ÀÛ¼ºÀÎ" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Yazan" ; > ;
+ < "Saat" ; > ;
+ < "Tarih" ; > ;
+ < "Tarih Saat Yazan" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ FixedText FT_DOKINFFORMAT
+ {
+ Pos = MAP_APPFONT ( 170 , 3 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ TEXT = "F~ormat" ;
+ TEXT [ English ] = "Format" ;
+ Left = TRUE ;
+ Text [ english_us ] = "F~ormat" ;
+ Text [ portuguese_brazilian ] = "F~ormat" ;
+ Text [ swedish ] = "F~ormat" ;
+ Text [ danish ] = "Format" ;
+ Text [ italian ] = "F~ormato" ;
+ Text [ spanish ] = "F~ormato" ;
+ Text [ french ] = "F~ormat" ;
+ Text [ dutch ] = "F~ormaat" ;
+ Text [ portuguese ] = "F~ormato" ;
+ 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 ] = "F~ormat";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DOKINFFORMAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 16 ) ;
+ Size = MAP_APPFONT ( 84 , 98 ) ;
+ TabStop = TRUE ;
+ AutoHScroll = TRUE ;
+ };
+ CheckBox CB_DOKINFFIXEDCONTENT
+ {
+ Pos = MAP_APPFONT ( 170 , 120 ) ;
+ Size = MAP_APPFONT ( 72 , 10 ) ;
+ TEXT = "~Inhalt fixieren" ;
+ TEXT [ English ] = "Fixed content" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Fi~xed content" ;
+ Text [ portuguese_brazilian ] = "~Inhalt fixieren" ;
+ Text [ swedish ] = "Fixera ~innehåll" ;
+ Text [ danish ] = "Fast indhold" ;
+ Text [ italian ] = "~Fissa il contenuto" ;
+ Text [ spanish ] = "~Fijar contenido" ;
+ Text [ french ] = "Contenu f~ixe" ;
+ Text [ dutch ] = "~Inhoud fixeren" ;
+ Text [ portuguese ] = "~Contéudo fixo" ;
+ Text[ chinese_simplified ] = "¹Ì¶¨ÄÚÈÝ(~X)";
+ Text[ russian ] = "Ôèêñ. ñîäåðæèìîå";
+ Text[ polish ] = "Sta³a treœæ";
+ Text[ japanese ] = "“à—e‚̌Œè(~F)";
+ Text[ chinese_traditional ] = "©T©w¤º®e(~F)";
+ Text[ arabic ] = "ÊËÈíÊ ÇáãÍÊæíÇÊ";
+ Text[ greek ] = "Ðáãßùóç ðåñ~éå÷ïìÝíùí";
+ Text[ korean ] = "³»¿ë °íÁ¤(~X)";
+ Text[ turkish ] = "Ýçeriði sabitle";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap BMP_DOKINFROOT_OPENED
+ {
+ File = "plus.bmp" ;
+ };
+ Bitmap BMP_DOKINFROOT_CLOSED
+ {
+ File = "minus.bmp" ;
+ };
+ String STR_DOKINF_INFO
+ {
+ TEXT = "Info" ;
+ TEXT [ English ] = "Info" ;
+ Text [ english_us ] = "Info" ;
+ Text [ portuguese_brazilian ] = "Info" ;
+ Text [ swedish ] = "Info" ;
+ Text [ danish ] = "Info" ;
+ Text [ italian ] = "Info" ;
+ Text [ spanish ] = "Información" ;
+ Text [ french ] = "Info" ;
+ Text [ dutch ] = "Info" ;
+ Text [ portuguese ] = "Info" ;
+ Text[ chinese_simplified ] = "ÓйØ";
+ Text[ russian ] = "Èíôîðìàöèÿ";
+ Text[ polish ] = "Informacja";
+ Text[ japanese ] = "²ÝÌ«Ò°¼®Ý";
+ Text[ chinese_traditional ] = "Ãö©ó";
+ Text[ arabic ] = "ãÚáæãÇÊ";
+ Text[ greek ] = "Ðëçñïöïñßåò";
+ Text[ korean ] = "Á¤º¸";
+ Text[ turkish ] = "Bilgi";
+ Text[ language_user1 ] = " ";
+ };
+ Text [ english_us ] = "DocInformation" ;
+ Text [ portuguese_brazilian ] = "Dokumentinfo" ;
+ Text [ swedish ] = "Dokumentinfo" ;
+ Text [ danish ] = "Dokumentinfo" ;
+ Text [ italian ] = "Info documento" ;
+ Text [ spanish ] = "Información del documento" ;
+ Text [ french ] = "Info document" ;
+ Text [ dutch ] = "Documentinfo" ;
+ Text [ portuguese ] = "Info. sobre documento" ;
+ Text[ chinese_simplified ] = "ÎĵµÐÅÏ¢";
+ Text[ russian ] = "Ñâåäåíèÿ î äîêóìåíòå";
+ Text[ polish ] = "Informacje o dokumencie";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ ²ÝÌ«Ò°¼®Ý";
+ Text[ chinese_traditional ] = "¤å¥ó¸ê°T";
+ Text[ arabic ] = "ãÚáæãÇÊ ÇáãÓÊäÏ";
+ Text[ greek ] = "Ðëçñïöïñßåò åããñÜöïõ";
+ Text[ korean ] = "µî·ÏÁ¤º¸";
+ Text[ turkish ] = "Belge bilgileri";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/fldui/flddok.cxx b/sw/source/ui/fldui/flddok.cxx
new file mode 100644
index 000000000000..4cf7743f6995
--- /dev/null
+++ b/sw/source/ui/fldui/flddok.cxx
@@ -0,0 +1,872 @@
+/*************************************************************************
+ *
+ * $RCSfile: flddok.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+
+#ifndef _FLDDAT_HXX //autogen
+#include <flddat.hxx>
+#endif
+#ifndef _DOCUFLD_HXX //autogen
+#include <docufld.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _CHPFLD_HXX
+#include <chpfld.hxx>
+#endif
+
+#ifndef _FLDTDLG_HRC
+#include <fldtdlg.hrc>
+#endif
+#ifndef _FLDUI_HRC
+#include <fldui.hrc>
+#endif
+#ifndef _FLDDOK_HXX
+#include <flddok.hxx>
+#endif
+
+#define USER_DATA_VERSION_1 "1"
+#define USER_DATA_VERSION USER_DATA_VERSION_1
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldDokPage::SwFldDokPage(Window* pWindow, const SfxItemSet& rCoreSet ) :
+ SwFldPage( pWindow, SW_RES( TP_FLD_DOK ), rCoreSet ),
+
+ aTypeFT (this, SW_RES(FT_DOKTYPE)),
+ aTypeLB (this, SW_RES(LB_DOKTYPE)),
+ aSelectionFT (this, SW_RES(FT_DOKSELECTION)),
+ aSelectionLB (this, SW_RES(LB_DOKSELECTION)),
+ aValueFT (this, SW_RES(FT_DOKVALUE)),
+ aValueED (this, SW_RES(ED_DOKVALUE)),
+ aLevelED (this, SW_RES(ED_DOKLEVEL)),
+ aDateOffsetED (this, SW_RES(ED_DOKDATEOFF)),
+
+ aFormatFT (this, SW_RES(FT_DOKFORMAT)),
+ aFormatLB (this, SW_RES(LB_DOKFORMAT)),
+ aNumFormatLB (this, SW_RES(LB_DOKNUMFORMAT)),
+ aFixedCB (this, SW_RES(CB_DOKFIXEDCONTENT)),
+
+ sDateOffset (SW_RES(STR_DOKDATEOFF)),
+ sTimeOffset (SW_RES(STR_DOKTIMEOFF)),
+ aRootOpened (SW_RES(BMP_DOKROOT_OPENED)),
+ aRootClosed (SW_RES(BMP_DOKROOT_CLOSED))
+{
+ FreeResource();
+
+ aSelectionLB.SetDoubleClickHdl(LINK(this, SwFldDokPage, InsertHdl));
+ aFormatLB.SetDoubleClickHdl(LINK(this, SwFldDokPage, InsertHdl));
+ aNumFormatLB.SetDoubleClickHdl(LINK(this, SwFldDokPage, NumFormatHdl));
+
+ aLevelED.SetMax(MAXLEVEL);
+ aDateOffsetED.SetMin(LONG_MIN);
+ aDateOffsetED.SetMax(LONG_MAX);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+__EXPORT SwFldDokPage::~SwFldDokPage()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void __EXPORT SwFldDokPage::Reset(const SfxItemSet& rSet)
+{
+ SavePos(&aTypeLB);
+ Init(); // Allgemeine initialisierung
+
+ // TypeListBox initialisieren
+ const SwFldGroupRgn& rRg = GetFldMgr().GetGroupRange(IsFldDlgHtmlMode(), GetGroup());
+
+ aTypeLB.SetUpdateMode(FALSE);
+ aTypeLB.Clear();
+
+ USHORT nPos, nTypeId;
+ BOOL bPage = FALSE;
+
+ if (!IsFldEdit())
+ {
+ // Typ-Listbox fuellen
+ for(short i = rRg.nStart; i < rRg.nEnd; ++i)
+ {
+ nTypeId = GetFldMgr().GetTypeId(i);
+
+ switch (nTypeId)
+ {
+ case TYP_PREVPAGEFLD:
+ case TYP_NEXTPAGEFLD:
+ case TYP_PAGENUMBERFLD:
+ if (!bPage)
+ {
+ nPos = aTypeLB.InsertEntry(SW_RESSTR(FMT_REF_PAGE));
+ aTypeLB.SetEntryData(nPos, (void*)USHRT_MAX);
+ bPage = TRUE;
+ }
+ break;
+
+ default:
+ nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(i));
+ aTypeLB.SetEntryData(nPos, (void*)nTypeId);
+ break;
+ }
+ }
+ }
+ else
+ {
+ nTypeId = GetCurField()->GetTypeId();
+ if (nTypeId == TYP_FIXDATEFLD)
+ nTypeId = TYP_DATEFLD;
+ if (nTypeId == TYP_FIXTIMEFLD)
+ nTypeId = TYP_TIMEFLD;
+ nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(GetFldMgr().GetPos(nTypeId)));
+ aTypeLB.SetEntryData(nPos, (void*)nTypeId);
+ }
+
+ // alte Pos selektieren
+ RestorePos(&aTypeLB);
+
+ aTypeLB.SetUpdateMode(TRUE);
+ aTypeLB.SetDoubleClickHdl(LINK(this, SwFldDokPage, InsertHdl));
+ aTypeLB.SetSelectHdl(LINK(this, SwFldDokPage, TypeHdl));
+ aFormatLB.SetSelectHdl(LINK(this, SwFldDokPage, FormatHdl));
+
+ if( !IsRefresh() )
+ {
+ String sUserData = GetUserData();
+ if( sUserData.GetToken(0, ';').EqualsIgnoreCaseAscii(USER_DATA_VERSION_1 ))
+ {
+ String sVal = sUserData.GetToken(1, ';');
+ USHORT nVal = sVal.ToInt32();
+ if(nVal != USHRT_MAX)
+ {
+ for(USHORT i = 0; i < aTypeLB.GetEntryCount(); i++)
+ if(nVal == (USHORT)(ULONG)aTypeLB.GetEntryData(i))
+ {
+ aTypeLB.SelectEntryPos(i);
+ break;
+ }
+ }
+ }
+ }
+ TypeHdl(0);
+
+ if (IsFldEdit())
+ {
+ nOldSel = aSelectionLB.GetSelectEntryPos();
+ nOldFormat = GetCurField()->GetFormat();
+ aFixedCB.SaveValue();
+ aValueED.SaveValue();
+ aLevelED.SaveValue();
+ aDateOffsetED.SaveValue();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldDokPage, TypeHdl, ListBox *, EMPTYARG )
+{
+ // Alte ListBoxPos sichern
+ const USHORT nOld = GetTypeSel();
+
+ // Aktuelle ListBoxPos
+ SetTypeSel(aTypeLB.GetSelectEntryPos());
+
+ if(GetTypeSel() == LISTBOX_ENTRY_NOTFOUND)
+ {
+ SetTypeSel(0);
+ aTypeLB.SelectEntryPos(0);
+ }
+
+ USHORT nCount;
+
+ if (nOld != GetTypeSel())
+ {
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ // Auswahl-Listbox fuellen
+ aSelectionLB.Clear();
+
+ if (nTypeId != USHRT_MAX)
+ {
+ SvStringsDtor& rLst = GetFldMgr().GetSubTypes(nTypeId);
+
+ if (nTypeId != TYP_AUTHORFLD)
+ nCount = rLst.Count();
+ else
+ nCount = GetFldMgr().GetFormatCount(nTypeId, FALSE, IsFldDlgHtmlMode());
+
+ USHORT nPos;
+
+ for (USHORT i = 0; i < nCount; ++i)
+ {
+ if (!IsFldEdit())
+ {
+ if (nTypeId != TYP_AUTHORFLD)
+ nPos = aSelectionLB.InsertEntry(*rLst[i]);
+ else
+ nPos = aSelectionLB.InsertEntry(GetFldMgr().GetFormatStr(nTypeId, i));
+
+ aSelectionLB.SetEntryData(nPos, (void*)i);
+ }
+ else
+ {
+ BOOL bInsert = FALSE;
+
+ switch (nTypeId)
+ {
+ case TYP_DATEFLD:
+ case TYP_TIMEFLD:
+ nPos = aSelectionLB.InsertEntry(*rLst[i]);
+ aSelectionLB.SetEntryData(nPos, (void*)i);
+ if (((SwDateTimeField*)GetCurField())->IsFixed() && !i)
+ aSelectionLB.SelectEntryPos(nPos);
+ if (!((SwDateTimeField*)GetCurField())->IsFixed() && i)
+ aSelectionLB.SelectEntryPos(nPos);
+ break;
+
+ case TYP_EXTUSERFLD:
+ case TYP_DOCSTATFLD:
+ nPos = aSelectionLB.InsertEntry(*rLst[i]);
+ aSelectionLB.SetEntryData(nPos, (void*)i);
+ if (GetCurField()->GetSubType() == i)
+ aSelectionLB.SelectEntryPos(nPos);
+ break;
+
+ case TYP_AUTHORFLD:
+ {
+ String sFmt(GetFldMgr().GetFormatStr(nTypeId, i));
+ nPos = aSelectionLB.InsertEntry(sFmt);
+ aSelectionLB.SetEntryData(nPos, (void*)i);
+ aSelectionLB.SelectEntry(GetFldMgr().GetFormatStr(nTypeId, GetCurField()->GetFormat()));
+ break;
+ }
+
+ default:
+ if (*rLst[i] == GetCurField()->GetPar1())
+ bInsert = TRUE;
+ break;
+ }
+ if (bInsert)
+ {
+ nPos = aSelectionLB.InsertEntry(*rLst[i]);
+ aSelectionLB.SetEntryData(nPos, (void*)i);
+ break;
+ }
+ }
+ }
+ aSelectionLB.SetSelectHdl(Link());
+ }
+ else
+ {
+ AddSubType(TYP_PAGENUMBERFLD);
+ AddSubType(TYP_PREVPAGEFLD);
+ AddSubType(TYP_NEXTPAGEFLD);
+ nTypeId = (USHORT)(ULONG)aSelectionLB.GetEntryData(0);
+ nCount = 3;
+ aSelectionLB.SetSelectHdl(LINK(this, SwFldDokPage, SubTypeHdl));
+ }
+
+ BOOL bEnable = nCount != 0;
+
+ if (bEnable && !aSelectionLB.GetSelectEntryCount())
+ aSelectionLB.SelectEntryPos(0);
+
+ aSelectionLB.Enable( bEnable );
+ aSelectionFT.Enable( bEnable );
+
+ // Format-Listbox fuellen
+ USHORT nSize = FillFormatLB(nTypeId);
+
+ BOOL bValue = FALSE, bLevel = FALSE, bNumFmt = FALSE, bOffset = FALSE;
+ BOOL bFormat = nSize != 0;
+ BOOL bOneArea = FALSE;
+ BOOL bFixed = FALSE;
+ USHORT nFmtType = 0;
+
+ switch (nTypeId)
+ {
+ case TYP_DATEFLD:
+ bFormat = bNumFmt = bOneArea = bOffset = TRUE;
+
+ nFmtType = NUMBERFORMAT_DATE;
+ aValueFT.SetText(sDateOffset);
+ aDateOffsetED.SetFirst(-31); // Ein Monat
+ aDateOffsetED.SetLast(31);
+
+ if (IsFldEdit())
+ aDateOffsetED.SetValue( ((SwDateTimeField*)GetCurField())->GetOffset() / 24 / 60);
+ break;
+
+ case TYP_TIMEFLD:
+ bFormat = bNumFmt = bOneArea = bOffset = TRUE;
+
+ nFmtType = NUMBERFORMAT_TIME;
+ aValueFT.SetText(sTimeOffset);
+ aDateOffsetED.SetFirst(-1440); // Ein Tag
+ aDateOffsetED.SetLast(1440);
+
+ if (IsFldEdit())
+ aDateOffsetED.SetValue( ((SwDateTimeField*)GetCurField())->GetOffset() );
+ break;
+
+ case TYP_PREVPAGEFLD:
+ case TYP_NEXTPAGEFLD:
+ if (IsFldEdit())
+ {
+ USHORT nTmp = (USHORT)(ULONG)aFormatLB.GetEntryData(
+ aFormatLB.GetSelectEntryPos() );
+ String sOldTxt(aValueFT.GetText());
+
+ if (FMT_NUM_PAGESPECIAL - FMT_NUM_BEGIN != nTmp)
+ {
+ short nOff = GetCurField()->GetPar2().ToInt32();
+ if( TYP_NEXTPAGEFLD == nTypeId && 1 != nOff )
+ aValueED.SetText( nOff - 1 );
+ else if( TYP_PREVPAGEFLD == nTypeId && -1 != nOff )
+ aValueED.SetText( nOff + 1 );
+ else
+ aValueED.SetText(aEmptyStr);
+ }
+ else
+ aValueED.SetText(((SwPageNumberField*)GetCurField())->GetUserString());
+ }
+ bValue = TRUE;
+ break;
+
+ case TYP_CHAPTERFLD:
+ aValueFT.SetText(SW_RESSTR(STR_LEVEL));
+ if (IsFldEdit())
+ aLevelED.SetText(String::CreateFromInt32(((SwChapterField*)GetCurField())->GetLevel() + 1));
+ bLevel = TRUE;
+ break;
+
+ case TYP_PAGENUMBERFLD:
+ aValueFT.SetText( SW_RESSTR( STR_OFFSET ));
+ if (IsFldEdit())
+ aValueED.SetText(GetCurField()->GetPar2());
+ bValue = TRUE;
+ break;
+
+ case TYP_EXTUSERFLD:
+ case TYP_AUTHORFLD:
+ case TYP_FILENAMEFLD:
+ bFixed = TRUE;
+ break;
+
+ default:
+ break;
+ }
+
+ if (bNumFmt)
+ {
+ if (IsFldEdit())
+ {
+ aNumFormatLB.SetDefFormat(GetCurField()->GetFormat());
+
+ if (aNumFormatLB.GetFormatType() == (NUMBERFORMAT_DATE|NUMBERFORMAT_TIME))
+ {
+ // Format-Typ immer einstellen, da sonst bei kombinierten Datum/Zeitformaten
+ // beide Formate gleichzeitig angezeigt werden wuerden
+ aNumFormatLB.SetFormatType(0);
+ aNumFormatLB.SetFormatType(nFmtType);
+ // Nochmal richtiges Format einstellen
+ aNumFormatLB.SetDefFormat(GetCurField()->GetFormat());
+ }
+ }
+ else
+ aNumFormatLB.SetFormatType(nFmtType);
+
+ aNumFormatLB.SetOneArea(bOneArea);
+ }
+
+ aFormatLB.Show(!bNumFmt);
+ aNumFormatLB.Show(bNumFmt);
+
+ Size aSz(aFormatLB.GetSizePixel());
+
+ if (bValue | bLevel | bOffset)
+ aSz.Height() = aFormatLB.LogicToPixel(Size(1, 82), MAP_APPFONT).Height();
+ else
+ aSz.Height() = aFormatLB.LogicToPixel(Size(1, 98), MAP_APPFONT).Height();
+
+ aValueFT.Show(bValue | bLevel | bOffset);
+ aValueED.Show(bValue);
+ aLevelED.Show(bLevel);
+ aDateOffsetED.Show(bOffset);
+ aFixedCB.Show(!bValue && !bLevel && !bOffset);
+
+ aFormatLB.SetSizePixel(aSz);
+ aNumFormatLB.SetSizePixel(aSz);
+
+ aFormatLB.Enable(bFormat);
+ aFormatFT.Enable(bFormat);
+ aFixedCB.Enable(bFixed);
+
+ if (IsFldEdit())
+ aFixedCB.Check(((GetCurField()->GetFormat() & AF_FIXED) != 0) & bFixed);
+
+ if (aNumFormatLB.GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND)
+ aNumFormatLB.SelectEntryPos(0);
+ aValueFT.Enable(bValue | bLevel | bOffset);
+ aValueED.Enable(bValue);
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFldDokPage::AddSubType(USHORT nTypeId)
+{
+ USHORT nPos = aSelectionLB.InsertEntry(*SwFieldType::GetFldNames()->GetObject(nTypeId));
+ aSelectionLB.SetEntryData(nPos, (void*)nTypeId);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldDokPage, SubTypeHdl, ListBox *, EMPTYARG )
+{
+ USHORT nPos = aSelectionLB.GetSelectEntryPos();
+ if(nPos == LISTBOX_ENTRY_NOTFOUND)
+ nPos = 0;
+
+ USHORT nTypeId = (USHORT)(ULONG)aSelectionLB.GetEntryData(nPos);
+ FillFormatLB(nTypeId);
+
+ USHORT nTextRes = 0;
+ switch (nTypeId)
+ {
+ case TYP_CHAPTERFLD:
+ nTextRes = STR_LEVEL;
+ break;
+
+ case TYP_PREVPAGEFLD:
+ case TYP_NEXTPAGEFLD:
+ nTextRes = SVX_NUM_CHAR_SPECIAL == (USHORT)(ULONG)aFormatLB.GetEntryData(
+ aFormatLB.GetSelectEntryPos() )
+ ? STR_VALUE : STR_OFFSET;
+ break;
+
+ case TYP_PAGENUMBERFLD:
+ nTextRes = STR_OFFSET;
+ break;
+ }
+
+ if( nTextRes )
+ aValueFT.SetText( SW_RESSTR( nTextRes ));
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFldDokPage::FillFormatLB(USHORT nTypeId)
+{
+ // Format-Listbox fuellen
+ aFormatLB.Clear();
+
+ if (nTypeId == TYP_AUTHORFLD)
+ return aFormatLB.GetEntryCount();
+
+ USHORT nSize = GetFldMgr().GetFormatCount(nTypeId, FALSE, IsFldDlgHtmlMode());
+
+ for( USHORT i = 0; i < nSize; ++i )
+ {
+ USHORT nPos = aFormatLB.InsertEntry(GetFldMgr().GetFormatStr(nTypeId, i));
+ USHORT nFmtId = GetFldMgr().GetFormatId( nTypeId, i );
+ aFormatLB.SetEntryData( nPos, (void*)nFmtId );
+ if (IsFldEdit() && nFmtId == (GetCurField()->GetFormat() & ~AF_FIXED))
+ aFormatLB.SelectEntryPos( nPos );
+ }
+
+ if( nSize && !aFormatLB.GetSelectEntryCount() )
+ {
+ aFormatLB.SelectEntry( SW_RESSTR(FMT_NUM_PAGEDESC) );
+ if( !aFormatLB.GetSelectEntryCount() )
+ {
+ aFormatLB.SelectEntry( SW_RESSTR(FMT_NUM_ARABIC) );
+ if( !aFormatLB.GetSelectEntryCount() )
+ aFormatLB.SelectEntryPos( 0 );
+ }
+ }
+
+ FormatHdl();
+
+ return nSize;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldDokPage, FormatHdl, ListBox *, EMPTYARG )
+{
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ if (nTypeId == USHRT_MAX)
+ {
+ USHORT nPos = aSelectionLB.GetSelectEntryPos();
+ if(nPos == LISTBOX_ENTRY_NOTFOUND)
+ nPos = 0;
+
+ nTypeId = (USHORT)(ULONG)aSelectionLB.GetEntryData(nPos);
+ }
+
+ if (nTypeId == TYP_NEXTPAGEFLD || nTypeId == TYP_PREVPAGEFLD)
+ {
+ // Prev/Next - PageNumFelder Sonderbehandlung:
+ USHORT nTmp = (USHORT)(ULONG)aFormatLB.GetEntryData(
+ aFormatLB.GetSelectEntryPos() );
+ String sOldTxt( aValueFT.GetText() );
+ String sNewTxt( SW_RES( SVX_NUM_CHAR_SPECIAL == nTmp ? STR_VALUE
+ : STR_OFFSET ));
+
+ if( sOldTxt != sNewTxt )
+ aValueFT.SetText( sNewTxt );
+
+ if (sOldTxt != aValueFT.GetText())
+ aValueED.SetText( aEmptyStr );
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+BOOL __EXPORT SwFldDokPage::FillItemSet(SfxItemSet& rSet)
+{
+ BOOL bPage = FALSE;
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ if (nTypeId == USHRT_MAX)
+ {
+ USHORT nPos = aSelectionLB.GetSelectEntryPos();
+ if(nPos == LISTBOX_ENTRY_NOTFOUND)
+ nPos = 0;
+ nTypeId = (USHORT)(ULONG)aSelectionLB.GetEntryData(nPos);
+ bPage = TRUE;
+ }
+
+ String aVal(aValueED.GetText());
+ ULONG nFormat = 0;
+ USHORT nSubType = 0;
+
+ if (aFormatLB.IsEnabled())
+ {
+ USHORT nPos = aFormatLB.GetSelectEntryPos();
+ if(nPos != LISTBOX_ENTRY_NOTFOUND)
+ nFormat = (USHORT)(ULONG)aFormatLB.GetEntryData(nPos);
+ }
+
+ if (aSelectionLB.IsEnabled())
+ {
+ USHORT nPos = aSelectionLB.GetSelectEntryPos();
+ if(nPos != LISTBOX_ENTRY_NOTFOUND)
+ nSubType = (USHORT)(ULONG)aSelectionLB.GetEntryData(nPos);
+ }
+
+ switch (nTypeId)
+ {
+ case TYP_AUTHORFLD:
+ nFormat = nSubType;
+ nSubType = 0;
+ // kein break!
+ case TYP_EXTUSERFLD:
+ nFormat |= aFixedCB.IsChecked() ? AF_FIXED : 0;
+ break;
+
+ case TYP_FILENAMEFLD:
+ nFormat |= aFixedCB.IsChecked() ? FF_FIXED : 0;
+ break;
+
+ case TYP_DATEFLD:
+ case TYP_TIMEFLD:
+ {
+ nFormat = aNumFormatLB.GetFormat();
+ long nVal = aDateOffsetED.GetValue();
+ if (nTypeId == TYP_DATEFLD)
+ aVal = String::CreateFromInt32(nVal * 60 * 24);
+ else
+ aVal = String::CreateFromInt32(nVal);
+ break;
+ }
+
+ case TYP_NEXTPAGEFLD:
+ case TYP_PREVPAGEFLD:
+ case TYP_PAGENUMBERFLD:
+ case TYP_GETREFPAGEFLD:
+ {
+ if( SVX_NUM_CHAR_SPECIAL != nFormat &&
+ (TYP_PREVPAGEFLD == nTypeId || TYP_NEXTPAGEFLD == nTypeId))
+ {
+ short nVal = aValueED.GetText().ToInt32();
+ aVal = String::CreateFromInt32(nVal);
+ }
+ break;
+ }
+
+ case TYP_CHAPTERFLD:
+ aVal = aLevelED.GetText();
+ break;
+
+ default:
+ break;
+ }
+
+ if (!IsFldEdit() ||
+ nOldSel != aSelectionLB.GetSelectEntryPos() ||
+ nOldFormat != nFormat ||
+ aFixedCB.GetState() != aFixedCB.GetSavedValue() ||
+ aValueED.GetText() != aValueED.GetSavedValue() ||
+ aLevelED.GetText() != aLevelED.GetSavedValue() ||
+ aDateOffsetED.GetText() != aDateOffsetED.GetSavedValue())
+ {
+ InsertFld( nTypeId, nSubType, aEmptyStr, aVal, nFormat );
+ }
+
+ return FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxTabPage* __EXPORT SwFldDokPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return ( new SwFldDokPage( pParent, rAttrSet ) );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFldDokPage::GetGroup()
+{
+ return GRP_DOC;
+}
+
+/* -----------------12.01.99 10:09-------------------
+ *
+ * --------------------------------------------------*/
+void SwFldDokPage::FillUserData()
+{
+ String sData( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( USER_DATA_VERSION )));
+ sData += ';';
+ USHORT nTypeSel = aTypeLB.GetSelectEntryPos();
+ if( LISTBOX_ENTRY_NOTFOUND == nTypeSel )
+ nTypeSel = USHRT_MAX;
+ else
+ nTypeSel = (ULONG)aTypeLB.GetEntryData( nTypeSel );
+ sData += String::CreateFromInt32( nTypeSel );
+ SetUserData(sData);
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.36 2000/09/18 16:05:28 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.35 2000/08/23 11:33:25 os
+ CreateFromInt32
+
+ Revision 1.34 2000/06/30 08:52:52 os
+ #76541# string assertions removed
+
+ Revision 1.33 2000/05/23 18:36:41 jp
+ Bugfixes for Unicode
+
+ Revision 1.32 2000/04/18 15:17:31 os
+ UNICODE
+
+ Revision 1.31 2000/02/24 17:57:26 hr
+ #73447#: removed temporary
+
+ Revision 1.30 2000/02/11 14:46:18 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.29 1999/03/23 09:51:34 OS
+ #61673# Reihenfolge der Seitenfelder besser
+
+
+ Rev 1.28 23 Mar 1999 10:51:34 OS
+ #61673# Reihenfolge der Seitenfelder besser
+
+ Rev 1.27 25 Feb 1999 17:24:50 JP
+ Bug #62438#: UserData nur auswerten, wenn kein Refresh ist
+
+ Rev 1.26 21 Jan 1999 09:50:36 OS
+ #59900# Fussnoten im Dialog korrekt sortieren; keine prot. Member
+
+ Rev 1.25 12 Jan 1999 11:42:24 OS
+ #60579# ausgewaehlten Typ in den UserData speichern
+
+ Rev 1.24 17 Nov 1998 10:50:38 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.23 04 Nov 1998 12:11:06 OM
+ #58851# Fixe Dateinamenfelder bearbeiten
+
+ Rev 1.22 27 Oct 1998 15:53:24 OM
+ #58427# Fixes FilenameField
+
+ Rev 1.21 10 Aug 1998 16:39:58 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.20 20 May 1998 15:59:52 OM
+ Kombinierte DateTime-Formate verarbeiten
+
+ Rev 1.19 20 May 1998 13:24:22 OM
+ Offset fuer DateTimeFields
+
+ Rev 1.18 03 Apr 1998 13:16:48 OM
+ #49062 Spinbutton fuer Kapitelebenen
+
+ Rev 1.17 26 Mar 1998 17:00:28 OM
+ Feldbefehl: Seitenanzahl im Html-Mode
+
+ Rev 1.16 26 Mar 1998 16:43:10 OM
+ Feldbefehl: Seitenanzahl im Html-Mode
+
+ Rev 1.15 06 Mar 1998 15:38:30 OM
+ Nur bei Aenderung Feld aktualisieren
+
+ Rev 1.14 25 Feb 1998 16:47:58 OM
+ Fixe Author- und ExtUser-Felder
+
+ Rev 1.13 16 Feb 1998 10:10:22 OM
+ Fuer Solaris nicht direkt von void* auf ushort casten
+
+ Rev 1.12 12 Feb 1998 13:58:24 OM
+ #47262# Offset loeschen
+
+ Rev 1.11 14 Jan 1998 10:30:26 OM
+ Kapitelfeldebene bearbeiten
+
+ Rev 1.10 09 Jan 1998 16:56:50 OM
+ Bei Dok-Wechsel updaten
+
+ Rev 1.9 08 Jan 1998 14:58:24 OM
+ Traveling
+
+ Rev 1.8 07 Jan 1998 17:17:42 OM
+ Referenzen editieren
+
+ Rev 1.7 05 Jan 1998 17:44:34 OM
+ DB-Feldbefehl bearbeiten
+
+ Rev 1.6 19 Dec 1997 18:24:30 OM
+ Feldbefehl-bearbeiten Dlg
+
+ Rev 1.5 12 Dec 1997 16:10:06 OM
+ AutoUpdate bei FocusWechsel u.a.
+
+ Rev 1.4 11 Dec 1997 16:58:00 OM
+ Feldumstellung
+
+ Rev 1.3 20 Nov 1997 17:01:22 OM
+ Neuer Felddialog
+
+ Rev 1.2 07 Nov 1997 16:39:32 OM
+ NumberFormat-Listbox
+
+ Rev 1.1 05 Nov 1997 15:35:40 OM
+ Neuer Feldbefehldialog
+
+ Rev 1.0 04 Nov 1997 10:07:18 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/fldui/flddok.hxx b/sw/source/ui/fldui/flddok.hxx
new file mode 100644
index 000000000000..066071f63efa
--- /dev/null
+++ b/sw/source/ui/fldui/flddok.hxx
@@ -0,0 +1,141 @@
+/*************************************************************************
+ *
+ * $RCSfile: flddok.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWFLDDOK_HXX
+#define _SWFLDDOK_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 _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#include "numfmtlb.hxx"
+#include "fldpage.hxx"
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SwFldDokPage : public SwFldPage
+{
+ FixedText aTypeFT;
+ ListBox aTypeLB;
+ FixedText aSelectionFT;
+ ListBox aSelectionLB;
+ FixedText aValueFT;
+ Edit aValueED;
+ NumericField aLevelED;
+ NumericField aDateOffsetED;
+ FixedText aFormatFT;
+ ListBox aFormatLB;
+ NumFormatListBox aNumFormatLB;
+ CheckBox aFixedCB;
+
+ String sDateOffset;
+ String sTimeOffset;
+ Bitmap aRootOpened;
+ Bitmap aRootClosed;
+
+ USHORT nOldSel;
+ ULONG nOldFormat;
+
+ DECL_LINK( TypeHdl, ListBox* pLB = 0 );
+ DECL_LINK( FormatHdl, ListBox* pLB = 0 );
+ DECL_LINK( SubTypeHdl, ListBox* pLB = 0 );
+
+ void AddSubType(USHORT nTypeId);
+ USHORT FillFormatLB(USHORT nTypeId);
+
+protected:
+ virtual USHORT GetGroup();
+
+public:
+ SwFldDokPage(Window* pWindow, const SfxItemSet& rSet);
+
+ ~SwFldDokPage();
+
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rAttrSet);
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+ virtual void FillUserData();
+};
+
+
+#endif
+
diff --git a/sw/source/ui/fldui/flddok.src b/sw/source/ui/fldui/flddok.src
new file mode 100644
index 000000000000..2e7afc5a0444
--- /dev/null
+++ b/sw/source/ui/fldui/flddok.src
@@ -0,0 +1,367 @@
+/*************************************************************************
+ *
+ * $RCSfile: flddok.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "globals.hrc"
+#include "fldtdlg.hrc"
+#include "helpid.h"
+TabPage TP_FLD_DOK
+{
+ HelpID = HID_FLD_DOK ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Text = "Dokument" ;
+ Text [ ENGLISH ] = "Document" ;
+ FixedText FT_DOKTYPE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ Text = "~Feldtyp" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "~Tipo di campo" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "~Tipo" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Felttype" ;
+ Text [ french ] = "~Type de champ" ;
+ Text [ swedish ] = "~Fälttyp" ;
+ Text [ dutch ] = "~Veldtype" ;
+ Text [ spanish ] = "~Tipo de campo" ;
+ Text [ english_us ] = "~Type" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "×Ö¶ÎÀàÐÍ(~T)";
+ Text[ russian ] = "Òèï ïîëÿ";
+ Text[ polish ] = "Typ pola";
+ Text[ japanese ] = "̨°ÙÄÞ‚ÌŽí—Þ(~T)";
+ Text[ chinese_traditional ] = "Ãþ«¬(~T)";
+ Text[ arabic ] = "äæÚ ÇáÍÞá";
+ Text[ greek ] = "~Ôýðïò ðåäßïõ";
+ Text[ korean ] = "ÇüÅÂ(~T)";
+ Text[ turkish ] = "~Alan tipi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DOKTYPE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 16 ) ;
+ Size = MAP_APPFONT ( 76 , 113 ) ;
+ TabStop = TRUE ;
+ Sort = TRUE ;
+ AutoHScroll = TRUE ;
+ };
+ FixedText FT_DOKSELECTION
+ {
+ Pos = MAP_APPFONT ( 88 , 3 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ Text = "~Auswahl" ;
+ Text [ ENGLISH ] = "Selection" ;
+ Text [ norwegian ] = "Selection" ;
+ Text [ italian ] = "Selezione" ;
+ Text [ portuguese_brazilian ] = "Seleção" ;
+ Text [ portuguese ] = "~Selecção" ;
+ Text [ finnish ] = "Valinta" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ french ] = "~Sélection" ;
+ Text [ swedish ] = "Urv~al" ;
+ Text [ dutch ] = "~Selectie" ;
+ Text [ spanish ] = "Se~lección" ;
+ Text [ english_us ] = "S~elect" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ(~E)";
+ Text[ russian ] = "Âûáîð";
+ Text[ polish ] = "Wybór";
+ Text[ japanese ] = "‘I‘ð(~E)";
+ Text[ chinese_traditional ] = "¿ï¨ú(~E)";
+ Text[ arabic ] = "ÇáÊÍÏíÏ";
+ Text[ greek ] = "~ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ(~E)";
+ Text[ turkish ] = "~Seçim";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DOKSELECTION
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 88 , 16 ) ;
+ Size = MAP_APPFONT ( 76 , 113 ) ;
+ // Keine Sortierung auf Wunsch von MA (wg. Absender)
+ // Sort = TRUE;
+ TabStop = TRUE ;
+ };
+ FixedText FT_DOKFORMAT
+ {
+ Pos = MAP_APPFONT ( 170 , 3 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ TEXT = "F~ormat" ;
+ TEXT [ English ] = "Format" ;
+ Left = TRUE ;
+ Text [ english_us ] = "F~ormat" ;
+ Text [ portuguese_brazilian ] = "F~ormat" ;
+ Text [ swedish ] = "F~ormat" ;
+ Text [ danish ] = "Format" ;
+ Text [ italian ] = "F~ormato" ;
+ Text [ spanish ] = "F~ormato" ;
+ Text [ french ] = "F~ormat" ;
+ Text [ dutch ] = "~Notatie" ;
+ Text [ portuguese ] = "F~ormato" ;
+ 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 ] = "F~ormat";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DOKFORMAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 16 ) ;
+ // Size = MAP_APPFONT ( 84 , 82 ) ;
+ Size = MAP_APPFONT ( 84 , 98 ) ;
+ TabStop = TRUE ;
+ DropDown = FALSE ;
+ Sort = TRUE ;
+ AutoHScroll = TRUE ;
+ };
+ ListBox LB_DOKNUMFORMAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 16 ) ;
+ // Size = MAP_APPFONT ( 84 , 82 ) ;
+ Size = MAP_APPFONT ( 84 , 98 ) ;
+ TabStop = TRUE ;
+ AutoHScroll = TRUE ;
+ Hide = TRUE ;
+ };
+ FixedText FT_DOKVALUE
+ {
+ Pos = MAP_APPFONT ( 170 , 105 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ TEXT = "Ko~rrektur" ;
+ TEXT [ English ] = "Offs~et" ;
+ TEXT [ norwegian ] = "Offset" ;
+ TEXT [ italian ] = "~Correzione" ;
+ TEXT [ portuguese_brazilian ] = "Deslocar" ;
+ TEXT [ portuguese ] = "~Correcção" ;
+ TEXT [ finnish ] = "Siirroa" ;
+ TEXT [ danish ] = "Korrektion" ;
+ TEXT [ french ] = "C~orrecture" ;
+ TEXT [ swedish ] = "Ko~rrigering" ;
+ TEXT [ dutch ] = "~Correctie" ;
+ TEXT [ spanish ] = "~Corrección" ;
+ TEXT [ english_us ] = "O~ffset" ;
+ Left = TRUE ;
+ Hide = TRUE ;
+ TEXT[ chinese_simplified ] = "ÐÞ¸Ä(~F)";
+ TEXT[ russian ] = "Êîððåêòèðîâêà";
+ TEXT[ polish ] = "Korekta";
+ TEXT[ japanese ] = "C³(~F)";
+ TEXT[ chinese_traditional ] = "­×§ï(~F)";
+ TEXT[ arabic ] = "ÇáÊÕÍíÍ";
+ TEXT[ greek ] = "Äéüñèùóç";
+ TEXT[ korean ] = "¼öÁ¤(~F)";
+ TEXT[ turkish ] = "Düzeltme";
+ TEXT[ language_user1 ] = " ";
+ };
+ Edit ED_DOKVALUE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 117 ) ;
+ Size = MAP_APPFONT ( 84 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Hide = TRUE ;
+ };
+ NumericField ED_DOKLEVEL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 117 ) ;
+ Size = MAP_APPFONT ( 84 , 12 ) ;
+ Text = "1" ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Hide = TRUE ;
+ Minimum = 1 ;
+ Maximum = 10 ;
+ First = 1 ;
+ SpinSize = 1 ;
+ };
+ NumericField ED_DOKDATEOFF
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 117 ) ;
+ Size = MAP_APPFONT ( 84 , 12 ) ;
+ Text = "0" ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Hide = TRUE ;
+ SpinSize = 1 ;
+ };
+ CheckBox CB_DOKFIXEDCONTENT
+ {
+ Pos = MAP_APPFONT ( 170 , 120 ) ;
+ Size = MAP_APPFONT ( 72 , 10 ) ;
+ TEXT = "~Inhalt fixieren" ;
+ TEXT [ English ] = "Fixed content" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Fixed content" ;
+ Text [ portuguese_brazilian ] = "~Inhalt fixieren" ;
+ Text [ swedish ] = "Fixera ~innehåll" ;
+ Text [ danish ] = "Fast indhold" ;
+ Text [ italian ] = "~Fissa il contenuto" ;
+ Text [ spanish ] = "~Fijar contenido" ;
+ Text [ french ] = "Contenu f~ixe" ;
+ Text [ dutch ] = "~Inhoud fixeren" ;
+ Text [ portuguese ] = "Conteúdo ~fixo" ;
+ Text[ chinese_simplified ] = "¹Ì¶¨ÄÚÈÝ(~F)";
+ Text[ russian ] = "Çàôèêñèðîâàòü ñîäåðæàíèå";
+ Text[ polish ] = "Sta³a treœæ";
+ Text[ japanese ] = "“à—e‚̌Œè(~F)";
+ Text[ chinese_traditional ] = "©T©w¤º®e(~F)";
+ Text[ arabic ] = "ÊËÈíÊ ÇáãÍÊæíÇÊ";
+ Text[ greek ] = "Ðáãßùóç ðåñ~éå÷ïìÝíùí";
+ Text[ korean ] = "³»¿ë °íÁ¤(~F)";
+ Text[ turkish ] = "Ýçeriði sabitle";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap BMP_DOKROOT_OPENED
+ {
+ File = "plus.bmp" ;
+ };
+ Bitmap BMP_DOKROOT_CLOSED
+ {
+ File = "minus.bmp" ;
+ };
+ String STR_DOKDATEOFF
+ {
+ TEXT = "Ko~rrektur in Tagen" ;
+ TEXT [ English ] = "Offs~et in days" ;
+ Text [ english_us ] = "Offs~et in days" ;
+ Text [ portuguese_brazilian ] = "Ko~rrektur in Tagen" ;
+ Text [ swedish ] = "Ko~rrigering i dagar" ;
+ Text [ danish ] = "Korrektion i dage" ;
+ Text [ italian ] = "Correzione in ~giorni" ;
+ Text [ spanish ] = "~Corrección en días" ;
+ Text [ french ] = "Co~rrection en jours" ;
+ Text [ dutch ] = "Co~rrectie in dagen" ;
+ Text [ portuguese ] = "Co~rrecção em dias" ;
+ Text[ chinese_simplified ] = "ÐÞ¸ÄÌìÊý(~E)";
+ Text[ russian ] = "Êîððåêòèðîâêà äíåé";
+ Text[ polish ] = "Korekta dni";
+ Text[ japanese ] = "“ú‚ÌC³(~E)";
+ Text[ chinese_traditional ] = "­×§ï¤é´Áªº¤Ñ¼Æ(~E)";
+ Text[ arabic ] = "ÇáÊÕÍíÍ ÈÇáÃíÇã";
+ Text[ greek ] = "Äéüñèùóç óå çìÝñåò";
+ Text[ korean ] = "¸çÄ¥ ¾È¿¡ ¼öÁ¤(~E)";
+ Text[ turkish ] = "Düzeltme (gün)";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DOKTIMEOFF
+ {
+ TEXT = "Ko~rrektur in Minuten" ;
+ TEXT [ English ] = "Offs~et in minutes" ;
+ Text [ english_us ] = "Offs~et in minutes" ;
+ Text [ portuguese_brazilian ] = "Ko~rrektur in Minuten" ;
+ Text [ swedish ] = "Ko~rrigering i minuter" ;
+ Text [ danish ] = "Korrektion i minutter" ;
+ Text [ italian ] = "Co~rrezione in minuti" ;
+ Text [ spanish ] = "~Corrección en minutos" ;
+ Text [ french ] = "Co~rrection en minutes" ;
+ Text [ dutch ] = "Co~rrectie in minuten" ;
+ Text [ portuguese ] = "Co~rrecção em minutos" ;
+ Text[ chinese_simplified ] = "Ð޸ķÖÖÓÉ趨(~E)";
+ Text[ russian ] = "Êîððåêòèðîâêà ìèíóò";
+ Text[ polish ] = "Korekta minut";
+ Text[ japanese ] = "•ª‚ÌC³(~E)";
+ Text[ chinese_traditional ] = "­×§ï¤ÀÄÁ³]©w(~E)";
+ Text[ arabic ] = "ÇáÊÕÍíÍ ÈÇáÏÞÇÆÞ";
+ Text[ greek ] = "Äéüñèùóç óå ëåðôÜ";
+ Text[ korean ] = "¸î ºÐ³» ¼öÁ¤(~E)";
+ Text[ turkish ] = "Düzeltme (dakika)";
+ Text[ language_user1 ] = " ";
+ };
+ Text [ english_us ] = "Document" ;
+ Text [ portuguese_brazilian ] = "Dokument" ;
+ Text [ swedish ] = "Dokument" ;
+ Text [ danish ] = "Dokument" ;
+ Text [ italian ] = "Documento" ;
+ Text [ spanish ] = "Documento" ;
+ Text [ french ] = "Document" ;
+ Text [ dutch ] = "Document" ;
+ Text [ portuguese ] = "Documento" ;
+ Text[ chinese_simplified ] = "Îĵµ";
+ Text[ russian ] = "Äîêóìåíò";
+ Text[ polish ] = "Dokument";
+ Text[ japanese ] = "•¶‘";
+ Text[ chinese_traditional ] = "¤å¥ó";
+ Text[ arabic ] = "ÇáãÓÊäÏ";
+ Text[ greek ] = "¸ããñáöï";
+ Text[ korean ] = "¹®¼­";
+ Text[ turkish ] = "Belge";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/fldui/fldedt.cxx b/sw/source/ui/fldui/fldedt.cxx
new file mode 100644
index 000000000000..5677a70c11da
--- /dev/null
+++ b/sw/source/ui/fldui/fldedt.cxx
@@ -0,0 +1,505 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldedt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SVX_ADRITEM_HXX //autogen
+#include <svx/adritem.hxx>
+#endif
+#ifndef _SVX_OPTGENRL_HXX //autogen
+#include <svx/optgenrl.hxx>
+#endif
+
+#ifndef _ADDRDLG_HXX
+#include <addrdlg.hxx>
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _FINDER_HXX
+#include <finder.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _DBFLD_HXX
+#include <dbfld.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _FLDDB_HXX
+#include <flddb.hxx>
+#endif
+#ifndef _FLDDINF_HXX
+#include <flddinf.hxx>
+#endif
+#ifndef _FLDVAR_HXX
+#include <fldvar.hxx>
+#endif
+#ifndef _FLDDOK_HXX
+#include <flddok.hxx>
+#endif
+#ifndef _FLDFUNC_HXX
+#include <fldfunc.hxx>
+#endif
+#ifndef _FLDREF_HXX
+#include <fldref.hxx>
+#endif
+#ifndef _FLDEDT_HXX
+#include <fldedt.hxx>
+#endif
+
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _FLDUI_HRC
+#include <fldui.hrc>
+#endif
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldEditDlg::SwFldEditDlg(SwView& rVw) :
+ SfxSingleTabDialog(&rVw.GetViewFrame()->GetWindow(), 0, 0),
+ pSh (rVw.GetWrtShellPtr()),
+ aAddressBT (this, SW_RES(PB_FLDEDT_ADDRESS)),
+ aPrevBT (this, SW_RES(BTN_FLDEDT_PREV)),
+ aNextBT (this, SW_RES(BTN_FLDEDT_NEXT))
+{
+ SwFldMgr aMgr(pSh);
+
+ SwField *pCurFld = aMgr.GetCurFld();
+ if(!pCurFld)
+ return;
+
+ pSh->SetCareWin(this);
+ pSh->Right(TRUE);
+ pSh->SwapPam();
+ USHORT nGroup = aMgr.GetGroup(FALSE, pCurFld->GetTypeId(), pCurFld->GetSubType());
+
+ CreatePage(nGroup);
+
+ GetOKButton()->SetClickHdl(LINK(this, SwFldEditDlg, OKHdl));
+
+ // Buttons selbst positionieren, da sie sonst bei unterschiedlichen
+ // Fontgroessen im Wald stehen, und da PB im SingleTabDlg feste Pixelgroessen
+ // fuer seine Buttons und die Dialogbreite verwendet.
+ aPrevBT.SetPosPixel(Point(GetOKButton()->GetPosPixel().X(), aPrevBT.GetPosPixel().Y()));
+ USHORT nWidth = GetOKButton()->GetOutputSize().Width() / 2 - 3;
+ Size aNewSize(LogicToPixel(Size(nWidth, GetOKButton()->GetOutputSize().Height())));
+ aPrevBT.SetSizePixel(aNewSize);
+
+ aNextBT.SetSizePixel(aPrevBT.GetSizePixel());
+
+ long nXPos = GetOKButton()->GetPosPixel().X() + GetOKButton()->GetSizePixel().Width()
+ - aNextBT.GetSizePixel().Width() - 1;
+ aNextBT.SetPosPixel(Point(nXPos, aNextBT.GetPosPixel().Y()));
+
+ aAddressBT.SetPosPixel(Point(GetOKButton()->GetPosPixel().X(), aAddressBT.GetPosPixel().Y()));
+ aAddressBT.SetSizePixel(GetOKButton()->GetSizePixel());
+
+ aPrevBT.SetClickHdl(LINK(this, SwFldEditDlg, NextPrevHdl));
+ aNextBT.SetClickHdl(LINK(this, SwFldEditDlg, NextPrevHdl));
+
+ aAddressBT.SetClickHdl(LINK(this, SwFldEditDlg, AddressHdl));
+ aAddressBT.SetHelpId(HID_FLDEDT_ADDRESS);
+
+ Init();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Controlls initialisieren
+ --------------------------------------------------------------------*/
+
+void SwFldEditDlg::Init()
+{
+ SwFldPage* pPage = (SwFldPage*)GetTabPage();
+
+ if( pPage )
+ {
+ SwFldMgr& rMgr = pPage->GetFldMgr();
+
+ SwField *pCurFld = rMgr.GetCurFld();
+
+ if(!pCurFld)
+ return;
+
+ // Traveling nur bei mehr als einem Feld
+ pSh->StartAction();
+ pSh->CreateCrsr();
+
+ BOOL bMove = rMgr.GoNext();
+ if( bMove )
+ rMgr.GoPrev();
+ aNextBT.Enable(bMove);
+
+ if( 0 != ( bMove = rMgr.GoPrev() ) )
+ rMgr.GoNext();
+ aPrevBT.Enable( bMove );
+
+ if (pCurFld->GetTypeId() == TYP_EXTUSERFLD)
+ aAddressBT.Show();
+
+ pSh->DestroyCrsr();
+ pSh->EndAction();
+ }
+
+ GetOKButton()->Enable( !pSh->IsReadOnlyAvailable() ||
+ !pSh->HasReadonlySel() );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxTabPage* SwFldEditDlg::CreatePage(USHORT nGroup)
+{
+ // TabPage erzeugen
+ SfxTabPage* pPage = 0;
+ USHORT nHelpId = 0;
+
+ switch (nGroup)
+ {
+ case GRP_DOC:
+ pPage = SwFldDokPage::Create(this, *(SfxItemSet*)0);
+ nHelpId = HID_EDIT_FLD_DOK;
+ break;
+ case GRP_FKT:
+ pPage = SwFldFuncPage::Create(this, *(SfxItemSet*)0);
+ nHelpId = HID_EDIT_FLD_FUNC;
+ break;
+ case GRP_REF:
+ pPage = SwFldRefPage::Create(this, *(SfxItemSet*)0);
+ nHelpId = HID_EDIT_FLD_REF;
+ break;
+ case GRP_REG:
+ pPage = SwFldDokInfPage::Create(this, *(SfxItemSet*)0);
+ nHelpId = HID_EDIT_FLD_DOKINF;
+ break;
+ case GRP_DB:
+ pPage = SwFldDBPage::Create(this, *(SfxItemSet*)0);
+ nHelpId = HID_EDIT_FLD_DB;
+ break;
+ case GRP_VAR:
+ pPage = SwFldVarPage::Create(this, *(SfxItemSet*)0);
+ nHelpId = HID_EDIT_FLD_VAR;
+ break;
+
+ }
+ pPage->SetHelpId(nHelpId);
+ SetTabPage(pPage);
+
+ String sTitle(GetText());
+ sTitle.Insert(String::CreateFromAscii(": "), 0);
+ sTitle.Insert(SW_RESSTR(STR_FLD_EDIT_DLG), 0);
+ SetText(sTitle);
+
+ return pPage;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldEditDlg::~SwFldEditDlg()
+{
+ pSh->SetCareWin(NULL);
+ pSh->EnterStdMode();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFldEditDlg::EnableInsert(BOOL bEnable)
+{
+ if( bEnable && pSh->IsReadOnlyAvailable() && pSh->HasReadonlySel() )
+ bEnable = FALSE;
+ GetOKButton()->Enable( bEnable );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFldEditDlg::InsertHdl()
+{
+ GetOKButton()->Click();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Aendern des Feldes anstossen
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldEditDlg, OKHdl, Button *, pBtn )
+{
+ if (GetOKButton()->IsEnabled())
+ {
+ SfxTabPage* pPage = GetTabPage();
+ if (pPage)
+ {
+ pPage->FillItemSet(*(SfxItemSet*)0);
+
+ }
+ EndDialog( RET_OK );
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+short SwFldEditDlg::Execute()
+{
+ // Ohne TabPage kein Dialog
+ return GetTabPage() ? Dialog::Execute() : RET_CANCEL;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Traveling zwishen Feldern gleichen Typs
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldEditDlg, NextPrevHdl, Button *, pButton )
+{
+ BOOL bNext = pButton == &aNextBT;
+
+ pSh->EnterStdMode();
+
+ SwFieldType *pOldTyp = 0;
+ SwFldPage* pPage = (SwFldPage*)GetTabPage();
+ SwFldMgr& rMgr = pPage->GetFldMgr();
+ SwField *pCurFld = rMgr.GetCurFld();
+
+ if (pCurFld->GetTypeId() == TYP_DBFLD)
+ pOldTyp = (SwDBFieldType*)pCurFld->GetTyp();
+
+ if( GetOKButton()->IsEnabled() )
+ pPage->FillItemSet(*(SfxItemSet*)0);
+
+ rMgr.GoNextPrev( bNext, pOldTyp );
+ pCurFld = rMgr.GetCurFld();
+ pSh->Right(TRUE);
+ pSh->SwapPam();
+
+ USHORT nGroup = rMgr.GetGroup(FALSE, pCurFld->GetTypeId(), pCurFld->GetSubType());
+
+ if (nGroup != pPage->GetGroup())
+ pPage = (SwFldPage*)CreatePage(nGroup);
+
+ pPage->EditNewField();
+
+ Init();
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldEditDlg, AddressHdl, PushButton *, pButton )
+{
+ SwFldPage* pPage = (SwFldPage*)GetTabPage();
+ SwFldMgr& rMgr = pPage->GetFldMgr();
+ SwField *pCurFld = rMgr.GetCurFld();
+
+ SfxItemSet aSet( pSh->GetAttrPool(),
+ SID_ATTR_ADDRESS, SID_ATTR_ADDRESS,
+ SID_FIELD_GRABFOCUS, SID_FIELD_GRABFOCUS,
+ 0L );
+ SvxAddressItem aAddress( pPathFinder->GetAddress() );
+ aSet.Put(aAddress);
+ USHORT nEditPos = UNKNOWN_EDIT;
+
+ switch(pCurFld->GetSubType())
+ {
+ case EU_FIRSTNAME: nEditPos = FIRSTNAME_EDIT; break;
+ case EU_NAME: nEditPos = LASTNAME_EDIT; break;
+ case EU_SHORTCUT: nEditPos = SHORTNAME_EDIT; break;
+ case EU_COMPANY: nEditPos = COMPANY_EDIT; break;
+ case EU_STREET: nEditPos = STREET_EDIT; break;
+ case EU_TITLE: nEditPos = TITLE_EDIT; break;
+ case EU_POSITION: nEditPos = POSITION_EDIT; break;
+ case EU_PHONE_PRIVATE:nEditPos = TELPRIV_EDIT; break;
+ case EU_PHONE_COMPANY:nEditPos = TELCOMPANY_EDIT; break;
+ case EU_FAX: nEditPos = FAX_EDIT; break;
+ case EU_EMAIL: nEditPos = EMAIL_EDIT; break;
+ case EU_COUNTRY: nEditPos = COUNTRY_EDIT; break;
+ case EU_ZIP: nEditPos = PLZ_EDIT; break;
+ case EU_CITY: nEditPos = CITY_EDIT; break;
+ case EU_STATE: nEditPos = STATE_EDIT; break;
+
+ default: nEditPos = UNKNOWN_EDIT; break;
+
+ }
+ aSet.Put(SfxUInt16Item(SID_FIELD_GRABFOCUS, nEditPos));
+ SwAddrDlg aDlg( this, aSet );
+ aDlg.Execute();
+ const SfxItemSet* pSfxItemSet = aDlg.GetOutputItemSet();
+ const SvxAddressItem* pAddrItem;
+
+ if( pSfxItemSet && SFX_ITEM_SET == pSfxItemSet->GetItemState(SID_ATTR_ADDRESS,
+ FALSE, (const SfxPoolItem**)&pAddrItem) )
+ {
+ pPathFinder->SetAddress( (SvxAddressItem&)*pAddrItem );
+ pSh->UpdateFlds( *pCurFld );
+ }
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.146 2000/09/18 16:05:28 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.145 2000/05/10 11:55:12 os
+ Basic API removed
+
+ Revision 1.144 2000/04/18 15:17:31 os
+ UNICODE
+
+ Revision 1.143 2000/02/11 14:46:27 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.142 1999/09/21 14:05:23 os
+ SwExtUserSubType: language
+
+ Revision 1.141 1999/01/20 13:16:52 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+
+ Rev 1.140 20 Jan 1999 14:16:52 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.139 15 Oct 1998 16:02:48 OM
+ #57965# Variablennamen fuer Eingabefeld verwenden
+
+ Rev 1.138 19 Aug 1998 17:22:12 JP
+ Bug #55247#: fuers MoveNext-/-PrevFldType einen eigenen Pam verwenden
+
+ Rev 1.137 15 Jun 1998 13:07:50 OM
+ #50908# Positionskorrektur der Imagebuttons
+
+ Rev 1.136 08 Apr 1998 09:48:52 OM
+ #47470 Neue HelpIDs beim bearbeiten von Felbefehlen
+
+ Rev 1.135 06 Mar 1998 14:53:52 OM
+ Nur bei Aenderung Feld aktualisieren
+
+ Rev 1.134 03 Mar 1998 15:26:56 OM
+ Feld beim traveln selektieren
+
+ Rev 1.133 25 Feb 1998 16:56:48 OM
+ Fixe Author- und ExtUser-Felder
+
+ Rev 1.132 06 Feb 1998 14:17:04 OM
+ #47145# Buttongroesse anpassen
+
+ Rev 1.131 09 Jan 1998 16:56:50 OM
+ Bei Dok-Wechsel updaten
+
+ Rev 1.130 08 Jan 1998 16:16:26 OM
+ Traveling
+
+ Rev 1.129 08 Jan 1998 13:36:20 OM
+ Feldbefehl-Traveling
+
+ Rev 1.128 08 Jan 1998 12:56:24 OM
+ Feldbefehl-Traveling
+
+ Rev 1.127 16 Dec 1997 17:01:40 OM
+ Feldbefehle bearbeiten
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/fldui/fldfunc.cxx b/sw/source/ui/fldui/fldfunc.cxx
new file mode 100644
index 000000000000..06bea4663cda
--- /dev/null
+++ b/sw/source/ui/fldui/fldfunc.cxx
@@ -0,0 +1,779 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldfunc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+
+#ifndef _BASOBJ_HXX //autogen
+#include <basctl/basobj.hxx>
+#endif
+
+#ifndef _BASMGR_HXX //autogen
+#include <basic/basmgr.hxx>
+#endif
+
+#ifndef _SB_SBSTAR_HXX //autogen
+#include <basic/sbstar.hxx>
+#endif
+
+#ifndef _SB_SBMOD_HXX //autogen
+#include <basic/sbmod.hxx>
+#endif
+
+#ifndef _SWDOCSH_HXX //autogen
+#include <docsh.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _FLDFUNC_HXX
+#include <fldfunc.hxx>
+#endif
+
+#ifndef _FLDUI_HRC
+#include <fldui.hrc>
+#endif
+#ifndef _FLDTDLG_HRC
+#include <fldtdlg.hrc>
+#endif
+
+#define USER_DATA_VERSION_1 "1"
+#define USER_DATA_VERSION USER_DATA_VERSION_1
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldFuncPage::SwFldFuncPage(Window* pParent, const SfxItemSet& rCoreSet ) :
+ SwFldPage( pParent, SW_RES( TP_FLD_FUNC ), rCoreSet ),
+
+ aTypeFT (this, SW_RES(FT_FUNCTYPE)),
+ aTypeLB (this, SW_RES(LB_FUNCTYPE)),
+ aSelectionFT(this, SW_RES(FT_FUNCSELECTION)),
+ aSelectionLB(this, SW_RES(LB_FUNCSELECTION)),
+ aFormatFT (this, SW_RES(FT_FUNCFORMAT)),
+ aFormatLB (this, SW_RES(LB_FUNCFORMAT)),
+ aNameFT (this, SW_RES(FT_FUNCNAME)),
+ aNameED (this, SW_RES(ED_FUNCNAME)),
+ aValueFT (this, SW_RES(FT_FUNCVALUE)),
+ aValueED (this, SW_RES(ED_FUNCVALUE)),
+ aCond1FT (this, SW_RES(FT_FUNCCOND1)),
+ aCond1ED (this, SW_RES(ED_FUNCCOND1)),
+ aCond2FT (this, SW_RES(FT_FUNCCOND2)),
+ aCond2ED (this, SW_RES(ED_FUNCCOND2)),
+ aMacroBT (this, SW_RES(BT_FUNCMACRO))
+{
+ FreeResource();
+
+ aNameED.SetPosPixel(Point(aNameED.GetPosPixel().X(), aFormatLB.GetPosPixel().Y()));
+
+ sOldValueFT = aValueFT.GetText();
+ sOldNameFT = aNameFT.GetText();
+
+ aCond1ED.ShowBrackets(FALSE);
+ aCond2ED.ShowBrackets(FALSE);
+
+// SwWrtShell* pSh = (SwWrtShell*)ViewShell::GetCurrShell();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+__EXPORT SwFldFuncPage::~SwFldFuncPage()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void __EXPORT SwFldFuncPage::Reset(const SfxItemSet& rSet)
+{
+ SavePos(&aTypeLB);
+ Init(); // Allgemeine initialisierung
+
+ aTypeLB.SetUpdateMode(FALSE);
+ aTypeLB.Clear();
+
+ USHORT nPos, nTypeId;
+ BOOL bPage = FALSE;
+
+ if (!IsFldEdit())
+ {
+ // TypeListBox initialisieren
+ const SwFldGroupRgn& rRg = GetFldMgr().GetGroupRange(IsFldDlgHtmlMode(), GetGroup());
+
+ // Typ-Listbox fuellen
+ for(short i = rRg.nStart; i < rRg.nEnd; ++i)
+ {
+ nTypeId = GetFldMgr().GetTypeId(i);
+ nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(i));
+ aTypeLB.SetEntryData(nPos, (void*)nTypeId);
+ }
+ }
+ else
+ {
+ nTypeId = GetCurField()->GetTypeId();
+ nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(GetFldMgr().GetPos(nTypeId)));
+ aTypeLB.SetEntryData(nPos, (void*)nTypeId);
+
+ if (nTypeId == TYP_MACROFLD)
+ {
+ String sName(GetCurField()->GetPar1());
+ BasicManager *pBasMgr = 0;
+ GetFldMgr().SetMacroModule(0);
+
+ if (sName.GetToken( 0, '.') == SFX_APP()->GetName())
+ pBasMgr = SFX_APP()->GetBasicManager();
+ else
+ {
+ SwWrtShell *pSh = ::GetActiveView()->GetWrtShellPtr();
+ pBasMgr = pSh->GetView().GetDocShell()->GetBasicManager();
+ }
+
+ if (pBasMgr)
+ {
+ String sLibName(sName.GetToken(1, '.'));
+ StarBASIC* pBasic = pBasMgr->GetLib(sLibName);
+
+ if (pBasic)
+ {
+ SbModule* pModule = BasicIDE::FindModule( pBasic, sName.GetToken( 2, '.') );
+ GetFldMgr().SetMacroModule(pModule);
+ }
+ }
+
+ if (sName.Len())
+ {
+ // Inhalt von sName umdrehen
+ String sBuf;
+ String sTmp;
+ USHORT nPos = 0;
+ USHORT nCount = sName.GetTokenCount('.');
+
+ for (int i = nCount - 1; i >= nCount - 4; i--)
+ {
+ if (i == nCount - 4)
+ {
+ nPos = 0;
+ sName.GetToken(i, '.', nPos);
+ sTmp = sName.Copy(0, nPos - 1);
+ }
+ else
+ {
+ sTmp = sName.GetToken(i, '.');
+ sTmp += '.';
+ }
+
+ sBuf += sTmp;
+ }
+
+ sName = sBuf;
+ }
+
+ GetFldMgr().SetMacroPath(sName);
+ }
+ }
+
+ // alte Pos selektieren
+ RestorePos(&aTypeLB);
+
+ aTypeLB.SetDoubleClickHdl (LINK(this, SwFldFuncPage, InsertHdl));
+ aTypeLB.SetSelectHdl (LINK(this, SwFldFuncPage, TypeHdl));
+ aSelectionLB.SetSelectHdl (LINK(this, SwFldFuncPage, SelectHdl));
+ aSelectionLB.SetDoubleClickHdl (LINK(this, SwFldFuncPage, InsertMacroHdl));
+ aFormatLB.SetDoubleClickHdl (LINK(this, SwFldFuncPage, InsertHdl));
+ aMacroBT.SetClickHdl (LINK(this, SwFldFuncPage, MacroHdl));
+
+ if( !IsRefresh() )
+ {
+ String sUserData = GetUserData();
+ if(sUserData.GetToken(0, ';').EqualsIgnoreCaseAscii(USER_DATA_VERSION_1))
+ {
+ String sVal = sUserData.GetToken(1, ';');
+ USHORT nVal = sVal.ToInt32();
+ if(nVal != USHRT_MAX)
+ {
+ for(USHORT i = 0; i < aTypeLB.GetEntryCount(); i++)
+ if(nVal == (USHORT)(ULONG)aTypeLB.GetEntryData(i))
+ {
+ aTypeLB.SelectEntryPos(i);
+ break;
+ }
+ }
+ }
+ }
+ TypeHdl(0);
+
+ aTypeLB.SetUpdateMode(TRUE);
+
+ if (IsFldEdit())
+ {
+ aNameED.SaveValue();
+ aValueED.SaveValue();
+ aCond1ED.SaveValue();
+ aCond2ED.SaveValue();
+ nOldFormat = GetCurField()->GetFormat();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldFuncPage, TypeHdl, ListBox *, pBox )
+{
+ // Alte ListBoxPos sichern
+ const USHORT nOld = GetTypeSel();
+
+ // Aktuelle ListBoxPos
+ SetTypeSel(aTypeLB.GetSelectEntryPos());
+
+ if(GetTypeSel() == LISTBOX_ENTRY_NOTFOUND)
+ {
+ SetTypeSel(0);
+ aTypeLB.SelectEntryPos(0);
+ }
+
+ if (nOld != GetTypeSel())
+ {
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ // Auswahl-Listbox fuellen
+ UpdateSubType();
+
+ // Format-Listbox fuellen
+ aFormatLB.Clear();
+
+ USHORT nSize = GetFldMgr().GetFormatCount(nTypeId, FALSE, IsFldDlgHtmlMode());
+
+ for (USHORT i = 0; i < nSize; i++)
+ {
+ USHORT nPos = aFormatLB.InsertEntry(GetFldMgr().GetFormatStr(nTypeId, i));
+ aFormatLB.SetEntryData( nPos, (void*)GetFldMgr().GetFormatId( nTypeId, i ) );
+ }
+
+ if (nSize)
+ {
+ if (IsFldEdit() && nTypeId == TYP_JUMPEDITFLD)
+ aFormatLB.SelectEntry(SW_RESSTR(FMT_MARK_BEGIN + (USHORT)GetCurField()->GetFormat()));
+
+ if (!aFormatLB.GetSelectEntryCount())
+ aFormatLB.SelectEntryPos(0);
+ }
+
+ BOOL bValue = FALSE, bName = FALSE, bMacro = FALSE, bInsert = TRUE;
+ BOOL bShowSelection = FALSE;
+ BOOL bFormat = nSize != 0;
+
+ // fuer Conditional Text zwei Controls
+ if(nTypeId != TYP_CONDTXTFLD)
+ {
+ aCond1FT.Hide();
+ aCond1ED.Hide();
+ aCond2FT.Hide();
+ aCond2ED.Hide();
+ aValueFT.Show();
+ aValueED.Show();
+ }
+ aNameED.EnableDrop(FALSE);
+
+ if (IsFldEdit())
+ {
+ aNameED.SetText(GetCurField()->GetPar1());
+ aValueED.SetText(GetCurField()->GetPar2());
+ }
+ else
+ {
+ aNameED.SetText(aEmptyStr);
+ aValueED.SetText(aEmptyStr);
+ }
+
+ if (aNameFT.GetText() != sOldNameFT)
+ aNameFT.SetText(sOldNameFT);
+ if (aValueFT.GetText() != sOldValueFT)
+ aValueFT.SetText(sOldValueFT);
+
+ switch (nTypeId)
+ {
+ case TYP_MACROFLD:
+ bMacro = TRUE;
+ bShowSelection = TRUE;
+ if (GetFldMgr().GetMacroPath().Len())
+ bValue = TRUE;
+ else
+ bInsert = FALSE;
+
+ aNameFT.SetText(SW_RESSTR(STR_MACNAME));
+ aValueFT.SetText(SW_RESSTR(STR_PROMPT));
+ aNameED.SetText(aSelectionLB.GetSelectEntry());
+ break;
+
+ case TYP_HIDDENPARAFLD:
+ aNameFT.SetText(SW_RESSTR(STR_COND));
+ aNameED.EnableDrop(TRUE);
+ bName = TRUE;
+ break;
+
+ case TYP_HIDDENTXTFLD:
+ aNameFT.SetText(SW_RESSTR(STR_COND));
+ aNameED.EnableDrop(TRUE);
+ aValueFT.SetText(SW_RESSTR(STR_INSTEXT));
+ if (!IsFldEdit())
+ aValueED.SetText(::GetActiveView()->GetWrtShell().GetSelTxt());
+ bName = bValue = TRUE;
+ break;
+
+ case TYP_CONDTXTFLD:
+ aNameFT.SetText(SW_RESSTR(STR_COND));
+ aNameED.EnableDrop(TRUE);
+ if (IsFldEdit())
+ {
+ aCond1ED.SetText(GetCurField()->GetPar2().GetToken(0, '|'));
+ aCond2ED.SetText(GetCurField()->GetPar2().GetToken(1, '|'));
+ }
+
+ bName = bValue = TRUE;
+
+ aCond1FT.Show();
+ aCond1ED.Show();
+ aCond2FT.Show();
+ aCond2ED.Show();
+ aValueFT.Hide();
+ aValueED.Hide();
+ break;
+
+ case TYP_JUMPEDITFLD:
+ aNameFT.SetText(SW_RESSTR(STR_JUMPEDITFLD));
+ aValueFT.SetText(SW_RESSTR(STR_PROMPT));
+ bName = bValue = TRUE;
+ break;
+
+ case TYP_INPUTFLD:
+ aValueFT.SetText(SW_RESSTR(STR_PROMPT));
+ bValue = TRUE;
+ // bShowSelection = TRUE;
+ break;
+
+ default:
+ break;
+ }
+
+ if (bShowSelection)
+ {
+ aSelectionLB.Show();
+ aSelectionFT.Show();
+ aFormatLB.Hide();
+ aFormatFT.Hide();
+ }
+ else
+ {
+ aFormatLB.Show();
+ aFormatFT.Show();
+ aSelectionLB.Hide();
+ aSelectionFT.Hide();
+ }
+
+ aFormatLB.Enable(bFormat);
+ aFormatFT.Enable(bFormat);
+ aNameFT.Enable(bName);
+ aNameED.Enable(bName);
+ aValueFT.Enable(bValue);
+ aValueED.Enable(bValue);
+ aMacroBT.Enable(bMacro);
+
+ EnableInsert(bInsert);
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldFuncPage, SelectHdl, ListBox *, pBox )
+{
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ if (nTypeId == TYP_MACROFLD)
+ aNameED.SetText(aSelectionLB.GetSelectEntry());
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldFuncPage, InsertMacroHdl, ListBox *, pBox )
+{
+ SelectHdl();
+ InsertHdl();
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Typen in der SelectionBox erneuern
+ --------------------------------------------------------------------*/
+
+
+void SwFldFuncPage::UpdateSubType()
+{
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ // Auswahl-Listbox fuellen
+ aSelectionLB.SetUpdateMode(FALSE);
+ aSelectionLB.Clear();
+
+ SvStringsDtor& rLst = GetFldMgr().GetSubTypes(nTypeId);
+ USHORT nCount = rLst.Count();
+
+ for (USHORT i = 0; i < nCount; ++i)
+ {
+ USHORT nPos = aSelectionLB.InsertEntry(*rLst[i]);
+ aSelectionLB.SetEntryData(nPos, (void*)i);
+ }
+
+ BOOL bEnable = nCount != 0;
+
+ aSelectionLB.Enable( bEnable );
+ aSelectionFT.Enable( bEnable );
+
+ if (bEnable)
+ {
+ if (nTypeId == TYP_MACROFLD)
+ {
+ BOOL bHasMacro = GetFldMgr().GetMacroPath().Len() != 0;
+
+ if (bHasMacro)
+ {
+ aSelectionLB.SelectEntry(GetFldMgr().GetMacroPath());
+ aNameED.SetText(aSelectionLB.GetSelectEntry());
+ aValueFT.Enable();
+ aValueED.Enable();
+ }
+ EnableInsert(bHasMacro);
+ }
+ else
+ aSelectionLB.SelectEntryPos(0);
+ }
+ aSelectionLB.SetUpdateMode(TRUE);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: MacroBrowser aufrufen, Listbox mit Macros fuellen
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldFuncPage, MacroHdl, Button *, pBtn )
+{
+ Window* pDefModalDlgParent = Application::GetDefDialogParent();
+ Application::SetDefDialogParent( pBtn );
+
+ String sMacro(TurnMacroString(aNameED.GetText()));
+ while (sMacro.SearchAndReplace('.', ';') != STRING_NOTFOUND);
+
+ if (GetFldMgr().ChooseMacro(sMacro))
+ UpdateSubType();
+
+ Application::SetDefDialogParent( pDefModalDlgParent );
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+BOOL __EXPORT SwFldFuncPage::FillItemSet(SfxItemSet& rSet)
+{
+ BOOL bPage = FALSE;
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ USHORT nSubType = 0;
+
+ ULONG nFormat = aFormatLB.GetSelectEntryPos();
+
+ if(nFormat == LISTBOX_ENTRY_NOTFOUND)
+ nFormat = 0;
+ else
+ nFormat = (ULONG)aFormatLB.GetEntryData((USHORT)nFormat);
+
+ String aVal(aValueED.GetText());
+ String aName(aNameED.GetText());
+
+ switch(nTypeId)
+ {
+ case TYP_INPUTFLD:
+ nSubType = INP_TXT;
+ break;
+
+ case TYP_MACROFLD:
+ aName = TurnMacroString(aName);
+ break;
+
+ case TYP_CONDTXTFLD:
+ aVal = aCond1ED.GetText();
+ aVal += '|';
+ aVal += aCond2ED.GetText();
+ break;
+
+ default:
+ break;
+ }
+
+ if (!IsFldEdit() ||
+ aNameED.GetSavedValue() != aNameED.GetText() ||
+ aValueED.GetSavedValue() != aValueED.GetText() ||
+ aCond1ED.GetSavedValue() != aCond1ED.GetText() ||
+ aCond2ED.GetSavedValue() != aCond2ED.GetText() ||
+ nOldFormat != nFormat)
+ {
+ InsertFld( nTypeId, nSubType, aName, aVal, nFormat );
+ }
+
+ return FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+String SwFldFuncPage::TurnMacroString(const String &rMacro)
+{
+ if (rMacro.Len())
+ {
+ // Inhalt von aName umdrehen
+ String sTmp, sBuf;
+ USHORT nPos = 0;
+
+ for (USHORT i = 0; i < 4 && nPos != STRING_NOTFOUND; i++)
+ {
+ if (i == 3)
+ sTmp = rMacro.Copy(nPos);
+ else
+ sTmp = rMacro.GetToken(0, '.', nPos);
+
+ if( sBuf.Len() )
+ sTmp += '.';
+ sBuf.Insert( sTmp, 0 );
+ }
+ return sBuf;
+ }
+
+ return rMacro;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxTabPage* __EXPORT SwFldFuncPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return ( new SwFldFuncPage( pParent, rAttrSet ) );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFldFuncPage::GetGroup()
+{
+ return GRP_FKT;
+}
+
+/* -----------------12.01.99 10:09-------------------
+ *
+ * --------------------------------------------------*/
+void SwFldFuncPage::FillUserData()
+{
+ String sData( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( USER_DATA_VERSION )));
+ sData += ';';
+ USHORT nTypeSel = aTypeLB.GetSelectEntryPos();
+ if( LISTBOX_ENTRY_NOTFOUND == nTypeSel )
+ nTypeSel = USHRT_MAX;
+ else
+ nTypeSel = (ULONG)aTypeLB.GetEntryData( nTypeSel );
+ sData += String::CreateFromInt32( nTypeSel );
+ SetUserData(sData);
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.28 2000/09/18 16:05:28 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.27 2000/09/04 11:43:02 tbe
+ basicide, isetbrw, si, vcdlged moved from svx to basctl
+
+ Revision 1.26 2000/06/30 08:52:52 os
+ #76541# string assertions removed
+
+ Revision 1.25 2000/05/23 18:36:44 jp
+ Bugfixes for Unicode
+
+ Revision 1.24 2000/04/18 15:17:31 os
+ UNICODE
+
+ Revision 1.23 2000/03/03 15:17:01 os
+ StarView remainders removed
+
+ Revision 1.22 1999/02/25 16:24:50 JP
+ Bug #62438#: UserData nur auswerten, wenn kein Refresh ist
+
+
+ Rev 1.21 25 Feb 1999 17:24:50 JP
+ Bug #62438#: UserData nur auswerten, wenn kein Refresh ist
+
+ Rev 1.20 21 Jan 1999 09:50:36 OS
+ #59900# Fussnoten im Dialog korrekt sortieren; keine prot. Member
+
+ Rev 1.19 12 Jan 1999 11:42:26 OS
+ #60579# ausgewaehlten Typ in den UserData speichern
+
+ Rev 1.18 10 Aug 1998 16:39:58 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.17 24 Jul 1998 13:57:08 OM
+ #53246# Makros vorselektieren
+
+ Rev 1.16 20 Jul 1998 11:31:00 OM
+ #53244# Makros beim Bearbeiten nicht zersemmeln
+
+ Rev 1.15 20 Jul 1998 09:38:52 OM
+ #53278# Flackern vermeiden
+
+ Rev 1.14 29 May 1998 16:41:18 OM
+ #50667# Makrofelder bearbeiten
+
+ Rev 1.13 18 May 1998 14:52:42 OM
+ #50001 Keine eckigen Klammern in DB-Condition-Fields
+
+ Rev 1.12 13 Mar 1998 16:30:42 OM
+ #48197# Focus nach MacroDlg greppen
+
+ Rev 1.11 07 Mar 1998 14:38:46 OM
+ Feld nur bei Aenderung aktualisieren
+
+ Rev 1.10 04 Mar 1998 08:37:50 MH
+ chg: Syntax
+
+ Rev 1.9 03 Feb 1998 09:24:58 OM
+ Test
+
+ Rev 1.8 02 Feb 1998 15:04:36 OM
+ #46781# Macrofelder auch ausfuehren, wenn Dateiname mehr als 1 Punkt enthaelt
+
+ Rev 1.7 09 Jan 1998 16:56:52 OM
+ Bei Dok-Wechsel updaten
+
+ Rev 1.6 08 Jan 1998 14:58:26 OM
+ Traveling
+
+ Rev 1.5 06 Jan 1998 18:12:54 OM
+ Felbefehl-Dlg
+
+ Rev 1.4 12 Dec 1997 16:10:06 OM
+ AutoUpdate bei FocusWechsel u.a.
+
+ Rev 1.3 11 Dec 1997 16:58:02 OM
+ Feldumstellung
+
+ Rev 1.2 25 Nov 1997 12:59:28 OM
+ Funktionen-TP
+
+ Rev 1.1 25 Nov 1997 12:38:42 OM
+ Funktionen-TP
+
+ Rev 1.0 04 Nov 1997 10:07:18 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/fldui/fldfunc.hxx b/sw/source/ui/fldui/fldfunc.hxx
new file mode 100644
index 000000000000..6eba1598d219
--- /dev/null
+++ b/sw/source/ui/fldui/fldfunc.hxx
@@ -0,0 +1,141 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldfunc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWFLDFUNC_HXX
+#define _SWFLDFUNC_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 _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#include "condedit.hxx"
+#include "fldpage.hxx"
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SwFldFuncPage : public SwFldPage
+{
+ FixedText aTypeFT;
+ ListBox aTypeLB;
+ FixedText aSelectionFT;
+ ListBox aSelectionLB;
+ FixedText aFormatFT;
+ ListBox aFormatLB;
+ FixedText aNameFT;
+ ConditionEdit aNameED;
+ FixedText aValueFT;
+ Edit aValueED;
+ FixedText aCond1FT;
+ ConditionEdit aCond1ED;
+ FixedText aCond2FT;
+ ConditionEdit aCond2ED;
+ PushButton aMacroBT;
+
+ String sOldValueFT;
+ String sOldNameFT;
+
+ ULONG nOldFormat;
+
+ DECL_LINK( TypeHdl, ListBox* pLB = 0 );
+ DECL_LINK( SelectHdl, ListBox* pLB = 0 );
+ DECL_LINK( InsertMacroHdl, ListBox* pLB = 0 );
+
+ // Macro ausw„hlen
+ DECL_LINK( MacroHdl, Button * );
+
+ void UpdateSubType();
+ String TurnMacroString(const String &rMacro);
+
+protected:
+ virtual USHORT GetGroup();
+
+public:
+ SwFldFuncPage(Window* pParent, const SfxItemSet& rSet);
+
+ ~SwFldFuncPage();
+
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rAttrSet);
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+ virtual void FillUserData();
+};
+
+
+#endif
+
diff --git a/sw/source/ui/fldui/fldfunc.src b/sw/source/ui/fldui/fldfunc.src
new file mode 100644
index 000000000000..c9f287149dac
--- /dev/null
+++ b/sw/source/ui/fldui/fldfunc.src
@@ -0,0 +1,380 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldfunc.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "globals.hrc"
+#include "fldtdlg.hrc"
+#include "helpid.h"
+TabPage TP_FLD_FUNC
+{
+ HelpID = HID_FLD_FUNC ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Text = "Funktionen" ;
+ Text [ ENGLISH ] = "Functions" ;
+ FixedText FT_FUNCTYPE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ Text = "~Feldtyp" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "~Tipo di campo" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "Tipo de ~campo" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Felttype" ;
+ Text [ french ] = "~Type de champ" ;
+ Text [ swedish ] = "~Fälttyp" ;
+ Text [ dutch ] = "~Veldtype" ;
+ Text [ spanish ] = "~Tipo de campo" ;
+ Text [ english_us ] = "~Type" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "×Ö¶ÎÀàÐÍ(~T)";
+ Text[ russian ] = "Òèï ïîëÿ";
+ Text[ polish ] = "Typ pola";
+ Text[ japanese ] = "̨°ÙÄÞ‚ÌŽí—Þ(~T)";
+ Text[ chinese_traditional ] = "Ãþ«¬(~T)";
+ Text[ arabic ] = "äæÚ ÇáÍÞá";
+ Text[ greek ] = "~Ôýðïò ðåäßïõ";
+ Text[ korean ] = "ÇüÅÂ(~T)";
+ Text[ turkish ] = "~Alan tipi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_FUNCTYPE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 16 ) ;
+ Size = MAP_APPFONT ( 76 , 113 ) ;
+ TabStop = TRUE ;
+ Sort = FALSE ;
+ AutoHScroll = TRUE ;
+ };
+ FixedText FT_FUNCSELECTION
+ {
+ Pos = MAP_APPFONT ( 88 , 3 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ Text = "~Auswahl" ;
+ Text [ ENGLISH ] = "Selection" ;
+ Text [ norwegian ] = "Selection" ;
+ Text [ italian ] = "~Selezione" ;
+ Text [ portuguese_brazilian ] = "Seleção" ;
+ Text [ portuguese ] = "~Selecção" ;
+ Text [ finnish ] = "Valinta" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ french ] = "~Sélection" ;
+ Text [ swedish ] = "~Urval" ;
+ Text [ dutch ] = "~Selectie" ;
+ Text [ spanish ] = "Se~lección" ;
+ Text [ english_us ] = "S~elect" ;
+ Hide = TRUE ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ(~E)";
+ Text[ russian ] = "Âûáîð";
+ Text[ polish ] = "Wybór";
+ Text[ japanese ] = "‘I‘ð(~E)";
+ Text[ chinese_traditional ] = "¿ï¾Ü(~E)";
+ Text[ arabic ] = "ÇáÊÍÏíÏ";
+ Text[ greek ] = "~ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ(~E)";
+ Text[ turkish ] = "~Seçim";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_FUNCSELECTION
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 88 , 16 ) ;
+ Size = MAP_APPFONT ( 76 , 113 ) ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ Sort = TRUE ;
+ AutoHScroll = TRUE ;
+ };
+ FixedText FT_FUNCFORMAT
+ {
+ Pos = MAP_APPFONT ( 88 , 3 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ Text = "F~ormat" ;
+ Text [ ENGLISH ] = "Format" ;
+ Left = TRUE ;
+ Text [ english_us ] = "F~ormat" ;
+ Text [ portuguese_brazilian ] = "F~ormat" ;
+ Text [ swedish ] = "F~ormat" ;
+ Text [ danish ] = "Format" ;
+ Text [ italian ] = "F~ormato" ;
+ Text [ spanish ] = "F~ormato" ;
+ Text [ french ] = "F~ormat" ;
+ Text [ dutch ] = "F~ormaat" ;
+ Text [ portuguese ] = "F~ormato" ;
+ 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 ] = "F~ormat";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_FUNCFORMAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 88 , 16 ) ;
+ Size = MAP_APPFONT ( 76 , 113 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_FUNCNAME
+ {
+ Pos = MAP_APPFONT ( 170 , 3 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ Text = "Na~me" ;
+ TEXT [ English ] = "Na~me" ;
+ Left = TRUE ;
+ Text [ english_us ] = "Na~me" ;
+ Text [ portuguese_brazilian ] = "Na~me" ;
+ Text [ swedish ] = "Na~mn" ;
+ Text [ danish ] = "Navn" ;
+ Text [ italian ] = "No~me" ;
+ Text [ spanish ] = "No~mbre" ;
+ Text [ french ] = "~Nom" ;
+ Text [ dutch ] = "Naa~m" ;
+ Text [ portuguese ] = "No~me" ;
+ Text[ chinese_simplified ] = "Ãû³Æ(~M)";
+ Text[ russian ] = "Èìÿ";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "–¼‘O(~M)";
+ Text[ chinese_traditional ] = "¦WºÙ(~M)";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§(~M)";
+ Text[ turkish ] = "~Ad";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_FUNCNAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 15 ) ;
+ Size = MAP_APPFONT ( 84 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ FixedText FT_FUNCVALUE
+ {
+ Pos = MAP_APPFONT ( 170 , 33 ) ;
+ Size = MAP_APPFONT ( 84 , 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" ;
+ Left = TRUE ;
+ 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 ] = "D~eðer";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_FUNCVALUE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 45 ) ;
+ Size = MAP_APPFONT ( 84 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ FixedText FT_FUNCCOND1
+ {
+ Pos = MAP_APPFONT ( 170 , 33 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ Text = "~Dann" ;
+ Text [ ENGLISH ] = "Then" ;
+ Left = TRUE ;
+ Hide = TRUE ;
+ Text [ english_us ] = "Then" ;
+ Text [ portuguese_brazilian ] = "Dann" ;
+ Text [ swedish ] = "Så" ;
+ Text [ danish ] = "Så" ;
+ Text [ italian ] = "Poi" ;
+ Text [ spanish ] = "Entonces" ;
+ Text [ french ] = "~Alors" ;
+ Text [ dutch ] = "~Dan" ;
+ Text [ portuguese ] = "~Então" ;
+ Text[ chinese_simplified ] = "¾Í";
+ Text[ russian ] = "Äàëåå";
+ Text[ polish ] = "Wtedy";
+ Text[ japanese ] = "ðŒ‚ð–ž‚½‚·‚Æ‚«";
+ Text[ chinese_traditional ] = "´N";
+ Text[ arabic ] = "Ýí åÐå ÇáÍÇáÉ";
+ Text[ greek ] = "Ôüôå";
+ Text[ korean ] = "´ÙÀ½";
+ Text[ turkish ] = "O halde";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_FUNCCOND1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 45 ) ;
+ Size = MAP_APPFONT ( 84 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Hide = TRUE ;
+ };
+ FixedText FT_FUNCCOND2
+ {
+ Pos = MAP_APPFONT ( 170 , 63 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ Text = "So~nst" ;
+ Text [ ENGLISH ] = "Else" ;
+ Left = TRUE ;
+ Hide = TRUE ;
+ Text [ english_us ] = "Else" ;
+ Text [ portuguese_brazilian ] = "Sonst" ;
+ Text [ swedish ] = "Annars" ;
+ Text [ danish ] = "Ellers" ;
+ Text [ italian ] = "Altrimenti" ;
+ Text [ spanish ] = "Si no" ;
+ Text [ french ] = "~Sinon" ;
+ Text [ dutch ] = "~Anders" ;
+ Text [ portuguese ] = "~Senão" ;
+ Text[ chinese_simplified ] = "ÆäËü";
+ Text[ russian ] = "针֌";
+ Text[ polish ] = "W przeciwnym wypadku";
+ Text[ japanese ] = "ðŒ‚ð–ž‚½‚³‚È‚¢‚Æ‚«";
+ Text[ chinese_traditional ] = "§_«h";
+ Text[ arabic ] = "ÝíãÇ ÚÏÇ Ðáß";
+ Text[ greek ] = "Áëëéþò";
+ Text[ korean ] = "±âŸ";
+ Text[ turkish ] = "Yoksa";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_FUNCCOND2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 75 ) ;
+ Size = MAP_APPFONT ( 84 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Hide = TRUE ;
+ };
+ PushButton BT_FUNCMACRO
+ {
+ Pos = MAP_APPFONT ( 204 , 115 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "M~akro..." ;
+ Text [ English ] = "M~acro..." ;
+ Text [ norwegian ] = "Macro..." ;
+ Text [ italian ] = "~Macro..." ;
+ Text [ portuguese_brazilian ] = "Macro..." ;
+ Text [ portuguese ] = "Macro..." ;
+ Text [ french ] = "~Macro..." ;
+ Text [ dutch ] = "~Macro..." ;
+ Text [ spanish ] = "M~acro..." ;
+ Text [ danish ] = "Makro..." ;
+ Text [ swedish ] = "M~akro..." ;
+ Text [ finnish ] = "Macro..." ;
+ Text [ english_us ] = "~Macro..." ;
+ Disable = TRUE ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ºê(~M)...";
+ Text[ russian ] = "Ìàêðîñ...";
+ Text[ polish ] = "Makro...";
+ Text[ japanese ] = "ϸÛ(~C)...";
+ Text[ chinese_traditional ] = "¥¨¶°(~C)...";
+ Text[ arabic ] = "ãÇßÑæ...";
+ Text[ greek ] = "ÌáêñïåíôïëÞ...";
+ Text[ korean ] = "¸ÅÅ©·Î(~M)...";
+ Text[ turkish ] = "M~akro...";
+ Text[ 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[ greek ] = "Ëåéôïõñãßåò";
+ Text[ korean ] = "ÇÔ¼ö";
+ Text[ turkish ] = "Fonksiyon";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/fldui/fldmgr.cxx b/sw/source/ui/fldui/fldmgr.cxx
new file mode 100644
index 000000000000..f2c7a221d751
--- /dev/null
+++ b/sw/source/ui/fldui/fldmgr.cxx
@@ -0,0 +1,2450 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldmgr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "cmdid.h"
+#include "view.hxx"
+#include "wrtsh.hxx" // Actives Fenster
+#include "doc.hxx" // Actives Fenster
+#include "docsh.hxx" // Actives Fenster
+#include "swmodule.hxx"
+#include "hintids.hxx"
+#include "charatr.hxx"
+
+#ifdef REPLACE_OFADBMGR
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XDATASOURCE_HPP_
+#include <com/sun/star/sdbc/XDataSource.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_DATATYPE_HPP_
+#include <com/sun/star/sdbc/DataType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XTABLESSUPPLIER_HPP_
+#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XCOLUMNSSUPPLIER_HPP_
+#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XQUERIESSUPPLIER_HPP_
+#include <com/sun/star/sdb/XQueriesSupplier.hpp>
+#endif
+//#ifndef _COM_SUN_STAR_SDB_XDATABASEACCESS_HPP_
+//#include <com/sun/star/sdb/XDatabaseAccess.hpp>
+//#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+
+#else
+
+
+#endif //REPLACE_OFADBMGR
+
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+
+#ifndef _SFXDOCINF_HXX //autogen
+#include <sfx2/docinf.hxx>
+#endif
+
+#ifndef _SFX_OBJSH_HXX //autogen
+#include <sfx2/objsh.hxx>
+#endif
+
+#ifndef _LINKMGR_HXX //autogen
+#include <so3/linkmgr.hxx>
+#endif
+
+#ifndef _BASMGR_HXX //autogen
+#include <basic/basmgr.hxx>
+#endif
+
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+
+#ifndef _SFXMACITEM_HXX //autogen
+#include <svtools/macitem.hxx>
+#endif
+
+#ifndef _SB_SBMOD_HXX //autogen
+#include <basic/sbmod.hxx>
+#endif
+
+#ifndef _FMTRFMRK_HXX //autogen
+#include <fmtrfmrk.hxx>
+#endif
+
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+
+#ifndef _SB_SBSTAR_HXX //autogen
+#include <basic/sbstar.hxx>
+#endif
+
+#ifndef _SB_SBMETH_HXX //autogen
+#include <basic/sbmeth.hxx>
+#endif
+
+#ifndef _SBXCLASS_HXX //autogen
+#include <svtools/sbx.hxx>
+#endif
+#ifndef _BASOBJ_HXX //autogen
+#include <basctl/basobj.hxx>
+#endif
+
+#ifndef _ZFORLIST_HXX //autogen
+#include <svtools/zforlist.hxx>
+#endif
+
+#ifndef _ZFORMAT_HXX //autogen
+#include <svtools/zformat.hxx>
+#endif
+
+#ifndef _SB_SBMOD_HXX //autogen
+#include <basic/sbmod.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _CELLATR_HXX
+#include <cellatr.hxx>
+#endif
+#include "dbmgr.hxx"
+#include "shellres.hxx"
+#include "fldbas.hxx"
+#include "docufld.hxx"
+#include "chpfld.hxx"
+#include "ddefld.hxx"
+#include "expfld.hxx"
+#include "reffld.hxx"
+#include "usrfld.hxx"
+#include "dbfld.hxx"
+#include "authfld.hxx"
+#include "flddat.hxx"
+#include "fldmgr.hxx"
+
+#include "fldui.hrc"
+
+#ifdef REPLACE_OFADBMGR
+using namespace rtl;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::container;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::sdb;
+using namespace com::sun::star::sdbc;
+using namespace com::sun::star::sdbcx;
+using namespace com::sun::star::beans;
+#define C2U(cChar) rtl::OUString::createFromAscii(cChar)
+
+#endif
+
+/*--------------------------------------------------------------------
+ Beschreibung: Gruppen der Felder
+ --------------------------------------------------------------------*/
+enum
+{
+ GRP_DOC_BEGIN = 0,
+ GRP_DOC_END = GRP_DOC_BEGIN + 11,
+
+ GRP_FKT_BEGIN = GRP_DOC_END,
+ GRP_FKT_END = GRP_FKT_BEGIN + 6,
+
+ GRP_REF_BEGIN = GRP_FKT_END,
+ GRP_REF_END = GRP_REF_BEGIN + 2,
+
+ GRP_REG_BEGIN = GRP_REF_END,
+ GRP_REG_END = GRP_REG_BEGIN + 1,
+
+ GRP_DB_BEGIN = GRP_REG_END,
+ GRP_DB_END = GRP_DB_BEGIN + 5,
+
+ GRP_VAR_BEGIN = GRP_DB_END,
+ GRP_VAR_END = GRP_VAR_BEGIN + 9
+};
+
+enum
+{
+ GRP_WEB_DOC_BEGIN = 0,
+ GRP_WEB_DOC_END = GRP_WEB_DOC_BEGIN + 9,
+
+ GRP_WEB_FKT_BEGIN = GRP_WEB_DOC_END + 2,
+ GRP_WEB_FKT_END = GRP_WEB_FKT_BEGIN + 0, // Die Gruppe ist leer!
+
+ GRP_WEB_REF_BEGIN = GRP_WEB_FKT_END + 6, // Die Gruppe ist leer!
+ GRP_WEB_REF_END = GRP_WEB_REF_BEGIN + 0,
+
+ GRP_WEB_REG_BEGIN = GRP_WEB_REF_END + 2,
+ GRP_WEB_REG_END = GRP_WEB_REG_BEGIN + 1,
+
+ GRP_WEB_DB_BEGIN = GRP_WEB_REG_END, // Die Gruppe ist leer!
+ GRP_WEB_DB_END = GRP_WEB_DB_BEGIN + 0,
+
+ GRP_WEB_VAR_BEGIN = GRP_WEB_DB_END + 5,
+ GRP_WEB_VAR_END = GRP_WEB_VAR_BEGIN + 1
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Formate in der richtigen Reihenfolge
+ --------------------------------------------------------------------*/
+static const USHORT __FAR_DATA aSetFmt[] =
+{
+// die Reihenfolge muss zu Beginn mit den ResourceIds fuer FMT_SETVAR_???
+// uebereinstimmen
+ 0,
+ 0
+};
+
+static const USHORT __FAR_DATA aGetFmt[] =
+{
+// die Reihenfolge muss zu Beginn mit den ResourceIds fuer FMT_GETVAR_???
+// uebereinstimmen
+ 0
+};
+
+static const USHORT __FAR_DATA aUsrFmt[] =
+{
+// die Reihenfolge muss zu Beginn mit den ResourceIds fuer FMT_SETVAR_???
+// uebereinstimmen
+ 0,
+ SUB_CMD
+};
+
+static const USHORT __FAR_DATA aDBFmt[] =
+{
+// die Reihenfolge muss zu Beginn mit den ResourceIds fuer FMT_DBFLD_???
+// uebereinstimmen
+ SUB_OWN_FMT
+};
+
+static const USHORT VF_COUNT = sizeof(aGetFmt) / sizeof(USHORT);
+static const USHORT VF_USR_COUNT = sizeof(aUsrFmt) / sizeof(USHORT);
+static const USHORT VF_DB_COUNT = sizeof(aDBFmt) / sizeof(USHORT);
+
+/*--------------------------------------------------------------------
+ Beschreibung: Feldtypen und Subtypes
+ --------------------------------------------------------------------*/
+struct SwFldPack
+{
+ USHORT nTypeId;
+
+ USHORT nSubTypeStart;
+ USHORT nSubTypeEnd;
+
+ ULONG nFmtBegin;
+ ULONG nFmtEnd;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Strings und Formate
+ --------------------------------------------------------------------*/
+static const SwFldPack __FAR_DATA aSwFlds[] =
+{
+ // Dokument
+ TYP_EXTUSERFLD, FLD_EU_BEGIN, FLD_EU_END, 0, 0,
+ TYP_AUTHORFLD, 0, 0, FMT_AUTHOR_BEGIN, FMT_AUTHOR_END,
+ TYP_DATEFLD, FLD_DATE_BEGIN, FLD_DATE_END, 0, 0,
+ TYP_TIMEFLD, FLD_TIME_BEGIN, FLD_TIME_END, 0, 0,
+ TYP_PAGENUMBERFLD, 0, 0, FMT_NUM_BEGIN, FMT_NUM_END-1,
+ TYP_NEXTPAGEFLD, 0, 0, FMT_NUM_BEGIN, FMT_NUM_END,
+ TYP_PREVPAGEFLD, 0, 0, FMT_NUM_BEGIN, FMT_NUM_END,
+ TYP_FILENAMEFLD, 0, 0, FMT_FF_BEGIN, FMT_FF_END,
+ TYP_DOCSTATFLD, FLD_STAT_BEGIN, FLD_STAT_END, FMT_NUM_BEGIN, FMT_NUM_END-1,
+
+ TYP_CHAPTERFLD, 0, 0, FMT_CHAPTER_BEGIN, FMT_CHAPTER_END,
+ TYP_TEMPLNAMEFLD, 0, 0, FMT_FF_BEGIN, FMT_FF_END,
+
+ // Funktion
+ TYP_CONDTXTFLD, 0, 0, 0, 0,
+ TYP_INPUTFLD, FLD_INPUT_BEGIN, FLD_INPUT_END, 0, 0,
+ TYP_MACROFLD, 0, 0, 0, 0,
+ TYP_JUMPEDITFLD, 0, 0, FMT_MARK_BEGIN, FMT_MARK_END,
+ TYP_HIDDENTXTFLD, 0, 0, 0, 0,
+ TYP_HIDDENPARAFLD, 0, 0, 0, 0,
+
+ // Referenzen
+ TYP_SETREFFLD, 0, 0, 0, 0,
+ TYP_GETREFFLD, 0, 0, FMT_REF_BEGIN, FMT_REF_END,
+
+ // Ablage
+ TYP_DOCINFOFLD, 0, 0, FMT_REG_BEGIN, FMT_REG_END,
+
+ // Datenbank
+ TYP_DBFLD, 0, 0, FMT_DBFLD_BEGIN, FMT_DBFLD_END,
+ TYP_DBNEXTSETFLD, 0, 0, 0, 0,
+ TYP_DBNUMSETFLD, 0, 0, 0, 0,
+ TYP_DBSETNUMBERFLD, 0, 0, FMT_NUM_BEGIN, FMT_NUM_END-2,
+ TYP_DBNAMEFLD, 0, 0, 0, 0,
+
+ // Variablen
+ TYP_SETFLD, 0, 0, FMT_SETVAR_BEGIN, FMT_SETVAR_END,
+
+ TYP_GETFLD, 0, 0, FMT_GETVAR_BEGIN, FMT_GETVAR_END,
+ TYP_DDEFLD, 0, 0, FMT_DDE_BEGIN, FMT_DDE_END,
+ TYP_FORMELFLD, 0, 0, FMT_GETVAR_BEGIN, FMT_GETVAR_END,
+ TYP_INPUTFLD, FLD_INPUT_BEGIN, FLD_INPUT_END, 0, 0,
+ TYP_SEQFLD, 0, 0, FMT_NUM_BEGIN, FMT_NUM_END-2,
+ TYP_SETREFPAGEFLD, FLD_PAGEREF_BEGIN, FLD_PAGEREF_END,0, 0,
+ TYP_GETREFPAGEFLD, 0, 0, FMT_NUM_BEGIN, FMT_NUM_END-1,
+ TYP_USERFLD, 0, 0, FMT_USERVAR_BEGIN, FMT_USERVAR_END
+};
+
+String* SwFldMgr::pDate = 0;
+String* SwFldMgr::pTime = 0;
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Zugriff auf die Shell
+ --------------------------------------------------------------------*/
+
+SwWrtShell* lcl_GetShell()
+{
+ SwView* pView;
+ if ( 0 != (pView = ::GetActiveView()) )
+ return pView->GetWrtShellPtr();
+ return 0;
+}
+
+inline USHORT GetPackCount() { return sizeof(aSwFlds) / sizeof(SwFldPack); }
+
+/*--------------------------------------------------------------------
+ Beschreibung: FieldManager regelt das Einfuegen und Updaten
+ von Feldern
+ --------------------------------------------------------------------*/
+
+SwFldMgr::SwFldMgr(SwWrtShell* pSh ) :
+ bEvalExp(TRUE),
+ pModule(0),
+ pMacroItem(0),
+ pWrtShell(pSh)
+{
+ // aktuelles Feld ermitteln falls vorhanden
+ GetCurFld();
+}
+
+
+SwFldMgr::~SwFldMgr()
+{
+ aSubLst.DeleteAndDestroy(0, aSubLst.Count());
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: RefMark ueber Namen organisieren
+ --------------------------------------------------------------------*/
+
+BOOL SwFldMgr::CanInsertRefMark( const String& rStr )
+{
+ SwWrtShell &rSh = pWrtShell ? *pWrtShell : *lcl_GetShell();
+ USHORT nCnt = rSh.GetCrsrCnt();
+
+ // der letzte Crsr muss keine aufgespannte Selektion
+ if( 1 < nCnt && !rSh.SwCrsrShell::HasSelection() )
+ --nCnt;
+
+ return 2 > nCnt && 0 == rSh.GetRefMark( rStr );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Alle DBTypes loeschen
+ --------------------------------------------------------------------*/
+
+void SwFldMgr::RemoveDBTypes()
+{
+ SwWrtShell &rSh = pWrtShell ? *pWrtShell : *lcl_GetShell();
+ USHORT nCount = rSh.GetFldTypeCount(RES_DBFLD);
+ for ( USHORT i=0; i < nCount ; ++i )
+ {
+ SwFieldType* pType = rSh.GetFldType( i, RES_DBFLD );
+ if( !pType->GetDepends() )
+ {
+ rSh.RemoveFldType( i--, RES_DBFLD );
+ nCount--;
+ }
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Zugriff ueber ResIds
+ --------------------------------------------------------------------*/
+
+USHORT SwFldMgr::GetFldTypeCount(USHORT nResId) const
+{
+ return pWrtShell ?
+ pWrtShell->GetFldTypeCount(nResId) :
+ ::lcl_GetShell()->GetFldTypeCount(nResId);
+}
+
+
+SwFieldType* SwFldMgr::GetFldType(USHORT nResId, USHORT nId) const
+{
+ return pWrtShell ?
+ pWrtShell->GetFldType(nId, nResId) :
+ ::lcl_GetShell()->GetFldType(nId, nResId);
+}
+
+
+SwFieldType* SwFldMgr::GetFldType(USHORT nResId, const String& rName) const
+{
+ return pWrtShell ?
+ pWrtShell->GetFldType(nResId, rName) :
+ ::lcl_GetShell()->GetFldType(nResId, rName);
+}
+
+
+void SwFldMgr::RemoveFldType(USHORT nResId, USHORT nId)
+{
+ pWrtShell ?
+ pWrtShell->RemoveFldType(nId, nResId) :
+ ::lcl_GetShell()->RemoveFldType(nId, nResId);
+}
+
+
+void SwFldMgr::RemoveFldType(USHORT nResId, const String& rName )
+{
+ pWrtShell ?
+ pWrtShell->RemoveFldType(nResId, rName) :
+ ::lcl_GetShell()->RemoveFldType(nResId, rName);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Aktuelles Feld ermitteln
+ --------------------------------------------------------------------*/
+
+
+SwField* SwFldMgr::GetCurFld()
+{
+ SwWrtShell *pSh = pWrtShell ? pWrtShell : ::lcl_GetShell();
+ if ( pSh )
+ pCurFld = pSh->GetCurFld();
+ else
+ pCurFld = NULL;
+
+ // Strings und Format initialisieren
+ //
+ aCurPar1.Erase();
+ aCurPar2.Erase();
+ sCurFrame.Erase();
+ nCurFmt = 0;
+
+ if(!pCurFld)
+ return 0;
+
+ // Aktuelle Werte aufbereiten Parameter 1 und Parameter 2
+ // als auch das Format ermitteln
+ //
+ const USHORT nTypeId = pCurFld->GetTypeId();
+
+ nCurFmt = pCurFld->GetFormat();
+ aCurPar1 = pCurFld->GetPar1();
+ aCurPar2 = pCurFld->GetPar2();
+
+ switch( nTypeId )
+ {
+ case TYP_PAGENUMBERFLD:
+ case TYP_NEXTPAGEFLD:
+ case TYP_PREVPAGEFLD:
+ case TYP_GETREFPAGEFLD:
+ if( nCurFmt == SVX_NUM_PAGEDESC )
+ nCurFmt -= 2;
+ break;
+ }
+ return pCurFld;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Gruppen-Bereich liefern
+ --------------------------------------------------------------------*/
+
+
+const SwFldGroupRgn& SwFldMgr::GetGroupRange(BOOL bHtmlMode, USHORT nGrpId) const
+{
+static SwFldGroupRgn __READONLY_DATA aRanges[] =
+{
+ /* Dokument */ GRP_DOC_BEGIN, GRP_DOC_END,
+ /* Funktionen */ GRP_FKT_BEGIN, GRP_FKT_END,
+ /* Referenzen */ GRP_REF_BEGIN, GRP_REF_END,
+ /* Ablage */ GRP_REG_BEGIN, GRP_REG_END,
+ /* DB */ GRP_DB_BEGIN, GRP_DB_END,
+ /* User */ GRP_VAR_BEGIN, GRP_VAR_END,
+};
+static SwFldGroupRgn __READONLY_DATA aWebRanges[] =
+{
+ /* Dokument */ GRP_WEB_DOC_BEGIN, GRP_WEB_DOC_END,
+ /* Funktionen */ GRP_WEB_FKT_BEGIN, GRP_WEB_FKT_END,
+ /* Referenzen */ GRP_WEB_REF_BEGIN, GRP_WEB_REF_END,
+ /* Ablage */ GRP_WEB_REG_BEGIN, GRP_WEB_REG_END,
+ /* DB */ GRP_WEB_DB_BEGIN, GRP_WEB_DB_END,
+ /* User */ GRP_WEB_VAR_BEGIN, GRP_WEB_VAR_END,
+};
+
+ if (bHtmlMode)
+ return aWebRanges[(USHORT)nGrpId];
+ else
+ return aRanges[(USHORT)nGrpId];
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: GroupId bestimmen
+ --------------------------------------------------------------------*/
+
+USHORT SwFldMgr::GetGroup(BOOL bHtmlMode, USHORT nTypeId, USHORT nSubType) const
+{
+ if (nTypeId == TYP_SETINPFLD)
+ nTypeId = TYP_SETFLD;
+
+ if (nTypeId == TYP_INPUTFLD && (nSubType & INP_USR))
+ nTypeId = TYP_USERFLD;
+
+ if (nTypeId == TYP_FIXDATEFLD)
+ nTypeId = TYP_DATEFLD;
+
+ if (nTypeId == TYP_FIXTIMEFLD)
+ nTypeId = TYP_TIMEFLD;
+
+ for (USHORT i = GRP_DOC; i <= GRP_VAR; i++)
+ {
+ const SwFldGroupRgn& rRange = GetGroupRange(bHtmlMode, i);
+ for (USHORT nPos = rRange.nStart; nPos < rRange.nEnd; nPos++)
+ {
+ if (aSwFlds[nPos].nTypeId == nTypeId)
+ return i;
+ }
+ }
+ return USHRT_MAX;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Namen zur TypeId ermitteln
+ ZUGRIFF ueber TYP_....
+ --------------------------------------------------------------------*/
+
+
+USHORT SwFldMgr::GetTypeId(USHORT nPos) const
+{
+ ASSERT(nPos < ::GetPackCount(), "unzulaessige Pos");
+ return aSwFlds[ nPos ].nTypeId;
+}
+
+
+const String& SwFldMgr::GetTypeStr(USHORT nPos) const
+{
+ ASSERT(nPos < ::GetPackCount(), "unzulaessige TypeId");
+
+ USHORT nFldWh = aSwFlds[ nPos ].nTypeId;
+
+ // Sonderbehandlung fuer Datum/Zeit Felder (ohne var/fix)
+ if( TYP_DATEFLD == nFldWh )
+ {
+ if( !pDate )
+ pDate = new SW_RESSTR( STR_DATEFLD );
+ return *pDate;
+ }
+ if( TYP_TIMEFLD == nFldWh )
+ {
+ if( !pTime )
+ pTime = new SW_RESSTR( STR_TIMEFLD );
+ return *pTime;
+ }
+
+ return *SwFieldType::GetFldNames()->GetObject( nFldWh );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Pos in der Liste bestimmen
+ --------------------------------------------------------------------*/
+
+
+USHORT SwFldMgr::GetPos(USHORT nTypeId) const
+{
+ switch( nTypeId )
+ {
+ case TYP_FIXDATEFLD: nTypeId = TYP_DATEFLD; break;
+ case TYP_FIXTIMEFLD: nTypeId = TYP_TIMEFLD; break;
+ case TYP_SETINPFLD: nTypeId = TYP_SETFLD; break;
+ case TYP_USRINPFLD: nTypeId = TYP_USERFLD; break;
+ }
+
+ for(USHORT i = 0; i < GetPackCount(); i++)
+ if(aSwFlds[i].nTypeId == nTypeId)
+ return i;
+
+ return USHRT_MAX;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Subtypen eines Feldes lokalisieren
+ --------------------------------------------------------------------*/
+
+SvStringsDtor& SwFldMgr::GetSubTypes(USHORT nTypeId)
+{
+ // aSubLst.DeleteAndDestroy(0, aSubLst.Count());
+ for (USHORT i=0; i < aSubLst.Count(); )
+ {
+ String* pStr = aSubLst[i];
+ DELETEZ(pStr);
+ aSubLst.Remove(i);
+ }
+
+ const USHORT nPos = GetPos(nTypeId);
+
+ switch(nTypeId)
+ {
+ case TYP_SETREFFLD:
+ case TYP_GETREFFLD:
+ {
+ // Referenzen sind keine Felder
+ pWrtShell ?
+ pWrtShell->GetRefMarks( &aSubLst ) :
+ ::lcl_GetShell()->GetRefMarks( &aSubLst );
+ break;
+ }
+ case TYP_MACROFLD:
+ {
+ if (sMacroPath.Len())
+ {
+ String sPath = sMacroPath.Copy(sMacroPath.Search('.', 0));
+ if (pModule)
+ {
+ SbxArray* pSbxArray = pModule->GetMethods();
+
+ for (USHORT nMethod = 0; nMethod < pSbxArray->Count(); nMethod++)
+ {
+ SbMethod* pMethod = (SbMethod*)pSbxArray->Get(nMethod);
+ DBG_ASSERT( pMethod, "Methode nicht gefunden! (NULL)" );
+
+ String* pNew = new String(pMethod->GetName());
+ *pNew += sPath;
+ aSubLst.Insert(pNew, aSubLst.Count());
+ }
+ }
+ else
+ {
+ String* pNew = new String(sMacroPath);
+ aSubLst.Insert(pNew, aSubLst.Count());
+ }
+ }
+ break;
+ }
+ case TYP_INPUTFLD:
+ { String* pNew = new SW_RESSTR(aSwFlds[nPos].nSubTypeStart);
+ aSubLst.Insert(pNew, aSubLst.Count());
+ // Weiter bei generischen Typen
+ }
+ case TYP_DDEFLD:
+ case TYP_SEQFLD:
+ case TYP_FORMELFLD:
+ case TYP_GETFLD:
+ case TYP_SETFLD:
+ case TYP_USERFLD:
+ {
+ SwWrtShell &rSh = pWrtShell ? *pWrtShell : *::lcl_GetShell();
+ const USHORT nCount = rSh.GetFldTypeCount();
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ SwFieldType* pFldType = rSh.GetFldType( i );
+ const USHORT nWhich = pFldType->Which();
+
+ if((nTypeId == TYP_DDEFLD && pFldType->Which() == RES_DDEFLD) ||
+
+ (nTypeId == TYP_USERFLD && nWhich == RES_USERFLD) ||
+
+ (nTypeId == TYP_GETFLD && nWhich == RES_SETEXPFLD &&
+ !(((SwSetExpFieldType*)pFldType)->GetType() & GSE_SEQ)) ||
+
+ (nTypeId == TYP_SETFLD && nWhich == RES_SETEXPFLD &&
+ !(((SwSetExpFieldType*)pFldType)->GetType() & GSE_SEQ)) ||
+
+ (nTypeId == TYP_SEQFLD && nWhich == RES_SETEXPFLD &&
+ (((SwSetExpFieldType*)pFldType)->GetType() & GSE_SEQ)) ||
+
+ ((nTypeId == TYP_INPUTFLD || nTypeId == TYP_FORMELFLD) &&
+ (nWhich == RES_USERFLD ||
+ nWhich == RES_SETEXPFLD &&
+ !(((SwSetExpFieldType*)pFldType)->GetType() & GSE_SEQ)) ) )
+ {
+ String* pNew = new String(pFldType->GetName());
+ aSubLst.Insert(pNew, aSubLst.Count());
+ }
+ }
+ break;
+ }
+ case TYP_DBNEXTSETFLD:
+ case TYP_DBNUMSETFLD:
+ case TYP_DBNAMEFLD:
+ case TYP_DBSETNUMBERFLD:
+ break;
+
+ default:
+ {
+ // statische SubTypes
+ if(nPos != USHRT_MAX)
+ {
+ USHORT nCount;
+ if (nTypeId == TYP_DOCINFOFLD)
+ nCount = DI_SUBTYPE_END - DI_SUBTYPE_BEGIN;
+ else
+ nCount = aSwFlds[nPos].nSubTypeEnd - aSwFlds[nPos].nSubTypeStart;
+
+ SwWrtShell &rSh = pWrtShell ? *pWrtShell : *::lcl_GetShell();
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ String* pNew;
+ if (nTypeId == TYP_DOCINFOFLD)
+ {
+ if (i >= DI_INFO1 && i <= DI_INFO4)
+ pNew = new String( rSh.GetInfo()->GetUserKey(i-DI_INFO1).GetTitle());
+ else
+ pNew = new String(*ViewShell::GetShellRes()->aDocInfoLst[i]);
+ }
+ else
+ pNew = new SW_RESSTR(aSwFlds[nPos].nSubTypeStart + i);
+
+ aSubLst.Insert(pNew, aSubLst.Count());
+ }
+ }
+ }
+ }
+ return aSubLst;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Format ermitteln
+ ZUGRIFF ueber TYP_....
+ --------------------------------------------------------------------*/
+
+
+USHORT SwFldMgr::GetFormatCount(USHORT nTypeId, BOOL bIsText, BOOL bHtmlMode) const
+{
+ ASSERT(nTypeId < TYP_END, "unzulaessige TypeId");
+
+ {
+ const USHORT nPos = GetPos(nTypeId);
+
+ if(nPos == USHRT_MAX || (bHtmlMode && nTypeId == TYP_SETFLD))
+ return 0;
+
+ ULONG nStart = aSwFlds[nPos].nFmtBegin;
+ ULONG nEnd = aSwFlds[nPos].nFmtEnd;
+
+ if (bIsText && nEnd - nStart >= 2)
+ return 2;
+
+ if (nTypeId == TYP_FILENAMEFLD)
+ nEnd -= 2; // Kein Bereich oder Vorlage
+
+ switch(nStart)
+ {
+ case FMT_GETVAR_BEGIN:
+ case FMT_SETVAR_BEGIN: return VF_COUNT;
+ case FMT_USERVAR_BEGIN: return VF_USR_COUNT;
+ case FMT_DBFLD_BEGIN: return VF_DB_COUNT;
+ }
+ return (USHORT)(nEnd - nStart);
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: FormatString zu einem Typ ermitteln
+ --------------------------------------------------------------------*/
+
+
+String SwFldMgr::GetFormatStr(USHORT nTypeId, ULONG nFormatId) const
+{
+ String aRet;
+ SwWrtShell *pSh = pWrtShell ? pWrtShell : ::lcl_GetShell();
+ ASSERT(nTypeId < TYP_END, "unzulaessige TypeId");
+
+ const USHORT nPos = GetPos(nTypeId);
+
+ if(nPos == USHRT_MAX)
+ return aRet;
+
+ ULONG nStart;
+
+ nStart = aSwFlds[nPos].nFmtBegin;
+
+ if (nTypeId == TYP_FILENAMEFLD)
+ nFormatId &= ~FF_FIXED; // Fixed-Flag ausmaskieren
+
+ aRet = SW_RESSTR((USHORT)(nStart + nFormatId));
+
+ return aRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: FormatId aus Pseudo-ID ermitteln
+ --------------------------------------------------------------------*/
+
+USHORT SwFldMgr::GetFormatId(USHORT nTypeId, ULONG nFormatId) const
+{
+ USHORT nId = (USHORT)nFormatId;
+
+ switch( nTypeId )
+ {
+ case TYP_DOCINFOFLD:
+ switch( aSwFlds[ GetPos( nTypeId ) ].nFmtBegin + nFormatId )
+ {
+ case FMT_REG_AUTHOR: nId = DI_SUB_AUTHOR; break;
+ case FMT_REG_TIME: nId = DI_SUB_TIME; break;
+ case FMT_REG_DATE: nId = DI_SUB_DATE; break;
+ }
+ break;
+
+ case TYP_PAGENUMBERFLD:
+ case TYP_NEXTPAGEFLD:
+ case TYP_PREVPAGEFLD:
+ case TYP_DOCSTATFLD:
+ case TYP_DBSETNUMBERFLD:
+ case TYP_SEQFLD:
+ case TYP_GETREFPAGEFLD:
+ switch( aSwFlds[ GetPos( nTypeId ) ].nFmtBegin + nFormatId )
+ {
+ case FMT_NUM_ABC: nId = SVX_NUM_CHARS_UPPER_LETTER; break;
+ case FMT_NUM_SABC: nId = SVX_NUM_CHARS_LOWER_LETTER; break;
+ case FMT_NUM_ROMAN: nId = SVX_NUM_ROMAN_UPPER; break;
+ case FMT_NUM_SROMAN: nId = SVX_NUM_ROMAN_LOWER; break;
+ case FMT_NUM_ARABIC: nId = SVX_NUM_ARABIC; break;
+ case FMT_NUM_PAGEDESC: nId = SVX_NUM_PAGEDESC; break;
+ case FMT_NUM_PAGESPECIAL: nId = SVX_NUM_CHAR_SPECIAL; break;
+ case FMT_NUM_ABC_N: nId = SVX_NUM_CHARS_UPPER_LETTER_N; break;
+ case FMT_NUM_SABC_N: nId = SVX_NUM_CHARS_LOWER_LETTER_N; break;
+ }
+ break;
+
+ case TYP_DDEFLD:
+ switch ( aSwFlds[ GetPos( nTypeId ) ].nFmtBegin + nFormatId )
+ {
+ case FMT_DDE_NORMAL: nId = LINKUPDATE_ONCALL; break;
+ case FMT_DDE_HOT: nId = LINKUPDATE_ALWAYS; break;
+ }
+ break;
+ }
+
+ return nId;
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Traveling
+ --------------------------------------------------------------------*/
+
+
+BOOL SwFldMgr::GoNextPrev( BOOL bNext, SwFieldType* pTyp )
+{
+ SwWrtShell* pSh = pWrtShell ? pWrtShell : ::lcl_GetShell();
+
+ if( !pTyp && pCurFld )
+ {
+ const USHORT nTypeId = pCurFld->GetTypeId();
+ if( TYP_SETINPFLD == nTypeId || TYP_USRINPFLD == nTypeId )
+ pTyp = pSh->GetFldType( 0, RES_INPUTFLD );
+ else
+ pTyp = pCurFld->GetTyp();
+ }
+
+ if (pTyp && pTyp->Which() == RES_DBFLD)
+ {
+ // Fuer Feldbefehl-bearbeiten (alle DB-Felder anspringen)
+ return pSh->MoveFldType( 0, bNext, USHRT_MAX, RES_DBFLD );
+ }
+
+ return pTyp && pSh ? pSh->MoveFldType( pTyp, bNext ) : FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Feldtypen einfuegen
+ --------------------------------------------------------------------*/
+
+
+void SwFldMgr::InsertFldType(SwFieldType& rType)
+{
+ pWrtShell ?
+ pWrtShell->InsertFldType(rType) :
+ ::lcl_GetShell()->InsertFldType(rType);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Aktuelle TypeId ermitteln
+ --------------------------------------------------------------------*/
+
+
+USHORT SwFldMgr::GetCurTypeId() const
+{
+ return pCurFld->GetTypeId();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ueber String Feld einfuegen oder Update
+ --------------------------------------------------------------------*/
+
+
+BOOL SwFldMgr::InsertFld(USHORT nType,
+ USHORT nSubType,
+ const String& rPar1,
+ const String& rPar2,
+ ULONG nFormat,
+ SwWrtShell* pSh,
+ sal_Unicode cSeparator)
+{
+ SwField* pFld = 0;
+ BOOL bExp = FALSE;
+ BOOL bTbl = FALSE;
+ BOOL bPageVar = FALSE;
+
+ if (pSh == NULL)
+ pSh = pWrtShell ? pWrtShell : ::lcl_GetShell();
+
+ switch(nType)
+ { // ACHTUNG dieses Feld wird ueber einen gesonderten Dialog eingefuegt
+ case TYP_POSTITFLD:
+ {
+ SwPostItFieldType* pType =
+ (SwPostItFieldType*)pSh->GetFldType(0, RES_POSTITFLD);
+ pFld = new SwPostItField(pType, rPar1, rPar2, Date());
+ break;
+ }
+ case TYP_SCRIPTFLD:
+ {
+ SwScriptFieldType* pType =
+ (SwScriptFieldType*)pSh->GetFldType(0, RES_SCRIPTFLD);
+ pFld = new SwScriptField(pType, rPar1, rPar2, (BOOL)nFormat);
+ break;
+ }
+ case TYP_AUTHORITY:
+ {
+ SwAuthorityFieldType* pType =
+ (SwAuthorityFieldType*)pSh->GetFldType(0, RES_AUTHORITY);
+ if(!pType)
+ {
+ pType =
+ (SwAuthorityFieldType*)pSh->InsertFldType(
+ SwAuthorityFieldType(pSh->GetDoc()));
+ }
+ pFld = new SwAuthorityField(pType, rPar1);
+ }
+ break;
+ case TYP_DATEFLD:
+ case TYP_TIMEFLD:
+ {
+ USHORT nSub = (nType == TYP_DATEFLD) ? DATEFLD : TIMEFLD;
+ nSub |= nSubType == DATE_VAR ? 0 : FIXEDFLD;
+
+ SwDateTimeFieldType* pTyp =
+ (SwDateTimeFieldType*)pSh->GetFldType(0, RES_DATETIMEFLD);
+ pFld = new SwDateTimeField(pTyp, nSub, nFormat);
+ pFld->SetPar2(rPar2);
+ break;
+ }
+ case TYP_FILENAMEFLD:
+ {
+ SwFileNameFieldType* pTyp =
+ (SwFileNameFieldType*)pSh->GetFldType(0, RES_FILENAMEFLD);
+ pFld = new SwFileNameField(pTyp, nFormat);
+ break;
+ }
+ case TYP_TEMPLNAMEFLD:
+ {
+ SwTemplNameFieldType* pTyp =
+ (SwTemplNameFieldType*)pSh->GetFldType(0, RES_TEMPLNAMEFLD);
+ pFld = new SwTemplNameField(pTyp, nFormat);
+ break;
+ }
+ case TYP_CHAPTERFLD:
+ { USHORT nByte = rPar2.ToInt32();
+ SwChapterFieldType* pTyp =
+ (SwChapterFieldType*)pSh->GetFldType(0, RES_CHAPTERFLD);
+ pFld = new SwChapterField(pTyp, nFormat);
+ nByte = Max(USHORT(1), nByte);
+ nByte = Min(nByte, USHORT(MAXLEVEL));
+ nByte -= 1;
+ ((SwChapterField*)pFld)->SetLevel((BYTE)nByte);
+ break;
+ }
+ case TYP_NEXTPAGEFLD:
+ case TYP_PREVPAGEFLD:
+ case TYP_PAGENUMBERFLD:
+ {
+ short nOff = rPar2.ToInt32();
+
+ if(nType == TYP_NEXTPAGEFLD)
+ {
+ if( SVX_NUM_CHAR_SPECIAL == nFormat )
+ nOff = 1;
+ else
+ nOff += 1;
+ nSubType = PG_NEXT;
+ }
+ else if(nType == TYP_PREVPAGEFLD)
+ {
+ if( SVX_NUM_CHAR_SPECIAL == nFormat )
+ nOff = -1;
+ else
+ nOff -= 1;
+ nSubType = PG_PREV;
+ }
+ else
+ nSubType = PG_RANDOM;
+
+ SwPageNumberFieldType* pTyp =
+ (SwPageNumberFieldType*)pSh->GetFldType(0, RES_PAGENUMBERFLD);
+ pFld = new SwPageNumberField(pTyp, nSubType, nFormat, nOff);
+
+ if( SVX_NUM_CHAR_SPECIAL == nFormat &&
+ ( PG_PREV == nSubType || PG_NEXT == nSubType ) )
+ ((SwPageNumberField*)pFld)->SetUserString( rPar2 );
+ break;
+ }
+ case TYP_DOCSTATFLD:
+ { SwDocStatFieldType* pTyp =
+ (SwDocStatFieldType*)pSh->GetFldType(0, RES_DOCSTATFLD);
+ pFld = new SwDocStatField(pTyp, nSubType, nFormat);
+ break;
+ }
+ case TYP_AUTHORFLD:
+ { SwAuthorFieldType* pTyp =
+ (SwAuthorFieldType*)pSh->GetFldType(0, RES_AUTHORFLD);
+ pFld = new SwAuthorField(pTyp, nFormat);
+ break;
+ }
+ case TYP_CONDTXTFLD:
+ case TYP_HIDDENTXTFLD:
+ {
+ SwHiddenTxtFieldType* pTyp =
+ (SwHiddenTxtFieldType*)pSh->GetFldType(0, RES_HIDDENTXTFLD);
+ pFld = new SwHiddenTxtField(pTyp, TRUE, rPar1, rPar2, FALSE, nType);
+ bExp = TRUE;
+ break;
+ }
+ case TYP_HIDDENPARAFLD:
+ {
+ SwHiddenParaFieldType* pTyp =
+ (SwHiddenParaFieldType*)pSh->GetFldType(0, RES_HIDDENPARAFLD);
+ pFld = new SwHiddenParaField(pTyp, rPar1);
+ bExp = TRUE;
+ break;
+ }
+ case TYP_SETREFFLD:
+ {
+ if( rPar1.Len() > 0 && CanInsertRefMark( rPar1 ) )
+ {
+ pSh->SetAttr( SwFmtRefMark( rPar1 ) );
+ return TRUE;
+ }
+ return FALSE;
+ }
+ case TYP_GETREFFLD:
+ {
+ SwGetRefFieldType* pTyp =
+ (SwGetRefFieldType*)pSh->GetFldType(0, RES_GETREFFLD);
+ USHORT nSeqNo = rPar2.ToInt32();
+ pFld = new SwGetRefField(pTyp, rPar1, nSubType, nSeqNo, nFormat);
+ bExp = TRUE;
+ break;
+ }
+ case TYP_DDEFLD:
+ {
+ //JP 28.08.95: DDE-Topics/-Items koennen Blanks in ihren
+ // Namen haben! Wird hier noch nicht beachtet.
+ String sCmd( rPar2 );
+ USHORT nTmpPos = sCmd.SearchAndReplace( ' ', cTokenSeperator );
+ sCmd.SearchAndReplace( ' ', cTokenSeperator, nTmpPos );
+
+ SwDDEFieldType* pTyp = (SwDDEFieldType*)pSh->InsertFldType(
+ SwDDEFieldType( rPar1, sCmd, (USHORT)nFormat ));
+ pFld = new SwDDEField( pTyp );
+ break;
+ }
+ case TYP_MACROFLD:
+ {
+ SwMacroFieldType* pTyp =
+ (SwMacroFieldType*)pSh->GetFldType(0, RES_MACROFLD);
+
+ pFld = new SwMacroField(pTyp, rPar1, rPar2);
+ break;
+ }
+ case TYP_INTERNETFLD:
+ {
+ SwFmtINetFmt aFmt( rPar1, sCurFrame );
+ if( pMacroItem )
+ aFmt.SetMacroTbl( &pMacroItem->GetMacroTable() );
+ return pSh->InsertURL( aFmt, rPar2 );
+ }
+ case TYP_JUMPEDITFLD:
+ {
+ SwJumpEditFieldType* pTyp =
+ (SwJumpEditFieldType*)pSh->GetFldType(0, RES_JUMPEDITFLD);
+
+ pFld = new SwJumpEditField(pTyp, nFormat, rPar1, rPar2 );
+ break;
+ }
+ case TYP_DOCINFOFLD:
+ {
+ SwDocInfoFieldType* pTyp = (SwDocInfoFieldType*)pSh->GetFldType(
+ 0, RES_DOCINFOFLD );
+ pFld = new SwDocInfoField(pTyp, nSubType, nFormat);
+ break;
+ }
+ case TYP_EXTUSERFLD:
+ {
+ SwExtUserFieldType* pTyp = (SwExtUserFieldType*)pSh->GetFldType(
+ 0, RES_EXTUSERFLD);
+ pFld = new SwExtUserField(pTyp, nSubType, nFormat);
+ break;
+ }
+ case TYP_DBFLD:
+ {
+ String sDBName;
+ String sPar1;
+
+ if (rPar1.Search(DB_DELIM) == STRING_NOTFOUND)
+ {
+ sDBName = pSh->GetDBName();
+ sPar1 = rPar1;
+ }
+ else
+ {
+ sDBName = rPar1.GetToken(0, DB_DELIM);
+ sDBName += DB_DELIM;
+ sDBName += rPar1.GetToken(1, DB_DELIM);
+ sPar1 = rPar1.GetToken(2, DB_DELIM);
+ }
+
+ if (sDBName.Len() && pSh->GetDBName() != sDBName)
+ pSh->ChgDBName(sDBName);
+
+ SwDBFieldType* pTyp = (SwDBFieldType*)pSh->InsertFldType(
+ SwDBFieldType(pSh->GetDoc(), sPar1, sDBName) );
+ pFld = new SwDBField(pTyp);
+ pFld->SetSubType(nSubType);
+
+ if( !(nSubType & SUB_OWN_FMT) ) // Datenbankformat ermitteln
+ {
+#ifdef REPLACE_OFADBMGR
+ String sSourceName(sDBName.GetToken(0, DB_DELIM));
+ String sTableName(sDBName.GetToken(1, DB_DELIM));
+ nFormat = pSh->GetNewDBMgr()->GetColumnFmt( sSourceName, sTableName, sPar1,
+ pSh->GetNumberFormatter(), GetCurrLanguage() );
+#else
+ nFormat = pSh->GetNewDBMgr()->GetColumnFmt( sDBName, sPar1,
+ pSh->GetNumberFormatter() );
+#endif
+ }
+ pFld->ChangeFormat( nFormat );
+
+ bExp = TRUE;
+ break;
+ }
+ case TYP_DBSETNUMBERFLD:
+ case TYP_DBNUMSETFLD:
+ case TYP_DBNEXTSETFLD:
+ case TYP_DBNAMEFLD:
+ {
+ USHORT nPos, nTablePos, nExpPos;
+ String sDBName, sPar1;
+
+ // DBName aus rPar1 extrahieren. Format: DBName.TableName.ExpStrg
+ if ((nTablePos = rPar1.Search(DB_DELIM)) != STRING_NOTFOUND)
+ sDBName = rPar1.Copy(0, nTablePos++);
+ if ((nExpPos = rPar1.Search(DB_DELIM, nTablePos)) != STRING_NOTFOUND)
+ {
+ sDBName += DB_DELIM;
+ sDBName += rPar1.Copy(nTablePos, nExpPos++ - nTablePos);
+ }
+ if (nExpPos != STRING_NOTFOUND)
+ nPos = nExpPos;
+ else if (nTablePos != STRING_NOTFOUND)
+ nPos = nTablePos;
+ else
+ nPos = 0;
+ sPar1 = rPar1.Copy(nPos);
+
+#ifdef REPLACE_OFADBMGR
+ if (sDBName.Len() && pSh->GetDBName() != sDBName)
+#else
+ if (sDBName.Len() && pSh->GetDBName().ToUpperAscii() != sDBName.ToUpperAscii())
+#endif
+ pSh->ChgDBName(sDBName);
+
+ switch(nType)
+ {
+ case TYP_DBNAMEFLD:
+ {
+ SwDBNameFieldType* pTyp =
+ (SwDBNameFieldType*)pSh->GetFldType(0, RES_DBNAMEFLD);
+ pFld = new SwDBNameField(pTyp, sDBName);
+
+ break;
+ }
+ case TYP_DBNEXTSETFLD:
+ {
+ SwDBNextSetFieldType* pTyp = (SwDBNextSetFieldType*)pSh->GetFldType(
+ 0, RES_DBNEXTSETFLD);
+ pFld = new SwDBNextSetField(pTyp, sPar1, rPar2, sDBName);
+ bExp = TRUE;
+ break;
+ }
+ case TYP_DBNUMSETFLD:
+ {
+ SwDBNumSetFieldType* pTyp = (SwDBNumSetFieldType*)pSh->GetFldType(
+ 0, RES_DBNUMSETFLD);
+ pFld = new SwDBNumSetField( pTyp, sPar1, rPar2, sDBName);
+ bExp = TRUE;
+ break;
+ }
+ case TYP_DBSETNUMBERFLD:
+ {
+ SwDBSetNumberFieldType* pTyp = (SwDBSetNumberFieldType*)
+ pSh->GetFldType(0, RES_DBSETNUMBERFLD);
+ pFld = new SwDBSetNumberField( pTyp, sDBName, nFormat);
+ bExp = TRUE;
+ break;
+ }
+ }
+ break;
+ }
+ case TYP_USERFLD:
+ {
+ SwUserFieldType* pTyp =
+ (SwUserFieldType*)pSh->GetFldType(RES_USERFLD, rPar1);
+
+ // nur wenn vorhanden
+ if(!pTyp)
+ {
+ pTyp = (SwUserFieldType*)pSh->InsertFldType(
+ SwUserFieldType(pSh->GetDoc(), rPar1));
+ }
+ if (pTyp->GetContent(nFormat) != rPar2)
+ pTyp->SetContent(rPar2, nFormat);
+ pFld = new SwUserField(pTyp, 0, nFormat);
+ if (pFld->GetSubType() != nSubType)
+ pFld->SetSubType(nSubType);
+ bTbl = TRUE;
+ break;
+ }
+ case TYP_INPUTFLD:
+ {
+ if ((nSubType & 0x00ff) == INP_VAR)
+ {
+ SwSetExpFieldType* pTyp = (SwSetExpFieldType*)
+ pSh->GetFldType(RES_SETEXPFLD, rPar1);
+
+ // kein Experssion Type mit dem Namen vorhanden -> anlegen
+ if(pTyp)
+ {
+ SwSetExpField* pExpFld =
+ new SwSetExpField(pTyp, aEmptyStr, nFormat);
+
+ // Typ vom SwSetExpFieldType nicht veraendern:
+ USHORT nOldSubType = pExpFld->GetSubType();
+ pExpFld->SetSubType(nOldSubType | (nSubType & 0xff00));
+
+ pExpFld->SetPromptText(rPar2);
+ pExpFld->SetInputFlag(TRUE) ;
+ bExp = TRUE;
+ pFld = pExpFld;
+ }
+ else
+ return FALSE;
+ }
+ else
+ {
+ SwInputFieldType* pTyp =
+ (SwInputFieldType*)pSh->GetFldType(0, RES_INPUTFLD);
+
+ SwInputField* pInpFld =
+ new SwInputField(pTyp, rPar1, rPar2, nSubType|SUB_INVISIBLE, nFormat);
+ pFld = pInpFld;
+ }
+
+ // Dialog starten
+ //
+ pSh->StartInputFldDlg(pFld, FALSE);
+ break;
+ }
+ case TYP_SETFLD:
+ {
+ if (!rPar2.Len()) // Leere Variablen sind nicht erlaubt
+ return FALSE;
+
+ SwSetExpFieldType* pTyp = (SwSetExpFieldType*)pSh->InsertFldType(
+ SwSetExpFieldType(pSh->GetDoc(), rPar1) );
+
+ SwSetExpField* pExpFld = new SwSetExpField( pTyp, rPar2, nFormat);
+ pExpFld->SetSubType(nSubType);
+ pExpFld->SetPar2(rPar2);
+ bExp = TRUE;
+ pFld = pExpFld;
+ break;
+ }
+ case TYP_SEQFLD:
+ {
+ SwSetExpFieldType* pTyp = (SwSetExpFieldType*)pSh->InsertFldType(
+ SwSetExpFieldType(pSh->GetDoc(), rPar1, GSE_SEQ));
+
+ BYTE nLevel = nSubType & 0xff;
+
+ pTyp->SetOutlineLvl(nLevel);
+ if (nLevel != 0x7f && cSeparator == 0)
+ cSeparator = '.';
+
+ pTyp->SetDelimiter(cSeparator);
+ SwSetExpField* pExpFld = new SwSetExpField(pTyp, rPar2, nFormat);
+ bExp = TRUE;
+ pFld = pExpFld;
+ nSubType = GSE_SEQ;
+ break;
+ }
+ case TYP_GETFLD:
+ {
+ // gibt es ein entprechendes SetField
+ SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*)
+ pSh->GetFldType(RES_SETEXPFLD, rPar1);
+
+ if(pSetTyp)
+ {
+ SwGetExpFieldType* pTyp = (SwGetExpFieldType*)pSh->GetFldType(
+ 0, RES_GETEXPFLD);
+ pFld = new SwGetExpField(pTyp, rPar1, pSetTyp->GetType(), nFormat);
+ pFld->SetSubType(nSubType | pSetTyp->GetType());
+ bExp = TRUE;
+ }
+ else
+ return FALSE;
+ break;
+ }
+ case TYP_FORMELFLD:
+ {
+ if(pSh->GetFrmType(0,FALSE) & FRMTYPE_TABLE)
+ {
+ pSh->StartAllAction();
+
+ SvNumberFormatter* pFormatter = pSh->GetDoc()->GetNumberFormatter();
+ const SvNumberformat* pEntry = pFormatter->GetEntry(nFormat);
+
+ if (pEntry)
+ {
+ SfxStringItem aFormat(FN_NUMBER_FORMAT, pEntry->GetFormatstring());
+ pSh->GetView().GetViewFrame()->GetDispatcher()->
+ Execute(FN_NUMBER_FORMAT, SFX_CALLMODE_SYNCHRON, &aFormat, 0L);
+ }
+
+ SfxItemSet aBoxSet( pSh->GetAttrPool(),
+ RES_BOXATR_FORMULA, RES_BOXATR_FORMULA );
+
+ String sFml( rPar2 );
+ if( sFml.EraseLeadingChars().Len() &&
+ '=' == sFml.GetChar( 0 ) )
+ sFml.Erase( 0, 1 );
+
+ aBoxSet.Put( SwTblBoxFormula( sFml ));
+ pSh->SetTblBoxFormulaAttrs( aBoxSet );
+ pSh->UpdateTable();
+
+ pSh->EndAllAction();
+ return TRUE;
+
+/* // In der Tabelle Tabellenformeln einfuegen
+ SwTblFieldType* pTyp = (SwTblFieldType*)pSh->GetFldType(
+ 0, RES_TABLEFLD);
+ pFld = new SwTblField(pTyp, rPar2, GSE_EXPR, nFormat);
+ bTbl = TRUE;*/
+ }
+ else
+ {
+ SwGetExpFieldType* pTyp = (SwGetExpFieldType*)
+ pSh->GetFldType(0, RES_GETEXPFLD);
+ pFld = new SwGetExpField(pTyp, rPar2, GSE_FORMULA, nFormat);
+ pFld->SetSubType(nSubType);
+ bExp = TRUE;
+ }
+ break;
+ }
+ case TYP_SETREFPAGEFLD:
+ pFld = new SwRefPageSetField( (SwRefPageSetFieldType*)
+ pSh->GetFldType( 0, RES_REFPAGESETFLD ),
+ rPar2.ToInt32(), 0 != nSubType );
+ bPageVar = TRUE;
+ break;
+
+ case TYP_GETREFPAGEFLD:
+ pFld = new SwRefPageGetField( (SwRefPageGetFieldType*)
+ pSh->GetFldType( 0, RES_REFPAGEGETFLD ), nFormat );
+ bPageVar = TRUE;
+ break;
+
+ default:
+ { ASSERT(!this, "Falscher Feldtyp");
+ return FALSE;
+ }
+ }
+ ASSERT(pFld, "Feld nicht vorhanden");
+
+ USHORT nLang = GetCurrLanguage();
+
+ // Language
+ pFld->SetLanguage(nLang);
+
+ // Einfuegen
+ pSh->StartAllAction();
+
+ pSh->Insert(*pFld);
+
+ if(bExp && bEvalExp)
+ pSh->UpdateExpFlds(TRUE);
+
+ if(bTbl)
+ {
+ pSh->Left();
+ pSh->UpdateFlds(*pFld);
+ pSh->Right();
+ }
+ else if( bPageVar )
+ ((SwRefPageGetFieldType*)pSh->GetFldType( 0, RES_REFPAGEGETFLD ))->UpdateFlds();
+ else if( TYP_GETREFFLD == nType )
+ pFld->GetTyp()->Modify( 0, 0 );
+
+ // temporaeres Feld loeschen
+ delete pFld;
+
+ pSh->EndAllAction();
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Felder Update
+ --------------------------------------------------------------------*/
+
+
+void SwFldMgr::UpdateCurFld(ULONG nFormat,
+ const String& rPar1,
+ const String& rPar2)
+{
+ // Format aendern
+ ASSERT(pCurFld, "kein Feld an der CursorPos");
+
+ SwFieldType* pType = pCurFld->GetTyp();
+ const USHORT nTypeId = pCurFld->GetTypeId();
+
+ SwWrtShell &rSh = pWrtShell ? *pWrtShell : *::lcl_GetShell();
+ rSh.StartAllAction();
+
+ BOOL bSetPar2 = TRUE;
+ String sPar1( rPar1 );
+ String sPar2( rPar2 );
+
+ // Order to Format
+ switch( nTypeId )
+ {
+ case TYP_DDEFLD:
+ {
+ //JP 28.08.95: DDE-Topics/-Items koennen Blanks in ihren
+ // Namen haben! Wird hier noch nicht beachtet.
+ USHORT nTmpPos = sPar2.SearchAndReplace( ' ', cTokenSeperator );
+ sPar2.SearchAndReplace( ' ', cTokenSeperator, nTmpPos );
+ break;
+ }
+
+ case TYP_CHAPTERFLD:
+ {
+ USHORT nByte = rPar2.ToInt32();
+ nByte = Max(USHORT(1), nByte);
+ nByte = Min(nByte, USHORT(MAXLEVEL));
+ nByte -= 1;
+ ((SwChapterField*)pCurFld)->SetLevel((BYTE)nByte);
+ bSetPar2 = FALSE;
+ break;
+ }
+
+ case TYP_SCRIPTFLD:
+ ((SwScriptField*)pCurFld)->SetCodeURL((BOOL)nFormat);
+ break;
+
+ case TYP_NEXTPAGEFLD:
+ if( SVX_NUM_CHAR_SPECIAL == nFormat )
+ {
+ ((SwPageNumberField*)pCurFld)->SetUserString( sPar2 );
+ sPar2 = 1;
+ }
+ else
+ {
+ if( nFormat + 2 == SVX_NUM_PAGEDESC )
+ nFormat = SVX_NUM_PAGEDESC;
+ short nOff = sPar2.ToInt32();
+ nOff += 1;
+ sPar2 = nOff;
+ }
+ break;
+
+ case TYP_PREVPAGEFLD:
+ if( SVX_NUM_CHAR_SPECIAL == nFormat )
+ {
+ ((SwPageNumberField*)pCurFld)->SetUserString( sPar2 );
+ sPar2 = -1;
+ }
+ else
+ {
+ if( nFormat + 2 == SVX_NUM_PAGEDESC )
+ nFormat = SVX_NUM_PAGEDESC;
+ short nOff = sPar2.ToInt32();
+ nOff -= 1;
+ sPar2 = nOff;
+ }
+ break;
+
+ case TYP_PAGENUMBERFLD:
+ case TYP_GETREFPAGEFLD:
+ if( nFormat + 2 == SVX_NUM_PAGEDESC )
+ nFormat = SVX_NUM_PAGEDESC;
+ break;
+
+ case TYP_GETREFFLD:
+ {
+ bSetPar2 = FALSE;
+ ((SwGetRefField*)pCurFld)->SetSubType( rPar2.ToInt32() );
+ USHORT nPos = rPar2.Search( '|' );
+ if( STRING_NOTFOUND != nPos )
+ ((SwGetRefField*)pCurFld)->SetSeqNo( rPar2.Copy( nPos + 1 ).ToInt32());
+ }
+ break;
+ }
+
+ // Format setzen
+ // Format wegen NumberFormatter vor SetPar2 einstellen!
+ pCurFld->ChangeFormat(nFormat);
+
+ pCurFld->SetPar1( sPar1 );
+ if( bSetPar2 )
+ pCurFld->SetPar2( sPar2 );
+
+ // Update anschmeissen
+ if(nTypeId == TYP_DDEFLD ||
+ nTypeId == TYP_USERFLD ||
+ nTypeId == TYP_USRINPFLD)
+ {
+ pType->UpdateFlds();
+ rSh.SetModified();
+ }
+ else
+ rSh.SwEditShell::UpdateFlds(*pCurFld);
+
+ rSh.EndAllAction();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Setzen / Erfragen Werte von Benutzerfeldern aus BASIC
+------------------------------------------------------------------------*/
+
+
+BOOL SwFldMgr::SetFieldValue(const String &rFieldName,
+ const String &rValue)
+{
+ SwWrtShell* pSh = pWrtShell ? pWrtShell : ::lcl_GetShell();
+ SwUserFieldType* pType = (SwUserFieldType*)pWrtShell->InsertFldType(
+ SwUserFieldType( pSh->GetDoc(), rFieldName ));
+
+ if(pType)
+ pType->SetContent(rValue);
+ return 0 != pType;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Wert Datenbankfeld erfragen
+------------------------------------------------------------------------*/
+
+
+String SwFldMgr::GetDataBaseFieldValue(const String &rDBName, const String &rFieldName, SwWrtShell* pSh)
+{
+ String sFieldName(rFieldName);
+
+ if (rDBName.Len())
+ sFieldName = rDBName;
+ else
+ sFieldName = pSh->GetDBName();
+ sFieldName += DB_DELIM;
+ sFieldName += rFieldName;
+
+ SwFieldList aLst(pWrtShell ? pWrtShell : ::lcl_GetShell());
+
+ aLst.InsertFields(RES_DBFLD, &sFieldName);
+ SwField* pFld = aLst.GetLastField();
+
+ if(!pFld)
+ pFld = aLst.GetNextField();
+
+ if(pFld)
+ return pFld->Expand();
+
+ return aEmptyStr;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ist das Datenbankfeld numerisch?
+ Anm: Im Fehlerfall wird TRUE returnt.
+ --------------------------------------------------------------------*/
+
+#ifdef REPLACE_OFADBMGR
+BOOL SwFldMgr::IsDBNumeric(const String& rDBName, const String& rTblQryName,
+ BOOL bIsTable, const String& rFldName)
+{
+ BOOL bNumeric = TRUE;
+ if(!GetDBContext().is() || !xDBContext->hasByName(rDBName))
+ return bNumeric;
+ Any aDBSource = xDBContext->getByName(rDBName);
+ Reference<XDataSource>* pxSource = (Reference<XDataSource>*)aDBSource.getValue();
+ Reference<XConnection> xConnection;
+ try
+ {
+ OUString sDummy;
+ xConnection = (*pxSource)->getConnection(sDummy, sDummy);
+ }
+ catch(...) {}
+ Reference<XColumnsSupplier> xColsSupplier;
+
+ if(bIsTable)
+ {
+ Reference<XTablesSupplier> xTSupplier = Reference<XTablesSupplier>(xConnection, UNO_QUERY);
+ if(xTSupplier.is())
+ {
+ Reference<XNameAccess> xTbls = xTSupplier->getTables();
+ DBG_ASSERT(xTbls->hasByName(rTblQryName), "table not available anymore?")
+ try
+ {
+ Any aTable = xTbls->getByName(rTblQryName);
+ Reference<XPropertySet> xPropSet = *(Reference<XPropertySet>*)aTable.getValue();
+ xColsSupplier = Reference<XColumnsSupplier>(xPropSet, UNO_QUERY);
+ }
+ catch(...){}
+ }
+ }
+ else
+ {
+ Reference<XQueriesSupplier> xQSupplier = Reference<XQueriesSupplier>(xConnection, UNO_QUERY);
+ if(xQSupplier.is())
+ {
+ Reference<XNameAccess> xQueries = xQSupplier->getQueries();
+ DBG_ASSERT(xQueries->hasByName(rTblQryName), "table not available anymore?")
+ try
+ {
+ Any aQuery = xQueries->getByName(rTblQryName);
+ Reference<XPropertySet> xPropSet = *(Reference<XPropertySet>*)aQuery.getValue();
+ xColsSupplier = Reference<XColumnsSupplier>(xPropSet, UNO_QUERY);
+ }
+ catch(...){}
+ }
+ }
+
+ if(xColsSupplier.is())
+ {
+ Reference <XNameAccess> xCols = xColsSupplier->getColumns();
+ if(xCols.is() && xCols->hasByName(rFldName))
+ {
+ Any aCol = xCols->getByName(rFldName);
+ Reference <XPropertySet> xCol = *(Reference <XPropertySet>*)aCol.getValue();
+ Any aType = xCol->getPropertyValue(C2S("Type"));
+ sal_Int32 eDataType;
+ aType >>= eDataType;
+ switch(eDataType)
+ {
+ case DataType::BIT:
+ case DataType::TINYINT:
+ case DataType::SMALLINT:
+ case DataType::INTEGER:
+ case DataType::BIGINT:
+ case DataType::FLOAT:
+ case DataType::REAL:
+ case DataType::DOUBLE:
+ case DataType::NUMERIC:
+ case DataType::DECIMAL:
+ case DataType::DATE:
+ case DataType::TIME:
+ case DataType::TIMESTAMP:
+ break;
+
+ case DataType::BINARY:
+ case DataType::VARBINARY:
+ case DataType::LONGVARBINARY:
+ case DataType::SQLNULL:
+ case DataType::OTHER:
+ case DataType::OBJECT:
+ case DataType::DISTINCT:
+ case DataType::STRUCT:
+ case DataType::ARRAY:
+ case DataType::BLOB:
+ case DataType::CLOB:
+ case DataType::REF:
+ case DataType::CHAR:
+ case DataType::VARCHAR:
+ case DataType::LONGVARCHAR:
+ default:
+ bNumeric = FALSE;
+ }
+ }
+ }
+ return bNumeric;
+}
+
+#else
+BOOL SwFldMgr::IsDBNumeric(const String& rDBName, USHORT nCol)
+{
+ SwWrtShell *pSh = ::GetActiveView()->GetWrtShellPtr();
+ String sDBName;
+ if (!rDBName.Len())
+ sDBName = pSh->GetDBDesc();
+ else
+ sDBName = rDBName;
+
+ SwNewDBMgr* pDBMgr = pSh->GetNewDBMgr();
+ BOOL bRet = TRUE;
+ if(nCol > 0 && pDBMgr->OpenDB(DBMGR_STD, sDBName, FALSE))
+ {
+ short nType = pDBMgr->GetColumnFormatType(DBMGR_STD, nCol);
+
+ switch (nType)
+ {
+ case dbCurrency:
+ case dbCounter:
+ case dbNumeric:
+ case dbDateTime:
+ case dbDate:
+ case dbTime:
+ case dbBool:
+ case dbDecimal:
+ case dbBigInt:
+ bRet = TRUE;
+ break;
+
+ default:
+ bRet = FALSE;
+ break;
+ }
+ }
+ return bRet;
+}
+
+BOOL SwFldMgr::IsDBNumeric(const String& rDBName, const String& rFldName)
+{
+ SwWrtShell *pSh = ::GetActiveView()->GetWrtShellPtr();
+ SwNewDBMgr* pDBMgr = pSh->GetNewDBMgr();
+
+ String sDBName;
+ if (!rDBName.Len())
+ sDBName = pSh->GetDBDesc();
+ else
+ sDBName = rDBName;
+
+ if( pDBMgr->OpenDB(DBMGR_STD, sDBName, FALSE))
+ {
+ int nCol = pDBMgr->GetColumnPos(DBMGR_STD, rFldName);
+ if (nCol > 0)
+ return IsDBNumeric(rDBName, nCol);
+ }
+ return TRUE;
+}
+#endif
+
+/*--------------------------------------------------------------------
+ Beschreibung: ExpressionFields explizit evaluieren
+ --------------------------------------------------------------------*/
+
+
+void SwFldMgr::EvalExpFlds(SwWrtShell* pSh)
+{
+ if (pSh == NULL)
+ pSh = pWrtShell ? pWrtShell : ::lcl_GetShell();
+
+ if(pSh)
+ {
+ pSh->StartAllAction();
+ pSh->UpdateExpFlds(TRUE);
+ pSh->EndAllAction();
+ }
+}
+
+
+USHORT SwFldMgr::GetCurrLanguage() const
+{
+ SwWrtShell* pSh = pWrtShell ? pWrtShell : ::lcl_GetShell();
+ if(pSh)
+ {
+ SfxItemSet aSet( pSh->GetAttrPool(), RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE);
+ pSh->GetAttr(aSet);
+ return ((const SvxLanguageItem&)aSet.Get( RES_CHRATR_LANGUAGE ) ).GetLanguage();
+ }
+
+ LanguageType eCurLanguage = GetpApp()->GetAppInternational().GetLanguage();
+
+ return (USHORT)eCurLanguage;
+}
+
+
+void SwFieldType::_GetFldName()
+{
+ static const USHORT coFldCnt = STR_TYPE_END - STR_TYPE_BEGIN;
+
+ static USHORT __READONLY_DATA coFldNms[ coFldCnt ] = {
+ FLD_DATE_STD,
+ FLD_TIME_STD,
+ STR_FILENAMEFLD,
+ STR_DBNAMEFLD,
+ STR_CHAPTERFLD,
+ STR_PAGENUMBERFLD,
+ STR_DOCSTATFLD,
+ STR_AUTHORFLD,
+ STR_SETFLD,
+ STR_GETFLD,
+ STR_FORMELFLD,
+ STR_HIDDENTXTFLD,
+ STR_SETREFFLD,
+ STR_GETREFFLD,
+ STR_DDEFLD,
+ STR_MACROFLD,
+ STR_INPUTFLD,
+ STR_HIDDENPARAFLD,
+ STR_DOCINFOFLD,
+ STR_DBFLD,
+ STR_USERFLD,
+ STR_POSTITFLD,
+ STR_TEMPLNAMEFLD,
+ STR_SEQFLD,
+ STR_DBNEXTSETFLD,
+ STR_DBNUMSETFLD,
+ STR_DBSETNUMBERFLD,
+ STR_CONDTXTFLD,
+ STR_NEXTPAGEFLD,
+ STR_PREVPAGEFLD,
+ STR_EXTUSERFLD,
+ FLD_DATE_FIX,
+ FLD_TIME_FIX,
+ STR_SETINPUTFLD,
+ STR_USRINPUTFLD,
+ STR_SETREFPAGEFLD,
+ STR_GETREFPAGEFLD,
+ STR_INTERNETFLD,
+ STR_JUMPEDITFLD,
+ STR_SCRIPTFLD,
+ STR_AUTHORITY
+ };
+
+ // Infos fuer Felder einfuegen
+ SwFieldType::pFldNames = new SvStringsDtor( (BYTE)coFldCnt, 2 );
+ for( USHORT nIdx = 0; nIdx < coFldCnt; ++nIdx )
+ {
+ String* pTmp = new SW_RESSTR( coFldNms[ nIdx ] );
+ pTmp->EraseAllChars('~');
+ SwFieldType::pFldNames->Insert(pTmp, nIdx );
+ }
+}
+
+
+BOOL SwFldMgr::SetUserSubType(const String& rName, USHORT nType)
+{
+ BOOL bRet = FALSE;
+ SwUserFieldType *pType =
+ (SwUserFieldType *) (pWrtShell ?
+ pWrtShell->GetFldType(RES_USERFLD, rName) :
+ ::lcl_GetShell()->GetFldType(RES_USERFLD, rName));
+
+ if(pType)
+ {
+ pType->SetType(nType);
+ bRet = TRUE;
+ }
+ return bRet;
+}
+
+BOOL SwFldMgr::InsertURL( const String& rName,
+ const String& rVal,
+ const String& rFrame,
+ const SvxMacroItem* pItem)
+{
+ sCurFrame = rFrame;
+ pMacroItem = pItem;
+ BOOL bRet = InsertFld(TYP_INTERNETFLD, 0, rName, rVal, 0);
+ sCurFrame = aEmptyStr;
+ pMacroItem = 0;
+ return bRet;
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+BOOL SwFldMgr::ChooseMacro(const String &rSelMacro)
+{
+ String sSelMacro(rSelMacro);
+ SfxApplication* pSfxApp = SFX_APP();
+
+ if (sSelMacro.GetToken(0) == pSfxApp->GetName())
+ { // Malte arbeitet (faelschlicherweise) in ChooseMacro mit
+ // GetTitle statt GetName, daher diese Konvertierung:
+ sSelMacro.SetToken( 0, ';', Application::GetAppName());
+ }
+ else
+ {
+ SwWrtShell *pSh = pWrtShell ? pWrtShell : ::lcl_GetShell();
+ if (pSh)
+ {
+ SwDocShell* pDocSh = pSh->GetView().GetDocShell();
+
+ if (sSelMacro.GetToken(0) == pDocSh->GetName())
+ { // Malte arbeitet (faelschlicherweise) in ChooseMacro mit
+ // GetTitle statt GetName, daher diese Konvertierung:
+ sSelMacro.SetToken( 0, ';', pDocSh->GetTitle( SFX_TITLE_FILENAME ));
+ }
+ }
+ }
+ SbMethod* pMethod = BasicIDE::ChooseMacro(FALSE, TRUE, sSelMacro);
+ BOOL bRet = FALSE;
+
+ if (pMethod)
+ {
+ SbModule* pModule = pMethod->GetModule();
+ SbxObject* pObject = pModule->GetParent();
+
+ SetMacroModule(pModule);
+
+ ASSERT(pObject->IsA(TYPE(StarBASIC)), "Kein Basic gefunden!");
+
+ String sMacro(pMethod->GetName());
+ sMacro += '.';
+ sMacro += pModule->GetName();
+ sMacro += '.';
+ sMacro += pObject->GetName();
+ sMacro += '.';
+
+ StarBASIC* pLib = (StarBASIC*)pObject;
+ pSfxApp->EnterBasicCall();
+ BOOL bFound = FALSE;
+ BasicManager* pBasicMgr = pSfxApp->GetBasicManager();
+ SfxObjectShell* pDocShell = 0;
+ while ( !bFound && pBasicMgr )
+ {
+ USHORT nLibs = pBasicMgr->GetLibCount();
+ for ( USHORT nLib = 0; nLib < nLibs; nLib++ )
+ {
+ StarBASIC* pL = pBasicMgr->GetLib( nLib );
+ if ( pL == pLib )
+ {
+ bFound = TRUE;
+ break;
+ }
+ }
+ if(!bFound)
+ {
+ if ( pDocShell )
+ pDocShell = SfxObjectShell::GetNext( *pDocShell );
+ else
+ pDocShell = SfxObjectShell::GetFirst();
+ }
+
+ pBasicMgr = ( pDocShell ? pDocShell->GetBasicManager() : 0 );
+ }
+ pSfxApp->LeaveBasicCall();
+ if(pDocShell)
+ sMacro += pDocShell->GetName();
+ else
+ sMacro += pSfxApp->GetName();
+
+
+ SetMacroPath(sMacro);
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+ULONG SwFldMgr::GetDefaultFormat(USHORT nTypeId, BOOL bIsText, SvNumberFormatter* pFormatter, double* pVal)
+{
+ double fValue;
+ short nDefFormat;
+
+ switch (nTypeId)
+ {
+ case TYP_TIMEFLD:
+ case TYP_DATEFLD:
+ {
+ Date aDate;
+ Date* pNullDate = pFormatter->GetNullDate();
+
+ fValue = aDate - *pNullDate;
+
+ Time aTime;
+
+ ULONG nNumFmtTime = (ULONG)aTime.GetSec() + (ULONG)aTime.GetMin() * 60L +
+ (ULONG)aTime.GetHour() * 3600L;
+
+ fValue += (double)nNumFmtTime / 86400.0;
+
+ nDefFormat = (nTypeId == TYP_DATEFLD) ? NUMBERFORMAT_DATE : NUMBERFORMAT_TIME;
+ }
+ break;
+
+ default:
+ if (bIsText)
+ {
+ fValue = 0.0;
+ nDefFormat = NUMBERFORMAT_TEXT;
+ }
+ else
+ {
+ fValue = 0.0;
+ nDefFormat = NUMBERFORMAT_ALL;
+ }
+ break;
+ }
+
+ if (pVal)
+ *pVal = fValue;
+
+ return pFormatter->GetStandardFormat(nDefFormat, GetCurrLanguage());
+}
+#ifdef REPLACE_OFADBMGR
+/* -----------------------------23.06.00 17:32--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Reference<XNameAccess> SwFldMgr::GetDBContext()
+{
+ if(!xDBContext.is())
+ {
+ Reference< XMultiServiceFactory > xMgr( ::utl::getProcessServiceFactory() );
+ if( xMgr.is() )
+ {
+ Reference<XInterface> xInstance = xMgr->createInstance( C2U( "com.sun.star.sdb.DatabaseContext" ));
+ xDBContext = Reference<XNameAccess>(xInstance, UNO_QUERY) ;
+ }
+ DBG_ASSERT(xDBContext.is(), "com.sun.star.sdb.DataBaseContext: service not available")
+ }
+ return xDBContext;
+}
+#endif
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.285 2000/09/18 16:05:29 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.284 2000/09/07 15:59:23 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.283 2000/09/04 11:43:16 tbe
+ basicide, isetbrw, si, vcdlged moved from svx to basctl
+
+ Revision 1.282 2000/08/15 19:53:15 jp
+ Bug #76817#: DDE-Field - use the correct format Id's
+
+ Revision 1.281 2000/07/18 12:50:08 os
+ replace ofadbmgr
+
+ Revision 1.280 2000/06/30 08:52:52 os
+ #76541# string assertions removed
+
+ Revision 1.279 2000/06/26 13:36:00 os
+ new DataBase API
+
+ Revision 1.278 2000/05/26 07:21:29 os
+ old SW Basic API Slots removed
+
+ Revision 1.277 2000/04/18 15:17:32 os
+ UNICODE
+
+ Revision 1.276 2000/02/11 14:46:35 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.275 1999/10/21 10:50:48 os
+ SwAuthorityFieldType has SwDoc* member
+
+ Revision 1.274 1999/10/11 09:00:11 os
+ AuthorityField(Type):Import/Export interfaces
+
+ Revision 1.273 1999/09/20 09:46:33 os
+ second param at SwAuthorityField
+
+ Revision 1.272 1999/09/15 14:04:02 os
+ AuthorityField(-Type), RES_AUTHORITY
+
+ Revision 1.271 1999/01/12 20:16:08 JP
+ Bug #60431#: Datenbank Numberformate ggfs. ins Doc uebertragen
+
+
+ Rev 1.270 12 Jan 1999 21:16:08 JP
+ Bug #60431#: Datenbank Numberformate ggfs. ins Doc uebertragen
+
+ Rev 1.269 27 Nov 1998 14:52:16 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.268 17 Nov 1998 10:50:38 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.267 04 Nov 1998 12:11:08 OM
+ #58851# Fixe Dateinamenfelder bearbeiten
+
+ Rev 1.266 16 Oct 1998 12:55:46 OM
+ #57970# Zahlenformat Seitenvorlage fuer Statistikfeld
+
+ Rev 1.265 15 Oct 1998 16:02:50 OM
+ #57965# Variablennamen fuer Eingabefeld verwenden
+
+ Rev 1.264 15 Sep 1998 16:01:58 OM
+ #55149# In Dialogen Zahlenformat der Applikation verwenden
+
+ Rev 1.263 10 Aug 1998 16:40:00 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.262 24 Jul 1998 13:57:04 OM
+ #53246# Makros vorselektieren
+
+ Rev 1.261 07 Jul 1998 17:04:58 OM
+ #52283# Ueber alle DB-Feldbefehle navigieren
+
+ Rev 1.260 18 Jun 1998 11:16:42 OM
+ Kapitelebenen fuer Nummernkreise
+
+ Rev 1.259 20 May 1998 13:24:24 OM
+ Offset fuer DateTimeFields
+
+ Rev 1.258 15 Apr 1998 16:39:34 OM
+ #47244 SubType nich veraendern
+
+ Rev 1.257 26 Mar 1998 17:00:22 OM
+ Feldbefehl: Seitenanzahl im Html-Mode
+
+ Rev 1.256 26 Mar 1998 16:43:06 OM
+ Feldbefehl: Seitenanzahl im Html-Mode
+
+ Rev 1.255 06 Mar 1998 15:31:20 OM
+ Neue numerische Datenbankformate
+
+ Rev 1.254 13 Feb 1998 14:14:50 JP
+ UpdateFld: TYP_INETFLD gibt es nicht mehr!
+
+ Rev 1.253 27 Jan 1998 22:43:52 JP
+ GetNumDepend durch GetDepends ersetzt
+
+ Rev 1.252 13 Jan 1998 15:01:48 OM
+ Formula-Field wieder unterstuetzt
+
+ Rev 1.251 12 Jan 1998 17:10:20 OM
+ Formelfelder wieder erlauben
+
+ Rev 1.250 12 Jan 1998 12:42:58 OM
+ Nummernkreise nicht doppelt anlegen
+
+ Rev 1.249 06 Jan 1998 18:12:56 OM
+ Felbefehl-Dlg
+
+ Rev 1.248 19 Dec 1997 18:24:26 OM
+ Feldbefehl-bearbeiten Dlg
+
+ Rev 1.247 17 Dec 1997 15:23:36 OM
+ #46218# Korrekte Sprache besorgen
+
+ Rev 1.246 16 Dec 1997 17:01:42 OM
+ Feldbefehle bearbeiten
+
+ Rev 1.245 11 Dec 1997 16:58:02 OM
+ Feldumstellung
+
+ Rev 1.244 05 Dec 1997 13:16:38 OM
+ #45750# DDE-Field Delimiter fuer Basic wandeln
+
+ Rev 1.243 28 Nov 1997 19:50:38 MA
+ includes
+
+ Rev 1.242 27 Nov 1997 13:17:18 OM
+ Variablen-TP
+
+ Rev 1.241 25 Nov 1997 12:38:44 OM
+ Funktionen-TP
+
+ Rev 1.240 21 Nov 1997 17:19:44 OM
+ Feldbefehl-Umstellung: DocInfo
+
+ Rev 1.239 18 Nov 1997 14:33:14 OM
+ Sba-Umstellung 372
+
+ Rev 1.238 18 Nov 1997 10:33:12 OM
+ Neuer Feldbefehldialog
+
+ Rev 1.237 14 Nov 1997 11:42:36 OM
+ Aufgeraeumt
+
+ Rev 1.236 30 Oct 1997 14:30:52 OM
+ Feldbefehl-Umstellung
+
+ Rev 1.235 15 Oct 1997 11:57:24 OM
+ Feldumstellung
+
+ Rev 1.234 13 Oct 1997 11:43:16 OM
+ Feldumstellung
+
+ Rev 1.233 09 Oct 1997 16:13:44 OM
+ Feldumstellung
+
+ Rev 1.232 07 Oct 1997 10:51:26 OM
+ Feldumstellung
+
+ Rev 1.231 06 Oct 1997 15:40:44 OM
+ Feldumstellung
+
+ Rev 1.230 02 Oct 1997 15:21:44 OM
+ Feldumstellung
+
+ Rev 1.229 24 Sep 1997 15:18:56 OM
+ Feldumstellung
+
+ Rev 1.228 18 Sep 1997 14:34:02 OM
+ Feldumstellung
+
+ Rev 1.227 02 Sep 1997 09:55:56 OM
+ SDB-Headeranpassung
+
+ Rev 1.226 01 Sep 1997 13:12:40 OS
+ DLL-Umstellung
+
+ Rev 1.225 25 Aug 1997 11:54:20 OS
+ 368-Changes SBA
+
+ Rev 1.224 15 Aug 1997 12:11:24 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.223 09 Aug 1997 13:17:38 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.222 05 Aug 1997 12:38:24 MH
+ chg: header
+
+ Rev 1.221 09 Jul 1997 17:33:24 HJS
+ includes
+
+ Rev 1.220 29 May 1997 16:16:00 OM
+ URL in ScriptDialog eingeben
+
+ Rev 1.219 29 Apr 1997 16:10:22 OM
+ Unsichtbare Benutzerfelder
+
+ Rev 1.218 28 Apr 1997 16:31:04 JP
+ SetFldValue: immer einen FldTypen anlegen.
+
+ Rev 1.217 08 Apr 1997 10:32:42 MA
+ includes
+
+ Rev 1.216 04 Apr 1997 10:32:28 OM
+ Datenbanken nach Gebrauch wieder schliessen
+
+ Rev 1.215 14 Mar 1997 14:07:22 OM
+ #37666# GPF beim Bearbeiten alter 3.x DB-Feldbefehlen behoben
+
+ Rev 1.214 11 Mar 1997 13:15:12 OM
+ Datenbank beim Feldeinfuegen am Dok setzen
+
+ Rev 1.213 26 Feb 1997 02:22:20 OM
+ #37068# Feldbefhel-Dlg GPF gefixt
+
+ Rev 1.212 25 Feb 1997 20:04:10 OM
+ GPF in Feldbefehlen behoben
+
+ Rev 1.211 24 Feb 1997 20:29:30 OM
+ Offset-Fehler behoben
+
+ Rev 1.210 23 Feb 1997 21:14:42 OM
+ Aufgeraeumt
+
+ Rev 1.209 23 Feb 1997 15:05:54 OS
+ SetFieldValue liefert BOOL
+
+ Rev 1.208 22 Feb 1997 21:22:58 OM
+ Aufgeraeumt
+
+ Rev 1.207 22 Feb 1997 16:43:14 OM
+ Basic-Umstellung: OpenColumn
+
+ Rev 1.206 17 Feb 1997 10:39:18 OM
+ Neue Feldbefehle im Webmode
+
+ Rev 1.205 16 Feb 1997 10:48:20 OM
+ DBMGR an Ofa verschoben
+
+ Rev 1.204 13 Feb 1997 17:37:42 OM
+ Neu: javaedit
+
+ Rev 1.203 11 Feb 1997 16:52:04 OM
+ Eingabefeld ueber Basic ohne Dialog einfuegen
+
+ Rev 1.202 09 Feb 1997 16:34:06 OM
+ Variable setzen: html_on/off
+
+ Rev 1.201 07 Feb 1997 17:19:50 OM
+ Web-Mode fuer Feldbefehle-Dlg
+
+ Rev 1.200 07 Feb 1997 11:34:14 OM
+ Web-Mode fuer FeldbefehlDlg
+
+ Rev 1.199 05 Feb 1997 09:35:56 OM
+ Verschiebung in den Bereichen behoben
+
+ Rev 1.198 03 Feb 1997 17:08:58 OM
+ InsertURL aus Feldbefehl-Dlg entfernt
+
+ Rev 1.197 29 Jan 1997 13:14:18 MA
+ unbenutzes entfernt
+
+ Rev 1.196 17 Dec 1996 15:37:46 OM
+ Macrofelder editieren
+
+ Rev 1.195 11 Dec 1996 10:21:04 MA
+ Warnings
+
+ Rev 1.194 26 Nov 1996 20:39:32 JP
+ RefFelder werden jetzt mit&nach den ExpFeldern aktualisiert
+
+ Rev 1.193 13 Nov 1996 15:00:58 JP
+ neuer FeldTyp fuer Scripts (z.B. JavaScript)
+
+ Rev 1.192 11 Nov 1996 09:55:52 MA
+ ResMgr
+
+ Rev 1.191 08 Nov 1996 14:55:58 JP
+ ueberfluessiges Include entfernt
+
+ Rev 1.190 07 Nov 1996 15:46:56 JP
+ Bug #33084#: Referenzen nach einfuegen updaten
+
+ Rev 1.189 05 Nov 1996 22:45:06 JP
+ UpdateCurFld..() entfernt - ueberflussig; UpdateFld: GetRefFld sonderbehandelt
+
+ Rev 1.188 05 Nov 1996 15:32:42 JP
+ Umstellungen fuer neue Referenz-Seite
+
+ Rev 1.187 01 Nov 1996 03:55:46 MH
+ add: includes
+
+ Rev 1.186 24 Oct 1996 13:36:20 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.185 25 Sep 1996 14:11:48 OM
+ Neue Datenbanktrenner
+
+ Rev 1.184 19 Sep 1996 14:32:30 OM
+ Datenbank Basicanbindung
+
+ Rev 1.183 02 Sep 1996 18:43:00 JP
+ INetFeld entfernt
+
+ Rev 1.182 30 Aug 1996 12:45:42 OS
+ UpdateGlosPath kann Blockliste aktualisieren
+
+ Rev 1.181 28 Aug 1996 12:11:14 OS
+ includes
+
+ Rev 1.180 21 Aug 1996 13:08:52 OS
+ Manager gfs. mit wrtshell konstruieren
+
+ Rev 1.179 20 Aug 1996 17:22:18 JP
+ Bug #30489#: Mehrfachselektion bei SetRef-Feldern abklemmen
+
+ Rev 1.178 16 Aug 1996 11:27:56 OM
+ Dokinfo aufgegliedert
+
+ Rev 1.177 15 Aug 1996 09:56:44 AMA
+ Fix: Macros am INetFmt setzen.
+
+ Rev 1.176 12 Aug 1996 10:50:04 AMA
+ Chg: SwFmtINetFmt jetzt mit TargetFrame im CTor.
+
+ Rev 1.175 08 Aug 1996 15:33:34 AMA
+ New: Benutze InsertURL (als Textattribut) an der EditShell
+
+ Rev 1.174 05 Aug 1996 15:18:24 OM
+ Datenbankumstellung
+
+ Rev 1.173 25 Jul 1996 16:41:54 OM
+ Umstellung auf Tabellen
+
+ Rev 1.172 23 Jul 1996 14:29:40 JP
+ PageNext/-Prev: mit Offset; InsertField: nach Left auch wieder ein Right rufen
+
+ Rev 1.171 10 Jul 1996 17:47:56 OM
+ LocalizeDBName in Expfld verschoben
+
+
+*************************************************************************/
+
diff --git a/sw/source/ui/fldui/fldpage.cxx b/sw/source/ui/fldui/fldpage.cxx
new file mode 100644
index 000000000000..9af15462a85d
--- /dev/null
+++ b/sw/source/ui/fldui/fldpage.cxx
@@ -0,0 +1,544 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldpage.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+
+#ifndef _DBFLD_HXX //autogen
+#include <dbfld.hxx>
+#endif
+#ifndef _FLDDAT_HXX
+#include <flddat.hxx>
+#endif
+#ifndef _FMTFLD_HXX //autogen
+#include <fmtfld.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _FLDEDT_HXX
+#include <fldedt.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx>
+#endif
+#ifndef _FLDTDLG_HXX
+#include <fldtdlg.hxx>
+#endif
+#ifndef _FLDPAGE_HXX
+#include <fldpage.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldPage::SwFldPage(Window *pParent, const ResId &rId, const SfxItemSet &rAttrSet ) :
+ SfxTabPage (pParent, rId, rAttrSet),
+ nPageId (rId.GetId()),
+ bFldDlgHtmlMode (FALSE),
+ nFldDlgAktGrpSel(0),
+ nTypeSel (LISTBOX_ENTRY_NOTFOUND),
+ nSelectionSel (LISTBOX_ENTRY_NOTFOUND),
+ bFldEdit (FALSE),
+ pCurFld (0),
+ bInsert (TRUE),
+ bRefresh (FALSE)
+{
+// FreeResource();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldPage::~SwFldPage()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFldPage::GetGroup()
+{
+ ASSERT (0, "GetGroup not implemented!");
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: TabPage initialisieren
+ --------------------------------------------------------------------*/
+
+void SwFldPage::Init()
+{
+ SwDocShell* pDocSh = (SwDocShell*)SfxObjectShell::Current();
+ BOOL bNewMode = (::GetHtmlMode(pDocSh) & HTMLMODE_ON) != 0;
+
+ bFldEdit = GetTabDialog() == 0;
+ pCurFld = aMgr.GetCurFld();
+
+ nFldDlgAktGrpSel = GetGroup();
+
+ if (bNewMode != bFldDlgHtmlMode)
+ {
+ bFldDlgHtmlMode = bNewMode;
+
+ // Bereichslistbox initialisieren
+ if (bFldDlgHtmlMode)
+ {
+ SwWrtShell *pSh = ::GetActiveView()->GetWrtShellPtr();
+
+ (SwSetExpFieldType*)pSh->InsertFldType(SwSetExpFieldType(pDocSh->GetDoc(),
+ String::CreateFromAscii("HTML_ON"), 1));
+ (SwSetExpFieldType*)pSh->InsertFldType(SwSetExpFieldType(pDocSh->GetDoc(),
+ String::CreateFromAscii("HTML_OFF"), 1));
+ }
+ }
+
+ aMgr.GetCurFld(); // FieldManager neu initialisieren
+ // wichtig fuer Dok-Wechsel (fldtdlg:ReInitTabPage)
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Seite neu initialisieren
+ --------------------------------------------------------------------*/
+
+void SwFldPage::ActivatePage()
+{
+ EnableInsert(bInsert);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Kompletter Reset; neues Feld editieren
+ --------------------------------------------------------------------*/
+
+void SwFldPage::EditNewField()
+{
+ nFldDlgAktGrpSel = 0;
+ nTypeSel = LISTBOX_ENTRY_NOTFOUND;
+ nSelectionSel = LISTBOX_ENTRY_NOTFOUND;
+ bRefresh = TRUE;
+ Reset(*(SfxItemSet*)0);
+ bRefresh = FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Feld einfuegen
+ --------------------------------------------------------------------*/
+
+BOOL SwFldPage::InsertFld(USHORT nTypeId, USHORT nSubType, const String& rPar1,
+ const String& rPar2, ULONG nFormatId, sal_Unicode cSeparator)
+{
+ BOOL bRet = FALSE;
+ SwWrtShell *pSh = ::GetActiveView()->GetWrtShellPtr();
+
+ if (!IsFldEdit()) // Neues Feld einfuegen
+ {
+ bRet = aMgr.InsertFld( nTypeId, nSubType, rPar1, rPar2, nFormatId, 0, cSeparator );
+
+ }
+ else // Feld aendern
+ {
+ String sPar1(rPar1);
+ String sPar2(rPar2);
+ BOOL bDBChanged = FALSE;
+
+ switch( nTypeId )
+ {
+ case TYP_DATEFLD:
+ case TYP_TIMEFLD:
+ nSubType = ((nTypeId == TYP_DATEFLD) ? DATEFLD : TIMEFLD) |
+ ((nSubType == DATE_VAR) ? 0 : FIXEDFLD);
+ break;
+
+ case TYP_DBNAMEFLD:
+ case TYP_DBNEXTSETFLD:
+ case TYP_DBNUMSETFLD:
+ case TYP_DBSETNUMBERFLD:
+ {
+ USHORT nPos, nTablePos, nExpPos;
+ String sDBName;
+
+ // DBName aus rPar1 extrahieren. Format: DBName.TableName.ExpStrg
+ if ((nTablePos = rPar1.Search(DB_DELIM)) != STRING_NOTFOUND)
+ sDBName = rPar1.Copy(0, nTablePos++);
+ if ((nExpPos = rPar1.Search(DB_DELIM, nTablePos)) != STRING_NOTFOUND)
+ {
+ sDBName += DB_DELIM;
+ sDBName += rPar1.Copy(nTablePos, nExpPos++ - nTablePos);
+ }
+ if (nExpPos != STRING_NOTFOUND)
+ nPos = nExpPos;
+ else if (nTablePos != STRING_NOTFOUND)
+ nPos = nTablePos;
+ else
+ nPos = 0;
+ sPar1 = rPar1.Copy(nPos);
+
+ ((SwDBNameInfField*)pCurFld)->SetDBName(sDBName);
+ bDBChanged = TRUE;
+ }
+ break;
+
+ case TYP_DBFLD:
+ {
+ String sDBName = rPar1.GetToken(0, DB_DELIM);
+ sDBName += DB_DELIM;
+ sDBName += rPar1.GetToken(1, DB_DELIM);
+ String sColumn = rPar1.GetToken(2, DB_DELIM);
+
+ SwDBFieldType* pOldTyp = (SwDBFieldType*)pCurFld->GetTyp();
+ SwDBFieldType* pTyp = (SwDBFieldType*)pSh->InsertFldType(
+ SwDBFieldType(pSh->GetDoc(), sColumn, sDBName));
+
+ SwClientIter aIter( *pOldTyp );
+
+ for( SwFmtFld* pFmtFld = (SwFmtFld*)aIter.First( TYPE(SwFmtFld) );
+ pFmtFld; pFmtFld = (SwFmtFld*)aIter.Next() )
+ {
+ if( pFmtFld->GetFld() == pCurFld)
+ {
+ pTyp->Add(pFmtFld); // Feld auf neuen Typ umhaengen
+ pCurFld->ChgTyp(pTyp);
+ break;
+ }
+ }
+ bDBChanged = TRUE;
+ }
+ break;
+
+ case TYP_SEQFLD:
+ {
+ SwSetExpFieldType* pTyp = (SwSetExpFieldType*)pCurFld->GetTyp();
+ pTyp->SetOutlineLvl(nSubType & 0xff);
+ pTyp->SetDelimiter((char)((nSubType & 0xff00) >> 8));
+
+ nSubType = GSE_SEQ;
+ }
+ break;
+
+ case TYP_INPUTFLD:
+ {
+ // User- oder SetField ?
+ if (aMgr.GetFldType(RES_USERFLD, sPar1) == 0 &&
+ !(pCurFld->GetSubType() & INP_TXT)) // SETEXPFLD
+ {
+ SwSetExpField* pFld = (SwSetExpField*)pCurFld;
+ pFld->SetPromptText(sPar2);
+ sPar2 = pFld->GetPar2();
+ }
+ }
+ break;
+ }
+
+ pSh->StartAllAction();
+
+ pCurFld->SetSubType(nSubType);
+
+ aMgr.UpdateCurFld( nFormatId, sPar1, sPar2 );
+
+ switch (nTypeId)
+ {
+ case TYP_HIDDENTXTFLD:
+ case TYP_HIDDENPARAFLD:
+ aMgr.EvalExpFlds(pSh);
+ break;
+ }
+
+ if (bDBChanged) // Datenbank geaendert
+ {
+ switch(nTypeId)
+ {
+ case TYP_DBFLD:
+ ((SwDBField*)pCurFld)->ClearInitialized();
+ ((SwDBField*)pCurFld)->InitContent();
+ case TYP_DBNAMEFLD:
+ case TYP_DBNEXTSETFLD:
+ case TYP_DBNUMSETFLD:
+ case TYP_DBSETNUMBERFLD:
+ pCurFld->GetTyp()->UpdateFlds();
+ break;
+ }
+ }
+
+ pSh->SetUndoNoResetModified();
+ pSh->EndAllAction();
+ }
+
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFldPage::SavePos(ListBox* pLst1, ListBox* pLst2, ListBox* pLst3)
+{
+ if (pLst1 && pLst1->GetEntryCount())
+ sLst1 = pLst1->GetSelectEntry();
+ else
+ sLst1.Erase();
+
+ if (pLst2 && pLst2->GetEntryCount())
+ sLst2 = pLst2->GetSelectEntry();
+ else
+ sLst2.Erase();
+
+ if (pLst3 && pLst3->GetEntryCount())
+ sLst3 = pLst3->GetSelectEntry();
+ else
+ sLst3.Erase();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFldPage::RestorePos(ListBox* pLst1, ListBox* pLst2, ListBox* pLst3)
+{
+ USHORT nPos = 0;
+
+ if (pLst1 && pLst1->GetEntryCount() && sLst1.Len() && (nPos = pLst1->GetEntryPos(sLst1)) != LISTBOX_ENTRY_NOTFOUND)
+ pLst1->SelectEntryPos(nPos);
+ if (pLst2 && pLst2->GetEntryCount() && sLst1.Len() && (nPos = pLst2->GetEntryPos(sLst1)) != LISTBOX_ENTRY_NOTFOUND)
+ pLst2->SelectEntryPos(nPos);
+ if (pLst3 && pLst3->GetEntryCount() && sLst1.Len() && (nPos = pLst3->GetEntryPos(sLst1)) != LISTBOX_ENTRY_NOTFOUND)
+ pLst3->SelectEntryPos(nPos);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Einfuegen von neuen Feldern
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldPage, InsertHdl, Button *, pBtn )
+{
+ SwFldDlg *pDlg = (SwFldDlg*)GetTabDialog();
+
+ if (pDlg)
+ {
+ pDlg->InsertHdl();
+
+ if (pBtn)
+ pBtn->GrabFocus(); // Wegen InputField-Dlg
+ }
+ else
+ {
+ SwFldEditDlg *pEditDlg = (SwFldEditDlg *)GetParent();
+ pEditDlg->InsertHdl();
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: "Einfuegen"-Button Enablen/Disablen
+ --------------------------------------------------------------------*/
+
+void SwFldPage::EnableInsert(BOOL bEnable)
+{
+ SwFldDlg *pDlg = (SwFldDlg*)GetTabDialog();
+
+ if (pDlg)
+ {
+ if (pDlg->GetCurPageId() == nPageId)
+ pDlg->EnableInsert(bEnable);
+ }
+ else
+ {
+ SwFldEditDlg *pEditDlg = (SwFldEditDlg *)GetParent();
+ pEditDlg->EnableInsert(bEnable);
+ }
+
+ bInsert = bEnable;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldPage, NumFormatHdl, ListBox *, pLst )
+{
+ InsertHdl();
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.25 2000/09/18 16:05:29 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.24 2000/06/30 08:52:53 os
+ #76541# string assertions removed
+
+ Revision 1.23 2000/05/10 11:55:13 os
+ Basic API removed
+
+ Revision 1.22 2000/04/18 15:17:32 os
+ UNICODE
+
+ Revision 1.21 2000/02/11 14:46:39 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.20 1999/01/20 13:16:52 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+
+ Rev 1.19 20 Jan 1999 14:16:52 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.18 29 Oct 1998 14:08:32 OM
+ #58544# Butzerfeld: richtigen Inhalt anzeigen
+
+ Rev 1.17 15 Oct 1998 16:02:52 OM
+ #57965# Variablennamen fuer Eingabefeld verwenden
+
+ Rev 1.16 18 Jun 1998 11:16:44 OM
+ Kapitelebenen fuer Nummernkreise
+
+ Rev 1.15 27 Mar 1998 16:26:18 OM
+ #48007# UpdateExpFlds bei Aenderung von HiddenText und HiddenParaField
+
+ Rev 1.14 18 Mar 1998 10:33:56 OM
+ #48197# Focus restaurieren nach InputDlg
+
+ Rev 1.13 06 Mar 1998 14:54:24 OM
+ Nur bei Aenderung Feld aktualisieren
+
+ Rev 1.12 08 Jan 1998 13:36:20 OM
+ Feldbefehl-Traveling
+
+ Rev 1.11 08 Jan 1998 10:19:04 OM
+ Referenzen editieren
+
+ Rev 1.10 06 Jan 1998 18:13:34 OM
+ Felbefehl-Dlg
+
+ Rev 1.9 19 Dec 1997 18:25:00 OM
+ Feldbefehl-bearbeiten Dlg
+
+ Rev 1.8 16 Dec 1997 17:01:44 OM
+ Feldbefehle bearbeiten
+
+ Rev 1.7 12 Dec 1997 16:10:08 OM
+ AutoUpdate bei FocusWechsel u.a.
+
+ Rev 1.6 11 Dec 1997 16:58:50 OM
+ Feldumstellung
+
+ Rev 1.5 09 Dec 1997 17:16:46 OM
+ Kein alter Feldbefehl-Dialog mehr
+
+ Rev 1.4 28 Nov 1997 19:51:32 MA
+ includes
+
+ Rev 1.3 20 Nov 1997 17:02:04 OM
+ Neuer Felddialog
+
+ Rev 1.2 19 Nov 1997 16:30:42 OM
+ Datenbank-TP Drag&Drop
+
+ Rev 1.1 18 Nov 1997 10:34:36 OM
+ Neuer Feldbefehldialog
+
+ Rev 1.0 17 Nov 1997 09:07:00 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/fldui/fldpage.hxx b/sw/source/ui/fldui/fldpage.hxx
new file mode 100644
index 000000000000..a2cfc89e6c6d
--- /dev/null
+++ b/sw/source/ui/fldui/fldpage.hxx
@@ -0,0 +1,134 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldpage.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWFLDPAGE_HXX
+#define _SWFLDPAGE_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#include "fldmgr.hxx"
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SwFldPage : public SfxTabPage
+{
+ USHORT nFldDlgAktGrpSel;
+ String sLst1;
+ String sLst2;
+ String sLst3;
+ USHORT nPageId;
+ BOOL bFldEdit;
+ BOOL bInsert;
+
+ SwFldMgr aMgr;
+ USHORT nTypeSel;
+ USHORT nSelectionSel;
+ BOOL bFldDlgHtmlMode;
+ BOOL bRefresh;
+ SwField *pCurFld;
+
+protected:
+
+ USHORT GetTypeSel() {return nTypeSel;}
+ void SetTypeSel(USHORT nSet) {nTypeSel = nSet;}
+ USHORT GetSelectionSel() {return nSelectionSel;}
+ void SetSelectionSel(USHORT nSet) {nSelectionSel = nSet;}
+ BOOL IsFldDlgHtmlMode() {return bFldDlgHtmlMode;}
+ BOOL IsRefresh() { return bRefresh;}
+ SwField* GetCurField() {return pCurFld;}
+
+ DECL_LINK( InsertHdl, Button *pBtn = 0 );
+ DECL_LINK( NumFormatHdl, ListBox *pBtn = 0 );
+
+ void Init();
+ void SavePos(ListBox* pLst1, ListBox* pLst2 = 0, ListBox* pLst3 = 0);
+ void RestorePos(ListBox* pLst1, ListBox* pLst2 = 0, ListBox* pLst3 = 0);
+ void EnableInsert(BOOL bEnable = TRUE);
+ inline BOOL IsFldEdit() const { return bFldEdit; }
+
+ // Feld einfuegen
+ BOOL InsertFld( USHORT nTypeId,
+ USHORT nSubType,
+ const String& rPar1,
+ const String& rPar2,
+ ULONG nFormatId,
+ sal_Unicode cDelim = ' ');
+
+public:
+ SwFldPage( Window *pParent,
+ const ResId &rId,
+ const SfxItemSet &rAttrSet );
+
+ ~SwFldPage();
+
+ virtual void ActivatePage();
+
+ inline SwFldMgr& GetFldMgr() { return aMgr; }
+ void EditNewField();
+ virtual USHORT GetGroup() = 0;
+};
+
+
+#endif
+
diff --git a/sw/source/ui/fldui/fldref.cxx b/sw/source/ui/fldui/fldref.cxx
new file mode 100644
index 000000000000..acc266285ef0
--- /dev/null
+++ b/sw/source/ui/fldui/fldref.cxx
@@ -0,0 +1,908 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldref.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "swtypes.hxx"
+
+#ifndef _SWVIEW_HXX //autogen
+#include <view.hxx>
+#endif
+#ifndef _BOOKMRK_HXX //autogen
+#include <bookmrk.hxx>
+#endif
+#ifndef _EXPFLD_HXX //autogen
+#include <expfld.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _FLDREF_HXX
+#include <fldref.hxx>
+#endif
+#ifndef _REFFLD_HXX
+#include <reffld.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+
+#ifndef _FLDUI_HRC
+#include <fldui.hrc>
+#endif
+#ifndef _FLDTDLG_HRC
+#include <fldtdlg.hrc>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+
+#define REFFLDFLAG 0x4000
+#define REFFLDFLAG_BOOKMARK 0x4800
+#define REFFLDFLAG_FOOTNOTE 0x5000
+#define REFFLDFLAG_ENDNOTE 0x6000
+
+USHORT nFldDlgFmtSel = 0;
+
+#define USER_DATA_VERSION_1 "1"
+#define USER_DATA_VERSION USER_DATA_VERSION_1
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldRefPage::SwFldRefPage(Window* pParent, const SfxItemSet& rCoreSet ) :
+ SwFldPage( pParent, SW_RES( TP_FLD_REF ), rCoreSet ),
+
+ aTypeFT (this, SW_RES(FT_REFTYPE)),
+ aTypeLB (this, SW_RES(LB_REFTYPE)),
+ aSelectionFT (this, SW_RES(FT_REFSELECTION)),
+ aSelectionLB (this, SW_RES(LB_REFSELECTION)),
+ aFormatFT (this, SW_RES(FT_REFFORMAT)),
+ aFormatLB (this, SW_RES(LB_REFFORMAT)),
+ aNameFT (this, SW_RES(FT_REFNAME)),
+ aNameED (this, SW_RES(ED_REFNAME)),
+ aValueFT (this, SW_RES(FT_REFVALUE)),
+ aValueED (this, SW_RES(ED_REFVALUE)),
+
+ sBookmarkTxt (SW_RES(STR_REFBOOKMARK)),
+ sFootnoteTxt (SW_RES(STR_REFFOOTNOTE)),
+ sEndnoteTxt (SW_RES(STR_REFENDNOTE))
+{
+ FreeResource();
+
+ aNameED.SetModifyHdl(LINK(this, SwFldRefPage, ModifyHdl));
+
+// SwWrtShell* pSh = (SwWrtShell*)ViewShell::GetCurrShell();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldRefPage::~SwFldRefPage()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFldRefPage::Reset(const SfxItemSet& )
+{
+ if (!IsFldEdit())
+ SavePos(&aTypeLB);
+ SetSelectionSel(LISTBOX_ENTRY_NOTFOUND);
+ SetTypeSel(LISTBOX_ENTRY_NOTFOUND);
+ Init(); // Allgemeine initialisierung
+
+ // TypeListBox initialisieren
+ aTypeLB.SetUpdateMode(FALSE);
+ aTypeLB.Clear();
+
+ // Typ-Listbox fuellen
+
+ // mit den Sequence-Typen auffuellen
+ SwView *pView = ::GetActiveView();
+ ASSERT(pView, View fehlt);
+ SwWrtShell &rSh = pView->GetWrtShell();
+ USHORT nPos;
+
+ USHORT nFldTypeCnt = rSh.GetFldTypeCount(RES_SETEXPFLD);
+
+ for (USHORT n = 0; n < nFldTypeCnt; ++n)
+ {
+ SwSetExpFieldType* pType = (SwSetExpFieldType*)rSh.GetFldType(n, RES_SETEXPFLD);
+
+ if ((GSE_SEQ & pType->GetType()) && pType->GetDepends() && rSh.IsUsed(*pType))
+ {
+ nPos = aTypeLB.InsertEntry(pType->GetName());
+ aTypeLB.SetEntryData(nPos, (void*)(REFFLDFLAG | n));
+ }
+ }
+
+ // Textmarken - jetzt immer (wegen Globaldokumenten)
+ nFldTypeCnt = rSh.GetBookmarkCnt(TRUE);
+ nPos = aTypeLB.InsertEntry(sBookmarkTxt);
+ aTypeLB.SetEntryData(nPos, (void*)REFFLDFLAG_BOOKMARK);
+
+ // Fussnoten:
+ if( rSh.HasFtns() )
+ {
+ nPos = aTypeLB.InsertEntry(sFootnoteTxt);
+ aTypeLB.SetEntryData(nPos, (void*)REFFLDFLAG_FOOTNOTE);
+ }
+
+ // Endnoten:
+ if( rSh.HasFtns(TRUE) )
+ {
+ nPos = aTypeLB.InsertEntry(sEndnoteTxt);
+ aTypeLB.SetEntryData(nPos, (void*)REFFLDFLAG_ENDNOTE);
+ }
+
+ // Referenz setzen / einfuegen
+ const SwFldGroupRgn& rRg = GetFldMgr().GetGroupRange(IsFldDlgHtmlMode(), GetGroup());
+
+ for (short i = rRg.nStart; i < rRg.nEnd; ++i)
+ {
+ const USHORT nTypeId = GetFldMgr().GetTypeId(i);
+
+ if (!IsFldEdit() || nTypeId != TYP_SETREFFLD)
+ {
+ nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(i), i - rRg.nStart);
+ aTypeLB.SetEntryData(nPos, (void*)nTypeId);
+ }
+ }
+
+ // alte Pos selektieren
+ if (!IsFldEdit())
+ RestorePos(&aTypeLB);
+
+ aTypeLB.SetUpdateMode(TRUE);
+ aTypeLB.SetDoubleClickHdl (LINK(this, SwFldRefPage, InsertHdl));
+ aTypeLB.SetSelectHdl (LINK(this, SwFldRefPage, TypeHdl));
+ aSelectionLB.SetSelectHdl (LINK(this, SwFldRefPage, SubTypeHdl));
+ aSelectionLB.SetDoubleClickHdl (LINK(this, SwFldRefPage, InsertHdl));
+ aFormatLB.SetDoubleClickHdl (LINK(this, SwFldRefPage, InsertHdl));
+
+ nFldDlgFmtSel = 0;
+
+ if( !IsRefresh() )
+ {
+ String sUserData = GetUserData();
+ if(!IsRefresh() && sUserData.GetToken(0, ';').
+ EqualsIgnoreCaseAscii(USER_DATA_VERSION_1))
+ {
+ String sVal = sUserData.GetToken(1, ';');
+ USHORT nVal = sVal.ToInt32();
+ if(nVal != USHRT_MAX)
+ {
+ for(USHORT i = 0; i < aTypeLB.GetEntryCount(); i++)
+ if(nVal == (USHORT)(ULONG)aTypeLB.GetEntryData(i))
+ {
+ aTypeLB.SelectEntryPos(i);
+ break;
+ }
+ }
+ }
+ }
+ TypeHdl(0);
+
+ if (IsFldEdit())
+ {
+ aTypeLB.SaveValue();
+ aSelectionLB.SaveValue();
+ aFormatLB.SaveValue();
+ aNameED.SaveValue();
+ aValueED.SaveValue();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldRefPage, TypeHdl, ListBox *, pBox )
+{
+ // Alte ListBoxPos sichern
+ const USHORT nOld = GetTypeSel();
+
+ // Aktuelle ListBoxPos
+ SetTypeSel(aTypeLB.GetSelectEntryPos());
+
+ if(GetTypeSel() == LISTBOX_ENTRY_NOTFOUND)
+ {
+ if (IsFldEdit())
+ {
+ // Positionen selektieren
+ String sName;
+ USHORT nFlag = 0;
+
+ switch( GetCurField()->GetSubType() )
+ {
+ case REF_BOOKMARK:
+ sName = sBookmarkTxt;
+ nFlag = REFFLDFLAG_BOOKMARK;
+ break;
+
+ case REF_FOOTNOTE:
+ sName = sFootnoteTxt;
+ nFlag = REFFLDFLAG_FOOTNOTE;
+ break;
+
+ case REF_ENDNOTE:
+ sName = sEndnoteTxt;
+ nFlag = REFFLDFLAG_ENDNOTE;
+ break;
+
+ case REF_SETREFATTR:
+ sName = SW_RESSTR(STR_GETREFFLD);
+ nFlag = REF_SETREFATTR;
+ break;
+
+ case REF_SEQUENCEFLD:
+ sName = ((SwGetRefField*)GetCurField())->GetSetRefName();
+ nFlag = REFFLDFLAG;
+ break;
+ }
+
+ if (aTypeLB.GetEntryPos(sName) == LISTBOX_ENTRY_NOTFOUND) // Referenz zu gel”schter Marke
+ {
+ USHORT nPos = aTypeLB.InsertEntry(sName);
+ aTypeLB.SetEntryData(nPos, (void*)nFlag);
+ }
+
+ aTypeLB.SelectEntry(sName);
+ SetTypeSel(aTypeLB.GetSelectEntryPos());
+ }
+ else
+ {
+ SetTypeSel(0);
+ aTypeLB.SelectEntryPos(0);
+ }
+ }
+
+ if (nOld != GetTypeSel())
+ {
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ // Auswahl-Listbox fuellen
+ UpdateSubType();
+
+ BOOL bName = FALSE;
+ nFldDlgFmtSel = 0;
+
+ if ((!IsFldEdit() || aSelectionLB.GetEntryCount()) && nOld != LISTBOX_ENTRY_NOTFOUND)
+ {
+ aNameED.SetText(aEmptyStr);
+ aValueED.SetText(aEmptyStr);
+ }
+
+ switch (nTypeId)
+ {
+ case TYP_GETREFFLD:
+ if (REFFLDFLAG & (USHORT)(ULONG)aTypeLB.GetEntryData(nOld))
+ // dann bleibt die alte bestehen
+ nFldDlgFmtSel = aFormatLB.GetSelectEntryPos();
+ bName = TRUE;
+ break;
+
+ case TYP_SETREFFLD:
+ bName = TRUE;
+ break;
+
+ case REFFLDFLAG_BOOKMARK:
+ bName = TRUE;
+ // kein break!!!
+ default:
+ if( REFFLDFLAG & nTypeId )
+ {
+ USHORT nOldId = (USHORT)(ULONG)aTypeLB.GetEntryData(nOld);
+ if( nOldId & REFFLDFLAG || nOldId == TYP_GETREFFLD )
+ // dann bleibt die alte bestehen
+ nFldDlgFmtSel = aFormatLB.GetSelectEntryPos();
+ }
+ break;
+ }
+
+ aNameED.Enable(bName);
+ aNameFT.Enable(bName);
+
+ // Format-Listbox fuellen
+ USHORT nSize = FillFormatLB(nTypeId);
+ BOOL bFormat = nSize != 0;
+ aFormatLB.Enable(bFormat);
+ aFormatFT.Enable(bFormat);
+
+ SubTypeHdl();
+ ModifyHdl();
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldRefPage, SubTypeHdl, ListBox *, pBox )
+{
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ switch(nTypeId)
+ {
+ case TYP_GETREFFLD:
+ if (!IsFldEdit() || aSelectionLB.GetSelectEntryCount())
+ {
+ aNameED.SetText(aSelectionLB.GetSelectEntry());
+ ModifyHdl(&aNameED);
+ }
+ break;
+
+ case TYP_SETREFFLD:
+ aValueED.SetText(::GetActiveView()->GetWrtShell().GetSelTxt());
+ break;
+
+ default:
+ if (!IsFldEdit() || aSelectionLB.GetSelectEntryCount())
+ aNameED.SetText(aSelectionLB.GetSelectEntry());
+ break;
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Typen in SelectionLB erneuern
+ --------------------------------------------------------------------*/
+
+void SwFldRefPage::UpdateSubType()
+{
+ SwWrtShell *pSh = ::GetActiveView()->GetWrtShellPtr();
+ SwGetRefField* pRefFld = (SwGetRefField*)GetCurField();
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ String sOldSel;
+
+ USHORT nSelectionSel = aSelectionLB.GetSelectEntryPos();
+ if (nSelectionSel != LISTBOX_ENTRY_NOTFOUND)
+ sOldSel = aSelectionLB.GetEntry(nSelectionSel);
+
+ aSelectionLB.SetUpdateMode(FALSE);
+ aSelectionLB.Clear();
+
+ if (IsFldEdit() && !sOldSel.Len())
+ sOldSel = String::CreateFromInt32( pRefFld->GetSeqNo() + 1 );
+
+ if( REFFLDFLAG & nTypeId )
+ {
+ if (nTypeId == REFFLDFLAG_BOOKMARK) // TextMarken!
+ {
+ aSelectionLB.SetStyle(aSelectionLB.GetStyle()|WB_SORT);
+ // alle Textmarken besorgen
+ USHORT nCnt = pSh->GetBookmarkCnt(TRUE);
+ for( USHORT n = 0; n < nCnt; ++n )
+ {
+ const SwBookmark& rBkmk = pSh->GetBookmark( n, TRUE );
+ aSelectionLB.InsertEntry( rBkmk.GetName() );
+ }
+ if (IsFldEdit())
+ sOldSel = pRefFld->GetSetRefName();
+ }
+ else if (nTypeId == REFFLDFLAG_FOOTNOTE)
+ {
+ aSelectionLB.SetStyle(aSelectionLB.GetStyle() & ~WB_SORT);
+ SwSeqFldList aArr;
+ USHORT nCnt = pSh->GetSeqFtnList( aArr );
+ USHORT nFnd = 0;
+
+ for( USHORT n = 0; n < nCnt; ++n )
+ {
+ aSelectionLB.InsertEntry( aArr[ n ]->sDlgEntry );
+ if (IsFldEdit() && pRefFld->GetSeqNo() == aArr[ n ]->nSeqNo)
+ sOldSel = aArr[n]->sDlgEntry;
+ }
+ }
+ else if (nTypeId == REFFLDFLAG_ENDNOTE)
+ {
+ aSelectionLB.SetStyle(aSelectionLB.GetStyle() & ~WB_SORT);
+ SwSeqFldList aArr;
+ USHORT nCnt = pSh->GetSeqFtnList( aArr, TRUE );
+ USHORT nFnd = 0;
+
+ for( USHORT n = 0; n < nCnt; ++n )
+ {
+ aSelectionLB.InsertEntry( aArr[ n ]->sDlgEntry );
+ if (IsFldEdit() && pRefFld->GetSeqNo() == aArr[ n ]->nSeqNo)
+ sOldSel = aArr[n]->sDlgEntry;
+ }
+ }
+ else
+ {
+ aSelectionLB.SetStyle(aSelectionLB.GetStyle()|WB_SORT);
+ // zum Seq-FeldTyp die Felder besorgen:
+
+ SwSetExpFieldType* pType = (SwSetExpFieldType*)pSh->GetFldType(
+ nTypeId & ~REFFLDFLAG, RES_SETEXPFLD );
+ if( pType )
+ {
+ SwSeqFldList aArr;
+ sOldSel.Erase();
+
+ USHORT nCnt = pType->GetSeqFldList( aArr );
+ for( USHORT n = 0; n < nCnt; ++n )
+ {
+ aSelectionLB.InsertEntry( aArr[ n ]->sDlgEntry );
+ if (IsFldEdit() && !sOldSel.Len() &&
+ aArr[ n ]->nSeqNo == pRefFld->GetSeqNo())
+ sOldSel = aArr[ n ]->sDlgEntry;
+ }
+
+ if (IsFldEdit() && !sOldSel.Len())
+ sOldSel = String::CreateFromInt32( pRefFld->GetSeqNo() + 1);
+ }
+ }
+ }
+ else
+ {
+ SvStringsDtor& rLst = GetFldMgr().GetSubTypes(nTypeId);
+ for (USHORT i = 0; i < rLst.Count(); ++i)
+ aSelectionLB.InsertEntry(*rLst[i]);
+
+ if (IsFldEdit())
+ sOldSel = pRefFld->GetSetRefName();
+ }
+
+ aSelectionLB.SetUpdateMode(TRUE);
+
+ // Enable oder Disable
+ BOOL bEnable = aSelectionLB.GetEntryCount() != 0;
+ aSelectionLB.Enable( bEnable );
+ aSelectionFT.Enable( bEnable );
+
+ if ( bEnable )
+ {
+ aSelectionLB.SelectEntry(sOldSel);
+ if (!aSelectionLB.GetSelectEntryCount() && !IsFldEdit())
+ aSelectionLB.SelectEntryPos(0);
+ }
+
+ if (IsFldEdit() && !aSelectionLB.GetSelectEntryCount()) // Falls die Referenz schon geloescht wurde...
+ aNameED.SetText(sOldSel);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFldRefPage::FillFormatLB(USHORT nTypeId)
+{
+ String sOldSel;
+
+ USHORT nFormatSel = aFormatLB.GetSelectEntryPos();
+ if (nFormatSel != LISTBOX_ENTRY_NOTFOUND)
+ sOldSel = aFormatLB.GetEntry(nFormatSel);
+
+ // Format-Listbox fuellen
+ aFormatLB.Clear();
+
+ // Referenz hat weniger als die Beschriftung
+ USHORT nSize;
+ switch (nTypeId)
+ {
+ case TYP_GETREFFLD:
+ case REFFLDFLAG_BOOKMARK:
+ case REFFLDFLAG_FOOTNOTE:
+ case REFFLDFLAG_ENDNOTE:
+ nSize = FMT_REF_PAGE_PGDSC - FMT_REF_BEGIN + 1;
+ break;
+
+ default:
+ nSize = GetFldMgr().GetFormatCount( (REFFLDFLAG & nTypeId)
+ ? TYP_GETREFFLD : nTypeId,
+ FALSE, IsFldDlgHtmlMode() );
+ break;
+ }
+
+ if (REFFLDFLAG & nTypeId)
+ nTypeId = TYP_GETREFFLD;
+
+ for (USHORT i = 0; i < nSize; i++)
+ {
+ USHORT nPos = aFormatLB.InsertEntry(GetFldMgr().GetFormatStr( nTypeId, i ));
+ aFormatLB.SetEntryData( nPos, (void*)GetFldMgr().GetFormatId( nTypeId, i ));
+ }
+
+ if (nSize)
+ {
+ if (!IsFldEdit())
+ aFormatLB.SelectEntry(sOldSel);
+ else
+ aFormatLB.SelectEntry(SW_RESSTR(FMT_REF_BEGIN + (USHORT)GetCurField()->GetFormat()));
+
+ if (!aFormatLB.GetSelectEntryCount())
+ {
+ aFormatLB.SelectEntryPos(nFldDlgFmtSel);
+ if (!aFormatLB.GetSelectEntryCount())
+ aFormatLB.SelectEntryPos(0);
+ }
+ }
+
+ return nSize;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Modify
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldRefPage, ModifyHdl, Edit *, EMPTYARG )
+{
+ String aName(aNameED.GetText());
+ const USHORT nLen = aName.Len();
+
+ BOOL bEnable = TRUE;
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ if ((nTypeId == TYP_SETREFFLD && !GetFldMgr().CanInsertRefMark(aName)) ||
+ (nLen == 0 && (nTypeId == TYP_GETREFFLD || nTypeId == TYP_SETREFFLD ||
+ nTypeId == REFFLDFLAG_BOOKMARK)))
+ bEnable = FALSE;
+
+ EnableInsert(bEnable);
+
+ aSelectionLB.SelectEntry(aName);
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+BOOL SwFldRefPage::FillItemSet(SfxItemSet& )
+{
+ BOOL bPage = FALSE;
+ BOOL bModified = FALSE;
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ USHORT nSubType = 0;
+ ULONG nFormat;
+
+ nFormat = aFormatLB.GetSelectEntryPos();
+
+ if(nFormat == LISTBOX_ENTRY_NOTFOUND)
+ nFormat = 0;
+ else
+ nFormat = (ULONG)aFormatLB.GetEntryData((USHORT)nFormat);
+
+ String aVal(aValueED.GetText());
+ String aName(aNameED.GetText());
+
+ switch(nTypeId)
+ {
+ case TYP_GETREFFLD:
+ // aName = aSelectionLB.GetSelectEntry();
+ nSubType = REF_SETREFATTR;
+ break;
+
+ case TYP_SETREFFLD:
+ {
+ SwFieldType* pType = GetFldMgr().GetFldType(RES_SETEXPFLD, aName);
+
+ if(!pType) // Nur einfuegen, wenn es den Namen noch nicht gibt
+ {
+ aSelectionLB.InsertEntry(aName);
+ aSelectionLB.Enable();
+ aSelectionFT.Enable();
+ }
+ break;
+ }
+ }
+
+ SwGetRefField* pRefFld = (SwGetRefField*)GetCurField();
+
+ if (REFFLDFLAG & nTypeId)
+ {
+ SwView *pView = ::GetActiveView();
+ ASSERT(pView, View fehlt);
+ SwWrtShell &rSh = pView->GetWrtShell();
+
+ if (nTypeId == REFFLDFLAG_BOOKMARK) // TextMarken!
+ {
+ aName = aNameED.GetText();
+ nTypeId = TYP_GETREFFLD;
+ nSubType = REF_BOOKMARK;
+ }
+ else if (REFFLDFLAG_FOOTNOTE == nTypeId) // Fussnoten
+ {
+ SwSeqFldList aArr;
+ _SeqFldLstElem aElem( aSelectionLB.GetSelectEntry(), 0 );
+
+ USHORT nPos;
+
+ nTypeId = TYP_GETREFFLD;
+ nSubType = REF_FOOTNOTE;
+ aName.Erase();
+
+ if (rSh.GetSeqFtnList(aArr) && aArr.SeekEntry(aElem, &nPos))
+ {
+ aVal = String::CreateFromInt32( aArr[nPos]->nSeqNo );
+
+ if (IsFldEdit() && COMPARE_EQUAL != aVal.CompareTo(pRefFld->GetSeqNo()))
+ bModified = TRUE; // Kann bei Feldern passieren, deren Referenz geloescht wurde
+ }
+ else if (IsFldEdit())
+ aVal = String::CreateFromInt32( pRefFld->GetSeqNo() );
+ }
+ else if (REFFLDFLAG_ENDNOTE == nTypeId) // Endnoten
+ {
+ SwSeqFldList aArr;
+ _SeqFldLstElem aElem( aSelectionLB.GetSelectEntry(), 0 );
+
+ USHORT nPos;
+
+ nTypeId = TYP_GETREFFLD;
+ nSubType = REF_ENDNOTE;
+ aName.Erase();
+
+ if (rSh.GetSeqFtnList(aArr, TRUE) && aArr.SeekEntry(aElem, &nPos))
+ {
+ aVal = String::CreateFromInt32( aArr[nPos]->nSeqNo );
+
+ if (IsFldEdit() && COMPARE_EQUAL != aVal.CompareTo(pRefFld->GetSeqNo()))
+ bModified = TRUE; // Kann bei Feldern passieren, deren Referenz geloescht wurde
+ }
+ else if (IsFldEdit())
+ aVal = String::CreateFromInt32( pRefFld->GetSeqNo() );
+ }
+ else // SeqenceFelder
+ {
+ // zum Seq-FeldTyp die Felder besorgen:
+ SwSetExpFieldType* pType = (SwSetExpFieldType*)rSh.GetFldType(
+ nTypeId & ~REFFLDFLAG, RES_SETEXPFLD );
+ if( pType )
+ {
+ SwSeqFldList aArr;
+ _SeqFldLstElem aElem( aSelectionLB.GetSelectEntry(), 0 );
+
+ USHORT nPos;
+
+ nTypeId = TYP_GETREFFLD;
+ nSubType = REF_SEQUENCEFLD;
+ aName = pType->GetName();
+
+ if (pType->GetSeqFldList(aArr) && aArr.SeekEntry(aElem, &nPos))
+ {
+ aVal = String::CreateFromInt32( aArr[nPos]->nSeqNo );
+
+ if (IsFldEdit() && COMPARE_EQUAL != aVal.CompareTo(pRefFld->GetSeqNo()))
+ bModified = TRUE; // Kann bei Feldern passieren, deren Referenz geloescht wurde
+ }
+ else if (IsFldEdit())
+ aVal = String::CreateFromInt32( pRefFld->GetSeqNo() );
+ }
+ }
+ }
+
+ if (IsFldEdit() && nTypeId == TYP_GETREFFLD)
+ {
+ aVal.Insert('|', 0);
+ aVal.Insert(String::CreateFromInt32(nSubType), 0);
+ }
+
+ if (!IsFldEdit() || bModified ||
+ aNameED.GetSavedValue() != aNameED.GetText() ||
+ aValueED.GetSavedValue() != aValueED.GetText() ||
+ aTypeLB.GetSavedValue() != aTypeLB.GetSelectEntryPos() ||
+ aSelectionLB.GetSavedValue() != aSelectionLB.GetSelectEntryPos() ||
+ aFormatLB.GetSavedValue() != aFormatLB.GetSelectEntryPos())
+ {
+ InsertFld( nTypeId, nSubType, aName, aVal, nFormat );
+ }
+
+ ModifyHdl(); // Insert ggf enablen/disablen
+
+ return FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxTabPage* SwFldRefPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return ( new SwFldRefPage( pParent, rAttrSet ) );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFldRefPage::GetGroup()
+{
+ return GRP_REF;
+}
+
+/* -----------------12.01.99 10:09-------------------
+ *
+ * --------------------------------------------------*/
+void SwFldRefPage::FillUserData()
+{
+ String sData( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( USER_DATA_VERSION )));
+ sData += ';';
+ USHORT nTypeSel = aTypeLB.GetSelectEntryPos();
+ if( LISTBOX_ENTRY_NOTFOUND == nTypeSel )
+ nTypeSel = USHRT_MAX;
+ else
+ nTypeSel = (ULONG)aTypeLB.GetEntryData( nTypeSel );
+ sData += String::CreateFromInt32( nTypeSel );
+ SetUserData(sData);
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.32 2000/09/18 16:05:29 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.31 2000/08/31 10:07:13 os
+ #78315# CreateFromInt32
+
+ Revision 1.30 2000/07/20 08:10:52 jp
+ Unicode-Change-Error: call createfromint32
+
+ Revision 1.29 2000/06/30 08:52:53 os
+ #76541# string assertions removed
+
+ Revision 1.28 2000/06/19 14:06:07 os
+ #72953# call SubTypeHdl more often
+
+ Revision 1.27 2000/05/23 18:36:48 jp
+ Bugfixes for Unicode
+
+ Revision 1.26 2000/04/18 15:17:32 os
+ UNICODE
+
+ Revision 1.25 1999/09/28 11:10:35 os
+ #68076# call modify handler if a name is selected
+
+ Revision 1.24 1999/04/06 09:27:54 JP
+ Task #64320#: bei Referenz auf Nummernkreis auch die Nummer als Format anbieten
+
+
+ Rev 1.23 06 Apr 1999 11:27:54 JP
+ Task #64320#: bei Referenz auf Nummernkreis auch die Nummer als Format anbieten
+
+ Rev 1.22 25 Feb 1999 17:24:52 JP
+ Bug #62438#: UserData nur auswerten, wenn kein Refresh ist
+
+ Rev 1.21 21 Jan 1999 09:46:22 OS
+ #59900# Fussnoten im Dialog korrekt sortieren; keine prot. Member
+
+ Rev 1.20 20 Jan 1999 14:25:40 MIB
+ Keine leeren Refs auf Textmarken
+
+ Rev 1.19 12 Jan 1999 11:42:54 OS
+ #60579# ausgewaehlten Typ in den UserData speichern
+
+ Rev 1.18 10 Aug 1998 16:41:12 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.17 23 Jun 1998 14:43:10 OM
+ Referenzen und Textmarken mit beliebigem Namen einfuegen
+
+ Rev 1.16 22 Jun 1998 17:58:02 OM
+ Vorbereitung fuer eigenstaendige Referenzfelder
+
+ Rev 1.15 18 May 1998 15:21:34 OM
+ #50222 Korrekte Formate fuer Endnoten
+
+ Rev 1.14 27 Mar 1998 16:56:42 OM
+ Nur bei Aenderung Dok modifizieren
+
+ Rev 1.13 23 Feb 1998 07:26:36 OS
+ GetBookmark/ Cnt mit Bookmark-Flag
+
+ Rev 1.12 16 Feb 1998 10:10:22 OM
+ Fuer Solaris nicht direkt von void* auf ushort casten
+
+ Rev 1.11 30 Jan 1998 15:25:36 OM
+ Endnoten
+
+ Rev 1.10 27 Jan 1998 22:43:52 JP
+ GetNumDepend durch GetDepends ersetzt
+
+ Rev 1.9 09 Jan 1998 16:56:52 OM
+ Bei Dok-Wechsel updaten
+
+ Rev 1.8 08 Jan 1998 14:58:26 OM
+ Traveling
+
+ Rev 1.7 08 Jan 1998 10:19:04 OM
+ Referenzen editieren
+
+ Rev 1.6 07 Jan 1998 17:17:42 OM
+ Referenzen editieren
+
+ Rev 1.5 19 Dec 1997 18:24:26 OM
+ Feldbefehl-bearbeiten Dlg
+
+ Rev 1.4 12 Dec 1997 16:10:34 OM
+ AutoUpdate bei FocusWechsel u.a.
+
+ Rev 1.3 11 Dec 1997 16:58:50 OM
+ Feldumstellung
+
+ Rev 1.2 08 Dec 1997 12:32:22 MA
+ vorb. Endnoten
+
+ Rev 1.1 24 Nov 1997 14:40:24 OM
+ Referenz-TP
+
+ Rev 1.0 04 Nov 1997 10:07:20 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/fldui/fldref.hxx b/sw/source/ui/fldui/fldref.hxx
new file mode 100644
index 000000000000..9c50d0d29293
--- /dev/null
+++ b/sw/source/ui/fldui/fldref.hxx
@@ -0,0 +1,130 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldref.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWFLDREF_HXX
+#define _SWFLDREF_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 _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#include "fldpage.hxx"
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SwFldRefPage : public SwFldPage
+{
+ FixedText aTypeFT;
+ ListBox aTypeLB;
+ FixedText aSelectionFT;
+ ListBox aSelectionLB;
+ FixedText aFormatFT;
+ ListBox aFormatLB;
+ FixedText aNameFT;
+ Edit aNameED;
+ FixedText aValueFT;
+ Edit aValueED;
+ String sBookmarkTxt;
+ String sFootnoteTxt;
+ String sEndnoteTxt;
+
+ DECL_LINK( TypeHdl, ListBox* pLB = 0 );
+ DECL_LINK( SubTypeHdl, ListBox* pLB = 0 );
+ DECL_LINK( ModifyHdl, Edit *pEd = 0 );
+
+ void UpdateSubType();
+ USHORT FillFormatLB(USHORT nTypeId);
+
+protected:
+ virtual USHORT GetGroup();
+
+public:
+ SwFldRefPage(Window* pParent, const SfxItemSet& rSet);
+
+ ~SwFldRefPage();
+
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rAttrSet);
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+ virtual void FillUserData();
+};
+
+
+#endif
+
diff --git a/sw/source/ui/fldui/fldref.src b/sw/source/ui/fldui/fldref.src
new file mode 100644
index 000000000000..2763f4b209a2
--- /dev/null
+++ b/sw/source/ui/fldui/fldref.src
@@ -0,0 +1,352 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldref.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "globals.hrc"
+#include "fldtdlg.hrc"
+#include "helpid.h"
+TabPage TP_FLD_REF
+{
+ HelpID = HID_FLD_REF ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Text = "Referenzen" ;
+ Text [ ENGLISH ] = "References" ;
+ FixedText FT_REFTYPE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ Text = "~Feldtyp" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "~Tipo di campo" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "Tipo de ~campo" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Felttype" ;
+ Text [ french ] = "~Type de champ" ;
+ Text [ swedish ] = "~Fälttyp" ;
+ Text [ dutch ] = "~Veldtype" ;
+ Text [ spanish ] = "~Tipo de campo" ;
+ Text [ english_us ] = "~Type" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "×Ö¶ÎÀàÐÍ(~T)";
+ Text[ russian ] = "Òèï ïîëÿ";
+ Text[ polish ] = "Typ pola";
+ Text[ japanese ] = "̨°ÙÄÞ‚ÌŽí—Þ(~T)";
+ Text[ chinese_traditional ] = "Ãþ«¬(~T)";
+ Text[ arabic ] = "äæÚ ÇáÍÞá";
+ Text[ greek ] = "~Ôýðïò ðåäßïõ";
+ Text[ korean ] = "ÇüÅÂ(~T)";
+ Text[ turkish ] = "~Alan tipi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_REFTYPE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 16 ) ;
+ Size = MAP_APPFONT ( 76 , 113 ) ;
+ TabStop = TRUE ;
+ // JP 05.11.96: darf nicht sortiert sein!
+ // Sort = FALSE;
+ AutoHScroll = TRUE ;
+ };
+ FixedText FT_REFSELECTION
+ {
+ Pos = MAP_APPFONT ( 88 , 3 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ Text = "~Auswahl" ;
+ Text [ ENGLISH ] = "Selection" ;
+ Text [ norwegian ] = "Selection" ;
+ Text [ italian ] = "~Selezione" ;
+ Text [ portuguese_brazilian ] = "Seleção" ;
+ Text [ portuguese ] = "~Selecção" ;
+ Text [ finnish ] = "Valinta" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ french ] = "~Sélection" ;
+ Text [ swedish ] = "~Urval" ;
+ Text [ dutch ] = "~Selectie" ;
+ Text [ spanish ] = "Se~lección" ;
+ Text [ english_us ] = "S~election" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ(~E)";
+ Text[ russian ] = "Âûáîð";
+ Text[ polish ] = "Wybór";
+ Text[ japanese ] = "‘I‘ð(~E)";
+ Text[ chinese_traditional ] = "¿ï¨ú(~E)";
+ Text[ arabic ] = "ÇáÊÍÏíÏ";
+ Text[ greek ] = "~ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ(~E)";
+ Text[ turkish ] = "S~eçim";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_REFSELECTION
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 88 , 16 ) ;
+ Size = MAP_APPFONT ( 76 , 113 ) ;
+ TabStop = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText FT_REFFORMAT
+ {
+ Pos = MAP_APPFONT ( 170 , 3 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ TEXT = "F~ormat" ;
+ TEXT [ English ] = "Format" ;
+ Left = TRUE ;
+ Text [ english_us ] = "F~ormat" ;
+ Text [ portuguese_brazilian ] = "F~ormat" ;
+ Text [ swedish ] = "F~ormat" ;
+ Text [ danish ] = "Format" ;
+ Text [ italian ] = "F~ormato" ;
+ Text [ spanish ] = "F~ormato" ;
+ Text [ french ] = "F~ormat" ;
+ Text [ dutch ] = "F~ormaat" ;
+ Text [ portuguese ] = "F~ormato" ;
+ 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 ] = "F~ormat";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_REFFORMAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 16 ) ;
+ Size = MAP_APPFONT ( 84 , 56 ) ;
+ TabStop = TRUE ;
+ DropDown = FALSE ;
+ // Sort = TRUE;
+ };
+ FixedText FT_REFNAME
+ {
+ Pos = MAP_APPFONT ( 170 , 78 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ Text = "Na~me" ;
+ TEXT [ English ] = "Na~me" ;
+ Left = TRUE ;
+ Text [ english_us ] = "Na~me" ;
+ Text [ portuguese_brazilian ] = "Na~me" ;
+ Text [ swedish ] = "Na~mn" ;
+ Text [ danish ] = "Navn" ;
+ Text [ italian ] = "No~me" ;
+ Text [ spanish ] = "No~mbre" ;
+ Text [ french ] = "~Nom" ;
+ Text [ dutch ] = "Naa~m" ;
+ Text [ portuguese ] = "No~me" ;
+ Text[ chinese_simplified ] = "Ãû³Æ(~M)";
+ Text[ russian ] = "Èìÿ";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "–¼‘O(~M)";
+ Text[ chinese_traditional ] = "¦WºÙ(~M)";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§(~M)";
+ Text[ turkish ] = "~Ad";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_REFNAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 90 ) ;
+ Size = MAP_APPFONT ( 84 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ FixedText FT_REFVALUE
+ {
+ Pos = MAP_APPFONT ( 170 , 105 ) ;
+ Size = MAP_APPFONT ( 84 , 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" ;
+ Disable = TRUE ;
+ Left = TRUE ;
+ 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 ] = " ";
+ };
+ Edit ED_REFVALUE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 117 ) ;
+ Size = MAP_APPFONT ( 84 , 12 ) ;
+ TabStop = TRUE ;
+ Disable = TRUE ;
+ Left = TRUE ;
+ };
+ String STR_REFBOOKMARK
+ {
+ TEXT = "Textmarken" ;
+ TEXT [ English ] = "Bookmarks" ;
+ Text [ dutch ] = "Tekstmarkeringen" ;
+ Text [ english_us ] = "Bookmarks" ;
+ Text [ italian ] = "Segnalibri di testo" ;
+ Text [ spanish ] = "Marcas de texto" ;
+ Text [ french ] = "Repères de texte" ;
+ Text [ swedish ] = "Bokmärken" ;
+ Text [ danish ] = "Tekstmarkeringer" ;
+ Text [ portuguese ] = "Marcadores de texto" ;
+ Text [ portuguese_brazilian ] = "Textmarken" ;
+ Text[ chinese_simplified ] = "ÊéÇ©";
+ Text[ russian ] = "Çàêëàäêè";
+ Text[ polish ] = "Zak³adki";
+ Text[ japanese ] = "÷½ÄÏ°¸";
+ Text[ chinese_traditional ] = "¤º¤å¼ÐÅÒ";
+ Text[ arabic ] = "ÅÔÇÑÇÊ ãÑÌÚíÉ";
+ Text[ greek ] = "Óåëéäïäåßêôåò";
+ Text[ korean ] = "Ã¥ °¥ÇÇ";
+ Text[ turkish ] = "Metin iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_REFFOOTNOTE
+ {
+ Text = "Fußnoten" ;
+ Text [ English ] = "Footnotes" ;
+ Text [ norwegian ] = "Fotnoter" ;
+ Text [ italian ] = "Note a piè pagina" ;
+ Text [ portuguese_brazilian ] = "Notas de rodapé" ;
+ Text [ portuguese ] = "Notas de rodapé" ;
+ Text [ finnish ] = "Alaviitteet" ;
+ Text [ danish ] = "Fodnoter" ;
+ Text [ french ] = "Notes de bas de page" ;
+ Text [ swedish ] = "Fotnoter" ;
+ Text [ dutch ] = "Voetnoten" ;
+ Text [ spanish ] = "Notas al pie" ;
+ Text [ english_us ] = "Footnotes" ;
+ Text[ chinese_simplified ] = "×¢½Å";
+ Text[ russian ] = "Ñíîñêè";
+ Text[ polish ] = "Przypisy dolne";
+ Text[ japanese ] = "‹r’";
+ Text[ chinese_traditional ] = "µù¸}";
+ Text[ arabic ] = "ÍæÇÔí ÓÝáíÉ";
+ Text[ greek ] = "Õðïóçìåéþóåéò";
+ Text[ korean ] = "°¢ÁÖ";
+ Text[ turkish ] = "Dipnotlar";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_REFENDNOTE
+ {
+ Text = "Endnoten" ;
+ Text [ ENGLISH ] = "endnotes" ;
+ Text [ english_us ] = "Endnotes" ;
+ Text [ portuguese_brazilian ] = "Endnoten" ;
+ Text [ swedish ] = "Slutnoter" ;
+ Text [ danish ] = "Slutnote" ;
+ Text [ italian ] = "Note di chiusura" ;
+ Text [ spanish ] = "Notas finales" ;
+ Text [ french ] = "Notes de fin" ;
+ Text [ dutch ] = "Eindnoten" ;
+ Text [ portuguese ] = "Notas finais" ;
+ Text[ chinese_simplified ] = "βע";
+ Text[ russian ] = "Êîíöåâàÿ ñíîñêà";
+ Text[ polish ] = "Przypisy koñcowe";
+ Text[ japanese ] = "•¶––‹r’";
+ Text[ chinese_traditional ] = "§Àª`";
+ Text[ arabic ] = "ÊÚáíÞÇÊ ÎÊÇãíÉ";
+ Text[ greek ] = "Óçìåéþóåéò ôÝëïõò";
+ Text[ korean ] = "¹ÌÁÖ";
+ Text[ turkish ] = "Son notlar";
+ Text[ language_user1 ] = " ";
+ };
+ Text [ english_us ] = "References" ;
+ Text [ portuguese_brazilian ] = "Referenzen" ;
+ Text [ swedish ] = "Referenser" ;
+ Text [ danish ] = "Referencer" ;
+ Text [ italian ] = "Riferimenti" ;
+ Text [ spanish ] = "Referencias" ;
+ Text [ french ] = "Références" ;
+ Text [ dutch ] = "Verwijzingen" ;
+ Text [ portuguese ] = "Referências" ;
+ Text[ chinese_simplified ] = "˵Ã÷ÎÄ";
+ Text[ russian ] = "Ññûëêè";
+ Text[ polish ] = "Odwo³ania";
+ Text[ japanese ] = "ŽQÆ";
+ Text[ chinese_traditional ] = "°Ñ·Ó¤å";
+ Text[ arabic ] = "ÇáãÑÇÌÚ";
+ Text[ greek ] = "ÁíáöïñÝò";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ turkish ] = "Referans";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/fldui/fldtdlg.cxx b/sw/source/ui/fldui/fldtdlg.cxx
new file mode 100644
index 000000000000..1fbf87548f46
--- /dev/null
+++ b/sw/source/ui/fldui/fldtdlg.cxx
@@ -0,0 +1,567 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldtdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _FLDWRAP_HXX
+#include <fldwrap.hxx>
+#endif
+#ifndef _FLDDB_HXX
+#include <flddb.hxx>
+#endif
+#ifndef _FLDDINF_HXX
+#include <flddinf.hxx>
+#endif
+#ifndef _FLDVAR_HXX
+#include <fldvar.hxx>
+#endif
+#ifndef _FLDDOK_HXX
+#include <flddok.hxx>
+#endif
+#ifndef _FLDFUNC_HXX
+#include <fldfunc.hxx>
+#endif
+#ifndef _FLDREF_HXX
+#include <fldref.hxx>
+#endif
+#ifndef _WRTSH_HXX //autogen
+#include <wrtsh.hxx>
+#endif
+#ifndef _SWVIEW_HXX //autogen
+#include <view.hxx>
+#endif
+#ifndef _FLDTDLG_HXX
+#include <fldtdlg.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _FLDUI_HRC
+#include <fldui.hrc>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _FLDTDLG_HRC
+#include <fldtdlg.hrc>
+#endif
+
+
+SFX_IMPL_CHILDWINDOW(SwFldDlgWrapper, FN_INSERT_FIELD)
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwChildWinWrapper::SwChildWinWrapper(Window *pParentWindow, USHORT nId) :
+ SfxChildWindow(pParentWindow, nId),
+ pDocSh(0)
+{
+ // Flackern der Buttons vermeiden:
+ aUpdateTimer.SetTimeout(200);
+ aUpdateTimer.SetTimeoutHdl(LINK(this, SwChildWinWrapper, UpdateHdl));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwChildWinWrapper, UpdateHdl, void*, EMPTYARG )
+{
+ GetWindow()->Activate(); // Dialog aktualisieren
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Nach Dok-Wechsel Dialog neu initialisieren
+ --------------------------------------------------------------------*/
+
+BOOL SwChildWinWrapper::ReInitDlg(SwDocShell *pDocSh)
+{
+ BOOL bRet = FALSE;
+
+ if (pDocSh != GetOldDocShell())
+ {
+ aUpdateTimer.Stop();
+ bRet = TRUE; // Sofortiges Update
+ }
+ else
+ aUpdateTimer.Start();
+
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldDlgWrapper::SwFldDlgWrapper( Window* pParent, USHORT nId,
+ SfxBindings* pB,
+ SfxChildWinInfo* pInfo) :
+ SwChildWinWrapper( pParent, nId )
+
+{
+ pWindow = new SwFldDlg( pB, this, pParent );
+ SwFldDlg *pWin = (SwFldDlg*)pWindow;
+ pWin->Start();
+
+ ((SwFldDlg*)pWindow)->Initialize(pInfo);
+ eChildAlignment = SFX_ALIGN_NOALIGNMENT;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxChildWinInfo SwFldDlgWrapper::GetInfo() const
+{
+ SfxChildWinInfo aInfo = SfxChildWindow::GetInfo();
+ // ((SfxFloatingWindow*)GetWindow())->FillInfo( aInfo );
+ return aInfo;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Nach Dok-Wechsel Dialog neu initialisieren
+ --------------------------------------------------------------------*/
+
+BOOL SwFldDlgWrapper::ReInitDlg(SwDocShell *pDocSh)
+{
+ BOOL bRet;
+
+ if ((bRet = SwChildWinWrapper::ReInitDlg(pDocSh)) == TRUE) // Sofort aktualisieren, Dok-Wechsel
+ ((SwFldDlg*)GetWindow())->ReInitDlg();
+
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFldDlgWrapper::ShowPage(USHORT nPage)
+{
+ ((SwFldDlg*)GetWindow())->ShowPage(nPage ? nPage : TP_FLD_REF);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Der Traeger des Dialoges
+ --------------------------------------------------------------------*/
+
+
+SwFldDlg::SwFldDlg(SfxBindings* pB, SwChildWinWrapper* pCW, Window *pParent) :
+ SfxTabDialog(pParent, SW_RES(DLG_FLD_INSERT)),
+ pChildWin(pCW)
+{
+ SetStyle(GetStyle()|WB_STDMODELESS);
+ bHtmlMode = (::GetHtmlMode((SwDocShell*)SfxObjectShell::Current()) & HTMLMODE_ON) != 0;
+
+ RemoveResetButton();
+
+ GetOKButton().SetText(String(SW_RES(STR_FLD_INSERT)));
+ GetOKButton().SetHelpId(HID_FIELD_INSERT);
+ GetOKButton().SetHelpText(aEmptyStr); // Damit generierter Hilfetext verwendet wird
+
+ GetCancelButton().SetText(String(SW_RES(STR_FLD_CLOSE)));
+ GetCancelButton().SetHelpId(HID_FIELD_CLOSE);
+ GetCancelButton().SetHelpText(aEmptyStr); // Damit generierter Hilfetext verwendet wird
+
+ FreeResource();
+
+ GetOKButton().SetClickHdl(LINK(this, SwFldDlg, OKHdl));
+
+ AddTabPage(TP_FLD_DOK, SwFldDokPage::Create, 0);
+ AddTabPage(TP_FLD_VAR, SwFldVarPage::Create, 0);
+ AddTabPage(TP_FLD_DOKINF, SwFldDokInfPage::Create, 0);
+
+ if (!bHtmlMode)
+ {
+ AddTabPage(TP_FLD_REF, SwFldRefPage::Create, 0);
+ AddTabPage(TP_FLD_FUNC, SwFldFuncPage::Create, 0);
+ AddTabPage(TP_FLD_DB, SwFldDBPage::Create, 0);
+ }
+ else
+ {
+ RemoveTabPage(TP_FLD_REF);
+ RemoveTabPage(TP_FLD_FUNC);
+ RemoveTabPage(TP_FLD_DB);
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwFldDlg::~SwFldDlg()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+BOOL SwFldDlg::Close()
+{
+ SfxViewFrame::Current()->GetDispatcher()->
+ Execute(FN_INSERT_FIELD, SFX_CALLMODE_ASYNCHRON|SFX_CALLMODE_RECORD);
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFldDlg::Initialize(SfxChildWinInfo *pInfo)
+{
+ Point aPos;
+ Size aSize;
+
+ if ( pInfo->aSize.Width() != 0 && pInfo->aSize.Height() != 0 )
+ {
+ aPos = pInfo->aPos;
+ if ( GetStyle() & WB_SIZEABLE )
+ SetSizePixel( pInfo->aSize );
+
+ // Initiale Gr"o\se aus pInfo merken
+ aSize = GetSizePixel();
+
+ // Soll das FloatingWindow eingezoomt werden ?
+ if ( pInfo->nFlags & SFX_CHILDWIN_ZOOMIN )
+ RollUp();
+ }
+ else
+ {
+ // Initiale Gr"o\se aus Resource oder ctor merken
+ aSize = GetSizePixel();
+
+ Size aParentSize = GetParent()->GetOutputSizePixel();
+ aPos.X() += ( aParentSize.Width() - aSize.Width() ) / 2;
+ aPos.Y() += ( aParentSize.Height() - aSize.Height() ) / 2;
+ }
+
+ Point aPoint;
+ Rectangle aRect = GetDesktopRectPixel();
+ aPoint.X() = aRect.Right() - aSize.Width();
+ aPoint.Y() = aRect.Bottom() - aSize.Height();
+
+ aPoint = OutputToScreenPixel( aPoint );
+
+ if ( aPos.X() > aPoint.X() )
+ aPos.X() = aPoint.X() ;
+ if ( aPos.Y() > aPoint.Y() )
+ aPos.Y() = aPoint.Y();
+
+ if ( aPos.X() < 0 ) aPos.X() = 0;
+ if ( aPos.Y() < 0 ) aPos.Y() = 0;
+
+ SetPosPixel( aPos );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFldDlg::PageCreated( USHORT nId, SfxTabPage &rPage )
+{
+/* switch( nId )
+ {
+ case TP_CHAR_DB:
+// ((SvxCharExtPage&)rPage).DisableControls(DISABLE_CASEMAP);
+ break;
+ }*/
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxItemSet* SwFldDlg::CreateInputItemSet( USHORT nId )
+{
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Einfuegen von neuen Feldern anstossen
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldDlg, OKHdl, Button *, pBtn )
+{
+ if (GetOKButton().IsEnabled())
+ {
+ SfxTabPage* pPage = GetTabPage(GetCurPageId());
+ pPage->FillItemSet(*(SfxItemSet*)0);
+
+ GetOKButton().GrabFocus(); // Wegen InputField-Dlg
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Nach Dok-Wechsel Dialog neu initialisieren
+ --------------------------------------------------------------------*/
+
+void SwFldDlg::ReInitDlg()
+{
+ SwDocShell* pDocSh = (SwDocShell*)SfxObjectShell::Current();
+ BOOL bNewMode = (::GetHtmlMode(pDocSh) & HTMLMODE_ON) != 0;
+
+ if (bNewMode != bHtmlMode)
+ {
+ SfxViewFrame::Current()->GetDispatcher()->
+ Execute(FN_INSERT_FIELD, SFX_CALLMODE_ASYNCHRON|SFX_CALLMODE_RECORD);
+ Close();
+ }
+
+ const SwWrtShell& rSh = ::GetActiveView()->GetWrtShell();
+ GetOKButton().Enable( !rSh.IsReadOnlyAvailable() ||
+ !rSh.HasReadonlySel() );
+
+ ReInitTabPage(TP_FLD_DOK);
+ ReInitTabPage(TP_FLD_VAR);
+ ReInitTabPage(TP_FLD_DOKINF);
+
+ if (!bHtmlMode)
+ {
+ ReInitTabPage(TP_FLD_REF);
+ ReInitTabPage(TP_FLD_FUNC);
+ ReInitTabPage(TP_FLD_DB);
+ }
+
+ pChildWin->SetOldDocShell(pDocSh);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Nach Dok-Wechsel TabPage neu initialisieren
+ --------------------------------------------------------------------*/
+
+void SwFldDlg::ReInitTabPage(USHORT nPageId)
+{
+ SwFldPage* pPage = (SwFldPage* )GetTabPage(nPageId);
+
+ if (pPage)
+ pPage->EditNewField(); // TabPage neu initialisieren
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Nach Aktivierung einige TabPages neu initialisieren
+ --------------------------------------------------------------------*/
+
+void SwFldDlg::Activate()
+{
+ BOOL bHtmlMode = (::GetHtmlMode((SwDocShell*)SfxObjectShell::Current()) & HTMLMODE_ON) != 0;
+
+ const SwWrtShell& rSh = ::GetActiveView()->GetWrtShell();
+ GetOKButton().Enable( !rSh.IsReadOnlyAvailable() ||
+ !rSh.HasReadonlySel() );
+
+ ReInitTabPage(TP_FLD_VAR);
+
+ if (!bHtmlMode)
+ ReInitTabPage(TP_FLD_REF);
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFldDlg::EnableInsert(BOOL bEnable)
+{
+ if( bEnable )
+ {
+ const SwWrtShell& rSh = ::GetActiveView()->GetWrtShell();
+ if( rSh.IsReadOnlyAvailable() && rSh.HasReadonlySel() )
+ bEnable = FALSE;
+ }
+ GetOKButton().Enable(bEnable);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFldDlg::InsertHdl()
+{
+ GetOKButton().Click();
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.26 2000/09/18 16:05:29 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.25 2000/09/07 15:59:24 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.24 2000/02/11 14:45:56 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.23 1999/01/20 13:16:52 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+
+ Rev 1.22 20 Jan 1999 14:16:52 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.21 22 Oct 1998 12:20:42 OM
+ #58157# Querverweis einfuegen
+
+ Rev 1.20 21 Oct 1998 16:16:04 OM
+ #58157# Querverweise einfuegen
+
+ Rev 1.19 09 Jul 1998 09:52:58 JP
+ EmptyStr benutzen
+
+ Rev 1.18 31 Mar 1998 13:31:38 OM
+ Korrekt abgleichen
+
+ Rev 1.17 27 Mar 1998 14:14:16 OM
+ ChildWindows im Modified-Hdl updaten
+
+ Rev 1.16 18 Mar 1998 10:33:56 OM
+ #48197# Focus restaurieren nach InputDlg
+
+ Rev 1.15 10 Mar 1998 17:27:12 OM
+ Korrekte Windowbits setzen
+
+ Rev 1.14 03 Mar 1998 13:31:02 OM
+ Im Html-Mode nicht alle TabPages anzeigen
+
+ Rev 1.13 09 Jan 1998 16:57:18 OM
+ Bei Dok-Wechsel updaten
+
+ Rev 1.12 06 Jan 1998 18:13:36 OM
+ Felbefehl-Dlg
+
+ Rev 1.11 19 Dec 1997 18:25:00 OM
+ Feldbefehl-bearbeiten Dlg
+
+ Rev 1.10 16 Dec 1997 17:02:46 OM
+ Feldbefehle bearbeiten
+
+ Rev 1.9 12 Dec 1997 16:11:12 OM
+ AutoUpdate bei FocusWechsel u.a.
+
+ Rev 1.8 12 Dec 1997 10:49:38 OM
+ ExchangeSupport implementiert
+
+ Rev 1.7 09 Dec 1997 17:16:46 OM
+ Kein alter Feldbefehl-Dialog mehr
+
+ Rev 1.6 21 Nov 1997 17:19:42 OM
+ Feldbefehl-Umstellung: DocInfo
+
+ Rev 1.5 18 Nov 1997 10:33:10 OM
+ Neuer Feldbefehldialog
+
+ Rev 1.4 11 Nov 1997 10:03:40 OM
+ Neuer Feldbefehl-Dialog
+
+ Rev 1.3 04 Nov 1997 10:05:42 OM
+ Neuer Felddialog
+
+ Rev 1.2 30 Oct 1997 16:29:42 OM
+ Feldbefehl-Umstellung
+
+ Rev 1.1 30 Oct 1997 14:30:48 OM
+ Feldbefehl-Umstellung
+
+ Rev 1.0 28 Oct 1997 15:05:38 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
diff --git a/sw/source/ui/fldui/fldtdlg.hrc b/sw/source/ui/fldui/fldtdlg.hrc
new file mode 100644
index 000000000000..524ed5cc3a68
--- /dev/null
+++ b/sw/source/ui/fldui/fldtdlg.hrc
@@ -0,0 +1,189 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldtdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:36 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _FLDTDLG_HRC
+#define _FLDTDLG_HRC
+
+// #include -----------------------------------------------------------------
+
+// #define ------------------------------------------------------------------
+
+#define RC_FLDTDLG_BEGIN 0
+
+// Datenbankfeld-TabPage:
+#define RC_TP_DB_START (RC_FLDTDLG_BEGIN)
+#define FT_DBTYPE (RC_TP_DB_START + 1)
+#define LB_DBTYPE (RC_TP_DB_START + 2)
+#define GB_DBFORMAT (RC_TP_DB_START + 3)
+#define FT_DBSELECTION (RC_TP_DB_START + 4)
+#define TLB_DBLIST (RC_TP_DB_START + 5)
+#define FT_DBCONDITION (RC_TP_DB_START + 6)
+#define FT_DBSETNUMBER (RC_TP_DB_START + 7)
+#define ED_DBCONDITION (RC_TP_DB_START + 8)
+#define ED_DBSETNUMBER (RC_TP_DB_START + 9)
+#define LB_DBFORMAT (RC_TP_DB_START + 10)
+#define LB_DBNUMFORMAT (RC_TP_DB_START + 11)
+#define RB_DBFORMAT (RC_TP_DB_START + 12)
+#define RB_DBOWNFORMAT (RC_TP_DB_START + 13)
+#define RC_TP_DB_END (RC_TP_DB_START + 14)
+
+// Dokumentinfo-TabPage:
+#define RC_TP_DOCINF_START (RC_TP_DB_END)
+#define FT_DOKINFTYPE (RC_TP_DOCINF_START + 1)
+#define TLB_DOKINFTYPE (RC_TP_DOCINF_START + 2)
+#define FT_DOKINFSELECTION (RC_TP_DOCINF_START + 3)
+#define LB_DOKINFSELECTION (RC_TP_DOCINF_START + 4)
+#define FT_DOKINFFORMAT (RC_TP_DOCINF_START + 5)
+#define LB_DOKINFFORMAT (RC_TP_DOCINF_START + 6)
+#define CB_DOKINFFIXEDCONTENT (RC_TP_DOCINF_START + 7)
+#define BMP_DOKINFROOT_OPENED (RC_TP_DOCINF_START + 8)
+#define BMP_DOKINFROOT_CLOSED (RC_TP_DOCINF_START + 9)
+#define STR_DOKINF_INFO (RC_TP_DOCINF_START + 10)
+#define RC_TP_DOCINF_END (RC_TP_DOCINF_START + 11)
+
+// Variablen-TabPage:
+#define RC_TP_VAR_START (RC_TP_DOCINF_END)
+#define FT_VARTYPE (RC_TP_VAR_START + 1)
+#define LB_VARTYPE (RC_TP_VAR_START + 2)
+#define FT_VARSELECTION (RC_TP_VAR_START + 3)
+#define LB_VARSELECTION (RC_TP_VAR_START + 4)
+#define FT_VARNAME (RC_TP_VAR_START + 5)
+#define ED_VARNAME (RC_TP_VAR_START + 6)
+#define FT_VARVALUE (RC_TP_VAR_START + 7)
+#define ED_VARVALUE (RC_TP_VAR_START + 8)
+#define FT_VARFORMAT (RC_TP_VAR_START + 9)
+#define LB_VARNUMFORMAT (RC_TP_VAR_START + 10)
+#define LB_VARFORMAT (RC_TP_VAR_START + 11)
+#define FT_VARCHAPTERHEADER (RC_TP_VAR_START + 12)
+#define FT_VARCHAPTERLEVEL (RC_TP_VAR_START + 13)
+#define LB_VARCHAPTERLEVEL (RC_TP_VAR_START + 14)
+#define CB_VARINVISIBLE (RC_TP_VAR_START + 15)
+#define FT_VARSEPARATOR (RC_TP_VAR_START + 16)
+#define ED_VARSEPARATOR (RC_TP_VAR_START + 17)
+#define TBX_VARNEWDEL (RC_TP_VAR_START + 18)
+#define BT_VARAPPLY (RC_TP_VAR_START + 19)
+#define BT_VARDELETE (RC_TP_VAR_START + 20)
+#define RC_TP_VAR_END (RC_TP_VAR_START + 21)
+
+// Dokument-TabPage:
+#define RC_TP_DOC_START (RC_TP_VAR_END)
+#define FT_DOKTYPE (RC_TP_DOC_START + 1)
+#define LB_DOKTYPE (RC_TP_DOC_START + 2)
+#define FT_DOKSELECTION (RC_TP_DOC_START + 3)
+#define LB_DOKSELECTION (RC_TP_DOC_START + 4)
+#define LB_DOKNUMFORMAT (RC_TP_DOC_START + 5)
+#define LB_DOKFORMAT (RC_TP_DOC_START + 6)
+#define FT_DOKFORMAT (RC_TP_DOC_START + 7)
+#define FT_DOKVALUE (RC_TP_DOC_START + 8)
+#define ED_DOKVALUE (RC_TP_DOC_START + 9)
+#define ED_DOKLEVEL (RC_TP_DOC_START + 10)
+#define ED_DOKDATEOFF (RC_TP_DOC_START + 11)
+#define CB_DOKFIXEDCONTENT (RC_TP_DOC_START + 12)
+#define STR_DOKDATEOFF (RC_TP_DOC_START + 13)
+#define STR_DOKTIMEOFF (RC_TP_DOC_START + 14)
+#define BMP_DOKROOT_OPENED (RC_TP_DOC_START + 15)
+#define BMP_DOKROOT_CLOSED (RC_TP_DOC_START + 16)
+#define RC_TP_DOC_END (RC_TP_DOC_START + 17)
+
+// Funktion-TabPage:
+#define RC_TP_FUNC_START (RC_TP_DOC_END)
+#define FT_FUNCTYPE (RC_TP_FUNC_START + 1)
+#define LB_FUNCTYPE (RC_TP_FUNC_START + 2)
+#define LB_FUNCSELECTION (RC_TP_FUNC_START + 3)
+#define FT_FUNCSELECTION (RC_TP_FUNC_START + 4)
+#define FT_FUNCFORMAT (RC_TP_FUNC_START + 5)
+#define LB_FUNCFORMAT (RC_TP_FUNC_START + 6)
+#define FT_FUNCNAME (RC_TP_FUNC_START + 7)
+#define ED_FUNCNAME (RC_TP_FUNC_START + 8)
+#define FT_FUNCVALUE (RC_TP_FUNC_START + 9)
+#define ED_FUNCVALUE (RC_TP_FUNC_START + 10)
+#define FT_FUNCCOND1 (RC_TP_FUNC_START + 11)
+#define ED_FUNCCOND1 (RC_TP_FUNC_START + 12)
+#define FT_FUNCCOND2 (RC_TP_FUNC_START + 13)
+#define ED_FUNCCOND2 (RC_TP_FUNC_START + 14)
+#define BT_FUNCMACRO (RC_TP_FUNC_START + 15)
+#define RC_TP_FUNC_END (RC_TP_FUNC_START + 16)
+
+// Referenz-TabPage:
+#define RC_TP_REF_START (RC_TP_FUNC_END)
+#define FT_REFTYPE (RC_TP_REF_START + 1)
+#define LB_REFTYPE (RC_TP_REF_START + 2)
+#define FT_REFSELECTION (RC_TP_REF_START + 3)
+#define LB_REFSELECTION (RC_TP_REF_START + 4)
+#define LB_REFFORMAT (RC_TP_REF_START + 5)
+#define FT_REFFORMAT (RC_TP_REF_START + 6)
+#define FT_REFNAME (RC_TP_REF_START + 7)
+#define ED_REFNAME (RC_TP_REF_START + 8)
+#define FT_REFVALUE (RC_TP_REF_START + 9)
+#define ED_REFVALUE (RC_TP_REF_START + 10)
+#define STR_REFBOOKMARK (RC_TP_REF_START + 11)
+#define STR_REFFOOTNOTE (RC_TP_REF_START + 12)
+#define STR_REFENDNOTE (RC_TP_REF_START + 13)
+#define RC_TP_REF_END (RC_TP_REF_START + 14)
+
+#define RC_TP_END (RC_TP_REF_END)
+
+// Strings ------------------------------------------------------------------
+
+#define STR_FLD_INSERT (RC_TP_END + 1)
+#define STR_FLD_CLOSE (RC_TP_END + 2)
+
+#endif
diff --git a/sw/source/ui/fldui/fldtdlg.src b/sw/source/ui/fldui/fldtdlg.src
new file mode 100644
index 000000000000..11858862a80a
--- /dev/null
+++ b/sw/source/ui/fldui/fldtdlg.src
@@ -0,0 +1,306 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldtdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "globals.hrc"
+#include "fldui.hrc"
+#include "fldtdlg.hrc"
+#include "helpid.h"
+TabDialog DLG_FLD_INSERT
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Feldbefehle" ;
+ Text [ ENGLISH ] = "Fields" ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_FLD_DOK ;
+ Text = "Dokument" ;
+ Text [ ENGLISH ] = "Document" ;
+ PageResID = TP_FLD_DOK ;
+ Text [ english_us ] = "Document" ;
+ Text [ portuguese_brazilian ] = "Dokument" ;
+ Text [ swedish ] = "Dokument" ;
+ Text [ danish ] = "Dokument" ;
+ Text [ italian ] = "Documento" ;
+ Text [ spanish ] = "Documento" ;
+ Text [ french ] = "Document" ;
+ Text [ dutch ] = "Document" ;
+ Text [ portuguese ] = "Documento" ;
+ Text[ chinese_simplified ] = "Îĵµ";
+ Text[ russian ] = "Äîêóìåíò";
+ Text[ polish ] = "Dokument";
+ Text[ japanese ] = "•¶‘";
+ Text[ chinese_traditional ] = "¤å¥ó";
+ Text[ arabic ] = "ÇáãÓÊäÏ";
+ Text[ greek ] = "¸ããñáöï";
+ Text[ korean ] = "¹®¼­";
+ Text[ turkish ] = "Belge";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_FLD_REF ;
+ Text = "Referenzen" ;
+ Text [ ENGLISH ] = "References" ;
+ PageResID = TP_FLD_REF ;
+ Text [ english_us ] = "References" ;
+ Text [ portuguese_brazilian ] = "Referenzen" ;
+ Text [ swedish ] = "Referenser" ;
+ Text [ danish ] = "Referencer" ;
+ Text [ italian ] = "Riferimenti" ;
+ Text [ spanish ] = "Referencias" ;
+ Text [ french ] = "Références" ;
+ Text [ dutch ] = "Verwijzingen" ;
+ Text [ portuguese ] = "Referências" ;
+ Text[ chinese_simplified ] = "ÒýÓÃ";
+ Text[ russian ] = "Ññûëêè";
+ Text[ polish ] = "Odwo³ania";
+ Text[ japanese ] = "ŽQÆ";
+ Text[ chinese_traditional ] = "°Ñ·Ó";
+ Text[ arabic ] = "ãÑÇÌÚ";
+ Text[ greek ] = "ÁíáöïñÝò";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ turkish ] = "Referanslar";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_FLD_FUNC ;
+ Text = "Funktionen" ;
+ Text [ ENGLISH ] = "Functions" ;
+ PageResID = TP_FLD_FUNC ;
+ 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[ greek ] = "Ëåéôïõñãßåò";
+ Text[ korean ] = "±â´É";
+ Text[ turkish ] = "Ýþlevler";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_FLD_DOKINF ;
+ Text = "Dokumentinfo" ;
+ Text [ ENGLISH ] = "Document information" ;
+ PageResID = TP_FLD_DOKINF ;
+ Text [ english_us ] = "DocInformation" ;
+ Text [ portuguese_brazilian ] = "Dokumentinfo" ;
+ Text [ swedish ] = "Dokumentinfo" ;
+ Text [ danish ] = "Dokumentinfo" ;
+ Text [ italian ] = "Info documento" ;
+ Text [ spanish ] = "Información del documento" ;
+ Text [ french ] = "Info document" ;
+ Text [ dutch ] = "Documentinfo" ;
+ Text [ portuguese ] = "Info. sobre documento" ;
+ Text[ chinese_simplified ] = "ÎĵµÐÅÏ¢";
+ Text[ russian ] = "Ñâåäåíèÿ î äîêóìåíòå";
+ Text[ polish ] = "Informacje o dokumencie";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ ²ÝÌ«Ò°¼®Ý";
+ Text[ chinese_traditional ] = "¤å¥ó¸ê°T";
+ Text[ arabic ] = "ãÚáæãÇÊ ÇáãÓÊäÏ";
+ Text[ greek ] = "Ðëçñïöïñßåò åããñÜöïõ";
+ Text[ korean ] = "µî·ÏÁ¤º¸";
+ Text[ turkish ] = "Belge bilgileri";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_FLD_VAR ;
+ Text = "Variablen" ;
+ Text [ ENGLISH ] = "Variables" ;
+ PageResID = TP_FLD_VAR ;
+ Text [ english_us ] = "Variables" ;
+ Text [ portuguese_brazilian ] = "Variablen" ;
+ Text [ swedish ] = "Variabler" ;
+ Text [ danish ] = "Variabler" ;
+ Text [ italian ] = "Variabili" ;
+ Text [ spanish ] = "Variables" ;
+ Text [ french ] = "Variables" ;
+ Text [ dutch ] = "Variabelen" ;
+ Text [ portuguese ] = "Variáveis" ;
+ Text[ chinese_simplified ] = "±äÁ¿";
+ Text[ russian ] = "Ïåðåìåííûå";
+ Text[ polish ] = "Zmienne";
+ Text[ japanese ] = "•Ï”";
+ Text[ chinese_traditional ] = "Åܶq";
+ Text[ arabic ] = "ãÊÛíÑÇÊ";
+ Text[ greek ] = "ÌåôáâëçôÝò";
+ Text[ korean ] = "º¯¼ö";
+ Text[ turkish ] = "Deðiþkenler";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_FLD_DB ;
+ Text = "Datenbank" ;
+ Text [ ENGLISH ] = "Database" ;
+ PageResID = TP_FLD_DB ;
+ Text [ english_us ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ swedish ] = "Databas" ;
+ Text [ danish ] = "Database" ;
+ Text [ italian ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ french ] = "Base de données" ;
+ Text [ dutch ] = "Database" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text[ chinese_simplified ] = "Êý¾Ý¿â";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "¸ê®Æ®w";
+ Text[ arabic ] = "ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ String STR_FLD_INSERT
+ {
+ 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" ;
+ Text[ chinese_simplified ] = "²åÈë(~I)";
+ Text[ russian ] = "Âñòàâêà";
+ Text[ polish ] = "Wstaw";
+ Text[ japanese ] = "‘}“ü(~I)";
+ Text[ chinese_traditional ] = "´¡¤J(~I)";
+ Text[ arabic ] = "ÅÏÑÇÌ";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "»ðÀÔ(~I)";
+ Text[ turkish ] = "~Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FLD_CLOSE
+ {
+ Text = "~Schließen" ;
+ Text [ ENGLISH ] = "C~lose" ;
+ Text [ english_us ] = "~Close" ;
+ Text [ italian ] = "~Chiudi" ;
+ Text [ spanish ] = "~Cerrar" ;
+ Text [ french ] = "~Fermer" ;
+ Text [ dutch ] = "~Sluiten" ;
+ Text [ swedish ] = "~Stäng" ;
+ Text [ danish ] = "Luk" ;
+ Text [ portuguese_brazilian ] = "~Schließen" ;
+ Text [ portuguese ] = "~Sair" ;
+ 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ýþ";
+ Text[ language_user1 ] = " ";
+ };
+ Text [ english_us ] = "Fields" ;
+ Text [ portuguese_brazilian ] = "Feldbefehle" ;
+ Text [ swedish ] = "Fältkommandon" ;
+ Text [ danish ] = "Felter" ;
+ Text [ italian ] = "Comandi di campo" ;
+ Text [ spanish ] = "Comandos de campo" ;
+ Text [ french ] = "Instructions de champ" ;
+ Text [ dutch ] = "Veldopdracht" ;
+ Text [ portuguese ] = "Campos" ;
+ Text[ chinese_simplified ] = "×Ö¶ÎÖ¸Áî";
+ Text[ russian ] = "Ïîëå";
+ Text[ polish ] = "Pola";
+ Text[ japanese ] = "̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "Äæ¦ì«ü¥O";
+ Text[ arabic ] = "ÍÞæá";
+ Text[ greek ] = "ÅíôïëÝò ðåäßùí";
+ Text[ korean ] = "Çʵå";
+ Text[ turkish ] = "Alan öðeleri";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/fldui/fldui.src b/sw/source/ui/fldui/fldui.src
new file mode 100644
index 000000000000..c91f5cee5473
--- /dev/null
+++ b/sw/source/ui/fldui/fldui.src
@@ -0,0 +1,3383 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldui.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 _FLDUI_SRC
+#include "fldui.hrc"
+#include "helpid.h"
+
+/*--------------------------------------------------------------------
+ Beschreibung: Strings fuer die Types
+ --------------------------------------------------------------------*/
+String STR_FLD_EDIT_DLG
+{
+ Text = "Feldbefehl bearbeiten" ;
+ Text [ ENGLISH ] = "Edit Field" ;
+ Text [ norwegian ] = "Edit Field" ;
+ Text [ italian ] = "Modifica comando di campo" ;
+ Text [ portuguese_brazilian ] = "Editar Campo" ;
+ Text [ portuguese ] = "Editar campos" ;
+ Text [ finnish ] = "Muokkaa kenttää" ;
+ Text [ danish ] = "Rediger felt" ;
+ Text [ french ] = "Édition d'une instruction de champ" ;
+ Text [ swedish ] = "Redigera fältkommando" ;
+ Text [ dutch ] = "Veldopdracht bewerken" ;
+ Text [ spanish ] = "Editar campos" ;
+ Text [ english_us ] = "Edit Fields" ;
+ Text[ chinese_simplified ] = "±à¼­×Ö¶ÎÖ¸Áî";
+ Text[ russian ] = "Ïðàâêà ïîëÿ";
+ Text[ polish ] = "Edytuj pole";
+ Text[ japanese ] = "̨°ÙÄÞ‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿èÄæ¦ì«ü¥O";
+ Text[ arabic ] = "ÊÍÑíÑ ÇáÍÞá";
+ Text[ greek ] = "Åðåîåñãáóßá åíôïëÞò ðåäßïõ";
+ Text[ korean ] = "ÆÄÀÏ ÆíÁý";
+ Text[ turkish ] = "Alan öðesi düzenle";
+ Text[ language_user1 ] = " ";
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Strings fuer die Types
+ --------------------------------------------------------------------*/
+ //
+ // Bereich Dokument
+ //
+String STR_DATEFLD
+{
+ 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 ] = " ";
+};
+String STR_TIMEFLD
+{
+ TEXT = "Uhrzeit" ;
+ TEXT [ English ] = "Time" ;
+ TEXT [ norwegian ] = "Time" ;
+ TEXT [ italian ] = "Orario" ;
+ TEXT [ portuguese_brazilian ] = "Hora" ;
+ TEXT [ portuguese ] = "Hora" ;
+ TEXT [ finnish ] = "Aika" ;
+ TEXT [ danish ] = "Klokkeslæt" ;
+ TEXT [ french ] = "Heure" ;
+ TEXT [ swedish ] = "Klockslag" ;
+ TEXT [ dutch ] = "Tijd" ;
+ TEXT [ spanish ] = "Hora" ;
+ TEXT [ english_us ] = "Time" ;
+ TEXT[ chinese_simplified ] = "ʱ¼ä";
+ TEXT[ russian ] = "Âðåìÿ";
+ TEXT[ polish ] = "Godzina";
+ TEXT[ japanese ] = "Žž";
+ TEXT[ chinese_traditional ] = "®É¶¡";
+ TEXT[ arabic ] = "ÇáæÞÊ";
+ TEXT[ greek ] = "¿ñá";
+ TEXT[ korean ] = "½Ã°£";
+ TEXT[ turkish ] = "Saat";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_FILENAMEFLD
+{
+ TEXT = "Dateiname" ;
+ TEXT [ English ] = "Filename" ;
+ TEXT [ norwegian ] = "Filename" ;
+ TEXT [ italian ] = "Nome file" ;
+ TEXT [ portuguese_brazilian ] = "Nome do Arquivo" ;
+ TEXT [ portuguese ] = "Nome do ficheiro" ;
+ TEXT [ finnish ] = "Tiedostonimi" ;
+ 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[ greek ] = "¼íïìá áñ÷åßïõ";
+ TEXT[ korean ] = "ÆÄÀÏ À̸§";
+ TEXT[ turkish ] = "Dosya adý";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DBNAMEFLD
+{
+ TEXT = "Datenbankname" ;
+ TEXT [ English ] = "Database name" ;
+ TEXT [ norwegian ] = "Database name" ;
+ TEXT [ italian ] = "Nome database" ;
+ TEXT [ portuguese_brazilian ] = "Nome da base de dados" ;
+ TEXT [ portuguese ] = "Nome da base de dados" ;
+ TEXT [ finnish ] = "Tietokannan nimi" ;
+ TEXT [ danish ] = "Databasenavn" ;
+ TEXT [ french ] = "Nom de la base de données" ;
+ TEXT [ swedish ] = "Databasnamn" ;
+ TEXT [ dutch ] = "Naam database" ;
+ TEXT [ spanish ] = "Nombre de base de datos" ;
+ TEXT [ english_us ] = "Database Name" ;
+ TEXT[ chinese_simplified ] = "Êý¾Ý¿âÃû³Æ";
+ TEXT[ russian ] = "Èìÿ áàçû äàííûõ";
+ TEXT[ polish ] = "Nazwa bazy danych";
+ TEXT[ japanese ] = "ÃÞ°ÀÍÞ°½–¼";
+ TEXT[ chinese_traditional ] = "¸ê®Æ®w¦WºÙ";
+ TEXT[ arabic ] = "ÇÓã ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ TEXT[ greek ] = "¼íïìá âÜóçò äåäïìÝíùí";
+ TEXT[ korean ] = "µ¥ÀÌÅͺ£À̽º À̸§";
+ TEXT[ turkish ] = "Veritabaný adý";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_CHAPTERFLD
+{
+ TEXT = "Kapitel" ;
+ TEXT [ English ] = "Chapter" ;
+ TEXT [ norwegian ] = "Chapter" ;
+ TEXT [ italian ] = "Capitolo" ;
+ TEXT [ portuguese_brazilian ] = "Capítulo" ;
+ TEXT [ portuguese ] = "Capítulo" ;
+ TEXT [ finnish ] = "Luku" ;
+ TEXT [ danish ] = "Kapitel" ;
+ TEXT [ french ] = "Chapitre" ;
+ TEXT [ swedish ] = "Kapitel" ;
+ TEXT [ dutch ] = "Hoofdstuk" ;
+ TEXT [ spanish ] = "Capítulo" ;
+ TEXT [ english_us ] = "Chapter" ;
+ TEXT[ chinese_simplified ] = "ÕÂ";
+ TEXT[ russian ] = "Ãëàâà";
+ TEXT[ polish ] = "Rozdzia³";
+ TEXT[ japanese ] = "Í";
+ TEXT[ language_user1 ] = " ";
+ TEXT[ chinese_traditional ] = "³¹";
+ TEXT[ arabic ] = "ÇáÝÕá";
+ TEXT[ greek ] = "ÊåöÜëáéï";
+ TEXT[ korean ] = "Àå";
+ TEXT[ turkish ] = "Bölüm";
+};
+String STR_PAGENUMBERFLD
+{
+ TEXT = "Seitennummer" ;
+ TEXT [ English ] = "Page number" ;
+ TEXT [ norwegian ] = "Sidenummer" ;
+ TEXT [ italian ] = "Numero pagina" ;
+ TEXT [ portuguese_brazilian ] = "Número de página" ;
+ TEXT [ portuguese ] = "Número de página" ;
+ TEXT [ finnish ] = "Sivunumero" ;
+ TEXT [ danish ] = "Sidetal" ;
+ TEXT [ french ] = "Numéro de page" ;
+ TEXT [ swedish ] = "Sidnummer" ;
+ TEXT [ dutch ] = "Paginanummer" ;
+ TEXT [ spanish ] = "Número de página" ;
+ TEXT [ english_us ] = "Page numbers" ;
+ TEXT[ chinese_simplified ] = "Ò³Âë";
+ TEXT[ russian ] = "Íîìåð ñòðàíèöû";
+ TEXT[ polish ] = "Numer strony";
+ TEXT[ japanese ] = "Íß°¼Þ”Ô†";
+ TEXT[ chinese_traditional ] = "­¶½X";
+ TEXT[ arabic ] = "ÑÞã ÇáÕÝÍÉ";
+ TEXT[ greek ] = "Áñéèìüò óåëßäáò";
+ TEXT[ korean ] = "ÆäÀÌÁö ¹øÈ£";
+ TEXT[ turkish ] = "Sayfa numarasý";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DOCSTATFLD
+{
+ 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_AUTHORFLD
+{
+ TEXT = "Benutzer" ;
+ TEXT [ English ] = "User" ;
+ Text [ portuguese ] = "Autor" ;
+ Text [ english_us ] = "Author" ;
+ Text [ portuguese_brazilian ] = "Autor" ;
+ Text [ swedish ] = "Användare" ;
+ Text [ danish ] = "Bruger" ;
+ Text [ italian ] = "Autore" ;
+ Text [ spanish ] = "Usuario" ;
+ Text [ french ] = "Utilisateur" ;
+ Text [ dutch ] = "Gebruiker" ;
+ Text[ chinese_simplified ] = "ʹÓÃÕß";
+ Text[ russian ] = "Ïîëüçîâàòåëü";
+ Text[ polish ] = "U¿ytkownik";
+ Text[ japanese ] = "Õ°»Þ°";
+ Text[ chinese_traditional ] = "¨Ï¥ÎªÌ";
+ Text[ arabic ] = "ÇáãÓÊÎÏã";
+ Text[ greek ] = "×ñÞóôçò";
+ Text[ korean ] = "ÀÛ¼ºÀÚ";
+ Text[ turkish ] = "Yazan";
+ Text[ language_user1 ] = " ";
+};
+String STR_TEMPLNAMEFLD
+{
+ TEXT = "Dokumentvorlage" ;
+ TEXT [ English ] = "Template" ;
+ TEXT [ norwegian ] = "Mal" ;
+ TEXT [ italian ] = "Modello" ;
+ TEXT [ portuguese_brazilian ] = "Modelo" ;
+ TEXT [ portuguese ] = "Modelo de documento" ;
+ TEXT [ finnish ] = "Mallipohja" ;
+ TEXT [ danish ] = "Dokumentskabelon" ;
+ TEXT [ french ] = "Modèle de document" ;
+ TEXT [ swedish ] = "Dokumentmall" ;
+ TEXT [ dutch ] = "Sjabloon" ;
+ TEXT [ spanish ] = "Plantilla" ;
+ TEXT [ english_us ] = "Templates" ;
+ TEXT[ chinese_simplified ] = "ÎĵµÑùʽ";
+ TEXT[ russian ] = "Øàáëîí äîêóìåíòà";
+ TEXT[ polish ] = "Szablon dokumentu";
+ TEXT[ japanese ] = "ÄÞ·­ÒÝÄ‚ÌÃÝÌßÚ°Ä";
+ TEXT[ chinese_traditional ] = "¤å¥ó¼Ë¦¡";
+ TEXT[ arabic ] = "ÞÇáÈ ãÓÊäÏ";
+ TEXT[ greek ] = "Ðñüôõðï åããñÜöïõ";
+ TEXT[ korean ] = "¹®¼­ ÅÛÇø®Æ®";
+ TEXT[ turkish ] = "Belge þablonu";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_EXTUSERFLD
+{
+ TEXT = "Absender" ;
+ TEXT [ English ] = "Sender" ;
+ TEXT [ norwegian ] = "Sender" ;
+ TEXT [ italian ] = "Mittente" ;
+ TEXT [ portuguese_brazilian ] = "Remetente" ;
+ TEXT [ portuguese ] = "Remetente" ;
+ TEXT [ finnish ] = "Lähettäjä" ;
+ TEXT [ danish ] = "Afsender" ;
+ TEXT [ french ] = "Expéditeur" ;
+ TEXT [ swedish ] = "Avsändare" ;
+ TEXT [ dutch ] = "Afzender" ;
+ TEXT [ spanish ] = "Remitente" ;
+ TEXT [ english_us ] = "Sender" ;
+ TEXT[ chinese_simplified ] = "·¢¼þÈË";
+ TEXT[ russian ] = "Îòïðàâèòåëü";
+ TEXT[ polish ] = "Nadawca";
+ TEXT[ japanese ] = "·ol";
+ TEXT[ chinese_traditional ] = "±H¥óªÌ";
+ TEXT[ arabic ] = "ÇáãÑÓá";
+ TEXT[ greek ] = "ÁðïóôïëÝáò";
+ TEXT[ korean ] = "º¸³½ »ç¶÷";
+ TEXT[ turkish ] = "Gönderen";
+ TEXT[ language_user1 ] = " ";
+};
+ //
+ // Bereich Funktionen
+ //
+String STR_SETFLD
+{
+ TEXT = "Variable setzen" ;
+ TEXT [ English ] = "Set variable" ;
+ TEXT [ norwegian ] = "Set variable" ;
+ TEXT [ italian ] = "Imposta variabile" ;
+ TEXT [ portuguese_brazilian ] = "Definir variável" ;
+ TEXT [ portuguese ] = "Definir variável" ;
+ TEXT [ finnish ] = "Määritä muuttuja" ;
+ TEXT [ danish ] = "Definer variabel" ;
+ TEXT [ french ] = "Définir une variable" ;
+ TEXT [ swedish ] = "Sätt variabel" ;
+ TEXT [ dutch ] = "Variabele definiëren" ;
+ TEXT [ spanish ] = "Establecer variable" ;
+ TEXT [ english_us ] = "Set variable" ;
+ TEXT[ chinese_simplified ] = "É趨±äÁ¿";
+ TEXT[ russian ] = "Óñòàíîâèòü ïåðåìåííûå";
+ TEXT[ polish ] = "OsadŸ zmienn¹";
+ TEXT[ japanese ] = "•Ï”‚ÌÝ’è";
+ TEXT[ chinese_traditional ] = "³]©wÅܶq";
+ TEXT[ arabic ] = "ÊÚííä ãÊÛíÑÉ";
+ TEXT[ greek ] = "Êáèïñéóìüò ìåôáâëçôÞò";
+ TEXT[ korean ] = "º¯¼ö ¼³Á¤";
+ TEXT[ turkish ] = "Deðiþken tanýmla";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_GETFLD
+{
+ TEXT = "Variable anzeigen" ;
+ TEXT [ English ] = "Show variable" ;
+ TEXT [ norwegian ] = "Show variable" ;
+ TEXT [ italian ] = "Mostra variabile" ;
+ TEXT [ portuguese_brazilian ] = "Mostrar variável" ;
+ TEXT [ portuguese ] = "Mostrar variável" ;
+ TEXT [ finnish ] = "Näytä muuttuja" ;
+ TEXT [ danish ] = "Vis variabel" ;
+ TEXT [ french ] = "Afficher variables" ;
+ TEXT [ swedish ] = "Visa variabel" ;
+ TEXT [ dutch ] = "Variabele weergeven" ;
+ TEXT [ spanish ] = "Mostrar variable" ;
+ TEXT [ english_us ] = "Show variable" ;
+ TEXT[ chinese_simplified ] = "ÏÔʾ±äÁ¿";
+ TEXT[ russian ] = "Ïîêàçàòü ïåðåìåííûå";
+ TEXT[ polish ] = "Poka¿ zmienn¹";
+ TEXT[ japanese ] = "•Ï”‚Ì•\\Ž¦";
+ TEXT[ chinese_traditional ] = "Åã¥ÜÅܶq";
+ TEXT[ arabic ] = "ÅÙåÇÑ ãÊÛíÑÉ";
+ TEXT[ greek ] = "ÅìöÜíéóç ìåôáâëçôÞò";
+ TEXT[ korean ] = "º¯¼ö º¸À̱â";
+ TEXT[ turkish ] = "Deðiþken görüntüle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_FORMELFLD
+{
+ TEXT = "Formel einfügen" ;
+ TEXT [ English ] = "Insert equation" ;
+ TEXT [ norwegian ] = "Insert equation" ;
+ TEXT [ italian ] = "Inserisci formula" ;
+ TEXT [ portuguese_brazilian ] = "Inserir equação" ;
+ TEXT [ portuguese ] = "Inserir fórmula" ;
+ TEXT [ finnish ] = "Lisää kaava" ;
+ TEXT [ danish ] = "Indsæt formel" ;
+ TEXT [ french ] = "Insérer une formule" ;
+ TEXT [ swedish ] = "Infoga formel" ;
+ TEXT [ dutch ] = "Formule invoegen" ;
+ TEXT [ spanish ] = "Insertar fórmula" ;
+ TEXT [ english_us ] = "Insert Formula" ;
+ TEXT[ chinese_simplified ] = "²åÈ빫ʽ";
+ TEXT[ russian ] = "Âñòàâêà ôîðìóëû";
+ TEXT[ polish ] = "Wstaw formu³ê";
+ TEXT[ japanese ] = "”Ž®‚Ì‘}“ü";
+ TEXT[ chinese_traditional ] = "´¡¤J¤½¦¡";
+ TEXT[ arabic ] = "ÅÏÑÇÌ ÕíÛÉ";
+ TEXT[ greek ] = "ÅéóáãùãÞ ôýðïõ";
+ TEXT[ korean ] = "¼ö½Ä »ðÀÔ";
+ TEXT[ turkish ] = "Formül ekle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_INPUTFLD
+{
+ TEXT = "Eingabefeld" ;
+ TEXT [ English ] = "Input field" ;
+ TEXT [ norwegian ] = "Input field" ;
+ TEXT [ italian ] = "Campo di digitazione" ;
+ TEXT [ portuguese_brazilian ] = "Campo de entrada" ;
+ TEXT [ portuguese ] = "Campo de entrada" ;
+ TEXT [ finnish ] = "Syöttökenttä" ;
+ TEXT [ danish ] = "Inputfelt" ;
+ TEXT [ french ] = "Champ de saisie" ;
+ TEXT [ swedish ] = "Inmatningsfält" ;
+ TEXT [ dutch ] = "Invoerveld" ;
+ TEXT [ spanish ] = "Campo de entrada" ;
+ TEXT [ english_us ] = "Input field" ;
+ TEXT[ chinese_simplified ] = "ÊäÈëÀ¸";
+ TEXT[ russian ] = "Ïîëå ââîäà";
+ TEXT[ polish ] = "Pole wprowadzania";
+ TEXT[ japanese ] = "“ü—Į́°ÙÄÞ";
+ TEXT[ chinese_traditional ] = "Äæ¦ì";
+ TEXT[ arabic ] = "ÍÞá ÅÏÎÇá";
+ TEXT[ greek ] = "Ðåäßï åéóáãùãÞò";
+ TEXT[ korean ] = "Çʵå ÀÔ·Â";
+ TEXT[ turkish ] = "Giriþ alaný";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_SETINPUTFLD
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Eingabefeld (Variable) : Eingabefeld (Varibale) */
+ /* ### ACHTUNG: Neuer Text in Resource? Eingabefeld (Variable) : Eingabefeld (Varibale) */
+ /* ### ACHTUNG: Neuer Text in Resource? Eingabefeld (Variable) : Eingabefeld (Varibale) */
+ /* ### ACHTUNG: Neuer Text in Resource? Eingabefeld (Variable) : Eingabefeld (Varibale) */
+ /* ### ACHTUNG: Neuer Text in Resource? Eingabefeld (Variable) : Eingabefeld (Varibale) */
+ TEXT = "Eingabefeld (Variable)" ;
+ TEXT [ English ] = "Input field (Variable)" ;
+ Text [ english_us ] = "Input field (variable)" ;
+ Text [ italian ] = "Campo di digitazione (variabile)" ;
+ Text [ spanish ] = "Campo de entrada (variable)" ;
+ Text [ french ] = "Champ de saisie (pour variables)" ;
+ Text [ dutch ] = "Invoerveld (variabele)" ;
+ Text [ swedish ] = "Inmatningsfält (variabel)" ;
+ Text [ danish ] = "Inputfelt (variabel)" ;
+ Text [ portuguese ] = "Campo de entrada (variável)" ;
+ Text [ portuguese_brazilian ] = "Eingabefeld (Varibale)" ;
+ Text[ chinese_simplified ] = "ÊäÈë×Ö¶ÎÇø(±äÊý)";
+ Text[ russian ] = "Ïîëå ââîäà (èçìåíÿåìîå)";
+ Text[ polish ] = "Pole wprowadzania (Zmienna)";
+ Text[ japanese ] = "“ü—Į́°ÙÄÞ (•Ï”)";
+ Text[ chinese_traditional ] = "¿é¤JÄæ¦ì(ÅܼÆ)";
+ Text[ arabic ] = "ÍÞá ÅÏÎÇá (ãÊÛíÑÉ)";
+ Text[ greek ] = "Ðåäßï åéóáãùãÞò (ÌåôáâëçôÞ)";
+ Text[ korean ] = "ÇÊµå »ðÀÔ(º¯¼ö)";
+ Text[ turkish ] = "Giriþ alaný (deðiþken)";
+ Text[ language_user1 ] = " ";
+};
+String STR_USRINPUTFLD
+{
+ TEXT = "Eingabefeld (Benutzer)" ;
+ TEXT [ English ] = "Input field (User)" ;
+ Text [ dutch ] = "Invoerveld (gebruiker)" ;
+ Text [ english_us ] = "Input field (user)" ;
+ Text [ italian ] = "Campo di digitazione (utente)" ;
+ Text [ spanish ] = "Campo de entrada (Usuario)" ;
+ Text [ french ] = "Champ de saisie (utilisateur)" ;
+ Text [ swedish ] = "Inmatningsfält (användare)" ;
+ Text [ danish ] = "Inputfelt (bruger)" ;
+ Text [ portuguese ] = "Campo de entrada (utilizador)" ;
+ Text [ portuguese_brazilian ] = "Eingabefeld (Benutzer)" ;
+ Text[ chinese_simplified ] = "ÊäÈëÀ¸(ʹÓÃÕß)";
+ Text[ russian ] = "Ïîëå ââîäà (ïîëüçîâàòåëü)";
+ Text[ polish ] = "Pole wprowadzania (U¿ytkownik)";
+ Text[ japanese ] = "“ü—Į́°ÙÄÞ (Õ°»Þ°)";
+ Text[ chinese_traditional ] = "¿é¤JÄæ¦ì(¨Ï¥ÎªÌ)";
+ Text[ arabic ] = "ÍÞá ÅÏÎÇá (ÇáãÓÊÎÏã)";
+ Text[ greek ] = "Ðåäßï åéóáãùãÞò (×ñÞóôçò)";
+ Text[ korean ] = "Çʵå ÀÔ·Â (»ç¿ëÀÚ)";
+ Text[ turkish ] = "Giriþ alaný (Kullanýcý)";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONDTXTFLD
+{
+ TEXT = "Bedingter Text" ;
+ TEXT [ English ] = "Conditional text" ;
+ TEXT [ norwegian ] = "Conditional text" ;
+ TEXT [ italian ] = "Testo condizionale" ;
+ TEXT [ portuguese_brazilian ] = "Texto condicional" ;
+ TEXT [ portuguese ] = "Texto condicional" ;
+ TEXT [ finnish ] = "Ehdollinen teksti" ;
+ TEXT [ danish ] = "Betinget tekst" ;
+ TEXT [ french ] = "Texte conditionnel" ;
+ TEXT [ swedish ] = "Villkorlig text" ;
+ TEXT [ dutch ] = "Conditionele tekst" ;
+ TEXT [ spanish ] = "Texto condicionado" ;
+ TEXT [ english_us ] = "Conditional text" ;
+ TEXT[ chinese_simplified ] = "ÓÐÌõ¼þµÄÎÄ×Ö";
+ TEXT[ russian ] = "Óñëîâíûé òåêñò";
+ TEXT[ polish ] = "Tekst warunkowy";
+ TEXT[ japanese ] = "ðŒ•t‚«•¶Žš—ñ";
+ TEXT[ chinese_traditional ] = "¦³±ø¥óªº¤å¦r";
+ TEXT[ arabic ] = "äÕ ãÔÑæØ";
+ TEXT[ greek ] = "Êåßìåíï õðü óõíèÞêåò";
+ TEXT[ korean ] = "Á¶°ÇÀû ÅؽºÆ®";
+ TEXT[ turkish ] = "Koþullu metin";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DDEFLD
+{
+ TEXT = "DDE-Feld" ;
+ TEXT [ English ] = "DDE link" ;
+ TEXT [ norwegian ] = "DDE link" ;
+ TEXT [ italian ] = "Campo DDE" ;
+ TEXT [ portuguese_brazilian ] = "Ligação do DDE" ;
+ TEXT [ portuguese ] = "Campo DDE" ;
+ TEXT [ finnish ] = "DDE-linkki" ;
+ TEXT [ danish ] = "DDE-felt" ;
+ TEXT [ french ] = "Champ DDE" ;
+ TEXT [ swedish ] = "DDE-fält" ;
+ TEXT [ dutch ] = "DDE-koppeling" ;
+ TEXT [ spanish ] = "Campo DDE" ;
+ TEXT [ english_us ] = "DDE field" ;
+ TEXT[ chinese_simplified ] = "DDE-ÇøÓò";
+ TEXT[ russian ] = "Ïîëå DDE";
+ TEXT[ polish ] = "Pole DDE";
+ TEXT[ japanese ] = "DDĘ°ÙÄÞ";
+ TEXT[ chinese_traditional ] = "DDE-°Ï°ì";
+ TEXT[ arabic ] = "ÍÞá DDE";
+ TEXT[ greek ] = "Ðåäßï DDE";
+ TEXT[ korean ] = "DDE Çʵå";
+ TEXT[ turkish ] = "DDE alaný";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_MACROFLD
+{
+ TEXT = "Makro ausführen" ;
+ TEXT [ English ] = "Execute macro" ;
+ TEXT [ norwegian ] = "Execute macro" ;
+ TEXT [ italian ] = "Esegui macro" ;
+ TEXT [ portuguese_brazilian ] = "Executar macro" ;
+ TEXT [ portuguese ] = "Executar macro" ;
+ TEXT [ finnish ] = "Suorita makro" ;
+ TEXT [ danish ] = "Udfør makro" ;
+ TEXT [ french ] = "Exécuter la macro" ;
+ TEXT [ swedish ] = "Utför makro" ;
+ TEXT [ dutch ] = "Macro uitvoeren" ;
+ TEXT [ spanish ] = "Ejecutar macro" ;
+ TEXT [ english_us ] = "Execute macro" ;
+ TEXT[ chinese_simplified ] = "Ö´Ðкê";
+ TEXT[ russian ] = "Âûïîëíèòü ìàêðîñ";
+ TEXT[ polish ] = "Wykonaj makro";
+ TEXT[ japanese ] = "ϸۂ̎Às";
+ TEXT[ chinese_traditional ] = "°õ¦æ¥¨¶°";
+ TEXT[ arabic ] = "ÊäÝíÐ ãÇßÑæ";
+ TEXT[ greek ] = "ÅêôÝëåóç ìáêñïåíôïëÞò";
+ TEXT[ korean ] = "¸ÅÅ©·Î ½ÇÇà";
+ TEXT[ turkish ] = "Makroyu çalýþtýr";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_SEQFLD
+{
+ TEXT = "Nummernkreis" ;
+ TEXT [ English ] = "Sequence" ;
+ TEXT [ norwegian ] = "Sequence" ;
+ TEXT [ italian ] = "Sequenza" ;
+ TEXT [ portuguese_brazilian ] = "Sequência" ;
+ TEXT [ portuguese ] = "Sequência" ;
+ TEXT [ finnish ] = "Sarjanumero" ;
+ TEXT [ danish ] = "Sekvensnummererering" ;
+ TEXT [ french ] = "Séquence" ;
+ TEXT [ swedish ] = "Nummersekvens" ;
+ TEXT [ dutch ] = "Nummerreeks" ;
+ TEXT [ spanish ] = "Secuencia" ;
+ TEXT [ english_us ] = "Number range" ;
+ TEXT[ chinese_simplified ] = "±àºÅ˳Ðò";
+ TEXT[ russian ] = "Ïîðÿäêîâûé íîìåð";
+ TEXT[ polish ] = "Sekwencja";
+ TEXT[ japanese ] = "˜A”Ô";
+ TEXT[ chinese_traditional ] = "½s¸¹¶¶§Ç";
+ TEXT[ arabic ] = "ÊÑÞíã ãÊÓáÓá";
+ TEXT[ greek ] = "Êýêëïò áñéèìþí";
+ TEXT[ korean ] = "¼ýÀÚ ¹üÀ§";
+ TEXT[ turkish ] = "Numara aralýðý";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_SETREFPAGEFLD
+{
+ TEXT = "Seitenvariable setzen" ;
+ TEXT [ English ] = "Set pagevariable" ;
+ Text [ english_us ] = "Set page variable" ;
+ Text [ italian ] = "Imposta variabile di pagina" ;
+ Text [ spanish ] = "Determinar variable de página" ;
+ Text [ french ] = "Variable de la page" ;
+ Text [ dutch ] = "Paginavariabele definiëren" ;
+ Text [ swedish ] = "Sätt sidvariabler" ;
+ Text [ danish ] = "Definer sidevariabel" ;
+ Text [ portuguese ] = "Definir variável de página" ;
+ Text [ portuguese_brazilian ] = "Seitenvariable setzen" ;
+ Text[ chinese_simplified ] = "É趨ҳÃæ±äÊý";
+ Text[ russian ] = "Óñòàíîâèòü ïåðåìåííûå ñòðàíèö";
+ Text[ polish ] = "OsadŸ zmienn¹ strony";
+ Text[ japanese ] = "Íß°¼Þ•Ï”‚ÌÝ’è";
+ Text[ chinese_traditional ] = "³]©w­¶­±ÅܼÆ";
+ Text[ arabic ] = "ÊÚííä ãÊÛíÑÉ ÕÝÍÉ";
+ Text[ greek ] = "Êáèïñéóìüò ìåôáâëçôÞò óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö º¯¼ö ¼³Á¤";
+ Text[ turkish ] = "Sayfa deðiþkeni tanýmla";
+ Text[ language_user1 ] = " ";
+};
+String STR_GETREFPAGEFLD
+{
+ TEXT = "Seitenvariable anzeigen" ;
+ TEXT [ English ] = "Show pagevariable" ;
+ Text [ dutch ] = "Paginavariabele weergeven" ;
+ Text [ english_us ] = "Show page variable" ;
+ Text [ italian ] = "Mostra variabile di pagina" ;
+ Text [ spanish ] = "Mostrar variable de página" ;
+ Text [ french ] = "Afficher variable de page" ;
+ Text [ swedish ] = "Visa sidvariabler" ;
+ Text [ danish ] = "Vis sidevariabel" ;
+ Text [ portuguese ] = "Mostrar variável de página" ;
+ Text [ portuguese_brazilian ] = "Seitenvariable anzeigen" ;
+ Text[ chinese_simplified ] = "ÏÔʾҳÃæ±äÊý";
+ Text[ russian ] = "Ïîêàçàòü ïåðåìåííûå ñòðàíèöû";
+ Text[ polish ] = "Poka¿ zmienn¹ strony";
+ Text[ japanese ] = "Íß°¼Þ•Ï”‚Ì•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü­¶­±ÅܼÆ";
+ Text[ arabic ] = "ÅÙåÇÑ ãÊÛíÑÉ ÕÝÍÉ";
+ Text[ greek ] = "ÅìöÜíéóç ìåôáâëçôÞò óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö º¯¼ö º¸À̱â";
+ Text[ turkish ] = "Sayfa deðiþkenini görüntüle";
+ Text[ language_user1 ] = " ";
+};
+String STR_INTERNETFLD
+{
+ TEXT = "URL laden" ;
+ TEXT [ English ] = "Load URL" ;
+ Text [ english_us ] = "Load URL" ;
+ Text [ italian ] = "Carica URL" ;
+ Text [ spanish ] = "Cargar URL" ;
+ Text [ french ] = "Charger l'URL" ;
+ Text [ dutch ] = "URL laden" ;
+ Text [ swedish ] = "Ladda URL" ;
+ Text [ danish ] = "Indlæs URL" ;
+ Text [ portuguese ] = "Carregar URL" ;
+ Text [ portuguese_brazilian ] = "URL laden" ;
+ Text[ chinese_simplified ] = "×°ÔØ URL";
+ Text[ russian ] = "Çàïóñê URL";
+ Text[ polish ] = "£aduj URL";
+ Text[ japanese ] = "URL‚Ì“Ç‚Ýž‚Ý";
+ Text[ chinese_traditional ] = "¸Ë¸ü URL";
+ Text[ arabic ] = "ÊÍãíá URL";
+ Text[ greek ] = "Öüñôùóç URL";
+ Text[ korean ] = "URL ·Îµå";
+ Text[ turkish ] = "URL'yi yükle";
+ Text[ language_user1 ] = " ";
+};
+String STR_JUMPEDITFLD
+{
+ TEXT = "Plat~zhalter" ;
+ TEXT [ English ] = "Pla~ce marker" ;
+ Text [ english_us ] = "Placeholder" ;
+ Text [ italian ] = "Segnaposto" ;
+ Text [ spanish ] = "~Comodín" ;
+ Text [ french ] = "~Substituant" ;
+ Text [ dutch ] = "~Plaatsaanwijzer" ;
+ Text [ swedish ] = "Plat~shållare" ;
+ Text [ danish ] = "Pladsholdere" ;
+ Text [ portuguese ] = "Marcador de ~posição" ;
+ Text [ portuguese_brazilian ] = "Plat~zhalter" ;
+ Text[ chinese_simplified ] = "ͨÅä·û";
+ Text[ russian ] = "Ìåòêà-çàïîëíèòåëü";
+ Text[ polish ] = "Znak wype³niacz";
+ Text[ japanese ] = "ܲÙÄÞ¶°ÄÞ";
+ Text[ chinese_traditional ] = "³q°t²Å";
+ Text[ arabic ] = "ÚäÕÑ äÇÆÈ";
+ Text[ greek ] = "Óýìâïëá êñÜôçóçò èÝóçò";
+ Text[ korean ] = "°³Ã¼Æ²";
+ Text[ turkish ] = "Genel arama karakteri";
+ Text[ language_user1 ] = " ";
+};
+ //
+ // Bereich Referenzen
+ //
+String STR_SETREFFLD
+{
+ TEXT = "Referenz setzen" ;
+ TEXT [ English ] = "Set reference" ;
+ TEXT [ norwegian ] = "Set reference" ;
+ TEXT [ italian ] = "Imposta riferimento" ;
+ TEXT [ portuguese_brazilian ] = "Definir referência" ;
+ TEXT [ portuguese ] = "Definir referência" ;
+ TEXT [ finnish ] = "Määritä viittaus" ;
+ TEXT [ danish ] = "Definer reference" ;
+ TEXT [ french ] = "Définir une référence" ;
+ TEXT [ swedish ] = "Sätt referens" ;
+ TEXT [ dutch ] = "Verwijzing definiëren" ;
+ TEXT [ spanish ] = "Establecer referencia" ;
+ TEXT [ english_us ] = "Set Reference" ;
+ TEXT[ chinese_simplified ] = "É趨ÒýÓÃ";
+ TEXT[ russian ] = "Óñòàíîâèòü ññûëêó";
+ TEXT[ polish ] = "Okreœl odwo³anie";
+ TEXT[ japanese ] = "ŽQÆÝ’è";
+ TEXT[ chinese_traditional ] = "³]©w°Ñ·Ó";
+ TEXT[ arabic ] = "ÊÚííä ãÑÌÚ";
+ TEXT[ greek ] = "Ïñéóìüò áíáöïñÜò";
+ TEXT[ korean ] = "ÂüÁ¶ ¼³Á¤";
+ TEXT[ turkish ] = "Referans tanýmla";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_GETREFFLD
+{
+ TEXT = "Referenz einfügen" ;
+ TEXT [ English ] = "Insert reference" ;
+ TEXT [ norwegian ] = "Insert reference" ;
+ TEXT [ italian ] = "Inserisci riferimento" ;
+ TEXT [ portuguese_brazilian ] = "Inserir referência" ;
+ TEXT [ portuguese ] = "Inserir referência" ;
+ TEXT [ finnish ] = "Lisää viittaus" ;
+ TEXT [ danish ] = "Indsæt reference" ;
+ TEXT [ french ] = "Insérer une référence" ;
+ TEXT [ swedish ] = "Infoga referens" ;
+ TEXT [ dutch ] = "Verwijzing invoegen" ;
+ TEXT [ spanish ] = "Insertar referencia" ;
+ TEXT [ english_us ] = "Insert Reference" ;
+ TEXT[ chinese_simplified ] = "²åÈëÒýÓÃ";
+ TEXT[ russian ] = "Âñòàâèòü ññûëêó";
+ TEXT[ polish ] = "Wstaw odwo³anie";
+ TEXT[ japanese ] = "ŽQÆ‚Ì‘}“ü";
+ TEXT[ chinese_traditional ] = "´¡¤J°Ñ·Ó";
+ TEXT[ arabic ] = "ÅÏÑÇÌ ãÑÌÚ";
+ TEXT[ greek ] = "ÅéóáãùãÞ áíáöïñÜò";
+ TEXT[ korean ] = "ÂüÁ¶ »ðÀÔ";
+ TEXT[ turkish ] = "Referans ekle";
+ TEXT[ language_user1 ] = " ";
+};
+ //
+ // Bereich Datenbank
+ //
+String STR_DBFLD
+{
+ TEXT = "Serienbrieffeld" ;
+ TEXT [ English ] = "Print merge field" ;
+ TEXT [ norwegian ] = "Print merge field" ;
+ TEXT [ italian ] = "Campo stampa in serie" ;
+ TEXT [ portuguese_brazilian ] = "Imprimir campo intercalado" ;
+ TEXT [ portuguese ] = "Campo para cartas em série" ;
+ TEXT [ finnish ] = "Yhdistelykenttä" ;
+ TEXT [ danish ] = "Brevfletningsfelt" ;
+ TEXT [ french ] = "Champ de mailing" ;
+ TEXT [ swedish ] = "Fält för kopplad utskrift" ;
+ TEXT [ dutch ] = "Standaardbriefveld" ;
+ TEXT [ spanish ] = "Campo de carta en serie" ;
+ TEXT [ english_us ] = "Form letter field" ;
+ TEXT[ chinese_simplified ] = "ÓʼþºÏ²¢×Ö¶Î";
+ TEXT[ russian ] = "Ïîëå ñëèÿíèÿ";
+ TEXT[ polish ] = "Pole koresp. seryj.";
+ TEXT[ japanese ] = "·‚µž‚݈óų̈°ÙÄÞ";
+ TEXT[ chinese_traditional ] = "¦X¨Ö¦C¦LÄæ¦ì";
+ TEXT[ arabic ] = "ÍÞá ÎØÇÈ ãÓáÓá";
+ TEXT[ greek ] = "Ðåäßï ïìáäéêÞò åðéóôïëÞò";
+ TEXT[ korean ] = "ÆíÁö Çʵå·Î ºÎÅÍ";
+ TEXT[ turkish ] = "Standart mektup";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DBNEXTSETFLD
+{
+ TEXT = "Nächster Datensatz" ;
+ TEXT [ English ] = "Next Set" ;
+ TEXT [ norwegian ] = "Next Set" ;
+ TEXT [ italian ] = "Record dati successivo" ;
+ TEXT [ portuguese_brazilian ] = "Definir próximo" ;
+ TEXT [ portuguese ] = "Registo seguinte" ;
+ TEXT [ finnish ] = "Seuraava joukko" ;
+ TEXT [ danish ] = "Næste datapost" ;
+ TEXT [ french ] = "Enregistrement suivant" ;
+ TEXT [ swedish ] = "Nästa datapost" ;
+ TEXT [ dutch ] = "Volgende record" ;
+ TEXT [ spanish ] = "Registro siguiente" ;
+ TEXT [ english_us ] = "Next record" ;
+ TEXT[ chinese_simplified ] = "ÏÂÒ»¸öÊý¾ÝÌõÄ¿";
+ TEXT[ russian ] = "Ñëåäóþùàÿ çàïèñü";
+ TEXT[ polish ] = "Nastêpny rekord";
+ TEXT[ japanese ] = "ŽŸ‚ÌÚº°ÄÞ";
+ TEXT[ chinese_traditional ] = "¤U¤@­Ó¸ê®Æ¶µ¥Ø";
+ TEXT[ arabic ] = "ÇáÓÌá ÇáÊÇáí";
+ TEXT[ greek ] = "Åðüìåíç åããñáöÞ";
+ TEXT[ korean ] = "´ÙÀ½ ·¹ÄÚµå";
+ TEXT[ turkish ] = "Sonraki veri kümesi";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DBNUMSETFLD
+{
+ TEXT = "Beliebiger Datensatz" ;
+ TEXT [ English ] = "Random Set" ;
+ TEXT [ norwegian ] = "Random Set" ;
+ TEXT [ italian ] = "Qualsiasi record di dati" ;
+ TEXT [ portuguese_brazilian ] = "Definir aleatoriamente" ;
+ TEXT [ portuguese ] = "Registo aleatório" ;
+ TEXT [ finnish ] = "Satunnainen joukko" ;
+ TEXT [ danish ] = "Vilkårlig datapost" ;
+ TEXT [ french ] = "Enregistrement aléatoire" ;
+ TEXT [ swedish ] = "Slumpvis datapost" ;
+ TEXT [ dutch ] = "Willekeurige record" ;
+ TEXT [ spanish ] = "Cualquier registro" ;
+ TEXT [ english_us ] = "Any record" ;
+ TEXT[ chinese_simplified ] = "ÈκÎÒ»¸öÊý¾ÝÌõÄ¿";
+ TEXT[ russian ] = "Ëþáàÿ çàïèñü";
+ TEXT[ polish ] = "Dowolny rekord";
+ TEXT[ japanese ] = "”CˆÓ‚ÌÚº°ÄÞ";
+ TEXT[ chinese_traditional ] = "¥ô¦ó¤@­Ó¸ê®Æ¶µ¥Ø";
+ TEXT[ arabic ] = "Ãí ÓÌá";
+ TEXT[ greek ] = "ÏðïéáäÞðïôå åããñáöÞ";
+ TEXT[ korean ] = "ÀÓÀÇÀÇ ·¹ÄÚµå";
+ TEXT[ turkish ] = "Herhangi bir veri kümesi";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DBSETNUMBERFLD
+{
+ TEXT = "Datensatznummer" ;
+ TEXT [ English ] = "Setnumber" ;
+ TEXT [ norwegian ] = "Setnumber" ;
+ TEXT [ italian ] = "Numero record dati" ;
+ TEXT [ portuguese_brazilian ] = "Definir número" ;
+ TEXT [ portuguese ] = "Número do registo" ;
+ TEXT [ finnish ] = "Joukon numero" ;
+ TEXT [ danish ] = "Datapostnummer" ;
+ TEXT [ french ] = "Numéro d'enregistrement" ;
+ TEXT [ swedish ] = "Datapostnummer" ;
+ TEXT [ dutch ] = "Record-nummer" ;
+ TEXT [ spanish ] = "Número de registro" ;
+ TEXT [ english_us ] = "Record number" ;
+ TEXT[ chinese_simplified ] = "Êý¾ÝÌõÄ¿ºÅÂë";
+ TEXT[ russian ] = "Íîìåð çàïèñè";
+ TEXT[ polish ] = "Numer rekordu";
+ TEXT[ japanese ] = "Úº°ÄÞ”Ô†";
+ TEXT[ chinese_traditional ] = "¸ê®Æ¶µ¥Ø¸¹½X";
+ TEXT[ arabic ] = "ÑÞã ÇáÓÌá";
+ TEXT[ greek ] = "Áñéèìüò åããñáöÞò";
+ TEXT[ korean ] = "·¹ÄÚµå ¹øÈ£";
+ TEXT[ turkish ] = "Veri kümesi numarasý";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_PREVPAGEFLD
+{
+ TEXT = "Vorherige Seite" ;
+ TEXT [ English ] = "Prev Page" ;
+ TEXT [ norwegian ] = "Prev Page" ;
+ TEXT [ italian ] = "Pagina precedente" ;
+ TEXT [ portuguese_brazilian ] = "Examinar Página" ;
+ TEXT [ portuguese ] = "Página anterior" ;
+ TEXT [ finnish ] = "Edellinen sivu" ;
+ TEXT [ danish ] = "Forrige side" ;
+ TEXT [ french ] = "Page précédente" ;
+ TEXT [ swedish ] = "Föregående sida" ;
+ TEXT [ dutch ] = "Vorige pagina" ;
+ TEXT [ spanish ] = "Página anterior" ;
+ TEXT [ english_us ] = "Previous page" ;
+ TEXT[ chinese_simplified ] = "ÉÏÒ»Ò³";
+ TEXT[ russian ] = "Ïðåäûäóùàÿ ñòðàíèöà";
+ TEXT[ polish ] = "Poprzednia strona";
+ TEXT[ japanese ] = "‘O‚ÌÍß°¼Þ";
+ TEXT[ chinese_traditional ] = "¤W¤@­¶";
+ TEXT[ arabic ] = "ÇáÕÝÍÉ ÇáÓÇÈÞÉ";
+ TEXT[ greek ] = "Ðñïçãïýìåíç óåëßäá";
+ TEXT[ korean ] = "ÀÌÀü ÆäÀÌÁö";
+ TEXT[ turkish ] = "Önceki sayfa";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_NEXTPAGEFLD
+{
+ 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 ] = "Seuraava sivu" ;
+ TEXT [ danish ] = "Næste side" ;
+ TEXT [ french ] = "Page suivante" ;
+ TEXT [ swedish ] = "Nästa sida" ;
+ TEXT [ dutch ] = "Volgende pagina" ;
+ TEXT [ spanish ] = "Página siguiente" ;
+ TEXT [ english_us ] = "Next page" ;
+ TEXT[ chinese_simplified ] = "ÏÂÒ»Ò³";
+ TEXT[ russian ] = "Ñëåäóþùàÿ ñòðàíèöà";
+ TEXT[ polish ] = "Nastêpna strona";
+ TEXT[ japanese ] = "ŽŸ‚ÌÍß°¼Þ";
+ TEXT[ chinese_traditional ] = "¤U¤@­¶";
+ TEXT[ arabic ] = "ÇáÕÝÍÉ ÇáÊÇáíÉ";
+ TEXT[ greek ] = "Åðüìåíç óåëßäá";
+ TEXT[ korean ] = "´ÙÀ½ ÆäÀÌÁö";
+ TEXT[ turkish ] = "Sonraki sayfa";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_HIDDENTXTFLD
+{
+ TEXT = "Versteckter Text" ;
+ TEXT [ English ] = "Hidden Text" ;
+ TEXT [ norwegian ] = "Hidden Text" ;
+ TEXT [ italian ] = "Testo nascosto" ;
+ TEXT [ portuguese_brazilian ] = "Texto oculto" ;
+ TEXT [ portuguese ] = "Texto oculto" ;
+ TEXT [ finnish ] = "Piiloteksti" ;
+ TEXT [ danish ] = "Skjult tekst" ;
+ TEXT [ french ] = "Texte masqué" ;
+ TEXT [ swedish ] = "Dold text" ;
+ TEXT [ dutch ] = "Verborgen tekst" ;
+ TEXT [ spanish ] = "Texto oculto" ;
+ TEXT [ english_us ] = "Hidden text" ;
+ TEXT[ chinese_simplified ] = "ÒþÈëµÄÎÄ×Ö";
+ TEXT[ russian ] = "Ñêðûòûé òåêñò";
+ TEXT[ polish ] = "Ukryty tekst";
+ TEXT[ japanese ] = "‰B‚µÃ·½Ä";
+ TEXT[ chinese_traditional ] = "Áô¤Jªº¤å¦r";
+ TEXT[ arabic ] = "äÕ ãÎÝí";
+ TEXT[ greek ] = "Êñõöü êåßìåíï";
+ TEXT[ korean ] = "¼û°ÜÁø ÅؽºÆ®";
+ TEXT[ turkish ] = "Gizli";
+ TEXT[ language_user1 ] = " ";
+};
+ //
+ // Bereich Benutzerfelder
+ //
+String STR_USERFLD
+{
+ TEXT = "Benutzerfeld" ;
+ TEXT [ English ] = "User field" ;
+ TEXT [ norwegian ] = "User field" ;
+ TEXT [ italian ] = "Campo utente" ;
+ TEXT [ portuguese_brazilian ] = "Campo do usuário" ;
+ TEXT [ portuguese ] = "Campo do utilizador" ;
+ TEXT [ finnish ] = "Käyttäjän kenttä" ;
+ TEXT [ danish ] = "Brugerdefineret felt" ;
+ TEXT [ french ] = "Champ d'utilisateur" ;
+ TEXT [ swedish ] = "Användarfält" ;
+ TEXT [ dutch ] = "Gebruikersveld" ;
+ TEXT [ spanish ] = "Campo del usuario" ;
+ TEXT [ english_us ] = "User Field" ;
+ TEXT[ chinese_simplified ] = "ʹÓÃÕß×Ö¶Î";
+ TEXT[ russian ] = "Ïîëå ïîëüçîâàòåëÿ";
+ TEXT[ polish ] = "Pole u¿ytkownika";
+ TEXT[ japanese ] = "Õ°»Þ°Ì¨°ÙÄÞ";
+ TEXT[ chinese_traditional ] = "¨Ï¥ÎªÌÄæ¦ì";
+ TEXT[ arabic ] = "ÍÞá ÇáãÓÊÎÏã";
+ TEXT[ greek ] = "Ðåäßï ÷ñÞóôç";
+ TEXT[ korean ] = "»ç¿ëÀÚ Çʵå";
+ TEXT[ turkish ] = "Kullanýcý alaný";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_POSTITFLD
+{
+ TEXT = "Notiz" ;
+ TEXT [ English ] = "Note" ;
+ TEXT [ norwegian ] = "Merknad" ;
+ TEXT [ italian ] = "Nota" ;
+ TEXT [ portuguese_brazilian ] = "Observação" ;
+ TEXT [ portuguese ] = "Anotação" ;
+ TEXT [ finnish ] = "Huomautus" ;
+ TEXT [ danish ] = "Note" ;
+ TEXT [ french ] = "Note" ;
+ TEXT [ swedish ] = "Anteckning" ;
+ TEXT [ dutch ] = "Aantekening" ;
+ TEXT [ spanish ] = "Nota" ;
+ TEXT [ english_us ] = "Note" ;
+ TEXT[ chinese_simplified ] = "±¸×¢";
+ TEXT[ russian ] = "Ïðèìå÷àíèå";
+ TEXT[ polish ] = "Notatka";
+ TEXT[ japanese ] = "ÒÓ";
+ TEXT[ chinese_traditional ] = "³Æª`";
+ TEXT[ arabic ] = "ãáÇÍÙÉ";
+ TEXT[ greek ] = "Óçìåßùóç";
+ TEXT[ korean ] = "¸Þ¸ð";
+ TEXT[ turkish ] = "Not";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_SCRIPTFLD
+{
+ TEXT = "Script" ;
+ TEXT [ English ] = "Script" ;
+ Text [ dutch ] = "Script" ;
+ Text [ english_us ] = "Script" ;
+ Text [ italian ] = "Script" ;
+ Text [ spanish ] = "Script" ;
+ Text [ french ] = "Script" ;
+ Text [ swedish ] = "Skript" ;
+ Text [ danish ] = "Script" ;
+ Text [ portuguese ] = "Script" ;
+ Text [ portuguese_brazilian ] = "Script" ;
+ Text[ chinese_simplified ] = "½Å±¾";
+ Text[ russian ] = "Ñêðèïò";
+ Text[ polish ] = "Script";
+ Text[ japanese ] = "½¸ØÌßÄ";
+ Text[ chinese_traditional ] = "©R¥O½Z";
+ Text[ arabic ] = "Script";
+ Text[ greek ] = "Script";
+ Text[ korean ] = "½ºÅ©¸³Æ®";
+ Text[ turkish ] = "Script";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTHORITY
+{
+ TEXT = "Eintrag Literaturverzeichnis" ;
+ TEXT [ English ] = "Authority entry" ;
+ TEXT[ english_us ] = "Bibliography entry";
+ TEXT[ portuguese ] = "Entrada bibliográfica";
+ TEXT[ russian ] = "Ýëåìåíò ñïèñêà ëèòåðàòóðû";
+ TEXT[ greek ] = "ÅããñáöÞ âéâëéïãñáößáò";
+ TEXT[ dutch ] = "Item voor literatuurlijst";
+ TEXT[ french ] = "Entrée de bibliographie";
+ TEXT[ spanish ] = "Entrada bibliografía";
+ TEXT[ italian ] = "Voce bibliografia";
+ TEXT[ danish ] = "Element litteraturliste";
+ TEXT[ swedish ] = "Post litteraturförteckning";
+ TEXT[ polish ] = "Wpis bibliograficzny";
+ TEXT[ portuguese_brazilian ] = "Authority entry";
+ TEXT[ japanese ] = "ŽQl•¶Œ£€–Ú";
+ TEXT[ korean ] = "Âü°í¹®Çå Ç׸ñ";
+ TEXT[ chinese_simplified ] = "ÎÄÏ×Ŀ¼ÌõÄ¿";
+ TEXT[ chinese_traditional ] = "±ø¥Ø °Ñ¦Ò¤åÄm¥Ø¿ý";
+ TEXT[ arabic ] = "ÅÏÎÇá Ýí ÝåÑÓ ÇáãÑÇÌÚ";
+ TEXT[ turkish ] = "Kaynakça giriþi";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_HIDDENPARAFLD
+{
+ TEXT = "Versteckter Absatz" ;
+ TEXT [ English ] = "Hidden paragraph" ;
+ TEXT [ norwegian ] = "Hidden paragraph" ;
+ TEXT [ italian ] = "Paragrafo vuoto" ;
+ TEXT [ portuguese_brazilian ] = "Parágrafo vazio" ;
+ TEXT [ portuguese ] = "Parágrafo oculto" ;
+ TEXT [ finnish ] = "Tyhjä kappale" ;
+ TEXT [ danish ] = "Skjult afsnit" ;
+ TEXT [ french ] = "Paragraphe masqué" ;
+ TEXT [ swedish ] = "Dolt stycke" ;
+ TEXT [ dutch ] = "Verborgen alinea" ;
+ TEXT [ spanish ] = "Párrafo oculto" ;
+ TEXT [ english_us ] = "Hidden Paragraph" ;
+ TEXT[ chinese_simplified ] = "ÒþÈëµÄ¶ÎÂä";
+ TEXT[ russian ] = "Ñêðûòûé àáçàö";
+ TEXT[ polish ] = "Ukryty akapit";
+ TEXT[ japanese ] = "‰B‚µ’i—Ž";
+ TEXT[ chinese_traditional ] = "Áô¤Jªº¬q¸¨";
+ TEXT[ arabic ] = "ÝÞÑÉ ãÎÝíÉ";
+ TEXT[ greek ] = "ÊñõöÞ ðáñÜãñáöïò";
+ TEXT[ korean ] = "¼û°ÜÁø ´Ü¶ô";
+ TEXT[ turkish ] = "Gizli paragraf";
+ TEXT[ language_user1 ] = " ";
+};
+ //
+ // Bereich DokumentInfo
+ //
+String STR_DOCINFOFLD
+{
+ TEXT = "Dokumentinfo" ;
+ TEXT [ English ] = "Document info" ;
+ TEXT [ norwegian ] = "Document info" ;
+ TEXT [ italian ] = "Info documento" ;
+ TEXT [ portuguese_brazilian ] = "Informações sobre o documento" ;
+ TEXT [ portuguese ] = "Info. sobre documento" ;
+ TEXT [ finnish ] = "Asiakirjan tiedot" ;
+ TEXT [ danish ] = "Dokumentinfo" ;
+ TEXT [ french ] = "Info document" ;
+ TEXT [ swedish ] = "Dokumentinformation" ;
+ TEXT [ dutch ] = "Documentinfo" ;
+ TEXT [ spanish ] = "Información del documento" ;
+ TEXT [ english_us ] = "DocInformation" ;
+ TEXT[ chinese_simplified ] = "ÎĵµÐÅÏ¢";
+ TEXT[ russian ] = "Ñâåäåíèÿ î äîêóìåíòå";
+ TEXT[ polish ] = "Informacje o dokumencie";
+ TEXT[ japanese ] = "ÄÞ·­ÒÝIJÝÌ«Ò°¼®Ý";
+ TEXT[ chinese_traditional ] = "¤å¥ó¸ê°T";
+ TEXT[ arabic ] = "ãÚáæãÇÊ ÇáãÓÊäÏ";
+ TEXT[ greek ] = "Ðëçñïöïñßåò åããñÜöïõ";
+ TEXT[ korean ] = "¹®¼­ Á¤º¸";
+ TEXT[ turkish ] = "Belge bilgileri";
+ TEXT[ language_user1 ] = " ";
+};
+/*--------------------------------------------------------------------
+ Beschreibung: SubCmd-Strings
+ --------------------------------------------------------------------*/
+String FLD_DATE_STD
+{
+ 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 ] = "Data (var.)";
+ TEXT[ japanese ] = "“ú•t";
+ TEXT[ chinese_simplified ] = "ÈÕÆÚ";
+ TEXT[ chinese_traditional ] = "¤é´Á";
+ TEXT[ arabic ] = "ÇáÊÇÑíÎ";
+ TEXT[ greek ] = "Çìåñïìçíßá";
+ TEXT[ korean ] = "ÀÏÀÚ";
+ TEXT[ turkish ] = "Tarih";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_DATE_FIX
+{
+ TEXT = "Datum (fix)" ;
+ TEXT [ English ] = "Date (fix)" ;
+ TEXT [ norwegian ] = "Date (fix)" ;
+ TEXT [ italian ] = "Data (fissa)" ;
+ TEXT [ portuguese_brazilian ] = "Data (fix)" ;
+ TEXT [ portuguese ] = "Data (fixa)" ;
+ TEXT [ finnish ] = "Päivä (vakio)" ;
+ TEXT [ danish ] = "Dato (fast)" ;
+ TEXT [ french ] = "Date (fixe)" ;
+ TEXT [ swedish ] = "Datum (fast)" ;
+ TEXT [ dutch ] = "Datum (vast)" ;
+ TEXT [ spanish ] = "Fecha (fija)" ;
+ TEXT [ english_us ] = "Date (fixed)" ;
+ TEXT[ chinese_simplified ] = "ÈÕÆÚ(¹Ì¶¨)";
+ TEXT[ russian ] = "Äàòà (ôèêñ.)";
+ TEXT[ polish ] = "Data (sta³a)";
+ TEXT[ japanese ] = "“ú•t(ŒÅ’è)";
+ TEXT[ chinese_traditional ] = "¤é´Á(©T©w)";
+ TEXT[ arabic ] = "ÊÇÑíÎ (ËÇÈÊ)";
+ TEXT[ greek ] = "Çìåñïìçíßá (ÓôáèåñÜ)";
+ TEXT[ korean ] = "ÀÏÀÚ (°íÁ¤µÊ)";
+ TEXT[ turkish ] = "Tarih (sabit)";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_TIME_STD
+{
+ TEXT = "Uhrzeit" ;
+ TEXT [ English ] = "Time" ;
+ TEXT[ english_us ] = "Time";
+ TEXT[ portuguese ] = "Hora";
+ TEXT[ russian ] = "Âðåìÿ";
+ TEXT[ dutch ] = "Tijd";
+ TEXT[ french ] = "Heure";
+ TEXT[ spanish ] = "Hora";
+ TEXT[ italian ] = "Orario";
+ TEXT[ danish ] = "Klokkeslæt";
+ TEXT[ swedish ] = "Klockslag";
+ TEXT[ polish ] = "Godzina";
+ TEXT[ portuguese_brazilian ] = "Hora (var.)";
+ TEXT[ japanese ] = "Žž";
+ TEXT[ chinese_simplified ] = "ʱ¼ä";
+ TEXT[ chinese_traditional ] = "®É¶¡";
+ TEXT[ arabic ] = "ÇáæÞÊ";
+ TEXT[ greek ] = "¿ñá";
+ TEXT[ korean ] = "½Ã°£";
+ TEXT[ turkish ] = "Saat";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_TIME_FIX
+{
+ TEXT = "Uhrzeit (fix)" ;
+ TEXT [ English ] = "Time (fix)" ;
+ TEXT [ norwegian ] = "Time (fix)" ;
+ TEXT [ italian ] = "Orario (fisso)" ;
+ TEXT [ portuguese_brazilian ] = "Hora (fix)" ;
+ TEXT [ portuguese ] = "Hora (fixa)" ;
+ TEXT [ finnish ] = "Aika (vakio)" ;
+ TEXT [ danish ] = "Klokkeslæt (fast)" ;
+ TEXT [ french ] = "Heure (fixe)" ;
+ TEXT [ swedish ] = "Klockslag (fast)" ;
+ TEXT [ dutch ] = "Tijd (vast)" ;
+ TEXT [ spanish ] = "Hora (fija)" ;
+ TEXT [ english_us ] = "Time (fixed)" ;
+ TEXT[ chinese_simplified ] = "ʱ¼ä(¹Ì¶¨)";
+ TEXT[ russian ] = "Âðåìÿ (ôèêñ.)";
+ TEXT[ polish ] = "Godzina (sta³a)";
+ TEXT[ japanese ] = "Žž(ŒÅ’è)";
+ TEXT[ chinese_traditional ] = "®É¶¡(©T©w)";
+ TEXT[ arabic ] = "ÇáæÞÊ (ËÇÈÊ)";
+ TEXT[ greek ] = "¿ñá (óôáèåñÜ)";
+ TEXT[ korean ] = "½Ã°£ (°íÁ¤µÊ)";
+ TEXT[ turkish ] = "Saat (sabit)";
+ TEXT[ language_user1 ] = " ";
+};
+ //
+ // SubCmd Statistik
+ //
+String FLD_STAT_TABLE
+{
+ TEXT = "Tabellen" ;
+ TEXT [ English ] = "Tables" ;
+ TEXT [ norwegian ] = "Tables" ;
+ TEXT [ italian ] = "Tabella" ;
+ TEXT [ portuguese_brazilian ] = "Tabelas" ;
+ TEXT [ portuguese ] = "Tabelas" ;
+ TEXT [ finnish ] = "Taulukot" ;
+ TEXT [ danish ] = "Tabeller" ;
+ TEXT [ french ] = "Tableaux" ;
+ TEXT [ swedish ] = "Tabeller" ;
+ TEXT [ dutch ] = "Tabellen" ;
+ TEXT [ spanish ] = "Tablas" ;
+ TEXT [ english_us ] = "Tables" ;
+ TEXT[ chinese_simplified ] = "±í¸ñ";
+ TEXT[ russian ] = "Òàáëèöû";
+ TEXT[ polish ] = "Tabele";
+ TEXT[ japanese ] = "•\\";
+ TEXT[ chinese_traditional ] = "ªí®æ";
+ TEXT[ arabic ] = "ÌÏÇæá";
+ TEXT[ greek ] = "Ðßíáêåò";
+ TEXT[ korean ] = "Ç¥";
+ TEXT[ turkish ] = "Tablo";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_STAT_CHAR
+{
+ TEXT = "Zeichen" ;
+ TEXT [ English ] = "Characters" ;
+ TEXT [ norwegian ] = "Characters" ;
+ TEXT [ italian ] = "Carattere" ;
+ TEXT [ portuguese_brazilian ] = "Caracteres" ;
+ TEXT [ portuguese ] = "Caracteres" ;
+ TEXT [ finnish ] = "Merkit" ;
+ TEXT [ danish ] = "Tegn" ;
+ TEXT [ french ] = "Caractères" ;
+ TEXT [ swedish ] = "Tecken" ;
+ TEXT [ dutch ] = "Teken" ;
+ TEXT [ spanish ] = "Caracteres" ;
+ TEXT [ english_us ] = "Characters" ;
+ TEXT[ chinese_simplified ] = "×Ö·û";
+ TEXT[ russian ] = "Çíàêè";
+ TEXT[ polish ] = "Znaki";
+ TEXT[ japanese ] = "•¶Žš";
+ TEXT[ language_user1 ] = " ";
+ TEXT[ chinese_traditional ] = "¦r¤¸";
+ TEXT[ arabic ] = "ÃÍÑÝ";
+ TEXT[ greek ] = "×áñáêôÞñåò";
+ TEXT[ korean ] = "¹®ÀÚ";
+ TEXT[ turkish ] = "Karakter";
+};
+String FLD_STAT_WORD
+{
+ TEXT = "Wörter" ;
+ TEXT [ English ] = "Words" ;
+ TEXT [ norwegian ] = "Words" ;
+ TEXT [ italian ] = "Parole" ;
+ TEXT [ portuguese_brazilian ] = "Palavras" ;
+ TEXT [ portuguese ] = "Palavras" ;
+ TEXT [ finnish ] = "Sanat" ;
+ TEXT [ danish ] = "Ord" ;
+ TEXT [ french ] = "Mots" ;
+ TEXT [ swedish ] = "Ord" ;
+ TEXT [ dutch ] = "Woorden" ;
+ TEXT [ spanish ] = "Palabras" ;
+ TEXT [ english_us ] = "Words" ;
+ TEXT[ chinese_simplified ] = "×Ö";
+ TEXT[ russian ] = "Ñëîâà";
+ TEXT[ polish ] = "S³owa";
+ TEXT[ japanese ] = "Œ¾—t";
+ TEXT[ chinese_traditional ] = "¦r";
+ TEXT[ arabic ] = "ßáãÇÊ";
+ TEXT[ greek ] = "ËÝîåéò";
+ TEXT[ korean ] = "´Ü¾î";
+ TEXT[ turkish ] = "Sözcük";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_STAT_PARA
+{
+ TEXT = "Absätze" ;
+ TEXT [ English ] = "Paragraphs" ;
+ TEXT [ norwegian ] = "Paragraphs" ;
+ TEXT [ italian ] = "Paragrafi" ;
+ TEXT [ portuguese_brazilian ] = "Parágrafos" ;
+ TEXT [ portuguese ] = "Parágrafos" ;
+ TEXT [ finnish ] = "Kappaleet" ;
+ TEXT [ danish ] = "Afsnit" ;
+ TEXT [ french ] = "Paragraphes" ;
+ TEXT [ swedish ] = "Stycken" ;
+ TEXT [ dutch ] = "Alinea's" ;
+ TEXT [ spanish ] = "Párrafos" ;
+ TEXT [ english_us ] = "Paragraphs" ;
+ TEXT[ chinese_simplified ] = "¶ÎÂä";
+ TEXT[ russian ] = "Àáçàöû";
+ TEXT[ polish ] = "Akapity";
+ TEXT[ japanese ] = "’i—Ž";
+ TEXT[ chinese_traditional ] = "¬q¸¨";
+ TEXT[ arabic ] = "ÝÞÑÇÊ";
+ TEXT[ greek ] = "ÐáñÜãñáöïé";
+ TEXT[ korean ] = "´Ü¶ô";
+ TEXT[ turkish ] = "Paragraf";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_STAT_GRF
+{
+ TEXT = "Grafiken" ;
+ TEXT [ English ] = "Graphics" ;
+ TEXT [ norwegian ] = "Grafikker" ;
+ TEXT [ italian ] = "Immagini" ;
+ TEXT [ portuguese_brazilian ] = "Gráficos" ;
+ TEXT [ portuguese ] = "Imagens" ;
+ TEXT [ finnish ] = "Kuvat" ;
+ TEXT [ danish ] = "Grafik" ;
+ TEXT [ french ] = "Images" ;
+ TEXT [ swedish ] = "Grafiker" ;
+ TEXT [ dutch ] = "Afbeeldingen" ;
+ TEXT [ spanish ] = "Imágenes" ;
+ TEXT [ english_us ] = "Graphics" ;
+ TEXT[ chinese_simplified ] = "ͼÐÎ";
+ TEXT[ russian ] = "Ðèñóíêè";
+ TEXT[ polish ] = "Grafiki";
+ TEXT[ japanese ] = "¸Þ×̨¯¸½";
+ TEXT[ chinese_traditional ] = "¹Ï¤ù";
+ TEXT[ arabic ] = "ÕæÑ";
+ TEXT[ greek ] = "ÃñáöéêÜ";
+ TEXT[ korean ] = "±×·¡ÇÈ";
+ TEXT[ turkish ] = "Grafik";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_STAT_OBJ
+{
+ TEXT = "Objekte" ;
+ TEXT [ English ] = "Objects" ;
+ 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[ chinese_simplified ] = "¶ÔÏó";
+ TEXT[ russian ] = "Îáúåêòû";
+ TEXT[ polish ] = "Obiekty";
+ TEXT[ japanese ] = "µÌÞ¼Þª¸Ä";
+ TEXT[ chinese_traditional ] = "ª«¥ó";
+ TEXT[ arabic ] = "ßÇÆäÇÊ";
+ TEXT[ greek ] = "Áíôéêåßìåíá";
+ TEXT[ korean ] = "°³Ã¼";
+ TEXT[ turkish ] = "Nesne";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_STAT_PAGE
+{
+ TEXT = "Seiten" ;
+ TEXT [ English ] = "Pages" ;
+ TEXT [ norwegian ] = "Pages" ;
+ TEXT [ italian ] = "Pagine" ;
+ TEXT [ portuguese_brazilian ] = "Páginas" ;
+ TEXT [ portuguese ] = "Páginas" ;
+ TEXT [ finnish ] = "Sivumäärä" ;
+ 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 ] = "Óåëßäåò";
+ TEXT[ korean ] = "ÆäÀÌÁö";
+ TEXT[ turkish ] = "Sayfa";
+ TEXT[ language_user1 ] = " ";
+};
+ // SubCmd DDETypen
+ //
+String FMT_DDE_HOT
+{
+ TEXT = "DDE automatisch" ;
+ TEXT [ English ] = "DDE automatic" ;
+ TEXT [ norwegian ] = "DDE automatic" ;
+ TEXT [ italian ] = "DDE automatico" ;
+ TEXT [ portuguese_brazilian ] = "DDE autom tico" ;
+ TEXT [ portuguese ] = "DDE automático" ;
+ TEXT [ finnish ] = "DDE automaattinen" ;
+ TEXT [ danish ] = "DDE automatisk" ;
+ TEXT [ french ] = "DDE automatique" ;
+ TEXT [ swedish ] = "DDE-automatisk" ;
+ TEXT [ dutch ] = "DDE automatisch" ;
+ TEXT [ spanish ] = "DDE automático" ;
+ TEXT [ english_us ] = "DDE automatic" ;
+ TEXT[ chinese_simplified ] = "DDE ×Ô¶¯";
+ TEXT[ russian ] = "DDE àâòîìàòè÷åñêè";
+ TEXT[ polish ] = "DDE automatycznie";
+ TEXT[ japanese ] = "DDE Ž©“®";
+ TEXT[ chinese_traditional ] = "DDE ¦Û°Ê";
+ TEXT[ arabic ] = "DDE ÊáÞÇÆí";
+ TEXT[ greek ] = "DDE áõôïìÜôùò";
+ TEXT[ korean ] = "DDE ÀÚµ¿";
+ TEXT[ turkish ] = "Otomatik DDE";
+ TEXT[ language_user1 ] = " ";
+};
+String FMT_DDE_NORMAL
+{
+ TEXT = "DDE manuell" ;
+ TEXT [ English ] = "DDE manual" ;
+ TEXT [ norwegian ] = "DDE håndbok" ;
+ TEXT [ italian ] = "DDE manuale" ;
+ TEXT [ portuguese_brazilian ] = "DDE manual" ;
+ TEXT [ portuguese ] = "DDE manual" ;
+ TEXT [ finnish ] = "DDE manuaalinen" ;
+ TEXT [ danish ] = "DDE manuel" ;
+ TEXT [ french ] = "DDE manuel" ;
+ TEXT [ swedish ] = "DDE manuell" ;
+ TEXT [ dutch ] = "DDE-handmatig" ;
+ TEXT [ spanish ] = "DDE manual" ;
+ TEXT [ english_us ] = "DDE manual" ;
+ TEXT[ chinese_simplified ] = "DDE ÊÖ¹¤";
+ TEXT[ russian ] = "DDE âðó÷íóþ";
+ TEXT[ polish ] = "DDE rêcznie";
+ TEXT[ japanese ] = "DDE Žè“®";
+ TEXT[ chinese_traditional ] = "DDE ¤H¤u";
+ TEXT[ arabic ] = "DDE íÏæí";
+ TEXT[ greek ] = "DDE ÷åéñïêßíçôá";
+ TEXT[ korean ] = "DDE ¼öµ¿";
+ TEXT[ turkish ] = "Manüel DDE";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_INPUT_TEXT
+{
+ TEXT = "[Text]" ;
+};
+/*--------------------------------------------------------------------
+ Beschreibung: SubType Extuser
+ --------------------------------------------------------------------*/
+String FLD_EU_FIRMA
+{
+ TEXT = "Firma" ;
+ TEXT [ English ] = "Company" ;
+ TEXT [ norwegian ] = "Company" ;
+ TEXT [ italian ] = "Azienda" ;
+ TEXT [ portuguese_brazilian ] = "Compania" ;
+ TEXT [ portuguese ] = "Empresa" ;
+ TEXT [ finnish ] = "Yritys" ;
+ TEXT [ danish ] = "Firma" ;
+ TEXT [ french ] = "Société" ;
+ TEXT [ swedish ] = "Företag" ;
+ TEXT [ dutch ] = "Bedrijf" ;
+ TEXT [ spanish ] = "Empresa" ;
+ TEXT [ english_us ] = "Company" ;
+ TEXT[ chinese_simplified ] = "¹«Ë¾";
+ TEXT[ russian ] = "Ôèðìà";
+ TEXT[ polish ] = "Firma";
+ TEXT[ japanese ] = "‰ïŽÐ";
+ TEXT[ chinese_traditional ] = "¤½¥q";
+ TEXT[ arabic ] = "ÇáÔÑßÉ";
+ TEXT[ greek ] = "Åôáéñßá";
+ TEXT[ korean ] = "ȸ»ç";
+ TEXT[ turkish ] = "Þirket";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_EU_VORNAME
+{
+ TEXT = "Vorname" ;
+ TEXT [ English ] = "First Name" ;
+ TEXT [ norwegian ] = "First Name" ;
+ TEXT [ italian ] = "Nome" ;
+ TEXT [ portuguese_brazilian ] = "Primeiro nome" ;
+ TEXT [ portuguese ] = "Nome próprio" ;
+ TEXT [ finnish ] = "Etunimi" ;
+ TEXT [ danish ] = "Fornavn" ;
+ TEXT [ french ] = "Prénom" ;
+ TEXT [ swedish ] = "Förnamn" ;
+ TEXT [ dutch ] = "Voornaam" ;
+ TEXT [ spanish ] = "Nombre" ;
+ TEXT [ english_us ] = "First Name" ;
+ TEXT[ chinese_simplified ] = "Ãû×Ö";
+ TEXT[ russian ] = "Èìÿ";
+ TEXT[ polish ] = "Imiê";
+ TEXT[ japanese ] = "–¼";
+ TEXT[ chinese_traditional ] = "¦W¦r";
+ TEXT[ arabic ] = "ÇáÇÓã";
+ TEXT[ greek ] = "¼íïìá";
+ TEXT[ korean ] = "¼º";
+ TEXT[ turkish ] = "Ad";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_EU_NAME
+{
+ TEXT = "Nachname" ;
+ TEXT [ English ] = "Last Name" ;
+ TEXT [ english_us ] = "Last Name" ;
+ Text [ portuguese ] = "Apelido" ;
+ Text [ portuguese_brazilian ] = "Nomear" ;
+ Text [ swedish ] = "Efternamn" ;
+ Text [ danish ] = "Efternavn" ;
+ Text [ italian ] = "Cognome" ;
+ Text [ spanish ] = "Apellidos" ;
+ Text [ french ] = "Nom" ;
+ Text [ dutch ] = "Achternaam" ;
+ Text[ chinese_simplified ] = "ÐÕÊÏ";
+ Text[ russian ] = "Ôàìèëèÿ";
+ Text[ polish ] = "Nazwisko";
+ Text[ japanese ] = "©";
+ Text[ chinese_traditional ] = "©m¤ó";
+ Text[ arabic ] = "ÇÓã ÇáÚÇÆáÉ";
+ Text[ greek ] = "Åðþíõìï";
+ Text[ korean ] = "À̸§";
+ Text[ turkish ] = "Soyad";
+ Text[ language_user1 ] = " ";
+};
+String FLD_EU_ABK
+{
+ TEXT = "Kürzel" ;
+ TEXT [ English ] = "Short Cut" ;
+ TEXT [ norwegian ] = "Short Cut" ;
+ TEXT [ italian ] = "Iniziali" ;
+ TEXT [ portuguese_brazilian ] = "Atalho" ;
+ TEXT [ portuguese ] = "Iniciais" ;
+ TEXT [ finnish ] = "Pikatoiminto" ;
+ TEXT [ danish ] = "Initialer" ;
+ TEXT [ french ] = "Initiales" ;
+ TEXT [ swedish ] = "Initialer" ;
+ TEXT [ dutch ] = "Initialen" ;
+ TEXT [ spanish ] = "Iniciales" ;
+ TEXT [ english_us ] = "Initials" ;
+ TEXT[ chinese_simplified ] = "Ëõд";
+ TEXT[ russian ] = "Èíèöèàëû";
+ TEXT[ polish ] = "Inicja³y";
+ TEXT[ japanese ] = "²Æ¼¬Ù";
+ TEXT[ chinese_traditional ] = "ÁY¼g";
+ TEXT[ arabic ] = "ÇáÇÎÊÕÇÑ";
+ TEXT[ greek ] = "Áñ÷éêÜ";
+ TEXT[ korean ] = "¸Ó¸®±ÛÀÚ";
+ TEXT[ turkish ] = "Baþharfler";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_EU_STRASSE
+{
+ TEXT = "Straße" ;
+ TEXT [ English ] = "Street" ;
+ TEXT [ norwegian ] = "Street" ;
+ TEXT [ italian ] = "Via" ;
+ TEXT [ portuguese_brazilian ] = "Rua" ;
+ TEXT [ portuguese ] = "Rua" ;
+ TEXT [ finnish ] = "Lähiosoite" ;
+ TEXT [ danish ] = "Gade" ;
+ TEXT [ french ] = "Rue" ;
+ TEXT [ swedish ] = "Gata" ;
+ TEXT [ dutch ] = "Straat" ;
+ TEXT [ spanish ] = "Calle" ;
+ TEXT [ english_us ] = "Street" ;
+ TEXT[ chinese_simplified ] = "½ÖµÀ";
+ TEXT[ russian ] = "Óëèöà";
+ TEXT[ polish ] = "Ulica";
+ TEXT[ japanese ] = "Žs’¬‘º–¼";
+ TEXT[ chinese_traditional ] = "µó¹D";
+ TEXT[ arabic ] = "ÇáÔÇÑÚ";
+ TEXT[ greek ] = "Ïäüò";
+ TEXT[ korean ] = "ÁÖ¼Ò¹øÁö";
+ TEXT[ turkish ] = "Sokak";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_EU_LAND
+{
+ TEXT = "Land" ;
+ TEXT [ English ] = "Country" ;
+ TEXT [ norwegian ] = "Country" ;
+ TEXT [ italian ] = "Paese" ;
+ TEXT [ portuguese_brazilian ] = "País" ;
+ TEXT [ portuguese ] = "País" ;
+ TEXT [ finnish ] = "Valtio" ;
+ TEXT [ danish ] = "Land" ;
+ TEXT [ french ] = "Pays" ;
+ TEXT [ swedish ] = "Land" ;
+ TEXT [ dutch ] = "Land" ;
+ TEXT [ spanish ] = "País" ;
+ TEXT [ english_us ] = "Country" ;
+ TEXT[ chinese_simplified ] = "¹ú¼Ò";
+ TEXT[ russian ] = "Ñòðàíà";
+ TEXT[ polish ] = "Kraj";
+ TEXT[ japanese ] = "‘–¼";
+ TEXT[ chinese_traditional ] = "°ê®a";
+ TEXT[ arabic ] = "ÇáÈáÏ";
+ TEXT[ greek ] = "×þñá";
+ TEXT[ korean ] = "±¹°¡";
+ TEXT[ turkish ] = "Ülke";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_EU_PLZ
+{
+ TEXT = "PLZ" ;
+ TEXT [ English ] = "ZIP Code" ;
+ TEXT [ norwegian ] = "ZIP Code" ;
+ TEXT [ italian ] = "C.A.P." ;
+ TEXT [ portuguese_brazilian ] = "CEP" ;
+ TEXT [ portuguese ] = "CP" ;
+ TEXT [ finnish ] = "Postinro" ;
+ TEXT [ danish ] = "Postnr." ;
+ TEXT [ french ] = "Code postal" ;
+ TEXT [ swedish ] = "Postnummer" ;
+ TEXT [ dutch ] = "Postcode" ;
+ TEXT [ spanish ] = "CP" ;
+ TEXT [ english_us ] = "Zip code" ;
+ TEXT[ chinese_simplified ] = "Óʱà";
+ TEXT[ russian ] = "Ïî÷òîâûé èíäåêñ";
+ TEXT[ polish ] = "Kod pocztowy";
+ TEXT[ japanese ] = "—X•Ö”Ô†";
+ TEXT[ chinese_traditional ] = "¶l»¼°Ï¸¹";
+ TEXT[ arabic ] = "ÇáÑãÒ ÇáÈÑíÏí";
+ TEXT[ greek ] = "Ô.Ê.";
+ TEXT[ korean ] = "¿ìÆò¹øÈ£";
+ TEXT[ turkish ] = "P.Kodu";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_EU_ORT
+{
+ TEXT = "Ort" ;
+ TEXT [ English ] = "City" ;
+ TEXT [ norwegian ] = "City" ;
+ TEXT [ italian ] = "Località" ;
+ TEXT [ portuguese_brazilian ] = "Cidade" ;
+ TEXT [ portuguese ] = "Cidade" ;
+ TEXT [ finnish ] = "Kaupunki" ;
+ TEXT [ danish ] = "By" ;
+ TEXT [ french ] = "Ville" ;
+ TEXT [ swedish ] = "Stad" ;
+ TEXT [ dutch ] = "Plaats" ;
+ TEXT [ spanish ] = "Ciudad" ;
+ TEXT [ english_us ] = "City" ;
+ TEXT[ chinese_simplified ] = "λÖÃ";
+ TEXT[ russian ] = "Ãîðîä";
+ TEXT[ polish ] = "MiejscowoϾ";
+ TEXT[ japanese ] = "B–¼A“s“¹•{Œ§–¼";
+ TEXT[ chinese_traditional ] = "¦ì¸m";
+ TEXT[ arabic ] = "ÇáãÏíäÉ";
+ TEXT[ greek ] = "Ðüëç";
+ TEXT[ korean ] = "½Ã";
+ TEXT[ turkish ] = "Þehir";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_EU_TITEL
+{
+ TEXT = "Titel" ;
+ TEXT [ English ] = "Titel" ;
+ TEXT [ norwegian ] = "Tittel" ;
+ TEXT [ italian ] = "Titolo" ;
+ TEXT [ portuguese_brazilian ] = "Títilo" ;
+ TEXT [ portuguese ] = "Título" ;
+ TEXT [ finnish ] = "Otsikko" ;
+ TEXT [ danish ] = "Titel" ;
+ TEXT [ french ] = "Titre" ;
+ TEXT [ swedish ] = "Rubrik" ;
+ TEXT [ dutch ] = "Titel" ;
+ TEXT [ spanish ] = "Título" ;
+ TEXT [ english_us ] = "Title" ;
+ TEXT[ chinese_simplified ] = "Í·ÏÎ";
+ TEXT[ russian ] = "Òèòóë";
+ TEXT[ polish ] = "Tytu³";
+ TEXT[ japanese ] = "Œ¨‘‚«";
+ TEXT[ chinese_traditional ] = "ÀY»Î";
+ TEXT[ arabic ] = "ÇáãÓãì ÇáæÙíÝí";
+ TEXT[ greek ] = "Ôßôëïò";
+ TEXT[ korean ] = "Á¦¸ñ";
+ TEXT[ turkish ] = "Unvan";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_EU_POS
+{
+ TEXT = "Position" ;
+ TEXT [ English ] = "Position" ;
+ TEXT [ norwegian ] = "Posisjon" ;
+ TEXT [ italian ] = "Posizione" ;
+ TEXT [ portuguese_brazilian ] = "Posição" ;
+ TEXT [ portuguese ] = "Posição" ;
+ TEXT [ finnish ] = "Sijainti" ;
+ TEXT [ danish ] = "Stilling" ;
+ TEXT [ french ] = "Position" ;
+ TEXT [ swedish ] = "Position" ;
+ TEXT [ dutch ] = "Positie" ;
+ TEXT [ spanish ] = "Posición" ;
+ TEXT [ english_us ] = "Position" ;
+ TEXT[ chinese_simplified ] = "λÖÃ";
+ TEXT[ russian ] = "Äîëæíîñòü";
+ TEXT[ polish ] = "Pozycja";
+ TEXT[ japanese ] = "ˆÊ’u";
+ TEXT[ chinese_traditional ] = "¦ì¸m";
+ TEXT[ arabic ] = "ÇáãÑßÒ";
+ TEXT[ greek ] = "ÈÝóç";
+ TEXT[ korean ] = "Á÷À§";
+ TEXT[ turkish ] = "Pozisyon";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_EU_TELPRIV
+{
+ TEXT = "Tel. (Privat)" ;
+ TEXT [ English ] = "Phone (private)" ;
+ TEXT [ norwegian ] = "Phone (private)" ;
+ TEXT [ italian ] = "Telefono (priv.)" ;
+ TEXT [ portuguese_brazilian ] = "Fone (privado)" ;
+ TEXT [ portuguese ] = "Tel. (part.)" ;
+ TEXT [ finnish ] = "Puhelin (kotiin)" ;
+ TEXT [ danish ] = "Tlf. (privat)" ;
+ TEXT [ french ] = "Tél. (domicile)" ;
+ TEXT [ swedish ] = "Tfn. (privat)" ;
+ TEXT [ dutch ] = "Tel. (privé)" ;
+ TEXT [ spanish ] = "Tel. (Priv.)" ;
+ TEXT [ english_us ] = "Tel. (Home)" ;
+ TEXT[ chinese_simplified ] = "µç»°(˽ÈË)";
+ TEXT[ russian ] = "Òåë. (äîìàøíèé)";
+ TEXT[ polish ] = "Tel. (prywatny)";
+ TEXT[ japanese ] = "Tel.(Ž©‘î)";
+ TEXT[ chinese_traditional ] = "¹q¸Ü(¨p¤H)";
+ TEXT[ arabic ] = "ÇáåÇÊÝ (ãäÒá)";
+ TEXT[ greek ] = "Ôçë. (Ïéêßá)";
+ TEXT[ korean ] = "ÀüÈ­¹øÈ£ (Áý)";
+ TEXT[ turkish ] = "Tlf. (Ev)";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_EU_TELFIRMA
+{
+ TEXT = "Tel. (Geschäft)" ;
+ TEXT [ English ] = "Phone (Company)" ;
+ TEXT [ norwegian ] = "Phone (Company)" ;
+ TEXT [ italian ] = "Telefono (uff.)" ;
+ TEXT [ portuguese_brazilian ] = "Fone (Compania)" ;
+ TEXT [ portuguese ] = "Tel. (empr.)" ;
+ TEXT [ finnish ] = "Puhelin (työhön)" ;
+ TEXT [ danish ] = "Tlf. (arbejde)" ;
+ TEXT [ french ] = "Tél. (bureau)" ;
+ TEXT [ swedish ] = "Tfn. (företag)" ;
+ TEXT [ dutch ] = "Tel. (Bedrijf)" ;
+ TEXT [ spanish ] = "Tel. (Emp.)" ;
+ TEXT [ english_us ] = "Tel. (Work)" ;
+ TEXT[ chinese_simplified ] = "µç»°(°ì¹«ÊÒ)";
+ TEXT[ russian ] = "Òåë. (ñëóæåáíûé)";
+ TEXT[ polish ] = "Tel. (firmowy)";
+ TEXT[ japanese ] = "Tel.(‹Î–±æ)";
+ TEXT[ chinese_traditional ] = "¹q¸Ü(¿ì¤½«Ç)";
+ TEXT[ arabic ] = "ÇáåÇÊÝ (Úãá)";
+ TEXT[ greek ] = "Ôçë. (Åñãáóßá)";
+ TEXT[ korean ] = "ÀüÈ­¹øÈ£. (Á÷Àå)";
+ TEXT[ turkish ] = "Tlf. (Ýþ)";
+ TEXT[ language_user1 ] = " ";
+};
+String FLD_EU_FAX
+{
+ TEXT = "FAX" ;
+};
+String FLD_EU_EMAIL
+{
+ TEXT = "E-Mail" ;
+ TEXT [ English ] = "E-mail" ;
+ Text [ portuguese ] = "E-mail" ;
+ Text [ english_us ] = "E-mail" ;
+ Text [ portuguese_brazilian ] = "E-Mail" ;
+ Text [ swedish ] = "E-post" ;
+ Text [ danish ] = "E-mail" ;
+ Text [ italian ] = "eMail" ;
+ Text [ spanish ] = "E-mail" ;
+ Text [ french ] = "E-Mail" ;
+ Text [ dutch ] = "E-mail" ;
+ Text[ chinese_simplified ] = "µç×ÓÓʼþ";
+ Text[ russian ] = "Àäðåñ ýë. ïî÷òû";
+ Text[ polish ] = "e-mail";
+ Text[ japanese ] = "E-mail";
+ Text[ chinese_traditional ] = "¹q¤l¶l¥ó";
+ Text[ arabic ] = "ÈÑíÏ ÅáßÊÑæäí";
+ Text[ greek ] = "E-mail";
+ Text[ korean ] = "ÀüÀÚ¿ìÆí";
+ Text[ turkish ] = "E-posta";
+ Text[ language_user1 ] = " ";
+};
+String FLD_EU_STATE
+{
+ Text = "Staat" ;
+ Text [ English ] = "State" ;
+ Text [ english_us ] = "State" ;
+ Text [ italian ] = "Stato" ;
+ Text [ spanish ] = "Estado" ;
+ Text [ french ] = "Région" ;
+ Text [ dutch ] = "Staat" ;
+ Text [ danish ] = "Stat" ;
+ Text [ portuguese_brazilian ] = "Staat" ;
+ Text [ portuguese ] = "Estado" ;
+ Text [ swedish ] = "Stat" ;
+ Text[ chinese_simplified ] = "Ê¡ÊÐ";
+ Text[ russian ] = "Îáëàñòü";
+ Text[ polish ] = "Pañstwo";
+ Text[ japanese ] = "‘–¼";
+ Text[ chinese_traditional ] = "¬Ù¥«";
+ Text[ arabic ] = "ÇáæáÇíÉ";
+ Text[ greek ] = "×þñá";
+ Text[ korean ] = "ÁÖ";
+ Text[ turkish ] = "Ýl";
+ Text[ language_user1 ] = " ";
+};
+String FLD_PAGEREF_OFF
+{
+ TEXT = "aus" ;
+ TEXT [ English ] = "off" ;
+ Text [ english_us ] = "off" ;
+ Text [ italian ] = "off" ;
+ Text [ spanish ] = "de" ;
+ Text [ french ] = "désactivé" ;
+ Text [ dutch ] = "uit" ;
+ Text [ swedish ] = "av" ;
+ Text [ danish ] = "deaktiveret" ;
+ Text [ portuguese ] = "desligado" ;
+ Text [ portuguese_brazilian ] = "aus" ;
+ Text[ chinese_simplified ] = "ʧ»î";
+ Text[ russian ] = "âûêë.";
+ Text[ polish ] = "wy³¹cz";
+ Text[ japanese ] = "µÌ";
+ Text[ chinese_traditional ] = "¥¢¬¡";
+ Text[ arabic ] = "ÅíÞÇÝ";
+ Text[ greek ] = "áðåíåñãïðïßçóç";
+ Text[ korean ] = "ÇØÁ¦";
+ Text[ turkish ] = "kapalý";
+ Text[ language_user1 ] = " ";
+};
+String FLD_PAGEREF_ON
+{
+ TEXT = "an" ;
+ TEXT [ English ] = "on" ;
+ Text [ english_us ] = "on" ;
+ Text [ italian ] = "on" ;
+ Text [ spanish ] = "en" ;
+ Text [ french ] = "activé" ;
+ Text [ dutch ] = "aan" ;
+ Text [ swedish ] = "på" ;
+ Text [ danish ] = "aktiveret" ;
+ Text [ portuguese ] = "ligado" ;
+ Text [ portuguese_brazilian ] = "an" ;
+ Text[ chinese_simplified ] = "ÖÁ";
+ Text[ russian ] = "âêë.";
+ Text[ polish ] = "w³¹cz";
+ Text[ japanese ] = "µÝ";
+ Text[ chinese_traditional ] = "¦¬¥óªÌ";
+ Text[ arabic ] = "ÊÔÛíá";
+ Text[ greek ] = "åíåñãïðïßçóç";
+ Text[ korean ] = "ÀÛµ¿";
+ Text[ turkish ] = "Açýk";
+ Text[ language_user1 ] = " ";
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Pfadname
+ --------------------------------------------------------------------*/
+ // Formate FileName
+String FMT_FF_NAME
+{
+ TEXT = "Dateiname" ;
+ TEXT [ English ] = "Filename" ;
+ TEXT [ norwegian ] = "Filename" ;
+ TEXT [ italian ] = "Nome file" ;
+ TEXT [ portuguese_brazilian ] = "Nome do Arquivo" ;
+ TEXT [ portuguese ] = "Nome do ficheiro" ;
+ TEXT [ finnish ] = "Tiedostonimi" ;
+ TEXT [ danish ] = "Filnavn" ;
+ TEXT [ french ] = "Nom de fichier" ;
+ TEXT [ swedish ] = "Filnamn" ;
+ TEXT [ dutch ] = "Naam bestand" ;
+ 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[ greek ] = "¼íïìá áñ÷åßïõ";
+ TEXT[ korean ] = "ÆÄÀÏ À̸§";
+ TEXT[ turkish ] = "Dosya adý";
+ TEXT[ language_user1 ] = " ";
+};
+String FMT_FF_NAME_NOEXT
+{
+ TEXT = "Dateiname ohne Erweiterung" ;
+ TEXT [ English ] = "Filename without extension" ;
+ Text [ portuguese ] = "Nome do ficheiro sem extensão" ;
+ Text [ english_us ] = "File name without extension" ;
+ Text [ portuguese_brazilian ] = "Dateiname ohne Erweiterung" ;
+ Text [ swedish ] = "Filnamn utan tillägg" ;
+ Text [ danish ] = "Filnavn uden filtypenavn" ;
+ Text [ italian ] = "File senza estensione" ;
+ Text [ spanish ] = "Nombre del archivo sin extensión" ;
+ Text [ french ] = "Nom de fichier sans extension" ;
+ Text [ dutch ] = "Bestandsnaam zonder extensie" ;
+ Text[ chinese_simplified ] = "²»º¬À©Õ¹ÃûµÄÎļþÃû";
+ Text[ russian ] = "Èìÿ ôàéëà áåç ðàñøèðåíèÿ";
+ Text[ polish ] = "Nazwa pliku bez rozszerzenia";
+ Text[ japanese ] = "Šg’£Žq‚È‚µ‚Ì̧²Ù–¼";
+ Text[ chinese_traditional ] = "¤£§t°ÆÀɦWªºÀɮצWºÙ";
+ Text[ arabic ] = "ÇÓã ãáÝ ÈÏæä ÇãÊÏÇÏ";
+ Text[ greek ] = "¼íïìá áñ÷åßïõ ÷ùñßò åðÝêôáóç";
+ Text[ korean ] = "È®ÀåÀÚ ¾ø´Â ÆÄÀÏ À̸§";
+ Text[ turkish ] = "Uzantýsýz dosya adý";
+ Text[ language_user1 ] = " ";
+};
+String FMT_FF_PATHNAME
+{
+ TEXT = "Pfad/Dateiname" ;
+ TEXT [ English ] = "Path/Filename" ;
+ TEXT [ norwegian ] = "Path/Filename" ;
+ TEXT [ italian ] = "Percorso/Nome file" ;
+ TEXT [ portuguese_brazilian ] = "Caminho/Nome do arquivo" ;
+ TEXT [ portuguese ] = "Atalho/Nome do ficheiro" ;
+ TEXT [ finnish ] = "Polku/Tiedostonimi" ;
+ TEXT [ danish ] = "Sti/Filnavn" ;
+ TEXT [ french ] = "Chemin/Nom de fichier" ;
+ TEXT [ swedish ] = "Sökväg/Filnamn" ;
+ TEXT [ dutch ] = "Pad/Bestandsnaam" ;
+ TEXT [ spanish ] = "Ruta de acceso/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 ] = "¸ô®|©MÀɮצW";
+ TEXT[ arabic ] = "ÇáãÓÇÑ/ÇÓã ÇáãáÝ";
+ TEXT[ greek ] = "ÄéáäñïìÞ/¼íïìá áñ÷åßïõ";
+ TEXT[ korean ] = "°æ·Î/ÆÄÀÏ À̸§";
+ TEXT[ turkish ] = "Veri yolu/Dosya adý";
+ TEXT[ language_user1 ] = " ";
+};
+String FMT_FF_PATH
+{
+ TEXT = "Pfad" ;
+ TEXT [ English ] = "Path" ;
+ TEXT [ norwegian ] = "Bane" ;
+ TEXT [ italian ] = "Percorso" ;
+ TEXT [ portuguese_brazilian ] = "Caminho" ;
+ TEXT [ portuguese ] = "Atalho" ;
+ TEXT [ finnish ] = "Polku" ;
+ TEXT [ danish ] = "Sti" ;
+ TEXT [ french ] = "Chemin" ;
+ TEXT [ swedish ] = "Sökväg" ;
+ TEXT [ dutch ] = "Pad" ;
+ TEXT [ spanish ] = "Ruta" ;
+ TEXT [ english_us ] = "Path" ;
+ TEXT[ chinese_simplified ] = "·¾¶";
+ TEXT[ russian ] = "Ïóòü";
+ TEXT[ polish ] = "Œcie¿ka";
+ TEXT[ japanese ] = "Êß½";
+ TEXT[ chinese_traditional ] = "¸ô®|";
+ TEXT[ arabic ] = "ÇáãÓÇÑ";
+ TEXT[ greek ] = "ÄéáäñïìÞ";
+ TEXT[ korean ] = "°æ·Î";
+ TEXT[ turkish ] = "Veri yolu";
+};
+String FMT_FF_UI_NAME
+{
+ TEXT = "Vorlage" ;
+ TEXT [ English ] = "Template" ;
+ Text [ portuguese ] = "Estilo" ;
+ Text [ english_us ] = "Style" ;
+ Text [ portuguese_brazilian ] = "Vorlage" ;
+ Text [ swedish ] = "Mall" ;
+ Text [ danish ] = "Skabelon" ;
+ Text [ italian ] = "Modello" ;
+ Text [ spanish ] = "Plantilla" ;
+ Text [ french ] = "Style" ;
+ Text [ dutch ] = "Sjabloon" ;
+ Text[ chinese_simplified ] = "Ñùʽ";
+ Text[ russian ] = "Øàáëîí";
+ Text[ polish ] = "Szablon";
+ Text[ japanese ] = "ÃÝÌßÚ°Ä";
+ Text[ chinese_traditional ] = "¼Ë¦¡";
+ Text[ arabic ] = "ÞÇáÈ";
+ Text[ greek ] = "Ðñüôõðï";
+ Text[ korean ] = "ÅÛÇø®Æ®";
+ Text[ turkish ] = "Þablon";
+ Text[ language_user1 ] = " ";
+};
+String FMT_FF_UI_RANGE
+{
+ TEXT = "Bereich" ;
+ TEXT [ English ] = "Group" ;
+ Text [ portuguese ] = "Área" ;
+ Text [ english_us ] = "Area" ;
+ Text [ portuguese_brazilian ] = "Bereich" ;
+ Text [ swedish ] = "Område" ;
+ Text [ danish ] = "Område" ;
+ Text [ italian ] = "Sezione" ;
+ Text [ spanish ] = "Area" ;
+ Text [ french ] = "Plage" ;
+ Text [ dutch ] = "Bereik" ;
+ 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 ] = " ";
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Format Kapitel
+ --------------------------------------------------------------------*/
+String FMT_CHAPTER_NAME
+{
+ TEXT = "Kapitelname" ;
+ TEXT [ English ] = "Chapter name" ;
+ TEXT [ norwegian ] = "Chapter name" ;
+ TEXT [ italian ] = "Nome capitolo" ;
+ TEXT [ portuguese_brazilian ] = "Nome do capítulo" ;
+ TEXT [ portuguese ] = "Nome do capítulo" ;
+ TEXT [ finnish ] = "Luvun nimi" ;
+ TEXT [ danish ] = "Kapitelnavn" ;
+ TEXT [ french ] = "Nom de chapitre" ;
+ TEXT [ swedish ] = "Kapitelnamn" ;
+ TEXT [ dutch ] = "Naam hoofdstuk" ;
+ TEXT [ spanish ] = "Nombre del capítulo" ;
+ TEXT [ english_us ] = "Chapter name" ;
+ TEXT[ chinese_simplified ] = "ÕÂÃû³Æ";
+ TEXT[ russian ] = "Íàçâàíèå ãëàâû";
+ TEXT[ polish ] = "Nazwa rozdzia³u";
+ TEXT[ japanese ] = "Í‚Ì–¼Ì";
+ TEXT[ language_user1 ] = " ";
+ TEXT[ chinese_traditional ] = "³¹¦WºÙ";
+ TEXT[ arabic ] = "ÇÓã ÇáÝÕá";
+ TEXT[ greek ] = "¼íïìá êåöáëáßïõ";
+ TEXT[ korean ] = "Àå À̸§";
+ TEXT[ turkish ] = "Bölüm adý";
+};
+String FMT_CHAPTER_NO
+{
+ TEXT = "Kapitelnummer" ;
+ TEXT [ English ] = "Chapter number" ;
+ Text [ portuguese ] = "Número do capítulo" ;
+ Text [ english_us ] = "Chapter number" ;
+ Text [ portuguese_brazilian ] = "Número do capítulo" ;
+ Text [ swedish ] = "Kapitelnummer" ;
+ Text [ danish ] = "Kapitelnummer" ;
+ Text [ italian ] = "Numero capitolo" ;
+ Text [ spanish ] = "Número del capítulo" ;
+ Text [ french ] = "Numéro de chapitre" ;
+ Text [ dutch ] = "Nummer hoofdstuk" ;
+ Text[ chinese_simplified ] = "Õ±àºÅ";
+ Text[ russian ] = "Íîìåð ãëàâû";
+ Text[ polish ] = "Numer rozdzia³u";
+ Text[ japanese ] = "͔Ԇ";
+ Text[ chinese_traditional ] = "³¹½s¸¹";
+ Text[ arabic ] = "ÑÞã ÇáÝÕá";
+ Text[ greek ] = "Áñéèìüò êåöáëáßïõ";
+ Text[ korean ] = "Àå ¹øÈ£";
+ Text[ turkish ] = "Bölüm numarasý";
+ Text[ language_user1 ] = " ";
+};
+String FMT_CHAPTER_NO_NOSEPARATOR
+{
+ TEXT = "Kapitelnummer ohne Trennzeichen" ;
+ TEXT [ English ] = "Chapter number without separator" ;
+ Text [ portuguese ] = "Número de capítulo sem separador" ;
+ Text [ english_us ] = "Chapter number without separator" ;
+ Text [ portuguese_brazilian ] = "Kapitelnummer ohne Trennzeichen" ;
+ Text [ swedish ] = "Kapitelnummer utan skiljetecken" ;
+ Text [ danish ] = "Kapitelnummer uden skilletegn" ;
+ Text [ italian ] = "Numero di capitolo senza separatore" ;
+ Text [ spanish ] = "Número de capítulo sin separador" ;
+ Text [ french ] = "Numéro de chapitre sans séparateur" ;
+ Text [ dutch ] = "Hoofdstuknummer zonder scheidingstekens" ;
+ Text[ chinese_simplified ] = "Õ±àºÅ²»´øÁ¬×Ö·û";
+ Text[ russian ] = "Íîìåð ãëàâû áåç ðàçäåëèòåëÿ";
+ Text[ polish ] = "Numer rozdzia³u bez separatora";
+ Text[ japanese ] = "ʲÌÝ‚È‚µ‚Ì͔Ԇ";
+ Text[ chinese_traditional ] = "³¹½s¸¹¤£±a³s¦r²Å";
+ Text[ arabic ] = "ÑÞã ÇáÝÕá ÈÏæä ÝÇÕá";
+ Text[ greek ] = "Áñéèìüò êåöáëáßïõ ÷ùñßò åíùôéêü";
+ Text[ korean ] = "±¸ºÐÀÚ ¾ø´Â Àå ¹øÈ£";
+ Text[ turkish ] = "Ayýrma iþareti içermeyen bölüm numarasý";
+ Text[ language_user1 ] = " ";
+};
+String FMT_CHAPTER_NAMENO
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Kapitelnummer und Name : Nummer und Name */
+ TEXT = "Kapitelnummer und Name" ;
+ TEXT [ English ] = "Chapter number and name" ;
+ Text [ portuguese ] = "Número e nome do capítulo" ;
+ Text [ english_us ] = "Chapter number and name" ;
+ Text [ portuguese_brazilian ] = "Número e nome" ;
+ Text [ swedish ] = "Kapitelnummer och namn" ;
+ Text [ danish ] = "Kapitelnummer og navn" ;
+ Text [ italian ] = "Numero di capitolo e nome" ;
+ Text [ spanish ] = "Número y nombre" ;
+ Text [ french ] = "Numéro et nom de chapitre" ;
+ Text [ dutch ] = "Hoofdstuknummer en naam" ;
+ Text[ chinese_simplified ] = "Õ±àºÅºÍÃû³Æ";
+ Text[ russian ] = "Íàçâàíèå è íîìåð ãëàâû";
+ Text[ polish ] = "Numer i nazwa rozdzia³u";
+ Text[ japanese ] = "͂̔Ԇ‚Æ–¼Ì";
+ Text[ chinese_traditional ] = "³¹½s¸¹©M¦WºÙ";
+ Text[ arabic ] = "ÑÞã æÇÓã ÇáÝÕá";
+ Text[ greek ] = "Áñéèìüò êåöáëáßïõ êáé üíïìá";
+ Text[ korean ] = "Àå ¹øÈ£¿Í À̸§";
+ Text[ turkish ] = "Bölüm numarasý ve adý";
+ Text[ language_user1 ] = " ";
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Formate
+ --------------------------------------------------------------------*/
+String FMT_NUM_ABC
+{
+ TEXT = "A B C" ;
+};
+String FMT_NUM_SABC
+{
+ TEXT = "a b c" ;
+};
+String FMT_NUM_ABC_N
+{
+ TEXT = "A .. AA .. AAA" ;
+};
+String FMT_NUM_SABC_N
+{
+ TEXT = "a .. aa .. aaa" ;
+};
+String FMT_NUM_ROMAN
+{
+ TEXT = "Römisch (I II III)" ;
+ TEXT [ English ] = "Roman (I II III)" ;
+ TEXT [ norwegian ] = "Roman (I II III)" ;
+ TEXT [ italian ] = "Romani (I II III)" ;
+ TEXT [ portuguese_brazilian ] = "Romano (I II III)" ;
+ TEXT [ portuguese ] = "Romano (I II III)" ;
+ TEXT [ finnish ] = "Roomalainen (I II III)" ;
+ TEXT [ danish ] = "Romertal (I II III)" ;
+ TEXT [ french ] = "Romain (I II III)" ;
+ TEXT [ swedish ] = "Romerska siffror (I II III)" ;
+ TEXT [ dutch ] = "Romeins (I II III)" ;
+ TEXT [ spanish ] = "Romanos (I II III)" ;
+ TEXT [ english_us ] = "Roman (I II III)" ;
+ TEXT[ chinese_simplified ] = "ÂÞÂíÊý×Ö(I II III)";
+ TEXT[ russian ] = "Ðèìñêèå (I II III)";
+ TEXT[ polish ] = "Rzymskie (I II III)";
+ TEXT[ japanese ] = "Û°Ï”Žš (I II III)";
+ TEXT[ chinese_traditional ] = "ù°¨¼Æ¦r(I II III)";
+ TEXT[ arabic ] = "ÃÑÞÇã ÑæãÇäíÉ (III II I)";
+ TEXT[ greek ] = "ÑùìáúêÜ (I II III)";
+ TEXT[ korean ] = "·Î¸¶½Ä (I II III)";
+ TEXT[ turkish ] = "Roma (I II III)";
+ TEXT[ language_user1 ] = " ";
+};
+String FMT_NUM_SROMAN
+{
+ TEXT = "Römisch (i ii iii)" ;
+ TEXT [ English ] = "Roman (i ii iii)" ;
+ TEXT [ norwegian ] = "Roman (i ii iii)" ;
+ TEXT [ italian ] = "Romani (i ii iii)" ;
+ TEXT [ portuguese_brazilian ] = "Romano (i ii iii)" ;
+ TEXT [ portuguese ] = "Romano (i ii iii)" ;
+ TEXT [ finnish ] = "Roomalainen (i ii iii)" ;
+ TEXT [ danish ] = "Romertal (i ii iii)" ;
+ TEXT [ french ] = "Romain (i ii iii)" ;
+ TEXT [ swedish ] = "Romerska siffror (i ii iii)" ;
+ TEXT [ dutch ] = "Romeins (i ii iii)" ;
+ TEXT [ spanish ] = "Romanos (i ii iii)" ;
+ TEXT [ english_us ] = "Roman (i ii iii)" ;
+ TEXT[ chinese_simplified ] = "ÂÞÂíÊý×Ö(i ii iii)";
+ TEXT[ russian ] = "Ðèìñêèå (i ii iii)";
+ TEXT[ polish ] = "Rzymskie (i ii iii)";
+ TEXT[ japanese ] = "Û°Ï”Žš (i ii iii)";
+ TEXT[ chinese_traditional ] = "ù°¨¼Æ¦r(i ii iii)";
+ TEXT[ arabic ] = "ÃÑÞÇã ÑæãÇäíÉ (iii ii i)";
+ TEXT[ greek ] = "ÑùìáúêÜ (i ii iii)";
+ TEXT[ korean ] = "·Î¸¶½Ä (i ii iii)";
+ TEXT[ turkish ] = "Roma (i ii iii)";
+ TEXT[ language_user1 ] = " ";
+};
+String FMT_NUM_ARABIC
+{
+ TEXT = "Arabisch (1 2 3)" ;
+ TEXT [ English ] = "Arabic (1 2 3)" ;
+ TEXT [ norwegian ] = "Arabic (1 2 3)" ;
+ TEXT [ italian ] = "Arabi (1 2 3)" ;
+ TEXT [ portuguese_brazilian ] = "Arábico (1 2 3)" ;
+ TEXT [ portuguese ] = "Arábe (1 2 3)" ;
+ TEXT [ finnish ] = "Arabialainen (1 2 3)" ;
+ TEXT [ danish ] = "Arabisk (1 2 3)" ;
+ TEXT [ french ] = "Arabe (1 2 3)" ;
+ TEXT [ swedish ] = "Arabiska siffror (1 2 3)" ;
+ TEXT [ dutch ] = "Arabisch (1 2 3)" ;
+ TEXT [ spanish ] = "Árabes (1 2 3)" ;
+ TEXT [ english_us ] = "Arabic (1 2 3)" ;
+ TEXT[ chinese_simplified ] = "°¢À­²®Êý×Ö(1 2 3)";
+ TEXT[ russian ] = "Àðàáñêèå (1 2 3)";
+ TEXT[ polish ] = "Arabskie (1 2 3)";
+ TEXT[ japanese ] = "±×ËÞ±”Žš(1 2 3)";
+ TEXT[ chinese_traditional ] = "ªü©Ô§B¼Æ¦r(1 2 3)";
+ TEXT[ arabic ] = "ÃÑÞÇã ÚÑÈíÉ (1 2 3)";
+ TEXT[ greek ] = "ÁñáâéêÜ (1 2 3)";
+ TEXT[ korean ] = "¾Æ¶óºñ¾Æ ½Ä (1 2 3)";
+ TEXT[ turkish ] = "Arap (1 2 3)";
+ TEXT[ language_user1 ] = " ";
+};
+String FMT_NUM_PAGEDESC
+{
+ TEXT = "Wie Seitenvorlage" ;
+ TEXT [ English ] = "As Page Style" ;
+ TEXT [ norwegian ] = "As Page Style" ;
+ TEXT [ italian ] = "Come modello di pagina" ;
+ TEXT [ portuguese_brazilian ] = "Como Estilo de Página" ;
+ TEXT [ portuguese ] = "Como estilo de página" ;
+ TEXT [ finnish ] = "Sivutyylinä" ;
+ TEXT [ danish ] = "Som sidetypografi" ;
+ TEXT [ french ] = "D'après le style de page" ;
+ TEXT [ swedish ] = "Som sidformatmallen" ;
+ TEXT [ dutch ] = "Zoals pagina-opmaakprofiel" ;
+ TEXT [ spanish ] = "Como estilo de página" ;
+ TEXT [ english_us ] = "As Page Style" ;
+ TEXT[ chinese_simplified ] = "ºÍÒ³ÃæÑùʽÏàͬ";
+ TEXT[ russian ] = "Êàê ñòèëü ñòðàíèöû";
+ TEXT[ polish ] = "Jako styl strony";
+ TEXT[ japanese ] = "Íß°¼Þ½À²Ù‚ÌÝ’è‚ð“K—p";
+ TEXT[ chinese_traditional ] = "©M­¶­±¼Ë¦¡¬Û¦P";
+ TEXT[ arabic ] = "ãËá äãØ ÇáÕÝÍÉ";
+ TEXT[ greek ] = "¼ðùò ôï ðñüôõðï óåëßäáò";
+ TEXT[ korean ] = "ÆäÀÌÁö À¯Çüó·³";
+ TEXT[ turkish ] = "Sayfa biçimi gibi";
+ TEXT[ language_user1 ] = " ";
+};
+String FMT_NUM_PAGESPECIAL
+{
+ TEXT = "Text" ;
+ TEXT [ English ] = "Text" ;
+ Text [ english_us ] = "Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ french ] = "Texte" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ swedish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷½Ä";
+ Text[ chinese_traditional ] = "¤å¦r";
+ Text[ arabic ] = "äÕ";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Author
+ --------------------------------------------------------------------*/
+String FMT_AUTHOR_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 ] = "©m¦W";
+ TEXT[ arabic ] = "ÇáÇÓã";
+ TEXT[ greek ] = "¼íïìá";
+ TEXT[ korean ] = "À̸§";
+ TEXT[ turkish ] = "Ad";
+ TEXT[ language_user1 ] = " ";
+};
+String FMT_AUTHOR_SCUT
+{
+ TEXT = "Kürzel" ;
+ TEXT [ English ] = "Short name" ;
+ TEXT [ norwegian ] = "Short name" ;
+ TEXT [ italian ] = "Iniziali" ;
+ TEXT [ portuguese_brazilian ] = "Abreviação" ;
+ TEXT [ portuguese ] = "Iniciais" ;
+ TEXT [ finnish ] = "Lyhyt nimi" ;
+ TEXT [ danish ] = "Initialer" ;
+ TEXT [ french ] = "Abréviation" ;
+ TEXT [ swedish ] = "Inititaler" ;
+ TEXT [ dutch ] = "Initialen" ;
+ TEXT [ spanish ] = "Iniciales" ;
+ TEXT [ english_us ] = "Initials" ;
+ TEXT[ chinese_simplified ] = "Ëõд";
+ TEXT[ russian ] = "Èíèöèàëû";
+ TEXT[ polish ] = "Inicja³y";
+ TEXT[ japanese ] = "²Æ¼¬Ù";
+ TEXT[ chinese_traditional ] = "ÁY¼g";
+ TEXT[ arabic ] = "ÇáÇÎÊÕÇÑ";
+ TEXT[ greek ] = "Áñ÷éêÜ";
+ TEXT[ korean ] = "¸Ó¸®±ÛÀÚ";
+ TEXT[ turkish ] = "Baþharfler";
+ TEXT[ language_user1 ] = " ";
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Varibale setzen
+ --------------------------------------------------------------------*/
+String FMT_SETVAR_SYS
+{
+ TEXT = "System" ;
+ TEXT [ English ] = "System" ;
+ Text [ portuguese ] = "Sistema" ;
+ Text [ english_us ] = "System" ;
+ Text [ portuguese_brazilian ] = "System" ;
+ Text [ swedish ] = "System" ;
+ Text [ danish ] = "System" ;
+ Text [ italian ] = "Sistema" ;
+ Text [ spanish ] = "Sistema" ;
+ Text [ french ] = "Système" ;
+ Text [ dutch ] = "Systeem" ;
+ Text[ chinese_simplified ] = "ϵͳ";
+ Text[ russian ] = "Ñèñòåìà";
+ Text[ polish ] = "System";
+ Text[ japanese ] = "¼½ÃÑ";
+ Text[ chinese_traditional ] = "¨t²Î";
+ Text[ arabic ] = "ÇáäÙÇã";
+ Text[ greek ] = "Óýóôçìá";
+ Text[ korean ] = "½Ã½ºÅÛ";
+ Text[ turkish ] = "Sistem";
+ Text[ language_user1 ] = " ";
+};
+String FMT_SETVAR_TEXT
+{
+ Text = "Text" ;
+ Text [ English ] = "Text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ english_us ] = "Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷½Ä";
+ Text[ chinese_traditional ] = "¤å¦r";
+ Text[ arabic ] = "äÕ";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+};
+String FMT_GETVAR_NAME
+{
+ TEXT = "Name" ;
+ TEXT [ English ] = "Name" ;
+ Text [ portuguese ] = "Nome" ;
+ Text [ english_us ] = "Name" ;
+ Text [ portuguese_brazilian ] = "Name" ;
+ Text [ swedish ] = "Namn" ;
+ Text [ danish ] = "Navn" ;
+ Text [ italian ] = "Nome" ;
+ Text [ spanish ] = "Nombre" ;
+ Text [ french ] = "Nom" ;
+ Text [ dutch ] = "Naam" ;
+ 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 FMT_GETVAR_TEXT
+{
+ Text = "Text" ;
+ Text [ English ] = "Text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ english_us ] = "Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷½Ä";
+ Text[ chinese_traditional ] = "¤å¦r";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+};
+String FMT_USERVAR_CMD
+{
+ TEXT = "Formel" ;
+ TEXT [ English ] = "Formula" ;
+ Text [ portuguese ] = "Fórmula" ;
+ Text [ english_us ] = "Formula" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ swedish ] = "Formel" ;
+ Text [ danish ] = "Formel" ;
+ Text [ italian ] = "Formula" ;
+ Text [ spanish ] = "Fórmula" ;
+ Text [ french ] = "Formule" ;
+ Text [ dutch ] = "Formule" ;
+ Text[ chinese_simplified ] = "¹«Ê½";
+ Text[ russian ] = "Ôîðìóëà";
+ Text[ polish ] = "Formu³a";
+ Text[ japanese ] = "”Ž®";
+ Text[ chinese_traditional ] = "¤½¦¡";
+ Text[ arabic ] = "ÕíÛÉ";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "¼ö½Ä";
+ Text[ turkish ] = "Formül";
+ Text[ language_user1 ] = " ";
+};
+String FMT_USERVAR_TEXT
+{
+ Text = "Text" ;
+ Text [ English ] = "Text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ english_us ] = "Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text[ chinese_simplified ] = "Îı¾";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷½Ä";
+ Text[ chinese_traditional ] = "¤å¦r";
+ Text[ arabic ] = "äÕ";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+};
+String FMT_DBFLD_DB
+{
+ TEXT = "Datenbank" ;
+ TEXT [ English ] = "Database" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text [ english_us ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ swedish ] = "Databas" ;
+ Text [ danish ] = "Database" ;
+ Text [ italian ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ french ] = "Base de données" ;
+ Text [ dutch ] = "Database" ;
+ Text[ chinese_simplified ] = "Êý¾Ý¿â";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "¸ê®Æ®w";
+ Text[ arabic ] = "ÞÇÚÏÉ ÈíÇäÇÊ";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+};
+String FMT_DBFLD_SYS
+{
+ TEXT = "System" ;
+ TEXT [ English ] = "System" ;
+ Text [ portuguese ] = "Sistema" ;
+ Text [ english_us ] = "System" ;
+ Text [ portuguese_brazilian ] = "System" ;
+ Text [ swedish ] = "System" ;
+ Text [ danish ] = "System" ;
+ Text [ italian ] = "Sistema" ;
+ Text [ spanish ] = "Sistema" ;
+ Text [ french ] = "Système" ;
+ Text [ dutch ] = "Systeem" ;
+ Text[ chinese_simplified ] = "ϵͳ";
+ Text[ russian ] = "Ñèñòåìà";
+ Text[ polish ] = "System";
+ Text[ japanese ] = "¼½ÃÑ";
+ Text[ chinese_traditional ] = "¨t²Î";
+ Text[ arabic ] = "ÇáäÙÇã";
+ Text[ greek ] = "Óýóôçìá";
+ Text[ korean ] = "½Ã½ºÅÛ";
+ Text[ turkish ] = "Sistem";
+ Text[ language_user1 ] = " ";
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Ablagefelder
+ --------------------------------------------------------------------*/
+String FMT_REG_AUTHOR
+{
+ TEXT = "Autor" ;
+ TEXT [ English ] = "Author" ;
+ TEXT [ norwegian ] = "Forfatter" ;
+ TEXT [ italian ] = "Autore" ;
+ TEXT [ portuguese_brazilian ] = "Autor" ;
+ TEXT [ portuguese ] = "Autor" ;
+ TEXT [ finnish ] = "Tekijä" ;
+ TEXT [ danish ] = "Forfatter" ;
+ TEXT [ french ] = "Auteur" ;
+ TEXT [ swedish ] = "Författare" ;
+ TEXT [ dutch ] = "Auteur" ;
+ TEXT [ spanish ] = "Autor" ;
+ TEXT [ english_us ] = "Author" ;
+ TEXT[ chinese_simplified ] = "×÷Õß";
+ TEXT[ russian ] = "Àâòîð";
+ TEXT[ polish ] = "Autor";
+ TEXT[ japanese ] = "쬎Ò";
+ TEXT[ chinese_traditional ] = "§@ªÌ";
+ TEXT[ arabic ] = "ÇáãÄáÝ";
+ TEXT[ greek ] = "ÓõíôÜêôçò";
+ TEXT[ korean ] = "ÀÛ¼ºÀÎ";
+ TEXT[ turkish ] = "Yazan";
+ TEXT[ language_user1 ] = " ";
+};
+String FMT_REG_TIME
+{
+ TEXT = "Uhrzeit" ;
+ TEXT [ English ] = "Time" ;
+ TEXT [ norwegian ] = "Time" ;
+ TEXT [ italian ] = "Orario" ;
+ TEXT [ portuguese_brazilian ] = "Hora" ;
+ TEXT [ portuguese ] = "Hora" ;
+ TEXT [ finnish ] = "Aika" ;
+ TEXT [ danish ] = "Klokkeslæt" ;
+ TEXT [ french ] = "Heure" ;
+ TEXT [ swedish ] = "Klockslag" ;
+ TEXT [ dutch ] = "Uur" ;
+ TEXT [ spanish ] = "Hora" ;
+ TEXT [ english_us ] = "Time" ;
+ TEXT[ chinese_simplified ] = "ʱ¼ä";
+ TEXT[ russian ] = "Âðåìÿ";
+ TEXT[ polish ] = "Godzina";
+ TEXT[ japanese ] = "Žž";
+ TEXT[ chinese_traditional ] = "®É¶¡";
+ TEXT[ arabic ] = "ÇáæÞÊ";
+ TEXT[ greek ] = "¿ñá";
+ TEXT[ korean ] = "½Ã°£";
+ TEXT[ turkish ] = "Saat";
+ TEXT[ language_user1 ] = " ";
+};
+String FMT_REG_DATE
+{
+ 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 ] = " ";
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Formate Referenzen
+ --------------------------------------------------------------------*/
+String FMT_REF_TEXT
+{
+ TEXT = "Referenztext" ;
+ TEXT [ English ] = "Reference" ;
+ TEXT [ norwegian ] = "Reference" ;
+ TEXT [ italian ] = "Testo di riferimento" ;
+ TEXT [ portuguese_brazilian ] = "Referência" ;
+ TEXT [ portuguese ] = "Referência" ;
+ TEXT [ finnish ] = "Viittaus" ;
+ TEXT [ danish ] = "Referencetekst" ;
+ TEXT [ french ] = "Texte de référence" ;
+ TEXT [ swedish ] = "Referenstext" ;
+ TEXT [ dutch ] = "Verwijzingstekst" ;
+ TEXT [ spanish ] = "Texto de referencia" ;
+ TEXT [ english_us ] = "Reference" ;
+ TEXT[ chinese_simplified ] = "˵Ã÷ÎÄ";
+ TEXT[ russian ] = "Òåêñò ññûëêè";
+ TEXT[ polish ] = "Tekst odwo³añ";
+ TEXT[ japanese ] = "ŽQÆ•¶Žš—ñ";
+ TEXT[ chinese_traditional ] = "°Ñ·Ó¤å";
+ TEXT[ arabic ] = "äÕ ãÑÌÚí";
+ TEXT[ greek ] = "Êåßìåíï áíáöïñÜò";
+ TEXT[ korean ] = "ÂüÁ¶";
+ TEXT[ turkish ] = "Referans metni";
+ TEXT[ language_user1 ] = " ";
+};
+String FMT_REF_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 FMT_REF_CHAPTER
+{
+ TEXT = "Kapitel" ;
+ TEXT [ English ] = "Chapter" ;
+ TEXT [ norwegian ] = "Chapter" ;
+ TEXT [ italian ] = "Capitolo" ;
+ TEXT [ portuguese_brazilian ] = "Capítulo" ;
+ TEXT [ portuguese ] = "Capítulo" ;
+ TEXT [ finnish ] = "Luku" ;
+ TEXT [ danish ] = "Kapitel" ;
+ TEXT [ french ] = "Chapitre" ;
+ TEXT [ swedish ] = "Kapitel" ;
+ TEXT [ dutch ] = "Hoofdstuk" ;
+ TEXT [ spanish ] = "Capítulo" ;
+ TEXT [ english_us ] = "Chapter" ;
+ TEXT[ chinese_simplified ] = "ÕÂ";
+ TEXT[ russian ] = "Ãëàâà";
+ TEXT[ polish ] = "Rozdzia³";
+ TEXT[ japanese ] = "Í";
+ TEXT[ language_user1 ] = " ";
+ TEXT[ chinese_traditional ] = "³¹";
+ TEXT[ arabic ] = "ÇáÝÕá";
+ TEXT[ greek ] = "ÊåöÜëáéï";
+ TEXT[ korean ] = "Àå";
+ TEXT[ turkish ] = "Bölüm";
+};
+String FMT_REF_UPDOWN
+{
+ TEXT = "Oberhalb/Unterhalb" ;
+ TEXT [ English ] = "Above/Below" ;
+ Text [ dutch ] = "Boven/beneden" ;
+ Text [ english_us ] = "Above/Below" ;
+ Text [ italian ] = "Al di sopra/al di sotto" ;
+ Text [ spanish ] = "Encima/Debajo" ;
+ Text [ french ] = "Supra/infra" ;
+ Text [ swedish ] = "Över/under" ;
+ Text [ danish ] = "Over/under" ;
+ Text [ portuguese ] = "Acima/Abaixo" ;
+ Text [ portuguese_brazilian ] = "Oberhalb/Unterhalb" ;
+ Text[ chinese_simplified ] = "Ö®ÉÏ/Ö®ÏÂ";
+ Text[ russian ] = "Ñâåðõó/Ñíèçó";
+ Text[ polish ] = "Powy¿ej/Poni¿ej";
+ Text[ japanese ] = "ã/‰º";
+ Text[ chinese_traditional ] = "¤§¤W/¤§¤U";
+ Text[ arabic ] = "ÃÚáì/ÃÓÝá";
+ Text[ greek ] = "¢íù áðü/ÊÜôù áðü";
+ Text[ korean ] = "À§/¾Æ·¡";
+ Text[ turkish ] = "Üstte/Altta";
+ Text[ language_user1 ] = " ";
+};
+String FMT_REF_PAGE_PGDSC
+{
+ TEXT = "Wie Seitenvorlage" ;
+ TEXT [ English ] = "As Page Style" ;
+ TEXT [ norwegian ] = "As Page Style" ;
+ TEXT [ italian ] = "Come modello di pagina" ;
+ TEXT [ portuguese_brazilian ] = "Como Estilo de Página" ;
+ TEXT [ portuguese ] = "Como estilo de página" ;
+ TEXT [ finnish ] = "Sivutyylinä" ;
+ TEXT [ danish ] = "Som sidetypografi" ;
+ TEXT [ french ] = "D'après le style de page" ;
+ TEXT [ swedish ] = "Som sidformatmallen" ;
+ TEXT [ dutch ] = "Volgens pagina-opmaakprofiel" ;
+ TEXT [ spanish ] = "Como estilo de página" ;
+ TEXT [ english_us ] = "As Page Style" ;
+ TEXT[ chinese_simplified ] = "ºÍÒ³ÃæÑùʽÏàͬ";
+ TEXT[ russian ] = "Êàê ñòèëü ñòðàíèöû";
+ TEXT[ polish ] = "Jako styl strony";
+ TEXT[ japanese ] = "Íß°¼Þ½À²Ù‚ÌÝ’è‚ð“K—p";
+ TEXT[ chinese_traditional ] = "©M­¶­±¼Ë¦¡¬Û¦P";
+ TEXT[ arabic ] = "ãËá äãØ ÇáÕÝÍÉ";
+ TEXT[ greek ] = "¼ðùò ôï ðñüôõðï óåëßäáò";
+ TEXT[ korean ] = "ÆäÀÌÁö À¯Çüó·³";
+ TEXT[ turkish ] = "Sayfa biçimi gibi";
+ TEXT[ language_user1 ] = " ";
+};
+String FMT_REF_ONLYNUMBER
+{
+ TEXT = "Kategorie und Nummer" ;
+ TEXT [ English ] = "Only Category and Numbering" ;
+ Text [ dutch ] = "Categorie en nummer" ;
+ Text [ english_us ] = "Category and Number" ;
+ Text [ italian ] = "Numero e categoria" ;
+ Text [ spanish ] = "Categoría y número" ;
+ Text [ french ] = "Catégorie et numéro" ;
+ Text [ swedish ] = "Kategori och nummer" ;
+ Text [ danish ] = "Kategori og nummer" ;
+ Text [ portuguese ] = "Categoria e número" ;
+ Text [ portuguese_brazilian ] = "Kategorie und Nummer" ;
+ Text[ chinese_simplified ] = "·ÖÀàºÍ±àºÅ";
+ Text[ russian ] = "Êàòåãîðèÿ è íîìåð";
+ Text[ polish ] = "Kategoria i numer";
+ Text[ japanese ] = "€–ڂƔԆ";
+ Text[ chinese_traditional ] = "¤ÀÃþ©M½s¸¹";
+ Text[ arabic ] = "ÇáÝÆÉ æÇáÑÞã";
+ Text[ greek ] = "Êáôçãïñßá êáé áñéèìüò";
+ Text[ korean ] = "Àå°ú ¹øÈ£";
+ Text[ turkish ] = "Kategori ve numara";
+ Text[ language_user1 ] = " ";
+};
+String FMT_REF_ONLYCAPTION
+{
+ TEXT = "Beschriftungstext" ;
+ TEXT [ English ] = "Only Caption" ;
+ Text [ dutch ] = "Bijschrifttekst" ;
+ Text [ english_us ] = "Caption Text" ;
+ Text [ italian ] = "Dicitura" ;
+ Text [ spanish ] = "Texto de etiqueta" ;
+ Text [ french ] = "Texte de légende" ;
+ Text [ swedish ] = "Bildtext" ;
+ Text [ danish ] = "Billedtekst" ;
+ Text [ portuguese ] = "Texto para etiqueta" ;
+ Text [ portuguese_brazilian ] = "Beschriftungstext" ;
+ Text[ chinese_simplified ] = "±êÇ©ÎÄ";
+ Text[ russian ] = "Òåêñò íàçâàíèÿ";
+ Text[ polish ] = "Tekst etykiety";
+ Text[ japanese ] = "×ÍÞÙ‚Ì÷½Ä";
+ Text[ chinese_traditional ] = "¼ÐÅÒ¤å";
+ Text[ arabic ] = "äÕ ÇáÊÓãíÉ ÇáÊæÖíÍíÉ";
+ Text[ greek ] = "Êåßìåíï åðéãñáöÞò";
+ Text[ korean ] = "ĸ¼Ç ÅؽºÆ®";
+ Text[ turkish ] = "Altyazý metni";
+ Text[ language_user1 ] = " ";
+};
+String FMT_REF_ONLYSEQNO
+{
+ TEXT = "Nummer" ;
+ TEXT [ English ] = "Only Numbering" ;
+ TEXT[ english_us ] = "Numbering";
+ TEXT[ portuguese ] = "Número";
+ TEXT[ russian ] = "Íîìåð";
+ TEXT[ dutch ] = "Nummer";
+ TEXT[ french ] = "Numéro";
+ TEXT[ spanish ] = "Número";
+ TEXT[ italian ] = "Numero";
+ TEXT[ danish ] = "Nummer";
+ TEXT[ swedish ] = "Nummer";
+ TEXT[ polish ] = "Numer";
+ TEXT[ portuguese_brazilian ] = "Only Numbering";
+ TEXT[ japanese ] = "”Ô†";
+ TEXT[ chinese_simplified ] = "񅧏";
+ TEXT[ chinese_traditional ] = "½s¸¹";
+ TEXT[ arabic ] = "ÇáÑÞã";
+ TEXT[ greek ] = "Áñéèìüò";
+ TEXT[ korean ] = "¹øÈ£ ¸Å±â±â";
+ TEXT[ turkish ] = "Numara";
+ TEXT[ language_user1 ] = " ";
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Platzhalter
+ --------------------------------------------------------------------*/
+String FMT_MARK_TEXT
+{
+ Text = "Text" ;
+ Text [ English ] = "Text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ english_us ] = "Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷½Ä";
+ Text[ chinese_traditional ] = "¤å¦r";
+ Text[ arabic ] = "äÕ";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+};
+String FMT_MARK_TABLE
+{
+ Text = "Tabelle" ;
+ Text [ English ] = "Table" ;
+ Text [ norwegian ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ portuguese_brazilian ] = "Tabela" ;
+ Text [ portuguese ] = "Tabela" ;
+ Text [ finnish ] = "Taulukko" ;
+ Text [ danish ] = "Tabel" ;
+ Text [ french ] = "Tableau" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ dutch ] = "Tabel" ;
+ Text [ spanish ] = "Tabla" ;
+ Text [ english_us ] = "Table" ;
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "Tabela";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÌÏæá";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "Ç¥";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+};
+String FMT_MARK_FRAME
+{
+ Text = "Rahmen" ;
+ Text [ English ] = "Frame" ;
+ Text [ norwegian ] = "Ramme" ;
+ Text [ italian ] = "Cornice" ;
+ Text [ portuguese_brazilian ] = "Moldura" ;
+ Text [ portuguese ] = "Moldura" ;
+ Text [ finnish ] = "Kehys" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ french ] = "Cadre" ;
+ Text [ swedish ] = "Ram" ;
+ Text [ dutch ] = "Kader" ;
+ Text [ spanish ] = "Marco" ;
+ Text [ english_us ] = "Frame" ;
+ Text[ chinese_simplified ] = "¿ò";
+ Text[ russian ] = "Ðàìêà";
+ Text[ polish ] = "Ramka";
+ Text[ japanese ] = "˜g";
+ Text[ chinese_traditional ] = "¤å¦r¤è¶ô";
+ Text[ arabic ] = "ÅØÇÑ";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "ÅؽºÆ® »óÀÚ";
+ Text[ turkish ] = "Çerçeve";
+ Text[ language_user1 ] = " ";
+};
+String FMT_MARK_GRAFIC
+{
+ Text = "Grafik" ;
+ Text [ English ] = "Graphic" ;
+ Text [ norwegian ] = "Graphic" ;
+ Text [ italian ] = "Immagine" ;
+ Text [ portuguese_brazilian ] = "Gráfico" ;
+ Text [ portuguese ] = "Imagem" ;
+ Text [ finnish ] = "Kuva" ;
+ Text [ danish ] = "Grafik" ;
+ Text [ french ] = "Image" ;
+ Text [ swedish ] = "Grafik" ;
+ Text [ dutch ] = "Afbeelding" ;
+ Text [ spanish ] = "Imagen" ;
+ Text [ english_us ] = "Graphics" ;
+ 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 FMT_MARK_OLE
+{
+ Text = "Objekt" ;
+ Text [ English ] = "Object" ;
+ Text [ norwegian ] = "Object" ;
+ Text [ italian ] = "Oggetto" ;
+ Text [ portuguese_brazilian ] = "Objeto" ;
+ Text [ portuguese ] = "Objecto" ;
+ Text [ finnish ] = "Objekti" ;
+ Text [ danish ] = "Objekt" ;
+ Text [ french ] = "Objet" ;
+ Text [ swedish ] = "Objekt" ;
+ Text [ dutch ] = "Object" ;
+ Text [ spanish ] = "Objeto" ;
+ Text [ english_us ] = "Object" ;
+ Text[ chinese_simplified ] = "¶ÔÏó";
+ Text[ russian ] = "Îáúåêò";
+ Text[ polish ] = "Obiekt";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "ª«¥ó";
+ Text[ arabic ] = "ßÇÆä";
+ Text[ greek ] = "Áíôéêåßìåíï";
+ Text[ korean ] = "°³Ã¼";
+ Text[ turkish ] = "Nesne";
+ Text[ language_user1 ] = " ";
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Nur-Text
+ --------------------------------------------------------------------*/
+String FMT_TEXT
+{
+ TEXT = "Text" ;
+};
+/*--------------------------------------------------------------------
+ Beschreibung: globale String-Ressourcen
+ --------------------------------------------------------------------*/
+String STR_ALL
+{
+ Text = "Alle" ;
+ Text [ ENGLISH ] = "All" ;
+ Text [ norwegian ] = "All" ;
+ Text [ italian ] = "Tutto" ;
+ Text [ portuguese_brazilian ] = "Tudo" ;
+ Text [ portuguese ] = "Todos" ;
+ Text [ finnish ] = "Kaikki" ;
+ Text [ danish ] = "Alle" ;
+ Text [ french ] = "Tout" ;
+ Text [ swedish ] = "Alla" ;
+ Text [ dutch ] = "Alles" ;
+ Text [ spanish ] = "Todo" ;
+ 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 STR_INSERT
+{
+ 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 ] = "Insérer" ;
+ 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 ] = " ";
+};
+/*--------------------------------------------------------------------
+ Beschreibung: AustauschStrings fuer Edit/NameFT
+ --------------------------------------------------------------------*/
+String STR_COND
+{
+ TEXT = "Bedin~gung" ;
+ TEXT [ English ] = "Conditio~n" ;
+ 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" ;
+ TEXT[ chinese_simplified ] = "Ìõ¼þ(~C)";
+ TEXT[ russian ] = "Óñëîâèå";
+ TEXT[ polish ] = "Warunek";
+ TEXT[ japanese ] = "ðŒ(~C)";
+ TEXT[ chinese_traditional ] = "±ø¥ó(~C)";
+ TEXT[ arabic ] = "ÔÑØ";
+ TEXT[ greek ] = "¼ñïò";
+ TEXT[ korean ] = "Á¶°Ç(~C)";
+ TEXT[ turkish ] = "Koþul";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_TEXT
+{
+ TEXT = "Dann, Sonst" ;
+ TEXT [ English ] = "Then,Else" ;
+ TEXT [ norwegian ] = "Then,Else" ;
+ TEXT [ italian ] = "Poi, altrimenti" ;
+ TEXT [ portuguese_brazilian ] = "Entao,Senão" ;
+ TEXT [ portuguese ] = "Então, Senão" ;
+ TEXT [ finnish ] = "Sitten,Muuten" ;
+ TEXT [ danish ] = "Så, Ellers" ;
+ TEXT [ french ] = "Alors, sinon" ;
+ TEXT [ swedish ] = "Sedan, annars" ;
+ TEXT [ dutch ] = "Dan, Anders" ;
+ TEXT [ spanish ] = "Entonces, si no" ;
+ TEXT [ english_us ] = "Then, Else" ;
+ TEXT[ chinese_simplified ] = "ÄÇô¾Í£¬·ñÔò";
+ TEXT[ russian ] = "Çàòåì, Èíà÷å";
+ TEXT[ polish ] = "Nastêpnie, Poza tym";
+ TEXT[ japanese ] = "ðŒ‚ð–ž‚½‚·ŽžA–ž‚½‚³‚È‚¢Žž";
+ TEXT[ chinese_traditional ] = "¨º»ò´N¡A§_«h";
+ TEXT[ arabic ] = "Ëã¡ ÛíÑ Ðáß";
+ TEXT[ greek ] = "Ôüôå, Áëëéþò";
+ TEXT[ korean ] = "´ÙÀ½, ±âŸ";
+ TEXT[ turkish ] = "O halde, Yoksa";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DDE_CMD
+{
+ TEXT = "DDE Anweisung" ;
+ TEXT [ English ] = "DDE instruction" ;
+ TEXT [ norwegian ] = "DDE instruction" ;
+ TEXT [ italian ] = "Istruzione DDE" ;
+ TEXT [ portuguese_brazilian ] = "Instruções do DDE" ;
+ TEXT [ portuguese ] = "Instruções DDE" ;
+ TEXT [ finnish ] = "DDE-käsky" ;
+ TEXT [ danish ] = "DDE-sætning" ;
+ TEXT [ french ] = "Instruction DDE" ;
+ TEXT [ swedish ] = "DDE-instruktion" ;
+ TEXT [ dutch ] = "DDE-instructie" ;
+ TEXT [ spanish ] = "Instrucción DDE" ;
+ TEXT [ english_us ] = "DDE Statement" ;
+ TEXT[ chinese_simplified ] = "DDE Ö¸Áî";
+ TEXT[ russian ] = "Óêàçàíèå DDE";
+ TEXT[ polish ] = "Instrukcja DDE";
+ TEXT[ japanese ] = "DDEŽwŽ¦";
+ TEXT[ chinese_traditional ] = "DDE «ü¥O";
+ TEXT[ arabic ] = "ÚÈÇÑÉ DDE";
+ TEXT[ greek ] = "ÅíôïëÞ DDE";
+ TEXT[ korean ] = "DDE ¹®Àå";
+ TEXT[ turkish ] = "DDE deyimi";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_INSTEXT
+{
+ TEXT = "Text einf~ügen" ;
+ TEXT [ English ] = "Inser~t text" ;
+ TEXT [ norwegian ] = "Insert text" ;
+ TEXT [ italian ] = "Inserisci testo" ;
+ TEXT [ portuguese_brazilian ] = "Inserir texto" ;
+ TEXT [ portuguese ] = "Inserir ~texto" ;
+ TEXT [ finnish ] = "Lisää teksti" ;
+ TEXT [ danish ] = "Indsæt tekst" ;
+ TEXT [ french ] = "Insérer un ~texte" ;
+ TEXT [ swedish ] = "Infoga ~text" ;
+ TEXT [ dutch ] = "~Tekst invoegen" ;
+ TEXT [ spanish ] = "I~nsertar texto" ;
+ TEXT [ english_us ] = "Insert t~ext" ;
+ TEXT[ chinese_simplified ] = "²åÈëÎÄ×Ö(~E)";
+ TEXT[ russian ] = "Âñòàâèòü òåêñò";
+ TEXT[ polish ] = "Wstaw tekst";
+ TEXT[ japanese ] = "‘}“ü‚·‚é÷½Ä";
+ TEXT[ chinese_traditional ] = "´¡¤J¤å¦r(~E)";
+ TEXT[ arabic ] = "ÅÏÑÇÌ äÕ";
+ TEXT[ greek ] = "ÅéóáãùãÞ êåéìÝíïõ";
+ TEXT[ korean ] = "ÅؽºÆ® »ðÀÔ(~E)";
+ TEXT[ turkish ] = "Metin ekle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_MACNAME
+{
+ TEXT = "~Makroname" ;
+ TEXT [ English ] = "~Macro name" ;
+ TEXT [ norwegian ] = "Macro name" ;
+ TEXT [ italian ] = "Nome ~macro" ;
+ TEXT [ portuguese_brazilian ] = "Nome da macro" ;
+ TEXT [ portuguese ] = "Nome da ~macro" ;
+ TEXT [ finnish ] = "Makron nimi" ;
+ TEXT [ danish ] = "Makronavn" ;
+ TEXT [ french ] = "~Nom de la macro" ;
+ TEXT [ swedish ] = "~Makronamn" ;
+ TEXT [ dutch ] = "~Naam macro" ;
+ TEXT [ spanish ] = "Nombre de la ~macro" ;
+ TEXT [ english_us ] = "~Macro name" ;
+ TEXT[ chinese_simplified ] = "ºêÃû³Æ(~M)";
+ TEXT[ russian ] = "Èìÿ ìàêðîñà";
+ TEXT[ polish ] = "Nazwa makra";
+ TEXT[ japanese ] = "ϸۖ¼(~M)";
+ TEXT[ chinese_traditional ] = "¥¨¶°¦WºÙ(~M)";
+ TEXT[ arabic ] = "ÇÓã ÇáãÇßÑæ";
+ TEXT[ greek ] = "¼íïìá ìáêñïåíôïëÞò";
+ TEXT[ korean ] = "¸ÅÅ©·Î À̸§(~M)";
+ TEXT[ turkish ] = "Makro ~adý";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_PROMPT
+{
+ TEXT = "H~inweis" ;
+ TEXT [ English ] = "Pr~ompt" ;
+ TEXT [ norwegian ] = "Prompt" ;
+ TEXT [ italian ] = "Nota" ;
+ TEXT [ portuguese_brazilian ] = "Aviso" ;
+ TEXT [ portuguese ] = "~Anotação" ;
+ TEXT [ finnish ] = "Kehote" ;
+ TEXT [ danish ] = "Henvisning" ;
+ TEXT [ french ] = "~Annotation" ;
+ TEXT [ swedish ] = "Hänv~isning" ;
+ TEXT [ dutch ] = "~Aanwijzing" ;
+ TEXT [ spanish ] = "I~ndicación" ;
+ TEXT [ english_us ] = "~Reference" ;
+ TEXT[ chinese_simplified ] = "Ìáʾ(~R)";
+ TEXT[ russian ] = "Óêàçàíèå";
+ TEXT[ polish ] = "Wskazówka";
+ TEXT[ japanese ] = "ŽQÆ(~R)";
+ TEXT[ chinese_traditional ] = "´£¥Ü(~R)";
+ TEXT[ arabic ] = "ãáÇÍÙÉ";
+ TEXT[ greek ] = "Õðüäå~éîç";
+ TEXT[ korean ] = "ÂüÁ¶(~R)";
+ TEXT[ turkish ] = "Bilgi";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_SETNO
+{
+ TEXT = "Satznummer" ;
+ TEXT [ English ] = "Setnumber" ;
+ TEXT [ norwegian ] = "Setnumber" ;
+ TEXT [ italian ] = "Numero di record" ;
+ TEXT [ portuguese_brazilian ] = "Definir número" ;
+ TEXT [ portuguese ] = "Número de registo" ;
+ TEXT [ finnish ] = "Joukon numero" ;
+ TEXT [ danish ] = "Datapostnummer" ;
+ TEXT [ french ] = "Numéro de l'enregistrement" ;
+ TEXT [ swedish ] = "Datapostnummer" ;
+ TEXT [ dutch ] = "Recordnummer" ;
+ TEXT [ spanish ] = "Número de registro" ;
+ TEXT [ english_us ] = "Record number" ;
+ TEXT[ chinese_simplified ] = "ÌõÄ¿±àºÅ";
+ TEXT[ russian ] = "Íîìåð ïðåäëîæåíèÿ";
+ TEXT[ polish ] = "Numer rekordu";
+ TEXT[ japanese ] = "Úº°ÄÞ”Ô†";
+ TEXT[ chinese_traditional ] = "¶µ¥Ø¸¹½X";
+ TEXT[ arabic ] = "ÑÞã ÇáÓÌá";
+ TEXT[ greek ] = "Áñéèìüò åããñáöÞò";
+ TEXT[ korean ] = "·¹ÄÚµå ¹øÈ£";
+ TEXT[ turkish ] = "Veri kaydý numarasý";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_OFFSET
+{
+ TEXT = "Ko~rrektur" ;
+ TEXT [ English ] = "Offs~et" ;
+ TEXT [ norwegian ] = "Offset" ;
+ TEXT [ italian ] = "Correzione" ;
+ TEXT [ portuguese_brazilian ] = "Deslocar" ;
+ TEXT [ portuguese ] = "~Correcção" ;
+ TEXT [ finnish ] = "Siirroa" ;
+ TEXT [ danish ] = "Korrektion" ;
+ TEXT [ french ] = "Dé~calage" ;
+ TEXT [ swedish ] = "Ko~rrigering" ;
+ TEXT [ dutch ] = "~Correctie" ;
+ TEXT [ spanish ] = "C~orrección" ;
+ TEXT [ english_us ] = "O~ffset" ;
+ TEXT[ chinese_simplified ] = "ÐÞ¸Ä(~F)";
+ TEXT[ russian ] = "Êîððåêòèðîâêà";
+ TEXT[ polish ] = "Korekta";
+ TEXT[ japanese ] = "C³(~F)";
+ TEXT[ chinese_traditional ] = "­×§ï(~F)";
+ TEXT[ arabic ] = "ÊÕÍíÍ";
+ TEXT[ greek ] = "Äéüñèùóç";
+ TEXT[ korean ] = "¼öÁ¤(~F)";
+ TEXT[ turkish ] = "Düzeltme";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_VALUE
+{
+ 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" ;
+ 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 ] = " ";
+};
+String STR_FORMULA
+{
+ TEXT = "Formel" ;
+ TEXT [ English ] = "Formula" ;
+ Text [ portuguese ] = "Fórmula" ;
+ Text [ english_us ] = "Formula" ;
+ Text [ portuguese_brazilian ] = "Fórmula do Texto" ;
+ Text [ swedish ] = "Formel" ;
+ Text [ danish ] = "Formel" ;
+ Text [ italian ] = "Formula" ;
+ Text [ spanish ] = "Fórmula" ;
+ Text [ french ] = "Formule " ;
+ Text [ dutch ] = "Formule" ;
+ Text[ chinese_simplified ] = "¹«Ê½";
+ Text[ russian ] = "Ôîðìóëà";
+ Text[ polish ] = "Formu³a";
+ Text[ japanese ] = "”Ž®";
+ Text[ chinese_traditional ] = "¤½¦¡";
+ Text[ arabic ] = "ÕíÛÉ";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "¼ö½Ä";
+ Text[ turkish ] = "Formül";
+ Text[ language_user1 ] = " ";
+};
+String STR_LEVEL
+{
+ TEXT = "Ebene" ;
+ TEXT [ English ] = "Level" ;
+ TEXT [ norwegian ] = "Level" ;
+ TEXT [ italian ] = "Livello " ;
+ TEXT [ portuguese_brazilian ] = "Nível" ;
+ TEXT [ portuguese ] = "Nível " ;
+ TEXT [ finnish ] = "Taso" ;
+ TEXT [ danish ] = "Niveau" ;
+ TEXT [ french ] = "Niveau" ;
+ TEXT [ swedish ] = "Nivå " ;
+ TEXT [ dutch ] = "Niveau" ;
+ TEXT [ spanish ] = "Nivel " ;
+ TEXT [ english_us ] = "Layer " ;
+ TEXT[ chinese_simplified ] = "¼¶";
+ TEXT[ russian ] = "Ñëîé";
+ TEXT[ polish ] = "Poziom ";
+ TEXT[ japanese ] = "ÚÍÞÙ";
+ TEXT[ chinese_traditional ] = "¯Å";
+ TEXT[ arabic ] = "ÇáãÓÊæì ";
+ TEXT[ greek ] = "Åðßðåäï";
+ TEXT[ korean ] = "°èÃþ";
+ TEXT[ turkish ] = "Düzey";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_URLPROMPT
+{
+ TEXT = "~URL" ;
+ TEXT [ English ] = "~URL" ;
+ Text [ english_us ] = "~URL" ;
+ Text [ italian ] = "~URL" ;
+ Text [ spanish ] = "~URL" ;
+ Text [ french ] = "~URL" ;
+ Text [ dutch ] = "~URL" ;
+ Text [ swedish ] = "~URL" ;
+ Text [ danish ] = "URL" ;
+ Text [ portuguese ] = "~URL" ;
+ Text [ portuguese_brazilian ] = "~URL" ;
+ Text[ chinese_simplified ] = "~URL";
+ Text[ russian ] = "~URL";
+ Text[ polish ] = "URL";
+ Text[ japanese ] = "URL(~U)";
+ Text[ chinese_traditional ] = "~URL";
+ Text[ arabic ] = "URL~";
+ Text[ greek ] = "URL";
+ Text[ korean ] = "~URL";
+ Text[ turkish ] = "~URL";
+ Text[ language_user1 ] = " ";
+};
+String STR_ALL_DATABASE
+{
+ TEXT = "<Alle>" ;
+ TEXT [ English ] = "<All>" ;
+ Text [ dutch ] = "<Alle>" ;
+ Text [ english_us ] = "<All>" ;
+ Text [ italian ] = "<Tutti>" ;
+ Text [ spanish ] = "<Todos>" ;
+ Text [ french ] = "<Toutes>" ;
+ Text [ swedish ] = "<Alla>" ;
+ Text [ danish ] = "<Alle>" ;
+ Text [ portuguese ] = "<Todos>" ;
+ Text [ portuguese_brazilian ] = "<Alle>" ;
+ 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 ] = " ";
+};
+ImageButton BTN_FLDEDT_PREV
+{
+ Pos = MAP_APPFONT ( 263 , 115 ) ;
+ Size = MAP_APPFONT ( 24 , 14 ) ;
+ TabStop = TRUE ;
+ SYMBOL = IMAGEBUTTON_PREV ;
+ Helpid = HID_DLG_FLDEDT_PREV ;
+};
+ImageButton BTN_FLDEDT_NEXT
+{
+ Pos = MAP_APPFONT ( 294 , 115 ) ;
+ Size = MAP_APPFONT ( 24 , 14 ) ;
+ TabStop = TRUE ;
+ SYMBOL = IMAGEBUTTON_NEXT ;
+ Helpid = HID_DLG_FLDEDT_NEXT ;
+};
+PushButton PB_FLDEDT_ADDRESS
+{
+ TEXT = "Bearbeiten" ;
+ TEXT [ English ] = "Edit" ;
+ Pos = MAP_APPFONT ( 294 , 100 ) ;
+ Size = MAP_APPFONT ( 24 , 14 ) ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ Text [ english_us ] = "Edit" ;
+ Text [ portuguese_brazilian ] = "Bearbeiten" ;
+ Text [ swedish ] = "Redigera" ;
+ Text [ danish ] = "Rediger" ;
+ Text [ italian ] = "Modifica" ;
+ Text [ spanish ] = "Editar" ;
+ Text [ french ] = "Modifier" ;
+ Text [ dutch ] = "Bewerken" ;
+ Text [ portuguese ] = "Editar" ;
+ Helpid = HID_DLG_FLDEDT_ADDRESS ;
+ Text[ chinese_simplified ] = "±à¼­";
+ Text[ russian ] = "Ïðàâêà";
+ Text[ polish ] = "Edycja";
+ Text[ japanese ] = "•ÒW";
+ Text[ chinese_traditional ] = "½s¿è";
+ Text[ arabic ] = "ÊÍÑíÑ";
+ Text[ greek ] = "Åðåîåñãáóßá";
+ Text[ korean ] = "ÆíÁý";
+ Text[ turkish ] = "Düzenle";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/fldui/fldvar.cxx b/sw/source/ui/fldui/fldvar.cxx
new file mode 100644
index 000000000000..2b5f7b964a1f
--- /dev/null
+++ b/sw/source/ui/fldui/fldvar.cxx
@@ -0,0 +1,1562 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldvar.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+
+#ifndef _LINKMGR_HXX //autogen
+#include <so3/linkmgr.hxx>
+#endif
+
+#ifndef _USRFLD_HXX
+#include <usrfld.hxx>
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx>
+#endif
+#ifndef _DDEFLD_HXX
+#include <ddefld.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _FLDVAR_HXX
+#include <fldvar.hxx>
+#endif
+
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _FLDUI_HRC
+#include <fldui.hrc>
+#endif
+#ifndef _FLDTDLG_HRC
+#include <fldtdlg.hrc>
+#endif
+
+#define USER_DATA_VERSION_1 "1"
+#define USER_DATA_VERSION USER_DATA_VERSION_1
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldVarPage::SwFldVarPage(Window* pParent, const SfxItemSet& rCoreSet ) :
+ SwFldPage ( pParent, SW_RES( TP_FLD_VAR ), rCoreSet ),
+ aTypeFT (this, SW_RES(FT_VARTYPE)),
+ aTypeLB (this, SW_RES(LB_VARTYPE)),
+ aSelectionFT (this, SW_RES(FT_VARSELECTION)),
+ aSelectionLB (this, SW_RES(LB_VARSELECTION)),
+ aNameFT (this, SW_RES(FT_VARNAME)),
+ aNameED (this, SW_RES(ED_VARNAME)),
+ aValueFT (this, SW_RES(FT_VARVALUE)),
+ aValueED (this, SW_RES(ED_VARVALUE)),
+ aFormatFT (this, SW_RES(FT_VARFORMAT)),
+ aNumFormatLB (this, SW_RES(LB_VARNUMFORMAT)),
+ aFormatLB (this, SW_RES(LB_VARFORMAT)),
+ aChapterHeaderFT(this, SW_RES(FT_VARCHAPTERHEADER)),
+ aChapterLevelFT (this, SW_RES(FT_VARCHAPTERLEVEL)),
+ aChapterLevelLB (this, SW_RES(LB_VARCHAPTERLEVEL)),
+ aInvisibleCB (this, SW_RES(CB_VARINVISIBLE)),
+ aSeparatorFT (this, SW_RES(FT_VARSEPARATOR)),
+ aSeparatorED (this, SW_RES(ED_VARSEPARATOR)),
+ aNewDelTBX (this, SW_RES(TBX_VARNEWDEL)),
+ bInit (TRUE)
+{
+ FreeResource();
+
+ aNewDelTBX.SetSizePixel( aNewDelTBX.CalcWindowSizePixel() );
+
+ long nDelta = ( aValueED.GetSizePixel().Height() -
+ aNewDelTBX.GetSizePixel().Height() ) / 2;
+ Point aNewPnt = aNewDelTBX.GetPosPixel();
+ aNewPnt.Y() += nDelta;
+ aNewDelTBX.SetPosPixel( aNewPnt );
+
+ sOldValueFT = aValueFT.GetText();
+ sOldNameFT = aNameFT.GetText();
+
+ for (USHORT i = 1; i <= MAXLEVEL; i++)
+ aChapterLevelLB.InsertEntry(String::CreateFromInt32(i));
+
+ aChapterLevelLB.SelectEntryPos(0);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+__EXPORT SwFldVarPage::~SwFldVarPage()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void __EXPORT SwFldVarPage::Reset(const SfxItemSet& rSet)
+{
+ SavePos(&aTypeLB);
+
+ Init(); // Allgemeine initialisierung
+
+ aTypeLB.SetUpdateMode(FALSE);
+ aTypeLB.Clear();
+
+ USHORT nPos, nTypeId;
+
+ if (!IsFldEdit())
+ {
+ // TypeListBox initialisieren
+ const SwFldGroupRgn& rRg = GetFldMgr().GetGroupRange(IsFldDlgHtmlMode(), GetGroup());
+
+ for (short i = rRg.nStart; i < rRg.nEnd; ++i)
+ {
+ nTypeId = GetFldMgr().GetTypeId(i);
+
+#ifndef DDE_AVAILABLE
+ if (nTypeId != TYP_DDEFLD)
+#endif
+ { // Nur unter WIN, WNT und OS/2 DDE-Fields
+ nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(i));
+ aTypeLB.SetEntryData(nPos, (void*)nTypeId);
+ }
+ }
+ }
+ else
+ {
+ nTypeId = GetCurField()->GetTypeId();
+ if (nTypeId == TYP_SETINPFLD)
+ nTypeId = TYP_INPUTFLD;
+ nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(GetFldMgr().GetPos(nTypeId)));
+ aTypeLB.SetEntryData(nPos, (void*)nTypeId);
+ }
+
+ // alte Pos selektieren
+ RestorePos(&aTypeLB);
+
+ aTypeLB.SetDoubleClickHdl (LINK(this, SwFldVarPage, InsertHdl));
+ aTypeLB.SetSelectHdl (LINK(this, SwFldVarPage, TypeHdl));
+ aSelectionLB.SetSelectHdl (LINK(this, SwFldVarPage, SubTypeHdl));
+ aSelectionLB.SetDoubleClickHdl (LINK(this, SwFldVarPage, InsertHdl));
+ aFormatLB.SetDoubleClickHdl (LINK(this, SwFldVarPage, InsertHdl));
+ aNumFormatLB.SetDoubleClickHdl (LINK(this, SwFldVarPage, InsertHdl));
+ aNameED.SetModifyHdl (LINK(this, SwFldVarPage, ModifyHdl));
+ aValueED.SetModifyHdl (LINK(this, SwFldVarPage, ModifyHdl));
+ aNewDelTBX.SetClickHdl (LINK(this, SwFldVarPage, TBClickHdl));
+ aChapterLevelLB.SetSelectHdl (LINK(this, SwFldVarPage, ChapterHdl));
+ aSeparatorED.SetModifyHdl (LINK(this, SwFldVarPage, SeparatorHdl));
+
+ if( !IsRefresh() )
+ {
+ String sUserData = GetUserData();
+ if(!IsRefresh() && sUserData.GetToken(0, ';').EqualsIgnoreCaseAscii(USER_DATA_VERSION_1))
+ {
+ String sVal = sUserData.GetToken(1, ';');
+ USHORT nVal = sVal.ToInt32();
+ if(nVal != USHRT_MAX)
+ {
+ for(USHORT i = 0; i < aTypeLB.GetEntryCount(); i++)
+ if(nVal == (USHORT)(ULONG)aTypeLB.GetEntryData(i))
+ {
+ aTypeLB.SelectEntryPos(i);
+ break;
+ }
+ }
+ }
+ }
+ TypeHdl(0);
+
+ aTypeLB.SetUpdateMode(TRUE);
+
+ if (IsFldEdit())
+ {
+ aSelectionLB.SaveValue();
+ aFormatLB.SaveValue();
+ nOldFormat = aNumFormatLB.GetFormat();
+ aNameED.SaveValue();
+ aValueED.SaveValue();
+ aInvisibleCB.SaveValue();
+ aChapterLevelLB.SaveValue();
+ aSeparatorED.SaveValue();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldVarPage, TypeHdl, ListBox *, pBox )
+{
+ // Alte ListBoxPos sichern
+ const USHORT nOld = GetTypeSel();
+
+ // Aktuelle ListBoxPos
+ SetTypeSel(aTypeLB.GetSelectEntryPos());
+
+ if(GetTypeSel() == LISTBOX_ENTRY_NOTFOUND)
+ {
+ SetTypeSel(0);
+ aTypeLB.SelectEntryPos(0);
+ }
+
+ if (nOld != GetTypeSel() || nOld == LISTBOX_ENTRY_NOTFOUND)
+ {
+ bInit = TRUE;
+ if (nOld != LISTBOX_ENTRY_NOTFOUND)
+ {
+ aNameED.SetText(aEmptyStr);
+ aValueED.SetText(aEmptyStr);
+ }
+
+ aValueED.EnableDrop(FALSE);
+ UpdateSubType(); // Auswahl-Listboxen initialisieren
+ }
+
+ bInit = FALSE;
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldVarPage, SubTypeHdl, ListBox *, pBox )
+{
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+ USHORT nSelPos = aSelectionLB.GetSelectEntryPos();
+
+ if (nSelPos != LISTBOX_ENTRY_NOTFOUND)
+ nSelPos = (USHORT)(ULONG)aSelectionLB.GetEntryData(nSelPos);
+
+ if (IsFldEdit() && (!pBox || bInit))
+ {
+ if (nTypeId != TYP_FORMELFLD)
+ aNameED.SetText(GetFldMgr().GetCurFldPar1());
+
+ aValueED.SetText(GetFldMgr().GetCurFldPar2());
+ }
+
+ if (aNameFT.GetText() != sOldNameFT)
+ aNameFT.SetText(sOldNameFT);
+ if (aValueFT.GetText() != sOldValueFT)
+ aValueFT.SetText(sOldValueFT);
+
+ aNumFormatLB.SetUpdateMode(FALSE);
+ aFormatLB.SetUpdateMode(FALSE);
+ FillFormatLB(nTypeId);
+
+ USHORT nSize = aFormatLB.GetEntryCount();
+
+ BOOL bValue = FALSE, bName = FALSE, bNumFmt = FALSE,
+ bInvisible = FALSE, bSeparator = FALSE, bChapterLevel = FALSE;
+ BOOL bFormat = nSize != 0;
+
+ switch (nTypeId)
+ {
+ case TYP_USERFLD:
+ {
+ // Benutzertyp aendern oder anlegen
+ SwUserFieldType* pType = (SwUserFieldType*)
+ GetFldMgr().GetFldType(RES_USERFLD, nSelPos);
+
+ if (pType)
+ {
+ if (!IsFldEdit())
+ {
+ if (pBox || (bInit && !IsRefresh())) // Nur bei Interaktion mit Maus
+ {
+ aNameED.SetText(pType->GetName());
+
+ if (pType->GetType() == UF_STRING)
+ {
+ aValueED.SetText(pType->GetContent());
+ aNumFormatLB.SelectEntryPos(0);
+ }
+ else
+ aValueED.SetText(pType->GetContent());
+// aValueED.SetText(pType->GetContent(aNumFormatLB.GetFormat()));
+ }
+ }
+ else
+ aValueED.SetText(pType->GetContent());
+ }
+ else
+ {
+ if (pBox) // Nur bei Interaktion mit Maus
+ {
+ aNameED.SetText(aEmptyStr);
+ aValueED.SetText(aEmptyStr);
+ }
+ }
+ bValue = bName = bNumFmt = bInvisible = TRUE;
+
+ aValueED.EnableDrop(TRUE);
+ break;
+ }
+
+ case TYP_SETFLD:
+ bValue = TRUE;
+
+ bNumFmt = bInvisible = TRUE;
+
+ if (!IsFldDlgHtmlMode())
+ bName = TRUE;
+ else
+ {
+ aNumFormatLB.Clear();
+ USHORT nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_SETVAR_TEXT), 0);
+ aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX);
+ aNumFormatLB.SelectEntryPos(0);
+ }
+ // gibt es ein entprechendes SetField
+ if (IsFldEdit() || pBox) // Nur bei Interaktion mit Maus
+ {
+ if (nSelPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ String sName(aSelectionLB.GetSelectEntry());
+ aNameED.SetText(sName);
+
+ if (!IsFldDlgHtmlMode())
+ {
+ SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*)
+ ::GetActiveView()->GetWrtShell().
+ GetFldType(RES_SETEXPFLD, sName);
+
+ if (pSetTyp && pSetTyp->GetType() == GSE_STRING)
+ aNumFormatLB.SelectEntryPos(0); // Textuell
+ }
+ }
+ }
+ if (IsFldEdit())
+ {
+ // GetFormula fuehrt bei Datumsformaten zu Problemen,
+ // da nur der numerische Wert ohne Formatierung returned wird.
+ // Muss aber verwendet werden, da sonst bei GetPar2 nur der vom
+ // Kalkulator errechnete Wert angezeigt werden wuerde
+ // (statt test2 = test + 1)
+ aValueED.SetText(((SwSetExpField*)GetCurField())->GetFormula());
+ }
+ aValueED.EnableDrop(TRUE);
+ break;
+
+ case TYP_FORMELFLD:
+ {
+ bValue = TRUE;
+ bNumFmt = TRUE;
+ aValueFT.SetText(SW_RESSTR(STR_FORMULA));
+ aValueED.EnableDrop(TRUE);
+ }
+ break;
+
+ case TYP_GETFLD:
+ {
+ if (!IsFldEdit())
+ {
+ aNameED.SetText(aEmptyStr);
+ aValueED.SetText(aEmptyStr);
+ }
+
+ if (nSelPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ String sName(aSelectionLB.GetSelectEntry());
+ if (!IsFldEdit())
+ aNameED.SetText(sName);
+
+ // gibt es ein entprechendes SetField
+ SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*)
+ ::GetActiveView()->GetWrtShell().
+ GetFldType(RES_SETEXPFLD, sName);
+
+ if(pSetTyp)
+ {
+ if (pSetTyp->GetType() & GSE_STRING) // Textuell?
+ bFormat = TRUE;
+ else // Numerisch
+ bNumFmt = TRUE;
+ }
+ }
+ else
+ bFormat = FALSE;
+
+ EnableInsert(bFormat|bNumFmt);
+ }
+ break;
+
+ case TYP_INPUTFLD:
+ aValueFT.SetText(SW_RESSTR(STR_PROMPT));
+
+ if (nSelPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ bValue = bNumFmt = TRUE;
+
+ String sName;
+
+ sName = aSelectionLB.GetSelectEntry();
+ aNameED.SetText( sName );
+
+ // User- oder SetField ?
+ USHORT nInpType = 0;
+ nInpType = GetFldMgr().GetFldType(RES_USERFLD, sName) ? 0 : TYP_SETINPFLD;
+
+ if (nInpType) // SETEXPFLD
+ {
+ // gibt es ein entprechendes SetField
+ SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*)
+ GetFldMgr().GetFldType(RES_SETEXPFLD, sName);
+
+ if(pSetTyp)
+ {
+ if (pSetTyp->GetType() == GSE_STRING) // Textuell?
+ {
+ aNumFormatLB.Clear();
+
+ USHORT nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_USERVAR_TEXT), 0);
+ aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX);
+ aNumFormatLB.SelectEntryPos(0);
+ }
+ }
+ if (IsFldEdit() && (!pBox || bInit))
+ aValueED.SetText(((SwSetExpField*)GetCurField())->GetPromptText());
+ }
+ else // USERFLD
+ bFormat = bNumFmt = FALSE;
+ }
+ break;
+
+ case TYP_DDEFLD:
+ aValueFT.SetText(SW_RESSTR(STR_DDE_CMD));
+
+ if (IsFldEdit() || pBox) // Nur bei Interaktion mit Maus
+ {
+ if (nSelPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ SwDDEFieldType* pType =
+ (SwDDEFieldType*) GetFldMgr().GetFldType(RES_DDEFLD, nSelPos);
+
+ if(pType)
+ {
+ aNameED.SetText(pType->GetName());
+
+ //JP 28.08.95: DDE-Topics/-Items koennen Blanks in ihren
+ // Namen haben! Wird hier noch nicht beachtet
+ String sCmd( pType->GetCmd() );
+ USHORT nTmpPos = sCmd.SearchAndReplace( cTokenSeperator, ' ' );
+ sCmd.SearchAndReplace( cTokenSeperator, ' ', nTmpPos );
+
+ aValueED.SetText( sCmd );
+ aFormatLB.SelectEntryPos(pType->GetType());
+ }
+ }
+ }
+ bName = bValue = TRUE;
+ break;
+
+ case TYP_SEQFLD:
+ {
+ // aNumRB.Check(TRUE);
+ bName = bValue = bSeparator = bChapterLevel = TRUE;
+
+ SwFieldType* pFldTyp;
+ if( IsFldEdit() )
+ pFldTyp = GetCurField()->GetTyp();
+ else
+ {
+ String sFldTypeName( aSelectionLB.GetEntry( nSelPos ));
+ if( sFldTypeName.Len() )
+ pFldTyp = GetFldMgr().GetFldType( RES_SETEXPFLD,
+ sFldTypeName );
+ else
+ pFldTyp = 0;
+ }
+
+ if( IsFldEdit() )
+ aValueED.SetText( ((SwSetExpField*)GetCurField())->
+ GetFormula() );
+
+ if( IsFldEdit() || pBox ) // Nur bei Interaktion mit Maus
+ aNameED.SetText( aSelectionLB.GetSelectEntry() );
+
+ if( pFldTyp )
+ {
+ BYTE nLevel = ((SwSetExpFieldType*)pFldTyp)->GetOutlineLvl();
+ if( 0x7f == nLevel )
+ aChapterLevelLB.SelectEntryPos( 0 );
+ else
+ aChapterLevelLB.SelectEntryPos( nLevel + 1 );
+ sal_Unicode cDelim = ((SwSetExpFieldType*)pFldTyp)->GetDelimiter();
+ if(cDelim)
+ aSeparatorED.SetText( cDelim );
+ else
+ aSeparatorED.SetText( aEmptyStr );
+ ChapterHdl();
+ }
+ }
+ break;
+
+ case TYP_SETREFPAGEFLD:
+ {
+ bValue = FALSE;
+ aValueFT.SetText( SW_RESSTR( STR_OFFSET ));
+
+ if (IsFldEdit() || pBox) // Nur bei Interaktion mit Maus
+ aNameED.SetText(aEmptyStr);
+
+ if (nSelPos != 0 && nSelPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ bValue = TRUE; // SubType OFF - kennt keinen Offset
+ if (IsFldEdit())
+ aValueED.SetText(String::CreateFromInt32(((SwRefPageSetField*)GetCurField())->GetOffset()));
+ }
+ }
+ break;
+
+ case TYP_GETREFPAGEFLD:
+ aNameED.SetText(aEmptyStr);
+ aValueED.SetText(aEmptyStr);
+ break;
+ }
+
+ aNumFormatLB.Show(bNumFmt);
+ aFormatLB.Show(!bNumFmt);
+
+ if (IsFldEdit())
+ bName = FALSE;
+
+ aFormatLB.Enable(bFormat);
+ aFormatFT.Enable(bFormat|bNumFmt);
+ aNameFT.Enable(bName);
+ aNameED.Enable(bName);
+ aValueFT.Enable(bValue);
+ aValueED.Enable(bValue);
+
+ Size aSz(aFormatLB.GetSizePixel());
+
+ if (bChapterLevel)
+ aSz.Height() = aFormatLB.LogicToPixel(Size(1, 37), MAP_APPFONT).Height();
+ else
+ aSz.Height() = aFormatLB.LogicToPixel(Size(1, 71), MAP_APPFONT).Height();
+
+ aFormatLB.SetSizePixel(aSz);
+
+ aInvisibleCB.Show(!bSeparator);
+ aSeparatorFT.Show(bSeparator);
+ aSeparatorED.Show(bSeparator);
+ aChapterHeaderFT.Show(bChapterLevel);
+ aChapterLevelFT.Show(bChapterLevel);
+ aChapterLevelLB.Show(bChapterLevel);
+ aInvisibleCB.Enable(bInvisible);
+
+ ModifyHdl(); // Anwenden/Einfuegen/Loeschen Status update
+
+ aNumFormatLB.SetUpdateMode(TRUE);
+ aFormatLB.SetUpdateMode(TRUE);
+
+ if(aSelectionLB.IsCallAddSelection())
+ {
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ switch (nTypeId)
+ {
+ case TYP_FORMELFLD:
+ {
+ USHORT nSelPos = aSelectionLB.GetSelectEntryPos();
+
+ if (nSelPos != LISTBOX_ENTRY_NOTFOUND)
+ nSelPos = (USHORT)(ULONG)aSelectionLB.GetEntryData(nSelPos);
+
+ if (nSelPos != LISTBOX_ENTRY_NOTFOUND && pBox && !bInit)
+ {
+ aValueED.ReplaceSelected(aSelectionLB.GetSelectEntry());
+ ModifyHdl();
+ }
+ }
+ break;
+ }
+ aSelectionLB.ResetCallAddSelection();
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Typen in der SelectionBox erneuern
+ --------------------------------------------------------------------*/
+
+void SwFldVarPage::UpdateSubType()
+{
+ String sOldSel;
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ SetSelectionSel(aSelectionLB.GetSelectEntryPos());
+ if(GetSelectionSel() != LISTBOX_ENTRY_NOTFOUND)
+ sOldSel = aSelectionLB.GetEntry(GetSelectionSel());
+
+ // Auswahl-Listbox fuellen
+ aSelectionLB.SetUpdateMode(FALSE);
+ aSelectionLB.Clear();
+
+ SvStringsDtor& rLst = GetFldMgr().GetSubTypes(nTypeId);
+ USHORT nCount = rLst.Count();
+ USHORT nPos;
+
+ for (USHORT i = 0; i < nCount; ++i)
+ {
+ if (nTypeId != TYP_INPUTFLD || i)
+ {
+ if (!IsFldEdit())
+ {
+ nPos = aSelectionLB.InsertEntry(*rLst[i]);
+ aSelectionLB.SetEntryData(nPos, (void*)i);
+ }
+ else
+ {
+ BOOL bInsert = FALSE;
+
+ switch (nTypeId)
+ {
+ case TYP_INPUTFLD:
+ if (*rLst[i] == GetCurField()->GetPar1())
+ bInsert = TRUE;
+ break;
+
+ case TYP_FORMELFLD:
+ bInsert = TRUE;
+ break;
+
+ case TYP_GETFLD:
+ if (*rLst[i] == ((SwFormulaField*)GetCurField())->GetFormula())
+ bInsert = TRUE;
+ break;
+
+ case TYP_SETFLD:
+ case TYP_USERFLD:
+ if (*rLst[i] == GetCurField()->GetTyp()->GetName())
+ {
+ bInsert = TRUE;
+ if (GetCurField()->GetSubType() & SUB_INVISIBLE)
+ aInvisibleCB.Check();
+ }
+ break;
+
+ case TYP_SETREFPAGEFLD:
+ if ((((SwRefPageSetField*)GetCurField())->IsOn() && i) ||
+ (!((SwRefPageSetField*)GetCurField())->IsOn() && !i))
+ sOldSel = *rLst[i];
+
+ // Alle Eintr„ge zur Auswahl zulassen:
+ nPos = aSelectionLB.InsertEntry(*rLst[i]);
+ aSelectionLB.SetEntryData(nPos, (void*)i);
+ break;
+
+ default:
+ if (*rLst[i] == GetCurField()->GetPar1())
+ bInsert = TRUE;
+ break;
+ }
+ if (bInsert)
+ {
+ nPos = aSelectionLB.InsertEntry(*rLst[i]);
+ aSelectionLB.SetEntryData(nPos, (void*)i);
+ if (nTypeId != TYP_FORMELFLD)
+ break;
+ }
+ }
+ }
+ }
+
+ BOOL bEnable = aSelectionLB.GetEntryCount() != 0;
+ ListBox *pLB = 0;
+
+ if (bEnable)
+ {
+ aSelectionLB.SelectEntry(sOldSel);
+ if (!aSelectionLB.GetSelectEntryCount())
+ {
+ aSelectionLB.SelectEntryPos(0);
+ pLB = &aSelectionLB; // Alle Controls neu initialisieren
+ }
+ }
+
+ aSelectionLB.Enable( bEnable );
+ aSelectionFT.Enable( bEnable );
+
+ SubTypeHdl(pLB);
+ aSelectionLB.SetUpdateMode(TRUE);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFldVarPage::FillFormatLB(USHORT nTypeId)
+{
+ String sOldSel, sOldNumSel;
+ ULONG nOldNumFormat = 0;
+
+ USHORT nFormatSel = aFormatLB.GetSelectEntryPos();
+ if (nFormatSel != LISTBOX_ENTRY_NOTFOUND)
+ sOldSel = aFormatLB.GetEntry(nFormatSel);
+
+ USHORT nNumFormatSel = aNumFormatLB.GetSelectEntryPos();
+ if (nNumFormatSel != LISTBOX_ENTRY_NOTFOUND)
+ {
+ sOldNumSel = aNumFormatLB.GetEntry(nNumFormatSel);
+ nOldNumFormat = aNumFormatLB.GetFormat();
+ }
+
+ // Format-Listbox fuellen
+ aFormatLB.Clear();
+ aNumFormatLB.Clear();
+ BOOL bSpecialFmt = FALSE;
+
+ if( TYP_GETREFPAGEFLD != nTypeId )
+ {
+ if (IsFldEdit())
+ {
+ bSpecialFmt = GetCurField()->GetFormat() == ULONG_MAX || !GetCurField()->GetFormat();
+
+ if (!bSpecialFmt)
+ {
+ aNumFormatLB.SetDefFormat(GetCurField()->GetFormat());
+ sOldNumSel = aEmptyStr;
+ }
+ else
+ if (nTypeId == TYP_GETFLD || nTypeId == TYP_FORMELFLD)
+ aNumFormatLB.SetFormatType(NUMBERFORMAT_NUMBER);
+ }
+ else
+ {
+ if (nOldNumFormat && nOldNumFormat != ULONG_MAX)
+ aNumFormatLB.SetDefFormat(nOldNumFormat);
+ else
+ aNumFormatLB.SetFormatType(NUMBERFORMAT_NUMBER);
+ }
+ }
+
+ switch (nTypeId)
+ {
+ case TYP_USERFLD:
+ {
+ if (!IsFldEdit() || bSpecialFmt)
+ {
+ USHORT nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_MARK_TEXT), 0);
+ aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX);
+ nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_USERVAR_CMD), 1);
+ aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX);
+ }
+ }
+ break;
+
+ case TYP_SETFLD:
+ {
+ if (!IsFldEdit() || bSpecialFmt)
+ {
+ USHORT nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_SETVAR_TEXT), 0);
+ aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX);
+ }
+ }
+ break;
+
+ case TYP_FORMELFLD:
+ {
+ USHORT nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_GETVAR_NAME), 0);
+ aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX);
+ }
+ break;
+
+ case TYP_GETFLD:
+ {
+ USHORT nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_GETVAR_NAME), 0);
+ aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX);
+ }
+ break;
+ }
+
+ if (IsFldEdit() && bSpecialFmt)
+ {
+ if (nTypeId == TYP_USERFLD && (GetCurField()->GetSubType() & SUB_CMD))
+ aNumFormatLB.SelectEntryPos(1);
+ else
+ aNumFormatLB.SelectEntryPos(0);
+ }
+ else
+ {
+ if (!nOldNumFormat && (nNumFormatSel = aNumFormatLB.GetEntryPos(sOldNumSel)) != LISTBOX_ENTRY_NOTFOUND)
+ aNumFormatLB.SelectEntryPos(nNumFormatSel);
+ else if (nOldNumFormat && nOldNumFormat == ULONG_MAX)
+ aNumFormatLB.SelectEntry(sOldSel);
+ }
+
+ USHORT nSize = GetFldMgr().GetFormatCount(nTypeId, FALSE, IsFldDlgHtmlMode());
+
+ for (USHORT i = 0; i < nSize; i++)
+ {
+ USHORT nPos = aFormatLB.InsertEntry(GetFldMgr().GetFormatStr(nTypeId, i));
+ USHORT nFldId = GetFldMgr().GetFormatId( nTypeId, i );
+ aFormatLB.SetEntryData( nPos, (void*)nFldId );
+ if (IsFldEdit() && nFldId == GetCurField()->GetFormat())
+ aFormatLB.SelectEntryPos( nPos );
+ }
+
+ if (nSize && (!IsFldEdit() || !aFormatLB.GetSelectEntryCount()))
+ {
+ aFormatLB.SelectEntry(sOldSel);
+
+ if (!aFormatLB.GetSelectEntryCount())
+ {
+ aFormatLB.SelectEntry(SW_RESSTR(FMT_NUM_PAGEDESC));
+ if (!aFormatLB.GetSelectEntryCount())
+ {
+ aFormatLB.SelectEntry(SW_RESSTR(FMT_NUM_ARABIC));
+ if (!aFormatLB.GetSelectEntryCount())
+ aFormatLB.SelectEntryPos(0);
+ }
+ }
+ }
+
+ return nSize;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Modify
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldVarPage, ModifyHdl, Edit *, EMPTYARG )
+{
+ String sValue(aValueED.GetText());
+ BOOL bHasValue = sValue.Len() != 0;
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+ BOOL bInsert = FALSE, bApply = FALSE, bDelete = FALSE;
+
+ String sName(aNameED.GetText());
+ const USHORT nOldLen = sName.Len();
+ Selection aSel(aNameED.GetSelection());
+
+ if( nTypeId == TYP_DDEFLD ||
+ nTypeId == TYP_USERFLD ||
+ nTypeId == TYP_SETFLD ||
+ nTypeId == TYP_SEQFLD)
+ {
+ sName.EraseAllChars(' ');
+ sName.EraseAllChars('-');
+ }
+ const USHORT nLen = sName.Len();
+
+ if (nOldLen != nLen)
+ {
+ aNameED.SetText(sName);
+ aNameED.SetSelection(aSel); // Cursorpos restaurieren
+ }
+
+ // Buttons ueberpruefen
+ switch (nTypeId)
+ {
+ case TYP_DDEFLD:
+ {
+ // Gibts schon einen entsprechenden Type
+ bInsert = bApply = sName.Len() > 0;
+
+ SwFieldType* pType = GetFldMgr().GetFldType(RES_DDEFLD, sName);
+
+ if (pType)
+ bDelete = !::GetActiveView()->GetWrtShell().IsUsed( *pType );
+ }
+ break;
+
+ case TYP_USERFLD:
+ {
+ // Gibts schon einen entsprechenden Type
+ SwFieldType* pType = GetFldMgr().GetFldType(RES_USERFLD, sName);
+
+ if (pType)
+ bDelete = !::GetActiveView()->GetWrtShell().IsUsed( *pType );
+
+ pType = GetFldMgr().GetFldType(RES_SETEXPFLD, sName);
+ if (!pType) // Kein Namenskonflikt mit Variablen
+ {
+ // Benutzerfelder duerfen auch ohne Inhalt eingefuegt werden!
+ // Bug #56845
+ bInsert = bApply = sName.Len() > 0;
+ }
+ }
+ break;
+
+ default:
+ {
+ bInsert = TRUE;
+
+ if (nTypeId == TYP_SETFLD || nTypeId == TYP_SEQFLD)
+ {
+ SwSetExpFieldType* pFldType = (SwSetExpFieldType*)
+ GetFldMgr().GetFldType(RES_SETEXPFLD, sName);
+
+ if (pFldType)
+ {
+
+ SwWrtShell &rSh = ::GetActiveView()->GetWrtShell();
+ const SwFldTypes* p = rSh.GetDoc()->GetFldTypes();
+ USHORT i;
+
+ for (i = 0; i < INIT_FLDTYPES; i++)
+ {
+ SwFieldType* pType = (*p)[ i ];
+ if (pType == pFldType)
+ break;
+ }
+
+ if (i >= INIT_FLDTYPES && !rSh.IsUsed(*pFldType))
+ bDelete = TRUE;
+
+ if (nTypeId == TYP_SEQFLD && !(pFldType->GetType() & GSE_SEQ))
+ bInsert = FALSE;
+
+ if (nTypeId == TYP_SETFLD && (pFldType->GetType() & GSE_SEQ))
+ bInsert = FALSE;
+ }
+ if (GetFldMgr().GetFldType(RES_USERFLD, sName))
+ bInsert = FALSE;
+ }
+
+ if (nLen == 0 && (nTypeId == TYP_SETFLD || (!IsFldEdit() && nTypeId == TYP_GETFLD)))
+ bInsert = FALSE;
+
+ if ((nTypeId == TYP_SETFLD || nTypeId == TYP_FORMELFLD) && !bHasValue)
+ bInsert = FALSE;
+ }
+ break;
+ }
+
+ aNewDelTBX.EnableItem(BT_VARAPPLY, bApply);
+ aNewDelTBX.EnableItem(BT_VARDELETE, bDelete);
+ EnableInsert(bInsert);
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldVarPage, TBClickHdl, ToolBox *, pBox )
+{
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ switch (pBox->GetCurItemId())
+ {
+ case BT_VARDELETE:
+ {
+ if( nTypeId == TYP_USERFLD )
+ GetFldMgr().RemoveFldType(RES_USERFLD, aSelectionLB.GetSelectEntry());
+ else
+ {
+ USHORT nWhich;
+
+ switch(nTypeId)
+ {
+ case TYP_SETFLD:
+ case TYP_SEQFLD:
+ nWhich = RES_SETEXPFLD;
+ break;
+ default:
+ nWhich = RES_DDEFLD;
+ break;
+ }
+
+ GetFldMgr().RemoveFldType(nWhich, aSelectionLB.GetSelectEntry());
+ }
+
+ UpdateSubType();
+ ::GetActiveView()->GetWrtShell().SetModified();
+ }
+ break;
+
+ case BT_VARAPPLY:
+ {
+ String sName(aNameED.GetText()), sValue(aValueED.GetText());
+ SwFieldType* pType = 0;
+ USHORT nId;
+ USHORT nNumFormatPos = aNumFormatLB.GetSelectEntryPos();
+
+ switch (nTypeId)
+ {
+ case TYP_USERFLD: nId = RES_USERFLD; break;
+ case TYP_DDEFLD: nId = RES_DDEFLD; break;
+ case TYP_SETFLD: nId = RES_SETEXPFLD;break;
+ }
+ pType = GetFldMgr().GetFldType(nId, sName);
+
+ ULONG nFormat = aFormatLB.GetSelectEntryPos();
+ if (nFormat != LISTBOX_ENTRY_NOTFOUND)
+ nFormat = (ULONG)aFormatLB.GetEntryData((USHORT)nFormat);
+
+ if (pType) // Aendern
+ {
+ SwWrtShell &rSh = ::GetActiveView()->GetWrtShell();
+ rSh.StartAllAction();
+
+ if (nTypeId == TYP_USERFLD)
+ {
+ if (nNumFormatPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ ULONG nFmt = nNumFormatPos == 0 ? 0 : aNumFormatLB.GetFormat();
+ if (nFmt)
+ { // Sprache auf Office-Sprache umstellen, da String im Office
+ // Format vom Kalkulator erwartet wird und so in den Dlg
+ // eingegeben werden sollte
+ SvNumberFormatter* pFormatter = rSh.GetNumberFormatter();
+ nFmt = SwValueField::GetSystemFormat(rSh.GetNumberFormatter(), nFmt);
+ }
+ ((SwUserFieldType*)pType)->SetContent(aValueED.GetText(), nFmt);
+ ((SwUserFieldType*)pType)->SetType(
+ nNumFormatPos == 0 ? GSE_STRING : GSE_EXPR );
+ }
+ }
+ else
+ {
+ if (nFormat != LISTBOX_ENTRY_NOTFOUND)
+ {
+ //JP 28.08.95: DDE-Topics/-Items koennen Blanks in ihren
+ // Namen haben! Wird hier noch nicht beachtet.
+ USHORT nTmpPos = sValue.SearchAndReplace( ' ', cTokenSeperator );
+ sValue.SearchAndReplace( ' ', cTokenSeperator, nTmpPos );
+ ((SwDDEFieldType*)pType)->SetCmd(sValue);
+ ((SwDDEFieldType*)pType)->SetType((USHORT)nFormat);
+ }
+ }
+ pType->UpdateFlds();
+
+ ::GetActiveView()->GetWrtShell().EndAllAction();
+ }
+ else // Neu
+ {
+ if(nTypeId == TYP_USERFLD)
+ {
+ SwUserFieldType aType( ::GetActiveView()->GetWrtShellPtr()->GetDoc(), sName );
+
+ if (nNumFormatPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ aType.SetType(nNumFormatPos == 0 ? GSE_STRING : GSE_EXPR);
+ aType.SetContent( sValue, nNumFormatPos == 0 ? 0 : aNumFormatLB.GetFormat() );
+ aSelectionLB.InsertEntry(sName);
+ aSelectionLB.SelectEntry(sName);
+ GetFldMgr().InsertFldType( aType ); // Userfld Neu
+ }
+ }
+ else
+ {
+ if (nFormat != LISTBOX_ENTRY_NOTFOUND)
+ {
+ //JP 28.08.95: DDE-Topics/-Items koennen Blanks in ihren
+ // Namen haben! Wird hier noch nicht beachtet.
+ USHORT nTmpPos = sValue.SearchAndReplace( ' ', cTokenSeperator );
+ sValue.SearchAndReplace( ' ', cTokenSeperator, nTmpPos );
+
+ SwDDEFieldType aType(sName, sValue, (USHORT)nFormat);
+ aSelectionLB.InsertEntry(sName);
+ aSelectionLB.SelectEntry(sName);
+ GetFldMgr().InsertFldType(aType); // DDE-Feld Neu
+ }
+ }
+ }
+ if (IsFldEdit())
+ GetFldMgr().GetCurFld(); // FieldManager Updaten
+
+ UpdateSubType();
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldVarPage, ChapterHdl, ListBox *, pLB )
+{
+ BOOL bEnable = aChapterLevelLB.GetSelectEntryPos() != 0;
+
+ aSeparatorED.Enable(bEnable);
+ aSeparatorFT.Enable(bEnable);
+ SeparatorHdl();
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldVarPage, SeparatorHdl, Edit *, pED )
+{
+ BOOL bEnable = aSeparatorED.GetText().Len() != 0 ||
+ aChapterLevelLB.GetSelectEntryPos() == 0;
+ EnableInsert(bEnable);
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+BOOL __EXPORT SwFldVarPage::FillItemSet(SfxItemSet& rSet)
+{
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ String aVal(aValueED.GetText());
+ String aName(aNameED.GetText());
+
+ USHORT nSubType = aSelectionLB.GetSelectEntryPos();
+ if(nSubType == LISTBOX_ENTRY_NOTFOUND)
+ nSubType = 0;
+ else
+ nSubType = (USHORT)(ULONG)aSelectionLB.GetEntryData(nSubType);
+
+ ULONG nFormat;
+
+ if (!aNumFormatLB.IsVisible())
+ {
+ nFormat = aFormatLB.GetSelectEntryPos();
+
+ if(nFormat == LISTBOX_ENTRY_NOTFOUND)
+ nFormat = 0;
+ else
+ nFormat = (ULONG)aFormatLB.GetEntryData((USHORT)nFormat);
+ }
+ else
+ {
+ nFormat = aNumFormatLB.GetFormat();
+
+ if (nFormat && nFormat != ULONG_MAX)
+ {
+ // Sprache auf Office-Sprache umstellen, da String im Office-
+ // Format vom Kalkulator erwartet wird und so in den Dlg
+ // eingegeben werden sollte
+ SwWrtShell &rSh = ::GetActiveView()->GetWrtShell();
+ SvNumberFormatter* pFormatter = rSh.GetNumberFormatter();
+
+ nFormat = SwValueField::GetSystemFormat(rSh.GetNumberFormatter(), nFormat);
+ }
+ }
+ sal_Unicode cSeparator = ' ';
+ switch (nTypeId)
+ {
+ case TYP_USERFLD:
+ {
+ nSubType = (nFormat == ULONG_MAX) ? GSE_STRING : GSE_EXPR;
+
+ if (nFormat == ULONG_MAX && aNumFormatLB.GetSelectEntry() == SW_RESSTR(FMT_USERVAR_CMD))
+ nSubType |= SUB_CMD;
+
+ if (aInvisibleCB.IsChecked())
+ nSubType |= SUB_INVISIBLE;
+ break;
+ }
+ case TYP_FORMELFLD:
+ {
+ nSubType = GSE_FORMULA;
+ if (aNumFormatLB.IsVisible() && nFormat == ULONG_MAX)
+ nSubType |= SUB_CMD;
+ break;
+ }
+ case TYP_GETFLD:
+ {
+ nSubType &= 0xff00;
+ if (aNumFormatLB.IsVisible() && nFormat == ULONG_MAX)
+ nSubType |= SUB_CMD;
+ break;
+ }
+ case TYP_INPUTFLD:
+ {
+ SwFieldType* pType = GetFldMgr().GetFldType(RES_USERFLD, aName);
+ nSubType = (nSubType & 0xff00) | ((pType) ? INP_USR : INP_VAR);
+ break;
+ }
+
+ case TYP_SETFLD:
+ {
+ if (IsFldDlgHtmlMode())
+ {
+ nSubType = 0x0100;
+ nSubType = (nSubType & 0xff00) | GSE_STRING;
+ }
+ else
+ nSubType = (nSubType & 0xff00) | ((nFormat == ULONG_MAX) ? GSE_STRING : GSE_EXPR);
+
+ if (aInvisibleCB.IsChecked())
+ nSubType |= SUB_INVISIBLE;
+ break;
+ }
+ case TYP_SEQFLD:
+ {
+ // nSubType = GSE_SEQ; // GSE_SEQ wird im Fldmgr fest gesetzt, kann also entfallen
+ nSubType = aChapterLevelLB.GetSelectEntryPos();
+ if (nSubType == 0)
+ nSubType = 0x7f;
+ else
+ {
+ nSubType--;
+ String sSeparator(aSeparatorED.GetText().GetChar(0));
+ cSeparator = sSeparator.Len() ? sSeparator.GetChar(0) : ' ';
+ //nSubType |= (USHORT)(((BYTE)) << 8);
+ }
+ break;
+ }
+ case TYP_GETREFPAGEFLD:
+ if( SVX_NUM_CHAR_SPECIAL == nFormat )
+ aVal = aValueED.GetText();
+ break;
+ }
+
+ if (!IsFldEdit() ||
+ aNameED.GetSavedValue() != aNameED.GetText() ||
+ aValueED.GetSavedValue() != aValueED.GetText() ||
+ aSelectionLB.GetSavedValue() != aSelectionLB.GetSelectEntryPos() ||
+ aFormatLB.GetSavedValue() != aFormatLB.GetSelectEntryPos() ||
+ nOldFormat != aNumFormatLB.GetFormat() ||
+ aInvisibleCB.GetState() != aInvisibleCB.GetSavedValue() ||
+ aChapterLevelLB.GetSavedValue() != aChapterLevelLB.GetSelectEntryPos() ||
+ aSeparatorED.GetSavedValue() != aSeparatorED.GetText())
+ {
+ InsertFld( nTypeId, nSubType, aName, aVal, nFormat, cSeparator );
+ }
+
+ UpdateSubType();
+
+ return FALSE;
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxTabPage* __EXPORT SwFldVarPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return ( new SwFldVarPage( pParent, rAttrSet ) );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFldVarPage::GetGroup()
+{
+ return GRP_VAR;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SelectionListBox::SelectionListBox( SwFldVarPage* pDialog, const ResId& rResId ) :
+ ListBox (pDialog, rResId),
+ pDlg (pDialog),
+ bCallAddSelection(FALSE)
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+long SelectionListBox::PreNotify( NotifyEvent& rNEvt )
+{
+ long nHandled = ListBox::PreNotify( rNEvt );
+ //BOOL bAddSel = FALSE;
+ if ( rNEvt.GetType() == EVENT_KEYUP )
+ {
+ const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
+ const KeyCode aKeyCode = pKEvt->GetKeyCode();
+ const USHORT nModifier = aKeyCode.GetModifier();
+ if( aKeyCode.GetCode() == KEY_SPACE && !nModifier)
+// bAddSel = TRUE;
+ bCallAddSelection = TRUE;
+ }
+ if ( rNEvt.GetType() == EVENT_MOUSEBUTTONDOWN )
+ {
+ const MouseEvent* pMEvt = rNEvt.GetMouseEvent();
+
+ if (pMEvt && (pMEvt->IsMod1() || pMEvt->IsMod2())) // Alt oder Ctrl
+ //bAddSel = TRUE;
+ bCallAddSelection = TRUE;
+ }
+
+// if (bAddSel)
+// pDlg->AddSelection(this);
+
+ return nHandled;
+}
+/* -----------------12.01.99 11:14-------------------
+ *
+ * --------------------------------------------------*/
+void SwFldVarPage::FillUserData()
+{
+ String sData(String::CreateFromAscii(USER_DATA_VERSION));
+ sData += ';';
+ USHORT nTypeSel = aTypeLB.GetSelectEntryPos();
+ if( LISTBOX_ENTRY_NOTFOUND == nTypeSel )
+ nTypeSel = USHRT_MAX;
+ else
+ nTypeSel = (ULONG)aTypeLB.GetEntryData( nTypeSel );
+ sData += String::CreateFromInt32( nTypeSel );
+ SetUserData(sData);
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.54 2000/09/18 16:05:30 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.53 2000/08/25 14:18:40 os
+ CreateFromInt32()
+
+ Revision 1.52 2000/07/20 18:00:34 jp
+ FillFormatLB: don't call SetDefFormat/SetFormatType if the field is a GetRefPageFld
+
+ Revision 1.51 2000/06/30 08:52:53 os
+ #76541# string assertions removed
+
+ Revision 1.50 2000/05/23 18:36:52 jp
+ Bugfixes for Unicode
+
+ Revision 1.49 2000/04/18 15:17:32 os
+ UNICODE
+
+ Revision 1.48 2000/02/11 14:46:46 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.47 1999/05/25 09:25:22 OS
+ #64715# Ctrl/Alt-Erkennung im PreNotify und Auswertung im SelectHdl
+
+
+ Rev 1.46 25 May 1999 11:25:22 OS
+ #64715# Ctrl/Alt-Erkennung im PreNotify und Auswertung im SelectHdl
+
+ Rev 1.45 20 Apr 1999 10:59:34 JP
+ Bug #65026#: SequenceFelder: Level/Sep-Controls im SubTypeHdl aktualisieren
+
+ Rev 1.44 25 Feb 1999 17:24:52 JP
+ Bug #62438#: UserData nur auswerten, wenn kein Refresh ist
+
+ Rev 1.43 08 Feb 1999 15:07:18 OS
+ #60579# UserData nur einmalig auslesen
+
+ Rev 1.42 21 Jan 1999 09:46:24 OS
+ #59900# Fussnoten im Dialog korrekt sortieren; keine prot. Member
+
+ Rev 1.41 12 Jan 1999 11:42:26 OS
+ #60579# ausgewaehlten Typ in den UserData speichern
+
+ Rev 1.40 11 Dec 1998 15:16:24 OM
+ #60051# Richtiges Format fuer Serienbrieffelder waehlen
+
+ Rev 1.39 17 Nov 1998 10:50:36 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.38 30 Oct 1998 15:33:02 OM
+ #58522# Richtigen Wert bei Formelfeld bearbeiten
+
+ Rev 1.37 29 Oct 1998 14:08:32 OM
+ #58544# Butzerfeld: richtigen Inhalt anzeigen
+
+ Rev 1.36 27 Oct 1998 14:01:16 OM
+ #57956# Formelfeld: richtigen Wert anzeigen
+
+ Rev 1.35 15 Oct 1998 15:58:32 OM
+ #57956# Richtige Formel bearbeiten
+
+ Rev 1.34 21 Sep 1998 16:05:42 OM
+ #56845# Leere Benutzerfelder zulassen
+
+ Rev 1.33 15 Sep 1998 16:02:04 OM
+ #55149# In Dialogen Zahlenformat der Applikation verwenden
+
+ Rev 1.32 10 Aug 1998 16:41:12 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.31 18 Jun 1998 15:50:46 OM
+ Ebenen fangen mit 1 an
+
+ Rev 1.30 18 Jun 1998 11:59:00 OM
+ Kapitelebenen fuer Nummernkreise
+
+ Rev 1.29 18 Jun 1998 11:21:10 OM
+ Kapitelebenen fuer Nummernkreise
+
+ Rev 1.28 03 Apr 1998 14:38:40 OM
+ #49178 Akualisierung verbessert
+
+ Rev 1.27 30 Mar 1998 11:00:38 OM
+ Edit: OK-Button auch bei FLD_GETVAR enablen
+
+ Rev 1.26 27 Mar 1998 17:15:04 OM
+ Nur bei Aenderung Dok modifizieren
+
+ Rev 1.25 27 Mar 1998 14:56:20 OM
+ #48908# Formel beim Bearbeiten anzeigen
+
+ Rev 1.24 12 Mar 1998 16:32:00 OM
+ Datenbanknamen in eckigen Klammern bei Drop
+
+ Rev 1.23 16 Feb 1998 10:10:24 OM
+ Fuer Solaris nicht direkt von void* auf ushort casten
+
+ Rev 1.22 11 Feb 1998 16:29:40 OM
+ Textdarstellung fuer Felder
+
+ Rev 1.21 11 Feb 1998 11:49:58 OM
+ Formel einfuegen
+
+ Rev 1.20 06 Feb 1998 14:50:56 OM
+ #47089# Seitenvariable anzeigen
+
+ Rev 1.19 02 Feb 1998 11:26:22 OM
+ #46839# Nummernkreise editieren: Als Value Formel anzeigen
+
+ Rev 1.18 13 Jan 1998 15:02:06 OM
+ Formula-Field wieder unterstuetzt
+
+ Rev 1.17 12 Jan 1998 17:10:24 OM
+ Formelfelder wieder erlauben
+
+ Rev 1.16 12 Jan 1998 14:16:04 OM
+ Keine Namenskonflikte zwischen verschiedenen Variablentypen
+
+ Rev 1.15 12 Jan 1998 12:43:34 OM
+ Eintraege der Edits beibehalten
+
+ Rev 1.14 09 Jan 1998 16:57:18 OM
+ Bei Dok-Wechsel updaten
+
+ Rev 1.13 08 Jan 1998 14:58:26 OM
+ Traveling
+
+ Rev 1.12 07 Jan 1998 17:18:18 OM
+ Referenzen editieren
+
+ Rev 1.11 19 Dec 1997 18:25:00 OM
+ Feldbefehl-bearbeiten Dlg
+
+ Rev 1.10 17 Dec 1997 17:58:46 OM
+ Datumsformate fuer SetExpFields
+
+ Rev 1.9 16 Dec 1997 17:02:58 OM
+ Feldbefehle bearbeiten
+
+ Rev 1.8 12 Dec 1997 16:11:12 OM
+ AutoUpdate bei FocusWechsel u.a.
+
+ Rev 1.7 11 Dec 1997 16:59:30 OM
+ Feldumstellung
+
+ Rev 1.6 28 Nov 1997 19:55:06 MA
+ includes
+
+ Rev 1.5 28 Nov 1997 15:37:02 OM
+ Variablen-TP
+
+ Rev 1.4 27 Nov 1997 13:18:02 OM
+ Variablen-TP
+
+ Rev 1.3 05 Nov 1997 15:35:42 OM
+ Neuer Feldbefehldialog
+
+ Rev 1.2 03 Nov 1997 11:40:56 OM
+ Neuer Felddialog
+
+ Rev 1.1 31 Oct 1997 15:14:42 OM
+ Feldumstellung
+
+ Rev 1.0 30 Oct 1997 16:31:26 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/fldui/fldvar.hxx b/sw/source/ui/fldui/fldvar.hxx
new file mode 100644
index 000000000000..ef1f71b753e8
--- /dev/null
+++ b/sw/source/ui/fldui/fldvar.hxx
@@ -0,0 +1,172 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldvar.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWFLDVAR_HXX
+#define _SWFLDVAR_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 _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_TOOLBOX_HXX //autogen
+#include <vcl/toolbox.hxx>
+#endif
+#ifndef _SV_EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#include "fldpage.hxx"
+#include "condedit.hxx"
+#include "numfmtlb.hxx"
+
+class SwFldVarPage;
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SelectionListBox : public ListBox
+{
+ SwFldVarPage* pDlg;
+ BOOL bCallAddSelection;
+
+ virtual long PreNotify( NotifyEvent& rNEvt );
+
+public:
+ SelectionListBox( SwFldVarPage* pDialog, const ResId& rResId );
+
+ // Selektieren per Ctrl oder Alt erkennen und mit SelectHdl auswerten
+ BOOL IsCallAddSelection() const {return bCallAddSelection;}
+ void ResetCallAddSelection() {bCallAddSelection = FALSE;}
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SwFldVarPage : public SwFldPage
+{
+ friend class SelectionListBox;
+
+ FixedText aTypeFT;
+ ListBox aTypeLB;
+ FixedText aSelectionFT;
+ SelectionListBox aSelectionLB;
+ FixedText aNameFT;
+ Edit aNameED;
+ FixedText aValueFT;
+ ConditionEdit aValueED;
+ FixedText aFormatFT;
+ NumFormatListBox aNumFormatLB;
+ ListBox aFormatLB;
+ FixedText aChapterHeaderFT;
+ FixedText aChapterLevelFT;
+ ListBox aChapterLevelLB;
+ CheckBox aInvisibleCB;
+ FixedText aSeparatorFT;
+ Edit aSeparatorED;
+ ToolBox aNewDelTBX;
+
+ String sOldValueFT;
+ String sOldNameFT;
+
+ ULONG nOldFormat;
+ BOOL bInit;
+
+ DECL_LINK( TypeHdl, ListBox* pLB = 0 );
+ DECL_LINK( SubTypeHdl, ListBox* pLB = 0 );
+ DECL_LINK( ModifyHdl, Edit *pED = 0 );
+ DECL_LINK( TBClickHdl, ToolBox *pTB = 0);
+ DECL_LINK( ChapterHdl, ListBox *pLB = 0);
+ DECL_LINK( SeparatorHdl, Edit *pED = 0 );
+
+ void UpdateSubType();
+ USHORT FillFormatLB(USHORT nTypeId);
+
+protected:
+ virtual USHORT GetGroup();
+
+public:
+ SwFldVarPage(Window* pParent, const SfxItemSet& rSet);
+
+ ~SwFldVarPage();
+
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rAttrSet);
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+ virtual void FillUserData();
+};
+
+
+#endif
+
diff --git a/sw/source/ui/fldui/fldvar.src b/sw/source/ui/fldui/fldvar.src
new file mode 100644
index 000000000000..5c38ec847145
--- /dev/null
+++ b/sw/source/ui/fldui/fldvar.src
@@ -0,0 +1,560 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldvar.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "globals.hrc"
+#include "fldtdlg.hrc"
+#include "helpid.h"
+#include "cmdid.h"
+TabPage TP_FLD_VAR
+{
+ HelpID = HID_FLD_VAR ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Text = "Variablen" ;
+ Text [ ENGLISH ] = "Variables" ;
+ FixedText FT_VARTYPE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ Text = "~Feldtyp" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "~Tipo di campo" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "Tipo de ~campo" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Felttype" ;
+ Text [ french ] = "~Type de champ" ;
+ Text [ swedish ] = "~Fälttyp" ;
+ Text [ dutch ] = "~Veldtype" ;
+ Text [ spanish ] = "~Tipo de campo" ;
+ Text [ english_us ] = "~Type" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "×Ö¶ÎÀàÐÍ(~T)";
+ Text[ russian ] = "Òèï ïîëÿ";
+ Text[ polish ] = "Typ pola";
+ Text[ japanese ] = "̨°ÙÄÞ‚ÌŽí—Þ(~T)";
+ Text[ chinese_traditional ] = "Ãþ«¬(~T)";
+ Text[ arabic ] = "äæÚ ÇáÍÞá";
+ Text[ greek ] = "~Ôýðïò ðåäßïõ";
+ Text[ korean ] = "ÇüÅÂ(~T)";
+ Text[ turkish ] = "A~lan tipi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_VARTYPE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 16 ) ;
+ Size = MAP_APPFONT ( 76 , 83 ) ;
+ TabStop = TRUE ;
+ Sort = FALSE ;
+ AutoHScroll = TRUE ;
+ };
+ FixedText FT_VARSELECTION
+ {
+ Pos = MAP_APPFONT ( 88 , 3 ) ;
+ Size = MAP_APPFONT ( 76 , 8 ) ;
+ Text = "~Auswahl" ;
+ Text [ ENGLISH ] = "S~election" ;
+ Left = TRUE ;
+ Text [ english_us ] = "S~election" ;
+ Text [ portuguese_brazilian ] = "~Auswahl" ;
+ Text [ swedish ] = "Urv~al" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ italian ] = "~Selezione" ;
+ Text [ spanish ] = "~Selección" ;
+ Text [ french ] = "~Sélection" ;
+ Text [ dutch ] = "~Selectie" ;
+ Text [ portuguese ] = "~Selecção" ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ(~E)";
+ Text[ russian ] = "Âûáîð";
+ Text[ polish ] = "~Wybór";
+ Text[ japanese ] = "‘I‘ð(~E)";
+ Text[ chinese_traditional ] = "¿ï¨ú(~E)";
+ Text[ arabic ] = "ÇáÊÍÏíÏ";
+ Text[ greek ] = "~ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ(~E)";
+ Text[ turkish ] = "~Seçim";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_VARSELECTION
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 88 , 16 ) ;
+ Size = MAP_APPFONT ( 76 , 83 ) ;
+ TabStop = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText FT_VARFORMAT
+ {
+ Pos = MAP_APPFONT ( 170 , 3 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ TEXT = "F~ormat" ;
+ TEXT [ English ] = "Format" ;
+ Left = TRUE ;
+ Text [ english_us ] = "Format" ;
+ Text [ portuguese_brazilian ] = "F~ormat" ;
+ Text [ swedish ] = "F~ormat" ;
+ Text [ danish ] = "Format" ;
+ Text [ italian ] = "F~ormato" ;
+ Text [ spanish ] = "F~ormato" ;
+ Text [ french ] = "F~ormat" ;
+ Text [ dutch ] = "~Formaat" ;
+ Text [ portuguese ] = "F~ormato" ;
+ Text[ chinese_simplified ] = "¸ñʽ(~O)";
+ Text[ russian ] = "Ôîðìàò";
+ Text[ polish ] = "Format";
+ Text[ japanese ] = "‘Ž®";
+ Text[ chinese_traditional ] = "®æ¦¡(~F)";
+ Text[ arabic ] = "ÇáÊäÓíÞ";
+ Text[ greek ] = "Ì~ïñöÞ";
+ Text[ korean ] = "¼­½Ä";
+ Text[ turkish ] = "F~ormat";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_VARFORMAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 16 ) ;
+ Size = MAP_APPFONT ( 84 , 71 ) ;
+ TabStop = TRUE ;
+ DropDown = FALSE ;
+ };
+ ListBox LB_VARNUMFORMAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 16 ) ;
+ Size = MAP_APPFONT ( 84 , 71 ) ;
+ TabStop = TRUE ;
+ DropDown = FALSE ;
+ };
+ CheckBox CB_VARINVISIBLE
+ {
+ Pos = MAP_APPFONT ( 170 , 91 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ TEXT = "~Unsichtbar" ;
+ TEXT [ English ] = "Invisible" ;
+ TEXT [ norwegian ] = "Usynlig" ;
+ TEXT [ italian ] = "Nascosto" ;
+ TEXT [ portuguese_brazilian ] = "Invisível" ;
+ TEXT [ portuguese ] = "~Invisível" ;
+ TEXT [ finnish ] = "Näkymätön" ;
+ TEXT [ danish ] = "Usynlig" ;
+ TEXT [ french ] = "Invisible" ;
+ TEXT [ swedish ] = "Os~ynlig" ;
+ TEXT [ dutch ] = "~Onzichtbaar" ;
+ TEXT [ spanish ] = "Invisi~ble" ;
+ TEXT [ english_us ] = "Invisi~ble" ;
+ TabStop = TRUE ;
+ TEXT[ chinese_simplified ] = "ÒþÈëµÄ";
+ TEXT[ russian ] = "Íåâèäèìûé";
+ TEXT[ polish ] = "Niewid~oczny";
+ TEXT[ japanese ] = "”ñ•\\Ž¦";
+ TEXT[ chinese_traditional ] = "Áô¤Jªº";
+ TEXT[ arabic ] = "ÛíÑ ãÑÆí";
+ TEXT[ greek ] = "Ìç ïñáôÜ";
+ TEXT[ korean ] = "¾Èº¸ÀÓ(~B)";
+ TEXT[ turkish ] = "Görünmez";
+ TEXT[ language_user1 ] = " ";
+ };
+ FixedText FT_VARCHAPTERHEADER
+ {
+ Pos = MAP_APPFONT ( 170 , 62 ) ;
+ Size = MAP_APPFONT ( 84 , 10 ) ;
+ Hide = TRUE ;
+ TEXT = "Kapitelweise Nummerierung" ;
+ TEXT [ English ] = "Chapter numbering" ;
+ Text [ english_us ] = "Numbering by chapter" ;
+ Text [ portuguese_brazilian ] = "Kapitelweise Numerierung" ;
+ Text [ swedish ] = "Numrering kapitelvis" ;
+ Text [ danish ] = "Kapitelvis nummerering" ;
+ Text [ italian ] = "Numerazione a capitoli" ;
+ Text [ spanish ] = "Numeración de capítulos" ;
+ Text [ french ] = "Numérotation par chapitre" ;
+ Text [ dutch ] = "Hoofdstuksgewijs nummeren" ;
+ Text [ portuguese ] = "Numeração por capítulos" ;
+ Text[ chinese_simplified ] = "°´Õ±àºÅ";
+ Text[ russian ] = "Íóìåðàöèÿ ïî ãëàâàì";
+ Text[ polish ] = "Numeracja wed³ug rozdzia³ów ";
+ Text[ japanese ] = "͂̔Ԇ•t‚¯";
+ Text[ chinese_traditional ] = "«ö³¹½s¸¹";
+ Text[ arabic ] = "ÊÑÞíã ÝÕæá";
+ Text[ greek ] = "Áñßèìçóç êáôÜ êåöÜëáéá";
+ Text[ korean ] = "ÀåÀ¸·Î ¹øÈ£¸Å±â±â";
+ Text[ turkish ] = "Bölüme göre numaralama";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_VARCHAPTERLEVEL
+ {
+ Pos = MAP_APPFONT ( 175 , 76 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Hide = TRUE ;
+ TEXT = "E~bene" ;
+ TEXT [ English ] = "Level" ;
+ Text [ english_us ] = "~Level" ;
+ Text [ portuguese_brazilian ] = "E~bene" ;
+ Text [ swedish ] = "~Nivå" ;
+ Text [ danish ] = "Niveau" ;
+ Text [ italian ] = "Li~vello" ;
+ Text [ spanish ] = "~Nivel" ;
+ Text [ french ] = "Ni~veau" ;
+ Text [ dutch ] = "N~iveau" ;
+ Text [ portuguese ] = "~Nível" ;
+ Text[ chinese_simplified ] = "¼¶(~L)";
+ Text[ russian ] = "Óðîâåíü";
+ Text[ polish ] = "Poziom";
+ Text[ japanese ] = "ÚÍÞÙ(~L)";
+ Text[ chinese_traditional ] = "¯Å(~L)";
+ Text[ arabic ] = "ÇáãÓÊæì";
+ Text[ greek ] = "Åðßðåäï";
+ Text[ korean ] = "¼öÁØ(~L)";
+ Text[ turkish ] = "D~üzey";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_VARCHAPTERLEVEL
+ {
+ Border = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 208 , 75 ) ;
+ Size = MAP_APPFONT ( 46 , 76 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Keine" ; > ;
+ };
+ stringlist [ english ] =
+ {
+ < "Keine" ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "None" ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "Keine" ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "Inga" ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "Ingen" ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "Senza" ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "Ninguno" ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "Aucun(e)" ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "Geen" ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "Nenhum" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÎÞ" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Áåç" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Brak" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‚È‚µ" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "µL" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÈÏæä" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÊáíÝíá" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¾øÀ½" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Yok" ; > ;
+ };
+ };
+ FixedText FT_VARSEPARATOR
+ {
+ Pos = MAP_APPFONT ( 175 , 91 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Hide = TRUE ;
+ TEXT = "~Trenner" ;
+ TEXT [ English ] = "Separator" ;
+ Text [ english_us ] = "~Separator" ;
+ Text [ portuguese_brazilian ] = "~Trenner" ;
+ Text [ swedish ] = "A~vdelare" ;
+ Text [ danish ] = "Separator" ;
+ Text [ italian ] = "~Separatore" ;
+ Text [ spanish ] = "~Separador" ;
+ Text [ french ] = "~Séparateur" ;
+ Text [ dutch ] = "~Scheidingsteken" ;
+ Text [ portuguese ] = "~Separador" ;
+ Text[ chinese_simplified ] = "·Ö¸ô·û(~S)";
+ Text[ russian ] = "Ðàçäåëèòåëü";
+ Text[ polish ] = "Separator";
+ Text[ japanese ] = "‹æØ‚è‹L†(~S)";
+ Text[ chinese_traditional ] = "³s±µ²Å(~S)";
+ Text[ arabic ] = "ÝÇÕá";
+ Text[ greek ] = "Äéá÷ùñéóôéêü";
+ Text[ korean ] = "±¸ºÐÀÚ(~S)";
+ Text[ turkish ] = "A~yýrma iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_VARSEPARATOR
+ {
+ Pos = MAP_APPFONT ( 208 , 90 ) ;
+ Size = MAP_APPFONT ( 46 , 12 ) ;
+ Border = TRUE ;
+ Hide = TRUE ;
+ MaxTextLength = 1 ;
+ TEXT = "." ;
+ };
+ FixedText FT_VARNAME
+ {
+ Pos = MAP_APPFONT ( 6 , 105 ) ;
+ Size = MAP_APPFONT ( 76 , 10 ) ;
+ Text = "Na~me" ;
+ TEXT [ English ] = "Na~me" ;
+ Left = TRUE ;
+ Text [ english_us ] = "Na~me" ;
+ Text [ portuguese_brazilian ] = "Na~me" ;
+ Text [ swedish ] = "Na~mn" ;
+ Text [ danish ] = "Navn" ;
+ Text [ italian ] = "No~me" ;
+ Text [ spanish ] = "~Nombre" ;
+ Text [ french ] = "~Nom" ;
+ Text [ dutch ] = "Na~am" ;
+ Text [ portuguese ] = "No~me" ;
+ Text[ chinese_simplified ] = "Ãû³Æ(~M)";
+ Text[ russian ] = "Èìÿ";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "–¼‘O(~M)";
+ Text[ chinese_traditional ] = "¦WºÙ(~M)";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§(~M)";
+ Text[ turkish ] = "~Ad";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_VARNAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 117 ) ;
+ Size = MAP_APPFONT ( 76 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ FixedText FT_VARVALUE
+ {
+ Pos = MAP_APPFONT ( 88 , 105 ) ;
+ Size = MAP_APPFONT ( 76 , 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" ;
+ Left = TRUE ;
+ 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 ] = " ";
+ };
+ Edit ED_VARVALUE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 88 , 117 ) ;
+ Size = MAP_APPFONT ( 76 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ ToolBox TBX_VARNEWDEL
+ {
+ Pos = MAP_APPFONT ( 167 , 117 ) ;
+ SVLook = TRUE ;
+ Border = FALSE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = BT_VARAPPLY ;
+ HelpID = HID_FLDVAR_APPLY ;
+ ItemBitmap = Bitmap { File = "sc20558.bmp" ; };
+ Text = "Übernehmen" ;
+ Text [ English ] = "Apply" ;
+ Text [ norwegian ] = "Benytt" ;
+ Text [ italian ] = "Applica" ;
+ Text [ portuguese_brazilian ] = "Aplicar" ;
+ Text [ portuguese ] = "Aplicar" ;
+ Text [ finnish ] = "Käytä" ;
+ Text [ danish ] = "Anvend" ;
+ Text [ french ] = "Appliquer" ;
+ Text [ swedish ] = "Överta" ;
+ Text [ dutch ] = "Overnemen" ;
+ Text [ spanish ] = "Aplicar" ;
+ Text [ english_us ] = "Apply" ;
+ Text[ chinese_simplified ] = "Ó¦ÓÃ";
+ Text[ russian ] = "Âûïîëíèòü";
+ Text[ polish ] = "Zastosuj";
+ Text[ japanese ] = "“K—p";
+ Text[ chinese_traditional ] = "¨Ï¥Î";
+ Text[ arabic ] = "ÊØÈíÞ";
+ Text[ greek ] = "ÅöáñìïãÞ";
+ Text[ korean ] = "Àû¿ë";
+ Text[ turkish ] = "Kullan";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = BT_VARDELETE ;
+ HelpID = HID_FLDVAR_DELETE ;
+ ItemBitmap = Bitmap { File = "sc20557.bmp" ; };
+ 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 ] = "Supprimer" ;
+ 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 ] = " ";
+ };
+ };
+ };
+ Text [ english_us ] = "Variables" ;
+ Text [ portuguese_brazilian ] = "Variablen" ;
+ Text [ swedish ] = "Variabler" ;
+ Text [ danish ] = "Variabler" ;
+ Text [ italian ] = "Variabili" ;
+ Text [ spanish ] = "Variables" ;
+ Text [ french ] = "Variables" ;
+ Text [ dutch ] = "Variabelen" ;
+ Text [ portuguese ] = "Variáveis" ;
+ Text[ chinese_simplified ] = "±äÁ¿";
+ Text[ russian ] = "Ïåðåìåííûå";
+ Text[ polish ] = "Zmienne";
+ Text[ japanese ] = "•Ï”";
+ Text[ chinese_traditional ] = "Åܶq";
+ Text[ arabic ] = "ãÊÛíÑÇÊ";
+ Text[ greek ] = "ÌåôáâëçôÝò";
+ Text[ korean ] = "º¯¼ö";
+ Text[ turkish ] = "Deðiþkenler";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/fldui/inpdlg.cxx b/sw/source/ui/fldui/inpdlg.cxx
new file mode 100644
index 000000000000..22767712b20d
--- /dev/null
+++ b/sw/source/ui/fldui/inpdlg.cxx
@@ -0,0 +1,320 @@
+/*************************************************************************
+ *
+ * $RCSfile: inpdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define _INPDLG_CXX
+
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx>
+#endif
+#ifndef _USRFLD_HXX
+#include <usrfld.hxx>
+#endif
+#ifndef _INPDLG_HXX
+#include <inpdlg.hxx>
+#endif
+#ifndef _FLDMGR_HXX
+#include <fldmgr.hxx>
+#endif
+
+#ifndef _FLDUI_HRC
+#include <fldui.hrc>
+#endif
+#ifndef _INPDLG_HRC
+#include <inpdlg.hrc>
+#endif
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Feldeinfuegen bearbeiten
+ --------------------------------------------------------------------*/
+
+SwFldInputDlg::SwFldInputDlg( Window *pParent, SwWrtShell &rS,
+ SwField* pField, BOOL bNextButton ) :
+
+ SvxStandardDialog(pParent, SW_RES(DLG_FLD_INPUT)),
+
+ rSh( rS ),
+ aLabelED (this, SW_RES(ED_LABEL )),
+ aEditED (this, SW_RES(ED_EDIT )),
+ aEditGB (this, SW_RES(GB_EDIT )),
+ aOKBT (this, SW_RES(BT_OK )),
+ aCancelBT (this, SW_RES(BT_CANCEL )),
+ aNextBT (this, SW_RES(PB_NEXT )),
+ aHelpBT (this, SW_RES(PB_HELP )),
+ pInpFld(0),
+ pSetFld(0),
+ pUsrType(0)
+{
+ // Font fuers Edit umschalten
+ Font aFont(aEditED.GetFont());
+ aFont.SetWeight(WEIGHT_LIGHT);
+ aEditED.SetFont(aFont);
+
+ if( bNextButton )
+ {
+ aNextBT.Show();
+ aNextBT.SetClickHdl(LINK(this, SwFldInputDlg, NextHdl));
+ }
+ else
+ {
+ long nDiff = aCancelBT.GetPosPixel().Y() - aOKBT.GetPosPixel().Y();
+ Point aPos = aHelpBT.GetPosPixel();
+ aPos.Y() -= nDiff;
+ aHelpBT.SetPosPixel(aPos);
+ }
+
+ // Auswertung hier
+ String aStr;
+ if( RES_INPUTFLD == pField->GetTyp()->Which() )
+ { // Es ist eine Eingabefeld
+ //
+ pInpFld = (SwInputField*)pField;
+ aLabelED.SetText( pInpFld->GetPar2() );
+ USHORT nSubType = pInpFld->GetSubType();
+
+ switch(nSubType & 0xff)
+ {
+ case INP_TXT:
+ aStr = pInpFld->GetPar1();
+ break;
+
+ case INP_USR:
+ // Benutzerfeld
+ if( 0 != ( pUsrType = (SwUserFieldType*)rSh.GetFldType(
+ RES_USERFLD, pInpFld->GetPar1() ) ) )
+ aStr = pUsrType->GetContent();
+ break;
+ }
+ }
+ else
+ {
+ // es ist eine SetExpression
+ pSetFld = (SwSetExpField*)pField;
+ String sFormula(pSetFld->GetFormula());
+ //values are formatted - formulas are not
+ International aInt(pSetFld->GetLanguage());
+ if(aInt.IsNumeric(sFormula))
+ aStr = pSetFld->Expand();
+ else
+ aStr = sFormula;
+ aLabelED.SetText( pSetFld->GetPromptText() );
+ }
+
+ // JP 31.3.00: Inputfields in readonly regions must be allowed to
+ // input any content. - 74639
+ BOOL bEnable = !rSh.IsCrsrReadonly();
+ /*!rSh.IsReadOnlyAvailable() || !rSh.HasReadonlySel()*/;
+ aOKBT.Enable( bEnable );
+ aEditED.SetReadOnly( !bEnable );
+
+ if( aStr.Len() )
+ aEditED.SetText( aStr.ConvertLineEnd() );
+ aEditED.GrabFocus();
+ FreeResource();
+}
+
+SwFldInputDlg::~SwFldInputDlg()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Schliessen
+ --------------------------------------------------------------------*/
+
+void SwFldInputDlg::Apply()
+{
+ String aTmp( aEditED.GetText() );
+ aTmp.EraseAllChars( '\r' );
+
+ rSh.StartAllAction();
+ BOOL bModified = FALSE;
+ if(pInpFld)
+ {
+ if(pUsrType)
+ {
+ if( aTmp != pUsrType->GetContent() )
+ {
+ pUsrType->SetContent(aTmp);
+ pUsrType->UpdateFlds();
+ bModified = TRUE;
+ }
+ }
+ else if( aTmp != pInpFld->GetPar1() )
+ {
+ pInpFld->SetPar1(aTmp);
+ rSh.SwEditShell::UpdateFlds(*pInpFld);
+ bModified = TRUE;
+ }
+ }
+ else if( aTmp != pSetFld->GetPar2() )
+ {
+ pSetFld->SetPar2(aTmp);
+ rSh.SwEditShell::UpdateFlds(*pSetFld);
+ bModified = TRUE;
+ }
+
+ if( bModified )
+ rSh.SetUndoNoResetModified();
+
+ rSh.EndAllAction();
+}
+
+
+IMPL_LINK(SwFldInputDlg, NextHdl, PushButton*, EMPTYARG)
+{
+ EndDialog(RET_OK);
+ return 0;
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.48 2000/09/18 16:05:30 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.47 2000/08/21 09:11:38 os
+ Set expression input fields: show formula or Expand() depending on the formula content
+
+ Revision 1.46 2000/03/31 08:00:44 jp
+ Bug #74639#: allow changes on InputFields in readonly regions
+
+ Revision 1.45 2000/02/11 14:46:53 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.44 1999/01/20 15:56:58 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+
+ Rev 1.43 20 Jan 1999 16:56:58 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.42 17 Dec 1997 17:58:46 OM
+ Datumsformate fuer SetExpFields
+
+ Rev 1.41 03 Nov 1997 13:18:10 MA
+ precomp entfernt
+
+ Rev 1.40 02 Oct 1997 15:21:44 OM
+ Feldumstellung
+
+ Rev 1.39 23 Jul 1997 20:25:54 HJS
+ includes
+
+ Rev 1.38 11 Nov 1996 09:56:08 MA
+ ResMgr
+
+ Rev 1.37 24 Oct 1996 13:36:22 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.36 30 Aug 1996 12:43:16 OS
+ InputFldDlg mit Next-Button
+
+ Rev 1.35 28 Aug 1996 12:10:58 OS
+ includes
+
+ Rev 1.34 01 Aug 1996 10:59:16 AMA
+ New: Eingabe-Felder mit Zeilenumbruechen
+
+ Rev 1.33 04 Jun 1996 18:41:52 JP
+ bei GetFldType wurden die Parameter getauscht
+
+ Rev 1.32 02 Apr 1996 14:32:34 OS
+ *_cxx - define hinter hdrstop
+
+ Rev 1.31 24 Nov 1995 16:57:42 OM
+ PCH->PRECOMPILED
+
+ Rev 1.30 08 Nov 1995 13:45:34 OM
+ Change->Set
+
+ Rev 1.29 30 Aug 1995 13:53:30 MA
+ fix: sexport'iert
+
+ Rev 1.28 21 Aug 1995 09:24:36 MA
+ chg: swstddlg -> svxstandarddialog, Optimierungen
+
+ Rev 1.27 18 Jan 1995 18:54:20 ER
+ fld.hxx -> *fld*.hxx
+
+ Rev 1.26 25 Oct 1994 17:57:02 ER
+ add: PCH
+
+ Rev 1.25 17 Oct 1994 16:24:58 PK
+ ausgeboxtes wieder reingeboxt
+
+*************************************************************************/
+
diff --git a/sw/source/ui/fldui/inpdlg.hrc b/sw/source/ui/fldui/inpdlg.hrc
new file mode 100644
index 000000000000..a5741d19a994
--- /dev/null
+++ b/sw/source/ui/fldui/inpdlg.hrc
@@ -0,0 +1,68 @@
+/*************************************************************************
+ *
+ * $RCSfile: inpdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 FT_LABEL 1
+#define ED_EDIT 3
+#define GB_EDIT 4
+#define BT_OK 5
+#define BT_CANCEL 6
+#define ED_LABEL 7
+#define PB_NEXT 8
+#define PB_HELP 9
diff --git a/sw/source/ui/fldui/inpdlg.src b/sw/source/ui/fldui/inpdlg.src
new file mode 100644
index 000000000000..b2bb8f68b67c
--- /dev/null
+++ b/sw/source/ui/fldui/inpdlg.src
@@ -0,0 +1,228 @@
+/*************************************************************************
+ *
+ * $RCSfile: inpdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "fldui.hrc"
+#include "inpdlg.hrc"
+#include "helpid.h"
+ModalDialog DLG_FLD_INPUT
+{
+ HelpID = HID_FLD_INPUT ;
+ OutputSize = TRUE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 194 , 119 ) ;
+ Text = "Eingabefeld" ;
+ Text [ english ] = "Input Field" ;
+ Text [ english_us ] = "Input Field" ;
+ Moveable = TRUE ;
+ /* FixedText FT_LABEL
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 115 , 8 ) ;
+ Text = "Eingabe" ;
+ Text [ English ] = "Input" ;
+ Text [ norwegian ] = "Input" ;
+ Text [ italian ] = "Inserisci" ;
+ Text [ portuguese_brazilian ] = "Inserção" ;
+ Text [ portuguese ] = "Inserção" ;
+ Text [ finnish ] = "Syöttö" ;
+ Text [ danish ] = "Input" ;
+ Text [ french ] = "Entrée" ;
+ Text [ swedish ] = "Inmatning" ;
+ Text [ dutch ] = "Invoer" ;
+ Text [ spanish ] = "Entrada" ;
+ Text [ english_us ] = "Input" ;
+ Left = TRUE ;
+ };*/
+ Edit ED_LABEL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 115 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Text = "Eingabe" ;
+ Text [ English ] = "Input" ;
+ Text [ norwegian ] = "Input" ;
+ Text [ italian ] = "Introduci" ;
+ 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" ;
+ Readonly = TRUE ;
+ Text[ chinese_simplified ] = "ÊäÈë";
+ Text[ russian ] = "Ââîä";
+ Text[ polish ] = "Wejœcie";
+ Text[ japanese ] = "“ü—Í";
+ Text[ chinese_traditional ] = "¿é¤J";
+ Text[ arabic ] = "ÅÏÎÇá";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "ÀÔ·Â";
+ Text[ turkish ] = "Giriþ";
+ Text[ language_user1 ] = " ";
+ };
+ MultiLineEdit ED_EDIT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 32 ) ;
+ Size = MAP_APPFONT ( 115 , 72 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ GroupBox GB_EDIT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 127 , 108 ) ;
+ Text = "Bearbeiten" ;
+ Text [ English ] = "Edit" ;
+ Text [ norwegian ] = "Rediger" ;
+ Text [ italian ] = "Modifica" ;
+ Text [ portuguese_brazilian ] = "Editar" ;
+ Text [ portuguese ] = "Editar" ;
+ Text [ finnish ] = "Muokkaa" ;
+ Text [ danish ] = "Rediger" ;
+ Text [ french ] = "Modifier" ;
+ Text [ swedish ] = "Redigera" ;
+ Text [ dutch ] = "Be~werken" ;
+ Text [ spanish ] = "Editar" ;
+ Text [ english_us ] = "Edit" ;
+ Text[ chinese_simplified ] = "±à¼­";
+ Text[ russian ] = "Ïðàâêà";
+ Text[ polish ] = "Edycja";
+ Text[ japanese ] = "•ÒW";
+ Text[ chinese_traditional ] = "½s¿è";
+ Text[ arabic ] = "ÊÍÑíÑ";
+ Text[ greek ] = "Åðåîåñãáóßá";
+ Text[ korean ] = "ÆíÁý";
+ Text[ turkish ] = "Düzenle";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 139 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 15 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 139 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 15 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_NEXT
+ {
+ Pos = MAP_APPFONT ( 139 , 40 ) ;
+ Size = MAP_APPFONT ( 50 , 15 ) ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ Text = "~Weiter" ;
+ Text [ English ] = "~Next" ;
+ Text [ dutch ] = "~Volgende" ;
+ Text [ english_us ] = "~Next" ;
+ Text [ italian ] = "~Avanti" ;
+ Text [ spanish ] = "~Siguiente" ;
+ Text [ french ] = "~Suivant" ;
+ Text [ swedish ] = "~Nästa" ;
+ Text [ danish ] = "Næste" ;
+ Text [ portuguese ] = "~Seguinte" ;
+ Text [ portuguese_brazilian ] = "~Weiter" ;
+ Text[ chinese_simplified ] = "¼ÌÐø(~N)";
+ Text[ russian ] = "Äàëåå";
+ Text[ polish ] = "~Dalej";
+ Text[ japanese ] = "ŽŸ‚Ö(~N)";
+ Text[ chinese_traditional ] = "Ä~Äò(~N)";
+ Text[ arabic ] = "ÇáÊÇáí";
+ Text[ greek ] = "Åðüìåíï";
+ Text[ korean ] = "´ÙÀ½(~N)";
+ Text[ turkish ] = "Ý~leri";
+ Text[ language_user1 ] = " ";
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 139 , 60 ) ;
+ Size = MAP_APPFONT ( 50 , 15 ) ;
+ TabStop = TRUE ;
+ };
+ Text [ portuguese_brazilian ] = "Eingabefeld" ;
+ Text [ swedish ] = "Inmatningsfält" ;
+ Text [ danish ] = "Inputfelt" ;
+ Text [ italian ] = "Campo di digitazione" ;
+ Text [ spanish ] = "Campo de entrada" ;
+ Text [ french ] = "Champ de saisie" ;
+ Text [ dutch ] = "Invoerveld" ;
+ Text [ portuguese ] = "Campo de entrada" ;
+ Text[ chinese_simplified ] = "ÊäÈëÀ¸";
+ Text[ russian ] = "Ïîëå ââîäà";
+ Text[ polish ] = "Pole wprowadzania";
+ Text[ japanese ] = "“ü—Į́°ÙÄÞ";
+ Text[ chinese_traditional ] = "¿é¤JÄæ¦ì";
+ Text[ arabic ] = "ÍÞá ÅÏÎÇá";
+ Text[ greek ] = "Ðåäßï åéóáãùãÞò";
+ Text[ korean ] = "Çʵå ÀÔ·Â";
+ Text[ turkish ] = "Giriþ alaný";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/fldui/javaedit.cxx b/sw/source/ui/fldui/javaedit.cxx
new file mode 100644
index 000000000000..e87b93c1005b
--- /dev/null
+++ b/sw/source/ui/fldui/javaedit.cxx
@@ -0,0 +1,417 @@
+/*************************************************************************
+ *
+ * $RCSfile: javaedit.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 ---------------------------------------------------------------
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define _JAVAEDIT_CXX
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _FLDMGR_HXX
+#include <fldmgr.hxx>
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _JAVAEDIT_HXX
+#include <javaedit.hxx>
+#endif
+
+#ifndef _FLDUI_HRC
+#include <fldui.hrc>
+#endif
+#ifndef _JAVAEDIT_HRC
+#include <javaedit.hrc>
+#endif
+
+// static ----------------------------------------------------------------
+
+// class SwJavaEditDialog ------------------------------------------------
+
+
+
+SwJavaEditDialog::SwJavaEditDialog(Window* pParent, SwWrtShell* pWrtSh) :
+
+ SvxStandardDialog(pParent, SW_RES(DLG_JAVAEDIT)),
+
+ aTypeFT ( this, SW_RES( FT_TYPE ) ),
+ aTypeED ( this, SW_RES( ED_TYPE ) ),
+ aUrlRB ( this, SW_RES( RB_URL ) ),
+ aUrlED ( this, SW_RES( ED_URL ) ),
+ aUrlPB ( this, SW_RES( PB_URL ) ),
+ aEditRB ( this, SW_RES( RB_EDIT ) ),
+ aEditED ( this, SW_RES( ED_EDIT ) ),
+ aPostItGB ( this, SW_RES( GB_POSTIT ) ),
+ aOKBtn ( this, SW_RES( BTN_POST_OK ) ),
+ aCancelBtn ( this, SW_RES( BTN_POST_CANCEL ) ),
+ aPrevBtn ( this, SW_RES( BTN_PREV ) ),
+ aNextBtn ( this, SW_RES( BTN_NEXT ) ),
+ aHelpBtn ( this, SW_RES( BTN_POST_HELP ) ),
+
+ pSh(pWrtSh),
+ bNew(TRUE)
+{
+ // Handler installieren
+ aPrevBtn.SetClickHdl( LINK( this, SwJavaEditDialog, PrevHdl ) );
+ aNextBtn.SetClickHdl( LINK( this, SwJavaEditDialog, NextHdl ) );
+ aOKBtn.SetClickHdl( LINK( this, SwJavaEditDialog, OKHdl ) );
+
+ Link aLk = LINK(this, SwJavaEditDialog, RadioButtonHdl);
+ aUrlRB.SetClickHdl(aLk);
+ aEditRB.SetClickHdl(aLk);
+ aUrlPB.SetClickHdl(LINK(this, SwJavaEditDialog, InsertFileHdl));
+
+ Font aFont( aEditED.GetFont() );
+ aFont.SetWeight( WEIGHT_LIGHT );
+ aEditED.SetFont( aFont );
+
+ pMgr = new SwFldMgr;
+ pFld = (SwScriptField*)pMgr->GetCurFld();
+
+ bNew = !(pFld && pFld->GetTyp()->Which() == RES_SCRIPTFLD);
+
+ CheckTravel();
+
+ if( !bNew )
+ SetText( SW_RES( STR_JAVA_EDIT ) );
+ else
+ // neu anlegen
+ SetText( SW_RES( STR_JAVA_INSERT ) );
+
+ FreeResource();
+
+ RadioButtonHdl(NULL);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+
+SwJavaEditDialog::~SwJavaEditDialog()
+{
+ delete pMgr;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+
+IMPL_LINK_INLINE_START( SwJavaEditDialog, PrevHdl, Button *, EMPTYARG )
+{
+ SetFld();
+ pMgr->GoPrev();
+ pFld = (SwScriptField*)pMgr->GetCurFld();
+ CheckTravel();
+ RadioButtonHdl(NULL);
+
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwJavaEditDialog, PrevHdl, Button *, EMPTYARG )
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+
+IMPL_LINK_INLINE_START( SwJavaEditDialog, NextHdl, Button *, EMPTYARG )
+{
+ SetFld();
+ pMgr->GoNext();
+ pFld = (SwScriptField*)pMgr->GetCurFld();
+ CheckTravel();
+ RadioButtonHdl(NULL);
+
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwJavaEditDialog, NextHdl, Button *, EMPTYARG )
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+
+IMPL_LINK( SwJavaEditDialog, OKHdl, Button *, EMPTYARG )
+{
+ SetFld();
+ EndDialog( RET_OK );
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+
+void SwJavaEditDialog::Apply()
+{
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+
+void SwJavaEditDialog::CheckTravel()
+{
+ BOOL bTravel = FALSE;
+ BOOL bNext, bPrev;
+
+ if(!bNew)
+ {
+ // Traveling nur bei mehr als einem Feld
+ pSh->StartAction();
+ pSh->CreateCrsr();
+
+ bNext = pMgr->GoNext();
+ if( bNext )
+ pMgr->GoPrev();
+
+ if( 0 != ( bPrev = pMgr->GoPrev() ) )
+ pMgr->GoNext();
+ bTravel |= bNext|bPrev;
+
+ pSh->DestroyCrsr();
+ pSh->EndAction();
+
+ if (pFld->IsCodeURL())
+ {
+ aUrlED.SetText(pFld->GetPar2());
+ aEditED.SetText(aEmptyStr);
+ aUrlRB.Check();
+ }
+ else
+ {
+ aEditED.SetText(pFld->GetPar2());
+ aUrlED.SetText(aEmptyStr);
+ aEditRB.Check();
+ }
+ aTypeED.SetText(pFld->GetPar1());
+ }
+
+ if ( !bTravel )
+ {
+ aPrevBtn.Hide();
+ aNextBtn.Hide();
+ }
+ else
+ {
+ aPrevBtn.Enable(bPrev);
+ aNextBtn.Enable(bNext);
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+
+void SwJavaEditDialog::SetFld()
+{
+ if( !aOKBtn.IsEnabled() )
+ return ;
+
+ String sText;
+ String sType( aTypeED.GetText() );
+ BOOL bIsUrl = aUrlRB.IsChecked();
+
+ if( bIsUrl )
+ {
+ sText = aUrlED.GetText();
+ if(sText.Len())
+ sText = URIHelper::SmartRelToAbs(sText);
+ }
+ else
+ sText = aEditED.GetText();
+
+ if( !sType.Len() )
+ sType = String::CreateFromAscii("JavaScript");
+
+ if( bNew )
+ pMgr->InsertFld(TYP_SCRIPTFLD, 0, sType, sText, bIsUrl);
+ else if( bIsUrl != pFld->GetFormat() ||
+ pFld->GetPar2() != sType || pFld->GetPar1() != sText )
+ {
+ pMgr->UpdateCurFld( bIsUrl, sType, sText );
+ pSh->SetUndoNoResetModified();
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwJavaEditDialog, RadioButtonHdl, RadioButton *, pBtn )
+{
+ BOOL bEnable = aUrlRB.IsChecked();
+ aUrlPB.Enable(bEnable);
+ aUrlED.Enable(bEnable);
+ aEditED.Enable(!bEnable);
+
+ if( !bNew )
+ {
+ bEnable = !pSh->IsReadOnlyAvailable() || !pSh->HasReadonlySel();
+ aOKBtn.Enable( bEnable );
+ aUrlED.SetReadOnly( !bEnable );
+ aEditED.SetReadOnly( !bEnable);
+ aTypeED.SetReadOnly( !bEnable);
+ if( aUrlPB.IsEnabled() && !bEnable )
+ aUrlPB.Enable( FALSE );
+ }
+ return 0;
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+IMPL_LINK( SwJavaEditDialog, InsertFileHdl, PushButton *, pBtn )
+{
+ String sFileName;
+ if( GetFileFilterNameDlg( *pBtn, sFileName ))
+ aUrlED.SetText( sFileName );
+ return 0;
+}
+
+/*************************************************************************
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.13 2000/09/18 16:05:31 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.12 2000/06/26 13:20:15 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.11 2000/04/18 15:17:32 os
+ UNICODE
+
+ Revision 1.10 2000/02/11 14:46:57 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.9 1999/01/20 15:56:58 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+
+ Rev 1.8 20 Jan 1999 16:56:58 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.7 19 Aug 1998 17:22:14 JP
+ Bug #55247#: fuers MoveNext-/-PrevFldType einen eigenen Pam verwenden
+
+ Rev 1.6 13 Feb 1998 14:16:02 JP
+ statt selbst den InserDocDialog zu rufen, die neue Funktion GetFileFilterNameDlg rufen
+
+ Rev 1.5 24 Nov 1997 18:23:28 MA
+ includes
+
+ Rev 1.4 03 Nov 1997 13:18:10 MA
+ precomp entfernt
+
+ Rev 1.3 23 Jul 1997 20:25:54 HJS
+ includes
+
+ Rev 1.2 29 May 1997 16:16:02 OM
+ URL in ScriptDialog eingeben
+
+ Rev 1.1 13 Feb 1997 17:36:02 OM
+ Segmentierung
+
+ Rev 1.0 13 Feb 1997 17:35:22 OM
+ Initial revision.
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/fldui/javaedit.hrc b/sw/source/ui/fldui/javaedit.hrc
new file mode 100644
index 000000000000..a58ce4b73211
--- /dev/null
+++ b/sw/source/ui/fldui/javaedit.hrc
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * $RCSfile: javaedit.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SW_JAVAEDIT_HRC
+#define _SW_JAVAEDIT_HRC
+
+// defines ------------------------------------------------------------------
+
+#define FT_TYPE 10
+#define ED_TYPE 11
+#define RB_EDIT 12
+#define ED_EDIT 13
+#define GB_POSTIT 14
+#define BTN_PREV 15
+#define BTN_NEXT 16
+#define STR_JAVA_EDIT 17
+#define STR_JAVA_INSERT 18
+#define RB_URL 19
+#define ED_URL 20
+#define PB_URL 21
+
+#define BTN_POST_OK 30
+#define BTN_POST_CANCEL 31
+#define BTN_POST_HELP 32
+
+
+#endif
+
diff --git a/sw/source/ui/fldui/javaedit.src b/sw/source/ui/fldui/javaedit.src
new file mode 100644
index 000000000000..f96e84993780
--- /dev/null
+++ b/sw/source/ui/fldui/javaedit.src
@@ -0,0 +1,319 @@
+/*************************************************************************
+ *
+ * $RCSfile: javaedit.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "javaedit.hrc"
+#include "fldui.hrc"
+#include "helpid.h"
+ // pragma ----------------------------------------------------------------
+
+ // RID_SVXDLG_POSTIT -----------------------------------------------------
+ModalDialog DLG_JAVAEDIT
+{
+ OutputSize = TRUE ;
+ SvLook = TRUE ;
+ Size = MAP_APPFONT ( 248 , 157 ) ;
+ Text = "Script bearbeiten" ;
+ Text [ ENGLISH ] = "Edit script" ;
+ Moveable = TRUE ;
+ FixedText FT_TYPE
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "Script-T~yp" ;
+ Text [ ENGLISH ] = "Script type" ;
+ Text [ english_us ] = "Script type" ;
+ Text [ portuguese_brazilian ] = "Script-Typ" ;
+ Text [ swedish ] = "Skriptt~yp" ;
+ Text [ danish ] = "Script-type" ;
+ Text [ italian ] = "Tipo di script" ;
+ Text [ spanish ] = "Tipo de script" ;
+ Text [ french ] = "T~ype de script" ;
+ Text [ dutch ] = "Scriptt~ype" ;
+ Text [ portuguese ] = "~Tipo de Script" ;
+ Text[ chinese_simplified ] = "½Å±¾ÀàÐÍ";
+ Text[ russian ] = "Òèï ñêðèïòà";
+ Text[ polish ] = "Typ Scriptu";
+ Text[ japanese ] = "½¸ØÌßÄ‚ÌŽí—Þ";
+ Text[ chinese_traditional ] = "©R¥O½ZÃþ«¬";
+ Text[ arabic ] = "äæÚ ÇáÓßÑíÈÊ";
+ Text[ greek ] = "Ôýðïò ôïõ Script";
+ Text[ korean ] = "½ºÅ©¸³Æ® ÇüÅÂ";
+ Text[ turkish ] = "Script tipi";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_TYPE
+ {
+ Border = TRUE ;
+ Text = "JavaScript" ;
+ // Nicht uebersetzen!!!
+ Pos = MAP_APPFONT ( 57 , 14 ) ;
+ Size = MAP_APPFONT ( 100 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ RadioButton RB_URL
+ {
+ Text = "~URL" ;
+ Text [ ENGLISH ] = "URL" ;
+ Pos = MAP_APPFONT ( 12 , 28 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "~URL" ;
+ Text [ english_us ] = "URL" ;
+ Text [ portuguese_brazilian ] = "URL" ;
+ Text [ swedish ] = "~URL" ;
+ Text [ danish ] = "URL" ;
+ Text [ italian ] = "URL" ;
+ Text [ spanish ] = "URL" ;
+ Text [ french ] = "~URL" ;
+ Text [ dutch ] = "~URL" ;
+ Text[ chinese_simplified ] = "URL";
+ Text[ russian ] = "URL";
+ Text[ polish ] = "URL";
+ Text[ japanese ] = "URL";
+ Text[ chinese_traditional ] = "URL";
+ Text[ arabic ] = "URL";
+ Text[ greek ] = "~URL";
+ Text[ korean ] = "URL";
+ Text[ turkish ] = "URL";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_URL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 57 , 27 ) ;
+ Size = MAP_APPFONT ( 100 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_URL
+ {
+ Pos = MAP_APPFONT ( 163 , 26 ) ;
+ Size = MAP_APPFONT ( 14 , 14 ) ;
+ Text = "~..." ;
+ TabStop = TRUE ;
+ };
+ RadioButton RB_EDIT
+ {
+ Pos = MAP_APPFONT ( 12 , 40 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Text" ;
+ Text [ English ] = "~Text" ;
+ Text [ norwegian ] = "~Text" ;
+ Text [ italian ] = "~Testo" ;
+ Text [ portuguese_brazilian ] = "~Texto" ;
+ Text [ portuguese ] = "~Texto" ;
+ Text [ finnish ] = "~Teksti" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "~Texte" ;
+ Text [ swedish ] = "~Text" ;
+ Text [ dutch ] = "~Tekst" ;
+ Text [ spanish ] = "~Texto" ;
+ Text [ english_us ] = "~Text" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö(~T)";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷½Ä(~T)";
+ Text[ chinese_traditional ] = "¤å¦r(~T)";
+ Text[ arabic ] = "äÕ";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®(~T)";
+ Text[ turkish ] = "~Metin";
+ Text[ language_user1 ] = " ";
+ };
+ MultiLineEdit ED_EDIT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 23 , 54 ) ;
+ Size = MAP_APPFONT ( 155 , 91 ) ;
+ Left = TRUE ;
+ VScroll = TRUE ;
+ HScroll = TRUE ;
+ IgnoreTab = TRUE ;
+ TabStop = TRUE ;
+ };
+ GroupBox GB_POSTIT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 179 , 147 ) ;
+ Text = "Inhalt" ;
+ Text [ ENGLISH ] = "Contents" ;
+ Text [ norwegian ] = "Innhold " ;
+ Text [ italian ] = "Contenuto" ;
+ Text [ portuguese_brazilian ] = "Conteúdo" ;
+ Text [ portuguese ] = "Conteúdo" ;
+ Text [ finnish ] = "Sisältö" ;
+ Text [ danish ] = "Indhold" ;
+ Text [ french ] = "Contenu" ;
+ Text [ swedish ] = "Innehåll" ;
+ Text [ dutch ] = "Inhoud" ;
+ Text [ spanish ] = "Contenido" ;
+ Text [ english_us ] = "Contents" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝ";
+ Text[ russian ] = "Ñîäåðæèìîå";
+ Text[ polish ] = "ZawartoϾ";
+ Text[ japanese ] = "“à—e";
+ Text[ chinese_traditional ] = "¤º®e";
+ Text[ arabic ] = "ÇáãÍÊæíÇÊ";
+ Text[ greek ] = "Ðåñéå÷üìåíá";
+ Text[ korean ] = "³»¿ë";
+ Text[ turkish ] = "Ýçerik";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BTN_POST_OK
+ {
+ Pos = MAP_APPFONT ( 191 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 15 ) ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_POST_CANCEL
+ {
+ Pos = MAP_APPFONT ( 191 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 15 ) ;
+ };
+ HelpButton BTN_POST_HELP
+ {
+ Pos = MAP_APPFONT ( 191 , 40 ) ;
+ Size = MAP_APPFONT ( 50 , 15 ) ;
+ };
+ ImageButton BTN_PREV
+ {
+ Pos = MAP_APPFONT ( 191 , 60 ) ;
+ Size = MAP_APPFONT ( 24 , 14 ) ;
+ Symbol = IMAGEBUTTON_ARROW_LEFT ;
+ };
+ ImageButton BTN_NEXT
+ {
+ Pos = MAP_APPFONT ( 217 , 60 ) ;
+ Size = MAP_APPFONT ( 24 , 14 ) ;
+ Symbol = IMAGEBUTTON_ARROW_RIGHT ;
+ };
+ // lokale Strings
+ String STR_JAVA_EDIT
+ {
+ Text = "Script bearbeiten" ;
+ Text [ English ] = "Edit script" ;
+ Text [ portuguese ] = "Editar Script" ;
+ Text [ english_us ] = "Edit script" ;
+ Text [ portuguese_brazilian ] = "Script bearbeiten" ;
+ Text [ swedish ] = "Redigera skript" ;
+ Text [ danish ] = "Rediger script" ;
+ Text [ italian ] = "Modifica script" ;
+ Text [ spanish ] = "Editar script" ;
+ Text [ french ] = "Éditer le script" ;
+ Text [ dutch ] = "Script bewerken" ;
+ Text[ chinese_simplified ] = "±à¼­½Å±¾";
+ Text[ russian ] = "Ïðàâêà ñêðèïòà";
+ Text[ polish ] = "Edytuj Script";
+ Text[ japanese ] = "½¸ØÌßÄ‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿è©R¥O½Z";
+ Text[ arabic ] = "ÊÍÑíÑ ÇáÜ script";
+ Text[ greek ] = "Åðåîåñãáóßá Script";
+ Text[ korean ] = "½ºÅ©¸³Æ® ÆíÁý";
+ Text[ turkish ] = "Script bearbeiten";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_JAVA_INSERT
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Script einfügen : Script einf³gen */
+ Text = "Script einfügen" ;
+ Text [ English ] = "Insert script" ;
+ Text [ portuguese ] = "Inserir Script" ;
+ Text [ english_us ] = "Insert Script" ;
+ Text [ portuguese_brazilian ] = "Script einfügen" ;
+ Text [ swedish ] = "Infoga skript" ;
+ Text [ danish ] = "Indsæt script" ;
+ Text [ italian ] = "Inserisci script" ;
+ Text [ spanish ] = "Insertar script" ;
+ Text [ french ] = "Insérer un script" ;
+ Text [ dutch ] = "Script invoegen" ;
+ Text[ chinese_simplified ] = "²åÈë½Å±¾";
+ Text[ russian ] = "Âñòàâèòü ñêðèïò";
+ Text[ polish ] = "Wstaw Script";
+ Text[ japanese ] = "½¸ØÌßÄ‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J©R¥O½Z";
+ Text[ arabic ] = "ÅÏÑÇÌ Script";
+ Text[ greek ] = "ÐñïóèÞêç Script";
+ Text[ korean ] = "½ºÅ©¸³Æ® »ðÀÔ";
+ Text[ turkish ] = "Script einfügen";
+ Text[ language_user1 ] = " ";
+ };
+ Text [ english_us ] = "Edit Script" ;
+ Text [ portuguese_brazilian ] = "Script bearbeiten" ;
+ Text [ swedish ] = "Redigera skript" ;
+ Text [ danish ] = "Rediger script" ;
+ Text [ italian ] = "Modifica script" ;
+ Text [ spanish ] = "Editar script" ;
+ Text [ french ] = "Éditer le script" ;
+ Text [ dutch ] = "Script bewerken" ;
+ Text [ portuguese ] = "Editar Script" ;
+ Text[ chinese_simplified ] = "±à¼­½Å±¾";
+ Text[ russian ] = "Ïðàâêà ñêðèïòà";
+ Text[ polish ] = "Edytuj Script";
+ Text[ japanese ] = "½¸ØÌßÄ‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿è©R¥O½Z";
+ Text[ arabic ] = "ÊÍÑíÑ ÇáÜ Script";
+ Text[ greek ] = "Åðåîåñãáóßá Script";
+ Text[ korean ] = "½ºÅ©¸³Æ® ÆíÁý";
+ Text[ turkish ] = "Script'i düzenle";
+ Text[ language_user1 ] = " ";
+};
+ // ********************************************************************** EOF
diff --git a/sw/source/ui/fldui/makefile.mk b/sw/source/ui/fldui/makefile.mk
new file mode 100644
index 000000000000..36348687942e
--- /dev/null
+++ b/sw/source/ui/fldui/makefile.mk
@@ -0,0 +1,131 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=fldui
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ changedb.cxx \
+ flddb.cxx \
+ flddinf.cxx \
+ flddok.cxx \
+ fldedt.cxx \
+ fldfunc.cxx \
+ fldmgr.cxx \
+ fldpage.cxx \
+ fldref.cxx \
+ fldtdlg.cxx \
+ fldvar.cxx \
+ javaedit.cxx \
+ inpdlg.cxx
+
+SRCFILES = \
+ changedb.src \
+ flddb.src \
+ flddinf.src \
+ flddok.src \
+ fldfunc.src \
+ fldref.src \
+ fldtdlg.src \
+ fldui.src \
+ fldvar.src \
+ javaedit.src \
+ inpdlg.src
+
+SLOFILES = \
+ $(SLO)$/changedb.obj \
+ $(SLO)$/flddb.obj \
+ $(SLO)$/flddinf.obj \
+ $(SLO)$/flddok.obj \
+ $(SLO)$/fldedt.obj \
+ $(SLO)$/fldfunc.obj \
+ $(SLO)$/fldmgr.obj \
+ $(SLO)$/fldpage.obj \
+ $(SLO)$/fldref.obj \
+ $(SLO)$/fldtdlg.obj \
+ $(SLO)$/fldvar.obj \
+ $(SLO)$/javaedit.obj \
+ $(SLO)$/inpdlg.obj
+
+EXCEPTIONSFILES = \
+ $(SLO)$/fldmgr.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/fmtui/fmtui.src b/sw/source/ui/fmtui/fmtui.src
new file mode 100644
index 000000000000..23b48affc55b
--- /dev/null
+++ b/sw/source/ui/fmtui/fmtui.src
@@ -0,0 +1,140 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtui.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "fmtui.hrc"
+#include "globals.hrc"
+
+String STR_FMT_STD
+{
+ TEXT = "(keins)" ;
+ TEXT [ English ] = "(none)" ;
+ TEXT [ norwegian ] = "(ingen)" ;
+ TEXT [ italian ] = "(senza)" ;
+ TEXT [ portuguese_brazilian ] = "(nenhum)" ;
+ TEXT [ portuguese ] = "(nenhum)" ;
+ TEXT [ finnish ] = "(ei mitään)" ;
+ TEXT [ danish ] = "(ingen)" ;
+ TEXT [ french ] = "(aucun(e))" ;
+ TEXT [ swedish ] = "(ingen)" ;
+ TEXT [ dutch ] = "(geen)" ;
+ TEXT [ spanish ] = "(ninguna)" ;
+ TEXT [ english_us ] = "(none)" ;
+ TEXT[ chinese_simplified ] = "(ÎÞ)";
+ TEXT[ russian ] = "(áåç)";
+ TEXT[ polish ] = "(brak)";
+ TEXT[ japanese ] = "(‚È‚µ)";
+ TEXT[ chinese_traditional ] = "(µL)";
+ TEXT[ arabic ] = "(ÈÏæä)";
+ TEXT[ dutch ] = "(geen)";
+ TEXT[ chinese_simplified ] = "(ÎÞ)";
+ TEXT[ greek ] = "(êáíÝíá)";
+ TEXT[ korean ] = "(¾øÀ½)";
+ TEXT[ turkish ] = "(yok)";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_TEMPLATE_WILDCARD
+{
+ TEXT = "*.vor" ;
+};
+ //String STR_NONAME //!! VB
+ //{
+ // TEXT = "Unbenannt ";
+ // TEXT [English] = "Noname ";
+ // TEXT [norwegian] = "Noname ";
+ // TEXT [italian] = "Senza nome";
+ // TEXT [portuguese_brazilian] = "Semnome ";
+ // TEXT [portuguese] = "Semnome ";
+ // TEXT [finnish] = "Nimetön ";
+ // TEXT [danish] = "Intet navn";
+ // TEXT [french] = "Sansnom ";
+ // TEXT [swedish] = "Namnlös";
+ // TEXT [dutch] = "Naamloos";
+ // TEXT [spanish] = "Sin nombre ";
+ // TEXT [english_us] = "Noname ";
+ //};
+String STR_OVERWRITE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Wollen Sie die Vorlage wirklich überschreiben? : Wollen Sie die Vorlage wirklich ³berschreiben? */
+ TEXT = "Wollen Sie die Vorlage wirklich überschreiben?" ;
+ TEXT [ English ] = "Do you really want to overwrite the template?" ;
+ TEXT [ norwegian ] = "Do you really want to overwrite the template?" ;
+ TEXT [ italian ] = "\nSovrascrivere il modello?" ;
+ TEXT [ portuguese_brazilian ] = "Deseja realmente gravar sobre o modelo?" ;
+ TEXT [ portuguese ] = "Deseja realmente eliminar este modelo?" ;
+ TEXT [ finnish ] = "Haluatko varmasti korvata mallin?" ;
+ TEXT [ danish ] = "Er du sikker på, at du vil overskrive denne skabelon?" ;
+ TEXT [ french ] = "Voulez-vous vraiment écraser le modèle ?" ;
+ TEXT [ swedish ] = "Vill Du verkligen skriva över den här mallen?" ;
+ TEXT [ dutch ] = "\nWilt u deze sjabloon werkelijk overschrijven?" ;
+ TEXT [ spanish ] = "¿Desea realmente sobrescribir la plantilla?" ;
+ TEXT [ english_us ] = "\nAre you sure you want to delete this template?" ;
+ TEXT[ chinese_simplified ] = "ÄúÕæµÄÒª¸²Ð´Õâ¸öÑùʽÂð£¿";
+ TEXT[ russian ] = "Âû äåéñòâèòåëüíî õîòèòå çàìåíèòü ýòîò øàáëîí?";
+ TEXT[ polish ] = "Chcesz na pewno skasowaæ ten szablon przez zapisanie?";
+ TEXT[ japanese ] = "ÃÝÌßÚ°Ä‚ð–{“–‚É휂µ‚Ü‚·‚©H";
+ TEXT[ chinese_traditional ] = "±z¯u­nÂмg³o­Ó¼Ë¦¡¡H";
+ TEXT[ arabic ] = "åá ÊÑíÏ ÈÇáÝÚá ÇáßÊÇÈÉ ÝæÞ ÇáÞÇáÈ¿";
+ TEXT[ dutch ] = "\nWilt u deze sjabloon werkelijk overschrijven?";
+ TEXT[ chinese_simplified ] = "ÄúÕæµÄÒª¸²Ð´Õâ¸öÑùʽÂð£¿";
+ TEXT[ greek ] = "ÈÝëåôå óßãïõñá íá áíôéêáôáóôÞóåôå ôï ðñüôõðï;";
+ TEXT[ korean ] = "\nÀÌ ¼­½ÄÆÄÀÏÀ» Á¤¸»·Î »èÁ¦ÇϽðڽÀ´Ï±î?";
+ TEXT[ turkish ] = "Bu þablonu silmek istediðinizden emin misiniz?";
+ TEXT[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/fmtui/makefile.mk b/sw/source/ui/fmtui/makefile.mk
new file mode 100644
index 000000000000..a264e2477d9c
--- /dev/null
+++ b/sw/source/ui/fmtui/makefile.mk
@@ -0,0 +1,94 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=fmtui
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ tmpdlg.cxx
+
+SRCFILES = \
+ tmpdlg.src
+
+SLOFILES = \
+ $(SLO)$/tmpdlg.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/fmtui/tmpdlg.cxx b/sw/source/ui/fmtui/tmpdlg.cxx
new file mode 100644
index 000000000000..05ab186722a9
--- /dev/null
+++ b/sw/source/ui/fmtui/tmpdlg.cxx
@@ -0,0 +1,628 @@
+/*************************************************************************
+ *
+ * $RCSfile: tmpdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SVSTDARR_STRINGSISORTDTOR
+#define _SVSTDARR_STRINGSISORTDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SVX_CHARDLG_HXX //autogen
+#include <svx/chardlg.hxx>
+#endif
+#ifndef _SVX_PARAGRPH_HXX //autogen
+#include <svx/paragrph.hxx>
+#endif
+#ifndef _SVX_BACKGRND_HXX //autogen
+#include <svx/backgrnd.hxx>
+#endif
+#ifndef _SVX_TABSTPGE_HXX //autogen
+#include <svx/tabstpge.hxx>
+#endif
+#ifndef _SVX_HDFT_HXX //autogen
+#include <svx/hdft2.hxx>
+#endif
+#ifndef _SVX_FLSTITEM_HXX //autogen
+#include <svx/flstitem.hxx>
+#endif
+#ifndef _SVX_PAGE_HXX //autogen
+#include <svx/page.hxx>
+#endif
+#ifndef _SVX_BORDER_HXX //autogen
+#include <svx/border.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SVX_NUMPAGES_HXX //autogen
+#include <svx/numpages.hxx>
+#endif
+#ifndef _OFA_HTMLCFG_HXX //autogen
+#include <offmgr/htmlcfg.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+
+#ifndef _NUMPARA_HXX
+#include <numpara.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx> // fuer Create-Methoden
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _SWWDOCSH_HXX //autogen
+#include <wdocsh.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _PGFNOTE_HXX
+#include <pgfnote.hxx> // der Dialog
+#endif
+#ifndef _TMPDLG_HXX
+#include <tmpdlg.hxx> // der Dialog
+#endif
+#ifndef _COLUMN_HXX
+#include <column.hxx> // Spalten
+#endif
+#ifndef _DRPCPS_HXX
+#include <drpcps.hxx> // Initialen
+#endif
+#ifndef _FRMPAGE_HXX
+#include <frmpage.hxx> // Rahmen
+#endif
+#ifndef _WRAP_HXX
+#include <wrap.hxx> // Rahmen
+#endif
+#ifndef _FRMMGR_HXX
+#include <frmmgr.hxx> // Rahmen
+#endif
+#ifndef _CCOLL_HXX
+#include <ccoll.hxx> // CondColl
+#endif
+#ifndef _DOCSTYLE_HXX
+#include <docstyle.hxx> //
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx> //
+#endif
+#ifndef _MACASSGN_HXX
+#include <macassgn.hxx> //
+#endif
+#ifndef _UIITEMS_HXX
+#include <uiitems.hxx> // inclusive der NumTabPages!
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _SHELLRES_HXX //autogen
+#include <shellres.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _FMTUI_HRC
+#include <fmtui.hrc>
+#endif
+
+
+extern SwWrtShell* GetActiveWrtShell();
+
+/*--------------------------------------------------------------------
+ Beschreibung: Der Traeger des Dialoges
+ --------------------------------------------------------------------*/
+
+SwTemplateDlg::SwTemplateDlg(Window* pParent,
+ SfxStyleSheetBase& rBase,
+ USHORT nRegion,
+ BOOL bColumn,
+ SwWrtShell* pActShell,
+ BOOL bNew ) :
+ SfxStyleDialog( pParent,
+ SW_RES(DLG_TEMPLATE_BASE + nRegion),
+ rBase,
+ FALSE,
+ 0 ),
+ nType( nRegion ),
+ pWrtShell(pActShell),
+ bNewStyle(bNew)
+{
+ FreeResource();
+
+ nHtmlMode = ::GetHtmlMode(pWrtShell->GetView().GetDocShell());
+ // TabPages zusammenfieseln
+ switch( nRegion )
+ {
+ // Zeichenvorlagen
+ case SFX_STYLE_FAMILY_CHAR:
+ {
+ AddTabPage(TP_CHAR_STD, SvxCharStdPage::Create,
+ SvxCharStdPage::GetRanges );
+ AddTabPage(TP_CHAR_EXT, SvxCharExtPage::Create,
+ SvxCharExtPage::GetRanges );
+ AddTabPage(TP_BACKGROUND, SvxBackgroundTabPage::Create,
+ SvxBackgroundTabPage::GetRanges );
+ break;
+ }
+ // Absatzvorlagen
+ case SFX_STYLE_FAMILY_PARA:
+ {
+ AddTabPage(TP_PARA_STD, SvxStdParagraphTabPage::Create,
+ SvxStdParagraphTabPage::GetRanges );
+ AddTabPage(TP_PARA_ALIGN, SvxParaAlignTabPage::Create,
+ SvxParaAlignTabPage::GetRanges );
+
+ AddTabPage(TP_PARA_EXT, SvxExtParagraphTabPage::Create,
+ SvxExtParagraphTabPage::GetRanges );
+
+ AddTabPage(TP_CHAR_STD, SvxCharStdPage::Create,
+ SvxCharStdPage::GetRanges );
+ AddTabPage(TP_CHAR_EXT, SvxCharExtPage::Create,
+ SvxCharExtPage::GetRanges );
+
+ AddTabPage(TP_TABULATOR, SvxTabulatorTabPage::Create,
+ SvxTabulatorTabPage::GetRanges );
+
+ AddTabPage(TP_NUMPARA, SwParagraphNumTabPage::Create,
+ SwParagraphNumTabPage::GetRanges);
+ AddTabPage(TP_DROPCAPS, SwDropCapsPage::Create,
+ SwDropCapsPage::GetRanges );
+
+ AddTabPage(TP_BACKGROUND, SvxBackgroundTabPage::Create,
+ SvxBackgroundTabPage::GetRanges );
+ AddTabPage(TP_BORDER, SvxBorderTabPage::Create,
+ SvxBorderTabPage::GetRanges );
+
+ AddTabPage( TP_CONDCOLL, SwCondCollPage::Create,
+ SwCondCollPage::GetRanges );
+ if( (!bNewStyle && RES_CONDTXTFMTCOLL != ((SwDocStyleSheet&)rBase).GetCollection()->Which())
+ || nHtmlMode & HTMLMODE_ON )
+ RemoveTabPage(TP_CONDCOLL);
+
+ if(nHtmlMode & HTMLMODE_ON)
+ {
+ OfaHtmlOptions* pHtmlOpt = OFF_APP()->GetHtmlOptions();
+ if (!pHtmlOpt->IsPrintLayoutExtension())
+ RemoveTabPage(TP_PARA_EXT);
+ RemoveTabPage(TP_TABULATOR);
+ RemoveTabPage(TP_NUMPARA);
+ if(!(nHtmlMode & HTMLMODE_FULL_STYLES))
+ {
+ RemoveTabPage(TP_BACKGROUND);
+ RemoveTabPage(TP_DROPCAPS);
+ }
+ if(!(nHtmlMode & HTMLMODE_PARA_BORDER))
+ RemoveTabPage(TP_BORDER);
+ }
+ }
+ break;
+ // Rahmenvorlagen
+ case SFX_STYLE_FAMILY_FRAME:
+ {
+ AddTabPage(TP_FRM_STD, SwFrmPage::Create,
+ SwFrmPage::GetRanges );
+ AddTabPage(TP_FRM_ADD, SwFrmAddPage::Create,
+ SwFrmAddPage::GetRanges );
+ AddTabPage(TP_FRM_WRAP, SwWrapTabPage::Create,
+ SwWrapTabPage::GetRanges );
+
+ AddTabPage(TP_BACKGROUND, SvxBackgroundTabPage::Create,
+ SvxBackgroundTabPage::GetRanges );
+ AddTabPage(TP_BORDER, SvxBorderTabPage::Create,
+ SvxBorderTabPage::GetRanges );
+
+ AddTabPage(TP_COLUMN, SwColumnPage::Create,
+ SwColumnPage::GetRanges );
+
+ AddTabPage( TP_MACRO_ASSIGN, SfxSmallMacroTabPage::Create, 0);
+
+ // Auskommentiert wegen Bug #45776 (per default keine Breite&Groesse in Rahmenvorlagen)
+/* SwFmtFrmSize aSize( (const SwFmtFrmSize&)rBase.
+ GetItemSet().Get(RES_FRM_SIZE));
+ if( !aSize.GetWidth() )
+ {
+ aSize.SetWidth( DFLT_WIDTH );
+ aSize.SetHeight( DFLT_HEIGHT );
+ rBase.GetItemSet().Put( aSize );
+ }*/
+ break;
+ }
+ // Seitenvorlagen
+ case SFX_STYLE_FAMILY_PAGE:
+ {
+ AddTabPage(TP_BACKGROUND, SvxBackgroundTabPage::Create,
+ SvxBackgroundTabPage::GetRanges );
+ AddTabPage(TP_HEADER_PAGE, String(SW_RES(STR_PAGE_HEADER)),
+ SvxHeaderPage::Create,
+ SvxHeaderPage::GetRanges );
+ AddTabPage(TP_FOOTER_PAGE, String(SW_RES(STR_PAGE_FOOTER)),
+ SvxFooterPage::Create,
+ SvxFooterPage::GetRanges );
+ if(bColumn)
+ SetCurPageId(TP_COLUMN);
+
+ AddTabPage(TP_PAGE_STD, String(SW_RES(STR_PAGE_STD)),
+ SvxPageDescPage::Create,
+ SvxPageDescPage::GetRanges,
+ FALSE,
+ 1 ); // nach der Verwalten-Page
+ if(!pActShell || 0 == ::GetHtmlMode(pWrtShell->GetView().GetDocShell()))
+ {
+ AddTabPage(TP_BORDER, String(SW_RES(STR_PAGE_BORDER)),
+ SvxBorderTabPage::Create,
+ SvxBorderTabPage::GetRanges );
+ AddTabPage(TP_COLUMN, String(SW_RES(STR_PAGE_COLUMN)),
+ SwColumnPage::Create,
+ SwColumnPage::GetRanges );
+ AddTabPage(TP_FOOTNOTE_PAGE, String(SW_RES(STR_PAGE_FOOTNOTE)),
+ SwFootNotePage::Create,
+ SwFootNotePage::GetRanges );
+ }
+
+
+ }
+ break;
+ // Numerierungsvorlagen
+ case SFX_STYLE_FAMILY_PSEUDO:
+ {
+ AddTabPage(RID_SVXPAGE_PICK_SINGLE_NUM, &SvxSingleNumPickTabPage::Create, 0);
+ AddTabPage(RID_SVXPAGE_PICK_BULLET, &SvxBulletPickTabPage::Create, 0);
+ AddTabPage(RID_SVXPAGE_PICK_NUM, &SvxNumPickTabPage::Create, 0);
+ AddTabPage(RID_SVXPAGE_PICK_BMP, &SvxBitmapPickTabPage::Create, 0);
+ AddTabPage(RID_SVXPAGE_NUM_OPTIONS, &SvxNumOptionsTabPage::Create, 0);
+ AddTabPage(RID_SVXPAGE_NUM_POSITION,&SvxNumPositionTabPage::Create, 0);
+
+/* const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == rBase.GetItemSet().GetItemState(
+ FN_PARAM_ACT_NUMBER, FALSE, &pItem ))
+ {
+// pActNum = (ActNumberFormat*)((const SwPtrItem*)pItem)->GetValue();
+ }
+*/
+ }
+ break;
+
+ default:
+ ASSERT(!this, "Falsche Familie");
+
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwTemplateDlg::~SwTemplateDlg()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+short SwTemplateDlg::Ok()
+{
+ short nRet = SfxTabDialog::Ok();
+ if( RET_OK == nRet )
+ {
+ const SfxPoolItem *pOutItem, *pExItem;
+ if( SFX_ITEM_SET == pExampleSet->GetItemState(
+ SID_ATTR_NUMBERING_RULE, FALSE, &pExItem ) &&
+ ( !GetOutputItemSet() ||
+ SFX_ITEM_SET != GetOutputItemSet()->GetItemState(
+ SID_ATTR_NUMBERING_RULE, FALSE, &pOutItem ) ||
+ *pExItem != *pOutItem ))
+ {
+ if( GetOutputItemSet() )
+ ((SfxItemSet*)GetOutputItemSet())->Put( *pExItem );
+ else
+ nRet = RET_CANCEL;
+ }
+ }
+ else
+ //JP 09.01.98 Bug #46446#:
+ // das ist der Ok - Handler also muss auf OK defaultet werden!
+ nRet = RET_OK;
+ return nRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+const SfxItemSet* SwTemplateDlg::GetRefreshedSet()
+{
+ delete GetInputSetImpl();
+ return new SfxItemSet(GetStyleSheet().GetItemSet());
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwTemplateDlg::PageCreated( USHORT nId, SfxTabPage &rPage )
+{
+ //Namen der Vorlagen und Metric setzen
+ String sNumCharFmt; GetDocPoolNm( RES_POOLCHR_NUM_LEVEL, sNumCharFmt);
+ String sBulletCharFmt; GetDocPoolNm( RES_POOLCHR_BUL_LEVEL, sBulletCharFmt);
+
+ switch( nId )
+ {
+ case TP_CHAR_STD:
+ {
+ ASSERT(::GetActiveView(), "keine View aktiv");
+
+ SvxFontListItem aFontListItem( *( (SvxFontListItem*)::GetActiveView()->
+ GetDocShell()->GetItem( SID_ATTR_CHAR_FONTLIST ) ) );
+
+ ((SvxCharStdPage&)rPage).SetFontList(aFontListItem);
+
+ if(rPage.GetItemSet().GetParent() && 0 == (nHtmlMode & HTMLMODE_ON ))
+ ((SvxCharStdPage&)rPage).EnableRelativeMode();
+ }
+ break;
+
+ case TP_CHAR_EXT:
+ ((SvxCharExtPage&)rPage).EnableFlash();
+ break;
+
+ case TP_PARA_STD:
+ if( rPage.GetItemSet().GetParent() )
+ {
+ ((SvxStdParagraphTabPage&)rPage).EnableRelativeMode();
+ ((SvxStdParagraphTabPage&)rPage).EnableRegisterMode();
+ ((SvxStdParagraphTabPage&)rPage).EnableAutoFirstLine();
+ ((SvxStdParagraphTabPage&)rPage).EnableAbsLineDist(MM50/2);
+ }
+ break;
+ case TP_NUMPARA:
+ {
+ ListBox & rBox = ((SwParagraphNumTabPage&)rPage).GetStyleBox();
+ SfxStyleSheetBasePool* pPool = pWrtShell->GetView().GetDocShell()->GetStyleSheetPool();
+ pPool->SetSearchMask(SFX_STYLE_FAMILY_PSEUDO, SFXSTYLEBIT_ALL);
+ const SfxStyleSheetBase* pBase = pPool->First();
+ SvStringsISortDtor aNames;
+ while(pBase)
+ {
+ aNames.Insert(new String(pBase->GetName()));
+ pBase = pPool->Next();
+ }
+ for(USHORT i = 0; i < aNames.Count(); i++)
+ rBox.InsertEntry(*aNames.GetObject(i));
+ }
+ break;
+ case TP_PARA_ALIGN:
+ ((SvxParaAlignTabPage&)rPage).EnableJustifyExt();
+ break;
+
+ case TP_FRM_STD:
+ ((SwFrmPage&)rPage).SetNewFrame( TRUE );
+ ((SwFrmPage&)rPage).SetFormatUsed( TRUE );
+ break;
+
+ case TP_FRM_ADD:
+ ((SwFrmAddPage&)rPage).SetFormatUsed(TRUE);
+ ((SwFrmAddPage&)rPage).SetNewFrame(TRUE);
+ break;
+
+ case TP_FRM_WRAP:
+ ((SwWrapTabPage&)rPage).SetFormatUsed( TRUE, FALSE );
+ break;
+
+ case TP_COLUMN:
+ if( nType == SFX_STYLE_FAMILY_FRAME )
+ ((SwColumnPage&)rPage).SetFrmMode(TRUE);
+ ((SwColumnPage&)rPage).SetFormatUsed( TRUE );
+ break;
+
+ case TP_BACKGROUND:
+ if( SFX_STYLE_FAMILY_PARA == nType )
+ ((SvxBackgroundTabPage&)rPage).ShowParaControl();
+ if( SFX_STYLE_FAMILY_CHAR != nType )
+ ((SvxBackgroundTabPage&)rPage).ShowSelector();
+ break;
+
+ case TP_CONDCOLL:
+ ((SwCondCollPage&)rPage).SetCollection(
+ ((SwDocStyleSheet&)GetStyleSheet()).GetCollection(), bNewStyle );
+ break;
+
+ case TP_PAGE_STD:
+ if(0 == (nHtmlMode & HTMLMODE_ON ))
+ {
+ List aList;
+ String* pNew = new String;
+ GetDocPoolNm( RES_POOLCOLL_TEXT, *pNew );
+ aList.Insert( pNew, (ULONG)0 );
+ if( pWrtShell )
+ {
+ SfxStyleSheetBasePool* pStyleSheetPool = pWrtShell->
+ GetView().GetDocShell()->GetStyleSheetPool();
+ pStyleSheetPool->SetSearchMask(SFX_STYLE_FAMILY_PARA);
+ SfxStyleSheetBase *pStyle = pStyleSheetPool->First();
+ while(pStyle)
+ {
+ aList.Insert( new String(pStyle->GetName()),
+ aList.Count());
+ pStyle = pStyleSheetPool->Next();
+ }
+ }
+ ((SvxPageDescPage&)rPage).SetCollectionList(&aList);
+ for( USHORT i = (USHORT)aList.Count(); i; --i )
+ delete (String*)aList.Remove(i);
+ }
+ break;
+
+ case TP_MACRO_ASSIGN:
+ SwMacroAssignDlg::AddEvents( (SfxSmallMacroTabPage&)rPage, MACASSGN_ALLFRM);
+ break;
+
+ case RID_SVXPAGE_PICK_NUM:
+ ((SvxNumPickTabPage&)rPage).SetCharFmtNames(sNumCharFmt, sBulletCharFmt);
+ break;
+ case RID_SVXPAGE_NUM_OPTIONS:
+ {
+ ((SvxNumOptionsTabPage&)rPage).SetCharFmts(sNumCharFmt, sBulletCharFmt);
+ ListBox& rCharFmtLB = ((SvxNumOptionsTabPage&)rPage).GetCharFmtListBox();
+ // Zeichenvorlagen sammeln
+ rCharFmtLB.Clear();
+ rCharFmtLB.InsertEntry( ViewShell::GetShellRes()->aStrNone );
+ SwDocShell* pDocShell = ::GetActiveWrtShell()->GetView().GetDocShell();
+ ::FillCharStyleListBox(rCharFmtLB, pDocShell);
+ FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell));
+ ((SvxNumOptionsTabPage&)rPage).SetMetric(eMetric);
+ }
+ break;
+ case RID_SVXPAGE_NUM_POSITION:
+ {
+ SwDocShell* pDocShell = ::GetActiveWrtShell()->GetView().GetDocShell();
+ FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell));
+ ((SvxNumPositionTabPage&)rPage).SetMetric(eMetric);
+ }
+ break;
+ case RID_SVXPAGE_PICK_BULLET :
+ ((SvxBulletPickTabPage&)rPage).SetCharFmtName(sBulletCharFmt);
+ break;
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.88 2000/09/18 16:05:31 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.87 2000/07/27 21:15:53 jp
+ opt: get template names direct from the doc and don't load it from the resource
+
+ Revision 1.86 2000/02/11 14:47:00 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.85 1999/01/05 09:11:44 OS
+ #60606# #52654# Numerierungsregel an Styles wieder korrekt
+
+
+ Rev 1.84 05 Jan 1999 10:11:44 OS
+ #60606# #52654# Numerierungsregel an Styles wieder korrekt
+
+ Rev 1.83 17 Nov 1998 10:51:44 OS
+ #58263# Numerierungs-Tabseiten aus dem Svx
+
+ Rev 1.82 17 Jul 1998 10:18:28 OS
+ SfxxSmallMacroTabPage einsetzen #52809#
+
+ Rev 1.81 01 Jul 1998 17:41:16 OS
+ keine rel. FontHeight im Html #51938#
+
+ Rev 1.80 24 Apr 1998 11:06:24 OS
+ Format-Flag fuer Spalten-Page setzen
+
+ Rev 1.79 22 Apr 1998 13:35:04 OS
+ PrintingExtensions im HTML
+
+ Rev 1.78 16 Apr 1998 15:56:40 OS
+ kein RegisterMode im HTML
+
+ Rev 1.77 31 Mar 1998 10:20:56 OM
+ #45776 Per default kein Size-Item in Rahmenvorlagen
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/fmtui/tmpdlg.src b/sw/source/ui/fmtui/tmpdlg.src
new file mode 100644
index 000000000000..831a7ad0a9f9
--- /dev/null
+++ b/sw/source/ui/fmtui/tmpdlg.src
@@ -0,0 +1,1283 @@
+/*************************************************************************
+ *
+ * $RCSfile: tmpdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SFX_HRC
+#include <sfx2/sfx.hrc>
+#endif
+#include "fmtui.hrc"
+#include "globals.hrc"
+#include "svx/dialogs.hrc"
+TabDialog DLG_TEMPLATE_1
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Zeichenvorlage" ;
+ Text [ ENGLISH ] = "Character Style" ;
+ Text [ norwegian ] = "Character Style" ;
+ Text [ italian ] = "Modello di carattere" ;
+ Text [ portuguese_brazilian ] = "Estilo de caracter" ;
+ Text [ portuguese ] = "Estilos de caracteres" ;
+ Text [ finnish ] = "Merkkityyli" ;
+ Text [ danish ] = "Tegntypografi" ;
+ Text [ french ] = "Style de caractères" ;
+ Text [ swedish ] = "Teckenformatmall" ;
+ Text [ dutch ] = "Tekenopmaakprofiel" ;
+ Text [ spanish ] = "Estilo de carácter" ;
+ Text [ english_us ] = "Character Style" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_CHAR_STD ;
+ Text = "Schrift" ;
+ Text [ ENGLISH ] = "Font" ;
+ Text [ norwegian ] = "Skrift" ;
+ Text [ italian ] = "Carattere" ;
+ Text [ portuguese_brazilian ] = "Fonte" ;
+ Text [ portuguese ] = "Tipo de letra" ;
+ Text [ finnish ] = "Fontti" ;
+ Text [ danish ] = "Skrifttype" ;
+ Text [ french ] = "Police" ;
+ Text [ swedish ] = "Teckensnitt" ;
+ Text [ dutch ] = "Lettertype" ;
+ Text [ spanish ] = "Fuente" ;
+ Text [ english_us ] = "Font" ;
+ PageResID = TP_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 = TP_CHAR_EXT ;
+ Text = "Schrifteffekt" ;
+ Text [ ENGLISH ] = "Font Effects" ;
+ Text [ norwegian ] = "Font Effects" ;
+ Text [ italian ] = "Effetto carattere" ;
+ Text [ portuguese_brazilian ] = "Efeitos de fonte" ;
+ Text [ portuguese ] = "Efeitos do tipo de letra" ;
+ Text [ finnish ] = "Fontin tehosteet" ;
+ Text [ danish ] = "Skrifteffekt" ;
+ Text [ french ] = "Effet de caractère" ;
+ Text [ swedish ] = "Teckensnittseffekt" ;
+ Text [ dutch ] = "Schrifteffect" ;
+ Text [ spanish ] = "Efectos de fuente" ;
+ Text [ english_us ] = "Font Effects" ;
+ PageResID = TP_CHAR_EXT ;
+ Text[ chinese_simplified ] = "×ÖÌåЧ¹û";
+ Text[ russian ] = "Ýôôåêòû øðèôòà";
+ Text[ polish ] = "Efekty czcionki";
+ Text[ japanese ] = "Ì«ÝÄŒø‰Ê";
+ Text[ chinese_traditional ] = "¦r«¬®ÄªG";
+ Text[ arabic ] = "ÊÃËíÑÇÊ ÇáÎØæØ";
+ Text[ greek ] = "ÅöÝ ÷áñáêôÞñùí";
+ Text[ korean ] = "±Û²Ã È¿°ú";
+ Text[ turkish ] = "Yazýtipi seçenekleri";
+ 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" ;
+ PageResID = TP_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 ] = " ";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ";
+ Text[ russian ] = "Ñòèëü çíàêîâ";
+ Text[ polish ] = "Styl znaku";
+ Text[ japanese ] = "•¶Žš½À²Ù";
+ Text[ chinese_traditional ] = "¦r«¬¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÇáÃÍÑÝ";
+ Text[ greek ] = "Óôõë ÷áñáêôÞñùí";
+ Text[ korean ] = "ÅؽºÆ® À¯Çü";
+ Text[ turkish ] = "Karakter biçimi";
+ Text[ language_user1 ] = " ";
+};
+TabDialog DLG_TEMPLATE_2
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Absatzvorlage" ;
+ Text [ ENGLISH ] = "Paragraph Style" ;
+ Text [ norwegian ] = "Paragraph Style" ;
+ Text [ italian ] = "Modello paragrafo" ;
+ Text [ portuguese_brazilian ] = "Estilo de parágrafo" ;
+ Text [ portuguese ] = "Estilo de parágrafo" ;
+ Text [ finnish ] = "Kappaletyyli" ;
+ Text [ danish ] = "Afsnitstypografi" ;
+ Text [ french ] = "Style de paragraphe" ;
+ Text [ swedish ] = "Styckeformatmall" ;
+ Text [ dutch ] = "Alinea-opmaakprofiel" ;
+ Text [ spanish ] = "Estilo de párrafo" ;
+ Text [ english_us ] = "Paragraph Style" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_PARA_STD ;
+ /* ### 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 ] = "Rientro e spaziatura" ;
+ 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 ] = "Inspringen en afstanden" ;
+ Text [ spanish ] = "Sangrías y espacios" ;
+ Text [ english_us ] = "Indents & Spacing" ;
+ PageResID = TP_PARA_STD ;
+ Text[ chinese_simplified ] = "Ëõ½øºÍ¼ä¸ô";
+ Text[ russian ] = "Îòñòóïû è èíòåðâàëû";
+ Text[ polish ] = "Wciêcia i odstêpy";
+ Text[ japanese ] = "²ÝÃÞÝÄ‚ÆŠÔŠu";
+ Text[ chinese_traditional ] = "ÁY±Æ©M¶¡¹j";
+ Text[ arabic ] = "ÇáÅÒÇÍÉ æÇáÊÈÇÚÏ";
+ Text[ greek ] = "Åóï÷Ýò êáé áðïóôÜóåéò";
+ Text[ korean ] = "µé¿©¾²±â¿Í °£°Ý";
+ Text[ turkish ] = "Girinti ve aralýklar";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_PARA_ALIGN ;
+ Text = "Ausrichtung" ;
+ Text [ ENGLISH ] = "Alignment" ;
+ PageResID = TP_PARA_ALIGN ;
+ 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 = TP_PARA_EXT ;
+ /* ### ACHTUNG: Neuer Text in Resource? Textfluß : Textflu˜ */
+ Text = "Textfluss" ;
+ Text [ ENGLISH ] = "Text Flow" ;
+ Text [ norwegian ] = "Text Flow" ;
+ Text [ italian ] = "Flusso di testo" ;
+ Text [ portuguese_brazilian ] = "Fluxo do Texto" ;
+ Text [ portuguese ] = "Fluxo de texto" ;
+ Text [ finnish ] = "Tekstin juoksutus" ;
+ Text [ danish ] = "Tekstretning" ;
+ Text [ french ] = "Enchaînements" ;
+ Text [ swedish ] = "Textflöde" ;
+ Text [ dutch ] = "Tekstverloop" ;
+ Text [ spanish ] = "Flujo del texto" ;
+ Text [ english_us ] = "Text Flow" ;
+ PageResID = TP_PARA_EXT ;
+ Text[ chinese_simplified ] = "»»ÐкͷÖÒ³";
+ Text[ russian ] = "Ïîëîæåíèå íà ñòðàíèöå";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "‘ÌÙ";
+ Text[ chinese_traditional ] = "´«¦æ©M¤À­¶";
+ Text[ arabic ] = "ÇäÓíÇÈ ÇáäÕ";
+ Text[ greek ] = "ÑïÞ êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® È帧";
+ Text[ turkish ] = "Metin akýþý";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_CHAR_STD ;
+ Text = "Schrift" ;
+ Text [ ENGLISH ] = "Font" ;
+ Text [ norwegian ] = "Skrift" ;
+ Text [ italian ] = "Carattere" ;
+ Text [ portuguese_brazilian ] = "Fonte" ;
+ Text [ portuguese ] = "Tipo de letra" ;
+ Text [ finnish ] = "Fontti" ;
+ Text [ danish ] = "Skrifttype" ;
+ Text [ french ] = "Police" ;
+ Text [ swedish ] = "Teckensnitt" ;
+ Text [ dutch ] = "Lettertype" ;
+ Text [ spanish ] = "Fuente" ;
+ Text [ english_us ] = "Font" ;
+ PageResID = TP_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 = TP_CHAR_EXT ;
+ Text = "Schrifteffekte" ;
+ Text [ ENGLISH ] = "Font Effects" ;
+ Text [ norwegian ] = "Font Effects" ;
+ Text [ italian ] = "Effetto carattere" ;
+ Text [ portuguese_brazilian ] = "Efeitos de fonte" ;
+ Text [ portuguese ] = "Efeitos do tipo de letra" ;
+ Text [ finnish ] = "Fontin tehosteet" ;
+ Text [ danish ] = "Skrifteffekter" ;
+ Text [ french ] = "Effets de caractère" ;
+ Text [ swedish ] = "Teckensnittseffekter" ;
+ Text [ dutch ] = "Schrifteffecten" ;
+ Text [ spanish ] = "Efectos de fuente" ;
+ Text [ english_us ] = "Font Effects" ;
+ PageResID = TP_CHAR_EXT ;
+ Text[ chinese_simplified ] = "×ÖÌåЧ¹û";
+ Text[ russian ] = "Ýôôåêòû øðèôòà";
+ Text[ polish ] = "Efekty czcionki";
+ Text[ japanese ] = "Ì«ÝÄŒø‰Ê";
+ Text[ chinese_traditional ] = "¦r«¬®ÄªG";
+ Text[ arabic ] = "ÊÃËíÑÇÊ ÇáÎØæØ";
+ Text[ greek ] = "ÅöÝ ãñáììáôïóåéñÜò";
+ Text[ korean ] = "±Û²Ã È¿°ú";
+ Text[ turkish ] = "Yazýtipi seçenekleri";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_NUMPARA ;
+ Text = "Nummerierung" ;
+ Text [ ENGLISH ] = "Numbering" ;
+ Text [ english_us ] = "Numbering" ;
+ Text [ portuguese_brazilian ] = "Numerierung" ;
+ Text [ swedish ] = "Numrering" ;
+ Text [ danish ] = "Nummerering" ;
+ Text [ italian ] = "Numerazione" ;
+ Text [ spanish ] = "Numeración" ;
+ Text [ french ] = "Numérotation" ;
+ Text [ dutch ] = "Nummering" ;
+ Text [ portuguese ] = "Numeração" ;
+ Text[ chinese_simplified ] = "񅧏";
+ Text[ russian ] = "Íóìåðàöèÿ";
+ Text[ polish ] = "Numeracja";
+ Text[ japanese ] = "”Ô†•t‚¯";
+ Text[ chinese_traditional ] = "½s¸¹";
+ Text[ arabic ] = "ÇáÊÑÞíã";
+ Text[ greek ] = "Áñßèìçóç";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Numaralama";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_TABULATOR ;
+ Text = "Tabulatoren" ;
+ Text [ ENGLISH ] = "Tabs" ;
+ Text [ norwegian ] = "Tabulatorer" ;
+ Text [ italian ] = "Tabulazioni" ;
+ Text [ portuguese_brazilian ] = "Tabulações" ;
+ Text [ portuguese ] = "Tabulações" ;
+ Text [ finnish ] = "Sarkaimet" ;
+ Text [ danish ] = "Tabulatorer" ;
+ Text [ french ] = "Tabulations" ;
+ Text [ swedish ] = "Tabulatorer" ;
+ Text [ dutch ] = "Tabs" ;
+ Text [ spanish ] = "Tabulaciones" ;
+ Text [ english_us ] = "Tabs" ;
+ PageResID = TP_TABULATOR ;
+ Text[ chinese_simplified ] = "ÖƱí·û";
+ Text[ russian ] = "Òàáóëÿòîðû";
+ Text[ polish ] = "Tabulatory";
+ Text[ japanese ] = "ÀÌÞ";
+ Text[ chinese_traditional ] = "»sªí²Å";
+ Text[ arabic ] = "ÚáÇãÇÊ ÇáÌÏæáÉ";
+ Text[ greek ] = "ÓôçëïèÝôåò";
+ Text[ korean ] = "ÅÇ";
+ Text[ turkish ] = "Sekmeler";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_DROPCAPS ;
+ Text = "Initialen" ;
+ Text [ ENGLISH ] = "Drop Caps" ;
+ Text [ norwegian ] = "Drop Caps" ;
+ Text [ italian ] = "Capolettera" ;
+ Text [ portuguese_brazilian ] = "Capitulares descidas" ;
+ Text [ portuguese ] = "Iniciais" ;
+ Text [ finnish ] = "Anfangit" ;
+ Text [ danish ] = "Initialer" ;
+ Text [ french ] = "Lettrines" ;
+ Text [ swedish ] = "Anfangsbokstäver" ;
+ Text [ dutch ] = "Initialen" ;
+ Text [ spanish ] = "Iniciales" ;
+ Text [ english_us ] = "Drop Caps" ;
+ PageResID = TP_DROPCAPS ;
+ Text[ chinese_simplified ] = "×ÖÊ×´óд";
+ Text[ russian ] = "Èíèöèàëû";
+ Text[ polish ] = "Inicja³y";
+ Text[ japanese ] = "ÄÞÛ¯Ìß·¬¯Ìß";
+ Text[ chinese_traditional ] = "¦r­º¤j¼g";
+ Text[ arabic ] = "ÇáÃÍÑÝ ÇáÇÓÊåáÇáíÉ";
+ Text[ greek ] = "Áñ÷éãñÜììáôá";
+ Text[ korean ] = "´Ü¶ô ù¹®ÀÚ Àå½Ä";
+ Text[ turkish ] = "Baþharfler";
+ 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" ;
+ PageResID = TP_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_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" ;
+ PageResID = TP_BORDER ;
+ 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_CONDCOLL ;
+ PageResID = TP_CONDCOLL ;
+ Text = "Bedingung" ;
+ Text [ English ] = "Condition" ;
+ Text [ english_us ] = "Condition" ;
+ Text [ italian ] = "Condizione" ;
+ Text [ spanish ] = "Condición" ;
+ Text [ french ] = "Condition" ;
+ Text [ dutch ] = "Voorwaarde" ;
+ Text [ swedish ] = "Villkor" ;
+ Text [ danish ] = "Betingelse" ;
+ Text [ portuguese_brazilian ] = "Bedingung" ;
+ Text [ portuguese ] = "Condição" ;
+ 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 ] = " ";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "¶ÎÂäÑùʽ";
+ Text[ russian ] = "Ñòèëü àáçàöà";
+ Text[ polish ] = "Styl akapitu";
+ Text[ japanese ] = "’i—Ž½À²Ù";
+ Text[ chinese_traditional ] = "¬q¸¨¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÝÞÑÉ";
+ Text[ greek ] = "Ðñüôõðï ðáñáãñÜöïõ";
+ Text[ korean ] = "´Ü¶ô À¯Çü";
+ Text[ turkish ] = "Paragraf biçimi";
+ Text[ language_user1 ] = " ";
+};
+TabDialog DLG_TEMPLATE_4
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Seitenvorlage" ;
+ Text [ ENGLISH ] = "Page Style" ;
+ // Text[norwegian_wrong] = "Sidetyper";
+ // Text[italian_wrong] = "Stili pagina";
+ // Text[portuguese_brazilian_wrong] = "Estilos da Página ";
+ // Text[portuguese_wrong] = "Estilos da Página ";
+ // Text[finnish_wrong] = "Sivutyylit";
+ // Text[danish_wrong] = "Sidelayout";
+ // Text[french_wrong] = "Styles de page";
+ // Text[swedish_wrong] = "Sidformat";
+ // Text[dutch_wrong] = "Pagina-opmaakprofielen";
+ // Text[spanish_wrong] = "Estilos de página";
+ Text [ english_us ] = "Page Style" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ 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" ;
+ PageResID = TP_PAGE_STD ;
+ };*/
+ 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" ;
+ PageResID = TP_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_BORDER ;
+ Text = "Umrandung" ;
+ Text [ ENGLISH ] = "Border" ;
+ Text [ norwegian ] = "Border" ;
+ Text [ italian ] = "Bordo" ;
+ Text [ portuguese_brazilian ] = "Borda" ;
+ Text [ portuguese ] = "Contorno" ;
+ Text [ finnish ] = "Reunaviiva" ;
+ Text [ danish ] = "Rækkefølge" ;
+ Text [ french ] = "Bordure" ;
+ Text [ swedish ] = "Kantlinje" ;
+ Text [ dutch ] = "Kader" ;
+ Text [ spanish ] = "Borde" ;
+ Text [ english_us ] = "Borders" ;
+ PageResID = TP_BORDER ;
+ };
+ PageItem
+ {
+ Identifier = TP_HEADER_PAGE ;
+ Text = "Kopfzeile" ;
+ Text [ ENGLISH ] = "Header" ;
+ Text [ norwegian ] = "Header" ;
+ Text [ italian ] = "Intestazione" ;
+ Text [ portuguese_brazilian ] = "Cabeçalho" ;
+ Text [ portuguese ] = "Cabeçalho" ;
+ Text [ finnish ] = "Yläteksti" ;
+ Text [ danish ] = "Toptekst" ;
+ Text [ french ] = "En-tête page" ;
+ Text [ swedish ] = "Sidhuvud" ;
+ Text [ dutch ] = "Koptekst" ;
+ Text [ spanish ] = "Línea de encabezamiento" ;
+ Text [ english_us ] = "Header" ;
+ PageResID = TP_HEADER_PAGE ;
+ };
+ PageItem
+ {
+ Identifier = TP_FOOTER_PAGE ;
+ 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 ] = "Bundtekst" ;
+ Text [ french ] = "Pied de page" ;
+ Text [ swedish ] = "Sidfot" ;
+ Text [ dutch ] = "Voettekst" ;
+ Text [ spanish ] = "Pie de página" ;
+ Text [ english_us ] = "Footer" ;
+ PageResID = TP_FOOTER_PAGE ;
+ };
+ PageItem
+ {
+ Identifier = TP_COLUMN ;
+ Text = "Spalten" ;
+ Text [ ENGLISH ] = "Columns" ;
+ Text [ norwegian ] = "Kolonner" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ portuguese_brazilian ] = "Colunas" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ finnish ] = "Sarakkeet" ;
+ Text [ danish ] = "Spalter" ;
+ Text [ french ] = "Arrière-plan" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ spanish ] = "Columnas" ;
+ Text [ english_us ] = "Columns" ;
+ PageResID = TP_COLUMN ;
+ };
+ PageItem
+ {
+ Identifier = TP_FOOTNOTE_PAGE ;
+ Text = "Fußnote" ;
+ Text [ ENGLISH ] = "Footnote" ;
+ Text [ norwegian ] = "Footnote" ;
+ Text [ italian ] = "Nota a piè di pagina" ;
+ Text [ portuguese_brazilian ] = "Nota de pé de página" ;
+ Text [ portuguese ] = "Nota de rodapé" ;
+ Text [ finnish ] = "Alaviite" ;
+ Text [ danish ] = "Fodnote" ;
+ Text [ french ] = "Note de bas de page" ;
+ Text [ swedish ] = "Fotnot" ;
+ Text [ dutch ] = "Voetnoot" ;
+ Text [ spanish ] = "Nota al pie de página" ;
+ Text [ english_us ] = "Footnote" ;
+ PageResID = TP_FOOTNOTE_PAGE ;
+ };*/
+ };
+ };
+ Text [ dutch ] = "Pagina-opmaakprofiel" ;
+ Text [ italian ] = "Modello di pagina" ;
+ Text [ spanish ] = "Estilo de página" ;
+ Text [ french ] = "Style de page" ;
+ Text [ swedish ] = "Sidformatmall" ;
+ Text [ danish ] = "Sidetypografi" ;
+ Text [ portuguese ] = "Estilo de página" ;
+ Text [ portuguese_brazilian ] = "Seitenvorlage" ;
+ 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_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 ] = " ";
+};
+String STR_PAGE_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 ] = " ";
+};
+String STR_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 ] = " ";
+};
+String STR_PAGE_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_PAGE_COLUMN
+{
+ Text = "Spalten" ;
+ Text [ ENGLISH ] = "Columns" ;
+ Text [ norwegian ] = "Kolonner" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ portuguese_brazilian ] = "Colunas" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ finnish ] = "Sarakkeet" ;
+ Text [ danish ] = "Kolonner" ;
+ Text [ french ] = "Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ spanish ] = "Columnas" ;
+ Text [ english_us ] = "Columns" ;
+ Text[ chinese_simplified ] = "À¸";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "’i‘g‚Ý";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÇáÃÚãÏÉ";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ Text[ language_user1 ] = " ";
+};
+String STR_PAGE_FOOTNOTE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Fußnote : Fu˜note */
+ Text = "Fußnote" ;
+ Text [ ENGLISH ] = "Footnote" ;
+ Text [ norwegian ] = "Footnote" ;
+ Text [ italian ] = "Nota a piè pagina" ;
+ Text [ portuguese_brazilian ] = "Nota de pé de página" ;
+ Text [ portuguese ] = "Nota de rodapé" ;
+ Text [ finnish ] = "Alaviite" ;
+ Text [ danish ] = "Fodnote" ;
+ Text [ french ] = "Note de bas de page" ;
+ Text [ swedish ] = "Fotnot" ;
+ Text [ dutch ] = "Voetnoot" ;
+ Text [ spanish ] = "Nota al pie" ;
+ Text [ english_us ] = "Footnote" ;
+ Text[ chinese_simplified ] = "×¢½Å";
+ Text[ russian ] = "Ñíîñêà";
+ Text[ polish ] = "Przypis dolny";
+ Text[ japanese ] = "‹r’";
+ Text[ chinese_traditional ] = "µù¸}";
+ Text[ arabic ] = "ÍÇÔíÉ ÓÝáíÉ";
+ Text[ greek ] = "Õðïóçìåßùóç";
+ Text[ korean ] = "°¢ÁÖ";
+ Text[ turkish ] = "Dipnot";
+ Text[ language_user1 ] = " ";
+};
+TabDialog DLG_TEMPLATE_3
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Rahmenvorlage" ;
+ Text [ ENGLISH ] = "Frame Style" ;
+ // Text[norwegian_wrong] = "Rammemaler";
+ // Text[italian_wrong] = "Stili cornice";
+ // Text[portuguese_brazilian_wrong] = "Estilos de Moldura";
+ // Text[portuguese_wrong] = "Estilos de Moldura";
+ // Text[finnish_wrong] = "Kehystyylit";
+ // Text[danish_wrong] = "Rammelayout";
+ // Text[french_wrong] = "Styles d'encadrement";
+ // Text[swedish_wrong] = "Ramformat";
+ // Text[dutch_wrong] = "Kaderopmaakprofielen";
+ // Text[spanish_wrong] = "Estilos de marco";
+ Text [ english_us ] = "Frame Style" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_FRM_STD ;
+ Text = "Typ" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "Tipo" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "Typ" ;
+ Text [ dutch ] = "Type" ;
+ Text [ spanish ] = "Tipo" ;
+ Text [ english_us ] = "Type" ;
+ PageResID = TP_FRM_STD ;
+ Text[ chinese_simplified ] = "ÀàÐÍ";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Ží—Þ";
+ Text[ chinese_traditional ] = "Ãþ«¬";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_FRM_ADD ;
+ PageResID = TP_FRM_ADD ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zusätze : Zusõtze */
+ Text = "Zusätze" ;
+ Text [ ENGLISH ] = "Additions" ;
+ Text [ english_us ] = "Options" ;
+ Text [ italian ] = "Extra" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ french ] = "Options" ;
+ Text [ dutch ] = "Overige" ;
+ Text [ swedish ] = "Tillägg" ;
+ Text [ danish ] = "Flere" ;
+ Text [ portuguese_brazilian ] = "Zusätze" ;
+ Text [ portuguese ] = "Opções" ;
+ Text[ chinese_simplified ] = "ÆäËü";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Dodatki";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¨ä¥¦";
+ Text[ arabic ] = "ÎíÇÑÇÊ";
+ Text[ greek ] = "Ðñüóèåôá";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_FRM_WRAP ;
+ Text = "Umlauf" ;
+ Text [ ENGLISH ] = "Wrap" ;
+ Text [ norwegian ] = "Wrap" ;
+ Text [ italian ] = "Scorrimento" ;
+ Text [ portuguese_brazilian ] = "Circundamento" ;
+ Text [ portuguese ] = "Ajuste" ;
+ Text [ finnish ] = "Kierrätys" ;
+ Text [ danish ] = "Ombrydning" ;
+ Text [ french ] = "Adaptation du texte" ;
+ Text [ swedish ] = "Textanpassning" ;
+ Text [ dutch ] = "Om beeld" ;
+ Text [ spanish ] = "Ajuste" ;
+ Text [ english_us ] = "Wrap" ;
+ PageResID = TP_FRM_WRAP ;
+ Text[ chinese_simplified ] = "»·ÈÆ";
+ Text[ russian ] = "Îáòåêàíèå";
+ Text[ polish ] = "Obieg tekstu";
+ Text[ japanese ] = "Ü‚è•Ô‚µ";
+ Text[ chinese_traditional ] = "´«¦æ";
+ Text[ arabic ] = "ÇáÊÝÇÝ";
+ Text[ greek ] = "Áíáäßðëùóç";
+ Text[ korean ] = "¼øȯ";
+ Text[ turkish ] = "Metin daðýlýmý";
+ 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" ;
+ PageResID = TP_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_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" ;
+ PageResID = TP_BORDER ;
+ 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_COLUMN ;
+ Text = "Spalten" ;
+ Text [ ENGLISH ] = "Columns" ;
+ Text [ norwegian ] = "Kolonner" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ portuguese_brazilian ] = "Colunas" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ finnish ] = "Sarakkeet" ;
+ Text [ danish ] = "Kolonner" ;
+ Text [ french ] = "Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ spanish ] = "Columnas" ;
+ Text [ english_us ] = "Columns" ;
+ PageResID = TP_COLUMN ;
+ Text[ chinese_simplified ] = "À¸";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "’i‘g‚Ý";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÇáÃÚãÏÉ";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_MACRO_ASSIGN ;
+ Text = "Makro" ;
+ Text [ ENGLISH ] = "Macro" ;
+ Text [ english_us ] = "Macro" ;
+ Text [ italian ] = "Macro" ;
+ Text [ spanish ] = "Macro" ;
+ Text [ french ] = "Macro" ;
+ Text [ dutch ] = "Macro" ;
+ Text [ swedish ] = "Makro" ;
+ Text [ danish ] = "Makro" ;
+ Text [ portuguese_brazilian ] = "Makro" ;
+ Text [ portuguese ] = "Macro" ;
+ Text[ chinese_simplified ] = "ºê";
+ Text[ russian ] = "Ìàêðîñ";
+ Text[ polish ] = "Makro";
+ Text[ japanese ] = "ϸÛ";
+ Text[ chinese_traditional ] = "¥¨¶°";
+ Text[ arabic ] = "ãÇßÑæ";
+ Text[ greek ] = "ÌáêñïåíôïëÞ";
+ Text[ korean ] = "¸ÅÅ©·Î";
+ Text[ turkish ] = "Makro";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ Text [ italian ] = "Modello di cornice" ;
+ Text [ spanish ] = "Estilo de marcos" ;
+ Text [ french ] = "Style de cadre" ;
+ Text [ dutch ] = "Kaderopmaakprofiel" ;
+ Text [ swedish ] = "Ramformatmall" ;
+ Text [ danish ] = "Rammetypografi" ;
+ Text [ portuguese ] = "Estilo de moldura" ;
+ Text [ portuguese_brazilian ] = "Rahmenvorlage" ;
+ Text[ chinese_simplified ] = "¿òÑùʽ";
+ Text[ russian ] = "Ñòèëü ðàìêè";
+ Text[ polish ] = "Styl ramki";
+ Text[ japanese ] = "˜g½À²Ù";
+ Text[ chinese_traditional ] = "®Ø¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÅØÇÑ";
+ Text[ greek ] = "Óôõë ðëáéóßïõ";
+ Text[ korean ] = "ÇÁ·¹ÀÓ À¯Çü";
+ Text[ turkish ] = "Çerçeve biçimi";
+ Text[ language_user1 ] = " ";
+};
+TabDialog DLG_TEMPLATE_5
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Nummerierungsvorlage" ;
+ Text [ ENGLISH ] = "Number Style" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_PICK_BULLET ;
+ Text = "Bullets" ;
+ Text [ ENGLISH ] = "Bullets" ;
+ Text [ english_us ] = "Bullets" ;
+ Text [ portuguese_brazilian ] = "Bullets" ;
+ Text [ swedish ] = "Bullets" ;
+ Text [ danish ] = "Punkttegn" ;
+ Text [ italian ] = "Punti" ;
+ Text [ spanish ] = "Viñetas" ;
+ Text [ french ] = "Puces" ;
+ Text [ dutch ] = "Opsommingstekens" ;
+ Text [ portuguese ] = "Marcas" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿±àºÅ";
+ Text[ russian ] = "Ìàðêåðû";
+ Text[ polish ] = "Wypunktowanie";
+ Text[ japanese ] = "‰Óð‘‚«";
+ Text[ chinese_traditional ] = "¶µ¥Ø½s¸¹";
+ Text[ arabic ] = "ÚáÇãÇÊ ÊÚÏÇÏ";
+ Text[ greek ] = "Êïõêßäåò";
+ Text[ korean ] = "±Û¸Ó¸® ±âÈ£";
+ Text[ turkish ] = "Madde iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_PICK_SINGLE_NUM;
+ Text = "Nummerierungsart" ;
+ Text [ ENGLISH ] = "Digits" ;
+ Text [ english_us ] = "Numbering Style" ;
+ Text [ portuguese_brazilian ] = "Numerierungsart" ;
+ Text [ swedish ] = "Numreringstyp" ;
+ Text [ danish ] = "Nummereringstype" ;
+ Text [ italian ] = "Tipo numerazione" ;
+ Text [ spanish ] = "Tipo de numeración" ;
+ Text [ french ] = "Type de numérotation" ;
+ Text [ dutch ] = "Nummeringstijl" ;
+ Text [ portuguese ] = "Tipo de numeração" ;
+ Text[ chinese_simplified ] = "±àºÅÀàÐÍ";
+ Text[ russian ] = "Òèï íóìåðàöèè";
+ Text[ polish ] = "Rodzaj numeracji";
+ Text[ japanese ] = "”Ô†•t‚¯‚ÌŽí—Þ";
+ Text[ chinese_traditional ] = "½s¸¹Ãþ«¬";
+ Text[ arabic ] = "ØÑíÞÉ ÇáÊÑÞíã";
+ Text[ language_user1 ] = "MS Word, KeyID23136";
+ Text[ greek ] = "Óôõë áñßèìçóçò";
+ Text[ korean ] = "¹øÈ£¸Å±â±â À¯Çü";
+ Text[ turkish ] = "Numaralama türü";
+ };
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_PICK_NUM ;
+ Text = "Gliederung" ;
+ Text [ ENGLISH ] = "Outline" ;
+ Text [ english_us ] = "Outline" ;
+ Text [ portuguese_brazilian ] = "Gliederung" ;
+ Text [ swedish ] = "Disposition" ;
+ Text [ danish ] = "Disposition" ;
+ Text [ italian ] = "Struttura" ;
+ Text [ spanish ] = "Esquema" ;
+ Text [ french ] = "Plan" ;
+ Text [ dutch ] = "Overzicht" ;
+ Text [ portuguese ] = "Esquema" ;
+ Text[ chinese_simplified ] = "´ó¸Ù";
+ Text[ russian ] = "Ñòðóêòóðà";
+ Text[ polish ] = "Konspekt";
+ Text[ japanese ] = "±³ÄײÝ";
+ Text[ chinese_traditional ] = "¤jºõ";
+ Text[ arabic ] = "ÊÞÓíã";
+ Text[ greek ] = "ÄéÜñèñùóç";
+ Text[ korean ] = "°³¿ä";
+ Text[ turkish ] = "Anahat";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_PICK_BMP;
+ Text = "Grafiken" ;
+ Text [ ENGLISH ] = "Images" ;
+ Text [ english_us ] = "Graphics" ;
+ Text [ portuguese_brazilian ] = "Grafiken" ;
+ Text [ swedish ] = "Grafiker" ;
+ Text [ danish ] = "Billeder" ;
+ Text [ italian ] = "Immagini" ;
+ Text [ spanish ] = "Imágenes" ;
+ Text [ french ] = "Images" ;
+ Text [ dutch ] = "Afbeeldingen" ;
+ Text [ portuguese ] = "Imagens" ;
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ russian ] = "Ðèñóíêè";
+ Text[ polish ] = "Grafiki";
+ Text[ japanese ] = "}";
+ Text[ chinese_traditional ] = "¹Ï¤ù";
+ Text[ arabic ] = "ÕæÑ";
+ Text[ greek ] = "ÃñáöéêÜ";
+ Text[ korean ] = "±×·¡ÇÈ";
+ Text[ turkish ] = "Grafik";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_NUM_POSITION ;
+ 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 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_NUM_OPTIONS;
+ Text = "~Optionen" ;
+ Text [ ENGLISH ] = "Customize" ;
+ Text [ portuguese ] = "~Opções" ;
+ 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[ chinese_simplified ] = "Ñ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Opcje";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ language_user1 ] = "KW:Tilde entfernen falls noch vorhanden";
+ Text[ chinese_traditional ] = "¿ï¶µ";
+ Text[ arabic ] = "ÎíÇÑÇÊ";
+ Text[ greek ] = "ÅðéëïãÝò";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ };
+ };
+ };
+ Text [ portuguese ] = "Estilo de numeração" ;
+ Text [ english_us ] = "Numbering Style" ;
+ Text [ portuguese_brazilian ] = "Numerierungsvorlage" ;
+ Text [ swedish ] = "Numreringsformatmall" ;
+ Text [ danish ] = "Nummereringstypografi" ;
+ Text [ italian ] = "Modello di numerazione" ;
+ Text [ spanish ] = "Estilo de numeración" ;
+ Text [ french ] = "Style de numérotation" ;
+ Text [ dutch ] = "Opmaakprofiel voor nummering" ;
+ Text[ chinese_simplified ] = "±àºÅÑùʽ";
+ Text[ russian ] = "Ñòèëü íóìåðàöèè";
+ Text[ polish ] = "Styl numeracji";
+ Text[ japanese ] = "”Ô†•t‚¯½À²Ù";
+ Text[ chinese_traditional ] = "½s¸¹¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÊÑÞíã";
+ Text[ greek ] = "Ðñüôõðï áñßèìçóçò";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Numaralama biçimi";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/frmdlg/colex.cxx b/sw/source/ui/frmdlg/colex.cxx
new file mode 100644
index 000000000000..514f6718c4f6
--- /dev/null
+++ b/sw/source/ui/frmdlg/colex.cxx
@@ -0,0 +1,514 @@
+/*************************************************************************
+ *
+ * $RCSfile: colex.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "cmdid.h"
+#include "hintids.hxx"
+#include "uiparam.hxx"
+
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_SIZEITEM_HXX //autogen
+#include <svx/sizeitem.hxx>
+#endif
+#ifndef _SVX_PAGEITEM_HXX //autogen
+#include <svx/pageitem.hxx>
+#endif
+
+#include "colex.hxx"
+#include "colmgr.hxx"
+
+
+/*-----------------------------------------------------------------------
+ Beschreibung: Uebernahme der aktualisierten Werte aus dem Set
+ -----------------------------------------------------------------------*/
+
+
+void SwColExample::UpdateExample( const SfxItemSet& rSet, SwColMgr* pMgr )
+{
+ pColMgr = pMgr;
+ const SvxPageItem* pPage = 0;
+ SfxItemPool* pPool = rSet.GetPool();
+ USHORT nWhich = pPool->GetWhich( SID_ATTR_PAGE );
+
+ if ( rSet.GetItemState( nWhich, FALSE ) == SFX_ITEM_SET )
+ {
+ // Ausrichtung
+ pPage = (const SvxPageItem*)&rSet.Get( nWhich );
+
+ if ( pPage )
+ SetUsage( pPage->GetPageUsage() );
+ }
+
+ nWhich = pPool->GetWhich( SID_ATTR_PAGE_SIZE );
+
+ if ( rSet.GetItemState( nWhich, FALSE ) == SFX_ITEM_SET )
+ {
+ // Orientation und Size aus dem PageItem
+ const SvxSizeItem& rSize = (const SvxSizeItem&)rSet.Get( nWhich );
+ Size aSize( rSize.GetSize() );
+ SetSize( aSize );
+ }
+ nWhich = RES_LR_SPACE;
+ if ( rSet.GetItemState( nWhich, FALSE ) == SFX_ITEM_SET )
+ {
+ // linken und rechten Rand einstellen
+ const SvxLRSpaceItem& rLRSpace = (const SvxLRSpaceItem&)rSet.Get( nWhich );
+
+ SetLeft( rLRSpace.GetLeft() );
+ SetRight( rLRSpace.GetRight() );
+ }
+ else
+ {
+ SetLeft( 0 );
+ SetRight( 0 );
+ }
+
+ nWhich = RES_UL_SPACE;
+
+ if ( rSet.GetItemState( nWhich, FALSE ) == SFX_ITEM_SET )
+ {
+ // oberen und unteren Rand einstellen
+ const SvxULSpaceItem& rULSpace = (const SvxULSpaceItem&)rSet.Get( nWhich );
+
+ SetTop( rULSpace.GetUpper() );
+ SetBottom( rULSpace.GetLower() );
+ }
+ else
+ {
+ SetTop( 0 );
+ SetBottom( 0 );
+ }
+
+
+ // Kopfzeilen-Attribute auswerten
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rSet.GetItemState( pPool->GetWhich( SID_ATTR_PAGE_HEADERSET),
+ FALSE, &pItem ) )
+ {
+ const SfxItemSet& rHeaderSet = ((SvxSetItem*)pItem)->GetItemSet();
+ const SfxBoolItem& rHeaderOn =
+ (const SfxBoolItem&)rHeaderSet.Get( pPool->GetWhich( SID_ATTR_PAGE_ON ) );
+
+ if ( rHeaderOn.GetValue() )
+ {
+ const SvxSizeItem& rSize =
+ (const SvxSizeItem&)rHeaderSet.Get(pPool->GetWhich(SID_ATTR_PAGE_SIZE));
+
+ const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)rHeaderSet.Get(
+ pPool->GetWhich(SID_ATTR_ULSPACE));
+ const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)rHeaderSet.Get(
+ pPool->GetWhich(SID_ATTR_LRSPACE));
+
+ SetHdHeight( rSize.GetSize().Height() - rUL.GetLower());
+ SetHdDist( rUL.GetLower() );
+ SetHdLeft( rLR.GetLeft() );
+ SetHdRight( rLR.GetRight() );
+ SetHeader( TRUE );
+ }
+ else
+ SetHeader( FALSE );
+ }
+
+ if( SFX_ITEM_SET == rSet.GetItemState( pPool->GetWhich( SID_ATTR_PAGE_FOOTERSET),
+ FALSE, &pItem ) )
+ {
+ const SfxItemSet& rFooterSet = ((SvxSetItem*)pItem)->GetItemSet();
+ const SfxBoolItem& rFooterOn =
+ (const SfxBoolItem&)rFooterSet.Get( SID_ATTR_PAGE_ON );
+
+ if ( rFooterOn.GetValue() )
+ {
+ const SvxSizeItem& rSize =
+ (const SvxSizeItem&)rFooterSet.Get( pPool->GetWhich( SID_ATTR_PAGE_SIZE ) );
+
+ const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)rFooterSet.Get(
+ pPool->GetWhich( SID_ATTR_ULSPACE ) );
+ const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)rFooterSet.Get(
+ pPool->GetWhich( SID_ATTR_LRSPACE ) );
+
+ SetFtHeight( rSize.GetSize().Height() - rUL.GetUpper());
+ SetFtDist( rUL.GetUpper() );
+ SetFtLeft( rLR.GetLeft() );
+ SetFtRight( rLR.GetRight() );
+ SetFooter( TRUE );
+ }
+ else
+ SetFooter( FALSE );
+ }
+
+ Invalidate();
+}
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+
+void SwColExample::DrawPage( const Point& rOrg,
+ const BOOL bSecond,
+ const BOOL bEnabled )
+{
+ SvxPageWindow::DrawPage( rOrg, bSecond, bEnabled );
+ if( pColMgr && pColMgr->GetCount() >1 )
+ {
+// SetPen( Pen( PEN_DOT ) );
+
+ long nL = GetLeft();
+ long nR = GetRight();
+
+ if ( GetUsage() == SVX_PAGE_MIRROR && !bSecond )
+ {
+ // fuer gespiegelt drehen
+ nL = GetRight();
+ nR = GetLeft();
+ }
+
+ SetFillColor( Color( COL_LIGHTGRAY ) );
+ Rectangle aRect;
+ aRect.Right() = rOrg.X() + GetSize().Width() - nR;
+ aRect.Left() = rOrg.X() + nL;
+ aRect.Top() = rOrg.Y() + GetTop()
+ + GetHdHeight() + GetHdDist();
+ aRect.Bottom()= rOrg.Y() + GetSize().Height() - GetBottom()
+ - GetFtHeight() - GetFtDist();
+ DrawRect(aRect);
+
+ SetFillColor( Color( COL_WHITE ) );
+ USHORT nColumnCount = pColMgr->GetCount();
+ for(USHORT i = 0; i < nColumnCount; i++)
+ {
+ aRect.Right() = aRect.Left() + pColMgr->GetColWidth( i );
+ DrawRect(aRect);
+ if(i < nColumnCount - 1)
+ aRect.Left() = aRect.Right() + pColMgr->GetGutterWidth(i);
+ }
+ if(pColMgr->HasLine())
+ {
+// SetPen( Pen ( PEN_SOLID ) );
+ Point aUp( rOrg.X() + nL, rOrg.Y() + GetTop() );
+ Point aDown( rOrg.X() + nL, rOrg.Y() + GetSize().Height()
+ - GetBottom() - GetFtHeight() - GetFtDist() );
+
+ if( pColMgr->GetLineHeightPercent() != 100 )
+ {
+ long nLength = aDown.Y() - aUp.Y();
+ nLength -= nLength * pColMgr->GetLineHeightPercent() / 100;
+ switch(pColMgr->GetAdjust())
+ {
+ case COLADJ_BOTTOM: aUp.Y() += nLength; break;
+ case COLADJ_TOP: aDown.Y() -= nLength; break;
+ case COLADJ_CENTER:
+ aUp.Y() += nLength / 2;
+ aDown.Y() -= nLength / 2;
+ break;
+ }
+ }
+
+ int nDist;
+ for( i = 0; i < nColumnCount - 1; i++)
+ {
+ int nGutter = pColMgr->GetGutterWidth(i);
+ nDist = pColMgr->GetColWidth( i ) + nGutter;
+ nDist -= (i == 0) ?
+ nGutter/2 :
+ 0;
+ aUp.X() += nDist;
+ aDown.X() += nDist;
+ DrawLine( aUp, aDown );
+
+ }
+ }
+ }
+}
+
+
+
+SwColExample::SwColExample(Window* pPar, const ResId& rResId ) :
+ SvxPageWindow(pPar, rResId )
+{
+ SetSize(Size(11907, 16433));// DIN A4
+}
+
+/*-----------------25.10.96 09.15-------------------
+
+--------------------------------------------------*/
+
+
+SwColumnOnlyExample::SwColumnOnlyExample( Window* pParent, const ResId& rResId) :
+ Window(pParent, rResId),
+ aFrmSize(1,1),
+ nDistance(0)
+{
+ SetMapMode( MapMode( MAP_TWIP ) );
+ aWinSize = GetOutputSizePixel();
+ aWinSize.Height() -= 4;
+ aWinSize.Width() -= 4;
+
+ aWinSize = PixelToLogic( aWinSize );
+
+}
+
+/*-----------------25.10.96 09.16-------------------
+
+--------------------------------------------------*/
+
+
+void SwColumnOnlyExample::Paint( const Rectangle& rRect )
+{
+// Pen aSolidPen(PEN_SOLID);
+ long nWidth = aFrmSize.Width();
+ long nHeight = aFrmSize.Height();
+ Fraction aXScale( aWinSize.Width(),
+ max( nWidth + nWidth / 8, 1 ) );
+ Fraction aYScale( aWinSize.Height(), max( nHeight, 1 ) );
+ MapMode aMapMode( GetMapMode() );
+ aMapMode.SetScaleX( aXScale );
+ aMapMode.SetScaleY( aYScale );
+ SetMapMode( aMapMode );
+
+ Size aLogSize(PixelToLogic(GetOutputSizePixel()));
+ Point aTL( (aLogSize.Width() - aFrmSize.Width()) / 2,
+ (aLogSize.Height() - aFrmSize.Height()) / 2);
+ Rectangle aRect(aTL, aFrmSize);
+
+ SetFillColor( Color( COL_WHITE ) );
+// SetPen(aSolidPen);
+ DrawRect(aRect);
+
+ Size aInside(aFrmSize.Width() - nDistance, aFrmSize.Height() - nDistance);
+ long nDist2 = nDistance / 2;
+ aTL.X() += nDist2;
+ aTL.Y() += nDist2;
+ Rectangle aInsRect(aTL, aInside);
+ DrawRect(aInsRect);
+
+ SetFillColor(Color( COL_LIGHTGRAY ) );
+
+ //Spaltentrenner?
+ long nLength = aLogSize.Height() - 2 * aTL.Y();
+ Point aUp( aTL );
+ Point aDown( aTL.X(), nLength );
+ BOOL bLines = FALSE;
+ if(aCols.GetLineAdj() != COLADJ_NONE)
+ {
+ bLines = TRUE;
+
+ USHORT nPercent = aCols.GetLineHeight();
+ if( nPercent != 100 )
+ {
+ nLength -= nLength * nPercent / 100;
+ switch(aCols.GetLineAdj())
+ {
+ case COLADJ_BOTTOM: aUp.Y() += nLength; break;
+ case COLADJ_TOP: aDown.Y() -= nLength; break;
+ case COLADJ_CENTER:
+ aUp.Y() += nLength / 2;
+ aDown.Y() -= nLength / 2;
+ break;
+ }
+ }
+
+ }
+
+ const SwColumns& rCols = aCols.GetColumns();
+ USHORT nColCount = rCols.Count();
+// SetPen(Pen(PEN_DOT));
+ if( !nColCount)
+ DrawRect(aRect);
+ else
+ {
+ Rectangle aFrmRect(aTL, aInside);
+ long nSum = aTL.X();
+ for(USHORT i = 0; i < nColCount; i++)
+ {
+ SwColumn* pCol = rCols[i];
+ aFrmRect.Left() = nSum + pCol->GetLeft();//nSum + pCol->GetLeft() + aTL.X();
+ nSum += pCol->GetWishWidth();
+ aFrmRect.Right() = nSum - pCol->GetRight();
+ DrawRect(aFrmRect);
+ }
+// SetPen( aSolidPen );
+ if(bLines )
+ {
+ nSum = aTL.X();
+ for(USHORT i = 0; i < nColCount - 1; i++)
+ {
+ nSum += rCols[i]->GetWishWidth();
+ aUp.X() = nSum;
+ aDown.X() = nSum;
+ DrawLine(aUp, aDown);
+ }
+ }
+ }
+}
+
+/*-----------------25.10.96 12.05-------------------
+
+--------------------------------------------------*/
+
+
+void SwColumnOnlyExample::SetFrameSize(const Size& rS, long nDist)
+{
+ aFrmSize = rS;
+ nDistance = 2 * nDist;
+ ::FitToActualSize(aCols, (USHORT)aFrmSize.Width());
+}
+
+/*-----------------25.02.94 21:22-------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.26 2000/09/18 16:05:32 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.25 2000/03/03 15:17:01 os
+ StarView remainders removed
+
+ Revision 1.24 1998/04/28 09:28:32 OS
+ Abstand nur fuer existierende Spalten erfragen
+
+
+ Rev 1.23 28 Apr 1998 11:28:32 OS
+ Abstand nur fuer existierende Spalten erfragen
+
+ Rev 1.22 16 Apr 1998 13:09:28 OS
+ Spaltenabstand fuer Seitenbeispiel richtig #49516#
+
+ Rev 1.21 28 Nov 1997 19:40:38 MA
+ includes
+
+ Rev 1.20 24 Nov 1997 17:40:12 MA
+ include
+
+ Rev 1.19 03 Nov 1997 13:19:44 MA
+ precomp entfernt
+
+ Rev 1.18 15 Aug 1997 12:15:24 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.17 12 Aug 1997 15:58:08 OS
+ frmitems/textitem/paraitem aufgeteilt
+
+ Rev 1.16 07 Aug 1997 14:59:08 OM
+ Headerfile-Umstellung
+
+ Rev 1.15 23 Apr 1997 11:08:48 OS
+ ResId const
+
+ Rev 1.14 21 Nov 1996 11:53:34 OS
+ Umrandungsabstand mit anzeigen
+
+ Rev 1.13 08 Nov 1996 14:07:54 OS
+ ohne Spalten mit richtigem Hintergrund painten
+
+ Rev 1.12 25 Oct 1996 14:56:56 OS
+ neues Spaltenbeispiel ohne Seite
+
+ Rev 1.11 28 Aug 1996 11:52:54 OS
+ includes
+
+ Rev 1.10 27 Mar 1996 16:02:56 OS
+ Hoehe Kopf-/Fusszeilen richtig einstellen
+
+ Rev 1.9 22 Mar 1996 14:20:58 MH
+ add: include pageitem.hxx
+
+ Rev 1.8 24 Nov 1995 16:58:10 OM
+ PCH->PRECOMPILED
+
+ Rev 1.7 21 Nov 1995 08:16:04 OS
+ +pragma
+
+ Rev 1.6 21 Nov 1995 08:00:48 OS
+ Itemsate auf _SET pruefen, Seitengroesse init.
+
+ Rev 1.5 17 Oct 1995 15:00:08 MA
+ fix: SEXPORT'iert
+
+ Rev 1.4 22 Aug 1995 09:10:02 MA
+ svxitems-header entfernt
+
+ Rev 1.3 07 Aug 1995 18:51:24 OS
+ Trennlinien mit einzeichnen
+
+ Rev 1.2 02 Aug 1995 17:47:50 OS
+ Seitenspaltenbeispiel implementiert
+
+ Rev 1.1 11 Jul 1995 15:42:06 OS
+ Beispielfenster jetzt vom SvxPageWindow abgeleitet
+
+ Rev 1.0 20 Apr 1995 17:38:02 OS
+ Initial revision.
+
+--------------------------------------------------*/
+
+
diff --git a/sw/source/ui/frmdlg/colmgr.cxx b/sw/source/ui/frmdlg/colmgr.cxx
new file mode 100644
index 000000000000..b9ef8398dd39
--- /dev/null
+++ b/sw/source/ui/frmdlg/colmgr.cxx
@@ -0,0 +1,289 @@
+/*************************************************************************
+ *
+ * $RCSfile: colmgr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+
+#include "frmmgr.hxx"
+#include "frmfmt.hxx"
+#include "colmgr.hxx"
+
+
+// PRIVATE METHODES ------------------------------------------------------
+/*------------------------------------------------------------------------
+ Beschreibung: Spaltenbreite auf aktuelle Breite einstellen
+------------------------------------------------------------------------*/
+
+
+
+void FitToActualSize(SwFmtCol& rCol, USHORT nWidth)
+{
+ const USHORT nCount = rCol.GetColumns().Count();
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ const USHORT nTmp = rCol.CalcColWidth(i, nWidth);
+ rCol.GetColumns()[i]->SetWishWidth(nTmp);
+ }
+ rCol.SetWishWidth(nWidth);
+}
+
+
+// PUBLIC METHODES -------------------------------------------------------
+/*------------------------------------------------------------------------
+ Beschreibung: Setzen Spaltenanzahl und Gutterwidth
+------------------------------------------------------------------------*/
+
+
+
+void SwColMgr::SetCount(USHORT nCount, USHORT nGutterWidth)
+{
+ aFmtCol.Init(nCount, nGutterWidth, nWidth);
+ aFmtCol.SetWishWidth(nWidth);
+ aFmtCol.SetGutterWidth(nGutterWidth, nWidth);
+}
+
+
+
+USHORT SwColMgr::GetGutterWidth( USHORT nPos ) const
+{
+ USHORT nRet;
+ if(nPos == USHRT_MAX )
+ nRet = GetCount() > 1 ? aFmtCol.GetGutterWidth() : DEF_GUTTER_WIDTH;
+ else
+ {
+ DBG_ASSERT(nPos < GetCount() - 1, "Spalte ueberindiziert" )
+ const SwColumns& rCols = aFmtCol.GetColumns();
+ nRet = rCols.GetObject(nPos)->GetRight() + rCols.GetObject(nPos + 1)->GetLeft();
+ }
+ return nRet;
+}
+
+/*-----------------22.10.96 14.28-------------------
+
+--------------------------------------------------*/
+
+
+void SwColMgr::SetGutterWidth(USHORT nGutterWidth, USHORT nPos )
+{
+ if(nPos == USHRT_MAX)
+ aFmtCol.SetGutterWidth(nGutterWidth, nWidth);
+ else
+ {
+ DBG_ASSERT(nPos < GetCount() - 1, "Spalte ueberindiziert" )
+ SwColumns& rCols = aFmtCol.GetColumns();
+ USHORT nGutterWidth2 = nGutterWidth / 2;
+ rCols.GetObject(nPos)->SetRight(nGutterWidth2);
+ rCols.GetObject(nPos + 1)->SetLeft(nGutterWidth2);
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Hoehe Trennlinie
+------------------------------------------------------------------------*/
+
+
+
+short SwColMgr::GetLineHeightPercent() const
+{
+ return (short)aFmtCol.GetLineHeight();
+}
+
+
+
+void SwColMgr::SetLineHeightPercent(short nPercent)
+{
+ ASSERT(nPercent <= 100, LineHeight darf nur bis 100 % gross sein);
+ aFmtCol.SetLineHeight((BYTE)nPercent);
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Spaltenbreite
+------------------------------------------------------------------------*/
+
+
+
+USHORT SwColMgr::GetColWidth(USHORT nIdx) const
+{
+ ASSERT(nIdx < GetCount(), Spaltenarray ueberindiziert.);
+ return aFmtCol.CalcPrtColWidth(nIdx, nWidth);
+}
+
+
+
+void SwColMgr::SetColWidth(USHORT nIdx, USHORT nWd)
+{
+ ASSERT(nIdx < GetCount(), Spaltenarray ueberindiziert.);
+ aFmtCol.GetColumns()[nIdx]->SetWishWidth(nWd);
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Groesse neu setzen
+ --------------------------------------------------------------------*/
+
+
+
+void SwColMgr::SetActualWidth(USHORT nW)
+{
+ nWidth = nW;
+ ::FitToActualSize(aFmtCol, nW);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: ctor
+ --------------------------------------------------------------------*/
+
+
+
+SwColMgr::SwColMgr(const SfxItemSet& rSet, USHORT nActWidth) :
+ aFmtCol((const SwFmtCol&)rSet.Get(RES_COL)),
+ nWidth(nActWidth)
+{
+ if(nWidth == USHRT_MAX)
+ {
+ nWidth = (USHORT)((const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE)).GetWidth();
+ if (nWidth < MINLAY)
+ nWidth = USHRT_MAX;
+ const SvxLRSpaceItem &rLR = (const SvxLRSpaceItem&)rSet.Get(RES_LR_SPACE);
+ nWidth -= (USHORT)rLR.GetLeft();
+ nWidth -= (USHORT)rLR.GetRight();
+ }
+ ::FitToActualSize(aFmtCol, nWidth);
+}
+
+
+
+
+SwColMgr::~SwColMgr() {}
+
+
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.43 2000/09/18 16:05:32 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.42 1997/11/24 16:40:12 MA
+ include
+
+
+ Rev 1.41 24 Nov 1997 17:40:12 MA
+ include
+
+ Rev 1.40 03 Nov 1997 13:19:46 MA
+ precomp entfernt
+
+ Rev 1.39 12 Aug 1997 15:58:08 OS
+ frmitems/textitem/paraitem aufgeteilt
+
+ Rev 1.38 07 Aug 1997 14:59:18 OM
+ Headerfile-Umstellung
+
+ Rev 1.37 24 Oct 1996 17:59:50 OS
+ unterschiedliche Spaltenabstaende einstellen
+
+ Rev 1.36 28 Aug 1996 11:52:52 OS
+ includes
+
+ Rev 1.35 19 Apr 1996 16:59:00 MA
+ chg: Vorbereitung fuer kleine Rahmen
+
+ Rev 1.34 18 Apr 1996 11:47:06 OM
+ Unbenutzte Fkt entfernt
+
+ Rev 1.33 24 Nov 1995 16:58:10 OM
+ PCH->PRECOMPILED
+
+ Rev 1.32 13 Jul 1995 22:45:20 JP
+ Spaltenbreiten richtig berechnen
+
+ Rev 1.31 21 May 1995 18:55:28 OS
+ Trennlinienhoehe gerichtet
+
+ Rev 1.30 03 May 1995 14:09:24 OM
+ DEF_GUTTER_WIDTH fuer Default-Spaltenabstand
+
+ Rev 1.29 03 Apr 1995 17:13:08 OM
+ Bug in Spaltenpage gefixt
+
+ Rev 1.28 28 Mar 1995 15:38:56 OS
+ Pre-Fix fuer leere Breite
+
+ Rev 1.27 13 Mar 1995 16:19:44 MS
+ neu: Spalten im Bsp
+
+ Rev 1.26 08 Mar 1995 12:54:28 MS
+ Aktuelle Breite einstellen
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/frmdlg/column.cxx b/sw/source/ui/frmdlg/column.cxx
new file mode 100644
index 000000000000..e2957fb05a2f
--- /dev/null
+++ b/sw/source/ui/frmdlg/column.cxx
@@ -0,0 +1,1561 @@
+/*************************************************************************
+ *
+ * $RCSfile: column.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "uiparam.hxx"
+#include "hintids.hxx"
+
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_SIZEITEM_HXX //autogen
+#include <svx/sizeitem.hxx>
+#endif
+
+
+#include "globals.hrc"
+#include "swtypes.hxx"
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "docsh.hxx"
+#include "uitool.hxx"
+#include "cmdid.h"
+#include "viewopt.hxx"
+#include "format.hxx"
+#include "frmmgr.hxx"
+#include "frmdlg.hxx"
+#include "column.hxx"
+#include "colmgr.hxx"
+#include "prcntfld.hxx"
+#include "linetype.hxx"
+#include "paratr.hxx"
+#include "frmui.hrc"
+#include "poolfmt.hrc"
+#include "column.hrc"
+#ifndef _SECTION_HXX //autogen
+#include <section.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _PAGEDESC_HXX //autogen
+#include <pagedesc.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+#define FRAME_FORMAT_WIDTH 1000
+/*--------------------------------------------------------------------
+ Beschreibung: Statische Daten
+ --------------------------------------------------------------------*/
+
+static const USHORT __FAR_DATA nLines[] = {
+ LIN_1,
+ LIN_2,
+ LIN_3,
+ LIN_4,
+ LIN_5
+};
+
+static const USHORT nLineCount = sizeof(nLines) / sizeof(nLines[0]);
+static const nVisCols = 3;
+
+inline BOOL IsMarkInSameSection( SwWrtShell& rWrtSh, const SwSection* pSect )
+{
+ rWrtSh.SwapPam();
+ BOOL bRet = pSect == rWrtSh.GetCurrSection();
+ rWrtSh.SwapPam();
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwColumnDlg::SwColumnDlg(Window* pParent, SwWrtShell& rSh) :
+ SfxModalDialog(pParent, SW_RES(DLG_COLUMN)),
+ aOK(this, ResId(PB_OK)),
+ aCancel(this, ResId(PB_CANCEL)),
+ aHelp(this, ResId(PB_HELP)),
+ aApplyToFT(this, ResId(FT_APPLY_TO)),
+ aApplyToLB(this, ResId(LB_APPLY_TO)),
+ rWrtShell(rSh),
+ pPageSet(0),
+ pSectionSet(0),
+ pSelectionSet(0),
+ pFrameSet(0),
+ nOldSelection(0),
+ bPageChanged(FALSE),
+ nSelectionWidth(0),
+ bSectionChanged(FALSE),
+ bSelSectionChanged(FALSE),
+ bFrameChanged(FALSE)
+{
+ FreeResource();
+
+ SwRect aRect;
+ rWrtShell.CalcBoundRect(aRect, FLY_IN_CNTNT);
+
+ nSelectionWidth = aRect.Width();
+
+ SfxItemSet* pColPgSet = 0;
+ static USHORT __READONLY_DATA aSectIds[] = { RES_COL, RES_COL,
+ RES_FRM_SIZE, RES_FRM_SIZE,
+ RES_COLUMNBALANCE, RES_COLUMNBALANCE,
+ 0 };
+
+ const SwSection* pCurrSection = rWrtShell.GetCurrSection();
+ USHORT nFullSectCnt = rWrtShell.GetFullSelectedSectionCount();
+ if( pCurrSection && ( !rWrtShell.HasSelection() || 0 != nFullSectCnt ))
+ {
+ pSectionSet = new SfxItemSet( rWrtShell.GetAttrPool(), aSectIds );
+ pSectionSet->Put( pCurrSection->GetFmt()->GetAttrSet() );
+ pColPgSet = pSectionSet;
+ aApplyToLB.RemoveEntry( aApplyToLB.GetEntryPos(
+ (void*)( 1 >= nFullSectCnt
+ ? LISTBOX_SECTIONS
+ : LISTBOX_SECTION )));
+ }
+ else
+ {
+ aApplyToLB.RemoveEntry(aApplyToLB.GetEntryPos( (void*) LISTBOX_SECTION ));
+ aApplyToLB.RemoveEntry(aApplyToLB.GetEntryPos( (void*) LISTBOX_SECTIONS ));
+ }
+
+ if( rWrtShell.HasSelection() && rWrtShell.IsInsRegionAvailable() &&
+ ( !pCurrSection || ( 1 != nFullSectCnt &&
+ IsMarkInSameSection( rWrtShell, pCurrSection ) )))
+ {
+ pSelectionSet = new SfxItemSet( rWrtShell.GetAttrPool(), aSectIds );
+ pColPgSet = pSelectionSet;
+ }
+ else
+ aApplyToLB.RemoveEntry(aApplyToLB.GetEntryPos( (void*) LISTBOX_SELECTION ));
+
+ if( rWrtShell.GetFlyFrmFmt() )
+ {
+ const SwFrmFmt* pFmt = rSh.GetFlyFrmFmt() ;
+ pFrameSet = new SfxItemSet(rWrtShell.GetAttrPool(), aSectIds );
+ pFrameSet->Put(pFmt->GetFrmSize());
+ pFrameSet->Put(pFmt->GetCol());
+ pColPgSet = pFrameSet;
+ }
+ else
+ aApplyToLB.RemoveEntry(aApplyToLB.GetEntryPos( (void*) LISTBOX_FRAME ));
+
+
+ USHORT nPagePos = aApplyToLB.GetEntryPos( (void*) LISTBOX_PAGE );
+ const SwPageDesc* pPageDesc = rWrtShell.GetSelectedPageDescs();
+ if( pPageDesc )
+ {
+ pPageSet = new SfxItemSet( rWrtShell.GetAttrPool(),
+ RES_COL, RES_COL,
+ RES_FRM_SIZE, RES_FRM_SIZE,
+ RES_LR_SPACE, RES_LR_SPACE,
+ 0 );
+
+ String sPageStr = aApplyToLB.GetEntry(nPagePos);
+ aApplyToLB.RemoveEntry( nPagePos );
+ sPageStr += pPageDesc->GetName();
+ aApplyToLB.InsertEntry( sPageStr, nPagePos );
+ aApplyToLB.SetEntryData( nPagePos, (void*) LISTBOX_PAGE);
+
+ const SwFrmFmt &rFmt = pPageDesc->GetMaster();
+ nPageWidth = rFmt.GetFrmSize().GetSize().Width();
+ pPageSet->Put(rFmt.GetCol());
+ pPageSet->Put(rFmt.GetLRSpace());
+ pColPgSet = pPageSet;
+ }
+ else
+ aApplyToLB.RemoveEntry( nPagePos );
+
+
+ ASSERT( pColPgSet, "" );
+ // TabPage erzeugen
+ SwColumnPage* pPage = (SwColumnPage*) SwColumnPage::Create( this,
+ *pColPgSet );
+ pTabPage = pPage;
+
+ //Groesse anpassen
+ Size aPageSize(pTabPage->GetSizePixel());
+ Size aDlgSize(GetOutputSizePixel());
+ aDlgSize.Height() = aPageSize.Height();
+ SetOutputSizePixel(aDlgSize);
+ pTabPage->Show();
+
+ aApplyToLB.SelectEntryPos(0);
+ ObjectHdl(0);
+
+ aApplyToLB.SetSelectHdl(LINK(this, SwColumnDlg, ObjectHdl));
+ aOK.SetClickHdl(LINK(this, SwColumnDlg, OkHdl));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwColumnDlg::~SwColumnDlg()
+{
+ delete pTabPage;
+ delete pPageSet;
+ delete pSectionSet;
+ delete pSelectionSet;
+}
+
+/* -----------------26.05.99 11:40-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK(SwColumnDlg, ObjectHdl, ListBox*, pBox)
+{
+ SfxItemSet* pSet = 0;
+ switch(nOldSelection)
+ {
+ case LISTBOX_SELECTION :
+ pSet = pSelectionSet;
+ break;
+ case LISTBOX_SECTION :
+ pSet = pSectionSet;
+ bSectionChanged = TRUE;
+ break;
+ case LISTBOX_SECTIONS :
+ pSet = pSectionSet;
+ bSelSectionChanged = TRUE;
+ break;
+ case LISTBOX_PAGE :
+ pSet = pPageSet;
+ bPageChanged = TRUE;
+ break;
+ case LISTBOX_FRAME:
+ pSet = pFrameSet;
+ bFrameChanged = TRUE;
+ break;
+ }
+ if(pBox)
+ {
+ pTabPage->FillItemSet(*pSet);
+ }
+ nOldSelection = (long)aApplyToLB.GetEntryData(aApplyToLB.GetSelectEntryPos());
+ long nWidth = nSelectionWidth;
+ switch(nOldSelection)
+ {
+ case LISTBOX_SELECTION :
+ pSet = pSelectionSet;
+ pSet->Put(SwFmtFrmSize(ATT_VAR_SIZE, nWidth, nWidth));
+ break;
+ case LISTBOX_SECTION :
+ case LISTBOX_SECTIONS :
+ pSet = pSectionSet;
+ pSet->Put(SwFmtFrmSize(ATT_VAR_SIZE, nWidth, nWidth));
+ break;
+ case LISTBOX_PAGE :
+ nWidth = nPageWidth;
+ pSet = pPageSet;
+ pSet->Put(SwFmtFrmSize(ATT_VAR_SIZE, nWidth, nWidth));
+ break;
+ case LISTBOX_FRAME:
+ pSet = pFrameSet;
+ break;
+ }
+ pTabPage->ShowBalance(pSet == pSectionSet || pSet == pSelectionSet);
+ pTabPage->SetFrmMode(TRUE);
+ pTabPage->SetPageWidth(nWidth);
+ pTabPage->Reset(*pSet);
+ return 0;
+}
+/* -----------------26.05.99 12:32-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK(SwColumnDlg, OkHdl, OKButton*, EMPTYARG)
+{
+ //aktuelle Selektion auswerten
+ SfxItemSet* pSet = 0;
+ switch(nOldSelection)
+ {
+ case LISTBOX_SELECTION :
+ pSet = pSelectionSet;
+ break;
+ case LISTBOX_SECTION :
+ pSet = pSectionSet;
+ bSectionChanged = TRUE;
+ break;
+ case LISTBOX_SECTIONS :
+ pSet = pSectionSet;
+ bSelSectionChanged = TRUE;
+ break;
+ case LISTBOX_PAGE :
+ pSet = pPageSet;
+ bPageChanged = TRUE;
+ break;
+ case LISTBOX_FRAME:
+ pSet = pFrameSet;
+ bFrameChanged = TRUE;
+ break;
+ }
+ pTabPage->FillItemSet(*pSet);
+
+ if(pSelectionSet && SFX_ITEM_SET == pSelectionSet->GetItemState(RES_COL))
+ {
+ //Bereich mit Spalten einfuegen
+ const SwFmtCol& rColItem = (const SwFmtCol&)pSelectionSet->Get(RES_COL);
+ //nur, wenn es auch Spalten gibt!
+ if(rColItem.GetNumCols() > 1)
+ rWrtShell.GetView().GetViewFrame()->GetDispatcher()->Execute(
+ FN_INSERT_REGION, SFX_CALLMODE_ASYNCHRON, *pSelectionSet );
+ }
+
+ if(pSectionSet && pSectionSet->Count() && bSectionChanged )
+ {
+ const SwSection* pCurrSection = rWrtShell.GetCurrSection();
+ const SwSectionFmt* pFmt = pCurrSection->GetFmt();
+ USHORT nNewPos = rWrtShell.GetSectionFmtPos( *pFmt );
+ rWrtShell.ChgSection( nNewPos, *pCurrSection, pSectionSet );
+ }
+
+ if(pSectionSet && pSectionSet->Count() && bSelSectionChanged )
+ {
+ rWrtShell.SetSectionAttr( *pSectionSet );
+ }
+
+ if(pPageSet && SFX_ITEM_SET == pPageSet->GetItemState(RES_COL) && bPageChanged)
+ {
+ // aktuellen PageDescriptor ermitteln und damit den Set fuellen
+ const USHORT nCurIdx = rWrtShell.GetCurPageDesc();
+ SwPageDesc aPageDesc(rWrtShell.GetPageDesc(nCurIdx));
+ SwFrmFmt &rFmt = aPageDesc.GetMaster();
+ rFmt.SetAttr(pPageSet->Get(RES_COL));
+ rWrtShell.ChgPageDesc(nCurIdx, aPageDesc);
+ }
+ if(pFrameSet && SFX_ITEM_SET == pFrameSet->GetItemState(RES_COL) && bFrameChanged)
+ {
+ SfxItemSet aTmp(*pFrameSet->GetPool(), RES_COL, RES_COL);
+ aTmp.Put(*pFrameSet);
+ rWrtShell.StartAction();
+ rWrtShell.Push();
+ rWrtShell.SetFlyFrmAttr( aTmp );
+ //die Rahmenselektion wieder aufheben
+ if(rWrtShell.IsFrmSelected())
+ {
+ rWrtShell.UnSelectFrm();
+ rWrtShell.LeaveSelFrmMode();
+ }
+ rWrtShell.Pop();
+ rWrtShell.EndAction();
+ }
+ EndDialog(RET_OK);
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+#ifndef DEBUG
+inline
+#endif
+USHORT GetMaxWidth( SwColMgr* pColMgr, USHORT nCols )
+{
+ USHORT nMax = pColMgr->GetActualSize();
+ if( --nCols )
+ nMax -= pColMgr->GetGutterWidth() * nCols;
+ return nMax;
+}
+
+static USHORT __FAR_DATA aPageRg[] = {
+ RES_COL, RES_COL,
+ 0
+};
+
+
+DBG_NAME(columnhdl) ;
+
+
+
+USHORT lcl_LineWidthToPos(ULONG nWidth)
+{
+ const USHORT nUShortWidth = (USHORT)nWidth;
+ for(USHORT i = 0; i < nLineCount; ++i)
+ if(nUShortWidth == nLines[i])
+ return i;
+ return 0;
+}
+
+
+
+void SwColumnPage::ResetColWidth()
+{
+ if( nCols )
+ {
+ USHORT nWidth = GetMaxWidth( pColMgr, nCols );
+ nWidth /= nCols;
+
+ for(USHORT i = 0; i < nCols; ++i)
+ nColWidth[i] = (long) nWidth;
+ }
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Jetzt als TabPage
+ --------------------------------------------------------------------*/
+
+
+
+SwColumnPage::SwColumnPage(Window *pParent, const SfxItemSet &rSet)
+
+ : SfxTabPage(pParent, SW_RES(TP_COLUMN), rSet),
+
+ aClNrLbl(this, ResId(FT_NUMBER )),
+ aCLNrEdt(this, ResId(ED_NUMBER )),
+ aAutoWidthBox(this, ResId(CB_AUTO_WIDTH)),
+ aDefaultVS(this, ResId(VS_DEFAULTS)),
+ aBalanceColsCB(this, ResId(CB_BALANCECOLS)),
+ aCLGroup(this, ResId(GB_COLUMNS )),
+
+ aLineTypeLbl(this, ResId(FT_STYLE)),
+ aLineTypeDLB(this, ResId(LB_STYLE)),
+ aLineHeightLbl(this, ResId(FT_HEIGHT)),
+ aLineHeightEdit(this, ResId(ED_HEIGHT)),
+ aLinePosLbl(this, ResId(FT_POSITION)),
+ aLinePosDLB(this, ResId(LB_POSITION)),
+ aLineTypeGrp(this, ResId(GB_LINETYPE)),
+ aBtnUp(this, ResId(BTN_DOWN)),
+ aBtnDown(this, ResId(BTN_UP)),
+
+ aWidthFT(this, ResId(FT_WIDTH)),
+ aDistFT(this, ResId(FT_DIST)),
+ aLbl1(this, ResId(FT_1)),
+ aEd1(this, ResId(ED_1)),
+ aDistEd1(this, ResId(ED_DIST1)),
+ aLbl2(this, ResId(FT_2)),
+ aEd2(this, ResId(ED_2)),
+ aDistEd2(this, ResId(ED_DIST2)),
+ aLbl3(this, ResId(FT_3)),
+ aEd3(this, ResId(ED_3)),
+ aLayoutGrp(this, ResId(GB_LAYOUT)),
+
+ aPgeExampleWN(this, ResId(WN_BSP)),
+ aFrmExampleWN(this, ResId(WN_BSP)),
+ aExampleGB(this, ResId(GB_BSP)),
+
+ nFirstVis(0),
+ bFrm(FALSE),
+ bFormat(FALSE),
+ bHtmlMode(FALSE),
+ nMinWidth(MINLAY),
+ pModifiedField(0),
+ pColMgr(0),
+ bLockUpdate(FALSE)
+{
+ FreeResource();
+ SetExchangeSupport();
+
+ aDefaultVS.SetColCount( 5 );
+ aDefaultVS.SetStyle( aDefaultVS.GetStyle()
+ | WB_ITEMBORDER
+ | WB_DOUBLEBORDER );
+ for(USHORT i = 0; i < 5; i++)
+ aDefaultVS.InsertItem( i + 1, i );
+
+ aDefaultVS.SetSelectHdl(LINK(this, SwColumnPage, SetDefaultsHdl));
+
+ // Controls fuer Zusaetzebereich beim MoreButton anmelden
+ aCLNrEdt.SetModifyHdl(LINK(this, SwColumnPage, ColModify));
+ Link aLk = LINK(this, SwColumnPage, GapModify);
+ aDistEd1.SetUpHdl(aLk);
+ aDistEd1.SetDownHdl(aLk);
+ aDistEd1.SetLoseFocusHdl(aLk);
+ aDistEd2.SetUpHdl(aLk);
+ aDistEd2.SetDownHdl(aLk);
+ aDistEd2.SetLoseFocusHdl(aLk);
+
+ aLk = LINK(this, SwColumnPage, EdModify);
+
+ aEd1.SetUpHdl(aLk);
+ aEd1.SetDownHdl(aLk);
+ aEd1.SetLoseFocusHdl(aLk);
+
+ aEd2.SetUpHdl(aLk);
+ aEd2.SetDownHdl(aLk);
+ aEd2.SetLoseFocusHdl(aLk);
+
+ aEd3.SetUpHdl(aLk);
+ aEd3.SetDownHdl(aLk);
+ aEd3.SetLoseFocusHdl(aLk);
+
+ aBtnUp.SetClickHdl(LINK(this, SwColumnPage, Up));
+ aBtnDown.SetClickHdl(LINK(this, SwColumnPage, Down));
+ aAutoWidthBox.SetClickHdl(LINK(this, SwColumnPage, AutoWidthHdl));
+
+ aLk = LINK( this, SwColumnPage, UpdateColMgr );
+ aLineTypeDLB.SetSelectHdl( aLk );
+ aLineHeightEdit.SetModifyHdl( aLk );
+ aLinePosDLB.SetSelectHdl( aLk );
+
+ // Trennlinie
+ aLineTypeDLB.SetUnit( FUNIT_POINT );
+ aLineTypeDLB.SetSourceUnit( FUNIT_TWIP );
+ for( i = 0; i < nLineCount; ++i )
+ aLineTypeDLB.InsertEntry( 100 * nLines[ i ] );
+}
+
+
+
+SwColumnPage::~SwColumnPage()
+{
+ delete pColMgr;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwColumnPage::SetPageWidth(long nPageWidth)
+{
+ long nNewMaxWidth = aEd1.Normalize(nPageWidth);
+
+ aDistEd1.SetMax(nNewMaxWidth, FUNIT_TWIP);
+ aDistEd2.SetMax(nNewMaxWidth, FUNIT_TWIP);
+ aEd1.SetMax(nNewMaxWidth, FUNIT_TWIP);
+ aEd2.SetMax(nNewMaxWidth, FUNIT_TWIP);
+ aEd3.SetMax(nNewMaxWidth, FUNIT_TWIP);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwColumnPage::Reset(const SfxItemSet &rSet)
+{
+ USHORT nHtmlMode = ::GetHtmlMode((const SwDocShell*)SfxObjectShell::Current());
+ if(nHtmlMode & HTMLMODE_ON)
+ {
+ bHtmlMode = TRUE;
+ aAutoWidthBox.Enable(FALSE);
+ }
+ FieldUnit aMetric = ::GetDfltMetric(bHtmlMode);
+ SetMetric(aEd1, aMetric);
+ SetMetric(aEd2, aMetric);
+ SetMetric(aEd3, aMetric);
+ SetMetric(aDistEd1, aMetric);
+ SetMetric(aDistEd2, aMetric);
+
+ delete pColMgr;
+ pColMgr = new SwColMgr(rSet);
+ nCols = pColMgr->GetCount() ;
+ aCLNrEdt.SetMax(Max((USHORT)aCLNrEdt.GetMax(), (USHORT)nCols));
+ aCLNrEdt.SetLast(Max(nCols,(USHORT)aCLNrEdt.GetMax()));
+
+ if(bFrm)
+ {
+ if(bFormat) // hier gibt es keine Size
+ pColMgr->SetActualWidth(FRAME_FORMAT_WIDTH);
+ else
+ {
+ const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE);
+ const SvxBoxItem& rBox = (const SvxBoxItem&) rSet.Get(RES_BOX);
+ pColMgr->SetActualWidth((USHORT)rSize.GetSize().Width() - rBox.GetDistance());
+ }
+ }
+ if(aBalanceColsCB.IsVisible())
+ {
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rSet.GetItemState( RES_COLUMNBALANCE, FALSE, &pItem ))
+ aBalanceColsCB.Check(!((const SwFmtNoBalancedColumns*)pItem)->GetValue());
+ else
+ aBalanceColsCB.Check( TRUE );
+ }
+
+ Init();
+ ActivatePage( rSet );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: TabPage erzeugen
+ --------------------------------------------------------------------*/
+
+
+
+SfxTabPage* SwColumnPage::Create(Window *pParent, const SfxItemSet &rSet)
+{
+ return new SwColumnPage(pParent, rSet);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Attribute in den Set stopfen bei OK
+ --------------------------------------------------------------------*/
+
+
+
+BOOL SwColumnPage::FillItemSet(SfxItemSet &rSet)
+{
+ // Im ItemSet setzen
+ // Die aktuellen Einstellungen sind
+ // schon vorhanden
+ //
+ const SfxPoolItem* pOldItem;
+ const SwFmtCol& rCol = pColMgr->GetColumns();
+ if(0 == (pOldItem = GetOldItem( rSet, RES_COL )) ||
+ rCol != *pOldItem )
+ rSet.Put(rCol);
+
+ if(aBalanceColsCB.IsVisible() )
+ {
+ rSet.Put(SwFmtNoBalancedColumns(!aBalanceColsCB.IsChecked() ));
+ }
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: ColumnManager updaten
+ --------------------------------------------------------------------*/
+
+
+
+IMPL_LINK( SwColumnPage, UpdateColMgr, void *, pField )
+{
+ long nGutterWidth = pColMgr->GetGutterWidth();
+ if(nCols > 1)
+ {
+ // Ermitteln, ob die schmalste Spalte zu schmal ist
+ // fuer den eingestellten Spaltenabstand
+ long nMin = nColWidth[0];
+ for(USHORT i = 1; i < nCols; ++i)
+ nMin = Min(nMin, nColWidth[i]);
+
+ BOOL bAutoWidth = aAutoWidthBox.IsChecked();
+ if(!bAutoWidth)
+ {
+ pColMgr->SetAutoWidth(FALSE);
+ // falls der Benutzer nicht die Gesamtbreite vergeben hat,
+ // den fehlenden Betrag auf die letzte Spalte addieren.
+ long nSum = 0;
+ for(i = 0; i < nCols; ++i)
+ nSum += nColWidth[i];
+ nGutterWidth = 0;
+ for(i = 0; i < nCols - 1; ++i)
+ nGutterWidth += nColDist[i];
+ nSum += nGutterWidth;
+
+ long nMaxW = pColMgr->GetActualSize();
+
+ if( nSum < nMaxW )
+ nColWidth[nCols - 1] += nMaxW - nSum;
+
+ pColMgr->SetColWidth( 0, nColWidth[0] + (USHORT)nColDist[0]/2 );
+ for( i = 1; i < nCols-1; ++i )
+ {
+ long nActDist = (nColDist[i] + nColDist[i - 1]) / 2;
+ pColMgr->SetColWidth( i, (USHORT)nColWidth[i] + (USHORT)nActDist );
+ }
+ pColMgr->SetColWidth( nCols-1, (USHORT)nColWidth[nCols-1] + nColDist[nCols -2]/2 );
+
+ }
+
+ // keins ist ausgeschaltet
+ const USHORT nPos = aLineTypeDLB.GetSelectEntryPos();
+ BOOL bEnable = 0 != nPos;
+ aLineHeightEdit.Enable( bEnable );
+ aLineHeightLbl.Enable( bEnable );
+ if( !bEnable )
+ pColMgr->SetNoLine();
+ else if( LISTBOX_ENTRY_NOTFOUND != nPos )
+ {
+ pColMgr->SetLineWidthAndColor(nLines[nPos - 1], Color(COL_BLACK) );
+ pColMgr->SetAdjust( SwColLineAdj(
+ aLinePosDLB.GetSelectEntryPos() + 1) );
+ pColMgr->SetLineHeightPercent((short)aLineHeightEdit.GetValue());
+ bEnable = pColMgr->GetLineHeightPercent() != 100;
+ }
+ aLinePosLbl.Enable( bEnable );
+ aLinePosDLB.Enable( bEnable );
+ }
+ else
+ {
+ pColMgr->NoCols();
+ }
+
+ //Maximalwerte setzen
+ aCLNrEdt.SetMax(Max(1L,
+ Min(long(nMaxCols), long( pColMgr->GetActualSize() /
+ ((nGutterWidth + MINLAY)) ))));
+ aCLNrEdt.SetLast(aCLNrEdt.GetMax());
+ aCLNrEdt.Reformat();
+
+ //Beispielfenster anregen
+ if(!bLockUpdate)
+ {
+ if(bFrm)
+ {
+ aFrmExampleWN.SetColumns( pColMgr->GetColumns() );
+ aFrmExampleWN.Invalidate();
+ }
+ else
+ aPgeExampleWN.Invalidate();
+ }
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Initialisierung
+------------------------------------------------------------------------*/
+
+
+
+void SwColumnPage::Init()
+{
+ aCLNrEdt.SetValue(nCols);
+
+ aAutoWidthBox.Check(pColMgr->IsAutoWidth() || bHtmlMode );
+
+ // Setzen der Breiten
+ for(USHORT i = 0; i < nCols; ++i)
+ {
+ nColWidth[i] = pColMgr->GetColWidth(i);
+ if(i < nCols - 1)
+ nColDist[i] = pColMgr->GetGutterWidth(i);
+ }
+
+ if( 1 < nCols )
+ {
+ USHORT eAdj = pColMgr->GetAdjust();
+ if( COLADJ_NONE == eAdj ) // der Dialog kennt kein NONE!
+ {
+ eAdj = COLADJ_TOP;
+ //ohne Adjust auch kein Linientyp
+ aLineTypeDLB.SelectEntryPos( 0 );
+ aLineHeightEdit.SetValue( 100 );
+ }
+ else
+ {
+ aLineTypeDLB.SelectEntryPos( lcl_LineWidthToPos(( pColMgr->GetLineWidth() ) + 1 ));
+ aLineHeightEdit.SetValue( pColMgr->GetLineHeightPercent() );
+ }
+ aLinePosDLB.SelectEntryPos( eAdj - 1 );
+ }
+ else
+ {
+ aLinePosDLB.SelectEntryPos( 0 );
+ aLineTypeDLB.SelectEntryPos( 0 );
+ aLineHeightEdit.SetValue( 100 );
+ }
+
+ UpdateCols();
+ Update();
+
+ // Maximale Spaltenzahl setzen
+ // Werte kleiner als 1 sind nicht erlaubt
+ aCLNrEdt.SetMax(Max(1L,
+ Min(long(nMaxCols), long(pColMgr->GetActualSize() / nMinWidth))));
+
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Die Anzahl der Spalten hat sich veraendert -- hier werden
+ die Controls fuer die Bearbeitung der Spalten entsprechend
+ der Spaltenzahl en- oder disabled.
+ Falls es mehr als nVisCols (= 3) Spalten gibt, werden
+ alle Edit enabled und die Buttons fuer das Scrollen
+ ebenfalls.
+ Andernfalls werden die Edits jeweils fuer die entsprechenden
+ Spaltenzahl enabled; eine Spalte kann nicht bearbeitet werden.
+------------------------------------------------------------------------*/
+
+
+
+void SwColumnPage::UpdateCols()
+{
+ BOOL bEnableBtns= FALSE;
+ BOOL bEnable12 = FALSE;
+ BOOL bEnable3 = FALSE;
+ const BOOL bEdit = !aAutoWidthBox.IsChecked();
+ if ( nCols > nVisCols )
+ {
+ bEnableBtns = TRUE && !bHtmlMode;
+ bEnable12 = bEnable3 = bEdit;
+ }
+ else if( bEdit )
+ {
+ // hier gibt es absichtlich kaum noch breaks
+ switch(nCols)
+ {
+ case 3: bEnable3 = TRUE;
+ case 2: bEnable12= TRUE; break;
+ default: /* do nothing */;
+ }
+ }
+ aEd1.Enable( bEnable12 );
+ aDistEd1.Enable(nCols > 1);
+ aEd2.Enable( bEnable12 );
+ aDistEd2.Enable(bEnable3);
+ aEd3.Enable( bEnable3 );
+ aLbl1.Enable(bEnable12 );
+ aLbl2.Enable(bEnable12 );
+ aLbl3.Enable(bEnable3 );
+ aBtnUp.Enable( bEnableBtns );
+ aBtnDown.Enable( bEnableBtns );
+
+ const BOOL bEnable = nCols > 1;
+ if( !bEnable )
+ {
+ aLinePosDLB.Enable( FALSE );
+ aLinePosLbl.Enable( FALSE );
+ }
+ aLineHeightEdit.Enable( bEnable );
+ aLineHeightLbl.Enable( bEnable );
+ aLineTypeDLB.Enable( bEnable );
+ aLineTypeLbl.Enable( bEnable );
+ aAutoWidthBox.Enable( bEnable && !bHtmlMode );
+}
+
+void SwColumnPage::SetLabels( USHORT nVis )
+{
+ String sLbl( '~' );
+
+ String sLbl2( String::CreateFromInt32( nVis + 1 ));
+ sLbl2.Insert(sLbl, sLbl2.Len() - 1);
+ aLbl1.SetText(sLbl2);
+
+ sLbl2 = String::CreateFromInt32( nVis + 2 );
+ sLbl2.Insert(sLbl, sLbl2.Len() - 1);
+ aLbl2.SetText(sLbl2);
+
+ sLbl2 = String::CreateFromInt32( nVis + 3 );
+ sLbl2.Insert(sLbl, sLbl2.Len() - 1);
+ aLbl3.SetText(sLbl2);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Handler, der bei einer Veraenderung der Spaltenzahl
+ gerufen wird.
+ Eine Aenderung der Spaltenzahl ueberschreibt eventuelle
+ Breiteneinstellungen des Benutzers; alle Spalten sind
+ gleich breit.
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwColumnPage, ColModify, NumericField *, pNF )
+{
+ if(pNF)
+ aDefaultVS.SetNoSelection();
+ nCols = (USHORT)aCLNrEdt.GetValue();
+ long nDist = aDistEd1.Denormalize(aDistEd1.GetValue(FUNIT_TWIP));
+ pColMgr->SetCount(nCols, (USHORT)nDist);
+ for(USHORT i = 0; i < nCols; i++)
+ nColDist[i] = nDist;
+ nFirstVis = 0;
+ SetLabels( nFirstVis );
+ UpdateCols();
+ ResetColWidth();
+ Update();
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Modify- Handler fuer eine Aenderung der Spaltenbreite
+ oder des Spaltenabstandes.
+ Diese Aenderungen wirken sich erst zeitversetzt aus.
+ Durch eine Aenderung der Spaltenbreite wird die automatische
+ Berechnung der Spaltenbreite ausser Kraft gesetzt; erst
+ eine Aenderung der Spaltenzahl kehrt wieder zu diesem
+ Default zurueck.
+------------------------------------------------------------------------*/
+
+
+
+IMPL_LINK( SwColumnPage, GapModify, PercentField *, pFld )
+{
+ long nActValue = pFld->Denormalize(pFld->GetValue(FUNIT_TWIP));
+ if(nCols < 2)
+ return 0;
+ if(aAutoWidthBox.IsChecked())
+ {
+ USHORT nMaxGap = pColMgr->GetActualSize() - nCols * MINLAY;
+ DBG_ASSERT(nCols, "Abstand kann nicht ohne Spalten eingestellt werden")
+ nMaxGap /= nCols - 1;
+ if(nActValue > nMaxGap)
+ {
+ nActValue = nMaxGap;
+ aDistEd1.SetValue(aDistEd1.Normalize(nMaxGap), FUNIT_TWIP);
+ }
+ pColMgr->SetGutterWidth((USHORT)nActValue);
+ for(USHORT i = 0; i < nCols; i++)
+ nColDist[i] = nActValue;
+
+ ResetColWidth();
+ UpdateCols();
+ }
+ else
+
+ {
+ USHORT nOffset = 0;
+ if(pFld == &aDistEd2)
+ {
+ nOffset = 1;
+ }
+ long nDiff = nActValue - nColDist[nFirstVis + nOffset];
+ if(nDiff)
+ {
+ long nLeft = nColWidth[nFirstVis + nOffset];
+ long nRight = nColWidth[nFirstVis + nOffset + 1];
+ if(nLeft + nRight + 2 * MINLAY < nDiff)
+ nDiff = nLeft + nRight - 2 * MINLAY;
+ if(nDiff < nRight - MINLAY)
+ {
+ nRight -= nDiff;
+ }
+ else
+ {
+ long nTemp = nDiff - nRight + MINLAY;
+ nRight = MINLAY;
+ if(nLeft > nTemp - MINLAY)
+ {
+ nLeft -= nTemp;
+ nTemp = 0;
+ }
+ else
+ {
+ nTemp -= nLeft + MINLAY;
+ nLeft = MINLAY;
+ }
+ nDiff = nTemp;
+ }
+ nColWidth[nFirstVis + nOffset] = nLeft;
+ nColWidth[nFirstVis + nOffset + 1] = nRight;
+ nColDist[nFirstVis + nOffset] += nDiff;
+
+ pColMgr->SetColWidth( nFirstVis + nOffset, USHORT(nLeft) );
+ pColMgr->SetColWidth( nFirstVis + nOffset + 1, USHORT(nRight) );
+ pColMgr->SetGutterWidth( USHORT(nColDist[nFirstVis + nOffset]), nFirstVis + nOffset );
+ }
+
+ }
+ Update();
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+
+IMPL_LINK( SwColumnPage, EdModify, PercentField *, pField )
+{
+ pModifiedField = pField;
+ Timeout(0);
+ return 0;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Handler hinter der Checkbox fuer automatische Breite.
+ Ist die Box gecheckt, koennen keine expliziten Werte
+ fuer die Spaltenbreite eingegeben werden.
+------------------------------------------------------------------------*/
+
+
+
+IMPL_LINK( SwColumnPage, AutoWidthHdl, CheckBox *, pBox )
+{
+ long nDist = aDistEd1.Denormalize(aDistEd1.GetValue(FUNIT_TWIP));
+ pColMgr->SetCount(nCols, (USHORT)nDist);
+ for(USHORT i = 0; i < nCols; i++)
+ nColDist[i] = nDist;
+ if(pBox->IsChecked())
+ {
+ pColMgr->SetGutterWidth(USHORT(nDist));
+ ResetColWidth();
+ }
+ pColMgr->SetAutoWidth(pBox->IsChecked(), USHORT(nDist));
+ UpdateCols();
+ Update();
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Raufscrollen der Inhalte der Edits.
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwColumnPage, Up, Button *, EMPTYARG )
+{
+ if( nFirstVis )
+ {
+ --nFirstVis;
+ SetLabels( nFirstVis );
+ Update();
+ }
+ return 0;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Runterscrollen der Inhalte der Edits.
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwColumnPage, Down, Button *, EMPTYARG )
+{
+ if( nFirstVis + nVisCols < nCols )
+ {
+ ++nFirstVis;
+ SetLabels( nFirstVis );
+ Update();
+ }
+ return 0;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Relikt aus alten Zeiten - jetzt direkt ohne time
+ * Timer- Handler; angetriggert durch eine Aenderung der
+ Spaltenbreite oder des Spaltenabstandes.
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwColumnPage, Timeout, Timer *, EMPTYARG )
+{
+ DBG_PROFSTART(columnhdl) ;
+ if(pModifiedField)
+ {
+ // Finden der veraenderten Spalte
+ USHORT nChanged = nFirstVis;
+ if(pModifiedField == &aEd2)
+ ++nChanged;
+ else if(pModifiedField == &aEd3)
+ nChanged += 2;
+ /*else if(pModifiedField == &aEd4)
+ nChanged += 3;*/
+
+ long nNewWidth = (USHORT)
+ pModifiedField->Denormalize(pModifiedField->GetValue(FUNIT_TWIP));
+ long nDiff = nNewWidth - nColWidth[nChanged];
+
+ // wenn es die letzte Spalte ist
+ if(nChanged == nCols - 1)
+ {
+ nColWidth[0] -= nDiff;
+ if(nColWidth[0] < (long)nMinWidth)
+ {
+ nNewWidth -= nMinWidth - nColWidth[0];
+ nColWidth[0] = nMinWidth;
+ }
+
+ }
+ else if(nDiff)
+ {
+ nColWidth[nChanged + 1] -= nDiff;
+ if(nColWidth[nChanged + 1] < (long) nMinWidth)
+ {
+ nNewWidth -= nMinWidth - nColWidth[nChanged + 1];
+ nColWidth[nChanged + 1] = nMinWidth;
+ }
+ }
+ nColWidth[nChanged] = nNewWidth;
+ pModifiedField = 0;
+ }
+ Update();
+ DBG_PROFSTOP(columnhdl) ;
+ return 0;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Aktualisierung der Anzeige
+------------------------------------------------------------------------*/
+
+
+
+void SwColumnPage::Update()
+{
+ aBalanceColsCB.Enable(nCols > 1);
+ if(nCols >= 2)
+ {
+ aEd1.SetValue(aEd1.Normalize(nColWidth[nFirstVis]), FUNIT_TWIP);
+ aDistEd1.SetValue(aDistEd1.Normalize(nColDist[nFirstVis]), FUNIT_TWIP);
+ aEd2.SetValue(aEd2.Normalize(nColWidth[nFirstVis + 1]), FUNIT_TWIP);
+ if(nCols >= 3)
+ {
+ aDistEd2.SetValue(aDistEd2.Normalize(nColDist[nFirstVis + 1]), FUNIT_TWIP);
+ aEd3.SetValue(aEd3.Normalize(nColWidth[nFirstVis + 2]), FUNIT_TWIP);
+ }
+ else
+ {
+ aEd3.SetText(aEmptyStr);
+ aDistEd2.SetText(aEmptyStr);
+ }
+ }
+ else
+ {
+ aEd1.SetText(aEmptyStr);
+ aEd2.SetText(aEmptyStr);
+ aEd3.SetText(aEmptyStr);
+ aDistEd1.SetText(aEmptyStr);
+ aDistEd2.SetText(aEmptyStr);
+ }
+ UpdateColMgr(0);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Update Bsp
+ --------------------------------------------------------------------*/
+
+
+
+void SwColumnPage::ActivatePage(const SfxItemSet& rSet)
+{
+ if(!bFrm)
+ {
+ if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_PAGE_SIZE ))
+ {
+ const SvxSizeItem& rSize = (const SvxSizeItem&)rSet.Get(
+ SID_ATTR_PAGE_SIZE);
+ const SvxLRSpaceItem& rLRSpace = (const SvxLRSpaceItem&)rSet.Get(
+ RES_LR_SPACE );
+ const SvxBoxItem& rBox = (const SvxBoxItem&) rSet.Get(RES_BOX);
+ USHORT nActWidth = (USHORT)rSize.GetSize().Width()
+ - rLRSpace.GetLeft() - rLRSpace.GetRight() - rBox.GetDistance();
+
+ if( pColMgr->GetActualSize() != nActWidth)
+ {
+ pColMgr->SetActualWidth(nActWidth);
+ ColModify( 0 );
+ UpdateColMgr( 0 );
+ }
+ }
+ aFrmExampleWN.Hide();
+ aPgeExampleWN.UpdateExample( rSet, pColMgr );
+ aPgeExampleWN.Show();
+
+ }
+ else
+ {
+ aPgeExampleWN.Hide();
+ aFrmExampleWN.Show();
+
+ // Size
+ const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE);
+ const SvxBoxItem& rBox = (const SvxBoxItem&) rSet.Get(RES_BOX);
+
+ long nDistance = rBox.GetDistance();
+ if(bFormat)
+ aFrmExampleWN.SetFrameSize(Size(FRAME_FORMAT_WIDTH, FRAME_FORMAT_WIDTH), 0);
+ else
+ aFrmExampleWN.SetFrameSize(rSize.GetSize(), nDistance);
+
+
+ const USHORT nTotalWish = bFormat ? FRAME_FORMAT_WIDTH : USHORT(rSize.GetWidth() - 2 * nDistance);
+
+ // Maximalwerte der Spaltenbreiten setzen
+ SetPageWidth(nTotalWish);
+
+ if(pColMgr->GetActualSize() != nTotalWish)
+ {
+ pColMgr->SetActualWidth(nTotalWish);
+ Init();
+ }
+ BOOL bPercent;
+ // im Rahmenformat nur relative Angaben
+ if ( bFormat || rSize.GetWidthPercent() && rSize.GetWidthPercent() != 0xff)
+ {
+ // Wert fuer 100% setzen
+ aEd1.SetRefValue(nTotalWish);
+ aEd2.SetRefValue(nTotalWish);
+ aEd3.SetRefValue(nTotalWish);
+ aDistEd1.SetRefValue(nTotalWish);
+ aDistEd2.SetRefValue(nTotalWish);
+
+ // Auf %-Darstellung umschalten
+ bPercent = TRUE;
+ }
+ else
+ bPercent = FALSE;
+
+ aEd1.ShowPercent(bPercent);
+ aEd2.ShowPercent(bPercent);
+ aEd3.ShowPercent(bPercent);
+ aDistEd1.ShowPercent(bPercent);
+ aDistEd2.ShowPercent(bPercent);
+ aDistEd1.MetricField::SetMin(0);
+ aDistEd2.MetricField::SetMin(0);
+ }
+ Update();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+int SwColumnPage::DeactivatePage(SfxItemSet *pSet)
+{
+ if(pSet)
+ FillItemSet(*pSet);
+
+ return TRUE;
+}
+
+
+
+USHORT* SwColumnPage::GetRanges()
+{
+ return aPageRg;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+IMPL_LINK( SwColumnPage, SetDefaultsHdl, ValueSet *, pVS )
+{
+ USHORT nItem = pVS->GetSelectItemId();
+ if( nItem < 4 )
+ {
+ aCLNrEdt.SetValue( nItem );
+ aAutoWidthBox.Check();
+ aDistEd1.SetValue(0);
+ ColModify(0);
+ }
+ else
+ {
+ bLockUpdate = TRUE;
+ aCLNrEdt.SetValue( 2 );
+ aAutoWidthBox.Check(FALSE);
+ aDistEd1.SetValue(0);
+ ColModify(0);
+ // jetzt noch das Breitenverhaeltnisse auf 2 : 1 bzw. 1 : 2 stellen
+ USHORT nSmall = pColMgr->GetActualSize() / 3;
+ if(nItem == 4)
+ {
+ aEd2.SetValue(aEd2.Normalize(long(nSmall)), FUNIT_TWIP);
+ pModifiedField = &aEd2;
+ }
+ else
+ {
+ aEd1.SetValue(aEd1.Normalize(long(nSmall)), FUNIT_TWIP);
+ pModifiedField = &aEd1;
+ }
+ bLockUpdate = FALSE;
+ Timeout(0);
+
+ }
+ return 0;
+}
+
+/*-----------------25.10.96 11.41-------------------
+
+--------------------------------------------------*/
+
+
+void SwColumnPage::SetFrmMode(BOOL bMod)
+{
+ bFrm = bMod;
+}
+
+/*-----------------07.03.97 08.33-------------------
+
+--------------------------------------------------*/
+
+
+void ColumnValueSet::UserDraw( const UserDrawEvent& rUDEvt )
+{
+ OutputDevice* pDev = rUDEvt.GetDevice();
+ Rectangle aRect = rUDEvt.GetRect();
+ USHORT nItemId = rUDEvt.GetItemId();
+ long nRectWidth = aRect.GetWidth();
+ long nRectHeight = aRect.GetHeight();
+
+ Point aBLPos = aRect.TopLeft();
+ Color aOldLineColor = pDev->GetLineColor();
+ pDev->SetLineColor(Color(COL_BLACK));
+
+ long nStep = Abs(Abs(nRectHeight * 95 /100) / 11);
+ long nTop = (nRectHeight - 11 * nStep ) / 2;
+ USHORT nCols;
+ long nStarts[3];
+ long nEnds[3];
+ nStarts[0] = nRectWidth * 10 / 100;
+ switch( nItemId )
+ {
+ case 1:
+ nEnds[0] = nRectWidth * 9 / 10;
+ nCols = 1;
+ break;
+ case 2: nCols = 2;
+ nEnds[0] = nRectWidth * 45 / 100;
+ nStarts[1] = nEnds[0] + nStep;
+ nEnds[1] = nRectWidth * 9 / 10;
+ break;
+ case 3: nCols = 3;
+ nEnds[0] = nRectWidth * 30 / 100;
+ nStarts[1] = nEnds[0] + nStep;
+ nEnds[1] = nRectWidth * 63 / 100;
+ nStarts[2] = nEnds[1] + nStep;
+ nEnds[2] = nRectWidth * 9 / 10;
+ break;
+ case 4: nCols = 2;
+ nEnds[0] = nRectWidth * 63 / 100;
+ nStarts[1] = nEnds[0] + nStep;
+ nEnds[1] = nRectWidth * 9 / 10;
+ break;
+ case 5: nCols = 2;
+ nEnds[0] = nRectWidth * 30 / 100;
+ nStarts[1] = nEnds[0] + nStep;
+ nEnds[1] = nRectWidth * 9 / 10;
+ break;
+ }
+ for(USHORT j = 0; j < nCols; j++ )
+ {
+ Point aStart(aBLPos.X() + nStarts[j], 0);
+ Point aEnd(aBLPos.X() + nEnds[j], 0);
+ for( USHORT i = 0; i < 12; i ++)
+ {
+ aStart.Y() = aEnd.Y() = aBLPos.Y() + nTop + i * nStep;
+ pDev->DrawLine(aStart, aEnd);
+ }
+ }
+ pDev->SetLineColor(aOldLineColor);
+}
+
+/*-----------------07.03.97 08.48-------------------
+
+--------------------------------------------------*/
+
+
+ColumnValueSet::~ColumnValueSet()
+{
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.156 2000/09/18 16:05:32 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.155 2000/09/05 10:38:24 kz
+ chg. SetWinStyle/GetWinStyle to SetStyle/GetStyle
+
+ Revision 1.154 2000/08/15 15:46:54 os
+ #77635# set accelerator at last character
+
+ Revision 1.153 2000/07/26 16:26:29 jp
+ Bug #77158#: call InsertRegionDialog with the complete Itemset
+
+ Revision 1.152 2000/05/23 18:48:10 jp
+ Bugfixes for Unicode
+
+ Revision 1.151 2000/03/03 15:17:01 os
+ StarView remainders removed
+
+ Revision 1.150 2000/01/07 15:32:20 ama
+ Fix #71411#: NoBalanced columns
+
+ Revision 1.149 2000/01/04 15:36:29 os
+ #71411# balanced columns
+
+ Revision 1.148 1999/10/22 11:41:23 os
+ #69058# ListBox entries: selected sections only if more than one section is selected
+
+ Revision 1.147 1999/09/06 18:16:32 jp
+ Insert into the LineTypeBox twip values and set the Source- & Unit
+
+ Revision 1.146 1999/06/10 16:39:56 JP
+ new: Change columns for selected Pages or Sections
+
+
+ Rev 1.145 10 Jun 1999 18:39:56 JP
+ new: Change columns for selected Pages or Sections
+
+ Rev 1.144 27 May 1999 13:02:26 OS
+ Einf?gen/Bearbeiten von Spalten ueberarbeitet
+
+ Rev 1.143 05 Mar 1999 10:30:08 OS
+ #62854# ModifyHdl nur im Up/Down/LoseFocus, kein Timer
+
+ Rev 1.142 12 Oct 1998 17:21:32 OM
+ #57749# UI fuer spaltige Bereiche
+
+ Rev 1.141 08 Sep 1998 16:56:54 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.140 12 May 1998 12:29:34 OS
+ GapModify return wenn Spaltenzahl < 2 #50218#
+
+ Rev 1.139 24 Apr 1998 11:05:50 OS
+ Spalten in Rahmenvorlagen nur relativ
+
+ Rev 1.138 08 Apr 1998 13:55:24 OS
+ ein cast an der falschen Stelle
+
+ Rev 1.137 06 Apr 1998 09:49:20 OS
+ Warnungen beseitigt
+
+ Rev 1.136 28 Nov 1997 19:30:32 MA
+ includes
+
+ Rev 1.135 24 Nov 1997 17:40:10 MA
+ include
+
+ Rev 1.134 03 Nov 1997 13:19:48 MA
+ precomp entfernt
+
+ Rev 1.133 02 Sep 1997 14:41:42 OS
+ LineListBox fuer VCL
+
+ Rev 1.132 01 Sep 1997 13:26:24 OS
+ DLL-Umstellung
+
+ Rev 1.131 12 Aug 1997 15:58:08 OS
+ frmitems/textitem/paraitem aufgeteilt
+
+ Rev 1.130 08 Aug 1997 17:26:38 OM
+ Headerfile-Umstellung
+
+ Rev 1.129 07 Aug 1997 14:59:06 OM
+ Headerfile-Umstellung
+
+ Rev 1.128 07 Mar 1997 09:35:28 OS
+ Spaltenbeispiel mit UserDraw
+
+ Rev 1.127 20 Feb 1997 19:20:24 HJS
+ header umgestellt
+
+ Rev 1.126 28 Jan 1997 16:31:52 OS
+ HtmlMode mit GetHtmlMode ermitteln
+
+ Rev 1.125 08 Jan 1997 11:00:26 OS
+ SID_HTML_MODE jetzt UInt16Item
+
+ Rev 1.124 11 Dec 1996 10:24:06 MA
+ Warnings
+
+ Rev 1.123 02 Dec 1996 11:42:22 OS
+ GapModify mit PercentField
+
+ Rev 1.122 22 Nov 1996 09:52:16 OS
+ ValueSet deselektieren, wenn sich die Spaltenzahl aendert
+
+ Rev 1.121 21 Nov 1996 11:53:56 OS
+ Umrandungsabstand beruecksichtigen
+
+ Rev 1.120 11 Nov 1996 10:44:16 MA
+ ResMgr
+
+ Rev 1.119 08 Nov 1996 14:07:24 OS
+ div. Bugs behoben
+
+ Rev 1.118 25 Oct 1996 14:55:36 OS
+ neues Spaltenbeispiel ohne Seite
+
+ Rev 1.117 24 Oct 1996 17:57:40 OS
+ Rahmendialog mit unterschiedlichen Spaltenabstaenden
+
+ Rev 1.116 18 Oct 1996 16:14:40 HJS
+ includes
+
+ Rev 1.115 11 Oct 1996 12:06:28 OS
+ Aenderungen fuer HTML-Mode
+
+ Rev 1.114 02 Oct 1996 17:36:18 MA
+ Umstellung Enable/Disable
+
+ Rev 1.113 11 Sep 1996 15:09:32 OM
+ Rahmenspalten
+
+ Rev 1.112 10 Sep 1996 17:00:44 OM
+ Prozentuale Rahmen
+
+ Rev 1.111 09 Sep 1996 16:57:04 OM
+ Prozentuale Spalten
+
+ Rev 1.110 06 Sep 1996 14:15:18 OM
+ #31010# GPF bei fehlenden Groessenangaben behoben
+
+ Rev 1.109 28 Aug 1996 11:52:52 OS
+ includes
+
+ Rev 1.108 12 Aug 1996 14:04:08 OS
+ Registerhaltigkeit abschaltbar ...
+
+ Rev 1.107 10 Aug 1996 14:59:24 OS
+ FixedTexts immer mit enablen/disablen
+
+ Rev 1.106 31 Jul 1996 14:45:58 OS
+ im Html-Mode nur autom. Spaltenbreite
+
+ Rev 1.105 27 Jul 1996 10:52:58 OS
+ RegisterItem benutzen
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/frmdlg/column.hrc b/sw/source/ui/frmdlg/column.hrc
new file mode 100644
index 000000000000..1ba3aadbc4ba
--- /dev/null
+++ b/sw/source/ui/frmdlg/column.hrc
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * $RCSfile: column.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 FT_NUMBER 1
+#define ED_NUMBER 2
+#define FT_DISTANCE 3
+#define ED_DISTANCE 4
+#define CB_AUTO_WIDTH 4
+#define GB_COLUMNS 6
+
+#define FT_1 20
+#define FT_2 21
+#define FT_3 22
+
+
+#define ED_1 25
+#define ED_2 26
+#define ED_3 27
+
+
+#define BTN_UP 30
+#define BTN_DOWN 31
+#define GB_LAYOUT 32
+
+#define FT_STYLE 33
+#define LB_STYLE 34
+#define FT_HEIGHT 35
+#define ED_HEIGHT 36
+#define FT_POSITION 37
+#define LB_POSITION 38
+#define GB_LINETYPE 39
+
+
+#define GB_BSP 40
+#define WN_BSP 41
+#define LB_REFERENCE 42
+#define CB_REGISTER 43
+#define GB_REGISTER 44
+#define FT_REFERENCE 45
+
+#define ED_DIST1 46
+#define ED_DIST2 47
+
+#define FT_WIDTH 49
+#define FT_DIST 50
+#define VS_DEFAULTS 51
+#define IL_PRE_COLS 52
+
+#define FT_APPLY_TO 53
+#define LB_APPLY_TO 54
+#define PB_HELP 55
+#define PB_CANCEL 56
+#define PB_OK 57
+#define CB_BALANCECOLS 58
+
+#define LISTBOX_SELECTION 0
+#define LISTBOX_SECTION 1
+#define LISTBOX_SECTIONS 2
+#define LISTBOX_PAGE 3
+#define LISTBOX_FRAME 4
diff --git a/sw/source/ui/frmdlg/column.src b/sw/source/ui/frmdlg/column.src
new file mode 100644
index 000000000000..c5792310cc37
--- /dev/null
+++ b/sw/source/ui/frmdlg/column.src
@@ -0,0 +1,1145 @@
+/*************************************************************************
+ *
+ * $RCSfile: column.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "globals.hrc"
+#include "column.hrc"
+#include "frmui.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ // #define TP_COLUMN 256
+TabPage TP_COLUMN
+{
+ HelpID = HID_COLUMN ;
+ Hide = TRUE;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Text = "Spalten" ; // Dieser Text ist fuer den SingleTabDialog bestimmt!
+ Text [ ENGLISH ] = "Columns" ;
+ Text [ norwegian ] = "Kolonner" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ portuguese_brazilian ] = "Colunas" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ finnish ] = "Sarakkeet" ;
+ Text [ danish ] = "Kolonner" ;
+ Text [ french ] = "Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ spanish ] = "Columnas" ;
+ Text [ english_us ] = "Columns" ;
+ FixedText FT_NUMBER
+ {
+ Pos = MAP_APPFONT ( 11 , 16 ) ;
+ Size = MAP_APPFONT ( 28 , 10 ) ;
+ Text = "~Anzahl" ;
+ Text [ ENGLISH ] = "~Num." ;
+ Text [ norwegian ] = "~Num." ;
+ Text [ italian ] = "~Num." ;
+ Text [ portuguese_brazilian ] = "~N£m." ;
+ Text [ portuguese ] = "~Quantidade" ;
+ Text [ finnish ] = "~Määrä" ;
+ Text [ danish ] = "Antal" ;
+ Text [ french ] = "~Nombre" ;
+ Text [ swedish ] = "~Antal" ;
+ Text [ dutch ] = "~Aantal" ;
+ Text [ spanish ] = "~Cantidad" ;
+ Text [ english_us ] = "~Amount" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÊýÄ¿(~A)";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "’i”(~A)";
+ Text[ chinese_traditional ] = "¼Æ¥Ø(~A)";
+ Text[ arabic ] = "ÇáÚÏÏ";
+ Text[ dutch ] = "~Aantal";
+ Text[ chinese_simplified ] = "ÊýÄ¿(~A)";
+ Text[ greek ] = "~Áñéèìüò";
+ Text[ korean ] = "¾ç(~A)";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "S~ayý";
+ };
+ NumericField ED_NUMBER
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 11 , 28 ) ;
+ Size = MAP_APPFONT ( 24 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 20 ;
+ Value = 1 ;
+ First = 1 ;
+ Last = 20 ;
+ SpinSize = 1 ;
+ };
+ Control VS_DEFAULTS
+ {
+ Pos = MAP_APPFONT ( 50 , 12 ) ;
+ Size = MAP_APPFONT ( 110 , 28 ) ;
+ TabStop = TRUE ;
+ };
+ CheckBox CB_BALANCECOLS
+ {
+ Pos = MAP_APPFONT ( 11 , 43 ) ;
+ Size = MAP_APPFONT ( 150 , 10 ) ;
+ Text = "~Spalten ausgleichen" ;
+ Text [ ENGLISH ] = "Balance columns" ;
+ Hide = TRUE;
+ Text[ english_us ] = "~Balance columns";
+ Text[ portuguese ] = "Optimizar ~colunas";
+ Text[ russian ] = "Âûðîâíÿòü êîëîíêè";
+ Text[ greek ] = "Åîé~óïññüðçóç óôçëþí";
+ Text[ dutch ] = "~Kolommen uitbalanceren";
+ Text[ french ] = "Optimiser les ~colonnes";
+ Text[ spanish ] = "~Optimar columnas";
+ Text[ italian ] = "Ottimizza colonne";
+ Text[ danish ] = "Udjævn kolonner";
+ Text[ swedish ] = "~Jämna ut kolumner";
+ Text[ polish ] = "~Wyrównaj kolumny";
+ Text[ portuguese_brazilian ] = "Balance columns";
+ Text[ japanese ] = "’i‚Ì•‚ð‚·‚×‚Ä“¯‚¶‚É‚·‚é(~B)";
+ Text[ korean ] = "´Ü ±æÀÌ Á¶Á¤(~B)";
+ Text[ chinese_simplified ] = "Эµ÷À¸";
+ Text[ chinese_traditional ] = "Äæ¦P¨B¤Æ";
+ Text[ arabic ] = "ÃÚãÏÉ ãÊÓÇæíÉ";
+ Text[ turkish ] = "S~ütunlarý dengele";
+ };
+ GroupBox GB_COLUMNS
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 157 , 53 ) ;
+ Text = "Spalten" ;
+ Text [ ENGLISH ] = "Columns" ;
+ Text [ norwegian ] = "Kolonner" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ portuguese_brazilian ] = "Colunas" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ finnish ] = "Sarakkeet" ;
+ Text [ danish ] = "Kolonner" ;
+ Text [ french ] = "Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ spanish ] = "Columnas" ;
+ Text [ english_us ] = "Columns" ;
+ Text[ chinese_simplified ] = "À¸";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "’i‘g‚Ý";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÇáÃÚãÏÉ";
+ Text[ dutch ] = "Kolommen";
+ Text[ chinese_simplified ] = "À¸";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Sütun";
+ };
+ FixedText FT_STYLE
+ {
+ Pos = MAP_APPFONT ( 180 , 70 ) ;
+ Size = MAP_APPFONT ( 18 , 10 ) ;
+ Text = "A~rt" ;
+ Text [ ENGLISH ] = "~Style" ;
+ Text [ norwegian ] = "~Style" ;
+ Text [ italian ] = "~Stile" ;
+ Text [ portuguese_brazilian ] = "~Estilo" ;
+ Text [ portuguese ] = "~Estilo" ;
+ Text [ finnish ] = "~Tyyli" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "~Type" ;
+ Text [ swedish ] = "~Typ" ;
+ Text [ dutch ] = "~Type" ;
+ Text [ spanish ] = "~Tipo" ;
+ Text [ english_us ] = "~Line" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÀàÐÍ(~L)";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Ží—Þ(~L)";
+ Text[ chinese_traditional ] = "Ãþ«¬(~L)";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "~Type";
+ Text[ chinese_simplified ] = "ÀàÐÍ(~L)";
+ Text[ greek ] = "Ôý~ðïò";
+ Text[ korean ] = "¼±(~L)";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "T~ür";
+ };
+ ListBox LB_STYLE
+ {
+ Pos = MAP_APPFONT ( 211 , 69 ) ;
+ Size = MAP_APPFONT ( 40 , 66 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Keine" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Keine" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "Keine" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "Senza" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Nenhum" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Nenhum" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "Keine" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "Ingen" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "Aucun(e)" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Ingen" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Geen" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Ninguno" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "None" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÎÞ" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Áåç" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Brak" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‚È‚µ" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "µL" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÈÏæä" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Geen" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÎÞ" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÊáíÝíá" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¾øÀ½" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Yok" ; Default ; > ;
+ };
+ };
+ FixedText FT_HEIGHT
+ {
+ Pos = MAP_APPFONT ( 180 , 90 ) ;
+ Size = MAP_APPFONT ( 22 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Höh~e : H÷h~e */
+ Text = "Höh~e" ;
+ Text [ ENGLISH ] = "Hei~ght" ;
+ Text [ norwegian ] = "Hei~ght" ;
+ Text [ italian ] = "Altezza" ;
+ Text [ portuguese_brazilian ] = "Altu~ra" ;
+ Text [ portuguese ] = "Altu~ra" ;
+ Text [ finnish ] = "~Korkeus" ;
+ Text [ danish ] = "Højde" ;
+ Text [ french ] = "~Hauteur" ;
+ Text [ swedish ] = "Hö~jd" ;
+ Text [ dutch ] = "~Hoogte" ;
+ Text [ spanish ] = "A~ltura" ;
+ Text [ english_us ] = "~Height" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¸ß(~H)";
+ Text[ russian ] = "Âûñîòà";
+ Text[ polish ] = "Wys.";
+ Text[ japanese ] = "‚‚³(~H)";
+ Text[ chinese_traditional ] = "°ª(~H)";
+ Text[ arabic ] = "ÇáÇÑÊÝÇÚ";
+ Text[ dutch ] = "~Hoogte";
+ Text[ chinese_simplified ] = "¸ß(~H)";
+ Text[ greek ] = "¾øïò";
+ Text[ korean ] = "³ôÀÌ(~H)";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "~Yüks.";
+ };
+ MetricField ED_HEIGHT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 211 , 89 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 25 ;
+ Maximum = 100 ;
+ Value = 100 ;
+ Unit = FUNIT_CUSTOM ;
+ CustomUnitText = "%" ;
+ First = 25 ;
+ Last = 100 ;
+ };
+ FixedText FT_POSITION
+ {
+ Pos = MAP_APPFONT ( 180 , 110 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "~Position" ;
+ Text [ English ] = "~Position" ;
+ Left = TRUE ;
+ Text [ portuguese ] = "~Posição" ;
+ 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[ chinese_simplified ] = "λÖÃ(~P)";
+ Text[ russian ] = "Ïîçèöèÿ";
+ Text[ polish ] = "Pozycja";
+ Text[ japanese ] = "ˆÊ’u(~P)";
+ Text[ chinese_traditional ] = "¦ì¸m(~P)";
+ Text[ arabic ] = "ÇáãæÖÚ";
+ Text[ dutch ] = "~Positie";
+ Text[ chinese_simplified ] = "λÖÃ(~P)";
+ Text[ greek ] = "ÈÝóç";
+ Text[ korean ] = "À§Ä¡(~P)";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "~Konum";
+ };
+ ListBox LB_POSITION
+ {
+ Pos = MAP_APPFONT ( 211 , 109 ) ;
+ Size = MAP_APPFONT ( 40 , 40 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Oben" ; Default ; > ;
+ < "Zentriert" ; Default ; > ;
+ < "Unten" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Oben" ; Default ; > ;
+ < "Zentriert" ; Default ; > ;
+ < "Unten" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "Oben" ; Default ; > ;
+ < "Zentriert" ; Default ; > ;
+ < "Unten" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "In alto" ; Default ; > ;
+ < "Al centro" ; Default ; > ;
+ < "In basso" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Oben" ; Default ; > ;
+ < "Zentriert" ; Default ; > ;
+ < "Base" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Em cima" ; Default ; > ;
+ < "Centrado" ; Default ; > ;
+ < "Em baixo" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "Oben" ; Default ; > ;
+ < "Zentriert" ; Default ; > ;
+ < "Unten" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "Foroven" ; Default ; > ;
+ < "Centreret" ; Default ; > ;
+ < "Forneden" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "En haut" ; Default ; > ;
+ < "Centré" ; Default ; > ;
+ < "En bas" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Uppe" ; Default ; > ;
+ < "Centrerat" ; Default ; > ;
+ < "Nere" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Boven" ; Default ; > ;
+ < "Gecentreerd" ; Default ; > ;
+ < "Beneden" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Arriba" ; Default ; > ;
+ < "Centrado" ; Default ; > ;
+ < "Abajo" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Top" ; Default ; > ;
+ < "Centered" ; Default ; > ;
+ < "Bottom" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÉÏ" ; Default ; > ;
+ < "¾ÓÖÐ" ; Default ; > ;
+ < "ÏÂ" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Ââåðõó" ; Default ; > ;
+ < "Ïî öåíòðó" ; Default ; > ;
+ < "Âíèçó" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Na górze" ; Default ; > ;
+ < "Wyœrodkowany" ; Default ; > ;
+ < "Na dole" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "ã" ; Default ; > ;
+ < "’†‰›" ; Default ; > ;
+ < "‰º" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¤W" ; Default ; > ;
+ < "¸m¤¤" ; Default ; > ;
+ < "¤U" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÃÚáì" ; Default ; > ;
+ < "ãÊæÓØ" ; Default ; > ;
+ < "ÃÓÝá" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Boven" ; Default ; > ;
+ < "Gecentreerd" ; Default ; > ;
+ < "Beneden" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÉÏ" ; Default ; > ;
+ < "¾ÓÖÐ" ; Default ; > ;
+ < "ÏÂ" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÐÜíù" ; Default ; > ;
+ < "ÊåíôñáñéóìÝíá" ; Default ; > ;
+ < "ÊÜôù" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "ˤ" ; Default ; > ;
+ < "°¡¿îµ¥" ; Default ; > ;
+ < "¾Æ·¡" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Üst" ; Default ; > ;
+ < "Orta" ; Default ; > ;
+ < "Alt" ; Default ; > ;
+ };
+ };
+ GroupBox GB_LINETYPE
+ {
+ Pos = MAP_APPFONT ( 171 , 49 ) ;
+ Size = MAP_APPFONT ( 83 , 80 ) ;
+ Text = "Trennlinie" ;
+ Text [ ENGLISH ] = "Lines between" ;
+ Text [ norwegian ] = "Lines between" ;
+ Text [ italian ] = "Linea di separazione" ;
+ Text [ portuguese_brazilian ] = "Linhas entre" ;
+ Text [ portuguese ] = "Separador" ;
+ Text [ finnish ] = "Rivejä välissä" ;
+ Text [ danish ] = "Separator" ;
+ Text [ french ] = "Trait de séparation" ;
+ Text [ swedish ] = "Skiljelinje" ;
+ Text [ dutch ] = "Scheidingslijn" ;
+ Text [ spanish ] = "Línea de separación" ;
+ Text [ english_us ] = "Separator" ;
+ Text[ chinese_simplified ] = "·Ö¸ôÏß";
+ Text[ russian ] = "Ðàçäåëèòåëüíàÿ ëèíèÿ";
+ Text[ polish ] = "Separator";
+ Text[ japanese ] = "‹«ŠEü‚ðˆø‚­";
+ Text[ chinese_traditional ] = "¤À¹j½u";
+ Text[ arabic ] = "ÇáÎØ ÇáÝÇÕá";
+ Text[ dutch ] = "Scheidingslijn";
+ Text[ chinese_simplified ] = "·Ö¸ôÏß";
+ Text[ greek ] = "Äéá÷ùñéóôéêÞ ãñáììÞ";
+ Text[ korean ] = "±¸ºÐÀÚ";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Ayýrma çizgisi";
+ };
+ FixedText FT_WIDTH
+ {
+ Pos = MAP_APPFONT ( 12 , 86 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Text = "Breite" ;
+ Text [ English ] = "Width" ;
+ Left = TRUE ;
+ Text [ dutch ] = "Breedte" ;
+ Text [ english_us ] = "Width" ;
+ Text [ italian ] = "Larghezza" ;
+ Text [ spanish ] = "Ancho" ;
+ Text [ french ] = "Largeur" ;
+ Text [ swedish ] = "Bredd" ;
+ Text [ danish ] = "Bredde" ;
+ Text [ portuguese ] = "Largura" ;
+ Text [ portuguese_brazilian ] = "Breite" ;
+ Text[ chinese_simplified ] = "¿í";
+ Text[ russian ] = "Øèðèíà";
+ Text[ polish ] = "Szer.";
+ Text[ japanese ] = "’i‚Ì•";
+ Text[ chinese_traditional ] = "¼e";
+ Text[ arabic ] = "ÇáÚÑÖ";
+ Text[ dutch ] = "Breedte";
+ Text[ chinese_simplified ] = "¿í";
+ Text[ greek ] = "ÐëÜôïò";
+ Text[ korean ] = "³Êºñ";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Geniþlik";
+ };
+ FixedText FT_DIST
+ {
+ Pos = MAP_APPFONT ( 12 , 103 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ Text = "Abstand" ;
+ Text [ English ] = "Distance" ;
+ Left = TRUE ;
+ Text [ dutch ] = "Afstand" ;
+ Text [ english_us ] = "Spacing" ;
+ Text [ italian ] = "Distanza" ;
+ Text [ spanish ] = "Espacio" ;
+ Text [ french ] = "Écart" ;
+ Text [ swedish ] = "Avstånd" ;
+ Text [ danish ] = "Afstand" ;
+ Text [ portuguese ] = "Espaçamento" ;
+ Text [ portuguese_brazilian ] = "Abstand" ;
+ Text[ chinese_simplified ] = "¼ä¸ô";
+ Text[ russian ] = "Èíòåðâàë";
+ Text[ polish ] = "Odstêp";
+ Text[ japanese ] = "ŠÔŠu";
+ Text[ chinese_traditional ] = "¶¡¹j";
+ Text[ arabic ] = "ÇáÊÈÇÚÏ";
+ Text[ dutch ] = "Afstand";
+ Text[ chinese_simplified ] = "¼ä¸ô";
+ Text[ greek ] = "Áðüóôáóç";
+ Text[ korean ] = "°£°Ý";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Aralýk";
+ };
+ CheckBox CB_AUTO_WIDTH
+ {
+ Pos = MAP_APPFONT ( 12 , 117 ) ;
+ Size = MAP_APPFONT ( 75 , 10 ) ;
+ Text = "A~utomatische Breite" ;
+ Text [ ENGLISH ] = "Automatic ~width" ;
+ Text [ norwegian ] = "Automatic ~width" ;
+ Text [ italian ] = "~Larghezza autom." ;
+ Text [ portuguese_brazilian ] = "Autom tica ~largura" ;
+ Text [ portuguese ] = "~Largura automática" ;
+ Text [ finnish ] = "Automaattinen ~leveys" ;
+ Text [ danish ] = "Automatisk bredde" ;
+ Text [ french ] = "~Largeur automatique" ;
+ Text [ swedish ] = "A~utomatisk bredd" ;
+ Text [ dutch ] = "A~utomatische breedte" ;
+ Text [ spanish ] = "Ancho ~automático" ;
+ Text [ english_us ] = "Auto~Width" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "×Ô¶¯µ÷Õû¿í¶È(~W)";
+ Text[ russian ] = "Àâòîì. øèðèíà";
+ Text[ polish ] = "Automatyczna szerokoϾ";
+ Text[ japanese ] = "•Ž©“®’²®(~W)";
+ Text[ chinese_traditional ] = "¦Û°Ê½Õ¾ã¼e«×(~W)";
+ Text[ arabic ] = "ÚÑÖ ÊáÞÇÆí";
+ Text[ dutch ] = "A~utomatische breedte";
+ Text[ chinese_simplified ] = "×Ô¶¯µ÷Õû¿í¶È(~W)";
+ Text[ greek ] = "Áõôüìáôï ðëÜôïò";
+ Text[ korean ] = "ÀÚµ¿ ³Êºñ(~W)";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "O~tomatik geniþlik";
+ };
+ ImageButton BTN_UP
+ {
+ Disable = TRUE ;
+ Pos = MAP_APPFONT ( 145 , 69 ) ;
+ Size = MAP_APPFONT ( 10 , 10 ) ;
+ TabStop = TRUE ;
+ SYMBOL = IMAGEBUTTON_ARROW_RIGHT ;
+ };
+ ImageButton BTN_DOWN
+ {
+ Disable = TRUE ;
+ Pos = MAP_APPFONT ( 40 , 69 ) ;
+ Size = MAP_APPFONT ( 10 , 10 ) ;
+ TabStop = TRUE ;
+ SYMBOL = IMAGEBUTTON_ARROW_LEFT ;
+ };
+ FixedText FT_1
+ {
+ Pos = MAP_APPFONT ( 55 , 69 ) ;
+ Size = MAP_APPFONT ( 9 , 8 ) ;
+ Text = "~1" ;
+ Left = TRUE ;
+ Center = TRUE ;
+ Right = TRUE ;
+ };
+ FixedText FT_2
+ {
+ Pos = MAP_APPFONT ( 90 , 69 ) ;
+ Size = MAP_APPFONT ( 9 , 8 ) ;
+ Text = "~2" ;
+ Left = TRUE ;
+ Right = TRUE ;
+ };
+ FixedText FT_3
+ {
+ Pos = MAP_APPFONT ( 125 , 69 ) ;
+ Size = MAP_APPFONT ( 9 , 8 ) ;
+ Text = "~3" ;
+ Left = TRUE ;
+ Right = TRUE ;
+ };
+ MetricField ED_1
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 40 , 84 ) ;
+ Size = MAP_APPFONT ( 35 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 5600 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 10 ;
+ Last = 5600 ;
+ SpinSize = 10 ;
+ };
+ MetricField ED_2
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 80 , 84 ) ;
+ Size = MAP_APPFONT ( 35 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 5600 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 10 ;
+ Last = 5600 ;
+ SpinSize = 10 ;
+ };
+ MetricField ED_3
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 120 , 84 ) ;
+ Size = MAP_APPFONT ( 35 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 5600 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 10 ;
+ Last = 5600 ;
+ SpinSize = 10 ;
+ };
+ MetricField ED_DIST1
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 60 , 101 ) ;
+ Size = MAP_APPFONT ( 35 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 5600 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 10 ;
+ Last = 5600 ;
+ SpinSize = 10 ;
+ };
+ MetricField ED_DIST2
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 100 , 101 ) ;
+ Size = MAP_APPFONT ( 35 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 5600 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 10 ;
+ Last = 5600 ;
+ SpinSize = 10 ;
+ };
+ GroupBox GB_LAYOUT
+ {
+ Pos = MAP_APPFONT ( 6 , 59 ) ;
+ Size = MAP_APPFONT ( 157 , 70 ) ;
+ 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 des colonnes" ;
+ Text [ swedish ] = "Kolumnbredd" ;
+ Text [ dutch ] = "Kolombreedte" ;
+ Text [ spanish ] = "Ancho de columna" ;
+ Text [ english_us ] = "Column width" ;
+ Text[ chinese_simplified ] = "À¸¿í";
+ Text[ russian ] = "Øèðèíà êîëîíîê";
+ Text[ polish ] = "Szer. kolumny";
+ Text[ japanese ] = "’i‚Ì•";
+ Text[ chinese_traditional ] = "Äæ¼e";
+ Text[ arabic ] = "ÚÑÖ ÇáÃÚãÏÉ";
+ Text[ dutch ] = "Kolombreedte";
+ Text[ chinese_simplified ] = "À¸¿í";
+ Text[ greek ] = "ÐëÜôïò óôÞëçò";
+ Text[ korean ] = "¿­ ³Êºñ";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Sütun geniþliði";
+ };
+ GroupBox GB_BSP
+ {
+ Pos = MAP_APPFONT ( 171 , 3 ) ;
+ Size = MAP_APPFONT ( 83 , 46 ) ;
+ Text = "Vorschau" ;
+ Text [ ENGLISH ] = "Example" ;
+ Text [ norwegian ] = "Eksempel" ;
+ Text [ italian ] = "Anteprima" ;
+ Text [ portuguese_brazilian ] = "Exemplo" ;
+ Text [ portuguese ] = "Previsualizar" ;
+ Text [ finnish ] = "Malli" ;
+ 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[ dutch ] = "Voorbeeld";
+ Text[ chinese_simplified ] = "Ô¤ÊÓ";
+ Text[ greek ] = "Ðñïåðéóêüðçóç";
+ Text[ korean ] = "¹Ì¸®º¸±â";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Önizleme";
+ };
+ Window WN_BSP
+ {
+ Pos = MAP_APPFONT ( 176 , 12 ) ;
+ Size = MAP_APPFONT ( 72 , 31 ) ;
+ };
+ Text[ chinese_simplified ] = "À¸";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "’i‘g‚Ý";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÇáÃÚãÏÉ";
+ Text[ dutch ] = "Kolommen";
+ Text[ chinese_simplified ] = "À¸";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Sütun";
+};
+
+ModalDialog DLG_COLUMN
+{
+ HelpID = HID_FORMAT_COLUMN;
+ Hide = TRUE;
+ Moveable = TRUE;
+ Size = MAP_APPFONT ( 316 , 135 ) ;
+ Text = "Spalten" ;
+ Text [ ENGLISH ] = "Columns" ;
+ OKButton PB_OK
+ {
+ DefButton = TRUE ;
+ Pos = MAP_APPFONT ( 260 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 260 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 260 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_APPLY_TO
+ {
+ Pos = MAP_APPFONT ( 260 , 60 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Anwenden auf:" ;
+ Text [ English ] = "~Apply to:" ;
+ Left = TRUE ;
+ Text[ english_us ] = "~Apply to:";
+ Text[ portuguese ] = "~Aplicar a:";
+ Text[ greek ] = "Åö~áñìïãÞ óå:";
+ Text[ dutch ] = "~Toepassen op:";
+ Text[ french ] = "~Appliquer à :";
+ Text[ spanish ] = "~Aplicar a:";
+ Text[ swedish ] = "~Använd på:";
+ Text[ russian ] = "Ïðèìåíèòü ê:";
+ Text[ italian ] = "~Applica a:";
+ Text[ danish ] = "Anvend på:";
+ Text[ polish ] = "Zastosuj w";
+ Text[ portuguese_brazilian ] = "~Apply to:";
+ Text[ japanese ] = "Ý’è‘ÎÛ:(~A)";
+ Text[ korean ] = "Àû¿ë:(~A)";
+ Text[ chinese_simplified ] = "ÔËÓÃÔÚ£º(~A)";
+ Text[ chinese_traditional ] = "®M¥Î¨ì¡G(~A)";
+ Text[ arabic ] = "ÊØÈíÞ Úáì:";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "~Uygulanacaðý yer:";
+ };
+ ListBox LB_APPLY_TO
+ {
+ Pos = MAP_APPFONT ( 260 , 75 ) ;
+ Size = MAP_APPFONT ( 50 , 66 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Selektion" ; LISTBOX_SELECTION; > ;
+ < "Aktuellen Bereich" ; LISTBOX_SECTION ; > ;
+ < "Selektierte Bereiche" ; LISTBOX_SECTIONS ; > ;
+ < "Rahmen" ; LISTBOX_FRAME ; > ;
+ < "Seitenvorlage: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ENGLISH]=
+ {
+ < "Selection" ; LISTBOX_SELECTION; > ;
+ < "Current section" ; LISTBOX_SECTION ; > ;
+ < "Selected section" ; LISTBOX_SECTIONS ; > ;
+ < "Text Frame" ; LISTBOX_FRAME ; > ;
+ < "Page style: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < "Selektion" ; LISTBOX_SELECTION; > ;
+ < " " ; LISTBOX_SECTION ; > ;
+ < "Selektierte Bereiche" ; LISTBOX_SECTIONS ; > ;
+ < "Rahmen" ; LISTBOX_FRAME ; > ;
+ < "Seitenvorlage:" ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Selection" ; LISTBOX_SELECTION; > ;
+ < "Current Section" ; LISTBOX_SECTION ; > ;
+ < "Selected section" ; LISTBOX_SECTIONS ; > ;
+ < "Frame" ; LISTBOX_FRAME ; > ;
+ < "Page Style: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Selecção" ; LISTBOX_SELECTION; > ;
+ < "Secção activa" ; LISTBOX_SECTION ; > ;
+ < "Secções seleccionadas" ; LISTBOX_SECTIONS ; > ;
+ < "Moldura" ; LISTBOX_FRAME ; > ;
+ < "Estilo de página: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÅðéëïãÞ" ; LISTBOX_SELECTION; > ;
+ < "ÔñÝ÷ùí ðåñéï÷Þ" ; LISTBOX_SECTION ; > ;
+ < "ÅðéëåãìÝíåò ðåñéï÷Ýò" ; LISTBOX_SECTIONS ; > ;
+ < "Ðåñßãñáììá" ; LISTBOX_FRAME ; > ;
+ < "Ðñüôõðï óåëßäáò: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Selectie" ; LISTBOX_SELECTION; > ;
+ < "Actueel bereik" ; LISTBOX_SECTION ; > ;
+ < "Geselecteerd bereik" ; LISTBOX_SECTIONS ; > ;
+ < "Kader" ; LISTBOX_FRAME ; > ;
+ < "Pagina-opmaakprofiel: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "Sélection" ; LISTBOX_SELECTION; > ;
+ < "Section active" ; LISTBOX_SECTION ; > ;
+ < "Sections sélectionnées" ; LISTBOX_SECTIONS ; > ;
+ < "Cadre" ; LISTBOX_FRAME ; > ;
+ < "Style de page : " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Selección" ; LISTBOX_SELECTION; > ;
+ < "Área actual" ; LISTBOX_SECTION ; > ;
+ < "Áreas seleccionadas" ; LISTBOX_SECTIONS ; > ;
+ < "Marco" ; LISTBOX_FRAME ; > ;
+ < "Estilo de página: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Markering" ; LISTBOX_SELECTION; > ;
+ < "Aktuellt område" ; LISTBOX_SECTION ; > ;
+ < "Markerade områden" ; LISTBOX_SECTIONS ; > ;
+ < "Ram" ; LISTBOX_FRAME ; > ;
+ < "Sidformatmall: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Âûäåëåíèþ" ; LISTBOX_SELECTION; > ;
+ < "Òåêóùåé îáëàñòè" ; LISTBOX_SECTION ; > ;
+ < "Âûäåëåííîé îáëàñòè" ; LISTBOX_SECTIONS ; > ;
+ < "Ðàìêå" ; LISTBOX_FRAME ; > ;
+ < "Ñòèëþ ñòðàíèöû: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "Selezione" ; LISTBOX_SELECTION; > ;
+ < "Sezione corrente" ; LISTBOX_SECTION ; > ;
+ < "Aree contrassegnate" ; LISTBOX_SECTIONS ; > ;
+ < "Cornice" ; LISTBOX_FRAME ; > ;
+ < "Modello di pagina: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "Markering" ; LISTBOX_SELECTION; > ;
+ < "Aktuelt område" ; LISTBOX_SECTION ; > ;
+ < "Markeret område" ; LISTBOX_SECTIONS ; > ;
+ < "Ramme" ; LISTBOX_FRAME ; > ;
+ < "Sidetypografi: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Selekcja" ; LISTBOX_SELECTION; > ;
+ < "Aktualny obszar" ; LISTBOX_SECTION ; > ;
+ < "Zaznaczone obszary" ; LISTBOX_SECTIONS ; > ;
+ < "Ramka" ; LISTBOX_FRAME ; > ;
+ < "Styl strony: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Selektion" ; LISTBOX_SELECTION; > ;
+ < "Aktuellen Bereich" ; LISTBOX_SECTION ; > ;
+ < "Selektierte Bereiche" ; LISTBOX_SECTIONS ; > ;
+ < "Rahmen" ; LISTBOX_FRAME ; > ;
+ < "Seitenvorlage: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‘I‘ð”͈Í" ; LISTBOX_SELECTION; > ;
+ < "Œ»Ý‚͈̔Í" ; LISTBOX_SECTION ; > ;
+ < "‘I‘ð”͈Í" ; LISTBOX_SECTIONS ; > ;
+ < "ŠO˜g" ; LISTBOX_FRAME ; > ;
+ < "Íß°¼Þ½À²Ù: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¼±ÅÃ" ; LISTBOX_SELECTION; > ;
+ < "ÇöÀç ¼±ÅÃ" ; LISTBOX_SECTION ; > ;
+ < "¼±ÅÃµÈ ±¸¿ª" ; LISTBOX_SECTIONS ; > ;
+ < "ÇÁ·¹ÀÓ" ; LISTBOX_FRAME ; > ;
+ < "ÆäÀÌÁö ¼³Á¤: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "Ñ¡ÖÐ" ; LISTBOX_SELECTION; > ;
+ < "µ±Ç°µÄÇøÓò" ; LISTBOX_SECTION ; > ;
+ < "Ñ¡ÖеÄÇøÓò" ; LISTBOX_SECTIONS ; > ;
+ < "¿ò" ; LISTBOX_FRAME ; > ;
+ < "Ò³ÃæÑùʽ£º " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¿ï¾Ü" ; LISTBOX_SELECTION; > ;
+ < "·í«eªº°Ï°ì" ; LISTBOX_SECTION ; > ;
+ < "¿ï¾Üªº°Ï°ì" ; LISTBOX_SECTIONS ; > ;
+ < "®Ø" ; LISTBOX_FRAME ; > ;
+ < "­¶­±¼Ë¦¡¡G " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÇáÊÍÏíÏ" ; LISTBOX_SELECTION; > ;
+ < "ÇáäØÇÞ ÇáÍÇáí" ; LISTBOX_SECTION ; > ;
+ < "ÇáäØÇÞÇÊ ÇáãÍÏÏÉ" ; LISTBOX_SECTIONS ; > ;
+ < "ÇáÅØÇÑ" ; LISTBOX_FRAME ; > ;
+ < "ÞÇáÈ ÇáÕÝÍÉ: " ; LISTBOX_PAGE ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Seçim" ; LISTBOX_SELECTION; > ;
+ < "Yürürlükteki bölüm" ; LISTBOX_SECTION ; > ;
+ < "Seçilen bölüm" ; LISTBOX_SECTIONS ; > ;
+ < "Çerçeve" ; LISTBOX_FRAME ; > ;
+ < "Sayfa biçimi: " ; LISTBOX_PAGE ; > ;
+ };
+ };
+ Text[ english_us ] = "Columns";
+ Text[ portuguese ] = "Colunas";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ dutch ] = "Kolommen";
+ Text[ french ] = "Colonnes";
+ Text[ spanish ] = "Columnas";
+ Text[ swedish ] = "Kolumner";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ italian ] = "Colonne";
+ Text[ danish ] = "Kolonner";
+ Text[ polish ] = "Kolumny";
+ Text[ portuguese_brazilian ] = "Columns";
+ Text[ japanese ] = "’i‘g‚Ý";
+ Text[ korean ] = "¿­";
+ Text[ chinese_simplified ] = "À¸";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÃÚãÏÉ";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Sütun";
+};
diff --git a/sw/source/ui/frmdlg/cption.cxx b/sw/source/ui/frmdlg/cption.cxx
new file mode 100644
index 000000000000..fbfcc4af463c
--- /dev/null
+++ b/sw/source/ui/frmdlg/cption.cxx
@@ -0,0 +1,715 @@
+/*************************************************************************
+ *
+ * $RCSfile: cption.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _CPTION_HXX
+#include <cption.hxx>
+#endif
+#ifndef _CAPTION_HXX
+#include <caption.hxx>
+#endif
+#ifndef _FLDMGR_HXX
+#include <fldmgr.hxx>
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx>
+#endif
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _SWDOCSH_HXX //autogen
+#include <docsh.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_FRAME_XSTORABLE_HPP_
+#include <com/sun/star/frame/XStorable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_GRAPHICCROP_HPP_
+#include <com/sun/star/text/GraphicCrop.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTGRAPHICOBJECTSSUPPLIER_HPP_
+#include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTTABLECURSOR_HPP_
+#include <com/sun/star/text/XTextTableCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTTABLESSUPPLIER_HPP_
+#include <com/sun/star/text/XTextTablesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_TABLECOLUMNSEPARATOR_HPP_
+#include <com/sun/star/text/TableColumnSeparator.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTTABLE_HPP_
+#include <com/sun/star/text/XTextTable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTEMBEDDEDOBJECTSSUPPLIER_HPP_
+#include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTEMBEDDEDOBJECT_HPP_
+#include <com/sun/star/text/XTextEmbeddedObject.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTFRAMESSUPPLIER_HPP_
+#include <com/sun/star/text/XTextFramesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTFRAME_HPP_
+#include <com/sun/star/text/XTextFrame.hpp>
+#endif
+
+#ifndef _FRMUI_HRC
+#include <frmui.hrc>
+#endif
+#ifndef _CPTION_HRC
+#include <cption.hrc>
+#endif
+
+using namespace ::com::sun::star;
+
+extern String* pOldGrfCat;
+extern String* pOldTabCat;
+extern String* pOldFrmCat;
+extern String* pOldDrwCat;
+
+class SwSequenceOptionDialog : public SvxStandardDialog
+{
+ FixedText aFtLevel;
+ ListBox aLbLevel;
+ FixedText aFtDelim;
+ Edit aEdDelim;
+ OKButton aOKButton;
+ CancelButton aCancelButton;
+ HelpButton aHelpButton;
+ GroupBox aGbHeader;
+ SwView& rView;
+ String aFldTypeName;
+
+public:
+ SwSequenceOptionDialog( Window *pParent, SwView &rV,
+ const String& rSeqFldType );
+ virtual ~SwSequenceOptionDialog();
+ virtual void Apply();
+};
+
+
+SwCaptionDialog::SwCaptionDialog( Window *pParent, SwView &rV ) :
+
+ SvxStandardDialog( pParent, SW_RES(DLG_CAPTION) ),
+
+ aOKButton (this, SW_RES(BTN_OK )),
+ aCancelButton (this, SW_RES(BTN_CANCEL )),
+ aHelpButton (this, SW_RES(BTN_HELP )),
+ aOptionButton (this, SW_RES(BTN_OPTION )),
+ aSampleText (this, SW_RES(TXT_SAMPLE )),
+ aCategoryText (this, SW_RES(TXT_CATEGORY)),
+ aCategoryBox (this, SW_RES(BOX_CATEGORY)),
+ aFormatText (this, SW_RES(TXT_FORMAT )),
+ aFormatBox (this, SW_RES(BOX_FORMAT )),
+ aTextText (this, SW_RES(TXT_TEXT )),
+ aTextEdit (this, SW_RES(EDT_TEXT )),
+ aPosText (this, SW_RES(TXT_POS )),
+ aPosBox (this, SW_RES(BOX_POS )),
+ aCopyAttributesCB(this, SW_RES(CB_COPY_ATTR )),
+ aObjectNameFT(this, SW_RES(FT_OBJECT_NAME )),
+ aObjectNameED(this, SW_RES(ED_OBJECT_NAME )),
+ aSettingsGroup(this, SW_RES(GRP_SETTINGS)),
+ rView( rV ),
+ pMgr( new SwFldMgr() )
+
+{
+ SwWrtShell &rSh = rView.GetWrtShell();
+ uno::Reference< frame::XModel > xModel = rView.GetDocShell()->GetBaseModel();
+
+ eType = (SwWrtShell::SelectionType)rSh.GetSelectionType();
+ if ( eType & SwWrtShell::SEL_OLE )
+ {
+ eType = SwWrtShell::SEL_GRF;
+ uno::Reference< text::XTextEmbeddedObjectsSupplier > xObjs(xModel, uno::UNO_QUERY);
+ xNameAccess = xObjs->getEmbeddedObjects();
+ }
+
+ Link aLk = LINK( this, SwCaptionDialog, ModifyHdl );
+ aCategoryBox.SetModifyHdl( aLk );
+ aTextEdit .SetModifyHdl( aLk );
+
+ aLk = LINK(this, SwCaptionDialog, SelectHdl);
+ aCategoryBox.SetSelectHdl( aLk );
+ aFormatBox .SetSelectHdl( aLk );
+// aPosBox .SetSelectHdl( aLk );
+
+ aOptionButton.SetClickHdl( LINK( this, SwCaptionDialog, OptionHdl ) );
+
+ sal_uInt16 i, nCount = pMgr->GetFldTypeCount();
+ for (i = 0; i < nCount; i++)
+ {
+ SwFieldType *pType = pMgr->GetFldType( USHRT_MAX, i );
+ if( pType->Which() == RES_SETEXPFLD &&
+ ((SwSetExpFieldType *) pType)->GetType() & GSE_SEQ )
+ aCategoryBox.InsertEntry(SwBoxEntry(pType->GetName(), i));
+ }
+
+ String* pString;
+ sal_uInt16 nPoolId = 0;
+ if (eType & SwWrtShell::SEL_GRF)
+ {
+ nPoolId = RES_POOLCOLL_LABEL_ABB;
+ pString = pOldGrfCat;
+ aCopyAttributesCB.Show();
+ aCopyAttributesCB.Check(sal_True);
+ sObjectName = rSh.GetFlyName();
+ //if not OLE
+ if(!xNameAccess.is())
+ {
+ uno::Reference< text::XTextGraphicObjectsSupplier > xGraphics(xModel, uno::UNO_QUERY);
+ xNameAccess = xGraphics->getGraphicObjects();
+ }
+
+ }
+ else if( eType & SwWrtShell::SEL_TBL )
+ {
+ nPoolId = RES_POOLCOLL_LABEL_TABLE;
+ pString = pOldTabCat;
+ uno::Reference< text::XTextTablesSupplier > xTables(xModel, uno::UNO_QUERY);
+ xNameAccess = xTables->getTextTables();
+ sObjectName = rSh.GetTableFmt()->GetName();
+ }
+ else if( eType & SwWrtShell::SEL_FRM )
+ {
+ nPoolId = RES_POOLCOLL_LABEL_FRAME;
+ pString = pOldFrmCat;
+ uno::Reference< text::XTextFramesSupplier > xFrms(xModel, uno::UNO_QUERY);
+ xNameAccess = xFrms->getTextFrames();
+ sObjectName = rSh.GetFlyName();
+ }
+ else if( eType == SwWrtShell::SEL_TXT )
+ {
+ nPoolId = RES_POOLCOLL_LABEL_FRAME;
+ pString = pOldFrmCat;
+ aObjectNameED.Show(sal_False);
+ aObjectNameFT.Show(sal_False);
+ }
+ else if( eType & SwWrtShell::SEL_DRW )
+ {
+ nPoolId = RES_POOLCOLL_LABEL_DRAWING;
+ pString = pOldDrwCat;
+ aObjectNameED.Show(sal_False);
+ aObjectNameFT.Show(sal_False);
+ }
+ if( nPoolId )
+ {
+ if( pString && pString->Len())
+ aCategoryBox.SetText( *pString );
+ else
+ {
+ String sTmp;
+ aCategoryBox.SetText( GetDocPoolNm( nPoolId, sTmp ));
+ }
+ }
+
+ //
+ if(aObjectNameED.IsVisible())
+ {
+ if(!aCopyAttributesCB.IsVisible())
+ {
+ long nHeightDiff = aObjectNameFT.GetPosPixel().Y() - aObjectNameED.GetPosPixel().Y();
+ Point aPos(aCopyAttributesCB.GetPosPixel());
+ aObjectNameFT.SetPosPixel(aPos);
+ aPos.X() = aObjectNameED.GetPosPixel().X();
+ aPos.Y() -= nHeightDiff;
+ aObjectNameED.SetPosPixel(aPos);
+ }
+ if(xNameAccess.is())
+ {
+ uno::Any aObj = xNameAccess->getByName(sObjectName);
+ uno::Reference< uno::XInterface > xTmp = *(uno::Reference< uno::XInterface > *)aObj.getValue();
+ xNamed = uno::Reference< container::XNamed >(xTmp, uno::UNO_QUERY);
+ }
+ aObjectNameED.SetText(sObjectName);
+ aObjectNameED.SetForbiddenChars(' ');
+ aObjectNameED.SetModifyHdl(LINK(this, SwCaptionDialog, ModifyHdl));
+ }
+
+ // aFormatBox
+ sal_uInt16 nSelFmt = SVX_NUM_ARABIC;
+ nCount = pMgr->GetFldTypeCount();
+ SwFieldType* pFldType;
+ for ( i = nCount; i; )
+ if( ( pFldType = pMgr->GetFldType(USHRT_MAX, --i))->GetName() ==
+ aCategoryBox.GetText() )
+ {
+ nSelFmt = (sal_uInt16)((SwSetExpFieldType*)pFldType)->GetSeqFormat();
+ break;
+ }
+
+
+ nCount = pMgr->GetFormatCount(TYP_SEQFLD, sal_False);
+ for ( i = 0; i < nCount; ++i )
+ {
+ aFormatBox.InsertEntry( pMgr->GetFormatStr(TYP_SEQFLD, i) );
+ sal_uInt16 nFmtId = pMgr->GetFormatId(TYP_SEQFLD, i);
+ aFormatBox.SetEntryData( i, (void*)nFmtId );
+ if( nFmtId == nSelFmt )
+ aFormatBox.SelectEntryPos( i );
+ }
+
+ // aPosBox
+ switch (eType)
+ {
+ case SwWrtShell::SEL_GRF:
+ case SwWrtShell::SEL_TBL:
+ case SwWrtShell::SEL_TBL | SwWrtShell::SEL_NUM:
+ case SwWrtShell::SEL_TBL | SwWrtShell::SEL_TXT:
+ case SwWrtShell::SEL_TBL | SwWrtShell::SEL_NUM | SwWrtShell::SEL_TXT:
+ case SwWrtShell::SEL_DRW:
+ case SwWrtShell::SEL_DRW | SwWrtShell::SEL_BEZ:
+ aPosBox.InsertEntry(SW_RESSTR(STR_ABOVE));
+ aPosBox.InsertEntry(SW_RESSTR(STR_CP_BELOW));
+ break;
+ case SwWrtShell::SEL_FRM:
+ case SwWrtShell::SEL_TXT:
+ aPosBox.InsertEntry(SW_RESSTR(STR_BEGINNING));
+ aPosBox.InsertEntry(SW_RESSTR(STR_END ));
+ break;
+ }
+ aPosBox.SelectEntryPos(1);
+ if (eType & (SwWrtShell::SEL_GRF|SwWrtShell::SEL_DRW))
+ aPosBox.Enable( sal_False );
+
+ aCategoryBox.GetModifyHdl().Call(&aCategoryBox);
+
+ FreeResource();
+ aTextEdit.GrabFocus();
+}
+
+
+
+void SwCaptionDialog::Apply()
+{
+ String sNewName = aObjectNameED.GetText();
+ if(aObjectNameED.IsVisible() && sNewName != sObjectName)
+ {
+ xNamed->setName(sNewName);
+ }
+
+ InsCaptionOpt aOpt;
+
+ aOpt.UseCaption() = sal_True;
+ String aName( aCategoryBox.GetText() );
+ aName.EraseLeadingChars (' ');
+ aName.EraseTrailingChars(' ');
+ aOpt.SetCategory(aName);
+ aOpt.SetNumType((sal_uInt16)(sal_uInt32)aFormatBox.GetEntryData(aFormatBox.GetSelectEntryPos()));
+ aOpt.SetCaption(aTextEdit.GetText());
+ aOpt.SetPos(aPosBox.GetSelectEntryPos());
+ aOpt.IgnoreSeqOpts() = sal_True;
+ aOpt.CopyAttributes() = aCopyAttributesCB.IsVisible() && aCopyAttributesCB.IsChecked();
+ rView.InsertCaption(&aOpt);
+}
+
+
+
+IMPL_LINK_INLINE_START( SwCaptionDialog, OptionHdl, Button*, pButton )
+{
+ SwSequenceOptionDialog( pButton, rView, aCategoryBox.GetText() ).Execute();
+ DrawSample();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwCaptionDialog, OptionHdl, Button*, EMPTYARG )
+
+IMPL_LINK_INLINE_START( SwCaptionDialog, SelectHdl, ListBox *, pBox )
+{
+ DrawSample();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwCaptionDialog, SelectHdl, ListBox *, EMPTYARG )
+
+
+
+IMPL_LINK( SwCaptionDialog, ModifyHdl, Edit *, pEdit )
+{
+ String sNewName = aObjectNameED.GetText();
+ sal_Bool bCorrectName = !aObjectNameED.IsVisible() ||
+ (sNewName.Len() &&
+ (sNewName == sObjectName ||
+ !xNameAccess.is() || !xNameAccess->hasByName(sNewName)));
+ SwWrtShell &rSh = rView.GetWrtShell();
+ String sFldTypeName = aCategoryBox.GetText();
+ SwFieldType* pType = sFldTypeName.Len() ? rSh.GetFldType(RES_SETEXPFLD, sFldTypeName) : 0;
+
+ aOKButton.Enable( bCorrectName &&
+ (!pType || ((SwSetExpFieldType*)pType)->GetType() == GSE_SEQ)
+ && sFldTypeName.Len() != 0 );
+ aOptionButton.Enable( aOKButton.IsEnabled() );
+
+ if(pEdit != &aObjectNameED)
+ DrawSample();
+ return 0;
+}
+
+
+
+void SwCaptionDialog::DrawSample()
+{
+ String aStr;
+
+ // Nummer
+ sal_uInt16 nNumFmt = (sal_uInt16)(sal_uInt32)aFormatBox.GetEntryData(
+ aFormatBox.GetSelectEntryPos() );
+ if( SVX_NUM_NUMBER_NONE != nNumFmt )
+ {
+ // Kategorie
+ aStr += aCategoryBox.GetText();
+ aStr += ' ';
+
+ SwWrtShell &rSh = rView.GetWrtShell();
+ String sFldTypeName( aCategoryBox.GetText() );
+ SwSetExpFieldType* pFldType = (SwSetExpFieldType*)rSh.GetFldType(
+ RES_SETEXPFLD, sFldTypeName );
+ if( pFldType && pFldType->GetOutlineLvl() < MAXLEVEL )
+ {
+ sal_Int8 nLvl = pFldType->GetOutlineLvl();
+ SwNodeNum aNum( nLvl );
+ for( sal_Int8 i = 0; i <= nLvl; ++i )
+ *(aNum.GetLevelVal() + i) = 1;
+
+ String sNumber( rSh.GetOutlineNumRule()->MakeNumString(
+ aNum, sal_False ));
+ if( sNumber.Len() )
+ (aStr += sNumber) += pFldType->GetDelimiter();
+ }
+
+ switch( nNumFmt )
+ {
+ case SVX_NUM_CHARS_UPPER_LETTER: aStr += 'A'; break;
+ case SVX_NUM_CHARS_UPPER_LETTER_N: aStr += 'A'; break;
+ case SVX_NUM_CHARS_LOWER_LETTER: aStr += 'a'; break;
+ case SVX_NUM_CHARS_LOWER_LETTER_N: aStr += 'a'; break;
+ case SVX_NUM_ROMAN_UPPER: aStr += 'I'; break;
+ case SVX_NUM_ROMAN_LOWER: aStr += 'i'; break;
+ //case ARABIC:
+ default: aStr += '1'; break;
+ }
+ }
+
+ aStr += aTextEdit.GetText();
+ aSampleText.SetText(aStr);
+}
+
+
+
+SwCaptionDialog::~SwCaptionDialog()
+{
+ delete pMgr;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: form ohne Spaces
+------------------------------------------------------------------------*/
+
+
+
+void NoSpaceCombo::KeyInput(const KeyEvent& rEvt)
+{
+ if( rEvt.GetKeyCode().GetCode() != KEY_SPACE )
+ SwComboBox::KeyInput(rEvt);
+}
+
+
+
+/* */
+
+SwSequenceOptionDialog::SwSequenceOptionDialog( Window *pParent, SwView &rV,
+ const String& rSeqFldType )
+ : SvxStandardDialog( pParent, SW_RES(DLG_SEQUENCE_OPTION) ),
+ aOKButton (this, SW_RES(BTN_OK )),
+ aCancelButton (this, SW_RES(BTN_CANCEL )),
+ aHelpButton (this, SW_RES(BTN_HELP )),
+ aFtLevel (this, SW_RES(FT_LEVEL )),
+ aLbLevel (this, SW_RES(LB_LEVEL )),
+ aFtDelim (this, SW_RES(FT_SEPARATOR )),
+ aEdDelim (this, SW_RES(ED_SEPARATOR )),
+ aGbHeader (this, SW_RES(GB_HEADER )),
+ aFldTypeName( rSeqFldType ),
+ rView( rV )
+{
+ FreeResource();
+ SwWrtShell &rSh = rView.GetWrtShell();
+
+ for( sal_uInt16 n = 0; n < MAXLEVEL; ++n )
+ aLbLevel.InsertEntry( String::CreateFromInt32(n+1) );
+
+ SwSetExpFieldType* pFldType = (SwSetExpFieldType*)rSh.GetFldType(
+ RES_SETEXPFLD, aFldTypeName );
+
+ sal_Unicode cDelim = '.', nLvl = MAXLEVEL;
+ if( pFldType )
+ {
+ cDelim = pFldType->GetDelimiter();
+ nLvl = pFldType->GetOutlineLvl();
+ }
+
+ aLbLevel.SelectEntryPos( nLvl < MAXLEVEL ? nLvl + 1 : 0 );
+ aEdDelim.SetText( cDelim );
+}
+
+SwSequenceOptionDialog::~SwSequenceOptionDialog()
+{
+}
+
+void SwSequenceOptionDialog::Apply()
+{
+ SwWrtShell &rSh = rView.GetWrtShell();
+ SwSetExpFieldType* pFldType = (SwSetExpFieldType*)rSh.GetFldType(
+ RES_SETEXPFLD, aFldTypeName );
+
+ sal_Int8 nLvl = (sal_Int8)( aLbLevel.GetSelectEntryPos() - 1);
+ sal_Unicode cDelim = aEdDelim.GetText().GetChar(0);
+
+ sal_Bool bUpdate = sal_True;
+ if( pFldType )
+ {
+ pFldType->SetDelimiter( cDelim );
+ pFldType->SetOutlineLvl( nLvl );
+ }
+ else if( nLvl < MAXLEVEL )
+ {
+ // dann muessen wir das mal einfuegen
+ SwSetExpFieldType aFldType( rSh.GetDoc(), aFldTypeName, GSE_SEQ );
+ aFldType.SetDelimiter( cDelim );
+ aFldType.SetOutlineLvl( nLvl );
+ rSh.InsertFldType( aFldType );
+ }
+ else
+ bUpdate = sal_False;
+
+ if( bUpdate )
+ rSh.UpdateExpFlds();
+}
+
+
+
+/*-----------------25.02.94 21:56-------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.74 2000/09/18 16:05:32 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.73 2000/09/12 08:39:37 os
+ #78678# CreateFromInt32
+
+ Revision 1.72 2000/07/27 21:16:09 jp
+ opt: get template names direct from the doc and don't load it from the resource
+
+ Revision 1.71 2000/04/26 14:49:17 os
+ GetName() returns const String&
+
+ Revision 1.70 2000/04/18 15:14:56 os
+ UNICODE
+
+ Revision 1.69 2000/03/23 06:49:59 os
+ UNOIII
+
+ Revision 1.68 2000/02/15 14:18:19 os
+ #72904# check container::XNameAccess
+
+ Revision 1.67 2000/02/11 14:47:24 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.66 1999/11/19 16:40:22 os
+ modules renamed
+
+ Revision 1.65 1999/08/19 11:52:22 OS
+ OLE objects: no GPF
+
+
+ Rev 1.64 19 Aug 1999 13:52:22 OS
+ OLE objects: no GPF
+
+ Rev 1.63 21 Jul 1999 14:15:14 OS
+ #67425# Appearance improved
+
+ Rev 1.62 10 Jun 1999 13:02:36 OS
+ rename objects
+
+ Rev 1.61 09 Jun 1999 10:43:04 OS
+ #66732# Insert caption: copy border and shadow optionally
+
+ Rev 1.60 10 Dec 1998 09:45:52 MIB
+ #60060#: Beschriftungen fuer Zeichen-Objekte
+
+ Rev 1.59 17 Nov 1998 10:52:52 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.58 06 Nov 1998 17:04:06 OM
+ #58158# Automatische Beschriftung
+
+ Rev 1.57 11 Aug 1998 14:22:08 HR
+ void* kann nicht direkt nach sal_uInt16 gecastet werden
+
+ Rev 1.56 10 Aug 1998 16:42:42 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.55 19 Jun 1998 11:44:04 JP
+ neu: Nummernkreis Optionen - fuer die Kapitelweisenummerierung
+
+ Rev 1.54 20 Apr 1998 13:45:00 OS
+ Variablen duerfen nicht ueber Nummernkreise eingefuegt werden
+
+ Rev 1.53 27 Feb 1998 16:41:44 OM
+ Unterhalb
+
+ Rev 1.52 02 Feb 1998 10:59:28 OM
+ #46835# Auch bei Cursor im Rahmen (SEL_TXT) richtigen Selektionsmodus (SEL_FRM) auswerten
+
+ Rev 1.51 08 Jan 1998 09:16:12 OS
+ initialen Focus umgesetzt #45673#
+
+ Rev 1.50 24 Nov 1997 17:40:10 MA
+ include
+
+ Rev 1.49 03 Nov 1997 13:19:46 MA
+ precomp entfernt
+
+ Rev 1.48 02 Oct 1997 15:22:10 OM
+ Feldumstellung
+
+ Rev 1.47 05 May 1997 17:09:08 TRI
+ ICC brauchte Instanz
+
+ Rev 1.46 29 Apr 1997 16:17:56 OM
+ Unsichtbare Benutzerfelder
+
+ Rev 1.45 04 Apr 1997 10:32:48 OM
+ Datenbanken nach Gebrauch wieder schliessen
+
+ Rev 1.44 18 Mar 1997 17:38:42 OM
+ Segmentiert
+
+ Rev 1.43 18 Mar 1997 17:35:54 OM
+ keine Spaces in Kategorie
+
+ Rev 1.42 14 Mar 1997 15:58:14 OS
+ neue Beschriftungsvorlage von Beschriftung abgeleitet
+
+ Rev 1.41 09 Jan 1997 08:41:24 OS
+ Beschriftungsdialog mit HelpID und HelpButton
+
+ Rev 1.40 11 Nov 1996 10:44:14 MA
+ ResMgr
+
+ Rev 1.39 02 Oct 1996 17:36:14 MA
+ Umstellung Enable/Disable
+
+ Rev 1.38 28 Aug 1996 11:52:50 OS
+ includes
+
+ Rev 1.37 09 Jul 1996 17:52:20 OM
+ Alternatives Formatmenue fuer Expressionfields
+
+ Rev 1.36 06 Feb 1996 15:19:22 JP
+ Link Umstellung 305
+
+ Rev 1.35 28 Nov 1995 11:20:24 JP
+ Umstellungsbugs entfernt, optimiert
+
+ Rev 1.34 27 Nov 1995 21:16:00 JP
+ static Strings gegen Pointer ausgetauscht, werden im InitUi angelegt/zerstoert
+
+ Rev 1.33 24 Nov 1995 16:58:08 OM
+ PCH->PRECOMPILED
+
+ Rev 1.32 13 Nov 1995 13:40:26 MA
+ chg: Link-Cast entfernt
+
+ Rev 1.31 08 Nov 1995 13:46:22 OM
+ Change->Set
+
+ Rev 1.30 06 Oct 1995 15:34:52 MA
+ fix: Selectiontype ist verodert
+
+ Rev 1.29 30 Aug 1995 14:13:50 MA
+ fix: sexport'iert
+
+ Rev 1.28 21 Aug 1995 09:27:08 MA
+ chg: swstddlg -> svxstandarddialog, Optimierungen
+
+--------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/frmdlg/cption.hrc b/sw/source/ui/frmdlg/cption.hrc
new file mode 100644
index 000000000000..eb4b272dcfb1
--- /dev/null
+++ b/sw/source/ui/frmdlg/cption.hrc
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * $RCSfile: cption.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _CPTION_HRC
+#define _CPTION_HRC
+
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define TXT_SAMPLE 3
+#define TXT_CATEGORY 4
+#define BOX_CATEGORY 5
+#define TXT_FORMAT 6
+#define BOX_FORMAT 7
+#define TXT_TEXT 8
+#define EDT_TEXT 9
+#define TXT_POS 10
+#define BOX_POS 11
+#define GRP_SETTINGS 12
+#define BTN_HELP 13
+#define BTN_OPTION 14
+#define GB_HEADER 15
+#define FT_LEVEL 16
+#define LB_LEVEL 17
+#define FT_SEPARATOR 18
+#define ED_SEPARATOR 19
+#define CB_COPY_ATTR 20
+#define FT_OBJECT_NAME 21
+#define ED_OBJECT_NAME 22
+
+#define STR_BEGINNING 1
+#define STR_END 2
+#define STR_ABOVE 3
+#define STR_CP_BELOW 4
+
+#endif
+
+// ********************************************************************** EOF
diff --git a/sw/source/ui/frmdlg/cption.src b/sw/source/ui/frmdlg/cption.src
new file mode 100644
index 000000000000..1ca23375af5b
--- /dev/null
+++ b/sw/source/ui/frmdlg/cption.src
@@ -0,0 +1,722 @@
+/*************************************************************************
+ *
+ * $RCSfile: cption.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "helpid.h"
+#include "frmui.hrc"
+#include "cption.hrc"
+#include "cmdid.h"
+ // #pragma ******************************************************************
+
+ // ModalDialog **************************************************************
+ModalDialog DLG_CAPTION
+{
+ HelpID = HID_DLG_CAPTION ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 250 , 127 ) ;
+ Text = "Beschriftung" ;
+ Text [ English ] = "Caption" ;
+ Text [ norwegian ] = "Bildetekst" ;
+ Text [ italian ] = "Dicitura" ;
+ Text [ portuguese_brazilian ] = "Captura" ;
+ Text [ portuguese ] = "Legenda" ;
+ Text [ finnish ] = "Selite" ;
+ Text [ danish ] = "Billedtekst" ;
+ Text [ french ] = "Légende" ;
+ Text [ swedish ] = "Bildtext" ;
+ Text [ dutch ] = "Bijschrift" ;
+ Text [ spanish ] = "Etiqueta" ;
+ Text [ english_us ] = "Caption" ;
+ Moveable = TRUE ;
+ OKButton BTN_OK
+ {
+ DefButton = TRUE ;
+ Pos = MAP_APPFONT ( 194 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 194 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 194 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton BTN_OPTION
+ {
+ Pos = MAP_APPFONT ( 194 , 63 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ 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 ] = "Ñ¡Ïî(~O)";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Opcje";
+ Text[ japanese ] = "µÌß¼®Ý(~O)";
+ Text[ chinese_traditional ] = "¿ï¶µ(~O)";
+ Text[ arabic ] = "ÎíÇÑÇÊ";
+ Text[ greek ] = "ÅðéëïãÝò";
+ Text[ korean ] = "¿É¼Ç(~O)";
+ Text[ turkish ] = "~Seçenekler";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText TXT_SAMPLE
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 170 , 8 ) ;
+ Center = TRUE ;
+ };
+ FixedText TXT_CATEGORY
+ {
+ Pos = MAP_APPFONT ( 12 , 30 ) ;
+ Size = MAP_APPFONT ( 64 , 8 ) ;
+ 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 ] = "~Categoría" ;
+ Text [ english_us ] = "C~ategory" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "·ÖÀà(~A)";
+ Text[ russian ] = "Êàòåãîðèÿ";
+ Text[ polish ] = "Kategoria";
+ Text[ japanese ] = "¶ÃºÞØ°(~A)";
+ Text[ chinese_traditional ] = "¤ÀÃþ(~A)";
+ Text[ arabic ] = "ÇáÝÆÉ";
+ Text[ greek ] = "Êáôçãïñßá";
+ Text[ korean ] = "ºÐ·ù Ç׸ñ(~A)";
+ Text[ turkish ] = "~Kategori";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox BOX_CATEGORY
+ {
+ Pos = MAP_APPFONT ( 82 , 28 ) ;
+ Size = MAP_APPFONT ( 100 , 61 ) ;
+ DropDown = TRUE ;
+ TabStop = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText TXT_FORMAT
+ {
+ Pos = MAP_APPFONT ( 12 , 45 ) ;
+ Size = MAP_APPFONT ( 64 , 8 ) ;
+ Text = "~Nummerierung" ;
+ Text [ English ] = "~Numbering" ;
+ Text [ norwegian ] = "~Numbering" ;
+ Text [ italian ] = "~Numerazione" ;
+ Text [ portuguese_brazilian ] = "~Numeração" ;
+ Text [ portuguese ] = "~Numeração" ;
+ Text [ finnish ] = "~Numerointi" ;
+ Text [ danish ] = "Nummerering" ;
+ Text [ french ] = "~Numérotation" ;
+ Text [ swedish ] = "~Numrering" ;
+ Text [ dutch ] = "~Nummering" ;
+ Text [ spanish ] = "Nu~meración" ;
+ Text [ english_us ] = "~Numbering" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "񅧏(~N)";
+ Text[ russian ] = "Íóìåðàöèÿ";
+ Text[ polish ] = "Numeracja";
+ Text[ japanese ] = "”Ô†•t‚¯(~N)";
+ Text[ chinese_traditional ] = "½s¸¹(~N)";
+ Text[ arabic ] = "ÇáÊÑÞíã";
+ Text[ greek ] = "Áñßèìçóç";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â(~N)";
+ Text[ turkish ] = "~Numaralama";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox BOX_FORMAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 82 , 43 ) ;
+ Size = MAP_APPFONT ( 100 , 61 ) ;
+ DropDown = TRUE ;
+ TabStop = TRUE ;
+ };
+ FixedText TXT_TEXT
+ {
+ Pos = MAP_APPFONT ( 12 , 60 ) ;
+ Size = MAP_APPFONT ( 64 , 8 ) ;
+ Text = "~Beschriftungstext" ;
+ Text [ English ] = "~Caption text" ;
+ Text [ norwegian ] = "~Caption" ;
+ Text [ italian ] = "~Dicitura" ;
+ Text [ portuguese_brazilian ] = "~Legenda" ;
+ Text [ portuguese ] = "~Legenda" ;
+ Text [ finnish ] = "~Otsikko" ;
+ Text [ danish ] = "Billedtekst" ;
+ Text [ french ] = "~Texte de légende" ;
+ Text [ swedish ] = "~Bildtext" ;
+ Text [ dutch ] = "~Opschrift" ;
+ Text [ spanish ] = "~Texto de etiqueta" ;
+ Text [ english_us ] = "~Caption" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "±êÇ©ÎÄ(~C)";
+ Text[ russian ] = "Òåêñò íàçâàíèÿ";
+ Text[ polish ] = "Tekst etykiety";
+ Text[ japanese ] = "×ÍÞÙ(~C)";
+ Text[ chinese_traditional ] = "¼ÐÅÒ¤å(~C)";
+ Text[ arabic ] = "äÕ ÇáÊÓãíÉ ÇáÊæÖíÍíÉ";
+ Text[ greek ] = "Êåßìåíï åðéãñáöÞò";
+ Text[ korean ] = "ĸ¼Ç(~C)";
+ Text[ turkish ] = "R~esim yazýsý metni";
+ Text[ language_user1 ] = " ";
+ };
+ Edit EDT_TEXT
+ {
+ Pos = MAP_APPFONT ( 82 , 58 ) ;
+ Size = MAP_APPFONT ( 100 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ FixedText TXT_POS
+ {
+ Pos = MAP_APPFONT ( 12 , 75 ) ;
+ Size = MAP_APPFONT ( 64 , 8 ) ;
+ Left = TRUE ;
+ Text = "~Position" ;
+ Text [ English ] = "~Position" ;
+ Text [ norwegian ] = "~Posisjon" ;
+ Text [ italian ] = "~Posizione" ;
+ Text [ portuguese_brazilian ] = "~Posição" ;
+ Text [ portuguese ] = "~Posição" ;
+ Text [ finnish ] = "A~sema" ;
+ Text [ danish ] = "Placering" ;
+ Text [ french ] = "~Position" ;
+ Text [ swedish ] = "~Position" ;
+ Text [ dutch ] = "~Positie" ;
+ Text [ spanish ] = "~Posición" ;
+ Text [ english_us ] = "~Position" ;
+ Text[ chinese_simplified ] = "λÖÃ(~P)";
+ Text[ russian ] = "Ïîçèöèÿ";
+ Text[ polish ] = "Pozycja";
+ Text[ japanese ] = "ˆÊ’u(~P)";
+ Text[ chinese_traditional ] = "¦ì¸m(~P)";
+ Text[ arabic ] = "ÇáãæÖÚ";
+ Text[ greek ] = "ÈÝóç";
+ Text[ korean ] = "À§Ä¡(~P)";
+ Text[ turkish ] = "K~onum";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox BOX_POS
+ {
+ Pos = MAP_APPFONT ( 82 , 73 ) ;
+ Size = MAP_APPFONT ( 100 , 61 ) ;
+ DropDown = TRUE ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ };
+ CheckBox CB_COPY_ATTR
+ {
+ Pos = MAP_APPFONT ( 12 , 90) ;
+ Size = MAP_APPFONT ( 145 , 12 ) ;
+ TabStop = TRUE ;
+ Hide = TRUE;
+ Text = "~Umrandung und Schatten übernehmen" ;
+ Text [ English ] = "~Copy border and shadow" ;
+ Text[ english_us ] = "~Apply border and shadow";
+ Text[ portuguese ] = "~Aplicar contornos e sombreado";
+ Text[ russian ] = "Ïðèìåíèòü îáðàìëåíèå è òåíü";
+ Text[ greek ] = "ÅöáñìïãÞ ðåñéãñÜììáôïò êáé óêéÜò";
+ Text[ dutch ] = "~Omranding en schadow overnemen";
+ Text[ french ] = "~Appliquer bordure et ombre";
+ Text[ spanish ] = "Aceptar ~borde y sombra";
+ Text[ italian ] = "~Applica bordo e ombra";
+ Text[ danish ] = "Overtag ramme og skygge";
+ Text[ swedish ] = "Ö~verta inramning och skugga";
+ Text[ polish ] = "Przejmij obramowanie i cieñ";
+ Text[ portuguese_brazilian ] = "~Copy border and shadow";
+ Text[ japanese ] = "ŠO˜g‚Ɖe‚ðˆø—p(~A)";
+ Text[ korean ] = "¿Ü°û¼±°ú ±×¸²ÀÚ Àû¿ë(~A)";
+ Text[ chinese_simplified ] = "Ì×Óñ߿òºÍÒõÓ°(~A)";
+ Text[ chinese_traditional ] = "±Ä¥ÎÃä®Ø©M³±¼v(~A)";
+ Text[ arabic ] = "ÊØÈíÞ ÇáÍÏæÏ æÇáÙá";
+ Text[ turkish ] = "~Kenarlýk ve gölgeyi kullan";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_OBJECT_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 105 ) ;
+ Size = MAP_APPFONT ( 64 , 8 ) ;
+ Text = "~Objektname" ;
+ Text [ English ] = "~Object name" ;
+ Text[ english_us ] = "~Object name";
+ Text[ portuguese ] = "~Nome do objecto";
+ Text[ russian ] = "~Èìÿ îáúåêòà";
+ Text[ greek ] = "¼íïìá áíôéêåéìÝíïõ";
+ Text[ dutch ] = "~Objectnaam";
+ Text[ french ] = "~Nom de l'objet";
+ Text[ spanish ] = "~Nombre del objeto";
+ Text[ italian ] = "~Nome oggetto";
+ Text[ danish ] = "Objektnavn";
+ Text[ swedish ] = "~Objektnamn";
+ Text[ polish ] = "Nazwa obiektu";
+ Text[ portuguese_brazilian ] = "~Object name";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä–¼(~O)";
+ Text[ korean ] = "°³Ã¼À̸§(~O)";
+ Text[ chinese_simplified ] = "¶ÔÏóÃû³Æ(~O)";
+ Text[ chinese_traditional ] = "ª«¥ó¦WºÙ(~O)";
+ Text[ arabic ] = "ÇÓã ÇáßÇÆä";
+ Text[ turkish ] = "N~esne adý";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_OBJECT_NAME
+ {
+ Pos = MAP_APPFONT ( 82 , 103 ) ;
+ Size = MAP_APPFONT ( 100 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ GroupBox GRP_SETTINGS
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 182 , 118 ) ;
+ Text = "Einstellungen" ;
+ Text [ English ] = "Settings" ;
+ Text [ norwegian ] = "Settings" ;
+ Text [ italian ] = "Impostazioni" ;
+ Text [ portuguese_brazilian ] = "Parâmetros" ;
+ Text [ portuguese ] = "Predefinições" ;
+ Text [ finnish ] = "Asetukset" ;
+ Text [ danish ] = "Indstillinger" ;
+ Text [ french ] = "Paramètres" ;
+ Text [ swedish ] = "Inställningar" ;
+ Text [ dutch ] = "Instellingen" ;
+ Text [ spanish ] = "Configuración" ;
+ Text [ english_us ] = "Settings" ;
+ 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 ] = " ";
+ };
+ String STR_BEGINNING
+ {
+ Text = "Am Anfang" ;
+ Text [ English ] = "At the beginning" ;
+ Text [ norwegian ] = "At the beginning" ;
+ Text [ italian ] = "All'inizio" ;
+ Text [ portuguese_brazilian ] = "No início" ;
+ Text [ portuguese ] = "No início" ;
+ Text [ finnish ] = "Alussa" ;
+ Text [ danish ] = "Ved begyndelsen" ;
+ Text [ french ] = "Au début" ;
+ Text [ swedish ] = "I början" ;
+ Text [ dutch ] = "Aan het begin" ;
+ Text [ spanish ] = "Al principio" ;
+ Text [ english_us ] = "Above" ;
+ Text[ chinese_simplified ] = "ÔÚÊ׶Ë";
+ Text[ russian ] = " íà÷àëå";
+ Text[ polish ] = "Na pocz¹tku";
+ Text[ japanese ] = "ʼn‚É";
+ Text[ chinese_traditional ] = "¦b­ººÝ";
+ Text[ arabic ] = "Ýí ÇáÈÏÇíÉ";
+ Text[ greek ] = "Óôçí áñ÷Þ";
+ Text[ korean ] = "ˤ";
+ Text[ turkish ] = "Baþta";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_END
+ {
+ Text = "Am Ende" ;
+ Text [ English ] = "At the end" ;
+ Text [ norwegian ] = "At the end" ;
+ Text [ italian ] = "Alla fine" ;
+ Text [ portuguese_brazilian ] = "Ao final" ;
+ Text [ portuguese ] = "No fim" ;
+ Text [ finnish ] = "Lopussa" ;
+ Text [ danish ] = "Ved slutningen" ;
+ Text [ french ] = "À la fin" ;
+ Text [ swedish ] = "I slutet" ;
+ Text [ dutch ] = "Aan het einde" ;
+ Text [ spanish ] = "Al final" ;
+ Text [ english_us ] = "Below" ;
+ Text[ chinese_simplified ] = "ÔÚβ¶Ë";
+ Text[ russian ] = "Â êîíöå";
+ Text[ polish ] = "Na koñcu";
+ Text[ japanese ] = "ÅŒã‚É";
+ Text[ chinese_traditional ] = "¦b§ÀºÝ";
+ Text[ arabic ] = "Ýí ÇáäåÇíÉ";
+ Text[ greek ] = "Óôï ôÝëïò";
+ Text[ korean ] = "¾Æ·¡";
+ Text[ turkish ] = "Sonda";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ABOVE
+ {
+ Text = "Oberhalb" ;
+ Text [ English ] = "Above" ;
+ Text [ norwegian ] = "Above" ;
+ Text [ italian ] = "Al di sopra" ;
+ Text [ portuguese_brazilian ] = "Acima" ;
+ Text [ portuguese ] = "Acima" ;
+ Text [ finnish ] = "Yläpuolella" ;
+ Text [ danish ] = "Over" ;
+ Text [ french ] = "Supra" ;
+ Text [ swedish ] = "Över" ;
+ Text [ dutch ] = "Boven" ;
+ Text [ spanish ] = "Encima" ;
+ Text [ english_us ] = "Above" ;
+ Text[ chinese_simplified ] = "Ö®ÉÏ";
+ Text[ russian ] = "Ñâåðõó";
+ Text[ polish ] = "Powy¿ej";
+ Text[ japanese ] = "ã‚É";
+ Text[ chinese_traditional ] = "¤§¤W";
+ Text[ arabic ] = "ÃÚáì";
+ Text[ greek ] = "ÐÜíù áðü";
+ Text[ korean ] = "ˤ";
+ Text[ turkish ] = "Üstte";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CP_BELOW
+ {
+ Text = "Unterhalb" ;
+ Text [ English ] = "Below" ;
+ Text [ norwegian ] = "Below" ;
+ Text [ italian ] = "Al di sotto" ;
+ Text [ portuguese_brazilian ] = "Abaixo" ;
+ Text [ portuguese ] = "Abaixo" ;
+ Text [ finnish ] = "Alapuolella" ;
+ Text [ danish ] = "Under" ;
+ Text [ french ] = "Infra" ;
+ Text [ swedish ] = "Nedanför" ;
+ Text [ dutch ] = "Beneden" ;
+ Text [ spanish ] = "Debajo" ;
+ Text [ english_us ] = "Below" ;
+ Text[ chinese_simplified ] = "Ö®ÏÂ";
+ Text[ russian ] = "Ñíèçó";
+ Text[ polish ] = "Poni¿ej";
+ Text[ japanese ] = "‰º‚É";
+ Text[ chinese_traditional ] = "¤§¤U";
+ Text[ arabic ] = "ÃÓÝá";
+ Text[ greek ] = "ÊÜôù áðü";
+ Text[ korean ] = "¾Æ·¡";
+ Text[ turkish ] = "Altta";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "±êÇ©";
+ Text[ russian ] = "Íàçâàíèå";
+ Text[ polish ] = "Opis";
+ Text[ japanese ] = "×ÍÞÙ";
+ Text[ chinese_traditional ] = "¼ÐÅÒ";
+ Text[ arabic ] = "ÊÓãíÉ ÊæÖíÍíÉ";
+ Text[ greek ] = "ÅðéãñáöÞ";
+ Text[ korean ] = "ĸ¼Ç";
+ Text[ turkish ] = "Resim yazýsý";
+ Text[ language_user1 ] = " ";
+};
+ModalDialog DLG_SEQUENCE_OPTION
+{
+ HelpID = HID_DLG_SEQUENCE_OPTION ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 165 , 64 ) ;
+ Text = "Nummernkreis Optionen" ;
+ TEXT [ English ] = "Sequence options" ;
+ Moveable = TRUE ;
+ OKButton BTN_OK
+ {
+ DefButton = TRUE ;
+ Pos = MAP_APPFONT ( 110 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 110 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 110 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ GroupBox GB_HEADER
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 97 , 54 ) ;
+ TEXT = "Kapitelweise Nummerierung" ;
+ TEXT [ English ] = "Chapter numbering" ;
+ Text [ english_us ] = "Numbering by chapter" ;
+ Text [ portuguese_brazilian ] = "Kapitelweise Numerierung" ;
+ Text [ swedish ] = "Numrering kapitelvis" ;
+ Text [ danish ] = "Kapitelvis nummerering" ;
+ Text [ italian ] = "Numerazione a capitoli" ;
+ Text [ spanish ] = "Numeración de capítulos" ;
+ Text [ french ] = "Par chapitre" ;
+ Text [ dutch ] = "Hoofdstuksgewijs nummeren" ;
+ Text [ portuguese ] = "Numeração por capítulos" ;
+ Text[ chinese_simplified ] = "°´Õ±àºÅ";
+ Text[ russian ] = "Íóìåðàöèÿ ïî ãëàâàì";
+ Text[ polish ] = "Numeracja wed³ug rozdzia³ów";
+ Text[ japanese ] = "Í‚²‚Ƃ̔Ԇ•t‚¯";
+ Text[ chinese_traditional ] = "«ö³¹½s¸¹";
+ Text[ arabic ] = "ÊÑÞíã ÇáÝÕæá";
+ Text[ greek ] = "Áñßèìçóç êáôÜ êåöÜëáéá";
+ Text[ korean ] = "Àå ¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Bölüme göre numaralama";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_LEVEL
+ {
+ Pos = MAP_APPFONT ( 17 , 20 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ TEXT = "E~bene" ;
+ TEXT [ English ] = "~Level" ;
+ Text [ portuguese ] = "~Nível" ;
+ Text [ english_us ] = "~Level" ;
+ Text [ portuguese_brazilian ] = "E~bene" ;
+ Text [ swedish ] = "~Nivå" ;
+ Text [ danish ] = "Niveau" ;
+ Text [ italian ] = "Li~vello" ;
+ Text [ spanish ] = "~Nivel" ;
+ Text [ french ] = "Ni~veau" ;
+ Text [ dutch ] = "N~iveau" ;
+ Text[ chinese_simplified ] = "¼¶(~L)";
+ Text[ russian ] = "Óðîâåíü";
+ Text[ polish ] = "Poziom";
+ Text[ japanese ] = "ÚÍÞÙ(~L)";
+ Text[ chinese_traditional ] = "¯Å(~L)";
+ Text[ arabic ] = "ÇáãÓÊæì";
+ Text[ greek ] = "Åðßðåäï";
+ Text[ korean ] = "¼öÁØ(~L)";
+ Text[ turkish ] = "D~üzey";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_LEVEL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 50 , 19 ) ;
+ Size = MAP_APPFONT ( 46 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Keine" ; > ;
+ };
+ stringlist [ english ] =
+ {
+ < "Keine" ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "Nenhum" ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "None" ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "Keine" ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "Inga" ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "Ingen" ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "Senza" ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "Ninguna" ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "Aucun(e)" ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "Geen" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÎÞ" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Áåç" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Brak" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‚È‚µ" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "µL" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÈÏæä" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÊáíÝíá" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¾øÀ½" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Yok" ; > ;
+ };
+ };
+ FixedText FT_SEPARATOR
+ {
+ Pos = MAP_APPFONT ( 17 , 35 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ TEXT = "~Trenner" ;
+ TEXT [ English ] = "~Separator" ;
+ Text [ english_us ] = "~Separator" ;
+ Text [ portuguese_brazilian ] = "~Trenner" ;
+ Text [ swedish ] = "A~vdelare" ;
+ Text [ danish ] = "Separator" ;
+ Text [ italian ] = "~Separatore" ;
+ Text [ spanish ] = "~Separador" ;
+ Text [ french ] = "~Séparateurs" ;
+ Text [ dutch ] = "~Scheidingsteken" ;
+ Text [ portuguese ] = "~Separador" ;
+ Text[ chinese_simplified ] = "·Ö¸ô·û(~S)";
+ Text[ russian ] = "Ðàçäåëèòåëü";
+ Text[ polish ] = "Separator";
+ Text[ japanese ] = "‹æØ‚è‹L†(~S)";
+ Text[ chinese_traditional ] = "³s±µ²Å(~S)";
+ Text[ arabic ] = "ÇáÝÇÕá";
+ Text[ greek ] = "Äéá÷ùñéóôéêü";
+ Text[ korean ] = "±¸ºÐÀÚ(~S)";
+ Text[ turkish ] = "A~yýrma iþr.";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_SEPARATOR
+ {
+ Pos = MAP_APPFONT ( 50 , 34 ) ;
+ Size = MAP_APPFONT ( 46 , 12 ) ;
+ Border = TRUE ;
+ MaxTextLength = 1 ;
+ TEXT = "." ;
+ };
+ Text [ english_us ] = "Number range options" ;
+ Text [ portuguese_brazilian ] = "Nummernkreis Optionen" ;
+ Text [ swedish ] = "Sekvens alternativ" ;
+ Text [ danish ] = "Sekvensnummerering-indstillinger" ;
+ Text [ italian ] = "Opzioni sequenza" ;
+ Text [ spanish ] = "Opciones de secuencias" ;
+ Text [ french ] = "Options de séquence" ;
+ Text [ dutch ] = "Nummerreeks-opties" ;
+ Text [ portuguese ] = "Opções de sequências" ;
+ Text[ chinese_simplified ] = "ºÅÂëÐòÁÐÑ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû ïîðÿäêîâîãî íîìåðà";
+ Text[ polish ] = "Opcje sekwencji";
+ Text[ japanese ] = "ˆê˜A”Ô†‚̵Ìß¼®Ý";
+ Text[ chinese_traditional ] = "½s¸¹§Ç¦C¿ï¶µ";
+ Text[ arabic ] = "ÎíÇÑÇÊ ÇáÊÑÞíã ÇáãÊÓáÓá";
+ Text[ greek ] = "ÅðéëïãÝò êýêëïõ áñéèìþí";
+ Text[ korean ] = "¼ýÀÚ ¿µ¿ª ¿É¼Ç";
+ Text[ turkish ] = "Numara aralýðý seçenekleri";
+ Text[ language_user1 ] = " ";
+};
+ // ********************************************************************** EOF
diff --git a/sw/source/ui/frmdlg/frmdlg.cxx b/sw/source/ui/frmdlg/frmdlg.cxx
new file mode 100644
index 000000000000..386c367821b7
--- /dev/null
+++ b/sw/source/ui/frmdlg/frmdlg.cxx
@@ -0,0 +1,332 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SVX_BORDER_HXX
+#include <svx/border.hxx>
+#endif
+#ifndef _SVX_BACKGRND_HXX //autogen
+#include <svx/backgrnd.hxx>
+#endif
+#ifndef _SVX_GRFPAGE_HXX //autogen
+#include <svx/grfpage.hxx>
+#endif
+#ifndef _OFA_HTMLCFG_HXX //autogen
+#include <offmgr/htmlcfg.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+
+
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _FRMDLG_HXX
+#include <frmdlg.hxx>
+#endif
+#ifndef _FRMPAGE_HXX
+#include <frmpage.hxx>
+#endif
+#ifndef _WRAP_HXX
+#include <wrap.hxx>
+#endif
+#ifndef _COLUMN_HXX
+#include <column.hxx>
+#endif
+#ifndef _MACASSGN_HXX
+#include <macassgn.hxx>
+#endif
+
+#ifndef _FRMUI_HRC
+#include <frmui.hrc>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+
+/*--------------------------------------------------------------------
+ Beschreibung: Der Traeger des Dialoges
+ --------------------------------------------------------------------*/
+
+SwFrmDlg::SwFrmDlg( SfxViewFrame* pFrame,
+ Window* pParent,
+ const SfxItemSet& rCoreSet,
+ BOOL bNewFrm,
+ USHORT nResType,
+ BOOL bFmt,
+ UINT16 nDefPage,
+ const String* pStr) :
+
+ SfxTabDialog(pFrame, pParent, SW_RES(nResType), &rCoreSet, pStr != 0),
+ bNew(bNewFrm),
+ bFormat(bFmt),
+ rSet(rCoreSet),
+ nDlgType(nResType),
+ pWrtShell(((SwView*)pFrame->GetViewShell())->GetWrtShellPtr())
+{
+ FreeResource();
+ USHORT nHtmlMode = ::GetHtmlMode(pWrtShell->GetView().GetDocShell());
+ BOOL bHtmlMode = nHtmlMode & HTMLMODE_ON;
+
+ // BspFont fuer beide Bsp-TabPages
+ //
+ if(pStr)
+ {
+ String aTmp( GetText() );
+ aTmp += SW_RESSTR(STR_COLL_HEADER);
+ aTmp += *pStr;
+ aTmp += ')';
+ }
+ AddTabPage(TP_FRM_STD, SwFrmPage::Create, 0);
+ AddTabPage(TP_FRM_ADD, SwFrmAddPage::Create, 0);
+ AddTabPage(TP_FRM_WRAP, SwWrapTabPage::Create, 0);
+ AddTabPage(TP_FRM_URL, SwFrmURLPage::Create, 0);
+ if(nDlgType == DLG_FRM_GRF)
+ {
+ AddTabPage( TP_GRF_EXT, SwGrfExtPage::Create, 0 );
+ AddTabPage( RID_SVXPAGE_GRFCROP, SvxGrfCropPage::Create, 0 );
+ }
+ if (nDlgType == DLG_FRM_STD)
+ {
+ AddTabPage(TP_COLUMN, SwColumnPage::Create, 0);
+ }
+ AddTabPage(TP_BACKGROUND,SvxBackgroundTabPage::Create, 0);
+ AddTabPage( TP_MACRO_ASSIGN, SfxSmallMacroTabPage::Create, 0);
+ AddTabPage( TP_BORDER, SvxBorderTabPage::Create, 0);
+
+ if(bHtmlMode)
+ {
+ switch( nDlgType )
+ {
+ case DLG_FRM_STD:
+ if(0 == (nHtmlMode & HTMLMODE_SOME_ABS_POS))
+ RemoveTabPage(TP_BORDER);
+ RemoveTabPage(TP_COLUMN);
+ // kein break
+ case DLG_FRM_OLE:
+ RemoveTabPage(TP_FRM_URL);
+ RemoveTabPage(TP_MACRO_ASSIGN);
+ break;
+ case DLG_FRM_GRF:
+ RemoveTabPage(RID_SVXPAGE_GRFCROP);
+ break;
+ }
+ if( 0 == (nHtmlMode & HTMLMODE_SOME_ABS_POS) ||
+ nDlgType != DLG_FRM_STD )
+ RemoveTabPage(TP_BACKGROUND);
+ }
+
+ if (bNew)
+ SetCurPageId(TP_FRM_STD);
+
+ if (nDefPage)
+ SetCurPageId(nDefPage);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFrmDlg::~SwFrmDlg()
+{
+}
+
+
+
+
+void SwFrmDlg::PageCreated( USHORT nId, SfxTabPage &rPage )
+{
+ switch ( nId )
+ {
+ case TP_FRM_STD:
+ ((SwFrmPage&)rPage).SetNewFrame(bNew);
+ ((SwFrmPage&)rPage).SetFormatUsed(bFormat);
+ ((SwFrmPage&)rPage).SetFrmType(nDlgType);
+ break;
+
+ case TP_FRM_ADD:
+ ((SwFrmAddPage&)rPage).SetFormatUsed(bFormat);
+ ((SwFrmAddPage&)rPage).SetFrmType(nDlgType);
+ ((SwFrmAddPage&)rPage).SetNewFrame(bNew);
+ ((SwFrmAddPage&)rPage).SetShell(pWrtShell);
+ break;
+
+ case TP_FRM_WRAP:
+ ((SwWrapTabPage&)rPage).SetNewFrame(bNew);
+ ((SwWrapTabPage&)rPage).SetFormatUsed(bFormat, FALSE);
+ ((SwWrapTabPage&)rPage).SetShell(pWrtShell);
+ break;
+
+ case TP_COLUMN:
+ {
+ ((SwColumnPage&)rPage).SetFrmMode(TRUE);
+ ((SwColumnPage&)rPage).SetFormatUsed(bFormat);
+
+ const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)
+ rSet.Get( RES_FRM_SIZE );
+ ((SwColumnPage&)rPage).SetPageWidth( rSize.GetWidth() );
+ }
+ break;
+
+ case TP_MACRO_ASSIGN:
+ SwMacroAssignDlg::AddEvents( (SfxSmallMacroTabPage&)rPage,
+ DLG_FRM_GRF == nDlgType ? MACASSGN_GRAPHIC
+ : DLG_FRM_OLE == nDlgType ? MACASSGN_OLE
+ : MACASSGN_FRMURL );
+ break;
+
+ case TP_BACKGROUND:
+ if( DLG_FRM_STD == nDlgType )
+ ((SvxBackgroundTabPage&)rPage).ShowSelector();
+ break;
+
+ case TP_BORDER:
+ ((SvxBorderTabPage&) rPage).SetSWMode(SW_BORDER_MODE_FRAME);
+ break;
+ }
+}
+
+
+/*-----------------25.02.94 21:22-------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.196 2000/09/18 16:05:33 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.195 2000/08/25 14:10:11 jp
+ Graphic Crop-Attribut and TabPage exported to SVX
+
+ Revision 1.194 2000/06/20 14:47:24 os
+ #70060# less occurences of columns in HTML
+
+ Revision 1.193 1998/07/17 08:18:06 OS
+ SfxxSmallMacroTabPage einsetzen #52809#
+
+
+ Rev 1.192 17 Jul 1998 10:18:06 OS
+ SfxxSmallMacroTabPage einsetzen #52809#
+
+ Rev 1.191 15 Jun 1998 21:15:48 MH
+ add: list.hxx
+
+ Rev 1.190 16 Apr 1998 13:11:10 OS
+ Rahmenanpassung die zweite
+
+ Rev 1.189 06 Apr 1998 09:48:24 OS
+ HTML-Anpassungen
+
+ Rev 1.188 28 Nov 1997 19:41:18 MA
+ includes
+
+ Rev 1.187 24 Nov 1997 17:40:14 MA
+ include
+
+ Rev 1.186 03 Nov 1997 13:19:48 MA
+ precomp entfernt
+
+ Rev 1.185 01 Sep 1997 13:29:54 OS
+ DLL-Umstellung
+
+ Rev 1.184 15 Aug 1997 12:13:22 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.183 11 Aug 1997 12:45:16 MH
+ chg: header
+
+ Rev 1.182 03 Jul 1997 12:54:34 OS
+ SwSwMode jetzt mit BYTE #41255#
+
+ Rev 1.181 29 Apr 1997 15:04:48 OS
+ Hintergrund auch fuer OLE
+
+--------------------------------------------------*/
+
+
diff --git a/sw/source/ui/frmdlg/frmmgr.cxx b/sw/source/ui/frmdlg/frmmgr.cxx
new file mode 100644
index 000000000000..a9d9a873b3fa
--- /dev/null
+++ b/sw/source/ui/frmdlg/frmmgr.cxx
@@ -0,0 +1,832 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmmgr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "cmdid.h"
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+#include "hintids.hxx"
+
+
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SVX_PROTITEM_HXX //autogen
+#include <svx/protitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_OPAQITEM_HXX //autogen
+#include <svx/opaqitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_SHADITEM_HXX //autogen
+#include <svx/shaditem.hxx>
+#endif
+
+
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "viewopt.hxx"
+#include "uitool.hxx"
+#include "frmmgr.hxx"
+#include "format.hxx"
+#include "mdiexp.hxx"
+#include "poolfmt.hxx"
+
+static USHORT __FAR_DATA aFrmMgrRange[] = {
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
+ FN_SET_FRM_NAME, FN_SET_FRM_NAME,
+ 0};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Rahmen-Attribute ueber Shell ermitteln
+ --------------------------------------------------------------------*/
+
+SwFlyFrmAttrMgr::SwFlyFrmAttrMgr( BOOL bNew, SwWrtShell* pSh, BYTE nType ) :
+ bAbsPos( FALSE ),
+ bNewFrm( bNew ),
+ aSet( (SwAttrPool&)pSh->GetAttrPool(), aFrmMgrRange ),
+ pOwnSh( pSh )
+
+{
+ if ( bNewFrm )
+ {
+ // Defaults einstellen:
+ USHORT nId;
+ switch ( nType )
+ {
+ case FRMMGR_TYPE_TEXT: nId = RES_POOLFRM_FRAME; break;
+ case FRMMGR_TYPE_OLE: nId = RES_POOLFRM_OLE; break;
+ case FRMMGR_TYPE_GRF: nId = RES_POOLFRM_GRAPHIC; break;
+ }
+ aSet.SetParent( &pOwnSh->GetFmtFromPool( nId )->GetAttrSet());
+ aSet.Put( SwFmtFrmSize( ATT_MIN_SIZE, DFLT_WIDTH, DFLT_HEIGHT ));
+ if ( 0 != ::GetHtmlMode(pSh->GetView().GetDocShell()) )
+ aSet.Put( SwFmtHoriOrient( 0, HORI_LEFT, PRTAREA ) );
+ }
+ else if ( nType == FRMMGR_TYPE_NONE )
+ pOwnSh->GetFlyFrmAttr( aSet );
+ ::PrepareBoxInfo( aSet, *pOwnSh );
+}
+
+SwFlyFrmAttrMgr::SwFlyFrmAttrMgr( BOOL bNew, SwWrtShell* pSh, const SfxItemSet &rSet ) :
+ bAbsPos( FALSE ),
+ bNewFrm( bNew ),
+ aSet( rSet ),
+ pOwnSh( pSh )
+
+{
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Initialisieren
+ --------------------------------------------------------------------*/
+
+void SwFlyFrmAttrMgr::UpdateAttrMgr()
+{
+ if ( !bNewFrm && pOwnSh->IsFrmSelected() )
+ pOwnSh->GetFlyFrmAttr( aSet );
+ ::PrepareBoxInfo( aSet, *pOwnSh );
+}
+
+void SwFlyFrmAttrMgr::_UpdateFlyFrm()
+{
+ const SfxPoolItem* pItem = 0;
+
+ if (aSet.GetItemState(FN_SET_FRM_NAME, FALSE, &pItem) == SFX_ITEM_SET)
+ pOwnSh->SetFlyName(((SfxStringItem *)pItem)->GetValue());
+
+ pOwnSh->SetModified();
+
+ if ( bAbsPos )
+ {
+ pOwnSh->SetFlyPos( aAbsPos );
+ bAbsPos = FALSE;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Bestehenden Fly-Frame aendern
+ --------------------------------------------------------------------*/
+
+void SwFlyFrmAttrMgr::UpdateFlyFrm()
+{
+ ASSERT( pOwnSh->IsFrmSelected(),
+ "Kein Rahmen selektiert oder keine Shell, Update nicht moeglich");
+
+ // return wg. BASIC
+ if( !aSet.Count() || !pOwnSh->IsFrmSelected() )
+ return;
+
+ pOwnSh->StartAllAction();
+ pOwnSh->SetFlyFrmAttr( aSet );
+ _UpdateFlyFrm();
+ pOwnSh->EndAllAction();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Rahmen einfuegen
+ --------------------------------------------------------------------*/
+
+BOOL SwFlyFrmAttrMgr::InsertFlyFrm()
+{
+ pOwnSh->StartAllAction();
+
+ BOOL bRet = 0 != pOwnSh->NewFlyFrm( aSet );
+
+ // richtigen Mode an der Shell einschalten, Rahmen wurde aut. selektiert.
+ if ( bRet )
+ {
+ _UpdateFlyFrm();
+ pOwnSh->EnterSelFrmMode();
+ FrameNotify(pOwnSh, FLY_DRAG_START);
+ }
+ pOwnSh->EndAllAction();
+ return bRet;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Rahmen des Typs eAnchorType einfuegen. Position und
+ Groesse werden explizit angegeben.
+ Nicht erlaubte Werte des Aufzaehlungstypes werden
+ korrigiert.
+------------------------------------------------------------------------*/
+
+void SwFlyFrmAttrMgr::InsertFlyFrm(RndStdIds eAnchorType,
+ const Point &rPos,
+ const Size &rSize,
+ BOOL bAbs )
+{
+ ASSERT( eAnchorType == FLY_PAGE ||
+ eAnchorType == FLY_AT_CNTNT ||
+ eAnchorType == FLY_AUTO_CNTNT ||
+ eAnchorType == FLY_AT_FLY ||
+ eAnchorType == FLY_IN_CNTNT, "Rahmentyp nicht erlaubt" );
+
+ if ( bAbs )
+ SetAbsPos( rPos );
+ else
+ SetPos( rPos );
+
+ SetSize( rSize );
+ SetAnchor( eAnchorType );
+ InsertFlyFrm();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Anker setzen
+ --------------------------------------------------------------------*/
+
+void SwFlyFrmAttrMgr::SetAnchor( RndStdIds eId )
+{
+ USHORT nPhyPageNum, nVirtPageNum;
+ pOwnSh->GetPageNum( nPhyPageNum, nVirtPageNum );
+
+ aSet.Put( SwFmtAnchor( eId, nPhyPageNum ) );
+ if( FLY_PAGE == eId || FLY_AT_CNTNT == eId || FLY_AUTO_CNTNT == eId
+ || FLY_AT_FLY == eId )
+ {
+ SwFmtVertOrient aVertOrient( GetVertOrient() );
+ SwFmtHoriOrient aHoriOrient( GetHoriOrient() );
+ aHoriOrient.SetRelationOrient( FRAME );
+ aVertOrient.SetRelationOrient( FRAME );
+ aSet.Put( aVertOrient );
+ aSet.Put( aHoriOrient );
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Setzen des Attributs fuer Spalten
+------------------------------------------------------------------------*/
+
+void SwFlyFrmAttrMgr::SetCol( const SwFmtCol &rCol )
+{
+ aSet.Put( rCol );
+}
+/*--------------------------------------------------------------------
+ Beschreibung: Absolute Position setzen
+ --------------------------------------------------------------------*/
+
+void SwFlyFrmAttrMgr::SetAbsPos( const Point& rPoint )
+{
+ bAbsPos = TRUE;
+ aAbsPos = rPoint;
+
+ SwFmtVertOrient aVertOrient( GetVertOrient() );
+ SwFmtHoriOrient aHoriOrient( GetHoriOrient() );
+ aHoriOrient.SetHoriOrient( HORI_NONE );
+ aVertOrient.SetVertOrient( VERT_NONE );
+ aSet.Put( aVertOrient );
+ aSet.Put( aHoriOrient );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Metriken auf Korrektheit pruefen
+ --------------------------------------------------------------------*/
+
+void SwFlyFrmAttrMgr::ValidateMetrics( SwFrmValid& rVal, BOOL bOnlyPercentRefValue )
+{
+ if (!bOnlyPercentRefValue)
+ {
+ rVal.nMinHeight = MINFLY + CalcTopSpace() + CalcBottomSpace();
+ rVal.nMinWidth = MINFLY + CalcLeftSpace()+ CalcRightSpace();
+ }
+
+ SwRect aBoundRect;
+
+ pOwnSh->CalcBoundRect(aBoundRect, rVal.eArea, rVal.eHRel, rVal.bMirror, NULL, &rVal.aPercentSize);
+
+ if (bOnlyPercentRefValue)
+ return;
+
+ if ( rVal.eArea == FLY_PAGE || rVal.eArea == FLY_AT_FLY )
+ {
+ // MinimalPosition
+ rVal.nMinHPos = aBoundRect.Left();
+ rVal.nMinVPos = aBoundRect.Top();
+ SwTwips nH = rVal.nHPos;
+ SwTwips nV = rVal.nVPos;
+
+ if (rVal.nHPos + rVal.nWidth > aBoundRect.Right())
+ {
+ if (rVal.eHori == HORI_NONE)
+ {
+ rVal.nHPos -= ((rVal.nHPos + rVal.nWidth) - aBoundRect.Right());
+ nH = rVal.nHPos;
+ }
+ else
+ rVal.nWidth = aBoundRect.Right() - rVal.nHPos;
+ }
+
+ if (rVal.nHPos + rVal.nWidth > aBoundRect.Right())
+ rVal.nWidth = aBoundRect.Right() - rVal.nHPos;
+
+ if (rVal.nVPos + rVal.nHeight > aBoundRect.Bottom())
+ {
+ if (rVal.eVert == SVX_VERT_NONE)
+ {
+ rVal.nVPos -= ((rVal.nVPos + rVal.nHeight) - aBoundRect.Bottom());
+ nV = rVal.nVPos;
+ }
+ else
+ rVal.nHeight = aBoundRect.Bottom() - rVal.nVPos;
+ }
+
+ if (rVal.nVPos + rVal.nHeight > aBoundRect.Bottom())
+ rVal.nHeight = aBoundRect.Bottom() - rVal.nVPos;
+
+ if ( rVal.eVert != SVX_VERT_NONE )
+ nV = aBoundRect.Top();
+
+ if ( rVal.eHori != HORI_NONE )
+ nH = aBoundRect.Left();
+
+ rVal.nMaxHPos = aBoundRect.Right() - rVal.nWidth;
+ rVal.nMaxHeight = aBoundRect.Bottom() - nV;
+
+ rVal.nMaxVPos = aBoundRect.Bottom() - rVal.nHeight;
+ rVal.nMaxWidth = aBoundRect.Right() - nH;
+ }
+ else if ( rVal.eArea == FLY_AT_CNTNT || rVal.eArea == FLY_AUTO_CNTNT )
+ {
+ SwTwips nH = rVal.nHPos;
+ SwTwips nV = rVal.nVPos;
+
+ if (rVal.nHPos + rVal.nWidth > aBoundRect.Right())
+ {
+ if (rVal.eHori == HORI_NONE)
+ {
+ rVal.nHPos -= ((rVal.nHPos + rVal.nWidth) - aBoundRect.Right());
+ nH = rVal.nHPos;
+ }
+ else
+ rVal.nWidth = aBoundRect.Right() - rVal.nHPos;
+ }
+
+ if (rVal.nVPos + rVal.nHeight > aBoundRect.Bottom())
+ {
+ if (rVal.eVert == SVX_VERT_NONE)
+ {
+ rVal.nVPos -= ((rVal.nVPos + rVal.nHeight) - aBoundRect.Bottom());
+ nV = rVal.nVPos;
+ }
+ else
+ rVal.nHeight = aBoundRect.Bottom() - rVal.nVPos;
+ }
+
+ if ( rVal.eVert != SVX_VERT_NONE )
+ nV = aBoundRect.Top();
+
+ if ( rVal.eHori != HORI_NONE )
+ nH = aBoundRect.Left();
+
+ rVal.nMinVPos = aBoundRect.Top();
+ rVal.nMaxVPos = aBoundRect.Height() - rVal.nHeight;
+
+ rVal.nMinHPos = aBoundRect.Left();
+ rVal.nMaxHPos = aBoundRect.Right() - rVal.nWidth;
+
+ // Maximale Breite Hoehe
+ rVal.nMaxHeight = rVal.nMaxVPos + rVal.nHeight - nV;
+ rVal.nMaxWidth = rVal.nMaxHPos + rVal.nWidth - nH;
+ }
+ else if ( rVal.eArea == FLY_IN_CNTNT )
+ {
+ rVal.nMinHPos = 0;
+ rVal.nMaxHPos = 0;
+
+ rVal.nMaxHeight = aBoundRect.Height();
+ rVal.nMaxWidth = aBoundRect.Width();
+
+ rVal.nMaxVPos = aBoundRect.Height();
+ rVal.nMinVPos = -aBoundRect.Height() + rVal.nHeight;
+ if (rVal.nMaxVPos < rVal.nMinVPos)
+ {
+ rVal.nMinVPos = rVal.nMaxVPos;
+ rVal.nMaxVPos = -aBoundRect.Height();
+ }
+ }
+ if (rVal.nMaxWidth < rVal.nWidth)
+ rVal.nWidth = rVal.nMaxWidth;
+ if (rVal.nMaxHeight < rVal.nHeight)
+ rVal.nHeight = rVal.nMaxHeight;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Korrektur fuer Umrandung
+ --------------------------------------------------------------------*/
+
+long SwFlyFrmAttrMgr::CalcWidthSpace()
+{
+ SvxLRSpaceItem &rLR = (SvxLRSpaceItem&)aSet.Get(RES_LR_SPACE);
+ return rLR.GetLeft() + rLR.GetRight() + CalcLeftSpace() + CalcRightSpace();
+}
+
+long SwFlyFrmAttrMgr::CalcHeightSpace()
+{
+ SvxULSpaceItem &rUL = (SvxULSpaceItem&)aSet.Get(RES_UL_SPACE);
+ return rUL.GetUpper() + rUL.GetLower() + CalcTopSpace() + CalcBottomSpace();
+}
+
+SwTwips SwFlyFrmAttrMgr::CalcTopSpace()
+{
+ const SvxShadowItem& rShadow = GetShadow();
+ const SvxBoxItem& rBox = GetBox();
+ return rShadow.CalcShadowSpace(SHADOW_TOP ) + rBox.CalcLineSpace(BOX_LINE_TOP);
+}
+
+SwTwips SwFlyFrmAttrMgr::CalcBottomSpace()
+{
+ const SvxShadowItem& rShadow = GetShadow();
+ const SvxBoxItem& rBox = GetBox();
+ return rShadow.CalcShadowSpace(SHADOW_BOTTOM) + rBox.CalcLineSpace(BOX_LINE_BOTTOM);
+}
+
+SwTwips SwFlyFrmAttrMgr::CalcLeftSpace()
+{
+ const SvxShadowItem& rShadow = GetShadow();
+ const SvxBoxItem& rBox = GetBox();
+ return rShadow.CalcShadowSpace(SHADOW_LEFT) + rBox.CalcLineSpace(BOX_LINE_LEFT);
+}
+
+SwTwips SwFlyFrmAttrMgr::CalcRightSpace()
+{
+ const SvxShadowItem& rShadow = GetShadow();
+ const SvxBoxItem& rBox = GetBox();
+ return rShadow.CalcShadowSpace(SHADOW_RIGHT) + rBox.CalcLineSpace(BOX_LINE_RIGHT);
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Attribut aus dem Set loeschen
+ --------------------------------------------------------------------*/
+void SwFlyFrmAttrMgr::DelAttr( USHORT nId )
+{
+ aSet.ClearItem( nId );
+}
+
+void SwFlyFrmAttrMgr::SetLRSpace( long nLeft, long nRight )
+{
+ ASSERT( LONG_MAX != nLeft && LONG_MAX != nRight, "Welchen Raend setzen?" );
+
+ SvxLRSpaceItem aTmp( (SvxLRSpaceItem&)aSet.Get( RES_LR_SPACE ) );
+ if( LONG_MAX != nLeft )
+ aTmp.SetLeft( USHORT(nLeft) );
+ if( LONG_MAX != nRight )
+ aTmp.SetRight( USHORT(nRight) );
+ aSet.Put( aTmp );
+}
+
+void SwFlyFrmAttrMgr::SetULSpace( long nTop, long nBottom )
+{
+ ASSERT( LONG_MAX != nTop && LONG_MAX != nBottom, Welchen Raend setzen? );
+
+ SvxULSpaceItem aTmp( (SvxULSpaceItem&)aSet.Get( RES_UL_SPACE ) );
+ if( LONG_MAX != nTop )
+ aTmp.SetUpper( USHORT(nTop) );
+ if( LONG_MAX != nBottom )
+ aTmp.SetLower( USHORT(nBottom) );
+ aSet.Put( aTmp );
+}
+
+void SwFlyFrmAttrMgr::SetWrapType( SwSurround eFly )
+{
+ SwFmtSurround aWrap( GetSurround() );
+ aWrap.SetSurround( eFly );
+ aSet.Put( aWrap );
+}
+
+void SwFlyFrmAttrMgr::SetAnchorOnly(BOOL bSet)
+{
+ SwFmtSurround aWrap( GetSurround() );
+ aWrap.SetAnchorOnly(bSet);
+ aSet.Put( aWrap );
+}
+
+void SwFlyFrmAttrMgr::SetContour( BOOL bSet)
+{
+ SwFmtSurround aWrap( GetSurround() );
+ aWrap.SetContour(bSet);
+ aSet.Put( aWrap );
+}
+
+void SwFlyFrmAttrMgr::SetPos( const Point& rPoint )
+{
+ SwFmtVertOrient aVertOrient( GetVertOrient() );
+ SwFmtHoriOrient aHoriOrient( GetHoriOrient() );
+
+ aHoriOrient.SetPos ( rPoint.X() );
+ aHoriOrient.SetHoriOrient( HORI_NONE );
+
+ aVertOrient.SetPos ( rPoint.Y() );
+ aVertOrient.SetVertOrient( VERT_NONE );
+
+ aSet.Put( aVertOrient );
+ aSet.Put( aHoriOrient );
+}
+
+void SwFlyFrmAttrMgr::SetHorzOrientation(SwHoriOrient eOrient)
+{
+ SwFmtHoriOrient aHoriOrient( GetHoriOrient() );
+ aHoriOrient.SetHoriOrient( eOrient );
+ aSet.Put( aHoriOrient );
+}
+
+void SwFlyFrmAttrMgr::SetVertOrientation(SvxFrameVertOrient eOrient)
+{
+ SwFmtVertOrient aVertOrient( GetVertOrient() );
+ aVertOrient.SetVertOrient( (SwVertOrient)eOrient );
+ aSet.Put( aVertOrient );
+}
+
+void SwFlyFrmAttrMgr::SetSizeType( SwFrmSize eType )
+{
+ SwFmtFrmSize aSize( GetFrmSize() );
+ aSize.SetSizeType( eType );
+ aSet.Put( aSize );
+}
+
+void SwFlyFrmAttrMgr::SetSize( const Size& rSize )
+{
+ SwFmtFrmSize aSize( GetFrmSize() );
+ aSize.SetSize(Size(Max(rSize.Width(), long(MINFLY)), Max(rSize.Height(), long(MINFLY))));
+ aSet.Put( aSize );
+}
+
+void SwFlyFrmAttrMgr::SetFrmSize(const SwFmtFrmSize& rFrmSize)
+{
+ aSet.Put(rFrmSize);
+}
+
+void SwFlyFrmAttrMgr::ProtectPosSize( BOOL bProt )
+{
+ SvxProtectItem aProtection( ((SvxProtectItem&)aSet.Get(RES_PROTECT)));
+ aProtection.SetSizeProtect( bProt );
+ aProtection.SetPosProtect ( bProt );
+ aSet.Put( aProtection );
+}
+
+void SwFlyFrmAttrMgr::SetTransparent(BOOL bTrans)
+{
+ aSet.Put( SvxOpaqueItem( RES_OPAQUE, !bTrans ));
+}
+
+
+void SwFlyFrmAttrMgr::SetAttrSet(const SfxItemSet& rSet)
+{
+ aSet.ClearItem();
+ aSet.Put( rSet );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Validierung der Inputs
+ --------------------------------------------------------------------*/
+
+SwFrmValid::SwFrmValid() :
+ bAuto(0),
+ bMirror(0),
+ nHPos(0),
+ nMaxHPos(LONG_MAX),
+ nMinHPos(0),
+
+ nVPos(0),
+ nMaxVPos(LONG_MAX),
+ nMinVPos(0),
+
+ nWidth( DFLT_WIDTH ),
+ nMinWidth(0),
+ nMaxWidth(LONG_MAX),
+
+ nHeight( DFLT_HEIGHT ),
+ nMaxHeight(LONG_MAX)
+{
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.168 2000/09/18 16:05:33 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.167 1998/11/04 18:43:28 MA
+ #58858# Format fuer MakeNewFly durchreichen
+
+
+ Rev 1.166 04 Nov 1998 19:43:28 MA
+ #58858# Format fuer MakeNewFly durchreichen
+
+ Rev 1.165 07 Apr 1998 12:00:42 OM
+ Maximalwerte fuer Umlauf
+
+ Rev 1.164 01 Apr 1998 15:15:22 OM
+ #49023 Prozentuale Controller rechtzeitig initialisieren
+
+ Rev 1.163 05 Feb 1998 15:27:38 OM
+ Maximalwertberechnung fuer Rahmenausrichtung
+
+ Rev 1.162 04 Feb 1998 15:53:56 AMA
+ Chg: CalcBoundRect beruecksichtigt die neuen Rahmenausrichtungen
+
+ Rev 1.161 24 Nov 1997 17:40:08 MA
+ include
+
+ Rev 1.160 20 Nov 1997 12:14:36 AMA
+ Opt. SwSurround: GoldCut jetzt als Enum; nicht implementierte Enums entfernt
+
+ Rev 1.159 12 Sep 1997 16:32:36 AMA
+ Neu: Wenn am Rahmen verankerte Rahmen ausserhalb sein duerfen ...
+
+ Rev 1.158 12 Sep 1997 10:38:00 OS
+ ITEMID_* definiert
+
+ Rev 1.157 15 Aug 1997 12:13:24 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.156 12 Aug 1997 15:58:10 OS
+ frmitems/textitem/paraitem aufgeteilt
+
+ Rev 1.155 07 Aug 1997 14:59:12 OM
+ Headerfile-Umstellung
+
+ Rev 1.154 30 Jul 1997 18:17:48 HJS
+ includes
+
+ Rev 1.153 23 Apr 1997 10:44:34 AMA
+ Fix: FLY_AUTO_CNTNT Abstaende richtig berechnen
+
+ Rev 1.152 16 Apr 1997 16:24:14 OS
+ neu: SetContour und SetAnchorOnly
+
+ Rev 1.151 16 Apr 1997 11:08:58 NF
+ Include-Reihenfolge wegen Internal Compiler Error
+
+ Rev 1.150 15 Apr 1997 16:27:58 AMA
+ New: Rahmengebundene Rahmen und auto.positionierte Rahmen
+
+ Rev 1.149 03 Feb 1997 16:00:36 OM
+ Maximalwertberechnung fuer zeichengebundene Rahmen geaendert
+
+ Rev 1.148 29 Jan 1997 13:06:24 MA
+ unbenutzes entfernt
+
+ Rev 1.147 28 Jan 1997 10:12:18 NF
+ includes ...
+
+ Rev 1.146 27 Jan 1997 16:22:30 OS
+ HtmlMode wird ueber GetHtmlMode ermittelt
+
+ Rev 1.145 06 Nov 1996 16:26:10 OM
+ Maximalwertberechnung verbessert
+
+ Rev 1.144 04 Nov 1996 16:50:44 OM
+ Maximalwertbegrenzung fuer Umlauf-TP
+
+ Rev 1.143 04 Nov 1996 14:58:42 OM
+ ValidateMetric umgestellt
+
+ Rev 1.142 30 Sep 1996 07:52:36 MA
+ new: CalcWidthSpace, CalcHeightSpace
+
+ Rev 1.141 26 Sep 1996 09:03:08 MA
+ defautls fuer Rahmen + Aufraeumarbeiten
+
+ Rev 1.140 23 Sep 1996 13:30:54 OS
+ richtige max. V-Position und Hoehe fuer absatzgebundene Rahmen
+
+ Rev 1.139 18 Sep 1996 10:39:18 OM
+ Umlauf: Nur Anker
+
+ Rev 1.138 12 Sep 1996 17:01:50 OS
+ GetAnyCurRect() ersetzt GetCur*Rect
+
+ Rev 1.137 11 Sep 1996 16:51:44 MA
+ new: Umlauf nur Anker
+
+ Rev 1.136 10 Sep 1996 17:00:44 OM
+ Prozentuale Rahmen
+
+ Rev 1.135 10 Sep 1996 14:21:48 MA
+ chg: ein bischen vereinfacht
+
+ Rev 1.134 10 Sep 1996 14:00:46 OM
+ Aufgeraeumt
+
+ Rev 1.133 06 Sep 1996 14:15:20 OM
+ #31010# GPF bei fehlenden Groessenangaben behoben
+
+ Rev 1.132 28 Aug 1996 11:52:48 OS
+ includes
+
+ Rev 1.131 01 Jul 1996 14:55:02 OM
+ Neue Segs
+
+ Rev 1.130 01 Jul 1996 14:53:58 OM
+ Basic: Rahmengroesse in Prozent setzen
+
+ Rev 1.129 15 May 1996 15:47:18 OS
+ SwVertOrient -> SvxFrameVertOrient
+
+ Rev 1.128 25 Apr 1996 15:59:24 MA
+ #27183# neg. Position von zeichengeb. beruecksichtigen
+
+ Rev 1.127 19 Apr 1996 17:00:34 MA
+ chg: Vorbereitung fuer kleine Rahmen
+
+ Rev 1.126 18 Apr 1996 14:10:32 JP
+ unbenutzte Methoden entfernt
+
+ Rev 1.125 22 Mar 1996 15:06:00 OS
+ Umstellung 311
+
+ Rev 1.124 21 Mar 1996 14:06:32 OM
+ Umstellung 311
+
+ Rev 1.123 20 Feb 1996 17:03:06 JP
+ Umbau SfxItemPool -> SwAttrPool
+
+ Rev 1.122 24 Nov 1995 16:58:12 OM
+ PCH->PRECOMPILED
+
+ Rev 1.121 17 Nov 1995 18:11:42 OM
+ Rahmennamen setzen
+
+ Rev 1.120 03 Nov 1995 20:17:30 MA
+ GetUpper..Rect returne keine Objecte mehr
+
+ Rev 1.119 30 Oct 1995 18:44:04 OM
+ FrameNotify umgestellt
+
+ Rev 1.118 30 Oct 1995 11:25:34 MA
+ chg: Geraffel entfernt
+
+ Rev 1.117 09 Aug 1995 21:50:48 ER
+ ! static data _vor_ seg_eofglobals
+
+ Rev 1.116 25 Jul 1995 19:12:06 OS
+ +ProtectPos(), +ProtectSize()
+
+ Rev 1.115 24 Jul 1995 19:13:30 MA
+ chg: Ctor nur noch mit Shell
+
+ Rev 1.114 17 Jul 1995 16:10:56 OS
+ Default-Konstanten jetzt im Header
+
+ Rev 1.113 21 May 1995 15:41:58 MA
+ opt: FRMTYE_FLY_ANY.
+
+ Rev 1.112 25 Apr 1995 17:34:06 OM
+ Range des Set-Konstruktors um BoxInfoItem erweitert
+
+ Rev 1.111 23 Apr 1995 20:45:26 OS
+ Position/Size beim Aufziehen
+
+ Rev 1.110 31 Mar 1995 12:07:38 MA
+ fix: Bei PosProtect nicht den Inhalt schuetzen.
+ opt: Diverse.
+ opt: unoetige includes entfernt.
+
+ Rev 1.109 24 Mar 1995 20:28:32 PK
+ neuer member: pownsh
+
+ Rev 1.108 21 Mar 1995 07:38:36 OM
+ InsertFlyFrm wieder drin
+
+ Rev 1.107 20 Mar 1995 19:18:30 OS
+ unbenutzte Funktionen entfernt
+
+ Rev 1.106 14 Feb 1995 17:26:06 MS
+ PrepareBoxInfo
+
+ Rev 1.105 13 Feb 1995 21:11:50 MS
+ Rahmen aktiviert
+
+ Rev 1.104 23 Jan 1995 18:14:14 OM
+ Auf neue precompiled Header umgestellt
+
+ Rev 1.103 09 Jan 1995 17:08:10 ER
+ del: cmdid h
+
+ Rev 1.102 20 Dec 1994 11:54:06 MA
+ SS Drawing.
+
+ Rev 1.101 18 Nov 1994 16:17:22 MA
+ min -> Min, max -> Max.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/frmdlg/frmpage.cxx b/sw/source/ui/frmdlg/frmpage.cxx
new file mode 100644
index 000000000000..90cd2045ae6d
--- /dev/null
+++ b/sw/source/ui/frmdlg/frmpage.cxx
@@ -0,0 +1,2837 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmpage.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _IODLG_HXX
+#include <sfx2/iodlg.hxx>
+#endif
+#ifndef _SVX_IMPGRF_HXX //autogen
+#include <svx/impgrf.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SVX_SIZEITEM_HXX //autogen
+#include <svx/sizeitem.hxx>
+#endif
+#ifndef _SVX_OPAQITEM_HXX //autogen
+#include <svx/opaqitem.hxx>
+#endif
+#ifndef _SVX_PROTITEM_HXX //autogen
+#include <svx/protitem.hxx>
+#endif
+#ifndef _SVX_PRNTITEM_HXX //autogen
+#include <svx/prntitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+
+#ifndef _FMTURL_HXX //autogen
+#include <fmturl.hxx>
+#endif
+#ifndef _FMTEIRO_HXX //autogen
+#include <fmteiro.hxx>
+#endif
+#ifndef _FMTCNCT_HXX //autogen
+#include <fmtcnct.hxx>
+#endif
+#ifndef _SWVIEW_HXX //autogen
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _FRMDLG_HXX
+#include <frmdlg.hxx>
+#endif
+#ifndef _FRMMGR_HXX
+#include <frmmgr.hxx>
+#endif
+#ifndef _FRMPAGE_HXX
+#include <frmpage.hxx>
+#endif
+#ifndef _WRAP_HXX
+#include <wrap.hxx>
+#endif
+#ifndef _COLMGR_HXX
+#include <colmgr.hxx>
+#endif
+#ifndef _GRFATR_HXX
+#include <grfatr.hxx>
+#endif
+#ifndef _UIITEMS_HXX
+#include <uiitems.hxx>
+#endif
+
+#ifndef _FRMUI_HRC
+#include <frmui.hrc>
+#endif
+#ifndef _FRMPAGE_HRC
+#include <frmpage.hrc>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+
+struct FrmMap
+{
+ USHORT nStrId;
+ USHORT nMirrorStrId;
+ USHORT nAlign;
+ ULONG nLBRelations;
+};
+
+struct RelationMap
+{
+ USHORT nStrId;
+ USHORT nMirrorStrId;
+ ULONG nLBRelation;
+ USHORT nRelation;
+};
+
+#define LB_FRAME 0x00000001L // Textbereich des Absatzes
+#define LB_PRTAREA 0x00000002L // Textbereich des Absatzes + Einzuege
+#define LB_REL_PG_LEFT 0x00000004L // Linker Seitenrand
+#define LB_REL_PG_RIGHT 0x00000008L // Rechter Seitenrand
+#define LB_REL_FRM_LEFT 0x00000010L // Linker Absatzrand
+#define LB_REL_FRM_RIGHT 0x00000020L // Rechter Absatzrand
+#define LB_REL_PG_FRAME 0x00000040L // Gesamte Seite
+#define LB_REL_PG_PRTAREA 0x00000080L // Textbereich der Seite
+
+#define LB_FLY_REL_PG_LEFT 0x00000100L // Linker Rahmenrand
+#define LB_FLY_REL_PG_RIGHT 0x00000200L // Rechter Rahmenrand
+#define LB_FLY_REL_PG_FRAME 0x00000400L // Gesamte Rahmen
+#define LB_FLY_REL_PG_PRTAREA 0x00000800L // Rahmeninneres
+
+#define LB_VERT_FRAME 0x00001000L // Vertikaler Textbereich des Absatzes
+#define LB_VERT_PRTAREA 0x00002000L // Vertikaler Textbereich des Absatzes + Einzuege
+
+#define LB_REL_BASE 0x00010000L // Zeichenausrichtung Basis
+#define LB_REL_CHAR 0x00020000L // Zeichenausrichtung Zeichen
+#define LB_REL_ROW 0x00040000L // Zeichenausrichtung Zeile
+
+static RelationMap __FAR_DATA aRelationMap[] =
+{
+ STR_FRAME, STR_FRAME, LB_FRAME, FRAME,
+ STR_PRTAREA, STR_PRTAREA, LB_PRTAREA, PRTAREA,
+ STR_REL_PG_LEFT, STR_MIR_REL_PG_LEFT, LB_REL_PG_LEFT, REL_PG_LEFT,
+ STR_REL_PG_RIGHT, STR_MIR_REL_PG_RIGHT, LB_REL_PG_RIGHT, REL_PG_RIGHT,
+ STR_REL_FRM_LEFT, STR_MIR_REL_FRM_LEFT, LB_REL_FRM_LEFT, REL_FRM_LEFT,
+ STR_REL_FRM_RIGHT, STR_MIR_REL_FRM_RIGHT, LB_REL_FRM_RIGHT, REL_FRM_RIGHT,
+ STR_REL_PG_FRAME, STR_REL_PG_FRAME, LB_REL_PG_FRAME, REL_PG_FRAME,
+ STR_REL_PG_PRTAREA, STR_REL_PG_PRTAREA, LB_REL_PG_PRTAREA, REL_PG_PRTAREA,
+ STR_REL_CHAR, STR_REL_CHAR, LB_REL_CHAR, REL_CHAR,
+
+ STR_FLY_REL_PG_LEFT, STR_FLY_MIR_REL_PG_LEFT, LB_FLY_REL_PG_LEFT, REL_PG_LEFT,
+ STR_FLY_REL_PG_RIGHT, STR_FLY_MIR_REL_PG_RIGHT, LB_FLY_REL_PG_RIGHT, REL_PG_RIGHT,
+ STR_FLY_REL_PG_FRAME, STR_FLY_REL_PG_FRAME, LB_FLY_REL_PG_FRAME, REL_PG_FRAME,
+ STR_FLY_REL_PG_PRTAREA, STR_FLY_REL_PG_PRTAREA, LB_FLY_REL_PG_PRTAREA, REL_PG_PRTAREA,
+
+ STR_REL_BORDER, STR_REL_BORDER, LB_VERT_FRAME, FRAME,
+ STR_REL_PRTAREA, STR_REL_PRTAREA, LB_VERT_PRTAREA, PRTAREA,
+};
+
+static RelationMap __FAR_DATA aAsCharRelationMap[] =
+{
+ STR_REL_BASE, STR_REL_BASE, LB_REL_BASE, FRAME,
+ STR_REL_CHAR, STR_REL_CHAR, LB_REL_CHAR, FRAME,
+ STR_REL_ROW, STR_REL_ROW, LB_REL_ROW, FRAME,
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Seite verankert
+ --------------------------------------------------------------------*/
+
+#define HORI_PAGE_REL (LB_REL_PG_FRAME|LB_REL_PG_PRTAREA|LB_REL_PG_LEFT| \
+ LB_REL_PG_RIGHT)
+
+static FrmMap __FAR_DATA aHPageMap[] =
+{
+ STR_LEFT, STR_MIR_LEFT, HORI_LEFT, HORI_PAGE_REL,
+ STR_RIGHT, STR_MIR_RIGHT, HORI_RIGHT, HORI_PAGE_REL,
+ STR_CENTER_HORI, STR_CENTER_HORI, HORI_CENTER, HORI_PAGE_REL,
+ STR_FROMLEFT, STR_MIR_FROMLEFT, HORI_NONE, HORI_PAGE_REL
+};
+
+static FrmMap __FAR_DATA aHPageHtmlMap[] =
+{
+ STR_FROMLEFT, STR_MIR_FROMLEFT, HORI_NONE, LB_REL_PG_FRAME
+};
+
+#define VERT_PAGE_REL (LB_REL_PG_FRAME|LB_REL_PG_PRTAREA)
+
+static FrmMap __FAR_DATA aVPageMap[] =
+{
+ STR_TOP, STR_TOP, SVX_VERT_TOP, VERT_PAGE_REL,
+ STR_BOTTOM, STR_BOTTOM, SVX_VERT_BOTTOM, VERT_PAGE_REL,
+ STR_CENTER_VERT, STR_CENTER_VERT, SVX_VERT_CENTER, VERT_PAGE_REL,
+ STR_FROMTOP, STR_FROMTOP, SVX_VERT_NONE, VERT_PAGE_REL,
+};
+
+static FrmMap __FAR_DATA aVPageHtmlMap[] =
+{
+ STR_FROMTOP, STR_FROMTOP, SVX_VERT_NONE, LB_REL_PG_FRAME
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Rahmen verankert
+ --------------------------------------------------------------------*/
+
+#define HORI_FRAME_REL (LB_FLY_REL_PG_FRAME|LB_FLY_REL_PG_PRTAREA| \
+ LB_FLY_REL_PG_LEFT|LB_FLY_REL_PG_RIGHT)
+
+static FrmMap __FAR_DATA aHFrameMap[] =
+{
+ STR_LEFT, STR_MIR_LEFT, HORI_LEFT, HORI_FRAME_REL,
+ STR_RIGHT, STR_MIR_RIGHT, HORI_RIGHT, HORI_FRAME_REL,
+ STR_CENTER_HORI, STR_CENTER_HORI, HORI_CENTER, HORI_FRAME_REL,
+ STR_FROMLEFT, STR_MIR_FROMLEFT, HORI_NONE, HORI_FRAME_REL
+};
+
+static FrmMap __FAR_DATA aHFlyHtmlMap[] =
+{
+ STR_LEFT, STR_MIR_LEFT, HORI_LEFT, LB_FLY_REL_PG_FRAME,
+ STR_FROMLEFT, STR_MIR_FROMLEFT, HORI_NONE, LB_FLY_REL_PG_FRAME
+};
+
+static FrmMap __FAR_DATA aVFlyHtmlMap[] =
+{
+ STR_TOP, STR_TOP, SVX_VERT_TOP, LB_VERT_FRAME,
+ STR_FROMTOP, STR_FROMTOP, SVX_VERT_NONE, LB_VERT_FRAME
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Absatz verankert
+ --------------------------------------------------------------------*/
+
+#define HORI_PARA_REL (LB_FRAME|LB_PRTAREA|LB_REL_PG_LEFT|LB_REL_PG_RIGHT| \
+ LB_REL_PG_FRAME|LB_REL_PG_PRTAREA|LB_REL_FRM_LEFT| \
+ LB_REL_FRM_RIGHT)
+
+static FrmMap __FAR_DATA aHParaMap[] =
+{
+ STR_LEFT, STR_MIR_LEFT, HORI_LEFT, HORI_PARA_REL,
+ STR_RIGHT, STR_MIR_RIGHT, HORI_RIGHT, HORI_PARA_REL,
+ STR_CENTER_HORI, STR_CENTER_HORI, HORI_CENTER, HORI_PARA_REL,
+ STR_FROMLEFT, STR_MIR_FROMLEFT, HORI_NONE, HORI_PARA_REL
+};
+
+#define HTML_HORI_PARA_REL (LB_FRAME|LB_PRTAREA)
+
+static FrmMap __FAR_DATA aHParaHtmlMap[] =
+{
+ STR_LEFT, STR_LEFT, HORI_LEFT, HTML_HORI_PARA_REL,
+ STR_RIGHT, STR_RIGHT, HORI_RIGHT, HTML_HORI_PARA_REL,
+};
+
+static FrmMap __FAR_DATA aHParaHtmlAbsMap[] =
+{
+ STR_LEFT, STR_MIR_LEFT, HORI_LEFT, HTML_HORI_PARA_REL,
+ STR_RIGHT, STR_MIR_RIGHT, HORI_RIGHT, HTML_HORI_PARA_REL,
+};
+
+#define VERT_PARA_REL (LB_VERT_FRAME|LB_VERT_PRTAREA)
+
+static FrmMap __FAR_DATA aVParaMap[] =
+{
+ STR_TOP, STR_TOP, SVX_VERT_TOP, VERT_PARA_REL,
+ STR_BOTTOM, STR_BOTTOM, SVX_VERT_BOTTOM, VERT_PARA_REL,
+ STR_CENTER_VERT, STR_CENTER_VERT, SVX_VERT_CENTER, VERT_PARA_REL,
+ STR_FROMTOP, STR_FROMTOP, SVX_VERT_NONE, VERT_PARA_REL,
+};
+
+static FrmMap __FAR_DATA aVParaHtmlMap[] =
+{
+ STR_TOP, STR_TOP, SVX_VERT_TOP, LB_VERT_PRTAREA,
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Relativ zum Zeichen verankert
+ --------------------------------------------------------------------*/
+
+#define HORI_CHAR_REL (LB_FRAME|LB_PRTAREA|LB_REL_PG_LEFT|LB_REL_PG_RIGHT| \
+ LB_REL_PG_FRAME|LB_REL_PG_PRTAREA|LB_REL_FRM_LEFT| \
+ LB_REL_FRM_RIGHT|LB_REL_CHAR)
+
+static FrmMap __FAR_DATA aHCharMap[] =
+{
+ STR_LEFT, STR_MIR_LEFT, HORI_LEFT, HORI_CHAR_REL,
+ STR_RIGHT, STR_MIR_RIGHT, HORI_RIGHT, HORI_CHAR_REL,
+ STR_CENTER_HORI, STR_CENTER_HORI, HORI_CENTER, HORI_CHAR_REL,
+ STR_FROMLEFT, STR_MIR_FROMLEFT, HORI_NONE, HORI_CHAR_REL
+};
+
+#define HTML_HORI_CHAR_REL (LB_FRAME|LB_PRTAREA|LB_REL_CHAR)
+
+static FrmMap __FAR_DATA aHCharHtmlMap[] =
+{
+ STR_LEFT, STR_LEFT, HORI_LEFT, HTML_HORI_CHAR_REL,
+ STR_RIGHT, STR_RIGHT, HORI_RIGHT, HTML_HORI_CHAR_REL,
+};
+
+static FrmMap __FAR_DATA aHCharHtmlAbsMap[] =
+{
+ STR_LEFT, STR_MIR_LEFT, HORI_LEFT, LB_PRTAREA|LB_REL_CHAR,
+ STR_RIGHT, STR_MIR_RIGHT, HORI_RIGHT, LB_PRTAREA,
+ STR_FROMLEFT, STR_MIR_FROMLEFT, HORI_NONE, LB_REL_PG_FRAME
+};
+
+#define VERT_CHAR_REL (LB_VERT_FRAME|LB_VERT_PRTAREA|LB_REL_CHAR)
+
+static FrmMap __FAR_DATA aVCharMap[] =
+{
+ STR_TOP, STR_TOP, SVX_VERT_TOP, VERT_CHAR_REL,
+ STR_BOTTOM, STR_BOTTOM, SVX_VERT_BOTTOM, VERT_CHAR_REL,
+ STR_BELOW, STR_BELOW, SVX_VERT_CHAR_BOTTOM, LB_REL_CHAR,
+ STR_CENTER_VERT, STR_CENTER_VERT, SVX_VERT_CENTER, VERT_CHAR_REL,
+ STR_FROMTOP, STR_FROMTOP, SVX_VERT_NONE, VERT_CHAR_REL,
+};
+
+
+static FrmMap __FAR_DATA aVCharHtmlMap[] =
+{
+ STR_BELOW, STR_BELOW, SVX_VERT_CHAR_BOTTOM, LB_REL_CHAR,
+};
+
+static FrmMap __FAR_DATA aVCharHtmlAbsMap[] =
+{
+ STR_TOP, STR_TOP, SVX_VERT_TOP, LB_REL_CHAR,
+ STR_BELOW, STR_BELOW, SVX_VERT_CHAR_BOTTOM, LB_REL_CHAR
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Als Zeichen verankert
+ --------------------------------------------------------------------*/
+
+static FrmMap __FAR_DATA aVAsCharMap[] =
+{
+ STR_TOP, STR_TOP, SVX_VERT_TOP, LB_REL_BASE,
+ STR_BOTTOM, STR_BOTTOM, SVX_VERT_BOTTOM, LB_REL_BASE,
+ STR_CENTER_VERT, STR_CENTER_VERT, SVX_VERT_CENTER, LB_REL_BASE,
+
+ STR_TOP, STR_TOP, SVX_VERT_CHAR_TOP, LB_REL_CHAR,
+ STR_BOTTOM, STR_BOTTOM, SVX_VERT_CHAR_BOTTOM, LB_REL_CHAR,
+ STR_CENTER_VERT, STR_CENTER_VERT, SVX_VERT_CHAR_CENTER, LB_REL_CHAR,
+
+ STR_TOP, STR_TOP, SVX_VERT_LINE_TOP, LB_REL_ROW,
+ STR_BOTTOM, STR_BOTTOM, SVX_VERT_LINE_BOTTOM, LB_REL_ROW,
+ STR_CENTER_VERT, STR_CENTER_VERT, SVX_VERT_LINE_CENTER, LB_REL_ROW,
+
+ STR_FROMBOTTOM, STR_FROMBOTTOM, SVX_VERT_NONE, LB_REL_BASE
+};
+
+static FrmMap __FAR_DATA aVAsCharHtmlMap[] =
+{
+ STR_TOP, STR_TOP, SVX_VERT_TOP, LB_REL_BASE,
+ STR_CENTER_VERT, STR_CENTER_VERT, SVX_VERT_CENTER, LB_REL_BASE,
+
+ STR_TOP, STR_TOP, SVX_VERT_CHAR_TOP, LB_REL_CHAR,
+
+ STR_TOP, STR_TOP, SVX_VERT_LINE_TOP, LB_REL_ROW,
+ STR_BOTTOM, STR_BOTTOM, SVX_VERT_LINE_BOTTOM, LB_REL_ROW,
+ STR_CENTER_VERT, STR_CENTER_VERT, SVX_VERT_LINE_CENTER, LB_REL_ROW,
+};
+
+
+static FrmMap* pVMap = 0;
+static FrmMap* pHMap = 0;
+
+static BOOL bProtPos = FALSE;
+static BOOL bProtSize = FALSE;
+static BOOL bProtCntnt = FALSE;
+
+static const USHORT nPathLen = 30;
+
+static USHORT __FAR_DATA aPageRg[] = {
+ RES_FRM_SIZE, RES_FRM_SIZE,
+ RES_VERT_ORIENT, RES_ANCHOR,
+ RES_COL, RES_COL,
+ 0
+};
+static USHORT __FAR_DATA aAddPgRg[] = {
+ RES_PROTECT, RES_PROTECT,
+ RES_PRINT, RES_PRINT,
+ FN_SET_FRM_NAME, FN_SET_FRM_NAME,
+ FN_SET_FRM_ALT_NAME, FN_SET_FRM_ALT_NAME,
+ 0
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT lcl_GetFrmMapCount(FrmMap* pMap)
+{
+ if ( pMap )
+ {
+ int aSizeOf = sizeof(FrmMap);
+ if( pMap == aVParaHtmlMap)
+ return sizeof(aVParaHtmlMap) / aSizeOf;
+ if( pMap == aVAsCharHtmlMap)
+ return sizeof(aVAsCharHtmlMap) / aSizeOf;
+ if( pMap == aHParaHtmlMap)
+ return sizeof(aHParaHtmlMap) / aSizeOf;
+ if( pMap == aHParaHtmlAbsMap)
+ return sizeof(aHParaHtmlAbsMap) / aSizeOf;
+ if ( pMap == aVPageMap )
+ return sizeof(aVPageMap) / aSizeOf;
+ if ( pMap == aVPageHtmlMap )
+ return sizeof(aVPageHtmlMap) / aSizeOf;
+ if ( pMap == aVAsCharMap )
+ return sizeof(aVAsCharMap) / aSizeOf;
+ if ( pMap == aVParaMap )
+ return sizeof(aVParaMap) / aSizeOf;
+ if ( pMap == aHParaMap )
+ return sizeof(aHParaMap) / aSizeOf;
+ if ( pMap == aHFrameMap )
+ return sizeof(aHFrameMap) / aSizeOf;
+ if ( pMap == aHCharMap )
+ return sizeof(aHCharMap) / aSizeOf;
+ if ( pMap == aHCharHtmlMap )
+ return sizeof(aHCharHtmlMap) / aSizeOf;
+ if ( pMap == aHCharHtmlAbsMap )
+ return sizeof(aHCharHtmlAbsMap) / aSizeOf;
+ if ( pMap == aVCharMap )
+ return sizeof(aVCharMap) / aSizeOf;
+ if ( pMap == aVCharHtmlMap )
+ return sizeof(aVCharHtmlMap) / aSizeOf;
+ if ( pMap == aVCharHtmlAbsMap )
+ return sizeof(aVCharHtmlAbsMap) / aSizeOf;
+ if ( pMap == aHPageHtmlMap )
+ return sizeof(aHPageHtmlMap) / aSizeOf;
+ if ( pMap == aHFlyHtmlMap )
+ return sizeof(aHFlyHtmlMap) / aSizeOf;
+ if ( pMap == aVFlyHtmlMap )
+ return sizeof(aVFlyHtmlMap) / aSizeOf;
+ return sizeof(aHPageMap) / aSizeOf;
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+long lcl_GetTwipValue(MetricField& rMetric)
+{
+ return rMetric.Denormalize(rMetric.GetValue(FUNIT_TWIP));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void lcl_SetTwipValue(MetricField& rMetric, long nValue)
+{
+ rMetric.SetValue(rMetric.Normalize(nValue),FUNIT_TWIP);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: StandardRahmenTabPage
+ --------------------------------------------------------------------*/
+
+SwFrmPage::SwFrmPage ( Window *pParent, const SfxItemSet &rSet ) :
+ SfxTabPage (pParent, SW_RES(TP_FRM_STD), rSet),
+ aWidthFT (this, SW_RES(FT_WIDTH)),
+ aWidthED (this, SW_RES(ED_WIDTH)),
+ aRelWidthCB (this, SW_RES(CB_REL_WIDTH)),
+ aHeightFT (this, SW_RES(FT_HEIGHT)),
+ aHeightED (this, SW_RES(ED_HEIGHT)),
+ aRelHeightCB (this, SW_RES(CB_REL_HEIGHT)),
+ aAutoHeightCB (this, SW_RES(CB_AUTOHEIGHT)),
+ aFixedRatioCB (this, SW_RES(CB_FIXEDRATIO)),
+ aSizeGB (this, SW_RES(GB_SIZE)),
+
+ aAnchorTypeRB (this, SW_RES(RB_ANCHOR_TYPE)),
+ aAnchorAsCharRB (this, SW_RES(RB_ANCHOR_CHAR)),
+ aAnchorTypeLB (this, SW_RES(LB_ANCHOR_TYPE)),
+ aTypeGB (this, SW_RES(GB_TYPE)),
+
+ aHorizontalFT (this, SW_RES(FT_HORIZONTAL)),
+ aHorizontalDLB (this, SW_RES(DLB_HORIZONTAL)),
+ aAtHorzPosFT (this, SW_RES(FT_AT_HORZ_POS)),
+ aAtHorzPosED (this, SW_RES(ED_AT_HORZ_POS)),
+ aHoriRelationFT (this, SW_RES(FT_HORI_RELATION)),
+ aHoriRelationLB (this, SW_RES(LB_HORI_RELATION)),
+ aMirrorPagesCB (this, SW_RES(CB_MIRROR)),
+ aVerticalFT (this, SW_RES(FT_VERTICAL)),
+ aVerticalDLB (this, SW_RES(DLB_VERTICAL)),
+ aAtVertPosFT (this, SW_RES(FT_AT_VERT_POS)),
+ aAtVertPosED (this, SW_RES(ED_AT_VERT_POS)),
+ aVertRelationFT (this, SW_RES(FT_VERT_RELATION)),
+ aVertRelationLB (this, SW_RES(LB_VERT_RELATION)),
+ aPositionGB (this, SW_RES(GB_POSITION)),
+ aRealSizeBT (this, SW_RES(BT_REALSIZE)),
+ aExampleWN (this, SW_RES(WN_BSP)),
+ bFormat(FALSE),
+ bNew(TRUE),
+ nDlgType(0),
+ nUpperBorder(0),
+ nLowerBorder(0),
+ nOldH(HORI_CENTER),
+ nOldHRel(0),
+ nOldV(SVX_VERT_TOP),
+ nOldVRel(PRTAREA),
+ bAtHorzPosModified( FALSE ),
+ bAtVertPosModified( FALSE ),
+ bWidthLastChanged ( TRUE ),
+ nHtmlMode(0),
+ bHtmlMode(FALSE),
+ bNoModifyHdl(TRUE)
+{
+ FreeResource();
+ SetExchangeSupport();
+
+ Link aLk = LINK(this, SwFrmPage, RangeModifyHdl);
+ aWidthED. SetLoseFocusHdl( aLk );
+ aHeightED. SetLoseFocusHdl( aLk );
+ aAtHorzPosED.SetLoseFocusHdl( aLk );
+ aAtVertPosED.SetLoseFocusHdl( aLk );
+
+ aLk = LINK(this, SwFrmPage, ModifyHdl);
+ aWidthED. SetModifyHdl( aLk );
+ aHeightED. SetModifyHdl( aLk );
+ aAtHorzPosED.SetModifyHdl( aLk );
+ aAtVertPosED.SetModifyHdl( aLk );
+
+ aLk = LINK(this, SwFrmPage, TypHdl);
+ aAnchorTypeRB.SetClickHdl( aLk );
+ aAnchorAsCharRB.SetClickHdl( aLk );
+ aAnchorTypeLB.SetSelectHdl( aLk );
+ aAnchorTypeLB.SelectEntryPos(0);
+ aAnchorTypeLB.SetEntryData(0, (void*)FLY_PAGE);
+ aAnchorTypeLB.SetEntryData(1, (void*)FLY_AT_CNTNT);
+ aAnchorTypeLB.SetEntryData(2, (void*)FLY_AUTO_CNTNT);
+ aAnchorTypeLB.SetEntryData(3, (void*)FLY_AT_FLY);
+
+ aHorizontalDLB.SetSelectHdl(LINK(this, SwFrmPage, PosHdl));
+ aVerticalDLB. SetSelectHdl(LINK(this, SwFrmPage, PosHdl));
+
+ aHoriRelationLB.SetSelectHdl(LINK(this, SwFrmPage, RelHdl));
+ aVertRelationLB.SetSelectHdl(LINK(this, SwFrmPage, RelHdl));
+
+ aMirrorPagesCB.SetClickHdl(LINK(this, SwFrmPage, MirrorHdl));
+
+ aLk = LINK(this, SwFrmPage, RelSizeClickHdl);
+ aRelWidthCB.SetClickHdl( aLk );
+ aRelHeightCB.SetClickHdl( aLk );
+
+ aFixedRatioCB.SetClickHdl(LINK(this, SwFrmPage, AspectRatioCheckHdl));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Dtor
+ --------------------------------------------------------------------*/
+
+SwFrmPage::~SwFrmPage()
+{
+}
+
+SfxTabPage* SwFrmPage::Create(Window *pParent, const SfxItemSet &rSet)
+{
+ return new SwFrmPage( pParent, rSet );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFrmPage::Reset( const SfxItemSet &rSet )
+{
+
+ SwWrtShell* pSh = bFormat ? ::GetActiveWrtShell() :
+ ((SwFrmDlg*)GetParent()->GetParent())->GetWrtShell();
+
+ nHtmlMode = ::GetHtmlMode(pSh->GetView().GetDocShell());
+ bHtmlMode = nHtmlMode & HTMLMODE_ON ? TRUE : FALSE;
+
+ FieldUnit aMetric = ::GetDfltMetric(bHtmlMode);
+ SetMetric( aWidthED, aMetric );
+ SetMetric( aHeightED, aMetric );
+ SetMetric( aAtHorzPosED, aMetric );
+ SetMetric( aAtVertPosED, aMetric );
+
+
+ const SwFmtAnchor& rAnchor = (const SwFmtAnchor&)rSet.Get(RES_ANCHOR);
+
+ if (bFormat)
+ {
+ // Bei Formaten keine Ankerbearbeitung
+ aAnchorTypeRB.Enable( FALSE );
+ aAnchorTypeLB.Enable( FALSE );
+ aAnchorAsCharRB.Enable( FALSE );
+ aTypeGB.Enable( FALSE );
+ aFixedRatioCB.Enable(FALSE);
+ }
+ else if (rAnchor.GetAnchorId() != FLY_AT_FLY && !pSh->IsFlyInFly())
+ aAnchorTypeLB.RemoveEntry(3);
+
+ if ( nDlgType == DLG_FRM_GRF || nDlgType == DLG_FRM_OLE )
+ {
+ ASSERT(pSh , "shell not found");
+ const SfxPoolItem* pItem;
+ //OS: nur fuer die Variante Einfuegen/Grafik/Eigenschaften
+ if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_GRF_REALSIZE, FALSE, &pItem))
+ aGrfSize = ((const SvxSizeItem*)pItem)->GetSize();
+ else
+ pSh->GetGrfSize( aGrfSize );
+
+ if ( !bNew )
+ {
+ aRealSizeBT.Show();
+ aRealSizeBT.SetClickHdl(LINK(this, SwFrmPage, RealSizeHdl));
+ }
+ else
+ aTypeGB.SetSizePixel(Size(aTypeGB.GetSizePixel().Width(), aSizeGB.GetSizePixel().Height()));
+
+ if ( nDlgType == DLG_FRM_GRF )
+ aFixedRatioCB.Check( FALSE );
+ else
+ {
+ if ( bNew )
+ SetText( SW_RESSTR(STR_OLE_INSERT));
+ else
+ SetText( SW_RESSTR(STR_OLE_EDIT));
+ }
+ }
+ else
+ {
+ aTypeGB.SetSizePixel(Size(aTypeGB.GetSizePixel().Width(), aSizeGB.GetSizePixel().Height()));
+ aGrfSize = ((const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE)).GetSize();
+ }
+
+ //Prozenteingabe ermoeglichen.
+ aWidthED. SetBaseValue( aWidthED.Normalize(aGrfSize.Width()), FUNIT_TWIP );
+ aHeightED.SetBaseValue( aHeightED.Normalize(aGrfSize.Height()), FUNIT_TWIP );
+
+ // Allgemeiner Initialisierungteil
+ USHORT nPos = 0;
+ if (rAnchor.GetAnchorId() == FLY_IN_CNTNT)
+ aAnchorAsCharRB.Check();
+ else
+ {
+ aAnchorTypeRB.Check();
+
+ while ((USHORT)(ULONG)aAnchorTypeLB.GetEntryData(nPos) != rAnchor.GetAnchorId())
+ nPos++;
+ aAnchorTypeLB.SelectEntryPos(nPos);
+ }
+
+ if(bHtmlMode)
+ {
+ if(nDlgType == DLG_FRM_STD &&
+ 0 == (nHtmlMode & HTMLMODE_FULL_ABS_POS))
+ {
+ aHeightFT .Enable( FALSE );
+ aHeightED .Enable( FALSE );
+ aRelHeightCB.Enable( FALSE );
+ }
+ if( 0 == (nHtmlMode & HTMLMODE_SOME_ABS_POS))
+ {
+ if (GetAnchor() == FLY_PAGE )
+ {
+ nPos = 0;
+ while ((USHORT)(ULONG)aAnchorTypeLB.GetEntryData(nPos) != FLY_AT_CNTNT)
+ nPos++;
+ aAnchorTypeLB.SelectEntryPos(nPos);
+ }
+ aAnchorTypeLB.RemoveEntry(0);
+ }
+ aAutoHeightCB.Enable(FALSE);
+ aMirrorPagesCB.Show(FALSE);
+ if(nDlgType == DLG_FRM_STD)
+ aFixedRatioCB.Enable(FALSE);
+ }
+
+ Init( rSet, TRUE );
+ aAtVertPosED.SaveValue();
+ aAtHorzPosED.SaveValue();
+
+ bNoModifyHdl = FALSE;
+ RangeModifyHdl(&aWidthED); // Alle Maximalwerte initial setzen
+
+ aAutoHeightCB.SaveValue();
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Attribute in den Set stopfen bei OK
+ --------------------------------------------------------------------*/
+
+BOOL SwFrmPage::FillItemSet(SfxItemSet &rSet)
+{
+ BOOL bRet = FALSE;
+ SwWrtShell* pSh = bFormat ? ::GetActiveWrtShell()
+ : ((SwFrmDlg*)GetParent()->GetParent())->GetWrtShell();
+ ASSERT( pSh , "shell not found");
+ const SfxItemSet& rOldSet = GetItemSet();
+ const SfxPoolItem* pOldItem = 0;
+
+ RndStdIds eAnchorId = (RndStdIds)GetAnchor();
+
+ if ( !bFormat )
+ {
+ pOldItem = GetOldItem(rSet, RES_ANCHOR);
+ if (bNew || !pOldItem || eAnchorId != ((const SwFmtAnchor*)pOldItem)->GetAnchorId())
+ {
+ SwFmtAnchor aAnc( eAnchorId, pSh->GetPhyPageNum() );
+ bRet = 0 != rSet.Put( aAnc );
+ }
+ }
+
+ if ( pHMap )
+ {
+ SwFmtHoriOrient aHoriOrient( (const SwFmtHoriOrient&)
+ rOldSet.Get(RES_HORI_ORIENT) );
+
+ USHORT nMapPos = GetMapPos(pHMap, aHorizontalDLB);
+ USHORT nAlign = GetAlignment(pHMap, nMapPos, aHorizontalDLB, aHoriRelationLB);
+ USHORT nRel = GetRelation(pHMap, aHoriRelationLB);
+
+ const SwHoriOrient eHOri = (SwHoriOrient)nAlign;
+ const SwRelationOrient eRel = (SwRelationOrient)nRel;
+
+ aHoriOrient.SetHoriOrient( eHOri );
+ aHoriOrient.SetRelationOrient( eRel );
+ aHoriOrient.SetPosToggle(aMirrorPagesCB.IsChecked());
+
+ BOOL bMod = aAtHorzPosED.GetText() != aAtHorzPosED.GetSavedValue();
+ bMod |= aMirrorPagesCB.GetState() != aMirrorPagesCB.GetSavedValue();
+
+ if ( eHOri == HORI_NONE &&
+ (bNew || (bAtHorzPosModified || bMod) || nOldH != eHOri ) )
+ {
+ SwTwips nX = aAtHorzPosED.Denormalize(aAtHorzPosED.GetValue(FUNIT_TWIP));
+ aHoriOrient.SetPos( nX );
+ }
+
+ pOldItem = GetOldItem(rSet, FN_HORI_ORIENT);
+ BOOL bSame = FALSE;
+ if ((bNew == bFormat) && pOldItem)
+ {
+ bSame = bFormat ?
+ aHoriOrient.GetHoriOrient() == ((SwFmtHoriOrient*)pOldItem)->GetHoriOrient() &&
+ aHoriOrient.GetRelationOrient() == ((SwFmtHoriOrient*)pOldItem)->GetRelationOrient() &&
+ aHoriOrient.GetPos() == ((SwFmtHoriOrient*)pOldItem)->GetPos()
+
+ : aHoriOrient == (SwFmtHoriOrient&)*pOldItem;
+ }
+ if ((bNew && !bFormat) || ((bAtHorzPosModified || bMod) && !bSame))
+ {
+ bRet |= 0 != rSet.Put( aHoriOrient );
+ }
+ }
+
+ if ( pVMap )
+ {
+ // Ausrichtung Vertikal
+ SwFmtVertOrient aVertOrient( (const SwFmtVertOrient&)
+ rOldSet.Get(RES_VERT_ORIENT) );
+
+ USHORT nMapPos = GetMapPos(pVMap, aVerticalDLB);
+ USHORT nAlign = GetAlignment(pVMap, nMapPos, aVerticalDLB, aVertRelationLB);
+ USHORT nRel = GetRelation(pVMap, aVertRelationLB);
+
+ const SvxFrameVertOrient eVOri = (SvxFrameVertOrient)nAlign;
+ const SwRelationOrient eRel = (SwRelationOrient)nRel;
+
+ aVertOrient.SetVertOrient ( (SwVertOrient)eVOri);
+ aVertOrient.SetRelationOrient( eRel );
+
+ BOOL bMod = aAtVertPosED.GetText() != aAtVertPosED.GetSavedValue();
+
+ if ( eVOri == SVX_VERT_NONE &&
+ ( bNew || (bAtVertPosModified || bMod) || nOldV != eVOri) )
+ {
+ // Vertikale Position
+ // fuer zeichengebundene Rahmen Offset umrechenen
+ SwTwips nY = aAtVertPosED.Denormalize(aAtVertPosED.GetValue(FUNIT_TWIP));
+ if (eAnchorId == FLY_IN_CNTNT)
+ nY *= -1;
+ aVertOrient.SetPos( nY );
+ }
+ pOldItem = GetOldItem(rSet, FN_VERT_ORIENT);
+ BOOL bSame = FALSE;
+ if((bNew == bFormat) && pOldItem)
+ {
+ bSame = bFormat ?
+ aVertOrient.GetVertOrient() == ((SwFmtVertOrient*)pOldItem)->GetVertOrient() &&
+ aVertOrient.GetRelationOrient() == ((SwFmtVertOrient*)pOldItem)->GetRelationOrient() &&
+ aVertOrient.GetPos() == ((SwFmtVertOrient*)pOldItem)->GetPos()
+
+ : aVertOrient == (SwFmtVertOrient&)*pOldItem;
+ }
+ if( ( bNew && !bFormat ) || ((bAtVertPosModified || bMod) && !bSame ))
+ {
+ bRet |= 0 != rSet.Put( aVertOrient );
+ }
+ }
+
+ //Size setzen
+ //Neuer Sonderfall: Ist die Groesse von pMgr(0, 0), so werden die
+ //Eigenschaften fuer eine Grafik festgelegt, die noch gar nicht geladen
+ //ist. Dann wird hier kein SetSize() gemacht, wenn die
+ //Groesseneinstellungen vom Anwender nicht veraendert wurden.
+ const SwFmtFrmSize& rOldSize = (const SwFmtFrmSize& )rOldSet.Get(RES_FRM_SIZE);
+ SwFmtFrmSize aSz( rOldSize );
+
+/* // Folgende Zeilen nur zum debuggen:
+ BOOL bModified = aWidthED.IsValueModified();
+ USHORT nOldWidth = rOldSize.GetWidth ();
+ USHORT nWidth = aWidthED .GetValue();
+ USHORT nMinWidth = aWidthED .GetMin();*/
+
+ BOOL bValueModified = (aWidthED.IsValueModified() || aHeightED.IsValueModified());
+ BOOL bCheckChanged = (aRelWidthCB.GetSavedValue() != aRelWidthCB.IsChecked()
+ || aRelHeightCB.GetSavedValue() != aRelHeightCB.IsChecked());
+
+ BOOL bLegalValue = !(!rOldSize.GetWidth () && !rOldSize.GetHeight() &&
+ aWidthED .GetValue() == aWidthED .GetMin() &&
+ aHeightED.GetValue() == aHeightED.GetMin());
+
+ if ((bNew && !bFormat) || (bValueModified || bCheckChanged) && bLegalValue)
+ {
+ long nNewWidth = aWidthED.Denormalize (aWidthED.GetRealValue(FUNIT_TWIP));
+ long nNewHeight = aHeightED.Denormalize(aHeightED.GetRealValue(FUNIT_TWIP));
+ aSz.SetWidth (nNewWidth);
+ aSz.SetHeight(nNewHeight);
+
+ if (aRelWidthCB.IsChecked())
+ {
+ aSz.SetWidthPercent((BYTE)Min(100L, aWidthED.Convert(aWidthED.Normalize(nNewWidth), FUNIT_TWIP, FUNIT_CUSTOM)));
+ }
+ else
+ aSz.SetWidthPercent(0);
+ if (aRelHeightCB.IsChecked())
+ aSz.SetHeightPercent((BYTE)Min(100L, aHeightED.Convert(aHeightED.Normalize(nNewHeight), FUNIT_TWIP, FUNIT_CUSTOM)));
+ else
+ aSz.SetHeightPercent(0);
+
+ if (aFixedRatioCB.IsChecked() && (aRelWidthCB.IsChecked() ^ aRelHeightCB.IsChecked()))
+ {
+ if (aRelWidthCB.IsChecked())
+ aSz.SetHeightPercent(0xff);
+ else
+ aSz.SetWidthPercent(0xff);
+ }
+ }
+ if ( nDlgType != DLG_FRM_GRF )
+ {
+ if (aAutoHeightCB.GetState() != aAutoHeightCB.GetSavedValue())
+ {
+ SwFrmSize eFrmSize = (SwFrmSize) aAutoHeightCB.IsChecked() ?
+ ATT_MIN_SIZE : ATT_FIX_SIZE;
+ if(eFrmSize != aSz.GetSizeType())
+ {
+ aSz.SetSizeType(eFrmSize);
+ }
+ }
+ }
+ if( !bFormat && aFixedRatioCB.GetSavedValue() != aFixedRatioCB.IsChecked())
+ bRet |= 0 != rSet.Put(SfxBoolItem(FN_KEEP_ASPECT_RATIO, aFixedRatioCB.IsChecked()));
+
+ pOldItem = GetOldItem(rSet, RES_FRM_SIZE);
+
+ if ((pOldItem && aSz != *pOldItem) || (!pOldItem && !bFormat) ||
+ (bFormat &&
+ (aSz.GetWidth() > 0 || aSz.GetWidthPercent() > 0) &&
+ (aSz.GetHeight() > 0 || aSz.GetHeightPercent() > 0)))
+ {
+ if (aSz.GetSizeType() == ATT_VAR_SIZE) // VAR_SIZE gibts nicht bei Rahmen
+ aSz.SetSizeType(ATT_MIN_SIZE); // Bug #45776 (Vorlagen ohne Breite/Hoehe)
+
+ bRet |= 0 != rSet.Put( aSz );
+ }
+
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Horizontale und vertikale Pos initialisieren
+ --------------------------------------------------------------------*/
+
+void SwFrmPage::InitPos(USHORT nId,
+ USHORT nH,
+ USHORT nHRel,
+ USHORT nV,
+ USHORT nVRel,
+ long nX,
+ long nY)
+{
+ USHORT nPos = aVerticalDLB.GetSelectEntryPos();
+ if ( nPos != LISTBOX_ENTRY_NOTFOUND && pVMap )
+ {
+ nOldV = pVMap[nPos].nAlign;
+
+ nPos = aVertRelationLB.GetSelectEntryPos();
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ nOldVRel = ((RelationMap *)aVertRelationLB.GetEntryData(nPos))->nRelation;
+ }
+
+ nPos = aHorizontalDLB.GetSelectEntryPos();
+ if ( nPos != LISTBOX_ENTRY_NOTFOUND && pHMap )
+ {
+ nOldH = pHMap[nPos].nAlign;
+
+ nPos = aHoriRelationLB.GetSelectEntryPos();
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ nOldHRel = ((RelationMap *)aHoriRelationLB.GetEntryData(nPos))->nRelation;
+ }
+
+ BOOL bEnable = TRUE;
+ if ( nId == FLY_PAGE )
+ {
+ pVMap = bHtmlMode ? aVPageHtmlMap : aVPageMap;
+ pHMap = bHtmlMode ? aHPageHtmlMap : aHPageMap;
+ }
+ else if ( nId == FLY_AT_FLY )
+ {
+ pVMap = bHtmlMode ? aVFlyHtmlMap : aVParaMap;
+ pHMap = bHtmlMode ? aHFlyHtmlMap : aHFrameMap;
+ }
+ else if ( nId == FLY_AT_CNTNT )
+ {
+ if(bHtmlMode)
+ {
+ pVMap = aVParaHtmlMap;
+ pHMap = nHtmlMode & HTMLMODE_SOME_ABS_POS ? aHParaHtmlAbsMap : aHParaHtmlMap;
+ }
+ else
+ {
+ pVMap = aVParaMap;
+ pHMap = aHParaMap;
+ }
+ }
+ else if ( nId == FLY_AUTO_CNTNT )
+ {
+ if(bHtmlMode)
+ {
+ pVMap = nHtmlMode & HTMLMODE_SOME_ABS_POS ? aVCharHtmlAbsMap : aVCharHtmlMap;
+ pHMap = nHtmlMode & HTMLMODE_SOME_ABS_POS ? aHCharHtmlAbsMap : aHCharHtmlMap;
+ }
+ else
+ {
+ pVMap = aVCharMap;
+ pHMap = aHCharMap;
+ }
+ }
+ else if ( nId == FLY_IN_CNTNT )
+ {
+ pVMap = bHtmlMode ? aVAsCharHtmlMap : aVAsCharMap;
+ pHMap = 0;
+ bEnable = FALSE;
+ }
+ aHorizontalDLB.Enable( bEnable );
+ aHorizontalFT.Enable( bEnable );
+
+ // aktuelle Pos selektieren
+ // Horizontal
+ if ( nH == USHRT_MAX )
+ {
+ nH = nOldH;
+ nHRel = nOldHRel;
+ }
+ USHORT nMapPos = FillPosLB(pHMap, nH, aHorizontalDLB);
+ FillRelLB(pHMap, nMapPos, nH, nHRel, aHoriRelationLB);
+
+ // Vertikal
+ if ( nV == USHRT_MAX )
+ {
+ nV = nOldV;
+ nVRel = nOldVRel;
+ }
+ nMapPos = FillPosLB(pVMap, nV, aVerticalDLB);
+ FillRelLB(pVMap, nMapPos, nV, nVRel, aVertRelationLB);
+
+ // Edits init
+ bEnable = nH == HORI_NONE && nId != FLY_IN_CNTNT;//#61359# warum nicht in Formaten&& !bFormat;
+ if (!bEnable)
+ {
+ aAtHorzPosED.SetValue( 0, FUNIT_TWIP );
+ if (nX != LONG_MAX && bHtmlMode)
+ aAtHorzPosED.SetModifyFlag();
+ }
+ else
+ {
+ if (nX != LONG_MAX)
+ aAtHorzPosED.SetValue( aAtHorzPosED.Normalize(nX), FUNIT_TWIP );
+ }
+ aAtHorzPosFT.Enable( bEnable );
+ aAtHorzPosED.Enable( bEnable );
+
+ bEnable = nV == SVX_VERT_NONE && !bFormat;
+ if ( !bEnable )
+ {
+ aAtVertPosED.SetValue( 0, FUNIT_TWIP );
+ if(nY != LONG_MAX && bHtmlMode)
+ aAtVertPosED.SetModifyFlag();
+ }
+ else
+ {
+ if ( nId == FLY_IN_CNTNT )
+ {
+ if ( nY == LONG_MAX )
+ nY = 0;
+ else
+ nY *= -1;
+ }
+ if ( nY != LONG_MAX )
+ aAtVertPosED.SetValue( aAtVertPosED.Normalize(nY), FUNIT_TWIP );
+ }
+ aAtVertPosFT.Enable( bEnable );
+ aAtVertPosED.Enable( bEnable );
+ UpdateExample();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFrmPage::FillPosLB(FrmMap *pMap, USHORT nAlign, ListBox &rLB)
+{
+ String sSelEntry, sOldEntry;
+ sOldEntry = rLB.GetSelectEntry();
+
+ rLB.Clear();
+
+ // Listbox fuellen
+ USHORT nCount = ::lcl_GetFrmMapCount(pMap);
+ for (USHORT i = 0; pMap && i < nCount; ++i)
+ {
+// #61359# Warum nicht von links/von innen bzw. von oben?
+// if (!bFormat || (pMap[i].nStrId != STR_FROMLEFT && pMap[i].nStrId != STR_FROMTOP))
+ {
+ USHORT nResId = aMirrorPagesCB.IsChecked() ? pMap[i].nMirrorStrId : pMap[i].nStrId;
+ String sEntry(SW_RES(nResId));
+ sEntry.EraseAllChars( '~' );
+ if (rLB.GetEntryPos(sEntry) == LISTBOX_ENTRY_NOTFOUND)
+ // bei zeichengebundenen Rahmen keine doppelten Eintraege einfuegen
+ rLB.InsertEntry(sEntry);
+ if (nAlign == pMap[i].nAlign)
+ sSelEntry = sEntry;
+ }
+ }
+
+ rLB.SelectEntry(sSelEntry);
+ if (!rLB.GetSelectEntryCount())
+ rLB.SelectEntry(sOldEntry);
+
+ if (!rLB.GetSelectEntryCount())
+ rLB.SelectEntryPos(0);
+
+ PosHdl(&rLB);
+
+ return GetMapPos(pMap, rLB);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+ULONG SwFrmPage::FillRelLB(FrmMap *pMap, USHORT nMapPos, USHORT nAlign, USHORT nRel, ListBox &rLB)
+{
+ String sSelEntry;
+ ULONG nLBRelations = 0;
+ USHORT nMapCount = ::lcl_GetFrmMapCount(pMap);
+
+ rLB.Clear();
+
+ if (nMapPos < nMapCount)
+ {
+ if (pMap == aVAsCharHtmlMap || pMap == aVAsCharMap)
+ {
+ String sOldEntry(rLB.GetSelectEntry());
+ USHORT nRelCount = sizeof(aAsCharRelationMap) / sizeof(RelationMap);
+ USHORT nStrId = pMap[nMapPos].nStrId;
+
+ for (USHORT nMapPos = 0; nMapPos < nMapCount; nMapPos++)
+ {
+ if (pMap[nMapPos].nStrId == nStrId)
+ {
+ nLBRelations = pMap[nMapPos].nLBRelations;
+ for (USHORT nRelPos = 0; nRelPos < nRelCount; nRelPos++)
+ {
+ if (nLBRelations & aAsCharRelationMap[nRelPos].nLBRelation)
+ {
+ USHORT nResId = aAsCharRelationMap[nRelPos].nStrId;
+
+ String sEntry(SW_RES(nResId));
+ USHORT nPos = rLB.InsertEntry(sEntry);
+ rLB.SetEntryData(nPos, &aAsCharRelationMap[nRelPos]);
+ if (pMap[nMapPos].nAlign == nAlign)
+ sSelEntry = sEntry;
+ break;
+ }
+ }
+ }
+ }
+ if (sSelEntry.Len())
+ rLB.SelectEntry(sSelEntry);
+ else
+ {
+ rLB.SelectEntry(sOldEntry);
+
+ if (!rLB.GetSelectEntryCount())
+ {
+ for (USHORT i = 0; i < rLB.GetEntryCount(); i++)
+ {
+ RelationMap *pEntry = (RelationMap *)rLB.GetEntryData(i);
+ if (pEntry->nLBRelation == LB_REL_CHAR) // Default
+ {
+ rLB.SelectEntryPos(i);
+ break;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ USHORT nRelCount = sizeof(aRelationMap) / sizeof(RelationMap);
+
+ nLBRelations = pMap[nMapPos].nLBRelations;
+
+ for (ULONG nBit = 1; nBit < 0x80000000; nBit <<= 1)
+ {
+ if (nLBRelations & nBit)
+ {
+ for (USHORT nRelPos = 0; nRelPos < nRelCount; nRelPos++)
+ {
+ if (aRelationMap[nRelPos].nLBRelation == nBit)
+ {
+ USHORT nResId = aMirrorPagesCB.IsChecked() ? aRelationMap[nRelPos].nMirrorStrId : aRelationMap[nRelPos].nStrId;
+ String sEntry(SW_RES(nResId));
+ USHORT nPos = rLB.InsertEntry(sEntry);
+ rLB.SetEntryData(nPos, &aRelationMap[nRelPos]);
+ if (!sSelEntry.Len() && aRelationMap[nRelPos].nRelation == nRel)
+ sSelEntry = sEntry;
+ }
+ }
+ }
+ }
+ if (sSelEntry.Len())
+ rLB.SelectEntry(sSelEntry);
+ else
+ {
+ // Warscheinlich Ankerwechsel. Daher aehnliche Relation suchen
+ switch (nRel)
+ {
+ case FRAME: nRel = REL_PG_FRAME; break;
+ case PRTAREA: nRel = REL_PG_PRTAREA; break;
+ case REL_PG_LEFT: nRel = REL_FRM_LEFT; break;
+ case REL_PG_RIGHT: nRel = REL_FRM_RIGHT; break;
+ case REL_FRM_LEFT: nRel = REL_PG_LEFT; break;
+ case REL_FRM_RIGHT: nRel = REL_PG_RIGHT; break;
+ case REL_PG_FRAME: nRel = FRAME; break;
+ case REL_PG_PRTAREA: nRel = PRTAREA; break;
+
+ default:
+ if (rLB.GetEntryCount())
+ {
+ RelationMap *pEntry = (RelationMap *)rLB.GetEntryData(rLB.GetEntryCount() - 1);
+ nRel = pEntry->nRelation;
+ }
+ break;
+ }
+
+ for (USHORT i = 0; i < rLB.GetEntryCount(); i++)
+ {
+ RelationMap *pEntry = (RelationMap *)rLB.GetEntryData(i);
+ if (pEntry->nRelation == nRel)
+ {
+ rLB.SelectEntryPos(i);
+ break;
+ }
+ }
+
+ if (!rLB.GetSelectEntryCount())
+ rLB.SelectEntryPos(0);
+ }
+ }
+ }
+
+ rLB.Enable(rLB.GetEntryCount() != 0);
+
+ RelHdl(&rLB);
+
+ return nLBRelations;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFrmPage::GetRelation(FrmMap *pMap, ListBox &rRelationLB)
+{
+ USHORT nRel = 0;
+ USHORT nPos = rRelationLB.GetSelectEntryPos();
+
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ RelationMap *pEntry = (RelationMap *)rRelationLB.GetEntryData(nPos);
+ nRel = pEntry->nRelation;
+ }
+
+ return nRel;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFrmPage::GetAlignment(FrmMap *pMap, USHORT nMapPos, ListBox &rAlignLB, ListBox &rRelationLB)
+{
+ USHORT nAlign = 0;
+
+ if (pMap == aVAsCharHtmlMap || pMap == aVAsCharMap)
+ {
+ if (rRelationLB.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND)
+ {
+ ULONG nRel = ((RelationMap *)rRelationLB.GetEntryData(rRelationLB.GetSelectEntryPos()))->nLBRelation;
+ USHORT nMapCount = ::lcl_GetFrmMapCount(pMap);
+ USHORT nStrId = pMap[nMapPos].nStrId;
+
+ for (USHORT i = 0; i < nMapCount; i++)
+ {
+ if (pMap[i].nStrId == nStrId)
+ {
+ ULONG nLBRelations = pMap[i].nLBRelations;
+ if (nLBRelations & nRel)
+ {
+ nAlign = pMap[i].nAlign;
+ break;
+ }
+ }
+ }
+ }
+ }
+ else if (pMap)
+ nAlign = pMap[nMapPos].nAlign;
+
+ return nAlign;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFrmPage::GetMapPos(FrmMap *pMap, ListBox &rAlignLB)
+{
+ USHORT nMapPos = 0;
+ USHORT nLBSelPos = rAlignLB.GetSelectEntryPos();
+
+ if (nLBSelPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ if (pMap == aVAsCharHtmlMap || pMap == aVAsCharMap)
+ {
+ USHORT nMapCount = ::lcl_GetFrmMapCount(pMap);
+ String sSelEntry(rAlignLB.GetSelectEntry());
+
+ for (USHORT i = 0; i < nMapCount; i++)
+ {
+ USHORT nResId = pMap[i].nStrId;
+
+ String sEntry(SW_RES(nResId));
+ sEntry.EraseAllChars( '~' );
+
+ if (sEntry == sSelEntry)
+ {
+ nMapPos = i;
+ break;
+ }
+ }
+ }
+ else
+ nMapPos = nLBSelPos;
+ }
+
+ return nMapPos;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFrmPage::GetAnchor()
+{
+ if (aAnchorTypeRB.IsChecked())
+ return (USHORT)(ULONG)aAnchorTypeLB.GetEntryData(aAnchorTypeLB.GetSelectEntryPos());
+ else
+ return FLY_IN_CNTNT;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Bsp - Update
+ --------------------------------------------------------------------*/
+
+void SwFrmPage::ActivatePage(const SfxItemSet& rSet)
+{
+ bNoModifyHdl = TRUE;
+ Init(rSet);
+ bNoModifyHdl = FALSE;
+ RangeModifyHdl(&aWidthED); // Alle Maximalwerte initial setzen
+}
+
+int SwFrmPage::DeactivatePage(SfxItemSet * pSet)
+{
+ if ( pSet )
+ {
+ FillItemSet( *pSet );
+
+ //FillItemSet setzt den Anker nicht in den Set, wenn er mit dem
+ //Original uebereinstimmt. Fuer die anderen Pages brauchen wir aber
+ //den aktuellen Anker.
+ SwWrtShell* pSh = bFormat ? ::GetActiveWrtShell()
+ : ((SwFrmDlg*)GetParent()->GetParent())->GetWrtShell();
+ RndStdIds eAnchorId = (RndStdIds)GetAnchor();
+ SwFmtAnchor aAnc( eAnchorId, pSh->GetPhyPageNum() );
+ pSet->Put( aAnc );
+ }
+
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Links/rechts mit Innen/aussen tauschen
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFrmPage, MirrorHdl, CheckBox *, pBtn )
+{
+ USHORT nId = GetAnchor();
+ InitPos( nId, USHRT_MAX, 0, USHRT_MAX, 0, LONG_MAX, LONG_MAX);
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFrmPage, RelSizeClickHdl, CheckBox *, pBtn )
+{
+ if (pBtn == &aRelWidthCB)
+ aWidthED.ShowPercent(pBtn->IsChecked());
+ else
+ aHeightED.ShowPercent(pBtn->IsChecked());
+
+ if (pBtn) // Nur wenn Handler durch Aenderung des Controllers gerufen wurde
+ RangeModifyHdl(&aWidthED); // Werte wieder korrigieren
+
+ if (pBtn == &aRelWidthCB)
+ ModifyHdl(&aWidthED);
+ else
+ ModifyHdl(&aHeightED);
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Bereichspruefung
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFrmPage, RangeModifyHdl, Edit *, pEdit )
+{
+ if (bNoModifyHdl)
+ return 0;
+
+ SwWrtShell* pSh = bFormat ? ::GetActiveWrtShell()
+ :((SwFrmDlg*)GetParent()->GetParent())->GetWrtShell();
+ ASSERT(pSh , "shell not found");
+ SwFlyFrmAttrMgr aMgr( bNew, pSh, (const SwAttrSet&)GetItemSet() );
+ SwFrmValid aVal;
+
+ aVal.eArea = (RndStdIds)GetAnchor();
+ aVal.bAuto = aAutoHeightCB.IsChecked();
+ aVal.bMirror = aMirrorPagesCB.IsChecked();
+
+ if ( pHMap )
+ {
+ // Ausrichtung Horizontal
+ USHORT nMapPos = GetMapPos(pHMap, aHorizontalDLB);
+ USHORT nAlign = GetAlignment(pHMap, nMapPos, aHorizontalDLB, aHoriRelationLB);
+ USHORT nRel = GetRelation(pHMap, aHoriRelationLB);
+
+ aVal.eHori = (SwHoriOrient)nAlign;
+ aVal.eHRel = (SwRelationOrient)nRel;
+ }
+ else
+ aVal.eHori = HORI_NONE;
+
+ if ( pVMap )
+ {
+ // Ausrichtung Vertikal
+ USHORT nMapPos = GetMapPos(pVMap, aVerticalDLB);
+ USHORT nAlign = GetAlignment(pVMap, nMapPos, aVerticalDLB, aVertRelationLB);
+ USHORT nRel = GetRelation(pVMap, aVertRelationLB);
+
+ aVal.eVert = (SvxFrameVertOrient)nAlign;
+ aVal.eVRel = (SwRelationOrient)nRel;
+ }
+ else
+ aVal.eVert = SVX_VERT_NONE;
+
+ const long nAtHorzPosVal =
+ aAtHorzPosED.Denormalize(aAtHorzPosED.GetValue(FUNIT_TWIP));
+ const long nAtVertPosVal =
+ aAtVertPosED.Denormalize(aAtVertPosED.GetValue(FUNIT_TWIP));
+
+ aVal.nHPos = nAtHorzPosVal;
+ aVal.nVPos = nAtVertPosVal;
+
+ aMgr.ValidateMetrics(aVal, TRUE); // Einmal, um Referenzwerte fuer prozentuale Werte zu erhalten
+
+ // Referenzwerte fuer fuer Prozentwerte setzen (100%) ...
+ aWidthED.SetRefValue(aVal.aPercentSize.Width());
+ aHeightED.SetRefValue(aVal.aPercentSize.Height());
+
+ // ... und damit Breite und Hoehe korrekt umrechnen
+ SwTwips nWidth = aWidthED. Denormalize(aWidthED.GetValue(FUNIT_TWIP));
+ SwTwips nHeight = aHeightED.Denormalize(aHeightED.GetValue(FUNIT_TWIP));
+ aVal.nWidth = nWidth;
+ aVal.nHeight = nHeight;
+
+ aMgr.ValidateMetrics(aVal); // Nochmal um mit korrekter Breite und Hoehe alle restlichen Werte zu ermitteln
+
+ // alle Spalten muessen passen
+ if(GetTabDialog()->GetExampleSet() &&
+ SFX_ITEM_DEFAULT <= GetTabDialog()->GetExampleSet()->GetItemState(RES_COL))
+ {
+ const SwFmtCol& rCol = (const SwFmtCol&)GetTabDialog()->GetExampleSet()->Get(RES_COL);
+ if ( rCol.GetColumns().Count() > 1 )
+ {
+ for ( USHORT i = 0; i < rCol.GetColumns().Count(); ++i )
+ {
+ aVal.nMinWidth += rCol.GetColumns()[i]->GetLeft() +
+ rCol.GetColumns()[i]->GetRight() +
+ MINFLY;
+ }
+ aVal.nMinWidth -= MINFLY;//einen hatten wir schon mit drin!
+ }
+ }
+
+ nWidth = aVal.nWidth;
+ nHeight = aVal.nHeight;
+
+ // Mindestbreite auch fuer Vorlage
+ aHeightED.SetMin(aHeightED.Normalize(aVal.nMinHeight), FUNIT_TWIP);
+ aWidthED. SetMin(aWidthED.Normalize(aVal.nMinWidth), FUNIT_TWIP);
+
+ SwTwips nMaxWidth(aVal.nMaxWidth);
+ SwTwips nMaxHeight(aVal.nMaxHeight);
+
+ if (aVal.bAuto && (nDlgType == DLG_FRM_GRF || nDlgType == DLG_FRM_OLE))
+ {
+ SwTwips nTmp = Min(nWidth * nMaxHeight / Max(nHeight, 1L), nMaxHeight);
+ aWidthED.SetMax(aWidthED.Normalize(nTmp), FUNIT_TWIP);
+
+ nTmp = Min(nHeight * nMaxWidth / Max(nWidth, 1L), nMaxWidth);
+ aHeightED.SetMax(aWidthED.Normalize(nTmp), FUNIT_TWIP);
+ }
+ else
+ {
+ SwTwips nTmp = aHeightED.Normalize(nMaxHeight);
+ aHeightED.SetMax(nTmp, FUNIT_TWIP);
+
+ nTmp = aWidthED.Normalize(nMaxWidth);
+ aWidthED.SetMax(nTmp, FUNIT_TWIP);
+ }
+
+ aAtHorzPosED.SetMin(aAtHorzPosED.Normalize(aVal.nMinHPos), FUNIT_TWIP);
+ aAtHorzPosED.SetMax(aAtHorzPosED.Normalize(aVal.nMaxHPos), FUNIT_TWIP);
+ if ( aVal.nHPos != nAtHorzPosVal )
+ aAtHorzPosED.SetValue(aAtHorzPosED.Normalize(aVal.nHPos), FUNIT_TWIP);
+
+ SwTwips nUpperOffset = aVal.eArea == FLY_IN_CNTNT ? nUpperBorder : 0;
+ SwTwips nLowerOffset = aVal.eArea == FLY_IN_CNTNT ? nLowerBorder : 0;
+
+ aAtVertPosED.SetMin(aAtVertPosED.Normalize(aVal.nMinVPos + nLowerOffset + nUpperOffset), FUNIT_TWIP);
+ aAtVertPosED.SetMax(aAtVertPosED.Normalize(aVal.nMaxVPos), FUNIT_TWIP);
+ if ( aVal.nVPos != nAtVertPosVal )
+ aAtVertPosED.SetValue(aAtVertPosED.Normalize(aVal.nVPos), FUNIT_TWIP);
+
+ if (pEdit == &aWidthED)
+ bWidthLastChanged = TRUE;
+ else if (pEdit == &aHeightED)
+ bWidthLastChanged = FALSE;
+ return 0;
+}
+
+IMPL_LINK( SwFrmPage, TypHdl, ListBox *, pLB )
+{
+ if (pLB == &aAnchorTypeLB)
+ aAnchorTypeRB.Check();
+
+ aMirrorPagesCB.Enable(aAnchorTypeRB.IsChecked());
+
+ USHORT nId = GetAnchor();
+
+ InitPos( nId, USHRT_MAX, 0, USHRT_MAX, 0, LONG_MAX, LONG_MAX);
+ if (pLB) // Nur wenn Handler durch Aenderung des Controllers gerufen wurde
+ RangeModifyHdl(0);
+
+ if(bHtmlMode)
+ {
+ PosHdl(&aHorizontalDLB);
+ PosHdl(&aVerticalDLB);
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFrmPage, PosHdl, ListBox *, pLB )
+{
+ BOOL bHori = pLB == &aHorizontalDLB;
+ ListBox *pRelLB = bHori ? &aHoriRelationLB : &aVertRelationLB;
+ FrmMap *pMap = bHori ? pHMap : pVMap;
+
+ USHORT nLBSelPos = pLB->GetSelectEntryPos();
+ //BOOL bEnable = nLBSelPos == pLB->GetEntryCount()-1 && !bFormat;
+
+ USHORT nMapPos = GetMapPos(pMap, *pLB);
+ USHORT nAlign = GetAlignment(pMap, nMapPos, *pLB, *pRelLB);
+
+ if (bHori)
+ {
+ BOOL bEnable = HORI_NONE == nAlign && !bFormat;
+ aAtHorzPosED.Enable( bEnable );
+ aAtHorzPosFT.Enable( bEnable );
+ }
+ else
+ {
+ BOOL bEnable = SVX_VERT_NONE == nAlign && !bFormat;
+ aAtVertPosED.Enable( bEnable );
+ aAtVertPosFT.Enable( bEnable );
+ }
+
+ if (pLB) // Nur wenn Handler durch Aenderung des Controllers gerufen wurde
+ RangeModifyHdl( 0 );
+
+ USHORT nRel = 0;
+ if (pLB->GetSelectEntryCount())
+ {
+
+ if (pRelLB->GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND)
+ nRel = ((RelationMap *)pRelLB->GetEntryData(pRelLB->GetSelectEntryPos()))->nRelation;
+
+ FillRelLB(pMap, nMapPos, nAlign, nRel, *pRelLB);
+ }
+ else
+ pRelLB->Clear();
+
+ UpdateExample();
+
+ if (bHori)
+ bAtHorzPosModified = TRUE;
+ else
+ bAtVertPosModified = TRUE;
+
+ // Sonderbehandlung fuer HTML-Mode mit horz-vert-Abhaengigkeiten
+ if(bHtmlMode && nHtmlMode&HTMLMODE_SOME_ABS_POS &&
+ FLY_AUTO_CNTNT == GetAnchor())
+ {
+ BOOL bSet = FALSE;
+ if(bHori)
+ {
+ // rechts ist nur unterhalb erlaubt - von links nur oben
+ // von links am Zeichen -> unterhalb
+ if((HORI_LEFT == nAlign || HORI_RIGHT == nAlign) &&
+ 0 == aVerticalDLB.GetSelectEntryPos())
+ {
+ if(FRAME == nRel)
+ aVerticalDLB.SelectEntryPos(1);
+ else
+ aVerticalDLB.SelectEntryPos(0);
+ bSet = TRUE;
+ }
+ else if(HORI_LEFT == nAlign && 1 == aVerticalDLB.GetSelectEntryPos())
+ {
+ aVerticalDLB.SelectEntryPos(0);
+ bSet = TRUE;
+ }
+ else if(HORI_NONE == nAlign && 1 == aVerticalDLB.GetSelectEntryPos())
+ {
+ aVerticalDLB.SelectEntryPos(0);
+ bSet = TRUE;
+ }
+ if(bSet)
+ PosHdl(&aVerticalDLB);
+ }
+ else
+ {
+ if(SVX_VERT_TOP == nAlign)
+ {
+ if(1 == aHorizontalDLB.GetSelectEntryPos())
+ {
+ aHorizontalDLB.SelectEntryPos(0);
+ bSet = TRUE;
+ }
+ aHoriRelationLB.SelectEntryPos(1);
+ }
+ else if(SVX_VERT_CHAR_BOTTOM == nAlign)
+ {
+ if(2 == aHorizontalDLB.GetSelectEntryPos())
+ {
+ aHorizontalDLB.SelectEntryPos(0);
+ bSet = TRUE;
+ }
+ aHoriRelationLB.SelectEntryPos(0) ;
+ }
+ if(bSet)
+ PosHdl(&aHorizontalDLB);
+ }
+
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Horizontale Pos
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFrmPage, RelHdl, ListBox *, pLB )
+{
+ BOOL bHori = pLB == &aHoriRelationLB;
+
+ UpdateExample();
+
+ if (bHori)
+ bAtHorzPosModified = TRUE;
+ else
+ bAtVertPosModified = TRUE;
+
+ if (!bHori && pVMap == aVCharMap)
+ {
+ // Ausrichtung Vertikal
+ String sEntry;
+ USHORT nMapPos = GetMapPos(pVMap, aVerticalDLB);
+ USHORT nAlign = GetAlignment(pVMap, nMapPos, aVerticalDLB, aVertRelationLB);
+ USHORT nRel = GetRelation(pVMap, aVertRelationLB);
+
+ if (nRel == REL_CHAR)
+ sEntry = SW_RESSTR(STR_FROMBOTTOM);
+ else
+ sEntry = SW_RESSTR(STR_FROMTOP);
+
+ USHORT nOldPos = aVerticalDLB.GetSelectEntryPos();
+
+ String sName = aVerticalDLB.GetEntry(aVerticalDLB.GetEntryCount() - 1);
+ if (sName != sEntry)
+ {
+ aVerticalDLB.RemoveEntry(aVerticalDLB.GetEntryCount() - 1);
+ aVerticalDLB.InsertEntry(sEntry);
+ aVerticalDLB.SelectEntryPos(nOldPos);
+ }
+ }
+ if(bHtmlMode && FLY_AUTO_CNTNT == GetAnchor()) // wieder Sonderbehandlung
+ {
+ if(bHori)
+ {
+ USHORT nRel = GetRelation(pHMap, aHoriRelationLB);
+ if(PRTAREA == nRel && 0 == aVerticalDLB.GetSelectEntryPos())
+ {
+ aVerticalDLB.SelectEntryPos(1);
+ }
+ else if(REL_CHAR == nRel && 1 == aVerticalDLB.GetSelectEntryPos())
+ {
+ aVerticalDLB.SelectEntryPos(0);
+ }
+ }
+ }
+ if (pLB) // Nur wenn Handler durch Aenderung des Controllers gerufen wurde
+ RangeModifyHdl(0);
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFrmPage, AspectRatioCheckHdl, CheckBox *, pCB )
+{
+ if ( aFixedRatioCB.IsChecked() &&
+ (aWidthED.IsValueModified() || aHeightED.IsValueModified()) &&
+ nDlgType != DLG_FRM_GRF || (aGrfSize.Width() && aGrfSize.Height()) )
+ {
+ if (!aRelWidthCB.IsChecked() && !aRelHeightCB.IsChecked())
+ {
+ if (bWidthLastChanged)
+ {
+ SwTwips nHFac = aGrfSize.Height() * 1000 / aGrfSize.Width();
+ SwTwips nTmp;
+ if ( aWidthED.IsValueModified() )
+ nTmp = aWidthED.Denormalize(aWidthED.GetValue(FUNIT_TWIP));
+ else
+ { //Rundungsfehler vermeiden
+ const SwFmtFrmSize &rSz = (const SwFmtFrmSize&)GetItemSet().
+ Get(RES_FRM_SIZE);
+ nTmp = rSz.GetWidth();
+ }
+ nTmp = nTmp * nHFac / 1000;
+ aHeightED.SetUserValue(aHeightED.Normalize(nTmp), FUNIT_TWIP);
+ }
+ else
+ {
+ SwTwips nVFac = aGrfSize.Width() * 1000 / aGrfSize.Height();
+ SwTwips nTmp;
+ if ( aHeightED.IsValueModified() )
+ nTmp = aHeightED.Denormalize(aHeightED.GetValue(FUNIT_TWIP));
+ else
+ { //Rundungsfehler vermeiden
+ const SwFmtFrmSize &rSz = (const SwFmtFrmSize&)GetItemSet().
+ Get(RES_FRM_SIZE);
+ nTmp = rSz.GetHeight();
+ }
+ nTmp = nTmp * nVFac / 1000;
+ aWidthED.SetUserValue(aWidthED.Normalize(nTmp), FUNIT_TWIP);
+ }
+ }
+ UpdateExample();
+ }
+
+ if (pCB) // Nur wenn Handler durch Aenderung des Controllers gerufen wurde
+ RangeModifyHdl(&aWidthED); // Alle Maximalwerte neu initialisieren
+
+ return 0;
+}
+
+IMPL_LINK_INLINE_START( SwFrmPage, RealSizeHdl, Button *, EMPTYARG )
+{
+ aWidthED.SetUserValue( aWidthED. Normalize(aGrfSize.Width() ), FUNIT_TWIP);
+ aHeightED.SetUserValue(aHeightED.Normalize(aGrfSize.Height()), FUNIT_TWIP);
+ UpdateExample();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwFrmPage, RealSizeHdl, Button *, EMPTYARG )
+
+IMPL_LINK_INLINE_START( SwFrmPage, ManualHdl, Button *, EMPTYARG )
+{
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwFrmPage, ManualHdl, Button *, EMPTYARG )
+
+IMPL_LINK( SwFrmPage, ModifyHdl, Edit *, pEdit )
+{
+ if (pEdit == &aWidthED)
+ bWidthLastChanged = TRUE;
+ else if (pEdit == &aHeightED)
+ bWidthLastChanged = FALSE;
+
+ if ( aFixedRatioCB.IsChecked() )
+ {
+ BOOL bWidthRelative = aRelWidthCB.IsChecked();
+ BOOL bHeightRelative = aRelHeightCB.IsChecked();
+ if ( pEdit == &aWidthED )
+ {
+ const SwTwips nTmp = aHeightED.Normalize(aGrfSize.Height() *
+ aWidthED.Denormalize(aWidthED.GetValue(FUNIT_TWIP)) /
+ Max(aGrfSize.Width(), 1L));
+ const SwTwips nMaxHeight = bHeightRelative ?
+ aHeightED.GetRefValue() * ( aHeightED.GetOldDigits() == 1 ? 10 : 100):
+ aHeightED.GetMax(FUNIT_TWIP);
+ if(nMaxHeight >= nTmp)
+ aHeightED.SetValue(nTmp, FUNIT_TWIP);
+ else
+ {
+ //cut selected width
+ const SwTwips nNewWidth = aWidthED.Normalize(aGrfSize.Width() *
+ aHeightED.Denormalize(nMaxHeight) /
+ Max(aGrfSize.Height(),1L));
+ aWidthED.SetUserValue(nNewWidth, FUNIT_TWIP);
+ //aHeightED.SetValue(nMaxHeight, FUNIT_TWIP);
+ aHeightED.SetUserValue(nMaxHeight, FUNIT_TWIP);
+
+ }
+ }
+ else
+ {
+ const SwTwips nTmp = aWidthED.Normalize(aGrfSize.Width() *
+ aHeightED.Denormalize(aHeightED.GetValue(FUNIT_TWIP)) /
+ Max(aGrfSize.Height(),1L));
+ const SwTwips nMaxWidth = bWidthRelative ?
+ aWidthED.GetRefValue() * (aWidthED.GetOldDigits()== 1 ? 10 : 100):
+ aWidthED.GetMax(FUNIT_TWIP);
+ if(nMaxWidth >= nTmp)
+ aWidthED.SetValue(nTmp, FUNIT_TWIP);
+ else
+ {
+ //cut selected height
+ const SwTwips nNewHeight = aHeightED.Normalize(aGrfSize.Height() *
+ aWidthED.Denormalize(nMaxWidth) /
+ Max(aGrfSize.Width(),1L));
+ aHeightED.SetUserValue(nNewHeight, FUNIT_TWIP);
+ //aWidthED.SetValue(nMaxWidth, FUNIT_TWIP);
+ aWidthED.SetUserValue(nMaxWidth, FUNIT_TWIP);
+
+ }
+ }
+ }
+
+ UpdateExample();
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFrmPage::UpdateExample()
+{
+ USHORT nPos = aHorizontalDLB.GetSelectEntryPos();
+ if ( pHMap && nPos != LISTBOX_ENTRY_NOTFOUND )
+ {
+ USHORT nMapPos = GetMapPos(pHMap, aHorizontalDLB);
+ USHORT nAlign = GetAlignment(pHMap, nMapPos, aHorizontalDLB, aHoriRelationLB);
+ USHORT nRel = GetRelation(pHMap, aHoriRelationLB);
+
+ aExampleWN.SetHAlign(nAlign);
+ aExampleWN.SetHoriRel(nRel);
+ }
+
+ nPos = aVerticalDLB.GetSelectEntryPos();
+ if ( pVMap && nPos != LISTBOX_ENTRY_NOTFOUND )
+ {
+ USHORT nMapPos = GetMapPos(pVMap, aVerticalDLB);
+ USHORT nAlign = GetAlignment(pVMap, nMapPos, aVerticalDLB, aVertRelationLB);
+ USHORT nRel = GetRelation(pVMap, aVertRelationLB);
+
+ aExampleWN.SetVAlign(nAlign);
+ aExampleWN.SetVertRel(nRel);
+ }
+
+ // Size
+ long nXPos = aAtHorzPosED.Denormalize(aAtHorzPosED.GetValue(FUNIT_TWIP));
+ long nYPos = aAtVertPosED.Denormalize(aAtVertPosED.GetValue(FUNIT_TWIP));
+ aExampleWN.SetRelPos(Point(nXPos, nYPos));
+
+ RndStdIds eAnchorId = (RndStdIds)GetAnchor();
+ aExampleWN.SetAnchor( eAnchorId );
+ aExampleWN.Invalidate();
+}
+
+void SwFrmPage::Init(const SfxItemSet& rSet, BOOL bReset)
+{
+ if(!bFormat)
+ {
+ SwWrtShell* pSh = ((SwFrmDlg*)GetParent()->GetParent())->GetWrtShell();
+
+ // Size
+ const FASTBOOL bSizeFixed = pSh->IsSelObjProtected( FLYPROTECT_FIXED );
+
+ aWidthED .Enable( !bSizeFixed );
+ aHeightED.Enable( !bSizeFixed );
+ }
+
+ const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE);
+ long nWidth = aWidthED.Normalize(rSize.GetWidth());
+ long nHeight = aHeightED.Normalize(rSize.GetHeight());
+
+ if (nWidth != aWidthED.GetValue(FUNIT_TWIP))
+ {
+ if(!bReset)
+ {
+ // Wert wurde von Umlauf-Tabpage geaendert und muss
+ // mit Modify-Flag gesetzt werden
+ aWidthED.SetUserValue(nWidth, FUNIT_TWIP);
+ }
+ else
+ aWidthED.SetValue(nWidth, FUNIT_TWIP);
+ }
+
+ if (nHeight != aHeightED.GetValue(FUNIT_TWIP))
+ {
+ if (!bReset)
+ {
+ // Wert wurde von Umlauf-Tabpage geaendert und muss
+ // mit Modify-Flag gesetzt werden
+ aHeightED.SetUserValue(nHeight, FUNIT_TWIP);
+ }
+ else
+ aHeightED.SetValue(nHeight, FUNIT_TWIP);
+ }
+
+ if (nDlgType != DLG_FRM_GRF && nDlgType != DLG_FRM_OLE)
+ {
+ aAutoHeightCB.Check(rSize.GetSizeType() != ATT_FIX_SIZE);
+ if ( !bFormat )
+ {
+ SwWrtShell* pSh = ((SwFrmDlg*)GetParent()->GetParent())->GetWrtShell();
+ const SwFrmFmt* pFmt = pSh->GetFlyFrmFmt();
+ if( pFmt && pFmt->GetChain().GetNext() )
+ aAutoHeightCB.Enable( FALSE );
+ }
+ }
+ else
+ aAutoHeightCB.Hide();
+
+ // Umlauf-Abstand fuer zeichengebundene Rahmen organisieren
+ const SvxULSpaceItem &rUL = (const SvxULSpaceItem &)rSet.Get(RES_UL_SPACE);
+ nUpperBorder = rUL.GetUpper();
+ nLowerBorder = rUL.GetLower();
+
+ if(SFX_ITEM_SET == rSet.GetItemState(FN_KEEP_ASPECT_RATIO))
+ {
+ aFixedRatioCB.Check(((const SfxBoolItem&)rSet.Get(FN_KEEP_ASPECT_RATIO)).GetValue());
+ aFixedRatioCB.SaveValue();
+ }
+
+ // Spalten
+ SwFmtCol aCol( (const SwFmtCol&)rSet.Get(RES_COL) );
+ ::FitToActualSize( aCol, (USHORT)rSize.GetWidth() );
+
+ RndStdIds eAnchorId = (RndStdIds)GetAnchor();
+
+ if ( bNew && !bFormat )
+ InitPos (eAnchorId, USHRT_MAX, 0, USHRT_MAX, USHRT_MAX, LONG_MAX, LONG_MAX);
+ else
+ {
+ const SwFmtHoriOrient& rHori = (const SwFmtHoriOrient&)rSet.Get(RES_HORI_ORIENT);
+ const SwFmtVertOrient& rVert = (const SwFmtVertOrient&)rSet.Get(RES_VERT_ORIENT);
+ nOldH = rHori.GetHoriOrient();
+ nOldHRel = rHori.GetRelationOrient();
+ nOldV = rVert.GetVertOrient(),
+ nOldVRel = rVert.GetRelationOrient();
+
+ if (eAnchorId == FLY_PAGE)
+ {
+ if (nOldHRel == FRAME)
+ nOldHRel = REL_PG_FRAME;
+ else if (nOldHRel == PRTAREA)
+ nOldHRel = REL_PG_PRTAREA;
+ if (nOldVRel == FRAME)
+ nOldVRel = REL_PG_FRAME;
+ else if (nOldVRel == PRTAREA)
+ nOldVRel = REL_PG_PRTAREA;
+ }
+
+ aMirrorPagesCB.Check(rHori.IsPosToggle());
+ aMirrorPagesCB.SaveValue();
+
+ InitPos(eAnchorId,
+ nOldH,
+ nOldHRel,
+ nOldV,
+ nOldVRel,
+ rHori.GetPos(),
+ rVert.GetPos());
+ }
+
+ // Transparent fuers Bsp
+ // Umlauf fuers Bsp
+ const SwFmtSurround& rSurround = (const SwFmtSurround&)rSet.Get(RES_SURROUND);
+ aExampleWN.SetWrap ( rSurround.GetSurround() );
+
+ if ( rSurround.GetSurround() == SURROUND_THROUGHT )
+ {
+ const SvxOpaqueItem& rOpaque = (const SvxOpaqueItem&)rSet.Get(RES_OPAQUE);
+ aExampleWN.SetTransparent(!rOpaque.GetValue());
+ }
+
+ // ggf auf Prozent umschalten
+ RangeModifyHdl(&aWidthED); // Referenzwerte setzen (fuer 100%)
+
+ if (rSize.GetWidthPercent() == 0xff || rSize.GetHeightPercent() == 0xff)
+ aFixedRatioCB.Check(TRUE);
+ if (rSize.GetWidthPercent() && rSize.GetWidthPercent() != 0xff &&
+ !aRelWidthCB.IsChecked())
+ {
+ aRelWidthCB.Check(TRUE);
+ RelSizeClickHdl(&aRelWidthCB);
+ aWidthED.SetValue(rSize.GetWidthPercent(), FUNIT_CUSTOM);
+ }
+ if (rSize.GetHeightPercent() && rSize.GetHeightPercent() != 0xff &&
+ !aRelHeightCB.IsChecked())
+ {
+ aRelHeightCB.Check(TRUE);
+ RelSizeClickHdl(&aRelHeightCB);
+ aHeightED.SetValue(rSize.GetHeightPercent(), FUNIT_CUSTOM);
+ }
+ aRelWidthCB.SaveValue();
+ aRelHeightCB.SaveValue();
+}
+
+USHORT* SwFrmPage::GetRanges()
+{
+ return aPageRg;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwGrfExtPage::SwGrfExtPage(Window *pParent, const SfxItemSet &rSet) :
+ SfxTabPage( pParent, SW_RES(TP_GRF_EXT), rSet ),
+ aBmpWin (this, WN_BMP, Graphic(), Bitmap(BMP_EXAMPLE) ),
+ aConnectGB (this, SW_RES( GB_CONNECT )),
+ aConnectFT (this, SW_RES( FT_CONNECT )),
+ aConnectED (this, SW_RES( ED_CONNECT )),
+ aBrowseBT (this, SW_RES( PB_BROWSE )),
+ aMirrorVertBox (this, SW_RES( CB_VERT )),
+ aMirrorHorzBox (this, SW_RES( CB_HOR )),
+// aMirrorPagesLB (this, SW_RES( LB_MIRROR_PAGES )),
+// aMirrorPagesFT (this, SW_RES( FT_MIRROR_PAGES )),
+ aAllPagesRB( this, SW_RES( RB_MIRROR_ALL_PAGES )),
+ aLeftPagesRB( this, SW_RES( RB_MIRROR_LEFT_PAGES )),
+ aRightPagesRB( this, SW_RES( RB_MIRROR_RIGHT_PAGES )),
+
+ aMirrorFrm (this, SW_RES( GB_MIRROR )),
+ pGrfDlg( 0 )
+{
+ FreeResource();
+ SetExchangeSupport();
+ aMirrorHorzBox.SetClickHdl( LINK(this, SwGrfExtPage, MirrorHdl));
+ aMirrorVertBox.SetClickHdl( LINK(this, SwGrfExtPage, MirrorHdl));
+ aBrowseBT.SetClickHdl ( LINK(this, SwGrfExtPage, BrowseHdl));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwGrfExtPage::~SwGrfExtPage()
+{
+ delete pGrfDlg;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxTabPage* SwGrfExtPage::Create( Window *pParent, const SfxItemSet &rSet )
+{
+ return new SwGrfExtPage( pParent, rSet );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwGrfExtPage::Reset(const SfxItemSet &rSet)
+{
+ const SfxPoolItem* pItem;
+ USHORT nHtmlMode = ::GetHtmlMode((const SwDocShell*)SfxObjectShell::Current());
+ bHtmlMode = nHtmlMode & HTMLMODE_ON ? TRUE : FALSE;
+
+ if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_GRF_CONNECT, TRUE, &pItem)
+ && ((const SfxBoolItem *)pItem)->GetValue() )
+ {
+ aBrowseBT.Enable();
+ aConnectED.SetReadOnly(FALSE);
+ }
+
+ ActivatePage(rSet);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwGrfExtPage::ActivatePage(const SfxItemSet& rSet)
+{
+ const SvxProtectItem& rProt = (const SvxProtectItem& )rSet.Get(RES_PROTECT);
+ bProtCntnt = rProt.IsCntntProtected();
+
+ const SfxPoolItem* pItem = 0;
+ BOOL bEnable = FALSE;
+ BOOL bEnableMirrorRB = FALSE;
+
+ SfxItemState eState = rSet.GetItemState(RES_GRFATR_MIRRORGRF, TRUE, &pItem);
+ if( SFX_ITEM_UNKNOWN != eState && !bProtCntnt && !bHtmlMode )
+ {
+ if( SFX_ITEM_SET != eState )
+ pItem = &rSet.Get( RES_GRFATR_MIRRORGRF );
+
+ bEnable = TRUE;
+
+ USHORT eMirror = (GRFMIRROR) ((const SwMirrorGrf* )pItem)->GetValue();
+ switch( eMirror )
+ {
+ case RES_DONT_MIRROR_GRF: break;
+ case RES_MIRROR_GRF_VERT: aMirrorHorzBox.Check(TRUE); break;
+ case RES_MIRROR_GRF_HOR: aMirrorVertBox.Check(TRUE); break;
+ case RES_MIRROR_GRF_BOTH: aMirrorHorzBox.Check(TRUE);
+ aMirrorVertBox.Check(TRUE);
+ break;
+ }
+
+ USHORT nPos = ((const SwMirrorGrf* )pItem)->IsGrfToggle() ? 1 : 0;
+ nPos += (eMirror == RES_MIRROR_GRF_VERT || eMirror == RES_MIRROR_GRF_BOTH)
+ ? 2 : 0;
+
+ bEnableMirrorRB = nPos != 0;
+
+ switch (nPos)
+ {
+ case 1: // Auf linken bzw geraden Seiten spiegeln
+ aLeftPagesRB.Check();
+ aMirrorHorzBox.Check(TRUE);
+ break;
+ case 2: // Auf allen Seiten spiegeln
+ aAllPagesRB.Check();
+ break;
+ case 3: // Auf rechten bzw ungeraden Seiten spiegeln
+ aRightPagesRB.Check();
+ break;
+ default:
+ aAllPagesRB.Check();
+ break;
+ }
+ }
+
+ if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_GRAF_GRAPHIC, FALSE, &pItem ) )
+ {
+ const SvxBrushItem& rBrush = *(SvxBrushItem*)pItem;
+ if( rBrush.GetGraphicLink() )
+ {
+ aGrfName = aNewGrfName = *rBrush.GetGraphicLink();
+ aConnectED.SetText( aNewGrfName );
+ }
+ const Graphic* pGrf = rBrush.GetGraphic();
+ if( pGrf )
+ aBmpWin.SetGraphic( *pGrf );
+ }
+
+ aAllPagesRB .Enable(bEnableMirrorRB);
+ aLeftPagesRB.Enable(bEnableMirrorRB);
+ aRightPagesRB.Enable(bEnableMirrorRB);
+ aMirrorHorzBox.Enable(bEnable);
+ aMirrorVertBox.Enable(bEnable);
+ aMirrorFrm.Enable(bEnable);
+
+ aAllPagesRB .SaveValue();
+ aLeftPagesRB.SaveValue();
+ aRightPagesRB.SaveValue();
+ aMirrorHorzBox.SaveValue();
+ aMirrorVertBox.SaveValue();
+
+ aBmpWin.MirrorHorz( aMirrorVertBox.IsChecked() );
+ aBmpWin.MirrorVert( aMirrorHorzBox.IsChecked() );
+ aBmpWin.Invalidate();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+BOOL SwGrfExtPage::FillItemSet( SfxItemSet &rSet )
+{
+ BOOL bModified = FALSE;
+ if ( aMirrorHorzBox.GetSavedValue() != aMirrorHorzBox.IsChecked() ||
+ aMirrorVertBox.GetSavedValue() != aMirrorVertBox.IsChecked() ||
+ aAllPagesRB .GetSavedValue() != aAllPagesRB .IsChecked() ||
+ aLeftPagesRB.GetSavedValue() != aLeftPagesRB.IsChecked() ||
+ aRightPagesRB.GetSavedValue() != aRightPagesRB.IsChecked())
+ {
+ bModified = TRUE;
+
+ BOOL bHori = FALSE;
+
+ if (aMirrorHorzBox.IsChecked() &&
+ !aLeftPagesRB.IsChecked())
+ bHori = TRUE;
+
+ GRFMIRROR eMirror;
+ eMirror = aMirrorVertBox.IsChecked() && bHori ?
+ RES_MIRROR_GRF_BOTH : bHori ?
+ RES_MIRROR_GRF_VERT : aMirrorVertBox.IsChecked() ?
+ RES_MIRROR_GRF_HOR : RES_DONT_MIRROR_GRF;
+
+ BOOL bMirror = !aAllPagesRB.IsChecked();
+ SwMirrorGrf aMirror( eMirror );
+ aMirror.SetGrfToggle(bMirror );
+ rSet.Put( aMirror );
+ }
+
+ if( aGrfName != aNewGrfName || aConnectED.IsModified() )
+ {
+ bModified = TRUE;
+ aGrfName = aConnectED.GetText();
+ rSet.Put( SvxBrushItem( aGrfName, aFilterName, GPOS_LT,
+ SID_ATTR_GRAF_GRAPHIC ));
+ }
+ return bModified;
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+int SwGrfExtPage::DeactivatePage(SfxItemSet *pSet)
+{
+ if( pSet )
+ FillItemSet( *pSet );
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwGrfExtPage, BrowseHdl, Button *, EMPTYARG )
+{
+ if(!pGrfDlg)
+ pGrfDlg = new SvxImportGraphicDialog( this,
+ SW_RESSTR(STR_EDIT_GRF), ENABLE_STANDARD );
+ pGrfDlg->SetPath( aConnectED.GetText(), FALSE, TRUE );
+
+ if ( pGrfDlg->Execute() == RET_OK )
+ { // ausgewaehlten Filter merken
+ aFilterName = pGrfDlg->GetCurFilter();
+ aNewGrfName = INetURLObject::decode( pGrfDlg->GetPath(),
+ INET_HEX_ESCAPE,
+ INetURLObject::DECODE_WITH_CHARSET,
+ RTL_TEXTENCODING_UTF8 );
+ aConnectED.SetModifyFlag();
+ aConnectED.SetText( aNewGrfName );
+ //Spiegeln zuruecksetzen, da u. U. eine Bitmap
+ //gegen eine andere Art von Grafik ausgetauscht worden ist,
+ //die nicht gespiegelt werden kann.
+ aMirrorVertBox.Check(FALSE);
+ aMirrorHorzBox.Check(FALSE);
+ aAllPagesRB .Enable(FALSE);
+ aLeftPagesRB.Enable(FALSE);
+ aRightPagesRB.Enable(FALSE);
+ aBmpWin.MirrorHorz(FALSE);
+ aBmpWin.MirrorVert(FALSE);
+ BOOL bEnable = FALSE;
+ Graphic* pGrf = pGrfDlg->GetGraphic();
+ if(pGrf)
+ {
+ aBmpWin.SetGraphic(*pGrf);
+
+ if( GRAPHIC_BITMAP == pGrf->GetType() ||
+ GRAPHIC_GDIMETAFILE == pGrf->GetType())
+ bEnable = TRUE;
+ }
+ aMirrorVertBox.Enable(bEnable);
+ aMirrorHorzBox.Enable(bEnable);
+ aAllPagesRB .Enable(bEnable);
+ aLeftPagesRB.Enable(bEnable);
+ aRightPagesRB.Enable(bEnable);
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwGrfExtPage, MirrorHdl, CheckBox *, EMPTYARG )
+{
+ BOOL bHori = FALSE;
+ BOOL bEnable = aMirrorHorzBox.IsChecked();
+
+ aBmpWin.MirrorHorz( aMirrorVertBox.IsChecked() );
+ aBmpWin.MirrorVert( bEnable );
+
+ aAllPagesRB .Enable(bEnable);
+ aLeftPagesRB.Enable(bEnable);
+ aRightPagesRB.Enable(bEnable);
+
+ if (!aAllPagesRB.IsChecked() && !aLeftPagesRB.IsChecked() && !aRightPagesRB.IsChecked())
+ aAllPagesRB.Check();
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: BeispielWindow
+ --------------------------------------------------------------------*/
+
+BmpWindow::BmpWindow(Window* pPar, USHORT nId,
+ const Graphic& rGraphic, const Bitmap& rBmp) :
+ Window(pPar, SW_RES(nId)),
+ aGraphic(rGraphic),
+ aBmp(rBmp),
+ bHorz(FALSE),
+ bVert(FALSE),
+ bGraphic(FALSE),
+ bLeftAlign(FALSE)
+{
+}
+
+void BmpWindow::Paint( const Rectangle& )
+{
+ Point aPntPos;
+ Size aPntSz( GetSizePixel() );
+ Size aGrfSize;
+ if(bGraphic)
+ aGrfSize = ::GetGraphicSizeTwip(aGraphic, this);
+ else
+ aGrfSize = PixelToLogic(aBmp.GetSizePixel());
+
+ // u.U. ist nichts gesetzt
+ if(aGrfSize.Width() && aGrfSize.Height())
+ {
+ long nRelGrf = aGrfSize.Width() * 100L / aGrfSize.Height();
+ long nRelWin = aPntSz.Width() * 100L / aPntSz.Height();
+ if(nRelGrf < nRelWin)
+ {
+ const long nWidth = aPntSz.Width();
+ aPntSz.Width() = aPntSz.Height() * nRelGrf /100;
+ if(!bLeftAlign)
+ aPntPos.X() += nWidth - aPntSz.Width() ;
+ }
+
+ if ( bHorz )
+ {
+ aPntPos.Y() += aPntSz.Height();
+ aPntPos.Y() --;
+ aPntSz.Height() *= -1;
+ }
+ if ( bVert )
+ {
+ aPntPos.X() += aPntSz.Width();
+ aPntPos.X()--;
+ aPntSz.Width() *= -1;
+ }
+ if(bGraphic)
+ aGraphic.Draw(this, aPntPos, aPntSz);
+ else
+ DrawBitmap( aPntPos, aPntSz, aBmp );
+ }
+}
+
+BmpWindow::~BmpWindow()
+{
+}
+
+/***************************************************************************
+ Beschreibung: URL und ImageMap an Rahmen einstellen
+***************************************************************************/
+
+
+SwFrmURLPage::SwFrmURLPage( Window *pParent, const SfxItemSet &rSet ) :
+ SfxTabPage(pParent, SW_RES(TP_FRM_URL), rSet),
+ aHyperLinkGB (this, SW_RES( GB_HYPERLINK )),
+ aURLFT (this, SW_RES( FT_URL )),
+ aURLED (this, SW_RES( ED_URL )),
+ aNameFT (this, SW_RES( FT_NAME )),
+ aNameED (this, SW_RES( ED_NAME )),
+ aFrameFT (this, SW_RES( FT_FRAME )),
+ aFrameCB (this, SW_RES( CB_FRAME )),
+ aSearchPB (this, SW_RES( PB_SEARCH )),
+ aImageGB (this, SW_RES( GB_IMAGE )),
+ aServerCB (this, SW_RES( CB_SERVER )),
+ aClientCB (this, SW_RES( CB_CLIENT ))
+{
+ FreeResource();
+ aSearchPB.SetClickHdl(LINK(this, SwFrmURLPage, InsertFileHdl));
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+SwFrmURLPage::~SwFrmURLPage()
+{
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+void SwFrmURLPage::Reset( const SfxItemSet &rSet )
+{
+ const SfxPoolItem* pItem;
+ if ( SFX_ITEM_SET == rSet.GetItemState( SID_DOCFRAME, TRUE, &pItem))
+ {
+ TargetList* pList = new TargetList;
+ ((const SfxFrameItem*)pItem)->GetFrame()->GetTargetList(*pList);
+ USHORT nCount = (USHORT)pList->Count();
+ if( nCount )
+ {
+ for ( USHORT i = 0; i < nCount; i++ )
+ {
+ aFrameCB.InsertEntry(*pList->GetObject(i));
+ }
+ for ( i = nCount; i; i-- )
+ {
+ delete pList->GetObject( i - 1 );
+ }
+ }
+ delete pList;
+ }
+
+ if ( SFX_ITEM_SET == rSet.GetItemState( RES_URL, TRUE, &pItem ) )
+ {
+ const SwFmtURL* pFmtURL = (const SwFmtURL*)pItem;
+ aURLED.SetText( INetURLObject::decode( pFmtURL->GetURL(),
+ INET_HEX_ESCAPE,
+ INetURLObject::DECODE_WITH_CHARSET,
+ RTL_TEXTENCODING_UTF8 ));
+ aNameED.SetText( pFmtURL->GetName());
+
+ aClientCB.Enable( pFmtURL->GetMap() != 0 );
+ aClientCB.Check ( pFmtURL->GetMap() != 0 );
+ aServerCB.Check ( pFmtURL->IsServerMap() );
+
+ aFrameCB.SetText(pFmtURL->GetTargetFrameName());
+ aFrameCB.SaveValue();
+ }
+ else
+ aClientCB.Enable( FALSE );
+
+ aServerCB.SaveValue();
+ aClientCB.SaveValue();
+}
+
+
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+BOOL SwFrmURLPage::FillItemSet(SfxItemSet &rSet)
+{
+ BOOL bModified = FALSE;
+ const SwFmtURL* pOldURL = (SwFmtURL*)GetOldItem(rSet, RES_URL);
+ SwFmtURL* pFmtURL;
+ if(pOldURL)
+ pFmtURL = (SwFmtURL*)pOldURL->Clone();
+ else
+ pFmtURL = new SwFmtURL();
+
+ {
+ String sText = aURLED.GetText();
+ if( sText.Len() )
+ sText = URIHelper::SmartRelToAbs( sText );
+
+ if( pFmtURL->GetURL() != sText ||
+ pFmtURL->GetName() != aNameED.GetText() ||
+ aServerCB.IsChecked() != pFmtURL->IsServerMap() )
+ {
+ pFmtURL->SetURL( sText, aServerCB.IsChecked() );
+ pFmtURL->SetName( aNameED.GetText() );
+ bModified = TRUE;
+ }
+ }
+
+ if(!aClientCB.IsChecked() && pFmtURL->GetMap() != 0)
+ {
+ pFmtURL->SetMap(0);
+ bModified = TRUE;
+ }
+
+ if(pFmtURL->GetTargetFrameName() != aFrameCB.GetText())
+ {
+ pFmtURL->SetTargetFrameName(aFrameCB.GetText());
+ bModified = TRUE;
+ }
+ rSet.Put(*pFmtURL);
+ delete pFmtURL;
+ return bModified;
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+SfxTabPage* SwFrmURLPage::Create(Window *pParent, const SfxItemSet &rSet)
+{
+ return new SwFrmURLPage( pParent, rSet );
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+IMPL_LINK( SwFrmURLPage, InsertFileHdl, PushButton *, pBtn )
+{
+ SfxFileDialog* pFileDlg = new SfxFileDialog(pBtn, WB_OPEN);
+ pFileDlg->DisableSaveLastDirectory();
+ pFileDlg->SetHelpId(HID_FILEDLG_CHARDLG);
+ String sTemp(aURLED.GetText());
+ if(sTemp.Len())
+ pFileDlg->SetPath(sTemp);
+
+ if(RET_OK == pFileDlg->Execute())
+ {
+ aURLED.SetText( URIHelper::SmartRelToAbs( pFileDlg->GetPath(), FALSE,
+ INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_WITH_CHARSET ));
+ }
+ delete pFileDlg;
+
+ return 0;
+}
+
+/*-----------------13.11.96 13.15-------------------
+
+--------------------------------------------------*/
+
+SwFrmAddPage::SwFrmAddPage(Window *pParent, const SfxItemSet &rSet ) :
+ SfxTabPage(pParent, SW_RES(TP_FRM_ADD), rSet),
+ aNameFT (this, SW_RES(FT_NAME)),
+ aNameED (this, SW_RES(ED_NAME)),
+ aAltNameFT (this, SW_RES(FT_ALT_NAME)),
+ aAltNameED (this, SW_RES(ED_ALT_NAME)),
+ aPrevFT (this, SW_RES(FT_PREV)),
+ aPrevED (this, SW_RES(ED_PREV)),
+ aNextFT (this, SW_RES(FT_NEXT)),
+ aNextED (this, SW_RES(ED_NEXT)),
+ aNamesGB (this, SW_RES(GB_NAME)),
+
+ aProtectContentCB (this, SW_RES(CB_PROTECT_CONTENT)),
+ aProtectFrameCB (this, SW_RES(CB_PROTECT_FRAME)),
+ aProtectSizeCB (this, SW_RES(CB_PROTECT_SIZE)),
+ aProtectGB (this, SW_RES(GB_PROTECT)),
+
+ aEditInReadonlyCB (this, SW_RES(CB_EDIT_IN_READONLY)),
+ aPrintFrameCB (this, SW_RES(CB_PRINT_FRAME)),
+ aExtGB (this, SW_RES(GB_EXT)),
+ nDlgType(0),
+ pWrtSh(0),
+ bFormat(FALSE),
+ bHtmlMode(FALSE)
+{
+ FreeResource();
+
+}
+
+/*-----------------13.11.96 13.15-------------------
+
+--------------------------------------------------*/
+
+SwFrmAddPage::~SwFrmAddPage()
+{
+}
+
+/*-----------------13.11.96 13.15-------------------
+
+--------------------------------------------------*/
+
+SfxTabPage* SwFrmAddPage::Create(Window *pParent, const SfxItemSet &rSet)
+{
+ return new SwFrmAddPage(pParent, rSet);
+}
+
+/*-----------------13.11.96 13.14-------------------
+
+--------------------------------------------------*/
+
+void SwFrmAddPage::Reset(const SfxItemSet &rSet )
+{
+ const SfxPoolItem* pItem;
+ USHORT nHtmlMode = ::GetHtmlMode((const SwDocShell*)SfxObjectShell::Current());
+ bHtmlMode = nHtmlMode & HTMLMODE_ON ? TRUE : FALSE;
+ if(bHtmlMode)
+ {
+ aProtectContentCB .Hide();
+ aProtectFrameCB .Hide();
+ aProtectSizeCB .Hide();
+ aEditInReadonlyCB .Hide();
+ aPrintFrameCB .Hide();
+ aExtGB .Hide();
+ aProtectGB.Hide();
+ }
+ if ( DLG_FRM_GRF == nDlgType || DLG_FRM_OLE == nDlgType )
+ aEditInReadonlyCB.Hide();
+
+ if(SFX_ITEM_SET == rSet.GetItemState(FN_SET_FRM_ALT_NAME, FALSE, &pItem))
+ {
+ aAltNameED.SetText(((const SfxStringItem*)pItem)->GetValue());
+ aAltNameED.SaveValue();
+ }
+
+ if(!bFormat)
+ {
+ // Grafik einfuegen - Eigenschaften
+ // bNew ist nicht gesetzt, deswegen ueber Selektion erkennen
+ String aTmpName1;
+ if(SFX_ITEM_SET == rSet.GetItemState(FN_SET_FRM_NAME, FALSE, &pItem))
+ {
+ aTmpName1 = ((const SfxStringItem*)pItem)->GetValue();
+ }
+
+ DBG_ASSERT(pWrtSh, "keine Shell?")
+ if( bNew || !aTmpName1.Len() )
+
+ switch( nDlgType )
+ {
+ case DLG_FRM_GRF:
+ aTmpName1 = pWrtSh->GetUniqueGrfName();
+ break;
+ case DLG_FRM_OLE:
+ aTmpName1 = pWrtSh->GetUniqueOLEName();
+ break;
+ default:
+ aTmpName1 = pWrtSh->GetUniqueFrameName();
+ break;
+ }
+
+ aNameED.SetText( aTmpName1 );
+ aNameED.SaveValue();
+ }
+ else
+ {
+ aNameED.Enable( FALSE );
+ aAltNameED.Enable(FALSE);
+ aNameFT.Enable( FALSE );
+ aAltNameFT.Enable(FALSE);
+ aNamesGB.Enable(FALSE);
+ }
+ if(nDlgType == DLG_FRM_STD)
+ {
+ aAltNameFT.Hide();
+ aAltNameED.Hide();
+ }
+ else
+ {
+ aNameED.SetModifyHdl(LINK(this, SwFrmAddPage, EditModifyHdl));
+ }
+
+ BOOL bNoPrev = TRUE, bNoNext = TRUE;
+ if (!bNew)
+ {
+ const SwFrmFmt* pFmt = pWrtSh->GetFlyFrmFmt();
+
+ if (pFmt)
+ {
+ const SwFmtChain &rChain = pFmt->GetChain();
+ const SwFlyFrmFmt* pFlyFmt;
+
+ if ((pFlyFmt = rChain.GetPrev()) != 0)
+ {
+ aPrevED.SetText(pFlyFmt->GetName());
+ bNoPrev = FALSE;
+ }
+
+ if ((pFlyFmt = rChain.GetNext()) != 0)
+ {
+ aNextED.SetText(pFlyFmt->GetName());
+ bNoNext = FALSE;
+ }
+ }
+ }
+
+ if (bNoPrev)
+ {
+ aPrevFT.Disable();
+ aPrevED.Disable();
+ }
+ if (bNoNext)
+ {
+ aNextFT.Disable();
+ aNextED.Disable();
+ }
+
+ // Pos Protected
+ const SvxProtectItem& rProt = (const SvxProtectItem& )rSet.Get(RES_PROTECT);
+ aProtectFrameCB.Check(rProt.IsPosProtected());
+ aProtectContentCB.Check(rProt.IsCntntProtected());
+ aProtectSizeCB.Check(rProt.IsSizeProtected());
+
+ const SwFmtEditInReadonly& rEdit = (const SwFmtEditInReadonly& )rSet.Get(RES_EDIT_IN_READONLY);
+ aEditInReadonlyCB.Check(rEdit.GetValue()); aEditInReadonlyCB.SaveValue();
+
+ // drucken
+ const SvxPrintItem& rPrt = (const SvxPrintItem&)rSet.Get(RES_PRINT);
+ aPrintFrameCB.Check(rPrt.GetValue()); aPrintFrameCB.SaveValue();
+}
+
+/*-----------------13.11.96 13.20-------------------
+
+--------------------------------------------------*/
+
+BOOL SwFrmAddPage::FillItemSet(SfxItemSet &rSet)
+{
+ BOOL bRet = FALSE;
+ if (aNameED.GetText() != aNameED.GetSavedValue())
+ bRet |= 0 != rSet.Put(SfxStringItem(FN_SET_FRM_NAME, aNameED.GetText()));
+ if (aAltNameED.GetText() != aAltNameED.GetSavedValue())
+ bRet |= 0 != rSet.Put(SfxStringItem(FN_SET_FRM_ALT_NAME, aAltNameED.GetText()));
+
+ const SfxPoolItem* pOldItem;
+ SvxProtectItem aProt ( (const SvxProtectItem& )GetItemSet().Get(RES_PROTECT) );
+ aProt.SetCntntProtect( aProtectContentCB.IsChecked() );
+ aProt.SetSizeProtect ( aProtectSizeCB.IsChecked() );
+ aProt.SetPosProtect ( aProtectFrameCB.IsChecked() );
+ if ( 0 == (pOldItem = GetOldItem(rSet, FN_SET_PROTECT)) ||
+ aProt != *pOldItem )
+ bRet |= 0 != rSet.Put( aProt);
+
+ BOOL bChecked;
+ if ( (bChecked = aEditInReadonlyCB.IsChecked()) != aEditInReadonlyCB.GetSavedValue() )
+ bRet |= 0 != rSet.Put( SwFmtEditInReadonly( RES_EDIT_IN_READONLY, bChecked));
+
+ if ( (bChecked = aPrintFrameCB.IsChecked()) != aPrintFrameCB.GetSavedValue() )
+ bRet |= 0 != rSet.Put( SvxPrintItem( RES_PRINT, bChecked));
+
+ return bRet;
+}
+
+/*-----------------13.11.96 15.05-------------------
+
+--------------------------------------------------*/
+
+USHORT* SwFrmAddPage::GetRanges()
+{
+ return aAddPgRg;
+}
+
+/*-----------------13.11.96 16.12-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK(SwFrmAddPage, EditModifyHdl, Edit*, EMPTYARG)
+{
+ BOOL bEnable = 0 != aNameED.GetText().Len();
+ aAltNameED.Enable(bEnable);
+ aAltNameFT.Enable(bEnable);
+
+ return 0;
+}
+/*--------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.255 2000/09/18 16:05:33 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.254 2000/08/25 14:09:49 jp
+ Graphic Crop-Attribut and TabPage exported to SVX
+
+ Revision 1.253 2000/08/17 11:38:50 jp
+ remove the SW graphicmanager and UI with decoded URLs
+
+ Revision 1.252 2000/06/26 13:13:31 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.251 2000/05/10 14:05:18 os
+ #75737# ReadioButtons used for hori mirror type
+
+ Revision 1.250 2000/04/26 14:49:17 os
+ GetName() returns const String&
+
+ Revision 1.249 2000/04/19 12:56:34 os
+ include sfx2/filedlg.hxx removed
+
+ Revision 1.248 2000/04/18 15:14:56 os
+ UNICODE
+
+ Revision 1.247 2000/02/11 14:47:20 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.246 2000/01/24 12:45:28 os
+ #72153# call SfxFileDialog::DisableSaveLastDirectory
+
+ Revision 1.245 1999/11/23 13:18:55 os
+ #69479# relative/fixed ratio handling corrected
+
+ Revision 1.244 1999/06/21 11:30:30 OS
+ #64885# width/height matching corrected
+
+
+ Rev 1.243 21 Jun 1999 13:30:30 OS
+ #64885# width/height matching corrected
+
+ Rev 1.242 09 Jun 1999 10:48:10 OS
+ #66733# CropPage: reset relative values
+
+ Rev 1.241 09 Apr 1999 12:17:24 OS
+ #64438# Grenzwerte fuer L+R richtig berechnen
+
+--------------------------------------------------*/
diff --git a/sw/source/ui/frmdlg/frmpage.hrc b/sw/source/ui/frmdlg/frmpage.hrc
new file mode 100644
index 000000000000..baaa5df21819
--- /dev/null
+++ b/sw/source/ui/frmdlg/frmpage.hrc
@@ -0,0 +1,137 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmpage.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:37 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 WN_BSP 21
+#define FT_BSP 22
+#define RB_ANCHOR_TYPE 23
+#define LB_ANCHOR_TYPE 24
+#define RB_ANCHOR_CHAR 25
+#define GB_TYPE 26
+#define FT_WIDTH 27
+#define ED_WIDTH 28
+#define FT_HEIGHT 29
+#define ED_HEIGHT 30
+#define CB_AUTOHEIGHT 31
+#define GB_SIZE 32
+#define FT_HORIZONTAL 33
+#define DLB_HORIZONTAL 34
+#define FT_AT_HORZ_POS 35
+#define ED_AT_HORZ_POS 36
+#define FT_HORI_RELATION 1
+#define LB_HORI_RELATION 2
+#define CB_MIRROR 37
+#define FT_VERTICAL 38
+#define DLB_VERTICAL 39
+#define FT_AT_VERT_POS 40
+#define ED_AT_VERT_POS 41
+#define FT_VERT_RELATION 3
+#define LB_VERT_RELATION 4
+#define GB_POSITION 43
+#define BT_REALSIZE 44
+#define BT_MANUAL 45
+
+#define CB_HOR 46
+#define CB_VERT 47
+//#define LB_MIRROR_PAGES 49
+//#define FT_MIRROR_PAGES 50
+#define GB_MIRROR 51
+#define WN_BMP 52
+#define PB_BROWSE 53
+#define ED_CONNECT 54
+#define GB_CONNECT 55
+#define FT_CONNECT 57
+#define FT_URL 58
+#define ED_URL 59
+
+#define BMP_EXAMPLE 62
+#define RB_MIRROR_ALL_PAGES 63
+#define RB_MIRROR_LEFT_PAGES 64
+#define RB_MIRROR_RIGHT_PAGES 65
+
+#define GB_HYPERLINK 94
+#define FT_FRAME 95
+#define CB_FRAME 96
+#define GB_IMAGE 97
+#define CB_SERVER 98
+#define CB_CLIENT 99
+
+#define CB_REL_WIDTH 100
+#define CB_REL_HEIGHT 101
+#define CB_FIXEDRATIO 102
+#define PB_SEARCH 103
+
+#define CB_ANCHOR_ONLY 103
+
+#define FT_NAME 110
+#define ED_NAME 111
+#define FT_ALT_NAME 112
+#define ED_ALT_NAME 113
+#define FT_PREV 114
+#define ED_PREV 115
+#define FT_NEXT 116
+#define ED_NEXT 117
+#define GB_NAME 118
+#define CB_PROTECT_CONTENT 119
+#define CB_PROTECT_FRAME 120
+#define CB_PROTECT_SIZE 121
+#define GB_PROTECT 122
+#define CB_EDIT_IN_READONLY 123
+#define CB_PRINT_FRAME 124
+#define GB_EXT 125
diff --git a/sw/source/ui/frmdlg/frmpage.src b/sw/source/ui/frmdlg/frmpage.src
new file mode 100644
index 000000000000..f29299a97e58
--- /dev/null
+++ b/sw/source/ui/frmdlg/frmpage.src
@@ -0,0 +1,2707 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmpage.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "frmui.hrc"
+#include "frmpage.hrc"
+#include "globals.hrc"
+#include "helpid.h"
+#include "svx/dialogs.hrc"
+
+TabDialog DLG_FRM_STD
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Rahmen" ;
+ Text [ ENGLISH ] = "Frame" ;
+ Text [ norwegian ] = "Ramme" ;
+ Text [ italian ] = "Cornice" ;
+ Text [ portuguese_brazilian ] = "Moldura" ;
+ Text [ portuguese ] = "Moldura" ;
+ Text [ finnish ] = "Kehys" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ french ] = "Cadre" ;
+ Text [ swedish ] = "Ram" ;
+ Text [ dutch ] = "Kader" ;
+ Text [ spanish ] = "Marco" ;
+ Text [ english_us ] = "Frame" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_FRM_STD ;
+ PageResID = TP_FRM_STD ;
+ Text = "Typ" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "Tipo" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "Typ" ;
+ Text [ dutch ] = "Type" ;
+ Text [ spanish ] = "Tipo" ;
+ Text [ english_us ] = "Type" ;
+ Text[ chinese_simplified ] = "ÀàÐÍ";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Ží—Þ";
+ Text[ chinese_traditional ] = "Ãþ«¬";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ };
+ PageItem
+ {
+ Identifier = TP_FRM_ADD ;
+ PageResID = TP_FRM_ADD ;
+ Text = "Zusätze" ;
+ Text [ ENGLISH ] = "Additions" ;
+ Text [ english_us ] = "Options" ;
+ Text [ italian ] = "Extra" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ french ] = "Options" ;
+ Text [ dutch ] = "Overige" ;
+ Text [ swedish ] = "Tillägg" ;
+ Text [ danish ] = "Supplerende" ;
+ Text [ portuguese_brazilian ] = "Zusätze" ;
+ Text [ portuguese ] = "Opções" ;
+ Text[ chinese_simplified ] = "ÆäËû";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Dodatki";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¨ä¥L";
+ Text[ arabic ] = "ÎíÇÑÇÊ";
+ Text[ greek ] = "Ðñüóèåôá";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ };
+ PageItem
+ {
+ Identifier = TP_FRM_WRAP ;
+ PageResID = TP_FRM_WRAP ;
+ Text = "Umlauf" ;
+ Text [ ENGLISH ] = "Wrap" ;
+ Text [ norwegian ] = "Wrap" ;
+ Text [ italian ] = "Scorrimento" ;
+ Text [ portuguese_brazilian ] = "Circundamento" ;
+ Text [ portuguese ] = "Ajuste" ;
+ Text [ finnish ] = "Kierrätys" ;
+ Text [ danish ] = "Ombrydning" ;
+ Text [ french ] = "Adaptation du texte" ;
+ Text [ swedish ] = "Textanpassning" ;
+ Text [ dutch ] = "Om beeld" ;
+ Text [ spanish ] = "Ajuste" ;
+ Text [ english_us ] = "Wrap" ;
+ Text[ chinese_simplified ] = "»·ÈÆ";
+ Text[ russian ] = "Îáòåêàíèå";
+ Text[ polish ] = "Obieg tekstu";
+ Text[ japanese ] = "Ü‚è•Ô‚µ";
+ Text[ chinese_traditional ] = "´«¦æ";
+ Text[ arabic ] = "ÇáÊÝÇÝ";
+ Text[ greek ] = "Áíáäßðëùóç";
+ Text[ korean ] = "¼øȯ";
+ Text[ turkish ] = "Metin daðýlýmý";
+ };
+ PageItem
+ {
+ Identifier = TP_FRM_URL ;
+ PageResID = TP_FRM_URL ;
+ Text = "Hyperlink" ;
+ Text [ ENGLISH ] = "Hyperlink" ;
+ Text [ english_us ] = "Hyperlink" ;
+ Text [ italian ] = "Hyperlink" ;
+ Text [ spanish ] = "Hiperenlace" ;
+ Text [ french ] = "Hyperlien" ;
+ Text [ dutch ] = "Hyperlink" ;
+ Text [ swedish ] = "Hyperlänk" ;
+ Text [ danish ] = "Hyperlink" ;
+ Text [ portuguese_brazilian ] = "Hyperlink" ;
+ Text [ portuguese ] = "Hiperligação" ;
+ Text[ chinese_simplified ] = "³¬Á´½Ó";
+ Text[ russian ] = "Ãèïåðññûëêà";
+ Text[ polish ] = "Hiper³¹cze";
+ Text[ japanese ] = "ʲÊß°Øݸ";
+ Text[ chinese_traditional ] = "¶W³sµ²";
+ Text[ arabic ] = "ÇÑÊÈÇØ ÊÔÚÈí";
+ Text[ greek ] = "Õðåñ-óýíäåóç";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ©";
+ Text[ turkish ] = "Hyperlink";
+ };
+ PageItem
+ {
+ Identifier = TP_BORDER ;
+ PageResID = TP_BORDER ;
+ Text = "Umrandung" ;
+ Text [ ENGLISH ] = "Border" ;
+ Text [ norwegian ] = "Border" ;
+ Text [ italian ] = "Bordo" ;
+ Text [ portuguese_brazilian ] = "Borda" ;
+ Text [ portuguese ] = "Contornos" ;
+ Text [ spanish ] = "Borde" ;
+ Text [ finnish ] = "Reunaviiva" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ french ] = "Bordure" ;
+ Text [ swedish ] = "Inramning" ;
+ Text [ dutch ] = "Omranding" ;
+ 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";
+ };
+ PageItem
+ {
+ Identifier = TP_BACKGROUND ;
+ PageResID = 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";
+ };
+ PageItem
+ {
+ Identifier = TP_COLUMN ;
+ PageResID = TP_COLUMN ;
+ Text = "Spalten" ;
+ Text [ ENGLISH ] = "Columns" ;
+ Text [ norwegian ] = "Kolonner" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ portuguese_brazilian ] = "Colunas" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ finnish ] = "Sarakkeet" ;
+ Text [ danish ] = "Kolonner" ;
+ Text [ french ] = "Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ spanish ] = "Columnas" ;
+ Text [ english_us ] = "Columns" ;
+ Text[ chinese_simplified ] = "À¸";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "—ñ";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÃÚãÏÉ";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ };
+ PageItem
+ {
+ Identifier = TP_MACRO_ASSIGN ;
+ Text = "Makro" ;
+ Text [ ENGLISH ] = "Macro" ;
+ Text [ english_us ] = "Macro" ;
+ Text [ italian ] = "Macro" ;
+ Text [ spanish ] = "Macro" ;
+ Text [ french ] = "Macro" ;
+ Text [ dutch ] = "Macro" ;
+ Text [ swedish ] = "Makro" ;
+ Text [ danish ] = "Makro" ;
+ Text [ portuguese_brazilian ] = "Makro" ;
+ Text [ portuguese ] = "Macro" ;
+ Text[ chinese_simplified ] = "ºê";
+ Text[ russian ] = "Ìàêðîñ";
+ Text[ polish ] = "Makro";
+ Text[ japanese ] = "ϸÛ";
+ Text[ chinese_traditional ] = "¥¨¶°";
+ Text[ arabic ] = "ãÇßÑæ";
+ Text[ greek ] = "ÌáêñïåíôïëÞ";
+ Text[ korean ] = "¸ÅÅ©·Î";
+ Text[ turkish ] = "Makro";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "¿ò";
+ Text[ russian ] = "Ðàìêà";
+ Text[ polish ] = "Ramka";
+ Text[ japanese ] = "˜g";
+ Text[ chinese_traditional ] = "¤å¦r¤è¶ô";
+ Text[ arabic ] = "ÅØÇÑ";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "Çerçeve";
+};
+TabDialog DLG_FRM_GRF
+{
+ SVLook = TRUE ;
+ Text = "Grafik" ;
+ Text [ ENGLISH ] = "Graphic" ;
+ Text [ norwegian ] = "Graphic" ;
+ Text [ italian ] = "Immagine" ;
+ Text [ portuguese_brazilian ] = "Gráfico" ;
+ Text [ portuguese ] = "Imagens" ;
+ Text [ finnish ] = "Kuva" ;
+ Text [ danish ] = "Billeder" ;
+ Text [ french ] = "Image" ;
+ Text [ swedish ] = "Grafik" ;
+ Text [ dutch ] = "Afbeelding" ;
+ Text [ spanish ] = "Imagen" ;
+ Text [ english_us ] = "Graphics" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_FRM_STD ;
+ PageResID = TP_FRM_STD ;
+ Text = "Typ" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "Tipo" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "Typ" ;
+ Text [ dutch ] = "Type" ;
+ Text [ spanish ] = "Tipo" ;
+ Text [ english_us ] = "Type" ;
+ Text[ chinese_simplified ] = "ÀàÐÍ";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Ží—Þ";
+ Text[ chinese_traditional ] = "Ãþ«¬";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ };
+ PageItem
+ {
+ Identifier = TP_FRM_ADD ;
+ PageResID = TP_FRM_ADD ;
+ Text = "Zusätze" ;
+ Text [ ENGLISH ] = "Additions" ;
+ Text [ english_us ] = "Options" ;
+ Text [ italian ] = "Extra" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ french ] = "Options" ;
+ Text [ dutch ] = "Overige" ;
+ Text [ swedish ] = "Tillägg" ;
+ Text [ danish ] = "Supplerende" ;
+ Text [ portuguese_brazilian ] = "Zusätze" ;
+ Text [ portuguese ] = "Opções" ;
+ Text[ chinese_simplified ] = "ÆäËû";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Dodatki";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¨ä¥L";
+ Text[ arabic ] = "ÎíÇÑÇÊ";
+ Text[ greek ] = "Ðñüóèåôá";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ };
+ PageItem
+ {
+ Identifier = TP_FRM_WRAP ;
+ PageResID = TP_FRM_WRAP ;
+ Text = "Umlauf" ;
+ Text [ ENGLISH ] = "Wrap" ;
+ Text [ norwegian ] = "Wrap" ;
+ Text [ italian ] = "Scorrimento" ;
+ Text [ portuguese_brazilian ] = "Circundamento" ;
+ Text [ portuguese ] = "Ajuste" ;
+ Text [ finnish ] = "Kierrätys" ;
+ Text [ danish ] = "Ombrydning" ;
+ Text [ french ] = "Adaptation du texte" ;
+ Text [ swedish ] = "Textanpassning" ;
+ Text [ dutch ] = "Om beeld" ;
+ Text [ spanish ] = "Ajuste" ;
+ Text [ english_us ] = "Wrap" ;
+ Text[ chinese_simplified ] = "»·ÈÆ";
+ Text[ russian ] = "Îáòåêàíèå";
+ Text[ polish ] = "Obieg tekstu";
+ Text[ japanese ] = "Ü‚è•Ô‚µ";
+ Text[ chinese_traditional ] = "´«¦æ";
+ Text[ arabic ] = "ÇáÊÝÇÝ";
+ Text[ greek ] = "Áíáäßðëùóç";
+ Text[ korean ] = "¼øȯ";
+ Text[ turkish ] = "Metin daðýlýmý";
+ };
+ PageItem
+ {
+ Identifier = TP_FRM_URL ;
+ PageResID = TP_FRM_URL ;
+ Text = "Hyperlink" ;
+ Text [ ENGLISH ] = "Hyperlink" ;
+ Text [ english_us ] = "Hyperlink" ;
+ Text [ italian ] = "Hyperlink" ;
+ Text [ spanish ] = "Hiperenlace" ;
+ Text [ french ] = "Hyperlien" ;
+ Text [ dutch ] = "Hyperlink" ;
+ Text [ swedish ] = "Hyperlänk" ;
+ Text [ danish ] = "Hyperlink" ;
+ Text [ portuguese_brazilian ] = "Hyperlink" ;
+ Text [ portuguese ] = "Hiperligação" ;
+ Text[ chinese_simplified ] = "³¬Á´½Ó";
+ Text[ russian ] = "Ãèïåðññûëêà";
+ Text[ polish ] = "Hiper³¹cze";
+ Text[ japanese ] = "ʲÊß°Øݸ";
+ Text[ chinese_traditional ] = "¶W³sµ²";
+ Text[ arabic ] = "ÇÑÊÈÇØ ÊÔÚÈí";
+ Text[ greek ] = "Õðåñ-óýíäåóç";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ©";
+ Text[ turkish ] = "Hyperlink";
+ };
+ PageItem
+ {
+ Identifier = TP_GRF_EXT ;
+ PageResID = TP_GRF_EXT ;
+ Text = "Grafik" ;
+ Text [ ENGLISH ] = "Graphic" ;
+ Text [ norwegian ] = "Graphic" ;
+ Text [ italian ] = "Immagine" ;
+ Text [ portuguese_brazilian ] = "Gráfico" ;
+ Text [ portuguese ] = "Imagem" ;
+ Text [ finnish ] = "Kuva" ;
+ Text [ danish ] = "Grafik" ;
+ Text [ french ] = "Image" ;
+ Text [ swedish ] = "Grafik" ;
+ Text [ dutch ] = "Afbeelding" ;
+ Text [ spanish ] = "Imagen" ;
+ Text [ english_us ] = "Graphics" ;
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ russian ] = "Ðèñóíîê";
+ Text[ polish ] = "Grafika";
+ Text[ japanese ] = "¸Þ×̨¯¸½";
+ Text[ chinese_traditional ] = "¹Ï¤ù";
+ Text[ arabic ] = "ÕæÑÉ";
+ Text[ greek ] = "Ãñáöéêü";
+ Text[ korean ] = "±×·¡ÇÈ";
+ Text[ turkish ] = "Grafik";
+ };
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_GRFCROP;
+ PageResID = RID_SVXPAGE_GRFCROP;
+ Text = "Zuschneiden" ;
+ Text [ ENGLISH ] = "Crop" ;
+ Text [ dutch ] = "Knippen" ;
+ Text [ english_us ] = "Crop" ;
+ Text [ italian ] = "Taglia" ;
+ Text [ spanish ] = "Recortar" ;
+ Text [ french ] = "Recadrer" ;
+ Text [ swedish ] = "Skära till" ;
+ Text [ danish ] = "Beskær" ;
+ Text [ portuguese_brazilian ] = "Zuschneiden" ;
+ Text [ portuguese ] = "Recortar" ;
+ Text[ chinese_simplified ] = "²Ã¼ô";
+ Text[ russian ] = "Îáðåçàòü";
+ Text[ polish ] = "Przytnij";
+ Text[ japanese ] = "ÄØÐݸÞ";
+ Text[ chinese_traditional ] = "°Å¤U";
+ Text[ arabic ] = "ÇÞÊÕÇÕ";
+ Text[ greek ] = "ÐñïóáñìïãÞ";
+ Text[ korean ] = "ÀÚ¸£±â";
+ Text[ turkish ] = "Kýrpma";
+ };
+ PageItem
+ {
+ Identifier = TP_BORDER ;
+ PageResID = TP_BORDER ;
+ Text = "Umrandung" ;
+ Text [ ENGLISH ] = "Border" ;
+ Text [ norwegian ] = "Border" ;
+ Text [ italian ] = "Bordo" ;
+ Text [ portuguese_brazilian ] = "Borda" ;
+ Text [ portuguese ] = "Contornos" ;
+ Text [ spanish ] = "Borde" ;
+ Text [ finnish ] = "Reunaviiva" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ french ] = "Bordure" ;
+ Text [ swedish ] = "Inramning" ;
+ Text [ dutch ] = "Omranding" ;
+ 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";
+ };
+ PageItem
+ {
+ Identifier = TP_BACKGROUND ;
+ PageResID = 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";
+ };
+ PageItem
+ {
+ Identifier = TP_MACRO_ASSIGN ;
+ Text = "Makro" ;
+ Text [ ENGLISH ] = "Macro" ;
+ Text [ english_us ] = "Macro" ;
+ Text [ italian ] = "Macro" ;
+ Text [ spanish ] = "Macro" ;
+ Text [ french ] = "Macro" ;
+ Text [ dutch ] = "Macro" ;
+ Text [ swedish ] = "Makro" ;
+ Text [ danish ] = "Makro" ;
+ Text [ portuguese_brazilian ] = "Makro" ;
+ Text [ portuguese ] = "Macro" ;
+ Text[ chinese_simplified ] = "ºê";
+ Text[ russian ] = "Ìàêðîñ";
+ Text[ polish ] = "Makro";
+ Text[ japanese ] = "ϸÛ";
+ Text[ chinese_traditional ] = "¥¨¶°";
+ Text[ arabic ] = "ãÇßÑæ";
+ Text[ greek ] = "ÌáêñïåíôïëÞ";
+ Text[ korean ] = "¸ÅÅ©·Î";
+ Text[ turkish ] = "Makro";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ russian ] = "Ðèñóíîê";
+ Text[ polish ] = "Grafika";
+ Text[ japanese ] = "}";
+ Text[ chinese_traditional ] = "¹Ï¤ù";
+ Text[ arabic ] = "ÕæÑ";
+ Text[ greek ] = "Ãñáöéêü";
+ Text[ korean ] = "±×·¡ÇÈ";
+ Text[ turkish ] = "Grafik";
+};
+TabDialog DLG_FRM_OLE
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Objekt" ;
+ Text [ ENGLISH ] = "Object" ;
+ Text [ norwegian ] = "Object" ;
+ Text [ italian ] = "Oggetto" ;
+ Text [ portuguese_brazilian ] = "Objeto" ;
+ Text [ portuguese ] = "Objecto" ;
+ Text [ finnish ] = "Objekti" ;
+ Text [ danish ] = "Objekt" ;
+ Text [ french ] = "Objet" ;
+ Text [ swedish ] = "Objekt" ;
+ Text [ dutch ] = "Object" ;
+ Text [ spanish ] = "Objeto" ;
+ Text [ english_us ] = "Object" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_FRM_STD ;
+ PageResID = TP_FRM_STD ;
+ Text = "Typ" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "Tipo" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "Typ" ;
+ Text [ dutch ] = "Type" ;
+ Text [ spanish ] = "Tipo" ;
+ Text [ english_us ] = "Type" ;
+ Text[ chinese_simplified ] = "ÀàÐÍ";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Ží—Þ";
+ Text[ chinese_traditional ] = "Ãþ«¬";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ };
+ PageItem
+ {
+ Identifier = TP_FRM_ADD ;
+ PageResID = TP_FRM_ADD ;
+ Text = "Zusätze" ;
+ Text [ ENGLISH ] = "Additions" ;
+ Text [ english_us ] = "Options" ;
+ Text [ italian ] = "Extra" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ french ] = "Options" ;
+ Text [ dutch ] = "Overige" ;
+ Text [ swedish ] = "Tillägg" ;
+ Text [ danish ] = "Supplerende" ;
+ Text [ portuguese_brazilian ] = "Zusätze" ;
+ Text [ portuguese ] = "Opções" ;
+ Text[ chinese_simplified ] = "ÆäËû";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Dodatki";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¨ä¥L";
+ Text[ arabic ] = "ÎíÇÑÇÊ";
+ Text[ greek ] = "Ðñüóèåôá";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ };
+ PageItem
+ {
+ Identifier = TP_FRM_WRAP ;
+ PageResID = TP_FRM_WRAP ;
+ Text = "Umlauf" ;
+ Text [ ENGLISH ] = "Wrap" ;
+ Text [ norwegian ] = "Wrap" ;
+ Text [ italian ] = "Scorrimento" ;
+ Text [ portuguese_brazilian ] = "Circundamento" ;
+ Text [ portuguese ] = "Ajuste" ;
+ Text [ finnish ] = "Kierrätys" ;
+ Text [ danish ] = "Ombrydning" ;
+ Text [ french ] = "Adaptation du texte" ;
+ Text [ swedish ] = "Textanpassning" ;
+ Text [ dutch ] = "Om beeld" ;
+ Text [ spanish ] = "Ajuste" ;
+ Text [ english_us ] = "Wrap" ;
+ Text[ chinese_simplified ] = "»·ÈÆ";
+ Text[ russian ] = "Îáòåêàíèå";
+ Text[ polish ] = "Obieg tekstu";
+ Text[ japanese ] = "Ü‚è•Ô‚µ";
+ Text[ chinese_traditional ] = "´«¦æ";
+ Text[ arabic ] = "ÇáÊÝÇÝ";
+ Text[ greek ] = "Áíáäßðëùóç";
+ Text[ korean ] = "¼øȯ";
+ Text[ turkish ] = "Metin daðýlýmý";
+ };
+ PageItem
+ {
+ Identifier = TP_FRM_URL ;
+ PageResID = TP_FRM_URL ;
+ Text = "Hyperlink" ;
+ Text [ ENGLISH ] = "Hyperlink" ;
+ Text [ english_us ] = "Hyperlink" ;
+ Text [ italian ] = "Hyperlink" ;
+ Text [ spanish ] = "Hiperenlace" ;
+ Text [ french ] = "Hyperlien" ;
+ Text [ dutch ] = "Hyperlink" ;
+ Text [ swedish ] = "Hyperlänk" ;
+ Text [ danish ] = "Hyperlink" ;
+ Text [ portuguese_brazilian ] = "Hyperlink" ;
+ Text [ portuguese ] = "Hiperligação" ;
+ Text[ chinese_simplified ] = "³¬Á´½Ó";
+ Text[ russian ] = "Ãèïåðññûëêà";
+ Text[ polish ] = "Hiper³¹cze";
+ Text[ japanese ] = "ʲÊß°Øݸ";
+ Text[ chinese_traditional ] = "¶W³sµ²";
+ Text[ arabic ] = "ÇÑÊÈÇØ ÊÔÚÈí";
+ Text[ greek ] = "Õðåñ-óýíäåóç";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ©";
+ Text[ turkish ] = "Hyperlink";
+ };
+ PageItem
+ {
+ Identifier = TP_BORDER ;
+ PageResID = TP_BORDER ;
+ Text = "Umrandung" ;
+ Text [ ENGLISH ] = "Border" ;
+ Text [ norwegian ] = "Border" ;
+ Text [ italian ] = "Bordo" ;
+ Text [ portuguese_brazilian ] = "Borda" ;
+ Text [ portuguese ] = "Contornos" ;
+ Text [ spanish ] = "Borde" ;
+ Text [ finnish ] = "Reunaviiva" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ french ] = "Bordure" ;
+ Text [ swedish ] = "Inramning" ;
+ Text [ dutch ] = "Omranding" ;
+ 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";
+ };
+ PageItem
+ {
+ Identifier = TP_BACKGROUND ;
+ PageResID = 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";
+ };
+ /*
+ PageItem {
+ Identifier = TP_COLUMN ;
+ PageResID = TP_COLUMN;
+ Text = "Spalten" ;
+ Text[ ENGLISH ] = "Columns" ;
+ Text[ norwegian ] = "Kolonner" ;
+ Text[ italian ] = "Colonne" ;
+ Text[ portuguese_brazilian] = "Colunas" ;
+ Text[ portuguese ] = "Colunas" ;
+ Text[ finnish ] = "Sarakkeet" ;
+ Text[ danish ] = "Spalter" ;
+ Text[ french ] = "Colonnes" ;
+ Text[ swedish ] = "Kolumner" ;
+ Text[ dutch ] = "Kolommen" ;
+ Text[ spanish ] = "Columnas" ;
+ Text[ english_us ] = "Columns" ;
+ };
+*/
+ PageItem
+ {
+ Identifier = TP_MACRO_ASSIGN ;
+ Text = "Makro" ;
+ Text [ ENGLISH ] = "Macro" ;
+ Text [ english_us ] = "Macro" ;
+ Text [ italian ] = "Macro" ;
+ Text [ spanish ] = "Macro" ;
+ Text [ french ] = "Macro" ;
+ Text [ dutch ] = "Macro" ;
+ Text [ swedish ] = "Makro" ;
+ Text [ danish ] = "Makro" ;
+ Text [ portuguese_brazilian ] = "Makro" ;
+ Text [ portuguese ] = "Macro" ;
+ Text[ chinese_simplified ] = "ºê";
+ Text[ russian ] = "Ìàêðîñ";
+ Text[ polish ] = "Makro";
+ Text[ japanese ] = "ϸÛ";
+ Text[ chinese_traditional ] = "¥¨¶°";
+ Text[ arabic ] = "ãÇßÑæ";
+ Text[ greek ] = "ÌáêñïåíôïëÞ";
+ Text[ korean ] = "¸ÅÅ©·Î";
+ Text[ turkish ] = "Makro";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "¶ÔÏó";
+ Text[ russian ] = "Îáúåêò";
+ Text[ polish ] = "Obiekt";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "ª«¥ó";
+ Text[ arabic ] = "ßÇÆä";
+ Text[ greek ] = "Áíôéêåßìåíï";
+ Text[ korean ] = "°³Ã¼";
+ Text[ turkish ] = "Nesne";
+};
+TabPage TP_FRM_STD
+{
+ HelpID = HID_FRM_STD ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ FixedText FT_WIDTH
+ {
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ Size = MAP_APPFONT ( 21 , 10 ) ;
+ Left = TRUE ;
+ Text = "~Breite" ;
+ Text [ ENGLISH ] = "~Width" ;
+ Text [ norwegian ] = "~Bredde" ;
+ Text [ italian ] = "~Largh." ;
+ Text [ portuguese_brazilian ] = "~Largura" ;
+ Text [ portuguese ] = "~Largura" ;
+ Text [ finnish ] = "~Leveys" ;
+ Text [ danish ] = "Bredde" ;
+ Text [ french ] = "~Larg." ;
+ Text [ swedish ] = "~Bredd" ;
+ Text [ dutch ] = "B~reedte" ;
+ Text [ spanish ] = "A~ncho" ;
+ Text [ english_us ] = "~Width" ;
+ Text[ chinese_simplified ] = "¿í¶È(~W)";
+ Text[ russian ] = "Øèðèíà";
+ Text[ polish ] = "Szer.";
+ Text[ japanese ] = "•(~W)";
+ Text[ chinese_traditional ] = "¼e«×(~W)";
+ Text[ arabic ] = "ÇáÚÑÖ";
+ Text[ greek ] = "ÐëÜôïò";
+ Text[ korean ] = "³Êºñ(~W)";
+ Text[ turkish ] = "~Geniþlik";
+ };
+ MetricField ED_WIDTH
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 33 , 14 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Text = "12,99" ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 5 ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 5 ;
+ Last = 9999 ;
+ SpinSize = 10 ;
+ };
+ CheckBox CB_REL_WIDTH
+ {
+ Pos = MAP_APPFONT ( 78 , 16 ) ;
+ Size = MAP_APPFONT ( 35 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "~Relativ" ;
+ Text [ ENGLISH ] = "Relativ" ;
+ Text [ dutch ] = "~Relatief" ;
+ Text [ english_us ] = "Relat~ive" ;
+ Text [ italian ] = "~Relativo" ;
+ Text [ spanish ] = "R~elativo" ;
+ Text [ french ] = "~Relatif" ;
+ Text [ swedish ] = "~Relativ" ;
+ Text [ danish ] = "Relativ" ;
+ Text [ portuguese_brazilian ] = "~Relativ" ;
+ Text [ portuguese ] = "~Relativo" ;
+ Text[ chinese_simplified ] = "숦﵀(~V)";
+ Text[ russian ] = "Îòíîñèò.";
+ Text[ polish ] = "Wzglê~dny";
+ Text[ japanese ] = "Š„‡(~V)";
+ Text[ chinese_traditional ] = "¬Û¹ïªº(~V)";
+ Text[ arabic ] = "äÓÈí";
+ Text[ greek ] = "Ó÷åôéêÜ";
+ Text[ korean ] = "ºñ·Ê(~I)";
+ Text[ turkish ] = "~Göreceli";
+ };
+ FixedText FT_HEIGHT
+ {
+ Pos = MAP_APPFONT ( 12 , 31 ) ;
+ Size = MAP_APPFONT ( 21 , 10 ) ;
+ Left = TRUE ;
+ Text = "Höh~e" ;
+ Text [ ENGLISH ] = "H~eight" ;
+ Text [ norwegian ] = "H~eight" ;
+ Text [ italian ] = "Altezza" ;
+ Text [ portuguese_brazilian ] = "A~ltura" ;
+ Text [ portuguese ] = "A~ltura" ;
+ Text [ finnish ] = "~Korkeus" ;
+ Text [ danish ] = "Højde" ;
+ Text [ french ] = "~Haut." ;
+ Text [ swedish ] = "Höj~d" ;
+ Text [ dutch ] = "H~oogte" ;
+ Text [ spanish ] = "A~ltura" ;
+ Text [ english_us ] = "~Height" ;
+ Text[ chinese_simplified ] = "¸ß¶È(~H)";
+ Text[ russian ] = "Âûñîòà";
+ Text[ polish ] = "Wys.";
+ Text[ japanese ] = "‚‚³(~H)";
+ Text[ chinese_traditional ] = "°ª«×(~H)";
+ Text[ arabic ] = "ÇáÇÑÊÝÇÚ";
+ Text[ greek ] = "¾øïò";
+ Text[ korean ] = "³ôÀÌ(~H)";
+ Text[ turkish ] = "~Yüks.";
+ };
+ MetricField ED_HEIGHT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 33 , 29 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 5 ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 5 ;
+ Last = 9999 ;
+ SpinSize = 10 ;
+ };
+ CheckBox CB_REL_HEIGHT
+ {
+ Pos = MAP_APPFONT ( 78 , 31 ) ;
+ Size = MAP_APPFONT ( 35 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "Re~lativ" ;
+ Text [ ENGLISH ] = "Relativ" ;
+ Text [ dutch ] = "Re~latief" ;
+ Text [ english_us ] = "Re~lative" ;
+ Text [ italian ] = "Re~lativo" ;
+ Text [ spanish ] = "Rela~tivo" ;
+ Text [ french ] = "Re~latif" ;
+ Text [ swedish ] = "Rel~ativ" ;
+ Text [ danish ] = "Relativ" ;
+ Text [ portuguese_brazilian ] = "Re~lativ" ;
+ Text [ portuguese ] = "Relat~ivo" ;
+ Text[ chinese_simplified ] = "숦﵀(~E)";
+ Text[ russian ] = "Îòíîñèò.";
+ Text[ polish ] = "Wzglêd~ny";
+ Text[ japanese ] = "Š„‡(~E)";
+ Text[ chinese_traditional ] = "¬Û¹ïªº(~E)";
+ Text[ arabic ] = "äÓÈí";
+ Text[ greek ] = "Ó÷åôéêÜ";
+ Text[ korean ] = "ºñ·Ê(~L)";
+ Text[ turkish ] = "G~öreceli";
+ };
+ CheckBox CB_FIXEDRATIO
+ {
+ Pos = MAP_APPFONT ( 12 , 47 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "Abgle~ich" ;
+ Text [ ENGLISH ] = "Fixed ratio" ;
+ Text [ english_us ] = "~Keep ratio" ;
+ Text [ dutch ] = "~Synchroniseren" ;
+ Text [ italian ] = "Proporz." ;
+ Text [ spanish ] = "Prop~orcional" ;
+ Text [ french ] = "~Proportionnel" ;
+ Text [ swedish ] = "~proportionellt" ;
+ Text [ danish ] = "Proport." ;
+ Text [ portuguese_brazilian ] = "Abgle~ich" ;
+ Text [ portuguese ] = "Pr~oporcional" ;
+ Text[ chinese_simplified ] = "ͬ²½»¯(~K)";
+ Text[ russian ] = "Ïðîïîðöèîíàëüíî";
+ Text[ polish ] = "Dopas~uj";
+ Text[ japanese ] = "’²®(~K)";
+ Text[ chinese_traditional ] = "¦P¨B¤Æ(~K)";
+ Text[ arabic ] = "ÊÒÇãä";
+ Text[ greek ] = "Áíáëïã~éêÜ";
+ Text[ korean ] = "ºñÀ² À¯Áö(~K)";
+ Text[ turkish ] = "Orant~ý";
+ };
+ CheckBox CB_AUTOHEIGHT
+ {
+ Pos = MAP_APPFONT ( 56 , 47 ) ;
+ Size = MAP_APPFONT ( 58 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "auto. H~öhe" ;
+ Text [ ENGLISH ] = "auto. Hei~ght" ;
+ Text [ norwegian ] = "auto. Hei~ght" ;
+ Text [ italian ] = "Altezza. ~auto" ;
+ Text [ portuguese_brazilian ] = "Altura automática" ;
+ Text [ portuguese ] = "Altura automática" ;
+ Text [ finnish ] = "automaattinen k~orkeus" ;
+ Text [ danish ] = "Auto. højde" ;
+ Text [ french ] = "Hau~teur auto." ;
+ Text [ swedish ] = "auto. h~öjd" ;
+ Text [ dutch ] = "Auto. h~oogte" ;
+ Text [ spanish ] = "Altura auto~m." ;
+ Text [ english_us ] = "AutoHei~ght" ;
+ Text[ chinese_simplified ] = "×Ô¶¯¸ß¶È(~G)";
+ Text[ russian ] = "Àâòîïîäáîð âûñîòû";
+ Text[ polish ] = "~Autom. wys.";
+ Text[ japanese ] = "‚‚³Ž©“®’²®(~G)";
+ Text[ chinese_traditional ] = "¦Û°Ê°ª«×(~G)";
+ Text[ arabic ] = "ÇÑÊÝÇÚ ÊáÞÇÆí";
+ Text[ greek ] = "Áõôüìáôï ýøïò";
+ Text[ korean ] = "ÀÚµ¿ ³ôÀÌ(~G)";
+ Text[ turkish ] = "otom. ~yüksekl.";
+ };
+ GroupBox GB_SIZE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 114 , 60 ) ;
+ Text = "Größe" ;
+ Text [ ENGLISH ] = "Size" ;
+ Text [ norwegian ] = "Størrelse" ;
+ Text [ italian ] = "Dimensione" ;
+ Text [ portuguese_brazilian ] = "Tamanho" ;
+ Text [ portuguese ] = "Tamanho" ;
+ Text [ finnish ] = "Koko" ;
+ Text [ danish ] = "Størrelse" ;
+ Text [ french ] = "Taille" ;
+ Text [ swedish ] = "Storlek" ;
+ Text [ dutch ] = "Grootte" ;
+ Text [ spanish ] = "Tamaño" ;
+ Text [ english_us ] = "Size" ;
+ Text[ chinese_simplified ] = "´óС";
+ Text[ russian ] = "Ðàçìåð";
+ Text[ polish ] = "Rozmiar";
+ Text[ japanese ] = "»²½Þ";
+ Text[ chinese_traditional ] = "¤j¤p";
+ Text[ arabic ] = "ÇáÍÌã";
+ Text[ greek ] = "ÌÝãåèïò";
+ Text[ korean ] = "Å©±â";
+ Text[ turkish ] = "Boyut";
+ };
+ RadioButton RB_ANCHOR_TYPE
+ {
+ Pos = MAP_APPFONT ( 132 , 16 ) ;
+ Size = MAP_APPFONT ( 25 , 10 ) ;
+ Text = "~an" ;
+ Text [ ENGLISH ] = "as" ;
+ Check = TRUE ;
+ Text [ english_us ] = "~To" ;
+ Text [ portuguese_brazilian ] = "~an" ;
+ Text [ swedish ] = "t~ill" ;
+ Text [ danish ] = "til" ;
+ Text [ italian ] = "~a" ;
+ Text [ spanish ] = "~A" ;
+ Text [ french ] = "~À" ;
+ Text [ dutch ] = "~aan" ;
+ Text [ portuguese ] = "pa~ra" ;
+ Text[ chinese_simplified ] = "ÖÁ(~T)";
+ Text[ russian ] = "~ê";
+ Text[ polish ] = "do";
+ Text[ japanese ] = "êŠ(~T)";
+ Text[ chinese_traditional ] = "¦Ü(~T)";
+ Text[ arabic ] = "Úáì";
+ Text[ greek ] = "ðñïò";
+ Text[ korean ] = "¸ÂÃâ °÷(~T)";
+ Text[ turkish ] = "~noktasý";
+ };
+ ListBox LB_ANCHOR_TYPE
+ {
+ Pos = MAP_APPFONT ( 158 , 14 ) ;
+ Size = MAP_APPFONT ( 46 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Seite" ; > ;
+ < "Absatz" ; > ;
+ < "Zeichen" ; > ;
+ < "Rahmen" ; > ;
+ };
+ StringList [ English ] =
+ {
+ < "Seite" ; > ;
+ < "Absatz" ; > ;
+ < "Zeichen" ; > ;
+ < "Rahmen" ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "Page" ; > ;
+ < "Paragraph" ; > ;
+ < "Character" ; > ;
+ < "Frame" ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "Seite" ; > ;
+ < "Absatz" ; > ;
+ < "Zeichen" ; > ;
+ < "Rahmen" ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "sida" ; > ;
+ < "stycke" ; > ;
+ < "tecken" ; > ;
+ < "Ram" ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "Side" ; > ;
+ < "Afsnit" ; > ;
+ < "Tegn" ; > ;
+ < "Ramme" ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "Pagina" ; > ;
+ < "Paragrafo" ; > ;
+ < "Carattere" ; > ;
+ < "Cornice" ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "Página" ; > ;
+ < "Párrafo" ; > ;
+ < "Carácter" ; > ;
+ < "Marcos" ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "Page" ; > ;
+ < "Paragraphe" ; > ;
+ < "Caractère" ; > ;
+ < "Cadre" ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "Pagina" ; > ;
+ < "Alinea" ; > ;
+ < "Teken" ; > ;
+ < "Kader" ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "Página" ; > ;
+ < "Parágrafo" ; > ;
+ < "Caracteres" ; > ;
+ < "Molduras" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "Ò³" ; > ;
+ < "¶ÎÂä" ; > ;
+ < "×Ö·û" ; > ;
+ < "¿ò" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Ñòðàíèöà" ; > ;
+ < "Àáçàö" ; > ;
+ < "Çíàê" ; > ;
+ < "Ðàìêà" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Strona" ; > ;
+ < "Akapit" ; > ;
+ < "Znak" ; > ;
+ < "Ramka" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "Íß°¼Þ" ; > ;
+ < "’i—Ž" ; > ;
+ < "•¶Žš" ; > ;
+ < "˜g" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "­¶" ; > ;
+ < "¬q¸¨" ; > ;
+ < "¦r¤¸" ; > ;
+ < "¤å¦r¤è¶ô" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÇáÕÝÍÉ" ; > ;
+ < "ÇáÝÞÑÉ" ; > ;
+ < "ÎØ" ; > ;
+ < "ÅØÇÑ" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "Óåëßäá" ; > ;
+ < "ÐáñÜãñáöïò" ; > ;
+ < "×áñáêôÞñåò" ; > ;
+ < "Ðåñßãñáììá" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "ÆäÀÌÁö" ; > ;
+ < "´Ü¶ô" ; > ;
+ < "¹®ÀÚ" ; > ;
+ < "ÇÁ·¹ÀÓ" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Sayfa" ; > ;
+ < "Paragraf" ; > ;
+ < "Karakter" ; > ;
+ < "Çerçeve" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < "Seite" ; > ;
+ < "Absatz" ; > ;
+ < "Zeichen" ; > ;
+ < "Rahmen" ; > ;
+ };
+ };
+ RadioButton RB_ANCHOR_CHAR
+ {
+ Pos = MAP_APPFONT ( 132 , 29 ) ;
+ Size = MAP_APPFONT ( 72 , 10 ) ;
+ Text = "als Zei~chen" ;
+ Text [ ENGLISH ] = "like a character" ;
+ Text [ english_us ] = "~As character" ;
+ Text [ portuguese_brazilian ] = "als Zei~chen" ;
+ Text [ swedish ] = "som te~cken" ;
+ Text [ danish ] = "som tegn" ;
+ Text [ italian ] = "quale ~carattere" ;
+ Text [ spanish ] = "Como ~carácter" ;
+ Text [ french ] = "Comme c~aractère" ;
+ Text [ dutch ] = "als te~ken" ;
+ Text [ portuguese ] = "como ~carácter" ;
+ Text[ chinese_simplified ] = "µ±×÷×Ö·û(~H)";
+ Text[ russian ] = "êàê çíàê";
+ Text[ polish ] = "jako zna~k";
+ Text[ japanese ] = "•¶Žš‚Æ‚µ‚Ä(~H)";
+ Text[ language_user1 ] = "èëè: ñèìâîë; èëè ðèñóíîê - èëE ñèEüJ; èëEðèñóûM";
+ Text[ chinese_traditional ] = "·í§@¦r¤¸(~H)";
+ Text[ arabic ] = "ßÍÑÝ";
+ Text[ greek ] = "ùò ÷áñáêôÞñáò";
+ Text[ korean ] = "¹®ÀÚ·Î(~A)";
+ Text[ turkish ] = "karakter o~larak";
+ };
+ /* RadioButton RB_TYPE_PAGE
+ {
+ Pos = MAP_APPFONT ( 132 , 15 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "~Seite" ;
+ Text [ ENGLISH ] = "Bound to page" ;
+ Text [ norwegian ] = "Bound to page" ;
+ Text [ italian ] = "Pagina" ;
+ Text [ portuguese_brazilian ] = "Limitado à página" ;
+ Text [ portuguese ] = "~Página" ;
+ Text [ finnish ] = "Sido sivulle" ;
+ Text [ danish ] = "På siden" ;
+ Text [ french ] = "P~age" ;
+ Text [ swedish ] = "~Sida" ;
+ Text [ dutch ] = "~Pagina" ;
+ Text [ spanish ] = "Pági~na" ;
+ Text [ english_us ] = "~Page" ;
+ };
+ RadioButton RB_TYPE_PARAGRAPH
+ {
+ Pos = MAP_APPFONT ( 132 , 28 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Absatz" ;
+ Text [ ENGLISH ] = "Frame at ~Paragraph" ;
+ Text [ norwegian ] = "Frame at ~Paragraph" ;
+ Text [ italian ] = "~Paragrafo" ;
+ Text [ portuguese_brazilian ] = "Moldura em ~Parágrafo" ;
+ Text [ portuguese ] = "~Parágrafo" ;
+ Text [ finnish ] = "Kehys ~kappaleessa" ;
+ Text [ danish ] = "Ved ~afsnit" ;
+ Text [ french ] = "~Paragraphe" ;
+ Text [ swedish ] = "St~ycke" ;
+ Text [ dutch ] = "~Alinea" ;
+ Text [ spanish ] = "Párra~fo" ;
+ Text [ english_us ] = "~Paragraph" ;
+ };
+ RadioButton RB_TYPE_CHAR
+ {
+ Pos = MAP_APPFONT ( 132 , 41 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "Zei~chen" ;
+ Text [ ENGLISH ] = "Frame at ~Character" ;
+ Text [ norwegian ] = "Frame at ~Character" ;
+ Text [ italian ] = "~Carattere" ;
+ Text [ portuguese_brazilian ] = "Moldura em ~Caracter" ;
+ Text [ portuguese ] = "~Caracter" ;
+ Text [ finnish ] = "Kehys ~merkissä" ;
+ Text [ danish ] = "På tegnet" ;
+ Text [ french ] = "~Caractère" ;
+ Text [ swedish ] = "~Tecken" ;
+ Text [ dutch ] = "~Teken" ;
+ Text [ spanish ] = "~Carácter" ;
+ Text [ english_us ] = "~Character" ;
+ };
+ RadioButton RB_TYPE_FLY
+ {
+ Pos = MAP_APPFONT ( 132 , 54 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Rahmen" ;
+ Text [ ENGLISH ] = "Frame at ~Frame" ;
+ Text [ english_us ] = "~Frame" ;
+ Text [ portuguese_brazilian ] = "~Rahmen" ;
+ Text [ swedish ] = "~Ramar" ;
+ Text [ danish ] = "~Rahmen" ;
+ Text [ italian ] = "~Cornice" ;
+ Text [ spanish ] = "~Marcos" ;
+ Text [ french ] = "~Cadre" ;
+ Text [ dutch ] = "~Kader" ;
+ Text [ portuguese ] = "~Moldura" ;
+ };*/
+ GroupBox GB_TYPE
+ {
+ Pos = MAP_APPFONT ( 126 , 3 ) ;
+ Size = MAP_APPFONT ( 84 , 39 ) ;
+ Text = "Verankerung" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "Ancoraggio" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "Âncora" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Forankring" ;
+ Text [ french ] = "Ancrage" ;
+ Text [ swedish ] = "Förankring" ;
+ Text [ dutch ] = "Verankering" ;
+ Text [ spanish ] = "Anclaje" ;
+ Text [ english_us ] = "Anchor" ;
+ Text[ chinese_simplified ] = "Ëø¶¨";
+ Text[ russian ] = "Ïðèâÿçêà";
+ Text[ polish ] = "Zakotwiczenie";
+ Text[ japanese ] = "±Ý¶°";
+ Text[ chinese_traditional ] = "Âê©w";
+ Text[ arabic ] = "ÅÑÓÇÁ";
+ Text[ greek ] = "Áãêýñùóç";
+ Text[ korean ] = "°íÁ¤ ±âÁØ";
+ Text[ turkish ] = "Sabitleme";
+ };
+ Window WN_BSP
+ {
+ Pos = MAP_APPFONT ( 217 , 6 ) ;
+ Size = MAP_APPFONT ( 39 , 58 ) ;
+ };
+ PushButton BT_REALSIZE
+ {
+ Pos = MAP_APPFONT ( 126 , 49 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ Text = "Originalgr~öße" ;
+ Text [ ENGLISH ] = "Real Size" ;
+ Text [ norwegian ] = "Real Size" ;
+ Text [ italian ] = "Dimens. originale" ;
+ 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 ] = "Originalst~orlek" ;
+ Text [ dutch ] = "~Originele grootte" ;
+ Text [ spanish ] = "Ta~mañ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 ] = "Ýlk b~oyut";
+ };
+ FixedText FT_HORIZONTAL
+ {
+ Pos = MAP_APPFONT ( 12 , 81 ) ;
+ Size = MAP_APPFONT ( 35 , 10 ) ;
+ Left = TRUE ;
+ Text = "Horizon~tal" ;
+ Text [ ENGLISH ] = "Hori~zontal" ;
+ Text [ norwegian ] = "Hori~zontal" ;
+ Text [ italian ] = "Ori~zzontale" ;
+ Text [ portuguese_brazilian ] = "Hori~zontal" ;
+ Text [ portuguese ] = "Hori~zontal" ;
+ Text [ finnish ] = "~Vaaksuunta" ;
+ Text [ danish ] = "Vandret" ;
+ Text [ french ] = "Hori~zontale" ;
+ Text [ swedish ] = "H~orisontellt" ;
+ Text [ dutch ] = "Horizon~taal" ;
+ Text [ spanish ] = "Hori~zontal" ;
+ Text [ english_us ] = "Hori~zontal" ;
+ Text[ chinese_simplified ] = "ˮƽ·½Ïò(~Z)";
+ Text[ russian ] = "Ïî ãîðèçîíòàëè";
+ Text[ polish ] = "W poziomie";
+ Text[ japanese ] = "‰¡(~Z)";
+ Text[ chinese_traditional ] = "¤ô¥­(~Z)";
+ Text[ arabic ] = "ÃÝÞí";
+ Text[ greek ] = "Ïñéæüíôéá";
+ Text[ korean ] = "¼öÆò(~Z)";
+ Text[ turkish ] = "Ya~tay";
+ };
+ ListBox DLB_HORIZONTAL
+ {
+ Pos = MAP_APPFONT ( 49 , 79 ) ;
+ Size = MAP_APPFONT ( 50 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_AT_HORZ_POS
+ {
+ Pos = MAP_APPFONT ( 102 , 81 ) ;
+ Size = MAP_APPFONT ( 12 , 10 ) ;
+ Left = TRUE ;
+ Text = "~um" ;
+ Text [ ENGLISH ] = "at" ;
+ Text [ norwegian ] = "i" ;
+ Text [ italian ] = "~di" ;
+ Text [ portuguese_brazilian ] = "em" ;
+ Text [ portuguese ] = "em" ;
+ Text [ finnish ] = " - " ;
+ Text [ danish ] = "ved" ;
+ Text [ french ] = "~de" ;
+ Text [ swedish ] = "~med" ;
+ Text [ dutch ] = "~om" ;
+ Text [ spanish ] = "a" ;
+ Text [ english_us ] = "by" ;
+ Text[ chinese_simplified ] = "¼ä¸ô";
+ Text[ russian ] = "íà";
+ Text[ polish ] = "o";
+ Text[ japanese ] = "ŠÔŠu";
+ Text[ chinese_traditional ] = "¶¡¹j";
+ Text[ arabic ] = "ÈãÞÏÇÑ";
+ Text[ greek ] = "á~íÜ";
+ Text[ korean ] = "Á¤µµ";
+ Text[ turkish ] = "g~rnt.";
+ };
+ MetricField ED_AT_HORZ_POS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 118 , 79 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = -9999 ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = -9999 ;
+ Last = 9999 ;
+ SpinSize = 10 ;
+ };
+ FixedText FT_HORI_RELATION
+ {
+ Pos = MAP_APPFONT ( 161 , 81 ) ;
+ Size = MAP_APPFONT ( 16 , 10 ) ;
+ Left = TRUE ;
+ Text = "zu" ;
+ Text [ ENGLISH ] = "to" ;
+ Text [ english_us ] = "to" ;
+ Text [ portuguese_brazilian ] = "zu" ;
+ Text [ swedish ] = "till" ;
+ Text [ danish ] = "fra" ;
+ Text [ italian ] = "a" ;
+ Text [ spanish ] = "a" ;
+ Text [ french ] = "de" ;
+ Text [ dutch ] = "naar" ;
+ Text [ portuguese ] = "para" ;
+ Text[ chinese_simplified ] = "ÖÁ";
+ Text[ russian ] = "ê";
+ Text[ polish ] = "do";
+ Text[ japanese ] = "‘ÎÛ";
+ Text[ chinese_traditional ] = "¦Ü";
+ Text[ arabic ] = "Åáì";
+ Text[ greek ] = "ðñïò";
+ Text[ korean ] = "¸ÂÃâ ¹æÇâ";
+ Text[ turkish ] = "->";
+ Text[ language_user1 ] = "\"zu\" muss ich hier weglassen weils es als Suffix im letzten Satzelement (Listbox) schon vorkommt.";
+ };
+ ListBox LB_HORI_RELATION
+ {
+ Pos = MAP_APPFONT ( 178 , 79 ) ;
+ Size = MAP_APPFONT ( 70 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ CheckBox CB_MIRROR
+ {
+ Pos = MAP_APPFONT ( 49 , 95 ) ;
+ Size = MAP_APPFONT ( 205 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "Auf geraden Seiten ~spiegeln" ;
+ Text [ ENGLISH ] = "Switch position on even page numbers" ;
+ Text [ english_us ] = "~Mirror on even pages" ;
+ Text [ portuguese_brazilian ] = "Auf geraden Seiten ~spiegeln" ;
+ Text [ swedish ] = "~spegelvänd på jämna sidor" ;
+ Text [ danish ] = "Spejlvend på lige sider" ;
+ Text [ italian ] = "Rispecchia su pagine ~pari" ;
+ Text [ spanish ] = "Reflejar en ~páginas pares" ;
+ Text [ french ] = "~En vis-à-vis sur les pages paires" ;
+ Text [ dutch ] = "Op even pagina's ~spiegelen" ;
+ Text [ portuguese ] = "Inverter em páginas ~pares" ;
+ Text[ chinese_simplified ] = "·´Ó³µ½Å¼ÊýÒ³Ãæ(~E)";
+ Text[ russian ] = "Îòîáðàçèòü íà ÷åòíûõ ñòðàíèöàõ";
+ Text[ polish ] = "Przerzu~æ na parzystych stronach";
+ Text[ japanese ] = "‹ô”Íß°¼Þ‚É”½“](~E)";
+ Text[ chinese_traditional ] = "¤Ï¬M¨ì°¸¼Æ­¶­±(~E)";
+ Text[ arabic ] = "ÇäÚßÇÓ Úáì ÇáÕÝÍÇÊ ÇáÒæÌíÉ";
+ Text[ greek ] = "Êáèñåðôé~óìüò óôéò Üñôéåò óåëßäåò";
+ Text[ korean ] = "¦¼ö ÆäÀÌÁö ¸¶ÁÖº¸±â(~M)";
+ Text[ turkish ] = "Çift numaralý sayfalarda ya~nsýt";
+ };
+ FixedText FT_VERTICAL
+ {
+ Pos = MAP_APPFONT ( 12 , 111 ) ;
+ Size = MAP_APPFONT ( 35 , 10 ) ;
+ Left = TRUE ;
+ 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 ] = "~Verticale" ;
+ Text [ swedish ] = "~Vertikalt" ;
+ Text [ dutch ] = "~Verticaal" ;
+ Text [ spanish ] = "~Vertical" ;
+ Text [ english_us ] = "~Vertical" ;
+ Text[ chinese_simplified ] = "´¹Ö±·½Ïò(~V)";
+ Text[ russian ] = "Ïî âåðòèêàëè";
+ Text[ polish ] = "W pionie";
+ Text[ japanese ] = "c(~V)";
+ Text[ chinese_traditional ] = "««ª½¤è¦V(~V)";
+ Text[ arabic ] = "ÑÃÓí";
+ Text[ greek ] = "Êáôáêüñõöá";
+ Text[ korean ] = "¼öÁ÷(~V)";
+ Text[ turkish ] = "Di~key";
+ };
+ ListBox DLB_VERTICAL
+ {
+ Pos = MAP_APPFONT ( 49 , 109 ) ;
+ Size = MAP_APPFONT ( 50 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_AT_VERT_POS
+ {
+ Pos = MAP_APPFONT ( 102 , 111 ) ;
+ Size = MAP_APPFONT ( 12 , 10 ) ;
+ Left = TRUE ;
+ Text = "u~m" ;
+ Text [ ENGLISH ] = "at" ;
+ Text [ norwegian ] = "i" ;
+ Text [ italian ] = "di" ;
+ Text [ portuguese_brazilian ] = "em" ;
+ Text [ portuguese ] = "em" ;
+ Text [ finnish ] = " - " ;
+ Text [ danish ] = "ved" ;
+ Text [ french ] = "d~e" ;
+ Text [ swedish ] = "m~ed" ;
+ Text [ dutch ] = "~om" ;
+ Text [ spanish ] = "a" ;
+ Text [ english_us ] = "by" ;
+ Text[ chinese_simplified ] = "¼ä¸ô";
+ Text[ russian ] = "íà";
+ Text[ polish ] = "o";
+ Text[ japanese ] = "ŠÔŠu";
+ Text[ chinese_traditional ] = "¶¡¹j";
+ Text[ arabic ] = "ÈãÞÏÇÑ";
+ Text[ greek ] = "áíÜ";
+ Text[ korean ] = "¿¡ ÀÇÇØ";
+ Text[ turkish ] = "gr~nt.";
+ };
+ MetricField ED_AT_VERT_POS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 118 , 109 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = -9999 ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = -9999 ;
+ Last = 9999 ;
+ SpinSize = 10 ;
+ };
+ FixedText FT_VERT_RELATION
+ {
+ Pos = MAP_APPFONT ( 161 , 111 ) ;
+ Size = MAP_APPFONT ( 16 , 10 ) ;
+ Left = TRUE ;
+ Text = "zu" ;
+ Text [ ENGLISH ] = "to" ;
+ Text [ english_us ] = "to" ;
+ Text [ portuguese_brazilian ] = "zu" ;
+ Text [ swedish ] = "till" ;
+ Text [ danish ] = "fra" ;
+ Text [ italian ] = "a" ;
+ Text [ spanish ] = "a" ;
+ Text [ french ] = "de" ;
+ Text [ dutch ] = "naar" ;
+ Text [ portuguese ] = "para" ;
+ Text[ chinese_simplified ] = "ÖÁ";
+ Text[ russian ] = "ê";
+ Text[ polish ] = "do";
+ Text[ japanese ] = "‘ÎÛ";
+ Text[ chinese_traditional ] = "¦Ü";
+ Text[ arabic ] = "Åáì";
+ Text[ greek ] = "ðñïò";
+ Text[ korean ] = "¸ÂÃâ ¹æÇâ";
+ Text[ turkish ] = "->";
+ Text[ language_user1 ] = "\"zu\" muss ich hier weglassen weils es als Suffix im letzten Satzelement (Listbox) schon vorkommt.";
+ };
+ ListBox LB_VERT_RELATION
+ {
+ Pos = MAP_APPFONT ( 178 , 109 ) ;
+ Size = MAP_APPFONT ( 70 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ GroupBox GB_POSITION
+ {
+ Pos = MAP_APPFONT ( 6 , 66 ) ;
+ Size = MAP_APPFONT ( 248 , 63 ) ;
+ Text = "Position" ;
+ Text [ ENGLISH ] = "Position" ;
+ Text [ norwegian ] = "Posisjon" ;
+ Text [ italian ] = "Posizione" ;
+ Text [ portuguese_brazilian ] = "Posição" ;
+ Text [ portuguese ] = "Posição" ;
+ Text [ finnish ] = "Sijainti" ;
+ Text [ danish ] = "Placering" ;
+ Text [ french ] = "Position" ;
+ Text [ swedish ] = "Position" ;
+ Text [ dutch ] = "Positie" ;
+ Text [ spanish ] = "Posición" ;
+ Text [ english_us ] = "Position" ;
+ Text[ chinese_simplified ] = "λÖÃ";
+ Text[ russian ] = "Ïîçèöèÿ";
+ Text[ polish ] = "Pozycja";
+ Text[ japanese ] = "ˆÊ’u";
+ Text[ chinese_traditional ] = "¦ì¸m";
+ Text[ arabic ] = "ÇáãæÖÚ";
+ Text[ greek ] = "ÈÝóç";
+ Text[ korean ] = "À§Ä¡";
+ Text[ turkish ] = "Konum";
+ };
+};
+TabPage TP_GRF_EXT
+{
+ Hide = TRUE ;
+ HelpID = HID_GRF_EXT ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Bitmap BMP_EXAMPLE
+ {
+ File = "dog.bmp" ;
+ };
+ GroupBox GB_CONNECT
+ {
+ Pos = MAP_APPFONT ( 6 , 91 ) ;
+ Size = MAP_APPFONT ( 248 , 38 ) ;
+ Text = "Verknüpfung" ;
+ Text [ ENGLISH ] = "Link" ;
+ Text [ norwegian ] = "Kobling" ;
+ Text [ italian ] = "Collegamento" ;
+ Text [ portuguese_brazilian ] = "Ligar" ;
+ Text [ portuguese ] = "Ligar" ;
+ Text [ finnish ] = "Yhteys" ;
+ Text [ danish ] = "Kæde" ;
+ Text [ french ] = "Lien" ;
+ Text [ swedish ] = "Länk" ;
+ Text [ dutch ] = "Koppeling" ;
+ Text [ spanish ] = "Vínculo" ;
+ Text [ english_us ] = "Link" ;
+ Text[ chinese_simplified ] = "Á´½Ó";
+ Text[ russian ] = "Ññûëêà";
+ Text[ polish ] = "£¹cze";
+ Text[ japanese ] = "Øݸ";
+ Text[ chinese_traditional ] = "±¶®|";
+ Text[ arabic ] = "ÇÑÊÈÇØ";
+ Text[ greek ] = "Óýíäåóç";
+ Text[ korean ] = "¿¬°á";
+ Text[ turkish ] = "Baðlantý";
+ };
+ FixedText FT_CONNECT
+ {
+ Pos = MAP_APPFONT ( 13 , 102 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Text = "~Dateiname" ;
+ Text [ English ] = "Filename" ;
+ Text [ english_us ] = "~File name" ;
+ Text [ italian ] = "~Nome file" ;
+ Text [ spanish ] = "~Nombre de archivo" ;
+ Text [ french ] = "~Nom de fichier" ;
+ Text [ dutch ] = "~Naam bestand" ;
+ Text [ swedish ] = "~Filnamn" ;
+ Text [ danish ] = "Filnavn" ;
+ Text [ portuguese_brazilian ] = "~Dateiname" ;
+ Text [ portuguese ] = "~Nome do ficheiro" ;
+ Text[ chinese_simplified ] = "ÎļþÃû(~F)";
+ Text[ russian ] = "Èìÿ ôàéëà";
+ Text[ polish ] = "Nazwa pliku";
+ Text[ japanese ] = "̧²Ù–¼(~F)";
+ Text[ chinese_traditional ] = "ÀɮצW(~F)";
+ Text[ arabic ] = "ÇÓã ÇáãáÝ";
+ Text[ greek ] = "¼íïìá áñ÷åßïõ";
+ Text[ korean ] = "ÆÄÀÏ À̸§(~F)";
+ Text[ turkish ] = "D~osya adý";
+ };
+ Edit ED_CONNECT
+ {
+ Pos = MAP_APPFONT ( 13 , 114 ) ;
+ Size = MAP_APPFONT ( 200 , 12 ) ;
+ Text = "[Keiner]" ;
+ Text [ ENGLISH ] = "[None]" ;
+ Text [ norwegian ] = "[Ingen]" ;
+ Text [ italian ] = "[senza]" ;
+ 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 ] = "[Sin]" ;
+ Text [ english_us ] = "[None]" ;
+ Readonly = TRUE ;
+ Left = TRUE ;
+ Border = TRUE ;
+ Text[ chinese_simplified ] = "[ÎÞ]";
+ Text[ russian ] = "[áåç]";
+ Text[ polish ] = "[brak]";
+ Text[ japanese ] = "[‚È‚µ]";
+ Text[ language_user1 ] = "ûD";
+ Text[ chinese_traditional ] = "[µL]";
+ Text[ arabic ] = "[ÈÏæä]";
+ Text[ greek ] = "[ÊáíÝíá]";
+ Text[ korean ] = "[¾øÀ½]";
+ Text[ turkish ] = "[Boþ]";
+ };
+ PushButton PB_BROWSE
+ {
+ Disable = TRUE ;
+ Pos = MAP_APPFONT ( 230 , 114 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ Text = "~..." ;
+ Disable = TRUE ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~..." ;
+ Text [ swedish ] = "~..." ;
+ Text [ danish ] = "~..." ;
+ Text [ italian ] = "~..." ;
+ Text [ spanish ] = "~..." ;
+ Text [ french ] = "~..." ;
+ Text [ dutch ] = "~..." ;
+ Text [ portuguese_brazilian ] = "~..." ;
+ Text [ portuguese ] = "~..." ;
+ Text[ chinese_simplified ] = "(~.)...";
+ Text[ russian ] = "~...";
+ Text[ polish ] = "~...";
+ Text[ japanese ] = "~...";
+ Text[ chinese_traditional ] = "~....";
+ Text[ arabic ] = "...~";
+ Text[ greek ] = "~...";
+ Text[ korean ] = "~...";
+ Text[ turkish ] = "~...";
+ };
+ CheckBox CB_VERT
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 48 , 10 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text = "~vertikal" ;
+ Text [ ENGLISH ] = "verti~cally" ;
+ Text [ norwegian ] = "verti~cally" ;
+ Text [ italian ] = "~Verticale" ;
+ Text [ portuguese_brazilian ] = "hori~zontalmente" ;
+ Text [ portuguese ] = "~vertical" ;
+ Text [ finnish ] = "~pystysuunnassa" ;
+ Text [ danish ] = "lodret" ;
+ Text [ french ] = "~verticalement" ;
+ Text [ swedish ] = "~vertikalt" ;
+ Text [ dutch ] = "verti~caal" ;
+ Text [ spanish ] = "~vertical" ;
+ Text [ english_us ] = "~vertically" ;
+ Text[ chinese_simplified ] = "´¹Ö±·½Ïò(~V)";
+ Text[ russian ] = "âåðòèêàëüíî";
+ Text[ polish ] = "pio~nowo";
+ Text[ japanese ] = "c(~V)";
+ Text[ chinese_traditional ] = "««ª½¤è¦V(~V)";
+ Text[ arabic ] = "ÑÃÓí";
+ Text[ greek ] = "êáôáêüñõöá";
+ Text[ korean ] = "¼öÁ÷(~V)";
+ Text[ turkish ] = "d~ikey";
+ };
+ CheckBox CB_HOR
+ {
+ Pos = MAP_APPFONT ( 12 , 31 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "hori~zontal" ;
+ Text [ english ] = "hori~zontal" ;
+ Text[ english_us ] = "hori~zontally";
+ Text[ portuguese ] = "~horizontal";
+ Text[ russian ] = "ãîðèçîíòàëüíî, íà";
+ Text[ greek ] = "ïñé~æüíôéá";
+ Text[ dutch ] = "~horizontaal";
+ Text[ french ] = "~horizontalement";
+ Text[ spanish ] = "~horizontal, sobre";
+ Text[ italian ] = "~orizzontalmente su ";
+ Text[ danish ] = "vandret";
+ Text[ swedish ] = "h~orisontalt";
+ Text[ polish ] = "p~oziomo, na";
+ Text[ portuguese_brazilian ] = "verti~calmente";
+ Text[ japanese ] = "¶‰E(~H)";
+ Text[ korean ] = "¼öÆòÀ¸·Î, À§(~Z)";
+ Text[ chinese_simplified ] = "ˮƽ·½Ïò(~Z)";
+ Text[ chinese_traditional ] = "¤ô¥­¤è¦V";
+ Text[ turkish ] = "yata~y";
+ Text[ arabic ] = "ÃÝÞí";
+ };
+ RadioButton RB_MIRROR_ALL_PAGES
+ {
+ Pos = MAP_APPFONT ( 18 , 44 ) ;
+ Size = MAP_APPFONT ( 100 , 12 ) ;
+ TabStop = TRUE ;
+ Text = "~auf allen Seiten" ;
+ Text [ ENGLISH ] = "on all pages" ;
+ Text [ english_us ] = "on all pages" ;
+ Text[ portuguese ] = "~em todas as páginas";
+ Text[ russian ] = "on all pages";
+ Text[ greek ] = "óå üëåò ôéò óåëßäåò";
+ Text[ dutch ] = "~op alle pagina's";
+ Text[ french ] = "~sur toutes les pages";
+ Text[ spanish ] = "on all pages";
+ Text[ italian ] = "on all pages";
+ Text[ danish ] = "på alle sider";
+ Text[ swedish ] = "på ~alla sidor";
+ Text[ polish ] = "on all pages";
+ Text[ portuguese_brazilian ] = "on all pages";
+ Text[ japanese ] = "‚·‚ׂĂÌÍß°¼Þ‚É";
+ Text[ korean ] = "on all pages";
+ Text[ chinese_simplified ] = "È«²¿Ò³Ãæ";
+ Text[ chinese_traditional ] = "¦b©Ò¦³­¶­±¤W";
+ Text[ turkish ] = "on all pages";
+ Text[ arabic ] = "Úáì ßá ÇáÕÝÍÇÊ";
+ };
+ RadioButton RB_MIRROR_LEFT_PAGES
+ {
+ Pos = MAP_APPFONT ( 18 , 59 ) ;
+ Size = MAP_APPFONT ( 100 , 12 ) ;
+ TabStop = TRUE ;
+ Text = "auf ~linken Seiten" ;
+ Text [ ENGLISH ] = "on even pages" ;
+ Text [ english_us ] = "on even pages" ;
+ Text[ portuguese ] = "~nas páginas da esquerda";
+ Text[ russian ] = "on even pages";
+ Text[ greek ] = "óå áñéóôåñÝò óå~ëßäåò";
+ Text[ dutch ] = "op e~ven pagina's";
+ Text[ french ] = "sur les pages de ~gauche";
+ Text[ spanish ] = "on even pages";
+ Text[ italian ] = "on even pages";
+ Text[ danish ] = "på venstre sider";
+ Text[ swedish ] = "på vä~nstersidor";
+ Text[ polish ] = "on even pages";
+ Text[ portuguese_brazilian ] = "on even pages";
+ Text[ japanese ] = "¶Íß°¼Þ‚É";
+ Text[ korean ] = "on even pages";
+ Text[ chinese_simplified ] = "ÔÚ×ó·½Ò³Ãæ";
+ Text[ chinese_traditional ] = "¦b¥ª­¶¤W";
+ Text[ turkish ] = "on even pages";
+ Text[ arabic ] = "Úáì ÇáÕÝÍÇÊ ÇáÒæÌíÉ";
+ };
+ RadioButton RB_MIRROR_RIGHT_PAGES
+ {
+ Pos = MAP_APPFONT ( 18 , 74 ) ;
+ Size = MAP_APPFONT ( 100 , 12 ) ;
+ TabStop = TRUE ;
+ Text = "auf ~rechten Seiten" ;
+ Text [ ENGLISH ] = "on odd pages" ;
+ Text [ english_us ] = "on odd pages" ;
+ Text[ portuguese ] = "nas pág~inas da direita";
+ Text[ russian ] = "on odd pages";
+ Text[ greek ] = "óå äåîéÝò óåëßäåò";
+ Text[ dutch ] = "op o~neven pagina's";
+ Text[ french ] = "sur les pages de ~droite";
+ Text[ spanish ] = "on odd pages";
+ Text[ italian ] = "on odd pages";
+ Text[ danish ] = "på højre sider";
+ Text[ swedish ] = "på höge~rsidor";
+ Text[ polish ] = "on odd pages";
+ Text[ portuguese_brazilian ] = "on odd pages";
+ Text[ japanese ] = "‰EÍß°¼Þ‚É";
+ Text[ korean ] = "on odd pages";
+ Text[ chinese_simplified ] = "ÔÚÓÒ·½Ò³Ãæ";
+ Text[ chinese_traditional ] = "¦b¥k­¶¤W";
+ Text[ turkish ] = "on odd pages";
+ Text[ arabic ] = "Úáì ÇáÕÝÍÇÊ ÇáÝÑÏíÉ";
+ };
+
+/* ListBox LB_MIRROR_PAGES
+ {
+ Pos = MAP_APPFONT ( 22 , 44 ) ;
+ Size = MAP_APPFONT ( 55 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "allen" ; > ;
+ < "linken" ; > ;
+ < "rechten" ; > ;
+ };
+ StringList [ English ] =
+ {
+ < "allen" ; > ;
+ < "linken" ; > ;
+ < "rechten" ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "all" ; > ;
+ < "even" ; > ;
+ < "odd" ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "allen" ; > ;
+ < "linken" ; > ;
+ < "rechten" ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "alla" ; > ;
+ < "jämna" ; > ;
+ < "högra" ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "alle" ; > ;
+ < "venstre" ; > ;
+ < "højre" ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "tutti" ; > ;
+ < "pari" ; > ;
+ < "dispari" ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "Todos" ; > ;
+ < "pares" ; > ;
+ < "impares" ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "toutes les" ; > ;
+ < "paires" ; > ;
+ < "impaires" ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "alle" ; > ;
+ < "linker" ; > ;
+ < "rechter" ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "tudo" ; > ;
+ < "ímpar" ; > ;
+ < "par" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "È«²¿" ; > ;
+ < "×ó" ; > ;
+ < "ÓÒ" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "âñåì" ; > ;
+ < "íå÷åòíûé" ; > ;
+ < "÷åòíûé" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "wszystkim" ; > ;
+ < "parzyste" ; > ;
+ < "nieparzyste" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‚·‚ׂÄ" ; > ;
+ < "¶" ; > ;
+ < "‰E" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¥þ³¡" ; > ;
+ < "¥ª" ; > ;
+ < "¥k" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "Çáßá" ; > ;
+ < "ÇáíÓÑì" ; > ;
+ < "Çáíãäì" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "üëá" ; > ;
+ < "áñéóôåñÜ" ; > ;
+ < "äåîéÜ" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "Àüü" ; > ;
+ < "¦¼ö" ; > ;
+ < "Ȧ¼ö" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "tüm" ; > ;
+ < "sol" ; > ;
+ < "sað" ; > ;
+ };
+ };
+ FixedText FT_MIRROR_PAGES
+ {
+ Pos = MAP_APPFONT ( 80 , 46 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Seiten" ;
+ Text [ ENGLISH ] = "pages" ;
+ Text [ english_us ] = "~pages" ;
+ Text [ portuguese_brazilian ] = "~Seiten" ;
+ Text [ swedish ] = "~Sidor" ;
+ Text [ danish ] = "Sider" ;
+ Text [ italian ] = "~Pagine" ;
+ Text [ spanish ] = "~páginas" ;
+ Text [ french ] = "~pages" ;
+ Text [ dutch ] = "~Pagina's" ;
+ Text [ portuguese ] = "~Páginas" ;
+ Text[ chinese_simplified ] = "Ò³(~P)";
+ Text[ russian ] = "Ñòðàíèöû";
+ Text[ polish ] = "Strony";
+ Text[ japanese ] = "Íß°¼Þ(~P)";
+ Text[ chinese_traditional ] = "­¶(~P)";
+ Text[ arabic ] = "ÇáÕÝÍÇÊ";
+ Text[ greek ] = "Óåëßäåò";
+ Text[ korean ] = "ÆäÀÌÁö(~P)";
+ Text[ language_user1 ] = "LS 18.11.99 Steht mitten im Satz, muß also nicht in allen Sprachen groß geschrieben werden! - -";
+ Text[ turkish ] = "~sayfalarda";
+ };
+*/ Window WN_BMP
+ {
+ Pos = MAP_APPFONT ( 120 , 13 ) ;
+ Size = MAP_APPFONT ( 127 , 69 ) ;
+ };
+ GroupBox GB_MIRROR
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 85 ) ;
+ Text = "Spiegeln" ;
+ Text [ ENGLISH ] = "Mirror" ;
+ Text [ norwegian ] = "Speil" ;
+ Text [ italian ] = "Rispecchia" ;
+ Text [ portuguese_brazilian ] = "Espelhar" ;
+ Text [ portuguese ] = "Reflectir" ;
+ Text [ finnish ] = "Peilaa" ;
+ Text [ danish ] = "Spejlvend" ;
+ Text [ french ] = "Refléter" ;
+ Text [ swedish ] = "Spegla" ;
+ Text [ dutch ] = "Spiegelen" ;
+ Text [ spanish ] = "Reflejar" ;
+ Text [ english_us ] = "Flip" ;
+ Text[ chinese_simplified ] = "·´Ó³";
+ Text[ russian ] = "Îòîáðàçèòü";
+ Text[ polish ] = "Przerzuæ";
+ Text[ japanese ] = "”½“]";
+ Text[ chinese_traditional ] = "¤Ï¬M";
+ Text[ arabic ] = "ÇäÚßÇÓ";
+ Text[ greek ] = "ÁíáóôñïöÞ";
+ Text[ korean ] = "´ëĪ";
+ Text[ turkish ] = "Yansýt";
+ };
+};
+String STR_EDIT_GRF
+{
+ TEXT = "Verknüpfen" ;
+ TEXT [ English ] = "Link to" ;
+ TEXT [ norwegian ] = "Link to" ;
+ TEXT [ italian ] = "Collega" ;
+ TEXT [ portuguese_brazilian ] = "Ligação com" ;
+ TEXT [ portuguese ] = "Ligar" ;
+ TEXT [ finnish ] = "Linkitä:" ;
+ TEXT [ danish ] = "Kæd" ;
+ TEXT [ french ] = "Lien " ;
+ TEXT [ swedish ] = "Länka" ;
+ TEXT [ dutch ] = "Koppelen" ;
+ TEXT [ spanish ] = "Vincular" ;
+ TEXT [ english_us ] = "Link" ;
+ TEXT[ chinese_simplified ] = "Á´½Ó";
+ TEXT[ russian ] = "Ñâÿçàòü";
+ TEXT[ polish ] = "Po³¹cz";
+ TEXT[ japanese ] = "Øݸ";
+ TEXT[ chinese_traditional ] = "±¶®|";
+ TEXT[ arabic ] = "ÑÈØ";
+ TEXT[ greek ] = "Óýíäåóç";
+ TEXT[ korean ] = "¿¬°á";
+ TEXT[ turkish ] = "Baðla";
+};
+
+TabPage TP_FRM_URL
+{
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ HelpID = HID_FRM_URL ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ FixedText FT_URL
+ {
+ Pos = MAP_APPFONT ( 13 , 15 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "U~RL" ;
+ Text [ English ] = "URL" ;
+ Text [ dutch ] = "~URL" ;
+ Text [ english_us ] = "~URL" ;
+ Text [ italian ] = "~URL" ;
+ Text [ spanish ] = "~URL" ;
+ Text [ french ] = "~URL" ;
+ Text [ swedish ] = "U~RL" ;
+ Text [ danish ] = "URL" ;
+ Text [ portuguese_brazilian ] = "U~RL" ;
+ Text [ portuguese ] = "U~RL" ;
+ Text[ chinese_simplified ] = "URL(~U)";
+ Text[ russian ] = "U~RL";
+ Text[ polish ] = "URL";
+ Text[ japanese ] = "URL(~U)";
+ Text[ chinese_traditional ] = "~URL";
+ Text[ arabic ] = "U~RL";
+ Text[ greek ] = "URL";
+ Text[ korean ] = "~URL";
+ Text[ turkish ] = "U~RL";
+ };
+ Edit ED_URL
+ {
+ Pos = MAP_APPFONT ( 45 , 14 ) ;
+ Size = MAP_APPFONT ( 89 , 12 ) ;
+ Left = TRUE ;
+ Border = TRUE ;
+ };
+ FixedText FT_NAME
+ {
+ Pos = MAP_APPFONT ( 13 , 32 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "~Name" ;
+ Text [ English ] = "~Name" ;
+ Text [ english_us ] = "~Name" ;
+ Text [ italian ] = "~Nome" ;
+ Text [ spanish ] = "~Nombre" ;
+ Text [ french ] = "~Nom" ;
+ Text [ dutch ] = "~Naam" ;
+ Text [ swedish ] = "~Namn" ;
+ Text [ danish ] = "Navn" ;
+ Text [ portuguese_brazilian ] = "~Name" ;
+ Text [ portuguese ] = "~Nome" ;
+ Text[ chinese_simplified ] = "Ãû³Æ(~N)";
+ Text[ russian ] = "Èìÿ";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "–¼‘O(~N)";
+ Text[ chinese_traditional ] = "¦WºÙ(~N)";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§(~N)";
+ Text[ turkish ] = "~Ad";
+ };
+ Edit ED_NAME
+ {
+ Pos = MAP_APPFONT ( 45 , 31 ) ;
+ Size = MAP_APPFONT ( 89 , 12 ) ;
+ Left = TRUE ;
+ Border = TRUE ;
+ };
+ FixedText FT_FRAME
+ {
+ Pos = MAP_APPFONT ( 13 , 49 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "~Frame" ;
+ Text [ English ] = "Frame" ;
+ Text [ dutch ] = "~Frame" ;
+ Text [ english_us ] = "Frame" ;
+ Text [ italian ] = "~Frame" ;
+ Text [ spanish ] = "Frame" ;
+ Text [ french ] = "~Frame" ;
+ Text [ swedish ] = "R~am" ;
+ Text [ danish ] = "Frame" ;
+ Text [ portuguese_brazilian ] = "~Frame" ;
+ Text [ portuguese ] = "~Frame" ;
+ Text[ chinese_simplified ] = "¿ò¶ÔÏó";
+ Text[ russian ] = "Êàäð";
+ Text[ polish ] = "Ramka";
+ Text[ japanese ] = "ÌÚ°Ñ";
+ Text[ chinese_traditional ] = "°T®Ø";
+ Text[ arabic ] = "~Frame";
+ Text[ greek ] = "Ðëáßóéï";
+ Text[ korean ] = "ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "~Frame";
+ };
+ ComboBox CB_FRAME
+ {
+ Pos = MAP_APPFONT ( 45 , 48 ) ;
+ Size = MAP_APPFONT ( 89 , 50 ) ;
+ Left = TRUE ;
+ DropDown = TRUE ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_SEARCH
+ {
+ Pos = MAP_APPFONT ( 140 , 14 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ TabStop = TRUE ;
+ Text = "A~uswählen..." ;
+ Text [ English ] = "~Browse..." ;
+ Text [ english_us ] = "~Browse..." ;
+ Text [ portuguese_brazilian ] = "Durchs~uchen..." ;
+ Text [ swedish ] = "Välj ~ut..." ;
+ Text [ danish ] = "Gennemse..." ;
+ Text [ italian ] = "~Sfoglia..." ;
+ Text [ spanish ] = "Selecc~ionar..." ;
+ Text [ french ] = "~Parcourir..." ;
+ Text [ dutch ] = "Selec~teren..." ;
+ Text [ portuguese ] = "~Pesquisar..." ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ(~B)...";
+ Text[ russian ] = "Âûáðàòü...";
+ Text[ polish ] = "Wybierz...";
+ Text[ japanese ] = "‘I‘ð(~B)...";
+ Text[ chinese_traditional ] = "¿ï¾Ü(~B)...";
+ Text[ arabic ] = "ÇÓÊÚÑÇÖ...";
+ Text[ greek ] = "ÅðéëïãÞ...";
+ Text[ korean ] = "¼±ÅÃÇϱâ(~B)...";
+ Text[ turkish ] = "~Seç...";
+ };
+ GroupBox GB_HYPERLINK
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 190 , 67 ) ;
+ Text = "Hyperlink" ;
+ Text [ ENGLISH ] = "Hyperlink" ;
+ Text [ english_us ] = "Hyperlink" ;
+ Text [ italian ] = "Hyperlink" ;
+ Text [ spanish ] = "Hiperenlace" ;
+ Text [ french ] = "Hyperlien" ;
+ Text [ dutch ] = "Hyperlink" ;
+ Text [ swedish ] = "Hyperlänk" ;
+ Text [ danish ] = "Hyperlink" ;
+ Text [ portuguese_brazilian ] = "Hyperlink" ;
+ Text [ portuguese ] = "Hiperligação" ;
+ Text[ chinese_simplified ] = "³¬Á´½Ó";
+ Text[ russian ] = "Ãèïåðññûëêà";
+ Text[ polish ] = "Hiper³¹cze";
+ Text[ japanese ] = "ʲÊß°Øݸ";
+ Text[ chinese_traditional ] = "¶W±¶®|";
+ Text[ arabic ] = "ÇÑÊÈÇØ ÊÔÚÈí";
+ Text[ greek ] = "Õðåñ-óýíäåóç";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ©";
+ Text[ turkish ] = "Hyperlink";
+ };
+ CheckBox CB_SERVER
+ {
+ Pos = MAP_APPFONT ( 208 , 14 ) ;
+ Size = MAP_APPFONT ( 44 , 12 ) ;
+ Text = "~Server" ;
+ Text [ ENGLISH ] = "Server" ;
+ Text [ english_us ] = "~Server" ;
+ Text [ italian ] = "~Server" ;
+ Text [ spanish ] = "~Servidor" ;
+ Text [ french ] = "~Serveur" ;
+ Text [ dutch ] = "~Server" ;
+ Text [ swedish ] = "~Server" ;
+ Text [ danish ] = "Server" ;
+ Text [ portuguese_brazilian ] = "~Server" ;
+ Text [ portuguese ] = "~Servidor" ;
+ Text[ chinese_simplified ] = "·þÎñÆ÷(~S)";
+ Text[ russian ] = "Ñåðâåð";
+ Text[ polish ] = "Serwer";
+ Text[ japanese ] = "»°ÊÞ°(~S)";
+ Text[ chinese_traditional ] = "¦øªA¾¹(~S)";
+ Text[ arabic ] = "ÇáãÒæøÏ";
+ Text[ greek ] = "ÄéáêïìéóôÞò";
+ Text[ korean ] = "¼­¹ö(~S)";
+ Text[ turkish ] = "~Sunucu";
+ };
+ CheckBox CB_CLIENT
+ {
+ Pos = MAP_APPFONT ( 208 , 31 ) ;
+ Size = MAP_APPFONT ( 44 , 12 ) ;
+ Text = "~Client" ;
+ Text [ ENGLISH ] = "Client" ;
+ Text [ dutch ] = "~Cliënt" ;
+ Text [ english_us ] = "~Client" ;
+ Text [ italian ] = "~Client" ;
+ Text [ spanish ] = "~Cliente" ;
+ Text [ french ] = "~Client" ;
+ Text [ swedish ] = "~Klient" ;
+ Text [ danish ] = "Klient" ;
+ Text [ portuguese ] = "~Cliente" ;
+ Text [ portuguese_brazilian ] = "~Client" ;
+ Text[ chinese_simplified ] = "¿Í»§¶Ë(~C)";
+ Text[ russian ] = "Êëèåíò";
+ Text[ polish ] = "Klient";
+ Text[ japanese ] = "¸×²±ÝÄ(~C)";
+ Text[ chinese_traditional ] = "¥Î¤áºÝ(~C)";
+ Text[ arabic ] = "ÇáÚãíá";
+ Text[ greek ] = "ÐåëÜôçò";
+ Text[ korean ] = "Ŭ¶óÀ̾ðÆ®(~C)";
+ Text[ turkish ] = "~Ýstemci";
+ };
+ GroupBox GB_IMAGE
+ {
+ Pos = MAP_APPFONT ( 202 , 3 ) ;
+ Size = MAP_APPFONT ( 52 , 67 ) ;
+ Text = "Image Map" ;
+ Text [ ENGLISH ] = "Image Map" ;
+ Text [ dutch ] = "Image Map" ;
+ Text [ english_us ] = "Image map" ;
+ Text [ italian ] = "Image Map" ;
+ Text [ spanish ] = "Image Map" ;
+ Text [ french ] = "Image Map" ;
+ Text [ swedish ] = "Image Map" ;
+ Text [ danish ] = "Image Map" ;
+ Text [ portuguese_brazilian ] = "Image Map" ;
+ Text [ portuguese ] = "Mapa de imagens" ;
+ Text[ chinese_simplified ] = "ͼÏñÓ³Éä";
+ Text[ russian ] = "Êàðòà èçîáðàæåíèÿ";
+ Text[ polish ] = "Mapa obrazkowa";
+ Text[ japanese ] = "²Ò°¼ÞϯÌß";
+ Text[ chinese_traditional ] = "¼v¹³¬M®g";
+ Text[ arabic ] = "Image map";
+ Text[ greek ] = "Image map";
+ Text[ korean ] = "À̹ÌÁö ¸Ê";
+ Text[ turkish ] = "Resim eþlem";
+ };
+};
+TabPage TP_FRM_ADD
+{
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ HelpID = HID_FRM_ADD ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ FixedText FT_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 13 ) ;
+ Size = MAP_APPFONT ( 61 , 10 ) ;
+ Text = "~Name" ;
+ Text [ ENGLISH ] = "Name" ;
+ Text [ english_us ] = "~Name" ;
+ Text [ italian ] = "~Nome" ;
+ Text [ spanish ] = "~Nombre" ;
+ Text [ french ] = "~Nom" ;
+ Text [ dutch ] = "~Naam" ;
+ Text [ swedish ] = "~Namn" ;
+ Text [ danish ] = "Navn" ;
+ Text [ portuguese_brazilian ] = "~Name" ;
+ Text [ portuguese ] = "~Nome" ;
+ Text[ chinese_simplified ] = "Ãû³Æ(~N)";
+ Text[ russian ] = "Èìÿ";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "–¼‘O(~N)";
+ Text[ chinese_traditional ] = "¦WºÙ(~N)";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§(~N)";
+ Text[ turkish ] = "~Ad";
+ };
+ Edit ED_NAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 81 , 12 ) ;
+ Size = MAP_APPFONT ( 167 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_ALT_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 61 , 10 ) ;
+ Text = "~Alternativtext" ;
+ Text [ ENGLISH ] = "Alternative text" ;
+ Text [ english_us ] = "~Alternative (Text only)" ;
+ Text [ italian ] = "Testo ~alternativo" ;
+ Text [ spanish ] = "Te~xto alternativo" ;
+ Text [ french ] = "~Texte (facultatif)" ;
+ Text [ dutch ] = "~Alternatieve tekst" ;
+ Text [ swedish ] = "~Alternativtext" ;
+ Text [ danish ] = "Alternativtekst" ;
+ Text [ portuguese_brazilian ] = "~Alternativtext" ;
+ Text [ portuguese ] = "Texto ~alternativo" ;
+ Text[ chinese_simplified ] = "¸½¼ÓÎÄ×Ö(~A)";
+ Text[ russian ] = "Àëüòåðíàòèâíûé òåêñò";
+ Text[ polish ] = "Tekst alternatywny";
+ Text[ japanese ] = "‘I‘𕶑(~A)";
+ Text[ chinese_traditional ] = "ªþ¥[¤å¦r(~A)";
+ Text[ arabic ] = "äÕ ÈÏíá";
+ Text[ greek ] = "Åí~áëëáêôéêÜ (Ìüíï êåßìåíï)";
+ Text[ korean ] = "´ëü (ÅؽºÆ®¸¸)(~A)";
+ Text[ turkish ] = "~Alternatif metin";
+ };
+ Edit ED_ALT_NAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 81 , 26 ) ;
+ Size = MAP_APPFONT ( 167 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_PREV
+ {
+ Pos = MAP_APPFONT ( 12 , 41 ) ;
+ Size = MAP_APPFONT ( 61 , 10 ) ;
+ Text = "~Vorgänger" ;
+ Text [ ENGLISH ] = "Previous link" ;
+ Text [ english_us ] = "~Previous link" ;
+ Text [ portuguese_brazilian ] = "~Vorgänger" ;
+ Text [ swedish ] = "Före~gående" ;
+ Text [ danish ] = "Overordnet" ;
+ Text [ italian ] = "~Precedente" ;
+ Text [ spanish ] = "~Anterior" ;
+ Text [ french ] = "~Précédent" ;
+ Text [ dutch ] = "~Vorganger" ;
+ Text [ portuguese ] = "Ligação ~anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸öÁ´½Ó(~P)";
+ Text[ russian ] = "Ïðåäûäóùèé";
+ Text[ polish ] = "Poprzednik";
+ Text[ japanese ] = "ŽQÆŒ³(~P)";
+ Text[ chinese_traditional ] = "¤W¤@­Ó±¶®|(~P)";
+ Text[ arabic ] = "ÇáÓÇÈÞ";
+ Text[ greek ] = "Ðñïçãïýìåíï";
+ Text[ korean ] = "ÀÌÀü ¿¬°á(~P)";
+ Text[ turkish ] = "~Önceki";
+ };
+ Edit ED_PREV
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 81 , 40 ) ;
+ Size = MAP_APPFONT ( 167 , 12 ) ;
+ TabStop = TRUE ;
+ ReadOnly = TRUE ;
+ };
+ FixedText FT_NEXT
+ {
+ Pos = MAP_APPFONT ( 12 , 56 ) ;
+ Size = MAP_APPFONT ( 61 , 10 ) ;
+ Text = "Nach~folger" ;
+ Text [ ENGLISH ] = "Next link" ;
+ Text [ english_us ] = "~Next link" ;
+ Text [ portuguese_brazilian ] = "Nach~folger" ;
+ Text [ swedish ] = "~Följande" ;
+ Text [ danish ] = "Underordnet" ;
+ Text [ italian ] = "~Successivo" ;
+ Text [ spanish ] = "~Vínculo siguiente" ;
+ Text [ french ] = "Lien suivant" ;
+ Text [ dutch ] = "Op~volger" ;
+ Text [ portuguese ] = "Ligação ~seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸öÁ´½Ó(~N)";
+ Text[ russian ] = "Ñëåäóþùàÿ";
+ Text[ polish ] = "Nastêpca";
+ Text[ japanese ] = "ŽQÆæ(~N)";
+ Text[ chinese_traditional ] = "¤U¤@­Ó±¶®|(~N)";
+ Text[ arabic ] = "ÇááÇÍÞ";
+ Text[ greek ] = "Åðüìåíï";
+ Text[ korean ] = "´ÙÀ½ ¿¬°á(~N)";
+ Text[ turkish ] = "S~onraki";
+ };
+ Edit ED_NEXT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 81 , 55 ) ;
+ Size = MAP_APPFONT ( 167 , 12 ) ;
+ TabStop = TRUE ;
+ ReadOnly = TRUE ;
+ };
+ GroupBox GB_NAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 71 ) ;
+ Text = "Namen" ;
+ Text [ English ] = "Names" ;
+ Text [ english_us ] = "Names" ;
+ Text [ italian ] = "Nomi" ;
+ Text [ spanish ] = "Nombres" ;
+ Text [ french ] = "Noms" ;
+ Text [ dutch ] = "Namen" ;
+ Text [ swedish ] = "Namn" ;
+ Text [ danish ] = "Navne" ;
+ Text [ portuguese_brazilian ] = "Namen" ;
+ Text [ portuguese ] = "Nomes" ;
+ Text[ chinese_simplified ] = "Ãû³Æ";
+ Text[ russian ] = "Èìåíà";
+ Text[ polish ] = "Nazwy";
+ Text[ japanese ] = "–¼‘O";
+ Text[ chinese_traditional ] = "¦WºÙ";
+ Text[ arabic ] = "ÇáÃÓãÇÁ";
+ Text[ greek ] = "Ïíüìáôá";
+ Text[ korean ] = "À̸§";
+ Text[ turkish ] = "Ad";
+ };
+ CheckBox CB_PROTECT_CONTENT
+ {
+ Pos = MAP_APPFONT ( 12 , 90 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "~Inhalt" ;
+ Text [ ENGLISH ] = "Content" ;
+ Text [ english_us ] = "~Contents" ;
+ Text [ portuguese_brazilian ] = "Prot~eger conteúdo" ;
+ Text [ swedish ] = "~Innehåll" ;
+ Text [ danish ] = "Indhold" ;
+ Text [ italian ] = "~Contenuto" ;
+ Text [ spanish ] = "~Contenido" ;
+ Text [ french ] = "~Contenu" ;
+ Text [ dutch ] = "~Inhoud" ;
+ Text [ portuguese ] = "~Conteúdo" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝ(~C)";
+ Text[ russian ] = "Ñîäåðæèìîå";
+ Text[ polish ] = "Zawarto~Ͼ";
+ Text[ japanese ] = "“à—e(~C)";
+ Text[ chinese_traditional ] = "¤º®e(~C)";
+ Text[ arabic ] = "ÇáãÍÊæíÇÊ";
+ Text[ greek ] = "Ðåñéå÷üìåíá";
+ Text[ korean ] = "³»¿ë(~C)";
+ Text[ turkish ] = "~Ýçerik";
+ };
+ CheckBox CB_PROTECT_FRAME
+ {
+ Pos = MAP_APPFONT ( 12 , 102 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "~Position" ;
+ Text [ ENGLISH ] = "Pos~ition" ;
+ Text [ english_us ] = "P~osition" ;
+ Text [ portuguese_brazilian ] = "Proteger pos~ição" ;
+ Text [ swedish ] = "~Position" ;
+ Text [ danish ] = "Placering" ;
+ Text [ italian ] = "Pos~izione" ;
+ Text [ spanish ] = "P~osición" ;
+ Text [ french ] = "Pos~ition" ;
+ Text [ dutch ] = "Pos~itie" ;
+ Text [ portuguese ] = "~Posição" ;
+ Text[ chinese_simplified ] = "λÖÃ(~P)";
+ Text[ russian ] = "Ïîçèöèÿ";
+ Text[ polish ] = "Pozycja";
+ Text[ japanese ] = "ˆÊ’u(~P)";
+ Text[ chinese_traditional ] = "¦ì¸m(~P)";
+ Text[ arabic ] = "ÇáãæÖÚ";
+ Text[ greek ] = "ÈÝóç";
+ Text[ korean ] = "À§Ä¡(~O)";
+ Text[ turkish ] = "K~onum";
+ };
+ CheckBox CB_PROTECT_SIZE
+ {
+ Pos = MAP_APPFONT ( 12 , 114 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "~Größe" ;
+ Text [ ENGLISH ] = "Size" ;
+ Text [ english_us ] = "~Size" ;
+ Text [ portuguese_brazilian ] = "Pro~tect Size" ;
+ Text [ swedish ] = "~Storlek" ;
+ Text [ danish ] = "Størrelse" ;
+ Text [ italian ] = "~Dimensione" ;
+ Text [ spanish ] = "~Tamaño" ;
+ Text [ french ] = "~Taille" ;
+ Text [ dutch ] = "~Grootte" ;
+ Text [ portuguese ] = "~Tamanho" ;
+ Text[ chinese_simplified ] = "´óС(~S)";
+ Text[ russian ] = "Ðàçìåð";
+ Text[ polish ] = "Rozmiar";
+ Text[ japanese ] = "»²½Þ(~S)";
+ Text[ chinese_traditional ] = "¤j¤p(~S)";
+ Text[ arabic ] = "ÇáÍÌã";
+ Text[ greek ] = "ÌÝãåèïò";
+ Text[ korean ] = "Å©±â(~S)";
+ Text[ turkish ] = "~Boyut";
+ };
+ GroupBox GB_PROTECT
+ {
+ Pos = MAP_APPFONT ( 6 , 77 ) ;
+ Size = MAP_APPFONT ( 62 , 52 ) ;
+ Text = "Schützen" ;
+ Text [ English ] = "Protect" ;
+ Text [ english_us ] = "Protect" ;
+ Text [ portuguese_brazilian ] = "Schützen" ;
+ Text [ swedish ] = "Skydda" ;
+ Text [ danish ] = "Beskyt" ;
+ Text [ italian ] = "Proteggi" ;
+ Text [ spanish ] = "Proteger" ;
+ Text [ french ] = "Protéger" ;
+ Text [ dutch ] = "Beveiligen" ;
+ Text [ portuguese ] = "Proteger" ;
+ Text[ chinese_simplified ] = "±£»¤";
+ Text[ russian ] = "Çàùèòà";
+ Text[ polish ] = "Chroñ";
+ Text[ japanese ] = "•ÛŒì";
+ Text[ chinese_traditional ] = "«OÅ@";
+ Text[ arabic ] = "ÍãÇíÉ";
+ Text[ greek ] = "Ðñïóôáóßá";
+ Text[ korean ] = "º¸È£";
+ Text[ turkish ] = "Koru";
+ };
+ CheckBox CB_EDIT_IN_READONLY
+ {
+ Pos = MAP_APPFONT ( 80 , 90 ) ;
+ Size = MAP_APPFONT ( 162 , 10 ) ;
+ Text = "~Editierbar in schreibgeschütztem Dokument" ;
+ Text [ ENGLISH ] = "Edit in readonly Document" ;
+ Text [ english_us ] = "~Editable in read-only document" ;
+ Text [ portuguese_brazilian ] = "Editierbar in schreibgeschütztem Dokument" ;
+ Text [ swedish ] = "R~edigerbar i skrivskyddat dokument" ;
+ Text [ danish ] = "Redigerbar i skrivebeskyttet dokument" ;
+ Text [ italian ] = "Modificabile nel documento a sola lettura" ;
+ Text [ spanish ] = "Se puede editar en documentos de solo lectura" ;
+ Text [ french ] = "À é~diter dans le document en mode Lecture seule" ;
+ Text [ dutch ] = "~Editeerbaar in schrijfbeveiligd document" ;
+ Text [ portuguese ] = "~Editável em documento só de leitura" ;
+ Text[ chinese_simplified ] = "¿É±à¼­·À¸²Ð´µÄÎĵµ(~E)";
+ Text[ russian ] = "Ïðàâêà çàùèùåííîãî îò çàïèñè äîêóìåíòà";
+ Text[ polish ] = "Edycja ~mo¿liwa w dokumentach tylko do odczytu";
+ Text[ japanese ] = "‘‚«ž‚ݕی앶‘‚É•ÒW‰Â”\\(~E)";
+ Text[ chinese_traditional ] = "¥i½s¿è°ßŪ¤å¥ó(~E)";
+ Text[ arabic ] = "ÞÇÈá ááÊÍÑíÑ Ýí ãÓÊäÏ ááÞÑÇÁÉ ÝÞØ";
+ Text[ greek ] = "Äõíáôüôçôá ~åðåîåñãáóßáò óå Ýããñáöï ôýðïõ \"Ìüíï ãéá áíÜãíùóç\"";
+ Text[ korean ] = "ÀбâÀü¿ë ¹®¼­¿¡¼­ ÆíÁý°¡´É(~E)";
+ Text[ turkish ] = "Salt okunur belge içinde düzenlenebilir";
+ };
+ CheckBox CB_PRINT_FRAME
+ {
+ Pos = MAP_APPFONT ( 80 , 103 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "Dru~cken" ;
+ Text [ ENGLISH ] = "Print ~frame" ;
+ Text [ norwegian ] = "Print ~frame" ;
+ Text [ italian ] = "Stampa" ;
+ Text [ portuguese_brazilian ] = "Imprimir ~moldura" ;
+ Text [ portuguese ] = "Imprimir" ;
+ Text [ finnish ] = "Tulosta ~kehys" ;
+ Text [ danish ] = "Udskriv" ;
+ Text [ french ] = "~Imprimer" ;
+ Text [ swedish ] = "Skriv ~ut" ;
+ Text [ dutch ] = "Afdru~kken" ;
+ Text [ spanish ] = "Im~primir" ;
+ Text [ english_us ] = "Prin~t" ;
+ Text[ chinese_simplified ] = "´òÓ¡(~P)";
+ Text[ russian ] = "Ïå÷àòü";
+ Text[ polish ] = "Drukuj";
+ Text[ japanese ] = "ˆóü(~P)";
+ Text[ chinese_traditional ] = "¦C¦L(~P)";
+ Text[ arabic ] = "ØÈÇÚÉ";
+ Text[ greek ] = "Åêôýðùóç";
+ Text[ korean ] = "Àμâ(~T)";
+ Text[ turkish ] = "~Yazdýr";
+ };
+ GroupBox GB_EXT
+ {
+ Pos = MAP_APPFONT ( 74 , 77 ) ;
+ Size = MAP_APPFONT ( 180 , 52 ) ;
+ Text = "Zusätze" ;
+ Text [ ENGLISH ] = "Additional Setting" ;
+ Text [ english_us ] = "Options" ;
+ Text [ italian ] = "Extra" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ french ] = "Options" ;
+ Text [ dutch ] = "Overige" ;
+ Text [ swedish ] = "Tillägg" ;
+ Text [ danish ] = "Indstillinger" ;
+ Text [ portuguese_brazilian ] = "Zusätze" ;
+ Text [ portuguese ] = "Opções" ;
+ Text[ chinese_simplified ] = "ÆäËû";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Dodatki";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¨ä¥L";
+ Text[ arabic ] = "ÎíÇÑÇÊ";
+ Text[ greek ] = "Ðñüóèåôá";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ };
+};
diff --git a/sw/source/ui/frmdlg/frmui.src b/sw/source/ui/frmdlg/frmui.src
new file mode 100644
index 000000000000..b48fabe3f05e
--- /dev/null
+++ b/sw/source/ui/frmdlg/frmui.src
@@ -0,0 +1,1388 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmui.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "frmui.hrc"
+
+/*-----------------------------------------------------------------------
+ Beschreibung: V-Align
+ -----------------------------------------------------------------------*/
+String STR_TOP
+{
+ TEXT = "~Oben" ;
+ TEXT [ English ] = "Top" ;
+ TEXT [ norwegian ] = "Top" ;
+ TEXT [ italian ] = "Alto" ;
+ TEXT [ portuguese_brazilian ] = "Topo" ;
+ TEXT [ portuguese ] = "Em cima" ;
+ TEXT [ finnish ] = "Ylä" ;
+ TEXT [ danish ] = "Foroven" ;
+ TEXT [ french ] = "~En haut" ;
+ TEXT [ swedish ] = "~Överst" ;
+ TEXT [ dutch ] = "~Boven" ;
+ TEXT [ spanish ] = "~Arriba" ;
+ TEXT [ english_us ] = "~Top" ;
+ TEXT[ chinese_simplified ] = "ÉÏ(~T)";
+ TEXT[ russian ] = "Ââåðõó";
+ TEXT[ polish ] = "Na górze";
+ TEXT[ japanese ] = "ã(~T)";
+ TEXT[ chinese_traditional ] = "¤W(~T)";
+ TEXT[ arabic ] = "ÃÚáì";
+ TEXT[ greek ] = "ÐÜíù";
+ TEXT[ korean ] = "ˤ(~T)";
+ TEXT[ turkish ] = "~Üst";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_BOTTOM
+{
+ TEXT = "~Unten" ;
+ TEXT [ English ] = "Bottom" ;
+ TEXT [ norwegian ] = "Bottom" ;
+ TEXT [ italian ] = "Basso" ;
+ TEXT [ portuguese_brazilian ] = "Base" ;
+ TEXT [ portuguese ] = "~Base" ;
+ TEXT [ finnish ] = "Ala" ;
+ TEXT [ danish ] = "Forneden" ;
+ TEXT [ french ] = "En ~bas" ;
+ TEXT [ swedish ] = "Nederst" ;
+ TEXT [ dutch ] = "~Beneden" ;
+ TEXT [ spanish ] = "A~bajo" ;
+ TEXT [ english_us ] = "~Bottom" ;
+ TEXT[ chinese_simplified ] = "ÏÂ(~B)";
+ TEXT[ russian ] = "Âíèçó";
+ TEXT[ polish ] = "Na dole";
+ TEXT[ japanese ] = "‰º(~B)";
+ TEXT[ chinese_traditional ] = "¤U(~B)";
+ TEXT[ arabic ] = "ÃÓÝá";
+ TEXT[ greek ] = "ÊÜôù";
+ TEXT[ korean ] = "¾Æ·¡(~B)";
+ TEXT[ turkish ] = "A~ltta";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_CENTER_HORI
+{
+ TEXT = "~Zentriert" ;
+ TEXT [ English ] = "Centered" ;
+ TEXT [ norwegian ] = "Centered" ;
+ TEXT [ italian ] = "Centrato" ;
+ TEXT [ portuguese_brazilian ] = "Centralizado" ;
+ TEXT [ portuguese ] = "Centrado" ;
+ TEXT [ finnish ] = "Keski" ;
+ TEXT [ danish ] = "Centreret" ;
+ TEXT [ french ] = "~Centré" ;
+ TEXT [ swedish ] = "~Centrerad" ;
+ TEXT [ dutch ] = "~Gecentreerd" ;
+ TEXT [ spanish ] = "~Centrado" ;
+ TEXT [ english_us ] = "~Centered" ;
+ TEXT[ chinese_simplified ] = "¾ÓÖÐ(~C)";
+ TEXT[ russian ] = "Ïî öåíòðó";
+ TEXT[ polish ] = "Wyœrodkuj";
+ TEXT[ japanese ] = "’†‰›(~C)";
+ TEXT[ chinese_traditional ] = "¸m¤¤(~C)";
+ TEXT[ arabic ] = "ÊæÓíØ";
+ TEXT[ greek ] = "ÊåíôñáñéóìÝíá";
+ TEXT[ korean ] = "°¡¿îµ¥(~C)";
+ TEXT[ turkish ] = "~Ortala";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_FROMTOP
+{
+ TEXT = "Von Oben" ;
+ TEXT [ English ] = "From top" ;
+ TEXT [ norwegian ] = "From top" ;
+ TEXT [ italian ] = "Dall'alto" ;
+ TEXT [ portuguese_brazilian ] = "Do topo" ;
+ TEXT [ portuguese ] = "De cima" ;
+ TEXT [ finnish ] = "Ylhäältä" ;
+ TEXT [ danish ] = "Ovenfra" ;
+ TEXT [ french ] = "Du haut" ;
+ TEXT [ swedish ] = "Uppifrån" ;
+ TEXT [ dutch ] = "Van boven" ;
+ TEXT [ spanish ] = "Desde arriba" ;
+ TEXT [ english_us ] = "From top" ;
+ TEXT[ chinese_simplified ] = "´ÓÉÏ";
+ TEXT[ russian ] = "Ñâåðõó";
+ TEXT[ polish ] = "Z góry";
+ TEXT[ japanese ] = "ã‚©‚ç";
+ TEXT[ chinese_traditional ] = "±q¤W";
+ TEXT[ arabic ] = "ãä ÃÚáì";
+ TEXT[ greek ] = "Aðü ðÜíù";
+ TEXT[ korean ] = "À§ºÎÅÍ";
+ TEXT[ turkish ] = "Üstten";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_FROMBOTTOM
+{
+ TEXT = "Von Unten" ;
+ TEXT [ English ] = "From bottom" ;
+ Text [ portuguese ] = "De baixo" ;
+ Text [ english_us ] = "From bottom" ;
+ Text [ portuguese_brazilian ] = "Von Unten" ;
+ Text [ swedish ] = "Nedifrån" ;
+ Text [ danish ] = "Nedefra" ;
+ Text [ italian ] = "Dal basso" ;
+ Text [ spanish ] = "Desde abajo" ;
+ Text [ french ] = "Du bas" ;
+ Text [ dutch ] = "Van beneden" ;
+ Text[ chinese_simplified ] = "´ÓÏÂ";
+ Text[ russian ] = "Ñíèçó";
+ Text[ polish ] = "Z do³u";
+ Text[ japanese ] = "‰º‚©‚ç";
+ Text[ chinese_traditional ] = "±q¤U";
+ Text[ arabic ] = "ãä ÃÓÝá";
+ Text[ greek ] = "Áðü êÜôù";
+ Text[ korean ] = "¾Æ·¡ºÎÅÍ";
+ Text[ turkish ] = "Alttan";
+ Text[ language_user1 ] = " ";
+};
+String STR_BELOW
+{
+ TEXT = "Unterhalb" ;
+ TEXT [ English ] = "Below" ;
+ Text [ portuguese ] = "Abaixo" ;
+ Text [ english_us ] = "Below" ;
+ Text [ portuguese_brazilian ] = "Unterhalb" ;
+ Text [ swedish ] = "Nedanför" ;
+ Text [ danish ] = "Nedenfor" ;
+ Text [ italian ] = "Al di sotto" ;
+ Text [ spanish ] = "Debajo" ;
+ Text [ french ] = "Infra" ;
+ Text [ dutch ] = "Beneden" ;
+ Text[ chinese_simplified ] = "Ö®ÏÂ";
+ Text[ russian ] = "Ñíèçó";
+ Text[ polish ] = "Poni¿ej";
+ Text[ japanese ] = "‰º‚É";
+ Text[ chinese_traditional ] = "¤§¤U";
+ Text[ arabic ] = "ÃÓÝá";
+ Text[ greek ] = "ÊÜôù áðü";
+ Text[ korean ] = "¾Æ·¡";
+ Text[ turkish ] = "Altta";
+ Text[ language_user1 ] = " ";
+};
+/*-----------------------------------------------------------------------
+ Beschreibung: H-Align
+ -----------------------------------------------------------------------*/
+String STR_LEFT
+{
+ TEXT = "Links" ;
+ TEXT [ English ] = "Left" ;
+ TEXT [ norwegian ] = "Left" ;
+ TEXT [ italian ] = "Sinistra" ;
+ TEXT [ portuguese_brazilian ] = "A Esquerda" ;
+ TEXT [ portuguese ] = "Esquerda" ;
+ TEXT [ finnish ] = "Vasen" ;
+ TEXT [ danish ] = "Venstre" ;
+ TEXT [ french ] = "À gauche" ;
+ TEXT [ swedish ] = "Vänster" ;
+ TEXT [ dutch ] = "Link" ;
+ TEXT [ spanish ] = "Izquierda" ;
+ TEXT [ english_us ] = "Left" ;
+ TEXT[ chinese_simplified ] = "×ó";
+ TEXT[ russian ] = "Ñëåâà";
+ TEXT[ polish ] = "Z lewej strony";
+ TEXT[ japanese ] = "¶";
+ TEXT[ chinese_traditional ] = "¥ª";
+ TEXT[ arabic ] = "Åáì ÇáíÓÇÑ";
+ TEXT[ greek ] = "ÁñéóôåñÜ";
+ TEXT[ korean ] = "¿ÞÂÊ";
+ TEXT[ turkish ] = "Sol";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_MIR_LEFT
+{
+ TEXT = "Innen" ;
+ TEXT [ English ] = "Inside" ;
+ Text [ portuguese ] = "Interior" ;
+ Text [ english_us ] = "Inside" ;
+ Text [ portuguese_brazilian ] = "Innen" ;
+ Text [ swedish ] = "Invändigt" ;
+ Text [ danish ] = "Indersiden" ;
+ Text [ italian ] = "Interno" ;
+ Text [ spanish ] = "Interior" ;
+ Text [ french ] = "Intérieur" ;
+ Text [ dutch ] = "Binnenin" ;
+ Text[ chinese_simplified ] = "ÄÚ";
+ Text[ russian ] = "Âíóòðè";
+ Text[ polish ] = "Wewn¹trz";
+ Text[ japanese ] = "“à‘¤";
+ Text[ chinese_traditional ] = "¤º";
+ Text[ arabic ] = "ÏÇÎá";
+ Text[ greek ] = "ÅóùôåñéêÜ";
+ Text[ korean ] = "³»ºÎ";
+ Text[ turkish ] = "Ýç";
+ Text[ language_user1 ] = " ";
+};
+String STR_RIGHT
+{
+ TEXT = "Rechts" ;
+ TEXT [ English ] = "Right" ;
+ TEXT [ norwegian ] = "Right" ;
+ TEXT [ italian ] = "Destra" ;
+ TEXT [ portuguese_brazilian ] = "A Direita" ;
+ TEXT [ portuguese ] = "Direita" ;
+ TEXT [ finnish ] = "Oikea" ;
+ TEXT [ danish ] = "Højre" ;
+ TEXT [ french ] = "À droite" ;
+ TEXT [ swedish ] = "Höger" ;
+ TEXT [ dutch ] = "Rechts" ;
+ TEXT [ spanish ] = "Derecha" ;
+ TEXT [ english_us ] = "Right" ;
+ TEXT[ chinese_simplified ] = "ÓÒ";
+ TEXT[ russian ] = "Ñïðàâà";
+ TEXT[ polish ] = "Z prawej";
+ TEXT[ japanese ] = "‰E";
+ TEXT[ chinese_traditional ] = "¥k";
+ TEXT[ arabic ] = "Åáì Çáíãíä";
+ TEXT[ greek ] = "ÄåîéÜ";
+ TEXT[ korean ] = "¿À¸¥ÂÊ";
+ TEXT[ turkish ] = "Sað";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_MIR_RIGHT
+{
+ TEXT = "Außen" ;
+ TEXT [ English ] = "Outside" ;
+ TEXT [ norwegian ] = "Outside" ;
+ TEXT [ italian ] = "Esterno" ;
+ TEXT [ portuguese_brazilian ] = "Fora" ;
+ TEXT [ portuguese ] = "Exterior" ;
+ TEXT [ finnish ] = "Ulkopuoli" ;
+ TEXT [ danish ] = "Ydersiden" ;
+ TEXT [ french ] = "Extérieur" ;
+ TEXT [ swedish ] = "Utsida" ;
+ TEXT [ dutch ] = "Buiten" ;
+ TEXT [ spanish ] = "Exterior" ;
+ TEXT [ english_us ] = "Outside" ;
+ TEXT[ chinese_simplified ] = "Íâ²à";
+ TEXT[ russian ] = "Ñíàðóæè";
+ TEXT[ polish ] = "Na zewn¹trz";
+ TEXT[ japanese ] = "ŠO‘¤";
+ TEXT[ chinese_traditional ] = "¥~°¼";
+ TEXT[ arabic ] = "ÎÇÑÌ";
+ TEXT[ greek ] = "ÅîùôåñéêÜ";
+ TEXT[ korean ] = "¿ÜºÎ";
+ TEXT[ turkish ] = "Dýþ";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_CENTER_VERT
+{
+ TEXT = "~Mitte" ;
+ Text [ English ] = "~Middle" ;
+ Text [ portuguese ] = "~Centro" ;
+ Text [ english_us ] = "C~enter" ;
+ Text [ portuguese_brazilian ] = "~Mitte" ;
+ Text [ swedish ] = "~Mitten" ;
+ Text [ danish ] = "Centreret" ;
+ Text [ italian ] = "Centro" ;
+ Text [ spanish ] = "~Centro" ;
+ Text [ french ] = "~Milieu" ;
+ Text [ dutch ] = "~Midden" ;
+ Text[ chinese_simplified ] = "ÖÐ(~E)";
+ Text[ russian ] = "Ñåðåäèíà";
+ Text[ polish ] = "Wyœrodkuj";
+ Text[ japanese ] = "’†S(~E)";
+ Text[ chinese_traditional ] = "¸m¤¤(~E)";
+ Text[ arabic ] = "ÇáæÓØ";
+ Text[ greek ] = "ÊÝíôñï";
+ Text[ korean ] = "°¡¿îµ¥(~E)";
+ Text[ turkish ] = "O~rta";
+ Text[ language_user1 ] = " ";
+};
+String STR_FROMLEFT
+{
+ TEXT = "Von Links" ;
+ TEXT [ English ] = "From left" ;
+ TEXT [ norwegian ] = "From left" ;
+ TEXT [ italian ] = "Da sinistra" ;
+ TEXT [ portuguese_brazilian ] = "Da esquerda" ;
+ TEXT [ portuguese ] = "Esquerda" ;
+ TEXT [ finnish ] = "Vasemmalta" ;
+ TEXT [ danish ] = "Fra venstre" ;
+ TEXT [ french ] = "De gauche" ;
+ TEXT [ swedish ] = "Från vänster" ;
+ TEXT [ dutch ] = "Van links" ;
+ TEXT [ spanish ] = "De izquierda" ;
+ TEXT [ english_us ] = "From left" ;
+ TEXT[ chinese_simplified ] = "´Ó×ó";
+ TEXT[ russian ] = "Ñëåâà";
+ TEXT[ polish ] = "Z lewej";
+ TEXT[ japanese ] = "¶‚©‚ç";
+ TEXT[ chinese_traditional ] = "±q¥ª";
+ TEXT[ arabic ] = "ãä ÇáíÓÇÑ";
+ TEXT[ greek ] = "Aðü áñéóôåñÜ";
+ TEXT[ korean ] = "¿ÞÂÊ¿¡¼­ ºÎÅÍ";
+ TEXT[ turkish ] = "Soldan";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_MIR_FROMLEFT
+{
+ TEXT = "Von Innen" ;
+ TEXT [ English ] = "From inside" ;
+ Text [ portuguese ] = "Do interior" ;
+ Text [ english_us ] = "From inside" ;
+ Text [ portuguese_brazilian ] = "Von Innen" ;
+ Text [ swedish ] = "Inifrån" ;
+ Text [ danish ] = "Indefra" ;
+ Text [ italian ] = "Dall'interno" ;
+ Text [ spanish ] = "Desde el interior" ;
+ Text [ french ] = "De l'intérieur" ;
+ Text [ dutch ] = "Van binnen" ;
+ Text[ chinese_simplified ] = "´ÓÄÚ";
+ Text[ russian ] = "Âíóòðè";
+ Text[ polish ] = "Od œrodka";
+ Text[ japanese ] = "“à‘¤‚©‚ç";
+ Text[ chinese_traditional ] = "±q¤º";
+ Text[ arabic ] = "ãä ÇáÏÇÎá";
+ Text[ greek ] = "Áðü åóùôåñéêü";
+ Text[ korean ] = "¾È¿¡¼­ ºÎÅÍ";
+ Text[ turkish ] = "Ýçerden";
+ Text[ language_user1 ] = " ";
+};
+/*-----------------------------------------------------------------------
+ Beschreibung: V-Rel
+ -----------------------------------------------------------------------*/
+String STR_REL_BORDER
+{
+ TEXT = "Rand" ;
+ TEXT [ English ] = "Border" ;
+ Text [ portuguese ] = "Margem" ;
+ Text [ english_us ] = "Margin" ;
+ Text [ portuguese_brazilian ] = "Rand" ;
+ Text [ swedish ] = "Marginal" ;
+ Text [ danish ] = "Margen" ;
+ Text [ italian ] = "Margine" ;
+ Text [ spanish ] = "Margen" ;
+ Text [ french ] = "Marge" ;
+ Text [ dutch ] = "Marge" ;
+ Text[ chinese_simplified ] = "Ò³±ß¾à";
+ Text[ russian ] = "Ïîëå";
+ Text[ polish ] = "Margines";
+ Text[ japanese ] = "—]”’";
+ Text[ chinese_traditional ] = "̊ƒ";
+ Text[ arabic ] = "ÇáåÇãÔ";
+ Text[ greek ] = "Ðåñéèþñéï";
+ Text[ korean ] = "¿©¹é";
+ Text[ turkish ] = "Kenar";
+ Text[ language_user1 ] = " ";
+};
+String STR_REL_PRTAREA
+{
+ TEXT = "Textbereich" ;
+ TEXT [ English ] = "Text area" ;
+ Text [ portuguese ] = "Área de texto" ;
+ Text [ english_us ] = "Text area" ;
+ Text [ portuguese_brazilian ] = "Textbereich" ;
+ Text [ swedish ] = "Textområde" ;
+ Text [ danish ] = "Tekstområde" ;
+ Text [ italian ] = "Area del testo" ;
+ Text [ spanish ] = "Área de texto " ;
+ Text [ french ] = "Zone de texte" ;
+ Text [ dutch ] = "Tekstbereik" ;
+ Text[ chinese_simplified ] = "ÎÄ×ÖÇøÓò";
+ Text[ russian ] = "Îáëàñòü òåêñòà";
+ Text[ polish ] = "Obszar tekstu";
+ Text[ japanese ] = "•¶‘”͈Í";
+ Text[ chinese_traditional ] = "¤å¦r°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáäÕ";
+ Text[ greek ] = "Ðåñéï÷Þ êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ¿µ¿ª";
+ Text[ turkish ] = "Metin alaný";
+ Text[ language_user1 ] = " ";
+};
+String STR_TOPPRT
+{
+ TEXT = "Oberer Rand" ;
+ TEXT [ English ] = "Border Top" ;
+ TEXT [ norwegian ] = "Border Top" ;
+ TEXT [ italian ] = "Bordo superiore" ;
+ TEXT [ portuguese_brazilian ] = "Topo da margem" ;
+ TEXT [ portuguese ] = "Margem superior" ;
+ TEXT [ finnish ] = "Yläreunaviiva" ;
+ TEXT [ danish ] = "Topmargen" ;
+ TEXT [ french ] = "Marge supérieure" ;
+ TEXT [ swedish ] = "Övre marginal" ;
+ TEXT [ dutch ] = "Bovenrand" ;
+ TEXT [ spanish ] = "Margen superior" ;
+ TEXT [ english_us ] = "Upper Margin" ;
+ TEXT[ chinese_simplified ] = "ÉÏ·½Ò³±ß¾à";
+ TEXT[ russian ] = "Âåðõíèé êðàé";
+ TEXT[ polish ] = "Górny margines";
+ TEXT[ japanese ] = "ã—]”’";
+ TEXT[ chinese_traditional ] = "¤WÃä¬É";
+ TEXT[ arabic ] = "ÇáåÇãÔ ÇáÚáæí";
+ TEXT[ greek ] = "¢íù ðåñéèþñéï";
+ TEXT[ korean ] = "À§ÂÊ ¿©¹é";
+ TEXT[ turkish ] = "Üst kenar";
+ TEXT[ language_user1 ] = " ";
+};
+/*-----------------------------------------------------------------------
+ Beschreibung: H-Rel
+ -----------------------------------------------------------------------*/
+String STR_FLY_REL_PG_LEFT
+{
+ TEXT = "Rahmenrand links" ;
+ TEXT [ English ] = "Left frame border" ;
+ Text [ portuguese ] = "Contorno esquerdo da moldura" ;
+ Text [ english_us ] = "Left frame border" ;
+ Text [ portuguese_brazilian ] = "Rahmenrand links" ;
+ Text [ swedish ] = "Vänster rammarginal" ;
+ Text [ danish ] = "Venstre rammekant" ;
+ Text [ italian ] = "Margine cornice sinistro" ;
+ Text [ spanish ] = "Borde izquierdo del marco" ;
+ Text [ french ] = "Bordure de cadre gauche" ;
+ Text [ dutch ] = "Kaderrand links" ;
+ Text[ chinese_simplified ] = "×ó¿ò±ß";
+ Text[ russian ] = "Ëåâûé êðàé ðàìêè";
+ Text[ polish ] = "Lewa krawêdŸ ramki";
+ Text[ japanese ] = "¶—]”’";
+ Text[ chinese_traditional ] = "¥ª®ØÃä";
+ Text[ arabic ] = "åÇãÔ ÇáÅØÇÑ ÇáÃíÓÑ";
+ Text[ greek ] = "Ðåñéèþñéï ðëáéóßïõ - áñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊ ÇÁ·¹ÀÓ ¿Ü°û¼±";
+ Text[ turkish ] = "Sol çerçeve kenarý";
+ Text[ language_user1 ] = " ";
+};
+String STR_FLY_MIR_REL_PG_LEFT
+{
+ TEXT = "Rahmenrand innen" ;
+ TEXT [ English ] = "Inner frame border" ;
+ Text [ portuguese ] = "Contorno interior da moldura" ;
+ Text [ english_us ] = "Inner frame border" ;
+ Text [ portuguese_brazilian ] = "Rahmenrand innen" ;
+ Text [ swedish ] = "Invändig rammarginal" ;
+ Text [ danish ] = "Indre rammekant" ;
+ Text [ italian ] = "Margine cornice interno" ;
+ Text [ spanish ] = "Borde interior del marco" ;
+ Text [ french ] = "Bordure de cadre intérieure" ;
+ Text [ dutch ] = "Binnenste kaderrand" ;
+ Text[ chinese_simplified ] = "¿ò±ßÄÚÔò";
+ Text[ russian ] = "Âíóòðåííèé êðàé ðàìêè";
+ Text[ polish ] = "Wewnêtrzna krawêdŸ ramki";
+ Text[ japanese ] = "—]”’ “à‘¤";
+ Text[ chinese_traditional ] = "®ØÃ䤺«h";
+ Text[ arabic ] = "åÇãÔ ÇáÅØÇÑ ÇáÏÇÎáí";
+ Text[ greek ] = "Ðåñéèþñéï ðëáéóßïõ - åóùôåñéêÜ";
+ Text[ korean ] = "³»ºÎ ÇÁ·¹ÀÓ ¿Ü°û¼±";
+ Text[ turkish ] = "Ýç çerçeve kenarý";
+ Text[ language_user1 ] = " ";
+};
+String STR_FLY_REL_PG_RIGHT
+{
+ TEXT = "Rahmenrand rechts" ;
+ TEXT [ English ] = "Right frame border" ;
+ Text [ portuguese ] = "Contorno direito da moldura" ;
+ Text [ english_us ] = "Right frame border" ;
+ Text [ portuguese_brazilian ] = "Rahmenrand rechts" ;
+ Text [ swedish ] = "Höger rammarginal" ;
+ Text [ danish ] = "Højre rammekant" ;
+ Text [ italian ] = "Margine cornice destro" ;
+ Text [ spanish ] = "Borde derecho del marco" ;
+ Text [ french ] = "Bordure de cadre droite" ;
+ Text [ dutch ] = "Kaderrand rechts" ;
+ Text[ chinese_simplified ] = "ÓÒ¿ò±ß";
+ Text[ russian ] = "Ïðàâûé êðàé ðàìêè";
+ Text[ polish ] = "Prawa krawêdŸ ramki";
+ Text[ japanese ] = "‰E—]”’";
+ Text[ chinese_traditional ] = "¥k®ØÃä";
+ Text[ arabic ] = "åÇãÔ ÇáÅØÇÑ ÇáÃíãä";
+ Text[ greek ] = "Ðåñéèþñéï ðëáéóßïõ - äåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ ÇÁ·¹ÀÓ ¿Ü°û¼±";
+ Text[ turkish ] = "Sað çerçeve kenarý";
+ Text[ language_user1 ] = " ";
+};
+String STR_FLY_MIR_REL_PG_RIGHT
+{
+ TEXT = "Rahmenrand außen" ;
+ TEXT [ English ] = "Outer frame border" ;
+ Text [ portuguese ] = "Contorno exterior da moldura" ;
+ Text [ english_us ] = "Outer frame border" ;
+ Text [ portuguese_brazilian ] = "Rahmenrand außen" ;
+ Text [ swedish ] = "Utvändig rammarginal" ;
+ Text [ danish ] = "Ydre rammekant" ;
+ Text [ italian ] = "Margine cornice esterno" ;
+ Text [ spanish ] = "Borde exterior del marco" ;
+ Text [ french ] = "Bordure de cadre extérieure" ;
+ Text [ dutch ] = "Buitenste kaderrand" ;
+ Text[ chinese_simplified ] = "¿ò±ßÍâ²à";
+ Text[ russian ] = "Íàðóæíûé êðàé ðàìêè";
+ Text[ polish ] = "Zewnêtrzna krawêdŸ ramki";
+ Text[ japanese ] = "—]”’ ŠO‘¤";
+ Text[ chinese_traditional ] = "®ØÃä¥~°¼";
+ Text[ arabic ] = "åÇãÔ ÇáÅØÇÑ ÇáÎÇÑÌí";
+ Text[ greek ] = "Ðåñéèþñéï ðëáéóßïõ - åîùôåñéêÜ";
+ Text[ korean ] = "¿ÜºÎ ÇÁ·¹ÀÓ ¿Ü°û¼±";
+ Text[ turkish ] = "Dýþ çerçeve kenarý";
+ Text[ language_user1 ] = " ";
+};
+String STR_FLY_REL_PG_FRAME
+{
+ TEXT = "Gesamter Rahmen" ;
+ TEXT [ English ] = "Whole frame" ;
+ Text [ portuguese ] = "Moldura inteira" ;
+ Text [ english_us ] = "Entire frame" ;
+ Text [ portuguese_brazilian ] = "Gesamter Rahmen" ;
+ Text [ swedish ] = "Hela ramen" ;
+ Text [ danish ] = "Hele rammen" ;
+ Text [ italian ] = "Intera cornice" ;
+ Text [ spanish ] = "Marco entero" ;
+ Text [ french ] = "Cadre entier" ;
+ Text [ dutch ] = "Compleet kader" ;
+ Text[ chinese_simplified ] = "Õû¸ö¿ò";
+ Text[ russian ] = "Âñÿ ðàìêà";
+ Text[ polish ] = "Ca³a ramka";
+ Text[ japanese ] = "˜g‘S‘Ì";
+ Text[ chinese_traditional ] = "¾ã­Ó®Ø";
+ Text[ arabic ] = "ÇáÅØÇÑ ÈÃßãáå";
+ Text[ greek ] = "Ïëüêëçñï ðëáßóéï";
+ Text[ korean ] = "Àüü ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "Çerçevenin tümü";
+ Text[ language_user1 ] = " ";
+};
+String STR_FLY_REL_PG_PRTAREA
+{
+ TEXT = "Rahmentextbereich" ;
+ TEXT [ English ] = "Frame text area" ;
+ Text [ portuguese ] = "Área da moldura para texto" ;
+ Text [ english_us ] = "Frame text area" ;
+ Text [ portuguese_brazilian ] = "Rahmentextbereich" ;
+ Text [ swedish ] = "Ramtextområde" ;
+ Text [ danish ] = "Rammetekstområde" ;
+ Text [ italian ] = "Area del testo della cornice" ;
+ Text [ spanish ] = "Área de texto del marco" ;
+ Text [ french ] = "Zone de texte de cadre" ;
+ Text [ dutch ] = "Kadertekstbereik" ;
+ Text[ chinese_simplified ] = "¿òÄÚÎÄ×ÖÇø";
+ Text[ russian ] = "Îáëàñòü òåêñòîâîé ðàìêè";
+ Text[ polish ] = "Obszar tekstu ramki";
+ Text[ japanese ] = "˜g•t‚¯”͈Í";
+ Text[ chinese_traditional ] = "®Ø¤º¤å¦r°Ï";
+ Text[ arabic ] = "äØÇÞ äÕ ÇáÅØÇÑ";
+ Text[ greek ] = "Ðåñéï÷Þ êåéìÝíïõ ôïõ ðëáéóßïõ";
+ Text[ korean ] = "ÇÁ·¹ÀÓ ÅؽºÆ® ¿µ¿ª";
+ Text[ turkish ] = "Çerçeve metin alaný";
+ Text[ language_user1 ] = " ";
+};
+String STR_FRAME
+{
+ TEXT = "Absatzbereich" ;
+ TEXT [ English ] = "Paragraph area" ;
+ Text [ portuguese ] = "Área de parágrafo" ;
+ Text [ english_us ] = "Paragraph area" ;
+ Text [ portuguese_brazilian ] = "Absatzbereich" ;
+ Text [ swedish ] = "Styckeområde" ;
+ Text [ danish ] = "Afsnitsområde" ;
+ Text [ italian ] = "Area del paragrafo" ;
+ Text [ spanish ] = "Área de párrafo" ;
+ Text [ french ] = "Zone de paragraphe" ;
+ Text [ dutch ] = "Alineabereik" ;
+ Text[ chinese_simplified ] = "¶ÎÂäÇøÓò";
+ Text[ russian ] = "Îáëàñòü àáçàöà";
+ Text[ polish ] = "Obszar akapitu";
+ Text[ japanese ] = "’i—Ž”͈Í";
+ Text[ chinese_traditional ] = "¬q¸¨°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáÝÞÑÉ";
+ Text[ greek ] = "Ðåñéï÷Þ ðáñáãñÜöïõ";
+ Text[ korean ] = "´Ü¶ô ¿µ¿ª";
+ Text[ turkish ] = "Paragraf bölümü";
+ Text[ language_user1 ] = " ";
+};
+String STR_PRTAREA
+{
+ TEXT = "Absatztextbereich" ;
+ TEXT [ English ] = "Text area of paragraph" ;
+ Text [ portuguese ] = "Área de texto do parágrafo " ;
+ Text [ english_us ] = "Paragraph text area" ;
+ Text [ portuguese_brazilian ] = "Absatztextbereich" ;
+ Text [ swedish ] = "Textområde i stycke" ;
+ Text [ danish ] = "Afsnitstekstområde" ;
+ Text [ italian ] = "Area del testo del paragrafo" ;
+ Text [ spanish ] = "Área de texto del párrafo" ;
+ Text [ french ] = "Zone de texte de paragraphe" ;
+ Text [ dutch ] = "Alineatekstbereik" ;
+ Text[ chinese_simplified ] = "¶ÎÂäÎÄ×ÖÇøÓò";
+ Text[ russian ] = "Îáëàñòü òåêñòîâîãî àáçàöà";
+ Text[ polish ] = "Obszar tekstu w akapicie";
+ Text[ japanese ] = "’i—Ž‚Ì÷½Ä”͈Í";
+ Text[ chinese_traditional ] = "¬q¸¨¤å¦r°Ï°ì";
+ Text[ arabic ] = "äØÇÞ äÕ ÇáÝÞÑÉ";
+ Text[ greek ] = "Ðåñéï÷Þ êåéìÝíïõ ðáñáãñÜöïõ";
+ Text[ korean ] = "´Ü¶ô ÅؽºÆ® ¿µ¿ª";
+ Text[ turkish ] = "Paragraf metin alaný";
+ Text[ language_user1 ] = " ";
+};
+String STR_REL_PG_LEFT
+{
+ TEXT = "Seitenrand links" ;
+ TEXT [ English ] = "Left page border" ;
+ Text [ portuguese ] = "Margem esquerda do parágrafo" ;
+ Text [ english_us ] = "Left page border" ;
+ Text [ portuguese_brazilian ] = "Seitenrand links" ;
+ Text [ swedish ] = "Vänster sidmarginal" ;
+ Text [ danish ] = "Venstre siderand" ;
+ Text [ italian ] = "Margine paragrafo sinistro" ;
+ Text [ spanish ] = "Margen izquierdo de la página" ;
+ Text [ french ] = "Marge à gauche" ;
+ Text [ dutch ] = "Paginarand links" ;
+ Text[ chinese_simplified ] = "×ó·½Ò³±ß¾à";
+ Text[ russian ] = "Ëåâûé êðàé ñòðàíèöû";
+ Text[ polish ] = "Lewy margines strony";
+ Text[ japanese ] = "Íß°¼Þ—]”’ ¶";
+ Text[ chinese_traditional ] = "¥ªÃä¬É";
+ Text[ arabic ] = "åÇãÔ ÇáÕÝÍÉ ÇáÃíÓÑ";
+ Text[ greek ] = "Ðåñéèþñéï óåëßäáò - áñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊ ÆäÀÌÁö ¿Ü°û¼±";
+ Text[ turkish ] = "Sol sayfa kenarý";
+ Text[ language_user1 ] = " ";
+};
+String STR_MIR_REL_PG_LEFT
+{
+ TEXT = "Seitenrand innen" ;
+ TEXT [ English ] = "Inner page border" ;
+ Text [ portuguese ] = "Margem interior da página" ;
+ Text [ english_us ] = "Inner page border" ;
+ Text [ portuguese_brazilian ] = "Seitenrand innen" ;
+ Text [ swedish ] = "Invändig sidmarginal" ;
+ Text [ danish ] = "Indre siderand" ;
+ Text [ italian ] = "Margine pagina interno" ;
+ Text [ spanish ] = "Margen interior de la página" ;
+ Text [ french ] = "Marge intérieure" ;
+ Text [ dutch ] = "Binnenste zijrand" ;
+ Text[ chinese_simplified ] = "ÄÚ²àÒ³±ß¾à";
+ Text[ russian ] = "Âíóòðåííèé êðàé ñòðàíèöû";
+ Text[ polish ] = "Wewnêrzny margines strony";
+ Text[ japanese ] = "Íß°¼Þ—]”’ “à‘¤";
+ Text[ chinese_traditional ] = "Ãä¬É¤º°¼";
+ Text[ arabic ] = "åÇãÔ ÇáÕÝÍÉ ÇáÏÇÎáí";
+ Text[ greek ] = "Ðåñéèþñéï óåëßäáò - åóùôåñéêÜ";
+ Text[ korean ] = "³»ºÎ ÆäÀÌÁö ¿Ü°û¼±";
+ Text[ turkish ] = "Sayfa kenarý (iç)";
+ Text[ language_user1 ] = " ";
+};
+String STR_REL_PG_RIGHT
+{
+ TEXT = "Seitenrand rechts" ;
+ TEXT [ English ] = "Right page border" ;
+ Text [ portuguese ] = "Margem direita da página" ;
+ Text [ english_us ] = "Right page border" ;
+ Text [ portuguese_brazilian ] = "Seitenrand rechts" ;
+ Text [ swedish ] = "Höger sidmarginal" ;
+ Text [ danish ] = "Højre siderand" ;
+ Text [ italian ] = "Margine pagina destro" ;
+ Text [ spanish ] = "Margen derecho de la página" ;
+ Text [ french ] = "Marge à droite" ;
+ Text [ dutch ] = "Paginarand rechts" ;
+ Text[ chinese_simplified ] = "ÓÒÒ³Ãæ¿Õ°×";
+ Text[ russian ] = "Ïðàâûé êðàé ñòðàíèöû";
+ Text[ polish ] = "Prawy margines strony";
+ Text[ japanese ] = "Íß°¼Þ—]”’ ‰E";
+ Text[ chinese_traditional ] = "¥k­¶­±ªÅ¥Õ";
+ Text[ arabic ] = "åÇãÔ ÇáÕÝÍÉ ÇáÃíãä";
+ Text[ greek ] = "Ðåñéèþñéï óåëßäáò - äåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ ÆäÀÌÁö ¿Ü°û¼±";
+ Text[ turkish ] = "Sað sayfa kenarý";
+ Text[ language_user1 ] = " ";
+};
+String STR_MIR_REL_PG_RIGHT
+{
+ TEXT = "Seitenrand außen" ;
+ TEXT [ English ] = "Outer page border" ;
+ Text [ portuguese ] = "Margem exterior da página" ;
+ Text [ english_us ] = "Outer page border" ;
+ Text [ portuguese_brazilian ] = "Seitenrand außen" ;
+ Text [ swedish ] = "Utvändig sidmarginal" ;
+ Text [ danish ] = "Ydre siderand" ;
+ Text [ italian ] = "Margine pagina esterno" ;
+ Text [ spanish ] = "Margen exterior de la página" ;
+ Text [ french ] = "Marge extérieure" ;
+ Text [ dutch ] = "Buitenste zijrand" ;
+ Text[ chinese_simplified ] = "Íâ²àÒ³±ß¾à";
+ Text[ russian ] = "Íàðóæíûé êðàé ñòðàíèöû";
+ Text[ polish ] = "Zewnêtrzny margines strony";
+ Text[ japanese ] = "Íß°¼Þ—]”’ ŠO‘¤";
+ Text[ chinese_traditional ] = "Ãä¬É¥~°¼";
+ Text[ arabic ] = "åÇãÔ ÇáÕÝÍÉ ÇáÎÇÑÌí";
+ Text[ greek ] = "Ðåñéèþñéï óåëßäáò - åîùôåñéêÜ";
+ Text[ korean ] = "¿ÜºÎ ÆäÀÌÁö ¿Ü°û¼±";
+ Text[ turkish ] = "Sayfa kenarý (dýþ)";
+ Text[ language_user1 ] = " ";
+};
+String STR_REL_FRM_LEFT
+{
+ TEXT = "Absatzrand links" ;
+ TEXT [ English ] = "Left paragraph border" ;
+ Text [ portuguese ] = "Margem esquerda do parágrafo" ;
+ Text [ english_us ] = "Left paragraph border" ;
+ Text [ portuguese_brazilian ] = "Absatzrand links" ;
+ Text [ swedish ] = "Vänster styckemarginal" ;
+ Text [ danish ] = "Venstre afsnitsrand" ;
+ Text [ italian ] = "Margine paragrafo sinistro" ;
+ Text [ spanish ] = "Margen izquierdo del párrafo" ;
+ Text [ french ] = "Marge de paragraphe gauche" ;
+ Text [ dutch ] = "Alinearand links" ;
+ Text[ chinese_simplified ] = "×ó¶ÎÂäÒ³±ß";
+ Text[ russian ] = "Ëåâûé êðàé àáçàöà";
+ Text[ polish ] = "Lewy margines akapitu";
+ Text[ japanese ] = "’i—Ž—]”’ ¶";
+ Text[ chinese_traditional ] = "¥ª¬q¸¨­¶Ãä";
+ Text[ arabic ] = "åÇãÔ ÇáÝÞÑÉ ÇáÃíÓÑ";
+ Text[ greek ] = "Ðåñéèþñéï ðáñáãñÜöïõ - áñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊ ´Ü¶ô ¿Ü°û¼±";
+ Text[ turkish ] = "Paragraf kenarý (sol)";
+ Text[ language_user1 ] = " ";
+};
+String STR_MIR_REL_FRM_LEFT
+{
+ TEXT = "Absatzrand innen" ;
+ TEXT [ English ] = "Inner paragraph border" ;
+ Text [ portuguese ] = "Margem interior do parágrafo" ;
+ Text [ english_us ] = "Inner paragraph border" ;
+ Text [ portuguese_brazilian ] = "Absatzrand innen" ;
+ Text [ swedish ] = "Inre styckemarginal" ;
+ Text [ danish ] = "Indre afsnitsrand" ;
+ Text [ italian ] = "Margine paragrafo interno" ;
+ Text [ spanish ] = "Margen interior del párrafo" ;
+ Text [ french ] = "Marge de paragraphe intérieure" ;
+ Text [ dutch ] = "Binnenste alinearand" ;
+ Text[ chinese_simplified ] = "¼ä¸ôÄÚ±ß";
+ Text[ russian ] = "Âíóòðåííèé êðàé àáçàöà";
+ Text[ polish ] = "Wewnêtrzny margines akapitu";
+ Text[ japanese ] = "’i—Ž—]”’ “à‘¤";
+ Text[ chinese_traditional ] = "¶¡¹j¤ºÃä";
+ Text[ arabic ] = "åÇãÔ ÇáÝÞÑÉ ÇáÏÇÎáí";
+ Text[ greek ] = "Ðåñéèþñéï ðáñáãñÜöïõ - åóùôåñéêÜ";
+ Text[ korean ] = "³»ºÎ ´Ü¶ô °æ°è¼±";
+ Text[ turkish ] = "Paragraf kenarý (iç)";
+ Text[ language_user1 ] = " ";
+};
+String STR_REL_FRM_RIGHT
+{
+ TEXT = "Absatzrand rechts" ;
+ TEXT [ English ] = "Right paragraph border" ;
+ Text [ portuguese ] = "Margem direita do parágrafo" ;
+ Text [ english_us ] = "Right paragraph border" ;
+ Text [ portuguese_brazilian ] = "Absatzrand rechts" ;
+ Text [ swedish ] = "Höger styckemarginal" ;
+ Text [ danish ] = "Højre afsnitsrand" ;
+ Text [ italian ] = "Margine paragrafo destro" ;
+ Text [ spanish ] = "Margen derecho del párrafo" ;
+ Text [ french ] = "Marge de paragraphe droite" ;
+ Text [ dutch ] = "Alinearand rechts" ;
+ Text[ chinese_simplified ] = "ÓÒ¶ÎÂäÒ³±ß";
+ Text[ russian ] = "Ïðàâûé êðàé àáçàöà";
+ Text[ polish ] = "Prawy margines akapitu";
+ Text[ japanese ] = "’i—Ž—]”’ ‰E";
+ Text[ chinese_traditional ] = "¥k¬q¸¨­¶Ãä";
+ Text[ arabic ] = "åÇãÔ ÇáÝÞÑÉ ÇáÃíãä";
+ Text[ greek ] = "Ðåñéèþñéï ðáñáãñÜöïõ - äåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ ´Ü¶ô ¿Ü°û¼±";
+ Text[ turkish ] = "Paragraf kenarý (sað)";
+ Text[ language_user1 ] = " ";
+};
+String STR_MIR_REL_FRM_RIGHT
+{
+ TEXT = "Absatzrand außen" ;
+ TEXT [ English ] = "Outer paragraph border" ;
+ Text [ portuguese ] = "Margem exterior do parágrafo" ;
+ Text [ english_us ] = "Outer paragraph border" ;
+ Text [ portuguese_brazilian ] = "Absatzrand außen" ;
+ Text [ swedish ] = "Yttre styckemarginal" ;
+ Text [ danish ] = "Ydre afsnitsrand" ;
+ Text [ italian ] = "Margine paragrafo esterno" ;
+ Text [ spanish ] = "Margen exterior del párrafo" ;
+ Text [ french ] = "Marge de paragraphe extérieure " ;
+ Text [ dutch ] = "Buitenste alinearand" ;
+ Text[ chinese_simplified ] = "¶ÎÂä¼ä¸ôÍâ²à";
+ Text[ russian ] = "Íàðóæíûé êðàé àáçàöà";
+ Text[ polish ] = "Zewnêtrzny margines akapitu";
+ Text[ japanese ] = "’i—Ž—]”’ ŠO‘¤";
+ Text[ chinese_traditional ] = "¬q¸¨¶¡¹j¥~°¼";
+ Text[ arabic ] = "åÇãÔ ÇáÝÞÑÉ ÇáÎÇÑÌí";
+ Text[ greek ] = "Ðåñéèþñéï ðáñáãñÜöïõ - åîùôåñéêÜ";
+ Text[ korean ] = "¿ÜºÎ ´Ü¶ô ¿Ü°û¼±";
+ Text[ turkish ] = "Paragraf kenarý (dýþ)";
+ Text[ language_user1 ] = " ";
+};
+String STR_REL_PG_FRAME
+{
+ TEXT = "Gesamte Seite" ;
+ TEXT [ English ] = "Whole page" ;
+ Text [ portuguese ] = "Página inteira" ;
+ Text [ english_us ] = "Entire page" ;
+ Text [ portuguese_brazilian ] = "Gesamte Seite" ;
+ Text [ swedish ] = "Hela sidan" ;
+ Text [ danish ] = "Hele siden" ;
+ Text [ italian ] = "Intera pagina" ;
+ Text [ spanish ] = "Página entera" ;
+ Text [ french ] = "Page entière" ;
+ Text [ dutch ] = "Gehele pagina" ;
+ Text[ chinese_simplified ] = "ÕûÒ³";
+ Text[ russian ] = "Âñÿ ñòðàíèöà";
+ Text[ polish ] = "Ca³a strona";
+ Text[ japanese ] = "Íß°¼Þ•";
+ Text[ chinese_traditional ] = "¾ã­¶";
+ Text[ arabic ] = "ÇáÕÝÍÉ ÈÃßãáåÇ";
+ Text[ greek ] = "Ïëüêëçñç óåëßäá";
+ Text[ korean ] = "Àüü ÆäÀÌÁö";
+ Text[ turkish ] = "Sayfanýn tümü";
+ Text[ language_user1 ] = " ";
+};
+String STR_REL_PG_PRTAREA
+{
+ TEXT = "Seitentextbereich" ;
+ TEXT [ English ] = "Page text area" ;
+ Text [ portuguese ] = "Área de texto da página" ;
+ Text [ english_us ] = "Page text area" ;
+ Text [ portuguese_brazilian ] = "Seitentextbereich" ;
+ Text [ swedish ] = "Sidtextområde" ;
+ Text [ danish ] = "Sidetekstområde" ;
+ Text [ italian ] = "Area del testo della pagina" ;
+ Text [ spanish ] = "Área de texto de la página" ;
+ Text [ french ] = "Zone de texte de page" ;
+ Text [ dutch ] = "Paginatekstbereik" ;
+ Text[ chinese_simplified ] = "Ò³ÃæÎÄ×ÖÇøÓò";
+ Text[ russian ] = "Îáëàñòü òåêñòîâîé ñòðàíèöû";
+ Text[ polish ] = "Obszar tekstu na stronie";
+ Text[ japanese ] = "Íß°¼Þ‚Ì÷½Ä”͈Í";
+ Text[ chinese_traditional ] = "­¶­±¤å¦r°Ï°ì";
+ Text[ arabic ] = "äØÇÞ äÕ ÇáÕÝÍÉ";
+ Text[ greek ] = "Ðåñéï÷Þ êåéìÝíïõ óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ÅؽºÆ® ¿µ¿ª";
+ Text[ turkish ] = "Sayfa metin alaný";
+ Text[ language_user1 ] = " ";
+};
+/*-----------------------------------------------------------------------
+ Beschreibung: V-Rel Zeichenausrichtungen
+ -----------------------------------------------------------------------*/
+String STR_REL_BASE
+{
+ TEXT = "Grundlinie" ;
+ TEXT [ English ] = "Baseline" ;
+ Text [ portuguese ] = "Linha de base" ;
+ Text [ english_us ] = "Base line" ;
+ Text [ portuguese_brazilian ] = "Grundlinie" ;
+ Text [ swedish ] = "Baslinje" ;
+ Text [ danish ] = "Basislinje" ;
+ Text [ italian ] = "Linea di base" ;
+ Text [ spanish ] = "Línea de base" ;
+ Text [ french ] = "Ligne de base" ;
+ Text [ dutch ] = "Basislijn" ;
+ Text[ chinese_simplified ] = "»ùÏß";
+ Text[ russian ] = "Îñíîâíàÿ ëèíèÿ";
+ Text[ polish ] = "Linia podstawowa";
+ Text[ japanese ] = "Šîü";
+ Text[ chinese_traditional ] = "°ò½u";
+ Text[ arabic ] = "ÇáÎØ ÇáÃÓÇÓí";
+ Text[ greek ] = "ÂáóéêÞ ãñáììÞ";
+ Text[ korean ] = "±âÁؼ±";
+ Text[ turkish ] = "Taban çizgisi";
+ Text[ language_user1 ] = " ";
+};
+String STR_REL_CHAR
+{
+ TEXT = "Zeichen" ;
+ TEXT [ English ] = "Char" ;
+ Text [ portuguese ] = "Caracteres" ;
+ Text [ english_us ] = "Character" ;
+ Text [ portuguese_brazilian ] = "Zeichen" ;
+ Text [ swedish ] = "Tecken" ;
+ Text [ danish ] = "Tegn" ;
+ Text [ italian ] = "Carattere" ;
+ Text [ spanish ] = "Caracteres" ;
+ Text [ french ] = "Caractère" ;
+ Text [ dutch ] = "Teken" ;
+ 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 ] = " ";
+};
+String STR_REL_ROW
+{
+ TEXT = "Zeile" ;
+ TEXT [ English ] = "Row" ;
+ Text [ portuguese ] = "Linha" ;
+ Text [ english_us ] = "Row" ;
+ Text [ portuguese_brazilian ] = "Zeile" ;
+ Text [ swedish ] = "Rad" ;
+ Text [ danish ] = "Række" ;
+ Text [ italian ] = "Riga" ;
+ Text [ spanish ] = "Fila" ;
+ Text [ french ] = "Ligne" ;
+ Text [ dutch ] = "Rij" ;
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ russian ] = "Ñòðîêà";
+ Text[ polish ] = "Wiersz";
+ Text[ japanese ] = "s";
+ Text[ chinese_traditional ] = "¦æ";
+ Text[ arabic ] = "ÕÝ";
+ Text[ greek ] = "ÃñáììÞ";
+ Text[ korean ] = "Çà";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+};
+/*-----------------------------------------------------------------------
+ Beschreibung: Zeichenausrichtungen fuer frmsh.cxx - Kontextmenue
+ -----------------------------------------------------------------------*/
+String STR_TOP_BASE
+{
+ TEXT = "Grundlinie ~oben" ;
+ TEXT [ English ] = "Top of baseline" ;
+ Text [ portuguese ] = "Linha de base em ~cima" ;
+ Text [ english_us ] = "Base line at ~top" ;
+ Text [ portuguese_brazilian ] = "Basis ~oben" ;
+ Text [ swedish ] = "Baslinje ~överst" ;
+ Text [ danish ] = "Basislinje øverst" ;
+ Text [ italian ] = "Linea di base in ~alto" ;
+ Text [ spanish ] = "Línea de base ~encima" ;
+ Text [ french ] = "Ligne de base en ~haut" ;
+ Text [ dutch ] = "Basis ~boven" ;
+ Text[ chinese_simplified ] = "»ùÏßÉÏ·½(~T)";
+ Text[ russian ] = "Îñíîâíàÿ ëèíèÿ ñâåðõó";
+ Text[ polish ] = "Linia podstawowa w górze";
+ Text[ japanese ] = "Šîü‚Ìã(~T)";
+ Text[ chinese_traditional ] = "°ò½u¤W¤è(~T)";
+ Text[ arabic ] = "ÃÚáì ÇáÎØ ÇáÃÓÇÓí";
+ Text[ greek ] = "ÂáóéêÞ ãñáììÞ - Üíù";
+ Text[ korean ] = "±âÁؼ±ÀÇ À§(~T)";
+ Text[ turkish ] = "Taban çizgisi ~üstü";
+ Text[ language_user1 ] = " ";
+};
+String STR_BOTTOM_BASE
+{
+ TEXT = "Grundlinie ~unten" ;
+ TEXT [ English ] = "Bottom of base" ;
+ Text [ portuguese ] = "~Abaixo da base" ;
+ Text [ english_us ] = "~Base line at bottom" ;
+ Text [ portuguese_brazilian ] = "Basis ~unten" ;
+ Text [ swedish ] = "Baslinje ~nederst" ;
+ Text [ danish ] = "Basislinje nederst" ;
+ Text [ italian ] = "Base in ~basso" ;
+ Text [ spanish ] = "Base a~bajo" ;
+ Text [ french ] = "Ligne de base en ~bas" ;
+ Text [ dutch ] = "Basis ~beneden" ;
+ Text[ chinese_simplified ] = "»ùÏßÏ·½(~B)";
+ Text[ russian ] = "Îñíîâíàÿ ëèíèÿ ñíèçó";
+ Text[ polish ] = "Linia podstawowa w dole";
+ Text[ japanese ] = "Šîü‚̉º(~B)";
+ Text[ chinese_traditional ] = "°ò½u¤U¤è(~B)";
+ Text[ arabic ] = "ÃÓÝá ÇáÎØ ÇáÃÓÇÓí";
+ Text[ greek ] = "ÂáóéêÞ ãñáììÞ - êÜôù";
+ Text[ korean ] = "±âÁؼ±ÀÇ ¾Æ·¡(~B)";
+ Text[ turkish ] = "Alt ~taban çizgisi";
+ Text[ language_user1 ] = " ";
+};
+String STR_CENTER_BASE
+{
+ TEXT = "Grundlinie ~zentriert" ;
+ TEXT [ English ] = "Center of baseline" ;
+ Text [ portuguese ] = "Linha de base ~centrada" ;
+ Text [ english_us ] = "Base line ~centered" ;
+ Text [ portuguese_brazilian ] = "Basis ~zentriert" ;
+ Text [ swedish ] = "Baslinje ~centrerad" ;
+ Text [ danish ] = "Basislinje centreret" ;
+ Text [ italian ] = "Linea di base ~centrata" ;
+ Text [ spanish ] = "Base ~centro" ;
+ Text [ french ] = "Ligne de base ~centrée" ;
+ Text [ dutch ] = "Basis ge~centreerd" ;
+ Text[ chinese_simplified ] = "»ùÏß¾ÓÖÐ(~C)";
+ Text[ russian ] = "Îñíîâíàÿ ëèíèÿ ïî öåíòðó";
+ Text[ polish ] = "Linia podstawowa, wyœrodkowana";
+ Text[ japanese ] = "Šîü‚Ì’†‰›(~C)";
+ Text[ chinese_traditional ] = "°ò½u¸m¤¤(~C)";
+ Text[ arabic ] = "æÓØ ÇáÎØ ÇáÃÓÇÓí";
+ Text[ greek ] = "ÂáóéêÞ ãñáììÞ - êåíôñáñéóìÝíá";
+ Text[ korean ] = "±âÁؼ±ÀÇ °¡¿îµ¥(~C)";
+ Text[ turkish ] = "Taban çizgisini ~ortala";
+ Text[ language_user1 ] = " ";
+};
+String STR_LINE_TOP
+{
+ TEXT = "Zeile oben" ;
+ TEXT [ English ] = "Line top" ;
+ Text [ dutch ] = "Bovenste regel" ;
+ Text [ english_us ] = "Top of line" ;
+ Text [ italian ] = "Riga in alto" ;
+ Text [ spanish ] = "Línea superior" ;
+ Text [ french ] = "Ligne supérieure" ;
+ Text [ swedish ] = "Översta raden" ;
+ Text [ danish ] = "Række øverst" ;
+ Text [ portuguese ] = "Linha superior" ;
+ Text [ portuguese_brazilian ] = "Zeile oben" ;
+ Text[ chinese_simplified ] = "ÐÐÏòÉÏ";
+ Text[ russian ] = "Ñòðîêà ñâåðõó";
+ Text[ polish ] = "Wiersz na górze";
+ Text[ japanese ] = "s‚Ìã";
+ Text[ chinese_traditional ] = "¦æ¦V¤W";
+ Text[ arabic ] = "ÃÚáì ÇáÓØÑ";
+ Text[ greek ] = "ÃñáììÞ - Üíù";
+ Text[ korean ] = "¼± À§";
+ Text[ turkish ] = "Satýr üstü";
+ Text[ language_user1 ] = " ";
+};
+String STR_LINE_BOTTOM
+{
+ TEXT = "Zeile unten" ;
+ TEXT [ English ] = "Line bottom" ;
+ Text [ dutch ] = "Onderste regel" ;
+ Text [ english_us ] = "Bottom of line" ;
+ Text [ italian ] = "Riga in basso" ;
+ Text [ spanish ] = "Línea inferior" ;
+ Text [ french ] = "Ligne inférieure" ;
+ Text [ swedish ] = "Nedersta raden" ;
+ Text [ danish ] = "Række nederst" ;
+ Text [ portuguese ] = "Linha inferior" ;
+ Text [ portuguese_brazilian ] = "Zeile unten" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»ÐÐ";
+ Text[ russian ] = "Ñòðîêà ñíèçó";
+ Text[ polish ] = "Wiersz na dole";
+ Text[ japanese ] = "s‚̉º";
+ Text[ chinese_traditional ] = "¤U¤@¦æ";
+ Text[ arabic ] = "ÃÓÝá ÇáÓØÑ";
+ Text[ greek ] = "ÃñáììÞ - êÜôù";
+ Text[ korean ] = "¼±ÀÇ ¾Æ·¡";
+ Text[ turkish ] = "Satýr altý";
+ Text[ language_user1 ] = " ";
+};
+String STR_LINE_CENTER
+{
+ TEXT = "Zeile zentriert" ;
+ TEXT [ English ] = "Line centered" ;
+ Text [ english_us ] = "Center of line" ;
+ Text [ italian ] = "Riga centrata" ;
+ Text [ spanish ] = "Línea centrada" ;
+ Text [ french ] = "Ligne centrée" ;
+ Text [ dutch ] = "Regel gecentreerd" ;
+ Text [ swedish ] = "Rad centrerad" ;
+ Text [ danish ] = "Række centreret" ;
+ Text [ portuguese ] = "Linha centrada" ;
+ Text [ portuguese_brazilian ] = "Zeile zentriert" ;
+ Text[ chinese_simplified ] = "ÐоÓÖÐ";
+ Text[ russian ] = "Ñòðîêà ïî öåíòðó";
+ Text[ polish ] = "Wiersz wyœrodkowany";
+ Text[ japanese ] = "s‚Ì’†‰›";
+ Text[ chinese_traditional ] = "¦æ¸m¤¤";
+ Text[ arabic ] = "æÓØ ÇáÓØÑ";
+ Text[ greek ] = "ÃñáììÞ êåíôñáñéóìÝíç";
+ Text[ korean ] = "¼± °¡¿îµ¥";
+ Text[ turkish ] = "Satýrý ortala";
+ Text[ language_user1 ] = " ";
+};
+String STR_CHAR_TOP
+{
+ TEXT = "Zeichen oben" ;
+ TEXT [ English ] = "Top of character" ;
+ Text [ dutch ] = "Teken boven" ;
+ Text [ english_us ] = "Top of character" ;
+ Text [ italian ] = "Carattere in alto" ;
+ Text [ spanish ] = "Carácter arriba" ;
+ Text [ french ] = "Décalage haut" ;
+ Text [ swedish ] = "Tecken överst" ;
+ Text [ danish ] = "Tegn øverst" ;
+ Text [ portuguese ] = "Carácter em cima" ;
+ Text [ portuguese_brazilian ] = "Zeichen oben" ;
+ Text[ chinese_simplified ] = "×Ö·ûÏòÉÏ";
+ Text[ russian ] = "Çíàê ñâåðõó";
+ Text[ polish ] = "Znaki w górze";
+ Text[ japanese ] = "•¶Žš‚Ìã";
+ Text[ chinese_traditional ] = "¦r¤¸¦V¤W";
+ Text[ arabic ] = "ÃÚáì ÇáÍÑÝ";
+ Text[ greek ] = "×áñáêôÞñáò - Üíù";
+ Text[ korean ] = "¹®ÀÚÀÇ À§¿¡";
+ Text[ turkish ] = "Karakter üstü";
+ Text[ language_user1 ] = " ";
+};
+String STR_CHAR_BOTTOM
+{
+ TEXT = "Zeichen unten" ;
+ TEXT [ English ] = "Bottom of character" ;
+ Text [ dutch ] = "Teken beneden" ;
+ Text [ english_us ] = "Bottom of character" ;
+ Text [ italian ] = "Carattere in basso" ;
+ Text [ spanish ] = "Carácter abajo" ;
+ Text [ french ] = "Décalage bas" ;
+ Text [ swedish ] = "Tecken nederst" ;
+ Text [ danish ] = "Tegn nederst" ;
+ Text [ portuguese ] = "Carácter em baixo" ;
+ Text [ portuguese_brazilian ] = "Zeichen unten" ;
+ Text[ chinese_simplified ] = "×Ö·ûÏòÏÂ";
+ Text[ russian ] = "Çíàê ñíèçó";
+ Text[ polish ] = "Znaki na dole";
+ Text[ japanese ] = "•¶Žš‚̉º";
+ Text[ chinese_traditional ] = "¦r¤¸¦V¤U";
+ Text[ arabic ] = "ÃÓÝá ÇáÍÑÝ";
+ Text[ greek ] = "×áñáêôÞñáò - êÜôù";
+ Text[ korean ] = "¹®ÀÚÀÇ ¾Æ·¡";
+ Text[ turkish ] = "Karakter altý";
+ Text[ language_user1 ] = " ";
+};
+String STR_CHAR_CENTER
+{
+ TEXT = "Zeichen zentriert" ;
+ TEXT [ English ] = "Middle of character" ;
+ Text [ english_us ] = "Center of character" ;
+ Text [ italian ] = "Carattere centrato" ;
+ Text [ spanish ] = "Carácter centrado" ;
+ Text [ french ] = "Caractère centré" ;
+ Text [ dutch ] = "Teken gecentreerd" ;
+ Text [ swedish ] = "Tecken centrerat" ;
+ Text [ danish ] = "Tegn centreret" ;
+ Text [ portuguese ] = "Carácter centrado" ;
+ Text [ portuguese_brazilian ] = "Zeichen zentriert" ;
+ Text[ chinese_simplified ] = "×Ö·û¾ÓÖÐ";
+ Text[ russian ] = "Çíàê ïî öåíòðó";
+ Text[ polish ] = "Znaki wyœrodkowane";
+ Text[ japanese ] = "•¶Žš‚Ì’†‰›";
+ Text[ chinese_traditional ] = "¦r¤¸¸m¤¤";
+ Text[ arabic ] = "æÓØ ÇáÍÑÝ";
+ Text[ greek ] = "×áñáêôÞñáò - êåíôñáñéóìÝíá";
+ Text[ korean ] = "¹®ÀÚÀÇ °¡¿îµ¥";
+ Text[ turkish ] = "Karakteri ortala";
+ Text[ language_user1 ] = " ";
+};
+String STR_OLE_INSERT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Objekt einfügen : Objekt einf³gen */
+ TEXT = "Objekt einfügen" ;
+ TEXT [ English ] = "Insert object" ;
+ TEXT [ norwegian ] = "Insert object" ;
+ TEXT [ italian ] = "Inserisci oggetto" ;
+ TEXT [ portuguese_brazilian ] = "Inserir objeto" ;
+ TEXT [ portuguese ] = "Inserir objecto" ;
+ TEXT [ finnish ] = "Lisää objekti" ;
+ TEXT [ danish ] = "Indsæt objekt" ;
+ TEXT [ french ] = "Insérer un objet" ;
+ TEXT [ swedish ] = "Infoga objekt" ;
+ TEXT [ dutch ] = "Object invoegen" ;
+ TEXT [ spanish ] = "Insertar objeto" ;
+ TEXT [ english_us ] = "Insert object" ;
+ 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 ] = " ";
+};
+String STR_OLE_EDIT
+{
+ TEXT = "Objekt bearbeiten" ;
+ TEXT [ English ] = "Edit object" ;
+ TEXT [ norwegian ] = "Edit object" ;
+ TEXT [ italian ] = "Modifica oggetto" ;
+ TEXT [ portuguese_brazilian ] = "Editar objeto" ;
+ TEXT [ portuguese ] = "Editar objecto" ;
+ TEXT [ finnish ] = "Muokkaa objektia" ;
+ TEXT [ danish ] = "Rediger objekt" ;
+ TEXT [ french ] = "Modifier l'objet" ;
+ TEXT [ swedish ] = "Redigera objekt" ;
+ TEXT [ dutch ] = "Een object bewerken" ;
+ TEXT [ spanish ] = "Editar objeto" ;
+ TEXT [ english_us ] = "Edit object" ;
+ TEXT[ chinese_simplified ] = "±à¼­¶ÔÏó";
+ TEXT[ russian ] = "Ïðàâêà îáúåêòà";
+ TEXT[ polish ] = "Edytuj obiekt";
+ TEXT[ japanese ] = "µÌß¼Þª¸Ä‚Ì•ÒW";
+ TEXT[ chinese_traditional ] = "½s¿èª«¥ó";
+ TEXT[ arabic ] = "ÊÍÑíÑ ÇáßÇÆä";
+ TEXT[ greek ] = "Åðåîåñãáóßá áíôéêåéìÝíïõ";
+ TEXT[ korean ] = "°³Ã¼ ÆíÁý";
+ TEXT[ turkish ] = "Nesneyi düzenle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_COLL_HEADER
+{
+ TEXT = " (Vorlage: " ;
+ TEXT [ English ] = " (Template: " ;
+ TEXT [ norwegian ] = " (Template: " ;
+ TEXT [ italian ] = "(Modello: " ;
+ TEXT [ portuguese_brazilian ] = "(Modelo: " ;
+ TEXT [ portuguese ] = "(Modelo: " ;
+ TEXT [ finnish ] = " (Malli: " ;
+ TEXT [ danish ] = "(Skabelon: " ;
+ TEXT [ french ] = "(modèle : " ;
+ TEXT [ swedish ] = "(Mall: " ;
+ TEXT [ dutch ] = "(Sjabloon: " ;
+ TEXT [ spanish ] = "(Plantilla: " ;
+ TEXT [ english_us ] = " (Template: " ;
+ TEXT[ chinese_simplified ] = "(Ñùʽ£º ";
+ TEXT[ russian ] = "(Øàáëîí: ";
+ TEXT[ polish ] = "(Szablon: ";
+ TEXT[ japanese ] = "(ÃÝÌßÚ°Ä: ";
+ TEXT[ chinese_traditional ] = "(¼Ë¦¡¡G ";
+ TEXT[ arabic ] = "(ÇáÞÇáÈ: ";
+ TEXT[ greek ] = "(Ðñüôõðï: ";
+ TEXT[ korean ] = "(ÅÛÇø®Æ®: ";
+ TEXT[ turkish ] = "(Þablon: ";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_FRMUI_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 ] = " ";
+};
+String STR_FRMUI_PATTERN
+{
+ 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 ] = " ";
+};
+String STR_FRMUI_WRAP
+{
+ Text = "Umlauf" ;
+ Text [ ENGLISH ] = "Wrap" ;
+ Text [ norwegian ] = "Wrap" ;
+ Text [ italian ] = "Scorrimento" ;
+ Text [ portuguese_brazilian ] = "Circundamento" ;
+ Text [ portuguese ] = "Ajuste" ;
+ Text [ finnish ] = "Kierrätys" ;
+ Text [ danish ] = "Ombrydning" ;
+ Text [ french ] = "Adaptation du texte" ;
+ Text [ swedish ] = "Textanpassning" ;
+ Text [ dutch ] = "Om beeld" ;
+ Text [ spanish ] = "Ajuste" ;
+ Text [ english_us ] = "Wrap" ;
+ Text[ chinese_simplified ] = "»·ÈÆ";
+ Text[ russian ] = "Îáòåêàíèå";
+ Text[ polish ] = "Obieg tekstu";
+ Text[ japanese ] = "Ü‚è•Ô‚µ";
+ Text[ chinese_traditional ] = "´«¦æ";
+ Text[ arabic ] = "ÇáÊÝÇÝ";
+ Text[ greek ] = "Áíáäßðëùóç";
+ Text[ korean ] = "¼øȯ";
+ Text[ turkish ] = "Metin daðýlýmý";
+ Text[ language_user1 ] = " ";
+};
+InfoBox MSG_COLUMN_ERR_BOUNDWIDTH
+{
+ BUTTONS = WB_OK ;
+ DEFBUTTON = WB_DEF_OK ;
+ /* ### ACHTUNG: Neuer Text in Resource? Der Spaltenabstand ist zu groß für die Spaltenbreite. : Der Spaltenabstand ist zu gro˜ f³r die Spaltenbreite. */
+ MESSAGE = "Der Spaltenabstand ist zu groß für die Spaltenbreite." ;
+ MESSAGE [ English ] = "Gutter width exceeds column width." ;
+ MESSAGE [ norwegian ] = "Gutter width exceeds column width." ;
+ MESSAGE [ italian ] = "La distanza tra le colonne supera la larghezza delle colonne" ;
+ MESSAGE [ portuguese_brazilian ] = "Largura do guter excede largura da coluna." ;
+ MESSAGE [ portuguese ] = "O espaço entre as colunas é grande demais para a largura das colunas." ;
+ MESSAGE [ finnish ] = "Palstojen väli on palstojen leveyttä suurempi." ;
+ MESSAGE [ danish ] = "Kolonneafstanden er for stor til kolonnebredden." ;
+ MESSAGE [ french ] = "Largeur de gouttière excède largeur de colonne." ;
+ MESSAGE [ swedish ] = "Fästmarginalens bredd är för stor för kolumnbredden." ;
+ MESSAGE [ dutch ] = "De kolomafstand is te groot voor deze kolombreedte" ;
+ MESSAGE [ spanish ] = "La distancia entre columnas es demasiado grande para el ancho de las columnas." ;
+ MESSAGE [ english_us ] = "Column spacing exceeds the column width." ;
+ MESSAGE[ chinese_simplified ] = "Áмä¸ôÌ«´ó£¬³¬¹ýÁÐÇøÓò¡£";
+ MESSAGE[ russian ] = "Ðàññòîÿíèå ìåæäó êîëîíêàìè ñëèøêîì áîëüøîå äëÿ øèðèíû êîëîíîê.";
+ MESSAGE[ polish ] = "Odstêp miêdzy kolumnami jest za du¿y dla ich szerokoœci.";
+ MESSAGE[ japanese ] = "—ñ‚ÌŠÔŠu‚ª—ñ‚Ì•‚ɑ΂µ‚ÄL‚·‚¬‚Ü‚·";
+ MESSAGE[ chinese_traditional ] = "Ä涡¹j¤Ó¤j¡A¶W¹LÄæ°Ï°ì¡C";
+ MESSAGE[ arabic ] = "íÝæÞ ÊÈÇÚÏ ÇáÃÚãÏÉ ÚÑÖåÇ.";
+ MESSAGE[ greek ] = "Ç áðüóôáóç óôçëþí õðåñâáßíåé ôï ðëÜôïò ôçò óôÞëçò.";
+ MESSAGE[ korean ] = "¿­ °£°ÝÀÌ ¿­ ³Êºñ¿¡ ºñÇØ ³Ê¹« ³Ð½À´Ï´Ù.";
+ MESSAGE[ turkish ] = "Sütun aralýðý, sütun geniþliði için çok büyük.";
+ MESSAGE[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/frmdlg/makefile.mk b/sw/source/ui/frmdlg/makefile.mk
new file mode 100644
index 000000000000..3007f4d1fce3
--- /dev/null
+++ b/sw/source/ui/frmdlg/makefile.mk
@@ -0,0 +1,125 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=frmdlg
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+IMGLST_SRS=$(SRS)$/frmdlg.srs
+BMP_IN=$(PRJ)$/win/imglst
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ bbmgr.cxx \
+ colmgr.cxx \
+ column.cxx \
+ colex.cxx \
+ cption.cxx \
+ cropex.cxx \
+ frmdlg.cxx \
+ frmex.cxx \
+ frmmgr.cxx \
+ frmpage.cxx \
+ pattern.cxx \
+ uiborder.cxx \
+ wrap.cxx
+
+SRCFILES = \
+ column.src \
+ cption.src \
+ frmpage.src \
+ frmui.src \
+ wrap.src
+
+SLOFILES = \
+ $(SLO)$/bbmgr.obj \
+ $(SLO)$/colmgr.obj \
+ $(SLO)$/column.obj \
+ $(SLO)$/colex.obj \
+ $(SLO)$/cption.obj \
+ $(SLO)$/cropex.obj \
+ $(SLO)$/frmdlg.obj \
+ $(SLO)$/frmex.obj \
+ $(SLO)$/frmmgr.obj \
+ $(SLO)$/frmpage.obj \
+ $(SLO)$/pattern.obj \
+ $(SLO)$/uiborder.obj \
+ $(SLO)$/wrap.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/frmdlg/pattern.cxx b/sw/source/ui/frmdlg/pattern.cxx
new file mode 100644
index 000000000000..e7cb9673230f
--- /dev/null
+++ b/sw/source/ui/frmdlg/pattern.cxx
@@ -0,0 +1,167 @@
+/*************************************************************************
+ *
+ * $RCSfile: pattern.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVX_BACKGRND_HXX //autogen
+#include <svx/backgrnd.hxx>
+#endif
+
+
+#include "swtypes.hxx"
+#include "pattern.hxx"
+#include "frmui.hrc"
+
+
+/****************************************************************************
+Ctor
+****************************************************************************/
+
+
+
+SwBackgroundDlg::SwBackgroundDlg(Window* pParent, const SfxItemSet& rSet) :
+
+ SfxSingleTabDialog(pParent, rSet, 0)
+
+{
+ SetText(SW_RESSTR(STR_FRMUI_PATTERN));
+ SetTabPage(SvxBackgroundTabPage::Create(this, rSet));
+}
+
+/****************************************************************************
+Dtor
+****************************************************************************/
+
+
+
+SwBackgroundDlg::~SwBackgroundDlg()
+{
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/ui/frmdlg/pattern.cxx,v 1.1.1.1 2000-09-18 17:14:38 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.62 2000/09/18 16:05:34 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.61 1997/11/24 16:40:16 MA
+ include
+
+
+ Rev 1.60 24 Nov 1997 17:40:16 MA
+ include
+
+ Rev 1.59 03 Nov 1997 13:19:48 MA
+ precomp entfernt
+
+ Rev 1.58 14 Nov 1996 15:31:26 TRI
+ includes
+
+ Rev 1.57 11 Nov 1996 10:44:16 MA
+ ResMgr
+
+ Rev 1.56 28 Aug 1996 11:52:44 OS
+ includes
+
+ Rev 1.55 24 Nov 1995 16:58:10 OM
+ PCH->PRECOMPILED
+
+ Rev 1.54 16 Aug 1995 17:48:32 MA
+ Riesenheader dialogs entfernt.
+
+ Rev 1.53 31 Mar 1995 13:10:38 OM
+ SfxModalDialog -> SfxSingleTabDialog
+
+ Rev 1.52 29 Mar 1995 08:32:04 OS
+ SfxModalDialog - Parameter zusatzlich
+
+ Rev 1.51 07 Feb 1995 19:19:10 PK
+ caption fuer uiborder und pattern
+
+ Rev 1.50 24 Jan 1995 13:10:24 SWG
+ Map entfernt
+
+ Rev 1.49 21 Nov 1994 13:11:24 PK
+ sfxmodaldialog
+
+ Rev 1.48 17 Nov 1994 13:06:00 PK
+ swpatterndlg -> swbackgrounddlg
+
+ Rev 1.47 25 Oct 1994 18:14:40 ER
+ add: PCH
+
+ Rev 1.46 19 Oct 1994 12:09:48 MA
+ SV-ChangeXXX -> SetXXX.
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/frmdlg/pattern.hrc b/sw/source/ui/frmdlg/pattern.hrc
new file mode 100644
index 000000000000..da9feae9bea6
--- /dev/null
+++ b/sw/source/ui/frmdlg/pattern.hrc
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: pattern.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 BRUSH_LBL 1
+#define BRUSH_LBOX 2
+
+#define COLOR_LBL 3
+#define COLOR_LBOX 4
+
+#define FILLIN_COLOR_LBL 5
+#define FILLIN_COLOR_LBOX 6
+
+#define NO_PATTERN_BOX 7
+
+#define PATTERN_FRM 8
+#define EXAMPLE_FRM 9
+#define EXAMPLE_WIN 10
+
+#define OK_BTN 11
+#define CANCEL_BTN 12
+#define RESET_BTN 13
+
diff --git a/sw/source/ui/frmdlg/uiborder.cxx b/sw/source/ui/frmdlg/uiborder.cxx
new file mode 100644
index 000000000000..e7762ff6fead
--- /dev/null
+++ b/sw/source/ui/frmdlg/uiborder.cxx
@@ -0,0 +1,164 @@
+/*************************************************************************
+ *
+ * $RCSfile: uiborder.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVX_BORDER_HXX //autogen
+#include <svx/border.hxx>
+#endif
+
+
+#include "swtypes.hxx"
+#include "uiborder.hxx"
+#include "frmui.hrc"
+
+
+
+
+SwBorderDlg::SwBorderDlg(Window* pParent, SfxItemSet& rSet, USHORT nType) :
+
+ SfxSingleTabDialog(pParent, rSet, 0)
+
+{
+ SetText(SW_RESSTR(STR_FRMUI_BORDER));
+
+ // TabPage erzeugen
+ SvxBorderTabPage* pPage = (SvxBorderTabPage*) SvxBorderTabPage::Create(this, rSet);
+ pPage->SetSWMode(nType);
+ if(SW_BORDER_MODE_TABLE == nType)
+ pPage->HideShadowControls();
+ SetTabPage(pPage);
+}
+
+
+
+SwBorderDlg::~SwBorderDlg()
+{
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/ui/frmdlg/uiborder.cxx,v 1.1.1.1 2000-09-18 17:14:38 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.84 2000/09/18 16:05:35 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.83 2000/01/31 12:29:56 os
+ #70943# SwBorderDlg: call SvxBorderTabPage::SetSWMode
+
+ Revision 1.82 1997/11/24 16:40:16 MA
+ include
+
+
+ Rev 1.81 24 Nov 1997 17:40:16 MA
+ include
+
+ Rev 1.80 03 Nov 1997 13:19:46 MA
+ precomp entfernt
+
+ Rev 1.79 14 Nov 1996 15:32:36 TRI
+ includes
+
+ Rev 1.78 11 Nov 1996 10:44:14 MA
+ ResMgr
+
+ Rev 1.77 28 Aug 1996 11:52:58 OS
+ includes
+
+ Rev 1.76 24 Nov 1995 16:58:12 OM
+ PCH->PRECOMPILED
+
+ Rev 1.75 16 Aug 1995 17:48:26 MA
+ Riesenheader dialogs entfernt.
+
+ Rev 1.74 31 Mar 1995 13:10:40 OM
+ SfxModalDialog -> SfxSingleTabDialog
+
+ Rev 1.73 29 Mar 1995 08:32:18 OS
+ SfxModalDialog - Parameter zusatzlich
+
+ Rev 1.72 07 Feb 1995 19:19:12 PK
+ caption fuer uiborder und pattern
+
+ Rev 1.71 01 Feb 1995 17:45:16 PK
+ hideshadowcontrol()
+
+ Rev 1.70 27 Jan 1995 07:24:36 MS
+ HideShadowControls auskommentiert
+
+ Rev 1.69 26 Jan 1995 17:37:32 PK
+ hideshadowcontrols() scharfgeschaltet
+
+ Rev 1.68 26 Jan 1995 17:02:00 PK
+ ctor erweiert
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/frmdlg/wrap.cxx b/sw/source/ui/frmdlg/wrap.cxx
new file mode 100644
index 000000000000..a817643ad563
--- /dev/null
+++ b/sw/source/ui/frmdlg/wrap.cxx
@@ -0,0 +1,974 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrap.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SV_GRAPH_HXX
+#include <vcl/graph.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SFX_OBJSH_HXX //autogen
+#include <sfx2/objsh.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SVX_OPAQITEM_HXX //autogen
+#include <svx/opaqitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+
+
+#include "cmdid.h"
+#include "uitool.hxx"
+#include "wrtsh.hxx"
+#include "swmodule.hxx"
+#include "viewopt.hxx"
+#include "frmatr.hxx"
+#include "frmmgr.hxx"
+#include "globals.hrc"
+#include "frmui.hrc"
+#include "wrap.hrc"
+#include "wrap.hxx"
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+static USHORT __FAR_DATA aWrapPageRg[] = {
+ RES_LR_SPACE, RES_UL_SPACE,
+ RES_PROTECT, RES_SURROUND,
+ RES_PRINT, RES_PRINT,
+ 0
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+SwWrapDlg::SwWrapDlg(Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh, BOOL bDrawMode) :
+ SfxSingleTabDialog(pParent, rSet, 0),
+ pWrtShell(pSh)
+
+{
+ // TabPage erzeugen
+ SwWrapTabPage* pPage = (SwWrapTabPage*) SwWrapTabPage::Create(this, rSet);
+ pPage->SetFormatUsed(FALSE, bDrawMode);
+ pPage->SetShell(pWrtShell);
+ SetTabPage(pPage);
+
+ String sTitle(SW_RES(STR_FRMUI_WRAP));
+ SetText(sTitle);
+}
+
+
+
+SwWrapDlg::~SwWrapDlg()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+SwWrapTabPage::SwWrapTabPage(Window *pParent, const SfxItemSet &rSet) :
+ SfxTabPage(pParent, SW_RES(TP_FRM_WRAP), rSet),
+
+ aWrapBoxC (this, SW_RES(C_WRAP_BOX)),
+ aNoWrapRB (this, SW_RES(RB_NO_WRAP)),
+ aWrapLeftRB (this, SW_RES(RB_WRAP_LEFT)),
+ aWrapRightRB (this, SW_RES(RB_WRAP_RIGHT)),
+ aWrapParallelRB (this, SW_RES(RB_WRAP_PARALLEL)),
+ aWrapThroughRB (this, SW_RES(RB_WRAP_THROUGH)),
+ aIdealWrapRB (this, SW_RES(RB_WRAP_IDEAL)),
+ aWrapAnchorOnlyCB (this, SW_RES(CB_ANCHOR_ONLY)),
+ aWrapTransparentCB (this, SW_RES(CB_TRANSPARENT)),
+ aWrapOutlineCB (this, SW_RES(CB_OUTLINE)),
+ aWrapOutsideCB (this, SW_RES(CB_ONLYOUTSIDE)),
+ aOptionsGB (this, SW_RES(GB_OPTION)),
+ aLeftMarginFT (this, SW_RES(FT_LEFT_MARGIN)),
+ aLeftMarginED (this, SW_RES(ED_LEFT_MARGIN)),
+ aRightMarginFT (this, SW_RES(FT_RIGHT_MARGIN)),
+ aRightMarginED (this, SW_RES(ED_RIGHT_MARGIN)),
+ aTopMarginFT (this, SW_RES(FT_TOP_MARGIN)),
+ aTopMarginED (this, SW_RES(ED_TOP_MARGIN)),
+ aBottomMarginFT (this, SW_RES(FT_BOTTOM_MARGIN)),
+ aBottomMarginED (this, SW_RES(ED_BOTTOM_MARGIN)),
+ aMarginGB (this, SW_RES(GB_MARGIN)),
+
+ aWrapIL (SW_RES(IL_WRAP)),
+ nHtmlMode(0),
+ bNew(TRUE),
+ bFormat(FALSE),
+ bHtmlMode(FALSE),
+ bContourImage(FALSE),
+ nAnchorId(0)
+{
+ FreeResource();
+ SetExchangeSupport();
+
+
+ Link aLk = LINK(this, SwWrapTabPage, RangeModifyHdl);
+ aLeftMarginED.SetUpHdl(aLk);
+ aLeftMarginED.SetDownHdl(aLk);
+ aLeftMarginED.SetFirstHdl(aLk);
+ aLeftMarginED.SetLastHdl(aLk);
+ aLeftMarginED.SetLoseFocusHdl(aLk);
+
+ aRightMarginED.SetUpHdl(aLk);
+ aRightMarginED.SetDownHdl(aLk);
+ aRightMarginED.SetFirstHdl(aLk);
+ aRightMarginED.SetLastHdl(aLk);
+ aRightMarginED.SetLoseFocusHdl(aLk);
+
+ aTopMarginED.SetUpHdl(aLk);
+ aTopMarginED.SetDownHdl(aLk);
+ aTopMarginED.SetFirstHdl(aLk);
+ aTopMarginED.SetLastHdl(aLk);
+ aTopMarginED.SetLoseFocusHdl(aLk);
+
+ aBottomMarginED.SetUpHdl(aLk);
+ aBottomMarginED.SetDownHdl(aLk);
+ aBottomMarginED.SetFirstHdl(aLk);
+ aBottomMarginED.SetLastHdl(aLk);
+ aBottomMarginED.SetLoseFocusHdl(aLk);
+
+ aLk = LINK(this, SwWrapTabPage, WrapTypeHdl);
+ aNoWrapRB.SetClickHdl(aLk);
+ aWrapLeftRB.SetClickHdl(aLk);
+ aWrapRightRB.SetClickHdl(aLk);
+ aWrapParallelRB.SetClickHdl(aLk);
+ aWrapThroughRB.SetClickHdl(aLk);
+ aIdealWrapRB.SetClickHdl(aLk);
+ aWrapThroughRB.SetImage(aWrapIL.GetImage(IMG_THROUGH));
+
+ aWrapOutlineCB.SetClickHdl(LINK(this, SwWrapTabPage, ContourHdl));
+}
+
+
+
+SwWrapTabPage::~SwWrapTabPage()
+{
+}
+
+
+
+SfxTabPage* SwWrapTabPage::Create(Window *pParent, const SfxItemSet &rSet)
+{
+ return new SwWrapTabPage(pParent, rSet);
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwWrapTabPage::Reset(const SfxItemSet &rSet)
+{
+ //Contour fuer Draw, Grafik und OLE (Einfuegen/Grafik/Eigenschaften fehlt noch!)
+ if( bDrawMode )
+ {
+ aWrapOutlineCB.Show();
+ aWrapOutsideCB.Show();
+
+ aWrapTransparentCB.Check( 0 == ((const SfxInt16Item&)rSet.Get(
+ FN_DRAW_WRAP_DLG)).GetValue() );
+ aWrapTransparentCB.SaveValue();
+ }
+ else
+ {
+ BOOL bShowCB = bFormat;
+ if( !bFormat )
+ {
+ int nSelType = pWrtSh->GetSelectionType();
+ if( ( nSelType & SwWrtShell::SEL_GRF ) ||
+ ( nSelType & SwWrtShell::SEL_OLE && GRAPHIC_NONE !=
+ pWrtSh->GetIMapGraphic().GetType() ))
+ bShowCB = TRUE;
+ }
+ if( bShowCB )
+ {
+ aWrapOutlineCB.Show();
+ aWrapOutsideCB.Show();
+ }
+ }
+
+ nHtmlMode = ::GetHtmlMode((const SwDocShell*)SfxObjectShell::Current());
+ bHtmlMode = nHtmlMode & HTMLMODE_ON ? TRUE : FALSE;
+
+ FieldUnit aMetric = ::GetDfltMetric(bHtmlMode);
+ SetMetric( aLeftMarginED , aMetric );
+ SetMetric( aRightMarginED , aMetric );
+ SetMetric( aTopMarginED , aMetric );
+ SetMetric( aBottomMarginED, aMetric );
+
+ const SwFmtSurround& rSurround = (const SwFmtSurround&)rSet.Get(RES_SURROUND);
+
+ USHORT nSur = rSurround.GetSurround();
+ const SwFmtAnchor &rAnch = (const SwFmtAnchor&)rSet.Get(RES_ANCHOR);
+ nAnchorId = rAnch.GetAnchorId();
+
+ if ( (nAnchorId == FLY_AT_CNTNT || nAnchorId == FLY_AUTO_CNTNT) && nSur != SURROUND_NONE )
+ aWrapAnchorOnlyCB.Check( rSurround.IsAnchorOnly() );
+ else
+ aWrapAnchorOnlyCB.Enable( FALSE );
+
+ BOOL bContour = rSurround.IsContour();
+ aWrapOutlineCB.Check( bContour );
+ aWrapOutsideCB.Check( rSurround.IsOutside() );
+ aWrapThroughRB.Enable(!aWrapOutlineCB.IsChecked());
+ bContourImage = !bContour;
+
+ ImageRadioButton* pBtn = NULL;
+
+ switch (nSur)
+ {
+ case SURROUND_NONE:
+ {
+ pBtn = &aNoWrapRB;
+ break;
+ }
+
+ case SURROUND_THROUGHT:
+ {
+ // transparent ?
+ pBtn = &aWrapThroughRB;
+
+ if (!bDrawMode)
+ {
+ const SvxOpaqueItem& rOpaque = (const SvxOpaqueItem&)rSet.Get(RES_OPAQUE);
+ aWrapTransparentCB.Check(!rOpaque.GetValue());
+ }
+ break;
+ }
+
+ case SURROUND_PARALLEL:
+ {
+ pBtn = &aWrapParallelRB;
+ break;
+ }
+
+ case SURROUND_IDEAL:
+ {
+ pBtn = &aIdealWrapRB;
+ break;
+ }
+
+ default:
+ {
+ if (nSur == SURROUND_LEFT)
+ pBtn = &aWrapLeftRB;
+ else if (nSur == SURROUND_RIGHT)
+ pBtn = &aWrapRightRB;
+ }
+ }
+ if (pBtn)
+ {
+ pBtn->Check();
+ WrapTypeHdl(pBtn);
+ // Hier wird fuer Zeichenobjekte, die im Moment auf Durchlauf stehen,
+ // schon mal der Default "Kontur an" vorbereitet, falls man spaeter auf
+ // irgendeinen Umlauf umschaltet.
+ if (bDrawMode && !aWrapOutlineCB.IsEnabled())
+ aWrapOutlineCB.Check();
+ }
+ aWrapTransparentCB.Enable( pBtn == &aWrapThroughRB && !bHtmlMode );
+
+ const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)rSet.Get(RES_UL_SPACE);
+ const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)rSet.Get(RES_LR_SPACE);
+
+ // Abstand zum Text
+ aLeftMarginED.SetValue(aLeftMarginED.Normalize(rLR.GetLeft()), FUNIT_TWIP);
+ aRightMarginED.SetValue(aRightMarginED.Normalize(rLR.GetRight()), FUNIT_TWIP);
+ aTopMarginED.SetValue(aTopMarginED.Normalize(rUL.GetUpper()), FUNIT_TWIP);
+ aBottomMarginED.SetValue(aBottomMarginED.Normalize(rUL.GetLower()), FUNIT_TWIP);
+
+ ContourHdl(0);
+ ActivatePage( rSet );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Attribute in den Set stopfen bei OK
+ --------------------------------------------------------------------*/
+
+
+
+BOOL SwWrapTabPage::FillItemSet(SfxItemSet &rSet)
+{
+ BOOL bModified = FALSE;
+ const SfxPoolItem* pOldItem;
+
+ const SwFmtSurround& rOldSur = (const SwFmtSurround&)GetItemSet().Get(RES_SURROUND);
+ SwFmtSurround aSur( rOldSur );
+
+ SvxOpaqueItem aOp;
+
+ if (!bDrawMode)
+ {
+ const SvxOpaqueItem& rOpaque = (const SvxOpaqueItem&)GetItemSet().Get(RES_OPAQUE);
+ SvxOpaqueItem aOp = rOpaque;
+ aOp.SetValue(TRUE);
+ }
+
+ if (aNoWrapRB.IsChecked())
+ aSur.SetSurround(SURROUND_NONE);
+ else if (aWrapLeftRB.IsChecked())
+ aSur.SetSurround(SURROUND_LEFT);
+ else if (aWrapRightRB.IsChecked())
+ aSur.SetSurround(SURROUND_RIGHT);
+ else if (aWrapParallelRB.IsChecked())
+ aSur.SetSurround(SURROUND_PARALLEL);
+ else if (aWrapThroughRB.IsChecked())
+ {
+ aSur.SetSurround(SURROUND_THROUGHT);
+ if (aWrapTransparentCB.IsChecked() && !bDrawMode)
+ aOp.SetValue(FALSE);
+ }
+ else if (aIdealWrapRB.IsChecked())
+ aSur.SetSurround(SURROUND_IDEAL);
+
+ aSur.SetAnchorOnly( aWrapAnchorOnlyCB.IsChecked() );
+ BOOL bContour = aWrapOutlineCB.IsChecked() && aWrapOutlineCB.IsEnabled();
+ aSur.SetContour( bContour );
+
+ if ( bContour )
+ aSur.SetOutside(aWrapOutsideCB.IsChecked());
+
+ if(0 == (pOldItem = GetOldItem( rSet, RES_SURROUND )) ||
+ aSur != *pOldItem )
+ {
+ rSet.Put(aSur);
+ bModified = TRUE;
+ }
+
+ if (!bDrawMode)
+ {
+ if(0 == (pOldItem = GetOldItem( rSet, FN_OPAQUE )) ||
+ aOp != *pOldItem )
+ {
+ rSet.Put(aOp);
+ bModified = TRUE;
+ }
+ }
+
+ BOOL bTopMod = aTopMarginED.IsValueModified();
+ BOOL bBottomMod = aBottomMarginED.IsValueModified();
+
+ SvxULSpaceItem aUL;
+ aUL.SetUpper((USHORT)aTopMarginED.Denormalize(aTopMarginED.GetValue(FUNIT_TWIP)));
+ aUL.SetLower((USHORT)aBottomMarginED.Denormalize(aBottomMarginED.GetValue(FUNIT_TWIP)));
+
+ if ( bTopMod || bBottomMod )
+ {
+ if(0 == (pOldItem = GetOldItem(rSet, RES_UL_SPACE)) ||
+ aUL != *pOldItem )
+ {
+ rSet.Put( aUL, RES_UL_SPACE );
+ bModified = TRUE;
+ }
+ }
+
+ BOOL bLeftMod = aLeftMarginED.IsValueModified();
+ BOOL bRightMod = aRightMarginED.IsValueModified();
+
+ SvxLRSpaceItem aLR;
+ aLR.SetLeft((USHORT)aLeftMarginED.Denormalize(aLeftMarginED.GetValue(FUNIT_TWIP)));
+ aLR.SetRight((USHORT)aRightMarginED.Denormalize(aRightMarginED.GetValue(FUNIT_TWIP)));
+
+ if ( bLeftMod || bRightMod )
+ {
+ if( 0 == (pOldItem = GetOldItem(rSet, RES_LR_SPACE)) ||
+ aLR != *pOldItem )
+ {
+ rSet.Put(aLR, RES_LR_SPACE);
+ bModified = TRUE;
+ }
+ }
+
+ if ( bDrawMode )
+ {
+ BOOL bChecked = aWrapTransparentCB.IsChecked() & aWrapTransparentCB.IsEnabled();
+ if (aWrapTransparentCB.GetSavedValue() != bChecked)
+ bModified |= 0 != rSet.Put(SfxInt16Item(FN_DRAW_WRAP_DLG, bChecked ? 0 : 1));
+ }
+
+ return bModified;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Bsp - Update
+ --------------------------------------------------------------------*/
+
+
+
+void SwWrapTabPage::ActivatePage(const SfxItemSet& rSet)
+{
+ // Anchor
+ const SwFmtAnchor &rAnch = (const SwFmtAnchor&)rSet.Get(RES_ANCHOR);
+ nAnchorId = rAnch.GetAnchorId();
+ BOOL bEnable = nAnchorId != FLY_IN_CNTNT;
+
+ if (!bDrawMode)
+ {
+ SwWrtShell* pSh = bFormat ? ::GetActiveWrtShell() : pWrtSh;
+ SwFlyFrmAttrMgr aMgr( bNew, pSh, (const SwAttrSet&)GetItemSet() );
+ SwFrmValid aVal;
+
+ // Size
+ const SwFmtFrmSize& rFrmSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE);
+ Size aSize = rFrmSize.GetSize();
+
+ // Rand
+ const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)rSet.Get(RES_UL_SPACE);
+ const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)rSet.Get(RES_LR_SPACE);
+ nOldLeftMargin = rLR.GetLeft();
+ nOldRightMargin = rLR.GetRight();
+ nOldUpperMargin = rUL.GetUpper();
+ nOldLowerMargin = rUL.GetLower();
+
+ // Position
+ const SwFmtHoriOrient& rHori = (const SwFmtHoriOrient&)rSet.Get(RES_HORI_ORIENT);
+ const SwFmtVertOrient& rVert = (const SwFmtVertOrient&)rSet.Get(RES_VERT_ORIENT);
+
+ aVal.eArea = (RndStdIds)nAnchorId;
+ aVal.bAuto = rFrmSize.GetSizeType() == ATT_MIN_SIZE;
+ aVal.bMirror = rHori.IsPosToggle();
+
+ aVal.eHori = rHori.GetHoriOrient();
+ aVal.eVert = (SvxFrameVertOrient)rVert.GetVertOrient();
+
+ aVal.nHPos = rHori.GetPos();
+ aVal.eHRel = rHori.GetRelationOrient();
+ aVal.nVPos = rVert.GetPos();
+ aVal.eVRel = rVert.GetRelationOrient();
+
+ if (rFrmSize.GetWidthPercent() && rFrmSize.GetWidthPercent() != 0xff)
+ aSize.Width() = aSize.Width() * rFrmSize.GetWidthPercent() / 100;
+
+ if (rFrmSize.GetHeightPercent() && rFrmSize.GetHeightPercent() != 0xff)
+ aSize.Height() = aSize.Height() * rFrmSize.GetHeightPercent() / 100;
+
+ aVal.nWidth = aSize.Width();
+ aVal.nHeight = aSize.Height();
+ aFrmSize = aSize;
+
+ aMgr.ValidateMetrics(aVal);
+
+ SwTwips nLeft;
+ SwTwips nRight;
+ SwTwips nTop;
+ SwTwips nBottom;
+
+ nLeft = aVal.nHPos - aVal.nMinHPos;
+ nRight = aVal.nMaxWidth - aVal.nWidth;
+ nTop = aVal.nVPos - aVal.nMinVPos;
+ nBottom = aVal.nMaxHeight - aVal.nHeight;
+
+ if (bHtmlMode && 0 == (nHtmlMode & HTMLMODE_FULL_ABS_POS))
+ {
+ nLeft = nRight = ( nLeft + nRight ) / 2;
+ nTop = nBottom = ( nTop + nBottom ) / 2;
+ }
+ else
+ {
+ if (aVal.eArea == FLY_IN_CNTNT)
+ {
+ nLeft = nRight;
+
+ if (aVal.nVPos < 0)
+ {
+ if (aVal.nVPos <= aVal.nMaxHeight)
+ nTop = aVal.nMaxVPos - aVal.nHeight;
+ else
+ nTop = nBottom = 0; // Kein Umlauf
+ }
+ else
+ nTop = aVal.nMaxVPos - aVal.nHeight - aVal.nVPos;
+ }
+ else
+ {
+ nLeft += nRight;
+ nTop += nBottom;
+ }
+
+ nBottom = nTop;
+ nRight = nLeft;
+ }
+
+ aLeftMarginED.SetMax(aLeftMarginED.Normalize(nLeft), FUNIT_TWIP);
+ aRightMarginED.SetMax(aRightMarginED.Normalize(nRight), FUNIT_TWIP);
+
+ aTopMarginED.SetMax(aTopMarginED.Normalize(nTop), FUNIT_TWIP);
+ aBottomMarginED.SetMax(aBottomMarginED.Normalize(nBottom), FUNIT_TWIP);
+
+ RangeModifyHdl(&aLeftMarginED);
+ RangeModifyHdl(&aTopMarginED);
+ }
+
+ const SwFmtSurround& rSurround = (const SwFmtSurround&)rSet.Get(RES_SURROUND);
+ USHORT nSur = rSurround.GetSurround();
+
+ aWrapTransparentCB.Enable( bEnable && !bHtmlMode && nSur == SURROUND_THROUGHT );
+ if(bHtmlMode)
+ {
+ BOOL bSomeAbsPos = 0 != (nHtmlMode & HTMLMODE_SOME_ABS_POS);
+ const SwFmtHoriOrient& rHori = (const SwFmtHoriOrient&)rSet.Get(RES_HORI_ORIENT);
+ SwHoriOrient eHOrient = rHori.GetHoriOrient();
+ SwRelationOrient eHRelOrient = rHori.GetRelationOrient();
+ aWrapOutlineCB.Hide();
+ BOOL bAllHtmlModes = (nAnchorId == FLY_AT_CNTNT || nAnchorId == FLY_AUTO_CNTNT) &&
+ (eHOrient == HORI_RIGHT || eHOrient == HORI_LEFT);
+ aWrapAnchorOnlyCB.Enable( bAllHtmlModes && nSur != SURROUND_NONE );
+ aWrapOutsideCB.Hide();
+ aIdealWrapRB.Enable( FALSE );
+
+
+ aWrapTransparentCB.Enable( FALSE );
+ aNoWrapRB.Enable( FLY_AT_CNTNT == nAnchorId );
+ aWrapParallelRB.Enable( FALSE );
+ aWrapLeftRB .Enable( FLY_AT_CNTNT == nAnchorId ||
+ (FLY_AUTO_CNTNT == nAnchorId && eHOrient == HORI_RIGHT && eHRelOrient == PRTAREA));
+ aWrapRightRB .Enable( FLY_AT_CNTNT == nAnchorId ||
+ ( FLY_AUTO_CNTNT == nAnchorId && eHOrient == HORI_LEFT && eHRelOrient == PRTAREA));
+
+ aWrapThroughRB.Enable( (FLY_PAGE == nAnchorId ||
+ (FLY_AUTO_CNTNT == nAnchorId && eHRelOrient != PRTAREA) || FLY_AT_CNTNT == nAnchorId )
+ && bSomeAbsPos &&
+ eHOrient != HORI_RIGHT);
+ if(aNoWrapRB.IsChecked() && !aNoWrapRB.IsEnabled())
+ {
+ if(aWrapThroughRB.IsEnabled())
+ aWrapThroughRB.Check(TRUE);
+ else if(aWrapLeftRB.IsEnabled())
+ aWrapLeftRB.Check();
+ else if(aWrapRightRB.IsEnabled())
+ aWrapRightRB.Check();
+
+ }
+ if(aWrapLeftRB.IsChecked() && !aWrapLeftRB.IsEnabled())
+ {
+ if(aWrapRightRB.IsEnabled())
+ aWrapRightRB.Check();
+ else if(aWrapThroughRB.IsEnabled())
+ aWrapThroughRB.Check();
+ }
+ if(aWrapRightRB.IsChecked() && !aWrapRightRB.IsEnabled())
+ {
+ if(aWrapLeftRB.IsEnabled())
+ aWrapLeftRB.Check();
+ else if(aWrapThroughRB.IsEnabled())
+ aWrapThroughRB.Check();
+ }
+ if(aWrapThroughRB.IsChecked() && !aWrapThroughRB.IsEnabled())
+ if(aNoWrapRB.IsEnabled())
+ aNoWrapRB.Check();
+
+ if(aWrapParallelRB.IsChecked() && !aWrapParallelRB.IsEnabled())
+ aWrapThroughRB.Check();
+ }
+ else
+ {
+ aNoWrapRB.Enable( bEnable );
+ aWrapLeftRB.Enable( bEnable );
+ aWrapRightRB.Enable( bEnable );
+ aIdealWrapRB.Enable( bEnable );
+ aWrapThroughRB.Enable( bEnable );
+ aWrapParallelRB.Enable( bEnable );
+ aWrapAnchorOnlyCB.Enable( (nAnchorId == FLY_AT_CNTNT || nAnchorId == FLY_AUTO_CNTNT)
+ && nSur != SURROUND_NONE && nSur != SURROUND_THROUGHT );
+ }
+ ContourHdl(0);
+}
+
+
+
+int SwWrapTabPage::DeactivatePage(SfxItemSet* pSet)
+{
+ if(pSet)
+ FillItemSet(*pSet);
+
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Bereichspruefung
+ --------------------------------------------------------------------*/
+
+
+
+IMPL_LINK( SwWrapTabPage, RangeModifyHdl, MetricField *, pEdit )
+{
+ if(bHtmlMode && 0 == (nHtmlMode & HTMLMODE_FULL_ABS_POS))
+ {
+ long nValue = pEdit->GetValue();
+ if (pEdit == &aLeftMarginED)
+ aRightMarginED.SetUserValue(nValue, FUNIT_NONE);
+ else if (pEdit == &aRightMarginED)
+ aLeftMarginED.SetUserValue(nValue, FUNIT_NONE);
+ else if (pEdit == &aTopMarginED)
+ aBottomMarginED.SetUserValue(nValue, FUNIT_NONE);
+ else if (pEdit == &aBottomMarginED)
+ aTopMarginED.SetUserValue(nValue, FUNIT_NONE);
+ }
+ else
+ {
+ long nValue = pEdit->GetValue();
+ MetricField *pOpposite;
+
+ if (pEdit == &aLeftMarginED)
+ pOpposite = &aRightMarginED;
+ else if (pEdit == &aRightMarginED)
+ pOpposite = &aLeftMarginED;
+ else if (pEdit == &aTopMarginED)
+ pOpposite = &aBottomMarginED;
+ else if (pEdit == &aBottomMarginED)
+ pOpposite = &aTopMarginED;
+
+ long nOpposite = pOpposite->GetValue();
+
+ if (nValue + nOpposite > Max(pEdit->GetMax(), pOpposite->GetMax()))
+ pOpposite->SetValue(pOpposite->GetMax() - nValue);
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+IMPL_LINK( SwWrapTabPage, WrapTypeHdl, ImageRadioButton *, pBtn )
+{
+ BOOL bWrapThrough = (pBtn == &aWrapThroughRB);
+ aWrapTransparentCB.Enable( bWrapThrough && !bHtmlMode );
+ bWrapThrough |= ( nAnchorId == FLY_IN_CNTNT );
+ aWrapOutlineCB.Enable( !bWrapThrough );
+ aWrapOutsideCB.Enable( !bWrapThrough && aWrapOutlineCB.IsChecked() );
+ aWrapAnchorOnlyCB.Enable( (nAnchorId == FLY_AT_CNTNT || nAnchorId == FLY_AUTO_CNTNT) &&
+ (pBtn != &aNoWrapRB) && !bWrapThrough );
+
+ ContourHdl(0);
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+IMPL_LINK( SwWrapTabPage, ContourHdl, CheckBox *, pBtn )
+{
+ BOOL bEnable = !(aWrapOutlineCB.IsChecked() && aWrapOutlineCB.IsEnabled());
+
+ aWrapOutsideCB.Enable(!bEnable);
+
+ bEnable = !aWrapOutlineCB.IsChecked();
+ if (bEnable == bContourImage) // damit es nicht immer flackert
+ {
+ if(bEnable)
+ {
+ aNoWrapRB.SetImage(aWrapIL.GetImage(IMG_NONE));
+ aWrapLeftRB.SetImage(aWrapIL.GetImage(IMG_LEFT));
+ aWrapRightRB.SetImage(aWrapIL.GetImage(IMG_RIGHT));
+ aWrapParallelRB.SetImage(aWrapIL.GetImage(IMG_PARALLEL));
+ aIdealWrapRB.SetImage(aWrapIL.GetImage(IMG_IDEAL));
+ bContourImage = FALSE;
+ }
+ else
+ {
+ aNoWrapRB.SetImage(aWrapIL.GetImage( IMG_KON_NONE ));
+ aWrapLeftRB.SetImage(aWrapIL.GetImage( IMG_KON_LEFT ));
+ aWrapRightRB.SetImage(aWrapIL.GetImage( IMG_KON_RIGHT ));
+ aWrapParallelRB.SetImage(aWrapIL.GetImage(IMG_KON_PARALLEL ));
+ aIdealWrapRB.SetImage(aWrapIL.GetImage( IMG_KON_IDEAL ));
+ bContourImage = TRUE;
+ }
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+USHORT* SwWrapTabPage::GetRanges()
+{
+ return aWrapPageRg;
+}
+
+/*--------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.61 2000/09/18 16:05:35 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.60 2000/03/13 16:42:50 jp
+ Bug #73538#: Reset - show or hide the contour checkboxes
+
+ Revision 1.59 1999/09/28 10:24:03 os
+ #68077# :ActivatePage AnchorOnly not enabled in wrap through
+
+ Revision 1.58 1998/09/08 14:57:00 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+
+ Rev 1.57 08 Sep 1998 16:57:00 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.56 10 Jul 1998 10:14:24 OS
+ Fix im Umlauf fuer HTML
+
+ Rev 1.55 23 Apr 1998 12:58:00 OS
+ noch ein paar HTML-Reste
+
+ Rev 1.54 16 Apr 1998 13:11:04 OS
+ Rahmenanpassung die zweite
+
+ Rev 1.53 07 Apr 1998 12:00:48 OM
+ Maximalwerte fuer Umlauf
+
+ Rev 1.52 06 Apr 1998 09:48:30 OS
+ HTML-Anpassungen
+
+ Rev 1.51 30 Mar 1998 13:20:54 OM
+ Umlauf nicht mehr auf naechsten Rand begrenzen
+
+ Rev 1.50 25 Feb 1998 15:12:36 OM
+ AnchorOnly auch bei Auto-Anker
+
+ Rev 1.49 04 Feb 1998 11:46:30 OM
+ #45775# Keine Maximalwerteinschraenkung bei Rahmenvorlagen
+
+ Rev 1.48 28 Nov 1997 19:49:20 MA
+ basobj
+
+ Rev 1.47 24 Nov 1997 17:39:32 MA
+ include
+
+ Rev 1.46 20 Nov 1997 12:14:58 AMA
+ Opt. SwSurround: GoldCut jetzt als Enum; nicht implementierte Enums entfernt
+
+ Rev 1.45 03 Nov 1997 13:19:50 MA
+ precomp entfernt
+
+ Rev 1.44 30 Sep 1997 18:34:22 MA
+ nicht gepostete MUSS-Aenderung eingebaut
+
+ Rev 1.43 01 Sep 1997 13:26:22 OS
+ DLL-Umstellung
+
+ Rev 1.42 12 Aug 1997 15:58:08 OS
+ frmitems/textitem/paraitem aufgeteilt
+
+ Rev 1.41 07 Aug 1997 14:59:16 OM
+ Headerfile-Umstellung
+
+ Rev 1.40 10 Jul 1997 15:56:44 OM
+ Abstand oben/unten
+
+ Rev 1.39 02 Jul 1997 13:43:50 AMA
+ New: Abstaende nach oben/unten, noch nicht freigeschaltet
+
+ Rev 1.38 05 May 1997 16:37:48 OM
+ Ohne Umlauf kein erster Absatz
+
+ Rev 1.37 11 Mar 1997 15:18:18 OM
+ Bei Html-Mode falsche Umlaufform nicht korrigieren
+
+ Rev 1.36 23 Feb 1997 16:59:34 AMA
+ Fix: Zeichengeb.: Abstand oben/unten zulassen; Outline nicht
+
+ Rev 1.35 20 Feb 1997 13:45:48 AMA
+ Fix #36502#: Rahmenabstaende im HTML-Mode zulassen.
+
+ Rev 1.34 20 Feb 1997 13:42:58 AMA
+ Fix #36502#: Rahmenabstaende im HTML-Mode zulassen.
+
+ Rev 1.33 10 Feb 1997 10:02:24 OM
+ Aufgeraeumt
+
+ Rev 1.31 05 Feb 1997 16:18:20 OS
+ keine Kontur fuer Html
+
+ Rev 1.30 04 Feb 1997 16:28:56 OM
+ Controller disablen
+
+ Rev 1.29 03 Feb 1997 16:30:24 OM
+ Maximalwertberechnung fuer zeichengebundene Rahmen geaendert
+
+ Rev 1.28 03 Feb 1997 16:00:42 OM
+ Maximalwertberechnung fuer zeichengebundene Rahmen geaendert
+
+ Rev 1.27 28 Jan 1997 18:36:22 HJS
+ includes
+
+ Rev 1.26 28 Jan 1997 16:31:50 OS
+ HtmlMode mit GetHtmlMode ermitteln
+
+ Rev 1.25 24 Jan 1997 16:58:26 HJS
+ #35241# GPF gefixed - fuer OM
+
+ Rev 1.25 24 Jan 1997 13:39:56 OM
+ #35241# GPF gefixt
+
+ Rev 1.24 22 Jan 1997 11:32:08 MA
+ Umstellung Put
+
+ Rev 1.23 21 Jan 1997 10:21:28 OM
+ Checkbox fuer: nur aussen
+
+ Rev 1.22 13 Jan 1997 16:59:10 MA
+ Kontur fuer Grafik und OLE
+
+ Rev 1.21 08 Jan 1997 10:56:44 OS
+ SID_HTML_MODE jetzt UInt16Item
+
+ Rev 1.20 07 Jan 1997 08:54:46 MA
+ new_frm_size entfernt
+
+ Rev 1.19 18 Dec 1996 12:15:00 OM
+ Konturumfluss defaulten
+
+ Rev 1.18 17 Dec 1996 16:28:14 OM
+ Kontur defaulten
+
+ Rev 1.17 27 Nov 1996 16:14:38 OM
+ #33427# Zeichenobjekte: automatischer Layerwechsel je nach Umlaufart
+
+ Rev 1.16 19 Nov 1996 11:42:28 OS
+ +ImageList
+
+ Rev 1.15 15 Nov 1996 20:24:52 MA
+ #32280#
+
+ Rev 1.14 14 Nov 1996 12:00:42 OS
+ Zusaetze-Group ausgelagert, Flackern verhindert, keine ContourImage fuer Durchlauf
+
+ Rev 1.13 12 Nov 1996 16:11:20 MA
+ Vorb. Rahmenabstand
+
+ Rev 1.12 11 Nov 1996 10:39:36 MA
+ ResMgr
+
+ Rev 1.11 08 Nov 1996 15:58:52 OM
+ Schuetzen neu organisiert, transparenz im Draw-Mode
+
+ Rev 1.10 06 Nov 1996 15:21:52 OM
+ Kontur enabled
+
+ Rev 1.9 06 Nov 1996 11:31:18 OM
+ #33048# Transparent-CB nur bei Durchlauf enablen
+
+ Rev 1.8 05 Nov 1996 17:44:16 OM
+ #33046# Rand-Maximalwertberechnung korrigiert
+
+ Rev 1.7 04 Nov 1996 16:50:46 OM
+ Maximalwertbegrenzung fuer Umlauf-TP
+
+ Rev 1.6 30 Oct 1996 15:40:00 OM
+ Neue Segs
+
+ Rev 1.5 30 Oct 1996 15:39:40 OM
+ Durchlauf auch bei Draw-Objekten
+
+ Rev 1.4 29 Oct 1996 17:14:40 OM
+ Abstaende auch im Drawmode
+
+ Rev 1.3 29 Oct 1996 15:39:04 OM
+ Controls im Drawmode verstecken
+
+ Rev 1.2 25 Oct 1996 16:01:26 OM
+ Controls im Drawmode verstecken
+
+ Rev 1.1 25 Oct 1996 15:06:42 OM
+ Neue Umfluss-Tabpage in Rahmendialog uebernommen
+
+ Rev 1.0 23 Oct 1996 19:54:46 OM
+ Initial revision.
+
+--------------------------------------------------*/
+
+
diff --git a/sw/source/ui/frmdlg/wrap.hrc b/sw/source/ui/frmdlg/wrap.hrc
new file mode 100644
index 000000000000..ffa36adfc834
--- /dev/null
+++ b/sw/source/ui/frmdlg/wrap.hrc
@@ -0,0 +1,98 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrap.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 RB_NO_WRAP 2
+#define RB_WRAP_LEFT 3
+#define RB_WRAP_RIGHT 4
+#define RB_WRAP_PARALLEL 5
+#define RB_WRAP_THROUGH 6
+#define RB_WRAP_IDEAL 7
+#define CB_ANCHOR_ONLY 8
+#define FT_LEFT_MARGIN 13
+#define ED_LEFT_MARGIN 14
+#define FT_RIGHT_MARGIN 15
+#define ED_RIGHT_MARGIN 16
+#define FT_TOP_MARGIN 17
+#define ED_TOP_MARGIN 18
+#define ED_BOTTOM_MARGIN 19
+#define FT_BOTTOM_MARGIN 20
+#define GB_MARGIN 21
+#define CB_TRANSPARENT 22
+#define CB_OUTLINE 23
+#define GB_OPTION 24
+#define CB_ONLYOUTSIDE 25
+#define C_WRAP_BOX 31
+
+#define IL_WRAP 32
+// nur fuer die ImageList
+#define IMG_BEGIN 1
+#define IMG_NONE (IMG_BEGIN)
+#define IMG_LEFT (IMG_BEGIN + 1)
+#define IMG_RIGHT (IMG_BEGIN + 2)
+#define IMG_PARALLEL (IMG_BEGIN + 3)
+#define IMG_THROUGH (IMG_BEGIN + 4)
+#define IMG_IDEAL (IMG_BEGIN + 5)
+#define IMG_KON_NONE (IMG_BEGIN + 6)
+#define IMG_KON_LEFT (IMG_BEGIN + 7)
+#define IMG_KON_RIGHT (IMG_BEGIN + 8)
+#define IMG_KON_PARALLEL (IMG_BEGIN + 9)
+#define IMG_KON_IDEAL (IMG_BEGIN + 10)
+
+
diff --git a/sw/source/ui/frmdlg/wrap.src b/sw/source/ui/frmdlg/wrap.src
new file mode 100644
index 000000000000..848d70d826bb
--- /dev/null
+++ b/sw/source/ui/frmdlg/wrap.src
@@ -0,0 +1,597 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrap.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "frmui.hrc"
+#include "wrap.hrc"
+#include "globals.hrc"
+#include "helpid.h"
+TabPage TP_FRM_WRAP
+{
+ SVLook = TRUE ;
+ HelpID = HID_FRM_EXT ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE;
+ GroupBox C_WRAP_BOX
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 48 ) ;
+ };
+ ImageRadioButton RB_NO_WRAP
+ {
+ Pos = MAP_APPFONT ( 9 , 10 ) ;
+ Size = MAP_APPFONT ( 37 , 37 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Kein : ~Keiner */
+ /* ### ACHTUNG: Neuer Text in Resource? ~Kein : ~Keiner */
+ /* ### ACHTUNG: Neuer Text in Resource? ~Kein : ~Keiner */
+ Text = "~Kein" ;
+ Text [ ENGLISH ] = "No Wrap" ;
+ Text [ english_us ] = "~None" ;
+ TopImage = True ;
+ Text [ dutch ] = "~Geen" ;
+ Text [ italian ] = "~Senza" ;
+ Text [ spanish ] = "~Ninguno" ;
+ Text [ french ] = "~Aucun(e)" ;
+ Text [ swedish ] = "~Ingen" ;
+ Text [ danish ] = "Ingen" ;
+ Text [ portuguese ] = "~Nenhum" ;
+ Text [ portuguese_brazilian ] = "~Kein" ;
+ Text[ chinese_simplified ] = "ÎÞ(~N)";
+ Text[ russian ] = "Áåç";
+ Text[ polish ] = "Brak";
+ Text[ japanese ] = "㉺(~N)";
+ Text[ language_user1 ] = "Íåò";
+ Text[ chinese_traditional ] = "µL(~N)";
+ Text[ arabic ] = "ÈÏæä";
+ Text[ greek ] = "ÊáíÝíá";
+ Text[ korean ] = "¾øÀ½(~N)";
+ Text[ turkish ] = "~Yok";
+ };
+ ImageRadioButton RB_WRAP_LEFT
+ {
+ Pos = MAP_APPFONT ( 50 , 10 ) ;
+ Size = MAP_APPFONT ( 37 , 37 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Links : Links */
+ /* ### ACHTUNG: Neuer Text in Resource? ~Links : Links */
+ /* ### ACHTUNG: Neuer Text in Resource? ~Links : Links */
+ Text = "~Links" ;
+ Text [ ENGLISH ] = "~Left" ;
+ Text [ english_us ] = "~Left" ;
+ TopImage = True ;
+ Text [ dutch ] = "~Links" ;
+ Text [ italian ] = "Sinistra" ;
+ Text [ spanish ] = "Iz~quierda" ;
+ Text [ french ] = "~À gauche" ;
+ Text [ swedish ] = "V~änster" ;
+ Text [ danish ] = "Venstre" ;
+ Text [ portuguese ] = "~Esquerda" ;
+ Text [ portuguese_brazilian ] = "~Links" ;
+ Text[ chinese_simplified ] = "×ó(~L)";
+ Text[ russian ] = "Ñëåâà";
+ Text[ polish ] = "Z le~wej";
+ Text[ japanese ] = "¶(~L)";
+ Text[ chinese_traditional ] = "¥ª(~L)";
+ Text[ arabic ] = "Åáì ÇáíÓÇÑ";
+ Text[ greek ] = "ÁñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊ(~L)";
+ Text[ turkish ] = "So~l";
+ };
+ ImageRadioButton RB_WRAP_RIGHT
+ {
+ Pos = MAP_APPFONT ( 91 , 10 ) ;
+ Size = MAP_APPFONT ( 37 , 37 ) ;
+ Text = "~Rechts" ;
+ Text [ ENGLISH ] = "~Right" ;
+ Text [ english_us ] = "R~ight" ;
+ TopImage = True ;
+ Text [ dutch ] = "~Rechts" ;
+ Text [ italian ] = "Destra" ;
+ Text [ spanish ] = "~Derecha" ;
+ Text [ french ] = "À ~droite" ;
+ Text [ swedish ] = "Hö~ger" ;
+ Text [ danish ] = "Højre" ;
+ Text [ portuguese ] = "~Direita" ;
+ Text [ portuguese_brazilian ] = "~Rechts" ;
+ 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 ] = "¿À¸¥ÂÊ(~I)";
+ Text[ turkish ] = "Sa~ð";
+ };
+ ImageRadioButton RB_WRAP_PARALLEL
+ {
+ Pos = MAP_APPFONT ( 132 , 10 ) ;
+ Size = MAP_APPFONT ( 37 , 37 ) ;
+ Text = "~Parallel" ;
+ Text [ ENGLISH ] = "~Parallel" ;
+ Text [ english_us ] = "~Parallel" ;
+ TopImage = True ;
+ Text [ dutch ] = "~Parallel" ;
+ Text [ italian ] = "~Parallelo" ;
+ Text [ spanish ] = "~Paralelo" ;
+ Text [ french ] = "~Parallèle" ;
+ Text [ swedish ] = "~Parallell" ;
+ Text [ danish ] = "Parallel" ;
+ Text [ portuguese ] = "~Paralelo" ;
+ Text [ portuguese_brazilian ] = "~Parallel" ;
+ Text[ chinese_simplified ] = "ƽÐÐ(~P)";
+ Text[ russian ] = "Ïàðàëëåëüíî";
+ Text[ polish ] = "Równ~olegle";
+ Text[ japanese ] = "—¼‘¤(~P)";
+ Text[ chinese_traditional ] = "¥­¦æ(~P)";
+ Text[ arabic ] = "ãÊæÇÒ";
+ Text[ greek ] = "ÐáñÜëëçëá";
+ Text[ korean ] = "ÆòÇà(~P)";
+ Text[ turkish ] = "~Paralel";
+ };
+ ImageRadioButton RB_WRAP_THROUGH
+ {
+ Pos = MAP_APPFONT ( 173 , 10 ) ;
+ Size = MAP_APPFONT ( 37 , 37 ) ;
+ Text = "~Durchlauf" ;
+ Text [ ENGLISH ] = "Wrap ~through" ;
+ Text [ norwegian ] = "Wrap ~through" ;
+ Text [ italian ] = "~Attraverso" ;
+ Text [ portuguese_brazilian ] = "Circundarmento ~através" ;
+ Text [ portuguese ] = "~Através do objecto" ;
+ Text [ finnish ] = "Kierrätys ~läpi" ;
+ Text [ danish ] = "Gennem" ;
+ Text [ french ] = "À ~travers" ;
+ Text [ swedish ] = "Genomflö~de" ;
+ Text [ dutch ] = "~Doorloop" ;
+ Text [ spanish ] = "~Continuo" ;
+ Text [ english_us ] = "Thro~ugh" ;
+ TopImage = True ;
+ Text[ chinese_simplified ] = "¹á´©(~T)";
+ Text[ russian ] = "Ñêâîçíîå";
+ Text[ polish ] = "Przep³. te~kstu";
+ Text[ japanese ] = "Ü‚è•Ô‚µ‚È‚µ(~T)";
+ Text[ chinese_traditional ] = "¤£Àô¶(~T)";
+ Text[ arabic ] = "ÚÈÑ";
+ Text[ greek ] = "Äéá ìÝóïõ";
+ Text[ korean ] = "Àüü µ¹¸²(~U)";
+ Text[ turkish ] = "~Metin arkasýna gönder";
+ };
+ ImageRadioButton RB_WRAP_IDEAL
+ {
+ Pos = MAP_APPFONT ( 214 , 10 ) ;
+ Size = MAP_APPFONT ( 37 , 37 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? D~ynamisch : ~Optimal */
+ /* ### ACHTUNG: Neuer Text in Resource? D~ynamisch : ~Optimal */
+ Text = "D~ynamisch" ;
+ Text [ ENGLISH ] = "D~ynamic Wrap" ;
+ TopImage = True ;
+ Text [ dutch ] = "D~ynamisch" ;
+ Text [ english_us ] = "~Optimal" ;
+ Text [ italian ] = "~Dinamico" ;
+ Text [ spanish ] = "Diná~mico" ;
+ Text [ french ] = "~Dynamique" ;
+ Text [ swedish ] = "D~ynamisk" ;
+ Text [ danish ] = "Dynamisk" ;
+ Text [ portuguese ] = "D~inâmico" ;
+ Text [ portuguese_brazilian ] = "D~ynamisch" ;
+ Text[ chinese_simplified ] = "×î¼Ñ(~O)";
+ Text[ russian ] = "Îïòèìàëüíîå";
+ Text[ polish ] = "Dyna~miczny";
+ Text[ japanese ] = "¶‰E“®“I(~O)";
+ Text[ chinese_traditional ] = "³ÌÓì(~O)";
+ Text[ arabic ] = "ÏíäÇãíßí";
+ Text[ greek ] = "ÄõíáìéêÜ";
+ Text[ korean ] = "ÃÖÀûÀÇ(~O)";
+ Text[ turkish ] = "D~inamik";
+ };
+ CheckBox CB_ANCHOR_ONLY
+ {
+ Pos = MAP_APPFONT ( 12 , 65 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Er~ster Absatz" ;
+ Text [ ENGLISH ] = "First paragraph only" ;
+ Text [ english_us ] = "~First paragraph" ;
+ Text [ italian ] = "Primo paragrafo" ;
+ Text [ spanish ] = "Primer párra~fo" ;
+ Text [ french ] = "1~er paragraphe" ;
+ Text [ dutch ] = "~Eerste alinea" ;
+ Text [ swedish ] = "För~sta stycket" ;
+ Text [ danish ] = "Første afsnit" ;
+ Text [ portuguese_brazilian ] = "Erster Absat~z" ;
+ Text [ portuguese ] = "Primeiro pará~grafo" ;
+ Text[ chinese_simplified ] = "µÚÒ»¶ÎÂä(~F)";
+ Text[ russian ] = "Ïåðâûé àáçàö";
+ Text[ polish ] = "Pierwszy akapit";
+ Text[ japanese ] = "ʼn‚Ì’i—Ž(~F)";
+ Text[ chinese_traditional ] = "²Ä¤@¬q¸¨(~F)";
+ Text[ arabic ] = "ÇáÝÞÑÉ ÇáÃæáì";
+ Text[ greek ] = "Ðñþôç ðáñÜãñáöï~ò";
+ Text[ korean ] = "ù ´Ü¶ô(~F)";
+ Text[ turkish ] = "Ýlk paragraf";
+ };
+ CheckBox CB_TRANSPARENT
+ {
+ Pos = MAP_APPFONT ( 12 , 81 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Im Hin~tergrund : ~Transparent */
+ /* ### ACHTUNG: Neuer Text in Resource? Im Hin~tergrund : ~Transparent */
+ /* ### ACHTUNG: Neuer Text in Resource? Im Hin~tergrund : ~Transparent */
+ Text = "Im Hin~tergrund" ;
+ Text [ ENGLISH ] = "To background" ;
+ Text [ dutch ] = "~Op achtergrond" ;
+ Text [ english_us ] = "In bac~kground" ;
+ Text [ italian ] = "~Attraverso trasparente" ;
+ Text [ spanish ] = "En el f~ondo" ;
+ Text [ french ] = "À l'~arrière-plan" ;
+ Text [ swedish ] = "I ~bakgrunden" ;
+ Text [ danish ] = "I baggrunden" ;
+ Text [ portuguese ] = "Em ~segundo plano" ;
+ Text [ portuguese_brazilian ] = "Im Hin~tergrund" ;
+ Text[ chinese_simplified ] = "ÖÃÓÚ±³¾°(~K)";
+ Text[ russian ] = "Íà ôîíå";
+ Text[ polish ] = "W tle";
+ Text[ japanese ] = "”wŒi‚É(~K)";
+ Text[ chinese_traditional ] = "¸m©ó­I´º(~K)";
+ Text[ arabic ] = "Ýí ÇáÎáÝíÉ";
+ Text[ greek ] = "Óå öüíôï";
+ Text[ korean ] = "¹è°æ¿¡(~K)";
+ Text[ turkish ] = "Arta~landa";
+ };
+ CheckBox CB_OUTLINE
+ {
+ Pos = MAP_APPFONT ( 12 , 97 ) ;
+ Size = MAP_APPFONT ( 109 , 10 ) ;
+ Text = "Kont~ur" ;
+ Text [ ENGLISH ] = "Contou~r" ;
+ Hide = TRUE ;
+ Text [ dutch ] = "~Contour" ;
+ Text [ english_us ] = "~Contour" ;
+ Text [ italian ] = "Contorno" ;
+ Text [ spanish ] = "Conto~rno" ;
+ Text [ french ] = "~Contour" ;
+ Text [ swedish ] = "Kont~ur" ;
+ Text [ danish ] = "Kontur" ;
+ Text [ portuguese ] = "~Contorno" ;
+ Text [ portuguese_brazilian ] = "Kontu~r" ;
+ Text[ chinese_simplified ] = "ÂÖÀª(~C)";
+ Text[ russian ] = "Êîíòóð";
+ Text[ polish ] = "Kontur";
+ Text[ japanese ] = "—ÖŠs(~C)";
+ Text[ chinese_traditional ] = "½ü¹ø(~C)";
+ Text[ arabic ] = "ÇáÎØ ÇáßÝÇÝí";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "À±°û(~C)";
+ Text[ turkish ] = "Kontu~r";
+ };
+ CheckBox CB_ONLYOUTSIDE
+ {
+ Pos = MAP_APPFONT ( 22 , 110 ) ;
+ Size = MAP_APPFONT ( 99 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Nur außen : Nur au˜en */
+ Text = "~Nur außen" ;
+ Text [ ENGLISH ] = "Only outside" ;
+ Hide = TRUE ;
+ Text [ portuguese ] = "Só ~exterior" ;
+ Text [ english_us ] = "Outside only" ;
+ Text [ portuguese_brazilian ] = "Nur außen" ;
+ Text [ swedish ] = "Bara uta~nför" ;
+ Text [ danish ] = "Kun yderside" ;
+ Text [ italian ] = "Solo esterno" ;
+ Text [ spanish ] = "Solo en el exterior" ;
+ Text [ french ] = "~Seul l'extérieur" ;
+ Text [ dutch ] = "~Alleen buiten" ;
+ Text[ chinese_simplified ] = "Ö»ÊÇÍâ²à";
+ Text[ russian ] = "Òîëüêî ñíàðóæè";
+ Text[ polish ] = "Tylko na zewn¹trz";
+ Text[ japanese ] = "ŠO‘¤‚Ì‚Ý";
+ Text[ chinese_traditional ] = "¥u¬O¥~°¼";
+ Text[ arabic ] = "Ýí ÇáÎÇÑÌ ÝÞØ";
+ Text[ greek ] = "Ìü~íï åîùôåñéêÜ";
+ Text[ korean ] = "¿ÜºÎ¸¸";
+ Text[ turkish ] = "Yalnýzca dýþarýda";
+ };
+ GroupBox GB_OPTION
+ {
+ Pos = MAP_APPFONT ( 6 , 54 ) ;
+ Size = MAP_APPFONT ( 121 , 75 ) ;
+ Text = "Optionen" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ dutch ] = "Opties" ;
+ Text [ english_us ] = "Options" ;
+ Text [ italian ] = "Opzioni" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ french ] = "Options" ;
+ Text [ swedish ] = "Alternativ" ;
+ Text [ danish ] = "Indstillinger" ;
+ Text [ portuguese ] = "Opções" ;
+ Text [ portuguese_brazilian ] = "Optionen" ;
+ Text[ chinese_simplified ] = "Ñ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Opcje";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¿ï¶µ";
+ Text[ arabic ] = "ÎíÇÑÇÊ";
+ Text[ greek ] = "ÅðéëïãÝò";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ };
+ FixedText FT_LEFT_MARGIN
+ {
+ Pos = MAP_APPFONT ( 139 , 66 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "L~inks" ;
+ Text [ ENGLISH ] = "~Left" ;
+ Text [ norwegian ] = "~Left" ;
+ Text [ italian ] = "~Sinistra" ;
+ Text [ portuguese_brazilian ] = "~Esquerda" ;
+ Text [ portuguese ] = "~Esquerda" ;
+ Text [ finnish ] = "~Vasemmalle" ;
+ Text [ danish ] = "Venstre" ;
+ Text [ french ] = "À ~gauche" ;
+ Text [ swedish ] = "~Vänster" ;
+ Text [ dutch ] = "L~inks" ;
+ Text [ spanish ] = "I~zquierda" ;
+ Text [ english_us ] = "L~eft" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "×ó(~E)";
+ Text[ russian ] = "Ñëåâà";
+ Text[ polish ] = "Z lewej";
+ Text[ japanese ] = "¶(~E)";
+ Text[ chinese_traditional ] = "¥ª(~E)";
+ Text[ arabic ] = "Åáì ÇáíÓÇÑ";
+ Text[ greek ] = "ÁñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊ(~E)";
+ Text[ turkish ] = "S~ol";
+ };
+ MetricField ED_LEFT_MARGIN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 208 , 65 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Last = 9999 ;
+ SpinSize = 10 ;
+ };
+ FixedText FT_RIGHT_MARGIN
+ {
+ Pos = MAP_APPFONT ( 139 , 81 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Re~chts" ;
+ Text [ ENGLISH ] = "~Right" ;
+ Text [ norwegian ] = "~Right" ;
+ Text [ italian ] = "Destra" ;
+ Text [ portuguese_brazilian ] = "~Direita" ;
+ Text [ portuguese ] = "~Direita" ;
+ Text [ finnish ] = "~Oikealle" ;
+ Text [ danish ] = "Højre" ;
+ Text [ french ] = "À ~droite" ;
+ Text [ swedish ] = "H~öger" ;
+ Text [ dutch ] = "Rec~hts" ;
+ Text [ spanish ] = "D~erecha" ;
+ Text [ english_us ] = "Rig~ht" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÓÒ(~H)";
+ Text[ russian ] = "Ñïðàâà";
+ Text[ polish ] = "Z prawej";
+ Text[ japanese ] = "‰E(~H)";
+ Text[ chinese_traditional ] = "¥k(~H)";
+ Text[ arabic ] = "Åáì Çáíãíä";
+ Text[ greek ] = "ÄåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ(~H)";
+ Text[ turkish ] = "S~að";
+ };
+ MetricField ED_RIGHT_MARGIN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 208 , 80 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Last = 9999 ;
+ SpinSize = 10 ;
+ };
+ FixedText FT_TOP_MARGIN
+ {
+ Pos = MAP_APPFONT ( 139 , 96 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "O~ben" ;
+ Text [ ENGLISH ] = "~Top" ;
+ Text [ norwegian ] = "~Top" ;
+ Text [ italian ] = "~Alto" ;
+ Text [ portuguese_brazilian ] = "~Topo" ;
+ Text [ portuguese ] = "Em ~cima" ;
+ Text [ finnish ] = "~Ylös" ;
+ Text [ danish ] = "Øverst" ;
+ Text [ french ] = "En ~haut" ;
+ Text [ swedish ] = "Övers~t" ;
+ Text [ dutch ] = "~Boven" ;
+ Text [ spanish ] = "~Arriba" ;
+ Text [ english_us ] = "~Top" ;
+ Left = 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 ] = "Üs~t";
+ };
+ MetricField ED_TOP_MARGIN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 208 , 95 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Last = 9999 ;
+ SpinSize = 10 ;
+ };
+ FixedText FT_BOTTOM_MARGIN
+ {
+ Pos = MAP_APPFONT ( 139 , 111 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Unt~en" ;
+ Text [ ENGLISH ] = "~Bottom" ;
+ Text [ norwegian ] = "~Bottom" ;
+ Text [ italian ] = "~Basso" ;
+ Text [ portuguese_brazilian ] = "~Base" ;
+ Text [ portuguese ] = "Em ~baixo" ;
+ Text [ finnish ] = "~Alas" ;
+ Text [ danish ] = "Nederst" ;
+ Text [ french ] = "En ~bas" ;
+ Text [ swedish ] = "Und~erst" ;
+ Text [ dutch ] = "Be~neden" ;
+ Text [ spanish ] = "~Abajo" ;
+ Text [ english_us ] = "~Bottom" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÏÂ(~B)";
+ Text[ russian ] = "Âíèçó";
+ Text[ polish ] = "Na dole";
+ Text[ japanese ] = "‰º(~B)";
+ Text[ chinese_traditional ] = "¤U(~B)";
+ Text[ arabic ] = "ÃÓÝá";
+ Text[ greek ] = "ÊÜôù";
+ Text[ korean ] = "¾Æ·¡(~B)";
+ Text[ turkish ] = "A~lt";
+ };
+ MetricField ED_BOTTOM_MARGIN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 208 , 110 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ Last = 9999 ;
+ SpinSize = 10 ;
+ };
+ GroupBox GB_MARGIN
+ {
+ Pos = MAP_APPFONT ( 133 , 54 ) ;
+ Size = MAP_APPFONT ( 121 , 75 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Abstände : Abstõnde */
+ Text = "Abstände" ;
+ Text [ ENGLISH ] = "Margins" ;
+ Text [ norwegian ] = "Margins" ;
+ Text [ italian ] = "Distanze" ;
+ Text [ portuguese_brazilian ] = "Margens" ;
+ Text [ portuguese ] = "Espaçamento" ;
+ Text [ finnish ] = "Reunukset" ;
+ Text [ danish ] = "Afstand" ;
+ Text [ french ] = "Écarts" ;
+ Text [ swedish ] = "Avstånd" ;
+ Text [ dutch ] = "Afstanden" ;
+ Text [ spanish ] = "Distancias" ;
+ Text [ english_us ] = "Spacing" ;
+ Text[ chinese_simplified ] = "¼ä¸ô";
+ Text[ russian ] = "Èíòåðâàëû";
+ Text[ polish ] = "Odstêpy";
+ Text[ japanese ] = "ŠÔŠu";
+ Text[ chinese_traditional ] = "¶¡¹j";
+ Text[ arabic ] = "ÇáÊÈÇÚÏ";
+ Text[ greek ] = "AðïóôÜóåéò";
+ Text[ korean ] = "°£°Ý";
+ Text[ turkish ] = "Aralýk";
+ };
+ #define IMAGE_STDBTN_COLOR Color { Red = 0xC000; Green = 0xC000; Blue = 0xC000; }
+ ImageList IL_WRAP
+ {
+ ImageBitmap = Bitmap { File = "wraplist.bmp" ; };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ IMG_NONE ;
+ IMG_LEFT ;
+ IMG_RIGHT ;
+ IMG_PARALLEL ;
+ IMG_THROUGH ;
+ IMG_IDEAL ;
+ IMG_KON_NONE ;
+ IMG_KON_LEFT ;
+ IMG_KON_RIGHT ;
+ IMG_KON_PARALLEL ;
+ IMG_KON_IDEAL ;
+ };
+ IdCount = { 11 ; };
+ };
+};
diff --git a/sw/source/ui/globdoc/globdoc.cxx b/sw/source/ui/globdoc/globdoc.cxx
new file mode 100644
index 000000000000..e128b7e33abd
--- /dev/null
+++ b/sw/source/ui/globdoc/globdoc.cxx
@@ -0,0 +1,181 @@
+/*************************************************************************
+ *
+ * $RCSfile: globdoc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SV_EXCHANGE_HXX //autogen
+#include <vcl/exchange.hxx>
+#endif
+
+#ifndef _SO_CLSIDS_HXX
+#include <so3/clsids.hxx>
+#endif
+
+#include "swtypes.hxx"
+
+
+#include "shellio.hxx"
+#include "globdoc.hxx"
+#include "globdoc.hrc"
+
+/*--------------------------------------------------------------------
+ Beschreibung: Alle Filter registrieren
+ --------------------------------------------------------------------*/
+
+// 4.0: {340AC970-E30D-11d0-A53F-00A0249D57B1}
+// 4.0: 0x340ac970, 0xe30d, 0x11d0, 0xa5, 0x3f, 0x0, 0xa0, 0x24, 0x9d, 0x57, 0xb1
+// 5.0: 0xc20cf9d3, 0x85ae, 0x11d1, 0xaa, 0xb4, 0x0, 0x60, 0x97, 0xda, 0x56, 0x1a
+SFX_IMPL_OBJECTFACTORY_LOD(SwGlobalDocShell, SFXOBJECTSHELL_STD_NORMAL|SFXOBJECTSHELL_HASMENU, /*swriter4/GlobalDocument,*/ \
+ SvGlobalName(SO3_SWGLOB_CLASSID) , Sw)
+
+TYPEINIT1(SwGlobalDocShell, SwDocShell);
+
+SwGlobalDocShell::SwGlobalDocShell(SfxObjectCreateMode eMode ) :
+ SwDocShell(eMode)
+{
+}
+
+__EXPORT SwGlobalDocShell::~SwGlobalDocShell()
+{
+}
+
+// Anforderung der pIo-Struktur fuer den Zugriff auf Substorages
+// und Streams
+
+void __EXPORT SwGlobalDocShell::FillRegInfo( SvEmbeddedRegistryInfo * pInfo)
+{
+ SfxInPlaceObject::FillRegInfo( pInfo );
+ pInfo->aObjName = String::CreateFromAscii("StarWriterGlobalDocument");
+ pInfo->nMajorVers = 5;
+ pInfo->nMinorVers = 0;
+ pInfo->aHumanShortTypeName = SW_RESSTR(STR_HUMAN_SWGLOBDOC_NAME);
+ pInfo->nIconResId =
+#ifdef REG_ICON_RESID_SW_GLOBDOC
+ REG_ICON_RESID_SW_GLOBDOC;
+#else
+ 9;
+#endif
+}
+
+void __EXPORT SwGlobalDocShell::FillClass( SvGlobalName * pClassName,
+ ULONG * pClipFormat,
+ String * pAppName,
+ String * pLongUserName,
+ String * pUserName,
+ long nVersion ) const
+{
+ SfxInPlaceObject::FillClass(pClassName, pClipFormat, pAppName, pLongUserName,
+ pUserName, nVersion);
+
+ if (nVersion == SOFFICE_FILEFORMAT_40)
+ {
+ *pClassName = SvGlobalName( SO3_SWGLOB_CLASSID_40 );
+ *pClipFormat = SOT_FORMATSTR_ID_STARWRITERGLOB_40;
+ *pAppName = String::CreateFromAscii("StarWriter 4.0/GlobalDocument");
+
+ *pLongUserName = SW_RESSTR(STR_WRITER_GLOBALDOC_FULLTYPE_40);
+ }
+ else if (nVersion == SOFFICE_FILEFORMAT_NOW)
+ {
+ *pLongUserName = SW_RESSTR(STR_WRITER_GLOBALDOC_FULLTYPE);
+ }
+ *pUserName = SW_RESSTR(STR_HUMAN_SWGLOBDOC_NAME);
+}
+
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.9 2000/09/18 16:05:35 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.8 2000/04/18 15:32:07 os
+ UNICODE
+
+ Revision 1.7 2000/02/11 14:47:35 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.6 1999/09/10 13:19:20 os
+ Chg: resource types removed
+
+ Revision 1.5 1998/11/18 14:16:34 JP
+ Task #59398#: ClipboardFormatId Umstellungen
+
+
+ Rev 1.4 18 Nov 1998 15:16:34 JP
+ Task #59398#: ClipboardFormatId Umstellungen
+
+ Rev 1.3 07 Jan 1998 18:38:32 MIB
+ 5.0 Fileformat
+
+ Rev 1.2 28 Nov 1997 19:52:58 MA
+ includes
+
+ Rev 1.1 01 Sep 1997 13:11:20 OS
+ DLL-Umstellung
+
+ Rev 1.0 12 Jun 1997 16:14:44 MA
+ Initial revision.
+
+------------------------------------------------------------------------*/
diff --git a/sw/source/ui/globdoc/globdoc.src b/sw/source/ui/globdoc/globdoc.src
new file mode 100644
index 000000000000..cec492281e75
--- /dev/null
+++ b/sw/source/ui/globdoc/globdoc.src
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * $RCSfile: globdoc.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "globdoc.hrc"
+String STR_HUMAN_SWGLOBDOC_NAME
+{
+ Text = "Globaldokument" ;
+ Text [ English ] = "Global Document" ;
+ Text [ english_us ] = "Master Document" ;
+ Text [ portuguese_brazilian ] = "Globaldokument" ;
+ Text [ swedish ] = "Samlingsdokument" ;
+ Text [ danish ] = "Hoveddokument" ;
+ Text [ italian ] = "Documento master" ;
+ Text [ spanish ] = "Documento maestro" ;
+ Text [ french ] = "Document maître" ;
+ Text [ dutch ] = "Master-document" ;
+ Text [ portuguese ] = "Documento-mestre" ;
+ Text[ chinese_simplified ] = "Ö÷¿ØÎĵµ";
+ Text[ russian ] = "Ãëàâíûé äîêóìåíò";
+ Text[ polish ] = "Dokument g³ówny";
+ Text[ japanese ] = "ϽÀ°ÄÞ·­ÒÝÄ";
+ Text[ chinese_traditional ] = "¥D±±¤å¥ó";
+ Text[ arabic ] = "ãÓÊäÏ ÔÇãá";
+ Text[ dutch ] = "Master-document";
+ Text[ chinese_simplified ] = "Ö÷¿ØÎĵµ";
+ Text[ greek ] = "Kýñéï Ýããñáöï";
+ Text[ korean ] = "¸¶½ºÅÍ ¹®¼­";
+ Text[ turkish ] = "Ana belge";
+ Text[ language_user1 ] = " ";
+};
+String STR_WRITER_GLOBALDOC_FULLTYPE_40
+{
+ Text = "StarOffice 4.0 Global Document" ;
+};
+String STR_WRITER_GLOBALDOC_FULLTYPE
+{
+ Text = "StarOffice 5.0 Global Document" ;
+};
diff --git a/sw/source/ui/globdoc/makefile.mk b/sw/source/ui/globdoc/makefile.mk
new file mode 100644
index 000000000000..f0574953365c
--- /dev/null
+++ b/sw/source/ui/globdoc/makefile.mk
@@ -0,0 +1,94 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=globdoc
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ globdoc.cxx
+
+SRCFILES = \
+ globdoc.src
+
+SLOFILES = \
+ $(SLO)$/globdoc.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/inc/abstract.hxx b/sw/source/ui/inc/abstract.hxx
new file mode 100644
index 000000000000..6b86b66b553e
--- /dev/null
+++ b/sw/source/ui/inc/abstract.hxx
@@ -0,0 +1,113 @@
+/*************************************************************************
+ *
+ * $RCSfile: abstract.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ABSTRACT_HXX
+#define _ABSTRACT_HXX
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+
+/*-----------------22.02.97 15.06-------------------
+
+--------------------------------------------------*/
+class SwInsertAbstractDlg : public SfxModalDialog
+{
+ GroupBox aGB;
+ FixedText aLevelFT;
+ NumericField aLevelNF;
+ FixedText aParaFT;
+ NumericField aParaNF;
+ FixedText aDescFT;
+ OKButton aOkPB;
+ CancelButton aCancelPB;
+ HelpButton aHelpPB;
+
+protected:
+
+public:
+ SwInsertAbstractDlg( Window* pParent );
+ ~SwInsertAbstractDlg();
+
+ BYTE GetLevel() const;
+ BYTE GetPara() const;
+};
+
+#endif
+
+
+
diff --git a/sw/source/ui/inc/actctrl.hxx b/sw/source/ui/inc/actctrl.hxx
new file mode 100644
index 000000000000..22d82bb653b3
--- /dev/null
+++ b/sw/source/ui/inc/actctrl.hxx
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * $RCSfile: actctrl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ACTCTRL_HXX
+#define _ACTCTRL_HXX
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+/*--------------------------------------------------------------------
+ Beschreibung: numerische Eingabe
+ --------------------------------------------------------------------*/
+
+class NumEditAction: public NumericField
+{
+ Link aActionLink;
+
+protected:
+ virtual void Action();
+#ifdef VCL
+ virtual long Notify( NotifyEvent& rNEvt );
+#else
+ virtual long ParentNotify( NotifyEvent& rNEvt );
+#endif
+public:
+ NumEditAction( Window* pParent, const ResId& rResId ) :
+ NumericField(pParent, rResId) {}
+
+ void SetActionHdl( const Link& rLink ) { aActionLink = rLink;}
+ const Link& GetActionHdl() const { return aActionLink; }
+};
+
+
+/* -----------------21.04.98 08:11-------------------
+ * Edit, dass keine Spaces akzeptiert
+ * --------------------------------------------------*/
+class NoSpaceEdit : public Edit
+{
+ String sForbiddenChars;
+protected:
+ virtual void KeyInput( const KeyEvent& );
+ virtual void Modify();
+
+public:
+ NoSpaceEdit( Window* pParent, const ResId& rResId)
+ : Edit(pParent, rResId),
+ sForbiddenChars(String::CreateFromAscii(" "))
+ {}
+ void SetForbiddenChars(const String& rSet){sForbiddenChars = rSet;}
+ const String& GetForbiddenChars(){return sForbiddenChars;}
+};
+
+/* -----------------21.04.98 08:33-------------------
+ * Kein Space und kein Punkt
+ * --------------------------------------------------*/
+class TableNameEdit : public NoSpaceEdit
+{
+public:
+ TableNameEdit(Window* pWin, const ResId& rResId) :
+ NoSpaceEdit(pWin, rResId)
+ {SetForbiddenChars(String::CreateFromAscii(" .<>"));}
+};
+
+
+#endif
diff --git a/sw/source/ui/inc/addrdlg.hxx b/sw/source/ui/inc/addrdlg.hxx
new file mode 100644
index 000000000000..08e34cf777ef
--- /dev/null
+++ b/sw/source/ui/inc/addrdlg.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: addrdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ADDRDLG_HXX
+#define _ADDRDLG_HXX
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+
+class SwAddrDlg : public SfxSingleTabDialog
+{
+public:
+
+ SwAddrDlg( Window* pParent, SfxItemSet& rSet );
+ ~SwAddrDlg();
+};
+
+#endif
+
+
+
+
diff --git a/sw/source/ui/inc/app.hrc b/sw/source/ui/inc/app.hrc
new file mode 100644
index 000000000000..11a0ad808cb1
--- /dev/null
+++ b/sw/source/ui/inc/app.hrc
@@ -0,0 +1,204 @@
+/*************************************************************************
+ *
+ * $RCSfile: app.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _APP_HRC
+#define _APP_HRC
+
+#include "rcid.hrc"
+
+// Default Bitmap fuer ToolBox
+#define BMP_FEHLT (RC_APP_BEGIN + 1)
+
+// Document-Icon
+#define RC_DOC_ICON (RC_APP_BEGIN + 2)
+
+//Soll das Clipboard fuer andere Applikationen...
+#define MSG_CLPBRD_CLEAR (RC_APP_BEGIN + 3)
+
+#define STR_CANTCREATE (RC_APP_BEGIN + 4)
+#define STR_CANTOPEN (RC_APP_BEGIN + 5)
+
+// Messages
+#define MSG_ERROR_SEND_MAIL ( RC_APP_BEGIN + 6)
+#define MSG_SAVE_HTML_QUERY ( RC_APP_BEGIN + 7)
+
+//Fuer das Interface, weil der RID_APP_BEGIN jetzt Desktop ist.
+#define RID_SW_NAME ( RC_APP_BEGIN + 8)
+
+#define MSG_INDEX_OVERFLOW ( RC_APP_BEGIN + 10)
+
+#define STR_UNBENANNT (RC_APP_BEGIN + 13)
+#define STR_VERSION (RC_APP_BEGIN + 14)
+#define STR_PRINT_MERGE_MACRO (RC_APP_BEGIN + 15)
+#define STR_PAGE_COUNT_MACRO (RC_APP_BEGIN + 16)
+
+// Bitmap fuer die NumerierungsVorlagen im Organizer
+#define BMP_STYLES_FAMILY_NUM (RC_APP_BEGIN + 17)
+
+// Strings fuer Bereiche in der Konfiguration
+#define STR_GRP_FILE (RC_APP_BEGIN + 56)
+#define STR_GRP_EDIT (RC_APP_BEGIN + 57)
+#define STR_GRP_TRAVELLING (RC_APP_BEGIN + 58)
+#define STR_GRP_VIEW (RC_APP_BEGIN + 59)
+#define STR_GRP_INSERT (RC_APP_BEGIN + 60)
+#define STR_GRP_FORMAT (RC_APP_BEGIN + 61)
+#define STR_GRP_STYLE (RC_APP_BEGIN + 62)
+#define STR_GRP_TEXT (RC_APP_BEGIN + 63)
+#define STR_GRP_FRAME (RC_APP_BEGIN + 64)
+#define STR_GRP_GRAPHIC (RC_APP_BEGIN + 65)
+#define STR_GRP_TABLE (RC_APP_BEGIN + 66)
+#define STR_GRP_TOOLS (RC_APP_BEGIN + 67)
+#define STR_GRP_NUMBERING (RC_APP_BEGIN + 68)
+#define STR_GRP_WINDOW (RC_APP_BEGIN + 69)
+#define STR_GRP_MISC (RC_APP_BEGIN + 70)
+#define STR_GRP_MACRO (RC_APP_BEGIN + 71)
+#define RES_EXT_HELP_STRING (RC_APP_BEGIN + 72)
+#define RES_STD_HELP_STRING (RC_APP_BEGIN + 73)
+#define STR_PAGEOFFSET (RC_APP_BEGIN + 74)
+#define STR_PAGEBREAK (RC_APP_BEGIN + 75)
+
+
+#define SID_TOGGLETOOLBOX (RC_APP_BEGIN + 89)
+
+#define STR_ENV_TITLE (RC_APP_BEGIN + 91)
+#define STR_LAB_TITLE (RC_APP_BEGIN + 92)
+
+#define STR_HUMAN_SWDOC_NAME (RC_APP_BEGIN + 93)
+
+#define RID_SW_ERRHDL (RC_APP_BEGIN + 95)
+
+#define STR_FDLG_TEMPLATE_BUTTON (RC_APP_BEGIN + 1)
+#define STR_FDLG_TEMPLATE_NAME (RC_APP_BEGIN + 2)
+
+
+// Ids fuer die einzelnen PopUpMenues
+#define MN_WIZARD (RC_APP_BEGIN + 9)
+#define MN_INDEX (RC_APP_BEGIN + 10)
+#define MN_FILE (RC_APP_BEGIN + 11)
+#define MN_EDIT (RC_APP_BEGIN + 12)
+#define MN_VIEW (RC_APP_BEGIN + 13)
+#define MN_INS (RC_APP_BEGIN + 14)
+#define MN_TEXT (RC_APP_BEGIN + 15)
+#define MN_FORMAT (RC_APP_BEGIN + 16)
+#define MN_FORMAT_STYLE (RC_APP_BEGIN + 17)
+#define MN_FORMAT_ALGN (RC_APP_BEGIN + 18)
+#define MN_FORMAT_LINESPACE (RC_APP_BEGIN + 19)
+#define MN_EXTRA (RC_APP_BEGIN + 20)
+#define MN_WIN (RC_APP_BEGIN + 21)
+#define MN_HELP (RC_APP_BEGIN + 22)
+#define MN_FORMAT_FRM_HORZ (RC_APP_BEGIN + 23)
+#define MN_FORMAT_FRM_VERT (RC_APP_BEGIN + 24)
+#define MN_PICKLIST (RC_APP_BEGIN + 25)
+#define MN_WINLIST (RC_APP_BEGIN + 26)
+#define MN_MACRO (RC_APP_BEGIN + 27)
+#define MN_FORMAT_HIERARCHY (RC_APP_BEGIN + 28)
+#define MN_CELL (RC_APP_BEGIN + 29)
+#define MN_HELP_TIP (RC_APP_BEGIN + 30)
+#define MN_HELP_SEARCH (RC_APP_BEGIN + 31)
+#define MN_HELP_ACTIVE (RC_APP_BEGIN + 32)
+#define MN_HELP_INDEX (RC_APP_BEGIN + 33)
+#define MN_OBJECT (RC_APP_BEGIN + 34)
+#define MN_DATABASE (RC_APP_BEGIN + 35)
+#define MN_DIRSUBMENU (RC_APP_BEGIN + 36)
+#define MN_MAIL (RC_APP_BEGIN + 37)
+#define MN_WRAP (RC_APP_BEGIN + 38)
+#define MN_SUB_TBLROW (RC_APP_BEGIN + 39)
+#define MN_SUB_TBLCOL (RC_APP_BEGIN + 40)
+#define MN_SUB_AUTOFORMAT (RC_APP_BEGIN + 41)
+#define MN_SUB_TOOLBAR (RC_APP_BEGIN + 42)
+#define MN_SUB_FIELD (RC_APP_BEGIN + 43)
+#define MN_SUB_GRAPHIC (RC_APP_BEGIN + 44)
+#define MN_SUB_TEMPLATES (RC_APP_BEGIN + 45)
+#define MN_SUB_ARRANGE (RC_APP_BEGIN + 46)
+#define MN_SUB_SPELLING (RC_APP_BEGIN + 47)
+#define MN_SUB_UPDATE (RC_APP_BEGIN + 48)
+#define MN_SUB_MIRROR (RC_APP_BEGIN + 49)
+#define MN_SUB_ALIGN (RC_APP_BEGIN + 50)
+#define MN_SUB_OPTIONS (RC_APP_BEGIN + 51)
+#define MN_SUB_SENDTO (RC_APP_BEGIN + 52)
+#define MN_SUB_REVISE (RC_APP_BEGIN + 53)
+#define MN_TEMPLATES (RC_APP_BEGIN + 54)
+#define MN_FILE_PORT (RC_APP_BEGIN + 55)
+#define MN_EDIT_PORT (RC_APP_BEGIN + 56)
+#define MN_VIEW_PORT (RC_APP_BEGIN + 57)
+#define MN_INS_PORT (RC_APP_BEGIN + 58)
+#define MN_FORMAT_PORT (RC_APP_BEGIN + 59)
+#define MN_EXTRA_PORT (RC_APP_BEGIN + 60)
+#define MN_WIN_PORT (RC_APP_BEGIN + 61)
+#define MN_HELP_PORT (RC_APP_BEGIN + 62)
+
+
+#define RC_INTRO_BEGIN (RC_APP_BEGIN + 90)
+#define RC_INTRO_END (RC_APP_BEGIN + 96)
+
+#define STR_WRITER_DOCUMENT_FULLTYPE_31 (RC_APP_BEGIN + 97)
+#define STR_WRITER_DOCUMENT_FULLTYPE_40 (RC_APP_BEGIN + 98)
+#define STR_WRITER_DOCUMENT_FULLTYPE (RC_APP_BEGIN + 100)
+
+#define STR_ABSTRACT_TITLE (RC_APP_BEGIN +99)
+
+#define APP_ACT_END STR_WRITER_DOCUMENT_FULLTYPE
+
+#if APP_ACT_END > RC_APP_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+#endif
diff --git a/sw/source/ui/inc/ascfldlg.hxx b/sw/source/ui/inc/ascfldlg.hxx
new file mode 100644
index 000000000000..0f34e28d7cb5
--- /dev/null
+++ b/sw/source/ui/inc/ascfldlg.hxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * $RCSfile: ascfldlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ASCFLDLG_HXX
+#define _ASCFLDLG_HXX
+
+#ifndef _BASEDLGS_HXX
+#include <sfx2/basedlgs.hxx>
+#endif
+#ifndef _SV_GROUP_HXX
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_FIXED_HXX
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _SV_BUTTON_HXX
+#include <vcl/button.hxx>
+#endif
+#ifndef _SV_LSTBOX_HXX
+#include <vcl/lstbox.hxx>
+#endif
+
+class SwAsciiOptions;
+class SvStream;
+class SwDocShell;
+
+class SwAsciiFilterDlg : public SfxModalDialog
+{
+ GroupBox aGB;
+ FixedText aCharSetFT;
+ ListBox aCharSetLB;
+ FixedText aFontFT;
+ ListBox aFontLB;
+ FixedText aLanguageFT;
+ ListBox aLanguageLB;
+ FixedText aCRLF_FT;
+ RadioButton aCRLF_RB, aCR_RB, aLF_RB;
+ OKButton aOkPB;
+ CancelButton aCancelPB;
+ HelpButton aHelpPB;
+ String sNoLanguage, sCharSet, sSystemCharSet;
+ BOOL bSaveLineStatus;
+
+ DECL_LINK( CharSetSelHdl, ListBox* );
+ DECL_LINK( LineEndHdl, RadioButton* );
+ void SetCRLF( LineEnd eEnd );
+ LineEnd GetCRLF() const;
+
+public:
+ // CTOR: for import - pStream is the inputstream
+ // for export - pStream must be 0
+ SwAsciiFilterDlg( Window* pParent, SwDocShell& rDocSh,
+ SvStream* pStream );
+ virtual ~SwAsciiFilterDlg();
+
+ void FillOptions( SwAsciiOptions& rOptions );
+};
+
+
+
+#endif
+
diff --git a/sw/source/ui/inc/autoedit.hxx b/sw/source/ui/inc/autoedit.hxx
new file mode 100644
index 000000000000..c7c89d42aeb3
--- /dev/null
+++ b/sw/source/ui/inc/autoedit.hxx
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * $RCSfile: autoedit.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _AUTOEDIT_HXX
+#define _AUTOEDIT_HXX
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+
+class AutoEdit : public Edit
+{
+public:
+ AutoEdit( Window* pParent, ResId aResId ) : Edit( pParent, aResId ){}
+
+protected:
+ virtual void KeyInput( const KeyEvent& rEvent );
+};
+
+// Implementieriung im autocorr.cxx
+
+
+
+#endif
+
+
diff --git a/sw/source/ui/inc/barcfg.hxx b/sw/source/ui/inc/barcfg.hxx
new file mode 100644
index 000000000000..421a042ed30c
--- /dev/null
+++ b/sw/source/ui/inc/barcfg.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: barcfg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SW_BARCFG_HXX
+#define SW_BARCFG_HXX
+
+#ifndef _SFXCFGITEM_HXX //autogen
+#include <sfx2/cfgitem.hxx>
+#endif
+
+class CfgUSHORTTable;
+
+class SwToolbarConfigItem : public SfxConfigItem
+{
+ CfgUSHORTTable *pTbl;
+private:
+ virtual int Load (SvStream& rStrm);
+ virtual BOOL Store(SvStream& rStrm);
+ virtual void UseDefault();
+
+public:
+ SwToolbarConfigItem( BOOL bWeb );
+ ~SwToolbarConfigItem();
+
+ void SetTopToolbar( int nSelType, USHORT nBarId );
+ USHORT GetTopToolbar( int nSelType ); //USHRT_MAX: noch nicht eingetragen
+};
+
+#endif
diff --git a/sw/source/ui/inc/basesh.hxx b/sw/source/ui/inc/basesh.hxx
new file mode 100644
index 000000000000..67e7bf05d695
--- /dev/null
+++ b/sw/source/ui/inc/basesh.hxx
@@ -0,0 +1,177 @@
+/*************************************************************************
+ *
+ * $RCSfile: basesh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWBASESH_HXX
+#define _SWBASESH_HXX
+
+#ifndef _SHELLID_HXX
+#include <shellid.hxx>
+#endif
+
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+
+#ifndef _LINK_HXX //autogen
+#include <tools/link.hxx>
+#endif
+#ifndef _SV_TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+class SwWrtShell;
+class SwCrsrShell;
+class SwView;
+class GraphicFilter;
+class SwFlyFrmAttrMgr;
+class SfxItemSet;
+class Graphic;
+
+extern void DisableAllItems(SfxItemSet &);
+
+class SwBaseShell: public SfxShell
+{
+ SwView &rView;
+
+ // DragModus
+ static USHORT nFrameMode;
+
+ // Bug 75078 - if in GetState the asynch call of GetGraphic returns
+ // synch, the set the state directly into the itemset
+ SfxItemSet* pGetStateSet;
+
+ //Update-Timer fuer Graphic
+ BOOL bUpdateSID_IMap :1;
+ BOOL bUpdateSID_IMapExec :1;
+ BOOL bUpdateSID_IContour :1;
+ BOOL bUpdateSID_IContourDlg :1;
+
+ DECL_LINK( GraphicArrivedHdl, SwCrsrShell* );
+ DECL_LINK( UpdatePercentHdl, GraphicFilter* );
+
+protected:
+
+ SwWrtShell& GetShell ();
+ SwWrtShell* GetShellPtr();
+
+ SwView& GetView() { return rView; }
+
+ SwFlyFrmAttrMgr *pFrmMgr;
+
+ DECL_STATIC_LINK( SwBaseShell, InsertDBTextHdl, String* );
+
+public:
+ SwBaseShell(SwView &rShell);
+ virtual ~SwBaseShell();
+ SFX_DECL_INTERFACE(SW_BASESHELL);
+ TYPEINFO();
+
+ void ExecDelete(SfxRequest &);
+
+ void ExecClpbrd(SfxRequest &);
+ void StateClpbrd(SfxItemSet &);
+
+ void ExecUndo(SfxRequest &);
+ void StateUndo(SfxItemSet &);
+
+ void Execute(SfxRequest &);
+ void GetState(SfxItemSet &);
+ void StateStyle(SfxItemSet &);
+
+ void ExecuteGallery(SfxRequest&);
+ void GetGalleryState(SfxItemSet&);
+
+ void ExecDlg(SfxRequest &);
+
+ void StateStatusLine(SfxItemSet &rSet);
+ void ExecTxtCtrl(SfxRequest& rReq);
+ void GetTxtCtrlState(SfxItemSet& rSet);
+ void GetBorderState(SfxItemSet &rSet);
+ void GetBckColState(SfxItemSet &rSet);
+
+ void ExecBckCol(SfxRequest& rReq);
+ void SetWrapMode( USHORT nSlot );
+
+ void ExecDB(SfxRequest &rReq);
+
+ void StateDisableItems(SfxItemSet &);
+
+ void EditRegionDialog(SfxRequest& rReq);
+ void InsertRegionDialog(SfxRequest& rReq);
+
+ void ExecField(SfxRequest& rReq);
+
+ static void SetFrmMode( USHORT nMode, SwWrtShell *pShell ); //Mit Update!
+ static void _SetFrmMode( USHORT nMode ) { nFrameMode = nMode; }
+ static USHORT GetFrmMode() { return nFrameMode; }
+
+ //public fuer D&D
+ int InsertGraphic( const String &rPath, const String &rFilter,
+ BOOL bLink = TRUE, GraphicFilter *pFlt = 0,
+ Graphic* pPreviewGrf = 0,
+ BOOL bRule = FALSE );
+
+};
+
+
+#endif
diff --git a/sw/source/ui/inc/beziersh.hxx b/sw/source/ui/inc/beziersh.hxx
new file mode 100644
index 000000000000..8a3d70ad79c1
--- /dev/null
+++ b/sw/source/ui/inc/beziersh.hxx
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * $RCSfile: beziersh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWBEZIERSH_HXX
+#define _SWBEZIERSH_HXX
+
+#include "basesh.hxx"
+
+class SwBezierShell: public SwBaseShell
+{
+public:
+ SFX_DECL_INTERFACE(SW_BEZIERSHELL);
+ TYPEINFO();
+
+ SwBezierShell(SwView &rView);
+
+ void GetState(SfxItemSet &);
+ void Execute(SfxRequest &);
+};
+
+#endif
diff --git a/sw/source/ui/inc/bmpwin.hxx b/sw/source/ui/inc/bmpwin.hxx
new file mode 100644
index 000000000000..b866754a438c
--- /dev/null
+++ b/sw/source/ui/inc/bmpwin.hxx
@@ -0,0 +1,104 @@
+/*************************************************************************
+ *
+ * $RCSfile: bmpwin.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _BMPWIN_HXX
+#define _BMPWIN_HXX
+
+#ifndef _GRAPH_HXX //autogen
+#include <vcl/graph.hxx>
+#endif
+#ifndef _BITMAP_HXX //autogen
+#include <vcl/bitmap.hxx>
+#endif
+#ifndef _WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Extended Page fuer Grafiken
+ --------------------------------------------------------------------*/
+
+class BmpWindow : public Window
+{
+ void Paint(const Rectangle& rRect);
+ Graphic aGraphic;
+ Bitmap aBmp;
+ BOOL bHorz : 1;
+ BOOL bVert : 1;
+ BOOL bGraphic : 1;
+ BOOL bLeftAlign : 1;
+
+public:
+ BmpWindow(Window* pPar, USHORT nId,
+ const Graphic& rGraphic, const Bitmap& rBmp);
+ BmpWindow(Window* pParent, const ResId rResId) :
+ Window(pParent, rResId), bLeftAlign(TRUE),
+ bHorz(FALSE), bVert(FALSE),bGraphic(FALSE){}
+ ~BmpWindow();
+ void MirrorVert(BOOL bMirror) { bVert = bMirror; Invalidate(); }
+ void MirrorHorz(BOOL bMirror) { bHorz = bMirror; Invalidate(); }
+ void SetGraphic(const Graphic& rGrf)
+ {aGraphic = rGrf; bGraphic = TRUE; Invalidate();}
+
+};
+
+#endif
diff --git a/sw/source/ui/inc/bookctrl.hxx b/sw/source/ui/inc/bookctrl.hxx
new file mode 100644
index 000000000000..0b8fc4861972
--- /dev/null
+++ b/sw/source/ui/inc/bookctrl.hxx
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * $RCSfile: bookctrl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _BOOKCTRL_HXX
+#define _BOOKCTRL_HXX
+
+// include ---------------------------------------------------------------
+
+#ifndef _SFXSTBITEM_HXX //autogen
+#include <sfx2/stbitem.hxx>
+#endif
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+// class BookmarkToolBoxControl -------------------------------------------
+
+class SwBookmarkControl : public SfxStatusBarControl
+{
+ virtual void Command( const CommandEvent& rCEvt );
+
+public:
+ virtual void StateChanged( const SfxPoolItem* pState );
+ virtual void Paint( const UserDrawEvent& rEvt );
+
+ SFX_DECL_STATUSBAR_CONTROL();
+
+ SwBookmarkControl( USHORT nId, StatusBar& rStb, SfxBindings& rBind );
+ ~SwBookmarkControl();
+
+private:
+ String sPageNumber;
+};
+
+
+#endif
+
diff --git a/sw/source/ui/inc/bookmark.hxx b/sw/source/ui/inc/bookmark.hxx
new file mode 100644
index 000000000000..c7978a2229fc
--- /dev/null
+++ b/sw/source/ui/inc/bookmark.hxx
@@ -0,0 +1,127 @@
+/*************************************************************************
+ *
+ * $RCSfile: bookmark.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _BOOKMARK_HXX
+#define _BOOKMARK_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#include "swlbox.hxx" // SwComboBox
+
+class SwWrtShell;
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class BookmarkCombo : public SwComboBox
+{
+ USHORT GetFirstSelEntryPos() const;
+ USHORT GetNextSelEntryPos(USHORT nPos) const;
+ USHORT GetSelEntryPos(USHORT nPos) const;
+
+ virtual long PreNotify(NotifyEvent& rNEvt);
+public:
+ BookmarkCombo( Window* pWin, const ResId& rResId );
+
+ USHORT GetSelectEntryCount() const;
+ XubString GetSelectEntry( USHORT nSelIndex = 0 ) const;
+ USHORT GetSelectEntryPos( USHORT nSelIndex = 0 ) const;
+
+ static const String aForbiddenChars;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SwInsertBookmarkDlg: public SvxStandardDialog
+{
+ BookmarkCombo aBookmarkBox;
+ GroupBox aBookmarkFrm;
+ OKButton aOkBtn;
+ CancelButton aCancelBtn;
+ PushButton aDeleteBtn;
+
+ String sRemoveWarning;
+ SwWrtShell &rSh;
+
+ DECL_LINK( ModifyHdl, BookmarkCombo * );
+ DECL_LINK( DeleteHdl, Button * );
+
+ virtual void Apply();
+
+public:
+ SwInsertBookmarkDlg( Window *pParent, SwWrtShell &rSh );
+ ~SwInsertBookmarkDlg();
+
+};
+
+#endif
diff --git a/sw/source/ui/inc/break.hxx b/sw/source/ui/inc/break.hxx
new file mode 100644
index 000000000000..d28342fd4334
--- /dev/null
+++ b/sw/source/ui/inc/break.hxx
@@ -0,0 +1,124 @@
+/*************************************************************************
+ *
+ * $RCSfile: break.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _BREAK_HXX
+#define _BREAK_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.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 _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+class SwWrtShell;
+
+class SwBreakDlg: public SvxStandardDialog
+{
+ SwWrtShell &rSh;
+ RadioButton aLineBtn;
+ RadioButton aColumnBtn;
+ RadioButton aPageBtn;
+ FixedText aPageCollText;
+ ListBox aPageCollBox;
+ CheckBox aPageNumBox;
+ NumericField aPageNumEdit;
+ GroupBox aBreakFrm;
+
+ OKButton aOkBtn;
+ CancelButton aCancelBtn;
+ HelpButton aHelpBtn;
+
+ BOOL bHtmlMode;
+
+ DECL_LINK( ClickHdl, void * );
+ DECL_LINK( PageNumHdl, CheckBox * );
+ DECL_LINK( PageNumModifyHdl, Edit * );
+ DECL_LINK( OkHdl, Button * );
+
+ void CheckEnable();
+
+protected:
+ virtual void Apply();
+
+public:
+ SwBreakDlg( Window *pParent, SwWrtShell &rSh );
+ ~SwBreakDlg();
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/caption.hxx b/sw/source/ui/inc/caption.hxx
new file mode 100644
index 000000000000..b8f575dd0c02
--- /dev/null
+++ b/sw/source/ui/inc/caption.hxx
@@ -0,0 +1,146 @@
+/*************************************************************************
+ *
+ * $RCSfile: caption.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CAPTION_HXX
+#define _CAPTION_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _GLOBNAME_HXX //autogen
+#include <tools/globname.hxx>
+#endif
+
+enum SwCapObjType
+{
+ FRAME_CAP, GRAPHIC_CAP, TABLE_CAP, OLE_CAP
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class InsCaptionOpt
+{
+private:
+ BOOL bUseCaption;
+ SwCapObjType eObjType;
+ SvGlobalName aOleId;
+ String sCategory;
+ USHORT nNumType;
+ String sCaption;
+ USHORT nPos;
+ USHORT nLevel;
+ sal_Unicode cSeparator;
+ BOOL bIgnoreSeqOpts; // wird nicht gespeichert
+ BOOL bCopyAttributes; // -""-
+
+public:
+ InsCaptionOpt(const SwCapObjType eType = FRAME_CAP, const SvGlobalName* pOleId = 0);
+ InsCaptionOpt(const InsCaptionOpt&);
+ ~InsCaptionOpt();
+
+ inline BOOL& UseCaption() { return bUseCaption; }
+ inline BOOL UseCaption() const { return bUseCaption; }
+
+ inline SwCapObjType GetObjType() const { return eObjType; }
+ inline void SetObjType(const SwCapObjType eType) { eObjType = eType; }
+
+ inline const SvGlobalName& GetOleId() const { return aOleId; }
+ inline void SetOleId(const SvGlobalName &rId) { aOleId = rId; }
+
+ inline const String& GetCategory() const { return sCategory; }
+ inline void SetCategory(const String& rCat) { sCategory = rCat; }
+
+ inline USHORT GetNumType() const { return nNumType; }
+ inline void SetNumType(const USHORT nNT) { nNumType = nNT; }
+
+ inline const String& GetCaption() const { return sCaption; }
+ inline void SetCaption(const String& rCap) { sCaption = rCap; }
+
+ inline USHORT GetPos() const { return nPos; }
+ inline void SetPos(const USHORT nP) { nPos = nP; }
+
+ inline USHORT GetLevel() const { return nLevel; }
+ inline void SetLevel(const USHORT nLvl) { nLevel = nLvl; }
+
+ inline sal_Unicode GetSeparator() const { return cSeparator; }
+ inline void SetSeparator(const sal_Unicode cSep){ cSeparator = cSep; }
+
+ inline BOOL& IgnoreSeqOpts() { return bIgnoreSeqOpts; }
+ inline BOOL IgnoreSeqOpts() const { return bIgnoreSeqOpts; }
+
+ inline BOOL& CopyAttributes() { return bCopyAttributes; }
+ inline BOOL CopyAttributes() const { return bCopyAttributes; }
+
+ BOOL operator==( const InsCaptionOpt& rOpt ) const;
+ InsCaptionOpt& operator= ( const InsCaptionOpt& rOpt );
+ inline BOOL operator< ( const InsCaptionOpt & rObj ) const
+ { return aOleId < rObj.aOleId; }
+ friend SvStream& operator>>( SvStream& rIStream, InsCaptionOpt& rCapOpt );
+ friend SvStream& operator<<( SvStream& rOStream, const InsCaptionOpt& rCapOpt );
+};
+
+#endif
+
+
diff --git a/sw/source/ui/inc/cfgdesc.hxx b/sw/source/ui/inc/cfgdesc.hxx
new file mode 100644
index 000000000000..2423ab0489e5
--- /dev/null
+++ b/sw/source/ui/inc/cfgdesc.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: cfgdesc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CFGDESC_HXX
+#define _CFGDESC_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+class SwCfgDesc
+{
+protected:
+ String aFuncText;
+ String aLibName;
+ USHORT nEvent;
+
+ SwCfgDesc(const String &rFuncName, USHORT nId);
+ SwCfgDesc(const String &rLib,const String &rMacro);
+ ~SwCfgDesc();
+
+public:
+ void SetEvent(USHORT nE); // inline
+ void SetFuncText(const String &rStr); // inline
+ void SetMacro(const String &rLib, const String &rMac);
+ BOOL IsMacro() const;
+ USHORT GetEvent() const; // inline
+ String GetFuncText() const; // inline
+ String GetMacro() const; // inline
+ String GetLib() const; // inline
+};
+
+// INLINE METHODE --------------------------------------------------------
+inline void SwCfgDesc::SetEvent(USHORT nE) {
+ nEvent = nE;
+}
+
+inline void SwCfgDesc::SetFuncText(const String &rStr) {
+ aFuncText = rStr;
+}
+
+inline USHORT SwCfgDesc::GetEvent() const { return nEvent; }
+inline String SwCfgDesc::GetFuncText() const { return aFuncText; }
+inline String SwCfgDesc::GetMacro() const { return aFuncText; }
+inline String SwCfgDesc::GetLib() const { return aLibName; }
+
+
+#endif
diff --git a/sw/source/ui/inc/cfgid.h b/sw/source/ui/inc/cfgid.h
new file mode 100644
index 000000000000..4595bffcc41f
--- /dev/null
+++ b/sw/source/ui/inc/cfgid.h
@@ -0,0 +1,180 @@
+/*************************************************************************
+ *
+ * $RCSfile: cfgid.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the 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_H
+#define _CFGID_H
+
+#ifndef _SFX_HRC //autogen
+#include <sfx2/sfx.hrc>
+#endif
+
+#define CFG_DBDESCMGR_ITEM SFX_ITEMTYPE_SW_BEGIN
+#define CFG_USERPREF_ITEM (SFX_ITEMTYPE_SW_BEGIN + 1)
+
+#define CFG_COLOR_ITEM (SFX_ITEMTYPE_SW_BEGIN + 3)
+#define CFG_PRINT_ITEM (SFX_ITEMTYPE_SW_BEGIN + 4)
+#define CFG_AUTOCORR_ITEM (SFX_ITEMTYPE_SW_BEGIN + 5)
+#define CFG_AUTOFMT_ITEM (SFX_ITEMTYPE_SW_BEGIN + 6)
+#define CFG_NUMRULE_ITEM (SFX_ITEMTYPE_SW_BEGIN + 7)
+#define CFG_ENV_ITEM (SFX_ITEMTYPE_SW_BEGIN + 8)
+#define CFG_LAB_ITEM (SFX_ITEMTYPE_SW_BEGIN + 9)
+#define CFG_CHAPTER_ITEM (SFX_ITEMTYPE_SW_BEGIN +10)
+//#define CFG_BROWSEPREF_ITEM (SFX_ITEMTYPE_SW_BEGIN +11) //UsrPrefs fuer BrowseView
+#define CFG_STDFONT_ITEM (SFX_ITEMTYPE_SW_BEGIN +12)
+#define CFG_STATUSBAR (SFX_ITEMTYPE_SW_BEGIN +13)
+#define CFG_NAVIPI (SFX_ITEMTYPE_SW_BEGIN +14)
+#define CFG_SRCVIEW (SFX_ITEMTYPE_SW_BEGIN +15)
+#define CFG_SW_MENU (SFX_ITEMTYPE_SW_BEGIN +16)
+#define CFG_SW_ACCEL (SFX_ITEMTYPE_SW_BEGIN +17)
+#define CFG_SW_MODULE (SFX_ITEMTYPE_SW_BEGIN +18)
+#define CFG_SWWEB_MENU (SFX_ITEMTYPE_SW_BEGIN +19)
+#define CFG_SWWEB_ACCEL (SFX_ITEMTYPE_SW_BEGIN +20)
+#define CFG_SWWEB_USRPREF (SFX_ITEMTYPE_SW_BEGIN +21)
+#define CFG_WEBPRINT_ITEM (SFX_ITEMTYPE_SW_BEGIN +22)
+#define CFG_TOOLBARCONFIG_ITEM (SFX_ITEMTYPE_SW_BEGIN +23)
+#define CFG_WEBTOOLBARCONFIG_ITEM (SFX_ITEMTYPE_SW_BEGIN +24)
+#define CFG_INSERT_DBCOLUMN_ITEM (SFX_ITEMTYPE_SW_BEGIN +25)
+#define CFG_INSERT_HEADFOOT_ITEM (SFX_ITEMTYPE_SW_BEGIN +26)
+#define CFG_SW_MENU_PORTAL (SFX_ITEMTYPE_SW_BEGIN +27)
+#define CFG_SWWEB_MENU_PORTAL (SFX_ITEMTYPE_SW_BEGIN +28)
+
+/*-------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.25 2000/09/18 16:05:37 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.24 2000/08/07 14:02:28 os
+ portal menu added
+
+ Revision 1.23 1998/05/25 08:06:20 JP
+ neue ConfigId fuers einfuegen von Standard Kopf-/Fusszeilen
+
+
+ Rev 1.22 25 May 1998 10:06:20 JP
+ neue ConfigId fuers einfuegen von Standard Kopf-/Fusszeilen
+
+ Rev 1.21 20 May 1998 21:24:56 JP
+ neue ConfigId fuer Datenbankspalten einfuegen Autopilot
+
+ Rev 1.20 02 Apr 1998 10:05:00 MA
+ new: ToolbarCfg
+
+ Rev 1.19 28 Nov 1997 08:26:12 MA
+ includes
+
+ Rev 1.18 05 Feb 1997 13:35:44 OS
+ PrintOptins auch fuer Web
+
+ Rev 1.17 30 Jan 1997 11:13:36 OS
+ Id fuer BrowseUsrPref
+
+ Rev 1.16 24 Jan 1997 14:57:20 OS
+ defines fuer WebMenue und -Accel
+
+ Rev 1.15 13 Jan 1997 16:54:00 OS
+ neu: SwModuleOptions
+
+ Rev 1.14 18 Nov 1996 09:27:14 OS
+ neue ConfigIds
+
+ Rev 1.13 15 Nov 1996 10:52:58 OS
+ SFX_ITEMTYPE_USER_BEGIN -> SFX_ITEMTYPE_SW_BEGIN
+
+ Rev 1.12 13 Nov 1996 14:33:08 OS
+ neues ConfigItem: SwNavigationConfig
+
+ Rev 1.11 07 Nov 1996 16:18:56 OS
+ neue Id fuer StatusBar
+
+ Rev 1.10 03 Sep 1996 16:55:08 OS
+ neu: ConfigItem fuer Standardfonts
+
+ Rev 1.9 24 Apr 1996 15:04:04 OS
+ Umstellung UsrPref/ViewOption
+
+ Rev 1.8 03 Jan 1996 10:33:28 OS
+ neue Id fuer Kapitelnumerierung
+
+ Rev 1.7 20 Feb 1995 19:38:26 PK
+ neu: efg_(env|lab)_item
+
+ Rev 1.6 10 Jan 1995 18:53:26 ER
+ #endif ohne Kommentar
+
+ Rev 1.5 31 Oct 1994 11:16:34 MS
+ ifndef angepasst
+
+ Rev 1.4 06 Oct 1994 17:15:52 VB
+ cfgid.h -> T:/sw/source/ui/inc/cfgid.h_v
+ Enter description of changes made
+ NumRules wieder scharf geschaltet.
+
+ Rev 1.3 28 Sep 1994 14:14:24 MS
+ Umstellung auf SfxConfigItem
+
+ Rev 1.2 27 Sep 1994 10:47:38 MS
+
+ Rev 1.1 19 Sep 1994 15:28:32 MS
+ Fix fuers Update
+
+ Rev 1.0 15 Sep 1994 16:41:46 MS
+ Initial revision.
+ -------------------------------------------------------------------------*/
+#endif
diff --git a/sw/source/ui/inc/cfgitems.hxx b/sw/source/ui/inc/cfgitems.hxx
new file mode 100644
index 000000000000..067b482f569b
--- /dev/null
+++ b/sw/source/ui/inc/cfgitems.hxx
@@ -0,0 +1,300 @@
+/*************************************************************************
+ *
+ * $RCSfile: cfgitems.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CFGITEMS_HXX
+#define _CFGITEMS_HXX
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+#ifndef _AUTHRATR_HXX
+#include <authratr.hxx>
+#endif
+
+class SwWriterApp;
+class SwModule;
+#ifndef PRODUCT
+class SwTestTabPage;
+#endif
+class SwAddPrinterTabPage;
+class SfxPrinter;
+class ViewShell;
+class SwViewOption;
+class SwPrintOptions;
+class SwContentOptPage;
+class SwLayoutOptPage;
+class SwDocEditDialog;
+
+SfxPrinter* GetPrt( ViewShell* );
+void SetPrt( SfxPrinter* );
+
+
+/*--------OS 12.01.95 -----------------------------------
+Item fuer Einstellungsdialog - Dokumentanzeige
+--------------------------------------------------------- */
+#ifdef FN_PARAM_DOCDISP
+
+class SwDocDisplayItem : public SfxPoolItem
+{
+ friend SwWriterApp;
+ friend SwContentOptPage;
+ friend SwModule;
+
+ BOOL bParagraphEnd :1;
+ BOOL bTab :1;
+ BOOL bSpace :1;
+ BOOL bNonbreakingSpace :1;
+ BOOL bSoftHyphen :1;
+ BOOL bHiddenText :1;
+ BOOL bManualBreak :1;
+ BOOL bIndexEntry :1;
+ BOOL bIndexBackground :1;
+ BOOL bFootnoteBackground:1;
+ BOOL bField :1;
+ BOOL bTable :1;
+ BOOL bGraphic :1;
+ BOOL bDrawing :1;
+ BOOL bFieldName :1;
+ BOOL bNotes :1;
+ BOOL bShowHiddenPara :1;
+
+ Color aIndexBackgrndCol;
+
+
+public:
+ TYPEINFO();
+ SwDocDisplayItem( USHORT nWhich = FN_PARAM_DOCDISP );
+ SwDocDisplayItem(
+ const SwDocDisplayItem& rSwDocDisplayItem );
+ SwDocDisplayItem( const SwViewOption& rVOpt,
+ USHORT nWhich );
+
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ void operator=( const SwDocDisplayItem& );
+ void FillViewOptions( SwViewOption& rVOpt) const;
+};
+#endif
+/*--------OS 12.01.95 -----------------------------------
+Item fuer Einstellungsdialog, Elementeseite
+--------------------------------------------------------- */
+#ifdef FN_PARAM_ELEM
+class SwElemItem : public SfxPoolItem
+{
+ BOOL bHorzScrollbar :1;
+ BOOL bVertScrollbar :1;
+ BOOL bHorzRuler :1;
+ BOOL bVertRuler :1;
+ BOOL bTableBounds :1;
+ BOOL bSectionBounds :1;
+ BOOL bCrosshair :1;
+ BOOL bHandles :1;
+ BOOL bBigHandles :1;
+ BOOL bBounds :1;
+ BOOL bStatusLine :1;
+ BOOL bSmoothScroll :1;
+
+ friend SwLayoutOptPage;
+
+public:
+ TYPEINFO();
+ SwElemItem( USHORT nWhich = FN_PARAM_ELEM );
+ SwElemItem(const SwElemItem& rElemItem);
+ SwElemItem(const SwViewOption& rVOpt, USHORT nWhich);
+
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ void operator=( const SwElemItem& );
+
+ void FillViewOptions( SwViewOption& rVOpt) const;
+
+ void SetStatusLine(BOOL bSet){bStatusLine = bSet;}
+ BOOL IsStatusLine()const {return bStatusLine;}
+};
+#endif
+/*--------OS 12.01.95 -----------------------------------
+Item fuer Einstellungsdialog - Drucker/Zusaetze
+--------------------------------------------------------- */
+#ifdef FN_PARAM_ADDPRINTER
+
+class SwAddPrinterItem : public SfxPoolItem
+{
+ friend SwAddPrinterTabPage;
+
+ String sFaxName;
+ UINT16 nPrintPostIts;
+
+ BOOL bPrintGraphic :1,
+ bPrintTable :1,
+ bPrintDrawing :1,
+ bPrintLeftPage :1,
+ bPrintRightPage :1,
+ bPrintControl :1,
+ bPrintReverse :1,
+ bPaperFromSetup :1,
+ bPrintProspect :1,
+ bPrintPageBackground:1,
+ bPrintBlackFont :1,
+ bPrintSingleJobs :1;
+
+public:
+ TYPEINFO();
+ SwAddPrinterItem( USHORT nWhich = FN_PARAM_ADDPRINTER );
+ SwAddPrinterItem( USHORT nWhich, SwPrintOptions* pPrtOpt );
+ SwAddPrinterItem( const SwAddPrinterItem& rAddPrinterItem);
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ void SetPrintOptions( SwPrintOptions* pPrtOpt ) const;
+ const String &GetFax() const { return sFaxName; }
+ void SetFax( const String& rFax) { sFaxName = rFax; }
+
+
+ BOOL IsPrintProspect() const { return bPrintProspect; }
+ void SetPrintProspect(BOOL bFlag ){ bPrintProspect = bFlag; }
+ BOOL IsPrintGraphic () const { return bPrintGraphic; }
+ BOOL IsPrintTable () const { return bPrintTable; }
+ BOOL IsPrintDraw () const { return bPrintDrawing; }
+ BOOL IsPrintControl () const { return bPrintControl; }
+ BOOL IsPrintLeftPage () const { return bPrintLeftPage; }
+ BOOL IsPrintRightPage() const { return bPrintRightPage; }
+ BOOL IsPrintReverse () const { return bPrintReverse; }
+ BOOL IsPaperFromSetup() const { return bPaperFromSetup; }
+ BOOL IsPrintPageBackground() const { return bPrintPageBackground; }
+ BOOL IsPrintBlackFont() const { return bPrintBlackFont; }
+ BOOL IsPrintSingleJobs() const { return bPrintSingleJobs; }
+ UINT16 GetPrintPostIts () const { return nPrintPostIts; }
+
+};
+#endif
+
+
+/*--------OS 12.01.95 -----------------------------------
+Item fuer Einstellungsdialog, ShadowCursorSeite
+--------------------------------------------------------- */
+#ifdef FN_PARAM_SHADOWCURSOR
+
+class SwShadowCursorItem : public SfxPoolItem
+{
+ Color aColor;
+ BYTE eMode;
+ BOOL bOn;
+public:
+ TYPEINFO();
+ SwShadowCursorItem( USHORT nWhich = FN_PARAM_SHADOWCURSOR );
+ SwShadowCursorItem( const SwShadowCursorItem& rElemItem );
+ SwShadowCursorItem( const SwViewOption& rVOpt, USHORT nWhich );
+
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ void operator=( const SwShadowCursorItem& );
+
+ void FillViewOptions( SwViewOption& rVOpt) const;
+
+ const Color& GetColor() const { return aColor; }
+ BYTE GetMode() const { return eMode; }
+ BOOL IsOn() const { return bOn; }
+
+ void SetColor( const Color& rCol ) { aColor = rCol; }
+ void SetMode( BYTE eM ) { eMode = eM; }
+ void SetOn( BOOL bFlag ) { bOn = bFlag; }
+};
+#endif
+
+#ifndef PRODUCT
+/*--------OS 12.01.95 -----------------------------------
+Item fuer Einstellungsdialog - Testeinstellungen
+--------------------------------------------------------- */
+class SwTestItem : public SfxPoolItem
+{
+ friend SwModule;
+ friend SwWriterApp;
+ friend SwTestTabPage;
+ friend SwDocEditDialog;
+
+ BOOL bTest1:1;
+ BOOL bTest2:1;
+ BOOL bTest3:1;
+ BOOL bTest4:1;
+ BOOL bTest5:1;
+ BOOL bTest6:1;
+ BOOL bTest7:1;
+ BOOL bTest8:1;
+ BOOL bTest9:1;
+ BOOL bTest10:1;
+
+public:
+ SwTestItem( USHORT nWhich):
+ SfxPoolItem(nWhich){};
+ SwTestItem( const SwTestItem& pTestItem);
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual int operator==( const SfxPoolItem& ) const;
+
+};
+#endif
+
+#endif
+
+
diff --git a/sw/source/ui/inc/changedb.hxx b/sw/source/ui/inc/changedb.hxx
new file mode 100644
index 000000000000..6ffe3451eaf3
--- /dev/null
+++ b/sw/source/ui/inc/changedb.hxx
@@ -0,0 +1,135 @@
+/*************************************************************************
+ *
+ * $RCSfile: changedb.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:38 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CHANGEDB_HXX
+#define _CHANGEDB_HXX
+
+
+#ifndef _BITMAP_HXX //autogen
+#include <vcl/bitmap.hxx>
+#endif
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+#ifndef _SVTREEBOX_HXX //autogen
+#include <svtools/svtreebx.hxx>
+#endif
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+#ifndef _DBTREE_HXX
+#include "dbtree.hxx"
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+class SwFldMgr;
+class SwView;
+class SwWrtShell;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Datenbank an Feldern austauschen
+ --------------------------------------------------------------------*/
+
+class SwChangeDBDlg: public SvxStandardDialog
+{
+ FixedInfo aDescFT;
+ FixedText aUsedDBFT;
+ FixedText aAvailDBFT;
+ SvTreeListBox aUsedDBTLB;
+ SwDBTreeList aAvailDBTLB;
+ GroupBox aDBListGB;
+ FixedText aDocDBTextFT;
+ FixedText aDocDBNameFT;
+ OKButton aOKBT;
+ CancelButton aCancelBT;
+ HelpButton aHelpBT;
+// PushButton aChangeBT;
+ Bitmap aRootOpened;
+ Bitmap aRootClosed;
+ Image aDBBMP;
+ Image aTableBMP;
+
+ SwWrtShell *pSh;
+ SwFldMgr *pMgr;
+
+ DECL_LINK(TreeSelectHdl, SvTreeListBox* pBox = 0);
+ DECL_LINK(ButtonHdl, Button* pBtn);
+
+ virtual void Apply();
+ void UpdateFlds();
+ void FillDBPopup();
+ SvLBoxEntry* Insert(const String& rDBName);
+ void ShowDBName(const String& rDBName);
+
+public:
+ SwChangeDBDlg(SwView& rVw);
+ ~SwChangeDBDlg();
+};
+
+#endif
diff --git a/sw/source/ui/inc/chartins.hxx b/sw/source/ui/inc/chartins.hxx
new file mode 100644
index 000000000000..fad5a97de0ca
--- /dev/null
+++ b/sw/source/ui/inc/chartins.hxx
@@ -0,0 +1,160 @@
+/*************************************************************************
+ *
+ * $RCSfile: chartins.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+/*
+/*
+/* (C) 1995 - 2000 StarDivision GmbH, Hamburg, Germany
+/* $Author: hr $ $Date: 2000-09-18 17:14:39 $ $Revision: 1.1.1.1 $
+/* $Logfile: T:/sw/source/ui/inc/chartins.hxv $ $Workfile: CHARTINS.HXX $
+/*
+/* Dialog Einfuegen StarChart
+/*
+/*------------------------------------------------------------------ */
+
+#ifndef _CHARTINS_HXX
+#define _CHARTINS_HXX
+
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+
+#ifdef _CHARTINS_CXX
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#include "autoedit.hxx"
+
+class SfxItemSet;
+class SwWrtShell;
+class SchMemChart;
+
+//========================================================================
+
+class SwInsertChartDlg : public SfxModelessDialog
+{
+ FixedText aTextFt;
+ FixedText aRangeFt;
+ AutoEdit aRangeEd;
+ HelpButton aHelp;
+ CancelButton aCancel;
+ FixedText aHLine;
+ PushButton aPrev;
+ PushButton aNext;
+ PushButton aFinish;
+ CheckBox aFirstRow;
+ CheckBox aFirstCol;
+ GroupBox aGroup1;
+ SchMemChart * pChartData;
+ ModalDialog* pChartDlg;
+ SfxItemSet* pInItemSet;
+ SfxItemSet* pOutItemSet;
+ SwWrtShell* pWrtShell;
+ String aAktTableName;
+ BOOL bUpdateChartData;
+ BOOL bChartInserted;
+
+ void UpdateData();
+ virtual BOOL Close();
+
+public:
+ SwInsertChartDlg( SfxBindings*, SfxChildWindow*,
+ Window *pParent, SwWrtShell * );
+ ~SwInsertChartDlg();
+
+ DECL_LINK( SelTblCellsNotify, SwWrtShell * );
+ DECL_LINK( ModifyHdl, Edit* );
+ DECL_LINK( NextHdl, Button* );
+ DECL_LINK( FinishHdl, Button* );
+ DECL_LINK( CloseHdl, Button* );
+ DECL_LINK( ClickHdl, CheckBox* );
+};
+#endif
+
+class SwInsertChartChild : public SfxChildWindow
+{
+public:
+ SwInsertChartChild( Window* ,
+ USHORT nId,
+ SfxBindings*,
+ SfxChildWinInfo* );
+ SFX_DECL_CHILDWINDOW( SwInsertChartChild );
+};
+
+
+#endif
+
diff --git a/sw/source/ui/inc/chldwrap.hxx b/sw/source/ui/inc/chldwrap.hxx
new file mode 100644
index 000000000000..3bc8e98805c8
--- /dev/null
+++ b/sw/source/ui/inc/chldwrap.hxx
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * $RCSfile: chldwrap.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CHLDWRAP_HXX
+#define _CHLDWRAP_HXX
+
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+
+#ifndef _SV_TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+class SwDocShell;
+
+class SwChildWinWrapper : public SfxChildWindow
+{
+ Timer aUpdateTimer;
+ SwDocShell* pDocSh;
+
+ DECL_LINK( UpdateHdl, void* );
+
+ // Implementation in fldtdlg.cxx
+protected:
+ SwChildWinWrapper(Window *pParentWindow, USHORT nId);
+
+public:
+ virtual BOOL ReInitDlg(SwDocShell *pDocSh);
+
+ inline SwDocShell* GetOldDocShell() { return pDocSh; }
+ inline void SetOldDocShell(SwDocShell *pDcSh) { pDocSh = pDcSh; }
+};
+
+
+#endif
+
diff --git a/sw/source/ui/inc/chrdlg.hxx b/sw/source/ui/inc/chrdlg.hxx
new file mode 100644
index 000000000000..8fdb151ba12d
--- /dev/null
+++ b/sw/source/ui/inc/chrdlg.hxx
@@ -0,0 +1,157 @@
+/*************************************************************************
+ *
+ * $RCSfile: chrdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWCHARDLG_HXX
+#define _SWCHARDLG_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.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 _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+class FontList;
+class SwView;
+class SvxMacroItem;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Der Tabdialog Traeger der TabPages
+ --------------------------------------------------------------------*/
+
+class SwCharDlg: public SfxTabDialog
+{
+ SwView& rView;
+ BOOL bIsDrwTxtMode;
+
+public:
+ SwCharDlg(Window* pParent, SwView& pVw, const SfxItemSet& rCoreSet,
+ const String* pFmtStr = 0, BOOL bIsDrwTxtDlg = FALSE);
+
+ ~SwCharDlg();
+
+ virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
+};
+
+/*-----------------14.08.96 11.03-------------------
+ Beschreibung: Tabpage fuer URL-Attribut
+--------------------------------------------------*/
+
+class SwCharURLPage : public SfxTabPage
+{
+ GroupBox aURLGB;
+
+ FixedText aURLFT;
+ Edit aURLED;
+ FixedText aTextFT;
+ Edit aTextED;
+ FixedText aNameFT;
+ Edit aNameED;
+ FixedText aTargetFrmFT;
+ ComboBox aTargetFrmLB;
+ PushButton aURLPB;
+ PushButton aEventPB;
+ GroupBox aStyleGB;
+ FixedText aVisitedFT;
+ ListBox aVisitedLB;
+ FixedText aNotVisitedFT;
+ ListBox aNotVisitedLB;
+
+ SvxMacroItem* pINetItem;
+ BOOL bModified;
+
+ DECL_LINK( InsertFileHdl, PushButton * );
+ DECL_LINK( EventHdl, PushButton * );
+
+public:
+ SwCharURLPage( Window* pParent,
+ const SfxItemSet& rSet );
+
+ ~SwCharURLPage();
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet);
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/cnttab.hxx b/sw/source/ui/inc/cnttab.hxx
new file mode 100644
index 000000000000..e8a301214f80
--- /dev/null
+++ b/sw/source/ui/inc/cnttab.hxx
@@ -0,0 +1,581 @@
+/*************************************************************************
+ *
+ * $RCSfile: cnttab.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CNTTAB_HXX
+#define _CNTTAB_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#include "tox.hxx"
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _TOXMGR_HXX
+#include <toxmgr.hxx>
+#endif
+#ifndef _SVX_CHECKLBX_HXX //autogen wg. SvxCheckListBox
+#include <svx/checklbx.hxx>
+#endif
+#ifndef _SV_RESARY_HXX //autogen wg. ResStringArray
+#include <vcl/resary.hxx>
+#endif
+#ifndef _SVTREEBOX_HXX
+#include <svtools/svtreebx.hxx>
+#endif
+#ifndef _SV_MENUBTN_HXX
+#include <vcl/menubtn.hxx>
+#endif
+
+class SwWrtShell;
+class SwTOXMgr;
+/* -----------------14.06.99 12:12-------------------
+
+ --------------------------------------------------*/
+struct CurTOXType
+{
+ TOXTypes eType;
+ USHORT nIndex; //for TOX_USER only
+
+ BOOL operator==(const CurTOXType aCmp)
+ {
+ return eType == aCmp.eType && nIndex == aCmp.nIndex;
+ }
+ USHORT GetFlatIndex() const;
+
+};
+//-----------------------------------------------------------------------------
+#if 0
+class IdxExampleResource : public Resource
+{
+ ResStringArray aTextArray;
+
+public:
+ IdxExampleResource(const ResId& rResId);
+
+ ResStringArray& GetTextArray() {return aTextArray;}
+};
+#endif
+
+//-----------------------------------------------------------------------------
+class SwOneExampleFrame;
+struct SwIndexSections_Impl;
+
+class SwMultiTOXTabDialog : public SfxTabDialog
+{
+ Window aExampleContainerWIN;
+ Window aExampleWIN;
+ CheckBox aShowExampleCB;
+ SwTOXMgr* pMgr;
+ SwWrtShell& rSh;
+
+ SwOneExampleFrame* pExampleFrame;
+
+ SwTOXDescription** pDescArr; //
+ SwForm** pFormArr; //
+ SwIndexSections_Impl** pxIndexSectionsArr;
+
+ CurTOXType eCurrentTOXType;
+
+ String sUserDefinedIndex;
+ USHORT nTypeCount;
+ USHORT nInitialTOXType;
+
+ BOOL bEditTOX;
+ BOOL bExampleCreated;
+ BOOL bGlobalFlag;
+
+ virtual short Ok();
+ SwTOXDescription* CreateTOXDescFromTOXBase(const SwTOXBase*pCurTOX);
+
+ DECL_LINK(CreateExample_Hdl, void* );
+ DECL_LINK(ShowPreviewHdl, CheckBox*);
+
+public:
+ SwMultiTOXTabDialog(Window* pParent, const SfxItemSet& rSet,
+ SwWrtShell &rShell,
+ const SwTOXBase* pCurTOX, USHORT nToxType = USHRT_MAX,
+ BOOL bGlobal = FALSE);
+ ~SwMultiTOXTabDialog();
+
+ virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
+
+ SwForm* GetForm(CurTOXType eType);
+
+ CurTOXType GetCurrentTOXType() const { return eCurrentTOXType;}
+ void SetCurrentTOXType(CurTOXType eSet)
+ {
+ eCurrentTOXType = eSet;
+ }
+
+ void UpdateExample();
+ BOOL IsTOXEditMode() const { return bEditTOX;}
+// const SwTOXBase* GetCurTOX() const;
+
+ SwWrtShell& GetWrtShell() {return rSh;}
+
+ SwTOXDescription& GetTOXDescription(CurTOXType eTOXTypes);
+ void CreateOrUpdateExample(
+ USHORT nTOXIndex, USHORT nPage = 0, USHORT nCurLevel = USHRT_MAX);
+
+ static BOOL IsNoNum(SwWrtShell& rSh, const String& rName);
+};
+
+/* -----------------14.06.99 12:17-------------------
+
+ --------------------------------------------------*/
+class SwOLENames : public Resource
+{
+ ResStringArray aNamesAry;
+public:
+ SwOLENames(const ResId& rResId) :
+ Resource(rResId),
+ aNamesAry(ResId(1)){FreeResource();}
+
+ ResStringArray& GetNames() { return aNamesAry;}
+
+};
+/* -----------------14.07.99 12:17-------------------
+
+ --------------------------------------------------*/
+class SwTOXSelectTabPage : public SfxTabPage
+{
+ FixedText aTypeFT;
+ ListBox aTypeLB;
+ CheckBox aReadOnlyCB;
+ FixedText aTitleFT;
+ Edit aTitleED;
+ GroupBox aTypeTitleGB;
+
+ ListBox aAreaLB;
+ FixedText aLevelFT; //content, user
+ NumericField aLevelNF; //content, user
+ GroupBox aAreaGB;
+
+ //content
+ CheckBox aFromHeadingsCB;
+ PushButton aChapterDlgPB;
+ CheckBox aAddStylesCB;
+ PushButton aAddStylesPB;
+ //user
+// CheckBox aFromStylesCB; -> aAddStylesCB;
+// PushButton aFromStylesPB; -> aAddStylesPB;
+ CheckBox aFromTablesCB;
+ CheckBox aFromFramesCB;
+ CheckBox aFromGraphicsCB;
+ CheckBox aFromOLECB;
+ CheckBox aLevelFromChapterCB;
+
+ //illustration + table
+ RadioButton aFromCaptionsRB;
+ RadioButton aFromObjectNamesRB;
+
+ //illustration and tables
+ FixedText aCaptionSequenceFT;
+ ListBox aCaptionSequenceLB;
+ FixedText aDisplayTypeFT;
+ ListBox aDisplayTypeLB;
+
+ //all but illustration and table
+ CheckBox aTOXMarksCB;
+
+ //
+ GroupBox aCreateFromGB; // content, user, illustration
+
+ //index only
+ CheckBox aCollectSameCB;
+ CheckBox aUseFFCB;
+ CheckBox aUseDashCB;
+ CheckBox aCaseSensitiveCB;
+ CheckBox aInitialCapsCB;
+ CheckBox aKeyAsEntryCB;
+ CheckBox aFromFileCB;
+ MenuButton aAutoMarkPB;
+// PushButton aCreateAutoMarkPB;
+// PushButton aEditAutoMarkPB;
+ GroupBox aIdxOptionsGB; // index only
+
+ // object only
+ SwOLENames aFromNames;
+ SvxCheckListBox aFromObjCLB;
+ GroupBox aFromObjGB;
+
+ CheckBox aSequenceCB;
+ FixedText aBracketFT;
+ ListBox aBracketLB;
+ GroupBox aAuthorityFormatGB;
+
+ Point aCBLeftPos1;
+ Point aCBLeftPos2;
+ Point aCBLeftPos3;
+
+ String aStyleArr[MAXLEVEL];
+ String sAutoMarkURL;
+ String sAutoMarkType;
+ String sAddStyleUser;
+ String sAddStyleContent;
+
+ BOOL bFirstCall;
+
+ DECL_LINK(TOXTypeHdl, ListBox* );
+ DECL_LINK(TOXAreaHdl, ListBox* );
+ DECL_LINK(ChapterHdl, PushButton* );
+ DECL_LINK(AddStylesHdl, PushButton* );
+// DECL_LINK(AutoMarkHdl, PushButton* );
+// DECL_LINK(CreateEditAutoMarkHdl,PushButton* );
+ DECL_LINK(MenuEnableHdl, Menu*);
+ DECL_LINK(MenuExecuteHdl, Menu*);
+
+ DECL_LINK(CheckBoxHdl, CheckBox* );
+ DECL_LINK(RadioButtonHdl, RadioButton* );
+ DECL_LINK(ModifyHdl, void*);
+
+ void ApplyTOXDescription();
+ void FillTOXDescription();
+public:
+ SwTOXSelectTabPage(Window* pParent, const SfxItemSet& rAttrSet);
+ ~SwTOXSelectTabPage();
+
+ virtual BOOL FillItemSet( SfxItemSet& );
+ virtual void Reset( const SfxItemSet& );
+ virtual void ActivatePage( const SfxItemSet& );
+ virtual int DeactivatePage( SfxItemSet* pSet = 0 );
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet);
+
+ void SelectType(TOXTypes eSet); //preset TOXType, GlobalDoc
+ void SetWrtShell(SwWrtShell& rSh);
+};
+/* -----------------16.06.99 08:33-------------------
+
+ --------------------------------------------------*/
+
+DECLARE_LIST(TOXControlList, Control*);
+class SwTOXEdit;
+class SwTOXButton;
+class SwTOXEntryTabPage;
+class SwTokenWindow : public Window
+{
+ ImageButton aLeftScrollWin;
+ Window aCtrlParentWin;
+ ImageButton aRightScrollWin;
+ TOXControlList aControlList;
+ SwForm* pForm;
+ USHORT nLevel;
+ BOOL bValid;
+ String aButtonTexts[TOKEN_END]; // Text of the buttons
+ String aButtonHelpTexts[TOKEN_END]; // QuickHelpText of the buttons
+ String sCharStyle;
+ Link aButtonSelectedHdl;
+ Control* pActiveCtrl;
+ Link aModifyHdl;
+
+ SwTOXEntryTabPage* m_pParent;
+
+ DECL_LINK(EditResize, Edit*);
+ DECL_LINK(NextItemHdl, SwTOXEdit* );
+ DECL_LINK(TbxFocusHdl, SwTOXEdit* );
+ DECL_LINK(NextItemBtnHdl, SwTOXButton* );
+ DECL_LINK(TbxFocusBtnHdl, SwTOXButton* );
+ DECL_LINK(ScrollHdl, ImageButton* );
+
+ void SetActiveControl(Control* pSet);
+
+ Control* InsertItem(const String& rText, const SwFormToken& aToken);
+ void AdjustPositions();
+ void AdjustScrolling();
+ void MoveControls(long nOffset);
+
+public:
+ SwTokenWindow(SwTOXEntryTabPage* pParent, const ResId& rResId);
+ ~SwTokenWindow();
+
+ void SetForm(SwForm& rForm, USHORT nLevel);
+ USHORT GetLastLevel()const {return nLevel;};
+
+ BOOL IsValid() const {return bValid;}
+ void Invalidate() {bValid = FALSE;}
+
+ String GetPattern() const;
+
+ void SetButtonSelectedHdl(const Link& rLink)
+ { aButtonSelectedHdl = rLink;}
+
+ void SetModifyHdl(const Link& rLink){aModifyHdl = rLink;}
+
+ Control* GetActiveControl()
+ { return pActiveCtrl;}
+
+ void InsertAtSelection(const String& rText, const SwFormToken& aToken);
+ void RemoveControl(SwTOXButton* pDel, BOOL bInternalCall = FALSE);
+
+ BOOL Contains(FormTokenType) const;
+
+ BOOL DetermineLinkStart();
+
+ //helper for pattern buttons and edits
+ BOOL CreateQuickHelp(Control* pCtrl,
+ const SwFormToken& rToken, const HelpEvent& );
+
+ virtual void Resize();
+};
+/* -----------------------------23.12.99 14:16--------------------------------
+
+ ---------------------------------------------------------------------------*/
+class SwTOXEntryTabPage;
+class SwIdxTreeListBox : public SvTreeListBox
+{
+ SwTOXEntryTabPage* pParent;
+
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+public:
+ SwIdxTreeListBox(SwTOXEntryTabPage* pPar, const ResId& rResId);
+};
+
+/* -----------------16.06.99 12:49-------------------
+
+ --------------------------------------------------*/
+class SwTOXEntryTabPage : public SfxTabPage
+{
+ SwIdxTreeListBox aLevelLB;
+ FixedText aLevelFT;
+
+ SwTokenWindow aTokenWIN;
+ PushButton aAllLevelsPB;
+
+ PushButton aEntryNoPB;
+ PushButton aEntryPB;
+ PushButton aTabPB;
+ PushButton aChapterInfoPB;
+ PushButton aPageNoPB;
+ PushButton aHyperLinkPB;
+
+ ListBox aAuthFieldsLB;
+ PushButton aAuthInsertPB;
+ PushButton aAuthRemovePB;
+
+ FixedText aCharStyleFT;
+ ListBox aCharStyleLB; // character style of the current token
+ PushButton aEditStylePB;
+
+ FixedText aChapterEntryFT;
+ ListBox aChapterEntryLB; // type of chapter info
+// FixedText aSortingFT;
+// ListBox aSortingLB;
+
+ FixedText aFillCharFT;
+ ComboBox aFillCharCB; // fill char for tab stop
+ FixedText aTabPosFT;
+ MetricField aTabPosMF; // tab stop position
+ CheckBox aAutoRightCB;
+ GroupBox aEntryGB;
+
+ CheckBox aRelToStyleCB; // position relative to the right margin of the para style
+ FixedText aMainEntryStyleFT;
+ ListBox aMainEntryStyleLB; // character style of main entries in indexes
+ CheckBox aAlphaDelimCB;
+ CheckBox aCommaSeparatedCB;
+ GroupBox aFormatGB;
+
+ RadioButton aSortDocPosRB;
+ RadioButton aSortContentRB;
+ GroupBox aSortingGB;
+
+ FixedText aFirstKeyFT;
+ ListBox aFirstKeyLB;
+ ImageRadioButton aFirstSortUpRB;
+ ImageRadioButton aFirstSortDownRB;
+
+ FixedText aSecondKeyFT;
+ ListBox aSecondKeyLB;
+ ImageRadioButton aSecondSortUpRB;
+ ImageRadioButton aSecondSortDownRB;
+
+ FixedText aThirdKeyFT;
+ ListBox aThirdKeyLB;
+ ImageRadioButton aThirdSortUpRB;
+ ImageRadioButton aThirdSortDownRB;
+
+ GroupBox aSortKeyGB;
+
+ String sDelimStr;
+ String sLevelStr;
+ String sAuthTypeStr;
+
+ String sNoCharStyle;
+ String sNoCharSortKey;
+ Point aButtonPositions[5];
+ SwForm* pCurrentForm;
+
+ Point aRelToStylePos;
+ Point aRelToStyleIdxPos;
+ Size aLevelGBSize;
+
+ CurTOXType aLastTOXType;
+ BOOL bInLevelHdl;
+
+ DECL_LINK(StyleSelectHdl, ListBox*);
+ DECL_LINK(EditStyleHdl, PushButton*);
+ DECL_LINK(InsertTokenHdl, PushButton*);
+ DECL_LINK(LevelHdl, SvTreeListBox*);
+ DECL_LINK(AutoRightHdl, CheckBox*);
+ DECL_LINK(TokenSelectedHdl, SwFormToken*);
+ DECL_LINK(TabPosHdl, MetricField*);
+ DECL_LINK(FillCharHdl, ComboBox*);
+ DECL_LINK(RemoveInsertAuthHdl, PushButton*);
+ DECL_LINK(SortKeyHdl, RadioButton*);
+ DECL_LINK(ChapterInfoHdl, ListBox*);
+ DECL_LINK(AllLevelsHdl, PushButton*);
+
+ void EnableButtons();
+ void WriteBackLevel();
+ void UpdateDescriptor();
+ DECL_LINK(ModifyHdl, void*);
+
+public:
+ SwTOXEntryTabPage(Window* pParent, const SfxItemSet& rAttrSet);
+ ~SwTOXEntryTabPage();
+
+ virtual BOOL FillItemSet( SfxItemSet& );
+ virtual void Reset( const SfxItemSet& );
+ virtual void ActivatePage( const SfxItemSet& );
+ virtual int DeactivatePage( SfxItemSet* pSet = 0 );
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet);
+ void SetWrtShell(SwWrtShell& rSh);
+
+ String GetLevelHelp(USHORT nLevel) const;
+
+ void PreTokenButtonRemoved(const SwFormToken& rToken);
+};
+/* -----------------05.07.99 13:00-------------------
+
+ --------------------------------------------------*/
+class SwTOXStylesTabPage : public SfxTabPage
+{
+ FixedText aLevelFT2;
+ ListBox aLevelLB;
+ FixedText aTemplateFT;
+ ListBox aParaLayLB;
+ PushButton aStdBT;
+ PushButton aAssignBT;
+ PushButton aEditStyleBT;
+ GroupBox aFormatGB;
+
+ SwForm* pCurrentForm;
+// void UpdatePattern();
+
+ DECL_LINK( EditStyleHdl, Button *);
+ DECL_LINK( StdHdl, Button * );
+ DECL_LINK( EnableSelectHdl, ListBox * );
+ DECL_LINK( DoubleClickHdl, Button * );
+ DECL_LINK( AssignHdl, Button * );
+ DECL_LINK( ModifyHdl, void*);
+
+ SwForm& GetForm()
+ {
+ SwMultiTOXTabDialog* pDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+ return *pDlg->GetForm(pDlg->GetCurrentTOXType());
+ }
+public:
+ SwTOXStylesTabPage(Window* pParent, const SfxItemSet& rAttrSet);
+ ~SwTOXStylesTabPage();
+
+ virtual BOOL FillItemSet( SfxItemSet& );
+ virtual void Reset( const SfxItemSet& );
+ virtual void ActivatePage( const SfxItemSet& );
+ virtual int DeactivatePage( SfxItemSet* pSet = 0 );
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet);
+
+};
+
+#endif // _CNTTAB_HXX
+
diff --git a/sw/source/ui/inc/colex.hxx b/sw/source/ui/inc/colex.hxx
new file mode 100644
index 000000000000..1424de2de112
--- /dev/null
+++ b/sw/source/ui/inc/colex.hxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * $RCSfile: colex.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _COLEX_HXX
+#define _COLEX_HXX
+
+#ifndef _SVX_PAGECTRL_HXX //autogen
+#include <svx/pagectrl.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+
+#include "frmatr.hxx"
+
+class SwColMgr;
+class SfxItemSet;
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SwColExample : public SvxPageWindow
+{
+private:
+ SwColMgr* pColMgr;
+protected:
+ virtual void DrawPage( const Point& rPoint,
+ const BOOL bSecond,
+ const BOOL bEnabled );
+
+public:
+ SwColExample(Window* pPar, const ResId& rResId );
+
+ void UpdateExample( const SfxItemSet& rSet, SwColMgr* pMgr = 0 );
+
+};
+
+/*-----------------25.10.96 08.23-------------------
+
+--------------------------------------------------*/
+class SwColumnOnlyExample : public Window
+{
+private:
+ Size aWinSize;
+
+ Size aFrmSize;
+ SwFmtCol aCols;
+ long nDistance;
+
+protected:
+ virtual void Paint( const Rectangle& rRect );
+
+public:
+ SwColumnOnlyExample( Window* , const ResId& );
+
+ void SetColumns(const SwFmtCol& rCol) { aCols = rCol; }
+ void SetFrameSize(const Size& rS, long nDist);
+
+};
+
+#endif // _COLEX_HXX
diff --git a/sw/source/ui/inc/colmgr.hxx b/sw/source/ui/inc/colmgr.hxx
new file mode 100644
index 000000000000..b7041cfc1381
--- /dev/null
+++ b/sw/source/ui/inc/colmgr.hxx
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * $RCSfile: colmgr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _COLMGR_HXX
+#define _COLMGR_HXX
+
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+
+void FitToActualSize(SwFmtCol& rCol, USHORT nWidth);
+
+class SwColMgr
+{
+public:
+ // lActWidth wird aus den Edits des Seitendialogs
+ // direkt uebergeben
+ SwColMgr(const SfxItemSet &rSet, USHORT nActWidth = USHRT_MAX);
+ ~SwColMgr();
+
+
+ inline USHORT GetCount() const;
+ void SetCount(USHORT nCount, USHORT nGutterWidth);
+ USHORT GetGutterWidth(USHORT nPos = USHRT_MAX) const;
+ void SetGutterWidth(USHORT nWidth, USHORT nPos = USHRT_MAX);
+
+ USHORT GetColWidth(USHORT nIdx) const;
+ void SetColWidth(USHORT nIdx, USHORT nWidth);
+
+ inline BOOL IsAutoWidth() const;
+ void SetAutoWidth(BOOL bOn = TRUE, USHORT lGutterWidth = 0);
+
+ inline BOOL HasLine() const;
+ inline void SetNoLine();
+
+ inline void SetLineWidthAndColor(ULONG nWidth, const Color& rCol);
+ inline ULONG GetLineWidth() const;
+ inline const Color& GetLineColor() const;
+
+ inline SwColLineAdj GetAdjust() const;
+ inline void SetAdjust(SwColLineAdj);
+
+ short GetLineHeightPercent() const;
+ void SetLineHeightPercent(short nPercent);
+
+ inline void NoCols();
+ void Update();
+
+ const SwFmtCol& GetColumns() const { return aFmtCol; }
+
+ void SetActualWidth(USHORT nW);
+ USHORT GetActualSize() const { return nWidth; }
+
+
+private:
+
+ SwFmtCol aFmtCol;
+ USHORT nWidth;
+};
+
+// INLINE METHODE --------------------------------------------------------
+
+inline USHORT SwColMgr::GetCount() const
+{
+ return aFmtCol.GetNumCols();
+}
+inline void SwColMgr::SetLineWidthAndColor(ULONG nWidth, const Color& rCol)
+{
+ aFmtCol.SetLineWidth(nWidth);
+ aFmtCol.SetLineColor(rCol);
+}
+inline ULONG SwColMgr::GetLineWidth() const
+{
+ return aFmtCol.GetLineWidth();
+}
+inline const Color& SwColMgr::GetLineColor() const
+{
+ return aFmtCol.GetLineColor();
+}
+inline SwColLineAdj SwColMgr::GetAdjust() const
+{
+ return aFmtCol.GetLineAdj();
+}
+inline void SwColMgr::SetAdjust(SwColLineAdj eAdj)
+{
+ aFmtCol.SetLineAdj(eAdj);
+}
+inline BOOL SwColMgr::IsAutoWidth() const
+{
+ return aFmtCol.IsOrtho();
+}
+inline void SwColMgr::SetAutoWidth(BOOL bOn, USHORT nGutterWidth)
+{
+ aFmtCol.SetOrtho(bOn, nGutterWidth, nWidth);
+}
+inline void SwColMgr::NoCols()
+{
+ aFmtCol.GetColumns().DeleteAndDestroy(0, aFmtCol.GetColumns().Count());
+}
+inline BOOL SwColMgr::HasLine() const
+{
+ return GetAdjust() != COLADJ_NONE;
+}
+inline void SwColMgr::SetNoLine()
+{
+ SetAdjust(COLADJ_NONE);
+}
+
+#endif
diff --git a/sw/source/ui/inc/column.hxx b/sw/source/ui/inc/column.hxx
new file mode 100644
index 000000000000..57934a843c92
--- /dev/null
+++ b/sw/source/ui/inc/column.hxx
@@ -0,0 +1,266 @@
+/*************************************************************************
+ *
+ * $RCSfile: column.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _COLUMN_HXX
+#define _COLUMN_HXX
+
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#ifndef _IMAGE_HXX //autogen
+#include <vcl/image.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+#ifndef _IMAGEBTN_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+#ifndef _CTRLBOX_HXX
+#include <svtools/ctrlbox.hxx>
+#endif
+#ifndef _VALUESET_HXX //autogen
+#include <svtools/valueset.hxx>
+#endif
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _FMTCLBL_HXX
+#include <fmtclbl.hxx>
+#endif
+#ifndef _COLEX_HXX
+#include <colex.hxx>
+#endif
+#ifndef _PRCNTFLD_HXX
+#include <prcntfld.hxx>
+#endif
+
+const nMaxCols = 99;
+class SwColMgr;
+class SwWrtShell;
+class SwColumnPage;
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SwColumnDlg : public SfxModalDialog
+{
+ OKButton aOK;
+ CancelButton aCancel;
+ HelpButton aHelp;
+
+ FixedText aApplyToFT;
+ ListBox aApplyToLB;
+
+ SwWrtShell& rWrtShell;
+ SwColumnPage* pTabPage;
+ SfxItemSet* pPageSet;
+ SfxItemSet* pSectionSet;
+ SfxItemSet* pSelectionSet;
+ SfxItemSet* pFrameSet;
+
+ long nOldSelection;
+ long nSelectionWidth;
+ long nPageWidth;
+
+ BOOL bPageChanged : 1;
+ BOOL bSectionChanged : 1;
+ BOOL bSelSectionChanged : 1;
+ BOOL bFrameChanged : 1;
+
+
+ DECL_LINK(ObjectHdl, ListBox*);
+ DECL_LINK(OkHdl, OKButton*);
+
+public:
+ SwColumnDlg(Window* pParent, SwWrtShell& rSh);
+ virtual ~SwColumnDlg();
+
+ SwWrtShell& GetWrtShell() { return rWrtShell; }
+};
+
+/*-----------------07.03.97 08.26-------------------
+
+--------------------------------------------------*/
+class ColumnValueSet : public ValueSet
+{
+ public:
+ ColumnValueSet(Window* pParent, const ResId& rResId) :
+ ValueSet(pParent, rResId){}
+ ~ColumnValueSet();
+
+ virtual void UserDraw( const UserDrawEvent& rUDEvt );
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Spaltendialog jetzt als TabPage
+ --------------------------------------------------------------------*/
+class SwColumnPage : public SfxTabPage
+{
+ FixedText aClNrLbl;
+ NumericField aCLNrEdt;
+ ColumnValueSet aDefaultVS;
+ ImageList aPreColsIL;
+ CheckBox aBalanceColsCB;
+ GroupBox aCLGroup;
+
+ ImageButton aBtnUp;
+ FixedText aWidthFT;
+ FixedText aDistFT;
+ FixedText aLbl1;
+ PercentField aEd1;
+ PercentField aDistEd1;
+ FixedText aLbl2;
+ PercentField aEd2;
+ PercentField aDistEd2;
+ FixedText aLbl3;
+ PercentField aEd3;
+ ImageButton aBtnDown;
+ CheckBox aAutoWidthBox;
+
+ GroupBox aLayoutGrp;
+
+ FixedText aLineTypeLbl;
+ LineListBox aLineTypeDLB;
+ FixedText aLineHeightLbl;
+ MetricField aLineHeightEdit;
+ FixedText aLinePosLbl;
+ ListBox aLinePosDLB;
+ GroupBox aLineTypeGrp;
+
+ // Example
+ SwColExample aPgeExampleWN;
+ SwColumnOnlyExample aFrmExampleWN;
+ GroupBox aExampleGB;
+
+ SwColMgr* pColMgr;
+
+ USHORT nFirstVis;
+ USHORT nCols;
+ long nColWidth[nMaxCols];
+ long nColDist[nMaxCols];
+ USHORT nMinWidth;
+ PercentField *pModifiedField;
+ BOOL bFormat;
+ BOOL bFrm;
+ BOOL bHtmlMode;
+ BOOL bLockUpdate;
+
+ // Handler
+ DECL_LINK( ColModify, NumericField * );
+ DECL_LINK( GapModify, PercentField * );
+ DECL_LINK( EdModify, PercentField * );
+ DECL_LINK( AutoWidthHdl, CheckBox * );
+ DECL_LINK( Timeout, Timer * );
+ DECL_LINK( SetDefaultsHdl, ValueSet * );
+
+ DECL_LINK( Up, Button * );
+ DECL_LINK( Down, Button * );
+ void Apply(Button *);
+ DECL_LINK( UpdateColMgr, void* );
+
+ void Update();
+ void UpdateCols();
+ void Init();
+ void ResetColWidth();
+ void SetLabels( USHORT nVis );
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet *pSet);
+
+ SwColumnPage(Window *pParent, const SfxItemSet &rSet);
+
+public:
+ ~SwColumnPage();
+
+ static SfxTabPage *Create(Window *pParent, const SfxItemSet &rSet);
+ static USHORT* GetRanges();
+
+ virtual BOOL FillItemSet(SfxItemSet &rSet);
+ virtual void Reset(const SfxItemSet &rSet);
+
+ void SetFrmMode(BOOL bMod);
+ void SetPageWidth(long nPageWidth);
+
+ void SetFormatUsed(BOOL bFmt) { bFormat = bFmt; }
+
+ void ShowBalance(BOOL bShow) {aBalanceColsCB.Show(bShow);}
+
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/conarc.hxx b/sw/source/ui/inc/conarc.hxx
new file mode 100644
index 000000000000..1c7b0c117540
--- /dev/null
+++ b/sw/source/ui/inc/conarc.hxx
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * $RCSfile: conarc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CONARC_HXX
+#define _CONARC_HXX
+
+#include "drawbase.hxx"
+
+/*************************************************************************
+|*
+|* Rechteck zeichnen
+|*
+\************************************************************************/
+
+class ConstArc : public SwDrawBase
+{
+ Point aStartPnt;
+ UINT16 nAnzButUp;
+
+public:
+ ConstArc(SwWrtShell* pSh, SwEditWin* pWin, SwView* pView);
+
+ // Mouse- & Key-Events
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+
+ virtual void Activate(const USHORT nSlotId); // Funktion aktivieren
+ virtual void Deactivate();
+};
+
+
+
+#endif // _CONARC_HXX
+
diff --git a/sw/source/ui/inc/condedit.hxx b/sw/source/ui/inc/condedit.hxx
new file mode 100644
index 000000000000..29b0d3ba6e95
--- /dev/null
+++ b/sw/source/ui/inc/condedit.hxx
@@ -0,0 +1,103 @@
+/*************************************************************************
+ *
+ * $RCSfile: condedit.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CONDEDTI_HXX
+#define _CONDEDTI_HXX
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+class DropEvent;
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class ConditionEdit : public Edit
+{
+ BOOL bBrackets;
+
+ virtual BOOL QueryDrop( DropEvent& rEvt );
+
+public:
+ ConditionEdit( Window* pParent, const ResId& rResId );
+
+ inline void ShowBrackets(BOOL bShow) { bBrackets = bShow; }
+};
+
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sw/source/ui/inc/conform.hxx b/sw/source/ui/inc/conform.hxx
new file mode 100644
index 000000000000..fc9817760575
--- /dev/null
+++ b/sw/source/ui/inc/conform.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: conform.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CONFORM_HXX
+#define _CONFORM_HXX
+
+#include "drawbase.hxx"
+
+class ConstFormControl : public SwDrawBase
+{
+public:
+ ConstFormControl(SwWrtShell* pSh, SwEditWin* pWin, SwView* pView);
+
+ // Mouse- & Key-Events
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+
+ virtual void Activate(const USHORT nSlotId); // Function aktivieren
+};
+
+
+
+#endif
+
diff --git a/sw/source/ui/inc/conpoly.hxx b/sw/source/ui/inc/conpoly.hxx
new file mode 100644
index 000000000000..3005b04ca4ad
--- /dev/null
+++ b/sw/source/ui/inc/conpoly.hxx
@@ -0,0 +1,89 @@
+/*************************************************************************
+ *
+ * $RCSfile: conpoly.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CONPOLY_HXX
+#define _CONPOLY_HXX
+
+#include "drawbase.hxx"
+
+/*************************************************************************
+|*
+|* Basisklasse fuer alle Funktionen
+|*
+\************************************************************************/
+
+class ConstPolygon : public SwDrawBase
+{
+ Point aLastPos;
+
+public:
+ ConstPolygon(SwWrtShell* pSh, SwEditWin* pWin, SwView* pView);
+
+ // Mouse- & Key-Events
+ virtual BOOL MouseMove(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+
+ virtual void Activate(const USHORT nSlotId); // Function aktivieren
+};
+
+
+#endif // _CONPOLY_HXX
+
diff --git a/sw/source/ui/inc/conrect.hxx b/sw/source/ui/inc/conrect.hxx
new file mode 100644
index 000000000000..baefac2db343
--- /dev/null
+++ b/sw/source/ui/inc/conrect.hxx
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * $RCSfile: conrect.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SW_CONRECT_HXX
+#define _SW_CONRECT_HXX
+
+#include "drawbase.hxx"
+
+/*************************************************************************
+|*
+|* Rechteck zeichnen
+|*
+\************************************************************************/
+
+class ConstRectangle : public SwDrawBase
+{
+ BOOL bMarquee;
+
+ public:
+ ConstRectangle(SwWrtShell* pSh, SwEditWin* pWin, SwView* pView);
+
+ // Mouse- & Key-Events
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+
+ virtual void Activate(const USHORT nSlotId); // Function aktivieren
+};
+
+
+
+#endif // _SW_CONRECT_HXX
+
diff --git a/sw/source/ui/inc/content.hxx b/sw/source/ui/inc/content.hxx
new file mode 100644
index 000000000000..8162ec6f53d7
--- /dev/null
+++ b/sw/source/ui/inc/content.hxx
@@ -0,0 +1,256 @@
+/*************************************************************************
+ *
+ * $RCSfile: content.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CONTENT_HXX
+#define _CONTENT_HXX
+
+#include <limits.h> // USHRT_MAX
+#ifndef _SWCONT_HXX
+#include "swcont.hxx"
+#endif
+
+#ifndef _MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+
+class SwWrtShell;
+class SwContentArr;
+class SwContentType;
+class SwNavigationPI;
+class SwFmtFld;
+class SwTxtINetFmt;
+class SwNavigationConfig;
+class SwDocShell;
+class SvDataObject;
+class SwTOXBase;
+
+//----------------------------------------------------------------------------
+// Hilfsklassen
+//----------------------------------------------------------------------------
+
+class SwPopup : public PopupMenu
+{
+ USHORT nCurId;
+ virtual void Select(){nCurId = GetCurItemId();}
+
+public:
+ SwPopup() :
+ PopupMenu(),
+ nCurId(USHRT_MAX){}
+
+ USHORT GetCurId() const { return nCurId; }
+
+};
+
+//----------------------------------------------------------------------------
+
+class SwOutlineContent : public SwContent
+{
+ USHORT nOutlinePos;
+ BYTE nOutlineLevel;
+ BOOL bIsMoveable;
+ public:
+ SwOutlineContent( const SwContentType* pCnt,
+ const String& rName,
+ USHORT nArrPos,
+ BYTE nLevel,
+ BOOL bMove,
+ long nYPos) :
+ SwContent(pCnt, rName, nYPos), nOutlineLevel(nLevel),
+ nOutlinePos(nArrPos), bIsMoveable(bMove){}
+
+ USHORT GetPos(){return nOutlinePos;}
+ BYTE GetOutlineLevel(){return nOutlineLevel;}
+ BOOL IsMoveable(){return bIsMoveable;};
+};
+
+//----------------------------------------------------------------------------
+class SwRegionContent : public SwContent
+{
+
+ BYTE nRegionLevel;
+
+ public:
+ SwRegionContent( const SwContentType* pCnt,
+ const String& rName,
+ BYTE nLevel,
+ long nYPos) :
+ SwContent(pCnt, rName, nYPos),
+ nRegionLevel(nLevel){}
+ BYTE GetRegionLevel() const {return nRegionLevel;}
+};
+//----------------------------------------------------------------------------
+
+class SwURLFieldContent : public SwContent
+{
+ const SwTxtINetFmt* pINetAttr;
+ String sURL;
+
+public:
+ SwURLFieldContent( const SwContentType* pCnt,
+ const String& rName,
+ const String& rURL,
+ const SwTxtINetFmt* pAttr,
+ long nYPos )
+ : SwContent( pCnt, rName, nYPos ), sURL( rURL ), pINetAttr( pAttr )
+ {}
+
+ virtual BOOL IsProtect() const;
+ const String& GetURL() { return sURL; }
+ const SwTxtINetFmt* GetINetAttr() { return pINetAttr; }
+};
+
+//----------------------------------------------------------------------------
+
+class SwPostItContent : public SwContent
+{
+ const SwFmtFld* pFld;
+public:
+ SwPostItContent( const SwContentType* pCnt,
+ const String& rName,
+ const SwFmtFld* pField,
+ long nYPos )
+ : SwContent( pCnt, rName, nYPos ), pFld( pField )
+ {}
+
+ const SwFmtFld* GetPostIt() { return pFld; }
+ virtual BOOL IsProtect() const;
+};
+
+//----------------------------------------------------------------------------
+
+class SwGraphicContent : public SwContent
+{
+ String sLink;
+public:
+ SwGraphicContent(const SwContentType* pCnt, const String& rName, const String& rLink, long nYPos)
+ : SwContent( pCnt, rName, nYPos ), sLink( rLink )
+ {}
+ virtual ~SwGraphicContent();
+
+ const String& GetLink() const {return sLink;}
+};
+
+//----------------------------------------------------------------------------
+class SwTOXBaseContent : public SwContent
+{
+ const SwTOXBase* pBase;
+public:
+ SwTOXBaseContent(const SwContentType* pCnt, const String& rName, long nYPos, const SwTOXBase& rBase)
+ : SwContent( pCnt, rName, nYPos ), pBase(&rBase)
+ {}
+ virtual ~SwTOXBaseContent();
+
+ const SwTOXBase* GetTOXBase() const {return pBase;}
+};
+/*
+ class ContentType enthaelt Informationen zu einer Inhaltsform
+ Das MemberArray wird nur gefuellt, wenn der Inhalt mit GetMember
+ angefordert wird. Es wird nach Invalidate() nur dann neu geladen,
+ wenn der Inhalt erneut ausgelesen werden soll.
+*/
+//----------------------------------------------------------------------------
+//----------------------------------------------------------------------------
+
+class SwContentType : public SwTypeNumber
+{
+ SwWrtShell* pWrtShell;
+ SwContentArr* pMember; // Array fuer Inhalte
+ String sContentTypeName; // Name der Inhaltsform
+ String sSingleContentTypeName; // Name der Inhaltsform, Singular
+ String sTypeToken; // Anhaengsel fuer URL
+ USHORT nMemberCount; // Inhaltsanzahl
+ USHORT nContentType; // Id der Inhaltsform
+ BYTE nOutlineLevel;
+ BOOL bMemberFilled : 1; // wurden die Inhalte bereits eingefuegt?
+ BOOL bIsInternalDrag:1; // koennen die Inhalte verschoben werden?
+ BOOL bDataValid : 1; //
+ BOOL bEdit: 1; // kann diese Type bearbeitet werden ?
+ BOOL bDelete: 1; // kann diese Type geloescht werden ?
+protected:
+ void RemoveNewline(String&);
+public:
+ SwContentType(SwWrtShell* pParent, USHORT nType, BYTE nLevel );
+ ~SwContentType();
+
+ void Init(BOOL* pbInvalidateWindow = 0);
+ void FillMemberList(BOOL* pbLevelChanged = NULL);
+ USHORT GetMemberCount() const
+ {return nMemberCount;};
+ USHORT GetType() const {return nContentType;}
+ const SwContent* GetMember(USHORT nIndex);
+ const String& GetName() {return sContentTypeName;}
+ const String& GetSingleName() const {return sSingleContentTypeName;}
+ const String& GetTypeToken() const{return sTypeToken;}
+
+ void SetOutlineLevel(BYTE nNew)
+ {
+ nOutlineLevel = nNew;
+ Invalidate();
+ }
+
+ void Invalidate(); // nur nMemberCount wird neu gelesen
+
+ BOOL IsEditable() const {return bEdit;}
+ BOOL IsDeletable() const {return bDelete;}
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/conttree.hxx b/sw/source/ui/inc/conttree.hxx
new file mode 100644
index 000000000000..1732d879c812
--- /dev/null
+++ b/sw/source/ui/inc/conttree.hxx
@@ -0,0 +1,332 @@
+/*************************************************************************
+ *
+ * $RCSfile: conttree.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _CONTTREE_HXX
+#define _CONTTREE_HXX
+#ifndef _SWCONT_HXX
+#include "swcont.hxx"
+#endif
+
+#ifndef _SVTREEBOX_HXX //autogen
+#include <svtools/svtreebx.hxx>
+#endif
+
+class SwWrtShell;
+class SwContentArr;
+class SwContentType;
+class SwNavigationPI;
+class SwFmtFld;
+class SwTxtINetFmt;
+class SwNavigationConfig;
+class SwDocShell;
+class SvDataObject;
+class Menu;
+class ToolBox;
+
+#define EDIT_MODE_EDIT 0
+#define EDIT_MODE_UPD_IDX 1
+#define EDIT_MODE_RMV_IDX 2
+#define EDIT_UNPROTECT_TABLE 3
+#define EDIT_MODE_DELETE 4
+#define EDIT_MODE_RENAME 5
+
+//----------------------------------------------------------------------------
+//----------------------------------------------------------------------------
+
+class SwContentTree : public SvTreeListBox
+{
+ SwWrtShell* pHiddenShell; // gedropptes Doc
+ SwWrtShell* pActiveShell; // die aktive oder eine konst. offene View
+ SwNavigationConfig* pConfig;
+ ImageList aEntryImages;
+ String sSpace;
+ AutoTimer aUpdTimer;
+
+ USHORT nActiveBlock;
+ USHORT nHiddenBlock;
+ USHORT nRootType;
+ USHORT nLastSelType;
+ USHORT nDragMode; // wir fuer den StaticLink gebraucht
+ BYTE nOutlineLevel;
+
+ BOOL bIsActive :1;
+ BOOL bIsConstant :1;
+ BOOL bIsHidden :1;
+ BOOL bDocChgdInDragging :1;
+ BOOL bIsInternalDrag :1;
+ BOOL bIsRoot :1;
+ BOOL bIsIdleClear :1;
+ BOOL bIsLastReadOnly :1;
+ BOOL bIsOutlineMoveable :1;
+ BOOL bViewHasChanged :1;
+ BOOL bIsImageListInitialized : 1;
+
+ static BOOL bIsInDrag;
+
+ SwContentType* aActiveContentArr[CONTENT_TYPE_MAX];
+ SwContentType* aHiddenContentArr[CONTENT_TYPE_MAX];
+ String aContextStrings[CONTEXT_COUNT + 1];
+ String sRemoveIdx;
+ String sUpdateIdx;
+ String sUnprotTbl;
+ String sRename;
+ String sReadonlyIdx;
+ String sInvisible;
+
+ void FindActiveTypeAndRemoveUserData();
+
+protected:
+ virtual BOOL Drop( const DropEvent& rEvt);
+ virtual BOOL QueryDrop( DropEvent& rEvt);
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+ virtual void InitEntry(SvLBoxEntry*,const XubString&,const Image&,const Image&);
+
+ SwNavigationPI* GetParentWindow(){return
+ (SwNavigationPI*)Window::GetParent();}
+
+ void StartExecuteDrag();
+ BOOL FillDragServer(USHORT& nDragMode);
+ BOOL HasContentChanged();
+
+ virtual DragDropMode NotifyBeginDrag( SvLBoxEntry* );
+
+ virtual BOOL NotifyMoving( SvLBoxEntry* pTarget,
+ SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent,
+ ULONG& rNewChildPos
+ );
+ virtual BOOL NotifyCopying( SvLBoxEntry* pTarget,
+ SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent,
+ ULONG& rNewChildPos
+ );
+ virtual BOOL NotifyQueryDrop( SvLBoxEntry* );
+ virtual void BeginDrag( const Point& );
+ virtual void EndDrag();
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+
+ void EditEntry(SvLBoxEntry* pEntry, BYTE nMode = EDIT_MODE_EDIT);
+ void GotoContent(SwContent* pCnt);
+ static void SetInDrag(BOOL bSet) {bIsInDrag = bSet;}
+
+ USHORT GetDragMode() const {return nDragMode;}
+ DECL_STATIC_LINK(SwContentTree, ExecDragHdl, SwContentTree*);
+
+public:
+ SwContentTree(Window* pParent, const ResId& rResId);
+ ~SwContentTree();
+
+ BOOL ToggleToRoot();
+ BOOL IsRoot() const {return bIsRoot;}
+ USHORT GetRootType() const {return nRootType;}
+ void SetRootType(USHORT nType);
+ void Display( BOOL bActiveView );
+ void Clear();
+ void SetHiddenShell(SwWrtShell* pSh);
+ void ShowHiddenShell();
+ void ShowActualView();
+ void SetActiveShell(SwWrtShell* pSh);
+ void SetConstantShell(SwWrtShell* pSh);
+
+ SwWrtShell* GetWrtShell()
+ {return bIsActive||bIsConstant ?
+ pActiveShell :
+ pHiddenShell;}
+
+ static BOOL IsInDrag() {return bIsInDrag;}
+ BOOL IsInternalDrag() const {return bIsInternalDrag != 0;}
+
+ USHORT GetActiveBlock() const {return nActiveBlock;}
+
+ BYTE GetOutlineLevel()const {return nOutlineLevel;}
+ void SetOutlineLevel(BYTE nSet);
+ BOOL Expand( SvLBoxEntry* pParent );
+ BOOL Collapse( SvLBoxEntry* pParent );
+ void ExecCommand(USHORT nCmd, BOOL bModifier);
+ void Show();
+ void Hide();
+
+ BOOL IsConstantView() {return bIsConstant;}
+ BOOL IsActiveView() {return bIsActive;}
+ BOOL IsHiddenView() {return bIsHidden;}
+
+ const SwWrtShell* GetActiveWrtShell() {return pActiveShell;}
+ SwWrtShell* GetHiddenWrtShell() {return pHiddenShell;}
+
+ DECL_LINK( ContentDoubleClickHdl, SwContentTree * );
+ DECL_LINK( PopupHdl, Menu* );
+ DECL_LINK( TimerUpdate, Timer * );
+
+ virtual long GetTabPos( SvLBoxEntry*, SvLBoxTab* );
+ virtual void RequestingChilds( SvLBoxEntry* pParent );
+ virtual void GetFocus();
+ virtual void KeyInput(const KeyEvent& rKEvt);
+ virtual BOOL Select( SvLBoxEntry* pEntry, BOOL bSelect=TRUE );
+};
+
+
+//----------------------------------------------------------------------------
+// TreeListBox fuer Globaldokumente
+//----------------------------------------------------------------------------
+
+class SwGlblDocContents;
+class SwGlblDocContent;
+
+class SwLBoxString : public SvLBoxString
+{
+public:
+
+ SwLBoxString( SvLBoxEntry* pEntry, USHORT nFlags,
+ const String& rStr ) : SvLBoxString(pEntry,nFlags,rStr)
+ {
+ }
+
+ virtual void Paint( const Point& rPos, SvLBox& rDev, USHORT nFlags,
+ SvLBoxEntry* pEntry);
+};
+
+class SwGlobalTree : public SvTreeListBox
+{
+ AutoTimer aUpdateTimer;
+ String aContextStrings[GLOBAL_CONTEXT_COUNT];
+
+ ImageList aEntryImages;
+
+ SwWrtShell* pActiveShell; //
+ SvLBoxEntry* pEmphasisEntry; // Drag'n Drop-Emphasis
+ SvLBoxEntry* pDDSource; // Quelle beim DnD
+ SwGlblDocContents* pSwGlblDocContents; // Array mit sortierten Inhalten
+
+ BOOL bIsInternalDrag :1;
+ BOOL bLastEntryEmphasis :1; // Drag'n Drop
+ BOOL bIsImageListInitialized : 1;
+
+ static const SfxObjectShell* pShowShell;
+
+ protected:
+ virtual BOOL Drop( const DropEvent& rEvt);
+ virtual BOOL QueryDrop( DropEvent& rEvt);
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+
+ virtual long GetTabPos( SvLBoxEntry*, SvLBoxTab* );
+ virtual DragDropMode NotifyBeginDrag( SvLBoxEntry* );
+ virtual BOOL NotifyMoving( SvLBoxEntry* pTarget,
+ SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent,
+ ULONG& rNewChildPos
+ );
+ virtual BOOL NotifyCopying( SvLBoxEntry* pTarget,
+ SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent,
+ ULONG& rNewChildPos
+ );
+ virtual BOOL NotifyQueryDrop( SvLBoxEntry* );
+ virtual void BeginDrag( const Point& );
+ virtual void EndDrag();
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void KeyInput(const KeyEvent& rKEvt);
+ virtual void GetFocus();
+ virtual void SelectHdl();
+ virtual void DeselectHdl();
+ virtual void InitEntry(SvLBoxEntry*,const XubString&,const Image&,const Image&);
+
+ void Clear();
+
+ DECL_LINK( PopupHdl, Menu* );
+ DECL_LINK( Timeout, Timer* );
+ DECL_LINK( DoubleClickHdl, SwGlobalTree * );
+
+ BOOL IsInternalDrag() const {return bIsInternalDrag != 0;}
+ SwNavigationPI* GetParentWindow(){return
+ (SwNavigationPI*)Window::GetParent();}
+
+ void OpenDoc(const SwGlblDocContent*);
+ void GotoContent(const SwGlblDocContent*);
+ USHORT GetEnableFlags() const;
+
+ static const SfxObjectShell* GetShowShell() {return pShowShell;}
+ static void SetShowShell(const SfxObjectShell*pSet) {pShowShell = pSet;}
+ DECL_STATIC_LINK(SwGlobalTree, ShowFrameHdl, SwGlobalTree*);
+
+ public:
+ SwGlobalTree(Window* pParent, const ResId& rResId);
+ ~SwGlobalTree();
+
+ void TbxMenuHdl(USHORT nTbxId, ToolBox* pBox);
+ void InsertRegion(const SwGlblDocContent* pCont,
+ const String* pFileName = 0 );
+ void EditContent(const SwGlblDocContent* pCont );
+ void Show();
+ void Hide();
+
+ void ExecCommand(USHORT nCmd);
+
+ void Display(BOOL bOnlyUpdateUserData = FALSE);
+ BOOL Update(BOOL bHard = FALSE);
+};
+
+
+
+#endif
+
+
diff --git a/sw/source/ui/inc/convert.hxx b/sw/source/ui/inc/convert.hxx
new file mode 100644
index 000000000000..e73666a6fc86
--- /dev/null
+++ b/sw/source/ui/inc/convert.hxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * $RCSfile: convert.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SW_CONVERT_HXX
+#define _SW_CONVERT_HXX
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _SV_EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+
+class SwTableAutoFmt;
+class SwView;
+class SwWrtShell;
+
+class SwConvertTableDlg: public SfxModalDialog
+{
+ RadioButton aTabBtn;
+ RadioButton aSemiBtn;
+ RadioButton aParaBtn;
+ RadioButton aOtherBtn;
+ Edit aOtherEd;
+ CheckBox aKeepColumn;
+ GroupBox aDelimFrm;
+
+ CheckBox aHeaderCB;
+ CheckBox aRepeatHeaderCB;
+ CheckBox aDontSplitCB;
+ CheckBox aBorderCB;
+ GroupBox aOptionsGB;
+
+ OKButton aOkBtn;
+ CancelButton aCancelBtn;
+ HelpButton aHelpBtn;
+ PushButton aAutoFmtBtn;
+
+ String sConvertTextTable;
+ SwTableAutoFmt* pTAutoFmt;
+ SwWrtShell* pShell;
+
+ DECL_LINK( AutoFmtHdl, PushButton* );
+ DECL_LINK( BtnHdl, Button* );
+ DECL_LINK( CheckBoxHdl, CheckBox *pCB = 0 );
+
+public:
+ SwConvertTableDlg( SwView& rView );
+ ~SwConvertTableDlg();
+
+ void GetValues( char& rDelim,
+ USHORT& rInsTblFlags,
+ SwTableAutoFmt *& prTAFmt );
+};
+
+
+#endif
diff --git a/sw/source/ui/inc/cption.hxx b/sw/source/ui/inc/cption.hxx
new file mode 100644
index 000000000000..2e411d0d838d
--- /dev/null
+++ b/sw/source/ui/inc/cption.hxx
@@ -0,0 +1,176 @@
+/*************************************************************************
+ *
+ * $RCSfile: cption.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CPTION_HXX
+#define _CPTION_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _ACTCTRL_HXX //autogen
+#include <actctrl.hxx>
+#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 _COM_SUN_STAR_CONTAINER_XNAMED_HPP_
+#include <com/sun/star/container/XNamed.hpp>
+#endif
+
+class SwFldMgr;
+class SwView;
+
+#include "swlbox.hxx"
+
+class NoSpaceCombo : public SwComboBox
+{
+protected:
+ virtual void KeyInput( const KeyEvent& );
+
+public:
+ NoSpaceCombo( Window* pParent, const ResId& rResId)
+ : SwComboBox(pParent, rResId)
+ {}
+};
+
+class SwCaptionDialog : public SvxStandardDialog
+{
+ FixedText aSampleText;
+ FixedText aCategoryText;
+ NoSpaceCombo aCategoryBox;
+ FixedText aFormatText;
+ ListBox aFormatBox;
+ FixedText aTextText;
+ Edit aTextEdit;
+ FixedText aPosText;
+ ListBox aPosBox;
+ CheckBox aCopyAttributesCB;
+ FixedText aObjectNameFT;
+ NoSpaceEdit aObjectNameED;
+ GroupBox aSettingsGroup;
+ OKButton aOKButton;
+ CancelButton aCancelButton;
+ HelpButton aHelpButton;
+ PushButton aOptionButton;
+
+ SwView &rView; //Suchen per aktive ::com::sun::star::sdbcx::View vermeiden.
+ SwFldMgr *pMgr; //Ptr um das include zu sparen
+ sal_uInt16 eType;
+
+ String sObjectName;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > xNameAccess;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNamed > xNamed;
+
+ DECL_LINK( SelectHdl, ListBox * );
+ DECL_LINK( ModifyHdl, Edit * );
+ DECL_LINK( OptionHdl, Button * );
+
+ virtual void Apply();
+
+ void DrawSample();
+
+public:
+ SwCaptionDialog( Window *pParent, SwView &rV );
+ ~SwCaptionDialog();
+};
+
+#endif
+
+
diff --git a/sw/source/ui/inc/dbinsdlg.hxx b/sw/source/ui/inc/dbinsdlg.hxx
new file mode 100644
index 000000000000..54ff61bfcff5
--- /dev/null
+++ b/sw/source/ui/inc/dbinsdlg.hxx
@@ -0,0 +1,245 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbinsdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBINSDLG_HXX
+#define _DBINSDLG_HXX
+
+
+#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 _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _SVEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+#ifndef _SWNUMFMTLB_HXX //autogen
+#include <numfmtlb.hxx>
+#endif
+#ifdef REPLACE_OFADBMGR
+#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
+#include <com/sun/star/uno/Reference.h>
+#endif
+namespace com{namespace sun{namespace star{namespace sdbcx{
+ class XColumnsSupplier;
+}}}}
+#endif
+
+class SwTableAutoFmt;
+class SwView;
+class SbaSelectionList;
+class _DB_ColumnConfig;
+class SfxItemSet;
+class SwTableRep;
+class _DB_Columns;
+
+struct SwInsDBColumn
+{
+ String sColumn, sUsrNumFmt;
+ ULONG nDBNumFmt, nUsrNumFmt; // besser ist NumFormatStr !!
+ LanguageType eUsrNumFmtLng;
+ USHORT nCol;
+ BOOL bHasFmt : 1;
+ BOOL bIsDBFmt : 1;
+
+ SwInsDBColumn( const String& rStr, USHORT nColumn )
+ : sColumn( rStr ), nCol( nColumn ), nDBNumFmt( 0 ), nUsrNumFmt( 0 ),
+ bHasFmt(FALSE), bIsDBFmt(TRUE), eUsrNumFmtLng( LANGUAGE_SYSTEM )
+ {}
+
+ int operator==( const SwInsDBColumn& rCmp ) const
+ { return sColumn == rCmp.sColumn; }
+ int operator<( const SwInsDBColumn& rCmp ) const;
+};
+
+#ifdef REPLACE_OFADBMGR
+struct SwInsDBData
+{
+ String sDataBaseName;
+ String sDataTableName;
+ String sStatement;
+};
+#endif
+typedef SwInsDBColumn* SwInsDBColumnPtr;
+SV_DECL_PTRARR_SORT_DEL( SwInsDBColumns, SwInsDBColumnPtr, 32, 32 )
+
+
+class SwInsertDBColAutoPilot : public SfxModalDialog
+{
+ FixedText aFtInsertData;
+ RadioButton aRbAsTable;
+ RadioButton aRbAsField;
+ RadioButton aRbAsText;
+
+ GroupBox aGbSelection;
+ FixedText aFtDbColumn;
+
+ ListBox aLbTblDbColumn;
+ ListBox aLbTxtDbColumn;
+
+ GroupBox aGbDbFormat;
+ RadioButton aRbDbFmtFromDb;
+ RadioButton aRbDbFmtFromUsr;
+ NumFormatListBox aLbDbFmtFromUsr;
+
+ /* ----- Page Text/Field ------- */
+ PushButton aPbDbcolToEdit;
+ MultiLineEdit aEdDbText;
+ FixedText aFtDbParaColl;
+ ListBox aLbDbParaColl;
+
+ /* ----- Page Table ------------ */
+ PushButton aPbDbcolAllTo;
+ PushButton aPbDbcolOneTo;
+ PushButton aPbDbcolOneFrom;
+ PushButton aPbDbcolAllFrom;
+ FixedText aFtTableCol;
+ ListBox aLbTableCol;
+ GroupBox aGbTableHead;
+ CheckBox aCbTableHeadon;
+ RadioButton aRbHeadlColnms;
+ RadioButton aRbHeadlEmpty;
+ PushButton aPbTblFormat;
+ PushButton aPbTblAutofmt;
+
+ OKButton aBtOk;
+ CancelButton aBtCancel;
+ HelpButton aBtHelp;
+
+ SwInsDBColumns aDBColumns;
+#ifdef REPLACE_OFADBMGR
+ const SwInsDBData aDBData;
+#else
+
+#endif //REPLACE_OFADBMGR
+
+ Link aOldNumFmtLnk;
+ String sNoTmpl;
+
+ SwView* pView;
+ SwTableAutoFmt* pTAutoFmt;
+ _DB_ColumnConfig* pConfig;
+
+ SfxItemSet* pTblSet;
+ SwTableRep* pRep;
+ USHORT nGBFmtLen;
+
+ DECL_LINK( PageHdl, Button* );
+ DECL_LINK( AutoFmtHdl, PushButton* );
+ DECL_LINK( TblFmtHdl, PushButton* );
+ DECL_LINK( DBFormatHdl, Button* );
+ DECL_LINK( TblToFromHdl, Button* );
+ DECL_LINK( SelectHdl, ListBox* );
+ DECL_LINK( DblClickHdl, ListBox* );
+ DECL_LINK( HeaderHdl, Button* );
+
+ FASTBOOL SplitTextToColArr( const String& rTxt, _DB_Columns& rColArr, BOOL bInsField );
+
+ // Daten ins INI-File schreiben
+ void WriteUIToIni();
+ // Daten aus dem INI-File lesen:
+ void ReadIniToUI();
+ // setze die Tabellen - Eigenschaften
+ void SetTabSet();
+
+public:
+#ifdef REPLACE_OFADBMGR
+ SwInsertDBColAutoPilot( SwView& rView,
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource> rxSource,
+ com::sun::star::uno::Reference<com::sun::star::sdbcx::XColumnsSupplier>,
+ const SwInsDBData& rData );
+#else
+ SwInsertDBColAutoPilot( SwView& rView );
+#endif //REPLACE_OFADBMGR
+
+ virtual ~SwInsertDBColAutoPilot();
+
+#ifdef REPLACE_OFADBMGR
+ void DataToDoc( const SbaSelectionList*,
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource> rxSource,
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> xConnection);
+#else
+ BOOL HasValidDB() const { return 0 != aDBColumns.Count(); }
+ void DataToDoc( const SbaSelectionList* );
+#endif //REPLACE_OFADBMGR
+
+};
+
+
+
+
+#endif
diff --git a/sw/source/ui/inc/dbtree.hxx b/sw/source/ui/inc/dbtree.hxx
new file mode 100644
index 000000000000..b8439bd911e7
--- /dev/null
+++ b/sw/source/ui/inc/dbtree.hxx
@@ -0,0 +1,121 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbtree.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DBTREE_HXX
+#define _DBTREE_HXX
+
+#ifndef _SVTREEBOX_HXX //autogen
+#include <svtools/svtreebx.hxx>
+#endif
+
+#ifdef REPLACE_OFADBMGR
+#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
+#include <com/sun/star/uno/Reference.h>
+#endif
+namespace com{namespace sun{namespace star{namespace container{
+ class XNameAccess;
+}}}}
+#endif
+
+#include "swtypes.hxx"
+
+class SwDBTreeList : public SvTreeListBox
+{
+ Bitmap aRootOpened;
+ Bitmap aRootClosed;
+ Image aDBBMP;
+ Image aTableBMP;
+ Image aQueryBMP;
+
+ String sDefDBName;
+ BOOL bInitialized;
+ BOOL bShowColumns;
+
+#ifdef REPLACE_OFADBMGR
+ com::sun::star::uno::Reference<com::sun::star::container::XNameAccess> xDBContext;
+#endif
+ DECL_LINK( DBCompare, SvSortData* );
+
+ void InitTreeList();
+ virtual void RequestingChilds( SvLBoxEntry* pParent );
+
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual BOOL QueryDrop( DropEvent& rEvt);
+
+ void StartExecuteDrag();
+
+public:
+ SwDBTreeList(Window* pParent, const ResId& rResId, const String& rDefDBName = aEmptyStr, const BOOL bShowCol = FALSE );
+ ~SwDBTreeList();
+
+#ifdef REPLACE_OFADBMGR
+ String GetDBName(String& rTableName, String& rColumnName, BOOL* pbIsTable = 0);
+ void Select(const String& rDBName, const String& rTableName, const String& rColumnName);
+#else
+ String GetDBName() const;
+ void Select(const String& rDBName); // Format: Datenbank.Tabelle
+#endif
+
+ void Show();
+ void ShowColumns(BOOL bShowCol);
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/dbui.hxx b/sw/source/ui/inc/dbui.hxx
new file mode 100644
index 000000000000..ffb5571d54b5
--- /dev/null
+++ b/sw/source/ui/inc/dbui.hxx
@@ -0,0 +1,114 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbui.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DBUI_HXX
+#define _DBUI_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#include "dbtree.hxx"
+#include "swtypes.hxx"
+
+class SwWrtShell;
+class SbaObject;
+
+class SwDBSelect : public SvxStandardDialog
+{
+ SwDBTreeList aTree;
+
+ OKButton aOkBTN;
+ CancelButton aCancelBTN;
+ HelpButton aHelpBTN;
+
+ DECL_LINK(TreeSelectHdl, SvTreeListBox* pBox);
+
+ virtual void Apply();
+
+public:
+ SwDBSelect(Window* pParent, SwWrtShell* pSh, const String& rDefDBName = aEmptyStr);
+ ~SwDBSelect();
+
+ String GetDBName() const;
+};
+
+class PrintMonitor: public ModelessDialog
+{
+public:
+ FixedText aDocName;
+ FixedText aPrinting;
+ FixedText aPrinter;
+ FixedText aPrintInfo;
+ CancelButton aCancel;
+
+ PrintMonitor( Window *pParent, BOOL bEMail = FALSE );
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/docfnote.hxx b/sw/source/ui/inc/docfnote.hxx
new file mode 100644
index 000000000000..ff632ca6839c
--- /dev/null
+++ b/sw/source/ui/inc/docfnote.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: docfnote.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DOCFNOTE_HXX
+#define _DOCFNOTE_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+class SwWrtShell;
+
+class SwFootNoteOptionDlg :public SfxTabDialog
+{
+ SwWrtShell &rSh;
+ Link aOldOkHdl;
+
+ virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
+
+#ifdef __PRIVATE
+ DECL_LINK( OkHdl, Button * );
+#endif
+
+public:
+ SwFootNoteOptionDlg(Window *pParent, SwWrtShell &rSh );
+ ~SwFootNoteOptionDlg();
+};
+
+#endif
diff --git a/sw/source/ui/inc/docstdlg.hxx b/sw/source/ui/inc/docstdlg.hxx
new file mode 100644
index 000000000000..792d31be5064
--- /dev/null
+++ b/sw/source/ui/inc/docstdlg.hxx
@@ -0,0 +1,124 @@
+/*************************************************************************
+ *
+ * $RCSfile: docstdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DOCSTDLG_HXX
+#define _DOCSTDLG_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+
+#include "docstat.hxx"
+
+/*--------------------------------------------------------------------
+ Beschreibung: DocInfo jetzt als Page
+ --------------------------------------------------------------------*/
+
+class SwDocStatPage: public SfxTabPage
+{
+public:
+ SwDocStatPage(Window *pParent, const SfxItemSet &rSet);
+ ~SwDocStatPage();
+
+ static SfxTabPage *Create(Window *pParent, const SfxItemSet &rSet);
+
+protected:
+ virtual BOOL FillItemSet( SfxItemSet &rSet);
+ virtual void Reset (const SfxItemSet &rSet);
+
+ DECL_LINK( UpdateHdl, PushButton*);
+
+private:
+ FixedText aTableLbl;
+ FixedText aGrfLbl;
+ FixedText aOLELbl;
+ FixedText aPageLbl;
+ FixedText aParaLbl;
+ FixedText aWordLbl;
+ FixedText aWordDelimFT;
+ Edit aWordDelim;
+ FixedText aCharLbl;
+ FixedText aLineLbl;
+
+ FixedInfo aTableNo;
+ FixedInfo aGrfNo;
+ FixedInfo aOLENo;
+ FixedInfo aPageNo;
+ FixedInfo aParaNo;
+ FixedInfo aWordNo;
+ FixedInfo aCharNo;
+ FixedInfo aLineNo;
+
+ PushButton aUpdatePB;
+ SwDocStat aDocStat;
+
+ void Update();
+ void SetData(const SwDocStat &rStat);
+};
+
+#endif
diff --git a/sw/source/ui/inc/drawbase.hxx b/sw/source/ui/inc/drawbase.hxx
new file mode 100644
index 000000000000..f55dc84672f9
--- /dev/null
+++ b/sw/source/ui/inc/drawbase.hxx
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawbase.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SW_DRAWBASE_HXX
+#define _SW_DRAWBASE_HXX
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+
+class SwView;
+class SwWrtShell;
+class SwEditWin;
+class KeyEvent;
+class MouseEvent;
+
+#define MIN_FREEHAND_DISTANCE 10
+
+/*************************************************************************
+|*
+|* Basisklasse fuer alle Funktionen
+|*
+\************************************************************************/
+
+class SwDrawBase
+{
+protected:
+ SwView* pView;
+ SwWrtShell* pSh;
+ SwEditWin* pWin;
+ Point aStartPos; // Position von BeginCreate
+ Point aMDPos; // Position von MouseButtonDown
+ BOOL bCreateObj :1;
+ BOOL bInsForm :1;
+
+public:
+ SwDrawBase(SwWrtShell *pSh, SwEditWin* pWin, SwView* pView);
+ virtual ~SwDrawBase();
+
+ void SetDrawPointer();
+ void EnterSelectMode(const MouseEvent& rMEvt);
+ inline BOOL IsInsertForm() const { return bInsForm; }
+ inline BOOL IsCreateObj() const { return bCreateObj; }
+
+ // Mouse- & Key-Events; Returnwert=TRUE: Event wurde bearbeitet
+ virtual BOOL KeyInput(const KeyEvent& rKEvt);
+ virtual BOOL MouseMove(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+
+ void BreakCreate();
+
+ virtual void Activate(const USHORT nSlotId); // Function aktivieren
+ virtual void Deactivate(); // Function deaktivieren
+};
+
+
+
+#endif // _SW_DRAWBASE_HXX
+
diff --git a/sw/source/ui/inc/drawsh.hxx b/sw/source/ui/inc/drawsh.hxx
new file mode 100644
index 000000000000..e148badafd90
--- /dev/null
+++ b/sw/source/ui/inc/drawsh.hxx
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWDRAWSH_HXX
+#define _SWDRAWSH_HXX
+
+#include "drwbassh.hxx"
+
+class SdrObject;
+class SwDrawBaseShell;
+
+class SwDrawShell: public SwDrawBaseShell
+{
+public:
+ SFX_DECL_INTERFACE(SW_DRAWSHELL);
+ TYPEINFO();
+
+ SwDrawShell(SwView &rView);
+
+ void Execute(SfxRequest &);
+ void GetState(SfxItemSet &);
+ void ExecDrawDlg(SfxRequest& rReq);
+ void ExecDrawAttrArgs(SfxRequest& rReq);
+ void GetDrawAttrState(SfxItemSet &rSet);
+
+ void ExecFormText(SfxRequest& rReq);
+ void GetFormTextState(SfxItemSet& rSet);
+};
+
+#endif
diff --git a/sw/source/ui/inc/drformsh.hxx b/sw/source/ui/inc/drformsh.hxx
new file mode 100644
index 000000000000..475cb4a45771
--- /dev/null
+++ b/sw/source/ui/inc/drformsh.hxx
@@ -0,0 +1,83 @@
+/*************************************************************************
+ *
+ * $RCSfile: drformsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWDRWFORMSH_HXX
+#define _SWDRWFORMSH_HXX
+
+#include "drwbassh.hxx"
+
+class SdrObject;
+class SwDrawBaseShell;
+
+class SwDrawFormShell: public SwDrawBaseShell
+{
+public:
+ SFX_DECL_INTERFACE(SW_DRAWFORMSHELL);
+ TYPEINFO();
+
+ SwDrawFormShell(SwView &rView);
+ virtual ~SwDrawFormShell();
+
+ void Execute(SfxRequest &);
+ void GetState(SfxItemSet &);
+};
+
+#endif
diff --git a/sw/source/ui/inc/drpcps.hxx b/sw/source/ui/inc/drpcps.hxx
new file mode 100644
index 000000000000..e239fbbfb9cc
--- /dev/null
+++ b/sw/source/ui/inc/drpcps.hxx
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * $RCSfile: drpcps.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _DRPCPS_HXX
+#define _DRPCPS_HXX
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+class SwWrtShell;
+
+// class SwDropCapsDlg ******************************************************
+
+class SwDropCapsDlg : public SfxSingleTabDialog
+{
+
+public:
+
+ SwDropCapsDlg(Window *pParent, const SfxItemSet &rSet );
+ ~SwDropCapsDlg();
+
+};
+
+class SwDropCapsPict;
+
+// class SwDropCapsPage *****************************************************
+
+class SwDropCapsPage : public SfxTabPage
+{
+friend class SwDropCapsPict;
+
+ CheckBox aDropCapsBox;
+ CheckBox aWholeWordCB;
+ FixedText aSwitchText;
+ NumericField aDropCapsField;
+ FixedText aLinesText;
+ NumericField aLinesField;
+ FixedText aDistanceText;
+ MetricField aDistanceField;
+ GroupBox aSettingsGroup;
+
+ FixedText aTextText;
+ Edit aTextEdit;
+ FixedText aTemplateText;
+ ListBox aTemplateBox;
+ GroupBox aContentBox;
+
+ SwDropCapsPict *pPict;
+ GroupBox aPictBox;
+
+ BOOL bModified;
+ BOOL bFormat;
+ BOOL bHtmlMode;
+
+ SwWrtShell &rSh;
+
+ SwDropCapsPage(Window *pParent, const SfxItemSet &rSet);
+ ~SwDropCapsPage();
+
+ virtual int DeactivatePage(SfxItemSet *pSet);
+ void FillSet( SfxItemSet &rSet );
+
+ DECL_LINK( ClickHdl, Button * );
+ DECL_LINK( ModifyHdl, Edit * );
+ DECL_LINK( SelectHdl, ListBox * );
+ DECL_LINK( WholeWordHdl, CheckBox * );
+
+public:
+
+ static SfxTabPage *Create(Window *pParent, const SfxItemSet &rSet);
+ static USHORT* GetRanges();
+
+ virtual BOOL FillItemSet( SfxItemSet &rSet);
+ virtual void Reset (const SfxItemSet &rSet);
+
+ void SetFormat(BOOL bSet){bFormat = bSet;}
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/drwbassh.hxx b/sw/source/ui/inc/drwbassh.hxx
new file mode 100644
index 000000000000..54d83432ab7f
--- /dev/null
+++ b/sw/source/ui/inc/drwbassh.hxx
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
+ * $RCSfile: drwbassh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWDRWBASSH_HXX
+#define _SWDRWBASSH_HXX
+
+#include "basesh.hxx"
+
+class SwWrtShell;
+class SwView;
+class SfxItemSet;
+class SwDrawBase;
+
+class SwDrawBaseShell: public SwBaseShell
+{
+ SwDrawBase* pDrawActual;
+
+ UINT16 eDrawMode;
+ BOOL bRotate : 1;
+ BOOL bSelMove: 1;
+
+public:
+ SwDrawBaseShell(SwView &rShell);
+ virtual ~SwDrawBaseShell();
+
+ SFX_DECL_INTERFACE(SW_DRAWBASESHELL);
+ TYPEINFO();
+
+ void Execute(SfxRequest &);
+ void GetState(SfxItemSet &);
+ void DisableState(SfxItemSet &rSet) { Disable(rSet);}
+ BOOL Disable(SfxItemSet& rSet, USHORT nWhich = 0);
+
+ void StateStatusline(SfxItemSet &rSet);
+
+/* SwDrawBase* GetDrawFuncPtr() { return (pDrawActual); }
+ void SetDrawFuncPtr(SwDrawBase* pFuncPtr);
+ UINT16 GetDrawMode() { return (eDrawMode); }
+ void SetDrawMode(UINT16 eDrwMode) { eDrawMode = eDrwMode; }
+*/
+};
+
+
+#endif
diff --git a/sw/source/ui/inc/drwtxtsh.hxx b/sw/source/ui/inc/drwtxtsh.hxx
new file mode 100644
index 000000000000..0f9ba8ea6d98
--- /dev/null
+++ b/sw/source/ui/inc/drwtxtsh.hxx
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * $RCSfile: drwtxtsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWDRWTXTSH_HXX
+#define _SWDRWTXTSH_HXX
+
+
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+#include "shellid.hxx"
+
+class OutlinerView;
+class SdrOutliner;
+class SdrView;
+class SwView;
+class SfxModule;
+class SwWrtShell;
+
+class SwDrawTextShell: public SfxShell
+{
+ SwView &rView;
+
+ SdrView *pSdrView;
+ OutlinerView*pOLV;
+ SdrOutliner *pOutliner;
+
+ BOOL bRotate : 1;
+ BOOL bSelMove: 1;
+
+ void SetAttrToMarked(const SfxItemSet& rAttr);
+ void InsertSymbol();
+ BOOL IsTextEdit();
+public:
+ SFX_DECL_INTERFACE(SW_DRWTXTSHELL);
+ TYPEINFO();
+
+ SwView &GetView() { return rView; }
+ SwWrtShell &GetShell();
+
+ SwDrawTextShell(SwView &rView);
+ virtual ~SwDrawTextShell();
+
+ void StateDisableItems(SfxItemSet &);
+
+ void Execute(SfxRequest &);
+ void ExecDraw(SfxRequest &);
+ void GetState(SfxItemSet &);
+ void GetDrawTxtCtrlState(SfxItemSet&);
+
+ void ExecFontWork(SfxRequest& rReq);
+ void StateFontWork(SfxItemSet& rSet);
+ void ExecFormText(SfxRequest& rReq);
+ void GetFormTextState(SfxItemSet& rSet);
+ void ExecDrawLingu(SfxRequest &rReq);
+ void ExecUndo(SfxRequest &rReq);
+ void StateUndo(SfxItemSet &rSet);
+ void ExecClpbrd(SfxRequest &rReq);
+ void StateClpbrd(SfxItemSet &rSet);
+ void StateInsert(SfxItemSet &rSet);
+
+ void Init();
+ void StateStatusline(SfxItemSet &rSet);
+};
+
+#endif
diff --git a/sw/source/ui/inc/dselect.hxx b/sw/source/ui/inc/dselect.hxx
new file mode 100644
index 000000000000..5fcb53b64a96
--- /dev/null
+++ b/sw/source/ui/inc/dselect.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: dselect.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SW_DSELECT_HXX
+#define _SW_DSELECT_HXX
+
+#include "drawbase.hxx"
+
+/*************************************************************************
+|*
+|* Rechteck zeichnen
+|*
+\************************************************************************/
+
+class DrawSelection : public SwDrawBase
+{
+ public:
+ DrawSelection(SwWrtShell* pSh, SwEditWin* pWin, SwView* pView);
+
+ // Mouse- & Key-Events
+ virtual BOOL KeyInput(const KeyEvent& rKEvt);
+
+ virtual void Activate(const USHORT nSlotId); // Function aktivieren
+};
+
+
+
+#endif // _SW_DSELECT_HXX
+
diff --git a/sw/source/ui/inc/edtwin.hxx b/sw/source/ui/inc/edtwin.hxx
new file mode 100644
index 000000000000..5f631cdad10b
--- /dev/null
+++ b/sw/source/ui/inc/edtwin.hxx
@@ -0,0 +1,304 @@
+/*************************************************************************
+ *
+ * $RCSfile: edtwin.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _EDTWIN_HXX
+#define _EDTWIN_HXX
+
+#ifndef _LINK_HXX //autogen
+#include <tools/link.hxx>
+#endif
+#ifndef _TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+#ifndef _WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+#ifndef _SOT_EXCHANGE_HXX //autogen
+#include <sot/exchange.hxx>
+#endif
+#ifndef _SWEVENT_HXX
+#include <swevent.hxx>
+#endif
+
+#define _SVSTDARR_STRINGSISORTDTOR
+#include <svtools/svstdarr.hxx>
+
+class SwWrtShell;
+class SwView;
+class SwRect;
+class SwDrawBase;
+class ViewShell;
+class SwAnchorMarker;
+class SdrViewUserMarker;
+class SdrObject;
+class SwShadowCursor;
+class DataChangedEvent;
+
+struct SwApplyTemplate;
+struct QuickHelpData;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Eingabe-Fenster
+ --------------------------------------------------------------------*/
+
+class SwEditWin: public Window
+{
+friend void ScrollMDI(ViewShell* pVwSh, const SwRect&,
+ USHORT nRangeX, USHORT nRangeY);
+friend BOOL IsScrollMDI(ViewShell* pVwSh, const SwRect&);
+
+friend void SizeNotify(ViewShell* pVwSh, const Size &);
+
+friend void PageNumNotify( ViewShell* pVwSh,
+ USHORT nPhyNum,
+ USHORT nVirtNum,
+ const String& rPg );
+
+ static QuickHelpData* pQuickHlpData;
+
+ static BOOL bReplaceQuote;
+ static long nDDStartPosX, nDDStartPosY;
+
+ static Color aTextColor; //Textfarbe, fuer die Giesskanne
+ static BOOL bTransparentBackColor; // Hintergrund transparent
+ static Color aTextBackColor; //Texthintergrundfarbe, fuer die Giesskanne
+
+ /*
+ * Timer und Handler fuer das Weiterscrollen, wenn der
+ * Mauspointer innerhalb eines Drag-Vorgangs ausserhalb des
+ * EditWin stehen bleibt. In regelmaessigen Intervallen wird
+ * die Selektion in Richtung der Mausposition vergroessert.
+ */
+ AutoTimer aTimer;
+ // Timer fuer verschachtelte KeyInputs (z.B. fuer Tabellen)
+ Timer aKeyInputTimer;
+ // timer for ANY-KeyInut question without a following KeyInputEvent
+ Timer aKeyInputFlushTimer;
+
+ String aInBuffer;
+ Point aStartPos;
+ Point aMovePos;
+ Point aRszMvHdlPt;
+ Timer aTemplateTimer;
+
+ // Type/Objecte ueber dem der MousePointer steht
+ SwCallMouseEvent aSaveCallEvent;
+
+ SwApplyTemplate *pApplyTempl;
+ SwAnchorMarker *pAnchorMarker; // zum Verschieben eines Ankers
+
+ SdrViewUserMarker *pUserMarker;
+ SdrObject *pUserMarkerObj;
+ SwShadowCursor *pShadCrsr;
+
+ SwView &rView;
+
+ int aActHitType; // aktueller Mauspointer
+
+ ULONG nDropFormat; //Format aus dem letzten QueryDrop
+ USHORT nDropAction; //Action aus dem letzten QueryDrop
+ USHORT nDropDestination; //Ziel aus dem letzten QueryDrop
+
+ UINT16 eDrawMode;
+ UINT16 eBezierMode;
+ UINT16 nInsFrmColCount; //Spaltenzahl fuer interaktiven Rahmen
+ BOOL bLinkRemoved : 1,
+ bMBPressed : 1,
+ bInsDraw : 1,
+ bInsFrm : 1,
+ bGrfToOle : 1, //Grf to Sim, fuer den Rueckweg.
+ bIsInMove : 1,
+ bIsInDrag : 1, //StartExecuteDrag nich doppelt ausfuehren
+ bOldIdle : 1, //Zum abschalten des Idle'ns
+ bOldIdleSet : 1, //waehrend QeueryDrop
+ bTblInsDelMode : 1, //
+ bTblIsInsMode : 1, //
+ bTblIsColMode : 1, //
+ bChainMode : 1, //Rahmen verbinden
+ bWasShdwCrsr : 1, //ShadowCrsr war im MouseButtonDown an
+ bLockInput : 1; //Lock waehrend die Rechenleiste aktiv ist
+
+
+ void LeaveArea(const Point &);
+ void JustifyAreaTimer();
+ inline void EnterArea();
+
+ void RstMBDownFlags();
+
+ void ChangeFly( BYTE nDir, BOOL bWeb = FALSE );
+
+ BOOL EnterDrawMode(const MouseEvent& rMEvt, const Point& aDocPos);
+ BOOL RulerClook( SwView& , const MouseEvent& rMEvt);
+
+ //Hilfsfunktionen fuer D&D
+ void DropCleanup();
+ void CleanupDropUserMarker();
+
+
+ /*
+ * Handler fuer das Weiterscrollen, wenn der Mauspointer innerhalb eines
+ * Drag-Vorgangs ausserhalb des EditWin stehen bleibt. In regelmaessigen
+ * Intervallen wird die Selektion in Richtung der Mausposition
+ * vergroessert.
+ */
+ DECL_LINK( TimerHandler, Timer * );
+ void StartDDTimer();
+ void StopDDTimer(SwWrtShell *, const Point &);
+ DECL_LINK( DDHandler, Timer * );
+
+ // timer for ANY-KeyInut question without a following KeyInputEvent
+ DECL_LINK( KeyInputFlushHandler, Timer * );
+
+ // Timer fuer verschachtelte KeyInputs (z.B. fuer Tabellen)
+ DECL_LINK( KeyInputTimerHandler, Timer * );
+
+ // Timer fuer das ApplyTemplates per Maus (verkapptes Drag&Drop)
+ DECL_LINK( TemplateTimerHdl, Timer* );
+
+protected:
+
+ virtual void DataChanged( const DataChangedEvent& );
+ virtual void Paint( const Rectangle& rRect );
+ virtual void KeyInput(const KeyEvent &rKEvt);
+
+ virtual void GetFocus();
+ virtual void LoseFocus();
+
+
+ virtual void MouseMove(const MouseEvent& rMEvt);
+ virtual void MouseButtonDown(const MouseEvent& rMEvt);
+ virtual void MouseButtonUp(const MouseEvent& rMEvt);
+ virtual void RequestHelp(const HelpEvent& rEvt);
+
+ virtual void Command( const CommandEvent& rCEvt );
+
+ virtual BOOL Drop(const DropEvent& rEvt);
+ virtual BOOL QueryDrop( DropEvent& rEvt);
+
+public:
+
+
+ void OleToGrf();
+ void GrfToOle();
+
+ void UpdatePointer(const Point &, USHORT nButtons = 0);
+
+ BOOL IsDrawSelMode();
+ BOOL IsDrawAction() { return (bInsDraw); }
+ void SetDrawAction(BOOL bFlag) { bInsDraw = bFlag; }
+ inline UINT16 GetDrawMode(BOOL bBuf = FALSE) const { return eDrawMode; }
+ inline void SetDrawMode(UINT16 eDrwMode) { eDrawMode = eDrwMode; }
+ void StdDrawMode(USHORT nSlotId);
+ BOOL IsFrmAction() { return (bInsFrm); }
+ inline UINT16 GetBezierMode() { return eBezierMode; }
+ void SetBezierMode(UINT16 eBezMode) { eBezierMode = eBezMode; }
+ void EnterDrawTextMode(const Point& aDocPos); // DrawTextEditMode einschalten
+ void InsFrm(USHORT nCols);
+ void StopInsFrm();
+ UINT16 GetFrmColCount() const {return nInsFrmColCount;} //Spaltenzahl fuer interaktiven Rahmen
+
+
+ void SetChainMode( BOOL bOn );
+ BOOL IsChainMode() const { return bChainMode; }
+
+ void FlushInBuffer( SwWrtShell *pSh );
+
+ static void SetReplaceQuote(BOOL bOn = TRUE) { bReplaceQuote = bOn; }
+ static BOOL IsReplaceQuote() { return bReplaceQuote; }
+
+ void SetApplyTemplate(const SwApplyTemplate &);
+ SwApplyTemplate* GetApplyTemplate() const { return pApplyTempl; }
+
+ void StartExecuteDrag();
+ USHORT GetDropAction() const { return nDropAction; }
+ ULONG GetDropFormat() const { return nDropFormat; }
+
+ Color GetTextColor() { return aTextColor; }
+ void SetTextColor(const Color& rCol ) { aTextColor = rCol; }
+
+ Color GetTextBackColor()
+ { return aTextBackColor; }
+ void SetTextBackColor(const Color& rCol )
+ { aTextBackColor = rCol; }
+ void SetTextBackColorTransparent(BOOL bSet)
+ { bTransparentBackColor = bSet; }
+ BOOL IsTextBackColorTransparent()
+ { return bTransparentBackColor; }
+ void LockKeyInput(BOOL bSet){bLockInput = bSet;}
+
+ const SwView &GetView() const { return rView; }
+ SwView &GetView() { return rView; }
+
+ // Tipfenster loeschen
+ static void ClearTip();
+
+ static inline long GetDDStartPosX() { return nDDStartPosX; }
+ static inline long GetDDStartPosY() { return nDDStartPosY; }
+
+ static void _InitStaticData();
+ static void _FinitStaticData();
+
+ SwEditWin(Window *pParent, SwView &);
+ virtual ~SwEditWin();
+};
+
+
+#endif
+
diff --git a/sw/source/ui/inc/envimg.hxx b/sw/source/ui/inc/envimg.hxx
new file mode 100644
index 000000000000..e6f7ea7933ef
--- /dev/null
+++ b/sw/source/ui/inc/envimg.hxx
@@ -0,0 +1,138 @@
+/*************************************************************************
+ *
+ * $RCSfile: envimg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ENVIMG_HXX
+#define _ENVIMG_HXX
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef _SFXCFGITEM_HXX //autogen
+#include <sfx2/cfgitem.hxx>
+#endif
+
+
+// enum -----------------------------------------------------------------------
+
+enum SwEnvAlign
+{
+ ENV_HOR_LEFT = 0,
+ ENV_HOR_CNTR,
+ ENV_HOR_RGHT,
+ ENV_VER_LEFT,
+ ENV_VER_CNTR,
+ ENV_VER_RGHT
+};
+
+// class SwEnvItem ------------------------------------------------------------
+
+class SwEnvItem : public SfxPoolItem
+{
+public:
+
+ String aAddrText; // Text fuer Empfaenger
+ BOOL bSend; // Absender?
+ String aSendText; // Text fuer Absender
+ long lAddrFromLeft; // Linker Abstand fuer Empfaenger (twips)
+ long lAddrFromTop; // Oberer Abstand fuer Empfaenger (twips)
+ long lSendFromLeft; // Linker Abstand fuer Absender (twips)
+ long lSendFromTop; // Oberer Abstand fuer Absender (twips)
+ long lWidth; // Breite des Umschlags (twips)
+ long lHeight; // Hoehe des Umschlags (twips)
+ SwEnvAlign eAlign; // Ausrichtung beim Einzug
+ BOOL bPrintFromAbove; // Von oben drucken?
+ long lShiftRight; // Verschiebung nach rechts (twips)
+ long lShiftDown; // Verschiebung nach unten (twips)
+ String aSlot; // Druckerschacht
+
+ SwEnvItem();
+ SwEnvItem(const SwEnvItem& rItem);
+
+ SwEnvItem& operator =(const SwEnvItem& rItem);
+
+ virtual int operator ==(const SfxPoolItem& rItem) const;
+
+ virtual SfxPoolItem* Clone(SfxItemPool* = 0) const;
+};
+
+// class SwEnvCfgItem -------------------------------------------------------
+
+class SwEnvCfgItem : public SfxConfigItem
+{
+protected:
+
+ virtual int Load (SvStream& rStrm);
+ virtual BOOL Store(SvStream& rStrm);
+ virtual void UseDefault();
+
+public:
+ SwEnvItem aEnvItem;
+ SwEnvCfgItem();
+
+ virtual String GetName() const;
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/envlop.hxx b/sw/source/ui/inc/envlop.hxx
new file mode 100644
index 000000000000..e27815d453f5
--- /dev/null
+++ b/sw/source/ui/inc/envlop.hxx
@@ -0,0 +1,181 @@
+/*************************************************************************
+ *
+ * $RCSfile: envlop.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ENVLOP_HXX
+#define _ENVLOP_HXX
+
+#ifdef VCL
+#ifndef _SV_MEDIT_HXX
+#include <svtools/svmedit.hxx>
+#endif
+#endif
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.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 _IMAGEBTN_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#include "envimg.hxx"
+
+#define GetFldVal(rField) (rField).Denormalize((rField).GetValue(FUNIT_TWIP))
+#define SetFldVal(rField, lValue) (rField).SetValue((rField).Normalize(lValue), FUNIT_TWIP)
+
+class SwEnvPage;
+class SwEnvFmtPage;
+class SwWrtShell;
+class Printer;
+
+// class SwEnvPreview ---------------------------------------------------------
+
+class SwEnvPreview : public Window
+{
+ void Paint(const Rectangle&);
+
+public:
+
+ SwEnvPreview(SfxTabPage* pParent, const ResId& rResID);
+ ~SwEnvPreview();
+};
+
+// class SwEnvDlg -----------------------------------------------------------
+
+class SwEnvDlg : public SfxTabDialog
+{
+friend class SwEnvPage;
+friend class SwEnvFmtPage;
+friend class SwEnvPrtPage;
+friend class SwEnvPreview;
+
+ String sInsert;
+ String sChange;
+ SwEnvItem aEnvItem;
+ SwWrtShell *pSh;
+ Printer *pPrinter;
+ SfxItemSet *pAddresseeSet;
+ SfxItemSet *pSenderSet;
+
+ virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
+ virtual short Ok();
+
+public:
+ SwEnvDlg(Window* pParent, const SfxItemSet& rSet, SwWrtShell* pWrtSh, Printer* pPrt, BOOL bInsert);
+ ~SwEnvDlg();
+};
+
+// class SwEnvPage ----------------------------------------------------------
+
+class SwEnvPage : public SfxTabPage
+{
+ FixedText aAddrText;
+ MultiLineEdit aAddrEdit;
+ FixedText aDatabaseFT;
+ ListBox aDatabaseLB;
+ FixedText aTableFT;
+ ListBox aTableLB;
+ ImageButton aInsertBT;
+ FixedText aDBFieldFT;
+ ListBox aDBFieldLB;
+ CheckBox aSenderBox;
+ MultiLineEdit aSenderEdit;
+ SwEnvPreview aPreview;
+
+ SwWrtShell* pSh;
+ String sActDBName;
+
+ SwEnvPage(Window* pParent, const SfxItemSet& rSet);
+ ~SwEnvPage();
+
+ DECL_LINK( DatabaseHdl, ListBox * );
+ DECL_LINK( FieldHdl, Button * );
+ DECL_LINK( SenderHdl, Button * );
+
+ void InitDatabaseBox();
+
+ SwEnvDlg* GetParent() {return (SwEnvDlg*) SfxTabPage::GetParent()->GetParent();}
+
+public:
+
+ static SfxTabPage* Create(Window* pParent, const SfxItemSet& rSet);
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet* pSet = 0);
+ void FillItem(SwEnvItem& rItem);
+ virtual BOOL FillItemSet(SfxItemSet& rSet);
+ virtual void Reset(const SfxItemSet& rSet);
+};
+
+#endif
+
+
diff --git a/sw/source/ui/inc/fldedt.hxx b/sw/source/ui/inc/fldedt.hxx
new file mode 100644
index 000000000000..610635dd3d06
--- /dev/null
+++ b/sw/source/ui/inc/fldedt.hxx
@@ -0,0 +1,108 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldedt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FLDEDT_HXX
+#define _FLDEDT_HXX
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+class Window;
+class SfxItemSet;
+class SwView;
+class SwWrtShell;
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SwFldEditDlg : public SfxSingleTabDialog
+{
+ SwWrtShell* pSh;
+ ImageButton aPrevBT;
+ ImageButton aNextBT;
+ PushButton aAddressBT;
+
+ DECL_LINK( AddressHdl, PushButton *pBt = 0 );
+ DECL_LINK( NextPrevHdl, Button *pBt = 0 );
+
+ void Init();
+ SfxTabPage* CreatePage(USHORT nGroup);
+
+public:
+
+ SwFldEditDlg(SwView& rVw);
+ ~SwFldEditDlg();
+
+ DECL_LINK( OKHdl, Button * );
+
+ virtual short Execute();
+
+ void EnableInsert(BOOL bEnable);
+ void InsertHdl();
+};
+
+
+#endif
diff --git a/sw/source/ui/inc/fldmgr.hxx b/sw/source/ui/inc/fldmgr.hxx
new file mode 100644
index 000000000000..31d043dbe2a0
--- /dev/null
+++ b/sw/source/ui/inc/fldmgr.hxx
@@ -0,0 +1,273 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldmgr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FLDMGR_HXX
+#define _FLDMGR_HXX
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#include "swtypes.hxx"
+
+#ifdef REPLACE_OFADBMGR
+#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
+#include <com/sun/star/uno/Reference.h>
+#endif
+namespace com{namespace sun{namespace star{namespace container{
+ class XNameAccess;
+}}}}
+#else
+#endif
+
+class SwWrtShell;
+class SwField;
+class SwFieldType;
+class SwFmtRefMark;
+class SbModule;
+class SvxMacroItem;
+class ListBox;
+class SvNumberFormatter;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Shell setzen auf der der SwFldMgr arbeitet
+ --------------------------------------------------------------------*/
+
+void SetFldMgrShell(SwWrtShell* pSh);
+
+/*--------------------------------------------------------------------
+ Beschreibung: Die Gruppen von Feldern
+ --------------------------------------------------------------------*/
+
+enum SwFldGroups
+{
+ GRP_DOC,
+ GRP_FKT,
+ GRP_REF,
+ GRP_REG,
+ GRP_DB,
+ GRP_VAR
+};
+
+struct SwFldGroupRgn
+{
+ USHORT nStart;
+ USHORT nEnd;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Der FeldManager handelt das Einfuegen von Felder
+ ueber Command-Strings
+ --------------------------------------------------------------------*/
+
+class SwFldMgr
+{
+private:
+ SvStringsDtor aSubLst;
+
+ SwField* pCurFld;
+ SbModule* pModule;
+ const SvxMacroItem* pMacroItem;
+ SwWrtShell* pWrtShell; // darf auch NULL sein!
+ String aCurPar1;
+ String aCurPar2;
+ String sCurFrame;
+
+ String sMacroPath;
+
+ ULONG nCurFmt;
+ BOOL bEvalExp;
+
+ USHORT GetCurrLanguage() const;
+
+#ifdef REPLACE_OFADBMGR
+ com::sun::star::uno::Reference<com::sun::star::container::XNameAccess> xDBContext;
+
+ com::sun::star::uno::Reference<com::sun::star::container::XNameAccess> GetDBContext();
+#endif
+
+public:
+ SwFldMgr(SwWrtShell* pSh = 0);
+ ~SwFldMgr();
+
+ // Feld einfuegen ueber TypeId (TYP_ ...)
+ BOOL InsertFld( USHORT nTypeId,
+ USHORT nSubType,
+ const String& rPar1,
+ const String& rPar2,
+ ULONG nFormatId,
+ SwWrtShell* pSh = NULL,
+ sal_Unicode cSeparator = ' ');
+
+ BOOL InsertURL( const String& rName,
+ const String& rVal,
+ const String& rFrame,
+ const SvxMacroItem* pItem = 0);
+
+ // Direkt das aktuelle Feld aendern
+ void UpdateCurFld(ULONG nFormat,
+ const String& rPar1,
+ const String& rPar2);
+
+ inline const String& GetCurFldPar1() const;
+ inline const String& GetCurFldPar2() const;
+ inline const ULONG GetCurFldFmt() const;
+
+ // Ein Feld ermitteln
+ SwField* GetCurFld();
+
+ // Zugriff auf Feldtypen
+ void RemoveDBTypes();
+ void InsertFldType(SwFieldType& rType);
+
+ BOOL ChooseMacro(const String &rSelMacro = aEmptyStr);
+ inline void SetMacroPath(const String& rPath) { sMacroPath = rPath; }
+ inline const String& GetMacroPath() const { return (sMacroPath); }
+ inline void SetMacroModule(SbModule* pMod) { pModule = pMod; }
+
+ // Vorheriger Naechster gleichen Typ
+ BOOL GoNextPrev( BOOL bNext = TRUE, SwFieldType* pTyp = 0 );
+ BOOL GoNext( SwFieldType* pTyp = 0 ) { return GoNextPrev( TRUE, pTyp ); }
+ BOOL GoPrev( SwFieldType* pTyp = 0 ) { return GoNextPrev( FALSE, pTyp ); }
+
+ // Setzen von Werten aus Benutzerfeldern (BASIC)
+ //
+ BOOL SetFieldValue(const String &rFieldName,
+ const String &rValue);
+
+ // Erfragen von Werten aus Datenbankfeldern (BASIC )
+ String GetDataBaseFieldValue(const String &rDBName, const String &rFieldName, SwWrtShell* pSh);
+#ifdef REPLACE_OFADBMGR
+ BOOL IsDBNumeric(const String& rDBName, const String& rTblQryName,
+ BOOL bIsTable, const String& rFldName);
+#else
+ BOOL IsDBNumeric(const String& rDBName, USHORT nColumn);
+ BOOL IsDBNumeric(const String& rDBName, const String& rFldName);
+#endif
+
+ // RefMark mit Namen organisieren
+ BOOL CanInsertRefMark( const String& rStr );
+
+
+ // Zugriff ueber ResId auf Feldtypen
+ USHORT GetFldTypeCount(USHORT nResId = USHRT_MAX) const;
+ SwFieldType* GetFldType(USHORT nResId, USHORT nId = 0) const;
+ SwFieldType* GetFldType(USHORT nResId, const String& rName) const;
+
+ void RemoveFldType(USHORT nResId, USHORT nId = 0);
+ void RemoveFldType(USHORT nResId, const String& rName);
+
+ // Zugriff ueber TypeId aus dem Dialog
+ // Ids fuer einen Bereich von Feldern
+ const SwFldGroupRgn& GetGroupRange(BOOL bHtmlMode, USHORT nGrpId) const;
+ USHORT GetGroup(BOOL bHtmlMode, USHORT nTypeId, USHORT nSubType = 0) const;
+
+ // TypeId des aktuellen Feldes
+ USHORT GetCurTypeId() const;
+ // TypeId fuer einen konkrete Pos in der Liste
+ USHORT GetTypeId(USHORT nPos) const;
+ // Name des Typen in der Liste der Felder
+ const String& GetTypeStr(USHORT nPos) const;
+
+ // Pos in der Liste der Felder
+ USHORT GetPos(USHORT nTypeId) const;
+
+ // Untertypen zu einem Typ
+ SvStringsDtor& GetSubTypes(USHORT nId);
+
+ BOOL SetUserSubType(const String& rName, USHORT nSubType);
+
+ // Formate zu einem Typ
+ USHORT GetFormatCount(USHORT nTypeId, BOOL bIsText, BOOL bHtmlMode = FALSE) const;
+ String GetFormatStr(USHORT nTypeId, ULONG nFormatId) const;
+ USHORT GetFormatId(USHORT nTypeId, ULONG nFormatId) const;
+ ULONG GetDefaultFormat(USHORT nTypeId, BOOL bIsText, SvNumberFormatter* pFormatter, double* pVal = 0L);
+
+ // Evaluierung der ExpressionFelder ausschalten fuer das Einfuegen
+ // vieler Expressionfelder (siehe Etiketten)
+ //
+ inline void SetEvalExpFlds(BOOL bEval);
+ void EvalExpFlds(SwWrtShell* pSh = NULL);
+
+ // public, damit sie im fldini initialisiert werden koennen.
+ static String *pDate, *pTime;
+
+};
+
+inline void SwFldMgr::SetEvalExpFlds(BOOL bEval)
+ { bEvalExp = bEval; }
+
+inline const String& SwFldMgr::GetCurFldPar1() const
+ { return aCurPar1; }
+
+inline const String& SwFldMgr::GetCurFldPar2() const
+ { return aCurPar2; }
+
+inline const ULONG SwFldMgr::GetCurFldFmt() const
+ { return nCurFmt; }
+
+
+#endif
+
diff --git a/sw/source/ui/inc/fldwrap.hxx b/sw/source/ui/inc/fldwrap.hxx
new file mode 100644
index 000000000000..4784d04265cf
--- /dev/null
+++ b/sw/source/ui/inc/fldwrap.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: fldwrap.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:39 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FLDWRAP_HXX
+#define _FLDWRAP_HXX
+
+#include "chldwrap.hxx"
+
+class SwFldDlgWrapper : public SwChildWinWrapper
+{
+public:
+ SwFldDlgWrapper( Window* pParent, USHORT nId,
+ SfxBindings* pBindings, SfxChildWinInfo* pInfo );
+
+ SFX_DECL_CHILDWINDOW(SwFldDlgWrapper);
+
+ virtual BOOL ReInitDlg(SwDocShell *pDocSh);
+ void ShowPage(USHORT nPage = 0);
+};
+
+
+#endif
+
diff --git a/sw/source/ui/inc/fontcfg.hxx b/sw/source/ui/inc/fontcfg.hxx
new file mode 100644
index 000000000000..5e83b605d7d9
--- /dev/null
+++ b/sw/source/ui/inc/fontcfg.hxx
@@ -0,0 +1,154 @@
+/*************************************************************************
+ *
+ * $RCSfile: fontcfg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FONTCFG_HXX
+#define _FONTCFG_HXX
+
+#ifndef _UTL_CONFIGITEM_HXX_
+#include <unotools/configitem.hxx>
+#endif
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+#define FONT_STANDARD 0
+#define FONT_OUTLINE 1
+#define FONT_LIST 2
+#define FONT_CAPTION 3
+#define FONT_INDEX 4
+
+class SwStdFontConfig : public utl::ConfigItem
+{
+ String sFontStandard;
+ String sFontOutline ;
+ String sFontList ;
+ String sFontCaption ;
+ String sFontIndex ;
+
+ com::sun::star::uno::Sequence<rtl::OUString> GetPropertyNames();
+
+public:
+ SwStdFontConfig();
+ ~SwStdFontConfig();
+
+ virtual void Commit();
+
+ const String& GetFontStandard() const {return sFontStandard ;}
+ const String& GetFontOutline() const {return sFontOutline ;}
+ const String& GetFontList () const {return sFontList ;}
+ const String& GetFontCaption() const {return sFontCaption ;}
+ const String& GetFontIndex () const {return sFontIndex ;}
+
+ BOOL IsFontDefault(USHORT nFontType) const;
+
+ inline void SetFontStandard(const String& rSet);
+ inline void SetFontOutline(const String& rSet);
+ inline void SetFontList (const String& rSet);
+ inline void SetFontCaption(const String& rSet);
+ inline void SetFontIndex (const String& rSet);
+
+ static String GetDefaultFor(USHORT nFontType);
+};
+
+inline void SwStdFontConfig::SetFontStandard (const String& rSet)
+{
+ if( sFontStandard != rSet)
+ {
+ SetModified();
+ sFontStandard = rSet;
+ }
+}
+inline void SwStdFontConfig::SetFontOutline(const String& rSet)
+{
+ if( sFontOutline != rSet)
+ {
+ SetModified();
+ sFontOutline = rSet;
+ }
+}
+inline void SwStdFontConfig::SetFontList (const String& rSet)
+{
+ if(sFontList != rSet)
+ {
+ SetModified();
+ sFontList = rSet;
+ }
+}
+
+inline void SwStdFontConfig::SetFontCaption(const String& rSet)
+{
+ if(sFontCaption != rSet)
+ {
+ SetModified();
+ sFontCaption = rSet;
+ }
+}
+
+inline void SwStdFontConfig::SetFontIndex (const String& rSet)
+{
+ if(sFontIndex != rSet)
+ {
+ SetModified();
+ sFontIndex = rSet;
+ }
+}
+#endif
+
+
diff --git a/sw/source/ui/inc/formedt.hxx b/sw/source/ui/inc/formedt.hxx
new file mode 100644
index 000000000000..cccfb99b0c2f
--- /dev/null
+++ b/sw/source/ui/inc/formedt.hxx
@@ -0,0 +1,148 @@
+/*************************************************************************
+ *
+ * $RCSfile: formedt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FORMEDT_HXX
+#define _FORMEDT_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#include "toxe.hxx"
+
+class SwWrtShell;
+class SwForm;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Markierung fuer Verzeichniseintrag einfuegen
+ --------------------------------------------------------------------*/
+
+class SwIdxFormDlg : public SvxStandardDialog
+{
+ DECL_LINK( EntryHdl, Button * );
+ DECL_LINK( PageHdl, Button * );
+ DECL_LINK( TabHdl, Button * );
+ DECL_LINK( JumpHdl, Button * );
+ DECL_LINK( StdHdl, Button * );
+ DECL_LINK( SelectHdl, ListBox * );
+ DECL_LINK( EnableSelectHdl, ListBox * );
+ DECL_LINK( DoubleClickHdl, Button * );
+ DECL_LINK( ModifyHdl, Edit * );
+ DECL_LINK( AssignHdl, Button * );
+ void UpdatePattern();
+ void Apply();
+
+ ListBox aEntryLB;
+ OKButton aOKBtn;
+ CancelButton aCancelBT;
+ FixedText aLevelFT;
+ Edit aEntryED;
+ PushButton aEntryBT;
+ PushButton aTabBT;
+ PushButton aPageBT;
+ PushButton aJumpBT;
+ GroupBox aEntryGB;
+ FixedText aLevelFT2;
+ ListBox aLevelLB;
+ FixedText aTemplateFT;
+ ListBox aParaLayLB;
+ PushButton aStdBT;
+ PushButton aAssignBT;
+ GroupBox aFormatGB;
+
+ SwWrtShell &rSh;
+ SwForm *pForm;
+ USHORT nAktLevel;
+ BOOL bLastLinkIsEnd;
+
+public:
+ SwIdxFormDlg( Window* pParent, SwWrtShell &rShell, const SwForm& rForm );
+ ~SwIdxFormDlg();
+
+ static BOOL IsNoNum(SwWrtShell& rSh, const String& rName);
+ const SwForm& GetTOXForm();
+};
+
+inline const SwForm& SwIdxFormDlg::GetTOXForm()
+{
+ return *pForm;
+}
+
+#endif
diff --git a/sw/source/ui/inc/frmdlg.hxx b/sw/source/ui/inc/frmdlg.hxx
new file mode 100644
index 000000000000..aa12e64a2ac2
--- /dev/null
+++ b/sw/source/ui/inc/frmdlg.hxx
@@ -0,0 +1,102 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _FRMDLG_HXX
+#define _FRMDLG_HXX
+
+#include "globals.hrc"
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+class SwWrtShell;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Rahmendialog
+ --------------------------------------------------------------------*/
+
+class SwFrmDlg : public SfxTabDialog
+{
+ BOOL bFormat;
+ BOOL bNew;
+ const SfxItemSet& rSet;
+ USHORT nDlgType;
+ SwWrtShell* pWrtShell;
+
+
+ virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
+
+public:
+ SwFrmDlg( SfxViewFrame *pFrame, Window *pParent,
+ const SfxItemSet& rCoreSet,
+ BOOL bNewFrm = TRUE,
+ USHORT nResType = DLG_FRM_STD,
+ BOOL bFmt = FALSE,
+ UINT16 nDefPage = 0,
+ const String* pFmtStr = 0);
+
+ ~SwFrmDlg();
+
+ inline SwWrtShell* GetWrtShell() { return pWrtShell; }
+};
+
+
+#endif // _FRMDLG_HXX
diff --git a/sw/source/ui/inc/frmmgr.hxx b/sw/source/ui/inc/frmmgr.hxx
new file mode 100644
index 000000000000..f74092c7a840
--- /dev/null
+++ b/sw/source/ui/inc/frmmgr.hxx
@@ -0,0 +1,283 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmmgr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FRMMGR_HXX
+#define _FRMMGR_HXX
+
+#include "swtypes.hxx"
+#include "frmatr.hxx"
+
+#ifndef _SVX_SVXENUM_HXX //autogen
+#include <svx/svxenum.hxx>
+#endif
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+
+class SwWrtShell;
+struct SwFrmValid;
+
+class SwFmt;
+class SwFmtCol;
+
+const SwTwips DFLT_WIDTH = MM50 * 4;
+const SwTwips DFLT_HEIGHT = MM50;
+
+#define FULL_ATTRSET 0xffff
+
+#define FRMMGR_TYPE_NONE 0x00
+#define FRMMGR_TYPE_TEXT 0x01
+#define FRMMGR_TYPE_GRF 0x02
+#define FRMMGR_TYPE_OLE 0x04
+#define FRMMGR_TYPE_LABEL 0x08
+#define FRMMGR_TYPE_ENVELP 0x10
+
+class SwFlyFrmAttrMgr
+{
+ SfxItemSet aSet;
+ Point aAbsPos;
+ SwWrtShell *pOwnSh;
+
+ BOOL bAbsPos,
+ bNewFrm;
+
+ // interne Verrechnung fuer Umrandung
+ SwTwips CalcTopSpace();
+ SwTwips CalcBottomSpace();
+ SwTwips CalcLeftSpace();
+ SwTwips CalcRightSpace();
+
+ void _UpdateFlyFrm(); //Nacharbeit nach Einfuegen oder Update
+
+public:
+ SwFlyFrmAttrMgr( BOOL bNew, SwWrtShell* pSh, BYTE nType );
+
+ //CopyCtor fuer die Dialoge, zum Pruefen der Metrics
+ SwFlyFrmAttrMgr( BOOL bNew, SwWrtShell *pSh, const SfxItemSet &rSet );
+
+ inline SwWrtShell* GetShell() { return pOwnSh; }
+
+ void SetAnchor(RndStdIds eId);
+ inline RndStdIds GetAnchor() const;
+
+ void SetHorzOrientation(SwHoriOrient eOrient);
+ void SetVertOrientation(SvxFrameVertOrient eOrient);
+
+ // Absolute Position
+ void SetAbsPos(const Point& rLPoint);
+
+ // Relative Position vom Anker
+ void SetPos(const Point& rLPoint);
+ inline Point GetPos() const;
+
+ // Groesse
+ void SetSize(const Size& rLSize);
+ inline const Size& GetSize() const;
+ void SetFrmSize(const SwFmtFrmSize& rFrmSize);
+
+ inline USHORT GetHeightPercent() const;
+
+ void SetSizeType(SwFrmSize eType);
+
+ // Abstand zum Inhalt
+ void SetLRSpace( long nLeft = LONG_MAX,
+ long nRight = LONG_MAX );
+ void SetULSpace( long nTop = LONG_MAX,
+ long nBottom= LONG_MAX );
+
+ void SetWrapType(SwSurround eSurround);
+
+ void SetAnchorOnly(BOOL bSet);
+ void SetContour( BOOL bSet);
+ void SetTransparent(BOOL bTrans);
+
+ void ProtectPosSize(BOOL bProt);
+
+ void SetCol( const SwFmtCol &rCol);
+
+ // Attribute aendern und erfragen
+ void UpdateAttrMgr();
+ void UpdateFlyFrm();
+
+ // neuen Rahmen erzeugen
+ BOOL InsertFlyFrm();
+ void InsertFlyFrm(RndStdIds eAnchorType,
+ const Point &rPos,
+ const Size &rSize,
+ BOOL bAbsPos = FALSE);
+
+ // Metriken pruefen und aendern
+ void ValidateMetrics(SwFrmValid& rVal, BOOL bOnlyPercentRefValue = FALSE);
+
+ void DelAttr(USHORT nId);
+
+ // Set rausreichen
+ inline const SfxItemSet &GetAttrSet() const { return aSet; }
+ inline SfxItemSet &GetAttrSet() { return aSet; }
+ void SetAttrSet(const SfxItemSet& rSet);
+
+ inline const SwFmtVertOrient &GetVertOrient() const;
+ inline const SwFmtHoriOrient &GetHoriOrient() const;
+ inline const SvxShadowItem &GetShadow() const;
+ inline const SvxBoxItem &GetBox() const;
+ inline const SwFmtSurround &GetSurround() const;
+ inline const SwFmtFrmSize &GetFrmSize() const;
+
+ long CalcWidthSpace();
+ long CalcHeightSpace();
+
+ long CalcWidthBorder() { return CalcLeftSpace()+CalcRightSpace(); }
+ long CalcHeightBorder() { return CalcTopSpace()+CalcBottomSpace(); }
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Validierung von Metriken
+ --------------------------------------------------------------------*/
+
+struct SwFrmValid
+{
+ RndStdIds eArea;
+ SwHoriOrient eHori;
+ SvxFrameVertOrient eVert;
+ SwRelationOrient eHRel;
+ SwRelationOrient eVRel;
+ BOOL bAuto;
+ BOOL bMirror;
+
+ SwTwips nHPos;
+ SwTwips nMaxHPos;
+ SwTwips nMinHPos;
+
+ SwTwips nVPos;
+ SwTwips nMaxVPos;
+ SwTwips nMinVPos;
+
+ SwTwips nWidth;
+ SwTwips nMinWidth;
+ SwTwips nMaxWidth;
+
+ SwTwips nHeight;
+ SwTwips nMinHeight;
+ SwTwips nMaxHeight;
+
+ Size aPercentSize; // Size fuer 100%-Wert
+
+ SwFrmValid();
+};
+
+
+inline const Size& SwFlyFrmAttrMgr::GetSize() const
+{
+ return ((SwFmtFrmSize&)aSet.Get(RES_FRM_SIZE)).GetSize();
+}
+
+inline const SwFmtVertOrient &SwFlyFrmAttrMgr::GetVertOrient() const
+{
+ return ((SwFmtVertOrient&)aSet.Get(RES_VERT_ORIENT));
+}
+inline const SwFmtHoriOrient &SwFlyFrmAttrMgr::GetHoriOrient() const
+{
+ return ((SwFmtHoriOrient &)aSet.Get(RES_HORI_ORIENT));
+}
+inline const SwFmtFrmSize& SwFlyFrmAttrMgr::GetFrmSize() const
+{
+ return ((SwFmtFrmSize&)aSet.Get(RES_FRM_SIZE));
+}
+inline const SvxShadowItem &SwFlyFrmAttrMgr::GetShadow() const
+{
+ return ((SvxShadowItem&)aSet.Get(RES_SHADOW));
+}
+inline const SvxBoxItem &SwFlyFrmAttrMgr::GetBox() const
+{
+ return ((SvxBoxItem&)aSet.Get(RES_BOX));
+}
+inline const SwFmtSurround &SwFlyFrmAttrMgr::GetSurround() const
+{
+ return ((SwFmtSurround&)aSet.Get(RES_SURROUND));
+}
+
+inline Point SwFlyFrmAttrMgr::GetPos() const
+{
+ return Point( GetHoriOrient().GetPos(), GetVertOrient().GetPos() );
+}
+
+inline RndStdIds SwFlyFrmAttrMgr::GetAnchor() const
+{
+ return ((SwFmtAnchor&)aSet.Get(RES_ANCHOR)).GetAnchorId();
+}
+
+inline USHORT SwFlyFrmAttrMgr::GetHeightPercent() const
+{
+ return GetFrmSize().GetHeightPercent();
+}
+
+#endif
diff --git a/sw/source/ui/inc/frmpage.hxx b/sw/source/ui/inc/frmpage.hxx
new file mode 100644
index 000000000000..abb10de280d4
--- /dev/null
+++ b/sw/source/ui/inc/frmpage.hxx
@@ -0,0 +1,337 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmpage.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _FRMPAGE_HXX
+#define _FRMPAGE_HXX
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.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 _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _BMPWIN_HXX
+#include <bmpwin.hxx>
+#endif
+#ifndef _FRMEX_HXX
+#include <frmex.hxx>
+#endif
+#ifndef _PRCNTFLD_HXX
+#include <prcntfld.hxx>
+#endif
+
+class SvxImportGraphicDialog;
+class SwWrtShell;
+struct FrmMap;
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Rahmendialog
+ --------------------------------------------------------------------*/
+
+class SwFrmPage: public SfxTabPage
+{
+ // Size
+ FixedText aWidthFT;
+ PercentField aWidthED;
+ CheckBox aRelWidthCB;
+ FixedText aHeightFT;
+ PercentField aHeightED;
+ CheckBox aRelHeightCB;
+ CheckBox aFixedRatioCB;
+ CheckBox aAutoHeightCB;
+ GroupBox aSizeGB;
+ BOOL bWidthLastChanged;
+
+ // Anker
+ RadioButton aAnchorTypeRB;
+ RadioButton aAnchorAsCharRB;
+ ListBox aAnchorTypeLB;
+ GroupBox aTypeGB;
+
+ // Position
+ FixedText aHorizontalFT;
+ ListBox aHorizontalDLB;
+ FixedText aAtHorzPosFT;
+ MetricField aAtHorzPosED;
+ FixedText aHoriRelationFT;
+ ListBox aHoriRelationLB;
+ CheckBox aMirrorPagesCB;
+ FixedText aVerticalFT;
+ ListBox aVerticalDLB;
+ FixedText aAtVertPosFT;
+ MetricField aAtVertPosED;
+ FixedText aVertRelationFT;
+ ListBox aVertRelationLB;
+ GroupBox aPositionGB;
+ BOOL bAtHorzPosModified;
+ BOOL bAtVertPosModified;
+
+ PushButton aRealSizeBT;
+
+ // Example
+ SwFrmPagePreview aExampleWN;
+
+ BOOL bFormat;
+ BOOL bNew;
+ BOOL bHtmlMode;
+ BOOL bNoModifyHdl;
+ USHORT nHtmlMode;
+ USHORT nDlgType;
+ Size aGrfSize;
+ Size aWrap;
+ SwTwips nUpperBorder;
+ SwTwips nLowerBorder;
+
+ // Die alten Ausrichtungen
+ USHORT nOldH;
+ USHORT nOldHRel;
+ USHORT nOldV;
+ USHORT nOldVRel;
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet *pSet);
+
+
+ DECL_LINK( RangeModifyHdl, Edit * );
+ DECL_LINK( TypHdl, ListBox *pLB = 0 );
+ DECL_LINK( PosHdl, ListBox * );
+ DECL_LINK( RelHdl, ListBox * );
+ void InitPos(USHORT nId, USHORT nH, USHORT nHRel,
+ USHORT nV, USHORT nVRel,
+ long nX, long nY);
+
+ DECL_LINK( EditModifyHdl, Edit * );
+ DECL_LINK( AspectRatioCheckHdl, CheckBox * );
+ DECL_LINK( RealSizeHdl, Button * );
+ DECL_LINK( RelSizeClickHdl, CheckBox * );
+ DECL_LINK( MirrorHdl, CheckBox * );
+
+ DECL_LINK( ManualHdl, Button * );
+
+ // Beispiel aktualisieren
+ void UpdateExample();
+ DECL_LINK( ModifyHdl, Edit * );
+
+ void Init(const SfxItemSet& rSet, BOOL bReset = FALSE);
+ USHORT FillPosLB(FrmMap *pMap, USHORT nAlign, ListBox &rLB);
+ ULONG FillRelLB(FrmMap *pMap, USHORT nLBSelPos, USHORT nAlign, USHORT nRel, ListBox &rLB);
+ USHORT GetMapPos(FrmMap *pMap, ListBox &rAlignLB);
+ USHORT GetAlignment(FrmMap *pMap, USHORT nMapPos, ListBox &rAlignLB, ListBox &rRelationLB);
+ USHORT GetRelation(FrmMap *pMap, ListBox &rRelationLB);
+ USHORT GetAnchor();
+
+ SwFrmPage(Window *pParent, const SfxItemSet &rSet);
+ ~SwFrmPage();
+
+public:
+ static SfxTabPage *Create(Window *pParent, const SfxItemSet &rSet);
+ static USHORT* GetRanges();
+
+ virtual BOOL FillItemSet(SfxItemSet &rSet);
+ virtual void Reset(const SfxItemSet &rSet);
+
+ void SetNewFrame(BOOL bNewFrame) { bNew = bNewFrame; }
+ void SetFormatUsed(BOOL bFmt) { bFormat = bFmt; }
+ void SetFrmType(USHORT nType) { nDlgType = nType; }
+};
+
+class SwGrfExtPage: public SfxTabPage
+{
+ BmpWindow aBmpWin;
+
+ GroupBox aConnectGB;
+ FixedText aConnectFT;
+ Edit aConnectED;
+ PushButton aBrowseBT;
+
+ // Spiegeln
+ GroupBox aMirrorFrm;
+ CheckBox aMirrorHorzBox;
+ CheckBox aMirrorVertBox;
+// ListBox aMirrorPagesLB;
+ RadioButton aAllPagesRB;
+ RadioButton aLeftPagesRB;
+ RadioButton aRightPagesRB;
+// FixedText aMirrorPagesFT;
+
+ String aFilterName;
+ String aGrfName, aNewGrfName;
+
+ SvxImportGraphicDialog* pGrfDlg;
+
+ BOOL bHtmlMode;
+
+ // Handler fuer Spiegeln
+ DECL_LINK( MirrorHdl, CheckBox * );
+ DECL_LINK( BrowseHdl, Button * );
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ SwGrfExtPage(Window *pParent, const SfxItemSet &rSet);
+ ~SwGrfExtPage();
+
+public:
+ static SfxTabPage *Create(Window *pParent, const SfxItemSet &rSet);
+
+ virtual BOOL FillItemSet(SfxItemSet &rSet);
+ virtual void Reset(const SfxItemSet &rSet);
+ virtual int DeactivatePage(SfxItemSet *pSet);
+};
+
+
+class SwFrmURLPage : public SfxTabPage
+{
+ //Hyperlink
+ GroupBox aHyperLinkGB;
+ FixedText aURLFT;
+ Edit aURLED;
+ FixedText aNameFT;
+ Edit aNameED;
+ FixedText aFrameFT;
+ ComboBox aFrameCB;
+ PushButton aSearchPB;
+
+ //Image map
+ GroupBox aImageGB;
+ CheckBox aServerCB;
+ CheckBox aClientCB;
+
+ DECL_LINK( InsertFileHdl, PushButton * );
+
+
+ SwFrmURLPage(Window *pParent, const SfxItemSet &rSet);
+ ~SwFrmURLPage();
+public:
+ static SfxTabPage *Create(Window *pParent, const SfxItemSet &rSet);
+
+ virtual BOOL FillItemSet(SfxItemSet &rSet);
+ virtual void Reset(const SfxItemSet &rSet);
+};
+
+/*-----------------13.11.96 12.59-------------------
+
+--------------------------------------------------*/
+
+class SwFrmAddPage : public SfxTabPage
+{
+ FixedText aNameFT;
+ Edit aNameED;
+ FixedText aAltNameFT;
+ Edit aAltNameED;
+ FixedText aPrevFT;
+ Edit aPrevED;
+ FixedText aNextFT;
+ Edit aNextED;
+ GroupBox aNamesGB;
+
+ CheckBox aProtectContentCB;
+ CheckBox aProtectFrameCB;
+ CheckBox aProtectSizeCB;
+ GroupBox aProtectGB;
+
+ CheckBox aEditInReadonlyCB;
+ CheckBox aPrintFrameCB;
+ GroupBox aExtGB;
+
+ SwWrtShell* pWrtSh;
+
+ USHORT nDlgType;
+ BOOL bHtmlMode;
+ BOOL bFormat;
+ BOOL bNew;
+
+ DECL_LINK(EditModifyHdl, Edit*);
+
+ SwFrmAddPage(Window *pParent, const SfxItemSet &rSet);
+ ~SwFrmAddPage();
+
+public:
+
+ static SfxTabPage* Create(Window *pParent, const SfxItemSet &rSet);
+ static USHORT* GetRanges();
+
+ virtual BOOL FillItemSet(SfxItemSet &rSet);
+ virtual void Reset(const SfxItemSet &rSet);
+
+ void SetFormatUsed(BOOL bFmt) { bFormat = bFmt; }
+ void SetFrmType(USHORT nType) { nDlgType = nType; }
+ void SetNewFrame(BOOL bNewFrame) { bNew = bNewFrame; }
+ void SetShell(SwWrtShell* pSh) { pWrtSh = pSh; }
+
+};
+
+#endif // _FRMPAGE_HXX
diff --git a/sw/source/ui/inc/frmsh.hxx b/sw/source/ui/inc/frmsh.hxx
new file mode 100644
index 000000000000..6172f3d3512c
--- /dev/null
+++ b/sw/source/ui/inc/frmsh.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWFRMSH_HXX
+#define _SWFRMSH_HXX
+
+#include "basesh.hxx"
+
+class SwFrameShell: public SwBaseShell
+{
+
+public:
+ SFX_DECL_INTERFACE(SW_FRAMESHELL);
+
+ SwFrameShell(SwView &rView);
+
+ void Execute(SfxRequest &);
+ void GetState(SfxItemSet &);
+ void ExecFrameStyle(SfxRequest& rReq);
+ void GetLineStyleState(SfxItemSet &rSet);
+ void StateInsert(SfxItemSet &rSet);
+
+ void StateStatusline(SfxItemSet &rSet);
+
+ void GetBckColState(SfxItemSet &rSet);
+ void ExecBckCol(SfxRequest& rReq);
+};
+
+#endif
diff --git a/sw/source/ui/inc/frmui.hrc b/sw/source/ui/inc/frmui.hrc
new file mode 100644
index 000000000000..677d76703f45
--- /dev/null
+++ b/sw/source/ui/inc/frmui.hrc
@@ -0,0 +1,176 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmui.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _FRMUI_HRC
+#define _FRMUI_HRC
+
+#include "rcid.hrc"
+#include "globals.hrc"
+
+#define DLG_FRMOPT (RC_FRMDLG_BEGIN + 1)
+#define DLG_PATTERN (RC_FRMDLG_BEGIN + 2)
+#define DLG_BORDER (RC_FRMDLG_BEGIN + 3)
+#define DLG_COLUMN (RC_FRMDLG_BEGIN + 4)
+#define DLG_FOOTNOTE (RC_FRMDLG_BEGIN + 5)
+#define DLG_INSERT_FOOTNOTE (RC_FRMDLG_BEGIN + 6)
+
+#define DLG_VIEW_HEADER (RC_FRMDLG_BEGIN + 8)
+#define DLG_FORMAT_COLUMN (RC_FRMDLG_BEGIN + 10)
+#define DLG_CAPTION (RC_FRMDLG_BEGIN + 11)
+#define DLG_SEQUENCE_OPTION (RC_FRMDLG_BEGIN + 12)
+
+#define TP_FOOTNOTEOPTION (RC_FRMDLG_BEGIN + 12)
+#define TP_ENDNOTEOPTION (RC_FRMDLG_BEGIN + 13)
+
+#define STR_PATTERN_BRD (RC_FRMDLG_BEGIN + 13)
+#define STR_SHPATTERN (RC_FRMDLG_BEGIN + 14)
+#define STR_LNPATTERN (RC_FRMDLG_BEGIN + 15)
+#define STR_FRMUI_BORDER (RC_FRMDLG_BEGIN + 16)
+#define STR_FRMUI_PATTERN (RC_FRMDLG_BEGIN + 17)
+#define STR_FRMUI_WRAP (RC_FRMDLG_BEGIN + 18)
+
+#define BMP_PORTRAIT (RC_FRMDLG_BEGIN + 16)
+#define BMP_LANDSCAPE (RC_FRMDLG_BEGIN + 17)
+#define BMP_BEGIN (RC_FRMDLG_BEGIN + 18)
+#define BMP_WRAP (BMP_BEGIN)
+#define BMP_LEFT (BMP_BEGIN+1)
+#define BMP_RIGHT (BMP_BEGIN+2)
+#define BMP_OPAQUE (BMP_BEGIN+3)
+#define BMP_OPAQUET (BMP_BEGIN+4)
+#define BMP_NOWRAP (BMP_BEGIN+5)
+
+#define BMP_END (BMP_NOWRAP)
+
+#define MN_OPTION (BMP_END + 1)
+#define MN_COLUMN (BMP_END + 2)
+#define MN_PAPERSZ (BMP_END + 3)
+#define MN_BACKGROUND (BMP_END + 4)
+#define MN_FRAME (BMP_END + 5)
+#define STR_BACKGROUND (BMP_END + 6)
+#define MN_FOOTNOTE (BMP_END + 7)
+
+#define STR_FRMDLG_BEGIN (MN_FOOTNOTE + 1)
+
+#define STR_TOPPRT (STR_FRMDLG_BEGIN + 1)
+#define STR_FROMBOTTOM (STR_FRMDLG_BEGIN + 2)
+#define STR_FROMTOP (STR_FRMDLG_BEGIN + 3)
+#define STR_BELOW (STR_FRMDLG_BEGIN + 4)
+
+#define STR_LEFT (STR_FRMDLG_BEGIN + 5)
+#define STR_RIGHT (STR_FRMDLG_BEGIN + 6)
+#define STR_FROMLEFT (STR_FRMDLG_BEGIN + 7)
+#define STR_MIR_LEFT (STR_FRMDLG_BEGIN + 8)
+#define STR_MIR_RIGHT (STR_FRMDLG_BEGIN + 9)
+#define STR_MIR_FROMLEFT (STR_FRMDLG_BEGIN + 10)
+
+#define STR_BORDER (STR_FRMDLG_BEGIN + 16)
+#define STR_COLUMN (STR_FRMDLG_BEGIN + 17)
+#define STR_PARA (STR_FRMDLG_BEGIN + 18)
+#define STR_CHAR (STR_FRMDLG_BEGIN + 19)
+
+#define STR_FRAME (STR_FRMDLG_BEGIN + 20)
+#define STR_PRTAREA (STR_FRMDLG_BEGIN + 21)
+#define STR_REL_PG_LEFT (STR_FRMDLG_BEGIN + 22)
+#define STR_REL_PG_RIGHT (STR_FRMDLG_BEGIN + 23)
+#define STR_REL_FRM_LEFT (STR_FRMDLG_BEGIN + 24)
+#define STR_REL_FRM_RIGHT (STR_FRMDLG_BEGIN + 25)
+#define STR_MIR_REL_PG_LEFT (STR_FRMDLG_BEGIN + 26)
+#define STR_MIR_REL_PG_RIGHT (STR_FRMDLG_BEGIN + 27)
+#define STR_MIR_REL_FRM_LEFT (STR_FRMDLG_BEGIN + 28)
+#define STR_MIR_REL_FRM_RIGHT (STR_FRMDLG_BEGIN + 29)
+#define STR_REL_PG_FRAME (STR_FRMDLG_BEGIN + 30)
+#define STR_REL_PG_PRTAREA (STR_FRMDLG_BEGIN + 31)
+#define STR_REL_BASE (STR_FRMDLG_BEGIN + 32)
+#define STR_REL_CHAR (STR_FRMDLG_BEGIN + 33)
+#define STR_REL_ROW (STR_FRMDLG_BEGIN + 34)
+#define STR_REL_BORDER (STR_FRMDLG_BEGIN + 35)
+#define STR_REL_PRTAREA (STR_FRMDLG_BEGIN + 36)
+#define STR_FLY_REL_PG_LEFT (STR_FRMDLG_BEGIN + 37)
+#define STR_FLY_REL_PG_RIGHT (STR_FRMDLG_BEGIN + 38)
+#define STR_FLY_REL_PG_FRAME (STR_FRMDLG_BEGIN + 39)
+#define STR_FLY_REL_PG_PRTAREA (STR_FRMDLG_BEGIN + 40)
+#define STR_FLY_MIR_REL_PG_LEFT (STR_FRMDLG_BEGIN + 41)
+#define STR_FLY_MIR_REL_PG_RIGHT (STR_FRMDLG_BEGIN + 42)
+#define STR_FLY_MIR_REL_PG_FRAME (STR_FRMDLG_BEGIN + 43)
+#define STR_FLY_MIR_REL_PG_PRTAREA (STR_FRMDLG_BEGIN + 44)
+
+#define STR_OLE_INSERT (STR_FRMDLG_BEGIN + 45)
+#define STR_OLE_EDIT (STR_FRMDLG_BEGIN + 46)
+#define STR_COLL_HEADER (STR_FRMDLG_BEGIN + 47)
+
+#define MSG_COLUMN_ERR_BOUNDWIDTH (STR_FRMDLG_BEGIN + 48)
+#define STR_EDIT_GRF (STR_FRMDLG_BEGIN + 49)
+
+#define STR_LINE_TOP (STR_FRMDLG_BEGIN + 50)
+#define STR_LINE_BOTTOM (STR_FRMDLG_BEGIN + 51)
+#define STR_LINE_CENTER (STR_FRMDLG_BEGIN + 52)
+#define STR_CHAR_TOP (STR_FRMDLG_BEGIN + 53)
+#define STR_CHAR_BOTTOM (STR_FRMDLG_BEGIN + 54)
+#define STR_CHAR_CENTER (STR_FRMDLG_BEGIN + 55)
+
+#define FRMDLG_ACT_END STR_CHAR_CENTER
+
+#if FRMDLG_ACT_END > RC_FRMDLG_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+
+#endif // FRMUI_HRC
diff --git a/sw/source/ui/inc/globals.h b/sw/source/ui/inc/globals.h
new file mode 100644
index 000000000000..a555a8755991
--- /dev/null
+++ b/sw/source/ui/inc/globals.h
@@ -0,0 +1,83 @@
+/*************************************************************************
+ *
+ * $RCSfile: globals.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _GLOBALS_H
+#define _GLOBALS_H
+
+enum SwChangeState
+{
+ STATE_OFF = 0,
+ STATE_ON = 1,
+ STATE_TOGGLE = 2
+};
+
+/*-------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.2 2000/09/18 16:05:42 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.1 1994/09/20 12:07:48 MS
+ Initial revision.
+
+
+ Rev 1.0 20 Sep 1994 14:07:48 MS
+ Initial revision.
+ -------------------------------------------------------------------------*/
+#endif
diff --git a/sw/source/ui/inc/globdoc.hrc b/sw/source/ui/inc/globdoc.hrc
new file mode 100644
index 000000000000..ad8e21ba40bd
--- /dev/null
+++ b/sw/source/ui/inc/globdoc.hrc
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: globdoc.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _GLOBDOC_HRC
+#define _GLOBDOC_HRC
+
+#include "rcid.hrc"
+
+#define STR_HUMAN_SWGLOBDOC_NAME (RC_GLOBDOC_BEGIN + 2)
+#define STR_WRITER_GLOBALDOC_FULLTYPE_40 (RC_GLOBDOC_BEGIN + 3)
+#define STR_WRITER_GLOBALDOC_FULLTYPE (RC_GLOBDOC_BEGIN + 4)
+
+// ------------------------------------------------------------------------
+
+#define GLOBDOC_ACT_END STR_WRITER_GLOBALDOC_FULLTYPE
+
+
+#if GLOBDOC_ACT_END > RC_GLOBDOC_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+#endif
diff --git a/sw/source/ui/inc/glosbib.hxx b/sw/source/ui/inc/glosbib.hxx
new file mode 100644
index 000000000000..1c8f112bb429
--- /dev/null
+++ b/sw/source/ui/inc/glosbib.hxx
@@ -0,0 +1,163 @@
+/*************************************************************************
+ *
+ * $RCSfile: glosbib.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _GLOSBIB_HXX
+#define _GLOSBIB_HXX
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SVTABBX_HXX //autogen
+#include <svtools/svtabbx.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+class SwGlossaryHdl;
+class SvStrings;
+
+class FEdit : public Edit
+{
+ public:
+ FEdit(Window * pParent, const ResId& rResId) :
+ Edit(pParent, rResId){}
+
+ virtual void KeyInput( const KeyEvent& rKEvent );
+};
+/* -----------------------------08.02.00 15:04--------------------------------
+
+ ---------------------------------------------------------------------------*/
+struct GlosBibUserData
+{
+ String sPath;
+ String sGroupName;
+ String sGroupTitle;
+};
+class SwGlossaryGroupTLB : public SvTabListBox
+{
+public:
+ SwGlossaryGroupTLB(Window* pParent, const ResId& rResId) :
+ SvTabListBox(pParent, rResId) {}
+
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+ void Clear();
+};
+
+class SwGlossaryGroupDlg : public SvxStandardDialog
+{
+
+ FEdit aNameED;
+ ListBox aPathLB;
+ SwGlossaryGroupTLB aGroupTLB;
+
+ OKButton aOkPB;
+ CancelButton aCancelPB;
+ HelpButton aHelpPB;
+ PushButton aNewPB;
+ PushButton aDelPB;
+ PushButton aRenamePB;
+ GroupBox aBibGB;
+
+ SvStrings* pRemovedArr;
+ SvStrings* pInsertedArr;
+ SvStrings* pRenamedArr;
+
+ SwGlossaryHdl *pGlosHdl;
+
+ String sCreatedGroup;
+
+ BOOL IsDeleteAllowed(const String &rGroup);
+
+protected:
+ virtual void Apply();
+ DECL_LINK( SelectHdl, SvTabListBox* );
+ DECL_LINK( NewHdl, Button* );
+ DECL_LINK( DeleteHdl, Button* );
+ DECL_LINK( ModifyHdl, Edit* );
+ DECL_LINK( RenameHdl, Button* );
+
+public:
+ SwGlossaryGroupDlg(Window * pParent,
+ const SvStrings* pPathArr,
+ SwGlossaryHdl *pGlosHdl);
+ ~SwGlossaryGroupDlg();
+
+ const String& GetCreatedGroupName() const {return sCreatedGroup;}
+};
+
+
+#endif
+
diff --git a/sw/source/ui/inc/glosdoc.hxx b/sw/source/ui/inc/glosdoc.hxx
new file mode 100644
index 000000000000..9eb9ab72ac74
--- /dev/null
+++ b/sw/source/ui/inc/glosdoc.hxx
@@ -0,0 +1,132 @@
+/*************************************************************************
+ *
+ * $RCSfile: glosdoc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _GLOSDOC_HXX
+#define _GLOSDOC_HXX
+
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XAUTOTEXTGROUP_HPP_
+#include <com/sun/star/text/XAutoTextGroup.hpp>
+#endif
+
+class SwTextBlocks;
+class SvStrings;
+
+typedef com::sun::star::uno::Reference<com::sun::star::text::XAutoTextGroup>* XAutoTextGroupPtr;
+SV_DECL_PTRARR_DEL(XAutoTextGroupPtrArr, XAutoTextGroupPtr, 4, 4)
+
+typedef com::sun::star::uno::Reference<com::sun::star::uno::XInterface>* XInterfacePtr;
+SV_DECL_PTRARR_DEL(XAutoTextEntryPtrArr, XInterfacePtr, 4, 4)
+
+#define GLOS_DELIM (sal_Unicode)'*'
+
+// CLASS -----------------------------------------------------------------
+class SwGlossaries
+{
+ XAutoTextGroupPtrArr aGlosGroupArr;
+ XAutoTextEntryPtrArr aGlosEntryArr;
+ String aPath;
+ String sOldErrPath;
+ String sErrPath;
+ SvStrings *pPathArr;
+ SvStrings *pGlosArr;
+ BOOL bError;
+
+ SwTextBlocks* GetGlosDoc(const String &rName, BOOL bCreate = TRUE) const;
+ SvStrings *GetNameList();
+public:
+ SwGlossaries();
+ ~SwGlossaries();
+
+ XAutoTextGroupPtrArr& GetUnoGroupArray() { return aGlosGroupArr; }
+ XAutoTextEntryPtrArr& GetUnoEntryArray() { return aGlosEntryArr; }
+
+ USHORT GetGroupCnt();
+ String GetGroupName(USHORT );
+ String GetGroupTitle( const String& rGroupName );
+
+ BOOL FindGroupName(String & rGroup);
+
+ SwTextBlocks* GetGroupDoc(const String &rName,
+ BOOL bCreate = FALSE) const;
+ SwTextBlocks* GetDefGroupDoc() const {return GetGroupDoc(GetDefName());}
+ void PutGroupDoc(SwTextBlocks *pBlock);
+ static String GetDefName();
+ static String GetExtension();
+
+ BOOL NewGroupDoc(String &rGroupName, const String& rTitle);
+ BOOL RenameGroupDoc(const String& sOldGroup, String& sNewGroup, const String& rNewTitle);
+ BOOL DelGroupDoc(const String &);
+ void EditGroupDoc(const String &rGrpName, const String& rShortName );
+ void SaveGroupDoc(const String &rGrpName, const String& rLongName );
+ void UpdateGlosPath(BOOL bFull);
+ void ShowError();
+ inline ULONG IsGlosPathErr() { return bError; }
+ const SvStrings* GetPathArray() const {return pPathArr;}
+};
+
+#endif // _GLOSDOC_HXX
diff --git a/sw/source/ui/inc/gloshdl.hxx b/sw/source/ui/inc/gloshdl.hxx
new file mode 100644
index 000000000000..c2e9c5c05e36
--- /dev/null
+++ b/sw/source/ui/inc/gloshdl.hxx
@@ -0,0 +1,150 @@
+/*************************************************************************
+ *
+ * $RCSfile: gloshdl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _GLOSHDL_HXX
+#define _GLOSHDL_HXX
+
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+class SwWrtShell;
+class SwTextBlocks;
+class SvxMacro;
+class SwGlossaries;
+class SfxViewFrame;
+
+// CLASS -----------------------------------------------------------------
+class SwGlossaryHdl
+{
+
+ SwGlossaries& rStatGlossaries;
+ String aCurGrp;
+ SfxViewFrame* pViewFrame;
+ SwWrtShell* pWrtShell;
+ SwTextBlocks* pCurGrp;
+
+ void _SetMacros(const String &rName,
+ const SvxMacro *pStart,
+ const SvxMacro *pEnd);
+
+ BOOL Expand( const String& rShortName,
+ SwGlossaries* pGlossaries,
+ SwTextBlocks *pGlossary,
+ BOOL bApi = FALSE );
+public:
+ void GlossaryDlg();
+
+ USHORT GetGroupCnt() const;
+ String GetGroupName( USHORT, String* pTitle = 0 );
+ BOOL NewGroup(String & rGroupName, const String& rTitle);
+ BOOL DelGroup(const String &);
+ BOOL RenameGroup(const String & rOld, String& rNew, const String& rNewTitle);
+ void SetCurGroup(const String &aGrp, BOOL bApi = FALSE, BOOL bAlwaysCreateNew = FALSE);
+
+ const String &GetCurGroup() const { return aCurGrp; }
+
+ USHORT GetGlossaryCnt();
+ USHORT GetGlossaryCnt(const String& rGrpName); //fuer Basic
+ String GetGlossaryName(USHORT);
+ String GetGlossaryName(USHORT, const String& rGrpName); //fuer Basic
+ String GetGlossaryShortName(const String &rName);
+ String GetGlossaryShortName(USHORT);
+
+ BOOL Rename( const String& rOldShortName, const String& rNewShortName,
+ const String& rNewName);
+ BOOL CopyOrMove( const String& rSourceGroupName, String& rSourceShortName,
+ const String& rDestGroupName, const String& rLongName, BOOL bMove );
+ BOOL HasShortName(const String &rShortName) const;
+ //wird NewGlossary vom Basic gerufen, dann soll dir zuvor eingestellte
+ //Gruppe ggf. neu erstellt werden
+ BOOL NewGlossary(const String &rName, const String &rShortName,
+ BOOL bApiCall = FALSE, BOOL bNoAttr = FALSE );
+ BOOL DelGlossary(const String&);
+ BOOL CopyToClipboard(SwWrtShell& rSh, const String& rShortName);
+
+ BOOL ExpandGlossary(BOOL bUseStandard = TRUE, BOOL bApi = FALSE);
+ BOOL ExpandGlossary( const String& rShortName, BOOL bApi = FALSE );
+ BOOL InsertGlossary(const String &rName);
+
+ void SetMacros(const String& rName,
+ const SvxMacro* pStart,
+ const SvxMacro* pEnd,
+ SwTextBlocks *pGlossary = 0 );
+ void GetMacros(const String& rShortName,
+ SvxMacro& rStart,
+ SvxMacro& rEnd,
+ SwTextBlocks* pGlossary = 0 );
+
+ BOOL IsReadOnly( const String* = 0 ) const;
+ BOOL IsOld() const;
+
+ BOOL FindGroupName(String & rGroup); // Gruppe ohne Pfadindex finden
+
+ BOOL ImportGlossaries( const String& rName );
+
+ String GetValidShortCut( const String& rLong,
+ BOOL bCheckInBlock = FALSE ) const;
+
+ SwGlossaryHdl(SfxViewFrame* pViewFrame, SwWrtShell *);
+ ~SwGlossaryHdl();
+};
+
+#endif // _GLOSHDL_HXX
diff --git a/sw/source/ui/inc/gloslst.hxx b/sw/source/ui/inc/gloslst.hxx
new file mode 100644
index 000000000000..7805af34cf99
--- /dev/null
+++ b/sw/source/ui/inc/gloslst.hxx
@@ -0,0 +1,131 @@
+/*************************************************************************
+ *
+ * $RCSfile: gloslst.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _GLOSLST_HXX
+#define _GLOSLST_HXX
+
+
+#ifndef _DATETIME_HXX
+#include <tools/datetime.hxx>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+class SwGlossaries;
+class SvStringsISortDtor;
+
+struct AutoTextGroup
+{
+ USHORT nCount;
+ String sName;
+ String sTitle;
+ String sLongNames; // durch 0x0A getrennte Langnamen
+ String sShortNames; // durch 0x0A getrennte Kurznamen
+ DateTime aDateModified;
+};
+
+
+typedef AutoTextGroup* AutoTextGroupPtr;
+SV_DECL_PTRARR(AutoTextGroups, AutoTextGroupPtr, 4, 4);
+
+class SwGlossaryList : public AutoTimer
+{
+ AutoTextGroups aGroupArr;
+ String sPath;
+ BOOL bFilled;
+
+ AutoTextGroup* FindGroup(const String& rGroupName);
+ void FillGroup(AutoTextGroup* pGroup, SwGlossaries* pGloss);
+
+public:
+ SwGlossaryList();
+ ~SwGlossaryList();
+
+ BOOL HasLongName(const String& rBegin, SvStringsISortDtor* pLongNames );
+ BOOL GetShortName(const String& rLongName,
+ String& rShortName, String& rGroupName );
+
+ USHORT GetGroupCount();
+ String GetGroupName(USHORT nPos, BOOL bNoPath = TRUE, String* pTitle = 0);
+ USHORT GetBlockCount(USHORT nGroup);
+ String GetBlockName(USHORT nGroup, USHORT nBlock, String& rShortName);
+
+ void Update();
+
+ virtual void Timeout();
+
+ void ClearGroups();
+};
+
+#endif
+
+
+
+
+
+
diff --git a/sw/source/ui/inc/glossary.hxx b/sw/source/ui/inc/glossary.hxx
new file mode 100644
index 000000000000..bcc118ef599f
--- /dev/null
+++ b/sw/source/ui/inc/glossary.hxx
@@ -0,0 +1,249 @@
+/*************************************************************************
+ *
+ * $RCSfile: glossary.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _GLOSSARY_HXX
+#define _GLOSSARY_HXX
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef _SVTREEBOX_HXX //autogen
+#include <svtools/svtreebx.hxx>
+#endif
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+
+#ifndef _MENUBTN_HXX //autogen
+#include <vcl/menubtn.hxx>
+#endif
+
+#ifndef _ACTCTRL_HXX
+#include <actctrl.hxx>
+#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
+
+class SwGlossaryHdl;
+class SwNewGlosNameDlg;
+class SwWrtShell;
+class SfxViewFrame;
+class PopupMenu;
+class Menu;
+
+const short RET_EDIT = 100;
+
+//------------------------------------------------------------------
+
+class SwGlTreeListBox : public SvTreeListBox
+{
+ const String sReadonly;
+
+ SvLBoxEntry* pDragEntry;
+
+ virtual DragDropMode NotifyBeginDrag( SvLBoxEntry* );
+ virtual sal_Bool NotifyQueryDrop( SvLBoxEntry* );
+
+ virtual sal_Bool NotifyMoving( SvLBoxEntry* pTarget,
+ SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent,
+ sal_uInt32& rNewChildPos
+ );
+ virtual sal_Bool NotifyCopying( SvLBoxEntry* pTarget,
+ SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent,
+ sal_uInt32& rNewChildPos);
+ public:
+ SwGlTreeListBox(Window* pParent, const ResId& rResId);
+
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+ void Clear();
+};
+
+//------------------------------------------------------------------
+class SwOneExampleFrame;
+class SwGlossaryDlg : public SvxStandardDialog
+{
+ friend SwNewGlosNameDlg;
+ friend SwGlTreeListBox;
+
+ GroupBox aExampleGB;
+ Window aExampleWIN;
+ CheckBox aShowExampleCB;
+
+ CheckBox aInsertTipCB;
+
+ FixedText aNameLbl;
+ Edit aNameED;
+ FixedText aShortNameLbl;
+ NoSpaceEdit aShortNameEdit;
+
+ SwGlTreeListBox aCategoryBox;
+ GroupBox aGlossaryFrm;
+
+ CheckBox aFileRelCB;
+ CheckBox aNetRelCB;
+ GroupBox aRelativeGB;
+
+ OKButton aInsertBtn;
+ CancelButton aCloseBtn;
+ HelpButton aHelpBtn;
+ MenuButton aEditBtn;
+ PushButton aBibBtn;
+ PushButton aPathBtn;
+
+ String sReadonlyPath;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > _xAutoText;
+ SwOneExampleFrame* pExampleFrame;
+
+ PopupMenu* pMenu;
+ SwGlossaryHdl* pGlossaryHdl;
+ const sal_Bool bSelection : 1;
+ sal_Bool bReadOnly : 1;
+ sal_Bool bIsOld : 1;
+ sal_Bool bIsDocReadOnly:1;
+
+ SwWrtShell* pSh;
+
+ void EnableShortName(sal_Bool bOn = sal_True);
+
+ DECL_LINK( NameModify, Edit * );
+ DECL_LINK( NameDoubleClick, SvTreeListBox * );
+ DECL_LINK( GrpSelect, SvTreeListBox * );
+ DECL_LINK( MenuHdl, Menu * );
+ DECL_LINK( EnableHdl, Menu * );
+ DECL_LINK( BibHdl, Button * );
+ DECL_LINK( EditHdl, Button * );
+ DECL_LINK( PathHdl, Button * );
+ DECL_LINK( CheckBoxHdl, CheckBox * );
+ DECL_LINK( ShowPreviewHdl, CheckBox * );
+ DECL_LINK( PreviewLoadedHdl, void * );
+
+
+ virtual void Apply();
+ void Init();
+ SvLBoxEntry* DoesBlockExist(const String& sBlock, const String& rShort);
+ void ShowAutoText(const String& rGroup, const String& rShortName);
+
+public:
+ SwGlossaryDlg(SfxViewFrame* pViewFrame, SwGlossaryHdl* pGlosHdl, SwWrtShell *pWrtShell);
+ ~SwGlossaryDlg();
+ String GetCurrGrpName() const;
+ inline String GetCurrLongName() const;
+ inline String GetCurrShortName() const;
+ static String GetCurrGroup();
+ static void SetActGroup(const String& rNewGroup);
+ static String GetExtension();
+};
+
+inline String SwGlossaryDlg::GetCurrLongName() const
+{
+ return aNameED.GetText();
+}
+inline String SwGlossaryDlg::GetCurrShortName() const
+{
+ return aShortNameEdit.GetText();
+}
+
+
+#endif
+
diff --git a/sw/source/ui/inc/glshell.hxx b/sw/source/ui/inc/glshell.hxx
new file mode 100644
index 000000000000..702829404fd9
--- /dev/null
+++ b/sw/source/ui/inc/glshell.hxx
@@ -0,0 +1,140 @@
+/*************************************************************************
+ *
+ * $RCSfile: glshell.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _AUTODOC_HXX
+#define _AUTODOC_HXX
+
+#include "wdocsh.hxx"
+
+class SwTextBlocks;
+
+class SwGlosDocShell : public SwDocShell
+{
+ String aLongName;
+ String aShortName;
+ String aGroupName;
+protected:
+ virtual BOOL Save();
+
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SW_GLOSDOCSHELL);
+ SwGlosDocShell();
+ virtual ~SwGlosDocShell();
+
+ void Execute( SfxRequest& );
+ void GetState( SfxItemSet& );
+ void SetLongName( const String& rLongName )
+ { aLongName = rLongName; }
+ void SetShortName( const String& rShortName )
+ { aShortName = rShortName; }
+ void SetGroupName( const String& rGroupName )
+ { aGroupName = rGroupName; }
+ const String& GetShortName(){return aShortName;}
+};
+
+
+class SwWebGlosDocShell : public SwWebDocShell
+{
+ String aLongName;
+ String aShortName;
+ String aGroupName;
+protected:
+ virtual BOOL Save();
+
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SW_WEBGLOSDOCSHELL);
+ SwWebGlosDocShell();
+ virtual ~SwWebGlosDocShell();
+
+ void Execute( SfxRequest& );
+ void GetState( SfxItemSet& );
+ void SetLongName( const String& rLongName )
+ { aLongName = rLongName; }
+ void SetShortName( const String& rShortName )
+ { aShortName = rShortName; }
+ void SetGroupName( const String& rGroupName )
+ { aGroupName = rGroupName; }
+ const String& GetShortName(){return aShortName;}
+};
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sw/source/ui/inc/grfsh.hxx b/sw/source/ui/inc/grfsh.hxx
new file mode 100644
index 000000000000..1ace70f2e4a0
--- /dev/null
+++ b/sw/source/ui/inc/grfsh.hxx
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * $RCSfile: grfsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWGRFSH_HXX
+#define _SWGRFSH_HXX
+
+#include "frmsh.hxx"
+
+class SwGrfShell: public SwBaseShell
+{
+public:
+ SFX_DECL_INTERFACE(SW_GRFSHELL);
+
+ void Execute(SfxRequest &);
+ void GetState(SfxItemSet &);
+ void ExecAttr(SfxRequest &);
+ void GetAttrState(SfxItemSet &);
+
+ SwGrfShell(SwView &rView);
+};
+
+#endif
diff --git a/sw/source/ui/inc/hidfunc.h b/sw/source/ui/inc/hidfunc.h
new file mode 100644
index 000000000000..00f296a447c0
--- /dev/null
+++ b/sw/source/ui/inc/hidfunc.h
@@ -0,0 +1,383 @@
+/*************************************************************************
+ *
+ * $RCSfile: hidfunc.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 HID_EXIT 1017
+#define HID_NEW_WINDOW 1701
+#define HID_ARRANGE_CASCADE_WIN 1703
+#define HID_ARRANGE_HORZ_WIN 1704
+#define HID_ARRANGE_VERT_WIN 1705
+#define HID_ARRANGE_ALL_WIN 1702
+#define HID_SHOW_HELP_INDEX 1802
+#define HID_NEW_FILE 1005
+#define HID_NEW_FILE_DEFAULT 1024
+#define HID_CLOSE_FILE 1001
+#define HID_DOC_MGR_DLG 1032
+#define HID_CONFIG_TOOLBOX 1629
+#define HID_CONFIG_MENU 1630
+#define HID_CONFIG_KEY 1631
+#define HID_TEMPLATE_PI 1657
+#define HID_ADDR_PI 1658
+#define HID_AUTO_FORMAT 1651
+#define HID_NAVIGATION_PI 1656
+#define HID_NAVIGATION_PI_GOTO_PAGE 1659
+#define HID_HELP_PI 1655
+#define HID_FORMAT_DROPCAPS 1454
+#define HID_CONFIG_VIEWOPTIONS 1635
+#define HID_CONFIG_COLORS 1636
+#define HID_TOOLBOX 1213
+#define HID_RIBBON 1210
+#define HID_RULER 1211
+#define HID_VLINEAL 1216
+#define HID_VSCROLLBAR 1217
+#define HID_HSCROLLBAR 1218
+#define HID_SAVE_FILE 1013
+#define HID_SAVE_ALL 1023
+#define HID_SAVE_FILE_AS 1012
+#define HID_OPEN_LASTVERSION 1009
+#define HID_STATUSBAR 1212
+#define HID_ABOUT_DLG 1806
+#define HID_SEND_MAIL 1022
+#define HID_OPEN_FILE 1007
+#define HID_INSERT_FILE 1309
+#define HID_DOCSTAT_DLG 1020
+#define HID_LOAD_TEMPLATE_DLG 1021
+#define HID_ESCAPE 1941
+#define HID_PLAY_MACRO_DLG 1624
+#define HID_RECORD_MACRO_DLG 1622
+#define HID_ASSIGN_LOCAL_MACRO_DLG 1632
+#define HID_COMPILE_MACRO 1633
+#define HID_CREATE_DOCUMENT 1019
+#define HID_PAGEUP 1937
+#define HID_PAGEDOWN 1938
+#define HID_SET_LEFT_PARA 1418
+#define HID_SET_RIGHT_PARA 1419
+#define HID_SET_CENTER_PARA 1420
+#define HID_SET_JUSTIFY_PARA 1421
+#define HID_SET_ADJUST 1428
+#define HID_FORMAT_RESET 1469
+#define HID_INDENT_TO_TABSTOP 1417
+#define HID_UNINDENT_TO_TABSTOP 1431
+#define HID_SET_BOLD 1405
+#define HID_SET_ITALIC 1406
+#define HID_SET_UNDERLINE 1409
+#define HID_SET_STRIKEOUT 1410
+#define HID_SET_OUTLINE 1408
+#define HID_SET_SHADOW 1407
+#define HID_SET_SUPER_SCRIPT 1411
+#define HID_SET_SUB_SCRIPT 1412
+#define HID_SET_COLOR 1413
+#define HID_SET_CASEMAP 1414
+#define HID_SET_LANGUAGE 1415
+#define HID_SET_KERNING 1416
+#define HID_SET_FONT 1401
+#define HID_SET_FONT_SIZE 1402
+#define HID_GROW_FONT_SIZE 1403
+#define HID_SHRINK_FONT_SIZE 1404
+#define HID_SET_LINE_SPACE_1 1422
+#define HID_SET_LINE_SPACE_15 1423
+#define HID_SET_LINE_SPACE_2 1424
+#define HID_SET_PROP_LINE_SPACE 1540
+#define HID_SET_ABS_LINE_SPACE 1541
+#define HID_INSERT_SYMBOL 1328
+#define HID_INSERT_OBJECT_DLG 1322
+#define HID_EDIT_OBJECT 1110
+#define HID_EDIT_LINK_DLG 1109
+#define HID_EDIT_FILE_INFO_DLG 1107
+#define HID_EDIT_IDX_ENTRY_DLG 1123
+#define HID_NUM_BULLET_DOWN 1130
+#define HID_NUM_BULLET_MOVEUP 1134
+#define HID_NUM_BULLET_MOVEDOWN 1135
+#define HID_NUM_BULLET_UP 1131
+#define HID_NUM_BULLET_PREV 1132
+#define HID_NUM_BULLET_NEXT 1133
+#define HID_NUM_BULLET_OUTLINE_MOVEDOWN 1142
+#define HID_NUM_BULLET_OUTLINE_MOVEUP 1141
+#define HID_NUM_BULLET_OUTLINE_UP 1140
+#define HID_NUM_BULLET_OUTLINE_DOWN 1139
+#define HID_NUM_BULLET_NONUM 1136
+#define HID_NUM_NUMBERING_ON 1144
+#define HID_NUM_BULLET_ON 1138
+#define HID_NUM_BULLET_OFF 1137
+#define HID_INSERT_IDX_ENTRY_DLG 1335
+#define HID_POSTIT 1329
+#define HID_INSERT_CAPTION 1310
+#define HID_INSERT_IDX 1336
+#define HID_INSERT_USERIDX 1337
+#define HID_INSERT_CNTNTIDX 1338
+#define HID_INSERT_IDX_ENTRY 1340
+#define HID_INSERT_USERIDX_ENTRY 1341
+#define HID_INSERT_CNTNTIDX_ENTRY 1342
+#define HID_INSERT_FRAME 1334
+#define HID_INSERT_FRAME_INTERACT 1333
+#define HID_INSERT_SOFT_HYPHEN 1350
+#define HID_INSERT_HARD_SPACE 1351
+#define HID_FORMAT_FRAME_DLG 1456
+#define HID_FRAME_TO_TOP 1470
+#define HID_FRAME_TO_BOTTOM 1471
+#define HID_FRAME_NOWRAP 1472
+#define HID_FRAME_WRAP 1473
+#define HID_FRAME_WRAPTHRU 1474
+#define HID_FRAME_ALIGN_HORZ_LEFT 1475
+#define HID_FRAME_ALIGN_HORZ_RIGHT 1476
+#define HID_FRAME_ALIGN_HORZ_CENTER 1477
+#define HID_FRAME_ALIGN_VERT_TOP 1478
+#define HID_FRAME_ALIGN_VERT_BOTTOM 1479
+#define HID_FRAME_ALIGN_VERT_CENTER 1480
+#define HID_EDIT_FIELD 1104
+#define HID_SET_FIELD_VALUE 1112
+#define HID_INSERT_FIELD 1308
+#define HID_INSERT_MERGEFIELD_DLG 1320
+#define HID_EXECUTE_MACROFIELD 1127
+#define HID_UPDATE_FIELDS 1126
+#define HID_UPDATE_INPUTFIELDS 1143
+#define HID_CALC_TABLE 1129
+#define HID_INSERT_BREAK_DLG 1304
+#define HID_INSERT_BOOKMARK 1302
+#define HID_DELETE_BOOKMARK 1301
+#define HID_INSERT_GRAFIC 1315
+#define HID_FORMAT_TABLE_DLG 1460
+#define HID_INSERT_TABLE 1330
+#define HID_INSERT_COLS 1332
+#define HID_PAGE_STYLE_SET_COLS 1538
+#define HID_CONVERT_TEXT_TABLE 1500
+#define HID_TABLE_INSERT_ROW 1501
+#define HID_TABLE_INSERT_COL 1502
+#define HID_TABLE_DELETE_ROW 1503
+#define HID_TABLE_DELETE_COL 1504
+#define HID_TABLE_SPLIT_CELLS 1505
+#define HID_TABLE_MERGE_CELLS 1506
+#define HID_TABLE_SET_ROW_HEIGHT 1507
+#define HID_TABLE_SET_COL_WIDTH 1508
+#define HID_TABLE_SET_ULSPACE 1509
+#define HID_TABLE_SET_GRID 1510
+#define HID_TABLE_SET_SHADOW 1511
+#define HID_FORMAT_CHAR_DLG 1441
+#define HID_FORMAT_PAGE_DLG 1452
+#define HID_CHANGE_PAGENUM 1634
+#define HID_FORMAT_PARA_DLG 1443
+#define HID_FORMAT_TAB_DLG 1445
+#define HID_FORMAT_BORDER_DLG 1447
+#define HID_FORMAT_BORDER 1439
+#define HID_FORMAT_SHADOW 1438
+#define HID_FORMAT_BACKGROUND 1448
+#define HID_FORMAT_BACKGROUND_DLG 1450
+#define HID_SET_FRM_SIZE 1481
+#define HID_SET_FRM_POSITION 1482
+#define HID_SET_FRM_ANCHOR 1483
+#define HID_SET_FRM_WRAP 1484
+#define HID_SET_FRM_DIST 1485
+#define HID_SET_FRM_OPTIONS 1486
+#define HID_SET_FRM_MACRO 1494
+#define HID_SET_FRM_COLUMNS 1495
+#define HID_SET_FRM_COLUMN_WIDTH 1496
+#define HID_SET_GRF_MIRROR 1488
+#define HID_SET_TABLE_WIDTH 1489
+#define HID_SET_TABLE_ALIGN 1490
+#define HID_TABLE_SET_READ_ONLY_CELLS 1517
+#define HID_TABLE_UNSET_READ_ONLY_CELLS 1519
+#define HID_NEW_STYLE_BY_EXAMPLE 1462
+#define HID_UPDATE_STYLES_DIRECT 1497
+#define HID_UPDATE_STYLE_BY_EXAMPLE 1463
+#define HID_STYLE_SHEET_FRAME_DLG 1464
+#define HID_STYLE_SHEET_DOC_DLG 1465
+#define HID_SET_STANDARD_FONTS 1442
+#define HID_COPY 1102
+#define HID_PASTE 1113
+#define HID_PASTESPECIAL 1114
+#define HID_CUT 1103
+#define HID_FLIP_HORZ_GRAFIC 1425
+#define HID_FLIP_VERT_GRAFIC 1426
+#define HID_FORMAT_GRAFIC_DLG 1458
+#define HID_VIEW_BOUNDS 1214
+#define HID_VIEW_FIELDS 1215
+#define HID_VIEW_META_CHARS 1224
+#define HID_VIEW_MARKS 1225
+#define HID_VIEW_FIELDNAME 1226
+#define HID_VIEW_TABLEGRID 1227
+#define HID_SEARCH 1117
+#define HID_REPEAT_SEARCH 1150
+#define HID_REPLACE 1118
+#define HID_GOTO 1111
+#define HID_SETUP_PRINTER_DLG 1015
+#define HID_PRINT_FILE 1010
+#define HID_PRINT_FILE_DEFAULT 1025
+#define HID_FAX 1028
+#define HID_PRINT_FILE_OPTIONS 1011
+#define HID_THESAURUS_DLG 1604
+#define HID_SPELLING_DLG 1601
+#define HID_HYPHENATE_OPT_DLG 1607
+#define HID_MERGE_FILE_DLG 1004
+#define HID_SELECT_DATABASE 1030
+#define HID_DOC_INFO_DLG 1031
+#define HID_MERGE_FILE 1003
+#define HID_MERGE_RECORD 1327
+#define HID_INSERT_RECORD 1326
+#define HID_NUMBERING_OUTLINE_DLG 1612
+#define HID_NUMBER_BULLETS 1121
+#define HID_ZOOM 1231
+#define HID_SORTING 1613
+#define HID_SORTING_DLG 1614
+#define HID_CALCULATE 1615
+#define HID_REFRESH_VIEW 1201
+#define HID_CHAR_LEFT 1901
+#define HID_CHAR_RIGHT 1902
+#define HID_LINE_UP 1903
+#define HID_LINE_DOWN 1904
+#define HID_START_OF_LINE 1905
+#define HID_END_OF_LINE 1906
+#define HID_START_OF_DOCUMENT 1907
+#define HID_END_OF_DOCUMENT 1908
+#define HID_SELECT_WORD 1943
+#define HID_SELECT_ALL 1119
+#define HID_START_OF_NEXT_PAGE 1909
+#define HID_END_OF_NEXT_PAGE 1910
+#define HID_START_OF_PREV_PAGE 1911
+#define HID_END_OF_PREV_PAGE 1912
+#define HID_START_OF_PAGE 1913
+#define HID_END_OF_PAGE 1914
+#define HID_NEXT_WORD 1921
+#define HID_START_OF_PARA 1919
+#define HID_END_OF_PARA 1920
+#define HID_PREV_WORD 1922
+#define HID_NEXT_SENT 1923
+#define HID_PREV_SENT 1924
+#define HID_SET_INS_MODE 1936
+#define HID_SET_ADD_MODE 1939
+#define HID_SET_EXT_MODE 1940
+#define HID_START_TABLE 1947
+#define HID_END_TABLE 1948
+#define HID_NEXT_TABLE 1949
+#define HID_PREV_TABLE 1950
+#define HID_TABLE_SELECT_ALL 1515
+#define HID_TABLE_SELECT_COL 1514
+#define HID_TABLE_SELECT_ROW 1513
+#define HID_START_OF_COLUMN 1917
+#define HID_END_OF_COLUMN 1918
+#define HID_START_OF_NEXT_COLUMN 1951
+#define HID_END_OF_NEXT_COLUMN 1952
+#define HID_START_OF_PREV_COLUMN 1953
+#define HID_END_OF_PREV_COLUMN 1954
+#define HID_FOOTNOTE_TO_ANCHOR 1955
+#define HID_NEXT_FOOTNOTE 1956
+#define HID_PREV_FOOTNOTE 1957
+#define HID_CNTNT_TO_NEXT_FRAME 1958
+#define HID_FRAME_TO_ANCHOR 1959
+#define HID_TO_HEADER 1960
+#define HID_TO_FOOTER 1961
+#define HID_IDX_MARK_TO_IDX 1962
+#define HID_DELETE 1925
+#define HID_BACKSPACE 1926
+#define HID_DELETE_SENT 1927
+#define HID_DELETE_BACK_SENT 1928
+#define HID_DELETE_WORD 1929
+#define HID_DELETE_BACK_WORD 1930
+#define HID_DELETE_LINE 1931
+#define HID_DELETE_BACK_LINE 1932
+#define HID_DELETE_PARA 1933
+#define HID_DELETE_BACK_PARA 1934
+#define HID_DELETE_WHOLE_LINE 1935
+#define HID_INSERT_BREAK 1303
+#define HID_INSERT_PAGEBREAK 1323
+#define HID_INSERT_LINEBREAK 1318
+#define HID_INSERT_COLUMN_BREAK 1305
+#define HID_INSERT_FOOTNOTE 1311
+#define HID_INSERT_FOOTNOTE_DLG 1312
+#define HID_FORMAT_FOOTNOTE_DLG 1468
+#define HID_UNDO 1120
+#define HID_REDO 1116
+#define HID_REPEAT 1122
+#define HID_REPAGINATE 1161
+#define HID_SHOW_UPDATE_HELP 1805
+#define HID_SHOW_KEYBOARD_HELP 1803
+#define HID_SHOW_HELP_MANUAL 1804
+#define HID_GLOSSARY_DLG 1620
+#define HID_EXPAND_GLOSSARY 1628
+#define HID_INSERT_GLOSSARY 1640
+#define HID_AUTO_CORRECT_DLG 1650
+#define HID_AUTO_CORRECT 1649
+#define HID_CONFIG_DLG 1627
+#define HID_INSERT_STRING 1331
+#define HID_SET_CHAR_STYLE 1491
+#define HID_SET_PARA_STYLE 1492
+#define HID_SET_PAGE_STYLE 1493
+#define HID_SET_LRMARGIN 1429
+#define HID_SET_ULMARGIN 1430
+#define HID_SET_HYPHEN_ZONE 1432
+#define HID_SET_PAGE_BREAK 1433
+#define HID_FORMAT_PAGE 1451
+#define HID_SET_KEEP_TOGETHER 1434
+#define HID_SET_WIDOW 1436
+#define HID_SET_ORPHAN 1437
+#define HID_BUFFER_UPDATE 1124
+#define HID_FORMAT_TAB 1444
+#define HID_IS_END_OF_PARA 2000
+#define HID_IS_END_OF_WORD 2000
+#define HID_IS_END_OF_DOC 2000
+#define HID_IS_START_OF_PARA 2000
+#define HID_IS_START_OF_WORD 2000
+#define HID_IS_START_OF_DOC 2000
+#define HID_EDIT_FORMULA 1128
+#define HID_ENVELOP 2050
+#define HID_LABEL 2051
+#define HID_AGENDA_WIZZARD 1663
+#define HID_MEMO_WIZZARD 1662
+#define HID_FAX_WIZZARD 1661
+#define HID_LETTER_WIZZARD 1660
+#define HID_LAUNCH_REGISTRY 1002
diff --git a/sw/source/ui/inc/hyp.hxx b/sw/source/ui/inc/hyp.hxx
new file mode 100644
index 000000000000..0f6f0253dc20
--- /dev/null
+++ b/sw/source/ui/inc/hyp.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: hyp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _HYP_HXX
+#define _HYP_HXX
+
+#ifndef _LINK_HXX
+#include <tools/link.hxx>
+#endif
+#ifndef _SVX_SPLWRAP_HXX //autogen
+#include <svx/splwrap.hxx>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XHYPHENATOR_HPP_
+#include <com/sun/star/linguistic/XHyphenator.hpp>
+#endif
+
+class SwView;
+
+class SwHyphWrapper : public SvxSpellWrapper {
+private:
+ SwView* pView;
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XHyphenator > xHyph;
+ Link aOldLnk;
+ sal_uInt32 nLangError; // nicht vorhandene Sprache
+ sal_uInt16 nPageCount; // Seitenanzahl fuer Progressanzeige
+ sal_uInt16 nPageStart; // 1. gepruefte Seite
+ sal_Bool bInSelection : 1; // Trennen von selektiertem Text
+ sal_Bool bShowError : 1; // nicht vorhandene Sprache melden
+ sal_Bool bAutomatic : 1; // Trennstellen ohne Rueckfrage einfuegen
+ DECL_LINK( SpellError, void * );
+
+public:
+ SwHyphWrapper( SwView* pVw, ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XHyphenator > &rxHyph,
+ sal_Bool bStart, sal_Bool bOther, sal_Bool bSelect );
+
+ ~SwHyphWrapper();
+protected:
+ virtual void SpellStart( SvxSpellArea eSpell );
+ virtual sal_Bool SpellContinue();
+ virtual void SpellEnd( );
+ virtual sal_Bool SpellMore();
+ virtual void InsertHyphen( const sal_uInt16 nPos ); // Hyphen einfuegen
+};
+
+#endif
diff --git a/sw/source/ui/inc/idxmrk.hxx b/sw/source/ui/inc/idxmrk.hxx
new file mode 100644
index 000000000000..47daae127d21
--- /dev/null
+++ b/sw/source/ui/inc/idxmrk.hxx
@@ -0,0 +1,345 @@
+/*************************************************************************
+ *
+ * $RCSfile: idxmrk.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _IDXMRK_HXX
+#define _IDXMRK_HXX
+
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _BASEDLGS_HXX
+#include <sfx2/basedlgs.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_LSTBOX_HXX
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+#ifndef _SVX_STDDLG_HXX
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _IMAGEBTN_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+#ifndef _TOXE_HXX
+#include "toxe.hxx"
+#endif
+#ifndef _STDCTRL_HXX
+#include <svtools/stdctrl.hxx>
+#endif
+class SwWrtShell;
+class SwTOXMgr;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Markierung fuer Verzeichniseintrag einfuegen
+ --------------------------------------------------------------------*/
+class SwIndexMarkFloatDlg;
+class SwIndexMarkModalDlg;
+class SwIndexMarkDlg : public Window //SvxStandardDialog
+{
+ friend class SwIndexMarkFloatDlg;
+ friend class SwIndexMarkModalDlg;
+ FixedText aTypeFT;
+ ListBox aTypeDCB;
+ ImageButton aNewBT;
+ FixedText aEntryFT;
+ Edit aEntryED;
+ FixedText aKeyFT;
+ ComboBox aKeyDCB;
+ FixedText aKey2FT;
+ ComboBox aKey2DCB;
+ FixedText aLevelFT;
+ NumericField aLevelED;
+ CheckBox aMainEntryCB;
+ CheckBox aApplyToAllCB;
+ CheckBox aSearchCaseSensitiveCB;
+ CheckBox aSearchCaseWordOnlyCB;
+
+ GroupBox aIndexGB;
+
+ OKButton aOKBT;
+ CancelButton aCancelBT;
+ HelpButton aHelpBT;
+ PushButton aDelBT;
+ //PushButton aNewBT;
+
+ ImageButton aPrevSameBT;
+ ImageButton aNextSameBT;
+ ImageButton aPrevBT;
+ ImageButton aNextBT;
+
+ String aOrgStr;
+ sal_Bool bDel;
+ sal_Bool bNewMark;
+ sal_Bool bSelected;
+
+ SwTOXMgr* pTOXMgr;
+ SwWrtShell* pSh;
+
+ void Apply();
+ void InitControls();
+ void InsertMark();
+ void UpdateMark();
+
+ DECL_LINK( InsertHdl, Button * );
+ DECL_LINK( CloseHdl, Button * );
+ DECL_LINK( DelHdl, Button * );
+ DECL_LINK( NextHdl, Button * );
+ DECL_LINK( NextSameHdl, Button * );
+ DECL_LINK( PrevHdl, Button * );
+ DECL_LINK( PrevSameHdl, Button * );
+ DECL_LINK( ModifyHdl, ListBox* pBox = 0 );
+ DECL_LINK( KeyDCBModifyHdl, ComboBox * );
+ DECL_LINK( NewUserIdxHdl, Button*);
+ DECL_LINK( SearchTypeHdl, CheckBox*);
+
+ void UpdateKeyBoxes();
+
+ void UpdateDialog();
+ void InsertUpdate();
+
+ virtual void Activate();
+
+public:
+
+ SwIndexMarkDlg( Window *pParent,
+ sal_Bool bNewDlg,
+ const ResId& rResId);
+
+
+ ~SwIndexMarkDlg();
+
+ void ReInitDlg(SwWrtShell& rWrtShell);
+ sal_Bool IsTOXType(const String& rName)
+ {return LISTBOX_ENTRY_NOTFOUND != aTypeDCB.GetEntryPos(rName);}
+};
+/* -----------------06.10.99 10:11-------------------
+
+ --------------------------------------------------*/
+class SwIndexMarkFloatDlg : public SfxModelessDialog
+{
+ SwIndexMarkDlg aDlg;
+ virtual void Activate();
+ public:
+ SwIndexMarkFloatDlg( SfxBindings* pBindings,
+ SfxChildWindow* pChild,
+ Window *pParent,
+ sal_Bool bNew=sal_True);
+
+ SwIndexMarkDlg& GetDlg() {return aDlg;}
+};
+/* -----------------06.10.99 10:33-------------------
+
+ --------------------------------------------------*/
+class SwIndexMarkModalDlg : public SvxStandardDialog
+{
+ SwIndexMarkDlg aDlg;
+public:
+ SwIndexMarkModalDlg(Window *pParent, SwWrtShell& rSh);
+
+ SwIndexMarkDlg& GetDlg() {return aDlg;}
+ virtual void Apply();
+};
+
+/* -----------------07.09.99 08:02-------------------
+
+ --------------------------------------------------*/
+class SwInsertIdxMarkWrapper : public SfxChildWindow
+{
+protected:
+ SwInsertIdxMarkWrapper( Window *pParentWindow,
+ sal_uInt16 nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo );
+
+ SFX_DECL_CHILDWINDOW(SwInsertIdxMarkWrapper);
+
+public:
+ void ReInitDlg(SwWrtShell& rWrtShell)
+ {((SwIndexMarkFloatDlg*)pWindow)->GetDlg().ReInitDlg(rWrtShell);}
+
+};
+
+/* -----------------15.09.99 08:39-------------------
+
+ --------------------------------------------------*/
+class SwAuthMarkModalDlg;
+class SwAuthMarkDlg : public Window
+{
+ static sal_Bool bIsFromComponent;
+
+ friend class SwAuthMarkModalDlg;
+ RadioButton aFromComponentRB;
+ RadioButton aFromDocContentRB;
+ FixedText aEntryFT;
+ Edit aEntryED;
+ ListBox aEntryLB;
+ FixedText aAuthorFT;
+ FixedInfo aAuthorFI;
+ FixedText aTitleFT;
+ FixedInfo aTitleFI;
+
+ GroupBox aEntryGB;
+
+ OKButton aOKBT;
+ CancelButton aCancelBT;
+ HelpButton aHelpBT;
+ PushButton aCreateEntryPB;
+ PushButton aEditEntryPB;
+
+ String sChangeST;
+ sal_Bool bNewEntry;
+ sal_Bool bBibAccessInitialized;
+
+ SwWrtShell* pSh;
+
+ String m_sColumnTitles[AUTH_FIELD_END];
+ String m_sFields[AUTH_FIELD_END];
+
+ String m_sCreatedEntry[AUTH_FIELD_END];
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > xBibAccess;
+
+ DECL_LINK(InsertHdl, PushButton*);
+ DECL_LINK(CloseHdl, PushButton*);
+ DECL_LINK(CreateEntryHdl, PushButton*);
+ DECL_LINK(CompEntryHdl, ListBox*);
+ DECL_LINK(ChangeSourceHdl, RadioButton*);
+ DECL_LINK(IsEntryAllowedHdl, Edit*);
+
+ void InitControls();
+public:
+
+ SwAuthMarkDlg( Window *pParent,
+ const ResId& rResId,
+ sal_Bool bNew=sal_True);
+ ~SwAuthMarkDlg();
+
+ void ReInitDlg(SwWrtShell& rWrtShell);
+};
+/* -----------------07.09.99 08:02-------------------
+
+ --------------------------------------------------*/
+class SwInsertAuthMarkWrapper : public SfxChildWindow
+{
+protected:
+ SwInsertAuthMarkWrapper( Window *pParentWindow,
+ sal_uInt16 nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo );
+
+ SFX_DECL_CHILDWINDOW(SwInsertAuthMarkWrapper);
+
+public:
+ void ReInitDlg(SwWrtShell& rWrtShell);
+};
+/* -----------------06.10.99 10:11-------------------
+
+ --------------------------------------------------*/
+class SwAuthMarkFloatDlg : public SfxModelessDialog
+{
+ SwAuthMarkDlg aDlg;
+ virtual void Activate();
+ public:
+ SwAuthMarkFloatDlg( SfxBindings* pBindings,
+ SfxChildWindow* pChild,
+ Window *pParent,
+ sal_Bool bNew=sal_True);
+
+ SwAuthMarkDlg& GetDlg() {return aDlg;}
+};
+/* -----------------06.10.99 10:33-------------------
+
+ --------------------------------------------------*/
+class SwAuthMarkModalDlg : public SvxStandardDialog
+{
+ SwAuthMarkDlg aDlg;
+public:
+ SwAuthMarkModalDlg(Window *pParent, SwWrtShell& rSh);
+
+ SwAuthMarkDlg& GetDlg() {return aDlg;}
+ virtual void Apply();
+};
+
+
+#endif // _IDXMRK_HXX
+
diff --git a/sw/source/ui/inc/initui.hxx b/sw/source/ui/inc/initui.hxx
new file mode 100644
index 000000000000..c48253072a83
--- /dev/null
+++ b/sw/source/ui/inc/initui.hxx
@@ -0,0 +1,109 @@
+/*************************************************************************
+ *
+ * $RCSfile: initui.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _INITUI_HXX
+#define _INITUI_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+/*
+ * Forward Declarations
+ */
+class String;
+class SwThesaurus;
+class SpellCheck;
+class SvStringsDtor;
+
+/*
+ * Extern Definitions
+ */
+extern SwThesaurus* pThes;
+extern String GetSWGVersion();
+
+extern String* pOldGrfCat;
+extern String* pOldTabCat;
+extern String* pOldFrmCat;
+
+extern String* pCurrGlosGroup;
+
+extern SvStringsDtor* pDBNameList;
+
+extern SvStringsDtor* pAuthFieldNameList;
+extern SvStringsDtor* pAuthFieldTypeList;
+
+// stellt die Textbausteinverwaltung zur Verfuegung
+class SwGlossaries;
+SwGlossaries* GetGlossaries();
+
+class SwGlossaryList;
+
+BOOL HasGlossaryList();
+SwGlossaryList* GetGlossaryList();
+
+extern void _InitUI();
+extern void _FinitUI();
+extern void _InitSpell();
+extern void _FinitSpell();
+
+
+#endif
diff --git a/sw/source/ui/inc/inpdlg.hxx b/sw/source/ui/inc/inpdlg.hxx
new file mode 100644
index 000000000000..6ff63ad02d5f
--- /dev/null
+++ b/sw/source/ui/inc/inpdlg.hxx
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * $RCSfile: inpdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _INPDLG_HXX
+#define _INPDLG_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef VCL
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+#else
+#ifndef _SV_SVMEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+class SwInputField;
+class SwSetExpField;
+class SwUserFieldType;
+class SwField;
+class SwWrtShell;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Einfuegen Felder
+ --------------------------------------------------------------------*/
+
+class SwFldInputDlg: public SvxStandardDialog
+{
+ virtual void Apply();
+
+ SwWrtShell &rSh;
+ SwInputField* pInpFld;
+ SwSetExpField* pSetFld;
+ SwUserFieldType* pUsrType;
+
+ Edit aLabelED;
+
+ MultiLineEdit aEditED;
+ GroupBox aEditGB;
+
+ OKButton aOKBT;
+ CancelButton aCancelBT;
+ PushButton aNextBT;
+ HelpButton aHelpBT;
+
+ DECL_LINK(NextHdl, PushButton*);
+public:
+ SwFldInputDlg( Window *pParent, SwWrtShell &rSh,
+ SwField* pField, BOOL bNextButton = FALSE );
+ ~SwFldInputDlg();
+};
+
+
+#endif
diff --git a/sw/source/ui/inc/inputwin.hxx b/sw/source/ui/inc/inputwin.hxx
new file mode 100644
index 000000000000..57aa0166767a
--- /dev/null
+++ b/sw/source/ui/inc/inputwin.hxx
@@ -0,0 +1,165 @@
+/*************************************************************************
+ *
+ * $RCSfile: inputwin.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SW_INPUTWIN_HXX
+#define SW_INPUTWIN_HXX
+
+
+#ifndef _MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+#ifndef _TOOLBOX_HXX //autogen
+#include <vcl/toolbox.hxx>
+#endif
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+class SwFldMgr;
+class SwWrtShell;
+class SwView;
+class SfxDispatcher;
+
+//========================================================================
+class InputEdit : public Edit
+{
+public:
+ InputEdit(Window* pParent, WinBits nStyle) :
+ Edit(pParent , nStyle){}
+
+ void UpdateRange(const String& aSel,
+ const String& aTblName );
+
+protected:
+ virtual void KeyInput( const KeyEvent& );
+};
+
+//========================================================================
+
+class SwInputWindow : public ToolBox
+{
+friend class InputEdit;
+
+ Edit aPos;
+ InputEdit aEdit;
+ PopupMenu aPopMenu;
+ SwFldMgr* pMgr;
+ SwWrtShell* pWrtShell;
+ SwView* pView;
+ String aAktTableName, sOldFml;
+ USHORT nActionCnt;
+
+ BOOL bFirst : 1; //Initialisierungen beim ersten Aufruf
+ BOOL bActive : 1; //fuer Hide/Show beim Dokumentwechsel
+ BOOL bIsTable : 1;
+ BOOL bDelSel : 1;
+ BOOL bDoesUndo : 1;
+ BOOL bResetUndo : 1;
+ BOOL bCallUndo : 1;
+
+
+ void DelBoxCntnt();
+ DECL_LINK( ModifyHdl, InputEdit* );
+
+protected:
+ virtual void Resize();
+ virtual void Click();
+ DECL_LINK( MenuHdl, Menu * );
+ void ApplyFormula();
+ void CancelFormula();
+public:
+ SwInputWindow( Window* pParent );
+ virtual ~SwInputWindow();
+
+
+ void SelectHdl( ToolBox*);
+ virtual void Show();
+ BOOL IsActive(){ return bActive; };
+ DECL_LINK( SelTblCellsNotify, SwWrtShell * );
+
+ void SetFormula( const String& rFormula, BOOL bDelSel = TRUE );
+ const SwView* GetView() const{return pView;}
+};
+
+class SwInputChild : public SfxChildWindow
+{
+ BOOL bObjVis;
+ SfxDispatcher* pDispatch;
+public:
+ SwInputChild( Window* ,
+ USHORT nId,
+ SfxBindings*,
+ SfxChildWinInfo* );
+ ~SwInputChild();
+ SFX_DECL_CHILDWINDOW( SwInputChild );
+ void SetFormula( const String& rFormula, BOOL bDelSel = TRUE )
+ { ((SwInputWindow*)pWindow)->SetFormula(
+ rFormula, bDelSel ); }
+ const SwView* GetView() const{return ((SwInputWindow*)pWindow)->GetView();}
+
+};
+
+//==================================================================
+
+#endif
+
diff --git a/sw/source/ui/inc/insfnote.hxx b/sw/source/ui/inc/insfnote.hxx
new file mode 100644
index 000000000000..9c91d2bc9f01
--- /dev/null
+++ b/sw/source/ui/inc/insfnote.hxx
@@ -0,0 +1,125 @@
+/*************************************************************************
+ *
+ * $RCSfile: insfnote.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _INSFNOTE_HXX
+#define _INSFNOTE_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+
+class SwWrtShell;
+
+class SwInsFootNoteDlg: public SvxStandardDialog
+{
+ SwWrtShell &rSh;
+
+ //Alles fuer das/die Zeichen
+ String aFontName;
+ CharSet eCharSet;
+ char cExtChar;
+ BOOL bExtCharAvailable;
+ BOOL bEdit;
+ RadioButton aNumberAutoBtn;
+ RadioButton aNumberCharBtn;
+ Edit aNumberCharEdit;
+ PushButton aNumberExtChar;
+ GroupBox aNumberFrm;
+
+ //Alles fuer die Auswahl Fussnote/Endnote
+ RadioButton aFtnBtn;
+ RadioButton aEndNoteBtn;
+ GroupBox aTypeBox;
+
+ OKButton aOkBtn;
+ CancelButton aCancelBtn;
+ HelpButton aHelpBtn;
+ ImageButton aPrevBT;
+ ImageButton aNextBT;
+
+ DECL_LINK( NumberCharHdl, Button * );
+ DECL_LINK( NumberEditHdl, void * );
+ DECL_LINK( NumberAutoBtnHdl, Button *);
+ DECL_LINK( NumberExtCharHdl, Button *);
+ DECL_LINK( NextPrevHdl, Button * );
+
+ virtual void Apply();
+
+ void Init();
+
+public:
+ SwInsFootNoteDlg(Window * pParent, SwWrtShell &rSh, BOOL bEd = FALSE);
+ ~SwInsFootNoteDlg();
+};
+
+#endif
diff --git a/sw/source/ui/inc/insrc.hxx b/sw/source/ui/inc/insrc.hxx
new file mode 100644
index 000000000000..1414cc02c69d
--- /dev/null
+++ b/sw/source/ui/inc/insrc.hxx
@@ -0,0 +1,125 @@
+/*************************************************************************
+ *
+ * $RCSfile: insrc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _INSRC_HXX
+#define _INSRC_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+class SwView;
+class SwInsRowColDlg : public SvxStandardDialog
+{
+ FixedText aCount;
+ NumericField aCountEdit;
+ GroupBox aInsGrp;
+
+ RadioButton aBeforeBtn;
+ RadioButton aAfterBtn;
+ GroupBox aPosGrp;
+
+ String aRow;
+ String aCol;
+
+ OKButton aOKBtn;
+ CancelButton aCancelBtn;
+ HelpButton aHelpBtn;
+
+ SwView& rView;
+ BOOL bColumn;
+
+protected:
+ virtual void Apply();
+
+public:
+ SwInsRowColDlg( SwView& rView, BOOL bCol );
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/insrule.hxx b/sw/source/ui/inc/insrule.hxx
new file mode 100644
index 000000000000..8f59642f44ec
--- /dev/null
+++ b/sw/source/ui/inc/insrule.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: insrule.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _INSRULE_HXX
+#define _INSRULE_HXX
+
+#ifndef _NUM_HXX
+#include "num.hxx"
+#endif
+
+class SwDocShell;
+
+class SwRulerValueSet;
+class ValueSet;
+/*-----------------14.02.97 12.30-------------------
+
+--------------------------------------------------*/
+class SwInsertGrfRulerDlg : public SfxModalDialog
+{
+ GroupBox aSelectionGB;
+ OKButton aOkPB;
+ CancelButton aCancelPB;
+ HelpButton aHelpPB;
+
+ List aGrfNames;
+ String sSimple;
+
+ USHORT nSelPos;
+
+ SwRulerValueSet* pExampleVS;
+
+protected:
+ DECL_LINK(SelectHdl, ValueSet*);
+ DECL_LINK(DoubleClickHdl, ValueSet*);
+
+public:
+ SwInsertGrfRulerDlg( Window* pParent, SwDocShell* pDocSh );
+ ~SwInsertGrfRulerDlg();
+
+ String GetGraphicName();
+ BOOL IsSimpleLine() {return nSelPos == 1;}
+ BOOL HasImages() const {return 0 != aGrfNames.Count();}
+};
+
+#endif
+
+
+
diff --git a/sw/source/ui/inc/instable.hxx b/sw/source/ui/inc/instable.hxx
new file mode 100644
index 000000000000..9539157a6660
--- /dev/null
+++ b/sw/source/ui/inc/instable.hxx
@@ -0,0 +1,127 @@
+/*************************************************************************
+ *
+ * $RCSfile: instable.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _INSTABLE_HXX
+#define _INSTABLE_HXX
+
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.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 _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+#ifndef _ACTCTRL_HXX
+#include <actctrl.hxx>
+#endif
+class SwWrtShell;
+class SwTableAutoFmt;
+
+class SwInsTableDlg : public SfxModalDialog
+{
+ TableNameEdit aNameEdit;
+ GroupBox aNameFrm;
+ FixedText aColLbl;
+ NumericField aColEdit;
+ FixedText aRowLbl;
+ NumericField aRowEdit;
+
+ CheckBox aHeaderCB;
+ CheckBox aRepeatHeaderCB;
+ CheckBox aDontSplitCB;
+ CheckBox aBorderCB;
+ GroupBox aOptionsGB;
+
+ GroupBox aFrm;
+ OKButton aOkBtn;
+ CancelButton aCancelBtn;
+ HelpButton aHelpBtn;
+ PushButton aAutoFmtBtn;
+
+ SwWrtShell* pShell;
+ SwTableAutoFmt* pTAutoFmt;
+
+ DECL_LINK( ModifyName, Edit * );
+ DECL_LINK( ModifyRowCol, NumericField * );
+ DECL_LINK( AutoFmtHdl, PushButton* );
+ DECL_LINK( CheckBoxHdl, CheckBox *pCB = 0 );
+
+public:
+ SwInsTableDlg( SwView& rView );
+ ~SwInsTableDlg();
+
+ void GetValues( String& rName, USHORT& rRow, USHORT& rCol,
+ USHORT& rInsTblFlags,
+ SwTableAutoFmt *& prTAFmt );
+};
+
+#endif
diff --git a/sw/source/ui/inc/itemdef.hxx b/sw/source/ui/inc/itemdef.hxx
new file mode 100644
index 000000000000..f655af266ad2
--- /dev/null
+++ b/sw/source/ui/inc/itemdef.hxx
@@ -0,0 +1,73 @@
+/*************************************************************************
+ *
+ * $RCSfile: itemdef.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef ITEMDEF_HXX
+#define ITEMDEF_HXX
+
+
+#ifndef _SFXMSG_HXX //autogen
+#include <sfx2/msg.hxx>
+#endif
+
+SFX_DECL_TYPE(10); //SwElemItem
+SFX_DECL_TYPE(13); //SwAddPrinterItem
+SFX_DECL_TYPE(16); //SwDocDisplayItem
+
+#endif
diff --git a/sw/source/ui/inc/javaedit.hxx b/sw/source/ui/inc/javaedit.hxx
new file mode 100644
index 000000000000..5afac53b79ca
--- /dev/null
+++ b/sw/source/ui/inc/javaedit.hxx
@@ -0,0 +1,144 @@
+/*************************************************************************
+ *
+ * $RCSfile: javaedit.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SW_JAVAEDIT_HXX
+#define _SW_JAVAEDIT_HXX
+
+// include ---------------------------------------------------------------
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef VCL
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+#else
+#ifndef _SV_SVMEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _IMAGEBTN_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+class SwWrtShell;
+class SwFldMgr;
+class SwScriptField;
+
+// class SwJavaEditDialog -------------------------------------------------
+
+class SwJavaEditDialog : public SvxStandardDialog
+{
+public:
+ SwJavaEditDialog(Window* pParent, SwWrtShell* pWrtSh);
+ ~SwJavaEditDialog();
+
+private:
+ FixedText aTypeFT;
+ Edit aTypeED;
+ RadioButton aUrlRB;
+ RadioButton aEditRB;
+ PushButton aUrlPB;
+ Edit aUrlED;
+ MultiLineEdit aEditED;
+ GroupBox aPostItGB;
+
+ OKButton aOKBtn;
+ CancelButton aCancelBtn;
+ ImageButton aPrevBtn;
+ ImageButton aNextBtn;
+ HelpButton aHelpBtn;
+
+ BOOL bNew;
+
+ SwScriptField* pFld;
+ SwFldMgr* pMgr;
+ SwWrtShell* pSh;
+
+ DECL_LINK( OKHdl, Button* );
+ DECL_LINK( PrevHdl, Button* );
+ DECL_LINK( NextHdl, Button* );
+ DECL_LINK( RadioButtonHdl, RadioButton* pBtn );
+ DECL_LINK( InsertFileHdl, PushButton * );
+
+ virtual void Apply();
+
+ void CheckTravel();
+ void SetFld();
+};
+
+
+#endif
+
diff --git a/sw/source/ui/inc/label.hxx b/sw/source/ui/inc/label.hxx
new file mode 100644
index 000000000000..8660d82e6ae1
--- /dev/null
+++ b/sw/source/ui/inc/label.hxx
@@ -0,0 +1,136 @@
+/*************************************************************************
+ *
+ * $RCSfile: label.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _LABEL_HXX
+#define _LABEL_HXX
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_STRINGSDTOR
+#define _SVSTDARR_USHORTS
+#include <svtools/svstdarr.hxx>
+#endif
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+
+class SwLabRec;
+class SwLabRecs;
+class SwLabItem;
+class SwLabPrtPage;
+class SwNewDBMgr;
+class Printer;
+
+class SwLabDlg : public SfxTabDialog
+{
+ SwNewDBMgr* pNewDBMgr;
+ SwLabPrtPage* pPrtPage;
+
+ SvUShorts aTypeIds;
+ SvStringsDtor aMakes;
+
+ SwLabRecs* pRecs;
+ String aLstGroup;
+ String sBusinessCardDlg;
+ String sFormat;
+ String sMedium;
+ BOOL m_bLabel;
+ void _ReplaceGroup( const String &rMake, SwLabItem *pItem );
+
+ virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
+public:
+
+ SwLabDlg( Window* pParent, const SfxItemSet& rSet,
+ SwNewDBMgr* pNewDBMgr, BOOL bLabel);
+ ~SwLabDlg();
+
+ void MakeConfigItem(SwLabItem& rItem) const;
+
+ SwLabRec* GetRecord(const String &rRecName, BOOL bCont);
+ void GetLabItem(SwLabItem &rItem);
+
+ SwLabRecs &Recs() { return *pRecs; }
+ const SwLabRecs &Recs() const { return *pRecs; }
+
+ SvUShorts &TypeIds() { return aTypeIds; }
+ const SvUShorts &TypeIds() const { return aTypeIds; }
+
+ SvStringsDtor &Makes() { return aMakes; }
+ const SvStringsDtor &Makes() const { return aMakes; }
+
+ Printer *GetPrt();
+ inline void ReplaceGroup( const String &rMake, SwLabItem *pItem );
+ static void UpdateFieldInformation(::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel>& xModel,
+ const SwLabItem& rItem);
+ const String& GetBusinessCardStr() const {return sBusinessCardDlg;}
+
+};
+
+inline void SwLabDlg::ReplaceGroup( const String &rMake, SwLabItem *pItem )
+{
+ if ( rMake != aLstGroup )
+ _ReplaceGroup( rMake, pItem );
+}
+
+#endif
+
diff --git a/sw/source/ui/inc/labimg.hxx b/sw/source/ui/inc/labimg.hxx
new file mode 100644
index 000000000000..432d5d2e343c
--- /dev/null
+++ b/sw/source/ui/inc/labimg.hxx
@@ -0,0 +1,176 @@
+/*************************************************************************
+ *
+ * $RCSfile: labimg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _LABIMG_HXX
+#define _LABIMG_HXX
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+#ifndef _SFXCFGITEM_HXX //autogen
+#include <sfx2/cfgitem.hxx>
+#endif
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+// class SwLabItem ----------------------------------------------------------
+
+class SwLabItem : public SfxPoolItem
+{
+public:
+
+ SwLabItem();
+ SwLabItem(const SwLabItem& rItem);
+
+ SwLabItem& operator =(const SwLabItem& rItem);
+
+ virtual int operator ==(const SfxPoolItem& rItem) const;
+
+ virtual SfxPoolItem* Clone(SfxItemPool* = 0) const;
+
+ int Load (SvStream& rStrm, USHORT nVersion, BOOL bLabel);
+ BOOL Store(SvStream& rStrm, BOOL bLabel);
+
+ String aLstMake; //Letzte Auswahl merken.
+ String aLstType;
+ String sDBName; // Verwendete Datenbank
+
+ String aWriting; // Aufschrift
+ String aMake; // Etikettenmarke
+ String aType; // Etikettentyp
+ String aBin; // Druckerschacht
+ long lHDist; // Horizontaler Abstand (Benutzer)
+ long lVDist; // Vertikaler Abstand (Benutzer)
+ long lWidth; // Breite (Benutzer)
+ long lHeight; // Hoehe (Benutzer)
+ long lLeft; // Rand links (Benutzer)
+ long lUpper; // Rand oben (Benutzer)
+ USHORT nCols; // Anzahl Spalten (Benutzer)
+ USHORT nRows; // Anzahl Zeilen (Benutzer)
+ USHORT nCol; // Spalte fuer Einzeldruck
+ USHORT nRow; // Zeile fuer Einzeldruck
+ BOOL bAddr :1;// Adresse als Aufschrift?
+ BOOL bCont :1;// Endlospapier?
+ BOOL bPage :1;// Ganze Seite oder einzelnes Etikett?
+ BOOL bSynchron:1;// Alle Etiketten synchronisieren
+
+ //parts of the business card
+ String aPrivFirstName;
+ String aPrivName;
+ String aPrivShortCut;
+ String aPrivFirstName2;
+ String aPrivName2;
+ String aPrivShortCut2;
+ String aPrivStreet;
+ String aPrivZip;
+ String aPrivCity;
+ String aPrivCountry;
+ String aPrivState;
+ String aPrivTitle;
+ String aPrivProfession;
+ String aPrivPhone;
+ String aPrivMobile;
+ String aPrivFax;
+ String aPrivWWW;
+ String aPrivMail;
+ String aCompCompany;
+ String aCompCompanyExt;
+ String aCompSlogan;
+ String aCompStreet;
+ String aCompZip;
+ String aCompCity;
+ String aCompCountry;
+ String aCompState;
+ String aCompPosition;
+ String aCompPhone;
+ String aCompMobile;
+ String aCompFax;
+ String aCompWWW;
+ String aCompMail;
+
+ String sGlossaryGroup;
+ String sGlossaryBlockName;
+};
+
+// class SwLabCfgItem -------------------------------------------------------
+
+class SwLabCfgItem : public SfxConfigItem
+{
+ SwLabItem aLabItem;
+ SwLabItem aBusinessItem;
+protected:
+ virtual int Load (SvStream& rStrm);
+ virtual BOOL Store(SvStream& rStrm);
+ virtual void UseDefault();
+
+public:
+ SwLabCfgItem();
+
+ SwLabItem& GetLabItem() {return aLabItem;}
+ SwLabItem& GetBusinessItem() {return aBusinessItem;}
+ virtual String GetName() const;
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/linenum.hxx b/sw/source/ui/inc/linenum.hxx
new file mode 100644
index 000000000000..8e7a40897d41
--- /dev/null
+++ b/sw/source/ui/inc/linenum.hxx
@@ -0,0 +1,158 @@
+/*************************************************************************
+ *
+ * $RCSfile: linenum.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWLINENUM_HXX
+#define _SWLINENUM_HXX
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+class Window;
+class SfxItemSet;
+class SwView;
+class SwWrtShell;
+
+/*--------------------------------------------------------------------
+ Beschreibung: SingleTabDialog
+ --------------------------------------------------------------------*/
+
+class SwLineNumberingDlg : public SfxSingleTabDialog
+{
+ SwWrtShell* pSh;
+
+ DECL_LINK( OKHdl, Button * );
+
+public:
+ inline SwWrtShell* GetWrtShell() const { return pSh; }
+
+ SwLineNumberingDlg(SwView *pVw);
+ ~SwLineNumberingDlg();
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: TabPage
+ --------------------------------------------------------------------*/
+
+class SwLineNumberingPage : public SfxTabPage
+{
+ CheckBox aNumberingOnCB;
+ FixedText aCharStyleFT;
+ ListBox aCharStyleLB;
+ FixedText aFormatFT;
+ ListBox aFormatLB;
+ FixedText aPosFT;
+ ListBox aPosLB;
+ FixedText aOffsetFT;
+ MetricField aOffsetMF;
+ FixedText aNumIntervalFT;
+ NumericField aNumIntervalNF;
+ FixedText aNumRowsFT;
+ GroupBox aDisplayGB;
+ FixedText aDivisorFT;
+ Edit aDivisorED;
+ FixedText aDivIntervalFT;
+ NumericField aDivIntervalNF;
+ FixedText aDivRowsFT;
+ GroupBox aDivisorGB;
+ CheckBox aCountEmptyLinesCB;
+ CheckBox aCountFrameLinesCB;
+ CheckBox aRestartEachPageCB;
+ GroupBox aCountGB;
+
+ SwWrtShell* pSh;
+
+ SwLineNumberingPage( Window* pParent, const SfxItemSet& rSet );
+ ~SwLineNumberingPage();
+
+ DECL_LINK( LineOnOffHdl, CheckBox *pCB = 0 );
+ DECL_LINK( ModifyHdl, Edit *pED = 0 );
+
+public:
+
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet );
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+};
+
+#endif
+
+
diff --git a/sw/source/ui/inc/listsh.hxx b/sw/source/ui/inc/listsh.hxx
new file mode 100644
index 000000000000..a963517bb0dd
--- /dev/null
+++ b/sw/source/ui/inc/listsh.hxx
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * $RCSfile: listsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWLISTSH_HXX
+#define _SWLISTSH_HXX
+
+#include "basesh.hxx"
+
+class SwListShell: public SwBaseShell
+{
+public:
+ SFX_DECL_INTERFACE(SW_LISTSHELL);
+ TYPEINFO();
+
+ SwListShell(SwView &rView);
+
+ void Execute(SfxRequest &);
+ void GetState(SfxItemSet &);
+};
+
+#endif
diff --git a/sw/source/ui/inc/macassgn.hxx b/sw/source/ui/inc/macassgn.hxx
new file mode 100644
index 000000000000..dc147435e931
--- /dev/null
+++ b/sw/source/ui/inc/macassgn.hxx
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * $RCSfile: macassgn.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _MACASSGN_HXX
+#define _MACASSGN_HXX
+
+#ifndef _MACROPG_HXX //autogen
+#include <sfx2/macropg.hxx>
+#endif
+
+class SwWrtShell;
+class SvxMacroItem;
+
+enum DlgEventType
+{
+ MACASSGN_TEXTBAUST,
+ MACASSGN_GRAPHIC,
+ MACASSGN_OLE,
+ MACASSGN_FRMURL,
+ MACASSGN_INETFMT,
+ MACASSGN_ALLFRM
+};
+
+class SwMacroAssignDlg : public SfxMacroAssignDlg
+{
+public:
+ SwMacroAssignDlg( Window* pParent, SfxItemSet& rSet, DlgEventType eType );
+ virtual ~SwMacroAssignDlg();
+
+ static void AddEvents( SfxSmallMacroTabPage& rPg, DlgEventType eType );
+ static BOOL INetFmtDlg( Window* pParent, SwWrtShell& rSh,
+ SvxMacroItem*& rpINetItem );
+};
+
+
+
+
+#endif
+
diff --git a/sw/source/ui/inc/mailmrge.hxx b/sw/source/ui/inc/mailmrge.hxx
new file mode 100644
index 000000000000..1b6271e89a6b
--- /dev/null
+++ b/sw/source/ui/inc/mailmrge.hxx
@@ -0,0 +1,178 @@
+/*************************************************************************
+ *
+ * $RCSfile: mailmrge.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _MAILMRGE_HXX
+#define _MAILMRGE_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+class SwWrtShell;
+class SbaObject;
+class SbaSelectionListRef;
+class SwModuleOptions;
+
+class SwMailMergeDlg : public SvxStandardDialog
+{
+ RadioButton aAllRB;
+ RadioButton aMarkedRB;
+ RadioButton aFromRB;
+ NumericField aFromNF;
+ FixedText aBisFT;
+ NumericField aToNF;
+ GroupBox aRecordGB;
+
+ RadioButton aPrinterRB;
+ RadioButton aMailingRB;
+ RadioButton aFileRB;
+
+ CheckBox aSingleJobsCB;
+
+ FixedText aPathFT;
+ Edit aPathED;
+ PushButton aPathPB;
+ FixedText aFilenameFT;
+ RadioButton aColumnRB;
+ RadioButton aFilenameRB;
+ ListBox aColumnLB;
+ Edit aFilenameED;
+
+ FixedText aAddressFT;
+ ListBox aAddressFldLB;
+ FixedText aSubjectFT;
+ Edit aSubjectED;
+ FixedText aFormatFT;
+ FixedText aAttachFT;
+ Edit aAttachED;
+ PushButton aAttachPB;
+ CheckBox aFormatHtmlCB;
+ CheckBox aFormatRtfCB;
+ CheckBox aFormatSwCB;
+ GroupBox aDestGB;
+
+ OKButton aOkBTN;
+ CancelButton aCancelBTN;
+ HelpButton aHelpBTN;
+
+ SwWrtShell* pSh;
+#ifdef REPLACE_OFADBMGR
+#else
+ SbaObject* pSbaObject;
+#endif
+ SwModuleOptions* pModOpt;
+ const String& rDBName;
+#ifdef REPLACE_OFADBMGR
+ const String& rTableName;
+#endif
+ const String& rStatement;
+ SbaSelectionListRef& rSelectionList;
+
+ USHORT nMergeType;
+
+ DECL_LINK( ButtonHdl, Button* pBtn );
+ DECL_LINK( InsertPathHdl, PushButton * );
+ DECL_LINK( AttachFileHdl, PushButton * );
+ DECL_LINK( RadioButtonHdl, RadioButton* pBtn );
+ DECL_LINK( FilenameHdl, RadioButton* pBtn );
+ DECL_LINK( ModifyHdl, NumericField* pLB );
+
+ virtual void Apply();
+ void ExecQryShell(BOOL bVisible);
+
+public:
+
+ SwMailMergeDlg(Window* pParent, SwWrtShell* pSh,
+ const String& rName,
+#ifdef REPLACE_OFADBMGR
+ const String& rTblName,
+#endif
+ const String& rStat, SbaSelectionListRef& pSelList);
+ ~SwMailMergeDlg();
+
+ inline USHORT GetMergeType() { return nMergeType; }
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/makefile.mk b/sw/source/ui/inc/makefile.mk
new file mode 100644
index 000000000000..221888abb0c6
--- /dev/null
+++ b/sw/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 17:14:41 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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/sw/source/ui/inc/mergetbl.hxx b/sw/source/ui/inc/mergetbl.hxx
new file mode 100644
index 000000000000..ef8481755b06
--- /dev/null
+++ b/sw/source/ui/inc/mergetbl.hxx
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * $RCSfile: mergetbl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _MERGETBL_HXX
+#define _MERGETBL_HXX
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+
+class SwMergeTblDlg : public SvxStandardDialog
+{
+ OKButton aOKPB;
+ CancelButton aCancelPB;
+ HelpButton aHelpPB;
+ GroupBox aMergeGB;
+ RadioButton aMergePrevRB;
+ RadioButton aMergeNextRB;
+
+ BOOL& rMergePrev;
+protected:
+ virtual void Apply();
+
+public:
+ SwMergeTblDlg( Window *pParent, BOOL& rWithPrev );
+};
+
+#endif
+
+
diff --git a/sw/source/ui/inc/misc.hrc b/sw/source/ui/inc/misc.hrc
new file mode 100644
index 000000000000..657d6f3e2777
--- /dev/null
+++ b/sw/source/ui/inc/misc.hrc
@@ -0,0 +1,142 @@
+/*************************************************************************
+ *
+ * $RCSfile: misc.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _MISC_HRC
+#define _MISC_HRC
+
+#include "rcid.hrc"
+
+#define DLG_QUERY_DELETE (RC_MISC_BEGIN + 2)
+
+#define DLG_MASTERDOC_PAGE (RC_MISC_BEGIN + 3)
+#define DLG_QUERY_ADD (RC_MISC_BEGIN + 4)
+
+#define STR_GLOSSARY_BIB_DLG (RC_MISC_BEGIN + 5)
+#define STR_DOCUMENT_BIB_DLG (RC_MISC_BEGIN + 6)
+
+#define WIN_GLOBAL_DOC (RC_MISC_BEGIN + 7)
+#define DLG_GLOBAL_DOC_OPTION (RC_MISC_BEGIN + 8)
+#define DLG_NUMBERING (RC_MISC_BEGIN + 9)
+#define DLG_ZOOM (RC_MISC_BEGIN + 10)
+#define DLG_GLOSSARY (RC_MISC_BEGIN + 11)
+#define DLG_INS_FOOTNOTE (RC_MISC_BEGIN + 12)
+#define DLG_DOC_FOOTNOTE (RC_MISC_BEGIN + 13)
+#define DLG_PG_FOOTNOTE (RC_MISC_BEGIN + 14)
+#define DLG_NUMBERING_OUTLINE (RC_MISC_BEGIN + 15)
+#define DLG_BIB_BASE (RC_MISC_BEGIN + 16)
+#define DLG_INSERT_BOOKMARK (RC_MISC_BEGIN + 17)
+#define DLG_NUM_NAMES (RC_MISC_BEGIN + 18)
+#define DLG_SORTING (RC_MISC_BEGIN + 19)
+#define DLG_CHARMAP (RC_MISC_BEGIN + 20)
+#define DLG_AUTOCORR (RC_MISC_BEGIN + 23)
+#define DLG_AUTOFMT_OPT (RC_MISC_BEGIN + 24)
+#define DLG_RENAME_GLOS (RC_MISC_BEGIN + 25)
+#define DLG_AUTOFMT_TAB (RC_MISC_BEGIN + 26)
+#define DLG_PRCNT_SET (RC_MISC_BEGIN + 27)
+#define DLG_INSERT_RULER (RC_MISC_BEGIN + 28)
+#define DLG_REDLINE_ACCEPT (RC_MISC_BEGIN + 29)
+#define DLG_SEL_TEMPLATE (RC_MISC_BEGIN + 30)
+#define DLG_TAB_OUTLINE (RC_MISC_BEGIN + 31)
+#define DLG_MOD_REDLINE_ACCEPT (RC_MISC_BEGIN + 32)
+
+
+#define MSG_DOUBLE_SHORTNAME (RC_MISC_BEGIN + 30)
+#define MSG_QUERY_DELETE (RC_MISC_BEGIN + 31)
+#define STR_QUERY_DELETE_GROUP1 (RC_MISC_BEGIN + 32)
+#define STR_QUERY_DELETE_GROUP2 (RC_MISC_BEGIN + 33)
+#define MSG_NO_GLOSSARIES (RC_MISC_BEGIN + 34)
+
+#define BMP_ROOT_CLOSED (RC_MISC_BEGIN + 35)
+#define BMP_ROOT_OPENED (RC_MISC_BEGIN + 36)
+
+#define MSG_BLOCK_CREATE_ERR (RC_MISC_BEGIN + 40)
+#define MSG_BLOCK_DELETE_ERR (RC_MISC_BEGIN + 41)
+#define MSG_SRTERR (RC_MISC_BEGIN + 42)
+
+#define STR_GLOSSARY (RC_MISC_BEGIN + 43)
+#define STR_CHANGE_START (RC_MISC_BEGIN + 44)
+#define STR_CHANGE_END (RC_MISC_BEGIN + 45)
+#define STR_SAVE_GLOSSARY (RC_MISC_BEGIN + 46)
+
+#define STR_FULLNUMS_START (RC_MISC_BEGIN + 47)
+#define STR_FULLNUMS_1 (STR_FULLNUMS_START )
+#define STR_FULLNUMS_2 (STR_FULLNUMS_START + 1)
+#define STR_FULLNUMS_3 (STR_FULLNUMS_START + 2)
+#define STR_FULLNUMS_4 (STR_FULLNUMS_START + 3)
+#define STR_FULLNUMS_5 (STR_FULLNUMS_START + 4)
+#define STR_FULLNUMS_6 (STR_FULLNUMS_START + 5)
+#define STR_FULLNUMS_7 (STR_FULLNUMS_START + 6)
+#define STR_FULLNUMS_8 (STR_FULLNUMS_START + 7)
+
+#define STR_BULLET_THEME (RC_MISC_BEGIN + 55)
+#define MSG_NO_BULLETS (RC_MISC_BEGIN + 56)
+
+#define STR_NUMRULE_UNKNOWN (RC_MISC_BEGIN + 60)
+#define MN_REDLINE_POPUP (RC_MISC_BEGIN + 61)
+#define STR_REMOVE_WARNING (RC_MISC_BEGIN + 62)
+
+#define MISC_ACT_END STR_REMOVE_WARNING
+
+#if MISC_ACT_END > RC_MISC_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+#endif // _MISC_HRC
diff --git a/sw/source/ui/inc/multmrk.hxx b/sw/source/ui/inc/multmrk.hxx
new file mode 100644
index 000000000000..917c3d05b4c0
--- /dev/null
+++ b/sw/source/ui/inc/multmrk.hxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * $RCSfile: multmrk.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _MULTMRK_HXX
+#define _MULTMRK_HXX
+
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+class SwTOXMgr;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Markierung fuer Verzeichniseintrag einfuegen
+ --------------------------------------------------------------------*/
+
+class SwMultiTOXMarkDlg : public SvxStandardDialog
+{
+ DECL_LINK( SelectHdl, ListBox * );
+
+ FixedText aEntryFT;
+ FixedInfo aTextFT;
+ FixedText aTOXFT;
+ ListBox aTOXLB;
+ GroupBox aTOXGB;
+ OKButton aOkBT;
+ CancelButton aCancelBT;
+
+ SwTOXMgr &rMgr;
+ USHORT nPos;
+
+ void Apply();
+public:
+ SwMultiTOXMarkDlg( Window* pParent, SwTOXMgr &rTOXMgr );
+ ~SwMultiTOXMarkDlg();
+};
+
+
+#endif // _MULTMRK_HXX
+
diff --git a/sw/source/ui/inc/navicfg.hxx b/sw/source/ui/inc/navicfg.hxx
new file mode 100644
index 000000000000..50ff2183c6d8
--- /dev/null
+++ b/sw/source/ui/inc/navicfg.hxx
@@ -0,0 +1,154 @@
+/*************************************************************************
+ *
+ * $RCSfile: navicfg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _NAVICFG_HXX
+#define _NAVICFG_HXX
+
+#ifndef _UTL_CONFIGITEM_HXX_
+#include <unotools/configitem.hxx>
+#endif
+/* -----------------------------08.09.00 16:27--------------------------------
+
+ ---------------------------------------------------------------------------*/
+class SwNavigationConfig : public utl::ConfigItem
+{
+ sal_Int32 nRootType; //RootType
+ sal_Int32 nSelectedPos; //SelectedPosition
+ sal_Int32 nOutlineLevel; //OutlineLevel
+ sal_Int32 nRegionMode; //InsertMode
+ sal_Int32 nActiveBlock; //ActiveBlock//Expand/CollapsState
+ sal_Bool bIsSmall; //ShowListBox
+ sal_Bool bIsGlobalActive; //GlobalDocMode// Globalansicht fuer GlobalDoc gueltig?
+
+ com::sun::star::uno::Sequence<rtl::OUString> GetPropertyNames();
+
+public:
+ SwNavigationConfig();
+ ~SwNavigationConfig();
+
+ virtual void Commit();
+
+ sal_Int32 GetRootType()const {return nRootType;}
+ void SetRootType(sal_Int32 nSet){
+ if(nRootType != nSet)
+ {
+ SetModified();
+ nRootType = nSet;
+ }
+ }
+
+ sal_Int32 GetSelectedPos()const {return nSelectedPos;}
+ void SetSelectedPos(sal_Int32 nSet){
+ if(nSelectedPos != nSet)
+ {
+ SetModified();
+ nSelectedPos = nSet;
+ }
+ }
+
+
+ sal_Int32 GetOutlineLevel()const {return nOutlineLevel;}
+ void SetOutlineLevel(sal_Int32 nSet){
+ if(nOutlineLevel != nSet)
+ {
+ SetModified();
+ nOutlineLevel = nSet;
+ }
+ }
+
+ sal_Int32 GetRegionMode()const {return nRegionMode;}
+ void SetRegionMode(sal_Int32 nSet){
+ if(nRegionMode != nSet)
+ {
+ SetModified();
+ nRegionMode = nSet;
+ }
+ }
+
+
+ sal_Int32 GetActiveBlock()const {return nActiveBlock;}
+ void SetActiveBlock(sal_Int32 nSet){
+ if(nActiveBlock != nSet)
+ {
+ SetModified();
+ nActiveBlock = nSet;
+ }
+ }
+
+ sal_Bool IsSmall() const {return bIsSmall;}
+ void SetSmall(sal_Bool bSet){
+ if(bIsSmall != bSet)
+ {
+ SetModified();
+ bIsSmall = bSet;
+ }
+ }
+
+ sal_Bool IsGlobalActive() const {return bIsGlobalActive;}
+ void SetGlobalActive(sal_Bool bSet){
+ if(bIsGlobalActive != bSet)
+ {
+ SetModified();
+ bIsGlobalActive = bSet;
+ }
+ }
+};
+#endif
+
diff --git a/sw/source/ui/inc/navicont.hxx b/sw/source/ui/inc/navicont.hxx
new file mode 100644
index 000000000000..d273c1e98e38
--- /dev/null
+++ b/sw/source/ui/inc/navicont.hxx
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * $RCSfile: navicont.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _NAVICONT_HXX
+#define _NAVICONT_HXX
+
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+class SwDocShell;
+class SotDataObject;
+
+/*-----------------06.02.97 19.10-------------------
+
+--------------------------------------------------*/
+
+
+class NaviContentBookmark
+
+/* [Beschreibung]
+
+ Navigator-Bookmark zur eindeutigen Identifizierung im Sw
+
+*/
+
+{
+ String aUrl; // URL inkl. Sprungmarke
+ String aDescr; // Description
+ long nDocSh; // Adresse der DocShell
+ USHORT nDefDrag; // Description enthaelt defaultDragType
+
+protected:
+
+public:
+ NaviContentBookmark( const String &rUrl, const String& rDesc,
+ USHORT nDragType, const SwDocShell* );
+ NaviContentBookmark();
+
+ const String& GetURL() const { return aUrl; }
+ const String& GetDescription() const { return aDescr; }
+ USHORT GetDefaultDragType() const { return nDefDrag; }
+ long GetDocShell() const {return(nDocSh);}
+
+ static BOOL DragServerHasFormat( USHORT nItem, const SwDocShell* pDocSh );
+ static ULONG HasFormat( SotDataObject& rObj );
+
+
+ BOOL CopyDragServer() const;
+ BOOL PasteDragServer( USHORT nItem );
+ BOOL Paste( SotDataObject& rObj, ULONG nFormat );
+};
+
+#endif
diff --git a/sw/source/ui/inc/navipi.hxx b/sw/source/ui/inc/navipi.hxx
new file mode 100644
index 000000000000..73f500293e91
--- /dev/null
+++ b/sw/source/ui/inc/navipi.hxx
@@ -0,0 +1,235 @@
+/*************************************************************************
+ *
+ * $RCSfile: navipi.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _NAVIPI_HXX
+#define _NAVIPI_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+#ifndef _SFXCTRLITEM_HXX //autogen
+#include <sfx2/ctrlitem.hxx>
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+
+#include "conttree.hxx"
+#include "popbox.hxx"
+
+class SwWrtShell;
+class SwNavigationPI;
+class SwNavigationChild;
+class SfxBindings;
+class NumEditAction;
+class SwView;
+class SwNavigationConfig;
+class SfxObjectShellLock;
+class SfxChildWindowContext;
+
+//-----------------------------------------------------------------------
+
+class SwNavHelpToolBox : public SwHelpToolBox
+{
+ virtual void MouseButtonDown(const MouseEvent &rEvt);
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+
+ public:
+ SwNavHelpToolBox(Window* pParent, const ResId &rResId) :
+ SwHelpToolBox(pParent, rResId){}
+};
+
+
+// CLASS -----------------------------------------------------------------
+class SwNavigationPI: public Window,
+ public SfxControllerItem, public SfxListener
+{
+ friend class SwNavigationChild;
+ friend class SwContentTree;
+ friend class SwGlobalTree;
+
+private:
+
+ SwNavHelpToolBox aContentToolBox;
+ SwHelpToolBox aGlobalToolBox;
+ ImageList aContentImageList;
+ SwContentTree aContentTree;
+ SwGlobalTree aGlobalTree;
+ ListBox aDocListBox;
+
+ Timer aPageChgTimer;
+
+ SfxObjectShellLock* pxObjectShell;
+ SwView* pContentView;
+ SwWrtShell* pContentWrtShell;
+ SwView* pActContView;
+
+ SfxChildWindowContext* pContextWin;
+
+ SwNavigationConfig* pConfig;
+
+ String sContentFileName;
+ String aContextArr[3];
+ String aStatusArr[4];
+
+ Point aBoxBottomLeft; // Pos., wenn Box unten ist
+ long nDocLBIniHeight;
+ long nWishWidth;
+ USHORT nActMark;
+ USHORT nAutoMarkIdx;
+ USHORT nRegionMode; // 0 - URL, 1 - Bereich mit Link 2 - B. ohne Link
+ short nZoomIn;
+ short nZoomOutInit;
+ short nZoomOut;
+
+ BOOL bSmallMode : 1;
+ BOOL bIsZoomedIn : 1;
+ BOOL bPageCtrlsVisible : 1;
+ BOOL bGlobalMode : 1;
+
+ SfxBindings &rBindings;
+
+ BOOL _IsZoomedIn() const {return bIsZoomedIn;}
+ void _ZoomOut();
+ void _ZoomIn();
+
+ void FillBox();
+ void MakeMark();
+
+ DECL_LINK( DocListBoxSelectHdl, ListBox * );
+ DECL_LINK( ToolBoxSelectHdl, ToolBox * );
+ DECL_LINK( ToolBoxClickHdl, ToolBox * );
+ DECL_LINK( EditAction, NumEditAction * );
+ DECL_LINK( EditGetFocus, NumEditAction * );
+ DECL_LINK( DoneLink, SfxPoolItem * );
+ DECL_LINK( MenuSelectHdl, Menu * );
+ DECL_LINK( ReadOnlyHdl, void * );
+ DECL_LINK( ChangePageHdl, Timer* );
+ DECL_LINK( PageEditModifyHdl, Edit* );
+ void UsePage(SwWrtShell *);
+
+ void MakeVisible();
+
+ virtual SfxChildAlignment
+ CheckAlignment(SfxChildAlignment,SfxChildAlignment);
+
+protected:
+
+ virtual BOOL Close();
+ virtual void Resize();
+
+ virtual BOOL Drop( const DropEvent& rEvt);
+ virtual BOOL QueryDrop( DropEvent& rEvt);
+
+ // zum App-Ende rechtzeitig ObjectShellLock loslassen
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ NumEditAction& GetPageEdit();
+ BOOL ToggleTree();
+ void SetGlobalMode(BOOL bSet) {bGlobalMode = bSet;}
+
+
+public:
+ SwNavigationPI(SfxBindings*, SfxChildWindowContext*, Window*);
+ ~SwNavigationPI();
+
+ void GotoPage(); // Seite anspringen; bindbare Funktion
+
+ void Update() { FillBox(); }
+ void UpdateListBox();
+ void MoveOutline(USHORT nSource, USHORT nTarget, BOOL bWithCilds);
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+
+ static String CreateDropFileName(USHORT nItem);
+ static void CleanEntry( String& rEntry );
+
+ USHORT GetRegionDropMode() const {return nRegionMode;}
+ void SetRegionDropMode(USHORT nNewMode);
+ BOOL IsInDrag() const;
+
+ BOOL IsGlobalDoc() const;
+ BOOL IsGlobalMode() const {return bGlobalMode;}
+
+};
+
+class SwNavigationChild : public SfxChildWindowContext
+{
+protected:
+ virtual BOOL Drop( const DropEvent& rEvt);
+ virtual BOOL QueryDrop( DropEvent& rEvt);
+public:
+ SwNavigationChild( Window* ,
+ USHORT nId,
+ SfxBindings*,
+ SfxChildWinInfo* );
+
+ SFX_DECL_CHILDWINDOW_CONTEXT( SwNavigationChild )
+
+};
+#endif
diff --git a/sw/source/ui/inc/num.hxx b/sw/source/ui/inc/num.hxx
new file mode 100644
index 000000000000..710b359ebda0
--- /dev/null
+++ b/sw/source/ui/inc/num.hxx
@@ -0,0 +1,236 @@
+/*************************************************************************
+ *
+ * $RCSfile: num.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:40 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _NUM_HXX
+#define _NUM_HXX
+
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+#ifndef _MENUBTN_HXX //autogen
+#include <vcl/menubtn.hxx>
+#endif
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.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 _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+#ifndef _NUMPREVW_HXX
+#include <numprevw.hxx>
+#endif
+#ifndef _SVX_NUMPAGES_HXX
+#include <svx/numpages.hxx>
+#endif
+#include "numrule.hxx"
+#include "bmpwin.hxx" // BmpWindow
+
+class SwWrtShell;
+class SwDocShell;
+class SwUiNumRules;
+class SwCharFmt;
+class SvxBrushItem;
+class SwOutlineTabDialog;
+
+
+/*-----------------13.02.97 14.02-------------------
+
+--------------------------------------------------*/
+
+struct SwBmpItemInfo
+{
+ SvxBrushItem* pBrushItem;
+ USHORT nItemId;
+};
+
+
+/*-----------------07.02.97 15.37-------------------
+
+--------------------------------------------------*/
+#define NUM_PAGETYPE_BULLET 0
+#define NUM_PAGETYPE_SINGLENUM 1
+#define NUM_PAGETYPE_NUM 2
+#define NUM_PAGETYPE_BMP 3
+#define PAGETYPE_USER_START 10
+
+
+
+/*-----------------08.02.97 10.48-------------------
+ struct aktuelle Numerierung, wird in einem PointerItem
+ uebertragen und von allen Tabpages geshared
+--------------------------------------------------*/
+
+class SwNumValueSet;
+class ValueSet;
+class SwBmpNumValueSet;
+
+
+/*-----------------03.12.97 10:18-------------------
+
+--------------------------------------------------*/
+class SwNumPositionTabPage : public SfxTabPage
+{
+ GroupBox aLevelGB;
+ MultiListBox aLevelLB;
+
+ GroupBox aPositionGB;
+ FixedText aAlignFT;
+ ListBox aAlignLB;
+ FixedText aDistBorderFT;
+ CheckBox aRelativeCB;
+ MetricField aDistBorderMF;
+ FixedText aIndentFT;
+ MetricField aIndentMF;
+ FixedText aDistNumFT;
+ MetricField aDistNumMF;
+ PushButton aStandardPB;
+
+ GroupBox aPreviewGB;
+ NumberingPreview aPreviewWIN;
+
+ SwNumRule* pActNum;
+ SwNumRule* pSaveNum;
+ SwWrtShell* pWrtSh;
+
+ SwOutlineTabDialog* pOutlineDlg;
+ USHORT nActNumLvl;
+
+ BOOL bModified : 1;
+ BOOL bHasChild : 1;
+ BOOL bPreset : 1;
+ BOOL bInInintControl : 1; //Modify-Fehler umgehen, soll ab 391 behoben sein
+
+// void SetMinDist();
+ void InitControls();
+
+ DECL_LINK( LevelHdl, ListBox * );
+ DECL_LINK( EditModifyHdl, Edit*);
+ DECL_LINK( DistanceHdl, MetricField * );
+ DECL_LINK( RelativeHdl, CheckBox * );
+ DECL_LINK( StandardHdl, PushButton * );
+
+ public:
+ SwNumPositionTabPage(Window* pParent,
+ const SfxItemSet& rSet);
+ ~SwNumPositionTabPage();
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet *pSet);
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet);
+
+ void SetOutlineTabDialog(SwOutlineTabDialog* pDlg){pOutlineDlg = pDlg;}
+ void SetWrtShell(SwWrtShell* pSh);
+#ifdef DEBUG
+ void SetModified(BOOL bRepaint = TRUE);
+#else
+ void SetModified(BOOL bRepaint = TRUE)
+ {bModified = TRUE;
+ if(bRepaint)
+ {
+ aPreviewWIN.SetLevel(nActNumLvl);
+ aPreviewWIN.Invalidate();
+ }
+ }
+#endif
+};
+
+class SwSvxNumBulletTabDialog : public SfxTabDialog
+{
+ SwWrtShell& rWrtSh;
+
+ String sRemoveText;
+ int nRetOptionsDialog;
+
+ protected:
+ virtual short Ok();
+ virtual void PageCreated(USHORT nPageId, SfxTabPage& rPage);
+ DECL_LINK(RemoveNumberingHdl, PushButton*);
+ public:
+ SwSvxNumBulletTabDialog(Window* pParent,
+ const SfxItemSet* pSwItemSet,
+ SwWrtShell &);
+ ~SwSvxNumBulletTabDialog();
+};
+#endif // _NUM_CXX
+
diff --git a/sw/source/ui/inc/numfmtlb.hxx b/sw/source/ui/inc/numfmtlb.hxx
new file mode 100644
index 000000000000..2a050a9e1957
--- /dev/null
+++ b/sw/source/ui/inc/numfmtlb.hxx
@@ -0,0 +1,116 @@
+/*************************************************************************
+ *
+ * $RCSfile: numfmtlb.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWNUMFMTLB_HXX
+#define _SWNUMFMTLB_HXX
+
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _ZFORLIST_HXX //autogen
+#include <svtools/zforlist.hxx>
+#endif
+
+class SwView;
+
+class NumFormatListBox : public ListBox
+{
+ short nCurrFormatType;
+ USHORT nStdEntry;
+ BOOL bOneArea;
+ ULONG nDefFormat;
+ SwView* pVw;
+ SvNumberFormatter* pOwnFormatter;
+ LanguageType eCurLanguage;
+
+ DECL_LINK( SelectHdl, ListBox * );
+
+ double GetDefValue(SvNumberFormatter* pFormatter, const short nFormatType) const;
+ void Init(short nFormatType, BOOL bUsrFmts);
+ SwView* GetView();
+
+public:
+ NumFormatListBox( Window* pWin, const ResId& rResId,
+ short nFormatType = NUMBERFORMAT_NUMBER, ULONG nDefFmt = 0,
+ BOOL bUsrFmts = TRUE );
+
+ NumFormatListBox( Window* pWin, SwView* pView, const ResId& rResId,
+ short nFormatType = NUMBERFORMAT_NUMBER, ULONG nDefFmt = 0,
+ BOOL bUsrFmts = TRUE );
+
+ ~NumFormatListBox();
+
+ void Clear();
+
+ inline void SetOneArea(BOOL bOnlyOne = TRUE) { bOneArea = bOnlyOne; }
+
+ void SetFormatType(const short nFormatType);
+ inline short GetFormatType() const { return nCurrFormatType; }
+ void SetDefFormat(const ULONG nDefFmt);
+ ULONG GetFormat() const;
+ const String& GetFormatStr() const;
+
+ inline LanguageType GetCurLanguage() const { return eCurLanguage;}
+};
+
+
+#endif
+
diff --git a/sw/source/ui/inc/numpara.hxx b/sw/source/ui/inc/numpara.hxx
new file mode 100644
index 000000000000..21229ecdd084
--- /dev/null
+++ b/sw/source/ui/inc/numpara.hxx
@@ -0,0 +1,134 @@
+/*************************************************************************
+ *
+ * $RCSfile: numpara.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _NUMPARA_HXX
+#define _NUMPARA_HXX
+
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+
+/* --- class SwParagraphNumTabPage ----------------------------------------
+ Mit dieser TabPage werden Numerierungseinstellungen am Absatz bzw. der
+ Absatzvorlage vorgenommen.
+
+ ---------------------------------------------------------------------------*/
+class SwParagraphNumTabPage : public SfxTabPage
+{
+ GroupBox aNumberStyleGB;
+ ListBox aNumberStyleLB;
+
+ GroupBox aNewStartGB;
+ TriStateBox aNewStartCB;
+ FixedText aNewStartFT;
+ NumericField aNewStartNF;
+
+ GroupBox aCountParaGB;
+ TriStateBox aCountParaCB;
+ TriStateBox aRestartParaCountCB;
+ FixedText aRestartFT;
+ NumericField aRestartNF;
+
+ BOOL bModified : 1;
+ BOOL bCurNumrule : 1;
+
+ DECL_LINK( NewStartHdl_Impl, CheckBox* );
+ DECL_LINK( StyleHdl_Impl, ListBox* );
+ DECL_LINK( LineCountHdl_Impl, CheckBox* );
+
+protected:
+ SwParagraphNumTabPage(Window* pParent, const SfxItemSet& rSet );
+
+public:
+ ~SwParagraphNumTabPage();
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rSet );
+ static USHORT* GetRanges();
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+ void EnableNewStart();
+
+ ListBox& GetStyleBox() {return aNumberStyleLB;};
+
+};
+
+
+#endif
+
diff --git a/sw/source/ui/inc/numprevw.hxx b/sw/source/ui/inc/numprevw.hxx
new file mode 100644
index 000000000000..729d85402745
--- /dev/null
+++ b/sw/source/ui/inc/numprevw.hxx
@@ -0,0 +1,107 @@
+/*************************************************************************
+ *
+ * $RCSfile: numprevw.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _NUMPREVW_HXX
+#define _NUMPREVW_HXX
+
+
+#ifndef _SV_WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+
+class SwNumRule;
+/*-----------------02.12.97 10:31-------------------
+
+--------------------------------------------------*/
+
+class NumberingPreview : public Window
+{
+ const SwNumRule* pActNum;
+ Font aStdFont;
+ long nPageWidth;
+ const String* pOutlineNames;
+ BOOL bPosition;
+ UINT16 nActLevel;
+
+ protected:
+ virtual void Paint( const Rectangle& rRect );
+
+ public:
+ NumberingPreview(Window* pParent, const ResId& rResId ) :
+ Window(pParent, rResId),
+ pActNum(0),nPageWidth(0), pOutlineNames(0), bPosition(FALSE), nActLevel(USHRT_MAX) {}
+ ~NumberingPreview();
+
+ void SetNumRule(const SwNumRule* pNum)
+ {pActNum = pNum; Invalidate();};
+ void SetPageWidth(long nPgWidth)
+ {nPageWidth = nPgWidth;}
+ void SetOutlineNames(const String* pNames)
+ {pOutlineNames = pNames;}
+ void SetPositionMode()
+ { bPosition = TRUE;}
+ void SetLevel(USHORT nSet) {nActLevel = nSet;}
+
+};
+
+#endif
+
+
diff --git a/sw/source/ui/inc/olesh.hxx b/sw/source/ui/inc/olesh.hxx
new file mode 100644
index 000000000000..2f1742dcb8ba
--- /dev/null
+++ b/sw/source/ui/inc/olesh.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * $RCSfile: olesh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWOLESH_HXX
+#define _SWOLESH_HXX
+
+#include "frmsh.hxx"
+
+class SwOleShell: public SwFrameShell
+{
+public:
+ SFX_DECL_INTERFACE(SW_OLESHELL);
+
+ SwOleShell(SwView &rView);
+
+};
+
+#endif
+
+
+
+
+
+
+
diff --git a/sw/source/ui/inc/olmenu.hxx b/sw/source/ui/inc/olmenu.hxx
new file mode 100644
index 000000000000..5c5f66d4dfc0
--- /dev/null
+++ b/sw/source/ui/inc/olmenu.hxx
@@ -0,0 +1,102 @@
+/*************************************************************************
+ *
+ * $RCSfile: olmenu.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _OLMENU_HXX
+#define _OLMENU_HXX
+
+#ifndef _COM_SUN_STAR_LINGUISTIC_XDICTIONARY_HPP_
+#include <com/sun/star/linguistic/XDictionary.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XSPELLALTERNATIVES_HPP_
+#include <com/sun/star/linguistic/XSpellAlternatives.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XOTHERLINGU_HPP_
+#include <com/sun/star/linguistic/XOtherLingu.hpp>
+#endif
+
+#ifndef _MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+
+class SwWrtShell;
+class SvStringsDtor;
+
+class SwSpellPopup : public PopupMenu
+{
+ SwWrtShell* pSh;
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XDictionary > > aDics;
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XSpellAlternatives > xSpellAlt;
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XOtherLingu> xOther;
+ LanguageType nCorrLang;
+
+public:
+ SwSpellPopup( SwWrtShell*,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XSpellAlternatives > &xAlt );
+
+ sal_uInt16 Execute( Window* pWin, const Point& rPopupPos );
+};
+
+
+#endif
+
diff --git a/sw/source/ui/inc/optload.hxx b/sw/source/ui/inc/optload.hxx
new file mode 100644
index 000000000000..71b65ae5ffc4
--- /dev/null
+++ b/sw/source/ui/inc/optload.hxx
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * $RCSfile: optload.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the 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 SwWrtShell;
+
+/*-----------------31.08.96 10.09-------------------
+
+--------------------------------------------------*/
+
+class SwLoadOptPage : public SfxTabPage
+{
+private:
+ RadioButton aAlwaysRB;
+ RadioButton aRequestRB;
+ RadioButton aNeverRB;
+ CheckBox aLinkDocOnlyCB;
+ GroupBox aLinkGB;
+
+ CheckBox aAutoUpdateFields;
+ CheckBox aAutoUpdateCharts;
+ CheckBox aFldDocOnlyCB;
+ GroupBox aFldGB;
+
+ CheckBox aMergeDistCB;
+ CheckBox aMergeDistPageStartCB;
+ GroupBox aCompatGB;
+
+ SwWrtShell* pWrtShell;
+ USHORT nOldLinkMode;
+
+ DECL_LINK( UpdateHdl, CheckBox* );
+
+public:
+ SwLoadOptPage( Window* pParent,
+ const SfxItemSet& rSet );
+ ~SwLoadOptPage();
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet);
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+};
+
+#endif
+
+
diff --git a/sw/source/ui/inc/optpage.hxx b/sw/source/ui/inc/optpage.hxx
new file mode 100644
index 000000000000..87942b306da8
--- /dev/null
+++ b/sw/source/ui/inc/optpage.hxx
@@ -0,0 +1,531 @@
+/*************************************************************************
+ *
+ * $RCSfile: optpage.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _OPTPAGE_HXX
+#define _OPTPAGE_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
+
+class SvStringsDtor;
+class SfxPrinter;
+class SwStdFontConfig;
+class SwWrtShell;
+
+/*-----------------31.08.96 10.09-------------------
+
+--------------------------------------------------*/
+
+class SwContentOptPage : public SfxTabPage
+{
+
+private:
+ GroupBox aDispBox;
+ CheckBox aGrfCB;
+ CheckBox aTblCB;
+ CheckBox aDrwCB;
+ CheckBox aFldNameCB;
+ CheckBox aPostItCB;
+
+ GroupBox aBackBox;
+ CheckBox aIdxEntryCB;
+ CheckBox aIdxBackCB;
+ CheckBox aFootBackCB;
+ CheckBox aFldBackCB;
+
+ GroupBox aUnprintBox;
+ CheckBox aParaCB;
+ CheckBox aSHyphCB;
+ CheckBox aSpacesCB;
+ CheckBox aHSpacesCB;
+ CheckBox aTabCB;
+ CheckBox aBreakCB;
+ CheckBox aHiddenCB;
+ CheckBox aHiddenParaCB;
+
+public:
+ SwContentOptPage( Window* pParent,
+ const SfxItemSet& rSet );
+ ~SwContentOptPage();
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet);
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+};
+
+/*-----------------31.08.96 10.10-------------------
+
+--------------------------------------------------*/
+
+class SwLayoutOptPage : public SfxTabPage
+{
+
+ GroupBox aLineGB;
+ CheckBox aTxtbegCB;
+ CheckBox aTblbegCB;
+ CheckBox aSectBoundsCB;
+ CheckBox aCrossCB;
+ CheckBox aSolidHandleCB;
+ CheckBox aBigHandleCB;
+
+ GroupBox aWindowGB;
+ CheckBox aHScrollBox;
+ CheckBox aVScrollBox;
+ CheckBox aHRulerCBox;
+ CheckBox aVRulerCBox;
+ CheckBox aSmoothCBox;
+
+ ListBox aMetricLB;
+ GroupBox aMetricGB;
+
+ GroupBox aTabGB;
+ MetricField aTabMF;
+
+ UINT16 nLastTab;
+
+ SvxStringArray aMetricArr;
+
+ DECL_LINK(MetricHdl, ListBox*);
+
+ SwLayoutOptPage( Window* pParent,
+ const SfxItemSet& rSet );
+ ~SwLayoutOptPage();
+public:
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet);
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+};
+
+/*-------- OS 27.01.95 -----------------------------------
+ TabPage Druckereinstellungen Zusaetze
+--------------------------------------------------------- */
+
+
+class SwAddPrinterTabPage : public SfxTabPage
+{
+ CheckBox aGrfCB;
+ CheckBox aTabCB;
+ CheckBox aDrawCB;
+ CheckBox aCtrlFldCB;
+ CheckBox aBackgroundCB;
+ CheckBox aBlackFontCB;
+ GroupBox aGroup1;
+ CheckBox aLeftPageCB;
+ CheckBox aRightPageCB;
+ CheckBox aReverseCB;
+ CheckBox aProspectCB;
+ GroupBox aGroup2;
+ RadioButton aNoRB;
+ RadioButton aOnlyRB;
+ RadioButton aEndRB;
+ RadioButton aEndPageRB;
+ GroupBox aGroup3;
+ CheckBox aSingleJobsCB;
+ GroupBox aGroup4;
+ ListBox aFaxLB;
+ GroupBox aFaxGB;
+ CheckBox aPaperFromSetupCB;
+ GroupBox aGroup5;
+
+ BOOL bAttrModified;
+ BOOL bPreview;
+
+ void Init();
+ DECL_LINK( AutoClickHdl, CheckBox * );
+ DECL_LINK( SelectHdl, ListBox * );
+
+
+ SwAddPrinterTabPage( Window* pParent,
+ const SfxItemSet& rSet );
+
+public:
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet );
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+ void SetFax( const SvStringsDtor& );
+ void SelectFax( const String& );
+ void SetPreview(BOOL bPrev);
+
+};
+
+/*-----------------03.09.96 11.50-------------------
+
+--------------------------------------------------*/
+
+class SwStdFontTabPage : public SfxTabPage
+{
+ FixedText aStandardLbl;
+ ComboBox aStandardBox;
+ FixedText aTitleLbl ;
+ ComboBox aTitleBox ;
+ FixedText aListLbl ;
+ ComboBox aListBox ;
+ FixedText aLabelLbl ;
+ ComboBox aLabelBox ;
+ FixedText aIdxLbl ;
+ ComboBox aIdxBox ;
+ CheckBox aDocOnlyCB ;
+ GroupBox aStdChrFrm ;
+ PushButton aStandardPB;
+
+ String sShellStd;
+ String sShellTitle;
+ String sShellList;
+ String sShellLabel;
+ String sShellIndex;
+
+ SfxPrinter* pPrt;
+ SwStdFontConfig* pFontConfig;
+ SwWrtShell* pWrtShell;
+ // waren nur defaults vorhanden? wurden sie mit den Boxen ueberschrieben
+ BOOL bListDefault :1;
+ BOOL bSetListDefault :1;
+ BOOL bLabelDefault :1;
+ BOOL bSetLabelDefault :1;
+ BOOL bIdxDefault :1;
+ BOOL bSetIdxDefault :1;
+ BOOL bDeletePrinter :1;
+
+
+
+ DECL_LINK( StandardHdl, PushButton * );
+ DECL_LINK( ModifyHdl, ComboBox * );
+
+ SwStdFontTabPage( Window* pParent,
+ const SfxItemSet& rSet );
+ ~SwStdFontTabPage();
+
+public:
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet );
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+};
+
+/*-----------------18.01.97 12.10-------------------
+
+--------------------------------------------------*/
+
+class SwTableOptionsTabPage : public SfxTabPage
+{
+ GroupBox aMoveGB;
+ FixedText aRowMoveFT;
+ MetricField aRowMoveMF;
+ FixedText aColMoveFT;
+ MetricField aColMoveMF;
+
+ GroupBox aInsertGB;
+ FixedText aRowInsertFT;
+ MetricField aRowInsertMF;
+ FixedText aColInsertFT;
+ MetricField aColInsertMF;
+
+ GroupBox aHandlingGB;
+ RadioButton aFixRB;
+ RadioButton aFixPropRB;
+ RadioButton aVarRB;
+ FixedText aFixFT;
+ FixedText aFixPropFT;
+ FixedText aVarFT;
+
+ FixedText aDescFT;
+
+ SwWrtShell* pWrtShell;
+
+
+ SwTableOptionsTabPage( Window* pParent,
+ const SfxItemSet& rSet );
+ ~SwTableOptionsTabPage();
+
+public:
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet );
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+ void SetWrtShell(SwWrtShell* pSh) {pWrtShell = pSh;}
+
+
+};
+/*-----------------19.04.97 13:17-------------------
+
+--------------------------------------------------*/
+class SwSourceViewOptionsTabPage : public SfxTabPage
+{
+ GroupBox aColorGB;
+ FixedText aSGMLFT;
+ ColorListBox aSGMLLB;
+ FixedText aCommentFT;
+ ColorListBox aCommentLB;
+ FixedText aKeywdFT;
+ ColorListBox aKeywdLB;
+ FixedText aUnknownFT;
+ ColorListBox aUnknownLB;
+
+ SwSourceViewOptionsTabPage( Window* pParent,
+ const SfxItemSet& rSet );
+ ~SwSourceViewOptionsTabPage();
+
+public:
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet );
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+};
+
+/*-----------------31.10.97 17:55-------------------
+ TabPage fuer ShadowCrsr
+--------------------------------------------------*/
+
+class SwShdwCrsrOptionsTabPage : public SfxTabPage
+{
+ GroupBox aFlagGB;
+ CheckBox aOnOffCB;
+
+ FixedText aFillModeFT;
+ RadioButton aFillMarginRB;
+ RadioButton aFillIndentRB;
+ RadioButton aFillTabRB;
+ RadioButton aFillSpaceRB;
+
+ FixedText aColorFT;
+ ColorListBox aColorLB;
+
+ GroupBox aCrsrOptGB;
+ CheckBox aCrsrInProtCB;
+
+ SwShdwCrsrOptionsTabPage( Window* pParent, const SfxItemSet& rSet );
+ ~SwShdwCrsrOptionsTabPage();
+
+public:
+
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet );
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+};
+
+/*-----------------------------------------------------------------------
+ Beschreibung: Markierungsvorschau
+ -----------------------------------------------------------------------*/
+
+class SwMarkPreview : public Window
+{
+ Color aTransColor; // Transparente Farbe
+ Color aMarkColor; // Farbe der Markierungen
+
+ Rectangle aPage;
+ Rectangle aLeftPagePrtArea;
+ Rectangle aRightPagePrtArea;
+
+ USHORT nMarkPos;
+
+ void DrawRect(const Rectangle &rRect, const Color &rFillColor, const Color &rLineColor);
+ void Paint(const Rectangle&);
+ void PaintPage(const Rectangle &rRect);
+
+public:
+
+ SwMarkPreview(Window* pParent, const ResId& rResID);
+ ~SwMarkPreview();
+
+ inline void SetColor(Color aCol) { aMarkColor = aCol; }
+ inline void SetMarkPos(USHORT nPos) { nMarkPos = nPos; }
+};
+
+/*-----------------------------------------------------------------------
+ Beschreibung: Redlining-Optionen
+ -----------------------------------------------------------------------*/
+
+class SwRedlineOptionsTabPage : public SfxTabPage
+{
+ RadioButton aInsertRB;
+ RadioButton aDeletedRB;
+ RadioButton aChangedRB;
+
+ FixedText aInsertFT;
+ ListBox aInsertLB;
+ ListBox aDeletedLB;
+ ListBox aChangedLB;
+ FixedText aInsertColorFT;
+ ColorListBox aInsertColorLB;
+ ColorListBox aDeletedColorLB;
+ ColorListBox aChangedColorLB;
+ SvxFontPrevWindow aAttribPreviewWN;
+ GroupBox aInsertGB;
+
+ FixedText aMarkPosFT;
+ ListBox aMarkPosLB;
+ FixedText aMarkColorFT;
+ ColorListBox aMarkColorLB;
+ SwMarkPreview aMarkPreviewWN;
+ GroupBox aChangedGB;
+ String sAuthor;
+ String sNone;
+
+ SwRedlineOptionsTabPage( Window* pParent, const SfxItemSet& rSet );
+ ~SwRedlineOptionsTabPage();
+
+ DECL_LINK( RadioHdl, RadioButton *pRB );
+
+ DECL_LINK( AttribHdl, ListBox *pLB );
+ DECL_LINK( ChangedMaskPrevHdl, ListBox *pLB = 0 );
+ DECL_LINK( ColorHdl, ColorListBox *pColorLB );
+
+ void InitFontStyle(SvxFontPrevWindow& rExampleWin);
+
+public:
+
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet );
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+};
+
+/*--------OS 11.01.95 -----------------------------------
+ TabPage Testeinstellungen fuer SW
+--------------------------------------------------------- */
+
+#ifndef PRODUCT
+
+class SwTestTabPage : public SfxTabPage
+{
+public:
+ SwTestTabPage( Window* pParent,
+ const SfxItemSet& rSet );
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet );
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+private:
+ GroupBox aTestGBox;
+ CheckBox aTest1CBox;
+ CheckBox aTest2CBox;
+ CheckBox aTest3CBox;
+ CheckBox aTest4CBox;
+ CheckBox aTest5CBox;
+ CheckBox aTest6CBox;
+ CheckBox aTest7CBox;
+ CheckBox aTest8CBox;
+ CheckBox aTest9CBox;
+ CheckBox aTest10CBox;
+
+ BOOL bAttrModified;
+
+ void Init();
+ DECL_LINK( AutoClickHdl, CheckBox * );
+
+};
+#endif //PRODUCT
+#endif
+
+
diff --git a/sw/source/ui/inc/outline.hxx b/sw/source/ui/inc/outline.hxx
new file mode 100644
index 000000000000..8205e1642270
--- /dev/null
+++ b/sw/source/ui/inc/outline.hxx
@@ -0,0 +1,209 @@
+/*************************************************************************
+ *
+ * $RCSfile: outline.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _OUTLINE_HXX
+#define _OUTLINE_HXX
+
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+
+#ifndef _SV_MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#include "swtypes.hxx" //fuer MAXLEVEL
+#ifndef _NUMPREVW_HXX
+#include <numprevw.hxx>
+#endif
+
+class SwWrtShell;
+class SwTxtFmtColl;
+class SwNumRule;
+class SwChapterNumRules;
+
+/* -----------------07.07.98 13:38-------------------
+ *
+ * --------------------------------------------------*/
+class SwOutlineTabDialog : public SfxTabDialog
+{
+ String aNullStr;
+ String aCollNames[MAXLEVEL];
+ PopupMenu aFormMenu;
+
+ SwWrtShell& rWrtSh;
+ SwNumRule* pNumRule;
+ SwChapterNumRules* pChapterNumRules;
+
+ USHORT nNumLevel;
+ BOOL bModified : 1;
+
+ protected:
+ DECL_LINK( CancelHdl, Button * );
+ DECL_LINK( FormHdl, Button * );
+ DECL_LINK( MenuSelectHdl, Menu * );
+
+ virtual void PageCreated(USHORT nPageId, SfxTabPage& rPage);
+ virtual short Ok();
+
+ public:
+ SwOutlineTabDialog(Window* pParent,
+ const SfxItemSet* pSwItemSet,
+ SwWrtShell &);
+ ~SwOutlineTabDialog();
+
+ SwNumRule* GetNumRule() {return pNumRule;}
+ USHORT GetLevel(const String &rFmtName) const;
+ String* GetCollNames() {return aCollNames;}
+ USHORT GetActNumLevel() {return nNumLevel;}
+ void SetActNumLevel(USHORT nSet) {nNumLevel = nSet;}
+};
+/* -----------------07.07.98 13:47-------------------
+ *
+ * --------------------------------------------------*/
+class SwOutlineSettingsTabPage : public SfxTabPage
+{
+ ListBox aLevelLB;
+ GroupBox aLevelGB;
+
+ FixedText aCollLbl;
+ ListBox aCollBox;
+ FixedText aNumberLbl;
+ ListBox aNumberBox;
+ FixedText aCharFmtFT;
+ ListBox aCharFmtLB;
+ FixedText aAllLevelFT;
+ NumericField aAllLevelNF;
+ FixedText aDelim;
+ FixedText aPrefixFT;
+ Edit aPrefixED;
+ FixedText aSuffixFT;
+ Edit aSuffixED;
+ FixedText aStartLbl;
+ NumericField aStartEdit;
+ GroupBox aNumberGrp;
+ GroupBox aPreviewGB;
+ NumberingPreview aPreviewWIN;
+
+ String aNoFmtName;
+ String aSaveCollNames[MAXLEVEL];
+ SwWrtShell* pSh;
+ SwNumRule* pNumRule;
+ String* pCollNames;
+ USHORT nActLevel;
+
+ DECL_LINK( LevelHdl, ListBox * );
+ DECL_LINK( ToggleComplete, NumericField * );
+ DECL_LINK( CollSelect, ListBox * );
+ DECL_LINK( CollSelectGetFocus, ListBox * );
+ DECL_LINK( NumberSelect, ListBox * );
+ DECL_LINK( DelimModify, Edit * );
+ DECL_LINK( StartModified, NumericField * );
+ DECL_LINK( CharFmtHdl, ListBox * );
+
+ void Update();
+
+ void SetModified(){aPreviewWIN.Invalidate();}
+
+
+public:
+ SwOutlineSettingsTabPage(Window* pParent, const SfxItemSet& rSet);
+ ~SwOutlineSettingsTabPage();
+
+ void SetWrtShell(SwWrtShell* pShell);
+
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet *pSet);
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet);
+};
+#endif
diff --git a/sw/source/ui/inc/pardlg.hxx b/sw/source/ui/inc/pardlg.hxx
new file mode 100644
index 000000000000..501f8f3ebe09
--- /dev/null
+++ b/sw/source/ui/inc/pardlg.hxx
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * $RCSfile: pardlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SW_PARDLG_HXX
+#define _SW_PARDLG_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+class SwView;
+class SfxItemSet;
+
+//DialogModes:
+#define DLG_STD 0
+#define DLG_ENVELOP 2
+
+class SwParaDlg: public SfxTabDialog
+{
+ SwView& rView;
+ USHORT nHtmlMode;
+ BYTE nDlgMode;
+ BOOL bDrawParaDlg;
+
+ void PageCreated(USHORT nID, SfxTabPage& rPage);
+
+public:
+ SwParaDlg( Window *pParent,
+ SwView& rVw,
+ const SfxItemSet&,
+ BYTE nDialogMode,
+ const String *pCollName = 0,
+ BOOL bDraw = FALSE,
+ UINT16 nDefPage = 0);
+ ~SwParaDlg();
+};
+
+
+#endif
diff --git a/sw/source/ui/inc/pattern.hxx b/sw/source/ui/inc/pattern.hxx
new file mode 100644
index 000000000000..b4ebc857d621
--- /dev/null
+++ b/sw/source/ui/inc/pattern.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: pattern.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _PATTERN_HXX
+#define _PATTERN_HXX
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+class Window;
+class SfxItemSet;
+
+class SwBackgroundDlg : public SfxSingleTabDialog
+{
+public:
+
+ SwBackgroundDlg(Window* pParent, const SfxItemSet& rSet);
+ ~SwBackgroundDlg();
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/pgfnote.hxx b/sw/source/ui/inc/pgfnote.hxx
new file mode 100644
index 000000000000..a350a774545d
--- /dev/null
+++ b/sw/source/ui/inc/pgfnote.hxx
@@ -0,0 +1,141 @@
+/*************************************************************************
+ *
+ * $RCSfile: pgfnote.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _PGFNOTE_HXX
+#define _PGFNOTE_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifdef VCL
+#ifndef _CTRLBOX_HXX
+#include <svtools/ctrlbox.hxx>
+#endif
+#else
+#include "linbox.hxx"
+#endif
+#include "colex.hxx"
+
+/*--------------------------------------------------------------------
+ Beschreibung: Fussnoteneinstellungs-TabPage
+ --------------------------------------------------------------------*/
+
+class SwFootNotePage: public SfxTabPage
+{
+public:
+ static SfxTabPage *Create(Window *pParent, const SfxItemSet &rSet);
+ static USHORT* GetRanges();
+
+ virtual BOOL FillItemSet(SfxItemSet &rSet);
+ virtual void Reset(const SfxItemSet &rSet);
+
+private:
+ SwFootNotePage(Window *pParent, const SfxItemSet &rSet);
+ ~SwFootNotePage();
+
+ RadioButton aMaxHeightPageBtn;
+ RadioButton aMaxHeightBtn;
+ MetricField aMaxHeightEdit;
+ FixedText aDistLbl;
+ MetricField aDistEdit;
+ GroupBox aPosFrm;
+
+ FixedText aLinePosLbl;
+ ListBox aLinePosBox;
+ FixedText aLineTypeLbl;
+#ifdef VCL
+ LineListBox aLineTypeBox;
+#else
+ SwLineBox aLineTypeBox;
+#endif
+ FixedText aLineWidthLbl;
+ MetricField aLineWidthEdit;
+ FixedText aLineDistLbl;
+ MetricField aLineDistEdit;
+ GroupBox aLineFrm;
+ SwColExample aBspWin;
+ GroupBox aBspFrm;
+
+ DECL_LINK( HeightPage, Button * );
+ DECL_LINK( HeightMetric, Button * );
+ DECL_LINK( HeightModify, MetricField * );
+ void InitBsp(const SfxItemSet& rSet);
+
+ long lMaxHeight;
+
+ virtual void ActivatePage( const SfxItemSet& rSet );
+ virtual int DeactivatePage( SfxItemSet* pSet = 0 );
+
+};
+
+#endif
diff --git a/sw/source/ui/inc/popbox.hxx b/sw/source/ui/inc/popbox.hxx
new file mode 100644
index 000000000000..c7091ae15e3a
--- /dev/null
+++ b/sw/source/ui/inc/popbox.hxx
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * $RCSfile: popbox.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _POPBOX_HXX
+#define _POPBOX_HXX
+
+
+#ifndef _TOOLBOX_HXX //autogen
+#include <vcl/toolbox.hxx>
+#endif
+
+class SwHelpToolBox: public ToolBox
+{
+ Link aDoubleClickLink;
+ Link aRightClickLink; // Link bekommt MouseEvent als Parameter !!!
+protected:
+ virtual void MouseButtonDown(const MouseEvent &rEvt);
+ virtual long DoubleClick(ToolBox *);
+ virtual BOOL Drop( const DropEvent& rEvt);
+ virtual BOOL QueryDrop( DropEvent& rEvt);
+public:
+ SwHelpToolBox(Window* pParent, const ResId &);
+ ~SwHelpToolBox();
+ void SetDoubleClickLink(const Link &); // inline
+ void SetRightClickLink(const Link &); // inline
+};
+
+inline void SwHelpToolBox::SetDoubleClickLink(const Link &rLink) {
+ aDoubleClickLink = rLink;
+}
+
+inline void SwHelpToolBox::SetRightClickLink(const Link &rLink) {
+ aRightClickLink = rLink;
+}
+
+
+#endif
diff --git a/sw/source/ui/inc/popup.hrc b/sw/source/ui/inc/popup.hrc
new file mode 100644
index 000000000000..e825a018c884
--- /dev/null
+++ b/sw/source/ui/inc/popup.hrc
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * $RCSfile: popup.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _POPUP_HRC
+#define _POPUP_HRC
+
+#include "rcid.hrc"
+
+#define MN_TEXT_POPUPMENU (RC_POPUPS_BEGIN + 0)
+#define MN_TAB_POPUPMENU (RC_POPUPS_BEGIN + 1)
+#define MN_FRM_POPUPMENU (RC_POPUPS_BEGIN + 2)
+#define MN_DRAW_POPUPMENU (RC_POPUPS_BEGIN + 3)
+#define MN_DRWTXT_POPUPMENU (RC_POPUPS_BEGIN + 4)
+#define MN_GRF_POPUPMENU (RC_POPUPS_BEGIN + 5)
+#define MN_OLE_POPUPMENU (RC_POPUPS_BEGIN + 6)
+#define MN_PPREVIEW_POPUPMENU (RC_POPUPS_BEGIN + 7)
+#define MN_SRCVIEW_POPUPMENU (RC_POPUPS_BEGIN + 8)
+#define MN_DRAWFORM_POPUPMENU (RC_POPUPS_BEGIN + 9)
+
+#if MN_DRAWFORM_POPUPMENU > RC_POPUPS_END
+
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+
+#endif // _POPUP_HRC
diff --git a/sw/source/ui/inc/prcntfld.hxx b/sw/source/ui/inc/prcntfld.hxx
new file mode 100644
index 000000000000..47ee3cf3a724
--- /dev/null
+++ b/sw/source/ui/inc/prcntfld.hxx
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * $RCSfile: prcntfld.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _PRCNTFLD_HXX
+#define _PRCNTFLD_HXX
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+class PercentField : public MetricField
+{
+ long nRefValue; // 100%-Wert fuer Umrechnung (in Twips)
+ long nOldMax, nOldMin, nOldSpinSize, nOldBaseValue;
+ long nLastPercent, nLastValue;
+ USHORT nOldDigits;
+ FieldUnit eOldUnit;
+
+ long ImpPower10(USHORT n);
+
+public:
+ PercentField( Window* pWin, const ResId& rResId );
+
+ void SetValue(long nNewValue, FieldUnit eInUnit = FUNIT_NONE);
+ void SetUserValue(long nNewValue, FieldUnit eInUnit = FUNIT_NONE);
+ void SetBaseValue(long nNewValue, FieldUnit eInUnit = FUNIT_NONE);
+ long GetValue(FieldUnit eOutUnit = FUNIT_NONE);
+ BOOL IsValueModified();
+
+ void SetMax(long nNewMax, FieldUnit eInUnit = FUNIT_NONE);
+ void SetMin(long nNewMin, FieldUnit eInUnit = FUNIT_NONE);
+
+ long Normalize(long nValue);
+ long Denormalize(long nValue);
+
+ void SetRefValue(long nValue);
+ inline long GetRefValue() const { return nRefValue; }
+ long GetRealValue(FieldUnit eOutUnit = FUNIT_NONE);
+
+ long Convert(long nValue, FieldUnit eInUnit, FieldUnit eOutUnit);
+
+ void ShowPercent(BOOL bPercent);
+
+ USHORT GetOldDigits() const {return nOldDigits;}
+
+};
+
+#endif // _PRCNTFLD_HXX
+
diff --git a/sw/source/ui/inc/prtopt.hxx b/sw/source/ui/inc/prtopt.hxx
new file mode 100644
index 000000000000..35f2409068ac
--- /dev/null
+++ b/sw/source/ui/inc/prtopt.hxx
@@ -0,0 +1,129 @@
+/*************************************************************************
+ *
+ * $RCSfile: prtopt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _PRTOPT_HXX
+#define _PRTOPT_HXX
+
+#ifndef _UTL_CONFIGITEM_HXX_
+#include <unotools/configitem.hxx>
+#endif
+
+class SwPrintOptions : public utl::ConfigItem
+{
+ sal_Bool
+ bPrintGraphic :1,
+ bPrintTable :1,
+ bPrintDraw :1,
+ bPrintControl :1,
+ bPrintPageBackground:1,
+ bPrintBlackFont :1,
+
+ bPrintLeftPage :1,
+ bPrintRightPage :1,
+ bReverse :1,
+ bPrintProspect :1,
+ bPrintSingleJobs :1,
+
+ bPaperFromSetup :1;
+
+ sal_uInt32 nPrintPostIts;
+ rtl::OUString sFaxName;
+
+ com::sun::star::uno::Sequence<rtl::OUString> GetPropertyNames();
+public:
+ SwPrintOptions(sal_Bool bWeb);
+ virtual ~SwPrintOptions();
+
+ virtual void Notify( const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames);
+ virtual void Commit();
+
+ sal_Bool IsPrintGraphic() const { return bPrintGraphic; }
+ sal_Bool IsPrintTable() const { return bPrintTable; }
+ sal_Bool IsPrintDraw() const { return bPrintDraw; }
+ sal_Bool IsPrintControl() const { return bPrintControl; }
+ sal_Bool IsPrintLeftPage() const { return bPrintLeftPage; }
+ sal_Bool IsPrintRightPage() const { return bPrintRightPage; }
+ sal_Bool IsPrintReverse() const { return bReverse; }
+ sal_Bool IsPaperFromSetup() const { return bPaperFromSetup; }
+ sal_Bool IsPrintProspect() const { return bPrintProspect; }
+ sal_Bool IsPrintPageBackground() const { return bPrintPageBackground; }
+ sal_Bool IsPrintBlackFont() const { return bPrintBlackFont;}
+ sal_Bool IsPrintSingleJobs() const { return bPrintSingleJobs;}
+ sal_uInt32 GetPrintPostIts() const { return nPrintPostIts; }
+ const rtl::OUString GetFaxName() const{return sFaxName;}
+
+ void SetPrintGraphic ( sal_Bool b ) { SetModified(); bPrintGraphic = b;}
+ void SetPrintTable ( sal_Bool b ) { SetModified(); bPrintTable = b;}
+ void SetPrintDraw ( sal_Bool b ) { SetModified(); bPrintDraw = b;}
+ void SetPrintControl ( sal_Bool b ) { SetModified(); bPrintControl = b; }
+ void SetPrintLeftPage ( sal_Bool b ) { SetModified(); bPrintLeftPage = b;}
+ void SetPrintRightPage( sal_Bool b ) { SetModified(); bPrintRightPage = b;}
+ void SetPrintReverse ( sal_Bool b ) { SetModified(); bReverse = b;}
+ void SetPaperFromSetup( sal_Bool b ) { SetModified(); bPaperFromSetup = b;}
+ void SetPrintPostIts ( sal_uInt32 n){ SetModified(); nPrintPostIts = n; }
+ void SetPrintProspect ( sal_Bool b ) { SetModified(); bPrintProspect = b; }
+ void SetPrintPageBackground(sal_Bool b){ SetModified(); bPrintPageBackground = b;}
+ void SetPrintBlackFont(sal_Bool b){ SetModified(); bPrintBlackFont = b;}
+ void SetPrintSingleJobs(sal_Bool b){ SetModified(); bPrintSingleJobs = b;}
+ void SetFaxName(const rtl::OUString& rSet){sFaxName = rSet;}
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/pview.hxx b/sw/source/ui/inc/pview.hxx
new file mode 100644
index 000000000000..57883c6b9249
--- /dev/null
+++ b/sw/source/ui/inc/pview.hxx
@@ -0,0 +1,283 @@
+/*************************************************************************
+ *
+ * $RCSfile: pview.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWPVIEW_HXX
+#define _SWPVIEW_HXX
+
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _VIEWFAC_HXX //autogen
+#include <sfx2/viewfac.hxx>
+#endif
+#ifndef _LINK_HXX //autogen
+#include <tools/link.hxx>
+#endif
+#ifndef _WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+#ifndef _SFXVIEWSH_HXX //autogen
+#include <sfx2/viewsh.hxx>
+#endif
+#include "shellid.hxx"
+
+class SwViewOption;
+class SwDocShell;
+class SwScrollbar;
+class ViewShell;
+class SwPagePreView;
+class ImageButton;
+class Button;
+class SwRect;
+class DataChangedEvent;
+class CommandEvent;
+
+class SwPagePreViewWin : public Window
+{
+ ViewShell* pViewShell;
+ USHORT nSttPage, nVirtPage;
+ BYTE nRow, nCol;
+ Size aWinSize, aPgSize;
+ Fraction aScale;
+ SwPagePreView& rView;
+
+ void SetPagePreview( BYTE nRow, BYTE nCol );
+
+public:
+ SwPagePreViewWin( Window* pParent, SwPagePreView& rView );
+ ~SwPagePreViewWin();
+
+ //Ruft ViewShell::Paint
+ virtual void Paint( const Rectangle& rRect );
+ virtual void KeyInput( const KeyEvent & );
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void MouseButtonDown(const MouseEvent& rMEvt);
+ virtual void DataChanged( const DataChangedEvent& );
+
+ void SetViewShell( ViewShell* pShell ) { pViewShell = pShell; }
+ ViewShell* GetViewShell() const { return pViewShell; }
+
+ BYTE GetRow() const { return nRow; }
+ void SetRow( BYTE n ) { if( n ) nRow = n; }
+
+ BYTE GetCol() const { return nCol; }
+ void SetCol( BYTE n ) { if( n ) nCol = n; }
+
+ USHORT GetVirtPage() const { return nVirtPage; }
+ USHORT GetSttPage() const { return nSttPage; }
+ void SetSttPage( USHORT n )
+ { nSttPage = nVirtPage = n; if( !n ) ++nVirtPage; }
+
+ //JP 19.08.98: bei Einspaltigkeit gibt es keine 0. Seite!
+ USHORT GetDefSttPage() const { return 1 == nCol ? 1 : 0; }
+
+ void CalcWish( BYTE nNewRow, BYTE nNewCol );
+
+ const Size& GetWinSize() const { return aWinSize; }
+ void SetWinSize( const Size& rNewSize );
+
+ enum MoveMode{ MV_CALC, MV_PAGE_UP, MV_PAGE_DOWN, MV_DOC_STT, MV_DOC_END };
+ int MovePage( int eMoveMode );
+
+ // erzeuge den String fuer die StatusLeiste
+ void GetStatusStr( String& rStr, USHORT nPageCount ) const;
+ void GetOptimalSize( Size& rSize ) const;
+
+ void RepaintCoreRect( const SwRect& rRect );
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Sicht auf ein Dokument
+ --------------------------------------------------------------------*/
+
+class SwPagePreView: public SfxViewShell
+{
+ // ViewWindow und Henkel zur Core
+ // aktuelle Dispatcher-Shell
+ SwPagePreViewWin aViewWin;
+ //viewdata of the previous SwView and the new crsrposition
+ String sSwViewData,
+ //and the new cursor position if the user double click in the PagePreView
+ sNewCrsrPos;
+ // Sichtbarer Bereich
+ String sPageStr;
+ Size aDocSz;
+ Rectangle aVisArea;
+
+ // MDI Bedienelemente
+ SwScrollbar *pHScrollbar;
+ SwScrollbar *pVScrollbar;
+ ImageButton *pPageUpBtn,
+ *pPageDownBtn;
+ // Dummy-Window zum Fllen der rechten unteren Ecke, wenn beide Scrollbars
+ // aktiv sind
+ Window *pScrollFill;
+
+ USHORT nPageCount;
+ BOOL bNormalPrint;
+
+ void Init(const SwViewOption* = 0);
+ Point AlignToPixel(const Point& rPt) const;
+
+ int _CreateScrollbar( int bHori );
+ int _KillScrollbar( int bHori );
+ DECL_LINK( ScrollHdl, SwScrollbar * );
+ DECL_LINK( EndScrollHdl, SwScrollbar * );
+ DECL_LINK( BtnPage, Button * );
+ int ChgPage( int eMvMode, int bUpdateScrollbar = TRUE );
+
+
+ virtual USHORT Print( SfxProgress &rProgress,
+ PrintDialog *pPrintDialog = 0 );
+ virtual SfxPrinter* GetPrinter( BOOL bCreate = FALSE );
+ virtual USHORT SetPrinter( SfxPrinter *pNewPrinter, USHORT nDiffFlags = SFX_PRINTER_ALL );
+ virtual SfxTabPage* CreatePrintOptionsPage( Window *pParent,
+ const SfxItemSet &rOptions );
+ virtual PrintDialog* CreatePrintDialog( Window *pParent );
+
+ void CalcAndSetBorderPixel( SvBorder &rToFill, FASTBOOL bInner );
+
+
+protected:
+ virtual void InnerResizePixel( const Point &rOfs, const Size &rSize );
+ virtual void OuterResizePixel( const Point &rOfs, const Size &rSize );
+ virtual Size GetOptimalSizePixel() const;
+
+public:
+ SFX_DECL_VIEWFACTORY(SwPagePreView);
+ SFX_DECL_INTERFACE(SW_PAGEPREVIEW);
+ TYPEINFO();
+
+ inline Window* GetFrameWindow() const { return &(GetViewFrame())->GetWindow(); }
+ inline ViewShell& GetViewShell() const { return *aViewWin.GetViewShell(); }
+ inline const Rectangle& GetVisArea() const { return aVisArea; }
+ inline void GrabFocusViewWin() { aViewWin.GrabFocus(); }
+ inline void RepaintCoreRect( const SwRect& rRect )
+ { aViewWin.RepaintCoreRect( rRect ); }
+
+ void DocSzChgd(const Size& rNewSize);
+ const Size& GetDocSz() const { return aDocSz; }
+
+ virtual void SetVisArea( const Rectangle&, BOOL bUpdateScrollbar = TRUE);
+
+ inline int StatHScrollbar() const;
+ inline int CreateHScrollbar();
+ inline int KillHScrollbar();
+ inline int CreateVScrollbar();
+ inline int KillVScrollbar();
+ inline int StatVScrollbar() const;
+ inline void AdjustEditWin();
+
+ void VScrollViewSzChg();
+ void VScrollDocSzChg();
+
+ USHORT GetPageCount() const { return nPageCount; }
+
+ BOOL HandleWheelCommands( const CommandEvent& );
+
+ const String& GetPrevSwViewData() const { return sSwViewData; }
+ void SetNewCrsrPos( const String& rStr ) { sNewCrsrPos = rStr; }
+ const String& GetNewCrsrPos() const { return sNewCrsrPos; }
+ // Handler
+ void Execute(SfxRequest&);
+ void GetState(SfxItemSet&);
+ void StateUndo(SfxItemSet&);
+
+ SwDocShell* GetDocShell();
+
+ SwPagePreView( SfxViewFrame* pFrame, SfxViewShell* );
+ ~SwPagePreView();
+};
+
+// ----------------- inline Methoden ----------------------
+
+inline int SwPagePreView::StatHScrollbar() const
+{
+ return 0 != pHScrollbar;
+}
+inline int SwPagePreView::CreateHScrollbar()
+{
+ return StatHScrollbar() ? 1 : _CreateScrollbar( TRUE );
+}
+inline int SwPagePreView::KillHScrollbar()
+{
+ return StatHScrollbar() ? _KillScrollbar( TRUE ) : 1;
+}
+
+inline int SwPagePreView::StatVScrollbar() const
+{
+ return 0 != pVScrollbar;
+}
+inline int SwPagePreView::CreateVScrollbar()
+{
+ return StatVScrollbar() ? 1 : _CreateScrollbar( FALSE );
+}
+inline int SwPagePreView::KillVScrollbar()
+{
+ return StatVScrollbar() ? _KillScrollbar( FALSE ) : 1;
+}
+
+inline void SwPagePreView::AdjustEditWin()
+{
+ OuterResizePixel( Point(), GetFrameWindow()->GetOutputSizePixel() );
+}
+
+#endif
diff --git a/sw/source/ui/inc/redlndlg.hxx b/sw/source/ui/inc/redlndlg.hxx
new file mode 100644
index 000000000000..21cdc682b5f1
--- /dev/null
+++ b/sw/source/ui/inc/redlndlg.hxx
@@ -0,0 +1,131 @@
+/*************************************************************************
+ *
+ * $RCSfile: redlndlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWREDLNDLG_HXX
+#define _SWREDLNDLG_HXX
+
+#include "chldwrap.hxx"
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+
+class SwChildWinWrapper;
+class SwRedlineAcceptDlg;
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+class SwModelessRedlineAcceptDlg : public SfxModelessDialog
+{
+ SwRedlineAcceptDlg* pImplDlg;
+ SwChildWinWrapper* pChildWin;
+
+ virtual void Resize();
+
+public:
+ SwModelessRedlineAcceptDlg(SfxBindings*, SwChildWinWrapper*, Window *pParent);
+ ~SwModelessRedlineAcceptDlg();
+
+ virtual void Activate();
+ virtual void FillInfo(SfxChildWinInfo&) const;
+ void Initialize (SfxChildWinInfo* pInfo);
+};
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+class SwModalRedlineAcceptDlg : public SfxModalDialog
+{
+ SwRedlineAcceptDlg* pImplDlg;
+
+ virtual void Resize();
+
+public:
+ SwModalRedlineAcceptDlg(Window *pParent);
+ ~SwModalRedlineAcceptDlg();
+
+ void AcceptAll( BOOL bAccept );
+ virtual void Activate();
+};
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+class SwRedlineAcceptChild : public SwChildWinWrapper
+{
+public:
+ SwRedlineAcceptChild( Window* ,
+ USHORT nId,
+ SfxBindings*,
+ SfxChildWinInfo* );
+
+ SFX_DECL_CHILDWINDOW( SwRedlineAcceptChild );
+
+ virtual BOOL ReInitDlg(SwDocShell *pDocSh);
+};
+
+
+#endif
+
+
diff --git a/sw/source/ui/inc/regionsw.hxx b/sw/source/ui/inc/regionsw.hxx
new file mode 100644
index 000000000000..d533f689234b
--- /dev/null
+++ b/sw/source/ui/inc/regionsw.hxx
@@ -0,0 +1,418 @@
+/*************************************************************************
+ *
+ * $RCSfile: regionsw.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _REGIONSW_HXX
+#define _REGIONSW_HXX
+
+#ifndef _SV_FIELD_HXX
+#include <vcl/field.hxx>
+#endif
+#ifndef _SV_LSTBOX_HXX
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _BITMAP_HXX //autogen
+#include <vcl/bitmap.hxx>
+#endif
+#ifndef _SVTREEBOX_HXX //autogen
+#include <svtools/svtreebx.hxx>
+#endif
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+
+#ifndef _CONDEDIT_HXX
+#include <condedit.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx>
+#endif
+#ifndef _FMTCLDS_HXX
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTFTNTX_HXX
+#include <fmtftntx.hxx>
+#endif
+#ifndef _FMTCLBL_HXX
+#include <fmtclbl.hxx>
+#endif
+
+class SwWrtShell;
+class EditRegionDlg;
+class DropEvent;
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SectRepr
+{
+ SwSection aSection;
+ SwFmtCol aCol;
+ SvxBrushItem aBrush;
+ SwFmtFtnAtTxtEnd aFtnNtAtEnd;
+ SwFmtEndAtTxtEnd aEndNtAtEnd;
+ SwFmtNoBalancedColumns aBalance;
+ USHORT nArrPos;
+ USHORT nColumn;
+ BOOL bContent : 1; //zeigt an, ob evtl. Textinhalt im Bereich ist
+ BOOL bSelected : 1; //fuer Multiselektion erst markieren, dann mit der TreeListBox arbeiten!
+ BOOL bIsCondition: 1; //
+
+public:
+ SectRepr(USHORT nPos, SwSection& rSect);
+ int operator ==(SectRepr& rSectRef) const
+ {return nArrPos==rSectRef.GetArrPos();}
+
+ int operator <(SectRepr& rSectRef) const
+ {return nArrPos<rSectRef.GetArrPos();}
+
+ SwSection& GetSection() { return aSection; }
+ SwFmtCol& GetCol() { return aCol; }
+ SvxBrushItem& GetBackground() { return aBrush; }
+ SwFmtFtnAtTxtEnd& GetFtnNtAtEnd() { return aFtnNtAtEnd; }
+ SwFmtEndAtTxtEnd& GetEndNtAtEnd() { return aEndNtAtEnd; }
+ SwFmtNoBalancedColumns& GetBalance() { return aBalance; }
+
+ USHORT GetArrPos() const {return nArrPos;}
+ const String& GetCondition() const {return aSection.GetCondition();}
+ const String& GetName() const { return aSection.GetName(); }
+ String GetFile() const;
+ String GetSubRegion() const;
+ void SetFile( const String& rFile );
+ void SetFilter( const String& rFilter );
+ void SetSubRegion( const String& rSubRegion );
+
+ void SetFilePasswd( const String& rPasswd )
+ { aSection.SetLinkFilePassWd( rPasswd ); }
+ void SetCondition( const String& rString )
+ {aSection.SetCondition( rString);}
+ int IsCondHidden()const
+ {return aSection.IsCondHidden();}
+ int IsHidden()const
+ {return aSection.IsHidden();}
+ int IsProtect()const
+ {return aSection.IsProtect();}
+ void SetHidden(int bFlag = TRUE)
+ {aSection.SetHidden(bFlag);}
+ void SetCondHidden(int bFlag = TRUE)
+ {aSection.SetCondHidden(bFlag);}
+ void SetProtect(int bFlag = TRUE)
+ {aSection.SetProtect(bFlag);}
+ BOOL IsContent(){return bContent;}
+ void SetContent(BOOL bValue){bContent = bValue;}
+ void SetSectionType(SectionType eSectionType) {aSection.SetType(eSectionType);}
+ SectionType GetSectionType(){return aSection.GetType();}
+
+ void SetSelected(){bSelected = TRUE;}
+ BOOL IsSelected() const {return bSelected;}
+
+ BOOL IsConditionValid() const {return bIsCondition;}
+ void SetConditionValid(BOOL bSet) { bIsCondition = bSet;}
+
+};
+
+/*************************************************************************
+ Dialog "Bereiche bearbeiten"
+*************************************************************************/
+
+typedef SectRepr* SectReprPtr;
+SV_DECL_PTRARR_SORT( SectReprArr, SectReprPtr, 0, 4 )
+
+class SwEditRegionDlg : public SfxModalDialog
+{
+ SvTreeListBox aTree;
+ CheckBox aPasswdCB;
+ FixedText aNameFT;
+ Edit aCurName;
+ TriStateBox aProtectCB;
+ TriStateBox aHideCB;
+ TriStateBox aCondCB;
+ ConditionEdit aConditionED;
+
+ TriStateBox aFileCB;
+#ifdef DDE_AVAILABLE
+ CheckBox aDDECB;
+#endif
+ FixedText aFileNameFT;
+#ifdef DDE_AVAILABLE
+ FixedText aDDECommandFT;
+#endif
+ Edit aFileNameED;
+ ComboBox aSubRegionED;
+ FixedText aSubRegionFT;
+ OKButton aOK;
+ CancelButton aCancel;
+ PushButton aOptionsPB;
+ PushButton aDismiss;
+ HelpButton aHelp;
+ PushButton aFilePB;
+ GroupBox aGroupBoxName;
+ GroupBox aGroupBoxOptions;
+ Bitmap aProtHideBM;
+ Bitmap aProtNoHideBM;
+ Bitmap aNoProtHideBM;
+ Bitmap aNoProtNoHideBM;
+ Bitmap aExpNode;
+ Bitmap aCollNode;
+
+ Bitmap aBmpArr[4];
+ String aNewPasswd;
+ SwWrtShell& rSh;
+ SectReprArr aSectReprArr;
+ SvLBoxEntry* pAktEntry;
+ const SwSection*pCurrSect;
+
+ BOOL bIsPasswd :1;
+ BOOL bIsPasswdSet :1;
+ BOOL bWeb :1;
+
+
+ Bitmap& BuildBitmap(BOOL bProtect,BOOL bHidden)
+ { return aBmpArr[bProtect+(bHidden<<1)]; }
+
+public:
+ SwEditRegionDlg( Window* pParent, SwWrtShell& rWrtSh );
+ virtual ~SwEditRegionDlg();
+
+ void RecurseList( const SwSectionFmt* pFmt, SvLBoxEntry* pEntry);
+ USHORT FindArrPos(const SwSectionFmt* pFmt);
+
+ void SetPassword(const String& rPassWd);
+
+ DECL_LINK( GetFirstEntryHdl, SvTreeListBox * );
+ DECL_LINK( DeselectHdl, SvTreeListBox * );
+
+ DECL_LINK( OkHdl, CheckBox * );
+ DECL_LINK( NameEditHdl, Edit * );
+ DECL_LINK( ConditionEditHdl, Edit * );
+
+ DECL_LINK( ChangePasswdHdl, CheckBox * );
+ DECL_LINK( ChangeProtectHdl, TriStateBox * );
+ DECL_LINK( ChangeHideHdl, TriStateBox * );
+ DECL_LINK( ChangeCondHdl, TriStateBox * );
+ DECL_LINK( ChangeDismissHdl, CheckBox * );
+ DECL_LINK( UseFileHdl, CheckBox* );
+ DECL_LINK( FileSearchHdl, PushButton* );
+ DECL_LINK( OptionsHdl, PushButton* );
+ DECL_LINK( FileNameHdl, Edit* );
+#ifdef DDE_AVAILABLE
+ DECL_LINK( DDEHdl, CheckBox* );
+#endif
+};
+/*************************************************************************
+ Dialog "Bereich einfuegen"
+*************************************************************************/
+
+/* -----------------21.05.99 11:05-------------------
+ *
+ * --------------------------------------------------*/
+class SwInsertSectionTabPage : public SfxTabPage
+{
+ ComboBox aCurName;
+ CheckBox aProtectCB;
+ CheckBox aHideCB;
+ CheckBox aCondCB;
+ ConditionEdit aConditionED;
+ CheckBox aFileCB;
+#ifdef DDE_AVAILABLE
+ CheckBox aDDECB;
+ FixedText aDDECommandFT;
+#endif
+ FixedText aFileNameFT;
+ Edit aFileNameED;
+ FixedText aSubRegionFT;
+ ComboBox aSubRegionED;
+ PushButton aFilePB;
+ GroupBox aGroupBoxName;
+ GroupBox aGroupBoxOptions;
+ String sSection;
+ String sFileName;
+ String sFilterName;
+ String sFilePasswd;
+
+// SwFmtCol* pCols;
+ const String* pPasswdSect;
+// SfxRequest* pRequest;
+ SwWrtShell* pWrtSh;
+
+ DECL_LINK( ChangeHideHdl, CheckBox * );
+ DECL_LINK( ChangeProtectHdl, CheckBox * );
+ DECL_LINK( ChangeCondHdl, CheckBox * );
+ DECL_LINK( NameEditHdl, Edit * );
+ DECL_LINK( UseFileHdl, CheckBox* );
+ DECL_LINK( FileSearchHdl, PushButton* );
+#ifdef DDE_AVAILABLE
+ DECL_LINK( DDEHdl, CheckBox* );
+#endif
+
+ void FillList( const SwSectionFmt* pFmt = 0 );
+
+public:
+ SwInsertSectionTabPage(Window *pParent, const SfxItemSet &rAttrSet);
+ virtual ~SwInsertSectionTabPage();
+
+ void SetWrtShell(SwWrtShell& rSh);
+
+ virtual BOOL FillItemSet( SfxItemSet& );
+ virtual void Reset( const SfxItemSet& );
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet);
+};
+
+class SwSectionFtnEndTabPage : public SfxTabPage
+{
+ GroupBox aGroupBoxFtn;
+ CheckBox aFtnNtAtTextEndCB;
+
+ CheckBox aFtnNtNumCB;
+ FixedText aFtnOffsetLbl;
+ NumericField aFtnOffsetFld;
+
+ CheckBox aFtnNtNumFmtCB;
+ FixedText aFtnPrefixFT;
+ Edit aFtnPrefixED;
+ ListBox aFtnNumViewBox;
+ FixedText aFtnSuffixFT;
+ Edit aFtnSuffixED;
+
+ GroupBox aGroupBoxEnd;
+ CheckBox aEndNtAtTextEndCB;
+
+ CheckBox aEndNtNumCB;
+ FixedText aEndOffsetLbl;
+ NumericField aEndOffsetFld;
+
+ CheckBox aEndNtNumFmtCB;
+ FixedText aEndPrefixFT;
+ Edit aEndPrefixED;
+ ListBox aEndNumViewBox;
+ FixedText aEndSuffixFT;
+ Edit aEndSuffixED;
+
+
+ DECL_LINK( FootEndHdl, CheckBox * );
+ void ResetState( BOOL bFtn, const SwFmtFtnEndAtTxtEnd& );
+
+public:
+ SwSectionFtnEndTabPage( Window *pParent, const SfxItemSet &rAttrSet );
+ virtual ~SwSectionFtnEndTabPage();
+
+ virtual BOOL FillItemSet( SfxItemSet& );
+ virtual void Reset( const SfxItemSet& );
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet);
+};
+
+/* -----------------21.05.99 13:07-------------------
+ *
+ * --------------------------------------------------*/
+class SwInsertSectionTabDialog : public SfxTabDialog
+{
+ SwWrtShell& rWrtSh;
+ SwSection* pToInsertSection;
+protected:
+ virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
+ virtual short Ok();
+public:
+ SwInsertSectionTabDialog(Window* pParent, const SfxItemSet& rSet, SwWrtShell& rSh);
+ virtual ~SwInsertSectionTabDialog();
+
+ void SetSection(const SwSection& rSect);
+ SwSection* GetSection() { return pToInsertSection;}
+};
+
+/* -----------------21.05.99 13:07-------------------
+ *
+ * --------------------------------------------------*/
+class SwSectionPropertyTabDialog : public SfxTabDialog
+{
+protected:
+ virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
+public:
+ SwSectionPropertyTabDialog(Window* pParent, const SfxItemSet& rSet, SwWrtShell& rSh);
+ virtual ~SwSectionPropertyTabDialog();
+};
+
+#endif
+
+
diff --git a/sw/source/ui/inc/ribbar.hrc b/sw/source/ui/inc/ribbar.hrc
new file mode 100644
index 000000000000..68d73f2b4a81
--- /dev/null
+++ b/sw/source/ui/inc/ribbar.hrc
@@ -0,0 +1,168 @@
+/*************************************************************************
+ *
+ * $RCSfile: ribbar.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _RIBBAR_HRC
+#define _RIBBAR_HRC
+
+#include "rcid.hrc"
+
+#define MN_FORM1 1 // Defines fuer NumNames-Popup
+#define MN_FORMBASE MN_FORM1
+#define MN_FORM2 2
+#define MN_FORM3 3
+#define MN_FORM4 4
+#define MN_FORM5 5
+
+#define WIN_RIBBAR RC_RIBBAR_BEGIN
+
+#define CB_FORMAT (RC_RIBBAR_BEGIN +1)
+#define CB_FONT (RC_RIBBAR_BEGIN +2)
+#define CB_SIZE (RC_RIBBAR_BEGIN +3)
+#define PB_FORMULA_OK (RC_RIBBAR_BEGIN +4)
+#define PB_FORMULA_CANCEL (RC_RIBBAR_BEGIN +5)
+#define BMP_OK PB_FORMULA_OK
+#define BMP_CANCEL PB_FORMULA_CANCEL
+#define RID_TBX_FORMULA (RC_RIBBAR_BEGIN +6)
+#define FT_POS (RC_RIBBAR_BEGIN +7)
+#define BT_FORMULA (RC_RIBBAR_BEGIN +8)
+#define STR_FORMULA (RC_RIBBAR_BEGIN +9)
+
+#define STR_BACKGROUND_PATTERN (RC_RIBBAR_BEGIN + 10)
+#define STR_BACKGROUND_COLOR (RC_RIBBAR_BEGIN + 11)
+#define STR_BORDER_COLOR (RC_RIBBAR_BEGIN + 12)
+#define STR_BORDER_STYLE (RC_RIBBAR_BEGIN + 13)
+#define STR_BORDER_LINE (RC_RIBBAR_BEGIN + 14)
+#define STR_TEXT_COLOR (RC_RIBBAR_BEGIN + 15)
+#define STR_NUMLIST (RC_RIBBAR_BEGIN + 16)
+
+#define STR_HELP_TOOLBOX_TOGGLE (RC_RIBBAR_BEGIN + 17)
+
+#define RID_DRAW_WIN (RC_RIBBAR_BEGIN + 18)
+#define RID_CNTRLR_WIN (RC_RIBBAR_BEGIN + 19)
+#define RID_ALIGNMENT_WIN (RC_RIBBAR_BEGIN + 20)
+
+//Resourcen fuer Inputwin (Rechenleiste)
+#define RID_WIN_FORMULA (RC_RIBBAR_BEGIN + 21)
+#define MN_CALC_POPUP (RC_RIBBAR_BEGIN + 22)
+
+#define MN_NUMNAMES_POPUP (RC_RIBBAR_BEGIN + 23)
+#define RID_INSERT_CTRL (RC_RIBBAR_BEGIN + 24)
+#define RID_INSERT_OBJ_CTRL (RC_RIBBAR_BEGIN + 25)
+#define RID_INSERT_FIELD_CTRL (RC_RIBBAR_BEGIN + 26)
+#define RID_TBL_OPT_CTRL (RC_RIBBAR_BEGIN + 27)
+#define RID_BEZIER_WIN (RC_RIBBAR_BEGIN + 28)
+#define RID_SCROLL_NAVI_TBX (RC_RIBBAR_BEGIN + 29)
+#define RID_SCROLL_NAVIGATION_WIN (RC_RIBBAR_BEGIN + 30)
+
+#define STR_IMGBTN_START (RC_RIBBAR_BEGIN + 31)
+
+#define STR_IMGBTN_NEXT_DOWN (STR_IMGBTN_START + 0)
+#define STR_IMGBTN_PREV_DOWN (STR_IMGBTN_START + 1)
+#define STR_IMGBTN_TBL_DOWN (STR_IMGBTN_START + 2)
+#define STR_IMGBTN_FRM_DOWN (STR_IMGBTN_START + 3)
+#define STR_IMGBTN_PGE_DOWN (STR_IMGBTN_START + 4)
+#define STR_IMGBTN_DRW_DOWN (STR_IMGBTN_START + 5)
+#define STR_IMGBTN_CTRL_DOWN (STR_IMGBTN_START + 6)
+#define STR_IMGBTN_REG_DOWN (STR_IMGBTN_START + 7)
+#define STR_IMGBTN_BKM_DOWN (STR_IMGBTN_START + 8)
+#define STR_IMGBTN_GRF_DOWN (STR_IMGBTN_START + 9)
+#define STR_IMGBTN_OLE_DOWN (STR_IMGBTN_START +10)
+#define STR_IMGBTN_OUTL_DOWN (STR_IMGBTN_START +11)
+#define STR_IMGBTN_SEL_DOWN (STR_IMGBTN_START +12)
+#define STR_IMGBTN_FTN_DOWN (STR_IMGBTN_START +13)
+#define STR_IMGBTN_MARK_DOWN (STR_IMGBTN_START +14)
+#define STR_IMGBTN_POSTIT_DOWN (STR_IMGBTN_START +15)
+#define STR_IMGBTN_SRCH_REP_DOWN (STR_IMGBTN_START +16)
+#define STR_IMGBTN_INDEX_ENTRY_DOWN (STR_IMGBTN_START +17)
+#define STR_IMGBTN_TBLFML_DOWN (STR_IMGBTN_START +18)
+#define STR_IMGBTN_TBLFML_ERR_DOWN (STR_IMGBTN_START +19)
+
+#define STR_IMGBTN_NEXT_UP (STR_IMGBTN_START +20)
+#define STR_IMGBTN_PREV_UP (STR_IMGBTN_START +21)
+#define STR_IMGBTN_TBL_UP (STR_IMGBTN_START +22)
+#define STR_IMGBTN_FRM_UP (STR_IMGBTN_START +23)
+#define STR_IMGBTN_PGE_UP (STR_IMGBTN_START +24)
+#define STR_IMGBTN_DRW_UP (STR_IMGBTN_START +25)
+#define STR_IMGBTN_CTRL_UP (STR_IMGBTN_START +26)
+#define STR_IMGBTN_REG_UP (STR_IMGBTN_START +27)
+#define STR_IMGBTN_BKM_UP (STR_IMGBTN_START +28)
+#define STR_IMGBTN_GRF_UP (STR_IMGBTN_START +29)
+#define STR_IMGBTN_OLE_UP (STR_IMGBTN_START +30)
+#define STR_IMGBTN_OUTL_UP (STR_IMGBTN_START +31)
+#define STR_IMGBTN_SEL_UP (STR_IMGBTN_START +32)
+#define STR_IMGBTN_FTN_UP (STR_IMGBTN_START +33)
+#define STR_IMGBTN_MARK_UP (STR_IMGBTN_START +34)
+#define STR_IMGBTN_POSTIT_UP (STR_IMGBTN_START +35)
+#define STR_IMGBTN_SRCH_REP_UP (STR_IMGBTN_START +36)
+#define STR_IMGBTN_INDEX_ENTRY_UP (STR_IMGBTN_START +37)
+#define STR_IMGBTN_TBLFML_UP (STR_IMGBTN_START +38)
+#define STR_IMGBTN_TBLFML_ERR_UP (STR_IMGBTN_START +39)
+
+#define BTN_NAVI (STR_IMGBTN_START +40)
+
+#define MN_ANCHOR_POPUP (STR_IMGBTN_START +41)
+
+#define RC_RIBBAR_ACT_END MN_ANCHOR_POPUP
+
+#if RC_RIBBAR_ACT_END > RC_RIBBAR_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+#endif
diff --git a/sw/source/ui/inc/rowht.hxx b/sw/source/ui/inc/rowht.hxx
new file mode 100644
index 000000000000..4357697a786b
--- /dev/null
+++ b/sw/source/ui/inc/rowht.hxx
@@ -0,0 +1,103 @@
+/*************************************************************************
+ *
+ * $RCSfile: rowht.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ROWHT_HXX
+#define _ROWHT_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+class SwWrtShell;
+
+class SwTableHeightDlg : public SvxStandardDialog
+{
+ MetricField aHeightEdit;
+ CheckBox aAutoHeightCB;
+ GroupBox aHeightFrm;
+ OKButton aOKBtn;
+ CancelButton aCancelBtn;
+ HelpButton aHelpBtn;
+ SwWrtShell &rSh;
+
+protected:
+ virtual void Apply();
+
+public:
+ SwTableHeightDlg( Window *pParent, SwWrtShell &rS );
+};
+
+#endif
diff --git a/sw/source/ui/inc/scroll.hxx b/sw/source/ui/inc/scroll.hxx
new file mode 100644
index 000000000000..0d15009d6ccd
--- /dev/null
+++ b/sw/source/ui/inc/scroll.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: scroll.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SCROLL_HXX
+#define _SCROLL_HXX
+
+#ifndef _SCRBAR_HXX //autogen
+#include <vcl/scrbar.hxx>
+#endif
+
+class SwRect;
+
+class SwScrollbar: public ScrollBar
+{
+ Size aDocSz;
+ BOOL bHori :1; // Horizontal = TRUE, sonst Vertikal
+ BOOL bAuto :1; // fuer Scrollingmode
+ BOOL bThumbEnabled:1;
+ BOOL bVisible :1; // Show/Hide sollen nur noch dieses Flag setzen
+ BOOL bSizeSet :1; // wurde die Groesse bereits gesetzt?
+
+ void AutoShow();
+public:
+ void Show( BOOL bVisible = TRUE );
+ void Hide() { Show( FALSE ); }
+ void SetPosSizePixel( const Point& rNewPos, const Size& rNewSize );
+ BOOL IsVisible(BOOL bReal = FALSE) const { return bReal ? ScrollBar::IsVisible() : bVisible; }
+ void SetUpdateMode( BOOL bUpdate );
+ // Aenderung der Dokumentgroesse
+ void DocSzChgd(const Size &rNewSize);
+ // Aenderung des sichtbaren Bereiches
+ void ViewPortChgd(const Rectangle &rRectangle);
+ // was fuer einer ist es denn ??
+ int IsHoriScroll() const { return bHori; }
+
+ void SetAuto(BOOL bSet);
+ BOOL IsAuto() { return bAuto;}
+
+ //Bewegungen des Thumbs abklemmen
+ void EnableThumbPos( BOOL bEnable, const SwRect &rVisArea );
+
+ SwScrollbar(Window *pParent, int bHori = TRUE );
+ ~SwScrollbar();
+};
+
+
+
+#endif
diff --git a/sw/source/ui/inc/selglos.hxx b/sw/source/ui/inc/selglos.hxx
new file mode 100644
index 000000000000..a348d5546b29
--- /dev/null
+++ b/sw/source/ui/inc/selglos.hxx
@@ -0,0 +1,113 @@
+/*************************************************************************
+ *
+ * $RCSfile: selglos.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SELGLOS_HXX
+#define _SELGLOS_HXX
+
+#ifndef _DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+
+class SwSelGlossaryDlg : public ModalDialog
+{
+protected:
+ ListBox aGlosBox;
+ GroupBox aGlosFrm;
+ OKButton aOKBtn;
+ CancelButton aCancelBtn;
+ HelpButton aHelpBtn;
+
+ DECL_LINK(DoubleClickHdl, ListBox*);
+public:
+ SwSelGlossaryDlg(Window * pParent, const String &rShortName);
+ ~SwSelGlossaryDlg();
+ void InsertGlos(const String &rRegion, const String &rGlosName); // inline
+ USHORT GetSelectedIdx() const; // inline
+ void SelectEntryPos(USHORT nIdx); // inline
+};
+
+inline void SwSelGlossaryDlg::InsertGlos(const String &rRegion,
+ const String &rGlosName)
+{
+ String aTmp( rRegion );
+ aTmp += ':';
+ aTmp += rGlosName;
+ aGlosBox.InsertEntry( aTmp );
+}
+inline USHORT SwSelGlossaryDlg::GetSelectedIdx() const
+{ return aGlosBox.GetSelectEntryPos(); }
+inline void SwSelGlossaryDlg::SelectEntryPos(USHORT nIdx)
+{ aGlosBox.SelectEntryPos(nIdx); }
+
+#endif
diff --git a/sw/source/ui/inc/shdwcrsr.hxx b/sw/source/ui/inc/shdwcrsr.hxx
new file mode 100644
index 000000000000..17b63243fb77
--- /dev/null
+++ b/sw/source/ui/inc/shdwcrsr.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: shdwcrsr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SHDWCRSR_HXX
+#define _SHDWCRSR_HXX
+
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+#ifndef _SV_COLOR_HXX //autogen
+#include <vcl/color.hxx>
+#endif
+#include <limits.h>
+
+class Window;
+
+class SwShadowCursor
+{
+ Window* pWin;
+ Color aCol;
+ Point aOldPt;
+ long nOldHeight;
+ USHORT nOldMode;
+
+ void DrawTri( const Point& rPt, long nHeight, BOOL bLeft );
+ void DrawCrsr( const Point& rPt, long nHeight, USHORT nMode );
+
+public:
+ SwShadowCursor( Window& rWin, const Color& rCol )
+ : pWin( &rWin ), nOldMode( USHRT_MAX ), aCol( rCol ) {}
+ ~SwShadowCursor();
+
+ void SetPos( const Point& rPt, long nHeight, USHORT nMode );
+
+ void Paint();
+
+ const Point& GetPoint() const { return aOldPt; }
+ long GetHeight() const { return nOldHeight; }
+ USHORT GetMode() const { return nOldMode; }
+
+ Rectangle GetRect() const;
+};
+
+
+
+#endif
+
diff --git a/sw/source/ui/inc/shells.hrc b/sw/source/ui/inc/shells.hrc
new file mode 100644
index 000000000000..44eb7efbe3cf
--- /dev/null
+++ b/sw/source/ui/inc/shells.hrc
@@ -0,0 +1,140 @@
+/*************************************************************************
+ *
+ * $RCSfile: shells.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SHELLS_HRC
+#define _SHELLS_HRC
+
+#include "rcid.hrc"
+
+#define MSG_REMOVE_LINK (RC_SHELLS_BEGIN + 1)
+
+#define STR_GRFILTER_OPENERROR (RC_SHELLS_BEGIN + 1)
+#define STR_GRFILTER_IOERROR (RC_SHELLS_BEGIN + 2)
+#define STR_GRFILTER_FORMATERROR (RC_SHELLS_BEGIN + 3)
+#define STR_GRFILTER_VERSIONERROR (RC_SHELLS_BEGIN + 4)
+#define STR_GRFILTER_FILTERERROR (RC_SHELLS_BEGIN + 5)
+#define STR_GRFILTER_TOOBIG (RC_SHELLS_BEGIN + 6)
+#define STR_INSERT_GRAPHIC (RC_SHELLS_BEGIN + 7)
+#define STR_NOTIZ_INSERT (RC_SHELLS_BEGIN + 8)
+#define DLG_IMPORT_DBNAME (RC_SHELLS_BEGIN + 9)
+#define STR_NO_ADDRESSBOOK (RC_SHELLS_BEGIN + 10)
+#define STR_REDLINE_COMMENT (RC_SHELLS_BEGIN + 11)
+#define STR_REDLINE_INSERTED (RC_SHELLS_BEGIN + 12)
+#define STR_REDLINE_DELETED (RC_SHELLS_BEGIN + 13)
+#define STR_REDLINE_FMTCOLLSET (RC_SHELLS_BEGIN + 14)
+
+#define RID_TEXT_TOOLBOX (RC_SHELLS_BEGIN + 15)
+#define RID_TABLE_TOOLBOX (RC_SHELLS_BEGIN + 16)
+#define RID_FRAME_TOOLBOX (RC_SHELLS_BEGIN + 17)
+#define RID_GRAFIK_TOOLBOX (RC_SHELLS_BEGIN + 18)
+#define RID_DRAW_TOOLBOX (RC_SHELLS_BEGIN + 19)
+#define RID_DRAW_TEXT_TOOLBOX (RC_SHELLS_BEGIN + 20)
+#define RID_NUM_TOOLBOX (RC_SHELLS_BEGIN + 21)
+#define RID_OLE_TOOLBOX (RC_SHELLS_BEGIN + 22)
+#define RID_TOOLS_TOOLBOX (RC_SHELLS_BEGIN + 23)
+
+#define STR_SHELLNAME_TEXT (RC_SHELLS_BEGIN + 24)
+#define STR_SHELLNAME_TABLE (RC_SHELLS_BEGIN + 25)
+#define STR_SHELLNAME_FRAME (RC_SHELLS_BEGIN + 26)
+#define STR_SHELLNAME_GRAPHIC (RC_SHELLS_BEGIN + 27)
+#define STR_SHELLNAME_OBJECT (RC_SHELLS_BEGIN + 28)
+#define STR_SHELLNAME_LIST (RC_SHELLS_BEGIN + 29)
+#define STR_SHELLNAME_DRAW (RC_SHELLS_BEGIN + 30)
+#define STR_SHELLNAME_DRAW_TEXT (RC_SHELLS_BEGIN + 31)
+
+#define RID_SRCVIEW_TOOLBOX (RC_SHELLS_BEGIN + 32)
+
+#define RID_BEZIER_TOOLBOX (RC_SHELLS_BEGIN + 33)
+#define STR_SHELLNAME_BEZIER (RC_SHELLS_BEGIN + 34)
+
+#define STR_SWBG_PARAGRAPH (RC_SHELLS_BEGIN + 37)
+#define STR_SWBG_GRAPHIC (RC_SHELLS_BEGIN + 38)
+#define STR_SWBG_OLE (RC_SHELLS_BEGIN + 39)
+#define STR_SWBG_FRAME (RC_SHELLS_BEGIN + 40)
+#define STR_SWBG_TABLE (RC_SHELLS_BEGIN + 41)
+#define STR_SWBG_TABLE_ROW (RC_SHELLS_BEGIN + 42)
+#define STR_SWBG_TABLE_CELL (RC_SHELLS_BEGIN + 43)
+#define STR_SWBG_PAGE (RC_SHELLS_BEGIN + 44)
+#define STR_SWBG_HEADER (RC_SHELLS_BEGIN + 45)
+#define STR_SWBG_FOOTER (RC_SHELLS_BEGIN + 46)
+#define MSG_NO_RULER (RC_SHELLS_BEGIN + 47)
+
+#define STR_SHELLNAME_DRAWFORM (RC_SHELLS_BEGIN + 48)
+#define RID_DRAWFORM_TOOLBOX (RC_SHELLS_BEGIN + 49)
+
+#define STR_REDLINE_FORMATED (RC_SHELLS_BEGIN + 50)
+#define STR_REDLINE_TABLECHG (RC_SHELLS_BEGIN + 51)
+
+#define STR_REDLINE_TITLE (RC_SHELLS_BEGIN + 52)
+#define STR_REDLINE_MSG (RC_SHELLS_BEGIN + 53)
+#define STR_REDLINE_ACCEPT_ALL (RC_SHELLS_BEGIN + 54)
+#define STR_REDLINE_REJECT_ALL (RC_SHELLS_BEGIN + 55)
+#define STR_REDLINE_EDIT (RC_SHELLS_BEGIN + 56)
+#define STR_REDLINE_AUTOFMT (RC_SHELLS_BEGIN + 57)
+
+#define SHELLS_ACT_END STR_REDLINE_AUTOFMT
+
+#if SHELLS_ACT_END > RC_SHELLS_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+#endif
+
diff --git a/sw/source/ui/inc/split.hxx b/sw/source/ui/inc/split.hxx
new file mode 100644
index 000000000000..432e30240bd8
--- /dev/null
+++ b/sw/source/ui/inc/split.hxx
@@ -0,0 +1,115 @@
+/*************************************************************************
+ *
+ * $RCSfile: split.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TAB_SPLIT_HXX
+#define _TAB_SPLIT_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _IMAGEBTN_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+class SwWrtShell;
+
+class SwSplitTableDlg : public SvxStandardDialog
+{
+ FixedText aCountLbl;
+ NumericField aCountEdit;
+ GroupBox aCountFrm;
+ ImageRadioButton aHorzBox;
+ ImageRadioButton aVertBox;
+ GroupBox aDirFrm;
+ OKButton aOKBtn;
+ CancelButton aCancelBtn;
+ HelpButton aHelpBtn;
+ SwWrtShell& rSh;
+
+protected:
+ virtual void Apply();
+
+public:
+ SwSplitTableDlg(Window *pParent, SwWrtShell& rShell );
+ DECL_STATIC_LINK( SwSplitTableDlg, ClickHdl, Button * );
+};
+
+#endif
diff --git a/sw/source/ui/inc/splittbl.hxx b/sw/source/ui/inc/splittbl.hxx
new file mode 100644
index 000000000000..d516ae04188c
--- /dev/null
+++ b/sw/source/ui/inc/splittbl.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: splittbl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SPLITTBL_HXX
+#define _SPLITTBL_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+class SwWrtShell;
+
+class SwSplitTblDlg : public SvxStandardDialog
+{
+ OKButton aOKPB;
+ CancelButton aCancelPB;
+ HelpButton aHelpPB;
+ GroupBox aSplitGB;
+ RadioButton aCntntCopyRB;
+ RadioButton aBoxAttrCopyWithParaRB ;
+ RadioButton aBoxAttrCopyNoParaRB ;
+ RadioButton aBorderCopyRB;
+
+ SwWrtShell &rShell;
+
+protected:
+ virtual void Apply();
+
+public:
+ SwSplitTblDlg( Window *pParent, SwWrtShell &rSh );
+};
+
+#endif
+
+
diff --git a/sw/source/ui/inc/srcedtw.hxx b/sw/source/ui/inc/srcedtw.hxx
new file mode 100644
index 000000000000..0e76a8bc8068
--- /dev/null
+++ b/sw/source/ui/inc/srcedtw.hxx
@@ -0,0 +1,198 @@
+/*************************************************************************
+ *
+ * $RCSfile: srcedtw.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SRCEDTW_HXX
+#define _SRCEDTW_HXX
+
+#ifndef _WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+#ifndef _TABLE_HXX //autogen
+#include <tools/table.hxx>
+#endif
+
+#ifndef _XTEXTEDT_HXX //autogen
+#include <svtools/xtextedt.hxx>
+#endif
+
+class ScrollBar;
+class SwSrcView;
+class SwSrcEditWindow;
+class SwSrcViewConfig;
+class TextEngine;
+class ExtTextView;
+class DataChangedEvent;
+
+class TextViewOutWin : public Window
+{
+ ExtTextView* pTextView;
+
+protected:
+ virtual void Paint( const Rectangle& );
+ virtual void KeyInput( const KeyEvent& rKeyEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual BOOL Drop( const DropEvent& rEvt );
+ virtual BOOL QueryDrop( DropEvent& rEvt );
+ virtual void DataChanged( const DataChangedEvent& );
+
+public:
+ TextViewOutWin(Window* pParent, WinBits nBits) :
+ Window(pParent, nBits), pTextView(0){}
+
+ void SetTextView( ExtTextView* pView ) {pTextView = pView;}
+
+};
+
+//------------------------------------------------------------
+
+class SwSrcEditWindow : public Window, public SfxListener
+{
+private:
+ ExtTextView* pTextView;
+ ExtTextEngine* pTextEngine;
+
+ TextViewOutWin* pOutWin;
+ ScrollBar *pHScrollbar,
+ *pVScrollbar;
+
+ SwSrcView* pSrcView;
+
+ const SwSrcViewConfig* pSrcVwConfig;
+
+ long nCurTextWidth;
+ USHORT nStartLine;
+ BOOL bReadonly;
+ BOOL bDoSyntaxHighlight;
+ BOOL bHighlighting;
+
+ Timer aSyntaxIdleTimer;
+ Table aSyntaxLineTable;
+
+ void ImpDoHighlight( const String& rSource, USHORT nLineOff );
+
+ DECL_LINK( SyntaxTimerHdl, Timer * );
+ DECL_LINK( TimeoutHdl, Timer * );
+
+protected:
+
+ virtual void Resize();
+ virtual void DataChanged( const DataChangedEvent& );
+ virtual void GetFocus();
+// virtual void LoseFocus();
+
+ void CreateTextEngine();
+ void DoSyntaxHighlight( USHORT nPara );
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ DECL_LINK(ScrollHdl, ScrollBar*);
+
+public:
+ SwSrcEditWindow( Window* pParent, SwSrcView* pParentView );
+ ~SwSrcEditWindow();
+
+ void SetScrollBarRanges();
+ void InitScrollBars();
+ ULONG Read( SvStream& rInput)
+ {return pTextEngine->Read(rInput);}
+ ULONG Write( SvStream& rOutput)
+ {return pTextEngine->Write(rOutput);}
+
+ ExtTextView* GetTextView()
+ {return pTextView;}
+ TextEngine* GetTextEngine()
+ {return pTextEngine;}
+ SwSrcView* GetSrcView() {return pSrcView;}
+
+ TextViewOutWin* GetOutWin() {return pOutWin;}
+ void Invalidate();
+
+ void ClearModifyFlag()
+ { pTextEngine->SetModified(FALSE); }
+ BOOL IsModified() const
+ { return pTextEngine->IsModified();}
+ void CreateScrollbars();
+
+ void SetReadonly(BOOL bSet){bReadonly = bSet;}
+ BOOL IsReadonly(){return bReadonly;}
+
+ void DoDelayedSyntaxHighlight( USHORT nPara );
+
+ void SyntaxColorsChanged();
+
+ void SetStartLine(USHORT nLine){nStartLine = nLine;}
+
+ virtual void Command( const CommandEvent& rCEvt );
+ void HandleWheelCommand( const CommandEvent& rCEvt );
+};
+
+#endif
diff --git a/sw/source/ui/inc/srcview.hxx b/sw/source/ui/inc/srcview.hxx
new file mode 100644
index 000000000000..d7f73e6594c5
--- /dev/null
+++ b/sw/source/ui/inc/srcview.hxx
@@ -0,0 +1,165 @@
+/*************************************************************************
+ *
+ * $RCSfile: srcview.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SRCVIEW_HXX
+#define _SRCIEW_HXX
+
+#ifndef _VIEWFAC_HXX //autogen
+#include <sfx2/viewfac.hxx>
+#endif
+#ifndef _SFXVIEWSH_HXX //autogen
+#include <sfx2/viewsh.hxx>
+#endif
+#include "srcedtw.hxx"
+#include "shellid.hxx"
+
+class SwDocShell;
+class SvxSearchItem;
+class SwSrcViewConfig;
+class SfxMedium;
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SwSrcView: public SfxViewShell
+{
+ SwSrcEditWindow aEditWin;
+
+ SvxSearchItem* pSearchItem;
+ SwSrcViewConfig* pSrcViewConfig;
+
+ BOOL bSourceSaved :1;
+ void Init();
+
+ // fuer Readonly-Umschaltung
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+
+protected:
+ USHORT StartSearchAndReplace(const SvxSearchItem& rItem,
+ BOOL bFromStart,
+ BOOL bApi,
+ BOOL bRecursive = FALSE);
+
+
+public:
+
+ SFX_DECL_VIEWFACTORY(SwSrcView);
+ SFX_DECL_INTERFACE(SW_SRC_VIEWSHELL);
+ TYPEINFO();
+
+
+ SwSrcView(SfxViewFrame* pFrame, const SwSrcView&);
+ SwSrcView(SfxViewFrame* pFrame, SfxViewShell*);
+
+ ~SwSrcView();
+
+ SwDocShell* GetDocShell();
+ SwSrcEditWindow& GetEditWin() {return aEditWin;}
+ void SaveContent(const String& rTmpFile);
+ void SaveContentTo(SfxMedium& rMed);
+
+ BOOL IsModified() {return aEditWin.IsModified();}
+
+
+
+ void Execute(SfxRequest&);
+ void GetState(SfxItemSet&);
+
+ SvxSearchItem* GetSearchItem();
+ void SetSearchItem( const SvxSearchItem& rItem );
+
+ void Load(SwDocShell* pDocShell);
+
+ virtual USHORT SetPrinter( SfxPrinter* pNew,
+ USHORT nDiff = SFX_PRINTER_ALL);
+ virtual ErrCode DoPrint( SfxPrinter *pPrinter, PrintDialog *pPrintDialog,
+ BOOL bSilent );
+ virtual SfxPrinter* GetPrinter( BOOL bCreate = FALSE );
+
+ void SourceSaved() {bSourceSaved = TRUE;}
+ BOOL HasSourceSaved() const {return bSourceSaved;}
+
+};
+
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sw/source/ui/inc/srtdlg.hxx b/sw/source/ui/inc/srtdlg.hxx
new file mode 100644
index 000000000000..cbda0c7bef94
--- /dev/null
+++ b/sw/source/ui/inc/srtdlg.hxx
@@ -0,0 +1,142 @@
+/*************************************************************************
+ *
+ * $RCSfile: srtdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SRTDLG_HXX
+#define _SRTDLG_HXX
+
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+class SwWrtShell;
+
+class SwSortDlg : public SvxStandardDialog
+{
+ FixedText aColLbl;
+ FixedText aTypLbl;
+ FixedText aDirLbl;
+
+ CheckBox aKeyCB1;
+ NumericField aColEdt1;
+ ListBox aTypDLB1;
+ RadioButton aSortUpRB;
+ RadioButton aSortDnRB;
+ CheckBox aKeyCB2;
+ NumericField aColEdt2;
+ ListBox aTypDLB2;
+ RadioButton aSortUp2RB;
+ RadioButton aSortDn2RB;
+ CheckBox aKeyCB3;
+ NumericField aColEdt3;
+ ListBox aTypDLB3;
+ RadioButton aSortUp3RB;
+ RadioButton aSortDn3RB;
+ GroupBox aSortGrp;
+ RadioButton aColumnRB;
+ RadioButton aRowRB;
+
+ GroupBox aDirGrp;
+
+ RadioButton aDelimTabRB;
+ RadioButton aDelimFreeRB;
+ Edit aDelimEdt;
+ GroupBox aDelimGrp;
+ OKButton aOkBtn;
+ CancelButton aCancelBtn;
+ HelpButton aHelpBtn;
+
+ String aColTxt;
+ String aRowTxt;
+ USHORT nX;
+ USHORT nY;
+
+ SwWrtShell &rSh;
+
+ virtual void Apply();
+ DECL_LINK( CheckHdl, CheckBox * );
+ DECL_LINK( DelimHdl, RadioButton* );
+
+public:
+ SwSortDlg(Window * pParent, SwWrtShell &rSh);
+ ~SwSortDlg();
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/swcont.hxx b/sw/source/ui/inc/swcont.hxx
new file mode 100644
index 000000000000..1d183504de2f
--- /dev/null
+++ b/sw/source/ui/inc/swcont.hxx
@@ -0,0 +1,149 @@
+/*************************************************************************
+ *
+ * $RCSfile: swcont.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWCONT_HXX
+#define _SWCONT_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+class SwContentType;
+
+//Reihenfolge und Anzahl mit ResIds abgleichen!!
+#define CONTENT_TYPE_OUTLINE 0
+#define CONTENT_TYPE_TABLE 1
+#define CONTENT_TYPE_FRAME 2
+#define CONTENT_TYPE_GRAPHIC 3
+#define CONTENT_TYPE_OLE 4
+#define CONTENT_TYPE_BOOKMARK 5
+#define CONTENT_TYPE_REGION 6
+#define CONTENT_TYPE_URLFIELD 7
+#define CONTENT_TYPE_REFERENCE 8
+#define CONTENT_TYPE_INDEX 9
+#define CONTENT_TYPE_POSTIT 10
+#define CONTENT_TYPE_DRAWOBJECT 11
+#define CONTENT_TYPE_MAX CONTENT_TYPE_DRAWOBJECT +1
+
+
+// Typen fuer das Globaldokument
+#define GLOBAL_CONTENT_REGION 100
+#define GLOBAL_CONTENT_INDEX 101
+#define GLOBAL_CONTENT_TEXT 102
+#define GLOBAL_CONTENT_MAX 3
+
+// Strings fuer Kontextmenue
+#define CONTEXT_COUNT 12
+#define GLOBAL_CONTEXT_COUNT 13
+
+// Modi fuer Drag 'n Drop
+#define REGION_MODE_NONE 0
+#define REGION_MODE_LINK 1
+#define REGION_MODE_EMBEDDED 2
+
+//----------------------------------------------------------------------------
+//----------------------------------------------------------------------------
+
+//mini rtti
+class SwTypeNumber
+{
+ BYTE nTypeId;
+
+ public:
+ SwTypeNumber(BYTE nId) :nTypeId(nId){}
+ virtual ~SwTypeNumber();
+
+ virtual BYTE GetTypeId();
+};
+//----------------------------------------------------------------------------
+
+class SwContent : public SwTypeNumber
+{
+ const SwContentType* pParent;
+ String sContentName;
+ long nYPosition;
+ BOOL bInvisible;
+public:
+ SwContent(const SwContentType* pCnt, const String& rName, long nYPos );
+
+ virtual BOOL IsProtect() const;
+ const SwContentType* GetParent() const {return pParent;}
+ const String& GetName() const {return sContentName;}
+ int operator==(const SwContent& rCont) const
+ {
+ //gleich sind sie nie, sonst fallen sie aus dem Array
+ return FALSE;
+ }
+ int operator<(const SwContent& rCont) const
+ {
+ //zuerst nach Position dann nach Name sortieren
+ return nYPosition != rCont.nYPosition ?
+ nYPosition < rCont.nYPosition :
+ sContentName < rCont.sContentName;;
+ }
+
+ long GetYPos() const {return nYPosition;}
+
+ BOOL IsInvisible() const {return bInvisible;}
+ void SetInvisible(){ bInvisible = TRUE;}
+};
+
+#endif
diff --git a/sw/source/ui/inc/swlbox.hxx b/sw/source/ui/inc/swlbox.hxx
new file mode 100644
index 000000000000..7802eaad10ed
--- /dev/null
+++ b/sw/source/ui/inc/swlbox.hxx
@@ -0,0 +1,231 @@
+/*************************************************************************
+ *
+ * $RCSfile: swlbox.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWLBOX_HXX
+#define _SWLBOX_HXX
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+
+class SwBoxEntry;
+class Window;
+
+SV_DECL_PTRARR_DEL(SwEntryLst, SwBoxEntry*, 10, 10)
+
+/*--------------------------------------------------------------------
+ Beschreibung: SwBoxEntry
+ --------------------------------------------------------------------*/
+
+class SwBoxEntry
+{
+ friend class SwComboBox;
+
+ BOOL bModified : 1;
+ BOOL bNew : 1;
+
+public:
+ SwBoxEntry(const String& aName, USHORT nId=0);
+ SwBoxEntry(const SwBoxEntry& rOrg);
+ SwBoxEntry();
+
+ String aName;
+ USHORT nId;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Listbox mit Entry-Verwaltung
+ --------------------------------------------------------------------*/
+
+/*class SwListBox : private ListBox
+{
+ SwEntryLst aEntryLst;
+ SwBoxEntry aDefault;
+
+ BOOL SeekEntry( const SwBoxEntry& rEntryLst, USHORT* pPos = 0 );
+public:
+ // die SwListBox ist default NICHT sortiert!
+ // Eine Sortierung erfolgt nur ueber das interne Array. Das errechnet
+ // die richtige Position in der Box!
+ SwListBox( Window* pParent, const ResId& rId );
+ ~SwListBox();
+
+ void InsertEntry( const SwBoxEntry&,
+ USHORT nPos = LISTBOX_APPEND );
+ void InsertEntrySort( const SwBoxEntry& );
+ void RemoveEntry( USHORT nPos );
+ void Clear();
+
+ const SwBoxEntry& GetEntry( USHORT ) const;
+ const SwBoxEntry& GetSelectEntry() const;
+
+ // ueberladene Methoden der ListBox:
+ inline void SetSelectHdl( const Link& rLink );
+ inline void SetDoubleClickHdl( const Link& rLink );
+ inline void SetUpdateMode( BOOL bFlag );
+ inline void SelectEntryPos( USHORT nPos, BOOL bSelect = TRUE );
+ inline void SelectEntry( const String& rStr, BOOL bSelect = TRUE );
+ inline USHORT GetSelectEntryPos( USHORT nSelIndex = 0 ) const;
+ inline USHORT GetEntryPos( const String& rStr ) const;
+ inline USHORT GetEntryCount() const;
+ // fuer zugriffe aufs Control, aber nicht auf die ListBox!
+ inline Control& GetControl() { return *this; }
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: fuer ComboBoxen
+ --------------------------------------------------------------------*/
+
+enum SwComboBoxStyle
+{
+ CBS_UPPER = 0x01,
+ CBS_LOWER = 0x02,
+ CBS_ALL = 0x04,
+ CBS_FILENAME = 0x08,
+#ifdef WIN
+ CBS_SW_FILENAME = CBS_FILENAME | CBS_LOWER
+#else
+ CBS_SW_FILENAME = CBS_FILENAME
+#endif
+};
+
+class SwComboBox : public ComboBox
+{
+ SwEntryLst aEntryLst;
+ SwEntryLst aDelEntryLst;
+ SwBoxEntry aDefault;
+ USHORT nStyle;
+
+ void InitComboBox();
+ void InsertSorted(SwBoxEntry* pEntry);
+public:
+ SwComboBox(Window* pParent, const ResId& rId,
+ USHORT nStyleBits = CBS_ALL);
+ ~SwComboBox();
+
+ virtual void KeyInput( const KeyEvent& rKEvt );
+
+ void InsertNewEntry(const SwBoxEntry&);
+ void InsertEntry(const SwBoxEntry&);
+
+ void RemoveEntry(USHORT nPos);
+
+ USHORT GetEntryPos(const SwBoxEntry& rEntry) const;
+ const SwBoxEntry& GetEntry(USHORT) const;
+
+ USHORT GetRemovedCount() const;
+ const SwBoxEntry& GetRemovedEntry(USHORT nPos) const;
+
+ USHORT GetNewCount() const;
+ const SwBoxEntry& GetNewEntry(USHORT nPos) const;
+
+ USHORT GetStyle() const { return nStyle; }
+ void SetStyle(const USHORT nSt) { nStyle = nSt; }
+
+ String GetText() const;
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Inlines
+ --------------------------------------------------------------------*/
+
+/*inline void SwListBox::SetSelectHdl( const Link& rLink )
+{
+ ListBox::SetSelectHdl(rLink);
+}
+inline void SwListBox::SetDoubleClickHdl( const Link& rLink )
+{
+ ListBox::SetDoubleClickHdl( rLink );
+}
+inline void SwListBox::SetUpdateMode( BOOL bFlag )
+{
+ ListBox::SetUpdateMode(bFlag);
+}
+inline void SwListBox::SelectEntryPos( USHORT nPos, BOOL bSelect )
+{
+ ListBox::SelectEntryPos( nPos, bSelect );
+}
+inline void SwListBox::SelectEntry( const String& rStr, BOOL bSelect )
+{
+ ListBox::SelectEntry( rStr, bSelect );
+}
+inline USHORT SwListBox::GetSelectEntryPos( USHORT nSelIndex ) const
+{
+ return ListBox::GetSelectEntryPos( nSelIndex );
+}
+inline USHORT SwListBox::GetEntryPos( const String& rStr ) const
+{
+ return ListBox::GetEntryPos( rStr );
+}
+inline USHORT SwListBox::GetEntryCount() const
+{
+ return ListBox::GetEntryCount();
+}
+*/
+#endif // _SWLBOX_HXX
+
diff --git a/sw/source/ui/inc/swvset.hxx b/sw/source/ui/inc/swvset.hxx
new file mode 100644
index 000000000000..d9b828f10535
--- /dev/null
+++ b/sw/source/ui/inc/swvset.hxx
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * $RCSfile: swvset.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWVSET_HXX
+#define _SWVSET_HXX
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _SVX_NUMVSET_HXX
+#include <svx/numvset.hxx>
+#endif
+
+class SwDocShell;
+
+class SwRulerValueSet : public SvxBmpNumValueSet
+{
+ SwDocShell* pSwDocSh;
+ public:
+ SwRulerValueSet( Window* pParent,
+ const ResId& rResId,
+ const List& rStrNames,
+ SwDocShell* pSwDocSh );
+ ~SwRulerValueSet();
+
+ virtual void UserDraw( const UserDrawEvent& rUDEvt );
+ DECL_STATIC_LINK(SwRulerValueSet, GraphicArrivedHdl_Impl, SvxBrushItem*);
+
+};
+#endif
+
diff --git a/sw/source/ui/inc/syncbtn.hxx b/sw/source/ui/inc/syncbtn.hxx
new file mode 100644
index 000000000000..361cf0665bb0
--- /dev/null
+++ b/sw/source/ui/inc/syncbtn.hxx
@@ -0,0 +1,113 @@
+/*************************************************************************
+ *
+ * $RCSfile: syncbtn.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWSYNCBTN_HXX
+#define _SWSYNCBTN_HXX
+
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+
+#ifdef _SYNCDLG
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+class SwWrtShell;
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+class SwSyncBtnDlg : public SfxFloatingWindow
+{
+ PushButton aSyncBtn;
+
+ DECL_LINK( BtnHdl, PushButton* pBtn = 0 );
+
+public:
+ SwSyncBtnDlg(SfxBindings*, SfxChildWindow*, Window *pParent);
+ ~SwSyncBtnDlg();
+};
+#endif
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+class SwSyncChildWin : public SfxChildWindow
+{
+public:
+ SwSyncChildWin( Window* ,
+ USHORT nId,
+ SfxBindings*,
+ SfxChildWinInfo* );
+
+ SFX_DECL_CHILDWINDOW( SwSyncChildWin );
+};
+
+
+#endif
+
diff --git a/sw/source/ui/inc/table.hrc b/sw/source/ui/inc/table.hrc
new file mode 100644
index 000000000000..b0cd5097c8ef
--- /dev/null
+++ b/sw/source/ui/inc/table.hrc
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * $RCSfile: table.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "rcid.hrc"
+
+#define DLG_INSERT_TABLE RC_TABLE_BEGIN
+#define DLG_FORMAT_TABLE (RC_TABLE_BEGIN + 1)
+#define DLG_CONV_TEXT_TABLE (RC_TABLE_BEGIN + 2)
+#define DLG_INS_ROW_COL (RC_TABLE_BEGIN + 3)
+#define DLG_ROW_HEIGHT (RC_TABLE_BEGIN + 4)
+#define DLG_SPLIT (RC_TABLE_BEGIN + 5)
+#define DLG_COL_WIDTH (RC_TABLE_BEGIN + 6)
+#define MSG_ERR_TABLE_MERGE (RC_TABLE_BEGIN + 7)
+#define DLG_AUTOFMT_TABLE (RC_TABLE_BEGIN + 9)
+#define DLG_SWDLG_STRINPUT (RC_TABLE_BEGIN + 10)
+#define TP_TABLE_COLUMN (RC_TABLE_BEGIN + 11)
+#define DLG_INSERT_CHART (RC_TABLE_BEGIN + 12)
+#define MSG_WRONG_TABLENAME (RC_TABLE_BEGIN + 13)
+#define DLG_SPLIT_TABLE (RC_TABLE_BEGIN + 14)
+#define DLG_MERGE_TABLE (RC_TABLE_BEGIN + 15)
+
+#define TABLE_ACT_END DLG_MERGE_TABLE
+
+#if TABLE_ACT_END > RC_TABLE_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
diff --git a/sw/source/ui/inc/tabledlg.hxx b/sw/source/ui/inc/tabledlg.hxx
new file mode 100644
index 000000000000..bcc4ace8bb0e
--- /dev/null
+++ b/sw/source/ui/inc/tabledlg.hxx
@@ -0,0 +1,148 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabledlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TABLEDLG_HXX
+#define _TABLEDLG_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#include "swtypes.hxx"
+
+class SwWrtShell;
+class SwTabCols;
+struct TColumn;
+
+void lcl_ItemSetToTableParam( const SfxItemSet&, SwWrtShell& );
+extern const USHORT __FAR_DATA aUITableAttrRange[];
+
+/*-------------------------------------------------------
+ Tabellendialog
+--------------------------------------------------------- */
+class SwTableTabDlg : public SfxTabDialog
+{
+ SwWrtShell* pShell;
+ USHORT nHtmlMode;
+
+ virtual void PageCreated(USHORT nId, SfxTabPage& rPage);
+public:
+ SwTableTabDlg( Window* pParent, SfxItemPool& Pool,
+ const SfxItemSet* pItemSet, SwWrtShell* pSh );
+};
+
+class SwTableRep
+{
+ TColumn* pTColumns;
+
+ SwTwips nTblWidth;
+ SwTwips nSpace;
+ SwTwips nLeftSpace;
+ SwTwips nRightSpace;
+ USHORT nAlign;
+ USHORT nColCount;
+ USHORT nAllCols;
+ USHORT nWidthPercent;
+ BOOL bComplex : 1;
+ BOOL bLineSelected : 1;
+ BOOL bWidthChanged : 1;
+ BOOL bColsChanged : 1;
+
+public:
+ SwTableRep( const SwTabCols& rTabCol, BOOL bComplex );
+ ~SwTableRep();
+
+ BOOL FillTabCols( SwTabCols& rTabCol ) const;
+
+ SwTwips GetLeftSpace() const {return nLeftSpace;}
+ void SetLeftSpace(SwTwips nSet) {nLeftSpace = nSet;}
+
+ SwTwips GetRightSpace() const {return nRightSpace;}
+ void SetRightSpace(SwTwips nSet) {nRightSpace = nSet;}
+
+ SwTwips GetWidth() const {return nTblWidth;}
+ void SetWidth(SwTwips nSet) {nTblWidth = nSet;}
+
+ USHORT GetWidthPercent() const {return nWidthPercent;}
+ void SetWidthPercent(USHORT nSet) {nWidthPercent = nSet;}
+
+ USHORT GetAlign() const {return nAlign;}
+ void SetAlign(USHORT nSet) {nAlign = nSet;}
+
+ BOOL IsComplex() const {return bComplex;}
+ USHORT GetColCount() const {return nColCount;}
+ USHORT GetAllColCount() const {return nAllCols;}
+
+ BOOL HasColsChanged() const {return bColsChanged;}
+ void SetColsChanged() {bColsChanged = TRUE;}
+
+ BOOL HasWidthChanged() const {return bWidthChanged;}
+ void SetWidthChanged() {bWidthChanged = TRUE;}
+
+ BOOL IsLineSelected() const {return bLineSelected;}
+ void SetLineSelected(BOOL bSet) {bLineSelected = bSet;}
+
+ SwTwips GetSpace() const { return nSpace;}
+ void SetSpace(SwTwips nSet) {nSpace = nSet;}
+
+ TColumn* GetColumns() const {return pTColumns;}
+};
+
+#endif
diff --git a/sw/source/ui/inc/tablemgr.hxx b/sw/source/ui/inc/tablemgr.hxx
new file mode 100644
index 000000000000..464e6a3bb51c
--- /dev/null
+++ b/sw/source/ui/inc/tablemgr.hxx
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * $RCSfile: tablemgr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TABLEMGR_HXX
+#define _TABLEMGR_HXX
+
+#include "swtypes.hxx"
+#include "tabcol.hxx"
+
+class SwFrmFmt;
+class SwWrtShell;
+class Window;
+class SchMemChart;
+class SfxItemSet;
+
+const SwTwips lAutoWidth = INVALID_TWIPS;
+const char cParaDelim = 0x0a;
+
+class SwTableFUNC
+{
+ SwFrmFmt *pFmt;
+ SwWrtShell *pSh;
+ BOOL bCopy;
+ SwTabCols aCols;
+private:
+ int GetRightSeparator(int nNum) const;
+public:
+ inline SwTableFUNC(SwFrmFmt &);
+ SwTableFUNC(SwWrtShell *pShell, BOOL bCopyFmt = FALSE);
+ ~SwTableFUNC();
+
+ void InitTabCols();
+ void ColWidthDlg(Window *pParent );
+ SwTwips GetColWidth(USHORT nNum) const;
+ SwTwips GetMaxColWidth(USHORT nNum) const;
+ void SetColWidth(USHORT nNum, SwTwips nWidth );
+ USHORT GetColCount() const;
+ USHORT GetCurColNum() const;
+
+ BOOL IsTableSelected() const { return pFmt != 0; }
+
+ const SwFrmFmt *GetTableFmt() const { return pFmt; }
+
+ void InsertChart( SchMemChart& rData, const SfxItemSet* pSet = 0 );
+ void UpdateChart();
+};
+
+inline SwTableFUNC::SwTableFUNC(SwFrmFmt &rFmt) :
+ pFmt(&rFmt),
+ bCopy(FALSE),
+ pSh(0)
+{
+}
+
+#endif
diff --git a/sw/source/ui/inc/tabsh.hxx b/sw/source/ui/inc/tabsh.hxx
new file mode 100644
index 000000000000..9e6b3a05211a
--- /dev/null
+++ b/sw/source/ui/inc/tabsh.hxx
@@ -0,0 +1,83 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWTABSH_HXX
+#define _SWTABSH_HXX
+
+#include "basesh.hxx"
+
+class SwTableShell: public SwBaseShell
+{
+public:
+ SFX_DECL_INTERFACE(SW_TABSHELL);
+ TYPEINFO();
+
+ void Execute(SfxRequest &);
+ void GetState(SfxItemSet &);
+ void GetFrmBorderState(SfxItemSet &rSet);
+ void GetLineStyleState(SfxItemSet &rSet);
+ void ExecTableStyle(SfxRequest& rReq);
+
+ void ExecNumberFormat(SfxRequest& rReq);
+
+ SwTableShell(SwView &rView);
+};
+
+#endif
diff --git a/sw/source/ui/inc/tautofmt.hxx b/sw/source/ui/inc/tautofmt.hxx
new file mode 100644
index 000000000000..a85da1bcacd2
--- /dev/null
+++ b/sw/source/ui/inc/tautofmt.hxx
@@ -0,0 +1,162 @@
+/*************************************************************************
+ *
+ * $RCSfile: tautofmt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SW_TAUTOFMT_HXX
+#define SW_TAUTOFMT_HXX
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.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 _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _MOREBTN_HXX //autogen
+#include <vcl/morebtn.hxx>
+#endif
+
+#ifndef _VIRDEV_HXX //autogen
+#include <vcl/virdev.hxx>
+#endif
+
+class SwView;
+class SwTableAutoFmt;
+class SvxBoxItem;
+class SvxBorderLine;
+class AutoFmtPreview;
+class SwTableAutoFmtTbl;
+
+//------------------------------------------------------------------------
+
+enum AutoFmtLine { TOP_LINE, BOTTOM_LINE, LEFT_LINE, RIGHT_LINE };
+
+//========================================================================
+
+class SwAutoFormatDlg : public SfxModalDialog
+{
+ FixedText aFtFormat;
+ ListBox aLbFormat;
+ GroupBox aGbPreview;
+ CheckBox aBtnNumFormat;
+ CheckBox aBtnBorder;
+ CheckBox aBtnFont;
+ CheckBox aBtnPattern;
+ CheckBox aBtnAlignment;
+ GroupBox aGbFormat;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+ PushButton aBtnAdd;
+ PushButton aBtnRemove;
+ PushButton aBtnRename;
+ MoreButton aBtnMore;
+ String aStrTitle;
+ String aStrLabel;
+ String aStrClose;
+ String aStrDelTitle;
+ String aStrDelMsg;
+ String aStrRenameTitle;
+ String aStrInvalidFmt;
+ AutoFmtPreview* pWndPreview;
+
+ //------------------------
+ SwWrtShell* pShell;
+ SwTableAutoFmtTbl* pTableTbl;
+ BYTE nIndex;
+ BYTE nDfltStylePos;
+ BOOL bCoreDataChanged : 1;
+ BOOL bSetAutoFmt : 1;
+
+
+ void Init( const SwTableAutoFmt* pSelFmt );
+ void UpdateChecks( const SwTableAutoFmt&, BOOL bEnableBtn );
+ //------------------------
+ DECL_LINK( CheckHdl, Button * );
+ DECL_LINK( OkHdl, Button * );
+ DECL_LINK( AddHdl, void * );
+ DECL_LINK( RemoveHdl, void * );
+ DECL_LINK( RenameHdl, void * );
+ DECL_LINK( SelFmtHdl, void * );
+
+public:
+ SwAutoFormatDlg( Window* pParent, SwWrtShell* pShell,
+ BOOL bSetAutoFmt = TRUE,
+ const SwTableAutoFmt* pSelFmt = 0 );
+ virtual ~SwAutoFormatDlg();
+
+ void FillAutoFmtOfIndex( SwTableAutoFmt*& rToFill ) const;
+};
+
+
+#endif // SW_AUTOFMT_HXX
+
diff --git a/sw/source/ui/inc/tblctrl.hxx b/sw/source/ui/inc/tblctrl.hxx
new file mode 100644
index 000000000000..63c54b0d6e79
--- /dev/null
+++ b/sw/source/ui/inc/tblctrl.hxx
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * $RCSfile: tblctrl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TBLCTRL_HXX
+#define _TBLCTRL_HXX
+
+
+#ifndef _SFXTBXCTRL_HXX //autogen
+#include <sfx2/tbxctrl.hxx>
+#endif
+
+
+//----------------------------------------------------------------------------
+//
+//----------------------------------------------------------------------------
+
+class SwTableOptimizeCtrl : public SfxToolBoxControl
+{
+
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SwTableOptimizeCtrl( USHORT nId, ToolBox& rTbx, SfxBindings& rBind );
+ ~SwTableOptimizeCtrl();
+
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+
+};
+
+//
+//----------------------------------------------------------------------------
+
+#endif
+
+
diff --git a/sw/source/ui/inc/tblnumfm.hxx b/sw/source/ui/inc/tblnumfm.hxx
new file mode 100644
index 000000000000..f24cb39a7462
--- /dev/null
+++ b/sw/source/ui/inc/tblnumfm.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: tblnumfm.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TBLNUMFM_HXX
+#define _TBLNUMFM_HXX
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+
+class Window;
+class SfxItemSet;
+
+class SwNumFmtDlg : public SfxSingleTabDialog
+{
+public:
+
+ SwNumFmtDlg(Window* pParent, SfxItemSet& rSet);
+ ~SwNumFmtDlg();
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/tbxanchr.hxx b/sw/source/ui/inc/tbxanchr.hxx
new file mode 100644
index 000000000000..c8f0471d3570
--- /dev/null
+++ b/sw/source/ui/inc/tbxanchr.hxx
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * $RCSfile: tbxanchr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TBXANCHR_HXX
+#define _TBXANCHR_HXX
+
+#ifndef _SFXTBXCTRL_HXX //autogen
+#include <sfx2/tbxctrl.hxx>
+#endif
+
+class SwTbxAnchor : public SfxToolBoxControl
+{
+ USHORT nActAnchorId;
+
+public:
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState, const SfxPoolItem* pState );
+ virtual void Click();
+
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SwTbxAnchor( USHORT nId, ToolBox& rTbx, SfxBindings& rBind );
+ ~SwTbxAnchor();
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/tbxmgr.hxx b/sw/source/ui/inc/tbxmgr.hxx
new file mode 100644
index 000000000000..86ffbd85e13e
--- /dev/null
+++ b/sw/source/ui/inc/tbxmgr.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: tbxmgr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TBXMGR_HXX
+#define _TBXMGR_HXX
+
+#ifndef _TBXDRAW_HXX //autogen
+#include <svx/tbxdraw.hxx>
+#endif
+
+class SwPopupWindowTbxMgr : public SvxPopupWindowTbxMgr
+{
+ BOOL bWeb:1; //gilt der WebMode?
+ ResId aRIdWinTemp;
+ ResId aRIdTbxTemp;
+
+public:
+ SwPopupWindowTbxMgr( USHORT nId,
+ WindowAlign eAlign,
+ ResId aRIdWin,
+ ResId aRIdTbx,
+ SfxBindings& rBindings );
+
+ virtual void StateChanged(USHORT nSID, SfxItemState eState, const SfxPoolItem* pState);
+ virtual SfxPopupWindow* Clone() const;
+};
+
+
+#endif // _TBX_DRAW_HXX
diff --git a/sw/source/ui/inc/textsh.hxx b/sw/source/ui/inc/textsh.hxx
new file mode 100644
index 000000000000..02a9290c3965
--- /dev/null
+++ b/sw/source/ui/inc/textsh.hxx
@@ -0,0 +1,132 @@
+/*************************************************************************
+ *
+ * $RCSfile: textsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWTEXTSH_HXX
+#define _SWTEXTSH_HXX
+
+#ifndef _SWBASESH_HXX
+#include <basesh.hxx>
+#endif
+
+class Button;
+class SwFldMgr;
+class SvxHyperlinkItem;
+
+class SwTextShell: public SwBaseShell
+{
+ SwFldMgr* pPostItFldMgr;
+
+ // Itemset pointer for the Graphic-Insert Dialog. This set contains all
+ // graphic sepcifict attributes and will only be created / deletec by the
+ // methods InsertGraphicDialog and InitGraphicFrame
+ SfxItemSet* pInsGrfSetPtr;
+
+ void InsertSymbol( const String& rChars, const String& rFont );
+ void InsertHyperlink(const SvxHyperlinkItem& rHlnkItem);
+ BOOL InsertGraphicDlg();
+ void InsertURLButton(const String& rURL, const String& rTarget, const String& rTxt);
+ void InsertDBFld(const String& sFldName);
+
+public:
+ SFX_DECL_INTERFACE(SW_TEXTSHELL);
+ TYPEINFO();
+
+ DECL_LINK( PostItNextHdl, Button * );
+ DECL_LINK( PostItPrevHdl, Button * );
+ DECL_LINK( RedlineNextHdl, Button * );
+ DECL_LINK( RedlinePrevHdl, Button * );
+
+ DECL_LINK( InitGraphicFrame, Button * );
+
+ void Execute(SfxRequest &);
+ void GetState(SfxItemSet &);
+
+ void ExecInsert(SfxRequest &);
+ void StateInsert(SfxItemSet&);
+ void ExecDelete(SfxRequest &);
+ void ExecEnterNum(SfxRequest &);
+ void ExecBasicMove(SfxRequest &);
+ void ExecMove(SfxRequest &);
+ void ExecMovePage(SfxRequest &);
+ void ExecMoveCol(SfxRequest &);
+ void ExecMoveLingu(SfxRequest &);
+ void ExecMoveMisc(SfxRequest &);
+ void ExecField(SfxRequest &rReq);
+ void StateField(SfxItemSet &);
+ void ExecIdx(SfxRequest &);
+ void GetIdxState(SfxItemSet &);
+ void ExecGlossary(SfxRequest &);
+
+ void ExecCharAttr(SfxRequest &);
+ void ExecCharButtonAttr(SfxRequest &);
+ void ExecCharAttrArgs(SfxRequest &);
+ void ExecParaAttr(SfxRequest &);
+ void ExecParaAttrArgs(SfxRequest &);
+ void ExecAttr(SfxRequest &);
+ void ExecDB(SfxRequest &);
+
+ void GetAttrState(SfxItemSet &);
+
+ SwTextShell(SwView &rView);
+ virtual ~SwTextShell();
+};
+
+#endif
diff --git a/sw/source/ui/inc/tmpdlg.hxx b/sw/source/ui/inc/tmpdlg.hxx
new file mode 100644
index 000000000000..680b1cf85ee3
--- /dev/null
+++ b/sw/source/ui/inc/tmpdlg.hxx
@@ -0,0 +1,104 @@
+/*************************************************************************
+ *
+ * $RCSfile: tmpdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWCHARDLG_HXX
+#define _SWCHARDLG_HXX
+
+#ifndef _SFX_STYLEDLG_HXX //autogen
+#include <sfx2/styledlg.hxx>
+#endif
+
+class SfxItemSet;
+class FontList;
+class SwWrtShell;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Der Tabdialog Traeger der TabPages
+ --------------------------------------------------------------------*/
+
+class SwTemplateDlg: public SfxStyleDialog
+{
+
+ USHORT nType;
+ USHORT nHtmlMode;
+ SwWrtShell* pWrtShell;
+ BOOL bNewStyle;
+
+ DECL_LINK( NumOptionsHdl, PushButton* );
+
+public:
+ SwTemplateDlg( Window* pParent,
+ SfxStyleSheetBase& rBase,
+ USHORT nRegion,
+ BOOL bColumn = FALSE,
+ SwWrtShell* pActShell = 0,
+ BOOL bNew = FALSE );
+
+ ~SwTemplateDlg();
+ const SfxItemSet* GetRefreshedSet();
+
+ virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
+ virtual short Ok();
+};
+
+
+#endif
+
diff --git a/sw/source/ui/inc/tmplctrl.hxx b/sw/source/ui/inc/tmplctrl.hxx
new file mode 100644
index 000000000000..dfaac8722c79
--- /dev/null
+++ b/sw/source/ui/inc/tmplctrl.hxx
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * $RCSfile: tmplctrl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TMPLCTRL_HXX
+#define _TMPLCTRL_HXX
+
+// include ---------------------------------------------------------------
+
+#ifndef _SFXSTBITEM_HXX //autogen
+#include <sfx2/stbitem.hxx>
+#endif
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+
+// class BookmarkToolBoxControl -------------------------------------------
+
+class SwTemplateControl : public SfxStatusBarControl
+{
+protected:
+ virtual void Command( const CommandEvent& rCEvt );
+public:
+ virtual void StateChanged( const SfxPoolItem* pState );
+ virtual void Paint( const UserDrawEvent& rEvt );
+
+ SFX_DECL_STATUSBAR_CONTROL();
+
+ SwTemplateControl( USHORT nId, StatusBar& rStb, SfxBindings& rBind );
+ ~SwTemplateControl();
+
+private:
+ String sTemplate;
+};
+
+
+#endif
+
diff --git a/sw/source/ui/inc/toxmgr.hxx b/sw/source/ui/inc/toxmgr.hxx
new file mode 100644
index 000000000000..05ed0282fe47
--- /dev/null
+++ b/sw/source/ui/inc/toxmgr.hxx
@@ -0,0 +1,351 @@
+/*************************************************************************
+ *
+ * $RCSfile: toxmgr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _TOXMGR_HXX
+#define _TOXMGR_HXX
+
+#include "tox.hxx"
+#ifndef _AUTHFLD_HXX
+#include <authfld.hxx>
+#endif
+
+class SwWrtShell;
+class SwForm;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Manager fuer Verzeichnisfunktionalitaet
+ --------------------------------------------------------------------*/
+//one single method will be sufficient to insert AND upate indexes
+
+class SwTOXDescription
+{
+ TOXTypes eTOXType;
+ String aStyleNames[MAXLEVEL];
+ String sSequenceName;
+ String sMainEntryCharStyle;
+ String sAutoMarkURL;
+ String* pTitle;
+ String* pTOUName;
+ SwForm* pForm;
+ USHORT nContent;
+ USHORT nIndexOptions;
+ USHORT nOLEOptions;
+ String sAuthBrackets;
+ SwCaptionDisplay eCaptionDisplay;
+ SwTOXSortKey eSortKey1;
+ SwTOXSortKey eSortKey2;
+ SwTOXSortKey eSortKey3;
+ BYTE nLevel;
+ BOOL bFromObjectNames : 1;
+ BOOL bFromChapter : 1;
+ BOOL bReadonly: 1;
+ BOOL bLevelFromChapter : 1;
+ BOOL bIsAuthSequence :1;
+ BOOL bSortByDocument :1;
+
+ //TODO: TemplateNames
+ //const String* pTemplateName = 0, ???
+ SwTOXDescription(SwTOXDescription&);
+public:
+ SwTOXDescription(TOXTypes eType) :
+ eTOXType(eType),
+ pTitle(0),
+ pForm(0),
+ nContent(TOX_MARK | TOX_OUTLINELEVEL),
+ nLevel(MAXLEVEL),
+ pTOUName(0),
+ nIndexOptions(TOI_SAME_ENTRY|TOI_FF|TOI_CASE_SENSITIVE),
+ nOLEOptions(0),
+ eCaptionDisplay(CAPTION_COMPLETE),
+ bFromObjectNames(FALSE),
+ bFromChapter(FALSE),
+ bReadonly(TRUE),
+ bLevelFromChapter(FALSE),
+ bIsAuthSequence(FALSE),
+ bSortByDocument(TRUE)
+ {}
+ ~SwTOXDescription()
+ {
+ delete pTitle;
+ delete pForm;
+ delete pTOUName;
+ }
+
+ void SetTOXType(TOXTypes eSet) { eTOXType = eSet;}
+ TOXTypes GetTOXType() const { return eTOXType;}
+
+ const String& GetStyleNames(USHORT nLevel) const
+ {return aStyleNames[nLevel];}
+ void SetStyleNames(const String& rSet, USHORT nLevel)
+ {aStyleNames[nLevel] = rSet; }
+
+ const String& GetAutoMarkURL() const { return sAutoMarkURL;}
+ void SetAutoMarkURL(const String& rSet) {sAutoMarkURL = rSet;}
+
+ void SetTitle(const String& pSet) {delete pTitle; pTitle = new String(pSet);}
+ const String* GetTitle() const {return pTitle; }
+
+ void SetTOUName(const String& pSet) {delete pTOUName; pTOUName = new String(pSet);}
+ const String* GetTOUName() const {return pTOUName; }
+
+ void SetForm(const SwForm& rSet) {delete pForm; pForm = new SwForm(rSet);}
+ const SwForm* GetForm() const {return pForm;}
+
+ void SetContentOptions(USHORT nSet) { nContent = nSet;}
+ USHORT GetContentOptions() const { return nContent;}
+
+ void SetIndexOptions(USHORT nSet) { nIndexOptions = nSet;}
+ USHORT GetIndexOptions() const { return nIndexOptions;}
+
+ const String& GetMainEntryCharStyle() const {return sMainEntryCharStyle;}
+ void SetMainEntryCharStyle(const String& rSet) {sMainEntryCharStyle = rSet;}
+
+ void SetLevel(BYTE nSet) {nLevel = nSet;}
+ BYTE GetLevel()const {return nLevel; }
+
+ void SetCreateFromObjectNames(BOOL bSet) { bFromObjectNames = bSet;}
+ BOOL IsCreateFromObjectNames() const {return bFromObjectNames;}
+
+ const String& GetSequenceName() const {return sSequenceName;}
+ void SetSequenceName(const String& rSet) {sSequenceName = rSet;}
+
+ SwCaptionDisplay GetCaptionDisplay() const { return eCaptionDisplay;}
+ void SetCaptionDisplay(SwCaptionDisplay eSet) {eCaptionDisplay = eSet;}
+
+ void SetFromChapter(BOOL bSet) { bFromChapter = bSet;}
+ BOOL IsFromChapter() const {return bFromChapter;}
+
+ void SetReadonly(BOOL bSet){bReadonly = bSet;}
+ BOOL IsReadonly() const {return bReadonly;}
+
+ USHORT GetOLEOptions() const {return nOLEOptions;}
+ void SetOLEOptions(USHORT nOpt) {nOLEOptions = nOpt;}
+
+ BOOL IsLevelFromChapter() const {return bLevelFromChapter;}
+ void SetLevelFromChapter(BOOL bSet) {bLevelFromChapter = bSet;}
+
+ String GetAuthBrackets() const {return sAuthBrackets;}
+ void SetAuthBrackets(const String& rSet) {sAuthBrackets = rSet;}
+
+ BOOL IsAuthSequence() const {return bIsAuthSequence;}
+ void SetAuthSequence(BOOL bSet){bIsAuthSequence = bSet;}
+
+ BOOL IsSortByDocument()const {return bSortByDocument ;}
+ void SetSortByDocument(BOOL bSet) {bSortByDocument = bSet;}
+
+ void SetSortKeys(SwTOXSortKey eKey1,
+ SwTOXSortKey eKey2,
+ SwTOXSortKey eKey3);
+
+ SwTOXSortKey GetSortKey1() const {return eSortKey1;}
+ SwTOXSortKey GetSortKey2() const {return eSortKey2;}
+ SwTOXSortKey GetSortKey3() const {return eSortKey3;}
+
+
+ void ApplyTo(SwTOXBase& rTOXBase);
+};
+// --------------------------------------------------------------------------------
+class SwTOXMarkDescription
+{
+ TOXTypes eTOXType;
+ int nLevel;
+ BOOL bMainEntry;
+
+ String* pPrimKey;
+ String* pSecKey;
+ String* pAltStr;
+ String* pTOUName;
+
+public:
+ SwTOXMarkDescription(TOXTypes eType) :
+ eTOXType(eType),
+ pPrimKey(0),
+ pSecKey(0),
+ pAltStr(0),
+ pTOUName(0),
+ nLevel(0),
+ bMainEntry(FALSE)
+ {
+ }
+ ~SwTOXMarkDescription()
+ {
+ delete pPrimKey;
+ delete pSecKey;
+ delete pAltStr;
+ delete pTOUName;
+ }
+
+ TOXTypes GetTOXType()const {return eTOXType;}
+
+ void SetLevel(int nSet) {nLevel = nSet;}
+ int GetLevel() const {return nLevel;}
+
+ void SetMainEntry(BOOL bSet) {bMainEntry = bSet;}
+ BOOL IsMainEntry() const {return bMainEntry;}
+
+ void SetPrimKey(const String& rSet)
+ {delete pPrimKey; pPrimKey = new String(rSet);}
+ const String* GetPrimKey() const {return pPrimKey;}
+
+ void SetSecKey(const String& rSet)
+ {delete pSecKey; pSecKey = new String(rSet);}
+ const String* GetSecKey() const { return pSecKey; }
+
+ void SetAltStr(const String& rSet)
+ {delete pAltStr; pAltStr = new String(rSet);}
+ const String* GetAltStr() const { return pAltStr; }
+
+ void SetTOUName(const String& rSet)
+ {delete pTOUName; pTOUName = new String(rSet);}
+ const String* GetTOUName() const {return pTOUName;}
+};
+
+class SwTOXMgr
+{
+ SwWrtShell* pSh;
+ SwTOXMark* pCurTOXMark;
+ SwTOXMarks aCurMarks;
+
+ USHORT GetUserTypeID(const String& rStr);
+
+public:
+ SwTOXMgr(SwWrtShell* pShell);
+ //
+ // Methoden fuer Verzeichnismarkierungen
+ //
+ void InsertTOXMark(const SwTOXMarkDescription& rDesc);
+
+ void UpdateTOXMark(const SwTOXMarkDescription& rDesc);
+
+
+ void DeleteTOXMark();
+ void NextTOXMark(BOOL bSame=FALSE);
+ void PrevTOXMark(BOOL bSame=FALSE);
+
+ // Aktuelle TOXmarks holen
+ USHORT GetTOXMarks();
+ USHORT GetTOXMarkCount();
+ SwTOXMark* GetTOXMark(USHORT nId);
+ SwTOXMark* GetCurTOXMark();
+ void SetCurTOXMark(USHORT nId);
+
+ //
+ // Methoden fuer Verzeichnisse
+ //
+ BOOL UpdateOrInsertTOX(const SwTOXDescription& rDesc, SwTOXBase** ppBase = 0, const SfxItemSet* pSet = 0);
+
+#ifdef USE_OLD_INDEXES
+ void InsertTOI(const USHORT nOptions = TOI_SAME_ENTRY|TOI_FF|TOI_CASE_SENSITIVE,
+ const String* pTitel = 0,
+ const SwForm* pForm = 0,
+ SwTOXBase** ppBase = 0 );
+
+ BOOL UpdateTOI(const USHORT nOptions,
+ const String* pTitel = 0,
+ const SwForm* pForm = 0);
+
+
+ void InsertTOC(const USHORT nContent = TOX_MARK | TOX_OUTLINELEVEL,
+ int nLevel = MAXLEVEL,
+ const String* pTitel = 0,
+ const SwForm* pForm = 0,
+ SwTOXBase** ppBase = 0);
+
+ BOOL UpdateTOC(const USHORT nContent = TOX_MARK | TOX_OUTLINELEVEL,
+ int nLevel = MAXLEVEL,
+ const String* pTitel = 0,
+ const SwForm* pForm = 0);
+
+ void InsertTOU(const USHORT nContent = TOX_MARK,
+ const String* pTOUName = 0,
+ const String* pTemplateName = 0,
+ int nLevel = MAXLEVEL,
+ const String* pTitel = 0,
+ const SwForm* pForm = 0,
+ SwTOXBase** ppBase = 0);
+
+ BOOL UpdateTOU(const USHORT nContent,
+ const String* pTOUName = 0,
+ const String* pTemplateName = 0,
+ int nLevel = MAXLEVEL,
+ const String* pTitel = 0,
+ const SwForm* pForm = 0);
+
+#endif
+
+ const SwTOXType* GetTOXType(TOXTypes eTyp, USHORT nId) const;
+ const SwTOXBase* GetCurTOX();
+
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Inlines
+ --------------------------------------------------------------------*/
+
+inline USHORT SwTOXMgr::GetTOXMarkCount()
+ { return aCurMarks.Count(); }
+
+
+inline SwTOXMark* SwTOXMgr::GetCurTOXMark()
+ { return pCurTOXMark; }
+
+#endif
diff --git a/sw/source/ui/inc/uiborder.hxx b/sw/source/ui/inc/uiborder.hxx
new file mode 100644
index 000000000000..fb2790a84896
--- /dev/null
+++ b/sw/source/ui/inc/uiborder.hxx
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * $RCSfile: uiborder.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UIBORDER_HXX
+#define _UIBORDER_HXX
+
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+class Window;
+class SfxItemSet;
+
+class SwBorderDlg : public SfxSingleTabDialog
+{
+public:
+
+ // nType may be:
+ // SW_BORDER_MODE_PARA
+ // SW_BORDER_MODE_TABLE
+ // SW_BORDER_MODE_FRAME
+
+ SwBorderDlg(Window* pParent, SfxItemSet& rSet, USHORT nType);
+ ~SwBorderDlg();
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/uiitems.hxx b/sw/source/ui/inc/uiitems.hxx
new file mode 100644
index 000000000000..4516476eeee4
--- /dev/null
+++ b/sw/source/ui/inc/uiitems.hxx
@@ -0,0 +1,147 @@
+/*************************************************************************
+ *
+ * $RCSfile: uiitems.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UIITEMS_HXX
+#define _UIITEMS_HXX
+
+#include "pagedesc.hxx"
+#include "cmdid.h"
+#ifndef _SFXINTITEM_HXX
+#include <svtools/intitem.hxx>
+#endif
+class SwNumRule;
+class International;
+
+/*--------------------------------------------------------------------
+ Beschreibung: Container fuer FootNote
+ --------------------------------------------------------------------*/
+class SwPageFtnInfoItem : public SfxPoolItem
+{
+ SwPageFtnInfo aFtnInfo;
+
+public:
+
+ SwPageFtnInfoItem(const USHORT nId, SwPageFtnInfo& rInfo);
+ SwPageFtnInfoItem(const SwPageFtnInfoItem& rItem );
+ ~SwPageFtnInfoItem();
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+ SwPageFtnInfo& GetPageFtnInfo() { return aFtnInfo; }
+ const SwPageFtnInfo& GetPageFtnInfo() const { return aFtnInfo; }
+ void SetPageFtnInfo(SwPageFtnInfo& rInf) { aFtnInfo = rInf; }
+};
+
+/*******************************************************************/
+
+class SwPtrItem : public SfxPoolItem
+{
+ void* pMisc;
+
+public:
+ SwPtrItem( const USHORT nId = FN_PARAM_GRF_DIALOG, void* pPtr = 0);
+ SwPtrItem( const SwPtrItem& rItem );
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual int operator==( const SfxPoolItem& ) const;
+
+ void SetValue(void * pPtr) { pMisc= pPtr; }
+ void* GetValue() const { return pMisc; }
+};
+
+/*******************************************************************/
+
+class SwUINumRuleItem : public SfxPoolItem
+{
+ SwNumRule* pRule;
+
+public:
+ SwUINumRuleItem( const String& rName, const USHORT = FN_PARAM_ACT_NUMBER);
+ SwUINumRuleItem( const SwNumRule& rRule, const USHORT = FN_PARAM_ACT_NUMBER);
+ SwUINumRuleItem( const SwUINumRuleItem& rItem );
+ virtual ~SwUINumRuleItem();
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual int operator==( const SfxPoolItem& ) 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 SwNumRule* GetNumRule() const { return pRule; }
+ SwNumRule* GetNumRule() { return pRule; }
+};
+
+/* -----------------17.06.98 17:40-------------------
+ *
+ * --------------------------------------------------*/
+class SwBackgroundDestinationItem : public SfxUInt16Item
+{
+public:
+ SwBackgroundDestinationItem(USHORT nWhich, USHORT nValue);
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+};
+
+#endif // _UIITEMS_HXX
diff --git a/sw/source/ui/inc/uinums.hxx b/sw/source/ui/inc/uinums.hxx
new file mode 100644
index 000000000000..601e2a145b03
--- /dev/null
+++ b/sw/source/ui/inc/uinums.hxx
@@ -0,0 +1,178 @@
+/*************************************************************************
+ *
+ * $RCSfile: uinums.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UINUMS_HXX
+#define _UINUMS_HXX
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+#ifndef _CFGID_H
+#include <cfgid.h>
+#endif
+
+class SfxPoolItem;
+class SwWrtShell;
+class SvStream;
+
+#define MAX_NUM_RULES 9
+
+typedef SfxPoolItem* SfxPoolItemPtr;
+SV_DECL_PTRARR_DEL( _SwNumFmtsAttrs, SfxPoolItemPtr, 5,0 )
+
+//------------------------------------------------------------------------
+class SwNumRulesWithName
+{
+ String aName;
+ // die Formate der NumRule muessen! unabhaengig von einem Document sein
+ // (Sie sollen immer vorhanden sein!)
+ class _SwNumFmtGlobal
+ {
+ SwNumFmt aFmt;
+ String sCharFmtName;
+ USHORT nCharPoolId;
+ _SwNumFmtsAttrs aItems;
+
+ _SwNumFmtGlobal& operator=( const _SwNumFmtGlobal& );
+
+ public:
+ _SwNumFmtGlobal( const SwNumFmt& rFmt );
+ _SwNumFmtGlobal( const _SwNumFmtGlobal& );
+ _SwNumFmtGlobal( SvStream&, USHORT nVersion );
+ ~_SwNumFmtGlobal();
+
+ void Store( SvStream& );
+ void ChgNumFmt( SwWrtShell& rSh, SwNumFmt& rChg ) const;
+ };
+
+ _SwNumFmtGlobal* aFmts[ MAXLEVEL ];
+protected:
+ void SetName(const String& rSet) {aName = rSet;}
+
+public:
+ SwNumRulesWithName(const SwNumRule &, const String &);
+ SwNumRulesWithName( const SwNumRulesWithName & );
+ SwNumRulesWithName(SvStream &, USHORT nVersion);
+ ~SwNumRulesWithName();
+
+ const SwNumRulesWithName &operator=(const SwNumRulesWithName &);
+
+ const String& GetName() const { return aName; }
+ void MakeNumRule( SwWrtShell& rSh, SwNumRule& rChg ) const;
+
+ void Store( SvStream& );
+};
+/********************************************************************
+
+********************************************************************/
+class SwBaseNumRules
+{
+public:
+ enum { nMaxRules = MAX_NUM_RULES }; // zur Zeit 9 definierte Forms
+protected:
+ SwNumRulesWithName *pNumRules[ MAX_NUM_RULES ];
+ String sFileName;
+ USHORT nVersion;
+ BOOL bModified;
+
+ virtual int Load(SvStream&);
+ virtual BOOL Store(SvStream&);
+
+ void Init();
+
+public:
+ SwBaseNumRules(const String& rFileName);
+ virtual ~SwBaseNumRules();
+
+ inline const SwNumRulesWithName* GetRules(USHORT nIdx) const;
+ const SwNumRulesWithName* GetRules(const String &rName) const;
+ virtual void ApplyNumRules(
+ const SwNumRulesWithName &rCopy,
+ USHORT nIdx);
+
+};
+
+/********************************************************************
+
+********************************************************************/
+class SwChapterNumRules : public SwBaseNumRules
+{
+
+public:
+ SwChapterNumRules();
+ virtual ~SwChapterNumRules();
+
+ virtual String GetName() const;
+ virtual void ApplyNumRules( const SwNumRulesWithName &rCopy,
+ USHORT nIdx);
+};
+
+// INLINE METHODE --------------------------------------------------------
+inline const SwNumRulesWithName *SwBaseNumRules::GetRules(USHORT nIdx) const
+{
+ ASSERT(nIdx < nMaxRules, Array der NumRules ueberindiziert.);
+ return pNumRules[nIdx];
+}
+
+#endif
diff --git a/sw/source/ui/inc/uitool.hxx b/sw/source/ui/inc/uitool.hxx
new file mode 100644
index 000000000000..08f8c1ccb014
--- /dev/null
+++ b/sw/source/ui/inc/uitool.hxx
@@ -0,0 +1,139 @@
+/*************************************************************************
+ *
+ * $RCSfile: uitool.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _UITOOL_HXX
+#define _UITOOL_HXX
+
+#ifndef _SV_WINTYPES_HXX //autogen
+#include <vcl/wintypes.hxx>
+#endif
+#ifndef _SV_FIELD_HXX
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+
+class MetricFormatter;
+class SfxItemSet;
+class SfxMedium;
+class SwPageDesc;
+class Printer;
+class SvxTabStopItem;
+class SwWrtShell;
+class ListBox;
+class SwDocShell;
+class SwFrmFmt;
+class SwTabCols;
+
+
+// Umschalten einer Metric
+void SetMetric(MetricFormatter& rCtrl, FieldUnit eUnit);
+
+// BoxInfoAttribut fuellen
+void PrepareBoxInfo(SfxItemSet& rSet, const SwWrtShell& rSh);
+
+// SfxItemSets <-> PageDesc
+void ItemSetToPageDesc(const SfxItemSet& rSet,
+ SwPageDesc& rPageDesc,
+ SwWrtShell* pShell );
+
+void PageDescToItemSet( const SwPageDesc& rPageDesc, SfxItemSet& rSet);
+
+// Auffuellen der Tabs mit DefaultTabs
+void MakeDefTabs(SwTwips nDefDist, SvxTabStopItem& rTabs);
+
+// DefaultTabs loeschen aus dem TabStopArray
+//void EraseDefTabs(SvxTabStopItem& rTabs);
+
+// Abstand zwischen dem 1. und zweitem Element ermitteln
+USHORT GetTabDist(const SvxTabStopItem& rTabs);
+
+// erfrage ob im Set eine Sfx-PageDesc-Kombination vorliegt
+// und setze diesen im Set und loesche die Transport Items
+// (PageBreak & PageModel) aus dem Set
+void SwToSfxPageDescAttr( SfxItemSet& rSet );
+void SfxToSwPageDescAttr( const SwWrtShell& rShell, SfxItemSet& rSet );
+
+FieldUnit GetDfltMetric(BOOL bWeb);
+void SetDfltMetric(FieldUnit eMetric, BOOL bWeb);
+
+// Umwandlung: Sub(LibName.ModulName) -> LibName.ModulName.Sub
+String ConvertMacroFormat(const String& rInput );
+
+// besorge einen Filenamen/Filternamen. Wird ppMed uebergeben, wird das
+// erzeugte Medium returnt. Auch das FilePassword kann returnt werden.
+BOOL GetFileFilterNameDlg( Window& rParent, String& rFileName,
+ String* pFilePassword =0, String* pFilterName =0,
+ SfxMedium** ppMed = 0 );
+
+// ListBox mit allen Zeichenvorlagen fuellen - ausser Standard!
+void FillCharStyleListBox(ListBox& rToFill, SwDocShell* pDocSh, BOOL bSorted = FALSE);
+//inserts a string sorted into a ListBox,
+USHORT InsertStringSorted(const String& rEntry, ListBox& rToFill, BOOL bHasOffset, const International& rInt);
+
+// Tabellenbreite und Ausrichtung ermitteln
+SwTwips GetTableWidth( SwFrmFmt* pFmt, SwTabCols& rCols, USHORT *pPercent,
+ SwWrtShell* pSh );
+
+
+#endif // _UITOOL_HXX
diff --git a/sw/source/ui/inc/uivwimp.hxx b/sw/source/ui/inc/uivwimp.hxx
new file mode 100644
index 000000000000..cdd3e7935ca1
--- /dev/null
+++ b/sw/source/ui/inc/uivwimp.hxx
@@ -0,0 +1,121 @@
+/*************************************************************************
+ *
+ * $RCSfile: uivwimp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UIVWIMP_HXX
+#define _UIVWIMP_HXX
+
+#ifndef _SWVIEW_HXX //autogen
+#include <view.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_VIEW_XSELECTIONSUPPLIER_HPP_
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE1_HXX_
+#include <cppuhelper/implbase1.hxx> // helper for implementations
+#endif
+
+class SwXTextView;
+/* -----------------------------29.05.00 08:22--------------------------------
+
+ ---------------------------------------------------------------------------*/
+class SwScannerEventListener : public ::cppu::WeakImplHelper1< ::com::sun::star::lang::XEventListener >
+{
+private:
+
+ SwView* m_pParent;
+
+public:
+
+ SwScannerEventListener( SwView* pParent ) : m_pParent( pParent ) {};
+ virtual ~SwScannerEventListener();
+
+ // XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& rEventObject );
+
+ void ParentDestroyed() { m_pParent = NULL; }
+};
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+class SwView_Impl
+{
+ SwView* pView;
+ ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionSupplier > *pxXTextView; // UNO object
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > xScanEvtLstnr;
+ SwScannerEventListener* pScanEvtLstnr;
+ ShellModes eShellMode;
+
+ public:
+ SwView_Impl(SwView* pShell);
+ ~SwView_Impl();
+
+ void SetShellMode(ShellModes eSet);
+
+ ::com::sun::star::view::XSelectionSupplier* GetUNOObject();
+ SwXTextView* GetUNOObject_Impl();
+
+ ShellModes GetShellMode() {return eShellMode;}
+
+ void ExcuteScan(USHORT nSlot);
+ SwScannerEventListener& GetScannerEventListener();
+};
+#endif
+
diff --git a/sw/source/ui/inc/unotools.hxx b/sw/source/ui/inc/unotools.hxx
new file mode 100644
index 000000000000..fad07a577ec7
--- /dev/null
+++ b/sw/source/ui/inc/unotools.hxx
@@ -0,0 +1,218 @@
+/*************************************************************************
+ *
+ * $RCSfile: unotools.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOTOOLS_HXX
+#define _UNOTOOLS_HXX
+
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _SV_EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _ACTCTRL_HXX //autogen
+#include <actctrl.hxx>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XCONTROLLER_HPP_
+#include <com/sun/star/frame/XController.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTCURSOR_HPP_
+#include <com/sun/star/text/XTextCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCONTROL_HPP_
+#include <com/sun/star/awt/XControl.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMED_HPP_
+#include <com/sun/star/container/XNamed.hpp>
+#endif
+
+#ifndef _SV_RESARY_HXX
+#include <vcl/resary.hxx>
+#endif
+
+/* -----------------09.06.99 14:36-------------------
+ *
+ * --------------------------------------------------*/
+class SwRenameXNamedDlg : public ModalDialog
+{
+ FixedText aNewNameFT;
+ NoSpaceEdit aNewNameED;
+ GroupBox aNameGB;
+ OKButton aOk;
+ CancelButton aCancel;
+ HelpButton aHelp;
+
+ String sRemoveWarning;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNamed > & xNamed;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > & xNameAccess;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > xSecondAccess;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > xThirdAccess;
+
+ DECL_LINK(OkHdl, OKButton*);
+ DECL_LINK(ModifyHdl, NoSpaceEdit*);
+
+public:
+ SwRenameXNamedDlg(Window* pParent, ::com::sun::star::uno::Reference< ::com::sun::star::container::XNamed > & xNamed, ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > & xNameAccess);
+
+ void SetForbiddenChars(const String& rSet){aNewNameED.SetForbiddenChars(rSet);}
+
+ void SetAlternativeAccess( ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > & xSecond, ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > & xThird)
+ {
+ xSecondAccess = xSecond;
+ xThirdAccess = xThird;
+ }
+
+};
+/* -----------------------------15.12.99 09:55--------------------------------
+
+ ---------------------------------------------------------------------------*/
+class SwOneExampleFrame;
+class SwFrmCtrlWindow : public Window
+{
+ SwOneExampleFrame* pExampleFrame;
+public:
+ SwFrmCtrlWindow(Window* pParent, WinBits nBits, SwOneExampleFrame* pFrame);
+
+ virtual void Command( const CommandEvent& rCEvt );
+};
+/* -----------------------------15.12.99 12:56--------------------------------
+
+ ---------------------------------------------------------------------------*/
+class MenuResource : public Resource
+{
+ ResStringArray aMenuArray;
+
+public:
+ MenuResource(const ResId& rResId);
+
+ ResStringArray& GetMenuArray() {return aMenuArray;}
+};
+/* -----------------27.07.99 15:20-------------------
+
+ --------------------------------------------------*/
+#define EX_SHOW_ONLINE_LAYOUT 0x001
+
+//online layout and hard zoom value
+#define EX_SHOW_BUSINESS_CARDS 0x003
+
+class SwView;
+class SwOneExampleFrame
+{
+ SwFrmCtrlWindow aTopWindow;
+ Window& rWindow;
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl > _xControl;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > _xModel;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController > _xController;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > _xCursor;
+
+ Timer aLoadedTimer;
+ Link aInitializedLink;
+
+ MenuResource aMenuRes;
+
+ SwView* pModuleView;
+
+ sal_uInt32 nStyleFlags;
+
+ sal_Bool bIsInitialized;
+ sal_Bool bServiceAvailable;
+
+ static sal_Bool bShowServiceNotAvailableMessage;
+
+ DECL_LINK( TimeoutHdl, Timer* );
+ DECL_LINK( PopupHdl, Menu* );
+
+public:
+ SwOneExampleFrame(Window& rWin,
+ sal_uInt32 nStyleFlags = EX_SHOW_ONLINE_LAYOUT,
+ const Link* pInitalizedLink = 0,
+ String* pURL = 0);
+ ~SwOneExampleFrame();
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl > & GetControl() {return _xControl;}
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & GetModel() {return _xModel;}
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController > & GetController() {return _xController;}
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > & GetTextCursor() {return _xCursor;}
+
+ void ExecUndo();
+
+ sal_Bool IsInitialized() const {return bIsInitialized;}
+ sal_Bool IsServiceAvailable() const {return bServiceAvailable;}
+
+ void CreatePopup(const Point& rPt);
+
+ static void CreateErrorMessage(Window* pParent);
+};
+#endif
+
diff --git a/sw/source/ui/inc/unotxvw.hxx b/sw/source/ui/inc/unotxvw.hxx
new file mode 100644
index 000000000000..b792953ddf5a
--- /dev/null
+++ b/sw/source/ui/inc/unotxvw.hxx
@@ -0,0 +1,262 @@
+/*************************************************************************
+ *
+ * $RCSfile: unotxvw.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _UNOTXVW_HXX
+#define _UNOTXVW_HXX
+
+#ifndef _SFX_SFXBASECONTROLLER_HXX_
+#include <sfx2/sfxbasecontroller.hxx>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTVIEWCURSOR_HPP_
+#include <com/sun/star/text/XTextViewCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTVIEWCURSORSUPPLIER_HPP_
+#include <com/sun/star/text/XTextViewCursorSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XCONTROLACCESS_HPP_
+#include <com/sun/star/view/XControlAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XSCREENCURSOR_HPP_
+#include <com/sun/star/view/XScreenCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XVIEWSETTINGSSUPPLIER_HPP_
+#include <com/sun/star/view/XViewSettingsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XSELECTIONSUPPLIER_HPP_
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XLINECURSOR_HPP_
+#include <com/sun/star/view/XLineCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XVIEWCURSOR_HPP_
+#include <com/sun/star/view/XViewCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XPAGECURSOR_HPP_
+#include <com/sun/star/text/XPageCursor.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_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE8_HXX_
+#include <cppuhelper/implbase8.hxx> // helper for implementations
+#endif
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+
+
+class SwView;
+typedef ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener > * XSelectionChangeListenerPtr;
+SV_DECL_PTRARR_DEL( SelectionChangeListenerArr, XSelectionChangeListenerPtr, 4, 4 );
+
+/******************************************************************************
+ *
+ ******************************************************************************/
+class SwXTextView :
+ public ::com::sun::star::view::XSelectionSupplier,
+ public ::com::sun::star::lang::XServiceInfo,
+ public ::com::sun::star::view::XControlAccess,
+ public ::com::sun::star::text::XTextViewCursorSupplier,
+ public ::com::sun::star::view::XViewSettingsSupplier,
+ public SfxBaseController
+{
+ SelectionChangeListenerArr aSelChangedListeners;
+
+ SwView* pView;
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > * pxViewSettings;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextViewCursor > * pxTextViewCursor;
+
+public:
+ SwXTextView(SwView* pSwView);
+ virtual ~SwXTextView();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire( ) throw();
+ virtual void SAL_CALL release( ) throw();
+
+ 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);
+
+ //XSelectionSupplier
+ virtual ::com::sun::star::uno::Any SAL_CALL getSelection(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL select(const ::com::sun::star::uno::Any& aInterface) throw( ::com::sun::star::lang::IllegalArgumentException, ::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 );
+
+ //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 > & Model) throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException );
+
+ //XTextViewCursorSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextViewCursor > SAL_CALL getViewCursor(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XViewSettings
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > SAL_CALL getViewSettings(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ void NotifySelChanged();
+
+ SwView* GetView() {return pView;}
+ void Invalidate(){pView = 0;}
+};
+
+/* -----------------17.09.98 12:52-------------------
+ *
+ * --------------------------------------------------*/
+class SwXTextViewCursor : public cppu::WeakImplHelper8
+<
+::com::sun::star::text::XTextViewCursor,
+::com::sun::star::lang::XServiceInfo,
+::com::sun::star::text::XPageCursor,
+::com::sun::star::view::XScreenCursor,
+::com::sun::star::view::XViewCursor,
+::com::sun::star::view::XLineCursor,
+::com::sun::star::beans::XPropertySet,
+::com::sun::star::beans::XPropertyState
+>
+{
+ SwView* pView;
+ SfxItemPropertySet aPropSet;
+public:
+ SwXTextViewCursor(SwView* pVw);
+ virtual ~SwXTextViewCursor();
+
+ //XTextViewCursor
+ virtual sal_Bool SAL_CALL isVisible(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setVisible(sal_Bool bVisible) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::awt::Point SAL_CALL getPosition(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XTextCursor - neu
+ virtual void SAL_CALL collapseToStart( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL collapseToEnd( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL isCollapsed( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL goLeft( sal_Int16 nCount, BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual BOOL SAL_CALL goRight( sal_Int16 nCount, BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL gotoStart( BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL gotoEnd( BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL gotoRange( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& xRange, BOOL bExpand ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XPageCursor
+ virtual sal_Bool SAL_CALL jumpToFirstPage(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL jumpToLastPage(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL jumpToPage(sal_Int16 nPage) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL jumpToNextPage(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL jumpToPreviousPage(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL jumpToEndOfPage(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL jumpToStartOfPage(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Int16 SAL_CALL getPage(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XTextRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL getText(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getStart(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getEnd(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual rtl::OUString SAL_CALL getString(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setString(const rtl::OUString& aString) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XScreenCursor
+ virtual sal_Bool SAL_CALL screenDown(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL screenUp(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XViewCursor
+ virtual sal_Bool SAL_CALL goDown(sal_Int16 nCount, sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL goUp(sal_Int16 nCount, sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException );
+// virtual sal_Bool goLeft(sal_Int16 nCount, sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException );
+// virtual sal_Bool goRight(sal_Int16 nCount, sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException );
+
+ //XLineCursor
+ virtual sal_Bool SAL_CALL isAtStartOfLine(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL isAtEndOfLine(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL gotoEndOfLine(sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL gotoStartOfLine(sal_Bool bExpand) 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(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual 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 );
+
+ void Invalidate(){pView = 0;}
+};
+#endif
+
+
diff --git a/sw/source/ui/inc/usrpref.hxx b/sw/source/ui/inc/usrpref.hxx
new file mode 100644
index 000000000000..d07bf0995459
--- /dev/null
+++ b/sw/source/ui/inc/usrpref.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: usrpref.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _USRPREF_HXX
+#define _USRPREF_HXX
+
+
+#ifndef _SFXCFGITEM_HXX //autogen
+#include <sfx2/cfgitem.hxx>
+#endif
+#include "viewopt.hxx"
+
+class SwMasterUsrPref: public SwViewOption, public SfxConfigItem
+{
+protected:
+ virtual int Load(SvStream&);
+ virtual BOOL Store(SvStream&);
+ virtual void UseDefault();
+
+public:
+ SwMasterUsrPref(USHORT nType);
+
+ virtual String GetName() const;
+
+ void SetUsrPref(const SwViewOption &rCopy);
+};
+
+#endif
+
diff --git a/sw/source/ui/inc/utlui.hrc b/sw/source/ui/inc/utlui.hrc
new file mode 100644
index 000000000000..0b1d6ceb02fc
--- /dev/null
+++ b/sw/source/ui/inc/utlui.hrc
@@ -0,0 +1,198 @@
+/*************************************************************************
+ *
+ * $RCSfile: utlui.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _UTLUI_HRC
+#define _UTLUI_HRC
+
+#include "rcid.hrc"
+
+
+#define RID_SW_SHELLRES (RC_UTLUI_BEGIN + 1)
+#define RID_STR_SYSTEM (RC_UTLUI_BEGIN + 2)
+
+// ------------------------------------------------------------------------
+
+// Strings in NumberFormatter-Listbox
+#define STR_DEFINE_NUMBERFORMAT (RC_UTLUI_BEGIN + 4)
+
+// Namene der Inhaltstypen (RC_UTLUI_BEGIN + 7)
+#define STR_CONTENT_TYPE_FIRST (RC_UTLUI_BEGIN + 8)
+#define STR_CONTENT_TYPE_OUTLINE STR_CONTENT_TYPE_FIRST
+#define STR_CONTENT_TYPE_TABLE (RC_UTLUI_BEGIN + 9)
+#define STR_CONTENT_TYPE_FRAME (RC_UTLUI_BEGIN + 10)
+#define STR_CONTENT_TYPE_GRAPHIC (RC_UTLUI_BEGIN + 11)
+#define STR_CONTENT_TYPE_OLE (RC_UTLUI_BEGIN + 12)
+#define STR_CONTENT_TYPE_BOOKMARK (RC_UTLUI_BEGIN + 13)
+#define STR_CONTENT_TYPE_REGION (RC_UTLUI_BEGIN + 14)
+#define STR_CONTENT_TYPE_URLFIELD (RC_UTLUI_BEGIN + 15)
+#define STR_CONTENT_TYPE_REFERENCE (RC_UTLUI_BEGIN + 16)
+#define STR_CONTENT_TYPE_INDEX (RC_UTLUI_BEGIN + 17)
+#define STR_CONTENT_TYPE_POSTIT (RC_UTLUI_BEGIN + 18)
+#define STR_CONTENT_TYPE_DRAWOBJECT (RC_UTLUI_BEGIN + 19)
+#define STR_CONTENT_END (RC_UTLUI_BEGIN + 19)
+
+#define STR_CONTENT_TYPE_SINGLE_FIRST (STR_CONTENT_END + 1)
+#define STR_CONTENT_TYPE_SINGLE_OUTLINE (STR_CONTENT_TYPE_SINGLE_FIRST + 0)
+#define STR_CONTENT_TYPE_SINGLE_TABLE (STR_CONTENT_TYPE_SINGLE_FIRST + 1)
+#define STR_CONTENT_TYPE_SINGLE_FRAME (STR_CONTENT_TYPE_SINGLE_FIRST + 2)
+#define STR_CONTENT_TYPE_SINGLE_GRAPHIC (STR_CONTENT_TYPE_SINGLE_FIRST + 3)
+#define STR_CONTENT_TYPE_SINGLE_OLE (STR_CONTENT_TYPE_SINGLE_FIRST + 4)
+#define STR_CONTENT_TYPE_SINGLE_BOOKMARK (STR_CONTENT_TYPE_SINGLE_FIRST + 5)
+#define STR_CONTENT_TYPE_SINGLE_REGION (STR_CONTENT_TYPE_SINGLE_FIRST + 6)
+#define STR_CONTENT_TYPE_SINGLE_URLFIELD (STR_CONTENT_TYPE_SINGLE_FIRST + 7)
+#define STR_CONTENT_TYPE_SINGLE_REFERENCE (STR_CONTENT_TYPE_SINGLE_FIRST + 8)
+#define STR_CONTENT_TYPE_SINGLE_INDEX (STR_CONTENT_TYPE_SINGLE_FIRST + 9)
+#define STR_CONTENT_TYPE_SINGLE_POSTIT (STR_CONTENT_TYPE_SINGLE_FIRST + 10)
+#define STR_CONTENT_TYPE_SINGLE_DRAWOBJECT (STR_CONTENT_TYPE_SINGLE_FIRST + 11)
+#define STR_CONTENT_SINGLE_END STR_CONTENT_TYPE_SINGLE_DRAWOBJECT
+
+#define FLD_DOCINFO_BEGIN STR_CONTENT_SINGLE_END
+#define FLD_DOCINFO_TITEL FLD_DOCINFO_BEGIN
+#define FLD_DOCINFO_THEMA (FLD_DOCINFO_BEGIN + 1)
+#define FLD_DOCINFO_KEYS (FLD_DOCINFO_BEGIN + 2)
+#define FLD_DOCINFO_COMMENT (FLD_DOCINFO_BEGIN + 3)
+#define FLD_DOCINFO_INFO1 (FLD_DOCINFO_BEGIN + 4)
+#define FLD_DOCINFO_INFO2 (FLD_DOCINFO_BEGIN + 5)
+#define FLD_DOCINFO_INFO3 (FLD_DOCINFO_BEGIN + 6)
+#define FLD_DOCINFO_INFO4 (FLD_DOCINFO_BEGIN + 7)
+#define FLD_DOCINFO_CREATE (FLD_DOCINFO_BEGIN + 8)
+#define FLD_DOCINFO_CHANGE (FLD_DOCINFO_BEGIN + 9)
+#define FLD_DOCINFO_PRINT (FLD_DOCINFO_BEGIN + 10)
+#define FLD_DOCINFO_DOCNO (FLD_DOCINFO_BEGIN + 11)
+#define FLD_DOCINFO_EDIT (FLD_DOCINFO_BEGIN + 12)
+#define FLD_DOCINFO_END (FLD_DOCINFO_BEGIN + 13)
+
+#define STR_SERVICE_UNAVAILABLE (FLD_DOCINFO_END + 1)
+
+#define STR_AUTH_TYPE_START (FLD_DOCINFO_END + 2)
+#define STR_AUTH_TYPE_ARTICLE (STR_AUTH_TYPE_START + 0)
+#define STR_AUTH_TYPE_BOOK (STR_AUTH_TYPE_START + 1)
+#define STR_AUTH_TYPE_BOOKLET (STR_AUTH_TYPE_START + 2)
+#define STR_AUTH_TYPE_CONFERENCE (STR_AUTH_TYPE_START + 3)
+#define STR_AUTH_TYPE_INBOOK (STR_AUTH_TYPE_START + 4)
+#define STR_AUTH_TYPE_INCOLLECTION (STR_AUTH_TYPE_START + 5)
+#define STR_AUTH_TYPE_INPROCEEDINGS (STR_AUTH_TYPE_START + 6)
+#define STR_AUTH_TYPE_JOURNAL (STR_AUTH_TYPE_START + 7)
+#define STR_AUTH_TYPE_MANUAL (STR_AUTH_TYPE_START + 8)
+#define STR_AUTH_TYPE_MASTERSTHESIS (STR_AUTH_TYPE_START + 9)
+#define STR_AUTH_TYPE_MISC (STR_AUTH_TYPE_START + 10)
+#define STR_AUTH_TYPE_PHDTHESIS (STR_AUTH_TYPE_START + 11)
+#define STR_AUTH_TYPE_PROCEEDINGS (STR_AUTH_TYPE_START + 12)
+#define STR_AUTH_TYPE_TECHREPORT (STR_AUTH_TYPE_START + 13)
+#define STR_AUTH_TYPE_UNPUBLISHED (STR_AUTH_TYPE_START + 14)
+#define STR_AUTH_TYPE_EMAIL (STR_AUTH_TYPE_START + 15)
+#define STR_AUTH_TYPE_WWW (STR_AUTH_TYPE_START + 16)
+#define STR_AUTH_TYPE_CUSTOM1 (STR_AUTH_TYPE_START + 17)
+#define STR_AUTH_TYPE_CUSTOM2 (STR_AUTH_TYPE_START + 18)
+#define STR_AUTH_TYPE_CUSTOM3 (STR_AUTH_TYPE_START + 19)
+#define STR_AUTH_TYPE_CUSTOM4 (STR_AUTH_TYPE_START + 20)
+#define STR_AUTH_TYPE_CUSTOM5 (STR_AUTH_TYPE_START + 21)
+#define STR_AUTH_TYPE_END (STR_AUTH_TYPE_CUSTOM5)
+
+#define STR_AUTH_FIELD_START (STR_AUTH_TYPE_END + 1)
+#define STR_AUTH_FIELD_IDENTIFIER (STR_AUTH_FIELD_START + 0)
+#define STR_AUTH_FIELD_AUTHORITY_TYPE (STR_AUTH_FIELD_START + 1)
+#define STR_AUTH_FIELD_ADDRESS (STR_AUTH_FIELD_START + 2)
+#define STR_AUTH_FIELD_ANNOTE (STR_AUTH_FIELD_START + 3)
+#define STR_AUTH_FIELD_AUTHOR (STR_AUTH_FIELD_START + 4)
+#define STR_AUTH_FIELD_BOOKTITLE (STR_AUTH_FIELD_START + 5)
+#define STR_AUTH_FIELD_CHAPTER (STR_AUTH_FIELD_START + 6)
+#define STR_AUTH_FIELD_EDITION (STR_AUTH_FIELD_START + 7)
+#define STR_AUTH_FIELD_EDITOR (STR_AUTH_FIELD_START + 8)
+#define STR_AUTH_FIELD_HOWPUBLISHED (STR_AUTH_FIELD_START + 9)
+#define STR_AUTH_FIELD_INSTITUTION (STR_AUTH_FIELD_START + 10)
+#define STR_AUTH_FIELD_JOURNAL (STR_AUTH_FIELD_START + 11)
+#define STR_AUTH_FIELD_MONTH (STR_AUTH_FIELD_START + 12)
+#define STR_AUTH_FIELD_NOTE (STR_AUTH_FIELD_START + 13)
+#define STR_AUTH_FIELD_NUMBER (STR_AUTH_FIELD_START + 14)
+#define STR_AUTH_FIELD_ORGANIZATIONS (STR_AUTH_FIELD_START + 15)
+#define STR_AUTH_FIELD_PAGES (STR_AUTH_FIELD_START + 16)
+#define STR_AUTH_FIELD_PUBLISHER (STR_AUTH_FIELD_START + 17)
+#define STR_AUTH_FIELD_SCHOOL (STR_AUTH_FIELD_START + 18)
+#define STR_AUTH_FIELD_SERIES (STR_AUTH_FIELD_START + 19)
+#define STR_AUTH_FIELD_TITLE (STR_AUTH_FIELD_START + 20)
+#define STR_AUTH_FIELD_TYPE (STR_AUTH_FIELD_START + 21)
+#define STR_AUTH_FIELD_VOLUME (STR_AUTH_FIELD_START + 22)
+#define STR_AUTH_FIELD_YEAR (STR_AUTH_FIELD_START + 23)
+#define STR_AUTH_FIELD_URL (STR_AUTH_FIELD_START + 24)
+#define STR_AUTH_FIELD_CUSTOM1 (STR_AUTH_FIELD_START + 25)
+#define STR_AUTH_FIELD_CUSTOM2 (STR_AUTH_FIELD_START + 26)
+#define STR_AUTH_FIELD_CUSTOM3 (STR_AUTH_FIELD_START + 27)
+#define STR_AUTH_FIELD_CUSTOM4 (STR_AUTH_FIELD_START + 28)
+#define STR_AUTH_FIELD_CUSTOM5 (STR_AUTH_FIELD_START + 29)
+#define STR_AUTH_FIELD_ISBN (STR_AUTH_FIELD_START + 30)
+#define STR_AUTH_FIELD_END (STR_AUTH_FIELD_ISBN)
+
+#define RES_FRMEX_MENU (STR_AUTH_FIELD_END + 1)
+
+#define DLG_NAVIGATION_PI (RC_UTLUI_BEGIN + 1)
+#define DLG_ADDR_PI (RC_UTLUI_BEGIN + 2)
+#define DLG_GLOSSARY_DECIDE_DLG (RC_UTLUI_BEGIN + 3)
+
+#define IMG_NAVI_ENTRYBMP (RC_UTLUI_BEGIN + 4)
+
+#define UTLUI_ACT_END RES_FRMEX_MENU
+
+#if UTLUI_ACT_END > RC_UTLUI_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+#endif
diff --git a/sw/source/ui/inc/view.hxx b/sw/source/ui/inc/view.hxx
new file mode 100644
index 000000000000..38694520c2f3
--- /dev/null
+++ b/sw/source/ui/inc/view.hxx
@@ -0,0 +1,655 @@
+/*************************************************************************
+ *
+ * $RCSfile: view.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWVIEW_HXX
+#define _SWVIEW_HXX
+
+#ifndef _TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#ifndef _VIEWFAC_HXX //autogen
+#include <sfx2/viewfac.hxx>
+#endif
+#ifndef _SFXVIEWSH_HXX //autogen
+#include <sfx2/viewsh.hxx>
+#endif
+#ifndef _SVX_SVXENUM_HXX //autogen
+#include <svx/svxenum.hxx>
+#endif
+#ifndef _SVX_ZOOMITEM_HXX //autogen
+#include <svx/zoomitem.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _SHELLID_HXX
+#include <shellid.hxx>
+#endif
+
+class SwBaseShell;
+class Button;
+class ImageButton;
+class SwTxtFmtColl;
+class SwPageDesc;
+class SwFrmFmt;
+class SwCharFmt;
+class SwNumRule;
+class SwViewOption;
+class SwGlossaryHdl;
+class SwDrawBase;
+class SvxRuler;
+class SvxLRSpaceItem;
+class SwDocShell;
+class SwScrollbar;
+class PrintDialog;
+class SvxVCBrowser;
+class SvBorder;
+class Ruler;
+class OutlinerView;
+class SvxSearchItem;
+class SearchAttrItemList;
+class SvxSearchDialog;
+class SdrView;
+class Dialog;
+class SdrObject;
+class SdrPageView;
+class SwNaviImageButton;
+class SwHlpImageButton;
+class Outliner;
+class SwView;
+class SwEditWin;
+class SwWrtShell;
+class SwView_Impl;
+namespace com{ namespace sun { namespace star {namespace view{ class XSelectionSupplier;}}}}
+class XSelectionObject;
+struct SwSearchOptions;
+class FmFormShell;
+class CommandEvent;
+class InsCaptionOpt;
+class SvGlobalName;
+
+const long nLeftOfst = -370;
+const long nScrollX = 30;
+const long nScrollY = 30;
+
+#define MINZOOM 20
+#define MAXZOOM 600
+
+#define MAX_MARKS 5
+
+
+enum ShellModes
+{
+ SEL_TEXT,
+ SEL_FRAME,
+ SEL_GRAPHIC,
+ SEL_OBJECT,
+ SEL_DRAW,
+ SEL_DRAW_CTRL,
+ SEL_DRAW_FORM,
+ SEL_DRAWTEXT,
+ SEL_BEZIER,
+ SEL_LIST_TEXT,
+ SEL_TABLE_TEXT,
+ SEL_TABLE_LIST_TEXT
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Anwendung einer Vorlage
+ --------------------------------------------------------------------*/
+
+struct SwApplyTemplate
+{
+ union
+ {
+ SwTxtFmtColl* pTxtColl;
+ SwPageDesc* pPageDesc;
+ SwFrmFmt* pFrmFmt;
+ SwCharFmt* pCharFmt;
+ SwNumRule* pNumRule;
+ } aColl;
+
+ int eType;
+ USHORT nColor;
+ BOOL bUndo;
+
+ SwApplyTemplate() :
+ eType(0),
+ nColor(0),
+ bUndo(FALSE)
+ {
+ aColl.pTxtColl = 0;
+ }
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Sicht auf ein Dokument
+ --------------------------------------------------------------------*/
+
+class SwView: public SfxViewShell
+{
+ //Messehack (MA,MBA)
+ friend void lcl_SelectShellForDrop( SwView &rView );
+
+ friend class TestTemplateItem;
+ friend class SwSpellWrapper;
+ friend class SwHyphWrapper;
+ friend class SwView_Impl;
+
+ //suchen & ersetzen
+ static SvxSearchDialog *pSrchDlg;
+ static SvxSearchItem *pSrchItem;
+
+ static USHORT nInsertCtrlState;
+ static USHORT nWebInsertCtrlState;
+ static USHORT nInsertObjectCtrlState;
+ static USHORT nInsertFieldCtrlState;
+ static USHORT nMoveType; // fuer Buttons unter dem Scrollbar (viewmdi)
+ static BYTE nActMark; // aktuelle Sprungmarke fuer unbenannte Merker
+
+ static BOOL bExtra;
+ static BOOL bFound;
+ static BOOL bJustOpened;
+
+ static SearchAttrItemList* pSrchList;
+ static SearchAttrItemList* pReplList;
+
+
+ Timer aTimer; //Fuer verzoegerte ChgLnks waehrend
+ //einer Aktion
+ String aPageStr; //Statusanzeige, aktuelle Seite
+ String sSwViewData,
+ //and the new cursor position if the user double click in the PagePreView
+ sNewCrsrPos;
+
+ Point aTabColFromDocPos; //Verschieben von Tabellenspalten aus
+ //aus dem Dokument heraus.
+ Size aDocSz; // aktuelle Dokumentgroesse
+ Rectangle aVisArea; // sichtbarer Bereich
+
+ SwEditWin *pEditWin;
+ SwWrtShell *pWrtShell;
+
+ SfxShell *pShell; //aktuelle SubShell auf dem Dispatcher
+ FmFormShell *pFormShell; // DB-FormShell
+
+ SwView_Impl *pViewImpl; // Impl-Daten fuer UNO + Basic
+
+
+ SwScrollbar *pHScrollbar, // MDI Bedienelemente
+ *pVScrollbar;
+
+ Window *pScrollFill; // Dummy-Window zum Fllen der rechten
+ // unteren Ecke, wenn beide Scrollbars
+ // aktiv sind
+
+ SvxRuler *pHLineal,
+ *pVLineal;
+ ImageButton *pTogglePageBtn;
+
+ SwHlpImageButton *pPageUpBtn,
+ *pPageDownBtn;
+
+ SwNaviImageButton *pNaviBtn;
+ SwGlossaryHdl *pGlosHdl; // Henkel Textbausteine
+ SwDrawBase *pDrawActual;
+
+ const SwFrmFmt* pLastTableFormat;
+
+ int nSelectionType;
+
+ // Aktueller Drawmode
+ USHORT nDrawSfxId;
+ USHORT nFormSfxId;
+
+ BOOL bCenterCrsr : 1,
+ bTopCrsr : 1,
+ bAllwaysShowSel : 1,
+ bTabColFromDoc : 1,
+ bSetTabColFromDoc : 1 ,
+ bAttrChgNotified : 1,
+ bAttrChgNotifiedWithRegistrations : 1,
+ bVerbsActive : 1,
+ bDrawRotate : 1,
+ bDrawSelMode : 1,
+ bShowAtResize : 1,
+ bInOuterResizePixel : 1,
+ bIsApi : 1;
+
+ // Methoden fuers Suchen
+ // Suchkontext setzen
+ BOOL SearchAndWrap(BOOL bApi = FALSE);
+ BOOL SearchAll(USHORT* pFound = 0);
+ ULONG FUNC_Search( const SwSearchOptions& rOptions );
+ void Replace();
+
+ inline BOOL IsDocumentBorder();
+
+ BOOL IsTextTool() const;
+
+ // Bedienelemente verwalten anlegen
+ void CreateBtns();
+ DECL_LINK( BtnPage, Button * );
+
+ DECL_LINK( TimeoutHdl, Timer * );
+
+ inline long GetXScroll() const;
+ inline long GetYScroll() const;
+ Point AlignToPixel(const Point& rPt) const;
+ void CalcPt( Point* pPt,const Rectangle& rRect,
+ USHORT nRangeX = USHRT_MAX,
+ USHORT nRangeY = USHRT_MAX);
+
+ BOOL GetPageScrollUpOffset(SwTwips& rOff) const;
+ BOOL GetPageScrollDownOffset(SwTwips& rOff) const;
+
+ // Scrollbar Movements
+ long PageUp();
+ long PageDown();
+ long PageUpCrsr(BOOL bSelect);
+ long PageDownCrsr(BOOL bSelect);
+ long PhyPageUp();
+ long PhyPageDown();
+
+ int _CreateScrollbar( int bHori );
+ int _KillScrollbar( int bHori );
+ DECL_LINK( ScrollHdl, SwScrollbar * );
+ DECL_LINK( EndScrollHdl, SwScrollbar * );
+ BOOL UpdateScrollbars();
+ void CalcVisArea( const Size &rPixelSz );
+
+ int _CreateVLineal();
+ int _KillVLineal();
+ int _CreateTab();
+ int _KillTab();
+ void CreatePageButtons(BOOL bShow);
+
+ // Linguistik-Funktionen
+ void SpellDocument( const String* pStr, BOOL bAllRight = FALSE );
+ void HyphenateDocument();
+ BOOL IsDrawTextHyphenate();
+ void HyphenateDrawText();
+ void StartThesaurus();
+
+ void SpellStart( SvxSpellArea eSpell, BOOL bStartDone,
+ BOOL bEndDone );
+ void HyphStart( SvxSpellArea eSpell );
+ void SpellEnd();
+ void _SpellDocument( const String* pStr, BOOL bAllRight );
+ BOOL CheckSpecialCntnt();
+ void SpellKontext(BOOL bOn = TRUE)
+ { bCenterCrsr = bOn; bAllwaysShowSel = bOn; }
+
+ // Methoden fuers Printing
+ virtual SfxPrinter* GetPrinter( BOOL bCreate = FALSE );
+ virtual PrintDialog* CreatePrintDialog( Window* pParent );
+ SfxTabPage* CreatePrintOptionsPage( Window* pParent,
+ const SfxItemSet& rSet);
+ // fuer Readonly-Umschaltung
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ void _CheckReadonlyState();
+ void _CheckReadonlySelection();
+
+ // Methode fuer PageDesc drehen
+ void SwapPageMargin(const SwPageDesc&, SvxLRSpaceItem& rLR);
+
+ void _SetZoom( const Size &rEditSz,
+ SvxZoomType eZoomType,
+ short nFactor = 100,
+ BOOL bViewOnly = FALSE);
+ void CalcAndSetBorderPixel( SvBorder &rToFill, FASTBOOL bInner );
+
+ void ShowAtResize();
+
+ virtual void Move();
+
+
+protected:
+
+ SwView_Impl* GetViewImpl() {return pViewImpl;}
+
+ void ImpSetVerb( int nSelType );
+
+ int GetSelectionType() const { return nSelectionType; }
+ void SetSelectionType(int nSet) { nSelectionType = nSet;}
+
+ // fuer die SwWebView
+ void SetShell( SfxShell* pS ) { pShell = pS; }
+ void SetFormShell( FmFormShell* pSh ) { pFormShell = pSh; }
+
+ virtual void SelectShell();
+
+ virtual void Activate(BOOL);
+ virtual void Deactivate(BOOL);
+ virtual void InnerResizePixel( const Point &rOfs, const Size &rSize );
+ virtual void OuterResizePixel( const Point &rOfs, const Size &rSize );
+ virtual Size GetOptimalSizePixel() const;
+
+ void SetImageButtonColor(Color& rColor);
+
+ const SwFrmFmt* GetLastTblFrmFmt() const {return pLastTableFormat;}
+ void SetLastTblFrmFmt(const SwFrmFmt* pSet) {pLastTableFormat = pSet;}
+
+public:
+
+ SFX_DECL_VIEWFACTORY(SwView);
+ SFX_DECL_INTERFACE(SW_VIEWSHELL);
+ TYPEINFO();
+
+ SfxDispatcher &GetDispatcher();
+
+ virtual SdrView* GetDrawView() const;
+ virtual void UIDeactivate( SvInPlaceObject *pIPObj );
+ virtual BOOL HasUIFeature( ULONG nFeature );
+ virtual void ShowCursor( FASTBOOL bOn = TRUE );
+ virtual ErrCode DoVerb( long nVerb );
+
+ virtual USHORT SetPrinter( SfxPrinter* pNew,
+ USHORT nDiff = SFX_PRINTER_ALL);
+ virtual ErrCode DoPrint( SfxPrinter *pPrinter, PrintDialog *pPrintDialog,
+ BOOL bSilent );
+ ShellModes GetShellMode();
+
+ com::sun::star::view::XSelectionSupplier* GetUNOObject();
+
+ String GetSelectionTextParam( BOOL bCompleteWords,
+ BOOL bEraseTrail,
+ BOOL bExtendedDelimiter = FALSE );
+ virtual BOOL HasSelection( BOOL bText ) const;
+ virtual String GetSelectionText( BOOL bCompleteWords );
+ virtual USHORT PrepareClose( BOOL bUI = TRUE, BOOL bForBrowsing = FALSE );
+ virtual void MarginChanged();
+
+ // Shell sofort wechseln -> fuer GetSelectionObject
+ void StopShellTimer();
+ // hier wird bei Bedarf SelectShell gerufen (getSelection)
+ void PrepareGetSelection();
+
+ inline SwWrtShell& GetWrtShell () const { return *pWrtShell; }
+ inline SwWrtShell* GetWrtShellPtr() const { return pWrtShell; }
+
+ inline SwEditWin &GetEditWin() { return *pEditWin; }
+ inline const SwEditWin &GetEditWin () const { return *pEditWin; }
+
+#if defined WIN || defined WNT || defined UNX
+ void ScannerEventHdl( const ::com::sun::star::lang::EventObject& rEventObject );
+#endif
+
+ //Handler fuer Textbausteine an die Textshell rausreichen, gfs. anlegen
+ SwGlossaryHdl* GetGlosHdl();
+
+ inline const Rectangle& GetVisArea() const { return aVisArea; }
+
+ BOOL IsScroll(const Rectangle& rRect) const;
+ void Scroll( const Rectangle& rRect,
+ USHORT nRangeX = USHRT_MAX,
+ USHORT nRangeY = USHRT_MAX);
+
+ long SetVScrollMax(long lMax);
+ long SetHScrollMax(long lMax);
+
+ DECL_LINK( SpellError, void * );
+ BOOL ExecSpellPopup( const Point& rPt );
+ BOOL ExecDrwTxtSpellPopup(const Point& rPt);
+
+ void SetTabColFromDocPos( const Point &rPt ) { aTabColFromDocPos = rPt; }
+ void SetTabColFromDoc( BOOL b ) { bTabColFromDoc = b; }
+ BOOL IsTabColFromDoc() const { return bTabColFromDoc; }
+
+ void DocSzChgd( const Size& rNewSize );
+ const Size& GetDocSz() const { return aDocSz; }
+ virtual void SetVisArea( const Rectangle&, BOOL bUpdateScrollbar = TRUE);
+ void SetVisArea( const Point&, BOOL bUpdateScrollbar = TRUE);
+ void CheckVisArea();
+
+ static Dialog* GetSearchDialog();
+
+ static USHORT GetMoveType();
+ static void SetMoveType(USHORT nSet);
+ void MoveNavigation(BOOL bNext);
+ static void SetActMark(BYTE nSet);
+
+ BOOL HandleWheelCommands( const CommandEvent& );
+
+ // Rahmen einfuegen
+ void InsFrmMode(USHORT nCols);
+
+ void SetZoom( SvxZoomType eZoomType, short nFactor = 100, BOOL bViewOnly = FALSE);
+ virtual void SetZoomFactor( const Fraction &rX, const Fraction & );
+
+ inline int StatHScrollbar() const;
+ inline int CreateHScrollbar();
+ inline int KillHScrollbar();
+
+ inline int CreateVScrollbar();
+ inline int KillVScrollbar();
+ inline int StatVScrollbar() const;
+
+ inline int CreateVLineal();
+ inline int KillVLineal();
+ int StatVLineal() const { return pVLineal != 0; }
+ void ChangeVLinealMetric(FieldUnit eUnit);
+
+ inline int CreateTab();
+ inline int KillTab();
+ int StatTab() const { return ((Window*)pHLineal)->IsVisible(); }
+ SvxRuler *GetHLineal() { return pHLineal; }
+ SvxRuler *GetVLineal() { return pVLineal; }
+ void InvalidateRulerPos();
+ void ChangeTabMetric(FieldUnit eUnit);
+
+ // Handler
+ void Execute(SfxRequest&);
+ void ExecPageMove(SfxRequest&);
+ void ExecStyle(SfxRequest&);
+ void ExecLingu(SfxRequest&);
+ void ExecDataBase(SfxRequest&);
+ void ExecDlg(SfxRequest&);
+ void ExecDlgExt(SfxRequest&);
+ void ExecDBDlg(SfxRequest &);
+ void ExecColl(SfxRequest&);
+ void ExecutePrint(SfxRequest&);
+ void ExecDraw(SfxRequest&);
+ void ExecTabWin(SfxRequest&);
+ void ExecuteStatusLine(SfxRequest&);
+ DECL_LINK( ExecRulerClick, Ruler * );
+ void ExecSearch(SfxRequest&, BOOL bNoMessage = FALSE);
+
+ void StateSearch(SfxItemSet &);
+ void GetState(SfxItemSet&);
+ void StateStatusLine(SfxItemSet&);
+
+
+ // Funktionen fuer Drawing
+ void SetDrawFuncPtr(SwDrawBase* pFuncPtr);
+ inline SwDrawBase* GetDrawFuncPtr(BOOL bBuf = FALSE) const { return pDrawActual; }
+ void GetDrawState(SfxItemSet &rSet);
+ void ExitDraw();
+ inline BOOL IsDrawRotate() { return bDrawRotate; }
+ inline void FlipDrawRotate() { bDrawRotate = !bDrawRotate; }
+ inline BOOL IsDrawSelMode() { return bDrawSelMode; }
+ void SetSelDrawSlot();
+ inline void FlipDrawSelMode() { bDrawSelMode = !bDrawSelMode; }
+ void NoRotate(); // Rotate-Mode abschalten
+ BOOL EnterDrawTextMode(const Point& aDocPos);
+ void LeaveDrawCreate() { nDrawSfxId = nFormSfxId = USHRT_MAX; }
+ BOOL IsDrawMode() { return (nDrawSfxId != USHRT_MAX || nFormSfxId != USHRT_MAX); }
+ BOOL IsFormMode() const;
+ BOOL IsBezierEditMode();
+ BOOL AreOnlyFormsSelected() const;
+ BOOL HasDrwObj(SdrObject *pSdrObj) const;
+ BOOL HasOnlyObj(SdrObject *pSdrObj, UINT32 eObjInventor) const;
+ BOOL BeginTextEdit( SdrObject* pObj, SdrPageView* pPV=NULL,
+ Window* pWin=NULL, BOOL bIsNewObj=FALSE);
+
+ void StateTabWin(SfxItemSet&);
+
+ // Attribute haben sich geaendert
+ DECL_LINK( AttrChangedNotify, SwWrtShell * );
+
+ // Links bearbeiten
+ void EditLinkDlg();
+ void AutoCaption(const USHORT nType, const SvGlobalName *pOleId = 0);
+ void InsertCaption(const InsCaptionOpt *pOpt);
+
+ // Async Aufruf durch Core
+ void UpdatePageNums(USHORT nPhyNum, USHORT nVirtNum, const String& rPgStr);
+
+ String GetPageStr(USHORT nPhyNum, USHORT nVirtNum, const String& rPgStr);
+
+ // Shell rausreichen
+ SfxShell *GetCurShell() { return pShell; }
+ SwDocShell *GetDocShell();
+ inline const SwDocShell *GetDocShell() const;
+ inline FmFormShell *GetFormShell() { return pFormShell; }
+
+ //damit in DToren der SubShells ggf. pShell zurueckgesetzt werden kann
+ void ResetSubShell() { pShell = 0; }
+
+ virtual void WriteUserData(String &, BOOL bBrowse = FALSE );
+ virtual void ReadUserData(const String &, BOOL bBrowse = FALSE );
+
+ void SetCrsrAtTop( BOOL bFlag, BOOL bCenter = FALSE )
+ { bTopCrsr = bFlag, bCenterCrsr = bCenter; }
+ BOOL IsCrsrAtTop() const { return bTopCrsr; }
+ BOOL IsCrsrAtCenter() const { return bCenterCrsr; }
+
+ BOOL JumpToSwMark( const String& rMark );
+
+ long InsertDoc( USHORT nSlotId, const String& rFileName,
+ const String& rFilterName, INT16 nVersion = 0 );
+
+ SwView(SfxViewFrame* pFrame, SfxViewShell*);
+ ~SwView();
+};
+
+// ----------------- inline Methoden ----------------------
+
+inline int SwView::StatHScrollbar() const
+{
+ return 0 != pHScrollbar;
+}
+inline int SwView::CreateHScrollbar()
+{
+ return StatHScrollbar() ? 1 : _CreateScrollbar( TRUE );
+}
+inline int SwView::KillHScrollbar()
+{
+ return StatHScrollbar() ? _KillScrollbar( TRUE ) : 1;
+}
+
+inline int SwView::StatVScrollbar() const
+{
+ return 0 != pVScrollbar;
+}
+inline int SwView::CreateVScrollbar()
+{
+ return StatVScrollbar() ? 1 : _CreateScrollbar( FALSE );
+}
+inline int SwView::KillVScrollbar()
+{
+ return StatVScrollbar() ? _KillScrollbar( FALSE ) : 1;
+}
+
+inline int SwView::CreateVLineal()
+{
+ return StatVLineal() ? 1 : _CreateVLineal();
+}
+inline int SwView::KillVLineal()
+{
+ return StatVLineal() ? _KillVLineal() : 1;
+}
+
+inline int SwView::CreateTab()
+{
+ return StatTab() ? 1 : _CreateTab();
+}
+inline int SwView::KillTab()
+{
+ return StatTab() ? _KillTab() : 1;
+}
+
+inline long SwView::GetXScroll() const
+{
+ return aVisArea.GetWidth() * nScrollX / 100L;
+}
+
+inline long SwView::GetYScroll() const
+{
+ return aVisArea.GetHeight() * nScrollY / 100L;
+}
+
+inline const SwDocShell *SwView::GetDocShell() const
+{
+ return ((SwView*)this)->GetDocShell();
+}
+
+//***********************************************************
+
+SfxTabPage* CreatePrintOptionsPage( Window *pParent,
+ const SfxItemSet &rOptions,
+ BOOL bPreview);
+
+#endif
diff --git a/sw/source/ui/inc/web.hrc b/sw/source/ui/inc/web.hrc
new file mode 100644
index 000000000000..10795ac0899e
--- /dev/null
+++ b/sw/source/ui/inc/web.hrc
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * $RCSfile: web.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _WEB_HRC
+#define _WEB_HRC
+
+#include "rcid.hrc"
+
+#define RC_WEB_ICON (RC_WEB_BEGIN + 1)
+#define RID_WEBTOOLS_TOOLBOX (RC_WEB_BEGIN + 2)
+#define RID_WEBTEXT_TOOLBOX (RC_WEB_BEGIN + 3)
+#define STR_HUMAN_SWWEBDOC_NAME (RC_WEB_BEGIN + 4)
+#define STR_WRITER_WEBDOC_FULLTYPE_40 (RC_WEB_BEGIN + 5)
+#define STR_SHELLNAME_WEBTEXT (RC_WEB_BEGIN + 6)
+#define STR_SHELLNAME_WEBFRAME (RC_WEB_BEGIN + 7)
+#define RID_WEBFRAME_TOOLBOX (RC_WEB_BEGIN + 8)
+#define STR_WRITER_WEBDOC_FULLTYPE (RC_WEB_BEGIN + 9)
+#define RID_WEBGRAPHIC_TOOLBOX (RC_WEB_BEGIN + 10)
+#define RID_WEBOLE_TOOLBOX (RC_WEB_BEGIN + 11)
+
+
+#define MN_WEBFILE (RC_WEB_BEGIN + 30)
+#define MN_WEBEDIT (RC_WEB_BEGIN + 31)
+#define MN_WEBVIEW (RC_WEB_BEGIN + 32)
+#define MN_WEBINS (RC_WEB_BEGIN + 33)
+#define MN_WEBFORMAT (RC_WEB_BEGIN + 34)
+#define MN_WEBEXTRA (RC_WEB_BEGIN + 35)
+#define MN_WEBWIN (RC_WEB_BEGIN + 36)
+
+#define MN_OBJECTMENU_WEBTEXT (RC_WEB_BEGIN + 37)
+#define MN_OBJECTMENU_WEBLIST (RC_WEB_BEGIN + 38)
+#define MN_OBJECTMENU_WEBTABLE (RC_WEB_BEGIN + 39)
+#define MN_OBJECTMENU_WEBFRAME (RC_WEB_BEGIN + 40)
+#define MN_OBJECTMENU_WEBGRAFIK (RC_WEB_BEGIN + 41)
+#define MN_OBJECTMENU_WEBDRAW (RC_WEB_BEGIN + 42)
+#define MN_OBJECTMENU_WEBDRWTXT (RC_WEB_BEGIN + 43)
+#define MN_OBJECTMENU_WEBOLE (RC_WEB_BEGIN + 44)
+#define MN_OBJECTMENU_WEBDRAWCONTROL (RC_WEB_BEGIN + 45)
+
+#define MN_WEB_TEXT_POPUPMENU (RC_WEB_BEGIN + 46)
+
+#define MN_WEBFILE_PORT (RC_WEB_BEGIN + 47)
+#define MN_WEBEDIT_PORT (RC_WEB_BEGIN + 48)
+#define MN_WEBVIEW_PORT (RC_WEB_BEGIN + 49)
+#define MN_WEBINS_PORT (RC_WEB_BEGIN + 50)
+#define MN_WEBFORMAT_PORT (RC_WEB_BEGIN + 51)
+#define MN_WEBEXTRA_PORT (RC_WEB_BEGIN + 52)
+#define MN_WEBWIN_PORT (RC_WEB_BEGIN + 53)
+
+// ------------------------------------------------------------------------
+
+#define WEB_ACT_END MN_OBJECTMENU_WEBDRAWCONTROL
+
+
+#if WEB_ACT_END > RC_WEB_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+#endif
diff --git a/sw/source/ui/inc/wformsh.hxx b/sw/source/ui/inc/wformsh.hxx
new file mode 100644
index 000000000000..dfa89ca1338d
--- /dev/null
+++ b/sw/source/ui/inc/wformsh.hxx
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * $RCSfile: wformsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWWDRWFORMSH_HXX
+#define _SWWDRWFORMSH_HXX
+
+#include "drformsh.hxx"
+
+class SwWebDrawFormShell : public SwDrawFormShell
+{
+public:
+ SwWebDrawFormShell(SwView &rShell);
+ virtual ~SwWebDrawFormShell();
+
+ SFX_DECL_INTERFACE(SW_WEBDRAWFORMSHELL);
+ TYPEINFO();
+};
+
+
+#endif
+
+
diff --git a/sw/source/ui/inc/wfrmsh.hxx b/sw/source/ui/inc/wfrmsh.hxx
new file mode 100644
index 000000000000..e7f40ae5d051
--- /dev/null
+++ b/sw/source/ui/inc/wfrmsh.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * $RCSfile: wfrmsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWWFRMSH_HXX
+#define _SWWFRMSH_HXX
+
+#include "frmsh.hxx"
+
+
+class SwWebFrameShell: public SwFrameShell
+{
+
+public:
+ SFX_DECL_INTERFACE(SW_WEBFRAMESHELL);
+ TYPEINFO();
+
+ SwWebFrameShell(SwView &rView);
+ virtual ~SwWebFrameShell();
+};
+
+#endif
+
+
+
diff --git a/sw/source/ui/inc/wgrfsh.hxx b/sw/source/ui/inc/wgrfsh.hxx
new file mode 100644
index 000000000000..56b1c44f7c9a
--- /dev/null
+++ b/sw/source/ui/inc/wgrfsh.hxx
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * $RCSfile: wgrfsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWWGRFSH_HXX
+#define _SWWGRFSH_HXX
+
+#include "grfsh.hxx"
+
+class SwWebGrfShell: public SwGrfShell
+{
+public:
+ SwWebGrfShell(SwView &rShell);
+ virtual ~SwWebGrfShell();
+
+ SFX_DECL_INTERFACE(SW_WEBGRFSHELL);
+ TYPEINFO();
+};
+
+
+#endif
+
+
diff --git a/sw/source/ui/inc/wlistsh.hxx b/sw/source/ui/inc/wlistsh.hxx
new file mode 100644
index 000000000000..7c824c8b7fe8
--- /dev/null
+++ b/sw/source/ui/inc/wlistsh.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * $RCSfile: wlistsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWWLISTSH_HXX
+#define _SWWLISTSH_HXX
+
+#include "listsh.hxx"
+
+class SwWebListShell: public SwListShell
+{
+public:
+ SFX_DECL_INTERFACE(SW_WEBLISTSHELL);
+ TYPEINFO();
+
+ virtual ~SwWebListShell();
+ SwWebListShell(SwView &rView);
+};
+
+#endif
diff --git a/sw/source/ui/inc/wolesh.hxx b/sw/source/ui/inc/wolesh.hxx
new file mode 100644
index 000000000000..fccee3aa35bd
--- /dev/null
+++ b/sw/source/ui/inc/wolesh.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * $RCSfile: wolesh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWWOLESH_HXX
+#define _SWWOLESH_HXX
+
+#include "olesh.hxx"
+
+class SwWebOleShell: public SwOleShell
+{
+public:
+ SFX_DECL_INTERFACE(SW_WEBOLESHELL);
+
+ virtual ~SwWebOleShell();
+ SwWebOleShell(SwView &rView);
+};
+
+#endif
+
+
+
+
+
+
+
diff --git a/sw/source/ui/inc/workctrl.hxx b/sw/source/ui/inc/workctrl.hxx
new file mode 100644
index 000000000000..982461eefb39
--- /dev/null
+++ b/sw/source/ui/inc/workctrl.hxx
@@ -0,0 +1,228 @@
+/*************************************************************************
+ *
+ * $RCSfile: workctrl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _WORKCTRL_HXX
+#define _WORKCTRL_HXX
+
+#ifndef _SFXTBXCTRL_HXX //autogen
+#include <sfx2/tbxctrl.hxx>
+#endif
+
+#ifndef _VALUESET_HXX //autogen
+#include <svtools/valueset.hxx>
+#endif
+
+#ifndef _IMAGEBTN_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+class PopupMenu;
+class SwView;
+
+// doppelter Eintrag! hrc und hxx
+// diese Ids bestimmen, was die Buttons unter dem Scrollbar tun
+#define NID_START 20000
+#define NID_NEXT 20000
+#define NID_PREV 20001
+#define NID_TBL 20002
+#define NID_FRM 20003
+#define NID_PGE 20004
+#define NID_DRW 20005
+#define NID_CTRL 20006
+#define NID_REG 20007
+#define NID_BKM 20008
+#define NID_GRF 20009
+#define NID_OLE 20010
+#define NID_OUTL 20011
+#define NID_SEL 20012
+#define NID_FTN 20013
+#define NID_MARK 20014
+#define NID_POSTIT 20015
+#define NID_SRCH_REP 20016
+#define NID_INDEX_ENTRY 20017
+#define NID_TABLE_FORMULA 20018
+#define NID_TABLE_FORMULA_ERROR 20019
+#define NID_COUNT 20
+
+
+
+//----------------------------------------------------------------------------
+//
+//----------------------------------------------------------------------------
+
+class SwTbxInsertCtrl : public SfxToolBoxControl
+{
+ USHORT nLastSlotId;
+
+ virtual void Select( BOOL bMod1 = FALSE );
+
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SwTbxInsertCtrl( USHORT nId, ToolBox& rTbx, SfxBindings& rBind );
+ ~SwTbxInsertCtrl();
+
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+ virtual void StateChanged( USHORT nSID,
+ SfxItemState eState,
+ const SfxPoolItem* pState );
+
+};
+
+//----------------------------------------------------------------------------
+//
+//----------------------------------------------------------------------------
+
+class SwTbxAutoTextCtrl : public SfxToolBoxControl
+{
+ PopupMenu* pPopup;
+ SwView* pView;
+
+
+ void DelPopup();
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SwTbxAutoTextCtrl( USHORT nId, ToolBox& rTbx, SfxBindings& rBind );
+ ~SwTbxAutoTextCtrl();
+
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+ virtual void StateChanged( USHORT nSID,
+ SfxItemState eState,
+ const SfxPoolItem* pState );
+
+ DECL_LINK(PopupHdl, PopupMenu*);
+};
+
+
+//----------------------------------------------------------------------------
+//
+//----------------------------------------------------------------------------
+
+class SwScrollNaviValueSet : public ValueSet
+{
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+
+ public:
+ SwScrollNaviValueSet(Window* pParent, WinBits nWinStyle ) :
+ ValueSet(pParent, nWinStyle ) {}
+};
+
+class SwScrollNaviPopup : public SfxPopupWindow
+{
+ SwScrollNaviValueSet aVSet;
+ ImageList aIList;
+ const ResId& rResId;
+
+ String sQuickHelp[2 * NID_COUNT];
+
+ USHORT nFwdId;
+ USHORT nBackId;
+
+ protected:
+ DECL_LINK(SelectHdl, ValueSet*);
+
+ public:
+ SwScrollNaviPopup( USHORT nId, const ResId &rId, SfxBindings & );
+ ~SwScrollNaviPopup();
+
+ static String GetQuickHelpText(BOOL bNext);
+ virtual void PopupModeEnd();
+ virtual SfxPopupWindow* Clone() const;
+};
+
+//----------------------------------------------------------------------------
+//
+//----------------------------------------------------------------------------
+
+class SwNaviImageButton : public ImageButton
+{
+ SwScrollNaviPopup* pPopup;
+ Image aImage;
+ String sQuickText;
+
+ protected:
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ public:
+ SwNaviImageButton(Window* pParent);
+};
+
+//----------------------------------------------------------------------------
+// Die ImageButtons muessen sich bei Bedarf den HelpText selbst setzen
+//----------------------------------------------------------------------------
+
+class SwHlpImageButton : public ImageButton
+{
+ BOOL bUp;
+ public:
+ SwHlpImageButton(Window* pParent, const ResId& rResId, BOOL bUpBtn) :
+ ImageButton(pParent, rResId), bUp(bUpBtn){}
+
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+
+};
+#endif
+
+
+
diff --git a/sw/source/ui/inc/wrap.hxx b/sw/source/ui/inc/wrap.hxx
new file mode 100644
index 000000000000..3a9cc0f55f95
--- /dev/null
+++ b/sw/source/ui/inc/wrap.hxx
@@ -0,0 +1,185 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrap.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _WRAP_HXX
+#define _WRAP_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+
+#ifndef _IMAGEBTN_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+class Window;
+class SfxItemSet;
+class SwWrtShell;
+
+class SwWrapDlg : public SfxSingleTabDialog
+{
+ SwWrtShell* pWrtShell;
+
+public:
+ SwWrapDlg(Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh, BOOL bDrawMode);
+ ~SwWrapDlg();
+
+ inline SwWrtShell* GetWrtShell() { return pWrtShell; }
+};
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Umlauf-TabPage
+ --------------------------------------------------------------------*/
+
+class SwWrapTabPage: public SfxTabPage
+{
+ // WRAPPING
+ ImageRadioButton aNoWrapRB;
+ ImageRadioButton aWrapLeftRB;
+ ImageRadioButton aWrapRightRB;
+ ImageRadioButton aWrapParallelRB;
+ ImageRadioButton aWrapThroughRB;
+ ImageRadioButton aIdealWrapRB;
+ GroupBox aWrapBoxC;
+
+ CheckBox aWrapAnchorOnlyCB;
+ CheckBox aWrapTransparentCB;
+ CheckBox aWrapOutlineCB;
+ CheckBox aWrapOutsideCB;
+ GroupBox aOptionsGB;
+
+ // MARGIN
+ FixedText aLeftMarginFT;
+ MetricField aLeftMarginED;
+ FixedText aRightMarginFT;
+ MetricField aRightMarginED;
+ FixedText aTopMarginFT;
+ MetricField aTopMarginED;
+ FixedText aBottomMarginFT;
+ MetricField aBottomMarginED;
+ GroupBox aMarginGB;
+
+ ImageList aWrapIL;
+
+ USHORT nOldLeftMargin;
+ USHORT nOldRightMargin;
+ USHORT nOldUpperMargin;
+ USHORT nOldLowerMargin;
+
+ USHORT nAnchorId;
+ USHORT nHtmlMode;
+
+ Size aFrmSize;
+ SwWrtShell* pWrtSh;
+
+ BOOL bFormat;
+ BOOL bNew;
+ BOOL bHtmlMode;
+ BOOL bDrawMode;
+ BOOL bContourImage;
+
+ SwWrapTabPage(Window *pParent, const SfxItemSet &rSet);
+ ~SwWrapTabPage();
+
+ void EnableModes(const SfxItemSet& rSet);
+ virtual void ActivatePage(const SfxItemSet& rSet);
+ virtual int DeactivatePage(SfxItemSet *pSet);
+
+ DECL_LINK( RangeModifyHdl, MetricField * );
+ DECL_LINK( WrapTypeHdl, ImageRadioButton * );
+ DECL_LINK( ContourHdl, CheckBox * );
+
+public:
+ static SfxTabPage *Create(Window *pParent, const SfxItemSet &rSet);
+
+ virtual BOOL FillItemSet(SfxItemSet &rSet);
+ virtual void Reset(const SfxItemSet &rSet);
+
+ static USHORT* GetRanges();
+ inline void SetNewFrame(BOOL bNewFrame) { bNew = bNewFrame; }
+ inline void SetFormatUsed(BOOL bFmt, BOOL bDrw) { bFormat = bFmt;
+ bDrawMode = bDrw; }
+ inline void SetShell(SwWrtShell* pSh) { pWrtSh = pSh; }
+};
+
+#endif
+
+
diff --git a/sw/source/ui/inc/wrtsh.hxx b/sw/source/ui/inc/wrtsh.hxx
new file mode 100644
index 000000000000..410a6a8ef14f
--- /dev/null
+++ b/sw/source/ui/inc/wrtsh.hxx
@@ -0,0 +1,611 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _WRTSH_HXX
+#define _WRTSH_HXX
+
+#ifndef _FESH_HXX
+#include <fesh.hxx>
+#endif
+#ifndef _SORTOPT_HXX
+#include <sortopt.hxx>
+#endif
+#ifndef _SWURL_HXX
+#include <swurl.hxx>
+#endif
+
+class Window;
+class SbxArray;
+class SwDoc;
+class SvInPlaceObjectRef;
+class SvEmbeddedObjectRef;
+class SpellCheck;
+class SwViewOption;
+class SwFlyFrmAttrMgr;
+class SwField;
+class SwTOXBase;
+class SdrView;
+class SwView;
+class SvGlobalName;
+class SwInputFieldList;
+class SwSection;
+class Timer;
+class SvxMacro;
+class SwFmtINetFmt;
+class SvxINetBookmark;
+class SvxAutoCorrect;
+class NaviContentBookmark;
+struct SwCallMouseEvent;
+class DropEvent;
+struct ChartSelectionInfo;
+
+#ifndef _COM_SUN_STAR_LINGUISTIC_XSPELLCHECKER1_HPP_
+#include <com/sun/star/linguistic/XSpellChecker1.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XHYPHENATOR_HPP_
+#include <com/sun/star/linguistic/XHyphenator.hpp>
+#endif
+
+class SwWrtShell: public SwFEShell
+{
+public:
+ typedef long (SwWrtShell::*SELECTFUNC)(const Point *, BOOL bProp );
+
+ SELECTFUNC fnDrag;
+ SELECTFUNC fnSetCrsr;
+ SELECTFUNC fnEndDrag;
+ SELECTFUNC fnKillSel;
+
+ // Alle Selektionen aufheben
+ long ResetSelect( const Point *, BOOL );
+
+ //setzt den Cursorstack nach dem Bewegen mit PageUp/-Down
+ //zurueck, falls ein Stack aufgebaut ist
+ inline void ResetCursorStack();
+
+ enum SelectionType
+ {
+ SEL_TXT = CNT_TXT, // Text, niemals auch Rahmen 0x0001
+ SEL_GRF = CNT_GRF, // Grafik 0x0002
+ SEL_OLE = CNT_OLE, // OLE 0x0010
+ SEL_FRM = 0x0020, // Rahmen, keine Inhaltsform
+ SEL_NUM = 0x0040, // NumListe
+ SEL_TBL = 0x0080, // Cursor steht in Tabelle
+ SEL_TBL_CELLS = 0x0100, // Tabellenzellen sind selektiert
+ SEL_DRW = 0x0200, // Zeichenobjekte (Rechteck, Kreis...)
+ SEL_DRW_TXT = 0x0400, // Draw-Textobjekte im Editmode
+ SEL_BEZ = 0x0800, // Bezierobjekte editieren
+ SEL_DRW_FORM = 0x1000 // Zeichenobjekte: DB-Forms
+ };
+ int GetSelectionType() const;
+
+ BOOL IsModePushed() const { return 0 != pModeStack; }
+ void PushMode();
+ void PopMode();
+
+ void SttSelect();
+ void EndSelect();
+ BOOL IsInSelect() const { return bInSelect; }
+ void SetInSelect(BOOL bSel = TRUE) { bInSelect = bSel; }
+ // Liegt eine Text- oder Rahmenselektion vor?
+ BOOL HasSelection() const { return IsSelection() || IsSelFrmMode() || IsObjSelected(); }
+ FASTBOOL Pop( BOOL bOldCrsr = TRUE );
+
+ void EnterStdMode();
+ BOOL IsStdMode() const { return !bExtMode && !bAddMode; }
+
+ void EnterExtMode();
+ void LeaveExtMode();
+ long ToggleExtMode();
+ BOOL IsExtMode() const { return bExtMode; }
+
+ void EnterAddMode();
+ void LeaveAddMode();
+ long ToggleAddMode();
+ BOOL IsAddMode() const { return bAddMode; }
+
+ void SetInsMode( BOOL bOn = TRUE );
+ void ToggleInsMode() { SetInsMode( !bIns ); }
+ BOOL IsInsMode() const { return bIns; }
+
+ void EnterSelFrmMode(const Point *pStartDrag = 0);
+ void LeaveSelFrmMode();
+ BOOL IsSelFrmMode() const { return bLayoutMode; }
+ // Selektion von Rahmen aufheben
+ void UnSelectFrm();
+
+ // Tabellenzellen selektieren fuer Bearbeiten von Formeln in der Ribbonbar
+ inline void SelTblCells( const Link &rLink, BOOL bMark = TRUE );
+ inline void EndSelTblCells();
+
+ //Wortweisen oder zeilenweisen Selektionsmodus verlassen. Wird
+ //in der Regel in MB-Up gerufen.
+ BOOL IsExtSel() const { return bSelWrd || bSelLn; }
+
+ // erfrage, ob der akt. fnDrag - Pointer auf BeginDrag gesetzt ist
+ // Wird fuer MouseMove gebraucht, um die Bugs 55592/55931 zu umgehen.
+ inline BOOL Is_FnDragEQBeginDrag() const;
+
+ //Basisabfragen
+ BOOL IsInWrd() { return IsInWord(); }
+ BOOL IsSttWrd() { return IsStartWord(); }
+ BOOL IsEndWrd();
+ BOOL IsSttOfPara() const { return IsSttPara(); }
+ BOOL IsEndOfPara() const { return IsEndPara(); }
+
+ //Word bzw. Satz selektieren.
+ BOOL SelNearestWrd();
+ BOOL SelWrd (const Point * = 0, BOOL bProp=FALSE );
+ BOOL SelSentence (const Point * = 0, BOOL bProp=FALSE );
+ void SelLine (const Point * = 0, BOOL bProp=FALSE );
+ long SelAll();
+
+ //Basiscursortravelling
+typedef FASTBOOL (SwWrtShell:: *FNSimpleMove)();
+ FASTBOOL SimpleMove( FNSimpleMove, FASTBOOL bSelect );
+
+ FASTBOOL Left ( FASTBOOL bSelect = FALSE, USHORT nCount = 1,
+ BOOL bBasicCall = FALSE );
+ FASTBOOL Right ( FASTBOOL bSelect = FALSE, USHORT nCount = 1,
+ BOOL bBasicCall = FALSE );
+ FASTBOOL Up ( FASTBOOL bSelect = FALSE, USHORT nCount = 1,
+ BOOL bBasicCall = FALSE );
+ FASTBOOL Down ( FASTBOOL bSelect = FALSE, USHORT nCount = 1,
+ BOOL bBasicCall = FALSE );
+ FASTBOOL NxtWrd ( FASTBOOL bSelect = FALSE ) { return SimpleMove( &SwWrtShell::_NxtWrd, bSelect ); }
+ FASTBOOL PrvWrd ( FASTBOOL bSelect = FALSE ) { return SimpleMove( &SwWrtShell::_PrvWrd, bSelect ); }
+ FASTBOOL LeftMargin ( FASTBOOL bSelect = FALSE, FASTBOOL bBasicCall = FALSE );
+ FASTBOOL RightMargin( FASTBOOL bSelect = FALSE, FASTBOOL bBasicCall = FALSE );
+ FASTBOOL SttDoc ( FASTBOOL bSelect = FALSE );
+ FASTBOOL EndDoc ( FASTBOOL bSelect = FALSE );
+
+ FASTBOOL SttNxtPg ( FASTBOOL bSelect = FALSE );
+ FASTBOOL SttPrvPg ( FASTBOOL bSelect = FALSE );
+ FASTBOOL EndNxtPg ( FASTBOOL bSelect = FALSE );
+ FASTBOOL EndPrvPg ( FASTBOOL bSelect = FALSE );
+ FASTBOOL SttPg ( FASTBOOL bSelect = FALSE );
+ FASTBOOL EndPg ( FASTBOOL bSelect = FALSE );
+ FASTBOOL SttPara ( FASTBOOL bSelect = FALSE );
+ FASTBOOL EndPara ( FASTBOOL bSelect = FALSE );
+ FASTBOOL FwdPara ( FASTBOOL bSelect = FALSE )
+ { return SimpleMove( &SwWrtShell::_FwdPara, bSelect ); }
+ FASTBOOL BwdPara ( FASTBOOL bSelect = FALSE )
+ { return SimpleMove( &SwWrtShell::_BwdPara, bSelect ); }
+ FASTBOOL FwdSentence( FASTBOOL bSelect = FALSE )
+ { return SimpleMove( &SwWrtShell::_FwdSentence, bSelect ); }
+ FASTBOOL BwdSentence( FASTBOOL bSelect = FALSE )
+ { return SimpleMove( &SwWrtShell::_BwdSentence, bSelect ); }
+
+ FASTBOOL SelectTableRow();
+ FASTBOOL SelectTableCol();
+ FASTBOOL SelectTxtAttr( USHORT nWhich, const SwTxtAttr* pAttr = 0 );
+
+ // Spaltenweise Spruenge
+ FASTBOOL StartOfColumn ( FASTBOOL bSelect = FALSE );
+ FASTBOOL EndOfColumn ( FASTBOOL bSelect = FALSE );
+ FASTBOOL StartOfNextColumn ( FASTBOOL bSelect = FALSE );
+ FASTBOOL EndOfNextColumn ( FASTBOOL bSelect = FALSE );
+ FASTBOOL StartOfPrevColumn ( FASTBOOL bSelect = FALSE );
+ FASTBOOL EndOfPrevColumn ( FASTBOOL bSelect = FALSE );
+
+ // setze den Cursor auf die Seite "nPage" an den Anfang
+ // zusaetzlich zu der gleichnamigen Implementierung in crsrsh.hxx
+ // werden hier alle bestehenden Selektionen vor dem Setzen des
+ // Cursors aufgehoben
+ BOOL GotoPage(USHORT nPage, BOOL bRecord = TRUE);
+
+ //setzen des Cursors; merken der alten Position fuer Zurueckblaettern.
+ DECL_LINK( ExecFlyMac, void * );
+
+ BOOL PageCrsr(SwTwips lOffset, BOOL bSelect);
+
+ // Felder Update
+ void UpdateInputFlds( SwInputFieldList* pLst = 0, BOOL bOnlyInSel = FALSE );
+
+ void NoEdit(BOOL bHideCrsr = TRUE);
+ void Edit();
+ BOOL IsNoEdit() const { return bNoEdit; }
+
+ // Loeschen
+ long DelToEndOfLine();
+ long DelToStartOfLine();
+ long DelLine();
+ long DelLeft();
+
+ // loescht auch Rahmen bzw. setzt den Cursor in den Rahmen,
+ // wenn bDelFrm == FALSE ist
+ long DelRight( BOOL bDelFrm = FALSE );
+ long DelToEndOfPara();
+ long DelToStartOfPara();
+ long DelToEndOfSentence();
+ long DelToStartOfSentence();
+ long DelNxtWord();
+ long DelPrvWord();
+
+ // Prueft, ob eine Wortselektion vorliegt.
+ // Gemaess den Regeln fuer intelligentes Cut / Paste
+ // werden umgebende Spaces rausgeschnitten.
+ // Liefert Art der Wortselektion zurueck (siehe enum)
+ enum {
+ NO_WORD = 0,
+ WORD_SPACE_BEFORE = 1,
+ WORD_SPACE_AFTER = 2,
+ WORD_NO_SPACE = 3
+ };
+ int IntelligentCut(int nSelectionType, BOOL bCut = TRUE);
+
+ // Editieren
+ void Insert(SwField &);
+ void Insert(const String &);
+ void InsertByWord( const String & );
+ void InsertPageBreak(const String *pPageDesc = 0, USHORT nPgNum = 0 );
+ void InsertLineBreak();
+ void InsertColumnBreak();
+ void InsertFootnote(const String &, BOOL bEndNote = FALSE, BOOL bEdit = TRUE );
+ void SplitNode( BOOL bAutoFormat = FALSE, BOOL bCheckTableStart = TRUE );
+ BOOL CanInsert();
+
+ // Verzeichnisse
+ void InsertTableOf(const SwTOXBase& rTOX, const SfxItemSet* pSet = 0);
+ BOOL UpdateTableOf(const SwTOXBase& rTOX, const SfxItemSet* pSet = 0);
+
+ // Numerierung und Bullets
+ void NumOn();
+ void BulletOn();
+
+ // Graphic
+ void Insert( const String &rPath, const String &rFilter,
+ const Graphic &, SwFlyFrmAttrMgr * = 0,
+ BOOL bRule = FALSE );
+ //OLE
+ void Insert ( SvInPlaceObjectRef *pObj, // != 0 fuer Clipboard
+ SvGlobalName *pName = 0, // != 0 entspr. Object erzeugen.
+ BOOL bActivate = TRUE,
+ USHORT nSlotId = 0); // SlotId fuer Dialog
+ BOOL InsertOle ( SvInPlaceObjectRef aRef ); // In die Core einfuegen.
+ void LaunchOLEObj( long nVerb = 0 ); // Server starten
+ BOOL FinishOLEObj(); // Server wird beendet
+ BOOL IsOLEObj() const { return GetCntType() == CNT_OLE;}
+ virtual void CalcAndSetScale( SvEmbeddedObjectRef xObj,
+ const SwRect *pFlyPrtRect = 0,
+ const SwRect *pFlyFrmRect = 0 );
+ virtual void ConnectObj( SvInPlaceObjectRef xIPObj, const SwRect &rPrt,
+ const SwRect &rFrm );
+ DECL_LINK( ChartSelectionHdl, ChartSelectionInfo * );
+
+ // Vorlagen und Formate
+
+ // enum gibt an, was geschehen soll, wenn das Style nicht gefunden wurde
+ enum GetStyle { GETSTYLE_NOCREATE, // keins anlegen
+ GETSTYLE_CREATESOME, // falls auf PoolId mapt anlegen
+ GETSTYLE_CREATEANY }; // ggfs Standard returnen
+
+ SwTxtFmtColl* GetParaStyle(const String &rCollName,
+ GetStyle eCreate = GETSTYLE_NOCREATE);
+ SwCharFmt* GetCharStyle(const String &rFmtName,
+ GetStyle eCreate = GETSTYLE_NOCREATE);
+ SwFrmFmt* GetTblStyle(const String &rFmtName);
+
+ void SetPageStyle(const String &rCollName);
+
+ String GetCurPageStyle( const BOOL bCalcFrm = TRUE ) const;
+
+ // Aktuelle Vorlage anhand der geltenden Attribute aendern
+ void QuickUpdateStyle();
+
+ enum DoType { UNDO, REDO, REPEAT };
+
+ void Do( DoType eDoType );
+ String GetDoString( DoType eDoType ) const;
+ String GetRepeatString() const;
+
+ //Suchen oder Ersetzen
+ ULONG SearchPattern(const SearchParam& rParam,
+ SwDocPositions eStart, SwDocPositions eEnde,
+ FindRanges eFlags = FND_IN_BODY,
+ int bReplace = FALSE );
+
+ ULONG SearchTempl (const String &rTempl,
+ SwDocPositions eStart, SwDocPositions eEnde,
+ FindRanges eFlags = FND_IN_BODY,
+ const String* pReplTempl = 0 );
+
+ ULONG SearchAttr (const SfxItemSet& rFindSet,
+ BOOL bNoColls,
+ SwDocPositions eStart,SwDocPositions eEnde,
+ FindRanges eFlags = FND_IN_BODY,
+ const SearchParam* pParam = 0,
+ const SfxItemSet* pReplaceSet = 0);
+
+ void AutoCorrect( SvxAutoCorrect& rACorr, sal_Unicode cChar = ' ' );
+
+ // Aktion vor Cursorbewegung
+ // Hebt gfs. Selektionen auf, triggert Timer und GCAttr()
+ void MoveCrsr( FASTBOOL bWithSelect = FALSE );
+
+ // Eingabefelder updaten
+ BOOL StartInputFldDlg(SwField*, BOOL bNextButton);
+
+ //"Handler" fuer Anederungen an der DrawView - fuer Controls.
+ virtual void DrawSelChanged( SdrView * );
+
+ // springe zum Bookmark und setze die "Selections-Flags" wieder richtig
+ FASTBOOL GotoBookmark( USHORT nPos );
+ FASTBOOL GotoBookmark( USHORT nPos, BOOL bSelect, BOOL bStart );
+ FASTBOOL GotoBookmark( const String& rName );
+ FASTBOOL GoNextBookmark(); // TRUE, wenn's noch eine gab
+ FASTBOOL GoPrevBookmark();
+
+ // Zugehoerige SwView ermitteln
+ const SwView& GetView() const { return rView; }
+ SwView& GetView() { return rView; }
+
+ //Weil es sonst keiner macht, gibt es hier eine ExecMacro()
+ void ExecMacro( const SvxMacro& rMacro, String* pRet = 0, SbxArray* pArgs = 0 );
+ // rufe ins dunkle Basic/JavaScript
+ USHORT CallEvent( USHORT nEvent, const SwCallMouseEvent& rCallEvent,
+ BOOL bCheckPtr = FALSE, SbxArray* pArgs = 0,
+ const Link* pCallBack = 0 );
+
+ void StartBasicAction();
+ void EndBasicAction();
+ void SetBasicActionCount(USHORT nSet);
+ USHORT EndAllBasicActions();
+
+ // ein Klick aus das angegebene Feld. Der Cursor steht auf diesem.
+ // Fuehre die vor definierten Aktionen aus.
+ void ClickToField( const SwField& rFld, USHORT nFilter = URLLOAD_NOFILTER );
+ void ClickToINetAttr( const SwFmtINetFmt& rItem, USHORT nFilter = URLLOAD_NOFILTER );
+ BOOL ClickToINetGrf( const Point& rDocPt, USHORT nFilter = URLLOAD_NOFILTER );
+ inline BOOL IsInClickToEdit() const ;
+
+ // fall ein URL-Button selektiert ist, dessen URL returnen, ansonsten
+ // einen LeerString
+ BOOL GetURLFromButton( String& rURL, String& rDescr ) const;
+ BOOL SetURLToButton( const String& rURL, const String& rDescr );
+
+ void NavigatorPaste( const NaviContentBookmark& rBkmk, const DropEvent* pEvt );
+
+ // die Core erzeugt eine Selektion, das SttSelect muss gerufen werden
+ virtual void NewCoreSelection();
+
+ // autom. Update von Vorlagen
+ void AutoUpdateFrame(SwFrmFmt* pFmt, const SfxItemSet& rStyleSet);
+ void AutoUpdatePara(SwTxtFmtColl* pColl, const SfxItemSet& rStyleSet);
+
+ // Link fuers einfuegen von Bereichen uebers Drag&Drop/Clipboard
+ DECL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSection* );
+
+
+ //ctoren, der erstere ist eine Art kontrollierter copy ctor fuer weitere
+ //Sichten auf ein Dokument
+ SwWrtShell( SwWrtShell *, Window *pWin, SwView &rShell);
+ SwWrtShell( SwDoc *pDoc,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XSpellChecker1 >&,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic::XHyphenator >&,
+ Window *pWin, SwView &rShell,
+ SwRootFrm* pMaster = 0, const SwViewOption *pViewOpt = 0);
+ ~SwWrtShell();
+
+private:
+
+ void OpenMark();
+ void CloseMark( BOOL bOkFlag );
+
+ String GetWrdDelim();
+ String GetSDelim();
+ String GetBothDelim();
+
+ struct ModeStack
+ {
+ ModeStack *pNext;
+ BOOL bAdd,
+ bExt,
+ bIns;
+ ModeStack(ModeStack *pNextMode, BOOL _bIns, BOOL _bExt, BOOL _bAdd):
+ pNext(pNextMode),
+ bIns(_bIns),
+ bExt(_bExt),
+ bAdd(_bAdd) {}
+ } *pModeStack;
+
+ // Cursor bei PageUp / -Down mitnehmen
+ enum PageMove
+ {
+ MV_NO,
+ MV_PAGE_UP,
+ MV_PAGE_DOWN
+ } ePageMove;
+
+ struct CrsrStack
+ {
+ Point aDocPos;
+ CrsrStack *pNext;
+ BOOL bValidCurPos : 1;
+ BOOL bIsFrmSel : 1;
+ SwTwips lOffset;
+
+ CrsrStack( BOOL bValid, BOOL bFrmSel, const Point &rDocPos,
+ SwTwips lOff, CrsrStack *pN )
+ : aDocPos(rDocPos), lOffset(lOff), pNext(pN)
+ {
+ bValidCurPos = bValid;
+ bIsFrmSel = bFrmSel;
+ }
+
+ } *pCrsrStack;
+
+ SwView &rView;
+
+ Point aDest;
+ BOOL bDestOnStack;
+ BOOL HasCrsrStack() const { return 0 != pCrsrStack; }
+ BOOL PushCrsr(SwTwips lOffset, BOOL bSelect);
+ BOOL PopCrsr(BOOL bUpdate, BOOL bSelect = FALSE);
+
+ // ENDE Cursor bei PageUp / -Down mitnehmen
+ FASTBOOL _SttWrd();
+ FASTBOOL _EndWrd();
+ FASTBOOL _NxtWrd();
+ FASTBOOL _PrvWrd();
+ FASTBOOL _FwdSentence();
+ FASTBOOL _BwdSentence();
+ FASTBOOL _FwdPara();
+ FASTBOOL _BwdPara();
+
+ // Selektionen
+ BOOL bIns :1;
+ BOOL bInSelect :1;
+ BOOL bExtMode :1;
+ BOOL bAddMode :1;
+ BOOL bLayoutMode :1;
+ BOOL bNoEdit :1;
+ BOOL bCopy :1;
+ BOOL bSelWrd :1;
+ BOOL bSelLn :1;
+ BOOL bIsInClickToEdit:1;
+ BOOL bClearMark :1; // Selektion fuer ChartAutoPilot nicht loeschen
+
+ Point aStart;
+ Link aSelTblLink;
+
+ SELECTFUNC fnLeaveSelect;
+
+ //setzt den Cursorstack nach dem Bewegen mit PageUp/-Down zurueck.
+ void _ResetCursorStack();
+
+ void SttDragDrop(Timer *);
+ long SetCrsr(const Point *, BOOL bProp=FALSE );
+ long SetCrsrKillSel(const Point *, BOOL bProp=FALSE );
+
+ long StdSelect(const Point *, BOOL bProp=FALSE );
+ long BeginDrag(const Point *, BOOL bProp=FALSE );
+ long Drag(const Point *, BOOL bProp=FALSE );
+ long EndDrag(const Point *, BOOL bProp=FALSE );
+
+ long ExtSelWrd(const Point *, BOOL bProp=FALSE );
+ long ExtSelLn(const Point *, BOOL bProp=FALSE );
+
+ //Verschieben von Text aus Drag and Drop; Point ist
+ //Destination fuer alle Selektionen.
+ long MoveText(const Point *, BOOL bProp=FALSE );
+
+ long BeginFrmDrag(const Point *, BOOL bProp=FALSE );
+
+ //nach SSize/Move eines Frames Update; Point ist Destination.
+ long UpdateLayoutFrm(const Point *, BOOL bProp=FALSE );
+
+ long SttLeaveSelect(const Point *, BOOL bProp=FALSE );
+ long AddLeaveSelect(const Point *, BOOL bProp=FALSE );
+ long Ignore(const Point *, BOOL bProp=FALSE );
+
+ void LeaveExtSel() { bSelWrd = bSelLn = FALSE;}
+ BOOL _CanInsert();
+
+ BOOL GoStart(BOOL KeepArea = FALSE, BOOL * = 0,
+ BOOL bSelect = FALSE, BOOL bDontMoveRegion = FALSE);
+ BOOL GoEnd(BOOL KeepArea = FALSE, BOOL * = 0);
+
+ enum BookMarkMove
+ {
+ BOOKMARK_INDEX,
+ BOOKMARK_NEXT,
+ BOOKMARK_PREV,
+ BOOKMARK_LAST_LAST_ENTRY
+ };
+
+ FASTBOOL MoveBookMark( BookMarkMove eFuncId,
+ USHORT nPos = 0,
+ BOOL bStart = TRUE );
+};
+
+inline void SwWrtShell::ResetCursorStack()
+{
+ if ( HasCrsrStack() )
+ _ResetCursorStack();
+}
+
+inline void SwWrtShell::SelTblCells(const Link &rLink, BOOL bMark )
+{
+ SetSelTblCells( TRUE );
+ bClearMark = bMark;
+ aSelTblLink = rLink;
+}
+inline void SwWrtShell::EndSelTblCells()
+{
+ SetSelTblCells( FALSE );
+ bClearMark = TRUE;
+}
+
+inline BOOL SwWrtShell::IsInClickToEdit() const { return bIsInClickToEdit; }
+
+inline BOOL SwWrtShell::Is_FnDragEQBeginDrag() const
+{
+#ifdef GCC
+ SELECTFUNC fnTmp = &SwWrtShell::BeginDrag;
+ return fnDrag == fnTmp;
+#else
+ return fnDrag == &SwWrtShell::BeginDrag;
+#endif
+}
+
+#endif
diff --git a/sw/source/ui/inc/wtabsh.hxx b/sw/source/ui/inc/wtabsh.hxx
new file mode 100644
index 000000000000..8fda4bac4a22
--- /dev/null
+++ b/sw/source/ui/inc/wtabsh.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * $RCSfile: wtabsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWWTABSH_HXX
+#define _SWWTABSH_HXX
+
+#include "tabsh.hxx"
+
+class SwWebTableShell: public SwTableShell
+{
+public:
+ SFX_DECL_INTERFACE(SW_WEBTABSHELL);
+ TYPEINFO();
+
+ virtual ~SwWebTableShell();
+ SwWebTableShell(SwView &rView);
+};
+
+#endif
diff --git a/sw/source/ui/inc/wtextsh.hxx b/sw/source/ui/inc/wtextsh.hxx
new file mode 100644
index 000000000000..71c82ebdc9ab
--- /dev/null
+++ b/sw/source/ui/inc/wtextsh.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * $RCSfile: wtextsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SWWTEXTSH_HXX
+#define _SWWTEXTSH_HXX
+
+#include "textsh.hxx"
+
+
+class SwWebTextShell: public SwTextShell
+{
+
+public:
+ SFX_DECL_INTERFACE(SW_WEBTEXTSHELL);
+ TYPEINFO();
+
+ SwWebTextShell(SwView &rView);
+ virtual ~SwWebTextShell();
+};
+
+#endif
+
+
+
diff --git a/sw/source/ui/inc/wview.hxx b/sw/source/ui/inc/wview.hxx
new file mode 100644
index 000000000000..56c2a1e27a72
--- /dev/null
+++ b/sw/source/ui/inc/wview.hxx
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * $RCSfile: wview.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SWWVIEW_HXX
+#define _SWWVIEW_HXX
+
+#include "view.hxx"
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+class SwWebView: public SwView
+{
+protected:
+ virtual void SelectShell();
+public:
+
+ SFX_DECL_VIEWFACTORY(SwWebView);
+ SFX_DECL_INTERFACE(SW_WEBVIEWSHELL);
+ TYPEINFO();
+
+ SwWebView(SfxViewFrame* pFrame, SfxViewShell*);
+ ~SwWebView();
+};
+
+#endif
diff --git a/sw/source/ui/inc/zoomctrl.hxx b/sw/source/ui/inc/zoomctrl.hxx
new file mode 100644
index 000000000000..422baa871b6f
--- /dev/null
+++ b/sw/source/ui/inc/zoomctrl.hxx
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * $RCSfile: zoomctrl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _ZOOMCTRL_HXX
+#define _ZOOMCTRL_HXX
+
+#ifndef _SVX_ZOOMCTRL_HXX //autogen
+#include <svx/zoomctrl.hxx>
+#endif
+
+class SwZoomControl : public SvxZoomStatusBarControl
+{
+private:
+ String sPreviewZoom;
+public:
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+ virtual void Paint( const UserDrawEvent& rEvt );
+
+ SFX_DECL_STATUSBAR_CONTROL();
+
+ SwZoomControl( USHORT nId, StatusBar& rStb, SfxBindings& rBind );
+ ~SwZoomControl();
+
+};
+
+
+#endif
+
+
diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx
new file mode 100644
index 000000000000..f5d3074e5434
--- /dev/null
+++ b/sw/source/ui/index/cnttab.cxx
@@ -0,0 +1,4853 @@
+/*************************************************************************
+ *
+ * $RCSfile: cnttab.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <rsc/rscsfx.hxx>
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SV_HELP_HXX
+#include <vcl/help.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFX_INIMGR_HXX
+#include <sfx2/inimgr.hxx>
+#endif
+#ifndef _IODLG_HXX
+#include <sfx2/iodlg.hxx>
+#endif
+#ifndef _SVX_BACKGRND_HXX //autogen
+#include <svx/backgrnd.hxx>
+#endif
+#ifndef _SVX_SIMPTABL_HXX //autogen wg. SvxSimpleTable
+#include <svx/simptabl.hxx>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XDOCUMENTINDEXESSUPPLIER_HPP_
+#include <com/sun/star/text/XDocumentIndexesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XDOCUMENTINDEX_HPP_
+#include <com/sun/star/text/XDocumentIndex.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTSECTIONSSUPPLIER_HPP_
+#include <com/sun/star/text/XTextSectionsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_STYLE_BREAKTYPE_HPP_
+#include <com/sun/star/style/BreakType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTFIELDSSUPPLIER_HPP_
+#include <com/sun/star/text/XTextFieldsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XDEPENDENTTEXTFIELD_HPP_
+#include <com/sun/star/text/XDependentTextField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XPARAGRAPHCURSOR_HPP_
+#include <com/sun/star/text/XParagraphCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XDOCUMENTINDEX_HPP_
+#include <com/sun/star/text/XDocumentIndex.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_CHAPTERFORMAT_HPP_
+#include <com/sun/star/text/ChapterFormat.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTSECTION_HPP_
+#include <com/sun/star/text/XTextSection.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_CONTROLCHARACTER_HPP_
+#include <com/sun/star/text/ControlCharacter.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUES_HPP_
+#include <com/sun/star/beans/PropertyValues.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_TEXTCONTENTANCHORTYPE_HPP_
+#include <com/sun/star/text/TextContentAnchorType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UCB_XCOMMANDENVIRONMENT_HPP_
+#include <com/sun/star/ucb/XCommandEnvironment.hpp>
+#endif
+#ifndef _UCBHELPER_CONTENT_HXX
+#include <ucbhelper/content.hxx>
+#endif
+
+#ifndef _COLUMN_HXX //autogen
+#include <column.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _AUTHFLD_HXX
+#include <authfld.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _BASESH_HXX
+#include <basesh.hxx>
+#endif
+#ifndef _OUTLINE_HXX
+#include <outline.hxx>
+#endif
+#ifndef _CNTTAB_HXX
+#include <cnttab.hxx>
+#endif
+#ifndef _FORMEDT_HXX
+#include <formedt.hxx>
+#endif
+#ifndef _TOXMGR_HXX
+#include <toxmgr.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _UIITEMS_HXX //autogen
+#include <uiitems.hxx>
+#endif
+#ifndef _FMTCOL_HXX //autogen
+#include <fmtcol.hxx>
+#endif
+#ifndef _FLDBAS_HXX //autogen wg. SwFieldType
+#include <fldbas.hxx>
+#endif
+#ifndef _EXPFLD_HXX //autogen wg. SwSetExpFieldType
+#include <expfld.hxx>
+#endif
+#ifndef _UNOPRNMS_HXX
+#include <unoprnms.hxx>
+#endif
+#ifndef _UNOTOOLS_HXX
+#include <unotools.hxx>
+#endif
+#ifndef _UNOTXDOC_HXX
+#include <unotxdoc.hxx>
+#endif
+#ifndef _SWDOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _MODOPT_HXX
+#include <modcfg.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _UTLUI_HRC
+#include <utlui.hrc>
+#endif
+#ifndef _INDEX_HRC
+#include <index.hrc>
+#endif
+#ifndef _CNTTAB_HRC
+#include <cnttab.hrc>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::ucb;
+using namespace ::rtl;
+
+#define C2S(cChar) UniString::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(cChar))
+#define C2U(cChar) OUString::createFromAscii(cChar)
+
+#ifndef _SVX_DBBROWSE_HXX
+#include <svx/dbbrowse.hxx>
+#endif
+
+static const sal_Unicode aDeliStart = '['; //fuer die form
+static const sal_Unicode aDeliEnd = ']'; //fuer die form
+
+#define POS_GRF 0
+#define POS_OLE 1
+#define POS_TABLE 2
+#define POS_FRAME 3
+
+#define IDX_FILE_EXTENSION String::CreateFromAscii( \
+ RTL_CONSTASCII_STRINGPARAM( "*.sdi" ))
+#define INDEX_SECTION_NAME String::CreateFromAscii( \
+ RTL_CONSTASCII_STRINGPARAM( "IndexSection_" ))
+
+#define TOX_PAGE_SELECT 1
+#define TOX_PAGE_ENTRY 2
+#define TOX_PAGE_STYLES 3
+
+//-----------------------------------------------------------------------------
+struct SwIndexSections_Impl
+{
+ uno::Reference< text::XTextSection > xContainerSection;
+ uno::Reference< text::XDocumentIndex > xDocumentIndex;
+};
+
+/* -----------------14.06.99 13:10-------------------
+
+ --------------------------------------------------*/
+String lcl_CreateAutoMarkFileDlg( Window* pParent, const String& rURL,
+ const String& rFileString, sal_Bool bOpen )
+{
+ String sRet;
+ SfxFileDialog* pFileDlg = new SfxFileDialog( pParent,
+ bOpen ? WB_OPEN | WB_3DLOOK
+ : WB_SAVEAS | WB_3DLOOK );
+ pFileDlg->DisableSaveLastDirectory();
+ pFileDlg->SetHelpId(HID_FILEDLG_SRCVIEW);
+ {
+ String sCurFltr( IDX_FILE_EXTENSION );
+ pFileDlg->AddFilter( rFileString, sCurFltr );
+ pFileDlg->SetCurFilter( sCurFltr );
+ }
+
+ String& rLastSaveDir = (String&)SFX_APP()->GetLastSaveDirectory();
+ String sSaveDir = rLastSaveDir;
+
+ if( rURL.Len() )
+ pFileDlg->SetPath( rURL );
+ else
+ pFileDlg->SetPath( SFX_INIMANAGER()->Get(SFX_KEY_USERCONFIG_PATH) );
+
+ if( RET_OK == pFileDlg->Execute())
+ sRet = pFileDlg->GetPath();
+
+ delete pFileDlg;
+ rLastSaveDir = sSaveDir;
+
+ return sRet;
+}
+/* -----------------------------19.01.00 11:09--------------------------------
+
+ ---------------------------------------------------------------------------*/
+struct AutoMarkEntry
+{
+ String sSearch;
+ String sAlternative;
+ String sPrimKey;
+ String sSecKey;
+ String sComment;
+ sal_Bool bCase;
+ sal_Bool bWord;
+
+ AutoMarkEntry() :
+ bCase(sal_False),
+ bWord(sal_False){}
+};
+typedef AutoMarkEntry* AutoMarkEntryPtr;
+SV_DECL_PTRARR_DEL(AutoMarkEntryArr, AutoMarkEntryPtr, 0, 4);
+SV_IMPL_PTRARR(AutoMarkEntryArr, AutoMarkEntryPtr);
+
+class SwEntryBrowseBox : public DbBrowseBox
+{
+ Edit aCellEdit;
+ DbCheckBoxCtrl aCellCheckBox;
+
+ String sSearch;
+ String sAlternative;
+ String sPrimKey;
+ String sSecKey;
+ String sComment;
+ String sCaseSensitive;
+ String sWordOnly;
+ String sYes;
+ String sNo;
+
+ AutoMarkEntryArr aEntryArr;
+
+ DbCellControllerRef xController;
+ DbCellControllerRef xCheckController;
+
+ long nCurrentRow;
+ sal_Bool bModified;
+
+ const String& GetCellText( long nRow, long nColumn ) const;
+ void SetModified() {bModified = sal_True;}
+
+protected:
+ virtual sal_Bool SeekRow( long nRow );
+// virtual void PaintField( OutputDevice& rDev, const awt::Rectangle& rRect,
+// sal_uInt16 nColumnId ) const;
+ virtual void PaintCell(OutputDevice& rDev, const Rectangle& rRect, sal_uInt16 nColId) const;
+ virtual void InitController(DbCellControllerRef& rController, long nRow, sal_uInt16 nCol);
+ virtual DbCellController* GetController(long nRow, sal_uInt16 nCol);
+ virtual sal_Bool SaveModified();
+
+public:
+ SwEntryBrowseBox(Window* pParent, const ResId& rId,
+ BrowserMode nMode = 0 );
+ void ReadEntries(SvStream& rInStr);
+ void WriteEntries(SvStream& rOutStr);
+
+ sal_Bool IsModified()const;
+};
+
+class SwAutoMarkDlg_Impl : public ModalDialog
+{
+ OKButton aOKPB;
+ CancelButton aCancelPB;
+ HelpButton aHelpPB;
+
+ SwEntryBrowseBox aEntriesBB;
+ GroupBox aEntriesGB;
+
+ String sAutoMarkURL;
+ const String sAutoMarkType;
+
+ sal_Bool bCreateMode;
+
+ DECL_LINK(OkHdl, OKButton*);
+public:
+ SwAutoMarkDlg_Impl(Window* pParent, const String& rAutoMarkURL,
+ const String& rAutoMarkType, sal_Bool bCreate);
+ ~SwAutoMarkDlg_Impl();
+
+};
+/* -----------------04.11.99 11:02-------------------
+
+ --------------------------------------------------*/
+sal_uInt16 CurTOXType::GetFlatIndex() const
+{
+ sal_uInt16 nRet = eType;
+ if(eType == TOX_USER && nIndex)
+ {
+ nRet = TOX_AUTHORITIES + nIndex;
+ }
+ return nRet;
+}
+/* -----------------29.11.99 09:04-------------------
+
+ --------------------------------------------------*/
+#if 0
+IdxExampleResource::IdxExampleResource(const ResId& rResId) :
+ Resource(rResId),
+ aTextArray(ResId(ARR_TEXT))
+{
+ FreeResource();
+}
+#endif
+/*************************************************************************
+
+*************************************************************************/
+#define EDIT_MINWIDTH 15
+
+/* -----------------14.06.99 12:12-------------------
+
+ --------------------------------------------------*/
+SwMultiTOXTabDialog::SwMultiTOXTabDialog(Window* pParent, const SfxItemSet& rSet,
+ SwWrtShell &rShell,
+ const SwTOXBase* pCurTOX,
+ sal_uInt16 nToxType, sal_Bool bGlobal) :
+ SfxTabDialog( pParent, SW_RES(DLG_MULTI_TOX), &rSet),
+ aExampleContainerWIN(this, ResId(WIN_EXAMPLE)),
+ aExampleWIN( &aExampleContainerWIN, 0 ),
+ aShowExampleCB( this, ResId(CB_SHOWEXAMPLE)),
+ sUserDefinedIndex(ResId(ST_USERDEFINEDINDEX)),
+ pMgr( new SwTOXMgr( &rShell ) ),
+ rSh(rShell),
+ nInitialTOXType(nToxType),
+ bEditTOX(sal_False),
+ pExampleFrame(0),
+ bExampleCreated(sal_False),
+ bGlobalFlag(bGlobal)
+{
+ FreeResource();
+ aExampleWIN.SetPosSizePixel(aExampleContainerWIN.GetPosPixel(),
+ aExampleContainerWIN.GetSizePixel());
+ eCurrentTOXType.eType = TOX_CONTENT;
+ eCurrentTOXType.nIndex = 0;
+
+ sal_uInt16 nUserTypeCount = rSh.GetTOXTypeCount(TOX_USER);
+ nTypeCount = nUserTypeCount + 6;
+ pFormArr = new SwForm*[nTypeCount];
+ pDescArr = new SwTOXDescription*[nTypeCount];
+ pxIndexSectionsArr = new SwIndexSections_Impl*[nTypeCount];
+ //the standard user index is on position TOX_USER
+ //all user user indexes follow after position TOX_AUTHORITIES
+ if(pCurTOX)
+ {
+ bEditTOX = sal_True;
+ }
+ for(int i = nTypeCount - 1; i > -1; i--)
+ {
+ pFormArr[i] = 0;
+ pDescArr[i] = 0;
+ pxIndexSectionsArr[i] = new SwIndexSections_Impl;
+ if(pCurTOX)
+ {
+ eCurrentTOXType.eType = pCurTOX->GetType();
+ sal_uInt16 nArrayIndex = eCurrentTOXType.eType;
+ if(eCurrentTOXType.eType == TOX_USER)
+ {
+ //which user type is it?
+ for(sal_uInt16 nUser = 0; nUser < nUserTypeCount; nUser++)
+ {
+ const SwTOXType* pTemp = rSh.GetTOXType(TOX_USER, nUser);
+ if(pCurTOX->GetTOXType() == pTemp)
+ {
+ eCurrentTOXType.nIndex = nUser;
+ nArrayIndex = nUser > 0 ? TOX_AUTHORITIES + nUser : TOX_USER;
+ break;
+ }
+ }
+ }
+ pFormArr[nArrayIndex] = new SwForm(pCurTOX->GetTOXForm());
+ pDescArr[nArrayIndex] = CreateTOXDescFromTOXBase(pCurTOX);
+ if(TOX_AUTHORITIES == eCurrentTOXType.eType)
+ {
+ const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
+ rSh.GetFldType(RES_AUTHORITY, aEmptyStr);
+ if(pFType)
+ {
+ String sBrackets(pFType->GetPrefix());
+ sBrackets += pFType->GetSuffix();
+ pDescArr[nArrayIndex]->SetAuthBrackets(sBrackets);
+ pDescArr[nArrayIndex]->SetAuthSequence(pFType->IsSequence());
+ }
+ else
+ {
+ pDescArr[nArrayIndex]->SetAuthBrackets(C2S("[]"));
+ }
+ }
+ }
+ }
+
+ AddTabPage(TP_TOX_SELECT, SwTOXSelectTabPage::Create, 0);
+ AddTabPage(TP_TOX_STYLES, SwTOXStylesTabPage::Create, 0);
+ AddTabPage(TP_COLUMN, SwColumnPage::Create, 0);
+ AddTabPage(TP_BACKGROUND,SvxBackgroundTabPage::Create, 0);
+ AddTabPage(TP_TOX_ENTRY, SwTOXEntryTabPage::Create, 0);
+ if(!pCurTOX)
+ SetCurPageId(TP_TOX_SELECT);
+
+ aShowExampleCB.SetClickHdl(LINK(this, SwMultiTOXTabDialog, ShowPreviewHdl));
+
+ aShowExampleCB.Check( SW_MOD()->GetModuleConfig()->IsShowIndexPreview());
+ SetViewAlign( WINDOWALIGN_LEFT );
+ // SetViewWindow does not work if the dialog is visible!
+ if(!aShowExampleCB.IsChecked())
+ {
+ SetViewWindow( &aExampleContainerWIN );
+ }
+ Point aOldPos = GetPosPixel();
+ ShowPreviewHdl(0);
+ Point aNewPos = GetPosPixel();
+ //72040: initial position may be left of the view - that has to be corrected
+ if(aNewPos.X() < 0)
+ SetPosPixel(aOldPos);
+}
+/*-- 14.06.99 13:11:40---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwMultiTOXTabDialog::~SwMultiTOXTabDialog()
+{
+ SW_MOD()->GetModuleConfig()->SetShowIndexPreview(aShowExampleCB.IsChecked());
+
+ for(sal_uInt16 i = 0; i < nTypeCount; i++)
+ {
+ delete pFormArr[i];
+ delete pDescArr[i];
+ delete pxIndexSectionsArr[i];
+ }
+ delete pxIndexSectionsArr;
+
+ delete pFormArr;
+ delete pDescArr;
+ delete pMgr;
+ delete pExampleFrame;
+}
+/*-- 14.06.99 13:11:40---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwMultiTOXTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
+{
+ if( TP_BACKGROUND == nId )
+
+ ((SvxBackgroundTabPage&)rPage).ShowSelector();
+ else if(TP_COLUMN == nId )
+ {
+ const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)GetInputSetImpl()->Get(RES_FRM_SIZE);
+
+ ((SwColumnPage&)rPage).SetPageWidth(rSize.GetWidth());
+ }
+ else if(TP_TOX_ENTRY == nId)
+ ((SwTOXEntryTabPage&)rPage).SetWrtShell(rSh);
+ if(TP_TOX_SELECT == nId)
+ {
+ ((SwTOXSelectTabPage&)rPage).SetWrtShell(rSh);
+ if(USHRT_MAX != nInitialTOXType)
+ ((SwTOXSelectTabPage&)rPage).SelectType((TOXTypes)nInitialTOXType);
+ }
+}
+/*-- 14.06.99 13:11:40---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+short SwMultiTOXTabDialog::Ok()
+{
+ short nRet = SfxTabDialog::Ok();
+ SwTOXDescription& rDesc = GetTOXDescription(eCurrentTOXType);
+ SwTOXBase aNewDef(*rSh.GetDefaultTOXBase( eCurrentTOXType.eType, sal_True ));
+
+ sal_uInt16 nIndex = eCurrentTOXType.eType;
+ if(eCurrentTOXType.eType == TOX_USER && eCurrentTOXType.nIndex)
+ {
+ nIndex = TOX_AUTHORITIES + eCurrentTOXType.nIndex;
+ }
+
+ if(pFormArr[nIndex])
+ {
+ rDesc.SetForm(*pFormArr[nIndex]);
+ aNewDef.SetTOXForm(*pFormArr[nIndex]);
+ }
+ rDesc.ApplyTo(aNewDef);
+ if(!bGlobalFlag)
+ pMgr->UpdateOrInsertTOX(
+ rDesc, 0, GetOutputItemSet());
+
+ if(!eCurrentTOXType.nIndex)
+ rSh.SetDefaultTOXBase(aNewDef);
+
+ return nRet;
+}
+/* -----------------16.06.99 11:59-------------------
+
+ --------------------------------------------------*/
+SwForm* SwMultiTOXTabDialog::GetForm(CurTOXType eType)
+{
+ sal_uInt16 nIndex = eType.GetFlatIndex();
+ if(!pFormArr[nIndex])
+ pFormArr[nIndex] = new SwForm(eType.eType);
+ return pFormArr[nIndex];
+}
+/* -----------------09.09.99 11:29-------------------
+
+ --------------------------------------------------*/
+SwTOXDescription& SwMultiTOXTabDialog::GetTOXDescription(CurTOXType eType)
+{
+ sal_uInt16 nIndex = eType.GetFlatIndex();
+ if(!pDescArr[nIndex])
+ {
+ const SwTOXBase* pDef = rSh.GetDefaultTOXBase( eType.eType );
+ if(pDef)
+ pDescArr[nIndex] = CreateTOXDescFromTOXBase(pDef);
+ else
+ {
+ pDescArr[nIndex] = new SwTOXDescription(eType.eType);
+ if(eType.eType == TOX_USER)
+ pDescArr[nIndex]->SetTitle(sUserDefinedIndex);
+ else
+ pDescArr[nIndex]->SetTitle(
+ rSh.GetTOXType(eType.eType, 0)->GetTypeName());
+ }
+ if(TOX_AUTHORITIES == eType.eType)
+ {
+ const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
+ rSh.GetFldType(RES_AUTHORITY, aEmptyStr);
+ if(pFType)
+ {
+ String sBrackets(pFType->GetPrefix());
+ sBrackets += pFType->GetSuffix();
+ pDescArr[nIndex]->SetAuthBrackets(sBrackets);
+ pDescArr[nIndex]->SetAuthSequence(pFType->IsSequence());
+ }
+ else
+ {
+ pDescArr[nIndex]->SetAuthBrackets(C2S("[]"));
+ }
+ }
+ }
+ return *pDescArr[nIndex];
+}
+/* -----------------09.09.99 11:36-------------------
+
+ --------------------------------------------------*/
+SwTOXDescription* SwMultiTOXTabDialog::CreateTOXDescFromTOXBase(
+ const SwTOXBase*pCurTOX)
+{
+ SwTOXDescription * pDesc = new SwTOXDescription(pCurTOX->GetType());
+ for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
+ pDesc->SetStyleNames(pCurTOX->GetStyleNames(i), i);
+ pDesc->SetAutoMarkURL(rSh.GetTOIAutoMarkURL());
+ pDesc->SetTitle(pCurTOX->GetTitle());
+
+
+ pDesc->SetContentOptions(pCurTOX->GetCreateType());
+ if(pDesc->GetTOXType() == TOX_INDEX)
+ pDesc->SetIndexOptions(pCurTOX->GetOptions());
+ pDesc->SetMainEntryCharStyle(pCurTOX->GetMainEntryCharStyle());
+ if(pDesc->GetTOXType() != TOX_INDEX)
+ pDesc->SetLevel(pCurTOX->GetLevel());
+ pDesc->SetCreateFromObjectNames(pCurTOX->IsFromObjectNames());
+ pDesc->SetSequenceName(pCurTOX->GetSequenceName());
+ pDesc->SetCaptionDisplay(pCurTOX->GetCaptionDisplay());
+ pDesc->SetFromChapter(pCurTOX->IsFromChapter());
+ pDesc->SetReadonly(pCurTOX->IsProtected());
+ pDesc->SetOLEOptions(pCurTOX->GetOLEOptions());
+ pDesc->SetLevelFromChapter(pCurTOX->IsLevelFromChapter());
+ return pDesc;
+}
+
+/* -----------------------------29.12.99 09:53--------------------------------
+
+ ---------------------------------------------------------------------------*/
+
+IMPL_LINK( SwMultiTOXTabDialog, ShowPreviewHdl, CheckBox *, pBox )
+{
+ if(aShowExampleCB.IsChecked())
+ {
+ if(!pExampleFrame && !bExampleCreated)
+ {
+ bExampleCreated = sal_True;
+ SfxIniManager* pIniMan = SFX_INIMANAGER();
+ const sal_Unicode cSearch = SFX_SEARCHPATH_DELIMITER;
+ const String sAccess = INET_PATH_TOKEN;
+
+ String sPath(pIniMan->Get(SFX_KEY_TEMPLATE_PATH));
+ sal_uInt16 nTokenCount = sPath.GetTokenCount(cSearch);
+ sal_uInt16 nToken = 0;
+ sal_Bool bExist = sal_False;
+ String sFile = sAccess;
+ sFile.AppendAscii( RTL_CONSTASCII_STRINGPARAM("internal"));
+ sFile += sAccess;
+ sFile.AppendAscii( RTL_CONSTASCII_STRINGPARAM("idxexample.sdw"));
+ String sURL;
+ do
+ {
+ sURL = sPath.GetToken(nToken, cSearch);
+ sURL = URIHelper::SmartRelToAbs(sURL);
+ sURL += sFile;
+ nToken++;
+ try
+ {
+ ::ucb::Content aTestContent(
+ sURL,
+ uno::Reference< XCommandEnvironment >());
+
+ uno::Any aAny = aTestContent.getPropertyValue( OUString::createFromAscii("IsDocument") );
+ bExist = aAny.hasValue() ? *(sal_Bool*)aAny.getValue() : FALSE;
+ }
+ catch(...)
+ {
+ bExist = FALSE;
+ }
+
+ }while(!bExist && nToken < nTokenCount);
+
+ if(!bExist)
+ {
+ String sInfo(SW_RES(STR_FILE_NOT_FOUND));
+ sInfo.SearchAndReplaceAscii("%1", sFile);
+ sInfo.SearchAndReplaceAscii("%2", sPath);
+ InfoBox aInfo(GetParent(), sInfo);
+ aInfo.Execute();
+ }
+ else
+ {
+ Link aLink(LINK(this, SwMultiTOXTabDialog, CreateExample_Hdl));
+ pExampleFrame = new SwOneExampleFrame(
+ aExampleWIN, EX_SHOW_ONLINE_LAYOUT, &aLink, &sURL);
+
+ if(!pExampleFrame->IsServiceAvailable())
+ {
+ pExampleFrame->CreateErrorMessage(0);
+ }
+ }
+ aShowExampleCB.Show(pExampleFrame && pExampleFrame->IsServiceAvailable());
+ }
+ }
+ sal_Bool bSetViewWindow = aShowExampleCB.IsChecked()
+ && pExampleFrame && pExampleFrame->IsServiceAvailable();
+ aExampleContainerWIN.Show(bSetViewWindow);
+
+ SetViewWindow( bSetViewWindow ? &aExampleContainerWIN : 0);
+ Point aPos = GetPosPixel();
+ Size aSize = GetSizePixel();
+ if(pBox)
+ AdjustLayout();
+ long nDiffWidth = GetSizePixel().Width() - aSize.Width();
+ aPos.X() -= nDiffWidth;
+ SetPosPixel(aPos);
+
+ return 0;
+}
+//-----------------------------------------------------------------------------
+IMPL_LINK( SwMultiTOXTabDialog, CreateExample_Hdl, void*, EMPTYARG )
+{
+ try
+ {
+ uno::Reference< frame::XModel > & xModel = pExampleFrame->GetModel();
+ uno::Reference< lang::XUnoTunnel > xDocTunnel(xModel, uno::UNO_QUERY);
+ SwXTextDocument* pDoc = (SwXTextDocument*)xDocTunnel->getSomething(SwXTextDocument::getUnoTunnelId());
+
+ if( pDoc )
+ pDoc->GetDocShell()->LoadStyles( *rSh.GetView().GetDocShell() );
+
+ uno::Reference< lang::XMultiServiceFactory > xFact(
+ xModel, uno::UNO_QUERY);
+ uno::Reference< text::XTextCursor > & xCrsr =
+ pExampleFrame->GetTextCursor();
+
+ uno::Reference< text::XTextSectionsSupplier > xSectionSupplier(
+ xModel, uno::UNO_QUERY);
+ uno::Reference< container::XNameAccess > xSections =
+ xSectionSupplier->getTextSections();
+
+ String sSectionName( INDEX_SECTION_NAME );
+ for(int i = 0; i < 7; ++i )
+ {
+ String sTmp( sSectionName ); sTmp += String::CreateFromInt32(i);
+ uno::Any aSection = xSections->getByName( sTmp );
+ pxIndexSectionsArr[i]->xContainerSection = * (uno::Reference<
+ text::XTextSection > *)aSection.getValue();
+ }
+ uno::Reference< text::XDocumentIndexesSupplier > xIdxSupp(xModel, uno::UNO_QUERY);
+ uno::Reference< container::XIndexAccess > xIdxs = xIdxSupp->getDocumentIndexes();
+ int n = xIdxs->getCount();
+ while(n)
+ {
+ n--;
+ uno::Any aIdx = xIdxs->getByIndex(n);
+ uno::Reference< text::XDocumentIndex > xIdx = * (uno::Reference< text::XDocumentIndex > *)aIdx.getValue();
+ xIdx->dispose();
+ }
+ CreateOrUpdateExample(eCurrentTOXType.eType);
+ }
+ catch(...)
+ {
+ DBG_ERROR("::CreateExample() - exception caught")
+ }
+ return 0;
+}
+/* -----------------04.11.99 11:28-------------------
+
+ --------------------------------------------------*/
+void lcl_SetProp( uno::Reference< XPropertySetInfo > & xInfo,
+ uno::Reference< XPropertySet > & xProps,
+ const char* rPropName,
+ const String& rValue)
+{
+ OUString uPropName(C2U(rPropName));
+ if(xInfo->hasPropertyByName(uPropName))
+ {
+ uno::Any aValue;
+ aValue <<= OUString(rValue);
+ xProps->setPropertyValue(uPropName, aValue);
+ }
+}
+void lcl_SetProp( uno::Reference< XPropertySetInfo > & xInfo,
+ uno::Reference< beans::XPropertySet > & xProps,
+ const char* rPropName, sal_Int16 nValue)
+{
+ OUString uPropName(C2U(rPropName));
+ if(xInfo->hasPropertyByName(uPropName))
+ {
+ uno::Any aValue;
+ aValue <<= nValue;
+ xProps->setPropertyValue(uPropName, aValue);
+ }
+}
+/* --------------------------------------------------
+
+ --------------------------------------------------*/
+void lcl_SetBOOLProp( uno::Reference< beans::XPropertySetInfo > & xInfo,
+ uno::Reference< beans::XPropertySet > & xProps,
+ const char* rPropName, sal_Bool bValue)
+{
+ OUString uPropName(C2U(rPropName));
+ if(xInfo->hasPropertyByName(uPropName))
+ {
+ uno::Any aValue;
+ aValue.setValue(&bValue, ::getCppuBooleanType());
+ xProps->setPropertyValue(uPropName, aValue);
+ }
+}
+/* --------------------------------------------------
+
+ --------------------------------------------------*/
+void SwMultiTOXTabDialog::CreateOrUpdateExample(
+ sal_uInt16 nTOXIndex, sal_uInt16 nPage, sal_uInt16 nCurrentLevel)
+{
+ if(!pExampleFrame || !pExampleFrame->IsInitialized())
+ return;
+
+ const char* __FAR_DATA IndexServiceNames[] =
+ {
+ "com.sun.star.text.DocumentIndex",
+ "com.sun.star.text.UserIndex",
+ "com.sun.star.text.ContentIndex",
+ "com.sun.star.text.IllustrationsIndex",
+ "com.sun.star.text.ObjectIndex",
+ "com.sun.star.text.TableIndex",
+ "com.sun.star.text.Bibliography"
+ };
+
+ try
+ {
+ DBG_ASSERT(pxIndexSectionsArr[nTOXIndex] &&
+ pxIndexSectionsArr[nTOXIndex]->xContainerSection.is(),
+ "Section not created")
+ uno::Reference< frame::XModel > & xModel = pExampleFrame->GetModel();
+ sal_Bool bInitialCreate = sal_True;
+ if(!pxIndexSectionsArr[nTOXIndex]->xDocumentIndex.is())
+ {
+ bInitialCreate = sal_True;
+ uno::Reference< text::XTextRange > xAnchor = pxIndexSectionsArr[nTOXIndex]->xContainerSection->getAnchor();
+ xAnchor = xAnchor->getStart();
+ uno::Reference< text::XTextCursor > xCrsr = xAnchor->getText()->createTextCursorByRange(xAnchor);
+
+ uno::Reference< lang::XMultiServiceFactory > xFact(xModel, uno::UNO_QUERY);
+
+ String sIndexTypeName;
+ sIndexTypeName.AssignAscii( IndexServiceNames[
+ nTOXIndex <= TOX_AUTHORITIES ? nTOXIndex : TOX_USER] );
+ pxIndexSectionsArr[nTOXIndex]->xDocumentIndex = uno::Reference< text::XDocumentIndex > (xFact->createInstance(
+ sIndexTypeName), uno::UNO_QUERY);
+ uno::Reference< text::XTextContent > xContent(pxIndexSectionsArr[nTOXIndex]->xDocumentIndex, uno::UNO_QUERY);
+ uno::Reference< text::XTextRange > xRg(xCrsr, uno::UNO_QUERY);
+ xCrsr->getText()->insertTextContent(xRg, xContent, sal_False);
+ }
+ OUString uIsVisible(C2U(UNO_NAME_IS_VISIBLE));
+ for(sal_uInt16 i = 0 ; i <= TOX_AUTHORITIES; i++)
+ {
+ uno::Reference< beans::XPropertySet > xSectPr(pxIndexSectionsArr[i]->xContainerSection, uno::UNO_QUERY);
+ uno::Any aVal;
+
+ if(xSectPr.is())
+ {
+ BOOL bTemp = i == nTOXIndex;
+ aVal.setValue(&bTemp, ::getBooleanCppuType());
+ xSectPr->setPropertyValue(uIsVisible, aVal);
+ }
+ }
+ // set properties
+ uno::Reference< beans::XPropertySet > xIdxProps(pxIndexSectionsArr[nTOXIndex]->xDocumentIndex, uno::UNO_QUERY);
+ uno::Reference< beans::XPropertySetInfo > xInfo = xIdxProps->getPropertySetInfo();
+ SwTOXDescription& rDesc = GetTOXDescription(eCurrentTOXType);
+ sal_uInt16 nIdxOptions = rDesc.GetIndexOptions();
+ if(bInitialCreate || !nPage || nPage == TOX_PAGE_SELECT)
+ {
+ //title
+ if(rDesc.GetTitle())
+ lcl_SetProp(xInfo, xIdxProps, UNO_NAME_TITLE, *rDesc.GetTitle());
+
+ //stylenames
+ sal_uInt16 nContentOptions = rDesc.GetContentOptions();
+ if(xInfo->hasPropertyByName(C2U(UNO_NAME_LEVEL_PARAGRAPH_STYLES)))
+ {
+ sal_Bool bOn = 0!=(nContentOptions&TOX_TEMPLATE );
+ uno::Any aStyleNames(xIdxProps->getPropertyValue(C2U(UNO_NAME_LEVEL_PARAGRAPH_STYLES)));
+ uno::Reference< container::XIndexReplace > xAcc =
+ *(uno::Reference< container::XIndexReplace > *)aStyleNames.getValue();
+
+ for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
+ {
+ String sLevel;
+ if(bOn)
+ sLevel = rDesc.GetStyleNames(i);
+ sal_uInt16 nStyles = sLevel.GetTokenCount(TOX_STYLE_DELIMITER);
+ uno::Sequence<OUString> aStyles(nStyles);
+ OUString* pArr = aStyles.getArray();
+ for(sal_uInt16 nStyle = 0; nStyle < nStyles; nStyle++)
+ pArr[nStyle] = sLevel.GetToken(nStyle, TOX_STYLE_DELIMITER);
+ uno::Any aAny(&aStyles, ::getCppuType((uno::Sequence<OUString>*)0));
+ xAcc->replaceByIndex(i, aAny);
+ }
+ }
+ lcl_SetProp(xInfo, xIdxProps, UNO_NAME_LEVEL, (sal_Int16)rDesc.GetLevel());
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_MARKS, 0!=(nContentOptions&TOX_MARK ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_OUTLINE, 0!=(nContentOptions&TOX_OUTLINELEVEL));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_EMBEDDED_OBJECTS,0!=(nContentOptions&TOX_OLE ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_TABLES , 0!=(nContentOptions&TOX_TABLE ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_GRAPHIC_OBJECTS, 0!=(nContentOptions&TOX_GRAPHIC ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_TEXT_FRAMES, 0!=(nContentOptions&TOX_FRAME ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_LABELS, 0!=(nContentOptions&TOX_SEQUENCE ));
+
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_CHAPTER, rDesc.IsFromChapter());
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_IS_PROTECTED, rDesc.IsReadonly());
+
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_COMBINED_ENTRIES, 0 != (nIdxOptions&TOI_SAME_ENTRY ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_P_P, 0 != (nIdxOptions&TOI_FF ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_IS_CASE_SENSITIVE, 0 != (nIdxOptions&TOI_CASE_SENSITIVE ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_KEY_AS_ENTRY, 0 != (nIdxOptions&TOI_KEY_AS_ENTRY ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_ALPHABETICAL_SEPARATORS, 0 != (nIdxOptions&TOI_ALPHA_DELIMITTER));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_DASH, 0 != (nIdxOptions&TOI_DASH ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_UPPER_CASE, 0 != (nIdxOptions&TOI_INITIAL_CAPS ));
+
+ lcl_SetProp(xInfo, xIdxProps, UNO_NAME_LABEL_CATEGORY, rDesc.GetSequenceName());
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_LABELS, !rDesc.IsCreateFromObjectNames());
+
+ sal_Int16 nSet = text::ChapterFormat::NAME_NUMBER;
+ switch (rDesc.GetCaptionDisplay())
+ {
+ case CAPTION_COMPLETE: nSet = text::ChapterFormat::NAME_NUMBER;break;
+ case CAPTION_NUMBER : nSet = text::ChapterFormat::NUMBER; break;
+ case CAPTION_TEXT : nSet = text::ChapterFormat::NAME; break;
+ }
+ lcl_SetProp(xInfo, xIdxProps, UNO_NAME_LABEL_DISPLAY_TYPE, nSet);
+
+ sal_uInt16 nOLEOptions = rDesc.GetOLEOptions();
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_STAR_MATH, 0 != (TOO_MATH &nOLEOptions ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_STAR_CHART, 0 != (TOO_CHART &nOLEOptions ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_STAR_IMAGE, 0 != (TOO_IMAGE &nOLEOptions ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_STAR_CALC, 0 != (TOO_CALC &nOLEOptions ));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_STAR_DRAW, 0 != (TOO_DRAW_IMPRESS&nOLEOptions));
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_OTHER_EMBEDDED_OBJECTS, 0 != (TOO_OTHER|nOLEOptions ));
+
+ //lcl_SetBOOLProp(xInfo, xIdxProps, , rDesc.IsLevelFromChapter());
+ }
+ const SwForm* pForm = GetForm(eCurrentTOXType);
+ if(bInitialCreate || !nPage || nPage == TOX_PAGE_ENTRY)
+ {
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_IS_COMMA_SEPARATED, pForm->IsCommaSeparated());
+ lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_ALPHABETICAL_SEPARATORS, 0 != (nIdxOptions&TOI_ALPHA_DELIMITTER));
+ if(nCurrentLevel < pForm->GetFormMax() &&
+ xInfo->hasPropertyByName(C2U(UNO_NAME_LEVEL_FORMAT)))
+ {
+ String sTokenType;
+ uno::Sequence< beans::PropertyValues> aSequPropVals(10);
+ long nTokenIndex = 0;
+ long nParamCount = 2;
+ sal_Bool bTabRightAligned = sal_False;
+ SwFormTokenEnumerator aTokenEnum(pForm->GetPattern(nCurrentLevel));
+ while(aTokenEnum.HasNextToken())
+ {
+ if( aSequPropVals.getLength() <= nTokenIndex)
+ aSequPropVals.realloc(nTokenIndex + 10);
+
+ SwFormToken aToken = aTokenEnum.GetNextToken();
+ switch(aToken.eTokenType)
+ {
+ case TOKEN_ENTRY_NO :
+ sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM(
+ "TokenEntryNumber"));
+ // fuer Inhaltsverzeichnis Numerierung
+ break;
+ case TOKEN_ENTRY_TEXT :
+ case TOKEN_ENTRY :
+ sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM(
+ "TokenEntryText"));
+ break;
+ case TOKEN_TAB_STOP :
+ nParamCount += 3;
+ sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM(
+ "TokenTabStop"));
+ break;
+ case TOKEN_TEXT :
+ sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM(
+ "TokenText"));
+ nParamCount += 1;
+ break;
+ case TOKEN_PAGE_NUMS :
+ sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM(
+ "TokenPageNumber"));
+ break;
+ case TOKEN_CHAPTER_INFO :
+ sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM(
+ "TokenChapterInfo"));
+ {
+ aToken.nChapterFormat;
+ }
+ break;
+ case TOKEN_LINK_START :
+ sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM(
+ "TokenHyperlinkStart"));
+ break;
+ case TOKEN_LINK_END :
+ sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM(
+ "TokenHyperlinkEnd"));
+ break;
+ case TOKEN_AUTHORITY :
+ {
+ sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM(
+ "TokenBibliographyDataField"));
+ ToxAuthorityField eField = (ToxAuthorityField)aToken.nAuthorityField;
+ }
+ break;
+ }
+ beans::PropertyValues aPropVals(nParamCount);
+ beans::PropertyValue* pPropValArr = aPropVals.getArray();
+ pPropValArr[0].Name = C2U("TokenType");
+ pPropValArr[0].Value <<= OUString(sTokenType);
+ pPropValArr[1].Name = C2U("CharacterStyleName");
+ pPropValArr[1].Value <<= OUString(aToken.sCharStyleName);
+ if(TOKEN_TAB_STOP == aToken.eTokenType)
+ {
+ pPropValArr[2].Name = C2U("TabStopRightAligned");
+ BOOL bTemp = SVX_TAB_ADJUST_END == aToken.eTabAlign;
+ pPropValArr[2].Value.setValue(&bTemp, ::getBooleanCppuType());
+ pPropValArr[3].Name = C2U("TabStopFillCharacter");
+ pPropValArr[3].Value <<= OUString(aToken.cTabFillChar);
+ pPropValArr[4].Name = C2U("TabStopPosition");
+ SwTwips nTempPos = aToken.nTabStopPosition >= 0 ?
+ aToken.nTabStopPosition : 0;
+ nTempPos = TWIP_TO_MM100(nTempPos);
+ pPropValArr[4].Value <<= (sal_Int32)nTempPos;
+ }
+ else if(TOKEN_TEXT == aToken.eTokenType)
+ {
+ pPropValArr[2].Name = C2U("Text");
+ pPropValArr[2].Value <<= OUString(aToken.sText);
+ }
+ beans::PropertyValues* pValues = aSequPropVals.getArray();
+ pValues[nTokenIndex] = aPropVals;
+ nTokenIndex++;
+ }
+ aSequPropVals.realloc(nTokenIndex);
+
+ uno::Any aFormatAccess = xIdxProps->getPropertyValue(C2U(UNO_NAME_LEVEL_FORMAT));
+ DBG_ASSERT(aFormatAccess.getValueType() == ::getCppuType((uno::Reference<container::XIndexReplace>*)0),
+ "wrong property type")
+
+
+ uno::Reference< container::XIndexReplace > xFormatAccess =
+ *(uno::Reference< container::XIndexReplace > *)aFormatAccess.getValue();
+ uno::Any aLevelProp(&aSequPropVals, ::getCppuType((uno::Sequence<beans::PropertyValues>*)0));
+ xFormatAccess->replaceByIndex(nCurrentLevel, aLevelProp);
+ }
+ }
+ if(bInitialCreate || !nPage || nPage == TOX_PAGE_STYLES)
+ {
+ lcl_SetProp(xInfo, xIdxProps, "ParaStyleHeading", pForm->GetTemplate(0));
+ sal_uInt16 nOffset = 0;
+ sal_uInt16 nEndLevel = 2;
+ switch(eCurrentTOXType.eType)
+ {
+ case TOX_INDEX:
+ {
+ nOffset = 1;
+ nEndLevel = 4;
+ lcl_SetProp(xInfo, xIdxProps, "ParaStyleSeparator", pForm->GetTemplate(1));
+ }
+ break;
+ case TOX_CONTENT :
+ nEndLevel = 11;
+ break;
+
+ }
+ for(sal_uInt16 i = 1; i < nEndLevel; i++)
+ {
+ String sPropName(C2S("ParaStyleLevel"));
+ sPropName += String::CreateFromInt32( i );
+ lcl_SetProp(xInfo,
+ xIdxProps,
+ ByteString(sPropName, RTL_TEXTENCODING_ASCII_US).GetBuffer(),
+ pForm->GetTemplate(i + nOffset));
+ }
+ }
+/*
+ const String& GetAutoMarkURL() const { return sAutoMarkURL;}
+ const String& GetMainEntryCharStyle() const {return sMainEntryCharStyle;}
+
+ String GetAuthBrackets() const {return sAuthBrackets;}
+ sal_Bool IsAuthSequence() const {return bIsAuthSequence;}
+ sal_Bool IsSortByDocument()const {return bSortByDocument ;}
+
+ SwTOXSortKey GetSortKey1() const {return eSortKey1;}
+ SwTOXSortKey GetSortKey2() const {return eSortKey2;}
+ SwTOXSortKey GetSortKey3() const {return eSortKey3;}
+*/
+ //
+ pxIndexSectionsArr[nTOXIndex]->xDocumentIndex->update();
+
+//#ifdef DEBUG
+// uno::Reference< frame::XStorable > xStor(xModel, uno::UNO_QUERY);
+// String sURL("file:///e|/temp/sw/idxexample.sdw");
+// uno::Sequence< beans::PropertyValue > aArgs(0);
+// xStor->storeToURL(S2U(sURL), aArgs);
+//#endif
+
+ }
+ catch(...)
+ {
+ DBG_ERROR("::CreateExample() - exception caught")
+ }
+}
+/* -----------------05.07.99 09:49-------------------
+
+ --------------------------------------------------*/
+sal_Bool SwMultiTOXTabDialog::IsNoNum(SwWrtShell& rSh, const String& rName)
+{
+ SwTxtFmtColl* pColl = rSh.GetParaStyle(rName);
+ if(pColl && pColl->GetOutlineLevel() == NO_NUMBERING)
+ return sal_True;
+
+ sal_uInt16 nId = rSh.GetPoolId(rName, GET_POOLID_TXTCOLL);
+ if(nId != USHRT_MAX &&
+ rSh.GetTxtCollFromPool(nId)->GetOutlineLevel() == NO_NUMBERING)
+ return sal_True;
+
+ return sal_False;
+}
+/* -----------------14.07.99 16:01-------------------
+
+ --------------------------------------------------*/
+class SwIndexTreeLB : public SvTreeListBox
+{
+ const HeaderBar* pHeaderBar;
+public:
+ SwIndexTreeLB(Window* pWin, const ResId& rResId) :
+ SvTreeListBox(pWin, rResId), pHeaderBar(0){}
+
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual long GetTabPos( SvLBoxEntry*, SvLBoxTab* );
+ void SetHeaderBar(const HeaderBar* pHB) {pHeaderBar = pHB;}
+};
+/* -----------------14.07.99 16:03-------------------
+
+ --------------------------------------------------*/
+long SwIndexTreeLB::GetTabPos( SvLBoxEntry* pEntry, SvLBoxTab* pTab)
+{
+ long nData = (long)pEntry->GetUserData();
+ if(nData != USHRT_MAX)
+ {
+ sal_uInt16 nPos = pHeaderBar->GetItemRect( 101 + nData ).TopLeft().X();
+ nData = nPos;
+ }
+ else
+ nData = 0;
+ nData += pTab->GetPos();
+ return nData;
+}
+/* -----------------25.08.99 11:14-------------------
+
+ --------------------------------------------------*/
+void SwIndexTreeLB::KeyInput( const KeyEvent& rKEvt )
+{
+ SvLBoxEntry* pEntry = FirstSelected();
+ KeyCode aCode = rKEvt.GetKeyCode();
+ sal_Bool bChanged = sal_False;
+ if(pEntry)
+ {
+ long nLevel = (long)pEntry->GetUserData();
+ if(aCode.GetCode() == KEY_ADD )
+ {
+ if(nLevel < MAXLEVEL - 1)
+ nLevel++;
+ else if(nLevel == USHRT_MAX)
+ nLevel = 0;
+ bChanged = sal_True;
+ }
+ else if(aCode.GetCode() == KEY_SUBTRACT)
+ {
+ if(!nLevel)
+ nLevel = USHRT_MAX;
+ else if(nLevel != USHRT_MAX)
+ nLevel--;
+ bChanged = sal_True;
+ }
+ if(bChanged)
+ {
+ pEntry->SetUserData((void*)nLevel);
+ Invalidate();
+ }
+ }
+ if(!bChanged)
+ SvTreeListBox::KeyInput(rKEvt);
+}
+
+/* -----------------16.07.99 10:01-------------------
+
+ --------------------------------------------------*/
+class SwHeaderTree : public Control
+{
+ HeaderBar aStylesHB;
+ SwIndexTreeLB aStylesTLB;
+
+public:
+ SwHeaderTree(Window* pParent, const ResId rResId);
+
+ HeaderBar& GetHeaderBar() {return aStylesHB;}
+ SwIndexTreeLB& GetTreeListBox() { return aStylesTLB;}
+
+ virtual void GetFocus();
+};
+/* -----------------16.07.99 10:11-------------------
+
+ --------------------------------------------------*/
+SwHeaderTree::SwHeaderTree(Window* pParent, const ResId rResId) :
+ Control(pParent, rResId),
+ aStylesHB( this, ResId(HB_STYLES)),
+ aStylesTLB( this, ResId(TLB_STYLES ))
+{
+ FreeResource();
+ aStylesHB.SetStyle(aStylesHB.GetStyle()|WB_BUTTONSTYLE|WB_TABSTOP|WB_BORDER);
+ Size aHBSize(aStylesHB.GetSizePixel());
+ aHBSize.Height() = aStylesHB.CalcWindowSizePixel().Height();
+ aStylesHB.SetSizePixel(aHBSize);
+ aStylesTLB.SetPosPixel(Point(0, aHBSize.Height()));
+ Size aTLBSize(aStylesHB.GetSizePixel());
+ aTLBSize.Height() = GetOutputSizePixel().Height() - aHBSize.Height();
+ aStylesTLB.SetSizePixel(aTLBSize);
+ aStylesTLB.SetHeaderBar(&aStylesHB);
+}
+/* -----------------25.08.99 10:38-------------------
+
+ --------------------------------------------------*/
+void SwHeaderTree::GetFocus()
+{
+ Control::GetFocus();
+ aStylesTLB.GrabFocus();
+}
+/* -----------------13.07.99 15:29-------------------
+
+ --------------------------------------------------*/
+class SwAddStylesDlg_Impl : public SfxModalDialog
+{
+ OKButton aOk;
+ CancelButton aCancel;
+ HelpButton aHelp;
+
+ GroupBox aStylesGB;
+ SwHeaderTree aHeaderTree;
+ PushButton aLeftPB;
+ PushButton aRightPB;
+
+ String sHBFirst;
+ String* pStyleArr;
+
+ DECL_LINK(OkHdl, OKButton*);
+ DECL_LINK(LeftRightHdl, PushButton*);
+ DECL_LINK(HeaderDragHdl, HeaderBar*);
+
+public:
+ SwAddStylesDlg_Impl(Window* pParent, SwWrtShell& rWrtSh, String rStringArr[]);
+ ~SwAddStylesDlg_Impl();
+};
+/* -----------------13.07.99 15:39-------------------
+
+ --------------------------------------------------*/
+SwAddStylesDlg_Impl::SwAddStylesDlg_Impl(Window* pParent,
+ SwWrtShell& rWrtSh, String rStringArr[]) :
+ SfxModalDialog(pParent, SW_RES(DLG_ADD_IDX_STYLES)),
+ pStyleArr(rStringArr),
+ aHeaderTree(this, ResId(TR_HEADER )),
+ aStylesGB( this, ResId(GB_STYLES )),
+ aOk( this, ResId(PB_OK )),
+ aCancel( this, ResId(PB_CANCEL )),
+ aHelp( this, ResId(PB_HELP )),
+ aLeftPB( this, ResId(PB_LEFT )),
+ aRightPB( this, ResId(PB_RIGHT )),
+ sHBFirst( ResId(ST_HB_FIRST))
+{
+ FreeResource();
+
+ aOk.SetClickHdl(LINK(this, SwAddStylesDlg_Impl, OkHdl));
+ aLeftPB.SetClickHdl(LINK(this, SwAddStylesDlg_Impl, LeftRightHdl));
+ aRightPB.SetClickHdl(LINK(this, SwAddStylesDlg_Impl, LeftRightHdl));
+
+ HeaderBar& rHB = aHeaderTree.GetHeaderBar();
+ rHB.SetEndDragHdl(LINK(this, SwAddStylesDlg_Impl, HeaderDragHdl));
+
+ long nWidth = rHB.GetSizePixel().Width();
+ nWidth /= 14;
+ nWidth--;
+ rHB.InsertItem( 100, sHBFirst, 4 * nWidth );
+ for(sal_uInt16 i = 1; i <= MAXLEVEL; i++)
+ rHB.InsertItem( 100 + i, String::CreateFromInt32(i), nWidth );
+ rHB.Show();
+
+ SwIndexTreeLB& rTLB = aHeaderTree.GetTreeListBox();
+ rTLB.SetWindowBits(WB_CLIPCHILDREN|WB_SORT);
+ //aStylesTLB.SetSelectHdl(LINK(this, SwAddStylesDlg_Impl, SelectHdl));
+ rTLB.GetModel()->SetSortMode(SortAscending);
+ for(i = 0; i < MAXLEVEL; ++i)
+ {
+ String sStyles(rStringArr[i]);
+ for(sal_uInt16 nToken = 0; nToken < sStyles.GetTokenCount(TOX_STYLE_DELIMITER); nToken++)
+ {
+ String sTmp(sStyles.GetToken(nToken, TOX_STYLE_DELIMITER));
+ SvLBoxEntry* pEntry = rTLB.InsertEntry(sTmp);
+ pEntry->SetUserData((void*)i);
+ }
+ }
+ // now the other styles
+ //
+ const SwTxtFmtColl *pColl = 0;
+ const sal_uInt16 nSz = rWrtSh.GetTxtFmtCollCount();
+
+ for ( sal_uInt16 j = 0;j < nSz; ++j )
+ {
+ pColl = &rWrtSh.GetTxtFmtColl(j);
+ if(pColl->IsDefault())
+ continue;
+
+ const String& rName = pColl->GetName();
+
+ if(rName.Len() > 0)
+ {
+ SvLBoxEntry* pEntry = rTLB.First();
+ sal_Bool bFound = sal_False;
+ while(pEntry && !bFound)
+ {
+ if(rTLB.GetEntryText(pEntry) == rName)
+ bFound = sal_True;
+ pEntry = rTLB.Next(pEntry);
+ }
+ if(!bFound)
+ {
+ rTLB.InsertEntry(rName)->SetUserData((void*)USHRT_MAX);
+ }
+ }
+ }
+ rTLB.GetModel()->Resort();
+}
+
+/* -----------------13.07.99 15:39-------------------
+
+ --------------------------------------------------*/
+SwAddStylesDlg_Impl::~SwAddStylesDlg_Impl()
+{
+}
+/* -----------------13.07.99 15:39-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwAddStylesDlg_Impl, OkHdl, OKButton*, pBtn)
+{
+ for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
+ pStyleArr[i].Erase();
+
+ SwIndexTreeLB& rTLB = aHeaderTree.GetTreeListBox();
+ SvLBoxEntry* pEntry = rTLB.First();
+ while(pEntry)
+ {
+ long nLevel = (long)pEntry->GetUserData();
+ if(nLevel != USHRT_MAX)
+ {
+ String sName(rTLB.GetEntryText(pEntry));
+ if(pStyleArr[nLevel].Len())
+ pStyleArr[nLevel] += TOX_STYLE_DELIMITER;
+ pStyleArr[nLevel] += sName;
+ }
+ pEntry = rTLB.Next(pEntry);
+ }
+
+ //TODO write back style names
+ EndDialog(RET_OK);
+ return 0;
+}
+/* -----------------16.07.99 09:27-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwAddStylesDlg_Impl, HeaderDragHdl, HeaderBar*, pHB)
+{
+ aHeaderTree.GetTreeListBox().Invalidate();
+ //pHB->SetSizePixel(pHB->CalcWindowSizePixel());
+ return 0;
+}
+/* -----------------13.07.99 15:39-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwAddStylesDlg_Impl, LeftRightHdl, PushButton*, pBtn)
+{
+ sal_Bool bLeft = pBtn == &aLeftPB;
+ SvLBoxEntry* pEntry = aHeaderTree.GetTreeListBox().FirstSelected();
+ if(pEntry)
+ {
+ long nLevel = (long)pEntry->GetUserData();
+ if(bLeft)
+ {
+ if(!nLevel)
+ nLevel = USHRT_MAX;
+ else if(nLevel != USHRT_MAX)
+ nLevel--;
+ }
+ else
+ {
+ if(nLevel < MAXLEVEL - 1)
+ nLevel++;
+ else if(nLevel == USHRT_MAX)
+ nLevel = 0;
+ }
+ pEntry->SetUserData((void*)nLevel);
+ aHeaderTree.GetTreeListBox().Invalidate();
+ }
+ return 0;
+}
+
+/*-- 14.06.99 13:11:40---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwTOXSelectTabPage::SwTOXSelectTabPage(Window* pParent, const SfxItemSet& rAttrSet) :
+ SfxTabPage(pParent, SW_RES(TP_TOX_SELECT), rAttrSet),
+ aTypeFT( this, ResId(FT_TYPE )),
+ aTypeLB( this, ResId(LB_TYPE )),
+ aReadOnlyCB( this, ResId(CB_READONLY )),
+ aTitleFT( this, ResId(FT_TITLE )),
+ aTitleED( this, ResId(ED_TITLE )),
+ aTypeTitleGB( this, ResId(GB_TYPETITLE )),
+ aAreaLB( this, ResId(LB_AREA )),
+ aLevelFT( this, ResId(FT_LEVEL )),
+ aLevelNF( this, ResId(NF_LEVEL )),
+ aAreaGB( this, ResId(GB_AREA )),
+ aFromHeadingsCB( this, ResId(CB_FROMHEADINGS )),
+ aChapterDlgPB( this, ResId(PB_CHAPTERDLG )),
+ aAddStylesCB( this, ResId(CB_ADDSTYLES )),
+ aAddStylesPB( this, ResId(PB_ADDSTYLES )),
+ aFromTablesCB( this, ResId(CB_FROMTABLES )),
+ aFromFramesCB( this, ResId(CB_FROMFRAMES )),
+ aFromGraphicsCB( this, ResId(CB_FROMGRAPHICS )),
+ aFromOLECB( this, ResId(CB_FROMOLE )),
+ aLevelFromChapterCB(this, ResId(CB_LEVELFROMCHAPTER )),
+ aFromCaptionsRB( this, ResId(RB_FROMCAPTIONS )),
+ aFromObjectNamesRB( this, ResId(RB_FROMOBJECTNAMES )),
+ aCaptionSequenceFT( this, ResId(FT_CAPTIONSEQUENCE )),
+ aCaptionSequenceLB( this, ResId(LB_CAPTIONSEQUENCE )),
+ aDisplayTypeFT( this, ResId(FT_DISPLAYTYPE )),
+ aDisplayTypeLB( this, ResId(LB_DISPLAYTYPE )),
+ aTOXMarksCB( this, ResId(CB_TOXMARKS )),
+ aCreateFromGB( this, ResId(GB_CREATEFROM )),
+ aCollectSameCB( this, ResId(CB_COLLECTSAME )),
+ aUseFFCB( this, ResId(CB_USEFF )),
+ aUseDashCB( this, ResId(CB_USE_DASH )),
+ aCaseSensitiveCB( this, ResId(CB_CASESENSITIVE )),
+ aInitialCapsCB( this, ResId(CB_INITIALCAPS )),
+ aKeyAsEntryCB( this, ResId(CB_KEYASENTRY )),
+ aFromFileCB( this, ResId(CB_FROMFILE )),
+ aAutoMarkPB( this, ResId(MB_AUTOMARK )),
+// aFilePB( this, ResId(PB_FILE )),
+// aCreateAutoMarkPB( this, ResId(PB_CREATE_AUTOMARK )),
+// aEditAutoMarkPB( this, ResId(PB_EDIT_AUTOMARK )),
+ aIdxOptionsGB( this, ResId(GB_IDXOPTIONS )),
+ aFromNames( ResId(RES_SRCTYPES )),
+ aFromObjCLB( this, ResId(CLB_FROMOBJ )),
+ aFromObjGB( this, ResId(GB_FROMOBJ )),
+ aSequenceCB( this, ResId(CB_SEQUENCE )),
+ aBracketFT( this, ResId(FT_BRACKET )),
+ aBracketLB( this, ResId(LB_BRACKET )),
+ aAuthorityFormatGB( this, ResId(GB_AUTHORITY )),
+ sAddStyleUser(ResId(ST_USER_ADDSTYLE)),
+ sAutoMarkType(ResId(ST_AUTOMARK_TYPE)),
+ bFirstCall(sal_True)
+{
+ FreeResource();
+ sAddStyleContent = aAddStylesCB.GetText();
+
+ aCBLeftPos1 = aFromHeadingsCB.GetPosPixel();
+ aCBLeftPos2 = aAddStylesCB.GetPosPixel();
+ aCBLeftPos3 = aTOXMarksCB.GetPosPixel();
+
+ ResStringArray& rNames = aFromNames.GetNames();
+ for(sal_uInt16 i = 0; i < rNames.Count(); i++)
+ {
+ aFromObjCLB.InsertEntry(rNames.GetString(i));
+ aFromObjCLB.SetEntryData( i, (void*)rNames.GetValue(i) );
+ }
+ aFromObjCLB.SetHelpId(HID_OLE_CHECKLB);
+
+ SetExchangeSupport();
+ aTypeLB.SetSelectHdl(LINK(this, SwTOXSelectTabPage, TOXTypeHdl));
+
+ aAddStylesPB.SetClickHdl(LINK(this, SwTOXSelectTabPage, AddStylesHdl));
+ aChapterDlgPB.SetClickHdl(LINK(this, SwTOXSelectTabPage, ChapterHdl));
+
+ PopupMenu* pMenu = aAutoMarkPB.GetPopupMenu();
+ pMenu->SetActivateHdl(LINK(this, SwTOXSelectTabPage, MenuEnableHdl));
+ pMenu->SetSelectHdl(LINK(this, SwTOXSelectTabPage, MenuExecuteHdl));
+
+// aFilePB.SetClickHdl(LINK(this, SwTOXSelectTabPage, AutoMarkHdl));
+// aCreateAutoMarkPB.SetClickHdl(LINK(this, SwTOXSelectTabPage, CreateEditAutoMarkHdl));
+// aEditAutoMarkPB.SetClickHdl(LINK(this, SwTOXSelectTabPage, CreateEditAutoMarkHdl));
+
+ Link aLk = LINK(this, SwTOXSelectTabPage, CheckBoxHdl);
+ aAddStylesCB .SetClickHdl(aLk);
+ aFromHeadingsCB .SetClickHdl(aLk);
+ aTOXMarksCB .SetClickHdl(aLk);
+ aFromFileCB .SetClickHdl(aLk);
+ aCollectSameCB .SetClickHdl(aLk);
+ aUseFFCB .SetClickHdl(aLk);
+ aUseDashCB .SetClickHdl(aLk);
+ aInitialCapsCB .SetClickHdl(aLk);
+ aKeyAsEntryCB .SetClickHdl(aLk);
+
+ Link aModifyLk = LINK(this, SwTOXSelectTabPage, ModifyHdl);
+ aTitleED.SetModifyHdl(aModifyLk);
+ aLevelNF.SetModifyHdl(aModifyLk);
+
+ aLk = LINK(this, SwTOXSelectTabPage, RadioButtonHdl);
+ aFromCaptionsRB.SetClickHdl(aLk);
+ aFromObjectNamesRB.SetClickHdl(aLk);
+ RadioButtonHdl(&aFromCaptionsRB);
+
+ aTypeLB.SelectEntryPos(0);
+ aTitleED.SaveValue();
+}
+/*-- 14.06.99 13:11:41---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwTOXSelectTabPage::~SwTOXSelectTabPage()
+{
+}
+/* -----------------21.10.99 17:03-------------------
+
+ --------------------------------------------------*/
+void SwTOXSelectTabPage::SetWrtShell(SwWrtShell& rSh)
+{
+ sal_uInt16 nUserTypeCount = rSh.GetTOXTypeCount(TOX_USER);
+ if(nUserTypeCount > 1)
+ {
+ //insert all new user indexes names after the standard user index
+ sal_uInt16 nPos = aTypeLB.GetEntryPos((void*)(sal_uInt32)TO_USER);
+ nPos++;
+ for(sal_uInt16 nUser = 1; nUser < nUserTypeCount; nUser++)
+ {
+ nPos = aTypeLB.InsertEntry(rSh.GetTOXType(TOX_USER, nUser)->GetTypeName(), nPos);
+ sal_uInt32 nEntryData = nUser << 8;
+ nEntryData |= TO_USER;
+ aTypeLB.SetEntryData(nPos, (void*)nEntryData);
+ }
+ }
+}
+/* -----------------14.06.99 13:10-------------------
+
+ --------------------------------------------------*/
+sal_Bool SwTOXSelectTabPage::FillItemSet( SfxItemSet& )
+{
+ return sal_True;
+}
+/* -----------------25.08.99 14:31-------------------
+
+ --------------------------------------------------*/
+long lcl_TOXTypesToUserData(CurTOXType eType)
+{
+ sal_uInt16 nRet;
+ switch(eType.eType)
+ {
+ case TOX_INDEX : nRet = TO_INDEX; break;
+ case TOX_USER :
+ {
+ nRet = eType.nIndex << 8;
+ nRet |= TO_USER;
+ }
+ break;
+ case TOX_CONTENT : nRet = TO_CONTENT; break;
+ case TOX_ILLUSTRATIONS:nRet = TO_ILLUSTRATION; break;
+ case TOX_OBJECTS : nRet = TO_OBJECT; break;
+ case TOX_TABLES : nRet = TO_TABLE; break;
+ case TOX_AUTHORITIES : nRet = TO_AUTHORITIES; break;
+ }
+ return nRet;
+}
+//-----------------------------------------------------------------
+void SwTOXSelectTabPage::SelectType(TOXTypes eSet)
+{
+ CurTOXType eCurType = {eSet, 0};
+
+ long nData = lcl_TOXTypesToUserData(eCurType);
+ aTypeLB.SelectEntryPos(aTypeLB.GetEntryPos((void*)nData));
+ aTypeFT.Enable(sal_False);
+ aTypeLB.Enable(sal_False);
+ TOXTypeHdl(&aTypeLB);
+}
+
+/*-- 14.06.99 13:10:45---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+//-----------------------------------------------------------------
+CurTOXType lcl_UserData2TOXTypes(sal_uInt16 nData)
+{
+ CurTOXType eRet;
+ eRet.nIndex = 0;
+ switch(nData&0xff)
+ {
+ case TO_INDEX : eRet.eType = TOX_INDEX; break;
+ case TO_USER :
+ {
+ eRet.eType = TOX_USER;
+ eRet.nIndex = (nData&0xff00) >> 8;
+ }
+ break;
+ case TO_CONTENT : eRet.eType = TOX_CONTENT; break;
+ case TO_ILLUSTRATION: eRet.eType = TOX_ILLUSTRATIONS; break;
+ case TO_OBJECT : eRet.eType = TOX_OBJECTS; break;
+ case TO_TABLE : eRet.eType = TOX_TABLES; break;
+ case TO_AUTHORITIES : eRet.eType = TOX_AUTHORITIES; break;
+ default: DBG_ERROR("what a type?");
+ }
+ return eRet;
+}
+/* -----------------02.09.99 08:16-------------------
+
+ --------------------------------------------------*/
+void SwTOXSelectTabPage::ApplyTOXDescription()
+{
+ SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+ const CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
+ SwTOXDescription& rDesc = pTOXDlg->GetTOXDescription(aCurType);
+ aReadOnlyCB.Check(rDesc.IsReadonly());
+ if(aTitleED.GetText() == aTitleED.GetSavedValue())
+ {
+ if(rDesc.GetTitle())
+ aTitleED.SetText(*rDesc.GetTitle());
+ else
+ aTitleED.SetText(aEmptyStr);
+ aTitleED.SaveValue();
+ }
+
+ aAreaLB.SelectEntryPos(rDesc.IsFromChapter() ? 1 : 0);
+
+ if(aCurType.eType != TOX_INDEX)
+ aLevelNF.SetValue(rDesc.GetLevel()); //content, user
+
+ sal_uInt16 nCreateType = rDesc.GetContentOptions();
+
+ //user + content
+ sal_Bool bHasStyleNames = sal_False;
+ for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
+ if(rDesc.GetStyleNames(i).Len())
+ {
+ bHasStyleNames = sal_True;
+ break;
+ }
+ aAddStylesCB.Check(bHasStyleNames && (nCreateType & TOX_TEMPLATE));
+
+ aFromOLECB.Check(nCreateType&TOX_OLE);
+ aFromTablesCB.Check(nCreateType&TOX_TABLE);
+ aFromGraphicsCB.Check(nCreateType&TOX_GRAPHIC);
+ aFromFramesCB.Check(nCreateType&TOX_FRAME);
+
+ aLevelFromChapterCB.Check(rDesc.IsLevelFromChapter());
+
+ //all but illustration and table
+ aTOXMarksCB.Check(nCreateType&TOX_MARK );
+
+ //content
+ if(TOX_CONTENT == aCurType.eType)
+ {
+ aFromHeadingsCB.Check(nCreateType&TOX_OUTLINELEVEL);
+ aChapterDlgPB.Enable(aFromHeadingsCB.IsChecked());
+ aAddStylesCB.SetText(sAddStyleContent);
+ aAddStylesPB.Enable(aAddStylesCB.IsChecked());
+ }
+ //index only
+ else if(TOX_INDEX == aCurType.eType)
+ {
+ sal_uInt16 nIndexOptions = rDesc.GetIndexOptions();
+ aCollectSameCB. Check(nIndexOptions&TOI_SAME_ENTRY);
+ aUseFFCB. Check(nIndexOptions&TOI_FF);
+ aUseDashCB. Check(nIndexOptions&TOI_DASH);
+ if(aUseFFCB.IsChecked())
+ aUseDashCB.Enable(sal_False);
+ else if(aUseDashCB.IsChecked())
+ aUseFFCB.Enable(sal_False);
+
+ aCaseSensitiveCB. Check(nIndexOptions&TOI_CASE_SENSITIVE);
+ aInitialCapsCB. Check(nIndexOptions&TOI_INITIAL_CAPS);
+ aKeyAsEntryCB. Check(nIndexOptions&TOI_KEY_AS_ENTRY);
+ }
+ else if(TOX_ILLUSTRATIONS == aCurType.eType ||
+ TOX_TABLES == aCurType.eType)
+ {
+ aFromObjectNamesRB.Check(rDesc.IsCreateFromObjectNames());
+ aFromCaptionsRB.Check(!rDesc.IsCreateFromObjectNames());
+ aCaptionSequenceLB.SelectEntry(rDesc.GetSequenceName());
+ aDisplayTypeLB.SelectEntryPos(rDesc.GetCaptionDisplay());
+ RadioButtonHdl(&aFromCaptionsRB);
+
+ }
+ else if(TOX_OBJECTS == aCurType.eType)
+ {
+ long nOLEData = rDesc.GetOLEOptions();
+ for(sal_uInt16 i = 0; i < aFromObjCLB.GetEntryCount(); i++)
+ {
+ long nData = (long)aFromObjCLB.GetEntryData(i);
+ aFromObjCLB.CheckEntryPos(i, 0 != (nData & nOLEData));
+ }
+ }
+ else if(TOX_AUTHORITIES == aCurType.eType)
+ {
+ aBracketLB.SelectEntry(rDesc.GetAuthBrackets());
+ aSequenceCB.Check(rDesc.IsAuthSequence());
+ }
+ aAutoMarkPB.Enable(aFromFileCB.IsChecked());
+// aCreateAutoMarkPB.Enable(aFromFileCB.IsChecked());
+// aEditAutoMarkPB.Enable(aFromFileCB.IsChecked() && sAutoMarkURL.Len());
+
+ for(i = 0; i < MAXLEVEL; i++)
+ aStyleArr[i] = rDesc.GetStyleNames(i);
+}
+/* -----------------09.09.99 11:57-------------------
+
+ --------------------------------------------------*/
+void SwTOXSelectTabPage::FillTOXDescription()
+{
+ SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+ CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
+ SwTOXDescription& rDesc = pTOXDlg->GetTOXDescription(aCurType);
+ rDesc.SetTitle(aTitleED.GetText());
+ rDesc.SetFromChapter(1 == aAreaLB.GetSelectEntryPos());
+ sal_uInt16 nContentOptions = 0;
+ if(aTOXMarksCB.IsVisible() && aTOXMarksCB.IsChecked())
+ nContentOptions |= TOX_MARK;
+
+ sal_uInt16 nIndexOptions = rDesc.GetIndexOptions()&TOI_ALPHA_DELIMITTER;
+ switch(rDesc.GetTOXType())
+ {
+ case TOX_CONTENT:
+ if(aFromHeadingsCB.IsChecked())
+ nContentOptions |= TOX_OUTLINELEVEL;
+ break;
+ case TOX_USER:
+ {
+ rDesc.SetTOUName(aTypeLB.GetSelectEntry());
+
+ if(aFromOLECB.IsChecked())
+ nContentOptions |= TOX_OLE;
+ if(aFromTablesCB.IsChecked())
+ nContentOptions |= TOX_TABLE;
+ if(aFromFramesCB.IsChecked())
+ nContentOptions |= TOX_FRAME;
+ if(aFromGraphicsCB.IsChecked())
+ nContentOptions |= TOX_GRAPHIC;
+ }
+ break;
+ case TOX_INDEX:
+ {
+ nContentOptions = TOX_MARK;
+
+ if(aCollectSameCB.IsChecked())
+ nIndexOptions |= TOI_SAME_ENTRY;
+ if(aUseFFCB.IsChecked())
+ nIndexOptions |= TOI_FF;
+ if(aUseDashCB.IsChecked())
+ nIndexOptions |= TOI_DASH;
+ if(aCaseSensitiveCB.IsChecked())
+ nIndexOptions |= TOI_CASE_SENSITIVE;
+ if(aInitialCapsCB.IsChecked())
+ nIndexOptions |= TOI_INITIAL_CAPS;
+ if(aKeyAsEntryCB.IsChecked())
+ nIndexOptions |= TOI_KEY_AS_ENTRY;
+ if(aFromFileCB.IsChecked())
+ rDesc.SetAutoMarkURL(sAutoMarkURL);
+ else
+ rDesc.SetAutoMarkURL(aEmptyStr);
+ }
+ break;
+ case TOX_ILLUSTRATIONS:
+ case TOX_TABLES :
+ rDesc.SetCreateFromObjectNames(aFromObjectNamesRB.IsChecked());
+ rDesc.SetSequenceName(aCaptionSequenceLB.GetSelectEntry());
+ rDesc.SetCaptionDisplay((SwCaptionDisplay)aDisplayTypeLB.GetSelectEntryPos());
+ break;
+ case TOX_OBJECTS:
+ {
+ long nOLEData = 0;
+ for(sal_uInt16 i = 0; i < aFromObjCLB.GetEntryCount(); i++)
+ {
+ if(aFromObjCLB.IsChecked(i))
+ {
+ long nData = (long)aFromObjCLB.GetEntryData(i);
+ nOLEData |= nData;
+ }
+ }
+ rDesc.SetOLEOptions(nOLEData);
+ }
+ break;
+ case TOX_AUTHORITIES:
+ {
+ rDesc.SetAuthBrackets(aBracketLB.GetSelectEntry());
+ rDesc.SetAuthSequence(aSequenceCB.IsChecked());
+ }
+ break;
+ }
+
+ rDesc.SetLevelFromChapter( aLevelFromChapterCB.IsVisible() &&
+ aLevelFromChapterCB.IsChecked());
+ if(aTOXMarksCB.IsChecked() && aTOXMarksCB.IsVisible())
+ nContentOptions |= TOX_MARK;
+ if(aFromHeadingsCB.IsChecked() && aFromHeadingsCB.IsVisible())
+ nContentOptions |= TOX_OUTLINELEVEL;
+ if(aAddStylesCB.IsChecked() && aAddStylesCB.IsVisible())
+ nContentOptions |= TOX_TEMPLATE;
+
+ rDesc.SetContentOptions(nContentOptions);
+ rDesc.SetIndexOptions(nIndexOptions);
+ rDesc.SetLevel(aLevelNF.GetValue());
+
+ rDesc.SetReadonly(aReadOnlyCB.IsChecked());
+
+ for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
+ rDesc.SetStyleNames(aStyleArr[i], i);
+}
+/* -----------------05.07.99 15:09-------------------
+
+ --------------------------------------------------*/
+void SwTOXSelectTabPage::Reset( const SfxItemSet& )
+{
+ SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+ SwWrtShell& rSh = pTOXDlg->GetWrtShell();
+ const CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
+ long nData = lcl_TOXTypesToUserData(aCurType);
+ aTypeLB.SelectEntryPos(aTypeLB.GetEntryPos((void*)nData));
+
+ sAutoMarkURL = INetURLObject::decode( rSh.GetTOIAutoMarkURL(),
+ INET_HEX_ESCAPE,
+ INetURLObject::DECODE_WITH_CHARSET,
+ RTL_TEXTENCODING_UTF8 );
+ aFromFileCB.Check(sAutoMarkURL.Len());
+
+ aCaptionSequenceLB.Clear();
+ sal_uInt16 i, nCount = rSh.GetFldTypeCount(RES_SETEXPFLD);
+ for (i = 0; i < nCount; i++)
+ {
+ SwFieldType *pType = rSh.GetFldType( i, RES_SETEXPFLD );
+ if( pType->Which() == RES_SETEXPFLD &&
+ ((SwSetExpFieldType *) pType)->GetType() & GSE_SEQ )
+ aCaptionSequenceLB.InsertEntry(pType->GetName());
+ }
+
+ if(pTOXDlg->IsTOXEditMode())
+ {
+ aTypeFT.Enable(sal_False);
+ aTypeLB.Enable(sal_False);
+ }
+ TOXTypeHdl(&aTypeLB);
+ CheckBoxHdl(&aAddStylesCB);
+}
+/*-- 14.06.99 13:10:52---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwTOXSelectTabPage::ActivatePage( const SfxItemSet& )
+{
+ //nothing to do
+}
+/*-- 14.06.99 13:11:00---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+int SwTOXSelectTabPage::DeactivatePage( SfxItemSet* pSet )
+{
+ if(pSet)
+ pSet->Put(SfxUInt16Item(FN_PARAM_TOX_TYPE,
+ (sal_uInt16)(long)aTypeLB.GetEntryData( aTypeLB.GetSelectEntryPos() )));
+ sal_uInt16 nUserData = (sal_uInt16)(long)aTypeLB.GetEntryData( aTypeLB.GetSelectEntryPos() );
+ FillTOXDescription();
+ return LEAVE_PAGE;
+}
+
+/* -----------------14.06.99 13:10-------------------
+
+ --------------------------------------------------*/
+SfxTabPage* SwTOXSelectTabPage::Create( Window* pParent, const SfxItemSet& rAttrSet)
+{
+ return new SwTOXSelectTabPage(pParent, rAttrSet);
+}
+/* -----------------14.06.99 13:10-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXSelectTabPage, TOXTypeHdl, ListBox*, pBox)
+{
+ SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+ if(!bFirstCall)
+ {
+ // save current values into the proper TOXDescription
+ FillTOXDescription();
+ }
+ bFirstCall = sal_False;
+ const long nType = (long)pBox->GetEntryData( pBox->GetSelectEntryPos() );
+ CurTOXType eCurType = lcl_UserData2TOXTypes(nType);
+ pTOXDlg->SetCurrentTOXType(eCurType);
+
+ aAreaLB.Show(nType & (TO_CONTENT|TO_ILLUSTRATION|TO_USER|TO_INDEX|TO_TABLE|TO_OBJECT));
+ aLevelFT.Show(nType & (TO_CONTENT));
+ aLevelNF.Show(nType & (TO_CONTENT));
+ aLevelFromChapterCB.Show(nType & (TO_USER));
+ aAreaGB.Show(nType & (TO_CONTENT|TO_ILLUSTRATION|TO_USER|TO_INDEX|TO_TABLE|TO_OBJECT));
+
+ aFromHeadingsCB.Show(nType & (TO_CONTENT));
+ aChapterDlgPB.Show(nType & (TO_CONTENT));
+ aAddStylesCB.Show(nType & (TO_CONTENT|TO_USER));
+ aAddStylesPB.Show(nType & (TO_CONTENT|TO_USER));
+
+ aFromTablesCB.Show(nType & (TO_USER));
+ aFromFramesCB.Show(nType & (TO_USER));
+ aFromGraphicsCB.Show(nType & (TO_USER));
+ aFromOLECB.Show(nType & (TO_USER));
+
+ aFromCaptionsRB.Show(nType & (TO_ILLUSTRATION|TO_TABLE));
+ aFromObjectNamesRB.Show(nType & (TO_ILLUSTRATION|TO_TABLE));
+
+ aTOXMarksCB.Show(nType & (TO_CONTENT|TO_USER));
+
+ aCreateFromGB.Show(nType & (TO_CONTENT|TO_ILLUSTRATION|TO_USER|TO_TABLE));
+ aCaptionSequenceFT.Show(nType & (TO_ILLUSTRATION|TO_TABLE));
+ aCaptionSequenceLB.Show(nType & (TO_ILLUSTRATION|TO_TABLE));
+ aDisplayTypeFT.Show(nType & (TO_ILLUSTRATION|TO_TABLE));
+ aDisplayTypeLB.Show(nType & (TO_ILLUSTRATION|TO_TABLE));
+
+ aSequenceCB.Show(nType & TO_AUTHORITIES);
+ aBracketFT.Show(nType & TO_AUTHORITIES);
+ aBracketLB.Show(nType & TO_AUTHORITIES);
+ aAuthorityFormatGB.Show(nType & TO_AUTHORITIES);
+
+ String sStr;
+ if(nType & TO_CONTENT)
+ {
+ Point aPos(aAddStylesPB.GetPosPixel());
+ aPos.X() = aChapterDlgPB.GetPosPixel().X();
+ aAddStylesPB.SetPosPixel(aPos);
+ }
+ else if( nType & TO_ILLUSTRATION )
+ aCaptionSequenceLB.SelectEntry( GetDocPoolNm( RES_POOLCOLL_LABEL_ABB, sStr ));
+ else if( nType & TO_TABLE )
+ aCaptionSequenceLB.SelectEntry( GetDocPoolNm( RES_POOLCOLL_LABEL_TABLE, sStr ));
+ else if( nType & TO_USER )
+ {
+ aAddStylesCB.SetText(sAddStyleUser);
+ // move left!
+ Point aPos(aAddStylesPB.GetPosPixel());
+ aPos.X() = aChapterDlgPB.GetPosPixel().X();
+ aPos.X() -= 2 * aAddStylesPB.GetSizePixel().Width();
+ aAddStylesPB.SetPosPixel(aPos);
+ }
+
+ aCollectSameCB.Show(nType & TO_INDEX);
+ aUseFFCB.Show(nType & TO_INDEX);
+ aUseDashCB.Show(nType & TO_INDEX);
+ aCaseSensitiveCB.Show(nType & TO_INDEX);
+ aInitialCapsCB.Show(nType & TO_INDEX);
+ aKeyAsEntryCB.Show(nType & TO_INDEX);
+ aFromFileCB.Show(nType & TO_INDEX);
+ aAutoMarkPB.Show(nType & TO_INDEX);
+// aCreateAutoMarkPB.Show(nType &TO_INDEX);
+// aEditAutoMarkPB.Show(nType & TO_INDEX);
+
+ aIdxOptionsGB.Show(nType & TO_INDEX);
+
+ //object index
+ aFromObjCLB.Show(nType & TO_OBJECT);
+ aFromObjGB.Show(nType & TO_OBJECT);
+
+ //move controls
+ aAddStylesCB.SetPosPixel(nType & TO_USER ? aCBLeftPos1 : aCBLeftPos2);
+ Point aPBPos(aAddStylesPB.GetPosPixel());
+ aPBPos.Y() = nType & TO_USER ? aCBLeftPos1.Y() : aCBLeftPos2.Y();
+ aAddStylesPB.SetPosPixel(aPBPos);
+ aTOXMarksCB.SetPosPixel(nType & TO_USER ? aCBLeftPos2 : aCBLeftPos3);
+ //set control values from the proper TOXDescription
+ {
+ ApplyTOXDescription();
+ }
+ ModifyHdl(0);
+ return 0;
+}
+/* -----------------30.11.99 12:48-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXSelectTabPage, ModifyHdl, void*, EMPTYARG)
+{
+ SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+ if(pTOXDlg)
+ {
+ FillTOXDescription();
+ pTOXDlg->CreateOrUpdateExample(pTOXDlg->GetCurrentTOXType().eType, TOX_PAGE_SELECT);
+ }
+ return 0;
+}
+/* -----------------05.07.99 10:13-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXSelectTabPage, CheckBoxHdl, CheckBox*, pBox )
+{
+ SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+ const CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
+ if(TOX_CONTENT == aCurType.eType)
+ {
+ //at least one of the three CheckBoxes must be checked
+ if(!aAddStylesCB.IsChecked() && !aFromHeadingsCB.IsChecked() && !aTOXMarksCB.IsChecked())
+ {
+ //TODO: InfoBox?
+ pBox->Check(sal_True);
+ }
+ aAddStylesPB.Enable(aAddStylesCB.IsChecked());
+ aChapterDlgPB.Enable(aFromHeadingsCB.IsChecked());
+ }
+ if(TOX_USER == aCurType.eType)
+ {
+ aAddStylesPB.Enable(aAddStylesCB.IsChecked());
+ }
+ else if(TOX_INDEX == aCurType.eType)
+ {
+ aAutoMarkPB.Enable(aFromFileCB.IsChecked());
+// aCreateAutoMarkPB.Enable(aFromFileCB.IsChecked());
+// aEditAutoMarkPB.Enable(aFromFileCB.IsChecked() && sAutoMarkURL.Len());
+
+ aUseFFCB.Enable(aCollectSameCB.IsChecked() && !aUseDashCB.IsChecked());
+ aUseDashCB.Enable(aCollectSameCB.IsChecked() && !aUseFFCB.IsChecked());
+ aCaseSensitiveCB.Enable(aCollectSameCB.IsChecked());
+ }
+ ModifyHdl(0);
+ return 0;
+};
+/* -----------------14.07.99 14:21-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXSelectTabPage, RadioButtonHdl, RadioButton*, pButton )
+{
+ sal_Bool bEnable = aFromCaptionsRB.IsChecked();
+ aCaptionSequenceFT.Enable(bEnable);
+ aCaptionSequenceLB.Enable(bEnable);
+ aDisplayTypeFT.Enable(bEnable);
+ aDisplayTypeLB.Enable(bEnable);
+ ModifyHdl(0);
+ return 0;
+}
+/* -----------------14.06.99 13:10-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXSelectTabPage, TOXAreaHdl, ListBox*, pBox)
+{
+ DBG_WARNING("not implemented")
+ switch((long)pBox->GetEntryData( pBox->GetSelectEntryPos() ))
+ {
+ case AREA_DOCUMENT : break;
+ case AREA_CHAPTER : break;
+ }
+ return 0;
+}
+/* -----------------14.06.99 13:10-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXSelectTabPage, ChapterHdl, PushButton*, pButton)
+{
+ SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+ SwWrtShell& rSh = pTOXDlg->GetWrtShell();
+
+ SfxItemSet aTmp(rSh.GetView().GetPool(), FN_PARAM_1, FN_PARAM_1);
+ SwOutlineTabDialog* pDlg = new SwOutlineTabDialog(pButton, &aTmp, rSh);
+ if(RET_OK == pDlg->Execute())
+ {
+ CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
+ SwForm* pForm = ((SwMultiTOXTabDialog*)GetTabDialog())->GetForm(aCurType);
+ // jetzt muss ueberprueft werden, ob dem sdbcx::Index Ueberschriftenvorlagen
+ // zugewiesen wurden
+ String sStr;
+ for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
+ {
+ sal_Bool bNum = !SwMultiTOXTabDialog::IsNoNum(rSh, pForm->GetTemplate( i + 1 ));
+ if(bNum)
+ {
+ //es gibt getrennte Resourcebereiche fuer die Inhaltsverzeichnisse
+ if(i < 5)
+ GetDocPoolNm( RES_POOLCOLL_TOX_CNTNT1 + i, sStr );
+ else
+ GetDocPoolNm( RES_POOLCOLL_TOX_CNTNT6 + i - 5, sStr );
+ pForm->SetTemplate( i + 1, sStr );
+ }
+ }
+
+ }
+ delete pDlg;
+ return 0;
+}
+/* -----------------14.06.99 13:10-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXSelectTabPage, AddStylesHdl, PushButton*, pButton)
+{
+ SwAddStylesDlg_Impl* pDlg = new SwAddStylesDlg_Impl(pButton,
+ ((SwMultiTOXTabDialog*)GetTabDialog())->GetWrtShell(),
+ aStyleArr);
+ pDlg->Execute();
+ delete pDlg;
+ ModifyHdl(0);
+ return 0;
+}
+/* -----------------------------19.01.00 10:59--------------------------------
+
+ ---------------------------------------------------------------------------*/
+
+IMPL_LINK(SwTOXSelectTabPage, MenuEnableHdl, Menu*, pMenu)
+{
+ pMenu->EnableItem(MN_AUTOMARK_EDIT, sAutoMarkURL.Len());
+ return 0;
+}
+
+IMPL_LINK(SwTOXSelectTabPage, MenuExecuteHdl, Menu*, pMenu)
+{
+ const String sSaveAutoMarkURL = sAutoMarkURL;
+ switch(pMenu->GetCurItemId())
+ {
+ case MN_AUTOMARK_OPEN:
+ sAutoMarkURL = lcl_CreateAutoMarkFileDlg( &aAutoMarkPB,
+ sAutoMarkURL, sAutoMarkType, sal_True);
+ break;
+ case MN_AUTOMARK_NEW :
+ sAutoMarkURL = lcl_CreateAutoMarkFileDlg( &aAutoMarkPB,
+ sAutoMarkURL, sAutoMarkType, sal_False);
+ if( !sAutoMarkURL.Len() )
+ break;
+ //no break
+ case MN_AUTOMARK_EDIT:
+ {
+ sal_Bool bNew = pMenu->GetCurItemId()== MN_AUTOMARK_NEW;
+ SwAutoMarkDlg_Impl* pAutoMarkDlg = new SwAutoMarkDlg_Impl(
+ &aAutoMarkPB, sAutoMarkURL, sAutoMarkType, bNew );
+
+ if( RET_OK != pAutoMarkDlg->Execute() && bNew )
+ sAutoMarkURL = sSaveAutoMarkURL;
+ delete pAutoMarkDlg;
+
+ sAutoMarkURL = URIHelper::SmartRelToAbs( sAutoMarkURL );
+ }
+ break;
+ }
+ return 0;
+}
+
+/* -----------------16.06.99 10:46-------------------
+
+ --------------------------------------------------*/
+class SwTOXEdit : public Edit
+{
+ SwFormToken aFormToken;
+ Link aPrevNextControlLink;
+ Link aGetFocusLink;
+ sal_Bool bNextControl;
+ SwTokenWindow* m_pParent;
+public:
+ SwTOXEdit( Window* pParent, SwTokenWindow* pTokenWin,
+ const SwFormToken& aToken)
+ : Edit( pParent, WB_BORDER|WB_TABSTOP|WB_CENTER),
+ bNextControl(sal_False),
+ aFormToken(aToken),
+ m_pParent( pTokenWin )
+ {
+ SetHelpId( HID_TOX_ENTRY_EDIT );
+ }
+
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void GetFocus();
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+
+ sal_Bool IsNextControl() const {return bNextControl;}
+ void SetPrevNextLink( const Link& rLink ) {aPrevNextControlLink = rLink;}
+ void SetGetFocusLink(const Link& rLink) {aGetFocusLink = rLink;}
+
+ const SwFormToken& GetFormToken()
+ {
+ aFormToken.sText = GetText();
+ return aFormToken;
+ }
+
+ void SetCharStyleName(const String& rSet, sal_uInt16 nPoolId)
+ {
+ aFormToken.sCharStyleName = rSet;
+ aFormToken.nPoolId = nPoolId;
+ }
+
+ void AdjustSize();
+};
+
+//---------------------------------------------------
+void SwTOXEdit::RequestHelp( const HelpEvent& rHEvt )
+{
+ if(!m_pParent->CreateQuickHelp(this, aFormToken, rHEvt))
+ Edit::RequestHelp(rHEvt);
+}
+//---------------------------------------------------
+void SwTOXEdit::KeyInput( const KeyEvent& rKEvt )
+{
+ const Selection& rSel = GetSelection();
+ sal_uInt16 nTextLen = GetText().Len();
+ if(rSel.A() == rSel.B() &&
+ !rSel.A() || rSel.A() == nTextLen )
+ {
+ sal_Bool bCall = sal_False;
+ KeyCode aCode = rKEvt.GetKeyCode();
+ if(aCode.GetCode() == KEY_RIGHT && rSel.A() == nTextLen)
+ {
+ bNextControl = sal_True;
+ bCall = sal_True;
+ }
+ else if(aCode.GetCode() == KEY_LEFT && !rSel.A() )
+ {
+ bNextControl = sal_False;
+ bCall = sal_True;
+ }
+
+ if(bCall && aPrevNextControlLink.IsSet())
+ aPrevNextControlLink.Call(this);
+
+ }
+ Edit::KeyInput(rKEvt);
+}
+/* -----------------16.07.99 12:41-------------------
+
+ --------------------------------------------------*/
+void SwTOXEdit::AdjustSize()
+{
+ Size aSize(GetSizePixel());
+ Size aTextSize(GetTextWidth(GetText()), GetTextHeight());
+ aTextSize = LogicToPixel(aTextSize);
+ aSize.Width() = aTextSize.Width() + EDIT_MINWIDTH;
+ SetSizePixel(aSize);
+}
+
+//---------------------------------------------------
+void SwTOXEdit::GetFocus()
+{
+ if(aGetFocusLink.IsSet())
+ aGetFocusLink.Call(this);
+ Edit::GetFocus();
+}
+
+//---------------------------------------------------
+//---------------------------------------------------
+class SwTOXButton : public PushButton
+{
+ SwFormToken aFormToken;
+ Link aPrevNextControlLink;
+ Link aGetFocusLink;
+ sal_Bool bNextControl;
+ SwTokenWindow* m_pParent;
+public:
+ SwTOXButton( Window* pParent, SwTokenWindow* pTokenWin,
+ const SwFormToken& rToken)
+ : PushButton(pParent, WB_BORDER|WB_TABSTOP),
+ bNextControl(sal_False),
+ aFormToken(rToken),
+ m_pParent(pTokenWin)
+ {
+ SetHelpId(HID_TOX_ENTRY_BUTTON);
+ }
+
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void GetFocus();
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+
+ sal_Bool IsNextControl() const {return bNextControl;}
+ void SetPrevNextLink(const Link& rLink) {aPrevNextControlLink = rLink;}
+ void SetGetFocusLink(const Link& rLink) {aGetFocusLink = rLink;}
+ const SwFormToken& GetFormToken() const {return aFormToken;}
+
+ void SetCharStyleName(const String& rSet, sal_uInt16 nPoolId)
+ {
+ aFormToken.sCharStyleName = rSet;
+ aFormToken.nPoolId = nPoolId;
+ }
+
+ void SetTabPosition(SwTwips nSet)
+ { aFormToken.nTabStopPosition = nSet; }
+
+ void SetFillChar( sal_Unicode cSet )
+ { aFormToken.cTabFillChar = cSet; }
+
+ void SetTabAlign(SvxTabAdjust eAlign)
+ { aFormToken.eTabAlign = eAlign;}
+
+ void SetChapterInfo(sal_uInt16 nSet) { aFormToken.nChapterFormat = nSet;}
+ sal_uInt16 GetChapterInfo() const{ return aFormToken.nChapterFormat;}
+
+ void SetLinkEnd()
+ {
+ DBG_ASSERT(TOKEN_LINK_START == aFormToken.eTokenType,
+ "call SetLinkEnd for link start only!")
+ aFormToken.eTokenType = TOKEN_LINK_END;
+ aFormToken.sText.AssignAscii(SwForm::aFormLinkEnd);
+ SetText(aFormToken.sText);
+ }
+ void SetLinkStart()
+ {
+ DBG_ASSERT(TOKEN_LINK_END == aFormToken.eTokenType,
+ "call SetLinkStart for link start only!")
+ aFormToken.eTokenType = TOKEN_LINK_START;
+ aFormToken.sText.AssignAscii(SwForm::aFormLinkStt);
+ SetText(aFormToken.sText);
+ }
+};
+
+//---------------------------------------------------
+void SwTOXButton::KeyInput( const KeyEvent& rKEvt )
+{
+ sal_Bool bCall = sal_False;
+ KeyCode aCode = rKEvt.GetKeyCode();
+ if(aCode.GetCode() == KEY_RIGHT)
+ {
+ bNextControl = sal_True;
+ bCall = sal_True;
+ }
+ else if(aCode.GetCode() == KEY_LEFT )
+ {
+ bNextControl = sal_False;
+ bCall = sal_True;
+ }
+ else if(aCode.GetCode() == KEY_DELETE)
+ {
+ m_pParent->RemoveControl(this, sal_True);
+ //this is invalid here
+ return;
+ }
+ if(bCall && aPrevNextControlLink.IsSet())
+ aPrevNextControlLink.Call(this);
+ else
+ PushButton::KeyInput(rKEvt);
+}
+//---------------------------------------------------
+void SwTOXButton::GetFocus()
+{
+ if(aGetFocusLink.IsSet())
+ aGetFocusLink.Call(this);
+ PushButton::GetFocus();
+}
+//---------------------------------------------------
+void SwTOXButton::RequestHelp( const HelpEvent& rHEvt )
+{
+ if(!m_pParent->CreateQuickHelp(this, aFormToken, rHEvt))
+ Button::RequestHelp(rHEvt);
+}
+/* -----------------------------23.12.99 14:28--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwIdxTreeListBox::SwIdxTreeListBox(SwTOXEntryTabPage* pPar, const ResId& rResId) :
+ SvTreeListBox(pPar, rResId),
+ pParent(pPar)
+{
+}
+/* -----------------------------23.12.99 14:19--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwIdxTreeListBox::RequestHelp( const HelpEvent& rHEvt )
+{
+ if( rHEvt.GetMode() & HELPMODE_QUICK )
+ {
+ Point aPos( ScreenToOutputPixel( rHEvt.GetMousePosPixel() ));
+ SvLBoxEntry* pEntry = GetEntry( aPos );
+ if( pEntry )
+ {
+ sal_uInt16 nLevel = GetModel()->GetAbsPos(pEntry);
+ String sEntry = pParent->GetLevelHelp(++nLevel);
+ if('*' == sEntry)
+ sEntry = GetEntryText(pEntry);
+ if(sEntry.Len())
+ {
+ SvLBoxTab* pTab;
+ SvLBoxItem* pItem = GetItem( pEntry, aPos.X(), &pTab );
+ if( pItem && SV_ITEM_ID_LBOXSTRING == pItem->IsA())
+ {
+ aPos = GetEntryPos( pEntry );
+
+ aPos.X() = GetTabPos( pEntry, pTab );
+ Size aSize( pItem->GetSize( this, pEntry ) );
+
+ if((aPos.X() + aSize.Width()) > GetSizePixel().Width())
+ aSize.Width() = GetSizePixel().Width() - aPos.X();
+
+ aPos = OutputToScreenPixel(aPos);
+ Rectangle aItemRect( aPos, aSize );
+ Help::ShowQuickHelp( this, aItemRect, sEntry,
+ QUICKHELP_LEFT|QUICKHELP_VCENTER );
+ }
+ }
+ }
+ }
+ else
+ SvTreeListBox::RequestHelp(rHEvt);
+}
+//---------------------------------------------------
+SwTOXEntryTabPage::SwTOXEntryTabPage(Window* pParent, const SfxItemSet& rAttrSet) :
+ SfxTabPage(pParent, SW_RES(TP_TOX_ENTRY), rAttrSet),
+ aLevelLB(this, ResId(LB_LEVEL )),
+ aLevelFT(this, ResId(FT_LEVEL )),
+ aTokenWIN(this, ResId(WIN_TOKEN )),
+ aAllLevelsPB(this, ResId(PB_ALL_LEVELS )),
+ aEntryNoPB(this, ResId(PB_ENTRYNO )),
+ aEntryPB(this, ResId(PB_ENTRY )),
+ aChapterInfoPB(this, ResId(PB_CHAPTERINFO )),
+ aPageNoPB(this, ResId(PB_PAGENO )),
+ aTabPB(this, ResId(PB_TAB )),
+ aHyperLinkPB(this, ResId(PB_HYPERLINK )),
+ aAuthFieldsLB(this, ResId(LB_AUTHFIELD )),
+ aAuthInsertPB(this, ResId(PB_AUTHINSERT )),
+ aAuthRemovePB(this, ResId(PB_AUTHREMOVE )),
+ aCharStyleFT(this, ResId(FT_CHARSTYLE )),
+ aCharStyleLB(this, ResId(LB_CHARSTYLE )),
+ aEditStylePB(this, ResId(PB_EDITSTYLE )),
+ aFillCharFT(this, ResId(FT_FILLCHAR )),
+ aFillCharCB(this, ResId(CB_FILLCHAR )),
+ aChapterEntryFT(this, ResId(FT_CHAPTERENTRY )),
+ aChapterEntryLB(this, ResId(LB_CHAPTERENTRY )),
+ aTabPosFT(this, ResId(FT_TABPOS )),
+ aTabPosMF(this, ResId(MF_TABPOS )),
+ aAutoRightCB(this, ResId(CB_AUTORIGHT )),
+ aEntryGB(this, ResId(GB_ENTRY )),
+ aRelToStyleCB(this, ResId(CB_RELTOSTYLE )),
+ aMainEntryStyleFT(this, ResId(FT_MAIN_ENTRY_STYLE)),
+ aMainEntryStyleLB(this, ResId(LB_MAIN_ENTRY_STYLE)),
+ aAlphaDelimCB(this, ResId(CB_ALPHADELIM )),
+ aCommaSeparatedCB(this, ResId(CB_COMMASEPARATED )),
+ aFormatGB(this, ResId(GB_FORMAT )),
+
+ aSortDocPosRB(this, ResId(RB_DOCPOS )),
+ aSortContentRB(this, ResId(RB_SORTCONTENT )),
+ aSortingGB(this, ResId(GB_SORTING )),
+
+ aFirstKeyFT(this, ResId(FT_FIRSTKEY )),
+ aFirstKeyLB(this, ResId(LB_FIRSTKEY )),
+ aSecondKeyFT(this, ResId(FT_SECONDKEY )),
+ aSecondKeyLB(this, ResId(LB_SECONDKEY )),
+ aThirdKeyFT(this, ResId(FT_THIRDDKEY )),
+ aThirdKeyLB(this, ResId(LB_THIRDKEY )),
+ aFirstSortUpRB(this, ResId(RB_SORTUP1 )),
+ aFirstSortDownRB(this, ResId(RB_SORTDOWN1 )),
+ aSecondSortUpRB(this, ResId(RB_SORTUP2 )),
+ aSecondSortDownRB(this, ResId(RB_SORTDOWN2 )),
+ aThirdSortUpRB(this, ResId(RB_SORTUP3 )),
+ aThirdSortDownRB(this, ResId(RB_SORTDOWN3 )),
+ aSortKeyGB(this, ResId(GB_SORTKEY )),
+ sNoCharStyle( ResId(STR_NO_CHAR_STYLE)),
+ sNoCharSortKey( ResId(STR_NOSORTKEY )),
+ sDelimStr( ResId(STR_DELIM)),
+ sAuthTypeStr( ResId(ST_AUTHTYPE)),
+ pCurrentForm(0),
+ bInLevelHdl(sal_False)
+{
+ FreeResource();
+
+ sLevelStr = aLevelFT.GetText();
+
+ aLevelLB.SetWindowBits( WB_HSCROLL );
+ aLevelLB.SetSpaceBetweenEntries(0);
+ aLevelLB.SetSelectionMode( SINGLE_SELECTION );
+ aLevelLB.SetHighlightRange(); // select full width
+ aLevelLB.SetHelpId(HID_INSERT_INDEX_ENTRY_LEVEL_LB);
+ aLevelLB.Show();
+
+ aLastTOXType.eType = (TOXTypes)USHRT_MAX;
+ aLastTOXType.nIndex = 0;
+ //aLevelGBSize = aLevelGB.GetSizePixel();
+ aLevelGBSize = aLevelFT.GetSizePixel();
+
+ SetExchangeSupport();
+ aEntryNoPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, InsertTokenHdl));
+ aEntryPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, InsertTokenHdl));
+ aChapterInfoPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, InsertTokenHdl));
+ aPageNoPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, InsertTokenHdl));
+ aTabPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, InsertTokenHdl));
+ aHyperLinkPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, InsertTokenHdl));
+ aEditStylePB.SetClickHdl(LINK(this, SwTOXEntryTabPage, EditStyleHdl));
+ aLevelLB.SetSelectHdl(LINK(this, SwTOXEntryTabPage, LevelHdl));
+ aTokenWIN.SetButtonSelectedHdl(LINK(this, SwTOXEntryTabPage, TokenSelectedHdl));
+ aTokenWIN.SetModifyHdl(LINK(this, SwTOXEntryTabPage, ModifyHdl));
+ aCharStyleLB.SetSelectHdl(LINK(this, SwTOXEntryTabPage, StyleSelectHdl));
+ aCharStyleLB.InsertEntry(sNoCharStyle);
+ aChapterEntryLB.SetSelectHdl(LINK(this, SwTOXEntryTabPage, ChapterInfoHdl));
+ aTabPosMF.SetModifyHdl(LINK(this, SwTOXEntryTabPage, TabPosHdl));
+ aFillCharCB.SetModifyHdl(LINK(this, SwTOXEntryTabPage, FillCharHdl));
+ aAutoRightCB.SetClickHdl(LINK(this, SwTOXEntryTabPage, AutoRightHdl));
+ aAuthInsertPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, RemoveInsertAuthHdl));
+ aAuthRemovePB.SetClickHdl(LINK(this, SwTOXEntryTabPage, RemoveInsertAuthHdl));
+ aSortDocPosRB.SetClickHdl(LINK(this, SwTOXEntryTabPage, SortKeyHdl));
+ aSortContentRB.SetClickHdl(LINK(this, SwTOXEntryTabPage, SortKeyHdl));
+ aAllLevelsPB.SetClickHdl(LINK(this, SwTOXEntryTabPage, AllLevelsHdl));
+
+ aAlphaDelimCB.SetClickHdl(LINK(this, SwTOXEntryTabPage, ModifyHdl));
+ aCommaSeparatedCB.SetClickHdl(LINK(this, SwTOXEntryTabPage, ModifyHdl));
+ aRelToStyleCB.SetClickHdl(LINK(this, SwTOXEntryTabPage, ModifyHdl));
+
+ aSortDocPosRB.Check();
+
+ aFillCharCB.SetMaxTextLen(1);
+ aFillCharCB.InsertEntry(' ');
+ aFillCharCB.InsertEntry('.');
+ aFillCharCB.InsertEntry('-');
+ aFillCharCB.InsertEntry('_');
+
+ aButtonPositions[0] = aEntryNoPB.GetPosPixel();
+ aButtonPositions[1] = aEntryPB.GetPosPixel();
+ aButtonPositions[2] = aChapterInfoPB.GetPosPixel();
+ aButtonPositions[3] = aPageNoPB.GetPosPixel();
+ aButtonPositions[4] = aTabPB.GetPosPixel();
+
+ aRelToStylePos = aRelToStyleCB.GetPosPixel();
+ aRelToStyleIdxPos = aRelToStylePos;
+ aRelToStyleIdxPos.Y() +=
+ 2 * (aAlphaDelimCB.GetPosPixel().Y() - aRelToStyleIdxPos.Y());
+ aEditStylePB.Enable(sal_False);
+
+ //fill the types in
+ sal_uInt32 i;
+ for( i = 0; i < AUTH_FIELD_END; i++)
+ {
+ String sTmp(SW_RES(STR_AUTH_FIELD_START + i));
+ sTmp.EraseAllChars('~');
+ sal_uInt16 nPos = aAuthFieldsLB.InsertEntry(sTmp);
+ aAuthFieldsLB.SetEntryData(nPos, (void*)(i));
+ }
+ sal_uInt16 nPos = aFirstKeyLB.InsertEntry(sNoCharSortKey);
+ aFirstKeyLB.SetEntryData(nPos, (void*)(USHRT_MAX));
+ nPos = aSecondKeyLB.InsertEntry(sNoCharSortKey);
+ aSecondKeyLB.SetEntryData(nPos, (void*)(USHRT_MAX));
+ nPos = aThirdKeyLB.InsertEntry(sNoCharSortKey);
+ aThirdKeyLB.SetEntryData(nPos, (void*)(USHRT_MAX));
+
+ for( i = 0; i < AUTH_FIELD_END; i++)
+ {
+ String sTmp(aAuthFieldsLB.GetEntry(i));
+ void* pEntryData = aAuthFieldsLB.GetEntryData(i);
+ nPos = aFirstKeyLB.InsertEntry(sTmp);
+ aFirstKeyLB.SetEntryData(nPos, pEntryData);
+ nPos = aSecondKeyLB.InsertEntry(sTmp);
+ aSecondKeyLB.SetEntryData(nPos, pEntryData);
+ nPos = aThirdKeyLB.InsertEntry(sTmp);
+ aThirdKeyLB.SetEntryData(nPos, pEntryData);
+ }
+ aFirstKeyLB.SelectEntryPos(0);
+ aSecondKeyLB.SelectEntryPos(0);
+ aThirdKeyLB.SelectEntryPos(0);
+
+}
+/* -----------------30.11.99 13:37-------------------
+ pVoid is used as signal to change all levels of the example
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXEntryTabPage, ModifyHdl, void*, pVoid)
+{
+ UpdateDescriptor();
+ SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+
+ if(pTOXDlg)
+ {
+ sal_uInt16 nCurLevel = aLevelLB.GetModel()->GetAbsPos(aLevelLB.FirstSelected()) + 1;
+ if(aLastTOXType.eType == TOX_CONTENT && pVoid)
+ nCurLevel = USHRT_MAX;
+ pTOXDlg->CreateOrUpdateExample(
+ pTOXDlg->GetCurrentTOXType().eType, TOX_PAGE_ENTRY, nCurLevel);
+ }
+ return 0;
+}
+
+/*-- 16.06.99 10:47:33---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwTOXEntryTabPage::~SwTOXEntryTabPage()
+{
+}
+/*-- 16.06.99 10:47:33---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwTOXEntryTabPage::FillItemSet( SfxItemSet& )
+{
+ // nothing to do
+ return sal_True;
+}
+/*-- 16.06.99 10:47:34---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwTOXEntryTabPage::Reset( const SfxItemSet& )
+{
+ SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+ const CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
+ pCurrentForm = pTOXDlg->GetForm(aCurType);
+ if(TOX_INDEX == aCurType.eType)
+ {
+ SwTOXDescription& rDesc = pTOXDlg->GetTOXDescription(aCurType);
+ String sMainEntryCharStyle = rDesc.GetMainEntryCharStyle();
+ if(sMainEntryCharStyle.Len())
+ {
+ if( LISTBOX_ENTRY_NOTFOUND ==
+ aMainEntryStyleLB.GetEntryPos(sMainEntryCharStyle))
+ aMainEntryStyleLB.InsertEntry(
+ sMainEntryCharStyle);
+ aMainEntryStyleLB.SelectEntry(sMainEntryCharStyle);
+ }
+ else
+ aMainEntryStyleLB.SelectEntry(sNoCharStyle);
+ aRelToStyleCB.Check(pCurrentForm->IsRelTabPos());
+ aAlphaDelimCB.Check(rDesc.GetIndexOptions()&TOI_ALPHA_DELIMITTER);
+ }
+ aCommaSeparatedCB.Check(pCurrentForm->IsCommaSeparated());
+}
+/*-- 16.06.99 10:47:34---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void lcl_ChgWidth(Window& rWin, long nDiff)
+{
+ Size aTempSz(rWin.GetSizePixel());
+ aTempSz.Width() += nDiff;
+ rWin.SetSizePixel(aTempSz);
+}
+/* ----------------------------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void lcl_ChgXPos(Window& rWin, long nDiff)
+{
+ Point aTempPos(rWin.GetPosPixel());
+ aTempPos.X() += nDiff;
+ rWin.SetPosPixel(aTempPos);
+}
+/* ----------------------------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwTOXEntryTabPage::ActivatePage( const SfxItemSet& rSet)
+{
+ SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+ const CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
+
+ pCurrentForm = pTOXDlg->GetForm(aCurType);
+ if( !( aLastTOXType == aCurType ))
+ {
+ BOOL bToxIsAuthorities = TOX_AUTHORITIES == aCurType.eType;
+ BOOL bToxIsIndex = TOX_INDEX == aCurType.eType;
+ BOOL bToxIsContent = TOX_CONTENT == aCurType.eType;
+
+ aLevelLB.Clear();
+ for(sal_uInt16 i = 1; i < pCurrentForm->GetFormMax(); i++)
+ {
+ if(bToxIsAuthorities)
+ aLevelLB.InsertEntry( SwAuthorityFieldType::GetAuthTypeName(
+ (ToxAuthorityType) (i - 1)) );
+ else if( bToxIsIndex )
+ {
+ if(i == 1)
+ aLevelLB.InsertEntry( sDelimStr );
+ else
+ aLevelLB.InsertEntry( String::CreateFromInt32(i - 1) );
+ }
+ else
+ aLevelLB.InsertEntry(String::CreateFromInt32(i));
+ }
+ if(bToxIsAuthorities)
+ {
+ //
+ SwWrtShell& rSh = pTOXDlg->GetWrtShell();
+ const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
+ rSh.GetFldType(RES_AUTHORITY, aEmptyStr);
+ if(pFType)
+ {
+ if(pFType->IsSortByDocument())
+ aSortDocPosRB.Check();
+ else
+ {
+ aSortContentRB.Check();
+ sal_uInt16 nKeyCount = pFType->GetSortKeyCount();
+ if(0 < nKeyCount)
+ {
+ const SwTOXSortKey* pKey = pFType->GetSortKey(0);
+ aFirstKeyLB.SelectEntryPos(
+ aFirstKeyLB.GetEntryPos((void*)(sal_uInt32)pKey->eField));
+ aFirstSortUpRB.Check(pKey->bSortAscending);
+ aFirstSortDownRB.Check(!pKey->bSortAscending);
+ }
+ if(1 < nKeyCount)
+ {
+ const SwTOXSortKey* pKey = pFType->GetSortKey(1);
+ aSecondKeyLB.SelectEntryPos(
+ aSecondKeyLB.GetEntryPos((void*)(sal_uInt32)pKey->eField));
+ aSecondSortUpRB.Check(pKey->bSortAscending);
+ aSecondSortDownRB.Check(!pKey->bSortAscending);
+ }
+ if(2 < nKeyCount)
+ {
+ const SwTOXSortKey* pKey = pFType->GetSortKey(2);
+ aThirdKeyLB.SelectEntryPos(
+ aThirdKeyLB.GetEntryPos((void*)(sal_uInt32)pKey->eField));
+ aThirdSortUpRB.Check(pKey->bSortAscending);
+ aThirdSortDownRB.Check(!pKey->bSortAscending);
+ }
+ }
+ }
+ SortKeyHdl(aSortDocPosRB.IsChecked() ? &aSortDocPosRB : &aSortContentRB);
+ aLevelFT.SetText(sAuthTypeStr);
+ }
+ else
+ aLevelFT.SetText(sLevelStr);
+
+ long nDiff = 0;
+ if( bToxIsAuthorities ? aLevelFT.GetSizePixel() == aLevelGBSize
+ : aLevelFT.GetSizePixel() != aLevelGBSize )
+ {
+ nDiff = aLevelGBSize.Width();
+ if( !bToxIsAuthorities )
+ nDiff *= -1;
+ }
+
+ if(nDiff)
+ {
+// lcl_ChgWidth(aLevelGB, nDiff);
+ lcl_ChgWidth(aLevelFT, nDiff);
+ lcl_ChgWidth(aLevelLB, nDiff);
+ lcl_ChgXPos(aCharStyleFT, nDiff);
+ lcl_ChgXPos(aCharStyleLB, nDiff);
+ lcl_ChgWidth(aCharStyleLB, -nDiff);
+ // lcl_ChgXPos(aEditStylePB, -nDiff);
+ lcl_ChgXPos(aFillCharFT, nDiff);
+ lcl_ChgXPos(aFillCharCB, nDiff);
+ lcl_ChgXPos(aTabPosFT, nDiff);
+ lcl_ChgXPos(aTabPosMF, nDiff);
+ lcl_ChgXPos(aAutoRightCB, nDiff);
+ lcl_ChgXPos(aAuthFieldsLB, nDiff);
+ lcl_ChgXPos(aAuthInsertPB, nDiff);
+ lcl_ChgXPos(aAuthRemovePB, nDiff);
+ lcl_ChgXPos(aTokenWIN, nDiff);
+ lcl_ChgWidth(aTokenWIN, -nDiff);
+ lcl_ChgXPos(aSortDocPosRB, nDiff);
+ lcl_ChgXPos(aSortContentRB, nDiff);
+ lcl_ChgXPos(aFormatGB, nDiff);
+ lcl_ChgWidth(aFormatGB, -nDiff);
+ lcl_ChgXPos(aSortingGB, nDiff);
+ lcl_ChgWidth(aSortingGB, -nDiff);
+ lcl_ChgXPos(aEntryGB, nDiff);
+ lcl_ChgWidth(aEntryGB, -nDiff);
+ }
+ Link aLink = aLevelLB.GetSelectHdl();
+ aLevelLB.SetSelectHdl(Link());
+ aLevelLB.Select( aLevelLB.GetEntry( bToxIsIndex ? 1 : 0 ) );
+ aLevelLB.SetSelectHdl(aLink);
+
+ // sort token buttons
+ aEntryNoPB.SetPosPixel(aButtonPositions[0]);
+ aEntryPB.SetPosPixel(aButtonPositions[ bToxIsContent ? 1 : 0]);
+ aChapterInfoPB.SetPosPixel(aButtonPositions[2]);
+ aPageNoPB.SetPosPixel(aButtonPositions[3]);
+ sal_uInt16 nBtPos = 1;
+ if( bToxIsContent )
+ nBtPos = 2;
+ else if( bToxIsAuthorities )
+ nBtPos = 4;
+ aTabPB.SetPosPixel(aButtonPositions[nBtPos]);
+ aHyperLinkPB.SetPosPixel(aButtonPositions[4]);
+
+ //show or hide controls
+ aAllLevelsPB.Show( bToxIsContent );
+ aEntryNoPB.Show( bToxIsContent );
+ aHyperLinkPB.Show( bToxIsContent );
+ aRelToStyleCB.Show( !bToxIsAuthorities );
+ aChapterInfoPB.Show( bToxIsIndex );
+ aEntryPB.Show( !bToxIsAuthorities );
+ aPageNoPB.Show( !bToxIsAuthorities );
+ aAuthFieldsLB.Show( bToxIsAuthorities );
+ aAuthInsertPB.Show( bToxIsAuthorities );
+ aAuthRemovePB.Show( bToxIsAuthorities );
+ aFormatGB.Show( !bToxIsAuthorities );
+ aSortDocPosRB.Show( bToxIsAuthorities );
+ aSortContentRB.Show( bToxIsAuthorities );
+ aSortingGB.Show( bToxIsAuthorities );
+ aFirstKeyFT.Show( bToxIsAuthorities );
+ aFirstKeyLB.Show( bToxIsAuthorities );
+ aSecondKeyFT.Show( bToxIsAuthorities );
+ aSecondKeyLB.Show( bToxIsAuthorities );
+ aThirdKeyFT.Show( bToxIsAuthorities );
+ aThirdKeyLB.Show( bToxIsAuthorities );
+ aSortKeyGB.Show( bToxIsAuthorities );
+ aFirstSortUpRB.Show( bToxIsAuthorities );
+ aFirstSortDownRB.Show( bToxIsAuthorities );
+ aSecondSortUpRB.Show( bToxIsAuthorities );
+ aSecondSortDownRB.Show( bToxIsAuthorities );
+ aThirdSortUpRB.Show( bToxIsAuthorities );
+ aThirdSortDownRB.Show( bToxIsAuthorities );
+
+ aRelToStyleCB.SetPosPixel( bToxIsIndex ? aRelToStyleIdxPos
+ : aRelToStylePos );
+
+// aRecalcTabCB.Show( aCurType.eType == TOX_CONTENT);
+
+ aMainEntryStyleFT.Show( bToxIsIndex );
+ aMainEntryStyleLB.Show( bToxIsIndex );
+ aAlphaDelimCB.Show( bToxIsIndex );
+ aCommaSeparatedCB.Show( bToxIsIndex );
+
+ //Resizing
+ if( TOX_CONTENT == aLastTOXType.eType|| bToxIsContent )
+ {
+ Point aTokenWinPos(aTokenWIN.GetPosPixel());
+ Size aTokenWinSz(aTokenWIN.GetSizePixel());
+
+ long nButtonWidth = aAllLevelsPB.GetSizePixel().Width();
+ long nButtonXPos = aAllLevelsPB.GetPosPixel().X();
+ long nTokenWinSize;
+ if( bToxIsContent )
+ nTokenWinSize = nButtonXPos - ( nButtonWidth / 13);
+ else
+ nTokenWinSize = nButtonXPos + nButtonWidth;
+ nTokenWinSize -= aTokenWinPos.X();
+ aTokenWinSz.Width() = nTokenWinSize;
+ aTokenWIN.SetSizePixel(aTokenWinSz);
+ }
+ }
+ aLastTOXType = aCurType;
+
+ //invalidate PatternWindow
+ aTokenWIN.Invalidate();
+ LevelHdl(&aLevelLB);
+}
+/* -----------------30.11.99 15:04-------------------
+
+ --------------------------------------------------*/
+void SwTOXEntryTabPage::UpdateDescriptor()
+{
+ WriteBackLevel();
+ SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+ SwTOXDescription& rDesc = pTOXDlg->GetTOXDescription(aLastTOXType);
+ if(TOX_INDEX == aLastTOXType.eType)
+ {
+ String sTemp(aMainEntryStyleLB.GetSelectEntry());
+ rDesc.SetMainEntryCharStyle(sNoCharStyle == sTemp ? aEmptyStr : sTemp);
+ sal_uInt16 nIdxOptions = rDesc.GetIndexOptions() & ~TOI_ALPHA_DELIMITTER;
+ if(aAlphaDelimCB.IsChecked())
+ nIdxOptions |= TOI_ALPHA_DELIMITTER;
+ rDesc.SetIndexOptions(nIdxOptions);
+ }
+ else if(TOX_AUTHORITIES == aLastTOXType.eType)
+ {
+ rDesc.SetSortByDocument(aSortDocPosRB.IsChecked());
+ SwTOXSortKey aKey1, aKey2, aKey3;
+ aKey1.eField = (ToxAuthorityField)(sal_uInt32)aFirstKeyLB.GetEntryData(
+ aFirstKeyLB.GetSelectEntryPos());
+ aKey1.bSortAscending = aFirstSortUpRB.IsChecked();
+ aKey2.eField = (ToxAuthorityField)(sal_uInt32)aSecondKeyLB.GetEntryData(
+ aSecondKeyLB.GetSelectEntryPos());
+ aKey2.bSortAscending = aSecondSortUpRB.IsChecked();
+ aKey3.eField = (ToxAuthorityField)(sal_uInt32)aThirdKeyLB.GetEntryData(
+ aThirdKeyLB.GetSelectEntryPos());
+ aKey3.bSortAscending = aThirdSortUpRB.IsChecked();
+
+
+ rDesc.SetSortKeys(aKey1, aKey2, aKey3);
+ }
+ SwForm* pCurrentForm = pTOXDlg->GetForm(aLastTOXType);
+ if(aRelToStyleCB.IsVisible())
+ {
+ pCurrentForm->SetRelTabPos(aRelToStyleCB.IsChecked());
+ }
+ if(aCommaSeparatedCB.IsVisible())
+ pCurrentForm->SetCommaSeparated(aCommaSeparatedCB.IsChecked());
+}
+/*-- 16.06.99 10:47:34---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+int SwTOXEntryTabPage::DeactivatePage( SfxItemSet* pSet)
+{
+ UpdateDescriptor();
+ return LEAVE_PAGE;
+}
+/*-- 16.06.99 10:47:34---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SfxTabPage* SwTOXEntryTabPage::Create( Window* pParent, const SfxItemSet& rAttrSet)
+{
+ return new SwTOXEntryTabPage(pParent, rAttrSet);
+}
+/*-- 16.06.99 10:47:35---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+IMPL_LINK(SwTOXEntryTabPage, EditStyleHdl, PushButton*, pBtn)
+{
+ if( LISTBOX_ENTRY_NOTFOUND != aCharStyleLB.GetSelectEntryPos())
+ {
+ SfxStringItem aStyle(SID_STYLE_EDIT, aCharStyleLB.GetSelectEntry());
+ SfxUInt16Item aFamily(SID_STYLE_FAMILY, SFX_STYLE_FAMILY_CHAR);
+ // TODO: WrtShell?
+// SwPtrItem aShell(FN_PARAM_WRTSHELL, pWrtShell);
+ Window* pDefDlgParent = Application::GetDefDialogParent();
+ Application::SetDefDialogParent( pBtn );
+ ((SwMultiTOXTabDialog*)GetTabDialog())->GetWrtShell().
+ GetView().GetViewFrame()->GetDispatcher()->Execute(
+ SID_STYLE_EDIT, SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_MODAL,
+ &aStyle, &aFamily/*, &aShell*/, 0L);
+ Application::SetDefDialogParent( pDefDlgParent );
+ }
+ return 0;
+}
+/* -----------------04.10.99 11:34-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXEntryTabPage, RemoveInsertAuthHdl, PushButton*, pButton)
+{
+ sal_Bool bInsert = pButton == &aAuthInsertPB;
+ if(bInsert)
+ {
+ sal_uInt16 nSelPos = aAuthFieldsLB.GetSelectEntryPos();
+ String sToInsert(aAuthFieldsLB.GetSelectEntry());
+ SwFormToken aInsert(TOKEN_AUTHORITY);
+ aInsert.nAuthorityField = (sal_uInt16)(sal_uInt32)aAuthFieldsLB.GetEntryData(nSelPos);
+ aTokenWIN.InsertAtSelection(String::CreateFromAscii(
+ SwForm::aFormAuth), aInsert);
+ aAuthFieldsLB.RemoveEntry(sToInsert);
+ aAuthFieldsLB.SelectEntryPos( nSelPos ? nSelPos - 1 : 0);
+ }
+ else
+ {
+ Control* pCtrl = aTokenWIN.GetActiveControl();
+ DBG_ASSERT(WINDOW_EDIT != pCtrl->GetType(), "Remove should be disabled")
+ if( WINDOW_EDIT != pCtrl->GetType() )
+ {
+ //fill it into the ListBox
+ const SwFormToken& rToken = ((SwTOXButton*)pCtrl)->GetFormToken();
+ PreTokenButtonRemoved(rToken);
+ aTokenWIN.RemoveControl((SwTOXButton*)pCtrl);
+ }
+ }
+ ModifyHdl(0);
+ return 0;
+}
+/* -----------------------------17.01.00 13:44--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwTOXEntryTabPage::PreTokenButtonRemoved(const SwFormToken& rToken)
+{
+ //fill it into the ListBox
+ sal_uInt32 nData = rToken.nAuthorityField;
+ String sTemp(SW_RES(STR_AUTH_FIELD_START + nData));
+ sTemp.EraseAllChars('~');
+ sal_uInt16 nPos = aAuthFieldsLB.InsertEntry(sTemp);
+ aAuthFieldsLB.SetEntryData(nPos, (void*)(nData));
+}
+/*-- 16.06.99 10:47:35---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+IMPL_LINK(SwTOXEntryTabPage, InsertTokenHdl, PushButton*, pBtn)
+{
+ String sText;
+ FormTokenType eTokenType;
+ if(pBtn == &aEntryNoPB)
+ {
+ sText.AssignAscii(SwForm::aFormEntryNum);
+ eTokenType = TOKEN_ENTRY_NO;
+ }
+ else if(pBtn == &aEntryPB)
+ {
+ if( TOX_CONTENT == pCurrentForm->GetTOXType() )
+ {
+ sText.AssignAscii( SwForm::aFormEntryTxt );
+ eTokenType = TOKEN_ENTRY_TEXT;
+ }
+ else
+ {
+ sText.AssignAscii( SwForm::aFormEntry);
+ eTokenType = TOKEN_ENTRY;
+ }
+ }
+ else if(pBtn == &aChapterInfoPB)
+ {
+ sText.AssignAscii( SwForm::aFormChapterMark);
+ eTokenType = TOKEN_CHAPTER_INFO;
+ }
+ else if(pBtn == &aPageNoPB)
+ {
+ sText.AssignAscii(SwForm::aFormPageNums);
+ eTokenType = TOKEN_PAGE_NUMS;
+ }
+ else if(pBtn == &aHyperLinkPB)
+ {
+ sText.AssignAscii(SwForm::aFormLinkStt);
+ eTokenType = TOKEN_LINK_START;
+ }
+ else if(pBtn == &aTabPB)
+ {
+ sText.AssignAscii(SwForm::aFormTab);
+ eTokenType = TOKEN_TAB_STOP;
+ }
+ SwFormToken aInsert(eTokenType);
+ aInsert.nTabStopPosition = 0;
+ aTokenWIN.InsertAtSelection(sText, aInsert);
+ ModifyHdl(0);
+ return 0;
+}
+/* -----------------------------14.01.00 11:53--------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK(SwTOXEntryTabPage, AllLevelsHdl, PushButton*, pButton)
+{
+ //get current level
+ //write it into all levels
+ if(aTokenWIN.IsValid())
+ {
+ String sNewToken = aTokenWIN.GetPattern();
+ for(sal_uInt16 i = 1; i < pCurrentForm->GetFormMax(); i++)
+ pCurrentForm->SetPattern(i, sNewToken);
+ //
+ ModifyHdl(this);
+ }
+ return 0;
+}
+
+/* -----------------02.12.99 12:40-------------------
+
+ --------------------------------------------------*/
+void SwTOXEntryTabPage::WriteBackLevel()
+{
+ if(aTokenWIN.IsValid())
+ {
+ String sNewToken = aTokenWIN.GetPattern();
+ sal_uInt16 nLastLevel = aTokenWIN.GetLastLevel();
+ if(nLastLevel != USHRT_MAX)
+ pCurrentForm->SetPattern(nLastLevel + 1, sNewToken );
+ }
+}
+/*-- 16.06.99 10:47:35---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+IMPL_LINK(SwTOXEntryTabPage, LevelHdl, SvTreeListBox*, pBox)
+{
+ if(bInLevelHdl)
+ return 0;
+ bInLevelHdl = sal_True;
+ WriteBackLevel();
+
+ sal_uInt16 nLevel = pBox->GetModel()->GetAbsPos(pBox->FirstSelected());
+ aTokenWIN.SetForm(*pCurrentForm, nLevel);
+ if(TOX_AUTHORITIES == pCurrentForm->GetTOXType())
+ {
+ //fill the types in
+ aAuthFieldsLB.Clear();
+ for( sal_uInt32 i = 0; i < AUTH_FIELD_END; i++)
+ {
+ String sTmp(SW_RES(STR_AUTH_FIELD_START + i));
+ sTmp.EraseAllChars('~');
+ sal_uInt16 nPos = aAuthFieldsLB.InsertEntry(sTmp);
+ aAuthFieldsLB.SetEntryData(nPos, (void*)(i));
+ }
+ String sLevelPattern(pCurrentForm->GetPattern(nLevel + 1));
+ SwFormTokenEnumerator aEnumerator(sLevelPattern);
+ while(aEnumerator.HasNextToken())
+ {
+ SwFormToken aToken = aEnumerator.GetNextToken();
+ if(TOKEN_AUTHORITY == aToken.eTokenType)
+ {
+ sal_uInt32 nSearch = aToken.nAuthorityField;
+ sal_uInt16 nLstBoxPos = aAuthFieldsLB.GetEntryPos( (void*) nSearch );
+ DBG_ASSERT(LISTBOX_ENTRY_NOTFOUND != nLstBoxPos, "Entry not found?")
+ aAuthFieldsLB.RemoveEntry(nLstBoxPos);
+ }
+ }
+ aAuthFieldsLB.SelectEntryPos(0);
+ }
+ bInLevelHdl = sal_False;
+ pBox->GrabFocus();
+ return 0;
+}
+/* -----------------20.10.99 13:16-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXEntryTabPage, SortKeyHdl, RadioButton*, pButton)
+{
+ sal_Bool bEnable = &aSortContentRB == pButton;
+ aFirstKeyFT.Enable(bEnable);
+ aFirstKeyLB.Enable(bEnable);
+ aSecondKeyFT.Enable(bEnable);
+ aSecondKeyLB.Enable(bEnable);
+ aThirdKeyFT.Enable(bEnable);
+ aThirdKeyLB.Enable(bEnable);
+ aSortKeyGB.Enable(bEnable);
+ aFirstSortUpRB.Enable(bEnable);
+ aFirstSortDownRB.Enable(bEnable);
+ aSecondSortUpRB.Enable(bEnable);
+ aSecondSortDownRB.Enable(bEnable);
+ aThirdSortUpRB.Enable(bEnable);
+ aThirdSortDownRB.Enable(bEnable);
+ return 0;
+}
+/* -----------------01.07.99 12:21-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXEntryTabPage, TokenSelectedHdl, SwFormToken*, pToken)
+{
+ if(pToken->sCharStyleName.Len())
+ aCharStyleLB.SelectEntry(pToken->sCharStyleName);
+ else
+ aCharStyleLB.SelectEntry(sNoCharStyle);
+ //StyleSelectHdl(&aCharStyleLB);
+
+ sal_Bool bTabStop = pToken->eTokenType == TOKEN_TAB_STOP;
+
+ aCharStyleLB.Enable(!bTabStop);
+ String sEntry = aCharStyleLB.GetSelectEntry();
+ aEditStylePB.Enable(!bTabStop && sEntry != sNoCharStyle);
+
+ if(pToken->eTokenType == TOKEN_CHAPTER_INFO)
+ {
+ if(pToken->nChapterFormat < 3)
+ aChapterEntryLB.SelectEntryPos(pToken->nChapterFormat);
+ else
+ aChapterEntryLB.SetNoSelection();
+ }
+
+ aFillCharFT.Show(bTabStop);
+ aFillCharCB.Show(bTabStop);
+ aTabPosFT.Show(bTabStop);
+ aTabPosMF.Show(bTabStop);
+ aAutoRightCB.Show(bTabStop);
+ aAutoRightCB.Enable(bTabStop);
+ if(bTabStop)
+ {
+ aTabPosMF.SetValue(aTabPosMF.Normalize(pToken->nTabStopPosition), FUNIT_TWIP);
+ aAutoRightCB.Check(SVX_TAB_ADJUST_END == pToken->eTabAlign);
+ aFillCharCB.SetText(pToken->cTabFillChar);
+ aTabPosFT.Enable(!aAutoRightCB.IsChecked());
+ aTabPosMF.Enable(!aAutoRightCB.IsChecked());
+ }
+ else
+ {
+ aTabPosMF.Enable(sal_False);
+ }
+
+ aChapterEntryFT.Show(pToken->eTokenType == TOKEN_CHAPTER_INFO);
+ aChapterEntryLB.Show(pToken->eTokenType == TOKEN_CHAPTER_INFO);
+
+ //now enable the visible buttons
+ //- inserting the same type of control is not allowed
+ //- some types of controls can only appear once (EntryText EntryNumber)
+
+ if(aEntryNoPB.IsVisible())
+ {
+ aEntryNoPB.Enable(TOKEN_ENTRY_NO != pToken->eTokenType );
+ }
+ if(aEntryPB.IsVisible())
+ {
+ aEntryPB.Enable(TOKEN_ENTRY_TEXT != pToken->eTokenType &&
+ !aTokenWIN.Contains(TOKEN_ENTRY_TEXT)
+ && !aTokenWIN.Contains(TOKEN_ENTRY));
+ }
+
+ if(aChapterInfoPB.IsVisible())
+ {
+ aChapterInfoPB.Enable(TOKEN_CHAPTER_INFO != pToken->eTokenType);
+ }
+ if(aPageNoPB.IsVisible())
+ {
+ aPageNoPB.Enable(TOKEN_PAGE_NUMS != pToken->eTokenType &&
+ !aTokenWIN.Contains(TOKEN_PAGE_NUMS));
+ }
+ if(aTabPB.IsVisible())
+ {
+ aTabPB.Enable(!bTabStop);
+ }
+ if(aHyperLinkPB.IsVisible())
+ {
+ aHyperLinkPB.Enable(TOKEN_LINK_START != pToken->eTokenType &&
+ TOKEN_LINK_END != pToken->eTokenType);
+ }
+ //table of authorities
+ if(aAuthInsertPB.IsVisible())
+ {
+ sal_Bool bText = TOKEN_TEXT == pToken->eTokenType;
+ aAuthInsertPB.Enable(bText && aAuthFieldsLB.GetSelectEntry().Len());
+ aAuthRemovePB.Enable(!bText);
+ }
+
+ return 0;
+}
+/* -----------------01.07.99 12:36-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXEntryTabPage, StyleSelectHdl, ListBox*, pBox)
+{
+ String sEntry = pBox->GetSelectEntry();
+ sal_uInt16 nId = (sal_uInt16)(long)pBox->GetEntryData(pBox->GetSelectEntryPos());
+ aEditStylePB.Enable(sEntry != sNoCharStyle);
+ if(sEntry == sNoCharStyle)
+ sEntry.Erase();
+ Control* pCtrl = aTokenWIN.GetActiveControl();
+ DBG_ASSERT(pCtrl, "no active control?")
+ if(pCtrl)
+ {
+ if(WINDOW_EDIT == pCtrl->GetType())
+ ((SwTOXEdit*)pCtrl)->SetCharStyleName(sEntry, nId);
+ else
+ ((SwTOXButton*)pCtrl)->SetCharStyleName(sEntry, nId);
+
+ }
+ ModifyHdl(0);
+ return 0;
+}
+/* -----------------------------11.01.00 12:54--------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK(SwTOXEntryTabPage, ChapterInfoHdl, ListBox*, pBox)
+{
+ sal_uInt16 nPos = pBox->GetSelectEntryPos();
+ if(LISTBOX_ENTRY_NOTFOUND != nPos)
+ {
+ Control* pCtrl = aTokenWIN.GetActiveControl();
+ DBG_ASSERT(pCtrl, "no active control?")
+ if(pCtrl && WINDOW_EDIT != pCtrl->GetType())
+ ((SwTOXButton*)pCtrl)->SetChapterInfo(nPos);
+
+ ModifyHdl(0);
+ }
+ return 0;
+}
+/* -----------------19.08.99 15:37-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXEntryTabPage, TabPosHdl, MetricField*, pField)
+{
+ Control* pCtrl = aTokenWIN.GetActiveControl();
+ DBG_ASSERT(pCtrl && WINDOW_EDIT != pCtrl->GetType() &&
+ TOKEN_TAB_STOP == ((SwTOXButton*)pCtrl)->GetFormToken().eTokenType,
+ "no active style::TabStop control?")
+ if( pCtrl && WINDOW_EDIT != pCtrl->GetType() )
+ {
+ ((SwTOXButton*)pCtrl)->SetTabPosition(
+ pField->Denormalize( pField->GetValue( FUNIT_TWIP )));
+ }
+ ModifyHdl(0);
+ return 0;
+}
+/* -----------------09.09.99 15:37-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTOXEntryTabPage, FillCharHdl, ComboBox*, pBox)
+{
+ Control* pCtrl = aTokenWIN.GetActiveControl();
+ DBG_ASSERT(pCtrl && WINDOW_EDIT != pCtrl->GetType() &&
+ TOKEN_TAB_STOP == ((SwTOXButton*)pCtrl)->GetFormToken().eTokenType,
+ "no active style::TabStop control?")
+ if(pCtrl && WINDOW_EDIT != pCtrl->GetType())
+ {
+ sal_Unicode cSet;
+ if( pBox->GetText().Len() )
+ cSet = pBox->GetText().GetChar(0);
+ else
+ cSet = ' ';
+ ((SwTOXButton*)pCtrl)->SetFillChar( cSet );
+ }
+ ModifyHdl(0);
+ return 0;
+}
+
+/*-- 16.06.99 10:47:36---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+IMPL_LINK(SwTOXEntryTabPage, AutoRightHdl, CheckBox*, pBox)
+{
+ //the most right style::TabStop is usually right aligned
+ Control* pCurCtrl = aTokenWIN.GetActiveControl();
+ DBG_ASSERT(WINDOW_EDIT != pCurCtrl->GetType() &&
+ ((SwTOXButton*)pCurCtrl)->GetFormToken().eTokenType == TOKEN_TAB_STOP,
+ "no style::TabStop selected!")
+
+ const SwFormToken& rToken = ((SwTOXButton*)pCurCtrl)->GetFormToken();
+ sal_Bool bChecked = pBox->IsChecked();
+ if(rToken.eTokenType == TOKEN_TAB_STOP)
+ ((SwTOXButton*)pCurCtrl)->SetTabAlign(
+ bChecked ? SVX_TAB_ADJUST_END : SVX_TAB_ADJUST_LEFT);
+ aTabPosFT.Enable(!bChecked);
+ aTabPosMF.Enable(!bChecked);
+ ModifyHdl(0);
+ return 0;
+}
+/* -----------------16.06.99 11:00-------------------
+
+ --------------------------------------------------*/
+void SwTOXEntryTabPage::SetWrtShell(SwWrtShell& rSh)
+{
+ SwDocShell* pDocSh = rSh.GetView().GetDocShell();
+ ::FillCharStyleListBox(aCharStyleLB, pDocSh, TRUE);
+ for(sal_uInt16 i = 0; i < aCharStyleLB.GetEntryCount(); i++)
+ {
+ aMainEntryStyleLB.InsertEntry( aCharStyleLB.GetEntry(i) );
+ aMainEntryStyleLB.SetEntryData(i, aCharStyleLB.GetEntryData(i));
+ }
+ String sTmp; GetDocPoolNm( RES_POOLCHR_IDX_MAIN_ENTRY, sTmp );
+ aMainEntryStyleLB.SelectEntry(sTmp);
+}
+/* -----------------------------23.12.99 14:23--------------------------------
+
+ ---------------------------------------------------------------------------*/
+String SwTOXEntryTabPage::GetLevelHelp(sal_uInt16 nLevel) const
+{
+ String sRet;
+ SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+ const CurTOXType aCurType = pTOXDlg->GetCurrentTOXType();
+ if( TOX_INDEX == aCurType.eType )
+ GetDocPoolNm( 1 == nLevel ? RES_POOLCOLL_TOX_IDXBREAK
+ : RES_POOLCOLL_TOX_IDX1 + nLevel-2, sRet );
+
+ else if( TOX_AUTHORITIES == aCurType.eType )
+ {
+ //wildcard -> show entry text
+ sRet = '*';
+ }
+ return sRet;
+}
+/* -----------------16.06.99 15:18-------------------
+
+ --------------------------------------------------*/
+
+SwTokenWindow::SwTokenWindow(SwTOXEntryTabPage* pParent, const ResId& rResId) :
+ Window( pParent, rResId ),
+ aLeftScrollWin(this, ResId(WIN_LEFT_SCROLL )),
+ aCtrlParentWin(this, ResId(WIN_CTRL_PARENT )),
+ aRightScrollWin(this, ResId(WIN_RIGHT_SCROLL )),
+ pForm(0),
+ m_pParent(pParent),
+ nLevel(0),
+ bValid(sal_False),
+ pActiveCtrl(0),
+ sCharStyle(ResId(STR_CHARSTYLE))
+{
+ SetHelpId(HID_TOKEN_WINDOW);
+ for(sal_uInt16 i = 0; i < TOKEN_END; i++)
+ {
+ sal_uInt16 nTextId = STR_BUTTON_TEXT_START + i;
+ if( STR_TOKEN_ENTRY_TEXT == nTextId )
+ nTextId = STR_TOKEN_ENTRY;
+ aButtonTexts[i] = String(ResId(nTextId));
+
+ sal_uInt16 nHelpId = STR_BUTTON_HELP_TEXT_START + i;
+ if(STR_TOKEN_HELP_ENTRY_TEXT == nHelpId)
+ nHelpId = STR_TOKEN_HELP_ENTRY;
+ aButtonHelpTexts[i] = String(ResId(nHelpId));
+ }
+
+ FreeResource();
+
+ Link aLink(LINK(this, SwTokenWindow, ScrollHdl));
+ aLeftScrollWin.SetClickHdl(aLink);
+ aRightScrollWin.SetClickHdl(aLink);
+}
+/* -----------------01.07.99 12:17-------------------
+
+ --------------------------------------------------*/
+SwTokenWindow::~SwTokenWindow()
+{
+// for(sal_uInt16 i = GetItemCount(); i ; i--)
+// RemoveItem(i - 1);
+
+ for( sal_uInt16 i = aControlList.Count(); i; )
+ {
+ Control* pControl = aControlList.Remove( --i );
+ delete pControl;
+ }
+}
+/* -----------------16.06.99 13:56-------------------
+
+ --------------------------------------------------*/
+void SwTokenWindow::SetForm(SwForm& rForm, sal_uInt16 nL)
+{
+ SetActiveControl(0);
+ bValid = sal_True;
+ if(pForm)
+ {
+ //apply current level settings to the form
+ for( sal_uInt16 i = aControlList.Count(); i; )
+ {
+ Control* pControl = aControlList.Remove( --i );
+ delete pControl;
+ }
+ }
+ nLevel = nL;
+ pForm = &rForm;
+ //now the display
+ if(nLevel < MAXLEVEL || rForm.GetTOXType() == TOX_AUTHORITIES)
+ {
+ sal_uInt16 nControlId = 1;
+ Size aToolBoxSize = GetSizePixel();
+
+ String sLevelPattern(pForm->GetPattern(nLevel + 1));
+ SwFormTokenEnumerator aEnumerator(sLevelPattern);
+ sal_Bool bLastWasText = sal_False; //assure alternating text - code - text
+
+ Control* pSetActiveControl = 0;
+ while(aEnumerator.HasNextToken())
+ {
+ SwFormToken aToken(aEnumerator.GetNextToken());
+ if(TOKEN_TEXT == aToken.eTokenType)
+ {
+ DBG_ASSERT(!bLastWasText, "text following text is invalid")
+ Control* pCtrl = InsertItem(aToken.sText, aToken);
+ bLastWasText = sal_True;
+ if(!GetActiveControl())
+ SetActiveControl(pCtrl);
+ }
+ else
+ {
+ if( !bLastWasText )
+ {
+ bLastWasText = sal_True;
+ SwFormToken aTemp(TOKEN_TEXT);
+ Control* pCtrl = InsertItem(aEmptyStr, aTemp);
+ if(!pSetActiveControl)
+ pSetActiveControl = pCtrl;
+ }
+ const sal_Char* pTmp = 0;
+ switch( aToken.eTokenType )
+ {
+ case TOKEN_ENTRY_NO: pTmp = SwForm::aFormEntryNum; break;
+ case TOKEN_ENTRY_TEXT: pTmp = SwForm::aFormEntryTxt; break;
+ case TOKEN_ENTRY: pTmp = SwForm::aFormEntry; break;
+ case TOKEN_TAB_STOP: pTmp = SwForm::aFormTab; break;
+ case TOKEN_PAGE_NUMS: pTmp = SwForm::aFormPageNums; break;
+ case TOKEN_CHAPTER_INFO:pTmp = SwForm::aFormChapterMark; break;
+ case TOKEN_LINK_START: pTmp = SwForm::aFormLinkStt; break;
+ case TOKEN_LINK_END: pTmp = SwForm::aFormLinkEnd; break;
+ case TOKEN_AUTHORITY: pTmp = SwForm::aFormAuth; break;
+ }
+
+ InsertItem( pTmp ? String::CreateFromAscii(pTmp)
+ : aEmptyStr, aToken );
+ bLastWasText = sal_False;
+ }
+ }
+ SetActiveControl(pSetActiveControl);
+
+ if(!bLastWasText)
+ {
+ bLastWasText = sal_True;
+ SwFormToken aTemp(TOKEN_TEXT);
+ InsertItem(aEmptyStr, aTemp);
+ }
+ }
+ AdjustScrolling();
+}
+/* -----------------19.08.99 13:00-------------------
+
+ --------------------------------------------------*/
+void SwTokenWindow::SetActiveControl(Control* pSet)
+{
+ if( pSet != pActiveCtrl )
+ {
+ if( pActiveCtrl && WINDOW_EDIT == pActiveCtrl->GetType() )
+ ((SwTOXEdit*)pActiveCtrl)->SetControlBackground( COL_WHITE );
+
+ pActiveCtrl = pSet;
+ if( pActiveCtrl )
+ {
+ pActiveCtrl->GrabFocus();
+ //it must be a SwTOXEdit
+ const SwFormToken* pFToken;
+ if( WINDOW_EDIT == pActiveCtrl->GetType() )
+ {
+ ((SwTOXEdit*)pActiveCtrl)->SetControlBackground(COL_LIGHTGRAY);
+ pFToken = &((SwTOXEdit*)pActiveCtrl)->GetFormToken();
+ }
+ else
+ pFToken = &((SwTOXButton*)pActiveCtrl)->GetFormToken();
+
+ SwFormToken aTemp( *pFToken );
+ aButtonSelectedHdl.Call( &aTemp );
+ }
+ }
+}
+
+/* -----------------17.06.99 09:53-------------------
+
+ --------------------------------------------------*/
+Control* SwTokenWindow::InsertItem(const String& rText, const SwFormToken& rToken)
+{
+ Control* pRet = 0;
+ Control* pLast = aControlList.Last();
+ Size aControlSize(GetOutputSizePixel());
+ Point aControlPos;
+ if( pLast )
+ {
+ aControlSize = pLast->GetSizePixel();
+ aControlPos = pLast->GetPosPixel();
+ aControlPos.X() += aControlSize.Width();
+ }
+ if(TOKEN_TEXT == rToken.eTokenType)
+ {
+ SwTOXEdit* pEdit = new SwTOXEdit(&aCtrlParentWin, this, rToken);
+ pEdit->SetPosPixel(aControlPos);
+ aControlList.Insert(pEdit, aControlList.Count());
+ pEdit->SetText(rText);
+ Size aEditSize(aControlSize);
+ aEditSize.Width() = pEdit->GetTextWidth(rText) + EDIT_MINWIDTH;
+ pEdit->SetSizePixel(aEditSize);
+ pEdit->SetModifyHdl(LINK(this, SwTokenWindow, EditResize ));
+ pEdit->SetPrevNextLink(LINK(this, SwTokenWindow, NextItemHdl));
+ pEdit->SetGetFocusLink(LINK(this, SwTokenWindow, TbxFocusHdl));
+ pEdit->Show();
+ pRet = pEdit;
+ }
+ else
+ {
+ SwTOXButton* pButton = new SwTOXButton(&aCtrlParentWin, this, rToken);
+ pButton->SetPosPixel(aControlPos);
+ aControlList.Insert(pButton, aControlList.Count());
+ Size aEditSize(aControlSize);
+ aEditSize.Width() = pButton->GetTextWidth(rText) + 5;
+ pButton->SetControlBackground(Color(COL_WHITE));
+ pButton->SetSizePixel(aEditSize);
+ pButton->SetPrevNextLink(LINK(this, SwTokenWindow, NextItemBtnHdl));
+ pButton->SetGetFocusLink(LINK(this, SwTokenWindow, TbxFocusBtnHdl));
+ if(TOKEN_AUTHORITY != rToken.eTokenType)
+ pButton->SetText(aButtonTexts[rToken.eTokenType]);
+ else
+ {
+ //use the first two chars as symbol
+ String sTmp(SwAuthorityFieldType::GetAuthFieldName(
+ (ToxAuthorityField)rToken.nAuthorityField));
+ pButton->SetText(sTmp.Copy(0, 2));
+ }
+ pButton->Show();
+ pRet = pButton;
+ }
+ return pRet;
+}
+/* -----------------16.07.99 11:50-------------------
+
+ --------------------------------------------------*/
+void SwTokenWindow::InsertAtSelection(
+ const String& rText,
+ const SwFormToken& rToken)
+{
+ DBG_ASSERT(pActiveCtrl, "no active control!")
+ if(!pActiveCtrl)
+ return;
+ SwFormToken aToInsertToken(rToken);
+ if(TOKEN_LINK_START == aToInsertToken.eTokenType)
+ {
+ //determine if start or end of hyperlink is appropriate
+ //eventually change a following link start into a link end
+ // groups of LS LE should be ignored
+ // <insert>
+ //LS <insert>
+ //LE <insert>
+ //<insert> LS
+ //<insert> LE
+ //<insert>
+ sal_Bool bPreStartLinkFound = sal_False; //
+ sal_Bool bPreEndLinkFound = sal_False;
+
+ const Control* pControl = aControlList.First();
+ const Control* pExchange = 0;
+ while( pControl && pActiveCtrl != pControl )
+ {
+ if( WINDOW_EDIT != pControl->GetType())
+ {
+ const SwFormToken& rNewToken =
+ ((SwTOXButton*)pControl)->GetFormToken();
+ if( TOKEN_LINK_START == rNewToken.eTokenType )
+ {
+ bPreStartLinkFound = sal_True;
+ pExchange = 0;
+ }
+ else if(TOKEN_LINK_END == rNewToken.eTokenType)
+ {
+ if( bPreStartLinkFound )
+ bPreStartLinkFound = sal_False;
+ else
+ {
+ bPreEndLinkFound = sal_False;
+ pExchange = pControl;
+ }
+ }
+ }
+ pControl = aControlList.Next();
+ }
+
+ sal_Bool bPostLinkEndFound = sal_False;
+ sal_Bool bPostLinkStartFound = sal_False;
+ if(!bPreStartLinkFound && !bPreEndLinkFound)
+ while(pControl)
+ {
+ if( pControl != pActiveCtrl &&
+ WINDOW_EDIT != pControl->GetType())
+ {
+ const SwFormToken& rNewToken =
+ ((SwTOXButton*)pControl)->GetFormToken();
+ if( TOKEN_LINK_START == rNewToken.eTokenType )
+ {
+ if(bPostLinkStartFound)
+ break;
+ bPostLinkStartFound = sal_True;
+ pExchange = pControl;
+ }
+ else if(TOKEN_LINK_END == rNewToken.eTokenType )
+ {
+ if(bPostLinkStartFound)
+ {
+ bPostLinkStartFound = sal_False;
+ pExchange = 0;
+ }
+ else
+ {
+ bPostLinkEndFound = sal_True;
+ }
+ break;
+ }
+ }
+ pControl = aControlList.Next();
+ }
+
+ if(bPreStartLinkFound)
+ {
+ aToInsertToken.eTokenType = TOKEN_LINK_END;
+ aToInsertToken.sText = aButtonTexts[TOKEN_LINK_END];
+ }
+
+ if(bPostLinkStartFound)
+ {
+ DBG_ASSERT(pExchange, "no control to exchange?")
+ if(pExchange)
+ {
+ ((SwTOXButton*)pExchange)->SetLinkEnd();
+ ((SwTOXButton*)pExchange)->SetText(aButtonTexts[TOKEN_LINK_END]);
+ }
+ }
+
+ if(bPreEndLinkFound)
+ {
+ DBG_ASSERT(pExchange, "no control to exchange?")
+ if(pExchange)
+ {
+ ((SwTOXButton*)pExchange)->SetLinkStart();
+ ((SwTOXButton*)pExchange)->SetText(aButtonTexts[TOKEN_LINK_START]);
+ }
+ }
+ }
+
+ //if the active control is text then insert a new button at the selection
+ //else replace the button
+ sal_uInt32 nActivePos = aControlList.GetPos(pActiveCtrl);
+ sal_uInt32 nInsertPos = nActivePos;
+
+ Size aControlSize(GetOutputSizePixel());
+ if( WINDOW_EDIT == pActiveCtrl->GetType())
+ {
+ nInsertPos++;
+ Selection aSel = ((SwTOXEdit*)pActiveCtrl)->GetSelection();
+ aSel.Justify();
+ String sEditText = ((SwTOXEdit*)pActiveCtrl)->GetText();
+ String sLeft = sEditText.Copy(0, aSel.A());
+ String sRight = sEditText.Copy(aSel.B(), sEditText.Len() - aSel.B());
+
+ ((SwTOXEdit*)pActiveCtrl)->SetText(sLeft);
+ ((SwTOXEdit*)pActiveCtrl)->AdjustSize();
+
+ SwFormToken aTmpToken(TOKEN_TEXT);
+ SwTOXEdit* pEdit = new SwTOXEdit(&aCtrlParentWin, this, aTmpToken);
+ aControlList.Insert(pEdit, nActivePos + 1);
+ pEdit->SetText(sRight);
+ pEdit->SetSizePixel(aControlSize);
+ pEdit->AdjustSize();
+ pEdit->SetModifyHdl(LINK(this, SwTokenWindow, EditResize ));
+ pEdit->SetPrevNextLink(LINK(this, SwTokenWindow, NextItemHdl));
+ pEdit->SetGetFocusLink(LINK(this, SwTokenWindow, TbxFocusHdl));
+ pEdit->Show();
+ }
+ else
+ {
+ aControlList.Remove(pActiveCtrl);
+ pActiveCtrl->Hide();
+ delete pActiveCtrl;
+ }
+ //now the new button
+ SwTOXButton* pButton = new SwTOXButton(&aCtrlParentWin, this, aToInsertToken);
+ aControlList.Insert(pButton, nInsertPos);
+ pButton->SetControlBackground(Color(COL_WHITE));
+ pButton->SetPrevNextLink(LINK(this, SwTokenWindow, NextItemBtnHdl));
+ pButton->SetGetFocusLink(LINK(this, SwTokenWindow, TbxFocusBtnHdl));
+ if(TOKEN_AUTHORITY != aToInsertToken.eTokenType)
+ pButton->SetText(aButtonTexts[aToInsertToken.eTokenType]);
+ else
+ {
+ //use the first two chars as symbol
+ String sTmp(SwAuthorityFieldType::GetAuthFieldName(
+ (ToxAuthorityField)aToInsertToken.nAuthorityField));
+ pButton->SetText(sTmp.Copy(0, 2));
+ }
+
+ Size aEditSize(GetOutputSizePixel());
+ aEditSize.Width() = pButton->GetTextWidth(rText) + 5;
+ pButton->SetSizePixel(aEditSize);
+ pButton->Check(sal_True);
+ pButton->Show();
+ SetActiveControl(pButton);
+
+ AdjustPositions();
+}
+/* -----------------19.08.99 12:42-------------------
+
+ --------------------------------------------------*/
+void SwTokenWindow::RemoveControl(SwTOXButton* pDel, sal_Bool bInternalCall )
+{
+ if(bInternalCall && TOX_AUTHORITIES == pForm->GetTOXType())
+ m_pParent->PreTokenButtonRemoved(pDel->GetFormToken());
+
+ sal_uInt32 nActivePos = aControlList.GetPos(pDel);
+ DBG_ASSERT(nActivePos != 0xffffffff, "Control does not exist!");
+ // the two neighbours of the box must be merged
+ // the properties of the right one will be lost
+ DBG_ASSERT(nActivePos && nActivePos < aControlList.Count() - 1,
+ "Button at first or last position?");
+ aControlList.Seek(nActivePos - 1);
+ Control* pLeftEdit = aControlList.GetCurObject();
+ aControlList.Seek(nActivePos + 1);
+ Control* pRightEdit = aControlList.GetCurObject();
+ String sTemp(((SwTOXEdit*)pLeftEdit)->GetText());
+ sTemp += ((SwTOXEdit*)pRightEdit)->GetText();
+ ((SwTOXEdit*)pLeftEdit)->SetText(sTemp);
+ ((SwTOXEdit*)pLeftEdit)->AdjustSize();
+
+ aControlList.Remove(pRightEdit);
+ delete pRightEdit;
+
+ aControlList.Remove(pDel);
+ pActiveCtrl->Hide();
+ delete pActiveCtrl;
+ SetActiveControl(pLeftEdit);
+ AdjustPositions();
+ if(aModifyHdl.IsSet())
+ aModifyHdl.Call(0);
+}
+
+/* -----------------16.07.99 12:39-------------------
+
+ --------------------------------------------------*/
+void SwTokenWindow::AdjustPositions()
+{
+ if(aControlList.Count() > 1)
+ {
+ Control* pCtrl = aControlList.First();
+ Point aNextPos = pCtrl->GetPosPixel();
+ aNextPos.X() += pCtrl->GetSizePixel().Width();
+ while(0 != (pCtrl = aControlList.Next()))
+ {
+ pCtrl->SetPosPixel(aNextPos);
+ aNextPos.X() += pCtrl->GetSizePixel().Width();
+ }
+ AdjustScrolling();
+ }
+};
+/* -----------------------------16.08.00 13:22--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwTokenWindow::MoveControls(long nOffset)
+{
+ // move the complete list
+ Control* pCtrl = aControlList.First();
+ do
+ {
+ Point aPos = pCtrl->GetPosPixel();
+ aPos.X() += nOffset;
+ pCtrl->SetPosPixel(aPos);
+ }while(0 != (pCtrl = aControlList.Next()));
+}
+/* -----------------------------14.01.00 13:03--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwTokenWindow::AdjustScrolling()
+{
+ if(aControlList.Count() > 1)
+ {
+ //validate scroll buttons
+ Control* pLastCtrl = aControlList.Last();
+ Control* pFirstCtrl = aControlList.First();
+ long nSpace = aCtrlParentWin.GetSizePixel().Width();
+ long nWidth = pLastCtrl->GetPosPixel().X() - pFirstCtrl->GetPosPixel().X()
+ + pLastCtrl->GetSizePixel().Width();
+ sal_Bool bEnable = nWidth > nSpace;
+ //the active control must be visible
+ if(bEnable && pActiveCtrl)
+ {
+ Point aActivePos(pActiveCtrl->GetPosPixel());
+ long nMove = 0;
+ if(aActivePos.X() < 0)
+ nMove = -aActivePos.X();
+ else if((aActivePos.X() + pActiveCtrl->GetSizePixel().Width()) > nSpace)
+ nMove = -(aActivePos.X() + pActiveCtrl->GetSizePixel().Width() - nSpace);
+ if(nMove)
+ MoveControls(nMove);
+ aLeftScrollWin.Enable(aControlList.First()->GetPosPixel().X() < 0);
+ Control* pCtrl = aControlList.Last();
+ aRightScrollWin.Enable((pCtrl->GetPosPixel().X() + pCtrl->GetSizePixel().Width()) > nSpace);
+ }
+ else
+ {
+ if(pFirstCtrl)
+ {
+ //if the control fits into the space then the first control must be at postion 0
+ long nFirstPos = pFirstCtrl->GetPosPixel().X();
+ if(nFirstPos != 0)
+ MoveControls(-nFirstPos);
+ }
+ aRightScrollWin.Enable(sal_False);
+ aLeftScrollWin.Enable(sal_False);
+ }
+ }
+}
+/* -----------------------------14.01.00 13:57--------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK(SwTokenWindow, ScrollHdl, ImageButton*, pBtn )
+{
+ if(aControlList.Count())
+ {
+ const long nSpace = aCtrlParentWin.GetSizePixel().Width();
+#ifdef DEBUG
+ //find all start/end positions and print it
+ String sMessage(String::CreateFromAscii("Space: "));
+ sMessage += String::CreateFromInt32(nSpace);
+ sMessage += String::CreateFromAscii(" | ");
+ Control* pDebugCtrl = aControlList.First();
+ do
+ {
+ long nDebugXPos = pDebugCtrl->GetPosPixel().X();
+ long nDebugWidth = pDebugCtrl->GetSizePixel().Width();
+ sMessage += String::CreateFromInt32( nDebugXPos );
+ sMessage += String::CreateFromAscii(" ");
+ sMessage += String::CreateFromInt32(nDebugXPos + nDebugWidth);
+ sMessage += String::CreateFromAscii(" | ");
+
+ }while(0 != (pDebugCtrl = aControlList.Next()));
+
+#endif
+
+ long nMove = 0;
+ if(pBtn == &aLeftScrollWin)
+ {
+ //find the first completely visible control (left edge visible)
+ for(sal_uInt16 i = 0; i < aControlList.Count(); i++ )
+ {
+ Control* pCtrl = aControlList.GetObject(i);
+ long nXPos = pCtrl->GetPosPixel().X();
+ if(nXPos >= 0)
+ {
+ if(!i)
+ //move the current control to the left edge
+ nMove = -nXPos;
+ else
+ //move the left neighbor to the start position
+ nMove = -aControlList.GetObject(i - 1)->GetPosPixel().X();
+ break;
+ }
+ }
+ }
+ else
+ {
+ //find the first completely visible control (left edge visible)
+ for(sal_uInt16 i = aControlList.Count(); i; i-- )
+ {
+ Control* pCtrl = aControlList.GetObject(i - 1);
+ long nCtrlWidth = pCtrl->GetSizePixel().Width();
+ long nXPos = pCtrl->GetPosPixel().X() + nCtrlWidth;
+ if(nXPos <= nSpace)
+ {
+ if( i < aControlList.Count())
+ {
+ //move the right neighbor to the right edge right aligned
+ Control* pRight = aControlList.GetObject(i);
+ nMove = nSpace - pRight->GetPosPixel().X() - pRight->GetSizePixel().Width();
+ }
+ break;
+ }
+ }
+
+ //move it left until it's completely visible
+ }
+ if(nMove)
+ {
+ // move the complete list
+ Control* pCtrl = aControlList.First();
+ do
+ {
+ Point aPos = pCtrl->GetPosPixel();
+ aPos.X() += nMove;
+ pCtrl->SetPosPixel(aPos);
+ }while(0 != (pCtrl = aControlList.Next()));
+ aLeftScrollWin.Enable(aControlList.First()->GetPosPixel().X() < 0);
+ pCtrl = aControlList.Last();
+ aRightScrollWin.Enable((pCtrl->GetPosPixel().X() + pCtrl->GetSizePixel().Width()) > nSpace);
+
+#ifdef DEBUG
+ sMessage.AppendAscii("Move: ");
+ sMessage += String::CreateFromInt32(nMove);
+ GetParent()->GetParent()->GetParent()->SetText(sMessage);
+#endif
+ }
+ }
+ return 0;
+}
+/* -----------------17.06.99 11:59-------------------
+
+ --------------------------------------------------*/
+String SwTokenWindow::GetPattern() const
+{
+ String sRet;
+ const Control* pControl = ((SwTokenWindow*)this)->aControlList.First();
+ while(pControl)
+ {
+ const SwFormToken& rNewToken = WINDOW_EDIT == pControl->GetType()
+ ? ((SwTOXEdit*)pControl)->GetFormToken()
+ : ((SwTOXButton*)pControl)->GetFormToken();
+
+ //TODO: prevent input of TOX_STYLE_DELIMITER in KeyInput
+ sRet += rNewToken.GetString();
+
+ pControl = ((SwTokenWindow*)this)->aControlList.Next();
+ }
+ return sRet;
+}
+/* -----------------19.08.99 11:27-------------------
+ Description: Check if a control of the specified
+ TokenType is already contained in the list
+ --------------------------------------------------*/
+sal_Bool SwTokenWindow::Contains(FormTokenType eSearchFor) const
+{
+ sal_Bool bRet = sal_False;
+ const Control* pControl = ((SwTokenWindow*)this)->aControlList.First();
+ while(pControl)
+ {
+ const SwFormToken& rNewToken = WINDOW_EDIT == pControl->GetType()
+ ? ((SwTOXEdit*)pControl)->GetFormToken()
+ : ((SwTOXButton*)pControl)->GetFormToken();
+
+ if(eSearchFor == rNewToken.eTokenType)
+ {
+ bRet = sal_True;
+ break;
+ }
+ pControl = ((SwTokenWindow*)this)->aControlList.Next();
+ }
+ return bRet;
+}
+//---------------------------------------------------
+BOOL SwTokenWindow::CreateQuickHelp(Control* pCtrl,
+ const SwFormToken& rToken,
+ const HelpEvent& rHEvt)
+{
+ BOOL bRet = FALSE;
+ if( rHEvt.GetMode() & HELPMODE_QUICK )
+ {
+ sal_Bool bBalloon = Help::IsBalloonHelpEnabled();
+ String sEntry;
+ if(bBalloon || rToken.eTokenType != TOKEN_AUTHORITY)
+ sEntry = (aButtonHelpTexts[rToken.eTokenType]);
+ if(rToken.eTokenType == TOKEN_AUTHORITY )
+ {
+ sEntry += SwAuthorityFieldType::GetAuthFieldName(
+ (ToxAuthorityField) rToken.nAuthorityField);
+ }
+
+ Point aPos = OutputToScreenPixel(pCtrl->GetPosPixel());
+ Rectangle aItemRect( aPos, pCtrl->GetSizePixel() );
+ if(rToken.eTokenType == TOKEN_TAB_STOP )
+ {
+// sEntry += '\n';
+// sEntry += rToken.nTabStopPosition;
+ }
+ else
+ {
+ if(rToken.sCharStyleName.Len())
+ {
+ if(bBalloon)
+ sEntry += '\n';
+ else
+ sEntry += ' ';
+ sEntry += sCharStyle;
+ sEntry += rToken.sCharStyleName;
+ }
+ }
+ if(bBalloon)
+ {
+ Help::ShowBalloon( this, aPos, aItemRect, sEntry );
+ }
+ else
+ Help::ShowQuickHelp( this, aItemRect, sEntry,
+ QUICKHELP_LEFT|QUICKHELP_VCENTER );
+ bRet = TRUE;
+ }
+ return bRet;
+}
+/* -----------------------------14.01.00 12:22--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwTokenWindow::Resize()
+{
+ Size aCompleteSize(GetOutputSizePixel());
+
+ Point aRightPos(aRightScrollWin.GetPosPixel());
+ Size aRightSize(aRightScrollWin.GetSizePixel());
+
+ Size aMiddleSize(aCtrlParentWin.GetSizePixel());
+
+ long nMove = aCompleteSize.Width() - aRightSize.Width() - aRightPos.X();
+
+ aRightPos.X() += nMove;
+ aRightScrollWin.SetPosPixel(aRightPos);
+ aMiddleSize.Width() += nMove;
+ aCtrlParentWin.SetSizePixel(aMiddleSize);
+}
+
+/* -----------------16.06.99 15:23-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTokenWindow, EditResize, Edit*, pEdit)
+{
+ ((SwTOXEdit*)pEdit)->AdjustSize();
+ AdjustPositions();
+ if(aModifyHdl.IsSet())
+ aModifyHdl.Call(0);
+ return 0;
+}
+/* -----------------16.06.99 15:56-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTokenWindow, NextItemHdl, SwTOXEdit*, pEdit)
+{
+ sal_uInt16 nPos = (sal_uInt16)aControlList.GetPos(pEdit);
+ if(nPos && !pEdit->IsNextControl() ||
+ nPos < aControlList.Count() - 1 && pEdit->IsNextControl())
+ {
+ aControlList.Seek(nPos);
+ Control* pNextPrev = pEdit->IsNextControl() ? aControlList.Next() : aControlList.Prev();
+ nPos += pEdit->IsNextControl() ? 1 : -1;
+ pNextPrev->GrabFocus();
+ ((SwTOXButton*)pNextPrev)->Check();
+ AdjustScrolling();
+ }
+ return 0;
+}
+/* -----------------17.06.99 08:58-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTokenWindow, TbxFocusHdl, SwTOXEdit*, pEdit)
+{
+ for(sal_uInt16 i = 0; i < aControlList.Count(); i++)
+ {
+ Control* pControl = aControlList.First();
+ while(pControl)
+ {
+ if(WINDOW_EDIT != pControl->GetType() )
+ ((SwTOXButton*)pControl)->Check(sal_False);
+ pControl = aControlList.Next();
+ }
+ }
+ SetActiveControl(pEdit);
+ return 0;
+}
+/* -----------------17.06.99 10:05-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTokenWindow, NextItemBtnHdl, SwTOXButton*, pBtn )
+{
+ sal_uInt16 nPos = (sal_uInt16)aControlList.GetPos(pBtn);
+ if(nPos && !pBtn->IsNextControl() ||
+ nPos < aControlList.Count() - 1 && pBtn->IsNextControl())
+ {
+ aControlList.Seek(nPos);
+ sal_Bool bNext = pBtn->IsNextControl();
+ Control* pNextPrev = bNext ? aControlList.Next() : aControlList.Prev();
+ pNextPrev->GrabFocus();
+ Selection aSel(0, 0);
+ if(!bNext)
+ {
+ sal_uInt16 nLen = ((SwTOXEdit*)pNextPrev)->GetText().Len();
+ aSel.A() = nLen;
+ aSel.B() = nLen;
+ }
+ ((SwTOXEdit*)pNextPrev)->SetSelection(aSel);
+ pBtn->Check(sal_False);
+ AdjustScrolling();
+ }
+ return 0;
+}
+
+/* -----------------17.06.99 10:04-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwTokenWindow, TbxFocusBtnHdl, SwTOXButton*, pBtn )
+{
+ for(sal_uInt16 i = 0; i < aControlList.Count(); i++)
+ {
+ Control* pControl = aControlList.First();
+ while(pControl)
+ {
+ if(WINDOW_EDIT != pControl->GetType() )
+ ((SwTOXButton*)pControl)->Check(pBtn == pControl);
+ pControl = aControlList.Next();
+ }
+ }
+ SetActiveControl(pBtn);
+ return 0;
+}
+
+/* -----------------25.03.99 15:17-------------------
+ *
+ * --------------------------------------------------*/
+SwTOXStylesTabPage::SwTOXStylesTabPage(Window* pParent, const SfxItemSet& rAttrSet ) :
+ SfxTabPage(pParent, SW_RES(TP_TOX_STYLES), rAttrSet),
+ aLevelFT2(this, SW_RES(FT_LEVEL )),
+ aLevelLB(this, SW_RES(LB_LEVEL )),
+ aTemplateFT(this, SW_RES(FT_TEMPLATE)),
+ aParaLayLB(this, SW_RES(LB_PARALAY )),
+ aStdBT(this, SW_RES(BT_STD )),
+ aAssignBT(this, SW_RES(BT_ASSIGN )),
+ aEditStyleBT(this, SW_RES(BT_EDIT_STYLE )),
+ aFormatGB(this, SW_RES(GB_FORMAT )),
+ pCurrentForm(0)
+{
+ FreeResource();
+ SetExchangeSupport( sal_True );
+
+ aEditStyleBT.SetClickHdl (LINK( this, SwTOXStylesTabPage, EditStyleHdl));
+ aAssignBT.SetClickHdl (LINK( this, SwTOXStylesTabPage, AssignHdl));
+ aStdBT.SetClickHdl (LINK( this, SwTOXStylesTabPage, StdHdl));
+ aParaLayLB.SetSelectHdl (LINK( this, SwTOXStylesTabPage, EnableSelectHdl));
+ aLevelLB.SetSelectHdl (LINK( this, SwTOXStylesTabPage, EnableSelectHdl));
+ aParaLayLB.SetDoubleClickHdl(LINK( this, SwTOXStylesTabPage, DoubleClickHdl));
+}
+/* -----------------25.03.99 15:17-------------------
+ *
+ * --------------------------------------------------*/
+SwTOXStylesTabPage::~SwTOXStylesTabPage()
+{
+ delete pCurrentForm;
+}
+/* -----------------25.03.99 15:17-------------------
+ *
+ * --------------------------------------------------*/
+sal_Bool SwTOXStylesTabPage::FillItemSet( SfxItemSet& )
+{
+ return sal_True;
+}
+/* -----------------25.03.99 15:17-------------------
+ *
+ * --------------------------------------------------*/
+void SwTOXStylesTabPage::Reset( const SfxItemSet& rSet )
+{
+ ActivatePage(rSet);
+}
+/* -----------------25.03.99 15:17-------------------
+ *
+ * --------------------------------------------------*/
+void SwTOXStylesTabPage::ActivatePage( const SfxItemSet& )
+{
+ pCurrentForm = new SwForm(GetForm());
+ aParaLayLB.Clear();
+ aLevelLB.Clear();
+
+ // kein Hyperlink fuer Benutzerverzeichnisse
+
+ sal_uInt16 i, nSize = pCurrentForm->GetFormMax();
+
+ // form-Pattern anzeigen ohne Titel
+
+ //1. TemplateEntry anzeigen
+ String aStr( SW_RES( STR_TITLE ));
+ if( pCurrentForm->GetTemplate( 0 ).Len() )
+ {
+ aStr += ' ';
+ aStr += aDeliStart;
+ aStr += pCurrentForm->GetTemplate( 0 );
+ aStr += aDeliEnd;
+ }
+ aLevelLB.InsertEntry(aStr);
+
+ for( i=1; i < nSize; ++i )
+ {
+ if( TOX_INDEX == pCurrentForm->GetTOXType() &&
+ FORM_ALPHA_DELIMITTER == i )
+ aStr = SW_RESSTR(STR_ALPHA);
+ else
+ {
+ aStr = SW_RESSTR(STR_LEVEL);
+ aStr += String::CreateFromInt32(
+ TOX_INDEX == pCurrentForm->GetTOXType() ? i - 1 : i );
+ }
+ String aCpy( aStr );
+ aStr += ' ';
+ aStr += aDeliStart;
+ aStr += pCurrentForm->GetPattern(i);
+ aStr += aDeliEnd;
+
+ if( pCurrentForm->GetTemplate( i ).Len() )
+ {
+ aCpy += ' ';
+ aCpy += aDeliStart;
+ aCpy += pCurrentForm->GetTemplate( i );
+ aCpy += aDeliEnd;
+ }
+ aLevelLB.InsertEntry( aCpy );
+ }
+
+ // Templates initialisieren
+ const SwTxtFmtColl *pColl;
+ SwWrtShell& rSh = ((SwMultiTOXTabDialog*)GetTabDialog())->GetWrtShell();
+ const sal_uInt16 nSz = rSh.GetTxtFmtCollCount();
+
+ for( i = 0; i < nSz; ++i )
+ if( !(pColl = &rSh.GetTxtFmtColl( i ))->IsDefault() )
+ aParaLayLB.InsertEntry( pColl->GetName() );
+
+ // Pool-Collections abfragen und fuer das Verzeichnis setzen
+ for( i = 0; i < pCurrentForm->GetFormMax(); ++i )
+ {
+ aStr = pCurrentForm->GetTemplate( i );
+ if( aStr.Len() &&
+ LISTBOX_ENTRY_NOTFOUND == aParaLayLB.GetEntryPos( aStr ))
+ aParaLayLB.InsertEntry( aStr );
+ }
+
+ EnableSelectHdl(&aParaLayLB);
+}
+/* -----------------25.03.99 15:17-------------------
+ *
+ * --------------------------------------------------*/
+int SwTOXStylesTabPage::DeactivatePage( SfxItemSet* pSet )
+{
+ GetForm() = *pCurrentForm;
+ return LEAVE_PAGE;
+}
+
+/* -----------------25.03.99 15:17-------------------
+ *
+ * --------------------------------------------------*/
+SfxTabPage* SwTOXStylesTabPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet)
+{
+ return new SwTOXStylesTabPage(pParent, rAttrSet);
+}
+/* -----------------26.03.99 12:47-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwTOXStylesTabPage, EditStyleHdl, Button *, pBtn )
+{
+ if( LISTBOX_ENTRY_NOTFOUND != aParaLayLB.GetSelectEntryPos())
+ {
+ SfxStringItem aStyle(SID_STYLE_EDIT, aParaLayLB.GetSelectEntry());
+ SfxUInt16Item aFamily(SID_STYLE_FAMILY, SFX_STYLE_FAMILY_PARA);
+// SwPtrItem aShell(FN_PARAM_WRTSHELL, pWrtShell);
+ Window* pDefDlgParent = Application::GetDefDialogParent();
+ Application::SetDefDialogParent( pBtn );
+ SwWrtShell& rSh = ((SwMultiTOXTabDialog*)GetTabDialog())->GetWrtShell();
+ rSh.GetView().GetViewFrame()->GetDispatcher()->Execute(
+ SID_STYLE_EDIT, SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_MODAL,
+ &aStyle, &aFamily/*, &aShell*/, 0L);
+ Application::SetDefDialogParent( pDefDlgParent );
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------
+ Beschreibung: Vorlagen zuweisen
+ --------------------------------------------------------------------*/
+IMPL_LINK( SwTOXStylesTabPage, AssignHdl, Button *, EMPTYARG )
+{
+ sal_uInt16 nLevPos = aLevelLB.GetSelectEntryPos();
+ sal_uInt16 nTemplPos = aParaLayLB.GetSelectEntryPos();
+ if(nLevPos != LISTBOX_ENTRY_NOTFOUND &&
+ nTemplPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ String aStr(aLevelLB.GetEntry(nLevPos));
+ sal_uInt16 nDelPos = aStr.Search(aDeliStart);
+ if(nDelPos != STRING_NOTFOUND)
+ aStr.Erase(nDelPos-1);
+ aStr += ' ';
+ aStr += aDeliStart;
+ aStr += aParaLayLB.GetSelectEntry();
+
+ pCurrentForm->SetTemplate(nLevPos, aParaLayLB.GetSelectEntry());
+
+ aStr += aDeliEnd;
+
+ aLevelLB.RemoveEntry(nLevPos);
+ aLevelLB.InsertEntry(aStr, nLevPos);
+ aLevelLB.SelectEntry(aStr);
+ ModifyHdl(0);
+ }
+ return 0;
+}
+/* -----------------26.03.99 09:10-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwTOXStylesTabPage, StdHdl, Button *, EMPTYARG )
+{
+ sal_uInt16 nPos = aLevelLB.GetSelectEntryPos();
+ if(nPos != LISTBOX_ENTRY_NOTFOUND)
+ { String aStr(aLevelLB.GetEntry(nPos));
+ sal_uInt16 nDelPos = aStr.Search(aDeliStart);
+ if(nDelPos != STRING_NOTFOUND)
+ aStr.Erase(nDelPos-1);
+ aLevelLB.RemoveEntry(nPos);
+ aLevelLB.InsertEntry(aStr, nPos);
+ aLevelLB.SelectEntry(aStr);
+ pCurrentForm->SetTemplate(nPos, aEmptyStr);
+ ModifyHdl(0);
+ }
+ return 0;
+}
+/* -----------------26.03.99 09:11-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK_INLINE_START( SwTOXStylesTabPage, DoubleClickHdl, Button *, EMPTYARG )
+{
+ String aTmpName( aParaLayLB.GetSelectEntry() );
+ SwWrtShell& rSh = ((SwMultiTOXTabDialog*)GetTabDialog())->GetWrtShell();
+
+ if(aParaLayLB.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND &&
+ (aLevelLB.GetSelectEntryPos() == 0 || SwMultiTOXTabDialog::IsNoNum(rSh, aTmpName)))
+ AssignHdl(&aAssignBT);
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwTOXStylesTabPage, DoubleClickHdl, Button *, EMPTYARG )
+/*--------------------------------------------------------------------
+ Beschreibung: nur wenn selektiert enable
+ --------------------------------------------------------------------*/
+IMPL_LINK( SwTOXStylesTabPage, EnableSelectHdl, ListBox *, EMPTYARG )
+{
+ //UpdatePattern();
+ aStdBT.Enable(aLevelLB.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND);
+
+ SwWrtShell& rSh = ((SwMultiTOXTabDialog*)GetTabDialog())->GetWrtShell();
+ String aTmpName(aParaLayLB.GetSelectEntry());
+ aAssignBT.Enable(aParaLayLB.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND &&
+ LISTBOX_ENTRY_NOTFOUND != aLevelLB.GetSelectEntryPos() &&
+ (aLevelLB.GetSelectEntryPos() == 0 || SwMultiTOXTabDialog::IsNoNum(rSh, aTmpName)));
+ aEditStyleBT.Enable(aParaLayLB.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND );
+ return 0;
+}
+/* -----------------------------18.01.00 16:54--------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK(SwTOXStylesTabPage, ModifyHdl, void*, EMPTYARG)
+{
+ SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog();
+ if(pTOXDlg)
+ {
+ GetForm() = *pCurrentForm;
+ pTOXDlg->CreateOrUpdateExample(pTOXDlg->GetCurrentTOXType().eType, TOX_PAGE_STYLES);
+ }
+ return 0;
+}
+/******************************************************************************
+
+******************************************************************************/
+#define ITEM_SEARCH 1
+#define ITEM_ALTERNATIVE 2
+#define ITEM_PRIM_KEY 3
+#define ITEM_SEC_KEY 4
+#define ITEM_COMMENT 5
+#define ITEM_CASE 6
+#define ITEM_WORDONLY 7
+
+
+SwEntryBrowseBox::SwEntryBrowseBox(Window* pParent, const ResId& rId,
+ BrowserMode nMode ) :
+ DbBrowseBox( pParent, rId, nMode,
+ BROWSER_KEEPSELECTION |
+ BROWSER_COLUMNSELECTION |
+ BROWSER_MULTISELECTION |
+ BROWSER_TRACKING_TIPS |
+ BROWSER_HLINESFULL |
+ BROWSER_VLINESFULL |
+ BROWSER_AUTO_VSCROLL|
+ BROWSER_HIDECURSOR ),
+ sSearch( ResId(ST_SEARCH )),
+ sAlternative( ResId(ST_ALTERNATIVE )),
+ sPrimKey( ResId(ST_PRIMKEY )),
+ sSecKey( ResId(ST_SECKEY )),
+ sComment( ResId(ST_COMMENT )),
+ sCaseSensitive( ResId(ST_CASESENSITIVE )),
+ sWordOnly( ResId(ST_WORDONLY )),
+ sYes( ResId(ST_TRUE )),
+ sNo( ResId(ST_FALSE )),
+ aCellEdit(&GetDataWindow(), 0),
+ aCellCheckBox(&GetDataWindow()),
+ bModified(sal_False)
+{
+ FreeResource();
+ aCellCheckBox.GetBox().EnableTriState(sal_False);
+ xController = new DbEditCellController(&aCellEdit);
+ xCheckController = new DbCheckBoxCellController(&aCellCheckBox);
+
+ //////////////////////////////////////////////////////////////////////
+ // HACK: BrowseBox invalidiert nicht ihre Childs, wie es eigentlich sein sollte.
+ // Deshalb wird WB_CLIPCHILDREN zurueckgesetzt, wodurch das Invalidieren
+ // der Childs erzwungen wird.
+ WinBits aStyle = GetStyle();
+ if( aStyle & WB_CLIPCHILDREN )
+ {
+ aStyle &= ~WB_CLIPCHILDREN;
+ SetStyle( aStyle );
+ }
+ const String* aTitles[7] =
+ {
+ &sSearch,
+ &sAlternative,
+ &sPrimKey,
+ &sSecKey,
+ &sComment,
+ &sCaseSensitive,
+ &sWordOnly
+ };
+
+ long nWidth = GetSizePixel().Width();
+ nWidth /=7;
+ --nWidth;
+ for(sal_uInt16 i = 1; i < 8; i++)
+ InsertDataColumn( i, *aTitles[i - 1], nWidth,
+ HIB_STDSTYLE, HEADERBAR_APPEND );
+
+}
+/* -----------------------------19.01.00 11:29--------------------------------
+
+ ---------------------------------------------------------------------------*/
+sal_Bool SwEntryBrowseBox::SeekRow( long nRow )
+{
+ nCurrentRow = nRow;
+ return TRUE;
+}
+/* -----------------------------19.01.00 15:32--------------------------------
+
+ ---------------------------------------------------------------------------*/
+const String& SwEntryBrowseBox::GetCellText(long nRow, long nColumn) const
+{
+ const String* pRet = &aEmptyStr;
+ if(aEntryArr.Count() > nRow)
+ {
+ AutoMarkEntry* pEntry = aEntryArr[nRow];
+ switch(nColumn)
+ {
+ case ITEM_SEARCH :pRet = &pEntry->sSearch; break;
+ case ITEM_ALTERNATIVE :pRet = &pEntry->sAlternative; break;
+ case ITEM_PRIM_KEY :pRet = &pEntry->sPrimKey ; break;
+ case ITEM_SEC_KEY :pRet = &pEntry->sSecKey ; break;
+ case ITEM_COMMENT :pRet = &pEntry->sComment ; break;
+ case ITEM_CASE :pRet = pEntry->bCase ? &sYes : &sNo; break;
+ case ITEM_WORDONLY :pRet = pEntry->bWord ? &sYes : &sNo; break;
+ }
+ }
+ return *pRet;
+}
+
+/* -----------------------------19.01.00 11:29--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwEntryBrowseBox::PaintCell(OutputDevice& rDev,
+ const Rectangle& rRect, sal_uInt16 nColumnId) const
+{
+ const String& rPaint = GetCellText( nCurrentRow, nColumnId );
+ sal_uInt16 nStyle = TEXT_DRAW_CLIP | TEXT_DRAW_CENTER;
+ rDev.DrawText( rRect, rPaint, nStyle );
+}
+/* -----------------------------19.01.00 14:51--------------------------------
+
+ ---------------------------------------------------------------------------*/
+DbCellController* SwEntryBrowseBox::GetController(long nRow, sal_uInt16 nCol)
+{
+ return nCol < ITEM_CASE ? xController : xCheckController;
+}
+/* -----------------------------19.01.00 15:36--------------------------------
+
+ ---------------------------------------------------------------------------*/
+sal_Bool SwEntryBrowseBox::SaveModified()
+{
+ SetModified();
+ long nRow = GetCurRow();
+ sal_uInt16 nCol = GetCurColumnId();
+
+ String sNew;
+ sal_Bool bVal = sal_False;
+ DbCellController* pController = 0;
+ if(nCol < ITEM_CASE)
+ {
+ pController = xController;
+ sNew = ((DbEditCellController*)pController)->GetEditWindow().GetText();
+ }
+ else
+ {
+ pController = xCheckController;
+ bVal = ((DbCheckBoxCellController*)pController)->GetCheckBox().IsChecked();
+ }
+ AutoMarkEntry* pEntry = nRow >= aEntryArr.Count() ? new AutoMarkEntry
+ : aEntryArr[nRow];
+ switch(nCol)
+ {
+ case ITEM_SEARCH : pEntry->sSearch = sNew; break;
+ case ITEM_ALTERNATIVE : pEntry->sAlternative = sNew; break;
+ case ITEM_PRIM_KEY : pEntry->sPrimKey = sNew; break;
+ case ITEM_SEC_KEY : pEntry->sSecKey = sNew; break;
+ case ITEM_COMMENT : pEntry->sComment = sNew; break;
+ case ITEM_CASE : pEntry->bCase = bVal; break;
+ case ITEM_WORDONLY : pEntry->bWord = bVal; break;
+ }
+ if(nRow >= aEntryArr.Count())
+ {
+ aEntryArr.Insert( pEntry, aEntryArr.Count() );
+ RowInserted(nRow, 1, sal_True, sal_True);
+ if(nCol < ITEM_WORDONLY)
+ {
+ pController->ClearModified();
+ GoToRow( nRow );
+ }
+ }
+ return sal_True;
+}
+/* -----------------------------19.01.00 14:32--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwEntryBrowseBox::InitController(
+ DbCellControllerRef& rController, long nRow, sal_uInt16 nCol)
+{
+ const String& rTxt = GetCellText( nRow, nCol );
+ if(nCol < ITEM_CASE)
+ {
+ rController = xController;
+ DbCellController* pController = xController;
+ ((DbEditCellController*)pController)->GetEditWindow().SetText( rTxt );
+ }
+ else
+ {
+ rController = xCheckController;
+ DbCellController* pController = xCheckController;
+ ((DbCheckBoxCellController*)pController)->GetCheckBox().Check(
+ rTxt == sYes );
+ }
+}
+/* -----------------------------19.01.00 12:19--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwEntryBrowseBox::ReadEntries(SvStream& rInStr)
+{
+ AutoMarkEntry* pToInsert = 0;
+ const String sZero('0');
+ rtl_TextEncoding eTEnc = gsl_getSystemTextEncoding();
+ while( !rInStr.GetError() && !rInStr.IsEof() )
+ {
+ String sLine;
+ rInStr.ReadByteStringLine( sLine, eTEnc );
+
+ // # -> comment
+ // ; -> delimiter between entries ->
+ // Format: TextToSearchFor;AlternativeString;PrimaryKey;SecondaryKey
+ // Leading and trailing blanks are ignored
+ if( sLine.Len() )
+ {
+ //comments are contained in separate lines but are put into the struct of the following data
+ //line (if available)
+ if( '#' != sLine.GetChar(0) )
+ {
+ if( !pToInsert )
+ pToInsert = new AutoMarkEntry;
+
+ USHORT nSttPos = 0;
+ pToInsert->sSearch = sLine.GetToken(0, ';', nSttPos );
+ pToInsert->sAlternative = sLine.GetToken(0, ';', nSttPos );
+ pToInsert->sPrimKey = sLine.GetToken(0, ';', nSttPos );
+ pToInsert->sSecKey = sLine.GetToken(0, ';', nSttPos );
+
+ String sStr = sLine.GetToken(0, ';', nSttPos );
+ pToInsert->bCase = sStr.Len() && sStr != sZero;
+
+ sStr = sLine.GetToken(0, ';', nSttPos );
+ pToInsert->bWord = sStr.Len() && sStr != sZero;
+
+ aEntryArr.Insert( pToInsert, aEntryArr.Count() );
+ pToInsert = 0;
+ }
+ else
+ {
+ if(pToInsert)
+ aEntryArr.Insert(pToInsert, aEntryArr.Count());
+ pToInsert = new AutoMarkEntry;
+ pToInsert->sComment = sLine;
+ pToInsert->sComment.Erase(0, 1);
+ }
+ }
+ }
+ if( pToInsert )
+ aEntryArr.Insert(pToInsert, aEntryArr.Count());
+ RowInserted(0, aEntryArr.Count() + 1, sal_True);
+}
+/* -----------------------------19.01.00 12:19--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwEntryBrowseBox::WriteEntries(SvStream& rOutStr)
+{
+ //check if the current controller is modified
+ sal_uInt16 nCol = GetCurColumnId();
+ DbCellController* pController;
+ if(nCol < ITEM_CASE)
+ pController = xController;
+ else
+ pController = xCheckController;
+ if(pController ->IsModified())
+ GoToColumnId(nCol < ITEM_CASE ? ++nCol : --nCol );
+
+ rtl_TextEncoding eTEnc = gsl_getSystemTextEncoding();
+ for(sal_uInt16 i = 0; i < aEntryArr.Count();i++)
+ {
+ AutoMarkEntry* pEntry = aEntryArr[i];
+ if(pEntry->sComment.Len())
+ {
+ String sWrite('#');
+ sWrite += pEntry->sComment;
+ rOutStr.WriteByteStringLine( sWrite, eTEnc );
+ }
+
+ String sWrite( pEntry->sSearch );
+ sWrite += ';';
+ sWrite += pEntry->sAlternative;
+ sWrite += ';';
+ sWrite += pEntry->sPrimKey;
+ sWrite += ';';
+ sWrite += pEntry->sSecKey;
+ sWrite += ';';
+ sWrite += pEntry->bCase ? '1' : '0';
+ sWrite += ';';
+ sWrite += pEntry->bWord ? '1' : '0';
+
+ if( sWrite.Len() > 5 )
+ rOutStr.WriteByteStringLine( sWrite, eTEnc );
+ }
+}
+/* -----------------------------21.01.00 11:49--------------------------------
+
+ ---------------------------------------------------------------------------*/
+sal_Bool SwEntryBrowseBox::IsModified()const
+{
+ if(bModified)
+ return sal_True;
+
+
+ //check if the current controller is modified
+ sal_uInt16 nCol = GetCurColumnId();
+ DbCellController* pController;
+ if(nCol < ITEM_CASE)
+ pController = xController;
+ else
+ pController = xCheckController;
+ return pController ->IsModified();
+}
+/* -----------------------------19.01.00 11:29--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwAutoMarkDlg_Impl::SwAutoMarkDlg_Impl(Window* pParent, const String& rAutoMarkURL,
+ const String& rAutoMarkType, sal_Bool bCreate) :
+ ModalDialog(pParent, SW_RES(DLG_CREATE_AUTOMARK)),
+ aOKPB( this, ResId(PB_OK )),
+ aCancelPB( this, ResId(PB_CANCEL )),
+ aHelpPB( this, ResId(PB_HELP )),
+ aEntriesBB( this, ResId(BB_ENTRIES )),
+ aEntriesGB( this, ResId(GB_ENTRIES )),
+ sAutoMarkURL(rAutoMarkURL),
+ sAutoMarkType(rAutoMarkType),
+ bCreateMode(bCreate)
+{
+ FreeResource();
+ aOKPB.SetClickHdl(LINK(this, SwAutoMarkDlg_Impl, OkHdl));
+
+ INetURLObject aURLObj( sAutoMarkURL );
+ sAutoMarkURL = aURLObj.PathToFileName();
+ String sTitle = GetText();
+ sTitle.AppendAscii( RTL_CONSTASCII_STRINGPARAM(": "));
+ sTitle += sAutoMarkURL;
+ SetText(sTitle);
+ sal_Bool bError = sal_False;
+ if( bCreateMode )
+ aEntriesBB.RowInserted(0, 1, sal_True);
+ else
+ {
+ SvFileStream aStream(sAutoMarkURL, STREAM_STD_READ);
+ aStream.ReOpen();
+ aStream.Seek(0);
+ sal_uInt32 nError = aStream.GetError();
+ if(!nError)
+ {
+ aEntriesBB.ReadEntries(aStream);
+ aStream.Close();
+ }
+ else
+ bError = sal_True;
+ }
+
+ if(bError)
+ EndDialog(RET_CANCEL);
+}
+/* -----------------------------19.01.00 11:12--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwAutoMarkDlg_Impl::~SwAutoMarkDlg_Impl()
+{
+}
+/* -----------------------------19.01.00 16:43--------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK(SwAutoMarkDlg_Impl, OkHdl, OKButton*, pButton)
+{
+ sal_Bool bError = sal_False;
+ if(aEntriesBB.IsModified() || bCreateMode)
+ {
+ SvFileStream aStream(sAutoMarkURL,
+ bCreateMode ? STREAM_WRITE : STREAM_WRITE| STREAM_TRUNC);
+ if(!bCreateMode)
+ {
+ aStream.ReOpen();
+ aStream.Seek(0);
+ }
+ sal_uInt32 nError = aStream.GetError();
+ aStream.SetStreamCharSet( RTL_TEXTENCODING_MS_1253 );
+ if(!nError)
+ {
+ aEntriesBB.WriteEntries(aStream);
+ aStream.Close();
+ }
+ else
+ bError = sal_True;
+
+ }
+ if(!bError)
+ EndDialog(RET_OK);
+ return 0;
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.162 2000/09/18 16:05:51 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.161 2000/08/24 12:22:06 os
+ #71235# RequestHelp must call the base class
+
+ Revision 1.160 2000/08/22 13:00:34 os
+ #77818# SeekRow has to return TRUE
+
+ Revision 1.159 2000/08/17 14:06:28 jp
+ UI with decode URL
+
+ Revision 1.158 2000/08/16 11:47:07 os
+ #73593# set first token control to start position if all controls fit into the window
+
+ Revision 1.157 2000/08/16 10:05:41 os
+ #74364# additional style CheckBox now set correctly
+
+ Revision 1.156 2000/08/14 06:58:34 os
+ #77101# don't call AdjustLayout initially
+
+ Revision 1.155 2000/08/09 14:53:25 os
+ #77101# call AdjustLayout
+
+ Revision 1.154 2000/08/03 07:56:09 jp
+ change for syntax gcc and optimized
+
+ Revision 1.153 2000/08/02 11:37:09 hjs
+ syntax gcc
+
+ Revision 1.152 2000/07/27 21:16:20 jp
+ opt: get template names direct from the doc and don't load it from the resource
+
+ Revision 1.151 2000/07/26 12:10:47 jp
+ Bug #77101#: ShowPreviewHdl - don't call StateChanged
+
+ Revision 1.150 2000/07/19 11:01:59 os
+ properties added/renamed
+
+ Revision 1.149 2000/07/03 08:53:42 jp
+ must changes for VCL
+
+ Revision 1.148 2000/06/26 13:06:16 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.147 2000/06/19 12:12:28 os
+ #71623# FillCharStyleListBox: optional sorted insertion
+
+ Revision 1.146 2000/06/13 15:38:52 os
+ CreateFromInt32
+
+ Revision 1.145 2000/06/08 09:46:08 os
+ using UCB
+
+ Revision 1.144 2000/05/23 19:10:28 jp
+ Bugfixes for Unicode
+
+ Revision 1.143 2000/05/16 09:15:12 os
+ project usr removed
+
+ Revision 1.142 2000/04/26 14:51:23 os
+ GetName() returns const String&
+
+ Revision 1.141 2000/04/19 12:56:35 os
+ include sfx2/filedlg.hxx removed
+
+ Revision 1.140 2000/04/18 15:32:23 os
+ UNICODE
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/index/cnttab.hrc b/sw/source/ui/index/cnttab.hrc
new file mode 100644
index 000000000000..d40988f28f6f
--- /dev/null
+++ b/sw/source/ui/index/cnttab.hrc
@@ -0,0 +1,308 @@
+/*************************************************************************
+ *
+ * $RCSfile: cnttab.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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_MARKS 4
+#define CB_OUTLN 5
+#define FT_LEVEL 6
+#define ED_LEVEL 7
+#define GB_CREATE 8
+#define ED_BSP 11
+#define GB_BSP 12
+#define BT_OUTLN 13
+#define GB_TITLE 14
+#define ED_TITLE 15
+#define BT_HELP 16
+#define ST_AUTHTYPE 17
+
+#define LB_ENTRY 20
+#define FT_NUM 21
+#define ED_ENTRY 22
+#define BT_ENTRY_NUMBER 23
+#define BT_ENTRY_TEXT 24
+#define BT_TAB 25
+#define BT_STD 26
+#define BT_PAGE 27
+#define GB_ENTRY 28
+//#define FT_LEVEL 28
+#define LB_LEVEL 29
+#define FT_TEMPLATE 30
+#define LB_PARALAY 31
+#define BT_ASSIGN 32
+#define GB_FORMAT 33
+#define BT_ENTRY 34
+//#define BT_EDIT 34
+#define BT_JUMP 35
+#define CB_RECALC_TABS 36
+#define CB_FIRST_TAB_POS 37
+#define MF_FIRST_TAB_POS 38
+#define CB_REL_TO_TEXT 39
+#define BT_EDIT_STYLE 40
+#define CB_SAME 41
+#define CB_FF 42
+#define CB_CASE 43
+#define CB_SEC 44
+#define CB_ALPHA 45
+#define GB_OPT 46
+#define CB_MAKRS 47
+#define DLB_TOD 48
+#define CB_TEMPL 49
+#define DLB_LAYOUT 50
+#define CB_OBJECT 51
+#define DLB_OBJECT 52
+#define GB_SOURCE 53
+#define CB_USER_MARKS 54
+#define BT_ALL_LEVEL 55
+#define FT_MAIN_ENTRY_STYLE 56
+#define LB_MAIN_ENTRY_STYLE 57
+
+//restart numbering
+#define FT_TYPE 1
+#define LB_TYPE 2
+#define CB_READONLY 3
+#define FT_TITLE 4
+//#define ED_TITLE 5
+#define GB_TYPETITLE 6
+#define LB_AREA 7
+//#define FT_LEVEL 8
+#define NF_LEVEL 9
+#define GB_AREA 10
+#define CB_FROMHEADINGS 11
+#define PB_CHAPTERDLG 12
+#define CB_ADDSTYLES 13
+#define PB_ADDSTYLES 14
+
+
+#define CB_FROMOLE 17
+#define CB_LEVELFROMCHAPTER 18
+#define RB_FROMCAPTIONS 19
+#define RB_FROMOBJECTNAMES 20
+#define CB_TOXMARKS 21
+#define GB_CREATEFROM 22
+#define CB_COLLECTSAME 23
+#define CB_USEFF 24
+#define CB_CASESENSITIVE 25
+#define CB_INITIALCAPS 26
+#define CB_KEYASENTRY 27
+#define CB_FROMFILE 28
+//#define PB_FILE 29
+#define MB_AUTOMARK 29
+#define GB_IDXOPTIONS 30
+//#define PB_CREATE_AUTOMARK 31
+//#define PB_EDIT_AUTOMARK 32
+
+#define CB_USE_DASH 33
+
+#define GB_LEVEL 34
+#define WIN_TOKEN 35
+#define PB_ENTRYNO 36
+#define PB_ENTRY 37
+#define PB_CHAPTERINFO 38
+#define PB_PAGENO 39
+#define PB_TAB 40
+#define PB_HYPERLINK 41
+#define FT_CHARSTYLE 42
+#define LB_CHARSTYLE 43
+#define PB_EDITSTYLE 44
+#define FT_FILLCHAR 45
+#define CB_FILLCHAR 46
+#define FT_CHAPTERENTRY 47
+#define LB_CHAPTERENTRY 48
+#define FT_SORTING 49
+#define LB_SORTING 50
+#define FT_TABPOS 51
+#define MF_TABPOS 52
+#define CB_AUTORIGHT 53
+#define CB_RELTOSTYLE 54
+//#define GB_ENTRY 55
+#define CB_RECALCTAB 56
+#define CB_NUMSTYLEFROMPDESC 57
+#define CB_ALPHADELIM 58
+#define CB_COMMASEPARATED 59
+//#define GB_FORMAT 60
+
+#define STR_NO_CHAR_STYLE 61
+#define CLB_FROMOBJ 62
+#define GB_FROMOBJ 63
+#define RES_SRCTYPES 64
+#define WIN_LEFT_SCROLL 65
+#define WIN_CTRL_PARENT 66
+#define WIN_RIGHT_SCROLL 67
+#define PB_ALL_LEVELS 68
+
+
+#define STR_BUTTON_TEXT_START 70
+#define STR_TOKEN_ENTRY_NO (STR_BUTTON_TEXT_START)
+#define STR_TOKEN_ENTRY_TEXT (STR_BUTTON_TEXT_START + 1)
+#define STR_TOKEN_ENTRY (STR_BUTTON_TEXT_START + 2)
+#define STR_TOKEN_TAB_STOP (STR_BUTTON_TEXT_START + 3)
+#define STR_TOKEN_TEXT (STR_BUTTON_TEXT_START + 4)
+#define STR_TOKEN_PAGE_NUMS (STR_BUTTON_TEXT_START + 5)
+#define STR_TOKEN_CHAPTER_INFO (STR_BUTTON_TEXT_START + 6)
+#define STR_TOKEN_LINK_START (STR_BUTTON_TEXT_START + 7)
+#define STR_TOKEN_LINK_END (STR_BUTTON_TEXT_START + 8)
+#define STR_TOKEN_AUTHORITY (STR_BUTTON_TEXT_START + 9)
+
+#define STR_BUTTON_HELP_TEXT_START (STR_TOKEN_AUTHORITY + 1)
+#define STR_TOKEN_HELP_ENTRY_NO (STR_BUTTON_HELP_TEXT_START)
+#define STR_TOKEN_HELP_ENTRY_TEXT (STR_BUTTON_HELP_TEXT_START + 1)
+#define STR_TOKEN_HELP_ENTRY (STR_BUTTON_HELP_TEXT_START + 2)
+#define STR_TOKEN_HELP_TAB_STOP (STR_BUTTON_HELP_TEXT_START + 3)
+#define STR_TOKEN_HELP_TEXT (STR_BUTTON_HELP_TEXT_START + 4)
+#define STR_TOKEN_HELP_PAGE_NUMS (STR_BUTTON_HELP_TEXT_START + 5)
+#define STR_TOKEN_HELP_CHAPTER_INFO (STR_BUTTON_HELP_TEXT_START + 6)
+#define STR_TOKEN_HELP_LINK_START (STR_BUTTON_HELP_TEXT_START + 7)
+#define STR_TOKEN_HELP_LINK_END (STR_BUTTON_HELP_TEXT_START + 8)
+#define STR_TOKEN_HELP_AUTHORITY (STR_BUTTON_HELP_TEXT_START + 9)
+
+#define STR_CHARSTYLE (STR_TOKEN_HELP_AUTHORITY + 1)
+#define TLB_STYLES 100
+#define GB_STYLES 101
+#define PB_OK 102
+#define PB_CANCEL 103
+#define PB_HELP 104
+#define FT_CAPTIONSEQUENCE 105
+#define LB_CAPTIONSEQUENCE 106
+#define FT_DISPLAYTYPE 107
+#define LB_DISPLAYTYPE 108
+#define TR_HEADER 109
+#define PB_LEFT 110
+#define PB_RIGHT 111
+#define HB_STYLES 112
+#define ST_HB_FIRST 113
+#define CB_FROMTABLES 114
+#define CB_FROMFRAMES 115
+#define CB_FROMGRAPHICS 116
+#define ST_USER_ADDSTYLE 117
+#define ST_AUTOMARK_TYPE 118
+#define LB_AUTHFIELD 119
+#define PB_AUTHINSERT 120
+#define PB_AUTHREMOVE 121
+#define CB_SEQUENCE 122
+#define FT_BRACKET 123
+#define LB_BRACKET 124
+#define GB_AUTHORITY 125
+#define RB_DOCPOS 126
+#define RB_SORTCONTENT 127
+#define FT_FIRSTKEY 128
+#define LB_FIRSTKEY 129
+#define FT_SECONDKEY 130
+#define LB_SECONDKEY 131
+#define FT_THIRDDKEY 132
+#define LB_THIRDKEY 133
+#define GB_SORTKEY 134
+#define GB_SORTING 135
+#define STR_NOSORTKEY 136
+#define RB_SORTUP1 137
+#define RB_SORTUP2 138
+#define RB_SORTUP3 139
+#define RB_SORTDOWN1 140
+#define RB_SORTDOWN2 141
+#define RB_SORTDOWN3 142
+
+#define STR_DELIM 143
+
+#define TO_CONTENT 1
+#define TO_INDEX 2
+#define TO_ILLUSTRATION 4
+#define TO_TABLE 8
+#define TO_USER 16
+#define TO_OBJECT 32
+#define TO_AUTHORITIES 64
+
+#define AREA_DOCUMENT 1
+#define AREA_CHAPTER 2
+
+//TabDialog
+#define WIN_EXAMPLE 1
+#define RES_EXAMPLE_TEXT 2
+#define ARR_TEXT 3
+#define ST_HEADING_1 4
+#define ST_TEXT_1 5
+#define ST_HEADING_1_1 6
+#define ST_TEXT_1_1 7
+#define ST_HEADING_1_2 8
+#define ST_TEXT_1_2 9
+#define ST_TABLE_LABEL 10
+#define ST_FRAME_LABEL 11
+#define ST_GRAPHIC_LABEL 12
+#define ST_USERDEFINEDINDEX 13
+#define CB_SHOWEXAMPLE 14
+
+
+// AutoMark dialog
+#define BB_ENTRIES 1
+#define GB_ENTRIES 2
+
+#define ST_SEARCH 10
+#define ST_ALTERNATIVE 11
+#define ST_PRIMKEY 12
+#define ST_SECKEY 13
+#define ST_COMMENT 14
+#define ST_CASESENSITIVE 15
+#define ST_WORDONLY 16
+#define ST_TRUE 17
+#define ST_FALSE 18
+
+
+//ButtonMenu
+#define MN_AUTOMARK_OPEN 1
+#define MN_AUTOMARK_NEW 2
+#define MN_AUTOMARK_EDIT 3
+
diff --git a/sw/source/ui/index/cnttab.src b/sw/source/ui/index/cnttab.src
new file mode 100644
index 000000000000..7d6164072791
--- /dev/null
+++ b/sw/source/ui/index/cnttab.src
@@ -0,0 +1,4444 @@
+/*************************************************************************
+ *
+ * $RCSfile: cnttab.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "index.hrc"
+#include "globals.hrc"
+#include "cnttab.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+
+String STR_TITLE
+{
+ Text = "Titel" ;
+ Text [ ENGLISH ] = "Titel" ;
+ Text [ norwegian ] = "Tittel" ;
+ Text [ italian ] = "Titolo" ;
+ Text [ portuguese_brazilian ] = "Títilo" ;
+ Text [ portuguese ] = "Título" ;
+ Text [ finnish ] = "Otsikko" ;
+ 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[ greek ] = "Ôßôëïò";
+ Text[ korean ] = "Á¦¸ñ";
+ Text[ chinese_traditional ] = "¼ÐÃD";
+ Text[ arabic ] = "ÇáÚäæÇä";
+ Text[ turkish ] = "Baþlýk";
+ Text[ language_user1 ] = " ";
+};
+String STR_ALPHA
+{
+ Text = "Trennzeichen" ;
+ Text [ ENGLISH ] = "Delimiter" ;
+ Text [ norwegian ] = "Skilletegn" ;
+ Text [ italian ] = "Separatore" ;
+ Text [ portuguese_brazilian ] = "Delimitador" ;
+ Text [ portuguese ] = "Separador" ;
+ Text [ finnish ] = "Erotin" ;
+ Text [ danish ] = "Skilletegn" ;
+ Text [ french ] = "Séparateur" ;
+ Text [ swedish ] = "Skiljetecken" ;
+ Text [ dutch ] = "Scheidingsteken" ;
+ Text [ spanish ] = "Separador" ;
+ Text [ english_us ] = "Separator" ;
+ Text[ chinese_simplified ] = "·Ö¸ô·û";
+ Text[ russian ] = "Ðàçäåëèòåëü";
+ Text[ polish ] = "Separator";
+ Text[ japanese ] = "‹æØ‚è‹L†";
+ Text[ greek ] = "Äéá÷ùñéóôéêü";
+ Text[ korean ] = "±¸ºÐ";
+ Text[ chinese_traditional ] = "³s¦r²Å";
+ Text[ arabic ] = "ÇáÝÇÕá";
+ Text[ turkish ] = "Ayýrma iþareti";
+ Text[ language_user1 ] = " ";
+};
+String STR_LEVEL
+{
+ Text = "Ebene " ;
+ Text [ ENGLISH ] = "Level " ;
+ Text [ norwegian ] = "Nivå " ;
+ Text [ italian ] = "Livello " ;
+ Text [ portuguese_brazilian ] = "Nível" ;
+ Text [ portuguese ] = "Nível " ;
+ Text [ finnish ] = "Taso " ;
+ Text [ danish ] = "Niveau " ;
+ Text [ french ] = "Niveau " ;
+ Text [ swedish ] = "Nivå " ;
+ Text [ dutch ] = "Niveau " ;
+ Text [ spanish ] = "Nivel " ;
+ Text [ english_us ] = "Level " ;
+ Text[ chinese_simplified ] = "¼¶ ";
+ Text[ russian ] = "Óðîâåíü ";
+ Text[ polish ] = "Poziom ";
+ Text[ japanese ] = "ÚÍÞÙ ";
+ Text[ greek ] = "Åðßðåäï ";
+ Text[ korean ] = "·¹À̾î ";
+ Text[ chinese_traditional ] = "¯Å ";
+ Text[ arabic ] = "ÇáãÓÊæì ";
+ Text[ turkish ] = "Düzey ";
+ Text[ language_user1 ] = " ";
+};
+String STR_FILE_NOT_FOUND
+{
+ Text = "Die Datei \"%1\" konnte im Pfad \"%2\" nicht gefunden werden." ;
+ Text [ ENGLISH ] = "The file \"%1\" could not be found in path \"%2\"." ;
+ Text[ english_us ] = "The file, \"%1\" in the \"%2\" path could not be found.";
+ Text[ portuguese ] = "Foi impossível encontrar o ficheiro \"%1\" no atalho \"%2\".";
+ Text[ russian ] = "Íàéòè ôàéë \"%1\" ïî ìàðøðóòó \"%2\" íå óäàåòñÿ.";
+ Text[ greek ] = "Ôï áñ÷åßï \"%1\" äåí Þôáí äõíáôüí íá âñåèåß óôç äéáäñïìÞ \"%2\".";
+ Text[ dutch ] = "Bestand \"%1\" niet gevonden in pad \"%2\".";
+ Text[ french ] = "Impossible de trouver le fichier \"%1\" sur le chemin \"%2\" !";
+ Text[ spanish ] = "No se pudo encontrar el archivo \"%1\" en la ruta \"%2\".";
+ Text[ italian ] = "Non è stato possibile trovare il file \"%1\" nel percorso \"%2\".";
+ Text[ danish ] = "Det var ikke muligt at finde filen \"%1\" på sti \"%2\".";
+ Text[ swedish ] = "Filen \"%1\" kunde inte hittas i sökväg \"%2\".";
+ Text[ polish ] = "Nie znaleziono pliku \"%1\" w œcie¿ce \"%2\".";
+ Text[ portuguese_brazilian ] = "The file \"%1\" could not be found.";
+ Text[ japanese ] = "̧²Ù \"%1\" ‚ÍÊß½ \"%2\" ‚ÉŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Text[ korean ] = "\"%1\" ÆÄÀÏÀÌ\"%2\" °æ·Î¿¡¼­ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ chinese_simplified ] = "ÔÚ·¾¶ \"%2\" ÖÐÎÞ·¨ÕÒµ½Îļþ \"%1\" ¡£";
+ Text[ chinese_traditional ] = "µLªk¦b¸ô®|¡§%2¡¨¤º§ä¨ìÀɮס§%1¡¨¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÇáÚËæÑ Úáì ÇáãáÝ \"%1\" Ýí ÇáãÓÇÑ \"%2\".";
+ Text[ turkish ] = "Dosya \"%1\" \"%2\" veri yolunda bulunamadý.";
+};
+/*************************************************************************
+
+*************************************************************************/
+TabDialog DLG_MULTI_TOX
+{
+ HelpID = HID_MULTI_TOX_DLG;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Verzeichnis einfügen" ;
+ Text [ ENGLISH ] = "Insert index" ;
+
+ Moveable = TRUE ;
+
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_TOX_SELECT;
+ PageResID = TP_TOX_SELECT;
+ Text = "Verzeichnis" ;
+ Text [ ENGLISH ] = "Index" ;
+ Text[ english_us ] = "Index";
+ Text[ portuguese ] = "Índice";
+ Text[ russian ] = "Óêàçàòåëü";
+ Text[ greek ] = "ÅõñåôÞñéï";
+ Text[ dutch ] = "Index";
+ Text[ french ] = "Index";
+ Text[ spanish ] = "Índice";
+ Text[ italian ] = "Indice";
+ Text[ danish ] = "Indeks";
+ Text[ swedish ] = "Förteckning";
+ Text[ polish ] = "Indeks";
+ Text[ portuguese_brazilian ] = "Index";
+ Text[ japanese ] = "õˆø";
+ Text[ korean ] = "»öÀÎ";
+ Text[ chinese_simplified ] = "Ŀ¼";
+ Text[ chinese_traditional ] = "¥Ø¿ý";
+ Text[ arabic ] = "ÝåÑÓ";
+ Text[ turkish ] = "Dizin";
+ };
+ PageItem
+ {
+ Identifier = TP_TOX_ENTRY;
+ PageResID = TP_TOX_ENTRY;
+ Text = "Einträge";
+ Text [English] = "Entries";
+ Text[ english_us ] = "Entries";
+ Text[ portuguese ] = "Entradas";
+ Text[ russian ] = "Ýëåìåíòû";
+ Text[ greek ] = "ÅããñáöÝò";
+ Text[ dutch ] = "Items";
+ Text[ french ] = "Entrées";
+ Text[ spanish ] = "Entradas";
+ Text[ italian ] = "Voci";
+ Text[ danish ] = "Elementer";
+ Text[ swedish ] = "Poster";
+ Text[ polish ] = "Wpisy";
+ Text[ portuguese_brazilian ] = "Entries";
+ Text[ japanese ] = "€–Ú";
+ Text[ korean ] = "Ç׸ñ";
+ Text[ chinese_simplified ] = "ÌõÄ¿";
+ Text[ chinese_traditional ] = "±ø¥Ø";
+ Text[ arabic ] = "ÅÏÎÇáÇÊ";
+ Text[ turkish ] = "Giriþler";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_TOX_STYLES;
+ PageResID = TP_TOX_STYLES;
+ Text = "Vorlagen" ;
+ Text [ ENGLISH ] = "Styles" ;
+ Text[ english_us ] = "Styles";
+ Text[ portuguese ] = "Estilos";
+ Text[ russian ] = "Ñòèëè";
+ Text[ dutch ] = "Opmaakprofielen";
+ Text[ french ] = "Styles";
+ Text[ spanish ] = "Estilos";
+ Text[ italian ] = "Modelli";
+ Text[ danish ] = "Typografi";
+ Text[ swedish ] = "Mallar";
+ Text[ polish ] = "Szablony";
+ Text[ portuguese_brazilian ] = "Styles";
+ Text[ japanese ] = "½À²Ù";
+ Text[ chinese_simplified ] = "Ñùʽ";
+ Text[ chinese_traditional ] = "¼Ë¦¡";
+ Text[ arabic ] = "ÃäãÇØ";
+ Text[ greek ] = "Ðñüôõðá";
+ Text[ korean ] = "À¯Çü";
+ Text[ turkish ] = "Þablonlar";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_COLUMN ;
+ PageResID = TP_COLUMN ;
+ Text = "Spalten" ;
+ Text [ ENGLISH ] = "Columns" ;
+ Text [ norwegian ] = "Kolonner" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ portuguese_brazilian ] = "Colunas" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ finnish ] = "Sarakkeet" ;
+ Text [ danish ] = "Kolonner" ;
+ Text [ french ] = "Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ spanish ] = "Columnas" ;
+ Text [ english_us ] = "Columns" ;
+ Text[ chinese_simplified ] = "À¸";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "’i‘g‚Ý";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­";
+ Text[ arabic ] = "ÃÚãÏÉ";
+ Text[ turkish ] = "Sütunlar";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_BACKGROUND ;
+ PageResID = 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[ greek ] = "Öüíôï";
+ Text[ korean ] = "¹è°æ";
+ Text[ arabic ] = "ÇáÎáÝíÉ";
+ Text[ turkish ] = "Artalan";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ Window WIN_EXAMPLE
+ {
+ Pos = MAP_APPFONT ( 0 , 10 ) ;
+ Size = MAP_APPFONT ( 150, 160 ) ;
+ };
+ String ST_USERDEFINEDINDEX
+ {
+ Text = "Benutzerdefiniertes Verzeichnis" ;
+ Text [ ENGLISH ] = "User-define index" ;
+ Text[ english_us ] = "User-Defined Index";
+ Text[ portuguese ] = "Índice personalizado";
+ Text[ russian ] = "Óêàçàòåëü ïîëüçîâàòåëÿ";
+ Text[ greek ] = "ÐñïóáñìïóìÝíï åõñåôÞñéï";
+ Text[ dutch ] = "Gebruikergedefinieerde index";
+ Text[ french ] = "Index personnalisé";
+ Text[ spanish ] = "Índice del usuario";
+ Text[ italian ] = "Indice personalizzato";
+ Text[ danish ] = "Brugerdefineret indeks";
+ Text[ swedish ] = "Användardefinierad förteckning";
+ Text[ polish ] = "Indeks u¿ytkownika";
+ Text[ portuguese_brazilian ] = "User-define index";
+ Text[ japanese ] = "Õ°»Þ°’è‹`‚Ìõˆø";
+ Text[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ »öÀÎ";
+ Text[ chinese_simplified ] = "Óû§¶¨ÒåµÄĿ¼";
+ Text[ chinese_traditional ] = "¦Û­q¥Ø¿ý";
+ Text[ arabic ] = "ÝåÑÓ ãÚÑÝ ãä ÞÈá ÇáãÓÊÎÏã";
+ Text[ turkish ] = "Kullanýcý tanýmlý dizin";
+ };
+ CheckBox CB_SHOWEXAMPLE
+ {
+ Size = MAP_APPFONT ( 100, 10 ) ;
+ Text = "~Vorschau anzeigen" ;
+ Text [ ENGLISH ] = "Show ~preview" ;
+ Text[ english_us ] = "Sho~w preview";
+ Text[ portuguese ] = "~Mostrar Previsualizar";
+ Text[ russian ] = "Âêëþ÷èòü ïðîñìîòð";
+ Text[ greek ] = "Åì~öÜíéóç ðñïåðéóêüðçóçò";
+ Text[ dutch ] = "~Voorbeeld weergeven";
+ Text[ french ] = "Afficher l'~aperçu";
+ Text[ spanish ] = "Previsuali~zación";
+ Text[ italian ] = "Mostra anteprima";
+ Text[ danish ] = "Vis eksempel";
+ Text[ swedish ] = "~Visa förhandsvisning";
+ Text[ polish ] = "Wyœwietl podgl¹d";
+ Text[ portuguese_brazilian ] = "Show ~preview";
+ Text[ japanese ] = "ÌßÚËÞ­°‚Ì•\\Ž¦(~W)";
+ Text[ korean ] = "¹Ì¸®º¸±â º¸±â(~W)";
+ Text[ chinese_simplified ] = "ÏÔʾԤÊÓ(~P)";
+ Text[ chinese_traditional ] = "Åã¥Ü¹wÄý(~P)";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáãÚÇíäÉ";
+ Text[ turkish ] = "Önizlemeyi görüntüle";
+ };
+ Text[ english_us ] = "Insert Index";
+ Text[ portuguese ] = "Inserir índice";
+ Text[ russian ] = "Âñòàâèòü óêàçàòåëü";
+ Text[ greek ] = "ÐñïóèÞêç åõñåôçñßïõ";
+ Text[ dutch ] = "Index invoegen";
+ Text[ french ] = "Insertion d'index";
+ Text[ spanish ] = "Insertar índice";
+ Text[ italian ] = "Inserisci indice";
+ Text[ danish ] = "Indsæt indeks";
+ Text[ swedish ] = "Infoga förteckning";
+ Text[ polish ] = "Wstaw indeks";
+ Text[ portuguese_brazilian ] = "Insert index";
+ Text[ japanese ] = "õˆø‚Ì‘}“ü";
+ Text[ korean ] = "»öÀÎ »ðÀÔ";
+ Text[ chinese_simplified ] = "²åÈëĿ¼";
+ Text[ chinese_traditional ] = "´¡¤J¥Ø¿ý";
+ Text[ arabic ] = "ÅÏÑÇÌ ÝåÑÓ";
+ Text[ english_us ] = "Insert Index";
+ Text[ portuguese ] = "Inserir índice";
+ Text[ russian ] = "Âñòàâèòü óêàçàòåëü";
+ Text[ greek ] = "ÐñïóèÞêç åõñåôçñßïõ";
+ Text[ dutch ] = "Index invoegen";
+ Text[ french ] = "Insertion d'index";
+ Text[ spanish ] = "Insertar índice";
+ Text[ italian ] = "Inserisci indice";
+ Text[ danish ] = "Indsæt indeks";
+ Text[ swedish ] = "Infoga förteckning";
+ Text[ polish ] = "Wstaw indeks";
+ Text[ portuguese_brazilian ] = "Insert index";
+ Text[ japanese ] = "õˆø‚Ì‘}“ü";
+ Text[ korean ] = "»öÀÎ »ðÀÔ";
+ Text[ chinese_simplified ] = "²åÈëĿ¼";
+ Text[ chinese_traditional ] = "´¡¤J¥Ø¿ý";
+ Text[ arabic ] = "ÅÏÑÇÌ ÝåÑÓ";
+ Text[ turkish ] = "Dizin ekle";
+ Text[ language_user1 ] = " ";
+};
+//------------------------------------------------------------------
+TabPage TP_TOX_SELECT
+{
+ HelpID = HID_TP_TOX_SELECT;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+
+ FixedText FT_TYPE
+ {
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ Size = MAP_APPFONT ( 30, 10 ) ;
+ Text = "T~yp" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text[ english_us ] = "Type";
+ Text[ portuguese ] = "T~ipo";
+ Text[ russian ] = "Òèï";
+ Text[ greek ] = "Ôý~ðïò";
+ Text[ dutch ] = "~Type";
+ Text[ french ] = "~Type";
+ Text[ spanish ] = "Tip~o";
+ Text[ italian ] = "Tipo";
+ Text[ danish ] = "Type";
+ Text[ swedish ] = "T~yp";
+ Text[ polish ] = "Typ";
+ Text[ portuguese_brazilian ] = "Type";
+ Text[ japanese ] = "Ží—Þ";
+ Text[ korean ] = "ŸÀÔ";
+ Text[ chinese_simplified ] = "ÀàÐÍ";
+ Text[ chinese_traditional ] = "Ãþ«¬";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_TYPE
+ {
+ Pos = MAP_APPFONT ( 45 , 14 ) ;
+ Size = MAP_APPFONT ( 80 , 80 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Inhaltsverzeichnis" ; TO_CONTENT ;> ;
+ < "Stichwortverzeichnis" ; TO_INDEX ;> ;
+ < "Abbildungsverzeichnis" ; TO_ILLUSTRATION ;> ;
+ < "Tabellenverzeichnis" ; TO_TABLE ;> ;
+ < "Benutzerdefiniert" ; TO_USER ;> ;
+ < "Objektverzeichnis" ; TO_OBJECT ;> ;
+ < "Literaturverzeichnis" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Table of contents" ; TO_CONTENT ;> ;
+ < "Index" ; TO_INDEX ;> ;
+ < "Table of illustrations" ;TO_ILLUSTRATION ;> ;
+ < "Table of tables" ; TO_TABLE ;> ;
+ < "User-Defined" ; TO_USER ;> ;
+ < "Table of objects" ; TO_OBJECT ;> ;
+ < "Table of authorities" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; TO_CONTENT ;> ;
+ < " " ; TO_INDEX ;> ;
+ < " " ; TO_ILLUSTRATION ;> ;
+ < " " ; TO_TABLE ;> ;
+ < " " ; TO_USER ;> ;
+ < " " ; TO_OBJECT ;> ;
+ < " " ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Table of Contents" ; TO_CONTENT ;> ;
+ < "Alphabetical Index" ; TO_INDEX ;> ;
+ < "Illustration Index" ; TO_ILLUSTRATION ;> ;
+ < "Index of Tables" ; TO_TABLE ;> ;
+ < "User-Defined" ; TO_USER ;> ;
+ < "Table of Objects" ; TO_OBJECT ;> ;
+ < "Bibliography" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Índice geral" ; TO_CONTENT ;> ;
+ < "Índice remissivo" ; TO_INDEX ;> ;
+ < "Índice de ilustrações" ; TO_ILLUSTRATION ;> ;
+ < "Índice de tabelas" ; TO_TABLE ;> ;
+ < "Personalizado" ; TO_USER ;> ;
+ < "Índice de objectos" ; TO_OBJECT ;> ;
+ < "Bibliografia" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ russian ] =
+ {
+ < "Îãëàâëåíèå" ; TO_CONTENT ;> ;
+ < "Ïðåäìåòíûé óêàçàòåëü" ; TO_INDEX ;> ;
+ < "Ñïèñîê ðèñóíêîâ" ; TO_ILLUSTRATION ;> ;
+ < "Ñïèñîê òàáëèö" ; TO_TABLE ;> ;
+ < "Çàäàíî ïîëüçîâàòåëåì" ; TO_USER ;> ;
+ < "Ñïèñîê îáúåêòîâ" ; TO_OBJECT ;> ;
+ < "Ñïèñîê ëèòåðàòóðû" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÊáôÜëïãïò ðåñéå÷ïìÝíùí" ; TO_CONTENT ;> ;
+ < "ÅõñåôÞñéï ëÝîåùí" ; TO_INDEX ;> ;
+ < "ÊáôÜëïãïò åéêüíùí" ; TO_ILLUSTRATION ;> ;
+ < "ÅõñåôÞñéï ðéíÜêùí" ; TO_TABLE ;> ;
+ < "ÐñïóáñìïóìÝíá" ; TO_USER ;> ;
+ < "ÊáôÜëïãïò áíôéêåéìÝíùí" ; TO_OBJECT ;> ;
+ < "Âéâëéïãñáößá" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Inhoudsopgave" ; TO_CONTENT ;> ;
+ < "Trefwoordenregister" ; TO_INDEX ;> ;
+ < "Afbeeldingenregister" ; TO_ILLUSTRATION ;> ;
+ < "Tabellenregister" ; TO_TABLE ;> ;
+ < "Gebruikergedefinieerd" ; TO_USER ;> ;
+ < "Objectenregister" ; TO_OBJECT ;> ;
+ < "Literatuurlijst" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ french ] =
+ {
+ < "Table des matières" ; TO_CONTENT ;> ;
+ < "Index lexical" ; TO_INDEX ;> ;
+ < "Index des illustrations" ; TO_ILLUSTRATION ;> ;
+ < "Index des tables" ; TO_TABLE ;> ;
+ < "Index personnalisé" ; TO_USER ;> ;
+ < "Index des objets" ; TO_OBJECT ;> ;
+ < "Bibliographie" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Índice de contenido" ; TO_CONTENT ;> ;
+ < "Índice alfabético" ; TO_INDEX ;> ;
+ < "Índice de ilustraciones" ; TO_ILLUSTRATION ;> ;
+ < "Índice de tablas" ; TO_TABLE ;> ;
+ < "Índice del usuario" ; TO_USER ;> ;
+ < "Índice de objetos" ; TO_OBJECT ;> ;
+ < "Bibliografía" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ italian ] =
+ {
+ < "Indice generale" ; TO_CONTENT ;> ;
+ < "Indice analitico" ; TO_INDEX ;> ;
+ < "Indice delle illustrazioni" ; TO_ILLUSTRATION ;> ;
+ < "Indice delle tabelle" ; TO_TABLE ;> ;
+ < "Indice personalizzato" ; TO_USER ;> ;
+ < "Indice degli oggetti" ; TO_OBJECT ;> ;
+ < "Bibliografia" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ danish ] =
+ {
+ < "Indholdsfortegnelse" ; TO_CONTENT ;> ;
+ < "Stikordsregister" ; TO_INDEX ;> ;
+ < "Figuroversigt" ; TO_ILLUSTRATION ;> ;
+ < "Tabeloversigt" ; TO_TABLE ;> ;
+ < "Brugerdefineret" ; TO_USER ;> ;
+ < "Objektindeks" ; TO_OBJECT ;> ;
+ < "Litteraturliste" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Innehållsförteckning" ; TO_CONTENT ;> ;
+ < "Sakregister" ; TO_INDEX ;> ;
+ < "Illustrationsförteckning" ; TO_ILLUSTRATION ;> ;
+ < "Tabellförteckning" ; TO_TABLE ;> ;
+ < "Användardefinierad" ; TO_USER ;> ;
+ < "Objektförteckning" ; TO_OBJECT ;> ;
+ < "Litteraturförteckning" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ polish ] =
+ {
+ < "Spis treœci" ; TO_CONTENT ;> ;
+ < "Zestaw hase³" ; TO_INDEX ;> ;
+ < "Spis obrazów" ; TO_ILLUSTRATION ;> ;
+ < "Spis tabel" ; TO_TABLE ;> ;
+ < "Zdefiniowane przez u¿ytkownika" ; TO_USER ;> ;
+ < "Spis obiektów" ; TO_OBJECT ;> ;
+ < "Spis literatury" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Inhaltsverzeichnis" ; TO_CONTENT ;> ;
+ < "Stichwortverzeichnis" ; TO_INDEX ;> ;
+ < "Abbildungsverzeichnis" ; TO_ILLUSTRATION ;> ;
+ < "Tabellenverzeichnis" ; TO_TABLE ;> ;
+ < "Benutzerverzeichnis" ; TO_USER ;> ;
+ < "Objektverzeichnis" ; TO_OBJECT ;> ;
+ < "Literaturverzeichnis" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ japanese ] =
+ {
+ < "–ÚŽŸ" ; TO_CONTENT ;> ;
+ < "õˆø" ; TO_INDEX ;> ;
+ < "}‚Ìõˆø" ; TO_ILLUSTRATION ;> ;
+ < "•\\‚Ìõˆø" ; TO_TABLE ;> ;
+ < "Õ°»Þ°’è‹`" ; TO_USER ;> ;
+ < "µÌÞ¼Þª¸Ä‚Ìõˆø" ; TO_OBJECT ;> ;
+ < "ŽQl•¶Œ£•\\" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ korean ] =
+ {
+ < "³»¿ë Ç¥" ; TO_CONTENT ;> ;
+ < "¾ËÆĺª ¼øÀÇ »öÀÎ" ; TO_INDEX ;> ;
+ < "»ðÈ­ »öÀÎ" ; TO_ILLUSTRATION ;> ;
+ < "Ç¥ »öÀÎ" ; TO_TABLE ;> ;
+ < "»ç¿ëÀÚ Á¤ÀÇ" ; TO_USER ;> ;
+ < "°³Ã¼ Ç¥" ; TO_OBJECT ;> ;
+ < "Âü°í ¹®Çå" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÄÚÈÝĿ¼" ; TO_CONTENT ;> ;
+ < "Ë÷Òý" ; TO_INDEX ;> ;
+ < "²åͼĿ¼" ; TO_ILLUSTRATION ;> ;
+ < "±í¸ñĿ¼" ; TO_TABLE ;> ;
+ < "Óû§×Ô¶¨µÄ" ; TO_USER ;> ;
+ < "¶ÔÏóĿ¼" ; TO_OBJECT ;> ;
+ < "ÎÄÏ×Ŀ¼" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¤º®e¥Ø¿ý" ; TO_CONTENT ;> ;
+ < "¯Á¤Þ" ; TO_INDEX ;> ;
+ < "´¡¹Ï¥Ø¿ý" ; TO_ILLUSTRATION ;> ;
+ < "ªí®æ¥Ø¿ý" ; TO_TABLE ;> ;
+ < "¦Û­q" ; TO_USER ;> ;
+ < "ª«¥ó¥Ø¿ý" ; TO_OBJECT ;> ;
+ < "¤åÄm¥Ø¿ý" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÝåÑÓ ÇáãÍÊæíÇÊ" ; TO_CONTENT ;> ;
+ < "ÝåÑÓ ÃÈÌÏí" ; TO_INDEX ;> ;
+ < "ÝåÑÓ ÇáÕæÑ ÇáÅíÖÇÍíÉ" ; TO_ILLUSTRATION ;> ;
+ < "ÝåÑÓ ÇáÌÏÇæá" ; TO_TABLE ;> ;
+ < "ãÚÑÝ ãä ÞÈá ÇáãÓÊÎÏã" ; TO_USER ;> ;
+ < "ÝåÑÓ ÇáßÇÆäÇÊ" ; TO_OBJECT ;> ;
+ < "ÝåÑÓ ÇáãÑÇÌÚ" ; TO_AUTHORITIES ;> ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Ýçindekiler" ; TO_CONTENT ;> ;
+ < "Alfabetik dizin" ; TO_INDEX ;> ;
+ < "Resim dizini" ; TO_ILLUSTRATION ;> ;
+ < "Tablo dizini" ; TO_TABLE ;> ;
+ < "Kullanýcý tanýmlý" ; TO_USER ;> ;
+ < "Nesne dizini" ; TO_OBJECT ;> ;
+ < "Kaynakça" ; TO_AUTHORITIES ;> ;
+ };
+ };
+ CheckBox CB_READONLY
+ {
+ Pos = MAP_APPFONT ( 130 , 16 ) ;
+ Size = MAP_APPFONT ( 120 , 10 ) ;
+ Text = "G~eschützt vor manuellen Änderungen" ;
+ Text [ ENGLISH ] = "Protected against manual changes" ;
+ Check = TRUE;
+ Text[ english_us ] = "Protected against manual changes";
+ Text[ portuguese ] = "~Protegido contra modificações manuais";
+ Text[ russian ] = "Çàùèùåíî îò èçìåíåíèé âðó÷íóþ";
+ Text[ greek ] = "Ðñïóôáóßá Ýíáíôé ÷~åéñïêßí. áëëáãþí";
+ Text[ dutch ] = "B~eveiligd tegen handmatige wijzigingen.";
+ Text[ french ] = "~Protégé contre toute modification manuelle";
+ Text[ spanish ] = "Protegido contra modificaciones ~manuales";
+ Text[ italian ] = "Prot~etto contro modifiche manuali";
+ Text[ danish ] = "Beskyttet mod manuelle ændringer";
+ Text[ swedish ] = "Skyddad för manuella ändringar";
+ Text[ polish ] = "Chroniony przed rêcznymi zmianami";
+ Text[ portuguese_brazilian ] = "Protected against manual changes";
+ Text[ japanese ] = "”CˆÓ•ÏX‚©‚ç•ÛŒì";
+ Text[ korean ] = "¼öµ¿º¯È¯À¸·Î ºÎÅÍ º¸È£";
+ Text[ chinese_simplified ] = "·ÀÖ¹ÊÖ¶¯¸ü¸Ä";
+ Text[ chinese_traditional ] = "¤£¤¹³\\¤â¤uÅܧó";
+ Text[ arabic ] = "ãÄãøä ÖÏ ÇáÊÛííÑÇÊ ÇáíÏæíÉ";
+ Text[ turkish ] = "Manüel deðiþikliklere karþý koru";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_TITLE
+ {
+ Pos = MAP_APPFONT ( 12 , 31 ) ;
+ Size = MAP_APPFONT ( 30 ,10 ) ;
+ Text = "T~itel" ;
+ Text [ ENGLISH ] = "Title" ;
+ Text[ english_us ] = "~Title";
+ Text[ portuguese ] = "~Título";
+ Text[ russian ] = "Çàãîëîâîê";
+ Text[ greek ] = "Ôßôëïò";
+ Text[ dutch ] = "T~itel";
+ Text[ french ] = "~Titre";
+ Text[ spanish ] = "Títu~lo";
+ Text[ italian ] = "T~itolo";
+ Text[ danish ] = "Overskrift";
+ Text[ swedish ] = "T~itel";
+ Text[ polish ] = "Tytu³";
+ Text[ portuguese_brazilian ] = "Title";
+ Text[ japanese ] = "À²ÄÙ(~T)";
+ Text[ korean ] = "Á¦¸ñ(~T)";
+ Text[ chinese_simplified ] = "±êÌâ(~T)";
+ Text[ chinese_traditional ] = "¼ÐÃD(~T)";
+ Text[ arabic ] = "ÇáÚäæÇä";
+ Text[ turkish ] = "Baþlýk";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_TITLE
+ {
+ Pos = MAP_APPFONT ( 45 , 29 ) ;
+ Size = MAP_APPFONT ( 203 , 12 ) ;
+ Border = TRUE;
+ };
+ GroupBox GB_TYPETITLE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248, 41 ) ;
+ Text = "Typ und Titel" ;
+ Text [ ENGLISH ] = "Type and title" ;
+ Text[ english_us ] = "Type and title";
+ Text[ portuguese ] = "Tipo e título";
+ Text[ russian ] = "Òèï è çàãîëîâîê";
+ Text[ greek ] = "Ôýðïò êáé ôßôëïò";
+ Text[ dutch ] = "Type en titel";
+ Text[ french ] = "Type et titre";
+ Text[ spanish ] = "Tipo y título";
+ Text[ italian ] = "Tipo e titolo";
+ Text[ danish ] = "Type og overskrift";
+ Text[ swedish ] = "Typ och titel";
+ Text[ polish ] = "Typ i tytu³";
+ Text[ portuguese_brazilian ] = "Type and title";
+ Text[ japanese ] = "À²Ìß‚ÆÀ²ÄÙ";
+ Text[ korean ] = "ŸÀÔ°ú Á¦¸ñ";
+ Text[ chinese_simplified ] = "±êÌâºÍÀàÐÍ";
+ Text[ chinese_traditional ] = "Ãþ«¬©M¼ÐÃD";
+ Text[ arabic ] = "ÇáäæÚ æÇáÚäæÇä";
+ Text[ turkish ] = "Tip ve baþlýk";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_AREA
+ {
+ Pos = MAP_APPFONT ( 12 , 58 ) ;
+ Size = MAP_APPFONT ( 113 , 12 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Gesamtes Dokument" ; AREA_DOCUMENT ;> ;
+ < "Kapitel" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Entire document" ; AREA_DOCUMENT ;> ;
+ < "Chapter" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; AREA_DOCUMENT ;> ;
+ < " " ; AREA_CHAPTER ;> ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Entire document" ; AREA_DOCUMENT ;> ;
+ < "Chapter" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Documento inteiro" ; AREA_DOCUMENT ;> ;
+ < "Capítulo" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ russian ] =
+ {
+ < "Âåñü äîêóìåíò" ; AREA_DOCUMENT ;> ;
+ < "Ãëàâà" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ greek ] =
+ {
+ < "Ïëüêëçñï ôï Ýããñáöï" ; AREA_DOCUMENT ;> ;
+ < "ÊåöÜëáéï" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Compleet document" ; AREA_DOCUMENT ;> ;
+ < "Hoofdstuk" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ french ] =
+ {
+ < "Document entier" ; AREA_DOCUMENT ;> ;
+ < "Chapitre" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Todo el documento" ; AREA_DOCUMENT ;> ;
+ < "Capítulo" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ italian ] =
+ {
+ < "Intero documento" ; AREA_DOCUMENT ;> ;
+ < "Capitolo" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ danish ] =
+ {
+ < "Hele dokumentet" ; AREA_DOCUMENT ;> ;
+ < "Kapitel" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Hela dokumentet" ; AREA_DOCUMENT ;> ;
+ < "Kapitel" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ polish ] =
+ {
+ < "Ca³y dokument" ; AREA_DOCUMENT ;> ;
+ < "Rozdzia³" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Gesamtes Dokument" ; AREA_DOCUMENT ;> ;
+ < "Kapitel" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‚·‚ׂĂÌÄÞ·­ÒÝÄ" ; AREA_DOCUMENT ;> ;
+ < "Í" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ korean ] =
+ {
+ < "Àüü ¹®¼­" ; AREA_DOCUMENT ;> ;
+ < "Àå" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "È«²¿Îĵµ" ; AREA_DOCUMENT ;> ;
+ < "ÕÂ" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¾ã­Ó¤å¥ó" ; AREA_DOCUMENT ;> ;
+ < "³¹¸`" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ãÓÊäÏ ßÇãá" ; AREA_DOCUMENT ;> ;
+ < "ÇáÝÕá" ; AREA_CHAPTER ;> ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Tüm belge" ; AREA_DOCUMENT ;> ;
+ < "Bölüm" ; AREA_CHAPTER ;> ;
+ };
+ };
+ FixedText FT_LEVEL
+ {
+ Pos = MAP_APPFONT ( 145 , 59 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Text = "A~uswerten bis Ebene" ;
+ Text [ ENGLISH ] = "Evaluation level" ;
+ Text[ english_us ] = "Evaluation level";
+ Text[ portuguese ] = "A~valiar até nível";
+ Text[ russian ] = "Îöåíèòü äî óðîâíÿ";
+ Text[ greek ] = "Áðïôßìçóç ùò åðßðåäï";
+ Text[ dutch ] = "~Aantal niveaus";
+ Text[ french ] = "~Niveau de profondeur souhaité";
+ Text[ spanish ] = "E~valuar hasta nivel";
+ Text[ italian ] = "Val~uta fino a livello";
+ Text[ danish ] = "Evaluer indtil niveau";
+ Text[ swedish ] = "~Utvärdera till nivå";
+ Text[ polish ] = "Ewaluuj do poziomu";
+ Text[ portuguese_brazilian ] = "Evaluation level";
+ Text[ japanese ] = "ŽŸ‚ÌÚÍÞÙ‚Ü‚Å“K—p";
+ Text[ korean ] = "Æò°¡ ´Ü°è";
+ Text[ chinese_simplified ] = "°üÀ¨±êÌ⼶±ð";
+ Text[ chinese_traditional ] = "¥]¬A¼ÐÃD¯Å§O";
+ Text[ arabic ] = "ÊÞííã ÍÊì ÇáãÓÊæì";
+ Text[ turkish ] = "Þu düzeye kadar:";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField NF_LEVEL
+ {
+ Pos = MAP_APPFONT ( 228 , 59 ) ;
+ Size = MAP_APPFONT ( 20 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 10 ;
+ Value = 10 ;
+ SpinSize = 1 ;
+ };
+ GroupBox GB_AREA
+ {
+ Pos = MAP_APPFONT ( 6 , 47 ) ;
+ Size = MAP_APPFONT ( 248, 27 ) ;
+ Text = "~Verzeichnis erstellen für" ;
+ Text [ ENGLISH ] = "Create index of" ;
+ Text[ english_us ] = "Create index for";
+ Text[ portuguese ] = "Criar ín~dice para";
+ Text[ russian ] = "Ñîçäàòü óêàçàòåëü äëÿ";
+ Text[ greek ] = "Äçìéïõñãßá åõñåôçñßïõ ãéá";
+ Text[ dutch ] = "~Index maken voor";
+ Text[ french ] = "Créer un ~index pour";
+ Text[ spanish ] = "Crear í~ndice para";
+ Text[ italian ] = "Crea indice per";
+ Text[ danish ] = "Opret indeks for";
+ Text[ swedish ] = "Skapa fö~rteckning för";
+ Text[ polish ] = "Utwórz indeks dla";
+ Text[ portuguese_brazilian ] = "Create index of";
+ Text[ japanese ] = "õˆø쬂̑ÎÛ";
+ Text[ korean ] = "»öÀÎ ¸¸µé±â";
+ Text[ chinese_simplified ] = "½¨Á¢Ä¿Â¼ÓÃÓÚ";
+ Text[ chinese_traditional ] = "¥Í¦¨¥Ø¿ý¥Î©ó";
+ Text[ arabic ] = "ÅäÔÇÁ ÝåÑÓ áÜ";
+ Text[ turkish ] = "Þunun için dizin oluþtur:";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_FROMHEADINGS
+ {
+ Pos = MAP_APPFONT ( 12 , 87 ) ;
+ Size = MAP_APPFONT ( 95 , 10 ) ;
+ Check = TRUE;
+ Text = "~Gliederung" ;
+ Text [ ENGLISH ] = "Outline" ;
+ Text[ english_us ] = "Outline";
+ Text[ portuguese ] = "~Esquema";
+ Text[ russian ] = "Ñòðóêòóðà";
+ Text[ greek ] = "ÄéÜñèñùóç";
+ Text[ dutch ] = "~Overzicht";
+ Text[ french ] = "~Structure";
+ Text[ spanish ] = "~Esquema";
+ Text[ italian ] = "Struttura";
+ Text[ danish ] = "Disposition";
+ Text[ swedish ] = "~Disposition";
+ Text[ polish ] = "Konspekt";
+ Text[ portuguese_brazilian ] = "Outline";
+ Text[ japanese ] = "±³ÄײÝ";
+ Text[ korean ] = "À±°û";
+ Text[ chinese_simplified ] = "´ó¸Ù";
+ Text[ chinese_traditional ] = "¤jºõ";
+ Text[ arabic ] = "ÊÞÓíã";
+ Text[ turkish ] = "Anahat";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton PB_CHAPTERDLG
+ {
+ Pos = MAP_APPFONT ( 115 , 85 ) ;
+ Size = MAP_APPFONT ( 10 , 10 ) ;
+ Text = "~..." ;
+ //Text [ ENGLISH ] = "" ;
+ TabStop = TRUE ;
+ };
+ CheckBox CB_ADDSTYLES
+ {
+ Pos = MAP_APPFONT ( 12 , 100 ) ;
+ Size = MAP_APPFONT ( 75 , 10 ) ;
+ Text = "~weiteren Vorlagen" ;
+ Text [ ENGLISH ] = "additional styles" ;
+ Text[ english_us ] = "~Additional Styles";
+ Text[ portuguese ] = "~Outros estilos";
+ Text[ russian ] = "Äîïîëíèòåëüíûå ñòèëè";
+ Text[ greek ] = "~Ðñüóèåôá ðñüôõðá";
+ Text[ dutch ] = "~andere opmaakprofielen";
+ Text[ french ] = "Styles ~supplémentaires";
+ Text[ spanish ] = "Otro~s estilos";
+ Text[ italian ] = "Altri modelli";
+ Text[ danish ] = "Yderligere typografier";
+ Text[ swedish ] = "Ytterligare ~mallar";
+ Text[ polish ] = "Inne szablony";
+ Text[ portuguese_brazilian ] = "additional styles";
+ Text[ japanese ] = "‚»‚Ì‘¼‚̽À²Ù";
+ Text[ korean ] = "ºÎ°¡ÀûÀÎ À¯Çü(~A)";
+ Text[ chinese_simplified ] = "ÆäËüÑùʽ";
+ Text[ chinese_traditional ] = "¨ä¥L¼Ë¦¡";
+ Text[ arabic ] = "ÃäãÇØ ÅÖÇÝíÉ";
+ Text[ turkish ] = "Diðer þablonlar";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_USER_ADDSTYLE
+ {
+ Text = "~Vorlagen" ;
+ Text [ ENGLISH ] = "Styles" ;
+ Text[ english_us ] = "Styl~es";
+ Text[ portuguese ] = "E~stilos";
+ Text[ russian ] = "Ñòèëè";
+ Text[ greek ] = "Ðñüôõðá";
+ Text[ dutch ] = "~Opmaakprofielen";
+ Text[ french ] = "~Styles";
+ Text[ spanish ] = "~Estilos";
+ Text[ italian ] = "Modelli";
+ Text[ danish ] = "Typografi";
+ Text[ swedish ] = "~Mallar";
+ Text[ polish ] = "Szablony";
+ Text[ portuguese_brazilian ] = "Styles";
+ Text[ japanese ] = "½À²Ù(~E)";
+ Text[ korean ] = "À¯Çü(~E)";
+ Text[ chinese_simplified ] = "Ñùʽ(~E)";
+ Text[ chinese_traditional ] = "¼Ë¦¡(~E)";
+ Text[ arabic ] = "ÃäãÇØ";
+ Text[ turkish ] = "Þablonlar";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton PB_ADDSTYLES
+ {
+ Pos = MAP_APPFONT ( 115 , 98 ) ;
+ Size = MAP_APPFONT ( 10 , 10 ) ;
+ Text = "..." ;
+ //Text [ ENGLISH ] = "" ;
+ TabStop = TRUE ;
+ };
+ RadioButton RB_FROMCAPTIONS
+ {
+ Pos = MAP_APPFONT ( 12 , 87 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Bes~chriftungen" ;
+ Text [ ENGLISH ] = "Captions" ;
+ Text[ english_us ] = "Captions";
+ Text[ portuguese ] = "~Legendas";
+ Text[ russian ] = "Íàçâàíèÿ";
+ Text[ greek ] = "ÅðéãñáöÝò";
+ Text[ dutch ] = "~Bijschriften";
+ Text[ french ] = "Légendes";
+ Text[ spanish ] = "Etiq~uetas";
+ Text[ italian ] = "Diciture";
+ Text[ danish ] = "Billedtekster";
+ Text[ swedish ] = "Bi~ldtexter";
+ Text[ polish ] = "Ety~kiety";
+ Text[ portuguese_brazilian ] = "Captions";
+ Text[ japanese ] = "×ÍÞÙ";
+ Text[ korean ] = "ĸ¼Ç";
+ Text[ chinese_simplified ] = "±êÇ©";
+ Text[ chinese_traditional ] = "¼ÐÅÒ";
+ Text[ arabic ] = "ÊÓãíÇÊ ÊæÖíÍíÉ";
+ Text[ turkish ] = "Resim yazýsý";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_CAPTIONSEQUENCE
+ {
+ Pos = MAP_APPFONT ( 12 , 101 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Kategorie" ;
+ Text [ ENGLISH ] = "Category" ;
+ Text[ english_us ] = "Category";
+ Text[ portuguese ] = "~Categoria";
+ Text[ russian ] = "Êàòåãîðèÿ";
+ Text[ greek ] = "Êáôçãïñßá";
+ Text[ dutch ] = "~Categorie";
+ Text[ french ] = "~Catégorie";
+ Text[ spanish ] = "~Categoría";
+ Text[ italian ] = "C~ategoria";
+ Text[ danish ] = "Kategori";
+ Text[ swedish ] = "~Kategori";
+ Text[ polish ] = "Kategorie";
+ Text[ portuguese_brazilian ] = "Category";
+ Text[ japanese ] = "¶ÃºÞØ°";
+ Text[ korean ] = "ºÐ·ùÇ׸ñ";
+ Text[ chinese_simplified ] = "·ÖÀà";
+ Text[ chinese_traditional ] = "­S³ò";
+ Text[ arabic ] = "ÇáÝÆÉ";
+ Text[ turkish ] = "Kategori";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_CAPTIONSEQUENCE
+ {
+ Pos = MAP_APPFONT ( 55 , 99 ) ;
+ Size = MAP_APPFONT ( 70 , 40 ) ;
+ DropDown = TRUE;
+ TabStop = TRUE;
+ };
+ FixedText FT_DISPLAYTYPE
+ {
+ Pos = MAP_APPFONT ( 12 , 115 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Anzeige" ;
+ Text [ ENGLISH ] = "Display" ;
+ Text[ english_us ] = "Display";
+ Text[ portuguese ] = "~Monitor";
+ Text[ russian ] = "Ïîêàçàòü";
+ Text[ greek ] = "Ïèüíç";
+ Text[ dutch ] = "~Weergave";
+ Text[ french ] = "~Affichage";
+ Text[ spanish ] = "Visuali~zación";
+ Text[ italian ] = "~Visualizzazione";
+ Text[ danish ] = "Visning";
+ Text[ swedish ] = "Visning";
+ Text[ polish ] = "Poka¿";
+ Text[ portuguese_brazilian ] = "Display";
+ Text[ japanese ] = "•\\Ž¦";
+ Text[ korean ] = "Ç¥½Ã";
+ Text[ chinese_simplified ] = "ÏÔʾ";
+ Text[ chinese_traditional ] = "Åã¥Ü";
+ Text[ arabic ] = "ÚÑÖ";
+ Text[ turkish ] = "Görüntü";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DISPLAYTYPE
+ {
+ Pos = MAP_APPFONT ( 55 , 114 ) ;
+ Size = MAP_APPFONT ( 70 , 40 ) ;
+ DropDown = TRUE;
+ TabStop = TRUE;
+ StringList =
+ {
+ < "Referenztext" ; > ;
+ < "Kategorie und Nummer" ; > ;
+ < "Beschriftungstext" ; > ;
+ };
+ StringList [English]=
+ {
+ < "Reference text" ; > ;
+ < "Category and number" ; > ;
+ < "Caption text" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "References" ; > ;
+ < "Category and Number" ; > ;
+ < "Caption Text" ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Texto de referência" ; > ;
+ < "Categoria e número" ; > ;
+ < "Texto para legenda" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Òåêñò ññûëêè" ; > ;
+ < "Êàòåãîðèÿ è íîìåð" ; > ;
+ < "Òåêñò íàçâàíèÿ" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "Êåßìåíï áíáöïñÜò" ; > ;
+ < "Êáôçãïñßá êáé áñéèìüò" ; > ;
+ < "Êåßìåíï åðéãñáöÞò" ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Referentietekst" ; > ;
+ < "Categorie en nummer" ; > ;
+ < "Bijschrifttekst" ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "Texte de référence" ; > ;
+ < "Catégorie et numéro" ; > ;
+ < "Texte de légende" ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Texto de referencia" ; > ;
+ < "Categoría y número" ; > ;
+ < "Texto de la etiqueta" ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "Testo di riferimento" ; > ;
+ < "Categoria e numero" ; > ;
+ < "Dicitura" ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "Referencetekst" ; > ;
+ < "Kategori og nummer" ; > ;
+ < "Billedtekst" ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Referenstext" ; > ;
+ < "Kategori och nummer" ; > ;
+ < "Bildtext" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Tekst odwo³añ" ; > ;
+ < "Kategoria i numer" ; > ;
+ < "Tekst etykiety" ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Referenztext" ; > ;
+ < "Kategorie und Nummer" ; > ;
+ < "Beschriftungstext" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "ŽQÆ•¶Žš—ñ" ; > ;
+ < "¶ÃºÞØ°‚ƔԆ" ; > ;
+ < "×ÍÞÙ" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "ÂüÁ¶" ; > ;
+ < "ºÐ·ùÇ׸ñ°ú ¼ýÀÚ" ; > ;
+ < "ĸ¼Ç ÅؽºÆ®" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "²Î¿¼ÎÄ" ; > ;
+ < "·ÖÀàºÍ±àºÅ" ; > ;
+ < "±êÇ©ÎÄ" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "°Ñ·Ó¤å" ; > ;
+ < "­S³ò©M¸¹½X" ; > ;
+ < "¼ÐÅÒ¤å" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "äÕ ãÑÌÚí" ; > ;
+ < "ÇáÝÆÉ æÇáÑÞã" ; > ;
+ < "äÕ ÇáÊÓãíÉ ÇáÊæÖíÍíÉ" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Referans metni" ; > ;
+ < "Kategori ve numara" ; > ;
+ < "Resim yazýsý" ; > ;
+ };
+ };
+ RadioButton RB_FROMOBJECTNAMES
+ {
+ Pos = MAP_APPFONT ( 156 , 87 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Obje~ktnamen" ;
+ Text [ ENGLISH ] = "Object names" ;
+ Text[ english_us ] = "Object names";
+ Text[ portuguese ] = "Nomes de ~objectos";
+ Text[ russian ] = "Íàçâàíèÿ îáúåêòîâ";
+ Text[ greek ] = "Ïíüìáôá áíôéêåéìÝíïõ";
+ Text[ dutch ] = "Obje~ctnamen";
+ Text[ french ] = "~Noms d'objets";
+ Text[ spanish ] = "Nombres de o~bjeto";
+ Text[ italian ] = "~Nome oggetti";
+ Text[ danish ] = "Objektnavne";
+ Text[ swedish ] = "Objektnamn";
+ Text[ polish ] = "Nazwy obiektów";
+ Text[ portuguese_brazilian ] = "Object names";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä–¼";
+ Text[ korean ] = "°³Ã¼ À̸§";
+ Text[ chinese_simplified ] = "¶ÔÏóÃû³Æ";
+ Text[ chinese_traditional ] = "ª«¥ó¦WºÙ";
+ Text[ arabic ] = "ÃÓãÇÁ ÇáßÇÆä";
+ Text[ turkish ] = "Nesne adlarý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_TOXMARKS
+ {
+ Pos = MAP_APPFONT ( 12 , 113 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Verzeichnism~arkierungen" ;
+ Text [ ENGLISH ] = "Index entries" ;
+ Text[ english_us ] = "Inde~x marks";
+ Text[ portuguese ] = "~Marcas do índice";
+ Text[ russian ] = "Ìåòêè óêàçàòåëÿ";
+ Text[ greek ] = "ÓçìÜíóåéò åõñåôçñßïõ";
+ Text[ dutch ] = "~Indexmarkeringen";
+ Text[ french ] = "~Marques d'index";
+ Text[ spanish ] = "Mar~cas del índice";
+ Text[ italian ] = "Contrasse~gni indice";
+ Text[ danish ] = "Indeksmarkeringer";
+ Text[ swedish ] = "Förteckningsm~arkeringar";
+ Text[ polish ] = "Zaz~naczanie indeksów";
+ Text[ portuguese_brazilian ] = "Index entries";
+ Text[ japanese ] = "õˆø‘I‘ð€–Ú";
+ Text[ korean ] = "À妽º Ç¥±â(~X)";
+ Text[ chinese_simplified ] = "±ê¼ÇĿ¼ÌõÄ¿";
+ Text[ chinese_traditional ] = "¥Ø¿ý¼Ð°O";
+ Text[ arabic ] = "ÊÍÏíÏÇÊ ÇáÝåÑÓ";
+ Text[ turkish ] = "Dizin ~iþaretleri";
+ };
+ GroupBox GB_CREATEFROM
+ {
+ Pos = MAP_APPFONT ( 6 , 77 ) ;
+ Size = MAP_APPFONT ( 248, 56 ) ;
+ Text = "Erzeugen aus" ;
+ Text [ ENGLISH ] = "Create from" ;
+ Text[ english_us ] = "Create from";
+ Text[ portuguese ] = "Criar a partir de";
+ Text[ russian ] = "Ñîçäàòü èç";
+ Text[ greek ] = "Äçìéïõñãßá áðü";
+ Text[ dutch ] = "Maken van";
+ Text[ french ] = "Créer à partir de";
+ Text[ spanish ] = "Crear de";
+ Text[ italian ] = "Crea da";
+ Text[ danish ] = "Opret ud fra";
+ Text[ swedish ] = "Skapa från";
+ Text[ polish ] = "Utwórz z";
+ Text[ portuguese_brazilian ] = "Create from";
+ Text[ japanese ] = "쬌ó•â";
+ Text[ korean ] = "·ÎºÎÅÍ ¸¸µé±â";
+ Text[ chinese_simplified ] = "Éú³É²ÉÓÃ";
+ Text[ chinese_traditional ] = "¥Í¦¨±q";
+ Text[ arabic ] = "ÅäÔÇÁ ãä";
+ Text[ turkish ] = "Kaynak";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_COLLECTSAME
+ {
+ Pos = MAP_APPFONT ( 12 , 86 ) ;
+ Size = MAP_APPFONT ( 121 , 10 ) ;
+ Text = "Zusammenfassen ~gleicher Einträge" ;
+ Text [ ENGLISH ] = "Combine identical entries" ;
+ Text[ english_us ] = "Combine identical entries";
+ Text[ portuguese ] = "Agrupar entradas ~idênticas";
+ Text[ russian ] = "Îáúåäèíÿòü îäèíàêîâûå ýëåìåíòû";
+ Text[ greek ] = "Óõ~ãêÝíôñùóç ôáõôüóçìùí åããñáöþí";
+ Text[ dutch ] = "~Samenvatten van identieke items";
+ Text[ french ] = "Grouper les entrées ~identiques";
+ Text[ spanish ] = "Com~binar entradas idénticas";
+ Text[ italian ] = "Riunisci voci ~uguali";
+ Text[ danish ] = "Kombiner identiske elementer";
+ Text[ swedish ] = "Kom~binera likadana poster";
+ Text[ polish ] = "Sc~al takie same wpisy";
+ Text[ portuguese_brazilian ] = "Combine identical entries";
+ Text[ japanese ] = "“¯ˆê€–Ú‚ð“‡";
+ Text[ korean ] = "µ¿ÀÏ Ç׸ñ Á¶ÇÕ";
+ Text[ chinese_simplified ] = "ºÏ²¢ÏàͬµÄÌõÄ¿";
+ Text[ chinese_traditional ] = "¦X¦}¦P¤@±ø¥Ø";
+ Text[ arabic ] = "Öã ÇáÅÏÎÇáÇÊ ÇáãÊãÇËáÉ";
+ Text[ turkish ] = "~Eþ giriþleri birleþtir";
+ };
+ CheckBox CB_USEFF
+ {
+ Pos = MAP_APPFONT ( 18 , 98 ) ;
+ Size = MAP_APPFONT ( 115 , 10 ) ;
+ Text = "Zusammenfassen mit ~f oder ff" ;
+ Text [ english ] = "Combine identical entries with ~pp." ;
+ Text[ english_us ] = "Combine identical entries with p or ~pp";
+ Text[ portuguese ] = "Combinar com entradas ~seguinte(s)";
+ Text[ russian ] = "Îáúåäèíÿòü ýëåìåíòû ñ ñ èëè ññ";
+ Text[ greek ] = "ÁíÜëõóç ìå ~å Þ ìå åð.";
+ Text[ dutch ] = "Samenvatten met ~e.v.";
+ Text[ french ] = "~avec \"et suiv.\"";
+ Text[ spanish ] = "Combinar entradas con las ~siguiente(s)";
+ Text[ italian ] = "Riunisci con ~p. o pp.";
+ Text[ danish ] = "Kombiner med f. eller ff.";
+ Text[ swedish ] = "Kombinera med ~f eller ff";
+ Text[ polish ] = "Streœæ za pomoc¹ s lub ss";
+ Text[ portuguese_brazilian ] = "Combine identical entries with ~pp.";
+ Text[ japanese ] = "‘±‚«Íß°¼Þ‚ð p ‚Ü‚½‚Í pp ‚Å•\\Ž¦(~P)";
+ Text[ korean ] = "p ¶Ç´Âpp¿Í µ¿ÀÏ Ç׸ñÀ» Çϳª·Î ¹­À½(~P)";
+ Text[ chinese_simplified ] = "ºÏ²¢´ø f »ò ff µÄÌõÄ¿(~P)";
+ Text[ chinese_traditional ] = "¦X¦}¥Î ~f ©Î ff";
+ Text[ arabic ] = "Combine identical entries with ~pp.";
+ Text[ turkish ] = "Sonraki ~sayfa ya da sayfalar ile birleþtir";
+ };
+ CheckBox CB_USE_DASH
+ {
+ Pos = MAP_APPFONT ( 18 , 110 ) ;
+ Size = MAP_APPFONT ( 115 , 10 ) ;
+ Text = "Zusammenfassen ~mit -" ;
+ Text [ english ] = "Combine identical entries with -" ;
+ Text[ english_us ] = "Combine with -";
+ Text[ portuguese ] = "Agrupar ~com -";
+ Text[ russian ] = "Îáúåäèíÿòü ýëåìåíòû ñ -";
+ Text[ greek ] = "ÓõãêÝíôñùóç ~ìå";
+ Text[ dutch ] = "Samenvatten ~met -";
+ Text[ french ] = "a~vec -";
+ Text[ spanish ] = "U~nir con -";
+ Text[ italian ] = "Riunisci ~con -";
+ Text[ danish ] = "Kombiner med -";
+ Text[ swedish ] = "Kombinera ~med -";
+ Text[ polish ] = "~Scal z -";
+ Text[ portuguese_brazilian ] = "Combine identical entries with -";
+ Text[ japanese ] = "‘±‚«Íß°¼Þ‚ð - ‚Å•\\Ž¦";
+ Text[ korean ] = "-¿Í µ¿ÀÏ Ç׸ñ Á¶ÇÕ";
+ Text[ chinese_simplified ] = "Óà - ºÏ²¢";
+ Text[ chinese_traditional ] = "¦X¦}¥Î -";
+ Text[ arabic ] = "Öã ÈÇÓÊÎÏÇã -";
+ Text[ turkish ] = "~Birleþme -";
+ };
+ CheckBox CB_CASESENSITIVE
+ {
+ Pos = MAP_APPFONT ( 18 , 122 ) ;
+ Size = MAP_APPFONT ( 115 , 10 ) ;
+ Text = "Groß- und ~Kleinschreibung beachten" ;
+ Text [ ENGLISH ] = "Case sensitive" ;
+ Text[ english_us ] = "Case sensitive";
+ Text[ portuguese ] = "Maiús~culas e minúsculas";
+ Text[ russian ] = "Ó÷èòûâàòü ðåãèñòð";
+ Text[ greek ] = "Óõìöùíßá ðåæþí-êåöáëáßùí";
+ Text[ dutch ] = "Hoofdletters/~kleine letters belangrijk";
+ Text[ french ] = "en respectant la ~casse";
+ Text[ spanish ] = "~Mayúsculas/minúsculas";
+ Text[ italian ] = "Maiuscole/minu~scole";
+ Text[ danish ] = "Forskel på store og små bogstaver";
+ Text[ swedish ] = "Observera stor och liten bo~kstav";
+ Text[ polish ] = "Uwzglêd~nij ma³e i du¿e litery";
+ Text[ portuguese_brazilian ] = "Case sensitive";
+ Text[ japanese ] = "‘啶Žš/¬•¶Žš‚ð‹æ•Ê";
+ Text[ korean ] = "´ë/¼Ò¹®ÀÚ ±¸ºÐ";
+ Text[ chinese_simplified ] = "Çø·Ö´óСд";
+ Text[ chinese_traditional ] = "°Ï¤À¦r¥À¤j¤p¼g";
+ Text[ arabic ] = "ãÑÇÚÇÉ ÇáÃÍÑÝ ÇáßÈíÑÉ/ÇáÕÛíÑÉ";
+ Text[ turkish ] = "Büyük/küçük harf duyarlý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_INITIALCAPS
+ {
+ Pos = MAP_APPFONT ( 136 , 86 ) ;
+ Size = MAP_APPFONT ( 115 , 10 ) ;
+ Text = "Einträge ~automatisch großschreiben";
+ Text [ ENGLISH ] = "Capitalize entries";
+ Text[ english_us ] = "AutoCapitalize entries";
+ Text[ portuguese ] = "~Escrever entradas em maiúsculas autom.";
+ Text[ russian ] = "Ýëåìåíòû çàãëàâíûìè áóêâàìè (àâòîì.)";
+ Text[ greek ] = "ÅããñáöÝò áõôïìÜôùò ìå êåöáëáßá ãñÜììáôá";
+ Text[ dutch ] = "Items automatisch in ~hoofdletterss";
+ Text[ french ] = "Entrées en majuscules (autom.)";
+ Text[ spanish ] = "Escribir entradas automáticamente en ma~yúsculas";
+ Text[ italian ] = "Scrivi le voci maiusc~ole";
+ Text[ danish ] = "Skriv elementer automatisk med stort";
+ Text[ swedish ] = "Skriv ~automatiskt poster med stor bokstav";
+ Text[ polish ] = "Wpisy autom. zapisywa~æ du¿ymi literami";
+ Text[ portuguese_brazilian ] = "Capitalize entries";
+ Text[ japanese ] = "Œê“ª‚ðŽ©“®“I‚ɑ啶Žš‚É‚·‚é";
+ Text[ korean ] = "´ë¹®ÀÚ Ç׸ñ";
+ Text[ chinese_simplified ] = "×Ô¶¯×ª»»³É´óдÌõÄ¿";
+ Text[ chinese_traditional ] = "Âà°ÊÂà´«¦¨¤j¼g¦r¥À";
+ Text[ arabic ] = "ßÊÇÈÉ ÇáÅÏÎÇáÇÊ ÈÃÍÑÝ ßÈíÑÉ ÊáÞÇÆíÇð";
+ Text[ turkish ] = "Giriþleri otomatik olarak büyük harfle baþla";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_KEYASENTRY
+ {
+ Pos = MAP_APPFONT ( 136, 98 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Schlüssel als eigener Eintrag" ;
+ Text [ ENGLISH ] = "Keys as separate entries" ;
+ Text[ english_us ] = "Keys as separate entries";
+ Text[ portuguese ] = "~Chaves como entradas separadas";
+ Text[ russian ] = "Êëþ÷ êàê îòäåëüíûé ýëåìåíò";
+ Text[ greek ] = "ÊëåéäéÜ ùò îå÷ùñé~óôÞ åéóáãùãÞ";
+ Text[ dutch ] = "~Sleutel als extra item";
+ Text[ french ] = "~Clé comme entrée séparée";
+ Text[ spanish ] = "~Claves como entradas propias";
+ Text[ italian ] = "~Chiavi come voci separate";
+ Text[ danish ] = "Nøgle som separat element";
+ Text[ swedish ] = "~Nyckel som egen post";
+ Text[ polish ] = "Klucz ja~ko wpis w³asny";
+ Text[ portuguese_brazilian ] = "Keys as separate entries";
+ Text[ japanese ] = "”CˆÓ“ü—Í—p·°";
+ Text[ korean ] = "ºÐ¸® Ç׸ñÀ¸·Î¼­ÀÇ Å°";
+ Text[ chinese_simplified ] = "¼üÂë×÷Ϊµ¥¶ÀµÄÌõÄ¿";
+ Text[ chinese_traditional ] = "Áä½X·í§@¤@­Ó¦Û¤vªº±ø¥Ø";
+ Text[ arabic ] = "ÇáãÝÊÇÍ ßÅÏÎÇá ãäÝÕá";
+ Text[ turkish ] = "Anahtarlarý ayrý giriþ olarak gir";
+ };
+ CheckBox CB_FROMFILE
+ {
+ Pos = MAP_APPFONT ( 136 , 110 ) ;
+ Size = MAP_APPFONT ( 73 , 10 ) ;
+ Text = "Konko~rdanzdatei" ;
+ Text [ ENGLISH ] = "...file??" ;
+ Text[ english_us ] = "~Concordance file";
+ Text[ portuguese ] = "~Ficheiro de concordância";
+ Text[ russian ] = "Ôàéë-êîíêîðäàíñ";
+ Text[ greek ] = "~Áñ÷åßï ôáîéíüìçóçò";
+ Text[ dutch ] = "~Concordantiebestand";
+ Text[ french ] = "Fichier de ~concordance";
+ Text[ spanish ] = "~Archivo de concordancia";
+ Text[ italian ] = "File di conco~rdanza";
+ Text[ danish ] = "Konkordansfil";
+ Text[ swedish ] = "Konkordansfil";
+ Text[ polish ] = "Plik konkordancji";
+ Text[ portuguese_brazilian ] = "Create entries from file";
+ Text[ japanese ] = "—pŒêõˆø(~C)";
+ Text[ korean ] = "ÀÏÄ¡ÇÏ´Â ÆÄÀÏ(~C)";
+ Text[ chinese_simplified ] = "ÓÉÎļþ»ã±à³öÌõÄ¿(~C)";
+ Text[ chinese_traditional ] = "±qÀɮ׶׽s±ø¥Ø(~C)";
+ Text[ arabic ] = "ãáÝ ÝåÑÓ ÃÈÌÏí";
+ Text[ turkish ] = "Uyumluluk dosyasý";
+ };
+ CheckBox CB_FROMTABLES
+ {
+ Pos = MAP_APPFONT ( 112 , 87 ) ;
+ Size = MAP_APPFONT ( 68 , 10 ) ;
+ Text = "~Tabellen" ;
+ Text [ ENGLISH ] = "Tables" ;
+ Text[ english_us ] = "Tables";
+ Text[ portuguese ] = "~Tabelas";
+ Text[ russian ] = "Òàáëèöû";
+ Text[ greek ] = "Ðßíáêåò";
+ Text[ dutch ] = "~Tabellen";
+ Text[ french ] = "~Tables";
+ Text[ spanish ] = "~Tablas";
+ Text[ italian ] = "Ta~belle";
+ Text[ danish ] = "Tabeller";
+ Text[ swedish ] = "~Tabeller";
+ Text[ polish ] = "Tabele";
+ Text[ portuguese_brazilian ] = "Tables";
+ Text[ japanese ] = "•\\";
+ Text[ korean ] = "Ç¥";
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÌÏÇæá";
+ Text[ turkish ] = "Tablolar";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_FROMFRAMES
+ {
+ Pos = MAP_APPFONT ( 182 , 87 ) ;
+ Size = MAP_APPFONT ( 68 , 10 ) ;
+ Text = "Te~xtrahmen" ;
+ Text [ ENGLISH ] = "Text frames" ;
+ Text[ english_us ] = "Te~xt frames";
+ Text[ portuguese ] = "~Molduras de texto";
+ Text[ russian ] = "Òåêñòîâûå ðàìêè";
+ Text[ greek ] = "Ðëáßóéï êåéìÝíïõ";
+ Text[ dutch ] = "~Tekstkaders";
+ Text[ french ] = "Cadre ~texte";
+ Text[ spanish ] = "Marco de te~xto";
+ Text[ italian ] = "Cornici";
+ Text[ danish ] = "Tekstboks";
+ Text[ swedish ] = "Textramar";
+ Text[ polish ] = "Ramki tekstu";
+ Text[ portuguese_brazilian ] = "Text frames";
+ Text[ japanese ] = "÷½Ä˜g(~X)";
+ Text[ korean ] = "ÅؽºÆ® ÇÁ·¹ÀÓ(~X)";
+ Text[ chinese_simplified ] = "Îı¾¿ò(~X)";
+ Text[ chinese_traditional ] = "¤å¦r¤è®Ø(~X)";
+ Text[ arabic ] = "ÅØÇÑÇÊ äÕ";
+ Text[ turkish ] = "Metin çerçevesi";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_FROMGRAPHICS
+ {
+ Pos = MAP_APPFONT ( 112 , 100 ) ;
+ Size = MAP_APPFONT ( 68 , 10 ) ;
+ Text = "~Grafiken" ;
+ Text [ ENGLISH ] = "Graphics" ;
+ Text[ english_us ] = "Graphics";
+ Text[ portuguese ] = "~Imagens";
+ Text[ russian ] = "Ðèñóíêè";
+ Text[ greek ] = "ÃñáöéêÜ";
+ Text[ dutch ] = "~Afbeeldingen";
+ Text[ french ] = "~Images";
+ Text[ spanish ] = "Imágene~s";
+ Text[ italian ] = "~Immagini";
+ Text[ danish ] = "Billeder";
+ Text[ swedish ] = "~Grafiker";
+ Text[ polish ] = "Grafiki";
+ Text[ portuguese_brazilian ] = "Graphics";
+ Text[ japanese ] = "}";
+ Text[ korean ] = "±×·¡ÇÈ";
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ chinese_traditional ] = "¹Ï§Î";
+ Text[ arabic ] = "ÕæÑ";
+ Text[ turkish ] = "Grafikler";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_FROMOLE
+ {
+ Pos = MAP_APPFONT ( 182 , 100 ) ;
+ Size = MAP_APPFONT ( 68 , 10 ) ;
+ Text = "~OLE-Objekten" ;
+ 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 O~LE";
+ Text[ italian ] = "O~ggetti 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 nesneleri";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_LEVELFROMCHAPTER
+ {
+ Pos = MAP_APPFONT ( 118 , 113 ) ;
+ Size = MAP_APPFONT ( 103 , 10 ) ;
+ Text = "Ebene aus Urs~prungskapitel" ;
+ Text [ ENGLISH ] = "Use level from source" ;
+ Text[ english_us ] = "Use level from source chapter";
+ Text[ portuguese ] = "Nível do ~capítulo de origem";
+ Text[ russian ] = "Óðîâåíü èç èñõîäíîé ãëàâû";
+ Text[ greek ] = "Åðßðåäï ùò êåöÜëáéï ~ðñïÝëåõóçò";
+ Text[ dutch ] = "Niveau als ~oorsprongshoofdstuk";
+ Text[ french ] = "Niveau du chapitre d'~origine";
+ Text[ spanish ] = "Nivel del capítulo orige~n";
+ Text[ italian ] = "Livello dal capitolo ~sorgente";
+ Text[ danish ] = "Niveau fra kildekapitel";
+ Text[ swedish ] = "Nivå från urs~prungskapitel";
+ Text[ polish ] = "Poziom ze Ÿród³a";
+ Text[ portuguese_brazilian ] = "Use level from source";
+ Text[ japanese ] = "‚à‚Æ‚ÌÍ‚ÌÚÍÞÙ";
+ Text[ korean ] = "¿ø·¡ Àå¿¡¼­ÀÇ ¼öÁØ »ç¿ë";
+ Text[ chinese_simplified ] = "ʹÓÃÔ´Õ½ڵļ¶";
+ Text[ chinese_traditional ] = "¯Å±q·½³¹¸`";
+ Text[ arabic ] = "ÇÓÊÎÏÇã ãÓÊæì ãä ÇáÝÕá ÇáãÕÏÑí";
+ Text[ turkish ] = "Kaynak bölümdeki düzeyi kullan";
+ };
+ MenuButton MB_AUTOMARK
+ {
+ Pos = MAP_APPFONT ( 210 , 110 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Datei" ;
+ Text [ ENGLISH ] = "File" ;
+ TabStop = TRUE ;
+ ButtonMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = MN_AUTOMARK_OPEN ;
+ Text = "Öffnen";
+ Text[English] = "Open";
+ Text[ english_us ] = "Open";
+ Text[ portuguese ] = "Abrir";
+ Text[ russian ] = "Îòêðûòü";
+ Text[ greek ] = "¢íïéãìá";
+ Text[ dutch ] = "Open";
+ Text[ french ] = "Ouvrir";
+ Text[ spanish ] = "Abrir";
+ Text[ italian ] = "Apri";
+ Text[ danish ] = "Åbn";
+ Text[ swedish ] = "Öppna";
+ Text[ polish ] = "Otwórz";
+ Text[ portuguese_brazilian ] = "Open";
+ Text[ japanese ] = "ŠJ‚­";
+ Text[ korean ] = "¿­±â";
+ Text[ chinese_simplified ] = "´ò¿ª";
+ Text[ chinese_traditional ] = "¶}±ÒÂÂÀÉ";
+ Text[ arabic ] = "ÝÊÍ";
+ Text[ turkish ] = "Aç";
+ };
+ MenuItem
+ {
+ Identifier = MN_AUTOMARK_NEW ;
+ Text = "~Neu..." ;
+ Text [ ENGLISH ] = "New..." ;
+ Text[ english_us ] = "~New...";
+ Text[ portuguese ] = "~Novo...";
+ Text[ russian ] = "Ñîçäàòü...";
+ Text[ greek ] = "~Äçìéïõñãßá...";
+ Text[ dutch ] = "~Nieuw...";
+ Text[ french ] = "~Nouveau...";
+ Text[ spanish ] = "~Nuevo...";
+ Text[ italian ] = "~Nuovo...";
+ Text[ danish ] = "~Ny...";
+ Text[ swedish ] = "~Nytt...";
+ Text[ polish ] = "~Nowy...";
+ Text[ portuguese_brazilian ] = "New...";
+ Text[ japanese ] = "V‹Kì¬(~N)...";
+ Text[ korean ] = "»õ·Î(~N)...";
+ Text[ chinese_simplified ] = "н¨...";
+ Text[ chinese_traditional ] = "¶}±Ò·sÀÉ(~N)...";
+ Text[ arabic ] = "ÌÏíÏ...";
+ Text[ turkish ] = "Yeni...";
+ };
+ MenuItem
+ {
+ Identifier = MN_AUTOMARK_EDIT ;
+ Text = "~Bearbeiten..." ;
+ Text [ ENGLISH ] = "Edit..." ;
+ Text[ english_us ] = "~Edit...";
+ Text[ portuguese ] = "~Editar...";
+ Text[ russian ] = "Ïðàâêà...";
+ Text[ greek ] = "~Åðåîåñãáóßá...";
+ Text[ dutch ] = "~Bewerken...";
+ Text[ french ] = "~Éditer...";
+ Text[ spanish ] = "~Editar...";
+ Text[ italian ] = "~Modifica...";
+ Text[ danish ] = "~Rediger...";
+ Text[ swedish ] = "~Redigera...";
+ Text[ polish ] = "~Edytuj...";
+ Text[ portuguese_brazilian ] = "Edit...";
+ Text[ japanese ] = "•ÒW(~E)...";
+ Text[ korean ] = "ÆíÁý(~E)...";
+ Text[ chinese_simplified ] = "±à¼­...";
+ Text[ chinese_traditional ] = "½s¿è(~E)...";
+ Text[ arabic ] = "ÊÍÑíÑ...";
+ Text[ turkish ] = "Düzenle...";
+ };
+ };
+ };
+ Text[ english_us ] = "~File";
+ Text[ portuguese ] = "~Ficheiro";
+ Text[ russian ] = "Ôàéë";
+ Text[ greek ] = "~Áñ÷åßï";
+ Text[ dutch ] = "~Bestand";
+ Text[ french ] = "~Fichier";
+ Text[ spanish ] = "~Archivo";
+ Text[ italian ] = "File";
+ Text[ danish ] = "~Filer";
+ Text[ swedish ] = "~Fil";
+ Text[ polish ] = "~Plik";
+ Text[ portuguese_brazilian ] = "File";
+ Text[ japanese ] = "̧²Ù";
+ Text[ korean ] = "ÆÄÀÏ(~F)";
+ Text[ chinese_simplified ] = "Îļþ";
+ Text[ chinese_traditional ] = "ÀÉ®×";
+ Text[ arabic ] = "ãáÝ";
+ Text[ turkish ] = "Dosya";
+ };
+/* PushButton PB_FILE
+ {
+ Pos = MAP_APPFONT ( 234 , 110 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ Text = "~..." ;
+ //Text [ ENGLISH ] = "" ;
+ TabStop = TRUE ;
+ QuickHelpText = "Öffnen";
+ QuickHelpText[English] = "Open";
+ };
+ PushButton PB_CREATE_AUTOMARK
+ {
+ Pos = MAP_APPFONT ( 143 , 125 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Text = "~Neu..." ;
+ Text [ ENGLISH ] = "New..." ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_EDIT_AUTOMARK
+ {
+ Pos = MAP_APPFONT ( 196 , 125 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Text = "~Bearbeiten..." ;
+ Text [ ENGLISH ] = "Edit..." ;
+ TabStop = TRUE ;
+ };*/
+
+ GroupBox GB_IDXOPTIONS
+ {
+ Pos = MAP_APPFONT ( 6 , 77 ) ;
+ Size = MAP_APPFONT ( 248, 56 ) ;
+ Text = "Zusätze" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text[ english_us ] = "Options";
+ Text[ portuguese ] = "Opções";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ greek ] = "Ðñüóèåôá";
+ Text[ dutch ] = "Overige";
+ Text[ french ] = "Options";
+ Text[ spanish ] = "Opciones";
+ Text[ italian ] = "Extra";
+ Text[ danish ] = "Indstillinger";
+ Text[ swedish ] = "Tillägg";
+ Text[ polish ] = "Dodatki";
+ Text[ portuguese_brazilian ] = "Options";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ chinese_simplified ] = "ÆäËü";
+ Text[ chinese_traditional ] = "¨ä¥L";
+ Text[ arabic ] = "ÎíÇÑÇÊ";
+ Text[ turkish ] = "Seçenekler";
+ Text[ language_user1 ] = " ";
+ };
+ Control CLB_FROMOBJ
+ {
+ Pos = MAP_APPFONT ( 12 , 87 ) ;
+ Size = MAP_APPFONT ( 236 , 43 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ };
+ Resource RES_SRCTYPES
+ {
+ StringArray 1
+ {
+/* ids from tox.hxx
+ TOO_MATH = 0x01,
+ TOO_CHART = 0x02,
+ TOO_IMAGE = 0x04,
+ TOO_CALC = 0x08,
+ TOO_DRAW_IMPRESS= 0x10,
+ TOO_OTHER = 0x80*/
+
+ ItemList =
+ {
+ < "StarMath" ; 1;> ;
+ < "StarChart" ; 2;> ;
+ < "StarImage" ; 4;> ;
+ < "StarCalc" ; 8;> ;
+ < "StarDraw/StarImpress" ; 16;> ;
+ < "Andere OLE-Objekte"; 128;> ;
+ };
+ ItemList[ ENGLISH ] =
+ {
+ < "StarMath" ; 1; > ;
+ < "StarChart" ; 2;> ;
+ < "StarImage" ; 4;> ;
+ < "StarCalc" ; 8;> ;
+ < "StarDraw/StarImpress" ; 16;> ;
+ < "Other OLE objects" ; 128;> ;
+ };
+ ItemList [ language_user1 ] =
+ {
+ < " " ; 1;> ;
+ < " " ; 2;> ;
+ < " " ; 4;> ;
+ < " " ; 8;> ;
+ < " " ; 16;> ;
+ < " "; 128;> ;
+ };
+ ItemList [ english_us ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "Other OLE objects"; 128;> ;
+ };
+ ItemList [ portuguese ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "Outros obejctos OLE"; 128;> ;
+ };
+ ItemList [ russian ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "Äðóãèå îáúêòû OLE"; 128;> ;
+ };
+ ItemList [ greek ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "¢ëëá áíôéêåßìåíá OLE"; 128;> ;
+ };
+ ItemList [ dutch ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "Andere OLE-objecten"; 128;> ;
+ };
+ ItemList [ french ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "Autres objets OLE"; 128;> ;
+ };
+ ItemList [ spanish ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "Otros objetos OLE"; 128;> ;
+ };
+ ItemList [ italian ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "Altri oggetti OLE"; 128;> ;
+ };
+ ItemList [ danish ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "Andre OLE-objekter"; 128;> ;
+ };
+ ItemList [ swedish ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "Andra OLE-objekt"; 128;> ;
+ };
+ ItemList [ polish ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "Inne obiekty OLE"; 128;> ;
+ };
+ ItemList [ portuguese_brazilian ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "Andere OLE-Objekte"; 128;> ;
+ };
+ ItemList [ japanese ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "‚Ù‚©‚Ì OLE µÌÞ¼Þª¸Ä"; 128;> ;
+ };
+ ItemList [ korean ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "±âŸ OLE °³Ã¼"; 128;> ;
+ };
+ ItemList [ chinese_simplified ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "ÆäËü OLE ¶ÔÏó"; 128;> ;
+ };
+ ItemList [ chinese_traditional ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "¨ä¥L OLE ª«¥ó"; 128;> ;
+ };
+ ItemList [ arabic ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "ßÇÆäÇÊ OLE ÃÎÑì"; 128;> ;
+ };
+ ItemList [ turkish ] =
+ {
+ < "StarOffice Math" ; 1;> ;
+ < "StarOffice Chart" ; 2;> ;
+ < "StarOffice Image" ; 4;> ;
+ < "StarOffice Calc" ; 8;> ;
+ < "StarOffice Draw/StarOffice Impress" ; 16;> ;
+ < "Diðer OLE nesneleri"; 128;> ;
+ };
+ };
+ };
+ GroupBox GB_FROMOBJ
+ {
+ Pos = MAP_APPFONT ( 6 , 77) ;
+ Size = MAP_APPFONT ( 248, 56 ) ;
+ Text = "Aus folgenden Objekten erzeugen" ;
+ Text [ ENGLISH ] = "Create from the following objects" ;
+ Text[ english_us ] = "Create from the following objects";
+ Text[ portuguese ] = "Criar a partir dos seguintes objectos";
+ Text[ russian ] = "Ñîçäàòü èç ñëåäóþùèõ îáúåêòîâ";
+ Text[ greek ] = "Äçìéïõñãßá áðü ôá áêüëïõèá áíôéêåßìåíá";
+ Text[ dutch ] = "Uit de volgende objecten samenstellen";
+ Text[ french ] = "Créer à partir des objets suivants";
+ Text[ spanish ] = "Crear de los siguientes objetos";
+ Text[ italian ] = "Crea dai seguenti oggetti";
+ Text[ danish ] = "Opret ud fra følgende objekter";
+ Text[ swedish ] = "Skapa utifrån följande objekt";
+ Text[ polish ] = "Utwórz z nastêpuj¹cych obiektów";
+ Text[ portuguese_brazilian ] = "Create from the following objects";
+ Text[ japanese ] = "ˆÈ‰º‚̵ÌÞ¼Þª¸Ä‚©‚çì¬";
+ Text[ korean ] = "´ÙÀ½ÀÇ °³Ã¼·Î ºÎÅÍ ¸¸µé±â";
+ Text[ chinese_simplified ] = "ÓÉÏÂÁжÔÏóÉú³É";
+ Text[ chinese_traditional ] = "±q¤U¦Cª«¥ó¥Í¦¨";
+ Text[ arabic ] = "ÅäÔÇÁ ãä ÇáßÇÆäÇÊ ÇáÊÇáíÉ";
+ Text[ turkish ] = "Þu nesnelerden oluþtur:";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_SEQUENCE
+ {
+ Pos = MAP_APPFONT ( 12, 57) ;
+ Size = MAP_APPFONT ( 100, 10 ) ;
+ Text = "~Einträge nummerieren" ;
+ Text [ ENGLISH ] = "Number entries" ;
+ Text[ english_us ] = "~Number entries";
+ Text[ portuguese ] = "~Numerar entradas";
+ Text[ russian ] = "Ïðîíóìåðîâàòü ýëåìåíòû";
+ Text[ greek ] = "Áñßèìçóç åããñáöþí";
+ Text[ dutch ] = "~Items nummeren";
+ Text[ french ] = "~Numéroter les entrées";
+ Text[ spanish ] = "~Numerar entradas";
+ Text[ italian ] = "Num~era voci";
+ Text[ danish ] = "Nummerer elementer";
+ Text[ swedish ] = "Numrera poster";
+ Text[ polish ] = "Numeruj wpisy";
+ Text[ portuguese_brazilian ] = "Number entries";
+ Text[ japanese ] = "€–ڂɔԆ‚ð•t‚¯‚é(~N)";
+ Text[ korean ] = "¼ýÀÚ Ç׸ñ(~N)";
+ Text[ chinese_simplified ] = "±àÅÅÌõÄ¿(~N)";
+ Text[ chinese_traditional ] = "¶µ¥Ø½s¸¹(~N)";
+ Text[ arabic ] = "ÊÑÞíã ÇáÅÏÎÇáÇÊ";
+ Text[ turkish ] = "Giriþleri numarala";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_BRACKET
+ {
+ Pos = MAP_APPFONT ( 12, 70) ;
+ Size = MAP_APPFONT ( 60, 10 ) ;
+ Text = "~Klammern" ;
+ Text [ ENGLISH ] = "Brackets" ;
+ Text[ english_us ] = "~Brackets";
+ Text[ portuguese ] = "~Parêntesis";
+ Text[ russian ] = "Ñêîáêè";
+ Text[ greek ] = "ÐáñåíèÝóåéò";
+ Text[ dutch ] = "~Haakjes";
+ Text[ french ] = "~Parenthèses";
+ Text[ spanish ] = "~Paréntesis";
+ Text[ italian ] = "Parentesi";
+ Text[ danish ] = "Parenteser";
+ Text[ swedish ] = "Parenteser";
+ Text[ polish ] = "Nawiasy";
+ Text[ portuguese_brazilian ] = "Brackets";
+ Text[ japanese ] = "Š‡ŒÊ(~B)";
+ Text[ korean ] = "°ýÈ£(~B)";
+ Text[ chinese_simplified ] = "À¨ºÅ(~B)";
+ Text[ chinese_traditional ] = "¬A¸¹(~B)";
+ Text[ arabic ] = "ÃÞæÇÓ";
+ Text[ turkish ] = "Ayraçlar";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_BRACKET
+ {
+ Pos = MAP_APPFONT ( 75, 70) ;
+ Size = MAP_APPFONT ( 20, 50 ) ;
+ Border = TRUE;
+ DropDown = TRUE;
+ StringList =
+ {
+ < "[]" ;> ;
+ < "()" ;> ;
+ < "{}" ;> ;
+ < "<>" ;> ;
+ };
+ };
+ GroupBox GB_AUTHORITY
+ {
+ Pos = MAP_APPFONT ( 6 , 47) ;
+ Size = MAP_APPFONT ( 248, 86 ) ;
+ Text = "Formatierung der Einträge" ;
+ Text [ ENGLISH ] = "Formatting of the marks" ;
+ Text[ english_us ] = "Formatting of the entries";
+ Text[ portuguese ] = "Formatação das entradas";
+ Text[ russian ] = "Ôîðìàòèðîâàíèÿ ýëåìåíòîâ";
+ Text[ greek ] = "Ìïñöïðïßçóç åããñáöþí";
+ Text[ dutch ] = "Items opmaken";
+ Text[ french ] = "Formatage des entrées";
+ Text[ spanish ] = "Formateado de las entradas";
+ Text[ italian ] = "Formattazione delle voci";
+ Text[ danish ] = "Elementernes formatering";
+ Text[ swedish ] = "Formatering av poster";
+ Text[ polish ] = "Formatowanie wpisów";
+ Text[ portuguese_brazilian ] = "Formatting of the marks";
+ Text[ japanese ] = "€–Ú‚Ì‘Ž®Ý’è";
+ Text[ korean ] = "Ç׸ñ ¼­½Ä";
+ Text[ chinese_simplified ] = "ÌõÄ¿¸ñʽ";
+ Text[ chinese_traditional ] = "¶µ¥Ø®æ¦¡";
+ Text[ arabic ] = "ÊäÓíÞ ÇáÅÏÎÇáÇÊ";
+ Text[ turkish ] = "Giriþ formatlama";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_AUTOMARK_TYPE
+ {
+ Text = "Markierungsdatei für Stichwortverzeichnis (*.sdi)" ;
+ Text [ ENGLISH ] = "Mark up file for index (*.sdi)" ;
+ Text[ english_us ] = "Selection file for the alphabetical index (*.sdi)";
+ Text[ portuguese ] = "Ficheiro de marcas para índice remissivo (*.sdi)";
+ Text[ russian ] = "Âûäåëåííûé ôàéë äëÿ ïðåäìåòíîãî óêàçàòåëÿ (*.sdi)";
+ Text[ greek ] = "Áñ÷åßï óÞìáíóçò ãéá åõñåôÞñéï ëÝîåùí (*.sdi)";
+ Text[ dutch ] = "Bestand met markeringen voor trefwoordenregister (*.sdi)";
+ Text[ french ] = "Fichier descriptif pour l'index lexical (*.sdi)";
+ Text[ spanish ] = "Archivo de marcas para índice alfabético (*.sdi)";
+ Text[ italian ] = "File di selezione per indice analitico (*.sdi)";
+ Text[ danish ] = "Markeringsfil for stikordsregister (*.sdi)";
+ Text[ swedish ] = "Markeringsfil för sakregister (*.sdi)";
+ Text[ polish ] = "Plik zaznaczaj¹cy dla zestawu hase³ (*.sdi) ";
+ Text[ portuguese_brazilian ] = "Mark up file for index";
+ Text[ japanese ] = "õˆø€–Ú—p‚ÉÏ°¸‚ð‚‚¯‚½Ì§²Ù (*.sdi)";
+ Text[ korean ] = "¾ËÆĺª ¼øÀÇ »öÀÎÀ» À§ÇÑ ¼±Åà ÆÄÀÏ (*.sdi)";
+ Text[ chinese_simplified ] = "ÓÃÓÚË÷ÒýĿ¼µÄ±ê¼ÇÎļþ(*.sdi)";
+ Text[ chinese_traditional ] = "¥Î©ó¯Á¤Þªº¼Ð°OÀÉ®×(*.sdi)";
+ Text[ arabic ] = "ãáÝ ÇáÊÍÏíÏ ááÝåÑÓ ÇáÃÈÌÏí (*.sdi)";
+ Text[ turkish ] = "Alfabetik dizin için seçim dosyasý (*.sdi)";
+ };
+};
+
+TabPage TP_TOX_ENTRY
+{
+ HelpID = HID_TP_TOX_ENTRY;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ Control LB_LEVEL
+ {
+ Pos = MAP_APPFONT ( 6, 15 ) ;
+ Size = MAP_APPFONT ( 25, 118 ) ;
+ TabStop = TRUE ;
+ Border = TRUE;
+// HScroll = TRUE;
+/* StringList =
+ {
+ < "1" ; > ;
+ < "2" ; > ;
+ < "3" ; > ;
+ < "4" ; > ;
+ < "5" ; > ;
+ < "6" ; > ;
+ < "7" ; > ;
+ < "8" ; > ;
+ < "9" ; > ;
+ < "10" ; > ;
+ < "1-10" ; > ;
+ };*/
+ };
+ FixedText FT_LEVEL
+ {
+ Pos = MAP_APPFONT ( 6, 3 ) ;
+ Size = MAP_APPFONT ( 25, 8 ) ;
+ Text = "E~bene" ;
+ Text [ ENGLISH ] = "Level" ;
+ Text[ english_us ] = "~Level";
+ Text[ portuguese ] = "~Nível";
+ Text[ russian ] = "Óðîâåíü";
+ Text[ greek ] = "Åðßðåäï";
+ Text[ dutch ] = "~Niveau";
+ Text[ french ] = "~Niveau";
+ Text[ spanish ] = "Ni~vel";
+ Text[ italian ] = "Livello";
+ Text[ danish ] = "Niveau";
+ Text[ swedish ] = "~Nivå";
+ Text[ polish ] = "Poziom";
+ Text[ portuguese_brazilian ] = "Level";
+ Text[ japanese ] = "ÚÍÞÙ(~L)";
+ Text[ korean ] = "¼öÁØ(~L)";
+ Text[ chinese_simplified ] = "¼¶(~L)";
+ Text[ chinese_traditional ] = "¯Å(~L)";
+ Text[ arabic ] = "ÇáãÓÊæì";
+ Text[ turkish ] = "Düzey";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_AUTHTYPE
+ {
+ Text = "~Art";
+ Text[English]= "Type";
+ Text[ english_us ] = "~Type";
+ Text[ portuguese ] = "T~ipo";
+ Text[ russian ] = "Òèï";
+ Text[ greek ] = "Ôýðïò";
+ Text[ dutch ] = "~Type";
+ Text[ french ] = "T~ype";
+ Text[ spanish ] = "~Tipo";
+ Text[ italian ] = "Tipo";
+ Text[ danish ] = "Type";
+ Text[ swedish ] = "Ty~p";
+ 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";
+ };
+ Window WIN_TOKEN
+ {
+ Pos = MAP_APPFONT ( 37, 12 ) ;
+ Size = MAP_APPFONT ( 212, 12 ) ;
+ ImageButton WIN_LEFT_SCROLL
+ {
+ Pos = MAP_APPFONT ( 0, 0 ) ;
+ Size = MAP_APPFONT ( 10, 12 ) ;
+ Symbol = IMAGEBUTTON_ARROW_LEFT;
+ };
+ Window WIN_CTRL_PARENT
+ {
+ Pos = MAP_APPFONT ( 11, 0 ) ;
+ Size = MAP_APPFONT ( 190, 12 ) ;
+ };
+ ImageButton WIN_RIGHT_SCROLL
+ {
+ Pos = MAP_APPFONT ( 202, 0 ) ;
+ Size = MAP_APPFONT ( 10, 12 ) ;
+ Symbol = IMAGEBUTTON_ARROW_RIGHT;
+ };
+ String STR_TOKEN_ENTRY_NO
+ {
+ Text = "E#";
+ Text [English] = "E#";
+ Text[ language_user1 ] = " ";
+ Text[ english_us ] = "E#";
+ Text[ portuguese ] = "E#";
+ Text[ russian ] = "Ý#";
+ Text[ greek ] = "E#";
+ Text[ dutch ] = "I#";
+ Text[ french ] = "E#";
+ Text[ spanish ] = "E#";
+ Text[ italian ] = "E#";
+ Text[ danish ] = "E#";
+ Text[ swedish ] = "E#";
+ Text[ polish ] = "W#";
+ Text[ portuguese_brazilian ] = "E#";
+ Text[ japanese ] = "E#";
+ Text[ korean ] = "E#";
+ Text[ chinese_simplified ] = "E#";
+ Text[ chinese_traditional ] = "E#";
+ Text[ arabic ] = "E#";
+ Text[ turkish ] = "B#";
+ };
+ String STR_TOKEN_ENTRY
+ {
+ Text = "E";
+ Text [English] = "E";
+ Text[ english_us ] = "E";
+ Text[ portuguese ] = "E";
+ Text[ russian ] = "Ý";
+ Text[ greek ] = "E";
+ Text[ dutch ] = "I";
+ Text[ french ] = "E";
+ Text[ spanish ] = "E";
+ Text[ italian ] = "E";
+ Text[ danish ] = "E";
+ Text[ swedish ] = "E";
+ Text[ polish ] = "W";
+ Text[ portuguese_brazilian ] = "E";
+ Text[ japanese ] = "E";
+ Text[ korean ] = "E";
+ Text[ chinese_simplified ] = "E";
+ Text[ chinese_traditional ] = "E";
+ Text[ arabic ] = "E";
+ Text[ turkish ] = "G";
+ };
+ String STR_TOKEN_TAB_STOP
+ {
+ Text = "T";
+ Text [English] = "T";
+ Text[ english_us ] = "T";
+ Text[ portuguese ] = "T";
+ Text[ russian ] = "Ò";
+ Text[ greek ] = "Ó";
+ Text[ dutch ] = "T";
+ Text[ french ] = "T";
+ Text[ spanish ] = "T";
+ Text[ italian ] = "T";
+ Text[ danish ] = "T";
+ Text[ swedish ] = "T";
+ Text[ polish ] = "T";
+ Text[ portuguese_brazilian ] = "T";
+ Text[ japanese ] = "T";
+ Text[ korean ] = "T";
+ Text[ chinese_simplified ] = "ÖƱí·û";
+ Text[ chinese_traditional ] = "¨îªí²Å";
+ Text[ arabic ] = "T";
+ Text[ turkish ] = "T";
+ };
+ String STR_TOKEN_TEXT
+ {
+ Text = "";
+ //unused
+ };
+ String STR_TOKEN_PAGE_NUMS
+ {
+ Text = "#";
+ Text [English] = "#";
+ Text[ english_us ] = "#";
+ Text[ portuguese ] = "#";
+ Text[ russian ] = "#";
+ Text[ greek ] = "#";
+ Text[ dutch ] = "#";
+ Text[ french ] = "#";
+ Text[ spanish ] = "#";
+ Text[ italian ] = "#";
+ Text[ danish ] = "#";
+ Text[ swedish ] = "#";
+ Text[ polish ] = "#";
+ Text[ portuguese_brazilian ] = "#";
+ Text[ japanese ] = "#";
+ Text[ korean ] = "#";
+ Text[ chinese_simplified ] = "#";
+ Text[ chinese_traditional ] = "#";
+ Text[ arabic ] = "#";
+ Text[ turkish ] = "#";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TOKEN_CHAPTER_INFO
+ {
+ Text = "KI";
+ Text [English] = "CI";
+ Text[ english_us ] = "CI";
+ Text[ portuguese ] = "IC";
+ Text[ russian ] = "ÈÃ";
+ Text[ greek ] = "ÐÊ";
+ Text[ dutch ] = "HI";
+ Text[ french ] = "IC";
+ Text[ spanish ] = "CI";
+ Text[ italian ] = "CI";
+ Text[ danish ] = "KI";
+ Text[ swedish ] = "CI";
+ Text[ polish ] = "IR";
+ Text[ portuguese_brazilian ] = "CI";
+ Text[ japanese ] = "CI";
+ Text[ korean ] = "CI";
+ Text[ chinese_simplified ] = "CI";
+ Text[ chinese_traditional ] = "CI";
+ Text[ arabic ] = "CI";
+ Text[ turkish ] = "Bh";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TOKEN_LINK_START
+ {
+ Text = "LS";
+ Text [English] = "LS";
+ Text[ english_us ] = "LS";
+ Text[ portuguese ] = "LS";
+ Text[ russian ] = "ÃÍ";
+ Text[ greek ] = "ÅÕ";
+ Text[ dutch ] = "LS";
+ Text[ french ] = "DH";
+ Text[ spanish ] = "HI";
+ Text[ italian ] = "LS";
+ Text[ danish ] = "HB";
+ Text[ swedish ] = "LS";
+ Text[ polish ] = "HS";
+ Text[ portuguese_brazilian ] = "LS";
+ Text[ japanese ] = "LS";
+ Text[ korean ] = "LS";
+ Text[ chinese_simplified ] = "LS";
+ Text[ chinese_traditional ] = "LS";
+ Text[ arabic ] = "LS";
+ Text[ turkish ] = "Bb";
+ };
+ String STR_TOKEN_LINK_END
+ {
+ Text = "LE";
+ Text [English] = "LE";
+ Text[ english_us ] = "LE";
+ Text[ portuguese ] = "LE";
+ Text[ russian ] = "ÃÊ";
+ Text[ greek ] = "ÔÕ";
+ Text[ dutch ] = "LE";
+ Text[ french ] = "FH";
+ Text[ spanish ] = "HF";
+ Text[ italian ] = "LE";
+ Text[ danish ] = "HS";
+ Text[ swedish ] = "LE";
+ Text[ polish ] = "HK";
+ Text[ portuguese_brazilian ] = "LE";
+ Text[ japanese ] = "LE";
+ Text[ korean ] = "LE";
+ Text[ chinese_simplified ] = "LE";
+ Text[ chinese_traditional ] = "LE";
+ Text[ arabic ] = "LE";
+ Text[ turkish ] = "Bs";
+ };
+ String STR_TOKEN_AUTHORITY
+ {
+ Text = "A";
+ Text [English] = "A";
+ Text[ english_us ] = "A";
+ Text[ portuguese ] = "A";
+ Text[ russian ] = "A";
+ Text[ greek ] = "A";
+ Text[ dutch ] = "A";
+ Text[ french ] = "A";
+ Text[ spanish ] = "A";
+ Text[ italian ] = "A";
+ Text[ danish ] = "A";
+ Text[ swedish ] = "A";
+ Text[ polish ] = "A";
+ Text[ portuguese_brazilian ] = "A";
+ Text[ japanese ] = "A";
+ Text[ korean ] = "A";
+ Text[ chinese_simplified ] = "A";
+ Text[ chinese_traditional ] = "A";
+ Text[ arabic ] = "A";
+ Text[ turkish ] = "A";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TOKEN_HELP_ENTRY_NO
+ {
+ Text = "Kapitelnummer";
+ Text [English] = "Chapter number";
+ Text[ english_us ] = "Chapter number";
+ Text[ portuguese ] = "Número de capítulo";
+ Text[ russian ] = "Íîìåð ãëàâû";
+ Text[ greek ] = "Áñéèìüò êåöáëáßïõ";
+ Text[ dutch ] = "Hoofdstuknummer";
+ Text[ french ] = "Numéro de chapitre";
+ Text[ spanish ] = "Número de capítulo";
+ Text[ italian ] = "Numero capitolo";
+ Text[ danish ] = "Kapitelnummer";
+ Text[ swedish ] = "Kapitelnummer";
+ Text[ polish ] = "Numer rozdzia³u";
+ Text[ portuguese_brazilian ] = "Chapter number";
+ Text[ japanese ] = "͔Ԇ";
+ Text[ korean ] = "Àå ¹øÈ£";
+ Text[ chinese_simplified ] = "Õ½ڱàºÅ";
+ Text[ chinese_traditional ] = "³¹¸`½s¸¹";
+ Text[ arabic ] = "ÑÞã ÇáÝÕá";
+ Text[ turkish ] = "Bölüm numarasý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TOKEN_HELP_ENTRY
+ {
+ Text = "Eintrag";
+ Text [English] = "Entry";
+ Text[ english_us ] = "Entry";
+ Text[ portuguese ] = "Entrada";
+ Text[ russian ] = "Ýëåìåíò";
+ Text[ greek ] = "Êáôá÷þñéóç";
+ Text[ dutch ] = "Item";
+ Text[ french ] = "Entrée";
+ Text[ spanish ] = "Entrada";
+ Text[ italian ] = "Voce";
+ Text[ danish ] = "Element";
+ Text[ swedish ] = "Post";
+ Text[ polish ] = "Wpis";
+ Text[ portuguese_brazilian ] = "Entry";
+ Text[ japanese ] = "€–Ú";
+ Text[ korean ] = "Ç׸ñ";
+ Text[ chinese_simplified ] = "ÌõÄ¿";
+ Text[ chinese_traditional ] = "±ø¥Ø";
+ Text[ arabic ] = "ÇáÅÏÎÇá";
+ Text[ turkish ] = "Giriþ";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TOKEN_HELP_TAB_STOP
+ {
+ Text = "Tabulator";
+ Text [English] = "Tab stop";
+ Text[ english_us ] = "Tab stop";
+ Text[ portuguese ] = "Tabulação";
+ Text[ russian ] = "Òàáóëÿòîð";
+ Text[ greek ] = "ÓôçëïèÝôçò";
+ Text[ dutch ] = "Tabstop";
+ Text[ french ] = "Tabulation";
+ Text[ spanish ] = "Tabulación";
+ Text[ italian ] = "Tabulazione";
+ Text[ danish ] = "Tabulator";
+ Text[ swedish ] = "Tabulator";
+ Text[ polish ] = "Tabulator";
+ Text[ portuguese_brazilian ] = "Tab stop";
+ Text[ japanese ] = "ÀÌÞ";
+ Text[ korean ] = "ÅÇ Á¤Áö";
+ Text[ chinese_simplified ] = "ÖƱí·û";
+ Text[ chinese_traditional ] = "¨îªí²Å";
+ Text[ arabic ] = "ÚáÇãÉ ÌÏæáÉ";
+ Text[ turkish ] = "Sekme";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TOKEN_HELP_TEXT
+ {
+ Text = "Text";
+ Text [English] = "Text";
+ Text[ english_us ] = "Text";
+ Text[ portuguese ] = "Texto";
+ Text[ russian ] = "Òåêñò";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ dutch ] = "Tekst";
+ Text[ french ] = "Texte";
+ Text[ spanish ] = "Texto";
+ Text[ italian ] = "Testo";
+ Text[ danish ] = "Tekst";
+ Text[ swedish ] = "Text";
+ Text[ polish ] = "Text";
+ Text[ portuguese_brazilian ] = "Text";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ chinese_traditional ] = "¤å¦r";
+ Text[ arabic ] = "äÕ";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TOKEN_HELP_PAGE_NUMS
+ {
+ Text = "Seitennummer";
+ Text [English] = "Page number";
+ Text[ english_us ] = "Page number";
+ Text[ portuguese ] = "Página nº";
+ Text[ russian ] = "Íîìåð ñòðàíèöû";
+ Text[ greek ] = "Áñéèìüò óåëßäáò";
+ Text[ dutch ] = "Paginanummer";
+ Text[ french ] = "Numéro de page";
+ Text[ spanish ] = "Número de página";
+ Text[ italian ] = "Numero pagina";
+ Text[ danish ] = "Sidetal";
+ Text[ swedish ] = "Sidnummer";
+ Text[ polish ] = "Numer strony";
+ Text[ portuguese_brazilian ] = "Page number";
+ Text[ japanese ] = "Íß°¼Þ”Ô†";
+ Text[ korean ] = "ÆäÀÌÁö ¹øÈ£";
+ Text[ chinese_simplified ] = "Ò³Âë";
+ Text[ chinese_traditional ] = "­¶½X";
+ Text[ arabic ] = "ÑÞã ÇáÕÝÍÉ";
+ Text[ turkish ] = "Sayfa numarasý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TOKEN_HELP_CHAPTER_INFO
+ {
+ Text = "Kapitelinformation";
+ Text [English] = "Chapter information";
+ Text[ english_us ] = "Chapter info";
+ Text[ portuguese ] = "Informação sobre capítulo";
+ Text[ russian ] = "Èíôîðìàöèÿ ãëàâû";
+ Text[ greek ] = "Ðëçñïöïñßåò êåöáëáßïõ";
+ Text[ dutch ] = "Informatie over hoofdstuk";
+ Text[ french ] = "Information sur le chapitre";
+ Text[ spanish ] = "Información sobre el capítulo";
+ Text[ italian ] = "Informazioni capitolo";
+ Text[ danish ] = "Kapitelinformation";
+ Text[ swedish ] = "Kapitelinformation";
+ Text[ polish ] = "Informacja o rozdziale";
+ Text[ portuguese_brazilian ] = "Chapter information";
+ Text[ japanese ] = "Í‚Ìî•ñ";
+ Text[ korean ] = "Àå Á¤º¸";
+ Text[ chinese_simplified ] = "Õ½ÚÐÅÏ¢";
+ Text[ chinese_traditional ] = "³¹¸`¸ê°T";
+ Text[ arabic ] = "ãÚáæãÇÊ ÇáÝÕá";
+ Text[ turkish ] = "Bölüm bilgileri";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TOKEN_HELP_LINK_START
+ {
+ Text = "Hyperlink Anfang";
+ Text [English] = "Hyperlink start";
+ Text[ english_us ] = "Hyperlink start";
+ Text[ portuguese ] = "Início de hiperligação";
+ Text[ russian ] = "Íà÷àëî ãèïåðññûëêè";
+ Text[ greek ] = "Áñ÷Þ õðåñ-óýíäåóçò";
+ Text[ dutch ] = "Hyperlink start";
+ Text[ french ] = "Début de l'hyperlien";
+ Text[ spanish ] = "Comienzo de hiperenlace";
+ Text[ italian ] = "Inizio hyperlink";
+ Text[ danish ] = "Hyperlink start";
+ Text[ swedish ] = "Hyperlänk start";
+ Text[ polish ] = "Pocz¹tek hiper³¹cza";
+ Text[ portuguese_brazilian ] = "Hyperlink start";
+ Text[ japanese ] = "ʲÊß°ØݸŠJŽn";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ© ½ÃÀÛ";
+ Text[ chinese_simplified ] = "³¬Á´½Ó¿ªÊ¼´¦";
+ Text[ chinese_traditional ] = "¶W³sµ² ¶}©l";
+ Text[ arabic ] = "ÈÏÇíÉ ÇáÇÑÊÈÇØ ÇáÊÔÚÈí";
+ Text[ turkish ] = "Hyperlink baþlangýcý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TOKEN_HELP_LINK_END
+ {
+ Text = "Hyperlink Ende";
+ Text [English] = "Hyperlink End";
+ Text[ english_us ] = "Hyperlink end";
+ Text[ portuguese ] = "Final de hiperligação";
+ Text[ russian ] = "Êîíåö ãèïåðññûëêè";
+ Text[ greek ] = "ÔÝëïò õðåñ-óýíäåóçò";
+ Text[ dutch ] = "Hyperlink einde";
+ Text[ french ] = "Fin de l'hyperlien";
+ Text[ spanish ] = "Final de hiperenlace";
+ Text[ italian ] = "Fine hyperlink";
+ Text[ danish ] = "Hyperlink slut";
+ Text[ swedish ] = "Hyperlänk slut";
+ Text[ polish ] = "Koniec hiper³¹cza";
+ Text[ portuguese_brazilian ] = "Hyperlink End";
+ Text[ japanese ] = "ʲÊß°ØݸI—¹";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ© Á¾·á";
+ Text[ chinese_simplified ] = "³¬Á´½ÓÖÕÖ¹´¦";
+ Text[ chinese_traditional ] = "¶W³sµ² µ²§ô";
+ Text[ arabic ] = "äåÇíÉ ÇáÇÑÊÈÇØ ÇáÊÔÚÈí";
+ Text[ turkish ] = "Hyperlink sonu";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TOKEN_HELP_AUTHORITY
+ {
+ Text = "Literatureintrag: ";
+ Text [English] = "Authority entry: ";
+ Text[ english_us ] = "Bibliography entry: ";
+ Text[ portuguese ] = "Entrada bibliográfica: ";
+ Text[ russian ] = "Ýëåìåíò ñïèñêà ëèòåðàòóðû: ";
+ Text[ greek ] = "ÅéóáãùãÞ âéâëéïãñáößáò: ";
+ Text[ dutch ] = "Literatuuritem: ";
+ Text[ french ] = "Entrée de bibliographie : ";
+ Text[ spanish ] = "Entrada de bibliografía: ";
+ Text[ italian ] = "Voce bibliografica: ";
+ Text[ danish ] = "Litteraturlisteelement: ";
+ Text[ swedish ] = "Litteraturpost: ";
+ Text[ polish ] = "Wpis bibliograficzny: ";
+ Text[ portuguese_brazilian ] = "Authority entry: ";
+ Text[ japanese ] = "ŽQl•¶Œ£€–Ú: ";
+ Text[ korean ] = "Âü°í ¹®Çå Ç׸ñ: ";
+ Text[ chinese_simplified ] = "ÎÄÏ×ÌõÄ¿£º ";
+ Text[ chinese_traditional ] = "°Ñ¦Ò¤åÄm±ø¥Ø ";
+ Text[ arabic ] = "ÅÏÑÇÌ Ýí ÝåÑÓ ÇáãÑÇÌÚ: ";
+ Text[ turkish ] = "Kaynakça giriþi: ";
+ };
+ String STR_CHARSTYLE
+ {
+ Text = "Zeichenvorlage: ";
+ Text [English] = "Character style: ";
+ Text[ english_us ] = "Character Style: ";
+ Text[ portuguese ] = "Estilo de caracteres: ";
+ Text[ russian ] = "Ñòèëü çíàêîâ: ";
+ Text[ greek ] = "Óôõë ÷áñáêôÞñùí: ";
+ Text[ dutch ] = "Tekenopmaakprofiel: ";
+ Text[ french ] = "Style de caractère : ";
+ Text[ spanish ] = "Estilo de carácter: ";
+ Text[ italian ] = "Modello di carattere: ";
+ Text[ danish ] = "Tegntypografi: ";
+ Text[ swedish ] = "Teckenformatmall: ";
+ Text[ polish ] = "Styl znaków: ";
+ Text[ portuguese_brazilian ] = "Character style: ";
+ Text[ japanese ] = "•¶Žš½À²Ù: ";
+ Text[ korean ] = "¹®ÀÚ À¯Çü: ";
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ£º ";
+ Text[ chinese_traditional ] = "¦r«¬¼Ë¦¡¡G ";
+ Text[ arabic ] = "äãØ ÇáÃÍÑÝ: ";
+ Text[ turkish ] = "Karakter þablonu: ";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ PushButton PB_ALL_LEVELS
+ {
+ Pos = MAP_APPFONT ( 199 , 12 ) ;
+ Size = MAP_APPFONT ( 50, 12 ) ;
+ Text = "~Alle Ebenen" ;
+ Text [ ENGLISH ] = "All levels" ;
+ Text[ english_us ] = "~All levels";
+ Text[ portuguese ] = "~Níveis todos";
+ Text[ russian ] = "Âñå óðîâíè";
+ Text[ greek ] = "¼ë~á ôá åðßðåäá";
+ Text[ dutch ] = "~Alle niveaus";
+ Text[ french ] = "~Tous les niveaux";
+ Text[ spanish ] = "Todos los ~niveles";
+ Text[ italian ] = "Tutti i livelli";
+ Text[ danish ] = "Alle niveauer";
+ Text[ swedish ] = "~Alla nivåer";
+ Text[ polish ] = "Wszystkie poziomy";
+ Text[ portuguese_brazilian ] = "All levels";
+ Text[ japanese ] = "‚·‚ׂĂÌÚÍÞÙ";
+ Text[ korean ] = "¸ðµç ¼öÁØ(~A)";
+ Text[ chinese_simplified ] = "ËùÓеȼ¶";
+ Text[ chinese_traditional ] = "©Ò¦³¯Å";
+ Text[ arabic ] = "ßá ÇáãÓÊæíÇÊ";
+ Text[ turkish ] = "Tüm düzeyler";
+ };
+ PushButton PB_ENTRYNO
+ {
+ Pos = MAP_APPFONT ( 37 , 25 ) ;
+ Size = MAP_APPFONT ( 40, 12 ) ;
+ Text = "~Kapitelnr." ;
+ Text [ ENGLISH ] = "Chapter no." ;
+ Text[ english_us ] = "Chapter no.";
+ Text[ portuguese ] = "~Capítulo nº.";
+ Text[ russian ] = "Ãëàâà ¹";
+ Text[ greek ] = "Áñéèìüò êåöáëáßïõ";
+ Text[ dutch ] = "~Hoofdstuknr.";
+ Text[ french ] = "N° de ~chapitre";
+ Text[ spanish ] = "Nú~m. capítulo";
+ Text[ italian ] = "Capitolo no.";
+ Text[ danish ] = "Kapitelnr.";
+ Text[ swedish ] = "~Kapitelnr";
+ Text[ polish ] = "Rozdzia³ nr.";
+ Text[ portuguese_brazilian ] = "Chapter no.";
+ Text[ japanese ] = "͔Ԇ";
+ Text[ korean ] = "Àå ¹øÈ£.";
+ Text[ chinese_simplified ] = "Õ½ڱàºÅ";
+ Text[ chinese_traditional ] = "³¹¸`½s¸¹";
+ Text[ arabic ] = "ÑÞã ÇáÝÕá";
+ Text[ turkish ] = "Bölüm no.";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton PB_ENTRY
+ {
+ Pos = MAP_APPFONT ( 80, 25 ) ;
+ Size = MAP_APPFONT ( 40, 12 ) ;
+ Text = "~Eintragstext" ;
+ Text [ ENGLISH ] = "Entry text" ;
+ Text[ english_us ] = "Entry text";
+ Text[ portuguese ] = "E~ntrada";
+ Text[ russian ] = "Òåêñò ýëåìåíòà";
+ Text[ greek ] = "Êåßìåíï êáôá÷þñéóçò";
+ Text[ dutch ] = "Tekst~item";
+ Text[ french ] = "~Texte";
+ Text[ spanish ] = "Te~xto de entrada";
+ Text[ italian ] = "Testo voce";
+ Text[ danish ] = "Elementtekst";
+ Text[ swedish ] = "~Posttext";
+ Text[ polish ] = "Tekst wpisu";
+ Text[ portuguese_brazilian ] = "Entry text";
+ Text[ japanese ] = "“ü—Í•¶Žš—ñ";
+ Text[ korean ] = "Ç׸ñ ÅؽºÆ®";
+ Text[ chinese_simplified ] = "ÌõÄ¿ÎÄ×Ö";
+ Text[ chinese_traditional ] = "±ø¥Ø¤å";
+ Text[ arabic ] = "äÕ ÇáÅÏÎÇá";
+ Text[ turkish ] = "Giriþ metni";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton PB_CHAPTERINFO
+ {
+ Pos = MAP_APPFONT ( 123 , 25 ) ;
+ Size = MAP_APPFONT ( 40, 12 ) ;
+ Text = "~Kapitelinfo" ;
+ Text [ ENGLISH ] = "Chapter info" ;
+ Text[ english_us ] = "~Chapter info";
+ Text[ portuguese ] = "Inform. sobre ~capítulo";
+ Text[ russian ] = "Èíôîðìàöèÿ ãëàâû";
+ Text[ greek ] = "Ðëçñïöïñßåò êåöáëáßïõ";
+ Text[ dutch ] = "Hoo~fdstukinfo";
+ Text[ french ] = "Info ~chapitre";
+ Text[ spanish ] = "Información ~cap.";
+ Text[ italian ] = "Info capitolo";
+ Text[ danish ] = "Kapitelinfo";
+ Text[ swedish ] = "~Kapitelinfo";
+ Text[ polish ] = "Informacja o rozdziale";
+ Text[ portuguese_brazilian ] = "Chapter info";
+ Text[ japanese ] = "Í‚Ìî•ñ";
+ Text[ korean ] = "Àå Á¤º¸(~C)";
+ Text[ chinese_simplified ] = "Õ½ÚÐÅÏ¢";
+ Text[ chinese_traditional ] = "³¹¸`¸ê°T";
+ Text[ arabic ] = "ãÚáæãÇÊ ÇáÝÕá";
+ Text[ turkish ] = "Bölüm bilgileri";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton PB_PAGENO
+ {
+ Pos = MAP_APPFONT ( 166 , 25 ) ;
+ Size = MAP_APPFONT ( 40, 12 ) ;
+ Text = "~Seitennr." ;
+ Text [ ENGLISH ] = "Page no." ;
+ Text[ english_us ] = "Page no.";
+ Text[ portuguese ] = "~Página nº.";
+ Text[ russian ] = "Ñòðàíèöà ¹";
+ Text[ greek ] = "Áñéèìüò óåëßäáò";
+ Text[ dutch ] = "~Paginanr.";
+ Text[ french ] = "~No. de page";
+ Text[ spanish ] = "Nú~m. página";
+ Text[ italian ] = "Pag. no.";
+ Text[ danish ] = "Sidetal";
+ Text[ swedish ] = "~Sidnr";
+ Text[ polish ] = "Numer str.";
+ Text[ portuguese_brazilian ] = "Page no.";
+ Text[ japanese ] = "Íß°¼Þ”Ô†";
+ Text[ korean ] = "ÆäÀÌÁö ¹øÈ£.";
+ Text[ chinese_simplified ] = "Ò³Âë";
+ Text[ chinese_traditional ] = "­¶­±¸¹½X";
+ Text[ arabic ] = "ÑÞã ÇáÕÝÍÉ";
+ Text[ turkish ] = "Sayfa no.";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton PB_TAB
+ {
+ Pos = MAP_APPFONT ( 209 ,25 ) ;
+ Size = MAP_APPFONT ( 40, 12 ) ;
+ Text = "~Tabulator" ;
+ Text [ ENGLISH ] = "Tab stop" ;
+ Text[ english_us ] = "Tab stop";
+ Text[ portuguese ] = "~Tabulação";
+ Text[ russian ] = "Òàáóëÿòîð";
+ Text[ greek ] = "ÓôçëïèÝôçò";
+ Text[ dutch ] = "~Tabstop";
+ Text[ french ] = "~Tabulation";
+ Text[ spanish ] = "~Tabulación";
+ Text[ italian ] = "~Tabulazione";
+ Text[ danish ] = "Tabulator";
+ Text[ swedish ] = "~Tabulator";
+ Text[ polish ] = "Tabulator";
+ Text[ portuguese_brazilian ] = "Tab stop";
+ Text[ japanese ] = "ÀÌÞ";
+ Text[ korean ] = "ÅÇ Á¤Áö";
+ Text[ chinese_simplified ] = "ÖƱí·û";
+ Text[ chinese_traditional ] = "¨îªí²Å";
+ Text[ arabic ] = "ÚáÇãÉ ÌÏæáÉ";
+ Text[ turkish ] = "Sekme";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton PB_HYPERLINK
+ {
+ Pos = MAP_APPFONT ( 209 , 25 ) ;
+ Size = MAP_APPFONT ( 40, 12 ) ;
+ Text = "H~yperlink" ;
+ Text [ ENGLISH ] = "Hyperlink" ;
+ Text[ english_us ] = "~Hyperlink";
+ Text[ portuguese ] = "~Hiperligação";
+ Text[ russian ] = "Ãèïåðññûëêà";
+ Text[ greek ] = "Õðåñ-óýíäåóç";
+ Text[ dutch ] = "H~yperlink";
+ Text[ french ] = "~Hyperlien";
+ Text[ spanish ] = "~Hiperenlace";
+ Text[ italian ] = "H~yperlink";
+ Text[ danish ] = "H~yperlink";
+ Text[ swedish ] = "H~yperlänk";
+ Text[ polish ] = "Hiper³¹cze";
+ Text[ portuguese_brazilian ] = "Hyperlink";
+ Text[ japanese ] = "ʲÊß°Øݸ(~H)";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ©(~H)";
+ Text[ chinese_simplified ] = "³¬Á´½Ó(~H)";
+ Text[ chinese_traditional ] = "¶W³sµ²(~H)";
+ Text[ arabic ] = "ÇÑÊÈÇØ ÊÔÚÈí";
+ Text[ turkish ] = "Hyperlink";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_AUTHFIELD
+ {
+ Pos = MAP_APPFONT ( 37 , 25 ) ;
+ Size = MAP_APPFONT ( 59, 60 ) ;
+ DropDown = TRUE;
+ Border = TRUE;
+ Sort = TRUE;
+ };
+ PushButton PB_AUTHINSERT
+ {
+ Pos = MAP_APPFONT ( 99 , 25 ) ;
+ Size = MAP_APPFONT ( 39, 12 ) ;
+ Text = "~Einfügen" ;
+ Text [ ENGLISH ] = "Insert" ;
+ Text[ english_us ] = "~Insert";
+ Text[ portuguese ] = "~Inserir";
+ Text[ russian ] = "Âñòàâèòü";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ dutch ] = "~Invoegen";
+ Text[ french ] = "~Insérer";
+ Text[ spanish ] = "In~sertar";
+ Text[ italian ] = "Inserisci";
+ Text[ danish ] = "Indsæt";
+ Text[ swedish ] = "~Infoga";
+ Text[ polish ] = "Wstaw";
+ Text[ portuguese_brazilian ] = "Insert";
+ Text[ japanese ] = "‘}“ü(~I)";
+ Text[ korean ] = "»ðÀÔ(~I)";
+ Text[ chinese_simplified ] = "²åÈë(~I)";
+ Text[ chinese_traditional ] = "´¡¤J(~I)";
+ Text[ arabic ] = "ÅÏÑÇÌ";
+ Text[ turkish ] = "Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton PB_AUTHREMOVE
+ {
+ Pos = MAP_APPFONT ( 142 , 25 ) ;
+ Size = MAP_APPFONT ( 39, 12 ) ;
+ Text = "~Entfernen" ;
+ Text [ ENGLISH ] = "Remove" ;
+ Text[ english_us ] = "~Remove";
+ Text[ portuguese ] = "E~liminar";
+ Text[ russian ] = "Óáðàòü";
+ Text[ greek ] = "ÊáôÜñãçóç";
+ Text[ dutch ] = "~Verwijderen";
+ Text[ french ] = "~Supprimer";
+ Text[ spanish ] = "~Eliminar";
+ Text[ italian ] = "Rimuovi";
+ Text[ danish ] = "Fjern";
+ Text[ swedish ] = "~Ta bort";
+ Text[ polish ] = "Usuñ";
+ Text[ portuguese_brazilian ] = "Remove";
+ Text[ japanese ] = "íœ(~R)";
+ Text[ korean ] = "Á¦°Å(~R)";
+ Text[ chinese_simplified ] = "ɾ³ý(~R)";
+ Text[ chinese_traditional ] = "§R°£(~R)";
+ Text[ arabic ] = "ÅÒÇáÉ";
+ Text[ turkish ] = "Kaldýr";
+ Text[ language_user1 ] = " ";
+ };
+
+
+
+
+ FixedText FT_CHARSTYLE
+ {
+ Pos = MAP_APPFONT ( 37 , 42 ) ;
+ Size = MAP_APPFONT (60 , 10 ) ;
+ Text = "Zeichen~vorlage" ;
+ Text [ ENGLISH ] = "Character style" ;
+ Text[ english_us ] = "Character Style";
+ Text[ portuguese ] = "~Estilos de caracteres";
+ Text[ russian ] = "Ñòèëü çíàêîâ";
+ Text[ greek ] = "Óôõë ÷áñáêôÞñùí";
+ Text[ dutch ] = "Teken~opmaakprofiel";
+ Text[ french ] = "Style de ~caractère";
+ Text[ spanish ] = "Estilo de ~carácter";
+ Text[ italian ] = "Modello di carattere";
+ Text[ danish ] = "Tegntypografi";
+ Text[ swedish ] = "T~eckenformatmall";
+ Text[ polish ] = "Styl znaku";
+ Text[ portuguese_brazilian ] = "Character style";
+ Text[ japanese ] = "•¶Žš½À²Ù";
+ Text[ korean ] = "¹®ÀÚ À¯Çü";
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ";
+ Text[ chinese_traditional ] = "¦r«¬¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÇáÃÍÑÝ";
+ Text[ turkish ] = "Karakter þablonu";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_CHARSTYLE
+ {
+ Pos = MAP_APPFONT ( 100 , 40 ) ;
+ Size = MAP_APPFONT ( 98, 40 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ PushButton PB_EDITSTYLE
+ {
+ Pos = MAP_APPFONT ( 199 , 40 ) ;
+ Size = MAP_APPFONT ( 50, 12 ) ;
+ Text = "~Bearbeiten..." ;
+ Text [ ENGLISH ] = "Edit..." ;
+ Text[ english_us ] = "~Edit...";
+ Text[ portuguese ] = "~Editar...";
+ Text[ russian ] = "Ïðàâêà...";
+ Text[ greek ] = "Åðåîåñãáóßá...";
+ Text[ dutch ] = "~Bewerken...";
+ Text[ french ] = "~Éditer...";
+ Text[ spanish ] = "~Editar...";
+ Text[ italian ] = "~Modifica...";
+ Text[ danish ] = "Rediger...";
+ Text[ swedish ] = "~Redigera...";
+ Text[ polish ] = "Edytuj...";
+ Text[ portuguese_brazilian ] = "Edit...";
+ Text[ japanese ] = "•ÒW(~E)...";
+ Text[ korean ] = "ÆíÁý(~E)...";
+ Text[ chinese_simplified ] = "±à¼­(~E)...";
+ Text[ chinese_traditional ] = "½s¿è(~E)...";
+ Text[ arabic ] = "ÊÍÑíÑ...";
+ Text[ turkish ] = "Düzenle...";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_FILLCHAR
+ {
+ Pos = MAP_APPFONT ( 37 , 57 ) ;
+ Size = MAP_APPFONT (60 , 10 ) ;
+ Text = "~Füllzeichen" ;
+ Text [ ENGLISH ] = "Fill character" ;
+ Text[ english_us ] = "Fill character";
+ Text[ portuguese ] = "Caracter de ~preenchimento";
+ Text[ russian ] = "Çàïîëíèòåëü";
+ Text[ greek ] = "×áñáêôÞñáò ãåìßóìáôïò";
+ Text[ dutch ] = "Opv~ulteken";
+ Text[ french ] = "Caractères de ~remplissage";
+ Text[ spanish ] = "Carácter de ~relleno";
+ Text[ italian ] = "Caratteri riempitivi";
+ Text[ danish ] = "Fyldtegn";
+ Text[ swedish ] = "Ut~fyllnadstecken";
+ Text[ polish ] = "Znak-wype³niacz";
+ Text[ portuguese_brazilian ] = "Fill character";
+ Text[ japanese ] = "Ø°ÀÞ°";
+ Text[ korean ] = "¹®ÀÚ Ã¤¿ì±â";
+ Text[ chinese_simplified ] = "³äÌî×Ö·û";
+ Text[ chinese_traditional ] = "¥R¶ñ¦r«¬";
+ Text[ arabic ] = "ÍÑæÝ ÊÚÈÆÉ";
+ Text[ turkish ] = "Öncü";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox CB_FILLCHAR
+ {
+ Pos = MAP_APPFONT ( 100 , 55 ) ;
+ Size = MAP_APPFONT ( 20, 40 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_CHAPTERENTRY
+ {
+ Pos = MAP_APPFONT ( 37 , 57 ) ;
+ Size = MAP_APPFONT ( 60, 10 ) ;
+ Text = "Ka~piteleintrag" ;
+ Text [ ENGLISH ] = "Chapter entry" ;
+ Text[ english_us ] = "Chapter entry";
+ Text[ portuguese ] = "Entrada de ~capítulo";
+ Text[ russian ] = "Ýëåìåíò ãëàâû";
+ Text[ greek ] = "ÅããñáöÞ êåöáëáßïõ";
+ Text[ dutch ] = "Hoofd~stukitem";
+ Text[ french ] = "Entrée de ~chapitre";
+ Text[ spanish ] = "E~ntrada de capítulo";
+ Text[ italian ] = "Voce capitolo";
+ Text[ danish ] = "Kapitelelement";
+ Text[ swedish ] = "Ka~pitelpost";
+ Text[ polish ] = "Wpis do rozdzia³u";
+ Text[ portuguese_brazilian ] = "Chapter entry";
+ Text[ japanese ] = "ÍŒ©o‚µ";
+ Text[ korean ] = "Àå Ç׸ñ";
+ Text[ chinese_simplified ] = "Õ½ÚÌõÄ¿";
+ Text[ chinese_traditional ] = "³¹¸`±ø¥Ø";
+ Text[ arabic ] = "ÅÏÎÇá Ýí ÝÕá";
+ Text[ turkish ] = "Bölüm giriþi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_CHAPTERENTRY
+ {
+ Pos = MAP_APPFONT ( 100 , 55 ) ;
+ Size = MAP_APPFONT ( 98, 40 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Nur Nummernkreis" ; > ;
+ < "Nur Beschreibung" ; > ;
+ < "Nummernkreis und Beschreibung" ; > ;
+ };
+ StringList [English]=
+ {
+ < "Sequence only" ; > ;
+ < "Description only" ; > ;
+ < "Sequence and description" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Number range only" ; > ;
+ < "Description only" ; > ;
+ < "Number range and description" ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Só sequência" ; > ;
+ < "Só descrição" ; > ;
+ < "Sequência e descrição" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Òîëüêî ïîðÿäêîâûé íîìåð" ; > ;
+ < "Òîëüêî îïèñàíèå" ; > ;
+ < "Ïîðÿäêîâûé íîìåð è îïèñàíèå" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "Ìüíï êýêëïò áñéèìþí" ; > ;
+ < "Ìüíï ðåñéãñáöÞ" ; > ;
+ < "Ìüíï ðåñéãñáöÞ" ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Alleen nummerreeks" ; > ;
+ < "Alleen beschrijving" ; > ;
+ < "Nummerreeks en beschrijving" ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "Uniquement la séquence" ; > ;
+ < "Uniquement la description" ; > ;
+ < "Séquence et description" ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Solo secuencia" ; > ;
+ < "Solo descripción" ; > ;
+ < "Secuencia y descripción" ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "Solo sequenza" ; > ;
+ < "Solo descrizione" ; > ;
+ < "Sequenza e descrizione" ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "Kun sekvensnummerering" ; > ;
+ < "Kun beskrivelse" ; > ;
+ < "Sekvensnummerering og beskrivelse" ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Bara nummersekvens" ; > ;
+ < "Bara beskrivning" ; > ;
+ < "Nummersekvens och beskrivning" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Tylko sekwencja" ; > ;
+ < "Tylko opis" ; > ;
+ < "Sekwencja i opis" ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Nummernkreis und Beschreibung" ; > ;
+ < "Nur Nummernkreis" ; > ;
+ < "Nur Beschreibung" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "˜A”Ô‚Ì‚Ý" ; > ;
+ < "×ÍÞÙ‚Ì‚Ý" ; > ;
+ < "˜A”Ô‚Æ×ÍÞÙ" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¼ýÀÚ ¿µ¿ª¸¸" ; > ;
+ < "¼³¸í¸¸" ; > ;
+ < "¼ýÀÚ ¿µ¿ª°ú ¼³¸í" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "Ö»ÊÇÅÅÁбàºÅ" ; > ;
+ < "Ö»ÊÇ˵Ã÷" ; > ;
+ < "ÅÅÁбàºÅºÍ˵Ã÷" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¶È±Ä¥Î¸¹½X" ; > ;
+ < "¶È±Ä¥Î´y­z" ; > ;
+ < "¸¹½X©M´y­z" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÊÓáÓá ÝÞØ" ; > ;
+ < "æÕÝ ÝÞØ" ; > ;
+ < "ÊÓáÓá ææÕÝ" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Yalnýzca numara aralýðý" ; > ;
+ < "Yalnýzca açýklama" ; > ;
+ < "Numara aralýðý ve açýklama" ; > ;
+ };
+ };
+/* FixedText FT_SORTING
+ {
+ Pos = MAP_APPFONT ( 43 , 85 ) ;
+ Size = MAP_APPFONT ( 60, 10 ) ;
+ Text = "Sortierung" ;
+ Text [ ENGLISH ] = "Sorting" ;
+ };
+ ListBox LB_SORTING
+ {
+ Pos = MAP_APPFONT ( 100 , 85 ) ;
+ Size = MAP_APPFONT ( 100, 40 ) ;
+ DropDown = TRUE;
+ TabStop = TRUE;
+ StringList =
+ {
+ < "Alphabetisch" ; > ;
+ < "Fortlaufend" ; > ;
+ };
+ StringList [English]=
+ {
+ < "Alphabetical" ; > ;
+ < "Consecutively" ; > ;
+ };
+ };
+*/ FixedText FT_TABPOS
+ {
+ Pos = MAP_APPFONT ( 37 , 70 ) ;
+ Size = MAP_APPFONT ( 60, 10 ) ;
+ Text = "Tab~ulatorposition" ;
+ Text [ ENGLISH ] = "Tab stop position" ;
+ Text[ english_us ] = "Tab stop position";
+ Text[ portuguese ] = "~Posição da tabulação";
+ Text[ russian ] = "Ïîçèöèÿ òàáóëÿòîðà";
+ Text[ greek ] = "ÈÝóç óôçëïèÝôç";
+ Text[ dutch ] = "T~abstoppositie";
+ Text[ french ] = "Position de ~tabulation";
+ Text[ spanish ] = "Po~sición de tabulación";
+ Text[ italian ] = "Posizione tab~ulazione";
+ Text[ danish ] = "Tabulatorposition";
+ Text[ swedish ] = "Tab~ulatorposition";
+ Text[ polish ] = "Pozycja tabulatora";
+ Text[ portuguese_brazilian ] = "Tab stop position";
+ Text[ japanese ] = "ÀÌވʒu";
+ Text[ korean ] = "ÅÇ À§Ä¡";
+ Text[ chinese_simplified ] = "ÖƱí·ûλÖÃ";
+ Text[ chinese_traditional ] = "¨îªí²Å¦ì¸m";
+ Text[ arabic ] = "ãæÖÚ ÚáÇãÉ ÇáÌÏæáÉ";
+ Text[ turkish ] = "Sekme konumu";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField MF_TABPOS
+ {
+ Pos = MAP_APPFONT ( 100 , 70 ) ;
+ Size = MAP_APPFONT ( 40, 10 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 1999 ;
+ DecimalDigits = 2 ;
+ Value = 0 ;
+ Unit = FUNIT_CM ;
+ First = 0 ;
+ Last = 1999 ;
+ SpinSize = 5 ;
+ };
+ CheckBox CB_AUTORIGHT
+ {
+ Pos = MAP_APPFONT ( 143 , 70 ) ;
+ Size = MAP_APPFONT ( 100, 10 ) ;
+ Text = "Am ~rechten Rand" ;
+ Text [ ENGLISH ] = "Right border" ;
+ Text[ english_us ] = "T~o right margin";
+ Text[ portuguese ] = "Na margem ~direita";
+ Text[ russian ] = "Â ïðàâîì ïîëå";
+ Text[ greek ] = "Óôï äåîß ðåñéèþñéï";
+ Text[ dutch ] = "Aan rechter ~marge";
+ Text[ french ] = "Bord ~droit";
+ Text[ spanish ] = "Al bor~de derecho";
+ Text[ italian ] = "Bordo dest~ro";
+ Text[ danish ] = "Ved højre margen";
+ Text[ swedish ] = "Vid högermarginalen";
+ Text[ polish ] = "Z prawej krawêdzi";
+ Text[ portuguese_brazilian ] = "Right border";
+ Text[ japanese ] = "‰E—]”’";
+ Text[ korean ] = "¿À¸¥ÂÊ ¿©¹é(~O)";
+ Text[ chinese_simplified ] = "Óұ߿հ×";
+ Text[ chinese_traditional ] = "¦b¥kÃäªÅ¥Õ¤W";
+ Text[ arabic ] = "Úáì ÇáåÇãÔ ÇáÃíãä";
+ Text[ turkish ] = "Sað kenar";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_ENTRY
+ {
+ Pos = MAP_APPFONT ( 34 , 3 ) ;
+ Size = MAP_APPFONT ( 220, 80 ) ;
+ Text = "Aufbau" ;
+ Text [ ENGLISH ] = "Structure" ;
+ Text[ english_us ] = "Structure";
+ Text[ portuguese ] = "Estrutura";
+ Text[ russian ] = "Ñòðîåíèå";
+ Text[ greek ] = "ÄïìÞ";
+ Text[ dutch ] = "Structuur";
+ Text[ french ] = "Structure";
+ Text[ spanish ] = "Estructura";
+ Text[ italian ] = "Struttura";
+ Text[ danish ] = "Struktur";
+ Text[ swedish ] = "Struktur";
+ Text[ polish ] = "Struktura";
+ Text[ portuguese_brazilian ] = "Structure";
+ Text[ japanese ] = "\\¬";
+ Text[ korean ] = "±¸Á¶";
+ Text[ chinese_simplified ] = "¹¹³É";
+ Text[ chinese_traditional ] = "µ²ÌÛ";
+ Text[ arabic ] = "ÇáÈäíÉ";
+ Text[ turkish ] = "Yapý";
+ Text[ language_user1 ] = " ";
+ };
+/* CheckBox CB_RECALCTAB
+ {
+ Pos = MAP_APPFONT ( 37 , 98 ) ;
+ Size = MAP_APPFONT ( 200, 10 ) ;
+ Text = "Tabulatorposition immer neu berechnen" ;
+ Text [ ENGLISH ] = "Recalculate tab stop position" ;
+ };
+*/ CheckBox CB_RELTOSTYLE
+ {
+ Pos = MAP_APPFONT ( 37 , 96 ) ;
+ Size = MAP_APPFONT ( 200, 10 ) ;
+ Text = "P~osition der Tabulatoren relativ zum Einzug aus der Absatzvorlage" ;
+ Text [ ENGLISH ] = "Position of tab stops relativ to the paragraph style indent" ;
+ Text[ english_us ] = "Tab position relati~ve to Paragraph Style indent";
+ Text[ portuguese ] = "~Posição relativa ao avanço do estilo de parágrafo";
+ Text[ russian ] = "Ïîçèöèÿ òàáóëÿòîðîâ îòíîñ. îòñòóïà èç ñòèëÿ àáçàöà";
+ Text[ greek ] = "ÈÝóç óôçëïèåôþí áíÜëïãá ìå ôçí åóï÷Þ ôïõ ðñïôýðïõ ôçò ðáñáãñÜöïõ";
+ Text[ dutch ] = "~Positie in verhouding tot de inspringing uit het alinea-opmaakprofiel.";
+ Text[ french ] = "P~osition en fonction du style de paragraphe (retrait)";
+ Text[ spanish ] = "Posición relati~va a sangría de estilo de párrafo";
+ Text[ italian ] = "P~osizione relativa al rientro del modello di paragrafo";
+ Text[ danish ] = "Tabulatorernes position relativ til indrykningen fra afsnitstypografien";
+ Text[ swedish ] = "Tabulatorernas p~osition relativ till indraget från styckeformatmallen";
+ Text[ polish ] = "Pozycja relatywna do wciêcia ze stylu akapitu";
+ Text[ portuguese_brazilian ] = "Position relativ to the paragraph style indent";
+ Text[ japanese ] = "ÀÌވʒu‚Í’i—Ž½À²Ù‚̲ÝÃÞÝÄ‚©‚ç";
+ Text[ korean ] = "´Ü¶ôÀÇ Ã¹¹®Àå ¶ç¾î¾²±â¿¡ °ü·ÃµÈ ÅÇ À§Ä¡";
+ Text[ chinese_simplified ] = "ÖƱí·ûλÖúͶÎÂäÑùʽµÄËõ½ø±£³ÖÏà¶ÔλÖÃ";
+ Text[ chinese_traditional ] = "©M¬q¸¨¼Ë¦¡ªºÁY±Æ«O«ù¬Û¹ï¦ì¸m";
+ Text[ arabic ] = "ãæÖÚ ÚáÇãÇÊ ÇáÌÏæáÉ äÓÈÉ áÅÒÇÍÉ äãØ ÇáÝÞÑÉ";
+ Text[ turkish ] = "Paragraf biçimi girintisine göre orantýlý sekme konumu";
+ Text[ language_user1 ] = " ";
+ };
+/* CheckBox CB_NUMSTYLEFROMPDESC
+ {
+ Pos = MAP_APPFONT ( 37 , 119 ) ;
+ Size = MAP_APPFONT ( 200, 10 ) ;
+ Text = "Zahlenformat aus der Seitenvorlage" ;
+ Text [ ENGLISH ] = "Numbering type from page style" ;
+ };
+*/
+ FixedText FT_MAIN_ENTRY_STYLE
+ {
+ Pos = MAP_APPFONT ( 37 , 95 ) ;
+ Size = MAP_APPFONT ( 105, 10 ) ;
+ Text = "Zeichenvorla~ge für Haupteinträge" ;
+ Text [ ENGLISH ] = "Character style of main entries" ;
+ Text[ english_us ] = "Character Style for main entries";
+ Text[ portuguese ] = "Estilo de ~caracteres para entradas principais";
+ Text[ russian ] = "Ñòèëü çíàêîâ äëÿ ãëàâíûõ ýëåìåíòîâ";
+ Text[ greek ] = "Óôõë ÷áñáêôÞñùí ôùí êõñßùí åããñáöþí";
+ Text[ dutch ] = "~Tekenopmaakprofiel voor hoofditems";
+ Text[ french ] = "Style de ~caractère des entrées principales";
+ Text[ spanish ] = "~Estilo de caracteres para entradas principales";
+ Text[ italian ] = "Modello di carattere per voci principali";
+ Text[ danish ] = "Tegntypografi til hovedelementer";
+ Text[ swedish ] = "Te~ckenformatmall för huvudposter";
+ Text[ polish ] = "Styl znaku wpisów g³ównych";
+ Text[ portuguese_brazilian ] = "Character style of main entries";
+ Text[ japanese ] = "Žå“ü—Í—p•¶Žš½À²Ù";
+ Text[ korean ] = "ÁÖ Ç׸ñ¿¡´ëÇÑ ¹®ÀÚ À¯Çü";
+ Text[ chinese_simplified ] = "Ö÷ÌõÄ¿µÄ×Ö·ûÑùʽ";
+ Text[ chinese_traditional ] = "¥D¶µ¥Øªº¦r«¬¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÇáÃÍÑÝ ááÅÏÎÇáÇÊ ÇáÃÓÇÓíÉ";
+ Text[ turkish ] = "Ana giriþler için karakter þablonu";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_MAIN_ENTRY_STYLE
+ {
+ Pos = MAP_APPFONT ( 144 , 93 ) ;
+ Size = MAP_APPFONT ( 100, 40 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+
+ CheckBox CB_ALPHADELIM
+ {
+ Pos = MAP_APPFONT ( 37 , 108 ) ;
+ Size = MAP_APPFONT ( 105, 10 ) ;
+ Text = "Alphabet~isches Trennzeichen" ;
+ Text [ ENGLISH ] = "Alphabetical delimiter" ;
+ Text[ english_us ] = "Alphabetical delimiter";
+ Text[ portuguese ] = "Separador alfa~bético";
+ Text[ russian ] = "Àëôàâèòíûé ðàçäåëèòåëü";
+ Text[ greek ] = "Áëöáâçôéêü åíùôéêü";
+ Text[ dutch ] = "~Alphabetisch scheidingsteken";
+ Text[ french ] = "Séparateur ~alphabétique";
+ Text[ spanish ] = "Separador alfa~bético";
+ Text[ italian ] = "Separatori alfabetici";
+ Text[ danish ] = "Alfabetisk skilletegn";
+ Text[ swedish ] = "Alfabetiskt skiljetecken";
+ Text[ polish ] = "Alfabetyczny separator";
+ Text[ portuguese_brazilian ] = "Alphabetical delimiter";
+ Text[ japanese ] = "±Ù̧ÍޯĂ̋æØ‚è‹L†";
+ Text[ korean ] = "¾ËÆĺª¼øÀÇ ±¸ºÐ ±âÈ£";
+ Text[ chinese_simplified ] = "×Öĸ·Ö¸ô·û";
+ Text[ chinese_traditional ] = "¦r¥À¤À¹j²Å";
+ Text[ arabic ] = "ÝÇÕá ÃÈÌÏí";
+ Text[ turkish ] = "Alfabetik ayýrma iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_COMMASEPARATED
+ {
+ Pos = MAP_APPFONT ( 144 , 108 ) ;
+ Size = MAP_APPFONT ( 105, 10 ) ;
+ Text = "S~chlüssel kommasepariert" ;
+ Text [ ENGLISH ] = "Comma separated keys" ;
+ Text[ english_us ] = "Key separated by commas";
+ Text[ portuguese ] = "~Chaves separadas por vírgulas";
+ Text[ russian ] = "Êëþ÷, ðàçäåëåííûé çàïÿòîé";
+ Text[ greek ] = "ÊëåéäéÜ äéá÷ùñéæüìåíá ìå êüììáôá";
+ Text[ dutch ] = "~Sleutel afgescheiden door komma";
+ Text[ french ] = "~Clés séparées par une virgule";
+ Text[ spanish ] = "Cla~ves separadas por comas";
+ Text[ italian ] = "~Chiavi separate da virgola";
+ Text[ danish ] = "Kommasepareret nøgle";
+ Text[ swedish ] = "Nyckel, kommaseparerad";
+ Text[ polish ] = "Klucz odseparowany przecinkiem";
+ Text[ portuguese_brazilian ] = "Comma separated keys";
+ Text[ japanese ] = "ºÝÏ‚Å·°‚𗣂·";
+ Text[ korean ] = "Äĸ¶¿¡ÀÇÇØ ±¸ºÐµÈ Å°";
+ Text[ chinese_simplified ] = "¼üÂëÓöººÅ·Ö¿ª";
+ Text[ chinese_traditional ] = "Áä½X¥Î³r¸¹¤À¶}";
+ Text[ arabic ] = "ãÝÇÊíÍ ÈíäåÇ ÝÇÕáÉ";
+ Text[ turkish ] = "Virgüllerle ayrýlmýþ anahtar";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_FORMAT
+ {
+ Pos = MAP_APPFONT ( 34 , 84 ) ;
+ Size = MAP_APPFONT ( 220, 49 ) ;
+ Text = "Formatierung" ;
+ Text [ ENGLISH ] = "Format" ;
+ Text[ english_us ] = "Format";
+ Text[ portuguese ] = "Formatação";
+ Text[ russian ] = "Ôîðìàò";
+ Text[ greek ] = "ÌïñöïðïéçìÝíï ðåäßï";
+ Text[ dutch ] = "Opmaak";
+ Text[ french ] = "Formatage";
+ Text[ spanish ] = "Formato";
+ Text[ italian ] = "Formattazione";
+ Text[ danish ] = "Formatering";
+ Text[ swedish ] = "Formatering";
+ Text[ polish ] = "Formatowanie";
+ Text[ portuguese_brazilian ] = "Format";
+ Text[ japanese ] = "‘Ž®";
+ Text[ korean ] = "¼­½Ä";
+ Text[ chinese_simplified ] = "¸ñʽ»¯";
+ Text[ chinese_traditional ] = "®æ¦¡¤Æ";
+ Text[ arabic ] = "ÇáÊäÓíÞ";
+ Text[ turkish ] = "Formatlama";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_DOCPOS
+ {
+ Pos = MAP_APPFONT ( 40 , 97) ;
+ Size = MAP_APPFONT ( 110, 10 ) ;
+ Text = "Dokument~position " ;
+ Text [ ENGLISH ] = "document position" ;
+ Text[ english_us ] = "Document ~position ";
+ Text[ portuguese ] = "~Posição do documento ";
+ Text[ russian ] = "Ïîëîæåíèå äîêóìåíòà ";
+ Text[ greek ] = "ÈÝóç åããñÜöïõ ";
+ Text[ dutch ] = "Document~positie ";
+ Text[ french ] = "~Emplacement ds le document ";
+ Text[ spanish ] = "P~osición del documento ";
+ Text[ italian ] = "~Posizione del documento ";
+ Text[ danish ] = "Dokumentets placering ";
+ Text[ swedish ] = "Dokument~position ";
+ Text[ polish ] = "Pozycja dokumentu ";
+ Text[ portuguese_brazilian ] = "by document position";
+ Text[ japanese ] = "ÄÞ·­ÒÝĂ̈ʒu(~P)";
+ Text[ korean ] = "¹®¼­ À§Ä¡ (~P)";
+ Text[ chinese_simplified ] = "ÎĵµÎ»Öà (~P)";
+ Text[ chinese_traditional ] = "¤å¥ó¦ì¸m (~P)";
+ Text[ arabic ] = "ãæÖÚ ÇáãÓÊäÏ ";
+ Text[ turkish ] = "Belge konumu ";
+ };
+ RadioButton RB_SORTCONTENT
+ {
+ Pos = MAP_APPFONT ( 40 , 110 ) ;
+ Size = MAP_APPFONT ( 110, 10 ) ;
+ Text = "~Inhalt" ;
+ Text [ ENGLISH ] = "content" ;
+ Text[ english_us ] = "~Content";
+ Text[ portuguese ] = "~Conteúdo";
+ Text[ russian ] = "Ñîäåðæèìîå";
+ Text[ greek ] = "Ðåñéå÷üìåíá";
+ Text[ dutch ] = "~Inhoud";
+ Text[ french ] = "le ~contenu";
+ Text[ spanish ] = "C~ontenido";
+ Text[ italian ] = "Contenuto";
+ Text[ danish ] = "Indhold";
+ Text[ swedish ] = "I~nnehåll";
+ Text[ polish ] = "ZawartoϾ";
+ Text[ portuguese_brazilian ] = "Sort by content";
+ Text[ japanese ] = "“à—e(~C)";
+ Text[ korean ] = "³»¿ë(~C)";
+ Text[ chinese_simplified ] = "ÄÚÈÝ(~C)";
+ Text[ chinese_traditional ] = "¤º®e(~C)";
+ Text[ arabic ] = "ÇáãÍÊæíÇÊ";
+ Text[ turkish ] = "Ýçerik";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_SORTING
+ {
+ Pos = MAP_APPFONT ( 34 , 84 ) ;
+ Size = MAP_APPFONT ( 117, 49 ) ;
+ Text = "Sortierung nach" ;
+ Text [ ENGLISH ] = "Sort by" ;
+ Text[ english_us ] = "Sort by";
+ Text[ portuguese ] = "Ordenar por ...";
+ Text[ russian ] = "Ñîðòèðîâàòü ïî";
+ Text[ greek ] = "Ôáîéíüìçóç êáôÜ ...";
+ Text[ dutch ] = "Sorteren op";
+ Text[ french ] = "Trier en fonction de";
+ Text[ spanish ] = "Ordenar según";
+ Text[ italian ] = "Ordine per";
+ Text[ danish ] = "Sorter efter";
+ Text[ swedish ] = "Sortering efter ...";
+ Text[ polish ] = "Sortuj wed³ug";
+ Text[ portuguese_brazilian ] = "Sort by ...";
+ Text[ japanese ] = "•À‚בւ¦‚̇˜";
+ Text[ korean ] = "¿¡ÀÇÇÑ Á¤·Ä ...";
+ Text[ chinese_simplified ] = "ÅÅÐò°´ÕÕ ...";
+ Text[ chinese_traditional ] = "½s±Æ«ö·Ó...";
+ Text[ arabic ] = "ÇáÝÑÒ ÍÓÈ";
+ Text[ turkish ] = "Sýralama ölçütü:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_FIRSTKEY
+ {
+ Pos = MAP_APPFONT ( 160 , 94 ) ;
+ Size = MAP_APPFONT ( 10, 8 ) ;
+ Text = "~1" ;
+ };
+ ListBox LB_FIRSTKEY
+ {
+ Pos = MAP_APPFONT ( 171 , 93 ) ;
+ Size = MAP_APPFONT ( 50, 50 ) ;
+ Border = TRUE;
+ DropDown = TRUE;
+ };
+ ImageRadioButton RB_SORTUP1
+ {
+ Pos = MAP_APPFONT ( 223 , 93 ) ;
+ Size = MAP_APPFONT ( 12, 12 ) ;
+ RadioButtonImage =
+ Image
+ {
+ ImageBitmap = Bitmap{File = "sc10712.bmp"; };
+ };
+ Check = TRUE;
+ QuickHelpText = "Aufsteigend";
+ QuickHelpText[English] = "Ascending";
+ QuickHelpText[ english_us ] = "Ascending";
+ QuickHelpText[ portuguese ] = "Ascending";
+ QuickHelpText[ russian ] = "Ïî âîçðàñòàíèþ";
+ QuickHelpText[ greek ] = "Áýîïõóá";
+ QuickHelpText[ dutch ] = "Aplopend";
+ QuickHelpText[ french ] = "Croissant";
+ QuickHelpText[ spanish ] = "Ascending";
+ QuickHelpText[ italian ] = "Crescente";
+ QuickHelpText[ danish ] = "Stigende";
+ QuickHelpText[ swedish ] = "Stigande";
+ QuickHelpText[ polish ] = "Rosn¹co";
+ QuickHelpText[ portuguese_brazilian ] = "Ascending";
+ QuickHelpText[ japanese ] = "¸‡";
+ QuickHelpText[ korean ] = "Ascending";
+ QuickHelpText[ chinese_simplified ] = "Ascending";
+ QuickHelpText[ chinese_traditional ] = "¦V¤W";
+ QuickHelpText[ arabic ] = "ÊÕÇÚÏí";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ ImageRadioButton RB_SORTDOWN1
+ {
+ Pos = MAP_APPFONT ( 237 , 93 ) ;
+ Size = MAP_APPFONT ( 12, 12 ) ;
+ RadioButtonImage =
+ Image
+ {
+ ImageBitmap = Bitmap{File = "sc10713.bmp"; };
+ };
+ QuickHelpText = "Absteigend";
+ QuickHelpText[English] = "Descending";
+ QuickHelpText[ english_us ] = "Descending";
+ QuickHelpText[ portuguese ] = "Descending";
+ QuickHelpText[ russian ] = "Ïî óáûâàíèþ";
+ QuickHelpText[ greek ] = "Öèßíïõóá";
+ QuickHelpText[ dutch ] = "Aflopend";
+ QuickHelpText[ french ] = "Décroissant";
+ QuickHelpText[ spanish ] = "Descending";
+ QuickHelpText[ italian ] = "Decrescente";
+ QuickHelpText[ danish ] = "Faldende";
+ QuickHelpText[ swedish ] = "Fallande";
+ QuickHelpText[ polish ] = "Malej¹co";
+ QuickHelpText[ portuguese_brazilian ] = "Descending";
+ QuickHelpText[ japanese ] = "~‡";
+ QuickHelpText[ korean ] = "Descending";
+ QuickHelpText[ chinese_simplified ] = "Descending";
+ QuickHelpText[ chinese_traditional ] = "¦V¤U";
+ QuickHelpText[ arabic ] = "ÊäÇÒáí";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ ImageRadioButton RB_SORTUP2
+ {
+ Pos = MAP_APPFONT ( 223 , 106 ) ;
+ Size = MAP_APPFONT ( 12, 12 ) ;
+ RadioButtonImage =
+ Image
+ {
+ ImageBitmap = Bitmap{File = "sc10712.bmp"; };
+ };
+ Check = TRUE;
+ QuickHelpText = "Aufsteigend";
+ QuickHelpText[English] = "Ascending";
+ QuickHelpText[ english_us ] = "Ascending";
+ QuickHelpText[ portuguese ] = "Ascending";
+ QuickHelpText[ russian ] = "Ïî âîçðàñòàíèþ";
+ QuickHelpText[ greek ] = "Áýîïõóá";
+ QuickHelpText[ dutch ] = "Oplopend";
+ QuickHelpText[ french ] = "Croissant";
+ QuickHelpText[ spanish ] = "Ascending";
+ QuickHelpText[ italian ] = "Crescente";
+ QuickHelpText[ danish ] = "Stigende";
+ QuickHelpText[ swedish ] = "Stigande";
+ QuickHelpText[ polish ] = "Rosn¹co";
+ QuickHelpText[ portuguese_brazilian ] = "Ascending";
+ QuickHelpText[ japanese ] = "¸‡";
+ QuickHelpText[ korean ] = "Ascending";
+ QuickHelpText[ chinese_simplified ] = "Ascending";
+ QuickHelpText[ chinese_traditional ] = "¦V¤W";
+ QuickHelpText[ arabic ] = "ÊÕÇÚÏí";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ ImageRadioButton RB_SORTDOWN2
+ {
+ Pos = MAP_APPFONT ( 237 , 106 ) ;
+ Size = MAP_APPFONT ( 12, 12 ) ;
+ RadioButtonImage =
+ Image
+ {
+ ImageBitmap = Bitmap{File = "sc10713.bmp"; };
+ };
+ QuickHelpText = "Absteigend";
+ QuickHelpText[English] = "Descending";
+ QuickHelpText[ english_us ] = "Descending";
+ QuickHelpText[ portuguese ] = "Descending";
+ QuickHelpText[ russian ] = "Ïî óáûâàíèþ";
+ QuickHelpText[ greek ] = "Öèßíïõóá";
+ QuickHelpText[ dutch ] = "Aflopend";
+ QuickHelpText[ french ] = "Décroissant";
+ QuickHelpText[ spanish ] = "Descending";
+ QuickHelpText[ italian ] = "Decrescente";
+ QuickHelpText[ danish ] = "Faldende";
+ QuickHelpText[ swedish ] = "Fallande";
+ QuickHelpText[ polish ] = "Malej¹co";
+ QuickHelpText[ portuguese_brazilian ] = "Descending";
+ QuickHelpText[ japanese ] = "~‡";
+ QuickHelpText[ korean ] = "Descending";
+ QuickHelpText[ chinese_simplified ] = "Descending";
+ QuickHelpText[ chinese_traditional ] = "¦V¤U";
+ QuickHelpText[ arabic ] = "ÊäÇÒáí";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ ImageRadioButton RB_SORTUP3
+ {
+ Pos = MAP_APPFONT ( 223 , 119 ) ;
+ Size = MAP_APPFONT ( 12, 12 ) ;
+ RadioButtonImage =
+ Image
+ {
+ ImageBitmap = Bitmap{File = "sc10712.bmp"; };
+ };
+ Check = TRUE;
+ QuickHelpText = "Aufsteigend";
+ QuickHelpText[English] = "Ascending";
+ QuickHelpText[ english_us ] = "Ascending";
+ QuickHelpText[ portuguese ] = "Ascending";
+ QuickHelpText[ russian ] = "Ïî âîçðàñòàíèþ";
+ QuickHelpText[ greek ] = "Áýîïõóá";
+ QuickHelpText[ dutch ] = "Oplopend";
+ QuickHelpText[ french ] = "Croissant";
+ QuickHelpText[ spanish ] = "Ascending";
+ QuickHelpText[ italian ] = "Crescente";
+ QuickHelpText[ danish ] = "Stigende";
+ QuickHelpText[ swedish ] = "Stigande";
+ QuickHelpText[ polish ] = "Rosn¹co";
+ QuickHelpText[ portuguese_brazilian ] = "Ascending";
+ QuickHelpText[ japanese ] = "¸‡";
+ QuickHelpText[ korean ] = "Ascending";
+ QuickHelpText[ chinese_simplified ] = "Ascending";
+ QuickHelpText[ chinese_traditional ] = "¦V¤W";
+ QuickHelpText[ arabic ] = "ÊÕÇÚÏí";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ ImageRadioButton RB_SORTDOWN3
+ {
+ Pos = MAP_APPFONT ( 237 ,119 ) ;
+ Size = MAP_APPFONT ( 12, 12 ) ;
+ RadioButtonImage =
+ Image
+ {
+ ImageBitmap = Bitmap{File = "sc10713.bmp"; };
+ };
+ QuickHelpText = "Absteigend";
+ QuickHelpText[English] = "Descending";
+ QuickHelpText[ english_us ] = "Descending";
+ QuickHelpText[ portuguese ] = "Descending";
+ QuickHelpText[ russian ] = "Ïî óáûâàíèþ";
+ QuickHelpText[ greek ] = "Öèßíïõóá";
+ QuickHelpText[ dutch ] = "Aflopend";
+ QuickHelpText[ french ] = "Décroissant";
+ QuickHelpText[ spanish ] = "Descending";
+ QuickHelpText[ italian ] = "Decrescente";
+ QuickHelpText[ danish ] = "Faldende";
+ QuickHelpText[ swedish ] = "Fallande";
+ QuickHelpText[ polish ] = "Malej¹co";
+ QuickHelpText[ portuguese_brazilian ] = "Descending";
+ QuickHelpText[ japanese ] = "~‡";
+ QuickHelpText[ korean ] = "Descending";
+ QuickHelpText[ chinese_simplified ] = "Descending";
+ QuickHelpText[ chinese_traditional ] = "¦V¤U";
+ QuickHelpText[ arabic ] = "ÊäÇÒáí";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ FixedText FT_SECONDKEY
+ {
+ Pos = MAP_APPFONT ( 160 , 107 ) ;
+ Size = MAP_APPFONT ( 10, 8 ) ;
+ Text = "~2" ;
+ };
+ ListBox LB_SECONDKEY
+ {
+ Pos = MAP_APPFONT ( 171 , 106 ) ;
+ Size = MAP_APPFONT ( 50, 50 ) ;
+ Border = TRUE;
+ DropDown = TRUE;
+ };
+ FixedText FT_THIRDDKEY
+ {
+ Pos = MAP_APPFONT ( 160 , 120 ) ;
+ Size = MAP_APPFONT ( 10, 8 ) ;
+ Text = "~3" ;
+ };
+ ListBox LB_THIRDKEY
+ {
+ Pos = MAP_APPFONT ( 171 , 119 ) ;
+ Size = MAP_APPFONT ( 50, 50 ) ;
+ Border = TRUE;
+ DropDown = TRUE;
+ };
+ GroupBox GB_SORTKEY
+ {
+ Pos = MAP_APPFONT ( 154 , 84 ) ;
+ Size = MAP_APPFONT ( 100, 49 ) ;
+ Text = "Sortierschlüssel" ;
+ Text [ ENGLISH ] = "Sort keys" ;
+ Text[ english_us ] = "Sort keys";
+ Text[ portuguese ] = "Critérios de ordem";
+ Text[ russian ] = "Êëþ÷ ñîðòèðîâêè";
+ Text[ greek ] = "Êëåéäß ôáîéíüìçóçò";
+ Text[ dutch ] = "Sorteersleutel";
+ Text[ french ] = "Critère de tri";
+ Text[ spanish ] = "Criterios de ordenación";
+ Text[ italian ] = "Criteri";
+ Text[ danish ] = "Sorteringsnøgle";
+ Text[ swedish ] = "Sorteringsnyckel";
+ Text[ polish ] = "Klucz sortowania";
+ Text[ portuguese_brazilian ] = "Sort keys";
+ Text[ japanese ] = "•À‚בւ¦·°";
+ Text[ korean ] = "Á¤·Ä Å°";
+ Text[ chinese_simplified ] = "ÅÅÐòµÄ¹Ø¼ü×Ö";
+ Text[ chinese_traditional ] = "±Æ§ÇªºÃöÁä¦r";
+ Text[ arabic ] = "ãÝÇÊíÍ ÇáÝÑÒ";
+ Text[ turkish ] = "Sýralama anahtarý";
+ Text[ language_user1 ] = " ";
+ };
+
+ String STR_NOSORTKEY
+ {
+ Text = "<Keiner>";
+ Text [English] = "<None>";
+ Text[ english_us ] = "<None>";
+ Text[ portuguese ] = "<Nenhum>";
+ Text[ russian ] = "<Áåç>";
+ Text[ greek ] = "<ÊáíÝíá>";
+ Text[ dutch ] = "<Geen>";
+ Text[ french ] = "<Aucun>";
+ Text[ spanish ] = "<Ninguno>";
+ Text[ italian ] = "<nessuno>";
+ Text[ danish ] = "<Ingen>";
+ Text[ swedish ] = "<Ingen>";
+ Text[ polish ] = "<Brak>";
+ Text[ portuguese_brazilian ] = "<None>";
+ Text[ japanese ] = "<‚È‚µ>";
+ Text[ korean ] = "<¾øÀ½>";
+ Text[ chinese_simplified ] = "<ÎÞ>";
+ Text[ chinese_traditional ] = "<µL>";
+ Text[ arabic ] = "<ÈÏæä>";
+ Text[ turkish ] = "<Yok>";
+ };
+ String STR_NO_CHAR_STYLE
+ {
+ Text = "<Keine>";
+ Text [English] = "<None>";
+ Text[ english_us ] = "<None>";
+ Text[ portuguese ] = "<Nenhum>";
+ Text[ russian ] = "<Áåç>";
+ Text[ greek ] = "<ÊáíÝíá>";
+ Text[ dutch ] = "<Geen>";
+ Text[ french ] = "<Aucun>";
+ Text[ spanish ] = "<Ninguno>";
+ Text[ italian ] = "<Nessuno>";
+ Text[ danish ] = "<Ingen>";
+ Text[ swedish ] = "<Ingen>";
+ Text[ polish ] = "<Brak>";
+ Text[ portuguese_brazilian ] = "<None>";
+ Text[ japanese ] = "<‚È‚µ>";
+ Text[ korean ] = "<¾øÀ½>";
+ Text[ chinese_simplified ] = "<ÎÞ>";
+ Text[ chinese_traditional ] = "<µL>";
+ Text[ arabic ] = "<ÈÏæä>";
+ Text[ turkish ] = "<Yok>";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DELIM
+ {
+ Text = "T";
+ Text [English] = "S";
+ Text[ language_user1 ] = " ";
+ Text[ english_us ] = "S";
+ Text[ portuguese ] = "S";
+ Text[ russian ] = "Ð";
+ Text[ greek ] = "Ä";
+ Text[ dutch ] = "S";
+ Text[ french ] = "S";
+ Text[ spanish ] = "S";
+ Text[ italian ] = "S";
+ Text[ danish ] = "S";
+ Text[ swedish ] = "A";
+ Text[ polish ] = "S";
+ Text[ portuguese_brazilian ] = "S";
+ Text[ japanese ] = "S";
+ Text[ korean ] = "S";
+ Text[ chinese_simplified ] = "S";
+ Text[ chinese_traditional ] = "S";
+ Text[ arabic ] = "Ý";
+ Text[ turkish ] = "T";
+ };
+};
+TabPage TP_TOX_STYLES
+{
+ HelpID = HID_TOX_STYLES_PAGE;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE ;
+ FixedText FT_LEVEL
+ {
+ Pos = MAP_APPFONT ( 11 , 15 ) ;
+ Size = MAP_APPFONT ( 24 , 8 ) ;
+ Text = "Stu~fen" ;
+ Text [ ENGLISH ] = "~Levels" ;
+ Text [ norwegian ] = "~Nivåer" ;
+ Text [ italian ] = "~Livelli" ;
+ Text [ portuguese_brazilian ] = "~Níveis" ;
+ Text [ portuguese ] = "~Níveis" ;
+ Text [ finnish ] = "~Tasot" ;
+ Text [ danish ] = "Niveauer" ;
+ Text [ french ] = "~Niveaux" ;
+ Text [ swedish ] = "Nivåer" ;
+ Text [ dutch ] = "~Niveaus" ;
+ Text [ spanish ] = "~Niveles" ;
+ Text [ english_us ] = "~Levels" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¼¶(~L)";
+ Text[ russian ] = "Óðîâíè";
+ Text[ polish ] = "Poziomy";
+ Text[ japanese ] = "ÚÍÞÙ(~L)";
+ Text[ chinese_traditional ] = "¯Å(~L)";
+ Text[ arabic ] = "ÇáãÓÊæíÇÊ";
+ Text[ greek ] = "Åðßðåäá";
+ Text[ korean ] = "¼öÁØ(~L)";
+ Text[ turkish ] = "Düzeyler";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_LEVEL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 25 ) ;
+ Size = MAP_APPFONT ( 115 , 81 ) ;
+ TabStop = TRUE ;
+ AutoHScroll = TRUE ;
+ };
+ FixedText FT_TEMPLATE
+ {
+ Pos = MAP_APPFONT ( 133 , 15 ) ;
+ Size = MAP_APPFONT ( 54 , 8 ) ;
+ Text = "~Absatzvorlagen" ;
+ Text [ ENGLISH ] = "~Paragraph styles" ;
+ Text [ norwegian ] = "~Avsnittsmaler" ;
+ Text [ italian ] = "Mo~delli di paragrafo" ;
+ Text [ portuguese_brazilian ] = "~Estilos de parágrafo" ;
+ Text [ portuguese ] = "Estilo~s de parágrafo" ;
+ Text [ finnish ] = "~Kappaletyylit" ;
+ Text [ danish ] = "Afsnitstypografi" ;
+ Text [ french ] = "~Styles de paragraphe" ;
+ Text [ swedish ] = "Styckeformatmallar" ;
+ Text [ dutch ] = "~Alinea-opmaakprofielen" ;
+ Text [ spanish ] = "Estilos de párra~fo" ;
+ Text [ english_us ] = "Paragraph ~Styles" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¶ÎÂäÑùʽ(~S)";
+ Text[ russian ] = "Ñòèëè àáçàöåâ";
+ Text[ polish ] = "Style akapitów";
+ Text[ japanese ] = "’i—Ž½À²Ù(~S)";
+ Text[ chinese_traditional ] = "¬q¸¨¼Ë¦¡(~S)";
+ Text[ arabic ] = "ÃäãÇØ ÝÞÑÉ";
+ Text[ greek ] = "Ðñüôõð~á ðáñáãñÜöïõ";
+ Text[ korean ] = "´Ü¶ô À¯Çü(~S)";
+ Text[ turkish ] = "Paragraf þablonlarý";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_PARALAY
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 133 , 25 ) ;
+ Size = MAP_APPFONT ( 110 , 81 ) ;
+ TabStop = TRUE ;
+ Sort = TRUE ;
+ AutoHScroll = TRUE ;
+ };
+ PushButton BT_STD
+ {
+ Pos = MAP_APPFONT ( 32 , 112 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "Sta~ndard" ;
+ Text [ ENGLISH ] = "Sta~ndard" ;
+ TabStop = TRUE ;
+ Text [ dutch ] = "Stan~daard" ;
+ Text [ english_us ] = "~Default" ;
+ Text [ italian ] = "Sta~ndard" ;
+ Text [ spanish ] = "~Predeterminado" ;
+ Text [ french ] = "~Standard" ;
+ Text [ swedish ] = "Sta~ndard" ;
+ Text [ danish ] = "Standard" ;
+ Text [ portuguese ] = "~Padrão" ;
+ Text [ portuguese_brazilian ] = "Sta~ndard" ;
+ Text[ chinese_simplified ] = "±ê×¼(~D)";
+ Text[ russian ] = "Ñòàíäàðò";
+ Text[ polish ] = "Standard";
+ Text[ japanese ] = "•W€(~D)";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¼Ð·Ç(~D)";
+ Text[ arabic ] = "ÇÝÊÑÇÖí";
+ Text[ greek ] = "ÐñïåðéëïãÞ";
+ Text[ korean ] = "±âº»°ª(~D)";
+ Text[ turkish ] = "Standart";
+ };
+ PushButton BT_ASSIGN
+ {
+ Pos = MAP_APPFONT ( 133 , 112 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "<- ~Zuordnen" ;
+ Text [ ENGLISH ] = "<- ~Assign" ;
+ Text [ norwegian ] = "<- ~Tilordne" ;
+ Text [ italian ] = "<- ~Assegna" ;
+ Text [ portuguese_brazilian ] = "<- ~Designar" ;
+ Text [ portuguese ] = "<- ~Atribuir" ;
+ Text [ finnish ] = "<- ~Liitä" ;
+ Text [ danish ] = "<- Tildel" ;
+ Text [ french ] = "<- Assigner" ;
+ Text [ swedish ] = "<- Ti~lldela" ;
+ Text [ dutch ] = "<- ~Toewijzen" ;
+ Text [ spanish ] = "<- ~Asignar" ;
+ Text [ english_us ] = "<- ~Assign" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "<- Ö¸¶¨(~A)";
+ Text[ russian ] = "<- Í~àçíà÷èòü";
+ Text[ polish ] = "<- Przypis~z";
+ Text[ japanese ] = "<- ”z’u(~A)";
+ Text[ chinese_traditional ] = "<- «ü©w(~A)";
+ Text[ arabic ] = "ÊÚííä<- ";
+ Text[ greek ] = "<- ÊáôÜôáîç";
+ Text[ korean ] = "<- ÁöÁ¤(~A)";
+ Text[ turkish ] = "<- Ata";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton BT_EDIT_STYLE
+ {
+ Pos = MAP_APPFONT ( 186 , 112 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "~Bearbeiten" ;
+ Text [ ENGLISH ] = "~Edit" ;
+ TabStop = TRUE ;
+ Text[ english_us ] = "~Edit";
+ Text[ portuguese ] = "~Editar";
+ Text[ russian ] = "~Ïðàâêà";
+ Text[ dutch ] = "~Bewerken";
+ Text[ french ] = "Modifier";
+ Text[ spanish ] = "~Editar";
+ Text[ italian ] = "~Modifica";
+ Text[ danish ] = "Rediger";
+ Text[ swedish ] = "~Redigera";
+ Text[ polish ] = "~Edytuj";
+ Text[ portuguese_brazilian ] = "~Edit";
+ Text[ japanese ] = "•ÒW(~E)";
+ Text[ chinese_simplified ] = "±à¼­(~E)";
+ Text[ chinese_traditional ] = "½s¿è(~E)";
+ Text[ arabic ] = "ÊÍÑíÑ";
+ Text[ greek ] = "Åðåîåñãáóßá";
+ Text[ korean ] = "ÆíÁý(~E)";
+ Text[ turkish ] = "Düzenle";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_FORMAT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 129 ) ;
+ Text = "Zuordnung" ;
+ Text [ ENGLISH ] = "Assignment" ;
+ Text[ english_us ] = "Assignment";
+ Text[ portuguese ] = "Atribuição";
+ Text[ russian ] = "Íàçíà÷åíèå";
+ Text[ dutch ] = "Toewijzing";
+ Text[ french ] = "Assignation";
+ Text[ spanish ] = "Asignación";
+ Text[ italian ] = "Assegnazione";
+ Text[ danish ] = "Tildel";
+ Text[ swedish ] = "Tilldelning";
+ Text[ polish ] = "Przypisanie";
+ Text[ portuguese_brazilian ] = "Layout";
+ Text[ japanese ] = "”z’u";
+ Text[ chinese_simplified ] = "Ö¸¶¨";
+ Text[ chinese_traditional ] = "«ü©w";
+ Text[ arabic ] = "ÊÚííä";
+ Text[ greek ] = "Áíôéóôïß÷éóç";
+ Text[ korean ] = "ÁöÁ¤";
+ Text[ turkish ] = "Atama";
+ Text[ language_user1 ] = " ";
+ };
+};
+ModalDialog DLG_ADD_IDX_STYLES
+{
+ HelpId = HID_DLG_ADD_IDX_STYLES;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 350 , 200 ) ;
+ Text = "Vorlage zuweisen" ;
+ Text [ ENGLISH ] = "Assign styles" ;
+ Moveable = TRUE ;
+ Control TR_HEADER
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 276 , 164 ) ;
+ Border = TRUE;
+ TabStop = TRUE;
+ Window HB_STYLES
+ {
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 276 , 20 ) ;
+ };
+ Control TLB_STYLES
+ {
+ Pos = MAP_APPFONT ( 0 , 20 ) ;
+ Size = MAP_APPFONT ( 276 , 132 ) ;
+ Border = TRUE;
+ };
+ };
+ PushButton PB_LEFT
+ {
+ Pos = MAP_APPFONT ( 12 , 182 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Text = "~<<";
+ };
+ PushButton PB_RIGHT
+ {
+ Pos = MAP_APPFONT ( 65 , 182 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Text = "~>>";
+ };
+ GroupBox GB_STYLES
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 288 , 194 ) ;
+ Text = "~Vorlagen";
+ Text [English] = "Styles";
+ Text[ english_us ] = "Styl~es";
+ Text[ portuguese ] = "E~stilos";
+ Text[ russian ] = "Ñòèëè";
+ Text[ greek ] = "Ðñüôõðá";
+ Text[ dutch ] = "~Opmaakprofielen";
+ Text[ french ] = "~Styles";
+ Text[ spanish ] = "~Estilos";
+ Text[ italian ] = "~Modelli";
+ Text[ danish ] = "Typografi";
+ Text[ swedish ] = "Mallar";
+ Text[ polish ] = "Szablony";
+ Text[ portuguese_brazilian ] = "Styles";
+ Text[ japanese ] = "½À²Ù(~E)";
+ Text[ korean ] = "À¯Çü(~E)";
+ Text[ chinese_simplified ] = "Ñùʽ(~E)";
+ Text[ chinese_traditional ] = "¼Ë¦¡(~E)";
+ Text[ arabic ] = "ÃäãÇØ";
+ Text[ turkish ] = "Þablonlar";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 297 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 297 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 297 , 40 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ String ST_HB_FIRST
+ {
+ Text = "Nicht zugewiesen";
+ Text [English] = "Not applied";
+ Text[ english_us ] = "Not applied";
+ Text[ portuguese ] = "Não aplicado";
+ Text[ russian ] = "Íå ïðèìåíåíî";
+ Text[ greek ] = "Äåí Ý÷åé ãßíåé áíôéóôïß÷éóç";
+ Text[ dutch ] = "Niet toegewezen";
+ Text[ french ] = "Non assigné";
+ Text[ spanish ] = "No asignado";
+ Text[ italian ] = "Non applicato";
+ Text[ danish ] = "Ikke tildelt";
+ Text[ swedish ] = "Inte tilldelat";
+ Text[ polish ] = "Nie przypisany";
+ Text[ portuguese_brazilian ] = "Not applied";
+ Text[ japanese ] = "“K—p‚µ‚È‚¢";
+ Text[ korean ] = "Àû¿ëµÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Text[ chinese_simplified ] = "²»ÒªÖ¸¶¨";
+ Text[ chinese_traditional ] = "¤£«ü©w";
+ Text[ arabic ] = "ÚÏã ÇáÊØÈíÞ";
+ Text[ turkish ] = "Uygulanmadý";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ english_us ] = "Assign Styles";
+ Text[ portuguese ] = "Aplicar estilos";
+ Text[ russian ] = "Íàçíà÷èòü ñòèëè";
+ Text[ greek ] = "Áíôéóôïß÷éóç ðñüôõðïõ";
+ Text[ dutch ] = "Opmaakprofiel toewijzen";
+ Text[ french ] = "Assigner le style";
+ Text[ spanish ] = "Asignar estilos";
+ Text[ italian ] = "Assegna modello";
+ Text[ danish ] = "Tildel typografi";
+ Text[ swedish ] = "Tilldela mall";
+ Text[ polish ] = "Przypisz styl";
+ Text[ portuguese_brazilian ] = "Assign styles";
+ Text[ japanese ] = "½À²Ù‚Ì“K—p";
+ Text[ korean ] = "ÁöÁ¤ À¯Çü";
+ Text[ chinese_simplified ] = "Ö¸¶¨Ñùʽ";
+ Text[ chinese_traditional ] = "«ü©w¼Ë¦¡";
+ Text[ arabic ] = "ÊÚííä ÇáÃäãÇØ";
+ Text[ turkish ] = "Þablon ata";
+ Text[ language_user1 ] = " ";
+};
+/*-----------------------------------------------------------
+
+-----------------------------------------------------------*/
+ModalDialog DLG_CREATE_AUTOMARK
+{
+ HelpId = HID_DLG_CREATE_AUTOMARK;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 350 , 200 ) ;
+ Text = "Konkordanzdatei bearbeiten" ;
+ Text [ ENGLISH ] = "Edit concordance file" ;
+ Moveable = TRUE ;
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 297 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 297 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 297 , 40 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ Control BB_ENTRIES
+ {
+ Pos = MAP_APPFONT ( 12 , 18 ) ;
+ Size = MAP_APPFONT ( 276 , 175 ) ;
+ TabStop = TRUE ;
+ Border = TRUE;
+ String ST_SEARCH
+ {
+ Text = "Suchbegriff" ;
+ Text [ ENGLISH ] = "Search entry" ;
+ Text[ english_us ] = "Search term";
+ Text[ portuguese ] = "Expressão procurada";
+ Text[ russian ] = "Èñêîìîå ïîíÿòèå";
+ Text[ greek ] = "¼ñïò áíáæÞôçóçò";
+ Text[ dutch ] = "Zoekbegrip";
+ Text[ french ] = "Élément recherché";
+ Text[ spanish ] = "Término de búsqueda";
+ Text[ italian ] = "Voce cercata";
+ Text[ danish ] = "Søgeord";
+ Text[ swedish ] = "Sökord";
+ Text[ polish ] = "Szukany wyraz";
+ Text[ portuguese_brazilian ] = "Search entry";
+ Text[ japanese ] = "ŒŸõ·°";
+ Text[ korean ] = "Á¶È¸ ¿ë¾î";
+ Text[ chinese_simplified ] = "ËÑÑ°ÌõÄ¿";
+ Text[ chinese_traditional ] = "·j´M±ø¥Ø";
+ Text[ arabic ] = "ãÕØáÍ ÇáÈÍË";
+ Text[ turkish ] = "Arama terimi";
+ };
+ String ST_ALTERNATIVE
+ {
+ Text = "Alternativeintrag" ;
+ Text [ ENGLISH ] = "Alternative entry" ;
+ Text[ english_us ] = "Alternative entry";
+ Text[ portuguese ] = "Entrada alternativa";
+ Text[ russian ] = "Àëüòåðíàòèâíûé ýëåìåíò";
+ Text[ greek ] = "ÅíáëëáêôéêÞ åããñáöÞ";
+ Text[ dutch ] = "Alternatief item";
+ Text[ french ] = "Entrée de remplacement";
+ Text[ spanish ] = "Entrada alternativa";
+ Text[ italian ] = "Voce alternativa";
+ Text[ danish ] = "Alternativt element";
+ Text[ swedish ] = "Alternativpost";
+ Text[ polish ] = "Wpis alternatywny";
+ Text[ portuguese_brazilian ] = "Alternative entry";
+ Text[ japanese ] = "‚Ç‚¿‚ç‚©ˆê•û‚ð‘I‚Ô";
+ Text[ korean ] = "´ëü Ç׸ñ";
+ Text[ chinese_simplified ] = "Ñ¡ÔñÌõÄ¿";
+ Text[ chinese_traditional ] = "¨ä¥¦±ø¥Ø";
+ Text[ arabic ] = "ÅÏÎÇá ÈÏíá";
+ Text[ turkish ] = "Alternatif giriþ";
+ };
+ String ST_PRIMKEY
+ {
+ Text = "1. Schlüssel" ;
+ Text [ ENGLISH ] = "1. Key" ;
+ Text[ english_us ] = "1st key";
+ Text[ portuguese ] = "1ª chave";
+ Text[ russian ] = "1-é êëþ÷";
+ Text[ greek ] = "1. Êëåéäß";
+ Text[ dutch ] = "1e sleutel";
+ Text[ french ] = "1re clé";
+ Text[ spanish ] = "1era clave";
+ Text[ italian ] = "1° criterio";
+ Text[ danish ] = "1. nøgle";
+ Text[ swedish ] = "1 nyckel";
+ Text[ polish ] = "1 klucz";
+ Text[ portuguese_brazilian ] = "1. Key";
+ Text[ japanese ] = "1. ·°";
+ Text[ korean ] = "1.Å°";
+ Text[ chinese_simplified ] = "1. Ö÷¹Ø¼ü×Ö";
+ Text[ chinese_traditional ] = "²Ä¤@­Ó¥DÃöÁä¦r";
+ Text[ arabic ] = "ÇáãÝÊÇÍ ÇáÃæá";
+ Text[ turkish ] = "1. Anahtar";
+ };
+ String ST_SECKEY
+ {
+ Text = "2. Schlüssel" ;
+ Text [ ENGLISH ] = "2. Key" ;
+ Text[ english_us ] = "2nd key";
+ Text[ portuguese ] = "2ª chave";
+ Text[ russian ] = "2-é êëþ÷";
+ Text[ greek ] = "2. Êëåéäß";
+ Text[ dutch ] = "2e sleutel";
+ Text[ french ] = "2ème clé";
+ Text[ spanish ] = "2da llave";
+ Text[ italian ] = "2° criterio";
+ Text[ danish ] = "2. nøgle";
+ Text[ swedish ] = "2 nyckel";
+ Text[ polish ] = "2 klucz";
+ Text[ portuguese_brazilian ] = "2. Key";
+ Text[ japanese ] = "2. ·°";
+ Text[ korean ] = "2.Å°";
+ Text[ chinese_simplified ] = "2. Ö÷¹Ø¼ü×Ö";
+ Text[ chinese_traditional ] = "²Ä¤G­Ó¥DÃöÁä¦r";
+ Text[ arabic ] = "ÇáãÝÊÇÍ ÇáËÇäí";
+ Text[ turkish ] = "2. Anahtar";
+ };
+ String ST_COMMENT
+ {
+ Text = "Kommentar" ;
+ Text [ ENGLISH ] = "Comment" ;
+ Text[ english_us ] = "Comment";
+ Text[ portuguese ] = "Comentário";
+ Text[ russian ] = "Êîììåíòàðèé";
+ Text[ greek ] = "Ó÷üëéï";
+ Text[ dutch ] = "Commentaar";
+ Text[ french ] = "Commentaire";
+ Text[ spanish ] = "Comentario";
+ Text[ italian ] = "Commento";
+ Text[ danish ] = "Kommentar";
+ Text[ swedish ] = "Kommentar";
+ Text[ polish ] = "Komentarz";
+ Text[ portuguese_brazilian ] = "Comment";
+ Text[ japanese ] = "ºÒÝÄ";
+ Text[ korean ] = "¸Þ¸ð";
+ Text[ chinese_simplified ] = "×¢½â";
+ Text[ chinese_traditional ] = "ª`¸Ñ";
+ Text[ arabic ] = "ÊÚáíÞ";
+ Text[ turkish ] = "Açýklama";
+ };
+ String ST_CASESENSITIVE
+ {
+ Text = "Exakt" ;
+ Text [ ENGLISH ] = "Match case" ;
+ Text[ english_us ] = "Match case";
+ Text[ portuguese ] = "Respeitar maiúsc./minúsculas";
+ Text[ russian ] = "Òî÷íûé ïîèñê";
+ Text[ greek ] = "Áêñéâþò";
+ Text[ dutch ] = "Exact";
+ Text[ french ] = "Respecter la casse";
+ Text[ spanish ] = "Coincidencia exacta";
+ Text[ italian ] = "Ricerca esatta";
+ Text[ danish ] = "Eksakt";
+ Text[ swedish ] = "Exakt";
+ Text[ polish ] = "Dok³adnie";
+ Text[ portuguese_brazilian ] = "Match case";
+ Text[ japanese ] = "Š®‘S‚É“¯ˆê";
+ Text[ korean ] = "´ë/¼Ò¹®ÀÚ ±¸ºÐ";
+ Text[ chinese_simplified ] = "¾«È·";
+ Text[ chinese_traditional ] = "ºëÚÌ";
+ Text[ arabic ] = "ãØÇÈÞÉ ÍÇáÉ ÇáÃÍÑÝ";
+ Text[ turkish ] = "Büyük/küçük harf duyarlý";
+ };
+ String ST_WORDONLY
+ {
+ Text = "Ganze Wörter" ;
+ Text [ ENGLISH ] = "Whole words" ;
+ Text[ english_us ] = "Word only";
+ Text[ portuguese ] = "Palavras inteiras";
+ Text[ russian ] = "Âñå ñëîâî";
+ Text[ greek ] = "Ïëüêëçñåò ëÝîåéò";
+ Text[ dutch ] = "Hele woorden";
+ Text[ french ] = "Mots entiers";
+ Text[ spanish ] = "Palabras completas";
+ Text[ italian ] = "Parole intere";
+ Text[ danish ] = "Hele ord";
+ Text[ swedish ] = "Hela ord";
+ Text[ polish ] = "Ca³e s³owa";
+ Text[ portuguese_brazilian ] = "Whole words";
+ Text[ japanese ] = "Š®‘S‚È’PŒê";
+ Text[ korean ] = "´Ü¾î ¸¸";
+ Text[ chinese_simplified ] = "Õû¸ö´Ê";
+ Text[ chinese_traditional ] = "§¹¾ãªº¦rµü";
+ Text[ arabic ] = "ßáãÇÊ ßÇãáÉ";
+ Text[ turkish ] = "Tam sözcükler";
+ };
+ String ST_TRUE
+ {
+ Text = "Ja" ;
+ Text [ ENGLISH ] = "Yes" ;
+ Text[ english_us ] = "Yes";
+ Text[ portuguese ] = "Sim";
+ Text[ russian ] = "Äà";
+ Text[ greek ] = "Íáé";
+ Text[ dutch ] = "Ja";
+ Text[ french ] = "Oui";
+ Text[ spanish ] = "Sí";
+ Text[ italian ] = "Sì";
+ Text[ danish ] = "Ja";
+ Text[ swedish ] = "Ja";
+ Text[ polish ] = "Tak";
+ Text[ portuguese_brazilian ] = "Yes";
+ Text[ japanese ] = "‚Í‚¢";
+ Text[ korean ] = "¿¹";
+ Text[ chinese_simplified ] = "ÊÇ";
+ Text[ chinese_traditional ] = "¬O";
+ Text[ arabic ] = "äÚã";
+ Text[ turkish ] = "Evet";
+ };
+ String ST_FALSE
+ {
+ Text = "Nein" ;
+ Text [ ENGLISH ] = "No" ;
+ Text[ english_us ] = "No";
+ Text[ portuguese ] = "Não";
+ Text[ russian ] = "Íåò";
+ Text[ greek ] = "¼÷é";
+ Text[ dutch ] = "Nee";
+ Text[ french ] = "Non";
+ Text[ spanish ] = "No";
+ Text[ italian ] = "No";
+ Text[ danish ] = "Nej";
+ Text[ swedish ] = "Nej";
+ Text[ polish ] = "Nie";
+ Text[ portuguese_brazilian ] = "No";
+ Text[ japanese ] = "‚¢‚¢‚¦";
+ Text[ korean ] = "¾Æ´Ï¿À";
+ Text[ chinese_simplified ] = "·ñ";
+ Text[ chinese_traditional ] = "§_";
+ Text[ arabic ] = "áÇ";
+ Text[ turkish ] = "Hayýr";
+ };
+ };
+ GroupBox GB_ENTRIES
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 288, 194 ) ;
+ Text = "Einträge" ;
+ Text [ ENGLISH ] = "Entries" ;
+ Text[ english_us ] = "Entries";
+ Text[ portuguese ] = "Entradas";
+ Text[ russian ] = "Ýëåìåíòû";
+ Text[ greek ] = "ÅããñáöÝò";
+ Text[ dutch ] = "Items";
+ Text[ french ] = "Entrées";
+ Text[ spanish ] = "Entradas";
+ Text[ italian ] = "Voci";
+ Text[ danish ] = "Elementer";
+ Text[ swedish ] = "Poster";
+ Text[ polish ] = "Wpisy";
+ Text[ portuguese_brazilian ] = "Entries";
+ Text[ japanese ] = "€–Ú";
+ Text[ korean ] = "Ç׸ñ";
+ Text[ chinese_simplified ] = "ÌõÄ¿";
+ Text[ chinese_traditional ] = "±ø¥Ø";
+ Text[ arabic ] = "ÅÏÎÇáÇÊ";
+ Text[ turkish ] = "Giriþler";
+ };
+ Text[ english_us ] = "Edit Concordance File";
+ Text[ portuguese ] = "Editar ficheiro de concordância";
+ Text[ russian ] = "Ïðàâêà ôàéëà-êîíêîðäàíñà";
+ Text[ greek ] = "Åðåîåñãáóßá áñ÷åßïõ óõìöùíßáò";
+ Text[ dutch ] = "Concordantiebestand bewerken";
+ Text[ french ] = "Édition du fichier de concordance";
+ Text[ spanish ] = "Editar archivo de concordancia";
+ Text[ italian ] = "Modifica file di concordanza";
+ Text[ danish ] = "Rediger konkordansfil";
+ Text[ swedish ] = "Redigera konkordansfil";
+ Text[ polish ] = "Edytuj plik konkordancji";
+ Text[ portuguese_brazilian ] = "Edit concordance file";
+ Text[ japanese ] = "—pŒêõˆø̧²Ù‚Ì•ÒW";
+ Text[ korean ] = "ÀÏÄ¡ÇÏ´Â ÆÄÀÏ ÆíÁý";
+ Text[ chinese_simplified ] = "±à¼­Óï»ãË÷ÒýÎļþ";
+ Text[ chinese_traditional ] = "½s¿è»y¶×¯Á¤ÞÀÉ®×";
+ Text[ arabic ] = "ÊÍÑíÑ ãáÝ ÝåÑÓ ÃÈÌÏí";
+ Text[ turkish ] = "Uyumluluk dosyasýný düzenle";
+};
+
diff --git a/sw/source/ui/index/idxmrk.cxx b/sw/source/ui/index/idxmrk.cxx
new file mode 100644
index 000000000000..90d45881f0be
--- /dev/null
+++ b/sw/source/ui/index/idxmrk.cxx
@@ -0,0 +1,1892 @@
+/*************************************************************************
+ *
+ * $RCSfile: idxmrk.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#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 _COM_SUN_STAR_BEANS_PROPERTYVALUE_HPP_
+#include <com/sun/star/beans/PropertyValue.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+
+#include "helpid.h"
+#define _SVSTDARR_STRINGSSORT
+#include <svtools/svstdarr.hxx>
+
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _TXTCMP_HXX //autogen
+#include <svtools/txtcmp.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _IDXMRK_HXX
+#include <idxmrk.hxx>
+#endif
+#ifndef _TXTTXMRK_HXX
+#include <txttxmrk.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _TOXMGR_HXX
+#include <toxmgr.hxx>
+#endif
+#ifndef _MULTMRK_HXX
+#include <multmrk.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx> // fuer Undo-Ids
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _INDEX_HRC
+#include <index.hrc>
+#endif
+#ifndef _IDXMRK_HRC
+#include <idxmrk.hrc>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _FLDMGR_HXX
+#include <fldmgr.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#include <utlui.hrc>
+#ifndef _SWCONT_HXX
+#include <swcont.hxx>
+#endif
+#ifndef _AUTHFLD_HXX
+#include <authfld.hxx>
+#endif
+
+#define POS_CONTENT 0
+#define POS_INDEX 1
+#define POS_USER 2
+
+static sal_uInt16 nTypePos = 1; // TOX_INDEX as standard
+static sal_uInt16 nKey1Pos = USHRT_MAX;
+
+static sal_uInt16 nKey2Pos = USHRT_MAX;
+
+using namespace ::rtl;
+using namespace ::utl;
+using namespace ::com::sun::star;
+#define C2U(cChar) OUString::createFromAscii(cChar)
+/*--------------------------------------------------------------------
+ Beschreibung: Dialog zum Einfuegen einer Verzeichnismarkierung
+ --------------------------------------------------------------------*/
+SwIndexMarkDlg::SwIndexMarkDlg(Window *pParent,
+ sal_Bool bNewDlg,
+ const ResId& rResId ) :
+ Window(pParent, rResId),
+ bDel(sal_False),
+ bNewMark(bNewDlg),
+ pTOXMgr(0),
+ pSh(0),
+ aOKBT(this, SW_RES(BT_OK )),
+ aCancelBT(this, SW_RES(BT_CANCEL )),
+ aHelpBT(this, SW_RES(BT_HELP )),
+ aDelBT(this, SW_RES(BT_DEL )),
+ aNewBT(this, SW_RES(BT_NEW )),
+ aPrevBT(this, SW_RES(BT_PREV )),
+ aPrevSameBT(this,SW_RES(BT_PREVSAME)),
+ aNextBT(this, SW_RES(BT_NXT )),
+ aNextSameBT(this,SW_RES(BT_NXTSAME)),
+ aTypeFT (this, SW_RES(LBL_INDEX )),
+ aTypeDCB(this, SW_RES(DCB_INDEX )),
+ aEntryFT(this, SW_RES(LBL_ENTRY )),
+ aEntryED(this, SW_RES(SL_ENTRY )),
+ aKeyFT(this, SW_RES(LBL_KEY )),
+ aKeyDCB(this, SW_RES(DCB_KEY )),
+ aKey2FT(this, SW_RES(LBL_KEY2 )),
+ aKey2DCB(this, SW_RES(DCB_KEY2 )),
+ aLevelFT(this, SW_RES(LBL_LEVEL )),
+ aLevelED(this, SW_RES(SL_LEVEL )),
+ aMainEntryCB(this, SW_RES(CB_MAIN_ENTRY )),
+ aApplyToAllCB(this,SW_RES(CB_APPLY_TO_ALL)),
+ aSearchCaseSensitiveCB(this, SW_RES(CB_CASESENSITIVE )),
+ aSearchCaseWordOnlyCB(this, SW_RES(CB_WORDONLY )),
+ aIndexGB(this, SW_RES(GB_INDEX )),
+ bSelected(sal_False)
+{
+ SetStyle(GetStyle()|WB_DIALOGCONTROL);
+ FreeResource();
+ aOKBT .SetHelpId(HID_INSERT_IDX_MRK_OK );
+ aCancelBT .SetHelpId(HID_INSERT_IDX_MRK_CLOSE );
+ aDelBT .SetHelpId(HID_INSERT_IDX_MRK_DELETE );
+ aNewBT .SetHelpId(HID_INSERT_IDX_MRK_NEW );
+ aPrevBT .SetHelpId(HID_INSERT_IDX_MRK_PREV );
+ aPrevSameBT .SetHelpId(HID_INSERT_IDX_MRK_PREV_SAME );
+ aNextBT .SetHelpId(HID_INSERT_IDX_MRK_NEXT );
+ aNextSameBT .SetHelpId(HID_INSERT_IDX_MRK_NEXT_SAME );
+ aTypeDCB .SetHelpId(HID_INSERT_IDX_MRK_TYPE );
+ aEntryED .SetHelpId(HID_INSERT_IDX_MRK_ENTRY );
+ aKeyDCB .SetHelpId(HID_INSERT_IDX_MRK_PRIM_KEY );
+ aKey2DCB .SetHelpId(HID_INSERT_IDX_MRK_SEC_KEY );
+ aLevelED .SetHelpId(HID_INSERT_IDX_MRK_LEVEL );
+ aMainEntryCB .SetHelpId(HID_INSERT_IDX_MRK_MAIN_ENTRY);
+ aApplyToAllCB .SetHelpId(HID_INSERT_IDX_MRK_APPLY_ALL );
+ aSearchCaseSensitiveCB.SetHelpId( HID_INSERT_IDX_MRK_SRCH_CASESENSITIVE );
+ aSearchCaseWordOnlyCB.SetHelpId( HID_INSERT_IDX_MRK_SRCH_WORDONLY );
+
+
+ GetParent()->SetText( SW_RESSTR( bNewMark ? STR_IDXMRK_INSERT : STR_IDXMRK_EDIT));
+
+ aDelBT.SetClickHdl(LINK(this,SwIndexMarkDlg, DelHdl));
+ aPrevBT.SetClickHdl(LINK(this,SwIndexMarkDlg, PrevHdl));
+ aPrevSameBT.SetClickHdl(LINK(this,SwIndexMarkDlg, PrevSameHdl));
+ aNextBT.SetClickHdl(LINK(this,SwIndexMarkDlg, NextHdl));
+ aNextSameBT.SetClickHdl(LINK(this,SwIndexMarkDlg, NextSameHdl));
+ //aTypeDCB.SetModifyHdl(LINK(this,SwIndexMarkDlg, ModifyHdl));
+ aTypeDCB.SetSelectHdl(LINK(this,SwIndexMarkDlg, ModifyHdl));
+ aKeyDCB.SetModifyHdl(LINK(this,SwIndexMarkDlg, KeyDCBModifyHdl));
+ aOKBT.SetClickHdl(LINK(this,SwIndexMarkDlg, InsertHdl));
+ aCancelBT.SetClickHdl(LINK(this,SwIndexMarkDlg, CloseHdl));
+ aEntryED.SetModifyHdl(LINK(this,SwIndexMarkDlg, ModifyHdl));
+ aNewBT.SetClickHdl(LINK(this, SwIndexMarkDlg, NewUserIdxHdl));
+ aApplyToAllCB.SetClickHdl(LINK(this, SwIndexMarkDlg, SearchTypeHdl));
+
+ if(bNewMark)
+ {
+ aDelBT.Hide();
+ ImageList aTempList(SW_RES(IMG_NAVI_ENTRYBMP));
+ aNewBT.SetImage(aTempList.GetImage(SID_SW_START + CONTENT_TYPE_INDEX));
+ }
+ else
+ {
+ aNewBT.Hide();
+ OKButton aTmp(this, WB_HIDE);
+ aOKBT.SetText( aTmp.GetText() );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Controls neu initialisieren mit der aktuellen
+ Markierung
+ --------------------------------------------------------------------*/
+
+
+void SwIndexMarkDlg::InitControls()
+{
+ DBG_ASSERT(pSh && pTOXMgr, "Shell nicht da?")
+ // Inhalts-Verzeichnis
+ const SwTOXType* pType = pTOXMgr->GetTOXType(TOX_CONTENT, 0);
+ ASSERT(pType, "Kein Verzeichnistyp !!");
+ String sTmpTypeSelection;
+ if(aTypeDCB.GetSelectEntryCount())
+ sTmpTypeSelection = aTypeDCB.GetSelectEntry();
+ aTypeDCB.Clear();
+ aTypeDCB.InsertEntry(pType->GetTypeName());
+
+ // Stichwort-Verzeichnis
+ pType = pTOXMgr->GetTOXType(TOX_INDEX, 0);
+ ASSERT(pType, "Kein Verzeichnistyp !!");
+ aTypeDCB.InsertEntry(pType->GetTypeName());
+
+ // Benutzerverzeichnisse
+ sal_uInt16 nCount = pSh->GetTOXTypeCount(TOX_USER);
+ for(sal_uInt16 i=0; i< nCount; ++i)
+ aTypeDCB.InsertEntry( pSh->GetTOXType(TOX_USER, i)->GetTypeName() );
+
+ // KeyWords Primary einlesen
+ SvStringsSort aArr;
+ nCount = pSh->GetTOIKeys( TOI_PRIMARY, aArr );
+ for(i=0; i < nCount; ++i)
+ aKeyDCB.InsertEntry( *aArr[ i ] );
+
+ // KeyWords Secondary einlesen
+ nCount = pSh->GetTOIKeys( TOI_SECONDARY, aArr );
+ for(i=0; i < nCount; ++i)
+ aKey2DCB.InsertEntry( *aArr[ i ] );
+
+ // Aktueller Eintrag
+ const SwTOXMark* pMark = pTOXMgr->GetCurTOXMark();
+ if( pMark && !bNewMark)
+ {
+ // Controls-Handling
+
+ // nur wenn mehr als eins vorhanden
+ // wenn gleich landet es auf dem gleichen Eintrag
+ pSh->SttCrsrMove();
+
+ const SwTOXMark* pMoveMark;
+ sal_Bool bShow = sal_False;
+
+ pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_PRV );
+ if( pMoveMark != pMark )
+ pSh->GotoTOXMark( *pMoveMark, TOX_NXT ), bShow = sal_True;
+ aPrevBT.Enable( pMoveMark != pMark );
+ pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_NXT );
+ if( pMoveMark != pMark )
+ pSh->GotoTOXMark( *pMoveMark, TOX_PRV ), bShow = sal_True;
+ aNextBT.Enable( pMoveMark != pMark );
+ if( bShow )
+ {
+ aPrevBT.Show();
+ aNextBT.Show();
+ bShow = sal_False;
+ }
+
+ pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_SAME_PRV );
+ if( pMoveMark != pMark )
+ pSh->GotoTOXMark( *pMoveMark, TOX_SAME_NXT ), bShow = sal_True;
+ aPrevSameBT.Enable( pMoveMark != pMark );
+ pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_SAME_NXT );
+ if( pMoveMark != pMark )
+ pSh->GotoTOXMark( *pMoveMark, TOX_SAME_PRV ), bShow = sal_True;
+ aNextSameBT.Enable( pMoveMark != pMark );
+ if( bShow )
+ {
+ aNextSameBT.Show();
+ aPrevSameBT.Show();
+ }
+ pSh->EndCrsrMove();
+
+ aTypeFT.Show();
+
+ aTypeDCB.Enable(sal_False);
+ aTypeFT.Enable(sal_False);
+
+ UpdateDialog();
+ }
+ else
+ { // aktuelle Selektion (1.Element) anzeigen ????
+ sal_uInt16 nCnt = pSh->GetCrsrCnt();
+ if (nCnt < 2)
+ {
+ bSelected = !pSh->HasSelection();
+ aOrgStr = pSh->GetView().GetSelectionTextParam(sal_True, sal_False, sal_True);
+ aEntryED.SetText(aOrgStr);
+
+ //alle gleichen Eintraege aufzunehmen darf nur im Body und auch da nur
+ //bei vorhandener einfacher Selektion erlaubt werden
+ const sal_uInt16 nFrmType = pSh->GetFrmType(0,sal_True);
+ aApplyToAllCB.Show();
+ aSearchCaseSensitiveCB.Show();
+ aSearchCaseWordOnlyCB.Show();
+ aApplyToAllCB.Enable(0 != aOrgStr.Len() &&
+ 0 == (nFrmType & ( FRMTYPE_HEADER | FRMTYPE_FOOTER | FRMTYPE_FLY_ANY )));
+ SearchTypeHdl(&aApplyToAllCB);
+ }
+
+ // Verzeichnistyp ist default
+ if( sTmpTypeSelection.Len() &&
+ LISTBOX_ENTRY_NOTFOUND != aTypeDCB.GetEntryPos( sTmpTypeSelection ) )
+ aTypeDCB.SelectEntry(sTmpTypeSelection);
+ else
+ aTypeDCB.SelectEntry(aTypeDCB.GetEntry(nTypePos));
+ ModifyHdl(&aTypeDCB);
+ }
+}
+/* -----------------07.09.99 10:43-------------------
+ Change the content of aEntryED if text is selected
+ --------------------------------------------------*/
+
+void SwIndexMarkDlg::Activate()
+{
+ // aktuelle Selektion (1.Element) anzeigen ????
+ if(bNewMark)
+ {
+ sal_uInt16 nCnt = pSh->GetCrsrCnt();
+ if (nCnt < 2)
+ {
+ bSelected = !pSh->HasSelection();
+ aOrgStr = pSh->GetView().GetSelectionTextParam(sal_True, sal_False, sal_True);
+ aEntryED.SetText(aOrgStr);
+
+ //alle gleichen Eintraege aufzunehmen darf nur im Body und auch da nur
+ //bei vorhandener einfacher Selektion erlaubt werden
+ const sal_uInt16 nFrmType = pSh->GetFrmType(0,sal_True);
+ aApplyToAllCB.Show();
+ aSearchCaseSensitiveCB.Show();
+ aSearchCaseWordOnlyCB.Show();
+ aApplyToAllCB.Enable(0 != aOrgStr.Len() &&
+ 0 == (nFrmType & ( FRMTYPE_HEADER | FRMTYPE_FOOTER | FRMTYPE_FLY_ANY )));
+ SearchTypeHdl(&aApplyToAllCB);
+ }
+ ModifyHdl(&aTypeDCB);
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ok-Button auswerten
+ --------------------------------------------------------------------*/
+void SwIndexMarkDlg::Apply()
+{
+ InsertUpdate();
+ if(bSelected)
+ pSh->ResetSelect(0, sal_False);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Aenderungen uebernehmen
+ --------------------------------------------------------------------*/
+
+
+void SwIndexMarkDlg::InsertUpdate()
+{
+ pSh->StartUndo(UNDO_INSATTR);
+ pSh->StartAllAction();
+
+ if( bNewMark )
+ InsertMark();
+ else if( !pSh->HasReadonlySel() )
+ {
+ if( bDel )
+ pTOXMgr->DeleteTOXMark();
+ else if( pTOXMgr->GetCurTOXMark() )
+ UpdateMark();
+ }
+
+ pSh->EndAllAction();
+ pSh->EndUndo(UNDO_INSATTR);
+
+ if((nTypePos = aTypeDCB.GetEntryPos(aTypeDCB.GetSelectEntry())) == LISTBOX_ENTRY_NOTFOUND)
+ nTypePos = 0;
+
+ nKey1Pos = aKeyDCB.GetEntryPos(aKeyDCB.GetText());
+ nKey2Pos = aKey2DCB.GetEntryPos(aKey2DCB.GetText());
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Marke einfuegen
+ --------------------------------------------------------------------*/
+void lcl_SelectSameStrings(SwWrtShell& rSh, BOOL bWordOnly, BOOL bCaseSensitive)
+{
+ rSh.Push();
+ SearchParam aParam( rSh.GetSelTxt(), SearchParam::SRCH_NORMAL,
+ TRUE, FALSE, FALSE );
+
+ aParam.SetCaseSensitive( bCaseSensitive );
+ aParam.SetSrchWordOnly( bWordOnly );
+
+ rSh.ClearMark();
+ ULONG nRet = rSh.Find( aParam, DOCPOS_START, DOCPOS_END,
+ (FindRanges)(FND_IN_SELALL|FND_IN_BODYONLY), FALSE );
+}
+
+
+void SwIndexMarkDlg::InsertMark()
+{
+ sal_uInt16 nPos = aTypeDCB.GetEntryPos(aTypeDCB.GetSelectEntry());
+ TOXTypes eType = nPos == POS_CONTENT ? TOX_CONTENT :
+ nPos == POS_INDEX ? TOX_INDEX : TOX_USER;
+
+ SwTOXMarkDescription aDesc(eType);
+
+ sal_uInt16 nLevel = (sal_uInt16)aLevelED.Denormalize(aLevelED.GetValue());
+ switch(nPos)
+ {
+ case POS_CONTENT : break;
+ case POS_INDEX: // Stichwortverzeichnismarke
+ {
+ UpdateKeyBoxes();
+ String aPrim(aKeyDCB.GetText());
+ String aSec(aKey2DCB.GetText());
+ aDesc.SetPrimKey(aPrim);
+ aDesc.SetSecKey(aSec);
+ aDesc.SetMainEntry(aMainEntryCB.IsChecked());
+ }
+ break;
+ default: // Userdefinedverz.-Marke
+ {
+ String aName(aTypeDCB.GetSelectEntry());
+ aDesc.SetTOUName(aName);
+ }
+ }
+ if (aOrgStr != aEntryED.GetText())
+ aDesc.SetAltStr(aEntryED.GetText());
+ BOOL bApplyAll = aApplyToAllCB.IsChecked();
+ BOOL bWordOnly = aApplyToAllCB.IsChecked();
+ BOOL bCaseSensitive = aSearchCaseSensitiveCB.IsChecked();
+
+ pSh->StartAllAction();
+ // hier muessen alle gleichen Strings selektiert werden
+ // damit der Eintrag auf alle gleichen Strings angewandt wird
+ if(bApplyAll)
+ {
+ lcl_SelectSameStrings(*pSh, bWordOnly, bCaseSensitive);
+ }
+ aDesc.SetLevel(nLevel);
+ SwTOXMgr aMgr(pSh);
+ aMgr.InsertTOXMark(aDesc);
+ if(bApplyAll)
+ pSh->Pop(FALSE);
+
+ pSh->EndAllAction();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Marke Updaten
+ --------------------------------------------------------------------*/
+
+
+void SwIndexMarkDlg::UpdateMark()
+{
+ String aAltText(aEntryED.GetText());
+ String* pAltText = aOrgStr != aEntryED.GetText() ? &aAltText : 0;
+ //empty alternative texts are not allowed
+ if(pAltText && !pAltText->Len())
+ return;
+
+ UpdateKeyBoxes();
+
+ sal_uInt16 nPos = aTypeDCB.GetEntryPos(aTypeDCB.GetSelectEntry());
+ TOXTypes eType = TOX_USER;
+ if(POS_CONTENT == nPos)
+ eType = TOX_CONTENT;
+ else if(POS_INDEX == nPos)
+ eType = TOX_INDEX;
+
+ SwTOXMarkDescription aDesc(eType);
+ aDesc.SetLevel(aLevelED.GetValue());
+ if(pAltText)
+ aDesc.SetAltStr(*pAltText);
+
+ String aPrim(aKeyDCB.GetText());
+ if(aPrim.Len())
+ aDesc.SetPrimKey(aPrim);
+ String aSec(aKey2DCB.GetText());
+ if(aSec.Len())
+ aDesc.SetSecKey(aSec);
+ aDesc.SetMainEntry(aMainEntryCB.IsVisible() && aMainEntryCB.IsChecked());
+ pTOXMgr->UpdateTOXMark(aDesc);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Neue Keys eintragen
+ --------------------------------------------------------------------*/
+
+
+void SwIndexMarkDlg::UpdateKeyBoxes()
+{
+ String aKey(aKeyDCB.GetText());
+ sal_uInt16 nPos = aKeyDCB.GetEntryPos(aKey);
+
+ if(nPos == LISTBOX_ENTRY_NOTFOUND && aKey.Len() > 0)
+ { // neuen Key erzeugen
+ aKeyDCB.InsertEntry(aKey);
+ }
+
+ aKey = aKey2DCB.GetText();
+ nPos = aKey2DCB.GetEntryPos(aKey);
+
+ if(nPos == LISTBOX_ENTRY_NOTFOUND && aKey.Len() > 0)
+ { // neuen Key erzeugen
+ aKey2DCB.InsertEntry(aKey);
+ }
+}
+/* -----------------13.10.99 15:10-------------------
+
+ --------------------------------------------------*/
+class SwNewUserIdxDlg : public ModalDialog
+{
+ OKButton aOKPB;
+ CancelButton aCancelPB;
+ HelpButton aHelpPB;
+ GroupBox aNameGB;
+ FixedText aNameFT;
+ Edit aNameED;
+
+ SwIndexMarkDlg* pDlg;
+
+ DECL_LINK( ModifyHdl, Edit*);
+
+ public:
+ SwNewUserIdxDlg(SwIndexMarkDlg* pParent) :
+ ModalDialog(pParent, SW_RES(DLG_NEW_USER_IDX)),
+ pDlg(pParent),
+ aOKPB(this, ResId( PB_OK )),
+ aCancelPB(this, ResId( PB_CANCEL )),
+ aHelpPB(this, ResId( PB_HELP )),
+ aNameGB(this, ResId( GB_NAME )),
+ aNameFT(this, ResId( FT_NAME )),
+ aNameED(this, ResId( ED_NAME ))
+ {
+ FreeResource();
+ aNameED.SetModifyHdl(LINK(this, SwNewUserIdxDlg, ModifyHdl));
+ aOKPB.Enable(sal_False);
+ aNameED.GrabFocus();
+ }
+
+ virtual void Apply();
+ String GetName(){return aNameED.GetText();}
+};
+void SwNewUserIdxDlg::Apply()
+{
+}
+
+IMPL_LINK( SwNewUserIdxDlg, ModifyHdl, Edit*, pEdit)
+{
+ aOKPB.Enable(pEdit->GetText().Len() && !pDlg->IsTOXType(pEdit->GetText()));
+ return 0;
+}
+
+IMPL_LINK( SwIndexMarkDlg, NewUserIdxHdl, Button*, pButton)
+{
+ SwNewUserIdxDlg* pDlg = new SwNewUserIdxDlg(this);
+ if(RET_OK == pDlg->Execute())
+ {
+ String sNewName(pDlg->GetName());
+ aTypeDCB.InsertEntry(sNewName);
+ aTypeDCB.SelectEntry(sNewName);
+ }
+ delete pDlg;
+ return 0;
+}
+/* -----------------------------17.01.00 12:18--------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK( SwIndexMarkDlg, SearchTypeHdl, CheckBox*, pBox)
+{
+ sal_Bool bEnable = pBox->IsChecked() && pBox->IsEnabled();
+ aSearchCaseWordOnlyCB.Enable(bEnable);
+ aSearchCaseSensitiveCB.Enable(bEnable);
+ return 0;
+}
+/* -----------------07.09.99 10:30-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK( SwIndexMarkDlg, InsertHdl, Button *, pButton )
+{
+ Apply();
+ //close the dialog if only one entry is available
+ if(!bNewMark && !aPrevBT.IsVisible() && !aNextBT.IsVisible())
+ CloseHdl(pButton);
+ return 0;
+}
+/* -----------------07.09.99 10:29-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK( SwIndexMarkDlg, CloseHdl, Button *, pButton )
+{
+ if(bNewMark)
+ {
+ sal_uInt16 nSlot = FN_INSERT_IDX_ENTRY_DLG;
+ SfxViewFrame::Current()->GetDispatcher()->Execute(nSlot,
+ SFX_CALLMODE_ASYNCHRON|SFX_CALLMODE_RECORD);
+ }
+ else
+ {
+ ((SwIndexMarkModalDlg*)GetParent())->EndDialog(RET_CANCEL);
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------
+ Beschreibung: VerzeichnisTyp auswaehlen nur bei Einfuegen
+ --------------------------------------------------------------------*/
+IMPL_LINK( SwIndexMarkDlg, ModifyHdl, ListBox *, pBox )
+{
+ if(&aTypeDCB == pBox)
+ {
+ // Verzeichnistyp setzen
+ sal_uInt16 nPos = aTypeDCB.GetEntryPos(aTypeDCB.GetSelectEntry());
+ sal_Bool bLevelEnable = sal_False,
+ bKeyEnable = sal_False,
+ bSetKey2 = sal_False,
+ bKey2Enable = sal_False;
+ if(nPos == POS_INDEX)
+ {
+ bKeyEnable = sal_True;
+ aKeyDCB.SetText(aKeyDCB.GetEntry(nKey1Pos));
+ if(aKeyDCB.GetText().Len() > 0)
+ {
+ bSetKey2 = bKey2Enable = sal_True;
+ aKey2DCB.SetText(aKey2DCB.GetEntry(nKey2Pos));
+ }
+ }
+ else
+ {
+ bLevelEnable = sal_True;
+ aLevelED.SetMax(MAXLEVEL);
+ aLevelED.SetValue(aLevelED.Normalize(0));
+ bSetKey2 = sal_True;
+ }
+ aLevelFT.Show(bLevelEnable);
+ aLevelED.Show(bLevelEnable);
+ aMainEntryCB.Show(nPos == POS_INDEX);
+
+ aKeyFT.Enable(bKeyEnable);
+ aKeyDCB.Enable(bKeyEnable);
+ if ( bSetKey2 )
+ {
+ aKey2DCB.Enable(bKey2Enable);
+ aKey2FT.Enable(bKey2Enable);
+ }
+ }
+ aOKBT.Enable(aEntryED.GetText().Len() || pSh->GetCrsrCnt(sal_False));
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK_INLINE_START( SwIndexMarkDlg, NextHdl, Button *, EMPTYARG )
+{
+ InsertUpdate();
+ pTOXMgr->NextTOXMark();
+ UpdateDialog();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwIndexMarkDlg, NextHdl, Button *, EMPTYARG )
+
+
+IMPL_LINK_INLINE_START( SwIndexMarkDlg, NextSameHdl, Button *, EMPTYARG )
+{
+ InsertUpdate();
+ pTOXMgr->NextTOXMark(sal_True);
+ UpdateDialog();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwIndexMarkDlg, NextSameHdl, Button *, EMPTYARG )
+
+
+IMPL_LINK_INLINE_START( SwIndexMarkDlg, PrevHdl, Button *, EMPTYARG )
+{
+ InsertUpdate();
+ pTOXMgr->PrevTOXMark();
+ UpdateDialog();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwIndexMarkDlg, PrevHdl, Button *, EMPTYARG )
+
+
+IMPL_LINK_INLINE_START( SwIndexMarkDlg, PrevSameHdl, Button *, EMPTYARG )
+{
+ InsertUpdate();
+ pTOXMgr->PrevTOXMark(sal_True);
+ UpdateDialog();
+
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwIndexMarkDlg, PrevSameHdl, Button *, EMPTYARG )
+
+
+IMPL_LINK( SwIndexMarkDlg, DelHdl, Button *, EMPTYARG )
+{
+ bDel = sal_True;
+ InsertUpdate();
+ bDel = sal_False;
+
+ if(pTOXMgr->GetCurTOXMark())
+ UpdateDialog();
+ else
+ {
+ CloseHdl(&aCancelBT);
+ SfxViewFrame::Current()->GetBindings().Invalidate(FN_EDIT_IDX_ENTRY_DLG);
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Dialoganzeige erneuern
+ --------------------------------------------------------------------*/
+
+
+void SwIndexMarkDlg::UpdateDialog()
+{
+ DBG_ASSERT(pSh && pTOXMgr, "Shell nicht da?")
+ SwTOXMark* pMark = pTOXMgr->GetCurTOXMark();
+ ASSERT(pMark, "Keine aktuelle Markierung");
+ if(!pMark)
+ return;
+
+ ViewShell::SetCareWin( GetParent() );
+
+ aOrgStr = pMark->GetText();
+ aEntryED.SetText(aOrgStr);
+
+ // Verzeichnistyp setzen
+ sal_Bool bLevelEnable = sal_True,
+ bKeyEnable = sal_False,
+ bKey2Enable = sal_False;
+
+ TOXTypes eCurType = pMark->GetTOXType()->GetType();
+ if(TOX_INDEX == eCurType)
+ {
+ bLevelEnable = sal_False;
+ bKeyEnable = sal_True;
+ bKey2Enable = 0 != pMark->GetPrimaryKey().Len();
+ aKeyDCB.SetText( pMark->GetPrimaryKey() );
+ aKey2DCB.SetText( pMark->GetSecondaryKey() );
+ aMainEntryCB.Check(pMark->IsMainEntry());
+ }
+ else if(TOX_CONTENT == eCurType || TOX_USER == eCurType)
+ {
+ aLevelED.SetValue(aLevelED.Normalize(pMark->GetLevel()));
+ }
+ aKeyFT.Enable(bKeyEnable);
+ aKeyDCB.Enable(bKeyEnable);
+ aLevelED.SetMax(MAXLEVEL);
+ aLevelFT.Show(bLevelEnable);
+ aLevelED.Show(bLevelEnable);
+ aMainEntryCB.Show(!bLevelEnable);
+ aKey2FT.Enable(bKey2Enable);
+ aKey2DCB.Enable(bKey2Enable);
+
+ // Verzeichnis-Typ setzen
+ aTypeDCB.SelectEntry(pMark->GetTOXType()->GetTypeName());
+
+ // Next - Prev - Buttons setzen
+ pSh->SttCrsrMove();
+ if( aPrevBT.IsVisible() )
+ {
+ const SwTOXMark* pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_PRV );
+ if( pMoveMark != pMark )
+ pSh->GotoTOXMark( *pMoveMark, TOX_NXT );
+ aPrevBT.Enable( pMoveMark != pMark );
+ pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_NXT );
+ if( pMoveMark != pMark )
+ pSh->GotoTOXMark( *pMoveMark, TOX_PRV );
+ aNextBT.Enable( pMoveMark != pMark );
+ }
+
+ if( aPrevSameBT.IsVisible() )
+ {
+ const SwTOXMark* pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_SAME_PRV );
+ if( pMoveMark != pMark )
+ pSh->GotoTOXMark( *pMoveMark, TOX_SAME_NXT );
+ aPrevSameBT.Enable( pMoveMark != pMark );
+ pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_SAME_NXT );
+ if( pMoveMark != pMark )
+ pSh->GotoTOXMark( *pMoveMark, TOX_SAME_PRV );
+ aNextSameBT.Enable( pMoveMark != pMark );
+ }
+
+ sal_Bool bEnable = !pSh->HasReadonlySel();
+ aOKBT.Enable( bEnable );
+ aDelBT.Enable( bEnable );
+ aEntryED.SetReadOnly( !bEnable );
+ aLevelED.SetReadOnly( !bEnable );
+ aKeyDCB.SetReadOnly( !bEnable );
+ aKey2DCB.SetReadOnly( !bEnable );
+
+ pSh->SelectTxtAttr( RES_TXTATR_TOXMARK, pMark->GetTxtTOXMark() );
+ // we need the point at the start of the attribut
+ pSh->SwapPam();
+
+ pSh->EndCrsrMove();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Enable Disable des 2. Schluessels
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwIndexMarkDlg, KeyDCBModifyHdl, ComboBox *, pBox )
+{
+ sal_Bool bEnable = pBox->GetText().Len() > 0;
+ if(!bEnable)
+ aKey2DCB.SetText(aEmptyStr);
+ aKey2DCB.Enable(bEnable);
+ aKey2FT.Enable(bEnable);
+ return 0;
+}
+
+/*-----------------25.02.94 21:19-------------------
+ dtor ueberladen
+--------------------------------------------------*/
+
+
+SwIndexMarkDlg::~SwIndexMarkDlg()
+{
+ delete pTOXMgr;
+ ViewShell::SetCareWin( 0 );
+}
+/* -----------------07.09.99 08:41-------------------
+
+ --------------------------------------------------*/
+void SwIndexMarkDlg::ReInitDlg(SwWrtShell& rWrtShell)
+{
+ pSh = &rWrtShell;
+ delete pTOXMgr;
+ pTOXMgr = new SwTOXMgr(pSh);
+ InitControls();
+}
+/* -----------------06.10.99 10:00-------------------
+
+ --------------------------------------------------*/
+SwIndexMarkFloatDlg::SwIndexMarkFloatDlg(SfxBindings* pBindings,
+ SfxChildWindow* pChild,
+ Window *pParent,
+ sal_Bool bNew) :
+ SfxModelessDialog(pBindings, pChild, pParent, SW_RES(DLG_INSIDXMARK)),
+ aDlg(this, bNew, ResId(WIN_DLG))
+{
+ FreeResource();
+}
+/* -----------------06.10.99 10:27-------------------
+
+ --------------------------------------------------*/
+void SwIndexMarkFloatDlg::Activate()
+{
+ SfxModelessDialog::Activate();
+ GetDlg().Activate();
+}
+/* -----------------06.10.99 10:35-------------------
+
+ --------------------------------------------------*/
+SwIndexMarkModalDlg::SwIndexMarkModalDlg(Window *pParent, SwWrtShell& rSh) :
+ SvxStandardDialog(pParent, SW_RES(DLG_EDIT_IDXMARK)),
+ aDlg(this, sal_False, ResId(WIN_DLG))
+{
+ FreeResource();
+ aDlg.ReInitDlg(rSh);
+}
+/* -----------------06.10.99 10:46-------------------
+
+ --------------------------------------------------*/
+void SwIndexMarkModalDlg::Apply()
+{
+ aDlg.Apply();
+}
+/* -----------------07.09.99 08:15-------------------
+
+ --------------------------------------------------*/
+SFX_IMPL_CHILDWINDOW(SwInsertIdxMarkWrapper, FN_INSERT_IDX_ENTRY_DLG)
+
+SwInsertIdxMarkWrapper::SwInsertIdxMarkWrapper( Window *pParentWindow,
+ sal_uInt16 nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo ) :
+ SfxChildWindow(pParentWindow, nId)
+{
+
+ pWindow = new SwIndexMarkFloatDlg(pBindings, this, pParentWindow );
+
+ SwIndexMarkDlg& rDlg = ((SwIndexMarkFloatDlg*)pWindow)->GetDlg();
+ SwWrtShell* pWrtShell = ::GetActiveWrtShell();
+ DBG_ASSERT(pWrtShell, "No shell?")
+ rDlg.ReInitDlg(*pWrtShell);
+
+ ((SwIndexMarkFloatDlg*)pWindow)->Initialize(pInfo);
+ eChildAlignment = SFX_ALIGN_NOALIGNMENT;
+}
+/* -----------------07.09.99 09:14-------------------
+
+ --------------------------------------------------*/
+SfxChildWinInfo SwInsertIdxMarkWrapper::GetInfo() const
+{
+ SfxChildWinInfo aInfo = SfxChildWindow::GetInfo();
+
+ return aInfo;
+}
+/* -----------------16.09.99 14:19-------------------
+
+ --------------------------------------------------*/
+class SwCreateAuthEntryDlg_Impl : public ModalDialog
+{
+ OKButton aOKBT;
+ CancelButton aCancelBT;
+ HelpButton aHelpBT;
+
+ GroupBox aEntriesGB;
+
+ FixedText* pFixedTexts[AUTH_FIELD_END];
+ ListBox* pTypeListBox;
+ ComboBox* pIdentifierBox;
+ Edit* pEdits[AUTH_FIELD_END];
+
+ Link aShortNameCheckLink;
+
+ SwWrtShell& rWrtSh;
+
+ sal_Bool m_bNewEntryMode;
+ sal_Bool m_bNameAllowed;
+
+ DECL_LINK(IdentifierHdl, ComboBox*);
+ DECL_LINK(ShortNameHdl, Edit*);
+ DECL_LINK(EnableHdl, ListBox* pBox);
+
+public:
+ SwCreateAuthEntryDlg_Impl(Window* pParent,
+ const String pFields[],
+ SwWrtShell& rSh,
+ sal_Bool bNewEntry,
+ sal_Bool bCreate);
+ ~SwCreateAuthEntryDlg_Impl();
+
+ String GetEntryText(ToxAuthorityField eField) const;
+
+ void SetCheckNameHdl(Link& rLink) {aShortNameCheckLink = rLink;}
+
+};
+/*-- 15.09.99 08:43:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+struct TextInfo
+{
+ sal_uInt16 nToxField;
+ sal_uInt16 nHelpId;
+};
+static const TextInfo aTextInfoArr[] =
+{
+ {AUTH_FIELD_IDENTIFIER, HID_AUTH_FIELD_IDENTIFIER },
+ {AUTH_FIELD_AUTHORITY_TYPE, HID_AUTH_FIELD_AUTHORITY_TYPE },
+ {AUTH_FIELD_AUTHOR, HID_AUTH_FIELD_AUTHOR },
+ {AUTH_FIELD_TITLE, HID_AUTH_FIELD_TITLE },
+ {AUTH_FIELD_YEAR, HID_AUTH_FIELD_YEAR },
+ {AUTH_FIELD_PUBLISHER, HID_AUTH_FIELD_PUBLISHER },
+ {AUTH_FIELD_ADDRESS, HID_AUTH_FIELD_ADDRESS },
+ {AUTH_FIELD_ISBN, HID_AUTH_FIELD_ISBN },
+ {AUTH_FIELD_CHAPTER, HID_AUTH_FIELD_CHAPTER },
+ {AUTH_FIELD_PAGES, HID_AUTH_FIELD_PAGES },
+ {AUTH_FIELD_EDITOR, HID_AUTH_FIELD_EDITOR },
+ {AUTH_FIELD_EDITION, HID_AUTH_FIELD_EDITION },
+ {AUTH_FIELD_BOOKTITLE, HID_AUTH_FIELD_BOOKTITLE },
+ {AUTH_FIELD_VOLUME, HID_AUTH_FIELD_VOLUME },
+ {AUTH_FIELD_HOWPUBLISHED, HID_AUTH_FIELD_HOWPUBLISHED },
+ {AUTH_FIELD_ORGANIZATIONS, HID_AUTH_FIELD_ORGANIZATIONS },
+ {AUTH_FIELD_INSTITUTION, HID_AUTH_FIELD_INSTITUTION },
+ {AUTH_FIELD_SCHOOL, HID_AUTH_FIELD_SCHOOL },
+ {AUTH_FIELD_REPORT_TYPE, HID_AUTH_FIELD_REPORT_TYPE },
+ {AUTH_FIELD_MONTH, HID_AUTH_FIELD_MONTH },
+ {AUTH_FIELD_JOURNAL, HID_AUTH_FIELD_JOURNAL },
+ {AUTH_FIELD_NUMBER, HID_AUTH_FIELD_NUMBER },
+ {AUTH_FIELD_SERIES, HID_AUTH_FIELD_SERIES },
+ {AUTH_FIELD_ANNOTE, HID_AUTH_FIELD_ANNOTE },
+ {AUTH_FIELD_NOTE, HID_AUTH_FIELD_NOTE },
+ {AUTH_FIELD_URL, HID_AUTH_FIELD_URL },
+ {AUTH_FIELD_CUSTOM1, HID_AUTH_FIELD_CUSTOM1 },
+ {AUTH_FIELD_CUSTOM2, HID_AUTH_FIELD_CUSTOM2 },
+ {AUTH_FIELD_CUSTOM3, HID_AUTH_FIELD_CUSTOM3 },
+ {AUTH_FIELD_CUSTOM4, HID_AUTH_FIELD_CUSTOM4 },
+ {AUTH_FIELD_CUSTOM5, HID_AUTH_FIELD_CUSTOM5 }
+};
+
+sal_Bool SwAuthMarkDlg::bIsFromComponent = sal_True;
+
+SwAuthMarkDlg::SwAuthMarkDlg( Window *pParent,
+ const ResId& rResId,
+ sal_Bool bNewDlg) :
+ Window(pParent, rResId),
+ aFromComponentRB( this, ResId(RB_FROMCOMPONENT )),
+ aFromDocContentRB( this, ResId(RB_FROMDOCCONTENT )),
+ aEntryFT( this, ResId(FT_ENTRY )),
+ aEntryED( this, ResId(ED_ENTRY )),
+ aEntryLB( this, ResId(LB_ENTRY )),
+ aAuthorFT( this, ResId(FT_AUTHOR )),
+ aAuthorFI( this, ResId(FI_AUTHOR )),
+ aTitleFT( this, ResId(FT_TITLE )),
+ aTitleFI( this, ResId(FI_TITLE )),
+ aEntryGB( this, ResId(GB_ENTRY )),
+ aOKBT( this, ResId(PB_OK )),
+ aCancelBT( this, ResId(PB_CANCEL )),
+ aHelpBT( this, ResId(PB_HELP )),
+ sChangeST( ResId(ST_CHANGE)),
+ aCreateEntryPB(this,ResId(PB_CREATEENTRY)),
+ aEditEntryPB(this, ResId(PB_EDITENTRY)),
+ bNewEntry(bNewDlg),
+ pSh(0),
+ bBibAccessInitialized(sal_False)
+{
+ SetStyle(GetStyle()|WB_DIALOGCONTROL);
+ FreeResource();
+
+ aFromComponentRB.SetHelpId(HID_AUTH_MARK_DLG_FROM_COMP_RB);
+ aFromDocContentRB.SetHelpId(HID_AUTH_MARK_DLG_FROM_DOC_RB );
+ aEntryED.SetHelpId(HID_AUTH_MARK_DLG_ID_LISTBOX );
+ aEntryLB.SetHelpId(HID_AUTH_MARK_DLG_ID_LISTBOX );
+
+ aFromComponentRB.Show(bNewEntry);
+ aFromDocContentRB.Show(bNewEntry);
+ aFromComponentRB.Check(bIsFromComponent);
+ aFromDocContentRB.Check(!bIsFromComponent);
+
+ aOKBT .SetHelpId(HID_INSERT_AUTH_MRK_OK );
+ aCancelBT .SetHelpId(HID_INSERT_AUTH_MRK_CLOSE);
+ aEntryED .SetHelpId(HID_INSERT_AUTH_MRK_ENTRY );
+ aCreateEntryPB .SetHelpId(HID_INSERT_AUTH_MRK_CREATE_ENTRY );
+ aEditEntryPB .SetHelpId(HID_INSERT_AUTH_MRK_EDIT_ENTRY );
+
+ aOKBT.SetClickHdl(LINK(this,SwAuthMarkDlg, InsertHdl));
+ aCancelBT.SetClickHdl(LINK(this,SwAuthMarkDlg, CloseHdl));
+ aCreateEntryPB.SetClickHdl(LINK(this,SwAuthMarkDlg, CreateEntryHdl));
+ aEditEntryPB.SetClickHdl(LINK(this,SwAuthMarkDlg, CreateEntryHdl));
+ aFromComponentRB.SetClickHdl(LINK(this,SwAuthMarkDlg, ChangeSourceHdl));
+ aFromDocContentRB.SetClickHdl(LINK(this,SwAuthMarkDlg, ChangeSourceHdl));
+
+ GetParent()->SetText(String(SW_RES(
+ bNewEntry ? STR_AUTHMRK_INSERT : STR_AUTHMRK_EDIT)));
+ aEntryED.Show(!bNewEntry);
+ aEntryLB.Show(bNewEntry);
+ if(!bNewEntry)
+ {
+ aOKBT.SetText(sChangeST);
+ }
+ else
+ {
+ aEntryLB.SetSelectHdl(LINK(this, SwAuthMarkDlg, CompEntryHdl));
+ }
+}
+/*-- 15.09.99 08:43:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwAuthMarkDlg::~SwAuthMarkDlg()
+{
+}
+/*-- 15.09.99 08:43:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwAuthMarkDlg::ReInitDlg(SwWrtShell& rWrtShell)
+{
+ pSh = &rWrtShell;
+ InitControls();
+}
+/* -----------------15.09.99 08:57-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK( SwAuthMarkDlg, CloseHdl, PushButton *, EMPTYARG )
+{
+ if(bNewEntry)
+ {
+ sal_uInt16 nSlot = FN_INSERT_AUTH_ENTRY_DLG;
+ SfxViewFrame::Current()->GetDispatcher()->Execute(nSlot,
+ SFX_CALLMODE_ASYNCHRON|SFX_CALLMODE_RECORD);
+ }
+ else
+ {
+ ((SwAuthMarkModalDlg*)GetParent())->EndDialog(RET_CANCEL);
+ }
+ return 0;
+}
+/* -----------------06.12.99 13:54-------------------
+
+ --------------------------------------------------*/
+String lcl_FindColumnEntry(const beans::PropertyValue* pFields, sal_Int32 nLen, const String& rColumnTitle)
+{
+ String sRet;
+ OUString uColumnTitle = rColumnTitle;
+ for(sal_uInt16 i = 0; i < nLen; i++)
+ {
+ if(pFields[i].Name == uColumnTitle &&
+ pFields[i].Value.getValueType() == ::getCppuType((const OUString*)0))
+
+ {
+ OUString uTmp;
+ pFields[i].Value >>= uTmp;
+ sRet = String(uTmp);
+ break;
+ }
+ }
+ return sRet;
+}
+/* -----------------------------07.12.99 15:39--------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK( SwAuthMarkDlg, CompEntryHdl, ListBox*, pBox)
+{
+ String sEntry(pBox->GetSelectEntry());
+ if(bIsFromComponent)
+ {
+ if(xBibAccess.is() && sEntry.Len())
+ {
+ OUString uEntry(sEntry);
+ if(xBibAccess->hasByName(uEntry))
+ {
+ uno::Any aEntry(xBibAccess->getByName(uEntry));
+ if(aEntry.getValueType() == ::getCppuType((uno::Sequence<beans::PropertyValue>*)0))
+
+ {
+ uno::Sequence<beans::PropertyValue> aFieldProps = *(uno::Sequence<beans::PropertyValue>*)aEntry.getValue();
+ const beans::PropertyValue* pProps = aFieldProps.getConstArray();
+ for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
+ {
+ m_sFields[i] = lcl_FindColumnEntry(
+ pProps, aFieldProps.getLength(), m_sColumnTitles[i]);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ if(sEntry.Len())
+ {
+ const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
+ pSh->GetFldType(RES_AUTHORITY, aEmptyStr);
+ const SwAuthEntry* pEntry = pFType ? pFType->GetEntryByIdentifier(sEntry) : 0;
+ for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
+ m_sFields[i] = pEntry ?
+ pEntry->GetAuthorField((ToxAuthorityField)i) : aEmptyStr;
+ }
+ }
+ if(!pBox->GetSelectEntry().Len())
+ {
+ for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
+ m_sFields[i] = aEmptyStr;
+ }
+ aAuthorFI.SetText(m_sFields[AUTH_FIELD_AUTHOR]);
+ aTitleFI.SetText(m_sFields[AUTH_FIELD_TITLE]);
+ return 0;
+}
+
+/* -----------------15.09.99 08:57-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK( SwAuthMarkDlg, InsertHdl, PushButton *, EMPTYARG )
+{
+ //insert or update the SwAuthorityField...
+ if(pSh)
+ {
+ sal_Bool bDifferent = sal_False;
+ DBG_ASSERT(m_sFields[AUTH_FIELD_IDENTIFIER].Len() , "No Id is set!")
+ DBG_ASSERT(m_sFields[AUTH_FIELD_AUTHORITY_TYPE].Len() , "No authority type is set!")
+ //check if the entry already exists with different content
+ const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
+ pSh->GetFldType(RES_AUTHORITY, aEmptyStr);
+ const SwAuthEntry* pEntry = pFType ?
+ pFType->GetEntryByIdentifier( m_sFields[AUTH_FIELD_IDENTIFIER])
+ : 0;
+ if(pEntry)
+ {
+ for(sal_uInt16 i = 0; i < AUTH_FIELD_END && !bDifferent; i++)
+ bDifferent |= m_sFields[i] != pEntry->GetAuthorField((ToxAuthorityField)i);
+ if(bDifferent)
+ {
+ QueryBox aQuery(this, SW_RES(DLG_CHANGE_AUTH_ENTRY));
+ if(RET_YES != aQuery.Execute())
+ return 0;
+ }
+ }
+
+ SwFldMgr aMgr(pSh);
+ String sFields;
+ for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
+ {
+ sFields += m_sFields[i];
+ sFields += TOX_STYLE_DELIMITER;
+ }
+ if(bNewEntry)
+ {
+ if(bDifferent)
+ {
+ SwAuthEntry aNewData;
+ for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
+ aNewData.SetAuthorField((ToxAuthorityField)i, m_sFields[i]);
+ pSh->ChangeAuthorityData(&aNewData);
+ }
+ aMgr.InsertFld( TYP_AUTHORITY, 0, sFields, aEmptyStr, 0 );
+ }
+ else if(aMgr.GetCurFld())
+ {
+ aMgr.UpdateCurFld(0, sFields, aEmptyStr);
+ }
+ }
+ if(!bNewEntry)
+ CloseHdl(0);
+ return 0;
+}
+/* -----------------17.09.99 13:06-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwAuthMarkDlg, CreateEntryHdl, PushButton*, pButton)
+{
+ sal_Bool bCreate = pButton == &aCreateEntryPB;
+ String sOldId = m_sCreatedEntry[0];
+ for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
+ m_sCreatedEntry[i] = bCreate ? aEmptyStr : m_sFields[i];
+ SwCreateAuthEntryDlg_Impl aDlg(pButton,
+ bCreate ? m_sCreatedEntry : m_sFields,
+ *pSh, bNewEntry, bCreate);
+ if(bNewEntry)
+ {
+ aDlg.SetCheckNameHdl(LINK(this, SwAuthMarkDlg, IsEntryAllowedHdl));
+ }
+ if(RET_OK == aDlg.Execute())
+ {
+ if(bCreate && sOldId.Len())
+ {
+ aEntryLB.RemoveEntry(sOldId);
+ }
+ for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
+ {
+ m_sFields[i] = aDlg.GetEntryText((ToxAuthorityField)i);
+ m_sCreatedEntry[i] = m_sFields[i];
+ }
+ if(bNewEntry && !aFromDocContentRB.IsChecked())
+ {
+ aFromDocContentRB.Check(sal_True);
+ ChangeSourceHdl(&aFromDocContentRB);
+ }
+ if(bCreate)
+ {
+ DBG_ASSERT(LISTBOX_ENTRY_NOTFOUND ==
+ aEntryLB.GetEntryPos(m_sFields[AUTH_FIELD_IDENTIFIER]),
+ "entry exists!")
+ aEntryLB.InsertEntry(m_sFields[AUTH_FIELD_IDENTIFIER]);
+ aEntryLB.SelectEntry(m_sFields[AUTH_FIELD_IDENTIFIER]);
+ }
+ aEntryED.SetText(m_sFields[AUTH_FIELD_IDENTIFIER]);
+ aAuthorFI.SetText(m_sFields[AUTH_FIELD_AUTHOR]);
+ aTitleFI.SetText(m_sFields[AUTH_FIELD_TITLE]);
+ }
+ return 0;
+}
+/* -----------------------------20.12.99 14:26--------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK(SwAuthMarkDlg, ChangeSourceHdl, RadioButton*, pButton)
+{
+ sal_Bool bFromComp = (pButton == &aFromComponentRB);
+ bIsFromComponent = bFromComp;
+ aCreateEntryPB.Enable(!bIsFromComponent);
+ aEntryLB.Clear();
+ if(bIsFromComponent)
+ {
+ if(!bBibAccessInitialized)
+ {
+ uno::Reference< lang::XMultiServiceFactory > xMSF = getProcessServiceFactory();
+ xBibAccess = uno::Reference< container::XNameAccess > (
+ xMSF->createInstance( C2U("com.sun.star.frame.Bibliography") ),
+ uno::UNO_QUERY );
+ uno::Reference< beans::XPropertySet > xPropSet(xBibAccess, uno::UNO_QUERY);
+ OUString uPropName(C2U("BibliographyDataFieldNames"));
+ if(xPropSet.is() && xPropSet->getPropertySetInfo()->hasPropertyByName(uPropName))
+ {
+ uno::Any aNames = xPropSet->getPropertyValue(uPropName);
+ if(aNames.getValueType() == ::getCppuType((uno::Sequence<beans::PropertyValue>*)0))
+ {
+ uno::Sequence<beans::PropertyValue> aSeq = *(uno::Sequence<beans::PropertyValue>*)aNames.getValue();
+ const beans::PropertyValue* pArr = aSeq.getConstArray();
+ for(sal_uInt16 i = 0; i < aSeq.getLength(); i++)
+ {
+ String sTitle = pArr[i].Name;
+ sal_Int16 nField;
+ pArr[i].Value >>= nField;
+ if(nField >= 0 && nField < AUTH_FIELD_END)
+ m_sColumnTitles[nField] = sTitle;
+ }
+ }
+ }
+ bBibAccessInitialized = sal_True;
+ }
+ if(xBibAccess.is())
+ {
+ uno::Sequence<OUString> aIdentifiers = xBibAccess->getElementNames();
+ const OUString* pNames = aIdentifiers.getConstArray();
+ for(sal_uInt16 i = 0; i < aIdentifiers.getLength(); i++)
+ {
+ aEntryLB.InsertEntry(pNames[i]);
+ }
+ }
+ }
+ else
+ {
+ const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
+ pSh->GetFldType(RES_AUTHORITY, aEmptyStr);
+ if(pFType)
+ {
+ SvStringsDtor aIds;
+ pFType->GetAllEntryIdentifiers( aIds );
+ for(sal_uInt16 n = 0; n < aIds.Count(); n++)
+ aEntryLB.InsertEntry(*aIds.GetObject(n));
+ }
+ if(m_sCreatedEntry[AUTH_FIELD_IDENTIFIER].Len())
+ aEntryLB.InsertEntry(m_sCreatedEntry[AUTH_FIELD_IDENTIFIER]);
+ }
+ aEntryLB.SelectEntryPos(0);
+ CompEntryHdl(&aEntryLB);
+ return 0;
+}
+/* -----------------------------20.12.99 15:11--------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK(SwAuthMarkDlg, IsEntryAllowedHdl, Edit*, pEdit)
+{
+ String sEntry = pEdit->GetText();
+ sal_Bool bAllowed = sal_False;
+ if(sEntry.Len())
+ {
+ if(aEntryLB.GetEntryPos(sEntry) != LISTBOX_ENTRY_NOTFOUND)
+ return 0;
+ else if(bIsFromComponent)
+ {
+ const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
+ pSh->GetFldType(RES_AUTHORITY, aEmptyStr);
+ bAllowed = !pFType || !pFType->GetEntryByIdentifier(sEntry);
+ }
+ else
+ {
+ bAllowed = !xBibAccess.is() || !xBibAccess->hasByName(sEntry);
+ }
+ }
+ return bAllowed;
+}
+/* -----------------21.09.99 14:19-------------------
+
+ --------------------------------------------------*/
+void SwAuthMarkDlg::InitControls()
+{
+ DBG_ASSERT(pSh, "Shell nicht da?")
+ SwField* pField = pSh->GetCurFld();
+ ASSERT(bNewEntry || pField, "Keine aktuelle Markierung");
+ if(bNewEntry)
+ {
+ ChangeSourceHdl(aFromComponentRB.IsChecked() ? &aFromComponentRB : &aFromDocContentRB);
+ aCreateEntryPB.Enable(!aFromComponentRB.IsChecked());
+ if(!aFromComponentRB.IsChecked() && m_sCreatedEntry[0].Len())
+ for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
+ m_sFields[i] = m_sCreatedEntry[i];
+ }
+ if(bNewEntry || !pField || pField->GetTyp()->Which() != RES_AUTHORITY)
+ return;
+
+ const SwAuthEntry* pEntry = ((SwAuthorityFieldType*)pField->GetTyp())->
+ GetEntryByIdentifier(((SwAuthorityField*)pField)->
+ GetFieldText(AUTH_FIELD_IDENTIFIER));
+
+ DBG_ASSERT(pEntry, "No authority entry found")
+ if(!pEntry)
+ return;
+ for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
+ m_sFields[i] = pEntry->GetAuthorField((ToxAuthorityField)i);
+
+ aEntryED.SetText(pEntry->GetAuthorField(AUTH_FIELD_IDENTIFIER));
+ aAuthorFI.SetText(pEntry->GetAuthorField(AUTH_FIELD_AUTHOR));
+ aTitleFI.SetText(pEntry->GetAuthorField(AUTH_FIELD_TITLE));
+
+}
+
+/* -----------------07.09.99 08:15-------------------
+
+ --------------------------------------------------*/
+SFX_IMPL_CHILDWINDOW(SwInsertAuthMarkWrapper, FN_INSERT_AUTH_ENTRY_DLG)
+
+SwInsertAuthMarkWrapper::SwInsertAuthMarkWrapper( Window *pParentWindow,
+ sal_uInt16 nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo ) :
+ SfxChildWindow(pParentWindow, nId)
+{
+
+ pWindow = new SwAuthMarkFloatDlg(pBindings, this, pParentWindow );
+
+ SwAuthMarkDlg& rDlg = ((SwAuthMarkFloatDlg*)pWindow)->GetDlg();
+ ((SwAuthMarkFloatDlg*)pWindow)->Initialize(pInfo);
+ SwWrtShell* pWrtShell = ::GetActiveWrtShell();
+ DBG_ASSERT(pWrtShell, "No shell?")
+ rDlg.ReInitDlg(*pWrtShell);
+
+ eChildAlignment = SFX_ALIGN_NOALIGNMENT;
+}
+/* -----------------07.09.99 09:14-------------------
+
+ --------------------------------------------------*/
+SfxChildWinInfo SwInsertAuthMarkWrapper::GetInfo() const
+{
+ SfxChildWinInfo aInfo = SfxChildWindow::GetInfo();
+ return aInfo;
+}
+/* -----------------19.10.99 11:16-------------------
+
+ --------------------------------------------------*/
+void SwInsertAuthMarkWrapper::ReInitDlg(SwWrtShell& rWrtShell)
+{
+ ((SwAuthMarkFloatDlg*)pWindow)->GetDlg().ReInitDlg(rWrtShell);
+}
+
+/* -----------------16.09.99 14:27-------------------
+
+ --------------------------------------------------*/
+SwCreateAuthEntryDlg_Impl::SwCreateAuthEntryDlg_Impl(Window* pParent,
+ const String pFields[],
+ SwWrtShell& rSh,
+ sal_Bool bNewEntry,
+ sal_Bool bCreate) :
+ ModalDialog(pParent, SW_RES(DLG_CREATE_AUTH_ENTRY)),
+ aOKBT(this, ResId(PB_OK )),
+ aCancelBT(this, ResId(PB_CANCEL )),
+ aHelpBT(this, ResId(PB_HELP )),
+ aEntriesGB(this, ResId(GB_ENTRIES )),
+ pIdentifierBox(0),
+ pTypeListBox(0),
+ rWrtSh(rSh),
+ m_bNewEntryMode(bNewEntry),
+ m_bNameAllowed(sal_True)
+{
+ FreeResource();
+ Point aGBPos(aEntriesGB.GetPosPixel());
+ Point aTL1(aGBPos);
+ Size aGBSz(aEntriesGB.GetSizePixel());
+ long nControlSpace = aGBSz.Width() / 4;
+ long nControlWidth = nControlSpace - 2 * aTL1.X();
+ aTL1.X() *= 2;
+ aTL1.Y() *= 5;
+ Point aTR1(aTL1);
+ aTR1.X() += nControlSpace;
+ Point aTL2(aTR1);
+ aTL2.X() += nControlSpace;
+ Point aTR2(aTL2);
+ aTR2.X() += nControlSpace;
+ Size aFixedTextSize(aGBSz);
+ Size aTmpSz(8,10);
+ aTmpSz = LogicToPixel(aTmpSz, MAP_APPFONT);
+ aFixedTextSize.Height() = aTmpSz.Width();
+ Size aEditSize(aFixedTextSize);
+ aFixedTextSize.Width() = nControlWidth + aGBPos.X();
+ aEditSize.Height() = aTmpSz.Height();
+ aEditSize.Width() = nControlWidth;
+
+ sal_uInt16 nOffset = aTmpSz.Width() * 3 / 2;
+ sal_Bool bLeft = sal_True;
+ for(sal_uInt16 nIndex = 0; nIndex < AUTH_FIELD_END; nIndex++)
+ {
+ const TextInfo aCurInfo = aTextInfoArr[nIndex];
+
+ pFixedTexts[nIndex] = new FixedText(this);
+
+ pFixedTexts[nIndex]->SetSizePixel(aFixedTextSize);
+ pFixedTexts[nIndex]->SetPosPixel(bLeft ? aTL1 : aTL2);
+ pFixedTexts[nIndex]->SetText(SW_RES(STR_AUTH_FIELD_START + aCurInfo.nToxField));
+ pFixedTexts[nIndex]->Show();
+ pEdits[nIndex] = 0;
+ if( AUTH_FIELD_AUTHORITY_TYPE == aCurInfo.nToxField )
+ {
+ pTypeListBox = new ListBox(this, WB_DROPDOWN|WB_BORDER);
+ for(sal_uInt16 j = 0; j < AUTH_TYPE_END; j++)
+ pTypeListBox->InsertEntry(String(SW_RES(STR_AUTH_TYPE_START + j)));
+ if(pFields[aCurInfo.nToxField].Len())
+ {
+ sal_uInt16 nIndexPos = pFields[aCurInfo.nToxField].ToInt32();
+ pTypeListBox->SelectEntryPos(nIndexPos);
+ }
+ Size aTmp(aEditSize);
+ aTmp.Height() *= 4;
+ pTypeListBox->SetSizePixel(aTmp);
+ pTypeListBox->SetPosPixel(bLeft ? aTR1 : aTR2);
+ pTypeListBox->Show();
+ pTypeListBox->SetSelectHdl(LINK(this, SwCreateAuthEntryDlg_Impl, EnableHdl));
+ pTypeListBox->SetHelpId(aCurInfo.nHelpId);
+
+ }
+ else if(AUTH_FIELD_IDENTIFIER == aCurInfo.nToxField && !m_bNewEntryMode)
+ {
+ pIdentifierBox = new ComboBox(this, WB_BORDER|WB_DROPDOWN);
+ pIdentifierBox->SetSelectHdl(LINK(this,
+ SwCreateAuthEntryDlg_Impl, IdentifierHdl));
+
+
+ const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
+ rSh.GetFldType(RES_AUTHORITY, aEmptyStr);
+ if(pFType)
+ {
+ SvStringsDtor aIds;
+ pFType->GetAllEntryIdentifiers( aIds );
+ for(sal_uInt16 n = 0; n < aIds.Count(); n++)
+ pIdentifierBox->InsertEntry(*aIds.GetObject(n));
+ }
+ pIdentifierBox->SetText(pFields[aCurInfo.nToxField]);
+ Size aTmp(aEditSize);
+ aTmp.Height() *= 4;
+ pIdentifierBox->SetSizePixel(aTmp);
+ pIdentifierBox->SetPosPixel(bLeft ? aTR1 : aTR2);
+ pIdentifierBox->Show();
+ pIdentifierBox->SetHelpId(aCurInfo.nHelpId);
+ }
+ else
+ {
+ pEdits[nIndex] = new Edit(this, WB_BORDER);
+ pEdits[nIndex]->SetSizePixel(aEditSize);
+ pEdits[nIndex]->SetPosPixel(bLeft ? aTR1 : aTR2);
+ pEdits[nIndex]->SetText(pFields[aCurInfo.nToxField]);
+ pEdits[nIndex]->Show();
+ pEdits[nIndex]->SetHelpId(aCurInfo.nHelpId);
+ if(AUTH_FIELD_IDENTIFIER == aCurInfo.nToxField)
+ {
+ pEdits[nIndex]->SetModifyHdl(LINK(this, SwCreateAuthEntryDlg_Impl, ShortNameHdl));
+ m_bNameAllowed = pFields[nIndex].Len() > 0;
+ if(!bCreate)
+ {
+ pFixedTexts[nIndex]->Enable(sal_False);
+ pEdits[nIndex]->Enable(sal_False);
+ }
+ }
+ }
+ if(bLeft)
+ {
+ aTL1.Y() += nOffset;
+ aTR1.Y() += nOffset;
+ }
+ else
+ {
+ aTL2.Y() += nOffset;
+ aTR2.Y() += nOffset;
+ }
+ bLeft = !bLeft;
+ }
+ EnableHdl(pTypeListBox);
+
+ long nHeightDiff = - aGBSz.Height();
+ aGBSz.Height() = aTL1.Y();
+ nHeightDiff += aGBSz.Height();
+ aEntriesGB.SetSizePixel(aGBSz);
+ Size aDlgSize(GetSizePixel());
+ aDlgSize.Height() += nHeightDiff;
+ SetSizePixel(aDlgSize);
+
+}
+/* -----------------16.09.99 14:47-------------------
+
+ --------------------------------------------------*/
+SwCreateAuthEntryDlg_Impl::~SwCreateAuthEntryDlg_Impl()
+{
+ for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
+ {
+ delete pFixedTexts[i];
+ delete pEdits[i];
+ }
+ delete pTypeListBox;
+ delete pIdentifierBox;
+}
+/* -----------------16.09.99 14:27-------------------
+
+ --------------------------------------------------*/
+String SwCreateAuthEntryDlg_Impl::GetEntryText(ToxAuthorityField eField) const
+{
+ String sRet;
+ if( AUTH_FIELD_AUTHORITY_TYPE == eField )
+ {
+ DBG_ASSERT(pTypeListBox, "No ListBox")
+ sRet = pTypeListBox->GetSelectEntryPos();
+ }
+ else if( AUTH_FIELD_IDENTIFIER == eField && !m_bNewEntryMode)
+ {
+ DBG_ASSERT(pIdentifierBox, "No ComboBox")
+ sRet = pIdentifierBox->GetText();
+ }
+ else
+ {
+ for(sal_uInt16 nIndex = 0; nIndex < AUTH_FIELD_END; nIndex++)
+ {
+ const TextInfo aCurInfo = aTextInfoArr[nIndex];
+ if(aCurInfo.nToxField == eField)
+ {
+ sRet = pEdits[nIndex]->GetText();
+ break;
+ }
+ }
+ }
+ return sRet;
+}
+/* -----------------21.09.99 13:54-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK(SwCreateAuthEntryDlg_Impl, IdentifierHdl, ComboBox*, pBox)
+{
+ const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
+ rWrtSh.GetFldType(RES_AUTHORITY, aEmptyStr);
+ if(pFType)
+ {
+ const SwAuthEntry* pEntry = pFType->GetEntryByIdentifier(
+ pBox->GetText());
+ if(pEntry)
+ {
+ for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
+ {
+ if(AUTH_FIELD_IDENTIFIER == i)
+ continue;
+ if(AUTH_FIELD_AUTHORITY_TYPE == i)
+ pTypeListBox->SelectEntry(
+ pEntry->GetAuthorField((ToxAuthorityField)i));
+ else
+ pEdits[i]->SetText(
+ pEntry->GetAuthorField((ToxAuthorityField)i));
+ }
+ }
+ }
+ return 0;
+}
+/* -----------------------------20.12.99 15:07--------------------------------
+
+ ---------------------------------------------------------------------------*/
+
+IMPL_LINK(SwCreateAuthEntryDlg_Impl, ShortNameHdl, Edit*, pEdit)
+{
+ if(aShortNameCheckLink.IsSet())
+ {
+ sal_Bool bEnable = 0 != aShortNameCheckLink.Call(pEdit);
+ m_bNameAllowed |= bEnable;
+ aOKBT.Enable(pTypeListBox->GetSelectEntryCount() && bEnable);
+ }
+ return 0;
+}
+/* -----------------------------20.12.99 15:54--------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK(SwCreateAuthEntryDlg_Impl, EnableHdl, ListBox*, pBox)
+{
+ aOKBT.Enable(m_bNameAllowed && pBox->GetSelectEntryCount());
+ return 0;
+};
+/* -----------------06.10.99 10:00-------------------
+
+ --------------------------------------------------*/
+SwAuthMarkFloatDlg::SwAuthMarkFloatDlg(SfxBindings* pBindings,
+ SfxChildWindow* pChild,
+ Window *pParent,
+ sal_Bool bNew) :
+ SfxModelessDialog(pBindings, pChild, pParent, SW_RES(DLG_INSAUTHMARK)),
+ aDlg(this, ResId(WIN_DLG), bNew)
+{
+ FreeResource();
+}
+/* -----------------06.10.99 10:27-------------------
+
+ --------------------------------------------------*/
+void SwAuthMarkFloatDlg::Activate()
+{
+ SfxModelessDialog::Activate();
+ GetDlg().Activate();
+}
+/* -----------------06.10.99 10:35-------------------
+
+ --------------------------------------------------*/
+SwAuthMarkModalDlg::SwAuthMarkModalDlg(Window *pParent, SwWrtShell& rSh) :
+ SvxStandardDialog(pParent, SW_RES(DLG_EDIT_AUTHMARK)),
+ aDlg(this, ResId(WIN_DLG), sal_False)
+{
+ FreeResource();
+ aDlg.ReInitDlg(rSh);
+}
+/* -----------------06.10.99 10:46-------------------
+
+ --------------------------------------------------*/
+void SwAuthMarkModalDlg::Apply()
+{
+ aDlg.InsertHdl(0);
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.105 2000/09/18 16:05:53 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.104 2000/09/07 15:59:25 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.103 2000/07/03 08:27:55 os
+ #72742# resource warnings corrected
+
+ Revision 1.102 2000/06/27 19:42:06 jp
+ Bug #70447#: select the current TOXMark if the EditDialog is open
+
+ Revision 1.101 2000/05/26 07:21:31 os
+ old SW Basic API Slots removed
+
+ Revision 1.100 2000/05/16 17:29:33 jp
+ Changes for Unicode
+
+ Revision 1.99 2000/05/16 09:15:13 os
+ project usr removed
+
+ Revision 1.98 2000/04/18 15:32:23 os
+ UNICODE
+
+ Revision 1.97 2000/04/04 15:21:07 os
+ #74729# Author-Title assignment corrected
+
+ Revision 1.96 2000/03/30 13:19:03 os
+ UNO III
+
+ Revision 1.95 2000/03/23 07:42:45 os
+ UNO III
+
+ Revision 1.94 2000/02/18 14:36:57 kz
+ #65293# include PropertyValue
+
+ Revision 1.93 2000/02/11 14:55:46 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.92 2000/01/31 10:48:04 os
+ #71961# TOX_INDEX as default
+
+ Revision 1.91 2000/01/18 14:44:14 os
+ #72050# base class changed
+
+ Revision 1.90 2000/01/18 09:15:45 os
+ #72010# type is numeric
+
+ Revision 1.89 2000/01/17 12:02:19 os
+ #70703# apply to all similar texts: search options case sensitive and word only
+
+ Revision 1.88 1999/12/27 12:22:18 os
+ #71307# HelpIds added
+
+ Revision 1.87 1999/12/21 13:47:39 os
+ #70508# select source for bibliography entries
+
+ Revision 1.86 1999/12/14 10:18:42 os
+ #70819# new index button now an ImageButton at a better position
+
+ Revision 1.85 1999/12/07 16:37:15 os
+ #70508# get data from bib component
+
+ Revision 1.84 1999/11/30 13:47:52 os
+ #68736# HelpId for insert index mark dialogs
+
+ Revision 1.83 1999/11/25 08:56:01 os
+ prevent from changing content in readonly
+
+ Revision 1.82 1999/10/19 09:32:39 os
+ casts corrected
+
+ Revision 1.81 1999/10/18 11:42:53 os
+ Helpids for Modeless idx entry dialogs
+
+ Revision 1.80 1999/10/13 14:14:59 os
+ create new user index via button
+
+ Revision 1.79 1999/10/11 09:00:21 os
+ AuthorityField(Type):Import/Export interfaces
+
+ Revision 1.78 1999/10/06 12:11:23 os
+ edit tox entry dialogs now modal
+
+ Revision 1.77 1999/09/21 13:43:20 os
+ edit Authority fields
+
+ Revision 1.76 1999/09/20 09:36:38 os
+ new Dialog: SwCreateAuthEntryDlg_Impl
+
+ Revision 1.75 1999/09/15 13:57:24 os
+ dialog for authorities
+
+ Revision 1.74 1999/09/14 13:29:37 os
+ call ModifyHdl if entry text is changed
+
+ Revision 1.73 1999/09/07 13:55:04 os
+ Insert/EditIndexEntry as FloatingWindow
+
+ Revision 1.72 1999/08/24 08:41:10 OS
+ level count of user indexes now on MAXLEVEL
+
+
+ Rev 1.71 24 Aug 1999 10:41:10 OS
+ level count of user indexes now on MAXLEVEL
+
+ Rev 1.70 23 Aug 1999 10:24:30 OS
+ extended indexes: InsertTOXMark simplified; main entry in indexes
+
+ Rev 1.69 18 Jun 1999 11:53:56 OS
+ #66778# empty alternative texts are not allowed
+
+ Rev 1.68 10 Jun 1999 13:02:04 OS
+ restore selection
+
+ Rev 1.67 28 Apr 1999 12:42:54 OS
+ #65478# Level fuer Benutzerverzeichnis erlauben
+
+ Rev 1.66 21 Jan 1999 09:15:06 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.65 20 Jan 1999 11:35:28 OS
+ #60881# Verzeichniseintraege mehrfach einf?gen
+
+ Rev 1.64 10 Feb 1998 07:49:00 OS
+ Level nur fuer Inhaltsverzeichnisse #47169#
+
+ Rev 1.63 25 Nov 1997 10:51:02 MA
+ includes
+
+ Rev 1.62 05 Nov 1997 12:42:56 OS
+ richtiges Flag uebergeben #43766#
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/index/idxmrk.hrc b/sw/source/ui/index/idxmrk.hrc
new file mode 100644
index 000000000000..184d1f0816fd
--- /dev/null
+++ b/sw/source/ui/index/idxmrk.hrc
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: idxmrk.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 BT_OK 100
+#define BT_CANCEL 101
+#define BT_NXT 102
+#define BT_NXTSAME 103
+#define BT_PREV 104
+#define BT_PREVSAME 105
+#define BT_DEL 106
+#define BT_HELP 107
+#define LBL_INDEX 1
+#define DCB_INDEX 2
+#define LBL_ENTRY 3
+#define SL_ENTRY 4
+#define LBL_KEY 5
+#define DCB_KEY 6
+#define LBL_LEVEL 7
+#define SL_LEVEL 8
+#define GB_INDEX 10
+#define LBL_KEY2 11
+#define DCB_KEY2 12
+#define CB_APPLY_TO_ALL 13
+#define CB_MAIN_ENTRY 14
+#define FT_ENTRY 20
+#define ED_ENTRY 21
+#define PB_OK 22
+#define PB_CANCEL 23
+#define PB_HELP 24
+#define GB_ENTRIES 25
+#define PB_CREATEENTRY 26
+#define GB_ENTRY 27
+#define FT_TITLE 28
+#define FI_TITLE 29
+#define FT_AUTHOR 30
+#define FI_AUTHOR 31
+#define ST_CHANGE 32
+#define WIN_DLG 33
+#define BT_NEW 34
+#define GB_NAME 37
+#define FT_NAME 38
+#define ED_NAME 39
+#define LB_ENTRY 40
+#define RB_FROMCOMPONENT 41
+#define RB_FROMDOCCONTENT 42
+#define PB_EDITENTRY 43
+#define CB_CASESENSITIVE 44
+#define CB_WORDONLY 45
diff --git a/sw/source/ui/index/idxmrk.src b/sw/source/ui/index/idxmrk.src
new file mode 100644
index 000000000000..cc373178939b
--- /dev/null
+++ b/sw/source/ui/index/idxmrk.src
@@ -0,0 +1,1236 @@
+/*************************************************************************
+ *
+ * $RCSfile: idxmrk.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "index.hrc"
+#include "idxmrk.hrc"
+#include "helpid.h"
+#include "cmdid.h"
+
+#define IDX_DIALOG_WINDOW \
+ Window WIN_DLG \
+ { \
+ Pos = MAP_APPFONT ( 0 , 0 ) ; \
+ Size = MAP_APPFONT ( 218 , WINDOW_HEIGHT ) ; \
+ OKButton BT_OK \
+ { \
+ Pos = MAP_APPFONT ( 162 , 6 ) ; \
+ Size = MAP_APPFONT ( 50 , 14 ) ; \
+ TabStop = TRUE ; \
+ DefButton = TRUE ; \
+ Text = "Einfügen"; \
+ Text[English] = "Insert"; \
+ Text[ english_us ] = "Insert";\
+ Text[ portuguese ] = "Inserir";\
+ Text[ russian ] = "Âñòàâèòü";\
+ Text[ greek ] = "ÐñïóèÞêç";\
+ Text[ dutch ] = "Invoegen";\
+ Text[ french ] = "Insérer";\
+ Text[ spanish ] = "Insertar";\
+ Text[ italian ] = "Inserisci";\
+ Text[ danish ] = "Indsæt";\
+ Text[ swedish ] = "Infoga";\
+ Text[ polish ] = "Wstaw";\
+ Text[ portuguese_brazilian ] = "Insert";\
+ Text[ japanese ] = "‘}“ü";\
+ Text[ korean ] = "»ðÀÔ";\
+ Text[ chinese_simplified ] = "²åÈë";\
+ Text[ chinese_traditional ] = "´¡¤J";\
+ Text[ arabic ] = "ÅÏÑÇÌ";\
+ Text[ turkish ] = "Ekle";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ CancelButton BT_CANCEL \
+ { \
+ Pos = MAP_APPFONT ( 162 , 23 ) ; \
+ Size = MAP_APPFONT ( 50 , 14 ) ; \
+ Text = "Schließen"; \
+ Text[English] = "Close"; \
+ Text[ english_us ] = "Close";\
+ Text[ portuguese ] = "Fechar";\
+ Text[ russian ] = "Çàêðûòü";\
+ Text[ greek ] = "Êëåßóéìï";\
+ Text[ dutch ] = "Sluiten";\
+ Text[ french ] = "Fermer";\
+ Text[ spanish ] = "Cerrar";\
+ Text[ italian ] = "Chiudi";\
+ Text[ danish ] = "Luk";\
+ Text[ swedish ] = "Stäng";\
+ Text[ polish ] = "Zamknij";\
+ Text[ portuguese_brazilian ] = "Close";\
+ Text[ japanese ] = "•Â‚¶‚é";\
+ Text[ korean ] = "´Ý±â";\
+ Text[ chinese_simplified ] = "¹Ø±Õ";\
+ Text[ chinese_traditional ] = "Ãö³¬";\
+ Text[ arabic ] = "ÅÛáÇÞ";\
+ Text[ turkish ] = "Kapat";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ HelpButton BT_HELP \
+ { \
+ Pos = MAP_APPFONT ( 162 , 43 ) ; \
+ Size = MAP_APPFONT ( 50 , 14 ) ; \
+ }; \
+ PushButton BT_DEL \
+ { \
+ Pos = MAP_APPFONT ( 162 , 63 ) ; \
+ Size = MAP_APPFONT ( 50 , 14 ) ; \
+ 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" ; \
+ 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 ] = " ";\
+ }; \
+ ListBox DCB_INDEX \
+ { \
+ Pos = MAP_APPFONT ( 56 , 14) ; \
+ Size = MAP_APPFONT ( DCB_INDEX_WIDTH , 56 ) ; \
+ TabStop = TRUE ; \
+ DropDown = TRUE ; \
+ }; \
+ ImageButton BT_NEW \
+ { \
+ Pos = MAP_APPFONT ( 137 , 14 ) ; \
+ Size = MAP_APPFONT ( 12 , 12 ) ; \
+ QuickHelpText = "Neues benutzerdefiniertes Verzeichnis"; \
+ QuickHelpText[English] = "New user defined index"; \
+ QuickHelpText[ english_us ] = "New user-defined index";\
+ QuickHelpText[ portuguese ] = "New user defined index";\
+ QuickHelpText[ russian ] = "Íîâûé óêàçàòåëü ïîëüçîâàòåëÿ";\
+ QuickHelpText[ greek ] = "Äçìéïõñãßá åõñåôçñßïõ ïñéóìÝíï áðü ôïí ÷ñÞóôç";\
+ QuickHelpText[ dutch ] = "Nieuwe gebruikergedefinieerde index";\
+ QuickHelpText[ french ] = "Definir un nouvel index personnalisé";\
+ QuickHelpText[ spanish ] = "New user defined index";\
+ QuickHelpText[ italian ] = "Nuovo indice personalizzato";\
+ QuickHelpText[ danish ] = "Nyt brugerdefineret indeks";\
+ QuickHelpText[ swedish ] = "Ny användardefinierad förteckning";\
+ QuickHelpText[ polish ] = "Nowy indeks u¿ytkownika";\
+ QuickHelpText[ portuguese_brazilian ] = "New user defined index";\
+ QuickHelpText[ japanese ] = "V‚µ‚¢Õ°»Þ°Ý’è‚Ìõˆø";\
+ QuickHelpText[ korean ] = "New user defined index";\
+ QuickHelpText[ chinese_simplified ] = "New user defined index";\
+ QuickHelpText[ chinese_traditional ] = "·s¼W¦Û­q¥Ø¿ý";\
+ QuickHelpText[ arabic ] = "ÝåÑÓ ÌÏíÏ ãÚÑÝ ãä ÞÈá ÇáãÓÊÎÏã";\
+ }; \
+ ImageButton BT_PREVSAME \
+ { \
+ Hide = TRUE ; \
+ Pos = MAP_APPFONT ( 162 , 80 ) ; \
+ Size = MAP_APPFONT ( 24 , 14 ) ; \
+ TabStop = TRUE ; \
+ SYMBOL = IMAGEBUTTON_FIRST ; \
+ }; \
+ ImageButton BT_PREV \
+ { \
+ Hide = TRUE ; \
+ Pos = MAP_APPFONT ( 162 , 97 ) ; \
+ Size = MAP_APPFONT ( 24 , 14 ) ; \
+ TabStop = TRUE ; \
+ SYMBOL = IMAGEBUTTON_PREV ; \
+ }; \
+ ImageButton BT_NXT \
+ { \
+ Hide = TRUE ; \
+ Pos = MAP_APPFONT ( 188 , 97 ) ; \
+ Size = MAP_APPFONT ( 24 , 14 ) ; \
+ TabStop = TRUE ; \
+ SYMBOL = IMAGEBUTTON_NEXT ; \
+ }; \
+ ImageButton BT_NXTSAME \
+ { \
+ Hide = TRUE ; \
+ Pos = MAP_APPFONT ( 188 , 80 ) ; \
+ Size = MAP_APPFONT ( 24 , 14 ) ; \
+ TabStop = TRUE ; \
+ SYMBOL = IMAGEBUTTON_LAST ; \
+ }; \
+ GroupBox GB_INDEX \
+ { \
+ Pos = MAP_APPFONT ( 6 , 3 ) ; \
+ Size = MAP_APPFONT ( 151 , GB_HEIGHT ) ; \
+ Text = "Markierung" ; \
+ Text [ ENGLISH ] = "Mark" ; \
+ Text [ norwegian ] = "Merk" ; \
+ Text [ italian ] = "Contrassegna" ; \
+ Text [ portuguese_brazilian ] = "Marca" ; \
+ Text [ portuguese ] = "Selecção" ; \
+ Text [ finnish ] = "Merkintä" ; \
+ Text [ danish ] = "Markering" ; \
+ Text [ french ] = "Marque" ; \
+ Text [ swedish ] = "Markering" ; \
+ Text [ dutch ] = "Markering" ; \
+ Text [ spanish ] = "Marca" ; \
+ Text [ english_us ] = "Selection" ; \
+ Text[ chinese_simplified ] = "񈬀"; \
+ Text[ russian ] = "Âûäåëåíèå"; \
+ Text[ polish ] = "Zaznaczenie"; \
+ Text[ japanese ] = "‘I‘ð"; \
+ Text[ chinese_traditional ] = "¼Ð°O"; \
+ Text[ arabic ] = "ÇáÊÍÏíÏ"; \
+ Text[ greek ] = "ÓÞìáíóç";\
+ Text[ korean ] = "¼±ÅÃ";\
+ Text[ turkish ] = "Seçim";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ FixedText LBL_INDEX \
+ { \
+ Pos = MAP_APPFONT ( 12 , 16 ) ; \
+ Size = MAP_APPFONT ( 40 , 10 ) ; \
+ Text = "~Verzeichnis" ; \
+ Text [ ENGLISH ] = "~Index" ; \
+ Text [ norwegian ] = "~Index" ; \
+ Text [ italian ] = "Indice" ; \
+ Text [ portuguese_brazilian ] = "~Índice" ; \
+ Text [ portuguese ] = "~Índice" ; \
+ Text [ finnish ] = "~Hakemisto" ; \
+ Text [ danish ] = "Indeks" ; \
+ Text [ french ] = "~Type" ; \
+ Text [ swedish ] = "Fö~rteckning" ; \
+ Text [ dutch ] = "~Index" ; \
+ Text [ spanish ] = "Ín~dice" ; \
+ Text [ english_us ] = "~Index" ; \
+ Left = TRUE ; \
+ Text[ chinese_simplified ] = "Ŀ¼(~I)"; \
+ Text[ russian ] = "Óêàçàòåëü"; \
+ Text[ polish ] = "Indeks"; \
+ Text[ japanese ] = "õˆø(~I)"; \
+ Text[ chinese_traditional ] = "¥Ø¿ý(~I)"; \
+ Text[ arabic ] = "ÝåÑÓ"; \
+ Text[ greek ] = "ÅõñåôÞñéï";\
+ Text[ korean ] = "»öÀÎ(~I)";\
+ Text[ language_user1 ] = " ";\
+ Text[ turkish ] = "~Dizin";\
+ }; \
+ Edit SL_ENTRY \
+ { \
+ Border = TRUE ; \
+ Pos = MAP_APPFONT ( 56 , 29 ) ; \
+ Size = MAP_APPFONT ( 94 , 12 ) ; \
+ TabStop = TRUE ; \
+ Left = TRUE ; \
+ }; \
+ FixedText LBL_ENTRY \
+ { \
+ Pos = MAP_APPFONT ( 12 , 31 ) ; \
+ Size = MAP_APPFONT ( 27 , 8 ) ; \
+ Text = "~Eintrag" ; \
+ Text [ ENGLISH ] = "~Entry" ; \
+ Text [ norwegian ] = "~Inngang" ; \
+ Text [ italian ] = "Voc~e" ; \
+ Text [ portuguese_brazilian ] = "~Entrada" ; \
+ Text [ portuguese ] = "E~ntrada" ; \
+ Text [ finnish ] = "~Hakusana" ; \
+ Text [ danish ] = "Element" ; \
+ Text [ french ] = "~Entrée" ; \
+ Text [ swedish ] = "~Post" ; \
+ Text [ dutch ] = "~Item" ; \
+ Text [ spanish ] = "~Entrada" ; \
+ Text [ english_us ] = "~Entry" ; \
+ Left = TRUE ; \
+ Text[ chinese_simplified ] = "ÌõÄ¿(~E)"; \
+ Text[ russian ] = "Ýëåìåíò"; \
+ Text[ polish ] = "Wpis"; \
+ Text[ japanese ] = "€–Ú(~E)"; \
+ Text[ chinese_traditional ] = "¶µ¥Ø(~E)"; \
+ Text[ arabic ] = "ÇáÅÏÎÇá"; \
+ Text[ greek ] = "ÅããñáöÞ";\
+ Text[ korean ] = "Ç׸ñ(~E)";\
+ Text[ turkish ] = "~Giriþ";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ FixedText LBL_KEY \
+ { \
+ Disable = TRUE ; \
+ Pos = MAP_APPFONT ( 12 , 46 ) ; \
+ Size = MAP_APPFONT ( 42 , 8 ) ; \
+ Text = "~1. Schlüssel" ; \
+ Text [ ENGLISH ] = "~1. Key" ; \
+ Text [ norwegian ] = "~1. Nøkkel" ; \
+ Text [ italian ] = "Chiave ~1" ; \
+ Text [ portuguese_brazilian ] = "~1. Tecla" ; \
+ Text [ portuguese ] = "~1ª chave" ; \
+ Text [ finnish ] = "~1. avain" ; \
+ Text [ danish ] = "1. nøgle" ; \
+ Text [ french ] = "~1re clé" ; \
+ Text [ swedish ] = "Sorteringskod ~1" ; \
+ Text [ dutch ] = "~1e sleutel" ; \
+ Text [ spanish ] = "~1ra clave" ; \
+ Text [ english_us ] = "~1st key" ; \
+ Left = TRUE ; \
+ Text[ chinese_simplified ] = "µÚÒ»¸ö¹Ø¼ü×Ö"; \
+ Text[ russian ] = "1-ûé êëþ÷"; \
+ Text[ polish ] = "Pierwszy klucz"; \
+ Text[ japanese ] = "·° 1"; \
+ Text[ chinese_traditional ] = "²Ä¤@­ÓÃöÁä¦r(~K)"; \
+ Text[ arabic ] = "ÇáãÝÊÇÍ ÇáÃæá"; \
+ Text[ greek ] = "~1ï êëåéäß";\
+ Text[ korean ] = "1¹ø° Å°";\
+ Text[ turkish ] = "~1. Anahtar";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ ComboBox DCB_KEY \
+ { \
+ Disable = TRUE ; \
+ Pos = MAP_APPFONT ( 56 , 44 ) ; \
+ Size = MAP_APPFONT ( 94 , 56 ) ; \
+ TabStop = TRUE ; \
+ DropDown = TRUE ; \
+ }; \
+ FixedText LBL_KEY2 \
+ { \
+ Disable = TRUE ; \
+ Pos = MAP_APPFONT ( 12 , 62 ) ; \
+ Size = MAP_APPFONT ( 42 , 8 ) ; \
+ Text = "~2. Schlüssel" ; \
+ Text [ ENGLISH ] = "~2. Key" ; \
+ Text [ norwegian ] = "~2. Nøkkel" ; \
+ Text [ italian ] = "Chiave ~2" ; \
+ Text [ portuguese_brazilian ] = "~2. Tecla" ; \
+ Text [ portuguese ] = "~2ª chave" ; \
+ Text [ finnish ] = "~2. avain" ; \
+ Text [ danish ] = "2. nøgle" ; \
+ Text [ french ] = "~2ème clé" ; \
+ Text [ swedish ] = "Sorteringskod ~2" ; \
+ Text [ dutch ] = "~2e sleutel" ; \
+ Text [ spanish ] = "~2da clave" ; \
+ Text [ english_us ] = "~2nd key" ; \
+ Left = TRUE ; \
+ Text[ chinese_simplified ] = "µÚ¶þ¸ö¹Ø¼ü×Ö"; \
+ Text[ russian ] = "2-îé êëþ÷"; \
+ Text[ polish ] = "Drugi klucz"; \
+ Text[ japanese ] = "·° 2"; \
+ Text[ chinese_traditional ] = "²Ä¤G­ÓÃöÁä¦r(~E)"; \
+ Text[ arabic ] = "ÇáãÝÊÇÍ ÇáËÇäí"; \
+ Text[ greek ] = "~2ï Êëåéäß";\
+ Text[ korean ] = "2¹ø° Å°";\
+ Text[ turkish ] = "~2. Anahtar";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ ComboBox DCB_KEY2 \
+ { \
+ Disable = TRUE ; \
+ Pos = MAP_APPFONT ( 56 , 59 ) ; \
+ Size = MAP_APPFONT ( 94 , 56 ) ; \
+ TabStop = TRUE ; \
+ DropDown = TRUE ; \
+ }; \
+ FixedText LBL_LEVEL \
+ { \
+ Pos = MAP_APPFONT ( 12 , 76 ) ; \
+ Size = MAP_APPFONT ( 21 , 8 ) ; \
+ Text = "St~ufe" ; \
+ Text [ ENGLISH ] = "~Level" ; \
+ Text [ norwegian ] = "~Nivå" ; \
+ Text [ italian ] = "Livello" ; \
+ Text [ portuguese_brazilian ] = "~Nível" ; \
+ Text [ portuguese ] = "~Nível" ; \
+ Text [ finnish ] = "~Taso" ; \
+ Text [ danish ] = "Niveau" ; \
+ Text [ french ] = "~Niveau" ; \
+ Text [ swedish ] = "Ni~vå" ; \
+ Text [ dutch ] = "~Niveau" ; \
+ Text [ spanish ] = "~Nivel" ; \
+ Text [ english_us ] = "~Level" ; \
+ Left = TRUE ; \
+ Text[ chinese_simplified ] = "¼¶(~L)"; \
+ Text[ russian ] = "Óðîâåíü"; \
+ Text[ polish ] = "Poziom"; \
+ Text[ japanese ] = "ÚÍÞÙ(~L)"; \
+ Text[ chinese_traditional ] = "¯Å(~L)"; \
+ Text[ arabic ] = "ÇáãÓÊæì"; \
+ Text[ greek ] = "Åðßðåäï";\
+ Text[ korean ] = "¼öÁØ(~L)";\
+ Text[ turkish ] = "D~üzey";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ NumericField SL_LEVEL \
+ { \
+ Border = TRUE ; \
+ Pos = MAP_APPFONT ( 56 , 74 ) ; \
+ Size = MAP_APPFONT ( 18 , 12 ) ; \
+ TabStop = TRUE ; \
+ Left = TRUE ; \
+ Repeat = TRUE ; \
+ Spin = TRUE ; \
+ Minimum = 1 ; \
+ Maximum = 5 ; \
+ Value = 1 ; \
+ Last = 4 ; \
+ SpinSize = 1 ; \
+ }; \
+ CheckBox CB_MAIN_ENTRY \
+ { \
+ Pos = MAP_APPFONT ( 12 , 76 ) ; \
+ Size = MAP_APPFONT ( 100 , 8 ) ; \
+ Text = "Ha~upteintrag" ; \
+ Text [ ENGLISH ] = "~Main entry" ; \
+ Text[ english_us ] = "~Main entry";\
+ Text[ portuguese ] = "~Entrada principal";\
+ Text[ russian ] = "Îñíîâíîé ýëåìåíò";\
+ Text[ greek ] = "Êýñéá åããñáöÞ";\
+ Text[ dutch ] = "~Hoofditem";\
+ Text[ french ] = "~Entrée principale";\
+ Text[ spanish ] = "~Entrada principal";\
+ Text[ italian ] = "Voce principale";\
+ Text[ danish ] = "Hovedelement";\
+ Text[ swedish ] = "H~uvudpost";\
+ Text[ polish ] = "Wpis g³ówny";\
+ Text[ portuguese_brazilian ] = "~Main entry";\
+ Text[ japanese ] = "Žå€–Ú(~M)";\
+ Text[ korean ] = "ÁÖ Ç׸ñ(~M)";\
+ Text[ chinese_simplified ] = "Ö÷ÌõÄ¿(~M)";\
+ Text[ chinese_traditional ] = "¥D¶µ¥Ø(~M)";\
+ Text[ arabic ] = "ÅÏÎÇá ÑÆíÓí";\
+ Text[ turkish ] = "A~na giriþ";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ CheckBox CB_APPLY_TO_ALL \
+ { \
+ Pos = MAP_APPFONT ( 12 , 90 ) ; \
+ Size = MAP_APPFONT ( 140 , 12 ) ; \
+ Text = "~Auf alle gleichen Texte anwenden." ; \
+ Text [ ENGLISH ] = "~Apply to all similar texts." ; \
+ Hide = TRUE; \
+ Text[ english_us ] = "~Apply to all similar texts."; \
+ Text[ portuguese ] = "~Aplicar em todos os textos semelhantes"; \
+ Text[ russian ] = "Ïðèìåíèòü êî âñåì îäèíàêîâûì òåêñòàì"; \
+ Text[ dutch ] = "~Voor alle dezelfde tekst gebruiken"; \
+ Text[ french ] = "~Appliquer à tous les textes similaires."; \
+ Text[ spanish ] = "~Aplicar a todos los textos iguales."; \
+ Text[ italian ] = "~Applica a tutti i testi simili"; \
+ Text[ danish ] = "Anvend på alle lignende tekster."; \
+ Text[ swedish ] = "~Använd på alla liknande texter."; \
+ Text[ polish ] = "Zastosuj w podobnych tekstach."; \
+ Text[ portuguese_brazilian ] = "~Apply to all similar texts."; \
+ Text[ japanese ] = "‚·‚ׂĂ̎—‚Ä‚¢‚镶Žš—ñ‚É“K—p(~A)"; \
+ Text[ chinese_simplified ] = "ÊÊÓÃÓÚÏàͬµÄÕýÎÄ(~A)"; \
+ Text[ chinese_traditional ] = "¥Î©ó©Ò¦³¬Û¦Pªº¤º¤å(~A)"; \
+ Text[ arabic ] = "ÊØÈíÞ Úáì ßá ÇáäÕæÕ ÇáããÇËáÉ."; \
+ Text[ greek ] = "ÅöáñìïãÞ óå üëá ôá ðáñüìïéá êåßìåíá.";\
+ Text[ korean ] = "Àüü À¯»ç ÅؽºÆ® Àû¿ë(~A)";\
+ Text[ turkish ] = "~Tüm eþ metinlere uygula.";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ CheckBox CB_CASESENSITIVE \
+ { \
+ Pos = MAP_APPFONT ( 18 , 104 ) ; \
+ Size = MAP_APPFONT ( 134 , 12 ) ; \
+ Text = "E~xakte Suche" ; \
+ Text [ ENGLISH ] = "Match case" ; \
+ Hide = TRUE;\
+ Text[ english_us ] = "Ma~tch case";\
+ Text[ portuguese ] = "Procura e~xacta";\
+ Text[ russian ] = "Òî÷íûé ïîèñê";\
+ Text[ greek ] = "ÁêñéâÞò áíáæÞôçóç";\
+ Text[ dutch ] = "~Exact dezelfde tekens zoeken";\
+ Text[ french ] = "Respecter la ~casse";\
+ Text[ spanish ] = "Búsqueda e~xacta";\
+ Text[ italian ] = "Ricerca esatta";\
+ Text[ danish ] = "Søg eksakt";\
+ Text[ swedish ] = "E~xakt sökning";\
+ Text[ polish ] = "Dok³adne wyszukiwanie";\
+ Text[ portuguese_brazilian ] = "Match case";\
+ Text[ japanese ] = "Š®‘S‚É“¯ˆê‚È’PŒê‚ÌŒŸõ";\
+ Text[ korean ] = "´ë/¼Ò¹®ÀÚ ±¸ºÐ(~T)";\
+ Text[ chinese_simplified ] = "¾«È·ËÑÑ°";\
+ Text[ chinese_traditional ] = "ºëÚÌ´M§ä";\
+ Text[ arabic ] = "ÈÍË ÏÞíÞ";\
+ Text[ turkish ] = "BÜYÜK/küçük ~harf duyarlý";\
+ }; \
+ CheckBox CB_WORDONLY \
+ { \
+ Pos = MAP_APPFONT ( 18 , 118 ) ; \
+ Size = MAP_APPFONT ( 134 , 12 ) ; \
+ Text = "Nur ganze ~Wörter" ; \
+ Text [ ENGLISH ] = "Whole words only" ; \
+ Hide = TRUE;\
+ Text[ english_us ] = "~Whole words only";\
+ Text[ portuguese ] = "Só ~palavras inteiras";\
+ Text[ russian ] = "Òîëüêî ïîëíûå ñëîâà";\
+ Text[ greek ] = "Ìüíï ïëüêëçñåò ëÝîåéò";\
+ Text[ dutch ] = "Alleen hele ~woorden";\
+ Text[ french ] = "~Mots entiers";\
+ Text[ spanish ] = "Solo palabras e~nteras";\
+ Text[ italian ] = "Solo parole intere";\
+ Text[ danish ] = "Kun hele ord";\
+ Text[ swedish ] = "Bara hela ~ord";\
+ Text[ polish ] = "Tylko ca³e wyrazy";\
+ Text[ portuguese_brazilian ] = "Whole words only";\
+ Text[ japanese ] = "’PŒê’PˆÊ‚Å‚Ì‚Ý";\
+ Text[ korean ] = "Àüü ´Ü¾î¸¸(~W)";\
+ Text[ chinese_simplified ] = "Ö»ÔÊÐíÕû¸ö´Ê";\
+ Text[ chinese_traditional ] = "¥u¬O¾ã­Ó¦r";\
+ Text[ arabic ] = "ßáãÇÊ ßÇãáÉ ÝÞØ";\
+ Text[ turkish ] = "Yalnýzca ~tam sözcükler bul";\
+ }; \
+ };
+
+ModalDialog DLG_EDIT_IDXMARK
+{
+ OutputSize = TRUE ;
+ Moveable = TRUE ;
+ Closeable = TRUE;
+ Sizeable = FALSE ;
+ HelpID = FN_EDIT_IDX_ENTRY_DLG;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 218 , 118 ) ;
+ #define GB_HEIGHT 109
+ #define DCB_INDEX_WIDTH 94
+ #define WINDOW_HEIGHT 118
+ IDX_DIALOG_WINDOW
+};
+ModelessDialog DLG_INSIDXMARK
+{
+ OutputSize = TRUE ;
+ Moveable = TRUE ;
+ Closeable = TRUE;
+ Sizeable = FALSE ;
+// Zoomable = TRUE ;
+ HelpID = FN_INSERT_IDX_ENTRY_DLG;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 218 , 138) ;
+// Moveable = TRUE ;
+ #define GB_HEIGHT 129
+ #define DCB_INDEX_WIDTH 79
+ #define WINDOW_HEIGHT 138
+ IDX_DIALOG_WINDOW
+};
+ModalDialog DLG_NEW_USER_IDX
+{
+ OutputSize = TRUE ;
+ Moveable = TRUE ;
+ Closeable = TRUE;
+ Sizeable = FALSE ;
+ HelpID = HID_DLG_NEW_USER_IDX;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 194 , 60 ) ;
+ Text = "Neues benutzerdefiniertes Verzeichnis anlegen" ;
+ Text [ ENGLISH ] = "Create new user-defined index" ;
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 141 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 141 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 141 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ GroupBox GB_NAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 132 , 54 ) ;
+ Text = "Neues Benutzerverzeichnis" ;
+ Text [ ENGLISH ] = "New user index name" ;
+
+ Text[ english_us ] = "New user index";
+ Text[ portuguese ] = "Novo índice personalizado";
+ Text[ russian ] = "Íîâûé óêàçàòåëü ïîëüçîâàòåëÿ";
+ Text[ greek ] = "Äçìéïõñãßá åõñåôçñßïõ ÷ñÞóôç";
+ Text[ dutch ] = "Nieuwe gebruikersindex";
+ Text[ french ] = "Nouvel index personnalisé";
+ Text[ spanish ] = "Nuevo índice de usuario";
+ Text[ italian ] = "Nuovo indice personalizzato";
+ Text[ danish ] = "Nyt brugerindeks";
+ Text[ swedish ] = "Ny användarförteckning";
+ Text[ polish ] = "Nowy indeks u¿ytkownika";
+ Text[ portuguese_brazilian ] = "New user index name";
+ Text[ japanese ] = "V‚µ‚¢Õ°»Þ°’è‹`‚Ìõˆø";
+ Text[ korean ] = "»õ·Î¿î »ç¿ëÀÚ »öÀÎ";
+ Text[ chinese_simplified ] = "н¨Óû§Ä¿Â¼";
+ Text[ chinese_traditional ] = "·s«Ø¦Û­q¥Ø¿ý";
+ Text[ arabic ] = "ÝåÑÓ ãÓÊÎÏã ÌÏíÏ";
+ Text[ turkish ] = "Yeni kullanýcý dizini";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ 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 , 15 ) ;
+ Size = MAP_APPFONT ( 80 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ Text[ english_us ] = "Create New User-defined Index";
+ Text[ portuguese ] = "Definir novo índice personalizado";
+ Text[ russian ] = "Ñîçäàòü íîâûé óêàçàòåëü ïîëüçîâàòåëÿ";
+ Text[ greek ] = "Äçìéïõñãßá íÝïõ åõñåôçñßïõ ÷ñÞóôç";
+ Text[ dutch ] = "Nieuwe gebruikersindex definiëren";
+ Text[ french ] = "Création d'un nouvel index personnalisé";
+ Text[ spanish ] = "Crear nuevo índice de usuario";
+ Text[ italian ] = "Definisci nuovo indice personalizzato";
+ Text[ danish ] = "Opret nyt brugerdefineret indeks";
+ Text[ swedish ] = "Skapa ny användardefinierad förteckning";
+ Text[ polish ] = "Utwórz nowy indeks zdeiniowany przez u¿ytkownika";
+ Text[ portuguese_brazilian ] = "Define new user index";
+ Text[ japanese ] = "V‚µ‚¢Õ°»Þ°’è‹`‚Ìõˆø‚Ìì¬";
+ Text[ korean ] = "»õ·Î¿î »ç¿ëÀÚ Á¤ÀÇ »öÀÎ ¸¸µé±â";
+ Text[ chinese_simplified ] = "н¨Óû§×Ô¶¨Ä¿Â¼";
+ Text[ chinese_traditional ] = "·s¼W¦Û­qªº¥Ø¿ý";
+ Text[ arabic ] = "ÅäÔÇÁ ÝåÑÓ ÌÏíÏ ãõÚóÑøóÝ ãä ÞÈá ÇáãÓÊÎÏã";
+ Text[ turkish ] = "Yeni kullanýcý tanýmlý dizin oluþtur";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_IDXMRK_EDIT
+{
+ Text = "Verzeichniseintrag bearbeiten" ;
+ Text [ ENGLISH ] = "Edit index entry" ;
+ Text [ norwegian ] = "Rediger stikkordregisterinngang" ;
+ Text [ italian ] = "Modifica voce di indice" ;
+ Text [ portuguese_brazilian ] = "Editar entrada de índice" ;
+ Text [ portuguese ] = "Editar entrada de índice" ;
+ Text [ finnish ] = "Muokkaa hakusanaa" ;
+ Text [ danish ] = "Rediger indekselement" ;
+ Text [ french ] = "Édition d'une entrée d'index" ;
+ Text [ swedish ] = "Redigera förteckningspost" ;
+ Text [ dutch ] = "Indexgegeven bewerken" ;
+ Text [ spanish ] = "Editar entrada de índice" ;
+ Text [ english_us ] = "Edit Index Entry" ;
+ Text[ chinese_simplified ] = "±à¼­Ä¿Â¼ÌõÄ¿";
+ Text[ russian ] = "Ïðàâêà ýëåìåíòà óêàçàòåëÿ";
+ Text[ polish ] = "Edytuj wpis do indeksu";
+ Text[ japanese ] = "õˆø€–Ú‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿è¥Ø¿ý¶µ¥Ø";
+ Text[ arabic ] = "ÊÍÑíÑ ÅÏÎÇá ÝåÑÓí";
+ Text[ greek ] = "Åðåîåñãáóßá åããñáöÞò åõñåôçñßïõ";
+ Text[ korean ] = "»öÀÎ Ç׸ñ ÆíÁý";
+ Text[ turkish ] = "Dizin giriþini düzenle";
+ Text[ language_user1 ] = " ";
+};
+String STR_IDXMRK_INSERT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Verzeichniseintrag einfügen : Verzeichniseintrag einf³gen */
+ Text = "Verzeichniseintrag einfügen" ;
+ Text [ ENGLISH ] = "Insert index entry" ;
+ Text [ norwegian ] = "Sett inn oppføring i stikkkordregister" ;
+ Text [ italian ] = "Inserisci voce di indice" ;
+ Text [ portuguese_brazilian ] = "Inserir entrada de índice" ;
+ Text [ portuguese ] = "Inserir entrada no índice remissivo" ;
+ Text [ finnish ] = "Lisää hakemistotekstin" ;
+ Text [ danish ] = "Indsæt indekselement" ;
+ Text [ french ] = "Insertion d'une entrée d'index" ;
+ Text [ swedish ] = "Infoga förteckningspost" ;
+ Text [ dutch ] = "Indexgegeven invoegen" ;
+ Text [ spanish ] = "Insertar una entrada de índice" ;
+ Text [ english_us ] = "Insert Index Entry" ;
+ Text[ chinese_simplified ] = "²åÈëË÷ÒýÌõÄ¿";
+ Text[ russian ] = "Âñòàâèòü ýëåìåíò óêàçàòåëÿ";
+ Text[ polish ] = "Wstaw wpis do indeksu";
+ Text[ japanese ] = "–ÚŽŸ‚Æõˆø€–Ú‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¥Ø¿ý±ø¥Ø";
+ Text[ arabic ] = "ÅÏÑÇÌ ÅÏÎÇá ÝåÑÓí";
+ Text[ greek ] = "ÐñïóèÞêç åããñáöÞò åõñåôçñßïõ";
+ Text[ korean ] = "»öÀÎ Ç׸ñ »ðÀÔ";
+ Text[ turkish ] = "Dizin giriþi ekle";
+ Text[ language_user1 ] = " ";
+};
+
+#define AUTH_DIALOG_WINDOW \
+ Window WIN_DLG \
+ { \
+ Pos = MAP_APPFONT ( 0 , 0 ) ; \
+ Size = MAP_APPFONT ( 218 , 118 + RADIO_BUTTON_HEIGHT) ; \
+ RadioButton RB_FROMCOMPONENT \
+ { \
+ Pos = MAP_APPFONT ( 12 , 14 ) ; \
+ Size = MAP_APPFONT ( 147 , 12 ) ; \
+ Text = "Aus Literatur~datenbank" ; \
+ Text [ ENGLISH ] = "Form bibliography database" ; \
+ Text[ english_us ] = "From bibliography ~database";\
+ Text[ portuguese ] = "A partir da ~base de dados bibliográfica";\
+ Text[ russian ] = "Èç áàçû äàííûõ áèáëèîãðàôèè";\
+ Text[ greek ] = "Áðü ôç âÜóç ~äåäïìÝíùí âéâëéïãñáößáò";\
+ Text[ dutch ] = "Uit ~literatuur-database";\
+ Text[ french ] = "À partir de la ~base de données bibliographique";\
+ Text[ spanish ] = "De la base de datos ~bibliográfica";\
+ Text[ italian ] = "Dal ~database bibliografico";\
+ Text[ danish ] = "fra litteraturdatabasen";\
+ Text[ swedish ] = "Från litteratur~databas";\
+ Text[ polish ] = "Z bibliograficznej bazy danych";\
+ Text[ portuguese_brazilian ] = "Form bibliography database";\
+ Text[ japanese ] = "‘ ‘ŠÇ—ÃÞ°ÀÍÞ°½‚©‚ç(~D)";\
+ Text[ korean ] = "Âü°í¹®Çå µ¥ÀÌÅͺ£À̽º·Î ºÎÅÍ(~D)";\
+ Text[ chinese_simplified ] = "²ÉÓÃÎÄÏ×Êý¾Ý¿â";\
+ Text[ chinese_traditional ] = "±q¤åÄm¸ê®Æ®w";\
+ Text[ arabic ] = "ãä ÞÇÚÏÉ ÈíÇäÇÊ ÇáãÑÇÌÚ";\
+ Text[ turkish ] = "Kaynakça veritabanýndan";\
+ }; \
+ RadioButton RB_FROMDOCCONTENT \
+ { \
+ Pos = MAP_APPFONT ( 12, 29 ) ; \
+ Size = MAP_APPFONT ( 147 , 12 ) ; \
+ Text = "~Aus Dokumentinhalt" ; \
+ Text [ ENGLISH ] = "From document content" ; \
+ Text[ english_us ] = "~From document content";\
+ Text[ portuguese ] = "A partir do ~conteúdo do documento";\
+ Text[ russian ] = "Èç ñîäåðæèìîãî äîêóìåíòà";\
+ Text[ greek ] = "~Áðü ôï ðåñéå÷üìåíï ôïõ åããñÜöïõ";\
+ Text[ dutch ] = "Uit ~documentinhoud";\
+ Text[ french ] = "À partir du contenu du ~document";\
+ Text[ spanish ] = "~Del contenido del documento";\
+ Text[ italian ] = "Dal contenuto del documento";\
+ Text[ danish ] = "fra dokumentindholdet";\
+ Text[ swedish ] = "~Från dokumentinnehåll";\
+ Text[ polish ] = "Z zawartoœci dokumentu";\
+ Text[ portuguese_brazilian ] = "From document content";\
+ Text[ japanese ] = "•¶‘“à—e‚©‚ç(~F)";\
+ Text[ korean ] = "¹®¼­ ³»¿ë¿¡¼­ ºÎÅÍ(~F)";\
+ Text[ chinese_simplified ] = "²ÉÓÃÎĵµÄÚÈÝ";\
+ Text[ chinese_traditional ] = "±q¤å¥ó¤º®e";\
+ Text[ arabic ] = "ãä ãÍÊæíÇÊ ÇáãÓÊäÏ";\
+ Text[ turkish ] = "~Belge içeriðinden";\
+ }; \
+ FixedText FT_ENTRY \
+ { \
+ Pos = MAP_APPFONT ( 12 , 15 + RADIO_BUTTON_HEIGHT) ; \
+ Size = MAP_APPFONT ( 60 , 8 ) ; \
+ Text = "~Kurzbezeichnung" ; \
+ Text [ ENGLISH ] = "Short name" ; \
+ Text[ english_us ] = "Short ~name";\
+ Text[ portuguese ] = "~Abreviatura";\
+ Text[ russian ] = "Ñîêðàùåííîå íàçâàíèå";\
+ Text[ greek ] = "Óõíôïìïãñáößá";\
+ Text[ dutch ] = "Beknopte aand~uiding";\
+ Text[ french ] = "~Abrégé";\
+ Text[ spanish ] = "Abre~viatura";\
+ Text[ italian ] = "Abbreviazione";\
+ Text[ danish ] = "Kort betegnelse";\
+ Text[ swedish ] = "~Kort beteckning";\
+ Text[ polish ] = "Skrót";\
+ Text[ portuguese_brazilian ] = "Short name";\
+ Text[ japanese ] = "—ªÌ(~N)";\
+ Text[ korean ] = "ªÀº À̸§(~N)";\
+ Text[ chinese_simplified ] = "¼ò³Æ(~N)";\
+ Text[ chinese_traditional ] = "²µu´y­z(~N)";\
+ Text[ arabic ] = "ÇÓã ãÎÊÕÑ";\
+ Text[ turkish ] = "K~ýsaltma";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ Edit ED_ENTRY \
+ { \
+ Border = TRUE ; \
+ Pos = MAP_APPFONT ( 75 , 14 + RADIO_BUTTON_HEIGHT) ; \
+ Size = MAP_APPFONT ( 74 , 12 ) ; \
+ TabStop = TRUE ; \
+ Left = TRUE ; \
+ }; \
+ ListBox LB_ENTRY \
+ { \
+ Border = TRUE ; \
+ Pos = MAP_APPFONT ( 75 , 14 + RADIO_BUTTON_HEIGHT) ; \
+ Size = MAP_APPFONT ( 74 , 50 ) ; \
+ TabStop = TRUE ; \
+ DropDown = TRUE ; \
+ }; \
+ FixedText FT_AUTHOR \
+ { \
+ Pos = MAP_APPFONT ( 12 , 28 + RADIO_BUTTON_HEIGHT) ; \
+ Size = MAP_APPFONT ( 60 , 8 ) ; \
+ Text = "Autor" ; \
+ Text [ ENGLISH ] = "Author" ; \
+ Text[ english_us ] = "Author";\
+ Text[ portuguese ] = "Autor";\
+ Text[ russian ] = "Àâòîð";\
+ Text[ greek ] = "ÓõíôÜêôçò";\
+ Text[ dutch ] = "Auteur";\
+ Text[ french ] = "Auteur";\
+ Text[ spanish ] = "Autor";\
+ Text[ italian ] = "Autore";\
+ Text[ danish ] = "Forfatter";\
+ Text[ swedish ] = "Författare";\
+ Text[ polish ] = "Autor";\
+ Text[ portuguese_brazilian ] = "Author";\
+ Text[ japanese ] = "’˜ŽÒ";\
+ Text[ korean ] = "ÀÛ¼ºÀÚ";\
+ Text[ chinese_simplified ] = "×÷Õß";\
+ Text[ chinese_traditional ] = "§@ªÌ";\
+ Text[ arabic ] = "ÇáãÄáÝ";\
+ Text[ turkish ] = "Yazan";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ FixedText FI_AUTHOR \
+ { \
+ Pos = MAP_APPFONT ( 75 , 28 + RADIO_BUTTON_HEIGHT) ; \
+ Size = MAP_APPFONT ( 74 , 20 ) ; \
+ WordBreak = TRUE; \
+ }; \
+ FixedText FT_TITLE \
+ { \
+ Pos = MAP_APPFONT ( 12 , 54 + RADIO_BUTTON_HEIGHT) ; \
+ Size = MAP_APPFONT ( 60 , 8 ) ; \
+ Text = "Titel" ; \
+ Text [ ENGLISH ] = "Title" ; \
+ Text[ english_us ] = "Title";\
+ Text[ portuguese ] = "Título";\
+ Text[ russian ] = "Çàãîëîâîê";\
+ Text[ greek ] = "Ôßôëïò";\
+ Text[ dutch ] = "Titel";\
+ Text[ french ] = "Titre";\
+ Text[ spanish ] = "Título";\
+ Text[ italian ] = "Titolo";\
+ Text[ danish ] = "Titel";\
+ Text[ swedish ] = "Titel";\
+ Text[ polish ] = "Tytu³";\
+ Text[ portuguese_brazilian ] = "Title";\
+ Text[ japanese ] = "À²ÄÙ";\
+ Text[ korean ] = "Á¦¸ñ";\
+ Text[ chinese_simplified ] = "±êÌâ";\
+ Text[ chinese_traditional ] = "¼ÐÃD";\
+ Text[ arabic ] = "ÇáÚäæÇä";\
+ Text[ turkish ] = "Baþlýk";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ FixedText FI_TITLE \
+ { \
+ Pos = MAP_APPFONT ( 75 , 54 + RADIO_BUTTON_HEIGHT) ; \
+ Size = MAP_APPFONT ( 74 , 20 ) ; \
+ WordBreak = TRUE; \
+ }; \
+ GroupBox GB_ENTRY \
+ { \
+ Pos = MAP_APPFONT ( 6 , 3 ) ; \
+ Size = MAP_APPFONT ( 146 , 112 + RADIO_BUTTON_HEIGHT) ; \
+ Text = "Eintrag" ; \
+ Text [ ENGLISH ] = "Entry" ; \
+ Text[ english_us ] = "Entry";\
+ Text[ portuguese ] = "Entrada";\
+ Text[ russian ] = "Ýëåìåíò";\
+ Text[ greek ] = "Êáôá÷þñéóç";\
+ Text[ dutch ] = "Item";\
+ Text[ french ] = "Entrée";\
+ Text[ spanish ] = "Entrada";\
+ Text[ italian ] = "Voce";\
+ Text[ danish ] = "Element";\
+ Text[ swedish ] = "Post";\
+ Text[ polish ] = "Wpis";\
+ Text[ portuguese_brazilian ] = "Entry";\
+ Text[ japanese ] = "€–Ú";\
+ Text[ korean ] = "Ç׸ñ";\
+ Text[ chinese_simplified ] = "ÌõÄ¿";\
+ Text[ chinese_traditional ] = "¶µ¥Ø";\
+ Text[ arabic ] = "ÅÏÎÇá";\
+ Text[ turkish ] = "Giriþ";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ OKButton PB_OK \
+ { \
+ Pos = MAP_APPFONT ( 162 , 6 ) ; \
+ Size = MAP_APPFONT ( 50 , 14 ) ; \
+ TabStop = TRUE ; \
+ DefButton = TRUE ; \
+ Text = "Einfügen"; \
+ Text[English] = "Insert"; \
+ Text[ english_us ] = "Insert";\
+ Text[ portuguese ] = "Inserir";\
+ Text[ russian ] = "Âñòàâèòü";\
+ Text[ greek ] = "ÐñïóèÞêç";\
+ Text[ dutch ] = "Invoegen";\
+ Text[ french ] = "Insérer";\
+ Text[ spanish ] = "Insertar";\
+ Text[ italian ] = "Inserisci";\
+ Text[ danish ] = "Indsæt";\
+ Text[ swedish ] = "Infoga";\
+ Text[ polish ] = "Wstaw";\
+ Text[ portuguese_brazilian ] = "Insert";\
+ Text[ japanese ] = "‘}“ü";\
+ Text[ korean ] = "»ðÀÔ";\
+ Text[ chinese_simplified ] = "²åÈë";\
+ Text[ chinese_traditional ] = "´¡¤J";\
+ Text[ arabic ] = "ÅÏÑÇÌ";\
+ Text[ turkish ] = "Ekle";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ CancelButton PB_CANCEL \
+ { \
+ Pos = MAP_APPFONT ( 162 , 23 ) ; \
+ Size = MAP_APPFONT ( 50 , 14 ) ; \
+ Text = "Schließen"; \
+ Text[English] = "Close"; \
+ Text[ english_us ] = "Close";\
+ Text[ portuguese ] = "Fechar";\
+ Text[ russian ] = "Çàêðûòü";\
+ Text[ greek ] = "Êëåßóéìï";\
+ Text[ dutch ] = "Sluiten";\
+ Text[ french ] = "Fermer";\
+ Text[ spanish ] = "Cerrar";\
+ Text[ italian ] = "Chiudi";\
+ Text[ danish ] = "Luk";\
+ Text[ swedish ] = "Stäng";\
+ Text[ polish ] = "Zamknij";\
+ Text[ portuguese_brazilian ] = "Close";\
+ Text[ japanese ] = "•Â‚¶‚é";\
+ Text[ korean ] = "´Ý±â";\
+ Text[ chinese_simplified ] = "¹Ø±Õ";\
+ Text[ chinese_traditional ] = "Ãö³¬";\
+ Text[ arabic ] = "ÅÛáÇÞ";\
+ Text[ turkish ] = "Kapat";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ HelpButton PB_HELP \
+ { \
+ Pos = MAP_APPFONT ( 162 , 43 ) ; \
+ Size = MAP_APPFONT ( 50 , 14 ) ; \
+ }; \
+ PushButton PB_CREATEENTRY \
+ { \
+ Pos = MAP_APPFONT ( 162 , 60 ) ; \
+ Size = MAP_APPFONT ( 50 , 14 ) ; \
+ Text = "Ne~u"; \
+ Text[English] = "New"; \
+ Text[ english_us ] = "~New";\
+ Text[ portuguese ] = "~Novo";\
+ Text[ russian ] = "Ñîçäàòü";\
+ Text[ greek ] = "Äçìéïõñãßá";\
+ Text[ dutch ] = "Nie~uw";\
+ Text[ french ] = "~Nouvelle entrée";\
+ Text[ spanish ] = "N~uevo";\
+ Text[ italian ] = "Nuovo";\
+ Text[ danish ] = "Ny";\
+ Text[ swedish ] = "N~y";\
+ Text[ polish ] = "Nowy";\
+ Text[ portuguese_brazilian ] = "Create entry";\
+ Text[ japanese ] = "V‹Kì¬";\
+ Text[ korean ] = "»õ·Î(~N)";\
+ Text[ chinese_simplified ] = "н¨";\
+ Text[ chinese_traditional ] = "·s«Ø";\
+ Text[ arabic ] = "ÌÏíÏ";\
+ Text[ turkish ] = "~Yeni";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ PushButton PB_EDITENTRY \
+ { \
+ Pos = MAP_APPFONT ( 162 , 77 ) ; \
+ Size = MAP_APPFONT ( 50 , 14 ) ; \
+ Text = "~Bearbeiten"; \
+ Text[English] = "Edit"; \
+ Text[ english_us ] = "Edit";\
+ Text[ portuguese ] = "~Editar";\
+ Text[ russian ] = "Ïðàâêà";\
+ Text[ greek ] = "Åðåîåñãáóßá";\
+ Text[ dutch ] = "~Bewerken";\
+ Text[ french ] = "É~diter";\
+ Text[ spanish ] = "~Editar";\
+ Text[ italian ] = "~Modifica";\
+ Text[ danish ] = "Rediger";\
+ Text[ swedish ] = "Redigera";\
+ Text[ polish ] = "~Edytuj";\
+ Text[ portuguese_brazilian ] = "Edit";\
+ Text[ japanese ] = "•ÒW(~Ej";\
+ Text[ korean ] = "ÆíÁý";\
+ Text[ chinese_simplified ] = "±à¼­";\
+ Text[ chinese_traditional ] = "½s¿è";\
+ Text[ arabic ] = "ÊÍÑíÑ";\
+ Text[ turkish ] = "D~üzenle";\
+ }; \
+ String ST_CHANGE \
+ { \
+ Text = "Ändern"; \
+ Text[English] = "Apply"; \
+ Text[ english_us ] = "Modify";\
+ Text[ portuguese ] = "Modificar";\
+ Text[ russian ] = "Èçìåíèòü";\
+ Text[ greek ] = "ÁëëáãÞ";\
+ Text[ dutch ] = "Wijzigen";\
+ Text[ french ] = "Modifier";\
+ Text[ spanish ] = "Modificar";\
+ Text[ italian ] = "Cambia";\
+ Text[ danish ] = "Modificer";\
+ Text[ swedish ] = "Ändra";\
+ Text[ polish ] = "Modyfikuj";\
+ Text[ portuguese_brazilian ] = "Apply";\
+ Text[ japanese ] = "•ÏX";\
+ Text[ korean ] = "¼öÁ¤";\
+ Text[ chinese_simplified ] = "¸ü¸Ä";\
+ Text[ chinese_traditional ] = "Åܧó";\
+ Text[ arabic ] = "ÊØÈíÞ";\
+ Text[ turkish ] = "Deðiþtir";\
+ Text[ language_user1 ] = " ";\
+ }; \
+ };
+
+ModalDialog DLG_EDIT_AUTHMARK
+{
+ OutputSize = TRUE ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Sizeable = FALSE ;
+ HelpID = FN_EDIT_AUTH_ENTRY_DLG;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 218 , 118 ) ;
+ #define RADIO_BUTTON_HEIGHT 0
+ AUTH_DIALOG_WINDOW
+};
+ModelessDialog DLG_INSAUTHMARK
+{
+ OutputSize = TRUE ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Sizeable = FALSE ;
+// Zoomable = TRUE ;
+ HelpID = FN_INSERT_AUTH_ENTRY_DLG;
+ SVLook = TRUE ;
+ #define RADIO_BUTTON_HEIGHT 30
+ Size = MAP_APPFONT ( 218 , 118 + RADIO_BUTTON_HEIGHT) ;
+// Moveable = TRUE ;
+ AUTH_DIALOG_WINDOW
+};
+ModalDialog DLG_CREATE_AUTH_ENTRY
+{
+ HelpId = HID_DLG_CREATE_AUTH_ENTRY;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 365 , 203 ) ;
+ Text = "Literatureintrag definieren" ;
+ Text [ ENGLISH ] = "Define authority entry" ;
+ Moveable = TRUE ;
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 312 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 312 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 312 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ GroupBox GB_ENTRIES
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 300 , 197 ) ;
+ Text = "Eintragsdaten" ;
+ Text [ ENGLISH ] = "Entry data" ;
+ Text[ english_us ] = "Entry data";
+ Text[ portuguese ] = "Dados da entrada";
+ Text[ russian ] = "Äàííûå ýëåìåíòà";
+ Text[ greek ] = "ÄåäïìÝíá åããñáöÞò";
+ Text[ dutch ] = "Itemgegevens";
+ Text[ french ] = "Données de l'entrée";
+ Text[ spanish ] = "Datos de la entrada";
+ Text[ italian ] = "Dati voce";
+ Text[ danish ] = "Elementdata";
+ Text[ swedish ] = "Postdata";
+ Text[ polish ] = "Dane wpisu";
+ Text[ portuguese_brazilian ] = "Entry data";
+ Text[ japanese ] = "“ü—Í“ú";
+ Text[ korean ] = "Ç׸ñ µ¥ÀÌÅÍ";
+ Text[ chinese_simplified ] = "ÌõÄ¿Êý¾Ý";
+ Text[ chinese_traditional ] = "±ø¥Ø¼ÆÕu";
+ Text[ arabic ] = "ÈíÇäÇÊ ÇáÅÏÎÇá";
+ Text[ turkish ] = "Giriþ verileri";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ english_us ] = "Define Bibliography Entry";
+ Text[ portuguese ] = "Definir entrada bibliográfica";
+ Text[ russian ] = "Çàäàòü ýëåìåíò ñïèñêà ëèòåðàòóðû";
+ Text[ greek ] = "Ïñéóìüò åããñáöÞò âéâëéïãñáößáò";
+ Text[ dutch ] = "Als Item voor literatuurlijst definiëren";
+ Text[ french ] = "Définir une entrée de bibliographie";
+ Text[ spanish ] = "Definir entrada de bibliografía";
+ Text[ italian ] = "Definisci voce bibliografica";
+ Text[ danish ] = "Definer litteraturlisteelement";
+ Text[ swedish ] = "Definiera litteraturpost";
+ Text[ polish ] = "Zdefiniuj wpis bibliograficzny";
+ Text[ portuguese_brazilian ] = "Define authority entry";
+ Text[ japanese ] = "ŽQl•¶Œ£€–Ú‚Ì’è‹`";
+ Text[ korean ] = "Âü°í¹®Çå Ç׸ñ Á¤ÀÇ";
+ Text[ chinese_simplified ] = "¶¨ÒåÎÄÏ×ÌõÄ¿";
+ Text[ chinese_traditional ] = "©w¸q°Ñ¦Ò¤åÄm±ø¥Ø";
+ Text[ arabic ] = "ÊÚÑíÝ ÅÏÎÇá Ýí ÝåÑÓ ÇáãÑÇÌÚ";
+ Text[ turkish ] = "Kaynakça giriþini tanýmla";
+};
+String STR_AUTHMRK_EDIT
+{
+ Text = "Literaturverzeichniseintrag bearbeiten" ;
+ Text [ ENGLISH ] = "Edit authority entry" ;
+
+ Text[ english_us ] = "Edit bibliography entry";
+ Text[ portuguese ] = "Editar entrada bibliográfica";
+ Text[ russian ] = "Ïðàâêà ýëåìåíòà ñïèñêà ëèòåðàòóðû";
+ Text[ greek ] = "Åðåîåñãáóßá åããñáöÞò âéâëéïãñáößáò";
+ Text[ dutch ] = "Item voor literatuurlijst bewerken";
+ Text[ french ] = "Éditer une entrée de bibliographie";
+ Text[ spanish ] = "Editar entrada de bibliografía";
+ Text[ italian ] = "Modifica voce bibliografica";
+ Text[ danish ] = "Rediger litteraturlisteelement";
+ Text[ swedish ] = "Redigera post i litteraturförteckning";
+ Text[ polish ] = "Edytuj wpis bibliograficzny";
+ Text[ portuguese_brazilian ] = "Edit authority entry";
+ Text[ japanese ] = "ŽQl•¶Œ£•\\‚Ì•ÒW";
+ Text[ korean ] = "Âü°í¹®Çå Ç׸ñ ÆíÁý";
+ Text[ chinese_simplified ] = "±à¼­ÎÄÏ×Ŀ¼ÌõÄ¿";
+ Text[ chinese_traditional ] = "½s¿è°Ñ¦Ò¤åÄm±ø¥Ø";
+ Text[ arabic ] = "ÊÍÑíÑ ÅÏÎÇá Ýí ÝåÑÓ ÇáãÑÇÌÚ";
+ Text[ turkish ] = "Kaynakça dizini giriþini düzenle";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTHMRK_INSERT
+{
+ Text = "Literaturverzeichniseintrag einfügen" ;
+ Text [ ENGLISH ] = "Insert authority entry" ;
+
+ Text[ english_us ] = "Insert bibliography entry";
+ Text[ portuguese ] = "Inserir entrada bibliográfica";
+ Text[ russian ] = "Âñòàâèòü ýëåìåíò ñïèñêà ëèòåðàòóðû";
+ Text[ greek ] = "ÐñïóèÞêç åããñáöÞò âéâëéïãñáößáò";
+ Text[ dutch ] = "Item invoegen in literatuurlijst";
+ Text[ french ] = "Insérer une entrée de bibliographie";
+ Text[ spanish ] = "Insertar entrada de bibliografía";
+ Text[ italian ] = "Inserisci voce bibliografica";
+ Text[ danish ] = "Indsæt litteraturlisteelement";
+ Text[ swedish ] = "Infoga post i litteraturförteckning";
+ Text[ polish ] = "Wstaw wpis bibliograficzny";
+ Text[ portuguese_brazilian ] = "Insert authority entry";
+ Text[ japanese ] = "ŽQl•¶Œ£‚Ì‘}“ü";
+ Text[ korean ] = "Âüº¸¹®Çå Ç׸ñ Á¤ÀÇ";
+ Text[ chinese_simplified ] = "²åÈëÎÄÏ×Ŀ¼ÌõÄ¿";
+ Text[ chinese_traditional ] = "´¡¤J°Ñ¦Ò¤åÄm±ø¥Ø";
+ Text[ arabic ] = "ÅÏÑÇÌ ÅÏÎÇá Ýí ÝåÑÓ ÇáãÑÇÌÚ";
+ Text[ turkish ] = "Kaynakça dizini giriþi ekle";
+ Text[ language_user1 ] = " ";
+};
+QueryBox DLG_CHANGE_AUTH_ENTRY
+{
+ BUTTONS = WB_YES_NO ;
+ DEFBUTTON = WB_DEF_NO ;
+ MESSAGE = "Der Bibliographie-Eintrag ist bereits mit abweichenden Daten im Dokument enthalten. "\
+ "Möchten sie die bereits enthaltenen Einträge anpassen?" ;
+ MESSAGE [ English ] = "The bibliography entry is already contained in the document with different data."\
+ "Do you want to adjust the existing bibliography entries?" ;
+ MESSAGE[ english_us ] = "The bibliography entry is already contained in the document with different data. ";
+ MESSAGE[ portuguese ] = "A entrada bibliográfica já existe no documento com dados diferentes. ";
+ MESSAGE[ russian ] = "Ýòîò ýëåìåíò áèáëèîãðàôèè ñ íåêîòîðûìè îòëè÷íûìè äàííûìè óæå ñîäåðæèòñÿ â äîêóìåíòå. ";
+ MESSAGE[ greek ] = "Ç åããñáöÞ âéâëéïèÞêçò ðåñéÝ÷åôáé ìå Þäç ìç óõìðßðôïíôá äåäïìÝíá óôï Ýããñáöï. ";
+ MESSAGE[ dutch ] = "Het bibliografie-item bevindt zich reeds met andere gegevens in het document. ";
+ MESSAGE[ french ] = "L'entrée de bibliographie existe déjà en relation avec des données différentes dans le document. ";
+ MESSAGE[ spanish ] = "La entrada de bibliografía existe ya con datos diferentes en el documento. ";
+ MESSAGE[ italian ] = "La voce bibliografica è già presente nel documento con dati diversi. ";
+ MESSAGE[ danish ] = "Litteraturlisteelementet er allerede indeholdt i dokumentet med afvigende data. ";
+ MESSAGE[ swedish ] = "Bibliografiposten finns redan med avvikande data i dokumentet. ";
+ MESSAGE[ polish ] = "Wpis bibliograficzny zawarty jest w dokumencie ³¹cznie z innymi danymi.";
+ MESSAGE[ portuguese_brazilian ] = "The bibliography entry is already contained in the document with different data.";
+ MESSAGE[ japanese ] = "‚±‚ÌŽQl•¶Œ£‚Í‚±‚Ì•¶‘‚̕ʂ̌Š‚É‚·‚Å‚Éo‚Ä‚«‚Ä‚¢‚Ü‚·B ";
+ MESSAGE[ korean ] = "Âü°í¹®Çå Ç׸ñÀº ÀÌ¹Ì ´Ù¸¥ µ¥ÀÌÅÍ¿Í ÇÔ²² ¹®¼­¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. ";
+ MESSAGE[ chinese_simplified ] = "ÎĵµÄÚÒѾ­º¬Óи½´ø²»Í¬Êý¾ÝµÄĿ¼ÌõÄ¿¡£ ";
+ MESSAGE[ chinese_traditional ] = "¦b¤å¥ó¤º¤w¸g§t¦³¤£¦P¼ÆÕuªº¥Ø¿ý¶µ¥Ø¡C ";
+ MESSAGE[ arabic ] = "ÅÏÎÇá ÇáãÑÌÚ ãæÌæÏ ÈÇáÝÚá Ýí ÇáãÓÊäÏ ÈÈíÇäÇÊ ãÎÊáÝÉ. ";
+ MESSAGE[ turkish ] = "Kaynakça giriþi, farklý veriler ile belgede mevcut.";
+};
+
diff --git a/sw/source/ui/index/makefile.mk b/sw/source/ui/index/makefile.mk
new file mode 100644
index 000000000000..60b1812990bb
--- /dev/null
+++ b/sw/source/ui/index/makefile.mk
@@ -0,0 +1,105 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:43 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=index
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ cnttab.cxx \
+ idxmrk.cxx \
+ multmrk.cxx \
+ toxmgr.cxx
+
+SRCFILES = \
+ cnttab.src \
+ idxmrk.src \
+ multmrk.src
+
+SLOFILES = \
+ $(SLO)$/cnttab.obj \
+ $(SLO)$/idxmrk.obj \
+ $(SLO)$/multmrk.obj \
+ $(SLO)$/toxmgr.obj
+
+EXCEPTIONSFILES = \
+ $(SLO)$/cnttab.obj \
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/index/multmrk.cxx b/sw/source/ui/index/multmrk.cxx
new file mode 100644
index 000000000000..2baf57d5144e
--- /dev/null
+++ b/sw/source/ui/index/multmrk.cxx
@@ -0,0 +1,224 @@
+/*************************************************************************
+ *
+ * $RCSfile: multmrk.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "swtypes.hxx"
+
+#include "multmrk.hxx"
+#include "toxmgr.hxx"
+
+#include "index.hrc"
+#include "multmrk.hrc"
+
+
+SwMultiTOXMarkDlg::SwMultiTOXMarkDlg( Window* pParent, SwTOXMgr& rTOXMgr ) :
+
+ SvxStandardDialog(pParent, SW_RES(DLG_MULTMRK)),
+
+ aEntryFT(this, SW_RES(FT_ENTRY)),
+ aTextFT(this, SW_RES(FT_TEXT)),
+ aTOXFT(this, SW_RES(FT_TOX)),
+ aOkBT(this, SW_RES(OK_BT)),
+ aCancelBT(this, SW_RES(CANCEL_BT)),
+ aTOXLB(this, SW_RES(LB_TOX)),
+ aTOXGB(this, SW_RES(GB_TOX)),
+ rMgr( rTOXMgr ),
+ nPos(0)
+{
+ aTOXLB.SetSelectHdl(LINK(this, SwMultiTOXMarkDlg, SelectHdl));
+
+ USHORT nSize = rMgr.GetTOXMarkCount();
+ for(USHORT i=0; i < nSize; ++i)
+ aTOXLB.InsertEntry(rMgr.GetTOXMark(i)->GetText());
+
+ aTOXLB.SelectEntryPos(0);
+ aTextFT.SetText(rMgr.GetTOXMark(0)->GetTOXType()->GetTypeName());
+
+ FreeResource();
+}
+
+
+IMPL_LINK_INLINE_START( SwMultiTOXMarkDlg, SelectHdl, ListBox *, pBox )
+{
+ if(pBox->GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND)
+ { SwTOXMark* pMark = rMgr.GetTOXMark(pBox->GetSelectEntryPos());
+ aTextFT.SetText(pMark->GetTOXType()->GetTypeName());
+ nPos = pBox->GetSelectEntryPos();
+ }
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwMultiTOXMarkDlg, SelectHdl, ListBox *, pBox )
+
+
+void SwMultiTOXMarkDlg::Apply()
+{
+ rMgr.SetCurTOXMark(nPos);
+}
+
+/*-----------------25.02.94 22:06-------------------
+ dtor ueberladen
+--------------------------------------------------*/
+
+
+SwMultiTOXMarkDlg::~SwMultiTOXMarkDlg() {}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.28 2000/09/18 16:05:53 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.27 1997/11/05 11:43:50 OS
+ Segmentierung entfernt
+
+
+ Rev 1.26 05 Nov 1997 12:43:50 OS
+ Segmentierung entfernt
+
+ Rev 1.25 03 Nov 1997 13:20:56 MA
+ precomp entfernt
+
+ Rev 1.24 14 Nov 1996 15:34:12 TRI
+ includes
+
+ Rev 1.23 11 Nov 1996 10:55:34 MA
+ ResMgr
+
+ Rev 1.22 26 Jul 1996 21:04:22 MA
+ includes
+
+ Rev 1.21 06 Feb 1996 15:20:48 JP
+ Link Umstellung 305
+
+ Rev 1.20 24 Nov 1995 16:59:04 OM
+ PCH->PRECOMPILED
+
+ Rev 1.19 08 Nov 1995 13:47:00 OM
+ Change->Set
+
+ Rev 1.18 30 Aug 1995 14:07:02 MA
+ fix: sexport'iert
+
+ Rev 1.17 21 Aug 1995 09:36:02 MA
+ chg: swstddlg -> svxstandarddialog, Optimierungen
+
+ Rev 1.16 25 Oct 1994 18:18:46 ER
+ add: PCH
+
+ Rev 1.15 26 Feb 1994 02:03:52 ER
+ virt. dtor mit export
+
+ Rev 1.14 25 Feb 1994 22:07:08 ER
+ virtuellen dtor wegen export ueberladen
+
+ Rev 1.13 22 Feb 1994 14:39:38 ER
+ EXPORT --> SEXPORT
+
+ Rev 1.12 21 Feb 1994 22:39:20 ER
+ LINK EXPORT
+
+ Rev 1.11 17 Feb 1994 08:46:28 MI
+ SEG_FUNCDEFS ausgefuellt
+
+ Rev 1.10 16 Feb 1994 20:07:06 MI
+ SEG_FUNCDEFS ausgefuellt
+
+ Rev 1.9 16 Feb 1994 16:46:26 MI
+ Pragmas zurechtgerueckt
+
+ Rev 1.8 28 Jan 1994 11:43:50 MI
+ TCOV() entfernt, SW_... nach SEG_... umbenannt
+
+ Rev 1.7 13 Jan 1994 08:44:40 MI
+ Segmentierung per #define ermoeglicht
+
+ Rev 1.6 09 Jan 1994 21:12:12 MI
+ Provisorische Segmentierung
+
+ Rev 1.5 26 Sep 1993 18:42:02 MI
+ Segmentierung
+
+ Rev 1.4 28 May 1993 11:48:22 VB
+ Umstellung Precompiled Headers
+
+ Rev 1.3 26 May 1993 10:36:32 MS
+ Anpassung SwTOXMgr
+
+ Rev 1.2 27 Apr 1993 08:37:28 OK
+ NEU: #pragma hdrstop
+
+ Rev 1.1 26 Apr 1993 11:49:12 MS
+ Markentraveling aktiviert
+
+ Rev 1.0 25 Feb 1993 14:47:06 MS
+ Initial revision.
+
+ Rev 1.12 23 Feb 1993 13:42:18 MS
+ Form auswerten
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/index/multmrk.hrc b/sw/source/ui/index/multmrk.hrc
new file mode 100644
index 000000000000..254a01664612
--- /dev/null
+++ b/sw/source/ui/index/multmrk.hrc
@@ -0,0 +1,68 @@
+/*************************************************************************
+ *
+ * $RCSfile: multmrk.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 FT_ENTRY 1
+#define FT_TOX 2
+#define OK_BT 3
+#define LB_TOX 4
+#define FT_TEXT 5
+#define GB_TOX 6
+#define CANCEL_BT 7
+
diff --git a/sw/source/ui/index/multmrk.src b/sw/source/ui/index/multmrk.src
new file mode 100644
index 000000000000..b99b69001171
--- /dev/null
+++ b/sw/source/ui/index/multmrk.src
@@ -0,0 +1,217 @@
+/*************************************************************************
+ *
+ * $RCSfile: multmrk.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "index.hrc"
+#include "multmrk.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ModalDialog DLG_MULTMRK
+{
+ HelpID = FN_EDIT_IDX_ENTRY_DLG ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 220 , 95 ) ;
+ Text = "Verzeichnismarkierungen" ;
+ Text [ English ] = "Index marks" ;
+ Text [ norwegian ] = "Stikkordregistermerker" ;
+ Text [ italian ] = "Contrassegni indice" ;
+ Text [ portuguese_brazilian ] = "Marcas do índice" ;
+ Text [ portuguese ] = "Marcas do índice" ;
+ Text [ finnish ] = "Hakemistomerkinnät" ;
+ Text [ danish ] = "Indeksmarkeringer" ;
+ Text [ french ] = "Marques d'index" ;
+ Text [ swedish ] = "Förteckningsmarkeringar" ;
+ Text [ dutch ] = "Indexmarkeringen" ;
+ Text [ spanish ] = "Marcas del índice" ;
+ Text [ english_us ] = "Index Markings" ;
+ Moveable = TRUE ;
+ FixedText FT_ENTRY
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 41 , 8 ) ;
+ Text = "Verzeichnis" ;
+ Text [ English ] = "Index" ;
+ Text [ norwegian ] = "Stikkordregister" ;
+ Text [ italian ] = "Indice" ;
+ Text [ portuguese_brazilian ] = "Índice" ;
+ Text [ portuguese ] = "Índice" ;
+ Text [ finnish ] = "Hakemisto" ;
+ Text [ danish ] = "Indeks" ;
+ Text [ french ] = "Index" ;
+ Text [ swedish ] = "Förteckning" ;
+ Text [ dutch ] = "Index" ;
+ Text [ spanish ] = "Índice" ;
+ Text [ english_us ] = "Index" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ŀ¼";
+ Text[ russian ] = "Óêàçàòåëü";
+ Text[ polish ] = "Indeks";
+ Text[ japanese ] = "õˆø";
+ Text[ chinese_traditional ] = "¥Ø¿ý";
+ Text[ arabic ] = "ÇáÝåÑÓ";
+ Text[ dutch ] = "Index";
+ Text[ chinese_simplified ] = "Ŀ¼";
+ Text[ greek ] = "ÅõñåôÞñéï";
+ Text[ korean ] = "»öÀÎ";
+ Text[ turkish ] = "Dizin";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_TEXT
+ {
+ Pos = MAP_APPFONT ( 53 , 14 ) ;
+ Size = MAP_APPFONT ( 100 , 8 ) ;
+ Left = TRUE ;
+ };
+ FixedText FT_TOX
+ {
+ Pos = MAP_APPFONT ( 12 , 28 ) ;
+ Size = MAP_APPFONT ( 41 , 8 ) ;
+ Text = "Eintrag" ;
+ Text [ English ] = "Entry" ;
+ Text [ norwegian ] = "Inngang" ;
+ Text [ italian ] = "Voce" ;
+ Text [ portuguese_brazilian ] = "Entrada" ;
+ Text [ portuguese ] = "Entrada" ;
+ Text [ finnish ] = "Merkintä" ;
+ Text [ danish ] = "Element" ;
+ Text [ french ] = "Entrée" ;
+ Text [ swedish ] = "Post" ;
+ Text [ dutch ] = "Item" ;
+ Text [ spanish ] = "Entrada" ;
+ Text [ english_us ] = "Entry" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÌõÄ¿";
+ Text[ russian ] = "Ýëåìåíò";
+ Text[ polish ] = "Wpis";
+ Text[ japanese ] = "€–Ú";
+ Text[ chinese_traditional ] = "¶µ¥Ø";
+ Text[ arabic ] = "ÇáÅÏÎÇá";
+ Text[ dutch ] = "Item";
+ Text[ chinese_simplified ] = "ÌõÄ¿";
+ Text[ greek ] = "Êáôá÷þñéóç";
+ Text[ korean ] = "Ç׸ñ";
+ Text[ turkish ] = "Giriþ";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton OK_BT
+ {
+ Pos = MAP_APPFONT ( 165 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton CANCEL_BT
+ {
+ Pos = MAP_APPFONT ( 165 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ ListBox LB_TOX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 53 , 28 ) ;
+ Size = MAP_APPFONT ( 100 , 52 ) ;
+ TabStop = TRUE ;
+ AutoHScroll = TRUE ;
+ };
+ GroupBox GB_TOX
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 153 , 85 ) ;
+ Text = "Auswahl" ;
+ Text [ English ] = "Choice" ;
+ Text [ norwegian ] = "Choice" ;
+ Text [ italian ] = "Scelta" ;
+ Text [ portuguese_brazilian ] = "Escolha" ;
+ Text [ portuguese ] = "Opções" ;
+ Text [ finnish ] = "Määritykset" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ french ] = "Sélection" ;
+ Text [ swedish ] = "Urval" ;
+ Text [ dutch ] = "Selectie" ;
+ Text [ spanish ] = "Opción" ;
+ Text [ english_us ] = "Selection" ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ";
+ Text[ russian ] = "Îòáîð";
+ Text[ polish ] = "Wybór";
+ Text[ japanese ] = "‘I‘ð";
+ Text[ chinese_traditional ] = "¿ï¾Ü";
+ Text[ arabic ] = "ÊÍÏíÏ";
+ Text[ dutch ] = "Selectie";
+ Text[ chinese_simplified ] = "Ñ¡Ôñ";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ turkish ] = "Seçim";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "Ŀ¼±ê¼Ç";
+ Text[ russian ] = "Âûäåëåíèÿ óêàçàòåëÿ";
+ Text[ polish ] = "Znaczniki indeksu";
+ Text[ japanese ] = "õˆø‘I‘ð€–Ú";
+ Text[ chinese_traditional ] = "¯Á¤Þ¿ï¨ú";
+ Text[ arabic ] = "ÊÍÏíÏÇÊ ÇáÝåÑÓ";
+ Text[ dutch ] = "Indexmarkeringen";
+ Text[ chinese_simplified ] = "Ŀ¼±ê¼Ç";
+ Text[ greek ] = "ÓçìÜíóåéò åõñåôçñßïõ";
+ Text[ korean ] = "»öÀΠǥ½Ã";
+ Text[ turkish ] = "Dizin için iþaretlenen giriþler";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/index/toxmgr.cxx b/sw/source/ui/index/toxmgr.cxx
new file mode 100644
index 000000000000..cd937c8b2f01
--- /dev/null
+++ b/sw/source/ui/index/toxmgr.cxx
@@ -0,0 +1,798 @@
+/*************************************************************************
+ *
+ * $RCSfile: toxmgr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _SHELLRES_HXX
+#include <shellres.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+#ifndef _SWVIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _TOXMGR_HXX
+#include <toxmgr.hxx>
+#endif
+#ifndef _AUTHFLD_HXX
+#include <authfld.hxx>
+#endif
+
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+
+/*-----------------23.01.98 07:41-------------------
+ Standard - Verzeichnisnamen herausreichen
+--------------------------------------------------*/
+const String& SwTOXBase::GetTOXName(TOXTypes eType)
+{
+ const String* pRet;
+ ShellResource* pShellRes = ViewShell::GetShellRes();
+ switch(eType)
+ {
+ case TOX_CONTENT : pRet = &pShellRes->aTOXContentName; break;
+ case TOX_INDEX : pRet = &pShellRes->aTOXIndexName; break;
+ case TOX_USER : pRet = &pShellRes->aTOXUserName; break;
+ case TOX_ILLUSTRATIONS: pRet = &pShellRes->aTOXIllustrationsName; break;
+ case TOX_OBJECTS : pRet = &pShellRes->aTOXObjectsName; break;
+ case TOX_TABLES : pRet = &pShellRes->aTOXTablesName; break;
+ case TOX_AUTHORITIES : pRet = &pShellRes->aTOXAuthoritiesName; break;
+ }
+ return *pRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Handhabung der Verzeichnisse durch TOXMgr
+ --------------------------------------------------------------------*/
+
+
+SwTOXMgr::SwTOXMgr(SwWrtShell* pShell):
+ pSh(pShell)
+{
+ GetTOXMarks();
+ SetCurTOXMark(0);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Aktuelle TOXMarks behandeln
+ --------------------------------------------------------------------*/
+
+
+USHORT SwTOXMgr::GetTOXMarks()
+{
+ return pSh->GetCurTOXMarks(aCurMarks);
+}
+
+
+SwTOXMark* SwTOXMgr::GetTOXMark(USHORT nId)
+{
+ if(aCurMarks.Count() > 0)
+ return aCurMarks[nId];
+ return 0;
+}
+
+
+void SwTOXMgr::DeleteTOXMark()
+{
+ SwTOXMark* pNext = 0;
+ if( pCurTOXMark )
+ {
+ pNext = (SwTOXMark*)&pSh->GotoTOXMark( *pCurTOXMark, TOX_NXT );
+ if( pNext == pCurTOXMark )
+ pNext = 0;
+
+ pSh->DeleteTOXMark( pCurTOXMark );
+ pSh->SetModified();
+ }
+ // zur naechsten wandern
+ pCurTOXMark = pNext;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Stichwortmarkierung einfuegen
+ --------------------------------------------------------------------*/
+
+
+/*void SwTOXMgr::InsertTOIMark(const String* pPrimKey, const String* pSecKey,
+ const String* pAltStr)
+{
+ SwTOXMark aMark(pSh->GetTOXType(TOX_INDEX, 0));
+
+ if( pPrimKey && pPrimKey->Len() )
+ {
+ aMark.SetPrimaryKey( *pPrimKey );
+
+ if( pSecKey && pSecKey->Len() )
+ aMark.SetSecondaryKey( *pSecKey );
+ }
+
+ if(pAltStr)
+ aMark.SetAlternativeText(*pAltStr);
+
+ pSh->StartAllAction();
+ pSh->SwEditShell::Insert(aMark);
+ pSh->EndAllAction();
+
+}
+/*--------------------------------------------------------------------
+ Beschreibung: Inhaltsverzeichnismarkierung einfuegen
+ --------------------------------------------------------------------*/
+
+
+/*void SwTOXMgr::InsertTOCMark(int nLevel, const String* pAltStr)
+{
+ ASSERT(nLevel > 0 && nLevel <= MAXLEVEL, ungueltiger Level InsertTOCMark);
+ SwTOXMark aMark(pSh->GetTOXType(TOX_CONTENT, 0));
+ aMark.SetLevel(nLevel);
+
+ if(pAltStr)
+ aMark.SetAlternativeText(*pAltStr);
+
+ pSh->StartAllAction();
+ pSh->SwEditShell::Insert(aMark);
+ pSh->EndAllAction();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Benutzerverzeichnismarkierungen einfuegen
+ --------------------------------------------------------------------*/
+
+
+/*void SwTOXMgr::InsertTOUMark(const String& rTOUName, int nLevel,
+ const String* pAltStr)
+{
+ ASSERT(nLevel > 0 && nLevel <= MAXLEVEL, ungueltiger Level InsertTOCMark);
+ USHORT nId = GetUserTypeID(rTOUName);
+ SwTOXMark aMark(pSh->GetTOXType(TOX_USER, nId));
+ aMark.SetLevel(nLevel);
+
+ if(pAltStr)
+ aMark.SetAlternativeText(*pAltStr);
+
+ pSh->StartAllAction();
+ pSh->SwEditShell::Insert(aMark);
+ pSh->EndAllAction();
+}
+/* -----------------20.08.99 10:48-------------------
+
+ --------------------------------------------------*/
+void SwTOXMgr::InsertTOXMark(const SwTOXMarkDescription& rDesc)
+{
+ SwTOXMark* pMark = 0;
+ switch(rDesc.GetTOXType())
+ {
+ case TOX_CONTENT:
+ {
+ ASSERT(rDesc.GetLevel() > 0 && rDesc.GetLevel() <= MAXLEVEL,
+ ungueltiger Level InsertTOCMark);
+ pMark = new SwTOXMark(pSh->GetTOXType(TOX_CONTENT, 0));
+ pMark->SetLevel(rDesc.GetLevel());
+
+ if(rDesc.GetAltStr())
+ pMark->SetAlternativeText(*rDesc.GetAltStr());
+ }
+ break;
+ case TOX_INDEX:
+ {
+ pMark = new SwTOXMark(pSh->GetTOXType(TOX_INDEX, 0));
+
+ if( rDesc.GetPrimKey() && rDesc.GetPrimKey()->Len() )
+ {
+ pMark->SetPrimaryKey( *rDesc.GetPrimKey() );
+
+ if( rDesc.GetSecKey() && rDesc.GetSecKey()->Len() )
+ pMark->SetSecondaryKey( *rDesc.GetSecKey() );
+ }
+ if(rDesc.GetAltStr())
+ pMark->SetAlternativeText(*rDesc.GetAltStr());
+ pMark->SetMainEntry(rDesc.IsMainEntry());
+ }
+ break;
+ case TOX_USER:
+ {
+ ASSERT(rDesc.GetLevel() > 0 && rDesc.GetLevel() <= MAXLEVEL,
+ ungueltiger Level InsertTOCMark);
+ USHORT nId = rDesc.GetTOUName() ?
+ GetUserTypeID(*rDesc.GetTOUName()) : 0;
+ pMark = new SwTOXMark(pSh->GetTOXType(TOX_USER, nId));
+ pMark->SetLevel(rDesc.GetLevel());
+
+ if(rDesc.GetAltStr())
+ pMark->SetAlternativeText(*rDesc.GetAltStr());
+ }
+ break;
+ }
+ pSh->StartAllAction();
+ pSh->SwEditShell::Insert(*pMark);
+ pSh->EndAllAction();
+}
+/*--------------------------------------------------------------------
+ Beschreibung: Update eines TOXMarks
+ --------------------------------------------------------------------*/
+
+
+void SwTOXMgr::UpdateTOXMark(const SwTOXMarkDescription& rDesc)
+{
+ ASSERT(pCurTOXMark, "kein aktuelles TOXMark");
+
+ pSh->StartAllAction();
+ if(pCurTOXMark->GetTOXType()->GetType() == TOX_INDEX)
+ {
+ if(rDesc.GetPrimKey() && rDesc.GetPrimKey()->Len() )
+ {
+ pCurTOXMark->SetPrimaryKey( *rDesc.GetPrimKey() );
+
+ if( rDesc.GetSecKey() && rDesc.GetSecKey()->Len() )
+ pCurTOXMark->SetSecondaryKey( *rDesc.GetSecKey() );
+ else
+ pCurTOXMark->SetSecondaryKey( aEmptyStr );
+ }
+ else
+ pCurTOXMark->SetPrimaryKey( aEmptyStr );
+ pCurTOXMark->SetMainEntry(rDesc.IsMainEntry());
+ }
+ else
+ pCurTOXMark->SetLevel(rDesc.GetLevel());
+
+ if(rDesc.GetAltStr())
+ {
+ // JP 26.08.96: Bug 30344 - entweder der Text aus dem Doc oder
+ // ein Alternativ-Text, beides gibts nicht!
+ BOOL bReplace = pCurTOXMark->IsAlternativeText();
+ pCurTOXMark->SetAlternativeText( *rDesc.GetAltStr() );
+ if( !bReplace )
+ {
+ SwTOXMark aCpy( *pCurTOXMark );
+ aCurMarks.Remove(0, aCurMarks.Count());
+ pSh->DeleteTOXMark(pCurTOXMark);
+ pSh->SwEditShell::Insert( aCpy );
+ pCurTOXMark = 0;
+ }
+ }
+ pSh->SetModified();
+ pSh->EndAllAction();
+ // Bug 36207 pCurTOXMark zeigt hier in den Wald!
+ if(!pCurTOXMark)
+ {
+ pSh->Left();
+ pSh->GetCurTOXMarks(aCurMarks);
+ SetCurTOXMark(0);
+ }
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: UserTypeID ermitteln
+ --------------------------------------------------------------------*/
+
+
+USHORT SwTOXMgr::GetUserTypeID(const String& rStr)
+{
+ USHORT nSize = pSh->GetTOXTypeCount(TOX_USER);
+ for(USHORT i=0; i < nSize; ++i)
+ {
+ const SwTOXType* pTmp = pSh->GetTOXType(TOX_USER, i);
+ if(pTmp && pTmp->GetTypeName() == rStr)
+ return i;
+ }
+ SwTOXType aUserType(TOX_USER, rStr);
+ pSh->InsertTOXType(aUserType);
+ return nSize;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Traveling zwischen den TOXMarks
+ --------------------------------------------------------------------*/
+
+
+void SwTOXMgr::NextTOXMark(BOOL bSame)
+{
+ ASSERT(pCurTOXMark, "kein aktuelles TOXMark");
+ if( pCurTOXMark )
+ {
+ SwTOXSearch eDir = bSame ? TOX_SAME_NXT : TOX_NXT;
+ pCurTOXMark = (SwTOXMark*)&pSh->GotoTOXMark( *pCurTOXMark, eDir );
+ }
+}
+
+
+void SwTOXMgr::PrevTOXMark(BOOL bSame)
+{
+ ASSERT(pCurTOXMark, "kein aktuelles TOXMark");
+ if( pCurTOXMark )
+ {
+ SwTOXSearch eDir = bSame ? TOX_SAME_PRV : TOX_PRV;
+ pCurTOXMark = (SwTOXMark*)&pSh->GotoTOXMark(*pCurTOXMark, eDir );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Stichwortverzeichnis einfuegen
+ --------------------------------------------------------------------*/
+
+/*
+void SwTOXMgr::InsertTOI(const USHORT nOptions, const String* pTitel,
+ const SwForm* pForm,
+ SwTOXBase** ppBase)
+{
+ SwWait aWait( *pSh->GetView().GetDocShell(), TRUE );
+
+ const SwTOXType* pType = pSh->GetTOXType(TOX_INDEX, 0);
+
+ SwForm aForm(TOX_INDEX);
+ SwTOXBase* pTOX = new SwTOXBase(pType, aForm, TOX_MARK, pType->GetTypeName());
+ pTOX->SetOptions(nOptions);
+
+ if(pTitel) pTOX->SetTitle(*pTitel);
+ if(pForm) pTOX->SetTOXForm(*pForm);
+
+ // wird ppBase uebergeben, dann wird das TOXBase hier nur erzeugt
+ // und dann ueber den Dialog in ein Globaldokument eingefuegt
+ if(ppBase)
+ (*ppBase) = pTOX;
+ else
+ {
+ pSh->InsertTableOf(*pTOX);
+ delete pTOX;
+ }
+}
+
+
+BOOL SwTOXMgr::UpdateTOI(const USHORT nOptions, const String* pTitel,
+ const SwForm* pForm)
+{
+ if(pSh->HasSelection())
+ pSh->DelRight();
+ SwTOXBase* pTOX = (SwTOXBase*)GetCurTOX();
+ if(!pTOX)
+ {
+ InsertTOI(nOptions, pTitel, pForm);
+ return TRUE;
+ }
+
+ SwWait aWait( *pSh->GetView().GetDocShell(), TRUE );
+
+ pTOX->SetOptions(nOptions);
+ if(pTitel) pTOX->SetTitle(*pTitel);
+ if(pForm) pTOX->SetTOXForm(*pForm);
+
+ BOOL bRet = pSh->UpdateTableOf(*pTOX);
+
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Inhaltsverzeichnis einfuegen
+ --------------------------------------------------------------------*/
+
+/*
+void SwTOXMgr::InsertTOC(const USHORT nContent, int nLevel,
+ const String* pTitel, const SwForm* pForm,
+ SwTOXBase** ppBase)
+{
+ SwWait aWait( *pSh->GetView().GetDocShell(), TRUE );
+
+ const SwTOXType* pType = pSh->GetTOXType(TOX_CONTENT, 0);
+ SwForm aForm(TOX_CONTENT);
+
+ SwTOXBase* pTOX = new SwTOXBase(pType, aForm, nContent, pType->GetTypeName());
+
+ pTOX->SetLevel(nLevel);
+ if(pTitel) pTOX->SetTitle(*pTitel);
+ if(pForm) pTOX->SetTOXForm(*pForm);
+ if(ppBase)
+ (*ppBase) = pTOX;
+ else
+ {
+ pSh->InsertTableOf(*pTOX);
+ delete pTOX;
+ }
+}
+
+
+BOOL SwTOXMgr::UpdateTOC(const USHORT nContent,int nLevel,
+ const String* pTitel, const SwForm* pForm)
+{
+ if(pSh->HasSelection())
+ pSh->DelRight();
+ SwTOXBase* pTOX = (SwTOXBase*)GetCurTOX();
+ if(!pTOX)
+ {
+ InsertTOC(nContent, nLevel, pTitel, pForm);
+ return TRUE;
+ }
+
+ SwWait aWait( *pSh->GetView().GetDocShell(), TRUE );
+
+ pTOX->SetCreate(nContent);
+ pTOX->SetLevel(nLevel);
+
+ if(pTitel) pTOX->SetTitle(*pTitel);
+ if(pForm) pTOX->SetTOXForm(*pForm);
+
+ BOOL bRet = pSh->UpdateTableOf(*pTOX);
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Userverzeichnis einfuegen
+ --------------------------------------------------------------------*/
+
+/*
+ void SwTOXMgr::InsertTOU(const USHORT nContent, const String* pTOUName,
+ const String* pTemplateName, int nLevel,
+ const String* pTitel,
+ const SwForm* pForm, SwTOXBase** ppBase)
+{
+ SwWait aWait( *pSh->GetView().GetDocShell(), TRUE );
+
+ USHORT nPos = 0;
+ USHORT nSize = pSh->GetTOXTypeCount(TOX_USER);
+ for(USHORT i=0; pTOUName && i < nSize; ++i)
+ { const SwTOXType* pType = pSh->GetTOXType(TOX_USER, i);
+ if(pType->GetTypeName() == *pTOUName)
+ { nPos = i;
+ break;
+ }
+ }
+ const SwTOXType* pType = pSh->GetTOXType(TOX_USER, nPos);
+
+ SwForm aForm(TOX_USER);
+ SwTOXBase* pTOX = new SwTOXBase(pType, aForm, nContent, pType->GetTypeName());
+
+ if(pTemplateName) pTOX->SetTemplateName(*pTemplateName);
+ if(pTitel) pTOX->SetTitle(*pTitel);
+ if(pForm) pTOX->SetTOXForm(*pForm);
+
+ if(ppBase)
+ (*ppBase) = pTOX;
+ else
+ {
+ pSh->InsertTableOf(*pTOX);
+ delete pTOX;
+ }
+}
+
+
+BOOL SwTOXMgr::UpdateTOU(const USHORT nContent,
+ const String* pTOUName,
+ const String* pTemplateName,
+ int nLevel,
+ const String* pTitel, const SwForm* pForm)
+{
+ if(pSh->HasSelection())
+ pSh->DelRight();
+ SwTOXBase* pTOX = (SwTOXBase*)GetCurTOX();
+ if(!pTOX)
+ {
+ InsertTOU(nContent, pTOUName, pTemplateName, nLevel, pTitel, pForm);
+ return TRUE;
+ }
+
+ SwWait aWait( *pSh->GetView().GetDocShell(), TRUE );
+
+ pTOX->SetCreate(nContent);
+ if(pTemplateName) pTOX->SetTemplateName(*pTemplateName);
+ if(pTitel) pTOX->SetTitle(*pTitel);
+ if(pForm) pTOX->SetTOXForm(*pForm);
+
+ BOOL bRet = pSh->UpdateTableOf(*pTOX);
+ return bRet;
+}
+*/
+
+const SwTOXBase* SwTOXMgr::GetCurTOX()
+{
+ return pSh->GetCurTOX();
+}
+
+const SwTOXType* SwTOXMgr::GetTOXType(TOXTypes eTyp, USHORT nId) const
+{
+ return pSh->GetTOXType(eTyp, nId);
+}
+
+void SwTOXMgr::SetCurTOXMark(USHORT nId)
+{
+ pCurTOXMark = (nId < aCurMarks.Count()) ? aCurMarks[nId] : 0;
+}
+
+/* -----------------01.07.99 16:23-------------------
+
+ --------------------------------------------------*/
+
+BOOL SwTOXMgr::UpdateOrInsertTOX(const SwTOXDescription& rDesc,
+ SwTOXBase** ppBase,
+ const SfxItemSet* pSet)
+{
+ SwWait aWait( *pSh->GetView().GetDocShell(), TRUE );
+ BOOL bRet = TRUE;
+ const SwTOXBase* pCurTOX = GetCurTOX();
+ SwTOXBase* pTOX = (SwTOXBase*)pCurTOX;
+ TOXTypes eCurTOXType = rDesc.GetTOXType();
+ if(pCurTOX && !ppBase && pSh->HasSelection())
+ pSh->DelRight();
+
+ switch(eCurTOXType)
+ {
+ case TOX_INDEX :
+ {
+ if(!pCurTOX || ppBase)
+ {
+ const SwTOXType* pType = pSh->GetTOXType(eCurTOXType, 0);
+ SwForm aForm(eCurTOXType);
+ pTOX = new SwTOXBase(pType, aForm, TOX_MARK, pType->GetTypeName());
+ }
+ pTOX->SetOptions(rDesc.GetIndexOptions());
+ pTOX->SetMainEntryCharStyle(rDesc.GetMainEntryCharStyle());
+ pSh->SetTOIAutoMarkURL(rDesc.GetAutoMarkURL());
+ pSh->ApplyAutoMark();
+ }
+ break;
+ case TOX_CONTENT :
+ {
+ if(!pCurTOX || ppBase)
+ {
+ const SwTOXType* pType = pSh->GetTOXType(eCurTOXType, 0);
+ SwForm aForm(eCurTOXType);
+ pTOX = new SwTOXBase(pType, aForm, rDesc.GetContentOptions(), pType->GetTypeName());
+ }
+ pTOX->SetCreate(rDesc.GetContentOptions());
+ pTOX->SetLevel(rDesc.GetLevel());
+ }
+ break;
+ case TOX_USER :
+ {
+ if(!pCurTOX || ppBase)
+ {
+ USHORT nPos = 0;
+ USHORT nSize = pSh->GetTOXTypeCount(eCurTOXType);
+ for(USHORT i=0; rDesc.GetTOUName() && i < nSize; ++i)
+ { const SwTOXType* pType = pSh->GetTOXType(TOX_USER, i);
+ if(pType->GetTypeName() == *rDesc.GetTOUName())
+ { nPos = i;
+ break;
+ }
+ }
+ const SwTOXType* pType = pSh->GetTOXType(eCurTOXType, nPos);
+
+ SwForm aForm(eCurTOXType);
+ pTOX = new SwTOXBase(pType, aForm, rDesc.GetContentOptions(), pType->GetTypeName());
+
+ }
+ else
+ {
+ SwTOXBase* pTOX = (SwTOXBase*)pCurTOX;
+ pTOX->SetCreate(rDesc.GetContentOptions());
+ }
+ pTOX->SetLevelFromChapter(rDesc.IsLevelFromChapter());
+ }
+ break;
+ case TOX_OBJECTS:
+ case TOX_TABLES:
+ case TOX_AUTHORITIES:
+ case TOX_ILLUSTRATIONS:
+ {
+ //Special handling for TOX_AUTHORITY
+ if(TOX_AUTHORITIES == eCurTOXType)
+ {
+ SwAuthorityFieldType* pFType = (SwAuthorityFieldType*)
+ pSh->GetFldType(RES_AUTHORITY, aEmptyStr);
+ if(pFType)
+ {
+ pFType->SetPreSuffix(rDesc.GetAuthBrackets().GetChar(0),
+ rDesc.GetAuthBrackets().GetChar(1));
+ pFType->SetSequence(rDesc.IsAuthSequence());
+ SwTOXSortKey rArr[3];
+ rArr[0] = rDesc.GetSortKey1();
+ rArr[1] = rDesc.GetSortKey2();
+ rArr[2] = rDesc.GetSortKey3();
+ pFType->SetSortKeys(3, rArr);
+ pFType->SetSortByDocument(rDesc.IsSortByDocument());
+
+ pFType->UpdateFlds();
+ }
+ }
+ // TODO: consider properties of the current TOXType
+ if(!pCurTOX || ppBase)
+ {
+ const SwTOXType* pType = pSh->GetTOXType(eCurTOXType, 0);
+ SwForm aForm(eCurTOXType);
+ pTOX = new SwTOXBase(
+ pType, aForm,
+ TOX_AUTHORITIES == eCurTOXType ? TOX_MARK : 0, pType->GetTypeName());
+ }
+ else
+ {
+ if(pSh->HasSelection())
+ pSh->DelRight();
+ pTOX = (SwTOXBase*)pCurTOX;
+ }
+// pTOX->SetOptions(rDesc.GetIndexOptions());
+ pTOX->SetFromObjectNames(rDesc.IsCreateFromObjectNames());
+ pTOX->SetOLEOptions(rDesc.GetOLEOptions());
+ }
+ break;
+ }
+
+
+ DBG_ASSERT(pTOX, "no TOXBase created!" )
+ if(!pTOX)
+ return FALSE;
+ pTOX->SetFromChapter(rDesc.IsFromChapter());
+ pTOX->SetSequenceName(rDesc.GetSequenceName());
+ pTOX->SetCaptionDisplay(rDesc.GetCaptionDisplay());
+ pTOX->SetProtected(rDesc.IsReadonly());
+
+ for(USHORT nLevel = 0; nLevel < MAXLEVEL; nLevel++)
+ pTOX->SetStyleNames(rDesc.GetStyleNames(nLevel), nLevel);
+
+ if(rDesc.GetTitle())
+ pTOX->SetTitle(*rDesc.GetTitle());
+ if(rDesc.GetForm())
+ pTOX->SetTOXForm(*rDesc.GetForm());
+ if(!pCurTOX || ppBase)
+ {
+ // wird ppBase uebergeben, dann wird das TOXBase hier nur erzeugt
+ // und dann ueber den Dialog in ein Globaldokument eingefuegt
+ if(ppBase)
+ (*ppBase) = pTOX;
+ else
+ {
+ pSh->InsertTableOf(*pTOX, pSet);
+ delete pTOX;
+ }
+ }
+ else
+ bRet = pSh->UpdateTableOf(*pTOX, pSet);
+
+ return bRet;
+}
+/* -----------------20.10.99 14:11-------------------
+
+ --------------------------------------------------*/
+void SwTOXDescription::SetSortKeys(SwTOXSortKey eKey1,
+ SwTOXSortKey eKey2,
+ SwTOXSortKey eKey3)
+{
+ SwTOXSortKey aArr[3];
+ USHORT nPos = 0;
+ if(AUTH_FIELD_END > eKey1.eField)
+ aArr[nPos++] = eKey1;
+ if(AUTH_FIELD_END > eKey2.eField)
+ aArr[nPos++] = eKey2;
+ if(AUTH_FIELD_END > eKey3.eField)
+ aArr[nPos++] = eKey3;
+
+ eSortKey1 = aArr[0];
+ eSortKey2 = aArr[1];
+ eSortKey3 = aArr[2];
+}
+
+/* -----------------10.09.99 10:02-------------------
+
+ --------------------------------------------------*/
+void SwTOXDescription::ApplyTo(SwTOXBase& rTOXBase)
+{
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ rTOXBase.SetStyleNames(GetStyleNames(i), i);
+ rTOXBase.SetTitle(GetTitle() ? *GetTitle() : aEmptyStr);
+// const String* GetTOUName() const {return pTOUName; }
+ rTOXBase.SetCreate(GetContentOptions());
+
+ if(GetTOXType() == TOX_INDEX)
+ rTOXBase.SetOptions(GetIndexOptions());
+ if(GetTOXType() != TOX_INDEX)
+ rTOXBase.SetLevel(GetLevel());
+ rTOXBase.SetFromObjectNames(IsCreateFromObjectNames());
+ rTOXBase.SetSequenceName(GetSequenceName());
+ rTOXBase.SetCaptionDisplay(GetCaptionDisplay());
+ rTOXBase.SetFromChapter(IsFromChapter());
+ rTOXBase.SetProtected(IsReadonly());
+ rTOXBase.SetOLEOptions(GetOLEOptions());
+ rTOXBase.SetLevelFromChapter(IsLevelFromChapter());
+
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.59 2000/09/18 16:05:53 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.58 2000/06/27 19:42:10 jp
+ Bug #70447#: select the current TOXMark if the EditDialog is open
+
+ Revision 1.57 1999/10/21 08:53:42 os
+ sorting authority entries by content
+
+ Revision 1.56 1999/10/20 06:37:21 os
+ rsequence impl., Brackets selectable
+
+ Revision 1.55 1999/10/05 14:20:43 os
+ no jumps to null-pointers
+
+ Revision 1.54 1999/09/10 08:30:20 os
+ use doc default TOXs
+
+ Revision 1.53 1999/09/08 12:42:45 os
+ new: Is/SetLevelFromChapter
+
+ Revision 1.52 1999/08/26 14:01:00 OS
+ AutoMark implemented
+
+
+ Rev 1.51 26 Aug 1999 16:01:00 OS
+ AutoMark implemented
+
+ Rev 1.50 25 Aug 1999 15:29:14 OS
+ extended indexes: OLEOptions
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/lingu/cvdata.mac b/sw/source/ui/lingu/cvdata.mac
new file mode 100644
index 000000000000..1f26c95fbe85
--- /dev/null
+++ b/sw/source/ui/lingu/cvdata.mac
@@ -0,0 +1,19 @@
+#############
+## Deutsch ##
+#############
+rename "GR_HYP.DAT" "German Hyph"
+setfile -c 'SW/g' -t 'Lexi' "German Hyph"
+rename "GR_SPL.DAT" "German Spell"
+setfile -c 'SW/g' -t 'Lexi' "German Spell"
+rename "GR_THE.DAT" "German Thes"
+setfile -c 'SW/g' -t 'Lexi' "German Thes"
+
+#############
+## English ##
+#############
+rename "EN_HYP.DAT" "English Hyph"
+setfile -c 'SW/g' -t 'Lexi' "English Hyph"
+rename "EN_SPL.DAT" "English Spell"
+setfile -c 'SW/g' -t 'Lexi' "English Spell"
+rename "EN_THE.DAT" "English Thes"
+setfile -c 'SW/g' -t 'Lexi' "English Thes"
diff --git a/sw/source/ui/lingu/hyp.cxx b/sw/source/ui/lingu/hyp.cxx
new file mode 100644
index 000000000000..da779423de7a
--- /dev/null
+++ b/sw/source/ui/lingu/hyp.cxx
@@ -0,0 +1,505 @@
+/*************************************************************************
+ *
+ * $RCSfile: hyp.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "initui.hxx"
+#include "view.hxx"
+#include "edtwin.hxx"
+#include "wrtsh.hxx"
+#include "globals.hrc"
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+
+#ifndef _LINGU_LNGPROPS_HHX_
+#include <lingu/lngprops.hxx>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+
+
+#include "hyp.hxx"
+#include "mdiexp.hxx"
+#include "olmenu.hrc"
+
+#define HYPHHERE '-'
+#define PSH (&pView->GetWrtShell())
+
+using namespace ::com::sun::star;
+using namespace ::rtl;
+#define C2U(cChar) OUString::createFromAscii(cChar)
+/*--------------------------------------------------------------------
+ Beschreibung: Interaktive Trennung
+ --------------------------------------------------------------------*/
+
+SwHyphWrapper::SwHyphWrapper( SwView* pVw,
+ uno::Reference< linguistic::XHyphenator > &rxHyph,
+ sal_Bool bStart, sal_Bool bOther, sal_Bool bSelect ) :
+ SvxSpellWrapper( &pVw->GetEditWin(), rxHyph, bStart, bOther ),
+ xHyph( rxHyph ),
+ nLangError( 0 ),
+ nPageCount( 0 ),
+ nPageStart( 0 ),
+ bInSelection( bSelect ),
+ bShowError( sal_False ),
+ pView( pVw )
+{
+ uno::Reference< beans::XPropertySet > xProp( GetLinguPropertySet() );
+ bAutomatic = xProp.is() ?
+ *(sal_Bool*)xProp->getPropertyValue( C2U(UPN_IS_HYPH_AUTO) ).getValue() : sal_False;
+ SetHyphen();
+}
+
+// -----------------------------------------------------------------------
+void SwHyphWrapper::SpellStart( SvxSpellArea eSpell )
+{
+ if( SVX_SPELL_OTHER == eSpell && nPageCount )
+ {
+ ::EndProgress( pView->GetDocShell() );
+ nPageCount = 0;
+ nPageStart = 0;
+ }
+ pView->HyphStart( eSpell );
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool SwHyphWrapper::SpellContinue()
+{
+ // Fuer autom. Trennung Aktionen erst am Ende sichtbar machen
+ SwWait *pWait;
+ if( bAutomatic )
+ {
+ PSH->StartAllAction();
+ pWait = new SwWait( *pView->GetDocShell(), sal_True );
+ }
+
+ uno::Reference< uno::XInterface > xHyphWord = bInSelection ?
+ PSH->HyphContinue( NULL, NULL ) :
+ PSH->HyphContinue( &nPageCount, &nPageStart );
+ SetLast( xHyphWord );
+
+ // Fuer autom. Trennung Aktionen erst am Ende sichtbar machen
+ if( bAutomatic )
+ {
+ PSH->EndAllAction();
+ delete pWait;
+ }
+
+ if( bShowError )
+ {
+ bShowError = sal_False;
+ PSH->Push();
+ PSH->ClearMark();
+ pView->SpellError( (void*)nLangError );
+ PSH->Combine();
+ }
+ return GetLast().is();
+}
+
+// -----------------------------------------------------------------------
+void SwHyphWrapper::SpellEnd()
+{
+ PSH->HyphEnd();
+ SvxSpellWrapper::SpellEnd();
+}
+
+IMPL_LINK( SwHyphWrapper, SpellError, void *, nLang )
+{
+ sal_uInt32 nNew = (sal_uInt32)nLang;
+ if( nNew != nLangError )
+ {
+ nLangError = nNew;
+ bShowError = sal_True;
+ }
+ return 0;
+}
+
+
+// -----------------------------------------------------------------------
+sal_Bool SwHyphWrapper::SpellMore()
+{
+ PSH->Push();
+ InfoBox( &pView->GetEditWin(), SW_RESSTR(STR_HYP_OK) ).Execute();
+ PSH->Combine();
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------
+
+void SwHyphWrapper::InsertHyphen( const sal_uInt16 nPos )
+{
+ if( nPos)
+ PSH->InsertSoftHyph( nPos + 1); // does nPos == 1 really mean
+ // insert hyphen after first char?
+ // (instead of nPos == 0)
+ else
+ PSH->HyphIgnore();
+}
+
+// -----------------------------------------------------------------------
+SwHyphWrapper::~SwHyphWrapper()
+{
+ if( nPageCount )
+ ::EndProgress( pView->GetDocShell() );
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.95 2000/09/18 16:05:54 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.94 2000/07/04 15:20:20 tl
+ XHyphenator1 => XHyphenator
+
+ Revision 1.93 2000/04/18 15:35:07 os
+ UNICODE
+
+ Revision 1.92 2000/03/23 07:42:45 os
+ UNO III
+
+ Revision 1.91 2000/03/08 17:23:12 os
+ GetAppWindow() - misuse as parent window eliminated
+
+ Revision 1.90 2000/02/24 12:14:03 tl
+ #71915# SvxSpellWrapper::SpellEnd called in SpellEnd now
+
+ Revision 1.89 2000/02/16 20:58:34 tl
+ #72219# Locale Umstellung
+
+ Revision 1.88 2000/02/11 14:55:51 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.87 1999/11/24 18:28:37 tl
+ check for Service availability
+
+ Revision 1.86 1999/11/19 16:40:23 os
+ modules renamed
+
+ Revision 1.85 1999/11/10 11:01:24 tl
+ XInterface SpellContinue() -> sal_Bool SpellContinue()
+ Ongoing ONE_LINGU implementation
+
+ Revision 1.84 1999/10/25 19:13:24 tl
+ ongoing ONE_LINGU implementation
+
+ Revision 1.83 1999/08/31 08:37:30 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+
+ Rev 1.82 31 Aug 1999 10:37:30 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+ Rev 1.81 08 Jul 1999 16:16:14 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.80 08 Jul 1999 10:31:44 MA
+ limit wait cursor to document window
+
+ Rev 1.79 12 Aug 1998 18:16:00 HR
+ #54781#: GCC braucht Temporary
+
+ Rev 1.78 03 Dec 1997 17:10:10 AMA
+ Fix: Paintprobleme durch Actionklammerung bei automatischer Trennung
+
+ Rev 1.77 28 Nov 1997 15:30:32 MA
+ includes
+
+ Rev 1.76 28 Nov 1997 13:35:34 AMA
+ Fix #45841#: Auch Fehlermeldungen duerfen verschoben werden.
+
+ Rev 1.75 03 Nov 1997 13:21:46 MA
+ precomp entfernt
+
+ Rev 1.74 24 Oct 1997 10:30:54 AMA
+ Fix #44994#: InfoBox nach Abschluss der Silbentrennung anzeigen
+
+ Rev 1.73 05 Sep 1997 11:46:26 MH
+ chg: header
+
+ Rev 1.72 14 Feb 1997 15:19:30 AMA
+ Fix #36204#: Falsche Parentbeziehung des Dialogs.
+
+ Rev 1.71 08 Jan 1997 12:55:14 AMA
+ New: Rueckwaerts kann unterbunden werden, wird genutzt von der Silbentrennung
+
+ Rev 1.70 04 Dec 1996 23:04:40 MH
+ chg: header
+
+ Rev 1.69 09 Oct 1996 18:00:26 MA
+ Progress
+
+ Rev 1.68 28 Aug 1996 12:52:34 OS
+ includes
+
+ Rev 1.67 14 Mar 1996 11:37:24 AMA
+ New: Progress-Anzeige bei Rechtschr. und Silbentrennung
+
+ Rev 1.66 24 Nov 1995 16:57:40 OM
+ PCH->PRECOMPILED
+
+ Rev 1.65 31 Oct 1995 18:39:42 OM
+ GetFrameWindow entfernt
+
+ Rev 1.64 09 Aug 1995 17:14:04 AMA
+ SEG_GLOBALS wieder da
+
+ Rev 1.63 06 Aug 1995 14:36:54 AMA
+ Benutzt den SvxSpellWrapper als HyphWrapper
+
+ Rev 1.62 25 Feb 1995 13:33:08 MS
+ IBM-Linguistik
+
+ Rev 1.61 18 Nov 1994 16:10:40 MA
+ min -> Min, max -> Max
+
+ Rev 1.60 09 Nov 1994 07:59:42 MS
+ Includes geaendert
+
+ Rev 1.59 08 Nov 1994 16:47:46 MS
+ pSpell ist global
+
+ Rev 1.58 25 Oct 1994 18:21:54 ER
+ add: PCH
+
+ Rev 1.57 07 Oct 1994 14:30:30 MS
+ Anpassung Sfx
+
+ Rev 1.56 04 Aug 1994 09:59:56 SWG
+ swg32: SED awt::Size to SSize, LSize to awt::Size etc.
+
+ Rev 1.55 02 Aug 1994 16:00:18 MS
+ Umstellung Linguistik
+
+ Rev 1.54 22 Jul 1994 09:49:36 MS
+ Bug 8784 richtuge Anzeige des zu trennenden Wortes
+
+ Rev 1.53 21 Jun 1994 13:26:44 MS
+ Bug 8526 Abrrechen des Trennvorganges und Defbutton auf dem MAC
+
+ Rev 1.52 07 Apr 1994 16:58:08 MS
+ neues Pragma
+
+ Rev 1.51 07 Apr 1994 16:26:36 MS
+ neu LangError
+
+ Rev 1.50 26 Feb 1994 01:58:24 ER
+ virt. dtor mit export
+
+ Rev 1.49 26 Feb 1994 01:10:18 ER
+ virtuellen dtor wegen export ueberladen
+
+ Rev 1.48 25 Feb 1994 20:44:40 ER
+ virtuellen dtor wegen export ueberladen
+
+ Rev 1.47 23 Feb 1994 10:58:24 ER
+ SEXPORT
+
+ Rev 1.46 22 Feb 1994 14:40:04 ER
+ EXPORT --> SEXPORT
+
+ Rev 1.45 21 Feb 1994 21:35:46 ER
+ LINK EXPORT
+
+ Rev 1.44 17 Feb 1994 08:47:02 MI
+ SEG_FUNCDEFS ausgefuellt
+
+ Rev 1.43 16 Feb 1994 20:07:34 MI
+ SEG_FUNCDEFS ausgefuellt
+
+ Rev 1.42 16 Feb 1994 16:50:56 MI
+ Pragmas zurechtgerueckt
+
+ Rev 1.41 01 Feb 1994 18:18:58 MI
+ TCOV() entfernt, SW_... nach SEG_... umbenannt
+
+ Rev 1.40 01 Feb 1994 13:44:18 MS
+ Umstellung Linguistik v2.0
+
+ Rev 1.39 21 Jan 1994 09:53:10 MS
+ Ablauf interaktive Trennung geaendert
+
+ Rev 1.38 20 Jan 1994 18:41:18 MS
+ Ablauf geaendert
+
+ Rev 1.37 13 Jan 1994 08:44:48 MI
+ Segmentierung per #define ermoeglicht
+
+ Rev 1.36 09 Jan 1994 21:12:54 MI
+ Provisorische Segmentierung
+
+ Rev 1.35 06 Dec 1993 13:09:58 MS
+ Anpassung der Selektion
+
+ Rev 1.34 06 Dec 1993 10:31:56 MS
+ Trennstellen selektieren
+
+ Rev 1.33 27 Sep 1993 01:23:40 MI
+ Segmentierung
+
+ Rev 1.32 20 Sep 1993 14:58:52 MS
+ Umstellung Lingu
+
+ Rev 1.31 26 Aug 1993 09:46:08 MS
+ Nach Weiter am Dokumentanfang Controlls initialisieren
+
+ Rev 1.30 08 Aug 1993 11:56:24 MS
+ fuer MSC
+
+ Rev 1.29 08 Aug 1993 09:31:42 MS
+ Ablauf interaktive Silbentrennung geaendert
+
+ Rev 1.28 06 Aug 1993 08:13:38 ER
+ String Array-Indexe mit sal_uInt16 statt short
+
+ Rev 1.28 06 Aug 1993 08:11:36 ER
+ String Array-Indexe mit sal_uInt16 statt short
+
+ Rev 1.27 05 Aug 1993 10:32:30 MS
+ Drunken Hyphenator beseitigt
+
+ Rev 1.26 18 Jun 1993 09:21:28 BP
+ bug: InitControls(), Initialisierung von nHyphPos
+
+ Rev 1.25 28 May 1993 11:51:42 VB
+ Umstellung Precompiled Headers
+
+ Rev 1.24 14 May 1993 11:31:36 MS
+ Traveling innerhalb des zu trennenden Wortes korrigiert
+
+ Rev 1.23 27 Apr 1993 08:39:08 OK
+ NEU: #pragma hdrstop
+
+ Rev 1.22 20 Apr 1993 13:13:38 MS
+ Entflechtung Linguistik
+
+ Rev 1.21 23 Mar 1993 18:18:20 MS
+
+ Rev 1.20 23 Mar 1993 18:10:30 MS
+ richtigen Trennindex bestimmen
+
+ Rev 1.19 22 Mar 1993 10:08:26 OK
+ Anpassung fuer NT
+
+ Rev 1.18 16 Mar 1993 08:32:42 MS
+ Fix fuer kk entfernt
+
+ Rev 1.17 12 Mar 1993 14:49:06 MS
+ Uebergeben des SoftHyph geaendert
+
+ Rev 1.16 12 Mar 1993 14:02:34 MS
+ Navigation geaendert
+
+ Rev 1.15 11 Mar 1993 14:00:04 MS
+ keine alternativwoerter fuer Formatierung
+
+ Rev 1.14 11 Mar 1993 13:54:54 MS
+ Ablauf geaendert
+
+ Rev 1.13 09 Mar 1993 10:48:24 MS
+ Trennung mit Start und Continue - Mimik
+
+ Rev 1.12 10 Feb 1993 19:59:46 TB
+ Umstellung SV21
+
+ Rev 1.11 22 Jan 1993 14:30:32 MS
+ String im Header geaendert
+
+ Rev 1.10 05 Jan 1993 10:01:56 MS
+ neu mit Sprachanzeige
+
+ Rev 1.9 22 Dec 1992 20:19:00 VB
+ Aenderung der FN_-Ids
+
+ Rev 1.8 22 Dec 1992 10:12:26 OK
+ Anpassung an M70
+
+ Rev 1.7 21 Dec 1992 16:19:34 MS
+ Enable Disable Buttons
+
+ Rev 1.6 18 Dec 1992 11:54:24 MS
+ mit SL_SOFT_HYPHEN
+
+ Rev 1.5 11 Dec 1992 13:42:48 MS
+ IgnoreButton
+
+ Rev 1.4 17 Nov 1992 16:55:44 MS
+ Trennhilfe-Dialog geaendert
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/lingu/makefile.mk b/sw/source/ui/lingu/makefile.mk
new file mode 100644
index 000000000000..7f395caee9f1
--- /dev/null
+++ b/sw/source/ui/lingu/makefile.mk
@@ -0,0 +1,100 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=lingu
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ hyp.cxx \
+ olmenu.cxx \
+ sdrspell.cxx \
+ splwrp.cxx
+
+SLOFILES = \
+ $(SLO)$/hyp.obj \
+ $(SLO)$/olmenu.obj \
+ $(SLO)$/sdrspell.obj \
+ $(SLO)$/splwrp.obj
+
+SRCFILES = \
+ olmenu.src
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/lingu/olmenu.cxx b/sw/source/ui/lingu/olmenu.cxx
new file mode 100644
index 000000000000..99b8d6ff7997
--- /dev/null
+++ b/sw/source/ui/lingu/olmenu.cxx
@@ -0,0 +1,895 @@
+/*************************************************************************
+ *
+ * $RCSfile: olmenu.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _MySVXACORR_HXX //autogen
+#include <svx/svxacorr.hxx>
+#endif
+#ifndef _SVX_SPLDLG_HXX
+#include <svx/spldlg.hxx>
+#endif
+
+#ifndef _SFXINIMGR_HXX
+#include <svtools/iniman.hxx>
+#endif
+#ifndef _LINGU_LNGPROPS_HHX_
+#include <lingu/lngprops.hxx>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+#ifndef _UNO_LINGU_HXX
+#include <svx/unolingu.hxx>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC_XOTHERLINGU2_HPP_
+#include <com/sun/star/linguistic/XOtherLingu2.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XSTORABLE_HPP_
+#include <com/sun/star/frame/XStorable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _SVX_DLGUTIL_HXX
+#include <svx/dlgutil.hxx>
+#endif
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+
+
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx> //CheckSpellChanges
+#endif
+#ifndef _OLMENU_HXX
+#include <olmenu.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx>
+#endif
+#ifndef _TEMPAUTO_HXX
+#include <tempauto.hxx> // temporaere Autokorrektur
+#endif
+#ifndef _OLMENU_HRC
+#include <olmenu.hrc>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::rtl;
+
+#define C2U(cChar) OUString::createFromAscii(cChar)
+
+/*--------------------------------------------------------------------------
+
+---------------------------------------------------------------------------*/
+
+util::Language lcl_CheckLanguage( const OUString &rWord, uno::Reference< linguistic::XSpellChecker1 > xSpell )
+{
+ // andere Sprachen automatisch pr"ufen
+ // auch wenn beliebiger Schwachsinn rauskommt
+ // NUR: wenn Sprache KEINE oder die neue die Alte ist oder die Sprache
+ // nicht vorhanden ist
+
+ util::Language nLang = LANGUAGE_NONE;
+
+ uno::Reference< linguistic::XSpellAlternatives > xAlt;
+ uno::Sequence< util::Language > aLangs;
+ if (xSpell.is())
+ aLangs = xSpell->getLanguages();
+ const util::Language *pLang = aLangs.getConstArray();
+ sal_Int16 nCount = aLangs.getLength();
+
+ for (sal_Int16 i = 0; i < nCount; i++)
+ {
+ if (pLang[i] != LANGUAGE_NONE)
+ {
+ if (xSpell->isValid( rWord, pLang[i] ))
+ {
+ nLang = pLang[i];
+ break;
+ }
+ }
+ }
+ return nLang;
+}
+
+
+/*SwSpellPopup::SwSpellPopup( SwWrtShell* pWrtSh, const uno::Reference< linguistic::XSpellAlternatives > &xAlt ) :
+ PopupMenu(SW_RES(MN_SPELL_POPUP)),
+ pSh ( pWrtSh ),
+ xSpellAlt (xAlt)
+{
+ DBG_ASSERT(xSpellAlt.is(), "no spelling alternatives available");
+
+ uno::Sequence< UString > aStrings;
+ if (xSpellAlt.is())
+ aStrings = xSpellAlt->getAlternatives();
+ const UString *pString = aStrings.getConstArray();
+ sal_Int16 nStringCount = aStrings.getLength();
+
+ PopupMenu *pMenu = GetPopupMenu(MN_AUTOCORR);
+ sal_Bool bEnable = sal_False;
+ if( nStringCount )
+ {
+ InsertSeparator(0);
+ bEnable = sal_True;
+ for( sal_uInt16 i = 0, nPos = 1, nId = MN_AUTOCORR_START + 1;
+ i < nStringCount; ++i, ++nPos, ++nId )
+ {
+ const String aEntry = U2S( pString[ i ] );
+ InsertItem( nPos, aEntry, 0, i );
+ SetHelpId( nPos, HID_LINGU_REPLACE);
+ pMenu->InsertItem( nId, aEntry );
+ pMenu->SetHelpId( nId, HID_LINGU_AUTOCORR);
+ }
+ }
+ EnableItem( MN_AUTOCORR, bEnable );
+
+ nCorrLang = LANGUAGE_NONE;
+ if (xSpellAlt.is())
+ nCorrLang = lcl_CheckLanguage( xSpellAlt->getWord(), ::GetSpellChecker() );
+ if( nCorrLang != LANGUAGE_NONE )
+ {
+ InsertSeparator();
+ String aTmp( ::GetLanguageString( nCorrLang ) );
+ InsertItem( MN_LANGUAGE_WORD, String( SW_RES( STR_WORD ) ) + aTmp );
+ SetHelpId( MN_LANGUAGE_WORD, HID_LINGU_WORD_LANGUAGE );
+ InsertItem( MN_LANGUAGE_PARA, String( SW_RES( STR_PARAGRAPH ) ) + aTmp );
+ SetHelpId( MN_LANGUAGE_PARA, HID_LINGU_PARA_LANGUAGE );
+ }
+
+ pMenu = GetPopupMenu(MN_INSERT);
+ //DBG_ASSERT(0, "Fremdlinguistik fehlt noch");
+<<<<<<< olmenu.cxx
+#ifdef NOT_YET
+ if( pSpell->HasOtherLingu() && pSpell->HasOtherSpell() )
+ {
+ bEnable = sal_True;
+ pMenu->InsertItem( MN_INSERT_START,
+ pSpell->GetOtherLinguName( pSpell->GetOtherIdx() ) );
+ pMenu->SetHelpId( MN_INSERT_START, HID_LINGU_ADD_WORD);
+ }
+ else
+#endif
+ {
+ bEnable = sal_False;
+
+ uno::Reference< linguistic::XDictionaryList > xDicList( SvxGetDictionaryList() );
+=======
+
+
+ bEnable = FALSE; // enable MN_INSERT?
+
+ INT16 nOtherIndex = -1;
+ BOOL bHasOtherFunc = FALSE;
+ BOOL bIsStandardSpell = TRUE;
+ XPropertySetRef xProp( SvxGetLinguPropertySet() );
+ if (xProp.is())
+ {
+ nOtherIndex = xProp->getPropertyValue(
+ S2U(UPN_OTHER_LINGU_INDEX) ).getINT16();
+ bIsStandardSpell = xProp->getPropertyValue(
+ S2U(UPN_IS_STANDARD_SPELL_CHECKER) ).getBOOL();
+ }
+
+ if (nOtherIndex >= 0)
+ {
+ XMultiServiceFactoryRef xMgr( NAMESPACE_USR( getProcessServiceManager)() );
+ xOther = XOtherLinguRef( xMgr->createInstance(
+ S2U("com.sun.star.linguistic.OtherLingu") ), USR_QUERY );
+ if (xOther.is())
+ {
+ bHasOtherFunc = xOther->hasSpellChecker( nOtherIndex );
+ if ( bHasOtherFunc)
+ {
+ bEnable = TRUE;
+ pMenu->InsertItem( MN_INSERT_START,
+ U2S( xOther->getIdentifier( nOtherIndex ) ) );
+ pMenu->SetHelpId( MN_INSERT_START, HID_LINGU_ADD_WORD);
+ }
+ }
+ }
+
+ if (nOtherIndex < 0 || bIsStandardSpell)
+ {
+ XDictionaryListRef xDicList( SvxGetDictionaryList() );
+>>>>>>> 1.55
+ if (xDicList.is())
+ {
+ // add active, positive dictionary to dic-list (if not already done).
+ // This is to ensure that there is at least on dictionary to which
+ // words could be added.
+ uno::Reference< linguistic::XDictionary1 > xDic( SvxGetOrCreatePosDic( xDicList ) );
+ if (xDic.is())
+ xDic->setActive( sal_True );
+
+ aDics = xDicList->getDictionaries();
+ const uno::Reference< linguistic::XDictionary > *pDic = aDics.getConstArray();
+ sal_Int32 nDicCount = aDics.getLength();
+
+ sal_Int16 nLanguage = LANGUAGE_NONE;
+ if (xSpellAlt.is())
+ nLanguage = SvxLocaleToLanguage( xSpellAlt->getLocale() );
+
+ for( sal_Int32 i = 0; i < nDicCount; i++ )
+ {
+ uno::Reference< linguistic::XDictionary1 > xDic( pDic[i], uno::UNO_QUERY );
+ if (!xDic.is())
+ continue;
+
+ LanguageType nActLanguage = xDic->getLanguage();
+ if( xDic->isActive()
+ && xDic->getDictionaryType() != linguistic::DictionaryType_NEGATIVE
+ && (nLanguage == nActLanguage || LANGUAGE_NONE == nActLanguage )
+ && SvxGetIgnoreAllList() != xDic )
+ {
+ // the extra 1 is because of the (possible) external
+ // linguistic entry above
+ pMenu->InsertItem( MN_INSERT_START + i + 1, U2S( xDic->getName() ) );
+ bEnable = sal_True;
+ }
+ }
+ }
+ }
+ EnableItem( MN_INSERT, bEnable );
+
+ RemoveDisabledEntries( sal_True, sal_True );
+}
+*/
+SwSpellPopup::SwSpellPopup( SwWrtShell* pWrtSh, const uno::Reference< linguistic::XSpellAlternatives > &xAlt ) :
+ PopupMenu(SW_RES(MN_SPELL_POPUP)),
+ pSh ( pWrtSh ),
+ xSpellAlt (xAlt)
+{
+ DBG_ASSERT(xSpellAlt.is(), "no spelling alternatives available");
+
+ uno::Sequence< OUString > aStrings;
+ if (xSpellAlt.is())
+ aStrings = xSpellAlt->getAlternatives();
+ const OUString *pString = aStrings.getConstArray();
+ sal_Int16 nStringCount = aStrings.getLength();
+
+ PopupMenu *pMenu = GetPopupMenu(MN_AUTOCORR);
+ sal_Bool bEnable = sal_False;
+ if( nStringCount )
+ {
+ InsertSeparator(0);
+ bEnable = sal_True;
+ for( sal_uInt16 i = 0, nPos = 1, nId = MN_AUTOCORR_START + 1;
+ i < nStringCount; ++i, ++nPos, ++nId )
+ {
+ const String aEntry = pString[ i ];
+ InsertItem( nPos, aEntry, 0, i );
+ SetHelpId( nPos, HID_LINGU_REPLACE);
+ pMenu->InsertItem( nId, aEntry );
+ pMenu->SetHelpId( nId, HID_LINGU_AUTOCORR);
+ }
+ }
+ EnableItem( MN_AUTOCORR, bEnable );
+
+ nCorrLang = LANGUAGE_NONE;
+ if (xSpellAlt.is())
+ nCorrLang = lcl_CheckLanguage( xSpellAlt->getWord(), ::GetSpellChecker() );
+ if( nCorrLang != LANGUAGE_NONE )
+ {
+ InsertSeparator();
+ String aTmp( ::GetLanguageString( nCorrLang ) );
+ InsertItem( MN_LANGUAGE_WORD, String( SW_RES( STR_WORD ) ).Append(aTmp) );
+ SetHelpId( MN_LANGUAGE_WORD, HID_LINGU_WORD_LANGUAGE );
+ InsertItem( MN_LANGUAGE_PARA, String( SW_RES( STR_PARAGRAPH ) ).Append(aTmp) );
+ SetHelpId( MN_LANGUAGE_PARA, HID_LINGU_PARA_LANGUAGE );
+ }
+
+ pMenu = GetPopupMenu(MN_INSERT);
+ //DBG_ASSERT(0, "Fremdlinguistik fehlt noch");
+
+ bEnable = FALSE; // enable MN_INSERT?
+
+ sal_Int16 nOtherIndex = -1;
+ sal_Bool bHasOtherFunc = FALSE;
+ sal_Bool bIsStandardSpell = TRUE;
+ uno::Reference< beans::XPropertySet > xProp( SvxGetLinguPropertySet() );
+ if (xProp.is())
+ {
+ nOtherIndex = *(sal_Int16*)xProp->getPropertyValue(C2U(UPN_OTHER_LINGU_INDEX) ).getValue();
+ bIsStandardSpell = *(sal_Bool*)xProp->getPropertyValue(
+ C2U(UPN_IS_STANDARD_SPELL_CHECKER) ).getValue();
+ }
+
+ if (nOtherIndex >= 0)
+ {
+
+ uno::Reference< lang::XMultiServiceFactory >
+ xMgr = utl::getProcessServiceFactory();
+ xOther = uno::Reference< linguistic::XOtherLingu >( xMgr->createInstance(
+ C2U("com.sun.star.linguistic.OtherLingu") ), uno::UNO_QUERY );
+ if (xOther.is())
+ {
+ bHasOtherFunc = xOther->hasSpellChecker( nOtherIndex );
+ if (/*nOtherIndex >= 0 &&*/ bHasOtherFunc)
+ {
+ bEnable = TRUE;
+ pMenu->InsertItem( MN_INSERT_START,
+ xOther->getIdentifier( nOtherIndex ) );
+ pMenu->SetHelpId( MN_INSERT_START, HID_LINGU_ADD_WORD);
+ }
+ }
+ }
+
+ if (nOtherIndex < 0 || bIsStandardSpell)
+ {
+ uno::Reference< linguistic::XDictionaryList > xDicList( SvxGetDictionaryList() );
+ if (xDicList.is())
+ {
+ // add active, positive dictionary to dic-list (if not already done).
+ // This is to ensure that there is at least on dictionary to which
+ // words could be added.
+ uno::Reference< linguistic::XDictionary1 > xDic( SvxGetOrCreatePosDic( xDicList ) );
+ if (xDic.is())
+ xDic->setActive( sal_True );
+
+ aDics = xDicList->getDictionaries();
+ const uno::Reference< linguistic::XDictionary > *pDic = aDics.getConstArray();
+ sal_Int32 nDicCount = aDics.getLength();
+
+ sal_Int16 nLanguage = LANGUAGE_NONE;
+ if (xSpellAlt.is())
+ nLanguage = SvxLocaleToLanguage( xSpellAlt->getLocale() );
+
+ for( sal_Int32 i = 0; i < nDicCount; i++ )
+ {
+ uno::Reference< linguistic::XDictionary1 > xDic( pDic[i], uno::UNO_QUERY );
+ if (!xDic.is() || SvxGetIgnoreAllList() == xDic)
+ continue;
+
+ uno::Reference< frame::XStorable > xStor( xDic, uno::UNO_QUERY );
+ LanguageType nActLanguage = xDic->getLanguage();
+ if( xDic->isActive()
+ && xDic->getDictionaryType() != linguistic::DictionaryType_NEGATIVE
+ && (nLanguage == nActLanguage || LANGUAGE_NONE == nActLanguage )
+ && (!xStor.is() || !xStor->isReadonly()) )
+ {
+ // the extra 1 is because of the (possible) external
+ // linguistic entry above
+ pMenu->InsertItem( MN_INSERT_START + i + 1, xDic->getName() );
+ bEnable = sal_True;
+ }
+ }
+ }
+ }
+ EnableItem( MN_INSERT, bEnable );
+
+ RemoveDisabledEntries( TRUE, TRUE );
+
+}
+
+/*--------------------------------------------------------------------------
+
+---------------------------------------------------------------------------*/
+sal_uInt16 SwSpellPopup::Execute( Window* pWin, const Point& rWordPos )
+{
+ sal_uInt16 nRet = PopupMenu::Execute(pWin, pWin->LogicToPixel(rWordPos));
+ sal_Bool bAutoCorr = sal_False;
+ if( nRet > MN_AUTOCORR_START && nRet != USHRT_MAX )
+ {
+ nRet -= MN_AUTOCORR_START;
+ bAutoCorr = sal_True;
+ }
+
+ if( nRet && nRet != USHRT_MAX)
+ {
+ int nAltIdx = nRet - 1;
+ if( xSpellAlt.is() && nAltIdx < xSpellAlt->getAlternativesCount() )
+ {
+ sal_Bool bOldIns = pSh->IsInsMode();
+ pSh->SetInsMode( sal_True );
+
+ pSh->StartUndo(UIUNDO_REPLACE);
+ pSh->StartAction();
+ pSh->DelLeft();
+
+ const OUString *pString = xSpellAlt->getAlternatives().getConstArray();
+ DBG_ASSERT( 0 <= nAltIdx && nAltIdx <= xSpellAlt->getAlternativesCount(),
+ "index out of range");
+ String aTmp( pString[ nAltIdx ] );
+ String aOrig( xSpellAlt->getWord());
+
+ // if orginal word has a trailing . (likely the end of a sentence)
+ // and the replacement text hasn't, then add it to the replacement
+ if (aTmp.Len() && aOrig.Len() &&
+ '.' == aOrig.GetChar( aOrig.Len() - 1) && /* !IsAlphaNumeric ??*/
+ '.' != aTmp.GetChar( aTmp.Len() - 1))
+ {
+ aTmp += '.';
+ }
+
+ pSh->Insert( aTmp );
+ pSh->EndAction();
+ pSh->EndUndo(UIUNDO_REPLACE);
+
+ pSh->SetInsMode( bOldIns );
+
+
+ // nur aufnehmen, wenn es NICHT schon in der Autokorrektur vorhanden ist
+ SvxAutoCorrect* pACorr = OFF_APP()->GetAutoCorrect();
+
+ LanguageType eLanguage = SvxLocaleToLanguage( xSpellAlt->getLocale() );
+
+ String aOrigWord( xSpellAlt->getWord() ) ;
+ String aNewWord;
+ if( nRet )
+ aNewWord = pString[ nAltIdx ];
+ else
+ aNewWord = aOrigWord;
+ SvxPrepareAutoCorrect( aOrigWord, aNewWord );
+ if( bAutoCorr )
+ {
+ pACorr->PutText( aOrigWord, aNewWord, eLanguage );
+ if( pTempAuto )
+ pTempAuto->Delete( aOrigWord );
+ }
+ else
+ {
+ SvxAutocorrWord aAWord( aOrigWord, aEmptyStr );
+ if( !pACorr->GetAutocorrWordList(eLanguage)->Seek_Entry( &aAWord ))
+ {
+ SwCorrection* pCorr = new SwCorrection( aAWord.GetShort() );
+ pCorr->Correct() = aNewWord;
+ if( !pTempAuto )
+ pTempAuto = new SwTempAuto();
+ pTempAuto->Insert( pCorr );
+ }
+ }
+
+ }
+ else
+ switch( nRet )
+ {
+ case MN_SPELLING:
+ {
+ pSh->Left();
+ {
+ SvxDicListChgClamp aClamp( SvxGetDictionaryList() );
+ pSh->GetView().GetViewFrame()->GetDispatcher()->
+ Execute( FN_SPELLING_DLG, SFX_CALLMODE_ASYNCHRON );
+ }
+ // should be superfluos by adding the ignore list to
+ // the dictionary list.
+ // SW_MOD()->CheckSpellChanges( sal_False, );
+ }
+ break;
+ case MN_IGNORE :
+ {
+ sal_Int16 nAddRes = SvxAddEntryToDic(
+ uno::Reference< linguistic::XDictionary > ( SvxGetIgnoreAllList(), uno::UNO_QUERY ),
+ xSpellAlt->getWord(), sal_False,
+ aEmptyStr, LANGUAGE_NONE );
+ }
+ break;
+ case MN_INSERT:
+ DBG_ERROR("geht noch nicht!")
+ break;
+ case MN_LANGUAGE_WORD:
+ case MN_LANGUAGE_PARA:
+ {
+ pSh->StartAction();
+
+ if( MN_LANGUAGE_PARA == nRet )
+ {
+ if( !pSh->IsSttPara() )
+ pSh->MovePara( fnParaCurr, fnParaStart );
+ pSh->SwapPam();
+ if( !pSh->IsEndPara() )
+ pSh->MovePara( fnParaCurr, fnParaEnd );
+ }
+
+ SfxItemSet aSet(pSh->GetAttrPool(), RES_CHRATR_LANGUAGE,
+ RES_CHRATR_LANGUAGE);
+ aSet.Put( SvxLanguageItem( nCorrLang ) );
+ pSh->SetAttr( aSet );
+
+ pSh->EndAction();
+ }
+ break;
+ default:
+ if(nRet >= MN_INSERT_START )
+ {
+ OUString aWord( xSpellAlt->getWord() );
+ if (MN_INSERT_START == nRet)
+ {
+ uno::Reference< linguistic::XOtherLingu2 > xOther2( xOther, uno::UNO_QUERY );
+ if (xOther2.is())
+ {
+ xOther2->addWord( 0, aWord,
+ SvxLocaleToLanguage( xSpellAlt->getLocale() ) );
+
+ // first parameter is TRUE since this menue
+ // is only invoked while online-spelling is
+ // active
+ SW_MOD()->CheckSpellChanges( TRUE, TRUE, FALSE );
+ }
+ }
+ else
+ {
+ INT32 nDicIdx = nRet - MN_INSERT_START - 1;
+ DBG_ASSERT( nDicIdx < aDics.getLength(),
+ "dictionary index out of range" );
+ uno::Reference< linguistic::XDictionary > xDic =
+ aDics.getConstArray()[nDicIdx];
+ INT16 nAddRes = SvxAddEntryToDic( xDic,
+ aWord, FALSE, aEmptyStr, LANGUAGE_NONE );
+
+ /*if (DIC_ERR_NONE == nAddRes)
+ SW_MOD()->CheckSpellChanges( FALSE, TRUE, FALSE );
+ else*/
+ if (DIC_ERR_NONE != nAddRes
+ && !xDic->getEntry( aWord ).is())
+ {
+ SvxDicError(
+ &pSh->GetView().GetViewFrame()->GetWindow(),
+ nAddRes );
+ }
+ }
+
+ //should work with dictionaryListener mechanism
+ //SW_MOD()->CheckSpellChanges( FALSE, FALSE, FALSE );
+ }
+ }
+ }
+ pSh->EnterStdMode();
+ return nRet;
+}
+
+
+
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.64 2000/09/18 16:05:54 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.63 2000/09/07 15:59:25 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.62 2000/05/24 11:54:40 khz
+ Change for Unicode
+
+ Revision 1.61 2000/05/16 17:27:46 jp
+ Changes for Unicode
+
+ Revision 1.60 2000/05/16 09:15:13 os
+ project usr removed
+
+ Revision 1.59 2000/05/09 14:46:08 os
+ UNICODE
+
+ Revision 1.58 2000/04/18 15:35:07 os
+ UNICODE
+
+ Revision 1.57 2000/04/12 11:01:24 tl
+ #74727# bugfix von src569 nachgezogen
+
+ Revision 1.56 2000/03/23 07:32:27 os
+ UNO III
+
+ Revision 1.55 2000/03/16 10:51:17 tl
+ #73839# use language of word to check for dictionories to be displayed in SwSpellPopup
+
+ Revision 1.54 2000/03/15 14:49:19 tl
+ #70734# AddWord for external linguistic added
+
+ Revision 1.53 2000/03/07 10:40:19 tl
+ #72833# SvxPrepareAutoCorrect used
+
+ Revision 1.52 2000/02/25 10:44:07 tl
+ #62869# new error message when adding word to dictionary failed
+
+ Revision 1.51 2000/02/22 16:38:05 tl
+ #73380# standard.dic created, acivated and added to list
+
+ Revision 1.50 2000/02/21 15:57:17 tl
+ #72081# strip '.' from word before adding to dictionaries
+
+ Revision 1.49 2000/02/16 20:58:50 tl
+ #72219# Locale Umstellung
+
+ Revision 1.48 2000/02/04 12:22:19 tl
+ #72446# IgnoreAllList removed from list of selectable dictionaries
+
+ Revision 1.47 2000/02/01 11:53:12 tl
+ #71634# insert '.' to replacement if original word has it
+
+ Revision 1.46 2000/01/11 10:28:08 tl
+ #70735# use isActive/setActive from linguistic::XDictionary now
+
+ Revision 1.45 1999/12/22 19:56:14 jp
+ Bug #71270#: SwSpellPopup - insert separator
+
+ Revision 1.44 1999/12/16 13:52:07 tl
+ #70973# PopupMenu ok even without spelling alternatives
+
+ Revision 1.43 1999/11/24 18:30:28 tl
+ check for Service availability
+
+ Revision 1.42 1999/11/19 16:40:23 os
+ modules renamed
+
+ Revision 1.41 1999/11/10 11:03:36 tl
+ Ongoing ONE_LINGU implementation
+
+ Revision 1.40 1999/10/18 13:15:34 os
+ external lingu: no special handling in WIN
+
+ Revision 1.39 1999/09/21 10:22:26 rt
+ #65293# sysdep.hxx -> svwin.h
+
+ Revision 1.38 1999/09/21 10:16:23 os
+ Sysdepen::GethWnd -> return 0
+
+ Revision 1.37 1999/09/20 11:08:21 hr
+ #65293#: removed <vcl/sysdep.hxx>
+
+ Revision 1.36 1999/08/31 08:37:26 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+
+ Rev 1.35 31 Aug 1999 10:37:26 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+ Rev 1.34 22 Feb 1999 13:37:56 MA
+ #62126# gesperrte Eintraege entfernen lassen
+
+ Rev 1.33 24 Nov 1998 10:05:10 OS
+ #59590# mehrsprachige Autokorrektur
+
+ Rev 1.32 29 Oct 1998 16:29:54 AMA
+ Fix #58621#: Falsch geschriebene Woerter _nicht_ in AusnahmeWB uebernehmen
+
+ Rev 1.31 28 Jul 1998 15:34:50 AMA
+ Fix #54147#: Nicht zuviel loeschen, Ueberschreibmodus kurzzeitig ausschalten
+
+ Rev 1.30 09 Jun 1998 15:28:44 AMA
+ Fix #50994#: Bei der Absatzselektion nicht uebers Ziel hinausschiessen
+
+ Rev 1.29 07 May 1998 15:05:04 AMA
+ New: SpellPopup bietet Sprachumstellung am Wort oder Absatz an
+
+ Rev 1.28 29 Apr 1998 09:30:04 MA
+ ucb::Command, Contextmenu auch fuer Tastatur
+
+ Rev 1.27 21 Nov 1997 13:00:26 MA
+ includes
+
+ Rev 1.26 18 Sep 1997 14:00:10 OS
+ Pointer::GetPosPixel fuer VCL ersetzt
+
+ Rev 1.25 29 Aug 1997 16:35:50 MH
+ chg: Syntax
+
+ Rev 1.24 29 Aug 1997 15:59:24 OS
+ PopupMenu::Execute mit Window* fuer VCL
+
+ Rev 1.23 29 Aug 1997 14:02:46 OS
+ DLL-Umbau
+
+ Rev 1.22 07 Aug 1997 14:34:00 HJS
+ includes
+
+ Rev 1.21 14 Jul 1997 08:07:58 OS
+ HelpIDs fuer SpellPopup #41627#
+
+ Rev 1.20 30 Jun 1997 10:29:06 MH
+ cat fuer OS2
+
+ Rev 1.19 26 Jun 1997 13:31:40 AMA
+ New: AddWord mit Window-Handle + Automatisches Aufnehmen unbekannter Woerter
+
+ Rev 1.18 05 Jun 1997 17:28:52 AMA
+ New: Fremdlinguistik nimmt auch Woerter auf
+
+ Rev 1.17 04 Feb 1997 13:13:00 AMA
+ New: Online-Spelling-Vorschlag in die Autokorrektur aufnehmen
+
+ Rev 1.16 11 Nov 1996 10:58:52 MA
+ ResMgr
+
+ Rev 1.15 06 Nov 1996 19:57:04 MH
+ SwSplCfg -> OfaSplCfg
+
+ Rev 1.14 24 Oct 1996 13:36:28 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.13 23 Oct 1996 13:49:28 JP
+ SVMEM -> SVSTDARR Umstellung
+
+ Rev 1.12 15 Oct 1996 14:14:46 JP
+ AutoCorrCfg in die OfficeApplication verschoben
+
+ Rev 1.11 28 Aug 1996 12:52:34 OS
+ includes
+
+ Rev 1.10 21 Jun 1996 10:33:32 AMA
+ New #28010#: Temporaere Autokorrektur
+
+ Rev 1.9 20 May 1996 09:58:38 AMA
+ Fix: SvStringsDtor statt SvStrings
+
+ Rev 1.8 26 Apr 1996 15:47:10 AMA
+ Fix #27394#: Geprueftes Wort jetzt als erstes der Alternativen
+
+ Rev 1.7 26 Apr 1996 10:18:10 AMA
+ Fix #27394#: Geprueftes Wort jetzt als erstes Element der Alternativ-Liste.
+
+ Rev 1.6 23 Apr 1996 10:33:28 AMA
+ Fix #27260#: Online-Spelling-PopUp und Punkte, Anfuehrungszeichen etc.
+
+ Rev 1.5 05 Mar 1996 11:13:30 AMA
+ Fix: GetCorrect() selektiert; Fix: Punkte bei Abkrzg. und Satzende beachten
+
+ Rev 1.4 29 Feb 1996 10:31:30 AMA
+ Opt: SpellItAgainSam startet Idlen ggf. auch ohne Spell-Invalidierung
+
+ Rev 1.3 27 Feb 1996 17:04:56 AMA
+ New: CheckSpellChanges()
+
+ Rev 1.2 26 Feb 1996 07:50:56 OS
+ Aufnehmen-enable berichtigt
+
+ Rev 1.1 23 Feb 1996 08:33:42 OS
+ Woerterbuecher nach Sprache anbieten, Woerter aufnehmen
+
+ Rev 1.0 22 Feb 1996 15:55:28 OS
+ Initial revision.
+
+*************************************************************************/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sw/source/ui/lingu/olmenu.hrc b/sw/source/ui/lingu/olmenu.hrc
new file mode 100644
index 000000000000..71937efaa450
--- /dev/null
+++ b/sw/source/ui/lingu/olmenu.hrc
@@ -0,0 +1,87 @@
+/*************************************************************************
+ *
+ * $RCSfile: olmenu.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _OLMENU_HRC
+#define _OLMENU_HRC
+
+#include "rcid.hrc"
+
+#define MN_SPELL_POPUP (RC_LINGU_BEGIN + 1)
+#define STR_SPELL_OK (RC_LINGU_BEGIN + 2)
+#define STR_HYP_OK (RC_LINGU_BEGIN + 3)
+#define STR_WORD (RC_LINGU_BEGIN + 4)
+#define STR_PARAGRAPH (RC_LINGU_BEGIN + 5)
+
+#define MN_SPELLING 100
+#define MN_IGNORE 102
+#define MN_INSERT 103
+#define MN_AUTOCORR 104
+#define MN_LANGUAGE_WORD 105
+#define MN_LANGUAGE_PARA 106
+
+#define MN_INSERT_START 500
+#define MN_AUTOCORR_START 900
+
+#endif
+
+
+
+
diff --git a/sw/source/ui/lingu/olmenu.src b/sw/source/ui/lingu/olmenu.src
new file mode 100644
index 000000000000..4e72d6936acf
--- /dev/null
+++ b/sw/source/ui/lingu/olmenu.src
@@ -0,0 +1,298 @@
+/*************************************************************************
+ *
+ * $RCSfile: olmenu.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "olmenu.hrc"
+#include "helpid.h"
+#define SEPARATOR MenuItem { Separator = TRUE; };
+Menu MN_SPELL_POPUP
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = MN_SPELLING ;
+ HelpID = HID_LINGU_SPELLING_DLG ;
+ Text = "~Rechtschreibung" ;
+ Text [ English ] = "~Spelling" ;
+ Text [ english_us ] = "~Spellcheck" ;
+ Text [ italian ] = "Controllo ~ortografico" ;
+ Text [ spanish ] = "Ortogra~fía" ;
+ Text [ french ] = "~Orthographe" ;
+ Text [ dutch ] = "~Spellingcontrole" ;
+ Text [ swedish ] = "~Rättstavning" ;
+ Text [ danish ] = "Stavekont~rol" ;
+ Text [ portuguese ] = "Or~tografia" ;
+ Text [ portuguese_brazilian ] = "~Rechtschreibung" ;
+ Text[ chinese_simplified ] = "Õý×Ö·¨(~S)";
+ Text[ russian ] = "Ïðàâ~îïèñàíèå";
+ Text[ polish ] = "~Pisownia";
+ Text[ japanese ] = "•¶ÍZ³(~S)";
+ Text[ chinese_traditional ] = "«÷¦r(~S)";
+ Text[ arabic ] = "~ÊÏÞíÞ ÅãáÇÆí";
+ Text[ dutch ] = "~Spellingcontrole";
+ Text[ chinese_simplified ] = "Õý×Ö·¨(~S)";
+ Text[ greek ] = "Ïñèïã~ñáößá";
+ Text[ korean ] = "¸ÂÃã¹ý(~S)";
+ Text[ turkish ] = "~Yazým kýlavuzu";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_INSERT ;
+ HelpID = HID_LINGU_ADD_WORD ;
+ Text = "~Aufnehmen" ;
+ Text [ English ] = "~Insert" ;
+ SubMenu = Menu
+ {
+ };
+ Text [ english_us ] = "~Add" ;
+ Text [ italian ] = "A~ggiungi" ;
+ Text [ spanish ] = "~Incluir" ;
+ Text [ french ] = "~Ajouter" ;
+ Text [ dutch ] = "~Toevoegen" ;
+ Text [ swedish ] = "~Lägg till" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ portuguese ] = "~Adicionar" ;
+ Text [ portuguese_brazilian ] = "~Aufnehmen" ;
+ Text[ chinese_simplified ] = "½ÓÊÜ(~A)";
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "Dodaj";
+ Text[ japanese ] = "’ljÁ(~A)";
+ Text[ chinese_traditional ] = "¥[¤J(~A)";
+ Text[ arabic ] = "ÅÖÇÝÉ";
+ Text[ dutch ] = "~Toevoegen";
+ Text[ chinese_simplified ] = "½ÓÊÜ(~A)";
+ Text[ greek ] = "Ðñ~ïóèÞêç";
+ Text[ korean ] = "Ãß°¡(~A)";
+ Text[ turkish ] = "Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_IGNORE ;
+ HelpID = HID_LINGU_IGNORE_WORD ;
+ /* ### ACHTUNG: Neuer Text in Resource? Alle i~gnorieren : ~Ignorieren */
+ /* ### ACHTUNG: Neuer Text in Resource? Alle i~gnorieren : ~Ignorieren */
+ Text = "Alle i~gnorieren" ;
+ Text [ ENGLISH ] = "I~gnore all" ;
+ Text [ norwegian ] = "I~gnorer alle" ;
+ Text [ italian ] = "~Ignora tutto" ;
+ Text [ portuguese_brazilian ] = "I~gnorar tudo" ;
+ Text [ portuguese ] = "~Ignorar tudo" ;
+ Text [ finnish ] = "O~hita kaikki" ;
+ Text [ danish ] = "Ignorer alle" ;
+ Text [ french ] = "~Ignorer tout" ;
+ Text [ swedish ] = "~Ignorera alla" ;
+ Text [ dutch ] = "Alle ~negeren" ;
+ Text [ spanish ] = "~Ignorar todo" ;
+ Text [ english_us ] = "Ignore All" ;
+ Text[ chinese_simplified ] = "È«²¿ºöÂÔ(~I)";
+ Text[ russian ] = "Ïðîïóñêàòü âñå";
+ Text[ polish ] = "Zignoruj wszystkie";
+ Text[ japanese ] = "‚·‚ׂĖ³Ž‹‚·‚é";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¥þ³¡©¿²¤(~I)";
+ Text[ arabic ] = "ÊÌÇåá Çáßá";
+ Text[ dutch ] = "Alle ~negeren";
+ Text[ chinese_simplified ] = "È«²¿ºöÂÔ(~I)";
+ Text[ greek ] = "ÐáñÜ~âëåøç üëùí";
+ Text[ korean ] = "¸ðµÎ ¹«½Ã";
+ Text[ turkish ] = "Tümünü yok say";
+ };
+ MenuItem
+ {
+ Identifier = MN_AUTOCORR ;
+ HelpID = HID_LINGU_AUTOCORR ;
+ Text = "Auto~Korrektur" ;
+ Text [ English ] = "~AutoCorrect" ;
+ SubMenu = Menu
+ {
+ };
+ Text [ english_us ] = "AutoCorrect" ;
+ Text [ portuguese_brazilian ] = "Auto~Korrektur" ;
+ Text [ swedish ] = "Auto~Korrigering" ;
+ Text [ danish ] = "AutoKorrektur" ;
+ Text [ italian ] = "Correzione automatica" ;
+ Text [ spanish ] = "Auto~Corrección" ;
+ Text [ french ] = "AutoCo~rrection" ;
+ Text [ dutch ] = "Auto~Correctie" ;
+ Text [ portuguese ] = "Auto~Correcção" ;
+ Text[ chinese_simplified ] = "×Ô¶¯¸üÕý(~K)";
+ Text[ russian ] = "Àâòîçàìåíà";
+ Text[ polish ] = "Autokorekta";
+ Text[ japanese ] = "µ°ÄºÚ¸Ä";
+ Text[ chinese_traditional ] = "¦Û°Ê®Õ¥¿(~K)";
+ Text[ arabic ] = "ÊÕÍíÍ ÊáÞÇÆí";
+ Text[ dutch ] = "Auto~Correctie";
+ Text[ chinese_simplified ] = "×Ô¶¯¸üÕý(~K)";
+ Text[ greek ] = "Áõôï~Äéüñèùóç";
+ Text[ korean ] = "ÀÚµ¿ ¸ÂÃã";
+ Text[ turkish ] = "Otomatik düzeltme";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+String STR_WORD
+{
+ Text = "Wort ist " ;
+ Text [ ENGLISH ] = "word in" ;
+ Text [ portuguese ] = "Palavra em " ;
+ Text [ english_us ] = "word is " ;
+ Text [ portuguese_brazilian ] = "Wort ist " ;
+ Text [ swedish ] = "ord är " ;
+ Text [ danish ] = "Ordet er " ;
+ Text [ italian ] = "Il termine è " ;
+ Text [ spanish ] = "La palabra es " ;
+ Text [ french ] = "Le mot est en " ;
+ Text [ dutch ] = "Woord is " ;
+ Text[ chinese_simplified ] = "µ¥´ÊÊÇ ";
+ Text[ russian ] = "ßçûê ñëîâà: ";
+ Text[ polish ] = "S³owo jest ";
+ Text[ japanese ] = "’PŒê‚Í ";
+ Text[ chinese_traditional ] = "¦r¬O ";
+ Text[ language_user1 ] = " ";
+ Text[ arabic ] = "áÛÉ ÇáßáãÉ: ";
+ Text[ dutch ] = "Woord is ";
+ Text[ chinese_simplified ] = "µ¥´ÊÊÇ ";
+ Text[ greek ] = "Ç ëÝîç åßíáé ";
+ Text[ korean ] = "´Ü¾î´Â ";
+ Text[ turkish ] = "Sözcük: ";
+};
+String STR_PARAGRAPH
+{
+ Text = "Absatz ist " ;
+ Text [ ENGLISH ] = "Paragraph in" ;
+ Text [ portuguese ] = "Parágrafo em " ;
+ Text [ english_us ] = "Paragraph is " ;
+ Text [ portuguese_brazilian ] = "Absatz ist " ;
+ Text [ swedish ] = "Stycket är " ;
+ Text [ danish ] = "Afsnittet er " ;
+ Text [ italian ] = "Il paragrafo è " ;
+ Text [ spanish ] = "El párrafo es " ;
+ Text [ french ] = "Le paragraphe est en" ;
+ Text [ dutch ] = "Alinea is " ;
+ Text[ chinese_simplified ] = "¶ÎÂäÊÇ ";
+ Text[ russian ] = "ßçûê àáçàöà: ";
+ Text[ polish ] = "Akapit jest ";
+ Text[ japanese ] = "’i—Ž‚Í ";
+ Text[ chinese_traditional ] = "¬q¸¨¬O ";
+ Text[ arabic ] = "áÛÉ ÇáÝÞÑÉ: ";
+ Text[ language_user1 ] = " ";
+ Text[ dutch ] = "Alinea is ";
+ Text[ chinese_simplified ] = "¶ÎÂäÊÇ ";
+ Text[ greek ] = "Ç ðáñÜãñáöïò åßíáé ";
+ Text[ korean ] = "´Ü¶ôÀº ";
+ Text[ turkish ] = "Paragraf: ";
+};
+String STR_SPELL_OK
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Die Rechtschreibprüfung ist abgeschlossen! : Die Rechtschreibpr³fung ist abgeschlossen! */
+ Text = "Die Rechtschreibprüfung ist abgeschlossen!" ;
+ Text [ ENGLISH ] = "Spell checking has finished." ;
+ Text [ portuguese ] = "A verificação ortográfica está concluída!" ;
+ Text [ english_us ] = "The spellcheck is complete." ;
+ Text [ portuguese_brazilian ] = "Die Rechtschreibprüfung ist abgeschlossen!" ;
+ Text [ swedish ] = "Rättstavningskontrollen är avslutad!" ;
+ Text [ danish ] = "Stavekontrollen er afsluttet!" ;
+ Text [ italian ] = "Controllo ortografico terminato!" ;
+ Text [ spanish ] = "¡Ha finalizado la revisión ortográfica!" ;
+ Text [ french ] = "La vérification de l'orthographe est terminée !" ;
+ Text [ dutch ] = "De spellingcontrole is beëindigd!" ;
+ Text[ chinese_simplified ] = "Õý×Ö·¨¼ì²éÒѾ­½áÊø£¡";
+ Text[ russian ] = "Ïðîâåðêà ïðàâîïèñàíèÿ çàêîí÷åíà!";
+ Text[ polish ] = "Sprawdzanie pisowni zosta³o zakoñczone!";
+ Text[ japanese ] = "½ÍßÙÁª¯¸‚ªI—¹‚µ‚Ü‚µ‚½B";
+ Text[ chinese_traditional ] = "«÷¦rÀˬd¤w¸gµ²§ô¡T";
+ Text[ arabic ] = ".Êã ÇáÇäÊåÇÁ ãä ÇáÊÏÞíÞ ÇáÅãáÇÆí";
+ Text[ dutch ] = "De spellingcontrole is beëindigd!";
+ Text[ chinese_simplified ] = "Õý×Ö·¨¼ì²éÒѾ­½áÊø£¡";
+ Text[ greek ] = "Ï ïñèïãñáöéêüò Ýëåã÷ïò ïëïêëçñþèçêå!";
+ Text[ korean ] = "¸ÂÃã¹ý °Ë»ç°¡ ¿Ï·áµÇ¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Yazým denetimi tamamlandý!";
+ Text[ language_user1 ] = " ";
+};
+String STR_HYP_OK
+{
+ Text = "Die Silbentrennung ist abgeschlossen!" ;
+ Text [ ENGLISH ] = "Hyphenating has finished." ;
+ Text [ portuguese ] = "Separação silábica está completa!" ;
+ Text [ english_us ] = "Hyphenation completed" ;
+ Text [ portuguese_brazilian ] = "Die Silbentrennung ist abgeschlossen!" ;
+ Text [ swedish ] = "Avstavningen är avslutad!" ;
+ Text [ danish ] = "Orddelingen er afsluttet!" ;
+ Text [ italian ] = "La sillabazione è conclusa!" ;
+ Text [ spanish ] = "La separación silábica ha finalizado" ;
+ Text [ french ] = "La coupure des mots est terminée !" ;
+ Text [ dutch ] = "De verdeling in lettergrepen is beëindigd!" ;
+ Text[ chinese_simplified ] = "Á¬×Ö·û¼ì²éÒѾ­Íê³É£¡";
+ Text[ russian ] = "Ðàññòàíîâêà ïåðåíîñîâ çàêîí÷åíà!";
+ Text[ polish ] = "Dzielenie wyrazów zosta³o zakoñczone.";
+ Text[ japanese ] = "ʲÌÈ°¼®Ý‚ªI—¹‚µ‚Ü‚µ‚½!";
+ Text[ chinese_traditional ] = "³s¦r²ÅÀˬd¤w¸g§¹¦¨¡I";
+ Text[ arabic ] = "ÊãøóÊ ÚãáíÉ ÝÕá ÇáãÞÇØÚ!";
+ Text[ dutch ] = "De verdeling in lettergrepen is beëindigd!";
+ Text[ chinese_simplified ] = "Á¬×Ö·û¼ì²éÒѾ­Íê³É£¡";
+ Text[ greek ] = "Ï óõëëáâéóìüò Ý÷åé ïëïêëçñùèåß!";
+ Text[ korean ] = "ÇÏÀÌÇÂÀÌ ¿Ï·áµÇ¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Heceleme tamamlandý.";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/makefile.mk b/sw/source/ui/makefile.mk
new file mode 100644
index 000000000000..52fc55599eb5
--- /dev/null
+++ b/sw/source/ui/makefile.mk
@@ -0,0 +1,320 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14:31 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning 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=sw
+TARGET=ui
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=.$/ui_1st$/ui_pch
+
+.IF "$(CALLTARGETS)"=="ui"
+RC_SUBDIRS=
+.ENDIF
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+.IF "$(GUI)" != "WNT"
+.IF "$(GUI)" != "MAC"
+.IF "$(COM)" != "BLC"
+.IF "$(COM)" != "WTC"
+LIBFLAGS=/NOI /NOE /PAGE:256
+.ENDIF
+.ENDIF
+.ENDIF
+.ENDIF
+
+# --- Files --------------------------------------------------------
+
+# andere Label als Verzeichnisnamen fuer VC++/NT
+.IF "$(RC_SUBDIRS)" == ""
+SWSUBDIRS= \
+ ui_1st \
+ app \
+ cctrl \
+ chrdlg \
+ config \
+ dbui \
+ dialog \
+ dochdl \
+ docvw \
+ envelp \
+ fldui \
+ fmtui \
+ frmdlg \
+ globdoc \
+ index \
+ lingu \
+ misc \
+ ribbar \
+ shells \
+ table \
+ uno \
+ uiview \
+ utlui \
+ web \
+ wizard \
+ wrtsh
+.ENDIF
+
+SUBLIBS1= \
+ $(SLB)$/app.lib \
+ $(SLB)$/cctrl.lib \
+ $(SLB)$/chrdlg.lib \
+ $(SLB)$/config.lib \
+ $(SLB)$/dbui.lib \
+ $(SLB)$/dialog.lib \
+ $(SLB)$/dochdl.lib \
+ $(SLB)$/docvw.lib \
+ $(SLB)$/envelp.lib \
+ $(SLB)$/fldui.lib \
+ $(SLB)$/fmtui.lib \
+ $(SLB)$/frmdlg.lib \
+ $(SLB)$/globdoc.lib
+
+SUBLIBS2= \
+ $(SLB)$/index.lib \
+ $(SLB)$/lingu.lib \
+ $(SLB)$/misc.lib \
+ $(SLB)$/ribbar.lib \
+ $(SLB)$/shells.lib \
+ $(SLB)$/table.lib \
+ $(SLB)$/unoidl.lib \
+ $(SLB)$/utlui.lib \
+ $(SLB)$/web.lib \
+ $(SLB)$/wizard.lib \
+ $(SLB)$/uiview.lib \
+ $(SLB)$/wrtsh.lib
+
+# -----------------------------------------------------------
+
+.IF "$(RC_SUBDIRS)" == ""
+.IF "$(depend)" == ""
+ui: \
+ ui_1st \
+ $(SWSUBDIRS) \
+ ALLTAR
+.ELSE
+ui:
+ @+echo Doing nothing in source\ui
+.ENDIF
+.ENDIF
+
+################################################################
+
+LIB1TARGET=$(SLB)$/ui1.lib
+LIB1FILES= \
+ $(SUBLIBS1)
+
+LIB2TARGET=$(SLB)$/ui2.lib
+LIB2FILES= \
+ $(SUBLIBS2)
+
+.INCLUDE : target.mk
+
+################################################################
+
+.IF "$(dbutil)" != ""
+dbutilx="dbutil=true"
+.ENDIF
+.IF "$(debug)" != ""
+.IF "$(debug)"!="D_FORCE_OPT"
+dbutilx="debug=$(debug)"
+.ENDIF
+.ENDIF
+
+.IF "$(compact)" != ""
+dcompact="compact=true"
+.ELSE
+dcompact=
+.ENDIF
+
+.IF "$(CALLTARGETS)"!="ui"
+.IF "$(DOPLD)$(dopld)" == ""
+
+.IF "$(RC_SUBDIRS)" == ""
+#rule lib / subdir
+$(LB)$/%.lib : %
+ @echo @
+
+ui_1st .SETDIR=ui_1st:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(CALLMACROS)
+
+# app $(LB)$/app.lib .SETDIR=app:
+app .SETDIR=app:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+cctrl .SETDIR=cctrl:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+chrdlg .SETDIR=chrdlg:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+config .SETDIR=config:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+dbui .SETDIR=dbui:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+dialog .SETDIR=dialog:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+dochdl .SETDIR=dochdl:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+docvw .SETDIR=docvw:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+envelp .SETDIR=envelp:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+fldui .SETDIR=fldui:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+fmtui .SETDIR=fmtui:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+frmdlg .SETDIR=frmdlg:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+globdoc .SETDIR=globdoc:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+index .SETDIR=index:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+lingu .SETDIR=lingu:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+misc .SETDIR=misc:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+ribbar .SETDIR=ribbar:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+shells .SETDIR=shells:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+table .SETDIR=table:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+uiview .SETDIR=uiview:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+utlui .SETDIR=utlui:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+uno .SETDIR=uno:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+wizard .SETDIR=wizard:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+web .SETDIR=web:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+
+wrtsh .SETDIR=wrtsh:
+ @echo $@
+ @$(MAKECMD) -d $(MFLAGS) $(dbutilx) $(dcompact) $(CALLMACROS)
+.ENDIF
+.ELSE
+ui_1st:
+ @echo nix
+.ENDIF
+.ENDIF
+
+kill:
+ @+$(RM) $(SLB)$/ui.lst
+ @+$(RM) $(SLB)$/ui.lib
+
+
diff --git a/sw/source/ui/misc/autocorr.src b/sw/source/ui/misc/autocorr.src
new file mode 100644
index 000000000000..feb19530f863
--- /dev/null
+++ b/sw/source/ui/misc/autocorr.src
@@ -0,0 +1,63 @@
+/*************************************************************************
+ *
+ * $RCSfile: autocorr.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 */
+
+
diff --git a/sw/source/ui/misc/bookmark.cxx b/sw/source/ui/misc/bookmark.cxx
new file mode 100644
index 000000000000..d6c208b6da57
--- /dev/null
+++ b/sw/source/ui/misc/bookmark.cxx
@@ -0,0 +1,452 @@
+/*************************************************************************
+ *
+ * $RCSfile: bookmark.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+
+#include "view.hxx"
+#include "basesh.hxx"
+#include "wrtsh.hxx" //
+#include "cmdid.h"
+#include "bookmark.hxx" // SwInsertBookmarkDlg
+#include "bookmrk.hxx" // SwBookmark
+#include "bookmark.hrc"
+#include "misc.hrc"
+
+
+const String BookmarkCombo::aForbiddenChars = String::CreateFromAscii("/\\@:*?\";,.#");
+
+
+IMPL_LINK( SwInsertBookmarkDlg, ModifyHdl, BookmarkCombo *, pBox )
+{
+ BOOL bSelEntries = pBox->GetSelectEntryCount() != 0;
+ // if a string has been pasted from the clipboard then
+ // there may be illegal characters in the box
+ if(!bSelEntries)
+ {
+ String sTmp = pBox->GetText();
+ USHORT nLen = sTmp.Len();
+ String sMsg;
+ for(USHORT i = 0; i < BookmarkCombo::aForbiddenChars.Len(); i++)
+ {
+ USHORT nTmpLen = sTmp.Len();
+ sTmp.EraseAllChars(BookmarkCombo::aForbiddenChars.GetChar(i));
+ if(sTmp.Len() != nTmpLen)
+ sMsg += BookmarkCombo::aForbiddenChars.GetChar(i);
+ }
+ if(sTmp.Len() != nLen)
+ {
+ pBox->SetText(sTmp);
+ String sWarning(sRemoveWarning);
+ sWarning += sMsg;
+ InfoBox(this, sWarning).Execute();
+ }
+
+
+ }
+
+ aOkBtn.Enable(!bSelEntries); // neue Textmarke
+ aDeleteBtn.Enable(bSelEntries); // loeschbar?
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Callback zum Loeschen einer Textmarke
+ -----------------------------------------------------------------------*/
+
+IMPL_LINK( SwInsertBookmarkDlg, DeleteHdl, Button *, EMPTYARG )
+{
+ // Textmarken aus der ComboBox entfernen
+
+ for (USHORT i = aBookmarkBox.GetSelectEntryCount(); i; i-- )
+ aBookmarkBox.RemoveEntry(aBookmarkBox.GetSelectEntryPos(i - 1));
+
+ aBookmarkBox.SetText(aEmptyStr);
+ aDeleteBtn.Enable(FALSE); // keine weiteren Eintraege vorhanden
+ // aBookmarkBox.SetText(aEmptyStr);
+
+ aOkBtn.Enable(); // Im OK Handler wird geloescht
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Callback fuer OKButton. Fuegt eine neue Textmarke
+ an die akt. Position ein. Geloeschte Textmarken werden auch am Modell
+ entfernt.
+ -----------------------------------------------------------------------*/
+
+
+void SwInsertBookmarkDlg::Apply()
+{
+ // Textmarke einfuegen
+ USHORT nLen = aBookmarkBox.GetText().Len();
+ SwBoxEntry aTmpEntry(aBookmarkBox.GetText(), 0 );
+
+ if (nLen && (aBookmarkBox.GetEntryPos(aTmpEntry) == COMBOBOX_ENTRY_NOTFOUND))
+ {
+ String sEntry(aBookmarkBox.GetText());
+ sEntry.EraseAllChars(aBookmarkBox.GetMultiSelectionSeparator());
+
+ rSh.SetBookmark( KeyCode(), sEntry, aEmptyStr );
+ }
+
+ for (USHORT nCount = aBookmarkBox.GetRemovedCount(); nCount > 0; nCount--)
+ {
+ rSh.DelBookmark( aBookmarkBox.GetRemovedEntry( nCount -1 ).aName );
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: CTOR
+ -----------------------------------------------------------------------*/
+
+
+SwInsertBookmarkDlg::SwInsertBookmarkDlg( Window *pParent, SwWrtShell &rS ) :
+
+ SvxStandardDialog(pParent,SW_RES(DLG_INSERT_BOOKMARK)),
+
+ aBookmarkBox(this,SW_RES(CB_BOOKMARK)),
+ aBookmarkFrm(this,SW_RES(GB_BOOKMARK)),
+ aOkBtn(this,SW_RES(BT_OK)),
+ aCancelBtn(this,SW_RES(BT_CANCEL)),
+ aDeleteBtn(this,SW_RES(BT_DELETE)),
+ rSh( rS )
+{
+ aBookmarkBox.SetModifyHdl(LINK(this, SwInsertBookmarkDlg, ModifyHdl));
+ aBookmarkBox.EnableMultiSelection(TRUE);
+ aBookmarkBox.EnableAutocomplete( TRUE, TRUE );
+
+ aDeleteBtn.SetClickHdl(LINK(this, SwInsertBookmarkDlg, DeleteHdl));
+
+ // Combobox mit vorhandenen Bookmarks fuellen
+ USHORT nCount = rSh.GetBookmarkCnt(TRUE);
+
+ for( USHORT nId = 0; nId < nCount; nId++ )
+ {
+ SwBookmark& rBkmk = rSh.GetBookmark( nId, TRUE );
+ aBookmarkBox.InsertEntry( SwBoxEntry( rBkmk.GetName(), nId ) );
+ }
+
+ FreeResource();
+ sRemoveWarning = String(SW_RES(STR_REMOVE_WARNING));
+
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+SwInsertBookmarkDlg::~SwInsertBookmarkDlg()
+{
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+BookmarkCombo::BookmarkCombo( Window* pWin, const ResId& rResId ) :
+ SwComboBox(pWin, rResId)
+{
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+USHORT BookmarkCombo::GetFirstSelEntryPos() const
+{
+ return GetSelEntryPos(0);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+USHORT BookmarkCombo::GetNextSelEntryPos(USHORT nPos) const
+{
+ return GetSelEntryPos(nPos + 1);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+USHORT BookmarkCombo::GetSelEntryPos(USHORT nPos) const
+{
+ char cSep = GetMultiSelectionSeparator();
+
+ USHORT nCnt = GetText().GetTokenCount(cSep);
+
+ for (; nPos < nCnt; nPos++)
+ {
+ String sEntry(GetText().GetToken(nPos, cSep));
+ sEntry.EraseLeadingChars();
+ sEntry.EraseTrailingChars();
+ if (GetEntryPos(sEntry) != COMBOBOX_ENTRY_NOTFOUND)
+ return nPos;
+ }
+
+ return COMBOBOX_ENTRY_NOTFOUND;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+USHORT BookmarkCombo::GetSelectEntryCount() const
+{
+ USHORT nCnt = 0;
+
+ USHORT nPos = GetFirstSelEntryPos();
+ while (nPos != COMBOBOX_ENTRY_NOTFOUND)
+ {
+ nPos = GetNextSelEntryPos(nPos);
+ nCnt++;
+ }
+
+ return nCnt;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+String BookmarkCombo::GetSelectEntry( USHORT nSelIndex ) const
+{
+ USHORT nCnt = 0;
+ USHORT nPos = GetFirstSelEntryPos();
+ String sEntry;
+
+ while (nPos != COMBOBOX_ENTRY_NOTFOUND)
+ {
+ if (nSelIndex == nCnt)
+ {
+ char cSep = GetMultiSelectionSeparator();
+ sEntry = GetText().GetToken(nPos, cSep);
+ sEntry.EraseLeadingChars();
+ sEntry.EraseTrailingChars();
+
+ break;
+ }
+ nPos = GetNextSelEntryPos(nPos);
+ nCnt++;
+ }
+
+ return sEntry;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Position in der Listbox (der ComboBox)
+ -----------------------------------------------------------------------*/
+
+USHORT BookmarkCombo::GetSelectEntryPos( USHORT nSelIndex ) const
+{
+ USHORT nCnt = 0;
+ USHORT nPos = GetFirstSelEntryPos();
+
+ while (nPos != COMBOBOX_ENTRY_NOTFOUND)
+ {
+ if (nSelIndex == nCnt)
+ {
+ char cSep = GetMultiSelectionSeparator();
+ String sEntry(GetText().GetToken(nPos, cSep));
+ sEntry.EraseLeadingChars();
+ sEntry.EraseTrailingChars();
+
+ return GetEntryPos(sEntry);
+ }
+ nPos = GetNextSelEntryPos(nPos);
+ nCnt++;
+ }
+
+ return COMBOBOX_ENTRY_NOTFOUND;
+}
+/* -----------------05.02.99 08:39-------------------
+ *
+ * --------------------------------------------------*/
+long BookmarkCombo::PreNotify( NotifyEvent& rNEvt )
+{
+ long nHandled = 0;
+ if ( rNEvt.GetType() == EVENT_KEYINPUT )
+ {
+ const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
+ String sKey = pKEvt->GetCharCode();
+ if(STRING_NOTFOUND != aForbiddenChars.Search(sKey))
+ nHandled = 1;
+ }
+ if(!nHandled)
+ nHandled = SwComboBox::PreNotify( rNEvt );
+ return nHandled;
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.50 2000/09/18 16:05:55 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.49 2000/05/10 11:53:42 os
+ Basic API removed
+
+ Revision 1.48 2000/04/18 15:08:16 os
+ UNICODE
+
+ Revision 1.47 1999/07/02 07:13:56 OS
+ #63003# NameWarning also in StarOne rename dialog
+
+
+ Rev 1.46 02 Jul 1999 09:13:56 OS
+ #63003# NameWarning also in StarOne rename dialog
+
+ Rev 1.45 18 Jun 1999 13:04:58 OS
+ #63003# prevent illegal characters from beeing pasted
+
+ Rev 1.44 25 Feb 1999 13:43:04 OS
+ #62407# AutoComplete casesensitive
+
+ Rev 1.43 08 Feb 1999 15:04:12 OS
+ #61421# einige Sonderzeichen in Textmarken nicht erlauben
+
+ Rev 1.42 08 Oct 1998 15:45:34 OM
+ #57748# Multiselektion beim Loeschen von Bookmarks
+
+ Rev 1.41 23 Feb 1998 07:28:18 OS
+ GetBookmark/ Cnt mit Bookmark-Flag
+
+ Rev 1.40 24 Nov 1997 16:47:42 MA
+ includes
+
+ Rev 1.39 03 Nov 1997 13:22:42 MA
+ precomp entfernt
+
+ Rev 1.38 08 Aug 1997 17:28:20 OM
+ Headerfile-Umstellung
+
+ Rev 1.37 30 Jul 1997 18:33:30 HJS
+ includes
+
+ Rev 1.36 07 Apr 1997 16:08:26 MH
+ chg: header
+
+ Rev 1.35 20 Feb 1997 10:00:44 MA
+ #36242# richtig enablen
+
+ Rev 1.34 14 Jan 1997 09:22:28 TRI
+ includes wegen Internal Compiler Error
+
+ Rev 1.33 11 Nov 1996 11:05:46 MA
+ ResMgr
+
+ Rev 1.32 02 Oct 1996 18:28:58 MA
+ Umstellung Enable/Disable
+
+ Rev 1.31 28 Aug 1996 14:12:20 OS
+ includes
+
+ Rev 1.30 06 Feb 1996 15:21:06 JP
+ Link Umstellung 305
+
+ Rev 1.29 24 Nov 1995 16:58:44 OM
+ PCH->PRECOMPILED
+
+ Rev 1.28 08 Nov 1995 13:31:40 JP
+ Umstellung zur 301: Change -> Set
+
+ Rev 1.27 24 Oct 1995 17:05:06 OS
+ Textmarken einfuegen/loeschen recordable
+
+ Rev 1.26 17 Oct 1995 20:54:50 JP
+ IsMark oder IsBookmark am Bookmark benutzen
+
+ Rev 1.25 30 Aug 1995 14:00:54 MA
+ fix: sexport'iert
+
+ Rev 1.24 21 Aug 1995 09:32:42 MA
+ chg: swstddlg -> svxstandarddialog, Optimierungen
+
+ Rev 1.23 05 Jul 1995 19:08:14 JP
+ SwBookmarkFUNC gibts nicht mehr, rufe Methoden an die Shell-Methoden
+
+ Rev 1.22 20 Mar 1995 19:28:20 OS
+ unbenutzte Funktionen entfernt
+
+ Rev 1.21 26 Oct 1994 12:18:00 ER
+ add: PCH (missed the misc)
+
+ -----------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/misc/bookmark.hrc b/sw/source/ui/misc/bookmark.hrc
new file mode 100644
index 000000000000..ea0efd8bf21f
--- /dev/null
+++ b/sw/source/ui/misc/bookmark.hrc
@@ -0,0 +1,68 @@
+/*************************************************************************
+ *
+ * $RCSfile: bookmark.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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_BOOKMARK 1
+#define GB_BOOKMARK 2
+
+#define BT_OK 20
+#define BT_CANCEL 21
+#define BT_DELETE 22
diff --git a/sw/source/ui/misc/bookmark.src b/sw/source/ui/misc/bookmark.src
new file mode 100644
index 000000000000..4a7dc15dbe32
--- /dev/null
+++ b/sw/source/ui/misc/bookmark.src
@@ -0,0 +1,199 @@
+/*************************************************************************
+ *
+ * $RCSfile: bookmark.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "misc.hrc"
+#include "bookmark.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ModalDialog DLG_INSERT_BOOKMARK
+{
+ HelpID = FN_INSERT_BOOKMARK ;
+ OUTPUTSIZE = TRUE ;
+ Size = MAP_APPFONT ( 179 , 96 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Textmarke einfügen : Textmarke einf³gen */
+ TEXT = "Textmarke einfügen" ;
+ TEXT [ English ] = "Insert bookmark" ;
+ TEXT [ norwegian ] = "Sett inn bokmerke" ;
+ TEXT [ italian ] = "Inserisci segnalibro" ;
+ TEXT [ portuguese_brazilian ] = "Inserir marca" ;
+ TEXT [ portuguese ] = "Inserir marcador de texto" ;
+ TEXT [ finnish ] = "Lisää kirjanmerkki" ;
+ TEXT [ danish ] = "Indsæt tekstmarkering" ;
+ TEXT [ french ] = "Insertion d'un repère de texte" ;
+ TEXT [ swedish ] = "Infoga bokmärke" ;
+ TEXT [ dutch ] = "Tekstmarkering invoegen" ;
+ TEXT [ spanish ] = "Insertar marca" ;
+ TEXT [ english_us ] = "Insert Bookmark" ;
+ MOVEABLE = TRUE ;
+ SVLOOK = TRUE ;
+ OkButton BT_OK
+ {
+ DISABLE = TRUE ;
+ Pos = MAP_APPFONT ( 123 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TABSTOP = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 123 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TABSTOP = TRUE ;
+ };
+ ComboBox CB_BOOKMARK
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 99 , 70 ) ;
+ TABSTOP = TRUE ;
+ AutoHScroll = TRUE ;
+ SORT = TRUE ;
+ };
+ PushButton BT_DELETE
+ {
+ Pos = MAP_APPFONT ( 123 , 40 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### 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" ;
+ TABSTOP = TRUE ;
+ DISABLE = TRUE ;
+ TEXT[ chinese_simplified ] = "ɾ³ý(~D)";
+ TEXT[ russian ] = "Óäàëèòü";
+ TEXT[ polish ] = "~Usuñ";
+ TEXT[ japanese ] = "íœ(~D)";
+ TEXT[ chinese_traditional ] = "§R°£(~D)";
+ TEXT[ greek ] = "ÄéáãñáöÞ";
+ TEXT[ korean ] = "»èÁ¦(~D)";
+ TEXT[ arabic ] = "ÍÐÝ";
+ TEXT[ turkish ] = "~Sil";
+ };
+ GroupBox GB_BOOKMARK
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 111 , 87 ) ;
+ TEXT = "Textmarken" ;
+ TEXT [ English ] = "Bookmarks" ;
+ TEXT [ norwegian ] = "Bokmerker" ;
+ TEXT [ italian ] = "Segnalibri" ;
+ TEXT [ portuguese_brazilian ] = "Marcas" ;
+ TEXT [ portuguese ] = "Marcadores de texto" ;
+ TEXT [ finnish ] = "Kirjanmerkit" ;
+ TEXT [ danish ] = "Tekstmarkeringer" ;
+ TEXT [ french ] = "Repères de texte" ;
+ TEXT [ swedish ] = "Bokmärken" ;
+ TEXT [ dutch ] = "Tekstmarkeringen" ;
+ TEXT [ spanish ] = "Marcas de texto" ;
+ TEXT [ english_us ] = "Bookmarks" ;
+ TEXT[ chinese_simplified ] = "ÊéÇ©";
+ TEXT[ russian ] = "Çàêëàäêè";
+ TEXT[ polish ] = "Zak³adki";
+ TEXT[ japanese ] = "÷½ÄÏ°¸";
+ TEXT[ chinese_traditional ] = "¤º¤å¼ÐÅÒ";
+ TEXT[ greek ] = "Óåëéäïäåßêôåò";
+ TEXT[ korean ] = "Ã¥ °¥ÇÇ";
+ TEXT[ arabic ] = "ÅÔÇÑÇÊ ãÑÌÚíÉ";
+ TEXT[ turkish ] = "Metin iþareti";
+ };
+ TEXT[ chinese_simplified ] = "²åÈëÊéÇ©";
+ TEXT[ russian ] = "Âñòàâêà çàêëàäîê";
+ TEXT[ polish ] = "Wstaw zak³adkê";
+ TEXT[ japanese ] = "÷½ÄÏ°¸‚Ì‘}“ü";
+ TEXT[ chinese_traditional ] = "´¡¤J¤º¤å¼ÐÅÒ";
+ TEXT[ greek ] = "ÅéóáãùãÞ óåëéäïäåßêôç";
+ TEXT[ korean ] = "Ã¥ °¥ÇÇ »ðÀÔ";
+ TEXT[ arabic ] = "ÅÏÑÇÌ ÅÔÇÑÉ ãÑÌÚíÉ";
+ TEXT[ turkish ] = "Metin iþareti ekle";
+};
+String STR_REMOVE_WARNING
+{
+ Text = "Die folgenden Zeichen sind nicht zulässig und wurden deshalb entfernt: ";
+ Text [English] = "The following characters are not valid and have been removed: ";
+ Text[ english_us ] = "The following characters are not valid and have been removed: ";
+ Text[ portuguese ] = "Os seguintes caracteres foram eliminados porque não são válidos: ";
+ Text[ russian ] = "Ñëåäóþùèå çíàêè íå äîïóñêàþòñÿ è ïîýòîìó áóäóò óäàëåíû: ";
+ Text[ greek ] = "Ïé áêüëïõèïé ÷áñáêôÞñåò Ý÷ïõí äéáãñáöåß åðåéäÞ äåí åßíáé Ýãêõñïé. ";
+ Text[ dutch ] = "De volgende tekens zijn niet toegestaan en werden daarom verwijderd. ";
+ Text[ french ] = "Les caractères suivants ont été supprimés car ils ne sont pas permis : ";
+ Text[ spanish ] = "Los siguientes caracteres han sido eliminados porque no se permiten: ";
+ Text[ italian ] = "I caratteri seguenti non sono ammessi e per questo eliminati. ";
+ Text[ danish ] = "De følgende tegn er ikke tilladte og er derfor blevet fjernet: ";
+ Text[ swedish ] = "Följande tecken är inte tillåtna och har därför tagits bort: ";
+ Text[ polish ] = "Nastêpuj¹cy znak jest niedozwolony i zosta³ dlatego usuniêty: ";
+ Text[ portuguese_brazilian ] = "The following characters are not valid and have been removed: ";
+ Text[ japanese ] = "ŽŸ‚Ì•¶Žš‚Í‹–‰Â‚³‚ê‚Ä‚¢‚È‚¢‚Ì‚Åœ‹Ž‚³‚ê‚Ü‚µ‚½B ";
+ Text[ korean ] = "´ÙÀ½ÀÇ ¹®ÀÚµéÀº À¯È¿ÇÏÁö ¾Ê¾Æ¼­ Á¦°ÅµÇ¾ú½À´Ï´Ù: ";
+ Text[ chinese_simplified ] = "ÏÂÁÐ×Ö·ûÎÞЧÇÒÒѾ­±»É¾³ý£º ";
+ Text[ chinese_traditional ] = "¤U¦Cªº¦r«¬µL®Ä¦Ó³Q§R°£¡G ";
+ Text[ arabic ] = "ÇáÃÍÑÝ ÇáÊÇáíÉ ÛíÑ ÕÇáÍÉ¡ áåÐÇ Êã ÍÐÝåÇ: ";
+ Text[ turkish ] = "Aþaðýdaki karakterler geçerli deðiller ve bu nedenle çýkartýldýlar: ";
+};
+
diff --git a/sw/source/ui/misc/docfnote.cxx b/sw/source/ui/misc/docfnote.cxx
new file mode 100644
index 000000000000..08276b7580c8
--- /dev/null
+++ b/sw/source/ui/misc/docfnote.cxx
@@ -0,0 +1,719 @@
+/*************************************************************************
+ *
+ * $RCSfile: docfnote.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXSTYLE_HXX //autogen
+#include <svtools/style.hxx>
+#endif
+
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _DOCFNOTE_HXX
+#include <docfnote.hxx>
+#endif
+#ifndef _IMPFNOTE_HXX
+#include <impfnote.hxx>
+#endif
+#ifndef _FTNINFO_HXX
+#include <ftninfo.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _CHARFMT_HXX //autogen
+#include <charfmt.hxx>
+#endif
+#ifndef _DOCSTYLE_HXX //autogen
+#include <docstyle.hxx>
+#endif
+#ifndef _SWWDOCSH_HXX //autogen
+#include <wdocsh.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+
+#ifndef _SWSTYLE_H
+#include <swstyle.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _MISC_HRC
+#include <misc.hrc>
+#endif
+#ifndef _DOCFNOTE_HRC
+#include <docfnote.hrc>
+#endif
+#ifndef _FRMUI_HRC
+#include <frmui.hrc>
+#endif
+
+
+// Numerierungsformat Umsetzung:
+// ListBox - Format - Enum-Wert
+// 0 - A, B, C, ... - 0
+// 1 - a, b, c, ... - 1
+// 2 - I, II, III, ... - 2
+// 3 - i, ii, iii, ... - 3
+// 4 - 1, 2, 3, ... - 4
+// 5 - A, .., AA, .., - 9
+// 6 - a, .., aa, .., - 10
+
+inline USHORT GetNumPos( USHORT n )
+{
+ return SVX_NUM_ARABIC < n ? n - 4 : n;
+}
+
+inline SvxExtNumType GetNumType( USHORT n )
+{
+ return (SvxExtNumType)(4 < n ? n + 4 : n );
+}
+
+SwFootNoteOptionDlg::SwFootNoteOptionDlg( Window *pParent, SwWrtShell &rS ) :
+ SfxTabDialog( pParent, SW_RES(DLG_DOC_FOOTNOTE) ),
+ rSh( rS )
+{
+ FreeResource();
+ RemoveResetButton();
+
+ aOldOkHdl = GetOKButton().GetClickHdl();
+ GetOKButton().SetClickHdl( LINK( this, SwFootNoteOptionDlg, OkHdl ) );
+
+ AddTabPage( TP_FOOTNOTEOPTION, SwFootNoteOptionPage::Create, 0 );
+ AddTabPage( TP_ENDNOTEOPTION, SwEndNoteOptionPage::Create, 0 );
+}
+
+void SwFootNoteOptionDlg::PageCreated( USHORT nId, SfxTabPage &rPage )
+{
+ ((SwEndNoteOptionPage&)rPage).SetShell( rSh );
+}
+
+SwFootNoteOptionDlg::~SwFootNoteOptionDlg()
+{
+}
+
+IMPL_LINK( SwFootNoteOptionDlg, OkHdl, Button *, pBtn )
+{
+ SfxItemSet *pSet = 0;
+ SfxTabPage *pPage = GetTabPage( TP_FOOTNOTEOPTION );
+ if ( pPage )
+ pPage->FillItemSet( (SfxItemSet&)pSet );
+ pPage = GetTabPage( TP_ENDNOTEOPTION );
+ if ( pPage )
+ pPage->FillItemSet( (SfxItemSet&)pSet );
+ aOldOkHdl.Call( pBtn );
+ return 0;
+}
+
+
+//----------------------------------------------------------------------
+
+
+SwEndNoteOptionPage::SwEndNoteOptionPage( Window *pParent, BOOL bEN,
+ const SfxItemSet &rSet ) :
+ SfxTabPage( pParent, SW_RES(bEN ? TP_ENDNOTEOPTION : TP_FOOTNOTEOPTION), rSet ),
+ aPosPageBox (this, SW_RES( RB_POS_PAGE )),
+ aPosChapterBox (this, SW_RES( RB_POS_CHAPTER)),
+ aPosGrp (this, SW_RES( GB_POS )),
+
+ aNumViewBox (this, SW_RES( LB_NUMVIEW )),
+ aOffsetLbl (this, SW_RES( FT_OFFSET )),
+ aOffsetFld (this, SW_RES( FLD_OFFSET )),
+ aNumCountBox (this, SW_RES( LB_NUMCOUNT )),
+ aPrefixFT (this, SW_RES( FT_PREFIX )),
+ aPrefixED (this, SW_RES( ED_PREFIX )),
+ aSuffixFT (this, SW_RES( FT_SUFFIX )),
+ aSuffixED (this, SW_RES( ED_SUFFIX )),
+
+
+ aNumGrp (this, SW_RES( GB_NUM )),
+
+ aParaTemplLbl (this, SW_RES( FT_PARA_TEMPL)),
+ aParaTemplBox (this, SW_RES( LB_PARA_TEMPL)),
+ aPageTemplLbl (this, SW_RES( FT_PAGE_TEMPL)),
+ aPageTemplBox (this, SW_RES( LB_PAGE_TEMPL)),
+ aTemplGrp (this, SW_RES( GB_TEMPL )),
+
+ aFtnCharTextTemplLbl( this, SW_RES( FT_TEXT_CHARFMT)),
+ aFtnCharTextTemplBox( this, SW_RES( LB_TEXT_CHARFMT)),
+ aFtnCharAnchorTemplLbl( this, SW_RES( FT_ANCHR_CHARFMT)),
+ aFtnCharAnchorTemplBox( this, SW_RES( LB_ANCHR_CHARFMT)),
+ aCharTemplGrp( this, SW_RES(GB_CHAR_TEMPL)),
+
+ aContLbl (this, SW_RES( FT_CONT )),
+ aContEdit (this, SW_RES( ED_CONT )),
+ aContFromLbl (this, SW_RES( FT_CONT_FROM )),
+ aContFromEdit (this, SW_RES( ED_CONT_FROM )),
+ aContGrp (this, SW_RES( GB_CONT )),
+
+ aNumPage(aNumCountBox.GetEntry(FTNNUM_PAGE)),
+ pSh( 0 ),
+ bPosDoc(FALSE),
+ bEndNote( bEN )
+{
+ FreeResource();
+
+ aPosPageBox.SetClickHdl(LINK(this, SwEndNoteOptionPage, PosPage));
+ aPosChapterBox.SetClickHdl(LINK(this, SwEndNoteOptionPage, PosChapter));
+ aNumCountBox.SetSelectHdl(LINK(this, SwEndNoteOptionPage, NumCount));
+
+}
+
+void SwEndNoteOptionPage::Reset( const SfxItemSet& )
+{
+ SwEndNoteInfo *pInf = bEndNote ? new SwEndNoteInfo( pSh->GetEndNoteInfo() )
+ : new SwFtnInfo( pSh->GetFtnInfo() );
+ SfxObjectShell * pDocSh = SfxObjectShell::Current();
+ if(PTR_CAST(SwWebDocShell, pDocSh))
+ {
+ aParaTemplLbl .Hide();
+ aParaTemplBox .Hide();
+ aPageTemplLbl .Hide();
+ aPageTemplBox .Hide();
+ aFtnCharTextTemplLbl.Hide();
+ aFtnCharTextTemplBox.Hide();
+ aFtnCharAnchorTemplLbl.Hide();
+ aFtnCharAnchorTemplBox.Hide();
+ aCharTemplGrp .Hide();
+ aTemplGrp .Hide();
+ if(!bEndNote)
+ {
+ // die unteren Controls sollen nach oben verschoben werden
+ long nYDiff = aPosGrp.GetPosPixel().Y() - aTemplGrp.GetPosPixel().Y();
+ Point aTmpPos(aPosGrp.GetPosPixel());
+ aTmpPos.Y() -= nYDiff;
+ aPosGrp.SetPosPixel(aTmpPos);
+ aTmpPos = aPosPageBox.GetPosPixel();
+ aTmpPos.Y() -= nYDiff;
+ aPosPageBox.SetPosPixel(aTmpPos);
+ aTmpPos = aPosChapterBox.GetPosPixel();
+ aTmpPos.Y() -= nYDiff;
+ aPosChapterBox.SetPosPixel(aTmpPos);
+ aTmpPos = aNumCountBox.GetPosPixel();
+ aTmpPos.Y() -= nYDiff;
+ aNumCountBox.SetPosPixel(aTmpPos);
+ aTmpPos = aContLbl.GetPosPixel();
+ aTmpPos.Y() -= nYDiff;
+ aContLbl.SetPosPixel(aTmpPos);
+ aTmpPos = aContEdit.GetPosPixel();
+ aTmpPos.Y() -= nYDiff;
+ aContEdit.SetPosPixel(aTmpPos);
+ aTmpPos = aContFromLbl.GetPosPixel();
+ aTmpPos.Y() -= nYDiff;
+ aContFromLbl.SetPosPixel(aTmpPos);
+ aTmpPos = aContFromEdit.GetPosPixel();
+ aTmpPos.Y() -= nYDiff;
+ aContFromEdit.SetPosPixel(aTmpPos);
+ aTmpPos = aContGrp.GetPosPixel();
+ aTmpPos.Y() -= nYDiff;
+ aContGrp.SetPosPixel(aTmpPos);
+ }
+ }
+ if ( bEndNote )
+ {
+ aPosGrp.Hide();
+ aPosPageBox.Hide();
+ aPosChapterBox.Hide();
+ aNumCountBox.Hide();
+ aContLbl.Hide();
+ aContEdit.Hide();
+ aContFromLbl.Hide();
+ aContFromEdit.Hide();
+ aContGrp.Hide();
+ bPosDoc = TRUE;
+ }
+ else
+ {
+ const SwFtnInfo &rInf = pSh->GetFtnInfo();
+ // Position (Seite, Kapitel) setzen
+ if ( rInf.ePos == FTNPOS_PAGE )
+ {
+ aPosPageBox.Check();
+ aPageTemplLbl.Enable(FALSE);
+ aPageTemplBox.Enable(FALSE);
+ }
+ else // if ( rInf.ePos == FTNPOS_CHAPTER )
+ {
+ aPosChapterBox.Check();
+ aNumCountBox.RemoveEntry(aNumPage);
+ bPosDoc = TRUE;
+ }
+ // Verweistexte
+ aContEdit.SetText(rInf.aQuoVadis);
+ aContFromEdit.SetText(rInf.aErgoSum);
+
+ // gesammelt wo
+ SelectNumbering(rInf.eNum);
+ }
+
+ // Numerierung
+ // Art
+ aNumViewBox.SelectEntryPos( GetNumPos( pInf->aFmt.eType ));
+ aOffsetFld.SetValue(pInf->nFtnOffset + 1);
+ aPrefixED.SetText(pInf->GetPrefix());
+ aSuffixED.SetText(pInf->GetSuffix());
+
+ const SwCharFmt* pCharFmt = pInf->GetCharFmt(
+ *pSh->GetView().GetDocShell()->GetDoc());
+ aFtnCharTextTemplBox.SelectEntry(pCharFmt->GetName());
+ aFtnCharTextTemplBox.SaveValue();
+
+ pCharFmt = pInf->GetAnchorCharFmt( *pSh->GetDoc() );
+ aFtnCharAnchorTemplBox.SelectEntry( pCharFmt->GetName() );
+ aFtnCharAnchorTemplBox.SaveValue();
+
+ // Vorlagen - Sonderbereiche
+ // Absatz
+ SfxStyleSheetBasePool* pStyleSheetPool = pSh->GetView().GetDocShell()->GetStyleSheetPool();
+ pStyleSheetPool->SetSearchMask(SFX_STYLE_FAMILY_PARA, SWSTYLEBIT_EXTRA);
+ SfxStyleSheetBase *pStyle = pStyleSheetPool->First();
+ while(pStyle)
+ {
+ aParaTemplBox.InsertEntry(pStyle->GetName());
+ pStyle = pStyleSheetPool->Next();
+ }
+
+ String sStr;
+ GetDocPoolNm( bEndNote ? RES_POOLCOLL_ENDNOTE
+ : RES_POOLCOLL_FOOTNOTE, sStr );
+ if(LISTBOX_ENTRY_NOTFOUND == aParaTemplBox.GetEntryPos( sStr ) )
+ aParaTemplBox.InsertEntry( sStr );
+
+ SwTxtFmtColl* pColl = pInf->GetFtnTxtColl();
+ if( !pColl )
+ aParaTemplBox.SelectEntry( sStr ); // Default
+ else
+ {
+ ASSERT(!pColl->IsDefault(), "Defaultvorlage fuer Fussnoten ist falsch.");
+ const USHORT nPos = aParaTemplBox.GetEntryPos(pColl->GetName());
+ if( LISTBOX_ENTRY_NOTFOUND != nPos )
+ aParaTemplBox.SelectEntryPos( nPos );
+ else
+ {
+ aParaTemplBox.InsertEntry(pColl->GetName());
+ aParaTemplBox.SelectEntry(pColl->GetName());
+ }
+ }
+
+ // Seite
+ for( USHORT i = RES_POOLPAGE_BEGIN; i <= RES_POOLPAGE_ENDNOTE; ++i )
+ aPageTemplBox.InsertEntry(GetDocPoolNm( i, sStr ));
+
+ USHORT nCount = pSh->GetPageDescCnt();
+ for(i = 0; i < nCount; ++i)
+ {
+ const SwPageDesc &rPageDesc = pSh->GetPageDesc(i);
+ if(LISTBOX_ENTRY_NOTFOUND == aPageTemplBox.GetEntryPos(rPageDesc.GetName()))
+ aPageTemplBox.InsertEntry(rPageDesc.GetName());
+ }
+
+ aPageTemplBox.SelectEntry( pInf->GetPageDesc( *pSh->GetDoc() )->GetName());
+ delete pInf;
+}
+
+SwEndNoteOptionPage::~SwEndNoteOptionPage()
+{
+}
+
+SfxTabPage *SwEndNoteOptionPage::Create( Window *pParent, const SfxItemSet &rSet )
+{
+ return new SwEndNoteOptionPage( pParent, TRUE, rSet );
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Unterschiedliche Arten der Numerierung; da die Listbox
+ unterschiedlich viele Eintraege hat, hier Funktionen
+ fuer das Setzen und Erfragen der gemeinten Art
+ der Numerierung.
+------------------------------------------------------------------------*/
+inline void SwEndNoteOptionPage::SelectNumbering(int eNum)
+{
+ aNumCountBox.SelectEntryPos(bPosDoc? (USHORT)eNum - 1: eNum);
+ NumCount( &aNumCountBox );
+}
+
+
+
+int SwEndNoteOptionPage::GetNumbering() const
+{
+ const USHORT nPos = aNumCountBox.GetSelectEntryPos();
+ return (int) bPosDoc? nPos + 1: nPos;
+}
+
+/*-----------------09.02.98 11:17-------------------
+
+--------------------------------------------------*/
+void SwEndNoteOptionPage::SetShell( SwWrtShell &rShell )
+{
+ pSh = &rShell;
+ // Zeichenvorlagen sammeln
+ aFtnCharTextTemplBox.Clear();
+ aFtnCharAnchorTemplBox.Clear();
+ ::FillCharStyleListBox(aFtnCharTextTemplBox,
+ pSh->GetView().GetDocShell());
+
+ ::FillCharStyleListBox(aFtnCharAnchorTemplBox,
+ pSh->GetView().GetDocShell());
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Handler hinter dem Button fuer Sammeln der Fussnote
+ auf der Seite.
+ In diesem Fall koennen alle Numerierungsarten verwendet
+ werden.
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwEndNoteOptionPage, PosPage, Button *, EMPTYARG )
+{
+ const SwFtnNum eNum = (const SwFtnNum)GetNumbering();
+ bPosDoc = FALSE;
+ if(LISTBOX_ENTRY_NOTFOUND == aNumCountBox.GetEntryPos(aNumPage)) {
+ aNumCountBox.InsertEntry(aNumPage, FTNNUM_PAGE);
+ SelectNumbering(eNum);
+ }
+ aPageTemplLbl.Enable(FALSE);
+ aPageTemplBox.Enable(FALSE);
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwEndNoteOptionPage, NumCount, ListBox*, EMPTYARG )
+{
+ BOOL bEnable = TRUE;
+ if( aNumCountBox.GetEntryCount() - 1 != aNumCountBox.GetSelectEntryPos() )
+ {
+ bEnable = FALSE;
+ aOffsetFld.SetValue(1);
+ }
+ aOffsetLbl.Enable(bEnable);
+ aOffsetFld.Enable(bEnable);
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Handler hinter dem Button fuer Sammeln der Fussnote
+ am Kapitel oder Dokumentende.
+ In diesem Fall kann keine seitenweise Numerierung verwendet
+ werden.
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK_INLINE_START( SwEndNoteOptionPage, PosChapter, Button *, EMPTYARG )
+{
+ if ( !bPosDoc )
+ SelectNumbering(FTNNUM_DOC);
+
+ bPosDoc = TRUE;
+ aNumCountBox.RemoveEntry(aNumPage);
+ aPageTemplLbl.Enable();
+ aPageTemplBox.Enable();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwEndNoteOptionPage, PosChapter, Button *, EMPTYARG )
+
+SwCharFmt* lcl_GetCharFormat( SwWrtShell* pSh, const String& rCharFmtName )
+{
+ SwCharFmt* pFmt = 0;
+ USHORT nChCount = pSh->GetCharFmtCount();
+ for(USHORT i = 0; i< nChCount; i++)
+ {
+ SwCharFmt& rChFmt = pSh->GetCharFmt(i);
+ if(rChFmt.GetName() == rCharFmtName )
+ {
+ pFmt = &rChFmt;
+ break;
+ }
+ }
+ if(!pFmt)
+ {
+ SfxStyleSheetBasePool* pPool = pSh->GetView().GetDocShell()->GetStyleSheetPool();
+ SfxStyleSheetBase* pBase;
+ pBase = pPool->Find(rCharFmtName, SFX_STYLE_FAMILY_CHAR);
+ if(!pBase)
+ pBase = &pPool->Make(rCharFmtName, SFX_STYLE_FAMILY_CHAR);
+ pFmt = ((SwDocStyleSheet*)pBase)->GetCharFmt();
+ }
+ return pFmt;
+}
+
+BOOL SwEndNoteOptionPage::FillItemSet( SfxItemSet &rSet )
+{
+ SwEndNoteInfo *pInf = bEndNote ? new SwEndNoteInfo() : new SwFtnInfo();
+
+ pInf->nFtnOffset = aOffsetFld.GetValue() -1;
+ pInf->aFmt.eType = GetNumType( aNumViewBox.GetSelectEntryPos() );
+ pInf->SetPrefix(aPrefixED.GetText());
+ pInf->SetSuffix(aSuffixED.GetText());
+
+ pInf->SetCharFmt( lcl_GetCharFormat( pSh,
+ aFtnCharTextTemplBox.GetSelectEntry() ) );
+ pInf->SetAnchorCharFmt( lcl_GetCharFormat( pSh,
+ aFtnCharAnchorTemplBox.GetSelectEntry() ) );
+
+ // Absatzvorlage
+ USHORT nPos = aParaTemplBox.GetSelectEntryPos();
+ if(LISTBOX_ENTRY_NOTFOUND != nPos)
+ {
+ const String aFmtName( aParaTemplBox.GetSelectEntry() );
+ SwTxtFmtColl *pColl = pSh->GetParaStyle(aFmtName, SwWrtShell::GETSTYLE_CREATEANY);
+ ASSERT(pColl, "Absatzvorlage nicht gefunden.");
+ pInf->SetFtnTxtColl(*pColl);
+ }
+
+ // Seitenvorlage
+ pInf->ChgPageDesc( pSh->FindPageDescByName(
+ aPageTemplBox.GetSelectEntry(), TRUE ) );
+
+ if ( bEndNote )
+ {
+ if ( !(*pInf == pSh->GetEndNoteInfo()) )
+ pSh->SetEndNoteInfo( *pInf );
+ }
+ else
+ {
+ SwFtnInfo *pI = (SwFtnInfo*)pInf;
+ pI->ePos = aPosPageBox.IsChecked() ? FTNPOS_PAGE : FTNPOS_CHAPTER;
+ pI->eNum = (SwFtnNum)GetNumbering();
+ pI->aQuoVadis = aContEdit.GetText();
+ pI->aErgoSum = aContFromEdit.GetText();
+ if ( !(*pI == pSh->GetFtnInfo()) )
+ pSh->SetFtnInfo( *pI );
+ }
+ delete pInf;
+ return TRUE;
+}
+
+SwFootNoteOptionPage::SwFootNoteOptionPage( Window *pParent, const SfxItemSet &rSet ) :
+ SwEndNoteOptionPage( pParent, FALSE, rSet )
+{
+}
+
+SwFootNoteOptionPage::~SwFootNoteOptionPage()
+{
+}
+
+SfxTabPage *SwFootNoteOptionPage::Create(Window *pParent, const SfxItemSet &rSet )
+{
+ return new SwFootNoteOptionPage( pParent, rSet );
+}
+
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.72 2000/09/18 16:05:56 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.71 2000/07/27 21:16:43 jp
+ opt: get template names direct from the doc and don't load it from the resource
+
+ Revision 1.70 2000/04/26 14:57:09 os
+ GetName() returns const String&
+
+ Revision 1.69 2000/02/22 14:50:14 os
+ #72894# footnote option dialog in HTML documents
+
+ Revision 1.68 1999/11/12 13:02:12 jp
+ call Set-/GetAnchorCharFormat at SwEndnoteInfo
+
+ Revision 1.67 1999/11/05 12:45:36 os
+ character style for footnote anchor
+
+ Revision 1.66 1999/02/05 16:45:26 JP
+ Task #61467#/#61014#: neu FindPageDescByName
+
+
+ Rev 1.65 05 Feb 1999 17:45:26 JP
+ Task #61467#/#61014#: neu FindPageDescByName
+
+ Rev 1.64 17 Nov 1998 10:57:52 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.63 06 Nov 1998 16:36:02 OS
+ #58450# Fussnoten auch im HTML
+
+ Rev 1.62 06 Aug 1998 21:41:14 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.61 26 Jun 1998 16:17:42 OM
+ #51758# Unterschiedliche HelpIDs fuer alle Controls
+
+ Rev 1.60 15 Apr 1998 14:34:58 OS
+ CharStyles sortiert
+
+ Rev 1.59 26 Feb 1998 17:09:28 OS
+ FillItemSet: erst aendern, dann vergleichen
+
+ Rev 1.58 24 Feb 1998 12:17:08 OS
+ Endnotesymbol #47534#
+
+ Rev 1.57 19 Feb 1998 13:52:18 OM
+ Zeichen statt Seitenvorlagen
+
+ Rev 1.56 09 Feb 1998 13:07:28 OS
+ Fuss-/Endnoten mit Zeichenvorlage und Pre-/Suffix
+
+ Rev 1.55 03 Feb 1998 12:54:48 OM
+ #46624# HelpIDs fuer Fuss- und Endnoten TPs
+
+ Rev 1.54 21 Jan 1998 11:03:56 JP
+ FootNodeOptionPage: unoetiges und falsche FreeResource entfernt
+
+ Rev 1.53 15 Dec 1997 10:45:20 MA
+ FtnInfo: client fuer Pagedesc; TxtColl fuer Endnote
+
+ Rev 1.52 12 Dec 1997 16:07:14 MA
+ poolpage fuer footnote und endnote
+
+ Rev 1.51 12 Dec 1997 10:10:22 MA
+ Fuss-/Endnoteneinstellungen
+
+ Rev 1.50 24 Nov 1997 16:47:44 MA
+ includes
+
+ Rev 1.49 03 Nov 1997 13:22:42 MA
+ precomp entfernt
+
+ Rev 1.48 07 Feb 1997 15:48:18 MA
+ fix: ClickHdl wird gerufen, der darf dann aber die Defaults nicht verstellen.
+
+ Rev 1.47 11 Nov 1996 11:05:44 MA
+ ResMgr
+
+ Rev 1.46 24 Oct 1996 17:08:28 JP
+ Optimierung: Find...ByName
+
+ Rev 1.45 02 Oct 1996 18:28:58 MA
+ Umstellung Enable/Disable
+
+ Rev 1.44 28 Aug 1996 14:12:20 OS
+ includes
+
+ Rev 1.43 22 Mar 1996 14:06:46 HJS
+ umstellung 311
+
+ Rev 1.42 17 Feb 1996 10:25:06 OS
+ Absatzvorlagen-Listbox zeigt jetzt alle Vorlagen/Sonderbereiche an
+
+ Rev 1.41 13 Feb 1996 11:37:46 OS
+ Offset fuer Fussnoten nur pro Dokument
+
+ Rev 1.40 12 Feb 1996 16:42:18 OS
+ neu: Offset fuer Fussnotennumerierung
+
+ Rev 1.39 06 Feb 1996 15:21:06 JP
+ Link Umstellung 305
+
+ Rev 1.38 24 Nov 1995 16:58:44 OM
+ PCH->PRECOMPILED
+
+ Rev 1.37 08 Nov 1995 13:31:40 JP
+ Umstellung zur 301: Change -> Set
+
+ Rev 1.36 12 Sep 1995 17:29:26 OM
+ Helpbutton eingefuegt
+
+ Rev 1.35 30 Aug 1995 14:00:46 MA
+ fix: sexport'iert
+
+ Rev 1.34 21 Aug 1995 09:33:48 MA
+ chg: swstddlg -> svxstandarddialog, Optimierungen
+
+ Rev 1.33 26 Oct 1994 12:17:50 ER
+ add: PCH (missed the misc)
+
+ Rev 1.32 17 Oct 1994 16:26:14 PK
+ ausgeboxtes wieder reingeboxt
+
+------------------------------------------------------------------------*/
+
+
+
+
diff --git a/sw/source/ui/misc/docfnote.hrc b/sw/source/ui/misc/docfnote.hrc
new file mode 100644
index 000000000000..80a428249b16
--- /dev/null
+++ b/sw/source/ui/misc/docfnote.hrc
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * $RCSfile: docfnote.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 RB_POS_PAGE 1
+#define RB_POS_CHAPTER 2
+#define GB_POS 3
+
+#define LB_NUMVIEW 10
+#define LB_NUMCOUNT 11
+#define FLD_OFFSET 12
+#define FT_OFFSET 13
+#define GB_NUM 14
+
+#define LB_PARA_TEMPL 30
+#define LB_PAGE_TEMPL 31
+#define FT_PARA_TEMPL 32
+#define FT_PAGE_TEMPL 33
+#define GB_TEMPL 34
+
+#define FT_CONT 40
+#define ED_CONT 41
+#define FT_CONT_FROM 42
+#define ED_CONT_FROM 43
+#define GB_CONT 44
+
+#define FT_PREFIX 45
+#define ED_PREFIX 46
+#define FT_SUFFIX 47
+#define ED_SUFFIX 48
+#define FT_TEXT_CHARFMT 49
+#define LB_TEXT_CHARFMT 50
+#define FT_ANCHR_CHARFMT 51
+#define GB_CHAR_TEMPL 52
+#define LB_ANCHR_CHARFMT 53
+
diff --git a/sw/source/ui/misc/docfnote.src b/sw/source/ui/misc/docfnote.src
new file mode 100644
index 000000000000..0b9ef56c7be3
--- /dev/null
+++ b/sw/source/ui/misc/docfnote.src
@@ -0,0 +1,1577 @@
+/*************************************************************************
+ *
+ * $RCSfile: docfnote.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "misc.hrc"
+#include "docfnote.hrc"
+#include "helpid.h"
+#include "cmdid.h"
+#include "frmui.hrc"
+TabDialog DLG_DOC_FOOTNOTE
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Fußnoteneinstellung" ;
+ Text [ ENGLISH ] = "Footnote Options" ;
+ Text [ norwegian ] = "Fotnotevalg" ;
+ Text [ italian ] = "Impostazioni note a piè pagina" ;
+ Text [ portuguese_brazilian ] = "Opções de nota de rodapé" ;
+ Text [ portuguese ] = "Opções de notas de rodapé" ;
+ Text [ finnish ] = "Alaviitteen määritykset" ;
+ Text [ danish ] = "Fodnoteindstillinger" ;
+ Text [ french ] = "Paramètres des notes de bas de page" ;
+ Text [ swedish ] = "Fotnotsinställning" ;
+ Text [ dutch ] = "Voetnootinstelling" ;
+ Text [ spanish ] = "Opciones de notas al pie" ;
+ Text [ english_us ] = "Footnote Settings" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_FOOTNOTEOPTION ;
+ PageResID = TP_FOOTNOTEOPTION ;
+ Text = "Fußnoten" ;
+ Text [ ENGLISH ] = "Footnotes" ;
+ Text [ english_us ] = "Footnotes" ;
+ Text [ portuguese_brazilian ] = "Fußnoten" ;
+ Text [ swedish ] = "Fotnoter" ;
+ Text [ danish ] = "Fodnoter" ;
+ Text [ italian ] = "Note a piè pagina" ;
+ Text [ spanish ] = "Notas al pie" ;
+ Text [ french ] = "Notes de bas de page" ;
+ Text [ dutch ] = "Voetnoten" ;
+ Text [ portuguese ] = "Notas de rodapé" ;
+ Text[ chinese_simplified ] = "×¢½Å";
+ Text[ russian ] = "Ñíîñêè";
+ Text[ polish ] = "Przypisy dolne";
+ Text[ japanese ] = "‹r’";
+ Text[ chinese_traditional ] = "µù¸}";
+ Text[ arabic ] = "ÍæÇÔí ÓÝáíÉ";
+ Text[ greek ] = "Õðïóçìåéþóåéò";
+ Text[ korean ] = "°¢ÁÖ";
+ Text[ turkish ] = "Dipnot";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_ENDNOTEOPTION ;
+ PageResID = TP_ENDNOTEOPTION ;
+ Text = "Endnoten" ;
+ Text [ ENGLISH ] = "Endnotes" ;
+ Text [ english_us ] = "Endnotes" ;
+ Text [ portuguese_brazilian ] = "Endnoten" ;
+ Text [ swedish ] = "Slutnoter" ;
+ Text [ danish ] = "Slutnoter" ;
+ Text [ italian ] = "Note di chiusura" ;
+ Text [ spanish ] = "Notas finales" ;
+ Text [ french ] = "Notes de fin" ;
+ Text [ dutch ] = "Eindnoten" ;
+ Text [ portuguese ] = "Notas finais" ;
+ Text[ chinese_simplified ] = "βע";
+ Text[ russian ] = "Êîíöåâûå ñíîñêè";
+ Text[ polish ] = "Przypisy koñc.";
+ Text[ japanese ] = "•¶––‹r’";
+ Text[ chinese_traditional ] = "§Àª`";
+ Text[ arabic ] = "ÊÚáíÞÇÊ ÎÊÇãíÉ";
+ Text[ greek ] = "Óçìåéþóåéò ôÝëïõò";
+ Text[ korean ] = "¹ÌÁÖ";
+ Text[ turkish ] = "Sonnot";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "É趨ע½Å";
+ Text[ russian ] = "Óñòàíîâêà ñíîñîê";
+ Text[ polish ] = "Ustawienie przypisów dolnych";
+ Text[ japanese ] = "‹r’‚ÌÝ’è";
+ Text[ chinese_traditional ] = "³]©wµù¸}";
+ Text[ arabic ] = "ÅÚÏÇÏ ÇáÍÇÔíÉ ÇáÓÝáíÉ";
+ Text[ greek ] = "Ñõèìßóåéò õðïóçìåéþóåùí";
+ Text[ korean ] = "°¢ÁÖ ¿É¼Ç";
+ Text[ turkish ] = "Dipnot ayarlarý";
+ Text[ language_user1 ] = " ";
+};
+TabPage TP_FOOTNOTEOPTION
+{
+ SVLook = TRUE ;
+ Hide = TRUE;
+ HelpID = HID_FOOTNOTE_OPTIONS ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ GroupBox GB_NUM
+ {
+ Pos = MAP_APPFONT ( 6 , 2 ) ;
+ Size = MAP_APPFONT ( 248 , 42 ) ;
+ Text = "Automatische Nummerierung" ;
+ Text [ ENGLISH ] = "Automatic numbering" ;
+ Text [ norwegian ] = "Auto. nummerering" ;
+ Text [ italian ] = "Numerazione automatica" ;
+ Text [ portuguese_brazilian ] = "Numeração automática" ;
+ Text [ portuguese ] = "Numeração automática" ;
+ Text [ finnish ] = "Automaattinumerointi" ;
+ Text [ danish ] = "Automatisk nummerering" ;
+ Text [ french ] = "Numérotation automatique" ;
+ Text [ swedish ] = "Automatisk numrering" ;
+ Text [ dutch ] = "Automatische nummering" ;
+ Text [ spanish ] = "Numeración automática" ;
+ Text [ english_us ] = "AutoNumbering" ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "×Ô¶¯±àºÅ";
+ Text[ russian ] = "Àâòîìàòè÷åñêàÿ íóìåðàöèÿ";
+ Text[ polish ] = "Automatyczna numeracja";
+ Text[ japanese ] = "Ž©“®”Ô†•t‚¯";
+ Text[ chinese_traditional ] = "¦Û°Ê½s¸¹";
+ Text[ arabic ] = "ÊÑÞíã ÊáÞÇÆí";
+ Text[ greek ] = "Áõôüìáôç áñßèìçóç";
+ Text[ korean ] = "ÀÚµ¿ ¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Otomatik numaralama";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_NUMVIEW
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 12 ) ;
+ Size = MAP_APPFONT ( 62 , 50 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ StringList =
+ {
+ "A, B, C" ;
+ "a, b, c" ;
+ "I, II, III" ;
+ "i, ii, iii" ;
+ "1, 2, 3" ;
+ "A, .., AA, .., AAA" ;
+ "a, .., aa, .., aaa" ;
+ };
+ };
+ FixedText FT_OFFSET
+ {
+ Pos = MAP_APPFONT ( 82 , 14 ) ;
+ Size = MAP_APPFONT ( 36 , 8 ) ;
+ Text = "Be~ginn bei" ;
+ Text [ ENGLISH ] = "~Start at" ;
+ Left = TRUE ;
+ Text [ english_us ] = "~Start at" ;
+ Text [ italian ] = "Ini~zia con" ;
+ Text [ spanish ] = "Comen~zar en" ;
+ Text [ french ] = "À partir de" ;
+ Text [ dutch ] = "~Begin met" ;
+ Text [ swedish ] = "~Börja vid" ;
+ Text [ danish ] = "Begynd med" ;
+ Text [ portuguese_brazilian ] = "Be~ginn bei" ;
+ Text [ portuguese ] = "~Iniciar em" ;
+ Text[ chinese_simplified ] = "¿ªÊ¼´Ó(~S)";
+ Text[ russian ] = "Íà÷àòü ñ";
+ Text[ polish ] = "Zacznij od";
+ Text[ japanese ] = "ŠJŽn‹r’”Ô†(~S)";
+ Text[ chinese_traditional ] = "¶}©l±q(~S)";
+ Text[ arabic ] = "ÇáÈÏÁ ÈÜ";
+ Text[ greek ] = "ÈÝóç åêêßíçóçò";
+ Text[ korean ] = "½ÃÀÛÇÒ °÷(~S)";
+ Text[ turkish ] = "B~aþlangýç";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField FLD_OFFSET
+ {
+ Pos = MAP_APPFONT ( 133 , 12 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ First = 1 ;
+ Last = 9999 ;
+ Maximum = 9999 ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ };
+ ListBox LB_NUMCOUNT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 62 , 50 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ StringList =
+ {
+ < "Pro Seite" ; > ;
+ < "Pro Kapitel" ; > ;
+ < "Pro Dokument" ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Pro Seite" ; > ;
+ < "Pro Kapitel" ; > ;
+ < "Pro Dokument" ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "Pro Seite" ; > ;
+ < "Pro Kapitel" ; > ;
+ < "Pro Dokument" ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "Per pagina" ; > ;
+ < "Per capitolo" ; > ;
+ < "Per documento" ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Por página" ; > ;
+ < "Por capítulo" ; > ;
+ < "Por documento" ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Por página" ; > ;
+ < "Por capítulo" ; > ;
+ < "Por documento" ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "Pro Seite" ; > ;
+ < "Pro Kapitel" ; > ;
+ < "Pro Dokument" ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "Per side" ; > ;
+ < "Per kapitel" ; > ;
+ < "Per dokument" ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "Par page" ; > ;
+ < "Par chapitre" ; > ;
+ < "Par document" ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Per sida" ; > ;
+ < "Per kapitel" ; > ;
+ < "Per dokument" ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Per pagina" ; > ;
+ < "Per hoofdstuk" ; > ;
+ < "Per document" ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Por página" ; > ;
+ < "Por capítulo" ; > ;
+ < "Por documento" ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Per page" ; > ;
+ < "Per chapter" ; > ;
+ < "Per document" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÿҳ" ; > ;
+ < "ÿÕÂ" ; > ;
+ < "ÿÎĵµ" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Íà îäíó ñòðàíèöó" ; > ;
+ < "Íà îäíó ãëàâó" ; > ;
+ < "Íà îäèí äîêóìåíò" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Na stronê" ; > ;
+ < "Na rozdzia³" ; > ;
+ < "Na dokument" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "Íß°¼Þ‚²‚Æ" ; > ;
+ < "Í‚²‚Æ" ; > ;
+ < "•¶‘‚²‚Æ" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¨C­¶" ; > ;
+ < "¨C³¹" ; > ;
+ < "¨C­Ó¤å¥ó" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "Ýí ÇáÕÝÍÉ" ; > ;
+ < "Ýí ÇáÝÕá" ; > ;
+ < "Ýí ÇáãÓÊäÏ" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÁíÜ óåëßäá" ; > ;
+ < "ÁíÜ êåöÜëáéï" ; > ;
+ < "ÁíÜ Ýããñáöï" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "ÆäÀÌÁö ´ç" ; > ;
+ < "Àå ¸¶´Ù" ; > ;
+ < "¹®¼­ ´ç" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Beher sayfa" ; > ;
+ < "Beher bölüm" ; > ;
+ < "Beher belge" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ FixedText FT_PREFIX
+ {
+ Pos = MAP_APPFONT ( 82 , 27 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "~Davor" ;
+ Text [ ENGLISH ] = "Before" ;
+ Text [ norwegian ] = "Før" ;
+ Text [ italian ] = "~Davanti" ;
+ Text [ portuguese_brazilian ] = "Antes" ;
+ Text [ portuguese ] = "An~tes" ;
+ Text [ finnish ] = "Edellä" ;
+ Text [ danish ] = "Før" ;
+ Text [ french ] = "Avant" ;
+ Text [ swedish ] = "~Framför" ;
+ Text [ dutch ] = "~Ervoor" ;
+ Text [ spanish ] = "~Delante" ;
+ Text [ english_us ] = "Be~fore" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "֮ǰ(~F)";
+ Text[ russian ] = "Äî";
+ Text[ polish ] = "Przed";
+ Text[ japanese ] = "”Ô†‘O(~F)";
+ Text[ chinese_traditional ] = "¤§«e(~F)";
+ Text[ arabic ] = "ÞÈá";
+ Text[ greek ] = "Ðñéí áðü";
+ Text[ korean ] = "ÀÌÀü(~F)";
+ Text[ turkish ] = "Ba~þýnda";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_PREFIX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 133 , 27 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ MaxTextLength = 50 ;
+ };
+ FixedText FT_SUFFIX
+ {
+ Pos = MAP_APPFONT ( 166 , 27 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "Dahin~ter" ;
+ Text [ ENGLISH ] = "Behind" ;
+ Text [ norwegian ] = "Bak" ;
+ Text [ italian ] = "Die~tro" ;
+ Text [ portuguese_brazilian ] = "Atrás" ;
+ Text [ portuguese ] = "At~rás" ;
+ Text [ finnish ] = "Jäljessä" ;
+ Text [ danish ] = "Efter" ;
+ Text [ french ] = "Après" ;
+ Text [ swedish ] = "~Bakom" ;
+ Text [ dutch ] = "E~rachter" ;
+ Text [ spanish ] = "D~etrás" ;
+ Text [ english_us ] = "Aft~er" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ö®ºó(~E)";
+ Text[ russian ] = "Ïîñëå";
+ Text[ polish ] = "Za";
+ Text[ japanese ] = "”Ô†Œã(~E)";
+ Text[ chinese_traditional ] = "¤§«á(~E)";
+ Text[ arabic ] = "ÈÚÏ";
+ Text[ greek ] = "ÌåôÜ áðü";
+ Text[ korean ] = "ÀÌÈÄ(~E)";
+ Text[ turkish ] = "A~rkasýnda";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_SUFFIX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 221 , 27 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ MaxTextLength = 50 ;
+ };
+ GroupBox GB_TEMPL
+ {
+ Pos = MAP_APPFONT ( 6 , 46 ) ;
+ Size = MAP_APPFONT ( 115 , 42 ) ;
+ Text = "Vorlagen" ;
+ Text [ ENGLISH ] = "Styles" ;
+ Text [ norwegian ] = "Styles" ;
+ Text [ italian ] = "Modelli" ;
+ Text [ portuguese_brazilian ] = "Estilos" ;
+ Text [ portuguese ] = "Estilos" ;
+ Text [ finnish ] = "Tyylit" ;
+ Text [ danish ] = "Typografi" ;
+ Text [ french ] = "Styles" ;
+ Text [ swedish ] = "Formatmallar" ;
+ Text [ dutch ] = "Opmaakprofielen" ;
+ Text [ spanish ] = "Estilos" ;
+ Text [ english_us ] = "Styles" ;
+ Text[ chinese_simplified ] = "Ñùʽ";
+ Text[ russian ] = "Ñòèëè";
+ Text[ polish ] = "Szablony";
+ Text[ japanese ] = "½À²Ù";
+ Text[ chinese_traditional ] = "¼Ë¦¡";
+ Text[ arabic ] = "ÃäãÇØ";
+ Text[ greek ] = "Ðñüôõðá";
+ Text[ korean ] = "À¯Çü";
+ Text[ turkish ] = "Biçim";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_PARA_TEMPL
+ {
+ Pos = MAP_APPFONT ( 12 , 58 ) ;
+ Size = MAP_APPFONT ( 38 , 8 ) ;
+ Text = "~Absatz" ;
+ Text [ ENGLISH ] = "~Paragraph" ;
+ Text [ norwegian ] = "~Paragraf" ;
+ Text [ italian ] = "~Paragrafo" ;
+ Text [ portuguese_brazilian ] = "~Parágrafo" ;
+ Text [ portuguese ] = "~Parágrafo" ;
+ Text [ finnish ] = "~Kappale" ;
+ Text [ danish ] = "Afsnit" ;
+ Text [ french ] = "~Paragraphe" ;
+ Text [ swedish ] = "Sty~cke" ;
+ Text [ dutch ] = "~Alinea" ;
+ Text [ spanish ] = "Párra~fo" ;
+ Text [ english_us ] = "Pa~ragraph" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¶ÎÂä(~R)";
+ Text[ russian ] = "Àáçàö";
+ Text[ polish ] = "Akapit";
+ Text[ japanese ] = "’i—Ž(~R)";
+ Text[ chinese_traditional ] = "¬q¸¨(~R)";
+ Text[ arabic ] = "ÝÞÑÉ";
+ Text[ greek ] = "ÐáñÜãñáöïò";
+ Text[ korean ] = "´Ü¶ô(~R)";
+ Text[ turkish ] = "~Paragraf";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_PARA_TEMPL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 51 , 56 ) ;
+ Size = MAP_APPFONT ( 67 , 54 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ Sort = TRUE ;
+ };
+ FixedText FT_PAGE_TEMPL
+ {
+ Pos = MAP_APPFONT ( 12 , 73 ) ;
+ Size = MAP_APPFONT ( 38 , 8 ) ;
+ 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 ] = "P~age" ;
+ Text [ swedish ] = "~Sida" ;
+ Text [ dutch ] = "~Pagina" ;
+ Text [ spanish ] = "Pá~gina" ;
+ Text [ english_us ] = "~Page" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ò³(~P)";
+ Text[ russian ] = "Ñòðàíèöà";
+ Text[ polish ] = "Strona";
+ Text[ japanese ] = "Íß°¼Þ(~P)";
+ Text[ chinese_traditional ] = "­¶(~P)";
+ Text[ arabic ] = "ÇáÕÝÍÉ";
+ Text[ greek ] = "Óåëßäá";
+ Text[ korean ] = "ÆäÀÌÁö(~P)";
+ Text[ turkish ] = "~Sayfa";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_PAGE_TEMPL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 51 , 71 ) ;
+ Size = MAP_APPFONT ( 67 , 54 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ GroupBox GB_CHAR_TEMPL
+ {
+ Pos = MAP_APPFONT ( 125 , 46 ) ;
+ Size = MAP_APPFONT ( 129 , 42 ) ;
+ Text = "Zeichenvorlagen" ;
+ Text [ ENGLISH ] = "Character styles" ;
+
+ Text[ english_us ] = "Character Styles";
+ Text[ portuguese ] = "Estilos de caracteres";
+ Text[ russian ] = "Ñòèëè çíàêîâ";
+ Text[ greek ] = "Óôõë ÷áñáêôÞñùí";
+ Text[ dutch ] = "Tekenopmaakprofielen";
+ Text[ french ] = "Styles de caractère";
+ Text[ spanish ] = "Estilos de carácter";
+ Text[ italian ] = "Modelli di carattere";
+ Text[ danish ] = "Tegntypografi";
+ Text[ swedish ] = "Teckenformatmallar";
+ Text[ polish ] = "Style znaków";
+ Text[ portuguese_brazilian ] = "Character styles";
+ Text[ japanese ] = "•¶Žš½À²Ù";
+ Text[ korean ] = "¹®ÀÚ À¯Çü";
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ";
+ Text[ chinese_traditional ] = "¦r¤¸¼Ë¦¡";
+ Text[ arabic ] = "ÃäãÇØ ÃÍÑÝ";
+ Text[ turkish ] = "Karakter biçimi";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_ANCHR_CHARFMT
+ {
+ Pos = MAP_APPFONT ( 129 , 58 ) ;
+ Size = MAP_APPFONT ( 55 , 8 ) ;
+ Text = "Te~xtbereich" ;
+ Text [ ENGLISH ] = "Text" ;
+ Left = TRUE ;
+ Text [ english_us ] = "Te~xt area" ;
+ Text [ portuguese_brazilian ] = "~Fußnotensymbol" ;
+ Text [ swedish ] = "Textområde" ;
+ Text [ danish ] = "Tekstområde" ;
+ Text [ italian ] = "Area del testo" ;
+ Text [ spanish ] = "Área de ~texto" ;
+ Text [ french ] = "Plage de ~texte" ;
+ Text [ dutch ] = "~Tekstbereik" ;
+ Text [ portuguese ] = "~Área de texto" ;
+ Text[ chinese_simplified ] = "ÎÄ×ÖÇøÓò(~X)";
+ Text[ russian ] = "Îáëàñòü òåêñòà";
+ Text[ polish ] = "Obszar tekstu";
+ Text[ japanese ] = "•¶‘”͈Í(~X)";
+ Text[ chinese_traditional ] = "¤å¦r°Ï°ì(~X)";
+ Text[ arabic ] = "äØÇÞ ÇáäÕ";
+ Text[ greek ] = "Ðåäßï êåéìÝíïõ";
+ Text[ korean ] = "¹Ù´Ú±Û ±âÈ£(~X)";
+ Text[ turkish ] = "Metin a~laný";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_ANCHR_CHARFMT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 186 , 56 ) ;
+ Size = MAP_APPFONT ( 65 , 54 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText FT_TEXT_CHARFMT
+ {
+ Pos = MAP_APPFONT ( 129 , 73 ) ;
+ Size = MAP_APPFONT ( 55 , 8 ) ;
+ Text = "~Fußnotenbereich" ;
+ Text [ ENGLISH ] = "~Footnote text" ;
+ Left = TRUE ;
+ Text [ english_us ] = "~Footnote area" ;
+ Text [ portuguese_brazilian ] = "~Fußnotensymbol" ;
+ Text [ swedish ] = "Fotnotsområde" ;
+ Text [ danish ] = "Fodnoteområde" ;
+ Text [ italian ] = "Area note a piè pagina" ;
+ Text [ spanish ] = "Área de ~nota al pie" ;
+ Text [ french ] = "Plage de la ~note" ;
+ Text [ dutch ] = "Voetnoot~bereik" ;
+ Text [ portuguese ] = "Á~rea de nota de rodapé" ;
+ Text[ chinese_simplified ] = "×¢½ÅÇøÓò(~F)";
+ Text[ russian ] = "Îáëàñòü ñíîñêè";
+ Text[ polish ] = "Obszar przyp. doln.";
+ Text[ japanese ] = "‹r’”͈Í(~F)";
+ Text[ chinese_traditional ] = "µù¸}°Ï°ì(~F)";
+ Text[ arabic ] = "äØÇÞ ÇáÍÇÔíÉ ÇáÓÝáíÉ";
+ Text[ greek ] = "Ðåäßï õðïóçìåéþóåùí";
+ Text[ korean ] = "°¢ÁÖ ¿µ¿ª(~F)";
+ Text[ turkish ] = "D~ipnot alaný";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_TEXT_CHARFMT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 186 , 71 ) ;
+ Size = MAP_APPFONT ( 65 , 54 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ GroupBox GB_POS
+ {
+ Pos = MAP_APPFONT ( 6 , 91 ) ;
+ Size = MAP_APPFONT ( 71 , 42 ) ;
+ Text = "Position" ;
+ Text [ English ] = "Position" ;
+ Group = 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[ greek ] = "ÈÝóç";
+ Text[ korean ] = "À§Ä¡";
+ Text[ turkish ] = "Konum";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_POS_PAGE
+ {
+ Pos = MAP_APPFONT ( 12 , 104 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Seiten~ende" ;
+ Text [ ENGLISH ] = "End of ~page" ;
+ Text [ norwegian ] = "End of ~page" ;
+ Text [ italian ] = "Fine ~pagina" ;
+ Text [ portuguese_brazilian ] = "Final de ~página" ;
+ Text [ portuguese ] = "Fim de ~página" ;
+ Text [ finnish ] = "~Sivun loppu" ;
+ Text [ danish ] = "Sidens slutning" ;
+ Text [ french ] = "Fin de ~page" ;
+ Text [ swedish ] = "S~idslut" ;
+ Text [ dutch ] = "Pag~ina-einde" ;
+ Text [ spanish ] = "Fin de ~página" ;
+ Text [ english_us ] = "~End of page" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "ҳβ(~O)";
+ Text[ russian ] = "Êîíåö ñòðàíèöû";
+ Text[ polish ] = "Koniec strony";
+ Text[ japanese ] = "Íß°¼Þ––(~O)";
+ Text[ chinese_traditional ] = "­¶§À(~O)";
+ Text[ arabic ] = "äåÇíÉ ÇáÕÝÍÉ";
+ Text[ greek ] = "ÔÝëïò óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ¸¶Áö¸·(~E)";
+ Text[ turkish ] = "Sayfa so~nu";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_POS_CHAPTER
+ {
+ Pos = MAP_APPFONT ( 12 , 118 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Do~kumentende" ;
+ Text [ ENGLISH ] = "End of ~doc." ;
+ Text [ norwegian ] = "Slutt på ~dok." ;
+ Text [ italian ] = "Fine ~documento" ;
+ Text [ portuguese_brazilian ] = "Final de~doc." ;
+ Text [ portuguese ] = "Fim do ~documento" ;
+ Text [ finnish ] = "~Asiakirjan loppu" ;
+ Text [ danish ] = "Dokumentets slutn." ;
+ Text [ french ] = "Fin de ~document" ;
+ Text [ swedish ] = "Do~kumentslut" ;
+ Text [ dutch ] = "~Documenteinde" ;
+ Text [ spanish ] = "F~in del documento" ;
+ Text [ english_us ] = "En~d of document" ;
+ Text[ chinese_simplified ] = "ÎĵµÎ²¶Ë(~D)";
+ Text[ russian ] = "Êîíåö äîêóìåíòà";
+ Text[ polish ] = "Koniec dokumentu";
+ Text[ japanese ] = "•¶‘––(~D)";
+ Text[ chinese_traditional ] = "¤å¥ó§ÀºÝ(~D)";
+ Text[ arabic ] = "äåÇíÉ ÇáãÓÊäÏ";
+ Text[ greek ] = "ÔÝëïò êåéìÝíïõ";
+ Text[ korean ] = "¹®¼­ ¸¶Áö¸·(~D)";
+ Text[ turkish ] = "~Belge sonunda";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_CONT
+ {
+ Pos = MAP_APPFONT ( 80 , 91 ) ;
+ Size = MAP_APPFONT ( 174 , 42 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Hinweistext mehrseitige Fußnoten : Hinweistext mehrseitige Fu˜noten */
+ Text = "Hinweistext mehrseitige Fußnoten" ;
+ Text [ ENGLISH ] = "Continuation notice" ;
+ Text [ norwegian ] = "+++Continuation notice" ;
+ Text [ italian ] = "Avvertenza che la nota continua" ;
+ Text [ portuguese_brazilian ] = "Aviso de continuação" ;
+ Text [ portuguese ] = "Continuação das notas de rodapé" ;
+ Text [ finnish ] = "Jatkumisilmoitus" ;
+ Text [ danish ] = "Henvisningstekst for flersidede fodnoter" ;
+ Text [ french ] = "Indication de suite" ;
+ Text [ swedish ] = "Meddelandetext för mersidiga fotnoter" ;
+ Text [ dutch ] = "Verwijstekst bij voetnoten verdeeld over meer dan een pagina" ;
+ Text [ spanish ] = "Indicación para notas al pie en varias páginas" ;
+ Text [ english_us ] = "Continuation notice" ;
+ Text[ chinese_simplified ] = "¶àÒ³×¢½ÅµÄÌáʾÎÄ";
+ Text[ russian ] = "Óêàçàòåëüíûé òåêñò äëÿ ñíîñîê íà íåñêîëüêèõ ñòðàíèöàõ";
+ Text[ polish ] = "Tekst wskazuj¹cy na kilkustronne przypisy dolne.";
+ Text[ japanese ] = "‹r’‚ªŽŸÍß°¼Þ‚É‘±‚­Û‚Ì’ˆÓ‘‚«";
+ Text[ chinese_traditional ] = "¦h­¶µù¸}ªº´£¥Ü¤å";
+ Text[ arabic ] = "ãáÇÍÙÉ Úáì Ôßá ÍæÇÔí ÓÝáíÉ Ýí ÃßËÑ ãä ÕÝÍÉ";
+ Text[ greek ] = "Êåßìåíï õðüäåéîçò óõíÝ÷éóçò õðïóçìåéþóåùí";
+ Text[ korean ] = "¿©·¯ ÆäÀÌÁöÀÇ ¹Ù´Ú±Û¿¡ ´ëÇÑ Âü°í";
+ Text[ turkish ] = "Devam eden dipnotu ile ilgili bilgi metni";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_CONT
+ {
+ Pos = MAP_APPFONT ( 86 , 103 ) ;
+ Size = MAP_APPFONT ( 58 , 8 ) ;
+ Text = "Am Fußn~otenende" ;
+ Text [ ENGLISH ] = "~Continued" ;
+ Text [ norwegian ] = "~Fortsetter" ;
+ Text [ italian ] = "Alla fine del piè pagina" ;
+ Text [ portuguese_brazilian ] = "~Continuado" ;
+ Text [ portuguese ] = "No fim da nota de ~rodapé" ;
+ Text [ finnish ] = "~Jatkuu" ;
+ Text [ danish ] = "Ved fodnotens slutning" ;
+ Text [ french ] = "En ~fin de note de bas de page" ;
+ Text [ swedish ] = "Vid slutet av f~otnoten" ;
+ Text [ dutch ] = "~Voetnooteinde" ;
+ Text [ spanish ] = "Final de n~ota al pie" ;
+ Text [ english_us ] = "End ~of footnote" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "×¢½Åβ¶Ë(~O)";
+ Text[ russian ] = "Â êîíöå ñíîñêè";
+ Text[ polish ] = "Na koncu przypisów dolnych";
+ Text[ japanese ] = "‹r’––(~O)";
+ Text[ chinese_traditional ] = "¦bª`¸}¥½(~N)";
+ Text[ arabic ] = "ÚäÏ äåÇíÉ ÇáÍÇÔíÉ ÇáÓÝáíÉ";
+ Text[ greek ] = "Óôï ôÝëïò ôçò õð~ïóçìåßùóçò";
+ Text[ korean ] = "´ÙÀ½ ÆäÀÌÁö(~N)";
+ Text[ turkish ] = "~Dipnot altýnda";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_CONT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 147 , 101 ) ;
+ Size = MAP_APPFONT ( 104 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ MaxTextLength = 30 ;
+ };
+ FixedText FT_CONT_FROM
+ {
+ Pos = MAP_APPFONT ( 86 , 118 ) ;
+ Size = MAP_APPFONT ( 58 , 8 ) ;
+ Text = "A~uf Folgeseite" ;
+ Text [ ENGLISH ] = "~Started" ;
+ Text [ norwegian ] = "~Startet" ;
+ Text [ italian ] = "Alla pagina succ." ;
+ Text [ portuguese_brazilian ] = "~Iniciado" ;
+ Text [ portuguese ] = "~Página seguinte" ;
+ Text [ finnish ] = "~Alkaa" ;
+ Text [ danish ] = "På følgesiden" ;
+ Text [ french ] = "~Sur la page suivante" ;
+ Text [ swedish ] = "~På följande sida" ;
+ Text [ dutch ] = "V~olgende pagina" ;
+ Text [ spanish ] = "En pág. sig~uiente" ;
+ Text [ english_us ] = "~Start of next page" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÐøÒ³(~S)";
+ Text[ russian ] = "Íà ñëåäóþùåé ñòðàíèöå";
+ Text[ polish ] = "Na nastepnej stronie";
+ Text[ japanese ] = "ŽŸ‚ÌÍß°¼Þ(~S)";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "±qÄò­¶¶}©l(~S)";
+ Text[ arabic ] = "Úáì ÇáÕÝÍÉ ÇáÊÇáíÉ";
+ Text[ greek ] = "Óôçí å~ðüìåíç óåëßäá";
+ Text[ korean ] = "½ÃÀÛ(~S)";
+ Text[ turkish ] = "~Sonraki sayfada";
+ };
+ Edit ED_CONT_FROM
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 147 , 116 ) ;
+ Size = MAP_APPFONT ( 104 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ MaxTextLength = 30 ;
+ };
+};
+TabPage TP_ENDNOTEOPTION
+{
+ SVLook = TRUE ;
+ Hide = TRUE;
+ HelpID = HID_ENDNOTE_OPTIONS ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ GroupBox GB_NUM
+ {
+ Pos = MAP_APPFONT ( 6 , 2 ) ;
+ Size = MAP_APPFONT ( 248 , 42 ) ;
+ Text = "Automatische Nummerierung" ;
+ Text [ ENGLISH ] = "Automatic numbering" ;
+ Text [ norwegian ] = "Auto. nummerering" ;
+ Text [ italian ] = "Numerazione automatica" ;
+ Text [ portuguese_brazilian ] = "Numeração automática" ;
+ Text [ portuguese ] = "Numeração automática" ;
+ Text [ finnish ] = "Automaattinumerointi" ;
+ Text [ danish ] = "Automatisk nummerering" ;
+ Text [ french ] = "Numérotation automatique" ;
+ Text [ swedish ] = "Automatisk numrering" ;
+ Text [ dutch ] = "Automatische nummering" ;
+ Text [ spanish ] = "Numeración automática" ;
+ Text [ english_us ] = "AutoNumbering" ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "×Ô¶¯±àºÅ";
+ Text[ russian ] = "Àâòîìàòè÷åñêàÿ íóìåðàöèÿ";
+ Text[ polish ] = "Automatyczna numeracja";
+ Text[ japanese ] = "Ž©“®”Ô†•t‚¯";
+ Text[ chinese_traditional ] = "¦Û°Ê½s¸¹";
+ Text[ arabic ] = "ÊÑÞíã ÊáÞÇÆí";
+ Text[ greek ] = "Áõôüìáôç áñßèìçóç";
+ Text[ korean ] = "ÀÚµ¿ ¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Otomatik numaralama";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_NUMVIEW
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 12 ) ;
+ Size = MAP_APPFONT ( 62 , 50 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ StringList =
+ {
+ "A, B, C" ;
+ "a, b, c" ;
+ "I, II, III" ;
+ "i, ii, iii" ;
+ "1, 2, 3" ;
+ "A, .., AA, .., AAA" ;
+ "a, .., aa, .., aaa" ;
+ };
+ };
+ FixedText FT_OFFSET
+ {
+ Pos = MAP_APPFONT ( 82 , 14 ) ;
+ Size = MAP_APPFONT ( 36 , 8 ) ;
+ Text = "Be~ginn bei" ;
+ Text [ ENGLISH ] = "~Start at" ;
+ Left = TRUE ;
+ Text [ english_us ] = "~Start at" ;
+ Text [ italian ] = "Ini~zia con" ;
+ Text [ spanish ] = "Comen~zar en" ;
+ Text [ french ] = "À partir de" ;
+ Text [ dutch ] = "~Begin met" ;
+ Text [ swedish ] = "~Börja vid" ;
+ Text [ danish ] = "Begynd med" ;
+ Text [ portuguese_brazilian ] = "Be~ginn bei" ;
+ Text [ portuguese ] = "~Iniciar em" ;
+ Text[ chinese_simplified ] = "¿ªÊ¼´Ó(~S)";
+ Text[ russian ] = "Íà÷àòü ñ";
+ Text[ polish ] = "Zacznij od";
+ Text[ japanese ] = "ŠJŽn•¶––‹r’”Ô†(~S)";
+ Text[ chinese_traditional ] = "¶}©l±q(~S)";
+ Text[ arabic ] = "ÇáÈÏÁ ÈÜ";
+ Text[ greek ] = "ÈÝóç åêêßíçóçò";
+ Text[ korean ] = "½ÃÀÛ(~S)";
+ Text[ turkish ] = "B~aþlangýç";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField FLD_OFFSET
+ {
+ Pos = MAP_APPFONT ( 133 , 12 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ First = 1 ;
+ Last = 9999 ;
+ Maximum = 9999 ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ };
+ ListBox LB_NUMCOUNT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 62 , 50 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ StringList =
+ {
+ < "Pro Seite" ; > ;
+ < "Pro Kapitel" ; > ;
+ < "Pro Dokument" ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Pro Seite" ; > ;
+ < "Pro Kapitel" ; > ;
+ < "Pro Dokument" ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "Pro Seite" ; > ;
+ < "Pro Kapitel" ; > ;
+ < "Pro Dokument" ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "Per pagina" ; > ;
+ < "Per capitolo" ; > ;
+ < "Per documento" ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Por página" ; > ;
+ < "Por capítulo" ; > ;
+ < "Por documento" ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Por página" ; > ;
+ < "Por capítulo" ; > ;
+ < "Por documento" ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "Pro Seite" ; > ;
+ < "Pro Kapitel" ; > ;
+ < "Pro Dokument" ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "Per side" ; > ;
+ < "Per kapitel" ; > ;
+ < "Per dokument" ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "Par page" ; > ;
+ < "Par chapitre" ; > ;
+ < "Par document" ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Per sida" ; > ;
+ < "Per kapitel" ; > ;
+ < "Per dokument" ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Per pagina" ; > ;
+ < "Per hoofdstuk" ; > ;
+ < "Per document" ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Por página" ; > ;
+ < "Por capítulo" ; > ;
+ < "Por documento" ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Per page" ; > ;
+ < "Per chapter" ; > ;
+ < "Per document" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÿҳ" ; > ;
+ < "ÿÕÂ" ; > ;
+ < "ÿ¸öÎĵµ" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Íà îäíó ñòðàíèöó" ; > ;
+ < "Íà îäíó ãëàâó" ; > ;
+ < "Íà îäèí äîêóìåíò" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Na stronê" ; > ;
+ < "Na rozdzia³" ; > ;
+ < "Na dokument" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "Íß°¼Þ‚²‚Æ" ; > ;
+ < "Í‚²‚Æ" ; > ;
+ < "•¶‘‚²‚Æ" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¨C­¶" ; > ;
+ < "¨C³¹" ; > ;
+ < "¨C­Ó¤å¥ó" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "Ýí ÇáÕÝÍÉ" ; > ;
+ < "Ýí ÇáÝÕá" ; > ;
+ < "Ýí ÇáãÓÊäÏ" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÁíÜ óåëßäá" ; > ;
+ < "ÁíÜ êåöÜëáéï" ; > ;
+ < "ÁíÜ Ýããñáöï" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "ÆäÀÌÁö ´ç" ; > ;
+ < "Àå ¸¶´Ù" ; > ;
+ < "¹®¼­ ´ç" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Beher sayfa" ; > ;
+ < "Beher bölüm" ; > ;
+ < "Beher belge" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ FixedText FT_PREFIX
+ {
+ Pos = MAP_APPFONT ( 82 , 27 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "~Davor" ;
+ Text [ ENGLISH ] = "Before" ;
+ Text [ norwegian ] = "Før" ;
+ Text [ italian ] = "~Davanti" ;
+ Text [ portuguese_brazilian ] = "Antes" ;
+ Text [ portuguese ] = "An~tes" ;
+ Text [ finnish ] = "Edellä" ;
+ Text [ danish ] = "Før" ;
+ Text [ french ] = "Avant" ;
+ Text [ swedish ] = "~Före" ;
+ Text [ dutch ] = "~Ervoor" ;
+ Text [ spanish ] = "~Delante" ;
+ Text [ english_us ] = "Be~fore" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "֮ǰ(~F)";
+ Text[ russian ] = "Äî";
+ Text[ polish ] = "Przed";
+ Text[ japanese ] = "”Ô†‘O(~F)";
+ Text[ chinese_traditional ] = "¤§«e(~F)";
+ Text[ arabic ] = "ÞÈá";
+ Text[ greek ] = "Ðñéí áðü";
+ Text[ korean ] = "ÀÌÀü(~F)";
+ Text[ turkish ] = "Ba~þýnda";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_PREFIX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 133 , 27 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ MaxTextLength = 50 ;
+ };
+ FixedText FT_SUFFIX
+ {
+ Pos = MAP_APPFONT ( 166 , 27 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "Dahin~ter" ;
+ Text [ ENGLISH ] = "Behind" ;
+ Text [ norwegian ] = "Bak" ;
+ Text [ italian ] = "Die~tro" ;
+ Text [ portuguese_brazilian ] = "Atrás" ;
+ Text [ portuguese ] = "A~trás" ;
+ Text [ finnish ] = "Jäljessä" ;
+ Text [ danish ] = "Efter" ;
+ Text [ french ] = "Après" ;
+ Text [ swedish ] = "~Bakom" ;
+ Text [ dutch ] = "E~rachter" ;
+ Text [ spanish ] = "D~etrás" ;
+ Text [ english_us ] = "Aft~er" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ö®ºó(~E)";
+ Text[ russian ] = "Ïîñëå";
+ Text[ polish ] = "Za";
+ Text[ japanese ] = "”Ô†Œã(~E)";
+ Text[ chinese_traditional ] = "¤§«á(~E)";
+ Text[ arabic ] = "ÈÚÏ";
+ Text[ greek ] = "Ðßóù áðü";
+ Text[ korean ] = "ÀÌÈÄ(~E)";
+ Text[ turkish ] = "A~rkasýnda";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_SUFFIX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 221 , 27 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ MaxTextLength = 50 ;
+ };
+ GroupBox GB_TEMPL
+ {
+ Pos = MAP_APPFONT ( 6 , 46 ) ;
+ Size = MAP_APPFONT ( 115 , 42 ) ;
+ Text = "Vorlagen" ;
+ Text [ ENGLISH ] = "Styles" ;
+ Text [ norwegian ] = "Styles" ;
+ Text [ italian ] = "Modelli" ;
+ Text [ portuguese_brazilian ] = "Estilos" ;
+ Text [ portuguese ] = "Estilos" ;
+ Text [ finnish ] = "Tyylit" ;
+ Text [ danish ] = "Typografi" ;
+ Text [ french ] = "Styles" ;
+ Text [ swedish ] = "Formatmallar" ;
+ Text [ dutch ] = "Opmaakprofielen" ;
+ Text [ spanish ] = "Estilos" ;
+ Text [ english_us ] = "Styles" ;
+ Text[ chinese_simplified ] = "Ñùʽ";
+ Text[ russian ] = "Ñòèëè";
+ Text[ polish ] = "Szablony";
+ Text[ japanese ] = "½À²Ù";
+ Text[ chinese_traditional ] = "¼Ë¦¡";
+ Text[ arabic ] = "ÃäãÇØ";
+ Text[ greek ] = "Ðñüôõðá";
+ Text[ korean ] = "À¯Çü";
+ Text[ turkish ] = "Biçim";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_PARA_TEMPL
+ {
+ Pos = MAP_APPFONT ( 12 , 58 ) ;
+ Size = MAP_APPFONT ( 38 , 8 ) ;
+ Text = "~Absatz" ;
+ Text [ ENGLISH ] = "~Paragraph" ;
+ Text [ norwegian ] = "~Paragraf" ;
+ Text [ italian ] = "~Paragrafo" ;
+ Text [ portuguese_brazilian ] = "~Parágrafo" ;
+ Text [ portuguese ] = "~Parágrafo" ;
+ Text [ finnish ] = "~Kappale" ;
+ Text [ danish ] = "Afsnit" ;
+ Text [ french ] = "~Paragraphe" ;
+ Text [ swedish ] = "Sty~cke" ;
+ Text [ dutch ] = "~Alinea" ;
+ Text [ spanish ] = "Párra~fo" ;
+ Text [ english_us ] = "Pa~ragraph" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¶ÎÂä(~R)";
+ Text[ russian ] = "Àáçàö";
+ Text[ polish ] = "Akapit";
+ Text[ japanese ] = "’i—Ž(~R)";
+ Text[ chinese_traditional ] = "¬q¸¨(~R)";
+ Text[ arabic ] = "ÝÞÑÉ";
+ Text[ greek ] = "ÐáñÜãñáöïò";
+ Text[ korean ] = "´Ü¶ô(~R)";
+ Text[ turkish ] = "~Paragraf";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_PARA_TEMPL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 51 , 56 ) ;
+ Size = MAP_APPFONT ( 67 , 54 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ Sort = TRUE ;
+ };
+ FixedText FT_PAGE_TEMPL
+ {
+ Pos = MAP_APPFONT ( 12 , 73 ) ;
+ Size = MAP_APPFONT ( 38 , 8 ) ;
+ 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 ] = "P~age" ;
+ Text [ swedish ] = "~Sida" ;
+ Text [ dutch ] = "~Pagina" ;
+ Text [ spanish ] = "Pá~gina" ;
+ Text [ english_us ] = "~Page" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ò³(~P)";
+ Text[ russian ] = "Ñòðàíèöà";
+ Text[ polish ] = "Strona";
+ Text[ japanese ] = "Íß°¼Þ(~P)";
+ Text[ chinese_traditional ] = "­¶(~P)";
+ Text[ arabic ] = "ÇáÕÝÍÉ";
+ Text[ greek ] = "Óåëßäá";
+ Text[ korean ] = "ÆäÀÌÁö(~P)";
+ Text[ turkish ] = "~Sayfa";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_PAGE_TEMPL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 51 , 71 ) ;
+ Size = MAP_APPFONT ( 67 , 54 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ GroupBox GB_CHAR_TEMPL
+ {
+ Pos = MAP_APPFONT ( 125 , 46 ) ;
+ Size = MAP_APPFONT ( 129 , 42 ) ;
+ Text = "Zeichenvorlagen" ;
+ Text [ ENGLISH ] = "Character styles" ;
+ Text[ english_us ] = "Character Styles";
+ Text[ portuguese ] = "Estilos de caracteres";
+ Text[ russian ] = "Ñòèëè çíàêîâ";
+ Text[ greek ] = "Óôõë ÷áñáêôÞñùí";
+ Text[ dutch ] = "Tekenopmaakprofielen";
+ Text[ french ] = "Styles de caractère";
+ Text[ spanish ] = "Estilos de carácter";
+ Text[ italian ] = "Modelli di carattere";
+ Text[ danish ] = "Tegntypografi";
+ Text[ swedish ] = "Teckenformatmallar";
+ Text[ polish ] = "Style znaku";
+ Text[ portuguese_brazilian ] = "Character styles";
+ Text[ japanese ] = "•¶Žš½À²Ù";
+ Text[ korean ] = "¹®ÀÚ À¯Çü";
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ";
+ Text[ chinese_traditional ] = "¦r¤¸¼Ë¦¡";
+ Text[ arabic ] = "ÃäãÇØ ÃÍÑÝ";
+ Text[ turkish ] = "Karakter biçimi";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_ANCHR_CHARFMT
+ {
+ Pos = MAP_APPFONT ( 129 , 58 ) ;
+ Size = MAP_APPFONT ( 55 , 8 ) ;
+ Text = "Te~xtbereich" ;
+ Text [ ENGLISH ] = "Text" ;
+ Left = TRUE ;
+ Text [ english_us ] = "Te~xt area" ;
+ Text [ portuguese_brazilian ] = "~Endnotensymbol" ;
+ Text [ swedish ] = "Textområde" ;
+ Text [ danish ] = "Tekstområde" ;
+ Text [ italian ] = "Area del testo" ;
+ Text [ spanish ] = "Área de ~texto" ;
+ Text [ french ] = "Plage de ~texte" ;
+ Text [ dutch ] = "~Eindemarkeringsbereik" ;
+ Text [ portuguese ] = "Área de te~xto" ;
+ Text[ chinese_simplified ] = "ÎÄ×ÖÇøÓò(~X)";
+ Text[ russian ] = "Îáëàñòü òåêñòà";
+ Text[ polish ] = "Obszar tekstu";
+ Text[ japanese ] = "•¶‘”͈Í(~X)";
+ Text[ chinese_traditional ] = "¤å¦r°Ï°ì(~X)";
+ Text[ arabic ] = "äØÇÞ ÇáäÕ";
+ Text[ greek ] = "Ðåäßï êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ¿µ¿ª(~X)";
+ Text[ turkish ] = "Metin ~alaný";
+ };
+ ListBox LB_ANCHR_CHARFMT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 186 , 56 ) ;
+ Size = MAP_APPFONT ( 65 , 54 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText FT_TEXT_CHARFMT
+ {
+ Pos = MAP_APPFONT ( 129 , 73 ) ;
+ Size = MAP_APPFONT ( 55 , 8 ) ;
+ Text = "E~ndnotenbereich" ;
+ Text [ ENGLISH ] = "Endnote text" ;
+ Left = TRUE ;
+ Text [ english_us ] = "~Endnote area" ;
+ Text [ portuguese_brazilian ] = "~Endnotensymbol" ;
+ Text [ swedish ] = "Slutnotsområde" ;
+ Text [ danish ] = "Slutnoteområde" ;
+ Text [ italian ] = "Area note di chiusura" ;
+ Text [ spanish ] = "Área de n~ota al final" ;
+ Text [ french ] = "Plage de la ~note" ;
+ Text [ dutch ] = "~Eindnotenbereik" ;
+ Text [ portuguese ] = "Área de ~nota final" ;
+ Text[ chinese_simplified ] = "βעÇøÓò(~E)";
+ Text[ russian ] = "Îáëàñòü êîíöåâîé ñíîñêè";
+ Text[ polish ] = "Obszar przyp. koñc.";
+ Text[ japanese ] = "•¶––‹r’”͈Í(~E)";
+ Text[ chinese_traditional ] = "§Àª`°Ï°ì(~E)";
+ Text[ arabic ] = "äØÇÞ ÇáÊÚáíÞ ÇáÎÊÇãí";
+ Text[ greek ] = "Ðåñéï÷Þ óçìåßùóçò ôÝëïõò";
+ Text[ korean ] = "¹ÌÁÖ ±âÈ£(~E)";
+ Text[ turkish ] = "S~onnot alaný";
+ };
+ ListBox LB_TEXT_CHARFMT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 186 , 71 ) ;
+ Size = MAP_APPFONT ( 65 , 54 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ GroupBox GB_POS
+ {
+ Pos = MAP_APPFONT ( 6 , 91 ) ;
+ Size = MAP_APPFONT ( 71 , 42 ) ;
+ Text = "Position" ;
+ Text [ English ] = "Position" ;
+ Group = 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[ greek ] = "ÈÝóç";
+ Text[ korean ] = "À§Ä¡";
+ Text[ turkish ] = "Konum";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_POS_PAGE
+ {
+ Pos = MAP_APPFONT ( 12 , 104 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Seiten~ende" ;
+ Text [ ENGLISH ] = "End of ~page" ;
+ Text [ norwegian ] = "End of ~page" ;
+ Text [ italian ] = "Fine ~pagina" ;
+ Text [ portuguese_brazilian ] = "Final de ~página" ;
+ Text [ portuguese ] = "Fim de ~página" ;
+ Text [ finnish ] = "~Sivun loppu" ;
+ Text [ danish ] = "Sidens slutning" ;
+ Text [ french ] = "Fin de ~page" ;
+ Text [ swedish ] = "~Sidslut" ;
+ Text [ dutch ] = "Pag~ina-einde" ;
+ Text [ spanish ] = "Fin de ~página" ;
+ Text [ english_us ] = "End ~of page" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "ҳβ(~O)";
+ Text[ russian ] = "Êîíåö ñòðàíèöû";
+ Text[ polish ] = "Koniec strony";
+ Text[ japanese ] = "Íß°¼Þ––(~O)";
+ Text[ chinese_traditional ] = "­¶§À(~O)";
+ Text[ arabic ] = "äåÇíÉ ÇáÕÝÍÉ";
+ Text[ greek ] = "ÔÝëïò óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ¸¶Áö¸·(~O)";
+ Text[ turkish ] = "Sayfa so~nu";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_POS_CHAPTER
+ {
+ Pos = MAP_APPFONT ( 12 , 118 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "~Dokumentende" ;
+ Text [ ENGLISH ] = "End of ~doc." ;
+ Text [ norwegian ] = "Slutt på ~dok." ;
+ Text [ italian ] = "Fine ~documento" ;
+ Text [ portuguese_brazilian ] = "Final de~doc." ;
+ Text [ portuguese ] = "Fim do ~documento" ;
+ Text [ finnish ] = "~Asiakirjan loppu" ;
+ Text [ danish ] = "Dokumentets slutn." ;
+ Text [ french ] = "Fin de ~document" ;
+ Text [ swedish ] = "~Dokumentslut" ;
+ Text [ dutch ] = "~Documenteinde" ;
+ Text [ spanish ] = "Fin del ~documento" ;
+ Text [ english_us ] = "End of ~document" ;
+ Text[ chinese_simplified ] = "ÎĵµÎ²¶Ë(~D)";
+ Text[ russian ] = "Êîíåö äîêóìåíòà";
+ Text[ polish ] = "Koniec dokumentu";
+ Text[ japanese ] = "•¶‘––(~D)";
+ Text[ chinese_traditional ] = "¤å¥ó§ÀºÝ(~D)";
+ Text[ arabic ] = "äåÇíÉ ÇáãÓÊäÏ";
+ Text[ greek ] = "ÔÝëïò êåéìÝíïõ";
+ Text[ korean ] = "¹®¼­ ³¡(~D)";
+ Text[ turkish ] = "~Belge sonunda";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_CONT
+ {
+ Pos = MAP_APPFONT ( 80 , 91 ) ;
+ Size = MAP_APPFONT ( 174 , 42 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Hinweistext mehrseitige Fußnoten : Hinweistext mehrseitige Fu˜noten */
+ Text = "Hinweistext mehrseitige Fußnoten" ;
+ Text [ ENGLISH ] = "Continuation notice" ;
+ Text [ norwegian ] = "+++Continuation notice" ;
+ Text [ italian ] = "Avvertenza che la nota continua" ;
+ Text [ portuguese_brazilian ] = "Aviso de continuação" ;
+ Text [ portuguese ] = "Continuação das notas de rodapé" ;
+ Text [ finnish ] = "Jatkumisilmoitus" ;
+ Text [ danish ] = "Henvisningstekst for flersidede fodnoter" ;
+ Text [ french ] = "Indication de suite" ;
+ Text [ swedish ] = "Meddelandetext för mersidiga fotnoter" ;
+ Text [ dutch ] = "Verwijstekst bij voetnoten verdeeld over meer dan een pagina" ;
+ Text [ spanish ] = "Indicación para notas al pie en varias páginas" ;
+ Text [ english_us ] = "Continuation notice" ;
+ Text[ chinese_simplified ] = "¶àÒ³×¢½ÅµÄÌáʾÎÄ";
+ Text[ russian ] = "Óêàçàòåëüíûé òåêñò äëÿ ñíîñîê íà íåñêîëüêèõ ñòðàíèöàõ";
+ Text[ polish ] = "Tekst wskazuj¹cy na kilkustronne przypisy dolne.";
+ Text[ japanese ] = "‹r’‚ªŽŸÍß°¼Þ‚É‘±‚­Û‚Ì’ˆÓ‘‚«";
+ Text[ chinese_traditional ] = "¦h­¶µù¸}ªº´£¥Ü¤å";
+ Text[ arabic ] = "ãáÇÍÙÉ Úáì Ôßá ÍæÇÔí ÓÝáíÉ Ýí ÃßËÑ ãä ÕÝÍÉ";
+ Text[ greek ] = "Êåßìåíï õðüäåéîçò óõíÝ÷éóçò õðïóçìåéþóåùí";
+ Text[ korean ] = "¿©·¯ ÆäÀÌÁöÀÇ ¹Ù´Ú±Û¿¡ ´ëÇÑ Âü°í";
+ Text[ turkish ] = "Devam eden dipnotu ile ilgili bilgi metni";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_CONT
+ {
+ Pos = MAP_APPFONT ( 86 , 103 ) ;
+ Size = MAP_APPFONT ( 38 , 8 ) ;
+ Text = "~Folgeseite" ;
+ Text [ ENGLISH ] = "~Continued" ;
+ Text [ norwegian ] = "~Fortsetter" ;
+ Text [ italian ] = "Pagina su~cc." ;
+ Text [ portuguese_brazilian ] = "~Continuado" ;
+ Text [ portuguese ] = "Página ~seguinte" ;
+ Text [ finnish ] = "~Jatkuu" ;
+ Text [ danish ] = "Følgeside" ;
+ Text [ french ] = "~Page suivante" ;
+ Text [ swedish ] = "~Följande sida" ;
+ Text [ dutch ] = "~Volg. pagina" ;
+ Text [ spanish ] = "Página ~siguiente" ;
+ Text [ english_us ] = "~Following page" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÐøÒ³(~F)";
+ Text[ russian ] = "Ñëåäóþùàÿ ñòðàíèöà";
+ Text[ polish ] = "Nastêp. str.";
+ Text[ japanese ] = "ŽŸ‚ÌÍß°¼Þ(~F)";
+ Text[ chinese_traditional ] = "Äò­¶(~F)";
+ Text[ arabic ] = "ÇáÕÝÍÉ ÇáÊÇáíÉ";
+ Text[ greek ] = "Åðüìåíç óåëßäá";
+ Text[ korean ] = "´ÙÀ½ ÆäÀÌÁö(~F)";
+ Text[ turkish ] = "~Sonraki sayfa";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_CONT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 137 , 101 ) ;
+ Size = MAP_APPFONT ( 114 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ MaxTextLength = 30 ;
+ };
+ FixedText FT_CONT_FROM
+ {
+ Pos = MAP_APPFONT ( 86 , 118 ) ;
+ Size = MAP_APPFONT ( 38 , 8 ) ;
+ Text = "~Beginn" ;
+ Text [ ENGLISH ] = "~Started" ;
+ Text [ norwegian ] = "~Startet" ;
+ Text [ italian ] = "~Inizio" ;
+ Text [ portuguese_brazilian ] = "~Iniciado" ;
+ Text [ portuguese ] = "~Iniciar" ;
+ Text [ finnish ] = "~Alkaa" ;
+ Text [ danish ] = "Begyndelse" ;
+ Text [ french ] = "~Début" ;
+ Text [ swedish ] = "~Börja" ;
+ Text [ dutch ] = "~Begin" ;
+ Text [ spanish ] = "~Comenzar" ;
+ Text [ english_us ] = "~Start" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¿ªÊ¼(~S)";
+ Text[ russian ] = "Íà÷àëî";
+ Text[ polish ] = "Pocz¹tek";
+ Text[ japanese ] = "ŠJŽn(~S)";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¶}©l(~S)";
+ Text[ arabic ] = "ÇáÈÏÁ";
+ Text[ greek ] = "Åêêßíçóç";
+ Text[ korean ] = "½ÃÀÛ(~S)";
+ Text[ turkish ] = "~Baþlangýç";
+ };
+ Edit ED_CONT_FROM
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 137 , 116 ) ;
+ Size = MAP_APPFONT ( 114 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ MaxTextLength = 30 ;
+ };
+};
diff --git a/sw/source/ui/misc/glosbib.cxx b/sw/source/ui/misc/glosbib.cxx
new file mode 100644
index 000000000000..69f89eba3fcd
--- /dev/null
+++ b/sw/source/ui/misc/glosbib.cxx
@@ -0,0 +1,723 @@
+/*************************************************************************
+ *
+ * $RCSfile: glosbib.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define _SVSTDARR_STRINGS
+
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _TOOLS_TEMPFILE_HXX
+#include <tools/tempfile.hxx>
+#endif
+#ifndef _STREAM_HXX
+#include <tools/stream.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SV_HELP_HXX
+#include <vcl/help.hxx>
+#endif
+#ifndef _SFXINIMGR_HXX
+#include <svtools/iniman.hxx>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UCB_XCONTENTPROVIDER_HPP_
+#include <com/sun/star/ucb/XContentProvider.hpp>
+#endif
+#ifndef _UCBHELPER_CONTENTBROKER_HXX
+#include <ucbhelper/contentbroker.hxx>
+#endif
+#ifndef _UCBHELPER_CONTENTIDENTIFIER_HXX
+#include <ucbhelper/contentidentifier.hxx>
+#endif
+
+#include <svtools/svstdarr.hxx>
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _GLOSBIB_HXX
+#include <glosbib.hxx>
+#endif
+#ifndef _GLOSHDL_HXX
+#include <gloshdl.hxx>
+#endif
+#ifndef _GLOSSARY_HXX
+#include <glossary.hxx>
+#endif
+#ifndef _GLOSDOC_HXX
+#include <glosdoc.hxx>
+#endif
+#ifndef _GLOSBIB_HRC
+#include <glosbib.hrc>
+#endif
+
+#ifndef _MISC_HRC
+#include <misc.hrc>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::ucb;
+using namespace ::com::sun::star::uno;
+using namespace ::ucb;
+using namespace ::rtl;
+
+#define PATH_CASE_SENSITIVE 0x01
+#define PATH_READONLY 0x02
+
+#define RENAME_TOKEN_DELIM (sal_Unicode)1
+
+/*-----------------09.06.97 13:05-------------------
+
+--------------------------------------------------*/
+SwGlossaryGroupDlg::SwGlossaryGroupDlg(Window * pParent,
+ const SvStrings* pPathArr,
+ SwGlossaryHdl *pHdl) :
+ SvxStandardDialog(pParent, SW_RES(DLG_BIB_BASE)),
+
+ aGroupTLB( this, SW_RES(TLB_GROUPS)),
+ aNameED( this, SW_RES(ED_NAME)),
+ aPathLB( this, SW_RES(LB_PATH)),
+ aBibGB( this, SW_RES(GB_BIB)),
+ aRenamePB( this, SW_RES(PB_RENAME)),
+ aNewPB( this, SW_RES(PB_NEW)),
+ aDelPB( this, SW_RES(PB_DELETE)),
+ aOkPB( this, SW_RES(BT_OK)),
+ aCancelPB( this, SW_RES(BT_CANCEL)),
+ aHelpPB( this, SW_RES(BT_HELP)),
+ pRemovedArr(0),
+ pInsertedArr(0),
+ pRenamedArr(0),
+ pGlosHdl(pHdl)
+{
+ FreeResource();
+
+ long nTabs[] =
+ { 2, // Number of Tabs
+ 0, 160
+ };
+
+ aGroupTLB.SetHelpId(HID_GLOS_GROUP_TREE);
+ aGroupTLB.SetTabs( &nTabs[0], MAP_APPFONT );
+ aGroupTLB.SetWindowBits(WB_HSCROLL|WB_CLIPCHILDREN|WB_SORT);
+ aGroupTLB.SetSelectHdl(LINK(this, SwGlossaryGroupDlg, SelectHdl));
+ aGroupTLB.GetModel()->SetSortMode(SortAscending);
+ aNewPB.SetClickHdl(LINK(this, SwGlossaryGroupDlg, NewHdl));
+ aDelPB.SetClickHdl(LINK(this, SwGlossaryGroupDlg, DeleteHdl));
+ aNameED.SetModifyHdl(LINK(this, SwGlossaryGroupDlg, ModifyHdl));
+ aPathLB.SetSelectHdl(LINK(this, SwGlossaryGroupDlg, ModifyHdl));
+ aRenamePB.SetClickHdl(LINK(this, SwGlossaryGroupDlg, RenameHdl));
+ for(USHORT i = 0; i < pPathArr->Count(); i++)
+ {
+ String sPath(*(*pPathArr)[i]);
+ aPathLB.InsertEntry(sPath);
+ ULONG nCaseReadonly = 0;
+ TempFile aTempFile(&sPath);
+ aTempFile.EnableKillingFile();
+ if(!aTempFile.IsValid())
+ nCaseReadonly |= PATH_READONLY;
+ else
+ {
+ Reference< lang::XMultiServiceFactory > xMSF = utl::getProcessServiceFactory();
+ try
+ {
+ INetURLObject aTempObj(aTempFile.GetName());
+ aTempObj.SetBase(aTempObj.GetBase().ToLowerAscii());
+ Reference<XContentIdentifier> xRef1 = new
+ ::ucb::ContentIdentifier( xMSF, aTempObj.GetMainURL() );
+
+ aTempObj.SetBase(aTempObj.GetBase().ToUpperAscii());
+ Reference<XContentIdentifier> xRef2 = new
+ ::ucb::ContentIdentifier( xMSF, aTempObj.GetMainURL() );
+
+ ContentBroker& rBroker = *ContentBroker::get();
+
+ Reference<XContentProvider > xProv = rBroker.getContentProviderInterface();
+ sal_Int32 nCompare = xProv->compareContentIds( xRef1, xRef2 );
+ if( nCompare )
+ nCaseReadonly |= PATH_CASE_SENSITIVE;
+ }
+ catch(...)
+ {
+ }
+ }
+ aPathLB.SetEntryData(i, (void*)nCaseReadonly);
+ }
+ aPathLB.SelectEntryPos(0);
+ aPathLB.Enable(TRUE);
+
+ const USHORT nCount = pHdl->GetGroupCnt();
+ for(i = 0; i < nCount; ++i)
+ {
+ GlosBibUserData* pData = new GlosBibUserData;
+ String sTitle;
+ String sGroup = pHdl->GetGroupName(i, &sTitle);
+ pData->sGroupName = sGroup;
+ pData->sGroupTitle = sTitle;
+ String sTemp(sTitle);
+ //sGroup.GetToken(0, GLOS_DELIM)
+ sTemp += '\t';
+ pData->sPath = aPathLB.GetEntry(sGroup.GetToken(1, GLOS_DELIM).ToInt32());
+ sTemp += pData->sPath;
+ SvLBoxEntry* pEntry = aGroupTLB.InsertEntry(sTemp);
+ pEntry->SetUserData(pData);
+
+ }
+ aGroupTLB.GetModel()->Resort();
+}
+
+/*-----------------09.06.97 13:05-------------------
+
+--------------------------------------------------*/
+SwGlossaryGroupDlg::~SwGlossaryGroupDlg()
+{
+
+ if(pInsertedArr)
+ {
+ pInsertedArr->DeleteAndDestroy(0, pInsertedArr->Count());
+ delete pInsertedArr;
+ }
+ if(pRemovedArr)
+ {
+ pRemovedArr->DeleteAndDestroy(0, pRemovedArr->Count());
+ delete pRemovedArr;
+ }
+ if(pRenamedArr)
+ {
+ pRenamedArr->DeleteAndDestroy(0, pRenamedArr->Count());
+ delete pRenamedArr;
+ }
+
+}
+
+/*-----------------09.06.97 13:11-------------------
+
+--------------------------------------------------*/
+
+void __EXPORT SwGlossaryGroupDlg::Apply()
+{
+ if(aNewPB.IsEnabled())
+ NewHdl(&aNewPB);
+
+ String aActGroup = SwGlossaryDlg::GetCurrGroup();
+
+ if(pRemovedArr && pRemovedArr->Count())
+ {
+ USHORT nCount = pRemovedArr->Count();
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ const String* pDelEntry = (*pRemovedArr)[i];
+ const String sDelGroup = pDelEntry->GetToken(0, '\t');
+ if( sDelGroup == aActGroup )
+ {
+ //soll die aktuelle Gruppe geloescht werden, muss die akt. Gruppe
+ //umgesetzt werden
+ if(aGroupTLB.GetEntryCount())
+ {
+ SvLBoxEntry* pFirst = aGroupTLB.First();
+ GlosBibUserData* pUserData = (GlosBibUserData*)pFirst->GetUserData();
+ pGlosHdl->SetCurGroup(pUserData->sGroupName);
+ }
+ }
+ String sMsg(SW_RES(STR_QUERY_DELETE_GROUP1));
+ String sTitle(pDelEntry->GetToken(1, '\t'));
+ if(sTitle.Len())
+ sMsg += sTitle;
+ else
+ sDelGroup.GetToken(1, GLOS_DELIM);
+ sMsg += SW_RESSTR(STR_QUERY_DELETE_GROUP2);
+ QueryBox aQuery(this->GetParent(), WB_YES_NO|WB_DEF_NO, sMsg );
+ if(RET_YES == aQuery.Execute())
+ pGlosHdl->DelGroup( sDelGroup );
+ }
+
+ }
+ //erst umbenennen, falls es schon eins gab
+ if(pRenamedArr && pRenamedArr->Count())
+ {
+ USHORT nCount = pRenamedArr->Count();
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ String * pEntry = (*pRenamedArr)[i];
+ xub_StrLen nStrSttPos = 0;
+ String sOld( pEntry->GetToken(0, RENAME_TOKEN_DELIM, nStrSttPos ) );
+ String sNew( pEntry->GetToken(0, RENAME_TOKEN_DELIM, nStrSttPos) );
+ String sTitle( pEntry->GetToken(0, RENAME_TOKEN_DELIM, nStrSttPos) );
+ pGlosHdl->RenameGroup(sOld, sNew, sTitle);
+ if(!i)
+ sCreatedGroup = sNew;
+ }
+ }
+ if(pInsertedArr && pInsertedArr->Count())
+ {
+ USHORT nCount = pInsertedArr->Count();
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ String sNewGroup = *(*pInsertedArr)[i];
+ String sNewTitle = sNewGroup.GetToken(0, GLOS_DELIM);
+ if( *(*pInsertedArr)[i] != aActGroup )
+ {
+ pGlosHdl->NewGroup(sNewGroup, sNewTitle);
+ if(!sCreatedGroup.Len())
+ sCreatedGroup = sNewGroup;
+ }
+ }
+ }
+}
+/*-----------------09.06.97 13:12-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwGlossaryGroupDlg, SelectHdl, SvTabListBox*, EMPTYARG )
+{
+ aNewPB.Enable(FALSE);
+ SvLBoxEntry* pEntry = aGroupTLB.FirstSelected();
+ if(pEntry)
+ {
+ GlosBibUserData* pUserData = (GlosBibUserData*)pEntry->GetUserData();
+ String sEntry(pUserData->sGroupName);
+ String sName(aNameED.GetText());
+ BOOL bExists = FALSE;
+ ULONG nPos = aGroupTLB.GetEntryPos(sName, 0);
+ if( 0xffffffff > nPos)
+ {
+ SvLBoxEntry* pEntry = aGroupTLB.GetEntry(nPos);
+ GlosBibUserData* pFoundData = (GlosBibUserData*)pEntry->GetUserData();
+ String sGroup = pFoundData->sGroupName;
+ bExists = sGroup == sEntry;
+ }
+
+ aRenamePB.Enable(!bExists && sName.Len());
+ aDelPB.Enable(IsDeleteAllowed(sEntry));
+ }
+ return 0;
+}
+
+/*-----------------09.06.97 13:22-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwGlossaryGroupDlg, NewHdl, Button*, EMPTYARG )
+{
+ String sGroup(aNameED.GetText());
+// sGroup.ToLower();
+ sGroup += GLOS_DELIM;
+ sGroup += String::CreateFromInt32(aPathLB.GetSelectEntryPos());
+ DBG_ASSERT(!pGlosHdl->FindGroupName(sGroup), "Gruppe bereits vorhanden!")
+ if(!pInsertedArr)
+ pInsertedArr = new SvStrings;
+ pInsertedArr->Insert(new String(sGroup), pInsertedArr->Count());
+ String sTemp(aNameED.GetText());
+// sTemp.ToLower();
+ sTemp += '\t';
+ sTemp += aPathLB.GetSelectEntry();
+ SvLBoxEntry* pEntry = aGroupTLB.InsertEntry(sTemp);
+ GlosBibUserData* pData = new GlosBibUserData;
+ pData->sPath = aPathLB.GetSelectEntry();
+ pData->sGroupName = sGroup;
+ pData->sGroupTitle = aNameED.GetText();
+ pEntry->SetUserData(pData);
+ aGroupTLB.Select(pEntry);
+ aGroupTLB.MakeVisible(pEntry);
+ aGroupTLB.GetModel()->Resort();
+
+ return 0;
+}
+/*-----------------09.06.97 13:22-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwGlossaryGroupDlg, DeleteHdl, Button*, pButton )
+{
+ SvLBoxEntry* pEntry = aGroupTLB.FirstSelected();
+ if(!pEntry)
+ {
+ pButton->Enable(FALSE);
+ return 0;
+ }
+ GlosBibUserData* pUserData = (GlosBibUserData*)pEntry->GetUserData();
+ String sEntry(pUserData->sGroupName);
+ // befindet sich der zu loeschende Name schon unter den
+ // den neuen - dann weg damit
+ BOOL bDelete = TRUE;
+ if(pInsertedArr && pInsertedArr->Count())
+ {
+ USHORT nCount = pInsertedArr->Count();
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ const String* pTemp = (*pInsertedArr)[i];
+ if(*pTemp == sEntry)
+ {
+ pInsertedArr->Remove(i);
+ bDelete = FALSE;
+ break;
+ }
+
+ }
+ }
+ // moeglicherweise sollte es schon umbenannt werden?
+ if(bDelete)
+ {
+ if(pRenamedArr && pRenamedArr->Count())
+ {
+ USHORT nCount = pRenamedArr->Count();
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ const String* pTemp = (*pRenamedArr)[i];
+ String sTemp( pTemp->GetToken(0, RENAME_TOKEN_DELIM ));
+ if(sTemp == sEntry)
+ {
+ pRenamedArr->Remove(i);
+ bDelete = FALSE;
+ break;
+ }
+ }
+ }
+ }
+ if(bDelete)
+ {
+ if(!pRemovedArr)
+ pRemovedArr = new SvStrings;
+ String sEntry(pUserData->sGroupName);
+ sEntry += '\t';
+ sEntry += pUserData->sGroupTitle;
+ pRemovedArr->Insert(new String(sEntry), pRemovedArr->Count());
+ }
+ delete pUserData;
+ aGroupTLB.GetModel()->Remove(pEntry);
+ if(!aGroupTLB.First())
+ pButton->Enable(FALSE);
+ //the content must be deleted - otherwise the new handler would be called in Apply()
+ aNameED.SetText(aEmptyStr);
+ return 0;
+}
+
+/* -----------------23.11.98 12:26-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwGlossaryGroupDlg, RenameHdl, Button *, EMPTYARG )
+{
+ SvLBoxEntry* pEntry = aGroupTLB.FirstSelected();
+ GlosBibUserData* pUserData = (GlosBibUserData*)pEntry->GetUserData();
+ String sEntryText(aGroupTLB.GetEntryText(pEntry));
+ String sEntry(pUserData->sGroupName);
+
+ String sNewName(aNameED.GetText());
+ String sNewTitle(sNewName);
+
+ sNewName += GLOS_DELIM;
+ sNewName += String::CreateFromInt32(aPathLB.GetSelectEntryPos());
+ DBG_ASSERT(!pGlosHdl->FindGroupName(sNewName), "Gruppe bereits vorhanden!")
+
+ // befindet sich der umzubenennende Name unter den
+ // den neuen - dann austauschen
+ BOOL bDone = FALSE;
+ if(pInsertedArr && pInsertedArr->Count())
+ {
+ USHORT nCount = pInsertedArr->Count();
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ const String* pTemp = (*pInsertedArr)[i];
+ if(*pTemp == sEntry)
+ {
+ pInsertedArr->Remove(i);
+ pInsertedArr->Insert(new String(sNewName), pInsertedArr->Count());
+ bDone = TRUE;
+ break;
+ }
+ }
+ }
+ if(!bDone)
+ {
+ if(!pRenamedArr)
+ pRenamedArr = new SvStrings;
+ sEntry += RENAME_TOKEN_DELIM;
+ sEntry += sNewName;
+ sEntry += RENAME_TOKEN_DELIM;
+ sEntry += sNewTitle;
+ pRenamedArr->Insert(new String(sEntry), pRenamedArr->Count());
+ }
+ delete (GlosBibUserData*)pEntry->GetUserData();
+ aGroupTLB.GetModel()->Remove(pEntry);
+ String sTemp(aNameED.GetText());
+// sTemp.ToLower();
+ sTemp += '\t';
+ sTemp += aPathLB.GetSelectEntry();
+ pEntry = aGroupTLB.InsertEntry(sTemp);
+ GlosBibUserData* pData = new GlosBibUserData;
+ pData->sPath = aPathLB.GetSelectEntry();
+ pData->sGroupName = sNewName;
+ pData->sGroupTitle = sNewTitle;
+ pEntry->SetUserData(pData);
+ aGroupTLB.Select(pEntry);
+ aGroupTLB.MakeVisible(pEntry);
+ aGroupTLB.GetModel()->Resort();
+ return 0;
+}
+/*-----------------09.06.97 13:42-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwGlossaryGroupDlg, ModifyHdl, Edit*, EMPTYARG )
+{
+ String sEntry(aNameED.GetText());
+// sEntry.ToLower();
+ BOOL bEnableNew = TRUE;
+ BOOL bEnableDel = FALSE;
+ ULONG nCaseReadonly =
+ (ULONG)aPathLB.GetEntryData(aPathLB.GetSelectEntryPos());
+ BOOL bDirReadonly = 0 != (nCaseReadonly&PATH_READONLY);
+
+ if(!sEntry.Len() || bDirReadonly)
+ bEnableNew = FALSE;
+ else if(sEntry.Len())
+ {
+ ULONG nPos = 0xffffffff;
+
+
+ nPos = aGroupTLB.GetEntryPos(sEntry, 0);
+ //ist es nicht case sensitive muss man selbst suchen
+ if( 0xffffffff == nPos)
+ {
+ for(USHORT i = 0; i < aGroupTLB.GetEntryCount(); i++)
+ {
+ String sTemp = aGroupTLB.GetEntryText( i, 0 );
+ ULONG nCaseReadonly = (ULONG)aPathLB.GetEntryData(
+ aPathLB.GetEntryPos(aGroupTLB.GetEntryText(i,1)));
+ BOOL bCase = 0 != (nCaseReadonly & PATH_CASE_SENSITIVE);
+ const International& rInt = Application::GetAppInternational();
+ if(!bCase && rInt.CompareEqual(sTemp, sEntry, INTN_COMPARE_IGNORECASE))
+ {
+ nPos = i;
+ break;
+ }
+ }
+ }
+ if( 0xffffffff > nPos)
+ {
+ bEnableNew = FALSE;
+ aGroupTLB.Select(aGroupTLB.GetEntry( nPos ));
+ aGroupTLB.MakeVisible(aGroupTLB.GetEntry( nPos ));
+ }
+ }
+ SvLBoxEntry* pEntry = aGroupTLB.FirstSelected();
+ if(pEntry)
+ {
+ String sGroup = aGroupTLB.GetEntryText(pEntry, 0);
+ sGroup += GLOS_DELIM;
+ sGroup += String::CreateFromInt32(aPathLB.GetEntryPos(aGroupTLB.GetEntryText(pEntry, 1)));
+ bEnableDel = IsDeleteAllowed(sGroup);
+ }
+
+ aDelPB.Enable(bEnableDel);
+ aNewPB.Enable(bEnableNew);
+ aRenamePB.Enable(bEnableNew && pEntry);
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+BOOL SwGlossaryGroupDlg::IsDeleteAllowed(const String &rGroup)
+{
+ BOOL bDel = (!pGlosHdl->IsReadOnly(&rGroup));
+
+ // OM: befindet sich der Name unter den den neuen Bereichsnamen,
+ // dann ist er auch loeschbar! Bei noch nicht existenten Bereichsnamen
+ // liefert ReadOnly naemlich TRUE.
+
+ if(pInsertedArr && pInsertedArr->Count())
+ {
+ USHORT nCount = pInsertedArr->Count();
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ const String* pTemp = (*pInsertedArr)[i];
+ if(*pTemp == rGroup)
+ {
+ bDel = TRUE;
+ break;
+ }
+ }
+ }
+
+ return bDel;
+}
+
+/*-----------------18.07.97 19:06-------------------
+
+--------------------------------------------------*/
+void FEdit::KeyInput( const KeyEvent& rKEvent )
+{
+ String sKey(rKEvent.GetCharCode());
+ KeyCode aCode = rKEvent.GetKeyCode();
+
+ if (aCode.GetGroup() == KEYGROUP_CURSOR ||
+ ((aCode.GetGroup() == KEYGROUP_MISC) && aCode.GetCode() <= KEY_DELETE) ||
+ sKey != SFX_SEARCHPATH_DELIMITER)
+ Edit::KeyInput( rKEvent );
+}
+/* -----------------------------08.02.00 15:07--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwGlossaryGroupTLB::RequestHelp( const HelpEvent& rHEvt )
+{
+ Point aPos( ScreenToOutputPixel( rHEvt.GetMousePosPixel() ));
+ SvLBoxEntry* pEntry = GetEntry( aPos );
+ if(pEntry)
+ {
+ SvLBoxTab* pTab;
+ SvLBoxItem* pItem = GetItem( pEntry, aPos.X(), &pTab );
+ if(pItem)
+ {
+ aPos = SvTreeListBox::GetEntryPos( pEntry );
+ Size aSize(pItem->GetSize( this, pEntry ));
+ aPos.X() = GetTabPos( pEntry, pTab );
+
+ if((aPos.X() + aSize.Width()) > GetSizePixel().Width())
+ aSize.Width() = GetSizePixel().Width() - aPos.X();
+ aPos = OutputToScreenPixel(aPos);
+ Rectangle aItemRect( aPos, aSize );
+ String sMsg;
+ GlosBibUserData* pData = (GlosBibUserData*)pEntry->GetUserData();
+ sMsg = pData->sPath;
+ sMsg += INET_PATH_TOKEN;
+ sMsg += pData->sGroupName.GetToken(0, GLOS_DELIM);
+ sMsg += SwGlossaries::GetExtension();
+
+ Help::ShowQuickHelp( this, aItemRect, sMsg,
+ QUICKHELP_LEFT|QUICKHELP_VCENTER );
+ }
+ }
+}
+/* -----------------------------08.02.00 15:08--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwGlossaryGroupTLB::Clear()
+{
+ SvLBoxEntry* pEntry = First();
+ while(pEntry)
+ {
+ GlosBibUserData* pData = (GlosBibUserData*)pEntry->GetUserData();
+ delete pData;
+ pEntry = Next(pEntry);
+ }
+ SvTabListBox::Clear();
+}
+
+/*--------------------------------------------------------------------
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.64 2000/09/18 16:05:56 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.63 2000/07/20 15:24:32 jp
+ Bug #77040#: don't create references with stack objects, must always created on the heap
+
+ Revision 1.62 2000/07/20 13:17:12 jp
+ change old txtatr-character to the two new characters
+
+ Revision 1.61 2000/06/13 09:57:14 os
+ using UCB
+
+ Revision 1.60 2000/06/07 13:27:58 os
+ using UCB
+
+ Revision 1.59 2000/05/30 14:34:29 os
+ #75706# removing of glossary groups: ask for title instead of group name
+
+ Revision 1.58 2000/05/23 19:22:32 jp
+ Bugfixes for Unicode
+
+ Revision 1.57 2000/04/18 15:08:16 os
+ UNICODE
+
+ Revision 1.56 2000/03/14 10:09:58 os
+ #73944# check if directories are readonly
+
+ Revision 1.55 2000/03/06 15:49:27 os
+ #70359# dialog size increased
+
+ Revision 1.54 2000/03/03 15:17:02 os
+ StarView remainders removed
+
+ Revision 1.53 2000/02/22 13:26:21 os
+ #73271# always append path index
+
+ Revision 1.52 2000/02/14 14:40:48 os
+ #70473# Unicode
+
+ --------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/misc/glosbib.hrc b/sw/source/ui/misc/glosbib.hrc
new file mode 100644
index 000000000000..d5c501a22e55
--- /dev/null
+++ b/sw/source/ui/misc/glosbib.hrc
@@ -0,0 +1,73 @@
+/*************************************************************************
+ *
+ * $RCSfile: glosbib.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 GB_BIB 1
+#define CO_NAME 2
+#define PB_NEW 3
+#define PB_DELETE 4
+#define BT_OK 5
+#define BT_CANCEL 6
+#define BT_HELP 7
+#define LB_PATH 8
+#define TLB_GROUPS 9
+#define ED_NAME 10
+#define PB_RENAME 11
+
diff --git a/sw/source/ui/misc/glosbib.src b/sw/source/ui/misc/glosbib.src
new file mode 100644
index 000000000000..ed07ae53d552
--- /dev/null
+++ b/sw/source/ui/misc/glosbib.src
@@ -0,0 +1,280 @@
+/*************************************************************************
+ *
+ * $RCSfile: glosbib.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "glosbib.hrc"
+#include "misc.hrc"
+#include "helpid.h"
+ModalDialog DLG_BIB_BASE
+{
+ HelpID = HID_BIB_BASE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 349 , 121 ) ;
+ Moveable = TRUE ;
+ Text = "Bereiche bearbeiten" ;
+ Text [ ENGLISH ] = "Edit groups" ;
+ Text [ dutch ] = "Bereiken bewerken" ;
+ Text [ english_us ] = "Edit Categories" ;
+ Text [ italian ] = "Modifica categorie" ;
+ Text [ spanish ] = "Modificar áreas" ;
+ Text [ french ] = "Édition des catégories" ;
+ Text [ swedish ] = "Redigera områden" ;
+ Text [ danish ] = "Rediger områder" ;
+ Text [ portuguese ] = "Editar categorias" ;
+ Text [ portuguese_brazilian ] = "Bereiche bearbeiten" ;
+ PushButton PB_NEW
+ {
+ Disable = TRUE ;
+ Pos = MAP_APPFONT ( 293 , 66 ) ;
+ Size = MAP_APPFONT ( 50 , 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 ] = "~Nouvelle" ;
+ Text [ swedish ] = "~Nytt" ;
+ Text [ dutch ] = "~Nieuw" ;
+ Text [ spanish ] = "~Nuevo" ;
+ Text [ english_us ] = "~New" ;
+ TabStop = TRUE ;
+ 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 PB_DELETE
+ {
+ Pos = MAP_APPFONT ( 293 , 83 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### 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" ;
+ TabStop = TRUE ;
+ Disable = 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 PB_RENAME
+ {
+ Disable = TRUE ;
+ Pos = MAP_APPFONT ( 293 , 100 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "~Umbenennen" ;
+ Text [ ENGLISH ] = "Ren~ame" ;
+ Text [ dutch ] = "~Naam wijzigen" ;
+ Text [ english_us ] = "~Rename" ;
+ Text [ italian ] = "~Rinomina" ;
+ Text [ spanish ] = "~Cambiar nombre" ;
+ Text [ french ] = "~Renommer" ;
+ Text [ swedish ] = "~Byt namn" ;
+ Text [ danish ] = "Omdøb" ;
+ Text [ portuguese ] = "~Mudar nome" ;
+ TabStop = TRUE ;
+ Text[ portuguese_brazilian ] = "Ren~ame";
+ 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 ] = "Y~eniden adlandýr";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_BIB
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 281 , 111 ) ;
+ Text = "Bereich" ;
+ Text [ ENGLISH ] = "Group" ;
+ Text [ norwegian ] = "Gruppe" ;
+ Text [ italian ] = "Sezione" ;
+ Text [ portuguese_brazilian ] = "Grupo" ;
+ Text [ portuguese ] = "Categoria" ;
+ Text [ finnish ] = "Ryhmä" ;
+ Text [ danish ] = "Område" ;
+ Text [ french ] = "Catégorie" ;
+ Text [ swedish ] = "Område" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ spanish ] = "Area" ;
+ Text [ english_us ] = "Category" ;
+ Text[ chinese_simplified ] = "·ÖÀà";
+ Text[ russian ] = "Êàòåãîðèÿ";
+ Text[ polish ] = "Obszar";
+ Text[ japanese ] = "•ª—Þ";
+ Text[ chinese_traditional ] = "°Ï°ì";
+ Text[ arabic ] = "ÝÆÉ";
+ Text[ greek ] = "Êáôçãïñßá";
+ Text[ korean ] = "Ç׸ñ ºÐ·ù";
+ Text[ turkish ] = "Kategori";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 293 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 293 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 293 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ Edit ED_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 159 , 12 ) ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ MaxTextLength = 256 ;
+ };
+ ListBox LB_PATH
+ {
+ Pos = MAP_APPFONT ( 174 , 14 ) ;
+ Size = MAP_APPFONT ( 107 , 50 ) ;
+ DropDown = TRUE ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ DDExtraWidth = TRUE ;
+ };
+ Control TLB_GROUPS
+ {
+ Pos = MAP_APPFONT ( 12 , 46 ) ;
+ Size = MAP_APPFONT ( 269 , 61 ) ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ };
+ /* ComboBox CO_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 89 , 76 ) ;
+ TabStop = TRUE ;
+#ifdef WIN
+ MaxTextLength = 8 ;
+#else
+ MaxTextLength = 32 ;
+#endif
+ Sort = TRUE ;
+ };*/
+ Text[ chinese_simplified ] = "±à¼­ÇøÓò";
+ Text[ russian ] = "Ïðàâêà êàòåãîðèé";
+ Text[ polish ] = "Edytuj obszary";
+ Text[ japanese ] = "•ª—Þ‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿è°Ï°ì";
+ Text[ arabic ] = "ÊÍÑíÑ ÇáÝÆÇÊ";
+ Text[ greek ] = "Åðåîåñãáóßá êáôçãïñéþí";
+ Text[ korean ] = "ºÐ·ù Ç׸ñ ÆíÁý";
+ Text[ turkish ] = "Kategorileri düzenle";
+ Text[ language_user1 ] = " ";
+};
+/*
+String STR_GLOSSARY_BIB_DLG
+{
+ Text = "Bereiche bearbeiten" ;
+ Text [ ENGLISH ] = "Edit groups" ;
+ Text [ dutch ] = "Bereiken bewerken" ;
+ Text [ english_us ] = "Edit Categories" ;
+ Text [ italian ] = "Modifica aree" ;
+ Text [ spanish ] = "Editar secciones" ;
+ Text [ french ] = "Modifier sections" ;
+ Text [ swedish ] = "Redigera områden" ;
+ Text [ danish ] = "Rediger område" ;
+ Text [ portuguese ] = "Editar secções" ;
+ Text [ portuguese_brazilian ] = "Bereiche bearbeiten" ;
+};*/
diff --git a/sw/source/ui/misc/glosdoc.cxx b/sw/source/ui/misc/glosdoc.cxx
new file mode 100644
index 000000000000..f96274a0928e
--- /dev/null
+++ b/sw/source/ui/misc/glosdoc.cxx
@@ -0,0 +1,1101 @@
+/*************************************************************************
+ *
+ * $RCSfile: glosdoc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+
+#pragma hdrstop
+
+#ifndef _COM_SUN_STAR_UCB_XCOMMANDENVIRONMENT_HPP_
+#include <com/sun/star/ucb/XCommandEnvironment.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UCB_XCONTENTACCESS_HPP_
+#include <com/sun/star/ucb/XContentAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XRESULTSET_HPP_
+#include <com/sun/star/sdbc/XResultSet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XROW_HPP_
+#include <com/sun/star/sdbc/XRow.hpp>
+#endif
+#ifndef _UCBHELPER_CONTENT_HXX
+#include <ucbhelper/content.hxx>
+#endif
+#ifndef _UCBHELPER_CONTENTIDENTIFIER_HXX
+#include <ucbhelper/contentidentifier.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UCB_XCONTENTPROVIDER_HPP_
+#include <com/sun/star/ucb/XContentProvider.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UCB_TRANSFERINFO_HPP_
+#include <com/sun/star/ucb/TransferInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UCB_NAMECLASH_HPP_
+#include <com/sun/star/ucb/NameClash.hpp>
+#endif
+#ifndef _UCBHELPER_CONTENTBROKER_HXX
+#include <ucbhelper/contentbroker.hxx>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SHL_HXX
+#include <tools/shl.hxx>
+#endif
+#define _SVSTDARR_STRINGS
+#include <svtools/svstdarr.hxx>
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef __RSC //autogen
+#include <tools/errinf.hxx>
+#endif
+#ifndef _SFXINIMGR_HXX //autogen
+#include <svtools/iniman.hxx>
+#endif
+#ifndef _TOOLS_DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+#ifndef _SFX_INIMGR_HXX
+#include <sfx2/inimgr.hxx>
+#endif
+
+#ifndef _UNOATXT_HXX
+#include <unoatxt.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx> // ASSERT
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _GLOSDOC_HXX
+#include <glosdoc.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+
+#ifndef _SWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::ucb;
+using namespace ::com::sun::star::uno;
+using namespace ::ucb;
+using namespace ::rtl;
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+// INCLUDEs die nicht bedingungslos im MSC-PCH landen --------------------
+
+
+// STATIC ---------------------------------------------------------------
+static const char __FAR_DATA pDefName[] = "standard";
+
+char __FAR_DATA aExt[] = ".bau";
+extern const char* __FAR_DATA pGlosExt = aExt;
+
+SV_IMPL_PTRARR(XAutoTextGroupPtrArr, XAutoTextGroupPtr)
+SV_IMPL_PTRARR(XAutoTextEntryPtrArr, XInterfacePtr)
+
+// PUBLIC METHODES -------------------------------------------------------
+/* -----------------23.11.98 14:30-------------------
+ *
+ * --------------------------------------------------*/
+sal_Bool lcl_RemoveFileFromList(SvStrings* pGlosArr,
+ XAutoTextEntryPtrArr& rGlosEntryArr,
+ XAutoTextGroupPtrArr& rGlosGroupArr,
+ const String& rName)
+{
+ if(pGlosArr)
+ {
+ const sal_uInt16 nCount = pGlosArr->Count();
+ for(sal_uInt16 i = 0; i < nCount; ++i)
+ {
+ String *pTmp = (*pGlosArr)[i];
+ if(*pTmp == rName)
+ {
+ //UNO-Objekt fuer die Gruppe aus dem Array loeschen
+ OUString aUName = rName;
+ sal_uInt16 nXCount = rGlosGroupArr.Count();
+ for(sal_uInt16 j = 0; j < nXCount; ++j)
+ {
+ uno::Reference< text::XAutoTextGroup > * pxGroup = rGlosGroupArr.GetObject(j);
+ uno::Reference< container::XNamed > xNamed(*pxGroup, uno::UNO_QUERY);
+
+
+ if(xNamed->getName() == aUName )
+ {
+ text::XAutoTextGroup* pGroup = pxGroup->get();
+ ((SwXAutoTextGroup*)pGroup)->Invalidate();
+ rGlosGroupArr.Remove(j);
+ delete pxGroup;
+ break;
+ }
+ }
+ // alle UNO-Objekte fuer enthaltene Entries loeschen - rueckwaerts!
+ nXCount = rGlosEntryArr.Count();
+ for(j = nXCount; j; --j)
+ {
+ uno::Reference< uno::XInterface > * pxEntry = rGlosEntryArr.GetObject(j);
+ uno::Reference< lang::XUnoTunnel > xTunnel(*pxEntry, uno::UNO_QUERY);
+ SwXAutoTextEntry* pEntry = (SwXAutoTextEntry*)
+ xTunnel->getSomething(SwXAutoTextEntry::getUnoTunnelId());
+ if(pEntry->GetGroupName() == rName )
+ {
+ pEntry->Invalidate();
+ rGlosEntryArr.Remove(j);
+ delete pxEntry;
+ }
+ }
+
+ pGlosArr->Remove(i);
+ delete pTmp;
+ break;
+ }
+ }
+ }
+ return sal_True;
+}
+/* -----------------------------08.02.00 15:54--------------------------------
+
+ ---------------------------------------------------------------------------*/
+String lcl_CheckFileName(const String& rNewFilePath, const String& rNewGroupName)
+{
+ String sRet;
+ //group name should contain only A-Z and a-z and spaces
+ for(sal_uInt16 i = 0; i < rNewGroupName.Len(); i++)
+ {
+ char cChar = rNewGroupName.GetChar(i);
+ if( (cChar >= 'A') && (cChar <= 'Z') ||
+ (cChar >= 'a') && (cChar <= 'z') ||
+ (cChar >= '0') && (cChar <= '9') ||
+ (cChar = '_') ||
+ cChar == 0x20 )
+ {
+ sRet += cChar;
+ }
+ }
+ sRet.EraseLeadingChars();
+ sRet.EraseTrailingChars();
+ String sTmpDir(rNewFilePath);
+ sTmpDir += INET_PATH_TOKEN;
+ sTmpDir += sRet;
+ sTmpDir += SwGlossaries::GetExtension();
+
+ BOOL bCreated = FALSE;
+ try
+ {
+ ::ucb::Content aTestContent( sTmpDir ,
+ uno::Reference< XCommandEnvironment >());
+ bCreated = aTestContent.isDocument();
+ }
+ catch(...)
+ {
+ bCreated = FALSE;
+ }
+ if(!sRet.Len() || bCreated)
+ {
+ //generate generic name
+ const String sGroupBaseName(C2S("group"));
+ String sTmpDir(rNewFilePath);
+ sTmpDir += INET_PATH_TOKEN;
+ for(sal_uInt16 i = 0; i < USHRT_MAX; i++)
+ {
+ String sName(sGroupBaseName);
+ sName += String::CreateFromInt32(i);
+ sName += SwGlossaries::GetExtension();
+ sName.Insert(sTmpDir, 0);
+ try
+ {
+ ::ucb::Content aTestContent(sName ,
+ uno::Reference< XCommandEnvironment >());
+ bCreated = aTestContent.isDocument();
+ }
+ catch(...)
+ {
+ bCreated = FALSE;
+ }
+
+ if(!bCreated)
+ {
+ sRet = sGroupBaseName;
+ sRet += String::CreateFromInt32(i);
+ break;
+ }
+ }
+ }
+ return sRet;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Liefert den Namen der Default-Gruppe
+------------------------------------------------------------------------*/
+
+
+String SwGlossaries::GetDefName()
+{
+ return C2S(pDefName);
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Liefert die Anzahl der Textbausteingruppen
+------------------------------------------------------------------------*/
+
+
+sal_uInt16 SwGlossaries::GetGroupCnt()
+{
+ return GetNameList()->Count();
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Liefert den Gruppennamen
+------------------------------------------------------------------------*/
+sal_Bool SwGlossaries::FindGroupName(String & rGroup)
+{
+ // enthaelt der Gruppenname keinen Pfad, kann hier ein passender
+ // Gruppeneintrag gesucht werden;
+ sal_uInt16 nCount = GetGroupCnt();
+ sal_uInt16 i;
+ for(i= 0; i < nCount; i++)
+ {
+ String sTemp(GetGroupName(i));
+ if(rGroup.Equals( sTemp.GetToken(0, GLOS_DELIM)))
+ {
+ rGroup = sTemp;
+ return sal_True;
+ }
+ }
+ //man darf zweimal suchen, denn bei mehreren Verzeichnissen koennte der caseinsensitive Name mehrfach auftreten
+ const International& rInt = Application::GetAppInternational();
+ Reference< lang::XMultiServiceFactory > xMSF = utl::getProcessServiceFactory();
+
+ for(i = 0; i < nCount; i++)
+ {
+ String sTemp(GetGroupName(i));
+ String sPath = sTemp.GetToken(1, GLOS_DELIM);
+ sal_uInt16 nPath = sPath.ToInt32();
+
+ BOOL bCaseSensitive = FALSE;
+ try
+ {
+ INetURLObject aTempObj(*(*pPathArr)[nPath]);
+ aTempObj.SetBase(aTempObj.GetBase().ToLowerAscii());
+ Reference<XContentIdentifier> xRef1 = new
+ ::ucb::ContentIdentifier( xMSF, aTempObj.GetMainURL());
+ aTempObj.SetBase(aTempObj.GetBase().ToUpperAscii());
+ Reference<XContentIdentifier> xRef2 = new
+ ::ucb::ContentIdentifier( xMSF, aTempObj.GetMainURL());
+
+ ContentBroker& rBroker = *ContentBroker::get();
+
+ Reference<XContentProvider > xProv = rBroker.getContentProviderInterface();
+ sal_Int32 nCompare = xProv->compareContentIds( xRef1, xRef2 );
+ bCaseSensitive = nCompare != 0;
+ }
+ catch(...)
+ {
+ }
+
+ if( !bCaseSensitive &&
+ rInt.CompareEqual( rGroup, sTemp.GetToken(0, GLOS_DELIM),
+ INTN_COMPARE_IGNORECASE))
+ {
+ rGroup = sTemp;
+ return sal_True;
+ }
+ }
+ return sal_False;
+}
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+
+String SwGlossaries::GetGroupName(sal_uInt16 nGroupId)
+{
+ ASSERT(nGroupId < pGlosArr->Count(), Textbausteinarray ueberindiziert);
+ return *(*pGlosArr)[nGroupId];
+}
+/* -----------------------------08.02.00 13:04--------------------------------
+
+ ---------------------------------------------------------------------------*/
+String SwGlossaries::GetGroupTitle( const String& rGroupName )
+{
+ String sRet;
+ String sGroup(rGroupName);
+ if(STRING_NOTFOUND == sGroup.Search(GLOS_DELIM))
+ FindGroupName(sGroup);
+ SwTextBlocks* pGroup = GetGroupDoc(sGroup, sal_False);
+ if(pGroup)
+ {
+ sRet = pGroup->GetName();
+ PutGroupDoc( pGroup );
+ }
+ return sRet;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Liefert das Textbaustein-Dokument der Gruppe rName
+------------------------------------------------------------------------*/
+
+SwTextBlocks* SwGlossaries::GetGroupDoc(const String &rName,
+ sal_Bool bCreate) const
+{
+ // gfs. in die Liste der Textbausteine eintragen
+ if(bCreate && pGlosArr)
+ {
+ const String aName(rName);
+ const sal_uInt16 nCount = pGlosArr->Count();
+ for(sal_uInt16 i = 0; i < nCount; ++i)
+ {
+ const String *pName = (*pGlosArr)[i];
+ if(*pName == aName)
+ break;
+ }
+ if(i == nCount)
+ { // Baustein nicht in der Liste
+ String *pTmp = new String(aName);
+ pGlosArr->Insert(pTmp, pGlosArr->Count());
+ }
+ }
+ return GetGlosDoc( rName, bCreate );
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Loeschen Textblock
+------------------------------------------------------------------------*/
+
+void SwGlossaries::PutGroupDoc(SwTextBlocks *pBlock) {
+ delete pBlock;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Erzeugt ein neues Dokument mit dem Gruppenname
+ Wird temp. auch als File angelegt, damit die
+ Gruppen auch spaeter (ohne Zugriff) vorhanden sind.
+------------------------------------------------------------------------*/
+
+
+sal_Bool SwGlossaries::NewGroupDoc(String& rGroupName, const String& rTitle)
+{
+ sal_uInt16 nNewPath = rGroupName.GetToken(1, GLOS_DELIM).ToInt32();
+ String sNewFilePath(*(*pPathArr)[nNewPath]);
+ String sNewGroup = lcl_CheckFileName(sNewFilePath, rGroupName.GetToken(0, GLOS_DELIM));
+ sNewGroup += GLOS_DELIM;
+ sNewGroup += rGroupName.GetToken(1, GLOS_DELIM);
+ SwTextBlocks *pBlock = GetGlosDoc( sNewGroup );
+ if(pBlock)
+ {
+ String *pTmp =
+ new String(sNewGroup);
+ SvStrings* pList = GetNameList();
+ pList->Insert(pTmp, pList->Count());
+ pBlock->SetName(rTitle);
+ PutGroupDoc(pBlock);
+ rGroupName = sNewGroup;
+ rGroupName += GLOS_DELIM;
+ rGroupName += String::CreateFromInt32(nNewPath);
+ return sal_True;
+ }
+ return sal_False;
+}
+/* -----------------23.11.98 13:13-------------------
+ *
+ * --------------------------------------------------*/
+sal_Bool SwGlossaries::RenameGroupDoc(
+ const String& rOldGroup, String& rNewGroup, const String& rNewTitle)
+{
+ sal_Bool bRet = sal_False;
+ sal_uInt16 nOldPath = rOldGroup.GetToken(1, GLOS_DELIM).ToInt32();
+ if(nOldPath < pPathArr->Count())
+ {
+ String sOldFileURL(*(*pPathArr)[nOldPath]);
+ sOldFileURL += INET_PATH_TOKEN;
+ sOldFileURL += rOldGroup.GetToken(0, GLOS_DELIM);
+ sOldFileURL.AppendAscii(pGlosExt);
+ BOOL bExist = FALSE;
+ try
+ {
+ ::ucb::Content aTestContent( sOldFileURL ,
+ uno::Reference< XCommandEnvironment >());
+ bExist = aTestContent.isDocument();
+ }
+ catch(...)
+ {
+ }
+ DBG_ASSERT(bExist, "Gruppe existiert nicht!")
+ if(bExist)
+ {
+ sal_uInt16 nNewPath = rNewGroup.GetToken(1, GLOS_DELIM).ToInt32();
+ if( nNewPath < pPathArr->Count())
+ {
+ String sNewFilePath(*(*pPathArr)[nNewPath]);
+ String sNewFileName = lcl_CheckFileName(
+ sNewFilePath, rNewGroup.GetToken(0, GLOS_DELIM));
+ //String aTmp( rNewGroup.GetToken(0, GLOS_DELIM));
+ const sal_uInt16 nFileNameLen = sNewFileName.Len();
+ sNewFileName.AppendAscii(pGlosExt);
+ String sTempNewFilePath(sNewFilePath);
+ sTempNewFilePath += INET_PATH_TOKEN;
+ sTempNewFilePath += sNewFileName ;
+ BOOL bExist = FALSE;
+ try
+ {
+ ::ucb::Content aTestContent( sTempNewFilePath,
+ uno::Reference< XCommandEnvironment >());
+ bExist = aTestContent.isDocument();
+ }
+ catch(...)
+ {
+ }
+ DBG_ASSERT(!bExist, "Gruppe existiert bereits!")
+ if(!bExist)
+ {
+ BOOL bCopyCompleted = TRUE;
+ try
+ {
+ ::ucb::Content aTempContent(sNewFilePath,
+ Reference< XCommandEnvironment > ());
+
+ Any aAny;
+ TransferInfo aInfo;
+ aInfo.NameClash = NameClash::ERROR;
+ aInfo.NewTitle = sNewFileName;
+ aInfo.SourceURL = sOldFileURL;
+ aInfo.MoveData = TRUE;
+
+ aAny <<= aInfo;
+ aTempContent.executeCommand( rtl::OUString::createFromAscii( "transfer" ),
+ aAny);
+ }
+ catch( Exception& rEx )
+ {
+ bCopyCompleted = FALSE;
+ }
+ if(bCopyCompleted)
+ {
+ bRet = sal_True;
+ lcl_RemoveFileFromList(pGlosArr, aGlosEntryArr, aGlosGroupArr, rOldGroup);
+ rNewGroup = sNewFileName.Copy(0, nFileNameLen);
+ rNewGroup += GLOS_DELIM;
+ rNewGroup += String::CreateFromInt32(nNewPath);
+ String *pTmp = new String(rNewGroup);
+ if(!pGlosArr)
+ GetNameList();
+ else
+ pGlosArr->Insert(pTmp, pGlosArr->Count());
+
+ sNewFilePath += INET_PATH_TOKEN;
+ sNewFilePath += sNewFileName ;
+ SwTextBlocks* pNewBlock = new SwTextBlocks( sNewFilePath );
+ pNewBlock->SetName(rNewTitle);
+ delete pNewBlock;
+ }
+ }
+ }
+ }
+ }
+ return bRet;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Loescht eine Textbausteingruppe
+------------------------------------------------------------------------*/
+
+
+sal_Bool SwGlossaries::DelGroupDoc(const String &rName)
+{
+ sal_uInt16 nPath = rName.GetToken(1, GLOS_DELIM).ToInt32();
+ if(nPath >= pPathArr->Count())
+ return sal_False;
+ String sFileURL(*(*pPathArr)[nPath]);
+ String aTmp( rName.GetToken(0, GLOS_DELIM));
+
+ String aName(aTmp);
+ aName += GLOS_DELIM;
+ aName += String::CreateFromInt32(nPath);
+
+ aTmp.AppendAscii(pGlosExt);
+ sFileURL += INET_PATH_TOKEN;
+ sFileURL += aTmp;
+ // Auch, wenn das File nicht existiert, muss es aus der Liste
+ // der Textbausteinbereiche entfernt werden
+ // Kein && wegen CFfront
+#ifdef DBG_UTIL
+ BOOL bRemoved = FALSE;
+#endif
+ try
+ {
+ ::ucb::Content aTempContent(sFileURL,
+ Reference< XCommandEnvironment > ());
+ aTempContent.executeCommand( rtl::OUString::createFromAscii( "delete" ),
+ makeAny( sal_Bool( sal_True ) ) );
+#ifdef DBG_UTIL
+ bRemoved = TRUE;
+#endif
+ }
+ catch( ... )
+ {
+ DBG_ERRORFILE( "Exception" );
+ }
+ DBG_ASSERT(bRemoved, "file has not been removed")
+ return lcl_RemoveFileFromList(pGlosArr, aGlosEntryArr, aGlosGroupArr, aName);
+}
+/*------------------------------------------------------------------------
+ Beschreibung: DTOR
+------------------------------------------------------------------------*/
+
+
+SwGlossaries::~SwGlossaries()
+{
+ sal_uInt16 nCount = pGlosArr? pGlosArr->Count() : 0;
+ for(sal_uInt16 i = 0; i < nCount; ++i)
+ {
+ String *pTmp = (*pGlosArr)[i];
+ delete pTmp;
+ }
+ nCount = pPathArr? pPathArr->Count() : 0;
+ for(i = 0; i < nCount; ++i)
+ {
+ String *pTmp = (*pPathArr)[i];
+ delete pTmp;
+ }
+ delete pGlosArr;
+ delete pPathArr;
+ nCount = aGlosGroupArr.Count();
+ for(i = 0; i < nCount; ++i)
+ {
+ text::XAutoTextGroup* pGroup = aGlosGroupArr.GetObject(i)->get();
+ ((SwXAutoTextGroup*)pGroup)->Invalidate();
+ }
+ nCount = aGlosEntryArr.Count();
+ for(i = 0; i < nCount; ++i)
+ {
+ uno::Reference< uno::XInterface > * pxEntry = aGlosEntryArr.GetObject(i);
+ uno::Reference< lang::XUnoTunnel > xTunnel(*pxEntry, uno::UNO_QUERY);
+ DBG_ASSERT(xTunnel.is(), "No tunnel for SwXAutoTextEntry?");
+ SwXAutoTextEntry* pEntry =
+ (SwXAutoTextEntry*)xTunnel->getSomething(SwXAutoTextEntry::getUnoTunnelId());
+ pEntry->Invalidate();
+ }
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Bausteindokument einlesen
+------------------------------------------------------------------------*/
+
+
+SwTextBlocks* SwGlossaries::GetGlosDoc( const String &rName, sal_Bool bCreate ) const
+{
+ sal_uInt16 nPath = rName.GetToken(1, GLOS_DELIM).ToInt32();
+ SwTextBlocks *pTmp = 0;
+ if(nPath < pPathArr->Count())
+ {
+ String sFileURL(*(*pPathArr)[nPath]);
+ String aTmp( rName.GetToken(0, GLOS_DELIM));
+ aTmp.AppendAscii(pGlosExt);
+ sFileURL += INET_PATH_TOKEN;
+ sFileURL += aTmp;
+
+ BOOL bExist = FALSE;
+ if(!bCreate)
+ {
+ try
+ {
+ ::ucb::Content aTestContent(sFileURL,
+ uno::Reference< XCommandEnvironment >());
+ bExist = aTestContent.isDocument();
+ }
+ catch(...)
+ {
+ bExist = FALSE;
+ }
+ }
+
+ if (bCreate || bExist)
+ {
+ pTmp = new SwTextBlocks( sFileURL );
+ sal_Bool bOk = sal_True;
+ if( pTmp->GetError() )
+ {
+ ErrorHandler::HandleError( pTmp->GetError() );
+ bOk = !IsError( pTmp->GetError() );
+ }
+
+ if( bOk && !pTmp->GetName().Len() )
+ pTmp->SetName( rName );
+ }
+ }
+
+ return pTmp;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Zugriff auf die Liste der Name; diese wird gfs. eingelesen
+------------------------------------------------------------------------*/
+
+
+SvStrings* SwGlossaries::GetNameList()
+{
+ if(!pGlosArr)
+ {
+ pGlosArr = new SvStrings;
+ for(sal_uInt16 i = 0; i < pPathArr->Count(); i++)
+ {
+ try
+ {
+ ::ucb::Content aCnt(*(*pPathArr)[i],
+ uno::Reference< XCommandEnvironment >());
+ Reference< sdbc::XResultSet > xResultSet;
+ Sequence< OUString > aProps(1);
+ OUString* pProps = aProps.getArray();
+ pProps[ 0 ] = OUString::createFromAscii( "Title" );
+ try
+ {
+ xResultSet = aCnt.createCursor(
+ aProps, ::ucb::INCLUDE_DOCUMENTS_ONLY );
+ }
+ catch ( Exception )
+ {
+ DBG_ERRORFILE( "create cursor failed!" );
+ }
+
+ if ( aCnt.isFolder() && xResultSet.is() )
+ {
+ Reference< sdbc::XRow > xRow( xResultSet, UNO_QUERY );
+ Reference< XContentAccess >
+ xContentAccess( xResultSet, UNO_QUERY );
+ try
+ {
+ if ( xResultSet->first() )
+ {
+ do
+ {
+// OUString sId( xContentAccess->queryContentIdentfierString() );
+ // an den Gruppennamen wird der Pfad-Index angehaengt
+ // damit spaeter richtig zugegriffen werden kann
+ String sTitle = xRow->getString( 1 );
+ String sExt;
+ if(sTitle.Len() > 4) //length of ".bau"
+ {
+ String sExt = sTitle.Copy( sTitle.Len() - 4, 4);
+ if(sExt.EqualsIgnoreCaseAscii(pGlosExt))
+ {
+ sTitle.Erase( sTitle.Len() - 4, 4);
+ sTitle += GLOS_DELIM;
+ sTitle += String::CreateFromInt32(i);
+ String *pTitle = new String(sTitle);
+ pGlosArr->Insert(pTitle, pGlosArr->Count());
+ }
+ }
+ }
+ while ( xResultSet->next() );
+ }
+ }
+ catch ( ... )
+ {
+ DBG_ERRORFILE( "Exception caught!" );
+ }
+ }
+ }
+ catch ( ... )
+ {
+ DBG_ERRORFILE( "Exception caught!" );
+ }
+ }
+
+ if(!pGlosArr->Count())
+ {
+ // Der Standard-Baustein steht im ersten Teil des Pfades
+ String *pTmp = new String(C2S(pDefName));
+ (*pTmp) += GLOS_DELIM;
+ (*pTmp) += '0';
+ pGlosArr->Insert(pTmp, pGlosArr->Count());
+ }
+ }
+ return pGlosArr;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: CTOR
+------------------------------------------------------------------------*/
+
+
+SwGlossaries::SwGlossaries() :
+ pGlosArr(0),
+ pPathArr(0)
+{
+ pPathArr = new SvStrings;
+ UpdateGlosPath(sal_True);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Neuen Pfad einstellen und internes Array neu aufbauen
+------------------------------------------------------------------------*/
+
+/* -----------------21.01.99 15:36-------------------
+* #61050# Doppelte Pfade fuehren zu Verwirrung - als raus damit
+ * --------------------------------------------------*/
+sal_Bool lcl_FindSameEntry(const SvStrings& rDirArr, const String& rEntryURL)
+{
+ sal_uInt16 nSize = rDirArr.Count();
+ for(sal_uInt16 i = 0; i < rDirArr.Count(); i++)
+ if(rEntryURL == (*rDirArr.GetObject(i)))
+ return sal_True;
+ return sal_False;
+}
+
+void SwGlossaries::UpdateGlosPath(sal_Bool bFull)
+{
+ String aNewPath( SFX_INIMANAGER()->Get( SFX_KEY_GLOSSARY_PATH ) );
+ sal_Bool bPathChanged = aPath != aNewPath;
+ if (bFull || bPathChanged)
+ {
+ aPath = aNewPath;
+ sal_uInt16 nCount = pPathArr? pPathArr->Count() : 0;
+ for(sal_uInt16 i = nCount; i; --i)
+ {
+ String *pTmp = (*pPathArr)[i - 1];
+ pPathArr->Remove(i - 1);
+ delete pTmp;
+ }
+ String sErrPath;
+ sal_uInt16 nTokenCount = aPath.GetTokenCount(SFX_SEARCHPATH_DELIMITER);
+ SvStrings aDirArr;
+ for( i = 0; i < nTokenCount; i++ )
+ {
+ String sPth(aPath.GetToken(i, SFX_SEARCHPATH_DELIMITER));
+ sPth = URIHelper::SmartRelToAbs(sPth);
+
+ if(i && lcl_FindSameEntry(aDirArr, sPth))
+ {
+ continue;
+ }
+ aDirArr.Insert(new String(sPth), aDirArr.Count());
+ BOOL bExists = FALSE;
+ try
+ {
+ ::ucb::Content aTestContent(sPth, uno::Reference< XCommandEnvironment >());
+ bExists = aTestContent.isFolder();
+ }
+ catch(...)
+ {
+ DBG_ERROR("exception <getPropertyValue(IsFolder)>")
+ }
+
+ if(!bExists)
+ {
+ if(sErrPath.Len())
+ sErrPath += SFX_SEARCHPATH_DELIMITER;
+ INetURLObject aTemp(sPth);
+ sErrPath += aTemp.GetFull();
+
+ }
+ else
+ pPathArr->Insert(new String(sPth), pPathArr->Count());
+ }
+ aDirArr.DeleteAndDestroy(0, aDirArr.Count());
+
+ if(!nTokenCount ||
+ sErrPath.Len() && (bPathChanged || sOldErrPath != sErrPath) )
+ {
+ sOldErrPath = sErrPath;
+ // Falscher Pfad, d.h. AutoText-Verzeichnis existiert nicht
+
+ ErrorHandler::HandleError( *new StringErrorInfo(
+ ERR_AUTOPATH_ERROR, sErrPath,
+ ERRCODE_BUTTON_OK | ERRCODE_MSG_ERROR ));
+ bError = sal_True;
+ }
+ else
+ bError = sal_False;
+
+ if(pGlosArr)
+ {
+ const sal_uInt16 nCount = pGlosArr->Count();
+ for(sal_uInt16 i = 0; i < nCount; ++i)
+ {
+ delete (String *)(*pGlosArr)[i];
+ }
+ DELETEZ(pGlosArr);
+ GetNameList();
+ }
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+void SwGlossaries::ShowError()
+{
+ sal_uInt32 nPathError = *new StringErrorInfo(ERR_AUTOPATH_ERROR,
+ sErrPath, ERRCODE_BUTTON_OK );
+ ErrorHandler::HandleError( nPathError );
+}
+/* -----------------------------09.02.00 11:37--------------------------------
+
+ ---------------------------------------------------------------------------*/
+String SwGlossaries::GetExtension()
+{
+ return C2S(aExt);
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.115 2000/09/18 16:05:56 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.114 2000/08/08 10:37:27 os
+ #77403# rename of AutoText category repaired
+
+ Revision 1.113 2000/08/08 10:14:48 os
+ ucb transfer command used
+
+ Revision 1.112 2000/08/07 08:52:02 os
+ #77227# '_' allowed in glossary names
+
+ Revision 1.111 2000/07/20 15:24:37 jp
+ Bug #77040#: don't create references with stack objects, must always created on the heap
+
+ Revision 1.110 2000/07/13 13:39:40 os
+ #76805# ignore case of .bau extension
+
+ Revision 1.109 2000/06/26 13:16:26 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.108 2000/06/20 14:51:24 os
+ SUPD removed
+
+ Revision 1.107 2000/06/13 09:57:14 os
+ using UCB
+
+ Revision 1.106 2000/06/08 09:47:32 os
+ using UCB
+
+ Revision 1.105 2000/06/07 13:27:12 os
+ using UCB
+
+ Revision 1.104 2000/05/23 19:22:29 jp
+ Bugfixes for Unicode
+
+ Revision 1.103 2000/05/19 12:08:36 os
+ appending of indices corrected
+
+ Revision 1.102 2000/04/18 15:08:17 os
+ UNICODE
+
+ Revision 1.101 2000/03/23 07:49:13 os
+ UNO III
+
+ Revision 1.100 2000/03/06 08:43:31 os
+ #70359# renames glossary groups: return corrected group name
+
+ Revision 1.99 2000/02/22 13:26:49 os
+ #73271# always append path index
+
+ Revision 1.98 2000/02/14 14:40:48 os
+ #70473# Unicode
+
+ Revision 1.97 2000/02/10 10:34:32 os
+ #70359# titles added to AutoText groups
+
+ Revision 1.96 1999/10/21 17:48:55 jp
+ have to change - SearchFile with SfxIniManager, dont use SwFinder for this
+
+ Revision 1.95 1999/07/21 14:12:06 JP
+ Bug #67779#: set any MsgBoxType at the StringErrorInfo
+
+
+ Rev 1.94 21 Jul 1999 16:12:06 JP
+ Bug #67779#: set any MsgBoxType at the StringErrorInfo
+
+ Rev 1.93 09 Feb 1999 10:47:04 OS
+ #61205# AutoText-Gruppen koennen beliebige Namen erhalten
+
+ Rev 1.92 25 Jan 1999 13:40:16 HR
+ Insert() jetzt richtig
+
+ Rev 1.91 25 Jan 1999 13:26:44 OS
+ #61050# C40_INSERT
+
+ Rev 1.90 21 Jan 1999 15:45:40 OS
+ #61050# doppelte Pfade abfangen
+
+ Rev 1.89 10 Dec 1998 15:57:06 OS
+ #56371# TF_ONE51 Zwischenstand
+
+ Rev 1.88 27 Nov 1998 13:57:38 OS
+ #59548# illegales Sonderzeichen entfernt
+
+ Rev 1.87 24 Nov 1998 08:54:42 OS
+ #59548# AutoText-Gruppen umbenennbar
+
+ Rev 1.86 19 Jun 1998 16:34:58 OS
+ GetGroupName liefert String, nicht UString
+
+ Rev 1.85 19 Jun 1998 14:55:26 MH
+ add: cast
+
+ Rev 1.84 18 Jun 1998 18:17:42 OS
+ Array fuer Textbausteine
+
+ Rev 1.83 16 Jun 1998 16:49:36 OS
+ AutoText-interface verbessert
+
+ Rev 1.82 27 May 1998 17:08:18 OM
+ Uno ::com::sun::star::text::AutoTextContainer
+
+ Rev 1.81 17 Feb 1998 14:29:42 RG
+ Mac: sysdep raus
+
+ Rev 1.80 16 Dec 1997 18:14:18 JP
+ GetSearchDelim gegen SFX_SEARCH_DELIMITER ausgetauscht
+
+ Rev 1.79 28 Nov 1997 19:57:08 MA
+ includes
+
+ Rev 1.78 24 Nov 1997 16:47:46 MA
+ includes
+
+ Rev 1.77 03 Nov 1997 13:22:40 MA
+ precomp entfernt
+
+ Rev 1.76 10 Oct 1997 12:28:38 OS
+ vollstaendige Pfadpruefung
+
+ Rev 1.75 07 Oct 1997 07:28:56 OS
+ Path-Index ueberpruefen #44360#
+
+ Rev 1.74 26 Aug 1997 16:02:16 TRI
+ VCL Anpassungen
+
+ Rev 1.73 30 Jul 1997 18:33:30 HJS
+ includes
+
+ Rev 1.72 30 Jul 1997 11:27:32 OM
+ #41772# Bereich einfuegen und sofort wieder loeschen
+
+ Rev 1.71 17 Jun 1997 10:16:18 OS
+ Leerstring als AutoText-Pfad ueberleben
+
+ Rev 1.70 10 Jun 1997 14:38:52 OS
+ AutoText aus mehreren Verzeichnissen
+
+ Rev 1.69 23 Oct 1996 13:49:30 JP
+ SVMEM -> SVSTDARR Umstellung
+
+ Rev 1.68 18 Oct 1996 13:49:04 JP
+ GetGlosDoc: defaultetes Flag entfernt
+
+ Rev 1.67 26 Sep 1996 20:24:58 HJS
+ del: pDBAddress und aDBAddress
+
+ Rev 1.66 26 Sep 1996 16:59:14 OS
+ +default-Extension fuer Autotexte in swtypes
+
+ Rev 1.65 30 Aug 1996 12:38:34 OS
+ UpdateGlosPath kann Blockliste aktualisieren
+
+ Rev 1.64 28 Aug 1996 14:12:16 OS
+ includes
+
+ Rev 1.63 03 Jul 1996 13:11:32 OS
+ UpdateGlosPath: Ohne das Array zu loeschen, wird es nichts
+
+ Rev 1.62 19 Jun 1996 12:32:38 OM
+ Umstellung auf 323
+
+ Rev 1.61 14 Dec 1995 23:00:38 JP
+ Filter Umstellung: ErrorHandling und Read/Write-Parameter
+
+ Rev 1.60 13 Dec 1995 17:19:48 MA
+ opt: International
+
+ Rev 1.59 30 Nov 1995 16:26:08 JP
+ Umstellung SV304 - ErrorHandling
+
+ Rev 1.58 24 Nov 1995 16:58:48 OM
+ PCH->PRECOMPILED
+
+ Rev 1.57 16 Nov 1995 18:45:36 OM
+ Methoden zur Fehlerbehandlung
+
+ Rev 1.56 26 Oct 1995 18:08:40 JP
+ Umstellung auf SfxErrorHandler
+
+ Rev 1.55 03 Oct 1995 10:16:20 JP
+ FAR_DATA auf den String und nicht auf den Pointer
+
+ Rev 1.54 07 Sep 1995 07:21:16 OS
+ ',' in PM2-ifdef
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/misc/glossary.cxx b/sw/source/ui/misc/glossary.cxx
new file mode 100644
index 000000000000..26c582d97a12
--- /dev/null
+++ b/sw/source/ui/misc/glossary.cxx
@@ -0,0 +1,1433 @@
+/*************************************************************************
+ *
+ * $RCSfile: glossary.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define _SVSTDARR_STRINGSDTOR
+#define _SVSTDARR_STRINGS
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+
+#ifndef _MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _HELP_HXX //autogen
+#include <vcl/help.hxx>
+#endif
+#ifndef _SVSTDARR_HXX
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXINIMGR_HXX //autogen
+#include <svtools/iniman.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFX_INIMGR_HXX //autogen
+#include <sfx2/inimgr.hxx>
+#endif
+#ifndef _IODLG_HXX
+#include <sfx2/iodlg.hxx>
+#endif
+#ifndef _SFX_FCONTNR_HXX
+#include <sfx2/fcontnr.hxx>
+#endif
+#ifndef _SVX_MULTIPAT_HXX //autogen
+#include <svx/multipat.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _OFAACCFG_HXX //autogen
+#include <offmgr/ofaaccfg.hxx>
+#endif
+
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+#ifndef _UNOCRSR_HXX //autogen wg. SwUnoCrsr
+#include <unocrsr.hxx>
+#endif
+#ifndef _UNOTOOLS_HXX
+#include <unotools.hxx>
+#endif
+#ifndef _UNOOBJ_HXX
+#include <unoobj.hxx>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+#ifndef _UCBHELPER_CONTENT_HXX
+#include <ucbhelper/content.hxx>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XAUTOTEXTGROUP_HPP_
+#include <com/sun/star/text/XAutoTextGroup.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XAUTOTEXTENTRY_HPP_
+#include <com/sun/star/text/XAutoTextEntry.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XAUTOTEXTCONTAINER_HPP_
+#include <com/sun/star/text/XAutoTextContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSINGLESERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _UNOTOOLS_CHARCLASS_HXX
+#include <unotools/charclass.hxx>
+#endif
+
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _BASESH_HXX
+#include <basesh.hxx>
+#endif
+#ifndef _GLOSSARY_HXX
+#include <glossary.hxx>
+#endif
+#ifndef _GLOSHDL_HXX
+#include <gloshdl.hxx>
+#endif
+#ifndef _GLOSBIB_HXX
+#include <glosbib.hxx>
+#endif
+#ifndef _INITUI_HXX
+#include <initui.hxx> // fuer ::GetGlossaries()
+#endif
+#ifndef _GLOSDOC_HXX
+#include <glosdoc.hxx>
+#endif
+#ifndef _MACASSGN_HXX
+#include <macassgn.hxx>
+#endif
+#ifndef _SWEVENT_HXX
+#include <swevent.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _SWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _MISC_HRC
+#include <misc.hrc>
+#endif
+#ifndef _GLOSSARY_HRC
+#include <glossary.hrc>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _MODOPT_HXX
+#include <modcfg.hxx>
+#endif
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+
+#define LONG_LENGTH 60
+#define SHORT_LENGTH 30
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::ucb;
+using namespace ::utl;
+using namespace ::ucb;
+using namespace ::rtl;
+
+/* -----------------------------08.02.00 10:28--------------------------------
+
+ ---------------------------------------------------------------------------*/
+struct GroupUserData
+{
+ String sGroupName;
+ sal_uInt16 nPathIdx;
+ BOOL bReadonly;
+
+ GroupUserData()
+ : nPathIdx(0),
+ bReadonly(FALSE) {}
+};
+
+/*------------------------------------------------------------------------
+ Beschreibung: Dialog fuer neuen Bausteinnamen
+------------------------------------------------------------------------*/
+class SwNewGlosNameDlg : public ModalDialog
+{
+ FixedText aNNFT;
+ Edit aNewName;
+ FixedText aNSFT;
+ NoSpaceEdit aNewShort;
+ OKButton aOk;
+ CancelButton aCancel;
+ GroupBox aGrp;
+ FixedText aONFT;
+ Edit aOldName;
+ FixedText aOSFT;
+ Edit aOldShort;
+
+protected:
+ DECL_LINK( Modify, Edit * );
+ DECL_LINK( Rename, Button * );
+
+public:
+ SwNewGlosNameDlg( Window* pParent,
+ const String& rOldName,
+ const String& rOldShort );
+
+ String GetNewName() const { return aNewName.GetText(); }
+ String GetNewShort() const { return aNewShort.GetText(); }
+};
+
+SwNewGlosNameDlg::SwNewGlosNameDlg(Window* pParent,
+ const String& rOldName,
+ const String& rOldShort ) :
+ ModalDialog( pParent, SW_RES( DLG_RENAME_GLOS ) ),
+ aOk (this, SW_RES( BT_OKNEW)),
+ aCancel (this, SW_RES( BT_CANCEL)),
+ aONFT (this, SW_RES( FT_ON )),
+ aOSFT (this, SW_RES( FT_OS )),
+ aNNFT (this, SW_RES( FT_NN )),
+ aNSFT (this, SW_RES( FT_NS )),
+ aOldName(this, SW_RES( ED_ON )),
+ aOldShort(this,SW_RES( ED_OS )),
+ aNewName(this, SW_RES( ED_NN )),
+ aNewShort(this,SW_RES( ED_NS )),
+ aGrp (this, SW_RES( GB_NN ))
+{
+ FreeResource();
+ aOldName.SetText( rOldName );
+ aOldShort.SetText( rOldShort );
+ aNewShort.SetMaxTextLen(SHORT_LENGTH);
+ aNewName.SetMaxTextLen(LONG_LENGTH);
+ aNewName.SetModifyHdl(LINK(this, SwNewGlosNameDlg, Modify ));
+ aNewShort.SetModifyHdl(LINK(this, SwNewGlosNameDlg, Modify ));
+ aOk.SetClickHdl(LINK(this, SwNewGlosNameDlg, Rename ));
+ aNewName.GrabFocus();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: aktuell eingestellte Gruppe erfragen / setzen
+------------------------------------------------------------------------*/
+
+String SwGlossaryDlg::GetCurrGroup()
+{
+ if( pCurrGlosGroup && pCurrGlosGroup->Len() )
+ return *pCurrGlosGroup;
+ return SwGlossaries::GetDefName();
+}
+
+
+
+void SwGlossaryDlg::SetActGroup(const String &rGrp)
+{
+ if( !pCurrGlosGroup )
+ pCurrGlosGroup = new String;
+ *pCurrGlosGroup = rGrp;
+}
+
+
+
+SwGlossaryDlg::SwGlossaryDlg(SfxViewFrame* pViewFrame,
+ SwGlossaryHdl * pGlosHdl, SwWrtShell *pWrtShell) :
+
+ SvxStandardDialog(&pViewFrame->GetWindow(), SW_RES(DLG_GLOSSARY)),
+ aExampleGB (this, SW_RES(GB_EXAMPLE )),
+ aExampleWIN (this, SW_RES(WIN_EXAMPLE )),
+ aShowExampleCB(this, SW_RES(CB_SHOW_EXAMPLE )),
+ aInsertTipCB (this, SW_RES(CB_INSERT_TIP)),
+ aNameLbl (this, SW_RES(FT_NAME)),
+ aNameED (this, SW_RES(ED_NAME)),
+ aShortNameLbl (this, SW_RES(FT_SHORTNAME)),
+ aShortNameEdit(this, SW_RES(ED_SHORTNAME)),
+ aCategoryBox (this, SW_RES(LB_BIB)),
+ aGlossaryFrm (this, SW_RES(GB_GLOSSARY)),
+ aFileRelCB (this, SW_RES(CB_FILE_REL)),
+ aNetRelCB (this, SW_RES(CB_NET_REL)),
+ aRelativeGB (this, SW_RES(GB_RELATIVE)),
+ aInsertBtn (this, SW_RES(PB_INSERT)),
+ aEditBtn (this, SW_RES(PB_EDIT)),
+ aBibBtn (this, SW_RES(PB_BIB)),
+ aPathBtn (this, SW_RES(PB_PATH)),
+ aCloseBtn (this, SW_RES(PB_CLOSE)),
+ aHelpBtn (this, SW_RES(PB_HELP)),
+ sReadonlyPath (SW_RES(ST_READONLY_PATH)),
+ pMenu (new PopupMenu(SW_RES(MNU_EDIT))),
+ pGlossaryHdl (pGlosHdl),
+ pSh (pWrtShell),
+ pExampleFrame(0),
+ bSelection( pWrtShell->IsSelection() ),
+ bReadOnly( sal_False ),
+ bIsOld( sal_False ),
+ bIsDocReadOnly(sal_False)
+{
+ // Static-Pointer initialisieren
+ if( !pCurrGlosGroup )
+ pCurrGlosGroup = new String;//(SwGlossaries::GetDefName());
+
+ pMenu->SetActivateHdl(LINK(this,SwGlossaryDlg,EnableHdl));
+ pMenu->SetSelectHdl(LINK(this,SwGlossaryDlg,MenuHdl));
+ aEditBtn.SetPopupMenu(pMenu);
+ aEditBtn.SetSelectHdl(LINK(this,SwGlossaryDlg,EditHdl));
+ aPathBtn.SetClickHdl(LINK(this, SwGlossaryDlg, PathHdl));
+
+ aNameED.SetModifyHdl(LINK(this,SwGlossaryDlg,NameModify));
+ aShortNameEdit.SetModifyHdl(LINK(this,SwGlossaryDlg,NameModify));
+
+ aCategoryBox.SetDoubleClickHdl(LINK(this,SwGlossaryDlg, NameDoubleClick));
+ aCategoryBox.SetSelectHdl(LINK(this,SwGlossaryDlg,GrpSelect));
+ aBibBtn.SetClickHdl(LINK(this,SwGlossaryDlg,BibHdl));
+ aShowExampleCB.SetClickHdl(LINK(this, SwGlossaryDlg, ShowPreviewHdl));
+
+ aShortNameEdit.SetMaxTextLen(SHORT_LENGTH);
+ aNameED.SetMaxTextLen(LONG_LENGTH);
+ FreeResource();
+
+ aShowExampleCB.Check( SW_MOD()->GetModuleConfig()->IsShowAutoTextPreview());
+ ShowPreviewHdl(&aShowExampleCB);
+
+ bIsDocReadOnly = pSh->GetView().GetDocShell()->IsReadOnly() ||
+ pSh->HasReadonlySel();
+ if( bIsDocReadOnly )
+ aInsertBtn.Enable(sal_False);
+ aNameED.GrabFocus();
+ aCategoryBox.SetHelpId(HID_MD_GLOS_CATEGORY);
+ aCategoryBox.SetWindowBits(WB_HASBUTTONS|WB_HASBUTTONSATROOT|WB_HSCROLL|WB_VSCROLL|WB_CLIPCHILDREN|WB_SORT);
+ aCategoryBox.GetModel()->SetSortMode(SortAscending);
+ aCategoryBox.SetHighlightRange(); // ueber volle Breite selektieren
+ Bitmap aRootClosed (SW_RES(BMP_ROOT_CLOSED));
+ Bitmap aRootOpened (SW_RES(BMP_ROOT_OPENED));
+ aCategoryBox.SetNodeBitmaps( aRootClosed, aRootOpened );
+
+ Init();
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwGlossaryDlg::~SwGlossaryDlg()
+{
+ SW_MOD()->GetModuleConfig()->SetShowAutoTextPreview(aShowExampleCB.IsChecked());
+ aCategoryBox.Clear();
+ aEditBtn.SetPopupMenu(0);
+ delete pMenu;
+ delete pExampleFrame;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Auswahl neue Gruppe
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwGlossaryDlg, GrpSelect, SvTreeListBox *, pBox )
+{
+ SvLBoxEntry* pEntry = pBox->FirstSelected();
+ if(!pEntry)
+ return 0;
+ SvLBoxEntry* pParent = pBox->GetParent(pEntry) ? pBox->GetParent(pEntry) : pEntry;
+ GroupUserData* pGroupData = (GroupUserData*)pParent->GetUserData();
+ (*pCurrGlosGroup) = pGroupData->sGroupName;
+ (*pCurrGlosGroup) += GLOS_DELIM;
+ (*pCurrGlosGroup) += String::CreateFromInt32(pGroupData->nPathIdx);
+ pGlossaryHdl->SetCurGroup(*pCurrGlosGroup);
+ const sal_uInt16 nCount = pGlossaryHdl->GetGlossaryCnt();
+ // Aktuellen Textbaustein setzen
+ bReadOnly = pGlossaryHdl->IsReadOnly();
+ EnableShortName( !bReadOnly );
+ aEditBtn.Enable(!bReadOnly);
+ bIsOld = pGlossaryHdl->IsOld();
+ if( pParent != pEntry)
+ {
+ String aName(pBox->GetEntryText(pEntry));
+ aNameED.SetText(aName);
+ aShortNameEdit.SetText(*(String*)pEntry->GetUserData());
+ pEntry = pBox->GetParent(pEntry);
+ aInsertBtn.Enable( !bIsDocReadOnly);
+ ShowAutoText(*pCurrGlosGroup, aShortNameEdit.GetText());
+ }
+ else
+ ShowAutoText(aEmptyStr, aEmptyStr);
+ //Controls aktualisieren
+ NameModify(&aShortNameEdit);
+ return 0;
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwGlossaryDlg::Apply()
+{
+ const String aGlosName(aShortNameEdit.GetText());
+ if(aGlosName.Len()) pGlossaryHdl->InsertGlossary(aGlosName);
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+/* inline */ void SwGlossaryDlg::EnableShortName(sal_Bool bOn)
+{
+ aShortNameLbl.Enable(bOn);
+ aShortNameEdit.Enable(bOn);
+}
+
+/* -----------------26.11.98 16:15-------------------
+ * existiert der Titel in der ausgewaehlten Gruppe?
+ * --------------------------------------------------*/
+SvLBoxEntry* SwGlossaryDlg::DoesBlockExist(const String& rBlock,
+ const String& rShort)
+{
+ //evtl. vorhandenen Eintrag in der TreeListBox suchen
+ SvLBoxEntry* pEntry = aCategoryBox.FirstSelected();
+ DBG_ASSERT(pEntry, "keine Selektion?")
+ if(aCategoryBox.GetParent(pEntry))
+ pEntry = aCategoryBox.GetParent(pEntry);
+ sal_uInt32 nChildCount = aCategoryBox.GetChildCount( pEntry );
+ for(sal_uInt32 i = 0; i < nChildCount; i++)
+ {
+ SvLBoxEntry* pChild = aCategoryBox.GetEntry( pEntry, i );
+ if(rBlock == aCategoryBox.GetEntryText(pChild) &&
+ (!rShort.Len() || rShort == *(String*)pChild->GetUserData()))
+ {
+ return pChild;
+ }
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwGlossaryDlg, NameModify, Edit *, pEdit )
+{
+ String aName(aNameED.GetText());
+ sal_Bool bNameED = pEdit == &aNameED;
+ if( !aName.Len() )
+ {
+ if(bNameED)
+ aShortNameEdit.SetText(aName);
+ aInsertBtn.Enable(sal_False);
+ return 0;
+ }
+ String sShortSearch;
+ if(!bNameED)
+ sShortSearch = pEdit->GetText();
+ sal_Bool bNotFound = !DoesBlockExist(aName, sShortSearch);
+ if(bNameED)
+ {
+ // ist der Text durch einen Klick in die Listbox in das
+ // Edit gekommem?
+ if(bNotFound)
+ {
+ sal_uInt16 nSz = aName.Len();
+ sal_uInt16 nStart = 1;
+ while( aName.GetChar( nStart-1 ) == ' ' && nStart < nSz )
+ nStart++;
+ String aBuf( aName.GetChar( nStart-1 ));
+ for( nStart ; nStart < nSz; ++nStart )
+ {
+ if( aName.GetChar( nStart-1 ) == ' ' && aName.GetChar( nStart ) != ' ')
+ aBuf += aName.GetChar( nStart );
+ }
+ aShortNameEdit.SetText(aBuf);
+ EnableShortName();
+ }
+ else
+ {
+ aShortNameEdit.SetText(pGlossaryHdl->GetGlossaryShortName(aName));
+ EnableShortName(!bReadOnly);
+ }
+ aInsertBtn.Enable(!bNotFound && !bIsDocReadOnly);
+ }
+ else
+ {
+ //ShortNameEdit
+ if(!bNotFound)
+ {
+ sal_Bool bEnable = !bNotFound;
+ bEnable &= !bIsDocReadOnly;
+ aInsertBtn.Enable(bEnable);
+ }
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK_INLINE_START( SwGlossaryDlg, NameDoubleClick, SvTreeListBox*, pBox )
+{
+ SvLBoxEntry* pEntry = pBox->FirstSelected();
+ if(pBox->GetParent(pEntry) && !bIsDocReadOnly)
+ EndDialog( RET_OK );
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwGlossaryDlg, NameDoubleClick, SvTreeListBox*, EMPTYARG )
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwGlossaryDlg, EnableHdl, Menu *, pMn )
+{
+ const String aEditText(aNameED.GetText());
+ const sal_Bool bHasEntry = aEditText.Len() && aShortNameEdit.GetText().Len();
+ const sal_Bool bExists = 0 != DoesBlockExist(aEditText, aShortNameEdit.GetText());
+ pMn->EnableItem(FN_GL_DEFINE, bSelection && bHasEntry && !bExists);
+ pMn->EnableItem(FN_GL_DEFINE_TEXT, bSelection && bHasEntry && !bExists);
+ pMn->EnableItem(FN_GL_COPY_TO_CLIPBOARD, bExists);
+ pMn->EnableItem(FN_GL_REPLACE, bSelection && bExists && !bIsOld );
+ pMn->EnableItem(FN_GL_EDIT, bExists );
+ pMn->EnableItem(FN_GL_RENAME, bExists && !bIsOld );
+ pMn->EnableItem(FN_GL_DELETE, bExists && !bIsOld );
+ pMn->EnableItem(FN_GL_MACRO, bExists && !bIsOld &&
+ !pGlossaryHdl->IsReadOnly() );
+
+ SvLBoxEntry* pEntry = aCategoryBox.FirstSelected();
+ DBG_ASSERT(pEntry, "keine Selektion?")
+ sal_Bool bEnable = !aCategoryBox.GetParent( pEntry ) && !bIsOld &&
+ !pGlossaryHdl->IsReadOnly();
+ pMn->EnableItem( FN_GL_IMPORT, bEnable );
+ return 1;
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwGlossaryDlg, MenuHdl, Menu *, pMn )
+{
+ sal_Bool bNoAttr = sal_False;
+
+ switch(pMn->GetCurItemId())
+ {
+ case FN_GL_REPLACE:
+ pGlossaryHdl->NewGlossary( aNameED.GetText(),
+ aShortNameEdit.GetText() );
+ break;
+ case FN_GL_DEFINE_TEXT:
+ bNoAttr = sal_True;
+ // Kein break!!!
+ case FN_GL_DEFINE:
+ {
+ const String aStr(aNameED.GetText());
+ const String aShortName(aShortNameEdit.GetText());
+ if(pGlossaryHdl->HasShortName(aShortName))
+ {
+ InfoBox(this, SW_RES(MSG_DOUBLE_SHORTNAME)).Execute();
+ aShortNameEdit.SetSelection(Selection(0, SELECTION_MAX));
+ aShortNameEdit.GrabFocus();
+ break;
+ }
+ if(pGlossaryHdl->NewGlossary(aStr, aShortName, sal_False, bNoAttr ))
+ {
+ SvLBoxEntry* pEntry = aCategoryBox.FirstSelected();
+ if(aCategoryBox.GetParent(pEntry))
+ pEntry = aCategoryBox.GetParent(pEntry);
+
+ SvLBoxEntry* pChild = aCategoryBox.InsertEntry(aStr, pEntry);
+ pChild->SetUserData(new String(aShortName));
+ aNameED.SetText(aStr);
+ aShortNameEdit.SetText(aShortName);
+ NameModify(&aNameED); // fuer Schalten der Buttons
+
+ }
+ }
+ break;
+ case FN_GL_COPY_TO_CLIPBOARD :
+ {
+ pGlossaryHdl->CopyToClipboard(*pSh, aShortNameEdit.GetText());
+ }
+ break;
+ case FN_GL_EDIT:
+ break;
+ case FN_GL_RENAME:
+ {
+ aShortNameEdit.SetText(pGlossaryHdl->GetGlossaryShortName(aNameED.GetText()));
+ SwNewGlosNameDlg* pNewNameDlg = new SwNewGlosNameDlg(this, aNameED.GetText(),
+ aShortNameEdit.GetText() );
+ if(pNewNameDlg->Execute() == RET_OK)
+ {
+ pGlossaryHdl->Rename( aShortNameEdit.GetText(),
+ pNewNameDlg->GetNewShort(),
+ pNewNameDlg->GetNewName());
+ SvLBoxEntry* pEntry = aCategoryBox.FirstSelected();
+ SvLBoxEntry* pNewEntry = aCategoryBox.InsertEntry(
+ pNewNameDlg->GetNewName(), aCategoryBox.GetParent(pEntry));
+ pNewEntry->SetUserData(new String(pNewNameDlg->GetNewShort()));
+ delete (String*)pEntry->GetUserData();
+ aCategoryBox.GetModel()->Remove(pEntry);
+ aCategoryBox.Select(pNewEntry);
+ aCategoryBox.MakeVisible(pNewEntry);
+ }
+ GrpSelect( &aCategoryBox );
+ delete pNewNameDlg;
+ }
+ break;
+ case FN_GL_DELETE:
+ {
+ QueryBox aQuery(this, SW_RES(MSG_QUERY_DELETE));
+ if(RET_YES == aQuery.Execute())
+ {
+ const String aShortName(aShortNameEdit.GetText());
+ const String aTitle(aNameED.GetText());
+ if(aTitle.Len() && pGlossaryHdl->DelGlossary(aShortName))
+ {
+ SvLBoxEntry* pChild = DoesBlockExist(aTitle, aShortName);
+ DBG_ASSERT(pChild, "Eintrag nicht gefunden!")
+ SvLBoxEntry* pParent = aCategoryBox.GetParent(pChild);
+ aCategoryBox.Select(pParent);
+
+ aCategoryBox.GetModel()->Remove(pChild);
+ aNameED.SetText( aEmptyStr );
+ NameModify(&aNameED);
+ }
+ }
+ }
+ break;
+ case FN_GL_MACRO:
+ {
+ SfxItemSet aSet( pSh->GetAttrPool(), RES_FRMMACRO, RES_FRMMACRO );
+
+ SvxMacro aStart(aEmptyStr, aEmptyStr, STARBASIC);
+ SvxMacro aEnd(aEmptyStr, aEmptyStr, STARBASIC);
+ pGlossaryHdl->GetMacros(aShortNameEdit.GetText(), aStart, aEnd );
+
+ SvxMacroItem aItem;
+ if( aStart.GetMacName().Len() )
+ aItem.SetMacro( SW_EVENT_START_INS_GLOSSARY, aStart );
+ if( aEnd.GetMacName().Len() )
+ aItem.SetMacro( SW_EVENT_END_INS_GLOSSARY, aEnd );
+
+ aSet.Put( aItem );
+
+ const SfxPoolItem* pItem;
+ SwMacroAssignDlg aMacDlg( this, aSet, MACASSGN_TEXTBAUST );
+ if( RET_OK == aMacDlg.Execute() &&
+ SFX_ITEM_SET == aMacDlg.GetOutputItemSet()->GetItemState(
+ RES_FRMMACRO, sal_False, &pItem ))
+ {
+ const SvxMacroTableDtor& rTbl = ((SvxMacroItem*)pItem)->GetMacroTable();
+
+ pGlossaryHdl->SetMacros( aShortNameEdit.GetText(),
+ rTbl.Get( SW_EVENT_START_INS_GLOSSARY ),
+ rTbl.Get( SW_EVENT_END_INS_GLOSSARY ) );
+ }
+ }
+ break;
+
+ case FN_GL_IMPORT:
+ {
+ // call the FileOpenDialog do find WinWord - Files with templates
+ SfxFileDialog* pDlg = new SfxFileDialog( this, WB_OPEN | WB_3DLOOK );
+ pDlg->SetPath( SFX_INIMANAGER()->Get( SFX_KEY_WORK_PATH ));
+ String sWW8( C2S(FILTER_WW8) );
+
+ sal_uInt16 i = 0;
+
+ const SfxFactoryFilterContainer* pFltCnt =
+ SwDocShell::Factory().GetFilterContainer();
+ if( pFltCnt )
+ {
+ const SfxFilter* pFilter;
+ sal_uInt16 nCount = pFltCnt->GetFilterCount();
+ for( i = 0; i < nCount; ++i )
+ if( ( pFilter = pFltCnt->GetFilter( i ))
+ /*->IsAllowedAsTemplate()
+ && pFilter*/->GetUserData() == sWW8 )
+ {
+ pDlg->AddFilter( pFilter->GetUIName(),
+ ((WildCard&)pFilter->GetWildcard())(),
+ pFilter->GetTypeName() );
+ pDlg->SetCurFilter( pFilter->GetUIName() );
+ }
+ }
+
+ if( i && RET_OK == pDlg->Execute() )
+ {
+ if( pGlossaryHdl->ImportGlossaries( pDlg->GetPath() ))
+ Init();
+ else
+ {
+ InfoBox(this, SW_RES( MSG_NO_GLOSSARIES )).Execute();
+ }
+ }
+ delete pDlg;
+ }
+ break;
+
+ default:
+ return 0;
+ }
+ return 1;
+}
+/*--------------------------------------------------------------------
+ Beschreibung: Dialog Verwaltung Bereiche
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwGlossaryDlg, BibHdl, Button *, EMPTYARG )
+{
+ SwGlossaries* pGloss = ::GetGlossaries();
+ if( pGloss->IsGlosPathErr() )
+ pGloss->ShowError();
+ else
+ {
+ //check if at least one glossary path is write enabled
+ String sGlosPath( SFX_INIMANAGER()->Get( SFX_KEY_GLOSSARY_PATH ) );
+ USHORT nPaths = sGlosPath.GetTokenCount(';');
+ BOOL bIsWritable = FALSE;
+ for(USHORT nPath = 0; nPath < nPaths; nPath++)
+ {
+ String sPath = URIHelper::SmartRelToAbs(sGlosPath.GetToken(nPath, ';'));
+ try
+ {
+ Content aTestContent( sPath,
+ uno::Reference< XCommandEnvironment >());
+ Any aAny = aTestContent.getPropertyValue( C2U("IsReadOnly") );
+ if(aAny.hasValue())
+ {
+ bIsWritable = !*(sal_Bool*)aAny.getValue();
+ }
+ }
+ catch(...)
+ {}
+ if(bIsWritable)
+ break;
+ }
+ if(bIsWritable)
+ {
+
+ SwGlossaryGroupDlg *pDlg = new SwGlossaryGroupDlg( this, pGloss->GetPathArray(), pGlossaryHdl );
+ if ( RET_OK == pDlg->Execute() )
+ {
+ Init();
+ //if new groups were created - select one of them
+ String sNewGroup = pDlg->GetCreatedGroupName();
+ SvLBoxEntry* pEntry = aCategoryBox.First();
+ while(sNewGroup.Len() && pEntry)
+ {
+ if(!aCategoryBox.GetParent(pEntry))
+ {
+ GroupUserData* pGroupData = (GroupUserData*)pEntry->GetUserData();
+ String sGroup = pGroupData->sGroupName;
+ sGroup += GLOS_DELIM;
+ sGroup += String::CreateFromInt32(pGroupData->nPathIdx);
+ if(sGroup == sNewGroup)
+ {
+ aCategoryBox.Select(pEntry);
+ aCategoryBox.MakeVisible(pEntry);
+ GrpSelect(&aCategoryBox);
+ break;
+ }
+ }
+ pEntry = aCategoryBox.Next(pEntry);
+ }
+
+ }
+ delete pDlg;
+ }
+ else
+ {
+ QueryBox aBox(this, WB_YES_NO, sReadonlyPath);
+ if(RET_YES == aBox.Execute())
+ PathHdl(&aPathBtn);
+ }
+ }
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Initialisierung; aus Ctor und nach Bearbeiten Bereiche
+------------------------------------------------------------------------*/
+
+
+void SwGlossaryDlg::Init()
+{
+ aCategoryBox.SetUpdateMode( sal_False );
+ aCategoryBox.Clear();
+ // Textbausteinbereiche anzeigen
+ const sal_uInt16 nCnt = pGlossaryHdl->GetGroupCnt();
+ SvLBoxEntry* pSelEntry = 0;
+ const String sSelStr(pCurrGlosGroup->GetToken(0, GLOS_DELIM));
+ const sal_uInt16 nSelPath = pCurrGlosGroup->GetToken(1, GLOS_DELIM).ToInt32();
+ for(sal_uInt16 nId = 0; nId < nCnt; ++nId )
+ {
+ String sTitle;
+ String sGroupName(pGlossaryHdl->GetGroupName(nId, &sTitle));
+ if(!sTitle.Len())
+ sTitle = sGroupName.GetToken( 0, GLOS_DELIM );
+ SvLBoxEntry* pEntry = aCategoryBox.InsertEntry( sTitle );
+ sal_uInt16 nPath = sGroupName.GetToken( 1, GLOS_DELIM ).ToInt32();
+
+ GroupUserData* pData = new GroupUserData;
+ pData->sGroupName = sGroupName.GetToken(0, GLOS_DELIM);
+ pData->nPathIdx = nPath;
+ pData->bReadonly = pGlossaryHdl->IsReadOnly(&sGroupName);
+
+ pEntry->SetUserData(pData);
+ if(sSelStr == pData->sGroupName && nSelPath == nPath)
+ pSelEntry = pEntry;
+
+ //Eintraege fuer die Gruppen auffuellen
+ {
+ pGlossaryHdl->SetCurGroup(sGroupName, sal_False, sal_True);
+ const sal_uInt16 nCount = pGlossaryHdl->GetGlossaryCnt();
+ for(sal_uInt16 i = 0; i < nCount; ++i)
+ {
+ String sTitle(pGlossaryHdl->GetGlossaryName(i));
+ SvLBoxEntry* pChild = aCategoryBox.InsertEntry(
+ sTitle, pEntry);
+ pChild->SetUserData(new String(pGlossaryHdl->GetGlossaryShortName(i)));
+ }
+ }
+ }
+ // Aktuelle Gruppe setzen und Textbausteine anzeigen
+ if(!pSelEntry)
+ {
+ //find a non-readonly group
+ SvLBoxEntry* pSearch = aCategoryBox.First();
+ while(pSearch)
+ {
+ if(!aCategoryBox.GetParent(pSearch))
+ {
+ GroupUserData* pData = (GroupUserData*)pSearch->GetUserData();
+ if(!pData->bReadonly)
+ {
+ pSelEntry = pSearch;
+ break;
+ }
+ }
+ pSearch = aCategoryBox.Next(pSearch);
+ }
+ if(!pSelEntry)
+ pSelEntry = aCategoryBox.GetEntry(0);
+ }
+ if(pSelEntry)
+ {
+ aCategoryBox.Expand(pSelEntry);
+ aCategoryBox.Select(pSelEntry);
+ aCategoryBox.MakeVisible(pSelEntry);
+ GrpSelect(&aCategoryBox);
+ }
+ //JP 16.11.99: the SvxTreeListBox has a Bug. The Box dont recalc the
+ // outputsize, when all entries are insertet. The result is, that
+ // the Focus/Highlight rectangle is to large and paintet over the
+ // HScrollbar. -> Fix: call the resize
+ aCategoryBox.Resize();
+
+ aCategoryBox.GetModel()->Resort();
+ aCategoryBox.SetUpdateMode( sal_True );
+ aCategoryBox.Update();
+
+ const OfaAutoCorrCfg* pCfg = OFF_APP()->GetAutoCorrConfig();
+ aFileRelCB.Check( pCfg->IsSaveRelFile() );
+ aFileRelCB.SetClickHdl(LINK(this, SwGlossaryDlg, CheckBoxHdl));
+ aNetRelCB.Check( pCfg->IsSaveRelNet() );
+ aNetRelCB.SetClickHdl(LINK(this, SwGlossaryDlg, CheckBoxHdl));
+ aInsertTipCB.Check( pCfg->IsAutoTextTip() );
+ aInsertTipCB.SetClickHdl(LINK(this, SwGlossaryDlg, CheckBoxHdl));
+}
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK_INLINE_START( SwGlossaryDlg, EditHdl, Button *, EMPTYARG )
+{
+//EndDialog darf nicht im MenuHdl aufgerufen werden
+ if(aEditBtn.GetCurItemId() == FN_GL_EDIT )
+ EndDialog(RET_EDIT);
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwGlossaryDlg, EditHdl, Button *, EMPTYARG )
+
+/*------------------------------------------------------------------------
+ Beschreibung: KeyInput fuer ShortName - Edits ohne Spaces
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwNewGlosNameDlg, Modify, Edit *, pBox )
+{
+ String aName(aNewName.GetText());
+ SwGlossaryDlg* pDlg = (SwGlossaryDlg*)GetParent();
+
+ if( pBox == &aNewName )
+ {
+ if( aName.Len() )
+ aNewShort.SetText( pDlg->pGlossaryHdl->GetValidShortCut( aName ));
+ else
+ aNewShort.SetText(aName);
+ }
+
+ sal_Bool bEnable = aName.Len() && aNewShort.GetText().Len() &&
+ (!pDlg->DoesBlockExist(aName, aNewShort.GetText())
+ || aName == aOldName.GetText());
+ aOk.Enable(bEnable);
+ return 0;
+}
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwNewGlosNameDlg, Rename, Button *, EMPTYARG )
+{
+ SwGlossaryDlg* pDlg = (SwGlossaryDlg*)GetParent();
+ String sNew = aNewShort.GetText();
+ GetAppCharClass().toUpper(sNew);
+ if( pDlg->pGlossaryHdl->HasShortName(aNewShort.GetText())
+ && sNew != aOldShort.GetText() )
+ {
+ InfoBox(this, SW_RES(MSG_DOUBLE_SHORTNAME)).Execute();
+ aNewShort.GrabFocus();
+ }
+ else
+ EndDialog(sal_True);
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwGlossaryDlg, CheckBoxHdl, CheckBox *, pBox )
+{
+ OfaAutoCorrCfg* pCfg = OFF_APP()->GetAutoCorrConfig();
+ sal_Bool bCheck = pBox->IsChecked();
+ if( pBox == &aInsertTipCB )
+ pCfg->SetAutoTextTip(bCheck);
+ else if(pBox == &aFileRelCB)
+ pCfg->SetSaveRelFile(bCheck);
+ else
+ pCfg->SetSaveRelNet(bCheck);
+ return 0;
+}
+
+/* -----------------26.11.98 15:18-------------------
+ * TreeListBox fuer Gruppen und Bausteine
+ * --------------------------------------------------*/
+SwGlTreeListBox::SwGlTreeListBox(Window* pParent, const ResId& rResId) :
+ SvTreeListBox(pParent, rResId),
+ sReadonly (SW_RES(ST_READONLY)),
+ pDragEntry(0)
+{
+ FreeResource();
+ SetDragDropMode( SV_DRAGDROP_CTRL_MOVE|SV_DRAGDROP_CTRL_COPY );
+}
+/* -----------------30.11.98 10:49-------------------
+ *
+ * --------------------------------------------------*/
+void SwGlTreeListBox::Clear()
+{
+ SvLBoxEntry* pEntry = First();
+ while(pEntry)
+ {
+ if(GetParent(pEntry))
+ delete (String*)pEntry->GetUserData();
+ else
+ delete (GroupUserData*)pEntry->GetUserData();
+ pEntry = Next(pEntry);
+ }
+ SvTreeListBox::Clear();
+}
+
+/*-----------------10.06.97 14.52-------------------
+
+--------------------------------------------------*/
+void SwGlTreeListBox::RequestHelp( const HelpEvent& rHEvt )
+{
+ Point aPos( ScreenToOutputPixel( rHEvt.GetMousePosPixel() ));
+ SvLBoxEntry* pEntry = GetEntry( aPos );
+ // Hilfe gibt es nur fuer die Gruppennamen
+ if(pEntry)
+ {
+ SvLBoxTab* pTab;
+ SvLBoxItem* pItem = GetItem( pEntry, aPos.X(), &pTab );
+ if(pItem)
+ {
+ aPos = SvTreeListBox::GetEntryPos( pEntry );
+ Size aSize(pItem->GetSize( this, pEntry ));
+ aPos.X() = GetTabPos( pEntry, pTab );
+
+ if((aPos.X() + aSize.Width()) > GetSizePixel().Width())
+ aSize.Width() = GetSizePixel().Width() - aPos.X();
+ aPos = OutputToScreenPixel(aPos);
+ Rectangle aItemRect( aPos, aSize );
+ String sMsg;
+ if(!GetParent(pEntry))
+ {
+ GroupUserData* pData = (GroupUserData*)pEntry->GetUserData();
+ const SvStrings* pPathArr = ::GetGlossaries()->GetPathArray();
+ if(pPathArr->Count())
+ {
+ sMsg = (*(*pPathArr)[pData->nPathIdx]);
+ sMsg += INET_PATH_TOKEN;
+ sMsg += pData->sGroupName;
+ sMsg += SwGlossaries::GetExtension();
+ INetURLObject aTmp(sMsg);
+ sMsg = aTmp.GetPath();
+
+ if(pData->bReadonly)
+ {
+ sMsg += ' ';
+ sMsg += '(';
+ sMsg += sReadonly;
+ sMsg += ')';
+ }
+
+
+ }
+ }
+ else
+ sMsg = *(String*)pEntry->GetUserData();
+ Help::ShowQuickHelp( this, aItemRect, sMsg,
+ QUICKHELP_LEFT|QUICKHELP_VCENTER );
+ }
+ }
+}
+/* -----------------26.11.98 14:42-------------------
+ *
+ * --------------------------------------------------*/
+DragDropMode SwGlTreeListBox::NotifyBeginDrag( SvLBoxEntry* pEntry)
+{
+ DragDropMode eRet;
+ pDragEntry = pEntry;
+ String sEntry;
+ if(!GetParent(pEntry))
+ eRet = SV_DRAGDROP_NONE;
+ else
+ {
+ SwGlossaryDlg* pDlg = (SwGlossaryDlg*)Window::GetParent();
+ SvLBoxEntry* pParent = GetParent(pEntry);
+
+ GroupUserData* pGroupData = (GroupUserData*)pParent->GetUserData();
+ String sEntry(pGroupData->sGroupName);
+ sEntry += GLOS_DELIM;
+ sEntry += String::CreateFromInt32(pGroupData->nPathIdx);
+ sal_uInt16 nDragOptions = DRAG_COPYABLE;
+ eRet = SV_DRAGDROP_CTRL_COPY;
+ if(!pDlg->pGlossaryHdl->IsReadOnly(&sEntry))
+ {
+ eRet |= SV_DRAGDROP_CTRL_MOVE;
+ nDragOptions |= DRAG_MOVEABLE;
+ }
+ SetDragOptions( nDragOptions );
+ }
+ return eRet;
+}
+/* -----------------27.11.98 09:35-------------------
+ *
+ * --------------------------------------------------*/
+sal_Bool SwGlTreeListBox::NotifyQueryDrop( SvLBoxEntry* pEntry)
+{
+ // TODO: Readonly - Ueberpruefung fehlt noch!
+ SvLBoxEntry* pSrcParent = GetParent(pEntry) ? GetParent(pEntry) : pEntry;
+ SvLBoxEntry* pDestParent =
+ GetParent(pDragEntry ) ? GetParent(pDragEntry ) : pDragEntry ;
+ return pDestParent != pSrcParent;
+
+}
+/* -----------------26.11.98 14:42-------------------
+ *
+ * --------------------------------------------------*/
+sal_Bool SwGlTreeListBox::NotifyMoving( SvLBoxEntry* pTarget,
+ SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent,
+ sal_uInt32& rNewChildPos
+ )
+{
+ pDragEntry = 0;
+ if(!pTarget) //An den Anfang verschieben
+ {
+ pTarget = GetEntry(0);
+ }
+ // 1. wird in verschiedene Gruppen verschoben?
+ // 2. darf in beiden Gruppen geschrieben werden?
+ SvLBoxEntry* pSrcParent = GetParent(pEntry);
+ SvLBoxEntry* pDestParent =
+ GetParent(pTarget) ? GetParent(pTarget) : pTarget;
+ sal_Bool bRet = sal_False;
+ if(pDestParent != pSrcParent)
+ {
+ SwGlossaryDlg* pDlg = (SwGlossaryDlg*)Window::GetParent();
+ SwWait aWait( *pDlg->pSh->GetView().GetDocShell(), sal_True );
+
+ GroupUserData* pGroupData = (GroupUserData*)pSrcParent->GetUserData();
+ String sSourceGroup(pGroupData->sGroupName);
+ sSourceGroup += GLOS_DELIM;
+ sSourceGroup += String::CreateFromInt32(pGroupData->nPathIdx);
+ pDlg->pGlossaryHdl->SetCurGroup(sSourceGroup);
+ String sTitle(GetEntryText(pEntry));
+ String sShortName(*(String*)pEntry->GetUserData());
+
+ GroupUserData* pDestData = (GroupUserData*)pDestParent->GetUserData();
+ String sDestName = pDestData->sGroupName;
+ sDestName += GLOS_DELIM;
+ sDestName += String::CreateFromInt32(pDestData->nPathIdx);
+ bRet = pDlg->pGlossaryHdl->CopyOrMove( sSourceGroup, sShortName,
+ sDestName, sTitle, sal_True );
+ if(bRet)
+ {
+ SvLBoxEntry* pChild = InsertEntry(sTitle, pDestParent);
+ pChild->SetUserData(new String(sShortName));
+ GetModel()->Remove(pEntry);
+ }
+ }
+ return sal_False; //sonst wird der Eintrag automatisch vorgenommen
+}
+/* -----------------26.11.98 14:42-------------------
+ *
+ * --------------------------------------------------*/
+sal_Bool SwGlTreeListBox::NotifyCopying( SvLBoxEntry* pTarget,
+ SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent,
+ sal_uInt32& rNewChildPos
+ )
+{
+ pDragEntry = 0;
+ // 1. wird in verschiedene Gruppen verschoben?
+ // 2. darf in beiden Gruppen geschrieben werden?
+ if(!pTarget) //An den Anfang verschieben
+ {
+ pTarget = GetEntry(0);
+ }
+ SvLBoxEntry* pSrcParent = GetParent(pEntry);
+ SvLBoxEntry* pDestParent =
+ GetParent(pTarget) ? GetParent(pTarget) : pTarget;
+ sal_Bool bRet = sal_False;
+ if(pDestParent != pSrcParent)
+ {
+ SwGlossaryDlg* pDlg = (SwGlossaryDlg*)Window::GetParent();
+ SwWait aWait( *pDlg->pSh->GetView().GetDocShell(), sal_True );
+
+ GroupUserData* pGroupData = (GroupUserData*)pSrcParent->GetUserData();
+ String sSourceGroup(pGroupData->sGroupName);
+ sSourceGroup += GLOS_DELIM;
+ sSourceGroup += String::CreateFromInt32(pGroupData->nPathIdx);
+
+ pDlg->pGlossaryHdl->SetCurGroup(sSourceGroup);
+ String sTitle(GetEntryText(pEntry));
+ String sShortName(*(String*)pEntry->GetUserData());
+
+ GroupUserData* pDestData = (GroupUserData*)pDestParent->GetUserData();
+ String sDestName = pDestData->sGroupName;
+ sDestName += GLOS_DELIM;
+ sDestName += String::CreateFromInt32(pDestData->nPathIdx);
+
+ bRet = pDlg->pGlossaryHdl->CopyOrMove( sSourceGroup, sShortName,
+ sDestName, sTitle, sal_False );
+ if(bRet)
+ {
+ SvLBoxEntry* pChild = InsertEntry(sTitle, pDestParent);
+ pChild->SetUserData(new String(sShortName));
+ }
+ }
+ return sal_False; //sonst wird der Eintrag automatisch vorgenommen
+}
+
+
+/*-----------------10.06.97 15.18-------------------
+
+--------------------------------------------------*/
+String SwGlossaryDlg::GetCurrGrpName() const
+{
+ SvLBoxEntry* pEntry = aCategoryBox.FirstSelected();
+ String sRet;
+ if(pEntry)
+ {
+ pEntry =
+ aCategoryBox.GetParent(pEntry) ? aCategoryBox.GetParent(pEntry) : pEntry;
+ GroupUserData* pGroupData = (GroupUserData*)pEntry->GetUserData();
+ sRet = pGroupData->sGroupName;
+ sRet += GLOS_DELIM;
+ sRet += String::CreateFromInt32(pGroupData->nPathIdx);
+ }
+ return sRet;
+}
+
+/*-----------------11.06.97 08.17-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwGlossaryDlg, PathHdl, Button *, pBtn )
+{
+ SvxMultiPathDialog* pDlg = new SvxMultiPathDialog(pBtn);
+ String sGlosPath( SFX_INIMANAGER()->Get( SFX_KEY_GLOSSARY_PATH ) );
+ pDlg->SetPath(sGlosPath);
+ if(RET_OK == pDlg->Execute())
+ {
+ String sTmp(pDlg->GetPath());
+ if(sTmp != sGlosPath)
+ {
+ SFX_INIMANAGER()->Set(sTmp, SFX_KEY_GLOSSARY_PATH);
+ ::GetGlossaries()->UpdateGlosPath( sal_True );
+ Init();
+ }
+ }
+ delete pDlg;
+ return 0;
+}
+/* -----------------28.07.99 13:48-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK( SwGlossaryDlg, ShowPreviewHdl, CheckBox *, pBox )
+{
+ sal_Bool bCreated = sal_False;
+ if(pBox->IsChecked())
+ {
+ //create example
+ if(!pExampleFrame)
+ {
+ Link aLink(LINK(this, SwGlossaryDlg, PreviewLoadedHdl));
+ pExampleFrame = new SwOneExampleFrame(aExampleWIN, EX_SHOW_ONLINE_LAYOUT, &aLink);
+ bCreated = sal_True;
+ }
+ }
+
+ aExampleWIN.Show(pBox->IsChecked() && !bCreated);
+ if(pCurrGlosGroup)
+ ShowAutoText(*pCurrGlosGroup, aShortNameEdit.GetText());
+
+ return 0;
+};
+/* -----------------18.11.99 17:09-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK( SwGlossaryDlg, PreviewLoadedHdl, void *, EMPTYARG )
+{
+ if(pCurrGlosGroup)
+ ShowAutoText(*pCurrGlosGroup, aShortNameEdit.GetText());
+ aExampleWIN.Show(aShowExampleCB.IsChecked());
+ return 0;
+};
+
+/* -----------------28.07.99 16:28-------------------
+
+ --------------------------------------------------*/
+void SwGlossaryDlg::ShowAutoText(const String& rGroup, const String& rShortName)
+{
+ if(aExampleWIN.IsVisible())
+ {
+ if(!_xAutoText.is())
+ {
+ uno::Reference< lang::XMultiServiceFactory >
+ xMgr = getProcessServiceFactory();
+ //now the AutoText ListBoxes have to be filled
+
+ uno::Reference< uno::XInterface > xAText = xMgr->createInstance( C2U("com.sun.star.text.AutoTextContainer") );
+ _xAutoText = uno::Reference< container::XNameAccess >(xAText, uno::UNO_QUERY);
+ }
+
+ //try to make an Undo()
+ pExampleFrame->ExecUndo();
+ uno::Reference< XTextCursor > & xCrsr = pExampleFrame->GetTextCursor();
+ if(xCrsr.is())
+ {
+ if(rShortName.Len())
+ {
+ uno::Any aGroup = _xAutoText->getByName(rGroup);
+ uno::Reference< XAutoTextGroup > xGroup = *(uno::Reference< XAutoTextGroup > *)aGroup.getValue();
+ OUString uShortName(rShortName);
+ if(xGroup->hasByName(uShortName))
+ {
+ uno::Any aEntry(xGroup->getByName(uShortName));
+ uno::Reference< XAutoTextEntry > xEntry = *(uno::Reference< XAutoTextEntry > *)aEntry.getValue();
+ uno::Reference< XTextRange > xRange(xCrsr, uno::UNO_QUERY);
+ xEntry->applyTo(xRange);
+ }
+ }
+ }
+ }
+}
+/*--------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.154 2000/09/18 16:05:56 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.153 2000/08/31 06:33:07 jp
+ use CharClass instead of international
+
+ Revision 1.152 2000/08/16 07:33:39 os
+ #71166# handling of readonly AutoText groups improved
+
+ Revision 1.151 2000/07/03 08:54:04 jp
+ must changes for VCL
+
+ Revision 1.150 2000/06/07 13:20:47 os
+ using UCB
+
+ Revision 1.149 2000/05/16 17:30:17 jp
+ Changes for Unicode
+
+ Revision 1.148 2000/05/16 09:15:13 os
+ project usr removed
+
+ Revision 1.147 2000/05/10 11:53:43 os
+ Basic API removed
+
+ Revision 1.146 2000/04/19 12:56:35 os
+ include sfx2/filedlg.hxx removed
+
+ Revision 1.145 2000/04/18 15:08:17 os
+ UNICODE
+
+ Revision 1.144 2000/03/23 08:42:49 os
+ UNO III
+
+ Revision 1.143 2000/03/14 10:53:19 os
+ #73958# select non-readonly group after start up
+
+ Revision 1.142 2000/03/06 08:50:43 os
+ #70359# GetGroupName: if no title is set use group name
+
+ Revision 1.141 2000/03/03 15:17:02 os
+ StarView remainders removed
+
+ Revision 1.140 2000/02/14 14:40:48 os
+ #70473# Unicode
+
+ Revision 1.139 2000/02/10 10:34:32 os
+ #70359# titles added to AutoText groups
+
+ Revision 1.138 2000/02/03 11:07:05 jp
+ Task #72579#: SwTextblocks - use the new method GetValidShortCut
+
+ Revision 1.137 2000/02/02 17:03:02 jp
+ Task #72579#: WW8Reader can import glossaries
+
+ Revision 1.136 2000/02/02 11:23:21 os
+ #72564# select one of the created groups; #72563# D'n'D: set copy mode for readonly blocks
+
+ Revision 1.135 1999/12/29 07:58:25 os
+ #71320# flags for AutoText preview in module config
+
+ Revision 1.134 1999/12/27 10:35:11 os
+ #71262# Undo in SwOneExampleFrame
+
+ Revision 1.133 1999/12/15 15:32:24 os
+ #70234# ExampleFrame: OnlineLayout, ContextMenu, disabled
+
+ Revision 1.132 1999/11/25 13:11:59 hr
+ #65293#: cast
+
+ Revision 1.131 1999/11/19 16:40:24 os
+ modules renamed
+
+ Revision 1.130 1999/11/19 11:47:36 os
+ #67410# consider path index selection restore
+
+ Revision 1.129 1999/11/19 11:11:52 os
+ #69862# Example window corrected
+
+ Revision 1.128 1999/11/16 16:09:00 jp
+ Init: call resize at SvTreeListBox
+
+ Revision 1.127 1999/10/21 17:48:59 jp
+ have to change - SearchFile with SfxIniManager, dont use SwFinder for this
+
+ --------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/misc/glossary.hrc b/sw/source/ui/misc/glossary.hrc
new file mode 100644
index 000000000000..1bba3cdadebc
--- /dev/null
+++ b/sw/source/ui/misc/glossary.hrc
@@ -0,0 +1,126 @@
+/*************************************************************************
+ *
+ * $RCSfile: glossary.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+// Box Textbausteine
+#define FT_SHORTNAME 1
+#define ED_SHORTNAME 2
+#define FT_NAME 3
+//#define DCB_NAME 4
+#define ED_NAME 4
+#define CB_INSERT_TIP 5
+
+//#define FT_BIB 10
+
+#define GB_GLOSSARY 30
+
+#define PB_INSERT 50
+#define PB_EDIT 52
+#define PB_BIB 54
+#define PB_CLOSE 55
+#define PB_PATH 56
+#define PB_HELP 57
+
+#define MNU_EDIT 60
+#define FN_GL_DEFINE 61
+#define FN_GL_DEFINE_TEXT 62
+#define FN_GL_REPLACE 63
+#define FN_GL_EDIT 64
+#define FN_GL_DELETE 65
+#define FN_GL_RENAME 66
+#define FN_GL_MACRO 67
+#define CB_FILE_REL 68
+#define CB_NET_REL 69
+#define GB_RELATIVE 70
+#define GB_EXAMPLE 71
+#define WIN_EXAMPLE 72
+#define CB_SHOW_EXAMPLE 73
+#define FN_GL_COPY_TO_CLIPBOARD 74
+#define FN_GL_IMPORT 75
+#define ST_READONLY 76
+#define ST_READONLY_PATH 77
+
+// Box Bibliothek Textbausteine
+#define GB_EDIT 1
+#define GB_BIB 2
+#define ED_BIB 3
+
+#define PB_NEW 10
+#define PB_DELETE 11
+
+#define BT_OK 100
+
+// beide
+#define LB_BIB 80
+
+// Dialog Namensaenderung
+#define FT_ON 1
+#define FT_OS 2
+#define FT_NN 3
+#define FT_NS 4
+#define ED_ON 5
+#define ED_OS 6
+#define ED_NN 7
+#define ED_NS 8
+#define GB_NN 9
+#define BT_CANCEL 10
+#define BT_OKNEW 11
+
diff --git a/sw/source/ui/misc/glossary.src b/sw/source/ui/misc/glossary.src
new file mode 100644
index 000000000000..cfcd20958dda
--- /dev/null
+++ b/sw/source/ui/misc/glossary.src
@@ -0,0 +1,1169 @@
+/*************************************************************************
+ *
+ * $RCSfile: glossary.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning 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 "misc.hrc"
+#include "glossary.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ // #define DLG_GLOSSARY 256
+ModalDialog DLG_GLOSSARY
+{
+ HelpID = FN_GLOSSARY_DLG ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 375 , 164 ) ;
+ Text = "AutoText" ;
+ Text [ ENGLISH ] = "AutoText" ;
+ Text [ norwegian ] = "AutoTekst" ;
+ Text [ italian ] = "Testo automatico" ;
+ Text [ portuguese_brazilian ] = "Texto autom tico" ;
+ Text [ portuguese ] = "AutoTexto" ;
+ Text [ finnish ] = "Automaattiteksti" ;
+ Text [ danish ] = "AutoTekst" ;
+ Text [ french ] = "AutoTexte" ;
+ Text [ swedish ] = "AutoText" ;
+ Text [ dutch ] = "AutoTekst" ;
+ Text [ spanish ] = "AutoTexto" ;
+ Text [ english_us ] = "AutoText" ;
+ Moveable = TRUE ;
+ GroupBox GB_EXAMPLE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 94 , 155 ) ;
+ Text = "Vorschau" ;
+ Text [ ENGLISH ] = "Preview" ;
+ Text[ english_us ] = "Preview";
+ Text[ portuguese ] = "Previsualizar";
+ Text[ russian ] = "Ïðîñìîòð";
+ Text[ greek ] = "Ðñïåðéóêüðçóç";
+ Text[ dutch ] = "Voorbeeld";
+ Text[ french ] = "Aperçu";
+ Text[ spanish ] = "Previsualización";
+ Text[ italian ] = "Anteprima";
+ Text[ danish ] = "Eksempel";
+ Text[ swedish ] = "Förhandsvisning";
+ Text[ polish ] = "Podgl¹d";
+ Text[ portuguese_brazilian ] = "Preview";
+ Text[ japanese ] = "ÌßÚËÞ­°";
+ Text[ korean ] = "¹Ì¸®º¸±â";
+ Text[ chinese_simplified ] = "Ô¤ÊÓ";
+ Text[ chinese_traditional ] = "¹wÄý";
+ Text[ arabic ] = "ÇáãÚÇíäÉ";
+ Text[ turkish ] = "Önizleme";
+ Text[ language_user1 ] = " ";
+ };
+ Window WIN_EXAMPLE
+ {
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ Size = MAP_APPFONT ( 82 , 124 ) ;
+ };
+ CheckBox CB_SHOW_EXAMPLE
+ {
+ Pos = MAP_APPFONT ( 12 , 143 ) ;
+ Size = MAP_APPFONT ( 82 , 12 ) ;
+ Text = "~Vorschau anzeigen" ;
+ Text [ ENGLISH ] = "Show ~preview" ;
+ Text[ english_us ] = "Sho~w preview";
+ Text[ portuguese ] = "~Mostrar Previsualizar";
+ Text[ russian ] = "Âêëþ÷èòü ïðîñìîòð";
+ Text[ greek ] = "ÅìöÜíéóç ðñïåðéóêüðçóçò";
+ Text[ dutch ] = "~Voorbeeld weergeven";
+ Text[ french ] = "Afficher l'~aperçu";
+ Text[ spanish ] = "Mostrar pre~visualización";
+ Text[ italian ] = "Mostra ~anteprima";
+ Text[ danish ] = "Vis eksempel";
+ Text[ swedish ] = "Visa förhandsvisning";
+ Text[ polish ] = "Wyœwietl podgl¹d";
+ Text[ portuguese_brazilian ] = "Show ~preview";
+ Text[ japanese ] = "ÌßÚËÞ­°•\\Ž¦(~P)";
+ Text[ korean ] = "¹Ì¸®º¸±â º¸±â(~W)";
+ Text[ chinese_simplified ] = "ÏÔʾԤÊÓ(~P)";
+ Text[ chinese_traditional ] = "±Ä¥Î¹wÄý(~P)";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáãÚÇíäÉ";
+ Text[ turkish ] = "Önizlemeyi görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_INSERT_TIP
+ {
+ Pos = MAP_APPFONT ( 112 , 12 ) ;
+ Size = MAP_APPFONT ( 200 , 12 ) ;
+ TabStop = TRUE ;
+ Text = "~Rest des Namens bei der Eingabe als Tipp anzeigen" ;
+ Text [ ENGLISH ] = "Show the rest of the name as tip while typing" ;
+ Text [ english_us ] = "~Display remainder of name as suggestion while typing" ;
+ Text [ italian ] = "Visualizza il resto del nome nella digitazione come suggerimento" ;
+ Text [ spanish ] = "~Muestra el resto del nombre como sugerencia durante la entrada" ;
+ Text [ french ] = "Lors de la saisie, afficher le nom complet sous forme d'~infobulle" ;
+ Text [ dutch ] = "~Rest van de naam bij invoer als tip weergeven" ;
+ Text [ swedish ] = "~Visa resten av namnet som tips vid inmatningen" ;
+ Text [ danish ] = "Vis resten af navnet som tip under skrivning" ;
+ Text [ portuguese_brazilian ] = "~Rest des Namens bei der Eingabe als Tip anzeigen" ;
+ Text [ portuguese ] = "Mostrar ~resto do nome durante a digitação como sugestão" ;
+ Text[ chinese_simplified ] = "×Ô¶¯ÏÔʾÊäÈëÎÄÌáʾ(~D)";
+ Text[ russian ] = "Ïðè ââîäå ïîêàçûâàòü âåñü àâòîòåêñò êàê ïîäñêàçêó";
+ Text[ polish ] = "Wyœwietl pozosta³¹ czêœæ nazwy przy wprowadzaniu jako wskazówkê";
+ Text[ japanese ] = "“ü—Í’†‚É“ü—ÍŽx‰‡€–Ú–¼‚ð•\\Ž¦‚·‚é(~D)";
+ Text[ chinese_traditional ] = "¦Û°Ê§¹¦¨Åã¥Ü(~D)";
+ Text[ arabic ] = "ÚÑÖ ÈÞíÉ ÅÏÎÇá ÇáäÕ ÇáÊáÞÇÆí ÃËäÇÁ ÇáßÊÇÈÉ Úáì Ôßá ÊáãíÍ";
+ Text[ greek ] = "ÅìöÜíéóç ôïõ õðüëïéðïõ ìÝ~ñïõò ôïõ ïíüìáôïò ùò õðüäåéîç êáôÜ ôçí äáêôõëïãñÜöçóç";
+ Text[ korean ] = "±âÀÔÇÏ´Â µ¿¾È Á¦¾ÈÀ¸·Î¼­ ³ª¸ÓÁö À̸§ Ç¥½Ã(~D)";
+ Text[ turkish ] = "Giriþ sýrasýnda adýn tamamýný öneri olarak görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_NAME
+ {
+ Pos = MAP_APPFONT ( 112 , 31 ) ;
+// Pos = MAP_APPFONT ( 80 , 31 ) ;
+ Size = MAP_APPFONT ( 27 , 8 ) ;
+ 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 ] = "N~ombre" ;
+ Text [ english_us ] = "~Name" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ãû³Æ(~N)";
+ Text[ russian ] = "Àâòîòåêñò";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "€–Ú–¼(~N)";
+ Text[ chinese_traditional ] = "¦WºÙ(~N)";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§(~N)";
+ Text[ turkish ] = "Ad";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_NAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 145 , 29 ) ;
+ Size = MAP_APPFONT ( 100 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ FixedText FT_SHORTNAME
+ {
+ Disable = TRUE ;
+ Pos = MAP_APPFONT ( 248 , 31 ) ;
+ Size = MAP_APPFONT ( 32 , 8 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Kürzel : ~K³rzel */
+ Text = "~Kürzel" ;
+ Text [ ENGLISH ] = "~Shortcut" ;
+ Text [ norwegian ] = "+++~Shortcut" ;
+ Text [ italian ] = "Sigla" ;
+ Text [ portuguese_brazilian ] = "~Atalho" ;
+ Text [ portuguese ] = "~Atalho" ;
+ Text [ finnish ] = "~Pikatoiminto" ;
+ Text [ danish ] = "Genvej" ;
+ Text [ french ] = "~Raccourci" ;
+ Text [ swedish ] = "~Förkortning" ;
+ Text [ dutch ] = "~Afkorting" ;
+ Text [ spanish ] = "~Abrev." ;
+ Text [ english_us ] = "~Shortcut" ;
+ Right = TRUE ;
+ Text[ chinese_simplified ] = "Ëõд(~S)";
+ Text[ russian ] = "Ñîêðàùåíèå";
+ Text[ polish ] = "Inicja³y";
+ Text[ japanese ] = "¼®°Ä¶¯Ä·°";
+ Text[ chinese_traditional ] = "ÁY¼g(~S)";
+ Text[ arabic ] = "ÇáÇÎÊÕÇÑ";
+ Text[ greek ] = "Óõíôüìåõóç";
+ Text[ korean ] = "¹Ù·Î°¡±â(~S)";
+ Text[ turkish ] = "Kýsaltma";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_SHORTNAME
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 286 , 29 ) ;
+ Size = MAP_APPFONT ( 21 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ Control LB_BIB
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 112 , 44 ) ;
+ Size = MAP_APPFONT ( 195 , 78 ) ;
+ TabStop = TRUE ;
+ // Sort = TRUE ;
+ // CurPos = 0 ;
+ String ST_READONLY
+ {
+ Text = "schreibgeschützt" ;
+ Text [ ENGLISH ] = "readonly" ;
+ };
+ };
+ GroupBox GB_GLOSSARY
+ {
+ Pos = MAP_APPFONT ( 106 , 3 ) ;
+ Size = MAP_APPFONT ( 207 , 125 ) ;
+ Text = "AutoText" ;
+ Text [ ENGLISH ] = "AutoText" ;
+ Text [ norwegian ] = "AutoTekst" ;
+ Text [ italian ] = "Testo automatico" ;
+ Text [ portuguese_brazilian ] = "Texto autom tico" ;
+ Text [ portuguese ] = "AutoTexto" ;
+ Text [ finnish ] = "Automaattiteksti" ;
+ Text [ danish ] = "AutoTekst" ;
+ Text [ french ] = "AutoTexte" ;
+ Text [ swedish ] = "AutoText" ;
+ Text [ dutch ] = "AutoTekst" ;
+ Text [ spanish ] = "AutoTexto" ;
+ Text [ english_us ] = "AutoText" ;
+ Text[ chinese_simplified ] = "×Ô¶¯Í¼Îļ¯";
+ Text[ russian ] = "Àâòîòåêñò";
+ Text[ polish ] = "Autotekst";
+ Text[ japanese ] = "“ü—ÍŽx‰‡";
+ Text[ chinese_traditional ] = "¦Û°Ê¹Ï¤å¶°";
+ Text[ arabic ] = "äÕ ÊáÞÇÆí";
+ Text[ greek ] = "ÁõôïÊåßìåíï";
+ Text[ korean ] = "ÀÚµ¿ ÅؽºÆ®";
+ Text[ turkish ] = "Otomatik metin";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_FILE_REL
+ {
+ Pos = MAP_APPFONT ( 114 , 144 ) ;
+ Size = MAP_APPFONT ( 90 , 12 ) ;
+ Text = "Im ~Dateisystem" ;
+ Text [ ENGLISH ] = "on ~filesystem" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~File system" ;
+ Text [ italian ] = "Al file system" ;
+ Text [ spanish ] = "En el ~sistema de archivos" ;
+ Text [ french ] = "Dans le système de ~fichiers" ;
+ Text [ dutch ] = "In b~estandsysteem" ;
+ Text [ swedish ] = "I ~filsystem" ;
+ Text [ danish ] = "i ~filsystemet" ;
+ Text [ portuguese_brazilian ] = "Im ~Dateisystem" ;
+ Text [ portuguese ] = "~Sistema do ficheiro" ;
+ Text[ chinese_simplified ] = "ÔÚÎļþϵͳÄÚ(~F)";
+ Text[ russian ] = "Â ñèñòåìå ôàéëîâ";
+ Text[ polish ] = "W systemie plików";
+ Text[ japanese ] = "̧²Ù ¼½ÃÑ‚É(~F)";
+ Text[ chinese_traditional ] = "Àɮרt²Î(~F)";
+ Text[ arabic ] = "Ýí äÙÇã ÇáãáÝ";
+ Text[ greek ] = "óôï óýóôçìá áñ÷åßùí";
+ Text[ korean ] = "ÆÄÀÏ ½Ã½ºÅÛ(~F)";
+ Text[ turkish ] = "Dosya sistemi";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_NET_REL
+ {
+ Pos = MAP_APPFONT ( 209 , 144 ) ;
+ Size = MAP_APPFONT ( 90 , 12 ) ;
+ Text = "Im ~Internet" ;
+ Text [ ENGLISH ] = "on int~ernet" ;
+ Text [ english_us ] = "Inte~rnet" ;
+ Text [ italian ] = "In ~Internet" ;
+ Text [ spanish ] = "En I~nternet" ;
+ Text [ french ] = "Sur l'~Internet" ;
+ Text [ dutch ] = "In Interne~t" ;
+ Text [ swedish ] = "På ~Internet" ;
+ Text [ danish ] = "på ~Internettet" ;
+ Text [ portuguese_brazilian ] = "Im ~Internet" ;
+ Text [ portuguese ] = "~Internet" ;
+ Text[ chinese_simplified ] = "ÔÚ¹ú¼Ê»¥ÁªÍøÄÚ(~R)";
+ Text[ russian ] = "Â Èíòåðíåòå";
+ Text[ polish ] = "W Int~ernecie";
+ Text[ japanese ] = "²ÝÀ°È¯Ä(~R)";
+ Text[ chinese_traditional ] = "Inte~rnet";
+ Text[ arabic ] = "Ýí ÇáÅäÊÑäÊ";
+ Text[ greek ] = "Óôï Internet";
+ Text[ korean ] = "ÀÎÅͳÝ(~R)";
+ Text[ turkish ] = "Internet";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_RELATIVE
+ {
+ Pos = MAP_APPFONT ( 106 , 134 ) ;
+ Size = MAP_APPFONT ( 207 , 24 ) ;
+ Text= "Verknüpfungen relativ speichern";
+ Text[ italian ] = "Salvare i collegamenti in modo relativo";
+ Text[ portuguese_brazilian ] = "Verknüpfungen relativ speichern";
+ Text[ portuguese ] = "Guardar ligações relacionadas com";
+ Text[ danish ] = "Gem kæderne relativt";
+ Text[ french ] = "Enregistrement relatif des liens";
+ Text[ swedish ] = "Spara länkar relativt";
+ Text[ dutch ] = "Koppelingen relatief opslaan";
+ Text[ spanish ] = "Guardar vínculos relativamente";
+ Text[ english_us ] = "Save links relative to";
+ Text[ chinese_simplified ] = "´æÅÌÏà¶ÔµÄÁ´½Ó";
+ Text = "Verknüpfungen relativ speichern" ;
+ Text[ chinese_traditional ] = "Àx¦s¬Û¹ïªº±¶®|";
+ Text[ russian ] = "Ñîõðàíèòü ññûëêè îòíîñ.";
+ Text[ greek ] = "Ó÷åôéêÞ áðïèÞêåõóç óõíäÝóåùí";
+ Text[ polish ] = "Zapisz ³¹cza wzglêdnie";
+ Text[ japanese ] = "Øݸ‚̊ÎÛ‚ð•Û‘¶";
+ Text[ korean ] = "¿¡°üÇÑ ¿¬°á ÀúÀå";
+ Text[ arabic ] = "ÍÝÙ ÇáÇÑÊÈÇØÇÊ ÍÝÙÇð äÓÈíÇð";
+ Text[ turkish ] = "Baðlantýlarý göreceli kaydet";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton PB_INSERT
+ {
+ Pos = MAP_APPFONT ( 319 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### 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 ] = "Infog~a" ;
+ Text [ dutch ] = "~Invoegen" ;
+ Text [ spanish ] = "~Insertar" ;
+ Text [ english_us ] = "~Insert" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Fügt den aktuellen Textblock ein und schließt das Dialogfeld : F³gt den aktuellen Textblock ein und schlie˜t das Dialogfeld */
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ Text[ chinese_simplified ] = "²åÈë(~I)";
+ Text[ russian ] = "Âñòàâèòü";
+ Text[ polish ] = "Wstaw";
+ Text[ japanese ] = "‘}“ü(~I)";
+ Text[ russian ] = "Âñòàâèòü";
+ Text[ polish ] = "Wstaw";
+ Text[ japanese ] = "‘}“ü(~I)";
+ Text[ chinese_simplified ] = "²åÈë(~I)";
+ Text[ chinese_traditional ] = "´¡¤J(~I)";
+ Text[ arabic ] = "ÅÏÑÇÌ";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "»ðÀÔ(~I)";
+ Text[ turkish ] = "Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ CancelButton PB_CLOSE
+ {
+ Pos = MAP_APPFONT ( 319 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### 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" ;
+ TabStop = TRUE ;
+ 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 ] = "Kapat";
+ Text[ language_user1 ] = " ";
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 319 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ MenuButton PB_EDIT
+ {
+ Pos = MAP_APPFONT ( 319 , 60 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "AutoTe~xt" ;
+ Text [ ENGLISH ] = "AutoTe~xt" ;
+ Text [ norwegian ] = "AutoTekst" ;
+ Text [ italian ] = "Testo auto." ;
+ Text [ portuguese_brazilian ] = "Texto autom tico" ;
+ Text [ portuguese ] = "AutoTe~xto" ;
+ Text [ finnish ] = "Automaattiteksti" ;
+ Text [ danish ] = "AutoTekst" ;
+ Text [ french ] = "~AutoTexte" ;
+ Text [ swedish ] = "AutoTe~xt" ;
+ Text [ dutch ] = "~AutoTekst" ;
+ Text [ spanish ] = "AutoTe~xto" ;
+ Text [ english_us ] = "AutoTe~xt" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "×Ô¶¯Í¼Îļ¯(~X)";
+ Text[ russian ] = "Àâòîòåêñò";
+ Text[ polish ] = "Autote~kst";
+ Text[ japanese ] = "“ü—ÍŽx‰‡(~X)";
+ Text[ chinese_traditional ] = "¦Û°Ê¹Ï¤å¶°(~X)";
+ Text[ arabic ] = "äÕ ÊáÞÇÆí";
+ Text[ greek ] = "Áõôï~Êåßìåíï";
+ Text[ korean ] = "ÀÚµ¿ ÅؽºÆ®(~X)";
+ Text[ turkish ] = "Otomatik metin";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton PB_BIB
+ {
+ Pos = MAP_APPFONT ( 319 , 77 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "~Bereiche..." ;
+ Text [ ENGLISH ] = "~Groups..." ;
+ Text [ norwegian ] = "~Grupper..." ;
+ Text [ italian ] = "Categorie..." ;
+ Text [ portuguese_brazilian ] = "~Grupos..." ;
+ Text [ portuguese ] = "~Categorias..." ;
+ Text [ finnish ] = "~Ryhmät..." ;
+ Text [ danish ] = "Områder..." ;
+ Text [ french ] = "Caté~gories..." ;
+ Text [ swedish ] = "~Områden..." ;
+ Text [ dutch ] = "~Bereiken..." ;
+ Text [ spanish ] = "~Areas..." ;
+ Text [ english_us ] = "C~ategories..." ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "·ÖÀà(~A)...";
+ Text[ russian ] = "Êàòåãîðèè...";
+ Text[ polish ] = "Obszary...";
+ Text[ japanese ] = "”͈Í(~A)...";
+ Text[ chinese_traditional ] = "°Ï°ì(~A)...";
+ Text[ arabic ] = "ÝÆÇÊ...";
+ Text[ greek ] = "Êáôçãïñßåò...";
+ Text[ korean ] = "ºÐ·ùÇ׸ñ(~A)...";
+ Text[ turkish ] = "Bölümler...";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton PB_PATH
+ {
+ Pos = MAP_APPFONT ( 319 , 94 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "~Pfad..." ;
+ Text [ ENGLISH ] = "~Path..." ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "~Atalho..." ;
+ Text [ english_us ] = "~Path..." ;
+ Text [ portuguese_brazilian ] = "~Pfad..." ;
+ Text [ swedish ] = "Sök~väg..." ;
+ Text [ danish ] = "Sti..." ;
+ Text [ italian ] = "~Percorso..." ;
+ Text [ spanish ] = "~Ruta..." ;
+ Text [ french ] = "~Chemin..." ;
+ Text [ dutch ] = "~Pad..." ;
+ Text[ chinese_simplified ] = "·¾¶(~P)...";
+ Text[ russian ] = "Ïóòü...";
+ Text[ polish ] = "Œcie¿ka...";
+ Text[ japanese ] = "Êß½(~P)...";
+ Text[ chinese_traditional ] = "¸ô®|(~P)...";
+ Text[ arabic ] = "ÇáãÓÇÑ...";
+ Text[ greek ] = "ÄéáäñïìÞ...";
+ Text[ korean ] = "°æ·Î(~P)...";
+ Text[ turkish ] = "Veri yolu...";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_READONLY_PATH
+ {
+ Text = "Für die Verzeichnisse für 'AutoText' sind sind keine Schreibrechte vorhanden. Möchten Sie den Pfaddialog aufrufen?" ;
+ Text [ ENGLISH ] = "The directories of 'AutoText' don't have write access. Do you want to call the path settings dialog?" ;
+ };
+ Menu MNU_EDIT
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = FN_GL_DEFINE ;
+ HelpID = HID_MD_GLOS_DEFINE ;
+ Text = "~Neu" ;
+ Text [ ENGLISH ] = "~New" ;
+ Text [ norwegian ] = "~New" ;
+ Text [ italian ] = "~Nuovo" ;
+ Text [ portuguese_brazilian ] = "~Novo" ;
+ Text [ portuguese ] = "~Novo" ;
+ Text [ finnish ] = "~Uusi" ;
+ Text [ danish ] = "~Ny(t)" ;
+ Text [ french ] = "~Nouveau" ;
+ Text [ swedish ] = "~Nytt" ;
+ Text [ dutch ] = "N~ieuw" ;
+ 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 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FN_GL_DEFINE_TEXT ;
+ HelpID = HID_MD_GLOS_DEFINE_TEXT ;
+ Text = "Neu (nur ~Text)" ;
+ Text [ ENGLISH ] = "New (only ~text)" ;
+ Text [ english_us ] = "New (text only)" ;
+ Text [ portuguese_brazilian ] = "Neu (nur ~Text)" ;
+ Text [ swedish ] = "Ny (endast ~text)" ;
+ Text [ danish ] = "Ny (kun tekst)" ;
+ Text [ italian ] = "Nuovo (solo ~testo)" ;
+ Text [ spanish ] = "Nuevo (solo ~texto)" ;
+ Text [ french ] = "Nouveau (t~exte seulement)" ;
+ Text [ dutch ] = "Nieuw (alleen ~tekst)" ;
+ Text [ portuguese ] = "Novo (só ~texto)" ;
+ Text[ chinese_simplified ] = "н¨(Ö»ÊÇÎı¾)(~T)";
+ Text[ russian ] = "Ñîçäàòü (òîëüêî òåêñò)";
+ Text[ polish ] = "Nowy (tylko tekst)";
+ Text[ japanese ] = "V‹Kì¬(÷½Ä‚Ì‚Ý)";
+ Text[ chinese_traditional ] = "¶}±Ò·sÀÉ(¯Â¤å¦r)(~T)";
+ Text[ arabic ] = "ÌÏíÏ (ÇáäÕ ÝÞØ)";
+ Text[ greek ] = "Äçìéïõñãßá (ìüíï ~êåßìåíï)";
+ Text[ korean ] = "»õ·Î (ÅؽºÆ® ¸¸)";
+ Text[ turkish ] = "Yeni (yalnýzca metin)";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FN_GL_COPY_TO_CLIPBOARD;
+ HelpID = HID_MD_COPY_TO_CLIPBOARD;
+ Text = "~Kopieren";
+ Text [English] = "Copy";
+ Text[ english_us ] = "~Copy";
+ Text[ portuguese ] = "~Copiar";
+ Text[ russian ] = "Êîïèðîâàòü";
+ Text[ greek ] = "Áíôé~ãñáöÞ";
+ Text[ dutch ] = "~Kopiëren";
+ Text[ french ] = "~Copier";
+ Text[ spanish ] = "~Copiar";
+ Text[ italian ] = "~Copia";
+ Text[ danish ] = "K~opier";
+ Text[ swedish ] = "Kopiera";
+ Text[ polish ] = "Kopiuj";
+ Text[ portuguese_brazilian ] = "Copy";
+ Text[ japanese ] = "ºËß°(~C)";
+ Text[ korean ] = "º¹»ç(~C)";
+ Text[ chinese_simplified ] = "¸´ÖÆ(~C)";
+ Text[ chinese_traditional ] = "Î`»s(~C)";
+ Text[ arabic ] = "äÓÎ";
+ Text[ turkish ] = "Kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FN_GL_REPLACE ;
+ HelpID = HID_MD_GLOS_REPLACE ;
+ Text = "~Ersetzen" ;
+ Text [ ENGLISH ] = "~Replace" ;
+ Text [ norwegian ] = "~Erstatte" ;
+ Text [ italian ] = "~Sostituisci" ;
+ Text [ portuguese_brazilian ] = "~Substituir" ;
+ Text [ portuguese ] = "~Substituir" ;
+ Text [ finnish ] = "~Korvaa" ;
+ Text [ danish ] = "~Erstat" ;
+ Text [ french ] = "R~emplacer" ;
+ Text [ swedish ] = "~Ersätta" ;
+ Text [ dutch ] = "V~ervangen" ;
+ Text [ spanish ] = "Ree~mplazar" ;
+ Text [ english_us ] = "Replace" ;
+ Text[ chinese_simplified ] = "¸üÌæ(~R)";
+ Text[ russian ] = "Çàìåíèòü";
+ Text[ polish ] = "Zamieñ";
+ Text[ japanese ] = "’uŠ·";
+ Text[ chinese_traditional ] = "¥N´À(~R)";
+ Text[ arabic ] = "ÇÓÊÈÏÇá";
+ Text[ greek ] = "Á~íôéêáôÜóôáóç";
+ Text[ korean ] = "¹Ù²Ù±â";
+ Text[ turkish ] = "Deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FN_GL_RENAME ;
+ HelpID = HID_MD_GLOS_RENAME ;
+ Text = "~Umbenennen..." ;
+ Text [ ENGLISH ] = "Ren~ame..." ;
+ Text [ dutch ] = "~Naam wijzigen..." ;
+ Text [ english_us ] = "Rename..." ;
+ Text [ italian ] = "~Rinomina..." ;
+ Text [ spanish ] = "~Cambiar nombre..." ;
+ Text [ french ] = "~Renommer..." ;
+ Text [ swedish ] = "~Byt namn..." ;
+ Text [ danish ] = "Omdøb" ;
+ Text [ portuguese_brazilian ] = "~Umbenennen" ;
+ Text [ portuguese ] = "~Mudar nome..." ;
+ Text[ chinese_simplified ] = "ÖØÃüÃû(~A)...";
+ Text[ russian ] = "Ïåðåèìåíîâàòü...";
+ Text[ polish ] = "Zmieñ nazwê...";
+ Text[ japanese ] = "–¼‘O‚Ì•ÏX...";
+ Text[ chinese_traditional ] = "­«·s©R¦W(~A)...";
+ Text[ arabic ] = "...ÅÚÇÏÉ ÊÓãíÉ";
+ Text[ greek ] = "~Ìåôïíïìáóßá...";
+ Text[ korean ] = "À̸§ ¹Ù²Ù±â...";
+ Text[ turkish ] = "Yeniden adlandýr...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FN_GL_DELETE ;
+ HelpID = HID_MD_GLOS_DELETE ;
+ /* ### 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 ] = "~Verwijderen" ;
+ 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 ] = " ";
+ };
+ MenuItem
+ {
+ Separator = TRUE ;
+ };
+ MenuItem
+ {
+ Identifier = FN_GL_EDIT ;
+ HelpID = HID_MD_GLOS_EDIT ;
+ Text = "~Bearbeiten" ;
+ Text [ ENGLISH ] = "~Edit" ;
+ Text [ norwegian ] = "~Rediger" ;
+ Text [ italian ] = "~Modifica" ;
+ Text [ portuguese_brazilian ] = "~Editar" ;
+ Text [ portuguese ] = "E~ditar" ;
+ Text [ finnish ] = "~Muokkaa" ;
+ Text [ danish ] = "~Rediger" ;
+ Text [ french ] = "~Edition" ;
+ Text [ swedish ] = "~Redigera" ;
+ Text [ dutch ] = "Be~werken" ;
+ Text [ spanish ] = "~Editar" ;
+ Text [ english_us ] = "~Edit" ;
+ Text[ chinese_simplified ] = "±à¼­(~E)";
+ Text[ russian ] = "~Ïðàâêà";
+ Text[ polish ] = "~Edytuj";
+ Text[ japanese ] = "•ÒWi~‚dj";
+ Text[ chinese_traditional ] = "½s¿è(~E)";
+ Text[ arabic ] = "~ÊÍÑíÑ";
+ Text[ greek ] = "~Åðåîåñãáóßá";
+ Text[ korean ] = "ÆíÁý(~E)";
+ Text[ turkish ] = "Düzenle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Separator = TRUE ;
+ };
+ MenuItem
+ {
+ Identifier = FN_GL_MACRO ;
+ HelpID = HID_MD_GLOS_MACRO ;
+ Text = "~Makro..." ;
+ Text [ ENGLISH ] = "~Macro..." ;
+ Text [ norwegian ] = "~Macro..." ;
+ Text [ italian ] = "Macro..." ;
+ Text [ portuguese_brazilian ] = "~Macro..." ;
+ Text [ portuguese ] = "~Macro..." ;
+ Text [ finnish ] = "~Makro..." ;
+ Text [ danish ] = "~Makro..." ;
+ Text [ french ] = "~Macro..." ;
+ Text [ swedish ] = "~Makro..." ;
+ Text [ dutch ] = "~Macro..." ;
+ Text [ spanish ] = "~Macro..." ;
+ Text [ english_us ] = "~Macro..." ;
+ Text[ chinese_simplified ] = "ºê(~M)...";
+ Text[ russian ] = "Ìàêðîñ...";
+ Text[ polish ] = "Makro...";
+ Text[ japanese ] = "ϸÛ(~M)...";
+ Text[ chinese_traditional ] = "¥¨¶°(~M)...";
+ Text[ arabic ] = "ÇáãÇßÑæ...";
+ Text[ greek ] = "~ÌáêñïåíôïëÞ...";
+ Text[ korean ] = "¸ÅÅ©·Î(~M)...";
+ Text[ turkish ] = "Makro...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Separator = TRUE ;
+ };
+ MenuItem
+ {
+ Identifier = FN_GL_IMPORT;
+ HelpID = HID_MD_GLOS_IMPORT ;
+ Text = "~Importieren..." ;
+ Text [ ENGLISH ] = "~Import..." ;
+ Text[ english_us ] = "~Import...";
+ Text[ portuguese ] = "~Importar...";
+ Text[ russian ] = "~Èìïîðò...";
+ Text[ greek ] = "Å~éóáãùãÞ...";
+ Text[ dutch ] = "~Importeren...";
+ Text[ french ] = "~Importer...";
+ Text[ spanish ] = "~Importar...";
+ Text[ italian ] = "~Importa...";
+ Text[ danish ] = "~Importer...";
+ Text[ swedish ] = "~Importera...";
+ Text[ polish ] = "~Importuj...";
+ Text[ portuguese_brazilian ] = "~Import...";
+ Text[ japanese ] = "²ÝÎß°Ä‚·‚é(~I)...";
+ Text[ korean ] = "°¡Á®¿À±â(~I)...";
+ Text[ chinese_simplified ] = "ÊäÈë(~I)...";
+ Text[ chinese_traditional ] = "¿é¤J(~I)...";
+ Text[ arabic ] = "ÇÓÊíÑÇÏ...";
+ Text[ turkish ] = "~Ýçe aktar...";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "×Ô¶¯Í¼Îļ¯";
+ Text[ russian ] = "Àâòîòåêñò";
+ Text[ polish ] = "Autotekst";
+ Text[ japanese ] = "“ü—ÍŽx‰‡";
+ Text[ chinese_traditional ] = "¦Û°Ê¹Ï¤å¶°";
+ Text[ arabic ] = "äÕ ÊáÞÇÆí";
+ Text[ greek ] = "ÁõôïÊåßìåíï";
+ Text[ korean ] = "ÀÚµ¿ ÅؽºÆ®";
+ Text[ turkish ] = "Otomatik metin";
+ Text[ language_user1 ] = " ";
+};
+InfoBox MSG_DOUBLE_SHORTNAME
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Kürzel wird bereits verwendet. Bitte einen anderen Namen vergeben! : K³rzel wird bereits verwendet. Bitte einen anderen Namen vergeben! */
+ MESSAGE = "Kürzel wird bereits verwendet. Bitte einen anderen Namen vergeben!" ;
+ MESSAGE [ ENGLISH ] = "Short name already in use. Please choose annother name!" ;
+ MESSAGE [ norwegian ] = "Kort navn er i bruk. Vennligst velg et annet navn!" ;
+ MESSAGE [ italian ] = "La sigla è già in uso. Scegliere un altro nome." ;
+ MESSAGE [ portuguese_brazilian ] = "AbreviaçÆo j  em uso. Por favor escolha outro nome!" ;
+ MESSAGE [ portuguese ] = "Abreviatura já existe. Por favor escolha outro nome!" ;
+ MESSAGE [ finnish ] = "Lyhenne on jo käytössä. Valitse toinen nimi!" ;
+ MESSAGE [ danish ] = "Denne genvej eksisterer allerede. Vælg venligst et andet navn!" ;
+ MESSAGE [ french ] = "Abréviation déjà utilisée. Choisissez un autre nom !" ;
+ MESSAGE [ swedish ] = "Kortkommandonamnet används redan. Välj ett annat namn!" ;
+ MESSAGE [ dutch ] = "Deze afkorting bestaat al. Probeer een andere naam!" ;
+ MESSAGE [ spanish ] = "Esta abreviatura ya está en uso. ¡Elija otro nombre por favor!" ;
+ MESSAGE [ english_us ] = "Shortcut name already exists. Please choose another name." ;
+ MESSAGE[ chinese_simplified ] = "ÒѾ­´æÔÚÕâ¸öËõд¡£ÇëÄúÊäÈëÒ»¸öÆäËûËõдÃû³Æ£¡";
+ MESSAGE[ russian ] = "Ýòî ñîêðàùåíèå óæå ñóùåñòâóåò. Ïîæàëóéñòà, âûáåðèòå äðóãîå èìÿ!";
+ MESSAGE[ polish ] = "Te inicja³y ju¿ zosta³y u¿yte. Proszê podaæ inn¹ nazwê!";
+ MESSAGE[ japanese ] = "‚±‚̼®°Ä¶¯Ä·°‚Í‚·‚Å‚ÉŽg—p‚³‚ê‚Ä‚¢‚Ü‚·B•Ê‚Ì·°‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B";
+ MESSAGE[ chinese_traditional ] = "¤w¸g¨Ï¥Î¤F³o­ÓÁY¼g¡C½Ð±z¿é¤J¤@­Ó¤£¦Pªº¦WºÙ¡T";
+ MESSAGE[ arabic ] = "åÐÇ ÇáÇÎÊÕÇÑ ãæÌæÏ ÈÇáÝÚá. ÇáÑÌÇÁ ÇÓÊÎÏÇã ÇÓã ÌÏíÏ!";
+ MESSAGE[ greek ] = "Ôï üíïìá óõíôüìåõóçò õðÜñ÷åé Þäç. Ðáñáêáëþ äþóôå Ýíá Üëëï üíïìá!";
+ MESSAGE[ korean ] = "¹Ù·Î°¡±â À̸§ÀÌ ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù. ´Ù¸¥ À̸§À» ¼±ÅÃÇØ ÁֽʽÿÀ";
+ MESSAGE[ turkish ] = "Bu kýsaltma mevcut durumda. Baþka bir ad seçin!";
+ MESSAGE[ language_user1 ] = " ";
+};
+QueryBox MSG_QUERY_DELETE
+{
+ BUTTONS = WB_YES_NO ;
+ DEFBUTTON = WB_DEF_NO ;
+ /* ### ACHTUNG: Neuer Text in Resource? Soll der AutoText gelöscht werden? : Soll der AutoText gel÷scht werden? */
+ MESSAGE = "Soll der AutoText gelöscht werden?" ;
+ MESSAGE [ English ] = "Delete AutoText?" ;
+ MESSAGE [ norwegian ] = "Slette AutoTekst?" ;
+ MESSAGE [ italian ] = "Elimina inserimento testo automatico?." ;
+ MESSAGE [ portuguese_brazilian ] = "Apagar TextoAutom tico?" ;
+ MESSAGE [ portuguese ] = "Deseja apagar o AutoTexto?" ;
+ MESSAGE [ finnish ] = "Poistetaanko automaattiteksti?" ;
+ MESSAGE [ danish ] = "Skal denne AutoTekst slettes?" ;
+ MESSAGE [ french ] = "Supprimer l'AutoTexte ?" ;
+ MESSAGE [ swedish ] = "Skall AutoText raderas?" ;
+ MESSAGE [ dutch ] = "AutoTekst wissen?" ;
+ MESSAGE [ spanish ] = "¿Desea eliminar el AutoTexto?" ;
+ MESSAGE [ english_us ] = "Delete AutoText?" ;
+ MESSAGE[ chinese_simplified ] = "ÄúҪɾ³ý×Ô¶¯Í¼Îļ¯?";
+ MESSAGE[ russian ] = "Óäàëèòü àâòîòåêñò?";
+ MESSAGE[ polish ] = "Usun¹æ autotekst?";
+ MESSAGE[ japanese ] = "“ü—ÍŽx‰‡‚ð휂µ‚Ü‚·‚©H";
+ MESSAGE[ chinese_traditional ] = "­n§R°£¦Û°Ê¹Ï¤å¶°?";
+ MESSAGE[ arabic ] = "åá ÊÑíÏ ÍÐÝ ÇáäÕ ÇáÊáÞÇÆí¿";
+ MESSAGE[ greek ] = "ÄéáãñáöÞ ÁõôïÊåéìÝíïõ;";
+ MESSAGE[ korean ] = "ÀÚµ¿ ÅؽºÆ®¸¦ »èÁ¦ ÇϽðڽÀ´Ï±î?";
+ MESSAGE[ turkish ] = "Otomatik metin silinsin mi?";
+ MESSAGE[ language_user1 ] = " ";
+};
+String STR_QUERY_DELETE_GROUP1
+{
+ TEXT = "Soll der Bereich " ;
+ TEXT [ English ] = "Delete Group " ;
+ TEXT [ english_us ] = "Delete the category " ;
+ Text [ dutch ] = "Wilt u het bereik " ;
+ Text [ italian ] = "Cancellare la categoria " ;
+ Text [ spanish ] = "¿Desea usted eliminar " ;
+ Text [ french ] = "Supprimer la catégorie " ;
+ Text [ swedish ] = "Ska kategorin " ;
+ Text [ danish ] = "Skal området " ;
+ Text [ portuguese ] = "Deseja eliminar " ;
+ Text [ portuguese_brazilian ] = "Soll der Bereich " ;
+ Text[ chinese_simplified ] = "Ҫɾ³ýÕâ¸öÇøÓò ";
+ Text[ russian ] = "Óäàëèòü ";
+ Text[ polish ] = "Czy ten obszar ";
+ Text[ japanese ] = "‚±‚Ì•ª—Þ‚ð휂µ‚Ü‚·‚©H ";
+ Text[ chinese_traditional ] = "­n§R°£³o­Ó°Ï°ì ";
+ Text[ arabic ] = "åá ÊÑíÏ ÍÐÝ ÇáÝÆÉ ";
+ Text[ greek ] = "ÈÝëåôå ç êáôçãïñßá ";
+ Text[ korean ] = "ºÐ·ùÇ׸ñÀ» »èÁ¦ÇϽðڽÀ´Ï±î? ";
+ Text[ turkish ] = "Bölüm ";
+ Text[ language_user1 ] = " ";
+};
+String STR_QUERY_DELETE_GROUP2
+{
+ /* ### ACHTUNG: Neuer Text in Resource? gelöscht werden? : gel÷scht werden? */
+ TEXT = " gelöscht werden?" ;
+ TEXT [ English ] = "?" ;
+ TEXT [ english_us ] = "?" ;
+ Text [ dutch ] = "wissen?" ;
+ Text [ italian ] = "?" ;
+ Text [ spanish ] = "la categoría?" ;
+ Text [ french ] = "?" ;
+ Text [ swedish ] = "raderas?" ;
+ Text [ danish ] = "slettes?" ;
+ Text [ portuguese ] = "a secção?" ;
+ Text [ portuguese_brazilian ] = "gelöscht werden?" ;
+ Text[ chinese_simplified ] = "£¿";
+ Text[ russian ] = "îáëàñòü?";
+ Text[ polish ] = "ma zostaæ usuniêty?";
+ Text[ japanese ] = "휂µ‚Ü‚·‚©H";
+ Text[ chinese_traditional ] = "?";
+ Text[ arabic ] = "¿";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "íá äéáãñáöåß;";
+ Text[ korean ] = "?";
+ Text[ turkish ] = "silinsin mi?";
+};
+String STR_GLOSSARY
+{
+ Text = "Textbaustein : " ;
+ Text [ English ] = "Textblock : " ;
+ Text [ norwegian ] = "Textblock : " ;
+ Text [ italian ] = "Modulo di testo: " ;
+ Text [ portuguese_brazilian ] = "Textblock : " ;
+ Text [ portuguese ] = "Módulo de texto : " ;
+ Text [ french ] = "Module de texte : " ;
+ Text [ dutch ] = "Tekstbouwsteen : " ;
+ Text [ spanish ] = "Módulo de texto : " ;
+ Text [ danish ] = "Tekstelement : " ;
+ Text [ swedish ] = "Textblock : " ;
+ Text [ finnish ] = "Textblock : " ;
+ Text [ english_us ] = "Text block : " ;
+ Text[ chinese_simplified ] = "´ÊÌõ: ";
+ Text[ russian ] = "Òåêñòîâûé áëîê : ";
+ Text[ polish ] = "Blok tekstu : ";
+ Text[ japanese ] = "÷½ÄÌÞÛ¯¸: ";
+ Text[ chinese_traditional ] = "¶µ¥Ø¡G ";
+ Text[ arabic ] = "ÚäÕÑ ÇáäÕ : ";
+ Text[ greek ] = "ÔìÞìá êåéìÝíïõ : ";
+ Text[ korean ] = "ÅؽºÆ® ºí·Ï : ";
+ Text[ turkish ] = "Metin öðesi: ";
+ Text[ language_user1 ] = " ";
+};
+ModalDialog DLG_RENAME_GLOS
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 287 , 47 ) ;
+ Text = "Textbaustein umbenennen" ;
+ Text [ ENGLISH ] = "Rename textblock" ;
+ Moveable = TRUE ;
+ HelpID = HID_RENAME_GLOSSARY ;
+ OKButton BT_OKNEW
+ {
+ Disable = TRUE ;
+ Pos = MAP_APPFONT ( 231 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ DefButton = TRUE ;
+ TabStop = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 231 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_ON
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 30 , 8 ) ;
+ // ### ACHTUNG: Neuer Text in Resource? Na~me : Name
+ Text = "Na~me" ;
+ Text [ ENGLISH ] = "Name" ;
+ Text [ dutch ] = "Naa~m" ;
+ Text [ english_us ] = "Na~me" ;
+ Text [ italian ] = "Nome" ;
+ Text [ spanish ] = "N~ombre" ;
+ Text [ french ] = "~Nom" ;
+ Text [ swedish ] = "Na~mn" ;
+ Text [ danish ] = "Navn" ;
+ Text [ portuguese_brazilian ] = "Na~me" ;
+ Text [ portuguese ] = "No~me" ;
+ Text[ chinese_simplified ] = "Ãû³Æ(~M)";
+ Text[ russian ] = "Àâòîòåêñò";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "–¼‘O(~M)";
+ Text[ chinese_traditional ] = "¦WºÙ(~M)";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§(~M)";
+ Text[ turkish ] = "Ad";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_ON
+ {
+ ReadOnly = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 44 , 12 ) ;
+ Size = MAP_APPFONT ( 118 , 12 ) ;
+ Left = TRUE ;
+ };
+ FixedText FT_OS
+ {
+ Pos = MAP_APPFONT ( 165 , 14 ) ;
+ Size = MAP_APPFONT ( 34 , 8 ) ;
+ // ### ACHTUNG: Neuer Text in Resource? Kü~rzel : Kürzel
+ /* ### ACHTUNG: Neuer Text in Resource? Kü~rzel : K³~rzel */
+ Text = "Kü~rzel" ;
+ Text [ ENGLISH ] = "Shortcut" ;
+ Text [ english_us ] = "Short~cut" ;
+ Text [ italian ] = "Sigla" ;
+ Text [ spanish ] = "~Abrev." ;
+ Text [ french ] = "Ab~r." ;
+ Text [ dutch ] = "Afko~rting" ;
+ Text [ swedish ] = "~Förkortning" ;
+ Text [ danish ] = "Genvej" ;
+ Text [ portuguese_brazilian ] = "Kü~rzel" ;
+ Text [ portuguese ] = "Iniciais" ;
+ Text[ chinese_simplified ] = "Ëõд(~C)";
+ Text[ russian ] = "Ñîêðàùåíèå";
+ Text[ polish ] = "Inicja³y";
+ Text[ japanese ] = "¼®°Ä¶¯Ä·°";
+ Text[ chinese_traditional ] = "ÁY¼g(~C)";
+ Text[ arabic ] = "ÇáÇÎÊÕÇÑ";
+ Text[ greek ] = "Óõíôüìåõóç";
+ Text[ korean ] = "¹Ù·Î°¡±â(~C)";
+ Text[ turkish ] = "Kýsaltma";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_OS
+ {
+ ReadOnly = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 200 , 12 ) ;
+ Size = MAP_APPFONT ( 21 , 12 ) ;
+ Left = TRUE ;
+ };
+ FixedText FT_NN
+ {
+ Pos = MAP_APPFONT ( 12 , 29 ) ;
+ Size = MAP_APPFONT ( 30 , 8 ) ;
+ Text = "~Neu" ;
+ Text [ ENGLISH ] = "~New" ;
+ Text [ dutch ] = "~Nieuw" ;
+ Text [ english_us ] = "~New" ;
+ Text [ italian ] = "~Nuovo" ;
+ Text [ spanish ] = "~Nuevo" ;
+ Text [ french ] = "Nou~veau" ;
+ Text [ swedish ] = "~Nytt" ;
+ Text [ danish ] = "Ny" ;
+ Text [ portuguese ] = "~Novo" ;
+ Text [ portuguese_brazilian ] = "~Neu" ;
+ 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 ] = " ";
+ };
+ Edit ED_NN
+ {
+ TabStop = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 44 , 27 ) ;
+ Size = MAP_APPFONT ( 118 , 12 ) ;
+ Left = TRUE ;
+ };
+ FixedText FT_NS
+ {
+ Pos = MAP_APPFONT ( 165 , 29 ) ;
+ Size = MAP_APPFONT ( 34 , 8 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Kürzel : ~K³rzel */
+ Text = "~Kürzel" ;
+ Text [ ENGLISH ] = "~Shortcut" ;
+ Text [ english_us ] = "~Shortcut" ;
+ Text [ italian ] = "Sigla" ;
+ Text [ spanish ] = "~Abreviatura" ;
+ Text [ french ] = "~Abr." ;
+ Text [ dutch ] = "~Afkorting" ;
+ Text [ swedish ] = "~Ersätt" ;
+ Text [ danish ] = "Erstat" ;
+ Text [ portuguese_brazilian ] = "~Kürzel" ;
+ Text [ portuguese ] = "S~ubstituir" ;
+ Text[ chinese_simplified ] = "Á´½Ó(~S)";
+ Text[ russian ] = "Ñîêðàùåíèå";
+ Text[ polish ] = "Inicja³y";
+ Text[ japanese ] = "¼®°Ä¶¯Ä·°";
+ Text[ chinese_traditional ] = "±¶®|(~S)";
+ Text[ arabic ] = "ÇáÇÎÊÕÇÑ";
+ Text[ greek ] = "Óõíôüìåõóç";
+ Text[ korean ] = "¹Ù·Î°¡±â(~S)";
+ Text[ turkish ] = "Kýsaltma";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_NS
+ {
+ TabStop = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 200 , 27 ) ;
+ Size = MAP_APPFONT ( 21 , 12 ) ;
+ Left = TRUE ;
+ };
+ GroupBox GB_NN
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 219 , 41 ) ;
+ };
+ Text [ dutch ] = "Naam tekstbouwsteen wijzigen" ;
+ Text [ english_us ] = "Rename Text Block" ;
+ Text [ italian ] = "Rinomina modulo di testo" ;
+ Text [ spanish ] = "Cambiar nombre al módulo de texto" ;
+ Text [ french ] = "Renommer le module de texte" ;
+ Text [ swedish ] = "Byt namn på textblock" ;
+ Text [ danish ] = "Omdøb tekstelement" ;
+ Text [ portuguese_brazilian ] = "Textbaustein umbenennen" ;
+ Text [ portuguese ] = "Mudar nome do módulo de texto" ;
+ Text[ chinese_simplified ] = "ÖØÃüÃû´ÊÌõ";
+ Text[ russian ] = "Ïåðåèìåíîâàòü àâòîòåêñò";
+ Text[ polish ] = "Zmieñ nazwê bloków tekstu";
+ Text[ japanese ] = "÷½ÄÌÞÛ¯¸‚Ì–¼‘O‚Ì•ÏX";
+ Text[ chinese_traditional ] = "­«·s©R¦W¶µ¥Ø";
+ Text[ arabic ] = "ÅÚÇÏÉ ÊÓãíÉ ÚäÕÑ ÇáäÕ";
+ Text[ greek ] = "Ìåôïíïìáóßá ôìÞìáôïò êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ºí·Ï À̸§ ¹Ù²Ù±â";
+ Text[ turkish ] = "Metin öðesini yeniden adlandýr";
+ Text[ language_user1 ] = " ";
+};
+String STR_SAVE_GLOSSARY
+{
+ Text= "Textbaustein speichern";
+ Text[ italian ] = "Salva modulo di testo";
+ Text[ portuguese_brazilian ] = "Textbaustein speichern";
+ Text[ portuguese ] = "Guardar módulo de texto";
+ Text[ danish ] = "Gem tekstelementer";
+ Text[ french ] = "Enregistrer le module de texte";
+ Text[ swedish ] = "Spara textblock";
+ Text[ dutch ] = "Tekstbouwsteen opslaan";
+ Text[ spanish ] = "Guardar módulo de texto";
+ Text[ english_us ] = "Save Text Block";
+ Text[ chinese_simplified ] = "´æÅÌ´ÊÌõ";
+ Text[ russian ] = "Ñîõðàíèòü òåêñòîâûé áëîê";
+ Text[ polish ] = "Zapisz blok tekstu";
+ Text[ japanese ] = "÷½ÄÌÞÛ¯¸‚Ì•Û‘¶";
+ Text[ chinese_traditional ] = "Àx¦s¶µ¥Ø";
+ Text[ arabic ] = "ÍÝÙ ÚäÕÑ ÇáäÕ";
+ Text [ English ] = "Save textblock" ;
+ Text[ greek ] = "ÁðïèÞêåõóç ôìÞìáôïò êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ºí·Ï ÀúÀå";
+ Text[ turkish ] = "Metin öðesi";
+ Text[ language_user1 ] = " ";
+};
+InfoBox MSG_NO_GLOSSARIES
+{
+ MESSAGE = "Diese Datei enthält keine Textbausteine." ;
+ MESSAGE [ ENGLISH ] = "There are no textblocks in this file." ;
+ MESSAGE[ english_us ] = "There is no AutoText in this file.";
+ MESSAGE[ portuguese ] = "Este ficheiro não contém módulos de texto.";
+ MESSAGE[ russian ] = "Ýòîò ôàéë íå ñîäåðæèò ýëåìåíòîâ òåêñòà.";
+ MESSAGE[ greek ] = "Ôï áñ÷åßï áõôü äåí ðåñéÝ÷åé ôìÞìáôá êåéìÝíïõ.";
+ MESSAGE[ dutch ] = "Dit bestand bevat geen tekstbouwstenen";
+ MESSAGE[ french ] = "Ce fichier ne contient aucun module de texte.";
+ MESSAGE[ spanish ] = "Este archivo no contiene módulos de texto.";
+ MESSAGE[ italian ] = "Questo documento non contiene testi automatici.";
+ MESSAGE[ danish ] = "Denne fil indeholder ingen tekstelementer.";
+ MESSAGE[ swedish ] = "Den här filen innehåller inga textblock.";
+ MESSAGE[ polish ] = "Plik ten nie zawiera ¿adnych bloków tekstu.";
+ MESSAGE[ portuguese_brazilian ] = "There are no textblocks in this file.";
+ MESSAGE[ japanese ] = "‚±‚Ì̧²Ù‚É‚Í÷½ÄÌÞÛ¯¸‚ª‚ ‚è‚Ü‚¹‚ñB";
+ MESSAGE[ korean ] = "ÀÌ ÆÄÀÏ¿¡´Â ÀÚµ¿ ÅؽºÆ®°¡ ¾ø½À´Ï´Ù. .";
+ MESSAGE[ chinese_simplified ] = "Õâ¸öÎļþÄÚ²»°üº¬´ÊÌõ";
+ MESSAGE[ chinese_traditional ] = "³o­ÓÀɮרS¦³¤å¦r¬q";
+ MESSAGE[ arabic ] = "áÇ íÍÊæí åÐÇ ÇáãáÝ Úáì ßÊá äÕíÉ.";
+ MESSAGE[ turkish ] = "Bu dosya metin bileþenleri içermiyor";
+};
diff --git a/sw/source/ui/misc/glshell.cxx b/sw/source/ui/misc/glshell.cxx
new file mode 100644
index 000000000000..0d49ae6f503b
--- /dev/null
+++ b/sw/source/ui/misc/glshell.cxx
@@ -0,0 +1,515 @@
+/*************************************************************************
+ *
+ * $RCSfile: glshell.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:44 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXSIDS_HRC //autogen
+#include <sfx2/sfxsids.hrc>
+#endif
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _OFAACCFG_HXX //autogen
+#include <offmgr/ofaaccfg.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SFXMACITEM_HXX
+#include <svtools/macitem.hxx>
+#endif
+#ifndef _GLOSHDL_HXX
+#include <gloshdl.hxx>
+#endif
+
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _GLSHELL_HXX
+#include <glshell.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _GLOSDOC_HXX
+#include <glosdoc.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _INITUI_HXX
+#include <initui.hxx> // fuer ::GetGlossaries()
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _SWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _MISC_HRC
+#include <misc.hrc>
+#endif
+
+
+#define SwWebGlosDocShell
+#define SwGlosDocShell
+#ifndef _ITEMDEF_HXX
+#include <itemdef.hxx>
+#endif
+#ifndef _SWSLOTS_HXX
+#include <swslots.hxx>
+#endif
+
+
+SFX_IMPL_INTERFACE( SwGlosDocShell, SwDocShell, SW_RES(0) )
+{
+}
+
+
+SFX_IMPL_INTERFACE( SwWebGlosDocShell, SwWebDocShell, SW_RES(0) )
+{
+}
+
+
+TYPEINIT1( SwGlosDocShell, SwDocShell );
+TYPEINIT1( SwWebGlosDocShell, SwWebDocShell );
+
+
+void lcl_Execute( SwDocShell& rSh, SfxRequest& rReq )
+{
+ if ( rReq.GetSlot() == SID_SAVEDOC )
+ {
+ if( !rSh.HasName() )
+ {
+ rReq.SetReturnValue( SfxBoolItem( 0, rSh.Save() ) );
+ }
+ else
+ {
+ const SfxBoolItem* pRes = ( const SfxBoolItem* )
+ rSh.ExecuteSlot( rReq,
+ rSh.SfxObjectShell::GetInterface() );
+ if( pRes->GetValue() )
+ rSh.GetDoc()->ResetModified();
+ }
+ }
+}
+
+
+void lcl_GetState( SwDocShell& rSh, SfxItemSet& rSet )
+{
+ if( SFX_ITEM_AVAILABLE >= rSet.GetItemState( SID_SAVEDOC, FALSE ))
+ {
+ if( !rSh.GetDoc()->IsModified() )
+ rSet.DisableItem( SID_SAVEDOC );
+ else
+ rSet.Put( SfxStringItem( SID_SAVEDOC, SW_RESSTR(STR_SAVE_GLOSSARY)));
+ }
+}
+
+
+BOOL lcl_Save( SwWrtShell& rSh, const String& rGroupName,
+ const String& rShortNm, const String& rLongNm )
+{
+ const OfaAutoCorrCfg* pCfg = OFF_APP()->GetAutoCorrConfig();
+ SwTextBlocks * pBlock = ::GetGlossaries()->GetGroupDoc( rGroupName );
+
+ SvxMacro aStart(aEmptyStr, aEmptyStr);
+ SvxMacro aEnd(aEmptyStr, aEmptyStr);
+
+ SwGlossaryHdl* pGlosHdl = rSh.GetView().GetGlosHdl();
+ pGlosHdl->GetMacros( rShortNm, aStart, aEnd, pBlock );
+
+
+
+ USHORT nRet = rSh.SaveGlossaryDoc( *pBlock, rLongNm, rShortNm,
+ pCfg->IsSaveRelFile(), pCfg->IsSaveRelNet(),
+ pBlock->IsOnlyTextBlock( rShortNm ) );
+
+ if(aStart.GetMacName().Len() || aEnd.GetMacName().Len())
+ {
+ SvxMacro* pStart = aStart.GetMacName().Len() ? &aStart : 0;
+ SvxMacro* pEnd = aEnd.GetMacName().Len() ? &aEnd : 0;
+ pGlosHdl->SetMacros( rShortNm, pStart, pEnd, pBlock );
+ }
+
+ rSh.EnterStdMode();
+ if( USHRT_MAX != nRet )
+ rSh.ResetModified();
+ delete pBlock;
+ return nRet != USHRT_MAX;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwGlosDocShell::SwGlosDocShell()
+ : SwDocShell( SFX_CREATE_MODE_STANDARD )
+{
+ SetHelpId(SW_GLOSDOCSHELL);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwGlosDocShell::~SwGlosDocShell( )
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwGlosDocShell::Execute( SfxRequest& rReq )
+{
+ ::lcl_Execute( *this, rReq );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwGlosDocShell::GetState( SfxItemSet& rSet )
+{
+ ::lcl_GetState( *this, rSet );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+BOOL SwGlosDocShell::Save()
+{
+ return ::lcl_Save( *GetWrtShell(), aGroupName, aShortName, aLongName );
+}
+
+
+/* */
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwWebGlosDocShell::SwWebGlosDocShell()
+ : SwWebDocShell( SFX_CREATE_MODE_STANDARD )
+{
+ SetHelpId(SW_WEBGLOSDOCSHELL);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwWebGlosDocShell::~SwWebGlosDocShell( )
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwWebGlosDocShell::Execute( SfxRequest& rReq )
+{
+ ::lcl_Execute( *this, rReq );
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwWebGlosDocShell::GetState( SfxItemSet& rSet )
+{
+ ::lcl_GetState( *this, rSet );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+BOOL SwWebGlosDocShell::Save()
+{
+ return ::lcl_Save( *GetWrtShell(), aGroupName, aShortName, aLongName );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SV_DECL_REF(SwDocShell)
+SV_IMPL_REF(SwDocShell)
+
+void SwGlossaries::EditGroupDoc( const String& rGroup, const String& rShortName )
+{
+ SwTextBlocks* pGroup = GetGroupDoc( rGroup );
+ if(pGroup->IsOld())
+ {
+ pGroup->ConvertToNew();
+ if( pGroup->GetError() )
+ ErrorHandler::HandleError( pGroup->GetError() );
+ }
+
+ if( pGroup && pGroup->GetCount() )
+ {
+ SwDocShellRef xDocSh;
+
+ // erfrage welche View registriert ist. Im WebWriter gibts es keine
+ // normale View
+ USHORT nViewId = 0 != &SwView::Factory() ? 2 : 6;
+ String sLongName = pGroup->GetLongName(pGroup->GetIndex( rShortName ));
+
+ if( 6 == nViewId )
+ {
+ xDocSh = new SwWebGlosDocShell();
+ SwWebGlosDocShell* pDocSh = (SwWebGlosDocShell*)&xDocSh;
+ pDocSh->DoInitNew( 0 );
+
+ pDocSh->SetLongName( sLongName );
+ pDocSh->SetShortName( rShortName);
+ pDocSh->SetGroupName( rGroup );
+ }
+ else
+ {
+ xDocSh = new SwGlosDocShell();
+ SwGlosDocShell* pDocSh = (SwGlosDocShell*)&xDocSh;
+ pDocSh->DoInitNew( 0 );
+
+ pDocSh->SetLongName( sLongName );
+ pDocSh->SetShortName( rShortName );
+ pDocSh->SetGroupName( rGroup );
+ }
+
+ // Dokumenttitel setzen
+ SfxViewFrame* pFrame = SFX_APP()->CreateViewFrame( *xDocSh, nViewId );
+ String aDocTitle(SW_RES( STR_GLOSSARY ));
+ aDocTitle += sLongName;
+
+ BOOL bDoesUndo = xDocSh->GetDoc()->DoesUndo();
+ xDocSh->GetDoc()->DoUndo( FALSE );
+
+ xDocSh->GetWrtShell()->InsertGlossary( *pGroup, rShortName );
+ if( !xDocSh->GetDoc()->GetPrt() )
+ {
+ // wir erzeugen einen default SfxPrinter.
+ // Das ItemSet wird vom Sfx geloescht!
+ SfxItemSet *pSet = new SfxItemSet( xDocSh->GetDoc()->GetAttrPool(),
+ FN_PARAM_ADDPRINTER, FN_PARAM_ADDPRINTER,
+ SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
+ SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
+ 0 );
+ SfxPrinter* pPrinter = new SfxPrinter( pSet );
+
+ // und haengen ihn ans Dokument.
+ xDocSh->GetDoc()->SetPrt( pPrinter );
+ }
+
+ xDocSh->SetTitle( aDocTitle );
+ xDocSh->GetDoc()->DoUndo( bDoesUndo );
+ xDocSh->GetDoc()->ResetModified();
+ pFrame->GetFrame()->Appear();
+ delete pGroup;
+ }
+}
+
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.59 2000/09/18 16:05:57 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.58 2000/05/10 11:53:43 os
+ Basic API removed
+
+ Revision 1.57 1999/12/22 09:21:04 os
+ #71203# editing of AutoText: keep macros
+
+ Revision 1.56 1999/07/23 08:23:24 OS
+ #67828# glossary - methods on doc level
+
+
+ Rev 1.55 23 Jul 1999 10:23:24 OS
+ #67828# glossary - methods on doc level
+
+ Rev 1.54 09 Feb 1999 10:47:04 OS
+ #61205# AutoText-Gruppen koennen beliebige Namen erhalten
+
+ Rev 1.53 22 Jan 1999 13:06:14 JP
+ Task #61076#: UndoFlag zuruecksetzen
+
+ Rev 1.52 27 Jun 1998 15:59:06 JP
+ neu: Textbausteine ohne Formatierung
+
+ Rev 1.51 19 Jan 1998 11:57:42 MBA
+ CreateViewFrame verwenden
+
+ Rev 1.50 25 Nov 1997 11:58:26 TJ
+ include fuer SfxPrinter
+
+ Rev 1.49 24 Nov 1997 16:47:44 MA
+ includes
+
+ Rev 1.48 13 Nov 1997 13:21:16 MH
+ chg: header
+
+ Rev 1.47 03 Sep 1997 19:09:14 MBA
+ Kein wswslots.hxx mehr includen
+
+ Rev 1.46 01 Sep 1997 13:16:34 OS
+ DLL-Umstellung
+
+ Rev 1.45 26 Aug 1997 16:05:10 HJS
+ internal comp. err. - header vor-includet
+
+ Rev 1.44 05 Aug 1997 16:14:20 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.43 31 Jul 1997 15:22:04 MH
+ chg: header
+
+ Rev 1.42 11 Jul 1997 16:35:46 JP
+ Bug #41481#: SaveGlossaryDoc - beachtet auch Tabellen am Anfang
+
+ Rev 1.41 07 Apr 1997 16:08:24 MH
+ chg: header
+
+ Rev 1.40 12 Feb 1997 12:01:16 JP
+ neu: WebGlossryDocShell
+
+ Rev 1.39 11 Nov 1996 11:05:46 MA
+ ResMgr
+
+ Rev 1.38 15 Oct 1996 14:13:26 JP
+ AutoCorrCfg in die OfficeApplication verschoben
+
+ Rev 1.37 23 Sep 1996 08:07:54 OS
+ Statusstring fuer SID_SAVE
+
+ Rev 1.36 28 Aug 1996 14:12:12 OS
+ includes
+
+ Rev 1.35 09 Aug 1996 11:08:04 OS
+ Appear am Frame aufrufen, damit das Fenster richtige erkannt wird
+
+ Rev 1.34 08 Aug 1996 21:37:50 JP
+ Save: das gesamte Doc selektieren, nicht den akt. Bereich
+
+ Rev 1.33 09 Jul 1996 10:11:16 OS
+ Autotexte relativ sichern
+
+ Rev 1.32 25 Jun 1996 18:39:36 HJS
+ includes
+
+ Rev 1.31 19 Jun 1996 12:29:24 OM
+ Umstellung auf 323
+
+ Rev 1.30 27 Mar 1996 09:39:20 OS
+ GlosDocShell ueber Ref anlegen
+
+ Rev 1.29 22 Mar 1996 14:06:50 HJS
+ umstellung 311
+
+ Rev 1.28 14 Dec 1995 23:00:40 JP
+ Filter Umstellung: ErrorHandling und Read/Write-Parameter
+
+ Rev 1.27 03 Dec 1995 11:24:32 OS
+ +include itemdef.hxx
+
+ Rev 1.26 29 Nov 1995 13:47:00 OS
+ -slotadd.hxx
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/misc/impfnote.hxx b/sw/source/ui/misc/impfnote.hxx
new file mode 100644
index 000000000000..a60e2842a621
--- /dev/null
+++ b/sw/source/ui/misc/impfnote.hxx
@@ -0,0 +1,155 @@
+/*************************************************************************
+ *
+ * $RCSfile: impfnote.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _IMPFNOTE_HXX
+#define _IMPFNOTE_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.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 _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+class SwWrtShell;
+
+class SwEndNoteOptionPage : public SfxTabPage
+{
+ RadioButton aPosPageBox;
+ RadioButton aPosChapterBox;
+ GroupBox aPosGrp;
+
+ ListBox aNumViewBox;
+ FixedText aOffsetLbl;
+ NumericField aOffsetFld;
+ ListBox aNumCountBox;
+ FixedText aPrefixFT;
+ Edit aPrefixED;
+ FixedText aSuffixFT;
+ Edit aSuffixED;
+ GroupBox aNumGrp;
+
+ FixedText aParaTemplLbl;
+ ListBox aParaTemplBox;
+ FixedText aPageTemplLbl;
+ ListBox aPageTemplBox;
+ GroupBox aTemplGrp;
+
+ FixedText aFtnCharAnchorTemplLbl;
+ ListBox aFtnCharAnchorTemplBox;
+ FixedText aFtnCharTextTemplLbl;
+ ListBox aFtnCharTextTemplBox;
+ GroupBox aCharTemplGrp;
+
+ FixedText aContLbl;
+ Edit aContEdit;
+ FixedText aContFromLbl;
+ Edit aContFromEdit;
+ GroupBox aContGrp;
+
+ String aNumPage;
+ SwWrtShell *pSh;
+ BOOL bPosDoc;
+ BOOL bEndNote;
+
+ inline void SelectNumbering(int eNum);
+ int GetNumbering() const;
+
+ DECL_LINK( PosPage, Button * );
+ DECL_LINK( PosChapter, Button * );
+ DECL_LINK( NumCount, ListBox * );
+
+
+public:
+ SwEndNoteOptionPage( Window *pParent, BOOL bEndNote,
+ const SfxItemSet &rSet );
+ ~SwEndNoteOptionPage();
+
+ static SfxTabPage *Create(Window *pParent, const SfxItemSet &rSet);
+ virtual BOOL FillItemSet(SfxItemSet &rSet);
+ virtual void Reset( const SfxItemSet& );
+
+ void SetShell( SwWrtShell &rShell );
+};
+
+class SwFootNoteOptionPage : public SwEndNoteOptionPage
+{
+ SwFootNoteOptionPage( Window *pParent, const SfxItemSet &rSet );
+ ~SwFootNoteOptionPage();
+
+public:
+ static SfxTabPage *Create(Window *pParent, const SfxItemSet &rSet);
+};
+
+
+
+#endif
diff --git a/sw/source/ui/misc/insfnote.cxx b/sw/source/ui/misc/insfnote.cxx
new file mode 100644
index 000000000000..19caab6a7539
--- /dev/null
+++ b/sw/source/ui/misc/insfnote.cxx
@@ -0,0 +1,487 @@
+/*************************************************************************
+ *
+ * $RCSfile: insfnote.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SVX_CHARMAP_HXX //autogen
+#include <svx/charmap.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+
+#ifndef _FMTFTN_HXX //autogen
+#include <fmtftn.hxx>
+#endif
+#include <swundo.hxx>
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _BASESH_HXX
+#include <basesh.hxx>
+#endif
+#ifndef _INSFNOTE_HXX
+#include <insfnote.hxx>
+#endif
+
+#ifndef _MISC_HRC
+#include <misc.hrc>
+#endif
+#ifndef _INSFNOTE_HRC
+#include <insfnote.hrc>
+#endif
+
+static BOOL bFootnote = TRUE;
+
+/*------------------------------------------------------------------------
+ Beschreibung: Einfuegen der Fussnote durch OK
+------------------------------------------------------------------------*/
+
+void __EXPORT SwInsFootNoteDlg::Apply()
+{
+ String aStr;
+
+ if ( aNumberCharBtn.IsChecked() )
+ aStr = aNumberCharEdit.GetText();
+
+ if ( bEdit )
+ {
+ rSh.StartAction();
+ rSh.Left();
+ rSh.StartUndo( UNDO_START );
+ SwFmtFtn aNote( aEndNoteBtn.IsChecked() );
+ aNote.SetNumStr( aStr );
+
+ if( rSh.SetCurFtn( aNote ) && bExtCharAvailable )
+ {
+ rSh.Right(TRUE);
+ SfxItemSet aSet( rSh.GetAttrPool(), RES_CHRATR_FONT, RES_CHRATR_FONT );
+ rSh.GetAttr( aSet );
+ SvxFontItem &rFont = (SvxFontItem &) aSet.Get( RES_CHRATR_FONT );
+ SvxFontItem aFont( rFont.GetFamily(), aFontName,
+ rFont.GetStyleName(), rFont.GetPitch(),
+ eCharSet );
+ aSet.Put( aFont );
+ rSh.SetAttr( aSet, SETATTR_DONTEXPAND );
+ rSh.ResetSelect(0, FALSE);
+ rSh.Left();
+ }
+ rSh.EndUndo( UNDO_END );
+ rSh.EndAction();
+ }
+ else
+ {
+ rSh.StartUndo( UIUNDO_INSERT_FOOTNOTE );
+ rSh.InsertFootnote( aStr, aEndNoteBtn.IsChecked(), !bExtCharAvailable );
+
+ if ( bExtCharAvailable )
+ {
+ rSh.Left( TRUE );
+ SfxItemSet aSet( rSh.GetAttrPool(), RES_CHRATR_FONT, RES_CHRATR_FONT );
+ rSh.GetAttr( aSet );
+ SvxFontItem &rFont = (SvxFontItem &) aSet.Get( RES_CHRATR_FONT );
+ SvxFontItem aFont( rFont.GetFamily(), aFontName,
+ rFont.GetStyleName(), rFont.GetPitch(),
+ eCharSet );
+ aSet.Put( aFont );
+ rSh.SetAttr( aSet, SETATTR_DONTEXPAND );
+ // zur Bearbeitung des Fussnotentextes
+ rSh.ResetSelect(0, FALSE);
+ rSh.GotoFtnTxt();
+ }
+ rSh.EndUndo( UIUNDO_INSERT_FOOTNOTE );
+ }
+
+ bFootnote = aFtnBtn.IsChecked();
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK_INLINE_START( SwInsFootNoteDlg, NumberCharHdl, Button *, EMPTYARG )
+{
+ aNumberCharEdit.GrabFocus();
+ aOkBtn.Enable( aNumberCharEdit.GetText().Len() || bExtCharAvailable );
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwInsFootNoteDlg, NumberCharHdl, Button *, EMPTYARG )
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK_INLINE_START( SwInsFootNoteDlg, NumberEditHdl, void *, EMPTYARG )
+{
+ aNumberCharBtn.Check( TRUE );
+ aOkBtn.Enable( 0 != aNumberCharEdit.GetText().Len() );
+
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwInsFootNoteDlg, NumberEditHdl, void *, EMPTYARG )
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK_INLINE_START( SwInsFootNoteDlg, NumberAutoBtnHdl, Button *, EMPTYARG )
+{
+ aOkBtn.Enable( TRUE );
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwInsFootNoteDlg, NumberAutoBtnHdl, Button *, EMPTYARG )
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwInsFootNoteDlg, NumberExtCharHdl, Button *, EMPTYARG )
+{
+ aNumberCharBtn.Check( TRUE );
+
+ SfxItemSet aSet( rSh.GetAttrPool(), RES_CHRATR_FONT, RES_CHRATR_FONT );
+ rSh.GetAttr( aSet );
+ const SvxFontItem &rFont = (SvxFontItem &) aSet.Get( RES_CHRATR_FONT );
+
+ SvxCharacterMap* pDlg = new SvxCharacterMap(this, FALSE);
+
+ Font aDlgFont( pDlg->GetCharFont() );
+ aDlgFont.SetName( rFont.GetFamilyName() );
+ aDlgFont.SetCharSet( rFont.GetCharSet() );
+
+ pDlg->SetCharFont( aDlgFont );
+ if (RET_OK == pDlg->Execute())
+ {
+ String sExtChars(pDlg->GetCharacters());
+
+ aFontName = pDlg->GetCharFont().GetName();
+ eCharSet = pDlg->GetCharFont().GetCharSet();
+ aNumberCharEdit.SetText( sExtChars );
+ aNumberCharEdit.SetFont( pDlg->GetCharFont() );
+ bExtCharAvailable = TRUE;
+ aOkBtn.Enable(0 != aNumberCharEdit.GetText().Len());
+ }
+ delete pDlg;
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwInsFootNoteDlg, NextPrevHdl, Button *, pBtn )
+{
+ Apply();
+
+ // Hier zur naechsten Fuss/Endnote wandern
+ rSh.ResetSelect(0, FALSE);
+ if (pBtn == &aNextBT)
+ rSh.GotoNextFtnAnchor();
+ else
+ rSh.GotoPrevFtnAnchor();
+
+ Init();
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwInsFootNoteDlg::SwInsFootNoteDlg(Window *pParent, SwWrtShell &rShell, BOOL bEd) :
+
+ SvxStandardDialog(pParent,SW_RES(DLG_INS_FOOTNOTE)),
+
+ rSh(rShell),
+ bEdit(bEd),
+ bExtCharAvailable(FALSE),
+ aNumberAutoBtn (this,SW_RES(RB_NUMBER_AUTO)),
+ aNumberCharBtn (this,SW_RES(RB_NUMBER_CHAR)),
+ aNumberCharEdit (this,SW_RES(ED_NUMBER_CHAR)),
+ aNumberExtChar (this,SW_RES(BT_NUMBER_CHAR)),
+ aNumberFrm (this,SW_RES(GB_NUMBER)),
+ aFtnBtn (this,SW_RES(RB_TYPE_FTN)),
+ aEndNoteBtn (this,SW_RES(RB_TYPE_ENDNOTE)),
+ aTypeBox (this,SW_RES(GB_TYPE)),
+
+ aOkBtn (this,SW_RES(BT_OK)),
+ aCancelBtn (this,SW_RES(BT_CANCEL)),
+ aHelpBtn (this,SW_RES(BT_HELP)),
+ aPrevBT (this,SW_RES(BT_PREV)),
+ aNextBT (this,SW_RES(BT_NEXT))
+{
+ aNumberAutoBtn.SetClickHdl(LINK(this,SwInsFootNoteDlg,NumberAutoBtnHdl));
+ aNumberExtChar.SetClickHdl(LINK(this,SwInsFootNoteDlg,NumberExtCharHdl));
+ aNumberCharBtn.SetClickHdl(LINK(this,SwInsFootNoteDlg,NumberCharHdl));
+ aNumberCharEdit.SetModifyHdl(LINK(this,SwInsFootNoteDlg,NumberEditHdl));
+ aNumberCharEdit.SetMaxTextLen(10);
+ aNumberCharEdit.Enable();
+
+ aPrevBT.SetClickHdl(LINK(this, SwInsFootNoteDlg, NextPrevHdl));
+ aNextBT.SetClickHdl(LINK(this, SwInsFootNoteDlg, NextPrevHdl));
+
+ FreeResource();
+ rSh.SetCareWin(this);
+
+ if (bEdit)
+ {
+ Init();
+
+ aPrevBT.Show();
+ aNextBT.Show();
+ }
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwInsFootNoteDlg::~SwInsFootNoteDlg()
+{
+ rSh.SetCareWin(0);
+
+ if (bEdit)
+ rSh.ResetSelect(0, FALSE);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwInsFootNoteDlg::Init()
+{
+ SwFmtFtn aFtnNote;
+ String sNumStr;
+ Font aFont;
+ bExtCharAvailable = FALSE;
+
+ rSh.StartAction();
+
+ if( rSh.GetCurFtn( &aFtnNote ))
+ {
+ if(aFtnNote.GetNumStr().Len())
+ {
+ sNumStr = aFtnNote.GetNumStr();
+
+ rSh.Right(TRUE);
+ SfxItemSet aSet( rSh.GetAttrPool(), RES_CHRATR_FONT, RES_CHRATR_FONT );
+ rSh.GetAttr( aSet );
+ const SvxFontItem &rFont = (SvxFontItem &) aSet.Get( RES_CHRATR_FONT );
+
+ aFont = aNumberCharEdit.GetFont();
+ aFontName = rFont.GetFamilyName();
+ eCharSet = rFont.GetCharSet();
+ aFont.SetName(aFontName);
+ aFont.SetCharSet(eCharSet);
+ bExtCharAvailable = TRUE;
+ rSh.Left();
+ }
+ bFootnote = !aFtnNote.IsEndNote();
+ }
+ aNumberCharEdit.SetFont(aFont);
+
+ BOOL bNumChar = sNumStr.Len() != 0;
+
+ aNumberCharEdit.SetText(sNumStr);
+ aNumberCharBtn.Check(bNumChar);
+ aNumberAutoBtn.Check(!bNumChar);
+ if (bNumChar)
+ aNumberCharEdit.GrabFocus();
+
+ if (bFootnote)
+ aFtnBtn.Check();
+ else
+ aEndNoteBtn.Check();
+
+ BOOL bNext = rSh.GotoNextFtnAnchor();
+
+ if (bNext)
+ rSh.GotoPrevFtnAnchor();
+
+ BOOL bPrev = rSh.GotoPrevFtnAnchor();
+
+ if (bPrev)
+ rSh.GotoNextFtnAnchor();
+
+ aPrevBT.Enable(bPrev);
+ aNextBT.Enable(bNext);
+
+ rSh.Right(TRUE);
+
+ rSh.EndAction();
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.46 2000/09/18 16:05:57 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.45 2000/05/10 11:53:43 os
+ Basic API removed
+
+ Revision 1.44 2000/02/11 14:56:21 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.43 1999/12/22 19:50:26 jp
+ Bug #71204#: SetCurFtn - return change state
+
+ Revision 1.42 1998/04/02 15:17:46 OM
+ Fussnoten: Traveling u.a.
+
+
+ Rev 1.41 02 Apr 1998 17:17:46 OM
+ Fussnoten: Traveling u.a.
+
+ Rev 1.40 26 Feb 1998 19:01:10 MA
+ #47622# richtig initialisieren
+
+ Rev 1.39 09 Feb 1998 09:55:12 OM
+ #46894# Letzten Mode merken
+
+ Rev 1.38 12 Dec 1997 14:46:04 MA
+ undo chgftn jetzt in der core
+
+ Rev 1.37 12 Dec 1997 11:04:16 TJ
+ include
+
+ Rev 1.36 10 Dec 1997 13:08:56 MA
+ weiteres fuer Fuss-/Endnoten
+
+ Rev 1.35 24 Nov 1997 16:47:44 MA
+ includes
+
+ Rev 1.34 03 Nov 1997 13:22:42 MA
+ precomp entfernt
+
+ Rev 1.33 15 Aug 1997 12:19:34 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.32 07 Apr 1997 16:08:26 MH
+ chg: header
+
+ Rev 1.31 11 Nov 1996 11:05:44 MA
+ ResMgr
+
+ Rev 1.30 28 Aug 1996 14:12:10 OS
+ includes
+
+ Rev 1.29 17 Jul 1996 14:09:04 JP
+ SS von GetCurFtn geaendert
+
+ Rev 1.28 06 Feb 1996 15:21:08 JP
+ Link Umstellung 305
+
+ Rev 1.27 24 Nov 1995 16:58:44 OM
+ PCH->PRECOMPILED
+
+ Rev 1.26 08 Nov 1995 13:31:42 JP
+ Umstellung zur 301: Change -> Set
+
+ Rev 1.25 24 Oct 1995 18:19:22 MA
+ chg: AutoCheck bei Edit
+
+ Rev 1.24 23 Oct 1995 17:28:00 OS
+ Insert/EditFootnote recordable
+
+ Rev 1.23 12 Sep 1995 17:29:32 OM
+ Helpbutton eingefuegt
+
+ Rev 1.22 30 Aug 1995 14:00:46 MA
+ fix: __EXPORT'iert
+
+ Rev 1.21 24 Aug 1995 14:33:22 MA
+ swstddlg -> svxstandarddialog
+
+ Rev 1.20 21 Jun 1995 16:17:32 OS
+ Max. Fussnotenlaenge auf 10 begrenzt
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/misc/insfnote.hrc b/sw/source/ui/misc/insfnote.hrc
new file mode 100644
index 000000000000..780a89c5b85c
--- /dev/null
+++ b/sw/source/ui/misc/insfnote.hrc
@@ -0,0 +1,75 @@
+/*************************************************************************
+ *
+ * $RCSfile: insfnote.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#define RB_NUMBER_AUTO 1
+#define RB_NUMBER_CHAR 2
+#define ED_NUMBER_CHAR 3
+#define BT_NUMBER_CHAR 4
+#define GB_NUMBER 5
+#define GB_TYPE 6
+#define RB_TYPE_FTN 7
+#define RB_TYPE_ENDNOTE 8
+
+#define BT_OK 100
+#define BT_CANCEL 101
+#define BT_HELP 102
+#define BT_PREV 103
+#define BT_NEXT 104
diff --git a/sw/source/ui/misc/insfnote.src b/sw/source/ui/misc/insfnote.src
new file mode 100644
index 000000000000..0c5b2d3c83a7
--- /dev/null
+++ b/sw/source/ui/misc/insfnote.src
@@ -0,0 +1,318 @@
+/*************************************************************************
+ *
+ * $RCSfile: insfnote.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "misc.hrc"
+#include "insfnote.hrc"
+#include "helpid.h"
+ // #define DLG_INS_FOOTNOTE 257
+ModalDialog DLG_INS_FOOTNOTE
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 145 , 100 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Fußnote einfügen : Fu˜note einf³gen */
+ Text = "Fußnote einfügen" ;
+ Text [ ENGLISH ] = "Insert footnote" ;
+ Text [ norwegian ] = "Sette inn fotnote" ;
+ Text [ italian ] = "Inserisci nota a piè pagina" ;
+ Text [ portuguese_brazilian ] = "Inserir nota de rodapé" ;
+ Text [ portuguese ] = "Inserir nota de rodapé" ;
+ Text [ finnish ] = "Lisää alaviitteen" ;
+ Text [ danish ] = "Indsæt fodnote" ;
+ Text [ french ] = "Insérer une note de bas de page" ;
+ Text [ swedish ] = "Infoga fotnot" ;
+ Text [ dutch ] = "Voetnoot invoegen" ;
+ Text [ spanish ] = "Insertar nota al pie" ;
+ Text [ english_us ] = "Insert Footnote" ;
+ Moveable = TRUE ;
+ Edit ED_NUMBER_CHAR
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 54 , 27 ) ;
+ Size = MAP_APPFONT ( 23 , 12 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Left = TRUE ;
+ };
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 89 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 89 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 89 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ };
+ ImageButton BT_PREV
+ {
+ Pos = MAP_APPFONT ( 89 , 82 ) ;
+ Size = MAP_APPFONT ( 24 , 14 ) ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ SYMBOL = IMAGEBUTTON_PREV ;
+ };
+ ImageButton BT_NEXT
+ {
+ Pos = MAP_APPFONT ( 115 , 82 ) ;
+ Size = MAP_APPFONT ( 24 , 14 ) ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ SYMBOL = IMAGEBUTTON_NEXT ;
+ };
+ RadioButton RB_NUMBER_AUTO
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 54 , 10 ) ;
+ Text = "~Automatisch" ;
+ Text [ ENGLISH ] = "~Auto" ;
+ Text [ norwegian ] = "~Auto" ;
+ Text [ italian ] = "~Automatico" ;
+ Text [ portuguese_brazilian ] = "~Auto" ;
+ Text [ portuguese ] = "~Automática" ;
+ 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 ;
+ Group = TRUE ;
+ Check = 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 RB_NUMBER_CHAR
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 39 , 10 ) ;
+ Text = "~Zeichen" ;
+ Text [ ENGLISH ] = "~Char" ;
+ Text [ norwegian ] = "~Tegn" ;
+ Text [ italian ] = "~Carattere" ;
+ Text [ portuguese_brazilian ] = "~Caracter" ;
+ Text [ portuguese ] = "~Caracteres" ;
+ Text [ finnish ] = "~Merkki" ;
+ Text [ danish ] = "Tegn" ;
+ Text [ french ] = "~Caractère" ;
+ Text [ swedish ] = "~Tecken" ;
+ Text [ dutch ] = "~Teken" ;
+ Text [ spanish ] = "~Caracteres" ;
+ Text [ english_us ] = "~Character" ;
+ Text[ chinese_simplified ] = "×Ö·û(~C)";
+ Text[ russian ] = "Çíàê";
+ Text[ polish ] = "Znak";
+ Text[ japanese ] = "•¶Žš(~C)";
+ Text[ chinese_traditional ] = "¦r¤¸(~C)";
+ Text[ arabic ] = "ÃÍÑÝ";
+ Text[ greek ] = "×áñáêôÞñåò";
+ Text[ korean ] = "¹®ÀÚ(~C)";
+ Text[ turkish ] = "~Karakter";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_NUMBER
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 77 , 54 ) ;
+ Text = "Nummerierung" ;
+ Text [ ENGLISH ] = "Numbering" ;
+ Text [ norwegian ] = "Nummering" ;
+ Text [ italian ] = "Numerazione" ;
+ Text [ portuguese_brazilian ] = "Numeração" ;
+ Text [ portuguese ] = "Numeração" ;
+ Text [ finnish ] = "Numerointi" ;
+ Text [ danish ] = "Nummerering" ;
+ Text [ french ] = "Numérotation" ;
+ Text [ swedish ] = "Numrering" ;
+ Text [ dutch ] = "Nummering" ;
+ Text [ spanish ] = "Numeración" ;
+ Text [ english_us ] = "Numbering" ;
+ Text[ chinese_simplified ] = "񅧏";
+ Text[ russian ] = "Íóìåðàöèÿ";
+ Text[ polish ] = "Numeracja";
+ Text[ japanese ] = "”Ô†•t‚¯";
+ Text[ chinese_traditional ] = "½s¸¹";
+ Text[ arabic ] = "ÇáÊÑÞíã";
+ Text[ greek ] = "Áñßèìçóç";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Numaralama";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton BT_NUMBER_CHAR
+ {
+ Pos = MAP_APPFONT ( 54 , 42 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ Text = "..." ;
+ };
+ RadioButton RB_TYPE_FTN
+ {
+ Pos = MAP_APPFONT ( 12 , 70 ) ;
+ Size = MAP_APPFONT ( 64 , 10 ) ;
+ Text = "~Fußnote" ;
+ Text [ ENGLISH ] = "~Footnote" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Check = TRUE ;
+ Text [ portuguese ] = "~Nota de rodapé" ;
+ Text [ english_us ] = "~Footnote" ;
+ Text [ portuguese_brazilian ] = "~Fußnote" ;
+ Text [ swedish ] = "~Fotnot" ;
+ Text [ danish ] = "Fodnote" ;
+ Text [ italian ] = "~Nota a piè pagina" ;
+ Text [ spanish ] = "N~ota al pie" ;
+ Text [ french ] = "Note de ~bas de page" ;
+ Text [ dutch ] = "~Voetnoot" ;
+ Text[ chinese_simplified ] = "×¢½Å(~F)";
+ Text[ russian ] = "Îáû÷íàÿ";
+ Text[ polish ] = "Przypis ~dolny";
+ Text[ japanese ] = "‹r’(~‚e)";
+ Text[ chinese_traditional ] = "µù¸}(~F)";
+ Text[ arabic ] = "ÍÇÔíÉ ÓÝáíÉ";
+ Text[ greek ] = "Õðïóçìåßùóç";
+ Text[ korean ] = "°¢ÁÖ(~F)";
+ Text[ turkish ] = "~Dipnot";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_TYPE_ENDNOTE
+ {
+ Pos = MAP_APPFONT ( 12 , 83 ) ;
+ Size = MAP_APPFONT ( 64 , 10 ) ;
+ Text = "~Endnote" ;
+ Text [ ENGLISH ] = "~Endnote" ;
+ Text [ portuguese ] = "~Nota final" ;
+ Text [ english_us ] = "~Endnote" ;
+ Text [ portuguese_brazilian ] = "~Endnote" ;
+ Text [ swedish ] = "~Slutnot" ;
+ Text [ danish ] = "Slutnote" ;
+ Text [ italian ] = "~Nota di chiusura" ;
+ Text [ spanish ] = "Nota al ~final" ;
+ Text [ french ] = "~Note de fin" ;
+ Text [ dutch ] = "~Eindnoot" ;
+ Text[ chinese_simplified ] = "βע(~E)";
+ Text[ russian ] = "Êîíöåâàÿ";
+ Text[ polish ] = "P~rzypis koñcowy";
+ Text[ japanese ] = "•¶––‹r’(~‚d)";
+ Text[ chinese_traditional ] = "§Àª`(~E)";
+ Text[ arabic ] = "ÊÚáíÞ ÎÊÇãí";
+ Text[ greek ] = "Óçìåßùóç ôÝëïõò";
+ Text[ korean ] = "¹ÌÁÖ(~E)";
+ Text[ turkish ] = "~Sonnot";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_TYPE
+ {
+ Pos = MAP_APPFONT ( 6 , 60 ) ;
+ Size = MAP_APPFONT ( 77 , 36 ) ;
+ Text = "Art" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ english_us ] = "Type" ;
+ Text [ portuguese_brazilian ] = "Art" ;
+ Text [ swedish ] = "Typ" ;
+ Text [ danish ] = "Type" ;
+ Text [ italian ] = "Tipo" ;
+ Text [ spanish ] = "Tipo" ;
+ Text [ french ] = "Type" ;
+ Text [ dutch ] = "Type" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text[ chinese_simplified ] = "ÀàÐÍ";
+ Text[ russian ] = "Òèï ñíîñêè";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Ží—Þ";
+ Text[ chinese_traditional ] = "Ãþ«¬";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tür";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "²åÈë×¢½Å";
+ Text[ russian ] = "Âñòàâèòü ñíîñêó";
+ Text[ polish ] = "Wstaw przypis dolny";
+ Text[ japanese ] = "‹r’‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤Jµù¸}";
+ Text[ arabic ] = "ÅÏÑÇÌ ÍÇÔíÉ ÓÝáíÉ";
+ Text[ greek ] = "ÐñïóèÞêç õðïóçìåßùóçò";
+ Text[ korean ] = "°¢ÁÖ »ðÀÔ";
+ Text[ turkish ] = "Dipnot ekle";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/misc/insrule.cxx b/sw/source/ui/misc/insrule.cxx
new file mode 100644
index 000000000000..b41f96061c7c
--- /dev/null
+++ b/sw/source/ui/misc/insrule.cxx
@@ -0,0 +1,377 @@
+/*************************************************************************
+ *
+ * $RCSfile: insrule.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "uiparam.hxx"
+#include "hintids.hxx"
+
+#ifndef _GALLERY_HXX_ //autogen
+#include <svx/gallery.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+
+#include "swtypes.hxx"
+#include "docsh.hxx"
+#include "insrule.hxx"
+#include "swvset.hxx"
+#include "insrule.hrc"
+#include "misc.hrc"
+#include "helpid.h"
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+SwInsertGrfRulerDlg::SwInsertGrfRulerDlg( Window* pParent, SwDocShell* pDocSh ) :
+ SfxModalDialog(pParent, SW_RES(DLG_INSERT_RULER)),
+ aSelectionGB(this, ResId(GB_SEL )),
+ pExampleVS (new SwRulerValueSet(this, ResId(VS_EXAMPLE ), aGrfNames, pDocSh)),
+ aOkPB (this, ResId(PB_OK )),
+ aCancelPB (this, ResId(PB_CANCEL )),
+ aHelpPB (this, ResId(PB_HELP )),
+ sSimple (ResId(ST_SIMPLE)),
+ nSelPos(USHRT_MAX)
+{
+ FreeResource();
+ pExampleVS->SetLineCount(6);
+ pExampleVS->SetColCount(1);
+ pExampleVS->SetSelectHdl(LINK(this, SwInsertGrfRulerDlg, SelectHdl));
+ pExampleVS->SetDoubleClickHdl(LINK(this, SwInsertGrfRulerDlg, DoubleClickHdl));
+ pExampleVS->GrabFocus();
+
+ // Grafiknamen ermitteln
+ GalleryExplorer::FillObjList( GALLERY_THEME_RULERS, aGrfNames );
+ pExampleVS->SetHelpId(HID_VS_RULER);
+ Color aColor(COL_WHITE);
+ pExampleVS->InsertItem( 1, 1);
+ pExampleVS->SetItemText( 1, sSimple);
+
+ for(USHORT i = 1; i <= aGrfNames.Count(); i++)
+ {
+ pExampleVS->InsertItem( i + 1, i);
+ pExampleVS->SetItemText( i + 1, *((String*)aGrfNames.GetObject(i-1)));
+ }
+ pExampleVS->Show();
+
+}
+/*-----------------14.02.97 13.18-------------------
+
+--------------------------------------------------*/
+
+SwInsertGrfRulerDlg::~SwInsertGrfRulerDlg()
+{
+ delete pExampleVS;
+}
+
+/*-----------------14.02.97 13.17-------------------
+
+--------------------------------------------------*/
+
+String SwInsertGrfRulerDlg::GetGraphicName()
+{
+ String sRet;
+ if(nSelPos != USHRT_MAX)
+ {
+ SvxBmpItemInfo* pInfo = pExampleVS->FindInfo(nSelPos);
+ if(pInfo)
+ sRet = *pInfo->pBrushItem->GetGraphicLink();
+ }
+ return sRet;
+}
+
+/*-----------------14.02.97 13.20-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK(SwInsertGrfRulerDlg, SelectHdl, ValueSet*, pVS)
+{
+ nSelPos = pVS->GetSelectItemId();
+ aOkPB.Enable();
+ return 0;
+}
+
+/*-----------------14.02.97 14.17-------------------
+
+--------------------------------------------------*/
+
+SwRulerValueSet::SwRulerValueSet( Window* pParent,
+ const ResId& rResId,
+ const List& rStrNames,
+ SwDocShell* pDocSh) :
+ SvxBmpNumValueSet(pParent, rResId, rStrNames),
+ pSwDocSh(pDocSh)
+{
+
+ SetStyle( GetStyle()
+ & ~WB_ITEMBORDER );
+
+}
+
+/*-----------------14.02.97 14.17-------------------
+
+--------------------------------------------------*/
+
+SwRulerValueSet::~SwRulerValueSet()
+{
+}
+
+
+/*-----------------13.02.97 09.41-------------------
+
+--------------------------------------------------*/
+
+IMPL_STATIC_LINK(SwRulerValueSet, GraphicArrivedHdl_Impl, SvxBrushItem*, pItem)
+{
+ // Ueber Timer wird ein Format angeworfen
+ pThis->GetFormatTimer().Start();
+ return 0;
+}
+
+/*-----------------14.02.97 13.42-------------------
+
+--------------------------------------------------*/
+
+void __EXPORT SwRulerValueSet::UserDraw( const UserDrawEvent& rUDEvt )
+{
+ Rectangle aRect = rUDEvt.GetRect();
+ OutputDevice* pDev = rUDEvt.GetDevice();
+ USHORT nItemId = rUDEvt.GetItemId();
+ Point aBLPos = aRect.TopLeft();
+
+ const List& rStrList = GetStringList();
+ // Itemzaehlung beginnt bei 1, und die 1. ist die einfache Linie
+ if(nItemId > 1)
+ {
+ if(rStrList.Count() > nItemId - 2)
+ {
+ String* pGrfName = (String*)rStrList.GetObject(nItemId - 2);
+ SvxBmpItemInfo* pInfo;
+ if(0 == (pInfo = FindInfo(nItemId)))
+ {
+ pInfo = new SvxBmpItemInfo();
+ pInfo->nItemId = nItemId;
+ pInfo->pBrushItem = new SvxBrushItem(*pGrfName, aEmptyStr, GPOS_AREA);
+ pInfo->pBrushItem->SetDoneLink(STATIC_LINK(
+ this, SwRulerValueSet, GraphicArrivedHdl_Impl));
+ GetGrfBrushItems().Insert(pInfo);
+ }
+
+ const Graphic* pGraphic = pInfo->pBrushItem->GetGraphic(pSwDocSh);
+
+ if(pGraphic)
+ {
+ Size aGrfSize = pGraphic->GetPrefSize();
+ if(aGrfSize.Width() && aGrfSize.Height())
+ {
+ int nRelGrf = aGrfSize.Height() * 100 / aGrfSize.Width();
+ Size aWinSize = aRect.GetSize();
+ Size aPaintSize = aWinSize;
+ int nRelWin = aWinSize.Height() * 100 / aWinSize.Width();
+ if(nRelGrf > nRelWin)
+ {
+ aPaintSize.Width() = aWinSize.Height() * 100 / nRelGrf;
+ aBLPos.X() += (aWinSize.Width() - aPaintSize.Width()) /2;
+ }
+ else
+ {
+ aPaintSize.Height() = aWinSize.Width() * nRelGrf/100;
+ aBLPos.Y() += (aWinSize.Height() - aPaintSize.Height()) /2;
+ }
+ aBLPos.X() -= aPaintSize.Width() /2;
+ aBLPos.Y() -= aPaintSize.Height() /2;
+
+ aPaintSize.Width() *= 2;
+ aPaintSize.Height() *= 2;
+ if(aPaintSize.Height() < 2)
+ aPaintSize.Height() = 2;
+ Region aRegion = pDev->GetClipRegion();
+ pDev->SetClipRegion(aRect);
+ pGraphic->Draw(pDev, aBLPos, aPaintSize);
+ pDev->SetClipRegion(aRegion);
+ }
+ }
+ else
+ {
+ SetGrfNotFound(TRUE);
+ }
+ }
+ }
+ else
+ {
+ // Text fuer einfache Linie painten
+ Font aOldFont = pDev->GetFont();
+ Font aFont = pDev->GetFont();
+ Size aSize = aFont.GetSize();
+ int nRectHeight = aRect.GetHeight();
+ aSize.Height() = nRectHeight * 2 / 3;
+ aFont.SetSize(aSize);
+ pDev->SetFont(aFont);
+ String aText(GetItemText(nItemId));
+ aSize.Width() = pDev->GetTextWidth(aText);
+ aSize.Height() = pDev->GetTextHeight();
+ Point aPos(aBLPos);
+ aPos.Y() += (nRectHeight - aSize.Height()) / 2;
+ aPos.X() += (aRect.GetWidth() - aSize.Width()) / 2;
+ pDev->DrawText(aPos, aText);
+
+ pDev->SetFont(aOldFont);
+ }
+}
+
+/*-----------------15.02.97 10.03-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK(SwInsertGrfRulerDlg, DoubleClickHdl, ValueSet*, pVS)
+{
+ EndDialog(RET_OK);
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.22 2000/09/18 16:05:57 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.21 2000/09/05 10:40:43 kz
+ chg. SetWinStyle/GetWinStyle to SetStyle/GetStyle
+
+ Revision 1.20 2000/04/18 15:08:17 os
+ UNICODE
+
+ Revision 1.19 2000/02/11 14:56:03 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.18 1999/03/16 11:43:36 MA
+ #62507# Ruler uber ID besorgen
+
+
+ Rev 1.17 16 Mar 1999 12:43:36 MA
+ #62507# Ruler uber ID besorgen
+
+ Rev 1.16 18 Nov 1998 08:31:54 OS
+ #58263# Numerierung in den Svx - Reste
+
+ Rev 1.15 17 Nov 1998 13:01:56 OS
+ #58263# alte Methoden verschoben
+
+ Rev 1.14 17 Mar 1998 17:04:24 OS
+ Focus initial ins ValueSet#48169#
+
+ Rev 1.13 24 Nov 1997 16:47:42 MA
+ includes
+
+ Rev 1.12 22 Sep 1997 15:14:42 OS
+ MessageBox nicht im Dlg-Ctor aufrufen #44095#
+
+ Rev 1.11 09 Sep 1997 13:34:28 OS
+ Header aufgeteilt
+
+ Rev 1.10 09 Aug 1997 13:31:34 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.9 08 Aug 1997 17:28:26 OM
+ Headerfile-Umstellung
+
+ Rev 1.8 26 May 1997 10:32:18 TRI
+ __EXPORT benutzt
+
+ Rev 1.7 23 May 1997 10:09:36 OS
+ Ableitung von SfxModalDialog
+
+ Rev 1.6 10 Mar 1997 17:28:22 OS
+ fuer NULL-Size nicht painten (DrawObjekte)
+
+ Rev 1.5 25 Feb 1997 12:21:08 OS
+ Mindesthoehe fuer Ruler: 2 Pixel
+
+ Rev 1.4 22 Feb 1997 20:21:42 OS
+ doppelte Groesse, nur noch 6 Zeilen
+
+ Rev 1.3 20 Feb 1997 17:50:22 OS
+ Itemborder abgeschaltet
+
+ Rev 1.2 19 Feb 1997 16:22:22 OS
+ Dialogtitel jetzt >Horizontale Linie einfuegen<
+
+ Rev 1.1 17 Feb 1997 16:38:08 OS
+ Offset korrigiert
+
+ Rev 1.0 15 Feb 1997 15:15:36 OS
+ Initial revision.
+
+ --------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/misc/insrule.hrc b/sw/source/ui/misc/insrule.hrc
new file mode 100644
index 000000000000..a395f187bc2f
--- /dev/null
+++ b/sw/source/ui/misc/insrule.hrc
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * $RCSfile: insrule.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "misc.hrc"
+
+#define GB_SEL 1
+#define VS_EXAMPLE 2
+#define PB_OK 3
+#define PB_CANCEL 4
+#define PB_HELP 5
+#define ST_SIMPLE 6
diff --git a/sw/source/ui/misc/insrule.src b/sw/source/ui/misc/insrule.src
new file mode 100644
index 000000000000..9e71fec7f9a7
--- /dev/null
+++ b/sw/source/ui/misc/insrule.src
@@ -0,0 +1,171 @@
+/*************************************************************************
+ *
+ * $RCSfile: insrule.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "insrule.hrc"
+#include "helpid.h"
+ModalDialog DLG_INSERT_RULER
+{
+ HelpID = HID_RULER_DIALOG ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 242 , 124 ) ;
+ Text = "Horizontale Linie einfügen" ;
+ Text [ ENGLISH ] = "InsertRuler" ;
+ Moveable = TRUE ;
+ GroupBox GB_SEL
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 174 , 118 ) ;
+ Text = "Auswahl" ;
+ Text [ ENGLISH ] = "Selection" ;
+ Text [ english_us ] = "Selection" ;
+ Text [ portuguese_brazilian ] = "Auswahl" ;
+ Text [ swedish ] = "Urval" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ italian ] = "Selezione" ;
+ Text [ spanish ] = "Selección" ;
+ Text [ french ] = "Sélection" ;
+ Text [ dutch ] = "Selectie" ;
+ Text [ portuguese ] = "Selecção" ;
+ 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 ] = " ";
+ };
+ Control VS_EXAMPLE
+ {
+ Pos = MAP_APPFONT ( 9 , 12 ) ;
+ Size = MAP_APPFONT ( 168 , 106 ) ;
+ Hide = TRUE ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ };
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 186 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ Disable = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 186 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 186 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ String ST_SIMPLE
+ {
+ Text = "Einfach" ;
+ Text [ English ] = "Simple" ;
+ Text [ portuguese ] = "Simples" ;
+ Text [ english_us ] = "Single" ;
+ Text [ portuguese_brazilian ] = "Einfach" ;
+ Text [ swedish ] = "Enkel" ;
+ Text [ danish ] = "Enkelt" ;
+ Text [ italian ] = "Semplice" ;
+ Text [ spanish ] = "Sencilla" ;
+ Text [ french ] = "Simple" ;
+ Text [ dutch ] = "Enkel" ;
+ Text[ chinese_simplified ] = "µ¥Ïß";
+ Text[ russian ] = "Îáû÷íàÿ";
+ Text[ polish ] = "Pojedyncze";
+ Text[ japanese ] = "¼ÝÌßÙ";
+ Text[ chinese_traditional ] = "³æ½u";
+ Text[ arabic ] = "ãÝÑÏ";
+ Text[ greek ] = "Áðëü";
+ Text[ korean ] = "´ÜÀÏ";
+ Text[ turkish ] = "Tek";
+ Text[ language_user1 ] = " ";
+ };
+ Text [ english_us ] = "Insert Horizontal Ruler" ;
+ Text [ portuguese_brazilian ] = "Horizontale Linie einfügen" ;
+ Text [ swedish ] = "Infoga horisontell linje" ;
+ Text [ danish ] = "Indsæt vandret linje" ;
+ Text [ italian ] = "Inserisci linea orizzontale" ;
+ Text [ spanish ] = "Insertar línea horizontal" ;
+ Text [ french ] = "Insertion de ligne horizontale" ;
+ Text [ dutch ] = "Horizontale lijn invoegen" ;
+ Text [ portuguese ] = "Inserir linha horizontal" ;
+ Text[ chinese_simplified ] = "²åÈëˮƽÏß";
+ Text[ russian ] = "Âñòàâèòü ãîðèçîíòàëüíóþ ëèíèþ";
+ Text[ polish ] = "Wstaw liniê poziom¹";
+ Text[ japanese ] = "…•½ü‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¤ô¥­½u";
+ Text[ arabic ] = "ÅÏÑÇÌ ÎØ ÃÝÞí";
+ Text[ greek ] = "ÐñïóèÞêç ïñéæüíôéáò ãñáììÞò";
+ Text[ korean ] = "¼öÆò ´«±ÝÀÚ »ðÀÔ";
+ Text[ turkish ] = "Yatay çizgi ekle";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/misc/linenum.cxx b/sw/source/ui/misc/linenum.cxx
new file mode 100644
index 000000000000..4513deaae704
--- /dev/null
+++ b/sw/source/ui/misc/linenum.cxx
@@ -0,0 +1,431 @@
+/*************************************************************************
+ *
+ * $RCSfile: linenum.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+
+#ifndef _SFXSTYLE_HXX //autogen
+#include <svtools/style.hxx>
+#endif
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+#ifndef _SWVIEW_HXX //autogen
+#include <view.hxx>
+#endif
+
+#ifndef _WRTSH_HXX //autogen
+#include <wrtsh.hxx>
+#endif
+
+#ifndef _SWDOCSH_HXX //autogen
+#include <docsh.hxx>
+#endif
+
+#ifndef _CHARFMT_HXX //autogen
+#include <charfmt.hxx>
+#endif
+
+#ifndef _FLDMGR_HXX //autogen
+#include <fldmgr.hxx>
+#endif
+
+#ifndef _DOC_HXX //autogen
+#include <doc.hxx>
+#endif
+
+#ifndef _DOCSTYLE_HXX //autogen
+#include <docstyle.hxx>
+#endif
+
+#include "fldbas.hxx"
+#include "lineinfo.hxx"
+#include "globals.hrc"
+#include "linenum.hrc"
+#include "linenum.hxx"
+#include "uitool.hxx"
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwLineNumberingDlg::SwLineNumberingDlg(SwView *pVw) :
+ SfxSingleTabDialog(&pVw->GetViewFrame()->GetWindow(), 0, 0),
+ pSh(pVw->GetWrtShellPtr())
+{
+ // TabPage erzeugen
+ SfxTabPage* pPage = SwLineNumberingPage::Create(this, *(SfxItemSet*)0);
+ SetTabPage(pPage);
+
+ GetOKButton()->SetClickHdl(LINK(this, SwLineNumberingDlg, OKHdl));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+__EXPORT SwLineNumberingDlg::~SwLineNumberingDlg()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwLineNumberingDlg, OKHdl, Button *, pBtn )
+{
+ if (GetOKButton()->IsEnabled())
+ {
+ SfxTabPage* pPage = GetTabPage();
+ if (pPage)
+ pPage->FillItemSet(*(SfxItemSet*)0);
+
+ EndDialog( RET_OK );
+ }
+
+ return 0;
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+SwLineNumberingPage::SwLineNumberingPage( Window* pParent,
+ const SfxItemSet& rSet )
+ : SfxTabPage(pParent, SW_RES(TP_LINENUMBERING), rSet),
+ aNumberingOnCB ( this, SW_RES( CB_NUMBERING_ON )),
+ aCharStyleFT ( this, SW_RES( FT_CHAR_STYLE )),
+ aCharStyleLB ( this, SW_RES( LB_CHAR_STYLE )),
+ aFormatFT ( this, SW_RES( FT_FORMAT )),
+ aFormatLB ( this, SW_RES( LB_FORMAT )),
+ aPosFT ( this, SW_RES( FT_POS )),
+ aPosLB ( this, SW_RES( LB_POS )),
+ aOffsetFT ( this, SW_RES( FT_OFFSET )),
+ aOffsetMF ( this, SW_RES( MF_OFFSET )),
+ aNumIntervalFT ( this, SW_RES( FT_NUM_INVERVAL )),
+ aNumIntervalNF ( this, SW_RES( NF_NUM_INVERVAL )),
+ aNumRowsFT ( this, SW_RES( FT_NUM_ROWS )),
+ aDisplayGB ( this, SW_RES( GB_DISPLAY )),
+ aDivisorFT ( this, SW_RES( FT_DIVISOR )),
+ aDivisorED ( this, SW_RES( ED_DIVISOR )),
+ aDivIntervalFT ( this, SW_RES( FT_DIV_INTERVAL )),
+ aDivIntervalNF ( this, SW_RES( NF_DIV_INTERVAL )),
+ aDivRowsFT ( this, SW_RES( FT_DIV_ROWS )),
+ aDivisorGB ( this, SW_RES( GB_DIVISOR )),
+ aCountEmptyLinesCB ( this, SW_RES( CB_COUNT_EMPTYLINES )),
+ aCountFrameLinesCB ( this, SW_RES( CB_COUNT_FRAMELINES )),
+ aRestartEachPageCB ( this, SW_RES( CB_RESTART_PAGE )),
+ aCountGB ( this, SW_RES( GB_COUNT ))
+
+{
+ FreeResource();
+ SwLineNumberingDlg *pDlg = (SwLineNumberingDlg *)GetParent();
+ pSh = pDlg->GetWrtShell();
+ // Zeichenvorlagen
+ ::FillCharStyleListBox(aCharStyleLB, pSh->GetView().GetDocShell());
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+__EXPORT SwLineNumberingPage::~SwLineNumberingPage()
+{
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+SfxTabPage* __EXPORT SwLineNumberingPage::Create( Window* pParent, const SfxItemSet& rSet )
+{
+ return new SwLineNumberingPage( pParent, rSet );
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+void __EXPORT SwLineNumberingPage::Reset( const SfxItemSet& rSet )
+{
+ const SwLineNumberInfo &rInf = pSh->GetLineNumberInfo();
+
+ String sStyleName(rInf.GetCharFmt(*pSh->GetDoc())->GetName());
+ const USHORT nPos = aCharStyleLB.GetEntryPos(sStyleName);
+
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ aCharStyleLB.SelectEntryPos(nPos);
+ else
+ {
+ if (sStyleName.Len())
+ {
+ aCharStyleLB.InsertEntry(sStyleName);
+ aCharStyleLB.SelectEntry(sStyleName);
+ }
+ }
+
+ // Format
+ SwFldMgr aMgr( pSh );
+ USHORT nSelFmt = rInf.GetNumType().eType;
+ USHORT nCnt = aMgr.GetFormatCount( TYP_SEQFLD, FALSE );
+
+ for( USHORT i = 0; i < nCnt; i++)
+ {
+ aFormatLB.InsertEntry(aMgr.GetFormatStr( TYP_SEQFLD, i));
+ USHORT nFmtId = aMgr.GetFormatId( TYP_SEQFLD, i );
+ aFormatLB.SetEntryData( i, (void*)nFmtId );
+ if( nFmtId == nSelFmt )
+ aFormatLB.SelectEntryPos( i );
+ }
+
+ if ( !aFormatLB.GetSelectEntryCount() )
+ aFormatLB.SelectEntryPos(aFormatLB.GetEntryCount() - 1);
+
+ // Position
+ aPosLB.SelectEntryPos((USHORT)rInf.GetPos());
+
+ // Offset
+ USHORT nOffset = rInf.GetPosFromLeft();
+ if (nOffset == USHRT_MAX)
+ nOffset = 0;
+
+ aOffsetMF.SetValue(aOffsetMF.Normalize(nOffset), FUNIT_TWIP);
+
+ // Numerierungsoffset
+ aNumIntervalNF.SetValue(rInf.GetCountBy());
+
+ // Teiler
+ aDivisorED.SetText(rInf.GetDivider());
+
+ // Teileroffset
+ aDivIntervalNF.SetValue(rInf.GetDividerCountBy());
+
+ // Zaehlen
+ aCountEmptyLinesCB.Check(rInf.IsCountBlankLines());
+ aCountFrameLinesCB.Check(rInf.IsCountInFlys());
+ aRestartEachPageCB.Check(rInf.IsRestartEachPage());
+
+ aNumberingOnCB.Check(rInf.IsPaintLineNumbers());
+
+ aNumberingOnCB.SetClickHdl(LINK(this, SwLineNumberingPage, LineOnOffHdl));
+ aDivisorED.SetModifyHdl(LINK(this, SwLineNumberingPage, ModifyHdl));
+ ModifyHdl();
+ LineOnOffHdl();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Modify
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwLineNumberingPage, ModifyHdl, Edit *, EMPTYARG )
+{
+ BOOL bHasValue = aDivisorED.GetText().Len() != 0;
+
+ aDivIntervalFT.Enable(bHasValue);
+ aDivIntervalNF.Enable(bHasValue);
+ aDivRowsFT.Enable(bHasValue);
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: On/Off
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwLineNumberingPage, LineOnOffHdl, CheckBox *, EMPTYARG )
+{
+ BOOL bEnable = aNumberingOnCB.IsChecked();
+
+ aCharStyleFT.Enable(bEnable);
+ aCharStyleLB.Enable(bEnable);
+ aFormatFT.Enable(bEnable);
+ aFormatLB.Enable(bEnable);
+ aPosFT.Enable(bEnable);
+ aPosLB.Enable(bEnable);
+ aOffsetFT.Enable(bEnable);
+ aOffsetMF.Enable(bEnable);
+ aNumIntervalFT.Enable(bEnable);
+ aNumIntervalNF.Enable(bEnable);
+ aNumRowsFT.Enable(bEnable);
+ aDisplayGB.Enable(bEnable);
+ aDivisorFT.Enable(bEnable);
+ aDivisorED.Enable(bEnable);
+ aDivIntervalFT.Enable(bEnable);
+ aDivIntervalNF.Enable(bEnable);
+ aDivRowsFT.Enable(bEnable);
+ aDivisorGB.Enable(bEnable);
+ aCountEmptyLinesCB.Enable(bEnable);
+ aCountFrameLinesCB.Enable(bEnable);
+ aRestartEachPageCB.Enable(bEnable);
+ aCountGB.Enable(bEnable);
+
+ return 0;
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+BOOL __EXPORT SwLineNumberingPage::FillItemSet( SfxItemSet& rSet )
+{
+ SwLineNumberInfo aInf(pSh->GetLineNumberInfo());
+
+ // Zeichenvorlagen
+ String sCharFmtName(aCharStyleLB.GetSelectEntry());
+ SwCharFmt *pCharFmt = pSh->FindCharFmtByName(sCharFmtName);
+
+ if (!pCharFmt)
+ {
+ SfxStyleSheetBasePool* pPool = pSh->GetView().GetDocShell()->GetStyleSheetPool();
+ SfxStyleSheetBase* pBase;
+ pBase = pPool->Find(sCharFmtName, SFX_STYLE_FAMILY_CHAR);
+ if(!pBase)
+ pBase = &pPool->Make(sCharFmtName, SFX_STYLE_FAMILY_CHAR);
+ pCharFmt = ((SwDocStyleSheet*)pBase)->GetCharFmt();
+ }
+
+ if (pCharFmt)
+ aInf.SetCharFmt(pCharFmt);
+
+ // Format
+ SwNumType aType;
+ aType.eType = (SvxExtNumType)(USHORT)(ULONG)aFormatLB.GetEntryData(
+ aFormatLB.GetSelectEntryPos() );
+ aInf.SetNumType(aType);
+
+ // Position
+ aInf.SetPos((LineNumberPosition)aPosLB.GetSelectEntryPos());
+
+ // Offset
+ aInf.SetPosFromLeft((USHORT)aOffsetMF.Denormalize(aOffsetMF.GetValue(FUNIT_TWIP)));
+
+ // Numerierungsoffset
+ aInf.SetCountBy((USHORT)aNumIntervalNF.GetValue());
+
+ // Teiler
+ aInf.SetDivider(aDivisorED.GetText());
+
+ // Teileroffset
+ aInf.SetDividerCountBy((USHORT)aDivIntervalNF.GetValue());
+
+ // Zaehlen
+ aInf.SetCountBlankLines(aCountEmptyLinesCB.IsChecked());
+ aInf.SetCountInFlys(aCountFrameLinesCB.IsChecked());
+ aInf.SetRestartEachPage(aRestartEachPageCB.IsChecked());
+
+ aInf.SetPaintLineNumbers(aNumberingOnCB.IsChecked());
+
+ pSh->SetLineNumberInfo(aInf);
+
+ return FALSE;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.11 2000/09/18 16:05:57 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.10 2000/08/14 12:50:15 ma
+ optional restart at each page for line numbering
+
+ Revision 1.9 2000/04/26 14:55:46 os
+ GetName() returns const String&
+
+ Revision 1.8 2000/02/11 14:56:26 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.7 1998/11/17 09:57:52 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+
+ Rev 1.6 17 Nov 1998 10:57:52 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.5 11 Aug 1998 14:26:30 HR
+ void* kann nicht direkt nach USHORT gecastet werden
+
+ Rev 1.4 10 Aug 1998 16:42:10 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.3 15 Apr 1998 14:34:08 OS
+ CharStyles sortiert
+
+ Rev 1.2 20 Feb 1998 11:23:22 MA
+ Restarbeiten Zeilennummerierung
+
+ Rev 1.1 19 Feb 1998 13:51:32 OM
+ Zeilennumerierung
+
+ Rev 1.0 18 Feb 1998 18:56:48 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/misc/linenum.hrc b/sw/source/ui/misc/linenum.hrc
new file mode 100644
index 000000000000..e3e3e63e23dd
--- /dev/null
+++ b/sw/source/ui/misc/linenum.hrc
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * $RCSfile: linenum.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define CB_NUMBERING_ON 1
+#define FT_CHAR_STYLE 2
+#define LB_CHAR_STYLE 3
+#define FT_FORMAT 4
+#define LB_FORMAT 5
+#define FT_POS 6
+#define LB_POS 7
+#define FT_OFFSET 8
+#define MF_OFFSET 9
+#define FT_NUM_INVERVAL 10
+#define NF_NUM_INVERVAL 11
+#define FT_NUM_ROWS 12
+#define GB_DISPLAY 13
+#define FT_DIVISOR 14
+#define ED_DIVISOR 15
+#define FT_DIV_INTERVAL 16
+#define NF_DIV_INTERVAL 17
+#define FT_DIV_ROWS 18
+#define GB_DIVISOR 19
+#define CB_COUNT_EMPTYLINES 20
+#define CB_COUNT_FRAMELINES 21
+#define GB_COUNT 22
+#define CB_RESTART_PAGE 23
+
diff --git a/sw/source/ui/misc/linenum.src b/sw/source/ui/misc/linenum.src
new file mode 100644
index 000000000000..f966969526d9
--- /dev/null
+++ b/sw/source/ui/misc/linenum.src
@@ -0,0 +1,729 @@
+/*************************************************************************
+ *
+ * $RCSfile: linenum.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+/* StarView ressource file */
+
+#ifndef _SFX_HRC
+#include <sfx2/sfx.hrc>
+#endif
+#ifndef _SVX_DIALOGS_HRC
+#include <svx/dialogs.hrc>
+#endif
+#include "globals.hrc"
+#include "misc.hrc"
+#include "linenum.hrc"
+#include "helpid.h"
+/**************************************************************************/
+/* */
+/**************************************************************************/
+TabPage TP_LINENUMBERING
+{
+ HelpID = HID_LINENUMBERING ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Text = "Zeilennummerierung" ;
+ Text [ ENGLISH ] = "Line Numbering" ;
+ CheckBox CB_NUMBERING_ON
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 248 , 10 ) ;
+ Text = "~Nummerierung einschalten" ;
+ Text [ ENGLISH ] = "~Turn line numbering on" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Show numbering" ;
+ Text [ portuguese_brazilian ] = "Numerierung einschalten" ;
+ Text [ swedish ] = "~Numrering på" ;
+ Text [ danish ] = "Aktiver nummerering" ;
+ Text [ italian ] = "Att~iva numerazione" ;
+ Text [ spanish ] = "Mostrar ~numeración" ;
+ Text [ french ] = "Activer la ~numérotation" ;
+ Text [ dutch ] = "~Nummering inschakelen" ;
+ Text [ portuguese ] = "Activar ~numeração" ;
+ Text[ chinese_simplified ] = "ÏÔʾ±àºÅ";
+ Text[ russian ] = "Âêëþ÷èòü íóìåðàöèþ";
+ Text[ polish ] = "W³¹cz numeracjê";
+ Text[ japanese ] = "”Ô†•t‚¯‚ðµÝ‚É‚·‚é(~S)";
+ Text[ chinese_traditional ] = "Åã¥Ü½s¸¹";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáÊÑÞíã";
+ Text[ greek ] = "Åíåñãïðïßçóç áñßèìçóçò";
+ Text[ korean ] = "¹øÈ£ º¸À̱â(~S)";
+ Text[ turkish ] = "~Numaralamayý etkinleþtir";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_CHAR_STYLE
+ {
+ Pos = MAP_APPFONT ( 12 , 32 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Zeichenvorlage" ;
+ Text [ English ] = "~Char style" ;
+ Text [ english_us ] = "~Character Style" ;
+ Text [ portuguese_brazilian ] = "Zeichenvorlage" ;
+ Text [ swedish ] = "~Teckenformatmall" ;
+ Text [ danish ] = "Tegntypografi" ;
+ Text [ italian ] = "~Modelli di carattere" ;
+ Text [ spanish ] = "Est~ilo de caracteres" ;
+ Text [ french ] = "Style de ~caractères" ;
+ Text [ dutch ] = "~Tekenopmaakprofiel" ;
+ Text [ portuguese ] = "~Estilos de caracteres" ;
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ";
+ Text[ russian ] = "Ñòèëü çíàêîâ";
+ Text[ polish ] = "Styl znaku";
+ Text[ japanese ] = "•¶Žš½À²Ù";
+ Text[ chinese_traditional ] = "¤å¦r¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÇáÃÍÑÝ";
+ Text[ greek ] = "Óôõë ÷áñáêôÞñùí";
+ Text[ korean ] = "¹®ÀÚ À¯Çü(~C)";
+ Text[ turkish ] = "~Karakter biçimi";
+ Text[ language_user1 ] = "All \"Vorlage\"/Styles are always written with capital S. 10.5.00EM";
+ };
+ ListBox LB_CHAR_STYLE
+ {
+ Pos = MAP_APPFONT ( 65 , 30 ) ;
+ Size = MAP_APPFONT ( 75 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText FT_FORMAT
+ {
+ Pos = MAP_APPFONT ( 12 , 50 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Format" ;
+ Text [ English ] = "~Format" ;
+ Text [ english_us ] = "F~ormat" ;
+ Text [ portuguese_brazilian ] = "Format" ;
+ Text [ swedish ] = "~Format" ;
+ Text [ danish ] = "~Format" ;
+ Text [ italian ] = "~Formato" ;
+ Text [ spanish ] = "~Formato" ;
+ Text [ french ] = "~Format" ;
+ Text [ dutch ] = "~Opmaak" ;
+ Text [ portuguese ] = "~Formato" ;
+ 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 ] = " ";
+ };
+ ListBox LB_FORMAT
+ {
+ Pos = MAP_APPFONT ( 65 , 48 ) ;
+ Size = MAP_APPFONT ( 75 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_POS
+ {
+ Pos = MAP_APPFONT ( 12 , 68 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ 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 ] = " ";
+ };
+ ListBox LB_POS
+ {
+ Pos = MAP_APPFONT ( 65 , 66 ) ;
+ Size = MAP_APPFONT ( 75 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Links" ; > ;
+ < "Rechts" ; > ;
+ < "Innen" ; > ;
+ < "Außen" ; > ;
+ };
+ StringList [ English ] =
+ {
+ < "Links" ; > ;
+ < "Rechts" ; > ;
+ < "Innen" ; > ;
+ < "Außen" ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "Left" ; > ;
+ < "Right" ; > ;
+ < "Inner" ; > ;
+ < "outer" ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "Links" ; > ;
+ < "Rechts" ; > ;
+ < "Innen" ; > ;
+ < "Außen" ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "Vänster" ; > ;
+ < "Höger" ; > ;
+ < "Inre" ; > ;
+ < "utanför" ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "Venstre" ; > ;
+ < "Højre" ; > ;
+ < "Inderside" ; > ;
+ < "Yderside" ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "Sinistra" ; > ;
+ < "Destra" ; > ;
+ < "Interno" ; > ;
+ < "Fuori" ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "Izquierda" ; > ;
+ < "Derecha" ; > ;
+ < "Interior" ; > ;
+ < "Exterior" ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "À gauche" ; > ;
+ < "À droite" ; > ;
+ < "A l'intérieur" ; > ;
+ < "A l'extérieur" ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "Links" ; > ;
+ < "Rechts" ; > ;
+ < "Binnen" ; > ;
+ < "Buiten" ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "Esquerda" ; > ;
+ < "Direita" ; > ;
+ < "Interior" ; > ;
+ < "Exterior" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "×ó" ; > ;
+ < "ÓÒ" ; > ;
+ < "ÄÚ" ; > ;
+ < "Íâ" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Ñëåâà" ; > ;
+ < "Ñïðàâà" ; > ;
+ < "Âíóòðè" ; > ;
+ < "Ñíàðóæè" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Z lewej" ; > ;
+ < "Z prawej" ; > ;
+ < "W œrodku" ; > ;
+ < "Na zewn¹trz" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "¶" ; > ;
+ < "‰E" ; > ;
+ < "“à‘¤" ; > ;
+ < "ŠO‘¤" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¥ª" ; > ;
+ < "¥k" ; > ;
+ < "¤º" ; > ;
+ < "¥~" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "Úáì ÇáíÓÇÑ" ; > ;
+ < "Úáì Çáíãíä" ; > ;
+ < "Ýí ÇáÏÇÎá" ; > ;
+ < "Ýí ÇáÎÇÑÌ" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÁñéóôåñÜ" ; > ;
+ < "ÄåîéÜ" ; > ;
+ < "ÅóùôåñéêÜ" ; > ;
+ < "ÅîùôåñéêÜ" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¿ÞÂÊ" ; > ;
+ < "¿À¸¥ÂÊ" ; > ;
+ < "³»ºÎ" ; > ;
+ < "¿ÜºÎ" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Sol" ; > ;
+ < "Sað" ; > ;
+ < "Ýç" ; > ;
+ < "Dýþ" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ FixedText FT_OFFSET
+ {
+ Pos = MAP_APPFONT ( 12 , 86 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Abstand" ;
+ Text [ English ] = "~Offset" ;
+ Text [ english_us ] = "Spacing" ;
+ Text [ portuguese_brazilian ] = "Abstand" ;
+ Text [ swedish ] = "~Avstånd" ;
+ Text [ danish ] = "Afstand" ;
+ Text [ italian ] = "Distan~za" ;
+ Text [ spanish ] = "E~spacio" ;
+ Text [ french ] = "~Écart" ;
+ Text [ dutch ] = "~Afstand" ;
+ Text [ portuguese ] = "Es~paçamento" ;
+ Text[ chinese_simplified ] = "¼ä¸ô";
+ Text[ russian ] = "Ðàññòîÿíèå";
+ Text[ polish ] = "Odstêp";
+ Text[ japanese ] = "ŠÔŠu";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¶¡¹j";
+ Text[ arabic ] = "ÇáÊÈÇÚÏ";
+ Text[ greek ] = "~Áðüóôáóç";
+ Text[ korean ] = "°£°Ý";
+ Text[ turkish ] = "~Uzaklýk";
+ };
+ MetricField MF_OFFSET
+ {
+ Pos = MAP_APPFONT ( 65 , 84 ) ;
+ Size = MAP_APPFONT ( 45 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 0 ;
+ Last = 9999 ;
+ SpinSize = 10 ;
+ };
+ FixedText FT_NUM_INVERVAL
+ {
+ Pos = MAP_APPFONT ( 12 , 104 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Intervall" ;
+ Text [ English ] = "~Interval" ;
+ Text [ english_us ] = "Interval" ;
+ Text [ portuguese_brazilian ] = "Intervall" ;
+ Text [ swedish ] = "~Intervall" ;
+ Text [ danish ] = "Interval" ;
+ Text [ italian ] = "I~ntervallo" ;
+ Text [ spanish ] = "~Intervalo" ;
+ Text [ french ] = "~Intervalle" ;
+ Text [ dutch ] = "~Interval" ;
+ Text [ portuguese ] = "~Intervalo" ;
+ Text[ chinese_simplified ] = "¼ä¸ô";
+ Text[ russian ] = "Èíòåðâàë";
+ Text[ polish ] = "Przedzia³";
+ Text[ japanese ] = "”Ô†•t‚¯‚ÌŠÔŠu";
+ Text[ chinese_traditional ] = "¶¡¹j";
+ Text[ arabic ] = "ÇáÝÇÕá";
+ Text[ greek ] = "ÄéÜóôçìá";
+ Text[ korean ] = "±¸°£";
+ Text[ turkish ] = "~Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField NF_NUM_INVERVAL
+ {
+ Pos = MAP_APPFONT ( 65 , 102 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 1000 ;
+ First = 1 ;
+ Last = 1000 ;
+ SpinSize = 1 ;
+ };
+ FixedText FT_NUM_ROWS
+ {
+ Pos = MAP_APPFONT ( 100 , 104 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "Zeilen" ;
+ Text [ English ] = "Rows" ;
+ Text [ english_us ] = "lines" ;
+ Text [ portuguese_brazilian ] = "Zeilen" ;
+ Text [ swedish ] = "Rader" ;
+ Text [ danish ] = "linjer" ;
+ Text [ italian ] = "Righe" ;
+ Text [ spanish ] = "Líneas" ;
+ Text [ french ] = "lignes" ;
+ Text [ dutch ] = "Regels" ;
+ Text [ portuguese ] = "Linhas" ;
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ russian ] = "Ñòðîêè";
+ Text[ polish ] = "Wiersze";
+ Text[ japanese ] = "s";
+ Text[ chinese_traditional ] = "¦æ";
+ Text[ arabic ] = "ÃÓØÑ";
+ Text[ greek ] = "ÃñáììÝò";
+ Text[ korean ] = "¼±";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_DISPLAY
+ {
+ Pos = MAP_APPFONT ( 6 , 19 ) ;
+ Size = MAP_APPFONT ( 140 , 103 ) ;
+ Text = "Anzeige" ;
+ Text [ English ] = "Display" ;
+ Text [ english_us ] = "View" ;
+ Text [ portuguese_brazilian ] = "Anzeige" ;
+ Text [ swedish ] = "Visa" ;
+ Text [ danish ] = "Vis" ;
+ Text [ italian ] = "Visualizzazione" ;
+ Text [ spanish ] = "Visualización" ;
+ Text [ french ] = "Affichage" ;
+ Text [ dutch ] = "Weergave" ;
+ Text [ portuguese ] = "Vista" ;
+ Text[ chinese_simplified ] = "ÏÔʾ";
+ Text[ russian ] = "Ïîêàç";
+ Text[ polish ] = "Wyœwietlenie";
+ Text[ japanese ] = "•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü";
+ Text[ arabic ] = "ÇáÚÑÖ";
+ Text[ greek ] = "ÐñïâïëÞ";
+ Text[ korean ] = "º¸±â";
+ Text[ turkish ] = "Görünüm";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_DIVISOR
+ {
+ Pos = MAP_APPFONT ( 158 , 32 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Text = "~Text" ;
+ Text [ English ] = "~Text" ;
+ Text [ portuguese ] = "~Texto" ;
+ Text [ english_us ] = "Text" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ swedish ] = "T~ext" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ italian ] = "T~esto" ;
+ Text [ spanish ] = "Te~xto" ;
+ Text [ french ] = "~Texte" ;
+ Text [ dutch ] = "~Tekst" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷½Ä";
+ Text[ chinese_traditional ] = "¤å¦r";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "M~etin";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_DIVISOR
+ {
+ Pos = MAP_APPFONT ( 186 , 31 ) ;
+ Size = MAP_APPFONT ( 62 , 12 ) ;
+ Left = TRUE ;
+ Border = TRUE ;
+ };
+ FixedText FT_DIV_INTERVAL
+ {
+ Pos = MAP_APPFONT ( 158 , 46 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Text = "A~lle" ;
+ Text [ English ] = "A~ll" ;
+ // Disable = TRUE ;
+ Text [ english_us ] = "Every" ;
+ Text [ portuguese_brazilian ] = "Alle" ;
+ Text [ swedish ] = "A~lla" ;
+ Text [ danish ] = "Alle" ;
+ Text [ italian ] = "~Tutti" ;
+ Text [ spanish ] = "Ca~da" ;
+ Text [ french ] = "~Toutes les" ;
+ Text [ dutch ] = "~Alle" ;
+ Text [ portuguese ] = "Tu~do" ;
+ Text[ chinese_simplified ] = "ÿ";
+ Text[ russian ] = "Âñå";
+ Text[ polish ] = "Co";
+ Text[ japanese ] = "‚·‚ׂÄ";
+ Text[ chinese_traditional ] = "¨C";
+ Text[ arabic ] = "ßá";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "ÊÜèå";
+ Text[ korean ] = "¸ðµç";
+ Text[ turkish ] = "~Tümü";
+ };
+ NumericField NF_DIV_INTERVAL
+ {
+ Pos = MAP_APPFONT ( 186 , 44 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 1000 ;
+ First = 0 ;
+ Last = 1000 ;
+ SpinSize = 1 ;
+ // Disable = TRUE ;
+ };
+ FixedText FT_DIV_ROWS
+ {
+ Pos = MAP_APPFONT ( 221 , 46 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Text = "Zeilen" ;
+ Text [ English ] = "Rows" ;
+ Text [ english_us ] = "Lines" ;
+ Text [ portuguese_brazilian ] = "Zeilen" ;
+ Text [ swedish ] = "Rader" ;
+ Text [ danish ] = "linjer" ;
+ Text [ italian ] = "Righe" ;
+ Text [ spanish ] = "Líneas" ;
+ Text [ french ] = "lignes" ;
+ Text [ dutch ] = "Regels" ;
+ Text [ portuguese ] = "Linhas" ;
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ russian ] = "Ñòðîêè";
+ Text[ polish ] = "Wiersze";
+ Text[ japanese ] = "s";
+ Text[ chinese_traditional ] = "¦æ";
+ Text[ arabic ] = "ÃÓØÑ";
+ Text[ greek ] = "ÃñáììÝò";
+ Text[ korean ] = "¼±";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_DIVISOR
+ {
+ Pos = MAP_APPFONT ( 152 , 19 ) ;
+ Size = MAP_APPFONT ( 102 , 44 ) ;
+ Text = "Teiler" ;
+ Text [ English ] = "Divisor" ;
+ Text [ english_us ] = "Separator" ;
+ Text [ portuguese_brazilian ] = "Teiler" ;
+ Text [ swedish ] = "Delare" ;
+ Text [ danish ] = "Separator" ;
+ Text [ italian ] = "Separatore" ;
+ Text [ spanish ] = "Separador" ;
+ Text [ french ] = "Séparateur" ;
+ Text [ dutch ] = "Deelteken" ;
+ Text [ portuguese ] = "Separador" ;
+ Text[ chinese_simplified ] = "·Ö¸ô·û";
+ Text[ russian ] = "Ðàçäåëèòåëü";
+ Text[ polish ] = "Separator";
+ Text[ japanese ] = "ŽdØ‚è";
+ Text[ chinese_traditional ] = "¤À¹j²Å";
+ Text[ arabic ] = "ÇáÝÇÕá";
+ Text[ greek ] = "Äéá÷ùñéóôéêü";
+ Text[ korean ] = "±¸ºÐÀÚ";
+ Text[ turkish ] = "Ayýrma iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_COUNT_EMPTYLINES
+ {
+ Pos = MAP_APPFONT ( 158 , 80 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "L~eerzeilen" ;
+ Text [ ENGLISH ] = "~Empty lines" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Blank lines" ;
+ Text [ portuguese_brazilian ] = "Leerzeilen" ;
+ Text [ swedish ] = "T~omma rader" ;
+ Text [ danish ] = "Tomme rækker" ;
+ Text [ italian ] = "~Righe vuote" ;
+ Text [ spanish ] = "Líneas en ~blanco" ;
+ Text [ french ] = "~Renvois à la ligne" ;
+ Text [ dutch ] = "~Tussenregels" ;
+ Text [ portuguese ] = "Linhas em ~branco" ;
+ Text[ chinese_simplified ] = "¿ÕÐÐ";
+ Text[ russian ] = "Ïóñòûå ñòðîêè";
+ Text[ polish ] = "Spacje";
+ Text[ japanese ] = "‹ó”’‚Ìs";
+ Text[ chinese_traditional ] = "ªÅ¦æ";
+ Text[ arabic ] = "ÇáÃÓØÑ ÇáÝÇÑÛÉ";
+ Text[ greek ] = "ÊåíÝò ãñáììÝò";
+ Text[ korean ] = "ºó ÁÙ";
+ Text[ turkish ] = "B~oþ satýrlar";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_COUNT_FRAMELINES
+ {
+ Pos = MAP_APPFONT ( 158 , 93 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Zeilen in Te~xtrahmen" ;
+ Text [ ENGLISH ] = "Text frame l~ines" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Lines in text frames" ;
+ Text [ portuguese_brazilian ] = "Zeilen in Textrahmen" ;
+ Text [ swedish ] = "Rader i te~xtram" ;
+ Text [ danish ] = "Rækker i tekstboks" ;
+ Text [ italian ] = "Rig~he nella cornice di testo" ;
+ Text [ spanish ] = "Líneas en ma~rco de texto" ;
+ Text [ french ] = "Lignes dans le cadre texte" ;
+ Text [ dutch ] = "~Regels in tekstkaders" ;
+ Text [ portuguese ] = "Linhas na ~moldura do texto" ;
+ Text[ chinese_simplified ] = "Îı¾¿òÄÚµÄÐÐ";
+ Text[ russian ] = "Ñòðîêè â òåêñòîâîé ðàìêå";
+ Text[ polish ] = "Wi~ersze w ramce tekstowej";
+ Text[ japanese ] = "÷½Ä˜g“à‚Ìs";
+ Text[ chinese_traditional ] = "¤å¦r¤è¶ô¤ºªº¦æ";
+ Text[ arabic ] = "ÃÓØÑ Ýí ÅØÇÑ ÇáäÕ";
+ Text[ greek ] = "ÃñáììÝò óå ðëáßóéï êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ÇÁ·¹ÀÓÀÇ ¼±";
+ Text[ turkish ] = "Metin kutusu içindeki sa~týrlar";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_RESTART_PAGE
+ {
+ Pos = MAP_APPFONT ( 158 , 106 );
+ Size = MAP_APPFONT ( 90 , 10 );
+ Text = "~Neustart am Seitenanfang";
+ Text [ ENGLISH ] = "~Restart each new page";
+ TabStop = TRUE;
+ };
+ GroupBox GB_COUNT
+ {
+ Pos = MAP_APPFONT ( 152 , 67 ) ;
+ Size = MAP_APPFONT ( 102 , 55 ) ;
+ Text = "Zählen" ;
+ Text [ English ] = "Count" ;
+ Text [ english_us ] = "Count" ;
+ Text [ portuguese_brazilian ] = "Zählen" ;
+ Text [ swedish ] = "Räkna" ;
+ Text [ danish ] = "Tæl" ;
+ Text [ italian ] = "Conta" ;
+ Text [ spanish ] = "Contar" ;
+ Text [ french ] = "Compter" ;
+ Text [ dutch ] = "Tellen" ;
+ Text [ portuguese ] = "Contar" ;
+ Text[ chinese_simplified ] = "¼ÆÊý";
+ Text[ russian ] = "×èñëà";
+ Text[ polish ] = "Licz";
+ Text[ japanese ] = "”‚¦‚é";
+ Text[ chinese_traditional ] = "­p¼Æ";
+ Text[ arabic ] = "ÚÏ";
+ Text[ greek ] = "ÊáôáìÝôñçóç";
+ Text[ korean ] = "Ä«¿îÆ®";
+ Text[ turkish ] = "Say";
+ Text[ language_user1 ] = " ";
+ };
+ Text [ english_us ] = "Line Numbering" ;
+ Text [ portuguese_brazilian ] = "Zeilennumerierung" ;
+ Text [ swedish ] = "Radnumrering" ;
+ Text [ danish ] = "Linjenummerering" ;
+ Text [ italian ] = "Numerazione righe" ;
+ Text [ spanish ] = "Numeración de líneas" ;
+ Text [ french ] = "Numérotation de lignes" ;
+ Text [ dutch ] = "Regelnummering" ;
+ Text [ portuguese ] = "Numeração de linhas" ;
+ Text[ chinese_simplified ] = "ÐбàºÅ";
+ Text[ russian ] = "Íóìåðàöèÿ ñòðîê";
+ Text[ polish ] = "Numeracja wierszy";
+ Text[ japanese ] = "s‚̔Ԇ•t‚¯";
+ Text[ chinese_traditional ] = "¦æ¼Æ";
+ Text[ arabic ] = "ÊÑÞíã ÇáÃÓØÑ";
+ Text[ greek ] = "Áñßèìçóç ãñáììþí";
+ Text[ korean ] = "¼± ¹øÈ£";
+ Text[ turkish ] = "Satýr numaralamasý";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/misc/makefile.mk b/sw/source/ui/misc/makefile.mk
new file mode 100644
index 000000000000..ee09ea677cf4
--- /dev/null
+++ b/sw/source/ui/misc/makefile.mk
@@ -0,0 +1,141 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sw
+TARGET=misc
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..$/ui_1st$/ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ bookmark.cxx \
+ docfnote.cxx \
+ glosbib.cxx \
+ glosdoc.cxx \
+ glossary.cxx \
+ glshell.cxx \
+ hdftctrl.cxx \
+ insfnote.cxx \
+ insrule.cxx \
+ linenum.cxx \
+ num.cxx \
+ outline.cxx \
+ pgfnote.cxx \
+ redlndlg.cxx \
+ srtdlg.cxx \
+ tmpldlg.cxx
+
+SRCFILES=\
+ bookmark.src \
+ docfnote.src \
+ glossary.src \
+ glosbib.src \
+ insfnote.src \
+ insrule.src \
+ linenum.src \
+ num.src \
+ outline.src \
+ pgfnote.src \
+ redlndlg.src \
+ srtdlg.src \
+ tmpldlg.src
+
+SLOFILES = \
+ $(SLO)$/bookmark.obj \
+ $(SLO)$/docfnote.obj \
+ $(SLO)$/glosbib.obj \
+ $(SLO)$/glosdoc.obj \
+ $(SLO)$/glossary.obj \
+ $(SLO)$/glshell.obj \
+ $(SLO)$/hdftctrl.obj \
+ $(SLO)$/insfnote.obj \
+ $(SLO)$/insrule.obj \
+ $(SLO)$/linenum.obj \
+ $(SLO)$/num.obj \
+ $(SLO)$/outline.obj \
+ $(SLO)$/pgfnote.obj \
+ $(SLO)$/redlndlg.obj \
+ $(SLO)$/srtdlg.obj \
+ $(SLO)$/tmpldlg.obj
+
+EXCEPTIONSFILES = \
+ $(SLO)$/glosdoc.obj \
+ $(SLO)$/glosbib.obj \
+ $(SLO)$/glossary.obj \
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/misc/num.cxx b/sw/source/ui/misc/num.cxx
new file mode 100644
index 000000000000..4c8c209a7130
--- /dev/null
+++ b/sw/source/ui/misc/num.cxx
@@ -0,0 +1,1000 @@
+/*************************************************************************
+ *
+ * $RCSfile: num.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define USE_NUMTABPAGES
+#define _NUM_CXX
+
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFXIMGMGR_HXX //autogen
+#include <sfx2/imgmgr.hxx>
+#endif
+#ifndef _GALLERY_HXX_
+#include <svx/gallery.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_IMPGRF_HXX //autogen
+#include <svx/impgrf.hxx>
+#endif
+#ifndef _SVX_CHARMAP_HXX //autogen
+#include <svx/charmap.hxx>
+#endif
+#ifndef _SV_MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+#ifndef _SVX_DIALOGS_HRC
+#include <svx/dialogs.hrc>
+#endif
+#ifndef _SVX_NUMITEM_HXX //autogen wg. SvxNumBulletItem
+#include <svx/numitem.hxx>
+#endif
+
+
+#ifndef _SWVSET_HXX //autogen
+#include <swvset.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _WVIEW_HXX
+#include <wview.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _WDOCSH_HXX
+#include <wdocsh.hxx>
+#endif
+#ifndef _UIITEMS_HXX
+#include <uiitems.hxx>
+#endif
+#ifndef _DOCSTYLE_HXX
+#include <docstyle.hxx>
+#endif
+#ifndef _CHARFMT_HXX
+#include <charfmt.hxx>
+#endif
+#ifndef _UINUMS_HXX
+#include <uinums.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _SHELLRES_HXX
+#include <shellres.hxx>
+#endif
+#ifndef _OUTLINE_HXX
+#include <outline.hxx>
+#endif
+#ifndef _NUM_HXX
+#include <num.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _FRMMGR_HXX
+#include <frmmgr.hxx>
+#endif
+
+#ifndef _MISC_HRC
+#include <misc.hrc>
+#endif
+#ifndef _FRMUI_HRC
+#include <frmui.hrc>
+#endif
+#ifndef _NUM_HRC
+#include <num.hrc>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+
+
+static BOOL bLastRelative = FALSE;
+
+/*-----------------03.12.97 10:02-------------------
+
+--------------------------------------------------*/
+SwNumPositionTabPage::SwNumPositionTabPage(Window* pParent,
+ const SfxItemSet& rSet) :
+ SfxTabPage( pParent, SW_RES( TP_NUM_POSITION ), rSet ),
+ aLevelGB( this, ResId(GB_LEVEL )),
+ aLevelLB( this, ResId(LB_LEVEL )),
+ aPositionGB( this, ResId(GB_POSITION )),
+ aAlignFT( this, ResId(FT_ALIGN )),
+ aAlignLB( this, ResId(LB_ALIGN )),
+ aDistBorderFT( this, ResId(FT_BORDERDIST )),
+ aDistBorderMF( this, ResId(MF_BORDERDIST )),
+ aDistNumFT( this, ResId(FT_NUMDIST )),
+ aDistNumMF( this, ResId(MF_NUMDIST )),
+ aRelativeCB( this, ResId(CB_RELATIVE )),
+ aIndentFT( this, ResId(FT_INDENT )),
+ aIndentMF( this, ResId(MF_INDENT )),
+ aStandardPB( this, ResId(PB_STANDARD )),
+ aPreviewGB( this, ResId(GB_PREVIEW )),
+ aPreviewWIN( this, ResId(WIN_PREVIEW )),
+ bInInintControl(FALSE),
+ pActNum(0),
+ pOutlineDlg(0),
+ pSaveNum(0)
+{
+ FreeResource();
+ SetExchangeSupport();
+ aPreviewWIN.SetBackground(Wallpaper(Color(COL_TRANSPARENT)));
+
+ aRelativeCB.Check();
+ aAlignLB.SetSelectHdl(LINK(this, SwNumPositionTabPage, EditModifyHdl));
+
+ Link aLk = LINK(this, SwNumPositionTabPage, DistanceHdl);
+ aDistBorderMF.SetUpHdl(aLk);
+ aDistNumMF.SetUpHdl(aLk);
+ aIndentMF.SetUpHdl(aLk);
+ aDistBorderMF.SetDownHdl(aLk);
+ aDistNumMF.SetDownHdl(aLk);
+ aIndentMF.SetDownHdl(aLk);
+ aDistBorderMF.SetLoseFocusHdl(aLk);
+ aDistNumMF.SetLoseFocusHdl(aLk);
+ aIndentMF.SetLoseFocusHdl(aLk);
+
+ aLevelLB.SetSelectHdl(LINK(this, SwNumPositionTabPage, LevelHdl));
+ aRelativeCB.SetClickHdl(LINK(this, SwNumPositionTabPage, RelativeHdl));
+ aStandardPB.SetClickHdl(LINK(this, SwNumPositionTabPage, StandardHdl));
+
+ // Ebenen einfuegen
+ for(USHORT i = 1; i <= MAXLEVEL; i++)
+ aLevelLB.InsertEntry(String::CreateFromInt32(i));
+ String sEntry(String::CreateFromAscii("1 - "));
+ sEntry += String::CreateFromInt32(MAXLEVEL);
+ aLevelLB.InsertEntry(sEntry);
+ aLevelLB.SelectEntry(sEntry);
+
+ aRelativeCB.Check(bLastRelative);
+ aPreviewWIN.SetPositionMode();
+
+}
+/*-----------------03.12.97 10:02-------------------
+
+--------------------------------------------------*/
+SwNumPositionTabPage::~SwNumPositionTabPage()
+{
+ delete pActNum;
+}
+/*-----------------03.12.97 10:06-------------------
+
+--------------------------------------------------*/
+void SwNumPositionTabPage::InitControls()
+{
+ bInInintControl = TRUE;
+ BOOL bRelative = aRelativeCB.IsChecked() && aRelativeCB.IsEnabled();
+// SetMinDist();
+ BOOL bSingleSelection = aLevelLB.GetSelectEntryCount() == 1 && USHRT_MAX != nActNumLvl;
+ aDistBorderMF.Enable(bSingleSelection || bRelative || 0 != pOutlineDlg);
+
+ SwTwips nWidth = pWrtSh->GetAnyCurRect(RECT_FRM).Width();
+
+ aDistBorderMF.SetMax(aDistBorderMF.Normalize( nWidth ), FUNIT_TWIP );
+ aDistNumMF .SetMax(aDistNumMF .Normalize( nWidth ), FUNIT_TWIP );
+ aIndentMF .SetMax(aIndentMF .Normalize( nWidth ), FUNIT_TWIP );
+ SwTwips nLast2 = nWidth /2;
+ aDistBorderMF.SetLast( aDistBorderMF.Normalize( nLast2 ), FUNIT_TWIP );
+ aDistNumMF .SetLast( aDistNumMF .Normalize( nLast2 ), FUNIT_TWIP );
+ aIndentMF .SetLast( aIndentMF .Normalize( nLast2 ), FUNIT_TWIP );
+
+
+ BOOL bSetDistEmpty = FALSE;
+// BOOL bSameDistBorder= TRUE;
+ BOOL bSameDistBorderNum = TRUE;
+ BOOL bSameDist = TRUE;
+ BOOL bSameIndent = TRUE;
+ BOOL bSameAdjust = TRUE;
+
+ const SwNumFmt* aNumFmtArr[MAXLEVEL];
+ const SwFmtVertOrient* pFirstOrient = 0;
+ USHORT nMask = 1;
+ USHORT nLvl = USHRT_MAX;
+// SwTwips nFirstLSpace = 0;
+ long nFirstBorderText = 0;
+ long nFirstBorderTextRelative = -1;
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+ aNumFmtArr[i] = &pActNum->Get(i);
+ if(nActNumLvl & nMask)
+ {
+ if(USHRT_MAX == nLvl)
+ {
+ nLvl = i;
+ pFirstOrient = aNumFmtArr[nLvl]->GetGrfOrient();
+// nFirstLSpace = nLvl > 0 ?
+// aNumFmtArr[nLvl]->GetAbsLSpace() - aNumFmtArr[nLvl - 1]->GetAbsLSpace():
+// aNumFmtArr[nLvl]->GetAbsLSpace();
+ nFirstBorderText = nLvl > 0 ?
+ aNumFmtArr[nLvl]->GetAbsLSpace() + aNumFmtArr[nLvl]->GetFirstLineOffset() -
+ aNumFmtArr[nLvl - 1]->GetAbsLSpace() + aNumFmtArr[nLvl - 1]->GetFirstLineOffset():
+ aNumFmtArr[nLvl]->GetAbsLSpace() + aNumFmtArr[nLvl]->GetFirstLineOffset();
+ }
+
+ if( i > nLvl)
+ {
+ if(bRelative)
+ {
+ if(nFirstBorderTextRelative == -1)
+ nFirstBorderTextRelative =
+ (aNumFmtArr[i]->GetAbsLSpace() + aNumFmtArr[i]->GetFirstLineOffset() -
+ aNumFmtArr[i - 1]->GetAbsLSpace() + aNumFmtArr[i - 1]->GetFirstLineOffset());
+ else
+ bSameDistBorderNum &= nFirstBorderTextRelative ==
+ (aNumFmtArr[i]->GetAbsLSpace() + aNumFmtArr[i]->GetFirstLineOffset() -
+ aNumFmtArr[i - 1]->GetAbsLSpace() + aNumFmtArr[i - 1]->GetFirstLineOffset());
+
+ }
+ else
+ {
+ bSameDistBorderNum &=
+ aNumFmtArr[i]->GetAbsLSpace() - aNumFmtArr[i]->GetFirstLineOffset() ==
+ aNumFmtArr[i - 1]->GetAbsLSpace() - aNumFmtArr[i - 1]->GetFirstLineOffset();
+// bSameDistBorder &= aNumFmtArr[i]->GetAbsLSpace() == aNumFmtArr[nLvl]->GetAbsLSpace();
+ }
+
+ bSameDist &= aNumFmtArr[i]->GetCharTextOffset() == aNumFmtArr[nLvl]->GetCharTextOffset();
+ bSameIndent &= aNumFmtArr[i]->GetFirstLineOffset() == aNumFmtArr[nLvl]->GetFirstLineOffset();
+ bSameAdjust &= aNumFmtArr[i]->GetAdjust() == aNumFmtArr[nLvl]->GetAdjust();
+
+ }
+ }
+// else
+// aNumFmtArr[i] = 0;
+ nMask <<= 1;
+
+ }
+ if(bSameDistBorderNum)
+// if(bSameDistBorder)
+ {
+ long nDistBorderNum;
+ if(bRelative)
+ {
+ nDistBorderNum = (long)aNumFmtArr[nLvl]->GetAbsLSpace()+ aNumFmtArr[nLvl]->GetFirstLineOffset();
+ if(nLvl)
+ nDistBorderNum -= (long)aNumFmtArr[nLvl - 1]->GetAbsLSpace()+ aNumFmtArr[nLvl - 1]->GetFirstLineOffset();
+ }
+ else
+ {
+ nDistBorderNum = (long)aNumFmtArr[nLvl]->GetAbsLSpace()+ aNumFmtArr[nLvl]->GetFirstLineOffset();
+ }
+ aDistBorderMF.SetValue(aDistBorderMF.Normalize(nDistBorderNum),FUNIT_TWIP);
+
+// aDistBorderMF.SetValue(aDistBorderMF.Normalize(
+// bRelative ? (long)nFirstLSpace : (long)aNumFmtArr[nLvl]->GetAbsLSpace()),
+// FUNIT_TWIP);
+ }
+ else
+ bSetDistEmpty = TRUE;
+
+ if(bSameDist)
+ aDistNumMF .SetValue(aDistNumMF.Normalize(aNumFmtArr[nLvl]->GetCharTextOffset()), FUNIT_TWIP);
+ else
+ aDistNumMF.SetText(aEmptyStr);
+ if(bSameIndent)
+ aIndentMF.SetValue(aIndentMF.Normalize(-aNumFmtArr[nLvl]->GetFirstLineOffset()), FUNIT_TWIP);
+ else
+ aIndentMF.SetText(aEmptyStr);
+
+ if(bSameAdjust)
+ {
+ USHORT nPos = 1; // zentriert
+ if(aNumFmtArr[nLvl]->GetAdjust() == SVX_ADJUST_LEFT)
+ nPos = 0;
+ else if(aNumFmtArr[nLvl]->GetAdjust() == SVX_ADJUST_RIGHT)
+ nPos = 2;
+ aAlignLB.SelectEntryPos(nPos);
+ }
+ else
+ {
+ aAlignLB.SetNoSelection();
+ }
+
+ if(TRUE == bSetDistEmpty)
+ aDistBorderMF.SetText(aEmptyStr);
+
+ bInInintControl = FALSE;
+}
+/*-----------------03.12.97 12:21-------------------
+
+--------------------------------------------------*/
+/*void SwNumPositionTabPage::SetMinDist()
+{
+ // JP 03.04.97: Bug 32903 - MinWert fuer DistBorderMF setzen
+
+ // ggfs. den akt. NumLevel anpassen
+ USHORT nStart = 0;
+ USHORT nEnd = MAXLEVEL;
+ USHORT nMask = 1;
+ USHORT nTmpLvl = USHRT_MAX;
+ SwTwips nMinVal = 0;
+ BOOL bInit = FALSE;
+
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+ if(nActNumLvl & nMask)
+ {
+ if(USHRT_MAX == nTmpLvl)
+ {
+ nTmpLvl = i;
+ const SwNumFmt& rNumFmt = pActNum->Get( nTmpLvl );
+
+ nMinVal = - rNumFmt.GetFirstLineOffset();
+ if( nTmpLvl )
+ nMinVal -= pActNum->Get( nTmpLvl - 1 ).GetAbsLSpace();
+ }
+ const SwNumFmt& rAktNumFmt = pActNum->Get( nStart );
+ if( rAktNumFmt.GetAbsLSpace() < nMinVal )
+ {
+ bInit = TRUE;
+ SwNumFmt aNumFmt( rAktNumFmt );
+ aNumFmt.SetAbsLSpace( nMinVal );
+ pActNum->Set( nStart, aNumFmt );
+ }
+ }
+ nMask <<=1;
+ }
+
+ if(!aRelativeCB.IsChecked() && aRelativeCB.IsEnabled())
+ nMinVal = 0;
+ nMinVal = aDistBorderMF.Normalize( nMinVal );
+ aDistBorderMF.SetMin( nMinVal, FUNIT_TWIP );
+ aDistBorderMF.SetFirst( nMinVal, FUNIT_TWIP );
+ if(bInit)
+ InitControls();
+}
+ */
+
+/*-----------------03.12.97 10:02-------------------
+
+--------------------------------------------------*/
+void SwNumPositionTabPage::ActivatePage(const SfxItemSet& rSet)
+{
+ const SfxPoolItem* pItem;
+ UINT16 nTmpNumLvl =
+ pOutlineDlg ? pOutlineDlg->GetActNumLevel() : 0;
+// ((SwNumBulletTabDialog*)GetTabDialog())->GetActNumLevel();
+ const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet();
+ if(pExampleSet && pExampleSet->GetItemState(FN_PARAM_NUM_PRESET, FALSE, &pItem))
+ {
+ bPreset = ((const SfxBoolItem*)pItem)->GetValue();
+ }
+ //
+ bModified = (!pActNum->GetNumFmt( 0 ) || bPreset);
+ if(*pActNum != *pSaveNum ||
+ nActNumLvl != nTmpNumLvl )
+ {
+ *pActNum = *pSaveNum;
+ nActNumLvl = nTmpNumLvl;
+ USHORT nMask = 1;
+ aLevelLB.SetUpdateMode(FALSE);
+ aLevelLB.SetNoSelection();
+ aLevelLB.SelectEntryPos( MAXLEVEL, nActNumLvl == USHRT_MAX);
+ if(nActNumLvl != USHRT_MAX)
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+ if(nActNumLvl & nMask)
+ aLevelLB.SelectEntryPos( i, TRUE);
+ nMask <<= 1 ;
+ }
+ aLevelLB.SetUpdateMode(TRUE);
+ InitControls();
+ }
+ aRelativeCB.Enable(1 != nActNumLvl);
+ aPreviewWIN.Invalidate();
+}
+
+/*-----------------03.12.97 10:02-------------------
+
+--------------------------------------------------*/
+int SwNumPositionTabPage::DeactivatePage(SfxItemSet *pSet)
+{
+ if(pOutlineDlg)
+ pOutlineDlg->SetActNumLevel(nActNumLvl);
+// else
+// ((SwNumBulletTabDialog*)GetTabDialog())->SetActNumLevel(nActNumLvl);
+ if(pSet)
+ FillItemSet(*pSet);
+ return TRUE;
+
+}
+
+/*-----------------03.12.97 10:02-------------------
+
+--------------------------------------------------*/
+BOOL SwNumPositionTabPage::FillItemSet( SfxItemSet& rSet )
+{
+ if(pOutlineDlg)
+ *pOutlineDlg->GetNumRule() = *pActNum;
+ else if(bModified && pActNum)
+ {
+ *pSaveNum = *pActNum;
+ rSet.Put(SwUINumRuleItem( *pSaveNum ));
+ rSet.Put(SfxBoolItem(FN_PARAM_NUM_PRESET, FALSE));
+ }
+ return bModified;
+}
+
+/*-----------------03.12.97 10:02-------------------
+
+--------------------------------------------------*/
+void SwNumPositionTabPage::Reset( const SfxItemSet& rSet )
+{
+ const SfxPoolItem* pItem;
+ if(pOutlineDlg)
+ {
+ pSaveNum = pOutlineDlg->GetNumRule();
+ aLevelLB.EnableMultiSelection(FALSE);
+ }
+ else if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_ACT_NUMBER, FALSE, &pItem))
+ pSaveNum = ((SwUINumRuleItem*)pItem)->GetNumRule();
+
+ nActNumLvl =
+ pOutlineDlg ? pOutlineDlg->GetActNumLevel() : 0;
+// ((SwNumBulletTabDialog*)GetTabDialog())->GetActNumLevel();
+ USHORT nMask = 1;
+ aLevelLB.SetUpdateMode(FALSE);
+ aLevelLB.SetNoSelection();
+ if(nActNumLvl == USHRT_MAX)
+ {
+ aLevelLB.SelectEntryPos( MAXLEVEL, TRUE);
+ }
+ else
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+ if(nActNumLvl & nMask)
+ aLevelLB.SelectEntryPos( i, TRUE);
+ nMask <<= 1;
+ }
+ aLevelLB.SetUpdateMode(TRUE);
+
+ if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_CHILD_LEVELS, FALSE, &pItem))
+ bHasChild = ((const SfxBoolItem*)pItem)->GetValue();
+ if(!pActNum)
+ pActNum = new SwNumRule(*pSaveNum);
+ else if(*pSaveNum != *pActNum)
+ *pActNum = *pSaveNum;
+ aPreviewWIN.SetNumRule(pActNum);
+ InitControls();
+ bModified = FALSE;
+}
+
+/*-----------------03.12.97 10:02-------------------
+
+--------------------------------------------------*/
+SfxTabPage* SwNumPositionTabPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet)
+{
+ return new SwNumPositionTabPage(pParent, rAttrSet);
+}
+
+/*-----------------04.12.97 12:51-------------------
+
+--------------------------------------------------*/
+void SwNumPositionTabPage::SetWrtShell(SwWrtShell* pSh)
+{
+ pWrtSh = pSh;
+ const SwRect& rPrtRect = pWrtSh->GetAnyCurRect(RECT_PAGE);
+ aPreviewWIN.SetPageWidth(rPrtRect.Width());
+ FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, &pWrtSh->GetView()));
+ if(eMetric == FUNIT_MM)
+ {
+ aDistBorderMF .SetDecimalDigits(1);
+ aDistNumMF .SetDecimalDigits(1);
+ aIndentMF .SetDecimalDigits(1);
+ }
+ aDistBorderMF .SetUnit( eMetric );
+ aDistNumMF .SetUnit( eMetric );
+ aIndentMF .SetUnit( eMetric );
+}
+
+/*-----------------03.12.97 11:06-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwNumPositionTabPage, EditModifyHdl, Edit *, pEdit )
+{
+
+ USHORT nStart = 0;
+ USHORT nEnd = MAXLEVEL;
+ USHORT nMask = 1;
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+ if(nActNumLvl & nMask)
+ {
+ SwNumFmt aNumFmt(pActNum->Get(i));
+
+ USHORT nPos = aAlignLB.GetSelectEntryPos();
+ SvxAdjust eAdjust = SVX_ADJUST_CENTER;
+ if(nPos == 0)
+ eAdjust = SVX_ADJUST_LEFT;
+ else if(nPos == 2)
+ eAdjust = SVX_ADJUST_RIGHT;
+ aNumFmt.SetAdjust( eAdjust );
+ pActNum->Set(i, aNumFmt);
+ }
+ nMask <<= 1;
+ }
+ SetModified();
+ return 0;
+}
+/*-----------------03.12.97 11:11-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwNumPositionTabPage, LevelHdl, ListBox *, pBox )
+{
+ USHORT nSaveNumLvl = nActNumLvl;
+ nActNumLvl = 0;
+ if(pBox->IsEntryPosSelected( MAXLEVEL ) &&
+ (pBox->GetSelectEntryCount() == 1 || nSaveNumLvl != 0xffff))
+ {
+ nActNumLvl = 0xFFFF;
+ pBox->SetUpdateMode(FALSE);
+ for( USHORT i = 0; i < MAXLEVEL; i++ )
+ pBox->SelectEntryPos( i, FALSE );
+ pBox->SetUpdateMode(TRUE);
+ }
+ else if(pBox->GetSelectEntryCount())
+ {
+ USHORT nMask = 1;
+ for( USHORT i = 0; i < MAXLEVEL; i++ )
+ {
+ if(pBox->IsEntryPosSelected( i ))
+ nActNumLvl |= nMask;
+ nMask <<= 1;
+ }
+ pBox->SelectEntryPos( MAXLEVEL, FALSE );
+ }
+ else
+ {
+ nActNumLvl = nSaveNumLvl;
+ USHORT nMask = 1;
+ for( USHORT i = 0; i < MAXLEVEL; i++ )
+ {
+ if(nActNumLvl & nMask)
+ {
+ pBox->SelectEntryPos(i);
+ break;
+ }
+ nMask <<=1;
+ }
+ }
+ aRelativeCB.Enable(1 != nActNumLvl);
+ SetModified();
+ InitControls();
+ return 0;
+}
+/*-----------------03.12.97 12:24-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwNumPositionTabPage, DistanceHdl, MetricField *, pFld )
+{
+ if(bInInintControl)
+ return 0;
+ long nValue = pFld->Denormalize(pFld->GetValue(FUNIT_TWIP));
+ USHORT nMask = 1;
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+ if(nActNumLvl & nMask)
+ {
+ SwNumFmt aNumFmt( pActNum->Get( i ) );
+ if(pFld == &aDistBorderMF)
+ {
+
+ if(aRelativeCB.IsChecked() && aRelativeCB.IsEnabled())
+ {
+ if(0 == i)
+ {
+ long nTmp = aNumFmt.GetFirstLineOffset();
+ aNumFmt.SetAbsLSpace( USHORT(nValue - nTmp));
+ }
+ else
+ {
+ long nTmp = pActNum->Get( i - 1 ).GetAbsLSpace() +
+ pActNum->Get( i - 1 ).GetFirstLineOffset() -
+ pActNum->Get( i ).GetFirstLineOffset();
+
+ aNumFmt.SetAbsLSpace( USHORT(nValue + nTmp));
+ }
+ }
+ else
+ {
+ aNumFmt.SetAbsLSpace( (short)nValue - aNumFmt.GetFirstLineOffset());
+ }
+ }
+ else if(pFld == &aDistNumMF)
+ {
+ aNumFmt.SetCharTextOffset( (short)nValue );
+ }
+ else if(pFld == &aIndentMF)
+ {
+ //jetzt muss mit dem FirstLineOffset auch der AbsLSpace veraendert werden
+ long nDiff = nValue + aNumFmt.GetFirstLineOffset();
+ long nAbsLSpace = aNumFmt.GetAbsLSpace();
+ aNumFmt.SetAbsLSpace(USHORT(nAbsLSpace + nDiff));
+ aNumFmt.SetFirstLineOffset( -(short)nValue );
+ }
+
+ pActNum->Set( i, aNumFmt );
+ }
+ nMask <<= 1;
+ }
+
+ SetModified();
+// SetMinDist();
+ if(!aDistBorderMF.IsEnabled())
+ aDistBorderMF.SetText(aEmptyStr);
+
+ return 0;
+}
+
+/*-----------------04.12.97 12:35-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwNumPositionTabPage, RelativeHdl, CheckBox *, pBox )
+{
+ BOOL bOn = pBox->IsChecked();
+// SetMinDist();
+ BOOL bSingleSelection = aLevelLB.GetSelectEntryCount() == 1 && USHRT_MAX != nActNumLvl;
+ BOOL bSetValue = FALSE;
+ long nValue = 0;
+ if(bOn || bSingleSelection)
+ {
+ USHORT nMask = 1;
+ BOOL bFirst = TRUE;
+ bSetValue = TRUE;
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+ if(nActNumLvl & nMask)
+ {
+ const SwNumFmt &rNumFmt = pActNum->Get(i);
+ if(bFirst)
+ {
+ nValue = rNumFmt.GetAbsLSpace();
+ if(bOn && i)
+ nValue -= pActNum->Get(i - 1).GetAbsLSpace();
+ }
+ else
+ bSetValue = nValue == rNumFmt.GetAbsLSpace() - pActNum->Get(i - 1).GetAbsLSpace();
+ bFirst = FALSE;
+ }
+ nMask <<= 1;
+ }
+
+ }
+ if(bSetValue)
+ aDistBorderMF.SetValue(aDistBorderMF.Normalize(nValue), FUNIT_TWIP);
+ else
+ aDistBorderMF.SetText(aEmptyStr);
+ aDistBorderMF.Enable(bOn || bSingleSelection||0 != pOutlineDlg);
+ bLastRelative = bOn;
+ return 0;
+}
+/*-----------------05.12.97 15:33-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwNumPositionTabPage, StandardHdl, PushButton *, EMPTYARG )
+{
+ USHORT nMask = 1;
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+ if(nActNumLvl & nMask)
+ {
+ SwNumFmt aNumFmt( pActNum->Get( i ) );
+ SwNumRule aTmpNumRule(pWrtSh->GetUniqueNumRuleName(),
+ pOutlineDlg ? OUTLINE_RULE : NUM_RULE
+ );
+ SwNumFmt aTempFmt(aTmpNumRule.Get( i ));
+ aNumFmt.SetAbsLSpace( aTempFmt.GetAbsLSpace());
+ aNumFmt.SetCharTextOffset( aTempFmt.GetCharTextOffset() );
+ aNumFmt.SetFirstLineOffset( aTempFmt.GetFirstLineOffset() );
+
+ pActNum->Set( i, aNumFmt );
+ }
+ nMask <<= 1;
+ }
+
+ InitControls();
+ SetModified();
+ return 0;
+}
+
+#ifdef DEBUG
+void SwNumPositionTabPage::SetModified(BOOL bRepaint)
+{
+ bModified = TRUE;
+ if(bRepaint)
+ {
+ aPreviewWIN.SetLevel(nActNumLvl);
+ aPreviewWIN.Invalidate();
+ }
+}
+
+#endif
+
+/**************************************************************************/
+/* */
+/* */
+/**************************************************************************/
+
+
+SwSvxNumBulletTabDialog::SwSvxNumBulletTabDialog(Window* pParent,
+ const SfxItemSet* pSwItemSet, SwWrtShell & rSh) :
+ SfxTabDialog(pParent, SW_RES(DLG_SVXTEST_NUM_BULLET), pSwItemSet, FALSE, &aEmptyStr),
+ rWrtSh(rSh),
+ nRetOptionsDialog(USHRT_MAX),
+ sRemoveText(ResId(ST_RESET))
+{
+ FreeResource();
+ GetUserButton()->SetText(sRemoveText);
+ GetUserButton()->SetHelpId(HID_NUM_RESET);
+ GetUserButton()->SetClickHdl(LINK(this, SwSvxNumBulletTabDialog, RemoveNumberingHdl));
+ if(!rWrtSh.GetCurNumRule())
+ GetUserButton()->Enable(FALSE);
+ AddTabPage(RID_SVXPAGE_PICK_SINGLE_NUM, &SvxSingleNumPickTabPage::Create, 0);
+ AddTabPage(RID_SVXPAGE_PICK_BULLET, &SvxBulletPickTabPage::Create, 0);
+ AddTabPage(RID_SVXPAGE_PICK_NUM, &SvxNumPickTabPage::Create, 0);
+ AddTabPage(RID_SVXPAGE_PICK_BMP, &SvxBitmapPickTabPage::Create, 0);
+ AddTabPage(RID_SVXPAGE_NUM_OPTIONS, &SvxNumOptionsTabPage::Create, 0);
+ AddTabPage(RID_SVXPAGE_NUM_POSITION,&SvxNumPositionTabPage::Create, 0);
+
+}
+/*-----------------07.02.97 12.08-------------------
+
+--------------------------------------------------*/
+
+SwSvxNumBulletTabDialog::~SwSvxNumBulletTabDialog()
+{
+}
+
+/*-----------------07.02.97 14.48-------------------
+
+--------------------------------------------------*/
+
+void SwSvxNumBulletTabDialog::PageCreated(USHORT nPageId, SfxTabPage& rPage)
+{
+ //Namen der Vorlagen und Metric setzen
+ String sNumCharFmt; GetDocPoolNm( RES_POOLCHR_NUM_LEVEL, sNumCharFmt );
+ String sBulletCharFmt; GetDocPoolNm( RES_POOLCHR_BUL_LEVEL, sBulletCharFmt );
+
+ switch ( nPageId )
+ {
+ case RID_SVXPAGE_PICK_NUM:
+ ((SvxNumPickTabPage&)rPage).SetCharFmtNames(sNumCharFmt, sBulletCharFmt);
+ break;
+ case RID_SVXPAGE_PICK_BULLET :
+ ((SvxBulletPickTabPage&)rPage).SetCharFmtName(sBulletCharFmt);
+ break;
+
+ case RID_SVXPAGE_NUM_OPTIONS:
+ {
+ ((SvxNumOptionsTabPage&)rPage).SetCharFmts(sNumCharFmt, sBulletCharFmt);
+ ListBox& rCharFmtLB = ((SvxNumOptionsTabPage&)rPage).GetCharFmtListBox();
+ // Zeichenvorlagen sammeln
+ rCharFmtLB.Clear();
+ rCharFmtLB.InsertEntry( ViewShell::GetShellRes()->aStrNone );
+ SwDocShell* pDocShell = rWrtSh.GetView().GetDocShell();
+ ::FillCharStyleListBox(rCharFmtLB, pDocShell);
+ FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell));
+ ((SvxNumOptionsTabPage&)rPage).SetMetric(eMetric);
+ }
+ break;
+ case RID_SVXPAGE_NUM_POSITION:
+ {
+ SwDocShell* pDocShell = rWrtSh.GetView().GetDocShell();
+ FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell));
+ ((SvxNumPositionTabPage&)rPage).SetMetric(eMetric);
+// ((SvxNumPositionTabPage&)rPage).SetWrtShell(&rWrtSh);
+ }
+ break;
+ }
+}
+/*-----------------17.02.97 16.52-------------------
+
+--------------------------------------------------*/
+short SwSvxNumBulletTabDialog::Ok()
+{
+ short nRet = SfxTabDialog::Ok();
+ pExampleSet->ClearItem(SID_PARAM_NUM_PRESET);
+ return nRet;
+}
+/* -----------------02.12.98 08:35-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK(SwSvxNumBulletTabDialog, RemoveNumberingHdl, PushButton*, EMPTYARG)
+{
+ EndDialog(RET_USER);
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.198 2000/09/18 16:05:58 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.197 2000/07/27 21:16:39 jp
+ opt: get template names direct from the doc and don't load it from the resource
+
+ Revision 1.196 2000/06/30 15:08:15 os
+ #76568# CreateFromInt32
+
+ Revision 1.195 2000/05/23 19:22:35 jp
+ Bugfixes for Unicode
+
+ Revision 1.194 2000/04/18 15:08:17 os
+ UNICODE
+
+ Revision 1.193 2000/03/03 15:17:02 os
+ StarView remainders removed
+
+ Revision 1.192 2000/02/11 14:56:31 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.191 1999/08/19 14:26:00 OS
+ #67374# embedded graphics in numberings
+
+
+ Rev 1.190 19 Aug 1999 16:26:00 OS
+ #67374# embedded graphics in numberings
+
+ Rev 1.189 23 Apr 1999 16:09:20 OS
+ #64476# Differenz zu numpages.cxx
+
+ Rev 1.188 14 Apr 1999 08:57:14 OS
+ #64476# noch ein Problem behoben
+
+ Rev 1.187 13 Apr 1999 16:04:20 OS
+ #64473# CheckBox an der richtigen Stelle enablen/disablen
+
+ Rev 1.186 08 Apr 1999 13:30:58 OS
+ #64476# SetMinDist wird nicht mehr gebraucht
+
+ Rev 1.185 19 Mar 1999 07:38:10 OS
+ #62656# Abstand Num->Text jetzt richtig
+
+ Rev 1.184 18 Mar 1999 09:25:40 OS
+ #63049# gemogelte Anzeige der Numerierungseinzuege
+
+ Rev 1.183 02 Dec 1998 09:20:56 OS
+ #58263# Entfernen-Button fuer Numerierungen
+
+ Rev 1.182 17 Nov 1998 10:57:20 OS
+ #58263# Numerierungs-Tabseiten aus dem Svx
+
+ Rev 1.181 03 Nov 1998 07:25:04 OS
+ #58263# Numerierungsdialog in den Svx
+
+ Rev 1.180 12 Oct 1998 13:17:26 OS
+ #57760# Fontgroesse fuer das Beispiel eleganter ermitteln
+
+ Rev 1.179 22 Sep 1998 10:04:02 OS
+ #56894# vollstaendig fuer fortlaufende Num. veraendern
+
+ Rev 1.178 08 Sep 1998 17:01:42 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.177 06 Aug 1998 21:41:14 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.176 18 Jul 1998 14:50:46 OS
+ richtige Ebenenanzahl fuer vollst. Numerierung #53233#
+
+ Rev 1.175 09 Jul 1998 14:03:12 OS
+ Kapitelnumerierung jetzt TabDialog
+
+ Rev 1.174 07 Jul 1998 11:31:08 OS
+ InitControls: erst Min/Max setzen, dann Inhalte setzn
+
+ Rev 1.173 07 Jul 1998 09:16:40 OS
+ DisableItem ist nicht zulaessig #52134#
+
+ Rev 1.172 04 Jul 1998 15:44:10 OS
+ Grafikhoehe und Ausrichtung richtig anzeigen #52140#
+
+ Rev 1.171 25 Jun 1998 11:26:48 OS
+ RelLSpace ausbgebaut #51379#
+
+ Rev 1.170 24 Jun 1998 09:00:44 OS
+ MS-Optimierungs-GPF #51425#
+
+
+ --------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/misc/num.hrc b/sw/source/ui/misc/num.hrc
new file mode 100644
index 000000000000..4775a035f304
--- /dev/null
+++ b/sw/source/ui/misc/num.hrc
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: num.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#define GB_LEVEL 1
+#define LB_LEVEL 2
+#define GB_POSITION 3
+#define FT_BORDERDIST 4
+#define MF_BORDERDIST 5
+#define CB_RELATIVE 6
+#define FT_INDENT 7
+#define MF_INDENT 8
+#define FT_NUMDIST 9
+#define MF_NUMDIST 10
+#define FT_ALIGN 11
+#define LB_ALIGN 12
+#define PB_STANDARD 13
+#define GB_PREVIEW 14
+#define WIN_PREVIEW 15
+#define ST_RESET 16
+
+
diff --git a/sw/source/ui/misc/num.src b/sw/source/ui/misc/num.src
new file mode 100644
index 000000000000..dfdadaa2c9de
--- /dev/null
+++ b/sw/source/ui/misc/num.src
@@ -0,0 +1,755 @@
+/*************************************************************************
+ *
+ * $RCSfile: num.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+/* StarView ressource file */
+
+
+#include "globals.hrc"
+#include "misc.hrc"
+#include "num.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+#include "svx/dialogs.hrc"
+
+/**************************************************************************/
+/* */
+/* TabPage Positionen */
+/* */
+/**************************************************************************/
+TabPage TP_NUM_POSITION
+{
+ HelpID = HID_NUM_POSITION ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE;
+ GroupBox GB_LEVEL
+ {
+ Pos = MAP_APPFONT ( 6 , 1 ) ;
+ Size = MAP_APPFONT ( 38 , 130 ) ;
+ Text = "Ebene" ;
+ Text [ ENGLISH ] = "Level" ;
+ Text [ norwegian ] = "Level" ;
+ Text [ italian ] = "Livello" ;
+ Text [ portuguese_brazilian ] = "Nível" ;
+ Text [ portuguese ] = "Nível" ;
+ Text [ finnish ] = "Taso" ;
+ Text [ danish ] = "Niveau" ;
+ Text [ french ] = "Niveau" ;
+ Text [ swedish ] = "Nivå" ;
+ Text [ dutch ] = "Niveau" ;
+ Text [ spanish ] = "Nivel" ;
+ Text [ english_us ] = "Level" ;
+ Text[ chinese_simplified ] = "¼¶";
+ Text[ russian ] = "Óðîâåíü";
+ Text[ polish ] = "Poziom";
+ Text[ japanese ] = "ÚÍÞÙ";
+ Text[ chinese_traditional ] = "¯Å";
+ Text[ arabic ] = "ÇáãÓÊæì";
+ Text[ greek ] = "Åðßðåäï";
+ Text[ korean ] = "¼öÁØ";
+ Text[ turkish ] = "Düzey";
+ Text[ language_user1 ] = " ";
+ };
+ MultiListBox LB_LEVEL
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 26 , 114 ) ;
+ TabStop = TRUE ;
+ DropDown = FALSE ;
+ Border = TRUE ;
+ SimpleMode = TRUE ;
+ };
+ GroupBox GB_POSITION
+ {
+ Pos = MAP_APPFONT ( 47 , 1 ) ;
+ Size = MAP_APPFONT ( 207 , 77 ) ;
+ Text = "Position und Abstand" ;
+ Text [ ENGLISH ] = "Position and distance" ;
+ Group = TRUE ;
+ Text [ english_us ] = "Position and spacing" ;
+ Text [ italian ] = "Posizione" ;
+ Text [ spanish ] = "Posición y espacio" ;
+ Text [ french ] = "Position et écart" ;
+ Text [ dutch ] = "Positie en afstand" ;
+ Text [ swedish ] = "Position och avstånd" ;
+ Text [ danish ] = "Placering og afstand" ;
+ Text [ portuguese_brazilian ] = "Position" ;
+ Text [ portuguese ] = "Posicionamento" ;
+ Text[ chinese_simplified ] = "λÖúͼä¸ô";
+ Text[ russian ] = "Ïîçèöèÿ è èíòåðâàë";
+ Text[ polish ] = "Pozycja i odstêp";
+ Text[ japanese ] = "ˆÊ’u‚ÆŠÔŠu";
+ Text[ chinese_traditional ] = "¦ì¸m©M¶¡¹j";
+ Text[ arabic ] = "ÇáãæÞÚ æÇáãÓÇÝÉ";
+ Text[ greek ] = "ÈÝóç êáé áðüóôáóç";
+ Text[ korean ] = "À§Ä¡¿Í °£°Ý";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Konum ve aralýk";
+ };
+ FixedText FT_BORDERDIST
+ {
+ Pos = MAP_APPFONT ( 50 , 14 ) ;
+ Size = MAP_APPFONT ( 105 , 10 ) ;
+ Text = "Ein~rückung";
+// Text = "Abstand Text <-> Rand" ;
+ Text [ ENGLISH ] = "Distance text <-> border" ;
+ Text [ english_us ] = "Indent" ;
+ Text [ swedish ] = "Indrag" ;
+ Text [ danish ] = "Indrykning" ;
+ Text [ italian ] = "~Rientro" ;
+ Text [ spanish ] = "~Sangría" ;
+ Text [ french ] = "~Retrait" ;
+ Text [ dutch ] = "~Inspringing" ;
+ Text [ portuguese_brazilian ] = "Ab~stand Text <-> Rand" ;
+ Text [ portuguese ] = "A~vanço" ;
+ Text[ chinese_simplified ] = "Ëõ½ø";
+ Text[ russian ] = "Îòñòóï";
+ Text[ polish ] = "Wciêcie";
+ Text[ japanese ] = "ŠÔŠu(~B)";
+ Text[ chinese_traditional ] = "ÁY±Æ";
+ Text[ arabic ] = "ÇáÅÒÇÍÉ";
+ Text[ greek ] = "Åóï÷Þ";
+ Text[ korean ] = "µé¿©¾²±â";
+ Text[ turkish ] = "Girinti";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_RELATIVE
+ {
+ Pos = MAP_APPFONT ( 201 , 14 ) ;
+ Size = MAP_APPFONT ( 49 , 10 ) ;
+ Text = "Relati~v" ;
+ Text [ ENGLISH ] = "Relati~ve" ;
+ Text [ portuguese ] = "~Relativo" ;
+ Text [ english_us ] = "Relati~ve" ;
+ Text [ portuguese_brazilian ] = "Relati~v" ;
+ Text [ swedish ] = "Relati~v" ;
+ Text [ danish ] = "Relativ" ;
+ Text [ italian ] = "Relati~vo" ;
+ Text [ spanish ] = "Relati~vo" ;
+ Text [ french ] = "~Relatif" ;
+ Text [ dutch ] = "Relati~ef" ;
+ Text[ chinese_simplified ] = "Ïà¹Ø(~R)";
+ Text[ russian ] = "Îòíîñèò.";
+ Text[ polish ] = "Wzglêd~ny";
+ Text[ japanese ] = "‘OÚÍÞÙ‚©‚ç(~R)";
+ Text[ chinese_traditional ] = "¬ÛÃö(~R)";
+ Text[ arabic ] = "äÓÈí";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "Ó÷åôéêÜ";
+ Text[ korean ] = "ºñ·Ê(~V)";
+ Text[ turkish ] = "Orantýlý";
+ };
+ MetricField MF_BORDERDIST
+ {
+ Pos = MAP_APPFONT ( 158 , 12 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 1999 ;
+ DecimalDigits = 2 ;
+ Value = 0 ;
+ Unit = FUNIT_CM ;
+ First = 0 ;
+ Last = 1999 ;
+ SpinSize = 5 ;
+ };
+ FixedText FT_INDENT
+ {
+ Pos = MAP_APPFONT ( 50 , 29 ) ;
+ Size = MAP_APPFONT ( 105 , 10 ) ;
+ Text = "Abstand zum Te~xt" ;
+// Text = "Einr~ückung" ;
+ Text [ ENGLISH ] = "Indent" ;
+ Text [ english_us ] = "Space to Te~xt" ;
+ Text [ swedish ] = "Avstånd till text" ;
+ Text [ danish ] = "Afstand til tekst" ;
+ Text [ italian ] = "~Rientro" ;
+ Text [ spanish ] = "~Distancia al texto" ;
+ Text [ french ] = "~Écart du texte" ;
+ Text [ dutch ] = "Afstand tot ~tekst" ;
+ Text [ portuguese_brazilian ] = "Einr~ückung" ;
+ Text [ portuguese ] = "~Distância do texto" ;
+ Text[ chinese_simplified ] = "ÖÁÕýÎĵľàÀë(~X)";
+ Text[ russian ] = "Ðàññòîÿíèå îò òåêñòà";
+ Text[ polish ] = "Odstêp do tekstu";
+ Text[ japanese ] = "÷½Ä‚Ü‚Å‚ÌŠÔŠu(~X)";
+ Text[ chinese_traditional ] = "¦Ü¤º¤åªº¶ZÖÃ(~X)";
+ Text[ arabic ] = "ÇáãÓÇÝÉ ÍÊì ÇáäÕ";
+ Text[ greek ] = "Áðüóôáóç áðü ~êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®¿ÍÀÇ °£°Ý(~X)";
+ Text[ turkish ] = "Metin uzaklýðý";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField MF_INDENT
+ {
+ Pos = MAP_APPFONT ( 158 , 27 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 1999 ;
+ DecimalDigits = 2 ;
+ Value = 0 ;
+ Unit = FUNIT_CM ;
+ First = 0 ;
+ Last = 1999 ;
+ SpinSize = 5 ;
+ };
+ FixedText FT_NUMDIST
+ {
+ Pos = MAP_APPFONT ( 50 , 44 ) ;
+ Size = MAP_APPFONT ( 105 , 10 ) ;
+ Text = "Mindestabstand Nummer <-> Text" ;
+// Text = "Abstand Te~xt <-> Numerierung" ;
+ Text [ ENGLISH ] = "Distance text <-> numbering" ;
+ Text [ english_us ] = "Minimum space numbering <-> text" ;
+ Text [ swedish ] = "Minsta avstånd nummer <-> text" ;
+ Text [ danish ] = "Min. afstand nummer <-> tekst" ;
+ Text [ italian ] = "Distanza testo <-> numerazione" ;
+ Text [ spanish ] = "Distancia mínima Número <-> Texto" ;
+ Text [ french ] = "Écart minimum numéro <-> texte" ;
+ Text [ dutch ] = "Min. afstand nummer <-> tekst" ;
+ Text [ portuguese_brazilian ] = "Abstand Te~xt <-> Numerierung" ;
+ Text [ portuguese ] = "Distância mínima número <-> texto" ;
+ Text[ chinese_simplified ] = "×îС¼ä¸ô ±àºÅÖÁÕýÎÄ(~B)";
+ Text[ russian ] = "Ìèí. èíòåðâàë íîìåð <-> òåêñò";
+ Text[ polish ] = "Odstêp conajmniej Numer <-> tekst";
+ Text[ japanese ] = "”Ô†‚Æ÷½Ä‚ÌŬŠÔŠu(~B)";
+ Text[ chinese_traditional ] = "³Ì¤p¶¡¹j ½s¸¹ <-> ¤º¤å(~B)";
+ Text[ arabic ] = "ÃÞá ãÓÇÝÉ Èíä ÇáÑÞã <-> ÇáäÕ";
+ Text[ greek ] = "ÅëÜ÷éóôç áðüóôáóç áñéèìïý <-> Êåßìåíï";
+ Text[ korean ] = "ÃÖ¼Ò °£°Ý Å©±â <-> ÅؽºÆ®(~B)";
+ Text[ turkish ] = "Asgari numara <-> metin aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField MF_NUMDIST
+ {
+ Pos = MAP_APPFONT ( 158 , 42 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 1999 ;
+ DecimalDigits = 2 ;
+ Value = 0 ;
+ Unit = FUNIT_CM ;
+ First = 0 ;
+ Last = 1999 ;
+ SpinSize = 5 ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_ALIGN
+ {
+ Pos = MAP_APPFONT ( 50 , 59 ) ;
+ Size = MAP_APPFONT ( 105 , 10 ) ;
+ Text = "Ausri~chtung der Nummerierung" ;
+ Text [ ENGLISH ] = "Alignment of the numbering" ;
+ //???
+ Text [ english_us ] = "Numbering ~alignment" ;
+ Text [ swedish ] = "~Placering av numrering" ;
+ Text [ danish ] = "Justering af nummerering" ;
+ Text [ italian ] = "~Allineamento della numerazione" ;
+ Text [ spanish ] = "~Alineación de la numeración" ;
+ Text [ french ] = "~Alignement de la numérotation" ;
+ Text [ dutch ] = "~Nummeringsopties" ;
+ Text [ portuguese_brazilian ] = "Ausri~chtung der Numerierung" ;
+ Text [ portuguese ] = "A~linhamento da numeração" ;
+ Text[ chinese_simplified ] = "±àºÅ¶ÔÆë(~A)";
+ Text[ russian ] = "Âûðàâíèâàíèå íóìåðàöèè";
+ Text[ polish ] = "Wyrównanie numeracji";
+ Text[ japanese ] = "”Ô†•t‚¯‚Ì”z’u(~A)";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "½s¸¹¹ï»ô(~A)";
+ Text[ arabic ] = "ãÍÇÐÇÉ ÇáÊÑÞíã";
+ Text[ greek ] = "Óôïß÷éóç áñßèìçóçò";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â ¸ÂÃã(~A)";
+ Text[ turkish ] = "Numara hizalama";
+ };
+ ListBox LB_ALIGN
+ {
+ Pos = MAP_APPFONT ( 158 , 57 ) ;
+ Size = MAP_APPFONT ( 40 , 40 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Links" ; > ;
+ < "Zentriert" ; > ;
+ < "Rechts" ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Links" ; > ;
+ < "Zentriert" ; > ;
+ < "Rechts" ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "Left" ; > ;
+ < "Centered" ; > ;
+ < "Right" ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "Links" ; > ;
+ < "Zentriert" ; > ;
+ < "Rechts" ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "Vänster" ; > ;
+ < "Centrerad" ; > ;
+ < "Höger" ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "Venstre" ; > ;
+ < "Centreret" ; > ;
+ < "Højre" ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "Sinistra" ; > ;
+ < "Centrato" ; > ;
+ < "Destra" ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "Izquierda" ; > ;
+ < "Centrado" ; > ;
+ < "Derecha" ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "À gauche" ; > ;
+ < "Centré" ; > ;
+ < "À droite" ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "Links" ; > ;
+ < "Gecentreerd" ; > ;
+ < "Rechts" ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "Esquerda" ; > ;
+ < "Centrado" ; > ;
+ < "Direita" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "×ó" ; > ;
+ < "¾ÓÖÐ" ; > ;
+ < "ÓÒ" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Ñëåâà" ; > ;
+ < "Ïî öåíòðó" ; > ;
+ < "Ñïðàâà" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Z lewej" ; > ;
+ < "Wyœrodkowany" ; > ;
+ < "Z prawej" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "¶" ; > ;
+ < "’†‰›" ; > ;
+ < "‰E" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¥ª" ; > ;
+ < "¸m¤¤" ; > ;
+ < "¥k" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "íÓÇÑ" ; > ;
+ < "ÊæÓíØ" ; > ;
+ < "íãíä" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÁñéóôåñÜ" ; > ;
+ < "ÊåíôñáñéóìÝíá" ; > ;
+ < "ÄåîéÜ" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¿ÞÂÊ" ; > ;
+ < "°¡¿îµ¥" ; > ;
+ < "¿À¸¥ÂÊ" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Sol" ; > ;
+ < "Orta" ; > ;
+ < "Sað" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ PushButton PB_STANDARD
+ {
+ Pos = MAP_APPFONT ( 201 , 63 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Text = "~Standard" ;
+ Text [ ENGLISH ] = "~Standard" ;
+ Text [ english_us ] = "~Default" ;
+ Text [ portuguese_brazilian ] = "~Standard" ;
+ Text [ swedish ] = "~Standard" ;
+ Text [ danish ] = "Standard" ;
+ Text [ italian ] = "~Standard" ;
+ Text [ spanish ] = "~Predeterminado" ;
+ Text [ french ] = "~Par défaut" ;
+ Text [ dutch ] = "~Standaard" ;
+ Text [ portuguese ] = "~Padrão" ;
+ Text[ chinese_simplified ] = "±ê×¼(~D)";
+ Text[ russian ] = "Ñòàíäàðò";
+ Text[ polish ] = "Domyœlnie";
+ Text[ japanese ] = "•W€(~D)";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¼Ð·Ç(~D)";
+ Text[ arabic ] = "ýÞíÇÓí";
+ Text[ greek ] = "ÐñïåðéëïãÞ";
+ Text[ korean ] = "±âº»°ª(~D)";
+ Text[ turkish ] = "Standart";
+ };
+ GroupBox GB_PREVIEW
+ {
+ Pos = MAP_APPFONT ( 47 , 81 ) ;
+ Size = MAP_APPFONT ( 207 , 50 ) ;
+ Text = "Vorschau" ;
+ Text [ ENGLISH ] = "Preview" ;
+ Text [ english_us ] = "Preview" ;
+ Text [ portuguese_brazilian ] = "Vorschau" ;
+ Text [ swedish ] = "Förhandsvisning" ;
+ Text [ danish ] = "Eksempel" ;
+ Text [ italian ] = "Anteprima" ;
+ Text [ spanish ] = "Previsualización" ;
+ Text [ french ] = "Aperçu" ;
+ Text [ dutch ] = "Voorbeeld" ;
+ Text [ portuguese ] = "Previsualizar" ;
+ 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 ] = " ";
+ };
+ Window WIN_PREVIEW
+ {
+ Pos = MAP_APPFONT ( 50 , 92 ) ;
+ Size = MAP_APPFONT ( 201 , 34 ) ;
+ };
+};
+
+/**************************************************************************/
+/* */
+/* Dialog fuer Test der Svx-Implementation */
+/* */
+/**************************************************************************/
+TabDialog DLG_SVXTEST_NUM_BULLET
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Nummerierung/Aufzählung" ;
+ Text [ ENGLISH ] = "" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ SVLook = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_PICK_BULLET ;
+ Text = "Bullets" ;
+ Text [ ENGLISH ] = "Bullets" ;
+ Text [ english_us ] = "Bullets" ;
+ Text [ portuguese_brazilian ] = "Bullets" ;
+ Text [ swedish ] = "Bullets" ;
+ Text [ danish ] = "Punkttegn" ;
+ Text [ italian ] = "Punti" ;
+ Text [ spanish ] = "Viñetas" ;
+ Text [ french ] = "Puces" ;
+ Text [ dutch ] = "Opsommingstekens" ;
+ Text [ portuguese ] = "Marcas" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ";
+ Text[ russian ] = "Ìàðêåðû";
+ Text[ polish ] = "Wypunktowanie";
+ Text[ japanese ] = "‰Óð‘‚«";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹";
+ Text[ arabic ] = "ÚáÇãÇÊ ÊÚÏÇÏ";
+ Text[ greek ] = "Êïõêßäåò";
+ Text[ korean ] = "±Û ¸Ó¸® ±âÈ£";
+ Text[ turkish ] = "Madde iþaretleri";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_PICK_SINGLE_NUM ;
+ Text = "Nummerierungsart" ;
+ Text [ ENGLISH ] = "Digits" ;
+ Text [ english_us ] = "Numbering type" ;
+ Text [ portuguese_brazilian ] = "Numerierungsart" ;
+ Text [ swedish ] = "Numreringstyp" ;
+ Text [ danish ] = "Nummereringstype" ;
+ Text [ italian ] = "Tipo di numerazione" ;
+ Text [ spanish ] = "Tipo de numeración" ;
+ Text [ french ] = "Type de numérotation" ;
+ Text [ dutch ] = "Nummeringstijl" ;
+ Text [ portuguese ] = "Tipo de numeração" ;
+ Text[ chinese_simplified ] = "±àºÅÀàÐÍ";
+ Text[ russian ] = "Òèï íóìåðàöèè";
+ Text[ polish ] = "Rodzaj numeracji";
+ Text[ japanese ] = "”Ô†•t‚¯‚ÌŽí—Þ";
+ Text[ chinese_traditional ] = "½s¸¹Ãþ«¬";
+ Text[ arabic ] = "ØÑíÞÉ ÇáÊÑÞíã";
+ Text[ greek ] = "Óôõë áñßèìçóçò";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±âÀ¯Çü";
+ Text[ turkish ] = "Numaralama türü";
+ Text[ language_user1 ] = "Avoid use of \"style\" whenever possible if it could be confused with Styles. EM15.5.00";
+ };
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_PICK_NUM ;
+ Text = "Gliederung" ;
+ Text [ ENGLISH ] = "Outline" ;
+ Text [ english_us ] = "Outline" ;
+ Text [ portuguese_brazilian ] = "Numerierung" ;
+ Text [ swedish ] = "Disposition" ;
+ Text [ danish ] = "Nummerering" ;
+ Text [ italian ] = "Struttura" ;
+ Text [ spanish ] = "Esquema" ;
+ Text [ french ] = "Plan" ;
+ Text [ dutch ] = "Overzicht" ;
+ Text [ portuguese ] = "Esquema" ;
+ Text[ chinese_simplified ] = "´ó¸Ù";
+ Text[ russian ] = "Ñòðóêòóðà";
+ Text[ polish ] = "Konspekt";
+ Text[ japanese ] = "±³ÄײÝ";
+ Text[ chinese_traditional ] = "¤jºõ";
+ Text[ arabic ] = "ÊÞÓíã";
+ Text[ greek ] = "ÄéÜñèñùóç";
+ Text[ korean ] = "¿Ü°û¼±";
+ Text[ turkish ] = "Anahat";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_PICK_BMP ;
+ Text = "Grafiken" ;
+ Text [ ENGLISH ] = "Images" ;
+ Text [ english_us ] = "Graphics" ;
+ Text [ portuguese_brazilian ] = "Grafiken" ;
+ Text [ swedish ] = "Grafiker" ;
+ Text [ danish ] = "Billeder" ;
+ Text [ italian ] = "Immagini" ;
+ Text [ spanish ] = "Imágenes" ;
+ Text [ french ] = "Images" ;
+ Text [ dutch ] = "Afbeeldingen" ;
+ Text [ portuguese ] = "Imagens" ;
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ russian ] = "Ðèñóíêè";
+ Text[ polish ] = "Grafiki";
+ Text[ japanese ] = "}";
+ Text[ chinese_traditional ] = "¹Ï¤ù";
+ Text[ arabic ] = "ÕæÑ";
+ Text[ greek ] = "ÃñáöéêÜ";
+ Text[ korean ] = "±×·¡ÇÈ";
+ Text[ turkish ] = "Grafikler";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_NUM_POSITION ;
+ 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 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_NUM_OPTIONS ;
+ /* ### ACHTUNG: Neuer Text in Resource? Optionen : ~Optionen */
+ Text = "Optionen" ;
+ Text [ ENGLISH ] = "Customize" ;
+ 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 ] = "KW had called this \"Customize\" which leads to unnecessary confusion in translation. EM";
+ };
+ };
+ Text[ english_us ] = "Numbering/Bullets";
+ Text[ portuguese ] = "Numeração & Marcas";
+ Text[ russian ] = "Numerierung/Aufzählung";
+ Text[ dutch ] = "Nummering/opsomming";
+ Text[ french ] = "Numérotation/Puces";
+ Text[ spanish ] = "Numeración/Viñetas";
+ Text[ italian ] = "Elenchi puntati e numerati";
+ Text[ danish ] = "Nummerering/Punkttegn";
+ Text[ swedish ] = "Numrering/punktmarkering";
+ Text[ polish ] = "Numeracja/Liczenie";
+ Text[ portuguese_brazilian ] = "Numerierung/Aufzählung";
+ Text[ japanese ] = "’i—Ž”Ô†/‰Óð‘‚«";
+ Text[ chinese_simplified ] = "±àºÅ/ÏîÄ¿·ûºÅ";
+};
+ String ST_RESET
+ {
+ Text = "~Entfernen" ;
+ Text [ ENGLISH ] = "~Remove" ;
+ Text [ norwegian ] = "~Fjern" ;
+ Text [ italian ] = "Rimuovi" ;
+ Text [ portuguese_brazilian ] = "~Remover" ;
+ Text [ portuguese ] = "~Remover" ;
+ Text [ finnish ] = "~Poista" ;
+ Text [ danish ] = "Fjern" ;
+ Text [ french ] = "~Supprimer" ;
+ Text [ swedish ] = "~Radera" ;
+ Text [ dutch ] = "Ve~rwijderen" ;
+ Text [ spanish ] = "~Eliminar" ;
+ Text [ english_us ] = "~Remove" ;
+ Text[ chinese_simplified ] = "ɾ³ý(~R)";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ(~R)";
+ Text[ chinese_traditional ] = "§R°£(~R)";
+ Text[ arabic ] = "ÅÒÇáÉ";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦(~R)";
+ Text[ turkish ] = "Kaldýr";
+ Text[ language_user1 ] = " ";
+ };
+ Text [ english_us ] = "Numbering/Bullets" ;
+ Text [ portuguese_brazilian ] = "Numerierung/Aufzählung" ;
+ Text [ swedish ] = "Numrering/punktmarkering" ;
+ Text [ danish ] = "Nummerering/punkttegn" ;
+ Text [ italian ] = "Elenchi puntati e numerati" ;
+ Text [ spanish ] = "Numeración/Viñetas" ;
+ Text [ french ] = "Numérotation/Puces" ;
+ Text [ dutch ] = "Nummering/opsomming" ;
+ Text [ portuguese ] = "Numeração & Marcas" ;
+ Text[ chinese_simplified ] = "±àºÅ/ÏîÄ¿·ûºÅ";
+ Text[ russian ] = "Íóìåðàöèÿ/Ñïèñîê";
+ Text[ polish ] = "Numeracja/Wypunktowanie";
+ Text[ japanese ] = "”Ô†•t‚¯/‰Óð‘‚«";
+ Text[ chinese_traditional ] = "½s¸¹/¶µ¥Ø²Å¸¹";
+ Text[ arabic ] = "ÊÑÞíã/ÊÚÏÇÏ";
+ Text[ greek ] = "Áñßèìçóç/Êïõêßäåò";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â/±Û ¸Ó¸® ±âÈ£";
+ Text[ turkish ] = "Numaralama/madde iþaretleri";
+ Text[ language_user1 ] = " ";
+};
+
diff --git a/sw/source/ui/misc/outline.cxx b/sw/source/ui/misc/outline.cxx
new file mode 100644
index 000000000000..aa73fbf26564
--- /dev/null
+++ b/sw/source/ui/misc/outline.cxx
@@ -0,0 +1,1371 @@
+/*************************************************************************
+ *
+ * $RCSfile: outline.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SHL_HXX //autogen
+#include <tools/shl.hxx>
+#endif
+#ifndef _MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+#ifndef _SV_SYSTEM_HXX //autogen
+#include <vcl/system.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+
+#ifndef _NUM_HXX //autogen
+#define USE_NUMTABPAGES
+#include <num.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _OUTLINE_HXX
+#include <outline.hxx>
+#endif
+#ifndef _UINUMS_HXX
+#include <uinums.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _SHELLRES_HXX //autogen
+#include <shellres.hxx>
+#endif
+#ifndef _SFXSTYLE_HXX //autogen
+#include <svtools/style.hxx>
+#endif
+#ifndef _CHARFMT_HXX //autogen
+#include <charfmt.hxx>
+#endif
+#ifndef _DOCSTYLE_HXX //autogen
+#include <docstyle.hxx>
+#endif
+
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc> // fuer Vorlagenname 'keins'
+#endif
+#ifndef _MISC_HRC
+#include <misc.hrc>
+#endif
+#ifndef _OUTLINE_HRC
+#include <outline.hrc>
+#endif
+
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+DBG_NAME(outlinehdl);
+
+// ReplaceTabStr implementiert in doc/docedt.cxx
+//extern void ReplaceTabsStr( String& rStr, const String& rSrch,
+// const String& rRepl );
+
+USHORT lcl_AdjustToPos(SvxAdjust eAdjust)
+{
+ USHORT nRet = 0;
+ switch( eAdjust )
+ {
+ case SVX_ADJUST_CENTER: nRet = 1;break;
+ case SVX_ADJUST_RIGHT: nRet = 2; break;
+ }
+ return nRet;
+}
+
+// Numerierungsformat Umsetzung:
+// ListBox - Format - Enum-Wert
+// 0 - A, B, C, ... - 0
+// 1 - a, b, c, ... - 1
+// 2 - I, II, III, ... - 2
+// 3 - i, ii, iii, ... - 3
+// 4 - 1, 2, 3, ... - 4
+// 5 - A, .., AA, .., - 9
+// 6 - a, .., aa, .., - 10
+// 7 - Ohne - 5
+
+inline USHORT GetNumPos( USHORT n )
+{
+ return SVX_NUM_NUMBER_NONE == n ? 7 : SVX_NUM_ARABIC < n ? n - 4 : n;
+}
+
+inline SvxExtNumType GetNumType( USHORT n )
+{
+ return (SvxExtNumType)(7 == n ? SVX_NUM_NUMBER_NONE : SVX_NUM_ARABIC < n ? n + 4 : n);
+}
+
+/*---------------------------------------------------------------------
+
+---------------------------------------------------------------------*/
+
+class SwNumNamesDlg: public ModalDialog
+{
+ Edit aFormEdit;
+ ListBox aFormBox;
+ GroupBox aFormGrp;
+ OKButton aOKBtn;
+ CancelButton aCancelBtn;
+ HelpButton aHelpBtn;
+
+ DECL_LINK( ModifyHdl, Edit * );
+ DECL_LINK( SelectHdl, ListBox * );
+ DECL_LINK( DoubleClickHdl, ListBox * );
+
+public:
+ SwNumNamesDlg(Window *pParent);
+ ~SwNumNamesDlg();
+ void SetUserNames(const String *pList[]);
+ String GetName() const { return aFormEdit.GetText(); }
+ USHORT GetCurEntryPos() const { return aFormBox.GetSelectEntryPos(); }
+};
+
+/*------------------------------------------------------------------------
+ Beschreibung: selektierten Eintrag merken
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK_INLINE_START( SwNumNamesDlg, SelectHdl, ListBox *, pBox )
+{
+ aFormEdit.SetText(pBox->GetSelectEntry());
+ aFormEdit.SetSelection(Selection(0, SELECTION_MAX));
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwNumNamesDlg, SelectHdl, ListBox *, pBox )
+
+/*------------------------------------------------------------------------
+ Beschreibung: Setzen der vom Benutzer vergebenen Namen
+ Parameter: Liste der vom Benutzer vergebenen Namen;
+ nicht vom Benutzer benannte Positionen sind 0.
+------------------------------------------------------------------------*/
+
+
+void SwNumNamesDlg::SetUserNames(const String *pList[])
+{
+ USHORT nSelect = 0;
+ for(USHORT i = 0; i < SwBaseNumRules::nMaxRules; ++i)
+ {
+ if(pList[i])
+ {
+ aFormBox.RemoveEntry(i);
+ aFormBox.InsertEntry(*pList[i], i);
+ if(i == nSelect && nSelect < SwBaseNumRules::nMaxRules)
+ nSelect++;
+ }
+ }
+ aFormBox.SelectEntryPos(nSelect);
+ SelectHdl(&aFormBox);
+}
+/*------------------------------------------------------------------------
+ Beschreibung: OK-Button freischalten, wenn Text im Edit steht.
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK_INLINE_START( SwNumNamesDlg, ModifyHdl, Edit *, pBox )
+{
+ aOKBtn.Enable(0 != pBox->GetText().Len());
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwNumNamesDlg, ModifyHdl, Edit *, pBox )
+/*------------------------------------------------------------------------
+ Beschreibung: DoubleClickHdl
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK_INLINE_START( SwNumNamesDlg, DoubleClickHdl, ListBox *, EMPTYARG )
+{
+ EndDialog(RET_OK);
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwNumNamesDlg, DoubleClickHdl, ListBox *, EMPTYARG )
+
+/*--------------------------------------------------
+
+--------------------------------------------------*/
+
+SwNumNamesDlg::SwNumNamesDlg(Window *pParent)
+ : ModalDialog(pParent, SW_RES(DLG_NUM_NAMES)),
+ aFormEdit(this, SW_RES(ED_FORM)),
+ aFormBox(this, SW_RES(LB_FORM)),
+ aFormGrp(this, SW_RES(GB_FORM)),
+ aOKBtn(this, SW_RES(BT_OK)),
+ aCancelBtn(this, SW_RES(BT_CANCEL)),
+ aHelpBtn(this, SW_RES(BT_HELP))
+{
+ FreeResource();
+ aFormEdit.SetModifyHdl(LINK(this, SwNumNamesDlg, ModifyHdl));
+ aFormBox.SetSelectHdl(LINK(this, SwNumNamesDlg, SelectHdl));
+ aFormBox.SetDoubleClickHdl(LINK(this, SwNumNamesDlg, DoubleClickHdl));
+ SelectHdl(&aFormBox);
+}
+
+/*--------------------------------------------------
+
+--------------------------------------------------*/
+
+__EXPORT SwNumNamesDlg::~SwNumNamesDlg() {}
+
+
+/* -----------------08.07.98 08:46-------------------
+ *
+ * --------------------------------------------------*/
+USHORT lcl_BitToLevel(USHORT nActLevel)
+{
+ USHORT nTmp = nActLevel;
+ USHORT nTmpLevel = 0;
+ while( 0 != (nTmp >>= 1) )
+ nTmpLevel++;
+ return nTmpLevel;
+}
+
+/* -----------------07.07.98 14:13-------------------
+ *
+ * --------------------------------------------------*/
+SwOutlineTabDialog::SwOutlineTabDialog(Window* pParent,
+ const SfxItemSet* pSwItemSet,
+ SwWrtShell &rSh) :
+ //der UserString wird danach richtig gesetzt
+ SfxTabDialog(pParent, SW_RES(DLG_TAB_OUTLINE), pSwItemSet, FALSE, &aEmptyStr),
+ aFormMenu(SW_RES(MN_FORM)),
+ bModified(rWrtSh.IsModified()),
+ aNullStr(C2S("____")),
+ nNumLevel(1),
+ pChapterNumRules(SW_MOD()->GetChapterNumRules()),
+ rWrtSh(rSh)
+{
+ PushButton* pUserBtn = GetUserButton();
+ pUserBtn->SetText(SW_RES(ST_FORM));
+ pUserBtn->SetHelpId(HID_OUTLINE_FORM);
+ pUserBtn->SetClickHdl(LINK(this, SwOutlineTabDialog, FormHdl));
+
+ FreeResource();
+ pNumRule = new SwNumRule( *rSh.GetOutlineNumRule() );
+ GetCancelButton().SetClickHdl(LINK(this, SwOutlineTabDialog, CancelHdl));
+
+ AddTabPage(TP_NUM_POSITION , &SwNumPositionTabPage::Create, 0);
+ AddTabPage(TP_OUTLINE_NUM , &SwOutlineSettingsTabPage::Create, 0);
+
+ String sHeadline;
+ for(USHORT i = 0; i < MAXLEVEL; ++i )
+ {
+ // wurde die Vorlage noch nicht angelegt, dann ist sie noch an dieserPosition
+ if( !rWrtSh.GetParaStyle( GetDocPoolNm( RES_POOLCOLL_HEADLINE1 + i,
+ sHeadline )) )
+ aCollNames[i] = sHeadline;
+ }
+
+ // Erfragen der Gliederungsebenen der Textvorlagen
+ const USHORT nCount = rWrtSh.GetTxtFmtCollCount();
+ for(i = 0; i < nCount; ++i )
+ {
+ SwTxtFmtColl &rTxtColl = rWrtSh.GetTxtFmtColl(i);
+ if(!rTxtColl.IsDefault())
+ {
+ BYTE nOutLevel = rTxtColl.GetOutlineLevel();
+ if(nOutLevel != NO_NUMBERING)
+ aCollNames[ nOutLevel ] = rTxtColl.GetName();
+ }
+ }
+}
+
+/* -----------------07.07.98 14:13-------------------
+ *
+ * --------------------------------------------------*/
+SwOutlineTabDialog::~SwOutlineTabDialog()
+{
+ delete pNumRule;
+}
+
+/* -----------------07.07.98 14:13-------------------
+ *
+ * --------------------------------------------------*/
+void SwOutlineTabDialog::PageCreated(USHORT nPageId, SfxTabPage& rPage)
+{
+ switch ( nPageId )
+ {
+ case TP_NUM_POSITION:
+ ((SwNumPositionTabPage&)rPage).SetWrtShell(&rWrtSh);
+ ((SwNumPositionTabPage&)rPage).SetOutlineTabDialog(this);
+ break;
+ case TP_OUTLINE_NUM:
+ ((SwOutlineSettingsTabPage&)rPage).SetWrtShell(&rWrtSh);
+ break;
+ }
+}
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwOutlineTabDialog, CancelHdl, Button *, pBtn )
+{
+ if (!bModified)
+ rWrtSh.ResetModified();
+ EndDialog(RET_CANCEL);
+ return 0;
+}
+/* -----------------08.07.98 12:14-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwOutlineTabDialog, FormHdl, Button *, pBtn )
+{
+ //PopupMenu auffuellen
+ for( USHORT i = 0; i < SwChapterNumRules::nMaxRules; ++i )
+ {
+ const SwNumRulesWithName *pRules = pChapterNumRules->GetRules(i);
+ if( pRules )
+ aFormMenu.SetItemText(i + MN_FORMBASE, pRules->GetName());
+ }
+ aFormMenu.SetSelectHdl(LINK(this, SwOutlineTabDialog, MenuSelectHdl));
+ aFormMenu.Execute(pBtn, Rectangle(Point(0,0), pBtn->GetSizePixel()), POPUPMENU_EXECUTE_DOWN);
+ return 0;
+}
+
+/* -----------------08.07.98 12:14-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwOutlineTabDialog, MenuSelectHdl, Menu *, pMenu )
+{
+ BYTE nLevelNo = 0;
+ switch(pMenu->GetCurItemId())
+ {
+ case MN_FORM1: nLevelNo = 1; break;
+ case MN_FORM2: nLevelNo = 2; break;
+ case MN_FORM3: nLevelNo = 3; break;
+ case MN_FORM4: nLevelNo = 4; break;
+ case MN_FORM5: nLevelNo = 5; break;
+ case MN_FORM6: nLevelNo = 6; break;
+ case MN_FORM7: nLevelNo = 7; break;
+ case MN_FORM8: nLevelNo = 8; break;
+ case MN_FORM9: nLevelNo = 9; break;
+
+ case MN_SAVE:
+ {
+ SwNumNamesDlg *pDlg = new SwNumNamesDlg(this);
+ const String *aStrArr[SwChapterNumRules::nMaxRules];
+ for(USHORT i = 0; i < SwChapterNumRules::nMaxRules; ++i)
+ {
+ const SwNumRulesWithName *pRules = pChapterNumRules->GetRules(i);
+ if(pRules)
+ aStrArr[i] = &pRules->GetName();
+ else
+ aStrArr[i] = 0;
+ }
+ pDlg->SetUserNames(aStrArr);
+ if(RET_OK == pDlg->Execute())
+ {
+ const String aName(pDlg->GetName());
+ pChapterNumRules->ApplyNumRules( SwNumRulesWithName(
+ *pNumRule, aName ), pDlg->GetCurEntryPos() );
+ pMenu->SetItemText(
+ pDlg->GetCurEntryPos() + MN_FORMBASE, aName);
+ }
+ delete pDlg;
+ return 0;
+
+ }
+
+ }
+ if( nLevelNo-- )
+ {
+ const SwNumRulesWithName *pRules = pChapterNumRules->GetRules( nLevelNo );
+ if( pRules )
+ {
+ pRules->MakeNumRule( rWrtSh, *pNumRule );
+ pNumRule->SetRuleType( OUTLINE_RULE );
+ }
+ else
+ *pNumRule = *rWrtSh.GetOutlineNumRule();
+ }
+
+ USHORT nPageId = GetCurPageId();
+ SfxTabPage* pPage = GetTabPage( nPageId );
+ pPage->Reset(*GetOutputItemSet());
+
+ return 0;
+}
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+USHORT SwOutlineTabDialog::GetLevel(const String &rFmtName) const
+{
+ for(USHORT i = 0; i < MAXLEVEL; ++i)
+ {
+ if(aCollNames[i] == rFmtName)
+ return i;
+ }
+ return NO_NUMBERING;
+}
+/* -----------------07.07.98 16:30-------------------
+ *
+ * --------------------------------------------------*/
+short SwOutlineTabDialog::Ok()
+{
+ short nRet = SfxTabDialog::Ok();
+ // bei allen erzeugten Vorlagen die Ebenen setzen, muss
+ // geschehen, um evtl. aufgehobene Zuordnungen
+ // auch wieder zu loeschen
+ USHORT i, nCount = rWrtSh.GetTxtFmtCollCount();
+ for( i = 0; i < nCount; ++i )
+ {
+ SwTxtFmtColl &rTxtColl = rWrtSh.GetTxtFmtColl(i);
+ if( !rTxtColl.IsDefault() )
+ rTxtColl.SetOutlineLevel( (BYTE)GetLevel(rTxtColl.GetName()));
+ }
+
+ for( i = 0; i < MAXLEVEL; ++i )
+ if( !aCollNames[i].Len() )
+ {
+ SwTxtFmtColl* pTxtColl = rWrtSh.GetTxtCollFromPool(
+ RES_POOLCOLL_HEADLINE1 + i );
+ pTxtColl->SetOutlineLevel( NO_NUMBERING );
+ }
+
+ rWrtSh.SetOutlineNumRule( *pNumRule );
+ return RET_OK;
+}
+
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+SwOutlineSettingsTabPage::SwOutlineSettingsTabPage(Window* pParent, const SfxItemSet& rSet) :
+ SfxTabPage(pParent, SW_RES(TP_OUTLINE_NUM), rSet),
+ aLevelGB( this, ResId(GB_LEVEL )),
+ aLevelLB( this, ResId(LB_LEVEL )),
+ aPreviewGB( this, ResId(GB_PREVIEW )),
+ aPreviewWIN( this, ResId(WIN_PREVIEW )),
+ aCollLbl(this, SW_RES(FT_COLL)),
+ aCollBox(this, SW_RES(LB_COLL)),
+ aNumberLbl(this, SW_RES(FT_NUMBER)),
+ aNumberBox(this, SW_RES(LB_NUMBER)),
+ aCharFmtFT(this, SW_RES(FT_CHARFMT)),
+ aCharFmtLB(this, SW_RES(LB_CHARFMT)),
+ aAllLevelFT( this, ResId(FT_ALL_LEVEL)),
+ aAllLevelNF( this, ResId(NF_ALL_LEVEL)),
+ aDelim(this, SW_RES(FT_DELIM)),
+ aPrefixFT(this, SW_RES(FT_PREFIX)),
+ aPrefixED(this, SW_RES(ED_PREFIX)),
+ aSuffixFT(this, SW_RES(FT_SUFFIX)),
+ aSuffixED(this, SW_RES(ED_SUFFIX)),
+ aStartLbl(this, SW_RES(FT_START)),
+ aStartEdit(this, SW_RES(ED_START)),
+ aNumberGrp(this, SW_RES(GB_NUMBER)),
+ aNoFmtName(SW_RES(ST_NO_COLL)),
+ nActLevel(1),
+ pCollNames(0),
+ pSh(0)
+{
+ FreeResource();
+ SetExchangeSupport();
+
+ aCollBox.InsertEntry(aNoFmtName);
+ aLevelLB.SetSelectHdl(LINK(this, SwOutlineSettingsTabPage, LevelHdl));
+ aAllLevelNF.SetModifyHdl(LINK(this, SwOutlineSettingsTabPage, ToggleComplete));
+ aCollBox.SetSelectHdl(LINK(this, SwOutlineSettingsTabPage, CollSelect));
+ aCollBox.SetGetFocusHdl(LINK(this, SwOutlineSettingsTabPage, CollSelectGetFocus));
+ aNumberBox.SetSelectHdl(LINK(this, SwOutlineSettingsTabPage, NumberSelect));
+ aPrefixED.SetModifyHdl(LINK(this, SwOutlineSettingsTabPage, DelimModify));
+ aSuffixED.SetModifyHdl(LINK(this, SwOutlineSettingsTabPage, DelimModify));
+ aStartEdit.SetModifyHdl(LINK(this, SwOutlineSettingsTabPage, StartModified));
+ aCharFmtLB.SetSelectHdl(LINK(this, SwOutlineSettingsTabPage, CharFmtHdl));
+}
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+void SwOutlineSettingsTabPage::Update()
+{
+ // falls eine Vorlage fuer diese Ebene bereits selektiert wurde,
+ // diese in der ListBox auswaehlean
+ aCollBox.Enable(USHRT_MAX != nActLevel);
+ if(USHRT_MAX == nActLevel)
+ {
+ BOOL bSamePrefix = TRUE;
+ BOOL bSameSuffix = TRUE;
+ BOOL bSameType = TRUE;
+ BOOL bSameComplete = TRUE;
+ BOOL bSameStart = TRUE;
+ BOOL bSameCharFmt = TRUE;
+
+ const SwNumFmt* aNumFmtArr[MAXLEVEL];
+ const SwCharFmt* pFirstFmt = 0;
+
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+
+ aNumFmtArr[ i ] = &pNumRule->Get(i);
+ if(i == 0)
+ pFirstFmt = aNumFmtArr[i]->GetCharFmt();
+ else
+ {
+ bSameType &= aNumFmtArr[i]->eType == aNumFmtArr[0]->eType;
+ bSameStart &= aNumFmtArr[i]->GetStartValue() == aNumFmtArr[0]->GetStartValue();
+ bSamePrefix &= aNumFmtArr[i]->GetPrefix() == aNumFmtArr[0]->GetPrefix();
+ bSameSuffix &= aNumFmtArr[i]->GetPostfix() == aNumFmtArr[0]->GetPostfix();
+ bSameComplete &= aNumFmtArr[i]->GetUpperLevel() == aNumFmtArr[0]->GetUpperLevel();
+ const SwCharFmt* pFmt = aNumFmtArr[i]->GetCharFmt();
+ bSameCharFmt &= !pFirstFmt && !pFmt
+ || pFirstFmt && pFmt && pFmt->GetName() == pFirstFmt->GetName();
+ }
+ }
+ if(bSameType)
+ aNumberBox.SelectEntryPos( GetNumPos( aNumFmtArr[0]->eType ));
+ else
+ aNumberBox.SetNoSelection();
+ if(bSameStart)
+ aStartEdit.SetValue(aNumFmtArr[0]->GetStartValue());
+ else
+ aStartEdit.SetText(aEmptyStr);
+ if(bSamePrefix)
+ aPrefixED.SetText(aNumFmtArr[0]->GetPrefix());
+ else
+ aPrefixED.SetText(aEmptyStr);
+ if(bSameSuffix)
+ aSuffixED.SetText(aNumFmtArr[0]->GetPostfix());
+ else
+ aSuffixED.SetText(aEmptyStr);
+
+ if(bSameCharFmt)
+ {
+ if(pFirstFmt)
+ aCharFmtLB.SelectEntry(pFirstFmt->GetName());
+ else
+ aCharFmtLB.SelectEntry( ViewShell::GetShellRes()->aStrNone );
+ }
+ else
+ aCharFmtLB.SetNoSelection();
+
+ aAllLevelNF.Enable(TRUE);
+ aAllLevelNF.SetMax(MAXLEVEL);
+ if(bSameComplete)
+ {
+ aAllLevelNF.SetValue(aNumFmtArr[0]->GetUpperLevel());
+ }
+ else
+ {
+ aAllLevelNF.SetText(aEmptyStr);
+ }
+ }
+ else
+ {
+ USHORT nTmpLevel = lcl_BitToLevel(nActLevel);
+ String aColl(pCollNames[nTmpLevel]);
+ if(aColl.Len())
+ aCollBox.SelectEntry(aColl);
+ else
+ aCollBox.SelectEntry(aNoFmtName);
+ const SwNumFmt &rFmt = pNumRule->Get(nTmpLevel);
+ aNumberBox.SelectEntryPos( GetNumPos( rFmt.eType ));
+ aPrefixED.SetText(rFmt.GetPrefix());
+ aSuffixED.SetText(rFmt.GetPostfix());
+ const SwCharFmt* pFmt = rFmt.GetCharFmt();
+ if(pFmt)
+ aCharFmtLB.SelectEntry(pFmt->GetName());
+ else
+ aCharFmtLB.SelectEntry( ViewShell::GetShellRes()->aStrNone );
+
+ if(nTmpLevel)
+ {
+ aAllLevelNF.Enable(TRUE);
+ aAllLevelNF.SetMax(nTmpLevel + 1);
+ aAllLevelNF.SetValue(rFmt.GetUpperLevel());
+ }
+ else
+ {
+ aAllLevelNF.SetText(aEmptyStr);
+ aAllLevelNF.Enable(FALSE);
+ }
+
+ aStartEdit.SetValue( rFmt.GetStartValue() );
+ }
+ SetModified();
+}
+
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwOutlineSettingsTabPage, LevelHdl, ListBox *, pBox )
+{
+ nActLevel = 0;
+ if(pBox->IsEntryPosSelected( MAXLEVEL ))
+ {
+ nActLevel = 0xFFFF;
+ }
+ else
+ {
+ USHORT nMask = 1;
+ for( USHORT i = 0; i < MAXLEVEL; i++ )
+ {
+ if(pBox->IsEntryPosSelected( i ))
+ nActLevel |= nMask;
+ nMask <<= 1;
+ }
+ }
+ Update();
+ return 0;
+}
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwOutlineSettingsTabPage, ToggleComplete, NumericField *, pFld )
+{
+ USHORT nStart = 0;
+ USHORT nEnd = MAXLEVEL;
+ USHORT nMask = 1;
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+ if(nActLevel & nMask)
+ {
+ SwNumFmt aNumFmt(pNumRule->Get(i));
+ aNumFmt.SetUpperLevel((BYTE) min(pFld->GetValue(), i + 1) );
+ pNumRule->Set(i, aNumFmt);
+ }
+ nMask <<= 1;
+ }
+ SetModified();
+ return 0;
+}
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwOutlineSettingsTabPage, CollSelect, ListBox *, pBox )
+{
+ BYTE i;
+
+ const String aCollName(pBox->GetSelectEntry());
+ //0xFFFF darf hier nicht sein (disable)
+ USHORT nTmp = nActLevel;
+ USHORT nTmpLevel = lcl_BitToLevel(nActLevel);
+ String sOldName( pCollNames[nTmpLevel] );
+
+ for( i = 0; i < MAXLEVEL; ++i)
+ pCollNames[i] = aSaveCollNames[i];
+
+ if(aCollName == aNoFmtName)
+ pCollNames[nTmpLevel] = aEmptyStr;
+ else
+ {
+ pCollNames[nTmpLevel] = aCollName;
+ // wird die Vorlage bereits verwendet ?
+ for( i = 0; i < MAXLEVEL; ++i)
+ if(i != nTmpLevel && pCollNames[i] == aCollName )
+ pCollNames[i] = aEmptyStr;
+ }
+
+ // search the oldname and put it into the current entries
+ if( sOldName.Len() )
+ for( i = 0; i < MAXLEVEL; ++i)
+ if( aSaveCollNames[ i ] == sOldName && i != nTmpLevel &&
+ !pCollNames[ i ].Len() )
+ {
+ BYTE n;
+ for( n = 0; n < MAXLEVEL; ++n )
+ if( pCollNames[ n ] == sOldName )
+ break;
+
+ if( MAXLEVEL == n )
+ // it was a outline leveld name and the current entries is zero.
+ pCollNames[ i ] = sOldName;
+ }
+
+ SetModified();
+ return 0;
+}
+
+IMPL_LINK( SwOutlineSettingsTabPage, CollSelectGetFocus, ListBox *, pBox )
+{
+ for( BYTE i = 0; i < MAXLEVEL; ++i)
+ aSaveCollNames[i] = pCollNames[i];
+ return 0;
+}
+
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwOutlineSettingsTabPage, NumberSelect, ListBox *, pBox )
+{
+ USHORT nStart = 0;
+ USHORT nEnd = MAXLEVEL;
+ USHORT nMask = 1;
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+ if(nActLevel & nMask)
+ {
+ SwNumFmt aNumFmt(pNumRule->Get(i));
+ aNumFmt.eType = GetNumType( pBox->GetSelectEntryPos() );
+ pNumRule->Set(i, aNumFmt);
+ }
+ nMask <<= 1;
+ }
+ SetModified();
+ return 0;
+}
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwOutlineSettingsTabPage, DelimModify, Edit *, pEdt )
+{
+ USHORT nStart = 0;
+ USHORT nEnd = MAXLEVEL;
+ USHORT nMask = 1;
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+ if(nActLevel & nMask)
+ {
+ SwNumFmt aNumFmt(pNumRule->Get(i));
+ aNumFmt.SetPrefix( aPrefixED.GetText() );
+ aNumFmt.SetPostfix( aSuffixED.GetText() );
+ pNumRule->Set(i, aNumFmt);
+ }
+ nMask <<= 1;
+ }
+ SetModified();
+ return 0;
+}
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwOutlineSettingsTabPage, StartModified, NumericField *, pFld )
+{
+ USHORT nStart = 0;
+ USHORT nEnd = MAXLEVEL;
+ USHORT nMask = 1;
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+ if(nActLevel & nMask)
+ {
+ SwNumFmt aNumFmt(pNumRule->Get(i));
+ aNumFmt.SetStartValue( (USHORT)pFld->GetValue() );
+ pNumRule->Set(i, aNumFmt);
+ }
+ nMask <<= 1;
+ }
+// SetModified();
+ return 0;
+}
+/* -----------------21.09.98 12:21-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwOutlineSettingsTabPage, CharFmtHdl, ListBox *, EMPTYARG )
+{
+// bAutomaticCharStyles = FALSE;
+ String sEntry = aCharFmtLB.GetSelectEntry();
+ USHORT nMask = 1;
+ BOOL bFormatNone = sEntry == ViewShell::GetShellRes()->aStrNone;
+ SwCharFmt* pFmt = 0;
+ if(!bFormatNone)
+ {
+ USHORT nChCount = pSh->GetCharFmtCount();
+ for(USHORT i = 0; i < nChCount; i++)
+ {
+ SwCharFmt& rChFmt = pSh->GetCharFmt(i);
+ if(rChFmt.GetName() == sEntry)
+ {
+ pFmt = &rChFmt;
+ break;
+ }
+ }
+ if(!pFmt)
+ {
+ SfxStyleSheetBasePool* pPool = pSh->GetView().GetDocShell()->GetStyleSheetPool();
+ SfxStyleSheetBase* pBase;
+ pBase = pPool->Find(sEntry, SFX_STYLE_FAMILY_CHAR);
+ if(!pBase)
+ pBase = &pPool->Make(sEntry, SFX_STYLE_FAMILY_PAGE);
+ pFmt = ((SwDocStyleSheet*)pBase)->GetCharFmt();
+
+ }
+ }
+
+ for(USHORT i = 0; i < MAXLEVEL; i++)
+ {
+ if(nActLevel & nMask)
+ {
+ SwNumFmt aNumFmt(pNumRule->Get(i));
+ if(bFormatNone)
+ aNumFmt.SetCharFmt(0);
+ else
+ aNumFmt.SetCharFmt(pFmt);
+ pNumRule->Set(i, aNumFmt);
+ }
+ nMask <<= 1;
+ }
+// SetModified(FALSE);
+ return RET_OK;
+}
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+SwOutlineSettingsTabPage::~SwOutlineSettingsTabPage()
+{
+}
+/* -----------------07.07.98 16:27-------------------
+ *
+ * --------------------------------------------------*/
+void SwOutlineSettingsTabPage::SetWrtShell(SwWrtShell* pShell)
+{
+ pSh = pShell;
+ // Erfragen der NumRules dieses Dokumentes
+ pNumRule = ((SwOutlineTabDialog*)GetTabDialog())->GetNumRule();
+ pCollNames = ((SwOutlineTabDialog*)GetTabDialog())->GetCollNames();
+
+ //pNumRule = new SwNumRule( *rSh.GetOutlineNumRule() );
+
+ aPreviewWIN.SetNumRule(pNumRule);
+ aPreviewWIN.SetOutlineNames(pCollNames);
+ // Startwert setzen - nActLevel muss hier 1 sein
+ USHORT nTmpLevel = lcl_BitToLevel(nActLevel);
+ const SwNumFmt& rNumFmt = pNumRule->Get( nTmpLevel );
+ aStartEdit.SetValue( rNumFmt.GetStartValue() );
+
+ // Poolformate fuer Ueberschriften anlegen
+ String sStr;
+ USHORT i;
+ for( i = 0; i < MAXLEVEL; ++i )
+ {
+ aCollBox.InsertEntry( GetDocPoolNm( RES_POOLCOLL_HEADLINE1 + i, sStr ));
+ aLevelLB.InsertEntry( String::CreateFromInt32(i + 1) );
+ }
+ sStr.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "1 - " ));
+ sStr += String::CreateFromInt32(MAXLEVEL);
+ aLevelLB.InsertEntry( sStr );
+
+ // Erfragen der Gliederungsebenen der Textvorlagen
+ const USHORT nCount = pSh->GetTxtFmtCollCount();
+ for( i = 0; i < nCount; ++i )
+ {
+ SwTxtFmtColl &rTxtColl = pSh->GetTxtFmtColl(i);
+ if(!rTxtColl.IsDefault())
+ {
+ BYTE nOutLevel = rTxtColl.GetOutlineLevel();
+ sStr = rTxtColl.GetName();
+ if(LISTBOX_ENTRY_NOTFOUND == aCollBox.GetEntryPos( sStr ))
+ aCollBox.InsertEntry( sStr );
+ }
+ }
+
+ aNumberBox.SelectEntryPos( GetNumPos( rNumFmt.eType ));
+ USHORT nOutlinePos = pSh->GetOutlinePos(MAXLEVEL);
+ USHORT nTmp = 0;
+ if(nOutlinePos != USHRT_MAX)
+ {
+ nTmp = pSh->GetOutlineLevel(nOutlinePos);
+ }
+ aLevelLB.SelectEntryPos(nTmp);
+
+ // Zeichenvorlagen sammeln
+ aCharFmtLB.Clear();
+ aCharFmtLB.InsertEntry( ViewShell::GetShellRes()->aStrNone );
+
+ // Zeichenvorlagen
+ ::FillCharStyleListBox(aCharFmtLB,
+ pSh->GetView().GetDocShell());
+ Update();
+}
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+void SwOutlineSettingsTabPage::ActivatePage(const SfxItemSet& rSet)
+{
+ nActLevel = ((SwOutlineTabDialog*)GetTabDialog())->GetActNumLevel();
+ if(nActLevel != USHRT_MAX)
+ aLevelLB.SelectEntryPos(lcl_BitToLevel(nActLevel));
+ else
+ aLevelLB.SelectEntryPos(MAXLEVEL);
+ LevelHdl(&aLevelLB);
+}
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+int SwOutlineSettingsTabPage::DeactivatePage(SfxItemSet *pSet)
+{
+ ((SwOutlineTabDialog*)GetTabDialog())->SetActNumLevel(nActLevel);
+ return LEAVE_PAGE;
+}
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+BOOL SwOutlineSettingsTabPage::FillItemSet( SfxItemSet& rSet )
+{
+ return TRUE;
+}
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+void SwOutlineSettingsTabPage::Reset( const SfxItemSet& rSet )
+{
+ ActivatePage(rSet);
+}
+/* -----------------07.07.98 14:19-------------------
+ *
+ * --------------------------------------------------*/
+SfxTabPage* SwOutlineSettingsTabPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet)
+{
+ return new SwOutlineSettingsTabPage(pParent, rAttrSet);
+}
+
+/*-----------------09.12.97 11:54-------------------
+
+--------------------------------------------------*/
+USHORT lcl_DrawBullet(VirtualDevice* pVDev,
+ const SwNumFmt& rFmt, USHORT nXStart,
+ USHORT nYStart, const Size& rSize)
+{
+ Font aTmpFont(pVDev->GetFont());
+
+ Font aFont(*rFmt.GetBulletFont());
+ aFont.SetSize(rSize);
+ aFont.SetTransparent(TRUE);
+ pVDev->SetFont( aFont );
+ String aText(rFmt.GetBulletChar());
+ pVDev->DrawText( Point(nXStart, nYStart), aText );
+ USHORT nRet = (USHORT)pVDev->GetTextWidth(aText);
+
+ pVDev->SetFont(aTmpFont);
+ return nRet;
+}
+/*-----------------09.12.97 11:49-------------------
+
+--------------------------------------------------*/
+USHORT lcl_DrawGraphic(VirtualDevice* pVDev, const SwNumFmt &rFmt, USHORT nXStart,
+ USHORT nYStart, USHORT nDivision)
+{
+ const SvxBrushItem* pBrushItem = rFmt.GetGrfBrush();
+ USHORT nRet = 0;
+ if(pBrushItem)
+ {
+ const Graphic* pGrf = pBrushItem->GetGraphic();
+ if(pGrf)
+ {
+ Size aGSize( rFmt.GetGrfSize() );
+ aGSize.Width() /= nDivision;
+ nRet = (USHORT)aGSize.Width();
+ aGSize.Height() /= nDivision;
+ pGrf->Draw( pVDev, Point(nXStart,nYStart),
+ pVDev->PixelToLogic( aGSize ) );
+ }
+ }
+ return nRet;
+
+}
+/*-----------------02.12.97 10:34-------------------
+ Vorschau der Numerierung painten
+--------------------------------------------------*/
+void NumberingPreview::Paint( const Rectangle& rRect )
+{
+ Size aSize(PixelToLogic(GetOutputSizePixel()));
+ Rectangle aRect(Point(0,0), aSize);
+
+ VirtualDevice* pVDev = new VirtualDevice(*this);
+ pVDev->SetMapMode(GetMapMode());
+ pVDev->SetOutputSize( aSize );
+
+
+ pVDev->SetFillColor( Color( COL_WHITE ) );
+ pVDev->DrawRect(aRect);
+
+ if(pActNum)
+ {
+ USHORT nWidthRelation;
+ if(nPageWidth)
+ {
+ nWidthRelation = USHORT (nPageWidth / aSize.Width());
+ if(bPosition)
+ nWidthRelation = nWidthRelation * 2 / 3;
+ else
+ nWidthRelation = nWidthRelation / 4;
+ }
+ else
+ nWidthRelation = 30; // Kapiteldialog
+
+ //Hoehe pro Ebene
+ USHORT nXStep = aSize.Width() / (3 * MAXLEVEL);
+ if(MAXLEVEL < 10)
+ nXStep /= 2;
+ USHORT nYStart = 4;
+ USHORT nYStep = (aSize.Height() - 6)/ MAXLEVEL;
+// USHORT nLineHeight = nYStep * 8 / 10;
+ aStdFont = System::GetStandardFont(STDFONT_SWISS);
+
+ //
+ USHORT nFontHeight = nYStep * 6 / 10;
+ if(bPosition)
+ nFontHeight = nYStep * 15 / 10;
+ aStdFont.SetSize(Size( 0, nFontHeight ));
+
+ SwNodeNum aNum( (BYTE)0 );
+ USHORT nPreNum = pActNum->Get(0).GetStartValue();
+
+ if(bPosition)
+ {
+ USHORT nLineHeight = nFontHeight * 8 / 7;
+ BYTE nStart = 0;
+ while( !(nActLevel & (1<<nStart)) )
+ {
+ nStart++;
+ }
+ if(nStart) // damit moeglichs Vorgaenger und Nachfolger gezeigt werden
+ nStart--;
+ BYTE nEnd = min(nStart + 3, MAXLEVEL);
+ for( BYTE nLevel = nStart; nLevel < nEnd; ++nLevel )
+ {
+ const SwNumFmt &rFmt = pActNum->Get(nLevel);
+ aNum.GetLevelVal()[ nLevel ] = rFmt.GetStartValue();
+ USHORT nXStart = rFmt.GetAbsLSpace() / nWidthRelation;
+ USHORT nTextOffset = rFmt.GetCharTextOffset() / nWidthRelation;
+ USHORT nNumberXPos = nXStart;
+ USHORT nFirstLineOffset = (-rFmt.GetFirstLineOffset()) / nWidthRelation;
+
+ if(nFirstLineOffset <= nNumberXPos)
+ nNumberXPos -= nFirstLineOffset;
+ else
+ nNumberXPos = 0;
+
+ USHORT nBulletWidth = 0;
+ if( SVX_NUM_BITMAP == rFmt.eType )
+ {
+ nBulletWidth = lcl_DrawGraphic(pVDev, rFmt,
+ nNumberXPos,
+ nYStart, nWidthRelation);
+ }
+ else if( SVX_NUM_CHAR_SPECIAL == rFmt.eType )
+ {
+ nBulletWidth = lcl_DrawBullet(pVDev, rFmt, nNumberXPos, nYStart, aStdFont.GetSize());
+ }
+ else
+ {
+ pVDev->SetFont(aStdFont);
+ aNum.SetLevel( nLevel );
+ if(pActNum->IsContinusNum())
+ aNum.GetLevelVal()[nLevel] = nPreNum;
+ String aText(pActNum->MakeNumString( aNum ));
+ pVDev->DrawText( Point(nNumberXPos, nYStart), aText );
+ nBulletWidth = (USHORT)pVDev->GetTextWidth(aText);
+ nPreNum++;
+ }
+ USHORT nTextXPos = nXStart;
+ if(nNumberXPos + nBulletWidth + nTextOffset > nTextXPos )
+ nTextXPos = nNumberXPos + nBulletWidth + nTextOffset;
+ Rectangle aRect1(Point(nTextXPos, nYStart + nFontHeight / 2), Size(aSize.Width() / 2, 2));
+ pVDev->SetFillColor( Color( COL_BLACK ) );
+ pVDev->DrawRect( aRect1 );
+
+ Rectangle aRect2(Point(nXStart, nYStart + nLineHeight + nFontHeight / 2 ), Size(aSize.Width() / 2, 2));
+ pVDev->DrawRect( aRect2 );
+ nYStart += 2 * nLineHeight;
+ }
+ }
+ else
+ {
+ USHORT nLineHeight = nFontHeight * 3 / 2;
+ for( BYTE nLevel = 0; nLevel < MAXLEVEL;
+ ++nLevel, nYStart += nYStep )
+ {
+ const SwNumFmt &rFmt = pActNum->Get(nLevel);
+ aNum.GetLevelVal()[ nLevel ] = rFmt.GetStartValue();
+ USHORT nXStart = (rFmt.GetAbsLSpace() / nWidthRelation) / 2 + 2;
+ USHORT nTextOffset = 2 * nXStep;
+ if( SVX_NUM_BITMAP == rFmt.eType )
+ {
+ lcl_DrawGraphic(pVDev, rFmt, nXStart, nYStart, nWidthRelation);
+ nTextOffset = nLineHeight + nXStep;
+ }
+ else if( SVX_NUM_CHAR_SPECIAL == rFmt.eType )
+ {
+// aNum.GetLevelVal()[ nLevel ] = 0;
+ nTextOffset = lcl_DrawBullet(pVDev, rFmt, nXStart, nYStart, aStdFont.GetSize());
+ nTextOffset += nXStep;
+ }
+ else
+ {
+ pVDev->SetFont(aStdFont);
+ aNum.SetLevel( nLevel );
+ if(pActNum->IsContinusNum())
+ aNum.GetLevelVal()[nLevel] = nPreNum;
+ String aText(pActNum->MakeNumString( aNum ));
+ pVDev->DrawText( Point(nXStart, nYStart), aText );
+ nTextOffset = (USHORT)pVDev->GetTextWidth(aText);
+ nTextOffset += nXStep;
+ nPreNum++;
+ }
+ pVDev->SetFont(aStdFont);
+ String sMsg(C2S("StarOffice"));
+ if(pOutlineNames)
+ sMsg = pOutlineNames[nLevel];
+ pVDev->DrawText( Point(nXStart + nTextOffset, nYStart), sMsg );
+ }
+ }
+ }
+ DrawOutDev( Point(0,0), aSize,
+ Point(0,0), aSize,
+ *pVDev );
+ delete pVDev;
+
+}
+
+/*-----------------02.12.97 10:34-------------------
+
+--------------------------------------------------*/
+NumberingPreview::~NumberingPreview()
+{
+}
+
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.105 2000/09/18 16:05:58 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.104 2000/07/26 12:03:33 jp
+ OkHdl: don't use invalid PoolIds
+
+ Revision 1.103 2000/07/25 10:40:29 jp
+ Bug #76772#,#76774#: don't remove all selected templates from the preview, LoadNameRules must set the outline type
+
+ Revision 1.102 2000/07/03 08:54:11 jp
+ must changes for VCL
+
+ Revision 1.101 2000/06/13 14:11:58 os
+ #74049# save outline numbering form to the first empty position
+
+ Revision 1.100 2000/05/23 19:22:39 jp
+ Bugfixes for Unicode
+
+ Revision 1.99 2000/04/26 14:55:46 os
+ GetName() returns const String&
+
+ Revision 1.98 2000/04/18 15:08:17 os
+ UNICODE
+
+ Revision 1.97 2000/03/14 09:32:31 os
+ #74039# outline assignment corrected
+
+ Revision 1.96 2000/03/03 15:17:02 os
+ StarView remainders removed
+
+ Revision 1.95 2000/02/11 14:56:40 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.94 1999/01/06 14:04:56 OS
+ #58643# Positionsbeispiel berichtigt
+
+
+ Rev 1.93 06 Jan 1999 15:04:56 OS
+ #58643# Positionsbeispiel berichtigt
+
+ Rev 1.92 18 Nov 1998 08:35:04 OS
+ #58263# Numerierung in den Svx - Reste
+
+ Rev 1.91 17 Nov 1998 10:57:52 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.90 10 Nov 1998 16:03:34 OS
+ #58201# HelpId fuer Form-Button
+
+ Rev 1.89 09 Nov 1998 14:03:04 AWO
+ Inlcudes hinzugefuegt
+
+ Rev 1.88 06 Nov 1998 14:10:00 OS
+ #45264# Outline-Ebenen nicht fuer index-ebenen
+
+ Rev 1.87 21 Sep 1998 15:31:30 OS
+ #56738# Zeichenvorlage fuer Kapitelnumerierung einstellbar
+
+ Rev 1.86 06 Aug 1998 21:42:08 JP
+ Bug #54796#: neue NumerierungsTypen (WW97 kompatibel)
+
+ Rev 1.85 18 Jul 1998 14:50:52 OS
+ richtige Ebenenanzahl fuer vollst. Numerierung #53233#
+
+ Rev 1.84 09 Jul 1998 14:03:06 OS
+ Kapitelnumerierung jetzt TabDialog
+
+ Rev 1.83 01 Apr 1998 15:15:22 OS
+ Beispielhintergrund zuruecksetzen #49133#
+
+ Rev 1.82 26 Feb 1998 17:07:34 OS
+ keins->keine #47632#
+
+ Rev 1.81 24 Feb 1998 15:44:48 OS
+ Ausrichtung berichtigt #47417#
+
+ Rev 1.80 08 Dec 1997 11:53:30 OS
+ benannte Numerierungen entfernt
+
+ Rev 1.79 05 Dec 1997 16:50:56 OS
+ Numerierungsumbau
+
+ Rev 1.78 05 Dec 1997 10:42:50 OS
+ Numerierungsumbau
+
+ Rev 1.77 04 Dec 1997 16:57:20 OS
+ Numerierungsumbau
+
+ Rev 1.76 24 Nov 1997 16:47:44 MA
+ includes
+
+ Rev 1.75 17 Nov 1997 10:20:58 JP
+ Umstellung Numerierung
+
+ Rev 1.74 03 Nov 1997 13:22:42 MA
+ precomp entfernt
+
+ Rev 1.73 09 Oct 1997 08:48:32 OS
+ Beispieltexte nur noch setzen, wenn sie sich veraendert wurden #44493#
+
+ Rev 1.72 08 Aug 1997 17:28:08 OM
+ Headerfile-Umstellung
+
+ Rev 1.71 31 Jul 1997 15:22:06 MH
+ chg: header
+
+ Rev 1.70 08 Jul 1997 14:09:44 OS
+ ConfigItems von der App ans Module
+
+ Rev 1.69 01 Jul 1997 09:49:52 OS
+ Erweiterung auf neun Formen
+
+ Rev 1.68 09 Jan 1997 18:49:44 OS
+ gfs. aktuelle Ebene selektieren
+
+ Rev 1.67 11 Dec 1996 10:27:02 MA
+ Warnings
+
+ Rev 1.66 11 Nov 1996 11:05:44 MA
+ ResMgr
+
+ Rev 1.65 02 Oct 1996 18:29:00 MA
+ Umstellung Enable/Disable
+
+ Rev 1.64 28 Aug 1996 14:12:18 OS
+ includes
+
+ Rev 1.63 20 Aug 1996 16:22:50 OS
+ Handler zusammengefasst, timeouthdl vor Levelumschaltung rufen
+
+ Rev 1.62 22 Jul 1996 20:54:02 JP
+ Anpassung an die neuen SwUiNumRules
+
+ Rev 1.61 19 Jul 1996 15:32:32 JP
+ Umstellung Numerierung
+
+ Rev 1.60 21 Mar 1996 10:46:00 MA
+ Umstellung SV311
+
+ Rev 1.59 19 Feb 1996 12:33:28 JP
+ MakeNumString kann den Post-/Prefix-String per Flag selbst zufuegen
+
+ Rev 1.58 06 Feb 1996 15:21:12 JP
+ Link Umstellung 305
+
+ Rev 1.57 01 Feb 1996 11:45:58 mk
+ SINIX
+
+ Rev 1.56 03 Jan 1996 11:07:56 OS
+ Format fuer Kapitelnumerierung kann jetzt gespeichert werden
+
+ Rev 1.55 24 Nov 1995 16:58:48 OM
+ PCH->PRECOMPILED
+
+ Rev 1.54 13 Nov 1995 10:51:34 OM
+ static entfernt
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/misc/outline.hrc b/sw/source/ui/misc/outline.hrc
new file mode 100644
index 000000000000..2e7f639e8754
--- /dev/null
+++ b/sw/source/ui/misc/outline.hrc
@@ -0,0 +1,133 @@
+/*************************************************************************
+ *
+ * $RCSfile: outline.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define RB_1 1
+#define RB_2 2
+#define RB_3 3
+#define RB_4 4
+#define RB_5 5
+#define FT_1 6
+#define FT_2 7
+#define FT_3 8
+#define FT_4 9
+#define FT_5 10
+#define FI_1 11
+#define FI_2 12
+#define FI_3 13
+#define FI_4 14
+#define FI_5 15
+//#define GB_LEVEL 16
+
+#define FT_COLL 20
+#define LB_COLL 21
+#define FT_NUMBER 22
+#define LB_NUMBER 23
+#define FT_DELIM 24
+#define FT_DELIM_BEVOR 25
+#define FT_DELIM_AFTER 26
+#define ED_DELIM_BEVOR 27
+#define ED_DELIM_AFTER 28
+#define CB_COMPLETE 29
+#define GB_NUMBER 30
+
+#define LB_ALIGN 31
+#define GB_ALIGN 33
+
+#define FT_START 40
+#define ED_START 41
+#define GB_START 42
+
+#define BT_OK 100
+#define BT_CANCEL 101
+#define BT_HELP 102
+#define BT_FORM 103
+#define BT_RESET 104
+#define GB_FORM 105
+#define LB_FORM 106
+#define ED_FORM 107
+#define FT_ALL_LEVEL 108
+#define NF_ALL_LEVEL 109
+
+#define MN_FORM 110
+#define MN_FORM1 111
+#define MN_FORMBASE MN_FORM1
+#define MN_FORM2 112
+#define MN_FORM3 113
+#define MN_FORM4 114
+#define MN_FORM5 115
+#define MN_FORM6 116
+#define MN_FORM7 117
+#define MN_FORM8 118
+#define MN_FORM9 119
+#define MN_SAVE 120
+
+#define GB_LEVEL 130
+#define LB_LEVEL 131
+#define WIN_PREVIEW 132
+#define GB_PREVIEW 133
+#define FT_SUFFIX 134
+#define ED_SUFFIX 135
+#define FT_PREFIX 136
+#define ED_PREFIX 137
+#define ST_NO_COLL 138
+
+#define ST_FORM 140
+#define FT_CHARFMT 141
+#define LB_CHARFMT 141
diff --git a/sw/source/ui/misc/outline.src b/sw/source/ui/misc/outline.src
new file mode 100644
index 000000000000..dd91b6587a51
--- /dev/null
+++ b/sw/source/ui/misc/outline.src
@@ -0,0 +1,1506 @@
+/*************************************************************************
+ *
+ * $RCSfile: outline.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "misc.hrc"
+#include "outline.hrc"
+#include "globals.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ModalDialog DLG_NUM_NAMES
+{
+ HelpID = HID_NUM_NAMES ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 164 , 82 ) ;
+ Text= "Speichern als";
+ Text[ italian ] = "Salva con nome";
+ Text[ portuguese_brazilian ] = "Gravar como";
+ Text[ portuguese ] = "Guardar como";
+ Text[ danish ] = "Ge~m som";
+ Text[ french ] = "Enregistrer sous";
+ Text[ swedish ] = "Spara som";
+ Text[ dutch ] = "Opslaan als";
+ Text[ spanish ] = "Guardar como";
+ Text[ english_us ] = "Save As";
+ Text[ chinese_simplified ] = "Áí´æΪ";
+ Text[ russian ] = "Ñîõðàíèòü êàê";
+ Text[ polish ] = "Zapisz jako";
+ Text[ japanese ] = "–¼‘O‚ð•t‚¯‚Ä•Û‘¶";
+ Text[ chinese_traditional ] = "¥t¦s·sÀÉ";
+ Text[ arabic ] = "ÍÝÙ ßÜ";
+ Text = "Speichern als" ;
+ Text [ ENGLISH ] = "Save as" ;
+ Moveable = TRUE ;
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 108 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 108 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 108 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ GroupBox GB_FORM
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 96 , 73 ) ;
+ Text = "Form" ;
+ Text [ ENGLISH ] = "Form" ;
+ Text [ english_us ] = "Format" ;
+ Text [ swedish ] = "Format" ;
+ Text [ danish ] = "Form" ;
+ Text [ italian ] = "Forma" ;
+ Text [ spanish ] = "Forma" ;
+ Text [ french ] = "Format" ;
+ Text [ dutch ] = "Vorm" ;
+ Text [ portuguese_brazilian ] = "Form" ;
+ Text [ portuguese ] = "Formato" ;
+ Text[ chinese_simplified ] = "¸ñʽ";
+ Text[ russian ] = "Ôîðìàò";
+ Text[ polish ] = "Format";
+ Text[ japanese ] = "Ì«°Ñ";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÇáÊäÓíÞ";
+ Text[ greek ] = "ÌïñöÞ";
+ Text[ korean ] = "¼­½Ä";
+ Text[ turkish ] = "Format";
+ };
+ ListBox LB_FORM
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 29 ) ;
+ Size = MAP_APPFONT ( 84 , 42 ) ;
+ TabStop = TRUE ;
+ CurPos = 0 ;
+ StringList =
+ {
+ < "Unbenannt 1" ; > ;
+ < "Unbenannt 2" ; > ;
+ < "Unbenannt 3" ; > ;
+ < "Unbenannt 4" ; > ;
+ < "Unbenannt 5" ; > ;
+ < "Unbenannt 6" ; > ;
+ < "Unbenannt 7" ; > ;
+ < "Unbenannt 8" ; > ;
+ < "Unbenannt 9" ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Unbenannt 1" ; > ;
+ < "Unbenannt 2" ; > ;
+ < "Unbenannt 3" ; > ;
+ < "Unbenannt 4" ; > ;
+ < "Unbenannt 5" ; > ;
+ < "Unbenannt 6" ; > ;
+ < "Unbenannt 7" ; > ;
+ < "Unbenannt 8" ; > ;
+ < "Unbenannt 9" ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "Untitled 1" ; > ;
+ < "Untitled 2" ; > ;
+ < "Untitled 3" ; > ;
+ < "Untitled 4" ; > ;
+ < "Untitled 5" ; > ;
+ < "Untitled 6" ; > ;
+ < "Untitled 7" ; > ;
+ < "Untitled 8" ; > ;
+ < "Untitled 9" ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "Namnlös 1" ; > ;
+ < "Namnlös 2" ; > ;
+ < "Namnlös 3" ; > ;
+ < "Namnlös 4" ; > ;
+ < "Namnlös 5" ; > ;
+ < "Namnlös 6" ; > ;
+ < "Namnlös 7" ; > ;
+ < "Namnlös 8" ; > ;
+ < "Namnlös 9" ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "Ikke-navngivet 1" ; > ;
+ < "Ikke-navngivet 2" ; > ;
+ < "Ikke-navngivet 3" ; > ;
+ < "Ikke-navngivet 4" ; > ;
+ < "Ikke-navngivet 5" ; > ;
+ < "Ikke-navngivet 6" ; > ;
+ < "Ikke-navngivet 7" ; > ;
+ < "Ikke-navngivet 8" ; > ;
+ < "Ikke-navngivet 9" ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "Senza nome 1" ; > ;
+ < "Senza nome 2" ; > ;
+ < "Senza nome 3" ; > ;
+ < "Senza nome 4" ; > ;
+ < "Senza nome 5" ; > ;
+ < "Senza nome 6" ; > ;
+ < "Senza nome 7" ; > ;
+ < "Senza nome 8" ; > ;
+ < "Senza nome 9" ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "Sin nombre 1" ; > ;
+ < "Sin nombre 2" ; > ;
+ < "Sin nombre 3" ; > ;
+ < "Sin nombre 4" ; > ;
+ < "Sin nombre 5" ; > ;
+ < "Sin nombre 6" ; > ;
+ < "Sin nombre 7" ; > ;
+ < "Sin nombre 8" ; > ;
+ < "Sin nombre 9" ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "Sans nom 1" ; > ;
+ < "Sans nom 2" ; > ;
+ < "Sans nom 3" ; > ;
+ < "Sans nom 4" ; > ;
+ < "Sans nom 5" ; > ;
+ < "Sans nom 6" ; > ;
+ < "Sans nom 7" ; > ;
+ < "Sans nom 8" ; > ;
+ < "Sans nom 9" ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "Naamloos 1" ; > ;
+ < "Naamloos 2" ; > ;
+ < "Naamloos 3" ; > ;
+ < "Naamloos 4" ; > ;
+ < "Naamloos 5" ; > ;
+ < "Naamloos 6" ; > ;
+ < "Naamloos 7" ; > ;
+ < "Naamloos 8" ; > ;
+ < "Naamloos 9" ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "Sem nome 1" ; > ;
+ < "Sem nome 2" ; > ;
+ < "Sem nome 3" ; > ;
+ < "Sem nome 4" ; > ;
+ < "Sem nome 5" ; > ;
+ < "Sem nome 6" ; > ;
+ < "Sem nome 7" ; > ;
+ < "Sem nome 8" ; > ;
+ < "Sem nome 9" ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "Unbenannt 1" ; > ;
+ < "Unbenannt 2" ; > ;
+ < "Unbenannt 3" ; > ;
+ < "Unbenannt 4" ; > ;
+ < "Unbenannt 5" ; > ;
+ < "Unbenannt 6" ; > ;
+ < "Unbenannt 7" ; > ;
+ < "Unbenannt 8" ; > ;
+ < "Unbenannt 9" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "δÃüÃû 1" ; > ;
+ < "δÃüÃû 2" ; > ;
+ < "δÃüÃû 3" ; > ;
+ < "δÃüÃû 4" ; > ;
+ < "δÃüÃû 5" ; > ;
+ < "δÃüÃû 6" ; > ;
+ < "δÃüÃû 7" ; > ;
+ < "δÃüÃû 8" ; > ;
+ < "δÃüÃû 9" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Áåç èìåíè 1" ; > ;
+ < "Áåç èìåíè 2" ; > ;
+ < "Áåç èìåíè 3" ; > ;
+ < "Áåç èìåíè 4" ; > ;
+ < "Áåç èìåíè 5" ; > ;
+ < "Áåç èìåíè 6" ; > ;
+ < "Áåç èìåíè 7" ; > ;
+ < "Áåç èìåíè 8" ; > ;
+ < "Áåç èìåíè 9" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Bez nazwy 1" ; > ;
+ < "Bez nazwy 2" ; > ;
+ < "Bez nazwy 3" ; > ;
+ < "Bez nazwy 4" ; > ;
+ < "Bez nazwy 5" ; > ;
+ < "Bez nazwy 6" ; > ;
+ < "Bez nazwy 7" ; > ;
+ < "Bez nazwy 8" ; > ;
+ < "Bez nazwy 9" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "–³‘è 1" ; > ;
+ < "–³‘è 2" ; > ;
+ < "–³‘è 3" ; > ;
+ < "–³‘è 4" ; > ;
+ < "–³‘è 5" ; > ;
+ < "–³‘è 6" ; > ;
+ < "–³‘è 7" ; > ;
+ < "–³‘è 8" ; > ;
+ < "–³‘è 9" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¥¼©R¦W 1" ; > ;
+ < "¥¼©R¦W 2" ; > ;
+ < "¥¼©R¦W 3" ; > ;
+ < "¥¼©R¦W 4" ; > ;
+ < "¥¼©R¦W 5" ; > ;
+ < "¥¼©R¦W 6" ; > ;
+ < "¥¼©R¦W 7" ; > ;
+ < "¥¼©R¦W 8" ; > ;
+ < "¥¼©R¦W 9" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÈÏæä ÚäæÇä 1" ; > ;
+ < "ÈÏæä ÚäæÇä 2" ; > ;
+ < "ÈÏæä ÚäæÇä 3" ; > ;
+ < "ÈÏæä ÚäæÇä 4" ; > ;
+ < "ÈÏæä ÚäæÇä 5" ; > ;
+ < "ÈÏæä ÚäæÇä 6" ; > ;
+ < "ÈÏæä ÚäæÇä 7" ; > ;
+ < "ÈÏæä ÚäæÇä 8" ; > ;
+ < "ÈÏæä ÚäæÇä 9" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "Äß÷ùò üíïìá 1" ; > ;
+ < "Äß÷ùò üíïìá 2" ; > ;
+ < "Äß÷ùò üíïìá 3" ; > ;
+ < "Äß÷ùò üíïìá 4" ; > ;
+ < "Äß÷ùò üíïìá 5" ; > ;
+ < "Äß÷ùò üíïìá 6" ; > ;
+ < "Äß÷ùò üíïìá 7" ; > ;
+ < "Äß÷ùò üíïìá 8" ; > ;
+ < "Äß÷ùò üíïìá 9" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "Á¦¸ñ¾øÀ½ 1" ; > ;
+ < "Á¦¸ñ¾øÀ½2" ; > ;
+ < "Á¦¸ñ¾øÀ½3" ; > ;
+ < "Á¦¸ñ¾øÀ½4" ; > ;
+ < "Á¦¸ñ¾øÀ½5" ; > ;
+ < "Á¦¸ñ¾øÀ½6" ; > ;
+ < "Á¦¸ñ¾øÀ½7" ; > ;
+ < "Á¦¸ñ¾øÀ½8" ; > ;
+ < "Á¦¸ñ¾øÀ½9" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Adsýz 1" ; > ;
+ < "Adsýz 2" ; > ;
+ < "Adsýz 3" ; > ;
+ < "Adsýz 4" ; > ;
+ < "Adsýz 5" ; > ;
+ < "Adsýz 6" ; > ;
+ < "Adsýz 7" ; > ;
+ < "Adsýz 8" ; > ;
+ < "Adsýz 9" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ Edit ED_FORM
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 84 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ Text = "Speichern als" ;
+ Text[ greek ] = "ÁðïèÞêåõóç ùò";
+ Text[ korean ] = "´Ù¸¥ À̸§À¸·Î ÀúÀå";
+ Text[ turkish ] = "Farklý kaydet...";
+ Text[ language_user1 ] = " ";
+};
+/**************************************************************************/
+/* */
+/* */
+/* */
+/**************************************************************************/
+TabDialog DLG_TAB_OUTLINE
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Kapitelnummerierung" ;
+ Text [ ENGLISH ] = "Outline Numbering" ;
+ Text [ norwegian ] = "Outline Numbering" ;
+ Text [ italian ] = "Numerazione capitolo" ;
+ Text [ portuguese_brazilian ] = "Numeração Vazada" ;
+ Text [ portuguese ] = "Numeração de capítulos" ;
+ Text [ finnish ] = "Jäsennysnumerointi" ;
+ Text [ danish ] = "Kapitelnummerering" ;
+ Text [ french ] = "Numérotation de chapitres" ;
+ Text [ swedish ] = "Kapitelnumrering" ;
+ Text [ dutch ] = "Hoofdstuknummering" ;
+ Text [ spanish ] = "Numeración de capítulos" ;
+ Text [ english_us ] = "Outline Numbering" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ SVLook = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_OUTLINE_NUM ;
+ Text = "Nummerierung" ;
+ Text [ ENGLISH ] = "Numbering" ;
+ Text [ english_us ] = "Numbering" ;
+ Text [ portuguese_brazilian ] = "Numerierung" ;
+ Text [ swedish ] = "Numrering" ;
+ Text [ danish ] = "Nummerering" ;
+ Text [ italian ] = "Numerazione" ;
+ Text [ spanish ] = "Numeración" ;
+ Text [ french ] = "Numérotation" ;
+ Text [ dutch ] = "Nummering" ;
+ Text [ portuguese ] = "Numeração" ;
+ Text[ chinese_simplified ] = "񅧏";
+ Text[ russian ] = "Íóìåðàöèÿ";
+ Text[ polish ] = "Numeracja";
+ Text[ japanese ] = "”Ô†•t‚¯";
+ Text[ chinese_traditional ] = "½s¸¹";
+ Text[ arabic ] = "ÇáÊÑÞíã";
+ Text[ greek ] = "Áñßèìçóç";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Numaralama";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_NUM_POSITION ;
+ 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 ] = " ";
+ };
+ };
+ };
+ String ST_FORM
+ {
+ Text = "~Form" ;
+ Text [ ENGLISH ] = "T~ype" ;
+ Text [ english_us ] = "~Format" ;
+ Text [ italian ] = "~Forma" ;
+ Text [ spanish ] = "~Forma" ;
+ Text [ french ] = "Format" ;
+ Text [ dutch ] = "~Vorm" ;
+ Text [ swedish ] = "~Format" ;
+ Text [ danish ] = "Format" ;
+ Text [ portuguese_brazilian ] = "~Form" ;
+ Text [ portuguese ] = "Forma~to" ;
+ Text[ chinese_simplified ] = "¸ñʽ(~F)";
+ Text[ russian ] = "Ôîðìàò";
+ Text[ polish ] = "Format";
+ Text[ japanese ] = "Ì«°Ñ(~F)";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "ªí®æ(~F)";
+ Text[ arabic ] = "ÇáÊäÓíÞ";
+ Text[ greek ] = "Ìïñ~öÞ";
+ Text[ korean ] = "¼­½Ä(~F)";
+ Text[ turkish ] = "Format";
+ };
+ Menu MN_FORM
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = MN_FORM1 ;
+ Text = "Unbenannt 1" ;
+ Text [ ENGLISH ] = "Noname 1" ;
+ Text [ norwegian ] = "+++Noname 1" ;
+ Text [ italian ] = "Senza nome 1" ;
+ Text [ portuguese_brazilian ] = "Semnome 1" ;
+ Text [ portuguese ] = "Sem nome 1" ;
+ Text [ finnish ] = "Nimetön 1" ;
+ Text [ danish ] = "Ikke-navngivet 1" ;
+ Text [ french ] = "Sans nom 1" ;
+ Text [ swedish ] = "Namnlös 1" ;
+ Text [ dutch ] = "Naamloos 1" ;
+ Text [ spanish ] = "Sin nombre 1" ;
+ Text [ english_us ] = "Untitled 1" ;
+ HelpID = HID_NUM_OUTL_NAMED_NUMS ;
+ Text[ chinese_simplified ] = "δÃüÃû 1";
+ Text[ russian ] = "Áåç èìåíè 1";
+ Text[ polish ] = "Bez nazwy 1";
+ Text[ japanese ] = "–³‘è 1";
+ Text[ chinese_traditional ] = "¥¼©R¦W 1";
+ Text[ arabic ] = "ÈÏæä ÚäæÇä 1";
+ Text[ greek ] = "Äß÷ùò üíïìá 1";
+ Text[ korean ] = "Á¦¸ñ¾øÀ½ 1";
+ Text[ turkish ] = "Adsýz 1";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_FORM2 ;
+ Text = "Unbenannt 2" ;
+ Text [ ENGLISH ] = "Noname 2" ;
+ Text [ norwegian ] = "+++Noname 2" ;
+ Text [ italian ] = "Senza nome 2" ;
+ Text [ portuguese_brazilian ] = "Semnome 2" ;
+ Text [ portuguese ] = "Sem nome 2" ;
+ Text [ finnish ] = "Nimetön 2" ;
+ Text [ danish ] = "Ikke-navngivet 2" ;
+ Text [ french ] = "Sans nom 2" ;
+ Text [ swedish ] = "Namnlös 2" ;
+ Text [ dutch ] = "Naamloos 2" ;
+ Text [ spanish ] = "Sin nombre 2" ;
+ Text [ english_us ] = "Untitled 2" ;
+ HelpID = HID_NUM_OUTL_NAMED_NUMS ;
+ Text[ chinese_simplified ] = "δÃüÃû 2";
+ Text[ russian ] = "Áåç èìåíè 2";
+ Text[ polish ] = "Bez nazwy 2";
+ Text[ japanese ] = "–³‘è 2";
+ Text[ chinese_traditional ] = "¥¼©R¦W 2";
+ Text[ arabic ] = "ÈÏæä ÚäæÇä 2";
+ Text[ greek ] = "Äß÷ùò üíïìá 2";
+ Text[ korean ] = "Á¦¸ñ¾øÀ½2";
+ Text[ turkish ] = "Adsýz 2";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_FORM3 ;
+ Text = "Unbenannt 3" ;
+ Text [ ENGLISH ] = "Noname 3" ;
+ Text [ norwegian ] = "+++Noname 3" ;
+ Text [ italian ] = "Senza nome 3" ;
+ Text [ portuguese_brazilian ] = "Semnome 3" ;
+ Text [ portuguese ] = "Sem nome 3" ;
+ Text [ finnish ] = "Nimetön 3" ;
+ Text [ danish ] = "Ikke-navngivet 3" ;
+ Text [ french ] = "Sans nom 3" ;
+ Text [ swedish ] = "Namnlös 3" ;
+ Text [ dutch ] = "Naamloos 3" ;
+ Text [ spanish ] = "Sin nombre 3" ;
+ Text [ english_us ] = "Untitled 3" ;
+ HelpID = HID_NUM_OUTL_NAMED_NUMS ;
+ Text[ chinese_simplified ] = "δÃüÃû 3";
+ Text[ russian ] = "Áåç èìåíè 3";
+ Text[ polish ] = "Bez nazwy 3";
+ Text[ japanese ] = "–³‘è 3";
+ Text[ chinese_traditional ] = "¥¼©R¦W 3";
+ Text[ arabic ] = "ÈÏæä ÚäæÇä 3";
+ Text[ greek ] = "Äß÷ùò üíïìá 3";
+ Text[ korean ] = "Á¦¸ñ¾øÀ½3";
+ Text[ turkish ] = "Adsýz 3";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_FORM4 ;
+ Text = "Unbenannt 4" ;
+ Text [ ENGLISH ] = "Noname 4" ;
+ Text [ norwegian ] = "+++Noname 4" ;
+ Text [ italian ] = "Senza nome 4" ;
+ Text [ portuguese_brazilian ] = "Semnome 4" ;
+ Text [ portuguese ] = "Sem nome 4" ;
+ Text [ finnish ] = "Nimetön 4" ;
+ Text [ danish ] = "Ikke-navngivet 4" ;
+ Text [ french ] = "Sans nom 4" ;
+ Text [ swedish ] = "Namnlös 4" ;
+ Text [ dutch ] = "Naamloos 4" ;
+ Text [ spanish ] = "Sin nombre 4" ;
+ Text [ english_us ] = "Untitled 4" ;
+ HelpID = HID_NUM_OUTL_NAMED_NUMS ;
+ Text[ chinese_simplified ] = "δÃüÃû 4";
+ Text[ russian ] = "Áåç èìåíè 4";
+ Text[ polish ] = "Bez nazwy 4";
+ Text[ japanese ] = "–³‘è 4";
+ Text[ chinese_traditional ] = "¥¼©R¦W 4";
+ Text[ arabic ] = "ÈÏæä ÚäæÇä 4";
+ Text[ greek ] = "Äß÷ùò üíïìá 4";
+ Text[ korean ] = "Á¦¸ñ¾øÀ½4";
+ Text[ turkish ] = "Adsýz 4";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_FORM5 ;
+ Text = "Unbenannt 5" ;
+ Text [ ENGLISH ] = "Noname 5" ;
+ Text [ norwegian ] = "+++Noname 5" ;
+ Text [ italian ] = "Senza nome 5" ;
+ Text [ portuguese_brazilian ] = "Semnome 5" ;
+ Text [ portuguese ] = "Sem nome 5" ;
+ Text [ finnish ] = "Nimetön 5" ;
+ Text [ danish ] = "Ikke-navngivet 5" ;
+ Text [ french ] = "Sans nom 5" ;
+ Text [ swedish ] = "Namnlös 5" ;
+ Text [ dutch ] = "Naamloos 5" ;
+ Text [ spanish ] = "Sin nombre 5" ;
+ Text [ english_us ] = "Untitled 5" ;
+ HelpID = HID_NUM_OUTL_NAMED_NUMS ;
+ Text[ chinese_simplified ] = "δÃüÃû 5";
+ Text[ russian ] = "Áåç èìåíè 5";
+ Text[ polish ] = "Bez nazwy 5";
+ Text[ japanese ] = "–³‘è 5";
+ Text[ chinese_traditional ] = "¥¼©R¦W 5";
+ Text[ arabic ] = "ÈÏæä ÚäæÇä 5";
+ Text[ greek ] = "Äß÷ùò üíïìá 5";
+ Text[ korean ] = "Á¦¸ñ¾øÀ½5";
+ Text[ turkish ] = "Adsýz 5";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_FORM6 ;
+ Text = "Unbenannt 6" ;
+ Text [ ENGLISH ] = "Noname 6" ;
+ Text [ norwegian ] = "+++Noname 6" ;
+ Text [ italian ] = "Senza nome 6" ;
+ Text [ portuguese_brazilian ] = "Semnome 6" ;
+ Text [ portuguese ] = "Sem nome 6" ;
+ Text [ finnish ] = "Nimetön 6" ;
+ Text [ danish ] = "Ikke-navngivet 6" ;
+ Text [ french ] = "Sans nom 6" ;
+ Text [ swedish ] = "Namnlös 6" ;
+ Text [ dutch ] = "Naamloos 6" ;
+ Text [ spanish ] = "Sin nombre 6" ;
+ Text [ english_us ] = "Untitled 6" ;
+ HelpID = HID_NUM_OUTL_NAMED_NUMS ;
+ Text[ chinese_simplified ] = "δÃüÃû 6";
+ Text[ russian ] = "Áåç èìåíè 6";
+ Text[ polish ] = "Bez nazwy 6";
+ Text[ japanese ] = "–³‘è 6";
+ Text[ chinese_traditional ] = "¥¼©R¦W 6";
+ Text[ arabic ] = "ÈÏæä ÚäæÇä 6";
+ Text[ greek ] = "Äß÷ùò üíïìá 6";
+ Text[ korean ] = "Á¦¸ñ¾øÀ½6";
+ Text[ turkish ] = "Adsýz 6";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_FORM7 ;
+ Text = "Unbenannt 7" ;
+ Text [ ENGLISH ] = "Noname 7" ;
+ Text [ norwegian ] = "+++Noname 7" ;
+ Text [ italian ] = "Senza nome 7" ;
+ Text [ portuguese_brazilian ] = "Semnome 7" ;
+ Text [ portuguese ] = "Sem nome 7" ;
+ Text [ finnish ] = "Nimetön 7" ;
+ Text [ danish ] = "Ikke-navngivet 7" ;
+ Text [ french ] = "Sans nom 7" ;
+ Text [ swedish ] = "Namnlös 7" ;
+ Text [ dutch ] = "Naamloos 7" ;
+ Text [ spanish ] = "Sin nombre 7" ;
+ Text [ english_us ] = "Untitled 7" ;
+ HelpID = HID_NUM_OUTL_NAMED_NUMS ;
+ Text[ chinese_simplified ] = "δÃüÃû 7";
+ Text[ russian ] = "Áåç èìåíè 7";
+ Text[ polish ] = "Bez nazwy 7";
+ Text[ japanese ] = "–³‘è 7";
+ Text[ chinese_traditional ] = "¥¼©R¦W 7";
+ Text[ arabic ] = "ÈÏæä ÚäæÇä 7";
+ Text[ greek ] = "Äß÷ùò üíïìá 7";
+ Text[ korean ] = "Á¦¸ñ¾øÀ½7";
+ Text[ turkish ] = "Adsýz 7";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_FORM8 ;
+ Text = "Unbenannt 8" ;
+ Text [ ENGLISH ] = "Noname 8" ;
+ Text [ norwegian ] = "+++Noname 8" ;
+ Text [ italian ] = "Senza nome 8" ;
+ Text [ portuguese_brazilian ] = "Semnome 8" ;
+ Text [ portuguese ] = "Sem nome 8" ;
+ Text [ finnish ] = "Nimetön 8" ;
+ Text [ danish ] = "Ikke-navngivet 8" ;
+ Text [ french ] = "Sans nom 8" ;
+ Text [ swedish ] = "Namnlös 8" ;
+ Text [ dutch ] = "Naamloos 8" ;
+ Text [ spanish ] = "Sin nombre 8" ;
+ Text [ english_us ] = "Untitled 8" ;
+ HelpID = HID_NUM_OUTL_NAMED_NUMS ;
+ Text[ chinese_simplified ] = "δÃüÃû 8";
+ Text[ russian ] = "Áåç èìåíè 8";
+ Text[ polish ] = "Bez nazwy 8";
+ Text[ japanese ] = "–³‘è 8";
+ Text[ chinese_traditional ] = "¥¼©R¦W 8";
+ Text[ arabic ] = "ÈÏæä ÚäæÇä 8";
+ Text[ greek ] = "Äß÷ùò üíïìá 8";
+ Text[ korean ] = "Á¦¸ñ¾øÀ½8";
+ Text[ turkish ] = "Adsýz 8";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_FORM9 ;
+ Text = "Unbenannt 9" ;
+ Text [ ENGLISH ] = "Noname 9" ;
+ Text [ norwegian ] = "+++Noname 9" ;
+ Text [ italian ] = "Senza nome 9" ;
+ Text [ portuguese_brazilian ] = "Semnome 9" ;
+ Text [ portuguese ] = "Sem nome 9" ;
+ Text [ finnish ] = "Nimetön 9" ;
+ Text [ danish ] = "Ikke-navngivet 9" ;
+ Text [ french ] = "Sans nom 9" ;
+ Text [ swedish ] = "Namnlös 9" ;
+ Text [ dutch ] = "Naamloos 9" ;
+ Text [ spanish ] = "Sin nombre 9" ;
+ Text [ english_us ] = "Untitled 9" ;
+ HelpID = HID_NUM_OUTL_NAMED_NUMS ;
+ Text[ chinese_simplified ] = "δÃüÃû 9";
+ Text[ russian ] = "Áåç èìåíè 9";
+ Text[ polish ] = "Bez nazwy 9";
+ Text[ japanese ] = "–³‘è 9";
+ Text[ chinese_traditional ] = "¥¼©R¦W 9";
+ Text[ arabic ] = "ÈÏæä ÚäæÇä 9";
+ Text[ greek ] = "Äß÷ùò üíïìá 9";
+ Text[ korean ] = "Á¦¸ñ¾øÀ½9";
+ Text[ turkish ] = "Adsýz 9";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Separator = TRUE ;
+ };
+ MenuItem
+ {
+ Identifier = MN_SAVE ;
+ Text= "Speichern ~als...";
+ Text[ italian ] = "Salva con nome...";
+ Text[ portuguese_brazilian ] = "Gravar ~como...";
+ Text[ portuguese ] = "Guardar ~como...";
+ Text[ danish ] = "Gem som...";
+ Text[ french ] = "Enregistrer comme...";
+ Text[ swedish ] = "Spara so~m...";
+ Text[ dutch ] = "Ops~laan als...";
+ Text[ spanish ] = "G~uardar como...";
+ Text[ english_us ] = "Save ~As...";
+ Text[ russian ] = "Ñîõðàíèòü êàê...";
+ Text[ polish ] = "Zapisz jako...";
+ Text[ japanese ] = "–¼‘O‚ð•t‚¯‚Ä•Û‘¶(~A)...";
+ Text[ chinese_simplified ] = "Áí´æΪ(~A)...";
+ Text = "Speichern ~als..." ;
+ Text[ arabic ] = "...ÍÝÙ ßÜ";
+ HelpID = HID_NUM_OUTL_NUM_SAVEAS ;
+ Text[ greek ] = "~ÁðïèÞêåõóç ùò...";
+ Text[ korean ] = "´Ù¸¥ À̸§À¸·Î ÀúÀå(~A)...";
+ Text[ chinese_traditional ] = "Àx¦s·sÀÉ(~A)...";
+ Text[ turkish ] = "Farklý kaydet...";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "Õ±àºÅ";
+ Text[ russian ] = "Íóìåðàöèÿ ãëàâ";
+ Text[ polish ] = "Numeracja rozdzia³ów";
+ Text[ japanese ] = "͂̔Ԇ•t‚¯";
+ Text[ chinese_traditional ] = "³¹½s¸¹";
+ Text[ arabic ] = "ÊÑÞíã ÇáÝÕæá";
+ Text[ greek ] = "Áñßèìçóç êåöáëáßùí";
+ Text[ korean ] = "Àå ¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Bölüm numaralama";
+ Text[ language_user1 ] = " ";
+};
+/**************************************************************************/
+/* */
+/* TabPage */
+/* */
+/**************************************************************************/
+TabPage TP_OUTLINE_NUM
+{
+ HelpID = HID_TP_OUTLINE_NUM ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE;
+ ListBox LB_LEVEL
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 21 , 114 ) ;
+ TabStop = TRUE ;
+ DropDown = FALSE ;
+ Border = TRUE ;
+ };
+ GroupBox GB_LEVEL
+ {
+ Pos = MAP_APPFONT ( 6 , 1 ) ;
+ Size = MAP_APPFONT ( 33 , 131 ) ;
+ Text = "Ebene" ;
+ Text [ ENGLISH ] = "Level" ;
+ Text [ norwegian ] = "Level" ;
+ Text [ italian ] = "Livello" ;
+ Text [ portuguese_brazilian ] = "Nível" ;
+ Text [ portuguese ] = "Nível" ;
+ Text [ finnish ] = "Taso" ;
+ Text [ danish ] = "Niveau" ;
+ Text [ french ] = "Niveau" ;
+ Text [ swedish ] = "Nivå" ;
+ Text [ dutch ] = "Niveau" ;
+ Text [ spanish ] = "Nivel" ;
+ Text [ english_us ] = "Level" ;
+ Text[ chinese_simplified ] = "¼¶";
+ Text[ russian ] = "Óðîâåíü";
+ Text[ polish ] = "Poziom";
+ Text[ japanese ] = "ÚÍÞÙ";
+ Text[ chinese_traditional ] = "¯Å";
+ Text[ arabic ] = "ÇáãÓÊæì";
+ Text[ greek ] = "Åðßðåäï";
+ Text[ korean ] = "¼öÁØ";
+ Text[ turkish ] = "Düzey";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_COLL
+ {
+ Pos = MAP_APPFONT ( 48 , 10 ) ;
+ Size = MAP_APPFONT ( 81 , 8 ) ;
+ Text = "~Absatzvorlage" ;
+ Text [ ENGLISH ] = "~Paragraph style" ;
+ Text [ norwegian ] = "~Avsnittsoppsett" ;
+ Text [ italian ] = "~Modello di paragrafo" ;
+ Text [ portuguese_brazilian ] = "~Estilo de parágrafo" ;
+ Text [ portuguese ] = "~Estilo de parágrafo" ;
+ Text [ finnish ] = "~Kappaletyyli" ;
+ Text [ danish ] = "Afsnitstypografi" ;
+ Text [ french ] = "~Style de paragraphe" ;
+ Text [ swedish ] = "~Styckeformatmall" ;
+ Text [ dutch ] = "~Alinea-opmaakprofiel" ;
+ Text [ spanish ] = "Estilo de ~párrafo" ;
+ Text [ english_us ] = "~Paragraph Style" ;
+ Group = TRUE ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¶ÎÂäÑùʽ(~P)";
+ Text[ russian ] = "Ñòèëü àáçàöà";
+ Text[ polish ] = "Styl akapitu";
+ Text[ japanese ] = "’i—Ž½À²Ùi~P)";
+ Text[ chinese_traditional ] = "¬q¸¨¼Ë¦¡(~P)";
+ Text[ arabic ] = "äãØ ÇáÝÞÑÉ";
+ Text[ language_user1 ] = "All \"Vorlage\"/Styles are always written with capital S. 10.5.00EM";
+ Text[ greek ] = "Ðñüôõðá ðáñáãñÜöïõ";
+ Text[ korean ] = "´Ü¶ô À¯Çü(~P)";
+ Text[ turkish ] = "Paragraf þablonu";
+ };
+ ListBox LB_COLL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 48 , 20 ) ;
+ Size = MAP_APPFONT ( 122 , 75 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Sort = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ };
+ FixedText FT_NUMBER
+ {
+ Pos = MAP_APPFONT ( 48 , 40 ) ;
+ Size = MAP_APPFONT ( 35 , 8 ) ;
+ Text = "~Nummer" ;
+ Text [ ENGLISH ] = "~Number" ;
+ Text [ norwegian ] = "~Number" ;
+ Text [ italian ] = "~Numero" ;
+ Text [ portuguese_brazilian ] = "~Número" ;
+ Text [ portuguese ] = "~Número" ;
+ Text [ finnish ] = "~Numero" ;
+ Text [ danish ] = "Nummer" ;
+ Text [ french ] = "~Numéro" ;
+ Text [ swedish ] = "~Nummer" ;
+ Text [ dutch ] = "~Nummer" ;
+ Text [ spanish ] = "~Número" ;
+ Text [ english_us ] = "~Number" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "񅧏(~N)";
+ Text[ russian ] = "Íîìåð";
+ Text[ polish ] = "Numer";
+ Text[ japanese ] = "”Ô†(~N)";
+ Text[ chinese_traditional ] = "½s¸¹(~N)";
+ Text[ arabic ] = "ÑÞã";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö(~N)";
+ Text[ turkish ] = "Numara";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_NUMBER
+ {
+ Pos = MAP_APPFONT ( 97 , 38 ) ;
+ Size = MAP_APPFONT ( 73 , 65 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ StringList =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Ohne" ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "None" ;
+ };
+ StringList [ norwegian ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Ingen" ;
+ };
+ StringList [ italian ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Senza" ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Nenhum" ;
+ };
+ StringList [ portuguese ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Sem" ;
+ };
+ StringList [ finnish ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Ei ole" ;
+ };
+ StringList [ danish ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Uden" ;
+ };
+ StringList [ french ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Aucun(e)" ;
+ };
+ StringList [ swedish ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Utan" ;
+ };
+ StringList [ dutch ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Geen" ;
+ };
+ StringList [ spanish ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Ninguno" ;
+ };
+ StringList [ english_us ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "None" ;
+ };
+ StringList [ language_user1 ] =
+ {
+ " " ;
+ " " ;
+ " " ;
+ " " ;
+ " " ;
+ " " ;
+ " " ;
+ " " ;
+ };
+ StringList [ russian ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Áåç" ;
+ };
+ StringList [ greek ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "×ùñßò" ;
+ };
+ StringList [ polish ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Brak" ;
+ };
+ StringList [ japanese ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "‚È‚µ" ;
+ };
+ StringList [ korean ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "¾øÀ½" ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "ÎÞ" ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "µL" ;
+ };
+ StringList [ arabic ] =
+ {
+ "A, B, C, ..." ;
+ "...áȡÊ" ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "ÈÏæä" ;
+ };
+ StringList [ turkish ] =
+ {
+ "A, B, C, ..." ;
+ "a, b, c, ..." ;
+ "I, II, III, ..." ;
+ "i, ii, iii, ..." ;
+ "1, 2, 3, ..." ;
+ "A, .., AA, .., AAA, ..." ;
+ "a, .., aa, .., aaa, ..." ;
+ "Yok" ;
+ };
+ };
+ FixedText FT_CHARFMT
+ {
+ Pos = MAP_APPFONT ( 48 , 58 ) ;
+ Size = MAP_APPFONT ( 45 , 8 ) ;
+ Text = "Zeichenv~orlage" ;
+ Text [ ENGLISH ] = "Character style" ;
+ Text [ english_us ] = "~Character Style" ;
+ Text [ swedish ] = "~Teckenformatmall" ;
+ Text [ danish ] = "Tegntypografi" ;
+ Text [ italian ] = "Modello di carattere" ;
+ Text [ spanish ] = "E~stilo de carácter" ;
+ Text [ french ] = "St~yle de caractères" ;
+ Text [ dutch ] = "~Tekenopmaakprofiel" ;
+ Text [ portuguese_brazilian ] = "Zeichenv~orlage" ;
+ Text [ portuguese ] = "~Estilo de caracteres:" ;
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ";
+ Text[ russian ] = "Ñòèëü çíàêîâ";
+ Text[ polish ] = "Styl znaku";
+ Text[ japanese ] = "•¶Žš½À²Ù";
+ Text[ chinese_traditional ] = "¦r¤¸¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÇáÃÍÑÝ";
+ Text[ greek ] = "Óôõë ÷áñáêôÞñùí";
+ Text[ korean ] = "¹®ÀÚ À¯Çü(~C)";
+ Text[ turkish ] = "Karakter þablonu";
+ Text[ language_user1 ] = "All \"Vorlage\"/Styles are always written with capital S. 10.5.00EM";
+ };
+ ListBox LB_CHARFMT
+ {
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Pos = MAP_APPFONT ( 97 , 56 ) ;
+ Size = MAP_APPFONT ( 73 , 65 ) ;
+ };
+ FixedText FT_ALL_LEVEL
+ {
+ Pos = MAP_APPFONT ( 48 , 76 ) ;
+ Size = MAP_APPFONT ( 48 , 10 ) ;
+ Text = "~Vollständig" ;
+ Text [ ENGLISH ] = "~Complete" ;
+ Text [ norwegian ] = "~Fullstendig" ;
+ Text [ italian ] = "~Completo" ;
+ Text [ portuguese_brazilian ] = "~Completar" ;
+ Text [ portuguese ] = "Co~mpleto" ;
+ Text [ finnish ] = "~Täydellinen" ;
+ Text [ danish ] = "Fuldstændig" ;
+ Text [ french ] = "C~omplet" ;
+ Text [ swedish ] = "~Fullständig" ;
+ Text [ dutch ] = "~Volledig" ;
+ Text [ spanish ] = "~Completo" ;
+ Text [ english_us ] = "Sho~w sublevels" ;
+ Text[ chinese_simplified ] = "ÍêÕûµÄ(~W)";
+ Text[ russian ] = "Ïîëíîñòüþ";
+ Text[ polish ] = "Kompletny";
+ Text[ japanese ] = "‘Í”(~W)";
+ Text[ chinese_traditional ] = "§¹¾ãªº(~W)";
+ Text[ arabic ] = "ßÇãá";
+ Text[ greek ] = "ÏëïêëçñùìÝíï";
+ Text[ korean ] = "ÇÏÀ§ ¼öÁØ º¸À̱â(~W)";
+ Text[ turkish ] = "Tüm düzeyler";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField NF_ALL_LEVEL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 97 , 74 ) ;
+ Size = MAP_APPFONT ( 73 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 10 ;
+ Value = 1 ;
+ First = 1 ;
+ Last = 10 ;
+ };
+ FixedText FT_DELIM
+ {
+ Pos = MAP_APPFONT ( 48 , 90 ) ;
+ Size = MAP_APPFONT ( 40 , 8 ) ;
+ Text = "Trennzeichen" ;
+ Text [ ENGLISH ] = "Delimiter" ;
+ Text [ norwegian ] = "Skilletegn" ;
+ Text [ italian ] = "Separatore" ;
+ Text [ portuguese_brazilian ] = "Delimitador" ;
+ Text [ portuguese ] = "Separador" ;
+ Text [ finnish ] = "Erotin" ;
+ Text [ danish ] = "Skilletegn" ;
+ Text [ french ] = "Séparateur" ;
+ Text [ swedish ] = "Skiljetecken" ;
+ Text [ dutch ] = "Scheidingsteken" ;
+ Text [ spanish ] = "Separador" ;
+ Text [ english_us ] = "Separator" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "·Ö¸ô·û";
+ Text[ russian ] = "Ðàçäåëèòåëü";
+ Text[ polish ] = "Separator";
+ Text[ japanese ] = "‹æØ‚è‹L†";
+ Text[ chinese_traditional ] = "¤À¹j²Å";
+ Text[ arabic ] = "ÝÇÕá";
+ Text[ greek ] = "Åíùôéêü";
+ Text[ korean ] = "±¸ºÐÀÚ";
+ Text[ turkish ] = "Ayýrma iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_PREFIX
+ {
+ Pos = MAP_APPFONT ( 97 , 90 ) ;
+ Size = MAP_APPFONT ( 21 , 8 ) ;
+ Text = "~davor" ;
+ Text [ ENGLISH ] = "before" ;
+ Text [ norwegian ] = "før" ;
+ Text [ italian ] = "~Davanti" ;
+ Text [ portuguese_brazilian ] = "antes" ;
+ Text [ portuguese ] = "an~tes" ;
+ Text [ finnish ] = "Edellä" ;
+ Text [ danish ] = "Før" ;
+ Text [ french ] = "Devant" ;
+ Text [ swedish ] = "f~ramför" ;
+ Text [ dutch ] = "~ervoor" ;
+ Text [ spanish ] = "~delante" ;
+ Text [ english_us ] = "~Before" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "֮ǰ(~B)";
+ Text[ russian ] = "äî";
+ Text[ polish ] = "przed";
+ Text[ japanese ] = "”Ô†‘O(~B)";
+ Text[ chinese_traditional ] = "¤§«e(~B)";
+ Text[ arabic ] = "ÞÈáå";
+ Text[ greek ] = "ðñéí áðü";
+ Text[ korean ] = "Àü¿¡(~B)";
+ Text[ turkish ] = "Baþ. ekle";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_PREFIX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 97 , 101 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Left = TRUE ;
+ };
+ FixedText FT_SUFFIX
+ {
+ Pos = MAP_APPFONT ( 134 , 90 ) ;
+ Size = MAP_APPFONT ( 30 , 8 ) ;
+ // ### ACHTUNG: Neuer Text in Resource? dah~inter : da~hinter
+ Text = "dah~inter" ;
+ Text [ ENGLISH ] = "behind" ;
+ Text [ norwegian ] = "bak" ;
+ Text [ italian ] = "D~ietro" ;
+ Text [ portuguese_brazilian ] = "atrßs" ;
+ Text [ portuguese ] = "~Atrás" ;
+ Text [ finnish ] = "jäljessä" ;
+ Text [ danish ] = "Efter" ;
+ Text [ french ] = "Derrière" ;
+ Text [ swedish ] = "ba~kom" ;
+ Text [ dutch ] = "era~chter" ;
+ Text [ spanish ] = "d~etrás" ;
+ Text [ english_us ] = "~After" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ö®ºó(~A)";
+ Text[ russian ] = "ïîñëå";
+ Text[ polish ] = "za";
+ Text[ japanese ] = "”Ô†Œã(~A)";
+ Text[ chinese_traditional ] = "¤§«á(~A)";
+ Text[ arabic ] = "ÈÚÏå";
+ Text[ greek ] = "ìåôÜ áðü";
+ Text[ korean ] = "ÈÄ¿¡(~A)";
+ Text[ turkish ] = "Son. ekle";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_SUFFIX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 134 , 101 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Left = TRUE ;
+ };
+ FixedText FT_START
+ {
+ Pos = MAP_APPFONT ( 48 , 119 ) ;
+ Size = MAP_APPFONT ( 43 , 8 ) ;
+ Text = "~Beginn bei" ;
+ Text [ English ] = "~Start at" ;
+ Text [ norwegian ] = "~Start på" ;
+ Text [ italian ] = "~Inizia con" ;
+ Text [ portuguese_brazilian ] = "~Começar em" ;
+ Text [ portuguese ] = "~Começar em" ;
+ Text [ finnish ] = "~Start at" ;
+ Text [ danish ] = "Begynd med" ;
+ Text [ french ] = "~À partir de" ;
+ Text [ swedish ] = "~Börja vid" ;
+ Text [ dutch ] = "~Begin met" ;
+ Text [ spanish ] = "Comen~zar en" ;
+ Text [ english_us ] = "~Start at" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¿ªÊ¼´Ó(~S)";
+ Text[ russian ] = "Íà÷àòü ñ";
+ Text[ polish ] = "Zacznij od";
+ Text[ japanese ] = "ŠJŽn͔Ԇ(~S)";
+ Text[ chinese_traditional ] = "¶}©l±q(~S)";
+ Text[ arabic ] = "ÈÏÁð ÈÜ";
+ Text[ greek ] = "ÈÝóç åêêßíçóçò";
+ Text[ korean ] = "¿¡¼­ ½ÃÀÛ(~S)";
+ Text[ turkish ] = "Baþlangýç:";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField ED_START
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 97 , 117 ) ;
+ Size = MAP_APPFONT ( 73 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ Repeat = TRUE ;
+ Maximum = 999 ;
+ Value = 0 ;
+ First = 0 ;
+ Last = 99 ;
+ SpinSize = 1 ;
+ };
+ GroupBox GB_NUMBER
+ {
+ Pos = MAP_APPFONT ( 42 , 1 ) ;
+ Size = MAP_APPFONT ( 131 , 131 ) ;
+ Text = "Nummerierung" ;
+ Text [ ENGLISH ] = "Numbering" ;
+ Text [ norwegian ] = "Nummering" ;
+ Text [ italian ] = "Numerazione" ;
+ Text [ portuguese_brazilian ] = "Numeração" ;
+ Text [ portuguese ] = "Numeração" ;
+ Text [ finnish ] = "Numerointi" ;
+ Text [ danish ] = "Nummerering" ;
+ Text [ french ] = "Numérotation" ;
+ Text [ swedish ] = "Numrering" ;
+ Text [ dutch ] = "Nummering" ;
+ Text [ spanish ] = "Numeración" ;
+ Text [ english_us ] = "Numbering" ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "񅧏";
+ Text[ russian ] = "Íóìåðàöèÿ";
+ Text[ polish ] = "Numeracja";
+ Text[ japanese ] = "”Ô†•t‚¯";
+ Text[ chinese_traditional ] = "½s¸¹";
+ Text[ arabic ] = "ÇáÊÑÞíã";
+ Text[ greek ] = "Áñßèìçóç";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Numaralama";
+ Text[ language_user1 ] = " ";
+ };
+ Window WIN_PREVIEW
+ {
+ Pos = MAP_APPFONT ( 179 , 12 ) ;
+ Size = MAP_APPFONT ( 72 , 114 ) ;
+ };
+ GroupBox GB_PREVIEW
+ {
+ Pos = MAP_APPFONT ( 176 , 1 ) ;
+ Size = MAP_APPFONT ( 78 , 130 ) ;
+ Text = "Vorschau" ;
+ Text [ ENGLISH ] = "Preview" ;
+ Text [ english_us ] = "Preview" ;
+ Text [ portuguese_brazilian ] = "Vorschau" ;
+ Text [ swedish ] = "Förhandsvisning" ;
+ Text [ danish ] = "Eksempel" ;
+ Text [ italian ] = "Anteprima" ;
+ Text [ spanish ] = "Previsualización" ;
+ Text [ french ] = "Aperçu" ;
+ Text [ dutch ] = "Voorbeeld" ;
+ Text [ portuguese ] = "Previsualizar" ;
+ 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 ] = " ";
+ };
+ String ST_NO_COLL
+ {
+ Text = "(keine)" ;
+ TEXT [ English ] = "(none)" ;
+ TEXT [ norwegian ] = "(ingen)" ;
+ TEXT [ italian ] = "(nessuno)" ;
+ TEXT [ portuguese_brazilian ] = "(nenhum)" ;
+ TEXT [ portuguese ] = "(nenhum)" ;
+ TEXT [ finnish ] = "(ei mitään)" ;
+ TEXT [ danish ] = "(ingen)" ;
+ TEXT [ french ] = "(aucun(e))" ;
+ TEXT [ swedish ] = "(inga)" ;
+ TEXT [ dutch ] = "(geen)" ;
+ TEXT [ spanish ] = "(ninguna)" ;
+ 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 ] = " ";
+ };
+};
+
diff --git a/sw/source/ui/misc/pgfnote.cxx b/sw/source/ui/misc/pgfnote.cxx
new file mode 100644
index 000000000000..c60da0aee7d9
--- /dev/null
+++ b/sw/source/ui/misc/pgfnote.cxx
@@ -0,0 +1,478 @@
+/*************************************************************************
+ *
+ * $RCSfile: pgfnote.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _REF_HXX //to avoid internal compiler errors
+#include <tools/ref.hxx>
+#endif
+
+#include "cmdid.h"
+#include "hintids.hxx"
+#include "uiparam.hxx"
+
+#ifndef _SVX_DIALOGS_HRC
+#include <svx/dialogs.hrc>
+#endif
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX
+#include <vcl/svapp.hxx>
+#endif
+
+
+#include "uitool.hxx"
+#include "globals.hrc"
+#include "pagedesc.hxx"
+#include "pgfnote.hxx"
+#include "uiitems.hxx"
+
+#include "misc.hrc"
+#include "pgfnote.hrc"
+
+#define TWIP_TO_LBOX 5
+/*-----------------------------------------------------#---------------
+ Beschreibung: vordefinierte Linien in Point
+ --------------------------------------------------------------------*/
+
+static const USHORT __FAR_DATA nLines[] = {
+ 0,
+ 50,
+ 100,
+ 150,
+ 200,
+ 500
+};
+
+static const USHORT nLineCount = sizeof(nLines) / sizeof(nLines[0]);
+
+static USHORT __FAR_DATA aPageRg[] = {
+ FN_PARAM_FTN_INFO, FN_PARAM_FTN_INFO,
+ 0
+};
+
+
+/*------------------------------------------------------------------------
+ Beschreibung: liefert zurueck, ob die Linienbreite nWidth bereits
+ in der Listbox enthalten ist.
+------------------------------------------------------------------------*/
+
+
+BOOL lcl_HasLineWidth(USHORT nWidth)
+{
+ for(USHORT i = 0; i < nLineCount; ++i) {
+ if(nLines[i] == nWidth)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Handler fuer umschalten zwischen den unterschiedlichen
+ Arten, wie die Hoehe des Fussnotenbereiches angegeben
+ werden kann.
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK_INLINE_START( SwFootNotePage, HeightPage, Button *, EMPTYARG )
+{
+ aMaxHeightEdit.Enable(FALSE);
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwFootNotePage, HeightPage, Button *, EMPTYARG )
+
+
+IMPL_LINK_INLINE_START( SwFootNotePage, HeightMetric, Button *, EMPTYARG )
+{
+ aMaxHeightEdit.Enable();
+ aMaxHeightEdit.GrabFocus();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwFootNotePage, HeightMetric, Button *, EMPTYARG )
+
+/*------------------------------------------------------------------------
+ Beschreibung: Handler Grenzwerte
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwFootNotePage, HeightModify, MetricField *, EMPTYARG )
+{
+ aMaxHeightEdit.SetMax(aMaxHeightEdit.Normalize(lMaxHeight -
+ (aDistEdit.Denormalize(aDistEdit.GetValue(FUNIT_TWIP)) +
+ aLineDistEdit.Denormalize(aLineDistEdit.GetValue(FUNIT_TWIP)))),
+ FUNIT_TWIP);
+ if(aMaxHeightEdit.GetValue() < 0)
+ aMaxHeightEdit.SetValue(0);
+ aDistEdit.SetMax(aDistEdit.Normalize(lMaxHeight -
+ (aMaxHeightEdit.Denormalize(aMaxHeightEdit.GetValue(FUNIT_TWIP)) +
+ aLineDistEdit.Denormalize(aLineDistEdit.GetValue(FUNIT_TWIP)))),
+ FUNIT_TWIP);
+ if(aDistEdit.GetValue() < 0)
+ aDistEdit.SetValue(0);
+ aLineDistEdit.SetMax(aLineDistEdit.Normalize(lMaxHeight -
+ (aMaxHeightEdit.Denormalize(aMaxHeightEdit.GetValue(FUNIT_TWIP)) +
+ aDistEdit.Denormalize(aDistEdit.GetValue(FUNIT_TWIP)))),
+ FUNIT_TWIP);
+ return 0;
+}
+
+// CTOR / DTOR -----------------------------------------------------------
+
+SwFootNotePage::SwFootNotePage(Window *pParent, const SfxItemSet &rSet) :
+
+ SfxTabPage(pParent, SW_RES(TP_FOOTNOTE_PAGE), rSet),
+
+ aMaxHeightPageBtn(this, SW_RES(RB_MAXHEIGHT_PAGE)),
+ aMaxHeightBtn(this, SW_RES(RB_MAXHEIGHT)),
+ aMaxHeightEdit(this, SW_RES(ED_MAXHEIGHT)),
+ aDistLbl(this, SW_RES(FT_DIST)),
+ aDistEdit(this, SW_RES(ED_DIST)),
+ aPosFrm(this, SW_RES(GB_FOOTNOTE_SIZE)),
+
+ aLinePosLbl(this, SW_RES(FT_LINEPOS)),
+ aLinePosBox(this, SW_RES(DLB_LINEPOS)),
+ aLineTypeLbl(this, SW_RES(FT_LINETYPE)),
+ aLineTypeBox(this, SW_RES(DLB_LINETYPE)),
+ aLineWidthLbl(this, SW_RES(FT_LINEWIDTH)),
+ aLineWidthEdit(this, SW_RES(ED_LINEWIDTH)),
+ aLineDistLbl(this, SW_RES(FT_LINEDIST)),
+ aLineDistEdit(this, SW_RES(ED_LINEDIST)),
+ aLineFrm(this, SW_RES(GB_LINE)),
+ aBspWin(this, SW_RES(WN_BSP)),
+ aBspFrm(this, SW_RES(GB_BSP))
+{
+ FreeResource();
+
+ SetExchangeSupport();
+ FieldUnit aMetric = ::GetDfltMetric(FALSE);
+ SetMetric( aMaxHeightEdit, aMetric );
+ SetMetric( aDistEdit, aMetric );
+ SetMetric( aLineDistEdit, aMetric );
+ MeasurementSystem eSys = Application::GetAppInternational().GetMeasurementSystem();
+ long nHeightValue = MEASURE_METRIC != eSys ? 1440 : 1134;
+ aMaxHeightEdit.SetValue(aMaxHeightEdit.Normalize(nHeightValue),FUNIT_TWIP);;
+}
+
+SwFootNotePage::~SwFootNotePage()
+{
+}
+
+
+SfxTabPage* SwFootNotePage::Create(Window *pParent, const SfxItemSet &rSet)
+{
+ return new SwFootNotePage(pParent, rSet);
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwFootNotePage::Reset(const SfxItemSet &rSet)
+{
+ // Falls noch kein Bsp vorhanden Init hier sonst im Activate
+ //
+ SwPageFtnInfo* pDefFtnInfo = 0;
+ const SwPageFtnInfo* pFtnInfo;
+ const SfxPoolItem* pItem = SfxTabPage::GetItem(rSet, FN_PARAM_FTN_INFO);
+ if( pItem )
+ {
+ pFtnInfo = &((const SwPageFtnInfoItem*)pItem)->GetPageFtnInfo();
+ }
+ else
+ {
+ // wenn "Standard" betaetigt wird, wird das Fussnotenitem geloescht,
+ // deswegen muss hier eine Fussnotenstruktur erzeugt werden
+ pDefFtnInfo = new SwPageFtnInfo();
+ pFtnInfo = pDefFtnInfo;
+ }
+ // Hoehe Fussnotenbereich
+ SwTwips lHeight = pFtnInfo->GetHeight();
+ if(lHeight)
+ {
+ aMaxHeightEdit.SetValue(aMaxHeightEdit.Normalize(lHeight),FUNIT_TWIP);
+ aMaxHeightBtn.Check(TRUE);
+ }
+ else
+ {
+ aMaxHeightPageBtn.Check(TRUE);
+ aMaxHeightEdit.Enable(FALSE);
+ }
+ aMaxHeightPageBtn.SetClickHdl(LINK(this,SwFootNotePage,HeightPage));
+ aMaxHeightBtn.SetClickHdl(LINK(this,SwFootNotePage,HeightMetric));
+ Link aLk = LINK(this, SwFootNotePage, HeightModify);
+ aMaxHeightEdit.SetLoseFocusHdl( aLk );
+ aDistEdit.SetLoseFocusHdl( aLk );
+ aLineDistEdit.SetLoseFocusHdl( aLk );
+
+ // Trennlinie
+ for(USHORT i = 0; i < nLineCount; ++i)
+ aLineTypeBox.InsertEntry(nLines[i]);
+
+ const USHORT nWidth = (USHORT)pFtnInfo->GetLineWidth() * TWIP_TO_LBOX;
+ if(lcl_HasLineWidth(nWidth))
+ aLineTypeBox.SelectEntry(nWidth);
+ else
+ {
+ aLineTypeBox.InsertEntry(nWidth);
+ aLineTypeBox.SelectEntry(nWidth);
+ }
+
+ // Position
+ aLinePosBox.SelectEntryPos(pFtnInfo->GetAdj());
+
+ // Breite
+ Fraction aTmp( 100, 1 );
+ aTmp *= pFtnInfo->GetWidth();
+ aLineWidthEdit.SetValue( aTmp );
+
+ // Abstand Fussnotenbereich
+ aDistEdit.SetValue(aDistEdit.Normalize(pFtnInfo->GetTopDist()),FUNIT_TWIP);
+ aLineDistEdit.SetValue(
+ aLineDistEdit.Normalize(pFtnInfo->GetBottomDist()), FUNIT_TWIP);
+ ActivatePage( rSet );
+ delete pDefFtnInfo;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Attribute in den Set stopfen bei OK
+ --------------------------------------------------------------------*/
+
+
+BOOL SwFootNotePage::FillItemSet(SfxItemSet &rSet)
+{
+ SwPageFtnInfoItem aItem((const SwPageFtnInfoItem&)GetItemSet().Get(FN_PARAM_FTN_INFO));
+
+ // Das ist das Original
+ SwPageFtnInfo &rFtnInfo = aItem.GetPageFtnInfo();
+
+ // Hoehe Fussnotenbereich
+ if(aMaxHeightBtn.IsChecked())
+ rFtnInfo.SetHeight(aMaxHeightEdit.
+ Denormalize(aMaxHeightEdit.GetValue(FUNIT_TWIP)));
+ else
+ rFtnInfo.SetHeight(0);
+
+ // Abstand Fussnotenbereich
+ rFtnInfo.SetTopDist(aDistEdit.Denormalize(aDistEdit.GetValue(FUNIT_TWIP)));
+ rFtnInfo.SetBottomDist(
+ aLineDistEdit.Denormalize(aLineDistEdit.GetValue(FUNIT_TWIP)));
+
+ // Trennlinie
+ //Pen aPen(rFtnInfo.GetPen());
+
+ const USHORT nPos = aLineTypeBox.GetSelectEntryPos();
+ if( LISTBOX_ENTRY_NOTFOUND != nPos )
+ rFtnInfo.SetLineWidth(nLines[nPos] / TWIP_TO_LBOX);
+ //rFtnInfo.SetPen(aPen);
+
+ // Position
+ rFtnInfo.SetAdj((SwFtnAdj)aLinePosBox.GetSelectEntryPos());
+
+ // Breite
+ rFtnInfo.SetWidth(Fraction(aLineWidthEdit.GetValue(), 100));
+
+ const SfxPoolItem* pOldItem;
+ if(0 == (pOldItem = GetOldItem( rSet, FN_PARAM_FTN_INFO )) ||
+ aItem != *pOldItem )
+ rSet.Put(aItem);
+
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Bsp Uebernehmen
+ --------------------------------------------------------------------*/
+
+
+void SwFootNotePage::ActivatePage(const SfxItemSet& rSet)
+{
+ aBspWin.UpdateExample( rSet );
+ lMaxHeight = aBspWin.GetSize().Height() -
+ aBspWin.GetHdDist() - aBspWin.GetHdHeight() -
+ aBspWin.GetFtDist() - aBspWin.GetFtHeight()-
+ aBspWin.GetTop() - aBspWin.GetBottom();
+ lMaxHeight *= 8;
+ lMaxHeight /= 10;
+
+ // Maximalwerte setzen
+ HeightModify(0);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+int SwFootNotePage::DeactivatePage( SfxItemSet* pSet)
+{
+ if(pSet)
+ FillItemSet(*pSet);
+
+ return TRUE;
+}
+
+
+USHORT* SwFootNotePage::GetRanges()
+{
+ return aPageRg;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.79 2000/09/18 16:05:59 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.78 2000/03/03 15:17:03 os
+ StarView remainders removed
+
+ Revision 1.77 2000/02/11 14:56:44 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.76 1999/09/20 11:23:04 os
+ set initial value for max footnote height
+
+ Revision 1.75 1999/07/29 11:40:06 MA
+ avoid internal compiler errors
+
+
+ Rev 1.74 29 Jul 1999 13:40:06 MA
+ avoid internal compiler errors
+
+ Rev 1.73 08 Sep 1998 17:01:46 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.72 17 Apr 1998 16:24:44 OS
+ Design verbessert, Linienstaerken berichtigt
+
+ Rev 1.71 28 Nov 1997 20:11:46 MA
+ includes
+
+ Rev 1.70 24 Nov 1997 16:47:42 MA
+ includes
+
+ Rev 1.69 03 Nov 1997 13:22:44 MA
+ precomp entfernt
+
+ Rev 1.68 10 Oct 1997 12:24:12 OS
+ Index fuer LineType berichtigt
+
+ Rev 1.67 09 Sep 1997 16:11:18 OS
+ fuer VCL LineListBox benutzen #43663#
+
+ Rev 1.66 09 Aug 1997 13:31:40 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.65 05 Feb 1997 10:19:18 OM
+ FillItemSet in DeactivatePage rufen
+
+ Rev 1.64 11 Nov 1996 11:05:46 MA
+ ResMgr
+
+ Rev 1.63 02 Oct 1996 18:28:58 MA
+ Umstellung Enable/Disable
+
+ Rev 1.62 29 Aug 1996 16:09:16 OS
+ Korrektur: max. Hoehe des Fussnotenbereichs
+
+ Rev 1.61 28 Aug 1996 14:12:12 OS
+ includes
+
+ Rev 1.60 02 Jul 1996 10:09:56 NF
+ includes
+
+ Rev 1.59 06 Feb 1996 15:21:14 JP
+ Link Umstellung 305
+
+ Rev 1.58 23 Jan 1996 11:27:10 OS
+ richtige Reaktion auf Standard-Button im Formatdialog
+
+ Rev 1.57 29 Nov 1995 17:51:26 OS
+ im Reset Default-Fussnote erzeugen
+
+ Rev 1.56 28 Nov 1995 21:13:18 JP
+ UiSystem-Klasse aufgehoben, in initui/swtype aufgeteilt
+
+ Rev 1.55 24 Nov 1995 16:58:46 OM
+ PCH->PRECOMPILED
+
+ Rev 1.54 13 Nov 1995 10:51:34 OM
+ static entfernt
+
+ Rev 1.53 08 Nov 1995 13:31:44 JP
+ Umstellung zur 301: Change -> Set
+
+ Rev 1.52 05 Oct 1995 17:31:02 JP
+ eigene TabPages mit GetRanges versehen (fuer Vorlagen editieren)
+
+ Rev 1.51 22 Aug 1995 09:34:22 MA
+ svxitems-header entfernt
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/misc/pgfnote.hrc b/sw/source/ui/misc/pgfnote.hrc
new file mode 100644
index 000000000000..1f30840f238b
--- /dev/null
+++ b/sw/source/ui/misc/pgfnote.hrc
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: pgfnote.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#define RB_MAXHEIGHT_PAGE 1
+#define RB_MAXHEIGHT 2
+#define ED_MAXHEIGHT 3
+#define FT_DIST 4
+#define ED_DIST 5
+#define GB_FOOTNOTE_SIZE 10
+
+#define FT_LINETYPE 20
+#define DLB_LINETYPE 21
+#define FT_LINEPOS 22
+#define DLB_LINEPOS 23
+#define FT_LINEWIDTH 24
+#define ED_LINEWIDTH 25
+#define FT_LINEDIST 26
+#define ED_LINEDIST 27
+#define GB_LINE 30
+
+#define GB_BSP 31
+#define WN_BSP 32
diff --git a/sw/source/ui/misc/pgfnote.src b/sw/source/ui/misc/pgfnote.src
new file mode 100644
index 000000000000..fe89f4dfe8e5
--- /dev/null
+++ b/sw/source/ui/misc/pgfnote.src
@@ -0,0 +1,590 @@
+/*************************************************************************
+ *
+ * $RCSfile: pgfnote.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "globals.hrc"
+#include "pgfnote.hrc"
+#include "helpid.h"
+ // #define TP_FOOTNOTE_PAGE 256
+TabPage TP_FOOTNOTE_PAGE
+{
+ HelpID = HID_FOOTNOTE_PAGE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE;
+ RadioButton RB_MAXHEIGHT
+ {
+ Pos = MAP_APPFONT ( 14 , 31 ) ;
+ Size = MAP_APPFONT ( 95 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ma~x. Höhe der Fußnote : Ma~x. H÷he der Fu˜note */
+ Text = "Ma~x. Höhe der Fußnote" ;
+ Text [ ENGLISH ] = "Max. ~Height of Footnote" ;
+ Text [ norwegian ] = "Maks. ~Høyde på Fotnote" ;
+ Text [ italian ] = "Altezza massima nota a piè pagina" ;
+ Text [ portuguese_brazilian ] = "Max. ~Height of Footnote" ;
+ Text [ portuguese ] = "~Altura máxima da nota de rodapé" ;
+ Text [ finnish ] = "Max. ~Height of Footnote" ;
+ Text [ danish ] = "Maks. højde fodnote" ;
+ Text [ french ] = "Hauteur max. du ~pied de page" ;
+ Text [ swedish ] = "Fotnotens ma~x höjd" ;
+ Text [ dutch ] = "~Maximum hoogte voetnoot" ;
+ Text [ spanish ] = "Altura máx. de ~nota al pie" ;
+ Text [ english_us ] = "Maximum footnote ~height" ;
+ Text[ chinese_simplified ] = "×¢½ÅµÄ×î¸ß¶È(~H)";
+ Text[ russian ] = "Ìàêñ. âûñîòà ñíîñêè";
+ Text[ polish ] = "~Maks. wysokoœæ przypisów doln.";
+ Text[ japanese ] = "‹r’‚ÌÅ‚‚Ì‚‚³(~H)";
+ Text[ chinese_traditional ] = "µù¸}ªº³Ì°ª(~H)";
+ Text[ arabic ] = "ÇáÇÑÊÝÇÚ ÇáÃÞÕì ááÍÇÔíÉ ÇáÓÝáíÉ";
+ Text[ greek ] = "ÌÝãéóôï ýøïò õðïóçìåßùóçò";
+ Text[ korean ] = "°¢ÁÖ ÃÖ´ë ³ôÀÌ(~H)";
+ Text[ turkish ] = "Azami dipnot yüksekliði";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_MAXHEIGHT_PAGE
+ {
+ Pos = MAP_APPFONT ( 14 , 16 ) ;
+ Size = MAP_APPFONT ( 95 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Höhe maximal wie ~Seite : H÷he maximal wie ~Seite */
+ Text = "Höhe maximal wie ~Seite" ;
+ Text [ ENGLISH ] = "Page height at maximum" ;
+ Text [ norwegian ] = "Maksimum Sidehøyde" ;
+ Text [ italian ] = "Altezza massima come pagina" ;
+ Text [ portuguese_brazilian ] = "Altura de página no m ximo" ;
+ Text [ portuguese ] = "Não superior à área da página" ;
+ Text [ finnish ] = "Sivun korkeus" ;
+ Text [ danish ] = "Op til maksimal sidehøjde" ;
+ Text [ french ] = "Hauteur maximale de la p~age" ;
+ Text [ swedish ] = "Höjd maximalt som ~sidan" ;
+ Text [ dutch ] = "Pag~inahoogte is max. hoogte" ;
+ Text [ spanish ] = "Altura má~xima como página" ;
+ Text [ english_us ] = "~Not larger than page area" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "×î¸ß²»³¬¹ýÒ³¸ß(~N)";
+ Text[ russian ] = "Íåáîëüøå âûñîòû ñòðàíèöû";
+ Text[ polish ] = "Nie wy¿ej ni¿ na obszarze strony";
+ Text[ japanese ] = "Å‚‚ÍÍß°¼Þ‚Ì‚‚³(~N)";
+ Text[ chinese_traditional ] = "³Ì°ª¤£¶W¹L­¶°ª(~N)";
+ Text[ arabic ] = "áíÓ ÃßÈÑ ãä äØÇÞ ÇáÕÝÍÉ";
+ Text[ greek ] = "¼÷é ìåãáëýôåñï ýøïò áðü ôçí ðåñéï÷Þ óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ¿µ¿ªº¸´Ù Å©Áö ¾Ê½À´Ï´Ù.(~N)";
+ Text[ turkish ] = "En fazla sayfa yüksekliðinde";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField ED_MAXHEIGHT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 115 , 30 ) ;
+ Size = MAP_APPFONT ( 42 , 12 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 50 ;
+ Maximum = 99999 ;
+ DecimalDigits = 2 ;
+ Value = 200 ;
+ Unit = FUNIT_CM ;
+ First = 10 ;
+ Last = 99999 ;
+ SpinSize = 10 ;
+ };
+ FixedText FT_DIST
+ {
+ Pos = MAP_APPFONT ( 25 , 51 ) ;
+ Size = MAP_APPFONT ( 85 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Abstand zum Textkörper : ~Abstand zum Textk÷rper */
+ Text = "~Abstand zum Textkörper" ;
+ Text [ ENGLISH ] = "~Distance from Bodytext" ;
+ Text [ norwegian ] = "~Avstand fra Hovedtekst" ;
+ Text [ italian ] = "~Distanza dal corpo del testo" ;
+ Text [ portuguese_brazilian ] = "~Distância do Corpo do Texto" ;
+ Text [ portuguese ] = "~Distância até corpo do texto" ;
+ Text [ finnish ] = "~Etäisyys runkotekstistä" ;
+ Text [ danish ] = "Afstand til brødtekst" ;
+ Text [ french ] = "~Écart du corps de texte" ;
+ Text [ swedish ] = "A~vstånd från brödtext" ;
+ Text [ dutch ] = "A~fstand tot tekst" ;
+ Text [ spanish ] = "~Distancia al cuerpo del texto" ;
+ Text [ english_us ] = "Space to text" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÖÁÕýÎĵľàÀë(~D)";
+ Text[ russian ] = "Ðàññòîÿíèå îò òåêñòà";
+ Text[ polish ] = "Odstep do obszaru tekstowego";
+ Text[ japanese ] = "–{•¶‚Ü‚Å‚ÌŠÔŠu(~D)";
+ Text[ chinese_traditional ] = "¦Ü¤º¤åªº¶ZÖÃ(~D)";
+ Text[ arabic ] = "ÇáãÓÇÝÉ ÍÊì ÇáäÕ";
+ Text[ greek ] = "~Áðüóôáóç áðü ôï óþìá êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ®·Î ºÎÅÍ °Å¸®(~D)";
+ Text[ turkish ] = "Metinden uzaklýk";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField ED_DIST
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 115 , 50 ) ;
+ Size = MAP_APPFONT ( 42 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Maximum = 999 ;
+ DecimalDigits = 2 ;
+ Value = 10 ;
+ Unit = FUNIT_CM ;
+ First = 5 ;
+ Last = 99999 ;
+ SpinSize = 10 ;
+ };
+ GroupBox GB_FOOTNOTE_SIZE
+ {
+ Pos = MAP_APPFONT ( 6 , 2 ) ;
+ Size = MAP_APPFONT ( 157 , 67 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Fußnotenbereich : Fu˜notenbereich */
+ Text = "Fußnotenbereich" ;
+ Text [ ENGLISH ] = "Footnote range" ;
+ Text [ norwegian ] = "+++Footnote range" ;
+ Text [ italian ] = "Area note a piè pagina" ;
+ Text [ portuguese_brazilian ] = "Faixa de nota de pé de página" ;
+ Text [ portuguese ] = "Faixa da nota de rodapé" ;
+ Text [ finnish ] = "Alaviitealue" ;
+ Text [ danish ] = "Fodnoteområde" ;
+ Text [ french ] = "Plage notes de bas de page" ;
+ Text [ swedish ] = "Fotnotsområde" ;
+ Text [ dutch ] = "Voetnotenbereik" ;
+ Text [ spanish ] = "Área de la nota al pie" ;
+ Text [ english_us ] = "Footnote area" ;
+ Text[ chinese_simplified ] = "×¢½ÅÇøÓò";
+ Text[ russian ] = "Îáëàñòü ñíîñîê";
+ Text[ polish ] = "Obszar przypisów dolnych";
+ Text[ japanese ] = "‹r’”͈Í";
+ Text[ chinese_traditional ] = "µù¸}­S³ò";
+ Text[ arabic ] = "äØÇÞ ÇáÍÇÔíÉ ÇáÓÝáíÉ";
+ Text[ greek ] = "Ðåñéï÷Þ õðïóçìåßùóçò";
+ Text[ korean ] = "°¢ÁÖ ¿µ¿ª";
+ Text[ turkish ] = "Dipnot bölümü";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_LINEPOS
+ {
+ Pos = MAP_APPFONT ( 12 , 87 ) ;
+ Size = MAP_APPFONT ( 26 , 10 ) ;
+ Text = "~Position" ;
+ Text [ English ] = "~Position" ;
+ Left = TRUE ;
+ Text [ portuguese ] = "~Posição" ;
+ 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[ chinese_simplified ] = "λÖÃ(~P)";
+ Text[ russian ] = "Ïîçèöèÿ";
+ Text[ polish ] = "Pozycja";
+ Text[ japanese ] = "ˆÊ’u(~P)";
+ Text[ chinese_traditional ] = "¦ì¸m(~P)";
+ Text[ arabic ] = "ÇáãæÖÚ";
+ Text[ greek ] = "ÈÝóç";
+ Text[ korean ] = "À§Ä¡(~P)";
+ Text[ turkish ] = "Konum";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox DLB_LINEPOS
+ {
+ Pos = MAP_APPFONT ( 40 , 85 ) ;
+ Size = MAP_APPFONT ( 57 , 40 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ StringList =
+ {
+ < "Links" ; Default ; > ;
+ < "Zentriert" ; Default ; > ;
+ < "Rechts" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Links" ; Default ; > ;
+ < "Zentriert" ; Default ; > ;
+ < "Rechts" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "Links" ; Default ; > ;
+ < "Zentriert" ; Default ; > ;
+ < "Rechts" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "Sinistra" ; Default ; > ;
+ < "Centrato" ; Default ; > ;
+ < "Destra" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Links" ; Default ; > ;
+ < "Zentriert" ; Default ; > ;
+ < "A Direita" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Esquerda" ; Default ; > ;
+ < "Centrado" ; Default ; > ;
+ < "Direita" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "Links" ; Default ; > ;
+ < "Zentriert" ; Default ; > ;
+ < "Rechts" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "Venstre" ; Default ; > ;
+ < "Centreret" ; Default ; > ;
+ < "Højre" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "À gauche" ; Default ; > ;
+ < "Centré" ; Default ; > ;
+ < "À droite" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Vänster" ; Default ; > ;
+ < "Centrerad" ; Default ; > ;
+ < "Höger" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Links" ; Default ; > ;
+ < "Gecentreerd" ; Default ; > ;
+ < "Rechts" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "A la izquierda" ; Default ; > ;
+ < "Centrado" ; Default ; > ;
+ < "Derecha" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Left" ; Default ; > ;
+ < "Centered" ; Default ; > ;
+ < "Right" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "×ó" ; Default ; > ;
+ < "¾ÓÖÐ" ; Default ; > ;
+ < "ÓÒ" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Ñëåâà" ; Default ; > ;
+ < "Ïî öåíòðó" ; Default ; > ;
+ < "Ñïðàâà" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Z lewej" ; Default ; > ;
+ < "Wyœrodkowany" ; Default ; > ;
+ < "Z prawej" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "¶" ; Default ; > ;
+ < "’†‰›" ; Default ; > ;
+ < "‰E" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¥ª" ; Default ; > ;
+ < "¸m¤¤" ; Default ; > ;
+ < "¥k" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "Úáì ÇáíÓÇÑ" ; Default ; > ;
+ < "ÊæÓíØ" ; Default ; > ;
+ < "Úáì Çáíãíä" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÁñéóôåñÜ" ; Default ; > ;
+ < "ÊåíôñáñéóìÝíá" ; Default ; > ;
+ < "ÄåîéÜ" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¿ÞÂÊ" ; Default ; > ;
+ < "°¡¿îµ¥" ; Default ; > ;
+ < "¿À¸¥ÂÊ" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Sol" ; Default ; > ;
+ < "Orta" ; Default ; > ;
+ < "Sað" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ FixedText FT_LINETYPE
+ {
+ Pos = MAP_APPFONT ( 12 , 107 ) ;
+ Size = MAP_APPFONT ( 26 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Stär~ke : A~rt */
+ Text = "Stär~ke" ;
+ Text [ ENGLISH ] = "~Thickness" ;
+ Group = TRUE ;
+ Left = TRUE ;
+ Text [ portuguese ] = "~Espessura da linha" ;
+ Text [ english_us ] = "~Weight" ;
+ Text [ portuguese_brazilian ] = "~Tipo" ;
+ Text [ swedish ] = "Styr~ka" ;
+ Text [ danish ] = "Styrke" ;
+ Text [ italian ] = "~Spessore" ;
+ Text [ spanish ] = "~Grosor" ;
+ Text [ french ] = "~Épaisseur" ;
+ Text [ dutch ] = "~Sterkte" ;
+ Text[ chinese_simplified ] = "ÏßÌõ´Öϸ(~L)";
+ Text[ russian ] = "Òîëùèíà ëèíèé";
+ Text[ polish ] = "GruboϾ";
+ Text[ japanese ] = "ü‚Ì‘¾‚³(~L)";
+ Text[ chinese_traditional ] = "½u±ø²Ê²Ó(~L)";
+ Text[ arabic ] = "Óõãúß ÇáÎØ";
+ Text[ greek ] = "ÐÜ÷ïò ãñáììÞò";
+ Text[ korean ] = "¼± µÎ²²(~W)";
+ Text[ turkish ] = "Çizgi kal.";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox DLB_LINETYPE
+ {
+ Pos = MAP_APPFONT ( 40 , 105 ) ;
+ Size = MAP_APPFONT ( 57 , 50 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ };
+ FixedText FT_LINEWIDTH
+ {
+ Pos = MAP_APPFONT ( 99 , 87 ) ;
+ Size = MAP_APPFONT ( 105 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Län~ge : Br~eite */
+ Text = "Län~ge" ;
+ Text [ ENGLISH ] = "~Length" ;
+ Left = TRUE ;
+ Text [ portuguese ] = "~Comprimento" ;
+ Text [ english_us ] = "~Length" ;
+ Text [ portuguese_brazilian ] = "~Largura" ;
+ Text [ swedish ] = "L~ängd" ;
+ Text [ danish ] = "Længde" ;
+ Text [ italian ] = "~Lunghezza" ;
+ Text [ spanish ] = "~Longitud" ;
+ Text [ french ] = "~Longueur" ;
+ Text [ dutch ] = "L~engte" ;
+ Text[ chinese_simplified ] = "³¤¶È(~L)";
+ Text[ russian ] = "Äëèíà";
+ Text[ polish ] = "D³ugoœæ";
+ Text[ japanese ] = "’·‚³(~L)";
+ Text[ chinese_traditional ] = "ªø«×(~L)";
+ Text[ arabic ] = "ÇáØæá";
+ Text[ greek ] = "ÌÞêïò";
+ Text[ korean ] = "±æÀÌ(~L)";
+ Text[ turkish ] = "Uzunluk";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField ED_LINEWIDTH
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 208 , 84 ) ;
+ Size = MAP_APPFONT ( 42 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Maximum = 100 ;
+ Value = 100 ;
+ Unit = FUNIT_CUSTOM ;
+ CustomUnitText = "%" ;
+ First = 10 ;
+ Last = 100 ;
+ };
+ FixedText FT_LINEDIST
+ {
+ Pos = MAP_APPFONT ( 99 , 107 ) ;
+ Size = MAP_APPFONT ( 105 , 10 ) ;
+ Text = "Abstan~d zum Fußnoteninhalt" ;
+ Text [ ENGLISH ] = "Distan~ce" ;
+ Text [ norwegian ] = "Avsta~nd" ;
+ Text [ italian ] = "Distanza dal contenuto delle note" ;
+ Text [ portuguese_brazilian ] = "Distân~cia" ;
+ Text [ portuguese ] = "E~spaçam. entre traço e texto" ;
+ Text [ finnish ] = "~Etäisyys" ;
+ Text [ danish ] = "Afstand til fodnoteindholdet" ;
+ Text [ french ] = "~Écart entre trait et texte" ;
+ Text [ swedish ] = "Avstå~nd till fotnotens innehåll" ;
+ Text [ dutch ] = "~Afstand tot inhoud voetnoot" ;
+ Text [ spanish ] = "~Espacio al contenido de la nota" ;
+ Text [ english_us ] = "~Spacing to footnote contents" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÖÁ×¢½ÅÎĵļä¸ô(~S)";
+ Text[ russian ] = "Ðàññòîÿíèå îò òåêñòà ñíîñêè";
+ Text[ polish ] = "Odstêp do treœci przypisów dolnych";
+ Text[ japanese ] = "‹r’‚Ü‚Å‚ÌŠÔŠu(~‚r)";
+ Text[ chinese_traditional ] = "¦Üµù¸}¤åªº¶¡¹j(~S)";
+ Text[ arabic ] = "ÇáãÓÇÝÉ ÍÊì ãÍÊæíÇÊ ÇáÍÇÔíÉ ÇáÓÝáíÉ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "Áðüó~ôáóç áðü ôï ðåñéå÷üìåíï õðïóçìåßùóçò";
+ Text[ korean ] = "°¢ÁÖ ³»¿ë¿¡ °£°ÝÁÖ±â(~S)";
+ Text[ turkish ] = "Dipnot içeriðine uzaklýk";
+ };
+ MetricField ED_LINEDIST
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 208 , 104 ) ;
+ Size = MAP_APPFONT ( 42 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Maximum = 999 ;
+ DecimalDigits = 2 ;
+ Value = 10 ;
+ Unit = FUNIT_CM ;
+ First = 5 ;
+ Last = 99999 ;
+ SpinSize = 10 ;
+ };
+ GroupBox GB_LINE
+ {
+ Pos = MAP_APPFONT ( 6 , 72 ) ;
+ Size = MAP_APPFONT ( 247 , 57 ) ;
+ Text = "Trennlinie" ;
+ Text [ ENGLISH ] = "Line" ;
+ Text [ norwegian ] = "Linje" ;
+ Text [ italian ] = "Linea di separazione" ;
+ Text [ portuguese_brazilian ] = "Linha" ;
+ Text [ portuguese ] = "Separador" ;
+ Text [ finnish ] = "Viiva" ;
+ Text [ danish ] = "Skillelinje" ;
+ Text [ french ] = "Trait de séparation" ;
+ Text [ swedish ] = "Skiljelinje" ;
+ Text [ dutch ] = "Scheidingslijn" ;
+ Text [ spanish ] = "Línea de separación" ;
+ Text [ english_us ] = "Separator line" ;
+ Text[ chinese_simplified ] = "·Ö¸ôÏß";
+ Text[ russian ] = "Ðàçäåëèòåëüíàÿ ëèíèÿ";
+ Text[ polish ] = "Linia podzia³u";
+ Text[ japanese ] = "‹æØ‚èü";
+ Text[ chinese_traditional ] = "¤À¹j½u";
+ Text[ arabic ] = "ÇáÎØ ÇáÝÇÕá";
+ Text[ greek ] = "Äéá÷ùñéóôéêÞ ãñáììÞ";
+ Text[ korean ] = "±¸ºÐ¼±";
+ Text[ turkish ] = "Ayýrma çizgisi";
+ Text[ language_user1 ] = " ";
+ };
+ Window WN_BSP
+ {
+ Pos = MAP_APPFONT ( 175 , 12 ) ;
+ Size = MAP_APPFONT ( 72 , 52 ) ;
+ Text = "Window" ;
+ };
+ GroupBox GB_BSP
+ {
+ Pos = MAP_APPFONT ( 169 , 2 ) ;
+ Size = MAP_APPFONT ( 84 , 67 ) ;
+ Text = "Vorschau" ;
+ Text [ ENGLISH ] = "Example" ;
+ Text [ norwegian ] = "Eksempel" ;
+ Text [ italian ] = "Anteprima" ;
+ Text [ portuguese_brazilian ] = "Exemplo" ;
+ Text [ portuguese ] = "Previsualizar" ;
+ Text [ finnish ] = "Malli" ;
+ 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 ] = " ";
+ };
+};
diff --git a/sw/source/ui/misc/redlndlg.cxx b/sw/source/ui/misc/redlndlg.cxx
new file mode 100644
index 000000000000..be1417d9a5d2
--- /dev/null
+++ b/sw/source/ui/misc/redlndlg.cxx
@@ -0,0 +1,1708 @@
+/*************************************************************************
+ *
+ * $RCSfile: redlndlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define _SVSTDARR_STRINGSSORTDTOR
+#define _SVSTDARR_USHORTSSORT
+#define _SVSTDARR_USHORTS
+
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+
+#ifndef _REDLINE_HXX
+#include <redline.hxx>
+#endif
+#ifndef _REDLENUM_HXX
+#include <redlenum.hxx>
+#endif
+#ifndef _TOOLS_INTN_HXX //autogen
+#include <tools/intn.hxx>
+#endif
+#ifndef _DATETIME_HXX //autogen
+#include <tools/datetime.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SVSTDARR_HXX
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SVX_CTREDLIN_HXX //autogen
+#include <svx/ctredlin.hxx>
+#endif
+#ifndef _SVX_POSTATTR_HXX //autogen
+#include <svx/postattr.hxx>
+#endif
+#ifndef _SVX_POSTDLG_HXX //autogen
+#include <svx/postdlg.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _REDLNDLG_HXX
+#define _REDLNACCEPTDLG
+#include <redlndlg.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _MISC_HRC
+#include <misc.hrc>
+#endif
+#ifndef _REDLNDLG_HRC
+#include <redlndlg.hrc>
+#endif
+#ifndef _SHELLS_HRC
+#include <shells.hrc>
+#endif
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SFX_IMPL_MODELESSDIALOG( SwRedlineAcceptChild, FN_REDLINE_ACCEPT )
+
+struct SwRedlineDataChild
+{
+ const SwRedlineData* pChild; // Verweis auf originale gestackte Daten
+ const SwRedlineDataChild* pNext; // Verweis auf gestackte Daten
+ SvLBoxEntry* pTLBChild; // zugehoeriger TreeListBox-Eintrag
+};
+
+struct SwRedlineDataParent
+{
+ const SwRedlineData* pData; // RedlineDataPtr
+ const SwRedlineDataChild* pNext; // Verweis auf gestackte Daten
+ SvLBoxEntry* pTLBParent; // zugehoeriger TreeListBox-Eintrag
+ String sComment; // Redline-Kommentar
+
+ inline BOOL operator==( const SwRedlineDataParent& rObj ) const
+ { return (pData && pData->GetSeqNo() == rObj.pData->GetSeqNo()); }
+ inline BOOL operator< ( const SwRedlineDataParent& rObj ) const
+ { return (pData && pData->GetSeqNo() < rObj.pData->GetSeqNo()); }
+};
+
+typedef SwRedlineDataParent* SwRedlineDataParentPtr;
+SV_DECL_PTRARR_DEL(SwRedlineDataParentArr, SwRedlineDataParentPtr, 10, 20)
+SV_IMPL_PTRARR(SwRedlineDataParentArr, SwRedlineDataParentPtr)
+
+SV_DECL_PTRARR_SORT(SwRedlineDataParentSortArr, SwRedlineDataParentPtr, 10, 20)
+SV_IMPL_OP_PTRARR_SORT(SwRedlineDataParentSortArr, SwRedlineDataParentPtr)
+
+typedef SwRedlineDataChild* SwRedlineDataChildPtr;
+SV_DECL_PTRARR_DEL(SwRedlineDataChildArr, SwRedlineDataChildPtr, 4, 4)
+SV_IMPL_PTRARR(SwRedlineDataChildArr, SwRedlineDataChildPtr)
+
+typedef SvLBoxEntry* SvLBoxEntryPtr;
+SV_DECL_PTRARR(SvLBoxEntryArr, SvLBoxEntryPtr, 100, 100)
+SV_IMPL_PTRARR(SvLBoxEntryArr, SvLBoxEntryPtr)
+
+static USHORT nSortMode = 0xffff;
+static BOOL bSortDir = TRUE;
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+class SwRedlineAcceptDlg
+{
+ Dialog* pParentDlg;
+ SwRedlineDataParentArr aRedlineParents;
+ SwRedlineDataChildArr aRedlineChilds;
+ SwRedlineDataParentSortArr aUsedSeqNo;
+ SvxAcceptChgCtr aTabPagesCTRL;
+ const International& rIntl;
+ PopupMenu aPopup;
+ Timer aDeselectTimer;
+ Timer aSelectTimer;
+ Bitmap aRootOpened;
+ Bitmap aRootClosed;
+ String sInserted;
+ String sDeleted;
+ String sFormated;
+ String sTableChgd;
+ String sFmtCollSet;
+ String sFilterAction;
+ String sAutoFormat;
+ Size aBorderSz;
+ SvxTPView* pTPView;
+ SvxRedlinTable* pTable;
+ Link aOldSelectHdl;
+ Link aOldDeselectHdl;
+ BOOL bOnlyFormatedRedlines;
+ BOOL bHasReadonlySel;
+ BOOL bRedlnAutoFmt;
+
+ DECL_LINK( AcceptHdl, void* );
+ DECL_LINK( AcceptAllHdl, void* );
+ DECL_LINK( RejectHdl, void* );
+ DECL_LINK( RejectAllHdl, void* );
+ DECL_LINK( UndoHdl, void* );
+ DECL_LINK( DeselectHdl, void* );
+ DECL_LINK( SelectHdl, void* );
+ DECL_LINK( GotoHdl, void* );
+ DECL_LINK( CommandHdl, void* );
+
+ USHORT CalcDiff(USHORT nStart, BOOL bChild);
+ void InsertChilds(SwRedlineDataParent *pParent, const SwRedline& rRedln, const USHORT nAutoFmt);
+ void InsertParents(USHORT nStart, USHORT nEnd = USHRT_MAX);
+ void RemoveParents(USHORT nStart, USHORT nEnd);
+ void InitAuthors();
+
+ String GetRedlineText(const SwRedline& rRedln, DateTime &rDateTime, USHORT nStack = 0);
+ const String& GetActionText(const SwRedline& rRedln, USHORT nStack = 0);
+ USHORT GetRedlinePos( const SvLBoxEntry& rEntry) const;
+
+public:
+ SwRedlineAcceptDlg(Dialog *pParent, BOOL bAutoFmt = FALSE);
+ ~SwRedlineAcceptDlg();
+
+ DECL_LINK( FilterChangedHdl, void *pDummy = 0 );
+
+ inline SvxAcceptChgCtr* GetChgCtrl() { return &aTabPagesCTRL; }
+ inline BOOL HasRedlineAutoFmt() const { return bRedlnAutoFmt; }
+
+ void Init(USHORT nStart = 0);
+ void CallAcceptReject( BOOL bSelect, BOOL bAccept );
+
+ void Initialize(const String &rExtraData);
+ void FillInfo(String &rExtraData) const;
+
+ virtual void Activate();
+ virtual void Resize();
+};
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwRedlineAcceptChild::SwRedlineAcceptChild( Window* pParent,
+ USHORT nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo ) :
+ SwChildWinWrapper( pParent, nId )
+{
+ pWindow = new SwModelessRedlineAcceptDlg( pBindings, this, pParent);
+
+ ((SwModelessRedlineAcceptDlg *)pWindow)->Initialize(pInfo);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Nach Dok-Wechsel Dialog neu initialisieren
+ --------------------------------------------------------------------*/
+
+BOOL SwRedlineAcceptChild::ReInitDlg(SwDocShell *pDocSh)
+{
+ BOOL bRet;
+
+ if ((bRet = SwChildWinWrapper::ReInitDlg(pDocSh)) == TRUE) // Sofort aktualisieren, Dok-Wechsel
+ ((SwModelessRedlineAcceptDlg*)GetWindow())->Activate();
+
+ return bRet;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwModelessRedlineAcceptDlg::SwModelessRedlineAcceptDlg( SfxBindings* pBindings,
+ SwChildWinWrapper* pChild,
+ Window *pParent) :
+ SfxModelessDialog(pBindings, pChild, pParent, SW_RES(DLG_REDLINE_ACCEPT)),
+ pChildWin (pChild)
+{
+ pImplDlg = new SwRedlineAcceptDlg(this);
+
+ FreeResource();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwModelessRedlineAcceptDlg::Activate()
+{
+ SwView *pView = ::GetActiveView();
+
+ if (!pView) // Kann passieren, wenn man auf eine andere App umschaltet, wenn
+ return; // vorher eine Listbox im Dialog den Focus hatte (eigentlich THs Bug)
+
+ SwDocShell *pDocSh = pView->GetDocShell();
+
+ if (pChildWin->GetOldDocShell() != pDocSh)
+ { // Dok-Wechsel
+ SwWait aWait( *pDocSh, FALSE );
+ SwWrtShell* pSh = pView->GetWrtShellPtr();
+
+ pChildWin->SetOldDocShell(pDocSh); // Rekursion vermeiden (durch Modified-Hdl)
+
+ BOOL bMod = pSh->IsModified();
+ SfxBoolItem aShow(FN_REDLINE_SHOW, TRUE);
+ pSh->GetView().GetViewFrame()->GetDispatcher()->Execute(
+ FN_REDLINE_SHOW, SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD, &aShow, 0L);
+ if (!bMod)
+ pSh->ResetModified();
+ pImplDlg->Init();
+
+ return;
+ }
+
+ pImplDlg->Activate();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwModelessRedlineAcceptDlg::Initialize(SfxChildWinInfo *pInfo)
+{
+ String aStr;
+ if (pInfo != NULL)
+ pImplDlg->Initialize(pInfo->aExtraString);
+
+ SfxModelessDialog::Initialize(pInfo);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwModelessRedlineAcceptDlg::FillInfo(SfxChildWinInfo& rInfo) const
+{
+ SfxModelessDialog::FillInfo(rInfo);
+ pImplDlg->FillInfo(rInfo.aExtraString);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwModelessRedlineAcceptDlg::Resize()
+{
+ pImplDlg->Resize();
+ SfxModelessDialog::Resize();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwModelessRedlineAcceptDlg::~SwModelessRedlineAcceptDlg()
+{
+ delete pImplDlg;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwModalRedlineAcceptDlg::SwModalRedlineAcceptDlg(Window *pParent) :
+ SfxModalDialog(pParent, SW_RES(DLG_MOD_REDLINE_ACCEPT))
+{
+ pImplDlg = new SwRedlineAcceptDlg(this, TRUE);
+
+ pImplDlg->Initialize(GetExtraData());
+ pImplDlg->Activate(); // Zur Initialisierung der Daten
+
+ FreeResource();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwModalRedlineAcceptDlg::~SwModalRedlineAcceptDlg()
+{
+ AcceptAll(FALSE); // Alles uebriggebliebene ablehnen
+ pImplDlg->FillInfo(GetExtraData());
+
+ delete pImplDlg;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwModalRedlineAcceptDlg::Activate()
+{
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwModalRedlineAcceptDlg::Resize()
+{
+ pImplDlg->Resize();
+ SfxModalDialog::Resize();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwModalRedlineAcceptDlg::AcceptAll( BOOL bAccept )
+{
+ SvxTPFilter* pFilterTP = pImplDlg->GetChgCtrl()->GetFilterPage();
+
+ if (pFilterTP->IsDate() || pFilterTP->IsAuthor() ||
+ pFilterTP->IsRange() || pFilterTP->IsAction())
+ {
+ pFilterTP->CheckDate(FALSE); // Alle Filter abschalten
+ pFilterTP->CheckAuthor(FALSE);
+ pFilterTP->CheckRange(FALSE);
+ pFilterTP->CheckAction(FALSE);
+ pImplDlg->FilterChangedHdl();
+ }
+
+ pImplDlg->CallAcceptReject( FALSE, bAccept );
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwRedlineAcceptDlg::SwRedlineAcceptDlg(Dialog *pParent, BOOL bAutoFmt) :
+ pParentDlg (pParent),
+ rIntl (Application::GetAppInternational()),
+ aTabPagesCTRL (pParent, SW_RES(CTRL_TABPAGES)),
+ aPopup (SW_RES(MN_REDLINE_POPUP)),
+ aRootClosed (SW_RES(BMP_ROOT_CLOSED)),
+ aRootOpened (SW_RES(BMP_ROOT_OPENED)),
+ sInserted (SW_RES(STR_REDLINE_INSERTED)),
+ sDeleted (SW_RES(STR_REDLINE_DELETED)),
+ sFormated (SW_RES(STR_REDLINE_FORMATED)),
+ sTableChgd (SW_RES(STR_REDLINE_TABLECHG)),
+ sFmtCollSet (SW_RES(STR_REDLINE_FMTCOLLSET)),
+ sAutoFormat (SW_RES(STR_REDLINE_AUTOFMT)),
+ bOnlyFormatedRedlines( FALSE ),
+ bHasReadonlySel ( FALSE ),
+ bRedlnAutoFmt (bAutoFmt)
+{
+ aTabPagesCTRL.SetHelpId(HID_REDLINE_CTRL);
+ pTPView = aTabPagesCTRL.GetViewPage();
+ pTable = pTPView->GetTableControl();
+
+ pTPView->InsertWriterHeader();
+ pTPView->SetAcceptClickHdl(LINK(this, SwRedlineAcceptDlg, AcceptHdl));
+ pTPView->SetAcceptAllClickHdl(LINK(this, SwRedlineAcceptDlg, AcceptAllHdl));
+ pTPView->SetRejectClickHdl(LINK(this, SwRedlineAcceptDlg, RejectHdl));
+ pTPView->SetRejectAllClickHdl(LINK(this, SwRedlineAcceptDlg, RejectAllHdl));
+ pTPView->SetUndoClickHdl(LINK(this, SwRedlineAcceptDlg, UndoHdl));
+
+ aTabPagesCTRL.GetFilterPage()->SetReadyHdl(LINK(this, SwRedlineAcceptDlg, FilterChangedHdl));
+
+ ListBox *pActLB = aTabPagesCTRL.GetFilterPage()->GetLbAction();
+ pActLB->InsertEntry(sInserted);
+ pActLB->InsertEntry(sDeleted);
+ pActLB->InsertEntry(sFormated);
+ pActLB->InsertEntry(sTableChgd);
+
+ if (HasRedlineAutoFmt())
+ {
+ pActLB->InsertEntry(sFmtCollSet);
+ pActLB->InsertEntry(sAutoFormat);
+ pTPView->ShowUndo(TRUE);
+ pTPView->DisableUndo(); // Noch gibts keine UNDO-Events
+ }
+
+ pActLB->SelectEntryPos(0);
+
+ pTable->SetWindowBits(WB_HASLINES|WB_CLIPCHILDREN|WB_HASBUTTONS|WB_HASBUTTONSATROOT|WB_HSCROLL);
+ pTable->SetNodeBitmaps( aRootClosed, aRootOpened );
+ pTable->SetSelectionMode(MULTIPLE_SELECTION);
+ pTable->SetHighlightRange(1);
+
+ static long aStaticTabs[]=
+ {
+ 4,10,70,120,170
+ };
+
+ pTable->SetTabs(aStaticTabs);
+
+ // Minimalgroesse setzen
+ Size aMinSz(aTabPagesCTRL.GetMinSizePixel());
+ Point aPos(aTabPagesCTRL.GetPosPixel());
+
+ aMinSz.Width() += (aPos.X() * 2 - 1);
+ aMinSz.Height() += (aPos.Y() * 2 - 1);
+ pParentDlg->SetMinOutputSizePixel(aMinSz);
+
+ if (pParentDlg->GetOutputSizePixel().Width() < aMinSz.Width())
+ pParentDlg->SetOutputSizePixel(Size(aMinSz.Width(), pParentDlg->GetOutputSizePixel().Height()));
+ if (pParentDlg->GetOutputSizePixel().Height() < aMinSz.Height())
+ pParentDlg->SetOutputSizePixel(Size(pParentDlg->GetOutputSizePixel().Width(), aMinSz.Height()));
+
+ pTable->SortByCol(nSortMode, bSortDir);
+
+ aOldSelectHdl = pTable->GetSelectHdl();
+ aOldDeselectHdl = pTable->GetDeselectHdl();
+ pTable->SetSelectHdl(LINK(this, SwRedlineAcceptDlg, SelectHdl));
+ pTable->SetDeselectHdl(LINK(this, SwRedlineAcceptDlg, DeselectHdl));
+ pTable->SetCommandHdl(LINK(this, SwRedlineAcceptDlg, CommandHdl));
+
+ // Flackern der Buttons vermeiden:
+ aDeselectTimer.SetTimeout(100);
+ aDeselectTimer.SetTimeoutHdl(LINK(this, SwRedlineAcceptDlg, SelectHdl));
+
+ // Mehrfachselektion der selben Texte vermeiden:
+ aSelectTimer.SetTimeout(100);
+ aSelectTimer.SetTimeoutHdl(LINK(this, SwRedlineAcceptDlg, GotoHdl));
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwRedlineAcceptDlg::~SwRedlineAcceptDlg()
+{
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwRedlineAcceptDlg::Init(USHORT nStart)
+{
+ SwWait aWait( *::GetActiveView()->GetDocShell(), FALSE );
+ pTable->SetUpdateMode(FALSE);
+ aUsedSeqNo.Remove((USHORT)0, aUsedSeqNo.Count());
+
+ if (nStart)
+ RemoveParents(nStart, aRedlineParents.Count() - 1);
+ else
+ {
+ pTable->Clear();
+ aRedlineChilds.DeleteAndDestroy(0, aRedlineChilds.Count());
+ aRedlineParents.DeleteAndDestroy(nStart, aRedlineParents.Count() - nStart);
+ }
+
+ // Parents einfuegen
+ InsertParents(nStart);
+ InitAuthors();
+
+ pTable->SetUpdateMode(TRUE);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwRedlineAcceptDlg::InitAuthors()
+{
+ SwWrtShell* pSh = ::GetActiveView()->GetWrtShellPtr();
+
+ SvxTPFilter *pFilterPage = aTabPagesCTRL.GetFilterPage();
+
+ String sAuthor;
+ SvStringsSortDtor aStrings;
+ String sOldAuthor(pFilterPage->GetSelectedAuthor());
+ pFilterPage->ClearAuthors();
+
+ String sParent;
+ USHORT nCount = pSh->GetRedlineCount();
+
+ bOnlyFormatedRedlines = TRUE;
+ bHasReadonlySel = FALSE;
+ BOOL bReadonlySel = FALSE;
+ BOOL bIsNotFormated = FALSE;
+
+ // Autoren ermitteln
+ for (USHORT i = 0; i < nCount; i++)
+ {
+ const SwRedline& rRedln = pSh->GetRedline(i);
+
+ if( bOnlyFormatedRedlines && REDLINE_FORMAT != rRedln.GetType() )
+ bOnlyFormatedRedlines = FALSE;
+
+ if( !bHasReadonlySel && rRedln.HasReadonlySel() )
+ bHasReadonlySel = TRUE;
+
+ String *pAuthor = new String(rRedln.GetAuthorString());
+ if (!aStrings.Insert(pAuthor))
+ delete pAuthor;
+
+ for (USHORT nStack = 1; nStack < rRedln.GetStackCount(); nStack++)
+ {
+ pAuthor = new String(rRedln.GetAuthorString(nStack));
+ if (!aStrings.Insert(pAuthor))
+ delete pAuthor;
+ }
+ }
+
+ for (i = 0; i < aStrings.Count(); i++)
+ pFilterPage->InsertAuthor(*aStrings[i]);
+
+ if (pFilterPage->SelectAuthor(sOldAuthor) == LISTBOX_ENTRY_NOTFOUND && aStrings.Count())
+ pFilterPage->SelectAuthor(*aStrings[0]);
+
+ BOOL bEnable = pTable->GetEntryCount() != 0;
+ BOOL bSel = pTable->FirstSelected() != 0;
+
+ SvLBoxEntry* pSelEntry = pTable->FirstSelected();
+ while (pSelEntry)
+ {
+ USHORT nPos = GetRedlinePos(*pSelEntry);
+ const SwRedline& rRedln = pSh->GetRedline( nPos );
+
+ bIsNotFormated |= REDLINE_FORMAT != rRedln.GetType();
+ pSelEntry = pTable->NextSelected(pSelEntry);
+ }
+
+ pTPView->EnableAccept( bEnable && bSel );
+ pTPView->EnableReject( bEnable && bIsNotFormated && bSel );
+ pTPView->EnableAcceptAll( bEnable && !bHasReadonlySel );
+ pTPView->EnableRejectAll( bEnable && !bHasReadonlySel &&
+ !bOnlyFormatedRedlines );
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+String SwRedlineAcceptDlg::GetRedlineText(const SwRedline& rRedln, DateTime &rDateTime, USHORT nStack)
+{
+ String sEntry(GetActionText(rRedln, nStack));
+ sEntry += '\t';
+ sEntry += rRedln.GetAuthorString(nStack);
+ sEntry += '\t';
+
+ const DateTime &rDT = rRedln.GetTimeStamp(nStack);
+ rDateTime = rDT;
+
+ sEntry += rIntl.GetDate( rDT );
+ sEntry += ' ';
+ sEntry += rIntl.GetTime( rDT, FALSE, FALSE );
+ sEntry += '\t';
+
+ sEntry += rRedln.GetComment(nStack);
+
+ return sEntry;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+const String &SwRedlineAcceptDlg::GetActionText(const SwRedline& rRedln, USHORT nStack)
+{
+ switch( rRedln.GetType(nStack) )
+ {
+ case REDLINE_INSERT: return sInserted;
+ case REDLINE_DELETE: return sDeleted;
+ case REDLINE_FORMAT: return sFormated;
+ case REDLINE_TABLE: return sTableChgd;
+ case REDLINE_FMTCOLL: return sFmtCollSet;
+ }
+
+ return aEmptyStr;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwRedlineAcceptDlg::Resize()
+{
+ Size aSz(pParentDlg->GetOutputSizePixel());
+
+ Point aPos(aTabPagesCTRL.GetPosPixel());
+
+ aSz.Width() -= (aPos.X() * 2 - 1);
+ aSz.Height() -= (aPos.Y() * 2 - 1);
+
+ aTabPagesCTRL.SetOutputSizePixel(aSz);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Nach Aktivierung neu initialisieren
+ --------------------------------------------------------------------*/
+
+void SwRedlineAcceptDlg::Activate()
+{
+ SwView *pView = ::GetActiveView();
+ SwWait aWait( *pView->GetDocShell(), FALSE );
+
+ aUsedSeqNo.Remove((USHORT)0, aUsedSeqNo.Count());
+
+ if (!pView) // Kann passieren, wenn man auf eine andere App umschaltet, wenn
+ return; // vorher eine Listbox im Dialog den Focus hatte (eigentlich THs Bug)
+
+/* if (HasRedlineAutoFmt())
+ {
+ Init();
+ return;
+ }*/
+
+ // Hat sich was geaendert?
+ SwWrtShell* pSh = pView->GetWrtShellPtr();
+ USHORT nCount = pSh->GetRedlineCount();
+
+ // Anzahl und Pointer ueberpruefen
+ SwRedlineDataParent *pParent = 0;
+
+ for (USHORT i = 0; i < nCount; i++)
+ {
+ const SwRedline& rRedln = pSh->GetRedline(i);
+
+ if (i >= aRedlineParents.Count())
+ {
+ // Neue Eintraege wurden angehaengt
+ Init(i);
+ return;
+ }
+
+ pParent = aRedlineParents[i];
+ if (&rRedln.GetRedlineData() != pParent->pData)
+ {
+ // Redline-Parents wurden eingefuegt, geaendert oder geloescht
+ if ((i = CalcDiff(i, FALSE)) == USHRT_MAX)
+ return;
+ continue;
+ }
+
+ const SwRedlineData *pRedlineData = rRedln.GetRedlineData().Next();
+ const SwRedlineDataChild *pBackupData = pParent->pNext;
+
+ if (!pRedlineData && pBackupData)
+ {
+ // Redline-Childs wurden geloescht
+ if ((i = CalcDiff(i, TRUE)) == USHRT_MAX)
+ return;
+ continue;
+ }
+ else
+ {
+ while (pRedlineData)
+ {
+ if (pRedlineData != pBackupData->pChild)
+ {
+ // Redline-Childs wurden eingefuegt, geaendert oder geloescht
+ if ((i = CalcDiff(i, TRUE)) == USHRT_MAX)
+ return;
+ continue;
+ }
+ if (pBackupData)
+ pBackupData = pBackupData->pNext;
+ pRedlineData = pRedlineData->Next();
+ }
+ }
+ }
+
+ if (nCount != aRedlineParents.Count())
+ {
+ // Redlines wurden am Ende geloescht
+ Init(nCount);
+ return;
+ }
+
+ // Kommentar ueberpruefen
+ for (i = 0; i < nCount; i++)
+ {
+ const SwRedline& rRedln = pSh->GetRedline(i);
+ pParent = aRedlineParents[i];
+
+ if(!rRedln.GetComment().Equals(pParent->sComment))
+ {
+ if (pParent->pTLBParent)
+ {
+ // Nur Kommentar aktualisieren
+ pTable->SetEntryText(rRedln.GetComment(), pParent->pTLBParent, 3);
+ }
+ pParent->sComment = rRedln.GetComment();
+ }
+ }
+
+ InitAuthors();
+}
+
+/* -----------------05.06.98 13:06-------------------
+ *
+ * --------------------------------------------------*/
+
+USHORT SwRedlineAcceptDlg::CalcDiff(USHORT nStart, BOOL bChild)
+{
+ if (!nStart)
+ {
+ Init();
+ return USHRT_MAX;
+ }
+
+ pTable->SetUpdateMode(FALSE);
+ SwView *pView = ::GetActiveView();
+ SwWrtShell* pSh = pView->GetWrtShellPtr();
+ USHORT nAutoFmt = HasRedlineAutoFmt() ? REDLINE_FORM_AUTOFMT : 0;
+ SvLBoxTreeList* pModel = pTable->GetModel();
+ SwRedlineDataParent *pParent = aRedlineParents[nStart];
+ const SwRedline& rRedln = pSh->GetRedline(nStart);
+
+ if (bChild) // Sollte eigentlich nie vorkommen, aber sicher ist sicher...
+ {
+ // Alle Childs des Eintrags wegwerfen und neu initialisieren
+ SwRedlineDataChildPtr pBackupData = (SwRedlineDataChildPtr)pParent->pNext;
+ SwRedlineDataChildPtr pNext;
+
+ while (pBackupData)
+ {
+ pNext = (SwRedlineDataChildPtr)pBackupData->pNext;
+ if (pBackupData->pTLBChild)
+ pModel->Remove(pBackupData->pTLBChild);
+
+ aRedlineChilds.DeleteAndDestroy(aRedlineChilds.GetPos(pBackupData), 1);
+ pBackupData = pNext;
+ }
+ pParent->pNext = 0;
+
+ // Neue Childs einfuegen
+ InsertChilds(pParent, rRedln, nAutoFmt);
+
+ pTable->SetUpdateMode(TRUE);
+ return nStart;
+ }
+
+ // Wurden Eintraege geloescht?
+ const SwRedlineData *pRedlineData = &rRedln.GetRedlineData();
+ for (USHORT i = nStart + 1; i < aRedlineParents.Count(); i++)
+ {
+ if (aRedlineParents[i]->pData == pRedlineData)
+ {
+ // Eintraege von nStart bis i-1 entfernen
+ RemoveParents(nStart, i - 1);
+ pTable->SetUpdateMode(TRUE);
+ return nStart - 1;
+ }
+ }
+
+ // Wurden Eintraege eingefuegt?
+ USHORT nCount = pSh->GetRedlineCount();
+ pRedlineData = aRedlineParents[nStart]->pData;
+
+ for (i = nStart + 1; i < nCount; i++)
+ {
+ if (&pSh->GetRedline(i).GetRedlineData() == pRedlineData)
+ {
+ // Eintraege von nStart bis i-1 einfuegen
+ InsertParents(nStart, i - 1);
+ pTable->SetUpdateMode(TRUE);
+ return nStart - 1;
+ }
+ }
+
+ pTable->SetUpdateMode(TRUE);
+ Init(nStart); // Alle Eintraege bis zum Ende abgleichen
+ return USHRT_MAX;
+}
+
+/* -----------------05.06.98 13:57-------------------
+ *
+ * --------------------------------------------------*/
+
+void SwRedlineAcceptDlg::InsertChilds(SwRedlineDataParent *pParent, const SwRedline& rRedln, const USHORT nAutoFmt)
+{
+ String sChild;
+ SwRedlineDataChild *pLastRedlineChild = 0;
+ const SwRedlineData *pRedlineData = &rRedln.GetRedlineData();
+ BOOL bAutoFmt = (rRedln.GetRealType() & nAutoFmt) != 0;
+
+ const String *pAction = &GetActionText(rRedln);
+ BOOL bValidParent = !sFilterAction.Len() || sFilterAction == *pAction;
+ bValidParent = bValidParent && pTable->IsValidEntry(&rRedln.GetAuthorString(), &rRedln.GetTimeStamp(), &rRedln.GetComment());
+ if (nAutoFmt)
+ {
+ USHORT nPos;
+
+ if (pParent->pData->GetSeqNo() && !aUsedSeqNo.Insert(pParent, nPos)) // Gibts schon
+ {
+ if (pParent->pTLBParent)
+ {
+ pTable->SetEntryText(sAutoFormat, aUsedSeqNo[nPos]->pTLBParent, 0);
+ pTable->GetModel()->Remove(pParent->pTLBParent);
+ pParent->pTLBParent = 0;
+ }
+ return;
+ }
+ bValidParent = bValidParent && bAutoFmt;
+ }
+ BOOL bValidTree = bValidParent;
+
+ for (USHORT nStack = 1; nStack < rRedln.GetStackCount(); nStack++)
+ {
+ pRedlineData = pRedlineData->Next();
+
+ SwRedlineDataChildPtr pRedlineChild = new SwRedlineDataChild;
+ pRedlineChild->pChild = pRedlineData;
+ aRedlineChilds.Insert(pRedlineChild, aRedlineChilds.Count());
+
+ if ( pLastRedlineChild )
+ pLastRedlineChild->pNext = pRedlineChild;
+ else
+ pParent->pNext = pRedlineChild;
+
+ pAction = &GetActionText(rRedln, nStack);
+ BOOL bValidChild = !sFilterAction.Len() || sFilterAction == *pAction;
+ bValidChild = bValidChild && pTable->IsValidEntry(&rRedln.GetAuthorString(nStack), &rRedln.GetTimeStamp(nStack), &rRedln.GetComment());
+ if (nAutoFmt)
+ bValidChild = bValidChild && bAutoFmt;
+ bValidTree |= bValidChild;
+
+ if (bValidChild)
+ {
+ RedlinData *pData = new RedlinData;
+ pData->pData = pRedlineChild;
+ pData->bDisabled = TRUE;
+ sChild = GetRedlineText(rRedln, pData->aDateTime, nStack);
+
+ SvLBoxEntry* pChild = pTable->InsertEntry(sChild, pData, pParent->pTLBParent);
+
+ pRedlineChild->pTLBChild = pChild;
+ if (!bValidParent)
+ pTable->Expand(pParent->pTLBParent);
+ }
+ else
+ pRedlineChild->pTLBChild = 0;
+
+ pLastRedlineChild = pRedlineChild;
+ }
+
+ if (pLastRedlineChild)
+ pLastRedlineChild->pNext = 0;
+
+ if (!bValidTree && pParent->pTLBParent)
+ {
+ pTable->GetModel()->Remove(pParent->pTLBParent);
+ pParent->pTLBParent = 0;
+ if (nAutoFmt)
+ aUsedSeqNo.Remove(pParent);
+ }
+}
+
+/* -----------------05.06.98 15:20-------------------
+ *
+ * --------------------------------------------------*/
+
+void SwRedlineAcceptDlg::RemoveParents(USHORT nStart, USHORT nEnd)
+{
+ SwWrtShell* pSh = ::GetActiveView()->GetWrtShellPtr();
+ USHORT nCount = pSh->GetRedlineCount();
+
+ SvLBoxEntryArr aLBoxArr;
+
+ // Wegen Bug der TLB, die bei Remove den SelectHandler IMMER ruft:
+ pTable->SetSelectHdl(aOldSelectHdl);
+ pTable->SetDeselectHdl(aOldDeselectHdl);
+ BOOL bChildsRemoved = FALSE;
+ pTable->SelectAll(FALSE);
+
+ // Hinter dem letzten Eintrag Cursor setzen, da sonst Performance-Problem in TLB.
+ // TLB wuerde sonst bei jedem Remove den Cursor erneut umsetzen (teuer)
+ USHORT nPos = Min((USHORT)nCount, (USHORT)aRedlineParents.Count()) - 1;
+ SvLBoxEntry *pCurEntry = aRedlineParents[nPos]->pTLBParent;
+ if (!pCurEntry)
+ while (--nPos && (pCurEntry = aRedlineParents[nPos]->pTLBParent) == 0);
+
+ if (pCurEntry)
+ pTable->SetCurEntry(pCurEntry);
+
+ SvLBoxTreeList* pModel = pTable->GetModel();
+
+ for (USHORT i = nStart; i <= nEnd; i++)
+ {
+ if (!bChildsRemoved && aRedlineParents[i]->pNext)
+ {
+ SwRedlineDataChildPtr pChildPtr = (SwRedlineDataChildPtr)aRedlineParents[i]->pNext;
+ USHORT nPos = aRedlineChilds.GetPos(pChildPtr);
+
+ if (nPos != USHRT_MAX)
+ {
+ USHORT nChilds = 0;
+
+ while (pChildPtr)
+ {
+ pChildPtr = (SwRedlineDataChildPtr)pChildPtr->pNext;
+ nChilds++;
+ }
+
+ aRedlineChilds.DeleteAndDestroy(nPos, nChilds);
+ bChildsRemoved = TRUE;
+ }
+ }
+ SvLBoxEntry *pEntry = aRedlineParents[i]->pTLBParent;
+ if (pEntry)
+ {
+ long nIdx = (long)aLBoxArr.Count() - 1L;
+ ULONG nAbsPos = pModel->GetAbsPos(pEntry);
+ while (nIdx >= 0 &&
+ pModel->GetAbsPos(aLBoxArr[nIdx]) > nAbsPos)
+ nIdx--;
+ aLBoxArr.Insert(pEntry, ++nIdx);
+ }
+ }
+
+ // TLB von hinten abraeumen
+ long nIdx = (long)aLBoxArr.Count() - 1L;
+ while (nIdx >= 0)
+ pModel->Remove(aLBoxArr[nIdx--]);
+
+ pTable->SetSelectHdl(LINK(this, SwRedlineAcceptDlg, SelectHdl));
+ pTable->SetDeselectHdl(LINK(this, SwRedlineAcceptDlg, DeselectHdl));
+ // Durch Remove wurde leider wieder dauernd von der TLB selektiert...
+ pTable->SelectAll(FALSE);
+
+ aRedlineParents.DeleteAndDestroy( nStart, nEnd - nStart + 1);
+}
+
+/* -----------------05.06.98 15:20-------------------
+ *
+ * --------------------------------------------------*/
+
+void SwRedlineAcceptDlg::InsertParents(USHORT nStart, USHORT nEnd)
+{
+ SwView *pView = ::GetActiveView();
+ SwWrtShell* pSh = pView->GetWrtShellPtr();
+ USHORT nAutoFmt = HasRedlineAutoFmt() ? REDLINE_FORM_AUTOFMT : 0;
+
+ String sParent;
+ USHORT nCount = pSh->GetRedlineCount();
+ nEnd = Min((USHORT)nEnd, (USHORT)(nCount - 1)); // Handelt auch nEnd=USHRT_MAX (bis zum Ende) ab
+
+ if (nEnd == USHRT_MAX)
+ return; // Keine Redlines im Dokument
+
+ RedlinData *pData = 0;
+ SvLBoxEntry* pParent = 0;
+ SwRedlineDataParentPtr pRedlineParent = 0;
+
+ for (USHORT i = nStart; i <= nEnd; i++)
+ {
+ const SwRedline& rRedln = pSh->GetRedline(i);
+ const SwRedlineData *pRedlineData = &rRedln.GetRedlineData();
+
+ pRedlineParent = new SwRedlineDataParent;
+ pRedlineParent->pData = pRedlineData;
+ pRedlineParent->pNext = 0;
+ pRedlineParent->sComment = rRedln.GetComment();
+ aRedlineParents.Insert(pRedlineParent, i);
+
+ pData = new RedlinData;
+ pData->pData = pRedlineParent;
+ pData->bDisabled = FALSE;
+
+ sParent = GetRedlineText(rRedln, pData->aDateTime);
+ pParent = pTable->InsertEntry(sParent, pData, 0, i);
+ pRedlineParent->pTLBParent = pParent;
+
+ InsertChilds(pRedlineParent, rRedln, nAutoFmt);
+ }
+}
+
+/* -----------------05.06.98 13:06-------------------
+ *
+ * --------------------------------------------------*/
+
+void SwRedlineAcceptDlg::CallAcceptReject( BOOL bSelect, BOOL bAccept )
+{
+ SwWrtShell* pSh = ::GetActiveView()->GetWrtShellPtr();
+ SvLBoxEntry* pEntry = bSelect ? pTable->FirstSelected() : pTable->First();
+ ULONG nPos = LONG_MAX;
+ SvUShortsSort aIdx;
+
+ while( pEntry )
+ {
+ if( !pTable->GetParent( pEntry ) )
+ {
+ if( bSelect && LONG_MAX == nPos )
+ nPos = pTable->GetModel()->GetAbsPos( pEntry );
+
+ RedlinData *pData = (RedlinData *)pEntry->GetUserData();
+
+ if( !pData->bDisabled )
+ aIdx.Insert(GetRedlinePos( *pEntry ));
+ }
+
+ pEntry = bSelect ? pTable->NextSelected(pEntry) : pTable->Next(pEntry);
+ }
+
+ BOOL (SwEditShell:: *FnAccRej)( USHORT ) = &SwEditShell::AcceptRedline;
+ if( !bAccept )
+ FnAccRej = &SwEditShell::RejectRedline;
+
+ SwWait aWait( *pSh->GetView().GetDocShell(), TRUE );
+ pSh->StartAction();
+ pSh->StartUndo();
+
+ for( USHORT i = aIdx.Count(); i; )
+ (pSh->*FnAccRej)( aIdx[ --i ] );
+
+ pSh->EndUndo();
+ pSh->EndAction();
+
+ Activate();
+
+ if( ULONG_MAX != nPos && pTable->GetEntryCount() )
+ {
+ if( nPos >= pTable->GetEntryCount() )
+ nPos = pTable->GetEntryCount() - 1;
+ pEntry = pTable->GetEntry( nPos );
+ if( !pEntry && nPos-- )
+ pEntry = pTable->GetEntry( nPos );
+ if( pEntry )
+ {
+ pTable->Select( pEntry );
+ pTable->MakeVisible( pEntry );
+ pTable->SetCurEntry(pEntry);
+ }
+ }
+ pTPView->EnableUndo();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwRedlineAcceptDlg::GetRedlinePos( const SvLBoxEntry& rEntry ) const
+{
+ SwWrtShell* pSh = ::GetActiveView()->GetWrtShellPtr();
+ return pSh->FindRedlineOfData( *((SwRedlineDataParent*)((RedlinData *)
+ rEntry.GetUserData())->pData)->pData );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineAcceptDlg, AcceptHdl, void*, EMPTYARG)
+{
+ CallAcceptReject( TRUE, TRUE );
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineAcceptDlg, AcceptAllHdl, void*, EMPTYARG )
+{
+ CallAcceptReject( FALSE, TRUE );
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineAcceptDlg, RejectHdl, void*, EMPTYARG )
+{
+ CallAcceptReject( TRUE, FALSE );
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineAcceptDlg, RejectAllHdl, void*, EMPTYARG )
+{
+ CallAcceptReject( FALSE, FALSE );
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineAcceptDlg, UndoHdl, void*, EMPTYARG )
+{
+ SwView * pView = ::GetActiveView();
+ pView->GetViewFrame()->GetDispatcher()->
+ Execute(SID_UNDO, SFX_CALLMODE_SYNCHRON);
+ pTPView->EnableUndo(pView->GetSlotState(SID_UNDO) != 0);
+
+ Activate();
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineAcceptDlg, FilterChangedHdl, void*, EMPTYARG )
+{
+ SvxTPFilter *pFilterTP = aTabPagesCTRL.GetFilterPage();
+
+ if (pFilterTP->IsAction())
+ sFilterAction = pFilterTP->GetLbAction()->GetSelectEntry();
+ else
+ sFilterAction = aEmptyStr;
+
+ Init();
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineAcceptDlg, DeselectHdl, void*, EMPTYARG )
+{
+ // Flackern der Buttons vermeiden:
+ aDeselectTimer.Start();
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineAcceptDlg, SelectHdl, void*, EMPTYARG )
+{
+ aDeselectTimer.Stop();
+ aSelectTimer.Start();
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineAcceptDlg, GotoHdl, void*, EMPTYARG )
+{
+ SwWrtShell* pSh = ::GetActiveView()->GetWrtShellPtr();
+ aSelectTimer.Stop();
+
+ BOOL bIsNotFormated = FALSE;
+ BOOL bSel = FALSE;
+ BOOL bReadonlySel = FALSE;
+
+ SvLBoxEntry* pSelEntry = pTable->FirstSelected();
+ if( pSelEntry )
+ {
+ SvLBoxEntry* pActEntry = pSelEntry;
+ pSh->StartAction();
+ pSh->EnterStdMode();
+ pSh->SetCareWin(pParentDlg);
+
+ while (pSelEntry)
+ {
+ if (pTable->GetParent(pSelEntry))
+ {
+ pActEntry = pTable->GetParent(pSelEntry);
+
+ if (pTable->IsSelected(pActEntry))
+ {
+ pSelEntry = pActEntry = pTable->NextSelected(pSelEntry);
+ continue; // Nicht zweimal selektieren
+ }
+ }
+ else
+ bSel = TRUE;
+
+ USHORT nPos = GetRedlinePos(*pActEntry);
+
+ const SwRedline& rRedln = pSh->GetRedline( nPos );
+ bIsNotFormated |= REDLINE_FORMAT != rRedln.GetType();
+
+ if( !bReadonlySel && rRedln.HasReadonlySel() )
+ bReadonlySel = TRUE;
+
+ if (pSh->GotoRedline(nPos, TRUE))
+ {
+ pSh->SetInSelect();
+ pSh->EnterAddMode();
+ }
+
+ pSelEntry = pActEntry = pTable->NextSelected(pSelEntry);
+ }
+
+ pSh->LeaveAddMode();
+ pSh->EndAction();
+ pSh->SetCareWin(NULL);
+ }
+ pTPView->EnableAccept( bSel && !bReadonlySel );
+ pTPView->EnableReject( bSel && bIsNotFormated && !bReadonlySel );
+ pTPView->EnableRejectAll( !bOnlyFormatedRedlines && !bHasReadonlySel );
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwRedlineAcceptDlg, CommandHdl, void*, EMPTYARG )
+{
+ const CommandEvent aCEvt(pTable->GetCommandEvent());
+
+ switch ( aCEvt.GetCommand() )
+ {
+ case COMMAND_CONTEXTMENU:
+ {
+ SwWrtShell* pSh = ::GetActiveView()->GetWrtShellPtr();
+ SvLBoxEntry* pEntry = pTable->FirstSelected();
+ const SwRedline *pRed = 0;
+
+ if (pEntry)
+ {
+ SvLBoxEntry* pTopEntry = pEntry;
+
+ if (pTable->GetParent(pEntry))
+ pTopEntry = pTable->GetParent(pEntry);
+
+ USHORT nPos = GetRedlinePos(*pTopEntry);
+
+ // Bei geschuetzten Bereichen kommentieren disablen
+ if ((pRed = pSh->GotoRedline(nPos, TRUE)) != 0)
+ {
+ if( pSh->IsCrsrPtAtEnd() )
+ pSh->SwapPam();
+ pSh->SetInSelect();
+ }
+ }
+
+ aPopup.EnableItem( MN_EDIT_COMMENT, pEntry && pRed &&
+ !pTable->GetParent(pEntry) &&
+ !pTable->NextSelected(pEntry) &&
+ !pRed->HasReadonlySel() );
+
+ aPopup.EnableItem( MN_SUB_SORT, pTable->First() != 0 );
+ USHORT nColumn = pTable->GetSortedCol();
+ if (nColumn == 0xffff)
+ nColumn = 4;
+
+ PopupMenu *pSubMenu = aPopup.GetPopupMenu(MN_SUB_SORT);
+ if (pSubMenu)
+ {
+ for (USHORT i = MN_SORT_ACTION; i < MN_SORT_ACTION + 5; i++)
+ pSubMenu->CheckItem(i, FALSE);
+
+ pSubMenu->CheckItem(nColumn + MN_SORT_ACTION);
+ }
+
+ USHORT nRet = aPopup.Execute(pTable, aCEvt.GetMousePosPixel());
+
+ switch( nRet )
+ {
+ case MN_EDIT_COMMENT:
+ {
+ String sComment;
+
+ if (pEntry)
+ {
+ if (pTable->GetParent(pEntry))
+ pEntry = pTable->GetParent(pEntry);
+
+ USHORT nPos = GetRedlinePos(*pEntry);
+
+ const SwRedline &rRedline = pSh->GetRedline(nPos);
+ sComment = rRedline.GetComment();
+ SfxItemSet aSet(pSh->GetAttrPool(), SvxPostItDialog::GetRanges());
+ const International& rIntl = Application::GetAppInternational();
+
+ aSet.Put(SvxPostItTextItem(sComment.ConvertLineEnd(), SID_ATTR_POSTIT_TEXT));
+ aSet.Put(SvxPostItAuthorItem(rRedline.GetAuthorString(), SID_ATTR_POSTIT_AUTHOR));
+
+ const DateTime &rDT = rRedline.GetRedlineData().GetTimeStamp();
+
+ String sDate(rIntl.GetDate( rDT ));
+ (sDate += ' ' ) += rIntl.GetTime( rDT, FALSE, FALSE );
+
+ aSet.Put(SvxPostItDateItem(sDate, SID_ATTR_POSTIT_DATE));
+
+ SvxPostItDialog *pDlg = new SvxPostItDialog(pParentDlg, aSet, FALSE);
+ pDlg->HideAuthor();
+
+ USHORT nResId = 0;
+ switch( rRedline.GetType() )
+ {
+ case REDLINE_INSERT:
+ nResId = STR_REDLINE_INSERTED;
+ break;
+ case REDLINE_DELETE:
+ nResId = STR_REDLINE_DELETED;
+ break;
+ case REDLINE_FORMAT:
+ nResId = STR_REDLINE_FORMATED;
+ break;
+ case REDLINE_TABLE:
+ nResId = STR_REDLINE_TABLECHG;
+ break;
+ }
+ String sTitle(SW_RES(STR_REDLINE_COMMENT));
+ if( nResId )
+ sTitle += SW_RESSTR( nResId );
+ pDlg->SetText(sTitle);
+
+ pSh->SetCareWin(pDlg);
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+ String sMsg(((const SvxPostItTextItem&)pOutSet->Get(SID_ATTR_POSTIT_TEXT)).GetValue());
+
+ // Kommentar einfuegen bzw aendern
+ pSh->SetRedlineComment(sMsg);
+ pTable->SetEntryText(sMsg, pEntry, 3);
+ }
+
+ delete pDlg;
+ pSh->SetCareWin(NULL);
+ }
+ }
+ break;
+
+ case MN_SORT_ACTION:
+ case MN_SORT_AUTHOR:
+ case MN_SORT_DATE:
+ case MN_SORT_COMMENT:
+ case MN_SORT_POSITION:
+ {
+ bSortDir = TRUE;
+ if (nRet - MN_SORT_ACTION == 4 && pTable->GetSortedCol() == 0xffff)
+ break; // Haben wir schon
+
+ nSortMode = nRet - MN_SORT_ACTION;
+ if (nSortMode == 4)
+ nSortMode = 0xffff; // unsortiert bzw sortiert nach Position
+
+ if (pTable->GetSortedCol() == nSortMode)
+ bSortDir = !pTable->GetSortDirection();
+
+ SwWait aWait( *::GetActiveView()->GetDocShell(), FALSE );
+ pTable->SortByCol(nSortMode, bSortDir);
+ if (nSortMode == 0xffff)
+ Init(); // Alles neu fuellen
+ }
+ break;
+ }
+ }
+ break;
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwRedlineAcceptDlg::Initialize(const String& rExtraData)
+{
+ if (rExtraData.Len())
+ {
+ USHORT nPos = rExtraData.Search(C2S("AcceptChgDat:"));
+
+ // Versuche, den Alignment-String "ALIGN:(...)" einzulesen; wenn
+ // er nicht vorhanden ist, liegt eine "altere Version vor
+ if (nPos != STRING_NOTFOUND)
+ {
+ USHORT n1 = rExtraData.Search('(', nPos);
+ if (n1 != STRING_NOTFOUND)
+ {
+ USHORT n2 = rExtraData.Search(')', n1);
+ if (n2 != STRING_NOTFOUND)
+ {
+ // Alignment-String herausschneiden
+ String aStr = rExtraData.Copy(nPos, n2 - nPos + 1);
+ aStr.Erase(0, n1 - nPos + 1);
+
+ if (aStr.Len())
+ {
+ USHORT nCount = aStr.ToInt32();
+
+ for (USHORT i = 0; i < nCount; i++)
+ {
+ USHORT n1 = aStr.Search(';');
+ aStr.Erase(0, n1 + 1);
+ pTable->SetTab(i, aStr.ToInt32(), MAP_PIXEL);
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwRedlineAcceptDlg::FillInfo(String &rExtraData) const
+{
+ rExtraData.AppendAscii("AcceptChgDat:(");
+
+ USHORT nCount = pTable->TabCount();
+
+ rExtraData += String(nCount);
+ rExtraData += ';';
+ for(USHORT i = 0; i < nCount; i++)
+ {
+ rExtraData += String(pTable->GetTab(i));
+ rExtraData += ';';
+ }
+ rExtraData += ')';
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.54 2000/09/18 16:05:59 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.53 2000/09/07 15:59:26 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.52 2000/06/14 09:06:30 os
+ #75451# enabling of buttons corrected
+
+ Revision 1.51 2000/04/18 15:08:17 os
+ UNICODE
+
+ Revision 1.50 2000/02/25 08:56:58 hr
+ #73447#: removed temporary
+
+ Revision 1.49 2000/02/11 14:56:07 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.48 1999/09/10 13:19:27 os
+ Chg: resource types removed
+
+ Revision 1.47 1999/07/08 14:31:40 MA
+ Use internal object to toggle wait cursor
+
+
+ Rev 1.46 08 Jul 1999 16:31:40 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.45 22 Jan 1999 11:51:20 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.44 12 Jan 1999 14:37:10 OS
+ #60805# ChildWindow darf kein Show rufen
+
+ Rev 1.43 18 Nov 1998 15:44:28 OM
+ #59103# Redlines nach Kommentaren filtern
+
+ Rev 1.42 13 Nov 1998 16:41:08 OM
+ #59103# Autofmt-Redlines: zusammengehoerige filtern
+
+ Rev 1.41 13 Nov 1998 15:35:18 OM
+ #59103# Autofmt-Redlines: zusammengehoerige filtern
+
+ Rev 1.40 21 Oct 1998 10:56:34 OM
+ #57586# Redlining nach Autoformat
+
+ Rev 1.39 20 Oct 1998 17:52:22 OM
+ #57586# Redlining nach Autoformat
+
+ Rev 1.38 20 Oct 1998 11:39:04 OM
+ #57586# Redlining nach Autoformat
+
+ Rev 1.37 13 Oct 1998 16:09:38 OM
+ #57859# Redline-Dlg: Spaltenbreite merken
+
+ Rev 1.36 09 Oct 1998 17:05:22 JP
+ Bug #57741#: neue ResourceIds
+
+ Rev 1.35 18 Aug 1998 11:46:48 OM
+ #54866# Nach Aktionen filtern
+
+ Rev 1.34 28 Jul 1998 13:04:14 JP
+ Bug #53951#: Selektionen nicht aufheben, wenn keine Selektion in der Listbox ist
+
+ Rev 1.33 14 Jul 1998 14:19:54 OM
+ #52859# Autor-Button nicht anzeigen
+
+ Rev 1.32 13 Jul 1998 11:32:58 OM
+ #51840# HelpId fuer Redline-Control
+
+ Rev 1.31 10 Jun 1998 17:14:18 OM
+ WaitCursor
+
+ Rev 1.30 08 Jun 1998 17:58:16 OM
+ Ohne Redlines kein GPF
+
+ Rev 1.29 08 Jun 1998 15:04:22 OM
+ Optimiert
+
+ Rev 1.28 05 Jun 1998 17:13:16 OM
+ Optimiert
+
+ Rev 1.27 05 Jun 1998 10:46:00 OM
+ Optimierungen
+
+ Rev 1.26 03 Jun 1998 17:27:54 OM
+ Performance Optimierungen
+
+ Rev 1.25 03 Jun 1998 12:17:08 OM
+ Performance Optimierungen
+
+ Rev 1.24 07 Apr 1998 14:21:34 OM
+ RedlinData nicht mehr selber loeschen
+
+ Rev 1.23 07 Apr 1998 08:47:10 OM
+ Linien anzeigen
+
+ Rev 1.22 03 Apr 1998 13:05:30 OM
+ Kein Absturz bei fehlender SwView
+
+ Rev 1.21 01 Apr 1998 13:09:20 OM
+ Rekursion vermieden
+
+ Rev 1.20 31 Mar 1998 13:01:32 OM
+ Redline-Kommentare in schreibgeschuetzten bereichen nicht editierbar
+
+ Rev 1.19 27 Mar 1998 14:14:42 OM
+ ChildWindows im Modified-Hdl updaten
+
+ Rev 1.18 26 Mar 1998 21:48:36 JP
+ CallAcceptReject: wenn Pos am Ende steht, dann sollte der letzte Eintrag wieder selektiert werden
+
+ Rev 1.17 26 Mar 1998 15:30:16 JP
+ optimiert und Accept/Reject - behalten ihre Position in der Liste
+
+ Rev 1.16 24 Mar 1998 13:45:02 JP
+ neu: Redline fuer harte Attributierung
+
+ Rev 1.15 18 Mar 1998 18:30:46 OM
+ #48735# GPF im Redlining behoben
+
+ Rev 1.14 18 Mar 1998 11:34:10 OM
+ Resize der Basisklasse rufen
+
+ Rev 1.13 17 Mar 1998 09:36:22 OM
+ Groesse korrekt initialisieren
+
+ Rev 1.12 16 Mar 1998 19:10:42 OM
+ Zugriff auf Ini optimiert
+
+ Rev 1.11 16 Mar 1998 11:00:38 OM
+ Autoren vom Dokument zusammensuchen
+
+ Rev 1.10 16 Mar 1998 09:35:42 OM
+ 4 Spalten
+
+ Rev 1.9 15 Mar 1998 16:20:36 OM
+ Groesse merken
+
+ Rev 1.8 10 Mar 1998 12:52:26 OM
+ Keine Sortierung per Default
+
+ Rev 1.7 09 Mar 1998 12:59:24 OM
+ Sortieren und filtern
+
+ Rev 1.6 09 Mar 1998 11:52:06 OM
+ Sortieren und filtern
+
+ Rev 1.5 07 Mar 1998 14:33:36 OM
+ Filtern und sortieren
+
+ Rev 1.4 03 Mar 1998 16:03:00 OM
+ Aufgeraeumt
+
+ Rev 1.3 03 Mar 1998 10:42:50 OM
+ Redline-Browser
+
+ Rev 1.2 28 Feb 1998 15:21:02 OM
+ Author vorselektieren
+
+ Rev 1.1 28 Feb 1998 15:12:06 OM
+ Accept / reject changes
+
+ Rev 1.0 27 Feb 1998 18:22:16 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
diff --git a/sw/source/ui/misc/redlndlg.hrc b/sw/source/ui/misc/redlndlg.hrc
new file mode 100644
index 000000000000..ccd849d4a5fa
--- /dev/null
+++ b/sw/source/ui/misc/redlndlg.hrc
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * $RCSfile: redlndlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define CTRL_TABPAGES 1
+
+#define MN_EDIT_COMMENT 1
+#define MN_SUB_SORT 2
+#define MN_SORT_ACTION 3
+#define MN_SORT_AUTHOR 4
+#define MN_SORT_DATE 5
+#define MN_SORT_COMMENT 6
+#define MN_SORT_POSITION 7
+
+#define XBORDER 3
+#define YBORDER 3
diff --git a/sw/source/ui/misc/redlndlg.src b/sw/source/ui/misc/redlndlg.src
new file mode 100644
index 000000000000..29c53442457d
--- /dev/null
+++ b/sw/source/ui/misc/redlndlg.src
@@ -0,0 +1,347 @@
+/*************************************************************************
+ *
+ * $RCSfile: redlndlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+/* StarView ressource file */
+
+#include "redlndlg.hrc"
+#include "misc.hrc"
+#include "helpid.h"
+
+#define WIDTH 297
+#define HEIGHT 169
+
+#define REDLNDLG \
+ OutputSize = TRUE ; \
+ SVLook = TRUE ; \
+ Size = MAP_APPFONT ( WIDTH , HEIGHT ) ; \
+ Moveable = TRUE ; \
+ Closeable = TRUE ; \
+ Sizeable = TRUE ; \
+ Hide = TRUE ; \
+ Control CTRL_TABPAGES\
+ {\
+ Pos = MAP_APPFONT ( XBORDER , YBORDER ) ; \
+ Size = MAP_APPFONT ( WIDTH - XBORDER * 2 , HEIGHT - YBORDER * 2 ) ; \
+ HelpID = HID_REDLINE_CTRL ; \
+ TabStop = TRUE ; \
+ };\
+
+ModelessDialog DLG_REDLINE_ACCEPT
+{
+ HelpID = HID_REDLINE_ACCEPT ;
+ /* ### ACHTUNG: Neuer Text in Resource? Änderungen akzeptieren oder verwerfen : Redlining */
+ Text = "Änderungen akzeptieren oder verwerfen" ;
+ Text [ English ] = "Accept or reject changes" ;
+ Text [ english_us ] = "Accept or Reject Changes" ;
+ Text [ portuguese_brazilian ] = "Redlining" ;
+ Text [ swedish ] = "Acceptera eller kasta bort ändringarna" ;
+ Text [ danish ] = "Accepter eller forkast ændringer" ;
+ Text [ italian ] = "Accettare o rigettare le 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" ;
+ REDLNDLG
+ Text[ chinese_simplified ] = "½ÓÊÜ»òÕßÈ¡Ïû¸ü¸Ä";
+ Text[ russian ] = "Ïðèíÿòü èëè îòêëîíèòü èçìåíåíèÿ";
+ Text[ polish ] = "Zaakceptuj albo odrzuæ zmiany";
+ Text[ japanese ] = "•ÏX‰ÓŠ‚ÌŠm”F";
+ Text[ chinese_traditional ] = "±µ¨ü©Î¨ú®øÅܧó";
+ Text[ arabic ] = "ÞÈæá Ãæ ÑÝÖ ÇáÊÛííÑÇÊ";
+ Text[ greek ] = "Áðïäï÷Þ Þ áðüññéøç áëëáãþí";
+ Text[ korean ] = "º¯°æ Àû¿ë ¶Ç´Â Ãë¼Ò";
+ Text[ turkish ] = "Deðiþiklikleri onayla ya da reddet";
+ Text[ language_user1 ] = " ";
+};
+
+ModalDialog DLG_MOD_REDLINE_ACCEPT
+{
+ HelpID = HID_REDLINE_AUTOFMT_ACCEPT ;
+ Text = "AutoFormat: Änderungen akzeptieren oder verwerfen" ;
+ Text [ English ] = "Accept or reject AutoFormat changes" ;
+ REDLNDLG
+ Text[ italian ] = "Formattazione automatica: accetta o annulla cambiamenti";
+ Text[ portuguese_brazilian ] = "Accept or reject AutoFormat changes";
+ Text[ portuguese ] = "AutoFormato: aceitar ou rejeitar modificações";
+ Text[ danish ] = "Accepter eller forkast AutoFormat ændringer";
+ Text[ french ] = "Revoir les modifications de l'AutoFormat";
+ Text[ swedish ] = "Acceptera eller kasta bort AutoFormat ändringar";
+ Text[ dutch ] = "AutoOpmaak: Wijzigingen accepteren of verwerpen";
+ Text[ spanish ] = "AutoFormato: Aceptar o rechazar cambios";
+ Text[ english_us ] = "Accept or reject AutoFormat changes";
+ Text[ chinese_simplified ] = "×Ô¶¯¸ñʽ: ½ÓÊÜ»òÕ߾ܾø¸ü¸Ä";
+ Text[ russian ] = "Àâòîôîðìàò: ïðèíÿòü èëè îòêëîíèòü èçìåíåíèÿ";
+ Text[ polish ] = "Autoformatowanie: Zaakceptuj lub odrzuæ zmiany";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä‚É‚æ‚é•ÏX‚ÌŽÀs‚ ‚é‚¢‚Í·¬Ý¾Ù";
+ Text[ chinese_traditional ] = "¦Û°Ê®æ¦¡: ±µ¨ü©Î©Úµ´Åܧó";
+ Text[ arabic ] = "ÞÈæá Ãæ ÑÝÖ ÊÛííÑÇÊ ÇáÊäÓíÞ ÇáÊáÞÇÆí";
+ Text[ greek ] = "ÁõôïÌïñöïðïßçóç:Áðïäï÷Þ Þ áðüññéøç áëëáãþí";
+ Text[ korean ] = "ÀÚµ¿ ¼­½Ä º¯°æ Àû¿ë ¶Ç´Â Ãë¼Ò";
+ Text[ turkish ] = "Otomatik formatlama: Deðiþiklikleri onayla ya da reddet";
+ Text[ language_user1 ] = " ";
+};
+
+Menu MN_REDLINE_POPUP
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = MN_EDIT_COMMENT ;
+ HelpID = HID_EDIT_COMMENT ;
+ Text = "Kommentar bearbeiten..." ;
+ Text [ English ] = "Edit Comment..." ;
+ Text [ english_us ] = "Edit Comment..." ;
+ Text [ portuguese_brazilian ] = "Kommentar bearbeiten..." ;
+ Text [ swedish ] = "Bearbeta 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[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "½s¿èª`¸Ñ...";
+ Text[ arabic ] = "ÊÍÑíÑ ÇáÊÚáíÞ...";
+ Text[ greek ] = "Åðåîåñãáóßá ó÷ïëßïõ...";
+ Text[ korean ] = "¸Þ¸ð ÆíÁý...";
+ Text[ turkish ] = "Açýklamalarý düzenle...";
+ };
+ MenuItem
+ {
+ Identifier = MN_SUB_SORT ;
+ Text = "Sortiere" ;
+ Text [ english ] = "Sort" ;
+ RadioCheck = TRUE ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = MN_SORT_ACTION ;
+ HelpID = HID_SORT_ACTION ;
+ Text = "Aktion" ;
+ Text [ english ] = "Action" ;
+ RadioCheck = TRUE ;
+ Text [ english_us ] = "Action" ;
+ Text [ portuguese_brazilian ] = "Aktion" ;
+ Text [ swedish ] = "Aktivitet" ;
+ 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[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¾Þ§@";
+ Text[ arabic ] = "ÅÌÑÇÁ";
+ Text[ greek ] = "ÅíÝñãåéá";
+ Text[ korean ] = "µ¿ÀÛ";
+ Text[ turkish ] = "Ýþlem";
+ };
+ MenuItem
+ {
+ Identifier = MN_SORT_AUTHOR ;
+ HelpID = HID_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[ greek ] = "ÓõíôÜêôçò";
+ Text[ korean ] = "ÀÛ¼ºÀÎ";
+ Text[ turkish ] = "Yazan";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_SORT_DATE ;
+ HelpID = HID_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[ greek ] = "Çìåñïìçíßá";
+ Text[ korean ] = "ÀÏÀÚ";
+ Text[ turkish ] = "Tarih";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_SORT_COMMENT ;
+ HelpID = HID_SORT_COMMENT ;
+ Text = "Beschreibung" ;
+ Text [ english ] = "Comment" ;
+ RadioCheck = TRUE ;
+ Text [ english_us ] = "Comment" ;
+ 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[ greek ] = "ÐåñéãñáöÞ";
+ Text[ korean ] = "¸Þ¸ð";
+ Text[ turkish ] = "Açýklama";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = MN_SORT_POSITION ;
+ HelpID = HID_SW_SORT_POSITION ;
+ Text = "Dokumentposition" ;
+ Text [ english ] = "Document position" ;
+ RadioCheck = TRUE ;
+ Text [ english_us ] = "Document position" ;
+ Text [ portuguese_brazilian ] = "Dokumentposition" ;
+ Text [ swedish ] = "Dokumentposition" ;
+ Text [ danish ] = "Dokumentplacering" ;
+ Text [ italian ] = "Posizione documento" ;
+ Text [ spanish ] = "Posición del documento" ;
+ Text [ french ] = "Emplacement dans le document" ;
+ Text [ dutch ] = "Documentpositie" ;
+ Text [ portuguese ] = "Posição do documento" ;
+ Text[ chinese_simplified ] = "ÎĵµÎ»ÖÃ";
+ Text[ russian ] = "Ïîçèöèÿ äîêóìåíòà";
+ Text[ polish ] = "Pozycja dokumentu";
+ Text[ japanese ] = "ÄÞ·­ÒÝĂ̈ʒu";
+ Text[ chinese_traditional ] = "¤å¥ó¦ì¸m";
+ Text[ arabic ] = "ãæÞÚ ÇáãÓÊäÏ";
+ Text[ greek ] = "ÈÝóç åããñÜöïõ";
+ Text[ korean ] = "¹®¼­ À§Ä¡";
+ Text[ turkish ] = "Belge konumu";
+ 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 ] = "Sortuj";
+ Text[ japanese ] = "•À‚בւ¦";
+ Text[ chinese_traditional ] = "±Æ§Ç";
+ Text[ arabic ] = "ÝÑÒ";
+ Text[ greek ] = "Ôáîéíüìçóç";
+ Text[ korean ] = "Á¤¿­";
+ Text[ turkish ] = "Sýrala";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+Bitmap BMP_ROOT_CLOSED
+{
+ File = "plus.bmp" ;
+};
+Bitmap BMP_ROOT_OPENED
+{
+ File = "minus.bmp" ;
+};
diff --git a/sw/source/ui/misc/srtdlg.cxx b/sw/source/ui/misc/srtdlg.cxx
new file mode 100644
index 000000000000..7c5318fccd06
--- /dev/null
+++ b/sw/source/ui/misc/srtdlg.cxx
@@ -0,0 +1,459 @@
+/*************************************************************************
+ *
+ * $RCSfile: srtdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+#include "view.hxx"
+#include "cmdid.h"
+#include "wrtsh.hxx"
+#include "srtdlg.hxx"
+#include "sortopt.hxx"
+#include "misc.hrc"
+#include "srtdlg.hrc"
+#include "swtable.hxx"
+#include "node.hxx"
+#include "tblsel.hxx"
+
+static BOOL bCheck1 = TRUE;
+static BOOL bCheck2 = FALSE;
+static BOOL bCheck3 = FALSE;
+
+static USHORT nCol1 = 1;
+static USHORT nCol2 = 1;
+static USHORT nCol3 = 1;
+
+static USHORT nType1 = 0;
+static USHORT nType2 = 0;
+static USHORT nType3 = 0;
+
+static BOOL bAsc1 = TRUE;
+static BOOL bAsc2 = TRUE;
+static BOOL bAsc3 = TRUE;
+static BOOL bCol = FALSE;
+static char nDeli = '\t';
+
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Fuer Tabellenselektion sel. Zeilen und Spalten
+ feststellen
+ --------------------------------------------------------------------*/
+
+
+BOOL lcl_GetSelTbl( SwWrtShell &rSh,USHORT& rX, USHORT& rY )
+{
+ const SwTableNode* pTblNd = rSh.IsCrsrInTbl();
+ if( !pTblNd )
+ return FALSE;
+
+ _FndBox aFndBox( 0, 0 );
+
+ // suche alle Boxen / Lines
+ {
+ SwSelBoxes aSelBoxes;
+ ::GetTblSel( rSh, aSelBoxes );
+ _FndPara aPara( aSelBoxes, &aFndBox );
+ const SwTable& rTbl = pTblNd->GetTable();
+ ((SwTableLines&)rTbl.GetTabLines()).ForEach( &_FndLineCopyCol, &aPara );
+ }
+ rX = aFndBox.GetLines().Count();
+ if( !rX )
+ return FALSE;
+
+ rY = aFndBox.GetLines()[0]->GetBoxes().Count();
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Init-Liste
+ --------------------------------------------------------------------*/
+
+
+
+SwSortDlg::SwSortDlg(Window* pParent, SwWrtShell &rShell) :
+
+ SvxStandardDialog(pParent, SW_RES(DLG_SORTING)),
+ rSh(rShell),
+ aOkBtn(this, SW_RES(BT_OK )),
+ aCancelBtn(this, SW_RES(BT_CANCEL)),
+ aHelpBtn(this, SW_RES(BT_HELP )),
+ aColLbl(this, SW_RES(FT_COL )),
+ aTypLbl(this, SW_RES(FT_KEYTYP)),
+ aDirLbl(this, SW_RES(FT_DIR )),
+ aKeyCB1(this, SW_RES(CB_KEY1 )),
+ aColEdt1(this, SW_RES(ED_KEY1 )),
+ aTypDLB1(this, SW_RES(DLB_KEY1 )),
+ aSortUpRB(this, SW_RES(RB_UP )),
+ aSortDnRB(this, SW_RES(RB_DN )),
+ aKeyCB2(this, SW_RES(CB_KEY2 )),
+ aColEdt2(this, SW_RES(ED_KEY2 )),
+ aTypDLB2(this, SW_RES(DLB_KEY2 )),
+ aSortUp2RB(this, SW_RES(RB_UP2 )),
+ aSortDn2RB(this, SW_RES(RB_DN2 )),
+ aKeyCB3(this, SW_RES(CB_KEY3 )),
+ aColEdt3(this, SW_RES(ED_KEY3 )),
+ aTypDLB3(this, SW_RES(DLB_KEY3 )),
+ aSortUp3RB(this, SW_RES(RB_UP3 )),
+ aSortDn3RB(this, SW_RES(RB_DN3 )),
+ aSortGrp(this, SW_RES(GB_SORT )),
+ aColumnRB(this, SW_RES(RB_COL )),
+ aRowRB(this, SW_RES(RB_ROW )),
+ aDirGrp(this, SW_RES(GB_DIR )),
+ aDelimTabRB(this, SW_RES(RB_TAB )),
+ aDelimFreeRB(this, SW_RES(RB_TABCH )),
+ aDelimEdt(this, SW_RES(ED_TABCH )),
+ aDelimGrp(this, SW_RES(GB_DELIM )),
+ aColTxt(SW_RES(STR_COL)),
+ aRowTxt(SW_RES(STR_ROW)),
+ nX( 99 ),
+ nY( 99 )
+{
+ aDelimEdt.SetMaxTextLen( 1 );
+ if(rSh.GetSelectionType() &
+ (SwWrtShell::SEL_TBL|SwWrtShell::SEL_TBL_CELLS) )
+ {
+ aColumnRB.Check(bCol);
+ aColLbl.SetText(bCol ? aRowTxt : aColTxt);
+ aRowRB.Check(!bCol);
+ aDelimTabRB.Enable(FALSE);
+ aDelimFreeRB.Enable(FALSE);
+ aDelimEdt.Enable(FALSE);
+ }
+ else
+ {
+ aColumnRB.Enable(FALSE);
+ aRowRB.Check(TRUE);
+ aColLbl.SetText(aColTxt);
+ }
+
+ // Initialisieren
+ Link aLk = LINK(this,SwSortDlg, CheckHdl);
+ aKeyCB1.SetClickHdl( aLk );
+ aKeyCB2.SetClickHdl( aLk );
+ aKeyCB3.SetClickHdl( aLk );
+ aColumnRB.SetClickHdl( aLk );
+ aRowRB.SetClickHdl( aLk );
+
+ aLk = LINK(this,SwSortDlg, DelimHdl);
+ aDelimFreeRB.SetClickHdl(aLk);
+ aDelimTabRB.SetClickHdl(aLk);
+
+ aKeyCB1.Check(bCheck1);
+ aKeyCB2.Check(bCheck2);
+ aKeyCB3.Check(bCheck3);
+
+ aColEdt1.SetValue(nCol1);
+ aColEdt2.SetValue(nCol2);
+ aColEdt3.SetValue(nCol3);
+
+ aTypDLB1.SelectEntryPos(nType1);
+ aTypDLB2.SelectEntryPos(nType2);
+ aTypDLB3.SelectEntryPos(nType3);
+
+ aSortUpRB.Check(bAsc1);
+ aSortDnRB.Check(!bAsc1);
+ aSortUp2RB.Check(bAsc2);
+ aSortDn2RB.Check(!bAsc2);
+ aSortUp3RB.Check(bAsc3);
+ aSortDn3RB.Check(!bAsc3);
+ aDelimTabRB.Check(nDeli == '\t');
+
+ if(!aDelimTabRB.IsChecked())
+ {
+ aDelimEdt.SetText(nDeli);
+ aDelimFreeRB.Check(TRUE);
+ DelimHdl(&aDelimFreeRB);
+ }
+ else
+ DelimHdl(&aDelimTabRB);
+
+ FreeResource();
+ if( ::lcl_GetSelTbl( rSh, nX, nY) )
+ {
+ USHORT nMax = aRowRB.IsChecked()? nY : nX;
+ aColEdt1.SetMax(nMax);
+ aColEdt2.SetMax(nMax);
+ aColEdt3.SetMax(nMax);
+ }
+}
+
+
+
+
+SwSortDlg::~SwSortDlg()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: An die Core weiterreichen
+ --------------------------------------------------------------------*/
+void SwSortDlg::Apply()
+{
+ SwSortOptions aOptions;
+ if(aKeyCB1.IsChecked())
+ {
+ USHORT nSort = aSortUpRB.IsChecked() ?
+ (USHORT)SRT_ASCENDING : (USHORT)SRT_DESCENDING ;
+ SwSortKey *pKey = new SwSortKey(aColEdt1.GetValue(),
+ (SwSortKeyType)aTypDLB1.GetSelectEntryPos(),
+ (SwSortOrder)nSort);
+ aOptions.aKeys.C40_INSERT(SwSortKey, pKey, aOptions.aKeys.Count());
+ }
+
+ if(aKeyCB2.IsChecked())
+ {
+ USHORT nSort = aSortUp2RB.IsChecked() ?
+ (USHORT)SRT_ASCENDING : (USHORT)SRT_DESCENDING ;
+ SwSortKey *pKey = new SwSortKey(aColEdt2.GetValue(),
+ (SwSortKeyType)aTypDLB2.GetSelectEntryPos(),
+ (SwSortOrder)nSort);
+ aOptions.aKeys.C40_INSERT(SwSortKey, pKey, aOptions.aKeys.Count());
+ }
+
+ if(aKeyCB3.IsChecked())
+ {
+ USHORT nSort = aSortUp3RB.IsChecked() ?
+ (USHORT)SRT_ASCENDING : (USHORT)SRT_DESCENDING ;
+ SwSortKey *pKey = new SwSortKey(aColEdt3.GetValue(),
+ (SwSortKeyType)aTypDLB3.GetSelectEntryPos(),
+ (SwSortOrder)nSort);
+ aOptions.aKeys.C40_INSERT(SwSortKey, pKey, aOptions.aKeys.Count());
+ }
+ aOptions.eDirection = aRowRB.IsChecked() ?
+ SRT_ROWS : SRT_COLUMNS;
+ sal_Unicode nDeli = '\t';
+ if(!aDelimTabRB.IsChecked())
+ {
+ String aTmp(aDelimEdt.GetText());
+ if( aTmp.Len() )
+ nDeli = aTmp.GetChar( 0 );
+ }
+ aOptions.nDeli = nDeli;
+ aOptions.bTable = rSh.IsTableMode();
+
+ SwWait aWait( *rSh.GetView().GetDocShell(), TRUE );
+ rSh.StartAllAction();
+ BOOL bRet = rSh.Sort(aOptions);
+ rSh.EndAllAction();
+ if(bRet)
+ InfoBox(this->GetParent(), SW_RES(MSG_SRTERR)).Execute();
+ else
+ rSh.SetModified();
+
+ // Alte Einstellung speichern
+ //
+ bCheck1 = aKeyCB1.IsChecked();
+ bCheck2 = aKeyCB2.IsChecked();
+ bCheck3 = aKeyCB3.IsChecked();
+
+ nCol1 = (USHORT)aColEdt1.GetValue();
+ nCol2 = (USHORT)aColEdt2.GetValue();
+ nCol3 = (USHORT)aColEdt3.GetValue();
+
+ nType1 = aTypDLB1.GetSelectEntryPos();
+ nType2 = aTypDLB2.GetSelectEntryPos();
+ nType3 = aTypDLB3.GetSelectEntryPos();
+
+ bAsc1 = aSortUpRB.IsChecked();
+ bAsc2 = aSortUp2RB.IsChecked();
+ bAsc3 = aSortUp3RB.IsChecked();
+ bCol = aColumnRB.IsChecked();
+}
+/* -----------------30.09.98 10:03-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwSortDlg, DelimHdl, RadioButton*, pButton )
+{
+ aDelimEdt.Enable(pButton == &aDelimFreeRB && aDelimFreeRB.IsEnabled());
+ return 0;
+}
+
+
+IMPL_LINK( SwSortDlg, CheckHdl, CheckBox *, pCheck )
+{
+ if( pCheck == ( CheckBox* ) &aRowRB)
+ {
+ aColLbl.SetText(aColTxt);
+ aColEdt1.SetMax(nY);
+ aColEdt2.SetMax(nY);
+ aColEdt3.SetMax(nY);
+
+ }
+ else if( pCheck == ( CheckBox* ) &aColumnRB)
+ {
+ aColLbl.SetText(aRowTxt);
+ aColEdt1.SetMax(nX);
+ aColEdt2.SetMax(nX);
+ aColEdt3.SetMax(nX);
+ }
+ else if(!aKeyCB1.IsChecked() &&
+ !aKeyCB2.IsChecked() &&
+ !aKeyCB3.IsChecked())
+ pCheck->Check(TRUE);
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.58 2000/09/18 16:06:00 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.57 2000/05/26 07:21:31 os
+ old SW Basic API Slots removed
+
+ Revision 1.56 2000/02/11 14:56:48 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.55 1998/09/30 08:29:10 OS
+ #52654# Sortable und SortDescriptor eingebaut, auf- und absteigend fuer jeden Schluessel
+
+
+ Rev 1.54 30 Sep 1998 10:29:10 OS
+ #52654# Sortable und SortDescriptor eingebaut, auf- und absteigend fuer jeden Schluessel
+
+ Rev 1.53 07 Apr 1998 13:04:20 OM
+ #49223 Infobox nicht mit hidden Parent executen
+
+ Rev 1.52 24 Nov 1997 16:47:48 MA
+ includes
+
+ Rev 1.51 21 Nov 1997 13:50:44 OS
+ richtigen Schluesseltext setzen #45697#
+
+ Rev 1.50 03 Nov 1997 13:22:42 MA
+ precomp entfernt
+
+ Rev 1.49 25 Jul 1997 15:39:10 HJS
+ includes
+
+ Rev 1.48 11 Nov 1996 11:05:44 MA
+ ResMgr
+
+ Rev 1.47 24 Oct 1996 13:36:36 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.46 02 Oct 1996 18:29:32 MA
+ Umstellung Enable/Disable
+
+ Rev 1.45 11 Sep 1996 17:23:46 NF
+ add: svxids.hrc
+
+ Rev 1.44 28 Aug 1996 14:12:24 OS
+ includes
+
+ Rev 1.43 26 Jun 1996 15:25:54 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.42 25 Jun 1996 18:39:38 HJS
+ includes
+
+ Rev 1.41 07 Jun 1996 14:25:56 OS
+ SelectionType auf SEL_TBL* testen, nicht auf SEL_TXT
+
+ Rev 1.40 06 Feb 1996 15:21:14 JP
+ Link Umstellung 305
+
+ Rev 1.39 24 Nov 1995 16:58:46 OM
+ PCH->PRECOMPILED
+
+ Rev 1.38 13 Nov 1995 10:52:46 OM
+ Neues Seg
+
+ Rev 1.37 13 Nov 1995 10:51:34 OM
+ static entfernt
+
+ Rev 1.36 08 Nov 1995 13:31:48 JP
+ Umstellung zur 301: Change -> Set
+
+ Rev 1.35 24 Oct 1995 17:05:52 OS
+ Sorting recordable und dazu ueber Slot imlementiert
+
+ Rev 1.34 12 Sep 1995 17:30:20 OM
+ Helpbutton eingefuegt
+
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/misc/srtdlg.hrc b/sw/source/ui/misc/srtdlg.hrc
new file mode 100644
index 000000000000..ef4ea1132ff6
--- /dev/null
+++ b/sw/source/ui/misc/srtdlg.hrc
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * $RCSfile: srtdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define BT_OK 1
+#define BT_CANCEL 2
+#define FT_COL 3
+#define FT_KEYTYP 4
+#define CB_KEY1 5
+#define ED_KEY1 6
+#define DLB_KEY1 7
+#define CB_KEY2 8
+#define ED_KEY2 9
+#define DLB_KEY2 10
+#define CB_KEY3 11
+#define ED_KEY3 12
+#define DLB_KEY3 13
+#define GB_SORT 14
+#define RB_COL 15
+#define RB_ROW 16
+#define GB_DIR 17
+#define RB_UP 18
+#define RB_DN 19
+#define GB_ORDER 20
+#define RB_TAB 21
+#define RB_TABCH 22
+#define ED_TABCH 23
+#define GB_DELIM 24
+#define STR_ROW 25
+#define STR_COL 26
+#define BT_HELP 27
+#define FT_DIR 28
+#define RB_UP2 29
+#define RB_DN2 30
+#define RB_UP3 31
+#define RB_DN3 32
+
diff --git a/sw/source/ui/misc/srtdlg.src b/sw/source/ui/misc/srtdlg.src
new file mode 100644
index 000000000000..f80236b1b1cd
--- /dev/null
+++ b/sw/source/ui/misc/srtdlg.src
@@ -0,0 +1,1193 @@
+/*************************************************************************
+ *
+ * $RCSfile: srtdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "misc.hrc"
+#include "srtdlg.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ModalDialog DLG_SORTING
+{
+ HelpID = FN_SORTING_DLG ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 268 , 153 ) ;
+ 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" ;
+ Moveable = TRUE ;
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 212 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 212 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 212 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_COL
+ {
+ Pos = MAP_APPFONT ( 68 , 12 ) ;
+ Size = MAP_APPFONT ( 25 , 8 ) ;
+ 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" ;
+ Left = TRUE ;
+ 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 ] = " ";
+ };
+ FixedText FT_KEYTYP
+ {
+ Pos = MAP_APPFONT ( 101, 12 ) ;
+ Size = MAP_APPFONT ( 48 , 8 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Schlüsseltyp : Schl³sseltyp */
+ Text = "Schlüsseltyp" ;
+ Text [ ENGLISH ] = "Key type" ;
+ Text [ norwegian ] = "Tasttype" ;
+ Text [ italian ] = "Tipo chiave" ;
+ Text [ portuguese_brazilian ] = "Tipo de tecla" ;
+ Text [ portuguese ] = "Tipo de chave" ;
+ Text [ finnish ] = "Avainlaji" ;
+ Text [ danish ] = "Nøgletype" ;
+ Text [ french ] = "Type de critère" ;
+ Text [ swedish ] = "Kodtyp" ;
+ Text [ dutch ] = "Sleuteltype" ;
+ Text [ spanish ] = "Tipo de clave" ;
+ Text [ english_us ] = "Key type" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÃÜÂëÀàÐÍ";
+ Text[ russian ] = "Òèï êëþ÷à";
+ Text[ polish ] = "Typ klucza";
+ Text[ japanese ] = "·°‚ÌŽí—Þ";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "±K½XÃþ«¬";
+ Text[ arabic ] = "äæÚ ÇáãÝÊÇÍ";
+ Text[ greek ] = "Ôýðïò êëåéäéïý";
+ Text[ korean ] = "Å° ÇüÅÂ";
+ Text[ turkish ] = "Anahtar tipi";
+ };
+ FixedText FT_DIR
+ {
+ Pos = MAP_APPFONT ( 155 , 12 ) ;
+ Size = MAP_APPFONT ( 49 , 10 ) ;
+ Text = "Reihenfolge" ;
+ Text [ ENGLISH ] = "Order" ;
+ Text [ norwegian ] = "Rekkefølge" ;
+ Text [ italian ] = "Sequenza" ;
+ Text [ portuguese_brazilian ] = "Ordem" ;
+ Text [ portuguese ] = "Ordem" ;
+ Text [ finnish ] = "Järjestys" ;
+ Text [ danish ] = "Rækkefølge" ;
+ Text [ french ] = "Ordre" ;
+ Text [ swedish ] = "Ordning" ;
+ Text [ dutch ] = "Volgorde" ;
+ Text [ spanish ] = "Orden" ;
+ Text [ english_us ] = "Order" ;
+ Text[ chinese_simplified ] = "˳Ðò";
+ Text[ russian ] = "Ïîðÿäîê";
+ Text[ polish ] = "KolejnoϾ";
+ Text[ japanese ] = "‡˜";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¶¶§Ç";
+ Text[ arabic ] = "ÇáÊÑÊíÈ";
+ Text[ greek ] = "ÓåéñÜ";
+ Text[ korean ] = "¼ø¼­";
+ Text[ turkish ] = "Sýra";
+ };
+ CheckBox CB_KEY1
+ {
+ Pos = MAP_APPFONT ( 12 , 25 ) ;
+ Size = MAP_APPFONT ( 49 , 8 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Schlüssel ~1 : Schl³ssel ~1 */
+ Text = "Schlüssel ~1" ;
+ Text [ ENGLISH ] = "Key ~1" ;
+ Text [ norwegian ] = "Tast ~1" ;
+ Text [ italian ] = "Chiave ~1" ;
+ Text [ portuguese_brazilian ] = "Tecla ~1" ;
+ Text [ portuguese ] = "Tecla ~1" ;
+ Text [ finnish ] = "Avain ~1" ;
+ Text [ danish ] = "Nøgle 1" ;
+ Text [ french ] = "Critère ~1" ;
+ Text [ swedish ] = "Nyckel ~1" ;
+ Text [ dutch ] = "Sleutel ~1" ;
+ Text [ spanish ] = "Clave ~1" ;
+ Text [ english_us ] = "Key ~1" ;
+ Check = TRUE ;
+ Text[ chinese_simplified ] = "ÃÜÂë 1(~1)";
+ Text[ russian ] = "Êëþ÷ ~1";
+ Text[ polish ] = "Klucz ~1";
+ Text[ japanese ] = "·° 1";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "±K½X ~1";
+ Text[ arabic ] = "ãÝÊÇÍ 1";
+ Text[ greek ] = "Êëåéäß ~1";
+ Text[ korean ] = "Å° 1";
+ Text[ turkish ] = "Anahtar ~1";
+ };
+ NumericField ED_KEY1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 66 , 23 ) ;
+ Size = MAP_APPFONT ( 25 , 12 ) ;
+ Text = "10" ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 99 ;
+ Value = 1 ;
+ First = 1 ;
+ Last = 99 ;
+ SpinSize = 1 ;
+ };
+ ListBox DLB_KEY1
+ {
+ Pos = MAP_APPFONT ( 96 , 23 ) ;
+ Size = MAP_APPFONT ( 55 , 45 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ StringList =
+ {
+ < "alphanumerisch" ; > ;
+ < "numerisch" ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "alphanumerisch" ; > ;
+ < "numerisch" ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "alphanumerisch" ; > ;
+ < "numerisch" ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "alfanumerica" ; > ;
+ < "numerica" ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "alfanumérico" ; > ;
+ < "numérico" ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "alfanumérico" ; > ;
+ < "numérico" ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "alphanumerisch" ; > ;
+ < "numerisch" ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "alfanumerisk" ; > ;
+ < "numerisk" ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "alphanumérique" ; > ;
+ < "numérique" ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "alfanumerisk" ; > ;
+ < "numerisk" ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "alfanumeriek" ; > ;
+ < "numeriek" ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "alfanumérica" ; > ;
+ < "numérica" ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "alphanumeric" ; > ;
+ < "numeric" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "×Öĸ" ; > ;
+ < "Êý×Ö" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "àëôàâèòíî-öèôðîâîé" ; > ;
+ < "öèôðîâîé" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "alfanumeryczny" ; > ;
+ < "numeryczny" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "±Ù̧Íޯć" ; > ;
+ < "”Žš" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¦r¥À" ; > ;
+ < "¼Æ¦r" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "åÌÇÆí ÚÏÏí" ; > ;
+ < "ÚÏÏí" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "áëöáñéèìçôéêÜ" ; > ;
+ < "áñéèìçôéêÜ" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¿µ¼ýÀÚ" ; > ;
+ < "¹øÈ£" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "alfanümerik" ; > ;
+ < "nümerik" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ RadioButton RB_UP
+ {
+ Pos = MAP_APPFONT ( 155 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Aufsteigend" ;
+ 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 ] = "~Oplopend" ;
+ Text [ spanish ] = "~Ascendente" ;
+ Text [ english_us ] = "~Ascending" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Text[ chinese_simplified ] = "µÝÔö(~A)";
+ Text[ russian ] = "Ïî âîçðàñòàíèþ";
+ Text[ polish ] = "Rosn¹co";
+ Text[ japanese ] = "¸‡(~A)";
+ Text[ chinese_traditional ] = "»¼¼W(~A)";
+ Text[ arabic ] = "ÊÕÇÚÏí";
+ Text[ greek ] = "Áýîïõóá";
+ Text[ korean ] = "¿À¸§Â÷¼ø(~A)";
+ Text[ turkish ] = "Ar~tan";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_DN
+ {
+ Pos = MAP_APPFONT ( 155 , 35 ) ;
+ Size = MAP_APPFONT ( 50 , 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 ] = "~Aflopend" ;
+ Text [ spanish ] = "~Descendente" ;
+ Text [ english_us ] = "~Descending" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "µÝ¼õ(~D)";
+ Text[ russian ] = "Ïî óáûâàíèþ";
+ Text[ polish ] = "Malej¹co";
+ Text[ japanese ] = "~‡";
+ Text[ chinese_traditional ] = "»¼´î(~D)";
+ Text[ arabic ] = "ÊäÇÒáí";
+ Text[ greek ] = "Öèßíïõóá";
+ Text[ korean ] = "³»¸²Â÷¼ø(~D)";
+ Text[ turkish ] = "A~zalan";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_KEY2
+ {
+ Pos = MAP_APPFONT ( 12 , 52 ) ;
+ Size = MAP_APPFONT ( 49 , 8 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Schlüssel ~2 : Schl³ssel ~2 */
+ Text = "Schlüssel ~2" ;
+ Text [ ENGLISH ] = "Key ~2" ;
+ Text [ norwegian ] = "Tast ~2" ;
+ Text [ italian ] = "Chiave ~2" ;
+ Text [ portuguese_brazilian ] = "Tecla ~2" ;
+ Text [ portuguese ] = "Tecla ~2" ;
+ Text [ finnish ] = "Avain ~2" ;
+ Text [ danish ] = "Nøgle 2" ;
+ Text [ french ] = "Critère ~2" ;
+ Text [ swedish ] = "Nyckel ~2" ;
+ Text [ dutch ] = "Sleutel ~2" ;
+ Text [ spanish ] = "Clave ~2" ;
+ Text [ english_us ] = "Key ~2" ;
+ Text[ chinese_simplified ] = "ÃÜÂë 2(~2)";
+ Text[ russian ] = "Êëþ÷ ~2";
+ Text[ polish ] = "Klucz 2";
+ Text[ japanese ] = "·° 2";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "±K½X ~2";
+ Text[ arabic ] = "ãÝÊÇÍ 2";
+ Text[ greek ] = "Êëåéäß ~2";
+ Text[ korean ] = "Å° 2";
+ Text[ turkish ] = "Anahtar ~2";
+ };
+ NumericField ED_KEY2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 66 , 50 ) ;
+ Size = MAP_APPFONT ( 25 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 99 ;
+ Value = 1 ;
+ First = 1 ;
+ Last = 99 ;
+ SpinSize = 1 ;
+ };
+ ListBox DLB_KEY2
+ {
+ Pos = MAP_APPFONT ( 96 , 50 ) ;
+ Size = MAP_APPFONT ( 55 , 45 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ StringList =
+ {
+ < "alphanumerisch" ; > ;
+ < "numerisch" ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "alphanumerisch" ; > ;
+ < "numerisch" ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "alphanumerisch" ; > ;
+ < "numerisch" ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "alfanumerica" ; > ;
+ < "numerica" ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "alfanumérico" ; > ;
+ < "numérico" ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "alfanumérico" ; > ;
+ < "numérico" ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "alphanumerisch" ; > ;
+ < "numerisch" ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "alfanumerisk" ; > ;
+ < "numerisk" ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "alphanumérique" ; > ;
+ < "numérique" ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "alfanumerisk" ; > ;
+ < "numerisk" ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "alfanumeriek" ; > ;
+ < "numeriek" ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "alfanumérica" ; > ;
+ < "numérica" ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "alphanumeric" ; > ;
+ < "numeric" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "×Öĸ" ; > ;
+ < "Êý×Ö" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "àëôàâèòíî-öèôðîâîé" ; > ;
+ < "öèôðîâîé" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "alfanumeryczny" ; > ;
+ < "numeryczny" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "±Ù̧Íޯć" ; > ;
+ < "”Žš" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¦r¥À" ; > ;
+ < "¼Æ¦r" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "åÌÇÆí ÚÏÏí" ; > ;
+ < "ÚÏÏí" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "áëöáñéèìçôéêÜ" ; > ;
+ < "áñéèìçôéêÜ" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¿µ¼ýÀÚ" ; > ;
+ < "¹øÈ£" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "alfanümerik" ; > ;
+ < "nümerik" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ RadioButton RB_UP2
+ {
+ Pos = MAP_APPFONT ( 155 , 50 ) ;
+ Size = MAP_APPFONT ( 50 , 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 ] = "Sti~gande" ;
+ Text [ dutch ] = "~Oplopend" ;
+ Text [ spanish ] = "A~scendente" ;
+ Text [ english_us ] = "Ascending" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Text[ chinese_simplified ] = "µÝÔö";
+ Text[ russian ] = "Ïî âîçðàñòàíèþ";
+ Text[ polish ] = "Rosn¹co";
+ Text[ japanese ] = "¸‡";
+ Text[ chinese_traditional ] = "»¼¼W";
+ Text[ arabic ] = "ÊÕÇÚÏí";
+ Text[ greek ] = "Áýîïõóá";
+ Text[ korean ] = "¿À¸§Â÷¼ø";
+ Text[ turkish ] = "Arta~n";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_DN2
+ {
+ Pos = MAP_APPFONT ( 155 , 62 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "Ab~steigend" ;
+ 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 ] = "Fa~llande" ;
+ Text [ dutch ] = "~Aflopend" ;
+ Text [ spanish ] = "Desc~endente" ;
+ Text [ english_us ] = "Descending" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "µÝ¼õ";
+ Text[ russian ] = "Ïî óáûâàíèþ";
+ Text[ polish ] = "Malej¹co";
+ Text[ japanese ] = "~‡";
+ Text[ chinese_traditional ] = "»¼´î";
+ Text[ arabic ] = "ÊäÇÒáí";
+ Text[ greek ] = "Öèßíïõóá";
+ Text[ korean ] = "³»¸²Â÷¼ø";
+ Text[ turkish ] = "A~rtan";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_KEY3
+ {
+ Pos = MAP_APPFONT ( 12 , 81 ) ;
+ Size = MAP_APPFONT ( 49 , 8 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Schlüssel ~3 : Schl³ssel ~3 */
+ Text = "Schlüssel ~3" ;
+ Text [ ENGLISH ] = "Key ~3" ;
+ Text [ norwegian ] = "Tast ~3" ;
+ Text [ italian ] = "Chiave ~3" ;
+ Text [ portuguese_brazilian ] = "Tecla ~3" ;
+ Text [ portuguese ] = "Tecla ~3" ;
+ Text [ finnish ] = "Avain ~3" ;
+ Text [ danish ] = "Nøgle 3" ;
+ Text [ french ] = "Critère ~3" ;
+ Text [ swedish ] = "Nyckel ~3" ;
+ Text [ dutch ] = "Sleutel ~3" ;
+ Text [ spanish ] = "Clave ~3" ;
+ Text [ english_us ] = "Key ~3" ;
+ Text[ chinese_simplified ] = "ÃÜÂë 3(~3)";
+ Text[ russian ] = "Êëþ÷ ~3";
+ Text[ polish ] = "Klucz 3";
+ Text[ japanese ] = "·° 3";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "±K½X ~3";
+ Text[ arabic ] = "ãÝÊÇÍ 3";
+ Text[ greek ] = "Êëåéäß ~3";
+ Text[ korean ] = "Å° 3";
+ Text[ turkish ] = "Anahtar ~3";
+ };
+ NumericField ED_KEY3
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 66 , 79 ) ;
+ Size = MAP_APPFONT ( 25 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 99 ;
+ Value = 1 ;
+ First = 1 ;
+ Last = 99 ;
+ SpinSize = 1 ;
+ };
+ ListBox DLB_KEY3
+ {
+ Pos = MAP_APPFONT ( 96 , 79 ) ;
+ Size = MAP_APPFONT ( 55 , 45 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ CurPos = 0 ;
+ StringList =
+ {
+ < "alphanumerisch" ; > ;
+ < "numerisch" ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "alphanumerisch" ; > ;
+ < "numerisch" ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "alphanumerisch" ; > ;
+ < "numerisch" ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "alfanumerica" ; > ;
+ < "numerica" ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "alfanumérico" ; > ;
+ < "numérico" ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "alfanumérico" ; > ;
+ < "numérico" ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "alphanumerisch" ; > ;
+ < "numerisch" ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "alfanumerisk" ; > ;
+ < "numerisk" ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "alphanumérique" ; > ;
+ < "numérique" ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "alfanumerisk" ; > ;
+ < "numerisk" ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "alfanumeriek" ; > ;
+ < "numeriek" ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "alfanumérica" ; > ;
+ < "numérica" ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "alphanumeric" ; > ;
+ < "numeric" ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "×Öĸ" ; > ;
+ < "Êý×Ö" ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "àëôàâèòíî-öèôðîâîé" ; > ;
+ < "öèôðîâîé" ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "alfanumeryczny" ; > ;
+ < "numeryczny" ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "±Ù̧Íޯć" ; > ;
+ < "”Žš" ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¦r¥À" ; > ;
+ < "¼Æ¦r" ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "åÌÇÆí ÚÏÏí" ; > ;
+ < "ÚÏÏí" ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "áëöáñéèìçôéêÜ" ; > ;
+ < "áñéèìçôéêÜ" ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¿µ¼ýÀÚ" ; > ;
+ < "¹øÈ£" ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "alfanümerik" ; > ;
+ < "nümerik" ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; > ;
+ < " " ; > ;
+ };
+ };
+ RadioButton RB_UP3
+ {
+ Pos = MAP_APPFONT ( 155 , 79 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "Aufstei~gend" ;
+ 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 ] = "Stiga~nde" ;
+ Text [ dutch ] = "~Oplopend" ;
+ Text [ spanish ] = "Ascende~nte" ;
+ Text [ english_us ] = "Ascending" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Text[ chinese_simplified ] = "µÝÔö";
+ Text[ russian ] = "Ïî âîçðàñòàíèþ";
+ Text[ polish ] = "Rosn¹co";
+ Text[ japanese ] = "¸‡";
+ Text[ chinese_traditional ] = "»¼¼W";
+ Text[ arabic ] = "ÊÕÇÚÏí";
+ Text[ greek ] = "Áýîïõóá";
+ Text[ korean ] = "¿À¸§Â÷¼ø";
+ Text[ turkish ] = "Artan";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_DN3
+ {
+ Pos = MAP_APPFONT ( 155 , 91 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "Absteigen~d" ;
+ 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 ] = "Falland~e" ;
+ Text [ dutch ] = "~Aflopend" ;
+ Text [ spanish ] = "Des~cendente" ;
+ Text [ english_us ] = "Descending" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "µÝ¼õ";
+ Text[ russian ] = "Ïî óáûâàíèþ";
+ Text[ polish ] = "Malej¹co";
+ Text[ japanese ] = "~‡";
+ Text[ chinese_traditional ] = "»¼´î";
+ Text[ arabic ] = "ÊäÇÒáí";
+ Text[ greek ] = "Öèßíïõóá";
+ Text[ korean ] = "³»¸²Â÷¼ø";
+ Text[ turkish ] = "Aza~lan";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_SORT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 200 , 102 ) ;
+ Text = "Regel" ;
+ Text [ ENGLISH ] = "Rule" ;
+ Text [ norwegian ] = "+++Rule" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Regra" ;
+ Text [ portuguese ] = "Regra" ;
+ Text [ finnish ] = "Sääntö" ;
+ Text [ danish ] = "Kriterier" ;
+ Text [ french ] = "Règle" ;
+ Text [ swedish ] = "Regel" ;
+ Text [ dutch ] = "Rij" ;
+ Text [ spanish ] = "Regla" ;
+ Text [ english_us ] = "Sort criteria" ;
+ Text[ chinese_simplified ] = "ÅÅÐò¹æÔò";
+ Text[ russian ] = "Ïîðÿäîê ñîðòèðîâêè";
+ Text[ polish ] = "Regu³a";
+ Text[ japanese ] = "ðŒ";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "±Æ§Ç³W«h";
+ Text[ arabic ] = "ÇáÞæÇÚÏ";
+ Text[ greek ] = "ÊñéôÞñéï";
+ Text[ korean ] = "Á¤·Ä ±âÁØ";
+ Text[ turkish ] = "Kural";
+ };
+ RadioButton RB_COL
+ {
+ Pos = MAP_APPFONT ( 12 , 120 ) ;
+ Size = MAP_APPFONT ( 38 , 10 ) ;
+ Text = "S~palten" ;
+ 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 ] = "Co~lumnas" ;
+ Text [ english_us ] = "Col~umns" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÁÐ(~L)";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "~Kolumny";
+ Text[ japanese ] = "’i‘g‚Ý(~L)";
+ Text[ chinese_traditional ] = "Äæ(~L)";
+ Text[ arabic ] = "ÃÚãÏÉ";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­(~U)";
+ Text[ turkish ] = "S~ütun";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_ROW
+ {
+ Pos = MAP_APPFONT ( 12 , 133 ) ;
+ Size = MAP_APPFONT ( 34 , 10 ) ;
+ Text = "~Zeilen" ;
+ Text [ ENGLISH ] = "~Lines" ;
+ Text [ norwegian ] = "~Linjer" ;
+ Text [ italian ] = "R~ighe" ;
+ Text [ portuguese_brazilian ] = "~Linhas" ;
+ Text [ portuguese ] = "~Linhas" ;
+ Text [ finnish ] = "~Viivat" ;
+ Text [ danish ] = "Rækker" ;
+ Text [ french ] = "~Lignes" ;
+ Text [ swedish ] = "~Rader" ;
+ Text [ dutch ] = "~Rijen" ;
+ Text [ spanish ] = "~Filas" ;
+ Text [ english_us ] = "~Rows" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Text[ chinese_simplified ] = "ÐÐ(~R)";
+ Text[ russian ] = "Ñòðîêè";
+ Text[ polish ] = "Wiersze";
+ Text[ japanese ] = "s(~R)";
+ Text[ chinese_traditional ] = "¦æ(~R)";
+ Text[ arabic ] = "ÕÝæÝ";
+ Text[ greek ] = "ÃñáììÝò";
+ Text[ korean ] = "¿­(~R)";
+ Text[ turkish ] = "~Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_DIR
+ {
+ Pos = MAP_APPFONT ( 6 , 108 ) ;
+ Size = MAP_APPFONT ( 98 , 42 ) ;
+ 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 ] = " ";
+ };
+/* GroupBox GB_ORDER
+ {
+ Pos = MAP_APPFONT ( 59 , 76 ) ;
+ Size = MAP_APPFONT ( 58 , 42 ) ;
+ Text = "Reihenfolge" ;
+ Text [ ENGLISH ] = "Order" ;
+ Text [ norwegian ] = "Rekkefølge" ;
+ Text [ italian ] = "Ordine" ;
+ Text [ portuguese_brazilian ] = "Ordem" ;
+ Text [ portuguese ] = "Ordem" ;
+ Text [ finnish ] = "Järjestys" ;
+ Text [ danish ] = "Rækkefølge" ;
+ Text [ french ] = "Ordre" ;
+ Text [ swedish ] = "Ordning" ;
+ Text [ dutch ] = "Volgorde" ;
+ Text [ spanish ] = "Orden" ;
+ Text [ english_us ] = "Order" ;
+ };*/
+ RadioButton RB_TAB
+ {
+ Pos = MAP_APPFONT ( 113 , 120 ) ;
+ Size = MAP_APPFONT ( 44 , 9 ) ;
+ Text = "~Tabulator" ;
+ Text [ ENGLISH ] = "~Tab" ;
+ Text [ norwegian ] = "~Tab" ;
+ Text [ italian ] = "~Tabulazione" ;
+ Text [ portuguese_brazilian ] = "~Tabulação" ;
+ Text [ portuguese ] = "~Tabulações" ;
+ Text [ finnish ] = "~Sarkain" ;
+ Text [ danish ] = "Tabulator" ;
+ Text [ french ] = "~Tabulation" ;
+ Text [ swedish ] = "~Tabulator" ;
+ Text [ dutch ] = "Ta~b" ;
+ Text [ spanish ] = "~Tabulación" ;
+ Text [ english_us ] = "~Tabs" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Text[ chinese_simplified ] = "ÖƱí·û(~T)";
+ Text[ russian ] = "Òàáóëÿöèÿ";
+ Text[ polish ] = "Tabulator";
+ Text[ japanese ] = "ÀÌÞ(~T)";
+ Text[ chinese_traditional ] = "»sªí²Å(~T)";
+ Text[ arabic ] = "ÚáÇãÉ ÌÏæáÉ";
+ Text[ greek ] = "ÓôçëïèÝôçò";
+ Text[ korean ] = "ÅÇ(~T)";
+ Text[ turkish ] = "~Sekmeler";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_TABCH
+ {
+ Pos = MAP_APPFONT ( 113 , 133 ) ;
+ Size = MAP_APPFONT ( 38 , 10 ) ;
+ Text = "Z~eichen" ;
+ Text [ ENGLISH ] = "~Char." ;
+ Text [ norwegian ] = "~Kull." ;
+ Text [ italian ] = "Carattere" ;
+ Text [ portuguese_brazilian ] = "~Caracter" ;
+ Text [ portuguese ] = "~Caracteres" ;
+ Text [ finnish ] = "~Merkki" ;
+ Text [ danish ] = "Tegn" ;
+ Text [ french ] = "C~aractère" ;
+ Text [ swedish ] = "Te~cken" ;
+ Text [ dutch ] = "~Teken" ;
+ Text [ spanish ] = "Ca~rácter" ;
+ Text [ english_us ] = "~Character" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "×Ö·û(~H)";
+ Text[ russian ] = "Çíàê";
+ Text[ polish ] = "Znak";
+ Text[ japanese ] = "‹L†(~H)";
+ Text[ chinese_traditional ] = "¦r¤¸(~H)";
+ Text[ arabic ] = "ÃÍÑÝ";
+ Text[ greek ] = "×áñáêôÞñåò";
+ Text[ korean ] = "¹®ÀÚ(~C)";
+ Text[ turkish ] = "~Karakter";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_TABCH
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 195 , 133 ) ;
+ Size = MAP_APPFONT ( 8 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ };
+ GroupBox GB_DELIM
+ {
+ Pos = MAP_APPFONT ( 107 , 108 ) ;
+ Size = MAP_APPFONT ( 99 , 42 ) ;
+ Text = "Trenner" ;
+ Text [ ENGLISH ] = "Delimiter" ;
+ Text [ norwegian ] = "Skilletegn" ;
+ Text [ italian ] = "Separatore" ;
+ Text [ portuguese_brazilian ] = "Delimitador" ;
+ Text [ portuguese ] = "Separador" ;
+ Text [ finnish ] = "Erotin" ;
+ Text [ danish ] = "Separator" ;
+ Text [ french ] = "Séparateur" ;
+ Text [ swedish ] = "Avgränsare" ;
+ Text [ dutch ] = "Scheidingsteken" ;
+ Text [ spanish ] = "Separador" ;
+ Text [ english_us ] = "Separator" ;
+ Text[ chinese_simplified ] = "·Ö¸ô·û";
+ Text[ russian ] = "Ðàçäåëèòåëü";
+ Text[ polish ] = "Separator";
+ Text[ japanese ] = "‹æØ‚è‹L†";
+ Text[ chinese_traditional ] = "¤À¹j²Å";
+ Text[ arabic ] = "ÇáÝÇÕá";
+ Text[ greek ] = "Äéá÷ùñéóôéêü";
+ Text[ korean ] = "±¸ºÐÀÚ";
+ Text[ turkish ] = "Ayýrma iþareti";
+ 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 ] = "Filas" ;
+ Text [ english_us ] = "Rows" ;
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ russian ] = "Ñòðîêà";
+ Text[ polish ] = "Wiersz";
+ Text[ japanese ] = "s";
+ Text[ chinese_traditional ] = "¦æ";
+ Text[ arabic ] = "ÕÝ";
+ Text[ greek ] = "ÃñáììÝò";
+ Text[ korean ] = "Çà";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_COL
+ {
+ 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 ] = " ";
+ };
+ 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 ] = " ";
+};
+InfoBox MSG_SRTERR
+{
+ BUTTONS = WB_OK ;
+ DEFBUTTON = WB_DEF_OK ;
+ MESSAGE = "Selektion konnte nicht sortiert werden" ;
+ MESSAGE [ English ] = "Cannot sort selection" ;
+ MESSAGE [ norwegian ] = "Kan ikke sortere utvalget" ;
+ MESSAGE [ italian ] = "Impossibile ordinare la selezione" ;
+ MESSAGE [ portuguese_brazilian ] = "Não posso ordenar seleção" ;
+ MESSAGE [ portuguese ] = "Impossível ordenar selecção" ;
+ MESSAGE [ finnish ] = "Valittuja tietoja ei voi lajitella" ;
+ MESSAGE [ danish ] = "Kan ikke sortere det markerede" ;
+ MESSAGE [ french ] = "Impossible de trier la sélection" ;
+ MESSAGE [ swedish ] = "Kan inte sortera markering" ;
+ MESSAGE [ dutch ] = "Selectie kan niet worden gesorteerd" ;
+ MESSAGE [ spanish ] = "No se pudo ordenar la selección" ;
+ MESSAGE [ english_us ] = "Cannot sort selection" ;
+ MESSAGE[ chinese_simplified ] = "ÎÞ·¨ÅÅÐòÑ¡ÔñµÄÄÚÈÝ¡£";
+ MESSAGE[ russian ] = "Ñîðòèðîâêà îòáîðà íåâîçìîæíà";
+ MESSAGE[ polish ] = "Nie mo¿na sortowaæ selekcji";
+ MESSAGE[ japanese ] = "‘I‘ð”͈͕͂À‚בւ¦o—ˆ‚Ü‚¹‚ñB";
+ MESSAGE[ chinese_traditional ] = "µLªk±Æ§Ç¿ï¾Üªº¤º®e¡C";
+ MESSAGE[ arabic ] = "ÊÚÐÑ ÝÑÒ ÇáÊÍÏíÏ";
+ MESSAGE[ greek ] = "Ç ôáîéíüìçóç ôçò åðéëïãÞò äåí Þôáí äõíáôÞ";
+ MESSAGE[ korean ] = "¼±ÅÃÀ» Á¤·ÄÇÒ¼ö ¾ø½À´Ï´Ù.";
+ MESSAGE[ turkish ] = "Seçim sýralanamadý";
+ MESSAGE[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/mui b/sw/source/ui/mui
new file mode 100644
index 000000000000..0f96b21ac2d0
--- /dev/null
+++ b/sw/source/ui/mui
@@ -0,0 +1,110 @@
+########################################################################
+# makescript UI; OK 8.12.1992
+########################################################################
+set DEF_MAKE_SCRIPT nmake
+
+FOR i IN {2}
+ If "{i}" =~ /CO/; set DEF_MAKE_SCRIPT cmake
+ Break; End
+ If "{i}" =~ /FU/; set DEF_MAKE_SCRIPT nmake
+ Break; End
+END
+
+echo "-------------------------------"
+echo "MUi © StarDivision 1992"
+echo {DEF_MAKE_SCRIPT} {1}
+echo "-------------------------------"
+
+############################################################
+set exit 0
+export exit
+set curdir `cd`
+
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:app
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:cctrl
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:chrdlg
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:config
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:dbui
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:dialog
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:dochdl
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:docvw
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:fldui
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:fmtui
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:frmdlg
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:globdoc
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:grfdlg
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:index
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:lingu
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:misc
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:prndlg
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:ribbar
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:shells
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:table
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:tabwin
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:uiview
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:utlui
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:window
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:wizard
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd "{PRJ_ROOT}SW:SOURCE:UI:wrtsh
+{DEF_MAKE_SCRIPT} {Parameters}
+
+cd {curdir}
+
+beep 1c,1
+beep 1d,1
+beep 1e,1
+beep 1f,1
+beep 1g,1
+beep 1a,1
+############################################################
diff --git a/sw/source/ui/ribbar/conarc.cxx b/sw/source/ui/ribbar/conarc.cxx
new file mode 100644
index 000000000000..fac5c6951238
--- /dev/null
+++ b/sw/source/ui/ribbar/conarc.cxx
@@ -0,0 +1,257 @@
+/*************************************************************************
+ *
+ * $RCSfile: conarc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+
+
+#include "view.hxx"
+#include "edtwin.hxx"
+#include "wrtsh.hxx"
+#include "drawbase.hxx"
+#include "conarc.hxx"
+
+
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+
+
+ConstArc::ConstArc(SwWrtShell* pWrtShell, SwEditWin* pEditWin, SwView* pSwView)
+ : SwDrawBase(pWrtShell, pEditWin, pSwView), nAnzButUp(0)
+{
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+
+
+BOOL ConstArc::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ BOOL bReturn;
+
+ if ((bReturn = SwDrawBase::MouseButtonDown(rMEvt)) == TRUE)
+ {
+ if (!nAnzButUp)
+ aStartPnt = pWin->PixelToLogic(rMEvt.GetPosPixel());
+ }
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-event
+|*
+\************************************************************************/
+
+
+
+BOOL ConstArc::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ BOOL bReturn = FALSE;
+
+ if ((pSh->IsDrawCreate() || pWin->IsDrawAction()) && rMEvt.IsLeft())
+ {
+ Point aPnt(pWin->PixelToLogic(rMEvt.GetPosPixel()));
+ if (!nAnzButUp && aPnt == aStartPnt)
+ {
+ SwDrawBase::MouseButtonUp(rMEvt);
+ bReturn = TRUE;
+ }
+ else
+ { nAnzButUp++;
+
+ if (nAnzButUp == 3) // Kreisbogenerzeugung beendet
+ {
+ SwDrawBase::MouseButtonUp(rMEvt);
+ nAnzButUp = 0;
+ bReturn = TRUE;
+ }
+ else
+ pSh->EndCreate(SDRCREATE_NEXTPOINT);
+ }
+ }
+/* else if ( pView->IsCreateObj() && rMEvt.IsRight() )
+ {
+ pView->EndCreateObj( SDRCREATE_FORCEEND );
+ bReturn = TRUE;
+ }*/
+
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+
+
+void ConstArc::Activate(const USHORT nSlotId)
+{
+ switch (nSlotId)
+ {
+ case SID_DRAW_ARC:
+ pWin->SetDrawMode(OBJ_CARC);
+ break;
+ case SID_DRAW_PIE:
+ pWin->SetDrawMode(OBJ_SECT);
+ break;
+ case SID_DRAW_CIRCLECUT:
+ pWin->SetDrawMode(OBJ_CCUT);
+ break;
+ default:
+ pWin->SetDrawMode(OBJ_NONE);
+ break;
+ }
+
+ SwDrawBase::Activate(nSlotId);
+}
+
+/*************************************************************************
+|*
+|* Funktion deaktivieren
+|*
+\************************************************************************/
+
+void ConstArc::Deactivate()
+{
+ nAnzButUp = 0;
+
+ SwDrawBase::Deactivate();
+}
+
+/*************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.24 2000/09/18 16:06:00 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.23 1997/11/24 13:53:58 MA
+ includes
+
+
+ Rev 1.22 24 Nov 1997 14:53:58 MA
+ includes
+
+ Rev 1.21 03 Nov 1997 13:24:22 MA
+ precomp entfernt
+
+ Rev 1.20 05 Sep 1997 11:59:36 MH
+ chg: header
+
+ Rev 1.19 04 Feb 1997 15:20:32 OM
+ Bugs in Selektionsmodi behoben
+
+ Rev 1.18 28 Aug 1996 13:39:26 OS
+ includes
+
+ Rev 1.17 14 Aug 1996 11:31:02 JP
+ svdraw.hxx entfernt
+
+ Rev 1.16 23 May 1996 08:50:16 OS
+ ein define weniger
+
+ Rev 1.15 07 Mar 1996 14:27:30 HJS
+ 2 defines zu viel
+
+ Rev 1.14 24 Nov 1995 16:58:04 OM
+ PCH->PRECOMPILED
+
+ Rev 1.13 15 Nov 1995 18:35:26 OM
+ Virtuelle Fkt rausgeworfen
+
+ Rev 1.12 21 Sep 1995 18:38:28 OM
+ Selektionsmodi ueberarbeitet
+
+ Rev 1.11 20 Sep 1995 10:07:02 OM
+ Control-Browser: Stati gefixt
+
+ Rev 1.10 09 Aug 1995 16:55:38 MA
+ drawing-undo-header rein
+
+ Rev 1.9 21 Jun 1995 16:15:26 OS
+ SID_TOOL => SID_DRAW
+
+ Rev 1.8 24 Apr 1995 12:44:36 OM
+ Absturz bei Delete gefixt
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/ribbar/conform.cxx b/sw/source/ui/ribbar/conform.cxx
new file mode 100644
index 000000000000..0fd7e4464b22
--- /dev/null
+++ b/sw/source/ui/ribbar/conform.cxx
@@ -0,0 +1,193 @@
+/*************************************************************************
+ *
+ * $RCSfile: conform.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#ifndef _SVX_FMGLOB_HXX //autogen
+#include <svx/fmglob.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+#ifndef _SVX_FMSHELL_HXX //autogen
+#include <svx/fmshell.hxx>
+#endif
+
+
+#include "view.hxx"
+#include "edtwin.hxx"
+#include "wrtsh.hxx"
+#include "drawbase.hxx"
+#include "conform.hxx"
+
+extern BOOL bNoInterrupt; // in mainwn.cxx
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+
+ConstFormControl::ConstFormControl(SwWrtShell* pWrtShell, SwEditWin* pEditWin, SwView* pSwView) :
+ SwDrawBase(pWrtShell, pEditWin, pSwView)
+{
+ bInsForm = TRUE;
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+
+BOOL ConstFormControl::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FALSE;
+
+ SdrView *pSdrView = pSh->GetDrawView();
+
+ pSdrView->SetOrtho(rMEvt.IsShift());
+ pSdrView->SetAngleSnapEnabled(rMEvt.IsShift());
+
+ if (rMEvt.IsMod2())
+ {
+ pSdrView->SetCreate1stPointAsCenter(TRUE);
+ pSdrView->SetResizeAtCenter(TRUE);
+ }
+ else
+ {
+ pSdrView->SetCreate1stPointAsCenter(FALSE);
+ pSdrView->SetResizeAtCenter(FALSE);
+ }
+
+ SdrViewEvent aVEvt;
+ SdrHitKind eHit = pSdrView->PickAnything(rMEvt, SDRMOUSEBUTTONDOWN, aVEvt);
+
+ // Nur neues Objekt, wenn nicht im Basismode (bzw reinem Selektionsmode)
+ if (rMEvt.IsLeft() && !pWin->IsDrawAction() &&
+ (eHit == SDRHIT_UNMARKEDOBJECT || eHit == SDRHIT_NONE || pSh->IsDrawCreate()))
+ {
+ bNoInterrupt = TRUE;
+ pWin->CaptureMouse();
+
+ pWin->SetPointer(Pointer(POINTER_DRAW_RECT));
+
+ aStartPos = pWin->PixelToLogic(rMEvt.GetPosPixel());
+ bReturn = pSh->BeginCreate(pWin->GetDrawMode(), FmFormInventor, aStartPos);
+
+ if (bReturn)
+ pWin->SetDrawAction(TRUE);
+ }
+ else
+ bReturn = SwDrawBase::MouseButtonDown(rMEvt);
+
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+
+void ConstFormControl::Activate(const USHORT nSlotId)
+{
+ pWin->SetDrawMode(nSlotId);
+ SwDrawBase::Activate(nSlotId);
+ pSh->GetDrawView()->SetCurrentObj(nSlotId);
+
+ pWin->SetPointer(Pointer(POINTER_DRAW_RECT));
+}
+
+/*************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.4 2000/09/18 16:06:00 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.3 1998/03/16 11:03:42 MA
+ Verbindung FormShell->DrawView immer herstellen
+
+
+ Rev 1.2 16 Mar 1998 12:03:42 MA
+ Verbindung FormShell->DrawView immer herstellen
+
+ Rev 1.1 11 Mar 1998 17:12:08 OM
+ DB-FormShell
+
+ Rev 1.0 10 Mar 1998 14:15:20 OM
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/ui/ribbar/conpoly.cxx b/sw/source/ui/ribbar/conpoly.cxx
new file mode 100644
index 000000000000..ff74bf0de29b
--- /dev/null
+++ b/sw/source/ui/ribbar/conpoly.cxx
@@ -0,0 +1,304 @@
+/*************************************************************************
+ *
+ * $RCSfile: conpoly.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVDMARK_HXX //autogen
+#include <svx/svdmark.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SVDOPATH_HXX //autogen
+#include <svx/svdopath.hxx>
+#endif
+
+#include "view.hxx"
+#include "edtwin.hxx"
+#include "wrtsh.hxx"
+#include "drawbase.hxx"
+#include "conpoly.hxx"
+
+
+/************************************************************************/
+
+#define CLOSE_PIXDIST 5 // Pixelabstand, ab dem geschlossen wird
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+
+
+ConstPolygon::ConstPolygon(SwWrtShell* pWrtShell, SwEditWin* pEditWin, SwView* pSwView) :
+ SwDrawBase(pWrtShell, pEditWin, pSwView)
+{
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+
+
+BOOL ConstPolygon::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ BOOL bReturn;
+
+ if ((bReturn = SwDrawBase::MouseButtonDown(rMEvt)) == TRUE)
+ aLastPos = rMEvt.GetPosPixel();
+
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* MouseMove-event
+|*
+\************************************************************************/
+
+
+
+BOOL ConstPolygon::MouseMove(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FALSE;
+
+ bReturn = SwDrawBase::MouseMove(rMEvt);
+
+ return bReturn;
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-event
+|*
+\************************************************************************/
+
+
+
+BOOL ConstPolygon::MouseButtonUp(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FALSE;
+
+ if (pSh->IsDrawCreate())
+ {
+ if (rMEvt.IsLeft() && rMEvt.GetClicks() == 1 &&
+ pWin->GetDrawMode() != OBJ_FREELINE)
+ {
+ if (!pSh->EndCreate(SDRCREATE_NEXTPOINT))
+ {
+ pSh->BreakCreate();
+ EnterSelectMode(rMEvt);
+ return TRUE;
+ }
+ }
+ else
+ {
+ Point aPnt(pWin->PixelToLogic(rMEvt.GetPosPixel()));
+ bReturn = SwDrawBase::MouseButtonUp(rMEvt);
+
+ if (!(bReturn && (aPnt == aStartPos || rMEvt.IsRight())))
+ {
+ SdrView *pSdrView = pSh->GetDrawView();
+
+ long nCloseDist = pWin->PixelToLogic(Size(CLOSE_PIXDIST, 0)).Width();
+ const SdrMarkList& rMarkList = pSdrView->GetMarkList();
+ if (rMarkList.GetMark(0))
+ {
+ SdrPathObj* pPathObj = (SdrPathObj *)rMarkList.GetMark(0)->GetObj();
+ const XPolyPolygon& rXPP = pPathObj->GetPathPoly();
+ if (rXPP.Count() == 1)
+ {
+ USHORT nPntMax = rXPP[0].GetPointCount() - 1;
+ Point aDiff = rXPP[0][nPntMax] - rXPP[0][0];
+ long nSqDist = aDiff.X() * aDiff.X() + aDiff.Y() * aDiff.Y();
+ nCloseDist *= nCloseDist;
+
+ if (nSqDist <= nCloseDist && !pPathObj->IsClosed())
+ pPathObj->ToggleClosed(0);
+ }
+ }
+ }
+ }
+ }
+ else
+ bReturn = SwDrawBase::MouseButtonUp(rMEvt);
+
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+
+
+void ConstPolygon::Activate(const USHORT nSlotId)
+{
+ switch (nSlotId)
+ {
+ case SID_DRAW_POLYGON_NOFILL:
+ pWin->SetDrawMode(OBJ_PLIN);
+ break;
+
+ case SID_DRAW_BEZIER_NOFILL:
+ pWin->SetDrawMode(OBJ_PATHLINE);
+ break;
+
+ case SID_DRAW_FREELINE_NOFILL:
+ pWin->SetDrawMode(OBJ_FREELINE);
+ break;
+
+ default:
+ break;
+ }
+
+ SwDrawBase::Activate(nSlotId);
+}
+
+/*************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.29 2000/09/18 16:06:01 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.28 1997/11/28 19:14:18 MA
+ includes
+
+
+ Rev 1.27 28 Nov 1997 20:14:18 MA
+ includes
+
+ Rev 1.26 24 Nov 1997 14:53:58 MA
+ includes
+
+ Rev 1.25 03 Nov 1997 13:24:20 MA
+ precomp entfernt
+
+ Rev 1.24 05 Sep 1997 11:57:52 MH
+ chg: header
+
+ Rev 1.23 13 Aug 1997 12:18:56 OM
+ #42383# Selektion von Punkten im Konstruktionsmode
+
+ Rev 1.22 20 Mar 1997 12:14:28 OM
+ GPF in Beziermode behoben
+
+ Rev 1.21 30 Jan 1997 11:48:08 OM
+ Freihandzeichnen
+
+ Rev 1.20 29 Jan 1997 11:22:08 OM
+ Freihandzeichnen
+
+ Rev 1.19 23 Jan 1997 16:07:06 OM
+ Neuer Polygon Zeichenmode
+
+ Rev 1.18 16 Jan 1997 12:35:58 OM
+ Neuer Objekttyp: Bezier
+
+ Rev 1.17 28 Aug 1996 13:39:32 OS
+ includes
+
+ Rev 1.16 14 Aug 1996 11:31:00 JP
+ svdraw.hxx entfernt
+
+ Rev 1.15 24 Nov 1995 16:58:06 OM
+ PCH->PRECOMPILED
+
+ Rev 1.14 15 Nov 1995 18:35:28 OM
+ Virtuelle Fkt rausgeworfen
+
+ Rev 1.13 10 Aug 1995 18:15:00 OM
+ CreateMode geaendert
+
+ Rev 1.12 09 Aug 1995 16:53:02 MA
+ drawing-undo-header rein
+
+ Rev 1.11 20 Jul 1995 19:26:38 OM
+ Umbenamsung obj_pathline->obj_plin
+
+ Rev 1.10 06 May 1995 20:38:04 OM
+ Polygonerzeugung bei Einfachklick
+
+ Rev 1.9 21 Apr 1995 02:18:44 ER
+ ToggleClosed erwartet jetzt ein long und kein Size() mehr
+
+ Rev 1.8 06 Apr 1995 20:15:56 OM
+ Polygon beenden mit rechter Maustaste
+
+ Rev 1.7 21 Mar 1995 00:47:02 ER
+ _svdorect_hxx definiert => _svdcapt_hxx definieren
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/ribbar/conrect.cxx b/sw/source/ui/ribbar/conrect.cxx
new file mode 100644
index 000000000000..cba447d61d26
--- /dev/null
+++ b/sw/source/ui/ribbar/conrect.cxx
@@ -0,0 +1,338 @@
+/*************************************************************************
+ *
+ * $RCSfile: conrect.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef sdtacitm_hxx //autogen
+#include <svx/sdtacitm.hxx>
+#endif
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+#ifndef _SDTAGITM_HXX //autogen
+#include <svx/sdtagitm.hxx>
+#endif
+#ifndef SDTAKITM_HXX //autogen
+#include <svx/sdtakitm.hxx>
+#endif
+#ifndef _SDTADITM_HXX //autogen
+#include <svx/sdtaditm.hxx>
+#endif
+#ifndef _SDTAAITM_HXX //autogen
+#include <svx/sdtaaitm.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+
+#include "cmdid.h"
+#include "view.hxx"
+#include "edtwin.hxx"
+#include "wrtsh.hxx"
+#include "viewopt.hxx"
+#include "drawbase.hxx"
+#include "conrect.hxx"
+
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+
+
+ConstRectangle::ConstRectangle(SwWrtShell* pWrtShell, SwEditWin* pEditWin, SwView* pSwView) :
+ SwDrawBase(pWrtShell, pEditWin, pSwView),
+ bMarquee(FALSE)
+{
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+
+
+BOOL ConstRectangle::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ BOOL bReturn;
+
+ if ((bReturn = SwDrawBase::MouseButtonDown(rMEvt)) == TRUE
+ && pWin->GetDrawMode() == OBJ_CAPTION)
+ {
+ pView->NoRotate();
+ if (pView->IsDrawSelMode())
+ {
+ pView->FlipDrawSelMode();
+ pSh->GetDrawView()->SetFrameDragSingles(pView->IsDrawSelMode());
+ }
+ }
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-event
+|*
+\************************************************************************/
+
+
+
+BOOL ConstRectangle::MouseButtonUp(const MouseEvent& rMEvt)
+{
+ Point aPnt(pWin->PixelToLogic(rMEvt.GetPosPixel()));
+
+ BOOL bRet = SwDrawBase::MouseButtonUp(rMEvt);
+
+ if (bRet && pWin->GetDrawMode() == OBJ_TEXT)
+ {
+ SdrView *pSdrView = pSh->GetDrawView();
+
+ if (bMarquee)
+ {
+ BOOL bNewMode = (::GetHtmlMode(pView->GetDocShell()) & HTMLMODE_ON) != 0;
+ pSh->ChgAnchor(FLY_IN_CNTNT);
+
+ const SdrMarkList& rMarkList = pSdrView->GetMarkList();
+
+ if (rMarkList.GetMark(0))
+ {
+ SdrObject* pObj = rMarkList.GetMark(0)->GetObj();
+
+ // die fuer das Scrollen benoetigten Attribute setzen
+ SfxItemSet aItemSet( pSdrView->GetModel()->GetItemPool(),
+ SDRATTR_MISC_FIRST, SDRATTR_MISC_LAST);
+
+ aItemSet.Put( SdrTextAutoGrowWidthItem( FALSE ) );
+ aItemSet.Put( SdrTextAutoGrowHeightItem( FALSE ) );
+ aItemSet.Put( SdrTextAniKindItem( SDRTEXTANI_SCROLL ) );
+ aItemSet.Put( SdrTextAniDirectionItem( SDRTEXTANI_LEFT ) );
+ aItemSet.Put( SdrTextAniCountItem( 0 ) );
+ aItemSet.Put( SdrTextAniAmountItem((INT16)pWin->PixelToLogic(Size(2,1)).Width()) );
+ pObj->SetAttributes(aItemSet, FALSE);
+ }
+ }
+
+ pView->LeaveDrawCreate(); // In Selektionsmode wechseln
+
+ pSh->GetView().GetViewFrame()->GetBindings().Invalidate(SID_INSERT_DRAW);
+
+ SdrPageView* pPV = pSdrView->GetPageViewPvNum(0);
+ const SdrMarkList& rMarkList = pSdrView->GetMarkList();
+ if (rMarkList.GetMark(0))
+ {
+ SdrObject* pObj = rMarkList.GetMark(0)->GetObj();
+
+ pView->BeginTextEdit(pObj, pPV, pWin, TRUE);
+ }
+ }
+ return bRet;
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+
+
+void ConstRectangle::Activate(const USHORT nSlotId)
+{
+ bMarquee = FALSE;
+
+ switch (nSlotId)
+ {
+ case SID_DRAW_LINE:
+ pWin->SetDrawMode(OBJ_LINE);
+ break;
+ case SID_DRAW_RECT:
+ pWin->SetDrawMode(OBJ_RECT);
+ break;
+ case SID_DRAW_ELLIPSE:
+ pWin->SetDrawMode(OBJ_CIRC);
+ break;
+ case SID_DRAW_TEXT_MARQUEE:
+ bMarquee = TRUE;
+ case SID_DRAW_TEXT:
+ pWin->SetDrawMode(OBJ_TEXT);
+ break;
+
+ case SID_DRAW_CAPTION:
+ pWin->SetDrawMode(OBJ_CAPTION);
+ break;
+ default:
+ pWin->SetDrawMode(OBJ_NONE);
+ break;
+ }
+
+ SwDrawBase::Activate(nSlotId);
+}
+
+/*************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.45 2000/09/18 16:06:01 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.44 2000/09/07 15:59:26 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.43 1998/06/09 13:34:00 OM
+ VC-Controls entfernt
+
+
+ Rev 1.42 09 Jun 1998 15:34:00 OM
+ VC-Controls entfernt
+
+ Rev 1.41 28 Nov 1997 20:05:50 MA
+ includes
+
+ Rev 1.40 24 Nov 1997 14:53:58 MA
+ includes
+
+ Rev 1.39 18 Nov 1997 10:35:12 OM
+ Lauftext nur im HTML-Mode zeichengebunden einfuegen
+
+ Rev 1.38 03 Nov 1997 13:24:22 MA
+ precomp entfernt
+
+ Rev 1.37 05 Sep 1997 11:55:04 MH
+ chg: header
+
+ Rev 1.36 07 Apr 1997 13:39:28 MH
+ chg: header
+
+ Rev 1.35 07 Mar 1997 17:13:38 OM
+ Lauftext unendlich oft durchlaufen
+
+ Rev 1.34 07 Mar 1997 17:05:12 OM
+ Lauftext unendlich oft durchlaufen
+
+ Rev 1.33 24 Feb 1997 16:55:48 OM
+ Lauftext-Objekt sofort editieren
+
+ Rev 1.32 14 Feb 1997 14:00:34 OM
+ lauftextobjekt zeichengebunden
+
+ Rev 1.31 11 Feb 1997 14:03:32 OM
+ Lauftext im Webmode
+
+ Rev 1.30 10 Feb 1997 17:29:42 OM
+ Lauftext
+
+ Rev 1.29 09 Sep 1996 21:13:44 MH
+ Umstellungen wg. internal Compiler Errors
+
+ Rev 1.28 28 Aug 1996 13:39:22 OS
+ includes
+
+ Rev 1.27 14 Aug 1996 11:31:00 JP
+ svdraw.hxx entfernt
+
+ Rev 1.26 07 Aug 1996 14:59:24 JP
+ Umstellung fuer Upd. 330
+
+ Rev 1.25 24 Nov 1995 16:58:04 OM
+ PCH->PRECOMPILED
+
+ Rev 1.24 15 Nov 1995 18:35:28 OM
+ Virtuelle Fkt rausgeworfen
+
+ Rev 1.23 14 Nov 1995 17:36:56 OM
+ Cast entfernt
+
+ Rev 1.22 08 Nov 1995 15:29:48 OM
+ Invalidate-Reihenfolge geaendert
+
+ Rev 1.21 08 Nov 1995 14:15:50 OS
+ Change => Set
+
+ Rev 1.20 08 Nov 1995 10:35:42 OM
+ Invalidate optimiert
+
+ Rev 1.19 26 Oct 1995 16:41:36 OM
+ Leere Textobjekte beim Verlassen loeschen
+
+ Rev 1.18 08 Oct 1995 18:06:46 OM
+ Textobjekt nach einfuegen oeffnen
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/ribbar/drawbase.cxx b/sw/source/ui/ribbar/drawbase.cxx
new file mode 100644
index 000000000000..4710570f456d
--- /dev/null
+++ b/sw/source/ui/ribbar/drawbase.cxx
@@ -0,0 +1,873 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawbase.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+#include <hintids.hxx>
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+#ifndef _SFXPTITEM_HXX //autogen
+#include <svtools/ptitem.hxx>
+#endif
+#ifndef _SVX_SIZEITEM_HXX //autogen
+#include <svx/sizeitem.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _FMTCLDS_HXX
+#include <fmtclds.hxx>
+#endif
+#ifndef _FRMFMT_HXX //autogen
+#include <frmfmt.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+
+#include "cmdid.h"
+#include "basesh.hxx"
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "drawbase.hxx"
+#include "edtwin.hxx"
+#include "caption.hxx"
+#include "swundo.hxx"
+
+extern BOOL bNoInterrupt; // in mainwn.cxx
+
+#define MINMOVE ((USHORT)pSh->GetOut()->PixelToLogic(Size(pSh->GetDrawView()->GetMarkHdlSizePixel()/2,0)).Width())
+
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+
+SwDrawBase::SwDrawBase(SwWrtShell* pSwWrtShell, SwEditWin* pWindow, SwView* pSwView) :
+ pSh(pSwWrtShell),
+ pWin(pWindow),
+ pView(pSwView),
+ bInsForm(FALSE),
+ bCreateObj(TRUE)
+{
+ if ( !pSh->HasDrawView() )
+ pSh->MakeDrawView();
+}
+
+/*************************************************************************
+|*
+|* Destruktor
+|*
+\************************************************************************/
+
+__EXPORT SwDrawBase::~SwDrawBase()
+{
+ if (pView->GetWrtShellPtr()) // Im view-Dtor koennte die wrtsh bereits geloescht worden sein...
+ pSh->GetDrawView()->SetEditMode(TRUE);
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+
+BOOL SwDrawBase::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FALSE;
+
+ SdrView *pSdrView = pSh->GetDrawView();
+
+ pSdrView->SetOrtho(rMEvt.IsShift());
+ pSdrView->SetAngleSnapEnabled(rMEvt.IsShift());
+
+ if (rMEvt.IsMod2())
+ {
+ pSdrView->SetCreate1stPointAsCenter(TRUE);
+ pSdrView->SetResizeAtCenter(TRUE);
+ }
+ else
+ {
+ pSdrView->SetCreate1stPointAsCenter(FALSE);
+ pSdrView->SetResizeAtCenter(FALSE);
+ }
+
+ SdrViewEvent aVEvt;
+ SdrHitKind eHit = pSdrView->PickAnything(rMEvt, SDRMOUSEBUTTONDOWN, aVEvt);
+
+ // Nur neues Objekt, wenn nicht im Basismode (bzw reinem Selektionsmode)
+ if (rMEvt.IsLeft() && !pWin->IsDrawAction())
+ {
+ if (IsCreateObj() && (eHit == SDRHIT_UNMARKEDOBJECT || eHit == SDRHIT_NONE || pSh->IsDrawCreate()))
+ {
+ bNoInterrupt = TRUE;
+ pWin->CaptureMouse();
+
+ aStartPos = pWin->PixelToLogic(rMEvt.GetPosPixel());
+
+ bReturn = pSh->BeginCreate(pWin->GetDrawMode(), aStartPos);
+
+ SetDrawPointer();
+
+ if ( bReturn )
+ pWin->SetDrawAction(TRUE);
+ }
+ else if (!pSdrView->IsAction())
+ {
+ /**********************************************************************
+ * BEZIER-EDITOR
+ **********************************************************************/
+ pWin->CaptureMouse();
+ aStartPos = pWin->PixelToLogic(rMEvt.GetPosPixel());
+ UINT16 nEditMode = pWin->GetBezierMode();
+
+ if (eHit == SDRHIT_HANDLE && aVEvt.pHdl->GetKind() == HDL_BWGT)
+ {
+ /******************************************************************
+ * Handle draggen
+ ******************************************************************/
+ bNoInterrupt = TRUE;
+ bReturn = pSdrView->BegDragObj(aStartPos, (OutputDevice*) NULL, aVEvt.pHdl);
+ pWin->SetDrawAction(TRUE);
+ }
+ else if (eHit == SDRHIT_MARKEDOBJECT && nEditMode == SID_BEZIER_INSERT)
+ {
+ /******************************************************************
+ * Klebepunkt einfuegen
+ ******************************************************************/
+ bNoInterrupt = TRUE;
+ bReturn = pSdrView->BegInsObjPoint(aStartPos, rMEvt.IsMod1(), NULL, 0);
+ pWin->SetDrawAction(TRUE);
+ }
+ else if (eHit == SDRHIT_MARKEDOBJECT && rMEvt.IsMod1())
+ {
+ /******************************************************************
+ * Klebepunkt selektieren
+ ******************************************************************/
+ if (!rMEvt.IsShift())
+ pSdrView->UnmarkAllPoints();
+
+ bReturn = pSdrView->BegMarkPoints(aStartPos, (OutputDevice*) NULL);
+ pWin->SetDrawAction(TRUE);
+ }
+ else if (eHit == SDRHIT_MARKEDOBJECT && !rMEvt.IsShift() && !rMEvt.IsMod2())
+ {
+ /******************************************************************
+ * Objekt verschieben
+ ******************************************************************/
+ return FALSE;
+ }
+ else if (eHit == SDRHIT_HANDLE)
+ {
+ /******************************************************************
+ * Klebepunkt selektieren
+ ******************************************************************/
+ if (pSdrView->HasMarkablePoints() && (!pSdrView->IsPointMarked(*aVEvt.pHdl) || rMEvt.IsShift()))
+ {
+ SdrHdl* pHdl = NULL;
+
+ if (!rMEvt.IsShift())
+ {
+ pSdrView->UnmarkAllPoints();
+ pHdl = pSdrView->HitHandle(aStartPos, *pWin);
+ }
+ else
+ {
+ if (pSdrView->IsPointMarked(*aVEvt.pHdl))
+ {
+ bReturn = pSdrView->UnmarkPoint(*aVEvt.pHdl);
+ pHdl = NULL;
+ }
+ else
+ {
+ pHdl = pSdrView->HitHandle(aStartPos, *pWin);
+ }
+ }
+
+ if (pHdl)
+ {
+ bNoInterrupt = TRUE;
+ pSdrView->MarkPoint(*pHdl);
+// bReturn = pSdrView->BegDragObj(aStartPos, (OutputDevice*) NULL, pHdl);
+// pWin->SetDrawAction(TRUE);
+ }
+ }
+ }
+ else
+ {
+ /******************************************************************
+ * Objekt selektieren oder draggen
+ ******************************************************************/
+ if (pSh->IsObjSelectable(aStartPos) && eHit == SDRHIT_UNMARKEDOBJECT)
+ {
+ if (pSdrView->HasMarkablePoints())
+ pSdrView->UnmarkAllPoints();
+
+ bNoInterrupt = FALSE;
+ // Drag im edtwin verwenden
+ return FALSE;
+ }
+
+ bNoInterrupt = TRUE;
+
+ if (pSh->IsObjSelected())
+ {
+ if (!rMEvt.IsShift())
+ {
+ if (!pSdrView->HasMarkablePoints())
+ pSh->SelectObj(Point(LONG_MAX, LONG_MAX)); // Alles deselektieren
+ else
+ pSdrView->UnmarkAllPoints();
+ }
+ }
+ BOOL bMarked = FALSE;
+
+ if (!pSh->IsSelFrmMode())
+ pSh->EnterSelFrmMode(NULL);
+
+ if ((bReturn = pSh->BeginMark(aStartPos)) == TRUE)
+ pWin->SetDrawAction(TRUE);
+
+ SetDrawPointer();
+ }
+ }
+ }
+ return bReturn;
+}
+
+/*************************************************************************
+|*
+|* MouseMove-event
+|*
+\************************************************************************/
+
+
+BOOL SwDrawBase::MouseMove(const MouseEvent& rMEvt)
+{
+ SdrView *pSdrView = pSh->GetDrawView();
+ Point aPnt(pWin->PixelToLogic(rMEvt.GetPosPixel()));
+ BOOL bRet = FALSE;
+
+ if (IsCreateObj() && !pWin->IsDrawSelMode() && pSdrView->IsCreateObj())
+ {
+ pSdrView->SetOrtho(rMEvt.IsShift());
+ pSdrView->SetAngleSnapEnabled(rMEvt.IsShift());
+
+ pSh->MoveCreate(aPnt);
+ bRet = TRUE;
+ }
+ else if (pSdrView->IsAction() || pSdrView->IsInsObjPoint() || pSdrView->IsMarkPoints())
+ {
+ pSh->MoveMark(aPnt);
+ bRet = TRUE;
+ }
+
+ return (bRet);
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-event
+|*
+\************************************************************************/
+
+
+BOOL SwDrawBase::MouseButtonUp(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FALSE;
+ BOOL bCheckShell = FALSE;
+ BOOL bAutoCap = FALSE;
+
+ Point aPnt(pWin->PixelToLogic(rMEvt.GetPosPixel()));
+
+ if (IsCreateObj() && pSh->IsDrawCreate() && !pWin->IsDrawSelMode())
+ {
+ if (aPnt == aStartPos || rMEvt.IsRight())
+ {
+ pSh->BreakCreate();
+ pView->LeaveDrawCreate();
+ }
+ else
+ {
+ if (pWin->GetDrawMode() == OBJ_NONE)
+ pSh->StartUndo(UNDO_INSERT);
+
+ pSh->EndCreate(SDRCREATE_FORCEEND);
+ if (pWin->GetDrawMode() == OBJ_NONE) // Textrahmen eingefuegt
+ {
+ bAutoCap = TRUE;
+ if(pWin->GetFrmColCount() > 1)
+ {
+ SfxItemSet aSet(pView->GetPool(),RES_COL,RES_COL);
+ SwFmtCol aCol((const SwFmtCol&)aSet.Get(RES_COL));
+ aCol.Init(pWin->GetFrmColCount(), aCol.GetGutterWidth(), aCol.GetWishWidth());
+ aSet.Put(aCol);
+ // Vorlagen-AutoUpdate
+ SwFrmFmt* pFmt = pSh->GetCurFrmFmt();
+ if(pFmt && pFmt->IsAutoUpdateFmt())
+ pSh->AutoUpdateFrame(pFmt, aSet);
+ else
+ pSh->SetFlyFrmAttr( aSet );
+ }
+ }
+ if (pWin->GetDrawMode() == OBJ_NONE)
+ pSh->EndUndo(UNDO_INSERT);
+ }
+
+ bReturn = TRUE;
+
+ EnterSelectMode(rMEvt);
+ }
+ else
+ {
+ SdrView *pSdrView = pSh->GetDrawView();
+
+ if (!pSdrView->HasMarkablePoints())
+ {
+ /**********************************************************************
+ * KEIN BEZIER_EDITOR
+ **********************************************************************/
+ if ((pSh->GetDrawView()->IsMarkObj() || pSh->GetDrawView()->IsMarkPoints())
+ && rMEvt.IsLeft())
+ {
+ bReturn = pSh->EndMark();
+
+ pWin->SetDrawAction(FALSE);
+
+ if (aPnt == aStartPos && pSh->IsObjSelectable(aPnt))
+ {
+ pSh->SelectObj(aPnt, rMEvt.IsShift() && pSh->IsSelFrmMode());
+
+ if (!pSh->IsObjSelected())
+ {
+ pView->LeaveDrawCreate(); // In Selektionsmode wechseln
+
+ pSh->GetView().GetViewFrame()->GetBindings().Invalidate(SID_INSERT_DRAW);
+
+ if (pSh->IsSelFrmMode())
+ pSh->LeaveSelFrmMode();
+ }
+ pView->NoRotate();
+
+ bCheckShell = TRUE; // ggf BezierShell anwerfen
+ }
+ else if (!pSh->IsObjSelected() && !pWin->IsDrawAction())
+ {
+ if (pSh->IsObjSelectable(aPnt))
+ pSh->SelectObj(aPnt, rMEvt.IsShift() && pSh->IsSelFrmMode());
+ else
+ {
+ pView->LeaveDrawCreate();
+ if (pSh->IsSelFrmMode())
+ pSh->LeaveSelFrmMode();
+ }
+ pView->NoRotate();
+
+ bReturn = TRUE;
+ }
+ }
+ }
+ else
+ {
+ /**********************************************************************
+ * BEZIER_EDITOR
+ **********************************************************************/
+ if ( pSdrView->IsAction() )
+ {
+ if ( pSdrView->IsInsObjPoint() )
+ bReturn = pSdrView->EndInsObjPoint(SDRCREATE_FORCEEND);
+ else if (pSdrView->IsMarkPoints() )
+ bReturn = pSdrView->EndMarkPoints();
+ else
+ {
+ pSdrView->EndAction();
+ bReturn = TRUE;
+ }
+ pWin->SetDrawAction(FALSE);
+
+ if (aPnt == aStartPos)
+ {
+ if (!pSh->IsObjSelectable(aPnt))
+ pSh->SelectObj(Point(LONG_MAX, LONG_MAX));
+ else if (!bReturn)
+ {
+ if (!rMEvt.IsShift())
+ pSdrView->UnmarkAllPoints();
+ pSh->SelectObj(aPnt, rMEvt.IsShift() && pSh->IsSelFrmMode());
+ }
+
+ if (!pSh->IsObjSelected())
+ {
+ pView->LeaveDrawCreate(); // In Selektionsmode wechseln
+
+ pSh->GetView().GetViewFrame()->GetBindings().Invalidate(SID_INSERT_DRAW);
+
+ if (pSh->IsSelFrmMode())
+ pSh->LeaveSelFrmMode();
+ }
+ pView->NoRotate();
+
+ bCheckShell = TRUE; // ggf BezierShell anwerfen
+ }
+ }
+
+ SetDrawPointer();
+
+ if (!pSh->IsObjSelected() && !pWin->IsDrawAction())
+ {
+ pView->LeaveDrawCreate();
+ if (pSh->IsSelFrmMode())
+ pSh->LeaveSelFrmMode();
+
+ pView->NoRotate();
+ bReturn = TRUE;
+ }
+ }
+ }
+
+ if (bCheckShell)
+ pView->AttrChangedNotify( pSh ); // ggf BezierShell anwerfen
+
+ //!!!!!!!!!! Achtung Suizid !!!!!!!!!!! Sollte alles mal erneuert werden
+ if ( bAutoCap )
+ pView->AutoCaption(FRAME_CAP); //Kann derzeit nur FRAME sein, sonst auf
+ //enums umstellen
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+
+void SwDrawBase::Activate(const USHORT nSlotId)
+{
+ SdrView *pSdrView = pSh->GetDrawView();
+
+ pSdrView->SetCurrentObj(pWin->GetDrawMode());
+ pSdrView->SetEditMode(FALSE);
+
+ SetDrawPointer();
+ pSh->NoEdit();
+}
+
+/*************************************************************************
+|*
+|* Function deaktivieren
+|*
+\************************************************************************/
+
+
+void __EXPORT SwDrawBase::Deactivate()
+{
+ SdrView *pSdrView = pSh->GetDrawView();
+ pSdrView->SetOrtho(FALSE);
+ pSdrView->SetAngleSnapEnabled(FALSE);
+
+ if (pWin->IsDrawAction() && pSh->IsDrawCreate())
+ pSh->BreakCreate();
+
+ pWin->SetDrawAction(FALSE);
+
+ pWin->ReleaseMouse();
+ bNoInterrupt = FALSE;
+
+// if(!pSh->IsObjSelected())
+// pSh->Edit();
+
+ if(pWin->GetApplyTemplate())
+ pWin->SetApplyTemplate(SwApplyTemplate());
+ pSh->GetView().GetViewFrame()->GetBindings().Invalidate(SID_INSERT_DRAW);
+}
+
+/*************************************************************************
+|*
+|* Tastaturereignisse bearbeiten
+|*
+|* Wird ein KeyEvent bearbeitet, so ist der Return-Wert TRUE, andernfalls
+|* FALSE.
+|*
+\************************************************************************/
+
+
+BOOL SwDrawBase::KeyInput(const KeyEvent& rKEvt)
+{
+ BOOL bReturn = FALSE;
+ USHORT nCode = rKEvt.GetKeyCode().GetCode();
+
+ switch (nCode)
+ {
+ case KEY_ESCAPE:
+ {
+ if (pWin->IsDrawAction())
+ {
+ BreakCreate();
+ pView->LeaveDrawCreate();
+ }
+
+ bReturn = TRUE;
+ }
+ break;
+
+ case KEY_DELETE:
+ {
+ pSh->DelSelectedObj();
+ bReturn = TRUE;
+ }
+ break;
+
+ case KEY_UP:
+ case KEY_DOWN:
+ case KEY_LEFT:
+ case KEY_RIGHT:
+ {
+ SdrView *pSdrView = pSh->GetDrawView();
+
+ if (!pSdrView->IsTextEdit())
+ {
+ long nX = 0;
+ long nY = 0;
+
+ if (nCode == KEY_UP)
+ {
+ // Scroll nach oben
+ nX = 0;
+ nY =-1;
+ }
+ else if (nCode == KEY_DOWN)
+ {
+ // Scroll nach unten
+ nX = 0;
+ nY = 1;
+ }
+ else if (nCode == KEY_LEFT)
+ {
+ // Scroll nach links
+ nX =-1;
+ nY = 0;
+ }
+ else if (nCode == KEY_RIGHT)
+ {
+ // Scroll nach rechts
+ nX = 1;
+ nY = 0;
+ }
+
+ if (pSdrView->HasMarkedObj() && rKEvt.GetKeyCode().IsMod2())
+ {
+ // Objekte verschieben
+ nX *= 100;
+ nY *= 100;
+ pSdrView->MoveAllMarked(Size(nX, nY));
+ }
+
+ bReturn = TRUE;
+ }
+ }
+ break;
+ }
+
+ return (bReturn);
+}
+
+
+/*************************************************************************
+|*
+|* Tastaturereignisse bearbeiten
+|*
+|* Wird ein KeyEvent bearbeitet, so ist der Return-Wert TRUE, andernfalls
+|* FALSE.
+|*
+\************************************************************************/
+
+
+void SwDrawBase::BreakCreate()
+{
+ pSh->BreakCreate();
+ pWin->SetDrawAction(FALSE);
+ pWin->ReleaseMouse();
+
+ Deactivate();
+// pView->LeaveDrawCreate();
+}
+
+/*************************************************************************
+|*
+|* Mauspointer umschalten
+|*
+\************************************************************************/
+
+
+void SwDrawBase::SetDrawPointer()
+{
+ SdrView *pSdrView = pSh->GetDrawView();
+#ifdef VCL
+ Point aPnt(pWin->OutputToScreenPixel(pWin->GetPointerPosPixel()));
+#else
+ Point aPnt = Pointer::GetPosPixel();
+#endif
+ aPnt = pWin->PixelToLogic(pWin->ScreenToOutputPixel(aPnt));
+ const Pointer aPointTyp = pSdrView->GetPreferedPointer(aPnt, pSh->GetOut());
+ const Pointer aDrawPt(aPointTyp);
+ pWin->SetPointer(aDrawPt);
+}
+
+/*************************************************************************
+|*
+|* Ggf in Selektionsmode wechseln
+|*
+\************************************************************************/
+
+void SwDrawBase::EnterSelectMode(const MouseEvent& rMEvt)
+{
+ pWin->SetDrawAction(FALSE);
+
+ if (!pSh->IsObjSelected() && !pWin->IsDrawAction())
+ {
+ Point aPnt(pWin->PixelToLogic(rMEvt.GetPosPixel()));
+
+ if (pSh->IsObjSelectable(aPnt))
+ {
+ pSh->SelectObj(aPnt);
+ if (rMEvt.GetModifier() == KEY_SHIFT || !pSh->IsObjSelected())
+ {
+ pView->LeaveDrawCreate(); // In Selektionsmode wechseln
+
+ pSh->GetView().GetViewFrame()->GetBindings().Invalidate(SID_INSERT_DRAW);
+ }
+ }
+ else
+ {
+ pView->LeaveDrawCreate();
+ if (pSh->IsSelFrmMode())
+ pSh->LeaveSelFrmMode();
+ }
+ pView->NoRotate();
+ }
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.80 2000/09/18 16:06:01 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.79 2000/09/07 15:59:27 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.78 2000/05/10 11:54:15 os
+ Basic API removed
+
+ Revision 1.77 1999/05/27 11:04:40 OS
+ Einf?gen/Bearbeiten von Spalten ueberarbeitet
+
+
+ Rev 1.76 27 May 1999 13:04:40 OS
+ Einf?gen/Bearbeiten von Spalten ueberarbeitet
+
+ Rev 1.75 11 Mar 1999 11:31:22 MA
+ #63192# mit Suizid fertig werden
+
+ Rev 1.74 16 Nov 1998 17:18:52 OM
+ #58158# Beschriftung fuer weiter OLE-Objekte
+
+ Rev 1.73 06 Nov 1998 17:05:04 OM
+ #58158# Automatische Beschriftung
+
+ Rev 1.72 09 Sep 1998 12:14:46 OM
+ #56223# Kein GPF bei Klick in Seitenrand
+
+ Rev 1.71 22 Jul 1998 16:06:00 TJ
+ add: header wg. int comp. error
+
+ Rev 1.70 09 Jun 1998 15:34:00 OM
+ VC-Controls entfernt
+
+ Rev 1.69 11 Mar 1998 17:12:08 OM
+ DB-FormShell
+
+ Rev 1.68 28 Nov 1997 20:16:46 MA
+ includes
+
+ Rev 1.67 24 Nov 1997 14:54:00 MA
+ includes
+
+ Rev 1.66 18 Sep 1997 13:59:46 OS
+ Pointer::GetPosPixel fuer VCL ersetzt
+
+ Rev 1.65 12 Sep 1997 10:36:42 OS
+ ITEMID_* definiert
+
+ Rev 1.64 04 Sep 1997 17:14:02 MA
+ includes
+
+ Rev 1.63 01 Sep 1997 13:14:38 OS
+ DLL-Umstellung
+
+ Rev 1.62 13 Aug 1997 12:19:54 OM
+ #42383# Selektion von Punkten im Konstruktionsmode
+
+ Rev 1.61 13 Aug 1997 12:18:56 OM
+ #42383# Selektion von Punkten im Konstruktionsmode
+
+ Rev 1.60 09 Aug 1997 13:33:42 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.59 30 Jul 1997 18:40:48 HJS
+ includes
+
+ Rev 1.58 07 Apr 1997 13:40:24 MH
+ chg: header
+
+ Rev 1.57 20 Mar 1997 11:33:46 OM
+ Insert und CreateMode merken
+
+ Rev 1.56 24 Feb 1997 16:51:46 OS
+ ::Deactivate: Template-Pointer gfs. abschalten
+
+ Rev 1.55 04 Feb 1997 15:20:32 OM
+ Bugs in Selektionsmodi behoben
+
+ Rev 1.54 31 Jan 1997 10:58:26 OM
+ Statusupdate
+
+ Rev 1.53 30 Jan 1997 11:48:10 OM
+ Freihandzeichnen
+
+ Rev 1.52 29 Jan 1997 11:22:08 OM
+ Freihandzeichnen
+
+ Rev 1.51 23 Jan 1997 16:07:06 OM
+ Neuer Polygon Zeichenmode
+
+ Rev 1.50 22 Jan 1997 11:19:48 OM
+ Neue Shells: DrawBaseShell und DrawControlShell
+
+ Rev 1.49 16 Jan 1997 12:35:58 OM
+ Neuer Objekttyp: Bezier
+
+ Rev 1.48 13 Jan 1997 15:50:18 OM
+ Bezier-Punkte loeschen
+
+ Rev 1.47 08 Jan 1997 12:44:26 OM
+ Aenderungen fuer Bezier-Shell
+
+ Rev 1.46 27 Nov 1996 17:26:22 OM
+ Neu: SetAngleSnap
+
+ Rev 1.45 28 Aug 1996 13:39:30 OS
+ includes
+
+ Rev 1.44 14 Aug 1996 15:05:28 OM
+ Zentrisch konstruieren
+
+ Rev 1.43 14 Aug 1996 11:31:00 JP
+ svdraw.hxx entfernt
+
+ Rev 1.42 09 Aug 1996 14:33:20 OM
+ #29784# GPF im Dtor behoben
+
+ Rev 1.41 07 Mar 1996 14:27:30 HJS
+ 2 defines zu viel
+
+ Rev 1.40 24 Jan 1996 15:19:58 OM
+ #24663# Haenger bei Polygon im Rastermode behoben
+
+ Rev 1.39 14 Jan 1996 17:59:08 OS
+ recording Rahmen einfuegen: Position von GetAnchorObjDiff() holen
+
+ Rev 1.38 17 Dec 1995 17:28:18 OS
+ Rahmen einfuegen wird jetzt an der Textshell recorded
+
+ Rev 1.37 30 Nov 1995 13:59:52 MA
+ opt: SV304, keine Pruefung vor SetPointer
+
+ Rev 1.36 24 Nov 1995 16:58:04 OM
+ PCH->PRECOMPILED
+
+ Rev 1.35 23 Nov 1995 14:29:00 MA
+ chg: GetObjAnchorDiff(), GetObjAbsPos()
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/ribbar/dselect.cxx b/sw/source/ui/ribbar/dselect.cxx
new file mode 100644
index 000000000000..d82b857badb9
--- /dev/null
+++ b/sw/source/ui/ribbar/dselect.cxx
@@ -0,0 +1,253 @@
+/*************************************************************************
+ *
+ * $RCSfile: dselect.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+
+
+#include "view.hxx"
+#include "edtwin.hxx"
+#include "wrtsh.hxx"
+#include "cmdid.h"
+#include "drawbase.hxx"
+#include "dselect.hxx"
+
+extern BOOL bNoInterrupt; // in mainwn.cxx
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+DrawSelection::DrawSelection(SwWrtShell* pWrtShell, SwEditWin* pEditWin, SwView* pSwView) :
+ SwDrawBase(pWrtShell, pEditWin, pSwView)
+{
+ bCreateObj = FALSE;
+}
+
+/*************************************************************************
+|*
+|* Tastaturereignisse bearbeiten
+|*
+|* Wird ein KeyEvent bearbeitet, so ist der Return-Wert TRUE, andernfalls
+|* FALSE.
+|*
+\************************************************************************/
+
+BOOL DrawSelection::KeyInput(const KeyEvent& rKEvt)
+{
+ BOOL bReturn = FALSE;
+
+ switch (rKEvt.GetKeyCode().GetCode())
+ {
+ case KEY_ESCAPE:
+ {
+ if (pWin->IsDrawAction())
+ {
+ pSh->BreakMark();
+ pWin->ReleaseMouse();
+ }
+ bReturn = TRUE;
+ }
+ break;
+ }
+
+ if (!bReturn)
+ bReturn = SwDrawBase::KeyInput(rKEvt);
+
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+void DrawSelection::Activate(const USHORT nSlotId)
+{
+ pWin->SetDrawMode(SID_OBJECT_SELECT);
+ SwDrawBase::Activate(nSlotId);
+
+ pSh->GetView().GetViewFrame()->GetBindings().Invalidate(SID_INSERT_DRAW);
+}
+
+/*************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.44 2000/09/18 16:06:01 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.43 2000/09/07 15:59:27 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.42 1998/06/12 11:33:44 OM
+ Wieder SID_OBJECT_SELECT statt SID_DRAW_SELECT
+
+
+ Rev 1.41 12 Jun 1998 13:33:44 OM
+ Wieder SID_OBJECT_SELECT statt SID_DRAW_SELECT
+
+ Rev 1.40 09 Jun 1998 15:34:00 OM
+ VC-Controls entfernt
+
+ Rev 1.39 28 Nov 1997 20:15:30 MA
+ includes
+
+ Rev 1.38 24 Nov 1997 14:53:58 MA
+ includes
+
+ Rev 1.37 03 Nov 1997 13:24:22 MA
+ precomp entfernt
+
+ Rev 1.36 05 Sep 1997 12:00:44 MH
+ chg: header
+
+ Rev 1.35 13 Aug 1997 12:18:56 OM
+ #42383# Selektion von Punkten im Konstruktionsmode
+
+ Rev 1.34 11 Jul 1997 15:26:24 OM
+ Redraw-Bug behoben
+
+ Rev 1.33 07 Apr 1997 13:39:48 MH
+ chg: header
+
+ Rev 1.32 20 Mar 1997 11:34:16 OM
+ Insert und CreateMode merken
+
+ Rev 1.31 14 Mar 1997 16:36:40 OM
+ #37682# Bemassungsobjekt deselektieren
+
+ Rev 1.30 04 Feb 1997 15:20:32 OM
+ Bugs in Selektionsmodi behoben
+
+ Rev 1.29 31 Jan 1997 10:58:26 OM
+ Statusupdate
+
+ Rev 1.28 30 Jan 1997 11:48:10 OM
+ Freihandzeichnen
+
+ Rev 1.27 22 Jan 1997 11:19:50 OM
+ Neue Shells: DrawBaseShell und DrawControlShell
+
+ Rev 1.26 14 Jan 1997 15:37:06 OM
+ Bezierpunkte bearbeiten
+
+ Rev 1.25 13 Jan 1997 17:23:28 OM
+ Bezier-Punkte einfuegen
+
+ Rev 1.24 13 Jan 1997 15:50:18 OM
+ Bezier-Punkte loeschen
+
+ Rev 1.23 13 Jan 1997 10:11:54 OM
+ Selektionsmode fuer Bezier-Objekte
+
+ Rev 1.22 08 Jan 1997 12:44:26 OM
+ Aenderungen fuer Bezier-Shell
+
+ Rev 1.21 28 Aug 1996 13:39:24 OS
+ includes
+
+ Rev 1.20 16 Aug 1996 15:22:32 OM
+ #30046#Haenger bei Selektion beseitigt
+
+ Rev 1.19 14 Aug 1996 11:31:00 JP
+ svdraw.hxx entfernt
+
+ Rev 1.18 07 Mar 1996 14:27:32 HJS
+ 2 defines zu viel
+
+ Rev 1.17 24 Nov 1995 16:58:06 OM
+ PCH->PRECOMPILED
+
+ Rev 1.16 15 Nov 1995 18:35:28 OM
+ Virtuelle Fkt rausgeworfen
+
+ Rev 1.15 14 Nov 1995 17:36:56 OM
+ Cast entfernt
+
+ Rev 1.14 08 Nov 1995 15:29:48 OM
+ Invalidate-Reihenfolge geaendert
+
+ Rev 1.13 08 Nov 1995 14:15:50 OS
+ Change => Set
+
+ Rev 1.12 08 Nov 1995 10:35:42 OM
+ Invalidate optimiert
+
+ Rev 1.11 19 Oct 1995 18:30:44 OM
+ Acceleratorproblem behoben
+
+*************************************************************************/
+
diff --git a/sw/source/ui/ribbar/inputwin.cxx b/sw/source/ui/ribbar/inputwin.cxx
new file mode 100644
index 000000000000..0aafb4a53d0a
--- /dev/null
+++ b/sw/source/ui/ribbar/inputwin.cxx
@@ -0,0 +1,881 @@
+/*************************************************************************
+ *
+ * $RCSfile: inputwin.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+#ifndef _SFXIMGMGR_HXX //autogen
+#include <sfx2/imgmgr.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SVX_RULER_HXX //autogen
+#include <svx/ruler.hxx>
+#endif
+#ifndef _ZFORLIST_HXX //autogen
+#include <svtools/zforlist.hxx>
+#endif
+
+
+#include "swtypes.hxx"
+#include "cmdid.h"
+#include "swmodule.hxx"
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "calc.hxx"
+#include "inputwin.hxx"
+#include "fldbas.hxx"
+#include "fldmgr.hxx"
+#include "frmfmt.hxx"
+#include "cellatr.hxx"
+#include "edtwin.hxx"
+#include "helpid.h"
+
+// nur fuers UpdateRange - Box in dem der gestackte Cursor sthet loeschen
+#include "pam.hxx"
+#include "doc.hxx"
+
+#include "swundo.hxx"
+#include "ribbar.hrc"
+#include "inputwin.hrc"
+
+
+SFX_IMPL_POS_CHILDWINDOW( SwInputChild, FN_EDIT_FORMULA, SFX_OBJECTBAR_OBJECT )
+
+//==================================================================
+
+SwInputWindow::SwInputWindow( Window* pParent )
+ : ToolBox( pParent , SW_RES( RID_TBX_FORMULA )),
+ aEdit( this, WB_3DLOOK|WB_TABSTOP|WB_BORDER|WB_NOHIDESELECTION),
+ aPos( this, SW_RES(ED_POS)),
+ aPopMenu( SW_RES(MN_CALC_POPUP)),
+ pMgr(0),
+ pView(0),
+ pWrtShell(0),
+ aAktTableName(aEmptyStr)
+{
+ bFirst = bDoesUndo = TRUE;
+ bActive = bIsTable = bDelSel = bResetUndo = bCallUndo = FALSE;
+
+ FreeResource();
+ SFX_APP()->GetImageManager()->RegisterToolBox(this);
+
+ pView = ::GetActiveView();
+ pWrtShell = pView ? pView->GetWrtShellPtr() : 0;
+
+ InsertWindow( ED_POS, &aPos, 0, 0);
+ InsertSeparator ( 1 );
+ InsertSeparator ();
+ InsertWindow( ED_FORMULA, &aEdit);
+ SetHelpId(ED_FORMULA, HID_EDIT_FORMULA);
+
+ SfxImageManager* pManager = SFX_IMAGEMANAGER();
+ SetItemImage( FN_FORMULA_CALC, pManager->GetImage(FN_FORMULA_CALC ));
+ SetItemImage( FN_FORMULA_CANCEL, pManager->GetImage(FN_FORMULA_CANCEL ));
+ SetItemImage( FN_FORMULA_APPLY, pManager->GetImage(FN_FORMULA_APPLY ));
+
+ Size aSizeTbx = CalcWindowSizePixel();
+ Size aSize = GetSizePixel();
+ aSize.Height() = aSizeTbx.Height();
+ SetSizePixel( aSize );
+ Size aPosSize = aPos.GetSizePixel();
+ Size aEditSize = aEdit.GetSizePixel();
+ aPosSize.Height() = aEditSize.Height() = GetItemRect(FN_FORMULA_CALC).GetHeight() - 2;
+
+ Point aPosPos = aPos.GetPosPixel();
+ Point aEditPos= aEdit.GetPosPixel();
+ aPosPos.Y() = aEditPos.Y() = GetItemRect( FN_FORMULA_CALC ).TopLeft().Y() + 1;
+ aPos.SetPosSizePixel( aPosPos, aPosSize );
+ aEdit.SetPosSizePixel( aEditPos, aEditSize );
+
+ aPopMenu.SetSelectHdl(LINK( this, SwInputWindow, MenuHdl ));
+}
+
+//==================================================================
+
+__EXPORT SwInputWindow::~SwInputWindow()
+{
+ SFX_APP()->GetImageManager()->ReleaseToolBox(this);
+ //Lineale aufwecken
+ if(pView)
+ {
+ pView->GetHLineal()->SetActive( TRUE );
+ if( pView->GetVLineal())
+ pView->GetVLineal()->SetActive( TRUE );
+ }
+ if ( pMgr )
+ delete pMgr;
+ if(pWrtShell)
+ pWrtShell->EndSelTblCells();
+
+ if( bResetUndo )
+ {
+ DelBoxCntnt();
+ pWrtShell->DoUndo( bDoesUndo );
+ if(bCallUndo)
+ pWrtShell->Undo();
+ SwEditShell::SetUndoActionCount( nActionCnt );
+ }
+}
+
+//==================================================================
+
+void __EXPORT SwInputWindow::Resize()
+{
+ ToolBox::Resize();
+
+ long nWidth = GetSizePixel().Width();
+ long nLeft = aEdit.GetPosPixel().X();
+ Size aEditSize = aEdit.GetSizePixel();
+
+ aEditSize.Width() = Max( ((long)(nWidth - nLeft - 5)), (long)0 );
+ aEdit.SetSizePixel( aEditSize );
+ aEdit.Invalidate();
+}
+
+//==================================================================
+
+void SwInputWindow::Show()
+{
+ bIsTable = FALSE;
+ //Lineale anhalten
+ if(pView)
+ {
+ pView->GetHLineal()->SetActive( FALSE );
+ if( pView->GetVLineal())
+ pView->GetVLineal()->SetActive( FALSE );
+
+ DBG_ASSERT(pWrtShell, "Keine WrtShell!")
+ // Cursor in Tabelle
+ bIsTable = pWrtShell->IsCrsrInTbl() ? TRUE : FALSE;
+
+ if( bFirst )
+ pWrtShell->SelTblCells( LINK( this, SwInputWindow,
+ SelTblCellsNotify) );
+ if( bIsTable )
+ {
+ const String& rPos = pWrtShell->GetBoxNms();
+ USHORT nPos = 0;
+ short nSrch = -1;
+ while( (nPos = rPos.Search( ':',nPos + 1 ) ) != STRING_NOTFOUND )
+ nSrch = (short) nPos;
+ aPos.SetText( rPos.Copy( ++nSrch ) );
+ aAktTableName = pWrtShell->GetTableFmt()->GetName();
+ }
+ else
+ aPos.SetText(SW_RESSTR(STR_FORMULA));
+
+ // Aktuelles Feld bearbeiten
+ ASSERT(pMgr == 0, FieldManager nicht geloescht.);
+ pMgr = new SwFldMgr;
+
+ // JP 13.01.97: Formel soll immer mit einem "=" beginnen, hier
+ // also setzen
+ String sEdit( '=' );
+ if( pMgr->GetCurFld() && TYP_FORMELFLD == pMgr->GetCurTypeId() )
+ {
+ sEdit += pMgr->GetCurFldPar2();
+ }
+ else if( bFirst )
+ {
+ if( bIsTable )
+ {
+ bResetUndo = TRUE;
+ nActionCnt = SwEditShell::GetUndoActionCount();
+ SwEditShell::SetUndoActionCount( nActionCnt + 1 );
+
+ bDoesUndo = pWrtShell->DoesUndo();
+ if( !bDoesUndo )
+ pWrtShell->DoUndo( TRUE );
+
+ if( !pWrtShell->SwCrsrShell::HasSelection() )
+ {
+ pWrtShell->MoveSection( fnSectionCurr, fnSectionStart );
+ pWrtShell->SetMark();
+ pWrtShell->MoveSection( fnSectionCurr, fnSectionEnd );
+ }
+ if( pWrtShell->SwCrsrShell::HasSelection() )
+ {
+ pWrtShell->StartUndo( UNDO_DELETE );
+ pWrtShell->Delete();
+ if( 0 != pWrtShell->EndUndo( UNDO_DELETE ))
+ bCallUndo = TRUE;
+ }
+ pWrtShell->DoUndo( FALSE );
+
+ SfxItemSet aSet( pWrtShell->GetAttrPool(), RES_BOXATR_FORMULA, RES_BOXATR_FORMULA );
+ if( pWrtShell->GetTblBoxFormulaAttrs( aSet ))
+ sEdit += ((SwTblBoxFormula&)aSet.Get( RES_BOXATR_FORMULA )).GetFormula();
+ }
+ }
+
+ if( bFirst )
+ {
+ // WrtShell Flags richtig setzen
+ pWrtShell->SttSelect();
+ pWrtShell->EndSelect();
+ }
+
+ bFirst = FALSE;
+
+ aEdit.SetModifyHdl( LINK( this, SwInputWindow, ModifyHdl ));
+
+ aEdit.SetText( sEdit );
+ aEdit.SetSelection( Selection( sEdit.Len(), sEdit.Len() ) );
+ sOldFml = sEdit;
+
+ aEdit.Invalidate();
+ aEdit.Update();
+ aEdit.GrabFocus();
+ // UserInterface fuer die Eingabe abklemmen
+
+ pView->GetEditWin().LockKeyInput(TRUE);
+ pView->GetViewFrame()->GetDispatcher()->Lock(TRUE);
+ pWrtShell->Push();
+ }
+ ToolBox::Show();
+}
+//==================================================================
+
+IMPL_LINK( SwInputWindow, MenuHdl, Menu *, pMenu )
+{
+static const char * __READONLY_DATA aStrArr[] = {
+ sCalc_Phd,
+ sCalc_Sqrt,
+ sCalc_Or,
+ sCalc_Xor,
+ sCalc_And,
+ sCalc_Not,
+ sCalc_Eq,
+ sCalc_Neq,
+ sCalc_Leq,
+ sCalc_Geq,
+ sCalc_L,
+ sCalc_G,
+ sCalc_Sum,
+ sCalc_Mean,
+ sCalc_Min,
+ sCalc_Max,
+ sCalc_Sin,
+ sCalc_Cos,
+ sCalc_Tan,
+ sCalc_Asin,
+ sCalc_Acos,
+ sCalc_Atan,
+ sCalc_Pow,
+ "|",
+ sCalc_Round
+};
+
+ USHORT nId = pMenu->GetCurItemId();
+ if ( nId <= MN_CALC_ROUND )
+ {
+ String aTmp( String::CreateFromAscii(aStrArr[nId - 1]) );
+ aTmp += ' ';
+ aEdit.ReplaceSelected( aTmp );
+ }
+ return 0;
+}
+
+//==================================================================
+
+
+void __EXPORT SwInputWindow::Click( )
+{
+ USHORT nCurID = GetCurItemId();
+ EndSelection(); // setzt CurItemId zurueck !
+ switch ( nCurID )
+ {
+ case FN_FORMULA_CALC :
+ {
+ Point aBL = GetItemRect( FN_FORMULA_CALC ).BottomLeft();
+ Point aPt(aBL.X(), aBL.Y());
+#ifdef VCL
+ aPopMenu.Execute( this, aPt );
+#else
+ aPt = OutputToScreenPixel( aPt );
+ aPopMenu.Execute( aPt );
+#endif
+ }
+ break;
+ case FN_FORMULA_CANCEL:
+ {
+ CancelFormula();
+ }
+ break;
+ case FN_FORMULA_APPLY:
+ {
+ ApplyFormula();
+ }
+ break;
+ }
+}
+
+//==================================================================
+
+void SwInputWindow::ApplyFormula()
+{
+ pView->GetViewFrame()->GetDispatcher()->Lock(FALSE);
+ pView->GetEditWin().LockKeyInput(FALSE);
+ if( bResetUndo )
+ {
+ DelBoxCntnt();
+ pWrtShell->DoUndo( bDoesUndo );
+ SwEditShell::SetUndoActionCount( nActionCnt );
+ if( bCallUndo )
+ pWrtShell->Undo();
+ bResetUndo = FALSE;
+ }
+ pWrtShell->Pop( FALSE );
+
+ // JP 13.01.97: Formel soll immer mit einem "=" beginnen, hier
+ // also wieder entfernen
+ BOOL bIsFormula = FALSE;
+ String sEdit( aEdit.GetText() );
+ sEdit.EraseLeadingChars().EraseTrailingChars();
+ if( sEdit.Len() && '=' == sEdit.GetChar( 0 ) )
+ {
+ sEdit.Erase( 0, 1 );
+ bIsFormula = TRUE;
+ }
+
+ pWrtShell->StartAllAction();
+ if( bDelSel && pWrtShell->HasSelection() )
+ {
+ pWrtShell->StartUndo( UNDO_START );
+ pWrtShell->DelRight();
+ }
+ else
+ {
+ pWrtShell->EnterStdMode();
+ bDelSel = FALSE;
+ }
+
+ if( !bDelSel && pMgr->GetCurFld() && TYP_FORMELFLD == pMgr->GetCurTypeId() )
+ pMgr->UpdateCurFld( pMgr->GetCurFld()->GetFormat(), aEmptyStr, sEdit );
+ else if( sEdit.Len() )
+ {
+ if( bIsTable )
+ {
+ SfxItemSet aSet( pWrtShell->GetAttrPool(), RES_BOXATR_FORMULA, RES_BOXATR_FORMULA );
+ aSet.Put( SwTblBoxFormula( sEdit ));
+ pWrtShell->SetTblBoxFormulaAttrs( aSet );
+ pWrtShell->UpdateTable();
+ }
+ else
+ {
+ SvNumberFormatter* pFormatter = pWrtShell->GetNumberFormatter();
+ ULONG nSysNumFmt = pFormatter->GetFormatIndex( NF_NUMBER_STANDARD, LANGUAGE_SYSTEM);
+ pMgr->InsertFld(TYP_FORMELFLD, GSE_FORMULA, aEmptyStr, sEdit, nSysNumFmt);
+ }
+ }
+
+ if( bDelSel )
+ pWrtShell->EndUndo( UNDO_END );
+ pWrtShell->EndAllAction();
+
+ pWrtShell->EndSelTblCells();
+ pView->GetEditWin().GrabFocus();
+ pView->GetViewFrame()->GetDispatcher()->Execute( FN_EDIT_FORMULA, SFX_CALLMODE_ASYNCHRON );
+}
+
+//==================================================================
+
+void SwInputWindow::CancelFormula()
+{
+ if(pView)
+ {
+ pView->GetViewFrame()->GetDispatcher()->Lock( FALSE );
+ pView->GetEditWin().LockKeyInput(FALSE);
+ if( bResetUndo )
+ {
+ DelBoxCntnt();
+ pWrtShell->DoUndo( bDoesUndo );
+ SwEditShell::SetUndoActionCount( nActionCnt );
+ if( bCallUndo )
+ pWrtShell->Undo();
+ bResetUndo = FALSE;
+ }
+ pWrtShell->Pop( FALSE );
+
+ if( bDelSel )
+ pWrtShell->EnterStdMode();
+
+ pWrtShell->EndSelTblCells();
+
+ pView->GetEditWin().GrabFocus();
+ }
+ pView->GetViewFrame()->GetDispatcher()->Execute( FN_EDIT_FORMULA, SFX_CALLMODE_ASYNCHRON);
+}
+//==================================================================
+
+IMPL_LINK( SwInputWindow, SelTblCellsNotify, SwWrtShell *, pCaller )
+{
+ if(bIsTable)
+ {
+ SwFrmFmt* pTblFmt = pCaller->GetTableFmt();
+ String sBoxNms( pCaller->GetBoxNms() );
+ String sTblNm;
+ if( pTblFmt && aAktTableName != pTblFmt->GetName() )
+ sTblNm = pTblFmt->GetName();
+
+ aEdit.UpdateRange( sBoxNms, sTblNm );
+
+ String sNew( aEdit.GetText() );
+ if( sNew != sOldFml )
+ {
+ // Die WrtShell ist in der Tabellen Selektion
+ // dann die Tabellen Selektion wieder aufheben, sonst steht der
+ // Cursor "im Wald" und das LiveUpdate funktioniert nicht!
+ pWrtShell->StartAllAction();
+
+ SwPaM aPam( *pWrtShell->GetStkCrsr()->GetPoint() );
+ aPam.Move( fnMoveBackward, fnGoSection );
+ aPam.SetMark();
+ aPam.Move( fnMoveForward, fnGoSection );
+
+ pWrtShell->GetDoc()->Delete( aPam );
+ pWrtShell->GetDoc()->Insert( aPam, sNew );
+ pWrtShell->EndAllAction();
+ sOldFml = sNew;
+ }
+ }
+ else
+ aEdit.GrabFocus();
+ return 0;
+}
+
+
+void SwInputWindow::SetFormula( const String& rFormula, BOOL bDelFlag )
+{
+ String sEdit( '=' );
+ if( rFormula.Len() )
+ {
+ if( '=' == rFormula.GetChar( 0 ) )
+ sEdit = rFormula;
+ else
+ sEdit += rFormula;
+ }
+ aEdit.SetText( sEdit );
+ aEdit.SetSelection( Selection( sEdit.Len(), sEdit.Len() ) );
+ aEdit.Invalidate();
+ bDelSel = bDelFlag;
+}
+
+
+IMPL_LINK( SwInputWindow, ModifyHdl, InputEdit*, EMPTYARG )
+{
+ if( bIsTable && bResetUndo )
+ {
+ pWrtShell->StartAllAction();
+ DelBoxCntnt();
+ String sNew( aEdit.GetText() );
+ pWrtShell->SwEditShell::Insert( sNew );
+ pWrtShell->EndAllAction();
+ sOldFml = sNew;
+ }
+ return 0;
+}
+
+
+void SwInputWindow::DelBoxCntnt()
+{
+ if( bIsTable )
+ {
+ pWrtShell->StartAllAction();
+ pWrtShell->ClearMark();
+ pWrtShell->Pop( FALSE );
+ pWrtShell->Push();
+ pWrtShell->MoveSection( fnSectionCurr, fnSectionStart );
+ pWrtShell->SetMark();
+ pWrtShell->MoveSection( fnSectionCurr, fnSectionEnd );
+ pWrtShell->SwEditShell::Delete();
+ pWrtShell->EndAllAction();
+ }
+}
+
+//==================================================================
+
+void __EXPORT InputEdit::KeyInput(const KeyEvent& rEvent)
+{
+ const KeyCode aCode = rEvent.GetKeyCode();
+ if(aCode == KEY_RETURN || aCode == KEY_F2 )
+ ((SwInputWindow*)GetParent())->ApplyFormula();
+ else if(aCode == KEY_ESCAPE )
+ ((SwInputWindow*)GetParent())->CancelFormula();
+ else
+ Edit::KeyInput(rEvent);
+}
+
+//==================================================================
+
+void __EXPORT InputEdit::UpdateRange(const String& rBoxes,
+ const String& rName )
+{
+ if( !rBoxes.Len() )
+ {
+ GrabFocus();
+ return;
+ }
+ const sal_Unicode cOpen = '<', cClose = '>',
+ cOpenBracket = '(', cCloseBracket = ')';
+ String aPrefix = rName;
+ if(rName.Len())
+ aPrefix += '.';
+ String aBoxes = aPrefix;
+ aBoxes += rBoxes;
+ Selection aSelection(GetSelection());
+ USHORT nSel = (USHORT) aSelection.Len();
+ //OS: mit dem folgenden Ausdruck wird sichergestellt, dass im overwrite-Modus
+ //die selektierte schliessende Klammer nicht geloescht wird
+ if( nSel && ( nSel > 1 ||
+ GetText().GetChar( (USHORT)aSelection.Min() ) != cClose ) )
+ Cut();
+ else
+ aSelection.Max() = aSelection.Min();
+ String aActText(GetText());
+ const USHORT nLen = aActText.Len();
+ if( !nLen )
+ {
+ String aStr(cOpen);
+ aStr += aBoxes;
+ aStr += cClose;
+ SetText(aStr);
+ USHORT nPos = aStr.Search( cClose );
+ ASSERT(nPos < aStr.Len(), Delimiter nicht gefunden.);
+ ++nPos;
+ SetSelection( Selection( nPos, nPos ));
+ }
+ else
+ {
+ BOOL bFound = FALSE;
+ unsigned char cCh;
+ USHORT nPos, nEndPos, nStartPos = (USHORT) aSelection.Min();
+ if( nStartPos-- )
+ {
+ do {
+ if( cOpen == (cCh = aActText.GetChar( nStartPos ) ) ||
+ cOpenBracket == cCh )
+ {
+ bFound = cCh == cOpen;
+ break;
+ }
+ } while( nStartPos-- > 0 );
+ }
+ if( bFound )
+ {
+ bFound = FALSE;
+ nEndPos = nStartPos;
+ while( nEndPos < nLen )
+ {
+ if( cClose == (cCh = aActText.GetChar( nEndPos )) /*||
+ cCh == cCloseBracket*/ )
+ {
+ bFound = TRUE;
+ break;
+ }
+ ++nEndPos;
+ }
+ // nur wenn akt. Pos im Breich oder direkt dahinter liegt
+ if( bFound && !( nStartPos < (USHORT)aSelection.Max() &&
+ (USHORT)aSelection.Max() <= nEndPos + 1 ))
+ bFound = FALSE;
+ }
+ if( bFound )
+ {
+ nPos = ++nStartPos + 1; // wir wollen dahinter
+ aActText.Erase( nStartPos, nEndPos - nStartPos );
+ aActText.Insert( aBoxes, nStartPos );
+ nPos += aBoxes.Len();
+ }
+ else
+ {
+ String aTmp( (char)cOpen );
+ aTmp += aBoxes;
+ aTmp += (char)cClose;
+ nPos = (USHORT)aSelection.Min();
+ aActText.Insert( aTmp, nPos );
+ nPos += aTmp.Len();
+ }
+ if( GetText() != aActText )
+ {
+ SetText( aActText );
+ SetSelection( Selection( nPos, nPos ) );
+// GetModifyHdl().Call( this );
+ }
+ }
+ GrabFocus();
+
+}
+//==================================================================
+
+
+SwInputChild::SwInputChild(Window* pParent,
+ USHORT nId,
+ SfxBindings* ,
+ SfxChildWinInfo* ) :
+ SfxChildWindow( pParent, nId )
+{
+ SwView* pActiveView = GetActiveView();
+ pDispatch = pActiveView ? pActiveView->GetViewFrame()->GetDispatcher() : 0;
+ pWindow = new SwInputWindow( pParent );
+ ((SwInputWindow*)pWindow)->Show();
+ eChildAlignment = SFX_ALIGN_LOWESTTOP;
+
+}
+
+
+__EXPORT SwInputChild::~SwInputChild()
+{
+ if(pDispatch)
+ pDispatch->Lock(FALSE);
+}
+
+
+SfxChildWinInfo __EXPORT SwInputChild::GetInfo() const
+{
+ SfxChildWinInfo aInfo = SfxChildWindow::GetInfo(); \
+ return aInfo;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.88 2000/09/18 16:06:01 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.87 2000/09/07 15:59:27 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.86 2000/07/03 08:54:31 jp
+ must changes for VCL
+
+ Revision 1.85 2000/04/26 14:56:39 os
+ GetName() returns const String&
+
+ Revision 1.84 2000/04/18 14:54:44 os
+ UNICODE
+
+ Revision 1.83 2000/03/03 15:17:03 os
+ StarView remainders removed
+
+ Revision 1.82 1999/05/18 13:20:16 OS
+ #66203# Undo im Dtor nur, wenn erforderlich
+
+
+ Rev 1.81 18 May 1999 15:20:16 OS
+ #66203# Undo im Dtor nur, wenn erforderlich
+
+ Rev 1.80 24 Apr 1998 17:22:46 OS
+ kein KeyInput waehrend die Rechenleiste aktiv ist #49301#
+
+ Rev 1.79 12 Mar 1998 13:33:12 OM
+ #48084# Formelfeld mit Standardformat einfuegen
+
+ Rev 1.78 22 Jan 1998 20:07:40 JP
+ CTOR des SwPaM umgestellt
+
+ Rev 1.77 19 Jan 1998 20:08:32 JP
+ Bug #46705#: Undo nur rufen, wenn etwas geloescht wurde
+
+ Rev 1.76 24 Nov 1997 14:53:58 MA
+ includes
+
+ Rev 1.75 10 Nov 1997 11:43:12 OS
+ HelpId fuer Edit #45436#
+
+ Rev 1.74 30 Sep 1997 16:28:22 TJ
+
+ Rev 1.73 19 Sep 1997 13:42:56 OS
+ Edit mit WB_NOHIDESELECTION #43891#
+
+ Rev 1.72 04 Sep 1997 17:14:02 MA
+ includes
+
+ Rev 1.71 01 Sep 1997 10:01:24 OS
+ fuer VCL Window uebergeben
+
+ Rev 1.70 29 Aug 1997 16:52:24 MH
+ chg: Syntax
+
+ Rev 1.69 29 Aug 1997 15:45:32 OS
+ PopupMenu::Execute mit Window* fuer VCL
+
+ Rev 1.68 29 Aug 1997 14:20:12 OS
+ DLL-Umbau
+
+ Rev 1.67 09 Jul 1997 17:36:10 HJS
+ includes
+
+ Rev 1.66 09 May 1997 09:28:42 JP
+ Bug #39214#: Formel nur ersetzen, wenn die sich veraendert hat
+
+ Rev 1.65 29 Apr 1997 16:18:50 OM
+ Unsichtbare Benutzerfelder
+
+ Rev 1.64 09 Apr 1997 16:18:42 MH
+ chg: header
+
+ Rev 1.63 07 Apr 1997 13:40:48 MH
+ chg: header
+
+ Rev 1.62 10 Feb 1997 16:26:40 OS
+ Dispatcher im Childwindow merken
+
+ Rev 1.61 07 Feb 1997 16:41:54 OS
+ Dispatcher nur noch vom ViewFrame holen
+
+ Rev 1.60 05 Feb 1997 14:32:00 JP
+ FormatMenu bei Tabellenzellen entfernen
+
+ Rev 1.59 29 Jan 1997 14:47:18 JP
+ Umstellungen fuers neue Rechnen in Tabellen
+
+ Rev 1.58 21 Jan 1997 13:48:40 JP
+ Update der Eingabe in die TabellenBox
+
+ Rev 1.57 14 Jan 1997 18:22:28 JP
+ UpdateRange: Anfang des BoxNamens korrekt suchen
+
+ Rev 1.56 14 Jan 1997 09:50:32 JP
+ neu: SetFormula; UpdateRange: Crsr hinter die BoxNamen
+
+ Rev 1.55 21 Nov 1996 17:56:44 MA
+ chg: Kein ResMgr fuer GetImage()
+
+ Rev 1.54 11 Nov 1996 11:11:30 MA
+ ResMgr
+
+ Rev 1.53 09 Nov 1996 13:51:40 OS
+ PopupMenu immer im Click
+
+ Rev 1.52 24 Oct 1996 13:36:38 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.51 10 Oct 1996 10:37:12 OS
+ Registrierung der Toolbox am SfxImageManager
+
+ Rev 1.50 28 Aug 1996 13:39:28 OS
+ includes
+
+ Rev 1.49 09 Jul 1996 17:52:42 OM
+ Alternatives Formatmenue fuer Expressionfields
+
+ Rev 1.48 26 Jun 1996 15:26:42 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.47 10 Jun 1996 18:47:04 HJS
+ ; vergessen
+
+ Rev 1.46 10 Jun 1996 11:38:08 OS
+ Reihenfolge Apply und CancelFormula angepasst
+
+ Rev 1.45 09 May 1996 15:34:12 OS
+ HLineal an der View wird nicht mehr geloescht
+
+ Rev 1.44 26 Apr 1996 10:00:32 SWG
+ IMPL-Macro getauscht, GetInfo impl.
+
+ Rev 1.43 10 Mar 1996 15:50:22 OS
+ neu: Round
+
+ Rev 1.42 29 Feb 1996 12:58:30 OS
+ UpdateRange mit zusaetzlichem Parameter
+
+ Rev 1.41 07 Feb 1996 07:29:20 OS
+ Linkumstellung: return sollte ans Ende
+
+ Rev 1.40 06 Feb 1996 15:21:16 JP
+ Link Umstellung 305
+
+------------------------------------------------------------------------*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sw/source/ui/ribbar/inputwin.hrc b/sw/source/ui/ribbar/inputwin.hrc
new file mode 100644
index 000000000000..38fc01c1c7da
--- /dev/null
+++ b/sw/source/ui/ribbar/inputwin.hrc
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * $RCSfile: inputwin.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _INPUTWIN_HRC
+#define _INPUTWIN_HRC
+
+
+//PopupMenu Id's
+#define MN_CALC_PHD 1
+#define MN_CALC_SQRT 2
+#define MN_CALC_OR 3
+#define MN_CALC_XOR 4
+#define MN_CALC_AND 5
+#define MN_CALC_NOT 6
+#define MN_CALC_EQ 7
+#define MN_CALC_NEQ 8
+#define MN_CALC_LEQ 9
+#define MN_CALC_GEQ 10
+#define MN_CALC_LES 11
+#define MN_CALC_GRE 12
+#define MN_CALC_SUM 13
+#define MN_CALC_MEAN 14
+#define MN_CALC_MIN 15
+#define MN_CALC_MAX 16
+#define MN_CALC_SIN 17
+#define MN_CALC_COS 18
+#define MN_CALC_TAN 19
+#define MN_CALC_ASIN 20
+#define MN_CALC_ACOS 21
+#define MN_CALC_ATAN 22
+#define MN_CALC_POW 23
+#define MN_CALC_LISTSEP 24
+#define MN_CALC_ROUND 25
+
+#define MN_POP_OPS 29
+#define MN_POP_STATISTICS 30
+#define MN_POP_FUNC 31
+#define MN_RSC_END 32
+
+#define TBX_FORMULA 1
+#define ED_POS 2
+#define ED_FORMULA 3
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sw/source/ui/ribbar/inputwin.src b/sw/source/ui/ribbar/inputwin.src
new file mode 100644
index 000000000000..6caeb7bb5156
--- /dev/null
+++ b/sw/source/ui/ribbar/inputwin.src
@@ -0,0 +1,1137 @@
+/*************************************************************************
+ *
+ * $RCSfile: inputwin.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+/* HelpID ressource file */
+/* HelpID ressource file */
+
+#include "cmdid.h"
+#include "helpid.h"
+#include "globals.hrc"
+#include "ribbar.hrc"
+#include "inputwin.hrc"
+ToolBox RID_TBX_FORMULA
+{
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 600 , 14 ) ;
+ HelpID = HID_CALC_TOOLBOX ;
+ SVLook = TRUE ;
+ Border = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = FN_FORMULA_CALC ;
+ HelpID = FN_FORMULA_CALC ;
+ DropDown = TRUE ;
+ Text = "Formel" ;
+ Text [ English ] = "Formula" ;
+ Text [ norwegian ] = "Formel" ;
+ Text [ italian ] = "Formula" ;
+ Text [ portuguese_brazilian ] = "Fórmula" ;
+ Text [ portuguese ] = "Fórmula" ;
+ Text [ finnish ] = "Kaava" ;
+ Text [ danish ] = "Formel" ;
+ Text [ french ] = "Formule" ;
+ Text [ swedish ] = "Formel" ;
+ Text [ dutch ] = "Formule" ;
+ Text [ spanish ] = "Fórmula" ;
+ Text [ english_us ] = "Formula" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Formel auswählen : Formel auswõhlen */
+ Text[ chinese_simplified ] = "¹«Ê½";
+ Text[ russian ] = "Ôîðìóëà";
+ Text[ polish ] = "Formu³a";
+ Text[ japanese ] = "”Ž®";
+ Text[ chinese_traditional ] = "¤½¦¡";
+ Text[ arabic ] = "ÕíÛÉ";
+ Text[ dutch ] = "Formule";
+ Text[ chinese_simplified ] = "¹«Ê½";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "¼ö½Ä";
+ Text[ turkish ] = "Formül";
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_FORMULA_CANCEL ;
+ HelpID = FN_FORMULA_CANCEL ;
+ Text = "Abbrechen" ;
+ Text [ English ] = "Cancel" ;
+ Text [ norwegian ] = "Avbryt" ;
+ Text [ italian ] = "Annulla" ;
+ Text [ portuguese_brazilian ] = "Cancelar" ;
+ Text [ portuguese ] = "Cancelar" ;
+ Text [ finnish ] = "Peruuta" ;
+ Text [ danish ] = "Annuller" ;
+ Text [ french ] = "Annuler" ;
+ Text [ swedish ] = "Avbryt" ;
+ Text [ dutch ] = "Annuleren" ;
+ Text [ spanish ] = "Cancelar" ;
+ Text [ english_us ] = "Cancel" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Formel nicht übenehmen : Formel nicht ³benehmen */
+ Text[ chinese_simplified ] = "È¡Ïû";
+ Text[ russian ] = "Îòìåíà";
+ Text[ polish ] = "Anuluj";
+ Text[ japanese ] = "·¬Ý¾Ù";
+ Text[ chinese_traditional ] = "¨ú®ø";
+ Text[ arabic ] = "ÅáÛÇÁ ÇáÃãÑ";
+ Text[ dutch ] = "Annuleren";
+ Text[ chinese_simplified ] = "È¡Ïû";
+ Text[ greek ] = "Áêýñùóç";
+ Text[ korean ] = "Ãë¼Ò";
+ Text[ turkish ] = "Ýptal";
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_FORMULA_APPLY ;
+ HelpID = FN_FORMULA_APPLY ;
+ /* ### ACHTUNG: Neuer Text in Resource? Übernehmen : šbernehmen */
+ Text = "Übernehmen" ;
+ Text [ English ] = "Apply" ;
+ Text [ norwegian ] = "Benytt" ;
+ Text [ italian ] = "Applica" ;
+ Text [ portuguese_brazilian ] = "Aplicar" ;
+ Text [ portuguese ] = "Aplicar" ;
+ Text [ finnish ] = "Käytä" ;
+ Text [ danish ] = "Anvend" ;
+ Text [ french ] = "Appliquer" ;
+ Text [ swedish ] = "Överta" ;
+ Text [ dutch ] = "Overnemen" ;
+ Text [ spanish ] = "Aplicar" ;
+ Text [ english_us ] = "Apply" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Formel einfügen : Formel einf³gen */
+ Text[ chinese_simplified ] = "ʹÓÃ";
+ Text[ russian ] = "Âûïîëíèòü";
+ Text[ polish ] = "Zastosuj";
+ Text[ japanese ] = "“K—p‚·‚é";
+ Text[ chinese_traditional ] = "¨Ï¥Î";
+ Text[ arabic ] = "ÅÏÎÇá";
+ Text[ dutch ] = "Overnemen";
+ Text[ chinese_simplified ] = "ʹÓÃ";
+ Text[ greek ] = "ÅöáñìïãÞ";
+ Text[ korean ] = "Àû¿ë";
+ Text[ turkish ] = "Uygula";
+ };
+ };
+ Edit ED_POS
+ {
+ Border = TRUE ;
+ Size = MAP_APPFONT ( 45 , 11 ) ;
+ ReadOnly = TRUE ;
+ SVLook = TRUE ;
+ Center = TRUE ;
+ };
+ Edit ED_FORMULA
+ {
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Size = MAP_APPFONT ( 500 , 11 ) ;
+ SVLook = TRUE ;
+ };
+};
+Menu MN_CALC_POPUP
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = MN_CALC_SUM ;
+ HelpID = HID_MN_CALC_SUM ;
+ Text = "~Summe" ;
+ Text [ English ] = "~Sum" ;
+ Text [ dutch ] = "~Soml" ;
+ Text [ spanish ] = "~Suma" ;
+ Text [ english_us ] = "Sum" ;
+ Text [ norwegian ] = "~Sum" ;
+ Text [ italian ] = "~Somma" ;
+ Text [ portuguese_brazilian ] = "~Somatório" ;
+ Text [ portuguese ] = "~Soma" ;
+ Text [ finnish ] = "~Summa" ;
+ Text [ danish ] = "Sum" ;
+ Text [ french ] = "~Somme" ;
+ Text [ swedish ] = "~Summa" ;
+ Text[ chinese_simplified ] = "×ܼÆ";
+ Text[ russian ] = "Ñóììà";
+ Text[ polish ] = "Suma";
+ Text[ japanese ] = "‡Œv";
+ Text[ chinese_traditional ] = "¤p­p";
+ Text[ arabic ] = "ÇáãÌãæÚ";
+ Text[ dutch ] = "~Soml";
+ Text[ chinese_simplified ] = "×ܼÆ";
+ Text[ greek ] = "¢èñïé~óìá";
+ Text[ korean ] = "ÇÕ°è";
+ Text[ turkish ] = "Toplam";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_ROUND ;
+ HelpID = HID_MN_CALC_ROUND ;
+ Text = "Run~den" ;
+ Text [ English ] = "Roun~d" ;
+ Text [ english_us ] = "Round" ;
+ Text [ italian ] = "Arroto~nda" ;
+ Text [ spanish ] = "R~edondear" ;
+ Text [ french ] = "A~rrondir" ;
+ Text [ dutch ] = "~Afronden" ;
+ Text [ swedish ] = "~Avrunda" ;
+ Text [ danish ] = "Rund" ;
+ Text [ portuguese ] = "A~rredondar" ;
+ Text [ portuguese_brazilian ] = "Run~den" ;
+ Text[ chinese_simplified ] = "ת»»³ÉÕûÊý";
+ Text[ russian ] = "Îêðóãëèòü";
+ Text[ polish ] = "Zaokr¹glaj";
+ Text[ japanese ] = "’[”‚ðØ‚èã‚°‚é";
+ Text[ chinese_traditional ] = "Âà´«¦¨¾ã¼Æ";
+ Text[ arabic ] = "ÊÞÑíÈ";
+ Text[ dutch ] = "~Afronden";
+ Text[ chinese_simplified ] = "ת»»³ÉÕûÊý";
+ Text[ greek ] = "Ó~ôñïããõëïðïßçóç";
+ Text[ korean ] = "¹Ý¿Ã¸²";
+ Text[ turkish ] = "Yuvarla";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_PHD ;
+ HelpID = HID_MN_CALC_PHD ;
+ Text = "~Prozent" ;
+ Text [ English ] = "~Percent" ;
+ Text [ dutch ] = "Pro~cent" ;
+ Text [ spanish ] = "~Porcentaje" ;
+ Text [ english_us ] = "Percent" ;
+ Text [ norwegian ] = "~Prosent" ;
+ Text [ italian ] = "~Percentuale" ;
+ Text [ portuguese_brazilian ] = "~Percentual" ;
+ Text [ portuguese ] = "~Percentagem" ;
+ Text [ finnish ] = "~Prosentti" ;
+ Text [ danish ] = "Procent" ;
+ Text [ french ] = "~Pourcentage" ;
+ Text [ swedish ] = "~Procent" ;
+ Text[ chinese_simplified ] = "°Ù·Ö±È(~P)";
+ Text[ russian ] = "Ïðîöåíòû";
+ Text[ polish ] = "Procent";
+ Text[ japanese ] = "Êß°¾ÝÄ";
+ Text[ chinese_traditional ] = "¦Ê¤À¤ñ(~P)";
+ Text[ arabic ] = "ÈÇáãÇÆÉ";
+ Text[ dutch ] = "Pro~cent";
+ Text[ chinese_simplified ] = "°Ù·Ö±È(~P)";
+ Text[ greek ] = "~Ðïóïóôü (%)";
+ Text[ korean ] = "¹éºÐÀ²";
+ Text[ turkish ] = "Yüzde";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_SQRT ;
+ HelpID = HID_MN_CALC_SQRT ;
+ Text = "~Wurzel" ;
+ Text [ English ] = "Square ~Root" ;
+ Text [ dutch ] = "~Vierkantswortel" ;
+ Text [ spanish ] = "~Raíz" ;
+ Text [ english_us ] = "Square Root" ;
+ Text [ norwegian ] = "Kvadrat ~Rot" ;
+ Text [ italian ] = "~Radice" ;
+ Text [ portuguese_brazilian ] = "Raiz ~Quadrada" ;
+ Text [ portuguese ] = "Raíz ~quadrada" ;
+ Text [ finnish ] = "~Neliöjuuri" ;
+ Text [ danish ] = "Kvadratrod" ;
+ Text [ french ] = "~Racine carrée" ;
+ Text [ swedish ] = "~Kvadratrot" ;
+ Text[ chinese_simplified ] = "ƽ·½¸ù(~R)";
+ Text[ russian ] = "Êîðåíü";
+ Text[ polish ] = "Pierwiastek";
+ Text[ japanese ] = "•½•ûª";
+ Text[ chinese_traditional ] = "¥­¤è®Ú(~R)";
+ Text[ arabic ] = "ÌÐÑ";
+ Text[ dutch ] = "~Vierkantswortel";
+ Text[ chinese_simplified ] = "ƽ·½¸ù(~R)";
+ Text[ language_user1 ] = "(ÄÄ) ; - - - - - -";
+ Text[ greek ] = "Ôåôñáã~ùíéêÞ ñßæá";
+ Text[ korean ] = "Á¦°ö±Ù";
+ Text[ turkish ] = "Karekök";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_POW ;
+ HelpID = HID_MN_CALC_POW ;
+ Text = "Poten~ziere" ;
+ Text [ English ] = "Po~wer" ;
+ Text [ dutch ] = "~Machtsverheffen" ;
+ Text [ spanish ] = "Po~tenciando" ;
+ Text [ english_us ] = "Power" ;
+ Text [ norwegian ] = "Po~tens" ;
+ Text [ italian ] = "Elevare a potenza" ;
+ Text [ portuguese_brazilian ] = "Po~tência" ;
+ Text [ portuguese ] = "Elevar a po~tência" ;
+ Text [ finnish ] = "Po~tenssi" ;
+ Text [ danish ] = "Opløft i potens" ;
+ Text [ french ] = "Pu~issance" ;
+ Text [ swedish ] = "~Upphöja" ;
+ Text[ chinese_simplified ] = "³ËÃÝ(~W)";
+ Text[ russian ] = "Ñòåïåíü";
+ Text[ polish ] = "Potêguj";
+ Text[ japanese ] = "—Ýæ";
+ Text[ chinese_traditional ] = "­¼¾­(~W)";
+ Text[ arabic ] = "ÞæÉ";
+ Text[ dutch ] = "~Machtsverheffen";
+ Text[ chinese_simplified ] = "³ËÃÝ(~W)";
+ Text[ greek ] = "¾ø~ùóç óå äýíáìç";
+ Text[ korean ] = "°ö";
+ Text[ turkish ] = "Kuvvet çýkar";
+ };
+ MenuItem
+ {
+ Identifier = MN_POP_OPS ;
+ HelpID = HID_MN_POP_OPS ;
+ Text = "~Operatoren" ;
+ Text [ ENGLISH ] = "~Operators" ;
+ Text [ dutch ] = "O~peratoren" ;
+ Text [ spanish ] = "~Operadores" ;
+ Text [ english_us ] = "Operators" ;
+ Text [ norwegian ] = "+++~Operators" ;
+ Text [ italian ] = "Operatori" ;
+ Text [ portuguese_brazilian ] = "~Operadores" ;
+ Text [ portuguese ] = "~Operadores" ;
+ Text [ finnish ] = "~Operaattorit" ;
+ Text [ danish ] = "Operatorer" ;
+ Text [ french ] = "~Opérateurs" ;
+ Text [ swedish ] = "~Operatorer" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = MN_CALC_LISTSEP ;
+ HelpID = HID_MN_CALC_LISTSEP ;
+ Text = "~Listentrenner" ;
+ Text [ English ] = "Lis~t Separator" ;
+ Text [ dutch ] = "Lijst~scheidingsteken" ;
+ Text [ spanish ] = "~Separador de lista" ;
+ Text [ english_us ] = "List Separator" ;
+ Text [ norwegian ] = "+++Lis~t Separator" ;
+ Text [ italian ] = "~Separatore elenco" ;
+ Text [ portuguese_brazilian ] = "Separador de Lis~ta" ;
+ Text [ portuguese ] = "Separador de lis~ta" ;
+ Text [ finnish ] = "~Luettelon erotin" ;
+ Text [ danish ] = "Listeseparator" ;
+ Text [ french ] = "Séparateur de lis~te" ;
+ Text [ swedish ] = "List~avgränsare" ;
+ Text[ chinese_simplified ] = "Áбí·Ö¸ô·û(~S)";
+ Text[ russian ] = "Ðàçäåëèòåëü ñïèñêà";
+ Text[ polish ] = "Separator list";
+ Text[ japanese ] = "ؽĂ̋æØ‚è‹L†";
+ Text[ chinese_traditional ] = "²M³æ¤À¹j²Å(~S)";
+ Text[ arabic ] = "ÝÇÕá ÇáÞÇÆãÉ";
+ Text[ dutch ] = "Lijst~scheidingsteken";
+ Text[ chinese_simplified ] = "Áбí·Ö¸ô·û(~S)";
+ Text[ greek ] = "Äéá÷ùñéóôéêÜ ~ëßóôáò";
+ Text[ korean ] = "¸ñ·Ï ±¸ºÐÀÚ";
+ Text[ turkish ] = "~Liste öðeleri ayýrýcýsý";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_EQ ;
+ HelpID = HID_MN_CALC_EQ ;
+ Text = "~Gleich" ;
+ Text [ English ] = "~Equal" ;
+ Text [ dutch ] = "~Gelijk aan" ;
+ Text [ spanish ] = "~Igual" ;
+ Text [ english_us ] = "Equal" ;
+ Text [ norwegian ] = "~Lik" ;
+ Text [ italian ] = "~Uguale" ;
+ Text [ portuguese_brazilian ] = "~Igual" ;
+ Text [ portuguese ] = "~Igual" ;
+ Text [ finnish ] = "~Yhtä suuri kuin" ;
+ Text [ danish ] = "Lig med" ;
+ Text [ french ] = "~Égal" ;
+ Text [ swedish ] = "~Lika med" ;
+ Text[ chinese_simplified ] = "µÈÓÚ(~E)";
+ Text[ russian ] = "Ðàâíî";
+ Text[ polish ] = "Równy";
+ Text[ japanese ] = "“™‚µ‚¢";
+ Text[ chinese_traditional ] = "µ¥©ó(~E)";
+ Text[ arabic ] = "íÓÇæí";
+ Text[ dutch ] = "~Gelijk aan";
+ Text[ chinese_simplified ] = "µÈÓÚ(~E)";
+ Text[ greek ] = "º~óï";
+ Text[ korean ] = "µ¿ÀÏ";
+ Text[ turkish ] = "Eþittir";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_NEQ ;
+ HelpID = HID_MN_CALC_NEQ ;
+ Text = "~Nicht Gleich" ;
+ Text [ English ] = "~Not Equal" ;
+ Text [ dutch ] = "~Niet gelijk aan" ;
+ Text [ spanish ] = "~No igual" ;
+ Text [ english_us ] = "Not Equal" ;
+ Text [ norwegian ] = "~Ulik" ;
+ Text [ italian ] = "Non uguale" ;
+ Text [ portuguese_brazilian ] = "~Não Igual" ;
+ Text [ portuguese ] = "~Desigual" ;
+ Text [ finnish ] = "~Eri suuri kuin" ;
+ Text [ danish ] = "Forskellig fra" ;
+ Text [ french ] = "D~ifférent" ;
+ Text [ swedish ] = "~Inte lika med" ;
+ Text[ chinese_simplified ] = "²»µÈÓÚ(~N)";
+ Text[ russian ] = "Íå ðàâíî";
+ Text[ polish ] = "Nie równy";
+ Text[ japanese ] = "“™‚µ‚­‚È‚¢";
+ Text[ chinese_traditional ] = "¤£µ¥©ó(~N)";
+ Text[ arabic ] = "áÇ íÓÇæí";
+ Text[ dutch ] = "~Niet gelijk aan";
+ Text[ chinese_simplified ] = "²»µÈÓÚ(~N)";
+ Text[ greek ] = "~ÄéÜöïñï";
+ Text[ korean ] = "µ¿ÀÏÇÏÁö ¾ÊÀ½";
+ Text[ turkish ] = "Eþit deðil";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_LEQ ;
+ HelpID = HID_MN_CALC_LEQ ;
+ Text = "~Kleiner Gleich" ;
+ Text [ English ] = "Le~ss Equal" ;
+ Text [ dutch ] = "~Kleiner dan of gelijk aan" ;
+ Text [ spanish ] = "Me~nor o igual" ;
+ Text [ english_us ] = "Less Than or Equal" ;
+ Text [ norwegian ] = "Mind~re enn" ;
+ Text [ italian ] = "Minore o uguale" ;
+ Text [ portuguese_brazilian ] = "Me~nor ou Igual" ;
+ Text [ portuguese ] = "Me~nor ou igual" ;
+ Text [ finnish ] = "P~ienempi tai yhtä kuin" ;
+ Text [ danish ] = "Mindre end eller lig med" ;
+ Text [ french ] = "I~nférieur ou égal à" ;
+ Text [ swedish ] = "Mi~ndre än eller lika med" ;
+ Text[ chinese_simplified ] = "СÓÚ»òµÈÓÚ(~Q)";
+ Text[ russian ] = "Ìåíüøå èëè ðàâíî";
+ Text[ polish ] = "Mniejszy lub równy";
+ Text[ japanese ] = "¬‚Ȃ貺°Ù";
+ Text[ chinese_traditional ] = "¤p©ó©Îµ¥©ó(~Q)";
+ Text[ arabic ] = "ÃÕÛÑ ãä Ãæ íÓÇæí";
+ Text[ dutch ] = "~Kleiner dan of gelijk aan";
+ Text[ chinese_simplified ] = "СÓÚ»òµÈÓÚ(~Q)";
+ Text[ greek ] = "Ìé~êñüôåñï Þ ßóï";
+ Text[ korean ] = "ÀÌÇÏ";
+ Text[ turkish ] = "Küçük ya da eþittir";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_GEQ ;
+ HelpID = HID_MN_CALC_GEQ ;
+ /* ### ACHTUNG: Neuer Text in Resource? Gr~ößer Gleich : Gr~÷˜er Gleich */
+ Text = "Gr~ößer Gleich" ;
+ Text [ English ] = "~Greater Equal" ;
+ Text [ dutch ] = "G~roter dan of gelijk aan" ;
+ Text [ spanish ] = "M~ayor o igual" ;
+ Text [ english_us ] = "Greater Than or Equal" ;
+ Text [ norwegian ] = "~Større enn" ;
+ Text [ italian ] = "~Maggiore uguale" ;
+ Text [ portuguese_brazilian ] = "~Maior ou Igual" ;
+ Text [ portuguese ] = "M~aior ou igual" ;
+ Text [ finnish ] = "S~uurempi tai yhtä kuin" ;
+ Text [ danish ] = "Større end lig med" ;
+ Text [ french ] = "~Supérieur ou égal" ;
+ Text [ swedish ] = "St~örre än eller lika med" ;
+ Text[ chinese_simplified ] = "´óÓÚ»òµÈÓÚ(~G)";
+ Text[ russian ] = "Áîëüøå èëè ðàâíî";
+ Text[ polish ] = "Wiêkszy lub równy";
+ Text[ japanese ] = "‘å‚Ȃ貺°Ù";
+ Text[ chinese_traditional ] = "¤j©ó©Îµ¥©ó(~G)";
+ Text[ arabic ] = "ÃßÈÑ ãä Ãæ íÓÇæí";
+ Text[ dutch ] = "G~roter dan of gelijk aan";
+ Text[ chinese_simplified ] = "´óÓÚ»òµÈÓÚ(~G)";
+ Text[ greek ] = "Ìå~ãáëýôåñï Þ ßóï";
+ Text[ korean ] = "ÀÌ»ó";
+ Text[ turkish ] = "Büyük ya da eþittir";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_LES ;
+ HelpID = HID_MN_CALC_LES ;
+ Text = "Kle~iner" ;
+ Text [ English ] = "~Less" ;
+ Text [ dutch ] = "K~leiner" ;
+ Text [ spanish ] = "M~enor" ;
+ Text [ english_us ] = "Less" ;
+ Text [ norwegian ] = "~Mindre" ;
+ Text [ italian ] = "Minore" ;
+ Text [ portuguese_brazilian ] = "~Menos" ;
+ Text [ portuguese ] = "~Menor" ;
+ Text [ finnish ] = "~Pienempi kuin" ;
+ Text [ danish ] = "Mindre end" ;
+ Text [ french ] = "In~férieur" ;
+ Text [ swedish ] = "~Mindre än" ;
+ Text[ chinese_simplified ] = "СÓÚ(~L)";
+ Text[ russian ] = "Ìåíüøå";
+ Text[ polish ] = "Mniejszy";
+ Text[ japanese ] = "‚æ‚è­‚È‚¢";
+ Text[ chinese_traditional ] = "¤p©ó(~L)";
+ Text[ arabic ] = "ÃÕÛÑ";
+ Text[ dutch ] = "K~leiner";
+ Text[ chinese_simplified ] = "СÓÚ(~L)";
+ Text[ greek ] = "Ì~éêñüôåñï";
+ Text[ korean ] = "¹Ì¸¸";
+ Text[ turkish ] = "Küçüktür";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_GRE ;
+ HelpID = HID_MN_CALC_GRE ;
+ /* ### ACHTUNG: Neuer Text in Resource? G~rößer : G~r÷˜er */
+ Text = "G~rößer" ;
+ Text [ English ] = "G~reater" ;
+ Text [ dutch ] = "Gro~ter" ;
+ Text [ spanish ] = "~Mayor" ;
+ Text [ english_us ] = "Greater" ;
+ Text [ norwegian ] = "S~tørre" ;
+ Text [ italian ] = "Maggiore" ;
+ Text [ portuguese_brazilian ] = "M~aior" ;
+ Text [ portuguese ] = "M~aior" ;
+ Text [ finnish ] = "~Suurempi kuin" ;
+ Text [ danish ] = "Større end" ;
+ Text [ french ] = "S~upérieur" ;
+ Text [ swedish ] = "~Större än" ;
+ Text[ chinese_simplified ] = "´óÓÚ(~R)";
+ Text[ russian ] = "Áîëüøå";
+ Text[ polish ] = "Wiêkszy";
+ Text[ japanese ] = "‚æ‚è‘å‚«‚¢";
+ Text[ chinese_traditional ] = "¤j©ó(~R)";
+ Text[ arabic ] = "ÃßÈÑ";
+ Text[ dutch ] = "Gro~ter";
+ Text[ chinese_simplified ] = "´óÓÚ(~R)";
+ Text[ greek ] = "Ìåãáëýôå~ñï";
+ Text[ korean ] = "ÃÊ°ú";
+ Text[ turkish ] = "Büyüktür";
+ };
+ MenuItem
+ {
+ Separator = TRUE ;
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_OR ;
+ HelpID = HID_MN_CALC_OR ;
+ Text = "Logisches ~Oder" ;
+ Text [ English ] = "Logical ~Or" ;
+ Text [ dutch ] = "Logisch ~Of" ;
+ Text [ spanish ] = "~O lógico" ;
+ Text [ english_us ] = "Boolean Or" ;
+ Text [ norwegian ] = "Logisk ~Eller" ;
+ Text [ italian ] = "Logica ~O" ;
+ Text [ portuguese_brazilian ] = "Ou lógico ~" ;
+ Text [ portuguese ] = "~OU lógico" ;
+ Text [ finnish ] = "Looginen ~Or" ;
+ Text [ danish ] = "Logisk ELLER" ;
+ Text [ french ] = "~OU logique" ;
+ Text [ swedish ] = "Logiskt ~Eller" ;
+ Text[ chinese_simplified ] = "Âß¼­µÄ ~Or";
+ Text[ russian ] = "Ëîãè÷åñêîå Èëè";
+ Text[ polish ] = "Funkcja logiczna LUB";
+ Text[ japanese ] = "˜_—Ï(Or)";
+ Text[ chinese_traditional ] = "Å޿誺 ~Or";
+ Text[ arabic ] = "Ãæ ãäØÞíÉ";
+ Text[ dutch ] = "Logisch ~Of";
+ Text[ chinese_simplified ] = "Âß¼­µÄ ~Or";
+ Text[ greek ] = "ÔåëåóôÞò ~Or ôïõ Boole";
+ Text[ korean ] = "ºÒ¸®¾ð Or";
+ Text[ turkish ] = "Mantýksal Veya";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_XOR ;
+ HelpID = HID_MN_CALC_XOR ;
+ Text = "Logisches E~xklusives Oder" ;
+ Text [ English ] = "Logical ~Xor" ;
+ Text [ dutch ] = "Logisch e~xclusief Of" ;
+ Text [ spanish ] = "O lógico e~xclusivo" ;
+ Text [ english_us ] = "Boolean Xor" ;
+ Text [ norwegian ] = "Logisk ~Xeller" ;
+ Text [ italian ] = "Logica O esclusiva" ;
+ Text [ portuguese_brazilian ] = "Xou lógico" ;
+ Text [ portuguese ] = "OU lógico e~xclusivo" ;
+ Text [ finnish ] = "Looginen ~Xor" ;
+ Text [ danish ] = "Logisk eksklusiv ELLER" ;
+ Text [ french ] = "Ou logique e~xclusif" ;
+ Text [ swedish ] = "Logiskt E~xklusivt Eller" ;
+ Text[ chinese_simplified ] = "Âß¼­µÄ³ýÍâµÄ Or";
+ Text[ russian ] = "Ëîãè÷åñêîå ðàçäåëèòåëüíîå \"èëè\"";
+ Text[ polish ] = "Wy³¹czna funkcja logiczna LUB";
+ Text[ japanese ] = "˜_—˜a(Xor)";
+ Text[ chinese_traditional ] = "Å޿誺°£¥~ªº Or";
+ Text[ arabic ] = "Ãæ ãäØÞíÉ ÎÇÕÉ";
+ Text[ dutch ] = "Logisch e~xclusief Of";
+ Text[ chinese_simplified ] = "Âß¼­µÄ³ýÍâµÄ Or";
+ Text[ greek ] = "ÔåëåóôÞò ~Xor ôïõ Boole";
+ Text[ korean ] = "ºÒ¸®¾ð Xor";
+ Text[ turkish ] = "Mantýksal ~tek Veya";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_AND ;
+ HelpID = HID_MN_CALC_AND ;
+ Text = "Logisches ~Und" ;
+ Text [ English ] = "Logical ~And" ;
+ Text [ dutch ] = "Logisch ~En" ;
+ Text [ spanish ] = "~Y lógico" ;
+ Text [ english_us ] = "Boolean And" ;
+ Text [ norwegian ] = "Logisk ~Og" ;
+ Text [ italian ] = "Logica ~E" ;
+ Text [ portuguese_brazilian ] = "E ~lógico" ;
+ Text [ portuguese ] = "~E lógico" ;
+ Text [ finnish ] = "Looginen ~And" ;
+ Text [ danish ] = "Logisk OG" ;
+ Text [ french ] = "~ET logique" ;
+ Text [ swedish ] = "Logiskt ~Och" ;
+ Text[ chinese_simplified ] = "Âß¼­µÄ ~And";
+ Text[ russian ] = "Ëîãè÷åñêîå ~È";
+ Text[ polish ] = "Funkcja logiczna ORAZ";
+ Text[ japanese ] = "˜_—Ï(And)";
+ Text[ chinese_traditional ] = "Å޿誺 ~And";
+ Text[ arabic ] = "æ ãäØÞíÉ";
+ Text[ dutch ] = "Logisch ~En";
+ Text[ chinese_simplified ] = "Âß¼­µÄ ~And";
+ Text[ greek ] = "ÔåëåóôÞò ~And ôïõ Boole";
+ Text[ korean ] = "ºÒ¸®¾ð And";
+ Text[ turkish ] = "Mantýksal ~Ve";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_NOT ;
+ HelpID = HID_MN_CALC_NOT ;
+ Text = "Logi~sches Nicht" ;
+ Text [ English ] = "Log~ical Not" ;
+ Text [ dutch ] = "Log~isch Niet" ;
+ Text [ spanish ] = "~No lógico" ;
+ Text [ english_us ] = "Boolean Not" ;
+ Text [ norwegian ] = "Log~isk Ikke" ;
+ Text [ italian ] = "Logica Non" ;
+ Text [ portuguese_brazilian ] = "Não Lóg~ico" ;
+ Text [ portuguese ] = "~NÃO lógico" ;
+ Text [ finnish ] = "Looginen ~Not" ;
+ Text [ danish ] = "Logisk IKKE" ;
+ Text [ french ] = "NON log~ique" ;
+ Text [ swedish ] = "Logiskt I~nte" ;
+ Text[ chinese_simplified ] = "Âß¼­µÄ Not";
+ Text[ russian ] = "Ëîãè÷åñêîå Íå";
+ Text[ polish ] = "Funkcja logiczna NIE";
+ Text[ japanese ] = "˜_—”Û’è(Not)";
+ Text[ chinese_traditional ] = "Å޿誺 Not";
+ Text[ arabic ] = "áÇ ãäØÞíÉ";
+ Text[ dutch ] = "Log~isch Niet";
+ Text[ chinese_simplified ] = "Âß¼­µÄ Not";
+ Text[ greek ] = "Ôåëå~óôÞò Not ôïõ Boole";
+ Text[ korean ] = "ºÒ¸®¾ð Not";
+ Text[ turkish ] = "Matýk~al Deðil";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "ÔËËã·û(~O)";
+ Text[ russian ] = "Îïåðàòîðû";
+ Text[ polish ] = "Operatory";
+ Text[ japanese ] = "‰‰ŽZŽq";
+ Text[ chinese_traditional ] = "¹Bºâ²Å(~O)";
+ Text[ arabic ] = "ÚæÇãá ÇáÊÔÛíá";
+ Text[ dutch ] = "O~peratoren";
+ Text[ chinese_simplified ] = "ÔËËã·û(~O)";
+ Text[ greek ] = "~ÔåëåóôÝò";
+ Text[ korean ] = "¿¬»êÀÚ";
+ Text[ turkish ] = "Ýþleçler";
+ };
+ MenuItem
+ {
+ Identifier = MN_POP_STATISTICS ;
+ HelpID = HID_MN_POP_STATISTICS ;
+ Text = "S~tatistische Funktionen" ;
+ Text [ ENGLISH ] = "S~tatistical Functions" ;
+ Text [ dutch ] = "~Statistische functies" ;
+ Text [ spanish ] = "F~unciones estadísticas" ;
+ Text [ english_us ] = "Statistical Functions" ;
+ Text [ norwegian ] = "S~tatistiske Funksjoner" ;
+ Text [ italian ] = "Funzioni statistiche" ;
+ Text [ portuguese_brazilian ] = "Funç~oes Estatísticas" ;
+ Text [ portuguese ] = "Funções e~statísticas" ;
+ Text [ finnish ] = "~Tilastofunktiot" ;
+ Text [ danish ] = "Statistiske funktioner" ;
+ Text [ french ] = "Fonctions s~tatistiques" ;
+ Text [ swedish ] = "S~tatistiska funktioner" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = MN_CALC_MEAN ;
+ HelpID = HID_MN_CALC_MEAN ;
+ Text = "~Mittelwert" ;
+ Text [ English ] = "Average" ;
+ Text [ dutch ] = "~Gemiddelde waarde" ;
+ Text [ spanish ] = "Pro~medio" ;
+ Text [ english_us ] = "Mean" ;
+ Text [ norwegian ] = "Gjennomsnitt" ;
+ Text [ italian ] = "Valore medio" ;
+ Text [ portuguese_brazilian ] = "Média" ;
+ Text [ portuguese ] = "~Média" ;
+ Text [ finnish ] = "Keskiarvo" ;
+ Text [ danish ] = "Middel" ;
+ Text [ french ] = "~Moyenne" ;
+ Text [ swedish ] = "M~edelvärde" ;
+ Text[ chinese_simplified ] = "ƽ¾ùÖµ(~M)";
+ Text[ russian ] = "Ñðåäíåå çíà÷åíèå";
+ Text[ polish ] = "Œrednia wartoœæ";
+ Text[ japanese ] = "•½‹Ï’l";
+ Text[ chinese_traditional ] = "¥­§¡­È(~M)";
+ Text[ arabic ] = "ÇáãÚÏá";
+ Text[ dutch ] = "~Gemiddelde waarde";
+ Text[ chinese_simplified ] = "ƽ¾ùÖµ(~M)";
+ Text[ greek ] = "~ÌÝóç ôéìÞ";
+ Text[ korean ] = "Æò±Õ";
+ Text[ turkish ] = "Ortalama deðer";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_MIN ;
+ HelpID = HID_MN_CALC_MIN ;
+ Text = "Mi~nimalwert" ;
+ Text [ English ] = "Minimum" ;
+ Text [ dutch ] = "M~inimumwaarde" ;
+ Text [ spanish ] = "Valor mí~nimo" ;
+ Text [ english_us ] = "Minimum" ;
+ Text [ norwegian ] = "Minimum" ;
+ Text [ italian ] = "Valore minimo" ;
+ Text [ portuguese_brazilian ] = "Mínimo" ;
+ Text [ portuguese ] = "Valor mí~nimo" ;
+ Text [ finnish ] = "Vähintään" ;
+ Text [ danish ] = "Minimumværdi" ;
+ Text [ french ] = "~Minimum" ;
+ Text [ swedish ] = "M~inimum" ;
+ Text[ chinese_simplified ] = "×îСֵ(~N)";
+ Text[ russian ] = "Ìèíèìàëüíîå çíà÷åíèå";
+ Text[ polish ] = "Minimum";
+ Text[ japanese ] = "Ŭ’l";
+ Text[ chinese_traditional ] = "³Ì¤p­È(~N)";
+ Text[ arabic ] = "ÃÏäì ÞíãÉ";
+ Text[ dutch ] = "M~inimumwaarde";
+ Text[ chinese_simplified ] = "×îСֵ(~N)";
+ Text[ greek ] = "ÅëÜ÷éóôç ôé~ìÞ";
+ Text[ korean ] = "ÃÖ¼Ò";
+ Text[ turkish ] = "Asgari deðer";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_MAX ;
+ HelpID = HID_MN_CALC_MAX ;
+ Text = "Ma~ximalwert" ;
+ Text [ English ] = "Maximum" ;
+ Text [ dutch ] = "~Maximumwaarde" ;
+ Text [ spanish ] = "Valor má~ximo" ;
+ Text [ english_us ] = "Maximum" ;
+ Text [ norwegian ] = "Maksimum" ;
+ Text [ italian ] = "Valore massimo" ;
+ Text [ portuguese_brazilian ] = "Máximo" ;
+ Text [ portuguese ] = "Valor má~ximo" ;
+ Text [ finnish ] = "Suurin arvo" ;
+ Text [ danish ] = "Maksimumværdi" ;
+ Text [ french ] = "Ma~ximum" ;
+ Text [ swedish ] = "M~aximum" ;
+ Text[ chinese_simplified ] = "×î´óÖµ(~X)";
+ Text[ russian ] = "Ìàêñèìàëüíîå çíà÷åíèå";
+ Text[ polish ] = "Maksimum";
+ Text[ japanese ] = "Å‘å’l";
+ Text[ chinese_traditional ] = "³Ì¤j­È(~X)";
+ Text[ arabic ] = "ÃÞÕì ÞíãÉ";
+ Text[ dutch ] = "~Maximumwaarde";
+ Text[ chinese_simplified ] = "×î´óÖµ(~X)";
+ Text[ greek ] = "ÌÝ~ãéóôç ôéìÞ";
+ Text[ korean ] = "ÃÖ´ë";
+ Text[ turkish ] = "Azami deðer";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "ͳ¼Æ¹¦ÄÜ(~T)";
+ Text[ russian ] = "Ñòàòèñòè÷åñêèå ôóíêöèè";
+ Text[ polish ] = "Funkcje statystyczne";
+ Text[ japanese ] = "“ŒvŠw“IŠÖ”";
+ Text[ chinese_traditional ] = "²Î­p¥\\¯à(~T)";
+ Text[ arabic ] = "ÏÇáÇÊ ÅÍÕÇÆíÉ";
+ Text[ dutch ] = "~Statistische functies";
+ Text[ chinese_simplified ] = "ͳ¼Æ¹¦ÄÜ(~T)";
+ Text[ greek ] = "Ó~ôáôéóôéêÝò óõíáñôÞóåéò";
+ Text[ korean ] = "Åë°è ÇÔ¼ö";
+ Text[ turkish ] = "Ýstatistik iþlevleri";
+ };
+ MenuItem
+ {
+ Identifier = MN_POP_FUNC ;
+ HelpID = HID_MN_POP_FUNC ;
+ Text = "~Funktionen" ;
+ Text [ ENGLISH ] = "~Functions" ;
+ Text [ dutch ] = "~Functies" ;
+ Text [ spanish ] = "~Funciones" ;
+ Text [ english_us ] = "Functions" ;
+ Text [ norwegian ] = "~Funksjoner" ;
+ Text [ italian ] = "Funzioni" ;
+ Text [ portuguese_brazilian ] = "~Funções" ;
+ Text [ portuguese ] = "~Funções" ;
+ Text [ finnish ] = "~Funktiot" ;
+ Text [ danish ] = "Funktioner" ;
+ Text [ french ] = "~Fonctions" ;
+ Text [ swedish ] = "~Funktioner" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = MN_CALC_SIN ;
+ HelpID = HID_MN_CALC_SIN ;
+ Text = "~Sinus" ;
+ Text [ english ] = "~Sinus" ;
+ Text [ english_us ] = "Sine" ;
+ Text [ portuguese_brazilian ] = "~Sinus" ;
+ Text [ swedish ] = "~sinus" ;
+ Text [ danish ] = "Sinus" ;
+ Text [ italian ] = "~Seno" ;
+ Text [ spanish ] = "~Seno" ;
+ Text [ french ] = "~Sinus" ;
+ Text [ dutch ] = "~Sinus" ;
+ Text [ portuguese ] = "~Seno" ;
+ Text[ chinese_simplified ] = "ÕýÏÒ(~S)";
+ Text[ russian ] = "Ñèíóñ";
+ Text[ polish ] = "Sinus";
+ Text[ japanese ] = "»²Ý";
+ Text[ chinese_traditional ] = "¥¿©¶(~S)";
+ Text[ arabic ] = "ÌíÈ ÇáÒÇæíÉ";
+ Text[ dutch ] = "~Sinus";
+ Text[ chinese_simplified ] = "ÕýÏÒ(~S)";
+ Text[ greek ] = "~Çìßôïíï";
+ Text[ korean ] = "»çÀÎ";
+ Text[ turkish ] = "Sinüs";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_COS ;
+ HelpID = HID_MN_CALC_COS ;
+ Text = "~Cosinus" ;
+ Text [ english ] = "~Cosinus" ;
+ Text [ english_us ] = "Cosine" ;
+ Text [ portuguese_brazilian ] = "~Cosinus" ;
+ Text [ swedish ] = "~cosinus" ;
+ Text [ danish ] = "Cosinus" ;
+ Text [ italian ] = "~Coseno" ;
+ Text [ spanish ] = "~Coseno" ;
+ Text [ french ] = "~Cosinus" ;
+ Text [ dutch ] = "~Cosinus" ;
+ Text [ portuguese ] = "~Coseno" ;
+ Text[ chinese_simplified ] = "ÓàÏÒ(~C)";
+ Text[ russian ] = "Êîñèíóñ";
+ Text[ polish ] = "Cosinus";
+ Text[ japanese ] = "º»²Ý";
+ Text[ chinese_traditional ] = "§E©¶(~C)";
+ Text[ arabic ] = "ÌíÈ ÊãÇã";
+ Text[ dutch ] = "~Cosinus";
+ Text[ chinese_simplified ] = "ÓàÏÒ(~C)";
+ Text[ greek ] = "~Óõíçìßôïíï";
+ Text[ korean ] = "ÄÚ»çÀÎ";
+ Text[ turkish ] = "Kosinüs";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_TAN ;
+ HelpID = HID_MN_CALC_TAN ;
+ Text = "~Tangens" ;
+ Text [ english ] = "~Tangens" ;
+ Text [ english_us ] = "Tangent" ;
+ Text [ portuguese_brazilian ] = "~Tangens" ;
+ Text [ swedish ] = "~tangens" ;
+ Text [ danish ] = "Tangens" ;
+ Text [ italian ] = "~Tangente" ;
+ Text [ spanish ] = "~Tangente" ;
+ Text [ french ] = "~Tangente" ;
+ Text [ dutch ] = "~Tangens" ;
+ Text [ portuguese ] = "~Tangente" ;
+ Text[ chinese_simplified ] = "ÕýÇÐ(~T)";
+ Text[ russian ] = "Òàíãåíñ";
+ Text[ polish ] = "Tangens";
+ Text[ japanese ] = "ÀݼުÝÄ";
+ Text[ chinese_traditional ] = "¥¿¤Á(~T)";
+ Text[ arabic ] = "Ùá";
+ Text[ dutch ] = "~Tangens";
+ Text[ chinese_simplified ] = "ÕýÇÐ(~T)";
+ Text[ greek ] = "Åöáð~ôïìÝíç";
+ Text[ korean ] = "źÁ¨Æ®";
+ Text[ turkish ] = "Tanjant";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_ASIN ;
+ HelpID = HID_MN_CALC_ASIN ;
+ Text = "~Arcussinus" ;
+ Text [ english ] = "~Arcussinus" ;
+ Text [ english_us ] = "Arcsine" ;
+ Text [ portuguese_brazilian ] = "~Arcussinus" ;
+ Text [ swedish ] = "~arcussinus" ;
+ Text [ danish ] = "Arcus sinus" ;
+ Text [ italian ] = "~Arcoseno" ;
+ Text [ spanish ] = "Seno de ~arco" ;
+ Text [ french ] = "~Arc sinus" ;
+ Text [ dutch ] = "~Boogsinus" ;
+ Text [ portuguese ] = "~Arco seno" ;
+ Text[ chinese_simplified ] = "·´ÕýÏÒ";
+ Text[ russian ] = "Àðêñèíóñ";
+ Text[ polish ] = "Arcus sinus";
+ Text[ japanese ] = "±°¸»²Ý";
+ Text[ chinese_traditional ] = "¤Ï¥¿©¶";
+ Text[ arabic ] = "ãÞÇÈá ÇáÌíÈ";
+ Text[ dutch ] = "~Boogsinus";
+ Text[ chinese_simplified ] = "·´ÕýÏÒ";
+ Text[ greek ] = "~Ôüîï çìéôüíïõ";
+ Text[ korean ] = "¾ÆÅ©»çÀÎ";
+ Text[ turkish ] = "Arksinüs";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_ACOS ;
+ HelpID = HID_MN_CALC_ACOS ;
+ Text = "A~rcuscosinus" ;
+ Text [ english ] = "A~rcuscosinus" ;
+ Text [ english_us ] = "Arccosine" ;
+ Text [ portuguese_brazilian ] = "A~rcuscosinus" ;
+ Text [ swedish ] = "a~rcuscosinus" ;
+ Text [ danish ] = "Arcus cosinus" ;
+ Text [ italian ] = "A~rcocoseno" ;
+ Text [ spanish ] = "Coseno de a~rco" ;
+ Text [ french ] = "~Arc cosinus" ;
+ Text [ dutch ] = "B~oogcosinus" ;
+ Text [ portuguese ] = "Arco cose~no" ;
+ Text[ chinese_simplified ] = "·´ÓàÏÒ";
+ Text[ russian ] = "Àðêêîñèíóñ";
+ Text[ polish ] = "Arcus cosinus";
+ Text[ japanese ] = "±°¸º»²Ý";
+ Text[ chinese_traditional ] = "¤Ï§E©¶";
+ Text[ arabic ] = "ãÞÇÈá ÌíÈ ÇáÊãÇã";
+ Text[ dutch ] = "B~oogcosinus";
+ Text[ chinese_simplified ] = "·´ÓàÏÒ";
+ Text[ greek ] = "Ôü~îï óõíçìéôüíïõ";
+ Text[ korean ] = "¾ÆÅ© ÄÚ»çÀÎ";
+ Text[ turkish ] = "Arkkosinüs";
+ };
+ MenuItem
+ {
+ Identifier = MN_CALC_ATAN ;
+ HelpID = HID_MN_CALC_ATAN ;
+ Text = "Arcustan~gens" ;
+ Text [ english ] = "Arcustan~gens" ;
+ Text [ english_us ] = "Arctangent" ;
+ Text [ portuguese_brazilian ] = "Arcustan~gens" ;
+ Text [ swedish ] = "arcustan~gens" ;
+ Text [ danish ] = "Arcus tangens" ;
+ Text [ italian ] = "Arcotan~gente" ;
+ Text [ spanish ] = "~Tangente de arco" ;
+ Text [ french ] = "Arc tan~gente" ;
+ Text [ dutch ] = "Boogtan~gens" ;
+ Text [ portuguese ] = "~Arco tangente" ;
+ Text[ chinese_simplified ] = "·´ÕýÇÐ";
+ Text[ russian ] = "Àðêòàíãåíñ";
+ Text[ polish ] = "Arcus tangens";
+ Text[ japanese ] = "±°¸ÀݼުÝÄ";
+ Text[ chinese_traditional ] = "¤Ï¥¿¤Á";
+ Text[ arabic ] = "ãÞÇÈá ÇáÙá";
+ Text[ dutch ] = "Boogtan~gens";
+ Text[ chinese_simplified ] = "·´ÕýÇÐ";
+ Text[ greek ] = "Ôüîï å~öáðôïìÝíçò";
+ Text[ korean ] = "¾ÆÅ© źÁ¨Æ®";
+ Text[ turkish ] = "Arktanjant";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "º¯Êý(~F)";
+ Text[ russian ] = "Ôóíêöèè";
+ Text[ polish ] = "Funkcje";
+ Text[ japanese ] = "ŠÖ”";
+ Text[ chinese_traditional ] = "¨ç¼Æ(~F)";
+ Text[ arabic ] = "ÏÇáÇÊ";
+ Text[ dutch ] = "~Functies";
+ Text[ chinese_simplified ] = "º¯Êý(~F)";
+ Text[ language_user1 ] = "(ÄÄ) ; - - - - - -";
+ Text[ greek ] = "~ÓõíáñôÞóåéò";
+ Text[ korean ] = "ÇÔ¼ö";
+ Text[ turkish ] = "Ýþlevler";
+ };
+ };
+};
+String STR_FORMULA
+{
+ Text = "Textformel" ;
+ Text [ ENGLISH ] = "Text Formula" ;
+ Text [ dutch ] = "Tekstformule" ;
+ Text [ spanish ] = "Fórmula de texto" ;
+ Text [ english_us ] = "Text formula" ;
+ Text [ norwegian ] = "Tekstformel" ;
+ Text [ italian ] = "Formula testo" ;
+ Text [ portuguese_brazilian ] = "Fórmula do Texto" ;
+ Text [ portuguese ] = "Fórmula do texto" ;
+ Text [ finnish ] = "Tekstikaava" ;
+ Text [ danish ] = "Tekstformel" ;
+ Text [ french ] = "Formule texte" ;
+ Text [ swedish ] = "Textformel" ;
+ Text[ chinese_simplified ] = "Îı¾±í¸ñ";
+ Text[ russian ] = "Ôîðìóëà òåêñòà";
+ Text[ polish ] = "Formu³a tekstu";
+ Text[ japanese ] = "÷½ÄŒ`Ž®";
+ Text[ chinese_traditional ] = "¤å¦rªí®æ";
+ Text[ arabic ] = "ÕíÛÉ ÇáäÕ";
+ Text[ dutch ] = "Tekstformule";
+ Text[ chinese_simplified ] = "Îı¾±í¸ñ";
+ Text[ language_user1 ] = "(ÄÄ) ; - - - - - -";
+ Text[ greek ] = "Ôýðïò êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ¼ö½Ä";
+ Text[ turkish ] = "Metin formulü";
+};
+#define TB_INPUT \
+ ToolBoxItem\
+ {\
+ Identifier = FN_FORMULA_CALC ; \
+ HelpID = FN_FORMULA_CALC ; \
+ Text = "Formel" ; \
+ Text [ English ] = "Formula" ; \
+ Text [ norwegian ] = "Formel" ; \
+ Text [ italian ] = "Formula" ; \
+ Text [ portuguese_brazilian ] = "Fórmula" ; \
+ Text [ portuguese ] = "Fórmula" ; \
+ Text [ finnish ] = "Kaava" ; \
+ Text [ danish ] = "Formel" ; \
+ Text [ french ] = "Formule" ; \
+ Text [ swedish ] = "Formel" ; \
+ Text [ dutch ] = "Formule" ; \
+ Text [ spanish ] = "Fórmula" ; \
+ Text [ english_us ] = "Formula" ; \
+ /* ### ACHTUNG: Neuer Text in Resource? Formel auswählen : Formel auswõhlen */\
+ Text[ chinese_simplified ] = "¹«Ê½";\
+ Text[ russian ] = "Ôîðìóëà";\
+ Text[ polish ] = "Formu³a";\
+ Text[ japanese ] = "”Ž®";\
+ Text[ chinese_traditional ] = "¤½¦¡";\
+ Text[ arabic ] = "ÕíÛÉ";\
+ Text[ dutch ] = "Formule";\
+ Text[ chinese_simplified ] = "¹«Ê½";\
+ Text[ greek ] = "Ôýðïò";\
+ Text[ korean ] = "¼ö½Ä";\
+ Text[ turkish ] = "Formül";\
+ };\
+ ToolBoxItem\
+ {\
+ Identifier = FN_FORMULA_CANCEL ; \
+ HelpID = FN_FORMULA_CANCEL ; \
+ Text = "Abbrechen" ; \
+ Text [ English ] = "Cancel" ; \
+ Text [ norwegian ] = "Avbryt" ; \
+ Text [ italian ] = "Annulla" ; \
+ Text [ portuguese_brazilian ] = "Cancelar" ; \
+ Text [ portuguese ] = "Cancelar" ; \
+ Text [ finnish ] = "Peruuta" ; \
+ Text [ danish ] = "Annuller" ; \
+ Text [ french ] = "Annuler " ; \
+ Text [ swedish ] = "Avbryt" ; \
+ Text [ dutch ] = "Annuleren" ; \
+ Text [ spanish ] = "Cancelar" ; \
+ Text [ english_us ] = "Cancel" ; \
+ /* ### ACHTUNG: Neuer Text in Resource? Formel nicht übenehmen : Formel nicht ³benehmen */\
+ Text[ chinese_simplified ] = "È¡Ïû";\
+ Text[ russian ] = "Îòìåíà";\
+ Text[ polish ] = "Anuluj";\
+ Text[ japanese ] = "·¬Ý¾Ù";\
+ Text[ chinese_traditional ] = "¨ú®ø";\
+ Text[ arabic ] = "ÅáÛÇÁ ÇáÃãÑ";\
+ Text[ dutch ] = "Annuleren";\
+ Text[ chinese_simplified ] = "È¡Ïû";\
+ Text[ greek ] = "Áêýñùóç";\
+ Text[ korean ] = "Ãë¼Ò";\
+ Text[ turkish ] = "Ýptal";\
+ };\
+ ToolBoxItem\
+ {\
+ Identifier = FN_FORMULA_APPLY ; \
+ HelpID = FN_FORMULA_APPLY ; \
+ /* ### ACHTUNG: Neuer Text in Resource? Übernehmen : šbernehmen */\
+ Text = "Übernehmen" ; \
+ Text [ English ] = "Apply" ; \
+ Text [ norwegian ] = "Benytt" ; \
+ Text [ italian ] = "Applica" ; \
+ Text [ portuguese_brazilian ] = "Aplicar" ; \
+ Text [ portuguese ] = "Aplicar" ; \
+ Text [ finnish ] = "Käytä" ; \
+ Text [ danish ] = "Anvend" ; \
+ Text [ french ] = "Appliquer" ; \
+ Text [ swedish ] = "Överta" ; \
+ Text [ dutch ] = "Overnemen" ; \
+ Text [ spanish ] = "Aplicar" ; \
+ Text [ english_us ] = "Apply" ; \
+ /* ### ACHTUNG: Neuer Text in Resource? Formel einfügen : Formel einf³gen */\
+ Text[ chinese_simplified ] = "Ó¦ÓÃ";\
+ Text[ russian ] = "Âûïîëíèòü";\
+ Text[ polish ] = "Zastosuj";\
+ Text[ japanese ] = "“K—p‚·‚é";\
+ Text[ chinese_traditional ] = "¨Ï¥Î";\
+ Text[ arabic ] = "ÅÏÎÇá";\
+ Text[ dutch ] = "Overnemen";\
+ Text[ chinese_simplified ] = "Ó¦ÓÃ";\
+ Text[ greek ] = "ÅöáñìïãÞ";\
+ Text[ korean ] = "Àû¿ë";\
+ Text[ turkish ] = "Uygula";\
+ };
+
diff --git a/sw/source/ui/ribbar/makefile.mk b/sw/source/ui/ribbar/makefile.mk
new file mode 100644
index 000000000000..571eabdfd645
--- /dev/null
+++ b/sw/source/ui/ribbar/makefile.mk
@@ -0,0 +1,109 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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=sw
+TARGET=ribbar
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+IMGLST_SRS=$(SRS)$/ribbar.srs
+BMP_IN=$(PRJ)$/win/imglst
+
+# --- Files --------------------------------------------------------
+
+SRCFILES = \
+ tbxanchr.src \
+ inputwin.src \
+ tblctrl.src \
+ workctrl.src
+
+SLOFILES = \
+ $(SLO)$/inputwin.obj \
+ $(SLO)$/tbxanchr.obj \
+ $(SLO)$/tbxmgr.obj \
+ $(SLO)$/conrect.obj \
+ $(SLO)$/conform.obj \
+ $(SLO)$/conpoly.obj \
+ $(SLO)$/conarc.obj \
+ $(SLO)$/dselect.obj \
+ $(SLO)$/drawbase.obj \
+ $(SLO)$/tblctrl.obj \
+ $(SLO)$/workctrl.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+$(SRS)$/ribbar.srs: $(SOLARINCDIR)$/svx$/globlmn.hrc
+
diff --git a/sw/source/ui/ribbar/tblctrl.cxx b/sw/source/ui/ribbar/tblctrl.cxx
new file mode 100644
index 000000000000..89a3f08aeb67
--- /dev/null
+++ b/sw/source/ui/ribbar/tblctrl.cxx
@@ -0,0 +1,209 @@
+/*************************************************************************
+ *
+ * $RCSfile: tblctrl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+
+
+#include "cmdid.h"
+#include "swtypes.hxx"
+#include "tbxmgr.hxx"
+#include "tblctrl.hxx"
+#include "tblctrl.hrc"
+
+
+
+SFX_IMPL_TOOLBOX_CONTROL( SwTableOptimizeCtrl, SfxUInt16Item );
+
+/**********************************************************************
+
+**********************************************************************/
+
+
+
+
+SwTableOptimizeCtrl::SwTableOptimizeCtrl( USHORT nId,
+ ToolBox& rTbx,
+ SfxBindings& rBind ) :
+ SfxToolBoxControl( nId, rTbx, rBind )
+{
+}
+/**********************************************************************
+
+**********************************************************************/
+
+
+
+SwTableOptimizeCtrl::~SwTableOptimizeCtrl()
+{
+}
+
+/**********************************************************************
+
+**********************************************************************/
+
+
+
+SfxPopupWindow* SwTableOptimizeCtrl::CreatePopupWindow()
+{
+ USHORT nWinResId, nTbxResId;
+ nWinResId = RID_TBL_OPT_CTRL;
+ nTbxResId = TBX_OPTIMIZE_TABLE;
+
+ WindowAlign eAlign = WINDOWALIGN_TOP;
+ if(GetToolBox().IsHorizontal())
+ eAlign = WINDOWALIGN_LEFT;
+ SwPopupWindowTbxMgr *pWin = new SwPopupWindowTbxMgr( GetId(),
+ eAlign,
+ SW_RES(nWinResId),
+ SW_RES(nTbxResId),
+ GetBindings());
+ pWin->StartPopupMode(&GetToolBox(), TRUE);
+ pWin->StartSelection();
+ pWin->Show();
+ return pWin;
+
+}
+
+/**********************************************************************
+
+**********************************************************************/
+
+
+
+SfxPopupWindowType SwTableOptimizeCtrl::GetPopupWindowType() const
+{
+ return SFX_POPUPWINDOW_ONCLICK;
+}
+
+
+/***********************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.10 2000/09/18 16:06:01 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.9 2000/03/03 15:17:03 os
+ StarView remainders removed
+
+ Revision 1.8 1997/11/24 13:54:00 MA
+ includes
+
+
+ Rev 1.7 24 Nov 1997 14:54:00 MA
+ includes
+
+ Rev 1.6 03 Nov 1997 13:24:22 MA
+ precomp entfernt
+
+ Rev 1.5 24 Mar 1997 01:43:52 OS
+ Alignment aussen einstellen
+
+ Rev 1.4 23 Mar 1997 23:54:26 OS
+ ToolBoxAlign statt ToolBoxControl uebergeben
+
+ Rev 1.3 29 Jan 1997 14:52:24 OM
+ Draw-Toolboxen ins Svx verschoben
+
+ Rev 1.2 14 Nov 1996 15:40:48 TRI
+ includes
+
+ Rev 1.1 11 Nov 1996 11:15:14 MA
+ ResMgr
+
+ Rev 1.0 08 Nov 1996 13:39:36 OS
+ Initial revision.
+
+
+***********************************************************************/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sw/source/ui/ribbar/tblctrl.hrc b/sw/source/ui/ribbar/tblctrl.hrc
new file mode 100644
index 000000000000..83e06af7de73
--- /dev/null
+++ b/sw/source/ui/ribbar/tblctrl.hrc
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * $RCSfile: tblctrl.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _TBLCTRL_HRC
+#define _TBLCTRL_HRC
+#include "ribbar.hrc"
+
+#define TBX_OPTIMIZE_TABLE 1
+
+#endif
+
+
diff --git a/sw/source/ui/ribbar/tblctrl.src b/sw/source/ui/ribbar/tblctrl.src
new file mode 100644
index 000000000000..2a1fb1d9463c
--- /dev/null
+++ b/sw/source/ui/ribbar/tblctrl.src
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * $RCSfile: tblctrl.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "tblctrl.hrc"
+#include "helpid.h"
+#include "cmdid.h"
+#define IMAGE_STDBTN_COLOR Color { Red = 0xC000; Green = 0xC000; Blue = 0xC000; }
+FloatingWindow RID_TBL_OPT_CTRL
+{
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ HelpID = HID_TBL_OPT_CTRL ;
+ Text = "Optimieren" ;
+ Text [ English ] = "Optimieren" ;
+ ToolBox TBX_OPTIMIZE_TABLE
+ {
+ MenuStrings = TRUE ;
+ SVLook = TRUE ;
+ HelpID = 1 ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_BALANCE_CELLS ;
+ HelpID = FN_TABLE_BALANCE_CELLS ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_BALANCE_ROWS ;
+ HelpID = FN_TABLE_BALANCE_ROWS ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_OPTIMAL_HEIGHT ;
+ HelpID = FN_TABLE_OPTIMAL_HEIGHT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_ADJUST_CELLS ;
+ HelpID = FN_TABLE_ADJUST_CELLS ;
+ };
+ };
+ };
+ Text [ english_us ] = "Optimize" ;
+ Text [ italian ] = "Ottimizza" ;
+ Text [ spanish ] = "Optimar" ;
+ Text [ french ] = "Optimiser" ;
+ Text [ dutch ] = "Optimaliseren" ;
+ Text [ swedish ] = "Optimera" ;
+ Text [ danish ] = "Optimer" ;
+ Text [ portuguese_brazilian ] = "Optimieren" ;
+ Text [ portuguese ] = "Optimizar" ;
+ Text[ chinese_simplified ] = "×î¼Ñ»¯";
+ Text[ russian ] = "Îïòèìèçèðîâàòü";
+ Text[ polish ] = "Optymalizuj";
+ Text[ japanese ] = "Å“K‰»‚·‚é";
+ Text[ chinese_traditional ] = "³ÌÓì¤Æ";
+ Text[ arabic ] = "ÇáÔßá ÇáÃãËá";
+ Text[ greek ] = "Âåëôéóôïðïßçóç";
+ Text[ korean ] = "ÃÖÀûÈ­";
+ Text[ turkish ] = "Optimize et";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/ribbar/tbxanchr.cxx b/sw/source/ui/ribbar/tbxanchr.cxx
new file mode 100644
index 000000000000..c981b5563955
--- /dev/null
+++ b/sw/source/ui/ribbar/tbxanchr.cxx
@@ -0,0 +1,240 @@
+/*************************************************************************
+ *
+ * $RCSfile: tbxanchr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <string> // HACK: prevent conflict between STLPORT and Workshop headers
+
+#ifndef _SV_TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _TOOLBOX_HXX //autogen
+#include <vcl/toolbox.hxx>
+#endif
+#ifndef _SFXMNUMGR_HXX //autogen
+#include <sfx2/mnumgr.hxx>
+#endif
+
+
+#include "cmdid.h"
+#include "docsh.hxx"
+#include "swtypes.hxx"
+#include "swmodule.hxx"
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "viewopt.hxx"
+#include "errhdl.hxx"
+#include "ribbar.hrc"
+#include "tbxanchr.hxx"
+
+
+
+SFX_IMPL_TOOLBOX_CONTROL(SwTbxAnchor, SfxUInt16Item);
+
+/******************************************************************************
+ * Beschreibung:
+ ******************************************************************************/
+
+SwTbxAnchor::SwTbxAnchor(USHORT nId, ToolBox& rTbx, SfxBindings& rBind) :
+ SfxToolBoxControl(nId, rTbx, rBind),
+ nActAnchorId(0)
+{
+}
+
+/******************************************************************************
+ * Beschreibung:
+ ******************************************************************************/
+
+ SwTbxAnchor::~SwTbxAnchor()
+{
+}
+
+/******************************************************************************
+ * Beschreibung:
+ ******************************************************************************/
+
+void SwTbxAnchor::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)
+ nActAnchorId = pItem->GetValue();
+ }
+
+}
+
+/******************************************************************************
+ * Beschreibung:
+ ******************************************************************************/
+
+void SwTbxAnchor::Click()
+{
+ PopupMenu aPopMenu(SW_RES(MN_ANCHOR_POPUP));
+
+ SwView* pView = ::GetActiveView();
+ SwWrtShell* pWrtShell = pView->GetWrtShellPtr();
+ aPopMenu.EnableItem( FN_TOOL_ANKER_FRAME, 0 != pWrtShell->IsFlyInFly() );
+
+ Rectangle aRect(GetToolBox().GetItemRect(FN_TOOL_ANKER));
+ USHORT nHtmlMode = ::GetHtmlMode((SwDocShell*)SfxObjectShell::Current());
+ BOOL bHtmlModeNoAnchor = ( nHtmlMode & HTMLMODE_ON) && 0 == (nHtmlMode & HTMLMODE_SOME_ABS_POS);
+
+ if (bHtmlModeNoAnchor || pWrtShell->IsInHeaderFooter())
+ aPopMenu.RemoveItem(aPopMenu.GetItemPos(FN_TOOL_ANKER_PAGE));
+
+ if (!pWrtShell->IsFrmSelected())
+ aPopMenu.RemoveItem(aPopMenu.GetItemPos(FN_TOOL_ANKER_AT_CHAR));
+
+ if (nActAnchorId)
+ aPopMenu.CheckItem(nActAnchorId);
+
+
+ USHORT nSlotId = aPopMenu.Execute(&GetToolBox(), aRect.BottomLeft());
+ GetToolBox().EndSelection();
+
+ if (nSlotId)
+ pView->GetViewFrame()->GetDispatcher()->Execute(nSlotId, SFX_CALLMODE_ASYNCHRON|SFX_CALLMODE_RECORD);
+}
+
+/***********************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.18 2000/09/18 16:06:02 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.17 2000/09/07 15:59:27 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.16 2000/05/24 12:36:18 hr
+ conflict between STLPORT and Workshop header
+
+ Revision 1.15 2000/02/11 14:56:54 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.14 1999/07/02 11:22:28 OS
+ #64782# anchor type page in hader or footer disabled
+
+
+ Rev 1.13 02 Jul 1999 13:22:28 OS
+ #64782# anchor type page in hader or footer disabled
+
+ Rev 1.12 24 Apr 1998 08:57:10 OS
+ Seitenbindung fuer HTML-Rahmen bedingt erlauben
+
+ Rev 1.11 31 Mar 1998 15:21:02 AMA
+ Fix #47521#: IsFlyInFly liefert jetzt das Format des potentiellen Ankers
+
+ Rev 1.10 29 Jan 1998 14:59:22 OM
+ Am Zeichen verankern
+
+ Rev 1.9 10 Dec 1997 11:38:48 TJ
+ include
+
+ Rev 1.8 28 Nov 1997 19:57:26 MA
+ includes
+
+ Rev 1.7 24 Nov 1997 14:53:58 MA
+ includes
+
+ Rev 1.6 12 Sep 1997 15:33:26 AMA
+ Neu: IsFlyInFly wird gefragt, ob Verankerung am Rahmen zugelassen ist.
+
+ Rev 1.5 29 Aug 1997 15:45:34 OS
+ PopupMenu::Execute mit Window* fuer VCL
+
+ Rev 1.4 08 Aug 1997 17:29:58 OM
+ Headerfile-Umstellung
+
+ Rev 1.3 04 Jun 1997 16:07:06 MH
+ Syntax
+
+ Rev 1.2 04 Jun 1997 12:37:22 OS
+ Rahmen an Rahmen nicht in der 4.0; Segmentierung raus
+
+ Rev 1.1 03 Mar 1997 16:41:22 OM
+ Segmentiert
+
+ Rev 1.0 03 Mar 1997 14:24:08 OM
+ Initial revision.
+
+***********************************************************************/
+
+
diff --git a/sw/source/ui/ribbar/tbxanchr.src b/sw/source/ui/ribbar/tbxanchr.src
new file mode 100644
index 000000000000..90ee969d9b1e
--- /dev/null
+++ b/sw/source/ui/ribbar/tbxanchr.src
@@ -0,0 +1,204 @@
+/*************************************************************************
+ *
+ * $RCSfile: tbxanchr.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "ribbar.hrc"
+#include "cmdid.h"
+Menu MN_ANCHOR_POPUP
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ _MenuItemFlags = MIB_RADIOCHECK ;
+ RadioCheck = TRUE ;
+ Identifier = FN_TOOL_ANKER_PAGE ;
+ Text = "Seite" ;
+ Text [ ENGLISH ] = "Page" ;
+ Text [ portuguese ] = "Página" ;
+ Text [ english_us ] = "Page" ;
+ Text [ portuguese_brazilian ] = "Seite" ;
+ Text [ swedish ] = "Sida" ;
+ Text [ danish ] = "Side" ;
+ Text [ italian ] = "Pagina" ;
+ Text [ spanish ] = "Página" ;
+ Text [ french ] = "À la page" ;
+ Text [ dutch ] = "Pagina" ;
+ 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 ] = " ";
+ };
+ MenuItem
+ {
+ _MenuItemFlags = MIB_RADIOCHECK ;
+ RadioCheck = TRUE ;
+ Identifier = FN_TOOL_ANKER_PARAGRAPH ;
+ Text = "Absatz" ;
+ Text [ ENGLISH ] = "Paragraph" ;
+ Text [ portuguese ] = "Parágrafo" ;
+ Text [ english_us ] = "Paragraph" ;
+ Text [ portuguese_brazilian ] = "Absatz" ;
+ Text [ swedish ] = "Stycke" ;
+ Text [ danish ] = "Afsnit" ;
+ Text [ italian ] = "Paragrafo" ;
+ Text [ spanish ] = "Párrafo" ;
+ Text [ french ] = "Paragraphe" ;
+ Text [ dutch ] = "Alinea" ;
+ Text[ chinese_simplified ] = "¶ÎÂä";
+ Text[ russian ] = "Àáçàö";
+ Text[ polish ] = "Akapit";
+ Text[ japanese ] = "’i—Ž";
+ Text[ chinese_traditional ] = "¬q¸¨";
+ Text[ arabic ] = "ÝÞÑÉ";
+ Text[ greek ] = "ÐáñÜãñáöïò";
+ Text[ korean ] = "´Ü¶ô";
+ Text[ turkish ] = "Paragrafa";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ _MenuItemFlags = MIB_RADIOCHECK ;
+ RadioCheck = TRUE ;
+ Identifier = FN_TOOL_ANKER_AT_CHAR ;
+ Text = "Am Zeichen" ;
+ Text [ ENGLISH ] = "At character" ;
+ Text [ english_us ] = "At Character" ;
+ Text [ portuguese_brazilian ] = "Am Zeichen" ;
+ Text [ swedish ] = "Vid tecken" ;
+ Text [ danish ] = "Til tegn" ;
+ Text [ italian ] = "Al carattere" ;
+ Text [ spanish ] = "Al carácter" ;
+ Text [ french ] = "Au caractère" ;
+ Text [ dutch ] = "Aan teken" ;
+ Text [ portuguese ] = "No carácter" ;
+ Text[ chinese_simplified ] = "ÔÚ×Ö·ûÉÏ";
+ Text[ russian ] = "Ê çíàêó";
+ Text[ polish ] = "Przy znaku";
+ Text[ japanese ] = "•¶Žš‚É";
+ Text[ chinese_traditional ] = "¦b¦r¤¸¤W";
+ Text[ arabic ] = "Úáì ÇáÍÑÝ";
+ Text[ greek ] = "Ùò ÷áñáêôÞñáò";
+ Text[ korean ] = "¹®ÀÚ¿¡";
+ Text[ turkish ] = "Karaktere";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ _MenuItemFlags = MIB_RADIOCHECK ;
+ RadioCheck = TRUE ;
+ Identifier = FN_TOOL_ANKER_CHAR ;
+ Text = "Als Zeichen" ;
+ Text [ ENGLISH ] = "Like a character" ;
+ Text [ portuguese ] = "Como carácter" ;
+ Text [ english_us ] = "As Character" ;
+ Text [ portuguese_brazilian ] = "Zeichen" ;
+ Text [ swedish ] = "Som tecken" ;
+ Text [ danish ] = "Som tegn" ;
+ Text [ italian ] = "Quale carattere" ;
+ Text [ spanish ] = "Como carácter" ;
+ Text [ french ] = "Comme caractère" ;
+ Text [ dutch ] = "Als teken" ;
+ Text[ chinese_simplified ] = "µ±×÷×Ö·û";
+ Text[ russian ] = "Êàê çíàê";
+ Text[ polish ] = "Jako znak";
+ Text[ japanese ] = "•¶Žš‚Æ‚µ‚Ä";
+ Text[ chinese_traditional ] = "·í§@¦r¤¸";
+ Text[ arabic ] = "ßÍÑÝ";
+ Text[ greek ] = "Ùò ÷áñáêôÞñáò";
+ Text[ korean ] = "¹®ÀÚ·Î";
+ Text[ turkish ] = "Karakter olarak";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ _MenuItemFlags = MIB_RADIOCHECK ;
+ RadioCheck = TRUE ;
+ Identifier = FN_TOOL_ANKER_FRAME ;
+ Text = "Rahmen" ;
+ Text [ ENGLISH ] = "Frame" ;
+ Text [ portuguese ] = "Moldura" ;
+ Text [ english_us ] = "Frame" ;
+ Text [ portuguese_brazilian ] = "Rahmen" ;
+ Text [ swedish ] = "Ram" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ italian ] = "Cornice" ;
+ Text [ spanish ] = "Marco" ;
+ Text [ french ] = "Cadre" ;
+ Text [ dutch ] = "Kader" ;
+ Text[ chinese_simplified ] = "¿ò";
+ Text[ russian ] = "Ðàìêà";
+ Text[ polish ] = "Ramka";
+ Text[ japanese ] = "˜g";
+ Text[ chinese_traditional ] = "¤å¦r¤è¶ô";
+ Text[ arabic ] = "ÅØÇÑ";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "Çerçeve";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
diff --git a/sw/source/ui/ribbar/tbxmgr.cxx b/sw/source/ui/ribbar/tbxmgr.cxx
new file mode 100644
index 000000000000..bf7b2cc47480
--- /dev/null
+++ b/sw/source/ui/ribbar/tbxmgr.cxx
@@ -0,0 +1,304 @@
+/*************************************************************************
+ *
+ * $RCSfile: tbxmgr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "cmdid.h"
+#include "swtypes.hxx" // nur wegen aEmptyString??
+#include "errhdl.hxx"
+#include "wdocsh.hxx"
+#include "tbxmgr.hxx"
+
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+SwPopupWindowTbxMgr::SwPopupWindowTbxMgr( USHORT nId, WindowAlign eAlign,
+ ResId aRIdWin, ResId aRIdTbx,
+ SfxBindings& rBindings ) :
+ SvxPopupWindowTbxMgr( nId, eAlign, aRIdWin, aRIdTbx, rBindings),
+ bWeb(FALSE),
+ aRIdWinTemp(aRIdWin),
+ aRIdTbxTemp(aRIdTbx)
+{
+ SfxObjectShell* pObjShell = SfxObjectShell::Current();
+ if(PTR_CAST(SwWebDocShell, pObjShell))
+ {
+ bWeb = TRUE;
+ ToolBox& rTbx = GetTbxMgr().GetToolBox();
+ // jetzt muessen ein paar Items aus der Toolbox versteckt werden:
+ switch(nId)
+ {
+ case FN_INSERT_CTRL:
+ rTbx.ShowItem(FN_INSERT_FRAME_INTERACT_NOCOL);
+ rTbx.HideItem(FN_INSERT_FRAME_INTERACT);
+ rTbx.HideItem(FN_INSERT_FOOTNOTE);
+ rTbx.HideItem(FN_INSERT_ENDNOTE);
+ rTbx.HideItem(FN_PAGE_STYLE_SET_COLS);
+ rTbx.HideItem(FN_INSERT_IDX_ENTRY_DLG);
+
+ break;
+ case FN_INSERT_FIELD_CTRL:
+ rTbx.HideItem(FN_INSERT_FLD_PGNUMBER);
+ rTbx.HideItem(FN_INSERT_FLD_PGCOUNT);
+ rTbx.HideItem(FN_INSERT_FLD_TOPIC);
+ rTbx.HideItem(FN_INSERT_FLD_TITLE);
+ break;
+ }
+ }
+ else if( FN_INSERT_CTRL == nId)
+ {
+ ToolBox& rTbx = GetTbxMgr().GetToolBox();
+ rTbx.ShowItem(FN_INSERT_FRAME_INTERACT);
+ rTbx.HideItem(FN_INSERT_FRAME_INTERACT_NOCOL);
+ }
+
+ Size aSize = GetTbxMgr().CalcWindowSizePixel();
+ GetTbxMgr().SetPosSizePixel( Point(), aSize );
+ SetOutputSizePixel( aSize );
+}
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+void SwPopupWindowTbxMgr::StateChanged(USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState)
+{
+ static USHORT __READONLY_DATA aInsertCtrl[] =
+ {
+ FN_INSERT_FRAME_INTERACT,
+ FN_INSERT_FOOTNOTE,
+ FN_INSERT_ENDNOTE,
+ FN_PAGE_STYLE_SET_COLS,
+ FN_INSERT_IDX_ENTRY_DLG,
+ 0
+ };
+ static USHORT __READONLY_DATA aInsertFld[] =
+ {
+ FN_INSERT_FLD_PGNUMBER,
+ FN_INSERT_FLD_PGCOUNT,
+ FN_INSERT_FLD_TOPIC,
+ FN_INSERT_FLD_TITLE,
+ 0
+ };
+
+ SfxObjectShell* pObjShell = SfxObjectShell::Current();
+ BOOL bNewWeb = 0 != PTR_CAST(SwWebDocShell, pObjShell);
+ if(bWeb != bNewWeb)
+ {
+ bWeb = bNewWeb;
+ ToolBox& rTbx = GetTbxMgr().GetToolBox();
+ // jetzt muessen ein paar Items aus der Toolbox versteckt werden:
+ const USHORT* pSid = 0;
+
+ switch(nSID)
+ {
+ case FN_INSERT_CTRL:
+ pSid = &aInsertCtrl[0];
+ if(bWeb)
+ rTbx.ShowItem(FN_INSERT_FRAME_INTERACT_NOCOL);
+ else
+ rTbx.HideItem(FN_INSERT_FRAME_INTERACT_NOCOL);
+ break;
+ case FN_INSERT_FIELD_CTRL:
+ pSid = & aInsertFld[0];
+ break;
+ }
+ if(pSid)
+ {
+ if(bWeb)
+ while(*pSid)
+ {
+ rTbx.HideItem(*pSid);
+ pSid++;
+ }
+ else
+ while(*pSid)
+ {
+ rTbx.ShowItem(*pSid);
+ pSid++;
+ }
+ Size aSize = GetTbxMgr().CalcWindowSizePixel();
+ GetTbxMgr().SetPosSizePixel( Point(), aSize );
+ SetOutputSizePixel( aSize );
+ }
+ }
+ SfxPopupWindow::StateChanged(nSID, eState, pState);
+}
+
+
+SfxPopupWindow* SwPopupWindowTbxMgr::Clone() const
+{
+ return new SwPopupWindowTbxMgr(
+ GetId(),
+ ((SwPopupWindowTbxMgr*)this)->GetTbxMgr().GetToolBox().GetAlign(),
+ aRIdWinTemp,
+ aRIdTbxTemp,
+ (SfxBindings&)GetBindings()
+ );
+}
+
+/***********************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.10 2000/09/18 16:06:02 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.9 2000/06/20 14:48:39 os
+ #70060# less occurences of columns in HTML
+
+ Revision 1.8 2000/03/03 15:17:03 os
+ StarView remainders removed
+
+ Revision 1.7 1999/02/12 07:21:26 OS
+ #61547# InsertEndnote in der Wz.Leiste
+
+
+ Rev 1.6 12 Feb 1999 08:21:26 OS
+ #61547# InsertEndnote in der Wz.Leiste
+
+ Rev 1.5 06 Apr 1998 09:57:30 OS
+ INSERT_FRAME_INTERACT fuer HTML wieder erlaubt
+
+ Rev 1.4 24 Nov 1997 14:53:58 MA
+ includes
+
+ Rev 1.3 03 Nov 1997 13:24:20 MA
+ precomp entfernt
+
+ Rev 1.2 23 Mar 1997 23:54:26 OS
+ ToolBoxAlign statt ToolBoxControl uebergeben
+
+ Rev 1.1 29 Jan 1997 17:16:36 NF
+ includes...
+
+ Rev 1.0 29 Jan 1997 14:51:48 OM
+ Initial revision.
+
+ Rev 1.36 28 Jan 1997 16:29:50 OS
+ Anpassung der ToolBox an die DocShell
+
+ Rev 1.35 15 Jan 1997 11:32:52 OM
+ Bezier-Controller entfernt
+
+ Rev 1.34 11 Dec 1996 12:33:46 OM
+ Bezier-Controller
+
+ Rev 1.33 30 Nov 1996 14:07:24 OS
+ SID_OBJECT_ALIGN: dieser Controller tauscht die Images nicht aus!
+
+ Rev 1.32 25 Nov 1996 10:56:50 OS
+ SwPopupWindowTbx entfernt
+
+ Rev 1.31 23 Nov 1996 12:41:26 OS
+ StateChanged fuer ...TbxMgr
+
+ Rev 1.30 14 Nov 1996 10:22:50 TRI
+ includes
+
+ Rev 1.29 13 Nov 1996 15:30:08 OS
+ RegisterToolBox nur noch fuer ..OUTSTYLE
+
+ Rev 1.28 12 Nov 1996 10:20:32 OS
+ Image an der Toolbox kann nur der Toolboxmgr selbst setzen
+
+ Rev 1.27 22 Oct 1996 10:47:38 OS
+ Image an der Toolbox austauschen
+
+ Rev 1.26 18 Oct 1996 08:52:02 OS
+ Alignment berichtigt
+
+ Rev 1.25 14 Oct 1996 13:38:26 OS
+ UseDefault statt Initialize am SfxToolBoxManager
+
+ Rev 1.24 10 Oct 1996 10:37:14 OS
+ Registrierung der Toolbox am SfxImageManager
+
+ Rev 1.23 26 Sep 1996 08:17:24 OS
+ Execute am Dispatcher mit OL abschliessen
+
+ Rev 1.22 23 Sep 1996 14:44:00 OS
+ Slot fuer ToolboxItem auch im SelectHdl rufen
+
+ Rev 1.21 19 Sep 1996 19:40:04 HJS
+ fehlende includes
+
+ Rev 1.20 19 Sep 1996 16:05:14 OS
+ neu: SwPopupWindowTbxMgr
+
+ Rev 1.19 28 Aug 1996 13:39:28 OS
+ includes
+
+ Rev 1.18 29 Jul 1996 15:16:04 OS
+ Clone impl.
+
+***********************************************************************/
+
diff --git a/sw/source/ui/ribbar/workctrl.cxx b/sw/source/ui/ribbar/workctrl.cxx
new file mode 100644
index 000000000000..c0c4eb92386d
--- /dev/null
+++ b/sw/source/ui/ribbar/workctrl.cxx
@@ -0,0 +1,838 @@
+/*************************************************************************
+ *
+ * $RCSfile: workctrl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <string> // HACK: prevent conflict between STLPORT and Workshop headers
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+
+
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _INITUI_HXX
+#include <initui.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _GLOSHDL_HXX
+#include <gloshdl.hxx>
+#endif
+#ifndef _GLOSSARY_HXX
+#include <glossary.hxx>
+#endif
+#ifndef _GLOSDOC_HXX
+#include <glosdoc.hxx>
+#endif
+#ifndef _GLOSLST_HXX
+#include <gloslst.hxx>
+#endif
+#ifndef _TBXMGR_HXX
+#include <tbxmgr.hxx>
+#endif
+#ifndef _WORKCTRL_HXX
+#include <workctrl.hxx>
+#endif
+#ifndef _WORKCTRL_HRC
+#include <workctrl.hrc>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _WRTSH_HXX //autogen
+#include <wrtsh.hxx>
+#endif
+
+
+//JP 14.01.99: Size Abpruefung
+#define NAVI_ENTRIES 20
+#if NAVI_ENTRIES != NID_COUNT
+#error SwScrollNaviPopup-CTOR static Array falsche Size. Wurden neue IDs zugefuegt ??
+#endif
+
+
+SFX_IMPL_TOOLBOX_CONTROL( SwTbxInsertCtrl, SfxUInt16Item);
+SFX_IMPL_TOOLBOX_CONTROL( SwTbxAutoTextCtrl, SfxBoolItem );
+
+/**********************************************************************
+
+**********************************************************************/
+
+
+
+SwTbxInsertCtrl::SwTbxInsertCtrl( USHORT nId,
+ ToolBox& rTbx,
+ SfxBindings& rBind ) :
+ SfxToolBoxControl( nId, rTbx, rBind ),
+ nLastSlotId(0)
+{
+}
+/**********************************************************************
+
+**********************************************************************/
+
+
+SwTbxInsertCtrl::~SwTbxInsertCtrl()
+{
+}
+
+/**********************************************************************
+
+**********************************************************************/
+
+
+void SwTbxInsertCtrl::StateChanged( USHORT nSID,
+ SfxItemState eState,
+ const SfxPoolItem* pState )
+{
+ USHORT nId = GetId();
+ GetToolBox().EnableItem( nId, (GetItemState(pState) != SFX_ITEM_DISABLED) );
+
+ if( eState == SFX_ITEM_AVAILABLE )
+ {
+ const SfxUInt16Item* pItem = PTR_CAST( SfxUInt16Item, pState );
+ if(pItem)
+ {
+ nLastSlotId = pItem->GetValue();
+ if( nLastSlotId )
+ nId = nLastSlotId;
+ Image aImage = SFX_IMAGEMANAGER()->GetImage( nId, SW_MOD() );
+ GetToolBox().SetItemImage(GetId(), aImage);
+ }
+ }
+
+}
+/**********************************************************************
+
+**********************************************************************/
+
+
+SfxPopupWindow* SwTbxInsertCtrl::CreatePopupWindow()
+{
+ USHORT nWinResId, nTbxResId;
+ if(GetId() == FN_INSERT_CTRL)
+ {
+ nWinResId = RID_INSERT_CTRL;
+ nTbxResId = TBX_INSERT;
+ }
+ else /* FN_INSERT_OBJ_CTRL */
+ {
+ nWinResId = RID_INSERT_OBJ_CTRL;
+ nTbxResId = TBX_OBJ_INSERT;
+ }
+
+ WindowAlign eAlign = WINDOWALIGN_TOP;
+ if(GetToolBox().IsHorizontal())
+ eAlign = WINDOWALIGN_LEFT;
+ SwPopupWindowTbxMgr *pWin = new SwPopupWindowTbxMgr( GetId(),
+ eAlign,
+ SW_RES(nWinResId),
+ SW_RES(nTbxResId),
+ GetBindings());
+
+ pWin->StartPopupMode(&GetToolBox(), TRUE);
+ pWin->StartSelection();
+ pWin->Show();
+ return pWin;
+
+}
+
+/**********************************************************************
+
+**********************************************************************/
+
+
+SfxPopupWindowType SwTbxInsertCtrl::GetPopupWindowType() const
+{
+ return nLastSlotId ? SFX_POPUPWINDOW_ONTIMEOUT : SFX_POPUPWINDOW_ONCLICK;
+}
+
+
+/**********************************************************************
+
+**********************************************************************/
+
+
+void SwTbxInsertCtrl::Select( BOOL bMod1 )
+{
+ if(nLastSlotId)
+ SfxViewFrame::Current()->GetDispatcher()->Execute(nLastSlotId);
+}
+
+/**********************************************************************
+
+**********************************************************************/
+
+
+SwTbxAutoTextCtrl::SwTbxAutoTextCtrl( USHORT nId,
+ ToolBox& rTbx,
+ SfxBindings& rBind ) :
+ SfxToolBoxControl( nId, rTbx, rBind ),
+ pView(0),
+ pPopup(0)
+{
+}
+/**********************************************************************
+
+**********************************************************************/
+
+
+SwTbxAutoTextCtrl::~SwTbxAutoTextCtrl()
+{
+ DelPopup();
+}
+
+/**********************************************************************
+
+**********************************************************************/
+
+
+SfxPopupWindow* SwTbxAutoTextCtrl::CreatePopupWindow()
+{
+ pView = ::GetActiveView();
+ if(pView && !pView->GetDocShell()->IsReadOnly() &&
+ !pView->GetWrtShell().HasReadonlySel() )
+ {
+ ToolBox& rBox = GetToolBox();
+ Point aPt(rBox.OutputToScreenPixel(rBox.GetPointerPosPixel()));
+ if(pView)
+ {
+ Link aLnk = LINK(this, SwTbxAutoTextCtrl, PopupHdl);
+
+ if (GetId() == FN_INSERT_FIELD_CTRL)
+ {
+ pPopup = new PopupMenu(SW_RES(RID_INSERT_FIELD_CTRL));
+ pPopup->SetSelectHdl(aLnk);
+
+ if (::GetHtmlMode(pView->GetDocShell()) & HTMLMODE_ON)
+ {
+ pPopup->RemoveItem(pPopup->GetItemPos(FN_INSERT_FLD_PGCOUNT));
+ pPopup->RemoveItem(pPopup->GetItemPos(FN_INSERT_FLD_TOPIC));
+ }
+ }
+ else
+ {
+ pPopup = new PopupMenu;
+ SwGlossaryList* pGlossaryList = ::GetGlossaryList();
+ USHORT nGroupCount = pGlossaryList->GetGroupCount();
+ for(USHORT i = 1; i <= nGroupCount; i++)
+ {
+ // Gruppenname mit Pfad-Extension besorgen
+ String sTitle;
+ String sGroupName = pGlossaryList->GetGroupName(i - 1, FALSE, &sTitle);
+ USHORT nBlockCount = pGlossaryList->GetBlockCount(i -1);
+ if(nBlockCount)
+ {
+ USHORT nIndex = 100 * (i);
+ // aber ohne extension einfuegen
+ pPopup->InsertItem( i, sTitle);//sGroupName.GetToken(0, GLOS_DELIM));
+ PopupMenu* pSub = new PopupMenu;
+ pSub->SetSelectHdl(aLnk);
+ pPopup->SetPopupMenu(i, pSub);
+ for(USHORT j = 0; j < nBlockCount; j++)
+ {
+ String sEntry;
+ String sLongName(pGlossaryList->GetBlockName(i - 1, j, sEntry));
+ sEntry.AppendAscii(" - ");
+ sEntry += sLongName;
+ pSub->InsertItem(++nIndex, sEntry);
+ }
+ }
+ }
+ }
+ }
+ ToolBox* pToolBox = &GetToolBox();
+ USHORT nId = GetId();
+ pToolBox->SetItemDown( nId, TRUE );
+ pPopup->Execute( pToolBox, pToolBox->ScreenToOutputPixel( aPt ) );
+ pToolBox->SetItemDown( nId, FALSE );
+ }
+ GetToolBox().EndSelection();
+ DelPopup();
+ return 0;
+
+}
+
+
+/**********************************************************************
+
+**********************************************************************/
+
+
+SfxPopupWindowType SwTbxAutoTextCtrl::GetPopupWindowType() const
+{
+ return SFX_POPUPWINDOW_ONTIMEOUT;
+}
+
+/**********************************************************************
+
+**********************************************************************/
+
+
+void SwTbxAutoTextCtrl::StateChanged( USHORT nSID,
+ SfxItemState eState,
+ const SfxPoolItem* pState )
+{
+ GetToolBox().EnableItem( GetId(), (GetItemState(pState) != SFX_ITEM_DISABLED) );
+ if(FN_INSERT_FIELD_CTRL == nSID && eState >= SFX_ITEM_DEFAULT)
+ {
+ GetToolBox().CheckItem( GetId(), ((SfxBoolItem*)pState)->GetValue() );
+ }
+}
+
+/**********************************************************************
+
+**********************************************************************/
+
+
+IMPL_LINK(SwTbxAutoTextCtrl, PopupHdl, PopupMenu*, pMenu)
+{
+ int nId = pMenu->GetCurItemId();
+
+ if (GetId() == FN_INSERT_FIELD_CTRL)
+ {
+ SfxViewFrame::Current()->GetDispatcher()->Execute(nId);
+ }
+ else
+ {
+ USHORT nBlock = nId/100;
+
+ SwGlossaryList* pGlossaryList = ::GetGlossaryList();
+ String sShortName;
+ String sGroup = pGlossaryList->GetGroupName(nBlock - 1, FALSE);
+ String sLongName(pGlossaryList->GetBlockName(nBlock - 1, nId - (100 * nBlock) - 1, sShortName));
+
+ SwGlossaryHdl* pGlosHdl = pView->GetGlosHdl();
+ SwGlossaryDlg::SetActGroup(sGroup);
+ pGlosHdl->SetCurGroup(sGroup, TRUE);
+ pGlosHdl->InsertGlossary(sShortName);
+ }
+ return 0;
+}
+
+/**********************************************************************
+
+**********************************************************************/
+
+
+void SwTbxAutoTextCtrl::DelPopup()
+{
+ if(pPopup)
+ {
+ if (GetId() != FN_INSERT_FIELD_CTRL)
+ {
+ for( USHORT i = 0; i < pPopup->GetItemCount(); i ++ )
+ {
+ PopupMenu* pSubPopup = pPopup->GetPopupMenu(pPopup->GetItemId(i));
+ delete pSubPopup;
+ }
+ }
+ delete pPopup;
+ pPopup = 0;
+ }
+}
+
+/*-----------------19.02.97 10.52-------------------
+ Navigations-Popup
+--------------------------------------------------*/
+
+SwScrollNaviPopup::SwScrollNaviPopup( USHORT nId,
+ const ResId &rId,
+ SfxBindings & rBnd)
+ : SfxPopupWindow(nId, rId, rBnd),
+ aVSet(this, WB_NAMEFIELD),
+ aIList(ResId(IL_VALUES)),
+ rResId(rId),
+ nFwdId(FN_START_OF_NEXT_PAGE),
+ nBackId(FN_START_OF_PREV_PAGE)
+{
+ aVSet.SetHelpId(HID_NAVI_VS);
+ // die Konvertierungstabelle legt die Reihenfolge fest
+ static USHORT __READONLY_DATA aInsert[ NAVI_ENTRIES ] =
+ {
+ // -- erste Zeile
+ NID_TBL,
+ NID_FRM,
+ NID_GRF,
+ NID_OLE,
+ NID_PGE,
+ NID_OUTL,
+ NID_MARK,
+ NID_DRW,
+ NID_CTRL,
+ // -- zweite Zeile
+ NID_REG,
+ NID_BKM,
+ NID_SEL,
+ NID_FTN,
+ NID_POSTIT,
+ NID_SRCH_REP,
+ NID_INDEX_ENTRY,
+ NID_TABLE_FORMULA,
+ NID_TABLE_FORMULA_ERROR
+ };
+
+ aVSet.SetLineCount( 2 );
+ aVSet.SetColCount(NID_COUNT / 2 - 1);
+ for(USHORT i = 0; i < NID_COUNT - 2; i++)
+ {
+ USHORT nId = aInsert[i];
+ aVSet.InsertItem(nId, aIList.GetImage(nId));
+ // -2, weil es fuer Next/Prev keinen String gibt
+ USHORT nResStr = ST_TBL - 2 + nId - NID_START;
+ aVSet.SetItemText(nId, ResId(nResStr));
+ }
+ // erst hier!
+ FreeResource();
+
+ // diese Strings sind global
+ for( i = 0; i < 2 * NID_COUNT; i++)
+ {
+ sQuickHelp[i] = String(SW_RES(STR_IMGBTN_START + i));
+ }
+
+ Size aImgSize = aIList.GetImageSize();
+ aImgSize.Width() += 5;
+ aImgSize.Height() += 5;
+ Size aSz = aVSet.CalcWindowSizePixel(aImgSize, aVSet.GetItemCount() / 2, 2);
+ aVSet.SetPosSizePixel( Point(), aSz );
+ SetOutputSizePixel(aSz);
+ aVSet.SetSelectHdl(LINK(this, SwScrollNaviPopup, SelectHdl));
+ aVSet.StartSelection();
+ aVSet.Show();
+ SetBackground(Wallpaper(Color(COL_WHITE)));
+}
+/*-----------------19.02.97 12.45-------------------
+
+--------------------------------------------------*/
+
+SwScrollNaviPopup::~SwScrollNaviPopup()
+{
+}
+/*-----------------19.02.97 13.58-------------------
+
+--------------------------------------------------*/
+
+SfxPopupWindow* SwScrollNaviPopup::Clone() const
+{
+ return new SwScrollNaviPopup(GetId(), rResId, ( SfxBindings & ) GetBindings());
+}
+
+/*-----------------19.02.97 14.10-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK(SwScrollNaviPopup, SelectHdl, ValueSet*, pSet)
+{
+ USHORT nSet = pSet->GetSelectItemId();
+ if( nSet != NID_PREV && nSet != NID_NEXT )
+ {
+ SwView::SetMoveType(nSet);
+ aVSet.SetItemText(NID_NEXT, sQuickHelp[nSet - NID_START]);
+ aVSet.SetItemText(NID_PREV, sQuickHelp[nSet - NID_START + NID_COUNT]);
+ }
+ else
+ {
+ SfxBoolItem aNext(FN_SCROLL_NEXT_PREV, NID_NEXT == nSet);
+ SfxViewFrame::Current()->GetDispatcher()->
+ Execute(FN_SCROLL_NEXT_PREV,SFX_CALLMODE_SYNCHRON ,&aNext, 0L);
+ }
+ return 0;
+}
+/*-----------------23.02.97 18.21-------------------
+
+--------------------------------------------------*/
+
+void SwScrollNaviValueSet::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ ValueSet::MouseButtonUp(rMEvt);
+ if ( ((SwScrollNaviPopup*)GetParent())->IsInPopupMode() )
+ ((SwScrollNaviPopup*)GetParent())->EndPopupMode( FLOATWIN_POPUPMODEEND_CLOSEALL );
+}
+
+/*-----------------20.06.97 13:28-------------------
+
+--------------------------------------------------*/
+void SwScrollNaviValueSet::RequestHelp( const HelpEvent& rHEvt )
+{
+ USHORT nMoveType = SwView::GetMoveType();
+ SetItemText(NID_NEXT, SwScrollNaviPopup::GetQuickHelpText(TRUE));
+ SetItemText(NID_PREV, SwScrollNaviPopup::GetQuickHelpText(FALSE));
+ ValueSet::RequestHelp( rHEvt );
+
+}
+/*-----------------21.02.97 11:25-------------------
+
+--------------------------------------------------*/
+
+void SwScrollNaviPopup::PopupModeEnd()
+{
+ if(aVSet.GetItemCount() < NID_COUNT)
+ {
+ aVSet.InsertItem(NID_NEXT, aIList.GetImage(NID_NEXT), NID_COUNT);
+ aVSet.InsertItem(NID_PREV, aIList.GetImage(NID_PREV), NID_COUNT/2 - 1);
+ USHORT nItemBits = aVSet.GetItemBits(NID_NEXT);
+ nItemBits |= VIB_NODOUBLECLICK;
+ aVSet.SetItemBits(NID_NEXT, nItemBits);
+ aVSet.SetItemBits(NID_PREV, nItemBits);
+ Size aImgSize = aIList.GetImageSize();
+ aImgSize.Width() += 5;
+ aImgSize.Height() += 5;
+ aVSet.SetColCount(NID_COUNT/2);
+ Size aSz = aVSet.CalcWindowSizePixel(aImgSize, NID_COUNT / 2, 2);
+ aVSet.SetPosSizePixel( Point(), aSz );
+ SetOutputSizePixel(aSz);
+ }
+ SfxPopupWindow::PopupModeEnd();
+}
+
+/*-----------------20.06.97 13:41-------------------
+
+--------------------------------------------------*/
+String SwScrollNaviPopup::GetQuickHelpText(BOOL bNext)
+{
+ USHORT nResId = STR_IMGBTN_START;
+ nResId += SwView::GetMoveType() - NID_START;
+ if(!bNext)
+ nResId += NID_COUNT;
+ return String(SW_RES(nResId));
+}
+
+
+/*-----------------20.02.97 10:17-------------------
+
+--------------------------------------------------*/
+
+void SwNaviImageButton::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if(MOUSE_LEFT == rMEvt.GetButtons())
+ {
+ SfxBindings& rBind = SfxViewFrame::Current()->GetBindings();
+ rBind.ENTERREGISTRATIONS();
+ pPopup = new
+ SwScrollNaviPopup(FN_SCROLL_NAVIGATION,
+ SW_RES(RID_SCROLL_NAVIGATION_WIN),
+ rBind);
+ rBind.LEAVEREGISTRATIONS();
+ Point aPos = OutputToScreenPixel(Point(0,0));
+ Rectangle aRect(aPos, GetSizePixel());
+ pPopup->StartPopupMode(aRect, FLOATWIN_POPUPMODE_LEFT|FLOATWIN_POPUPMODE_ALLOWTEAROFF);
+ }
+ else
+ ImageButton::MouseButtonDown(rMEvt);
+}
+/*-----------------20.02.97 10:17-------------------
+
+--------------------------------------------------*/
+
+void SwNaviImageButton::MouseButtonUp( const MouseEvent& rMEvt )
+{
+}
+
+/*-----------------21.02.97 09:41-------------------
+
+--------------------------------------------------*/
+
+void SwHlpImageButton::RequestHelp( const HelpEvent& rHEvt )
+{
+
+ SetQuickHelpText(SwScrollNaviPopup::GetQuickHelpText(!bUp));
+
+ ImageButton::RequestHelp(rHEvt);
+}
+
+/*-----------------25.02.97 12:38-------------------
+
+--------------------------------------------------*/
+
+SwNaviImageButton::SwNaviImageButton(Window* pParent) :
+ ImageButton(pParent, SW_RES(BTN_NAVI)), pPopup(0),
+ aImage(ResId(IMG_BTN)),
+ sQuickText(ResId(ST_QUICK))
+{
+ FreeResource();
+ SetStyle(GetStyle()|WB_NOPOINTERFOCUS);
+ SetQuickHelpText(sQuickText);
+ SetImage(aImage);
+}
+
+/***********************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.62 2000/09/18 16:06:02 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.61 2000/09/07 15:59:27 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.60 2000/07/03 08:54:35 jp
+ must changes for VCL
+
+ Revision 1.59 2000/06/13 09:58:28 os
+ using UCB
+
+ Revision 1.58 2000/05/24 12:36:18 hr
+ conflict between STLPORT and Workshop header
+
+ Revision 1.57 2000/04/18 14:54:44 os
+ UNICODE
+
+ Revision 1.56 2000/03/03 15:17:03 os
+ StarView remainders removed
+
+ Revision 1.55 2000/02/10 10:37:03 os
+ #70359# titles added to AutoText groups
+
+ Revision 1.54 1999/04/01 11:58:32 OS
+ #64278# Zugriff auf Gruppen und Eintraege nur noch ueber Ids
+
+
+ Rev 1.53 01 Apr 1999 13:58:32 OS
+ #64278# Zugriff auf Gruppen und Eintraege nur noch ueber Ids
+
+ Rev 1.52 09 Feb 1999 10:47:44 OS
+ #61205# AutoText-Gruppen koennen beliebige Namen erhalten
+
+ Rev 1.51 05 Feb 1999 15:52:58 MA
+ #61463# Kein Popup fuer Glossary in Readonly
+
+ Rev 1.50 14 Jan 1999 15:49:58 JP
+ Bug #60794#: Fehlererkennung beim Tabellenrechnen und anspringen von Formeln
+
+ Rev 1.49 14 Jan 1999 14:18:46 JP
+ Bug #60794#: Fehlererkennung beim Tabellenrechnen und anspringen von Formeln
+
+ Rev 1.48 03 Dec 1998 10:25:20 OS
+ #59441# Verzeichniseintrag in der Navigation
+
+ Rev 1.47 03 Nov 1998 12:24:56 OS
+ 58830# Enter/LeaveRegistrations
+
+ Rev 1.46 12 Oct 1998 08:46:42 OS
+ #52973# GetImage() mit Module* aufrufen
+
+ Rev 1.45 18 Aug 1998 17:28:44 OS
+ GetShortName sollte auf bekannte Gruppe richtig reagieren #55219#
+
+ Rev 1.44 15 Jun 1998 10:39:28 OS
+ WB_NOPOINTERFOCUS
+
+ Rev 1.43 15 Jun 1998 09:36:42 OS
+ AutoText-Popup: Kuerzel mit angeben
+
+ Rev 1.42 24 Feb 1998 12:10:32 OS
+ Navigationstool erweitert
+
+ Rev 1.41 18 Feb 1998 14:45:12 OS
+ ItemBits an der richtigen Position setzen #46669#
+
+ Rev 1.40 16 Feb 1998 08:03:22 OS
+ VIB_NODOUBLECLICK setzen #46669#
+
+ Rev 1.39 07 Feb 1998 11:09:16 OS
+ initiale Groesse berichtigt #47144#
+
+ Rev 1.38 20 Jan 1998 12:27:42 OS
+ Next und Prev im SelectHdl ausfuehren #46669#
+
+ Rev 1.37 28 Nov 1997 20:17:34 MA
+ includes
+
+ Rev 1.36 24 Nov 1997 14:53:58 MA
+ includes
+
+ Rev 1.35 17 Oct 1997 09:11:08 OS
+ EndPopup rufen #44773#
+
+ Rev 1.34 19 Sep 1997 12:51:24 PB
+ chg: fuer VCL ToolBox::SetItemDown() eingebaut
+
+ Rev 1.33 18 Sep 1997 13:59:46 OS
+ Pointer::GetPosPixel fuer VCL ersetzt
+
+ Rev 1.32 18 Sep 1997 13:18:08 TJ
+ include
+
+ Rev 1.31 29 Aug 1997 15:45:34 OS
+ PopupMenu::Execute mit Window* fuer VCL
+
+ Rev 1.30 29 Aug 1997 14:27:06 OS
+ DLL-Umbau
+
+ Rev 1.29 09 Jul 1997 17:36:10 HJS
+ includes
+
+ Rev 1.28 20 Jun 1997 13:52:52 OS
+ Merker und Notizen in der Navigation
+
+ Rev 1.27 07 May 1997 15:30:12 OS
+ Execute mit 0L abschliessen fuer W16
+
+ Rev 1.26 05 May 1997 12:26:24 OS
+ QuickHelpText als Member, MouseButtonDwon: nur linke Taste!
+
+ Rev 1.25 07 Apr 1997 12:36:44 OS
+ HelpId fuer ValueSet
+
+ Rev 1.24 24 Mar 1997 01:43:52 OS
+ Alignment aussen einstellen
+
+ Rev 1.23 23 Mar 1997 23:54:26 OS
+ ToolBoxAlign statt ToolBoxControl uebergeben
+
+ Rev 1.22 25 Feb 1997 13:04:24 OS
+ Spruenge im MouseButtonUp
+
+ Rev 1.21 23 Feb 1997 22:07:40 OS
+ richtige Hilfetexte fuer Prev/Next-Buttons
+
+ Rev 1.20 23 Feb 1997 19:36:52 OS
+ MouseButtonDown im ValueSet erledigt die Spruenge -> kein hakliges Verhalten mehr
+
+ Rev 1.19 22 Feb 1997 20:16:26 OS
+ eigenes Image fuer Button
+
+ Rev 1.18 21 Feb 1997 19:35:42 OS
+ mit Prev/Next-Button
+
+ Rev 1.17 21 Feb 1997 17:04:48 OS
+ fast fertig
+
+ Rev 1.16 20 Feb 1997 16:45:02 OS
+ Navigation funktioniert
+
+ Rev 1.15 19 Feb 1997 20:56:26 HJS
+ auf nicht const gecastet
+
+ Rev 1.14 19 Feb 1997 16:55:16 OS
+ Popup fuer Navigation
+
+ Rev 1.13 17 Feb 1997 10:39:42 OM
+ Neue Feldbefehle im Webmode
+
+ Rev 1.12 06 Feb 1997 14:50:26 OM
+ feldbefehl Seitennummer im html-Mode erlauben
+
+ Rev 1.11 06 Feb 1997 14:32:52 OM
+ Popup-Controller fuer Feldbefehle einfuegen
+
+ Rev 1.10 29 Jan 1997 14:52:24 OM
+ Draw-Toolboxen ins Svx verschoben
+
+ Rev 1.9 11 Nov 1996 11:15:14 MA
+ ResMgr
+
+ Rev 1.8 27 Sep 1996 16:21:26 HJS
+ vertipper
+
+ Rev 1.7 27 Sep 1996 12:56:42 OS
+ PopupMenu wird bei Bedarf angelegt
+
+ Rev 1.6 26 Sep 1996 16:57:00 OS
+ Update der AutoText-Liste
+
+ Rev 1.5 24 Sep 1996 16:45:06 OS
+ View-Wechsel vor jedem Aufruf
+
+ Rev 1.4 23 Sep 1996 13:43:46 OS
+ beschleunigter Zugriff auf den GlosHdl
+
+ Rev 1.3 23 Sep 1996 08:11:42 OS
+ Menu fuer Autotexte
+
+ Rev 1.2 20 Sep 1996 14:44:28 OS
+ Zuerst kommt die Toolbox ohne Timer
+
+ Rev 1.1 19 Sep 1996 19:40:04 HJS
+ fehlende includes
+
+ Rev 1.0 19 Sep 1996 16:02:36 OS
+ Initial revision.
+
+***********************************************************************/
+
+
diff --git a/sw/source/ui/ribbar/workctrl.hrc b/sw/source/ui/ribbar/workctrl.hrc
new file mode 100644
index 000000000000..220dbc33673a
--- /dev/null
+++ b/sw/source/ui/ribbar/workctrl.hrc
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * $RCSfile: workctrl.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _WORKCTRL_HRC
+#define _WORKCTRL_HRC
+#include "ribbar.hrc"
+
+#define TBX_INSERT 1
+#define TBX_OBJ_INSERT 2
+#define TBX_FIELD_INSERT 3
+#define TBX_NAVIGATION 4
+#define IL_VALUES 5
+#define IMG_BTN 6
+#define ST_QUICK 7
+
+
+#define ST_TBL 12
+#define ST_FRM 13
+#define ST_PGE 14
+#define ST_DRW 15
+#define ST_CTRL 16
+#define ST_REG 17
+#define ST_BKM 18
+#define ST_GRF 19
+#define ST_OLE 20
+#define ST_OUTL 21
+#define ST_SEL 22
+#define ST_FTN 23
+#define ST_MARK 24
+#define ST_POSTIT 25
+#define ST_SRCH_REP 26
+#define ST_INDEX_ENTRY 27
+#define ST_TABLE_FORMULA 28
+#define ST_TABLE_FORMULA_ERROR 29
+
+// doppelter Eintrag! hrc und hxx
+// diese Ids bestimmen, was die Buttons unter dem Scrollbar tun
+#define NID_START 20000
+#define NID_NEXT 20000
+#define NID_PREV 20001
+#define NID_TBL 20002
+#define NID_FRM 20003
+#define NID_PGE 20004
+#define NID_DRW 20005
+#define NID_CTRL 20006
+#define NID_REG 20007
+#define NID_BKM 20008
+#define NID_GRF 20009
+#define NID_OLE 20010
+#define NID_OUTL 20011
+#define NID_SEL 20012
+#define NID_FTN 20013
+#define NID_MARK 20014
+#define NID_POSTIT 20015
+#define NID_SRCH_REP 20016
+#define NID_INDEX_ENTRY 20017
+#define NID_TABLE_FORMULA 20018
+#define NID_TABLE_FORMULA_ERROR 20019
+#define NID_COUNT 20
+
+#endif
diff --git a/sw/source/ui/ribbar/workctrl.src b/sw/source/ui/ribbar/workctrl.src
new file mode 100644
index 000000000000..01315ea11b48
--- /dev/null
+++ b/sw/source/ui/ribbar/workctrl.src
@@ -0,0 +1,1936 @@
+/*************************************************************************
+ *
+ * $RCSfile: workctrl.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+#ifndef _GLOBLMN_HRC
+#include <svx/globlmn.hrc>
+#endif
+#include "workctrl.hrc"
+#include "workctrl.hrc"
+#include "helpid.h"
+#include "cmdid.h"
+#define IMAGE_STDBTN_COLOR Color { Red = 0xC000; Green = 0xC000; Blue = 0xC000; }
+FloatingWindow RID_INSERT_CTRL
+{
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ HelpID = HID_INSERT_CTRL ;
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen : Einf³gen */
+ Text = "Einfügen" ;
+ Text [ English ] = "Insert" ;
+ ToolBox TBX_INSERT
+ {
+ MenuStrings = TRUE ;
+ SVLook = TRUE ;
+ HelpID = 1 ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_FRAME_INTERACT_NOCOL ;
+ HelpID = FN_INSERT_FRAME_INTERACT_NOCOL ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_FRAME_INTERACT ;
+ HelpID = FN_INSERT_FRAME_INTERACT ;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_INSERT_GRAPHIC ;
+ HelpID = SID_INSERT_GRAPHIC ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_TABLE ;
+ HelpID = FN_INSERT_TABLE ;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_INSERTDOC ;
+ HelpID = SID_INSERTDOC ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_FOOTNOTE ;
+ HelpID = FN_INSERT_FOOTNOTE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_ENDNOTE ;
+ HelpID = FN_INSERT_ENDNOTE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_SYMBOL ;
+ HelpID = FN_INSERT_SYMBOL ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_COLUMN_SECTION ;
+ HelpID = FN_INSERT_COLUMN_SECTION;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_IDX_ENTRY_DLG ;
+ HelpID = FN_INSERT_IDX_ENTRY_DLG ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_BOOKMARK ;
+ HelpID = FN_INSERT_BOOKMARK ;
+ RadioCheck = TRUE ;
+ };
+ };
+ };
+ Text [ english_us ] = "Insert" ;
+ Text [ italian ] = "Inserisci" ;
+ Text [ spanish ] = "Insertar" ;
+ Text [ french ] = "Insérer" ;
+ Text [ dutch ] = "Invoegen" ;
+ Text [ swedish ] = "Infoga" ;
+ Text [ danish ] = "Indsæt" ;
+ Text [ portuguese_brazilian ] = "Einfügen" ;
+ Text [ portuguese ] = "Inserir" ;
+ 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 ] = " ";
+};
+FloatingWindow RID_INSERT_OBJ_CTRL
+{
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ HelpID = HID_INSERT_OBJ_CTRL ;
+ /* ### ACHTUNG: Neuer Text in Resource? Objekt einfügen : Objekt einf³gen */
+ Text = "Objekt einfügen" ;
+ Text [ English ] = "Insert object" ;
+ ToolBox TBX_OBJ_INSERT
+ {
+ MenuStrings = TRUE ;
+ SVLook = TRUE ;
+ HelpID = 1 ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = SID_INSERT_DIAGRAM ;
+ HelpID = SID_INSERT_DIAGRAM ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_SIM ;
+ HelpID = FN_INSERT_SIM ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_SMA ;
+ HelpID = FN_INSERT_SMA ;
+ };
+ 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 [ 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" ;
+ 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 ] = " ";
+};
+Menu RID_INSERT_FIELD_CTRL
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = FN_INSERT_FLD_DATE ;
+ HelpID = FN_INSERT_FLD_DATE ;
+ Text = "Datum" ;
+ Text [ English ] = "Date" ;
+ Text [ english_us ] = "Date" ;
+ Text [ italian ] = "Data" ;
+ Text [ spanish ] = "Fecha" ;
+ Text [ french ] = "Date" ;
+ Text [ dutch ] = "Datum" ;
+ Text [ swedish ] = "Datum" ;
+ Text [ danish ] = "Dato" ;
+ Text [ portuguese_brazilian ] = "Datum" ;
+ Text [ portuguese ] = "Data" ;
+ 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 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FN_INSERT_FLD_TIME ;
+ HelpID = FN_INSERT_FLD_TIME ;
+ Text = "Uhrzeit" ;
+ Text [ English ] = "Time" ;
+ Text [ english_us ] = "Time" ;
+ Text [ italian ] = "Orario" ;
+ Text [ spanish ] = "Hora" ;
+ Text [ french ] = "Heure" ;
+ Text [ dutch ] = "Tijd" ;
+ Text [ swedish ] = "Klockslag" ;
+ Text [ danish ] = "Klokkeslæt" ;
+ Text [ portuguese_brazilian ] = "Uhrzeit" ;
+ Text [ portuguese ] = "Hora" ;
+ Text[ chinese_simplified ] = "ʱ¼ä";
+ Text[ russian ] = "Âðåìÿ";
+ Text[ polish ] = "Godzina";
+ Text[ japanese ] = "Žž";
+ Text[ chinese_traditional ] = "®É¶¡";
+ Text[ arabic ] = "ÇáæÞÊ";
+ Text[ greek ] = "¿ñá";
+ Text[ korean ] = "½Ã°£";
+ Text[ turkish ] = "Saat";
+ Text[ language_user1 ] = " ";
+ };
+ //#ifndef MN_SW_WEB
+ MenuItem
+ {
+ Identifier = FN_INSERT_FLD_PGNUMBER ;
+ HelpID = FN_INSERT_FLD_PGNUMBER ;
+ Text = "Seitennummer" ;
+ Text [ English ] = "Pagenumber" ;
+ Text [ dutch ] = "Paginanummer" ;
+ Text [ english_us ] = "Page Numbers" ;
+ Text [ italian ] = "Numeri di pagina" ;
+ Text [ spanish ] = "Número de página" ;
+ Text [ french ] = "Numéro de page" ;
+ Text [ swedish ] = "Sidnummer" ;
+ Text [ danish ] = "Sidetal" ;
+ Text [ portuguese_brazilian ] = "Seitennummer" ;
+ Text [ portuguese ] = "Número de página" ;
+ Text[ chinese_simplified ] = "Ò³Âë";
+ Text[ russian ] = "Íîìåð ñòðàíèöû";
+ Text[ polish ] = "Numer strony";
+ Text[ japanese ] = "Íß°¼Þ”Ô†";
+ Text[ chinese_traditional ] = "­¶½X";
+ Text[ arabic ] = "ÑÞã ÇáÕÝÍÉ";
+ Text[ greek ] = "Áñéèìüò óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ¼ö";
+ Text[ turkish ] = "Sayfa numarasý";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FN_INSERT_FLD_PGCOUNT ;
+ HelpID = FN_INSERT_FLD_PGCOUNT ;
+ Text = "Seitenanzahl" ;
+ Text [ English ] = "Pagecount" ;
+ Text [ dutch ] = "Aantal pagina´s" ;
+ Text [ english_us ] = "Page Count" ;
+ Text [ italian ] = "Numero di pagine" ;
+ Text [ spanish ] = "Contar páginas" ;
+ Text [ french ] = "Nombre de pages" ;
+ Text [ swedish ] = "Sidantal" ;
+ Text [ danish ] = "Sideantal" ;
+ Text [ portuguese_brazilian ] = "Seitenanzahl" ;
+ Text [ portuguese ] = "Total de páginas" ;
+ Text[ chinese_simplified ] = "Ò³Êý";
+ Text[ russian ] = "Êîëè÷åñòâî ñòðàíèö";
+ Text[ polish ] = "Liczba stron";
+ Text[ japanese ] = "Íß°¼Þ‘”";
+ Text[ chinese_traditional ] = "­¶¼Æ";
+ Text[ arabic ] = "ÚÏÏ ÇáÕÝÍÇÊ";
+ Text[ greek ] = "Óýíïëï óåëéäþí";
+ Text[ korean ] = "ÆäÀÌÁö Ä«¿îÆ®";
+ Text[ turkish ] = "Sayfa sayýsý";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FN_INSERT_FLD_TOPIC ;
+ HelpID = FN_INSERT_FLD_TOPIC ;
+ Text = "Thema" ;
+ Text [ English ] = "Topic" ;
+ Text [ english_us ] = "Subject" ;
+ Text [ italian ] = "Argomento" ;
+ Text [ spanish ] = "Tema" ;
+ Text [ french ] = "Sujet" ;
+ Text [ dutch ] = "Onderwerp" ;
+ Text [ swedish ] = "Ämne" ;
+ Text [ danish ] = "Emne" ;
+ Text [ portuguese_brazilian ] = "Thema" ;
+ Text [ portuguese ] = "Assunto" ;
+ 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 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FN_INSERT_FLD_TITLE ;
+ HelpID = FN_INSERT_FLD_TITLE ;
+ Text = "Titel" ;
+ Text [ English ] = "Title" ;
+ Text [ dutch ] = "Titel" ;
+ Text [ english_us ] = "Title" ;
+ Text [ italian ] = "Titolo" ;
+ Text [ spanish ] = "Título" ;
+ Text [ french ] = "Titre" ;
+ Text [ swedish ] = "Titel" ;
+ Text [ danish ] = "Titel" ;
+ Text [ portuguese_brazilian ] = "Titel" ;
+ Text [ portuguese ] = "Título" ;
+ Text[ chinese_simplified ] = "±êÌâ";
+ Text[ russian ] = "Çàãëàâèå";
+ Text[ polish ] = "Tytu³";
+ Text[ japanese ] = "À²ÄÙ";
+ Text[ chinese_traditional ] = "¼ÐÃD";
+ Text[ arabic ] = "ÇáÚäæÇä";
+ Text[ greek ] = "Ôßôëïò";
+ Text[ korean ] = "Á¦¸ñ";
+ Text[ turkish ] = "Baþlýk";
+ Text[ language_user1 ] = " ";
+ };
+ //#endif
+ MenuItem
+ {
+ Identifier = FN_INSERT_FLD_AUTHOR ;
+ HelpID = FN_INSERT_FLD_AUTHOR ;
+ Text = "Autor" ;
+ Text [ English ] = "Author" ;
+ Text [ dutch ] = "Auteur" ;
+ Text [ english_us ] = "Author" ;
+ Text [ italian ] = "Autore" ;
+ Text [ spanish ] = "Autor" ;
+ Text [ french ] = "Auteur" ;
+ Text [ swedish ] = "Författare" ;
+ Text [ danish ] = "Forfatter" ;
+ Text [ portuguese_brazilian ] = "Autor" ;
+ Text [ portuguese ] = "Autor" ;
+ Text[ chinese_simplified ] = "×÷Õß";
+ Text[ russian ] = "Àâòîð";
+ Text[ polish ] = "Autor";
+ Text[ japanese ] = "쬎Ò";
+ Text[ chinese_traditional ] = "§@ªÌ";
+ Text[ arabic ] = "ÇáãÄáÝ";
+ Text[ greek ] = "ÓõíôÜêôçò";
+ Text[ korean ] = "ÀÛ¼ºÀÎ";
+ Text[ turkish ] = "Yazan";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Separator = TRUE ;
+ };
+ MenuItem
+ {
+ Identifier = FN_INSERT_FIELD ;
+ HelpID = FN_INSERT_FIELD ;
+ Text = "Andere..." ;
+ Text [ English ] = "Other..." ;
+ Text [ english_us ] = "Other..." ;
+ Text [ italian ] = "Altro..." ;
+ Text [ spanish ] = "Otros..." ;
+ Text [ french ] = "Autres..." ;
+ Text [ dutch ] = "Andere..." ;
+ Text [ swedish ] = "Andra..." ;
+ Text [ danish ] = "Andre..." ;
+ Text [ portuguese ] = "Outros..." ;
+ Text [ portuguese_brazilian ] = "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 ] = " ";
+ };
+ };
+};
+FloatingWindow RID_SCROLL_NAVIGATION_WIN
+{
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ HelpID = HID_INSERT_CTRL ;
+ Text = "Navigation" ;
+ Text [ English ] = "Navigation" ;
+ ImageList IL_VALUES
+ {
+ ImageBitmap = Bitmap { File = "srnavi.bmp" ; };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ NID_NEXT ;
+ NID_PREV ;
+ NID_TBL ;
+ NID_FRM ;
+ NID_PGE ;
+ NID_DRW ;
+ NID_CTRL ;
+ NID_REG ;
+ NID_BKM ;
+ NID_GRF ;
+ NID_OLE ;
+ NID_OUTL ;
+ NID_SEL ;
+ NID_FTN ;
+ NID_MARK ;
+ NID_POSTIT ;
+ NID_SRCH_REP ;
+ NID_INDEX_ENTRY;
+ NID_TABLE_FORMULA;
+ NID_TABLE_FORMULA_ERROR;
+ };
+ IdCount = { 20 ; };
+ };
+ String ST_TBL
+ {
+ Text = "Tabelle" ;
+ Text [ English ] = "Table" ;
+ Text [ english_us ] = "Table" ;
+ Text [ portuguese_brazilian ] = "Tabelle" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ danish ] = "Tabel" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ spanish ] = "Tabla" ;
+ Text [ french ] = "Tableau" ;
+ Text [ dutch ] = "Tabel" ;
+ Text [ portuguese ] = "Tabela" ;
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "Tabela";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÌÏæá";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "Ç¥";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_FRM
+ {
+ Text = "Textrahmen" ;
+ Text [ English ] = "Frame" ;
+ Text [ english_us ] = "Text Frame" ;
+ Text [ portuguese_brazilian ] = "Textrahmen" ;
+ Text [ swedish ] = "Textram" ;
+ Text [ danish ] = "Tekstboks" ;
+ Text [ italian ] = "Cornice" ;
+ Text [ spanish ] = "Marco de texto" ;
+ Text [ french ] = "Cadre texte" ;
+ Text [ dutch ] = "Tekstkader" ;
+ Text [ portuguese ] = "Moldura de texto" ;
+ Text[ chinese_simplified ] = "Îı¾¿ò";
+ Text[ russian ] = "Òåêñòîâàÿ ðàìêà";
+ Text[ polish ] = "Ramka tekstu";
+ Text[ japanese ] = "÷½Ä˜g";
+ Text[ chinese_traditional ] = "¤å¦r¤è¶ô";
+ Text[ arabic ] = "ÅØÇÑ äÕ";
+ Text[ greek ] = "Ðëáßóéï êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "Metin çerçevesi";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_PGE
+ {
+ Text = "Seite" ;
+ Text [ English ] = "Page" ;
+ Text [ english_us ] = "Page" ;
+ Text [ portuguese_brazilian ] = "Seite" ;
+ Text [ swedish ] = "Sida" ;
+ Text [ danish ] = "Side" ;
+ Text [ italian ] = "Pagina" ;
+ Text [ spanish ] = "Página" ;
+ Text [ french ] = "Page" ;
+ Text [ dutch ] = "Pagina" ;
+ Text [ portuguese ] = "Página" ;
+ 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 ST_DRW
+ {
+ Text = "Zeichenobjekt" ;
+ Text [ English ] = "Drawing" ;
+ Text [ english_us ] = "Drawing" ;
+ Text [ portuguese_brazilian ] = "Zeichenobjekt" ;
+ Text [ swedish ] = "Ritobjekt" ;
+ Text [ danish ] = "Tegneobjekt" ;
+ Text [ italian ] = "Oggetto di disegno" ;
+ Text [ spanish ] = "Objeto de dibujo" ;
+ Text [ french ] = "Objet de dessin" ;
+ Text [ dutch ] = "Tekenobject" ;
+ Text [ portuguese ] = "Desenho" ;
+ Text[ chinese_simplified ] = "»æͼ¶ÔÏó";
+ Text[ russian ] = "Ãðàôè÷åñêèé îáúåêò";
+ Text[ polish ] = "Obiekt rysunkowy";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸Ä";
+ Text[ english_us ] = "Drawing";
+ Text[ portuguese ] = "Desenho";
+ Text[ russian ] = "Ãðàôè÷åñêèé îáúåêò";
+ Text[ dutch ] = "Tekenobject";
+ Text[ french ] = "Objet de dessin";
+ Text[ spanish ] = "Objeto de dibujo";
+ Text[ italian ] = "Oggetto di disegno";
+ Text[ danish ] = "Tegneobjekt";
+ Text[ swedish ] = "Ritobjekt";
+ Text[ polish ] = "Obiekt rysunkowy";
+ Text[ portuguese_brazilian ] = "Zeichenobjekt";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸Ä";
+ Text[ chinese_simplified ] = "»æͼ¶ÔÏó";
+ Text[ chinese_traditional ] = "¹Ï¤ùª«¥ó";
+ Text[ arabic ] = "ßÇÆä ÑÓæãí";
+ Text[ greek ] = "Áíôéêåßìåíï ó÷åäßáóçò";
+ Text[ korean ] = "±×¸®±â";
+ Text[ turkish ] = "Çizim";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_CTRL
+ {
+ Text = "Kontrollfeld" ;
+ Text [ English ] = "Control" ;
+ Text [ english_us ] = "Control" ;
+ Text [ portuguese_brazilian ] = "Kontrollfeld" ;
+ Text [ swedish ] = "Kontrollfält" ;
+ Text [ danish ] = "Kontrolelement" ;
+ Text [ italian ] = "Campo di controllo" ;
+ Text [ spanish ] = "Campo de control" ;
+ Text [ french ] = "Champ de contrôle" ;
+ Text [ dutch ] = "Controleveld" ;
+ Text [ portuguese ] = "Campo de controlo" ;
+ Text[ chinese_simplified ] = "¿ØÖÆ";
+ Text[ russian ] = "Ýëåìåíò óïðàâëåíèÿ";
+ Text[ polish ] = "Pole kontrolne";
+ Text[ japanese ] = "ºÝÄÛ°Ù";
+ Text[ chinese_traditional ] = "±±¨î¶µ";
+ Text[ arabic ] = "ÚäÕÑ ÊÍßã";
+ Text[ greek ] = "Ðåäßï åëÝã÷ïõ";
+ Text[ korean ] = "ÄÁÆ®·Ñ";
+ Text[ turkish ] = "Komut alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_REG
+ {
+ Text = "Bereich" ;
+ Text [ English ] = "Region" ;
+ Text [ english_us ] = "Section" ;
+ Text [ portuguese_brazilian ] = "Bereich" ;
+ Text [ swedish ] = "Område" ;
+ Text [ danish ] = "Område" ;
+ Text [ italian ] = "Sezione" ;
+ Text [ spanish ] = "Area" ;
+ Text [ french ] = "Section" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ portuguese ] = "Secção" ;
+ Text[ chinese_simplified ] = "ÇøÓò";
+ Text[ russian ] = "Îáëàñòü";
+ Text[ polish ] = "Sekcja";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "°Ï°ì";
+ Text[ arabic ] = "äØÇÞ";
+ Text[ greek ] = "Åíüôçôá";
+ Text[ korean ] = "±¸¿ª";
+ Text[ turkish ] = "Bölüm";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_BKM
+ {
+ Text = "Textmarke" ;
+ Text [ English ] = "Bookmark" ;
+ Text [ english_us ] = "Bookmark" ;
+ Text [ portuguese_brazilian ] = "Textmarke" ;
+ Text [ swedish ] = "Bokmärke" ;
+ Text [ danish ] = "Tekstmarkering" ;
+ Text [ italian ] = "Segnalibro" ;
+ Text [ spanish ] = "Marca de texto" ;
+ Text [ french ] = "Repère de texte" ;
+ Text [ dutch ] = "Tekstmarkering" ;
+ Text [ portuguese ] = "Marcador de texto" ;
+ Text[ chinese_simplified ] = "ÊéÇ©";
+ Text[ russian ] = "Çàêëàäêè";
+ Text[ polish ] = "Zak³adka";
+ Text[ japanese ] = "÷½ÄÏ°¸";
+ Text[ chinese_traditional ] = "¤º¤å¼ÐÅÒ";
+ Text[ arabic ] = "ÅÔÇÑÉ ãÑÌÚíÉ";
+ Text[ greek ] = "Óåëéäïäåßêôçò";
+ Text[ korean ] = "Ã¥ °¥ÇÇ";
+ Text[ turkish ] = "Metin iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_GRF
+ {
+ Text = "Grafik" ;
+ Text [ English ] = "Graphic" ;
+ Text [ english_us ] = "Graphics" ;
+ Text [ portuguese_brazilian ] = "Grafik" ;
+ Text [ swedish ] = "Grafik" ;
+ Text [ danish ] = "Billede" ;
+ Text [ italian ] = "Immagine" ;
+ Text [ spanish ] = "Imagen" ;
+ Text [ french ] = "Image" ;
+ Text [ dutch ] = "Afbeelding" ;
+ Text [ portuguese ] = "Imagem" ;
+ 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 ST_OLE
+ {
+ Text = "OLE-Objekt" ;
+ Text [ English ] = "OLE object" ;
+ Text [ english_us ] = "OLE object" ;
+ Text [ portuguese_brazilian ] = "OLE-Objekt" ;
+ Text [ swedish ] = "OLE-objekt" ;
+ Text [ danish ] = "OLE-objekt" ;
+ Text [ italian ] = "Oggetto OLE" ;
+ Text [ spanish ] = "Objeto OLE" ;
+ Text [ french ] = "Objet OLE" ;
+ Text [ dutch ] = "OLE-object" ;
+ Text [ portuguese ] = "Objecto OLE" ;
+ Text[ chinese_simplified ] = "OLE ¶ÔÏó";
+ Text[ russian ] = "Îáúåêò OLE";
+ Text[ polish ] = "Obiekt OLE";
+ Text[ japanese ] = "OLEµÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "OLE - ª«¥ó";
+ Text[ arabic ] = "OLE ßÇÆä";
+ Text[ greek ] = "Áíôéêåßìåíï OLE";
+ Text[ korean ] = "OLE °³Ã¼";
+ Text[ turkish ] = "OLE nesnesi";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_OUTL
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift : šberschrift */
+ Text = "Überschrift" ;
+ Text [ English ] = "Outline" ;
+ Text [ english_us ] = "Headings" ;
+ Text [ portuguese_brazilian ] = "Überschrift" ;
+ Text [ swedish ] = "Överskrift" ;
+ Text [ danish ] = "Overskrift" ;
+ Text [ italian ] = "Intestazione" ;
+ Text [ spanish ] = "Encabezado" ;
+ Text [ french ] = "Titre" ;
+ Text [ dutch ] = "Kop" ;
+ Text [ portuguese ] = "Título" ;
+ 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 ST_SEL
+ {
+ Text = "Markierung" ;
+ Text [ English ] = "Selection" ;
+ Text [ english_us ] = "Selection" ;
+ Text [ portuguese_brazilian ] = "Markierung" ;
+ Text [ swedish ] = "Markering" ;
+ Text [ danish ] = "Markering" ;
+ Text [ italian ] = "Selezione" ;
+ Text [ spanish ] = "Selección" ;
+ Text [ french ] = "Sélection" ;
+ Text [ dutch ] = "Markering" ;
+ Text [ portuguese ] = "Selecção" ;
+ Text[ chinese_simplified ] = "Ñ¡ÖÐ";
+ Text[ russian ] = "Âûäåëåíèå";
+ Text[ polish ] = "Zaznaczenie";
+ Text[ japanese ] = "‘I‘ð";
+ Text[ chinese_traditional ] = "¿ï¨ú";
+ Text[ arabic ] = "ÊÍÏíÏ";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ turkish ] = "Seçim";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_FTN
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fußnote : Fu˜note */
+ Text = "Fußnote" ;
+ Text [ English ] = "Footnote" ;
+ Text [ english_us ] = "Footnote" ;
+ Text [ portuguese_brazilian ] = "Fußnote" ;
+ Text [ swedish ] = "Fotnot" ;
+ Text [ danish ] = "Fodnote" ;
+ Text [ italian ] = "Nota a piè pagina" ;
+ Text [ spanish ] = "Nota al pie" ;
+ Text [ french ] = "Note de bas de page" ;
+ Text [ dutch ] = "Voetnoot" ;
+ Text [ portuguese ] = "Nota de rodapé" ;
+ Text[ chinese_simplified ] = "×¢½Å";
+ Text[ russian ] = "Ñíîñêè";
+ Text[ polish ] = "Przypis dolny";
+ Text[ japanese ] = "‹r’";
+ Text[ chinese_traditional ] = "µù¸}";
+ Text[ arabic ] = "ÍÇÔíÉ ÓÝáíÉ";
+ Text[ greek ] = "Õðïóçìåßùóç";
+ Text[ korean ] = "°¢ ÁÖ";
+ Text[ turkish ] = "Dipnot";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_MARK
+ {
+ Text = "Merker" ;
+ Text [ English ] = "Reminder" ;
+ Text [ english_us ] = "Reminder" ;
+ Text [ portuguese_brazilian ] = "Merker" ;
+ Text [ swedish ] = "Temporärt bokmärke" ;
+ Text [ danish ] = "Påmindelse" ;
+ Text [ italian ] = "Contrassegno" ;
+ Text [ spanish ] = "Marca" ;
+ Text [ french ] = "Pense-bête" ;
+ Text [ dutch ] = "Merktekens" ;
+ Text [ portuguese ] = "Marca" ;
+ Text[ chinese_simplified ] = "񈬀";
+ Text[ russian ] = "Ïîìåòêà";
+ Text[ polish ] = "Znacznik";
+ Text[ japanese ] = "Šo‚¦Ž~‚ß";
+ Text[ chinese_traditional ] = "´£¿ô";
+ Text[ arabic ] = "ÚáÇãÉ ÊÐßíÑ";
+ Text[ greek ] = "Õðåíèýìéóç";
+ Text[ korean ] = "³ª¸ÓÁö";
+ Text[ turkish ] = "Anýmsatýcý";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_POSTIT
+ {
+ Text = "Notiz" ;
+ Text [ English ] = "Annotation" ;
+ Text [ english_us ] = "Note" ;
+ Text [ portuguese_brazilian ] = "Notiz" ;
+ Text [ swedish ] = "Anteckning" ;
+ Text [ danish ] = "Note" ;
+ Text [ italian ] = "Nota" ;
+ Text [ spanish ] = "Nota" ;
+ Text [ french ] = "Note" ;
+ Text [ dutch ] = "Aantekening" ;
+ Text [ portuguese ] = "Anotação" ;
+ Text[ chinese_simplified ] = "±¸×¢";
+ Text[ russian ] = "Ïðèìå÷àíèå";
+ Text[ polish ] = "Notatka";
+ Text[ japanese ] = "ÒÓ";
+ Text[ chinese_traditional ] = "³Æµù";
+ Text[ arabic ] = "ãáÇÍÙÉ";
+ Text[ greek ] = "Óçìåßùóç";
+ Text[ korean ] = "¸Þ¸ð";
+ Text[ turkish ] = "Not";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_SRCH_REP
+ {
+ Text = "Suche wiederholen" ;
+ Text [ English ] = "Repeat search" ;
+ Text [ english_us ] = "Repeat search" ;
+ Text [ portuguese_brazilian ] = "Suche wiederholen" ;
+ Text [ swedish ] = "Upprepa sökning" ;
+ Text [ danish ] = "Gentag søgning" ;
+ Text [ italian ] = "Ripeti ricerca" ;
+ Text [ spanish ] = "Repetir búsqueda" ;
+ Text [ french ] = "Répéter la recherche" ;
+ Text [ dutch ] = "Zoeken herhalen" ;
+ Text [ portuguese ] = "Repetir procura" ;
+ Text[ chinese_simplified ] = "Öظ´ËÑÑ°";
+ Text[ russian ] = "Ïîâòîð ïîèñêà";
+ Text[ polish ] = "Powtórz wyszukiwanie";
+ Text[ japanese ] = "ÄŒŸõ";
+ Text[ chinese_traditional ] = "­«½Æ·j´M";
+ Text[ arabic ] = "ÊßÑÇÑ ÇáÈÍË";
+ Text[ greek ] = "ÅðáíÜëçøç áíáæÞôçóçò";
+ Text[ korean ] = "¹Ýº¹ °Ë»ö";
+ Text[ turkish ] = "Aramayý yinele";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_INDEX_ENTRY
+ {
+ Text = "Verzeichniseintrag" ;
+ Text [ English ] = "Index entry" ;
+ Text[ italian ] = "Voce di indice";
+ Text[ portuguese_brazilian ] = "Index entry";
+ Text[ portuguese ] = "Entrada do índice";
+ Text[ danish ] = "Indekselement";
+ Text[ french ] = "Entrée d'index";
+ Text[ swedish ] = "Förteckningspost";
+ Text[ dutch ] = "Index item";
+ Text[ spanish ] = "Entrada del índice";
+ Text[ english_us ] = "Index entry";
+ Text[ chinese_simplified ] = "Ŀ¼ÌõÄ¿";
+ Text[ russian ] = "Ýëåìåíò óêàçàòåëÿ";
+ Text[ polish ] = "Wpis do indeksu";
+ Text[ japanese ] = "õˆø€–Ú";
+ Text[ chinese_traditional ] = "¥Ø¿ý¶µ¥Ø";
+ Text[ arabic ] = "ÅÏÎÇá ÝåÑÓí";
+ Text[ greek ] = "Êáôá÷þñéóç åõñåôçñßïõ";
+ Text[ korean ] = "»öÀÎ Ç׸ñ";
+ Text[ turkish ] = "Dizin giriþi";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_TABLE_FORMULA
+ {
+ Text = "Tabellenformel" ;
+ Text [ English ] = "Table formula" ;
+ Text[ english_us ] = "Table formula";
+ Text[ portuguese ] = "Fórmula de tabela";
+ Text[ russian ] = "Ôîðìóëà òàáëèöû";
+ Text[ dutch ] = "Tabellenformule";
+ Text[ french ] = "Formule de table";
+ Text[ spanish ] = "Fórmula de tabla";
+ Text[ italian ] = "Formula tabella";
+ Text[ danish ] = "Tabelformel";
+ Text[ swedish ] = "Tabellformel";
+ Text[ polish ] = "Formu³a tabeli";
+ Text[ portuguese_brazilian ] = "Table formula";
+ Text[ japanese ] = "•\\‚Ì”Ž®";
+ Text[ chinese_simplified ] = "¹¤×÷±í¹«Ê½";
+ Text[ chinese_traditional ] = "¤u§@ªí¤½¦¡";
+ Text[ arabic ] = "ÕíÛÉ ÌÏæá";
+ Text[ greek ] = "Ôýðïò ðßíáêá";
+ Text[ korean ] = "Ç¥ ¼ö½Ä";
+ Text[ turkish ] = "Tablo formülü";
+ Text[ language_user1 ] = " ";
+ };
+ String ST_TABLE_FORMULA_ERROR
+ {
+ Text = "Fehlerhafte Tabellenformel" ;
+ Text [ English ] = "Wrong table formula" ;
+ Text[ english_us ] = "Wrong table formula";
+ Text[ portuguese ] = "Fórmula de tabela errada";
+ Text[ russian ] = "Íåïðàâèëüíàÿ ôîðìóëà òàáëèöû";
+ Text[ dutch ] = "Foutieve tabellenformule";
+ Text[ french ] = "Formule de table erronée";
+ Text[ spanish ] = "Fórmula errónea de tabla";
+ Text[ italian ] = "Formula tabella errata";
+ Text[ danish ] = "Fejlagtig tabelformel";
+ Text[ swedish ] = "Felaktig tabellformel";
+ Text[ polish ] = "Nieprawid³owa formu³a tabeli";
+ Text[ portuguese_brazilian ] = "Wrong table formula";
+ Text[ japanese ] = "³‚µ‚­‚È‚¢•\\‚Ì”Ž®";
+ Text[ chinese_simplified ] = "´íÎóµÄ¹¤×÷±í¹«Ê½";
+ Text[ chinese_traditional ] = "¿ù»~ªº¤u§@ªí¤½¦¡";
+ Text[ arabic ] = "ÕíÛÉ ÌÏæá ÎÇØÆÉ";
+ Text[ greek ] = "ËáíèáóìÝíïò ôýðïò ðßíáêá";
+ Text[ korean ] = "À߸øµÈ Ç¥ ¼ö½Ä";
+ Text[ turkish ] = "Hatalý tablo formülü";
+ Text[ language_user1 ] = " ";
+ };
+ Text [ portuguese ] = "Navegação" ;
+ Text [ english_us ] = "Navigation" ;
+ Text [ portuguese_brazilian ] = "Navigation" ;
+ Text [ swedish ] = "Navigation" ;
+ Text [ danish ] = "Navigation" ;
+ Text [ italian ] = "Navigazione" ;
+ Text [ spanish ] = "Navegación" ;
+ Text [ french ] = "Navigation" ;
+ Text [ dutch ] = "Navigatie" ;
+ Text[ chinese_simplified ] = "ä¯ÀÀ";
+ Text[ russian ] = "Íàâèãàöèÿ";
+ Text[ polish ] = "Nawigacja";
+ Text[ japanese ] = "ÅËÞ¹Þ°¼®Ý";
+ Text[ chinese_traditional ] = "ÂsÄý";
+ Text[ arabic ] = "ÇáãáÇÍÉ";
+ Text[ greek ] = "Ìåôáêßíçóç";
+ Text[ korean ] = "³×ºñ°ÔÀ̼Ç";
+ Text[ turkish ] = "Dolaþma";
+ Text[ language_user1 ] = " ";
+};
+/*
+Noch ein paar Reserven
+ ToolBoxItem
+ {
+ Identifier = NID_NEXT;
+ Text = "Vorwärts" ;
+ Text [ ENGLISH ] = "Forward" ;
+ };
+ ToolBoxItem
+ {
+ Identifier = NID_PREV;
+ Text = "Rückwärts" ;
+ Text [ ENGLISH ] = "Backward" ;
+ };
+ ToolBoxItem
+ {
+ Identifier = NID_CTRL;
+ Text = "Control" ;
+ };
+ ToolBoxItem
+ {
+ Identifier = NID_DRW;
+ Text = "Zeichenobjekt" ;
+ };
+
+
+*/
+/***************************************************************
+ Strings fuer die Quickhelp der View-PgUp/Down-Buttons
+***************************************************************/
+String STR_IMGBTN_NEXT_DOWN
+{
+ Text = "" ;
+};
+String STR_IMGBTN_PREV_DOWN
+{
+ Text = "" ;
+};
+String STR_IMGBTN_TBL_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächste Tabelle : Nõchste Tabelle */
+ Text = "Nächste Tabelle" ;
+ Text [ English ] = "Next Table" ;
+ Text [ english_us ] = "Next table" ;
+ Text [ portuguese_brazilian ] = "Nächste Tabelle" ;
+ Text [ swedish ] = "Nästa tabell" ;
+ Text [ danish ] = "Næste tabel" ;
+ Text [ italian ] = "Tabella successiva" ;
+ Text [ spanish ] = "Tabla siguiente" ;
+ Text [ french ] = "Tableau suivant" ;
+ Text [ dutch ] = "Volgende tabel" ;
+ Text [ portuguese ] = "Tabela seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸ö±í¸ñ";
+ Text[ russian ] = "Ñëåäóþùàÿ òàáëèöà";
+ Text[ polish ] = "Nastêpna tabela";
+ Text[ japanese ] = "ŽŸ‚Ì•\\";
+ Text[ chinese_traditional ] = "¤U¤@­Óªí®æ";
+ Text[ arabic ] = "ÇáÌÏæá ÇáÊÇáí";
+ Text[ greek ] = "Åðüìåíïò ðßíáêáò";
+ Text[ korean ] = "´ÙÀ½ Ç¥";
+ Text[ turkish ] = "Sonraki tablo";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_FRM_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächster Textrahmen : Nõchster Textrahmen */
+ Text = "Nächster Textrahmen" ;
+ Text [ English ] = "Next Frame" ;
+ Text [ english_us ] = "Next text frame" ;
+ Text [ portuguese_brazilian ] = "Nächster Textrahmen" ;
+ Text [ swedish ] = "Nästa textram" ;
+ Text [ danish ] = "Næste tekstboks" ;
+ Text [ italian ] = "Cornice successiva" ;
+ Text [ spanish ] = "Marco de texto siguiente" ;
+ Text [ french ] = "Cadre texte suivant" ;
+ Text [ dutch ] = "Volgend tekstkader" ;
+ Text [ portuguese ] = "Moldura de texto seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸öÎı¾¿ò";
+ Text[ russian ] = "Ñëåäóþùàÿ òåêñòîâàÿ ðàìêà";
+ Text[ polish ] = "Nastêpna ramka tekstowa";
+ Text[ japanese ] = "ŽŸ‚Ì÷½Ä˜g";
+ Text[ chinese_traditional ] = "¤U¤@­Ó¤å¦r¤è®Ø";
+ Text[ arabic ] = "ÅØÇÑ ÇáäÕ ÇáÊÇáí";
+ Text[ greek ] = "Åðüìåíï ðëáßóéï êåéìÝíïõ";
+ Text[ korean ] = "´ÙÀ½ ÅؽºÆ® ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "Sonraki metin çerçevesi";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_PGE_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächste Seite : Nõchste Seite */
+ Text = "Nächste Seite" ;
+ Text [ English ] = "Next Page" ;
+ Text [ english_us ] = "Next page" ;
+ Text [ portuguese_brazilian ] = "Nächste Seite" ;
+ Text [ swedish ] = "Nästa sida" ;
+ Text [ danish ] = "Næste side" ;
+ Text [ italian ] = "Pagina successiva" ;
+ Text [ spanish ] = "Página siguiente" ;
+ Text [ french ] = "Page suivante" ;
+ Text [ dutch ] = "Volgende pagina" ;
+ Text [ portuguese ] = "Página seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»Ò³";
+ Text[ russian ] = "Ñëåäóþùàÿ ñòðàíèöà";
+ Text[ polish ] = "Nastêpna strona";
+ Text[ japanese ] = "ŽŸ‚ÌÍß°¼Þ";
+ Text[ chinese_traditional ] = "¤U¤@­¶";
+ Text[ arabic ] = "ÇáÕÝÍÉ ÇáÊÇáíÉ";
+ Text[ greek ] = "Åðüìåíç óåëßäá";
+ Text[ korean ] = "´ÙÀ½ ÆäÀÌÁö";
+ Text[ turkish ] = "Sonraki sayfa";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_DRW_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächstes Zeichenobjekt : Nõchstes Zeichenobjekt */
+ Text = "Nächstes Zeichenobjekt" ;
+ Text [ English ] = "Next drawing" ;
+ Text [ english_us ] = "Next drawing" ;
+ Text [ portuguese_brazilian ] = "Nächstes Zeichenobjekt" ;
+ Text [ swedish ] = "Nästa ritobjekt" ;
+ Text [ danish ] = "Næste tegneobjekt" ;
+ Text [ italian ] = "Oggetto di disegno successivo" ;
+ Text [ spanish ] = "Objeto de dibujo siguiente" ;
+ Text [ french ] = "Objet de dessin suivant" ;
+ Text [ dutch ] = "Volgend tekenobject" ;
+ Text [ portuguese ] = "Objecto de desenho seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸ö×Ö·û¶ÔÏó";
+ Text[ russian ] = "Ñëåäóþùèé ãðàôè÷åñêèé îáúåêò";
+ Text[ polish ] = "Nastêpny obiekt rysunkowy";
+ Text[ japanese ] = "ŽŸ‚Ì•¶ŽšµÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "¤U¤@­Ó¦r¤¸ª«¥ó";
+ Text[ arabic ] = "ÇáßÇÆä ÇáÑÓæãí ÇáÊÇáí";
+ Text[ greek ] = "Åðüìåíï áíôéêåßìåíï ó÷åäßáóçò";
+ Text[ korean ] = "´ÙÀ½ ±×¸®±â";
+ Text[ turkish ] = "Sonraki çizim";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_CTRL_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächstes Kontrollfeld : Nõchstes Kontrollfeld */
+ Text = "Nächstes Kontrollfeld" ;
+ Text [ English ] = "Next control" ;
+ Text [ english_us ] = "Next control" ;
+ Text [ portuguese_brazilian ] = "Nächstes Kontrollfeld" ;
+ Text [ swedish ] = "Nästa kontrollfält" ;
+ Text [ danish ] = "Næste kontrolelement" ;
+ Text [ italian ] = "Campo di controllo successivo" ;
+ Text [ spanish ] = "Campo de control siguiente" ;
+ Text [ french ] = "Elément de contrôle suivant" ;
+ Text [ dutch ] = "Volgend controleveld" ;
+ Text [ portuguese ] = "Controlo seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸ö¿ØÖÆ";
+ Text[ russian ] = "Ñëåäóþùèé ýëåìåíò óïðàâëåíèÿ";
+ Text[ polish ] = "Nastêpne pole kontrolne";
+ Text[ japanese ] = "ŽŸ‚̺ÝÄÛ°Ù";
+ Text[ chinese_traditional ] = "¤U¤@­Ó±±¨î¶µ";
+ Text[ arabic ] = "ÚäÕÑ ÇáÊÍßã ÇáÊÇáí";
+ Text[ greek ] = "Åðüìåíï ðåäßï åëÝã÷ïõ";
+ Text[ korean ] = "´ÙÀ½ ÄÁÆ®·Ñ";
+ Text[ turkish ] = "Sonraki komut alaný";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_REG_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächster Bereich : Nõchster Bereich */
+ Text = "Nächster Bereich" ;
+ Text [ English ] = "Next region" ;
+ Text [ english_us ] = "Next section" ;
+ Text [ portuguese_brazilian ] = "Nächster Bereich" ;
+ Text [ swedish ] = "Nästa område" ;
+ Text [ danish ] = "Næste område" ;
+ Text [ italian ] = "Area successiva" ;
+ Text [ spanish ] = "Area siguiente" ;
+ Text [ french ] = "Section suivante" ;
+ Text [ dutch ] = "Volgend bereik" ;
+ Text [ portuguese ] = "Secção seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸öÇøÓò";
+ Text[ russian ] = "Ñëåäóþùàÿ îáëàñòü";
+ Text[ polish ] = "Nastêpna sekcja";
+ Text[ japanese ] = "ŽŸ‚͈̔Í";
+ Text[ chinese_traditional ] = "¤U¤@­Ó°Ï°ì";
+ Text[ arabic ] = "ÇáäØÇÞ ÇáÊÇáí";
+ Text[ greek ] = "Åðüìåíç åíüôçôá";
+ Text[ korean ] = "´ÙÀ½ ±¸¿ª";
+ Text[ turkish ] = "Sonraki bölüm";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_BKM_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächste Textmarke : Nõchste Textmarke */
+ Text = "Nächste Textmarke" ;
+ Text [ English ] = "Next bookmark" ;
+ Text [ english_us ] = "Next bookmark" ;
+ Text [ portuguese_brazilian ] = "Nächste Textmarke" ;
+ Text [ swedish ] = "Nästa bokmärke" ;
+ Text [ danish ] = "Næste tekstmarkering" ;
+ Text [ italian ] = "Segnalibro successivo" ;
+ Text [ spanish ] = "Marcador siguiente" ;
+ Text [ french ] = "Repère de texte suivant" ;
+ Text [ dutch ] = "Volgende tekstmarkering" ;
+ Text [ portuguese ] = "Marcador de texto seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸öÊéÇ©";
+ Text[ russian ] = "Ñëåäóþùàÿ çàêëàäêà";
+ Text[ polish ] = "Nastêpna zak³adka";
+ Text[ japanese ] = "ŽŸ‚Ì÷½ÄÏ°¸";
+ Text[ chinese_traditional ] = "¤U¤@­Ó®ÑÅÒ";
+ Text[ arabic ] = "ÇáÅÔÇÑÉ ÇáãÑÌÚíÉ ÇáÊÇáíÉ";
+ Text[ greek ] = "Åðüìåíï óçìÜäé êåéìÝíïõ";
+ Text[ korean ] = "´ÙÀ½ Ã¥ °¥ÇÇ";
+ Text[ turkish ] = "Sonraki metin iþareti";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_GRF_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächste Grafik : Nõchste Grafik */
+ Text = "Nächste Grafik" ;
+ Text [ English ] = "Next graphic" ;
+ Text [ english_us ] = "Next picture" ;
+ Text [ portuguese_brazilian ] = "Nächste Grafik" ;
+ Text [ swedish ] = "Nästa grafik" ;
+ Text [ danish ] = "Næste billede" ;
+ Text [ italian ] = "Immagine successiva" ;
+ Text [ spanish ] = "Imagen siguiente" ;
+ Text [ french ] = "Image suivante" ;
+ Text [ dutch ] = "Volgende afbeelding" ;
+ Text [ portuguese ] = "Imagem seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸öͼÐÎ";
+ Text[ russian ] = "Ñëåäóþùèé ðèñóíîê";
+ Text[ polish ] = "Nastêpna grafika";
+ Text[ japanese ] = "ŽŸ‚̸Þ×̨¯¸";
+ Text[ chinese_traditional ] = "¤U¤@­Ó¹Ï¤ù";
+ Text[ arabic ] = "ÇáÕæÑÉ ÇáÊÇáíÉ";
+ Text[ greek ] = "Åðüìåíï ãñáöéêü";
+ Text[ korean ] = "´ÙÀ½ ±×¸²";
+ Text[ turkish ] = "Sonraki grafik";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_OLE_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächstes OLE-Objekt : Nächstes OLE object */
+ /* ### ACHTUNG: Neuer Text in Resource? Nächstes OLE-Objekt : Nõchstes OLE-Objekt */
+ Text = "Nächstes OLE-Objekt" ;
+ Text [ English ] = "Next OLE object" ;
+ Text [ english_us ] = "Next OLE object" ;
+ Text [ portuguese_brazilian ] = "Nächstes OLE object" ;
+ Text [ swedish ] = "Nästa OLE-objekt" ;
+ Text [ danish ] = "Næste OLE-objekt" ;
+ Text [ italian ] = "Oggetto OLE successivo" ;
+ Text [ spanish ] = "Objeto OLE siguiente" ;
+ Text [ french ] = "Objet OLE suivant" ;
+ Text [ dutch ] = "Volgend OLE-object" ;
+ Text [ portuguese ] = "Objecto OLE seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸ö OLE-¶ÔÏó";
+ Text[ russian ] = "Ñëåäóþùèé îáúåêò OLE";
+ Text[ polish ] = "Nastêpny obiekt OLE";
+ Text[ japanese ] = "ŽŸ‚ÌOLE-µÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "¤U¤@­Ó OLE-ª«¥ó";
+ Text[ arabic ] = "ÇáÊÇáí OLE ÇáßÇÆä";
+ Text[ greek ] = "Åðüìåíï áíôéêåßìåíï OLE";
+ Text[ korean ] = "´ÙÀ½ OLE°³Ã¼";
+ Text[ turkish ] = "Sonraki OLE nesnesi";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_OUTL_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächste Überschrift : Nõchste šberschrift */
+ Text = "Nächste Überschrift" ;
+ Text [ English ] = "Next outline" ;
+ Text [ english_us ] = "Next heading" ;
+ Text [ portuguese_brazilian ] = "Nächste Überschrift" ;
+ Text [ swedish ] = "Nästa överskrift" ;
+ Text [ danish ] = "Næste overskrift" ;
+ Text [ italian ] = "Intestazione successiva" ;
+ Text [ spanish ] = "Encabezado siguiente" ;
+ Text [ french ] = "Titre suivant" ;
+ Text [ dutch ] = "Volgende kop" ;
+ Text [ portuguese ] = "Título seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸ö±êÌâ";
+ Text[ russian ] = "Ñëåäóþùèé çàãîëîâîê";
+ Text[ polish ] = "Nastêpny tytu³";
+ Text[ japanese ] = "ŽŸ‚ÌŒ©o‚µ";
+ Text[ chinese_traditional ] = "¤U¤@­Ó¼ÐÃD";
+ Text[ arabic ] = "ÇáÚäæÇä ÇáÊÇáí";
+ Text[ greek ] = "Åðüìåíç åðéêåöáëßäá";
+ Text[ korean ] = "´ÙÀ½ Á¦¸ñ";
+ Text[ turkish ] = "Sonraki baþlýk";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_SEL_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächste Markierung : Nõchste Markierung */
+ Text = "Nächste Markierung" ;
+ Text [ English ] = "Next selection" ;
+ Text [ english_us ] = "Next selection" ;
+ Text [ portuguese_brazilian ] = "Nächste Markierung" ;
+ Text [ swedish ] = "Nästa markering" ;
+ Text [ danish ] = "Næste markering" ;
+ Text [ italian ] = "Selezione successiva" ;
+ Text [ spanish ] = "Selección siguiente" ;
+ Text [ french ] = "Sélection suivante" ;
+ Text [ dutch ] = "Volgende markering" ;
+ Text [ portuguese ] = "Selecção seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸öÑ¡Ôñ";
+ Text[ russian ] = "Ñëåäóþùåå âûäåëåíèå";
+ Text[ polish ] = "Nastêpne zaznaczenie";
+ Text[ japanese ] = "ŽŸ‚Ì‘I‘ð";
+ Text[ chinese_traditional ] = "¤U¤@­Ó¿ï¨ú";
+ Text[ arabic ] = "ÇáÊÍÏíÏ ÇáÊÇáí";
+ Text[ greek ] = "Åðüìåíç åðéëïãÞ";
+ Text[ korean ] = "´ÙÀ½ ¼±ÅÃ";
+ Text[ turkish ] = "Önceki seçim";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_FTN_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächste Fußnote : Nõchste Fu˜note */
+ Text = "Nächste Fußnote" ;
+ Text [ English ] = "Next Footnote" ;
+ Text [ english_us ] = "Next footnote" ;
+ Text [ portuguese_brazilian ] = "Nächste Fußnote" ;
+ Text [ swedish ] = "Nästa fotnot" ;
+ Text [ danish ] = "Næste fodnote" ;
+ Text [ italian ] = "Nota a piè pagina successiva" ;
+ Text [ spanish ] = "Nota al pie siguiente" ;
+ Text [ french ] = "Note de bas de page suivante" ;
+ Text [ dutch ] = "Volgende voetnoot" ;
+ Text [ portuguese ] = "Nota de rodapé seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸ö×¢½Å";
+ Text[ russian ] = "Ñëåäóþùàÿ ñíîñêà";
+ Text[ polish ] = "Nastêpny przypis dolny";
+ Text[ japanese ] = "ŽŸ‚Ì‹r’";
+ Text[ chinese_traditional ] = "¤U¤@­Óµù¸}";
+ Text[ arabic ] = "ÇáÍÇÔíÉ ÇáÓÝáíÉ ÇáÊÇáíÉ";
+ Text[ greek ] = "Åðüìåíç õðïóçìåßùóç";
+ Text[ korean ] = "´ÙÀ½ °¢ÁÖ";
+ Text[ turkish ] = "Sonraki dipnot";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_MARK_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächster Merker : Nõchster Merker */
+ Text = "Nächster Merker" ;
+ Text [ English ] = "Next Reminder" ;
+ Text [ english_us ] = "Next Reminder" ;
+ Text [ portuguese_brazilian ] = "Nächster Merker" ;
+ Text [ swedish ] = "Nästa temporära bokmärke" ;
+ Text [ danish ] = "Næste påmindelse" ;
+ Text [ italian ] = "Contrassegno successivo" ;
+ Text [ spanish ] = "Marca siguiente" ;
+ Text [ french ] = "Pense-bête suivant" ;
+ Text [ dutch ] = "Volgend merkteken" ;
+ Text [ portuguese ] = "Marca seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸ö±ê¼Ç";
+ Text[ russian ] = "Ñëåäóþùàÿ ïîìåòêà";
+ Text[ polish ] = "Nastêpny znacznik";
+ Text[ japanese ] = "ŽŸ‚ÌŠo‚¦Ž~‚ß";
+ Text[ chinese_traditional ] = "¤U¤@­Ó´£¿ô";
+ Text[ arabic ] = "ÚáÇãÉ ÇáÊÐßíÑ ÇáÊÇáíÉ";
+ Text[ greek ] = "Åðüìåíç õðåíèýìéóç";
+ Text[ korean ] = "´ÙÀ½ ³ª¸ÓÁö";
+ Text[ turkish ] = "Sonraki anýmsatýcý";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_POSTIT_DOWN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nächste Notiz : Nõchste Notiz */
+ Text = "Nächste Notiz" ;
+ Text [ English ] = "Next Annotation" ;
+ Text [ english_us ] = "Next Note" ;
+ Text [ portuguese_brazilian ] = "Nächste Notiz" ;
+ Text [ swedish ] = "Nästa anteckning" ;
+ Text [ danish ] = "Næste note" ;
+ Text [ italian ] = "Nota successiva" ;
+ Text [ spanish ] = "Nota siguiente" ;
+ Text [ french ] = "Note suivante" ;
+ Text [ dutch ] = "Volgende aantekening" ;
+ Text [ portuguese ] = "Anotação seguinte" ;
+ Text[ chinese_simplified ] = "ÏÂÒ»¸ö±¸×¢";
+ Text[ russian ] = "Ñëåäóþùåå ïðèìå÷àíèå";
+ Text[ polish ] = "Nastêpna notatka";
+ Text[ japanese ] = "ŽŸ‚ÌÒÓ";
+ Text[ chinese_traditional ] = "¤U¤@­Ó³Æµù";
+ Text[ arabic ] = "ÇáãáÇÍÙÉ ÇáÊÇáíÉ";
+ Text[ greek ] = "Åðüìåíç óçìåßùóç";
+ Text[ korean ] = "´ÙÀ½ ¸Þ¸ð";
+ Text[ turkish ] = "Sonraki not";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_SRCH_REP_DOWN
+{
+ Text = "Vorwärts weitersuchen" ;
+ Text [ English ] = "Repeat search " ;
+ Text [ english_us ] = "Continue search forward" ;
+ Text [ portuguese_brazilian ] = "Vorwärts weitersuchen" ;
+ Text [ swedish ] = "Sök vidare framåt" ;
+ Text [ danish ] = "Fortsæt søgning fremad" ;
+ Text [ italian ] = "Continua a cercare in avanti" ;
+ Text [ spanish ] = "Continuar búsqueda hacia delante" ;
+ Text [ french ] = "Continuer la recherche vers le bas" ;
+ Text [ dutch ] = "Voorwaarts verder zoeken" ;
+ Text [ portuguese ] = "Continuar a procura para a frente" ;
+ Text[ chinese_simplified ] = "ÏòÇ°ËÑÑ°";
+ Text[ russian ] = "Ïîèñê âïåðåä";
+ Text[ polish ] = "Szukaj dalej do przodu";
+ Text[ japanese ] = "•¶––•ûŒü‚ÉŒŸõ‘±s";
+ Text[ chinese_traditional ] = "¦V«e·j´M";
+ Text[ arabic ] = "ãÊÇÈÚÉ ÇáÈÍË ááÃãÇã";
+ Text[ greek ] = "ÓõíÝ÷éóç áíáæÞôçóçò ðñïò ôá åìðñüò";
+ Text[ korean ] = "°è¼Ó ¾ÕÀ¸·Î °Ë»ö";
+ Text[ turkish ] = "Ýleri dogru ara";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_INDEX_ENTRY_DOWN
+{
+ Text = "Nächster Verzeichniseintrag" ;
+ Text [ English ] = "Next index entry" ;
+ Text[ italian ] = "Voce d'indice successiva";
+ Text[ portuguese_brazilian ] = "Next index entry";
+ Text[ portuguese ] = "Entrada do índice seguinte";
+ Text[ danish ] = "Næste indekselement";
+ Text[ french ] = "Entrée d'index suivante";
+ Text[ swedish ] = "Nästa förteckningspost";
+ Text[ dutch ] = "Volgend index item";
+ Text[ spanish ] = "Entrada de índice siguiente";
+ Text[ english_us ] = "Next index entry";
+ Text[ chinese_simplified ] = "ÏÂÒ»¸öĿ¼ÌõÄ¿";
+ Text[ russian ] = "Ñëåäóþùèé ýëåìåíò óêàçàòåëÿ";
+ Text[ polish ] = "Nastêpny wpis do indeksu";
+ Text[ japanese ] = "ŽŸ‚Ìõˆø€–Ú";
+ Text[ chinese_traditional ] = "¤U¤@­Ó¥Ø¿ý¶µ¥Ø";
+ Text[ arabic ] = "ÇáÅÏÎÇá ÇáÝåÑÓí ÇáÊÇáí";
+ Text[ greek ] = "Åðüìåíç åããñáöÞ åõñåôçñßïõ";
+ Text[ korean ] = "´ÙÀ½ »öÀÎ Ç׸ñ";
+ Text[ turkish ] = "Sonraki dizin giriþi";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_NEXT_UP
+{
+ Text = "" ;
+};
+String STR_IMGBTN_PREV_UP
+{
+ Text = "" ;
+};
+String STR_IMGBTN_TBL_UP
+{
+ Text = "Vorige Tabelle" ;
+ Text [ English ] = "Previous table" ;
+ Text [ english_us ] = "Previous table" ;
+ Text [ portuguese_brazilian ] = "Vorige Tabelle" ;
+ Text [ swedish ] = "Föregående tabell" ;
+ Text [ danish ] = "Forrige tabel" ;
+ Text [ italian ] = "Tabella precedente" ;
+ Text [ spanish ] = "Tabla anterior" ;
+ Text [ french ] = "Tableau précédent" ;
+ Text [ dutch ] = "Vorige tabel" ;
+ Text [ portuguese ] = "Tabela anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸ö±í¸ñ";
+ Text[ russian ] = "Ïðåäûäóùàÿ òàáëèöà";
+ Text[ polish ] = "Poprzednia tabela";
+ Text[ japanese ] = "‘O‚Ì•\\";
+ Text[ chinese_traditional ] = "¤W¤@­Óªí®æ";
+ Text[ arabic ] = "ÇáÌÏæá ÇáÓÇÈÞ";
+ Text[ greek ] = "Ðñïçãïýìåíïò ðßíáêáò";
+ Text[ korean ] = "ÀÌÀüÇ¥";
+ Text[ turkish ] = "Önceki tablo";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_FRM_UP
+{
+ Text = "Voriger Textrahmen" ;
+ Text [ English ] = "Previous frame" ;
+ Text [ english_us ] = "Previous text frame" ;
+ Text [ portuguese_brazilian ] = "Voriger Textrahmen" ;
+ Text [ swedish ] = "Föregående textram" ;
+ Text [ danish ] = "Forrige tekstboks" ;
+ Text [ italian ] = "Cornice di testo precedente" ;
+ Text [ spanish ] = "Marco de texto anterior" ;
+ Text [ french ] = "Cadre texte précédent" ;
+ Text [ dutch ] = "Vorig tekstkader" ;
+ Text [ portuguese ] = "Moldura de texto anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸öÎı¾¿ò";
+ Text[ russian ] = "Ïðåäûäóùàÿ òåêñòîâàÿ ðàìêà";
+ Text[ polish ] = "Poprzednia ramka tekstowa";
+ Text[ japanese ] = "‘O‚Ì÷½Ä˜g";
+ Text[ chinese_traditional ] = "¤W¤@­Ó¤å¦r¤è®Ø";
+ Text[ arabic ] = "ÅØÇÑ ÇáäÕ ÇáÓÇÈÞ";
+ Text[ greek ] = "Ðñïçãïýìåíï ðëáßóéï êåéìÝíïõ";
+ Text[ korean ] = "ÀÌÀü ÅؽºÆ® ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "Önceki metin çerçevesi";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_PGE_UP
+{
+ Text = "Vorige Seite" ;
+ Text [ English ] = "Previous page" ;
+ Text [ english_us ] = "Previous page" ;
+ Text [ portuguese_brazilian ] = "Vorige Seite" ;
+ Text [ swedish ] = "Föregående sida" ;
+ Text [ danish ] = "Forrige side" ;
+ Text [ italian ] = "Pagina precedente" ;
+ Text [ spanish ] = "Página anterior" ;
+ Text [ french ] = "Page précédente" ;
+ Text [ dutch ] = "Vorige pagina" ;
+ Text [ portuguese ] = "Página anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»Ò³";
+ Text[ russian ] = "Ïðåäûäóùàÿ ñòðàíèöà";
+ Text[ polish ] = "Poprzednia strona";
+ Text[ japanese ] = "‘O‚ÌÍß°¼Þ";
+ Text[ chinese_traditional ] = "¤W¤@­¶";
+ Text[ arabic ] = "ÇáÕÝÍÉ ÇáÓÇÈÞÉ";
+ Text[ greek ] = "Ðñïçãïýìåíç óåëßäá";
+ Text[ korean ] = "ÀÌÀü ÆäÀÌÁö";
+ Text[ turkish ] = "Önceki sayfa";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_DRW_UP
+{
+ Text = "Voriges Zeichenobjekt" ;
+ Text [ English ] = "Previous drawing" ;
+ Text [ english_us ] = "Previous drawing" ;
+ Text [ portuguese_brazilian ] = "Voriges Zeichenobjekt" ;
+ Text [ swedish ] = "Föregående ritobjekt" ;
+ Text [ danish ] = "Forrige tegneobjekt" ;
+ Text [ italian ] = "Oggetto di disegno precedente" ;
+ Text [ spanish ] = "Objeto de dibujo anterior" ;
+ Text [ french ] = "Objet de dessin précédent" ;
+ Text [ dutch ] = "Vorig tekenobject" ;
+ Text [ portuguese ] = "Objecto de desenho anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸ö×Ö·û¶ÔÏó";
+ Text[ russian ] = "Ïðåäûäóùèé ãðàôè÷åñêèé îáúåêò";
+ Text[ polish ] = "Poprzedni obiekt rysunkowy";
+ Text[ japanese ] = "‘O‚Ì•¶ŽšµÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "¤W¤@­Ó¦r¤¸ª«¥ó";
+ Text[ arabic ] = "ÇáßÇÆä ÇáÑÓæãí ÇáÓÇÈÞ";
+ Text[ greek ] = "Ðñïçãïýìåíï áíôéêåßìåíï ó÷åäßáóçò";
+ Text[ korean ] = "ÀÌÀü ±×¸®±â";
+ Text[ turkish ] = "Önceki çizim";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_CTRL_UP
+{
+ Text = "Voriges Kontrollfeld" ;
+ Text [ English ] = "Previous control" ;
+ Text [ english_us ] = "Previous control" ;
+ Text [ portuguese_brazilian ] = "Voriges Kontrollfeld" ;
+ Text [ swedish ] = "Föregående kontrollfält" ;
+ Text [ danish ] = "Forrige kontrolelement" ;
+ Text [ italian ] = "Campo di controllo precedente" ;
+ Text [ spanish ] = "Campo de control anterior" ;
+ Text [ french ] = "Elément de contrôle précédent" ;
+ Text [ dutch ] = "Vorig controleveld" ;
+ Text [ portuguese ] = "Controlo anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸ö¿ØÖÆ";
+ Text[ russian ] = "Ïðåäûäóùèé ýëåìåíò óïðàâëåíèÿ";
+ Text[ polish ] = "Poprzednie pole kontrolne";
+ Text[ japanese ] = "‘O‚̺ÝÄÛ°Ù";
+ Text[ chinese_traditional ] = "¤W¤@­Ó±±¨î¶µ";
+ Text[ arabic ] = "ÚäÕÑ ÇáÊÍßã ÇáÓÇÈÞ";
+ Text[ greek ] = "Ðñïçãïýìåíï ðåäßï åëÝã÷ïõ";
+ Text[ korean ] = "ÀÌÀü ÄÁÆ®·Ñ";
+ Text[ turkish ] = "Önceki komut alaný";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_REG_UP
+{
+ Text = "Voriger Bereich" ;
+ Text [ English ] = "Previous region" ;
+ Text [ english_us ] = "Previous section" ;
+ Text [ portuguese_brazilian ] = "Voriger Bereich" ;
+ Text [ swedish ] = "Föregående område" ;
+ Text [ danish ] = "Forrige område" ;
+ Text [ italian ] = "Area precedente" ;
+ Text [ spanish ] = "Area anterior" ;
+ Text [ french ] = "Section précédente" ;
+ Text [ dutch ] = "Vorig bereik" ;
+ Text [ portuguese ] = "Secção anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸öÇøÓò";
+ Text[ russian ] = "Ïðåäûäóùàÿ îáëàñòü";
+ Text[ polish ] = "Poprzednia sekcja";
+ Text[ japanese ] = "‘O‚͈̔Í";
+ Text[ chinese_traditional ] = "¤W¤@­Ó°Ï°ì";
+ Text[ arabic ] = "ÇáäØÇÞ ÇáÓÇÈÞ";
+ Text[ greek ] = "Ðñïçãïýìåíç åíüôçôá";
+ Text[ korean ] = "ÀÌÀü ±¸¿ª";
+ Text[ turkish ] = "Önceki Bölüm";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_BKM_UP
+{
+ Text = "Vorige Textmarke" ;
+ Text [ English ] = "Previous bookmark" ;
+ Text [ english_us ] = "Previous bookmark" ;
+ Text [ portuguese_brazilian ] = "Vorige Textmarke" ;
+ Text [ swedish ] = "Föregående bokmärke" ;
+ Text [ danish ] = "Forrige tekstmarkering" ;
+ Text [ italian ] = "Segnalibro precedente" ;
+ Text [ spanish ] = "Marcador anterior" ;
+ Text [ french ] = "Repère de texte précédent" ;
+ Text [ dutch ] = "Vorige tekstmarkering" ;
+ Text [ portuguese ] = "Marcador de texto anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸öÊéÇ©";
+ Text[ russian ] = "Ïðåäûäóùàÿ çàêëàäêà";
+ Text[ polish ] = "Poprzednia zak³adka";
+ Text[ japanese ] = "‘O‚Ì÷½ÄÏ°¸";
+ Text[ chinese_traditional ] = "¤W¤@­Ó®ÑÅÒ";
+ Text[ arabic ] = "ÇáÅÔÇÑÉ ÇáãÑÌÚíÉ ÇáÓÇÈÞÉ";
+ Text[ greek ] = "Ðñïçãïýìåíï óçìÜäé êåéìÝíïõ";
+ Text[ korean ] = "ÀÌÀü Ã¥ °¥ÇÇ";
+ Text[ turkish ] = "Önceki metin iþareti";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_GRF_UP
+{
+ Text = "Vorige Grafik" ;
+ Text [ English ] = "Previous graphic" ;
+ Text [ english_us ] = "Previous picture" ;
+ Text [ portuguese_brazilian ] = "Vorige Grafik" ;
+ Text [ swedish ] = "Föregående grafik" ;
+ Text [ danish ] = "Forrige billede" ;
+ Text [ italian ] = "Immagine precedente" ;
+ Text [ spanish ] = "Imagen anterior" ;
+ Text [ french ] = "Image précédente" ;
+ Text [ dutch ] = "Vorige afbeelding" ;
+ Text [ portuguese ] = "Imagem anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸öͼÐÎ";
+ Text[ russian ] = "Ïðåäûäóùèé ðèñóíîê";
+ Text[ polish ] = "Poprzednia grafika";
+ Text[ japanese ] = "‘O‚Ì}";
+ Text[ chinese_traditional ] = "¤W¤@­Ó¹Ï¤ù";
+ Text[ arabic ] = "ÇáÕæÑÉ ÇáÓÇÈÞÉ";
+ Text[ greek ] = "Ðñïçãïýìåíï ãñáöéêü";
+ Text[ korean ] = "ÀÌÀü ±×¸²";
+ Text[ turkish ] = "Önceki grafik";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_OLE_UP
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Voriges OLE-Objekt : Voriges OLE object */
+ Text = "Voriges OLE-Objekt" ;
+ Text [ English ] = "Previous OLE object" ;
+ Text [ english_us ] = "Previous OLE object" ;
+ Text [ portuguese_brazilian ] = "Voriges OLE object" ;
+ Text [ swedish ] = "Föregående OLE-objekt" ;
+ Text [ danish ] = "Forrige OLE-objekt" ;
+ Text [ italian ] = "Oggetto OLE precedente" ;
+ Text [ spanish ] = "Objeto OLE anterior" ;
+ Text [ french ] = "Objet OLE précédent" ;
+ Text [ dutch ] = "Vorig OLE-object" ;
+ Text [ portuguese ] = "Objecto OLE anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸ö OLE-¶ÔÏó";
+ Text[ russian ] = "Ïðåäûäóùèé îáúåêò OLE";
+ Text[ polish ] = "Poprzedni obiekt OLE";
+ Text[ japanese ] = "‘O‚ÌOLE-µÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "¤W¤@­Ó OLE-ª«¥ó";
+ Text[ arabic ] = "ÇáÓÇÈÞ OLE ÇáßÇÆä";
+ Text[ greek ] = "Ðñïçãïýìåíï áíôéêåßìåíï OLE";
+ Text[ korean ] = "ÀÌÀü OLE°³Ã¼";
+ Text[ turkish ] = "Önceki OLE nesnesi";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_OUTL_UP
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Vorige Überschrift : Vorige šberschrift */
+ Text = "Vorige Überschrift" ;
+ Text [ English ] = "Previous outline" ;
+ Text [ english_us ] = "Previous heading" ;
+ Text [ portuguese_brazilian ] = "Vorige Überschrift" ;
+ Text [ swedish ] = "Föregående överskrift" ;
+ Text [ danish ] = "Forrige overskrift" ;
+ Text [ italian ] = "Intestazione precedente" ;
+ Text [ spanish ] = "Encabezado anterior" ;
+ Text [ french ] = "Titre précédent" ;
+ Text [ dutch ] = "Vorige kop" ;
+ Text [ portuguese ] = "Título anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸ö±êÌâ";
+ Text[ russian ] = "Ïðåäûäóùèé çàãîëîâîê";
+ Text[ polish ] = "Poprzedni tytu³";
+ Text[ japanese ] = "‘O‚ÌŒ©o‚µ";
+ Text[ chinese_traditional ] = "¤W¤@­Ó¼ÐÃD";
+ Text[ arabic ] = "ÇáÚäæÇä ÇáÓÇÈÞ";
+ Text[ greek ] = "Ðñïçãïýìåíç åðéêåöáëßäá";
+ Text[ korean ] = "ÀÌÀüÁ¦¸ñ";
+ Text[ turkish ] = "Önceki baþlýk";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_SEL_UP
+{
+ Text = "Vorige Markierung" ;
+ Text [ English ] = "Previous selection" ;
+ Text [ english_us ] = "Previous selection" ;
+ Text [ portuguese_brazilian ] = "Vorige Markierung" ;
+ Text [ swedish ] = "Föregående markering" ;
+ Text [ danish ] = "Forrige markering" ;
+ Text [ italian ] = "Selezione precedente" ;
+ Text [ spanish ] = "Selección anterior" ;
+ Text [ french ] = "Sélection précédente" ;
+ Text [ dutch ] = "Vorige markering" ;
+ Text [ portuguese ] = "Selecção anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸öÑ¡Ôñ";
+ Text[ russian ] = "Ïðåäûäóùåå âûäåëåíèå";
+ Text[ polish ] = "Poprzednie zaznaczenie";
+ Text[ japanese ] = "‘O‚Ì‘I‘ð";
+ Text[ chinese_traditional ] = "¤W¤@­Ó¿ï¨ú";
+ Text[ arabic ] = "ÇáÊÍÏíÏ ÇáÓÇÈÞ";
+ Text[ greek ] = "Ðñïçãïýìåíç åðéëïãÞ";
+ Text[ korean ] = "ÀÌÀü ¼±ÅÃ";
+ Text[ turkish ] = "Sonraki seçim";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_FTN_UP
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Vorige Fußnote : Vorige Fu˜note */
+ Text = "Vorige Fußnote" ;
+ Text [ English ] = "Previous Footnote" ;
+ Text [ english_us ] = "Previous footnote" ;
+ Text [ portuguese_brazilian ] = "Vorige Fußnote" ;
+ Text [ swedish ] = "Föregående fotnot" ;
+ Text [ danish ] = "Forrige fodnote" ;
+ Text [ italian ] = "Nota a piè pagina precedente" ;
+ Text [ spanish ] = "Nota al pie anterior" ;
+ Text [ french ] = "Note de bas de page précédente" ;
+ Text [ dutch ] = "Vorige voetnoot" ;
+ Text [ portuguese ] = "Nota de rodapé anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸ö×¢½Å";
+ Text[ russian ] = "Ïðåäûäóùàÿ ñíîñêà";
+ Text[ polish ] = "Poprzedni przypis dolny";
+ Text[ japanese ] = "‘O‚Ì‹r’";
+ Text[ chinese_traditional ] = "¤W¤@­Óµù¸}";
+ Text[ arabic ] = "ÇáÍÇÔíÉ ÇáÓÝáíÉ ÇáÓÇÈÞÉ";
+ Text[ greek ] = "Ðñïçãïýìåíç õðïóçìåßùóç";
+ Text[ korean ] = "ÀÌÀü °¢ÁÖ";
+ Text[ turkish ] = "Önceki dipnot";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_MARK_UP
+{
+ Text = "Voriger Merker" ;
+ Text [ English ] = "Previous Reminder" ;
+ Text [ english_us ] = "Previous Reminder" ;
+ Text [ portuguese_brazilian ] = "Voriger Merker" ;
+ Text [ swedish ] = "Föregående temporära bokmärke" ;
+ Text [ danish ] = "Forrige påmindelse" ;
+ Text [ italian ] = "Contrassegno precedente" ;
+ Text [ spanish ] = "Marca anterior" ;
+ Text [ french ] = "Pense-bête précédent" ;
+ Text [ dutch ] = "Vorig merkteken" ;
+ Text [ portuguese ] = "Marca anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸ö±ê¼Ç";
+ Text[ russian ] = "Ïðåäûäóùàÿ ïîìåòêà";
+ Text[ polish ] = "Poprzedni znacznik";
+ Text[ japanese ] = "‘O‚ÌŠo‚¦Ž~‚ß";
+ Text[ chinese_traditional ] = "¤W¤@­Ó´£¿ô";
+ Text[ arabic ] = "ÚáÇãÉ ÇáÊÐßíÑ ÇáÓÇÈÞÉ";
+ Text[ greek ] = "Ðñïçãïýìåíç õðåíèýìéóç";
+ Text[ korean ] = "ÀÌÀü ³ª¸ÓÁö";
+ Text[ turkish ] = "Önceki anýmsatýcý";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_POSTIT_UP
+{
+ Text = "Vorige Notiz" ;
+ Text [ English ] = "Previous Annotation" ;
+ Text [ english_us ] = "Previous Note" ;
+ Text [ portuguese_brazilian ] = "Vorige Notiz" ;
+ Text [ swedish ] = "Föregående anteckning" ;
+ Text [ danish ] = "Forrige note" ;
+ Text [ italian ] = "Nota precedente" ;
+ Text [ spanish ] = "Nota anterior" ;
+ Text [ french ] = "Note précédente" ;
+ Text [ dutch ] = "Vorige aantekening" ;
+ Text [ portuguese ] = "Anotação anterior" ;
+ Text[ chinese_simplified ] = "ÉÏÒ»¸ö±¸×¢";
+ Text[ russian ] = "Ïðåäûäóùåå ïðèìå÷àíèå";
+ Text[ polish ] = "Poprzednia notatka";
+ Text[ japanese ] = "‘O‚ÌÒÓ";
+ Text[ chinese_traditional ] = "¤W¤@­Ó³Æµù";
+ Text[ arabic ] = "ÇáãáÇÍÙÉ ÇáÓÇÈÞÉ";
+ Text[ greek ] = "Ðñïçãïýìåíç óçìåßùóç";
+ Text[ korean ] = "ÀÌÀü ¸Þ¸ð";
+ Text[ turkish ] = "Önceki not";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_SRCH_REP_UP
+{
+ Text = "Rückwärts weitersuchen" ;
+ Text [ English ] = "Repeat search backwards" ;
+ Text [ english_us ] = "Continue search backwards" ;
+ Text [ portuguese_brazilian ] = "Rückwärts weitersuchen" ;
+ Text [ swedish ] = "Sök vidare bakåt" ;
+ Text [ danish ] = "Fortsæt søgning tilbage" ;
+ Text [ italian ] = "Cerca all'indietro" ;
+ Text [ spanish ] = "Continuar búsqueda en sentido inverso" ;
+ Text [ french ] = "Continuer la recherche vers le haut" ;
+ Text [ dutch ] = "Achterwaarts verder zoeken" ;
+ Text [ portuguese ] = "Continuar a procura para trás" ;
+ Text[ chinese_simplified ] = "¼ÌÐøÏòºóËÑÑ°";
+ Text[ russian ] = "Îáðàòíûé ïîèñê";
+ Text[ polish ] = "Szukaj dalej wstecz";
+ Text[ japanese ] = "•¶“ª•ûŒü‚ÉŒŸõ‘±s";
+ Text[ chinese_traditional ] = "Ä~Äò¦V«á·j´M";
+ Text[ arabic ] = "ãÊÇÈÚÉ ÇáÈÍË ááÎáÝ";
+ Text[ greek ] = "ÓõíÝ÷éóç áíáæÞôçóçò ðßóù";
+ Text[ korean ] = "°è¼Ó µÚ·Î °Ë»ö";
+ Text[ turkish ] = "Geriye doðru ara";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_INDEX_ENTRY_UP
+{
+ Text = "Voriger Verzeichniseintrag" ;
+ Text [ English ] = "Previous index entry" ;
+ Text[ italian ] = "Voce d'indice precedente";
+ Text[ portuguese_brazilian ] = "Previous index entry";
+ Text[ portuguese ] = "Entrada do índice anterior";
+ Text[ danish ] = "Forrige indekselement";
+ Text[ french ] = "Entrée d'index précédente";
+ Text[ swedish ] = "Föregående förteckningspost";
+ Text[ dutch ] = "Vorig index item";
+ Text[ spanish ] = "Entrada de índice anterior";
+ Text[ english_us ] = "Previous index entry";
+ Text[ chinese_simplified ] = "ÉÏÒ»¸öĿ¼ÌõÄ¿";
+ Text[ russian ] = "Ïðåäûäóùèé ýëåìåíò óêàçàòåëÿ";
+ Text[ polish ] = "Poprzedni wpis do indeksu";
+ Text[ japanese ] = "‘O‚Ìõˆø€–Ú";
+ Text[ chinese_traditional ] = "¤W¤@­Ó¥Ø¿ý¶µ¥Ø";
+ Text[ arabic ] = "ÇáÅÏÎÇá ÇáÝåÑÓí ÇáÓÇÈÞ";
+ Text[ greek ] = "Ðñïçãïýìåíç åããñáöÞ åõñåôçñßïõ";
+ Text[ korean ] = "ÀÌÀü »öÀÎ Ç׸ñ";
+ Text[ turkish ] = "Önceki dizin giriþi";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_TBLFML_UP
+{
+ Text = "Vorige Tabellenformel" ;
+ Text [ English ] = "Previous table formula" ;
+ Text[ english_us ] = "Previous table formula";
+ Text[ portuguese ] = "Fórmula de tabela anterior";
+ Text[ russian ] = "Ïðåäûäóùàÿ ôîðìóëà òàáëèöû";
+ Text[ dutch ] = "Vorige tabellenformule";
+ Text[ french ] = "Formule de table précédente";
+ Text[ spanish ] = "Fórmula de tabla anterior";
+ Text[ italian ] = "Formula tabella precedente";
+ Text[ danish ] = "Forrige tabelformel";
+ Text[ swedish ] = "Föregående tabellformel";
+ Text[ polish ] = "Poprzednia formu³a tabeli";
+ Text[ portuguese_brazilian ] = "Previous table formula";
+ Text[ japanese ] = "‘O‚Ì•\\‚Ì”Ž®";
+ Text[ chinese_simplified ] = "ÉÏÒ»¸ö¹¤×÷±í¹«Ê½";
+ Text[ chinese_traditional ] = "¤W¤@­Ó¤u§@ªí¤½¦¡";
+ Text[ arabic ] = "ÕíÛÉ ÇáÌÏæá ÇáÓÇÈÞÉ";
+ Text[ greek ] = "Ðñïçãïýìåíïò ôýðïò ðßíáêá";
+ Text[ korean ] = "ÀÌÀü Ç¥ ¼ö½Ä";
+ Text[ turkish ] = "Önceki tablo formülü";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_TBLFML_DOWN
+{
+ Text = "Nächste Tabellenformel" ;
+ Text [ English ] = "Next table formula" ;
+ Text[ english_us ] = "Next table formula";
+ Text[ portuguese ] = "Fórmula de tabela seguinte";
+ Text[ russian ] = "Ñëåäóþùàÿ ôîðìóëà òàáëèöû";
+ Text[ dutch ] = "Volgende tabellenformule";
+ Text[ french ] = "Formule de table suivante";
+ Text[ spanish ] = "Siguiente fórmula de tabla";
+ Text[ italian ] = "Formula tabella successiva";
+ Text[ danish ] = "Næste tabelformel";
+ Text[ swedish ] = "Nästa tabellformel";
+ Text[ polish ] = "Nastêpna formu³a tabeli";
+ Text[ portuguese_brazilian ] = "Next table formula";
+ Text[ japanese ] = "ŽŸ‚Ì•\\‚Ì”Ž®";
+ Text[ chinese_simplified ] = "ÏÂÒ»¸ö¹¤×÷±í¸ñʽ";
+ Text[ chinese_traditional ] = "¤U¤@­Ó¤u§@ªí®æ¦¡";
+ Text[ arabic ] = "ÕíÛÉ ÇáÌÏæá ÇáÊÇáíÉ";
+ Text[ greek ] = "Åðüìåíïò ôýðïò ðßíáêá";
+ Text[ korean ] = "´ÙÀ½ Ç¥ ¼ö½Ä";
+ Text[ turkish ] = "Sonraki tablo formülü";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_TBLFML_ERR_UP
+{
+ Text = "Vorige fehlerhafte Tabellenformel" ;
+ Text [ English ] = "Previous wrong table formula" ;
+ Text[ english_us ] = "Previous faulty table formula";
+ Text[ portuguese ] = "Fórmula de tabela anterior errada";
+ Text[ russian ] = "Íåïðàâèëüíàÿ ïðåäûäóùàÿ ôîðìóëà òàáëèöû";
+ Text[ dutch ] = "Vorige foutieve tabellenformule";
+ Text[ french ] = "Formule de table erronée précédente";
+ Text[ spanish ] = "Fórmula de tabla anterior errónea";
+ Text[ italian ] = "Formula tabella errata precedente";
+ Text[ danish ] = "Forrige fejlagtige tabelformel";
+ Text[ swedish ] = "Föregående felaktiga tabellformel";
+ Text[ polish ] = "Poprzednia b³êdna formu³a tabeli";
+ Text[ portuguese_brazilian ] = "Previous wrong table formula";
+ Text[ japanese ] = "‘O‚̳‚µ‚­‚È‚¢•\\‚Ì”Ž®";
+ Text[ chinese_simplified ] = "ÉÏÒ»¸ö´íÎóµÄ¹¤×÷±í¹«Ê½";
+ Text[ chinese_traditional ] = "¤W¤@­Ó¿ù»~ªº¤u§@ªí®æ¦¡";
+ Text[ arabic ] = "ÕíÛÉ ÇáÌÏæá ÇáÎÇØÆÉ ÇáÓÇÈÞÉ";
+ Text[ greek ] = "Ðñïçãïýìåíïò ëáíèáóìÝíïò ôýðïò ðßíáêá";
+ Text[ korean ] = "À߸øµÈ ÀÌÀü Ç¥ ¼ö½Ä";
+ Text[ turkish ] = "Önceki hatalý tablo formülü";
+ Text[ language_user1 ] = " ";
+};
+String STR_IMGBTN_TBLFML_ERR_DOWN
+{
+ Text = "Nächste fehlerhafte Tabellenformel" ;
+ Text [ English ] = "Next wrong table formula" ;
+ Text[ english_us ] = "Next faulty table formula";
+ Text[ portuguese ] = "Fórmula de tabela seguinte errada";
+ Text[ russian ] = "Íåïðàâèëüíàÿ ñëåäóþùàÿ ôîðìóëà òàáëèöû";
+ Text[ dutch ] = "Volgende foutieve tabellenformule";
+ Text[ french ] = "Formule de table erronée suivante";
+ Text[ spanish ] = "Siguiente fórmula errónea de tabla";
+ Text[ italian ] = "Formula tabella errata successiva";
+ Text[ danish ] = "Næste fejlagtige tabelformel";
+ Text[ swedish ] = "Nästa felaktiga tabellformel";
+ Text[ polish ] = "Nastêpna b³êdna formu³a tabeli";
+ Text[ portuguese_brazilian ] = "Next wrong table formula";
+ Text[ japanese ] = "ŽŸ‚̳‚µ‚­‚È‚¢•\\‚Ì”Ž®";
+ Text[ chinese_simplified ] = "ÏÂÒ»¸ö´íÎóµÄ¹¤×÷±í¸ñʽ";
+ Text[ chinese_traditional ] = "¤U¤@­Ó¿ù»~ªº¤u§@ªí®æ¦¡";
+ Text[ arabic ] = "ÕíÛÉ ÇáÌÏæá ÇáÎÇØÆÉ ÇáÊÇáíÉ";
+ Text[ greek ] = "Åðüìåíïò ëáíèáóìÝíïò ôýðïò ðßíáêá";
+ Text[ korean ] = "À߸øµÈ ´ÙÀ½ Ç¥ ¼ö½Ä";
+ Text[ turkish ] = "Sonraki hatalý tablo formülü";
+ Text[ language_user1 ] = " ";
+};
+ImageButton BTN_NAVI
+{
+ HelpID = HID_NAVIGATION_IMGBTN ;
+ SVLOOK = TRUE ;
+ HIDE = TRUE ;
+ RectStyle = TRUE ;
+ SmallStyle = TRUE ;
+ Image IMG_BTN
+ {
+ ImageBitmap = Bitmap { File = "punkt.bmp" ; };
+ };
+ String ST_QUICK
+ {
+ Text [ english_us ] = "Navigation" ;
+ Text [ portuguese_brazilian ] = "Navigation" ;
+ Text [ swedish ] = "Navigation" ;
+ Text [ danish ] = "Navigation" ;
+ Text [ italian ] = "Navigazione" ;
+ Text [ spanish ] = "Navegación" ;
+ Text [ french ] = "Navigation" ;
+ Text [ dutch ] = "Navigatie" ;
+ Text [ portuguese ] = "Navegação" ;
+ Text = "Navigation" ;
+ Text[ chinese_simplified ] = "ä¯ÀÀ";
+ Text[ russian ] = "Íàâèãàöèÿ";
+ Text[ polish ] = "Nawigacja";
+ Text[ japanese ] = "ÅËÞ¹Þ°¼®Ý";
+ Text[ chinese_traditional ] = "ÂsÄý";
+ Text[ arabic ] = "ÇáãáÇÍÉ";
+ Text[ greek ] = "Ìåôáêßíçóç";
+ Text[ korean ] = "³×ºñ°ÔÀ̼Ç";
+ Text[ turkish ] = "Dolaþma";
+ Text[ language_user1 ] = " ";
+ };
+};
diff --git a/sw/source/ui/shells/basesh.cxx b/sw/source/ui/shells/basesh.cxx
new file mode 100644
index 000000000000..5c3e1a4bfb3b
--- /dev/null
+++ b/sw/source/ui/shells/basesh.cxx
@@ -0,0 +1,2507 @@
+/*************************************************************************
+ *
+ * $RCSfile: basesh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+#include <sot/factory.hxx>
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+
+
+#ifndef _SVXLINKMGR_HXX //autogen
+#include <svx/linkmgr.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _IMAPDLG_HXX_ //autogen
+#include <svx/imapdlg.hxx>
+#endif
+#ifndef _SBASLTID_HRC //autogen
+#include <offmgr/sbasltid.hrc>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _EXPLORER_HXX //autogen
+#include <sfx2/explorer.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFX_OBJITEM_HXX //autogen
+#include <sfx2/objitem.hxx>
+#endif
+#ifndef _FILTER_HXX //autogen
+#include <svtools/filter.hxx>
+#endif
+#ifndef _GALLERY_HXX_ //autogen
+#include <svx/gallery.hxx>
+#endif
+#ifndef _CLIP_HXX //autogen
+#include <vcl/clip.hxx>
+#endif
+#ifndef _CONTDLG_HXX_ //autogen
+#include <svx/contdlg.hxx>
+#endif
+#ifndef _GRAPH_HXX //autogen
+#include <vcl/graph.hxx>
+#endif
+#ifndef _SVX_IMPGRF_HXX //autogen
+#include <svx/impgrf.hxx>
+#endif
+#ifndef _SFXSLSTITM_HXX //autogen
+#include <svtools/slstitm.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXPTITEM_HXX //autogen
+#include <svtools/ptitem.hxx>
+#endif
+#ifndef _POLY_HXX //autogen
+#include <vcl/poly.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_SHADITEM_HXX //autogen
+#include <svx/shaditem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_OPAQITEM_HXX //autogen
+#include <svx/opaqitem.hxx>
+#endif
+#ifndef _SVX_SIZEITEM_HXX //autogen
+#include <svx/sizeitem.hxx>
+#endif
+#ifndef _SVX_BORDER_HXX
+#include <svx/border.hxx>
+#endif
+
+#ifndef _FMTURL_HXX //autogen
+#include <fmturl.hxx>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _BASESH_HXX
+#include <basesh.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _CHANGEDB_HXX
+#include <changedb.hxx>
+#endif
+#ifndef _BOOKMARK_HXX
+#include <bookmark.hxx>
+#endif
+#ifndef _BOOKMRK_HXX
+#include <bookmrk.hxx>
+#endif
+#ifndef _DOCSTAT_HXX
+#include <docstat.hxx>
+#endif
+#ifndef _USRFLD_HXX
+#include <usrfld.hxx>
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx>
+#endif
+#ifndef _FLDMGR_HXX
+#include <fldmgr.hxx>
+#endif
+#ifndef _FRMMGR_HXX
+#include <frmmgr.hxx>
+#endif
+#ifndef _TABLEMGR_HXX
+#include <tablemgr.hxx>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx>
+#endif
+#ifndef _DATAEX_HXX
+#include <dataex.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _CONVERT_HXX
+#include <convert.hxx>
+#endif
+#ifndef _PATTERN_HXX
+#include <pattern.hxx>
+#endif
+#ifndef _UIBORDER_HXX
+#include <uiborder.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _TBLAFMT_HXX
+#include <tblafmt.hxx>
+#endif
+#ifndef _CAPTION_HXX
+#include <caption.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _SHELLS_HRC
+#include <shells.hrc>
+#endif
+#ifndef _STATSTR_HRC
+#include <statstr.hrc>
+#endif
+#ifndef _GLOBALS_H
+#include <globals.h>
+#endif
+
+#ifdef OS2
+#include <vcl/sysdep.hxx>
+#endif
+#ifndef _FSYS_HXX
+#include <tools/fsys.hxx>
+#endif
+
+USHORT SwBaseShell::nFrameMode = FLY_DRAG_END;
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+//Fuer die Erkennung der Id, die variable von Gallery mit SID_GALLERY_BG_BRUSH
+//ankommt.
+static BYTE nParagraphPos;
+static BYTE nGraphicPos;
+static BYTE nOlePos;
+static BYTE nFramePos;
+static BYTE nTablePos;
+static BYTE nTableRowPos;
+static BYTE nTableCellPos;
+static BYTE nPagePos;
+static BYTE nHeaderPos;
+static BYTE nFooterPos;
+
+//!!OS: das muss ein if/else bleiben, weil BLC das nicht anders versteht
+#define SVDATAOBJ \
+ SvDataObjectRef xObj; \
+ if ( Clipboard::GetFormatCount() ) \
+ { \
+ SwModule* pMod = SW_MOD(); \
+ if ( pMod->pClipboard ) \
+ xObj = pMod->pClipboard ; \
+ else \
+ xObj = SvDataObject::PasteClipboard(); \
+ }
+
+#define Interior
+#include <svx/svxslots.hxx>
+
+#define SwBaseShell
+#define Shadow
+#include "itemdef.hxx"
+#include "swslots.hxx"
+
+#define SWCONTOURDLG(rView) ( (SvxContourDlg*) ( rView.GetViewFrame()->GetChildWindow( \
+ SvxContourDlgChildWindow::GetChildWindowId() )-> \
+ GetWindow() ) )
+
+#define SWIMAPDLG(rView) ( (SvxIMapDlg*) ( rView.GetViewFrame()->GetChildWindow( \
+ SvxIMapDlgChildWindow::GetChildWindowId() )-> \
+ GetWindow() ) )
+
+SFX_IMPL_INTERFACE(SwBaseShell, SfxShell, SW_RES(0))
+{
+ SFX_CHILDWINDOW_REGISTRATION(SvxIMapDlgChildWindow::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(SvxContourDlgChildWindow::GetChildWindowId());
+}
+
+TYPEINIT1(SwBaseShell,SfxShell)
+
+/*--------------------------------------------------------------------
+ Beschreibung: statics
+ --------------------------------------------------------------------*/
+
+
+void lcl_UpdateIMapDlg(SwWrtShell& rSh)
+{
+ Graphic aGrf(rSh.GetIMapGraphic());
+ TargetList* pList = new TargetList;
+ rSh.GetView().GetViewFrame()->GetTopFrame()->GetTargetList(*pList);
+
+ SfxItemSet aSet( rSh.GetAttrPool(), RES_URL, RES_URL );
+ rSh.GetFlyFrmAttr( aSet );
+ const SwFmtURL &rURL = (SwFmtURL&)aSet.Get( RES_URL );
+ SvxIMapDlgChildWindow::UpdateIMapDlg(
+ aGrf, rURL.GetMap(), pList, rSh.GetIMapInventor() );
+
+ USHORT nCount = (USHORT)pList->Count();
+ if(nCount)
+ for( USHORT i = nCount; i; i-- )
+ {
+ delete pList->GetObject(i-1);
+ }
+ delete pList;
+}
+
+
+BOOL lcl_UpdateContourDlg( SwWrtShell &rSh, int nSel )
+{
+ Graphic aGraf( rSh.GetIMapGraphic() );
+ BOOL bRet = GRAPHIC_NONE != aGraf.GetType();
+ if( bRet )
+ {
+ String aGrfName;
+ if ( nSel & SwWrtShell::SEL_GRF )
+ rSh.GetGrfNms( &aGrfName, 0 );
+
+ SvxContourDlg *pDlg = SWCONTOURDLG(rSh.GetView());
+ pDlg->Update( aGraf, aGrfName.Len() > 0,
+ rSh.GetGraphicPolygon(), rSh.GetIMapInventor() );
+ }
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Alle Items disablen, wird auch aus anderen Source gerufen
+ --------------------------------------------------------------------*/
+
+void DisableAllItems(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter(rSet);
+
+ USHORT nWhich = aIter.FirstWhich();
+ ASSERT(nWhich, leeres Set);
+ while(nWhich)
+ {
+ rSet.DisableItem(nWhich);
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: loeschen
+ --------------------------------------------------------------------*/
+
+void SwBaseShell::ExecDelete(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ switch(rReq.GetSlot())
+ {
+ case SID_DELETE:
+ rSh.DelRight(TRUE);
+ break;
+
+ case FN_BACKSPACE:
+
+ if( rSh.IsNoNum() )
+ {
+ rSh.SttCrsrMove();
+ BOOL bLeft = rSh.Left( TRUE );
+ if( bLeft )
+ {
+ // JP 28.03.96: ein Backspace im Absatz ohne Nummer wird zum Delete
+ rSh.SwapPam();
+ rSh.DelRight( FALSE );
+ }
+ else
+ // JP 15.07.96: wenns nicht mehr nach vorne geht, die
+ // Numerierung aufheben. Z.B. am Doc-/
+ // Rahmen-/Tabellen-/Bereichs-Anfang
+ rSh.DelNumRules();
+
+ rSh.EndCrsrMove();
+ break;
+ }
+
+ // ansonsten DelLeft rufen
+ case FN_SHIFT_BACKSPACE:
+ rSh.DelLeft();
+ break;
+ default:
+ DBG_ERROR("falscher Dispatcher");
+ return;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwBaseShell::ExecClpbrd(SfxRequest &rReq)
+{
+ //Achtung: Suizid gefaehrdet! Nach Paste, Paste special kann der die
+ //Shell zerstoert sein.
+
+
+ SwWrtShell &rSh = GetShell();
+ USHORT nId = rReq.GetSlot();
+ switch( nId )
+ {
+ case SID_CUT:
+ case SID_COPY:
+ rView.GetEditWin().FlushInBuffer( &rSh );
+ if ( rSh.HasSelection() )
+ {
+ SwDataExchangeRef aDataEx( new SwDataExchange( rSh ) );
+ if ( nId == SID_CUT )
+ aDataEx->Cut();
+ else
+ aDataEx->Copy( FALSE );
+ break;
+ }
+ return;
+
+ case SID_PASTE:
+ {
+ SVDATAOBJ;
+ if ( xObj.Is() && SwDataExchange::IsPaste( GetShell(), *xObj ) )
+ {
+ // temp. Variablen, da die Shell nach dem Paste schon
+ // zerstoert sein kann
+ SwView* pView = &rView;
+ SwDataExchange::Paste( rSh, *xObj );
+ if( rSh.IsFrmSelected() || rSh.IsObjSelected())
+ rSh.EnterSelFrmMode();
+ pView->AttrChangedNotify(&rSh);
+ }
+ else
+ return;
+ }
+ break;
+ case FN_PASTESPECIAL:
+ {
+ SVDATAOBJ;
+ int nRet;
+ if ( xObj.Is() &&
+ SwDataExchange::IsPasteSpecial( rSh, *xObj ) )
+ {
+ // temp. Variablen, da die Shell nach dem Paste schon
+ // zerstoert sein kann
+ SwView* pView = &rView;
+
+ nRet = SwDataExchange::PasteSpecial( rSh, *xObj );
+ if (rSh.IsFrmSelected() || rSh.IsObjSelected())
+ rSh.EnterSelFrmMode();
+ pView->AttrChangedNotify(&rSh);
+ }
+ else
+ return;
+ rReq.SetReturnValue(SfxInt16Item(nId, nRet));
+ }
+ break;
+ default:
+ DBG_ERROR("falscher Dispatcher");
+ return;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: ClipBoard-Status
+ --------------------------------------------------------------------*/
+
+void SwBaseShell::StateClpbrd(SfxItemSet &rSet)
+{
+ SwWrtShell &rSh = GetShell();
+ SfxWhichIter aIter(rSet);
+
+ const BOOL bCopy = rSh.HasSelection();
+ SVDATAOBJ;
+
+ USHORT nWhich = aIter.FirstWhich();
+
+ while(nWhich)
+ {
+ switch(nWhich)
+ {
+ case SID_CUT:
+ if (rSh.IsSelObjProtected( (FlyProtectType)(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) ) != 0)
+ {
+ rSet.DisableItem( nWhich );
+ break;
+ }
+ case SID_COPY:
+ if( !bCopy )
+ rSet.DisableItem( nWhich );
+ break;
+ case SID_PASTE:
+ if( !xObj.Is() || !SwDataExchange::IsPaste( rSh, *xObj))
+ rSet.DisableItem( SID_PASTE );
+ break;
+ case FN_PASTESPECIAL:
+ if( !xObj.Is() ||
+ !SwDataExchange::IsPasteSpecial( rSh, *xObj ) )
+ rSet.DisableItem( FN_PASTESPECIAL );
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Undo ausfuehren
+ --------------------------------------------------------------------*/
+
+void SwBaseShell::ExecUndo(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ switch(rReq.GetSlot())
+ {
+ case SID_UNDO:
+ rSh.Do( SwWrtShell::UNDO );
+ break;
+
+ case SID_REDO:
+ rSh.Do( SwWrtShell::REDO );
+ break;
+
+ case SID_REPEAT:
+ rSh.Do( SwWrtShell::REPEAT );
+ break;
+
+ default:
+ DBG_ERROR("falscher Dispatcher");
+ return;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Zustand Undo
+ --------------------------------------------------------------------*/
+
+void SwBaseShell::StateUndo(SfxItemSet &rSet)
+{
+ SwWrtShell &rSh = GetShell();
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while(nWhich)
+ {
+ switch(nWhich)
+ {
+ case SID_UNDO:
+ {
+ if(rSh.GetUndoIds())
+ rSet.Put(SfxStringItem(nWhich,
+ rSh.GetDoString(SwWrtShell::UNDO)));
+ else
+ rSet.DisableItem(nWhich);
+ break;
+ }
+ case SID_REDO:
+ {
+ if(rSh.GetRedoIds())
+ rSet.Put(SfxStringItem(nWhich,
+ rSh.GetDoString(SwWrtShell::REDO)));
+ else
+ rSet.DisableItem(nWhich);
+ break;
+ }
+ case SID_REPEAT:
+ { // Repeat nur moeglich wenn kein REDO moeglich - UI-Restriktion
+ if(rSh.GetRedoIds() == 0 &&
+ !rSh.IsSelFrmMode() &&
+ rSh.GetRepeatIds() )
+ rSet.Put(SfxStringItem(nWhich, rSh.GetRepeatString()));
+ else
+ rSet.DisableItem(nWhich);
+ break;
+ }
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Slot-Id auswerten bzw. Dispatchen
+ --------------------------------------------------------------------*/
+
+void SwBaseShell::Execute(SfxRequest &rReq)
+{
+ const SfxPoolItem *pItem;
+ SwWrtShell &rSh = GetShell();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ BOOL bUp = FALSE;
+ BOOL bMore = FALSE;
+
+ USHORT nSlot = rReq.GetSlot();
+ switch(nSlot)
+ {
+ case FN_REPAGINATE:
+ rSh.CalcLayout();
+ break;
+ case FN_UPDATE_FIELDS:
+ {
+ SwDocStat aDocStat;
+ rSh.UpdateDocStat(aDocStat);
+ rSh.EndAllTblBoxEdit();
+ rSh.ViewShell::UpdateFlds(TRUE);
+
+ if( rSh.IsCrsrInTbl() )
+ {
+ if( !rSh.IsTblComplexForChart() )
+ SwTableFUNC( &rSh, FALSE).UpdateChart();
+ rSh.ClearTblBoxCntnt();
+ rSh.SaveTblBoxCntnt();
+ }
+ }
+ break;
+ case FN_UPDATE_CHARTS:
+ {
+ SwWait aWait( *rView.GetDocShell(), TRUE );
+ rSh.UpdateAllCharts();
+ }
+ break;
+
+ case FN_UPDATE_ALL:
+ {
+ rSh.EnterStdMode();
+ if( rSh.GetLinkManager().GetLinks().Count() )
+ {
+ rSh.StartAllAction();
+ rSh.GetLinkManager().UpdateAllLinks( FALSE, TRUE, TRUE );
+ rSh.EndAllAction();
+ }
+ SfxDispatcher &rDis = *GetView().GetViewFrame()->GetDispatcher();
+ rDis.Execute( FN_UPDATE_FIELDS );
+ rDis.Execute( FN_UPDATE_TOX );
+ rDis.Execute( FN_UPDATE_CHARTS );
+ rSh.CalcLayout();
+ }
+ break;
+
+ case FN_UPDATE_INPUTFIELDS:
+ rSh.UpdateInputFlds(NULL, FALSE);
+ break;
+ case FN_PREV_BOOKMARK:
+ rReq.SetReturnValue(SfxBoolItem( nSlot, rSh.GoPrevBookmark()));
+ break;
+ case FN_NEXT_BOOKMARK:
+ rReq.SetReturnValue(SfxBoolItem( nSlot, rSh.GoNextBookmark()));
+ break;
+
+ case FN_GOTO_NEXT_MARK:
+ case FN_GOTO_PREV_MARK:
+ {
+ SwFldMgr aFldMgr;
+ SwFieldType* pFldType = aFldMgr.GetFldType(RES_JUMPEDITFLD);
+
+ if (pFldType)
+ {
+ if (rSh.IsSelFrmMode())
+ {
+ rSh.UnSelectFrm();
+ rSh.LeaveSelFrmMode();
+ }
+
+ if (rSh.HasMark())
+ {
+ MV_KONTEXT(&rSh);
+ if (rSh.IsCrsrPtAtEnd())
+ rSh.SwapPam();
+ rSh.ClearMark();
+ rSh.EndSelect();
+ }
+ BOOL bRet = rSh.MoveFldType(pFldType, nSlot == FN_GOTO_NEXT_MARK);
+ if (bRet)
+ rSh.ClickToField(*rSh.GetCurFld());
+ rReq.SetReturnValue(SfxBoolItem( nSlot, bRet));
+ }
+ }
+ break;
+
+ case FN_START_DOC_DIRECT:
+ case FN_END_DOC_DIRECT:
+ {
+ if (rSh.IsSelFrmMode())
+ {
+ rSh.UnSelectFrm();
+ rSh.LeaveSelFrmMode();
+ }
+ rSh.EnterStdMode();
+ nSlot == FN_START_DOC_DIRECT ?
+ rSh.SwCrsrShell::SttDoc() :
+ rSh.SwCrsrShell::EndDoc();
+ }
+ break;
+ case FN_GOTO_PREV_OBJ:
+ case FN_GOTO_NEXT_OBJ:
+ {
+ BOOL bSuccess = rSh.GotoObj(
+ nSlot == FN_GOTO_NEXT_OBJ ? TRUE : FALSE);
+ rReq.SetReturnValue(SfxBoolItem(nSlot, bSuccess));
+ if (bSuccess && !rSh.IsSelFrmMode())
+ {
+ rSh.HideCrsr();
+ rSh.EnterSelFrmMode();
+ GetView().AttrChangedNotify( &rSh );
+ }
+ }
+ break;
+ case SID_GALLERY_FORMATS:
+ {
+ const int nSelType = rSh.GetSelectionType();
+ if ( !rSh.IsSelFrmMode() || nSelType & SwWrtShell::SEL_GRF )
+ {
+ if( SFX_ITEM_SET == pArgs->GetItemState( nSlot, TRUE, &pItem) &&
+ SGA_FORMAT_GRAPHIC & ((SfxUInt32Item*)pItem)->GetValue())
+ {
+
+ GalleryExplorer* pGal = SVX_GALLERY();
+
+ if ( pGal )
+ {
+ SwWait aWait( *rView.GetDocShell(), TRUE );
+
+ String aGrfName, aFltName;
+ const Graphic aGrf( pGal->GetGraphic() );
+
+ if( pGal->IsLinkage() )
+ {
+ // Verknuepft
+ aGrfName = pGal->GetURL().PathToFileName();
+ aGrfName = URIHelper::SmartRelToAbs(aGrfName);
+ aFltName = pGal->GetFilterName();
+ }
+
+ if ( nSelType & SwWrtShell::SEL_GRF )
+ rSh.ReRead( aGrfName, aFltName, &aGrf );
+ else
+ rSh.Insert( aGrfName, aFltName, aGrf );
+
+ GetView().GetEditWin().GrabFocus();
+ }
+ }
+ }
+ }
+ break;
+ case FN_PAGE_STYLE_SET_COLS:
+ {
+ if (pArgs)
+ {
+ // aktuellen PageDescriptor ermitteln und damit den Set fuellen
+ const USHORT nCurIdx = rSh.GetCurPageDesc();
+ SwPageDesc aPageDesc(rSh.GetPageDesc(nCurIdx));
+
+ SwFrmFmt &rFmt = aPageDesc.GetMaster();
+
+ SwFmtCol aFmtCol = rFmt.GetCol();
+
+ USHORT nCount;
+ if(SFX_ITEM_SET == pArgs->GetItemState(nSlot))
+ nCount = ((SfxUInt16Item &)pArgs->Get(nSlot)).GetValue();
+ else
+ nCount = ((SfxUInt16Item &)pArgs->Get(SID_ATTR_COLUMNS)).GetValue();
+ USHORT nGutterWidth = DEF_GUTTER_WIDTH;
+
+ aFmtCol.Init(nCount ? nCount : 1, nGutterWidth, USHRT_MAX);
+ aFmtCol.SetWishWidth(USHRT_MAX);
+ aFmtCol.SetGutterWidth(nGutterWidth, USHRT_MAX);
+
+ rFmt.SetAttr(aFmtCol);
+
+ rSh.ChgPageDesc(nCurIdx, aPageDesc);
+ }
+ else
+ GetView().GetViewFrame()->GetDispatcher()->Execute(FN_FORMAT_PAGE_COLUMN_DLG, FALSE);
+ }
+ break;
+ case FN_CONVERT_TEXT_TABLE:
+ {
+ char cDelim = 0;
+ USHORT nInsTblFlags = ALL_TBL_INS_ATTR;
+ SwTableAutoFmt* pTAFmt = 0;
+ SwConvertTableDlg *pDlg = new SwConvertTableDlg( GetView() );
+ if( RET_OK == pDlg->Execute() )
+ {
+ pDlg->GetValues( cDelim, nInsTblFlags, pTAFmt );
+
+ }
+ delete pDlg;
+
+ if( cDelim )
+ {
+ //Shellwechsel!
+ SwView& rSaveView = rView;
+ BOOL bInserted = FALSE;
+ if( rSh.GetTableFmt() )
+ rSh.TableToText( cDelim );
+ else
+ bInserted = rSh.TextToTable( cDelim, HORI_FULL,
+ nInsTblFlags, pTAFmt );
+ rSh.EnterStdMode();
+
+ if( bInserted )
+ rSaveView.AutoCaption( TABLE_CAP );
+ }
+ delete pTAFmt;
+ }
+ break;
+ case SID_STYLE_WATERCAN:
+ case SID_STYLE_UPDATE_BY_EXAMPLE:
+ case SID_STYLE_NEW_BY_EXAMPLE:
+ case SID_STYLE_APPLY:
+ {
+ ShellModes eMode = GetView().GetShellMode();
+ if ( SEL_DRAW != eMode &&
+ SEL_DRAW_CTRL != eMode &&
+ SEL_DRAW_FORM != eMode &&
+ SEL_DRAWTEXT != eMode &&
+ SEL_BEZIER != eMode )
+ {
+ // wird von der DocShell aufgezeichnet
+ GetView().GetDocShell()->ExecStyleSheet(rReq);
+ }
+ }
+ break;
+ case FN_ESCAPE:
+ GetView().ExecuteSlot(rReq);
+ break;
+ case SID_IMAP:
+ {
+ USHORT nId = SvxIMapDlgChildWindow::GetChildWindowId();
+
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ pVFrame->ToggleChildWindow( nId );
+ pVFrame->GetBindings().Invalidate( SID_IMAP );
+
+ if ( pVFrame->HasChildWindow( nId ) && rSh.IsFrmSelected() )
+ lcl_UpdateIMapDlg(rSh);
+ }
+ break;
+ case SID_IMAP_EXEC:
+ {
+ SvxIMapDlg* pDlg = SWIMAPDLG(GetView());
+
+ // Kontrolle, ob Zuweisung ueberhaupt sinnvoll/erlaubt
+ if ( rSh.IsFrmSelected() &&
+ pDlg->GetEditingObject() == rSh.GetIMapInventor() )
+ {
+ SfxItemSet aSet( rSh.GetAttrPool(), RES_URL, RES_URL );
+ rSh.GetFlyFrmAttr( aSet );
+ SwFmtURL aURL( (SwFmtURL&)aSet.Get( RES_URL ) );
+ aURL.SetMap( &pDlg->GetImageMap() );
+ aSet.Put( aURL );
+ rSh.SetFlyFrmAttr( aSet );
+ }
+ }
+ break;
+ case SID_CONTOUR_DLG:
+ {
+ USHORT nId = SvxContourDlgChildWindow::GetChildWindowId();
+
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ pVFrame->ToggleChildWindow( nId );
+ pVFrame->GetBindings().Invalidate( SID_CONTOUR_DLG );
+
+ int nSel = rSh.GetSelectionType();
+ if ( pVFrame->HasChildWindow( nId ) &&
+ (nSel & (SwWrtShell::SEL_GRF|SwWrtShell::SEL_OLE)) )
+ {
+ lcl_UpdateContourDlg( rSh, nSel );
+ }
+ }
+ break;
+ case SID_CONTOUR_EXEC:
+ {
+ SvxContourDlg *pDlg = SWCONTOURDLG(GetView());
+
+ // Kontrolle, ob Zuweisung ueberhaupt sinnvoll/erlaubt
+ int nSel = rSh.GetSelectionType();
+ if ( nSel & (SwWrtShell::SEL_GRF|SwWrtShell::SEL_OLE) )
+ {
+ if ( pDlg->GetEditingObject() == rSh.GetIMapInventor() )
+ {
+ rSh.StartAction();
+ SfxItemSet aSet( rSh.GetAttrPool(), RES_SURROUND, RES_SURROUND);
+ rSh.GetFlyFrmAttr( aSet );
+ SwFmtSurround aSur( (SwFmtSurround&)aSet.Get( RES_SURROUND ) );
+ if ( !aSur.IsContour() )
+ {
+ aSur.SetContour( TRUE );
+ if ( aSur.GetSurround() == SURROUND_NONE )
+ aSur.SetSurround( SURROUND_PARALLEL );
+ aSet.Put( aSur );
+ rSh.SetFlyFrmAttr( aSet );
+ }
+ const PolyPolygon aPoly( pDlg->GetPolyPolygon() );
+ rSh.SetGraphicPolygon( &aPoly );
+ if ( pDlg->IsGraphicChanged() )
+ rSh.ReRead( aEmptyStr, aEmptyStr, &pDlg->GetGraphic());
+ rSh.EndAction();
+ }
+ }
+ }
+ break;
+ case FN_FRAME_TO_ANCHOR:
+ {
+ rSh.GotoFlyAnchor();
+ rSh.EnterStdMode();
+ rSh.CallChgLnk();
+ }
+ break;
+ case FN_TOOL_ANKER:
+ break;
+ case FN_TOOL_ANKER_PAGE:
+ case FN_TOOL_ANKER_PARAGRAPH:
+ case FN_TOOL_ANKER_CHAR:
+ case FN_TOOL_ANKER_AT_CHAR:
+ case FN_TOOL_ANKER_FRAME:
+ {
+ RndStdIds eSet = nSlot == FN_TOOL_ANKER_PAGE
+ ? FLY_PAGE
+ : nSlot == FN_TOOL_ANKER_PARAGRAPH
+ ? FLY_AT_CNTNT
+ : nSlot == FN_TOOL_ANKER_FRAME
+ ? FLY_AT_FLY
+ : nSlot == FN_TOOL_ANKER_CHAR
+ ? FLY_IN_CNTNT
+ : FLY_AUTO_CNTNT;
+ rSh.StartUndo();
+ if( rSh.IsObjSelected() )
+ rSh.ChgAnchor( eSet );
+ else if( rSh.IsFrmSelected() )
+ {
+ // Der Set beinhaltet auch VERT/HORI_ORIENT, da in FEShell::
+ // SetFlyFrmAttr/SetFlyFrmAnchor ggf. als Folge des Umankerns
+ // die Ausrichtungen veraendert werden sollen.
+ SfxItemSet aSet( GetPool(), RES_VERT_ORIENT, RES_ANCHOR );
+ SwFmtAnchor aAnc( eSet, rSh.GetPhyPageNum() );
+ aSet.Put( aAnc );
+ rSh.SetFlyFrmAttr(aSet);
+ }
+
+ USHORT nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
+ if( nHtmlMode )
+ {
+ SfxItemSet aSet(GetPool(), RES_SURROUND, RES_HORI_ORIENT);
+ rSh.GetFlyFrmAttr(aSet);
+
+ const SwFmtSurround& rSurround = (const SwFmtSurround&)aSet.Get(RES_SURROUND);
+ const SwFmtVertOrient& rVert = (const SwFmtVertOrient&)aSet.Get(RES_VERT_ORIENT);
+ const SwFmtHoriOrient& rHori = (const SwFmtHoriOrient&)aSet.Get(RES_HORI_ORIENT);
+ SwVertOrient eVOrient = rVert.GetVertOrient();
+ SwHoriOrient eHOrient = rHori.GetHoriOrient();
+ SwSurround eSurround = rSurround.GetSurround();
+
+ switch( eSet )
+ {
+ case FLY_AT_FLY:
+ case FLY_PAGE:
+
+ //Durchlauf, links oder von links, oben, von oben
+ if(eSurround != SURROUND_THROUGHT)
+ aSet.Put(SwFmtSurround(SURROUND_THROUGHT));
+
+ if( eVOrient != VERT_TOP && eVOrient != VERT_NONE)
+ aSet.Put(SwFmtVertOrient(0, VERT_TOP));
+
+ if(eHOrient != HORI_NONE || eHOrient != HORI_LEFT)
+ aSet.Put(SwFmtHoriOrient(0, HORI_LEFT));
+ break;
+
+ case FLY_AT_CNTNT:
+ //links, von links, rechts, oben, kein Uml, li+re Umlauf,
+ if(eSurround != SURROUND_LEFT || eSurround != SURROUND_RIGHT)
+ aSet.Put(SwFmtSurround(SURROUND_LEFT));
+
+ if( eVOrient != VERT_TOP)
+ aSet.Put(SwFmtVertOrient(0, VERT_TOP));
+
+ if(eHOrient != HORI_NONE || eHOrient != HORI_LEFT || eHOrient != HORI_RIGHT)
+ aSet.Put(SwFmtHoriOrient(0, HORI_LEFT));
+ break;
+
+ case FLY_AUTO_CNTNT:
+ //links, von links, rechts, oben, Durchlauf
+ if(eSurround != SURROUND_THROUGHT)
+ aSet.Put(SwFmtSurround(SURROUND_THROUGHT));
+
+ if( eVOrient != VERT_TOP)
+ aSet.Put(SwFmtVertOrient(0, VERT_TOP));
+
+ if(eHOrient != HORI_NONE || eHOrient != HORI_LEFT || eHOrient != HORI_RIGHT)
+ aSet.Put(SwFmtHoriOrient(0, HORI_LEFT));
+ break;
+ }
+
+ if( aSet.Count() )
+ rSh.SetFlyFrmAttr( aSet );
+ }
+ rSh.EndUndo();
+
+ GetView().GetViewFrame()->GetBindings().Invalidate( FN_TOOL_ANKER );
+ }
+ break;
+
+ case FN_FRAME_NOWRAP:
+ case FN_FRAME_WRAP:
+ case FN_FRAME_WRAP_IDEAL:
+ case FN_FRAME_WRAPTHRU:
+ case FN_FRAME_WRAPTHRU_TRANSP:
+ case FN_FRAME_WRAP_CONTOUR:
+ case FN_WRAP_ANCHOR_ONLY:
+ case FN_FRAME_WRAP_LEFT:
+ case FN_FRAME_WRAP_RIGHT:
+ SetWrapMode( nSlot );
+ break;
+
+ case FN_UPDATE_ALL_LINKS:
+ {
+ if( rSh.GetLinkManager().GetLinks().Count() )
+ {
+ BOOL bUpdateGrf = FALSE, bCallErrHdl = FALSE;
+ rSh.EnterStdMode();
+ rSh.StartAllAction();
+ rSh.GetLinkManager().UpdateAllLinks( FALSE, bCallErrHdl, bUpdateGrf );
+ rSh.EndAllAction();
+ }
+ }
+ break;
+
+ default:
+ bMore = TRUE;
+ }
+ if(bMore && pArgs)
+ {
+ pItem = 0;
+ pArgs->GetItemState(GetPool().GetWhich(nSlot), FALSE, &pItem);
+ if(pItem)
+ switch(nSlot)
+ {
+ case SID_ATTR_BORDER_SHADOW:
+ case RES_SHADOW:
+ {
+ rSh.StartAllAction();
+ SfxItemSet aSet( rSh.GetAttrPool(),
+ RES_SHADOW, RES_SHADOW );
+
+ aSet.Put(*pItem);
+ // Tabellenzelle(n) selektiert?
+ if ( rSh.IsTableMode() )
+ {
+ SwFrmFmt *pFmt = rSh.GetTableFmt();
+ pFmt->SetAttr( *pItem );
+ }
+ else if ( rSh.IsFrmSelected() )
+ {
+ // Umrandungsattribute ueber Frame-Manager setzen
+ SwFlyFrmAttrMgr aMgr( FALSE, &rSh, FRMMGR_TYPE_NONE );
+ aMgr.SetAttrSet( *pArgs );
+ aMgr.UpdateFlyFrm();
+ }
+ else
+ {
+ rSh.SetAttr( *pArgs );
+ }
+ rSh.EndAllAction();
+ }
+ break;
+ case FN_PAGE_STYLE_SET_LR_MARGIN:
+ case FN_PAGE_STYLE_SET_UL_MARGIN:
+ case FN_PAGE_STYLE_SET_NUMBER_FORMAT:
+ case FN_PAGE_STYLE_SET_PAPER_SIZE:
+ case FN_PAGE_STYLE_SET_PAPER_BIN:
+ {
+ DBG_ERROR("not implemented")
+ }
+ break;
+
+ case SID_ATTR_BORDER_OUTER:
+ {
+ // Tabellenzelle(n) selektiert?
+ if ( rSh.IsTableMode() )
+ {
+ // Umrandungattribute Get/SetTabBorders() setzen
+ rSh.SetTabBorders(*pArgs);
+ }
+ else if ( rSh.IsFrmSelected() )
+ {
+ // Umrandungsattribute ueber Frame-Manager setzen
+ SwFlyFrmAttrMgr aMgr( FALSE, &rSh, FRMMGR_TYPE_NONE );
+ aMgr.SetAttrSet(*pArgs);
+ aMgr.UpdateFlyFrm();
+ }
+ else
+ {
+ // Umrandungsattribute ganz normal ueber Shell setzen
+ rSh.SetAttr( *pItem );
+ }
+ }
+ break;
+ default:
+ DBG_ERROR("falscher Dispatcher");
+ }
+
+ }
+
+ if(bUp)
+ {
+ SfxBindings &rBnd = GetView().GetViewFrame()->GetBindings();
+ rBnd.Invalidate(rReq.GetSlot());
+ rBnd.Update(rReq.GetSlot());
+ }
+}
+
+/* -----------------14.04.99 15:10-------------------
+ * Hier wird der State fuer SID_IMAP / SID_CONTOUR behandelt,
+ * wenn die Grafik ausgeswappt ist
+ * --------------------------------------------------*/
+IMPL_LINK(SwBaseShell, GraphicArrivedHdl, SwCrsrShell* , pCrShell )
+{
+ SwWrtShell &rSh = GetShell();
+ if( CNT_GRF == rSh.SwEditShell::GetCntType() &&
+ GRAPHIC_NONE != rSh.GetGraphicType() )
+ {
+ BOOL bProtect = 0 != rSh.IsSelObjProtected( (FlyProtectType)
+ (FLYPROTECT_CONTENT|FLYPROTECT_PARENT) );
+
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ if( bUpdateSID_IMap || bUpdateSID_IMapExec )
+ {
+ USHORT nId = SvxIMapDlgChildWindow::GetChildWindowId();
+ SvxIMapDlg *pDlg = pVFrame->HasChildWindow( nId ) ?
+ (SvxIMapDlg*) ( pVFrame->GetChildWindow( nId )->GetWindow()) : 0;
+
+ if( pDlg && ( bUpdateSID_IMapExec || (bUpdateSID_IMap && !bProtect)) &&
+ pDlg->GetEditingObject() != rSh.GetIMapInventor() )
+ lcl_UpdateIMapDlg(rSh);
+
+ if( !bProtect && bUpdateSID_IMap )
+ {
+ SfxBoolItem aBool(SID_IMAP, 0 != pDlg);
+ if( pGetStateSet )
+ pGetStateSet->Put( aBool );
+ else
+ pVFrame->GetBindings().SetState( aBool );
+ }
+ }
+
+ if( !bProtect && ( bUpdateSID_IContour || bUpdateSID_IContourDlg ))
+ {
+ if( bUpdateSID_IContourDlg )
+ {
+ USHORT nId = SvxContourDlgChildWindow::GetChildWindowId();
+ SvxIMapDlg *pDlg = pVFrame->HasChildWindow( nId ) ?
+ (SvxIMapDlg*) ( pVFrame->GetChildWindow( nId )->GetWindow()) : 0;
+ if( pDlg && pDlg->GetEditingObject() != rSh.GetIMapInventor() )
+ lcl_UpdateContourDlg( rSh, SwWrtShell::SEL_GRF );
+
+ SfxBoolItem aBool(SID_CONTOUR_DLG, 0 != pDlg);
+ if( pGetStateSet )
+ pGetStateSet->Put( aBool );
+ else
+ pVFrame->GetBindings().SetState( aBool );
+ }
+ if( bUpdateSID_IContour )
+ {
+ SfxItemSet aSet(GetPool(), RES_SURROUND, RES_SURROUND);
+ rSh.GetFlyFrmAttr(aSet);
+ const SwFmtSurround& rWrap = (const SwFmtSurround&)aSet.Get(RES_SURROUND);
+
+ SfxBoolItem aBool( FN_FRAME_WRAP_CONTOUR, rWrap.IsContour() );
+ if( pGetStateSet )
+ pGetStateSet->Put( aBool );
+ else
+ pVFrame->GetBindings().SetState( aBool );
+ }
+ }
+
+ bUpdateSID_IMap = FALSE;
+ bUpdateSID_IMapExec = FALSE;
+ bUpdateSID_IContour = FALSE;
+ bUpdateSID_IContourDlg = FALSE;
+ }
+ return 0;
+}
+
+void SwBaseShell::GetState( SfxItemSet &rSet )
+{
+ SwWrtShell &rSh = GetShell();
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ pGetStateSet = &rSet;
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case SID_GALLERY_FORMATS:
+ if ( rSh.IsObjSelected() ||
+ (rSh.IsSelFrmMode() &&
+ !(rSh.GetSelectionType() & SwWrtShell::SEL_GRF)) )
+ rSet.DisableItem( nWhich );
+ break;
+ case SID_GALLERY_ENABLE_ADDCOPY:
+ rSet.Put( SfxBoolItem( SID_GALLERY_ENABLE_ADDCOPY,
+ 0 == (HTMLMODE_ON & ::GetHtmlMode(GetView().GetDocShell()))));
+ break;
+ case FN_EDIT_REGION:
+ if( !rSh.IsAnySectionInDoc() )
+ rSet.DisableItem(nWhich);
+ break;
+
+ case FN_INSERT_REGION:
+ case FN_INSERT_COLUMN_SECTION:
+ if( rSh.IsSelFrmMode() ||
+ !rSh.IsInsRegionAvailable() )
+ rSet.DisableItem( nWhich );
+ break;
+ case FN_CONVERT_TEXT_TABLE:
+ {
+ USHORT eFrmType = rSh.GetFrmType(0,TRUE);
+ if( (eFrmType & FRMTYPE_FOOTNOTE) ||
+ (!rSh.GetTableFmt() && !rSh.IsTextToTableAvailable() ) )
+ rSet.DisableItem( nWhich );
+ }
+ break;
+ case RES_SHADOW:
+ {
+ SfxItemSet aSet( rSh.GetAttrPool(),
+ RES_SHADOW, RES_SHADOW );
+
+ // Tabellenzelle(n) selektiert?
+ if ( rSh.IsTableMode() )
+ {
+ SwFrmFmt *pFmt = rSh.GetTableFmt();
+ aSet.Put(pFmt->GetAttr( nWhich, TRUE ));
+ }
+ else if( rSh.IsFrmSelected() )
+ {
+ SwFlyFrmAttrMgr aMgr( FALSE, &rSh, FRMMGR_TYPE_NONE );
+ aSet.Put( aMgr.GetAttrSet() );
+ }
+ else
+ rSh.GetAttr( aSet );
+#ifdef DEBUG
+
+ const SvxShadowItem& rShItem = (const SvxShadowItem&)aSet.Get(nWhich);
+ rSet.Put(rShItem);
+#else
+ rSet.Put((const SvxShadowItem&)aSet.Get(nWhich));
+#endif
+ }
+ break;
+ case SID_IMAP:
+ {
+ USHORT nId = SvxIMapDlgChildWindow::GetChildWindowId();
+ BOOL bHas = pVFrame->HasChildWindow( nId );
+ BOOL bFrmSel = rSh.IsFrmSelected();
+ BOOL bProtect = 0 != rSh.IsSelObjProtected( (FlyProtectType)
+ (FLYPROTECT_CONTENT|FLYPROTECT_PARENT) );
+
+ BOOL bIsGraphicSelection = rSh.GetSelectionType() == SwWrtShell::SEL_GRF;
+
+ //wenn die Grafik ausgeswappt ist, dann muss der
+ //Status asynchron ermittelt werden
+ //bis dahin wird der Slot disabled
+ if(bIsGraphicSelection && rSh.IsGrfSwapOut(TRUE))
+ {
+ rSet.DisableItem(nWhich);
+ if( !bUpdateSID_IMap )
+ {
+ bUpdateSID_IMap = TRUE;
+ rSh.GetGraphic(FALSE); // start the loading
+ }
+ }
+ else
+ {
+
+ if( bProtect || ( !bHas && ( !bFrmSel ||
+ (bIsGraphicSelection &&
+ rSh.GetIMapGraphic().GetType() == GRAPHIC_NONE )) ))
+ rSet.DisableItem( nWhich );
+ else
+ {
+ SfxBoolItem aBool(nWhich, bHas);
+ if ( bHas && bFrmSel )
+ lcl_UpdateIMapDlg(rSh);
+ rSet.Put(aBool);
+ }
+ }
+ }
+ break;
+ case SID_IMAP_EXEC:
+ {
+ BOOL bDisable = FALSE;
+ if( !rSh.IsFrmSelected())
+ bDisable = TRUE;
+ USHORT nId = SvxIMapDlgChildWindow::GetChildWindowId();
+ if(!bDisable && pVFrame->HasChildWindow( nId ))
+ {
+ if(rSh.GetSelectionType() == SwWrtShell::SEL_GRF
+ && rSh.IsGrfSwapOut(TRUE))
+ {
+ if( !bUpdateSID_IMapExec )
+ {
+ bUpdateSID_IMapExec = TRUE;
+ rSh.GetGraphic(FALSE); // start the loading
+ }
+ }
+ else
+ {
+ SvxIMapDlg *pDlg = SWIMAPDLG(GetView());
+ if( pDlg->GetEditingObject() != rSh.GetIMapInventor() )
+ lcl_UpdateIMapDlg(rSh);
+ }
+ }
+ rSet.Put(SfxBoolItem(nWhich, bDisable));
+ }
+ break;
+ case FN_BACKSPACE:
+ case SID_DELETE:
+ if (rSh.IsSelObjProtected( (FlyProtectType)(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) ) != 0)
+ rSet.DisableItem( nWhich );
+ break;
+ case SID_CONTOUR_DLG:
+ {
+ BOOL bParentCntProt = 0 != rSh.IsSelObjProtected(
+ (FlyProtectType)(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) );
+
+ if( bParentCntProt || 0 != (HTMLMODE_ON & ::GetHtmlMode(
+ GetView().GetDocShell() )) )
+ rSet.DisableItem( nWhich );
+ else
+ {
+ USHORT nId = SvxContourDlgChildWindow::GetChildWindowId();
+ BOOL bHas = GetView().GetViewFrame()->HasChildWindow( nId );
+ int nSel = rSh.GetSelectionType();
+ BOOL bOk = 0 != (nSel & (SwWrtShell::SEL_GRF|SwWrtShell::SEL_OLE));
+
+ BOOL bDisable;
+ if( !bHas && !bOk )
+ bDisable = TRUE;
+ // wenn die Grafik ausgeswappt ist, dann muss der Status
+ // asynchron ermittelt werden bis dahin wird der Slot
+ // disabled
+ else if( (nSel & SwWrtShell::SEL_GRF) &&
+ rSh.IsGrfSwapOut(TRUE))
+ {
+ bDisable = TRUE;
+ if( !bUpdateSID_IContourDlg )
+ {
+ bUpdateSID_IContourDlg = TRUE;
+ rSh.GetGraphic(FALSE); // start the loading
+ }
+ }
+ else if( bHas && bOk )
+ bDisable = !lcl_UpdateContourDlg( rSh, nSel );
+ else if( bOk )
+ bDisable = GRAPHIC_NONE == rSh.GetIMapGraphic().GetType();
+
+ if( bDisable )
+ rSet.DisableItem( nWhich );
+ else
+ rSet.Put( SfxBoolItem(nWhich, bHas) );
+ }
+ }
+ break;
+ case SID_CONTOUR_EXEC:
+ {
+ BOOL bDisable = FALSE;
+ int nSel = rSh.GetSelectionType();
+ if( !(nSel & (SwWrtShell::SEL_GRF|SwWrtShell::SEL_OLE)) )
+ bDisable = TRUE;
+ USHORT nId = SvxContourDlgChildWindow::GetChildWindowId();
+ if( !bDisable && GetView().GetViewFrame()->HasChildWindow( nId ))
+ {
+ SvxContourDlg *pDlg = SWCONTOURDLG(GetView());
+ if( pDlg->GetEditingObject() != rSh.GetIMapInventor() )
+ bDisable = TRUE;
+ }
+ rSet.Put(SfxBoolItem(nWhich, bDisable));
+ }
+ break;
+
+ case SID_SBA_BRW_UPDATE:
+ case SID_SBA_BRW_INSERT:
+ case SID_SBA_BRW_MERGE:
+ {
+ //Damit der Datenbankbrowser die Buttons fuer alle Shells
+ //anzeigt. Aber nur disabled, enabled wird nur in der Textsh.
+ const int nSelType = rSh.GetSelectionType();
+ rSet.Put(SfxBoolItem(nWhich,
+ nSelType & SwWrtShell::SEL_TXT ? TRUE : FALSE ));
+ }
+ break;
+
+ case FN_TOOL_ANKER:
+ case FN_TOOL_ANKER_PAGE:
+ case FN_TOOL_ANKER_PARAGRAPH:
+ case FN_TOOL_ANKER_CHAR:
+ case FN_TOOL_ANKER_AT_CHAR:
+ case FN_TOOL_ANKER_FRAME:
+ {
+ BOOL bObj = 0 != rSh.IsObjSelected();
+ BOOL bParentCntProt = rSh.IsSelObjProtected( (FlyProtectType)(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) ) != 0;
+
+ if( !bParentCntProt && (bObj || rSh.IsFrmSelected()))
+ {
+ SfxItemSet aSet(GetPool(), RES_ANCHOR, RES_ANCHOR);
+ if(bObj)
+ rSh.GetObjAttr(aSet);
+ else
+ rSh.GetFlyFrmAttr(aSet);
+ RndStdIds eSet = ((SwFmtAnchor&)aSet.Get(RES_ANCHOR)).GetAnchorId();
+ BOOL bSet;
+ bSet = (nWhich == FN_TOOL_ANKER_PAGE && eSet == FLY_PAGE) ||
+ (nWhich == FN_TOOL_ANKER_PARAGRAPH && eSet == FLY_AT_CNTNT) ||
+ (nWhich == FN_TOOL_ANKER_FRAME && eSet == FLY_AT_FLY) ||
+ (nWhich == FN_TOOL_ANKER_AT_CHAR && eSet == FLY_AUTO_CNTNT) ||
+ (nWhich == FN_TOOL_ANKER_CHAR && eSet == FLY_IN_CNTNT);
+ if(nWhich != FN_TOOL_ANKER)
+ {
+ USHORT nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
+ if( ( nWhich == FN_TOOL_ANKER_PAGE &&
+ ((HTMLMODE_ON & nHtmlMode) && (0 == (nHtmlMode & HTMLMODE_SOME_ABS_POS)))) ||
+ ( nWhich == FN_TOOL_ANKER_FRAME && !rSh.IsFlyInFly() ) ||
+ ( nWhich == FN_TOOL_ANKER_AT_CHAR && !rSh.IsFrmSelected())||
+ ( nWhich == FN_TOOL_ANKER_PAGE && rSh.IsInHeaderFooter() ))
+ rSet.DisableItem(nWhich);
+ else
+ rSet.Put(SfxBoolItem(nWhich, bSet));
+ }
+ else
+ {
+ USHORT nSlotId = 0;
+
+ switch (eSet)
+ {
+ case FLY_PAGE:
+ nSlotId = FN_TOOL_ANKER_PAGE;
+ break;
+ case FLY_AT_CNTNT:
+ nSlotId = FN_TOOL_ANKER_PARAGRAPH;
+ break;
+ case FLY_IN_CNTNT:
+ nSlotId = FN_TOOL_ANKER_CHAR;
+ break;
+ case FLY_AUTO_CNTNT:
+ nSlotId = FN_TOOL_ANKER_AT_CHAR;
+ break;
+ case FLY_AT_FLY:
+ nSlotId = FN_TOOL_ANKER_FRAME;
+ break;
+ }
+ rSet.Put(SfxUInt16Item(nWhich, nSlotId));
+ }
+ }
+ else
+ rSet.DisableItem( nWhich );
+ }
+ break;
+ case FN_FRAME_NOWRAP:
+ case FN_FRAME_WRAP:
+ case FN_FRAME_WRAP_IDEAL:
+ case FN_FRAME_WRAPTHRU:
+ case FN_FRAME_WRAPTHRU_TRANSP:
+ case FN_FRAME_WRAP_CONTOUR:
+ case FN_WRAP_ANCHOR_ONLY:
+ case FN_FRAME_WRAP_LEFT:
+ case FN_FRAME_WRAP_RIGHT:
+ {
+ BOOL bObj = 0 != rSh.IsObjSelected();
+ BOOL bParentCntProt = rSh.IsSelObjProtected( (FlyProtectType)(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) ) != 0;
+
+ if( !bParentCntProt && (bObj || rSh.IsFrmSelected()))
+ {
+ SfxItemSet aSet(GetPool(), RES_OPAQUE, RES_ANCHOR);
+ int nAnchorType;
+ if(bObj)
+ {
+ rSh.GetObjAttr(aSet);
+ nAnchorType = rSh.GetAnchorId();
+ }
+ else
+ {
+ rSh.GetFlyFrmAttr(aSet);
+ nAnchorType = ((SwFmtAnchor&)aSet.Get(RES_ANCHOR)).GetAnchorId();
+ }
+ const SwFmtSurround& rWrap = (const SwFmtSurround&)aSet.Get(RES_SURROUND);
+
+ const SvxOpaqueItem& rOpaque = (const SvxOpaqueItem&)aSet.Get(RES_OPAQUE);
+ BOOL bOpaque = rOpaque.GetValue();
+ SwSurround nSurround = rWrap.GetSurround();
+ BOOL bSet;
+
+ BOOL bDisable = nAnchorType == - 1 || nAnchorType == FLY_IN_CNTNT;
+ BOOL bHtmlMode = 0 != ::GetHtmlMode(GetView().GetDocShell());
+
+ switch( nWhich )
+ {
+ case FN_FRAME_NOWRAP:
+ bDisable |= (bHtmlMode ||
+ ( nAnchorType != FLY_AT_CNTNT &&
+ nAnchorType != FLY_AUTO_CNTNT && nAnchorType != FLY_PAGE));
+ bSet = nSurround == SURROUND_NONE;
+ break;
+ case FN_FRAME_WRAP:
+ bDisable |= bHtmlMode;
+ bSet = nSurround == SURROUND_PARALLEL;
+ break;
+ case FN_FRAME_WRAP_IDEAL:
+ bDisable |= bHtmlMode;
+ bSet = nSurround == SURROUND_IDEAL;
+ break;
+ case FN_FRAME_WRAPTHRU:
+ bDisable |= (bHtmlMode ||
+ (nAnchorType != FLY_AT_CNTNT&& nAnchorType != FLY_AUTO_CNTNT && nAnchorType != FLY_PAGE));
+ if(bObj)
+ bSet = nSurround == SURROUND_THROUGHT && rSh.GetLayerId();
+ else
+ bSet = nSurround == SURROUND_THROUGHT && bOpaque;
+ break;
+ case FN_FRAME_WRAPTHRU_TRANSP:
+ bDisable |= bHtmlMode;
+ if(bObj)
+ bSet = nSurround == SURROUND_THROUGHT && !rSh.GetLayerId();
+ else
+ bSet = nSurround == SURROUND_THROUGHT && !bOpaque;
+ break;
+ case FN_FRAME_WRAP_CONTOUR:
+ bDisable |= bHtmlMode;
+ bSet = rWrap.IsContour();
+ if( !bDisable )
+ {
+ int nSel = rSh.GetSelectionType();
+ if( (nSel & SwWrtShell::SEL_GRF) &&
+ rSh.IsGrfSwapOut(TRUE))
+ {
+ bDisable = TRUE;
+ if( !bUpdateSID_IContour )
+ {
+ bUpdateSID_IContour = TRUE;
+ rSh.GetGraphic(FALSE); // start the loading
+ }
+ }
+ else if( rSh.IsFrmSelected() )
+ bDisable = GRAPHIC_NONE ==
+ rSh.GetIMapGraphic().GetType();
+ }
+ bSet = bDisable ? FALSE : rWrap.IsContour();
+
+ break;
+ case FN_WRAP_ANCHOR_ONLY:
+ bDisable |= (bHtmlMode ||
+ (nAnchorType != FLY_AT_CNTNT));
+ bSet = rWrap.IsAnchorOnly();
+ break;
+ case FN_FRAME_WRAP_LEFT:
+ bSet = nSurround == SURROUND_LEFT;
+ break;
+ case FN_FRAME_WRAP_RIGHT:
+ bSet = nSurround == SURROUND_RIGHT;
+ break;
+ }
+
+ if(bDisable)
+ rSet.DisableItem(nWhich);
+ else
+ rSet.Put(SfxBoolItem(nWhich, bSet));
+ }
+ else
+ rSet.DisableItem(nWhich);
+ }
+ break;
+ case FN_UPDATE_CHARTS:
+ if( !rSh.HasCharts() )
+ rSet.DisableItem( nWhich );
+ break;
+ case FN_UPDATE_ALL_LINKS:
+ if ( !rSh.GetLinkManager().GetLinks().Count() )
+ rSet.DisableItem(nWhich);
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+ pGetStateSet = 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Slots mit dieser Statusmethode disablen
+ --------------------------------------------------------------------*/
+
+
+void SwBaseShell::StateDisableItems( SfxItemSet &rSet )
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+
+ while (nWhich)
+ {
+ rSet.DisableItem( nWhich );
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Slots mit dieser Statusmethode disablen
+ --------------------------------------------------------------------*/
+
+
+void SwBaseShell::StateStyle( SfxItemSet &rSet )
+{
+ BOOL bParentCntProt = GetShell().IsSelObjProtected( (FlyProtectType)(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) ) != 0;
+ ShellModes eMode = GetView().GetShellMode();
+
+ if ( bParentCntProt ||
+ SEL_DRAW == eMode ||
+ SEL_DRAW_CTRL == eMode ||
+ SEL_DRAW_FORM == eMode ||
+ SEL_DRAWTEXT == eMode ||
+ SEL_BEZIER == eMode )
+ {
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ rSet.DisableItem( nWhich );
+ nWhich = aIter.NextWhich();
+ }
+ }
+ else
+ GetView().GetDocShell()->StateStyleSheet(rSet, &GetShell());
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwBaseShell::SetWrapMode( USHORT nSlot )
+{
+ SwWrtShell &rSh = GetShell();
+ BOOL bObj = 0 != rSh.IsObjSelected();
+ if( bObj || rSh.IsFrmSelected())
+ {
+ SfxItemSet aSet(GetPool(), RES_OPAQUE, RES_SURROUND);
+ if(bObj)
+ rSh.GetObjAttr(aSet);
+ else
+ rSh.GetFlyFrmAttr(aSet);
+ SwFmtSurround aWrap( (SwFmtSurround&)aSet.Get(RES_SURROUND) );
+ SwSurround nOldSurround(aWrap.GetSurround());
+ SwSurround nSurround = SURROUND_PARALLEL;
+
+ switch (nSlot)
+ {
+ case FN_FRAME_NOWRAP:
+ nSurround = SURROUND_NONE;
+ if (aWrap.IsContour())
+ aWrap.SetContour(FALSE);
+ break;
+ case FN_FRAME_WRAP_IDEAL:
+ nSurround = SURROUND_IDEAL;
+ break;
+ case FN_WRAP_ANCHOR_ONLY:
+ aWrap.SetAnchorOnly(!aWrap.IsAnchorOnly());
+ break;
+ case FN_FRAME_WRAP_CONTOUR:
+ aWrap.SetContour(!aWrap.IsContour());
+ if (nSurround == SURROUND_THROUGHT)
+ nSurround = SURROUND_PARALLEL;
+ break;
+ case FN_FRAME_WRAPTHRU_TRANSP:
+ if (aWrap.IsContour())
+ aWrap.SetContour(FALSE);
+ // kein break!!!
+ case FN_FRAME_WRAPTHRU:
+ nSurround = SURROUND_THROUGHT;
+ break;
+
+ case FN_FRAME_WRAP_LEFT:
+ nSurround = SURROUND_LEFT;
+ break;
+
+ case FN_FRAME_WRAP_RIGHT:
+ nSurround = SURROUND_RIGHT;
+ break;
+
+ default:
+ break;
+ }
+ aWrap.SetSurround(nSurround);
+
+ if (nSlot != FN_FRAME_WRAP_CONTOUR)
+ {
+ // Konturumfluss bei Draw-Objekten defaulten
+ if (bObj && nOldSurround != nSurround &&
+ (nOldSurround == SURROUND_NONE || nOldSurround == SURROUND_THROUGHT))
+ {
+ aWrap.SetContour(TRUE);
+ }
+ }
+
+ aSet.Put( aWrap );
+ aSet.Put(SvxOpaqueItem(RES_OPAQUE, nSlot != FN_FRAME_WRAPTHRU_TRANSP));
+ if(bObj)
+ {
+ rSh.SetObjAttr(aSet);
+ if (nSlot != FN_FRAME_WRAPTHRU_TRANSP)
+ rSh.SelectionToHeaven();
+ else
+ rSh.SelectionToHell();
+ }
+ else
+ rSh.SetFlyFrmAttr(aSet);
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Update der Statuszeile erzwingen
+ --------------------------------------------------------------------*/
+
+void SwBaseShell::SetFrmMode(USHORT nMode, SwWrtShell *pSh )
+{
+ nFrameMode = nMode;
+ SfxBindings &rBnd = pSh->GetView().GetViewFrame()->GetBindings();
+
+ if( nMode == FLY_DRAG ||
+ (pSh && (pSh->IsFrmSelected() || pSh->IsObjSelected())) )
+ {
+ const SfxPointItem aTmp1( SID_ATTR_POSITION, pSh->GetAnchorObjDiff());
+ const SvxSizeItem aTmp2( SID_ATTR_SIZE, pSh->GetObjSize());
+ rBnd.SetState( aTmp1 );
+ rBnd.SetState( aTmp2 );
+ }
+ else if( nMode == FLY_DRAG_END )
+ {
+ static USHORT __READONLY_DATA aInval[] =
+ {
+ SID_ATTR_POSITION, SID_ATTR_SIZE, 0
+ };
+ rBnd.Invalidate(aInval);
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ctor
+ --------------------------------------------------------------------*/
+
+SwBaseShell::SwBaseShell(SwView& rVw) :
+ SfxShell( &rVw ),
+ rView(rVw),
+ pFrmMgr(0),
+ pGetStateSet(0),
+ bUpdateSID_IMap(FALSE),
+ bUpdateSID_IMapExec(FALSE),
+ bUpdateSID_IContour(FALSE),
+ bUpdateSID_IContourDlg(FALSE)
+{
+ SwWrtShell& rWrtSh = rView.GetWrtShell();
+
+ SetPool(&rWrtSh.GetAttrPool());
+ SetName(C2S("Base"));
+ rWrtSh.SetGrfArrivedLnk( LINK( this, SwBaseShell, GraphicArrivedHdl));
+}
+
+
+SwBaseShell::~SwBaseShell()
+{
+ delete pFrmMgr;
+ if( rView.GetCurShell() == this )
+ rView.ResetSubShell();
+
+ Link aTmp( LINK( this, SwBaseShell, GraphicArrivedHdl));
+ if( aTmp == rView.GetWrtShell().GetGrfArrivedLnk() )
+ rView.GetWrtShell().SetGrfArrivedLnk( Link() );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwBaseShell::ExecTxtCtrl(SfxRequest& rReq)
+{
+ const SfxItemSet *pArgs = rReq.GetArgs();
+
+ SwWrtShell &rSh = GetShell();
+ if (!pArgs)
+ GetView().GetViewFrame()->GetDispatcher()->Execute( SID_CHAR_DLG, FALSE);
+ else
+ {
+ rSh.SetAttr(*pArgs);
+ SwTxtFmtColl* pColl = rSh.GetCurTxtFmtColl();
+ if(pColl && pColl->IsAutoUpdateFmt())
+ rSh.AutoUpdatePara(pColl, *pArgs);
+
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwBaseShell::GetTxtCtrlState(SfxItemSet& rSet)
+{
+ GetShell().GetAttr(rSet);
+/*
+#ifdef UNX
+ // Timing-Probleme: Wenn der Timer ausloest, der u.a. die FontList ermitteln
+ // will, ist die DocShell u.U. (bei langen Startup-Phasen wie z.B. unter
+ // Unix) noch gar nicht angelegt (->SF). In diesem Fall holen wir uns
+ // die FontList einfach vom AppWindow. Ein sp"aterer Timer-Aufruf wird's
+ // dann schon richten.
+ if( !GetView().GetDocShell() )
+ {
+ FontList aFontList(::GetGetpApp()()->GetAppWindow());
+ SvxFontListItem aFontListItem( &aFontList , SID_ATTR_CHAR_FONTLIST );
+ rSet.Put( aFontListItem );
+ }
+ else
+#endif
+ {
+ SvxFontListItem aFontListItem(GetView().GetDocShell()->GetFontList(), SID_ATTR_CHAR_FONTLIST);
+ rSet.Put(aFontListItem);
+ }
+
+ GetShell().GetAttr(rSet); // *alle* Textattribute von der Core erfragen
+ */
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwBaseShell::GetBckColState(SfxItemSet &rSet)
+{
+ SwWrtShell &rSh = GetShell();
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ int nSelType = rSh.GetSelectionType();
+
+// if ( nSelType & SwWrtShell::SEL_GRF ||
+ if( nSelType & SwWrtShell::SEL_OLE )
+ {
+ rSet.DisableItem( SID_BACKGROUND_COLOR );
+ return;
+ }
+
+ if ( nSelType & SwWrtShell::SEL_FRM )
+ {
+ BOOL bParentCntProt = rSh.IsSelObjProtected( (FlyProtectType)(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) ) != 0;
+ if (bParentCntProt)
+ {
+ rSet.DisableItem( SID_BACKGROUND_COLOR );
+ return;
+ }
+ }
+
+ SvxBrushItem aBrushItem;
+
+ if( SwWrtShell::SEL_TBL_CELLS & nSelType )
+ rSh.GetBoxBackground( aBrushItem );
+ else
+ {
+ SfxItemSet aCoreSet(GetPool(), RES_BACKGROUND, RES_BACKGROUND);
+ if( nSelType & SwWrtShell::SEL_GRF || SwWrtShell::SEL_FRM & nSelType )
+ rSh.GetFlyFrmAttr( aCoreSet );
+ else
+ rSh.GetAttr( aCoreSet );
+ aBrushItem = (const SvxBrushItem&)aCoreSet.Get(RES_BACKGROUND);
+ }
+
+ while ( nWhich )
+ {
+ switch(nWhich)
+ {
+ case SID_BACKGROUND_COLOR :
+ {
+ SvxColorItem aColorItem(aBrushItem.GetColor());
+ rSet.Put( aColorItem, SID_BACKGROUND_COLOR );
+ }
+ break;
+ case SID_ATTR_BRUSH:
+ case RES_BACKGROUND:
+ rSet.Put( aBrushItem, GetPool().GetWhich(nWhich) );
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwBaseShell::ExecBckCol(SfxRequest& rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ int nSelType = rSh.GetSelectionType();
+ if ( nSelType & SwWrtShell::SEL_OLE )
+ {
+ return;
+ }
+
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+ if( !pArgs && nSlot != SID_BACKGROUND_COLOR)
+ return ;
+
+ SvxBrushItem aBrushItem;
+
+ if( SwWrtShell::SEL_TBL & nSelType )
+ {
+ rSh.GetBoxBackground( aBrushItem );
+ }
+ else
+ {
+ SfxItemSet aCoreSet(GetPool(), RES_BACKGROUND, RES_BACKGROUND);
+ if( (SwWrtShell::SEL_FRM & nSelType) || (SwWrtShell::SEL_GRF & nSelType) )
+ rSh.GetFlyFrmAttr( aCoreSet );
+ else
+ rSh.GetAttr( aCoreSet );
+ aBrushItem = (const SvxBrushItem&)aCoreSet.Get(RES_BACKGROUND);
+ }
+
+// BOOL bMsgOk = FALSE;
+
+ switch (nSlot)
+ {
+ // RES_BACKGROUND (=SID_ATTR_BRUSH) muss ueber zwei IDs
+ // gesetzt werden:
+ case SID_BACKGROUND_COLOR:
+ {
+ aBrushItem.SetGraphicPos(GPOS_NONE);
+
+ //Brush &rBrush = aBrushItem.GetBrush();
+ if(pArgs)
+ {
+ const SvxColorItem& rNewColorItem = (const SvxColorItem&)
+ pArgs->Get(SID_BACKGROUND_COLOR);
+ const Color& rNewColor = rNewColorItem.GetValue();
+ aBrushItem.SetColor( rNewColor );
+ GetView().GetViewFrame()->GetBindings().SetState(rNewColorItem);
+ }
+ else
+ aBrushItem.SetColor( COL_TRANSPARENT );
+ }
+ break;
+
+ case SID_ATTR_BRUSH:
+ case RES_BACKGROUND:
+ {
+ const SvxBrushItem& rNewBrushItem = (const SvxBrushItem&)
+ pArgs->Get( GetPool().GetWhich(nSlot) );
+ aBrushItem = rNewBrushItem;
+ }
+ break;
+ default:
+// bMsgOk = FALSE;
+ DBG_ERROR( "Unbekannte Message bei ExecuteAttr!" );
+ return;
+ }
+
+ if( SwWrtShell::SEL_TBL & nSelType )
+ {
+ rSh.SetBoxBackground( aBrushItem );
+ }
+ else if( (SwWrtShell::SEL_FRM & nSelType) ||
+ (SwWrtShell::SEL_GRF & nSelType) )
+ {
+ SfxItemSet aCoreSet(GetPool(), RES_BACKGROUND, RES_BACKGROUND);
+ aCoreSet.Put( aBrushItem );
+ // Vorlagen-AutoUpdate
+ SwFrmFmt* pFmt = rSh.GetCurFrmFmt();
+ if(pFmt && pFmt->IsAutoUpdateFmt())
+ rSh.AutoUpdateFrame( pFmt, aCoreSet);
+ else
+ rSh.SetFlyFrmAttr( aCoreSet );
+ }
+ else
+ {
+ SwTxtFmtColl* pColl = rSh.GetCurTxtFmtColl();
+ if( pColl && pColl->IsAutoUpdateFmt())
+ {
+ SfxItemSet aSet(GetPool(), RES_BACKGROUND, RES_BACKGROUND );
+ aSet.Put(aBrushItem);
+ rSh.AutoUpdatePara( pColl, aSet);
+ }
+ else
+ rSh.SetAttr( aBrushItem );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwBaseShell::GetBorderState(SfxItemSet &rSet)
+{
+ SwWrtShell &rSh = GetShell();
+ // Tabellenzelle(n) selektiert?
+ BOOL bPrepare = TRUE;
+ if ( rSh.IsTableMode() )
+ {
+ SfxItemSet aCoreSet( GetPool(),
+ RES_BOX, RES_BOX,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER, 0 );
+ SvxBoxInfoItem aBoxInfo;
+ aCoreSet.Put( aBoxInfo );
+ rSh.GetTabBorders( aCoreSet );
+ rSet.Put( aCoreSet );
+ }
+ else if ( rSh.IsFrmSelected() )
+ {
+ SwFlyFrmAttrMgr aMgr( FALSE, &rSh, FRMMGR_TYPE_NONE );
+ rSet.Put( aMgr.GetAttrSet() );
+ bPrepare = FALSE;
+ }
+ else
+ // Umrandungsattribute ganz normal ueber Shell holen
+ rSh.GetAttr( rSet );
+
+ if ( bPrepare )
+ ::PrepareBoxInfo( rSet, rSh );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwBaseShell::ExecDlg(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ Window *pMDI = &GetView().GetViewFrame()->GetWindow();
+ //Damit aus dem Basic keine Dialoge fuer Hintergrund-Views aufgerufen werden:
+ BOOL bBackground = (&GetView() != GetActiveView());
+ const SfxPoolItem* pItem = 0;
+ const SfxItemSet* pArgs = rReq.GetArgs();
+
+ USHORT nSlot = rReq.GetSlot();
+ const SfxItemSet* pOutSet = 0;
+ if(pArgs)
+ pArgs->GetItemState( GetPool().GetWhich(nSlot), FALSE, &pItem );
+
+ switch ( nSlot )
+ {
+ case FN_FORMAT_PAGE_COLUMN_DLG:
+ case FN_FORMAT_PAGE_DLG:
+ {
+ if( !bBackground )
+ {
+ const USHORT nCurIdx = rSh.GetCurPageDesc();
+ const SwPageDesc& rPageDesc = rSh.GetPageDesc( nCurIdx );
+ //temp. View, weil die Shell nach dem Dialog nicht mehr gueltig sein muss
+ //z.B. Kopfzeile ausschalten
+ SwView& rView = GetView();
+ rView.GetDocShell()->FormatPage(rPageDesc.GetName(),
+ nSlot == FN_FORMAT_PAGE_COLUMN_DLG,
+ &rSh );
+ rView.InvalidateRulerPos();
+ }
+ }
+ break;
+ case FN_FORMAT_BORDER_DLG:
+ {
+ SfxItemSet aSet( rSh.GetAttrPool(),
+ RES_BOX , RES_SHADOW,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
+ 0 );
+ SwBorderDlg* pDlg = 0;
+
+ // Tabellenzelle(n) selektiert?
+ if ( rSh.IsTableMode() )
+ {
+ // Umrandungattribute Get/SetTabBorders() setzen
+ ::PrepareBoxInfo( aSet, rSh );
+ rSh.GetTabBorders( aSet );
+ pDlg = new SwBorderDlg( pMDI, aSet, SW_BORDER_MODE_TABLE );
+ if ( pDlg->Execute() == RET_OK )
+ {
+ rSh.SetTabBorders( *pDlg->GetOutputItemSet() );
+ pOutSet = pDlg->GetOutputItemSet();
+ }
+ }
+ else if ( rSh.IsFrmSelected() )
+ {
+ // Umrandungsattribute ueber Frame-Manager setzen
+ SwFlyFrmAttrMgr aMgr( FALSE, &rSh, FRMMGR_TYPE_NONE );
+ aSet.Put( aMgr.GetAttrSet() );
+
+ pDlg = new SwBorderDlg( pMDI, aSet, SW_BORDER_MODE_FRAME );
+ if ( pDlg->Execute() == RET_OK )
+ {
+ aMgr.SetAttrSet( *pDlg->GetOutputItemSet() );
+ aMgr.UpdateFlyFrm();
+ pOutSet = pDlg->GetOutputItemSet();
+ }
+ }
+ else
+ {
+ // Umrandungsattribute ganz normal ueber Shell setzen
+ rSh.GetAttr( aSet );
+ ::PrepareBoxInfo( aSet, rSh );
+
+ pDlg = new SwBorderDlg( pMDI, aSet, SW_BORDER_MODE_PARA );
+ if ( pDlg->Execute() == RET_OK )
+ {
+ rSh.SetAttr( *pDlg->GetOutputItemSet() );
+ pOutSet = pDlg->GetOutputItemSet();
+ }
+ }
+ delete pDlg;
+ }
+ break;
+ case FN_FORMAT_BACKGROUND_DLG:
+ {
+ SfxItemSet aSet( rSh.GetAttrPool(),
+ RES_BACKGROUND, RES_BACKGROUND );
+
+ SwBackgroundDlg* pDlg = 0;
+
+ // Tabellenzelle(n) selektiert?
+ if ( rSh.IsTableMode() )
+ {
+ //Hintergrundattribute der Tabelle holen und in den Set packen
+ SvxBrushItem aBrush(RES_BACKGROUND);
+ rSh.GetBoxBackground( aBrush );
+ pDlg = new SwBackgroundDlg( pMDI, aSet );
+ aSet.Put( aBrush );
+ if ( pDlg->Execute() == RET_OK )
+ {
+ //aBrush = (SvxBrushItem) pDlg->GetOutputItemSet()->Get( RES_BACKGROUND );
+
+ rSh.SetBoxBackground( (SvxBrushItem&)
+ pDlg->GetOutputItemSet()->Get( RES_BACKGROUND ));
+ pOutSet = pDlg->GetOutputItemSet();
+ }
+ }
+ else if ( rSh.IsFrmSelected() )
+ {
+
+ rSh.GetFlyFrmAttr( aSet );
+
+ pDlg = new SwBackgroundDlg( pMDI, aSet );
+ if ( pDlg->Execute() == RET_OK )
+ {
+ rSh.SetFlyFrmAttr((SfxItemSet &) *pDlg->GetOutputItemSet() );
+ pOutSet = pDlg->GetOutputItemSet();
+ }
+ }
+ else
+ {
+ // Umrandungsattribute ganz normal ueber Shell setzen
+ rSh.GetAttr( aSet );
+
+ pDlg = new SwBackgroundDlg( pMDI, aSet );
+ if ( pDlg->Execute() == RET_OK )
+ {
+ rSh.SetAttr( *pDlg->GetOutputItemSet() );
+ pOutSet = pDlg->GetOutputItemSet();
+ }
+ }
+ delete pDlg;
+
+ }
+ break;
+ default:DBG_ERROR("falscher Dispatcher (basesh.cxx)");
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+int SwBaseShell::InsertGraphic( const String &rPath, const String &rFilter,
+ BOOL bLink, GraphicFilter *pFlt,
+ Graphic* pPreviewGrf, BOOL bRule )
+{
+ SwWait aWait( *rView.GetDocShell(), TRUE );
+
+ Graphic aGrf;
+ int nRes = GRFILTER_OK;
+ if ( pPreviewGrf )
+ aGrf = *pPreviewGrf;
+ else
+ {
+ if( !pFlt )
+ pFlt = ::GetGrfFilter();
+ Link aOldLink = pFlt->GetUpdatePercentHdl();
+ pFlt->SetUpdatePercentHdl( LINK( this, SwBaseShell, UpdatePercentHdl ));
+ ::StartProgress( STR_STATSTR_IMPGRF, 0, 100, rView.GetDocShell() );
+ nRes = ::LoadGraphic( rPath, rFilter, aGrf, pFlt /*, nFilter*/ );
+ ::EndProgress( rView.GetDocShell() );
+ pFlt->SetUpdatePercentHdl( aOldLink );
+ }
+
+ if( GRFILTER_OK == nRes )
+ {
+ SwWrtShell &rSh = GetShell();
+ rSh.StartAction();
+ if( bLink )
+ rSh.Insert( URIHelper::SmartRelToAbs( rPath ),
+ rFilter, aGrf, pFrmMgr, bRule );
+ else
+ rSh.Insert( aEmptyStr, aEmptyStr, aGrf, pFrmMgr );
+ // nach dem EndAction ist es zu spaet, weil die Shell dann schon zerstoert sein kann
+ DELETEZ(pFrmMgr);
+ rSh.EndAction();
+ }
+ return nRes;
+}
+
+
+IMPL_LINK_INLINE_START( SwBaseShell, UpdatePercentHdl, GraphicFilter *, pFilter )
+{
+ ::SetProgressState( pFilter->GetPercent(), rView.GetDocShell() );
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwBaseShell, UpdatePercentHdl, GraphicFilter *, pFilter )
+
+
+// ----------------------------------------------------------------------------
+
+
+SwWrtShell& SwBaseShell::GetShell()
+{
+ return rView.GetWrtShell();
+}
+
+// ----------------------------------------------------------------------------
+
+SwWrtShell* SwBaseShell::GetShellPtr()
+{
+ return rView.GetWrtShellPtr();
+}
+
+
+void SwBaseShell::GetGalleryState( SfxItemSet &rSet )
+{
+ SwWrtShell &rSh = GetShell();
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ switch ( nWhich )
+ {
+ case SID_GALLERY_BG_BRUSH:
+ {
+ int nSel = rSh.GetSelectionType();
+ SfxStringListItem aLst( nWhich );
+ List *pLst = aLst.GetList();
+ nParagraphPos = nGraphicPos = nOlePos = nFramePos = nTablePos =
+ nTableRowPos = nTableCellPos = nPagePos =
+ nHeaderPos = nFooterPos = 0;
+ BYTE nPos = 1;
+ pLst->Insert( (void*) new SW_RESSTR( STR_SWBG_PAGE ), pLst->Count() );
+ nPagePos = nPos++;
+ USHORT nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
+ BOOL bHtmlMode = 0 != (nHtmlMode & HTMLMODE_ON);
+
+ if ( (!bHtmlMode || (nHtmlMode & HTMLMODE_FULL_STYLES)) &&
+ (nSel & SwWrtShell::SEL_TXT) )
+ {
+ pLst->Insert( (void*) new SW_RESSTR( STR_SWBG_PARAGRAPH ), pLst->Count() );
+ nParagraphPos = nPos++;
+ }
+ if ( (!bHtmlMode || (nHtmlMode & HTMLMODE_SOME_STYLES)) &&
+ nSel & (SwWrtShell::SEL_TBL|SwWrtShell::SEL_TBL_CELLS) )
+ {
+ pLst->Insert( (void*) new SW_RESSTR( STR_SWBG_TABLE ), pLst->Count() );
+ nTablePos = nPos++;
+
+ if(!bHtmlMode)
+ {
+ pLst->Insert( (void*) new SW_RESSTR( STR_SWBG_TABLE_ROW ), pLst->Count() );
+ nTableRowPos = nPos++;
+ }
+
+ pLst->Insert( (void*) new SW_RESSTR( STR_SWBG_TABLE_CELL), pLst->Count() );
+ nTableCellPos = nPos++;
+ }
+ if(!bHtmlMode)
+ {
+ if ( nSel & SwWrtShell::SEL_FRM )
+ {
+ pLst->Insert( (void*) new SW_RESSTR( STR_SWBG_FRAME ), pLst->Count() );
+ nFramePos = nPos++;
+ }
+ if ( nSel & SwWrtShell::SEL_GRF )
+ {
+ pLst->Insert( (void*) new SW_RESSTR( STR_SWBG_GRAPHIC ), pLst->Count() );
+ nGraphicPos = nPos++;
+ }
+ if ( nSel & SwWrtShell::SEL_OLE )
+ {
+ pLst->Insert( (void*) new SW_RESSTR( STR_SWBG_OLE ), pLst->Count() );
+ nOlePos = nPos++;
+ }
+ const USHORT nType = rSh.GetFrmType(0,TRUE);
+ if ( nType & FRMTYPE_HEADER )
+ {
+ pLst->Insert( (void*) new SW_RESSTR( STR_SWBG_HEADER ), pLst->Count() );
+ nHeaderPos = nPos++;
+ }
+ if ( nType & FRMTYPE_FOOTER )
+ {
+ pLst->Insert( (void*) new SW_RESSTR( STR_SWBG_FOOTER ), pLst->Count() );
+ nFooterPos = nPos;
+ }
+ }
+ if ( pLst->Count() )
+ rSet.Put( aLst );
+ else
+ rSet.DisableItem( nWhich );
+ break;
+ }
+ }
+}
+
+
+void SwBaseShell::ExecuteGallery(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ rSh.StartAction();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+ switch(nSlot)
+ {
+ case SID_GALLERY_BG_BRUSH:
+ {
+ int nSel = rSh.GetSelectionType();
+ if ( nSel & SwWrtShell::SEL_DRW_TXT )
+ break;
+
+ BYTE nPos = (BYTE)((SfxUInt16Item &)pArgs->Get(SID_GALLERY_BG_POS)).GetValue();
+ ++nPos;
+
+ SvxBrushItem aBrush( (SvxBrushItem&)pArgs->Get(SID_GALLERY_BG_BRUSH));
+ aBrush.SetWhich( RES_BACKGROUND );
+ if ( nPos == nParagraphPos )
+ rSh.SetAttr( aBrush );
+ else if ( nPos == nTablePos )
+ rSh.SetTabBackground( aBrush );
+ else if ( nPos == nTableRowPos )
+ rSh.SetRowBackground( aBrush );
+ else if ( nPos == nTableCellPos )
+ rSh.SetBoxBackground( aBrush );
+ else if ( nPos == nFramePos || nPos == nGraphicPos || nPos == nOlePos )
+ {
+ SfxItemSet aCoreSet(GetPool(), RES_BACKGROUND, RES_BACKGROUND);
+ aCoreSet.Put( aBrush );
+ rSh.SetFlyFrmAttr( aCoreSet );
+ }
+ else if ( nPos == nPagePos || nPos == nHeaderPos || nPos == nFooterPos )
+ {
+ USHORT nDesc = rSh.GetCurPageDesc();
+ SwPageDesc aDesc( rSh.GetPageDesc( nDesc ) );
+ if ( nPos == nPagePos )
+ aDesc.GetMaster().SetAttr( aBrush );
+ else if ( nPos == nHeaderPos )
+ {
+ SwFmtHeader aHead( aDesc.GetMaster().GetHeader() );
+ aHead.GetHeaderFmt()->SetAttr( aBrush );
+ aDesc.GetMaster().SetAttr( aHead );
+ }
+ else if ( nPos == nFooterPos )
+ {
+ SwFmtFooter aFoot( aDesc.GetMaster().GetFooter() );
+ aFoot.GetFooterFmt()->SetAttr( aBrush );
+ aDesc.GetMaster().SetAttr( aFoot );
+ }
+ rSh.ChgPageDesc( nDesc, aDesc );
+ }
+ break;
+ }
+ }
+ rSh.EndAction();
+}
+
+void SwBaseShell::ExecField( SfxRequest& rReq )
+{
+ USHORT nSlot = rReq.GetSlot();
+ switch( nSlot )
+ {
+ case FN_CHANGE_DBFIELD:
+ {
+ SwChangeDBDlg *pDlg = new SwChangeDBDlg(GetView());
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+ default:
+ ASSERT(FALSE, falscher Dispatcher);
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.404 2000/09/18 16:06:02 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.403 2000/09/13 11:38:45 ka
+ use URL method of Gallery instead of DirEntry method
+
+ Revision 1.402 2000/09/12 13:16:50 kz
+ add. include tools/fsys.hxx
+
+ Revision 1.401 2000/09/08 08:12:51 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.400 2000/09/07 15:59:28 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.399 2000/08/17 11:42:20 jp
+ remove the SW graphicmanager
+
+ Revision 1.398 2000/08/15 13:51:49 os
+ #77616# allow background color for graphic objects
+
+ Revision 1.397 2000/07/11 18:54:25 jp
+ Task #70407#: use the GraphikObject
+
+ Revision 1.396 2000/07/11 17:56:35 jp
+ Bug #76736#: Execute - UpdateFields reativate
+
+ Revision 1.395 2000/06/26 13:17:56 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.394 2000/06/07 13:18:20 os
+ using UCB
+
+ Revision 1.393 2000/05/30 10:40:31 os
+ unused slots removed
+
+ Revision 1.392 2000/05/26 07:21:31 os
+ old SW Basic API Slots removed
+
+ Revision 1.391 2000/05/10 11:53:01 os
+ Basic API removed
+
+ Revision 1.390 2000/05/09 14:41:35 os
+ BASIC interface partially removed
+
+ Revision 1.389 2000/05/08 11:22:47 os
+ CreateSubObject
+
+ Revision 1.388 2000/04/18 14:58:23 os
+ UNICODE
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/shells/beziersh.cxx b/sw/source/ui/shells/beziersh.cxx
new file mode 100644
index 000000000000..939a164e3428
--- /dev/null
+++ b/sw/source/ui/shells/beziersh.cxx
@@ -0,0 +1,488 @@
+/*************************************************************************
+ *
+ * $RCSfile: beziersh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "cmdid.h"
+
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SVDOPATH_HXX //autogen
+#include <svx/svdopath.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "edtwin.hxx"
+#include "helpid.h"
+#include "globals.hrc"
+#include "drawbase.hxx"
+#include "beziersh.hxx"
+
+#include "popup.hrc"
+#include "shells.hrc"
+
+#define SwBezierShell
+#include "itemdef.hxx"
+#include "swslots.hxx"
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+SFX_IMPL_INTERFACE(SwBezierShell, SwBezierShell, SW_RES(STR_SHELLNAME_BEZIER))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_DRAW_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_BEZIER_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_DRAW));
+}
+
+TYPEINIT1(SwBezierShell,SwBaseShell)
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwBezierShell::SwBezierShell(SwView &rView):
+ SwBaseShell( rView )
+{
+ SetName(C2S("Bezier"));
+ SetHelpId(SW_BEZIERSHELL);
+
+ SwWrtShell *pSh = &GetShell();
+ SdrView* pSdrView = pSh->GetDrawView();
+ pSdrView->SetEliminatePolyPointLimitAngle(1500L);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwBezierShell::Execute(SfxRequest &rReq)
+{
+ SwWrtShell *pSh = &GetShell();
+ SdrView* pSdrView = pSh->GetDrawView();
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ USHORT nSlotId = rReq.GetSlot();
+ BOOL bChanged = pSdrView->GetModel()->IsChanged();
+ pSdrView->GetModel()->SetChanged(FALSE);
+ const SfxPoolItem* pItem;
+ if(pArgs)
+ pArgs->GetItemState(nSlotId, FALSE, &pItem);
+
+ switch (nSlotId)
+ {
+ case SID_DELETE:
+ case FN_BACKSPACE:
+ if (pSh->IsObjSelected())
+ {
+ if (pSdrView->HasMarkedPoints())
+ pSh->GetView().GetViewFrame()->GetDispatcher()->Execute(SID_BEZIER_DELETE, FALSE);
+ else
+ {
+ pSh->DelSelectedObj();
+ if (pSh->IsSelFrmMode())
+ {
+ pSh->LeaveSelFrmMode();
+ pSh->NoEdit();
+ }
+ GetView().AttrChangedNotify(pSh); // ggf Shellwechsel...
+ }
+ }
+ break;
+
+ case FN_ESCAPE:
+ if (pSdrView->HasMarkedPoints())
+ pSdrView->UnmarkAllPoints();
+ else
+ {
+ if ( pSh->IsDrawCreate() )
+ {
+ GetView().GetDrawFuncPtr()->BreakCreate();
+ GetView().AttrChangedNotify(pSh); // ggf Shellwechsel...
+ }
+ else if ( pSh->HasSelection() || GetView().IsDrawMode() )
+ {
+ GetView().LeaveDrawCreate();
+ pSh->EnterStdMode();
+ GetView().AttrChangedNotify(pSh); // ggf Shellwechsel...
+ }
+ }
+ break;
+
+ case SID_BEZIER_MOVE:
+ case SID_BEZIER_INSERT:
+ {
+ GetView().GetEditWin().SetBezierMode(nSlotId);
+ static USHORT __READONLY_DATA aInva[] =
+ {
+ SID_BEZIER_INSERT,
+ SID_BEZIER_MOVE,
+ 0
+ };
+ GetView().GetViewFrame()->GetBindings().Invalidate(aInva);
+ }
+ break;
+
+ case SID_BEZIER_DELETE:
+ case SID_BEZIER_CUTLINE:
+ case SID_BEZIER_CONVERT:
+ case SID_BEZIER_EDGE:
+ case SID_BEZIER_SMOOTH:
+ case SID_BEZIER_SYMMTR:
+ case SID_BEZIER_CLOSE:
+ case SID_BEZIER_ELIMINATE_POINTS:
+ {
+ const SdrMarkList& rMarkList = pSdrView->GetMarkList();
+
+ if (rMarkList.GetMark(0) && !pSdrView->IsAction())
+ {
+ switch (nSlotId)
+ {
+ case SID_BEZIER_DELETE:
+ pSdrView->DeleteMarkedPoints();
+ break;
+
+ case SID_BEZIER_CUTLINE:
+ {
+ pSdrView->RipUpAtMarkedPoints();
+ pSh->CheckUnboundObjects();
+ }
+ break;
+
+ case SID_BEZIER_CONVERT:
+ {
+ pSdrView->SetMarkedSegmentsKind(SDRPATHSEGMENT_TOGGLE);
+ break;
+ }
+
+ case SID_BEZIER_EDGE:
+ case SID_BEZIER_SMOOTH:
+ case SID_BEZIER_SYMMTR:
+ {
+ SdrPathSmoothKind eKind;
+
+ switch (nSlotId)
+ {
+ case SID_BEZIER_EDGE: eKind = SDRPATHSMOOTH_ANGULAR; break;
+ case SID_BEZIER_SMOOTH: eKind = SDRPATHSMOOTH_ASYMMETRIC; break;
+ case SID_BEZIER_SYMMTR: eKind = SDRPATHSMOOTH_SYMMETRIC; break;
+ }
+
+ SdrPathSmoothKind eSmooth = pSdrView->GetMarkedPointsSmooth();
+ if (eKind != eSmooth)
+ {
+ pSdrView->SetMarkedPointsSmooth(eKind);
+
+ static USHORT __READONLY_DATA aInva[] =
+ {
+ SID_BEZIER_SMOOTH,
+ SID_BEZIER_EDGE,
+ SID_BEZIER_SYMMTR,
+ 0
+ };
+ GetView().GetViewFrame()->GetBindings().Invalidate(aInva);
+ }
+ break;
+ }
+
+ case SID_BEZIER_CLOSE:
+ {
+ SdrPathObj* pPathObj = (SdrPathObj*) rMarkList.GetMark(0)->GetObj();
+ pSdrView->UnmarkAllPoints();
+ Size aDist(GetView().GetEditWin().PixelToLogic(Size(8,8)));
+ pPathObj->ToggleClosed(aDist.Width());
+ break;
+ }
+
+ case SID_BEZIER_ELIMINATE_POINTS:
+ pSdrView->SetEliminatePolyPoints(!pSdrView->IsEliminatePolyPoints());
+ break;
+ }
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ if (pSdrView->GetModel()->IsChanged())
+ GetShell().SetModified();
+ else if (bChanged)
+ pSdrView->GetModel()->SetChanged(TRUE);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwBezierShell::GetState(SfxItemSet &rSet)
+{
+ SdrView* pSdrView = GetShell().GetDrawView();
+
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+
+ while( nWhich )
+ {
+ switch( nWhich )
+ {
+ case SID_BEZIER_MOVE:
+ case SID_BEZIER_INSERT:
+ {
+ USHORT nEditMode = GetView().GetEditWin().GetBezierMode();
+
+ rSet.Put(SfxBoolItem(nWhich, nEditMode == nWhich));
+ }
+ break;
+
+ case SID_BEZIER_CUTLINE:
+ if (!pSdrView->IsRipUpAtMarkedPointsPossible())
+ {
+ rSet.DisableItem(SID_BEZIER_CUTLINE);
+ }
+ break;
+
+ case SID_BEZIER_DELETE:
+ if (!pSdrView->IsDeleteMarkedPointsPossible())
+ {
+ rSet.DisableItem(SID_BEZIER_DELETE);
+ }
+ break;
+
+ case SID_BEZIER_CONVERT:
+ if (!pSdrView->IsSetMarkedSegmentsKindPossible())
+ {
+ rSet.DisableItem(SID_BEZIER_CONVERT);
+ }
+ else
+ {
+ SdrPathSegmentKind eSegm = pSdrView->GetMarkedSegmentsKind();
+ switch (eSegm)
+ {
+ case SDRPATHSEGMENT_DONTCARE: rSet.InvalidateItem(SID_BEZIER_CONVERT); break;
+ case SDRPATHSEGMENT_LINE : rSet.Put(SfxBoolItem(SID_BEZIER_CONVERT,FALSE)); break; // Button reingedrueckt = Kurve
+ case SDRPATHSEGMENT_CURVE : rSet.Put(SfxBoolItem(SID_BEZIER_CONVERT,TRUE)); break;
+ }
+ }
+ break;
+
+ case SID_BEZIER_EDGE:
+ case SID_BEZIER_SMOOTH:
+ case SID_BEZIER_SYMMTR:
+ if (!pSdrView->IsSetMarkedPointsSmoothPossible())
+ rSet.DisableItem(nWhich);
+ else
+ {
+ SdrPathSmoothKind eSmooth = pSdrView->GetMarkedPointsSmooth();
+ BOOL bEnable = FALSE;
+ switch (eSmooth)
+ {
+ case SDRPATHSMOOTH_DONTCARE :
+ break;
+ case SDRPATHSMOOTH_ANGULAR :
+ bEnable = nWhich == SID_BEZIER_EDGE;
+ break;
+ case SDRPATHSMOOTH_ASYMMETRIC:
+ bEnable = nWhich == SID_BEZIER_SMOOTH;
+ break;
+ case SDRPATHSMOOTH_SYMMETRIC :
+ bEnable = nWhich == SID_BEZIER_SYMMTR;
+ break;
+ }
+ rSet.Put(SfxBoolItem(nWhich, bEnable));
+ }
+ break;
+
+ case SID_BEZIER_CLOSE:
+ if (!pSdrView->IsOpenCloseMarkedObjectsPossible())
+ {
+ rSet.DisableItem(SID_BEZIER_CLOSE);
+ }
+ else
+ {
+ SdrObjClosedKind eClose = pSdrView->GetMarkedObjectsClosedState();
+ switch (eClose)
+ {
+ case SDROBJCLOSED_DONTCARE: rSet.InvalidateItem(SID_BEZIER_CLOSE); break;
+ case SDROBJCLOSED_OPEN : rSet.Put(SfxBoolItem(SID_BEZIER_CLOSE,FALSE)); break;
+ case SDROBJCLOSED_CLOSED : rSet.Put(SfxBoolItem(SID_BEZIER_CLOSE,TRUE)); break;
+ }
+ }
+ break;
+
+ case SID_BEZIER_ELIMINATE_POINTS:
+ rSet.Put(SfxBoolItem(SID_BEZIER_ELIMINATE_POINTS, pSdrView->IsEliminatePolyPoints()));
+ break;
+
+ default:
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.21 2000/09/18 16:06:03 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.20 2000/09/07 15:59:28 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.19 2000/05/26 07:21:32 os
+ old SW Basic API Slots removed
+
+ Revision 1.18 2000/05/10 11:53:01 os
+ Basic API removed
+
+ Revision 1.17 2000/04/18 14:58:23 os
+ UNICODE
+
+ Revision 1.16 1997/11/29 14:51:26 MA
+ includes
+
+
+ Rev 1.15 29 Nov 1997 15:51:26 MA
+ includes
+
+ Rev 1.14 24 Nov 1997 09:46:54 MA
+ includes
+
+ Rev 1.13 03 Nov 1997 13:55:46 MA
+ precomp entfernt
+
+ Rev 1.12 05 Sep 1997 12:02:00 MH
+ chg: header
+
+ Rev 1.11 05 Aug 1997 16:18:42 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.10 01 Aug 1997 11:45:44 MH
+ chg: header
+
+ Rev 1.9 08 Jul 1997 12:07:10 OM
+ Draw-Selektionsmodi aufgeraeumt
+
+ Rev 1.8 16 Jun 1997 15:30:24 OM
+ GPF behoben: Backspace wie Delete behandeln
+
+ Rev 1.7 07 Apr 1997 17:50:00 MH
+ chg: header
+
+ Rev 1.6 21 Feb 1997 13:25:14 MA
+ #35942# Hack: CheckUnboundObjects
+
+ Rev 1.5 23 Jan 1997 16:07:44 OM
+ Aufgeraeumt
+
+ Rev 1.4 22 Jan 1997 11:20:48 OM
+ Neue Shells: DrawBaseShell und DrawControlShell
+
+ Rev 1.3 16 Jan 1997 14:46:24 OM
+ Zweistufiges Escape
+
+ Rev 1.2 14 Jan 1997 15:37:38 OM
+ Statusmethode fuer Bezier-Fkts
+
+ Rev 1.1 13 Jan 1997 15:56:10 OM
+ Bezier-Punkte loeschen
+
+ Rev 1.0 08 Jan 1997 12:46:44 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/shells/drawdlg.cxx b/sw/source/ui/shells/drawdlg.cxx
new file mode 100644
index 000000000000..fabaee6e4444
--- /dev/null
+++ b/sw/source/ui/shells/drawdlg.cxx
@@ -0,0 +1,439 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define ITEMID_COLOR_TABLE SID_COLOR_TABLE
+
+
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SVX_TEXTANIM_HXX //autogen
+#include <svx/textanim.hxx>
+#endif
+#ifndef _SVX_TAB_AREA_HXX //autogen
+#include <svx/tabarea.hxx>
+#endif
+#ifndef _SVX_TAB_LINE_HXX //autogen
+#include <svx/tabline.hxx>
+#endif
+#ifndef _SVX_DRAWITEM_HXX //autogen
+#include <svx/drawitem.hxx>
+#endif
+
+
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "docsh.hxx"
+#include "cmdid.h"
+
+#include "drawsh.hxx"
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwDrawShell::ExecDrawDlg(SfxRequest& rReq)
+{
+ SwWrtShell* pSh = &GetShell();
+ SdrView* pView = pSh->GetDrawView();
+ SdrModel* pDoc = pView->GetModel();
+ Window* pWin = GetView().GetWindow();
+ BOOL bChanged = pDoc->IsChanged();
+ pDoc->SetChanged(FALSE);
+
+ SfxItemSet aNewAttr( pDoc->GetItemPool() );
+ pView->GetAttributes( aNewAttr );
+
+ GetView().NoRotate();
+
+ pSh->StartAction();
+
+ switch (rReq.GetSlot())
+ {
+ case FN_DRAWTEXT_ATTR_DLG:
+ {
+ SvxTextTabDialog* pDlg = new SvxTextTabDialog( NULL, &aNewAttr , pView);
+ USHORT nResult = pDlg->Execute();
+
+ if (nResult == RET_OK)
+ {
+ if (pView->HasMarkedObj())
+ pView->SetAttributes(*pDlg->GetOutputItemSet());
+ }
+ delete( pDlg );
+ }
+ break;
+
+ case SID_ATTRIBUTES_AREA:
+ {
+ BOOL bHasMarked = pView->HasMarkedObj();
+
+
+#if SUPD>352
+ SvxAreaTabDialog* pDlg = new SvxAreaTabDialog( NULL, &aNewAttr, pDoc, pView );
+#else
+ SvxAreaTabDialog* pDlg = new SvxAreaTabDialog( NULL, &aNewAttr, pDoc);
+#endif
+ const SvxColorTableItem* pColorItem = (const SvxColorTableItem*)
+ GetView().GetDocShell()->GetItem(SID_COLOR_TABLE);
+ if(pColorItem->GetColorTable() == OFF_APP()->GetStdColorTable())
+ pDlg->DontDeleteColorTable();
+ if (pDlg->Execute() == RET_OK)
+ {
+ if (bHasMarked)
+ pView->SetAttributes(*pDlg->GetOutputItemSet());
+ else
+ pView->SetDefaultAttr(*pDlg->GetOutputItemSet(), FALSE);
+
+ static USHORT __READONLY_DATA aInval[] =
+ {
+ SID_ATTR_FILL_STYLE, SID_ATTR_FILL_COLOR, 0
+ };
+ SfxBindings &rBnd = GetView().GetViewFrame()->GetBindings();
+ rBnd.Invalidate(aInval);
+ rBnd.Update(SID_ATTR_FILL_STYLE);
+ rBnd.Update(SID_ATTR_FILL_COLOR);
+ }
+ delete pDlg;
+ }
+ break;
+
+ case SID_ATTRIBUTES_LINE:
+ {
+ BOOL bHasMarked = pView->HasMarkedObj();
+
+ const SdrObject* pObj = NULL;
+ const SdrMarkList& rMarkList = pView->GetMarkList();
+ if( rMarkList.GetMarkCount() == 1 )
+ pObj = rMarkList.GetMark(0)->GetObj();
+
+ SvxLineTabDialog* pDlg = new SvxLineTabDialog(NULL, &aNewAttr,
+ pDoc, pObj, bHasMarked);
+
+ if (pDlg->Execute() == RET_OK)
+ {
+ if(bHasMarked)
+ pView->SetAttrToMarked(*pDlg->GetOutputItemSet(), FALSE);
+ else
+ pView->SetDefaultAttr(*pDlg->GetOutputItemSet(), FALSE);
+
+ static USHORT __READONLY_DATA aInval[] =
+ {
+ SID_ATTR_LINE_STYLE, SID_ATTR_LINE_WIDTH,
+ SID_ATTR_LINE_COLOR, 0
+ };
+
+ GetView().GetViewFrame()->GetBindings().Invalidate(aInval);
+ }
+ delete pDlg;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ pSh->EndAction();
+
+ if (pDoc->IsChanged())
+ GetShell().SetModified();
+ else
+ if (bChanged)
+ pDoc->SetChanged(TRUE);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwDrawShell::ExecDrawAttrArgs(SfxRequest& rReq)
+{
+ SwWrtShell* pSh = &GetShell();
+ SdrView* pView = pSh->GetDrawView();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ BOOL bChanged = pView->GetModel()->IsChanged();
+ pView->GetModel()->SetChanged(FALSE);
+
+ GetView().NoRotate();
+
+ if (pArgs)
+ {
+ if(pView->HasMarkedObj())
+ pView->SetAttrToMarked(*rReq.GetArgs(), FALSE);
+ else
+ pView->SetDefaultAttr(*rReq.GetArgs(), FALSE);
+ }
+ else
+ {
+ SfxDispatcher* pDis = pSh->GetView().GetViewFrame()->GetDispatcher();
+ switch (rReq.GetSlot())
+ {
+ 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:
+ pDis->Execute(SID_ATTRIBUTES_AREA, FALSE);
+ break;
+ case SID_ATTR_LINE_STYLE:
+ case SID_ATTR_LINE_DASH:
+ case SID_ATTR_LINE_WIDTH:
+ case SID_ATTR_LINE_COLOR:
+ pDis->Execute(SID_ATTRIBUTES_LINE, FALSE);
+ break;
+ }
+ }
+ if (pView->GetModel()->IsChanged())
+ GetShell().SetModified();
+ else
+ if (bChanged)
+ pView->GetModel()->SetChanged(TRUE);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwDrawShell::GetDrawAttrState(SfxItemSet& rSet)
+{
+ SdrView* pSdrView = GetShell().GetDrawView();
+
+ if (pSdrView->HasMarkedObj())
+ {
+ BOOL bDisable = Disable( rSet );
+
+ if( !bDisable )
+ pSdrView->GetAttributes( rSet );
+ }
+ else
+ rSet.Put(pSdrView->GetDefaultAttr());
+}
+
+/*************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.85 2000/09/18 16:06:03 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.84 2000/09/07 15:59:28 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.83 2000/07/14 14:41:26 ama
+ Fix #75805#: Start/EndAction prevents from performanceproblems
+
+ Revision 1.82 2000/05/26 07:21:32 os
+ old SW Basic API Slots removed
+
+ Revision 1.81 2000/02/11 14:57:07 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.80 1999/06/21 13:20:24 JP
+ Interface changes: SdrView::GetAttributes
+
+
+ Rev 1.79 21 Jun 1999 15:20:24 JP
+ Interface changes: SdrView::GetAttributes
+
+ Rev 1.78 29 Nov 1997 15:54:02 MA
+ includes
+
+ Rev 1.77 24 Nov 1997 09:46:54 MA
+ includes
+
+ Rev 1.76 02 Sep 1997 13:23:16 OS
+ includes
+
+ Rev 1.75 01 Sep 1997 13:27:30 OS
+ DLL-Umstellung
+
+ Rev 1.74 26 Aug 1997 16:13:08 TRI
+ VCL Anpassungen
+
+ Rev 1.73 07 Apr 1997 17:42:54 MH
+ chg: header
+
+ Rev 1.72 23 Jan 1997 10:45:50 OM
+ Neue Shells: Control- und DrawBaseShell
+
+ Rev 1.71 22 Jan 1997 11:35:56 OM
+ Neuer Parameter fuer SvxAreaTabDialog
+
+ Rev 1.70 22 Jan 1997 11:20:50 OM
+ Neue Shells: DrawBaseShell und DrawControlShell
+
+ Rev 1.69 13 Jan 1997 15:56:10 OM
+ Bezier-Punkte loeschen
+
+ Rev 1.68 08 Jan 1997 12:48:56 OM
+ Neue Segs
+
+ Rev 1.67 08 Jan 1997 12:47:20 OM
+ Aenderungen fuer Bezier-Shell
+
+ Rev 1.66 20 Dec 1996 13:22:18 MA
+ includes
+
+ Rev 1.65 13 Dec 1996 12:19:10 OM
+ Bezier-Controller Status und Execute
+
+ Rev 1.64 29 Nov 1996 10:57:42 OM
+ #33865# Fehlende Draw-Attribute gesetzt
+
+ Rev 1.63 28 Nov 1996 16:32:32 OM
+ Malattribute nur ohne selektiertes Objekt als Default setzen
+
+ Rev 1.62 28 Nov 1996 13:07:44 OM
+ #33823# Dok-Switch bei Draw-Dialogen unterbunden
+
+ Rev 1.61 27 Nov 1996 16:15:08 OM
+ #33427# Zeichenobjekte: automatischer Layerwechsel je nach Umlaufart
+
+ Rev 1.60 27 Nov 1996 10:05:18 OM
+ #33627# SetGeoAttr durch SetAttributes ersetzt
+
+ Rev 1.59 19 Nov 1996 15:55:20 NF
+ clooks...
+
+ Rev 1.58 15 Nov 1996 13:34:00 OS
+ SvxTextTabDialog angebunden
+
+ Rev 1.57 08 Nov 1996 15:59:24 OM
+ Schuetzen neu organisiert, transparenz im Draw-Mode
+
+ Rev 1.56 29 Oct 1996 17:21:48 OM
+ Abstaende auch im Drawmode
+
+ Rev 1.55 23 Oct 1996 20:04:46 OM
+ Drawobjekt Textumfluss-Dlg
+
+ Rev 1.54 23 Oct 1996 13:04:46 OS
+ DontDeleteColorTable am SvxAreaTabDialog ruen
+
+ Rev 1.53 01 Oct 1996 16:54:00 OM
+ Hyperlinks editieren
+
+ Rev 1.52 28 Aug 1996 15:55:02 OS
+ includes
+
+ Rev 1.51 15 Aug 1996 13:44:20 JP
+ svdraw.hxx entfernt
+
+ Rev 1.50 31 May 1996 11:01:36 NF
+ CLOOKS
+
+ Rev 1.49 29 May 1996 13:05:26 OS
+ headerstop wieder vor den Win31-defines
+
+ Rev 1.48 29 May 1996 09:49:00 TRI
+ CLOOKS
+
+ Rev 1.47 21 May 1996 16:57:12 AMA
+ Fix: Start+EndAction nach dem DrawDialog.
+
+ Rev 1.46 21 May 1996 08:50:42 NF
+ CLOOKS
+
+ Rev 1.45 14 May 1996 15:17:06 HJS
+ CLOOKS
+
+ Rev 1.44 10 May 1996 15:57:18 OS
+ Zeichenbindung an Drawobjekten
+
+ Rev 1.43 30 Apr 1996 13:45:18 OS
+ veraenderter TransformDlg ab 315
+
+ Rev 1.42 07 Mar 1996 14:55:58 HJS
+ 2 defines zu viel
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/shells/drawsh.cxx b/sw/source/ui/shells/drawsh.cxx
new file mode 100644
index 000000000000..59ba1473e64d
--- /dev/null
+++ b/sw/source/ui/shells/drawsh.cxx
@@ -0,0 +1,640 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SVDOTEXT_HXX //autogen
+#include <svx/svdotext.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SVX_FONTWORK_HXX //autogen
+#include <svx/fontwork.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SVX_XFTSFIT_HXX //autogen
+#include <svx/xftsfit.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+
+
+#include "swundo.hxx"
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "cmdid.h"
+#include "globals.hrc"
+#include "helpid.h"
+#include "popup.hrc"
+#include "shells.hrc"
+#include "drwbassh.hxx"
+#include "drawsh.hxx"
+
+#define SwDrawShell
+#include "itemdef.hxx"
+#include "swslots.hxx"
+
+
+SFX_IMPL_INTERFACE(SwDrawShell, SwDrawBaseShell, SW_RES(STR_SHELLNAME_DRAW))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_DRAW_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_DRAW_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_DRAW));
+ SFX_CHILDWINDOW_REGISTRATION(SvxFontWorkChildWindow::GetChildWindowId());
+}
+
+TYPEINIT1(SwDrawShell,SwDrawBaseShell)
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwDrawShell::Execute(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ SdrView *pSdrView = rSh.GetDrawView();
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ SfxBindings &rBnd = GetView().GetViewFrame()->GetBindings();
+ USHORT nSlotId = rReq.GetSlot();
+ BOOL bChanged = pSdrView->GetModel()->IsChanged();
+
+ pSdrView->GetModel()->SetChanged(FALSE);
+
+ const SfxPoolItem* pItem;
+ if(pArgs)
+ pArgs->GetItemState(nSlotId, FALSE, &pItem);
+
+ BOOL bMirror = TRUE, bTopParam = TRUE, bBottomParam = TRUE;
+
+ switch (nSlotId)
+ {
+ case SID_OBJECT_ROTATE:
+ if (rSh.IsObjSelected() && pSdrView->IsRotateAllowed())
+ {
+ if (GetView().IsDrawRotate())
+ rSh.SetDragMode(SDRDRAG_MOVE);
+ else
+ rSh.SetDragMode(SDRDRAG_ROTATE);
+
+ GetView().FlipDrawRotate();
+ }
+ break;
+
+ case SID_BEZIER_EDIT:
+ if (GetView().IsDrawRotate())
+ {
+ rSh.SetDragMode(SDRDRAG_MOVE);
+ GetView().FlipDrawRotate();
+ }
+ GetView().FlipDrawSelMode();
+ pSdrView->SetFrameDragSingles(GetView().IsDrawSelMode());
+ GetView().AttrChangedNotify(&rSh); // Shellwechsel...
+ break;
+
+ case SID_OBJECT_HELL:
+ if (rSh.IsObjSelected())
+ {
+ rSh.StartUndo( UNDO_START );
+ SetWrapMode(FN_FRAME_WRAPTHRU_TRANSP);
+ rSh.SelectionToHell();
+ rSh.EndUndo( UNDO_END );
+ rBnd.Invalidate(SID_OBJECT_HEAVEN);
+ }
+ break;
+
+ case SID_OBJECT_HEAVEN:
+ if (rSh.IsObjSelected())
+ {
+ rSh.StartUndo( UNDO_START );
+ SetWrapMode(FN_FRAME_WRAPTHRU);
+ rSh.SelectionToHeaven();
+ rSh.EndUndo( UNDO_END );
+ rBnd.Invalidate(SID_OBJECT_HELL);
+ }
+ break;
+
+ case FN_TOOL_HIERARCHIE:
+ if (rSh.IsObjSelected())
+ {
+ rSh.StartUndo( UNDO_START );
+ if (rSh.GetLayerId() == 0)
+ {
+ SetWrapMode(FN_FRAME_WRAPTHRU);
+ rSh.SelectionToHeaven();
+ }
+ else
+ {
+ SetWrapMode(FN_FRAME_WRAPTHRU_TRANSP);
+ rSh.SelectionToHell();
+ }
+ rSh.EndUndo( UNDO_END );
+ rBnd.Invalidate( SID_OBJECT_HELL, SID_OBJECT_HEAVEN, 0 );
+ }
+ break;
+
+ case FN_TOOL_VMIRROR:
+ bMirror = FALSE;
+ /* no break */
+ case FN_TOOL_HMIRROR:
+ rSh.MirrorSelection( bMirror );
+ break;
+
+ case SID_FONTWORK:
+ {
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ if (pArgs)
+ {
+ pVFrame->SetChildWindow(SvxFontWorkChildWindow::GetChildWindowId(),
+ ((const SfxBoolItem&)(pArgs->Get(SID_FONTWORK))).GetValue());
+ }
+ else
+ pVFrame->ToggleChildWindow( SvxFontWorkChildWindow::GetChildWindowId() );
+ pVFrame->GetBindings().Invalidate(SID_FONTWORK);
+ }
+ break;
+
+ default:
+ DBG_ASSERT(!this, "falscher Dispatcher");
+ return;
+ }
+ if (pSdrView->GetModel()->IsChanged())
+ rSh.SetModified();
+ else if (bChanged)
+ pSdrView->GetModel()->SetChanged(TRUE);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawShell::GetState(SfxItemSet& rSet)
+{
+ SwWrtShell &rSh = GetShell();
+ SdrView* pSdrView = rSh.GetDrawViewWithValidMarkList();
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ BOOL bProtected = rSh.IsSelObjProtected(FLYPROTECT_CONTENT);
+
+ if (!bProtected) // Im Parent nachsehen
+ bProtected |= rSh.IsSelObjProtected( (FlyProtectType)(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) ) != 0;
+
+ while( nWhich )
+ {
+ switch( nWhich )
+ {
+ case SID_OBJECT_HELL:
+ if ( !rSh.IsObjSelected() || rSh.GetLayerId() == 0 || bProtected )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_OBJECT_HEAVEN:
+ if ( !rSh.IsObjSelected() || rSh.GetLayerId() == 1 || bProtected )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FN_TOOL_HIERARCHIE:
+ if ( !rSh.IsObjSelected() || bProtected )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_OBJECT_ROTATE:
+ {
+ const BOOL bIsRotate = GetView().IsDrawRotate();
+ if ( !bIsRotate && !pSdrView->IsRotateAllowed() || bProtected )
+ rSet.DisableItem( nWhich );
+ else
+ rSet.Put( SfxBoolItem( nWhich, bIsRotate ) );
+ }
+ break;
+
+ case SID_BEZIER_EDIT:
+ if (!Disable(rSet, nWhich))
+ rSet.Put( SfxBoolItem( nWhich, !GetView().IsDrawSelMode()));
+ break;
+
+ case FN_TOOL_VMIRROR:
+ if ( !pSdrView->IsMirrorAllowed() || bProtected )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FN_TOOL_HMIRROR:
+ if ( !pSdrView->IsMirrorAllowed() || bProtected )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_FONTWORK:
+ {
+ if (bProtected)
+ rSet.DisableItem( nWhich );
+ else
+ {
+ const USHORT nId = SvxFontWorkChildWindow::GetChildWindowId();
+ rSet.Put(SfxBoolItem( nWhich , GetView().GetViewFrame()->HasChildWindow(nId)));
+ }
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+SwDrawShell::SwDrawShell(SwView &rView) :
+ SwDrawBaseShell(rView)
+{
+ SetHelpId(SW_DRAWSHELL);
+ SetName(String::CreateFromAscii("Draw"));
+}
+
+/*************************************************************************
+|*
+|* SfxRequests fuer FontWork bearbeiten
+|*
+\************************************************************************/
+
+
+
+void SwDrawShell::ExecFormText(SfxRequest& rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ SdrView* pDrView = rSh.GetDrawView();
+ BOOL bChanged = pDrView->GetModel()->IsChanged();
+ pDrView->GetModel()->SetChanged(FALSE);
+
+ const SdrMarkList& rMarkList = pDrView->GetMarkList();
+
+ if ( rMarkList.GetMarkCount() == 1 && rReq.GetArgs() )
+ {
+ const SfxItemSet& rSet = *rReq.GetArgs();
+ const SfxPoolItem* pItem;
+
+ if ( pDrView->IsTextEdit() )
+ {
+ pDrView->EndTextEdit( TRUE );
+ GetView().AttrChangedNotify(&rSh);
+ }
+
+ if ( rSet.GetItemState(XATTR_FORMTXTSTDFORM, TRUE, &pItem) ==
+ SFX_ITEM_SET &&
+ ((const XFormTextStdFormItem*) pItem)->GetValue() != XFTFORM_NONE )
+ {
+
+ const USHORT nId = SvxFontWorkChildWindow::GetChildWindowId();
+
+ SvxFontWorkDialog* pDlg = (SvxFontWorkDialog*)(GetView().GetViewFrame()->
+ GetChildWindow(nId)->GetWindow());
+
+ pDlg->CreateStdFormObj(*pDrView, *pDrView->GetPageViewPvNum(0),
+ rSet, *rMarkList.GetMark(0)->GetObj(),
+ ((const XFormTextStdFormItem*) pItem)->
+ GetValue());
+
+ }
+ else
+ pDrView->SetAttributes(rSet);
+ }
+ if (pDrView->GetModel()->IsChanged())
+ rSh.SetModified();
+ else
+ if (bChanged)
+ pDrView->GetModel()->SetChanged(TRUE);
+}
+
+/*************************************************************************
+|*
+|* Statuswerte fuer FontWork zurueckgeben
+|*
+\************************************************************************/
+
+
+
+void SwDrawShell::GetFormTextState(SfxItemSet& rSet)
+{
+ SwWrtShell &rSh = GetShell();
+ SdrView* pDrView = rSh.GetDrawView();
+ const SdrMarkList& rMarkList = pDrView->GetMarkList();
+ const SdrObject* pObj = NULL;
+ SvxFontWorkDialog* pDlg = NULL;
+
+ const USHORT nId = SvxFontWorkChildWindow::GetChildWindowId();
+
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ if ( pVFrame->HasChildWindow(nId) )
+ pDlg = (SvxFontWorkDialog*)(pVFrame->GetChildWindow(nId)->GetWindow());
+
+ if ( rMarkList.GetMarkCount() == 1 )
+ pObj = rMarkList.GetMark(0)->GetObj();
+
+ if ( pObj == NULL || !pObj->ISA(SdrTextObj) ||
+ !((SdrTextObj*) pObj)->HasText() )
+ {
+#define XATTR_ANZ 12
+ static const USHORT nXAttr[ XATTR_ANZ ] =
+ {
+ XATTR_FORMTXTSTYLE, XATTR_FORMTXTADJUST, XATTR_FORMTXTDISTANCE,
+ XATTR_FORMTXTSTART, XATTR_FORMTXTMIRROR, XATTR_FORMTXTSTDFORM,
+ XATTR_FORMTXTHIDEFORM, XATTR_FORMTXTOUTLINE, XATTR_FORMTXTSHADOW,
+ XATTR_FORMTXTSHDWCOLOR, XATTR_FORMTXTSHDWXVAL, XATTR_FORMTXTSHDWYVAL
+ };
+ for( USHORT i = 0; i < XATTR_ANZ; )
+ rSet.DisableItem( nXAttr[ i++ ] );
+ }
+ else
+ {
+ if ( pDlg )
+ pDlg->SetColorTable(OFF_APP()->GetStdColorTable());
+
+ pDrView->GetAttributes( rSet );
+ }
+}
+
+/*************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.143 2000/09/18 16:06:03 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.142 2000/09/08 08:12:51 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.141 2000/09/07 15:59:29 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.140 2000/05/26 07:21:32 os
+ old SW Basic API Slots removed
+
+ Revision 1.139 2000/05/10 11:53:01 os
+ Basic API removed
+
+ Revision 1.138 2000/04/18 14:58:23 os
+ UNICODE
+
+ Revision 1.137 1999/06/21 13:20:24 JP
+ Interface changes: SdrView::GetAttributes
+
+
+ Rev 1.136 21 Jun 1999 15:20:24 JP
+ Interface changes: SdrView::GetAttributes
+
+ Rev 1.135 12 Jan 1999 17:13:44 TJ
+ include
+
+ Rev 1.134 11 Jan 1999 12:41:48 MA
+ #60294# Undo-Klammerung vervollstaendigt
+
+ Rev 1.133 06 Oct 1998 12:44:58 JP
+ Bug #57153#: neu GetDrawViewWithValidMarkList
+
+ Rev 1.132 10 Jun 1998 11:23:18 OM
+ Hell/Heaven nicht in FormShell
+
+ Rev 1.131 15 Apr 1998 15:32:24 OM
+ #49467 Objekte innerhalb von geschuetzten Rahmen duerfen nicht veraendert werden
+
+ Rev 1.130 29 Nov 1997 15:52:14 MA
+ includes
+
+ Rev 1.129 24 Nov 1997 09:46:56 MA
+ includes
+
+ Rev 1.128 03 Nov 1997 13:55:44 MA
+ precomp entfernt
+
+ Rev 1.127 01 Sep 1997 13:23:04 OS
+ DLL-Umstellung
+
+ Rev 1.126 05 Aug 1997 16:21:54 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.125 05 Aug 1997 13:29:54 MH
+ chg: header
+
+ Rev 1.124 01 Aug 1997 11:47:18 MH
+ chg: header
+
+ Rev 1.123 18 Jun 1997 18:10:34 HJS
+ Typeinit wieder hinein
+
+ Rev 1.122 17 Jun 1997 16:15:18 MA
+ DrawTxtShell nicht von BaseShell ableiten + Opts
+
+ Rev 1.121 13 May 1997 13:24:26 OM
+ Unnoetigen Include entfernt
+
+ Rev 1.120 07 Apr 1997 17:41:54 MH
+ chg: header
+
+ Rev 1.119 24 Feb 1997 16:53:08 OM
+ Silbentrennung in Draw-Objekten
+
+ Rev 1.118 22 Jan 1997 14:40:30 OM
+ unnoetige Includes entfernt
+
+ Rev 1.117 22 Jan 1997 11:20:50 OM
+ Neue Shells: DrawBaseShell und DrawControlShell
+
+ Rev 1.116 16 Jan 1997 16:46:46 OM
+ Editmode on/off nur im richtigen Mode
+
+ Rev 1.115 14 Jan 1997 15:37:58 OM
+ Beziermode korrigiert
+
+ Rev 1.114 13 Jan 1997 15:56:10 OM
+ Bezier-Punkte loeschen
+
+ Rev 1.113 13 Jan 1997 10:12:10 OM
+ Selektionsmode fuer Bezier-Objekte
+
+ Rev 1.112 09 Jan 1997 16:24:02 OM
+ Selektionsmode fuer Bezier-Objekte
+
+ Rev 1.111 08 Jan 1997 12:48:58 OM
+ Neue Segs
+
+ Rev 1.110 08 Jan 1997 12:47:22 OM
+ Aenderungen fuer Bezier-Shell
+
+ Rev 1.109 18 Dec 1996 15:47:28 OM
+ #34500# Keine Texteingabe im Drawmode
+
+ Rev 1.108 13 Dec 1996 12:19:10 OM
+ Bezier-Controller Status und Execute
+
+ Rev 1.107 11 Dec 1996 12:34:06 OM
+ Bezier-Controller
+
+ Rev 1.106 30 Nov 1996 14:06:16 OS
+ Ausrichtung ueber Menue: EnumItem auswerten
+
+ Rev 1.105 29 Nov 1996 17:02:48 OS
+ FN_TOOL_ANKER jetzt in der Baseshell
+
+ Rev 1.104 27 Nov 1996 16:15:18 OM
+ #33427# Zeichenobjekte: automatischer Layerwechsel je nach Umlaufart
+
+ Rev 1.103 26 Nov 1996 11:56:22 NF
+ defines entfernt...
+
+ Rev 1.102 25 Nov 1996 10:55:28 OS
+ Slotumrechnung fuer SID_OBJECT_ALIGN entfernt
+
+ Rev 1.101 18 Nov 1996 13:39:32 MA
+ chg: State fuer align
+
+ Rev 1.100 15 Nov 1996 19:38:56 MA
+ opt, include
+
+ Rev 1.99 11 Nov 1996 13:37:34 MA
+ ResMgr
+
+ Rev 1.97 08 Nov 1996 11:59:20 HJS
+ include w.g. positivdefine
+
+ Rev 1.96 07 Nov 1996 16:20:08 OS
+ Wrap- und Anker-Methoden an die BaseShell
+
+ Rev 1.95 17 Oct 1996 14:35:18 MH
+ add: include
+
+ Rev 1.94 01 Oct 1996 16:54:00 OM
+ Hyperlinks editieren
+
+ Rev 1.93 28 Aug 1996 15:54:54 OS
+ includes
+
+ Rev 1.92 23 Aug 1996 12:51:56 HJS
+ clooks
+
+ Rev 1.91 22 Aug 1996 16:37:44 NF
+ clooks
+
+ Rev 1.90 14 Aug 1996 19:33:06 JP
+ svdraw.hxx entfernt
+
+ Rev 1.89 13 Aug 1996 12:38:42 OS
+ neue Shellnamen im IDL-Interface
+
+ Rev 1.88 09 Aug 1996 15:15:04 OS
+ neu: ObjectName und Value an Controls
+
+ Rev 1.87 02 Aug 1996 10:39:36 MH
+ Wer zum Teufel braucht sfxexp.hxx an dieser Stelle ?
+ Win16 jedenfalls nicht
+
+ Rev 1.86 30 Jul 1996 16:43:02 OS
+ FN_TOOL_ANKER_PAGE wieder ohne Statusmethode
+
+ Rev 1.85 27 Jul 1996 14:58:42 OS
+ Aenderungen fuer den Html-Mode
+
+ Rev 1.84 24 Jul 1996 11:06:36 NF
+ defines in ifdef win geklammert...
+
+ Rev 1.83 24 Jul 1996 09:13:04 NF
+ defines entfernt ...
+
+ Rev 1.82 23 Jul 1996 14:33:28 NF
+ CLOOKS
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/shells/drformsh.cxx b/sw/source/ui/shells/drformsh.cxx
new file mode 100644
index 000000000000..eccfd0ef37ed
--- /dev/null
+++ b/sw/source/ui/shells/drformsh.cxx
@@ -0,0 +1,375 @@
+/*************************************************************************
+ *
+ * $RCSfile: drformsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <hintids.hxx>
+#ifndef _SVX_HLNKITEM_HXX //autogen
+#include <svx/hlnkitem.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SVX_FMGLOB_HXX
+#include <svx/fmglob.hxx>
+#endif
+#ifndef _SVDOUNO_HXX //autogen
+#include <svx/svdouno.hxx>
+#endif
+#ifndef _COM_SUN_STAR_FORM_FORMBUTTONTYPE_HPP_
+#include <com/sun/star/form/FormButtonType.hpp>
+#endif
+#ifndef _SVX_HTMLMODE_HXX
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+
+#include "viewopt.hxx"
+#include "swmodule.hxx"
+#include "wrtsh.hxx"
+#include "cmdid.h"
+#include "globals.hrc"
+#include "helpid.h"
+#include "popup.hrc"
+#include "shells.hrc"
+#include "drwbassh.hxx"
+#include "drformsh.hxx"
+#include "view.hxx"
+
+#define SwDrawFormShell
+#include "itemdef.hxx"
+#include "swslots.hxx"
+
+#define C2U(cChar) OUString::createFromAscii(cChar)
+
+using namespace ::com::sun::star;
+using namespace ::rtl;
+
+SFX_IMPL_INTERFACE(SwDrawFormShell, SwDrawBaseShell, SW_RES(STR_SHELLNAME_DRAWFORM))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_DRAWFORM_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_DRAWFORM_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_DRAWFORM));
+}
+
+
+TYPEINIT1(SwDrawFormShell, SwDrawBaseShell)
+
+
+void SwDrawFormShell::Execute(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ const SfxPoolItem* pItem = 0;
+ const SfxItemSet *pArgs = rReq.GetArgs();
+
+ switch ( rReq.GetSlot() )
+ {
+ case SID_HYPERLINK_SETLINK:
+ {
+ if(pArgs)
+ pArgs->GetItemState(SID_HYPERLINK_SETLINK, sal_False, &pItem);
+ if(pItem)
+ {
+ SdrView *pSdrView = rSh.GetDrawView();
+ const SvxHyperlinkItem& rHLinkItem = *(const SvxHyperlinkItem *)pItem;
+ const SdrMarkList& rMarkList = pSdrView->GetMarkList();
+ if (rMarkList.GetMark(0))
+ {
+ SdrUnoObj* pUnoCtrl = PTR_CAST(SdrUnoObj, rMarkList.GetMark(0)->GetObj());
+ if (pUnoCtrl && FmFormInventor == pUnoCtrl->GetObjInventor())
+ {
+ uno::Reference< awt::XControlModel > xControlModel = pUnoCtrl->GetUnoControlModel();
+
+ ASSERT( xControlModel.is(), "UNO-Control ohne Model" );
+ if( !xControlModel.is() )
+ return;
+
+ uno::Reference< beans::XPropertySet > xPropSet(xControlModel, uno::UNO_QUERY);
+
+ uno::Any aTmp;
+
+ // Darf man eine URL an dem Objekt setzen?
+ uno::Reference< beans::XPropertySetInfo > xPropInfoSet = xPropSet->getPropertySetInfo();
+ beans::Property aProp = xPropInfoSet->getPropertyByName( C2U("TargetURL" ));
+ if (aProp.Name.getLength())
+ {
+ // Ja!
+ aTmp <<= OUString(rHLinkItem.GetName());
+ xPropSet->setPropertyValue(C2U("Label"), aTmp );
+
+ aTmp <<= OUString(INetURLObject::RelToAbs(rHLinkItem.GetURL()));
+ xPropSet->setPropertyValue( C2U("TargetURL"), aTmp );
+
+ if( rHLinkItem.GetTargetFrame().Len() )
+ {
+ aTmp <<= OUString(rHLinkItem.GetTargetFrame());
+ xPropSet->setPropertyValue( C2U("TargetFrame"), aTmp );
+ }
+
+
+ form::FormButtonType eButtonType = form::FormButtonType_URL;
+ aTmp.setValue( &eButtonType, ::getCppuType((const form::FormButtonType*)0));
+ xPropSet->setPropertyValue( C2U("ButtonType"), aTmp );
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ default:
+ DBG_ASSERT(!this, "falscher Dispatcher");
+ return;
+ }
+}
+
+void SwDrawFormShell::GetState(SfxItemSet& rSet)
+{
+ SwWrtShell &rSh = GetShell();
+ SfxWhichIter aIter( rSet );
+ sal_uInt16 nWhich = aIter.FirstWhich();
+
+ while( nWhich )
+ {
+ switch( nWhich )
+ {
+ case SID_HYPERLINK_GETLINK:
+ {
+ SdrView* pSdrView = rSh.GetDrawViewWithValidMarkList();
+ const SdrMarkList& rMarkList = pSdrView->GetMarkList();
+ SvxHyperlinkItem aHLinkItem;
+ if (rMarkList.GetMark(0))
+ {
+ SdrUnoObj* pUnoCtrl = PTR_CAST(SdrUnoObj, rMarkList.GetMark(0)->GetObj());
+ if (pUnoCtrl && FmFormInventor == pUnoCtrl->GetObjInventor())
+ {
+ uno::Reference< awt::XControlModel > xControlModel = pUnoCtrl->GetUnoControlModel();
+
+ ASSERT( xControlModel.is(), "UNO-Control ohne Model" );
+ if( !xControlModel.is() )
+ return;
+
+ uno::Reference< beans::XPropertySet > xPropSet(xControlModel, uno::UNO_QUERY);
+
+ uno::Any aTmp;
+ uno::Reference< beans::XPropertySetInfo > xInfo = xPropSet->getPropertySetInfo();
+ if(xInfo->hasPropertyByName(C2U("ButtonType" )))
+ {
+ form::FormButtonType eButtonType = form::FormButtonType_URL;
+ aTmp = xPropSet->getPropertyValue( C2U("ButtonType") );
+ if( aTmp.getValueType() == ::getCppuType((form::FormButtonType*)0)
+ && eButtonType == *( form::FormButtonType*)aTmp.getValue())
+ {
+ // Label
+ if(xInfo->hasPropertyByName( C2U("Label") ))
+ {
+ aTmp = xPropSet->getPropertyValue( C2U("Label") );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0) )
+ {
+ OUString sTmp = *(OUString*)aTmp.getValue();
+ if(sTmp.getLength())
+ aHLinkItem.SetName(sTmp);
+ }
+ }
+
+ // URL
+ if(xInfo->hasPropertyByName( C2U("TargetURL" )))
+ {
+ aTmp = xPropSet->getPropertyValue( C2U("TargetURL") );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0))
+ {
+ OUString sTmp = *(OUString*)aTmp.getValue();
+ if(sTmp.getLength())
+ aHLinkItem.SetURL(sTmp);
+ }
+ }
+
+ // Target
+ if(xInfo->hasPropertyByName( C2U("TargetFrame") ))
+ {
+ aTmp = xPropSet->getPropertyValue( C2U("TargetFrame") );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0))
+ {
+ OUString sTmp = *(OUString*) aTmp.getValue();
+ if(sTmp.getLength())
+ aHLinkItem.SetTargetFrame(sTmp);
+ }
+ }
+ aHLinkItem.SetInsertMode(HLINK_BUTTON);
+ }
+ }
+ }
+ }
+ sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
+ aHLinkItem.SetInsertMode((SvxLinkInsertMode)(aHLinkItem.GetInsertMode() |
+ ((nHtmlMode & HTMLMODE_ON) != 0 ? HLINK_HTMLMODE : 0)));
+
+ rSet.Put(aHLinkItem);
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+SwDrawFormShell::SwDrawFormShell(SwView &rView) :
+ SwDrawBaseShell(rView)
+{
+ SetHelpId(SW_DRAWFORMSHELL);
+ GetShell().NoEdit(sal_True);
+ SetName(String::CreateFromAscii("DrawForm"));
+}
+
+SwDrawFormShell::~SwDrawFormShell()
+{
+}
+
+/*************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.19 2000/09/18 16:06:03 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.18 2000/05/26 07:21:32 os
+ old SW Basic API Slots removed
+
+ Revision 1.17 2000/05/16 09:15:13 os
+ project usr removed
+
+ Revision 1.16 2000/05/10 11:53:01 os
+ Basic API removed
+
+ Revision 1.15 2000/04/18 14:58:23 os
+ UNICODE
+
+ Revision 1.14 2000/03/23 07:49:14 os
+ UNO III
+
+ Revision 1.13 2000/02/11 14:57:20 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.12 1999/11/19 16:40:24 os
+ modules renamed
+
+ Revision 1.11 1999/09/24 14:38:32 os
+ hlnkitem.hxx now in SVX
+
+ Revision 1.10 1999/03/29 08:31:06 OS
+ #64017# vor getPropertyValue immer hasPropertyByName rufen
+
+
+ Rev 1.9 29 Mar 1999 10:31:06 OS
+ #64017# vor getPropertyValue immer hasPropertyByName rufen
+
+ Rev 1.8 26 Jan 1999 14:48:26 OS
+ #56371# TF_ONE51
+
+ Rev 1.7 26 Nov 1998 15:19:44 MA
+ #59896# Raster usw jetzt an der Application
+
+ Rev 1.6 02 Nov 1998 09:22:10 MA
+ #58294# Slots fuer Raster
+
+ Rev 1.5 07 Oct 1998 10:58:48 JP
+ Bug #57153#: in allen GetStates einer DrawShell die MarkListe aktualisieren
+
+ Rev 1.4 07 Jul 1998 14:03:54 OM
+ #51853# URL-Button wiederbelebt
+
+ Rev 1.3 06 Jul 1998 14:18:44 OM
+ #51853# URL-Button einfuegen
+
+ Rev 1.2 19 May 1998 12:45:50 OM
+ SvxMacro-Umstellung
+
+ Rev 1.1 08 Apr 1998 13:46:58 OM
+ #42505 Keine URL-Buttons in Html-Dokumenten
+
+ Rev 1.0 11 Mar 1998 17:06:02 OM
+ Initial revision.
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/shells/drwbassh.cxx b/sw/source/ui/shells/drwbassh.cxx
new file mode 100644
index 000000000000..e4acb4d9565c
--- /dev/null
+++ b/sw/source/ui/shells/drwbassh.cxx
@@ -0,0 +1,762 @@
+/*************************************************************************
+ *
+ * $RCSfile: drwbassh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _AEITEM_HXX //autogen
+#include <svtools/aeitem.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SVX_TRANSFRM_HXX //autogen
+#include <svx/transfrm.hxx>
+#endif
+#ifndef _SVX_LABDLG_HXX //autogen
+#include <svx/labdlg.hxx>
+#endif
+#ifndef _SVX_ANCHORID_HXX //autogen
+#include <svx/anchorid.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+
+
+#ifndef _FMTORNT_HXX
+#include <fmtornt.hxx>
+#endif
+#include "cmdid.h"
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "edtwin.hxx"
+#include "viewopt.hxx"
+#include "dcontact.hxx"
+#include "frmfmt.hxx"
+#include "wrap.hxx"
+#include "drawbase.hxx"
+#include "drwbassh.hxx"
+
+#define SwDrawBaseShell
+#include "itemdef.hxx"
+#include "swslots.hxx"
+
+SFX_IMPL_INTERFACE(SwDrawBaseShell, SwBaseShell, SW_RES(0))
+{
+}
+
+TYPEINIT1(SwDrawBaseShell,SwBaseShell)
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwDrawBaseShell::SwDrawBaseShell(SwView &rView):
+ SwBaseShell( rView )
+{
+ GetShell().NoEdit(TRUE);
+
+ SwEditWin& rWin = GetView().GetEditWin();
+
+ rWin.SetBezierMode(SID_BEZIER_MOVE);
+
+ if ( !rView.GetDrawFuncPtr() )
+ rView.GetEditWin().StdDrawMode(SID_OBJECT_SELECT);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+__EXPORT SwDrawBaseShell::~SwDrawBaseShell()
+{
+ GetView().ExitDraw();
+ GetShell().Edit();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwDrawBaseShell::Execute(SfxRequest &rReq)
+{
+ SwWrtShell *pSh = &GetShell();
+ SdrView* pSdrView = pSh->GetDrawView();
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ USHORT nSlotId = rReq.GetSlot();
+ BOOL bChanged = pSdrView->GetModel()->IsChanged();
+ pSdrView->GetModel()->SetChanged(FALSE);
+ const SfxPoolItem* pItem = 0;
+ if(pArgs)
+ pArgs->GetItemState(nSlotId, FALSE, &pItem);
+
+ //Sonderfall Align per Menue
+ if(pItem && nSlotId == SID_OBJECT_ALIGN)
+ {
+ DBG_ASSERT(PTR_CAST(SfxEnumItem, pItem),"SfxEnumItem erwartet")
+ nSlotId += ((const SfxEnumItem*)pItem)->GetValue();
+ nSlotId++;
+ }
+
+ BOOL bAlignPossible = pSh->IsAlignPossible();
+
+ BOOL bTopParam = TRUE, bBottomParam = TRUE;
+ BOOL bNotify = FALSE;
+ BOOL bDone = FALSE;
+ SfxBindings& rBind = GetView().GetViewFrame()->GetBindings();
+
+ switch (nSlotId)
+ {
+ case FN_DRAW_WRAP_DLG:
+ {
+ if(pSdrView->HasMarkedObj())
+ {
+ const SfxItemSet* pArgs = rReq.GetArgs();
+
+ if(!pArgs)
+ {
+ const SdrMarkList& rMarkList = pSdrView->GetMarkList();
+ if( rMarkList.GetMark(0) != 0 )
+ {
+ SfxItemSet aSet(GetPool(), RES_SURROUND, RES_SURROUND,
+ RES_ANCHOR, RES_ANCHOR,
+ RES_LR_SPACE, RES_UL_SPACE,
+ SID_HTML_MODE, SID_HTML_MODE,
+ FN_DRAW_WRAP_DLG, FN_DRAW_WRAP_DLG,
+ 0);
+
+ const SwViewOption* pVOpt = pSh->GetViewOptions();
+ aSet.Put(SfxBoolItem(SID_HTML_MODE,
+ 0 != ::GetHtmlMode(pSh->GetView().GetDocShell())));
+
+ aSet.Put(SfxInt16Item(FN_DRAW_WRAP_DLG, pSh->GetLayerId()));
+
+ pSh->GetObjAttr(aSet);
+ SwWrapDlg aDlg(GetView().GetWindow(), aSet, pSh, TRUE);
+
+ if (aDlg.Execute() == RET_OK)
+ {
+ const SfxPoolItem* pItem;
+ const SfxItemSet* pOutSet = aDlg.GetOutputItemSet();
+ if(SFX_ITEM_SET == pOutSet->GetItemState(FN_DRAW_WRAP_DLG, FALSE, &pItem))
+ {
+ short nLayer = ((const SfxInt16Item*)pItem)->GetValue();
+ if (nLayer == 1)
+ pSh->SelectionToHeaven();
+ else
+ pSh->SelectionToHell();
+ }
+
+ pSh->SetObjAttr(*pOutSet);
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ case SID_ATTR_TRANSFORM:
+ {
+ if(pSdrView->HasMarkedObj())
+ {
+ const SfxItemSet* pArgs = rReq.GetArgs();
+
+ if(!pArgs)
+ {
+ const SdrMarkList& rMarkList = pSdrView->GetMarkList();
+ if( rMarkList.GetMark(0) != 0 )
+ {
+ SdrObject* pObj = rMarkList.GetMark(0)->GetObj();
+ SfxTabDialog *pDlg;
+ BOOL bCaption = FALSE;
+
+ // Erlaubte Verankerungen:
+ USHORT nAnchor = pSh->GetAnchorId();
+ USHORT nAllowedAnchors = SVX_OBJ_AT_CNTNT|SVX_OBJ_IN_CNTNT;
+ USHORT nHtmlMode = ::GetHtmlMode(pSh->GetView().GetDocShell());
+ if( !((HTMLMODE_ON & nHtmlMode) && (0 == (nHtmlMode & HTMLMODE_SOME_ABS_POS))) )
+ nAllowedAnchors |= SVX_OBJ_PAGE;
+ if ( pSh->IsFlyInFly() )
+ nAllowedAnchors |= SVX_OBJ_AT_FLY;
+
+ if (pObj->GetObjIdentifier() == OBJ_CAPTION )
+ bCaption = TRUE;
+
+ if (bCaption)
+ pDlg = new SvxCaptionTabDialog(NULL, pSdrView, nAllowedAnchors);
+ else
+ pDlg = new SvxTransformTabDialog(NULL, NULL, pSdrView, nAllowedAnchors);
+
+ SfxItemSet aNewAttr(pSdrView->GetGeoAttrFromMarked());
+
+ const USHORT* pRange = pDlg->GetInputRanges( *aNewAttr.GetPool() );
+ SfxItemSet aSet( *aNewAttr.GetPool(), pRange );
+ aSet.Put( aNewAttr, FALSE );
+
+ if (bCaption)
+ pSdrView->GetAttributes( aSet );
+
+ aSet.Put(SfxUInt16Item(SID_ATTR_TRANSFORM_ANCHOR, nAnchor));
+
+ SwFrmFmt* pFrmFmt = FindFrmFmt( pObj );
+ SwFmtVertOrient aVOrient((SwFmtVertOrient&)pFrmFmt->GetAttr(RES_VERT_ORIENT));
+ USHORT nOrient = aVOrient.GetVertOrient();
+ aSet.Put(SfxUInt16Item(SID_ATTR_TRANSFORM_VERT_ORIENT, nOrient));
+
+ pDlg->SetInputSet( &aSet );
+
+ if (pDlg->Execute() == RET_OK)
+ {
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+ pSh->StartAllAction();
+ pSdrView->SetGeoAttrToMarked(*pOutSet);
+
+ if (bCaption)
+ pSdrView->SetAttributes(*pOutSet);
+
+ BOOL bPosCorr =
+ SFX_ITEM_SET != pOutSet->GetItemState(
+ SID_ATTR_TRANSFORM_POS_X, FALSE ) &&
+ SFX_ITEM_SET != pOutSet->GetItemState(
+ SID_ATTR_TRANSFORM_POS_Y, FALSE );
+
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == pOutSet->GetItemState(
+ SID_ATTR_TRANSFORM_ANCHOR, FALSE, &pItem))
+ pSh->ChgAnchor(((const SfxUInt16Item*)pItem)
+ ->GetValue(), FALSE, bPosCorr );
+
+ if( SFX_ITEM_SET == pOutSet->GetItemState(
+ SID_ATTR_TRANSFORM_VERT_ORIENT, FALSE, &pItem))
+ {
+ aVOrient.SetVertOrient( (SwVertOrient)
+ ((const SfxUInt16Item*)pItem)->GetValue());
+ pFrmFmt->SetAttr( aVOrient );
+ }
+
+ rBind.InvalidateAll(FALSE);
+ pSh->EndAllAction();
+ }
+ delete pDlg;
+ }
+ }
+ }
+ }
+ break;
+
+ case SID_DELETE:
+ case FN_BACKSPACE:
+ if (pSh->IsObjSelected() && !pSdrView->IsTextEdit())
+ {
+ bDone = TRUE;
+
+ if( GetView().IsDrawRotate() )
+ {
+ pSh->SetDragMode( SDRDRAG_MOVE );
+ GetView().FlipDrawRotate();
+ }
+
+ pSh->SetModified();
+ pSh->DelSelectedObj();
+
+ if (rReq.IsAPI())
+ {
+ // Wenn Basic-Aufruf, dann zurck in die Textshell, da das
+ // Basic sonst keine Rckkehrm”glichkeit hat.
+ if (GetView().GetDrawFuncPtr())
+ {
+ GetView().GetDrawFuncPtr()->Deactivate();
+ GetView().SetDrawFuncPtr(NULL);
+ }
+ GetView().LeaveDrawCreate(); // In Selektionsmode wechseln
+ }
+
+ if (pSh->IsSelFrmMode())
+ {
+ pSh->LeaveSelFrmMode();
+ pSh->NoEdit();
+ }
+ bNotify = TRUE;
+ }
+ break;
+
+ case SID_GROUP:
+ if (pSh->IsObjSelected() > 1 && pSh->IsGroupAllowed())
+ {
+ pSh->GroupSelection(); // Objekt gruppieren
+ rBind.Invalidate(SID_UNGROUP);
+ }
+ break;
+
+ case SID_UNGROUP:
+ if (pSh->IsGroupSelected())
+ {
+ pSh->UnGroupSelection(); // Objektgruppierung aufheben
+ rBind.Invalidate(SID_GROUP);
+ }
+ break;
+
+ case SID_ENTER_GROUP:
+ if (pSh->IsGroupSelected())
+ {
+ pSdrView->EnterMarkedGroup();
+ rBind.InvalidateAll(FALSE);
+ }
+ break;
+
+ case SID_LEAVE_GROUP:
+ if (pSdrView->IsGroupEntered())
+ {
+ pSdrView->LeaveOneGroup();
+ rBind.Invalidate(SID_ENTER_GROUP);
+ rBind.Invalidate(SID_UNGROUP);
+ }
+ break;
+
+ case SID_OBJECT_ALIGN_LEFT:
+ case SID_OBJECT_ALIGN_CENTER:
+ case SID_OBJECT_ALIGN_RIGHT:
+ case SID_OBJECT_ALIGN_UP:
+ case SID_OBJECT_ALIGN_MIDDLE:
+ case SID_OBJECT_ALIGN_DOWN:
+ {
+ if ( bAlignPossible )
+ {
+ const SdrMarkList& rMarkList = pSdrView->GetMarkList();
+ if( rMarkList.GetMarkCount() == 1 && bAlignPossible )
+ { // Objekte nicht aneinander ausrichten
+
+ USHORT nAnchor = pSh->GetAnchorId();
+ if (nAnchor == FLY_IN_CNTNT)
+ {
+ int nVertOrient = -1;
+
+ switch (nSlotId)
+ {
+ case SID_OBJECT_ALIGN_UP:
+ nVertOrient = SVX_VERT_TOP;
+ break;
+ case SID_OBJECT_ALIGN_MIDDLE:
+ nVertOrient = SVX_VERT_CENTER;
+ break;
+ case SID_OBJECT_ALIGN_DOWN:
+ nVertOrient = SVX_VERT_BOTTOM;
+ break;
+ default:
+ break;
+ }
+ if (nVertOrient != -1)
+ {
+ pSh->StartAction();
+ SdrObject* pObj = rMarkList.GetMark(0)->GetObj();
+ SwFrmFmt* pFrmFmt = FindFrmFmt( pObj );
+ SwFmtVertOrient aVOrient((SwFmtVertOrient&)pFrmFmt->GetAttr(RES_VERT_ORIENT));
+ aVOrient.SetVertOrient((SwVertOrient)nVertOrient);
+ pFrmFmt->SetAttr(aVOrient);
+ pSh->EndAction();
+ }
+ break;
+ }
+ if (nAnchor == FLY_AT_CNTNT)
+ break; // Absatzverankerte Rahmen nicht ausrichten
+ }
+
+ pSh->StartAction();
+ switch (nSlotId)
+ {
+ case SID_OBJECT_ALIGN_LEFT:
+ pSdrView->AlignMarkedObjects(SDRHALIGN_LEFT, SDRVALIGN_NONE);
+ break;
+ case SID_OBJECT_ALIGN_CENTER:
+ pSdrView->AlignMarkedObjects(SDRHALIGN_CENTER, SDRVALIGN_NONE);
+ break;
+ case SID_OBJECT_ALIGN_RIGHT:
+ pSdrView->AlignMarkedObjects(SDRHALIGN_RIGHT, SDRVALIGN_NONE);
+ break;
+ case SID_OBJECT_ALIGN_UP:
+ pSdrView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_TOP);
+ break;
+ case SID_OBJECT_ALIGN_MIDDLE:
+ pSdrView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_CENTER);
+ break;
+ case SID_OBJECT_ALIGN_DOWN:
+ pSdrView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_BOTTOM);
+ break;
+ }
+ pSh->EndAction();
+ }
+ }
+ break;
+
+ case FN_FRAME_UP:
+ bTopParam = FALSE;
+ /* no break */
+ case SID_FRAME_TO_TOP:
+ pSh->SelectionToTop( bTopParam );
+ break;
+
+ case FN_FRAME_DOWN:
+ bBottomParam = FALSE;
+ /* no break */
+ case SID_FRAME_TO_BOTTOM:
+ pSh->SelectionToBottom( bBottomParam );
+ break;
+
+ default:
+ DBG_ASSERT(!this, "falscher Dispatcher");
+ return;
+ }
+ if(!bDone)
+ {
+ if(nSlotId >= SID_OBJECT_ALIGN_LEFT && nSlotId <= SID_OBJECT_ALIGN_DOWN)
+ rBind.Invalidate(SID_ATTR_LONG_LRSPACE);
+ if (pSdrView->GetModel()->IsChanged())
+ pSh->SetModified();
+ else if (bChanged)
+ pSdrView->GetModel()->SetChanged(TRUE);
+ // 40220: Nach dem Loeschen von DrawObjekten ueber die API GPF durch Selbstzerstoerung
+ if(bNotify)
+ GetView().AttrChangedNotify(pSh); // ggf Shellwechsel...
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwDrawBaseShell::GetState(SfxItemSet& rSet)
+{
+ SwWrtShell &rSh = GetShell();
+ SdrView* pSdrView = rSh.GetDrawViewWithValidMarkList();
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ BOOL bProtected = rSh.IsSelObjProtected(FLYPROTECT_CONTENT);
+
+ if (!bProtected) // Im Parent nachsehen
+ bProtected |= rSh.IsSelObjProtected( (FlyProtectType)(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) ) != 0;
+
+ while( nWhich )
+ {
+ switch( nWhich )
+ {
+ case FN_DRAW_WRAP_DLG:
+ case SID_ATTR_TRANSFORM:
+ case SID_FRAME_TO_TOP:
+ case SID_FRAME_TO_BOTTOM:
+ case FN_FRAME_UP:
+ case FN_FRAME_DOWN:
+ case SID_DELETE:
+ case FN_BACKSPACE:
+ if (bProtected)
+ rSet.DisableItem( nWhich );
+ break;
+ case SID_GROUP:
+ if ( rSh.IsObjSelected() < 2 || bProtected || !rSh.IsGroupAllowed() )
+ rSet.DisableItem( nWhich );
+ break;
+ case SID_UNGROUP:
+ if ( !rSh.IsGroupSelected() || bProtected )
+ rSet.DisableItem( nWhich );
+ break;
+ case SID_ENTER_GROUP:
+ if ( !rSh.IsGroupSelected() )
+ rSet.DisableItem( nWhich );
+ break;
+ case SID_LEAVE_GROUP:
+ if ( !pSdrView->IsGroupEntered() )
+ rSet.DisableItem( nWhich );
+ break;
+ case SID_OBJECT_ALIGN_LEFT:
+ case SID_OBJECT_ALIGN_CENTER:
+ case SID_OBJECT_ALIGN_RIGHT:
+ case SID_OBJECT_ALIGN_UP:
+ case SID_OBJECT_ALIGN_MIDDLE:
+ case SID_OBJECT_ALIGN_DOWN:
+ case SID_OBJECT_ALIGN:
+ if ( !rSh.IsAlignPossible() || bProtected )
+ rSet.DisableItem( nWhich );
+ else
+ {
+ rSet.Put(SfxAllEnumItem(nWhich, USHRT_MAX));
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+BOOL SwDrawBaseShell::Disable(SfxItemSet& rSet, USHORT nWhich)
+{
+ BOOL bDisable = GetShell().IsSelObjProtected(FLYPROTECT_CONTENT);
+
+ if (bDisable)
+ {
+ if (nWhich)
+ rSet.DisableItem( nWhich );
+ else
+ {
+ SfxWhichIter aIter( rSet );
+ nWhich = aIter.FirstWhich();
+ while (nWhich)
+ {
+ rSet.DisableItem( nWhich );
+ nWhich = aIter.NextWhich();
+ }
+ }
+ }
+
+ return bDisable;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.49 2000/09/18 16:06:03 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.48 2000/09/07 15:59:29 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.47 2000/08/10 16:34:18 jp
+ Bug #77310#: don't call a method with a zero pointer
+
+ Revision 1.46 2000/05/29 16:40:53 jp
+ Bug #69159#: delete selection reset the rotate mode
+
+ Revision 1.45 2000/05/26 07:21:32 os
+ old SW Basic API Slots removed
+
+ Revision 1.44 2000/05/10 11:53:01 os
+ Basic API removed
+
+ Revision 1.43 2000/02/11 14:57:25 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.42 1999/06/21 13:20:24 JP
+ Interface changes: SdrView::GetAttributes
+
+
+ Rev 1.41 21 Jun 1999 15:20:24 JP
+ Interface changes: SdrView::GetAttributes
+
+ Rev 1.40 07 Oct 1998 10:58:48 JP
+ Bug #57153#: in allen GetStates einer DrawShell die MarkListe aktualisieren
+
+ Rev 1.39 06 Jul 1998 18:10:14 OM
+ Images zum gruppieren
+
+ Rev 1.38 06 Jul 1998 16:09:54 OM
+ #52065# Gruppe verlassen bei Beendigung der DrawShell
+
+ Rev 1.37 03 Jul 1998 16:28:48 OM
+ #51420# Nur erlaubte Verankerungsarten im PositionsDialog
+
+ Rev 1.36 01 Jul 1998 12:13:44 OM
+ #51323# Zeichengebundene Objekte nicht gruppieren
+
+ Rev 1.35 16 Jun 1998 13:03:32 OM
+ Gruppenobjekte per Ctrl selektieren
+
+ Rev 1.34 12 Jun 1998 16:08:56 OM
+ Gruppierung betreten/verlassen
+
+ Rev 1.33 12 Jun 1998 13:34:02 OM
+ Wieder SID_OBJECT_SELECT statt SID_DRAW_SELECT
+
+ Rev 1.32 11 Jun 1998 16:13:14 OM
+ Gruppierungsmenue
+
+ Rev 1.31 10 Jun 1998 11:23:18 OM
+ Hell/Heaven nicht in FormShell
+
+ Rev 1.30 09 Jun 1998 15:36:00 OM
+ VC-Controls entfernt
+
+ Rev 1.29 22 May 1998 15:19:06 OS
+ wird ein DrawObject geloescht, darf nicht mehr auf this zugegriffen werden
+
+ Rev 1.28 15 May 1998 16:22:02 OM
+ #49467# Geschtzte Rahmen nicht bearbeiten
+
+ Rev 1.27 15 Apr 1998 15:32:24 OM
+ #49467 Objekte innerhalb von geschuetzten Rahmen duerfen nicht veraendert werden
+
+ Rev 1.26 29 Nov 1997 15:51:24 MA
+ includes
+
+ Rev 1.25 24 Nov 1997 09:46:58 MA
+ includes
+
+ Rev 1.24 20 Oct 1997 12:45:06 OM
+ Kein Legenden-Dialog bei URL-Buttons
+
+ Rev 1.23 20 Oct 1997 12:15:18 OM
+ #44751# Umankern auch bei Legendenobjekten
+
+ Rev 1.22 15 Oct 1997 13:00:06 AMA
+ Fix #44651#: Umankern mit gleichzeitiger Positionsaenderung
+
+ Rev 1.21 05 Sep 1997 12:04:22 MH
+ chg: header
+
+ Rev 1.20 02 Sep 1997 13:23:16 OS
+ includes
+
+ Rev 1.19 16 Aug 1997 12:59:54 OS
+ include
+
+ Rev 1.18 05 Aug 1997 16:23:12 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.17 01 Aug 1997 11:47:18 MH
+ chg: header
+
+ Rev 1.16 10 Jul 1997 17:27:44 MA
+ #41589# nicht die dontcare verlieren, damit auch GPF umpopeln
+
+ Rev 1.15 08 Jul 1997 12:16:26 OM
+ Draw-Selektionsmodi aufgeraeumt
+
+ Rev 1.14 08 Jul 1997 12:07:10 OM
+ Draw-Selektionsmodi aufgeraeumt
+
+ Rev 1.13 25 Jun 1997 13:34:18 OM
+ #40966# DrawBaseShell-Ptr wieder eingefuehrt
+
+ Rev 1.12 25 Jun 1997 09:10:18 MA
+ #40965#, SubShell abmelden
+
+ Rev 1.11 17 Jun 1997 15:52:52 MA
+ DrawTxtShell nicht von BaseShell ableiten + Opts
+
+ Rev 1.10 16 Jun 1997 15:31:56 OM
+ GPF behoben: Backspace wie Delete behandeln
+
+ Rev 1.9 27 May 1997 16:39:24 OM
+ Zeichengebundene Zeichenobjekte korrekt ausrichten
+
+ Rev 1.8 27 May 1997 12:52:46 OS
+ AttrChangedNotify erst am Ende des ::Execute rufen #40220#
+
+ Rev 1.7 30 Apr 1997 11:34:50 MA
+ #39469# erstmal GPF umpopelt
+
+ Rev 1.6 07 Apr 1997 17:43:34 MH
+ chg: header
+
+ Rev 1.5 02 Apr 1997 21:42:20 MH
+ chg: header SfxDialoge
+
+ Rev 1.4 19 Mar 1997 11:54:26 OM
+ #37302# Shellwechsel nach Basic-Delete ausloesen
+
+ Rev 1.3 27 Jan 1997 16:31:04 OS
+ HtmlMode entfernt
+
+ Rev 1.2 23 Jan 1997 10:45:52 OM
+ Neue Shells: Control- und DrawBaseShell
+
+ Rev 1.1 22 Jan 1997 14:40:32 OM
+ unnoetige Includes entfernt
+
+ Rev 1.0 22 Jan 1997 11:23:24 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/shells/drwtxtex.cxx b/sw/source/ui/shells/drwtxtex.cxx
new file mode 100644
index 000000000000..d1c8a3b76111
--- /dev/null
+++ b/sw/source/ui/shells/drwtxtex.cxx
@@ -0,0 +1,1021 @@
+/*************************************************************************
+ *
+ * $RCSfile: drwtxtex.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SVX_SPLTITEM_HXX //autogen
+#include <svx/spltitem.hxx>
+#endif
+#ifndef _SVX_ORPHITEM_HXX //autogen
+#include <svx/orphitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_WIDWITEM_HXX //autogen
+#include <svx/widwitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_KERNITEM_HXX //autogen
+#include <svx/kernitem.hxx>
+#endif
+#ifndef _SVX_ESCPITEM_HXX //autogen
+#include <svx/escpitem.hxx>
+#endif
+#ifndef _SVX_PARAITEM_HXX //autogen
+#include <svx/lspcitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_SHDDITEM_HXX //autogen
+#include <svx/shdditem.hxx>
+#endif
+#ifndef _SVX_HYZNITEM_HXX //autogen
+#include <svx/hyznitem.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 _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_CNTRITEM_HXX //autogen
+#include <svx/cntritem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVDOUTL_HXX
+#include <svx/svdoutl.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFX_SAVEOPT_HXX //autogen
+#include <sfx2/saveopt.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SVX_FLDITEM_HXX
+# ifndef ITEMID_FIELD
+# ifndef _MyEDITDATA_HXX //autogen
+# include <svx/editdata.hxx> // das include wird wg. EE_FEATURE_FIELD benoetigt
+# endif
+# define ITEMID_FIELD EE_FEATURE_FIELD /* wird fuer #include <flditem.hxx> benoetigt */
+# endif
+# ifndef _SVX_FLDITEM_HXX //autogen
+# include <svx/flditem.hxx>
+# endif
+#endif
+#ifndef _EDITSTAT_HXX //autogen
+#include <svx/editstat.hxx>
+#endif
+#ifndef _OUTLINER_HXX //autogen
+#include <svx/outliner.hxx>
+#endif
+#ifndef _SVX_HLNKITEM_HXX //autogen
+#include <svx/hlnkitem.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX
+#include <svx/htmlmode.hxx>
+#endif
+
+#ifndef _SVX_LANGITEM_HXX
+#include <svx/langitem.hxx>
+#endif
+#ifndef _UNO_LINGU_HXX
+#include <svx/unolingu.hxx>
+#endif
+
+#include "doc.hxx"
+
+#ifndef _COM_SUN_STAR_LINGUISTIC_XTHESAURUS_HPP_
+#include <com/sun/star/linguistic/XThesaurus.hpp>
+#endif
+
+#include "wview.hxx"
+#include "viewopt.hxx"
+#include "wrtsh.hxx"
+#include "uiparam.hxx"
+#include "uitool.hxx"
+#include "cmdid.h"
+#include "globals.hrc"
+#include "shells.hrc"
+#include "chrdlg.hxx"
+#include "pardlg.hxx"
+#include "dataex.hxx"
+#include "drwtxtsh.hxx"
+#include "swmodule.hxx"
+#include "initui.hxx" // fuer SpellPointer
+
+using namespace ::com::sun::star;
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawTextShell::Execute(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+
+ SfxItemSet aEditAttr(pOLV->GetAttribs());
+ SfxItemSet aNewAttr(*(aEditAttr.GetPool()), aEditAttr.GetRanges());
+
+ sal_uInt16 nSlot = rReq.GetSlot();
+ sal_uInt16 nWhich = GetPool().GetWhich(nSlot);
+ const SfxItemSet *pNewAttrs = rReq.GetArgs();
+
+ switch (nSlot)
+ {
+ case SID_ATTR_CHAR_FONT:
+ case SID_ATTR_CHAR_FONTHEIGHT:
+ case SID_ATTR_CHAR_COLOR:
+ {
+ if (!pNewAttrs)
+ rSh.GetView().GetViewFrame()->GetDispatcher()->Execute(SID_CHAR_DLG, sal_False);
+ else
+ {
+ switch (nSlot)
+ {
+ case SID_ATTR_CHAR_FONT:
+ aNewAttr.Put(((const SvxFontItem&)pNewAttrs->Get(nWhich)), EE_CHAR_FONTINFO);
+ break;
+ case SID_ATTR_CHAR_FONTHEIGHT:
+ aNewAttr.Put(((const SvxFontHeightItem&)pNewAttrs->Get(nWhich)), EE_CHAR_FONTHEIGHT);
+ break;
+ case SID_ATTR_CHAR_COLOR:
+ aNewAttr.Put(((const SvxColorItem&)pNewAttrs->Get(nWhich)), EE_CHAR_COLOR);
+ break;
+ }
+ }
+ }
+ break;
+
+ case SID_ATTR_CHAR_WEIGHT:
+ {
+ FontWeight eFW = ((const SvxWeightItem&)aEditAttr.Get(EE_CHAR_WEIGHT)).GetWeight();
+ aNewAttr.Put(SvxWeightItem(eFW == WEIGHT_NORMAL ? WEIGHT_BOLD : WEIGHT_NORMAL, EE_CHAR_WEIGHT));
+ }
+ break;
+
+ case SID_ATTR_CHAR_POSTURE:
+ {
+ FontItalic eFI = ((const SvxPostureItem&)aEditAttr.Get(EE_CHAR_ITALIC)).GetPosture();
+ aNewAttr.Put(SvxPostureItem(eFI == ITALIC_NORMAL ? ITALIC_NONE : ITALIC_NORMAL, EE_CHAR_ITALIC));
+ }
+ break;
+
+ case SID_ATTR_CHAR_UNDERLINE:
+ {
+ FontUnderline eFU = ((const SvxUnderlineItem&)aEditAttr.Get(EE_CHAR_UNDERLINE)).GetUnderline();
+ aNewAttr.Put(SvxUnderlineItem(eFU == UNDERLINE_SINGLE ? UNDERLINE_NONE : UNDERLINE_SINGLE, EE_CHAR_UNDERLINE));
+ }
+ break;
+
+ case SID_ATTR_CHAR_CONTOUR:
+ aNewAttr.Put((const SvxContourItem&)pNewAttrs->Get(nWhich), EE_CHAR_OUTLINE);
+ break;
+ case SID_ATTR_CHAR_SHADOWED:
+ aNewAttr.Put((const SvxShadowedItem&)pNewAttrs->Get(nWhich), EE_CHAR_SHADOW);
+ break;
+ case SID_ATTR_CHAR_STRIKEOUT:
+ aNewAttr.Put((const SvxCrossedOutItem&)pNewAttrs->Get(nWhich), 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 FN_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, EE_CHAR_ESCAPEMENT );
+ }
+ break;
+ case FN_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, EE_CHAR_ESCAPEMENT );
+ }
+ break;
+
+ case SID_CHAR_DLG:
+ {
+ const SfxItemSet* pArgs = rReq.GetArgs();
+
+ if( !pArgs )
+ {
+ SwView* pView = &GetView();
+ FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, pView));
+ SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, eMetric));
+ SfxItemSet aDlgAttr(GetPool(), EE_ITEMS_START, EE_ITEMS_END);
+
+ // util::Language gibts an der EditEngine nicht! Daher nicht im Set.
+
+ aDlgAttr.Put( aEditAttr );
+ aDlgAttr.Put( SvxKerningItem() );
+
+ SwCharDlg* pDlg = new SwCharDlg(pView->GetWindow(), *pView, aDlgAttr, 0, sal_True);
+
+ sal_uInt16 nResult = pDlg->Execute();
+
+ switch( nResult )
+ {
+ case RET_OK:
+ {
+ pArgs = rReq.GetArgs();
+ }
+ break;
+
+ default:
+ {
+ delete pDlg;
+ }
+ return; // Abbruch
+ }
+ delete( pDlg );
+ }
+ aNewAttr.Put(*pArgs);
+ }
+ break;
+
+ case SID_PARA_DLG:
+ {
+ const SfxItemSet* pArgs = rReq.GetArgs();
+
+ if (!pArgs)
+ {
+ SwView* pView = &GetView();
+ FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, pView));
+ SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, eMetric));
+ SfxItemSet aDlgAttr(GetPool(),
+ EE_ITEMS_START, EE_ITEMS_END,
+ SID_ATTR_PARA_HYPHENZONE, SID_ATTR_PARA_HYPHENZONE,
+ 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);
+
+ aDlgAttr.Put(aEditAttr);
+
+ // Die Werte sind erst einmal uebernommen worden, um den Dialog anzuzeigen.
+ // Muss natuerlich noch geaendert werden
+ // aDlgAttr.Put( SvxParaDlgLimitsItem( 567 * 50, 5670) );
+
+ aDlgAttr.Put( SvxHyphenZoneItem() );
+ aDlgAttr.Put( SvxFmtBreakItem() );
+ aDlgAttr.Put( SvxFmtSplitItem() );
+ aDlgAttr.Put( SvxWidowsItem() );
+ aDlgAttr.Put( SvxOrphansItem() );
+
+ SwParaDlg* pDlg = new SwParaDlg(GetView().GetWindow(), GetView(), aDlgAttr, DLG_STD, 0, sal_True);
+
+ sal_uInt16 nResult = pDlg->Execute();
+
+ switch( nResult )
+ {
+ case RET_OK:
+ {
+ pArgs = rReq.GetArgs();
+ }
+ break;
+
+ default:
+ {
+ delete pDlg;
+ }
+ return; // Abbruch
+ }
+ delete( pDlg );
+ }
+ aNewAttr.Put(*pArgs);
+ }
+ break;
+ case SID_AUTOSPELL_MARKOFF:
+ case SID_AUTOSPELL_CHECK:
+ {
+ pSdrView = rSh.GetDrawView();
+ pOutliner = pSdrView->GetTextEditOutliner();
+ sal_uInt32 nCtrl = pOutliner->GetControlWord();
+
+ sal_Bool bSet = ((const SfxBoolItem&)rReq.GetArgs()->Get(nSlot)).GetValue();
+ if(nSlot == SID_AUTOSPELL_MARKOFF)
+ {
+ if(bSet)
+ nCtrl |= EE_CNTRL_NOREDLINES;
+ else
+ nCtrl &= ~EE_CNTRL_NOREDLINES;
+ }
+ else
+ {
+ if(bSet)
+ nCtrl |= EE_CNTRL_ONLINESPELLING|EE_CNTRL_ALLOWBIGOBJS;
+ else
+ nCtrl &= ~EE_CNTRL_ONLINESPELLING;
+ }
+ pOutliner->SetControlWord(nCtrl);
+
+ SW_MOD()->ExecuteSlot(rReq);
+ }
+ break;
+ case SID_HYPERLINK_SETLINK:
+ {
+ const SfxPoolItem* pItem = 0;
+ if(pNewAttrs)
+ pNewAttrs->GetItemState(nSlot, sal_False, &pItem);
+
+ if(pItem)
+ {
+ const SvxHyperlinkItem& rHLinkItem = *(const SvxHyperlinkItem *)pItem;
+ SvxURLField aFld(rHLinkItem.GetURL(), rHLinkItem.GetName(), SVXURLFORMAT_APPDEFAULT);
+ aFld.SetTargetFrame(rHLinkItem.GetTargetFrame());
+
+ const SvxFieldItem* pFieldItem = pOLV->GetFieldAtSelection();
+
+ if (pFieldItem && pFieldItem->GetField()->ISA(SvxURLField))
+ {
+ // Feld selektieren, so dass es beim Insert geloescht wird
+ ESelection aSel = pOLV->GetSelection();
+ aSel.nEndPos++;
+ pOLV->SetSelection(aSel);
+ }
+ pOLV->InsertField(aFld);
+ }
+ }
+ break;
+
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
+ }
+ SetAttrToMarked(aNewAttr);
+
+ GetView().GetViewFrame()->GetBindings().InvalidateAll(sal_False);
+
+ if (IsTextEdit() && pOLV->GetOutliner()->IsModified())
+ rSh.SetModified();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawTextShell::GetState(SfxItemSet& rSet)
+{
+ if (!IsTextEdit()) // Sonst manchmal Absturz!
+ return;
+
+ SfxItemSet aEditAttr(pOLV->GetAttribs());
+ sal_uInt16 nWhich = 0;
+
+ const SfxPoolItem* pItem = 0;
+ SfxItemState eState = aEditAttr.GetItemState(EE_PARA_JUST, sal_False, &pItem);
+ if (eState == SFX_ITEM_DONTCARE || !pItem)
+ {
+ rSet.InvalidateItem( SID_ATTR_PARA_ADJUST_LEFT );
+ rSet.InvalidateItem( SID_ATTR_PARA_ADJUST_CENTER );
+ rSet.InvalidateItem( SID_ATTR_PARA_ADJUST_RIGHT );
+ rSet.InvalidateItem( SID_ATTR_PARA_ADJUST_BLOCK );
+ }
+ else
+ {
+ SvxAdjust eAdjust = ((const SvxAdjustItem*)pItem)->GetAdjust();
+ switch( eAdjust )
+ {
+ case SVX_ADJUST_LEFT: nWhich = SID_ATTR_PARA_ADJUST_LEFT; break;
+ case SVX_ADJUST_CENTER: nWhich = SID_ATTR_PARA_ADJUST_CENTER; break;
+ case SVX_ADJUST_RIGHT: nWhich = SID_ATTR_PARA_ADJUST_RIGHT; break;
+ case SVX_ADJUST_BLOCK: nWhich = SID_ATTR_PARA_ADJUST_BLOCK; break;
+ }
+ if( nWhich )
+ rSet.Put( SfxBoolItem( nWhich, sal_True ) );
+ }
+
+ eState = aEditAttr.GetItemState(EE_PARA_SBL, sal_False, &pItem);
+ if (eState == SFX_ITEM_DONTCARE || !pItem)
+ {
+ rSet.InvalidateItem( SID_ATTR_PARA_LINESPACE_10 );
+ rSet.InvalidateItem( SID_ATTR_PARA_LINESPACE_15 );
+ rSet.InvalidateItem( SID_ATTR_PARA_LINESPACE_20 );
+ }
+ else
+ {
+ const sal_Int8 nSpace = ((const SvxLineSpacingItem*)pItem)->GetPropLineSpace();
+ nWhich = 0;
+ switch( nSpace )
+ {
+ case 100:
+ nWhich = SID_ATTR_PARA_LINESPACE_10;
+ break;
+ case 150:
+ nWhich = SID_ATTR_PARA_LINESPACE_15;
+ break;
+ case 200:
+ nWhich = SID_ATTR_PARA_LINESPACE_20;
+ break;
+ }
+ if( nWhich )
+ rSet.Put( SfxBoolItem( nWhich, sal_True ) );
+ }
+
+ SvxEscapement eEsc = (SvxEscapement)((const SvxEscapementItem&)
+ aEditAttr.Get(EE_CHAR_ESCAPEMENT)).GetEnumValue();
+
+ if( eEsc == SVX_ESCAPEMENT_SUPERSCRIPT )
+ rSet.Put( SfxBoolItem( FN_SET_SUPER_SCRIPT, sal_True ) );
+ else if( eEsc == SVX_ESCAPEMENT_SUBSCRIPT )
+ rSet.Put( SfxBoolItem( FN_SET_SUB_SCRIPT, sal_True ) );
+
+
+ // disable "Thesaurus" if the language is not supported
+ const SfxPoolItem &rItem = GetShell().GetDoc()->GetDefault(RES_CHRATR_LANGUAGE);
+ LanguageType nLang = ((const SvxLanguageItem &) rItem).GetLanguage();
+ //
+ uno::Reference< linguistic::XThesaurus > xThes( ::GetThesaurus() );
+ if (!xThes.is() || nLang == LANGUAGE_NONE ||
+ !xThes->hasLocale( SvxCreateLocale( nLang ) ))
+ rSet.DisableItem( FN_THESAURUS_DLG );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawTextShell::GetDrawTxtCtrlState(SfxItemSet& rSet)
+{
+ if (!IsTextEdit()) // Sonst Absturz!
+ return;
+
+ SfxItemSet aEditAttr(pOLV->GetAttribs());
+
+ SfxWhichIter aIter(rSet);
+ sal_uInt16 nWhich = aIter.FirstWhich();
+
+ while(nWhich)
+ {
+ switch(GetPool().GetSlotId(nWhich))
+ {
+ case SID_ATTR_CHAR_FONT:
+ rSet.Put(aEditAttr.Get(EE_CHAR_FONTINFO, sal_True), nWhich);
+ break;
+ case SID_ATTR_CHAR_FONTHEIGHT:
+ rSet.Put(aEditAttr.Get(EE_CHAR_FONTHEIGHT, sal_True), nWhich);
+ break;
+ case SID_ATTR_CHAR_COLOR:
+ rSet.Put(aEditAttr.Get(EE_CHAR_COLOR, sal_True), nWhich);
+ break;
+ case SID_ATTR_CHAR_WEIGHT:
+ rSet.Put(aEditAttr.Get(EE_CHAR_WEIGHT, sal_True), nWhich);
+ break;
+ case SID_ATTR_CHAR_POSTURE:
+ rSet.Put(aEditAttr.Get(EE_CHAR_ITALIC, sal_True), nWhich);
+ break;
+ case SID_ATTR_CHAR_UNDERLINE:
+ rSet.Put(aEditAttr.Get(EE_CHAR_UNDERLINE, sal_True), nWhich);
+ break;
+ case SID_ATTR_CHAR_CONTOUR:
+ rSet.Put(aEditAttr.Get(EE_CHAR_OUTLINE, sal_True), nWhich);
+ break;
+ case SID_ATTR_CHAR_SHADOWED:
+ rSet.Put(aEditAttr.Get(EE_CHAR_SHADOW, sal_True), nWhich);
+ break;
+ case SID_ATTR_CHAR_STRIKEOUT:
+ rSet.Put(aEditAttr.Get(EE_CHAR_STRIKEOUT, sal_True), nWhich);
+ break;
+ case SID_AUTOSPELL_MARKOFF:
+ case SID_AUTOSPELL_CHECK:
+ const SfxPoolItem* pState = SW_MOD()->GetSlotState(nWhich);
+ if (pState)
+ rSet.Put(SfxBoolItem(nWhich, ((const SfxBoolItem*)pState)->GetValue()));
+ else
+ rSet.DisableItem( nWhich );
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawTextShell::ExecClpbrd(SfxRequest &rReq)
+{
+ if (!IsTextEdit()) // Sonst Absturz!
+ return;
+
+ sal_uInt16 nId = rReq.GetSlot();
+ switch( nId )
+ {
+ case SID_CUT:
+ pOLV->Cut();
+ return;
+
+ case SID_COPY:
+ pOLV->Copy();
+ return;
+
+ case SID_PASTE:
+ pOLV->PasteSpecial();
+ break;
+
+ default:
+ DBG_ERROR("falscher Dispatcher");
+ return;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: ClipBoard-Status
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawTextShell::StateClpbrd(SfxItemSet &rSet)
+{
+ if (!IsTextEdit()) // Sonst Absturz!
+ return;
+
+ ESelection aSel(pOLV->GetSelection());
+ const sal_Bool bCopy = (aSel.nStartPara != aSel.nEndPara) || (aSel.nStartPos != aSel.nEndPos);
+
+
+ SfxWhichIter aIter(rSet);
+ sal_uInt16 nWhich = aIter.FirstWhich();
+
+ while(nWhich)
+ {
+ switch(nWhich)
+ {
+ case SID_CUT:
+ case SID_COPY:
+ if( !bCopy )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_PASTE:
+ {
+ //!!OS: das muss ein if/else bleiben, weil BLC das
+ // nicht anders versteht
+ SwModule* pMod = SW_MOD();
+ SvDataObjectRef xObj;
+ if( pMod->pClipboard )
+ xObj = pMod->pClipboard;
+ else
+ xObj = SvDataObject::PasteClipboard();
+
+ if( !xObj.Is() ||
+ !SwDataExchange::IsPaste( GetShell(), *xObj ) )
+ rSet.DisableItem( SID_PASTE );
+ }
+ break;
+
+ case FN_PASTESPECIAL:
+ rSet.DisableItem( FN_PASTESPECIAL );
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Hyperlink-Status
+ --------------------------------------------------------------------*/
+
+void SwDrawTextShell::StateInsert(SfxItemSet &rSet)
+{
+ if (!IsTextEdit()) // Sonst Absturz!
+ return;
+
+ SfxWhichIter aIter(rSet);
+ sal_uInt16 nWhich = aIter.FirstWhich();
+
+ while(nWhich)
+ {
+ switch(nWhich)
+ {
+ case SID_HYPERLINK_GETLINK:
+ {
+ SvxHyperlinkItem aHLinkItem;
+ aHLinkItem.SetInsertMode(HLINK_FIELD);
+
+ const SvxFieldItem* pFieldItem = pOLV->GetFieldAtSelection();
+
+ if (pFieldItem)
+ {
+ const SvxFieldData* pField = pFieldItem->GetField();
+
+ if (pField->ISA(SvxURLField))
+ {
+ aHLinkItem.SetName(((const SvxURLField*) pField)->GetRepresentation());
+ aHLinkItem.SetURL(((const SvxURLField*) pField)->GetURL());
+ aHLinkItem.SetTargetFrame(((const SvxURLField*) pField)->GetTargetFrame());
+ }
+ }
+ else
+ {
+ String sSel(pOLV->GetSelected());
+ sSel.Erase(255);
+ sSel.EraseTrailingChars();
+ aHLinkItem.SetName(sSel);
+ }
+
+ sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
+ aHLinkItem.SetInsertMode((SvxLinkInsertMode)(aHLinkItem.GetInsertMode() |
+ ((nHtmlMode & HTMLMODE_ON) != 0 ? HLINK_HTMLMODE : 0)));
+
+ rSet.Put(aHLinkItem);
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.69 2000/09/18 16:06:03 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.68 2000/09/07 15:59:29 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.67 2000/05/26 07:21:32 os
+ old SW Basic API Slots removed
+
+ Revision 1.66 2000/04/18 14:58:23 os
+ UNICODE
+
+ Revision 1.65 2000/03/23 07:49:14 os
+ UNO III
+
+ Revision 1.64 2000/02/16 21:00:17 tl
+ #72219# Locale Umstellung
+
+ Revision 1.63 2000/02/11 14:57:32 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.62 2000/01/21 13:34:45 tl
+ #70503# GetState method added for FN_THESAURUS_DLG
+
+ Revision 1.61 1999/11/30 09:44:05 jp
+ StateClpbrd: pObj contains sometimes no Pointer
+
+ Revision 1.60 1999/09/24 14:38:32 os
+ hlnkitem.hxx now in SVX
+
+ Revision 1.59 1999/08/04 09:09:50 JP
+ have to change: Outliner -> SdrOutlines
+
+
+ Rev 1.58 04 Aug 1999 11:09:50 JP
+ have to change: Outliner -> SdrOutlines
+
+ Rev 1.57 18 Mar 1999 14:41:18 OS
+ #61169# #61489# Masseinheiten fuer Text u. HTML am Module setzen, nicht an der App
+
+ Rev 1.56 04 Nov 1998 17:29:54 OM
+ #58904# Assertion umpropelt
+
+ Rev 1.55 08 Sep 1998 17:03:08 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.54 25 Jun 1998 14:11:18 JP
+ SvDataObject -> SotObject
+
+ Rev 1.53 08 Apr 1998 13:47:22 OM
+ #42505 Keine util::URL-Buttons in Html-Dokumenten
+
+ Rev 1.52 12 Mar 1998 11:28:12 OM
+ #48017# GPF entfernt
+
+ Rev 1.51 05 Feb 1998 14:48:14 OS
+ Absatzdialog enthaelt keinen TableMode
+
+ Rev 1.50 29 Nov 1997 15:52:12 MA
+ includes
+
+ Rev 1.49 24 Nov 1997 09:47:00 MA
+ includes
+
+ Rev 1.48 03 Nov 1997 13:55:46 MA
+ precomp entfernt
+
+ Rev 1.47 17 Sep 1997 13:09:18 OM
+ Editierbare Links in DrawText-Objekten
+
+ Rev 1.46 01 Sep 1997 13:24:00 OS
+ DLL-Umstellung
+
+ Rev 1.45 11 Aug 1997 08:50:18 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.44 08 Aug 1997 17:28:46 OM
+ Headerfile-Umstellung
+
+ Rev 1.43 07 Jul 1997 12:28:14 OM
+ #41258# Execute: Nur benoetigte Items putten
+
+ Rev 1.42 17 Jun 1997 16:00:00 MA
+ DrawTxtShell nicht von BaseShell ableiten + Opts
+
+ Rev 1.41 04 Jun 1997 11:24:06 TRI
+ svwin.h nur unter WIN oder WNT includen
+
+ Rev 1.40 04 Jun 1997 09:50:08 NF
+ Includes...
+
+ Rev 1.39 28 May 1997 15:06:30 OM
+ #40067# DontCare-State fuer Absatzausrichtung beruecksichtigen
+
+ Rev 1.38 16 May 1997 17:16:40 OM
+ Links aus Hyperlinkleiste in DrawText-Objekte einfuegen
+
+ Rev 1.37 19 Mar 1997 12:48:42 AMA
+ Fix #37035: Speller am Outliner setzen.
+
+ Rev 1.36 23 Feb 1997 18:20:08 AMA
+ Fix #36843#: GPF in der EditEngine durch nicht gesetzten SpellChecker
+
+ Rev 1.35 22 Jan 1997 18:42:26 MH
+ add: include
+
+ Rev 1.34 16 Jan 1997 16:36:52 OS
+ Metric vor Dialogaufruf an der App setzen
+
+ Rev 1.33 14 Jan 1997 09:31:34 TRI
+ includes
+
+ Rev 1.32 16 Dec 1996 19:10:40 HJS
+ includes
+
+ Rev 1.31 13 Dec 1996 16:38:22 OS
+ Autospell fuer aktives DrawTextObject
+
+ Rev 1.30 22 Nov 1996 14:53:32 OS
+ FN_SET_JUSTIFY_PARA -> SID_ATTR_PARA_ADJUST_BLOCK
+
+ Rev 1.29 28 Aug 1996 15:55:10 OS
+ includes
+
+ Rev 1.28 22 Mar 1996 15:14:32 TRI
+ sfxiiter.hxx included
+
+ Rev 1.27 05 Feb 1996 17:28:42 OM
+ Parent-Win an Par/Chardlg uebergeben
+
+ Rev 1.26 12 Dec 1995 17:43:58 OM
+ Text-Attribute richtig setzen
+
+ Rev 1.25 11 Dec 1995 18:21:26 OM
+ Neuer DrawText Dialog
+
+ Rev 1.24 08 Dec 1995 18:10:28 OM
+ CharAttr-Stati richtig updaten
+
+ Rev 1.23 07 Dec 1995 18:25:36 OM
+ Neu: GetDrawTxtCtrlState
+
+ Rev 1.22 24 Nov 1995 16:59:34 OM
+ PCH->PRECOMPILED
+
+ Rev 1.21 10 Nov 1995 18:24:24 OM
+ Init-Fkt optimiert/repariert
+
+ Rev 1.20 09 Nov 1995 18:00:12 OS
+ Id fuer FormatPage/CharDlg auf SID_ umgestellt
+
+ Rev 1.19 31 Oct 1995 18:40:42 OM
+ GetFrameWindow entfernt
+
+ Rev 1.18 17 Oct 1995 19:27:14 OM
+ Clipboard fuer Drawtext
+
+ Rev 1.17 14 Oct 1995 17:58:10 OM
+ Prophylaktische Absturzvorsorge...
+
+ Rev 1.16 14 Oct 1995 17:33:44 OM
+ Bug 20805: DrawTextShell komplettiert
+
+ Rev 1.15 05 Oct 1995 18:40:44 OM
+ Aufgeraeumt
+
+ Rev 1.14 04 Oct 1995 18:43:10 OM
+ Text-Reset angefangen
+
+ Rev 1.13 13 Sep 1995 17:28:06 OM
+ Modified fuer Drawtext-Objekte geaendert
+
+ Rev 1.12 28 Aug 1995 19:03:34 MA
+ Renovierung: IDL, Shells, Textshell-Doktrin aufgegeben
+
+ Rev 1.11 21 Aug 1995 21:00:00 MA
+ chg: svxitems-header entfernt
+
+ Rev 1.10 16 Aug 1995 17:50:12 MA
+ Riesenheader dialogs entfernt.
+
+ Rev 1.9 09 Aug 1995 18:39:10 OM
+ Statusmethode abgesichert
+
+ Rev 1.8 07 Aug 1995 18:41:54 OM
+ Zeichendialog richtig attributiert
+
+ Rev 1.7 06 Aug 1995 18:27:32 OM
+ DrawTextShell-Popup
+
+ Rev 1.6 23 Jul 1995 17:04:24 OS
+ Zeilenabstand kann nur 100/150/200 sein
+
+ Rev 1.5 14 Jul 1995 18:16:40 OM
+ Farbcontroller rausgeschmissen
+
+ Rev 1.4 04 May 1995 10:10:04 JP
+ Items Optimierung
+
+ Rev 1.3 03 May 1995 23:32:52 ER
+ add: editdata.hxx
+
+ Rev 1.2 28 Mar 1995 20:07:58 ER
+ header-adder
+
+ Rev 1.1 05 Mar 1995 20:44:44 OM
+ Linienabstand, drawing::Alignment, ...
+
+ Rev 1.0 05 Mar 1995 16:36:00 OM
+ Textfarbe setzen
+
+ Rev 1.6 04 Mar 1995 19:20:44 OM
+ Aenderungen fuer 241
+
+ Rev 1.5 04 Mar 1995 19:03:18 OM
+ Execute und State fuer Texthintergrund
+
+ Rev 1.4 03 Mar 1995 18:16:06 OM
+ virtual GetPool implementiert
+
+ Rev 1.3 03 Mar 1995 02:07:32 OM
+ State-Methode fuer Font-Controller entfernt
+
+ Rev 1.2 02 Mar 1995 19:19:26 OM
+ Font-Controller eingebunden
+
+ Rev 1.1 01 Mar 1995 19:07:18 OM
+ DrawTextShell 2.Runde
+
+ Rev 1.0 28 Feb 1995 19:45:08 OM
+ Initial revision.
+
+*************************************************************************/
+
+
+
+
diff --git a/sw/source/ui/shells/drwtxtsh.cxx b/sw/source/ui/shells/drwtxtsh.cxx
new file mode 100644
index 000000000000..bdddfa3ca019
--- /dev/null
+++ b/sw/source/ui/shells/drwtxtsh.cxx
@@ -0,0 +1,815 @@
+/*************************************************************************
+ *
+ * $RCSfile: drwtxtsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+
+#if defined( WIN ) || defined( WNT )
+//#include <svwin.h>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SVX_CHARMAP_HXX //autogen
+#include <svx/charmap.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SVDOTEXT_HXX //autogen
+#include <svx/svdotext.hxx>
+#endif
+#ifndef _SVX_XFTSFIT_HXX //autogen
+#include <svx/xftsfit.hxx>
+#endif
+#ifndef _EEITEM_HXX //autogen
+#include <svx/eeitem.hxx>
+#endif
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+#ifndef _SVX_TEXTANIM_HXX //autogen
+#include <svx/textanim.hxx>
+#endif
+#ifndef _XDEF_HXX //autogen
+#include <xdef.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SVX_XFTSFIT_HXX //autogen
+#include <svx/xftsfit.hxx>
+#endif
+#ifndef _SVX_FONTWORK_HXX //autogen
+#include <svx/fontwork.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _OUTLINER_HXX //autogen
+#include <svx/outliner.hxx>
+#endif
+#ifndef _EDITSTAT_HXX //autogen
+#include <svx/editstat.hxx>
+#endif
+#ifndef _SVDOUTL_HXX
+#include <svx/svdoutl.hxx>
+#endif
+
+
+#include "swtypes.hxx"
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "uiparam.hxx"
+#include "viewopt.hxx"
+#include "cmdid.h"
+#include "globals.hrc"
+#include "helpid.h"
+#include "shells.hrc"
+#include "initui.hxx" // fuer SpellPointer
+#include "drwtxtsh.hxx"
+#include "swundo.hxx"
+
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#define SwDrawTextShell
+#include "itemdef.hxx"
+#include "swslots.hxx"
+#include "popup.hrc"
+
+SFX_IMPL_INTERFACE(SwDrawTextShell, SfxShell, SW_RES(STR_SHELLNAME_DRAW_TEXT))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_DRWTXT_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_DRAW_TEXT_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_DRWTXT));
+ SFX_CHILDWINDOW_REGISTRATION(SvxFontWorkChildWindow::GetChildWindowId());
+}
+
+TYPEINIT1(SwDrawTextShell,SfxShell)
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawTextShell::Init()
+{
+ SwWrtShell &rSh = GetShell();
+ pSdrView = rSh.GetDrawView();
+ pOutliner = pSdrView->GetTextEditOutliner();
+ pOLV = pSdrView->GetTextEditOutlinerView();
+ ULONG nCtrl = pOutliner->GetControlWord();
+ nCtrl |= EE_CNTRL_AUTOCORRECT;
+
+ SetUndoManager(&pOutliner->GetUndoManager());
+
+ // jetzt versuchen wir mal ein AutoSpell
+
+ const SwViewOption* pVOpt = rSh.GetViewOptions();
+ if(pVOpt->IsOnlineSpell())
+ {
+ nCtrl |= EE_CNTRL_ONLINESPELLING|EE_CNTRL_ALLOWBIGOBJS;
+ if(pVOpt->IsHideSpell())
+ nCtrl |= EE_CNTRL_NOREDLINES;
+ }
+ else
+ nCtrl &= ~(EE_CNTRL_ONLINESPELLING|EE_CNTRL_NOREDLINES);
+
+ pOutliner->SetControlWord(nCtrl);
+ pOLV->ShowCursor();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwDrawTextShell::SwDrawTextShell(SwView &rV) :
+ SfxShell(&rV),
+ rView(rV)
+{
+ SwWrtShell &rSh = GetShell();
+ SetPool(rSh.GetAttrPool().GetSecondaryPool());
+
+ Init();
+
+ rSh.NoEdit(TRUE);
+ SetName(String::CreateFromAscii("ObjectText"));
+ SetHelpId(SW_DRWTXTSHELL);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+__EXPORT SwDrawTextShell::~SwDrawTextShell()
+{
+ if ( GetView().GetCurShell() == this )
+ rView.ResetSubShell();
+
+ //MA 13. Nov. 96: Das kommt durchaus vor #33141#:
+ //(doppel-)Klick von einem Texteditmode in ein anderes Objekt, zwischendurch
+ //wird eine andere (Draw-)Shell gepusht, die alte aber noch nicht deletet.
+ //Dann wird vor dem Flush wieder ein DrawTextShell gepusht und der Mode ist
+ //eingeschaltet. In diesem Moment wird der Dispatcher geflusht und die alte
+ //DrawTextShell zerstoert.
+// ASSERT( !pSdrView->IsTextEdit(), "TextEdit in DTor DrwTxtSh?" );
+// if (pSdrView->IsTextEdit())
+// GetShell().EndTextEdit(); // Danebengeklickt, Ende mit Edit
+
+// GetShell().Edit();
+}
+
+SwWrtShell& SwDrawTextShell::GetShell()
+{
+ return rView.GetWrtShell();
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Slots mit dieser Statusmethode disablen
+ --------------------------------------------------------------------*/
+
+void SwDrawTextShell::StateDisableItems( SfxItemSet &rSet )
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+
+ while (nWhich)
+ {
+ rSet.DisableItem( nWhich );
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+/*************************************************************************
+|*
+|* Attribute setzen
+|*
+\************************************************************************/
+
+
+
+void SwDrawTextShell::SetAttrToMarked(const SfxItemSet& rAttr)
+{
+ Rectangle aNullRect;
+ Rectangle aOutRect = pOLV->GetOutputArea();
+
+ if (aNullRect != aOutRect)
+ {
+ GetShell().GetDrawView()->SetAttributes(rAttr);
+// Init();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+BOOL SwDrawTextShell::IsTextEdit()
+{
+ if (!pOutliner || !pOLV)
+ Init();
+
+ if (!pOutliner || !pOLV)
+ return (FALSE);
+
+ return (pSdrView->IsTextEdit());
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawTextShell::ExecFontWork(SfxRequest& rReq)
+{
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ if ( rReq.GetArgs() )
+ {
+ pVFrame->SetChildWindow(SvxFontWorkChildWindow::GetChildWindowId(),
+ ((const SfxBoolItem&) (rReq.GetArgs()->
+ Get(SID_FONTWORK))).GetValue());
+ }
+ else
+ pVFrame->ToggleChildWindow(SvxFontWorkChildWindow::GetChildWindowId());
+
+ pVFrame->GetBindings().Invalidate(SID_FONTWORK);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawTextShell::StateFontWork(SfxItemSet& rSet)
+{
+ const USHORT nId = SvxFontWorkChildWindow::GetChildWindowId();
+ rSet.Put(SfxBoolItem(SID_FONTWORK, GetView().GetViewFrame()->HasChildWindow(nId)));
+}
+
+/*************************************************************************
+|*
+|* SfxRequests fuer FontWork bearbeiten
+|*
+\************************************************************************/
+
+
+
+void SwDrawTextShell::ExecFormText(SfxRequest& rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ SdrView* pDrView = rSh.GetDrawView();
+
+ const SdrMarkList& rMarkList = pDrView->GetMarkList();
+
+ if ( rMarkList.GetMarkCount() == 1 && rReq.GetArgs() )
+ {
+ const SfxItemSet& rSet = *rReq.GetArgs();
+ const SfxPoolItem* pItem;
+
+ if ( pDrView->IsTextEdit() )
+ {
+ pDrView->EndTextEdit( TRUE );
+ GetView().AttrChangedNotify(&rSh);
+ }
+
+ if ( rSet.GetItemState(XATTR_FORMTXTSTDFORM, TRUE, &pItem) ==
+ SFX_ITEM_SET &&
+ ((const XFormTextStdFormItem*) pItem)->GetValue() != XFTFORM_NONE )
+ {
+
+ const USHORT nId = SvxFontWorkChildWindow::GetChildWindowId();
+
+ SvxFontWorkDialog* pDlg = (SvxFontWorkDialog*)(GetView().GetViewFrame()->
+ GetChildWindow(nId)->GetWindow());
+
+ pDlg->CreateStdFormObj(*pDrView, *pDrView->GetPageViewPvNum(0),
+ rSet, *rMarkList.GetMark(0)->GetObj(),
+ ((const XFormTextStdFormItem*) pItem)->
+ GetValue());
+ }
+ else
+ pDrView->SetAttributes(rSet);
+ }
+
+}
+
+/*************************************************************************
+|*
+|* Statuswerte fuer FontWork zurueckgeben
+|*
+\************************************************************************/
+
+
+
+void SwDrawTextShell::GetFormTextState(SfxItemSet& rSet)
+{
+ SwWrtShell &rSh = GetShell();
+ SdrView* pDrView = rSh.GetDrawView();
+ const SdrMarkList& rMarkList = pDrView->GetMarkList();
+ const SdrObject* pObj = NULL;
+ SvxFontWorkDialog* pDlg = NULL;
+
+ const USHORT nId = SvxFontWorkChildWindow::GetChildWindowId();
+
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ if ( pVFrame->HasChildWindow(nId) )
+ pDlg = (SvxFontWorkDialog*)(pVFrame->GetChildWindow(nId)->GetWindow());
+
+ if ( rMarkList.GetMarkCount() == 1 )
+ pObj = rMarkList.GetMark(0)->GetObj();
+
+ if ( pObj == NULL || !pObj->ISA(SdrTextObj) ||
+ !((SdrTextObj*) pObj)->HasText() )
+ {
+#define XATTR_ANZ 12
+ static const USHORT nXAttr[ XATTR_ANZ ] =
+ { XATTR_FORMTXTSTYLE, XATTR_FORMTXTADJUST, XATTR_FORMTXTDISTANCE,
+ XATTR_FORMTXTSTART, XATTR_FORMTXTMIRROR, XATTR_FORMTXTSTDFORM,
+ XATTR_FORMTXTHIDEFORM, XATTR_FORMTXTOUTLINE, XATTR_FORMTXTSHADOW,
+ XATTR_FORMTXTSHDWCOLOR, XATTR_FORMTXTSHDWXVAL, XATTR_FORMTXTSHDWYVAL
+ };
+ for( USHORT i = 0; i < XATTR_ANZ; )
+ rSet.DisableItem( nXAttr[ i++ ] );
+ }
+ else
+ {
+ if ( pDlg )
+ pDlg->SetColorTable(OFF_APP()->GetStdColorTable());
+
+ pDrView->GetAttributes( rSet );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawTextShell::ExecDrawLingu(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+
+ if( rSh.GetDrawView()->GetMarkList().GetMarkCount() )
+ {
+ LanguageType nLang = ((const SvxLanguageItem&)rSh.
+ GetDefault(RES_CHRATR_LANGUAGE)).GetLanguage();
+ switch(rReq.GetSlot())
+ {
+ case FN_THESAURUS_DLG:
+ {
+ pOLV->StartThesaurus( nLang );
+ break;
+ }
+ case FN_SPELLING_DLG:
+ {
+ pOLV->StartSpeller( nLang );
+ break;
+ }
+ default:
+ ASSERT(!this, "unexpected slot-id");
+ return;
+ }
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawTextShell::ExecDraw(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ pSdrView = rSh.GetDrawView();
+
+
+ switch (rReq.GetSlot())
+ {
+ case FN_INSERT_SYMBOL: // Sonderzeichen einfuegen
+ InsertSymbol();
+ break;
+
+ case SID_SELECTALL:
+ {
+ ULONG nParaCount = pOutliner->GetParagraphCount();
+ if (nParaCount > 0)
+ pOLV->SelectRange(0L, USHORT(nParaCount) );
+ }
+ break;
+
+ case FN_FORMAT_RESET: // Harte Textattributierung l”schen
+ {
+ SfxItemSet aEmptyAttr(GetPool(), EE_ITEMS_START, EE_ITEMS_END);
+ pSdrView->SetAttributes(aEmptyAttr, TRUE);
+ }
+ break;
+
+ case FN_ESCAPE:
+ if (pSdrView->IsTextEdit())
+ {
+ // Shellwechsel!
+ rSh.EndTextEdit();
+ rSh.GetView().AttrChangedNotify(&rSh);
+ return;
+ }
+ break;
+
+ case FN_DRAWTEXT_ATTR_DLG:
+ {
+ SfxItemSet aNewAttr( pSdrView->GetModel()->GetItemPool() );
+ pSdrView->GetAttributes( aNewAttr );
+ SvxTextTabDialog* pDlg = new SvxTextTabDialog(
+ &(GetView().GetViewFrame()->GetWindow()),
+ &aNewAttr, pSdrView );
+ USHORT nResult = pDlg->Execute();
+
+ if (nResult == RET_OK)
+ {
+ if (pSdrView->HasMarkedObj())
+ pSdrView->SetAttributes(*pDlg->GetOutputItemSet());
+ }
+ delete( pDlg );
+ }
+ break;
+
+ default:
+ ASSERT(!this, "unexpected slot-id");
+ return;
+ }
+
+ GetView().GetViewFrame()->GetBindings().InvalidateAll(FALSE);
+
+ if (IsTextEdit() && pOLV->GetOutliner()->IsModified())
+ rSh.SetModified();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Undo ausfuehren
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawTextShell::ExecUndo(SfxRequest &rReq)
+{
+ if ( !IsTextEdit() )
+ return;
+
+ SfxViewFrame *pSfxViewFrame = GetView().GetViewFrame();
+ pSfxViewFrame->ExecuteSlot(rReq, pSfxViewFrame->GetInterface());
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Zustand Undo
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawTextShell::StateUndo(SfxItemSet &rSet)
+{
+ if ( !IsTextEdit() )
+ return;
+
+ SfxViewFrame *pSfxViewFrame = GetView().GetViewFrame();
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while(nWhich)
+ {
+ pSfxViewFrame->GetSlotState(nWhich, pSfxViewFrame->GetInterface(), &rSet );
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Sonderzeichen einfuegen (siehe SDraw: FUBULLET.CXX)
+ --------------------------------------------------------------------*/
+
+
+
+void SwDrawTextShell::InsertSymbol()
+{
+ SvxCharacterMap* pDlg = new SvxCharacterMap( NULL, FALSE );
+
+ // Wenn Zeichen selektiert ist kann es angezeigt werden
+ // pDLg->SetFont( );
+ // pDlg->SetChar( );
+ USHORT nResult = pDlg->Execute();
+
+ //char c;
+ String s;
+
+ Font aFont;
+
+ if( nResult == RET_OK )
+ {
+ aFont = pDlg->GetCharFont();
+ s = pDlg->GetCharacters();
+ }
+ delete( pDlg );
+
+ if( nResult == RET_OK )
+ {
+ // Sonderzeichen einfuegen
+ if (pOLV)
+ {
+ // nicht flackern
+ pOLV->HideCursor();
+ pOutliner->SetUpdateMode(FALSE);
+
+ SfxItemSet aOldSet(pOLV->GetAttribs());
+ SvxFontItem aOldFontItem((const SvxFontItem&)aOldSet.Get(EE_CHAR_FONTINFO));
+
+ // String einfuegen
+ pOLV->InsertText(s, TRUE);
+
+ // attributieren (Font setzen)
+ SfxItemSet aSet(pOutliner->GetEmptyItemSet());
+ SvxFontItem aFontItem (aFont.GetFamily(), aFont.GetName(),
+ aFont.GetStyleName(), aFont.GetPitch(),
+ aFont.GetCharSet(),
+ EE_CHAR_FONTINFO);
+ aSet.Put(aFontItem);
+ pOLV->SetAttribs(aSet);
+
+ // Selektion loeschen
+ ESelection aSel(pOLV->GetSelection());
+ aSel.nStartPara = aSel.nEndPara;
+ aSel.nStartPos = aSel.nEndPos;
+ pOLV->SetSelection(aSel);
+
+ // Alten Font restaurieren
+ aSet.Put(aOldFontItem);
+ pOLV->SetAttribs(aSet);
+
+ // ab jetzt wieder anzeigen
+ pOutliner->SetUpdateMode(TRUE);
+ pOLV->ShowCursor();
+ }
+ }
+}
+
+/*************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.113 2000/09/18 16:06:03 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.112 2000/09/08 08:12:51 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.111 2000/09/07 15:59:29 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.110 2000/05/26 07:21:32 os
+ old SW Basic API Slots removed
+
+ Revision 1.109 2000/05/10 11:53:01 os
+ Basic API removed
+
+ Revision 1.108 2000/04/18 14:58:23 os
+ UNICODE
+
+ Revision 1.107 1999/08/04 09:09:52 JP
+ have to change: Outliner -> SdrOutlines
+
+
+ Rev 1.106 04 Aug 1999 11:09:52 JP
+ have to change: Outliner -> SdrOutlines
+
+ Rev 1.105 21 Jun 1999 15:20:24 JP
+ Interface changes: SdrView::GetAttributes
+
+ Rev 1.104 10 Jun 1999 13:16:36 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.103 02 Feb 1999 13:17:36 JP
+ Bug #61335#: Schnistelle zu SwView geaendert/aufgeraeumt
+
+ Rev 1.102 12 Oct 1998 10:13:20 OM
+ #57790# Dialog nicht mehr AppModal
+
+ Rev 1.101 06 May 1998 16:20:42 OS
+ AttrChangedNotify nach Shellwechsel nicht ueber this aufrufen
+
+ Rev 1.100 29 Nov 1997 15:52:14 MA
+ includes
+
+ Rev 1.99 24 Nov 1997 09:47:00 MA
+ includes
+
+ Rev 1.98 03 Nov 1997 13:55:46 MA
+ precomp entfernt
+
+ Rev 1.97 30 Sep 1997 16:30:46 TJ
+ include
+
+ Rev 1.96 01 Sep 1997 13:23:56 OS
+ DLL-Umstellung
+
+ Rev 1.95 11 Aug 1997 08:34:16 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.94 06 Aug 1997 14:19:50 TRI
+ VCL: GetpApp() statt pApp
+
+ Rev 1.93 05 Aug 1997 13:29:54 MH
+ chg: header
+
+ Rev 1.92 25 Jun 1997 09:10:18 MA
+ #40965#, SubShell abmelden
+
+ Rev 1.91 19 Jun 1997 16:39:16 MA
+ fix: reste vom DrawText-Umbau
+
+ Rev 1.90 19 Jun 1997 16:05:42 HJS
+ includes
+
+ Rev 1.89 17 Jun 1997 15:54:12 MA
+ DrawTxtShell nicht von BaseShell ableiten + Opts
+
+ Rev 1.88 04 Jun 1997 11:30:26 TRI
+ svwin.h nur unter WIN oder WNT includen
+
+ Rev 1.87 04 Jun 1997 09:54:48 NF
+ Includes...
+
+ Rev 1.86 02 May 1997 20:15:40 NF
+ includes...
+
+ Rev 1.85 08 Apr 1997 10:52:22 OM
+ Fehlende Includes
+
+ Rev 1.84 02 Apr 1997 14:07:00 JP
+ Bug #38398#: StateUndo - Itemset weitergeben
+
+ Rev 1.83 19 Mar 1997 12:48:20 AMA
+ Fix #37035: Speller am Outliner setzen.
+
+ Rev 1.82 24 Feb 1997 16:53:08 OM
+ Silbentrennung in Draw-Objekten
+
+ Rev 1.81 16 Dec 1996 10:41:50 OM
+ Cursor nach Initialisierung anzeigen
+
+ Rev 1.80 11 Dec 1996 10:50:58 MA
+ Warnings
+
+ Rev 1.79 26 Nov 1996 16:53:06 OS
+ Erste Schritte fuer OnlineSpelling in DrawTextObjekten
+
+ Rev 1.78 19 Nov 1996 16:02:30 NF
+ defines...
+
+ Rev 1.77 18 Nov 1996 16:05:50 OS
+ Set/GetControlWord an der OutlinerView benutzen
+
+ Rev 1.76 18 Nov 1996 15:46:40 OS
+ AutoKorrektur auch im DrawText
+
+ Rev 1.75 15 Nov 1996 13:34:02 OS
+ SvxTextTabDialog angebunden
+
+ Rev 1.74 13 Nov 1996 20:29:36 MA
+ #33141# nicht den Mode verlassen
+
+ Rev 1.73 07 Nov 1996 16:22:52 OM
+ Font nach Einfuegen:Sonderzeichen restaurieren
+
+ Rev 1.72 07 Nov 1996 15:28:18 OM
+ RefDevice am Outliner setzen
+
+ Rev 1.71 06 Nov 1996 16:41:26 OS
+ SID_SW_START statt RID_APP_START
+
+ Rev 1.70 26 Sep 1996 15:41:54 OM
+ Neues Parent fuer Sonderzeichen-Dlg
+
+ Rev 1.69 28 Aug 1996 15:55:00 OS
+ includes
+
+ Rev 1.68 15 Aug 1996 13:44:22 JP
+ svdraw.hxx entfernt
+
+ Rev 1.67 31 May 1996 11:09:30 NF
+ CLOOKS
+
+ Rev 1.66 28 May 1996 11:56:16 TRI
+ CLOOKS
+
+ Rev 1.65 21 May 1996 08:58:00 NF
+ CLOOKS
+
+ Rev 1.64 22 Mar 1996 15:17:00 TRI
+ sfxiiter.hxx included
+
+ Rev 1.63 29 Feb 1996 21:14:40 HJS
+ clooks
+
+ Rev 1.62 19 Feb 1996 18:30:58 MA
+ chg: EndTextEdit ueber die fesh
+
+ Rev 1.61 16 Feb 1996 09:14:48 SWG
+ CLOOK's
+
+ Rev 1.60 07 Feb 1996 08:07:22 OS
+ SvxTextAttrDialog hat jetzt endgueltig 3 Parameter
+
+ Rev 1.59 01 Feb 1996 08:07:18 SWG
+ TextAttrDialog wieder mal als nicht-Emergency-Version
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/shells/frmsh.cxx b/sw/source/ui/shells/frmsh.cxx
new file mode 100644
index 000000000000..8c703cd12e64
--- /dev/null
+++ b/sw/source/ui/shells/frmsh.cxx
@@ -0,0 +1,1082 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _GOODIES_IMAPOBJ_HXX
+#include <svtools/imapobj.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SFX_SAVEOPT_HXX //autogen
+#include <sfx2/saveopt.hxx>
+#endif
+#ifndef _IMAP_HXX //autogen
+#include <svtools/imap.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SB_SBSTAR_HXX //autogen
+#include <basic/sbstar.hxx>
+#endif
+#ifndef _SFXRECTITEM_HXX //autogen
+#include <svtools/rectitem.hxx>
+#endif
+#ifndef _SFXPTITEM_HXX //autogen
+#include <svtools/ptitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_BOLNITEM_HXX //autogen
+#include <svx/bolnitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_PROTITEM_HXX //autogen
+#include <svx/protitem.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _SVX_HLNKITEM_HXX //autogen
+#include <svx/hlnkitem.hxx>
+#endif
+
+
+#ifndef _FMTURL_HXX //autogen
+#include <fmturl.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTCNCT_HXX //autogen
+#include <fmtcnct.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+#ifndef _FRMSH_HXX
+#include <frmsh.hxx>
+#endif
+#ifndef _FRMMGR_HXX
+#include <frmmgr.hxx>
+#endif
+#ifndef _FRMDLG_HXX
+#include <frmdlg.hxx>
+#endif
+#ifndef _SWEVENT_HXX
+#include <swevent.hxx>
+#endif
+#ifndef _USRPREF_HXX
+#include <usrpref.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _POPUP_HRC
+#include <popup.hrc>
+#endif
+#ifndef _SHELLS_HRC
+#include <shells.hrc>
+#endif
+
+// Prototypen ------------------------------------------------------------
+
+void lcl_FrmGetMaxLineWidth(const SvxBorderLine* pBorderLine, SvxBorderLine& rBorderLine);
+
+#define SwFrameShell
+#include "itemdef.hxx"
+#include "swslots.hxx"
+
+SFX_IMPL_INTERFACE(SwFrameShell, SwBaseShell, SW_RES(STR_SHELLNAME_FRAME))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_FRM_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_FRAME_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_FRAME));
+}
+
+
+
+void SwFrameShell::Execute(SfxRequest &rReq)
+{
+ //Erstmal die, die keinen FrmMgr benoetigen.
+ SwWrtShell &rSh = GetShell();
+ BOOL bMore = FALSE;
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem;
+ USHORT nSlot = rReq.GetSlot();
+
+ switch ( nSlot )
+ {
+ case FN_FRAME_TO_ANCHOR:
+ if ( rSh.IsFrmSelected() )
+ {
+ rSh.GotoFlyAnchor();
+ rSh.EnterStdMode();
+ rSh.CallChgLnk();
+ }
+ break;
+ case SID_FRAME_TO_TOP:
+ rSh.SelectionToTop();
+ break;
+
+ case SID_FRAME_TO_BOTTOM:
+ rSh.SelectionToBottom();
+ break;
+
+ case FN_FRAME_UP:
+ rSh.SelectionToTop( FALSE );
+ break;
+
+ case FN_FRAME_DOWN:
+ rSh.SelectionToBottom( FALSE );
+ break;
+ case FN_INSERT_FRAME:
+ if (!pArgs)
+ {
+ // Rahmen existiert bereits, Rahmendialog zur Bearbeitung oeffnen
+ SfxUInt16Item aDefPage(FN_FORMAT_FRAME_DLG, TP_COLUMN);
+ rSh.GetView().GetViewFrame()->GetDispatcher()->Execute( FN_FORMAT_FRAME_DLG,
+ SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD,
+ &aDefPage, 0L );
+
+ }
+ else
+ {
+ // Rahmen existiert bereits, nur Spaltenanzahl wird geaendert
+ USHORT nCols = 1;
+ if(pArgs->GetItemState(SID_ATTR_COLUMNS, FALSE, &pItem) == SFX_ITEM_SET)
+ nCols = ((SfxUInt16Item *)pItem)->GetValue();
+
+ SfxItemSet aSet(GetPool(),RES_COL,RES_COL);
+ rSh.GetFlyFrmAttr( aSet );
+ SwFmtCol aCol((const SwFmtCol&)aSet.Get(RES_COL));
+ // GutterWidth wird nicht immer uebergeben, daher erst besorgen (siehe view2: Execute auf diesen Slot)
+ USHORT nGutterWidth = aCol.GetGutterWidth();
+ if(!nCols )
+ nCols++;
+ aCol.Init(nCols, nGutterWidth, aCol.GetWishWidth());
+ aSet.Put(aCol);
+ // Vorlagen-AutoUpdate
+ SwFrmFmt* pFmt = rSh.GetCurFrmFmt();
+ if(pFmt && pFmt->IsAutoUpdateFmt())
+ {
+ rSh.AutoUpdateFrame(pFmt, aSet);
+ }
+ else
+ {
+ rSh.StartAllAction();
+ rSh.SetFlyFrmAttr( aSet );
+ rSh.SetModified();
+ rSh.EndAllAction();
+ }
+
+ }
+ return;
+
+ case SID_HYPERLINK_SETLINK:
+ {
+ if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(SID_HYPERLINK_SETLINK, FALSE, &pItem))
+ {
+ const SvxHyperlinkItem& rHLinkItem = *(const SvxHyperlinkItem *)pItem;
+ const String& rURL = rHLinkItem.GetURL();
+ const String& rTarget = rHLinkItem.GetTargetFrame();
+
+ SfxItemSet aSet( rSh.GetAttrPool(), RES_URL, RES_URL );
+ rSh.GetFlyFrmAttr( aSet );
+ SwFmtURL aURL( (SwFmtURL&)aSet.Get( RES_URL ) );
+
+ String sOldName(rHLinkItem.GetName());
+ String sFlyName(rSh.GetFlyName());
+ if (sOldName.ToUpperAscii() != sFlyName.ToUpperAscii())
+ {
+ String sName(sOldName);
+ USHORT i = 1;
+ while (rSh.FindFlyByName(sName))
+ {
+ sName = sOldName;
+ sName += '_';
+ sName += String::CreateFromInt32(i++);
+ }
+ rSh.SetFlyName(sName);
+ }
+ aURL.SetURL( rURL, FALSE );
+ aURL.SetTargetFrameName(rTarget);
+
+ aSet.Put( aURL );
+ rSh.SetFlyFrmAttr( aSet );
+ }
+ }
+ break;
+
+ case FN_FRAME_CHAIN:
+ rSh.GetView().GetEditWin().SetChainMode( !rSh.GetView().GetEditWin().IsChainMode() );
+ break;
+
+ case FN_FRAME_UNCHAIN:
+ rSh.Unchain( (SwFrmFmt&)*rSh.GetFlyFrmFmt() );
+ GetView().GetViewFrame()->GetBindings().Invalidate(FN_FRAME_CHAIN);
+ break;
+
+ default: bMore = TRUE;
+ }
+
+ if ( !bMore )
+ {
+ return;
+ }
+
+ SwFlyFrmAttrMgr aMgr( FALSE, &rSh, FRMMGR_TYPE_NONE );
+ BOOL bUpdateMgr = TRUE;
+ BOOL bCopyToFmt = FALSE;
+ switch ( nSlot )
+ {
+ case FN_FRAME_ALIGN_VERT_CENTER:
+ aMgr.SetVertOrientation( SVX_VERT_CENTER );
+ break;
+
+ case FN_FRAME_ALIGN_VERT_BOTTOM:
+ aMgr.SetVertOrientation( SVX_VERT_BOTTOM );
+ break;
+
+ case FN_FRAME_ALIGN_VERT_TOP:
+ aMgr.SetVertOrientation( SVX_VERT_TOP );
+ break;
+
+ case FN_FRAME_ALIGN_VERT_CHAR_CENTER:
+ aMgr.SetVertOrientation( SVX_VERT_CHAR_CENTER );
+ break;
+
+ case FN_FRAME_ALIGN_VERT_CHAR_BOTTOM:
+ aMgr.SetVertOrientation( SVX_VERT_CHAR_BOTTOM );
+ break;
+
+ case FN_FRAME_ALIGN_VERT_CHAR_TOP:
+ aMgr.SetVertOrientation( SVX_VERT_CHAR_TOP );
+ break;
+
+ case FN_FRAME_ALIGN_VERT_ROW_CENTER:
+ aMgr.SetVertOrientation( SVX_VERT_LINE_CENTER );
+ break;
+
+ case FN_FRAME_ALIGN_VERT_ROW_BOTTOM:
+ aMgr.SetVertOrientation( SVX_VERT_LINE_BOTTOM );
+ break;
+
+ case FN_FRAME_ALIGN_VERT_ROW_TOP:
+ aMgr.SetVertOrientation( SVX_VERT_LINE_TOP );
+ break;
+
+ case FN_FRAME_ALIGN_HORZ_CENTER:
+ aMgr.SetHorzOrientation( HORI_CENTER );
+ break;
+
+ case FN_FRAME_ALIGN_HORZ_RIGHT:
+ aMgr.SetHorzOrientation( HORI_RIGHT );
+ break;
+
+ case FN_FRAME_ALIGN_HORZ_LEFT:
+ aMgr.SetHorzOrientation( HORI_LEFT );
+ break;
+
+ case FN_SET_FRM_POSITION:
+ {
+ aMgr.SetAbsPos(((SfxPointItem &)pArgs->Get
+ (FN_SET_FRM_POSITION)).GetValue());
+ }
+ break;
+ case SID_ATTR_BRUSH:
+ {
+ if(pArgs)
+ {
+ aMgr.SetAttrSet( *pArgs );
+ bCopyToFmt = TRUE;
+ }
+ }
+ break;
+ case SID_ATTR_ULSPACE:
+ case SID_ATTR_LRSPACE:
+ {
+ if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(GetPool().GetWhich(nSlot), FALSE, &pItem))
+ {
+ aMgr.SetAttrSet( *pArgs );
+ if(SID_ATTR_ULSPACE == nSlot && SID_ATTR_ULSPACE == nSlot)
+ bCopyToFmt = TRUE;
+ }
+ }
+ break;
+ case FN_FORMAT_FRAME_DLG:
+ {
+ const int nSel = rSh.GetSelectionType();
+ if (nSel & SwWrtShell::SEL_GRF)
+ {
+ rSh.GetView().GetViewFrame()->GetDispatcher()->Execute(FN_FORMAT_GRAFIC_DLG);
+ bUpdateMgr = FALSE;
+ }
+ else
+ {
+ //SFX_APP()->GetOptions().SetMetric(::GetDfltMetric());
+ SfxItemSet aSet(GetPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
+ FN_GET_PRINT_AREA, FN_GET_PRINT_AREA,
+ SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
+ SID_ATTR_BRUSH, SID_ATTR_BRUSH,
+ SID_ATTR_LRSPACE, SID_ATTR_ULSPACE,
+ FN_SURROUND, FN_HORI_ORIENT,
+ FN_SET_FRM_NAME, FN_SET_FRM_NAME,
+ FN_KEEP_ASPECT_RATIO, FN_KEEP_ASPECT_RATIO,
+ SID_DOCFRAME, SID_DOCFRAME,
+ SID_HTML_MODE, SID_HTML_MODE,
+ FN_SET_FRM_ALT_NAME, FN_SET_FRM_ALT_NAME,
+ 0);
+
+ const SwViewOption* pVOpt = rSh.GetViewOptions();
+ if(nSel & SwWrtShell::SEL_OLE)
+ {
+ aSet.Put(SfxBoolItem(FN_KEEP_ASPECT_RATIO,
+ pVOpt->IsKeepRatio()));
+ }
+ aSet.Put(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(GetView().GetDocShell())));
+ aSet.Put(SfxStringItem(FN_SET_FRM_NAME, rSh.GetFlyName()));
+ if(nSel & SwWrtShell::SEL_OLE)
+ aSet.Put(SfxStringItem(FN_SET_FRM_ALT_NAME, rSh.GetAlternateText()));
+
+ const SwRect &rPg = rSh.GetAnyCurRect(RECT_PAGE);
+ SwFmtFrmSize aFrmSize(ATT_VAR_SIZE, rPg.Width(), rPg.Height());
+ aFrmSize.SetWhich(GetPool().GetWhich(SID_ATTR_PAGE_SIZE));
+ aSet.Put(aFrmSize);
+
+ const SwRect &rPr = rSh.GetAnyCurRect(RECT_PAGE_PRT);
+ SwFmtFrmSize aPrtSize(ATT_VAR_SIZE, rPr.Width(), rPr.Height());
+ aPrtSize.SetWhich(GetPool().GetWhich(FN_GET_PRINT_AREA));
+ aSet.Put(aPrtSize);
+
+ aSet.Put(aMgr.GetAttrSet());
+ aSet.SetParent( aMgr.GetAttrSet().GetParent() );
+
+ // Bei %-Werten Groesse initialisieren
+ SwFmtFrmSize& rSize = (SwFmtFrmSize&)aSet.Get(RES_FRM_SIZE);
+ if (rSize.GetWidthPercent() && rSize.GetWidthPercent() != 0xff)
+ rSize.SetWidth(rSh.GetAnyCurRect(RECT_FLY_EMBEDDED).Width());
+ if (rSize.GetHeightPercent() && rSize.GetHeightPercent() != 0xff)
+ rSize.SetHeight(rSh.GetAnyCurRect(RECT_FLY_EMBEDDED).Height());
+
+ UINT16 nDefPage = 0;
+ if(pArgs && pArgs->GetItemState(FN_FORMAT_FRAME_DLG, FALSE, &pItem) == SFX_ITEM_SET)
+ nDefPage = ((SfxUInt16Item *)pItem)->GetValue();
+
+ aSet.Put(SfxFrameItem( SID_DOCFRAME, GetView().GetViewFrame()->GetTopFrame()));
+
+
+ SwFrmDlg *pDlg = new SwFrmDlg( GetView().GetViewFrame(),
+ GetView().GetWindow(),
+ aSet, FALSE,
+ nSel & SwWrtShell::SEL_GRF ? DLG_FRM_GRF :
+ nSel & SwWrtShell::SEL_OLE ? DLG_FRM_OLE :
+ DLG_FRM_STD,
+ FALSE,
+ nDefPage);
+
+ if ( pDlg->Execute() )
+ {
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+ if(pOutSet)
+ {
+ if(nSel & SwWrtShell::SEL_OLE &&
+ SFX_ITEM_SET == pOutSet->GetItemState(FN_KEEP_ASPECT_RATIO, TRUE, &pItem))
+ {
+ SwViewOption aUsrPref( *pVOpt );
+ aUsrPref.SetKeepRatio(((const SfxBoolItem*)pItem)->GetValue());
+ SW_MOD()->ApplyUsrPref(aUsrPref, &GetView());
+ }
+ if (SFX_ITEM_SET == pOutSet->GetItemState(FN_SET_FRM_ALT_NAME, TRUE, &pItem))
+ {
+ rSh.SetAlternateText(((const SfxStringItem*)pItem)->GetValue());
+ }
+ // Vorlagen-AutoUpdate
+ SwFrmFmt* pFmt = rSh.GetCurFrmFmt();
+ if(pFmt && pFmt->IsAutoUpdateFmt())
+ {
+ rSh.AutoUpdateFrame(pFmt, *pOutSet);
+ const SfxPoolItem* pItem;
+ // alles, dass das Format nicht kann, muss hart
+ // gesetzt werden
+ if(SFX_ITEM_SET == pOutSet->GetItemState(FN_SET_FRM_NAME, FALSE, &pItem))
+ rSh.SetFlyName(((SfxStringItem*)pItem)->GetValue());
+ SfxItemSet aShellSet(GetPool(), RES_FRM_SIZE, RES_FRM_SIZE,
+ RES_SURROUND, RES_SURROUND,
+ RES_ANCHOR, RES_ANCHOR,
+ RES_VERT_ORIENT,RES_HORI_ORIENT,
+ 0);
+ aShellSet.Put(*pOutSet);
+ aMgr.SetAttrSet(aShellSet);
+ if(SFX_ITEM_SET == pOutSet->GetItemState(FN_SET_FRM_NAME, FALSE, &pItem))
+ rSh.SetFlyName(((SfxStringItem*)pItem)->GetValue());
+ }
+ else
+ aMgr.SetAttrSet( *pOutSet );
+
+ }
+ }
+ else
+ bUpdateMgr = FALSE;
+ delete pDlg;
+ }
+ }
+ break;
+ case FN_FRAME_MIRROR_ON_EVEN_PAGES:
+ {
+ SwFmtHoriOrient aHori(aMgr.GetHoriOrient());
+ BOOL bMirror = !aHori.IsPosToggle();
+ aHori.SetPosToggle(bMirror);
+ SfxItemSet aSet(GetPool(), RES_HORI_ORIENT, RES_HORI_ORIENT);
+ aSet.Put(aHori);
+ aMgr.SetAttrSet(aSet);
+ bCopyToFmt = TRUE;
+ rReq.SetReturnValue(SfxBoolItem(nSlot, bMirror));
+ }
+ break;
+ default:
+ ASSERT( !this, "falscher Dispatcher" );
+ return;
+ }
+ // Vorlagen-AutoUpdate
+ SwFrmFmt* pFmt = rSh.GetCurFrmFmt();
+ if ( bUpdateMgr )
+ {
+ if(bCopyToFmt && pFmt && pFmt->IsAutoUpdateFmt())
+ {
+ rSh.AutoUpdateFrame(pFmt, aMgr.GetAttrSet());
+ }
+ else
+ aMgr.UpdateFlyFrm();
+ }
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwFrameShell::GetState(SfxItemSet& rSet)
+{
+ SwWrtShell &rSh = GetShell();
+ BOOL bHtmlMode = 0 != ::GetHtmlMode(rSh.GetView().GetDocShell());
+ if (rSh.IsFrmSelected())
+ {
+ SfxItemSet aSet( rSh.GetAttrPool(),
+ RES_LR_SPACE, RES_UL_SPACE,
+ RES_PROTECT, RES_HORI_ORIENT,
+ RES_OPAQUE, RES_OPAQUE,
+ RES_PRINT, RES_OPAQUE,
+ 0 );
+ rSh.GetFlyFrmAttr( aSet );
+
+ BOOL bProtect = rSh.IsSelObjProtected(FLYPROTECT_POS);
+ BOOL bParentCntProt = rSh.IsSelObjProtected( (FlyProtectType)(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) ) != 0;
+
+ bProtect |= bParentCntProt;
+
+ const USHORT eFrmType = rSh.GetFrmType(0,TRUE);
+ SwFlyFrmAttrMgr aMgr( FALSE, &rSh, FRMMGR_TYPE_NONE );
+
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case RES_FRM_SIZE:
+ {
+ SwFmtFrmSize aSz(aMgr.GetFrmSize());
+ rSet.Put(aSz);
+ }
+ break;
+ case RES_VERT_ORIENT:
+ case RES_HORI_ORIENT:
+ case SID_ATTR_ULSPACE:
+ case SID_ATTR_LRSPACE:
+ case RES_LR_SPACE:
+ case RES_UL_SPACE:
+ case RES_PROTECT:
+ case RES_OPAQUE:
+ case RES_PRINT:
+ case RES_SURROUND:
+ {
+ rSet.Put(aSet.Get(GetPool().GetWhich(nWhich), TRUE ));
+ }
+ break;
+ case FN_FRAME_ALIGN_HORZ_CENTER:
+ case FN_FRAME_ALIGN_HORZ_RIGHT:
+ case FN_FRAME_ALIGN_HORZ_LEFT:
+ if ( (eFrmType & FRMTYPE_FLY_INCNT) ||
+ bProtect ||
+ nWhich == FN_FRAME_ALIGN_HORZ_CENTER && bHtmlMode )
+ rSet.DisableItem( nWhich );
+ break;
+ case FN_FRAME_ALIGN_VERT_ROW_TOP:
+ case FN_FRAME_ALIGN_VERT_ROW_CENTER:
+ case FN_FRAME_ALIGN_VERT_ROW_BOTTOM:
+ case FN_FRAME_ALIGN_VERT_CHAR_TOP:
+ case FN_FRAME_ALIGN_VERT_CHAR_CENTER:
+ case FN_FRAME_ALIGN_VERT_CHAR_BOTTOM:
+ if ( !(eFrmType & FRMTYPE_FLY_INCNT) || bProtect
+ || bHtmlMode && FN_FRAME_ALIGN_VERT_CHAR_BOTTOM == nWhich )
+ rSet.DisableItem( nWhich );
+ break;
+ case FN_FRAME_ALIGN_VERT_TOP:
+ case FN_FRAME_ALIGN_VERT_CENTER:
+ case FN_FRAME_ALIGN_VERT_BOTTOM:
+ if ( bProtect || bHtmlMode && eFrmType & FRMTYPE_FLY_ATCNT)
+ rSet.DisableItem( nWhich );
+ else
+ {
+ USHORT nId = 0;
+ if (eFrmType & FRMTYPE_FLY_INCNT)
+ {
+ switch (nWhich)
+ {
+ case FN_FRAME_ALIGN_VERT_TOP:
+ nId = STR_TOP_BASE; break;
+ case FN_FRAME_ALIGN_VERT_CENTER:
+ nId = STR_CENTER_BASE; break;
+ case FN_FRAME_ALIGN_VERT_BOTTOM:
+ if(!bHtmlMode)
+ nId = STR_BOTTOM_BASE;
+ else
+ rSet.DisableItem( nWhich );
+ break;
+ }
+ }
+ else
+ {
+ if (nWhich == FN_FRAME_ALIGN_VERT_CENTER ||
+ nWhich == FN_FRAME_ALIGN_VERT_BOTTOM)
+ {
+ if (aMgr.GetAnchor() == FLY_AT_FLY)
+ {
+ const SwFrmFmt* pFmt = rSh.IsFlyInFly();
+ if (pFmt)
+ {
+ const SwFmtFrmSize& rFrmSz = pFmt->GetFrmSize();
+ if (rFrmSz.GetSizeType() != ATT_FIX_SIZE)
+ {
+ rSet.DisableItem( nWhich );
+ break;
+ }
+ }
+ }
+ }
+ switch (nWhich)
+ {
+ case FN_FRAME_ALIGN_VERT_TOP:
+ nId = STR_TOP; break;
+ case FN_FRAME_ALIGN_VERT_CENTER:
+ nId = STR_CENTER_VERT; break;
+ case FN_FRAME_ALIGN_VERT_BOTTOM:
+ nId = STR_BOTTOM; break;
+ }
+ }
+ if ( nId )
+ rSet.Put( SfxStringItem( nWhich, SW_RES(nId) ));
+ }
+ break;
+ case SID_HYPERLINK_GETLINK:
+ {
+ String sURL;
+ SvxHyperlinkItem aHLinkItem;
+ const SfxPoolItem* pItem;
+
+ SfxItemSet aSet(GetPool(), RES_URL, RES_URL);
+ rSh.GetFlyFrmAttr( aSet );
+
+ if(SFX_ITEM_SET == aSet.GetItemState(RES_URL, TRUE, &pItem))
+ {
+ const SwFmtURL* pFmtURL = (const SwFmtURL*)pItem;
+ aHLinkItem.SetURL(pFmtURL->GetURL());
+ aHLinkItem.SetTargetFrame(pFmtURL->GetTargetFrameName());
+ aHLinkItem.SetName(rSh.GetFlyName());
+ }
+
+ aHLinkItem.SetInsertMode((SvxLinkInsertMode)(aHLinkItem.GetInsertMode() |
+ (bHtmlMode ? HLINK_HTMLMODE : 0)));
+
+ rSet.Put(aHLinkItem);
+ }
+ break;
+
+ case FN_FRAME_CHAIN:
+ {
+ const SwFrmFmt *pFmt = rSh.GetFlyFrmFmt();
+ if ( bParentCntProt || rSh.GetView().GetEditWin().GetApplyTemplate() ||
+ !pFmt || pFmt->GetChain().GetNext() )
+ {
+ rSet.DisableItem( FN_FRAME_CHAIN );
+ }
+ else
+ {
+ BOOL bChainMode = rSh.GetView().GetEditWin().IsChainMode();
+ rSet.Put( SfxBoolItem( FN_FRAME_CHAIN, bChainMode ) );
+ }
+ break;
+ }
+
+ case FN_FRAME_UNCHAIN:
+ {
+ const SwFrmFmt *pFmt = rSh.GetFlyFrmFmt();
+ if ( bParentCntProt || rSh.GetView().GetEditWin().GetApplyTemplate() ||
+ !pFmt || !pFmt->GetChain().GetNext() )
+ {
+ rSet.DisableItem( FN_FRAME_UNCHAIN );
+ }
+ break;
+ }
+
+ case SID_FRAME_TO_TOP:
+ case SID_FRAME_TO_BOTTOM:
+ case FN_FRAME_UP:
+ case FN_FRAME_DOWN:
+ case FN_FORMAT_FRAME_DLG:
+ if ( bParentCntProt )
+ rSet.DisableItem( nWhich );
+ break;
+
+ default:
+ /* do nothing */;
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ctor fuer FrameShell
+ --------------------------------------------------------------------*/
+
+
+SwFrameShell::SwFrameShell(SwView &rView) :
+ SwBaseShell( rView )
+{
+ SetName(String::CreateFromAscii("Frame"));
+ SetHelpId(SW_FRAMESHELL);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwFrameShell::ExecFrameStyle(SfxRequest& rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ BOOL bDefault = FALSE;
+ if (!rSh.IsFrmSelected())
+ return;
+
+ // Erst Default-BoxItem aus Pool holen. Wenn ungleich normalem Boxitem,
+ // dann ist es bereits geaendert worden (neues ist kein Default).
+ const SvxBoxItem* pPoolBoxItem = (const SvxBoxItem*)::GetDfltAttr(RES_BOX);
+
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ SfxItemSet aFrameSet(rSh.GetAttrPool(), RES_BOX, RES_BOX);
+
+ rSh.GetFlyFrmAttr( aFrameSet );
+ const SvxBoxItem& rBoxItem = (const SvxBoxItem&)aFrameSet.Get(RES_BOX);
+
+ if (pPoolBoxItem == &rBoxItem)
+ bDefault = TRUE;
+
+ SvxBoxItem aBoxItem(rBoxItem);
+
+ SvxBorderLine aBorderLine;
+ const SfxPoolItem *pItem = 0;
+
+ if(pArgs) //irgendein Controller kann auch mal nichts liefern #48169#
+ {
+ switch (rReq.GetSlot())
+ {
+ case SID_ATTR_BORDER:
+ {
+ if (pArgs->GetItemState(RES_BOX, TRUE, &pItem) == SFX_ITEM_SET)
+ {
+ SvxBoxItem aNewBox(*((SvxBoxItem *)pItem));
+ const SvxBorderLine* pBorderLine;
+
+ if ((pBorderLine = aBoxItem.GetTop()) != NULL)
+ lcl_FrmGetMaxLineWidth(pBorderLine, aBorderLine);
+ if ((pBorderLine = aBoxItem.GetBottom()) != NULL)
+ lcl_FrmGetMaxLineWidth(pBorderLine, aBorderLine);
+ if ((pBorderLine = aBoxItem.GetLeft()) != NULL)
+ lcl_FrmGetMaxLineWidth(pBorderLine, aBorderLine);
+ if ((pBorderLine = aBoxItem.GetRight()) != NULL)
+ lcl_FrmGetMaxLineWidth(pBorderLine, aBorderLine);
+
+ if(aBorderLine.GetOutWidth() == 0)
+ {
+ aBorderLine.SetInWidth(0);
+ aBorderLine.SetOutWidth(DEF_LINE_WIDTH_0);
+ aBorderLine.SetDistance(0);
+ }
+ //Distance nur setzen, wenn der Request vom Controller kommt
+
+ if(!StarBASIC::IsRunning())
+ {
+ aNewBox.SetDistance( rBoxItem.GetDistance() );
+ }
+
+ aBoxItem = aNewBox;
+ SvxBorderLine aDestBorderLine;
+
+ if ((pBorderLine = aBoxItem.GetTop()) != NULL)
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_TOP);
+ if ((pBorderLine = aBoxItem.GetBottom()) != NULL)
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_BOTTOM);
+ if ((pBorderLine = aBoxItem.GetLeft()) != NULL)
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_LEFT);
+ if ((pBorderLine = aBoxItem.GetRight()) != NULL)
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_RIGHT);
+ }
+ }
+ break;
+
+ case SID_FRAME_LINESTYLE:
+ {
+ if (pArgs->GetItemState(SID_FRAME_LINESTYLE, FALSE, &pItem) == SFX_ITEM_SET)
+ {
+ const SvxLineItem* pLineItem =
+ (const SvxLineItem*)pItem;
+
+ if ( pLineItem->GetLine() )
+ {
+ aBorderLine = *(pLineItem->GetLine());
+
+ if (!aBoxItem.GetTop() && !aBoxItem.GetBottom() &&
+ !aBoxItem.GetLeft() && !aBoxItem.GetRight())
+ {
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_TOP);
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_BOTTOM);
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_LEFT);
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_RIGHT);
+ }
+ else
+ {
+ if( aBoxItem.GetTop() )
+ {
+ aBorderLine.SetColor( aBoxItem.GetTop()->GetColor() );
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_TOP);
+ }
+ if( aBoxItem.GetBottom() )
+ {
+ aBorderLine.SetColor( aBoxItem.GetBottom()->GetColor());
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_BOTTOM);
+ }
+ if( aBoxItem.GetLeft() )
+ {
+ aBorderLine.SetColor( aBoxItem.GetLeft()->GetColor());
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_LEFT);
+ }
+ if( aBoxItem.GetRight() )
+ {
+ aBorderLine.SetColor(aBoxItem.GetRight()->GetColor());
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_RIGHT);
+ }
+ }
+ }
+ else
+ {
+ aBoxItem.SetLine(0, BOX_LINE_TOP);
+ aBoxItem.SetLine(0, BOX_LINE_BOTTOM);
+ aBoxItem.SetLine(0, BOX_LINE_LEFT);
+ aBoxItem.SetLine(0, BOX_LINE_RIGHT);
+ }
+ }
+ }
+ break;
+
+ case SID_FRAME_LINECOLOR:
+ {
+ if (pArgs->GetItemState(SID_FRAME_LINECOLOR, FALSE, &pItem) == SFX_ITEM_SET)
+ {
+ const Color& rNewColor = ((const SvxColorItem*)pItem)->GetValue();
+
+ if (!aBoxItem.GetTop() && !aBoxItem.GetBottom() &&
+ !aBoxItem.GetLeft() && !aBoxItem.GetRight())
+ {
+ aBorderLine.SetColor( rNewColor );
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_TOP);
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_BOTTOM);
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_LEFT);
+ aBoxItem.SetLine(&aBorderLine, BOX_LINE_RIGHT);
+ }
+ else
+ {
+ if ( aBoxItem.GetTop() )
+ ((SvxBorderLine*)aBoxItem.GetTop())->SetColor( rNewColor );
+ if ( aBoxItem.GetBottom() )
+ ((SvxBorderLine*)aBoxItem.GetBottom())->SetColor( rNewColor );
+ if ( aBoxItem.GetLeft() )
+ ((SvxBorderLine*)aBoxItem.GetLeft())->SetColor( rNewColor );
+ if ( aBoxItem.GetRight() )
+ ((SvxBorderLine*)aBoxItem.GetRight())->SetColor( rNewColor );
+ }
+ }
+ }
+ break;
+ }
+ }
+ if (bDefault && (aBoxItem.GetTop() || aBoxItem.GetBottom() ||
+ aBoxItem.GetLeft() || aBoxItem.GetRight()))
+ {
+ aBoxItem.SetDistance(MIN_BORDER_DIST);
+ }
+ aFrameSet.Put( aBoxItem );
+ // Vorlagen-AutoUpdate
+ SwFrmFmt* pFmt = rSh.GetCurFrmFmt();
+ if(pFmt && pFmt->IsAutoUpdateFmt())
+ {
+ rSh.AutoUpdateFrame(pFmt, aFrameSet);
+ }
+ else
+ rSh.SetFlyFrmAttr( aFrameSet );
+
+}
+
+
+
+void lcl_FrmGetMaxLineWidth(const SvxBorderLine* pBorderLine, SvxBorderLine& rBorderLine)
+{
+ if(pBorderLine->GetInWidth() > rBorderLine.GetInWidth())
+ rBorderLine.SetInWidth(pBorderLine->GetInWidth());
+
+ if(pBorderLine->GetOutWidth() > rBorderLine.GetOutWidth())
+ rBorderLine.SetOutWidth(pBorderLine->GetOutWidth());
+
+ if(pBorderLine->GetDistance() > rBorderLine.GetDistance())
+ rBorderLine.SetDistance(pBorderLine->GetDistance());
+
+ rBorderLine.SetColor(pBorderLine->GetColor());
+}
+
+
+
+void SwFrameShell::GetLineStyleState(SfxItemSet &rSet)
+{
+ SwWrtShell &rSh = GetShell();
+ BOOL bParentCntProt = rSh.IsSelObjProtected( (FlyProtectType)(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) ) != 0;
+
+ if (bParentCntProt)
+ {
+ if (rSh.IsFrmSelected())
+ rSet.DisableItem( SID_FRAME_LINECOLOR );
+
+ rSet.DisableItem( SID_ATTR_BORDER );
+ rSet.DisableItem( SID_FRAME_LINESTYLE );
+ }
+ else
+ {
+ if (rSh.IsFrmSelected())
+ {
+ SfxItemSet aFrameSet( rSh.GetAttrPool(), RES_BOX, RES_BOX );
+
+ rSh.GetFlyFrmAttr(aFrameSet);
+
+ const SvxBorderLine* pLine = ((const SvxBoxItem&)aFrameSet.Get(RES_BOX)).GetTop();
+ rSet.Put(SvxColorItem(pLine ? pLine->GetColor() : Color(), SID_FRAME_LINECOLOR));
+ }
+ rSet.Put(SfxUInt16Item(SID_ATTR_BORDER, TRUE)); // Rahmencontroller: letzte Zeile einklappen
+ }
+}
+
+
+
+void SwFrameShell::GetBckColState(SfxItemSet &rSet)
+{
+ SwBaseShell::GetBckColState( rSet );
+}
+
+
+
+void SwFrameShell::ExecBckCol(SfxRequest& rReq)
+{
+ SwBaseShell::ExecBckCol( rReq );
+}
+
+
+
+void SwFrameShell::StateInsert(SfxItemSet &rSet)
+{
+ const int nSel = GetShell().GetSelectionType();
+
+ if ((nSel & SwWrtShell::SEL_GRF) || (nSel & SwWrtShell::SEL_OLE))
+ rSet.DisableItem(FN_INSERT_FRAME);
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.199 2000/09/18 16:06:04 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.198 2000/09/07 15:59:29 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.197 2000/08/17 11:42:59 jp
+ remove the SW graphicmanager
+
+ Revision 1.196 2000/05/26 07:21:32 os
+ old SW Basic API Slots removed
+
+ Revision 1.195 2000/05/10 11:53:01 os
+ Basic API removed
+
+ Revision 1.194 2000/04/20 12:51:52 os
+ GetName() returns String&
+
+ Revision 1.193 2000/04/18 14:58:23 os
+ UNICODE
+
+ Revision 1.192 2000/03/03 15:17:03 os
+ StarView remainders removed
+
+ Revision 1.191 1999/09/24 14:38:32 os
+ hlnkitem.hxx now in SVX
+
+ Revision 1.190 1999/07/30 15:39:08 HR
+ #65293#: conflict with <goodies/grfmgr.hxx>
+
+
+ Rev 1.189 30 Jul 1999 17:39:08 HR
+ #65293#: conflict with <goodies/grfmgr.hxx>
+
+ Rev 1.188 02 Feb 1999 13:35:28 JP
+ Task #58423#: InsertDBCol - optional kann eine Rahmenvorlage mitgegeben werden
+
+ Rev 1.187 29 Jan 1999 17:19:38 JP
+ Task #58423#: Reports mit Bildern aus der Datenbank
+
+ Rev 1.186 27 Nov 1998 15:50:18 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.185 08 Sep 1998 17:03:06 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/shells/grfsh.cxx b/sw/source/ui/shells/grfsh.cxx
new file mode 100644
index 000000000000..619273c6a9fb
--- /dev/null
+++ b/sw/source/ui/shells/grfsh.cxx
@@ -0,0 +1,1010 @@
+/*************************************************************************
+ *
+ * $RCSfile: grfsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SVX_SIZEITEM_HXX //autogen
+#include <svx/sizeitem.hxx>
+#endif
+#ifndef _SVX_PROTITEM_HXX //autogen
+#include <svx/protitem.hxx>
+#endif
+#ifndef _SFX_SAVEOPT_HXX //autogen
+#include <sfx2/saveopt.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SVX_IMPGRF_HXX //autogen
+#include <svx/impgrf.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SDGLUITM_HXX
+#include <svx/sdgluitm.hxx>
+#endif
+#ifndef _SDGCOITM_HXX
+#include <svx/sdgcoitm.hxx>
+#endif
+#ifndef _SDGGAITM_HXX
+#include <svx/sdggaitm.hxx>
+#endif
+#ifndef _SDGTRITM_HXX
+#include <svx/sdgtritm.hxx>
+#endif
+#ifndef _SDGINITM_HXX
+#include <svx/sdginitm.hxx>
+#endif
+#ifndef _SDGMOITM_HXX
+#include <svx/sdgmoitm.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+
+#ifndef _FMTURL_HXX //autogen
+#include <fmturl.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _TEXTSH_HXX
+#include <textsh.hxx>
+#endif
+#ifndef _GRFSH_HXX
+#include <grfsh.hxx>
+#endif
+#ifndef _FRMMGR_HXX
+#include <frmmgr.hxx>
+#endif
+#ifndef _FRMDLG_HXX
+#include <frmdlg.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+#ifndef _GRFATR_HXX
+#include <grfatr.hxx>
+#endif
+#ifndef _USRPREF_HXX
+#include <usrpref.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _CAPTION_HXX
+#include <caption.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+
+#ifndef _SHELLS_HRC
+#include <shells.hrc>
+#endif
+#ifndef _POPUP_HRC
+#include <popup.hrc>
+#endif
+
+#define SwGrfShell
+#include "itemdef.hxx"
+#include "swslots.hxx"
+
+
+
+SFX_IMPL_INTERFACE(SwGrfShell, SwBaseShell, SW_RES(STR_SHELLNAME_GRAPHIC))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_GRF_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_GRAFIK_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_GRAFIK));
+}
+
+
+void SwGrfShell::Execute(SfxRequest &rReq)
+{
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ SwWrtShell &rSh = GetShell();
+
+ USHORT nSlot = rReq.GetSlot();
+ switch(nSlot)
+ {
+ case SID_INSERT_GRAPHIC:
+ case FN_FORMAT_GRAFIC_DLG:
+ {
+ SwFlyFrmAttrMgr aMgr( FALSE, &rSh, rSh.IsFrmSelected() ?
+ FRMMGR_TYPE_NONE : FRMMGR_TYPE_GRF);
+ const SwViewOption* pVOpt = rSh.GetViewOptions();
+ SwViewOption aUsrPref( *pVOpt );
+
+ SfxItemSet aSet(GetPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1,
+ RES_GRFATR_MIRRORGRF, RES_GRFATR_CROPGRF,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
+ SID_ATTR_GRAF_KEEP_ZOOM, SID_ATTR_GRAF_KEEP_ZOOM,
+ SID_ATTR_GRAF_FRMSIZE, SID_ATTR_GRAF_FRMSIZE,
+ SID_ATTR_GRAF_FRMSIZE_PERCENT, SID_ATTR_GRAF_FRMSIZE_PERCENT,
+ SID_ATTR_GRAF_GRAPHIC, SID_ATTR_GRAF_GRAPHIC,
+ FN_PARAM_GRF_CONNECT, FN_PARAM_GRF_CONNECT,
+ SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
+ FN_GET_PRINT_AREA, FN_GET_PRINT_AREA,
+ FN_SET_FRM_NAME, FN_KEEP_ASPECT_RATIO,
+ FN_PARAM_GRF_DIALOG, FN_PARAM_GRF_DIALOG,
+ SID_DOCFRAME, SID_DOCFRAME,
+ SID_HTML_MODE, SID_HTML_MODE,
+ FN_SET_FRM_ALT_NAME, FN_SET_FRM_ALT_NAME,
+ 0);
+
+ USHORT nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
+ aSet.Put(SfxUInt16Item(SID_HTML_MODE, nHtmlMode));
+ FieldUnit eMetric = ::GetDfltMetric((0 != (nHtmlMode&HTMLMODE_ON)));
+ SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, eMetric));
+
+ const SwRect* pRect = &rSh.GetAnyCurRect(RECT_PAGE);
+ SwFmtFrmSize aFrmSize( ATT_VAR_SIZE, pRect->Width(), pRect->Height());
+ aFrmSize.SetWhich( GetPool().GetWhich( SID_ATTR_PAGE_SIZE ) );
+ aSet.Put( aFrmSize );
+
+ aSet.Put(SfxStringItem(FN_SET_FRM_NAME, rSh.GetFlyName()));
+ if(nSlot == FN_FORMAT_GRAFIC_DLG)
+ aSet.Put(SfxStringItem(FN_SET_FRM_ALT_NAME, rSh.GetAlternateText()));
+
+ pRect = &rSh.GetAnyCurRect(RECT_PAGE_PRT);
+ aFrmSize.SetWidth( pRect->Width() );
+ aFrmSize.SetHeight( pRect->Height() );
+ aFrmSize.SetWhich( GetPool().GetWhich(FN_GET_PRINT_AREA) );
+ aSet.Put( aFrmSize );
+
+ aSet.Put( aMgr.GetAttrSet() );
+ aSet.SetParent( aMgr.GetAttrSet().GetParent() );
+
+ // Bei %-Werten Groesse initialisieren
+ SwFmtFrmSize& rSize = (SwFmtFrmSize&)aSet.Get(RES_FRM_SIZE);
+ if (rSize.GetWidthPercent() && rSize.GetWidthPercent() != 0xff)
+ rSize.SetWidth(rSh.GetAnyCurRect(RECT_FLY_EMBEDDED).Width());
+ if (rSize.GetHeightPercent() && rSize.GetHeightPercent() != 0xff)
+ rSize.SetHeight(rSh.GetAnyCurRect(RECT_FLY_EMBEDDED).Height());
+
+ // and now set the size for "external" tabpages
+ {
+ SvxSizeItem aSzItm( SID_ATTR_GRAF_FRMSIZE, rSize.GetSize() );
+ aSet.Put( aSzItm );
+
+ Size aSz( rSize.GetWidthPercent(), rSize.GetHeightPercent() );
+ if( 0xff == aSz.Width() ) aSz.Width() = 0;
+ if( 0xff == aSz.Height() ) aSz.Height() = 0;
+
+ aSzItm.SetSize( aSz );
+ aSzItm.SetWhich( SID_ATTR_GRAF_FRMSIZE_PERCENT );
+ aSet.Put( aSzItm );
+ }
+
+ String sGrfNm, sFilterNm;
+ rSh.GetGrfNms( &sGrfNm, &sFilterNm );
+ if( sGrfNm.Len() )
+ {
+ aSet.Put( SvxBrushItem( INetURLObject::decode( sGrfNm,
+ INET_HEX_ESCAPE,
+ INetURLObject::DECODE_WITH_CHARSET,
+ RTL_TEXTENCODING_UTF8 ),
+ sFilterNm, GPOS_LT,
+ SID_ATTR_GRAF_GRAPHIC ));
+ }
+ else
+ {
+ aSet.Put( SvxBrushItem( rSh.GetGraphicObj(), GPOS_LT,
+ SID_ATTR_GRAF_GRAPHIC ));
+ }
+ aSet.Put(SfxBoolItem( FN_PARAM_GRF_CONNECT, sGrfNm.Len() ));
+
+ // get Mirror and Crop
+ {
+ SfxItemSet aTmpSet( rSh.GetAttrPool(),
+ RES_GRFATR_MIRRORGRF, RES_GRFATR_CROPGRF );
+
+ rSh.GetAttr( aTmpSet );
+ aSet.Put( aTmpSet );
+ }
+
+ aSet.Put(SfxBoolItem(FN_KEEP_ASPECT_RATIO, aUsrPref.IsKeepRatio()));
+ aSet.Put(SfxBoolItem( SID_ATTR_GRAF_KEEP_ZOOM, aUsrPref.IsGrfKeepZoom()));
+
+ aSet.Put(SfxFrameItem( SID_DOCFRAME, GetView().GetViewFrame()->GetTopFrame()));
+
+ SwFrmDlg *pDlg = new SwFrmDlg( GetView().GetViewFrame(),
+ GetView().GetWindow(),
+ aSet, FALSE, DLG_FRM_GRF );
+ if( pDlg->Execute() )
+ {
+ rSh.StartAllAction();
+ rSh.StartUndo(UNDO_START);
+ const SfxPoolItem* pItem;
+ SfxItemSet* pSet = (SfxItemSet*)pDlg->GetOutputItemSet();
+
+ // change the 2 frmsize SizeItems to the correct SwFrmSizeItem
+ if( SFX_ITEM_SET == pSet->GetItemState(
+ SID_ATTR_GRAF_FRMSIZE, FALSE, &pItem ))
+ {
+ SwFmtFrmSize aSize;
+ const Size& rSz = ((SvxSizeItem*)pItem)->GetSize();
+ aSize.SetWidth( rSz.Width() );
+ aSize.SetHeight( rSz.Height() );
+
+ if( SFX_ITEM_SET == pSet->GetItemState(
+ SID_ATTR_GRAF_FRMSIZE_PERCENT, FALSE, &pItem ))
+ {
+ const Size& rSz = ((SvxSizeItem*)pItem)->GetSize();
+ aSize.SetWidthPercent( rSz.Width() );
+ aSize.SetHeightPercent( rSz.Height() );
+ }
+ pSet->Put( aSize );
+ }
+ else
+ pSet->ClearItem( RES_FRM_SIZE );
+
+ // Vorlagen-AutoUpdate
+ SwFrmFmt* pFmt = rSh.GetCurFrmFmt();
+ if(pFmt && pFmt->IsAutoUpdateFmt())
+ {
+ pFmt->SetAttr(*pSet);
+ SfxItemSet aShellSet(GetPool(), RES_FRM_SIZE, RES_FRM_SIZE,
+ RES_SURROUND, RES_SURROUND,
+ RES_ANCHOR, RES_ANCHOR,
+ RES_VERT_ORIENT,RES_HORI_ORIENT,
+ 0);
+ aShellSet.Put(*pSet);
+ aMgr.SetAttrSet(aShellSet);
+ }
+ else
+ {
+ aMgr.SetAttrSet(*pSet);
+ }
+ aMgr.UpdateFlyFrm();
+
+ BOOL bApplyUsrPref = FALSE;
+ if (SFX_ITEM_SET == pSet->GetItemState(
+ FN_KEEP_ASPECT_RATIO, TRUE, &pItem ))
+ {
+ aUsrPref.SetKeepRatio(
+ ((const SfxBoolItem*)pItem)->GetValue() );
+ bApplyUsrPref = TRUE;
+ }
+ if( SFX_ITEM_SET == pSet->GetItemState(
+ SID_ATTR_GRAF_KEEP_ZOOM, TRUE, &pItem ))
+ {
+ aUsrPref.SetGrfKeepZoom(
+ ((const SfxBoolItem*)pItem)->GetValue() );
+ bApplyUsrPref = TRUE;
+ }
+
+ if( bApplyUsrPref )
+ SW_MOD()->ApplyUsrPref(aUsrPref, &GetView());
+
+ // and now set all the graphic attributes and other stuff
+ if( SFX_ITEM_SET == pSet->GetItemState(
+ SID_ATTR_GRAF_GRAPHIC, TRUE, &pItem ))
+ {
+ if( ((SvxBrushItem*)pItem)->GetGraphicLink() )
+ sGrfNm = *((SvxBrushItem*)pItem)->GetGraphicLink();
+ else
+ sGrfNm.Erase();
+
+ if( ((SvxBrushItem*)pItem)->GetGraphicFilter() )
+ sFilterNm = *((SvxBrushItem*)pItem)->GetGraphicFilter();
+ else
+ sFilterNm.Erase();
+
+ if( sGrfNm.Len() )
+ {
+ SwWait aWait( *GetView().GetDocShell(), TRUE );
+ rSh.ReRead( URIHelper::SmartRelToAbs( sGrfNm ),
+ sFilterNm, 0 );
+ }
+ }
+ if( SFX_ITEM_SET == pSet->GetItemState(
+ FN_SET_FRM_ALT_NAME, TRUE, &pItem ))
+ rSh.SetAlternateText(
+ ((const SfxStringItem*)pItem)->GetValue() );
+
+ SfxItemSet aGrfSet( rSh.GetAttrPool(), RES_GRFATR_BEGIN,
+ RES_GRFATR_END-1 );
+ aGrfSet.Put( *pSet );
+ if( aGrfSet.Count() )
+ rSh.SetAttr( aGrfSet );
+
+ rSh.EndUndo(UNDO_END);
+ rSh.EndAllAction();
+ }
+ delete pDlg;
+ }
+ break;
+
+ case SID_SIM_START:
+ if ( SFX_APP()->HasFeature( SFX_FEATURE_SIMAGE ))
+ {
+ String sGrfNm;
+ rSh.GetGrfNms( &sGrfNm, 0 );
+
+ if( sGrfNm.Len() )
+ {
+ InfoBox aAsk( GetView().GetWindow(),
+ SW_RES(MSG_REMOVE_LINK));
+ if( RET_NO == aAsk.Execute())
+ break;
+ }
+
+ GetView().GetEditWin().GrfToOle();
+ if( rSh.IsOLEObj() )
+ {
+ rSh.LaunchOLEObj();
+ }
+ else
+ rSh.GetView().GetViewFrame()->GetDispatcher()->Execute( FN_FORMAT_GRAFIC_DLG );
+ }
+ break;
+ case FN_GRAPHIC_MIRROR_ON_EVEN_PAGES:
+ {
+ SfxItemSet aSet(rSh.GetAttrPool(), RES_GRFATR_MIRRORGRF, RES_GRFATR_MIRRORGRF);
+ rSh.GetAttr( aSet );
+ SwMirrorGrf aGrf((const SwMirrorGrf &)aSet.Get(RES_GRFATR_MIRRORGRF));
+ aGrf.SetGrfToggle(!aGrf.IsGrfToggle());
+ rSh.SetAttr(aGrf);
+ }
+ break;
+
+
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
+ }
+
+}
+
+
+void SwGrfShell::ExecAttr( SfxRequest &rReq )
+{
+ USHORT nGrfType;
+ if( CNT_GRF == GetShell().GetCntType() &&
+ ( GRAPHIC_BITMAP == ( nGrfType = GetShell().GetGraphicType()) ||
+ GRAPHIC_GDIMETAFILE == nGrfType ))
+ {
+ SfxItemSet aGrfSet( GetShell().GetAttrPool(), RES_GRFATR_BEGIN,
+ RES_GRFATR_END -1 );
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem;
+ USHORT nSlot = rReq.GetSlot();
+ if( !pArgs || SFX_ITEM_SET != pArgs->GetItemState( nSlot, FALSE, &pItem ))
+ pItem = 0;
+
+ switch( nSlot )
+ {
+ case FN_FLIP_VERT_GRAFIC:
+ case FN_FLIP_HORZ_GRAFIC:
+ {
+ GetShell().GetAttr( aGrfSet );
+ SwMirrorGrf aMirror( (SwMirrorGrf&)aGrfSet.Get(
+ RES_GRFATR_MIRRORGRF ) );
+ USHORT nMirror = aMirror.GetValue();
+ if( FN_FLIP_VERT_GRAFIC == nSlot )
+ switch( nMirror )
+ {
+ case RES_DONT_MIRROR_GRF: nMirror = RES_MIRROR_GRF_VERT;
+ break;
+ case RES_MIRROR_GRF_HOR: nMirror = RES_MIRROR_GRF_BOTH;
+ break;
+ case RES_MIRROR_GRF_VERT: nMirror = RES_DONT_MIRROR_GRF;
+ break;
+ case RES_MIRROR_GRF_BOTH: nMirror = RES_MIRROR_GRF_HOR;
+ break;
+ }
+ else
+ switch( nMirror )
+ {
+ case RES_DONT_MIRROR_GRF: nMirror = RES_MIRROR_GRF_HOR;
+ break;
+ case RES_MIRROR_GRF_VERT: nMirror = RES_MIRROR_GRF_BOTH;
+ break;
+ case RES_MIRROR_GRF_HOR: nMirror = RES_DONT_MIRROR_GRF;
+ break;
+ case RES_MIRROR_GRF_BOTH: nMirror = RES_MIRROR_GRF_VERT;
+ break;
+ }
+ aMirror.SetValue( nMirror );
+ aGrfSet.ClearItem();
+ aGrfSet.Put( aMirror );
+ }
+ break;
+
+ case SID_ATTR_GRAF_LUMINANCE:
+ if( pItem )
+ aGrfSet.Put( SwLuminanceGrf(
+ ((SfxInt16Item*)pItem)->GetValue() ));
+ break;
+ case SID_ATTR_GRAF_CONTRAST:
+ if( pItem )
+ aGrfSet.Put( SwContrastGrf(
+ ((SfxInt16Item*)pItem)->GetValue() ));
+ break;
+ case SID_ATTR_GRAF_RED:
+ if( pItem )
+ aGrfSet.Put( SwChannelRGrf(
+ ((SfxInt16Item*)pItem)->GetValue() ));
+ break;
+ case SID_ATTR_GRAF_GREEN:
+ if( pItem )
+ aGrfSet.Put( SwChannelGGrf(
+ ((SfxInt16Item*)pItem)->GetValue() ));
+ break;
+ case SID_ATTR_GRAF_BLUE:
+ if( pItem )
+ aGrfSet.Put( SwChannelBGrf(
+ ((SfxInt16Item*)pItem)->GetValue() ));
+ break;
+ case SID_ATTR_GRAF_GAMMA:
+ if( pItem )
+ aGrfSet.Put( SwGammaGrf(
+ ((SfxUInt32Item*)pItem)->GetValue() / 100 ));
+ break;
+ case SID_ATTR_GRAF_TRANSPARENCE:
+ if( pItem )
+ aGrfSet.Put( SwTransparencyGrf(
+ ((SfxUInt16Item*)pItem)->GetValue() ));
+ break;
+ case SID_ATTR_GRAF_INVERT:
+ if( pItem )
+ aGrfSet.Put( SwInvertGrf(
+ ((SfxBoolItem*)pItem)->GetValue() ));
+ break;
+
+ case SID_ATTR_GRAF_MODE:
+ if( pItem )
+ aGrfSet.Put( SwDrawModeGrf(
+ ((SfxUInt16Item*)pItem)->GetValue() ));
+ break;
+
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ }
+ if( aGrfSet.Count() )
+ GetShell().SetAttr( aGrfSet );
+ }
+ GetView().GetViewFrame()->GetBindings().Invalidate(rReq.GetSlot());
+}
+
+
+void SwGrfShell::GetState(SfxItemSet &rSet)
+{
+ // case SID_SIM_START:
+ if ( GetShell().IsSelObjProtected(FLYPROTECT_CONTENT) ||
+ !SFX_APP()->HasFeature( SFX_FEATURE_SIMAGE ) )
+ {
+ rSet.DisableItem(SID_SIM_START);
+ }
+ else
+ {
+ SwDocShell &rSh = *GetView().GetDocShell();
+ if ( rSh.GetProtocol().IsInPlaceActive() ||
+ rSh.GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
+ rSet.DisableItem(SID_SIM_START);
+ }
+}
+
+
+void SwGrfShell::GetAttrState(SfxItemSet &rSet)
+{
+ SwWrtShell &rSh = GetShell();
+ SfxItemSet aCoreSet( GetPool(), aNoTxtNodeSetRange );
+ rSh.GetAttr( aCoreSet );
+ BOOL bParentCntProt = 0 != rSh.IsSelObjProtected(
+ (FlyProtectType)(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) );
+
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ while( nWhich )
+ {
+ BOOL bDisable = bParentCntProt;
+ switch( nWhich )
+ {
+ case FN_FORMAT_GRAFIC_DLG:
+ break;
+
+ case FN_FLIP_VERT_GRAFIC:
+ if( !bParentCntProt )
+ {
+ UINT16 nState = ((const SwMirrorGrf &) aCoreSet.Get(
+ RES_GRFATR_MIRRORGRF )).GetValue();
+
+ rSet.Put(SfxBoolItem( nWhich, nState == RES_MIRROR_GRF_VERT ||
+ nState == RES_MIRROR_GRF_BOTH));
+ }
+ break;
+
+ case FN_FLIP_HORZ_GRAFIC:
+ if( !bParentCntProt )
+ {
+ UINT16 nState = ((const SwMirrorGrf &) aCoreSet.Get(
+ RES_GRFATR_MIRRORGRF )).GetValue();
+
+ rSet.Put(SfxBoolItem( nWhich, nState == RES_MIRROR_GRF_HOR ||
+ nState == RES_MIRROR_GRF_BOTH));
+ }
+ break;
+
+
+ case SID_ATTR_GRAF_LUMINANCE:
+ if( !bParentCntProt )
+ rSet.Put( SfxInt16Item( nWhich, ((SwLuminanceGrf&)
+ aCoreSet.Get(RES_GRFATR_LUMINANCE)).GetValue() ));
+ break;
+ case SID_ATTR_GRAF_CONTRAST:
+ if( !bParentCntProt )
+ rSet.Put( SfxInt16Item( nWhich, ((SwContrastGrf&)
+ aCoreSet.Get(RES_GRFATR_CONTRAST)).GetValue() ));
+ break;
+ case SID_ATTR_GRAF_RED:
+ if( !bParentCntProt )
+ rSet.Put( SfxInt16Item( nWhich, ((SwChannelRGrf&)
+ aCoreSet.Get(RES_GRFATR_CHANNELR)).GetValue() ));
+ break;
+ case SID_ATTR_GRAF_GREEN:
+ if( !bParentCntProt )
+ rSet.Put( SfxInt16Item( nWhich, ((SwChannelGGrf&)
+ aCoreSet.Get(RES_GRFATR_CHANNELG)).GetValue() ));
+ break;
+ case SID_ATTR_GRAF_BLUE:
+ if( !bParentCntProt )
+ rSet.Put( SfxInt16Item( nWhich, ((SwChannelBGrf&)
+ aCoreSet.Get(RES_GRFATR_CHANNELB)).GetValue() ));
+ break;
+
+ case SID_ATTR_GRAF_GAMMA:
+ if( !bParentCntProt )
+ rSet.Put( SfxUInt32Item( nWhich, ((SwGammaGrf&)
+ aCoreSet.Get(RES_GRFATR_GAMMA)).GetValue() * 100 ));
+ break;
+ case SID_ATTR_GRAF_TRANSPARENCE:
+ if( !bParentCntProt )
+ {
+ const GraphicObject& rGrfObj = rSh.GetGraphicObj();
+ if( rGrfObj.IsAnimated() ||
+ GRAPHIC_GDIMETAFILE == rGrfObj.GetType() )
+ bDisable = TRUE;
+ else
+ rSet.Put( SfxUInt16Item( nWhich, ((SwTransparencyGrf&)
+ aCoreSet.Get(RES_GRFATR_TRANSPARENCY)).GetValue() ));
+ }
+ break;
+ case SID_ATTR_GRAF_INVERT:
+ if( !bParentCntProt )
+ rSet.Put( SfxBoolItem( nWhich, ((SwInvertGrf&)
+ aCoreSet.Get(RES_GRFATR_INVERT)).GetValue() ));
+ break;
+
+ case SID_ATTR_GRAF_MODE:
+ if( !bParentCntProt )
+ rSet.Put( SfxUInt16Item( nWhich, (GraphicDrawMode)((SwDrawModeGrf&)
+ aCoreSet.Get(RES_GRFATR_DRAWMODE)).GetValue() ));
+ break;
+
+ default:
+ bDisable = FALSE;
+ }
+
+ if( bDisable )
+ rSet.DisableItem( nWhich );
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+SwGrfShell::SwGrfShell(SwView &rView) :
+ SwBaseShell(rView)
+
+{
+ SetName(String::CreateFromAscii("Graphic"));
+ SetHelpId(SW_GRFSHELL);
+}
+
+
+BOOL SwTextShell::InsertGraphicDlg()
+{
+#ifndef ENABLE_PROP_WITHOUTLINK
+#define ENABLE_PROP_WITHOUTLINK 0x08
+#endif
+
+ BOOL bReturn = FALSE;
+ SwView &rVw = GetView();
+ USHORT nHtmlMode = ::GetHtmlMode(rVw.GetDocShell());
+ // im HTML-Mode nur verknuepft einfuegen
+ USHORT nEnable = ENABLE_ALL;
+ if(nHtmlMode & HTMLMODE_ON)
+ {
+ nEnable &= ~ENABLE_LINK;
+ nEnable |= ENABLE_PROP_WITHOUTLINK;
+ }
+ SvxImportGraphicDialog *pDlg =
+ new SvxImportGraphicDialog( rVw.GetWindow(),
+ SW_RESSTR(STR_INSERT_GRAPHIC ), nEnable );
+
+ pDlg->SetPropertyHdl(LINK(this, SwTextShell, InitGraphicFrame));
+
+ ASSERT( !pInsGrfSetPtr, "who has not delete the GraphicSet pointer?" );
+ pInsGrfSetPtr = 0;
+
+ if( pDlg->Execute() == RET_OK )
+ {
+ GetShell().StartAction();
+ GetShell().StartUndo(UNDO_INSERT);
+ Graphic* pPreViewGrf = pDlg->GetGraphic();
+
+ BOOL bAsLink = nHtmlMode & HTMLMODE_ON ? TRUE : pDlg->AsLink();
+ USHORT nError = InsertGraphic( pDlg->GetPath(), pDlg->GetCurFilter(),
+ bAsLink, &pDlg->GetFilter(), pPreViewGrf );
+
+ // Format ist ungleich Current Filter, jetzt mit auto. detection
+ if( nError == GRFILTER_FORMATERROR )
+ nError = InsertGraphic( pDlg->GetPath(), aEmptyStr, bAsLink,
+ &pDlg->GetFilter(), pPreViewGrf );
+
+ RESOURCE_TYPE nResId = 0;
+ switch( nError )
+ {
+ case GRFILTER_OPENERROR:
+ nResId = STR_GRFILTER_OPENERROR;
+ break;
+ case GRFILTER_IOERROR:
+ nResId = STR_GRFILTER_IOERROR;
+ break;
+ case GRFILTER_FORMATERROR:
+ nResId = STR_GRFILTER_FORMATERROR;
+ break;
+ case GRFILTER_VERSIONERROR:
+ nResId = STR_GRFILTER_VERSIONERROR;
+ break;
+ case GRFILTER_FILTERERROR:
+ nResId = STR_GRFILTER_FILTERERROR;
+ break;
+ case GRFILTER_TOOBIG:
+ nResId = STR_GRFILTER_TOOBIG;
+ break;
+ }
+
+ if( nResId )
+ {
+ GetShell().EndAction();
+ InfoBox aInfoBox( rVw.GetWindow(), SW_RESSTR( nResId ));
+ aInfoBox.Execute();
+ }
+ else
+ {
+ // set the specific graphic attrbutes to the graphic
+ if( pInsGrfSetPtr )
+ {
+ // set the normal graphic attributes
+ SwWrtShell& rSh = GetShell();
+ rSh.SetAttr( *pInsGrfSetPtr );
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pInsGrfSetPtr->GetItemState(
+ FN_SET_FRM_ALT_NAME, TRUE, &pItem ))
+ rSh.SetAlternateText(
+ ((const SfxStringItem*)pItem)->GetValue() );
+ }
+ GetShell().EndAction();
+ bReturn = TRUE;
+ rVw.AutoCaption( GRAPHIC_CAP );
+ }
+ rVw.GetWrtShell().EndUndo(UNDO_INSERT); // wegen moegl. Shellwechsel
+ }
+
+ delete pInsGrfSetPtr, pInsGrfSetPtr = 0;
+
+ DELETEZ( pFrmMgr );
+ delete pDlg;
+
+ return bReturn;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwTextShell, InitGraphicFrame, Button *, pButton )
+{
+//OS: pButton ist eigentlich der Pointer auf den GrafikEinfuegen-Dialog
+ SwWrtShell &rSh = GetShell();
+ SwViewOption aUsrPref( *rSh.GetViewOptions() );
+ SvxImportGraphicDialog* pGrfDlg = (SvxImportGraphicDialog*) pButton;
+ if (!pFrmMgr)
+ pFrmMgr = new SwFlyFrmAttrMgr( TRUE, &rSh, FRMMGR_TYPE_GRF );
+
+ static USHORT __READONLY_DATA aGrfAttrRange[] =
+ {
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
+
+ SID_ATTR_GRAF_KEEP_ZOOM, SID_ATTR_GRAF_KEEP_ZOOM,
+ SID_ATTR_GRAF_FRMSIZE, SID_ATTR_GRAF_FRMSIZE,
+ SID_ATTR_GRAF_FRMSIZE_PERCENT, SID_ATTR_GRAF_FRMSIZE_PERCENT,
+ SID_ATTR_GRAF_GRAPHIC, SID_ATTR_GRAF_GRAPHIC,
+
+ FN_PARAM_GRF_CONNECT, FN_PARAM_GRF_CONNECT,
+ FN_PARAM_FILTER, FN_PARAM_FILTER,
+ RES_GRFATR_MIRRORGRF, RES_GRFATR_CROPGRF,
+ SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
+ FN_GET_PRINT_AREA, FN_GET_PRINT_AREA,
+ FN_SET_FRM_NAME, FN_SET_FRM_NAME,
+ FN_KEEP_ASPECT_RATIO, FN_KEEP_ASPECT_RATIO,
+ FN_PARAM_GRF_REALSIZE, FN_PARAM_GRF_DIALOG,
+ SID_DOCFRAME, SID_DOCFRAME,
+ SID_HTML_MODE, SID_HTML_MODE,
+ FN_SET_FRM_ALT_NAME, FN_SET_FRM_ALT_NAME,
+ 0
+ };
+
+ SfxItemSet aSet(GetPool(), aGrfAttrRange );
+
+ const SwRect &rPg = GetShell().GetAnyCurRect(RECT_PAGE);
+ SwFmtFrmSize aFrmSize(ATT_VAR_SIZE, rPg.Width(), rPg.Height());
+ aFrmSize.SetWhich(GetPool().GetWhich(SID_ATTR_PAGE_SIZE));
+ aSet.Put(aFrmSize);
+
+ const SwRect &rPr = GetShell().GetAnyCurRect(RECT_PAGE_PRT);
+ SwFmtFrmSize aPrtSize(ATT_VAR_SIZE, rPr.Width(), rPr.Height());
+ aPrtSize.SetWhich(GetPool().GetWhich(FN_GET_PRINT_AREA));
+ aSet.Put(aPrtSize);
+
+ aSet.Put( pFrmMgr->GetAttrSet() );
+ aSet.SetParent( pFrmMgr->GetAttrSet().GetParent() );
+
+ aSet.Put(SfxFrameItem( SID_DOCFRAME, GetView().GetViewFrame()->GetTopFrame()));
+
+ // niemals connected, sonst darf man den Grafikdialog doppelt aufrufen!
+ aSet.Put(SfxBoolItem(FN_PARAM_GRF_CONNECT, FALSE));
+ aSet.Put(SfxBoolItem(FN_KEEP_ASPECT_RATIO, aUsrPref.IsKeepRatio()));
+
+ aSet.Put(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(GetView().GetDocShell())));
+
+ const Graphic* pGrf = pGrfDlg->GetGraphic();
+ if(pGrf)
+ {
+ Size aSize = ::GetGraphicSizeTwip(*pGrf, &GetView().GetEditWin());
+ aSize.Width() += pFrmMgr->CalcWidthSpace();
+ aSize.Height()+= pFrmMgr->CalcHeightSpace();
+ aSet.Put(SwFmtFrmSize(ATT_VAR_SIZE, aSize.Width(), aSize.Height()));
+ aSet.Put(SvxSizeItem( FN_PARAM_GRF_REALSIZE, aSize ));
+ aSet.Put( SvxSizeItem( SID_ATTR_GRAF_FRMSIZE, aSize ));
+
+ String sGrfNm( pGrfDlg->GetPath() );
+ if( sGrfNm.Len() )
+ {
+ aSet.Put( SvxBrushItem( INetURLObject::decode( sGrfNm,
+ INET_HEX_ESCAPE,
+ INetURLObject::DECODE_WITH_CHARSET,
+ RTL_TEXTENCODING_UTF8 ),
+ aEmptyStr, GPOS_LT,
+ SID_ATTR_GRAF_GRAPHIC ));
+ }
+ else
+ {
+ aSet.Put( SvxBrushItem( *pGrf, GPOS_LT, SID_ATTR_GRAF_GRAPHIC ));
+ }
+ }
+
+
+ SwFrmDlg *pDlg = new SwFrmDlg( GetView().GetViewFrame(), pButton,
+ aSet, pGrf == 0, DLG_FRM_GRF );
+ if( pDlg->Execute() )
+ {
+ SfxItemSet* pSet = (SfxItemSet*)pDlg->GetOutputItemSet();
+
+ // change the 2 frmsize SizeItems to the correct SwFrmSizeItem
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pSet->GetItemState(
+ SID_ATTR_GRAF_FRMSIZE, FALSE, &pItem ))
+ {
+ SwFmtFrmSize aSize;
+ const Size& rSz = ((SvxSizeItem*)pItem)->GetSize();
+ aSize.SetWidth( rSz.Width() );
+ aSize.SetHeight( rSz.Height() );
+
+ if( SFX_ITEM_SET == pSet->GetItemState(
+ SID_ATTR_GRAF_FRMSIZE_PERCENT, FALSE, &pItem ))
+ {
+ const Size& rSz = ((SvxSizeItem*)pItem)->GetSize();
+ aSize.SetWidthPercent( rSz.Width() );
+ aSize.SetHeightPercent( rSz.Height() );
+ }
+ pSet->Put( aSize );
+ }
+ else
+ pSet->ClearItem( RES_FRM_SIZE );
+
+ pFrmMgr->SetAttrSet( *pSet );
+
+ if( SFX_ITEM_SET == pSet->GetItemState(FN_KEEP_ASPECT_RATIO, TRUE, &pItem))
+ {
+ aUsrPref.SetKeepRatio( ((const SfxBoolItem*)pItem)->GetValue() );
+ SW_MOD()->ApplyUsrPref(aUsrPref, &GetView());
+ }
+
+ if( pInsGrfSetPtr )
+ pInsGrfSetPtr->ClearItem();
+ else
+ pInsGrfSetPtr = new SfxItemSet( rSh.GetAttrPool(),
+ RES_GRFATR_MIRRORGRF, RES_GRFATR_CROPGRF,
+ FN_SET_FRM_ALT_NAME, FN_SET_FRM_ALT_NAME,
+ 0 );
+
+ pInsGrfSetPtr->Put( *pSet );
+ if( !pInsGrfSetPtr->Count() )
+ delete pInsGrfSetPtr, pInsGrfSetPtr = 0;
+ }
+
+ delete pDlg;
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.134 2000/09/18 16:06:04 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.133 2000/09/07 15:59:29 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.132 2000/08/25 14:08:54 jp
+ Graphic Crop-Attribut and TabPage exported to SVX
+
+ Revision 1.131 2000/08/17 11:43:17 jp
+ remove the SW graphicmanager and UI with decoded URLs
+
+ Revision 1.130 2000/08/17 06:34:11 jp
+ Bug #77713#: GetAttrState - Transparency not for animated graphics and metafiles
+
+ Revision 1.129 2000/08/08 13:44:14 os
+ #77423# separate graphic shell
+
+ Revision 1.128 2000/08/02 08:04:26 jp
+ changes for graphic attributes
+
+ Revision 1.127 2000/07/31 19:25:36 jp
+ new attributes for CJK/CTL and graphic
+
+ Revision 1.126 2000/05/26 07:21:32 os
+ old SW Basic API Slots removed
+
+ Revision 1.125 2000/05/10 11:53:02 os
+ Basic API removed
+
+ Revision 1.124 2000/04/18 14:58:24 os
+ UNICODE
+
+ Revision 1.123 2000/02/11 14:57:17 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.122 1999/11/22 14:55:36 os
+ operator precedence
+
+ Revision 1.121 1999/03/18 13:40:50 OS
+ #61169# #61489# Masseinheiten fuer Text u. HTML am Module setzen, nicht an der App
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/shells/listsh.cxx b/sw/source/ui/shells/listsh.cxx
new file mode 100644
index 000000000000..a979042841b7
--- /dev/null
+++ b/sw/source/ui/shells/listsh.cxx
@@ -0,0 +1,362 @@
+/*************************************************************************
+ *
+ * $RCSfile: listsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "cmdid.h"
+#include "uiparam.hxx"
+#include "hintids.hxx"
+
+#ifndef _SVX_SIZEITEM_HXX //autogen
+#include <svx/sizeitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SHL_HXX //autogen
+#include <tools/shl.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+
+
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#include "wrtsh.hxx"
+#include "swmodule.hxx"
+#include "frmatr.hxx"
+#include "helpid.h"
+#include "globals.hrc"
+#include "shells.hrc"
+#include "uinums.hxx"
+#include "listsh.hxx"
+#include "poolfmt.hxx"
+#include "view.hxx"
+#include "edtwin.hxx"
+
+#define SwListShell
+#include "itemdef.hxx"
+#include "swslots.hxx"
+
+
+SFX_IMPL_INTERFACE(SwListShell, SwBaseShell, SW_RES(STR_SHELLNAME_LIST))
+{
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_NUM_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_LIST));
+}
+
+
+TYPEINIT1(SwListShell,SwBaseShell)
+
+
+void SwListShell::Execute(SfxRequest &rReq)
+{
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+ SwWrtShell& rSh = GetShell();
+ switch (nSlot)
+ {
+ case FN_NUM_BULLET_DOWN:
+ rSh.NumUpDown();
+ GetView().GetViewFrame()->GetBindings().Invalidate( SID_TABLE_CELL ); // StatusZeile updaten!
+ break;
+
+ case FN_NUM_BULLET_NEXT:
+ rSh.GotoNextNum();
+ break;
+
+ case FN_NUM_BULLET_NONUM:
+ rSh.NoNum();
+ break;
+
+ case FN_NUM_BULLET_OFF:
+ rSh.DelNumRules();
+ break;
+
+ case FN_NUM_BULLET_OUTLINE_DOWN:
+ rSh.MoveNumParas(FALSE, FALSE);
+ break;
+
+ case FN_NUM_BULLET_OUTLINE_MOVEDOWN:
+ rSh.MoveNumParas(TRUE, FALSE);
+ break;
+
+ case FN_NUM_BULLET_OUTLINE_MOVEUP:
+ rSh.MoveNumParas(TRUE, TRUE);
+ break;
+
+ case FN_NUM_BULLET_OUTLINE_UP:
+ rSh.MoveNumParas(FALSE, TRUE);
+ break;
+
+ case FN_NUM_BULLET_PREV:
+ rSh.GotoPrevNum();
+ break;
+
+ case FN_NUM_BULLET_UP:
+ rSh.NumUpDown(FALSE);
+ GetView().GetViewFrame()->GetBindings().Invalidate( SID_TABLE_CELL ); // StatusZeile updaten!
+ break;
+
+
+ case FN_NUM_OR_NONUM:
+ {
+ BOOL bApi = rReq.IsAPI();
+ BOOL bDelete = !rSh.IsNoNum(!bApi);
+ if(pArgs )
+ bDelete = ((SfxBoolItem &)pArgs->Get(rReq.GetSlot())).GetValue();
+ rSh.NumOrNoNum( bDelete, !bApi );
+ }
+ break;
+ case FN_NUMBER_NEWSTART:
+ rSh.SetNumRuleStart(!rSh.IsNumRuleStart());
+ break;
+
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
+ }
+}
+
+
+void SwListShell::GetState(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch( nWhich )
+ {
+ case FN_NUM_OR_NONUM:
+ rSet.Put(SfxBoolItem(nWhich, GetShell().IsNoNum(FALSE)));
+ break;
+ case FN_NUMBER_NEWSTART:
+ rSet.Put(SfxBoolItem(nWhich, GetShell().IsNumRuleStart()));
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+SwListShell::SwListShell(SwView &rView) :
+ SwBaseShell(rView)
+{
+ SetName(String::CreateFromAscii("List"));
+ SetHelpId(SW_LISTSHELL);
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.68 2000/09/18 16:06:04 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.67 2000/09/07 15:59:30 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.66 2000/05/26 07:21:32 os
+ old SW Basic API Slots removed
+
+ Revision 1.65 2000/05/10 11:53:02 os
+ Basic API removed
+
+ Revision 1.64 2000/04/18 14:58:24 os
+ UNICODE
+
+ Revision 1.63 1999/03/12 14:13:38 OS
+ #63141# BulletURL setzen-> Groesse ermitteln
+
+
+ Rev 1.62 12 Mar 1999 15:13:38 OS
+ #63141# BulletURL setzen-> Groesse ermitteln
+
+ Rev 1.61 17 Nov 1998 10:58:32 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.60 06 Nov 1998 14:41:48 OS
+ #57903# NumOff kann weg
+
+ Rev 1.59 08 Dec 1997 11:50:04 OS
+ benannte Numerierungen entfernt
+
+ Rev 1.58 03 Dec 1997 17:07:08 OS
+ FN_NUMBER_NEWSTART eingebaut
+
+ Rev 1.57 24 Nov 1997 11:01:02 JP
+ Execute: bei NumUp/-Down die Statusleiste invalidieren
+
+ Rev 1.56 24 Nov 1997 09:47:04 MA
+ includes
+
+ Rev 1.55 17 Nov 1997 10:21:14 JP
+ Umstellung Numerierung
+
+ Rev 1.54 03 Nov 1997 13:55:48 MA
+ precomp entfernt
+
+ Rev 1.53 19 Aug 1997 10:54:50 OS
+ Exchange wird per API mit String beliefert #42898#
+
+ Rev 1.52 15 Aug 1997 11:48:38 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.51 11 Aug 1997 09:12:28 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.50 05 Aug 1997 16:29:14 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.49 08 Jul 1997 14:11:46 OS
+ ConfigItems von der App ans Module
+
+ Rev 1.48 11 Mar 1997 16:27:00 AMA
+ New: Absaetze verschieben durch Strg + CursorUp/Down (auch ausserhalb von Num.)
+
+ Rev 1.47 20 Feb 1997 19:40:08 OS
+ includes
+
+ Rev 1.46 20 Feb 1997 17:18:26 OS
+ kleiner Bug
+
+ Rev 1.45 20 Feb 1997 11:58:54 OS
+ NumLevel ans Basic rausgeben
+
+ Rev 1.44 19 Feb 1997 16:57:22 OS
+ Basic fuer die NumRules
+
+ Rev 1.43 11 Dec 1996 10:50:56 MA
+ Warnings
+
+ Rev 1.42 11 Nov 1996 13:37:34 MA
+ ResMgr
+
+ Rev 1.41 28 Aug 1996 15:55:18 OS
+ includes
+
+ Rev 1.40 13 Aug 1996 12:38:40 OS
+ neue Shellnamen im IDL-Interface
+
+ Rev 1.39 22 Jul 1996 20:54:26 JP
+ Anpassung an die neuen SwUiNumRules
+
+ Rev 1.38 25 Jun 1996 19:50:52 HJS
+ includes
+
+ Rev 1.37 17 Apr 1996 09:32:52 OM
+ Unbenutzte Fkt Disable entfernt
+
+ Rev 1.36 28 Mar 1996 14:20:50 OS
+ neu: NumberOrNoNumber
+
+ Rev 1.35 03 Dec 1995 11:22:08 OS
+ +include itemdef.hxx
+
+ Rev 1.34 29 Nov 1995 13:48:42 OS
+ -slotadd.hxx
+
+ Rev 1.33 27 Nov 1995 19:39:40 OM
+ swslots->303a
+
+ Rev 1.32 24 Nov 1995 16:59:32 OM
+ PCH->PRECOMPILED
+
+ Rev 1.31 17 Nov 1995 13:02:00 MA
+ Segmentierung
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/shells/makefile.mk b/sw/source/ui/shells/makefile.mk
new file mode 100644
index 000000000000..a07d291ae426
--- /dev/null
+++ b/sw/source/ui/shells/makefile.mk
@@ -0,0 +1,120 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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=sw
+TARGET=shells
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+SRCFILES = \
+ shells.src \
+ pseudo.src
+
+SLOFILES = \
+ $(SLO)$/basesh.obj \
+ $(SLO)$/beziersh.obj \
+ $(SLO)$/drawdlg.obj \
+ $(SLO)$/drawsh.obj \
+ $(SLO)$/drformsh.obj \
+ $(SLO)$/drwbassh.obj \
+ $(SLO)$/drwtxtex.obj \
+ $(SLO)$/drwtxtsh.obj \
+ $(SLO)$/frmsh.obj \
+ $(SLO)$/grfsh.obj \
+ $(SLO)$/listsh.obj \
+ $(SLO)$/olesh.obj \
+ $(SLO)$/slotadd.obj \
+ $(SLO)$/tabsh.obj \
+ $(SLO)$/textdrw.obj \
+ $(SLO)$/textfld.obj \
+ $(SLO)$/textglos.obj \
+ $(SLO)$/textidx.obj \
+ $(SLO)$/textsh.obj \
+ $(SLO)$/textsh1.obj \
+ $(SLO)$/textsh2.obj \
+ $(SLO)$/txtattr.obj \
+ $(SLO)$/txtcrsr.obj \
+ $(SLO)$/txtnum.obj
+
+EXCEPTIONSFILES = \
+ $(SLO)$/textsh2.obj \
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+$(SRS)$/shells.srs: $(SOLARINCDIR)$/svx$/globlmn.hrc
+
diff --git a/sw/source/ui/shells/olesh.cxx b/sw/source/ui/shells/olesh.cxx
new file mode 100644
index 000000000000..664fee5b20af
--- /dev/null
+++ b/sw/source/ui/shells/olesh.cxx
@@ -0,0 +1,224 @@
+/*************************************************************************
+ *
+ * $RCSfile: olesh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _IPOBJ_HXX //autogen
+#include <so3/ipobj.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _SFX_OBJITEM_HXX //autogen
+#include <sfx2/objitem.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _FRMSH_HXX
+#include <frmsh.hxx>
+#endif
+#ifndef _OLESH_HXX
+#include <olesh.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _POPUP_HRC
+#include <popup.hrc>
+#endif
+#ifndef _SHELLS_HRC
+#include <shells.hrc>
+#endif
+
+
+#define SwOleShell
+#ifndef _ITEMDEF_HXX
+#include <itemdef.hxx>
+#endif
+#ifndef _SWSLOTS_HXX
+#include <swslots.hxx>
+#endif
+
+
+SFX_IMPL_INTERFACE(SwOleShell, SwFrameShell, SW_RES(STR_SHELLNAME_OBJECT))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_OLE_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_OLE_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_OLE));
+}
+
+
+SwOleShell::SwOleShell(SwView &rView) :
+ SwFrameShell(rView)
+
+{
+ SetName(String::CreateFromAscii("Object"));
+ SetHelpId(SW_OLESHELL);
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.35 2000/09/18 16:06:04 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.34 2000/05/26 07:21:32 os
+ old SW Basic API Slots removed
+
+ Revision 1.33 2000/05/16 09:15:14 os
+ project usr removed
+
+ Revision 1.32 2000/05/10 11:53:02 os
+ Basic API removed
+
+ Revision 1.31 2000/05/09 14:41:35 os
+ BASIC interface partially removed
+
+ Revision 1.30 2000/04/18 14:58:24 os
+ UNICODE
+
+ Revision 1.29 2000/02/11 14:57:36 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.28 1998/11/03 10:53:02 JP
+ Task #57916#: Vorbereitungen fuer den Selektionshandler vom Chart
+
+
+ Rev 1.27 03 Nov 1998 11:53:02 JP
+ Task #57916#: Vorbereitungen fuer den Selektionshandler vom Chart
+
+ Rev 1.26 24 Nov 1997 09:46:52 MA
+ includes
+
+ Rev 1.25 03 Nov 1997 13:55:48 MA
+ precomp entfernt
+
+ Rev 1.24 26 Aug 1997 16:31:10 TRI
+ VCL Anpassungen
+
+ Rev 1.23 08 Aug 1997 17:29:08 OM
+ Headerfile-Umstellung
+
+ Rev 1.22 05 Aug 1997 16:29:12 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.21 01 Aug 1997 11:45:44 MH
+ chg: header
+
+ Rev 1.20 11 Nov 1996 13:37:34 MA
+ ResMgr
+
+ Rev 1.19 28 Aug 1996 15:55:14 OS
+ includes
+
+ Rev 1.18 13 Aug 1996 12:38:40 OS
+ neue Shellnamen im IDL-Interface
+
+ Rev 1.17 25 Jun 1996 19:51:50 HJS
+ includes
+
+ Rev 1.16 20 Mar 1996 12:41:14 HJS
+ funcdefs muessen unique sein!
+
+ Rev 1.15 06 Feb 1996 15:16:22 OS
+ neu: Activate/Deactivate fuer Objekte
+
+ Rev 1.14 26 Jan 1996 10:54:12 OS
+ neu: GetState - Ole-Objekt dem Basic herausreichen
+
+ Rev 1.13 03 Dec 1995 11:22:08 OS
+ +include itemdef.hxx
+
+ Rev 1.12 29 Nov 1995 13:47:54 OS
+ -slotadd.hxx
+
+ Rev 1.11 27 Nov 1995 19:40:06 OM
+ swslots->303a
+
+ Rev 1.10 24 Nov 1995 16:59:36 OM
+ PCH->PRECOMPILED
+
+ Rev 1.9 17 Nov 1995 13:03:40 MA
+ Segmentierung
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/shells/shells.src b/sw/source/ui/shells/shells.src
new file mode 100644
index 000000000000..cd95397a3040
--- /dev/null
+++ b/sw/source/ui/shells/shells.src
@@ -0,0 +1,2392 @@
+/*************************************************************************
+ *
+ * $RCSfile: shells.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include <svx/svxids.hrc>
+#include <svx/globlmn.hrc>
+#include "toolbox.hrc"
+#include "helpid.h"
+InfoBox MSG_REMOVE_LINK
+{
+ Buttons = WB_YES_NO ;
+ Defbutton = WB_DEF_YES ;
+ Message = "Diese Grafik ist mit dem Dokument verknüpft. Möchten Sie die Verknüpfung aufheben, um die Grafik zu bearbeiten?" ;
+ Message [ English ] = "This is a linked graphic. Do you want to unlink the graphic in order to edit the graphic?" ;
+ Message [ norwegian ] = "Dette er +++linked grafikk. Ønsker du å +++unlink the graphic for å redigere?" ;
+ Message [ italian ] = "Questra immagine è collegata con il documento. Desiderate scollegare l'immagine per poterla modificare?" ;
+ Message [ portuguese_brazilian ] = "This is a linked graphic. Do you want to unlink the graphic in order to edit the graphic?" ;
+ Message [ portuguese ] = "Esta imagem está ligada a um documento. Deseja cancelar a ligação para poder editá-la?" ;
+ Message [ english_us ] = "This graphic is linked to a document. Do you want to unlink the graphic in order to edit it?" ;
+ Message [ finnish ] = "This is a linked graphic. Do you want to unlink the graphic in order to edit the graphic?" ;
+ Message [ danish ] = "Denne grafik er kædet til dokumentet. Vil du ophæve kæden for at kunne redigere grafikken." ;
+ Message [ french ] = "Cette image est liée à un document. Désirez-vous supprimer le lien pour l'édition ?" ;
+ Message [ swedish ] = "Den här grafiken är länkad till dokumentet. Vill Du upphäva länken för att kunna redigera grafiken?" ;
+ Message [ dutch ] = "Deze afbeelding is met het document gekoppeld. Wilt u de koppeling opheffen om de afbeelding te bewerken?" ;
+ Message [ spanish ] = "Esta imagen está vinculada al documento. ¿Desea deshacer el vínculo para editar la imagen?" ;
+ Message[ chinese_simplified ] = "Õâ¸öͼÐÎÊǺÍÒ»¸öÎĵµÏàÁ´½ÓµÄ¡£ÄúҪȡÏûÕâ¸öÁ´½Ó£¬±à¼­Õâ¸öͼÐÎÂð£¿";
+ Message[ russian ] = "Ýòîò ðèñóíîê ññûëàåòñÿ íà äîêóìåíò. Âû õîòèòå ñíÿòü ññûëêó äëÿ âîçìîæíîñòè ïðàâêè ðèñóíêà?";
+ Message[ polish ] = "Ta grafika jest po³¹czona z dokumentem. Czy chcesz usun¹æ to po³¹czenie, aby móc edytowaæ grafikê?";
+ Message[ japanese ] = "‚±‚Ì}‚ͤÄÞ·­ÒÝÄ‚ÆØݸ‚³‚ê‚Ä‚¢‚Ü‚·B}‚ð•ÒW‚·‚邽‚ß‚ÉØݸ‚ð‰ðœ‚µ‚Ü‚·‚©H";
+ Message[ chinese_traditional ] = "³o­Ó¹Ï¤ù¬O©M¤@­ÓÀɮ׬۳sµ²ªº¡C±z­n¨ú®ø³o­Ó±¶®|¡A½s¿è³o­Ó¹Ï¤ù¡H";
+ Message[ arabic ] = "åÐå ÇáÑÓãÉ ãÑÊÈØÉ ÈÇáãÓÊäÏ. åá ÊÑíÏ ÅÒÇáÉ ÇáÇÑÊÈÇØ áßí ÊÊãßä ãä ÊÍÑíÑ ÇáÑÓãÉ¿";
+ Message[ dutch ] = "Deze afbeelding is met het document gekoppeld. Wilt u de koppeling opheffen om de afbeelding te bewerken?";
+ Message[ chinese_simplified ] = "Õâ¸öͼÐÎÊǺÍÒ»¸öÎĵµÏàÁ´½ÓµÄ¡£ÄúҪȡÏûÕâ¸öÁ´½Ó£¬±à¼­Õâ¸öͼÐÎÂð£¿";
+ Message[ greek ] = "Ôï ãñáöéêü áõôü åßíáé óõíäåäåìÝíï ìå ôï Ýããñáöï. ÈÝëåôå íá êáôáñãçèåß ç óýíäåóç ãéá íá åðåîåñãÜóåôå ôï ãñáöéêü;";
+ Message[ korean ] = "ÀÌ ±×·¡ÇÈÀº ¹®¼­¿Í ¿¬°áµÇ¾î ÀÖ½À´Ï´Ù. ±×·¡ÇÈ ÆíÁýÀ» À§ÇØ ¿¬°áÀ» ÇØÁ¦ÇϽðڽÀ´Ï±î?";
+ Message[ turkish ] = "Bu grafik belgeye baðlý. Grafigi düzenlemek için bu baðlantýyý kaldýrmak istiyor musunuz?";
+ Message[ language_user1 ] = " ";
+};
+InfoBox MSG_NO_RULER
+{
+ BUTTONS = WB_OK ;
+ DEFBUTTON = WB_DEF_OK ;
+ MESSAGE = "Es sind keine Grafiken im Gallery-Thema 'Rulers' vorhanden." ;
+ MESSAGE [ English ] = "Thera are no bitmaps in the Gallery theme 'Rulers'." ;
+ Message [ portuguese ] = "Não existem imagens no tema 'Rulers' da Gallery." ;
+ Message [ english_us ] = "There are no bitmaps in the Gallery theme 'Rulers'." ;
+ Message [ portuguese_brazilian ] = "Es sind keine Grafiken im Gallery-Thema 'Rulers' vorhanden." ;
+ Message [ swedish ] = "Det finns inga grafiker i Gallery-temat 'Rulers'." ;
+ Message [ danish ] = "Der findes ingen billeder i Gallery-emnet 'Rulers'." ;
+ Message [ italian ] = "Nella gallery con argomento 'Ruler' non ci sono immagini." ;
+ Message [ spanish ] = "No hay imágenes en el tema de Gallery 'Rulers'." ;
+ Message [ french ] = "Il n'existe pas d'image pour le thème 'Rulers' dans la Gallery." ;
+ Message [ dutch ] = "Onder het gallery-onderwerp 'Rulers' komen geen afbeeldingen voor." ;
+ Message[ chinese_simplified ] = "ÔÚ»­ÀÈÖ÷Ìâ'³¤ÌõÐÎ'ÄÚÎÞÈκÎͼÐΡ£";
+ Message[ russian ] = "Â òåìå ãàëåðåè 'Ëèíåéêè' ðèñóíêîâ íå èìååòñÿ.";
+ Message[ polish ] = "Nie ma ¿adnych grafik w temacie galerii \"Obramowania\"";
+ Message[ japanese ] = "·Þ¬×ذðÏ'Ù°×°'‚ɸÞ×̨¯¸½‚Í‚ ‚è‚Ü‚¹‚ñB";
+ Message[ chinese_traditional ] = "µe´Y¥DÃD'ªø±ø§Î'¤ºµL¥ô¦ó¹Ï¤ù¡C";
+ Message[ arabic ] = "áÇ ÊæÌÏ ÃíÉ ÕæÑ Ýí ãæÖæÚ ÇáÌÇáíÑí 'Rulers'.";
+ Message[ dutch ] = "Onder het gallery-onderwerp 'Rulers' komen geen afbeeldingen voor.";
+ Message[ chinese_simplified ] = "ÔÚ»­ÀÈÖ÷Ìâ'³¤ÌõÐÎ'ÄÚÎÞÈκÎͼÐΡ£";
+ Message[ greek ] = "Äåí õðÜñ÷ïõí ãñáöéêÜ óôç óõëëïãÞ ìå èÝìá 'Rulers'.";
+ Message[ korean ] = "Gallery ÁÖÁ¦ 'Rulers'¿¡ ±×·¡ÇÈÀÌ ¾ø½À´Ï´Ù.";
+ Message[ turkish ] = "'Rulers' galeri konusunda bit eþlem grafik mevcut deðil.";
+ Message[ language_user1 ] = " ";
+};
+String STR_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 ] = "Ouverture du fichier graphique impossible" ;
+ 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 cannot be opened" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨´ò¿ªÍ¼ÐÎÎļþ";
+ Text[ russian ] = "Îòêðûòü ãðàôè÷åñêèé ôàéë íåâîçìîæíî";
+ Text[ polish ] = "Pliku graficznego nie mo¿na by³o otworzyæ";
+ Text[ japanese ] = "¸Þ×̨¯¸Ì§²Ù‚ðŠJ‚­‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB";
+ 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 STR_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 ] = "Lecture du fichier graphique impossible" ;
+ Text [ swedish ] = "Grafikfil kan inte läsas" ;
+ Text [ dutch ] = "Grafisch bestand is onleesbaar" ;
+ Text [ spanish ] = "No es posible leer el archivo gráfico" ;
+ Text [ english_us ] = "Graphics file cannot be read" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨¶ÁȡͼÐÎÎļþ";
+ Text[ russian ] = "Ïðî÷èòàòü ãðàôè÷åñêèé ôàéë íåâîçìîæíî";
+ Text[ polish ] = "Pliku graficznego nie mo¿na by³o odczytaæ";
+ Text[ japanese ] = "¸Þ×̨¯¸Ì§²Ù‚ª“Ç‚ß‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "µLªkŪ¨ú¹Ï¤ùÀÉ®×";
+ Text[ arabic ] = "áÇ íãßä ÞÑÇÁÉ ãáÝ ÇáÑÓæãÇÊ";
+ Text[ dutch ] = "Grafisch bestand is onleesbaar";
+ Text[ chinese_simplified ] = "ÎÞ·¨¶ÁȡͼÐÎÎļþ";
+ Text[ greek ] = "Äåí åßíáé äõíáôÞ ç áíÜãíùóç ôïõ áñ÷åßïõ ãñáöéêþí";
+ Text[ korean ] = "±×·¡ÇÈ ÆÄÀÏÀÌ ÀÐÇôÁöÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Grafik dosyasý okunamýyor";
+ Text[ language_user1 ] = " ";
+};
+String STR_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 d'image inconnu" ;
+ Text [ swedish ] = "Okänt grafikformat" ;
+ Text [ dutch ] = "Onbekend grafisch formaat" ;
+ Text [ spanish ] = "Formato de imagen desconocido" ;
+ Text [ english_us ] = "Unknown graphic format" ;
+ Text[ chinese_simplified ] = "²»Ã÷µÄͼÐθñʽ";
+ Text[ russian ] = "Íåèçâåñòíûé ãðàôè÷åñêèé ôîðìàò";
+ Text[ polish ] = "Nieznany format graficzny";
+ Text[ japanese ] = "•s–¾‚ȸÞ×̨¯¸‘Ž®";
+ Text[ chinese_traditional ] = "¤£©úªº¹Ï¤ù®æ¦¡";
+ Text[ arabic ] = "ÊäÓíÞ ÑÓæãÇÊ ÛíÑ ãÚÑæÝ";
+ Text[ dutch ] = "Onbekend grafisch formaat";
+ Text[ chinese_simplified ] = "²»Ã÷µÄͼÐθñʽ";
+ Text[ greek ] = "¢ãíùóôç ìïñöÞ ãñáöéêþí";
+ Text[ korean ] = "¾Ë·ÁÁöÁö ¾ÊÀº ±×·¡ÇÈ ¼­½Ä";
+ Text[ turkish ] = "Bilinmeyen grafik formatý";
+ Text[ language_user1 ] = " ";
+};
+String STR_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 suportada." ;
+ Text [ finnish ] = "Ei tukea grafiikkatiedoston versiolle" ;
+ Text [ danish ] = "Grafikfilens version bliver ikke understøttet" ;
+ Text [ french ] = "Version du fichier graphique non supportée" ;
+ Text [ swedish ] = "Grafikfilens version stöds inte" ;
+ Text [ dutch ] = "Deze versie van het grafisch bestand wordt niet ondersteund" ;
+ Text [ spanish ] = "No se acepta 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 ] = "¸Þ×̨¯¸Ì§²Ù‚ÌÊÞ°¼Þ®Ý‚ÍA»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "¤£¤ä´©³o­Óª©¥»ªº¹Ï¤ù¤å¥ó";
+ Text[ arabic ] = "áÇ íÊã ÏÚã ÅÕÏÇÑ ãáÝ ÇáÑÓæãÇÊ";
+ Text[ dutch ] = "Deze versie van het grafisch bestand wordt niet ondersteund";
+ Text[ chinese_simplified ] = "²»Ö§³ÖÕâ¸ö°æ±¾µÄͼÐÎÎļþ";
+ Text[ greek ] = "Äåí õðïóôçñßæåôáé ç Ýêäïóç áõôïý ôïõ áñ÷åßïõ ãñáöéêþí";
+ Text[ korean ] = "ÀÌ ±×·¡ÇÈ ÆÄÀÏÀÇ ¹öÁ¯Àº Áö¿øµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Grafik dosyasýnýnýn versiyonu desteklenmiyor";
+ Text[ language_user1 ] = " ";
+};
+String STR_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 de gráficos 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 ] = "¸Þ×̨¯¸Ì¨ÙÀ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB";
+ 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 STR_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 inserirei l'immagine" ;
+ Text [ portuguese_brazilian ] = "Mem¢ria insuficiente para inserir o gr fico" ;
+ Text [ portuguese ] = "Memória insuficiente para inserir gráfico." ;
+ Text [ finnish ] = "Muisti ei riitä grafiikan lisäämiseen" ;
+ Text [ danish ] = "Ikke nok hukommelse til at indsætte billedet" ;
+ Text [ french ] = "Mémoire insuffisante pour l'insertion de l'image" ;
+ Text [ swedish ] = "Inte tillräckligt med minne för att infoga grafiken" ;
+ Text [ dutch ] = "Niet genoeg geheugen voor het invoegen van de afbeelding" ;
+ Text [ spanish ] = "No hay suficiente memoria para insertar la imagen" ;
+ Text [ english_us ] = "Not enough memory to insert the picture." ;
+ Text[ chinese_simplified ] = "ÄÚ´æ²»¹»£¬ÎÞ·¨²åÈëͼÐÎ";
+ Text[ russian ] = "Íåäîñòàòî÷íî ïàìÿòè äëÿ âñòàâêè ðèñóíêà";
+ Text[ polish ] = "Za ma³o pamiêci do wstawienia grafiki";
+ Text[ japanese ] = "}‚ð‘}“ü‚·‚é‚Ì‚ÉÒÓØ‚ª[•ª‚Å‚ ‚è‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "°O¾ÐÅ餣¨¬¡AµLªk´¡¤J¹Ï¤ù";
+ Text[ arabic ] = "áÇ íæÌÏ ÐÇßÑÉ ßÇÝíÉ áÅÏÑÇÌ ÇáÑÓã";
+ Text[ dutch ] = "Niet genoeg geheugen voor het invoegen van de afbeelding";
+ Text[ chinese_simplified ] = "ÄÚ´æ²»¹»£¬ÎÞ·¨²åÈëͼÐÎ";
+ Text[ greek ] = "Ç ìíÞìç äåí åðáñêåß ãéá ôçí ðñïóèÞêç ôïõ ãñáöéêïý.";
+ Text[ korean ] = "±×¸²À» »ðÀÔÇϴµ¥ ¸Þ¸ð¸®°¡ ºÎÁ· ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Grafiðin eklenmesi için yeterli bellek yok";
+ Text[ language_user1 ] = " ";
+};
+String STR_INSERT_GRAPHIC
+{
+ Text = "Grafik einfügen" ;
+ Text [ English ] = "Insert graphic" ;
+ Text [ norwegian ] = "Insert graphic" ;
+ Text [ italian ] = "Inserisci immagine" ;
+ Text [ portuguese_brazilian ] = "Inserir gr fico" ;
+ 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 grafikê";
+ Text[ japanese ] = "¸Þ×̨¯¸‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¹Ï¤ù";
+ Text[ arabic ] = "ÅÏÑÇÌ ÕæÑÉ";
+ Text[ dutch ] = "Afbeelding invoegen";
+ Text[ chinese_simplified ] = "²åÈëͼÐÎ";
+ Text[ greek ] = "ÐñïóèÞêç ãñáöéêïý";
+ Text[ korean ] = "±×·¡ÇÈ »ðÀÔ";
+ Text[ turkish ] = "Grafik ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_NO_ADDRESSBOOK
+{
+ Text = "Kein Adressbuch vorhanden" ;
+ Text [ English ] = "No directory available" ;
+ Text [ dutch ] = "Geen adresboek voorhanden" ;
+ Text [ english_us ] = "An Address Book does not exist" ;
+ Text [ italian ] = "Manca la rubrica" ;
+ Text [ spanish ] = "No hay ninguna libreta de direcciones disponible" ;
+ Text [ french ] = "Aucun carnet d'adresses disponible" ;
+ Text [ swedish ] = "Ingen adressbok tillgänglig" ;
+ Text [ danish ] = "Der finde intet adressekartotek" ;
+ Text [ portuguese_brazilian ] = "Kein Adressbuch vorhanden" ;
+ Text [ portuguese ] = "Não há livro de endereços disponível." ;
+ Text[ chinese_simplified ] = "ͨѶ²¾²»´æÔÚ";
+ Text[ russian ] = "Àäðåñíîé êíèãè íå èìååòñÿ";
+ Text[ polish ] = "Brak ksi¹¿ki adresowej";
+ Text[ japanese ] = "±ÄÞÚ½’ ‚ª‚ ‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "³q°T¿ý¤£¦s¦b";
+ Text[ arabic ] = "áÇ íæÌÏ ÏÝÊÑ ÚäÇæíä";
+ Text[ dutch ] = "Geen adresboek voorhanden";
+ Text[ chinese_simplified ] = "ͨѶ²¾²»´æÔÚ";
+ Text[ greek ] = "Äåí õðÜñ÷åé áôæÝíôá";
+ Text[ korean ] = "»ç¿ë °¡´ÉÇÑ ÁÖ¼Ò·ÏÀÌ ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Adres defteri mevcut deðil";
+ Text[ language_user1 ] = " ";
+};
+String STR_NOTIZ_INSERT
+{
+ TEXT = "Notiz einfügen" ;
+ TEXT [ English ] = "Insert Note" ;
+ TEXT [ norwegian ] = "Sett inn Merknad" ;
+ TEXT [ italian ] = "Inserisci nota" ;
+ TEXT [ portuguese_brazilian ] = "Inserir Observação" ;
+ TEXT [ portuguese ] = "Inserir anotação" ;
+ TEXT [ finnish ] = "Lisää huomautus" ;
+ TEXT [ danish ] = "Indsæt note" ;
+ TEXT [ french ] = "Insérer une note" ;
+ TEXT [ swedish ] = "Infoga anteckning" ;
+ TEXT [ dutch ] = "Aantekening invoegen" ;
+ TEXT [ spanish ] = "Insertar nota" ;
+ TEXT [ english_us ] = "Insert Note" ;
+ TEXT[ chinese_simplified ] = "²åÈ뱸ע";
+ TEXT[ russian ] = "Âñòàâèòü ïðèìå÷àíèå";
+ TEXT[ polish ] = "Wstaw notatkê";
+ TEXT[ japanese ] = "ÒÓ‚ð‘}“ü";
+ TEXT[ chinese_traditional ] = "´¡¤J³Æª`";
+ TEXT[ arabic ] = "ÅÏÑÇÌ ãáÇÍÙÉ";
+ TEXT[ dutch ] = "Aantekening invoegen";
+ TEXT[ chinese_simplified ] = "²åÈ뱸ע";
+ TEXT[ greek ] = "ÐñïóèÞêç óçìåßùóçò";
+ TEXT[ korean ] = "¸Þ¸ð »ðÀÔ";
+ TEXT[ turkish ] = "Not ekle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_REDLINE_COMMENT
+{
+ TEXT = "Kommentieren: " ;
+ TEXT [ English ] = "Comment: " ;
+ Text [ english_us ] = "Comment: " ;
+ Text [ portuguese_brazilian ] = "Kommentieren: " ;
+ Text [ swedish ] = "Kommentera: " ;
+ Text [ danish ] = "Kommenter: " ;
+ Text [ italian ] = "Commento: " ;
+ Text [ spanish ] = "Comentario: " ;
+ Text [ french ] = "Commentaire : " ;
+ Text [ dutch ] = "Commentaar: " ;
+ Text [ portuguese ] = "Comentário: " ;
+ Text[ chinese_simplified ] = "ÆÀÓ ";
+ Text[ russian ] = "Êîììåíòèðîâàòü: ";
+ Text[ polish ] = "Skomentuj: ";
+ Text[ japanese ] = "ºÒÝÄ: ";
+ Text[ chinese_traditional ] = "µû»y¡G ";
+ Text[ arabic ] = "ÊÚáíÞ: ";
+ Text[ dutch ] = "Commentaar: ";
+ Text[ chinese_simplified ] = "ÆÀÓ ";
+ Text[ greek ] = "Ó÷üëéï: ";
+ Text[ korean ] = "¸Þ¸ð: ";
+ Text[ turkish ] = "Açýklalama ekle: ";
+ Text[ language_user1 ] = " ";
+};
+String STR_REDLINE_INSERTED
+{
+ TEXT = "Einfügung" ;
+ TEXT [ English ] = "Inserted" ;
+ Text [ english_us ] = "Insertions" ;
+ Text [ portuguese_brazilian ] = "Einfügung" ;
+ Text [ swedish ] = "Infogning" ;
+ Text [ danish ] = "Indsat" ;
+ Text [ italian ] = "Inserimento" ;
+ Text [ spanish ] = "Inserción" ;
+ Text [ french ] = "Insertion" ;
+ Text [ dutch ] = "Invoeging" ;
+ Text [ portuguese ] = "Inserido" ;
+ Text[ chinese_simplified ] = "²åÈë";
+ Text[ russian ] = "Âñòàâêà";
+ Text[ polish ] = "Wstawienie";
+ Text[ japanese ] = "‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J";
+ Text[ arabic ] = "ÅÏÑÇÌ";
+ Text[ dutch ] = "Invoeging";
+ Text[ chinese_simplified ] = "²åÈë";
+ Text[ greek ] = "ÐñïóèÞêç";
+ Text[ korean ] = "»ðÀÔ";
+ Text[ turkish ] = "Ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_REDLINE_DELETED
+{
+ TEXT = "Löschung" ;
+ TEXT [ English ] = "Deleted" ;
+ Text [ english_us ] = "Deletions" ;
+ Text [ portuguese_brazilian ] = "Löschung" ;
+ Text [ swedish ] = "Radering" ;
+ Text [ danish ] = "Slettet" ;
+ Text [ italian ] = "Elimina" ;
+ Text [ spanish ] = "Eliminación" ;
+ Text [ french ] = "Suppression" ;
+ Text [ dutch ] = "Gewist" ;
+ Text [ portuguese ] = "Eliminado" ;
+ Text[ chinese_simplified ] = "ɾ³ý";
+ Text[ russian ] = "Óäàëåíèå";
+ Text[ polish ] = "Usuniêcie";
+ Text[ japanese ] = "íœ";
+ Text[ chinese_traditional ] = "§R°£";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ dutch ] = "Gewist";
+ Text[ chinese_simplified ] = "ɾ³ý";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦";
+ Text[ turkish ] = "Silindi";
+ Text[ language_user1 ] = " ";
+};
+String STR_REDLINE_AUTOFMT
+{
+ TEXT = "AutoFormat" ;
+ TEXT [ English ] = "AutoFormat" ;
+ TEXT[ italian ] = "Formattazione automatica";
+ TEXT[ portuguese_brazilian ] = "AutoFormat";
+ TEXT[ portuguese ] = "AutoFormato";
+ 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[ dutch ] = "AutoOpmaak";
+ TEXT[ chinese_simplified ] = "×Ô¶¯¸ñʽ";
+ TEXT[ greek ] = "ÁõôïÌïñöïðïßçóç";
+ TEXT[ korean ] = "ÀÚµ¿ ¼­½Ä";
+ TEXT[ turkish ] = "Otomatik formatlama";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_REDLINE_FORMATED
+{
+ Text = "Attributierung" ;
+ Text [ english ] = "Formatted" ;
+ Text [ english_us ] = "Formats" ;
+ Text [ portuguese_brazilian ] = "Attributierung" ;
+ Text [ swedish ] = "Attributering" ;
+ Text [ danish ] = "Formateret" ;
+ Text [ italian ] = "Attribuzione" ;
+ Text [ spanish ] = "Formateado" ;
+ Text [ french ] = "Mise en forme" ;
+ Text [ dutch ] = "Opmaak" ;
+ Text [ portuguese ] = "Formatado" ;
+ Text[ chinese_simplified ] = "ÊôÐÔ";
+ Text[ russian ] = "Îòôîðìàòèðîâàíî";
+ Text[ polish ] = "Dodawanie atrybutów";
+ Text[ japanese ] = "‘®«‚ðŽw’è‚·‚é";
+ Text[ chinese_traditional ] = "ÄÝ©Ê";
+ Text[ arabic ] = "ÊäÓíÞ";
+ Text[ language_user1 ] = " ";
+ Text[ dutch ] = "Opmaak";
+ Text[ chinese_simplified ] = "ÊôÐÔ";
+ Text[ greek ] = "Ìïñöïðïßçóç";
+ Text[ korean ] = "¼­½ÄÀÖ´Â";
+ Text[ turkish ] = "Öznitelikler";
+};
+String STR_REDLINE_TABLECHG
+{
+ Text = "Tabellenänderung" ;
+ Text [ english ] = "Changed table" ;
+ Text [ english_us ] = "Table Changes" ;
+ Text [ portuguese_brazilian ] = "Tabellenänderung" ;
+ Text [ swedish ] = "Tabelländring" ;
+ Text [ danish ] = "Ændret tabel" ;
+ Text [ italian ] = "Modifica tabella" ;
+ Text [ spanish ] = "Modificación de tabla" ;
+ Text [ french ] = "Modification de tableau" ;
+ Text [ dutch ] = "Tabelwijziging" ;
+ Text [ portuguese ] = "Tabela modificada" ;
+ Text[ chinese_simplified ] = "Ð޸ıí¸ñ";
+ Text[ russian ] = "Èçìåíåíèÿ òàáëèöû";
+ Text[ polish ] = "Zmiany w tabelach";
+ Text[ japanese ] = "ðÌÞÙ‚Ì•ÏX";
+ Text[ chinese_traditional ] = "­×§ïªí®æ";
+ Text[ arabic ] = "ÊÚÏíá ÇáÌÏæá";
+ Text[ dutch ] = "Tabelwijziging";
+ Text[ chinese_simplified ] = "Ð޸ıí¸ñ";
+ Text[ greek ] = "Ôñïðïðïßçóç ðßíáêá";
+ Text[ korean ] = "Ç¥°¡ ¹Ù²î¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Tablo deðiþikliði";
+ Text[ language_user1 ] = " ";
+};
+String STR_REDLINE_FMTCOLLSET
+{
+ Text = "Absatzvorlage gesetzt" ;
+ Text [ english ] = "Paragraph Styles set" ;
+ Text[ italian ] = "Modello di paragrafo impostato";
+ Text[ portuguese_brazilian ] = "Paragraph Styles set";
+ Text[ portuguese ] = "Estilo de parágrafo definido";
+ Text[ danish ] = "Afsnitstypografi defineret";
+ Text[ french ] = "Le style de paragraphe a été défini";
+ Text[ swedish ] = "Styckeformatmall definierad";
+ Text[ dutch ] = "Alinea-opmaakprofiel gedefinieerd";
+ Text[ spanish ] = "Aplicado estilo de párrafo";
+ Text[ english_us ] = "Applied Paragraph Styles";
+ Text[ chinese_simplified ] = "É趨Á˶ÎÂäÑùʽ";
+ Text[ russian ] = "Ñòèëü àáçàöà óñòàíîâëåí";
+ Text[ polish ] = "Ustaw styl akapitu";
+ Text[ japanese ] = "’i—Ž½À²Ù‚ÌÝ’è";
+ Text[ chinese_traditional ] = "³]©w¤F¬q¸¨¼Ë¦¡";
+ Text[ arabic ] = "Êã ÊÚííä äãØ ÇáÝÞÑÉ";
+ Text[ dutch ] = "Alinea-opmaakprofiel gedefinieerd";
+ Text[ chinese_simplified ] = "É趨Á˶ÎÂäÑùʽ";
+ Text[ greek ] = "Ïñéóìüò ðñïôýðïõ ðáñáãñÜöïõ";
+ Text[ korean ] = "´Ü¶ô À¯Çü ¼³Á¤";
+ Text[ turkish ] = "Paragraf biçimi seçildi";
+ Text[ language_user1 ] = " ";
+};
+String STR_REDLINE_TITLE
+{
+ Text = "AutoFormat" ;
+ Text [ English ] = "AutoFormat" ;
+ Text[ italian ] = "Formattazione automatica";
+ Text[ portuguese_brazilian ] = "AutoFormat";
+ Text[ portuguese ] = "AutoFormato";
+ 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[ dutch ] = "AutoOpmaak";
+ Text[ chinese_simplified ] = "×Ô¶¯¸ñʽ";
+ Text[ greek ] = "ÁõôïÌïñöïðïßçóç";
+ Text[ korean ] = "ÀÚµ¿ ¼­½Ä";
+ Text[ turkish ] = "Otomatik formatlama";
+ Text[ language_user1 ] = " ";
+};
+String STR_REDLINE_MSG
+{
+ Text = "Das AutoFormat ist beendet.\nSie können jetzt alle Änderungen annehmen oder ablehnen,\noder sie einzeln annehmen oder ablehnen." ;
+ Text [ English ] = "AutoFormat completed.\nYou can accept or reject all changes, or\naccept or reject individual changes." ;
+ Text[ italian ] = "La formattazione automatica è terminata.\nPotete accettare o rifiutare tutte le modifiche oppure\naccettare o rifiutare singolarmente le modifiche.";
+ Text[ portuguese_brazilian ] = "AutoFormat completed.\nYou can accept or reject all changes, or\naccept or reject individual changes.";
+ Text[ portuguese ] = "Concluído AutoFormato.\nPoderá aceitar ou rejeitar todas as modificações de\numa só vez ou uma a uma.";
+ Text[ danish ] = "AutoFormat er fuldført.\nDu kan nu acceptere eller forkaste alle ændringer,\neller acceptere eller forkaste dem enkeltvis.";
+ Text[ french ] = "L'AutoFormat a terminé.\nVous pouvez choisir d'en accepter ou rejeter en une seule fois toutes les modifications, ou\n de vous faire afficher toutes les modifications pour les revoir.";
+ Text[ swedish ] = "AutoFormat är färdigt.\nDu kan acceptera eller kasta bort alla ändringar eller\nacceptera eller kasta bort enstaka ändringar.";
+ Text[ dutch ] = "AutoOpmaak voltooid.\nU kunt nu alle wijzigingen accepteren of verwerpen,\nof afzonderlijke wijzigingen accepteren of verwerpen.";
+ Text[ spanish ] = "El AutoFormato ha concluido.\nAhora puede aceptar o rechazar todos los cambios\na la vez o uno por uno.";
+ Text[ english_us ] = "AutoFormat completed.\nYou can accept or reject all changes,\nor accept or reject particular changes.";
+ Text[ chinese_simplified ] = "ÒѾ­Íê³É×Ô¶¯¸ñʽ¡£\nÄúÏÖÔÚÄܹ»½ÓÊÜ»ò¾Ü¾øËùÓеĸü¸Ä£¬»òÕß\n½ÓÊÜ»ò¾Ü¾øµ¥¸ö¸ü¸Ä¡£";
+ Text[ russian ] = "Àâòîôîðìàòèðîâàíèå çàêîí÷åíî.\nÑåé÷àñ Âû ìîæåòå ïðèíÿòü èëè îòêëîíèòü ñðàçó âñå èçìåíåíèÿ,\nèëè êàæäîå ïî îòäåëüíîñòè.";
+ Text[ polish ] = "Autoformatowanie jest zakoñczone.\nMo¿esz zaaakceptowaæ lub odrzuciæ teraz wszystkie zmiany,\nlub akceptowaæ je oraz odrzucaæ pojedynczo.";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä‚ªI—¹‚µ‚Ü‚µ‚½B\n‚·‚ׂĂ̕ÏX‚ðŽó‚¯“ü‚ê‚é‚©AŒ³‚É–ß‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B\n‚Ü‚½‚͂ЂƂ‚ЂƂ‚̕ÏX‚ɂ‚¢‚ÄŒŸ“¢‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤w¸g§¹¦¨¦Û°Ê®æ¦¡¡C\n±z²{¦b¯à°÷±µ¨ü©Î©Úµ´©Ò¦³ªºÅܧó¡A±z¤]¯à°÷\n±µ¨ü©Î©Úµ´³æ­ÓªºÅܧó¡C";
+ Text[ arabic ] = "ÊãøóÊ ÚãáíÉ ÇáÊäÓíÞ ÇáÊáÞÇÆí.\níãßäß ÇáÂä ÞÈæá Ãæ ÑÝÖ ÇáÊÛííÑÇÊ ßáåÇ¡\nÃæ ÞÈæá Ãæ ÑÝÖ ßá ÊÛííÑ Úáì ÍÏå.";
+ Text[ dutch ] = "AutoOpmaak voltooid.\nU kunt nu alle wijzigingen accepteren of verwerpen,\nof afzonderlijke wijzigingen accepteren of verwerpen.";
+ Text[ chinese_simplified ] = "ÒѾ­Íê³É×Ô¶¯¸ñʽ¡£\nÄúÏÖÔÚÄܹ»½ÓÊÜ»ò¾Ü¾øËùÓеĸü¸Ä£¬»òÕß\n½ÓÊÜ»ò¾Ü¾øµ¥¸ö¸ü¸Ä¡£";
+ Text[ greek ] = "Ç ÁõôïÌïñöïðïßçóç ïëïêëçñþèçêå.\n¸÷åôå ôç äõíáôüôçôá íá áðïäå÷ôåßôå Þ íá áðïññßøåôå üëåò Þ ìåìïíùìÝíåò áëëáãÝò.";
+ Text[ korean ] = "ÀÚµ¿ ¼­½ÄÀÌ Á¾·áµÇ¾ú½À´Ï´Ù.\nÁö±Ý º¯°æ»çÇ×À» ¸ðµÎ Àû¿ëÇϰųª Ãë¼ÒÇÒ ¼ö ÀÖÀ¸¸ç\nȤÀº °³º°ÀûÀ¸·Î Àû¿ëÇϰųª Ãë¼ÒÇÒ ¼ö ÀÖ½À´Ï´Ù.";
+ Text[ turkish ] = "Otomatik formatlama tamamlandý.\nÞimdi deðiþiklikleri tümden veya tek tek\n kabul ya da redd edebilirsiniz.";
+ Text[ language_user1 ] = " ";
+};
+String STR_REDLINE_ACCEPT_ALL
+{
+ Text = "Alles ~annehmen" ;
+ Text [ English ] = "~Accept All" ;
+ Text[ italian ] = "~Accetta tutto";
+ Text[ portuguese_brazilian ] = "~Accept All";
+ Text[ portuguese ] = "~Aceitar tudo";
+ Text[ danish ] = "Accepter alle";
+ Text[ french ] = "Tout ~accepter";
+ Text[ swedish ] = "~Acceptera alla";
+ Text[ dutch ] = "~Alles accepteren";
+ Text[ spanish ] = "~Aceptar todo";
+ Text[ english_us ] = "Accept All";
+ Text[ chinese_simplified ] = "È«²¿½ÓÊÜ";
+ Text[ russian ] = "Ïðèíÿòü âñå";
+ Text[ polish ] = "Zaakceptuj wszystko";
+ Text[ japanese ] = "‚·‚ׂĎ󂯓ü‚ê‚é";
+ Text[ chinese_traditional ] = "¥þ³¡±µ¨ü";
+ Text[ arabic ] = "ÞÈæá Çáßá";
+ Text[ dutch ] = "~Alles accepteren";
+ Text[ chinese_simplified ] = "È«²¿½ÓÊÜ";
+ Text[ greek ] = "Áðïäï÷Þ üëùí";
+ Text[ korean ] = "¸ðµÎ Àû¿ë";
+ Text[ turkish ] = "Tümünü kabul et";
+ Text[ language_user1 ] = " ";
+};
+String STR_REDLINE_REJECT_ALL
+{
+ Text = "Alles ableh~nen" ;
+ Text [ English ] = "~Reject All" ;
+ Text[ italian ] = "Rifiuta tutto";
+ Text[ portuguese_brazilian ] = "~Reject All";
+ Text[ portuguese ] = "~Rejeitar tudo";
+ Text[ danish ] = "Forkast alle";
+ Text[ french ] = "~Tout rejeter";
+ Text[ swedish ] = "~Kasta bort alla";
+ Text[ dutch ] = "~Alles verwerpen";
+ Text[ spanish ] = "~Ocultar todo";
+ Text[ english_us ] = "Reject All";
+ Text[ chinese_simplified ] = "È«²¿¾Ü¾ø";
+ Text[ russian ] = "Îòêëîíèòü âñå";
+ Text[ polish ] = "Odrzuæ wszystko";
+ Text[ japanese ] = "‚·‚ׂČ³‚É–ß‚·";
+ Text[ chinese_traditional ] = "¥þ³¡©Úµ´";
+ Text[ arabic ] = "ÑÝÖ Çáßá";
+ Text[ dutch ] = "~Alles verwerpen";
+ Text[ chinese_simplified ] = "È«²¿¾Ü¾ø";
+ Text[ greek ] = "Áðüññéøç üëùí";
+ Text[ korean ] = "¸ðµÎ Ãë¼Ò";
+ Text[ turkish ] = "Tümünü reddet";
+ Text[ language_user1 ] = " ";
+};
+String STR_REDLINE_EDIT
+{
+ Text = "Änderungen ~bearbeiten" ;
+ Text [ English ] = "Review ~Changes" ;
+ Text[ italian ] = "Modifica cambiamenti";
+ Text[ portuguese_brazilian ] = "Review ~Changes";
+ Text[ portuguese ] = "Editar ~modificações";
+ Text[ danish ] = "Rediger ændringer";
+ Text[ french ] = "~Revoir les modifications";
+ Text[ swedish ] = "Redigera ~ändringar";
+ Text[ dutch ] = "Wijzigingen ~bewerken";
+ Text[ spanish ] = "Editar ~modificaciones";
+ Text[ english_us ] = "Edit Changes";
+ Text[ chinese_simplified ] = "±à¼­¸ü¸Ä";
+ Text[ russian ] = "Àíàëèç èçìåíåíèé";
+ Text[ polish ] = "Edytuj zmiany";
+ Text[ japanese ] = "•ÏX‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿èÅܧó";
+ Text[ arabic ] = "ÊÍÑíÑ ÇáÊÛííÑÇÊ";
+ Text[ dutch ] = "Wijzigingen ~bewerken";
+ Text[ chinese_simplified ] = "±à¼­¸ü¸Ä";
+ Text[ greek ] = "Åðåîåñãáóßá áëëáãþí";
+ Text[ korean ] = "º¯°æ ³»¿ë °ËÅä";
+ Text[ turkish ] = "Deðiþiklikleri düzenle";
+ Text[ language_user1 ] = " ";
+};
+QueryBox DLG_IMPORT_DBNAME
+{
+ BUTTONS = WB_YES_NO ;
+ DEFBUTTON = WB_DEF_NO ;
+ MESSAGE = "Soll der Datenbankname als Standarddatenbank für das Dokument übernommen werden?" ;
+ MESSAGE [ English ] = "Should the database name be used as document default?" ;
+ Message [ dutch ] = "Moet de database-naam als standaard database voor het document worden overgenomen?" ;
+ Message [ english_us ] = "Use database name as default database for the document?" ;
+ Message [ italian ] = "Si vuole che il nome del database venga usato come database standard per il documento?" ;
+ Message [ spanish ] = "¿Desea adoptar el nombre de la base de datos como base de datos estándar para el documento?" ;
+ Message [ french ] = "Le nom de la base de données doit-il être utilisé comme nom de base de données par défaut ?" ;
+ Message [ swedish ] = "Ska databasnamnet övertas som standarddatabas för dokumentet?" ;
+ Message [ danish ] = "Skal databasenavnet overtages som standarddatabase for dokumentet?" ;
+ Message [ portuguese_brazilian ] = "Soll der Datenbankname als Standarddatenbank für das Dokument übernommen werden?" ;
+ Message [ portuguese ] = "Deseja adoptar o nome da base de dados como base de dados padrão para o documento?" ;
+ Message[ chinese_simplified ] = "ÒªÈÃÎļþÌ×ÓÃĬÈϵÄÊý¾Ý¿âÃû³Æ£¿";
+ Message[ russian ] = "Èñïîëüçîâàòü èìÿ áàçû äàííûõ â êà÷åñòâå ñòàíäàðòíîé áàçû äàííûõ äëÿ ýòîãî äîêóìåíòà?";
+ Message[ polish ] = "Czy nazwa bazy danych ma zostaæ zastosowana w dokumencie jako standardowa baza danych?";
+ Message[ japanese ] = "‚±‚ÌÃÞ°ÀÍÞ°½‚Ì–¼‘O‚ð•W€ÃÞ°ÀÍÞ°½‚Æ‚µ‚Ä‚±‚Ì•¶‘‚ÉŽg—p‚µ‚Ü‚·‚©H";
+ Message[ chinese_traditional ] = "Åý¤å¥ó±Ä¥ÎÀq»{ªº¸ê®Æ®w¦WºÙ¡H";
+ Message[ arabic ] = "åá ÊÑíÏ ÇÓÊÎÏÇã ÇÓã ÞÇÚÏÉ ÇáÈíÇäÇÊ ßÞÇÚÏÉ ÈíÇäÇÊ ÇÝÊÑÇÖíÉ ááãÓÊäÏ¿";
+ Message[ dutch ] = "Moet de database-naam als standaard database voor het document worden overgenomen?";
+ Message[ chinese_simplified ] = "ÒªÈÃÎļþÌ×ÓÃĬÈϵÄÊý¾Ý¿âÃû³Æ£¿";
+ Message[ greek ] = "ÈÝëåôå íá ÷ñçóéìïðïéçèåß ôï üíïìá ôçò âÜóçò äåäïìÝíùí ùò âÜóç äåäïìÝíùí ðñïåðéëïãÞò ãéá ôï Ýããñáöï;";
+ Message[ korean ] = "µ¥ÀÌÅͺ£À̽º À̸§À» ¹®¼­ÀÇ ±âº» µ¥ÀÌÅͺ£À̽º·Î »ç¿ëÇϽðڽÀ´Ï±î?";
+ Message[ turkish ] = "Veritabaný adý, belge için standart veritabaný olarak kullanýlsýn mý?";
+ Message[ language_user1 ] = " ";
+};
+String STR_PAGE
+{
+ TEXT = "Seite " ;
+ TEXT [ English ] = "Page " ;
+ TEXT [ norwegian ] = "Side " ;
+ 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[ dutch ] = "Pagina ";
+ TEXT[ chinese_simplified ] = "Ò³Ãæ ";
+ TEXT[ greek ] = "Óåëßäá ";
+ TEXT[ korean ] = "ÆäÀÌÁö ";
+ TEXT[ turkish ] = "Sayfa ";
+ TEXT[ language_user1 ] = " ";
+};
+String RID_TEXT_TOOLBOX
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Textobjektleiste : Textleiste */
+ Text = "Textobjektleiste" ;
+ Text [ English ] = "Text object bar" ;
+ Text [ portuguese ] = "Barra de objectos de texto" ;
+ Text [ english_us ] = "Text Object Bar" ;
+ Text [ portuguese_brazilian ] = "Textobjektleiste" ;
+ Text [ swedish ] = "Textobjektlist" ;
+ Text [ danish ] = "Tekstobjektlinje" ;
+ Text [ italian ] = "Barra degli oggetti di testo" ;
+ Text [ spanish ] = "Barra de objetos de texto" ;
+ Text [ french ] = "Barre d'objets de texte" ;
+ Text [ dutch ] = "Tekstbalk" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö¶ÔÏóÀ¸";
+ Text[ russian ] = "Ïàíåëü îáúåêòîâ òåêñòà";
+ Text[ polish ] = "Pasek obiektów tabeli";
+ Text[ japanese ] = "÷½ÄµÌÞ¼Þª¸ÄÊÞ°";
+ Text[ chinese_traditional ] = "¤å¦rª«¥ó¦C";
+ Text[ arabic ] = "ÔÑíØ ßÇÆäÇÊ ÇáäÕ";
+ Text[ dutch ] = "Tekstbalk";
+ Text[ chinese_simplified ] = "ÎÄ×Ö¶ÔÏóÀ¸";
+ Text[ greek ] = "ÃñáììÞ áíôéêåéìÝíùí êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® °³Ã¼ ¸ðÀ½";
+ Text[ turkish ] = "Metin nesne çubuðu";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_TEXT_TOOLBOX
+{
+ HelpID = HID_TEXT_TOOLBOX ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ LineSpacing = TRUE ;
+ Customize = TRUE ;
+ MenuStrings = TRUE ;
+ Hide = TRUE ;
+ ItemList =
+ {
+ MN_TEMPLATE
+ MN_FONT
+ MN_TEXT1(TRUE)
+ MN_TEXT1_BLOCK
+ MN_TEXT_LINESPACE
+ MN_TEXT2
+ MN_TEXT_BACKGROUND
+ MN_TEXT_DIALOGS(TRUE)
+ };
+ Scroll = TRUE ;
+};
+String RID_TABLE_TOOLBOX
+{
+ Text = "Tabellenobjektleiste" ;
+ Text [ English ] = "Table objectbar" ;
+ Text [ norwegian ] = "Table" ;
+ Text [ italian ] = "Barra degli oggetti per tabelle" ;
+ Text [ portuguese_brazilian ] = "Tabela" ;
+ Text [ portuguese ] = "Barra de objectos de tabela" ;
+ Text [ finnish ] = "Taulukko" ;
+ Text [ danish ] = "Tabelobjektlinje" ;
+ Text [ french ] = "Barre d'objets de tableau" ;
+ Text [ swedish ] = "Tabellobjektlist" ;
+ Text [ dutch ] = "Tabelobjectbalk" ;
+ Text [ spanish ] = "Barra de objetos para tablas" ;
+ Text [ english_us ] = "Table Object Bar" ;
+ Text[ chinese_simplified ] = "±í¸ñ¶ÔÏóÀ¸";
+ Text[ russian ] = "Ïàíåëü îáúåêòà òàáëèöû";
+ Text[ polish ] = "Pasek obiektów tabeli";
+ Text[ japanese ] = "•\\µÌÞ¼Þª¸ÄÊÞ°";
+ Text[ chinese_traditional ] = "ªí®æª«¥ó¦C";
+ Text[ arabic ] = "ÔÑíØ ßÇÆäÇÊ ÌÏæá";
+ Text[ dutch ] = "Tabelobjectbalk";
+ Text[ chinese_simplified ] = "±í¸ñ¶ÔÏóÀ¸";
+ Text[ greek ] = "ÃñáììÞ áíôéêåéìÝíùí ðßíáêá";
+ Text[ korean ] = "Ç¥ °³Ã¼ ¸ðÀ½";
+ Text[ turkish ] = "Tablo nesne çubuðu";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_TABLE_TOOLBOX
+{
+ HelpID = HID_TABLE_TOOLBOX ;
+ 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 =
+ {
+ MN_TEMPLATE
+ MN_FONT
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_AUTOSUM ;
+ HelpID = FN_TABLE_AUTOSUM ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_MODE_FIX ;
+ HelpID = FN_TABLE_MODE_FIX ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_MODE_FIX_PROP ;
+ HelpID = FN_TABLE_MODE_FIX_PROP ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_MODE_VARIABLE ;
+ HelpID = FN_TABLE_MODE_VARIABLE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_MERGE_CELLS ;
+ HelpID = FN_TABLE_MERGE_CELLS ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_SPLIT_CELLS ;
+ HelpID = FN_TABLE_SPLIT_CELLS ;
+ };
+ ToolBoxItem
+ {
+ DropDown = TRUE ;
+ Identifier = FN_OPTIMIZE_TABLE ;
+ HelpID = FN_OPTIMIZE_TABLE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_INSERT_ROW ;
+ HelpID = FN_TABLE_INSERT_ROW ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_INSERT_COL ;
+ HelpID = FN_TABLE_INSERT_COL ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_DELETE_ROW ;
+ HelpID = FN_TABLE_DELETE_ROW ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_DELETE_COL ;
+ HelpID = FN_TABLE_DELETE_COL ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_SELECT_ALL;
+ HelpID = FN_TABLE_SELECT_ALL;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_SELECT_COL;
+ HelpID = FN_TABLE_SELECT_COL;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_SELECT_ROW;
+ HelpID = FN_TABLE_SELECT_ROW;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_VERT_NONE;
+ HelpID = FN_TABLE_VERT_NONE;
+ RadioCheck = TRUE;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_VERT_CENTER;
+ HelpID = FN_TABLE_VERT_CENTER;
+ RadioCheck = TRUE;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TABLE_VERT_BOTTOM;
+ HelpID = FN_TABLE_VERT_BOTTOM;
+ RadioCheck = TRUE;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_ATTR_BORDER
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_FRAME_LINESTYLE
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_FRAME_LINECOLOR
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_BACKGROUND_COLOR
+ };
+ };
+};
+String RID_FRAME_TOOLBOX
+{
+ Text = "Rahmenobjektleiste" ;
+ Text [ English ] = "Frame objectbar" ;
+ Text [ norwegian ] = "Ramme" ;
+ Text [ italian ] = "Barra degli oggetti per cornice" ;
+ Text [ portuguese_brazilian ] = "Moldura" ;
+ Text [ portuguese ] = "Barra de molduras" ;
+ Text [ finnish ] = "Kehys" ;
+ Text [ danish ] = "Rammeobjektlinje" ;
+ Text [ french ] = "Barre d'objets de cadre" ;
+ Text [ swedish ] = "Ramobjektlist" ;
+ Text [ dutch ] = "Kaderobjectbalk" ;
+ Text [ spanish ] = "Barra de objetos de marco" ;
+ Text [ english_us ] = "Frame Object Bar" ;
+ Text[ chinese_simplified ] = "¿ò¶ÔÏóÀ¸";
+ Text[ russian ] = "Ïàíåëü îáúåêòîâ êàäðîâ";
+ Text[ polish ] = "Pasek obiektów ramki";
+ Text[ japanese ] = "˜gµÌÞ¼Þª¸ÄÊÞ°";
+ Text[ chinese_traditional ] = "®Øª«¥ó¦C";
+ Text[ arabic ] = "ÔÑíØ ßÇÆäÇÊ ÇáÅØÇÑ";
+ Text[ dutch ] = "Kaderobjectbalk";
+ Text[ chinese_simplified ] = "¿ò¶ÔÏóÀ¸";
+ Text[ greek ] = "ÃñáììÞ áíôéêåéìÝíùí ðëáéóßïõ";
+ Text[ korean ] = "ÇÁ·¹ÀÓ °³Ã¼ ¸ðÀ½";
+ Text[ turkish ] = "Çerçeve nesne çubuðu";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_FRAME_TOOLBOX
+{
+ HelpID = HID_FRAME_TOOLBOX ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ LineSpacing = TRUE ;
+ MenuStrings = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ Customize = TRUE ;
+ Hide = TRUE ;
+ ItemList =
+ {
+ MN_TEMPLATE
+ MN_FRAME_WRAP
+ MN_FRAME1
+ MN_FRAME2
+ MN_FRAME3
+ MN_LINESTYLE
+ MN_BACKGROUND_COLOR
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ MN_ATTRIBUTES_FRAME
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ MN_LAYER
+ ToolBoxItem
+ {
+ Identifier = FN_TOOL_ANKER ;
+ HelpID = FN_TOOL_ANKER ;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_FRAME_CHAIN ;
+ HelpID = FN_FRAME_CHAIN ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_FRAME_UNCHAIN ;
+ HelpID = FN_FRAME_UNCHAIN ;
+ };
+ };
+ Scroll = TRUE ;
+};
+String RID_GRAFIK_TOOLBOX
+{
+ Text = "Grafikobjektleiste" ;
+ Text [ English ] = "Graphic objectbar" ;
+ Text [ norwegian ] = "Graphic" ;
+ Text [ italian ] = "Barra degli oggetti grafici" ;
+ Text [ portuguese_brazilian ] = "Gr fico" ;
+ Text [ portuguese ] = "Barra de gráficos" ;
+ Text [ finnish ] = "Kuva" ;
+ Text [ danish ] = "Grafikobjektlinje" ;
+ Text [ french ] = "Barre d'objets graphiques" ;
+ Text [ swedish ] = "Grafikobjektlist" ;
+ Text [ dutch ] = "Objectbalk afbeeldingen" ;
+ Text [ spanish ] = "Barra de objetos gráficos" ;
+ Text [ english_us ] = "Graphics Object Bar" ;
+ Text[ chinese_simplified ] = "ͼÐζÔÏóÀ¸";
+ Text[ russian ] = "Ïàíåëü ãðàôè÷åñêèõ îáúåêòîâ";
+ Text[ polish ] = "Pasek obiektów graficznych";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸ÄÊÞ°";
+ Text[ chinese_traditional ] = "¹Ï¤ùª«¥ó¦C";
+ Text[ arabic ] = "ÔÑíØ ßÇÆäÇÊ ÕæÑÉ";
+ Text[ dutch ] = "Objectbalk afbeeldingen";
+ Text[ chinese_simplified ] = "ͼÐζÔÏóÀ¸";
+ Text[ greek ] = "ÃñáììÞ ãñáöéêþí áíôéêåéìÝíùí";
+ Text[ korean ] = "±×·¡ÇÈ °³Ã¼ ¸ðÀ½";
+ Text[ turkish ] = "Grafik nesne çubuðu";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_GRAFIK_TOOLBOX
+{
+ HelpID = HID_GRAFIK_TOOLBOX ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ LineSpacing = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ MenuStrings = TRUE ;
+ Customize = TRUE ;
+ Hide = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_GRAF_MODE;
+ HelpID = SID_ATTR_GRAF_MODE;
+ };
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_GRAF_RED;
+ HelpID = SID_ATTR_GRAF_RED;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_GRAF_GREEN;
+ HelpID = SID_ATTR_GRAF_GREEN;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_GRAF_BLUE;
+ HelpID = SID_ATTR_GRAF_BLUE;
+ };
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_GRAF_LUMINANCE;
+ HelpID = SID_ATTR_GRAF_LUMINANCE;
+ };
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_GRAF_CONTRAST;
+ HelpID = SID_ATTR_GRAF_CONTRAST;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_GRAF_GAMMA;
+ HelpID = SID_ATTR_GRAF_GAMMA;
+ };
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_GRAF_TRANSPARENCE;
+ HelpID = SID_ATTR_GRAF_TRANSPARENCE;
+ };
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ ToolBoxItem
+ {
+ Identifier = FN_FLIP_VERT_GRAFIC ;
+ HelpID = FN_FLIP_VERT_GRAFIC ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_FLIP_HORZ_GRAFIC ;
+ HelpID = FN_FLIP_HORZ_GRAFIC ;
+ };
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_SIM_START
+ };
+ MN_ATTRIBUTES_GRAFIK
+ };
+ Scroll = TRUE ;
+};
+String RID_OLE_TOOLBOX
+{
+ Text = "Objekt" ;
+ Text [ English ] = "Object" ;
+ Text [ norwegian ] = "Object" ;
+ Text [ italian ] = "Oggetto" ;
+ Text [ portuguese_brazilian ] = "Objeto" ;
+ Text [ portuguese ] = "Objecto" ;
+ Text [ finnish ] = "Objekti" ;
+ Text [ danish ] = "Objekt" ;
+ Text [ french ] = "Objet" ;
+ Text [ swedish ] = "Objekt" ;
+ Text [ dutch ] = "Object" ;
+ Text [ spanish ] = "Objeto" ;
+ Text [ english_us ] = "Object" ;
+ Text[ chinese_simplified ] = "¶ÔÏó";
+ Text[ russian ] = "Îáúåêò";
+ Text[ polish ] = "Obiekt";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "ª«¥ó";
+ Text[ arabic ] = "ßÇÆä";
+ Text[ dutch ] = "Object";
+ Text[ chinese_simplified ] = "¶ÔÏó";
+ Text[ greek ] = "Áíôéêåßìåíï";
+ Text[ korean ] = "°³Ã¼";
+ Text[ turkish ] = "Nesne";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_OLE_TOOLBOX
+{
+ HelpID = HID_OLE_TOOLBOX ;
+ 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 =
+ {
+ MN_TEMPLATE
+ MN_FRAME_WRAP
+ MN_CONTOUR
+ MN_FRAME1
+ MN_FRAME2
+ MN_FRAME3
+ MN_LINESTYLE
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ MN_ATTRIBUTES_OLE
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ MN_LAYER
+ ToolBoxItem
+ {
+ Identifier = FN_TOOL_ANKER ;
+ HelpID = FN_TOOL_ANKER ;
+ DropDown = TRUE ;
+ };
+ };
+};
+String RID_DRAW_TOOLBOX
+{
+ Text = "Zeichenobjektleiste" ;
+ Text [ English ] = "Draw objectbar" ;
+ Text [ norwegian ] = "Draw" ;
+ Text [ italian ] = "Barra degli oggetti per disegno" ;
+ Text [ portuguese_brazilian ] = "Desenhar" ;
+ Text [ portuguese ] = "Barra de objectos de desenho" ;
+ Text [ finnish ] = "Piirrä" ;
+ Text [ danish ] = "Tegneobjektlinje" ;
+ Text [ french ] = "Barre d'objets de dessin" ;
+ Text [ swedish ] = "Ritobjektlist" ;
+ Text [ dutch ] = "Tekenobjectbalk" ;
+ Text [ spanish ] = "Barra de objetos de dibujo" ;
+ Text [ english_us ] = "Draw Object Bar" ;
+ Text[ chinese_simplified ] = "»æͼ¶ÔÏóÀ¸";
+ Text[ russian ] = "Ïàíåëü ãðàôè÷åñêîãî îáúåêòà";
+ Text[ polish ] = "Pasek obiektów rysunkowych";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸ÄÊÞ°";
+ Text[ chinese_traditional ] = "ø¹Ïª«¥ó¦C";
+ Text[ arabic ] = "ÔÑíØ ÇáßÇÆäÇÊ ÇáÑÓæãíÉ";
+ Text[ dutch ] = "Tekenobjectbalk";
+ Text[ chinese_simplified ] = "»æͼ¶ÔÏóÀ¸";
+ Text[ greek ] = "ÃñáììÞ áíôéêåéìÝíùí ó÷åäßáóçò";
+ Text[ korean ] = "±×¸®±â °³Ã¼ ¸ðÀ½";
+ Text[ turkish ] = "Çizim nesne çubuðu";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_DRAW_TOOLBOX
+{
+ HelpID = HID_DRAW_TOOLBOX ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ LineSpacing = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ Customize = TRUE ;
+ MenuStrings = TRUE ;
+ Hide = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = SID_BEZIER_EDIT ;
+ HelpID = SID_BEZIER_EDIT ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTRIBUTES_LINE ;
+ HelpID = SID_ATTRIBUTES_LINE ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_ATTR_LINEEND_STYLE
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_ATTR_LINE_STYLE
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_ATTR_LINE_WIDTH
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_ATTR_LINE_COLOR
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTRIBUTES_AREA ;
+ HelpID = SID_ATTRIBUTES_AREA ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_ATTR_FILL_STYLE
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_OBJECT_ROTATE
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_TOOL_ANKER ;
+ HelpID = FN_TOOL_ANKER ;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_FRAME_NOWRAP ;
+ HelpID = FN_FRAME_NOWRAP ;
+ RadioCheck = TRUE ;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_FRAME_WRAP ;
+ HelpID = FN_FRAME_WRAP ;
+ RadioCheck = TRUE ;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_FRAME_WRAP_IDEAL ;
+ HelpID = FN_FRAME_WRAP_IDEAL ;
+ RadioCheck = TRUE ;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_FRAME_WRAP_LEFT ;
+ HelpID = FN_FRAME_WRAP_LEFT ;
+ RadioCheck = TRUE ;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_FRAME_WRAP_RIGHT ;
+ HelpID = FN_FRAME_WRAP_RIGHT ;
+ RadioCheck = TRUE ;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_FRAME_WRAPTHRU ;
+ HelpID = FN_FRAME_WRAPTHRU ;
+ RadioCheck = TRUE ;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_FRAME_WRAP_CONTOUR ;
+ HelpID = FN_FRAME_WRAP_CONTOUR ;
+ Hide = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_OBJECT_HEAVEN ;
+ HelpID = SID_OBJECT_HEAVEN ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_OBJECT_HELL ;
+ HelpID = SID_OBJECT_HELL ;
+ };
+ MN_LAYER
+ MN_GRID( HIDE=TRUE )
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_OBJECT_ALIGN ;
+ HelpID = SID_OBJECT_ALIGN ;
+ DropDown = TRUE ;
+ };
+ };
+ Scroll = TRUE ;
+};
+String RID_DRAWFORM_TOOLBOX
+{
+ Text = "Kontrollfeldleiste" ;
+ Text [ English ] = "Control bar" ;
+ Text [ portuguese ] = "Barra de controlos" ;
+ Text [ english_us ] = "Control Bar" ;
+ 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 ] = "Controleveldbalk" ;
+ Text[ chinese_simplified ] = "¿ØÖÆ×Ö¶ÎÀ¸";
+ Text[ russian ] = "Ïàíåëü ýëåìåíòîâ óïðàâëåíèÿ";
+ Text[ polish ] = "Pasek pól kontrolnych";
+ Text[ japanese ] = "ºÝÄÛ°ÙÊÞ°";
+ Text[ chinese_traditional ] = "±±¨î¶µ¦C";
+ Text[ arabic ] = "ÔÑíØ ÚäÇÕÑ ÇáÊÍßã";
+ Text[ dutch ] = "Controleveldbalk";
+ Text[ chinese_simplified ] = "¿ØÖÆ×Ö¶ÎÀ¸";
+ Text[ greek ] = "ÃñáììÞ åëÝã÷ïõ ðåäßùí";
+ Text[ korean ] = "ÄÁÆ®·Ñ ¸ðÀ½";
+ Text[ turkish ] = "Komut alaný çubuðu";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_DRAWFORM_TOOLBOX
+{
+ HelpID = HID_DRAWFORM_TOOLBOX ;
+ 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 = FN_TOOL_ANKER ;
+ HelpID = FN_TOOL_ANKER ;
+ DropDown = TRUE ;
+ };
+ 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 ;
+ };
+ MN_GRID( HIDE=FALSE )
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_OBJECT_ALIGN ;
+ HelpID = SID_OBJECT_ALIGN ;
+ DropDown = TRUE ;
+ };
+ };
+};
+String RID_BEZIER_TOOLBOX
+{
+ Text = "Bezierobjektleiste" ;
+ Text [ English ] = "Bezier objectbar" ;
+ Text [ english_us ] = "Bézier object bar" ;
+ Text [ swedish ] = "Bézierobjektlist" ;
+ Text [ danish ] = "Bezierobjektlinje" ;
+ Text [ italian ] = "Barra degli oggetti di Bézier" ;
+ Text [ spanish ] = "Barra de objetos Bézier" ;
+ Text [ french ] = "Barre d'objets Bézier" ;
+ Text [ dutch ] = "Bézierobjectbalk" ;
+ Text [ portuguese ] = "Barra de objectos Bézier" ;
+ Text [ portuguese_brazilian ] = "Bezierobjektleiste" ;
+ Text[ chinese_simplified ] = "ÇúÏ߶ÔÏóÀ¸";
+ Text[ russian ] = "Ïàíåëü îáúåêòîâ Áåçüå";
+ Text[ polish ] = "Pasek obiektów Beziera";
+ Text[ japanese ] = "ÍÞ¼Þª‹ÈüµÌÞ¼Þª¸ÄÊÞ°";
+ Text[ chinese_traditional ] = "¦±½uª«¥ó¦C";
+ Text[ arabic ] = "ÔÑíØ ßÇÆäÇÊ Bézier";
+ Text[ dutch ] = "Bézierobjectbalk";
+ Text[ chinese_simplified ] = "ÇúÏ߶ÔÏóÀ¸";
+ Text[ greek ] = "ÃñáììÞ áíôéêåéìÝíùí Bezier";
+ Text[ korean ] = "º£Áö¾î °³Ã¼ ¸ðÀ½";
+ Text[ turkish ] = "Bezier nesne çubuðu";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_BEZIER_TOOLBOX
+{
+ HelpID = HID_BEZIER_TOOLBOX ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ LineSpacing = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ Customize = TRUE ;
+ MenuStrings = TRUE ;
+ Hide = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = SID_BEZIER_EDIT ;
+ HelpID = SID_BEZIER_EDIT ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_BEZIER_MOVE ;
+ HelpID = SID_BEZIER_MOVE ;
+ RadioCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_BEZIER_INSERT ;
+ HelpID = SID_BEZIER_INSERT ;
+ RadioCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_BEZIER_DELETE ;
+ HelpID = SID_BEZIER_DELETE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_BEZIER_CUTLINE ;
+ HelpID = SID_BEZIER_CUTLINE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_BEZIER_CONVERT ;
+ HelpID = SID_BEZIER_CONVERT ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_BEZIER_EDGE ;
+ HelpID = SID_BEZIER_EDGE ;
+ RadioCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_BEZIER_SMOOTH ;
+ HelpID = SID_BEZIER_SMOOTH ;
+ RadioCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_BEZIER_SYMMTR ;
+ HelpID = SID_BEZIER_SYMMTR ;
+ RadioCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_BEZIER_CLOSE ;
+ HelpID = SID_BEZIER_CLOSE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_BEZIER_ELIMINATE_POINTS ;
+ HelpID = SID_BEZIER_ELIMINATE_POINTS ;
+ };
+ };
+ Scroll = TRUE ;
+};
+String RID_DRAW_TEXT_TOOLBOX
+{
+ Text = "Textobjektleiste" ;
+ Text [ English ] = "Text objectbar" ;
+ Text [ norwegian ] = "Tegne tekstmodus" ;
+ Text [ italian ] = "Barra degli oggetti di testo" ;
+ Text [ portuguese_brazilian ] = "Modo desenhar texto" ;
+ Text [ portuguese ] = "Barra de objectos de texto" ;
+ Text [ finnish ] = "Piirroksen tekstitila" ;
+ Text [ danish ] = "Tekstobjektlinje" ;
+ Text [ french ] = "Barre d'objets de texte" ;
+ Text [ swedish ] = "Textobjektlist" ;
+ Text [ dutch ] = "Tekstobjectbalk" ;
+ 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ª«¥ó¦C";
+ Text[ arabic ] = "ÔÑíØ ßÇÆäÇÊ ÇáäÕ";
+ Text[ dutch ] = "Tekstobjectbalk";
+ Text[ chinese_simplified ] = "ÎÄ×Ö¶ÔÏóÀ¸";
+ Text[ greek ] = "ÃñáììÞ áíôéêåéìÝíùí êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® °³Ã¼ ¸ðÀ½";
+ Text[ turkish ] = "Metin nesne çubuðu";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_DRAW_TEXT_TOOLBOX
+{
+ HelpID = HID_DRAW_TEXT_TOOLBOX ;
+ Border = TRUE ;
+ Customize = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ LineSpacing = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ MenuStrings = TRUE ;
+ Hide = TRUE ;
+ ItemList =
+ {
+ MN_FONT
+ MN_TEXT1(FALSE)
+ MN_TEXT1_BLOCK
+ MN_TEXT_LINESPACE
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_ATTR_CHAR_COLOR
+ Hide = TRUE;
+ };
+ MN_TEXT_DIALOGS(FALSE)
+ };
+ Scroll = TRUE ;
+};
+String RID_NUM_TOOLBOX
+{
+ Text = "Nummerierungsobjektleiste" ;
+ Text [ English ] = "Outlining objectbar" ;
+ Text [ norwegian ] = "+++Outlining" ;
+ Text [ italian ] = "Barra degli oggetti per la numerazione" ;
+ Text [ portuguese_brazilian ] = "Vazado" ;
+ Text [ portuguese ] = "Barra de objectos de numeração" ;
+ Text [ finnish ] = "Jäsennys" ;
+ Text [ danish ] = "Nummereringsobjektlinje" ;
+ Text [ french ] = "Barre d'objets de numérotation" ;
+ Text [ swedish ] = "Numreringsobjektlist" ;
+ Text [ dutch ] = "Nummeringsobjectbalk" ;
+ Text [ spanish ] = "Barra de objetos de numeración" ;
+ Text [ english_us ] = "Numbering Object Bar" ;
+ Text[ chinese_simplified ] = "±àºÅ¶ÔÏóÀ¸";
+ Text[ russian ] = "Ïàíåëü îáúåêòîâ íóìåðàöèè";
+ Text[ polish ] = "Pasek obiektów numeracji";
+ Text[ japanese ] = "”Ô†•t‚¯µÌÞ¼Þª¸ÄÊÞ°";
+ Text[ chinese_traditional ] = "½s¸¹ª«¥ó¦C";
+ Text[ arabic ] = "ÔÑíØ ßÇÆäÇÊ ÇáÊÑÞíã";
+ Text[ dutch ] = "Nummeringsobjectbalk";
+ Text[ chinese_simplified ] = "±àºÅ¶ÔÏóÀ¸";
+ Text[ greek ] = "ÃñáììÞ áíôéêåéìÝíùí áñßèìçóçò";
+ Text[ korean ] = "¹øÈ£ °³Ã¼ ¸ðÀ½";
+ Text[ turkish ] = "Numaralama nesne çubuðu";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_NUM_TOOLBOX
+{
+ HelpID = HID_NUM_TOOLBOX ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ LineSpacing = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ Customize = TRUE ;
+ MenuStrings = TRUE ;
+ Hide = TRUE ;
+ ItemList =
+ {
+ MN_TEMPLATE
+ MN_FONT
+ ToolBoxItem
+ {
+ Identifier = FN_NUM_BULLET_OFF ;
+ HelpID = FN_NUM_BULLET_OFF ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_NUM_BULLET_UP ;
+ HelpID = FN_NUM_BULLET_UP ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_NUM_BULLET_DOWN ;
+ HelpID = FN_NUM_BULLET_DOWN ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_NUM_BULLET_OUTLINE_UP ;
+ HelpID = FN_NUM_BULLET_OUTLINE_UP ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_NUM_BULLET_OUTLINE_DOWN ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_NUM_BULLET_NONUM ;
+ HelpID = FN_NUM_BULLET_NONUM ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_NUM_BULLET_MOVEUP ;
+ HelpID = FN_NUM_BULLET_MOVEUP ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_NUM_BULLET_MOVEDOWN ;
+ HelpID = FN_NUM_BULLET_MOVEDOWN ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_NUM_BULLET_OUTLINE_MOVEUP ;
+ HelpID = FN_NUM_BULLET_OUTLINE_MOVEUP ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_NUM_BULLET_OUTLINE_MOVEDOWN ;
+ HelpID = FN_NUM_BULLET_OUTLINE_MOVEDOWN ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_NUMBER_NEWSTART ;
+ HelpID = FN_NUMBER_NEWSTART ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_NUMBER_BULLETS ;
+ HelpID = FN_NUMBER_BULLETS ;
+ };
+ };
+ Scroll = TRUE ;
+};
+String STR_SHELLNAME_TEXT
+{
+ Text = "Text" ;
+ Text [ ENGLISH ] = "Text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ english_us ] = "Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷½Ä";
+ Text[ chinese_traditional ] = "¤å¦r";
+ Text[ arabic ] = "äÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+};
+String STR_SHELLNAME_TABLE
+{
+ Text = "Tabelle" ;
+ Text [ ENGLISH ] = "Table" ;
+ Text [ dutch ] = "Tabel" ;
+ Text [ english_us ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ spanish ] = "Tabla" ;
+ Text [ french ] = "Tableau" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ danish ] = "Tabel" ;
+ Text [ portuguese_brazilian ] = "Tabelle" ;
+ Text [ portuguese ] = "Tabela" ;
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "Tabela";
+ Text[ japanese ] = "ðÌÞÙ";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÌÏæá";
+ Text[ dutch ] = "Tabel";
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "Ç¥";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+};
+String STR_SHELLNAME_FRAME
+{
+ Text = "Rahmen" ;
+ Text [ ENGLISH ] = "Frame" ;
+ Text [ dutch ] = "Kader" ;
+ Text [ english_us ] = "Frame" ;
+ Text [ italian ] = "Cornice" ;
+ Text [ spanish ] = "Marco" ;
+ Text [ french ] = "Cadre" ;
+ Text [ swedish ] = "Ram" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ portuguese_brazilian ] = "Rahmen" ;
+ Text [ portuguese ] = "Moldura" ;
+ Text[ chinese_simplified ] = "¿ò";
+ Text[ russian ] = "Òåêñòîâîå ïîëå";
+ Text[ polish ] = "Ramka";
+ Text[ japanese ] = "˜g";
+ Text[ chinese_traditional ] = "¤å¦r¤è¶ô";
+ Text[ arabic ] = "ÅØÇÑ";
+ Text[ dutch ] = "Kader";
+ Text[ chinese_simplified ] = "¿ò";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "Çerçeve";
+ Text[ language_user1 ] = " ";
+};
+String STR_SHELLNAME_GRAPHIC
+{
+ Text = "Grafik" ;
+ Text [ ENGLISH ] = "Graphic" ;
+ Text [ english_us ] = "Graphics" ;
+ Text [ italian ] = "Grafico" ;
+ Text [ spanish ] = "Imagen" ;
+ Text [ french ] = "Image" ;
+ Text [ dutch ] = "Afbeelding" ;
+ Text [ swedish ] = "Grafik" ;
+ Text [ danish ] = "Billede" ;
+ Text [ portuguese_brazilian ] = "Grafik" ;
+ Text [ portuguese ] = "Imagem" ;
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ russian ] = "Ðèñóíîê";
+ Text[ polish ] = "Grafika";
+ Text[ japanese ] = "}";
+ Text[ chinese_traditional ] = "¹Ï¤ù";
+ Text[ arabic ] = "ÕæÑÉ";
+ Text[ dutch ] = "Afbeelding";
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ greek ] = "Ãñáöéêü";
+ Text[ korean ] = "±×·¡ÇÈ";
+ Text[ turkish ] = "Grafik";
+ Text[ language_user1 ] = " ";
+};
+String STR_SHELLNAME_OBJECT
+{
+ Text = "Objekt" ;
+ Text [ ENGLISH ] = "Object" ;
+ Text [ english_us ] = "Object" ;
+ Text [ italian ] = "Oggetto" ;
+ Text [ spanish ] = "Objeto" ;
+ Text [ french ] = "Objet" ;
+ Text [ dutch ] = "Object" ;
+ Text [ swedish ] = "Objekt" ;
+ Text [ danish ] = "Objekt" ;
+ Text [ portuguese_brazilian ] = "Objekt" ;
+ Text [ portuguese ] = "Objecto" ;
+ Text[ chinese_simplified ] = "¶ÔÏó";
+ Text[ russian ] = "Îáúåêò";
+ Text[ polish ] = "Obiekt";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "ª«¥ó";
+ Text[ arabic ] = "ßÇÆä";
+ Text[ dutch ] = "Object";
+ Text[ chinese_simplified ] = "¶ÔÏó";
+ Text[ greek ] = "Áíôéêåßìåíï";
+ Text[ korean ] = "°³Ã¼";
+ Text[ turkish ] = "Nesne";
+ Text[ language_user1 ] = " ";
+};
+String STR_SHELLNAME_LIST
+{
+ Text = "Liste" ;
+ Text [ ENGLISH ] = "List" ;
+ Text [ dutch ] = "Lijst" ;
+ Text [ english_us ] = "List" ;
+ Text [ italian ] = "Elenco" ;
+ Text [ spanish ] = "Lista" ;
+ Text [ french ] = "Liste" ;
+ Text [ swedish ] = "Lista" ;
+ Text [ danish ] = "Liste" ;
+ Text [ portuguese_brazilian ] = "Liste" ;
+ Text [ portuguese ] = "Lista" ;
+ Text[ chinese_simplified ] = "Áбí";
+ Text[ russian ] = "Ñïèñîê";
+ Text[ polish ] = "Lista";
+ Text[ japanese ] = "ؽÄ";
+ Text[ chinese_traditional ] = "²M³æ";
+ Text[ arabic ] = "ÞÇÆãÉ";
+ Text[ dutch ] = "Lijst";
+ Text[ chinese_simplified ] = "Áбí";
+ Text[ greek ] = "Ëßóôá";
+ Text[ korean ] = "¸®½ºÆ®";
+ Text[ turkish ] = "Liste";
+ Text[ language_user1 ] = " ";
+};
+String STR_SHELLNAME_DRAW
+{
+ Text = "Zeichnung" ;
+ Text [ ENGLISH ] = "Drawing" ;
+ Text [ dutch ] = "Tekening" ;
+ Text [ english_us ] = "Drawing" ;
+ Text [ italian ] = "Disegno" ;
+ Text [ spanish ] = "Dibujo" ;
+ Text [ french ] = "Dessin" ;
+ Text [ swedish ] = "Teckning" ;
+ Text [ danish ] = "Tegning" ;
+ Text [ portuguese_brazilian ] = "Zeichnung" ;
+ Text [ portuguese ] = "Desenho" ;
+ Text[ chinese_simplified ] = "»æͼ";
+ Text[ russian ] = "Ðèñóíîê";
+ Text[ polish ] = "Rysunek";
+ Text[ japanese ] = "}Œ`•`‰æ";
+ Text[ chinese_traditional ] = "ø¹Ï";
+ Text[ arabic ] = "ÑÓã";
+ Text[ dutch ] = "Tekening";
+ Text[ chinese_simplified ] = "»æͼ";
+ Text[ greek ] = "Ó÷Ýäéï";
+ Text[ korean ] = "±×¸®±â";
+ Text[ turkish ] = "Çizim";
+ Text[ language_user1 ] = " ";
+};
+String STR_SHELLNAME_DRAWFORM
+{
+ Text = "Forms" ;
+ Text [ ENGLISH ] = "Forms" ;
+ Text [ english_us ] = "Forms" ;
+ Text [ portuguese_brazilian ] = "Forms" ;
+ Text [ swedish ] = "Forms" ;
+ Text [ danish ] = "Formular" ;
+ Text [ italian ] = "Forms" ;
+ Text [ spanish ] = "Formularios" ;
+ Text [ french ] = "Formulaires" ;
+ Text [ dutch ] = "Forms" ;
+ Text [ portuguese ] = "Formulários" ;
+ Text[ chinese_simplified ] = "¹«Ê½";
+ Text[ russian ] = "Ôîðìû";
+ Text[ polish ] = "Kszta³ty";
+ Text[ japanese ] = "Ì«°Ñ";
+ Text[ chinese_traditional ] = "¤½¦¡";
+ Text[ arabic ] = "äãÇÐÌ";
+ Text[ dutch ] = "Forms";
+ Text[ chinese_simplified ] = "¹«Ê½";
+ Text[ greek ] = "Öüñìåò";
+ Text[ korean ] = "¾ç½Ä";
+ Text[ turkish ] = "Form";
+ Text[ language_user1 ] = " ";
+};
+String STR_SHELLNAME_BEZIER
+{
+ Text = "Bezier" ;
+ Text [ ENGLISH ] = "Bezier" ;
+ Text [ english_us ] = "Bézier" ;
+ Text [ portuguese_brazilian ] = "Bezier" ;
+ Text [ swedish ] = "Bézier" ;
+ Text [ danish ] = "Bezier" ;
+ Text [ italian ] = "Bezier" ;
+ Text [ spanish ] = "Bézier" ;
+ Text [ french ] = "Bézier" ;
+ Text [ dutch ] = "Bézier" ;
+ Text [ portuguese ] = "Bézier" ;
+ Text[ chinese_simplified ] = "ÇúÏß";
+ Text[ russian ] = "Áåçüå";
+ Text[ polish ] = "Bezier";
+ Text[ japanese ] = "ÍÞ¼Þª‹Èü";
+ Text[ chinese_traditional ] = "¦±½u";
+ Text[ arabic ] = "Bézier";
+ Text[ dutch ] = "Bézier";
+ Text[ chinese_simplified ] = "ÇúÏß";
+ Text[ greek ] = "Bezier";
+ Text[ korean ] = "º£Áö¾î";
+ Text[ turkish ] = "Bezier";
+ Text[ language_user1 ] = " ";
+};
+String STR_SHELLNAME_DRAW_TEXT
+{
+ Text = "Zeichentext" ;
+ Text [ ENGLISH ] = "Draw text" ;
+ Text [ english_us ] = "Draw text" ;
+ Text [ italian ] = "Testo di disegno" ;
+ Text [ spanish ] = "Texto de diseño" ;
+ Text [ french ] = "Texte dessiné" ;
+ Text [ dutch ] = "Tekentekst" ;
+ Text [ swedish ] = "Teckningstext" ;
+ Text [ danish ] = "Tegnetekst" ;
+ Text [ portuguese_brazilian ] = "Zeichentext" ;
+ Text [ portuguese ] = "Texto de desenho" ;
+ Text[ chinese_simplified ] = "»æͼÎÄ×Ö";
+ Text[ russian ] = "Òåêñò ðèñóíêà";
+ Text[ polish ] = "Tekst rysunku";
+ Text[ japanese ] = "}Œ`•`‰æ÷½Ä";
+ Text[ chinese_traditional ] = "ø¹Ï¤å¦r";
+ Text[ arabic ] = "äÕ ÑÓã";
+ Text[ dutch ] = "Tekentekst";
+ Text[ chinese_simplified ] = "»æͼÎÄ×Ö";
+ Text[ greek ] = "Êåßìåíï ó÷åäßïõ";
+ Text[ korean ] = "ÅؽºÆ® ±×¸®±â";
+ Text[ turkish ] = "Çizim metni";
+ Text[ language_user1 ] = " ";
+};
+ //Strings fuer Gallery/Hintergrund
+String STR_SWBG_PARAGRAPH
+{
+ Text = "Absatz" ;
+ Text [ ENGLISH ] = "Paragraph" ;
+ Text [ english_us ] = "Paragraph" ;
+ Text [ portuguese_brazilian ] = "Absatz" ;
+ Text [ swedish ] = "Stycke" ;
+ Text [ danish ] = "Afsnit" ;
+ Text [ italian ] = "Paragrafo" ;
+ Text [ spanish ] = "Párrafo" ;
+ Text [ french ] = "Paragraphe" ;
+ Text [ dutch ] = "Alinea" ;
+ Text [ portuguese ] = "Parágrafo" ;
+ Text[ chinese_simplified ] = "¶ÎÂä";
+ Text[ russian ] = "Àáçàö";
+ Text[ polish ] = "Akapit";
+ Text[ japanese ] = "’i—Ž";
+ Text[ chinese_traditional ] = "¬q¸¨";
+ Text[ arabic ] = "ÝÞÑÉ";
+ Text[ dutch ] = "Alinea";
+ Text[ chinese_simplified ] = "¶ÎÂä";
+ Text[ greek ] = "ÐáñÜãñáöïò";
+ Text[ korean ] = "´Ü¶ô";
+ Text[ turkish ] = "Paragraf";
+ Text[ language_user1 ] = " ";
+};
+String STR_SWBG_GRAPHIC
+{
+ Text = "Grafik" ;
+ Text [ ENGLISH ] = "Graphic" ;
+ Text [ english_us ] = "Graphics" ;
+ Text [ portuguese_brazilian ] = "Grafik" ;
+ Text [ swedish ] = "Grafik" ;
+ Text [ danish ] = "Billede" ;
+ Text [ italian ] = "Immagine" ;
+ Text [ spanish ] = "Imagen" ;
+ Text [ french ] = "Image" ;
+ Text [ dutch ] = "Afbeelding" ;
+ Text [ portuguese ] = "Imagem" ;
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ russian ] = "Ðèñóíîê";
+ Text[ polish ] = "Grafika";
+ Text[ japanese ] = "}";
+ Text[ chinese_traditional ] = "¹Ï¤ù";
+ Text[ arabic ] = "ÕæÑÉ";
+ Text[ dutch ] = "Afbeelding";
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ greek ] = "Ãñáöéêü";
+ Text[ korean ] = "±×·¡ÇÈ";
+ Text[ turkish ] = "Grafik";
+ Text[ language_user1 ] = " ";
+};
+String STR_SWBG_OLE
+{
+ Text = "OLE Objekt" ;
+ Text [ ENGLISH ] = "OLE Object" ;
+ Text [ english_us ] = "OLE object" ;
+ Text [ portuguese_brazilian ] = "OLE Objekt" ;
+ Text [ swedish ] = "OLE-objekt" ;
+ Text [ danish ] = "OLE-objekt" ;
+ Text [ italian ] = "Oggetto OLE" ;
+ Text [ spanish ] = "Objeto OLE" ;
+ Text [ french ] = "Objet OLE" ;
+ Text [ dutch ] = "OLE-object" ;
+ Text [ portuguese ] = "Objecto OLE" ;
+ Text[ chinese_simplified ] = "OLE ¶ÔÏó";
+ Text[ russian ] = "Îáúåêò OLE";
+ Text[ polish ] = "Obiekt OLE";
+ Text[ japanese ] = "OLE µÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "OLE ª«¥ó";
+ Text[ arabic ] = "ßÇÆä OLE";
+ Text[ dutch ] = "OLE-object";
+ Text[ chinese_simplified ] = "OLE ¶ÔÏó";
+ Text[ greek ] = "Áíôéêåßìåíï OLE";
+ Text[ korean ] = "OLE °³Ã¼";
+ Text[ turkish ] = "OLE nesnesi";
+ Text[ language_user1 ] = " ";
+};
+String STR_SWBG_FRAME
+{
+ Text = "Rahmen" ;
+ Text [ ENGLISH ] = "Frame" ;
+ Text [ english_us ] = "Frame" ;
+ Text [ portuguese_brazilian ] = "Rahmen" ;
+ Text [ swedish ] = "Ram" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ italian ] = "Cornice" ;
+ Text [ spanish ] = "Marco" ;
+ Text [ french ] = "Cadre" ;
+ Text [ dutch ] = "Kader" ;
+ Text [ portuguese ] = "Moldura" ;
+ Text[ chinese_simplified ] = "¿ò";
+ Text[ russian ] = "Òåêñòîâîå ïîëå";
+ Text[ polish ] = "Ramka";
+ Text[ japanese ] = "˜g";
+ Text[ chinese_traditional ] = "¤å¦r¤è¶ô";
+ Text[ arabic ] = "ÅØÇÑ";
+ Text[ dutch ] = "Kader";
+ Text[ chinese_simplified ] = "¿ò";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "Çerçeve";
+ Text[ language_user1 ] = " ";
+};
+String STR_SWBG_TABLE
+{
+ Text = "Tabelle" ;
+ Text [ ENGLISH ] = "Table" ;
+ Text [ english_us ] = "Table" ;
+ Text [ portuguese_brazilian ] = "Tabelle" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ danish ] = "Tabel" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ spanish ] = "Tabla" ;
+ Text [ french ] = "Tableau" ;
+ Text [ dutch ] = "Tabel" ;
+ Text [ portuguese ] = "Tabela" ;
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "Tabela";
+ Text[ japanese ] = "ðÌÞÙ";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÌÏæá";
+ Text[ dutch ] = "Tabel";
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "Ç¥";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+};
+String STR_SWBG_TABLE_ROW
+{
+ Text = "Tabellenzeile" ;
+ Text [ ENGLISH ] = "Tablerow" ;
+ Text [ english_us ] = "Table row" ;
+ Text [ portuguese_brazilian ] = "Tabellenzeile" ;
+ Text [ swedish ] = "Tabellrad" ;
+ Text [ danish ] = "Tabelrække" ;
+ Text [ italian ] = "Riga" ;
+ Text [ spanish ] = "Fila de la tabla" ;
+ Text [ french ] = "Ligne de table" ;
+ Text [ dutch ] = "Tabelrij" ;
+ Text [ portuguese ] = "Linha de tabela" ;
+ Text[ chinese_simplified ] = "¹¤×÷±íµ¥Ôª¸ñ";
+ Text[ russian ] = "Ñòðîêà òàáëèöû";
+ Text[ polish ] = "Wiersz tabeli";
+ Text[ japanese ] = "•\\‚Ìs";
+ Text[ chinese_traditional ] = "¤u§@ªíÀx¦s®æ";
+ Text[ arabic ] = "ÕÝ ÌÏæá";
+ Text[ dutch ] = "Tabelrij";
+ Text[ chinese_simplified ] = "¹¤×÷±íµ¥Ôª¸ñ";
+ Text[ greek ] = "ÃñáììÞ ðßíáêá";
+ Text[ korean ] = "Ç¥ Çà";
+ Text[ turkish ] = "Tablo satýrý";
+ Text[ language_user1 ] = " ";
+};
+String STR_SWBG_TABLE_CELL
+{
+ Text = "Tabellenzelle" ;
+ Text [ ENGLISH ] = "Tablecell" ;
+ Text [ english_us ] = "Table cell" ;
+ Text [ portuguese_brazilian ] = "Tabellenzelle" ;
+ Text [ swedish ] = "Tabellcell" ;
+ Text [ danish ] = "Tabelcelle" ;
+ Text [ italian ] = "Cella" ;
+ Text [ spanish ] = "Celda de la tabla" ;
+ Text [ french ] = "Cellule de table" ;
+ Text [ dutch ] = "Tabelcel" ;
+ Text [ portuguese ] = "Célula de tabela" ;
+ Text[ chinese_simplified ] = "¹¤×÷±íµ¥Ôª¸ñ";
+ Text[ russian ] = "ß÷åéêà òàáëèöû";
+ Text[ polish ] = "Komórka tabeli";
+ Text[ japanese ] = "ðÌÞق̾Ù";
+ Text[ chinese_traditional ] = "¤u§@ªíÀx¦s®æ";
+ Text[ arabic ] = "ÎáíÉ ÌÏæá";
+ Text[ dutch ] = "Tabelcel";
+ Text[ chinese_simplified ] = "¹¤×÷±íµ¥Ôª¸ñ";
+ Text[ greek ] = "Êåëß ðßíáêá";
+ Text[ korean ] = "Ç¥ ¼¿";
+ Text[ turkish ] = "Tablo hücresi";
+ Text[ language_user1 ] = " ";
+};
+String STR_SWBG_PAGE
+{
+ Text = "Seite" ;
+ Text [ ENGLISH ] = "Page" ;
+ Text [ english_us ] = "Page" ;
+ Text [ portuguese_brazilian ] = "Seite" ;
+ Text [ swedish ] = "Sida" ;
+ Text [ danish ] = "Side" ;
+ Text [ italian ] = "Pagina" ;
+ Text [ spanish ] = "Página" ;
+ Text [ french ] = "Page" ;
+ Text [ dutch ] = "Pagina" ;
+ Text [ portuguese ] = "Página" ;
+ Text[ chinese_simplified ] = "Ò³";
+ Text[ russian ] = "Ñòðàíèöà";
+ Text[ polish ] = "Strona";
+ Text[ japanese ] = "Íß°¼Þ";
+ Text[ chinese_traditional ] = "­¶";
+ Text[ arabic ] = "ÕÝÍÉ";
+ Text[ dutch ] = "Pagina";
+ Text[ chinese_simplified ] = "Ò³";
+ Text[ greek ] = "Óåëßäá";
+ Text[ korean ] = "ÆäÀÌÁö";
+ Text[ turkish ] = "Sayfa";
+ Text[ language_user1 ] = " ";
+};
+String STR_SWBG_HEADER
+{
+ Text = "Kopfzeile" ;
+ Text [ ENGLISH ] = "Header" ;
+ Text [ english_us ] = "Header" ;
+ Text [ portuguese_brazilian ] = "Kopfzeile" ;
+ Text [ swedish ] = "Sidhuvud" ;
+ Text [ danish ] = "Sidehoved" ;
+ Text [ italian ] = "Riga d'intestazione" ;
+ Text [ spanish ] = "Encabezamiento" ;
+ Text [ french ] = "En-tête" ;
+ Text [ dutch ] = "Koptekst" ;
+ Text [ portuguese ] = "Cabeçalho" ;
+ 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 ] = " ";
+};
+String STR_SWBG_FOOTER
+{
+ Text = "Fußzeile" ;
+ Text [ ENGLISH ] = "Footer" ;
+ Text [ english_us ] = "Footer" ;
+ Text [ portuguese_brazilian ] = "Fußzeile" ;
+ Text [ swedish ] = "Sidfot" ;
+ Text [ danish ] = "Sidefod" ;
+ Text [ italian ] = "Piè di pagina" ;
+ Text [ spanish ] = "Pie de página" ;
+ Text [ french ] = "Pied de page" ;
+ Text [ dutch ] = "Voettekst" ;
+ Text [ portuguese ] = "Rodapé" ;
+ Text[ chinese_simplified ] = "Ò³½Å";
+ Text[ russian ] = "Íèæíèé êîëîíòèòóë";
+ Text[ polish ] = "Stopka";
+ Text[ japanese ] = "‹r’";
+ Text[ chinese_traditional ] = "­¶§À";
+ Text[ arabic ] = "ÊÐííá ÇáÕÝÍÉ";
+ Text[ dutch ] = "Voettekst";
+ Text[ chinese_simplified ] = "Ò³½Å";
+ Text[ greek ] = "ÕðïóÝëéäï";
+ Text[ korean ] = "¹Ù´Ú±Û";
+ Text[ turkish ] = "Altbilgi";
+ Text[ language_user1 ] = " ";
+};
+ //Ende: Strings fuer Gallery/Hintergrund
+
diff --git a/sw/source/ui/shells/slotadd.cxx b/sw/source/ui/shells/slotadd.cxx
new file mode 100644
index 000000000000..196bf43055cb
--- /dev/null
+++ b/sw/source/ui/shells/slotadd.cxx
@@ -0,0 +1,423 @@
+/*************************************************************************
+ *
+ * $RCSfile: slotadd.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+#pragma hdrstop
+
+#include "hintids.hxx"
+#include "uiitems.hxx"
+#include "uiparam.hxx"
+#include "cmdid.h"
+
+#ifndef _AEITEM_HXX //autogen
+#include <svtools/aeitem.hxx>
+#endif
+#ifndef _SFXRECTITEM_HXX //autogen
+#include <svtools/rectitem.hxx>
+#endif
+#ifndef _SFX_OBJITEM_HXX //autogen
+#include <sfx2/objitem.hxx>
+#endif
+#ifndef _SFX_DBCOLL_HXX //autogen
+#include <offmgr/dbcoll.hxx>
+#endif
+#ifndef _SVX_RULRITEM_HXX //autogen
+#include <svx/rulritem.hxx>
+#endif
+#ifndef _IDETEMP_HXX //autogen
+#include <basctl/idetemp.hxx>
+#endif
+#ifndef _SVX_ZOOMITEM_HXX //autogen
+#include <svx/zoomitem.hxx>
+#endif
+#ifndef _SVX_HLNKITEM_HXX //autogen
+#include <svx/hlnkitem.hxx>
+#endif
+#ifndef _SFXPTITEM_HXX //autogen
+#include <svtools/ptitem.hxx>
+#endif
+#ifndef _SVX_PAGEITEM_HXX //autogen
+#include <svx/pageitem.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SFX_TPLPITEM_HXX //autogen
+#include <sfx2/tplpitem.hxx>
+#endif
+#ifndef _SVX_WRLMITEM_HXX //autogen
+#include <svx/wrlmitem.hxx>
+#endif
+#ifndef _SVX_PROTITEM_HXX //autogen
+#include <svx/protitem.hxx>
+#endif
+#ifndef _SVX_OPAQITEM_HXX //autogen
+#include <svx/opaqitem.hxx>
+#endif
+#ifndef _SVX_TSTPITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVX_AKRNITEM_HXX //autogen
+#include <svx/akrnitem.hxx>
+#endif
+#ifndef _SVX_KEEPITEM_HXX //autogen
+#include <svx/keepitem.hxx>
+#endif
+#ifndef _SVX_KERNITEM_HXX //autogen
+#include <svx/kernitem.hxx>
+#endif
+#ifndef _SVX_SPLTITEM_HXX //autogen
+#include <svx/spltitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_SHADITEM_HXX //autogen
+#include <svx/shaditem.hxx>
+#endif
+#ifndef _SVX_PBINITEM_HXX //autogen
+#include <svx/pbinitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_PRNTITEM_HXX //autogen
+#include <svx/prntitem.hxx>
+#endif
+#ifndef _SVX_ORPHITEM_HXX //autogen
+#include <svx/orphitem.hxx>
+#endif
+#ifndef _SVX_WIDWITEM_HXX //autogen
+#include <svx/widwitem.hxx>
+#endif
+#ifndef _SVX_BOLNITEM_HXX //autogen
+#include <svx/bolnitem.hxx>
+#endif
+#ifndef _SVX_PMDLITEM_HXX //autogen
+#include <svx/pmdlitem.hxx>
+#endif
+#ifndef _SVX_CMAPITEM_HXX //autogen
+#include <svx/cmapitem.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_HYZNITEM_HXX //autogen
+#include <svx/hyznitem.hxx>
+#endif
+#ifndef _SVX_ESCPITEM_HXX //autogen
+#include <svx/escpitem.hxx>
+#endif
+#ifndef _SVX_LSPCITEM_HXX //autogen
+#include <svx/lspcitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_CRSDITEM_HXX //autogen
+#include <svx/crsditem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_SHDDITEM_HXX //autogen
+#include <svx/shdditem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_CNTRITEM_HXX //autogen
+#include <svx/cntritem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_SIZEITEM_HXX //autogen
+#include <svx/sizeitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX__XGRADIENT_HXX //autogen
+#include <svx/xgrad.hxx>
+#endif
+#ifndef _SVX_XLNSTIT_HXX //autogen
+#include <svx/xlnstit.hxx>
+#endif
+#ifndef _SVX_XLNEDIT_HXX //autogen
+#include <svx/xlnedit.hxx>
+#endif
+#ifndef SVX_XFILLIT0_HXX //autogen
+#include <svx/xfillit0.hxx>
+#endif
+#ifndef _SVX_XFLCLIT_HXX //autogen
+#include <svx/xflclit.hxx>
+#endif
+#ifndef _SVX_XFLGRIT_HXX //autogen
+#include <svx/xflgrit.hxx>
+#endif
+#ifndef _SVX_XFLHTIT_HXX //autogen
+#include <svx/xflhtit.hxx>
+#endif
+#ifndef _SVX_XBTMPIT_HXX //autogen
+#include <svx/xbtmpit.hxx>
+#endif
+#ifndef _SVX_XLINEIT0_HXX //autogen
+#include <svx/xlineit0.hxx>
+#endif
+#ifndef _SVX_XLNWTIT_HXX //autogen
+#include <svx/xlnwtit.hxx>
+#endif
+#ifndef _SVX_XLNDSIT_HXX //autogen
+#include <svx/xlndsit.hxx>
+#endif
+#ifndef _SVX_XLNCLIT_HXX //autogen
+#include <svx/xlnclit.hxx>
+#endif
+#ifndef _SVX_TEXTIT0_HXX //autogen
+#include <svx/xtextit0.hxx>
+#endif
+#ifndef _SVX_XFTADIT_HXX //autogen
+#include <svx/xftadit.hxx>
+#endif
+#ifndef _SVX_XFTDIIT_HXX //autogen
+#include <svx/xftdiit.hxx>
+#endif
+#ifndef _SVX_XFTSTIT_HXX //autogen
+#include <svx/xftstit.hxx>
+#endif
+#ifndef _SVX_XFTMRIT_HXX //autogen
+#include <svx/xftmrit.hxx>
+#endif
+#ifndef _SVX_XFTOUIT_HXX //autogen
+#include <svx/xftouit.hxx>
+#endif
+#ifndef _SVX_XFTSHIT_HXX //autogen
+#include <svx/xftshit.hxx>
+#endif
+#ifndef _SVX_XFTSHCLIT_HXX //autogen
+#include <svx/xftshcit.hxx>
+#endif
+#ifndef _SVX_XFTSHXY_HXX //autogen
+#include <svx/xftshxy.hxx>
+#endif
+#ifndef _SVX_XFTSFIT_HXX //autogen
+#include <svx/xftsfit.hxx>
+#endif
+
+
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _PARATR_HXX //autogen
+#include <paratr.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#include "frmatr.hxx"
+#include "cfgitems.hxx"
+#include "grfatr.hxx"
+
+
+#ifndef PROFILE
+// Code zum Initialisieren von Statics im eigenen Code-Segment
+#pragma code_seg( "SWSTATICS" )
+#endif
+
+#define SwShadowItem SvxShadowItem
+#define SwPageSizeItem SvxSizeItem
+#define SwGraphicSizeItem SvxSizeItem
+#define SvxDrawToolItem SfxEnumItem
+#define SvxDrawAlignItem SfxEnumItem
+#define SvxDrawBezierItem SfxEnumItem
+#define SwPageLRSpaceItem SvxLRSpaceItem
+#define SwPageULSpaceItem SvxULSpaceItem
+
+#define SFX_TYPEMAP
+#include "itemdef.hxx"
+#include "swslots.hxx"
+
+#ifndef PROFILE
+#pragma code_seg()
+#endif
+
+/*-------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.36 2000/09/18 16:06:05 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.35 2000/09/04 11:44:07 tbe
+ basicide, isetbrw, si, vcdlged moved from svx to basctl
+
+ Revision 1.34 2000/08/02 08:04:34 jp
+ changes for graphic attributes
+
+ Revision 1.33 2000/07/31 19:25:39 jp
+ new attributes for CJK/CTL and graphic
+
+ Revision 1.32 1999/09/24 14:38:32 os
+ hlnkitem.hxx now in SVX
+
+ Revision 1.31 1998/04/23 10:30:04 OS
+ PageLeft/Right/Top/BottomMargin #49761#
+
+
+ Rev 1.30 23 Apr 1998 12:30:04 OS
+ PageLeft/Right/Top/BottomMargin #49761#
+
+ Rev 1.29 29 Nov 1997 15:52:54 MA
+ includes
+
+ Rev 1.28 24 Nov 1997 09:47:06 MA
+ includes
+
+ Rev 1.27 03 Nov 1997 13:55:42 MA
+ precomp entfernt
+
+ Rev 1.26 15 Aug 1997 11:48:38 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.25 11 Aug 1997 10:06:46 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.24 05 Aug 1997 16:29:08 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.23 11 Apr 1997 10:34:48 TRI
+ includes
+
+ Rev 1.22 07 Apr 1997 16:45:24 OM
+ HyperlinkItem recorden
+
+ Rev 1.21 28 Feb 1997 12:47:12 MH
+ Segmentierug mit WorkingSetTuner nun moeglich
+
+ Rev 1.20 18 Feb 1997 16:56:40 OM
+ dbcoll.hxx eingetragen
+
+ Rev 1.19 11 Dec 1996 20:12:26 NF
+ SvxDrawBezierItem dazu...
+
+ Rev 1.18 19 Sep 1996 14:07:24 JP
+ eigenes Segment fuer statische Objecte
+
+ Rev 1.17 28 Aug 1996 15:55:04 OS
+ includes
+
+ Rev 1.16 15 Aug 1996 18:17:16 OS
+ URL als Attribut - auch fuer die API
+
+ Rev 1.15 26 Mar 1996 10:07:22 OS
+ neu: SvxGraphicSizeItem-dummy
+
+ Rev 1.14 25 Mar 1996 13:35:36 OS
+ dummy SwPageSizeItem definiert
+
+ Rev 1.13 21 Mar 1996 11:41:56 MA
+ Umstellung SV311
+
+ Rev 1.12 07 Mar 1996 08:08:54 OS
+ jetzt auch mit PCH
+
+ Rev 1.11 26 Jan 1996 11:20:40 OS
+ +include sfxshobj.hxx
+
+ Rev 1.10 16 Jan 1996 16:26:56 OS
+ neu: SwShadowItem(nur ueberdefiniertes SvxShadowItem)
+
+ Rev 1.9 08 Jan 1996 15:14:08 OS
+ +include frmatr.hxx
+
+ Rev 1.8 22 Dec 1995 15:09:20 OS
+ +include adritem.hxx
+
+ Rev 1.7 07 Dec 1995 18:25:56 OM
+ Define fuer Enum-Slot
+
+ Rev 1.6 04 Dec 1995 16:09:40 OS
+ includes geaendert
+
+ -------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/shells/tabsh.cxx b/sw/source/ui/shells/tabsh.cxx
new file mode 100644
index 000000000000..66b2eb5d033f
--- /dev/null
+++ b/sw/source/ui/shells/tabsh.cxx
@@ -0,0 +1,1575 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _ZFORLIST_HXX
+#define _ZFORLIST_DECLARE_TABLE
+#include <svtools/zforlist.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SVX_RULRITEM_HXX //autogen
+#include <svx/rulritem.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_SHADITEM_HXX //autogen
+#include <svx/shaditem.hxx>
+#endif
+#ifndef _SVX_SPLTITEM_HXX //autogen
+#include <svx/spltitem.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVX_KEEPITEM_HXX //autogen
+#include <svx/keepitem.hxx>
+#endif
+#ifndef _SVX_BOLNITEM_HXX //autogen
+#include <svx/bolnitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_NUMINF_HXX //autogen
+#include <svx/numinf.hxx>
+#endif
+#ifndef _ZFORMAT_HXX //autogen
+#include <svtools/zformat.hxx>
+#endif
+#ifndef _SFX_SAVEOPT_HXX //autogen
+#include <sfx2/saveopt.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+
+
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTTSPLT_HXX //autogen
+#include <fmtlsplt.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _WVIEW_HXX
+#include <wview.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _INPUTWIN_HXX
+#include <inputwin.hxx>
+#endif
+#ifndef _UIITEMS_HXX
+#include <uiitems.hxx>
+#endif
+#ifndef _USRPREF_HXX
+#include <usrpref.hxx>
+#endif
+#ifndef _TABSH_HXX
+#include <tabsh.hxx>
+#endif
+#ifndef _TABLEDLG_HXX
+#include <tabledlg.hxx>
+#endif
+#ifndef _TABLEMGR_HXX
+#include <tablemgr.hxx>
+#endif
+#ifndef _TAUTOFMT_HXX
+#include <tautofmt.hxx>
+#endif
+#ifndef _CELLATR_HXX
+#include <cellatr.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+#ifndef _ROWHT_HXX
+#include <rowht.hxx>
+#endif
+#ifndef _SPLIT_HXX
+#include <split.hxx>
+#endif
+#ifndef _INSRC_HXX
+#include <insrc.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+#ifndef _TBLNUMFM_HXX
+#include <tblnumfm.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _SPLITTBL_HXX
+#include <splittbl.hxx>
+#endif
+#ifndef _MERGETBL_HXX
+#include <mergetbl.hxx>
+#endif
+#ifndef _TBLSEL_HXX
+#include <tblsel.hxx>
+#endif
+
+#ifndef _POPUP_HRC
+#include <popup.hrc>
+#endif
+#ifndef _SHELLS_HRC
+#include <shells.hrc>
+#endif
+#ifndef _TABLE_HRC
+#include <table.hrc>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+
+#define SwTableShell
+#ifndef _ITEMDEF_HXX
+#include <itemdef.hxx>
+#endif
+#ifndef _SWSLOTS_HXX
+#include <swslots.hxx>
+#endif
+
+//-----------------------------------------------------------------------------
+BOOL lcl_IsNumeric(const String& rStr)
+{
+ for(xub_StrLen i = 0; i < rStr.Len(); i++)
+ {
+ sal_Unicode c = rStr.GetChar(i);
+ if((c < '0') || (c > '9'))
+ return FALSE;
+ }
+ return TRUE;
+
+}
+
+SFX_IMPL_INTERFACE(SwTableShell, SwBaseShell, SW_RES(STR_SHELLNAME_TABLE))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_TAB_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_TABLE_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_TABLE));
+}
+
+
+TYPEINIT1(SwTableShell,SwBaseShell)
+
+/************************************************************************/
+
+
+const USHORT __FAR_DATA aUITableAttrRange[] =
+{
+ FN_PARAM_TABLE_NAME, FN_PARAM_TABLE_NAME,
+ FN_PARAM_TABLE_HEADLINE, FN_PARAM_TABLE_HEADLINE,
+ FN_PARAM_TABLE_SPACE, FN_PARAM_TABLE_SPACE,
+ FN_TABLE_REP, FN_TABLE_REP,
+ SID_RULER_BORDERS, SID_RULER_BORDERS,
+ RES_LR_SPACE, RES_UL_SPACE,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_SHADOW,
+ RES_BOX, RES_SHADOW,
+ RES_BACKGROUND, RES_BACKGROUND,
+ SID_BACKGRND_DESTINATION, SID_BACKGRND_DESTINATION,
+ SID_HTML_MODE, SID_HTML_MODE,
+ SID_ATTR_BRUSH_ROW, SID_ATTR_BRUSH_TABLE,
+ RES_PAGEDESC, RES_BREAK,
+ RES_KEEP, RES_KEEP,
+ RES_LAYOUT_SPLIT, RES_LAYOUT_SPLIT,
+ FN_TABLE_SET_VERT_ALIGN, FN_TABLE_SET_VERT_ALIGN,
+ 0
+};
+
+
+
+
+void lcl_SetAttr( SwWrtShell &rSh, const SfxPoolItem &rItem )
+{
+ SfxItemSet aSet( rSh.GetView().GetPool(), rItem.Which(), rItem.Which(), 0);
+ aSet.Put( rItem );
+ rSh.SetTblAttr( aSet );
+}
+
+/************************************************************************/
+
+
+SwTableRep* lcl_TableParamToItemSet( SfxItemSet& rSet, SwWrtShell &rSh )
+{
+ SwFrmFmt *pFmt = rSh.GetTableFmt();
+ SwTabCols aCols;
+ rSh.GetTabCols( aCols );
+
+ //Ersteinmal die einfachen Attribute besorgen.
+ rSet.Put( SfxStringItem( FN_PARAM_TABLE_NAME, pFmt->GetName()));
+ rSet.Put( SfxBoolItem( FN_PARAM_TABLE_HEADLINE, rSh.IsHeadlineRepeat()) );
+ rSet.Put( pFmt->GetShadow() );
+ rSet.Put(SfxUInt16Item(FN_TABLE_SET_VERT_ALIGN, rSh.GetBoxAlign()));
+ SvxULSpaceItem aULSpace( pFmt->GetULSpace() );
+ rSet.Put( aULSpace );
+
+ USHORT nBackgroundDestination = rSh.GetViewOptions()->GetTblDest();
+ rSet.Put(SwBackgroundDestinationItem(SID_BACKGRND_DESTINATION, nBackgroundDestination ));
+ SvxBrushItem aBrush( RES_BACKGROUND );
+// rSh.GetBoxBackground(aBrush);
+// rSet.Put( aBrush );
+ rSh.GetRowBackground(aBrush);
+ rSet.Put( aBrush, SID_ATTR_BRUSH_ROW );
+ rSh.GetTabBackground(aBrush);
+ rSet.Put( aBrush, SID_ATTR_BRUSH_TABLE );
+ FASTBOOL bTableSel = rSh.IsTableMode();
+ if(!bTableSel)
+ {
+ rSh.StartAllAction();
+ rSh.Push();
+ rSh.GetView().GetViewFrame()->GetDispatcher()->Execute( FN_TABLE_SELECT_ALL, FALSE );
+ }
+ SvxBoxInfoItem aBoxInfo;
+
+ // Tabellenvariante, wenn mehrere Tabellenzellen selektiert
+ rSh.GetCrsr(); //Damit GetCrsrCnt() auch das Richtige liefert
+ aBoxInfo.SetTable (rSh.IsTableMode() && rSh.GetCrsrCnt() > 1 ||
+ !bTableSel);
+ // Abstandsfeld immer anzeigen
+ aBoxInfo.SetDist ((BOOL) TRUE);
+ // Minimalgroesse in Tabellen und Absaetzen setzen
+ aBoxInfo.SetMinDist( !bTableSel || rSh.IsTableMode() ||
+ rSh.GetSelectionType() &
+ (SwWrtShell::SEL_TXT | SwWrtShell::SEL_TBL));
+ // Default-Abstand immer setzen
+ aBoxInfo.SetDefDist (MIN_BORDER_DIST);
+ // Einzelne Linien koennen nur in Tabellen DontCare-Status haben
+ aBoxInfo.SetValid( VALID_DISABLE, !bTableSel || !rSh.IsTableMode() );
+
+ rSet.Put(aBoxInfo);
+ rSh.GetTabBorders( rSet );
+
+ if(!bTableSel)
+ {
+ rSh.ClearMark();
+ rSh.Pop(FALSE);
+ rSh.EndAllAction();
+ }
+
+ SwTabCols aTabCols;
+ rSh.GetTabCols( aTabCols );
+ SvxColumnItem aColItem;
+
+
+ // Pointer wird nach der Dialogausfuehrung geloescht
+ SwTableRep* pRep = new SwTableRep( aTabCols, rSh.IsTblComplex());
+ pRep->SetSpace(aCols.GetRightMax());
+
+ USHORT nPercent = 0;
+ long nWidth = ::GetTableWidth(pFmt, aCols, &nPercent, &rSh );
+ // Die Tabellenbreite ist fuer relative Angaben nicht korrekt
+ if(nPercent)
+ nWidth = pRep->GetSpace() * nPercent / 100;
+ USHORT nAlign = pFmt->GetHoriOrient().GetHoriOrient();
+ pRep->SetAlign(nAlign);
+ SvxLRSpaceItem aLRSpace( pFmt->GetLRSpace() );
+ SwTwips nLeft = aLRSpace.GetLeft();
+ SwTwips nRight = aLRSpace.GetRight();
+ SwTwips nDiff = pRep->GetSpace() - nRight - nLeft - nWidth;
+ if(nAlign != HORI_FULL && Abs(nDiff) > 2)
+ {
+ SwTwips nLR = pRep->GetSpace() - nWidth;
+ switch ( nAlign )
+ {
+ case HORI_CENTER: nLeft = nRight = nLR / 2;
+ break;
+ case HORI_LEFT: nRight = nLR; nLeft = 0;
+ break;
+ case HORI_RIGHT: nLeft = nLR, nRight = 0;
+ break;
+ case HORI_LEFT_AND_WIDTH:
+ nRight = nLR - nLeft;
+ break;
+ case HORI_NONE:
+ if(!nPercent)
+ nWidth = pRep->GetSpace() - nLeft - nRight;
+ break;
+ }
+ }
+ pRep->SetLeftSpace(nLeft);
+ pRep->SetRightSpace(nRight);
+
+ pRep->SetWidth(nWidth);
+ pRep->SetWidthPercent(nPercent);
+ // sind einzelne Zeilen/Zellen selektiert, wird die Spaltenbearbeitung veraendert
+ pRep->SetLineSelected(bTableSel && ! rSh.HasWholeTabSelection());
+ rSet.Put(SwPtrItem(FN_TABLE_REP, pRep));
+ return pRep;
+}
+
+/************************************************************************/
+
+
+void lcl_ItemSetToTableParam( const SfxItemSet& rSet,
+ SwWrtShell &rSh )
+{
+ rSh.StartAllAction();
+ rSh.StartUndo( UNDO_TABLE_ATTR );
+ const SfxPoolItem* pItem = 0;
+
+ SwViewOption aUsrPref( *rSh.GetViewOptions() );
+ USHORT nBackgroundDestination = aUsrPref.GetTblDest();
+ if(SFX_ITEM_SET == rSet.GetItemState(SID_BACKGRND_DESTINATION, FALSE, &pItem))
+ {
+ nBackgroundDestination = ((SfxUInt16Item*)pItem)->GetValue();
+ aUsrPref.SetTblDest((BYTE)nBackgroundDestination);
+ SW_MOD()->ApplyUsrPref(aUsrPref, &rSh.GetView());
+ }
+ FASTBOOL bBorder = ( SFX_ITEM_SET == rSet.GetItemState( RES_BOX ) ||
+ SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_BORDER_INNER ) );
+ pItem = 0;
+ BOOL bBackground = SFX_ITEM_SET == rSet.GetItemState( RES_BACKGROUND, FALSE, &pItem );
+ const SfxPoolItem* pRowItem = 0, *pTableItem = 0;
+ bBackground |= SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_BRUSH_ROW, FALSE, &pRowItem );
+ bBackground |= SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_BRUSH_TABLE, FALSE, &pTableItem );
+ if( bBackground || bBorder)
+ {
+ /*
+ Die Umrandung wird auf die vorliegende Selektion angewendet
+ Liegt keine Selektion vor, wird die Tabelle vollstaendig selektiert.
+ Der Hintergrund wird immer auf den aktuellen Zustand angewendet.
+ */
+
+ FASTBOOL bTableSel = rSh.IsTableMode();
+ rSh.StartAllAction();
+
+ if(bBackground)
+ {
+ if(pItem)
+ rSh.SetBoxBackground( *(const SvxBrushItem*)pItem );
+ if(pRowItem)
+ {
+ SvxBrushItem aBrush(*(const SvxBrushItem*)pRowItem);
+ aBrush.SetWhich(RES_BACKGROUND);
+ rSh.SetRowBackground(aBrush);
+ }
+ if(pTableItem)
+ {
+ SvxBrushItem aBrush(*(const SvxBrushItem*)pTableItem);
+ aBrush.SetWhich(RES_BACKGROUND);
+ rSh.SetTabBackground( aBrush );
+ }
+ }
+
+ if(bBorder)
+ {
+ rSh.Push();
+ if(!bTableSel)
+ {
+ rSh.GetView().GetViewFrame()->GetDispatcher()->Execute( FN_TABLE_SELECT_ALL );
+ }
+ rSh.SetTabBorders( rSet );
+
+ if(!bTableSel)
+ {
+ rSh.ClearMark();
+ }
+ rSh.Pop(FALSE);
+ }
+ rSh.EndAllAction();
+ }
+
+ SwTabCols aTabCols;
+ BOOL bTabCols = FALSE;
+ BOOL bSingleLine = FALSE;
+ SwTableRep* pRep = 0;
+ SwFrmFmt *pFmt = rSh.GetTableFmt();
+ SfxItemSet aSet( rSh.GetAttrPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ if(SFX_ITEM_SET == rSet.GetItemState( FN_TABLE_REP, FALSE, &pItem ))
+ {
+ pRep = (SwTableRep*)((const SwPtrItem*)pItem)->GetValue();
+
+ const SwTwips nWidth = pRep->GetWidth();
+ if ( HORI_FULL == (SwHoriOrient)pRep->GetAlign() )
+ {
+ SwFmtHoriOrient aAttr( pFmt->GetHoriOrient() );
+ aAttr.SetHoriOrient( HORI_FULL );
+ aSet.Put( aAttr );
+ }
+ else
+ {
+ SwFmtFrmSize aSz( ATT_VAR_SIZE, nWidth );
+ if(pRep->GetWidthPercent())
+ {
+ aSz.SetWidthPercent( (BYTE)pRep->GetWidthPercent() );
+ }
+ aSet.Put(aSz);
+ }
+
+ SvxLRSpaceItem aLRSpace( RES_LR_SPACE );
+ aLRSpace.SetLeft(pRep->GetLeftSpace());
+ aLRSpace.SetRight(pRep->GetRightSpace());
+ aSet.Put( aLRSpace );
+
+ SwHoriOrient eOrient = (SwHoriOrient)pRep->GetAlign();
+ SwFmtHoriOrient aAttr( 0, eOrient );
+ aSet.Put( aAttr );
+ // Damit beim recording die Ausrichtung nicht durch die Abstaende ueberschrieben
+ // wird, darf das Item nur bei manueller Ausrichtung aufgez. werden
+ if(eOrient != HORI_NONE)
+ ((SfxItemSet&)rSet).ClearItem( SID_ATTR_LRSPACE );
+
+
+ if(pRep->HasColsChanged())
+ {
+ bTabCols = TRUE;
+ }
+ }
+
+
+ if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_TABLE_HEADLINE, FALSE, &pItem))
+ rSh.SetHeadlineRepeat( ((SfxBoolItem*)pItem)->GetValue() );
+
+ if( SFX_ITEM_SET == rSet.GetItemState( FN_TABLE_SET_VERT_ALIGN, FALSE, &pItem))
+ rSh.SetBoxAlign(((SfxUInt16Item*)(pItem))->GetValue());
+
+ if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_TABLE_NAME, FALSE, &pItem ))
+ rSh.SetTableName( *pFmt, ((const SfxStringItem*)pItem)->GetValue() );
+
+ // kopiere die ausgesuchten Attribute in den ItemSet
+ static USHORT __READONLY_DATA aIds[] =
+ {
+ RES_PAGEDESC, RES_BREAK,
+ RES_KEEP, RES_LAYOUT_SPLIT,
+ RES_UL_SPACE, RES_SHADOW,
+ 0
+ };
+ for( const USHORT* pIds = aIds; *pIds; ++pIds )
+ if( SFX_ITEM_SET == rSet.GetItemState( *pIds, FALSE, &pItem))
+ aSet.Put( *pItem );
+
+ if( aSet.Count() )
+ rSh.SetTblAttr( aSet );
+
+ if(bTabCols)
+ {
+ rSh.GetTabCols( aTabCols );
+ bSingleLine = pRep->FillTabCols( aTabCols );
+ rSh.SetTabCols( aTabCols, bSingleLine );
+ }
+
+ rSh.EndUndo( UNDO_TABLE_ATTR );
+ rSh.EndAllAction();
+}
+
+/************************************************************************/
+
+
+void lcl_TabGetMaxLineWidth(const SvxBorderLine* pBorderLine, SvxBorderLine& rBorderLine)
+{
+ if(pBorderLine->GetInWidth() > rBorderLine.GetInWidth())
+ rBorderLine.SetInWidth(pBorderLine->GetInWidth());
+
+ if(pBorderLine->GetOutWidth() > rBorderLine.GetOutWidth())
+ rBorderLine.SetOutWidth(pBorderLine->GetOutWidth());
+
+ if(pBorderLine->GetDistance() > rBorderLine.GetDistance())
+ rBorderLine.SetDistance(pBorderLine->GetDistance());
+
+ rBorderLine.SetColor(pBorderLine->GetColor());
+}
+
+
+void SwTableShell::Execute(SfxRequest &rReq)
+{
+
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ SwWrtShell &rSh = GetShell();
+
+ //Erstmal die Slots, die keinen FrmMgr benoetigen.
+ BOOL bMore = FALSE;
+ const SfxPoolItem* pItem = 0;
+ USHORT nSlot = rReq.GetSlot();
+ if(pArgs)
+ pArgs->GetItemState(GetPool().GetWhich(nSlot), FALSE, &pItem);
+ switch ( nSlot )
+ {
+ case SID_ATTR_BORDER:
+ {
+/* BOOL bPopCrsr = FALSE;
+ if ( !rReq.IsAPI() )
+ {
+ //Keine Tabellenselektion -> Aenderung wird auf die gesamte
+ //Tabelle.
+ if ( !rSh.IsTableMode() )
+ {
+ rSh.StartAction();
+ bPopCrsr = TRUE;
+ rSh.Push();
+ rSh.EnterStdMode();
+ rSh.MoveTable( fnTableCurr, fnTableStart );
+ rSh.SttSelect();
+ rSh.MoveTable( fnTableCurr, fnTableEnd );
+ rSh.EndSelect();
+ }
+ }*/
+ if(!pArgs)
+ break;
+ //Items erzeugen, weil wir sowieso nacharbeiten muessen
+ SvxBoxItem aBox;
+ SfxItemSet aCoreSet( GetPool(),
+ RES_BOX, RES_BOX,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER, 0);
+ SvxBoxInfoItem aCoreInfo;
+ aCoreSet.Put(aCoreInfo);
+ rSh.GetTabBorders( aCoreSet );
+ const SvxBoxItem& rCoreBox = (const SvxBoxItem&)
+ aCoreSet.Get(RES_BOX);
+ const SfxPoolItem *pItem = 0;
+ if ( pArgs->GetItemState(RES_BOX, TRUE, &pItem) == SFX_ITEM_SET )
+ {
+ aBox = *(SvxBoxItem*)pItem;
+ if ( !rReq.IsAPI() )
+ aBox.SetDistance( Max(rCoreBox.GetDistance(),USHORT(55)) );
+ else if ( aBox.GetDistance() < MIN_BORDER_DIST )
+ aBox.SetDistance( Max(rCoreBox.GetDistance(),(USHORT)MIN_BORDER_DIST) );
+ }
+ else
+ {ASSERT( !this, "Wo ist das Box-Item?" )}
+
+ SvxBoxInfoItem aInfo;
+ if (pArgs->GetItemState(SID_ATTR_BORDER_INNER, TRUE, &pItem) == SFX_ITEM_SET)
+ aInfo = *(SvxBoxInfoItem*)pItem;
+ aInfo.SetTable( TRUE );
+ aInfo.SetValid( VALID_DISABLE, FALSE );
+
+
+// Die Attribute aller Linien werden gelesen und das staerkste gewinnt
+ const SvxBorderLine* pBorderLine;
+ SvxBorderLine aBorderLine;
+ if ((pBorderLine = rCoreBox.GetTop()) != NULL)
+ lcl_TabGetMaxLineWidth(pBorderLine, aBorderLine);
+ if ((pBorderLine = rCoreBox.GetBottom()) != NULL)
+ lcl_TabGetMaxLineWidth(pBorderLine, aBorderLine);
+ if ((pBorderLine = rCoreBox.GetLeft()) != NULL)
+ lcl_TabGetMaxLineWidth(pBorderLine, aBorderLine);
+ if ((pBorderLine = rCoreBox.GetRight()) != NULL)
+ lcl_TabGetMaxLineWidth(pBorderLine, aBorderLine);
+ if ((pBorderLine = aCoreInfo.GetHori()) != NULL)
+ lcl_TabGetMaxLineWidth(pBorderLine, aBorderLine);
+ if ((pBorderLine = aCoreInfo.GetVert()) != NULL)
+ lcl_TabGetMaxLineWidth(pBorderLine, aBorderLine);
+
+ if(aBorderLine.GetOutWidth() == 0)
+ {
+ aBorderLine.SetInWidth(0);
+ aBorderLine.SetOutWidth(DEF_LINE_WIDTH_0);
+ }
+
+ BOOL bLine = FALSE;
+ if ( (pBorderLine = aBox.GetTop()) != NULL)
+ aBox.SetLine(&aBorderLine, BOX_LINE_TOP), bLine |= TRUE;
+ if ((pBorderLine = aBox.GetBottom()) != NULL)
+ aBox.SetLine(&aBorderLine, BOX_LINE_BOTTOM), bLine |= TRUE;
+ if ((pBorderLine = aBox.GetLeft()) != NULL)
+ aBox.SetLine(&aBorderLine, BOX_LINE_LEFT), bLine |= TRUE;
+ if ((pBorderLine = aBox.GetRight()) != NULL)
+ aBox.SetLine(&aBorderLine, BOX_LINE_RIGHT), bLine |= TRUE;
+ if ((pBorderLine = aInfo.GetHori()) != NULL)
+ aInfo.SetLine(&aBorderLine, BOXINFO_LINE_HORI), bLine |= TRUE;
+ if ((pBorderLine = aInfo.GetVert()) != NULL)
+ aInfo.SetLine(&aBorderLine, BOXINFO_LINE_VERT), bLine |= TRUE;
+
+// if ( bPopCrsr && !bLine )
+// aBox.SetDistance( 0 );
+
+ aCoreSet.Put( aBox );
+ aCoreSet.Put( aInfo );
+ rSh.SetTabBorders( aCoreSet );
+
+/* if ( bPopCrsr )
+ {
+ rSh.KillPams();
+ rSh.Pop(FALSE);
+ rSh.EndAction();
+ }*/
+ }
+ break;
+ case SID_ATTR_BRUSH:
+ if(pItem)
+ rSh.SetBoxBackground( *(SvxBrushItem*)pItem );
+ break;
+ case FN_INSERT_TABLE:
+ case FN_FORMAT_TABLE_DLG:
+ {
+ SfxItemSet aCoreSet( GetPool(), aUITableAttrRange);
+
+ SwTableRep* pTblRep = ::lcl_TableParamToItemSet( aCoreSet, rSh );
+ SwTableTabDlg* pDlg = new SwTableTabDlg( GetView().GetWindow(),
+ GetPool(), &aCoreSet, &rSh);
+ aCoreSet.Put(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(GetView().GetDocShell())));
+ rSh.GetTblAttr(aCoreSet);
+ // GetTblAttr buegelt den Background ueber!
+ SvxBrushItem aBrush( RES_BACKGROUND );
+ rSh.GetBoxBackground(aBrush);
+ aCoreSet.Put( aBrush );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+ ::lcl_ItemSetToTableParam( *pOutSet, rSh );
+ }
+ delete pDlg;
+ delete pTblRep;
+ SfxBindings& rBindings = GetView().GetViewFrame()->GetBindings();
+ rBindings.Update(SID_RULER_BORDERS);
+ rBindings.Update(SID_ATTR_TABSTOP);
+ }
+ break;
+ case FN_NUM_FORMAT_TABLE_DLG:
+ {
+ SwView* pView = GetActiveView();
+ if(pView)
+ {
+ FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, pView));
+ SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, eMetric));
+ SvNumberFormatter* pFormatter = rSh.GetNumberFormatter();
+ SfxItemSet aCoreSet( GetPool(),
+ SID_ATTR_NUMBERFORMAT_VALUE, SID_ATTR_NUMBERFORMAT_VALUE,
+ SID_ATTR_NUMBERFORMAT_INFO, SID_ATTR_NUMBERFORMAT_INFO,
+ 0 );
+
+ SfxItemSet aBoxSet( *aCoreSet.GetPool(),
+ RES_BOXATR_FORMAT, RES_BOXATR_FORMAT,
+ RES_BOXATR_VALUE, RES_BOXATR_VALUE,
+ 0 );
+ rSh.GetTblBoxFormulaAttrs( aBoxSet );
+
+ SfxItemState eState = aBoxSet.GetItemState(RES_BOXATR_FORMAT);
+ if(eState == SFX_ITEM_DEFAULT)
+ {
+ aCoreSet.Put( SfxUInt32Item( SID_ATTR_NUMBERFORMAT_VALUE,
+ pFormatter->GetFormatIndex(NF_TEXT, LANGUAGE_SYSTEM)));
+ }
+ else
+ aCoreSet.Put( SfxUInt32Item( SID_ATTR_NUMBERFORMAT_VALUE,
+ ((SwTblBoxNumFormat&)aBoxSet.Get(
+ RES_BOXATR_FORMAT )).GetValue() ));
+
+ aCoreSet.Put( SvxNumberInfoItem( pFormatter,
+ ((SwTblBoxValue&)aBoxSet.Get(
+ RES_BOXATR_VALUE)).GetValue(),
+ SID_ATTR_NUMBERFORMAT_INFO ));
+
+ SwNumFmtDlg* pDlg = new SwNumFmtDlg(GetView().GetWindow(), aCoreSet);
+
+ if (RET_OK == pDlg->Execute())
+ {
+ const SfxPoolItem* pItem = GetView().GetDocShell()->
+ GetItem( SID_ATTR_NUMBERFORMAT_INFO );
+
+ if( pItem && 0 != ((SvxNumberInfoItem*)pItem)->GetDelCount() )
+ {
+ const ULONG* pDelArr = ((SvxNumberInfoItem*)
+ pItem)->GetDelArray();
+
+ for ( USHORT i = 0; i < ((SvxNumberInfoItem*)pItem)->GetDelCount(); i++ )
+ ((SvxNumberInfoItem*)pItem)->
+ GetNumberFormatter()->DeleteEntry( pDelArr[i] );
+ }
+
+ if( SFX_ITEM_SET == pDlg->GetOutputItemSet()->GetItemState(
+ SID_ATTR_NUMBERFORMAT_VALUE, FALSE, &pItem ))
+ {
+ SfxItemSet aBoxSet( *aCoreSet.GetPool(),
+ RES_BOXATR_FORMAT, RES_BOXATR_FORMAT );
+ aBoxSet.Put( SwTblBoxNumFormat(
+ ((SfxUInt32Item*)pItem)->GetValue() ));
+ rSh.SetTblBoxFormulaAttrs( aBoxSet );
+
+ }
+ }
+ delete pDlg;
+ }
+ }
+ break;
+ case FN_CALC_TABLE:
+ rSh.UpdateTable();
+ break;
+ case FN_TABLE_OPTIMAL_HEIGHT:
+ {
+ const SwFmtFrmSize aSz;
+ rSh.SetRowHeight( aSz );
+ }
+ break;
+ case FN_TABLE_DELETE_COL:
+ if ( rSh.DeleteCol() && rSh.HasSelection() )
+ rSh.EnterStdMode();
+ break;
+ case FN_END_TABLE:
+ rSh.MoveTable( fnTableCurr, fnTableEnd );
+ break;
+ case FN_START_TABLE:
+ rSh.MoveTable( fnTableCurr, fnTableStart );
+ break;
+
+ case FN_TABLE_DELETE_ROW:
+ if ( rSh.DeleteRow() && rSh.HasSelection() )
+ rSh.EnterStdMode();
+ break;
+ case FN_TABLE_MERGE_CELLS:
+ if ( rSh.IsTableMode() )
+ switch ( rSh.MergeTab() )
+ {
+ case TBLMERGE_OK:
+ case TBLMERGE_NOSELECTION: break;
+ case TBLMERGE_TOOCOMPLEX:
+ {
+ InfoBox aInfoBox( GetView().GetWindow(),
+ SW_RES( MSG_ERR_TABLE_MERGE ) );
+ aInfoBox.Execute();
+ break;
+ }
+ default: ASSERT( !this, "unbekannter Returnwert MergeTab.");
+ }
+ break;
+ case FN_TABLE_ADJUST_CELLS:
+ if ( rSh.IsAdjustCellWidthAllowed() )
+ rSh.AdjustCellWidth();
+ break;
+ case FN_TABLE_BALANCE_CELLS:
+ if ( rSh.IsAdjustCellWidthAllowed(TRUE) )
+ rSh.AdjustCellWidth(TRUE);
+ break;
+ case FN_TABLE_BALANCE_ROWS:
+ if ( rSh.BalanceRowHeight(TRUE) )
+ rSh.BalanceRowHeight(FALSE);
+ break;
+ case FN_TABLE_SELECT_ALL:
+ rSh.EnterStdMode();
+ rSh.MoveTable( fnTableCurr, fnTableStart );
+ rSh.SttSelect();
+ rSh.MoveTable( fnTableCurr, fnTableEnd );
+ rSh.EndSelect();
+ break;
+ case FN_TABLE_SELECT_COL:
+ rSh.EnterStdMode();
+ rSh.SelectTableCol();
+ break;
+ case FN_TABLE_SELECT_ROW:
+ rSh.EnterStdMode();
+ rSh.SelectTableRow();
+ break;
+ case FN_TABLE_SET_READ_ONLY_CELLS:
+ rSh.ProtectCells();
+ rSh.ResetSelect( 0, FALSE );
+ break;
+ case FN_TABLE_UNSET_READ_ONLY_CELLS:
+ rSh.UnProtectCells();
+ break;
+ case SID_AUTOFORMAT:
+ {
+ SwAutoFormatDlg* pDlg = new SwAutoFormatDlg(
+ &GetView().GetViewFrame()->GetWindow(), &rSh );
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+ case FN_TABLE_SET_ROW_HEIGHT:
+ {
+ SwTableHeightDlg *pDlg = new SwTableHeightDlg(
+ GetView().GetWindow(), rSh );
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+ case FN_NUMBER_BULLETS:
+ case FN_NUM_BULLET_ON:
+ ASSERT( !this, "Funktion darf zur Zeit nicht gerufen werden." );
+ break;
+
+ case FN_TABLE_INSERT_COL:
+ case FN_TABLE_INSERT_ROW:
+ {
+ BOOL bColumn = rReq.GetSlot() == FN_TABLE_INSERT_COL;
+ USHORT nCount = 0;
+ BOOL bAfter = TRUE;
+ if (pItem)
+ {
+ nCount = ((const SfxInt16Item* )pItem)->GetValue();
+ if(SFX_ITEM_SET == pArgs->GetItemState(FN_PARAM_INSERT_AFTER, TRUE, &pItem))
+ bAfter = ((const SfxBoolItem* )pItem)->GetValue();
+ }
+ else if( !rReq.IsAPI() )
+ ++nCount;
+
+ if( nCount )
+ {
+ if( bColumn )
+ rSh.InsertCol( nCount, bAfter );
+ else if ( !rSh.IsInRepeatedHeadline() )
+ rSh.InsertRow( nCount, bAfter );
+ break;
+ }
+
+ nSlot = bColumn ? FN_TABLE_INSERT_COL_DLG : FN_TABLE_INSERT_ROW_DLG;
+ }
+ // kein break; bei Count = 0 kommt der Dialog
+ case FN_TABLE_INSERT_COL_DLG:
+ case FN_TABLE_INSERT_ROW_DLG:
+ {
+ if ( FN_TABLE_INSERT_ROW_DLG != nSlot || !rSh.IsInRepeatedHeadline())
+ {
+ SwInsRowColDlg *pDlg = new SwInsRowColDlg( GetView(),
+ FN_TABLE_INSERT_COL_DLG == nSlot );
+ pDlg->Execute();
+ delete pDlg;
+ }
+ }
+ break;
+ case FN_TABLE_SPLIT_CELLS:
+ {
+ SwSplitTableDlg *pDlg = new SwSplitTableDlg( GetView().GetWindow(), rSh );
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+
+ case FN_TABLE_SPLIT_TABLE:
+ {
+ SwSplitTblDlg *pDlg = new SwSplitTblDlg( GetView().GetWindow(), rSh );
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+
+ case FN_TABLE_MERGE_TABLE:
+ {
+ BOOL bPrev = rSh.CanMergeTable( TRUE );
+ BOOL bNext = rSh.CanMergeTable( FALSE );
+
+ if( bPrev && bNext )
+ {
+ // Dialog: welche denn?
+ SwMergeTblDlg* pDlg = new SwMergeTblDlg(
+ GetView().GetWindow(), bPrev );
+ if( RET_OK != pDlg->Execute() )
+ bPrev = bNext = FALSE;
+ delete pDlg;
+ }
+
+ if( bPrev || bNext )
+ rSh.MergeTable( bPrev );
+ }
+ break;
+
+ case FN_TABLE_MODE_FIX :
+ case FN_TABLE_MODE_FIX_PROP :
+ case FN_TABLE_MODE_VARIABLE :
+ {
+ rSh.SetTblChgMode( ( FN_TABLE_MODE_FIX == nSlot ? TBLFIX_CHGABS
+ : FN_TABLE_MODE_FIX_PROP == nSlot
+ ? TBLFIX_CHGPROP
+ : TBLVAR_CHGABS ) );
+
+ SfxBindings& rBind = GetView().GetViewFrame()->GetBindings();
+ static USHORT __READONLY_DATA aInva[] =
+ { FN_TABLE_MODE_FIX,
+ FN_TABLE_MODE_FIX_PROP,
+ FN_TABLE_MODE_VARIABLE,
+ 0
+ };
+ rBind.Invalidate( aInva );
+ }
+ break;
+ case FN_TABLE_AUTOSUM:
+ {
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ pVFrame->GetDispatcher()->Execute(FN_EDIT_FORMULA, SFX_CALLMODE_SYNCHRON);
+ const USHORT nId = SwInputChild::GetChildWindowId();
+ SwInputChild* pChildWin = (SwInputChild*)pVFrame->
+ GetChildWindow( nId );
+ String sSum;
+ GetShell().GetAutoSum(sSum);
+ if( pChildWin )
+ pChildWin->SetFormula( sSum );
+
+ }
+ break;
+ default:
+ bMore = TRUE;
+ }
+
+ if ( !bMore )
+ {
+ return;
+ }
+ else
+ bMore = FALSE;
+ //Jetzt die Slots, die direkt auf dem TableFmt arbeiten.
+ SwFrmFmt *pFmt = rSh.GetTableFmt();
+ switch ( nSlot )
+ {
+ case SID_ATTR_ULSPACE:
+ {
+ if(pItem)
+ {
+ SvxULSpaceItem aULSpace( *(const SvxULSpaceItem*)pItem );
+ aULSpace.SetWhich( RES_UL_SPACE );
+ ::lcl_SetAttr( rSh, aULSpace );
+ }
+ }
+ break;
+
+ case SID_ATTR_LRSPACE:
+ {
+ if(pItem)
+ {
+ SfxItemSet aSet( GetPool(), RES_LR_SPACE, RES_LR_SPACE,
+ RES_HORI_ORIENT, RES_HORI_ORIENT, 0 );
+ SvxLRSpaceItem aLRSpace( *(const SvxLRSpaceItem*)pItem );
+ aLRSpace.SetWhich( RES_LR_SPACE );
+ aSet.Put( aLRSpace );
+ SwFmtHoriOrient aHori( pFmt->GetHoriOrient() );
+ aHori.SetHoriOrient( HORI_NONE );
+ aSet.Put( aLRSpace );
+ rSh.SetTblAttr( aSet );
+ }
+ }
+ break;
+// der letzte case-Zweig der noch einen TabellenManager braucht!!
+ case FN_TABLE_SET_COL_WIDTH:
+ {
+ SwTableFUNC aMgr( &rSh, FALSE);
+ aMgr.ColWidthDlg(GetView().GetWindow());
+ }
+ break;
+ case FN_TABLE_VERT_NONE:
+ case FN_TABLE_VERT_CENTER:
+ case FN_TABLE_VERT_BOTTOM:
+ {
+ USHORT nAlign = nSlot == FN_TABLE_VERT_NONE ?
+ VERT_NONE :
+ nSlot == FN_TABLE_VERT_CENTER ?
+ VERT_CENTER : VERT_BOTTOM;
+ rSh.SetBoxAlign(nAlign);
+ }
+ break;
+
+ case SID_ATTR_PARA_SPLIT:
+ if ( pItem )
+ {
+ SwFmtLayoutSplit aSplit( ((const SvxFmtSplitItem*)pItem)->GetValue());
+ SfxItemSet aSet(GetPool(), RES_LAYOUT_SPLIT, RES_LAYOUT_SPLIT, 0 );
+ aSet.Put(aSplit);
+ rSh.SetTblAttr(aSet);
+ }
+ break;
+
+ case SID_ATTR_PARA_KEEP:
+ if ( pItem )
+ {
+ SvxFmtKeepItem aKeep( *(const SvxFmtKeepItem*)pItem );
+ aKeep.SetWhich( RES_KEEP );
+ SfxItemSet aSet(GetPool(), RES_KEEP, RES_KEEP, 0 );
+ aSet.Put(aKeep);
+ rSh.SetTblAttr(aSet);
+ }
+ break;
+
+ default:
+ ASSERT( !this, "falscher Dispatcher" );
+ return;
+ }
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwTableShell::GetState(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter( rSet );
+ SwWrtShell &rSh = GetShell();
+ SwFrmFmt *pFmt = rSh.GetTableFmt();
+ USHORT nSlot = aIter.FirstWhich();
+ while ( nSlot )
+ {
+ switch ( nSlot )
+ {
+ case FN_TABLE_MERGE_CELLS:
+ if ( !rSh.IsTableMode() )
+ rSet.DisableItem(FN_TABLE_MERGE_CELLS);
+ break;
+ case FN_TABLE_ADJUST_CELLS:
+ if ( !rSh.IsAdjustCellWidthAllowed() )
+ rSet.DisableItem(FN_TABLE_ADJUST_CELLS);
+ break;
+
+ case FN_TABLE_BALANCE_CELLS:
+ if ( !rSh.IsAdjustCellWidthAllowed(TRUE) )
+ rSet.DisableItem(FN_TABLE_BALANCE_CELLS);
+ break;
+
+ case FN_TABLE_BALANCE_ROWS:
+ if ( !rSh.BalanceRowHeight(TRUE) )
+ rSet.DisableItem(FN_TABLE_BALANCE_ROWS);
+ break;
+
+ case SID_INSERT_DIAGRAM:
+ if ( !SFX_APP()->HasFeature( SFX_FEATURE_SMATH ) ||
+ rSh.IsTblComplexForChart() )
+ rSet.DisableItem(nSlot);
+ break;
+
+ case FN_INSERT_TABLE:
+ // Irgendeinen Wert "putten", damit Controller enabled bleibt.
+ // Statt "Insert:Table" erscheint dann "Format:Table".
+ rSet.Put(SfxUInt16Item(nSlot, 1));
+ break;
+
+ case FN_TABLE_OPTIMAL_HEIGHT:
+ {
+ //Disablen wenn bereits auto-Hoehe eingestellt ist.
+ SwFmtFrmSize *pSz;
+ rSh.GetRowHeight( pSz );
+ if ( pSz )
+ {
+ if ( ATT_VAR_SIZE == pSz->GetSizeType() )
+ rSet.DisableItem( nSlot );
+ delete pSz;
+ }
+ }
+ break;
+ case FN_TABLE_INSERT_ROW:
+ case FN_TABLE_INSERT_ROW_DLG:
+ {
+ if ( rSh.IsInRepeatedHeadline() )
+ rSet.DisableItem( nSlot );
+ }
+ break;
+ case RES_LR_SPACE:
+ rSet.Put(pFmt->GetLRSpace());
+ break;
+ case RES_UL_SPACE:
+ rSet.Put(pFmt->GetULSpace());
+ break;
+ case FN_TABLE_VERT_NONE:
+ case FN_TABLE_VERT_CENTER:
+ case FN_TABLE_VERT_BOTTOM:
+ {
+ USHORT nAlign = rSh.GetBoxAlign();
+ BOOL bSet = nSlot == FN_TABLE_VERT_NONE && nAlign == VERT_NONE||
+ nSlot == FN_TABLE_VERT_CENTER && nAlign == VERT_CENTER ||
+ nSlot == FN_TABLE_VERT_BOTTOM && nAlign == VERT_BOTTOM;
+ rSet.Put(SfxBoolItem(nSlot, bSet));
+ }
+ break;
+
+ case FN_TABLE_MODE_FIX :
+ case FN_TABLE_MODE_FIX_PROP :
+ case FN_TABLE_MODE_VARIABLE :
+ {
+ USHORT nMode = rSh.GetTblChgMode();
+ BOOL bSet = nSlot == FN_TABLE_MODE_FIX && nMode == TBLFIX_CHGABS ||
+ nSlot == FN_TABLE_MODE_FIX_PROP && nMode == TBLFIX_CHGPROP ||
+ nSlot == FN_TABLE_MODE_VARIABLE && nMode == TBLVAR_CHGABS;
+ rSet.Put(SfxBoolItem(nSlot, bSet));
+ }
+ break;
+
+ case SID_ATTR_PARA_SPLIT:
+ rSet.Put( pFmt->GetKeep() );
+ break;
+
+ case SID_ATTR_PARA_KEEP:
+ rSet.Put( pFmt->GetLayoutSplit() );
+ break;
+ case FN_TABLE_SPLIT_TABLE:
+ {
+ if ( rSh.IsInHeadline() )
+ rSet.DisableItem( nSlot );
+ }
+ break;
+ case FN_TABLE_MERGE_TABLE:
+ {
+ BOOL bAsk;
+ if( !rSh.CanMergeTable( TRUE, &bAsk ))
+ rSet.DisableItem( nSlot );
+ }
+ break;
+
+ case FN_TABLE_DELETE_ROW:
+ {
+ SwSelBoxes aBoxes;
+ ::GetTblSel( rSh, aBoxes, TBLSEARCH_ROW );
+ if( ::HasProtectedCells( aBoxes ))
+ rSet.DisableItem( nSlot );
+ }
+ break;
+ case FN_TABLE_DELETE_COL:
+ {
+ SwSelBoxes aBoxes;
+ ::GetTblSel( rSh, aBoxes, TBLSEARCH_COL );
+ if( ::HasProtectedCells( aBoxes ))
+ rSet.DisableItem( nSlot );
+ }
+ break;
+ }
+ nSlot = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwTableShell::SwTableShell(SwView &rView) :
+ SwBaseShell(rView)
+{
+ SetName(String::CreateFromAscii("Table"));
+ SetHelpId(SW_TABSHELL);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwTableShell::GetFrmBorderState(SfxItemSet &rSet)
+{
+ SfxItemSet aCoreSet( GetPool(),
+ RES_BOX, RES_BOX,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER, 0 );
+ SvxBoxInfoItem aBoxInfo;
+ aCoreSet.Put( aBoxInfo );
+ GetShell().GetTabBorders( aCoreSet );
+ rSet.Put( aCoreSet );
+ rSet.Put(SfxUInt16Item(SID_ATTR_BORDER, FALSE)); // Rahmencontroller: letzte Zeile ausklappen
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwTableShell::ExecTableStyle(SfxRequest& rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ if(pArgs)
+ switch ( rReq.GetSlot() )
+ {
+ case SID_FRAME_LINESTYLE:
+ case SID_FRAME_LINECOLOR:
+ {
+/* Tabellenselektion ist abgeschafft
+ BOOL bPopCrsr = FALSE;
+ if ( !rReq.IsAPI() )
+ {
+ //Keine Tabellenselektion -> Aenderung wird auf die gesamte
+ //Tabelle.
+ if ( !rSh.IsTableMode() )
+ {
+ bPopCrsr = TRUE;
+ rSh.Push();
+ rSh.StartAction();
+ rSh.EnterStdMode();
+ rSh.MoveTable( fnTableCurr, fnTableStart );
+ rSh.SttSelect();
+ rSh.MoveTable( fnTableCurr, fnTableEnd );
+ rSh.EndSelect();
+ }
+ }*/
+ if ( rReq.GetSlot() == SID_FRAME_LINESTYLE )
+ {
+ const SvxLineItem &rLineItem = (const SvxLineItem&)pArgs->
+ Get( SID_FRAME_LINESTYLE );
+ const SvxBorderLine* pBorderLine = rLineItem.GetLine();
+ rSh.SetTabLineStyle( 0, TRUE, pBorderLine);
+ }
+ else
+ {
+ const SvxColorItem &rNewColorItem = (const SvxColorItem&)pArgs->
+ Get( SID_FRAME_LINECOLOR );
+ rSh.SetTabLineStyle( &rNewColorItem.GetValue() );
+ }
+/* if ( bPopCrsr )
+ {
+ rSh.KillPams();
+ rSh.Pop(FALSE);
+ rSh.EndAction();
+ }*/
+ break;
+ }
+ }
+}
+
+
+void SwTableShell::GetLineStyleState(SfxItemSet &rSet)
+{
+ SfxItemSet aCoreSet( GetPool(),
+ RES_BOX, RES_BOX,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER, 0);
+ SvxBoxInfoItem aCoreInfo;
+ aCoreSet.Put(aCoreInfo);
+ GetShell().GetTabBorders( aCoreSet );
+
+ const SvxBoxItem& rBoxItem = (const SvxBoxItem&)aCoreSet.Get( RES_BOX );
+ const SvxBorderLine* pLine = rBoxItem.GetTop();
+
+ rSet.Put( SvxColorItem( pLine ? pLine->GetColor() : Color(), SID_FRAME_LINECOLOR ) );
+ SvxLineItem aLine( SID_FRAME_LINESTYLE );
+ aLine.SetLine(pLine);
+ rSet.Put( aLine );
+}
+
+void SwTableShell::ExecNumberFormat(SfxRequest& rReq)
+{
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ SwWrtShell &rSh = GetShell();
+
+ //Erstmal die Slots, die keinen FrmMgr benoetigen.
+ const SfxPoolItem* pItem = 0;
+ USHORT nSlot = rReq.GetSlot();
+ if(pArgs)
+ pArgs->GetItemState(GetPool().GetWhich(nSlot), FALSE, &pItem);
+
+ // Sprache immer von Cursorposition besorgen
+ SfxItemSet aSet( rSh.GetAttrPool(), RES_CHRATR_LANGUAGE,
+ RES_CHRATR_LANGUAGE );
+ rSh.GetAttr( aSet );
+ LanguageType eLang = ((const SvxLanguageItem&)aSet.Get(
+ RES_CHRATR_LANGUAGE )).GetLanguage();
+ SvNumberFormatter* pFormatter = rSh.GetNumberFormatter();
+ ULONG nNumberFormat = NUMBERFORMAT_ENTRY_NOT_FOUND;
+ USHORT nFmtType = 0, nOffset = 0;
+
+ switch ( nSlot )
+ {
+ case FN_NUMBER_FORMAT:
+ if( pItem )
+ {
+ // Index fuer String bestimmen
+ String aCode( ((const SfxStringItem*)pItem)->GetValue() );
+ nNumberFormat = pFormatter->GetEntryKey( aCode, eLang );
+ if( NUMBERFORMAT_ENTRY_NOT_FOUND == nNumberFormat )
+ {
+ // neu eintragen
+ xub_StrLen nErrPos;
+ short nType;
+ if( !pFormatter->PutEntry( aCode, nErrPos, nType,
+ nNumberFormat, eLang ))
+ nNumberFormat = NUMBERFORMAT_ENTRY_NOT_FOUND;
+ }
+ }
+ break;
+ case FN_NUMBER_STANDARD: nFmtType = NUMBERFORMAT_NUMBER; break;
+ case FN_NUMBER_SCIENTIFIC: nFmtType = NUMBERFORMAT_SCIENTIFIC; break;
+ case FN_NUMBER_DATE: nFmtType = NUMBERFORMAT_DATE; break;
+ case FN_NUMBER_TIME: nFmtType = NUMBERFORMAT_TIME; break;
+ case FN_NUMBER_CURRENCY: nFmtType = NUMBERFORMAT_CURRENCY; break;
+ case FN_NUMBER_PERCENT: nFmtType = NUMBERFORMAT_PERCENT; break;
+
+ case FN_NUMBER_TWODEC: // #.##0,00
+ nFmtType = NUMBERFORMAT_NUMBER;
+ nOffset = NF_NUMBER_1000DEC2;
+ break;
+
+ default:
+ ASSERT(FALSE, falscher Dispatcher);
+ return;
+ }
+
+ if( nFmtType )
+ nNumberFormat = pFormatter->GetStandardFormat( nFmtType, eLang ) + nOffset;
+
+ if( NUMBERFORMAT_ENTRY_NOT_FOUND != nNumberFormat )
+ {
+ SfxItemSet aBoxSet( *aSet.GetPool(), RES_BOXATR_FORMAT, RES_BOXATR_FORMAT );
+ aBoxSet.Put( SwTblBoxNumFormat( nNumberFormat ));
+ rSh.SetTblBoxFormulaAttrs( aBoxSet );
+ }
+
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.246 2000/09/18 16:06:05 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.245 2000/09/08 08:12:52 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.244 2000/09/07 15:59:30 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.243 2000/08/25 09:02:38 os
+ negative margins enabled
+
+ Revision 1.242 2000/07/03 20:02:16 jp
+ Bug #70403#: dont delete protected cells
+
+ Revision 1.241 2000/05/26 07:21:32 os
+ old SW Basic API Slots removed
+
+ Revision 1.240 2000/05/18 08:37:25 os
+ lcl_IsNumeric
+
+ Revision 1.239 2000/05/16 14:32:51 jp
+ Changes for Unicode
+
+ Revision 1.238 2000/05/10 11:53:02 os
+ Basic API removed
+
+ Revision 1.237 2000/04/20 12:51:52 os
+ GetName() returns String&
+
+ Revision 1.236 2000/04/18 14:58:24 os
+ UNICODE
+
+ Revision 1.235 2000/02/11 14:57:39 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.234 2000/02/03 15:10:42 os
+ #72601# record deleting of rows or column prior to execution
+
+ Revision 1.233 1999/08/23 07:49:02 OS
+ #61218# correct handling of left_and_width oriented tables
+
+
+ Rev 1.232 23 Aug 1999 09:49:02 OS
+ #61218# correct handling of left_and_width oriented tables
+
+ Rev 1.231 21 Jul 1999 13:29:58 JP
+ WhichId-Ranges of SfxItemSets: EndId is inclusive
+
+ Rev 1.230 09 Jun 1999 19:33:58 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+ Rev 1.229 11 May 1999 21:51:40 JP
+ Task #66127#: ueberfluessigen Code entfernt
+
+ Rev 1.228 05 May 1999 11:23:18 OS
+ #63790# Tabellen-Update nur bei Bedarf rufen
+
+ Rev 1.227 28 Apr 1999 22:41:34 JP
+ Bug #65545#: lcl_TableParamToItemSet - umgebene spaltige Bereiche beachten
+
+ Rev 1.226 18 Mar 1999 14:40:48 OS
+ #61169# #61489# Masseinheiten fuer Text u. HTML am Module setzen, nicht an der App
+
+ Rev 1.225 22 Feb 1999 11:50:32 JP
+ fuer Bug #61545#: Code optimiert
+
+ Rev 1.224 17 Feb 1999 21:14:20 JP
+ Task #61764#: neu: Tabellen zusammenfassen
+
+ Rev 1.223 27 Nov 1998 14:52:54 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.222 05 Oct 1998 15:36:02 OM
+ Vernuenftiges Standardformat verwenden
+
+ Rev 1.221 15 Sep 1998 11:20:36 JP
+ Bug #56201#: GoNextCell - per Flag das anhaengen von Lines steuern
+
+ Rev 1.220 08 Sep 1998 17:03:00 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.219 30 Jul 1998 10:58:18 OS
+ Tabellenbreit ergibt sich fuer HORI-NONE aus verfuegbarer Breite - Raender #54030#
+
+ Rev 1.218 20 Jul 1998 10:44:52 MA
+ #53013# Nach Anweisung abgeklemmt
+
+ Rev 1.217 26 Jun 1998 17:36:06 OS
+ SwBGDestItem mit Which #51751#
+
+ Rev 1.216 18 Jun 1998 18:18:46 OS
+ SwBackgroundDestinationItem
+
+ Rev 1.215 02 Jun 1998 10:53:16 JP
+ aUITableAttrRange sollte ein const Array sein
+
+ Rev 1.214 29 May 1998 19:08:26 JP
+ SS vom SwTableReq geaendert
+
+ Rev 1.213 12 May 1998 23:44:08 JP
+ neu: InserTable/TextToTable mit optionalen AutoFormat
+
+ Rev 1.212 28 Apr 1998 09:16:18 OS
+ GetTableWidth() verschoben
+
+ Rev 1.211 18 Mar 1998 19:44:20 MA
+ State fuer Split
+
+ Rev 1.210 17 Mar 1998 16:20:42 OS
+ Tabelle auftrennen
+
+ Rev 1.209 17 Mar 1998 14:12:06 OS
+ Border-Slot auch ohne Argumente ueberleben #48169#
+
+ Rev 1.208 16 Mar 1998 23:21:04 JP
+ SplitTable: zusaetzlich einen Modus angeben - Headline kopieren/Attr. Kopieren/Border korrigieren
+
+ Rev 1.207 02 Mar 1998 14:19:34 OS
+ Zahlenformat statt Default auf Text einstellen#46574#
+
+ Rev 1.206 25 Feb 1998 12:53:52 MA
+ new: SplitTable
+
+ Rev 1.205 29 Nov 1997 15:53:00 MA
+ includes
+
+ Rev 1.204 24 Nov 1997 09:47:06 MA
+ includes
+
+ Rev 1.203 11 Nov 1997 10:49:08 OS
+ Parameter fuer Split und ColumnWidth richtig pruefen
+
+ Rev 1.202 03 Nov 1997 13:55:48 MA
+ precomp entfernt
+
+ Rev 1.201 01 Sep 1997 13:23:08 OS
+ DLL-Umstellung
+
+ Rev 1.200 15 Aug 1997 11:48:50 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.199 12 Aug 1997 14:43:10 MH
+ chg: header
+
+ Rev 1.198 11 Aug 1997 15:42:10 JP
+ Bugfix #42478#: ueber die DocShell die geloeschten Formate besorgen
+
+ Rev 1.198 11 Aug 1997 15:41:44 JP
+ Bugfix #42478#: ueber die DocShell die geloeschten Formate besorgen
+
+ Rev 1.197 11 Aug 1997 08:48:54 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.196 08 Aug 1997 17:28:52 OM
+ Headerfile-Umstellung
+
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/shells/textdrw.cxx b/sw/source/ui/shells/textdrw.cxx
new file mode 100644
index 000000000000..7ad81a10c958
--- /dev/null
+++ b/sw/source/ui/shells/textdrw.cxx
@@ -0,0 +1,278 @@
+/*************************************************************************
+ *
+ * $RCSfile: textdrw.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SVX_FMGLOB_HXX
+#include <svx/fmglob.hxx>
+#endif
+#ifndef _SVDOUNO_HXX //autogen
+#include <svx/svdouno.hxx>
+#endif
+#ifndef _COM_SUN_STAR_FORM_FORMBUTTONTYPE_HPP_
+#include <com/sun/star/form/FormButtonType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx>
+#endif
+#ifndef _TEXTSH_HXX
+#include <textsh.hxx>
+#endif
+
+#ifndef _POOLFMT_HRC
+#include <poolfmt.hrc>
+#endif
+
+#define C2U(cChar) rtl::OUString::createFromAscii(cChar)
+using namespace ::com::sun::star;
+using namespace ::rtl;
+/*---------------------------------------------------------------------------
+ Beschreibung:
+ ----------------------------------------------------------------------------*/
+
+void SwTextShell::InsertURLButton(const String& rURL, const String& rTarget, const String& rTxt)
+{
+ SwWrtShell& rSh = GetShell();
+
+ if (!rSh.HasDrawView())
+ rSh.MakeDrawView();
+ SdrView *pSdrView = rSh.GetDrawView();
+
+ // OBJ_FM_BUTTON
+ pSdrView->SetCurrentObj(OBJ_FM_BUTTON);
+ pSdrView->SetEditMode(sal_False);
+
+ Point aStartPos(rSh.GetCharRect().Pos() + Point(0, 1));
+
+ rSh.StartAction();
+ rSh.StartUndo( UIUNDO_INSERT_URLBTN );
+ if (rSh.BeginCreate(OBJ_FM_BUTTON, FmFormInventor, aStartPos))
+ {
+ pSdrView->SetOrtho(sal_False);
+ Size aSz(GetView().GetEditWin().PixelToLogic(Size(140, 20)));
+ Point aEndPos(aSz.Width(), aSz.Height());
+
+ rSh.MoveCreate(aStartPos + aEndPos);
+ rSh.EndCreate(SDRCREATE_FORCEEND);
+
+ const SdrMarkList& rMarkList = pSdrView->GetMarkList();
+ if (rMarkList.GetMark(0))
+ {
+ SdrUnoObj* pUnoCtrl = PTR_CAST(SdrUnoObj, rMarkList.GetMark(0)->GetObj());
+ uno::Reference< awt::XControlModel > xControlModel = pUnoCtrl->GetUnoControlModel();
+
+ ASSERT( xControlModel.is(), "UNO-Control ohne Model" );
+ if( !xControlModel.is() )
+ return;
+
+ uno::Reference< beans::XPropertySet > xPropSet(xControlModel, uno::UNO_QUERY);
+
+
+ uno::Any aTmp;
+
+ aTmp <<= OUString(rTxt);
+ xPropSet->setPropertyValue( C2U("Label"), aTmp );
+
+ aTmp <<= OUString(INetURLObject::RelToAbs(rURL));
+ xPropSet->setPropertyValue( C2U("TargetURL"), aTmp );
+
+ if( rTarget.Len() )
+ {
+ aTmp <<= OUString(rTarget);
+ xPropSet->setPropertyValue( C2U("TargetFrame"), aTmp );
+ }
+
+
+ form::FormButtonType eButtonType = form::FormButtonType_URL;
+ aTmp.setValue( &eButtonType, ::getCppuType((const form::FormButtonType*)0));
+ xPropSet->setPropertyValue( C2U("ButtonType"), aTmp );
+ }
+
+ if (rSh.IsObjSelected())
+ {
+// rSh.ChgAnchor(FLY_AT_CNTNT);
+ rSh.UnSelectFrm();
+ }
+ }
+ rSh.EndUndo( UIUNDO_INSERT_URLBTN );
+ rSh.EndAction();
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.36 2000/09/18 16:06:05 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.35 2000/05/16 09:15:14 os
+ project usr removed
+
+ Revision 1.34 2000/04/18 14:58:24 os
+ UNICODE
+
+ Revision 1.33 2000/03/23 07:49:14 os
+ UNO III
+
+ Revision 1.32 2000/02/11 14:57:44 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.31 1999/11/19 16:40:24 os
+ modules renamed
+
+ Revision 1.30 1999/01/26 13:48:26 OS
+ #56371# TF_ONE51
+
+
+ Rev 1.29 26 Jan 1999 14:48:26 OS
+ #56371# TF_ONE51
+
+ Rev 1.28 21 Jan 1999 23:59:00 JP
+ Bug #61062#: InsertURL mit eigener UndoId
+
+ Rev 1.27 07 Jul 1998 14:03:54 OM
+ #51853# util::URL-Button wiederbelebt
+
+ Rev 1.26 06 Jul 1998 14:18:46 OM
+ #51853# util::URL-Button einfuegen
+
+ Rev 1.25 09 Jun 1998 15:35:58 OM
+ VC-Controls entfernt
+
+ Rev 1.24 29 Nov 1997 15:52:54 MA
+ includes
+
+ Rev 1.23 24 Nov 1997 09:47:08 MA
+ includes
+
+ Rev 1.22 03 Nov 1997 13:55:46 MA
+ precomp entfernt
+
+ Rev 1.21 05 Sep 1997 12:08:16 MH
+ chg: header
+
+ Rev 1.20 29 Jul 1997 16:00:16 TJ
+ include VCURLButton
+
+ Rev 1.19 04 Apr 1997 16:41:46 HJS
+ includes
+
+ Rev 1.18 08 Nov 1996 11:59:22 HJS
+ include w.g. positivdefine
+
+ Rev 1.17 28 Aug 1996 15:55:04 OS
+ includes
+
+ Rev 1.16 15 Aug 1996 13:44:24 JP
+ svdraw.hxx entfernt
+
+ Rev 1.15 11 Jul 1996 12:15:44 OM
+ #29283# Buttons zeichengebunden einfuegen
+
+ Rev 1.14 26 Jun 1996 15:21:00 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.13 25 Jun 1996 22:07:12 JP
+ SmartRelToAbs: Flag fuer CutMark hat jetzt inverse Bedeutung
+
+ Rev 1.12 18 Jun 1996 12:29:36 JP
+ SmartRelToAbs: text::Bookmark soll beibehalten werden
+
+ Rev 1.11 13 Jun 1996 15:55:36 MA
+ splitt si.hxx
+
+ Rev 1.10 12 Jun 1996 15:09:18 OM
+ Target am util::URL-Button setzen
+
+ Rev 1.9 12 Jun 1996 14:56:48 OM
+ Target aus Hyperlinkleiste uebernehmen
+
+ Rev 1.8 31 May 1996 11:17:14 NF
+ CLOOKS
+
+ Rev 1.7 11 Apr 1996 17:22:40 JP
+ Umstellung - RelToAbs/AbsToRel
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/shells/textfld.cxx b/sw/source/ui/shells/textfld.cxx
new file mode 100644
index 000000000000..06e8e8cce811
--- /dev/null
+++ b/sw/source/ui/shells/textfld.cxx
@@ -0,0 +1,1175 @@
+/*************************************************************************
+ *
+ * $RCSfile: textfld.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx" //_immer_ vor den solar-Items
+#include "uiparam.hxx"
+
+#ifndef _SVX_POSTATTR_HXX //autogen
+#include <svx/postattr.hxx>
+#endif
+#ifndef _SVX_HLNKITEM_HXX //autogen
+#include <svx/hlnkitem.hxx>
+#endif
+#ifndef _SVXLINKMGR_HXX
+#include <svx/linkmgr.hxx>
+#endif
+#ifndef _LINKDLG_HXX //autogen
+#include <so3/linkdlg.hxx>
+#endif
+#ifndef _SVX_POSTDLG_HXX //autogen
+#include <svx/postdlg.hxx>
+#endif
+#ifndef _SFXITEMPOOL_HXX //autogen
+#include <svtools/itempool.hxx>
+#endif
+#ifndef _SFXINIMGR_HXX //autogen
+#include <svtools/iniman.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SFX_INIMGR_HXX //autogen
+#include <sfx2/inimgr.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXMACITEM_HXX //autogen
+#include <svtools/macitem.hxx>
+#endif
+#ifndef _SVX_ADRITEM_HXX //autogen
+#include <svx/adritem.hxx>
+#endif
+#ifndef _LINKDLG_HXX //autogen
+#include <so3/linkdlg.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+
+
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _FLDWRAP_HXX //autogen
+#include <fldwrap.hxx>
+#endif
+#include "redline.hxx"
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "cmdid.h"
+#include "basesh.hxx"
+#include "wrtsh.hxx"
+#include "finder.hxx"
+#include "flddat.hxx"
+#include "javaedit.hxx"
+#include "numrule.hxx"
+#include "textsh.hxx"
+#include "docufld.hxx"
+#include "usrfld.hxx"
+#include "ddefld.hxx"
+#include "expfld.hxx"
+#include "fldmgr.hxx"
+#include "fldedt.hxx"
+//#include "addrdlg.hxx"
+#include "shells.hrc"
+
+
+extern BOOL bNoInterrupt; // in mainwn.cxx
+
+String& lcl_AppendRedlineStr( String& rStr, USHORT nRedlId )
+{
+ USHORT nResId = 0;
+ switch( nRedlId )
+ {
+ case REDLINE_INSERT: nResId = STR_REDLINE_INSERTED; break;
+ case REDLINE_DELETE: nResId = STR_REDLINE_DELETED; break;
+ case REDLINE_FORMAT: nResId = STR_REDLINE_FORMATED; break;
+ case REDLINE_TABLE: nResId = STR_REDLINE_TABLECHG; break;
+ case REDLINE_FMTCOLL: nResId = STR_REDLINE_FMTCOLLSET; break;
+ }
+ if( nResId )
+ rStr += SW_RESSTR( nResId );
+ return rStr;
+}
+
+// STATIC DATA -----------------------------------------------------------
+
+void SwTextShell::ExecField(SfxRequest &rReq)
+{
+ SwWrtShell& rSh = GetShell();
+ OfficeApplication* pOffApp = OFF_APP();
+ const SfxPoolItem* pItem = 0;
+
+ USHORT nSlot = rReq.GetSlot();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ if(pArgs)
+ pArgs->GetItemState(GetPool().GetWhich(nSlot), FALSE, &pItem);
+
+ Window *pMDI = &GetView().GetViewFrame()->GetWindow();
+ BOOL bMore = FALSE;
+ USHORT nInsertType = 0;
+ USHORT nInsertSubType = 0;
+ USHORT nInsertFormat = 0;
+
+ switch(nSlot)
+ {
+ case FN_EDIT_FIELD:
+ {
+ SwField* pFld = rSh.GetCurFld();
+ if( pFld )
+ {
+ switch ( pFld->GetTypeId() )
+ {
+ case TYP_DDEFLD:
+ {
+#if !defined(DDE_AVAILABLE)
+ return;
+#endif
+ SvBaseLinksDialog aDlg( pMDI,
+ &rSh.GetLinkManager() );
+ aDlg.SetActLink( ((SwDDEFieldType*)pFld->GetTyp())->
+ GetBaseLink() );
+ aDlg.Execute();
+ break;
+ }
+ default:
+ {
+ SwFldEditDlg *pDlg = new SwFldEditDlg(GetView());
+ // SetCareWin geht nicht, da Feld nicht selektiert wird
+ // rSh.SetCareWin(pDlg);
+ pDlg->Execute();
+ delete pDlg;
+ //rSh.SetCareWin(NULL);
+ }
+ }
+ }
+ break;
+ }
+ case FN_EXECUTE_MACROFIELD:
+ {
+ SwField* pFld = rSh.GetCurFld();
+ if(pFld && pFld->GetTyp()->Which() == RES_MACROFLD)
+ {
+
+ const String& rMacro = ((SwMacroField*)pFld)->GetMacro();
+ USHORT nPos = rMacro.Search('.', 0);
+ if(nPos != STRING_NOTFOUND)
+ {
+ SvxMacro aMacro( rMacro.Copy(nPos + 1), rMacro.Copy(0,nPos), STARBASIC );
+ rSh.ExecMacro(aMacro);
+ }
+ }
+ }
+ break;
+
+ case FN_GOTO_NEXT_INPUTFLD:
+ case FN_GOTO_PREV_INPUTFLD:
+ {
+ BOOL bRet = FALSE;
+ SwFieldType* pFld = rSh.GetFldType( 0, RES_INPUTFLD );
+ if( pFld && rSh.MoveFldType( pFld,
+ FN_GOTO_NEXT_INPUTFLD == nSlot ))
+ {
+ rSh.ClearMark();
+ rSh.StartInputFldDlg( rSh.GetCurFld(), FALSE );
+ bRet = TRUE;
+ }
+
+ rReq.SetReturnValue( SfxBoolItem( nSlot, bRet ));
+ }
+ break;
+
+ default:
+ bMore = TRUE;
+ }
+ if(bMore)
+ {
+ // hier kommen die Slots mit FldMgr
+ SwFldMgr aFldMgr(GetShellPtr());
+ switch(nSlot)
+ {
+ case FN_INSERT_FIELD_CTRL:
+ case FN_INSERT_FIELD:
+ {
+ BOOL bRes = FALSE;
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ pVFrame->ToggleChildWindow(FN_INSERT_FIELD);
+ bRes = pVFrame->GetChildWindow( nSlot ) != 0;
+ Invalidate(rReq.GetSlot());
+ Invalidate(FN_INSERT_FIELD_CTRL);
+ rReq.SetReturnValue(SfxBoolItem( nSlot, bRes ));
+ }
+ break;
+
+ case FN_INSERT_REF_FIELD:
+ {
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ if (!pVFrame->HasChildWindow(FN_INSERT_FIELD))
+ pVFrame->ToggleChildWindow(FN_INSERT_FIELD); // Dialog anzeigen
+
+ // Flddlg auf neue TabPage umschalten
+ USHORT nId = SwFldDlgWrapper::GetChildWindowId();
+ SwFldDlgWrapper *pWrp = (SwFldDlgWrapper*)pVFrame->GetChildWindow(nId);
+ if (pWrp)
+ pWrp->ShowPage();
+ }
+ break;
+
+
+ case FN_POSTIT:
+ {
+ pPostItFldMgr = new SwFldMgr;
+ SwPostItField* pPostIt = (SwPostItField*)pPostItFldMgr->GetCurFld();
+ BOOL bNew = !(pPostIt && pPostIt->GetTyp()->Which() == RES_POSTITFLD);
+ BOOL bTravel = FALSE;
+ BOOL bNext, bPrev;
+
+ SfxItemSet aSet(GetPool(), SvxPostItDialog::GetRanges());
+
+ if(!bNew)
+ {
+ aSet.Put(SvxPostItTextItem(pPostIt->GetPar2().ConvertLineEnd(), SID_ATTR_POSTIT_TEXT));
+ aSet.Put(SvxPostItAuthorItem(pPostIt->GetPar1(), SID_ATTR_POSTIT_AUTHOR));
+ aSet.Put(SvxPostItDateItem(
+ Application::GetAppInternational().
+ GetDate(pPostIt->GetDate()),
+ SID_ATTR_POSTIT_DATE));
+
+ // Traveling nur bei mehr als einem Feld
+ rSh.StartAction();
+
+ bNext = pPostItFldMgr->GoNext();
+ if( bNext )
+ pPostItFldMgr->GoPrev();
+
+ if( 0 != ( bPrev = pPostItFldMgr->GoPrev() ) )
+ pPostItFldMgr->GoNext();
+ bTravel |= bNext|bPrev;
+
+ rSh.EndAction();
+ }
+ else
+ {
+ SvxAddressItem aAdr( pPathFinder->GetAddress() );
+ aSet.Put(SvxPostItTextItem(aEmptyStr, SID_ATTR_POSTIT_TEXT));
+ aSet.Put(SvxPostItAuthorItem(aAdr.GetShortName(), SID_ATTR_POSTIT_AUTHOR));
+ aSet.Put(SvxPostItDateItem(
+ Application::GetAppInternational().
+ GetDate(Date()), SID_ATTR_POSTIT_DATE));
+ }
+
+ SvxPostItDialog *pDlg = new SvxPostItDialog( pMDI, aSet, bTravel);
+ pDlg->SetReadonlyPostIt(rSh.IsReadOnlyAvailable() && rSh.HasReadonlySel());
+
+ if (bTravel)
+ {
+ pDlg->EnableTravel(bNext, bPrev);
+ pDlg->SetPrevHdl(LINK(this, SwTextShell, PostItPrevHdl));
+ pDlg->SetNextHdl(LINK(this, SwTextShell, PostItNextHdl));
+ }
+
+ if (bNew)
+ pDlg->SetText(SW_RESSTR(STR_NOTIZ_INSERT));
+
+ bNoInterrupt = TRUE;
+ if ( pDlg->Execute() == RET_OK )
+ {
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+ String sMsg(((const SvxPostItTextItem&)pOutSet->Get(SID_ATTR_POSTIT_TEXT)).GetValue());
+ String sAuthor(((const SvxPostItAuthorItem&)pOutSet->Get(SID_ATTR_POSTIT_AUTHOR)).GetValue());
+
+ if(bNew)
+ // neues PostIt anlegen
+ pPostItFldMgr->InsertFld(TYP_POSTITFLD, 0, sAuthor, sMsg, 0);
+ else
+ // altes PostIt updaten
+ pPostItFldMgr->UpdateCurFld(0, sAuthor, sMsg);
+ }
+
+ delete pDlg;
+ delete pPostItFldMgr;
+ bNoInterrupt = FALSE;
+ GetView().AttrChangedNotify(GetShellPtr());
+ }
+ break;
+
+ case FN_REDLINE_COMMENT:
+ {
+ BOOL bNew = TRUE;
+ String sComment;
+ const SwRedline *pRedline = rSh.GetCurrRedline();
+
+ if (pRedline)
+ {
+ sComment = pRedline->GetComment();
+
+
+ BOOL bTravel = FALSE;
+
+ SfxItemSet aSet(GetPool(), SvxPostItDialog::GetRanges());
+ const International& rIntl = Application::GetAppInternational();
+
+ aSet.Put(SvxPostItTextItem(sComment.ConvertLineEnd(), SID_ATTR_POSTIT_TEXT));
+ aSet.Put(SvxPostItAuthorItem(pRedline->GetAuthorString(), SID_ATTR_POSTIT_AUTHOR));
+
+ const DateTime &rDT = pRedline->GetRedlineData().GetTimeStamp();
+
+ String sDate(rIntl.GetDate( rDT ));
+ (sDate += ' ' ) += rIntl.GetTime( rDT, FALSE, FALSE );
+
+ aSet.Put(SvxPostItDateItem(sDate, SID_ATTR_POSTIT_DATE));
+
+ // Traveling nur bei mehr als einem Feld
+ rSh.StartAction();
+
+ rSh.Push();
+ const SwRedline *pActRed = rSh.SelPrevRedline();
+
+ if (pActRed == pRedline)
+ { // Neuer Cursor steht am Anfang des Current Redlines
+ rSh.Pop(); // Alten Cursor wegwerfen
+ rSh.Push();
+ pActRed = rSh.SelPrevRedline();
+ }
+
+ BOOL bPrev = pActRed != 0;
+ rSh.Pop(FALSE);
+ rSh.EndAction();
+
+ rSh.ClearMark();
+ rSh.SelNextRedline(); // Aktueller Redline wird selektiert
+
+ rSh.StartAction();
+ rSh.Push();
+ pActRed = rSh.SelNextRedline();
+ BOOL bNext = pActRed != 0;
+ rSh.Pop(FALSE); // Cursorpos restaurieren
+
+ if( rSh.IsCrsrPtAtEnd() )
+ rSh.SwapPam();
+
+ rSh.EndAction();
+
+ bTravel |= bNext|bPrev;
+
+ SvxPostItDialog *pDlg = new SvxPostItDialog( pMDI, aSet, bTravel, TRUE);
+ pDlg->HideAuthor();
+
+ String sTitle(SW_RES(STR_REDLINE_COMMENT));
+ ::lcl_AppendRedlineStr( sTitle, pRedline->GetType() );
+
+ pDlg->SetText(sTitle);
+
+ if (bTravel)
+ {
+ pDlg->EnableTravel(bNext, bPrev);
+ pDlg->SetPrevHdl(LINK(this, SwTextShell, RedlinePrevHdl));
+ pDlg->SetNextHdl(LINK(this, SwTextShell, RedlineNextHdl));
+ }
+
+ rSh.SetCareWin(pDlg);
+ bNoInterrupt = TRUE;
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+ String sMsg(((const SvxPostItTextItem&)pOutSet->Get(SID_ATTR_POSTIT_TEXT)).GetValue());
+
+ // Kommentar einfuegen bzw aendern
+ rSh.SetRedlineComment(sMsg);
+ }
+
+ delete pDlg;
+ rSh.SetCareWin(NULL);
+ bNoInterrupt = FALSE;
+ rSh.ClearMark();
+ GetView().AttrChangedNotify(GetShellPtr());
+ }
+ }
+ break;
+
+ case FN_JAVAEDIT:
+ {
+ SwJavaEditDialog *pDlg = new SwJavaEditDialog( pMDI, &rSh);
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+
+ case FN_INSERT_FLD_DATE :
+ nInsertType = TYP_DATEFLD;
+ goto FIELD_INSERT;
+ case FN_INSERT_FLD_TIME :
+ nInsertType = TYP_TIMEFLD;
+ goto FIELD_INSERT;
+ case FN_INSERT_FLD_PGNUMBER:
+ nInsertType = TYP_PAGENUMBERFLD;
+ nInsertFormat = SVX_NUM_PAGEDESC; // wie Seitenvorlage
+ goto FIELD_INSERT;
+ case FN_INSERT_FLD_PGCOUNT :
+ nInsertType = TYP_DOCSTATFLD;
+ nInsertSubType = 0;
+ nInsertFormat = SVX_NUM_PAGEDESC;
+ goto FIELD_INSERT;
+ case FN_INSERT_FLD_TOPIC :
+ nInsertType = TYP_DOCINFOFLD;
+ nInsertSubType = DI_THEMA;
+ goto FIELD_INSERT;
+ case FN_INSERT_FLD_TITLE :
+ nInsertType = TYP_DOCINFOFLD;
+ nInsertSubType = DI_TITEL;
+ goto FIELD_INSERT;
+ case FN_INSERT_FLD_AUTHOR :
+ nInsertType = TYP_AUTHORFLD;
+
+FIELD_INSERT:
+ aFldMgr.InsertFld(nInsertType, nInsertSubType,
+ aEmptyStr, aEmptyStr, nInsertFormat);
+ break;
+ default:
+ ASSERT(FALSE, falscher Dispatcher);
+ return;
+ }
+ }
+}
+
+
+void SwTextShell::StateField( SfxItemSet &rSet )
+{
+ SwWrtShell& rSh = GetShell();
+ SfxWhichIter aIter( rSet );
+ const SwField* pField = 0;
+ int bGetField = FALSE;
+ USHORT nWhich = aIter.FirstWhich();
+
+ while (nWhich)
+ {
+ switch (nWhich)
+ {
+ case FN_EDIT_FIELD:
+ {
+ if( rSh.HasSelection() )
+ rSet.DisableItem(nWhich);
+ else
+ {
+ if( !bGetField )
+ {
+ pField = rSh.GetCurFld();
+ bGetField = TRUE;
+ }
+
+ USHORT nTempWhich = pField ? pField->GetTyp()->Which() : USHRT_MAX;
+ if( USHRT_MAX == nTempWhich ||
+ RES_POSTITFLD == nTempWhich ||
+ RES_SCRIPTFLD == nTempWhich ||
+ RES_AUTHORITY == nTempWhich )
+ rSet.DisableItem( nWhich );
+ }
+ }
+ break;
+ case FN_EXECUTE_MACROFIELD:
+ {
+ if(!bGetField)
+ {
+ pField = rSh.GetCurFld();
+ bGetField = TRUE;
+ }
+ if(!pField || pField->GetTyp()->Which() != RES_MACROFLD)
+ rSet.DisableItem(nWhich);
+ }
+ break;
+
+ case FN_INSERT_FIELD:
+ {
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ if (pVFrame->KnowsChildWindow(FN_INSERT_FIELD))
+ rSet.Put(SfxBoolItem( FN_INSERT_FIELD, pVFrame->HasChildWindow(nWhich)));
+ else
+ rSet.DisableItem(FN_INSERT_FIELD);
+ }
+ break;
+ case FN_INSERT_REF_FIELD:
+ {
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ if (!pVFrame->KnowsChildWindow(FN_INSERT_FIELD))
+ rSet.DisableItem(FN_INSERT_REF_FIELD);
+ }
+ break;
+ case FN_INSERT_FIELD_CTRL:
+ rSet.Put(SfxBoolItem( nWhich, GetView().GetViewFrame()->HasChildWindow(FN_INSERT_FIELD)));
+ break;
+ case FN_REDLINE_COMMENT:
+ if (!rSh.GetCurrRedline())
+ rSet.DisableItem(nWhich);
+ break;
+ case FN_POSTIT :
+ case FN_JAVAEDIT :
+ BOOL bCurField = FALSE;
+ SwField* pField = rSh.GetCurFld();
+ if(nWhich == FN_POSTIT)
+ bCurField = pField && pField->GetTyp()->Which() == RES_POSTITFLD;
+ else
+ bCurField = pField && pField->GetTyp()->Which() == RES_SCRIPTFLD;
+
+ if(!bCurField && rSh.IsReadOnlyAvailable() && rSh.HasReadonlySel() )
+ rSet.DisableItem(nWhich);
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*---------------------------------------------------------------------------
+ Beschreibung:
+ ----------------------------------------------------------------------------*/
+
+
+void SwTextShell::InsertHyperlink(const SvxHyperlinkItem& rHlnkItem)
+{
+ const String& rName = rHlnkItem.GetName();
+ const String& rURL = rHlnkItem.GetURL();
+ const String& rTarget = rHlnkItem.GetTargetFrame();
+ USHORT nType = (USHORT)rHlnkItem.GetInsertMode();
+ const SvxMacroTableDtor* pMacroTbl = rHlnkItem.GetMacroTbl();
+
+ SwWrtShell& rSh = GetShell();
+
+ if( rSh.GetSelectionType() & SwWrtShell::SEL_TXT )
+ {
+ switch (nType)
+ {
+ case HLINK_DEFAULT:
+ case HLINK_FIELD:
+ {
+ rSh.StartAction();
+ BOOL bSel = rSh.HasSelection();
+ SfxItemSet aSet(GetPool(), RES_TXTATR_INETFMT, RES_TXTATR_INETFMT);
+ rSh.GetAttr( aSet );
+
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == aSet.GetItemState(RES_TXTATR_INETFMT, FALSE, &pItem))
+ {
+ const SwFmtINetFmt* pINetFmt = (const SwFmtINetFmt*)pItem;
+
+ // Links selektieren
+ rSh.SwCrsrShell::SelectTxtAttr(RES_TXTATR_INETFMT);
+ }
+ SwFmtINetFmt aINetFmt( rURL, rTarget );
+ aINetFmt.SetName(rHlnkItem.GetIntName());
+ if(pMacroTbl)
+ {
+ SvxMacro *pMacro = pMacroTbl->Get( SFX_EVENT_MOUSEOVER_OBJECT );
+ if( pMacro )
+ aINetFmt.SetMacro(SFX_EVENT_MOUSEOVER_OBJECT, *pMacro);
+ pMacro = pMacroTbl->Get( SFX_EVENT_MOUSECLICK_OBJECT );
+ if( pMacro )
+ aINetFmt.SetMacro(SFX_EVENT_MOUSECLICK_OBJECT, *pMacro);
+ pMacro = pMacroTbl->Get( SFX_EVENT_MOUSEOUT_OBJECT );
+ if( pMacro )
+ aINetFmt.SetMacro(SFX_EVENT_MOUSEOUT_OBJECT, *pMacro);
+ }
+ rSh.InsertURL( aINetFmt, rName, TRUE );
+ rSh.EndAction();
+ }
+ break;
+
+ case HLINK_BUTTON:
+ InsertURLButton( rURL, rTarget, rName );
+ rSh.EnterStdMode();
+ break;
+ }
+ }
+}
+
+/*---------------------------------------------------------------------------
+ Beschreibung:
+ ----------------------------------------------------------------------------*/
+
+
+void SwTextShell::InsertDBFld(const String& sFldName)
+{
+ SwFldMgr aFldMgr(GetShellPtr());
+
+ aFldMgr.InsertFld(TYP_DBFLD, 0, sFldName, aEmptyStr, 0, FALSE, TRUE);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Traveling zwishen PostIts
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwTextShell, PostItNextHdl, Button *, pBtn )
+{
+ SvxPostItDialog *pDlg = (SvxPostItDialog*)pBtn;
+
+ if( pDlg->IsOkEnabled() )
+ pPostItFldMgr->UpdateCurFld( 0,
+ SFX_INIMANAGER()->Get(SFX_KEY_USER_ID),
+ pDlg->GetNote() );
+ pPostItFldMgr->GoNext();
+ SwPostItField* pPostIt = (SwPostItField*)pPostItFldMgr->GetCurFld();
+ pDlg->SetNote(pPostIt->GetPar2().ConvertLineEnd());
+ pDlg->ShowLastAuthor(pPostIt->GetPar1(), Application::GetAppInternational().GetDate(pPostIt->GetDate()));
+
+ // Traveling nur bei mehr als einem Feld
+ SwWrtShell* pSh = GetShellPtr();
+ pDlg->SetReadonlyPostIt(pSh->IsReadOnlyAvailable() && pSh->HasReadonlySel());
+ pSh->StartAction();
+
+ BOOL bEnable = FALSE;
+ if( pPostItFldMgr->GoNext() )
+ {
+ bEnable = TRUE;
+ pPostItFldMgr->GoPrev();
+ }
+ pDlg->EnableTravel(bEnable, TRUE);
+
+ pSh->EndAction();
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwTextShell, PostItPrevHdl, Button *, pBtn )
+{
+ SvxPostItDialog *pDlg = (SvxPostItDialog*)pBtn;
+
+ if( pDlg->IsOkEnabled() )
+ pPostItFldMgr->UpdateCurFld( 0,
+ SFX_INIMANAGER()->Get(SFX_KEY_USER_ID),
+ pDlg->GetNote() );
+ pPostItFldMgr->GoPrev();
+ SwPostItField* pPostIt = (SwPostItField*)pPostItFldMgr->GetCurFld();
+ pDlg->SetNote(pPostIt->GetPar2().ConvertLineEnd());
+ pDlg->ShowLastAuthor(pPostIt->GetPar1(), Application::GetAppInternational().GetDate(pPostIt->GetDate()));
+
+ // Traveling nur bei mehr als einem Feld
+ SwWrtShell* pSh = GetShellPtr();
+ pDlg->SetReadonlyPostIt(pSh->IsReadOnlyAvailable() && pSh->HasReadonlySel());
+ pSh->StartAction();
+
+ BOOL bEnable = FALSE;
+ if( pPostItFldMgr->GoPrev() )
+ {
+ bEnable = TRUE;
+ pPostItFldMgr->GoNext();
+ }
+ pDlg->EnableTravel(TRUE, bEnable);
+
+ pSh->EndAction();
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Traveling zwischen Redlines
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwTextShell, RedlineNextHdl, Button *, pBtn )
+{
+ SwWrtShell* pSh = GetShellPtr();
+ SvxPostItDialog *pDlg = (SvxPostItDialog*)pBtn;
+
+ // Kommentar einfuegen bzw aendern
+ pSh->SetRedlineComment(pDlg->GetNote());
+
+ const SwRedline *pRedline = pSh->GetCurrRedline();
+
+ BOOL bNew = TRUE;
+ String sComment;
+
+ if (pRedline)
+ {
+ // Traveling nur bei mehr als einem Feld
+ if( !pSh->IsCrsrPtAtEnd() )
+ pSh->SwapPam(); // Cursor hinter den Redline stellen
+
+ pSh->Push();
+ const SwRedline *pActRed = pSh->SelNextRedline();
+ pSh->Pop(pActRed != 0);
+
+ BOOL bEnable = FALSE;
+
+ if (pActRed)
+ {
+ pSh->StartAction();
+ pSh->Push();
+ bEnable = pSh->SelNextRedline() != 0;
+ pSh->Pop(FALSE);
+ pSh->EndAction();
+ }
+
+ pDlg->EnableTravel(bEnable, TRUE);
+
+ if( pSh->IsCrsrPtAtEnd() )
+ pSh->SwapPam();
+
+ pRedline = pSh->GetCurrRedline();
+ sComment = pRedline->GetComment();
+
+ const International& rIntl = Application::GetAppInternational();
+
+ const DateTime &rDT = pRedline->GetRedlineData().GetTimeStamp();
+
+ String sDate(rIntl.GetDate( rDT ));
+ (sDate += ' ' ) += rIntl.GetTime( rDT, FALSE, FALSE );
+
+ pDlg->SetNote(sComment.ConvertLineEnd());
+ pDlg->ShowLastAuthor(pRedline->GetAuthorString(), sDate);
+
+ String sTitle(SW_RES(STR_REDLINE_COMMENT));
+ ::lcl_AppendRedlineStr( sTitle, pRedline->GetType() );
+
+ pDlg->SetText(sTitle);
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwTextShell, RedlinePrevHdl, Button *, pBtn )
+{
+ SwWrtShell* pSh = GetShellPtr();
+ SvxPostItDialog *pDlg = (SvxPostItDialog*)pBtn;
+
+ // Kommentar einfuegen bzw aendern
+ pSh->SetRedlineComment(pDlg->GetNote());
+
+ const SwRedline *pRedline = pSh->GetCurrRedline();
+
+ BOOL bNew = TRUE;
+ String sComment;
+
+ if (pRedline)
+ {
+ // Traveling nur bei mehr als einem Feld
+ pSh->Push();
+ const SwRedline *pActRed = pSh->SelPrevRedline();
+ pSh->Pop(pActRed != 0);
+
+ BOOL bEnable = FALSE;
+
+ if (pActRed)
+ {
+ pSh->StartAction();
+ pSh->Push();
+ bEnable = pSh->SelPrevRedline() != 0;
+ pSh->Pop(FALSE);
+ pSh->EndAction();
+ }
+
+ pDlg->EnableTravel(TRUE, bEnable);
+
+ pRedline = pSh->GetCurrRedline();
+ sComment = pRedline->GetComment();
+
+ const International& rIntl = Application::GetAppInternational();
+
+ const DateTime &rDT = pRedline->GetRedlineData().GetTimeStamp();
+
+ String sDate(rIntl.GetDate( rDT ));
+ (sDate += ' ' ) += rIntl.GetTime( rDT, FALSE, FALSE );
+
+ pDlg->SetNote(sComment.ConvertLineEnd());
+ pDlg->ShowLastAuthor(pRedline->GetAuthorString(), sDate);
+
+ String sTitle(SW_RES(STR_REDLINE_COMMENT));
+ ::lcl_AppendRedlineStr( sTitle, pRedline->GetType() );
+
+ pDlg->SetText(sTitle);
+ }
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.117 2000/09/18 16:06:05 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.116 2000/09/08 08:12:52 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.115 2000/06/30 08:52:04 os
+ #76541# string assertions removed
+
+ Revision 1.114 2000/05/26 07:21:33 os
+ old SW Basic API Slots removed
+
+ Revision 1.113 2000/04/18 14:58:24 os
+ UNICODE
+
+ Revision 1.112 2000/04/11 11:32:34 os
+ #74939# select inserted URLs
+
+ Revision 1.111 2000/02/25 09:26:37 hr
+ #73447#: removed temporary
+
+ Revision 1.110 2000/02/11 14:58:18 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.109 2000/01/20 10:59:55 os
+ #72115# set name of inserted hyperlink
+
+ Revision 1.108 2000/01/18 12:10:40 pw
+ #71932# Use SFX_EVENT_-constants to get a macro from a macrotable
+
+ Revision 1.107 1999/10/27 06:37:49 os
+ HyperLink dialog interface, events
+
+ Revision 1.106 1999/10/20 16:33:19 jp
+ Bug #69239#: return correct state of FN_EDIT_FIELD
+
+ Revision 1.105 1999/09/24 14:38:32 os
+ hlnkitem.hxx now in SVX
+
+ Revision 1.104 1999/09/15 14:15:43 os
+ AuthorityField(-Type), RES_AUTHORITY
+
+ Revision 1.103 1999/07/16 14:04:08 JP
+ Bug #67677#: PostIdNext-/-PrevHdl - if OkButton is enabled the field can changed
+
+
+ Rev 1.102 16 Jul 1999 16:04:08 JP
+ Bug #67677#: PostIdNext-/-PrevHdl - if OkButton is enabled the field can changed
+
+ Rev 1.101 10 Jun 1999 13:16:36 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.100 10 May 1999 13:50:12 OS
+ #64780# Notizen in gesch. Bereichen
+
+ Rev 1.99 19 Apr 1999 13:42:20 OS
+ #63005# Notizen und Scripts in gesch. Bereichen
+
+ Rev 1.98 17 Nov 1998 10:58:32 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.97 21 Oct 1998 16:19:32 OM
+ #58157# Querverweise einfuegen
+
+ Rev 1.96 09 Oct 1998 17:06:04 JP
+ Bug #57741#: neue ResourceIds, optimiert
+
+ Rev 1.95 17 Jul 1998 17:26:14 OM
+ #52865# Neue HelpIDs fuer Redline-bearbeiten Dlg
+
+ Rev 1.94 14 Jul 1998 14:19:10 OM
+ #52859# Autor-Button nicht anzeigen
+
+ Rev 1.93 09 Jul 1998 09:53:22 JP
+ EmptyStr benutzen
+
+ Rev 1.92 13 Jun 1998 16:08:48 OS
+ FN_INSERT_FIELD_CONTROL ruft auch Feldbefehl-Dialog
+
+ Rev 1.91 19 May 1998 12:45:50 OM
+ SvxMacro-Umstellung
+
+ Rev 1.90 24 Mar 1998 13:43:34 JP
+ neu: Redline fuer harte Attributierung
+
+ Rev 1.89 18 Mar 1998 18:20:10 OM
+ Redlines schneller selektieren
+
+ Rev 1.88 18 Mar 1998 18:06:26 OM
+ Redlines schneller selektieren
+
+ Rev 1.87 28 Feb 1998 15:13:54 OM
+ Accept / reject changes
+
+ Rev 1.86 26 Feb 1998 11:10:02 OM
+ Redlining-Travelling anzeigen
+
+ Rev 1.85 25 Feb 1998 16:49:46 OM
+ Fixe Author- und ExtUser-Felder
+
+ Rev 1.84 12 Feb 1998 13:22:48 OM
+ Traveling zwischen Redline-Objekten
+
+ Rev 1.83 10 Feb 1998 17:08:58 OM
+ Redlining kommentieren
+
+ Rev 1.82 27 Jan 1998 22:42:18 JP
+ GetNumDepend durch GetDepends ersetzt
+
+ Rev 1.81 23 Jan 1998 16:07:14 MA
+ includes
+
+ Rev 1.80 13 Jan 1998 16:57:54 OM
+ #46549# Notiz einfuegen
+
+ Rev 1.79 12 Jan 1998 17:09:32 OM
+ Zu TYP_SETREFFLD per Basic springen
+
+ Rev 1.78 19 Dec 1997 18:25:34 OM
+ Feldbefehl-bearbeiten Dlg
+
+ Rev 1.77 10 Dec 1997 10:08:28 OM
+ Alten Feldbefehl-Dlg entfernt
+
+ Rev 1.76 05 Dec 1997 13:16:56 OM
+ #45750# DDE-Field Delimiter fuer Basic wandeln
+
+ Rev 1.75 04 Dec 1997 08:31:50 OS
+ NextFieldByType: SubType fuer SETFLD nicht setzen #45912#
+
+ Rev 1.74 29 Nov 1997 15:52:12 MA
+ includes
+
+ Rev 1.73 24 Nov 1997 09:47:08 MA
+ includes
+
+ Rev 1.72 10 Nov 1997 15:40:04 OS
+ MoveFldType mit SubType #45425#
+
+ Rev 1.71 03 Nov 1997 13:55:48 MA
+ precomp entfernt
+
+ Rev 1.70 28 Oct 1997 15:07:16 OM
+ Neuer Feldbefehl-Dialog angefangen
+
+ Rev 1.69 20 Oct 1997 15:41:24 OS
+ GotoNext/PrevInputField: Selektion aufheben #44846#
+
+ Rev 1.68 24 Sep 1997 15:20:30 OM
+ Feldumstellung
+
+ Rev 1.67 03 Sep 1997 16:02:10 OS
+ include
+
+ Rev 1.66 01 Sep 1997 13:23:58 OS
+ DLL-Umstellung
+
+ Rev 1.65 15 Aug 1997 11:48:38 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.64 08 Aug 1997 17:28:48 OM
+ Headerfile-Umstellung
+
+ Rev 1.63 12 Jul 1997 12:11:02 OS
+ FN_JAVAEDIT: Parameter fuer URL und ScriptType nachgetragen
+
+ Rev 1.62 10 Jul 1997 16:07:22 OM
+ Aufgeraeumt
+
+ Rev 1.61 26 Jun 1997 09:43:40 OM
+ Basic: Datenbank in Feldbefehlen ersetzen
+
+ Rev 1.60 25 Jun 1997 15:42:26 OS
+ CurField(Sub)Type: DATE und TIME mappen #40967#
+
+ Rev 1.59 21 Jun 1997 14:52:24 OS
+ neu: FieldPrompt
+
+ Rev 1.58 20 Jun 1997 15:17:38 OS
+ GetShell()s reduziert
+
+ Rev 1.57 18 Jun 1997 18:09:38 OM
+ Adressfeld: Focus je nach Typ im Dialog setzen
+
+ Rev 1.56 12 Jun 1997 15:34:08 JP
+ Feld-Slots aus der TextShell in die BaseShell verschoben
+
+ Rev 1.55 09 Jun 1997 11:39:46 JP
+ fuer TYP_SETREFFLD gibt es keinen FeldTypen
+
+ Rev 1.54 04 Jun 1997 14:08:06 OM
+ #40431# Scriptfeld: Felbefehle bearbeiten disablen
+
+ Rev 1.53 27 May 1997 13:36:24 OS
+ neu: CurFieldType, CurFieldSubType
+
+ Rev 1.52 12 May 1997 16:09:26 OM
+ #39823# GPF bei blaettern zwischen Notizen behoben
+
+ Rev 1.51 23 Apr 1997 15:15:44 OS
+ FieldType anlegen
+
+ Rev 1.50 08 Apr 1997 10:52:22 OM
+ Fehlende Includes
+
+ Rev 1.49 07 Apr 1997 16:45:24 OM
+ HyperlinkItem recorden
+
+ Rev 1.48 18 Mar 1997 15:31:16 OM
+ Segmentiert
+
+ Rev 1.47 18 Mar 1997 15:30:56 OM
+ Datenbanktrenner wandeln
+
+ Rev 1.46 23 Feb 1997 15:05:20 OS
+ SetUserFieldValue liefert BOOL
+
+ Rev 1.45 21 Feb 1997 16:08:38 OM
+ Eingefuegten Hyperlink aufzeichnen
+
+ Rev 1.44 13 Feb 1997 17:38:22 OM
+ Script-Dlg
+
+ Rev 1.43 11 Feb 1997 16:52:24 OM
+ Eingabefeld ueber Basic ohne Dialog einfuegen
+
+ Rev 1.42 05 Feb 1997 12:39:32 OM
+ Feldbefehl Seitennummer auf Standardvorlage defaulten
+
+ Rev 1.41 09 Dec 1996 14:43:16 OM
+ SwPostItDlg durch SvxPostItDlg ersetzt
+
+ Rev 1.40 06 Nov 1996 07:10:16 OS
+ FN_GET_FIELD_VALUE optimiert
+
+ Rev 1.39 01 Oct 1996 16:54:02 OM
+ Hyperlinks editieren
+
+ Rev 1.38 26 Sep 1996 14:40:28 OM
+ Datenbankfelder ueber Basic einfuegen
+
+ Rev 1.37 24 Sep 1996 16:42:32 OS
+ neue Slots fuer FieldTypes
+
+ Rev 1.36 24 Sep 1996 13:49:58 OM
+ Neuer Datenbanktrenner
+
+ Rev 1.35 20 Sep 1996 12:01:42 OS
+ Formate fuer Seitennummer/Seitenzahl-Felder korrigiert
+
+ Rev 1.34 19 Sep 1996 16:08:34 OS
+ neue Slots zum direkten Feldeinfuegen
+
+ Rev 1.33 19 Sep 1996 10:58:56 OM
+ neue Parameter fuer GetDatabaseFieldValue
+
+ Rev 1.32 02 Sep 1996 18:43:08 JP
+ INetFeld entfernt
+
+ Rev 1.31 30 Aug 1996 12:41:24 OS
+ InputFldDlg mit Next-Button
+
+ Rev 1.30 28 Aug 1996 15:54:56 OS
+ includes
+
+ Rev 1.29 23 Aug 1996 14:49:20 OM
+ Neue Segs
+
+ Rev 1.28 23 Aug 1996 14:48:00 OM
+ Datenbank: Drag&Drop
+
+ Rev 1.27 21 Aug 1996 13:09:24 OS
+ FldMgr mit Shell anlegen -> richtige view benutzen
+
+ Rev 1.26 20 Aug 1996 17:23:00 JP
+ InsertURL: Shell wieder in StdMode schalten
+
+ Rev 1.25 20 Aug 1996 15:39:10 JP
+ InsertURL: statt FeldManager direkt an die Shell gehen
+
+ Rev 1.24 24 Jun 1996 18:29:14 HJS
+ includes
+
+ Rev 1.23 12 Jun 1996 15:16:30 OM
+ Optimiert
+
+ Rev 1.22 12 Jun 1996 14:56:50 OM
+ Target aus Hyperlinkleiste uebernehmen
+
+ Rev 1.21 04 Jun 1996 18:43:46 JP
+ neu: ab CursorPosition Next/Prev-InputField suchen und Dialog hochziehem
+
+ Rev 1.20 31 May 1996 15:27:08 OM
+ Ueberfluessigen Include entfernt
+
+ Rev 1.19 28 May 1996 15:23:38 OM
+ Neue Basic-Cmds fuer Datenbanken
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/shells/textglos.cxx b/sw/source/ui/shells/textglos.cxx
new file mode 100644
index 000000000000..e85c9efb4804
--- /dev/null
+++ b/sw/source/ui/shells/textglos.cxx
@@ -0,0 +1,209 @@
+/*************************************************************************
+ *
+ * $RCSfile: textglos.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+
+#include "errhdl.hxx"
+#include "view.hxx"
+#include "initui.hxx"
+#include "cmdid.h"
+#include "textsh.hxx"
+#include "initui.hxx"
+#include "glossary.hxx"
+#include "gloshdl.hxx"
+#include "glosdoc.hxx"
+#include "gloslst.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+void SwTextShell::ExecGlossary(SfxRequest &rReq)
+{
+ USHORT nSlot = rReq.GetSlot();
+ ::GetGlossaries()->UpdateGlosPath(!rReq.IsAPI() ||
+ FN_GLOSSARY_DLG == nSlot );
+ SwGlossaryHdl* pGlosHdl = GetView().GetGlosHdl();
+ // SwGlossaryList updaten?
+ BOOL bUpdateList = FALSE;
+
+ switch( nSlot )
+ {
+ case FN_GLOSSARY_DLG:
+ pGlosHdl->GlossaryDlg();
+ bUpdateList = TRUE;
+ break;
+ case FN_EXPAND_GLOSSARY:
+ {
+ BOOL bReturn;
+ bReturn = pGlosHdl->ExpandGlossary( TRUE );
+ rReq.SetReturnValue( SfxBoolItem( nSlot, bReturn ) );
+ }
+ break;
+ default:
+ ASSERT(FALSE, falscher Dispatcher);
+ return;
+ }
+ if(bUpdateList)
+ {
+ SwGlossaryList* pList = ::GetGlossaryList();
+ if(pList->IsActive())
+ pList->Update();
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.24 2000/09/18 16:06:06 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.23 2000/05/26 07:21:33 os
+ old SW Basic API Slots removed
+
+ Revision 1.22 2000/04/18 14:58:24 os
+ UNICODE
+
+ Revision 1.21 2000/02/10 10:37:03 os
+ #70359# titles added to AutoText groups
+
+ Revision 1.20 1997/11/24 08:47:08 MA
+ includes
+
+
+ Rev 1.19 24 Nov 1997 09:47:08 MA
+ includes
+
+ Rev 1.18 03 Nov 1997 13:55:46 MA
+ precomp entfernt
+
+ Rev 1.17 20 Aug 1997 15:24:28 OS
+ GetGlossaryGroupName: Pfad-Extension an Position Null nicht ausgeben #42968#
+
+ Rev 1.16 19 Aug 1997 10:39:04 OS
+ ExpandGlossary darf per API keine MessageBoxen erzeugen #42903#
+
+ Rev 1.15 07 Apr 1997 17:42:26 MH
+ chg: header
+
+ Rev 1.14 14 Mar 1997 14:38:18 OS
+ neu: CreateGlossaryGroup
+
+ Rev 1.13 27 Sep 1996 12:51:52 OS
+ Updates fuer die GlossaryList
+
+ Rev 1.12 21 Sep 1996 15:57:32 OS
+ InsertGlossary returnt BOOL
+
+ Rev 1.11 30 Aug 1996 12:41:02 OS
+ UpdateGlosPath kann Blockliste aktualisieren
+
+ Rev 1.10 28 Aug 1996 15:54:48 OS
+ includes
+
+ Rev 1.9 29 Jul 1996 12:12:18 OS
+ vor jeder Textblock-Operation den GlossaryPath updaten
+
+ Rev 1.8 17 Jul 1996 07:48:52 OS
+ neu: GetGlossaryShortName
+
+ Rev 1.7 22 May 1996 15:33:06 OS
+ InsertGlossary: akt. Gruppe auch am pGlosHdl setzen
+
+ Rev 1.6 30 Apr 1996 08:04:00 OS
+ auch im RenameGlossary darf die aktuelle Gruppe nicht am gloshdl eingestell werden, Bug#27350#
+
+ Rev 1.5 13 Mar 1996 16:25:48 OS
+ neu: RenameGlossary
+
+ Rev 1.4 10 Mar 1996 15:46:34 OS
+ neue Slots fuer Autotext: Gruppenanzahl und Elemente erfragen
+
+ Rev 1.3 17 Feb 1996 12:36:00 OS
+ neu: Textbausteine und -gruppen loeschen, Bug #25606#, NewGlossary legt jetzt auch Bereiche neu an, Bug #25576#
+
+ Rev 1.2 26 Jan 1996 11:00:16 OS
+ akt. Gruppe fuer Textbausteine nur am GlossaryDlg und nicht am GlossaryHdl setzen, Bug #24473#
+
+ Rev 1.1 30 Nov 1995 15:26:28 OS
+ +pragma
+
+ Rev 1.0 30 Nov 1995 12:37:28 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/shells/textidx.cxx b/sw/source/ui/shells/textidx.cxx
new file mode 100644
index 000000000000..ddbb82a1e0e0
--- /dev/null
+++ b/sw/source/ui/shells/textidx.cxx
@@ -0,0 +1,437 @@
+/*************************************************************************
+ *
+ * $RCSfile: textidx.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+#include <hintids.hxx>
+#include <uiparam.hxx>
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SVX_SIZEITEM_HXX //autogen
+#include <svx/sizeitem.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+
+#include "viewopt.hxx"
+#include "cmdid.h"
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "swundo.hxx" // fuer Undo-Ids
+#include "textsh.hxx"
+#include "idx.hxx"
+#include "idxmrk.hxx"
+#include "multmrk.hxx"
+#include "usridx.hxx"
+#include "cnttab.hxx"
+#include "toxmgr.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+void SwTextShell::ExecIdx(SfxRequest &rReq)
+{
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem = 0;
+ USHORT nSlot = rReq.GetSlot();
+ if(pArgs)
+ pArgs->GetItemState(nSlot, FALSE, &pItem );
+
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ Window *pMDI = &pVFrame->GetWindow();
+
+ switch( nSlot )
+ {
+ case FN_EDIT_AUTH_ENTRY_DLG :
+ {
+ SwAuthMarkModalDlg* pDlg = new SwAuthMarkModalDlg(pMDI, GetShell());
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+ case FN_INSERT_AUTH_ENTRY_DLG:
+ {
+ // no BASIC support
+ pVFrame->ToggleChildWindow(FN_INSERT_AUTH_ENTRY_DLG);
+
+ SwInsertAuthMarkWrapper *pAuthMrk = (SwInsertAuthMarkWrapper*)
+ pVFrame->GetChildWindow(FN_INSERT_AUTH_ENTRY_DLG);
+
+ Invalidate(rReq.GetSlot());
+ }
+ break;
+ case FN_INSERT_IDX_ENTRY_DLG:
+ {
+ pVFrame->ToggleChildWindow(FN_INSERT_IDX_ENTRY_DLG);
+ Invalidate(rReq.GetSlot());
+ }
+ break;
+ case FN_EDIT_IDX_ENTRY_DLG:
+ {
+ SwTOXMgr aMgr(GetShellPtr());
+ USHORT nRet = RET_OK;
+ if(aMgr.GetTOXMarkCount() > 1)
+ { // Mehrere Marken, welche solls denn sein ?
+ //
+ SwMultiTOXMarkDlg* pMultDlg = new SwMultiTOXMarkDlg(pMDI, aMgr);
+ nRet = pMultDlg->Execute();
+ delete pMultDlg;
+ }
+ if( nRet == RET_OK)
+ {
+ SwIndexMarkModalDlg* pDlg = new SwIndexMarkModalDlg(pMDI, GetShell());
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+ }
+ case FN_IDX_MARK_TO_IDX:
+ {
+ GetShell().GotoTOXMarkBase();
+ break;
+ }
+ case FN_INSERT_MULTI_TOX:
+ {
+ SfxItemSet aSet(GetPool(),
+ RES_COL, RES_COL,
+ RES_BACKGROUND, RES_BACKGROUND,
+ RES_FRM_SIZE, RES_FRM_SIZE,
+ SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
+ RES_LR_SPACE, RES_LR_SPACE,
+ FN_PARAM_TOX_TYPE, FN_PARAM_TOX_TYPE,
+ 0 );
+ SwWrtShell& rSh = GetShell();
+ SwRect aRect;
+ rSh.CalcBoundRect(aRect, FLY_IN_CNTNT);
+
+ long nWidth = aRect.Width();
+ aSet.Put(SwFmtFrmSize(ATT_VAR_SIZE, nWidth));
+ // Hoehe=Breite fuer konsistentere Vorschau (analog zu Bereich bearbeiten)
+ aSet.Put(SvxSizeItem(SID_ATTR_PAGE_SIZE, Size(nWidth, nWidth)));
+ const SwTOXBase* pCurTOX = rSh.GetCurTOX();
+ if(pCurTOX)
+ {
+ const SfxItemSet* pSet = pCurTOX->GetAttrSet();
+ if(pSet)
+ aSet.Put(*pSet);
+ }
+
+ SwMultiTOXTabDialog* pDlg = new SwMultiTOXTabDialog(pMDI, aSet, rSh, pCurTOX);
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+ case FN_REMOVE_CUR_TOX:
+ {
+ SwWrtShell& rSh = GetShell();
+ const SwTOXBase* pBase = rSh.GetCurTOX();
+ DBG_ASSERT(pBase, "no TOXBase to remove")
+ if( pBase )
+ rSh.DeleteTOX(*pBase, TRUE);
+ }
+ break;
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
+ }
+}
+
+
+void SwTextShell::GetIdxState(SfxItemSet &rSet)
+{
+ SwWrtShell& rSh = GetShell();
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ SwInsertIdxMarkWrapper *pIdxMrk = (SwInsertIdxMarkWrapper*)
+ pVFrame->GetChildWindow(FN_INSERT_IDX_ENTRY_DLG);
+
+ SfxChildWindow* pAuthMark = pVFrame->GetChildWindow(FN_INSERT_AUTH_ENTRY_DLG);
+
+ const BOOL bHtmlMode = 0 != ::GetHtmlMode( GetView().GetDocShell() );
+ const SwTOXBase* pBase = 0;
+ if( bHtmlMode || 0 != ( pBase = rSh.GetCurTOX()) )
+ {
+ USHORT nBase = 0;
+ if( pBase )
+ {
+ if(pBase->IsTOXBaseInReadonly())
+ {
+ rSet.DisableItem( FN_INSERT_MULTI_TOX );
+ }
+ }
+
+ rSet.DisableItem( FN_EDIT_IDX_ENTRY_DLG );
+ rSet.DisableItem( FN_EDIT_AUTH_ENTRY_DLG );
+
+ if(!pIdxMrk)
+ rSet.DisableItem( FN_INSERT_IDX_ENTRY_DLG );
+ else
+ rSet.Put(SfxBoolItem(FN_INSERT_IDX_ENTRY_DLG, TRUE));
+
+ if(!pAuthMark)
+ rSet.DisableItem( FN_INSERT_AUTH_ENTRY_DLG );
+ else
+ rSet.Put(SfxBoolItem(FN_INSERT_AUTH_ENTRY_DLG, TRUE));
+
+ }
+ else //if( SFX_ITEM_UNKNOWN != rSet.GetItemState( FN_EDIT_IDX_ENTRY_DLG ))
+ {
+
+ BOOL bEnableEdit = TRUE;
+ BOOL bInReadonly = rSh.HasReadonlySel();
+ if( rSh.HasSelection() || bInReadonly)
+ bEnableEdit = FALSE;
+ else
+ {
+ SwTOXMarks aArr;
+ rSh.GetCurTOXMarks( aArr );
+ if( !aArr.Count())
+ bEnableEdit = FALSE;
+ }
+
+ if(!bEnableEdit)
+ rSet.DisableItem( FN_EDIT_IDX_ENTRY_DLG );
+
+ if(bInReadonly)
+ {
+ rSet.DisableItem(FN_INSERT_IDX_ENTRY_DLG);
+ rSet.DisableItem( FN_INSERT_MULTI_TOX );
+ }
+ else
+ rSet.Put(SfxBoolItem(FN_INSERT_IDX_ENTRY_DLG,
+ 0 != pIdxMrk));
+
+
+ SwField* pField = rSh.GetCurFld();
+
+ if(bInReadonly)
+ rSet.DisableItem(FN_INSERT_AUTH_ENTRY_DLG);
+ else
+ rSet.Put(SfxBoolItem(FN_INSERT_AUTH_ENTRY_DLG, 0 != pAuthMark));
+
+ if( bInReadonly || !pField ||
+ pField->GetTyp()->Which() != RES_AUTHORITY)
+ rSet.DisableItem(FN_EDIT_AUTH_ENTRY_DLG);
+ rSet.DisableItem(FN_REMOVE_CUR_TOX);
+ }
+}
+
+// -----------------------------------------------------------------------
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.42 2000/09/18 16:06:06 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.41 2000/09/08 08:12:52 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.40 2000/05/26 07:21:33 os
+ old SW Basic API Slots removed
+
+ Revision 1.39 2000/02/11 14:57:51 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.38 2000/01/17 13:33:00 os
+ #70703# apply to all similar texts: search options case sensitive and word only
+
+ Revision 1.37 1999/12/10 15:17:04 os
+ #70711# readonly check for index entries now in GetIdxState
+
+ Revision 1.36 1999/10/15 11:44:08 os
+ new: FN_REMOVE_TOX
+
+ Revision 1.35 1999/10/06 12:15:01 os
+ edit tox entry dialogs now modal
+
+ Revision 1.34 1999/09/15 13:57:53 os
+ dialog for authorities
+
+ Revision 1.33 1999/09/08 12:43:18 os
+ GetIdxState corrected
+
+ Revision 1.32 1999/09/07 13:55:52 os
+ Insert/EditIndexEntry as FloatingWindow
+
+ Revision 1.31 1999/08/25 13:27:20 OS
+ extended indexes: remove old code
+
+
+ Rev 1.30 25 Aug 1999 15:27:20 OS
+ extended indexes: remove old code
+
+ Rev 1.29 23 Aug 1999 09:51:52 OS
+ extended indexes: InsertTOXMark simplified
+
+ Rev 1.28 17 Aug 1999 13:59:02 OS
+ extended indexes: get/set section attributes
+
+ Rev 1.27 30 Jul 1999 13:14:36 OS
+ indexes: check readonly in status method
+
+ Rev 1.26 07 Jul 1999 08:13:46 OS
+ extended indexes: SwTOXMgr interface changed
+
+ Rev 1.25 02 Jul 1999 11:07:50 OS
+ extended indexes: smaller interface SwTOXMgr
+
+ Rev 1.24 21 Jun 1999 10:00:52 OS
+ extended indexes
+
+ Rev 1.23 29 Mar 1999 14:37:24 OS
+ #63929# Range fuer ItemSet festlegen
+
+ Rev 1.22 29 Mar 1999 12:19:30 OS
+ #63929# neuer Verzeichnisdialog vollstaendig
+
+ Rev 1.21 26 Mar 1999 11:38:26 OS
+ #63929# Neuer Verzeichnisdialog
+
+ Rev 1.20 20 Jan 1999 11:35:58 OS
+ #60881# Verzeichniseintraege mehrfach einf?gen
+
+ Rev 1.19 24 Nov 1997 09:47:10 MA
+ includes
+
+ Rev 1.18 03 Nov 1997 13:55:44 MA
+ precomp entfernt
+
+ Rev 1.17 05 Sep 1997 13:36:00 OS
+ pBase initialisieren, Rahmenslektion schliesst TextShell aus
+
+ Rev 1.16 28 Aug 1997 19:48:02 JP
+ GetIdxState: optimiert, im Verzeichnis InsertEntry abklemmen
+
+ Rev 1.15 23 Jul 1997 21:28:56 HJS
+ includes
+
+ Rev 1.14 07 Jul 1997 09:39:34 OS
+ fuer Userverzeichnisse aus Vorlagen muss immer ein Strin uebergeben werden
+
+ Rev 1.13 03 Jul 1997 09:16:42 JP
+ FN_INSERT_CNTNTIDX_ENTRY: Level auf 1 defaulten
+
+ Rev 1.12 16 Jun 1997 12:02:26 OS
+ Verzeichnisfunktionen und -dialoge ohne Record-Flag
+
+ Rev 1.11 07 Apr 1997 17:44:46 MH
+ chg: header
+
+ Rev 1.10 27 Jan 1997 16:30:36 OS
+ HtmlMode entfernt
+
+ Rev 1.9 11 Dec 1996 10:50:56 MA
+ Warnings
+
+ Rev 1.8 23 Nov 1996 13:24:46 OS
+ im HtmlMode Verzeichnis einfuegen disabled
+
+ Rev 1.7 24 Oct 1996 20:59:38 JP
+ State: bei Selektion darf kein VerzeichnisEintrag bearbeitet werden
+
+ Rev 1.6 09 Sep 1996 21:16:28 MH
+ Umstellungen wg. internal Compiler Errors
+
+ Rev 1.5 28 Aug 1996 15:54:52 OS
+ includes
+
+ Rev 1.4 07 Jun 1996 09:12:44 OS
+ CreateForm fuer Inhaltsverzeichnis abgesichert Bug #28429#
+
+ Rev 1.3 03 Jun 1996 10:18:06 OS
+ vohandene Verzeichnisse beim Einfuegen updaten (Basic) Bug #28233#
+
+ Rev 1.2 22 Mar 1996 15:29:32 TRI
+ sfxiiter.hxx included
+
+ Rev 1.1 30 Nov 1995 15:09:58 OM
+ Segs
+
+ Rev 1.0 30 Nov 1995 14:26:00 OM
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/shells/textsh.cxx b/sw/source/ui/shells/textsh.cxx
new file mode 100644
index 000000000000..1e06a1478da7
--- /dev/null
+++ b/sw/source/ui/shells/textsh.cxx
@@ -0,0 +1,1043 @@
+/*************************************************************************
+ *
+ * $RCSfile: textsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define _SW_FRMVALID_HXX
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+
+
+#ifndef __RSC //autogen
+#include <tools/errinf.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _PLUGIN_HXX //autogen wg. SvPlugInObject
+#include <so3/plugin.hxx>
+#endif
+#ifndef _SFXPTITEM_HXX //autogen
+#include <svtools/ptitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXMSG_HXX //autogen
+#include <sfx2/msg.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFX_FCONTNR_HXX //autogen
+#include <sfx2/fcontnr.hxx>
+#endif
+#ifndef _SVX_HLNKITEM_HXX //autogen
+#include <svx/hlnkitem.hxx>
+#endif
+#ifndef _SBASLTID_HRC //autogen
+#include <offmgr/sbasltid.hrc>
+#endif
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SVX_CHARMAP_HXX //autogen
+#include <svx/charmap.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFX_DOCFILT_HACK_HXX //autogen
+#include <sfx2/docfilt.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef __SBX_SBXVARIABLE_HXX //autogen
+#include <svtools/sbxvar.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SVX_OPAQITEM_HXX //autogen
+#include <svx/opaqitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_SIZEITEM_HXX //autogen
+#include <svx/sizeitem.hxx>
+#endif
+#ifndef _MySVXACORR_HXX
+#include <svx/svxacorr.hxx>
+#endif
+#ifndef _FILTER_HXX //autogen
+#include <svtools/filter.hxx>
+#endif
+#ifndef SMDLL_HXX
+#include <starmath/smdll0.hxx>
+#endif
+#ifndef _SCHDLL0_HXX
+#include <sch/schdll0.hxx>
+#endif
+#ifndef _SCH_DLL_HXX
+#include <sch/schdll.hxx>
+#endif
+#ifndef _SCH_MEMCHRT_HXX
+#include <sch/memchrt.hxx>
+#endif
+#ifndef _SIMDLL_HXX
+#include <sim2/simdll0.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SVX_PFILEDLG_HXX //autogen wg. SvxPluginFileDlg
+#include <svx/pfiledlg.hxx>
+#endif
+#ifndef _OFA_HTMLCFG_HXX //autogen
+#include <offmgr/htmlcfg.hxx>
+#endif
+#ifndef _OFAACCFG_HXX //autogen
+#include <offmgr/ofaaccfg.hxx>
+#endif
+
+#ifndef _SWWDOCSH_HXX //autogen
+#include <wdocsh.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _FRMMGR_HXX
+#include <frmmgr.hxx>
+#endif
+#ifndef _TEXTSH_HXX
+#include <textsh.hxx>
+#endif
+#ifndef _INSTABLE_HXX
+#include <instable.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+#ifndef _TABLEMGR_HXX
+#include <tablemgr.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx> // fuer Undo-IDs
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _FRMDLG_HXX
+#include <frmdlg.hxx>
+#endif
+#ifndef _USRPREF_HXX
+#include <usrpref.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+#ifndef _TBLAFMT_HXX
+#include <tblafmt.hxx>
+#endif
+#ifndef _INSRULE_HXX
+#include <insrule.hxx>
+#endif
+#ifndef _CAPTION_HXX
+#include <caption.hxx>
+#endif
+#ifndef _IDXMRK_HXX
+#include <idxmrk.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+
+#ifndef _SHELLS_HRC
+#include <shells.hrc>
+#endif
+#ifndef _POPUP_HRC
+#include <popup.hrc>
+#endif
+#ifndef _SWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _MODOPT_HXX //autogen
+#include <modcfg.hxx>
+#endif
+#ifndef _COLUMN_HXX
+#include <column.hxx>
+#endif
+
+#define SwTextShell
+#define Paragraph
+#define HyphenZone
+#define TextFont
+#define DropCap
+#ifndef _ITEMDEF_HXX
+#include <itemdef.hxx>
+#endif
+#ifndef _SWSLOTS_HXX
+#include <swslots.hxx>
+#endif
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SFX_IMPL_INTERFACE(SwTextShell, SwBaseShell, SW_RES(STR_SHELLNAME_TEXT))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_TEXT_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_TEXT_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_TEXT));
+ SFX_CHILDWINDOW_REGISTRATION(FN_EDIT_FORMULA);
+ SFX_CHILDWINDOW_REGISTRATION(SID_INSERT_DIAGRAM);
+ SFX_CHILDWINDOW_REGISTRATION(FN_INSERT_FIELD);
+ SFX_CHILDWINDOW_REGISTRATION(FN_INSERT_IDX_ENTRY_DLG);
+ SFX_CHILDWINDOW_REGISTRATION(FN_INSERT_AUTH_ENTRY_DLG);
+}
+
+
+
+TYPEINIT1(SwTextShell,SwBaseShell)
+
+
+
+void SwTextShell::ExecInsert(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+
+ ASSERT( !rSh.IsObjSelected() && !rSh.IsFrmSelected(),
+ "Falsche Shell auf dem Dispatcher" );
+
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem = 0;
+ USHORT nSlot = rReq.GetSlot();
+ if(pArgs)
+ pArgs->GetItemState(nSlot, FALSE, &pItem );
+
+ switch( nSlot )
+ {
+ case FN_INSERT_SOFT_HYPHEN:
+ if( CHAR_SOFTHYPHEN != rSh.SwCrsrShell::GetChar( TRUE, 0 ) &&
+ CHAR_SOFTHYPHEN != rSh.SwCrsrShell::GetChar( TRUE, -1 ))
+ rSh.Insert( String( CHAR_SOFTHYPHEN ) );
+ break;
+
+ case FN_INSERT_HARDHYPHEN:
+ case FN_INSERT_HARD_SPACE:
+ {
+ sal_Unicode cIns = FN_INSERT_HARD_SPACE == nSlot ? CHAR_HARDBLANK
+ : CHAR_HARDHYPHEN;
+
+ SvxAutoCorrect* pACorr = OFF_APP()->GetAutoCorrConfig()->GetAutoCorrect();
+ if( pACorr && pACorr->IsAutoCorrFlag( CptlSttSntnc | CptlSttWrd |
+ ChgFractionSymbol | ChgOrdinalNumber |
+ ChgToEnEmDash | SetINetAttr | Autocorrect ))
+ rSh.AutoCorrect( *pACorr, cIns );
+ else
+ rSh.Insert( String( cIns ) );
+ }
+ break;
+
+ case FN_INSERT_BREAK:
+ rSh.SplitNode();
+ break;
+ case FN_INSERT_PAGEBREAK:
+ rSh.InsertPageBreak();
+ break;
+ case FN_INSERT_LINEBREAK:
+ rSh.InsertLineBreak();
+ break;
+ case FN_INSERT_COLUMN_BREAK:
+ rSh.InsertColumnBreak();
+ break;
+ case SID_HYPERLINK_SETLINK:
+ if (pItem)
+ InsertHyperlink(*((const SvxHyperlinkItem *)pItem));
+ break;
+ case SID_INSERT_SOUND:
+ case SID_INSERT_VIDEO:
+ {
+ SvxPluginFileDlg aDlg( &GetView().GetViewFrame()->GetWindow(), nSlot );
+
+ if ( RET_OK == aDlg.Execute() )
+ {
+ // URL ermitteln
+ String aStrURL( aDlg.GetPath() );
+ aStrURL = URIHelper::SmartRelToAbs( aStrURL );
+
+ INetURLObject* pURL = new INetURLObject();
+ pURL->SetSmartProtocol( INET_PROT_FILE );
+
+ if ( pURL->SetURL( aStrURL, INetURLObject::WAS_ENCODED ) )
+ {
+ SvFactory * pFactory = SvFactory::GetDefaultPlugInFactory();
+ SvStorageRef aStor = new SvStorage( aEmptyStr, STREAM_STD_READWRITE );
+ SvPlugInObjectRef xObj = &pFactory->CreateAndInit( *pFactory, aStor );
+ xObj->SetPlugInMode( (USHORT)PLUGIN_EMBEDED );
+ xObj->SetURL( *pURL );
+ SvPlugInObject* pObj = &xObj;
+ SvInPlaceObjectRef *pxIns = new SvInPlaceObjectRef(pObj);
+ rSh.Insert( pxIns, 0, TRUE, nSlot);
+ }
+ }
+ }
+ break;
+ case SID_INSERT_OBJECT:
+ case SID_INSERT_PLUGIN:
+ case SID_INSERT_APPLET:
+ case SID_INSERT_FLOATINGFRAME:
+ rSh.Insert( (SvInPlaceObjectRef*)0, 0, TRUE, nSlot);
+ break;
+
+ case SID_INSERT_DIAGRAM:
+ {
+ if ( !SFX_APP()->HasFeature( SFX_FEATURE_SCHART ) )
+ break;
+ if(!rReq.IsAPI())
+ {
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ pVFrame->ToggleChildWindow( SID_INSERT_DIAGRAM );
+ }
+ else
+ {
+ const SwFrmFmt* pTFmt = rSh.GetTableFmt();
+ if( pTFmt && !rSh.IsTblComplexForChart() )
+ {
+ SchMemChart* pData = 0;
+ rSh.UpdateChartData( pTFmt->GetName(), pData );
+
+ SwTableFUNC( &rSh, FALSE ).InsertChart( *pData );
+ rSh.LaunchOLEObj();
+
+ delete pData;
+ }
+ else
+ {
+ rSh.Insert( 0, SCH_MOD()->pSchChartDocShellFactory );
+ }
+ SvInPlaceObjectRef xOLE = rSh.GetOLEObj();
+ if(pItem && xOLE.Is())
+ {
+ Size aSize(((SvxSizeItem*)pItem)->GetSize());
+ aSize = OutputDevice::LogicToLogic
+ ( aSize, MapMode( MAP_TWIP ), MapMode( MAP_100TH_MM ) );
+
+ if(aSize.Width() > MINLAY&& aSize.Height()> MINLAY)
+ {
+ Rectangle aRect = xOLE->GetVisArea();
+ aRect.SetSize(aSize);
+ xOLE->SetVisArea( aRect );
+ }
+ }
+ }
+ }
+ break;
+
+ case FN_INSERT_SIM:
+ {
+ rSh.Insert( 0, SIM_MOD()->pSimDrawDocShellFactory );
+ }
+ break;
+
+ case FN_INSERT_SMA:
+ {
+ rSh.Insert( 0, SM_MOD()->pSmDocShellFactory );
+ }
+ break;
+
+ case FN_INSERT_TABLE:
+ if( !rSh.GetTableFmt() && !(rSh.GetFrmType(0,TRUE) & FRMTYPE_FOOTNOTE))
+ {
+ SwView &rView = GetView(); // Da GetView() nach Shellwechsel nicht mehr geht
+ BOOL bHTMLMode = 0 != (::GetHtmlMode(rView.GetDocShell())&HTMLMODE_ON);
+ BOOL bCallEndUndo = FALSE;
+
+ if( !pArgs && rSh.IsSelection() && !rSh.IsInClickToEdit() )
+ {
+ const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+ USHORT nInsTblFlags = pModOpt->GetInsTblFlags(bHTMLMode);
+
+ rSh.StartUndo(UNDO_INSTABLE);
+ bCallEndUndo = TRUE;
+
+ BOOL bInserted = rSh.TextToTable('\t', HORI_FULL, nInsTblFlags);
+ rSh.EnterStdMode();
+ if (bInserted)
+ rView.AutoCaption(TABLE_CAP);
+ }
+ else
+ {
+ USHORT nCols = 0;
+ USHORT nRows = 0;
+ USHORT nInsTblFlags = ALL_TBL_INS_ATTR;
+ String aTableName;
+ SwTableAutoFmt* pTAFmt = 0;
+
+ if( pArgs && pArgs->Count() >= 2 )
+ {
+ nCols = ((SfxUInt16Item &)pArgs->Get(SID_ATTR_TABLE_COLUMN)).GetValue();
+ nRows = ((SfxUInt16Item &)pArgs->Get(SID_ATTR_TABLE_ROW)).GetValue();
+
+ const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+ nInsTblFlags = pModOpt->GetInsTblFlags(bHTMLMode);
+ }
+
+ if( !nCols || !nRows )
+ {
+ SwInsTableDlg *pDlg = new SwInsTableDlg(rView);
+ if( RET_OK == pDlg->Execute() )
+ {
+ pDlg->GetValues( aTableName, nRows, nCols, nInsTblFlags, pTAFmt );
+ }
+ delete pDlg;
+ }
+
+ if( nCols && nRows )
+ {
+ rSh.StartUndo(UNDO_INSTABLE);
+ bCallEndUndo = TRUE;
+
+ rSh.StartAllAction();
+ if( rSh.HasSelection() )
+ rSh.DelRight();
+
+ rSh.InsertTable( nRows, nCols, HORI_FULL, nInsTblFlags, pTAFmt );
+ rSh.MoveTable( fnTablePrev, fnTableStart );
+
+ if( aTableName.Len() && !rSh.GetTblStyle( aTableName ) )
+ rSh.GetTableFmt()->SetName( aTableName );
+
+ rSh.EndAllAction();
+ rView.AutoCaption(TABLE_CAP);
+ }
+ delete pTAFmt;
+ }
+ if( bCallEndUndo )
+ rSh.EndUndo(UNDO_INSTABLE); // wegen moegl. Shellwechsel
+ }
+ break;
+
+ case FN_INSERT_FRAME_INTERACT_NOCOL:
+ case FN_INSERT_FRAME_INTERACT:
+ {
+ USHORT nCols = 1;
+ if(FN_INSERT_FRAME_INTERACT_NOCOL != nSlot &&
+ pArgs &&pArgs->GetItemState(SID_ATTR_COLUMNS, FALSE, &pItem) == SFX_ITEM_SET)
+ nCols = ((SfxUInt16Item *)pItem)->GetValue();
+ GetView().InsFrmMode(nCols);
+ }
+ break;
+ case FN_INSERT_FRAME:
+ {
+ const int nSel = rSh.GetSelectionType();
+
+ BOOL bSingleCol = FALSE;
+ if( 0!= PTR_CAST(SwWebDocShell, GetView().GetDocShell()) )
+ {
+ OfaHtmlOptions* pHtmlOpt = OFF_APP()->GetHtmlOptions();
+ USHORT nExport = pHtmlOpt->GetExportMode();
+ if( HTML_CFG_MSIE == nExport ||
+ HTML_CFG_HTML32 == nExport ||
+ HTML_CFG_MSIE_40 == nExport ||
+ HTML_CFG_HTML32 == nExport )
+ {
+ bSingleCol = TRUE;
+ }
+
+ }
+ // Rahmen neu anlegen
+ SwFlyFrmAttrMgr aMgr( TRUE, GetShellPtr(), FRMMGR_TYPE_TEXT );
+ static USHORT __READONLY_DATA aFrmAttrRange[] =
+ {
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
+ FN_GET_PRINT_AREA, FN_GET_PRINT_AREA,
+ SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
+ FN_SET_FRM_NAME, FN_SET_FRM_NAME,
+ SID_HTML_MODE, SID_HTML_MODE,
+ 0
+ };
+
+ SfxItemSet aSet(GetPool(), aFrmAttrRange );
+ aSet.Put(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(GetView().GetDocShell())));
+ const SwRect &rPg = GetShell().GetAnyCurRect(RECT_PAGE);
+ SwFmtFrmSize aFrmSize(ATT_VAR_SIZE, rPg.Width(), rPg.Height());
+ aFrmSize.SetWhich(GetPool().GetWhich(SID_ATTR_PAGE_SIZE));
+ aSet.Put(aFrmSize);
+
+ const SwRect &rPr = GetShell().GetAnyCurRect(RECT_PAGE_PRT);
+ SwFmtFrmSize aPrtSize(ATT_VAR_SIZE, rPr.Width(), rPr.Height());
+ aPrtSize.SetWhich(GetPool().GetWhich(FN_GET_PRINT_AREA));
+ aSet.Put(aPrtSize);
+
+ aSet.Put(aMgr.GetAttrSet());
+ aSet.SetParent( aMgr.GetAttrSet().GetParent() );
+
+ // Minimalgroesse in Spalten l”schen
+ SvxBoxInfoItem aBoxInfo((SvxBoxInfoItem &)aSet.Get(SID_ATTR_BORDER_INNER));
+ aBoxInfo.SetMinDist(FALSE);
+ aSet.Put(aBoxInfo);
+
+ SwFrmDlg* pDlg = new SwFrmDlg(GetView().GetViewFrame(), &GetView().GetViewFrame()->GetWindow(), aSet, TRUE);
+
+ if(pDlg->Execute() && pDlg->GetOutputItemSet())
+ {
+ GetShell().StartAllAction();
+ GetShell().StartUndo(UNDO_INSERT);
+
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+ aMgr.SetAttrSet(*pOutSet);
+
+ // beim ClickToEditFeld erst die Selektion loeschen
+ if( GetShell().IsInClickToEdit() )
+ GetShell().DelRight();
+
+ aMgr.InsertFlyFrm();
+
+
+ GetView().AutoCaption(FRAME_CAP);
+ GetShell().EndUndo(UNDO_INSERT);
+ GetShell().EndAllAction();
+ }
+
+ DELETEZ(pDlg);
+ break;
+ }
+ case FN_INSERT_HRULER:
+ {
+ String sPath;
+ BOOL bSimpleLine = FALSE;
+ BOOL bRet = FALSE;
+ Window* pParent = GetView().GetWindow();
+ SwInsertGrfRulerDlg* pDlg = new SwInsertGrfRulerDlg(
+ pParent ,
+ GetView().GetDocShell());
+ // MessageBox fuer fehlende Grafiken
+ if(!pDlg->HasImages())
+ InfoBox( pParent, SW_RES(MSG_NO_RULER)).Execute();
+ if(RET_OK == pDlg->Execute())
+ {
+ sPath = pDlg->GetGraphicName();
+ bSimpleLine = pDlg->IsSimpleLine();
+ }
+ delete pDlg;
+ rSh.StartAllAction();
+ rSh.StartUndo(UIUNDO_INSERT_RULER);
+ if(bSimpleLine)
+ {
+ if(!(rSh.IsSttOfPara() && rSh.IsEndOfPara())) // kein leerer Absatz?
+ rSh.SplitNode( FALSE, FALSE ); // dann Platz schaffen
+ rSh.SplitNode( FALSE, FALSE );
+ rSh.Left();
+ rSh.SetTxtFmtColl( rSh.GetTxtCollFromPool( RES_POOLCOLL_HTML_HR ));
+ rSh.Right();
+ bRet = TRUE;
+ }
+ else if(sPath.Len())
+ {
+ if (!pFrmMgr)
+ pFrmMgr = new SwFlyFrmAttrMgr( TRUE, &rSh, FRMMGR_TYPE_GRF );
+ // am FrmMgr muessen die richtigen Parameter eingestellt werden
+
+ pFrmMgr->SetAnchor(FLY_IN_CNTNT);
+
+ rSh.SplitNode( FALSE, FALSE );
+ rSh.SplitNode( FALSE, FALSE );
+ rSh.Left();
+ rSh.SetAttr(SvxAdjustItem(SVX_ADJUST_CENTER,RES_PARATR_ADJUST ));
+ if(GRFILTER_OK == InsertGraphic(sPath, aEmptyStr, TRUE, 0, 0 ))
+ bRet = TRUE;
+ rSh.EnterStdMode();
+ rSh.Right();
+ DELETEZ(pFrmMgr);
+ }
+ rSh.EndAllAction();
+ rSh.EndUndo(UIUNDO_INSERT_RULER);
+ rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
+ }
+ break;
+ case FN_FORMAT_COLUMN :
+ {
+ SwColumnDlg* pColDlg = new SwColumnDlg(GetView().GetWindow(), rSh);
+ pColDlg->Execute();
+ delete pColDlg;
+ }
+ break;
+
+ case FN_SECTION_APPENDNODE:
+ rReq.SetReturnValue( SfxBoolItem( nSlot, rSh.AppendNodeInSection() ));
+ break;
+
+ default:
+ ASSERT( !this, "falscher Dispatcher" );
+ return;
+ }
+}
+
+
+
+void SwTextShell::StateInsert( SfxItemSet &rSet )
+{
+ USHORT nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
+ SfxWhichIter aIter( rSet );
+ SwWrtShell &rSh = GetShell();
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case SID_INSERT_SOUND:
+ case SID_INSERT_VIDEO:
+ if ( GetShell().IsSelFrmMode() ||
+ !SvxPluginFileDlg::IsAvailable( nWhich ) ||
+ SFX_CREATE_MODE_EMBEDDED == GetView().GetDocShell()->GetCreateMode() )
+ {
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case SID_INSERT_DIAGRAM:
+ if( !SFX_APP()->HasFeature( SFX_FEATURE_SCHART ) )
+ {
+ rSet.DisableItem( nWhich );
+ break;
+ }
+
+ case FN_INSERT_SIM:
+ if( FN_INSERT_SIM == nWhich &&
+ !SFX_APP()->HasFeature( SFX_FEATURE_SIMAGE ) )
+ {
+ rSet.DisableItem( nWhich );
+ break;
+ }
+
+ case FN_INSERT_SMA:
+ if( FN_INSERT_SMA == nWhich &&
+ !SFX_APP()->HasFeature( SFX_FEATURE_SMATH ) )
+ {
+ rSet.DisableItem( nWhich );
+ break;
+ }
+
+ case SID_INSERT_FLOATINGFRAME:
+ case SID_INSERT_OBJECT:
+ case SID_INSERT_PLUGIN:
+ case SID_INSERT_APPLET:
+ {
+ SfxObjectCreateMode eMode =
+ GetView().GetDocShell()->GetCreateMode();
+
+ if(
+#ifndef SOLAR_JAVA
+ nWhich == SID_INSERT_APPLET ||
+#endif
+ eMode == SFX_CREATE_MODE_EMBEDDED ||
+ (nWhich == SID_INSERT_DIAGRAM && rSh.IsCrsrInTbl() &&
+ rSh.IsTblComplexForChart() &&
+ !GetView().GetViewFrame()->GetChildWindow(
+ SID_INSERT_DIAGRAM)) )
+ rSet.DisableItem( nWhich );
+ else if( GetShell().IsSelFrmMode())
+ rSet.DisableItem( nWhich );
+ else if(SID_INSERT_FLOATINGFRAME == nWhich && nHtmlMode&HTMLMODE_ON)
+ {
+ OfaHtmlOptions* pHtmlOpt = OFF_APP()->GetHtmlOptions();
+ USHORT nExport = pHtmlOpt->GetExportMode();
+ if(HTML_CFG_MSIE_40 != nExport && HTML_CFG_WRITER != nExport )
+ rSet.DisableItem(nWhich);
+ }
+ }
+ break;
+ case FN_INSERT_FRAME_INTERACT_NOCOL :
+ case FN_INSERT_FRAME_INTERACT:
+ {
+ if ( GetShell().IsSelFrmMode() ||
+ (0 != (nHtmlMode & HTMLMODE_ON) && 0 == (nHtmlMode & HTMLMODE_SOME_ABS_POS)))
+ rSet.DisableItem(nWhich);
+ }
+ break;
+ case SID_HYPERLINK_GETLINK:
+ {
+ SfxItemSet aSet(GetPool(), RES_TXTATR_INETFMT, RES_TXTATR_INETFMT);
+ rSh.GetAttr( aSet );
+
+ SvxHyperlinkItem aHLinkItem;
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == aSet.GetItemState(RES_TXTATR_INETFMT, FALSE, &pItem))
+ {
+ const SwFmtINetFmt* pINetFmt = (const SwFmtINetFmt*)pItem;
+ aHLinkItem.SetURL(pINetFmt->GetValue());
+ aHLinkItem.SetTargetFrame(pINetFmt->GetTargetFrame());
+ aHLinkItem.SetIntName(pINetFmt->GetName());
+ const SvxMacro *pMacro = pINetFmt->GetMacro( SFX_EVENT_MOUSEOVER_OBJECT );
+ if( pMacro )
+ aHLinkItem.SetMacro(HYPERDLG_EVENT_MOUSEOVER_OBJECT, *pMacro);
+
+ pMacro = pINetFmt->GetMacro( SFX_EVENT_MOUSECLICK_OBJECT );
+ if( pMacro )
+ aHLinkItem.SetMacro(HYPERDLG_EVENT_MOUSECLICK_OBJECT, *pMacro);
+
+ pMacro = pINetFmt->GetMacro( SFX_EVENT_MOUSEOUT_OBJECT );
+ if( pMacro )
+ aHLinkItem.SetMacro(HYPERDLG_EVENT_MOUSEOUT_OBJECT, *pMacro);
+
+ // Text des Links besorgen
+ rSh.StartAction();
+ rSh.CreateCrsr();
+ rSh.SwCrsrShell::SelectTxtAttr(RES_TXTATR_INETFMT,TRUE);
+ String sLinkName = rSh.GetSelTxt();
+ aHLinkItem.SetName(sLinkName);
+ aHLinkItem.SetInsertMode(HLINK_FIELD);
+ rSh.DestroyCrsr();
+ rSh.EndAction();
+ }
+ else
+ {
+ String sReturn = rSh.GetSelTxt();
+ sReturn.Erase(255);
+ sReturn.EraseTrailingChars();
+ aHLinkItem.SetName(sReturn);
+ }
+
+ aHLinkItem.SetInsertMode((SvxLinkInsertMode)(aHLinkItem.GetInsertMode() |
+ ((nHtmlMode & HTMLMODE_ON) != 0 ? HLINK_HTMLMODE : 0)));
+ aHLinkItem.SetMacroEvents ( HYPERDLG_EVENT_MOUSEOVER_OBJECT|
+ HYPERDLG_EVENT_MOUSECLICK_OBJECT | HYPERDLG_EVENT_MOUSEOUT_OBJECT );
+
+ rSet.Put(aHLinkItem);
+ }
+ break;
+
+ case FN_INSERT_FRAME:
+ if(rSh.IsSelFrmMode())
+ {
+ const int nSel = rSh.GetSelectionType();
+ if( (SwWrtShell::SEL_GRF | SwWrtShell::SEL_OLE ) & nSel )
+ rSet.DisableItem(nWhich);
+ }
+ break;
+ case FN_INSERT_HRULER :
+ if(rSh.IsReadOnlyAvailable() && rSh.HasReadonlySel() )
+ rSet.DisableItem(nWhich);
+ break;
+
+ case FN_SECTION_APPENDNODE:
+ if( !rSh.CanInsertNodeAtEndOfSection() )
+ rSet.DisableItem(nWhich);
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwTextShell::ExecDelete(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ switch( rReq.GetSlot() )
+ {
+ case FN_DELETE_SENT:
+ if( rSh.IsTableMode() )
+ {
+ rSh.DeleteRow();
+ rSh.EnterStdMode();
+ }
+ else
+ rSh.DelToEndOfSentence();
+ break;
+ case FN_DELETE_BACK_SENT:
+ rSh.DelToStartOfSentence();
+ break;
+ case FN_DELETE_WORD:
+ rSh.DelNxtWord();
+ break;
+ case FN_DELETE_BACK_WORD:
+ rSh.DelPrvWord();
+ break;
+ case FN_DELETE_LINE:
+ rSh.DelToEndOfLine();
+ break;
+ case FN_DELETE_BACK_LINE:
+ rSh.DelToStartOfLine();
+ break;
+ case FN_DELETE_PARA:
+ rSh.DelToEndOfPara();
+ break;
+ case FN_DELETE_BACK_PARA:
+ rSh.DelToStartOfPara();
+ break;
+ case FN_DELETE_WHOLE_LINE:
+ rSh.DelLine();
+ break;
+ default:
+ ASSERT(!this, "falscher Dispatcher");
+ return;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+SwTextShell::SwTextShell(SwView &rView) :
+ SwBaseShell(rView), pPostItFldMgr( 0 ), pInsGrfSetPtr( 0 )
+{
+ SetName(String::CreateFromAscii("Text"));
+ SetHelpId(SW_TEXTSHELL);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwTextShell::~SwTextShell()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwTextShell::InsertSymbol(const String& rChars, const String& rFontName)
+{
+ SwWrtShell &rSh = GetShell();
+ String aChars( rChars );
+
+ SfxItemSet aSet( GetPool(), RES_CHRATR_FONT, RES_CHRATR_FONT );
+ rSh.GetAttr( aSet );
+ SvxFontItem aFont( (SvxFontItem &) aSet.Get( RES_CHRATR_FONT ));
+ Font aNewFont(rFontName, Size(1,1)); // Size nur wg. CTOR
+
+ if( !rChars.Len() )
+ {
+ // Eingestellten Font als Default
+ SvxCharacterMap* pDlg = new SvxCharacterMap(&GetView().GetViewFrame()->GetWindow(), FALSE);
+
+ Font aDlgFont( pDlg->GetCharFont() );
+ SwViewOption aOpt(*GetShell().GetViewOptions());
+ String sSymbolFont = aOpt.GetSymbolFont();
+ if(!rFontName.Len() && sSymbolFont.Len())
+ aDlgFont.SetName(sSymbolFont);
+ else
+ aDlgFont.SetName( aFont.GetFamilyName() );
+
+ pDlg->SetCharFont( aDlgFont );
+
+ if( RET_OK == pDlg->Execute() )
+ {
+ aChars = pDlg->GetCharacters();
+ aNewFont = pDlg->GetCharFont();
+ aOpt.SetSymbolFont(aNewFont.GetName());
+ SW_MOD()->ApplyUsrPref(aOpt, &GetView());
+ }
+ delete pDlg;
+ }
+
+ if( aChars.Len() )
+ {
+ rSh.StartAllAction();
+
+ // Selektierten Inhalt loeschen
+ rSh.StartUndo( UNDO_INSERT );
+ if ( rSh.HasSelection() )
+ {
+ rSh.DelRight();
+ aSet.ClearItem();
+ rSh.GetAttr( aSet );
+ aFont = (SvxFontItem &) aSet.Get( RES_CHRATR_FONT );
+ }
+
+ // Zeichen einfuegen
+ rSh.Insert( aChars );
+
+ // Muss der Font geaendert werden
+ if( aNewFont.GetName() != aFont.GetFamilyName() )
+ {
+ SvxFontItem aNewFontItem( aFont );
+ aNewFontItem.GetFamilyName() = aNewFont.GetName();
+ aNewFontItem.GetFamily() = aNewFont.GetFamily();
+ aNewFontItem.GetPitch() = aNewFont.GetPitch();
+ aNewFontItem.GetCharSet() = aNewFont.GetCharSet();
+ aSet.Put(aNewFontItem);
+
+ rSh.SetMark();
+ rSh.ExtendSelection( FALSE, aChars.Len() );
+ rSh.SetAttr( aSet, SETATTR_DONTEXPAND | SETATTR_NOFORMATATTR );
+ if( !rSh.IsCrsrPtAtEnd() )
+ rSh.SwapPam();
+ rSh.ClearMark();
+ rSh.UpdateAttr();
+ }
+
+ rSh.EndAllAction();
+ rSh.EndUndo( UNDO_INSERT );
+ }
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.356 2000/09/18 16:06:06 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.355 2000/09/08 08:12:52 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.354 2000/08/17 11:40:16 jp
+ remove the SW graphicmanager
+
+ Revision 1.353 2000/08/07 20:40:21 jp
+ ExectInsert: don't insert a softhyphen behind/befor another sofhyphen
+
+ Revision 1.352 2000/08/04 10:54:23 jp
+ Soft-/HardHyphens & HardBlanks changed from attribute to unicode character; remove unused methods
+
+ Revision 1.351 2000/07/26 16:27:20 jp
+ Bug #77158#: remove the unused code
+
+ Revision 1.350 2000/07/07 13:24:57 jp
+ must changes VCL
+
+ Revision 1.349 2000/06/27 17:43:21 jp
+ Bug #76332#: internal SplitNode don't insert a new node before a table
+
+ Revision 1.348 2000/06/26 13:17:56 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.347 2000/06/20 14:49:23 os
+ #70060# less occurences of columns in HTML
+
+ Revision 1.346 2000/05/26 07:21:33 os
+ old SW Basic API Slots removed
+
+ Revision 1.345 2000/05/10 11:53:02 os
+ Basic API removed
+
+ Revision 1.344 2000/05/09 14:41:35 os
+ BASIC interface partially removed
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/shells/textsh1.cxx b/sw/source/ui/shells/textsh1.cxx
new file mode 100644
index 000000000000..167dd4a2ea4c
--- /dev/null
+++ b/sw/source/ui/shells/textsh1.cxx
@@ -0,0 +1,1154 @@
+/*************************************************************************
+ *
+ * $RCSfile: textsh1.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+
+#ifndef _SFXSTRITEM_HXX
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFX_SAVEOPT_HXX //autogen
+#include <sfx2/saveopt.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFX_OBJITEM_HXX //autogen
+#include <sfx2/objitem.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _OFAACCFG_HXX //autogen
+#include <offmgr/ofaaccfg.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXMACITEM_HXX
+#include <svtools/macitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#ifndef _SVX_TSTPITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _MySVXACORR_HXX //autogen
+#include <svx/svxacorr.hxx>
+#endif
+
+
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _WVIEW_HXX
+#include <wview.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+#ifndef _SWEVENT_HXX
+#include <swevent.hxx>
+#endif
+#ifndef _TEXTSH_HXX
+#include <textsh.hxx>
+#endif
+#ifndef _BOOKMARK_HXX
+#include <bookmark.hxx>
+#endif
+#ifndef _BOOKMRK_HXX
+#include <bookmrk.hxx>
+#endif
+#ifndef _BREAK_HXX
+#include <break.hxx>
+#endif
+#ifndef _DATAEX_HXX
+#include <dataex.hxx>
+#endif
+#ifndef _DOCSTAT_HXX
+#include <docstat.hxx>
+#endif
+#ifndef _INSFNOTE_HXX
+#include <insfnote.hxx>
+#endif
+#ifndef _OUTLINE_HXX
+#include <outline.hxx>
+#endif
+#ifndef _SRTDLG_HXX
+#include <srtdlg.hxx>
+#endif
+#ifndef _TABLEMGR_HXX
+#include <tablemgr.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx> // fuer Undo-IDs
+#endif
+#ifndef _AUTOFDLG_HXX
+#include <autofdlg.hxx>
+#endif
+#ifndef _REFFLD_HXX
+#include <reffld.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx>
+#endif
+#ifndef _INPUTWIN_HXX
+#include <inputwin.hxx>
+#endif
+#ifndef _PARDLG_HXX
+#include <pardlg.hxx>
+#endif
+#ifndef _CHRDLG_HXX
+#include <chrdlg.hxx>
+#endif
+#ifndef _DOCFNOTE_HXX
+#include <docfnote.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _CELLATR_HXX
+#include <cellatr.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _REDLNDLG_HXX
+#include <redlndlg.hxx>
+#endif
+#ifndef _REDLENUM_HXX
+#include <redlenum.hxx>
+#endif
+
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _SHELLS_HRC
+#include <shells.hrc>
+#endif
+#ifndef _APP_HRC
+#include <app.hrc>
+#endif
+#ifndef _WEB_HRC
+#include <web.hrc>
+#endif
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+short lcl_AskRedlineMode(Window *pWin)
+{
+ MessBox aQBox( pWin, 0,
+ String( SW_RES( STR_REDLINE_TITLE ) ),
+ String( SW_RES( STR_REDLINE_MSG ) ) );
+ aQBox.SetImage( QueryBox::GetStandardImage() );
+ USHORT nBtnFlags = BUTTONDIALOG_DEFBUTTON |
+ BUTTONDIALOG_OKBUTTON |
+ BUTTONDIALOG_FOCUSBUTTON;
+
+ aQBox.AddButton(String(SW_RES(STR_REDLINE_ACCEPT_ALL)), RET_OK, nBtnFlags);
+ aQBox.GetPushButton( RET_OK )->SetHelpId(HID_AUTOFORMAT_ACCEPT);
+ aQBox.AddButton(String(SW_RES(STR_REDLINE_REJECT_ALL)), RET_CANCEL, BUTTONDIALOG_CANCELBUTTON);
+ aQBox.GetPushButton( RET_CANCEL )->SetHelpId(HID_AUTOFORMAT_REJECT );
+ aQBox.AddButton(String(SW_RES(STR_REDLINE_EDIT)), 2, 0);
+ aQBox.GetPushButton( 2 )->SetHelpId(HID_AUTOFORMAT_EDIT_CHG);
+ aQBox.SetButtonHelpText( RET_OK, aEmptyStr );
+
+ return aQBox.Execute();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwTextShell::Execute(SfxRequest &rReq)
+{
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ SwWrtShell& rWrtSh = GetShell();
+ const SfxPoolItem* pItem = 0;
+ USHORT nSlot = rReq.GetSlot();
+ if(pArgs)
+ pArgs->GetItemState(GetPool().GetWhich(nSlot), FALSE, &pItem);
+ switch( nSlot )
+ {
+ case FN_INSERT_SYMBOL:
+ InsertSymbol(aEmptyStr,aEmptyStr);
+ break;
+ case FN_INSERT_FOOTNOTE:
+ case FN_INSERT_ENDNOTE:
+ rWrtSh.InsertFootnote(aEmptyStr, nSlot == FN_INSERT_ENDNOTE);
+ break;
+ case FN_INSERT_FOOTNOTE_DLG:
+ {
+ SwInsFootNoteDlg *pDlg = new SwInsFootNoteDlg(
+ GetView().GetWindow(), rWrtSh, FALSE);
+ pDlg->SetHelpId(nSlot);
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+ case FN_FORMAT_FOOTNOTE_DLG:
+ {
+ SwFootNoteOptionDlg *pDlg = new SwFootNoteOptionDlg(GetView().GetWindow(), rWrtSh);
+ pDlg->Execute();
+ delete pDlg;
+ break;
+ }
+ case SID_INSERT_GRAPHIC:
+ if (!pItem)
+ {
+ rReq.SetReturnValue(SfxBoolItem(nSlot, InsertGraphicDlg()));
+ }
+ else
+ {
+ String rName = aEmptyStr;
+ BOOL bLink = FALSE;
+
+ rName = ((const SfxStringItem *)pItem)->GetValue();
+
+ String rFilter = aEmptyStr;
+ if ( SFX_ITEM_SET ==
+ pArgs->GetItemState(FN_PARAM_FILTER, TRUE, &pItem) )
+ rFilter = ((const SfxStringItem *)pItem)->GetValue();
+
+ if ( SFX_ITEM_SET ==
+ pArgs->GetItemState(FN_PARAM_1, TRUE, &pItem) )
+ bLink = ((const SfxBoolItem *)pItem)->GetValue();
+
+ if ( !rName.Len() )
+ rReq.SetReturnValue(SfxBoolItem(nSlot, InsertGraphicDlg()));
+ else
+ rReq.SetReturnValue(SfxBoolItem(nSlot, InsertGraphic( rName, rFilter, bLink )));
+ }
+ break;
+ case SID_INSERTDOC:
+ if (!pItem)
+ rReq.SetReturnValue(SfxBoolItem(nSlot, GetView().InsertDoc(nSlot, aEmptyStr, aEmptyStr) != -1));
+ else
+ {
+ String aFile = aEmptyStr;
+ String aFilter = aEmptyStr;
+ aFile = ((const SfxStringItem *)pItem)->GetValue();
+ if(SFX_ITEM_SET == pArgs->GetItemState(FN_PARAM_1, TRUE, &pItem ))
+ aFilter = ((const SfxStringItem *)pItem)->GetValue();
+
+ rReq.SetReturnValue(SfxBoolItem(nSlot, GetView().InsertDoc( nSlot, aFile, aFilter ) != -1));
+ }
+ break;
+ case FN_FORMAT_RESET:
+ rWrtSh.ResetAttr();
+ break;
+ case FN_INSERT_BREAK_DLG:
+ {
+ SwBreakDlg *pDlg = new SwBreakDlg(GetView().GetWindow(), rWrtSh);
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+ case FN_INSERT_BOOKMARK:
+ {
+ SwInsertBookmarkDlg *pDlg = new SwInsertBookmarkDlg(
+ GetView().GetWindow(), rWrtSh );
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+ case FN_AUTOFORMAT_REDLINE_APPLY:
+ {
+ SvxSwAutoFmtFlags aFlags(OFF_APP()->GetAutoCorrect()->GetSwFlags());
+ // das muss fuer die Nachbearbeitung immer FALSE sein
+ aFlags.bAFmtByInput = FALSE;
+ aFlags.bWithRedlining = TRUE;
+ rWrtSh.AutoFormat( &aFlags );
+ aFlags.bWithRedlining = FALSE;
+
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ if (pVFrame->HasChildWindow(FN_REDLINE_ACCEPT))
+ pVFrame->ToggleChildWindow(FN_REDLINE_ACCEPT);
+
+ SwModalRedlineAcceptDlg aDlg(&GetView().GetEditWin());
+
+ switch (lcl_AskRedlineMode(&GetView().GetEditWin()))
+ {
+ case RET_OK:
+ aDlg.AcceptAll(TRUE);
+ break;
+
+ case RET_CANCEL:
+ aDlg.AcceptAll(FALSE);
+ break;
+
+ case 2:
+ aDlg.Execute();
+ break;
+ }
+ }
+ break;
+
+ case FN_AUTOFORMAT_APPLY:
+ {
+ SvxSwAutoFmtFlags aFlags(OFF_APP()->GetAutoCorrect()->GetSwFlags());
+ // das muss fuer die Nachbearbeitung immer FALSE sein
+ aFlags.bAFmtByInput = FALSE;
+ rWrtSh.AutoFormat( &aFlags );
+ }
+ break;
+ case FN_AUTOFORMAT_AUTO:
+ {
+ OfaAutoCorrCfg* pACfg = OFF_APP()->GetAutoCorrConfig();
+ BOOL bSet = pItem ? ((const SfxBoolItem*)pItem)->GetValue()
+ : !pACfg->IsAutoFmtByInput();
+ if( bSet != pACfg->IsAutoFmtByInput() )
+ pACfg->SetAutoFmtByInput( bSet );
+ }
+ break;
+ case FN_AUTO_CORRECT:
+ {
+ // erstmal auf Blank defaulten
+ sal_Unicode cChar = ' ';
+ rWrtSh.AutoCorrect( *OFF_APP()->GetAutoCorrect(), cChar );
+ }
+ break;
+
+ case FN_SORTING_DLG:
+ {
+ SwSortDlg *pDlg = new SwSortDlg(GetView().GetWindow(), rWrtSh );
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+ case FN_NUMBERING_OUTLINE_DLG:
+ {
+ SfxItemSet aTmp(GetPool(), FN_PARAM_1, FN_PARAM_1);
+ SwOutlineTabDialog* pDlg = new SwOutlineTabDialog(GetView().GetWindow(), &aTmp, rWrtSh);
+ pDlg->Execute();
+ delete pDlg;
+ }
+ break;
+ case FN_CALCULATE:
+ {
+ SwDataExchangeRef aRef( new SwDataExchange( rWrtSh ) );
+ aRef->CalculateAndCopy();
+ }
+ break;
+ case FN_GOTO_REFERENCE:
+ {
+ SwField *pFld = rWrtSh.GetCurFld();
+ if(pFld && pFld->GetTypeId() == TYP_GETREFFLD)
+ {
+ rWrtSh.StartAllAction();
+ rWrtSh.SwCrsrShell::GotoRefMark( ((SwGetRefField*)pFld)->GetSetRefName(),
+ ((SwGetRefField*)pFld)->GetSubType(),
+ ((SwGetRefField*)pFld)->GetSeqNo() );
+ rWrtSh.EndAllAction();
+ }
+ }
+ break;
+ case FN_EDIT_FORMULA:
+ {
+ rWrtSh.EndAllTblBoxEdit();
+ SfxViewFrame* pVFrame = GetView().GetViewFrame();
+ const USHORT nId = SwInputChild::GetChildWindowId();
+ pVFrame->ToggleChildWindow( nId );
+ if( !pVFrame->HasChildWindow( nId ) )
+ pVFrame->GetBindings().InvalidateAll( TRUE );
+ }
+
+ break;
+ case FN_TABLE_UNSET_READ_ONLY:
+ {
+ rWrtSh.UnProtectTbls();
+ }
+ break;
+ case FN_EDIT_HYPERLINK:
+ GetView().GetViewFrame()->ToggleChildWindow(SID_HYPERLINK_DIALOG);
+ break;
+ case FN_INSERT_HYPERLINK:
+ case SID_CHAR_DLG:
+ {
+ SwView* pView = GetActiveView();
+ if(pView)
+ {
+ FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, pView));
+ SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, eMetric));
+ SfxItemSet aCoreSet( GetPool(),
+ RES_CHRATR_BEGIN, RES_CHRATR_END-1,
+ RES_TXTATR_INETFMT, RES_TXTATR_INETFMT,
+ RES_BACKGROUND, RES_BACKGROUND,
+ FN_PARAM_SELECTION, FN_PARAM_SELECTION,
+ SID_HTML_MODE, SID_HTML_MODE,
+ 0 );
+ rWrtSh.GetAttr( aCoreSet );
+ BOOL bSel = rWrtSh.HasSelection();
+ BOOL bSelectionPutted = FALSE;
+ if(bSel || rWrtSh.IsInWord())
+ {
+ if(!bSel)
+ {
+ rWrtSh.StartAction();
+ rWrtSh.Push();
+ if(!rWrtSh.SelectTxtAttr( RES_TXTATR_INETFMT ))
+ rWrtSh.SelWrd();
+ }
+ aCoreSet.Put(SfxStringItem(FN_PARAM_SELECTION, rWrtSh.GetSelTxt()));
+ bSelectionPutted = TRUE;
+ if(!bSel)
+ {
+ rWrtSh.Pop(FALSE);
+ rWrtSh.EndAction();
+ }
+ }
+
+ // Das CHRATR_BACKGROUND-Attribut wird fuer den Dialog in
+ // ein RES_BACKGROUND verwandelt und wieder zurueck ...
+ const SfxPoolItem *pTmpBrush;
+ if( SFX_ITEM_SET == aCoreSet.GetItemState( RES_CHRATR_BACKGROUND,
+ TRUE, &pTmpBrush ) )
+ {
+ SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) );
+ aTmpBrush.SetWhich( RES_BACKGROUND );
+ aCoreSet.Put( aTmpBrush );
+ }
+
+ aCoreSet.Put(SfxUInt16Item(SID_HTML_MODE,
+ ::GetHtmlMode(GetView().GetDocShell())));
+ SwCharDlg* pDlg = new SwCharDlg(GetView().GetWindow(), GetView(), aCoreSet);
+ if(FN_INSERT_HYPERLINK == nSlot)
+ pDlg->SetCurPageId(TP_CHAR_URL);
+ if (RET_OK == pDlg->Execute())
+ {
+ SfxItemSet aTmpSet( *pDlg->GetOutputItemSet() );
+ if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_BACKGROUND,
+ FALSE, &pTmpBrush ) )
+ {
+ SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) );
+ aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND );
+ aTmpSet.Put( aTmpBrush );
+ }
+ aTmpSet.ClearItem( RES_BACKGROUND );
+
+ const SfxPoolItem* pItem;
+ BOOL bInsert = FALSE;
+
+ // aus ungeklaerter Ursache ist das alte Item wieder im Set
+ if(!bSelectionPutted && SFX_ITEM_SET == aTmpSet.GetItemState(FN_PARAM_SELECTION, FALSE, &pItem))
+ {
+ String sInsert = ((const SfxStringItem*)pItem)->GetValue();
+ bInsert = sInsert.Len() != 0;
+ if(bInsert)
+ {
+ rWrtSh.StartAction();
+ rWrtSh.Insert( sInsert );
+ rWrtSh.SetMark();
+ rWrtSh.ExtendSelection(FALSE, sInsert.Len());
+ }
+ }
+ SwTxtFmtColl* pColl = rWrtSh.GetCurTxtFmtColl();
+ if(bSel &&
+ rWrtSh.IsSelFullPara() &&
+ pColl && pColl->IsAutoUpdateFmt())
+ {
+ rWrtSh.AutoUpdatePara(pColl, aTmpSet);
+ }
+ else
+ rWrtSh.SetAttr( aTmpSet );
+ if(bInsert)
+ {
+ rWrtSh.SwapPam();
+ rWrtSh.ClearMark();
+ rWrtSh.DontExpandFmt();
+ rWrtSh.EndAction();
+ }
+ }
+ delete pDlg;
+ }
+ }
+ break;
+ case SID_PARA_DLG:
+ {
+ //Damit aus dem Basic keine Dialoge fuer Hintergrund-Views aufgerufen werden:
+ SwView* pView = GetActiveView();
+ if(pView)
+ {
+ FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, pView));
+ SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, eMetric));
+ SfxItemSet aCoreSet( GetPool(),
+ RES_PARATR_BEGIN, RES_PARATR_END - 1,
+ RES_FRMATR_BEGIN, RES_FRMATR_END - 1,
+ SID_ATTR_TABSTOP_POS, SID_ATTR_TABSTOP_POS,
+ SID_ATTR_TABSTOP_DEFAULTS, SID_ATTR_TABSTOP_DEFAULTS,
+ SID_ATTR_TABSTOP_OFFSET, SID_ATTR_TABSTOP_OFFSET,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
+ SID_ATTR_PARA_MODEL, SID_ATTR_PARA_KEEP,
+ SID_ATTR_PARA_PAGENUM, SID_ATTR_PARA_PAGENUM,
+ SID_HTML_MODE, SID_HTML_MODE,
+ FN_PARAM_1, FN_PARAM_1,
+ FN_NUMBER_NEWSTART, FN_NUMBER_NEWSTART_AT,
+ 0);
+ rWrtSh.GetAttr( aCoreSet );
+ aCoreSet.Put(SfxUInt16Item(SID_HTML_MODE,
+ ::GetHtmlMode(GetView().GetDocShell())));
+
+ // Tabulatoren, DefaultTabs ins ItemSet Stecken
+ const SvxTabStopItem& rDefTabs = (const SvxTabStopItem&)
+ GetPool().GetDefaultItem(RES_PARATR_TABSTOP);
+
+ USHORT nDefDist = ::GetTabDist( rDefTabs );
+ SfxUInt16Item aDefDistItem( SID_ATTR_TABSTOP_DEFAULTS, nDefDist );
+ aCoreSet.Put( aDefDistItem );
+
+ // Aktueller Tab
+ SfxUInt16Item aTabPos( SID_ATTR_TABSTOP_POS, 0 );
+ aCoreSet.Put( aTabPos );
+
+ // linker Rand als Offset
+ const long nOff = ((SvxLRSpaceItem&)aCoreSet.Get( RES_LR_SPACE )).
+ GetTxtLeft();
+ SfxInt32Item aOff( SID_ATTR_TABSTOP_OFFSET, nOff );
+ aCoreSet.Put( aOff );
+
+
+ // BoxInfo setzen
+ ::PrepareBoxInfo( aCoreSet, rWrtSh );
+
+ //aktuelles Seitenformat
+ ::SwToSfxPageDescAttr( aCoreSet );
+
+ UINT16 nDefPage = 0;
+ if( pItem )
+ nDefPage = ((SfxUInt16Item *)pItem)->GetValue();
+
+ // Numerierungseigenschaften
+ if(rWrtSh.GetCurNumRule())
+ {
+ aCoreSet.Put(SfxBoolItem(FN_NUMBER_NEWSTART,
+ USHRT_MAX != rWrtSh.IsNodeNumStart()));
+ aCoreSet.Put(SfxUInt16Item(FN_NUMBER_NEWSTART_AT,
+ rWrtSh.IsNodeNumStart()));
+ }
+ SwParaDlg *pDlg = new SwParaDlg( GetView().GetWindow(),
+ GetView(), aCoreSet, DLG_STD,
+ NULL, FALSE, nDefPage );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ // Defaults evtl umsetzen
+ SfxItemSet* pSet = (SfxItemSet*)pDlg->GetOutputItemSet();
+ USHORT nNewDist;
+ if( SFX_ITEM_SET == pSet->GetItemState( SID_ATTR_TABSTOP_DEFAULTS,
+ FALSE, &pItem ) &&
+ nDefDist != (nNewDist = ((SfxUInt16Item*)pItem)->GetValue()) )
+ {
+ SvxTabStopItem aDefTabs( 0, 0 );
+ MakeDefTabs( nNewDist, aDefTabs );
+ rWrtSh.SetDefault( aDefTabs );
+ pSet->ClearItem( SID_ATTR_TABSTOP_DEFAULTS );
+ }
+
+ ::SfxToSwPageDescAttr( rWrtSh, *pSet );
+
+ if( pSet->Count() )
+ {
+ rWrtSh.StartAction();
+ rWrtSh.StartUndo( UNDO_START );
+ if ( SFX_ITEM_SET == pSet->GetItemState(FN_PARAM_1,FALSE,&pItem) )
+ {
+ if ( ((SfxStringItem*)pItem)->GetValue().Len() )
+ rWrtSh.ReplaceDropTxt(((SfxStringItem*)pItem)->GetValue());
+ }
+ rWrtSh.SetAttr( *pSet );
+ rWrtSh.EndUndo( UNDO_END );
+ rWrtSh.EndAction();
+ SwTxtFmtColl* pColl = rWrtSh.GetCurTxtFmtColl();
+ if(pColl && pColl->IsAutoUpdateFmt())
+ {
+ rWrtSh.AutoUpdatePara(pColl, *pSet);
+ }
+ }
+ if(SFX_ITEM_SET == pSet->GetItemState(FN_NUMBER_NEWSTART))
+ {
+ BOOL bStart = ((SfxBoolItem&)pSet->Get(FN_NUMBER_NEWSTART_AT)).GetValue();
+ // das zweite Item muss immer drin sein!
+ USHORT nNumStart = ((SfxUInt16Item&)pSet->Get(FN_NUMBER_NEWSTART_AT)).GetValue();
+ if(!bStart)
+ nNumStart = USHRT_MAX;
+ rWrtSh.SetNodeNumStart(nNumStart);
+ }
+ }
+ delete pDlg;
+ }
+ }
+ break;
+ case FN_SELECT_PARA:
+ {
+ if(!rWrtSh.IsSttOfPara())
+ rWrtSh.SttPara(FALSE);
+ else
+ rWrtSh.EnterStdMode();
+ rWrtSh.EndPara(TRUE);
+ }
+ break;
+
+ case SID_DEC_INDENT:
+ case SID_INC_INDENT:
+ rWrtSh.MoveLeftMargin( SID_INC_INDENT == nSlot,
+ rReq.GetModifier() != KEY_MOD1 );
+ break;
+ case FN_DEC_INDENT_OFFSET:
+ case FN_INC_INDENT_OFFSET:
+ rWrtSh.MoveLeftMargin( FN_INC_INDENT_OFFSET == nSlot,
+ rReq.GetModifier() == KEY_MOD1 );
+ break;
+
+ case SID_ATTR_CHAR_COLOR2:
+ {
+ if(pItem)
+ {
+ Color aSet = ((const SvxColorItem*)pItem)->GetValue();
+ SwView& rView = GetView();
+ SwEditWin& rEditWin = rView.GetEditWin();
+ rEditWin.SetTextColor(aSet);
+ SwApplyTemplate* pApply = rEditWin.GetApplyTemplate();
+ SvxColorItem aItem(aSet, RES_CHRATR_COLOR);
+
+ // besteht eine Selektion, wird sie gleich gefaerbt
+ if(!pApply && rWrtSh.HasSelection())
+ {
+ SvxColorItem aItem(aSet, RES_CHRATR_COLOR);
+ rWrtSh.SetAttr(aItem);
+ }
+ else if(!pApply || pApply->nColor != SID_ATTR_CHAR_COLOR_EXT)
+ {
+ rView.GetViewFrame()->GetDispatcher()->Execute(SID_ATTR_CHAR_COLOR_EXT);
+ }
+
+/* OS 22.02.97 18:40 Das alte Verhalten ist unerwuenscht
+ SwEditWin& rEdtWin = GetView().GetEditWin();
+
+ SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
+ SvxColorItem aItem(aSet, RES_CHRATR_COLOR);
+
+ if(!pApply || pApply->nColor != SID_ATTR_CHAR_COLOR_EXT)
+ {
+ GetShell().SetAttr(aItem);
+ }
+*/
+ }
+ }
+ break;
+ case SID_ATTR_CHAR_COLOR_BACKGROUND:
+ {
+ SwView& rView = GetView();
+ SwEditWin& rEdtWin = rView.GetEditWin();
+ SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
+ rEdtWin.SetTextBackColorTransparent(0 == pItem);
+ Color aSet;
+ if(pItem)
+ {
+ aSet = ((const SvxColorItem*)pItem)->GetValue();
+ rEdtWin.SetTextBackColor(aSet);
+ }
+ if(!pApply && (rWrtSh.HasSelection() || rReq.IsAPI()))
+ {
+ SvxBrushItem aBrushItem(RES_CHRATR_BACKGROUND);
+ if(pItem)
+ aBrushItem.SetColor(aSet);
+ else
+ aBrushItem.SetColor(Color(COL_TRANSPARENT));
+ rWrtSh.SetAttr( aBrushItem );
+ }
+ else if(!pApply || pApply->nColor != SID_ATTR_CHAR_COLOR_BACKGROUND_EXT)
+ {
+ rView.GetViewFrame()->GetDispatcher()->Execute(SID_ATTR_CHAR_COLOR_BACKGROUND_EXT);
+ }
+/* OS 22.02.97 18:40 Das alte Verhalten ist unerwuenscht
+ if(!pApply || pApply->nColor != SID_ATTR_CHAR_COLOR_BACKGROUND_EXT)
+ {
+ Brush aBrush(pItem ? BRUSH_SOLID : BRUSH_NULL);
+ if(pItem)
+ aBrush.SetColor( aSet );
+ GetShell().SetAttr( SvxBrushItem(aBrush, RES_CHRATR_BACKGROUND) );
+ }
+*/
+ }
+ break;
+ case SID_ATTR_CHAR_COLOR_BACKGROUND_EXT:
+ case SID_ATTR_CHAR_COLOR_EXT:
+ {
+ SwEditWin& rEdtWin = GetView().GetEditWin();
+ SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
+ SwApplyTemplate aTempl;
+ BOOL bSelection = rWrtSh.HasSelection();
+ if(bSelection)
+ {
+
+ if(nSlot == SID_ATTR_CHAR_COLOR_BACKGROUND_EXT)
+ {
+ rWrtSh.SetAttr( SvxBrushItem(
+ rEdtWin.GetTextBackColor(), RES_CHRATR_BACKGROUND) );
+ }
+ else
+ rWrtSh.SetAttr( SvxColorItem( rEdtWin.GetTextColor(),
+ RES_CHRATR_COLOR) );
+ }
+ else
+ {
+ if(!pApply || pApply->nColor != nSlot)
+ aTempl.nColor = nSlot;
+ rEdtWin.SetApplyTemplate(aTempl);
+ }
+ }
+ break;
+
+ case FN_NUM_BULLET_MOVEDOWN:
+ if (!rWrtSh.IsAddMode())
+ rWrtSh.MoveParagraph(1);
+ break;
+
+ case FN_NUM_BULLET_MOVEUP:
+ if (!rWrtSh.IsAddMode())
+ rWrtSh.MoveParagraph(-1);
+ break;
+
+ case SID_HYPERLINK_DIALOG:
+ {
+ SfxRequest aReq(SID_HYPERLINK_DIALOG, SFX_CALLMODE_SLOT, SFX_APP()->GetPool());
+ GetView().GetViewFrame()->ExecuteSlot( aReq);
+ }
+ break;
+
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwTextShell::GetState( SfxItemSet &rSet )
+{
+ SwWrtShell &rSh = GetShell();
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case FN_NUM_NUMBERING_ON:
+ case FN_NUM_BULLET_ON:
+ if ( rSh.IsTableMode() )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FN_NUMBER_BULLETS:
+ if ( rSh.IsTableMode() )
+ rSet.DisableItem(nWhich);
+ break;
+
+ case FN_EDIT_FORMULA:
+ case FN_INSERT_SYMBOL:
+ {
+ const int nType = rSh.GetSelectionType();
+ if (!(nType & SwWrtShell::SEL_TXT) &&
+ !(nType & SwWrtShell::SEL_TBL) &&
+ !(nType & SwWrtShell::SEL_NUM))
+ rSet.DisableItem(nWhich);
+ }
+ break;
+
+ case FN_INSERT_ENDNOTE:
+ case FN_INSERT_FOOTNOTE:
+ case FN_INSERT_FOOTNOTE_DLG:
+ {
+ const USHORT nNoType = FRMTYPE_FLY_ANY | FRMTYPE_HEADER |
+ FRMTYPE_FOOTER | FRMTYPE_FOOTNOTE;
+ if ( (rSh.GetFrmType(0,TRUE) & nNoType) )
+ rSet.DisableItem(nWhich);
+ }
+ break;
+ case FN_INSERT_TABLE:
+ if ( rSh.GetTableFmt() ||
+ (rSh.GetFrmType(0,TRUE) & FRMTYPE_FOOTNOTE) )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FN_CALCULATE:
+ if ( !rSh.IsSelection() )
+ rSet.DisableItem(nWhich);
+ break;
+ case FN_GOTO_REFERENCE:
+ {
+ SwField *pFld = rSh.GetCurFld();
+ if ( !pFld || (pFld && pFld->GetTypeId() != TYP_GETREFFLD) )
+ rSet.DisableItem(nWhich);
+ }
+ break;
+ case FN_AUTOFORMAT_AUTO:
+ {
+ rSet.Put( SfxBoolItem( nWhich, OFF_APP()->
+ GetAutoCorrConfig()->IsAutoFmtByInput() ));
+ }
+ break;
+ case FN_GLOSSARY_DLG:
+ {
+ rSet.Put(SfxBoolItem(nWhich), TRUE);
+ }
+ break;
+
+ case SID_DEC_INDENT:
+ case SID_INC_INDENT:
+ {
+ USHORT nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
+ nHtmlMode &= HTMLMODE_ON|HTMLMODE_SOME_STYLES;
+ if( (nHtmlMode == HTMLMODE_ON) || !rSh.IsMoveLeftMargin(
+ SID_INC_INDENT == nWhich, TRUE ))
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case FN_DEC_INDENT_OFFSET:
+ case FN_INC_INDENT_OFFSET:
+ {
+ USHORT nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
+ nHtmlMode &= HTMLMODE_ON|HTMLMODE_SOME_STYLES;
+ if( (nHtmlMode == HTMLMODE_ON) ||
+ !rSh.IsMoveLeftMargin( FN_INC_INDENT_OFFSET == nWhich,
+ FALSE ))
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case SID_ATTR_CHAR_COLOR2:
+ {
+ rSet.Put(SvxColorItem(GetView().GetEditWin().GetTextColor(), SID_ATTR_CHAR_COLOR2));
+ }
+ break;
+ case SID_ATTR_CHAR_COLOR_BACKGROUND:
+ {
+ if(GetView().GetEditWin().IsTextBackColorTransparent())
+ rSet.Put(SvxColorItem(Color(COL_LIGHTGRAY), SID_ATTR_CHAR_COLOR_BACKGROUND));
+ else
+ rSet.Put(SvxColorItem(GetView().GetEditWin().GetTextBackColor(), SID_ATTR_CHAR_COLOR_BACKGROUND));
+ }
+ break;
+ case SID_ATTR_CHAR_COLOR_BACKGROUND_EXT:
+ case SID_ATTR_CHAR_COLOR_EXT:
+ {
+ SwEditWin& rEdtWin = GetView().GetEditWin();
+ SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
+ rSet.Put(SfxBoolItem(nWhich, pApply && pApply->nColor == nWhich));
+ }
+ break;
+ case FN_INSERT_BOOKMARK:
+ if( rSh.IsTableMode() )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FN_INSERT_PAGEHEADER:
+ case FN_INSERT_PAGEFOOTER:
+ {
+#ifndef CHECK_MENU
+ rSet.Put( SfxObjectItem( nWhich, GetView().GetDocShell() ));
+#else
+ // Seitenvorlagen besorgen
+ BOOL bFound = FALSE;
+ USHORT n, nCnt = rSh.GetPageDescCnt();
+ for( n = 0; n < nCnt; ++n )
+ {
+ const SwPageDesc& rDesc = rSh.GetPageDesc( n );
+ if( FN_INSERT_PAGEHEADER == nWhich
+ ? !rDesc.GetMaster().GetHeader().IsActive()
+ : !rDesc.GetMaster().GetFooter().IsActive() )
+ {
+ bFound = TRUE;
+ break;
+ }
+ }
+
+ if( bFound )
+ rSet.Put( SfxObjectItem( nWhich, GetView().GetDocShell() ));
+ else
+ rSet.DisableItem( nWhich );
+#endif
+ }
+ break;
+ case FN_SORTING_DLG:
+ if(!rSh.HasSelection())
+ rSet.DisableItem( nWhich );
+ break;
+ case SID_HYPERLINK_DIALOG:
+ if(!GetView().GetViewFrame()->HasChildWindow(SID_HYPERLINK_DIALOG) && rSh.HasReadonlySel())
+ rSet.DisableItem(SID_HYPERLINK_DIALOG);
+ break;
+ case FN_EDIT_HYPERLINK:
+ {
+ SfxItemSet aSet(GetPool(),
+ RES_TXTATR_INETFMT,
+ RES_TXTATR_INETFMT);
+ rSh.GetAttr(aSet);
+ if(SFX_ITEM_SET > aSet.GetItemState( RES_TXTATR_INETFMT, TRUE ) || rSh.HasReadonlySel())
+ {
+ rSet.DisableItem(FN_EDIT_HYPERLINK);
+ }
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.171 2000/09/18 16:06:06 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.170 2000/09/12 14:11:19 os
+ SfxApplication::ChildWindowExecute removed
+
+ Revision 1.169 2000/09/11 06:52:45 os
+ Get/Set/Has/ToggleChildWindow SfxApplication -> SfxViewFrame
+
+ Revision 1.168 2000/09/08 08:12:52 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.167 2000/09/07 15:59:30 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.166 2000/08/31 11:32:07 jp
+ add missing include
+
+ Revision 1.165 2000/05/26 07:21:33 os
+ old SW Basic API Slots removed
+
+ Revision 1.164 2000/05/10 11:53:02 os
+ Basic API removed
+
+ Revision 1.163 2000/04/18 14:58:24 os
+ UNICODE
+
+ Revision 1.162 2000/04/04 15:11:48 os
+ #74685# hyperlink button only disabled in readonly sections
+
+ Revision 1.161 2000/03/03 15:17:03 os
+ StarView remainders removed
+
+ Revision 1.160 2000/02/11 14:57:58 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.159 2000/01/12 16:43:04 os
+ #71278# edit hyperlink: use the new dialog
+
+ Revision 1.158 2000/01/03 08:38:28 os
+ #71278# edit hyperlink slot
+
+ Revision 1.157 1999/07/08 13:58:46 MA
+ Use internal object to toggle wait cursor
+
+
+ Rev 1.156 08 Jul 1999 15:58:46 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.155 15 Apr 1999 14:02:44 OS
+ #64801# keine Endnoten in Rahmen
+
+ Rev 1.154 23 Mar 1999 18:28:12 JP
+ Bug #63449#: vorm Formeledit alle Zellveraenderungen pruefen
+
+ Rev 1.153 18 Mar 1999 14:41:18 OS
+ #61169# #61489# Masseinheiten fuer Text u. HTML am Module setzen, nicht an der App
+
+ Rev 1.152 05 Feb 1999 17:05:48 OS
+ #61547# InsertEndnoteDirect
+
+ Rev 1.151 15 Jan 1999 15:45:30 JP
+ Bug #60203#: MoveLeftMargin - optional um Betrag verschieben
+
+ Rev 1.150 13 Jan 1999 14:54:02 TJ
+ include
+
+ Rev 1.149 13 Jan 1999 08:14:18 OS
+ #60380# HelpIds fuer AutoFormat - QueryBox
+
+ Rev 1.148 27 Nov 1998 14:55:38 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.147 06 Nov 1998 16:34:50 OS
+ #58450# Fussnoten auch im HTML
+
+ Rev 1.146 21 Oct 1998 10:56:54 OM
+ #57586# Redlining nach Autoformat
+
+ Rev 1.145 20 Oct 1998 17:52:46 OM
+ #57586# Redlining nach Autoformat
+
+ Rev 1.144 20 Oct 1998 11:39:34 OM
+ #57586# Redlining nach Autoformat
+
+ Rev 1.143 30 Sep 1998 14:05:26 OS
+ #52654# C40_Insert
+
+ Rev 1.142 30 Sep 1998 10:28:56 OS
+ #52654# Sortable und SortDescriptor eingebaut, auf- und absteigend fuer jeden Schluessel
+
+ Rev 1.141 08 Sep 1998 17:03:02 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.140 09 Jul 1998 14:04:12 OS
+ Kapitelnumerierung jetzt TabDialog
+
+ Rev 1.139 26 May 1998 15:34:00 JP
+ neu: Kopf-/Fusszeilen per Menu ein-/ausschalten
+
+ Rev 1.138 13 May 1998 14:58:10 OM
+ Autokorrektur/Autoformat umgestaltet und zusammengefasst
+
+ Rev 1.137 08 May 1998 17:02:48 OM
+ AutoFormat-Optionen an Ofa und Svx verschoben
+
+ Rev 1.136 07 May 1998 12:58:40 OM
+ AutoFormat-Optionen Umstellung
+
+ Rev 1.135 12 Mar 1998 13:08:00 OS
+ Numerierungsbutton nicht mehr gecheckt und nicht disabled
+
+ Rev 1.134 04 Mar 1998 14:16:26 OM
+ Dokument Merge/Compare
+
+ Rev 1.133 05 Feb 1998 14:46:26 OS
+ Numerierungsstart nur bei gesetzer Numerierung putten
+
+ Rev 1.132 02 Feb 1998 09:12:52 OS
+ neue Num-Tabpage
+
+ Rev 1.131 12 Dec 1997 13:57:36 OS
+ neuer Bookmark-Typ
+
+ Rev 1.130 03 Dec 1997 17:02:34 OS
+ Numerierungsumbau
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/shells/textsh2.cxx b/sw/source/ui/shells/textsh2.cxx
new file mode 100644
index 000000000000..8e869ff3481b
--- /dev/null
+++ b/sw/source/ui/shells/textsh2.cxx
@@ -0,0 +1,777 @@
+/*************************************************************************
+ *
+ * $RCSfile: textsh2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#if STLPORT_VERSION>=321
+#include <cstdarg>
+#endif
+
+#include <svtools/svmedit.hxx>
+#ifndef _SBASLTID_HRC //autogen
+#include <offmgr/sbasltid.hrc>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFXEVENT_HXX //autogen
+#include <sfx2/event.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifdef REPLACE_OFADBMGR
+#ifndef _SFXITEMSET_HXX
+#include <svtools/itemset.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX
+#include <sfx2/request.hxx>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XDATASOURCE_HPP_
+#include <com/sun/star/sdbc/XDataSource.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XTABLESSUPPLIER_HPP_
+#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XCOLUMNSSUPPLIER_HPP_
+#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XQUERIESSUPPLIER_HPP_
+#include <com/sun/star/sdb/XQueriesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XDATABASEACCESS_HPP_
+#include <com/sun/star/sdb/XDatabaseAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+
+#else
+
+#endif //REPLACE_OFADBMGR
+
+#include "dbmgr.hxx"
+
+
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "swtypes.hxx"
+#include "cmdid.h"
+#include "swevent.hxx"
+#include "shells.hrc"
+#include "mailmrge.hxx"
+#include "textsh.hxx"
+#include "dbinsdlg.hxx"
+
+#ifdef REPLACE_OFADBMGR
+using namespace rtl;
+using namespace com::sun::star;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::container;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::sdb;
+using namespace com::sun::star::sdbc;
+using namespace com::sun::star::sdbcx;
+using namespace com::sun::star::beans;
+
+#define C2U(cChar) rtl::OUString::createFromAscii(cChar)
+#endif
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+#define DB_DD_DELIM 0x0b
+
+#ifdef DEBUG
+// the addressbook doesn't support the new api yet (593)
+#ifdef REPLACE_OFADBMGR
+void lcl_ReplaceDataSource(String& sDBName, String& sTblName, String& sStatmnt)
+{
+ Reference<XNameAccess> xDBContext;
+ Reference< XMultiServiceFactory > xMgr( ::utl::getProcessServiceFactory() );
+ if( xMgr.is() )
+ {
+ Reference<XInterface> xInstance = xMgr->createInstance( C2U( "com.sun.star.sdb.DatabaseContext" ));
+ xDBContext = Reference<XNameAccess>(xInstance, UNO_QUERY) ;
+ }
+ DBG_ASSERT(xDBContext.is(), "com.sun.star.sdb.DataBaseContext: service not available")
+ if(!xDBContext.is())
+ return;
+ Sequence<OUString> aDBNames = xDBContext->getElementNames();
+ const OUString* pDBNames = aDBNames.getConstArray();
+ long nCount = aDBNames.getLength();
+ DBG_ASSERT(nCount, "no data source available")
+ if(!nCount)
+ return;
+ sDBName = pDBNames[0];
+
+ Any aDBSource = xDBContext->getByName(sDBName);
+ Reference<XDataSource>* pxSource = (Reference<XDataSource>*)aDBSource.getValue();
+
+ Reference<sdbc::XConnection> xConnection;
+ try
+ {
+ OUString sDummy;
+ xConnection = (*pxSource)->getConnection(sDummy, sDummy);
+ }
+ catch(...) {}
+ DBG_ASSERT(xConnection.is(), "no connection found")
+ if (xConnection.is())
+ {
+ Reference<XTablesSupplier> xTSupplier = Reference<XTablesSupplier>(xConnection, UNO_QUERY);
+ DBG_ASSERT(xTSupplier.is(), "no tables found")
+ if(xTSupplier.is())
+ {
+ Reference<XNameAccess> xTbls = xTSupplier->getTables();
+ Sequence<OUString> aTblNames = xTbls->getElementNames();
+ long nCount = aTblNames.getLength();
+ DBG_ASSERT(nCount, "no table found")
+ const OUString* pTblNames = aTblNames.getConstArray();
+ sTblName = pTblNames[2];
+ sStatmnt = String::CreateFromAscii("select * from ");
+ String sQuote = xConnection->getMetaData()->getIdentifierQuoteString();
+ sStatmnt += sQuote;
+ sStatmnt += sTblName;
+ sStatmnt += sQuote;
+ }
+ }
+}
+#endif // REPLACE_OFADBMGR
+#endif // DEBUG
+
+inline void AddSelList( List& rLst, long nRow )
+{
+ rLst.Insert( (void*)nRow , LIST_APPEND );
+}
+
+void lcl_QRY_UPDATE( const SfxItemSet *pArgs, SwNewDBMgr *pNewDBMgr,
+ SwWrtShell &rSh, USHORT nSlot )
+{
+ DBG_ASSERT( pArgs, "arguments expected" );
+ if (pArgs)
+ {
+ SbaSelectionListRef pSelectionList;
+
+ const SfxStringItem &rDBNameItem = (const SfxStringItem&) pArgs->Get(SID_ATTR_SBA_DATABASE);
+ const SfxStringItem &rTableNameItem = (const SfxStringItem&) pArgs->Get(SID_ATTR_SBA_DBOBJ_NAME);
+ const SfxStringItem &rStatementItem = (const SfxStringItem&) pArgs->Get(SID_ATTR_SBA_STATEMENT);
+ DBG_ASSERT( rStatementItem.ISA(SfxStringItem), "invalid argument type" );
+
+ const SbaSelectionItem &rSelectionItem = (const SbaSelectionItem&) pArgs->Get(SID_ATTR_SBA_SELECTION);
+ pSelectionList = rSelectionItem.GetSelectionList();
+
+
+ String sDBName(rDBNameItem.GetValue());
+ String sTableName(rTableNameItem.GetValue());
+ String sStatement(rStatementItem.GetValue());
+
+#ifdef DEBUG
+// the addressbook doesn't support the new api yet (593)
+#ifdef REPLACE_OFADBMGR
+ lcl_ReplaceDataSource(sDBName, sTableName, sStatement);
+#endif
+#endif // DEBUG
+
+#ifdef REPLACE_OFADBMGR
+#else
+ if(sTableName.Len())
+ {
+ sDBName += DB_DELIM;
+ sDBName += rTableNameItem.GetValue();
+ }
+#endif
+ pNewDBMgr->SetMergeType( DBMGR_MERGE );
+#ifdef REPLACE_OFADBMGR
+ pNewDBMgr->Merge(DBMGR_MERGE, &rSh,
+ sStatement, pSelectionList, sDBName, sTableName);
+#else
+ pNewDBMgr->Merge(DBMGR_MERGE, &rSh,
+ sStatement, pSelectionList, sDBName);
+#endif
+ }
+}
+
+/* ---------------------------------------------------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwBaseShell::ExecDB(SfxRequest &rReq)
+{
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ SwNewDBMgr* pNewDBMgr = GetShell().GetNewDBMgr();
+ USHORT nSlot = rReq.GetSlot();
+
+ switch (nSlot)
+ {
+ case SID_SBA_BRW_MERGE:
+ {
+ String sDBName;
+ String sTableName;
+ String sStatement;
+ SbaSelectionListRef xSelectionList;
+ if (pArgs)
+ {
+ const SfxStringItem &rDBNameItem = (const SfxStringItem&) pArgs->Get(SID_ATTR_SBA_DATABASE);
+ sDBName = rDBNameItem.GetValue();
+ const SfxStringItem &rTableNameItem = (const SfxStringItem&) pArgs->Get(SID_ATTR_SBA_DBOBJ_NAME);
+ sTableName = rTableNameItem.GetValue();
+ sStatement = ((const SfxStringItem&) pArgs->Get(SID_ATTR_SBA_STATEMENT)).GetValue();
+ const SbaSelectionItem &rSelectionItem = (const SbaSelectionItem&) pArgs->Get(SID_ATTR_SBA_SELECTION);
+ xSelectionList = rSelectionItem.GetSelectionList();
+ }
+#ifdef REPLACE_OFADBMGR
+#ifdef DEBUG
+ {
+ sDBName = C2S("Nordwind");
+ sTableName = C2S("Artikel");
+ sStatement = C2S("select * from Artikel");
+ }
+#endif //DEBUG
+#endif //REPLACE_OFADBMGR
+#ifdef REPLACE_OFADBMGR
+#else
+ else
+ break;
+#endif
+ if ( !xSelectionList.Is() )
+ xSelectionList = new SbaSelectionList;
+
+#ifdef REPLACE_OFADBMGR
+#else
+ if (sTableName.Len())
+ {
+ sDBName += DB_DELIM;
+ sDBName += sTableName;
+ }
+#endif
+
+ SwMailMergeDlg* pDlg = new SwMailMergeDlg(
+ NULL, GetShellPtr(),
+ sDBName,
+#ifdef REPLACE_OFADBMGR
+ sTableName,
+#endif
+ sStatement, xSelectionList );
+
+ if (pDlg->Execute() == RET_OK)
+ {
+ pNewDBMgr->SetMergeType( pDlg->GetMergeType() );
+
+ OFF_APP()->NotifyEvent(SfxEventHint(SW_EVENT_MAIL_MERGE, GetView().GetViewFrame()->GetObjectShell()));
+
+#ifdef REPLACE_OFADBMGR
+ pNewDBMgr->Merge(pNewDBMgr->GetMergeType(),
+ GetShellPtr(), sStatement,
+ xSelectionList,
+ sDBName,
+ sTableName);
+#else
+ pNewDBMgr->Merge(pNewDBMgr->GetMergeType(),
+ GetShellPtr(), sStatement,
+ xSelectionList, sDBName);
+#endif
+ delete(pDlg);
+ }
+ }
+ break;
+
+ case SID_SBA_BRW_UPDATE:
+ lcl_QRY_UPDATE( pArgs, pNewDBMgr, GetShell(), nSlot );
+ break;
+
+ case SID_SBA_BRW_INSERT:
+ DBG_ASSERT( pArgs, "arguments expected" );
+ if( pArgs )
+ {
+ String sDBName = ((SfxStringItem&)pArgs->Get(
+ SID_ATTR_SBA_DATABASE)).GetValue();
+ String sTblName = ((SfxStringItem&)pArgs->Get(
+ SID_ATTR_SBA_DBOBJ_NAME)).GetValue();
+ String sStatmnt = ((SfxStringItem&)pArgs->Get(
+ SID_ATTR_SBA_STATEMENT)).GetValue();
+ SbaSelectionListRef xSelectionList( ((SbaSelectionItem&)
+ pArgs->Get(SID_ATTR_SBA_SELECTION)).GetSelectionList());
+
+#ifdef DEBUG
+// the addressbook doesn't support the new api yet (593)
+#ifdef REPLACE_OFADBMGR
+ lcl_ReplaceDataSource(sDBName, sTblName, sStatmnt);
+#endif
+#endif // DEBUG
+
+ String* pDataStr = new String( sDBName );
+ ((((((*pDataStr) += char(DB_DD_DELIM) )
+ += sTblName ) += char(DB_DD_DELIM) )
+ += '0' ) += char(DB_DD_DELIM) ) // Flag fuer Tabelle oder Query - unused!
+ += sStatmnt;
+
+ if( xSelectionList.Is() )
+ for( ULONG n = 0, nEnd = xSelectionList->Count();
+ n < nEnd; ++n )
+ ((*pDataStr) += char(DB_DD_DELIM) )
+ += String::CreateFromInt32(
+ (long)xSelectionList->GetObject( n ));
+
+ SwBaseShell::InsertDBTextHdl( this, pDataStr );
+ // der String wird im InsertDBTextHdl geloescht !!
+ }
+ break;
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
+ }
+}
+
+
+
+void SwTextShell::ExecDB(SfxRequest &rReq)
+{
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ SwNewDBMgr* pNewDBMgr = GetShell().GetNewDBMgr();
+ USHORT nSlot = rReq.GetSlot();
+
+ switch (nSlot)
+ {
+ case FN_QRY_INSERT:
+ {
+ String* pNew = new String( ((const SfxStringItem&)pArgs->
+ Get(nSlot)).GetValue() );
+ Application::PostUserEvent( STATIC_LINK( this, SwBaseShell,
+ InsertDBTextHdl ), pNew );
+ // der String wird im InsertDBTextHdl geloescht !!
+ }
+ break;
+
+ case FN_QRY_MERGE_FIELD:
+ {
+ String sSbaData = ((const SfxStringItem&)pArgs->Get(nSlot)).GetValue();
+ String sDBName = sSbaData.GetToken(0, DB_DD_DELIM);
+#ifdef REPLACE_OFADBMGR
+ String sTableName(sSbaData.GetToken(1, DB_DD_DELIM));
+#else
+ sDBName += DB_DELIM;
+ sDBName += sSbaData.GetToken(1, DB_DD_DELIM);
+#endif
+ BOOL bTable = sSbaData.GetToken(2, DB_DD_DELIM) == C2S("1");
+ String sStatement = sSbaData.GetToken(3, DB_DD_DELIM);
+
+ SbaSelectionListRef pSelectionList;
+ pSelectionList.Clear();
+ pSelectionList = new SbaSelectionList;
+ USHORT nCount = sSbaData.GetTokenCount(DB_DD_DELIM);
+
+ for( USHORT i = 4; i < nCount; i++ )
+ AddSelList( *pSelectionList,
+ sSbaData.GetToken( i, DB_DD_DELIM).ToInt32() );
+
+ pNewDBMgr->SetMergeType( DBMGR_MERGE );
+#ifdef REPLACE_OFADBMGR
+ pNewDBMgr->Merge(DBMGR_MERGE,
+ GetShellPtr(), sStatement,
+ pSelectionList, sDBName, sTableName);
+#else
+ pNewDBMgr->Merge(DBMGR_MERGE,
+ GetShellPtr(), sStatement,
+ pSelectionList, sDBName);
+#endif
+ }
+ break;
+
+ case FN_QRY_INSERT_FIELD:
+ {
+ String sSbaData = ((const SfxStringItem&)pArgs->Get(FN_QRY_INSERT_FIELD)).GetValue();
+
+ String sDBName = sSbaData.GetToken(0, DB_DD_DELIM);
+ sDBName += DB_DELIM;
+ sDBName += sSbaData.GetToken(1, DB_DD_DELIM);
+ sDBName += DB_DELIM;
+ BOOL bTable = sSbaData.GetToken(2, DB_DD_DELIM) == C2S("1");
+ sDBName += sSbaData.GetToken(3, DB_DD_DELIM); // Column name
+
+ InsertDBFld(sDBName);
+ }
+ break;
+
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+IMPL_STATIC_LINK( SwBaseShell, InsertDBTextHdl, String*, pString )
+{
+ if( pString )
+ {
+
+#ifdef REPLACE_OFADBMGR
+ USHORT nTokenPos = 0;
+ String sSourceName( pString->GetToken( 0, DB_DD_DELIM, nTokenPos ));
+ String sTblQryName( pString->GetToken( 0, DB_DD_DELIM, nTokenPos ));
+ String sStatmnt( pString->GetToken( 1, DB_DD_DELIM, nTokenPos ));
+
+ Reference<XDataSource> xSource;
+ Reference< sdbc::XConnection> xConnection = SwNewDBMgr::GetConnection(sSourceName, xSource);
+ Reference< XColumnsSupplier> xColSupp;
+ if(xConnection.is())
+ xColSupp = SwNewDBMgr::GetColumnSupplier(xConnection,
+ sTblQryName,
+ SW_DB_SELECT_UNKNOWN);
+
+ if( xColSupp.is() )
+ {
+ SwInsDBData aDBData;
+ aDBData.sDataBaseName = sSourceName;
+ aDBData.sDataTableName = sTblQryName;
+ aDBData.sStatement = sStatmnt;
+ SwInsertDBColAutoPilot *pDlg = new SwInsertDBColAutoPilot(
+ pThis->GetView(),
+ xSource,
+ xColSupp,
+ aDBData );
+ if( RET_OK == pDlg->Execute() )
+ {
+ SbaSelectionList aSelectionList;
+ while( nTokenPos < pString->Len() )
+ AddSelList( aSelectionList,
+ pString->GetToken( 0, DB_DD_DELIM, nTokenPos ).ToInt32() );
+ pDlg->DataToDoc( &aSelectionList , xSource, xConnection);
+ }
+// else
+// rSh.ChgDBName( sOldDBName );
+ delete pDlg;
+ }
+// else
+// rSh.ChgDBName( sOldDBName );
+#else
+ USHORT nTokenPos = 0;
+ String sDBName( pString->GetToken( 0, DB_DD_DELIM, nTokenPos ));
+ ( sDBName += DB_DELIM ) +=
+ pString->GetToken( 0, DB_DD_DELIM, nTokenPos );
+ String sStatmnt( pString->GetToken( 1, DB_DD_DELIM, nTokenPos ));
+
+ SbaSelectionList aSelectionList;
+ while( nTokenPos < pString->Len() )
+ AddSelList( aSelectionList,
+ pString->GetToken( 0, DB_DD_DELIM, nTokenPos ).ToInt32() );
+
+ SwWrtShell& rSh = pThis->GetShell();
+ SwNewDBMgr* pNewDBMgr = rSh.GetNewDBMgr();
+ String sOldDBName( rSh.GetDBName() );
+ ( sDBName += ';' ) += sStatmnt;
+ rSh.ChgDBName( sDBName );
+
+ if( pNewDBMgr->OpenDB( DBMGR_STD, rSh.GetDBDesc() ) )
+ {
+ pNewDBMgr->ChangeStatement( DBMGR_STD, sStatmnt );
+
+ SwInsertDBColAutoPilot *pDlg = new SwInsertDBColAutoPilot(
+ pThis->GetView() );
+ if( pDlg->HasValidDB() && RET_OK == pDlg->Execute() )
+ {
+ // dann jetzt ueber den DBManager die Selektierten
+ // Daten ins Dokument einfuegen.
+ pDlg->DataToDoc( &aSelectionList );
+ }
+ else
+ rSh.ChgDBName( sOldDBName );
+ delete pDlg;
+ pNewDBMgr->CloseAll();
+ }
+ else
+ rSh.ChgDBName( sOldDBName );
+#endif
+ }
+
+ delete pString;
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.115 2000/09/18 16:06:06 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.114 2000/07/18 12:50:09 os
+ replace ofadbmgr
+
+ Revision 1.113 2000/07/07 15:25:43 os
+ replace ofadbmgr
+
+ Revision 1.112 2000/07/06 07:59:11 os
+ replace ofadbmgr
+
+ Revision 1.111 2000/07/05 08:22:09 os
+ Replace ofadbmgr
+
+ Revision 1.110 2000/06/07 13:18:20 os
+ using UCB
+
+ Revision 1.109 2000/05/26 07:21:33 os
+ old SW Basic API Slots removed
+
+ Revision 1.108 2000/05/23 19:29:09 jp
+ Bugfixes for Unicode
+
+ Revision 1.107 2000/05/10 11:53:02 os
+ Basic API removed
+
+ Revision 1.106 2000/04/18 14:58:24 os
+ UNICODE
+
+ Revision 1.105 2000/02/11 14:58:04 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.104 2000/01/06 07:32:58 os
+ #71436# mail merge dialog: execute via status method disposed
+
+ Revision 1.103 1999/11/11 15:00:55 hr
+ #65293#: STLPORT 3.2.1
+
+ Revision 1.102 1999/09/29 07:00:54 mh
+ chg: header
+
+ Revision 1.101 1999/03/01 15:22:38 MA
+ #62490# Altlast entfernt (Drucken und Briefumschlaege/Etiketten und Datenbank)
+
+
+ Rev 1.100 01 Mar 1999 16:22:38 MA
+ #62490# Altlast entfernt (Drucken und Briefumschlaege/Etiketten und Datenbank)
+
+ Rev 1.99 26 Feb 1999 16:08:42 MA
+ #62490# Rest vom Drucken Etiketten entfernt
+
+ Rev 1.98 12 Oct 1998 10:16:12 OM
+ #57790# Dialog nicht mehr AppModal
+
+ Rev 1.97 28 May 1998 17:09:54 JP
+ Auch beim Droppen von Datensaetzen als Text den neuen DBInsertDialog starten
+
+ Rev 1.96 20 May 1998 21:32:32 JP
+ InsertDBCols als Text: rufe den neuen Autopiloten
+
+ Rev 1.95 09 Dec 1997 12:31:08 OM
+ #45200# Serienbrief: Speichern-Monitor
+
+ Rev 1.94 02 Dec 1997 19:38:24 MA
+ #45900#, SelectionList muss fuer Dialog existieren
+
+ Rev 1.93 24 Nov 1997 09:46:52 MA
+ includes
+
+ Rev 1.92 18 Nov 1997 14:45:22 OM
+ Sba-Umstellung 372
+
+ Rev 1.91 03 Nov 1997 13:55:42 MA
+ precomp entfernt
+
+ Rev 1.90 08 Sep 1997 11:12:38 OM
+ #43152# SingleJob-Parameter fuer DataUpdatePrint
+
+ Rev 1.89 02 Sep 1997 14:58:36 OM
+ Neue Parameter fuer DataUpdatePrint
+
+ Rev 1.88 02 Sep 1997 09:58:00 OM
+ SDB-Headeranpassung
+
+ Rev 1.87 01 Sep 1997 13:23:56 OS
+ DLL-Umstellung
+
+ Rev 1.86 06 Aug 1997 14:37:02 TRI
+ VCL: includes
+
+ Rev 1.85 11 Jul 1997 14:46:36 OM
+ #41525# Nur durch SQL-Statement eingeschraenkte Datensaetze verwenden
+
+ Rev 1.84 09 Jun 1997 17:23:16 OM
+ Serienbriefe als Dateien speichern
+
+ Rev 1.83 29 Apr 1997 16:19:48 OM
+ Druckdialog bei Aufruf aus Basic unterdruecken
+
+ Rev 1.82 07 Apr 1997 17:45:56 MH
+ chg: header
+
+ Rev 1.81 09 Mar 1997 15:51:36 OM
+ Basic abgesichert
+
+ Rev 1.80 24 Feb 1997 16:54:02 OS
+ Item mit Tabellenname auswerten
+
+ Rev 1.79 13 Feb 1997 22:59:16 MA
+ Datenbankfunktionalitaet wieder hergestellt
+
+ Rev 1.78 12 Feb 1997 16:57:48 OM
+ Datenbankslots ueber Baseshell rufen
+
+ Rev 1.77 12 Feb 1997 10:40:46 OM
+ Endlosschleife behoben
+
+ Rev 1.76 12 Feb 1997 09:22:44 OM
+ DD-Trenner korrigiert
+
+ Rev 1.75 09 Feb 1997 15:09:34 OM
+ Anderer Trenner bei DB Drag u. Drop
+
+ Rev 1.74 07 Feb 1997 17:20:36 OM
+ Datenbankumstellung Drag u. Drop
+
+ Rev 1.73 16 Dec 1996 10:59:02 OM
+ Drucken aus DB-Browser angefangen
+
+ Rev 1.72 11 Dec 1996 10:50:56 MA
+ Warnings
+
+ Rev 1.71 01 Dec 1996 19:30:28 sdo
+ GCC-Parser
+
+ Rev 1.70 12 Nov 1996 16:50:58 MA
+ richtige Versionen gemerged
+
+ Rev 1.68 08 Nov 1996 17:40:14 OM
+ DB-Mode fuer Serienbriefe und Etiketten zum Teil wiederbelebt
+
+ Rev 1.67 24 Oct 1996 13:36:40 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.66 25 Sep 1996 14:12:10 OM
+ Neue Datenbanktrenner
+
+ Rev 1.65 19 Sep 1996 14:32:52 OM
+ Datenbank Basicanbindung
+
+ Rev 1.64 18 Sep 1996 10:44:58 OM
+ Serienbriefe wieder angebunden
+
+ Rev 1.63 13 Sep 1996 15:47:16 OM
+ Serienbrief
+
+ Rev 1.62 06 Sep 1996 12:31:42 OM
+ Statusmethode fuer DB-Slot
+
+ Rev 1.61 28 Aug 1996 15:54:58 OS
+ includes
+
+ Rev 1.60 23 Aug 1996 15:51:56 OM
+ Datenbank: Drag&Drop
+
+ Rev 1.59 23 Aug 1996 14:48:00 OM
+ Datenbank: Drag&Drop
+
+ Rev 1.58 21 Aug 1996 14:51:52 OM
+ Datenbank Drag&Drop
+
+ Rev 1.57 07 Aug 1996 16:24:24 OM
+ Datenbankumstellung
+
+ Rev 1.56 19 Jul 1996 16:10:14 OM
+ SBA-Umstellung
+
+ Rev 1.55 17 Jul 1996 13:47:40 OM
+ Datenbankumstellung 327
+
+ Rev 1.54 02 Jul 1996 16:36:20 OM
+ #28615# Makroausfuehrung auch bei Serienbriefdruck
+
+ Rev 1.53 04 Jun 1996 14:11:22 OM
+ Serienbrief Mailing
+
+ Rev 1.52 06 May 1996 17:39:34 OM
+ Mehrere Datenbanken pro Dokument
+
+ Rev 1.51 30 Apr 1996 09:24:34 OM
+ Mehrere Datenbanken pro Dok
+
+------------------------------------------------------------------------*/
+
+
+
+
diff --git a/sw/source/ui/shells/txtattr.cxx b/sw/source/ui/shells/txtattr.cxx
new file mode 100644
index 000000000000..827db9725fbe
--- /dev/null
+++ b/sw/source/ui/shells/txtattr.cxx
@@ -0,0 +1,875 @@
+/*************************************************************************
+ *
+ * $RCSfile: txtattr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_ADJITEM_HXX //autogen
+#include <svx/adjitem.hxx>
+#endif
+#ifndef _SVX_LSPCITEM_HXX //autogen
+#include <svx/lspcitem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_ESCPITEM_HXX //autogen
+#include <svx/escpitem.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+
+
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#include "cmdid.h"
+#include "docsh.hxx"
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "viewopt.hxx"
+#include "uitool.hxx"
+#include "uiitems.hxx"
+#include "textsh.hxx"
+#include "drpcps.hxx"
+#include "num.hxx"
+#include "swundo.hxx"
+#include "fmtcol.hxx"
+
+#include "globals.h"
+#include "shells.hrc"
+
+const SwTwips lFontInc = 2 * 20; // ==> PointToTwips(2)
+const SwTwips lFontMaxSz = 72 * 20; // ==> PointToTwips(72)
+
+
+
+
+
+void SwTextShell::ExecCharAttr(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ int eState = STATE_TOGGLE;
+ USHORT nWhich = rReq.GetSlot();
+
+ if(pArgs )
+ {
+ const SfxPoolItem* pItem;
+ pArgs->GetItemState(nWhich, FALSE, &pItem);
+ eState = ((const SfxBoolItem &) pArgs->
+ Get( nWhich )).GetValue() ? STATE_ON : STATE_OFF;
+ }
+
+
+ SfxItemSet aSet( GetPool(), RES_CHRATR_BEGIN, RES_CHRATR_END-1 );
+ if (STATE_TOGGLE == eState)
+ rSh.GetAttr( aSet );
+
+ switch ( nWhich )
+ {
+ case FN_SET_SUB_SCRIPT:
+ case FN_SET_SUPER_SCRIPT:
+ {
+ SvxEscapement eEscape;
+ switch (eState)
+ {
+ case STATE_TOGGLE:
+ {
+ short nTmpEsc = ((const SvxEscapementItem&)
+ aSet.Get( RES_CHRATR_ESCAPEMENT )).GetEsc();
+ eEscape = nWhich == FN_SET_SUPER_SCRIPT ?
+ SVX_ESCAPEMENT_SUPERSCRIPT:
+ SVX_ESCAPEMENT_SUBSCRIPT;
+ if( nWhich == FN_SET_SUB_SCRIPT && nTmpEsc < 0 ||
+ nWhich == FN_SET_SUPER_SCRIPT && nTmpEsc > 0 )
+ eEscape = SVX_ESCAPEMENT_OFF;
+
+ SfxBindings& rBind = GetView().GetViewFrame()->GetBindings();
+ if( nWhich == FN_SET_SUB_SCRIPT )
+ rBind.SetState( SfxBoolItem( FN_SET_SUPER_SCRIPT,
+ FALSE ) );
+ else
+ rBind.SetState( SfxBoolItem( FN_SET_SUB_SCRIPT,
+ FALSE ) );
+
+ }
+ break;
+ case STATE_ON:
+ eEscape = nWhich == FN_SET_SUPER_SCRIPT ?
+ SVX_ESCAPEMENT_SUPERSCRIPT:
+ SVX_ESCAPEMENT_SUBSCRIPT;
+ break;
+ case STATE_OFF:
+ eEscape = SVX_ESCAPEMENT_OFF;
+ break;
+ }
+ SvxEscapementItem aEscape( eEscape );
+ if(eEscape == SVX_ESCAPEMENT_SUPERSCRIPT)
+ aEscape.GetEsc() = DFLT_ESC_AUTO_SUPER;
+ else if(eEscape == SVX_ESCAPEMENT_SUBSCRIPT)
+ aEscape.GetEsc() = DFLT_ESC_AUTO_SUB;
+ if(eState != STATE_OFF )
+ {
+ if(eEscape == FN_SET_SUPER_SCRIPT)
+ aEscape.GetEsc() *= -1;
+ }
+ rSh.SetAttr( aEscape );
+ }
+ break;
+
+ case FN_UPDATE_STYLE_BY_EXAMPLE:
+ rSh.QuickUpdateStyle();
+ break;
+ case FN_UNDERLINE_DOUBLE:
+ {
+ FontUnderline eUnderline = ((const SvxUnderlineItem&)
+ aSet.Get(RES_CHRATR_UNDERLINE)).GetUnderline();
+ switch( eState )
+ {
+ case STATE_TOGGLE:
+ eUnderline = eUnderline == UNDERLINE_DOUBLE ?
+ UNDERLINE_NONE :
+ UNDERLINE_DOUBLE;
+ break;
+ case STATE_ON:
+ eUnderline = UNDERLINE_DOUBLE;
+ break;
+ case STATE_OFF:
+ eUnderline = UNDERLINE_NONE;
+ break;
+ }
+ rSh.SetAttr(SvxUnderlineItem(eUnderline));
+ }
+ break;
+ default:
+ ASSERT(FALSE, falscher Dispatcher);
+ return;
+ }
+}
+
+
+
+void SwTextShell::ExecCharButtonAttr(SfxRequest &rReq)
+{
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ if (pArgs)
+ {
+ SwWrtShell& rWrtSh = GetShell();
+ SwTxtFmtColl* pColl = rWrtSh.GetCurTxtFmtColl();
+ if(rWrtSh.HasSelection() &&
+ rWrtSh.IsSelFullPara() &&
+ pColl && pColl->IsAutoUpdateFmt())
+ {
+ rWrtSh.AutoUpdatePara(pColl, *pArgs);
+ }
+ else
+ rWrtSh.SetAttr(*pArgs);
+
+ }
+}
+
+
+
+void SwTextShell::ExecCharAttrArgs(SfxRequest &rReq)
+{
+ int nSlot = rReq.GetSlot();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ BOOL bArgs = pArgs != 0 && pArgs->Count() > 0;
+ int bGrow = FALSE;
+ SwWrtShell& rWrtSh = GetShell();
+ SwTxtFmtColl* pColl = 0;
+ // nur gesetzt, wenn gesamter Absatz selektiert ist und AutoUpdateFmt gesetzt ist
+ if(rWrtSh.HasSelection() &&
+ rWrtSh.IsSelFullPara())
+ {
+ pColl = rWrtSh.GetCurTxtFmtColl();
+ if(pColl && !pColl->IsAutoUpdateFmt())
+ pColl = 0;
+ }
+ USHORT nWhich = GetPool().GetWhich(nSlot);
+ switch ( nSlot )
+ {
+ case FN_TXTATR_INET:
+ // Sonderbehandlung der PoolId des SwFmtInetFmt
+ if(bArgs)
+ {
+ const SfxPoolItem& rItem = pArgs->Get(nWhich );
+
+ SwFmtINetFmt aINetFmt((const SwFmtINetFmt&)rItem);
+ if( USHRT_MAX == aINetFmt.GetVisitedFmtId() )
+ {
+ aINetFmt.SetVisitedFmtId(
+ rWrtSh.GetPoolId( aINetFmt.GetVisitedFmt(), GET_POOLID_CHRFMT));
+ }
+ if( USHRT_MAX == aINetFmt.GetINetFmtId() )
+ {
+ aINetFmt.SetINetFmtId(
+ rWrtSh.GetPoolId( aINetFmt.GetINetFmt(), GET_POOLID_CHRFMT));
+ }
+
+
+ if ( pColl )
+ pColl->SetAttr( aINetFmt );
+ else rWrtSh.SetAttr( aINetFmt );
+ }
+ break;
+ case SID_ATTR_CHAR_WORDLINEMODE:
+ case SID_ATTR_CHAR_CASEMAP:
+ case SID_ATTR_CHAR_LANGUAGE:
+ case SID_ATTR_CHAR_KERNING:
+ if( bArgs )
+ {
+ const SfxPoolItem& rItem = pArgs->Get(nWhich );
+ if ( pColl ) pColl->SetAttr( rItem );
+ else rWrtSh.SetAttr( rItem );
+ }
+ break;
+ case FN_GROW_FONT_SIZE:
+ bGrow = TRUE;
+ // kein break !!
+ case FN_SHRINK_FONT_SIZE:
+ {
+ SfxItemSet aSet( GetPool(), RES_CHRATR_FONTSIZE, RES_CHRATR_FONTSIZE);
+ rWrtSh.GetAttr( aSet );
+ SvxFontHeightItem aSize( (const SvxFontHeightItem&)
+ aSet.Get(RES_CHRATR_FONTSIZE) );
+
+ SwTwips lSize = (SwTwips) aSize.GetHeight();
+
+ if (bGrow)
+ {
+ if( lSize == lFontMaxSz )
+ break; // das wars, hoeher gehts nicht
+ if( ( lSize += lFontInc ) > lFontMaxSz )
+ lSize = lFontMaxSz;
+ }
+ else
+ {
+ if( 4 == lSize )
+ break;
+ if( ( lSize -= lFontInc ) < 4 )
+ lSize = 4;
+ }
+ aSize.SetHeight( lSize );
+ aSet.Put( aSize );
+ if (pColl) pColl->SetAttr(aSet);
+ else rWrtSh.SetAttr( aSet );
+ }
+ break;
+ default:
+ ASSERT(FALSE, falscher Dispatcher);
+ return;
+ }
+}
+
+
+
+#ifdef CFRONT
+
+void lcl_SetAdjust(SvxAdjust eAdjst, SfxItemSet& rSet)
+{
+ rSet.Put(SvxAdjustItem(eAdjst,RES_PARATR_ADJUST ));
+}
+
+
+
+void lcl_SetLineSpace(BYTE ePropL,SfxItemSet& rSet)
+{
+ SvxLineSpacingItem aLineSpacing(ePropL, RES_PARATR_LINESPACING );
+ aLineSpacing.GetLineSpaceRule() = SVX_LINE_SPACE_AUTO;
+ if( 100 == ePropL )
+ aLineSpacing.GetInterLineSpaceRule() = SVX_INTER_LINE_SPACE_OFF;
+ else
+ aLineSpacing.SetPropLineSpace(ePropL);
+ rSet.Put( aLineSpacing );
+}
+
+
+
+void SwTextShell::ExecParaAttr(SfxRequest &rReq)
+{
+ // gleiche beide Attribute holen, ist nicht teuerer !!
+ SfxItemSet aSet( GetPool(), RES_PARATR_LINESPACING, RES_PARATR_ADJUST );
+
+ switch (rReq.GetSlot())
+ {
+ case FN_SET_LEFT_PARA: lcl_SetAdjust(ADJLEFT,aSet); break;
+ case FN_SET_RIGHT_PARA: lcl_SetAdjust(ADJRIGHT,aSet); break;
+ case FN_SET_CENTER_PARA: lcl_SetAdjust(ADJCENTER,aSet); break;
+ case SID_ATTR_PARA_ADJUST_BLOCK:lcl_SetAdjust(ADJBLOCK,aSet); break;
+
+ case FN_SET_LINE_SPACE_1: lcl_SetLineSpace(100,aSet); break;
+ case FN_SET_LINE_SPACE_15: lcl_SetLineSpace(150,aSet); break;
+ case FN_SET_LINE_SPACE_2: lcl_SetLineSpace(200,aSet); break;
+
+ default:
+ DBG_ERROR("SwTextShell::ExecParaAttr falscher Dispatcher");
+ return;
+ }
+ SwWrtShell& rWrtSh = GetShell();
+ SwTxtFmtColl* pColl = rWrtSh.GetCurTxtFmtColl();
+ if(pColl && pColl->IsAutoUpdateFmt())
+ {
+ rWrtSh.AutoUpdatePara(pColl, *pSet);
+ }
+ else
+ rWrtSh.SetAttr( aSet );
+}
+
+#else
+
+
+
+void SwTextShell::ExecParaAttr(SfxRequest &rReq)
+{
+ SvxAdjust eAdjst;
+ BYTE ePropL;
+ const SfxItemSet* pArgs = rReq.GetArgs();
+
+ // gleich beide Attribute holen, ist nicht teuerer !!
+ SfxItemSet aSet( GetPool(), RES_PARATR_LINESPACING, RES_PARATR_ADJUST );
+
+ USHORT nSlot = rReq.GetSlot();
+ switch (nSlot)
+ {
+ case SID_ATTR_PARA_ADJUST:
+ if(pArgs && SFX_ITEM_SET == pArgs->GetItemState( RES_PARATR_ADJUST) )
+ {
+ eAdjst = ((const SvxAdjustItem&)pArgs->Get(
+ RES_PARATR_ADJUST)).GetAdjust();
+ goto SET_ADJUST;
+ }
+ break;
+ case SID_ATTR_PARA_ADJUST_LEFT: eAdjst = SVX_ADJUST_LEFT; goto SET_ADJUST;
+ case SID_ATTR_PARA_ADJUST_RIGHT: eAdjst = SVX_ADJUST_RIGHT; goto SET_ADJUST;
+ case SID_ATTR_PARA_ADJUST_CENTER: eAdjst = SVX_ADJUST_CENTER; goto SET_ADJUST;
+ case SID_ATTR_PARA_ADJUST_BLOCK: eAdjst = SVX_ADJUST_BLOCK; goto SET_ADJUST;
+SET_ADJUST:
+ {
+ aSet.Put(SvxAdjustItem(eAdjst,RES_PARATR_ADJUST ));
+ }
+ break;
+
+ case SID_ATTR_PARA_LINESPACE:
+ if(pArgs && SFX_ITEM_SET == pArgs->GetItemState( GetPool().GetWhich(nSlot) ))
+ {
+ SvxLineSpacingItem aLineSpace = (const SvxLineSpacingItem&)pArgs->Get(
+ GetPool().GetWhich(nSlot));
+ aSet.Put( aLineSpace );
+ }
+ break;
+ case SID_ATTR_PARA_LINESPACE_10: ePropL = 100; goto SET_LINESPACE;
+ case SID_ATTR_PARA_LINESPACE_15: ePropL = 150; goto SET_LINESPACE;
+ case SID_ATTR_PARA_LINESPACE_20: ePropL = 200; goto SET_LINESPACE;
+
+SET_LINESPACE:
+ {
+
+ SvxLineSpacingItem aLineSpacing(ePropL, RES_PARATR_LINESPACING );
+ aLineSpacing.GetLineSpaceRule() = SVX_LINE_SPACE_AUTO;
+ if( 100 == ePropL )
+ aLineSpacing.GetInterLineSpaceRule() = SVX_INTER_LINE_SPACE_OFF;
+ else
+ aLineSpacing.SetPropLineSpace(ePropL);
+ aSet.Put( aLineSpacing );
+ }
+ break;
+
+ default:
+ ASSERT(FALSE, falscher Dispatcher);
+ return;
+ }
+ SwWrtShell& rWrtSh = GetShell();
+ SwTxtFmtColl* pColl = rWrtSh.GetCurTxtFmtColl();
+ if(pColl && pColl->IsAutoUpdateFmt())
+ {
+ rWrtSh.AutoUpdatePara(pColl, aSet);
+ }
+ else
+ rWrtSh.SetAttr( aSet );
+}
+
+#endif
+
+
+
+void SwTextShell::ExecParaAttrArgs(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ const SfxPoolItem *pItem = 0;
+
+ USHORT nSlot = rReq.GetSlot();
+ if(pArgs)
+ pArgs->GetItemState(GetPool().GetWhich(nSlot), FALSE, &pItem);
+ switch ( nSlot )
+ {
+ case FN_FORMAT_DROPCAPS:
+ {
+ if(pItem)
+ rSh.SetAttr(*pItem);
+ else
+ {
+ SfxItemSet aSet(GetPool(), RES_PARATR_DROP, RES_PARATR_DROP,
+ HINT_END, HINT_END);
+ rSh.GetAttr(aSet);
+ SwDropCapsDlg *pDlg = new SwDropCapsDlg(GetView().GetWindow(), aSet);
+ if (pDlg->Execute() == RET_OK)
+ {
+ rSh.StartAction();
+ rSh.StartUndo( UNDO_START );
+ if ( SFX_ITEM_SET == aSet.GetItemState(HINT_END,FALSE,&pItem) )
+ {
+ if ( ((SfxStringItem*)pItem)->GetValue().Len() )
+ rSh.ReplaceDropTxt(((SfxStringItem*)pItem)->GetValue());
+ }
+ rSh.SetAttr(*pDlg->GetOutputItemSet());
+ rSh.StartUndo( UNDO_END );
+ rSh.EndAction();
+ }
+ delete pDlg;
+ }
+ }
+ break;
+ case SID_ATTR_PARA_PAGEBREAK:
+ if(pItem)
+ {
+ rSh.SetAttr( *pItem );
+ }
+ break;
+ case SID_ATTR_PARA_MODEL:
+ {
+ if(pItem)
+ {
+ SfxItemSet aCoreSet( GetPool(),
+ RES_PAGEDESC, RES_PAGEDESC,
+ SID_ATTR_PARA_MODEL, SID_ATTR_PARA_MODEL, 0);
+ aCoreSet.Put(*pItem);
+ SfxToSwPageDescAttr( rSh, aCoreSet);
+ rSh.SetAttr(aCoreSet);
+ }
+ }
+ break;
+ default:
+ ASSERT(FALSE, falscher Dispatcher);
+ return;
+ }
+}
+
+
+
+void SwTextShell::GetAttrState(SfxItemSet &rSet)
+{
+ SwWrtShell &rSh = GetShell();
+ SfxItemPool& rPool = GetPool();
+ SfxItemSet aCoreSet(rPool, aTxtFmtCollSetRange);
+ rSh.GetAttr(aCoreSet); // *alle* Textattribute von der Core erfragen
+
+ SfxWhichIter aIter(rSet);
+ register USHORT nSlot = aIter.FirstWhich();
+ register int bFlag;
+ SfxBoolItem aFlagItem;
+ const SfxPoolItem* pItem = 0;
+ int eAdjust = -1; // Illegaler Wert, um DONTCARE zu erkennen
+ SfxItemState eState = aCoreSet.GetItemState(RES_PARATR_ADJUST, FALSE, &pItem);
+
+ if( SFX_ITEM_DEFAULT == eState )
+ pItem = &rPool.GetDefaultItem(RES_PARATR_ADJUST);
+ if( SFX_ITEM_DEFAULT <= eState )
+ eAdjust = (int)(( SvxAdjustItem* ) pItem)->GetAdjust();
+
+ short nEsc = 0;
+ eState = aCoreSet.GetItemState(RES_CHRATR_ESCAPEMENT, FALSE, &pItem);
+ if( SFX_ITEM_DEFAULT == eState )
+ pItem = &rPool.GetDefaultItem(RES_CHRATR_ESCAPEMENT);
+ if( eState >= SFX_ITEM_DEFAULT )
+ nEsc = ((SvxEscapementItem* )pItem)->GetEsc();
+
+ USHORT nLineSpace = 0;
+ eState = aCoreSet.GetItemState(RES_PARATR_LINESPACING, FALSE, &pItem);
+ if( SFX_ITEM_DEFAULT == eState )
+ pItem = &rPool.GetDefaultItem(RES_PARATR_LINESPACING);
+ if( SFX_ITEM_DEFAULT <= eState &&
+ ((SvxLineSpacingItem* )pItem)->GetLineSpaceRule() == SVX_LINE_SPACE_AUTO )
+ {
+ if(SVX_INTER_LINE_SPACE_OFF ==
+ ((SvxLineSpacingItem* )pItem)->GetInterLineSpaceRule())
+ nLineSpace = 100;
+ else
+ nLineSpace = ((SvxLineSpacingItem* )pItem)->GetPropLineSpace();
+ }
+
+ while (nSlot)
+ {
+ switch(nSlot)
+ {
+ case FN_SET_SUPER_SCRIPT:
+ bFlag = 0 < nEsc;
+ break;
+ case FN_SET_SUB_SCRIPT:
+ bFlag = 0 > nEsc;
+ break;
+ case SID_ATTR_PARA_ADJUST_LEFT:
+ if (eAdjust == -1)
+ {
+ rSet.InvalidateItem( nSlot );
+ nSlot = 0;
+ }
+ else
+ bFlag = SVX_ADJUST_LEFT == eAdjust;
+ break;
+ case SID_ATTR_PARA_ADJUST_RIGHT:
+ if (eAdjust == -1)
+ {
+ rSet.InvalidateItem( nSlot );
+ nSlot = 0;
+ }
+ else
+ bFlag = SVX_ADJUST_RIGHT == eAdjust;
+ break;
+ case SID_ATTR_PARA_ADJUST_CENTER:
+ if (eAdjust == -1)
+ {
+ rSet.InvalidateItem( nSlot );
+ nSlot = 0;
+ }
+ else
+ bFlag = SVX_ADJUST_CENTER == eAdjust;
+ break;
+ case SID_ATTR_PARA_ADJUST_BLOCK:
+ {
+ if (eAdjust == -1)
+ {
+ rSet.InvalidateItem( nSlot );
+ nSlot = 0;
+ }
+ else
+ {
+ bFlag = SVX_ADJUST_BLOCK == eAdjust;
+ USHORT nHtmlMode = GetHtmlMode(rSh.GetView().GetDocShell());
+ if((nHtmlMode & HTMLMODE_ON) && !(nHtmlMode & (HTMLMODE_FULL_STYLES|HTMLMODE_FIRSTLINE) ))
+ {
+ rSet.DisableItem( nSlot );
+ nSlot = 0;
+ }
+ }
+ }
+ break;
+ case SID_ATTR_PARA_LINESPACE_10:
+ bFlag = nLineSpace == 100;
+ break;
+ case SID_ATTR_PARA_LINESPACE_15:
+ bFlag = nLineSpace == 150;
+ break;
+ case SID_ATTR_PARA_LINESPACE_20:
+ bFlag = nLineSpace == 200;
+ break;
+ case FN_GROW_FONT_SIZE:
+ case FN_SHRINK_FONT_SIZE:
+ {
+ SfxItemState eState = aCoreSet.GetItemState( RES_CHRATR_FONTSIZE );
+ if( eState == SFX_ITEM_DONTCARE )
+ rSet.DisableItem( nSlot );
+ nSlot = 0;
+ }
+ break;
+ case FN_UNDERLINE_DOUBLE:
+ {
+ eState = aCoreSet.GetItemState(RES_CHRATR_UNDERLINE);
+ if( eState >= SFX_ITEM_DEFAULT )
+ {
+ FontUnderline eUnderline = ((const SvxUnderlineItem&)
+ aCoreSet.Get(RES_CHRATR_UNDERLINE)).GetUnderline();
+ rSet.Put(SfxBoolItem(nSlot, eUnderline == UNDERLINE_DOUBLE));
+ }
+ else
+ rSet.InvalidateItem(nSlot);
+ nSlot = 0;
+ }
+ break;
+ case SID_ATTR_PARA_ADJUST:
+ if (eAdjust == -1)
+ rSet.InvalidateItem( nSlot );
+ else
+ rSet.Put(SvxAdjustItem((SvxAdjust)eAdjust, SID_ATTR_PARA_ADJUST ));
+ nSlot = 0;
+ break;
+ case SID_ATTR_CHAR_CASEMAP:
+ case SID_ATTR_CHAR_LANGUAGE:
+ case SID_ATTR_CHAR_KERNING:
+ case SID_ATTR_PARA_HYPHENZONE:
+ case SID_ATTR_PARA_KEEP:
+ case SID_ATTR_PARA_WIDOWS:
+ case SID_ATTR_PARA_ORPHANS:
+ case RES_PARATR_DROP:
+ {
+#ifdef DEBUG
+ const SfxPoolItem& rItem = aCoreSet.Get(GetPool().GetWhich(nSlot), TRUE);
+ rSet.Put(rItem);
+#else
+ rSet.Put(aCoreSet.Get( GetPool().GetWhich(nSlot), TRUE));
+#endif
+ nSlot = 0;
+ }
+ break;
+ case SID_ATTR_PARA_MODEL:
+ {
+ SfxItemSet aTemp(GetPool(),
+ RES_PAGEDESC,RES_PAGEDESC,
+ SID_ATTR_PARA_MODEL,SID_ATTR_PARA_MODEL,
+ 0L);
+ aTemp.Put(aCoreSet);
+ ::SwToSfxPageDescAttr(aTemp);
+ rSet.Put(aTemp.Get(SID_ATTR_PARA_MODEL));
+ nSlot = 0;
+ }
+ break;
+ case RES_TXTATR_INETFMT:
+ {
+ SfxItemSet aSet(GetPool(), RES_TXTATR_INETFMT, RES_TXTATR_INETFMT);
+ rSh.GetAttr(aSet);
+#ifdef DEBUG
+ const SfxPoolItem& rItem = aSet.Get(RES_TXTATR_INETFMT, TRUE);
+ rSet.Put(rItem);
+#else
+ rSet.Put(aSet.Get( RES_TXTATR_INETFMT, TRUE));
+#endif
+ nSlot = 0;
+ }
+ break;
+ default:
+ // Nichts tun
+ nSlot = 0;
+ break;
+
+ }
+ if( nSlot )
+ {
+ aFlagItem.SetWhich( nSlot );
+ aFlagItem.SetValue( bFlag );
+ rSet.Put( aFlagItem );
+ }
+ nSlot = aIter.NextWhich();
+ }
+
+ rSet.Put(aCoreSet,FALSE);
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.122 2000/09/18 16:06:07 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.121 2000/09/07 15:59:30 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.120 2000/08/31 11:32:12 jp
+ add missing include
+
+ Revision 1.119 2000/05/26 07:21:33 os
+ old SW Basic API Slots removed
+
+ Revision 1.118 2000/05/10 11:53:02 os
+ Basic API removed
+
+ Revision 1.117 2000/02/11 14:58:08 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.116 1999/01/04 13:29:16 OS
+ #60575# Shrink/GrowFontSize: keinen falschen Status liefern
+
+
+ Rev 1.115 04 Jan 1999 14:29:16 OS
+ #60575# Shrink/GrowFontSize: keinen falschen Status liefern
+
+ Rev 1.114 29 Nov 1997 15:54:02 MA
+ includes
+
+ Rev 1.113 24 Nov 1997 09:47:40 MA
+ includes
+
+ Rev 1.112 03 Nov 1997 13:55:52 MA
+ precomp entfernt
+
+ Rev 1.111 22 Oct 1997 12:31:56 OS
+ StateMethod fuer SID_ATTR_PARA_MODEL #44910#
+
+ Rev 1.110 04 Sep 1997 17:12:04 MA
+ includes
+
+ Rev 1.109 15 Aug 1997 11:48:40 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.108 11 Aug 1997 10:06:46 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.107 25 Jun 1997 13:49:50 OS
+ Ids des SwFmtINetFmt korrigieren #40977#
+
+ Rev 1.106 17 Jun 1997 16:11:58 MA
+ DrawTxtShell nicht von BaseShell ableiten + Opts
+
+ Rev 1.105 28 May 1997 15:06:32 OM
+ #40067# DontCare-State fuer Absatzausrichtung beruecksichtigen
+
+ Rev 1.104 24 Mar 1997 15:51:22 OS
+ Blocksatzerweiterung fuer Html
+
+ Rev 1.103 10 Mar 1997 12:01:20 NF
+ OS2-Anpassung ...
+
+ Rev 1.102 07 Mar 1997 08:09:38 OS
+ AutoUpdate fuer Vorlagen: harte Attribute loeschen
+
+ Rev 1.101 06 Mar 1997 16:46:30 OS
+ AutoUpdate fuer Absatz- und Rahmenvorlagen
+
+ Rev 1.100 05 Mar 1997 21:00:24 HJS
+ muss 357
+
+ Rev 1.99 19 Feb 1997 19:10:14 MA
+ fix: DropCap, Text per Item
+
+ Rev 1.98 27 Jan 1997 16:30:38 OS
+ HtmlMode entfernt
+
+ Rev 1.97 16 Dec 1996 19:10:38 HJS
+ includes
+
+ Rev 1.96 14 Dec 1996 14:48:46 OS
+ kein Blocksatz im HTML-Mode
+
+ Rev 1.95 22 Nov 1996 16:24:46 NF
+ zwei identische case-bl”cke in einer switch-anweisung -> doppelten entfernt..
+
+ Rev 1.94 22 Nov 1996 14:53:34 OS
+ FN_SET_JUSTIFY_PARA -> SID_ATTR_PARA_ADJUST_BLOCK
+
+ Rev 1.93 14 Nov 1996 19:17:56 OS
+ Umstellung SlotIds
+
+ Rev 1.92 24 Sep 1996 06:58:14 OS
+ Hoch-/Tiefstellung auf automatisch
+
+ Rev 1.91 09 Sep 1996 15:11:10 OS
+ SID_APPLY_TEMPLATE mit WrtShell
+
+ Rev 1.90 28 Aug 1996 15:55:16 OS
+ includes
+
+ Rev 1.89 15 Aug 1996 18:17:16 OS
+ URL als Attribut - auch fuer die API
+
+ Rev 1.88 26 Jun 1996 15:20:54 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.87 25 Jun 1996 19:52:10 HJS
+ includes
+
+ Rev 1.86 22 Mar 1996 15:34:38 TRI
+ sfxiiter.hxx included
+
+ Rev 1.85 21 Mar 1996 11:58:26 MA
+ Umstellung SV311
+
+ Rev 1.84 20 Feb 1996 17:02:56 JP
+ Umbau SfxItemPool -> SwAttrPool
+
+ Rev 1.83 15 Feb 1996 18:04:58 OS
+ UnderlineDouble und Sub/Superscript arbeiten mit BoolItems
+
+ Rev 1.82 19 Jan 1996 14:39:54 OS
+ Cast fuer SvxLanguageItem nicht noetig
+
+ Rev 1.81 20 Dec 1995 15:50:26 OS
+ Status fuer Dropcaps gerichtet
+
+ Rev 1.80 14 Dec 1995 17:25:52 OS
+ Standard-Adjust auf LEFT
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/shells/txtcrsr.cxx b/sw/source/ui/shells/txtcrsr.cxx
new file mode 100644
index 000000000000..3bf250f41b50
--- /dev/null
+++ b/sw/source/ui/shells/txtcrsr.cxx
@@ -0,0 +1,412 @@
+/*************************************************************************
+ *
+ * $RCSfile: txtcrsr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef __SBX_SBXVARIABLE_HXX //autogen
+#include <svtools/sbxvar.hxx>
+#endif
+#ifndef _ARGS_HXX //autogen
+#include <svtools/args.hxx>
+#endif
+
+
+#include "view.hxx"
+#include "cmdid.h"
+#include "wrtsh.hxx"
+#include "globals.hrc"
+#include "textsh.hxx"
+#include "num.hxx"
+#include "bookmrk.hxx"
+#include "edtwin.hxx"
+#include "globals.h"
+
+
+
+
+
+void SwTextShell::ExecBasicMove(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ GetView().GetEditWin().FlushInBuffer( &rSh );
+
+ USHORT nSlot = rReq.GetSlot();
+ switch(nSlot)
+ {
+ case FN_CHAR_LEFT_SEL:
+ case FN_CHAR_LEFT: rSh.Left ( FN_CHAR_LEFT_SEL == nSlot, 1 ); break;
+ case FN_CHAR_RIGHT_SEL:
+ case FN_CHAR_RIGHT: rSh.Right( FN_CHAR_RIGHT_SEL == nSlot, 1 ); break;
+ case FN_LINE_UP_SEL:
+ case FN_LINE_UP: rSh.Up ( FN_LINE_UP_SEL == nSlot, 1 ); break;
+ case FN_LINE_DOWN_SEL:
+ case FN_LINE_DOWN: rSh.Down ( FN_LINE_DOWN_SEL == nSlot, 1 ); break;
+ default: ASSERT(FALSE, falscher Dispatcher); return;
+ }
+}
+
+void SwTextShell::ExecMove(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ GetView().GetEditWin().FlushInBuffer( &rSh );
+
+ USHORT nSlot = rReq.GetSlot();
+ BOOL bRet = FALSE;
+ switch ( nSlot )
+ {
+ case FN_START_OF_LINE_SEL:
+ case FN_START_OF_LINE: bRet = rSh.LeftMargin ( FN_START_OF_LINE_SEL == nSlot );
+ break;
+
+ case FN_END_OF_LINE_SEL:
+ case FN_END_OF_LINE: bRet = rSh.RightMargin( FN_END_OF_LINE_SEL == nSlot );
+ break;
+
+ case FN_START_OF_DOCUMENT_SEL:
+ case FN_START_OF_DOCUMENT: bRet = rSh.SttDoc ( FN_START_OF_DOCUMENT_SEL == nSlot);
+ break;
+
+ case FN_END_OF_DOCUMENT_SEL:
+ case FN_END_OF_DOCUMENT: bRet = rSh.EndDoc( FN_END_OF_DOCUMENT_SEL == nSlot );
+ break;
+
+ case FN_SELECT_WORD: rSh.SelNearestWrd(); break;
+
+ case SID_SELECTALL: rSh.SelAll(); break;
+ default: ASSERT(FALSE, falscher Dispatcher); return;
+ }
+}
+
+void SwTextShell::ExecMovePage(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ GetView().GetEditWin().FlushInBuffer( &rSh );
+
+ USHORT nSlot = rReq.GetSlot();
+ switch( nSlot )
+ {
+ case FN_START_OF_NEXT_PAGE_SEL :
+ case FN_START_OF_NEXT_PAGE: rSh.SttNxtPg( FN_START_OF_NEXT_PAGE_SEL == nSlot ); break;
+
+ case FN_END_OF_NEXT_PAGE_SEL:
+ case FN_END_OF_NEXT_PAGE: rSh.EndNxtPg( FN_END_OF_NEXT_PAGE_SEL == nSlot ); break;
+
+ case FN_START_OF_PREV_PAGE_SEL:
+ case FN_START_OF_PREV_PAGE: rSh.SttPrvPg( FN_START_OF_PREV_PAGE_SEL == nSlot ); break;
+
+ case FN_END_OF_PREV_PAGE_SEL:
+ case FN_END_OF_PREV_PAGE: rSh.EndPrvPg( FN_END_OF_PREV_PAGE_SEL == nSlot ); break;
+
+ case FN_START_OF_PAGE_SEL:
+ case FN_START_OF_PAGE: rSh.SttPg ( FN_START_OF_PAGE_SEL == nSlot ); break;
+
+ case FN_END_OF_PAGE_SEL:
+ case FN_END_OF_PAGE: rSh.EndPg ( FN_END_OF_PAGE_SEL == nSlot ); break;
+ default: ASSERT(FALSE, falscher Dispatcher); return;
+ }
+}
+
+
+void SwTextShell::ExecMoveCol(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ switch ( rReq.GetSlot() )
+ {
+ case FN_START_OF_COLUMN: rSh.StartOfColumn ( FALSE ); break;
+ case FN_END_OF_COLUMN: rSh.EndOfColumn ( FALSE ); break;
+ case FN_START_OF_NEXT_COLUMN: rSh.StartOfNextColumn( FALSE ) ; break;
+ case FN_END_OF_NEXT_COLUMN: rSh.EndOfNextColumn ( FALSE ); break;
+ case FN_START_OF_PREV_COLUMN: rSh.StartOfPrevColumn( FALSE ); break;
+ case FN_END_OF_PREV_COLUMN: rSh.EndOfPrevColumn ( FALSE ); break;
+ default: ASSERT(FALSE, falscher Dispatcher); return;
+ }
+}
+
+void SwTextShell::ExecMoveLingu(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ GetView().GetEditWin().FlushInBuffer( GetShellPtr() );
+
+ USHORT nSlot = rReq.GetSlot();
+ BOOL bRet = FALSE;
+ switch ( nSlot )
+ {
+ case FN_NEXT_WORD_SEL:
+ case FN_NEXT_WORD: bRet = rSh.NxtWrd( FN_NEXT_WORD_SEL == nSlot );
+ break;
+
+ case FN_START_OF_PARA_SEL:
+ case FN_START_OF_PARA: bRet = rSh.SttPara( FN_START_OF_PARA_SEL == nSlot );
+ break;
+
+ case FN_END_OF_PARA_SEL:
+ case FN_END_OF_PARA: bRet = rSh.EndPara( FN_END_OF_PARA_SEL == nSlot );
+ break;
+
+ case FN_PREV_WORD_SEL:
+ case FN_PREV_WORD: bRet = rSh.PrvWrd( FN_PREV_WORD_SEL == nSlot );
+ break;
+
+ case FN_NEXT_SENT_SEL:
+ case FN_NEXT_SENT: bRet = rSh.FwdSentence( FN_NEXT_SENT_SEL == nSlot );
+ break;
+
+ case FN_PREV_SENT_SEL:
+ case FN_PREV_SENT: bRet = rSh.BwdSentence( FN_PREV_SENT_SEL == nSlot );
+ break;
+
+ case FN_NEXT_PARA: bRet = rSh.FwdPara ( FALSE );
+ break;
+
+ case FN_PREV_PARA: bRet = rSh.BwdPara ( FALSE );
+ break;
+ default: ASSERT(FALSE, falscher Dispatcher); return;
+ }
+}
+
+void SwTextShell::ExecMoveMisc(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetShell();
+ USHORT nSlot = rReq.GetSlot();
+ BOOL bSetRetVal = TRUE, bRet = TRUE;
+ switch ( nSlot )
+ {
+ case FN_CNTNT_TO_NEXT_FRAME:
+ bRet = rSh.GotoFlyTxt();
+ break;
+ case FN_NEXT_FOOTNOTE:
+ rSh.MoveCrsr();
+ bRet = rSh.GotoNextFtnAnchor();
+ break;
+ case FN_PREV_FOOTNOTE:
+ rSh.MoveCrsr();
+ bRet = rSh.GotoPrevFtnAnchor();
+ break;
+ case FN_TO_HEADER:
+ rSh.MoveCrsr();
+ if ( FRMTYPE_HEADER & rSh.GetFrmType(0,FALSE) )
+ rSh.SttPg();
+ else
+ rSh.GotoHeaderTxt();
+ bSetRetVal = FALSE;
+ break;
+ case FN_TO_FOOTER:
+ rSh.MoveCrsr();
+ if ( FRMTYPE_FOOTER & rSh.GetFrmType(0,FALSE) )
+ rSh.EndPg();
+ else
+ rSh.GotoFooterTxt();
+ bSetRetVal = FALSE;
+ break;
+ case FN_FOOTNOTE_TO_ANCHOR:
+ rSh.MoveCrsr();
+ if ( FRMTYPE_FOOTNOTE & rSh.GetFrmType(0,FALSE) )
+ rSh.GotoFtnAnchor();
+ else
+ rSh.GotoFtnTxt();
+ bSetRetVal = FALSE;
+ break;
+ case FN_PREV_TABLE:
+ bRet = rSh.MoveTable( fnTablePrev, fnTableStart);
+ break;
+ case FN_NEXT_TABLE:
+ bRet = rSh.MoveTable(fnTableNext, fnTableStart);
+ break;
+ case FN_GOTO_NEXT_REGION :
+ bRet = rSh.MoveRegion(fnRegionNext, fnRegionStart);
+ break;
+ case FN_GOTO_PREV_REGION :
+ bRet = rSh.MoveRegion(fnRegionPrev, fnRegionStart);
+ break;
+
+ case FN_NEXT_TOXMARK:
+ bRet = rSh.GotoNxtPrvTOXMark( TRUE );
+ break;
+ case FN_PREV_TOXMARK:
+ bRet = rSh.GotoNxtPrvTOXMark( FALSE );
+ break;
+ case FN_NEXT_TBLFML:
+ bRet = rSh.GotoNxtPrvTblFormula( TRUE, FALSE );
+ break;
+ case FN_PREV_TBLFML:
+ bRet = rSh.GotoNxtPrvTblFormula( FALSE, FALSE );
+ break;
+ case FN_NEXT_TBLFML_ERR:
+ bRet = rSh.GotoNxtPrvTblFormula( TRUE, TRUE );
+ break;
+ case FN_PREV_TBLFML_ERR:
+ bRet = rSh.GotoNxtPrvTblFormula( FALSE, TRUE );
+ break;
+
+ default:
+ ASSERT(FALSE, falscher Dispatcher);
+ return;
+ }
+
+ if( bSetRetVal )
+ rReq.SetReturnValue(SfxBoolItem( nSlot, bRet ));
+
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.47 2000/09/18 16:06:07 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.46 2000/05/26 07:21:33 os
+ old SW Basic API Slots removed
+
+ Revision 1.45 2000/05/09 14:41:35 os
+ BASIC interface partially removed
+
+ Revision 1.44 1999/04/26 11:06:12 KZ
+ #include <svtools/args.hxx> eingefuegt
+
+
+ Rev 1.43 26 Apr 1999 13:06:12 KZ
+ #include <svtools/args.hxx> eingefuegt
+
+ Rev 1.42 14 Jan 1999 15:50:26 JP
+ Bug #60794#: Fehlererkennung beim Tabellenrechnen und anspringen von Formeln
+
+ Rev 1.41 27 Nov 1998 14:56:08 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.40 17 Aug 1998 16:09:12 OS
+ GPF nach Shellwechsel waehrend Recording #55041#
+
+ Rev 1.39 12 Feb 1998 20:12:44 JP
+ Left-/RightMargin: zus. Flag fuer BasicCall
+
+ Rev 1.38 24 Nov 1997 09:47:54 MA
+ includes
+
+ Rev 1.37 03 Nov 1997 13:55:54 MA
+ precomp entfernt
+
+ Rev 1.36 04 Sep 1997 17:12:04 MA
+ includes
+
+ Rev 1.35 07 Apr 1997 17:48:12 MH
+ chg: header
+
+ Rev 1.34 06 Mar 1997 12:28:12 JP
+ Left/Right/Up/Down: bei API-Calls in ReadOnly Docs normale verhalten
+
+ Rev 1.33 23 Feb 1997 22:27:04 OS
+ diverse Move-Slots mit BOOL - return
+
+ Rev 1.32 20 Feb 1997 17:17:38 OS
+ JumpToPrev/NextRegion
+
+ Rev 1.31 07 Feb 1997 14:06:06 OS
+ GoLeft/Right/Up/Down ueber for-Schleife aufrufen #35596#
+
+ Rev 1.30 29 Aug 1996 11:40:04 OS
+ Next/PrevFootnote liefern BOOL
+
+ Rev 1.29 28 Aug 1996 15:54:56 OS
+ includes
+
+ Rev 1.28 13 Feb 1996 09:51:28 OS
+ JumpToPrev/NextTable/Frame erhalten return type BOOL
+
+ Rev 1.27 24 Jan 1996 15:18:36 OS
+ Selection-Param ist Bool und nicht Int16, Bug #23549#
+
+ Rev 1.26 24 Nov 1995 16:59:36 OM
+ PCH->PRECOMPILED
+
+ Rev 1.25 23 Nov 1995 19:52:02 OS
+ +FN_SELECT_ALL fuer PM2, +Next/PrevPara
+
+ Rev 1.24 10 Nov 1995 15:29:44 OS
+ GotoVariable/Region an die Baseshell
+
+ Rev 1.23 09 Nov 1995 17:59:54 OS
+ neue Slots fuer Grosskunden
+
+ Rev 1.22 23 Oct 1995 17:33:36 OS
+ *_SEL auf * umgeappt
+
+ Rev 1.21 22 Sep 1995 16:58:18 OS
+ Schoenheitskorrektur: GetArgs() fuellt immer pArgs!
+
+ Rev 1.20 18 Sep 1995 14:04:38 OS
+ geht wieder mit PCH
+
+ Rev 1.19 04 Sep 1995 14:13:08 HJS
+ add: #include <sbx.hxx>
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/shells/txtnum.cxx b/sw/source/ui/shells/txtnum.cxx
new file mode 100644
index 000000000000..7c22e289ab7b
--- /dev/null
+++ b/sw/source/ui/shells/txtnum.cxx
@@ -0,0 +1,439 @@
+/*************************************************************************
+ *
+ * $RCSfile: txtnum.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <hintids.hxx>
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SVX_NUMITEM_HXX //autogen
+#include <svx/numitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen wg. SvxBrushItem
+#include <svx/brshitem.hxx>
+#endif
+
+#include "cmdid.h"
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "viewopt.hxx"
+#include "wdocsh.hxx"
+#include "textsh.hxx"
+#include "uiitems.hxx"
+#include "num.hxx"
+
+void SwTextShell::ExecEnterNum(SfxRequest &rReq)
+{
+ //wg. Aufzeichnung schon vor dem evtl. Shellwechsel
+ switch(rReq.GetSlot())
+ {
+ case FN_NUM_NUMBERING_ON:
+ {
+ if(!GetShell().GetCurNumRule())
+ GetShell().NumOn();
+ else
+ GetShell().DelNumRules();
+ }
+ break;
+ case FN_NUMBER_BULLETS:
+ {
+ // per default TRUE, damit die Schleife im Dialog richtig arbeitet!
+ BOOL bHasChild = TRUE;
+ SfxItemSet aSet(GetPool(),
+ SID_HTML_MODE, SID_HTML_MODE,
+ SID_ATTR_NUMBERING_RULE, SID_PARAM_CUR_NUM_LEVEL,
+ 0 );
+ SwDocShell* pDocSh = GetView().GetDocShell();
+ BOOL bHtml = 0 != PTR_CAST(SwWebDocShell, pDocSh);
+ const SwNumRule* pCurRule = GetShell().GetCurNumRule();
+ if( pCurRule )
+ {
+ SvxNumRule aRule = pCurRule->MakeSvxNumRule();
+
+ //convert type of linked bitmaps from SVX_NUM_BITMAP to (SVX_NUM_BITMAP|LINK_TOKEN)
+ for(USHORT i = 0; i < aRule.GetLevelCount(); i++)
+ {
+ SvxNumberFormat aFmt(aRule.GetLevel(i));
+ if(SVX_NUM_BITMAP == aFmt.GetNumType())
+ {
+ const SvxBrushItem* pBrush = aFmt.GetBrush();
+ const String* pLinkStr;
+ if(pBrush &&
+ 0 != (pLinkStr = pBrush->GetGraphicLink()) &&
+ pLinkStr->Len())
+ aFmt.SetNumType(SvxExtNumType(SVX_NUM_BITMAP|LINK_TOKEN));
+ aRule.SetLevel(i, aFmt, aRule.Get(i) != 0);
+ }
+ }
+ if(bHtml)
+ aRule.SetFeatureFlag(NUM_ENABLE_EMBEDDED_BMP, FALSE);
+
+ aSet.Put(SvxNumBulletItem(aRule));
+ USHORT nLevel = GetShell().GetNumLevel( &bHasChild ) & ~NO_NUMLEVEL;
+ if( nLevel < MAXLEVEL )
+ {
+ nLevel = 1<<nLevel;
+ aSet.Put( SfxUInt16Item( SID_PARAM_CUR_NUM_LEVEL, nLevel ));
+ }
+ }
+ else
+ {
+ SwNumRule aRule( GetShell().GetUniqueNumRuleName() );
+ SvxNumRule aSvxRule = aRule.MakeSvxNumRule();
+ if(bHtml)
+ {
+ for( BYTE n = 1; n < MAXLEVEL; ++n )
+ {
+ SvxNumberFormat aFmt( aSvxRule.GetLevel( n ) );
+ // 1/2" fuer HTML
+ aFmt.SetLSpace(720);
+ aFmt.SetAbsLSpace(n * 720);
+ aSvxRule.SetLevel( n, aFmt, FALSE );
+ }
+ aSvxRule.SetFeatureFlag(NUM_ENABLE_EMBEDDED_BMP, FALSE);
+ }
+ aSet.Put(SvxNumBulletItem(aSvxRule));
+ }
+
+ aSet.Put( SfxBoolItem( SID_PARAM_CHILD_LEVELS, bHasChild ));
+ aSet.Put( SfxBoolItem( SID_PARAM_NUM_PRESET,FALSE ));
+
+ // vor dem Dialog wird der HtmlMode an der DocShell versenkt
+ pDocSh->PutItem(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(pDocSh)));
+
+ SwSvxNumBulletTabDialog* pDlg = new SwSvxNumBulletTabDialog(
+ GetView().GetWindow(), &aSet, GetShell() );
+
+ USHORT nRet = pDlg->Execute();
+ if(RET_OK == nRet )
+ {
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pDlg->GetOutputItemSet()->GetItemState(
+ SID_ATTR_NUMBERING_RULE, FALSE, &pItem ))
+ {
+ SvxNumRule* pSetRule = ((SvxNumBulletItem*)pItem)->GetNumRule();
+ pSetRule->UnLinkGraphics();
+ SwNumRule aSetRule( pCurRule
+ ? pCurRule->GetName()
+ : GetShell().GetUniqueNumRuleName());
+ aSetRule.SetSvxRule( *pSetRule, GetShell().GetDoc());
+ aSetRule.SetAutoRule( TRUE );
+ GetShell().SetCurNumRule( aSetRule );
+ }
+ // wenn der Dialog mit OK verlassen wurde, aber nichts ausgewaehlt
+ // wurde dann muss die Numerierung zumindest eingeschaltet werden,
+ // wenn sie das noch nicht ist
+ else if( !pCurRule &&
+ SFX_ITEM_SET == aSet.GetItemState(
+ SID_ATTR_NUMBERING_RULE, FALSE, &pItem ))
+ {
+ SvxNumRule* pSetRule = ((SvxNumBulletItem*)pItem)->GetNumRule();
+ SwNumRule aSetRule(GetShell().GetUniqueNumRuleName());
+ aSetRule.SetSvxRule(*pSetRule, GetShell().GetDoc());
+ aSetRule.SetAutoRule( TRUE );
+ GetShell().SetCurNumRule( aSetRule );
+ }
+ }
+ else if(RET_USER == nRet)
+ GetShell().DelNumRules();
+
+ delete pDlg;
+/*
+#else
+ SfxItemSet aSet(GetPool(),
+ SID_HTML_MODE, SID_HTML_MODE,
+ FN_PARAM_ACT_NUMBER, FN_PARAM_ACT_NUMBER,
+ FN_PARAM_CHILD_LEVELS, FN_PARAM_CHILD_LEVELS,
+ FN_PARAM_NUM_PRESET, FN_PARAM_NUM_PRESET,
+ FN_PARAM_ACT_NUMLEVEL, FN_PARAM_ACT_NUMLEVEL,
+ 0 );
+
+ // per default TRUE, damit die Schleife im num.cxx richtig arbeitet!
+ BOOL bHasChild = TRUE;
+ const SwNumRule* pCurRule = GetShell().GetCurNumRule();
+ if( pCurRule )
+ {
+ aSet.Put( SwUINumRuleItem( *pCurRule ));
+ USHORT nLevel = GetShell().GetNumLevel( &bHasChild ) & ~NO_NUMLEVEL;
+ if( nLevel < MAXLEVEL )
+ {
+ nLevel = 1<<nLevel;
+ aSet.Put( SfxUInt16Item( FN_PARAM_ACT_NUMLEVEL, nLevel ));
+ }
+ }
+ else
+ {
+ SwNumRule aRule( GetShell().GetUniqueNumRuleName() );
+ SwDocShell* pDocSh = GetView().GetDocShell();
+ BOOL bHtml = 0 != PTR_CAST(SwWebDocShell, pDocSh);
+ for( BYTE n = 0; n < MAXLEVEL; ++n )
+ {
+ SwNumFmt aFmt( aRule.Get( n ) );
+ if(bHtml && n)
+ {
+ // 1/2" fuer HTML
+ aFmt.SetLSpace(720);
+ aFmt.SetAbsLSpace(n * 720);
+ }
+ aRule.Set( n, aFmt );
+ }
+ aSet.Put( SwUINumRuleItem( aRule ));
+ }
+
+ aSet.Put( SfxBoolItem( FN_PARAM_CHILD_LEVELS, bHasChild ));
+ aSet.Put( SfxBoolItem( FN_PARAM_NUM_PRESET,FALSE ));
+
+ SwNumBulletTabDialog* pDlg = new SwNumBulletTabDialog(
+ GetView().GetWindow(), &aSet, GetShell() );
+
+ if(RET_OK == pDlg->Execute() )
+ {
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pDlg->GetOutputItemSet()->GetItemState(
+ FN_PARAM_ACT_NUMBER, FALSE, &pItem ))
+ {
+ SwNumRule* pSetRule = ((SwUINumRuleItem*)pItem)->GetNumRule();
+ pSetRule->SetAutoRule( TRUE );
+ GetShell().SetCurNumRule( *pSetRule );
+ }
+ else
+ GetShell().DelNumRules();
+ }
+
+ delete pDlg;
+#endif
+*/
+ }
+ break;
+ case FN_NUM_BULLET_ON:
+ {
+ if ( !GetShell().GetCurNumRule() )
+ GetShell().BulletOn();
+ else
+ GetShell().DelNumRules();
+
+ }
+ break;
+ default:
+ ASSERT(FALSE, falscher Dispatcher);
+ return;
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.45 2000/09/18 16:06:07 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.44 2000/05/30 12:35:15 os
+ #74997# fill SvxNumRule with invalid levels
+
+ Revision 1.43 2000/05/26 07:21:33 os
+ old SW Basic API Slots removed
+
+ Revision 1.42 2000/02/11 14:58:14 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.41 1999/08/19 14:25:46 OS
+ #67374# embedded graphics in numberings
+
+
+ Rev 1.40 19 Aug 1999 16:25:46 OS
+ #67374# embedded graphics in numberings
+
+ Rev 1.39 04 Jun 1999 13:50:58 OS
+ #64956# keine vollst. Numerierungen im HTML
+
+ Rev 1.38 15 Mar 1999 23:28:54 JP
+ Task #63049#: Numerierung mit rel. Einzuegen
+
+ Rev 1.37 06 Jan 1999 15:53:08 OS
+ #58263# Numerierung bei OK ohne Aenderungen mindestens einschalten
+
+ Rev 1.36 02 Dec 1998 09:38:54 OS
+ #58263# Entfernen-Button fuer Numerierungen
+
+ Rev 1.35 17 Nov 1998 10:59:00 OS
+ #58263# Numerierungs-Tabseiten aus dem Svx
+
+ Rev 1.34 10 Nov 1998 15:24:38 OS
+ #59238# neue Defaults fuer HTML-Numerierung
+
+ Rev 1.33 06 Nov 1998 14:42:12 OS
+ #57903# NumOff kann weg
+
+ Rev 1.32 03 Nov 1998 07:26:16 OS
+ #58263# Numerierungsdialog in den Svx
+
+ Rev 1.31 17 Aug 1998 16:09:10 OS
+ GPF nach Shellwechsel waehrend Recording #55041#
+
+ Rev 1.30 18 May 1998 12:13:46 OS
+ Multiselektion im Numerierungsdialog
+
+ Rev 1.29 24 Mar 1998 13:46:44 JP
+ SwUINumRule: CTORen mit Name oder NumRule, nicht mehr mit NumRulePointer
+
+ Rev 1.28 12 Mar 1998 13:08:08 OS
+ Numerierungsbutton nicht mehr gecheckt und nicht disabled
+
+ Rev 1.27 18 Feb 1998 19:58:44 JP
+ wenn ueber den Dialog kommt, ist es immer eine AutoRule
+
+ Rev 1.26 08 Dec 1997 16:08:06 OS
+ benannte Numerierungen entfernt
+
+ Rev 1.25 03 Dec 1997 17:31:38 OS
+ Numerierung und Bullets ueber Button nur noch einschalten
+
+ Rev 1.24 24 Nov 1997 09:47:56 MA
+ includes
+
+ Rev 1.23 17 Nov 1997 10:21:08 JP
+ Umstellung Numerierung
+
+ Rev 1.22 03 Nov 1997 13:55:44 MA
+ precomp entfernt
+
+ Rev 1.21 06 Aug 1997 11:07:54 MH
+ chg: header
+
+ Rev 1.20 26 Jun 1997 16:15:46 OS
+ Numerierung per Controller anwenden
+
+ Rev 1.19 05 Jun 1997 13:11:52 OS
+ Num./Aufzaehlungsbuttons koennen Numerierung auch ausschalten
+
+ Rev 1.18 30 May 1997 13:52:04 OS
+ Preset fuer Numerierungsdialog
+
+ Rev 1.17 07 Apr 1997 17:48:34 MH
+ chg: header
+
+ Rev 1.16 22 Feb 1997 20:52:26 OS
+ ohne Numerierung muss bHasChild auf TRUE gesetzt werden, sonst kommt der Dialog durcheinander
+
+ Rev 1.15 20 Feb 1997 17:19:04 OS
+ Numerierung: Flag fuer benutzte Ebenen auswerten
+
+ Rev 1.14 18 Feb 1997 08:54:12 OS
+ Numerierungsdialog: auch den Return-Wert des ModalDialogs auswerten
+
+ Rev 1.13 11 Feb 1997 11:53:32 OS
+ ItemSet vor dem Dialog fuellen
+
+ Rev 1.12 08 Feb 1997 18:00:34 OS
+ NumRule loeschen, wenn kein Item kommt, aber RET_OK
+
+ Rev 1.11 08 Feb 1997 16:01:54 OS
+ Online-Layout->Print-Layout
+
+ Rev 1.10 10 Oct 1996 13:18:26 OS
+ ItemState immer pruefen
+
+ Rev 1.9 28 Aug 1996 15:55:18 OS
+ includes
+
+ Rev 1.8 24 Nov 1995 16:59:32 OM
+ PCH->PRECOMPILED
+
+ Rev 1.7 28 Aug 1995 19:11:16 MA
+ Renovierung: IDL, Shells, Textshell-Doktrin aufgegeben
+
+ Rev 1.6 24 Aug 1995 14:33:38 MA
+ swstddlg -> svxstandarddialog
+
+ Rev 1.5 17 Feb 1995 14:20:56 MS
+ Umstellung SwView
+
+ Rev 1.4 18 Jan 1995 13:47:58 MS
+ Precomp Hd
+
+ Rev 1.3 18 Jan 1995 13:43:26 MS
+ Precomp Hd
+
+ Rev 1.2 25 Oct 1994 18:46:30 ER
+ add: PCH
+
+ Rev 1.1 06 Oct 1994 10:52:12 VB
+ Segmentierung
+
+ Rev 1.0 15 Sep 1994 15:54:16 VB
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/table/chartins.cxx b/sw/source/ui/table/chartins.cxx
new file mode 100644
index 000000000000..b8ea2b0ea03b
--- /dev/null
+++ b/sw/source/ui/table/chartins.cxx
@@ -0,0 +1,609 @@
+/*************************************************************************
+ *
+ * $RCSfile: chartins.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define _CHARTINS_CXX
+
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SCHDLL0_HXX
+#include <sch/schdll0.hxx>
+#endif
+#ifndef _SCH_DLL_HXX //autogen
+#include <sch/schdll.hxx>
+#endif
+#ifndef _SCH_MEMCHRT_HXX
+#include <sch/memchrt.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _CHARTINS_HXX
+#include <chartins.hxx>
+#endif
+#ifndef _TABLEMGR_HXX
+#include <tablemgr.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+#ifndef _TBLSEL_HXX
+#include <tblsel.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _CHARTINS_HRC
+#include <chartins.hrc>
+#endif
+
+
+
+
+SFX_IMPL_MODELESSDIALOG( SwInsertChartChild, SID_INSERT_DIAGRAM )
+
+
+/*------------------------------------------------------------------------
+ Beschreibung: AutoPilot fuer StarChart
+------------------------------------------------------------------------*/
+
+
+SwInsertChartDlg::SwInsertChartDlg( SfxBindings* pBindings,
+ SfxChildWindow* pChild,
+ Window *pParent,
+ SwWrtShell* pSh ) :
+ SfxModelessDialog( pBindings, pChild, pParent, SW_RES(DLG_INSERT_CHART) ),
+ aTextFt (this, SW_RES(FT_TEXT )),
+ aRangeEd (this, SW_RES(ED_RANGE )),
+ aRangeFt (this, SW_RES(FT_RANGE )),
+ aFinish (this, SW_RES(BT_FINISH )),
+ aHelp (this, SW_RES(BT_HELP )),
+ aCancel (this, SW_RES(BT_CANCEL )),
+ aHLine (this, SW_RES(FT_HORZLINE )),
+ aPrev (this, SW_RES(BT_PREV )),
+ aNext (this, SW_RES(BT_NEXT )),
+ aFirstRow (this, SW_RES(CB_FIRST_ROW)),
+ aFirstCol (this, SW_RES(CB_FIRST_COL)),
+ aGroup1 (this, SW_RES(GB_1 )),
+ pChartDlg(0),
+ pWrtShell(pSh),
+ pInItemSet(0),
+ pOutItemSet(0),
+ pChartData(0),
+ bUpdateChartData(TRUE),
+ bChartInserted(FALSE)
+{
+ FreeResource();
+ pSh->Push();
+
+ aRangeEd. SetModifyHdl(LINK(this, SwInsertChartDlg, ModifyHdl));
+ aNext. SetClickHdl(LINK(this, SwInsertChartDlg, NextHdl));
+ aFinish. SetClickHdl(LINK(this, SwInsertChartDlg, FinishHdl));
+ aCancel. SetClickHdl(LINK(this, SwInsertChartDlg, CloseHdl));
+ aFirstRow. SetClickHdl(LINK(this, SwInsertChartDlg, ClickHdl));
+ aFirstCol. SetClickHdl(LINK(this, SwInsertChartDlg, ClickHdl));
+
+ if( pWrtShell->IsCrsrInTbl() )
+ {
+ SwFrmFmt* pTblFmt = pWrtShell->GetTableFmt();
+ aAktTableName = pTblFmt->GetName();
+ if( !pWrtShell->IsTableMode() )
+ {
+ pWrtShell->GetView().GetViewFrame()->GetDispatcher()->
+ Execute(FN_TABLE_SELECT_ALL, SFX_CALLMODE_SYNCHRON);
+ }
+
+ pWrtShell->UpdateChartData( aAktTableName, pChartData );
+
+ String sText( String::CreateFromAscii("<.>") );
+ sText.Insert( pWrtShell->GetBoxNms(), 2);
+ sText.Insert( aAktTableName, 1 );
+ if(sText.GetTokenCount(':') == 2)
+ aRangeEd.SetText(sText);
+
+ ModifyHdl( &aRangeEd );
+ }
+ pInItemSet = new SfxItemSet( pWrtShell->GetAttrPool(),
+ CHATTR_START, CHATTR_END, 0 );
+ pOutItemSet = new SfxItemSet( pWrtShell->GetAttrPool(),
+ CHATTR_START, CHATTR_END, 0 );
+ SFX_APP()->LockDispatcher(TRUE);
+ pWrtShell->SelTblCells( LINK( this, SwInsertChartDlg,
+ SelTblCellsNotify) );
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+__EXPORT SwInsertChartDlg::~SwInsertChartDlg()
+{
+ SfxApplication* pSfxApp = SFX_APP();
+ if(pSfxApp->IsDispatcherLocked())
+ pSfxApp->LockDispatcher(FALSE);
+ pWrtShell->EndSelTblCells();
+ pWrtShell->Pop(bChartInserted);
+ delete pInItemSet;
+ delete pOutItemSet;
+ delete pChartDlg;
+ delete pChartData;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+BOOL SwInsertChartDlg::Close()
+{
+ SFX_APP()->LockDispatcher(FALSE);
+ return SfxModelessDialog::Close();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+//OS: WNTMSCI4 optimiert sonst SetPosPixel und Hide weg!
+#pragma optimize("",off)
+
+
+IMPL_LINK( SwInsertChartDlg, NextHdl, Button *, pBtn )
+{
+
+ if ( bUpdateChartData )
+ UpdateData();
+
+ if(!pChartDlg)
+ {
+ pChartDlg = SchDLL::CreateAutoPilotDlg( this, pChartData,
+ *pInItemSet, *pOutItemSet, TRUE);
+ }
+ else if(bUpdateChartData)
+ {
+ SchDLL::ChangeChartData(pChartDlg,
+ pChartData);
+ }
+ bUpdateChartData = FALSE;
+ pChartDlg->SetPosPixel(GetPosPixel());
+ SfxViewFrame* pVFrame = pWrtShell->GetView().GetViewFrame();
+ pVFrame->ShowChildWindow(SID_INSERT_DIAGRAM, FALSE);
+ USHORT nResult = pChartDlg->Execute();
+ switch( nResult )
+ {
+ case RET_OK:
+ FinishHdl( &aFinish );
+ break;
+ case RET_CANCEL:
+ SetPosPixel(pChartDlg->GetPosPixel());
+ Close();
+ break;
+ default:
+ SetPosPixel(pChartDlg->GetPosPixel());
+ pVFrame->ShowChildWindow(SID_INSERT_DIAGRAM, TRUE);
+ break;
+ }
+ return 0;
+}
+
+#pragma optimize("",on)
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwInsertChartDlg, FinishHdl, Button *, EMPTYARG )
+{
+ pWrtShell->GotoTable(aAktTableName);
+ pWrtShell->GetView().GetViewFrame()->ToTop();
+ SwWrtShell* pShell = pWrtShell; // Member auf den Stack wg. Close()
+ SfxItemSet* pOutSet = pOutItemSet;
+ pOutItemSet = 0;
+ bChartInserted = TRUE;
+ BOOL bCrsrInTbl = pShell->IsCrsrInTbl() != 0;
+ BOOL bTblCplx = pShell->IsTblComplexForChart();
+ if( bCrsrInTbl && !bTblCplx && bUpdateChartData )
+ UpdateData();
+ SchMemChart *pChData = pChartData; // Member auf den Stack wg. Close() -> aber erst nach UpdateData()
+ pChartData = 0;
+
+ Close();
+
+ if( bCrsrInTbl && !bTblCplx )
+ {
+ SwTableFUNC( pShell, FALSE ).InsertChart( *pChData, pOutSet );
+ }
+ else
+ {
+ pShell->Insert( 0, SCH_MOD()->pSchChartDocShellFactory, FALSE );
+ }
+ delete pOutSet;
+ delete pChData;
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwInsertChartDlg, ClickHdl, CheckBox *, EMPTYARG )
+{
+ bUpdateChartData = TRUE;
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Handler fuer die Tabellenselektion
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwInsertChartDlg, SelTblCellsNotify, SwWrtShell *, pCaller )
+{
+ SwFrmFmt* pTblFmt = pCaller->GetTableFmt();
+ SwTable* pTbl = 0;
+ if(pTblFmt)
+ {
+ SwClientIter aIter(*pTblFmt);
+ pTbl = (SwTable*)aIter.First(TYPE(SwTable));
+ DBG_ASSERT(pTbl, "keine Tabelle gefunden")
+ }
+ if( pTbl && !pCaller->IsTblComplexForChart() )
+ {
+ String sCommand = String::CreateFromAscii("<.>");
+ sCommand.Insert(pCaller->GetBoxNms(),2);
+ aAktTableName = pTblFmt->GetName();
+ sCommand.Insert(pTblFmt->GetName(), 1);
+ aRangeEd.SetText(sCommand);
+ }
+ else
+ {
+ aRangeEd.SetText(aEmptyStr);
+ }
+ ModifyHdl( &aRangeEd );
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwInsertChartDlg, CloseHdl, Button*, EMPTYARG )
+{
+ Close();
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Handler fuer Edit
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwInsertChartDlg, ModifyHdl, Edit*, pEdit )
+{
+// hier muss getestet werden, ob mit dem aktuellen Eintrag eine
+// gueltige Selektion einer Tabelle aufgebaut werden kann
+
+ BOOL bCorrect = FALSE;
+ BOOL bFinish = FALSE;
+ BOOL bChkFirstRow = TRUE, bChkFirstCol = TRUE;
+
+ String sContent = pEdit->GetText();
+ if( !sContent.Len() )
+ {
+ bCorrect = pWrtShell->IsCrsrInTbl() != 0;
+ aAktTableName = sContent;
+ bFinish = TRUE;
+ }
+ else if( sContent.GetChar( 0 ) == '<' &&
+ sContent.GetTokenCount(':') == 2 &&
+ sContent.GetChar( sContent.Len() - 1 ) == '>')
+ {
+ USHORT nFndPos = sContent.Search( '.' );
+ String aTable( sContent.Copy( 1, nFndPos - 1 ));
+ SwFrmFmt* pFmt = pWrtShell->GetTableFmt();
+ if( ( pFmt && pFmt->GetName() == aTable ) ||
+ pWrtShell->GotoTable( aTable ) )
+ {
+ aAktTableName = aTable;
+
+ sContent.Erase( 0, nFndPos + 1 );
+ sContent.Erase( sContent.Len() - 1 );
+
+ SwTable* pTable = SwTable::FindTable( pWrtShell->GetTableFmt() );
+ SwChartLines aLines;
+ if( !pTable->IsTblComplexForChart( sContent, &aLines ))
+ {
+ bChkFirstCol = 1 < aLines[ 0 ]->Count();
+ bChkFirstRow = 1 < aLines.Count();
+
+ bFinish = bCorrect = TRUE;
+ }
+ }
+ }
+
+ aNext.Enable( bCorrect );
+ aFinish.Enable( bFinish );
+
+ if( bChkFirstRow != aFirstRow.IsEnabled() )
+ {
+ if( bChkFirstRow )
+ aFirstRow.Check( aFirstRow.GetSavedValue() );
+ else
+ {
+ aFirstRow.SaveValue();
+ aFirstRow.Check( FALSE );
+ }
+
+ aFirstRow.Enable( bChkFirstRow );
+ }
+
+ if( bChkFirstCol != aFirstCol.IsEnabled() )
+ {
+ if( bChkFirstCol )
+ aFirstCol.Check( aFirstCol.GetSavedValue() );
+ else
+ {
+ aFirstCol.SaveValue();
+ aFirstCol.Check( FALSE );
+ }
+
+ aFirstCol.Enable( bChkFirstCol );
+ }
+
+ bUpdateChartData = TRUE;
+ return 0;
+}
+
+
+void SwInsertChartDlg::UpdateData()
+{
+ if( !pChartData )
+ pWrtShell->UpdateChartData( aAktTableName, pChartData );
+
+ if( pChartData )
+ {
+ String aData = aFirstRow.IsChecked() ? '1' : '0';
+ aData += aFirstCol.IsChecked() ? '1': '0';
+ pChartData->SomeData2() = aData;
+ aData = aRangeEd.GetText();
+ aData.Erase(1, aAktTableName.Len() +1 );
+ pChartData->SomeData1() = aData;
+ pWrtShell->UpdateChartData( aAktTableName, pChartData );
+ }
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+
+SwInsertChartChild::SwInsertChartChild(Window* pParent,
+ USHORT nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo ) :
+ SfxChildWindow( pParent, nId )
+{
+
+ SwView *pView = ::GetActiveView();
+ SwWrtShell &rSh = pView->GetWrtShell();
+
+ pWindow = new SwInsertChartDlg( pBindings, this, pParent, &rSh );
+ pWindow->SetPosPixel(pInfo->aPos);
+ pWindow->Show();
+
+}
+
+
+void __EXPORT AutoEdit::KeyInput( const KeyEvent& rEvt )
+{
+ USHORT nCode = rEvt.GetKeyCode().GetCode();
+ if( nCode != KEY_SPACE )
+ Edit::KeyInput( rEvt );
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.50 2000/09/18 16:06:07 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.49 2000/09/11 06:52:45 os
+ Get/Set/Has/ToggleChildWindow SfxApplication -> SfxViewFrame
+
+ Revision 1.48 2000/09/07 15:59:31 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.47 2000/04/26 14:59:03 os
+ GetName() returns const String&
+
+ Revision 1.46 2000/04/19 11:22:11 os
+ UNICODE
+
+ Revision 1.45 2000/03/09 21:54:45 jp
+ Changes: SchMemChart in new headerfile
+
+ Revision 1.44 2000/02/11 14:58:21 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.43 1999/02/09 13:31:16 JP
+ Task #61632#: Charts auch in complexen Tabellen zulassen
+
+
+ Rev 1.42 09 Feb 1999 14:31:16 JP
+ Task #61632#: Charts auch in complexen Tabellen zulassen
+
+ Rev 1.41 29 Oct 1998 11:35:34 JP
+ Bug #58509#: im ModifyHdl die FirstRow/-Col Buttons ggfs. disablen
+
+ Rev 1.40 28 Oct 1998 19:34:34 JP
+ Bug #58509#: Button FirstRow/-Col ggfs. disablen
+
+ Rev 1.39 16 Mar 1998 13:55:08 MA
+ #48288# ohne Data leben
+
+ Rev 1.38 29 Nov 1997 14:28:12 MA
+ includes
+
+ Rev 1.37 24 Nov 1997 15:52:20 MA
+ includes
+
+ Rev 1.36 09 Sep 1997 11:39:16 OS
+ define fuer .hxx
+
+ Rev 1.35 01 Sep 1997 13:17:26 OS
+ DLL-Umstellung
+
+ Rev 1.34 08 Aug 1997 17:37:36 OM
+ Headerfile-Umstellung
+
+ Rev 1.33 09 Jul 1997 17:39:18 HJS
+ includes
+
+ Rev 1.32 08 Apr 1997 10:32:30 MA
+ includes
+
+ Rev 1.31 07 Apr 1997 16:54:14 OS
+ FinishHdl: pChartData erst nach UpdateData umkopieren
+
+ Rev 1.30 24 Nov 1996 14:59:48 WP
+ SvGlobalNames beseitigt
+
+ Rev 1.29 11 Nov 1996 11:20:06 MA
+ ResMgr
+
+ Rev 1.28 05 Nov 1996 13:48:20 OS
+ im FinishHdl wird der ViewFrame 'getoppt'
+
+ Rev 1.27 24 Oct 1996 14:17:12 JP
+ AutoEdit:KeyInput aus AutoCorr.cxx hierher verschoben
+
+ Rev 1.26 24 Oct 1996 13:36:42 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.25 02 Oct 1996 19:06:08 MA
+ Umstellung Enable/Disable
+
+ Rev 1.24 28 Aug 1996 14:33:14 OS
+ includes
+
+ Rev 1.23 23 Aug 1996 14:37:14 OS
+ FinishHdl: nach dem Close keine Member benutzen
+
+ Rev 1.22 22 Aug 1996 12:40:44 OS
+ Close im FinishHdl vor dem Einfuegen des Charts rufen
+
+ Rev 1.21 20 Aug 1996 11:34:00 OS
+ Dialog nicht mit Show/Hide, sondern mit ShowChildWindow anzeigen/verstecken
+
+ Rev 1.20 29 Jul 1996 13:07:04 OS
+ doch wieder mit Close()
+
+ Rev 1.19 25 Jul 1996 15:36:12 OS
+ kein Close()
+
+ Rev 1.18 26 Jun 1996 15:25:20 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.17 11 Jun 1996 13:42:32 OS
+ alten Cursor nur zurueckholen, wenn Chart nicht eingefuegt wurde
+
+ Rev 1.16 10 Jun 1996 20:40:10 MA
+ fix: IsTblComplexForChart
+
+ Rev 1.15 06 Jun 1996 15:53:18 OS
+ keine Tabellenselektion in komplexen Tabellen
+
+ Rev 1.14 30 Apr 1996 16:29:44 MA
+ fix: ggf. ein Update beim Fertigstellen
+
+------------------------------------------------------------------------*/
+
+
+
+
diff --git a/sw/source/ui/table/chartins.hrc b/sw/source/ui/table/chartins.hrc
new file mode 100644
index 000000000000..f83c07c31b77
--- /dev/null
+++ b/sw/source/ui/table/chartins.hrc
@@ -0,0 +1,81 @@
+/*************************************************************************
+ *
+ * $RCSfile: chartins.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _CHARTINS_HRC
+#define _CHARTINS_HRC
+
+#include "rcid.hrc"
+#include "table.hrc"
+
+#define ED_RANGE 1
+#define FT_RANGE 2
+#define BT_NEXT 3
+#define BT_FINISH 4
+#define BT_HELP 5
+#define BT_CANCEL 6
+#define CB_FIRST_ROW 7
+#define CB_FIRST_COL 8
+#define BT_PREV 9
+#define FT_HORZLINE 10
+#define FT_TEXT 11
+#define GB_1 12
+
+#endif
diff --git a/sw/source/ui/table/chartins.src b/sw/source/ui/table/chartins.src
new file mode 100644
index 000000000000..da4ee97c44df
--- /dev/null
+++ b/sw/source/ui/table/chartins.src
@@ -0,0 +1,349 @@
+/*************************************************************************
+ *
+ * $RCSfile: chartins.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+/* StarView ressource file */
+
+#include "chartins.hrc"
+#include "helpid.h"
+ModelessDialog DLG_INSERT_CHART
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 297 , 169 ) ;
+ Moveable = TRUE ;
+ HelpID = HID_INSERT_CHART ;
+ Hide = TRUE ;
+ Text = "Autoformat Diagramm (1-4)" ;
+ Text [ ENGLISH ] = "Autoformat Chart (1-4)" ;
+ Text [ ENGLISH_US ] = "AutoFormat Chart (1-4)" ;
+ FixedText FT_TEXT
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 285 , 49 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Falls die markierten Zellen nicht die gewünschten Daten enthalten, markieren Sie jetzt den Bereich.\n\nBeziehen Sie die Zellen mit Spalten- bzw. Zeilenbezeichnern mit ein, wenn Sie diese in Ihrer Grafik dargestellt haben möchten : Falls die markierten Zellen nicht die gew³nschten Daten enthalten, markieren Sie jetzt den Bereich.\n\nBeziehen Sie die Zellen mit Spalten- bzw. Zeilenbezeichnern mit ein, wenn Sie diese in Ihrer Grafik dargestellt haben m÷chten */
+ Text = "Falls die markierten Zellen nicht die gewünschten Daten enthalten, markieren Sie jetzt den Bereich.\n\nBeziehen Sie die Zellen mit Spalten- bzw. Zeilenbezeichnern mit ein, wenn Sie diese in Ihrer Grafik dargestellt haben möchten" ;
+ Text [ ENGLISH ] =
+ "If the marked area does not represent the desired data, mark your data now.\nInclude the cells containing the column- and row identifier in case you want them to be included in your chart." ;
+ Text [ ENGLISH_US ] = "If the marked cells do not represent the desired data, mark the area now.\nInclude the cells containing the column and row labels if you want them to be included in your chart." ;
+ WordBreak = TRUE ;
+ Text [ italian ] = "Se le celle evidenziate non contengono i dati voluti, selezionate l'area.\n\nIncludete le celle contenenti i titoli delle colonne e delle righe se volete che compaiano nel diagramma." ;
+ Text [ spanish ] = "En caso de que las celdas marcadas no contengan los datos deseados, marque ahora el área.\n\nIncluya las celdas con los nombres de las columnas y filas si desea que estas aparezcan en su gráfico." ;
+ Text [ french ] = "Si les cellules marquées ne contiennent pas les données souhaitées, sélectionnez à présent la plage. \n\nIncluez les cellules avec les intitulés de colonnes et de lignes pour les faire figurer dans le diagramme." ;
+ Text [ dutch ] = "Als de gemarkeerde cellen niet de gewenste gegevens bevatten markeert u nu het bereik.\n\nMarkeer eveneens de cellen met de kolom- resp. rijlabels als u deze in uw afbeelding wilt weergeven." ;
+ Text [ swedish ] = "Om de markerade cellerna inte innehåller de önskade data, markera då området nu.\n\nTa med de celler som innehåller kolumn- och radöverskrifter om dessa skall visas i grafiken." ;
+ Text [ danish ] = "Hvis de markerede celler ikke indeholder de ønskede data, marker det ønskede område nu.\n\nInkluder cellerne med kolonne- hhv.rækkeetiketter, hvis de skal vises i din grafik." ;
+ Text [ portuguese_brazilian ] = "Falls die markierten Zellen nicht die gewünschten Daten enthalten, markieren Sie jetzt den Bereich.\n\nBeziehen Sie die Zellen mit Spalten- bzw. Zeilenbezeichnern mit ein, wenn Sie diese in Ihrer Grafik dargestellt haben möchten" ;
+ Text [ portuguese ] = "Se as células marcadas não incluírem os dados desejados, marque-os agora.\n\nInclua as células contendo os títulos das colunas e linhas se desejar vê-las representadas no seu gráfico." ;
+ Text[ chinese_simplified ] = "Èç¹ûÑ¡Öеĵ¥Ôª¸ñûÓÐÊý¾Ý£¬ÄÇôÇëÄúÑ¡ÔñÇøÓò¡£\n\nÄú¿ÉÒÔҲѡÖÐÁбêÌâºÍÐбêÌ⣬Èç´ËÕâЩ×ÊÁÏÒ²»á±»ÏÔʾÔÚͼ±íÄÚ¡£";
+ Text[ russian ] = "Åñëè îòìå÷åííûå ÿ÷åéêè íå ñîäåðæàò æåëàåìûõ äàííûõ, âûäåëèòå ñåé÷àñ ýòó îáëàñòü.\n\nÂêëþ÷èòå òàêæå ÿ÷åéêè ñ ïîìåòêàìè ñòîëáöîâ èëè ñòðîê, åñëè Âû õîòèòå èõ ïðåäñòàâèòü íà Âàøåì ðèñóíêå.";
+ Text[ polish ] = "Jeœli zaznaczone komórki nie zawieraj¹ potrzebnych danych, zaznacz teraz ten obszar ponownie.\n\nZaznacz równie¿ komórki z etykietami wierszy lub kolumn , jeœli maj¹ one zostaæ przedstawione w twojej grafice.";
+ Text[ japanese ] = "•K—v‚ÈÃÞ°À‚ªŠÜ‚Ü‚ê‚Ä‚¢‚é¾Ù‚ª‚Ü‚¾‘I‘ð‚³‚ê‚Ä‚¢‚È‚¢ê‡‚ÍA¡‚»‚͈̔͂ð‘I‘ð‚µ‚Ä‰º‚³‚¢B\n\n¸Þ×Ì‚É€–Ú–¼‚ð•\\Ž¦‚·‚邽‚ß‚É‚ÍAs‚Æ—ñ‚Ì€–Ú—“‚ðŠÜ‚ß‚½¾Ù”͈͂ð“ü—Í‚µ‚ĉº‚³‚¢B";
+ Text[ chinese_traditional ] = "¦pªG¿ï¨úªºÀx¦s®æ¨S¦³¸ê®Æ¡M´N½Ð±z¿ï¾Ü°Ï°ì¡C\n\n±z¥i¥H¿ï¤¤¦C¼ÐÃD©M¦æ¼ÐÃD¡A³o¼Ë¡A¹Ïªí¤]·|Åã¥Ü¥X³o¨Ç¸ê®Æ¡C";
+ Text[ arabic ] = "ÅÐÇ ßÇäÊ ÇáÎáÇíÇ ÇáãÍÏÏÉ áÇ ÊÍÊæí Úáì ÇáÈíÇäÇÊ ÇáãØáæÈÉ¡ Þã ÈÊÍÏíÏ ÇáäØÇÞ\n\nÈãÇ Ýí Ðáß ÇáÎáÇíÇ¡ ÇáÊí ÊÍÊæí Úáì ÚäÇæíä ÕÝæÝ Ãæ ÃÚãÏÉ¡ æÐáß ÅÐÇ ßäÊ ÊÑíÏ ÙåæÑåÇ Ýí ÑÓãÊß.";
+ Text[ dutch ] = "Als de gemarkeerde cellen niet de gewenste gegevens bevatten markeert u nu het bereik.\n\nMarkeer eveneens de cellen met de kolom- resp. rijlabels als u deze in uw afbeelding wilt weergeven.";
+ Text[ chinese_simplified ] = "Èç¹ûÑ¡Öеĵ¥Ôª¸ñûÓÐÊý¾Ý£¬ÄÇôÇëÄúÑ¡ÔñÇøÓò¡£\n\nÄú¿ÉÒÔҲѡÖÐÁбêÌâºÍÐбêÌ⣬Èç´ËÕâЩ×ÊÁÏÒ²»á±»ÏÔʾÔÚͼ±íÄÚ¡£";
+ Text[ greek ] = "Áí ôá åðéëåãìÝíá êåëéÜ äåí ðåñéÝ÷ïõí ôá äåäïìÝíá ðïõ åðéèõìåßôå, åðéëÝîôå ôçí ðåñéï÷Þ ôþñá. Áí èÝëåôå\n\níá åìöáíéóôïýí óôï ãñáöéêü óáò êáé ïé åðéãñáöÝò óôçëþí êáé ãñáììþí, ôüôå åðéëÝîôå êáé áõôÜ ôá äåäïìÝíá.";
+ Text[ korean ] = "¼±ÅÃÇ¥½ÃµÈ ¼¿ÀÌ ¿øÇÏ´Â µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖÁö ¾ÊÀ» °æ¿ì, Áö±Ý ¿µ¿ªÀ» Ç¥½ÃÇϽʽÿÀ. \n\n¿­ ³»Áö Çà ¶óº§À» Áö´Ñ ¼¿µéÀ» ±×·¡ÇÈ¿¡ ³ªÅ¸³»°í ½ÍÀ¸¸é ÀÌ ¼¿µéÀ» ÇÔ²² Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À.";
+ Text[ turkish ] = "Seçilen hücreler, istenen verileri içermiyorsa aralýðý þimdi seçin.\n\nGrafikte görünmelerini istiyorsanýz, sütun ya da satýr baþlýklarýný içeren hücreleri de seçin";
+ };
+ FixedText FT_RANGE
+ {
+ Pos = MAP_APPFONT ( 12 , 69 ) ;
+ Size = MAP_APPFONT ( 38 , 10 ) ;
+ Text = "~Bereich" ;
+ Text [ ENGLISH ] = "~Area" ;
+ Text [ ENGLISH_US ] = "~Area" ;
+ Text [ italian ] = "Area" ;
+ Text [ spanish ] = "~Área" ;
+ Text [ french ] = "C~atégorie" ;
+ Text [ dutch ] = "~Bereik" ;
+ Text [ swedish ] = "~Område" ;
+ Text [ danish ] = "Område" ;
+ Text [ portuguese_brazilian ] = "~Bereich" ;
+ Text [ portuguese ] = "~Área" ;
+ Text[ chinese_simplified ] = "ÇøÓò(~A)";
+ Text[ russian ] = "Îáëàñòü";
+ Text[ polish ] = "Obszar";
+ Text[ japanese ] = "”͈Í(~A)";
+ Text[ chinese_traditional ] = "°Ï°ì(~A)";
+ Text[ arabic ] = "ÇáäØÇÞ";
+ Text[ dutch ] = "~Bereik";
+ Text[ chinese_simplified ] = "ÇøÓò(~A)";
+ Text[ greek ] = "Ðåñéï÷Þ";
+ Text[ korean ] = "¿µ¿ª(~A)";
+ Text[ turkish ] = "~Aralýk";
+ };
+ Edit ED_RANGE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 56 , 68 ) ;
+ Size = MAP_APPFONT ( 229 , 12 ) ;
+ };
+ CheckBox CB_FIRST_ROW
+ {
+ Pos = MAP_APPFONT ( 12 , 86 ) ;
+ Size = MAP_APPFONT ( 150 , 12 ) ;
+ TabStop = TRUE ;
+ Text = "Erste ~Zeile als Beschriftung" ;
+ Text [ ENGLISH ] = "First ~row as label" ;
+ Text [ ENGLISH_US ] = "~First row as caption" ;
+ Check = TRUE ;
+ 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 ~raden som etikett" ;
+ Text [ danish ] = "Første række som etiket" ;
+ Text [ portuguese_brazilian ] = "Erste ~Reihe als Beschriftung" ;
+ Text [ portuguese ] = "Primeira ~linha como etiqueta" ;
+ Text[ chinese_simplified ] = "µÚÒ»ÐÐ×÷Ϊ±êÌâ(~R)";
+ Text[ russian ] = "Ïåðâàÿ ñòðîêà êàê íàçâàíèå";
+ Text[ polish ] = "Pierwszy wiersz jako etykieta";
+ Text[ japanese ] = "Œ©o‚µ‚Æ‚µ‚Ä‚Ìʼn‚Ìs(~Rj";
+ Text[ chinese_traditional ] = "²Ä¤@¦æ§@¬°¼ÐÃD(~R)";
+ Text[ arabic ] = "ÇáÕÝ ÇáÃæá ßÚäæÇä";
+ Text[ dutch ] = "Eerste ~rij als kop";
+ Text[ chinese_simplified ] = "µÚÒ»ÐÐ×÷Ϊ±êÌâ(~R)";
+ Text[ greek ] = "Ðñþôç ãñáììÞ ùò åðéãñáöÞ";
+ Text[ korean ] = "ù¹ø° ÇàÀ» ĸ¼ÇÀ¸·Î(~F)";
+ Text[ turkish ] = "Baþlýklar ~birinci satýrda";
+ };
+ CheckBox CB_FIRST_COL
+ {
+ Pos = MAP_APPFONT ( 12 , 102 ) ;
+ Size = MAP_APPFONT ( 150 , 12 ) ;
+ TabStop = TRUE ;
+ Text = "Erste ~Spalte als Beschriftung" ;
+ Text [ ENGLISH ] = "First ~column as label" ;
+ Text [ ENGLISH_US ] = "First ~column as caption" ;
+ Check = TRUE ;
+ Text [ italian ] = "Prima colonna come dicitura" ;
+ Text [ spanish ] = "Primera c~olumna como etiqueta" ;
+ Text [ french ] = "Première ~colonne comme étiquette" ;
+ Text [ dutch ] = "Eerste ~kolom als kop" ;
+ Text [ swedish ] = "Första kolumnen ~som etikett" ;
+ Text [ danish ] = "Første kolonne som etiket" ;
+ Text [ portuguese_brazilian ] = "Erste ~Spalte als Beschriftung" ;
+ Text [ portuguese ] = "Primeira ~coluna como etiqueta" ;
+ Text[ chinese_simplified ] = "µÚÒ»ÁÐ×÷Ϊ±êÌâ(~C)";
+ Text[ russian ] = "Ïåðâûé ñòîëáåö êàê íàçâàíèå";
+ Text[ polish ] = "Pierwsza kolumna jako etykieta";
+ Text[ japanese ] = "Œ©o‚µ‚Æ‚µ‚Ä‚Ìʼn‚Ì—ñ(~C)";
+ Text[ chinese_traditional ] = "²Ä¤@Äæ·í§@¼ÐÃD(~C)";
+ Text[ arabic ] = "ÇáÚãæÏ ÇáÃæá ßÚäæÇä";
+ Text[ dutch ] = "Eerste ~kolom als kop";
+ Text[ chinese_simplified ] = "µÚÒ»ÁÐ×÷Ϊ±êÌâ(~C)";
+ Text[ greek ] = "Ðñþôç óôÞëç ùò åðéãñáöÞ";
+ Text[ korean ] = "ù¹ø° ¿­À» ĸ¼ÇÀ¸·Î(~C)";
+ Text[ turkish ] = "Baþlýklar ~birinci sütunda";
+ };
+ GroupBox GB_1
+ {
+ Pos = MAP_APPFONT ( 6 , 56 ) ;
+ Size = MAP_APPFONT ( 285 , 65 ) ;
+ Text = "Auswahl" ;
+ Text [ English ] = "Selection" ;
+ Text [ english_us ] = "Selection" ;
+ Text [ italian ] = "Selezione" ;
+ Text [ spanish ] = "Selección" ;
+ Text [ french ] = "Sélection" ;
+ Text [ dutch ] = "Selectie" ;
+ Text [ swedish ] = "Urval" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ portuguese_brazilian ] = "Auswahl" ;
+ Text [ portuguese ] = "Selecção" ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ";
+ Text[ russian ] = "Âûáîð";
+ Text[ polish ] = "Wybór";
+ Text[ japanese ] = "‘I‘ð";
+ Text[ chinese_traditional ] = "¿ï¾Ü";
+ Text[ arabic ] = "ÇáÊÍÏíÏ";
+ Text[ dutch ] = "Selectie";
+ Text[ chinese_simplified ] = "Ñ¡Ôñ";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ turkish ] = "Seçim";
+ };
+ FixedText FT_HORZLINE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 137 ) ;
+ Size = MAP_APPFONT ( 284 , 2 ) ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 6 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 60 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton BT_PREV
+ {
+ Pos = MAP_APPFONT ( 130 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ // ### ACHTUNG: Neuer Text in Resource? << ~Zurück : << Zurück
+ /* ### ACHTUNG: Neuer Text in Resource? << ~Zurück : << ~Zur³ck */
+ Text = "<< Z~urück" ;
+ Text [ ENGLISH ] = "<< Back" ;
+ TabStop = TRUE ;
+ Disable = TRUE ;
+ Text [ dutch ] = "<< Vor~ige" ;
+ Text [ english_us ] = "<< ~Back" ;
+ Text [ italian ] = "Selezione" ;
+ Text [ spanish ] = "<< ~Regresar" ;
+ Text [ french ] = "<< ~Précédent" ;
+ Text [ swedish ] = "<< ~Tillbaka" ;
+ Text [ danish ] = "<< Tilbage" ;
+ Text [ portuguese ] = "<< ~Anterior" ;
+ Text [ portuguese_brazilian ] = "<< ~Zurück" ;
+ Text[ chinese_simplified ] = "<< ·µ»Ø(~B)";
+ Text[ russian ] = "<< Íàçàä";
+ Text[ polish ] = "<< Wstecz";
+ Text[ japanese ] = "<<–ß‚é(~B)";
+ Text[ chinese_traditional ] = "<< ªð¦^(~B)";
+ Text[ arabic ] = ">> ÇáÓÇÈÞ";
+ Text[ dutch ] = "<< Vor~ige";
+ Text[ chinese_simplified ] = "<< ·µ»Ø(~B)";
+ Text[ greek ] = "<< Ðßóù";
+ Text[ korean ] = "<<µÚ·Î(~B)";
+ Text[ turkish ] = "<< G~eri";
+ };
+ PushButton BT_NEXT
+ {
+ Pos = MAP_APPFONT ( 185 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "~Weiter >>" ;
+ Text [ ENGLISH ] = "Continue >>" ;
+ Disable = TRUE ;
+ TabStop = TRUE ;
+ Text [ dutch ] = "~Volgende >>" ;
+ Text [ english_us ] = "~Next >>" ;
+ Text [ italian ] = "~Avanti >>" ;
+ Text [ spanish ] = "~Siguiente >>" ;
+ Text [ french ] = "~Suivant >>" ;
+ Text [ swedish ] = "~Nästa >>" ;
+ Text [ danish ] = "Næste >>" ;
+ Text [ portuguese ] = "~Continuar >>" ;
+ Text [ portuguese_brazilian ] = "~Weiter >>" ;
+ Text[ chinese_simplified ] = "¼ÌÐø(~N)>>";
+ Text[ russian ] = "Äàëåå >>";
+ Text[ polish ] = "Dalej >>";
+ Text[ japanese ] = "ŽŸ‚Ö >>(~N)";
+ Text[ chinese_traditional ] = "Ä~Äò(~N)";
+ Text[ arabic ] = "ÇáÊÇáí <<";
+ Text[ dutch ] = "~Volgende >>";
+ Text[ chinese_simplified ] = "¼ÌÐø(~N)>>";
+ Text[ greek ] = "Åðüìåíï >>";
+ Text[ korean ] = "´ÙÀ½ >>(~N)";
+ Text[ turkish ] = "~Ýleri >>";
+ };
+ PushButton BT_FINISH
+ {
+ Pos = MAP_APPFONT ( 240 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Text = "~Fertig stellen" ;
+ Text [ ENGLISH ] = "Finish >>" ;
+ Text [ dutch ] = "~Voltooien" ;
+ Text [ english_us ] = "Cre~ate" ;
+ Text [ italian ] = "~Crea" ;
+ Text [ spanish ] = "~Crear" ;
+ Text [ french ] = "~Créer" ;
+ Text [ swedish ] = "~Färdigställ" ;
+ Text [ danish ] = "Udfør" ;
+ Text [ portuguese ] = "~Criar" ;
+ Text [ portuguese_brazilian ] = "~Fertigstellen" ;
+ Text[ chinese_simplified ] = "Íê³É(~A)";
+ Text[ russian ] = "Ãîòîâî";
+ Text[ polish ] = "Utwórz";
+ Text[ japanese ] = "Š®—¹(~A)";
+ Text[ chinese_traditional ] = "§¹¦¨(~A)";
+ Text[ arabic ] = "ÅäÔÇÁ";
+ Text[ dutch ] = "~Voltooien";
+ Text[ chinese_simplified ] = "Íê³É(~A)";
+ Text[ greek ] = "Äçìéïõñãßá";
+ Text[ korean ] = "¸¸µé±â(~A)";
+ Text[ turkish ] = "~Oluþtur";
+ };
+ Text [ italian ] = "Formattazione automatica diagramma (1-4)" ;
+ Text [ spanish ] = "AutoFormato diagrama (1-4)" ;
+ Text [ french ] = "AutoFormat de diagramme (1-4)" ;
+ Text [ dutch ] = "AutoOpmaak diagram (1-4)" ;
+ Text [ swedish ] = "AutoFormat Diagram (1-4)" ;
+ Text [ danish ] = "AutoFormat diagram (1-4)" ;
+ Text [ portuguese_brazilian ] = "Autoformat Diagramm (1-4)" ;
+ Text [ portuguese ] = "AutoFormato gráfico (1-4)" ;
+ Text[ chinese_simplified ] = "×Ô¶¯¸ñʽͼ±í(1-4)";
+ Text[ russian ] = "Àâòîôîðìàò äèàãðàììû (1-4)";
+ Text[ polish ] = "Autoformatowanie wykresu (1-4)";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä ¸Þ×Ì(1-4)";
+ Text[ chinese_traditional ] = "¦Û°Ê®æ¦¡¹Ïªí(1-4)";
+ Text[ arabic ] = "ÊäÓíÞ ÊáÞÇÆí áÑÓã ÈíÇäí (1Ü4)";
+ Text[ dutch ] = "AutoOpmaak diagram (1-4)";
+ Text[ chinese_simplified ] = "×Ô¶¯¸ñʽͼ±í(1-4)";
+ Text[ greek ] = "ÁõôïÌïñöïðïßçóç äéáãñÜììáôïò (1-4)";
+ Text[ korean ] = "ÀÚµ¿ ¼­½Ä Â÷Æ® (1-4)";
+ Text[ turkish ] = "Otomatik þema formatlama (1-4)";
+};
diff --git a/sw/source/ui/table/colwd.cxx b/sw/source/ui/table/colwd.cxx
new file mode 100644
index 000000000000..ba5cb6c0556f
--- /dev/null
+++ b/sw/source/ui/table/colwd.cxx
@@ -0,0 +1,209 @@
+/*************************************************************************
+ *
+ * $RCSfile: colwd.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SFX_SAVEOPT_HXX //autogen
+#include <sfx2/saveopt.hxx>
+#endif
+#ifndef _SVX_DLGUTIL_HXX //autogen
+#include <svx/dlgutil.hxx>
+#endif
+
+
+#include "cmdid.h"
+#include "colwd.hxx"
+#include "tablemgr.hxx"
+
+#include "colwd.hrc"
+#include "table.hrc"
+
+
+IMPL_LINK_INLINE_START( SwTableWidthDlg, LoseFocusHdl, Edit *, EMPTYARG )
+{
+ USHORT nId = (USHORT)aColEdit.GetValue()-1;
+ const SwTwips lWidth = rFnc.GetColWidth(nId);
+ aWidthEdit.SetValue(aWidthEdit.Normalize(lWidth), FUNIT_TWIP);
+ aWidthEdit.SetMax(aWidthEdit.Normalize(rFnc.GetMaxColWidth(nId)), FUNIT_TWIP);
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwTableWidthDlg, LoseFocusHdl, Edit *, EMPTYARG )
+
+
+
+SwTableWidthDlg::SwTableWidthDlg(Window *pParent, SwTableFUNC &rTableFnc ) :
+
+ SvxStandardDialog( pParent, SW_RES(DLG_COL_WIDTH) ),
+
+ aColFT(this, SW_RES(FT_COL)),
+ aColEdit(this, SW_RES(ED_COL)),
+ aWidthFT(this, SW_RES(FT_WIDTH)),
+ aWidthEdit(this, SW_RES(ED_WIDTH)),
+ aWidthFrm(this, SW_RES(GB_WIDTH)),
+ aOKBtn(this, SW_RES(BT_OK)),
+ aCancelBtn(this, SW_RES(BT_CANCEL)),
+ aHelpBtn(this, SW_RES(BT_HELP)),
+ rFnc(rTableFnc)
+{
+ FreeResource();
+ ::SetFieldUnit(aWidthEdit, OFF_APP()->GetOptions().GetMetric());
+ aColEdit.SetValue( rFnc.GetCurColNum() +1 );
+ aWidthEdit.SetMin(aWidthEdit.Normalize(MINLAY), FUNIT_TWIP);
+ if(!aWidthEdit.GetMin())
+ aWidthEdit.SetMin(1);
+
+ if(rFnc.GetColCount() == 0)
+ aWidthEdit.SetMin(aWidthEdit.Normalize(rFnc.GetColWidth(0)), FUNIT_TWIP);
+ aColEdit.SetMax(rFnc.GetColCount() +1 );
+ aColEdit.SetModifyHdl(LINK(this,SwTableWidthDlg, LoseFocusHdl));
+ LoseFocusHdl();
+}
+
+
+
+void SwTableWidthDlg::Apply()
+{
+ rFnc.InitTabCols();
+ rFnc.SetColWidth( aColEdit.GetValue()-1,
+ aWidthEdit.Denormalize(aWidthEdit.GetValue(FUNIT_TWIP)));
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.40 2000/09/18 16:06:07 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.39 2000/05/26 07:21:33 os
+ old SW Basic API Slots removed
+
+ Revision 1.38 1998/05/13 14:00:46 OS
+ HelpButton
+
+
+ Rev 1.37 13 May 1998 16:00:46 OS
+ HelpButton
+
+ Rev 1.36 24 Nov 1997 15:52:22 MA
+ includes
+
+ Rev 1.35 03 Nov 1997 13:56:50 MA
+ precomp entfernt
+
+ Rev 1.34 11 Dec 1996 20:58:14 MH
+ includes
+
+ Rev 1.33 11 Dec 1996 08:43:16 OS
+ Minimalwert nie NULL, Einheit richtig einstellen
+
+ Rev 1.32 11 Nov 1996 11:19:56 MA
+ ResMgr
+
+ Rev 1.31 05 Sep 1996 08:19:30 OS
+ richtige Min/Max-Einstellungen fuer einspaltige Tabellen
+
+ Rev 1.30 28 Aug 1996 14:33:16 OS
+ includes
+
+ Rev 1.29 26 Jun 1996 15:25:20 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.28 06 Jun 1996 14:55:42 OS
+ MINLAY als Minimum fuer Breite setzen
+
+ Rev 1.27 22 Mar 1996 14:16:30 HJS
+ umstellung 311
+
+ Rev 1.26 07 Feb 1996 08:11:40 OS
+ INLINE-LoseFocusHdl muss vor erster Benutzung definiert werden
+
+ Rev 1.25 06 Feb 1996 15:21:22 JP
+ Link Umstellung 305
+
+ Rev 1.24 24 Nov 1995 16:58:58 OM
+ PCH->PRECOMPILED
+
+ Rev 1.23 10 Nov 1995 15:26:44 OS
+ Execute mit 0L abschliessen
+
+ Rev 1.22 08 Nov 1995 13:34:38 OS
+ Change => Set
+
+ Rev 1.21 05 Nov 1995 16:49:08 OS
+ Dtor ueberfluessig, -RecordFlag, Aktion ueber Dispatcher
+
+ Rev 1.20 13 Sep 1995 17:09:44 OS
+ Recording ausgeweitet
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/table/colwd.hrc b/sw/source/ui/table/colwd.hrc
new file mode 100644
index 000000000000..950e861e779b
--- /dev/null
+++ b/sw/source/ui/table/colwd.hrc
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * $RCSfile: colwd.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define FT_COL 1
+#define ED_COL 2
+#define FT_WIDTH 3
+#define ED_WIDTH 4
+#define GB_WIDTH 5
+
+#define BT_OK 100
+#define BT_CANCEL 101
+#define BT_HELP 102
+
diff --git a/sw/source/ui/table/colwd.src b/sw/source/ui/table/colwd.src
new file mode 100644
index 000000000000..2cc9279f2fd8
--- /dev/null
+++ b/sw/source/ui/table/colwd.src
@@ -0,0 +1,232 @@
+/*************************************************************************
+ *
+ * $RCSfile: colwd.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "table.hrc"
+#include "colwd.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ // #define DLG_COL_WIDTH 256
+ModalDialog DLG_COL_WIDTH
+{
+ HelpID = FN_TABLE_SET_COL_WIDTH ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 149 , 60 ) ;
+ 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" ;
+ Moveable = TRUE ;
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 94 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 94 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 94 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_WIDTH
+ {
+ Pos = MAP_APPFONT ( 12 , 31 ) ;
+ Size = MAP_APPFONT ( 22 , 8 ) ;
+ Text = "~Breite" ;
+ Text [ ENGLISH ] = "~Width" ;
+ Text [ norwegian ] = "~Bredde" ;
+ Text [ italian ] = "~Largh." ;
+ Text [ portuguese_brazilian ] = "~Largura" ;
+ Text [ portuguese ] = "~Largura" ;
+ Text [ finnish ] = "~Leveys" ;
+ Text [ danish ] = "Bredde" ;
+ Text [ french ] = "~Largeur" ;
+ Text [ swedish ] = "~Bredd" ;
+ Text [ dutch ] = "B~reedte" ;
+ Text [ spanish ] = "A~ncho" ;
+ Text [ english_us ] = "~Width" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¿í(~W)";
+ Text[ russian ] = "Øèðèíà";
+ Text[ polish ] = "Szer.";
+ Text[ japanese ] = "•(~W)";
+ Text[ chinese_traditional ] = "¼e(~W)";
+ Text[ arabic ] = "ÇáÚÑÖ";
+ Text[ greek ] = "ÐëÜôïò";
+ Text[ korean ] = "³Êºñ(~W)";
+ Text[ turkish ] = "~Geniþlik";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField ED_WIDTH
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 41 , 30 ) ;
+ Size = MAP_APPFONT ( 38 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 50 ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ SpinSize = 10 ;
+ Value = 10 ;
+ Unit = FUNIT_CM ;
+ First = 100 ;
+ Last = 9999 ;
+ };
+ GroupBox GB_WIDTH
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 81 , 50 ) ;
+ 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 ] = "Szer.";
+ Text[ japanese ] = "•";
+ Text[ chinese_traditional ] = "¼e";
+ Text[ arabic ] = "ÇáÚÑÖ";
+ Text[ greek ] = "ÐëÜôïò";
+ Text[ korean ] = "³Êºñ";
+ Text[ turkish ] = "Geniþlik";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_COL
+ {
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ Size = MAP_APPFONT ( 29 , 8 ) ;
+ Text = "~Spalte" ;
+ Text [ ENGLISH ] = "~Column" ;
+ Text [ norwegian ] = "~Kolonne" ;
+ Text [ italian ] = "Colonna" ;
+ Text [ portuguese_brazilian ] = "~Coluna" ;
+ Text [ portuguese ] = "~Coluna" ;
+ Text [ finnish ] = "~Palsta" ;
+ Text [ danish ] = "Kolonne" ;
+ Text [ french ] = "~Colonne" ;
+ Text [ swedish ] = "~Kolumn" ;
+ Text [ dutch ] = "~Kolom" ;
+ Text [ spanish ] = "Colu~mna" ;
+ Text [ english_us ] = "~Column" ;
+ Left = TRUE ;
+ 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 ] = " ";
+ };
+ NumericField ED_COL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 41 , 14 ) ;
+ Size = MAP_APPFONT ( 38 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 99 ;
+ Repeat = TRUE ;
+ };
+ 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 ] = " ";
+};
diff --git a/sw/source/ui/table/convert.cxx b/sw/source/ui/table/convert.cxx
new file mode 100644
index 000000000000..f0c2e798a902
--- /dev/null
+++ b/sw/source/ui/table/convert.cxx
@@ -0,0 +1,331 @@
+/*************************************************************************
+ *
+ * $RCSfile: convert.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+
+#ifndef _MODOPT_HXX //autogen
+#include <modcfg.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#include "swmodule.hxx"
+#include "cmdid.h"
+#include "convert.hxx"
+#include "tablemgr.hxx"
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "tautofmt.hxx"
+#include "tblafmt.hxx"
+
+#include "table.hrc"
+#include "convert.hrc"
+
+
+void SwConvertTableDlg::GetValues( char& rDelim,
+ USHORT& rInsTblFlags,
+ SwTableAutoFmt *& prTAFmt )
+{
+ if( aTabBtn.IsChecked() )
+ rDelim = aKeepColumn.IsChecked() ? 0x09 : 0x0b;
+ else if( aSemiBtn.IsChecked() )
+ rDelim = ';';
+ else if( aOtherBtn.IsChecked() && aOtherEd.GetText().Len() )
+ rDelim = aOtherEd.GetText().GetChar( 0 );
+ else
+ rDelim = cParaDelim;
+
+ rInsTblFlags = 0;
+ if (aBorderCB.IsChecked())
+ rInsTblFlags |= DEFAULT_BORDER;
+ if (aHeaderCB.IsChecked())
+ rInsTblFlags |= HEADLINE;
+ if (aRepeatHeaderCB.IsEnabled() && aRepeatHeaderCB.IsChecked())
+ rInsTblFlags |= REPEAT;
+ if (!aDontSplitCB.IsChecked())
+ rInsTblFlags |= SPLIT_LAYOUT;
+
+ if( pTAutoFmt )
+ prTAFmt = new SwTableAutoFmt( *pTAutoFmt );
+}
+
+
+SwConvertTableDlg::SwConvertTableDlg( SwView& rView )
+
+ : SfxModalDialog( &rView.GetViewFrame()->GetWindow(), SW_RES(DLG_CONV_TEXT_TABLE)),
+
+ aTabBtn (this, SW_RES(CB_TAB)),
+ aSemiBtn (this, SW_RES(CB_SEMI)),
+ aParaBtn (this, SW_RES(CB_PARA)),
+ aDelimFrm (this, SW_RES(GB_DELIM)),
+ aOtherBtn (this, SW_RES(RB_OTHER)),
+ aOtherEd (this, SW_RES(ED_OTHER)),
+ aKeepColumn (this, SW_RES(CB_KEEPCOLUMN)),
+ aHeaderCB (this, SW_RES(CB_HEADER)),
+ aRepeatHeaderCB (this, SW_RES(CB_REPEAT_HEADER)),
+ aDontSplitCB (this, SW_RES(CB_DONT_SPLIT)),
+ aBorderCB (this, SW_RES(CB_BORDER)),
+ aOptionsGB (this, SW_RES(GB_OPTIONS)),
+
+ aOkBtn(this,SW_RES(BT_OK)),
+ aCancelBtn(this,SW_RES(BT_CANCEL)),
+ aHelpBtn(this, SW_RES(BT_HELP)),
+ aAutoFmtBtn(this,SW_RES(BT_AUTOFORMAT)),
+
+ pTAutoFmt( 0 ),
+ pShell( &rView.GetWrtShell() ),
+ sConvertTextTable(SW_RES(STR_CONVERT_TEXT_TABLE))
+{
+ FreeResource();
+ if( 0 == pShell->GetTableFmt() )
+ {
+ SetText( sConvertTextTable );
+ aAutoFmtBtn.SetClickHdl(LINK(this, SwConvertTableDlg, AutoFmtHdl));
+ aAutoFmtBtn.Show();
+ aKeepColumn.Show();
+ aKeepColumn.Enable( aTabBtn.IsChecked() );
+ aKeepColumn.Check( !aTabBtn.IsChecked() );
+ }
+ else
+ {
+ aKeepColumn.Check( TRUE );
+ //Einfuege-Optionen verstecken
+ aHeaderCB .Show(FALSE);
+ aRepeatHeaderCB .Show(FALSE);
+ aDontSplitCB .Show(FALSE);
+ aBorderCB .Show(FALSE);
+ aOptionsGB .Show(FALSE);
+
+ //Groesse anpassen
+ Size aSize(GetSizePixel());
+ aSize.Height() = aDelimFrm.GetSizePixel().Height() + 2 * aDelimFrm.GetPosPixel().Y();
+ SetOutputSizePixel(aSize);
+ }
+ aKeepColumn.SaveValue();
+
+ Link aLk( LINK(this, SwConvertTableDlg, BtnHdl) );
+ aTabBtn.SetClickHdl( aLk );
+ aSemiBtn.SetClickHdl( aLk );
+ aParaBtn.SetClickHdl( aLk );
+ aOtherBtn.SetClickHdl(aLk );
+ aOtherEd.Enable( aOtherBtn.IsChecked() );
+
+ const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+
+ BOOL bHTMLMode = 0 != (::GetHtmlMode(rView.GetDocShell())&HTMLMODE_ON);
+ USHORT nInsTblFlags = pModOpt->GetInsTblFlags(bHTMLMode);
+
+ aHeaderCB.Check(nInsTblFlags & HEADLINE);
+ aRepeatHeaderCB.Check(nInsTblFlags & REPEAT);
+ aDontSplitCB.Check(!(nInsTblFlags & SPLIT_LAYOUT));
+ aBorderCB.Check(nInsTblFlags & DEFAULT_BORDER);
+
+ aHeaderCB.SetClickHdl(LINK(this, SwConvertTableDlg, CheckBoxHdl));
+ CheckBoxHdl();
+}
+
+SwConvertTableDlg:: ~SwConvertTableDlg()
+{
+ delete pTAutoFmt;
+}
+
+IMPL_LINK( SwConvertTableDlg, AutoFmtHdl, PushButton*, pButton )
+{
+ SwAutoFormatDlg aDlg( pButton, pShell, FALSE, pTAutoFmt );
+ if( RET_OK == aDlg.Execute())
+ aDlg.FillAutoFmtOfIndex( pTAutoFmt );
+ return 0;
+}
+
+IMPL_LINK( SwConvertTableDlg, BtnHdl, Button*, pButton )
+{
+ if( pButton == &aTabBtn )
+ aKeepColumn.SetState( aKeepColumn.GetSavedValue() );
+ else
+ {
+ if( aKeepColumn.IsEnabled() )
+ aKeepColumn.SaveValue();
+ aKeepColumn.Check( TRUE );
+ }
+ aKeepColumn.Enable( aTabBtn.IsChecked() );
+ aOtherEd.Enable( aOtherBtn.IsChecked() );
+ return 0;
+}
+
+/*********************************************************************/
+/* */
+/*********************************************************************/
+
+IMPL_LINK(SwConvertTableDlg, CheckBoxHdl, CheckBox*, EMPTYARG)
+{
+ aRepeatHeaderCB.Enable(aHeaderCB.IsChecked());
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.39 2000/09/18 16:06:07 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.38 2000/02/11 14:58:29 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.37 1999/05/03 09:03:16 OS
+ #65612# Einfuegeoptionen nur in einer Richtung anzeigen
+
+
+ Rev 1.36 03 May 1999 11:03:16 OS
+ #65612# Einfuegeoptionen nur in einer Richtung anzeigen
+
+ Rev 1.35 17 Feb 1999 08:39:46 OS
+ #58158# Einfuegen TabPage auch in HTML-Docs
+
+ Rev 1.34 02 Dec 1998 15:29:58 OM
+ #59770# Tabellenueberschrift nur auf erster Seite
+
+ Rev 1.33 30 Nov 1998 17:33:40 OM
+ #59770# Tabellenoptionen: Ueberschrift nur auf erster Seite
+
+ Rev 1.32 11 Nov 1998 16:51:58 OM
+ #58158# Einfuegeoptionen fuer Tabellen
+
+ Rev 1.31 09 Jul 1998 22:44:00 JP
+ Bug #52543#: SaveState am KeepButton im CTOR immer rufen
+
+ Rev 1.30 22 Jun 1998 12:54:30 JP
+ Bug #51412#: CTOR TabelleToText - KeepButton checken
+
+ Rev 1.29 15 Jun 1998 20:33:16 JP
+ TextToTable: KommaBtn gegen AndereBtn und -Edit ausgetauscht, OptionCheckBox fuer TabBtnt
+
+ Rev 1.28 29 May 1998 18:55:32 JP
+ SS vom TableAutoFormatDialog hat sich geaendert
+
+ Rev 1.27 13 May 1998 16:00:50 OS
+ HelpButton
+
+ Rev 1.26 12 May 1998 23:42:42 JP
+ neu: InserTable/TextToTable mit optionalen AutoFormat
+
+ Rev 1.25 24 Nov 1997 15:52:22 MA
+ includes
+
+ Rev 1.24 03 Nov 1997 13:56:52 MA
+ precomp entfernt
+
+ Rev 1.23 11 Nov 1996 11:20:02 MA
+ ResMgr
+
+ Rev 1.22 28 Aug 1996 14:33:14 OS
+ includes
+
+ Rev 1.21 26 Jun 1996 15:25:34 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.20 22 Mar 1996 14:16:30 HJS
+ umstellung 311
+
+ Rev 1.19 24 Nov 1995 16:58:56 OM
+ PCH->PRECOMPILED
+
+ Rev 1.18 10 Nov 1995 15:26:44 OS
+ Execute mit 0L abschliessen
+
+ Rev 1.17 07 Nov 1995 07:27:04 OS
+ include tablemgr muss bleiben
+
+ Rev 1.16 06 Nov 1995 17:14:14 OS
+ ConvertDlg ohne TableMgr und RecordFlag
+
+ Rev 1.15 30 Aug 1995 14:02:32 MA
+ fix: sexport'iert
+
+ Rev 1.14 24 Aug 1995 14:33:32 MA
+ swstddlg -> svxstandarddialog
+
+ Rev 1.13 25 Oct 1994 18:52:30 ER
+ add: PCH
+
+ Rev 1.12 26 Feb 1994 02:37:52 ER
+ virt. dtor mit export
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/table/convert.hrc b/sw/source/ui/table/convert.hrc
new file mode 100644
index 000000000000..5bc494667987
--- /dev/null
+++ b/sw/source/ui/table/convert.hrc
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * $RCSfile: convert.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define CB_TAB 1
+#define CB_SEMI 3
+#define CB_PARA 4
+#define GB_DELIM 5
+#define RB_OTHER 6
+#define ED_OTHER 7
+#define CB_KEEPCOLUMN 8
+#define STR_CONVERT_TEXT_TABLE 9
+#define CB_HEADER 13
+#define CB_REPEAT_HEADER 14
+#define CB_DONT_SPLIT 15
+#define CB_BORDER 16
+#define GB_OPTIONS 17
+
+#define BT_OK 100
+#define BT_CANCEL 101
+#define BT_AUTOFORMAT 102
+#define BT_HELP 103
+
diff --git a/sw/source/ui/table/convert.src b/sw/source/ui/table/convert.src
new file mode 100644
index 000000000000..8f1dcaa637f5
--- /dev/null
+++ b/sw/source/ui/table/convert.src
@@ -0,0 +1,485 @@
+/*************************************************************************
+ *
+ * $RCSfile: convert.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "table.hrc"
+#include "convert.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ModalDialog DLG_CONV_TEXT_TABLE
+{
+ HelpID = FN_CONVERT_TEXT_TABLE ;
+ OUTPUTSIZE = TRUE ;
+ Size = MAP_APPFONT ( 193 , 144 ) ;
+ TEXT = "Tabelle in Text umwandeln" ;
+ TEXT [ ENGLISH ] = "Convert table to text" ;
+ TEXT [ norwegian ] = "Omdann tabell til tekst" ;
+ TEXT [ italian ] = "Converti tabella in testo" ;
+ TEXT [ portuguese_brazilian ] = "Converter tabela em texto" ;
+ TEXT [ portuguese ] = "Converter tabela em texto" ;
+ TEXT [ finnish ] = "Muunna taulukko tekstiksi" ;
+ TEXT [ danish ] = "Konverter tabel til tekst" ;
+ TEXT [ french ] = "Convertir tableau en texte" ;
+ TEXT [ swedish ] = "Omvandla tabell till text" ;
+ TEXT [ dutch ] = "Tabel naar tekst converteren" ;
+ TEXT [ spanish ] = "Convertir tabla en texto" ;
+ TEXT [ english_us ] = "Convert Table to Text" ;
+ MOVEABLE = TRUE ;
+ SVLOOK = TRUE ;
+ RadioButton CB_TAB
+ {
+ Pos = MAP_APPFONT ( 12 , 17 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ TEXT = "~Tabulator" ;
+ TEXT [ ENGLISH ] = "~Tab" ;
+ TEXT [ norwegian ] = "~Tab" ;
+ TEXT [ italian ] = "~Tabulazione" ;
+ TEXT [ portuguese_brazilian ] = "~Tabulação" ;
+ TEXT [ portuguese ] = "~Tabulações" ;
+ TEXT [ finnish ] = "~Sarkain" ;
+ TEXT [ danish ] = "Tabulator" ;
+ TEXT [ french ] = "~Tabulation" ;
+ TEXT [ swedish ] = "~Tabulator" ;
+ TEXT [ dutch ] = "~Tab" ;
+ TEXT [ spanish ] = "Tabu~lación" ;
+ TEXT [ english_us ] = "~Tabs" ;
+ TABSTOP = TRUE ;
+ Group = TRUE ;
+ Check = TRUE ;
+ TEXT[ chinese_simplified ] = "ÖƱí·û(~T)";
+ TEXT[ russian ] = "Òàáóëÿòîð";
+ TEXT[ polish ] = "Tabulator";
+ TEXT[ japanese ] = "ÀÌÞ(~T)";
+ TEXT[ chinese_traditional ] = "»sªí²Å(~T)";
+ TEXT[ arabic ] = "ÚáÇãÉ ÌÏæáÉ";
+ TEXT[ greek ] = "Ó~ôçëïèÝôçò";
+ TEXT[ korean ] = "ÅÇ(~T)";
+ TEXT[ turkish ] = "~Sekme";
+ TEXT[ language_user1 ] = " ";
+ };
+ RadioButton CB_SEMI
+ {
+ Pos = MAP_APPFONT ( 70 , 17 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ TEXT = "~Semikolon" ;
+ TEXT [ ENGLISH ] = "~Semicolon" ;
+ TEXT [ norwegian ] = "~Semikolon" ;
+ TEXT [ italian ] = "~Punto e virgola" ;
+ TEXT [ portuguese_brazilian ] = "~Ponto e vírgula" ;
+ TEXT [ portuguese ] = "Ponto e vír~gula" ;
+ TEXT [ finnish ] = "~Puolipiste" ;
+ TEXT [ danish ] = "Semikolon" ;
+ TEXT [ french ] = "~Point virgule" ;
+ TEXT [ swedish ] = "~Semikolon" ;
+ TEXT [ dutch ] = "~Puntkomma" ;
+ TEXT [ spanish ] = "Punto y co~ma" ;
+ TEXT [ english_us ] = "~Semicolons" ;
+ TABSTOP = TRUE ;
+ TEXT[ chinese_simplified ] = "·ÖºÅ(~S)";
+ TEXT[ russian ] = "Òî÷êà ñ çàïÿòîé";
+ TEXT[ polish ] = "Œrednik";
+ TEXT[ japanese ] = "¾ÐºÛÝ(~S)";
+ TEXT[ chinese_traditional ] = "¤À¸¹(~S)";
+ TEXT[ arabic ] = "ÇáÝÇÕáÉ ÇáãäÞæØÉ";
+ TEXT[ greek ] = "¢íù ôå~ëåßá";
+ TEXT[ korean ] = "¼¼¹ÌÄÝ·Ð(~S)";
+ TEXT[ turkish ] = "N~oktalý virgül";
+ TEXT[ language_user1 ] = " ";
+ };
+ RadioButton CB_PARA
+ {
+ Pos = MAP_APPFONT ( 12 , 33 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ TEXT = "~Absatz" ;
+ TEXT [ ENGLISH ] = "~Paragraph" ;
+ TEXT [ norwegian ] = "~Paragraf" ;
+ TEXT [ italian ] = "~Paragrafo" ;
+ TEXT [ portuguese_brazilian ] = "~Parágrafo" ;
+ TEXT [ portuguese ] = "~Parágrafo" ;
+ TEXT [ finnish ] = "~Kappale" ;
+ TEXT [ danish ] = "Afsnit" ;
+ TEXT [ french ] = "~Paragraphe" ;
+ TEXT [ swedish ] = "Styc~ke" ;
+ TEXT [ dutch ] = "~Alinea" ;
+ TEXT [ spanish ] = "~Párrafo" ;
+ TEXT [ english_us ] = "~Paragraph" ;
+ TABSTOP = TRUE ;
+ TEXT[ chinese_simplified ] = "¶ÎÂä(~P)";
+ TEXT[ russian ] = "Àáçàö";
+ TEXT[ polish ] = "Akapit";
+ TEXT[ japanese ] = "’i—Ž(~P)";
+ TEXT[ chinese_traditional ] = "¬q¸¨(~P)";
+ TEXT[ arabic ] = "ÇáÝÞÑÉ";
+ TEXT[ greek ] = "Ð~áñÜãñáöïò";
+ TEXT[ korean ] = "´Ü¶ô(~P)";
+ TEXT[ turkish ] = "~Paragraf";
+ TEXT[ language_user1 ] = " ";
+ };
+ RadioButton RB_OTHER
+ {
+ Pos = MAP_APPFONT ( 70 , 33 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ TEXT = "An~dere: " ;
+ TEXT [ ENGLISH ] = "~Other: " ;
+ Text [ portuguese ] = "~Outros: " ;
+ Text [ english_us ] = "~Other: " ;
+ Text [ portuguese_brazilian ] = "An~dere: " ;
+ Text [ swedish ] = "An~dra: " ;
+ Text [ danish ] = "Andre: " ;
+ Text [ italian ] = "~Altri: " ;
+ Text [ spanish ] = "~Otros: " ;
+ Text [ french ] = "~Autre(s):[_]" ;
+ Text [ dutch ] = "An~dere: " ;
+ Text[ chinese_simplified ] = "ÆäËû(~O)";
+ Text[ russian ] = "Äðóãèå: ";
+ Text[ polish ] = "Inne: ";
+ Text[ japanese ] = "‚»‚Ì‘¼(~O)";
+ Text[ chinese_traditional ] = "¨ä¥L(~O)";
+ Text[ arabic ] = "ÛíÑ Ðáß: ";
+ Text[ greek ] = "¢ëëá: ";
+ Text[ korean ] = "±âŸ (~O)";
+ Text[ turkish ] = "Di~ðer: ";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_OTHER
+ {
+ Border = TRUE ;
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 113 , 32 ) ;
+ Size = MAP_APPFONT ( 9 , 12 ) ;
+ Text = "," ;
+ MaxTextLength = 1 ;
+ };
+ CheckBox CB_KEEPCOLUMN
+ {
+ Pos = MAP_APPFONT ( 12 , 49 ) ;
+ Size = MAP_APPFONT ( 110 , 10 ) ;
+ Text = "Gleiche ~Breite aller Spalten" ;
+ TEXT [ ENGLISH ] = "Equal width for all columns" ;
+ Hide = TRUE ;
+ Text [ english_us ] = "Equal width for all columns" ;
+ Text [ portuguese_brazilian ] = "gleiche Breite aller Spalten" ;
+ Text [ swedish ] = "Samma bredd på alla kolumner" ;
+ Text [ danish ] = "Alle kolonner samme bredde" ;
+ Text [ italian ] = "~Larghezza uguale per tutte le colonne" ;
+ Text [ spanish ] = "Mismo an~cho para todas las columnas" ;
+ Text [ french ] = "~Largeur identique pour toutes les colonnes" ;
+ Text [ dutch ] = "~Alle kolommen dezelfde breedte" ;
+ Text [ portuguese ] = "~Largura igual para todas as colunas" ;
+ Text[ chinese_simplified ] = "ËùÓÐÁеĿí¶ÈÏàͬ";
+ Text[ russian ] = "Îäèíàêîâàÿ øèðèíà âñåõ êîëîíîê";
+ Text[ polish ] = "~Jednakowa szerokoϾ wszystk. kolumn";
+ Text[ japanese ] = "‚·‚ׂĂ̗ñ•‚𓯂¶‚É";
+ Text[ chinese_traditional ] = "©Ò¦³Äæ¼e«×¬Û¦P";
+ Text[ arabic ] = "äÝÓ ÇáÚÑÖ áßá ÇáÃÚãÏÉ";
+ Text[ greek ] = "ºäéï ~ðëÜôïò ãéá üëåò ôéò óôÞëåò";
+ Text[ korean ] = "¸ðµç ¿­ ³Êºñ °°°Ô";
+ Text[ turkish ] = "Tüm sütunlar a~yný geniþlikte";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_DELIM
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 125 , 62 ) ;
+ TEXT = "Trennzeichen im Text" ;
+ TEXT [ ENGLISH ] = "Delimiter" ;
+ TEXT [ norwegian ] = "Skilletegn" ;
+ TEXT [ italian ] = "Separatore nel testo" ;
+ TEXT [ portuguese_brazilian ] = "Delimitador" ;
+ TEXT [ portuguese ] = "Separador" ;
+ TEXT [ finnish ] = "Erotin" ;
+ TEXT [ danish ] = "Separatorer i tekst" ;
+ TEXT [ french ] = "Séparateur" ;
+ TEXT [ swedish ] = "Skiljetecken i text" ;
+ TEXT [ dutch ] = "Scheidingsteken in tekst" ;
+ TEXT [ spanish ] = "Delimitador en texto" ;
+ TEXT [ english_us ] = "Separate text at" ;
+ Group = TRUE ;
+ TEXT[ chinese_simplified ] = "ÕýÎÄÄڵķָô·û";
+ TEXT[ russian ] = "Ðàçäåëèòåëü òåêñòà";
+ TEXT[ polish ] = "Separator w tekœcie";
+ TEXT[ japanese ] = "÷½Ä“à‚Ì‹æØ‚è‹L†";
+ TEXT[ chinese_traditional ] = "¤º¤åªº¤À¹j²Å";
+ TEXT[ arabic ] = "ÚáÇãÇÊ ÇáÝÕá Ýí ÇáäÕ";
+ TEXT[ greek ] = "Åíùôéêü ìÝóá óôï êåßìåíï";
+ TEXT[ korean ] = "ÅؽºÆ® ±¸ºÐ ±âÈ£";
+ TEXT[ turkish ] = "Metin ayýrma iþareti";
+ TEXT[ language_user1 ] = " ";
+ };
+ CheckBox CB_HEADER
+ {
+ Pos = MAP_APPFONT ( 12 , 84 ) ;
+ Size = MAP_APPFONT ( 113 , 10 ) ;
+ Text = "Übe~rschrift" ;
+ Text [ ENGLISH ] = "Header" ;
+ TabStop = TRUE ;
+ Text[ italian ] = "Intestazione";
+ Text[ portuguese_brazilian ] = "Header";
+ Text[ portuguese ] = "~Título";
+ Text[ danish ] = "Overskrift";
+ Text[ french ] = "T~itre";
+ Text[ swedish ] = "Öve~rskrift";
+ Text[ dutch ] = "~Kop";
+ Text[ spanish ] = "~Encabezado";
+ Text[ english_us ] = "Header";
+ 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 ] = " ";
+ };
+ CheckBox CB_REPEAT_HEADER
+ {
+ Pos = MAP_APPFONT ( 22 , 97 ) ;
+ Size = MAP_APPFONT ( 103 , 10 ) ;
+ Text = "Auf jeder Seite ~wiederholen" ;
+ Text [ ENGLISH ] = "Repeat on every page" ;
+ TabStop = TRUE ;
+ Text[ italian ] = "Ripeti su ogni pagina";
+ Text[ portuguese_brazilian ] = "Repeat Header";
+ Text[ portuguese ] = "~Repetir em todas as páginas";
+ Text[ danish ] = "Gentag på hver side";
+ Text[ french ] = "~Répéter sur chaque page";
+ Text[ swedish ] = "~Upprepa på varje sida";
+ Text[ dutch ] = "Op iedere pagina ~herhalen";
+ Text[ spanish ] = "~Repetir en cada página";
+ Text[ english_us ] = "~Repeat header";
+ Text[ chinese_simplified ] = "ÔÚÿҳÉÏÖظ´ÏÔʾ";
+ Text[ russian ] = "Ïîâòîð íà êàæäîé ñòðàíèöå";
+ Text[ polish ] = "Powtórz na ~ka¿dej stronie";
+ Text[ japanese ] = "ŠeÍß°¼Þ‚ÉŒJ‚è•Ô‚µ";
+ Text[ chinese_traditional ] = "¦b¨C­¶¤W­«½ÆÅã¥Ü";
+ Text[ arabic ] = "ÊßÑÇÑ Ýí ßá ÕÝÍÉ";
+ Text[ greek ] = "Åì~öÜíéóç óå êÜèå óåëßäá";
+ Text[ korean ] = "¸Ó¸®±Û ¹Ýº¹(~R)";
+ Text[ turkish ] = "Ýlk satýrý her sayfada yi~nele";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_DONT_SPLIT
+ {
+ Pos = MAP_APPFONT ( 12 , 110 ) ;
+ Size = MAP_APPFONT ( 113 , 10 ) ;
+ Text = "Tabelle ~nicht trennen" ;
+ Text [ ENGLISH ] = "Don't split table" ;
+ TabStop = TRUE ;
+ Text[ italian ] = "Non separare la tabella";
+ Text[ portuguese_brazilian ] = "Don't split table";
+ Text[ portuguese ] = "Não ~dividir tabela";
+ Text[ danish ] = "Opdel tabel ikke";
+ Text[ french ] = "Pas de c~oupure de tableau";
+ Text[ swedish ] = "Dela i~nte tabell";
+ Text[ dutch ] = "Tabel niet ~splitsen";
+ Text[ spanish ] = "~No dividir tabla";
+ Text[ english_us ] = "Don't split table";
+ Text[ chinese_simplified ] = "²»·Ö¸ô±í¸ñ";
+ Text[ russian ] = "Íå ðàçáèâàòü òàáëèöó";
+ Text[ polish ] = "Nie dziel tabeli";
+ Text[ japanese ] = "•\\‚𕪊„‚µ‚È‚¢";
+ Text[ chinese_traditional ] = "¤£¤À¶}ªí®æ";
+ Text[ arabic ] = "ÚÏã ÝÕá ÇáÌÏæá";
+ Text[ greek ] = "¼÷é äéáßñåóç ôïõ ðß~íáêá";
+ Text[ korean ] = "Ç¥¸¦ ÂÉ°³Áö ¸¶½Ê½Ã¿À.";
+ Text[ turkish ] = "Tabloyu tek sayfaya ~sýðdýr";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_BORDER
+ {
+ Pos = MAP_APPFONT ( 12 , 123 ) ;
+ Size = MAP_APPFONT ( 93 , 10 ) ;
+ Text = "~Umrandung" ;
+ Text [ ENGLISH ] = "Border" ;
+ TabStop = TRUE ;
+ Text[ italian ] = "Bordo";
+ Text[ portuguese_brazilian ] = "Border";
+ Text[ portuguese ] = "~Contornos";
+ Text[ danish ] = "Ramme";
+ Text[ french ] = "~Bordure";
+ Text[ swedish ] = "Inra~mning";
+ Text[ dutch ] = "~Omranding";
+ Text[ spanish ] = "~Borde";
+ Text[ english_us ] = "Border";
+ 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 ] = " ";
+ };
+ GroupBox GB_OPTIONS
+ {
+ Pos = MAP_APPFONT ( 6 , 71 ) ;
+ Size = MAP_APPFONT ( 125 , 69 ) ;
+ Text = "Optionen" ;
+ Text [ English ] = "Options" ;
+ Text[ italian ] = "Opzioni";
+ Text[ portuguese_brazilian ] = "Options";
+ Text[ portuguese ] = "Opções";
+ 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 ] = " ";
+ };
+ String STR_CONVERT_TEXT_TABLE
+ {
+ TEXT = "Text in Tabelle umwandeln" ;
+ TEXT [ ENGLISH ] = "Convert text to table" ;
+ TEXT [ norwegian ] = "Omdann tekst til tabell" ;
+ TEXT [ italian ] = "Converti testo in tabella" ;
+ TEXT [ portuguese_brazilian ] = "Converter texto em tabela" ;
+ TEXT [ portuguese ] = "Converter texto em tabela" ;
+ TEXT [ finnish ] = "Muunna teksti taulukoksi" ;
+ TEXT [ danish ] = "Konverter tekst til tabel" ;
+ TEXT [ french ] = "Convertir texte en tableau" ;
+ TEXT [ swedish ] = "Omvandla text till tabell" ;
+ TEXT [ dutch ] = "Tekst naar tabel converteren" ;
+ TEXT [ spanish ] = "Convertir texto en tabla" ;
+ TEXT [ english_us ] = "Convert Text to Table" ;
+ TEXT[ chinese_simplified ] = "ÎÄ×Öת»»³É±í¸ñ";
+ TEXT[ russian ] = "Ïðåîáðàçîâàòü òåêñò â òàáëèöó";
+ TEXT[ polish ] = "Konwertuj tekst na tabelê";
+ TEXT[ japanese ] = "•¶Žš—ñ‚ð•\\‚É‚·‚é";
+ TEXT[ chinese_traditional ] = "¤å¦rÂà´«¦¨ªí®æ";
+ TEXT[ arabic ] = "ÊÍæíá ÇáäÕ Åáì ÌÏæá";
+ TEXT[ greek ] = "ÌåôáôñïðÞ êåéìÝíïõ óå ðßíáêá";
+ TEXT[ korean ] = "ÅؽºÆ®¸¦ Ç¥·Î Àüȯ";
+ TEXT[ turkish ] = "Metni tabloya dönüþtür";
+ TEXT[ language_user1 ] = " ";
+ };
+ OkButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 137 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TABSTOP = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 137 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TABSTOP = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 137 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TABSTOP = TRUE ;
+ };
+ PushButton BT_AUTOFORMAT
+ {
+ Pos = MAP_APPFONT ( 137 , 60 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ Text = "Auto~format..." ;
+ Text [ ENGLISH ] = "Autoformat..." ;
+ Text [ norwegian ] = "Autoformat..." ;
+ Text [ italian ] = "~Formattazione automatica..." ;
+ Text [ portuguese_brazilian ] = "Formatação Automática..." ;
+ Text [ portuguese ] = "Auto~Formato..." ;
+ Text [ finnish ] = "Automaattimuoto..." ;
+ Text [ danish ] = "AutoFormat..." ;
+ Text [ french ] = "AutoFormat..." ;
+ Text [ swedish ] = "AutoFormat..." ;
+ Text [ dutch ] = "Auto~Opmaak..." ;
+ Text [ spanish ] = "Auto~Formato..." ;
+ Text [ english_us ] = "Auto~Format..." ;
+ Text[ chinese_simplified ] = "×Ô¶¯¸ñʽ(~F)...";
+ Text[ russian ] = "Àâòîôîðìàò...";
+ Text[ polish ] = "Autoformat...";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä(~F)...";
+ Text[ chinese_traditional ] = "¦Û°Ê®æ¦¡(~F)...";
+ Text[ arabic ] = "ÊäÓíÞ ÊáÞÇÆí...";
+ Text[ greek ] = "ÁõôïÌïñ~öÞ...";
+ Text[ korean ] = "ÀÚµ¿ ¼­½Ä(~F)...";
+ Text[ turkish ] = "Otomatik ~formatlama...";
+ Text[ language_user1 ] = " ";
+ };
+ TEXT[ chinese_simplified ] = "ת»»±í¸ñ³ÉÎÄ×Ö";
+ TEXT[ russian ] = "Ïðåîáðàçîâàòü òàáëèöó â òåêñò";
+ TEXT[ polish ] = "Konwertuj tabelê na tekst";
+ TEXT[ japanese ] = "•\\‚𕶑‚É‚·‚é";
+ TEXT[ chinese_traditional ] = "Âà´«ªí®æ¦¨¤å¦r";
+ TEXT[ arabic ] = "ÊÍæíá ÇáÌÏæá Åáì äÕ";
+ TEXT[ greek ] = "ÌåôáôñïðÞ ðßíáêá óå êåßìåíï";
+ TEXT[ korean ] = "Ç¥¸¦ ÅؽºÆ®·Î º¯È¯";
+ TEXT[ turkish ] = "Tabloyu metne dönüþtür";
+ TEXT[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/table/insrc.cxx b/sw/source/ui/table/insrc.cxx
new file mode 100644
index 000000000000..d661797cad59
--- /dev/null
+++ b/sw/source/ui/table/insrc.cxx
@@ -0,0 +1,203 @@
+/*************************************************************************
+ *
+ * $RCSfile: insrc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+
+
+#include "cmdid.h"
+#include "swtypes.hxx"
+#include "insrc.hxx"
+#include "view.hxx"
+#include "table.hrc"
+#include "insrc.hrc"
+
+
+
+
+void SwInsRowColDlg::Apply()
+{
+ USHORT nSlot = bColumn ? FN_TABLE_INSERT_COL : FN_TABLE_INSERT_ROW;
+ SfxUInt16Item aCount( nSlot, aCountEdit.GetValue() );
+ SfxBoolItem aAfter( FN_PARAM_INSERT_AFTER, aAfterBtn.IsChecked() );
+ rView.GetViewFrame()->GetDispatcher()->Execute( nSlot,
+ SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD,
+ &aCount, &aAfter, 0L);
+}
+
+
+
+SwInsRowColDlg::SwInsRowColDlg(SwView& rVw, BOOL bCol )
+ : SvxStandardDialog( rVw.GetWindow(), SW_RES(DLG_INS_ROW_COL) ),
+ aCount( this, SW_RES( FT_COUNT ) ),
+ aCountEdit( this, SW_RES( ED_COUNT ) ),
+ aInsGrp( this, SW_RES( GB_INS ) ),
+ aBeforeBtn( this, SW_RES( CB_POS_BEFORE ) ),
+ aAfterBtn( this, SW_RES( CB_POS_AFTER ) ),
+ aPosGrp( this, SW_RES( GB_POS ) ),
+ aRow(SW_RES(STR_ROW)),
+ aCol(SW_RES(STR_COL)),
+ aOKBtn( this, SW_RES( BT_OK ) ),
+ aCancelBtn( this, SW_RES( BT_CANCEL ) ),
+ aHelpBtn( this, SW_RES( BT_HELP ) ),
+ rView(rVw),
+ bColumn( bCol )
+{
+ FreeResource();
+ String aTmp( GetText() );
+ if( bColumn )
+ {
+ aTmp += aCol;
+ SetHelpId( FN_TABLE_INSERT_COL_DLG );
+ }
+ else
+ {
+ aTmp += aRow;
+ SetHelpId( FN_TABLE_INSERT_ROW_DLG );
+ }
+ SetText( aTmp );
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.30 2000/09/18 16:06:08 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.29 2000/09/07 15:59:31 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.28 1998/05/13 14:00:48 OS
+ HelpButton
+
+
+ Rev 1.27 13 May 1998 16:00:48 OS
+ HelpButton
+
+ Rev 1.26 24 Nov 1997 15:52:22 MA
+ includes
+
+ Rev 1.25 03 Nov 1997 13:56:52 MA
+ precomp entfernt
+
+ Rev 1.24 14 Nov 1996 15:43:44 TRI
+ includes
+
+ Rev 1.23 11 Nov 1996 11:20:10 MA
+ ResMgr
+
+ Rev 1.22 04 Sep 1996 11:16:52 JP
+ TableManager wird nicht mehr benoetigt
+
+ Rev 1.21 28 Aug 1996 14:33:14 OS
+ includes
+
+ Rev 1.20 26 Jun 1996 15:25:20 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.19 22 Mar 1996 14:16:32 HJS
+ umstellung 311
+
+ Rev 1.18 24 Nov 1995 16:58:58 OM
+ PCH->PRECOMPILED
+
+ Rev 1.17 10 Nov 1995 15:26:16 OS
+ Execute mit 0L abschliessen
+
+ Rev 1.16 05 Nov 1995 16:49:32 OS
+ Dtor ueberfluessig, -RecordFlag, Aktion ueber Dispatcher
+
+ Rev 1.15 13 Sep 1995 17:10:04 OS
+ Recording ausgeweitet
+
+ Rev 1.14 30 Aug 1995 14:02:52 MA
+ fix: sexport'iert
+
+ Rev 1.13 21 Aug 1995 09:34:28 MA
+ chg: swstddlg -> svxstandarddialog, Optimierungen
+
+ Rev 1.12 25 Oct 1994 18:52:28 ER
+ add: PCH
+
+ Rev 1.11 20 Apr 1994 15:34:20 MA
+ operator Optimierung.
+
+------------------------------------------------------------------------*/
+
+
+
+
diff --git a/sw/source/ui/table/insrc.hrc b/sw/source/ui/table/insrc.hrc
new file mode 100644
index 000000000000..a11b42dfddad
--- /dev/null
+++ b/sw/source/ui/table/insrc.hrc
@@ -0,0 +1,74 @@
+/*************************************************************************
+ *
+ * $RCSfile: insrc.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define FT_COUNT 1
+#define ED_COUNT 2
+#define GB_INS 3
+
+#define CB_POS_BEFORE 10
+#define CB_POS_AFTER 11
+#define GB_POS 12
+
+#define STR_ROW 20
+#define STR_COL 21
+
+#define BT_OK 100
+#define BT_CANCEL 101
+#define BT_HELP 102
diff --git a/sw/source/ui/table/insrc.src b/sw/source/ui/table/insrc.src
new file mode 100644
index 000000000000..4bbb7060495c
--- /dev/null
+++ b/sw/source/ui/table/insrc.src
@@ -0,0 +1,305 @@
+/*************************************************************************
+ *
+ * $RCSfile: insrc.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "table.hrc"
+#include "insrc.hrc"
+#include "helpid.h"
+ // #define DLG_INS_ROW_COL 256
+ModalDialog DLG_INS_ROW_COL
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 131 , 84 ) ;
+ /* ### 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 ] = "Insérer" ;
+ Text [ swedish ] = "Infoga" ;
+ Text [ dutch ] = "Invoegen" ;
+ Text [ spanish ] = "Insertar" ;
+ Text [ english_us ] = "Insert" ;
+ Moveable = TRUE ;
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 75 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 75 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 75 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ RadioButton CB_POS_BEFORE
+ {
+ Pos = MAP_APPFONT ( 12 , 49 ) ;
+ Size = MAP_APPFONT ( 33 , 10 ) ;
+ Text = "da~vor" ;
+ Text [ ENGLISH ] = "~before" ;
+ Text [ norwegian ] = "~før" ;
+ Text [ italian ] = "Davanti" ;
+ Text [ portuguese_brazilian ] = "~antes" ;
+ Text [ portuguese ] = "à ~frente" ;
+ Text [ finnish ] = "~edelle" ;
+ Text [ danish ] = "foran" ;
+ Text [ french ] = "A~vant" ;
+ Text [ swedish ] = "~framför" ;
+ Text [ dutch ] = "~ervoor" ;
+ Text [ spanish ] = "De~lante" ;
+ Text [ english_us ] = "~Before" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "֮ǰ(~B)";
+ Text[ russian ] = "ïåðåä";
+ Text[ polish ] = "prze~d";
+ Text[ japanese ] = "‘O‚Å(~B)";
+ Text[ chinese_traditional ] = "¤§«e(~B)";
+ Text[ arabic ] = "ÞÈá";
+ Text[ greek ] = "Ðñéí áðü";
+ Text[ korean ] = "ÀÌÀü(~B)";
+ Text[ turkish ] = "ön~üne";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton CB_POS_AFTER
+ {
+ Pos = MAP_APPFONT ( 12 , 62 ) ;
+ Size = MAP_APPFONT ( 39 , 10 ) ;
+ Text = "da~hinter" ;
+ Text [ ENGLISH ] = "~behind" ;
+ Text [ norwegian ] = "~bak" ;
+ Text [ italian ] = "~Dietro" ;
+ Text [ portuguese_brazilian ] = "~atrás" ;
+ Text [ portuguese ] = "~atrás" ;
+ Text [ finnish ] = "~jälkeen" ;
+ Text [ danish ] = "efter" ;
+ Text [ french ] = "~Après" ;
+ Text [ swedish ] = "~bakom" ;
+ Text [ dutch ] = "e~rachter" ;
+ Text [ spanish ] = "de~trás" ;
+ Text [ english_us ] = "A~fter" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Text[ chinese_simplified ] = "Ö®ºó(~F)";
+ Text[ russian ] = "ïîñëå";
+ Text[ polish ] = "za";
+ Text[ japanese ] = "Œã‚Å(~F)";
+ Text[ chinese_traditional ] = "¤§«á(~F)";
+ Text[ arabic ] = "ÈÚÏ";
+ Text[ greek ] = "ìåôÜ áðü";
+ Text[ korean ] = "ÀÌÈÄ(~F)";
+ Text[ turkish ] = "ar~kasýna";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField ED_COUNT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 39 , 14 ) ;
+ Size = MAP_APPFONT ( 24 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 99 ;
+ Value = 1 ;
+ First = 1 ;
+ Last = 5 ;
+ };
+ GroupBox GB_INS
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 63 , 32 ) ;
+ /* ### 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 ] = "Insérer" ;
+ 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 ] = " ";
+ };
+ GroupBox GB_POS
+ {
+ Pos = MAP_APPFONT ( 6 , 38 ) ;
+ Size = MAP_APPFONT ( 63 , 40 ) ;
+ Text = "Position" ;
+ };
+ FixedText FT_COUNT
+ {
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ Size = MAP_APPFONT ( 24 , 8 ) ;
+ Text = "~Anzahl" ;
+ Text [ ENGLISH ] = "~Amount" ;
+ Text [ norwegian ] = "~Beløp" ;
+ Text [ italian ] = "Numero" ;
+ Text [ portuguese_brazilian ] = "~Quantidade" ;
+ Text [ portuguese ] = "~Quantidade" ;
+ Text [ finnish ] = "~Määrä" ;
+ Text [ danish ] = "Antal" ;
+ Text [ french ] = "~Nombre" ;
+ Text [ swedish ] = "~Antal" ;
+ Text [ dutch ] = "~Aantal" ;
+ Text [ spanish ] = "~Cantidad" ;
+ Text [ english_us ] = "~Amount" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÊýÄ¿(~A)";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "‘”(~A)";
+ Text[ chinese_traditional ] = "¼Æ¥Ø(~A)";
+ Text[ arabic ] = "ÇáÚÏÏ";
+ Text[ greek ] = "~Áñéèìüò";
+ Text[ korean ] = "¾ç(~A)";
+ Text[ turkish ] = "~Adet";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ROW
+ {
+ Text = " Zeilen" ;
+ Text [ ENGLISH ] = " rows" ;
+ Text [ norwegian ] = " rader" ;
+ Text [ italian ] = "righe" ;
+ Text [ portuguese_brazilian ] = "fileiras" ;
+ Text [ portuguese ] = "Linhas" ;
+ Text [ finnish ] = " rivejä" ;
+ Text [ danish ] = "rækker" ;
+ Text [ french ] = "~Lignes" ;
+ Text [ swedish ] = "rader" ;
+ Text [ dutch ] = "Rijen" ;
+ Text [ spanish ] = "Filas" ;
+ Text [ english_us ] = "Rows" ;
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ russian ] = "Ñòðîêè";
+ Text[ polish ] = "Wiersze";
+ Text[ japanese ] = "s";
+ Text[ chinese_traditional ] = "¦æ";
+ Text[ arabic ] = "ÕÝæÝ";
+ Text[ greek ] = "ÃñáììÝò";
+ Text[ korean ] = "Çà";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_COL
+ {
+ Text = " Spalten" ;
+ Text [ ENGLISH ] = " columns" ;
+ Text [ norwegian ] = " kolonner" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ portuguese_brazilian ] = "colunas" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ finnish ] = " sarakkeita" ;
+ Text [ danish ] = "kolonner" ;
+ Text [ french ] = "Colonnes" ;
+ Text [ swedish ] = "kolumner" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ spanish ] = "Columnas" ;
+ Text [ english_us ] = "Columns" ;
+ Text[ chinese_simplified ] = "À¸";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "—ñ";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÃÚãÏÉ";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ 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 ] = " ";
+};
diff --git a/sw/source/ui/table/instable.cxx b/sw/source/ui/table/instable.cxx
new file mode 100644
index 000000000000..84c4cc3a1e17
--- /dev/null
+++ b/sw/source/ui/table/instable.cxx
@@ -0,0 +1,308 @@
+/*************************************************************************
+ *
+ * $RCSfile: instable.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "itabenum.hxx"
+#include "instable.hxx"
+#include "tautofmt.hxx"
+#include "tblafmt.hxx"
+#include "modcfg.hxx"
+#include "swmodule.hxx"
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+
+#include "table.hrc"
+#include "instable.hrc"
+
+#define ROW_COL_PROD 16384
+
+void SwInsTableDlg::GetValues( String& rName, USHORT& rRow, USHORT& rCol,
+ USHORT& rInsTblFlags,
+ SwTableAutoFmt *& prTAFmt )
+{
+ rName = aNameEdit.GetText();
+ rRow = (USHORT)aRowEdit.GetValue();
+ rCol = (USHORT)aColEdit.GetValue();
+
+ rInsTblFlags = 0;
+ if (aBorderCB.IsChecked())
+ rInsTblFlags |= DEFAULT_BORDER;
+ if (aHeaderCB.IsChecked())
+ rInsTblFlags |= HEADLINE;
+ if (aRepeatHeaderCB.IsEnabled() && aRepeatHeaderCB.IsChecked())
+ rInsTblFlags |= REPEAT;
+ if (!aDontSplitCB.IsChecked())
+ rInsTblFlags |= SPLIT_LAYOUT;
+ if( pTAutoFmt )
+ prTAFmt = new SwTableAutoFmt( *pTAutoFmt );
+}
+
+// CTOR / DTOR -----------------------------------------------------------
+
+
+SwInsTableDlg::SwInsTableDlg( SwView& rView )
+ : SfxModalDialog( rView.GetWindow(), SW_RES(DLG_INSERT_TABLE) ),
+ aNameEdit (this, SW_RES(ED_NAME)),
+ aNameFrm (this, SW_RES(GB_NAME)),
+ aColLbl (this, SW_RES(FT_COL)),
+ aColEdit (this, SW_RES(ED_COL)),
+ aRowLbl (this, SW_RES(FT_ROW)),
+ aRowEdit (this, SW_RES(ED_ROW)),
+ aFrm (this, SW_RES(GB_TABLE)),
+ aHeaderCB (this, SW_RES(CB_HEADER)),
+ aRepeatHeaderCB (this, SW_RES(CB_REPEAT_HEADER)),
+ aDontSplitCB (this, SW_RES(CB_DONT_SPLIT)),
+ aBorderCB (this, SW_RES(CB_BORDER)),
+ aOptionsGB (this, SW_RES(GB_OPTIONS)),
+ aOkBtn (this, SW_RES(BT_OK)),
+ aCancelBtn (this, SW_RES(BT_CANCEL)),
+ aHelpBtn (this, SW_RES(BT_HELP)),
+ aAutoFmtBtn (this, SW_RES(BT_AUTOFORMAT)),
+ pTAutoFmt( 0 ),
+ pShell(&rView.GetWrtShell())
+{
+ FreeResource();
+ aNameEdit.SetText(pShell->GetUniqueTblName());
+ aNameEdit.SetModifyHdl(LINK(this, SwInsTableDlg, ModifyName));
+ aColEdit.SetModifyHdl(LINK(this, SwInsTableDlg, ModifyRowCol));
+ aRowEdit.SetModifyHdl(LINK(this, SwInsTableDlg, ModifyRowCol));
+
+ aRowEdit.SetMax(ROW_COL_PROD/aColEdit.GetValue());
+ aColEdit.SetMax(ROW_COL_PROD/aRowEdit.GetValue());
+ aAutoFmtBtn.SetClickHdl(LINK(this, SwInsTableDlg, AutoFmtHdl));
+
+ BOOL bHTMLMode = 0 != (::GetHtmlMode(rView.GetDocShell())&HTMLMODE_ON);
+ const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+
+ USHORT nInsTblFlags = pModOpt->GetInsTblFlags(bHTMLMode);
+
+ aHeaderCB.Check(nInsTblFlags & HEADLINE);
+ aRepeatHeaderCB.Check(nInsTblFlags & REPEAT);
+ aDontSplitCB.Check(!(nInsTblFlags & SPLIT_LAYOUT));
+ aBorderCB.Check(nInsTblFlags & DEFAULT_BORDER);
+
+ aHeaderCB.SetClickHdl(LINK(this, SwInsTableDlg, CheckBoxHdl));
+ CheckBoxHdl();
+}
+
+SwInsTableDlg::~SwInsTableDlg()
+{
+ delete pTAutoFmt;
+}
+
+IMPL_LINK_INLINE_START( SwInsTableDlg, ModifyName, Edit *, pEdit )
+{
+ String sTblName = pEdit->GetText();
+ if(sTblName.Search(' ') != STRING_NOTFOUND)
+ {
+ sTblName.EraseAllChars( );
+ pEdit->SetText(sTblName);
+ }
+
+ aOkBtn.Enable(pShell->GetTblStyle( sTblName ) == 0);
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwInsTableDlg, ModifyName, Edit *, EMPTYARG )
+
+/*-----------------15.04.98 11:36-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwInsTableDlg, ModifyRowCol, NumericField *, pField )
+{
+ if(pField == &aColEdit)
+ {
+ long nCol = aColEdit.GetValue();
+ aRowEdit.SetMax(ROW_COL_PROD/nCol);
+ }
+ else
+ {
+ long nRow = aRowEdit.GetValue();
+ aColEdit.SetMax(ROW_COL_PROD/nRow);
+ }
+ return 0;
+}
+
+IMPL_LINK( SwInsTableDlg, AutoFmtHdl, PushButton*, pButton )
+{
+ SwAutoFormatDlg aDlg( pButton, pShell, FALSE, pTAutoFmt );
+ if( RET_OK == aDlg.Execute())
+ aDlg.FillAutoFmtOfIndex( pTAutoFmt );
+ return 0;
+}
+
+/*********************************************************************/
+/* */
+/*********************************************************************/
+
+IMPL_LINK(SwInsTableDlg, CheckBoxHdl, CheckBox*, EMPTYARG)
+{
+ aRepeatHeaderCB.Enable(aHeaderCB.IsChecked());
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.49 2000/09/18 16:06:08 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.48 2000/02/11 14:58:35 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.47 1999/02/17 07:39:44 OS
+ #58158# Einfuegen TabPage auch in HTML-Docs
+
+
+ Rev 1.46 17 Feb 1999 08:39:44 OS
+ #58158# Einfuegen TabPage auch in HTML-Docs
+
+ Rev 1.45 02 Dec 1998 15:29:26 OM
+ #59770# Tabellenueberschrift nur auf erster Seite
+
+ Rev 1.44 30 Nov 1998 17:33:40 OM
+ #59770# Tabellenoptionen: Ueberschrift nur auf erster Seite
+
+ Rev 1.43 11 Nov 1998 16:51:58 OM
+ #58158# Einfuegeoptionen fuer Tabellen
+
+ Rev 1.42 29 May 1998 18:55:32 JP
+ SS vom TableAutoFormatDialog hat sich geaendert
+
+ Rev 1.41 28 May 1998 11:48:08 OS
+ Leerzeichen auch aus dem Clipboard abfangen #50497#
+
+ Rev 1.40 12 May 1998 23:42:44 JP
+ neu: InserTable/TextToTable mit optionalen AutoFormat
+
+ Rev 1.39 24 Apr 1998 17:25:26 OS
+ Min/Max schon initial setzen
+
+ Rev 1.38 15 Apr 1998 14:30:44 OS
+ Zeilen/Spaltenzahl nur noch durch max. Zellenzahl begrenzt #49479#
+
+ Rev 1.37 24 Nov 1997 15:52:22 MA
+ includes
+
+ Rev 1.36 03 Nov 1997 13:56:50 MA
+ precomp entfernt
+
+ Rev 1.35 06 Aug 1997 14:43:50 TRI
+ VCL: GetpApp() statt pApp
+
+ Rev 1.34 11 Nov 1996 11:20:14 MA
+ ResMgr
+
+ Rev 1.33 02 Oct 1996 19:06:06 MA
+ Umstellung Enable/Disable
+
+ Rev 1.32 28 Aug 1996 14:33:16 OS
+ includes
+
+ Rev 1.31 26 Jun 1996 15:25:20 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.30 22 Mar 1996 14:16:32 HJS
+ umstellung 311
+
+ Rev 1.29 06 Feb 1996 15:21:22 JP
+ Link Umstellung 305
+
+ Rev 1.28 24 Nov 1995 16:58:58 OM
+ PCH->PRECOMPILED
+
+ Rev 1.27 10 Nov 1995 15:26:46 OS
+ Execute mit 0L abschliessen
+
+ Rev 1.26 08 Nov 1995 13:34:40 OS
+ Change => Set
+
+ Rev 1.25 08 Nov 1995 07:12:18 OS
+ Klammern verschoben
+
+ Rev 1.24 07 Nov 1995 18:08:40 OS
+ InsertTable ohne Manager, ausf. ueber Slot
+
+ Rev 1.23 18 Oct 1995 10:12:54 OM
+ Helpbutton fuer >Tabelle einfuegen<
+
+ Rev 1.22 13 Sep 1995 17:09:44 OS
+ Recording ausgeweitet
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/table/instable.hrc b/sw/source/ui/table/instable.hrc
new file mode 100644
index 000000000000..ead7f91dbbe2
--- /dev/null
+++ b/sw/source/ui/table/instable.hrc
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * $RCSfile: instable.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#define FT_COL 1
+#define FT_ROW 2
+#define ED_COL 4
+#define ED_ROW 5
+#define GB_TABLE 10
+#define ED_NAME 11
+#define GB_NAME 12
+#define CB_HEADER 13
+#define CB_REPEAT_HEADER 14
+#define CB_DONT_SPLIT 15
+#define CB_BORDER 16
+#define GB_OPTIONS 17
+
+#define BT_OK 20
+#define BT_CANCEL 21
+#define BT_HELP 22
+#define BT_AUTOFORMAT 23
diff --git a/sw/source/ui/table/instable.src b/sw/source/ui/table/instable.src
new file mode 100644
index 000000000000..3730294374d2
--- /dev/null
+++ b/sw/source/ui/table/instable.src
@@ -0,0 +1,430 @@
+/*************************************************************************
+ *
+ * $RCSfile: instable.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "table.hrc"
+#include "instable.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ // #define DLG_INSERT_TABLE 256
+ModalDialog DLG_INSERT_TABLE
+{
+ HelpID = FN_INSERT_TABLE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 110 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Tabelle einfügen : Tabelle einf³gen */
+ Text = "Tabelle einfügen" ;
+ Text [ ENGLISH ] = "Insert table" ;
+ Text [ norwegian ] = "Insert table" ;
+ Text [ italian ] = "Inserisci tabella" ;
+ Text [ portuguese_brazilian ] = "Insere uma tabela" ;
+ Text [ portuguese ] = "Inserir tabela" ;
+ Text [ finnish ] = "Lisää taulukon" ;
+ Text [ danish ] = "Indsæt tabel" ;
+ Text [ french ] = "Insérer un tableau" ;
+ Text [ swedish ] = "Infoga tabell" ;
+ Text [ dutch ] = "Tabel invoegen" ;
+ Text [ spanish ] = "Insertar tabla" ;
+ Text [ english_us ] = "Insert Table" ;
+ Moveable = TRUE ;
+ Edit ED_NAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 179, 12 ) ;
+ TabStop = TRUE ;
+ };
+ GroupBox GB_NAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 191, 30 ) ;
+ Text = "Name" ;
+ Text[ENGLISH] = "Name" ;
+ Text[ italian ] = "Nome";
+ Text[ portuguese_brazilian ] = "Name";
+ Text[ portuguese ] = "Nome";
+ 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 ] = " ";
+ };
+ FixedText FT_COL
+ {
+ Pos = MAP_APPFONT ( 11 , 49 ) ;
+ Size = MAP_APPFONT ( 39 , 10 ) ;
+ 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 ] = "~Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "~Kolommen" ;
+ Text [ spanish ] = "~Columnas" ;
+ Text [ english_us ] = "~Columns" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "À¸(~C)";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "‰¡(~C)";
+ Text[ chinese_traditional ] = "Äæ(~C)";
+ Text[ arabic ] = "ÃÚãÏÉ";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­(~C)";
+ Text[ turkish ] = "~Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField ED_COL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 53 , 47 ) ;
+ Size = MAP_APPFONT ( 28 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 99 ;
+ Value = 5 ;
+ First = 1 ;
+ Last = 99 ;
+ };
+ FixedText FT_ROW
+ {
+ Pos = MAP_APPFONT ( 11 , 69 ) ;
+ Size = MAP_APPFONT ( 39 , 10 ) ;
+ Text = "~Zeilen" ;
+ 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 ] = "~Rader" ;
+ Text [ dutch ] = "~Rijen" ;
+ Text [ spanish ] = "~Filas" ;
+ Text [ english_us ] = "~Rows" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÐÐ(~R)";
+ Text[ russian ] = "Ñòðîêè";
+ Text[ polish ] = "Wiersze";
+ Text[ japanese ] = "c(~Rj";
+ Text[ chinese_traditional ] = "¦æ(~R)";
+ Text[ arabic ] = "ÕÝæÝ";
+ Text[ greek ] = "ÃñáììÝò";
+ Text[ korean ] = "Çà(~R)";
+ Text[ turkish ] = "Sa~týr";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField ED_ROW
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 53 , 67 ) ;
+ Size = MAP_APPFONT ( 28 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 99 ;
+ Value = 2 ;
+ First = 1 ;
+ Last = 99 ;
+ };
+ GroupBox GB_TABLE
+ {
+ Pos = MAP_APPFONT ( 6 , 36 ) ;
+ Size = MAP_APPFONT ( 81 , 68 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Größe : Gr÷˜e */
+ Text = "Größe" ;
+ Text [ ENGLISH ] = "Size" ;
+ Text [ norwegian ] = "Størrelse" ;
+ Text [ italian ] = "Dimensione" ;
+ Text [ portuguese_brazilian ] = "Tamanho" ;
+ Text [ portuguese ] = "Tamanho" ;
+ Text [ finnish ] = "Koko" ;
+ Text [ danish ] = "Størrelse" ;
+ Text [ french ] = "Taille" ;
+ Text [ swedish ] = "Storlek" ;
+ Text [ dutch ] = "Grootte" ;
+ Text [ spanish ] = "Tamaño" ;
+ Text [ english_us ] = "Size" ;
+ Text[ chinese_simplified ] = "´óС";
+ Text[ russian ] = "Ðàçìåð";
+ Text[ polish ] = "Rozmiar";
+ Text[ japanese ] = "»²½Þ";
+ Text[ chinese_traditional ] = "¤j¤p";
+ Text[ arabic ] = "ÇáÍÌã";
+ Text[ greek ] = "ÌÝãåèïò";
+ Text[ korean ] = "Å©±â";
+ Text[ turkish ] = "Boyut";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_HEADER
+ {
+ Pos = MAP_APPFONT ( 99 , 49 ) ;
+ Size = MAP_APPFONT ( 93 , 10 ) ;
+ Text = "Übe~rschrift" ;
+ Text [ ENGLISH ] = "Header" ;
+ TabStop = TRUE ;
+ Text[ italian ] = "Intestazione";
+ Text[ portuguese_brazilian ] = "Header";
+ Text[ portuguese ] = "~Título";
+ Text[ danish ] = "Overskrift";
+ Text[ french ] = "T~itre";
+ Text[ swedish ] = "~Överskrift";
+ Text[ dutch ] = "~Kop";
+ Text[ spanish ] = "~Encabezado";
+ Text[ english_us ] = "Header";
+ 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 ] = " ";
+ };
+ CheckBox CB_REPEAT_HEADER
+ {
+ Pos = MAP_APPFONT ( 109 , 62 ) ;
+ Size = MAP_APPFONT ( 83 , 10 ) ;
+ Text = "Auf jeder Seite ~wiederholen" ;
+ Text [ ENGLISH ] = "Repeat on every page" ;
+ TabStop = TRUE ;
+ Text[ italian ] = "Ripeti su ogni pagina";
+ Text[ portuguese_brazilian ] = "Repeat Header";
+ Text[ portuguese ] = "Repetir em to~das as páginas";
+ Text[ danish ] = "Gentag på hver side";
+ Text[ french ] = "R~épéter sur chaque page";
+ Text[ swedish ] = "~Upprepa på varje sida";
+ Text[ dutch ] = "Op iedere pagina ~herhalen";
+ Text[ spanish ] = "~Repetir en cada página";
+ Text[ english_us ] = "Re~peat header";
+ Text[ chinese_simplified ] = "ÔÚÿҳÉÏÖظ´ÏÔʾ";
+ Text[ russian ] = "Ïîâòîð íà êàæäîé ñòðàíèöå";
+ Text[ polish ] = "Powtórz na ~ka¿dej stronie";
+ Text[ japanese ] = "ŠeÍß°¼Þ‚ÉŒJ‚è•Ô‚µ";
+ Text[ chinese_traditional ] = "¦b¨C­¶¤W­«½ÆÅã¥Ü";
+ Text[ arabic ] = "ÊßÑÇÑ Ýí ßá ÕÝÍÉ";
+ Text[ greek ] = "ÅðáíÜëç~øç óå êÜèå óåëßäá";
+ Text[ korean ] = "¸Ó¸®±Û ¹Ýº¹(~P)";
+ Text[ turkish ] = "Ýlk satýrý her sayfada yi~nele";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_DONT_SPLIT
+ {
+ Pos = MAP_APPFONT ( 99 , 75 ) ;
+ Size = MAP_APPFONT ( 93 , 10 ) ;
+ Text = "Tabelle ~nicht trennen" ;
+ Text [ ENGLISH ] = "Don't split table" ;
+ TabStop = TRUE ;
+ Text[ italian ] = "Non separare la tabella";
+ Text[ portuguese_brazilian ] = "Don't split table";
+ Text[ portuguese ] = "Não ~dividir tabela";
+ Text[ danish ] = "Opdel tabel ikke";
+ Text[ french ] = "Pas de c~oupure de tableau";
+ Text[ swedish ] = "Dela i~nte tabell";
+ Text[ dutch ] = "Tabel niet ~splitsen";
+ Text[ spanish ] = "~No dividir tabla";
+ Text[ english_us ] = "Don't split table";
+ Text[ chinese_simplified ] = "²»·Ö¸ô±í¸ñ";
+ Text[ russian ] = "Íå ðàçáèâàòü òàáëèöó";
+ Text[ polish ] = "Nie dziel tabeli";
+ Text[ japanese ] = "•\\‚𕪊„‚µ‚È‚¢";
+ Text[ chinese_traditional ] = "¤£¤À¶}ªí®æ";
+ Text[ arabic ] = "ÚÏã ÝÕá ÇáÌÏæá";
+ Text[ greek ] = "Íá ìç äéáéñåèåß ï ðßíáêáò";
+ Text[ korean ] = "Ç¥¸¦ ÂÉ°³Áö ¸¶½Ê½Ã¿À.";
+ Text[ turkish ] = "Tabloyu tek sayfaya ~sýðdýr";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_BORDER
+ {
+ Pos = MAP_APPFONT ( 99 , 88 ) ;
+ Size = MAP_APPFONT ( 93 , 10 ) ;
+ Text = "~Umrandung" ;
+ Text [ ENGLISH ] = "Border" ;
+ TabStop = TRUE ;
+ Text[ italian ] = "Bordo";
+ Text[ portuguese_brazilian ] = "Border";
+ Text[ portuguese ] = "~Contornos";
+ Text[ danish ] = "Ramme";
+ Text[ french ] = "~Bordure";
+ Text[ swedish ] = "Inra~mning";
+ Text[ dutch ] = "~Omranding";
+ Text[ spanish ] = "~Borde";
+ Text[ english_us ] = "Border";
+ 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 ] = " ";
+ };
+ GroupBox GB_OPTIONS
+ {
+ Pos = MAP_APPFONT ( 93 , 36 ) ;
+ Size = MAP_APPFONT ( 105 , 68 ) ;
+ Text = "Optionen" ;
+ Text [ English ] = "Options" ;
+ Text[ italian ] = "Opzioni";
+ Text[ portuguese_brazilian ] = "Options";
+ Text[ portuguese ] = "Opções";
+ 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 BT_OK
+ {
+ Pos = MAP_APPFONT ( 204 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 204 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 204 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton BT_AUTOFORMAT
+ {
+ Pos = MAP_APPFONT ( 204 , 60 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Text = "~Autoformat..." ;
+ Text [ ENGLISH ] = "Autoformat..." ;
+ Text [ norwegian ] = "Autoformat..." ;
+ Text [ italian ] = "~Formatt. auto..." ;
+ 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 ] = "Auto~Formato..." ;
+ Text [ english_us ] = "Auto~Format..." ;
+ Text[ chinese_simplified ] = "×Ô¶¯¸ñʽ(~F)...";
+ Text[ russian ] = "Àâòîôîðìàò...";
+ Text[ polish ] = "Autoformat...";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä(~F)...";
+ Text[ chinese_traditional ] = "¦Û°Ê®æ¦¡(~F)...";
+ Text[ arabic ] = "ÊäÓíÞ ÊáÞÇÆí...";
+ Text[ greek ] = "ÁõôïÌïñöïðïßçóç...";
+ Text[ korean ] = "ÀÚµ¿ ¼­½Ä(~F)...";
+ Text[ turkish ] = "~Otom. formatlama...";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "²åÈë±í¸ñ";
+ Text[ russian ] = "Âñòàâèòü òàáëèöó";
+ Text[ polish ] = "Wstaw tabelê";
+ Text[ japanese ] = "•\\‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤Jªí®æ";
+ Text[ arabic ] = "ÅÏÑÇÌ ÌÏæá";
+ Text[ greek ] = "ÅéóáãùãÞ ðßíáêá";
+ Text[ korean ] = "»ðÀÔ Ç¥";
+ Text[ turkish ] = "Tablo ekle";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/table/makefile.mk b/sw/source/ui/table/makefile.mk
new file mode 100644
index 000000000000..97e050040ad2
--- /dev/null
+++ b/sw/source/ui/table/makefile.mk
@@ -0,0 +1,127 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sw
+TARGET=table
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ colwd.cxx \
+ convert.cxx \
+ chartins.cxx \
+ insrc.cxx \
+ instable.cxx \
+ mergetbl.cxx \
+ rowht.cxx \
+ split.cxx \
+ splittbl.cxx \
+ tabledlg.cxx \
+ tablemgr.cxx \
+ tautofmt.cxx
+
+SRCFILES = \
+ colwd.src \
+ convert.src \
+ chartins.src \
+ insrc.src \
+ instable.src \
+ mergetbl.src \
+ rowht.src \
+ split.src \
+ splittbl.src \
+ table.src \
+ tabledlg.src \
+ tautofmt.src
+
+SLOFILES = \
+ $(SLO)$/colwd.obj \
+ $(SLO)$/convert.obj \
+ $(SLO)$/chartins.obj \
+ $(SLO)$/insrc.obj \
+ $(SLO)$/instable.obj \
+ $(SLO)$/mergetbl.obj \
+ $(SLO)$/rowht.obj \
+ $(SLO)$/split.obj \
+ $(SLO)$/splittbl.obj \
+ $(SLO)$/tabledlg.obj \
+ $(SLO)$/tablemgr.obj \
+ $(SLO)$/tautofmt.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/table/mergetbl.cxx b/sw/source/ui/table/mergetbl.cxx
new file mode 100644
index 000000000000..b84a3a767939
--- /dev/null
+++ b/sw/source/ui/table/mergetbl.cxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * $RCSfile: mergetbl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _MERGETBL_HXX
+#include <mergetbl.hxx>
+#endif
+#ifndef _MERGETBL_HRC
+#include <mergetbl.hrc>
+#endif
+#ifndef _TABLE_HRC
+#include <table.hrc>
+#endif
+
+
+SwMergeTblDlg::SwMergeTblDlg( Window *pParent, BOOL& rWithPrev )
+ : SvxStandardDialog(pParent, SW_RES(DLG_MERGE_TABLE)),
+ aOKPB( this, ResId(PB_OK )),
+ aCancelPB( this, ResId(PB_CANCEL )),
+ aHelpPB( this, ResId(PB_HELP )),
+ aMergeGB( this, ResId(GB_MERGE )),
+ aMergePrevRB( this, ResId(RB_MERGE_PREV)),
+ aMergeNextRB( this, ResId(RB_MERGE_NEXT)),
+ rMergePrev( rWithPrev )
+{
+ FreeResource();
+ aMergePrevRB.Check();
+}
+
+void SwMergeTblDlg::Apply()
+{
+ rMergePrev = aMergePrevRB.IsChecked();
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.3 2000/09/18 16:06:08 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.2 1999/02/18 08:43:26 JP
+ Task #61764#: neu: Tabellen zusammenfassen
+
+
+ Rev 1.1 18 Feb 1999 09:43:26 JP
+ Task #61764#: neu: Tabellen zusammenfassen
+
+ Rev 1.0 17 Feb 1999 21:12:06 JP
+ Task #61764#: neu: Tabellen zusammenfassen
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/table/mergetbl.hrc b/sw/source/ui/table/mergetbl.hrc
new file mode 100644
index 000000000000..34376e06b450
--- /dev/null
+++ b/sw/source/ui/table/mergetbl.hrc
@@ -0,0 +1,66 @@
+/*************************************************************************
+ *
+ * $RCSfile: mergetbl.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define PB_OK 1
+#define PB_CANCEL 2
+#define PB_HELP 3
+#define GB_MERGE 4
+#define RB_MERGE_PREV 5
+#define RB_MERGE_NEXT 6
diff --git a/sw/source/ui/table/mergetbl.src b/sw/source/ui/table/mergetbl.src
new file mode 100644
index 000000000000..9c12d5639691
--- /dev/null
+++ b/sw/source/ui/table/mergetbl.src
@@ -0,0 +1,193 @@
+/*************************************************************************
+ *
+ * $RCSfile: mergetbl.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "table.hrc"
+#include "mergetbl.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ModalDialog DLG_MERGE_TABLE
+{
+ HelpID = FN_TABLE_MERGE_TABLE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 207 , 57 ) ;
+ Text = "Tabellen verbinden" ;
+ Text [ ENGLISH ] = "Join tables" ;
+ Moveable = TRUE ;
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 151 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 151 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 151 , 40 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ GroupBox GB_MERGE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 139 , 51 ) ;
+ Text = "Modus" ;
+ Text [ ENGLISH ] = "Mode" ;
+ 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 [ portuguese ] = "Modo" ;
+ Text[ chinese_simplified ] = "ģʽ";
+ Text[ russian ] = "Ðåæèì";
+ Text[ polish ] = "Tryb";
+ Text[ japanese ] = "Ó°ÄÞ";
+ Text[ chinese_traditional ] = "¼Ò¦¡";
+ Text[ arabic ] = "ÇáÃÓáæÈ";
+ Text[ greek ] = "ÊáôÜóôáóç ëåéôïõñãßáò";
+ Text[ korean ] = "¸ðµå";
+ Text[ turkish ] = "Kip";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_MERGE_PREV
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
+ Text = "mit der ~vorherigen Tabelle verbinden" ;
+ Text [ ENGLISH ] = "Join with ~previous table" ;
+ Check = TRUE ;
+ TabStop = TRUE ;
+ Text[ english_us ] = "Join with ~previous table";
+ Text[ portuguese ] = "Unir à tabela ~anterior";
+ Text[ russian ] = "Îáúåäèíèòü ñ ïðåäûäóùåé òàáëèöåé";
+ Text[ dutch ] = "met de ~vorige tabel verbinden";
+ Text[ french ] = "Fusionner avec le tableau ~précédent";
+ Text[ spanish ] = "unir con la tabla ~anterior";
+ Text[ italian ] = "Unisci alla tabella precedente";
+ Text[ danish ] = "flet med forrige tabel";
+ Text[ swedish ] = "förbind med den ~föregående tabellen";
+ Text[ polish ] = "Sprzêgaj z poprzedni¹ tabel¹";
+ Text[ portuguese_brazilian ] = "Join with ~previous table";
+ Text[ japanese ] = "‘O‚Ì•\\‚ÆŒ‹‡(~P)";
+ Text[ chinese_simplified ] = "ºÍÉÏÒ»¸ö±í¸ñºÏ²¢(~P)";
+ Text[ chinese_traditional ] = "©M¤W¤@­Óªí®æ¦X¦}(~P)";
+ Text[ arabic ] = "ÇáÑÈØ ãÚ ÇáÌÏæá ÇáÓÇÈÞ";
+ Text[ greek ] = "Ýíùóç ìå ðñïçãïýìåíï ðßíáêá";
+ Text[ korean ] = "ÀÌÀü Ç¥¿Í ÇÔ²²(~P)";
+ Text[ turkish ] = "~Önceki tablo ile birleþtir";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_MERGE_NEXT
+ {
+ Pos = MAP_APPFONT ( 12 , 30 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
+ Text = "mit der ~nachfolgenden Tabelle verbinden" ;
+ Text [ ENGLISH ] = "Join with ~next table" ;
+ Text[ english_us ] = "Join with ~next table";
+ Text[ portuguese ] = "Unir à tabela ~seguinte";
+ Text[ russian ] = "Îáúåäèíèòü ñî ñëåäóþùåé òàáëèöåé";
+ Text[ dutch ] = "Met de v~olgende tabel verbinden";
+ Text[ french ] = "Fusionner avec le tableau ~suivant";
+ Text[ spanish ] = "unir con la tabla ~siguiente";
+ Text[ italian ] = "Unisci alla tabella successiva";
+ Text[ danish ] = "flet med efterfølgende tabel";
+ Text[ swedish ] = "förbind med den ~efterföljande tabellen";
+ Text[ polish ] = "Sprzêgaj z nastêpn¹ tabel¹";
+ Text[ portuguese_brazilian ] = "Join with ~next table";
+ Text[ japanese ] = "ŽŸ‚Ì•\\‚ÆŒ‹‡(~N)";
+ Text[ chinese_simplified ] = "ºÍÏÂÒ»¸ö±í¸ñºÏ²¢(~N)";
+ Text[ chinese_traditional ] = "©M¤U¤@­Óªí®æ¦X¦}(~N)";
+ Text[ arabic ] = "ÇáÑÈØ ãÚ ÇáÌÏæá ÇáÊÇáí";
+ Text[ greek ] = "Ýíùóç ìå åðüìåíï ðßíáêá";
+ Text[ korean ] = "´ÙÀ½ Ç¥¿Í ÇÔ²²(~N)";
+ Text[ turkish ] = "S~onraki tablo ile birleþtir";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ english_us ] = "Join tables";
+ Text[ portuguese ] = "Unir tabelas";
+ Text[ russian ] = "Îáúåäèíèòü òàáëèöû";
+ Text[ dutch ] = "Tabellen verbinden";
+ Text[ french ] = "Fusion de tableaux";
+ Text[ spanish ] = "unir tablas";
+ Text[ italian ] = "Unisci tabelle";
+ Text[ danish ] = "Flet tabeller";
+ Text[ swedish ] = "Förbind tabeller";
+ Text[ polish ] = "Sprzêgaj tabele";
+ Text[ portuguese_brazilian ] = "Join tables";
+ Text[ japanese ] = "•\\‚ÌŒ‹‡";
+ Text[ chinese_simplified ] = "Á¬½Ó±í¸ñ";
+ Text[ chinese_traditional ] = "³sµ²ªí®æ";
+ Text[ arabic ] = "æÕá ÇáÌÏÇæá";
+ Text[ greek ] = "¸íùóç ðéíÜêùí";
+ Text[ korean ] = "Ç¥ ¿¬°á";
+ Text[ turkish ] = "Tablolarý birleþtir";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/table/rowht.cxx b/sw/source/ui/table/rowht.cxx
new file mode 100644
index 000000000000..e447c11256ba
--- /dev/null
+++ b/sw/source/ui/table/rowht.cxx
@@ -0,0 +1,228 @@
+/*************************************************************************
+ *
+ * $RCSfile: rowht.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SVX_DLGUTIL_HXX //autogen
+#include <svx/dlgutil.hxx>
+#endif
+#ifndef _SFX_SAVEOPT_HXX //autogen
+#include <sfx2/saveopt.hxx>
+#endif
+
+
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#include "cmdid.h"
+#include "swtypes.hxx"
+#include "rowht.hxx"
+#include "wrtsh.hxx"
+#include "frmatr.hxx"
+
+#include "rowht.hrc"
+#include "table.hrc"
+
+
+
+
+void SwTableHeightDlg::Apply()
+{
+ SwTwips nHeight = aHeightEdit.Denormalize(aHeightEdit.GetValue(FUNIT_TWIP));
+ SwFmtFrmSize aSz(ATT_FIX_SIZE, 0, nHeight);
+
+ SwFrmSize eFrmSize = (SwFrmSize) aAutoHeightCB.IsChecked() ?
+ ATT_MIN_SIZE : ATT_FIX_SIZE;
+ if(eFrmSize != aSz.GetSizeType())
+ {
+ aSz.SetSizeType(eFrmSize);
+ }
+ rSh.SetRowHeight( aSz );
+}
+
+// CTOR / DTOR -----------------------------------------------------------
+
+
+SwTableHeightDlg::SwTableHeightDlg( Window *pParent, SwWrtShell &rS ) :
+
+ SvxStandardDialog(pParent, SW_RES(DLG_ROW_HEIGHT)),
+
+ aHeightEdit(this, SW_RES(ED_HEIGHT)),
+ aAutoHeightCB(this, SW_RES(CB_AUTOHEIGHT)),
+ aHeightFrm(this, SW_RES(GB_HEIGHT)),
+ aOKBtn(this, SW_RES(BT_OK)),
+ aCancelBtn(this, SW_RES(BT_CANCEL)),
+ aHelpBtn( this, SW_RES( BT_HELP ) ),
+ rSh( rS )
+{
+ FreeResource();
+ ::SetFieldUnit(aHeightEdit, OFF_APP()->GetOptions().GetMetric());
+ aHeightEdit.SetMin(MINLAY, FUNIT_TWIP);
+ if(!aHeightEdit.GetMin())
+ aHeightEdit.SetMin(1);
+ SwFmtFrmSize *pSz;
+ rSh.GetRowHeight( pSz );
+ if ( pSz )
+ {
+ long nHeight = pSz->GetHeight();
+ aAutoHeightCB.Check(pSz->GetSizeType() != ATT_FIX_SIZE);
+ aHeightEdit.SetValue(aHeightEdit.Normalize(nHeight), FUNIT_TWIP);
+
+ delete pSz;
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.38 2000/09/18 16:06:08 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.37 2000/05/26 07:21:33 os
+ old SW Basic API Slots removed
+
+ Revision 1.36 1998/05/15 05:27:00 OS
+ HelpButton
+
+
+ Rev 1.35 15 May 1998 07:27:00 OS
+ HelpButton
+
+ Rev 1.34 24 Nov 1997 15:52:22 MA
+ includes
+
+ Rev 1.33 03 Nov 1997 13:56:50 MA
+ precomp entfernt
+
+ Rev 1.32 15 Aug 1997 12:18:22 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.31 08 Jan 1997 10:34:48 OS
+ falschen default entfernt
+
+ Rev 1.30 17 Dec 1996 16:59:52 OS
+ per Default MM50 als Normhoehe
+
+ Rev 1.29 11 Dec 1996 20:58:14 MH
+ includes
+
+ Rev 1.28 11 Dec 1996 08:43:16 OS
+ Minimalwert nie NULL, Einheit richtig einstellen
+
+ Rev 1.27 26 Nov 1996 19:45:10 OS
+ minimale Zellenhoehe jetzt MINLAY
+
+ Rev 1.26 11 Nov 1996 11:20:18 MA
+ ResMgr
+
+ Rev 1.25 28 Aug 1996 14:33:12 OS
+ includes
+
+ Rev 1.24 26 Jun 1996 15:25:22 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.23 26 Jun 1996 10:59:48 OM
+ Autohoehe fuer Tabellenzeile
+
+ Rev 1.22 25 Jun 1996 18:13:34 OM
+ Autohoehe fuer Tabellenzeile
+
+ Rev 1.21 20 Jun 1996 13:57:38 MA
+ chg: RowHeight jetzt mit minimalgroesse
+
+ Rev 1.20 24 Nov 1995 16:58:58 OM
+ PCH->PRECOMPILED
+
+ Rev 1.19 10 Nov 1995 15:26:16 OS
+ Execute mit 0L abschliessen
+
+ Rev 1.18 05 Nov 1995 16:48:32 OS
+ Dtor ueberfluessig, -RecordFlag, Aktion ueber Dispatcher
+
+ Rev 1.17 13 Sep 1995 17:09:42 OS
+ Recording ausgeweitet
+
+ Rev 1.16 30 Aug 1995 14:04:24 MA
+ fix: sexport'iert
+
+ Rev 1.15 21 Aug 1995 09:34:04 MA
+ chg: swstddlg -> svxstandarddialog, Optimierungen
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/table/rowht.hrc b/sw/source/ui/table/rowht.hrc
new file mode 100644
index 000000000000..77f5306896e0
--- /dev/null
+++ b/sw/source/ui/table/rowht.hrc
@@ -0,0 +1,68 @@
+/*************************************************************************
+ *
+ * $RCSfile: rowht.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define ED_HEIGHT 1
+#define CB_AUTOHEIGHT 2
+#define GB_HEIGHT 3
+
+#define BT_OK 100
+#define BT_CANCEL 101
+#define BT_HELP 102
+
diff --git a/sw/source/ui/table/rowht.src b/sw/source/ui/table/rowht.src
new file mode 100644
index 000000000000..dd9aacf9c66e
--- /dev/null
+++ b/sw/source/ui/table/rowht.src
@@ -0,0 +1,186 @@
+/*************************************************************************
+ *
+ * $RCSfile: rowht.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "table.hrc"
+#include "rowht.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ModalDialog DLG_ROW_HEIGHT
+{
+ HelpID = FN_TABLE_SET_ROW_HEIGHT ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 157 , 60 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zeilenhöhe : Zellenhöhe */
+ Text = "Zeilenhöhe" ;
+ Text [ ENGLISH ] = "Row height" ;
+ Text [ norwegian ] = "Cellehøyde" ;
+ Text [ italian ] = "Altezza riga" ;
+ Text [ portuguese_brazilian ] = "Altura da célula" ;
+ Text [ portuguese ] = "Altura da linha" ;
+ Text [ finnish ] = "Solun korkeus" ;
+ Text [ danish ] = "Rækkehøjde" ;
+ Text [ french ] = "Hauteur de ligne" ;
+ Text [ swedish ] = "Radhöjd" ;
+ Text [ dutch ] = "Rijlhoogte" ;
+ Text [ spanish ] = "Altura de fila" ;
+ Text [ english_us ] = "Row Height" ;
+ Moveable = TRUE ;
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 101 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 101 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 101 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ MetricField ED_HEIGHT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ Size = MAP_APPFONT ( 38 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 5 ;
+ Maximum = 990 ;
+ DecimalDigits = 1 ;
+ Value = 10 ;
+ Unit = FUNIT_CM ;
+ First = 100 ;
+ Last = 9999 ;
+ };
+ CheckBox CB_AUTOHEIGHT
+ {
+ Pos = MAP_APPFONT ( 12 , 31 ) ;
+ Size = MAP_APPFONT ( 80 , 12 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~dynamisch anpassen : auto. H~öhe */
+ Text = "~dynamisch anpassen" ;
+ Text [ ENGLISH ] = "~dynamic adjustment" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Fit to size" ;
+ Text [ swedish ] = "anpassa ~dynamiskt" ;
+ Text [ danish ] = "tilpas dynamisk" ;
+ Text [ italian ] = "Altezza autom~atica" ;
+ Text [ spanish ] = "~ajuste dinámico" ;
+ Text [ french ] = "adaptation ~dynamique" ;
+ Text [ dutch ] = "~dynamisch aanpassen" ;
+ Text [ portuguese_brazilian ] = "~dynamisch anpassen" ;
+ Text [ portuguese ] = "Ajuste ~dinâmico" ;
+ Text[ chinese_simplified ] = "×Ô¶¯µ÷Õû(~F)";
+ Text[ russian ] = "Ïîäáîð ðàçìåðà";
+ Text[ polish ] = "Dostosuj dynamicznie";
+ Text[ japanese ] = "Ž©“®’²®(~F)";
+ Text[ chinese_traditional ] = "¦Û°Ê½Õ¾ã(~F)";
+ Text[ arabic ] = "ÊÎÕíÕ ÏíäÇãíßí";
+ Text[ greek ] = "ÄõíáìéêÞ ðñïóáñìïãÞ";
+ Text[ korean ] = "Å©±â¿¡ ¸ÂÃã(~F)";
+ Text[ turkish ] = "i~çerik boyuna uydur";
+ };
+ GroupBox GB_HEIGHT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 89 , 51 ) ;
+ 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[ chinese_simplified ] = "Ðиß";
+ Text[ russian ] = "Âûñîòà ñòðîêè";
+ Text[ polish ] = "WysokoϾ wierszy";
+ Text[ japanese ] = "s‚Ì‚‚³";
+ Text[ chinese_traditional ] = "¦æ°ª";
+ Text[ arabic ] = "ÇÑÊÝÇÚ ÇáÕÝ";
+ Text[ greek ] = "¾øïò ãñáììÞò";
+ Text[ korean ] = "Çà ³ôÀÌ";
+ Text[ turkish ] = "Satýr yüksekliði";
+};
diff --git a/sw/source/ui/table/splittbl.cxx b/sw/source/ui/table/splittbl.cxx
new file mode 100644
index 000000000000..276347e0810a
--- /dev/null
+++ b/sw/source/ui/table/splittbl.cxx
@@ -0,0 +1,136 @@
+/*************************************************************************
+ *
+ * $RCSfile: splittbl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _WRTSH_HXX //autogen
+#include <wrtsh.hxx>
+#endif
+#ifndef _SPLITTBL_HXX
+#include <splittbl.hxx>
+#endif
+#include <splittbl.hrc>
+#include <table.hrc>
+#ifndef _TBLENUM_HXX
+#include <tblenum.hxx>
+#endif
+/*-----------------17.03.98 10:56-------------------
+
+--------------------------------------------------*/
+SwSplitTblDlg::SwSplitTblDlg( Window *pParent, SwWrtShell &rSh ) :
+ SvxStandardDialog(pParent, SW_RES(DLG_SPLIT_TABLE)),
+ aOKPB( this, ResId(PB_OK )),
+ aCancelPB( this, ResId(PB_CANCEL )),
+ aHelpPB( this, ResId(PB_HELP )),
+ aSplitGB( this, ResId(GB_SPLIT )),
+ aCntntCopyRB( this, ResId(RB_CNTNT )),
+ aBoxAttrCopyWithParaRB( this, ResId(RB_BOX_PARA )),
+ aBoxAttrCopyNoParaRB( this, ResId(RB_BOX_NOPARA)),
+ aBorderCopyRB( this, ResId(RB_BORDER )),
+ rShell(rSh)
+{
+ FreeResource();
+ aCntntCopyRB.Check();
+}
+
+/*-----------------17.03.98 10:56-------------------
+
+--------------------------------------------------*/
+void SwSplitTblDlg::Apply()
+{
+ USHORT nSplit = HEADLINE_CNTNTCOPY;
+ if(aBoxAttrCopyWithParaRB.IsChecked())
+ nSplit = HEADLINE_BOXATRCOLLCOPY;
+ if(aBoxAttrCopyNoParaRB.IsChecked())
+ nSplit = HEADLINE_BOXATTRCOPY;
+ else if(aBorderCopyRB.IsChecked())
+ nSplit = HEADLINE_BORDERCOPY;
+
+ rShell.SplitTable( nSplit );
+
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.4 2000/09/18 16:06:09 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.3 1998/03/20 12:39:40 OS
+ verdrehter enum
+
+
+ Rev 1.2 20 Mar 1998 13:39:40 OS
+ verdrehter enum
+
+ Rev 1.1 19 Mar 1998 11:15:38 OS
+ Neuer Parameter: mit Vorlage
+
+ Rev 1.0 17 Mar 1998 16:16:52 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/table/splittbl.hrc b/sw/source/ui/table/splittbl.hrc
new file mode 100644
index 000000000000..be5c9d2410ca
--- /dev/null
+++ b/sw/source/ui/table/splittbl.hrc
@@ -0,0 +1,68 @@
+/*************************************************************************
+ *
+ * $RCSfile: splittbl.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define PB_OK 1
+#define PB_CANCEL 2
+#define PB_HELP 3
+#define GB_SPLIT 4
+#define RB_CNTNT 5
+#define RB_BOX_NOPARA 6
+#define RB_BOX_PARA 7
+#define RB_BORDER 8
diff --git a/sw/source/ui/table/splittbl.src b/sw/source/ui/table/splittbl.src
new file mode 100644
index 000000000000..f8c4263c889f
--- /dev/null
+++ b/sw/source/ui/table/splittbl.src
@@ -0,0 +1,245 @@
+/*************************************************************************
+ *
+ * $RCSfile: splittbl.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "table.hrc"
+#include "splittbl.hrc"
+#include "cmdid.h"
+#include "helpid.h"
+ModalDialog DLG_SPLIT_TABLE
+{
+ HelpID = FN_TABLE_SPLIT_TABLE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 207 , 76 ) ;
+ Text = "Tabelle auftrennen" ;
+ Text [ ENGLISH ] = "Split table" ;
+ Moveable = TRUE ;
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 151 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 151 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 151 , 40 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ GroupBox GB_SPLIT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 139 , 70 ) ;
+ Text = "Modus" ;
+ Text [ ENGLISH ] = "Mode" ;
+ 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 [ portuguese ] = "Modo" ;
+ Text[ chinese_simplified ] = "ģʽ";
+ Text[ russian ] = "Ðåæèì";
+ Text[ polish ] = "Tryb";
+ Text[ japanese ] = "Ó°ÄÞ";
+ Text[ chinese_traditional ] = "¼Ò¦¡";
+ Text[ arabic ] = "ÇáæÖÚ";
+ Text[ greek ] = "ÊáôÜóôáóç ëåéôïõñãßáò";
+ Text[ korean ] = "¸ðµå";
+ Text[ turkish ] = "Kip";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_CNTNT
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
+ Text = "~Überschrift kopieren" ;
+ Text [ ENGLISH ] = "~Copy Heading" ;
+ Check = TRUE ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "~Copiar título" ;
+ Text [ english_us ] = "~Copy heading" ;
+ Text [ portuguese_brazilian ] = "~Überschrift kopieren" ;
+ Text [ swedish ] = "Kopiera ~överskrift" ;
+ Text [ danish ] = "Kopier overskrift" ;
+ Text [ italian ] = "~Copia intestazione" ;
+ Text [ spanish ] = "~Copiar encabezado" ;
+ Text [ french ] = "~Copier titre" ;
+ Text [ dutch ] = "~Kop kopiëren" ;
+ Text[ chinese_simplified ] = "¸´ÖƱêÌâ(~C)";
+ Text[ russian ] = "Êîïèðîâàòü çàãîëîâîê";
+ Text[ polish ] = "Kopiuj tytu³";
+ Text[ japanese ] = "Œ©o‚µ‚̺Ëß°(~C)";
+ Text[ chinese_traditional ] = "½Æ»s¼ÐÃD(~C)";
+ Text[ arabic ] = "äÓÎ ÇáÚäæÇä";
+ Text[ greek ] = "ÁíôéãñáöÞ åðéêåöáëßäáò";
+ Text[ korean ] = "Á¦¸ñ º¹»ç(~C)";
+ Text[ turkish ] = "B~aþlýðý kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_BOX_PARA
+ {
+ Pos = MAP_APPFONT ( 12 , 30 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
+ Text = "~Eigene Überschrift, mit Vorlage" ;
+ Text [ ENGLISH ] = "New heading ~with style" ;
+ Text [ portuguese ] = "Título ~personalizado (com modelo)" ;
+ Text [ english_us ] = "C~ustom heading (apply Style)" ;
+ Text [ portuguese_brazilian ] = "~Eigene Überschrift, mit Vorlage" ;
+ Text [ swedish ] = "~Egen överskrift, med mall" ;
+ Text [ danish ] = "Egen overskrift, med typografi" ;
+ Text [ italian ] = "~Propria intestazione con modello" ;
+ Text [ spanish ] = "~Encabezado propio, con estilos" ;
+ Text [ french ] = "Titre personnalisé, avec ~style" ;
+ Text [ dutch ] = "~Eigen kop, met opmaakprofiel" ;
+ Text[ chinese_simplified ] = "×Ô¶¨±êÌ⣬´øÑùʽ(~S)";
+ Text[ russian ] = "Çàãîëîâîê ïîëüçîâàòåëÿ ñ øàáëîíîì";
+ Text[ polish ] = "Tytu³ u¿ytkownika, z szablonem";
+ Text[ japanese ] = "½À²Ù•t‚«Õ°»Þ°’è‹`‚ÌŒ©o‚µ(~S)";
+ Text[ chinese_traditional ] = "¦Û­q¼ÐÃD¡A±a¼Ë¦¡(~S)";
+ Text[ arabic ] = "ÚäæÇä ÎÇÕ (ÊØÈíÞ ÇáäãØ)";
+ Text[ greek ] = "ÐñïóáñìïóìÝíç åðéêåöáëßäá (ìå óôõë)";
+ Text[ korean ] = "»ç¿ëÀÚ Á¦¸ñ (À¯Çü Àû¿ë)(~U)";
+ Text[ turkish ] = "~Özel baþlýk (biçim uygula)";
+ Text[ language_user1 ] = "All \"Vorlagen\" /Styles are written with a capital S.10.5.00EM";
+ };
+ RadioButton RB_BOX_NOPARA
+ {
+ Pos = MAP_APPFONT ( 12 , 45 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
+ Text = "E~igene Überschrift" ;
+ Text [ ENGLISH ] = "~New heading" ;
+ Text [ portuguese ] = "Título ~personalizado" ;
+ Text [ english_us ] = "Cu~stom heading" ;
+ Text [ portuguese_brazilian ] = "E~igene Überschrift" ;
+ Text [ swedish ] = "E~gen överskrift" ;
+ Text [ danish ] = "Egen overskrift" ;
+ Text [ italian ] = "Propria ~intestazione" ;
+ Text [ spanish ] = "Encabezado ~propio" ;
+ Text [ french ] = "Titre ~personnalisé" ;
+ Text [ dutch ] = "E~igen kop" ;
+ Text[ chinese_simplified ] = "×Ô¶¨±êÌâ(~H)";
+ Text[ russian ] = "Çàãîëîâîê ïîëüçîâàòåëÿ";
+ Text[ polish ] = "Tytu³ u¿ytkownika";
+ Text[ japanese ] = "Õ°»Þ°’è‹`‚ÌŒ©o‚µ(~H)";
+ Text[ chinese_traditional ] = "¦Û­q¼ÐÃD(~H)";
+ Text[ arabic ] = "ÚäæÇä ÎÇÕ";
+ Text[ greek ] = "ÐñïóáñìïóìÝíç åðéêåöáëßäá";
+ Text[ korean ] = "»ç¿ëÀÚ Á¦¸ñ(~S)";
+ Text[ turkish ] = "Ö~zel baþlýk";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_BORDER
+ {
+ Pos = MAP_APPFONT ( 12 , 60 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
+ Text = "~Keine Überschrift" ;
+ Text [ ENGLISH ] = "N~o heading" ;
+ Text [ portuguese ] = "~Sem título" ;
+ Text [ english_us ] = "~No heading" ;
+ Text [ portuguese_brazilian ] = "~Keine Überschrift" ;
+ Text [ swedish ] = "~Ingen överskrift" ;
+ Text [ danish ] = "Ingen overskrift" ;
+ Text [ italian ] = "~Senza intestazione" ;
+ Text [ spanish ] = "~Sin encabezado" ;
+ Text [ french ] = "~Pas de titre" ;
+ Text [ dutch ] = "~Geen kop" ;
+ Text[ chinese_simplified ] = "ÎÞ±êÌâ(~N)";
+ Text[ russian ] = "Áåç çàãîëîâêà";
+ Text[ polish ] = "Bez tytu³u";
+ Text[ japanese ] = "Œ©o‚µ‚È‚µ(~N)";
+ Text[ chinese_traditional ] = "µL¼ÐÃD(~N)";
+ Text[ arabic ] = "ÈÏæä ÚäæÇä";
+ Text[ greek ] = "×ùñßò åðéêåöáëßäá";
+ Text[ korean ] = "Á¦¸ñÀÌ ¾øÀ½(~N)";
+ Text[ turkish ] = "~Baþlýk yok";
+ Text[ language_user1 ] = " ";
+ };
+ Text [ english_us ] = "Split Table" ;
+ Text [ portuguese_brazilian ] = "Tabelle auftrennen" ;
+ Text [ swedish ] = "Dela tabell" ;
+ Text [ danish ] = "Opdel tabel" ;
+ Text [ italian ] = "Dividi tabella" ;
+ Text [ spanish ] = "Dividir tabla" ;
+ Text [ french ] = "Scinder le tableau" ;
+ Text [ dutch ] = "Tabel splitsen" ;
+ Text [ portuguese ] = "Dividir tabela" ;
+ Text[ chinese_simplified ] = "·Ö¸ô±í¸ñ";
+ Text[ russian ] = "Ðàçáèòü òàáëèöó";
+ Text[ polish ] = "Rozdziel tabelê";
+ Text[ japanese ] = "•\\‚Ì•ªŠ„";
+ Text[ chinese_traditional ] = "¤À¶}Àx¦s®æ";
+ Text[ arabic ] = "ÝÕá ÇáÌÏæá";
+ Text[ greek ] = "Äéáßñåóç ðßíáêá";
+ Text[ korean ] = "Ç¥ ³ª´©±â";
+ Text[ turkish ] = "Tabloyu böl";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/table/table.src b/sw/source/ui/table/table.src
new file mode 100644
index 000000000000..e9911f4c4d8a
--- /dev/null
+++ b/sw/source/ui/table/table.src
@@ -0,0 +1,87 @@
+/*************************************************************************
+ *
+ * $RCSfile: table.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "table.hrc"
+InfoBox MSG_ERR_TABLE_MERGE
+{
+ MESSAGE = "Selektierte Zellen der Tabelle sind zu komplex zum Verbinden." ;
+ MESSAGE [ English ] = "Selected table cells are too complex to merge." ;
+ MESSAGE [ norwegian ] = "Valgte tabellceller er for komplekse til å flette" ;
+ MESSAGE [ italian ] = "Le celle della tabella selezionata sono troppo complesse per l'unione" ;
+ MESSAGE [ portuguese_brazilian ] = "Células selecionadas da tabela sao muito complexas para a intercalação." ;
+ MESSAGE [ portuguese ] = "As células seleccionadas da tabela são muito complexas para a intercalação." ;
+ MESSAGE [ finnish ] = "Valitut taulukon solut ovat liian monimutkaiset yhdistettäviksi." ;
+ MESSAGE [ danish ] = "De markerede tabelceller er for komplekse til fletning." ;
+ MESSAGE [ french ] = "Cellules du tableau sélectionnées trop complexes pour être fusionnées." ;
+ MESSAGE [ swedish ] = "Markerade tabellceller är för komplexa för sammanfogning." ;
+ MESSAGE [ dutch ] = "De geselecteerde tabelcellen zijn te complex voor samenvoeging." ;
+ MESSAGE [ spanish ] = "Las celdas seleccionadas de la tabla son demasiado complejas para enlazarlas." ;
+ MESSAGE [ english_us ] = "Selected table cells are too complex to merge." ;
+ MESSAGE[ chinese_simplified ] = "ËùÑ¡ÔñµÄ±í¸ñµ¥Ôª¸ñÌ«×ۺ϶øÎÞ·¨ºÏ²¢¡£";
+ MESSAGE[ russian ] = "Âûäåëåííûå ÿ÷åéêè òàáëèöû ñëèøêîì ñëîæíûå äëÿ èõ îáúåäèíåíèÿ .";
+ MESSAGE[ polish ] = "Zaznaczone komórki tabeli s¹ zbyt komplekowe, aby je sprzêgaæ.";
+ MESSAGE[ japanese ] = "‘I‘ð‚³‚ê‚½•\\‚̾قÍAŒ‹‡‚·‚é‚É‚Í•¡ŽG‰ß‚¬‚Ü‚·B";
+ MESSAGE[ chinese_traditional ] = "©Ò¿ï¾Üªºªí®æÀx¦s®æ¤Óºî¦X¦ÓµLªk¦X¨Ö¡C";
+ MESSAGE[ arabic ] = "ÎáÇíÇ ÇáÌÏæá ÇáãÍÏÏÉ ãÚÞÏÉ áÏÑÌÉ íÓÊÍíá ãÚåÇ ÇáÑÈØ.";
+ MESSAGE[ greek ] = "Ôá åðéëåãìÝíá êåëéÜ ôïõ ðßíáêá åßíáé õðåñâïëéêÜ ðåñßðëïêá ãéá íá ãßíåé ç óýíäåóç.";
+ MESSAGE[ korean ] = "¼±ÅÃµÈ Ç¥ ¼¿ÀÌ ÇÕº´Çϱ⿡ ³Ê¹« º¹ÀâÇÕ´Ï´Ù.";
+ MESSAGE[ turkish ] = "Seçilen tablo hücreleri birleþtirilmek için fazla karmaþýk.";
+};
diff --git a/sw/source/ui/table/tabledlg.cxx b/sw/source/ui/table/tabledlg.cxx
new file mode 100644
index 000000000000..bf4d9526393f
--- /dev/null
+++ b/sw/source/ui/table/tabledlg.cxx
@@ -0,0 +1,2321 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabledlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SVX_BORDER_HXX //autogen
+#include <svx/border.hxx>
+#endif
+#ifndef _SVX_BACKGRND_HXX //autogen
+#include <svx/backgrnd.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _SVX_KEEPITEM_HXX //autogen
+#include <svx/keepitem.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+
+
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTTSPLT_HXX //autogen
+#include <fmtlsplt.hxx>
+#endif
+#ifndef _OFA_HTMLCFG_HXX //autogen
+#include <offmgr/htmlcfg.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX
+#include <svx/htmlmode.hxx>
+#endif
+
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _TABLEDLG_HXX
+#include <tabledlg.hxx>
+#endif
+#ifndef _TABLEPG_HXX
+#include <tablepg.hxx>
+#endif
+#ifndef _TABLEMGR_HXX
+#include <tablemgr.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _UIITEMS_HXX
+#include <uiitems.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _TABLEDLG_HRC
+#include <tabledlg.hrc>
+#endif
+#ifndef _TABLE_HRC
+#include <table.hrc>
+#endif
+
+
+#ifdef DEBUG_TBLDLG
+void DbgTblRep(SwTableRep* pRep)
+{
+ DBG_ERROR(String(pRep->GetColCount()))
+ DBG_ERROR(String(pRep->GetAllColCount()))
+ SwTwips nSum = 0;
+ for(USHORT i = 0; i < pRep->GetAllColCount(); i++)
+ {
+ String sMsg(i);
+ sMsg += pRep->GetColumns()[i].bVisible ? " v " : " h ";
+ sMsg += pRep->GetColumns()[i].nWidth;
+ nSum +=pRep->GetColumns()[i].nWidth;
+ DBG_ERROR(sMsg)
+ }
+ String sMsg("Spaltensumme: ");
+ sMsg += nSum;
+ sMsg += " Tblbreite: ";
+ sMsg += pRep->GetWidth();
+ DBG_ERROR(sMsg)
+ sMsg = "Gesamt/Links/Rechts: ";
+ sMsg += pRep->GetSpace();
+ sMsg += '/';
+ sMsg += pRep->GetLeftSpace();
+ sMsg += '/';
+ sMsg += pRep->GetRightSpace();
+ DBG_ERROR(sMsg)
+ sMsg = "Align: ";
+ sMsg += pRep->GetAlign();
+ DBG_ERROR(sMsg)
+
+};
+
+void DbgTColumn(TColumn* pTColumn, USHORT nCount)
+{
+ for(USHORT i = 0; i < nCount; i++)
+ {
+ String sMsg(i);
+ sMsg += pTColumn[i].bVisible ? " v " : " h ";
+ sMsg += pTColumn[i].nWidth;
+ DBG_ERROR(sMsg)
+ }
+}
+#endif
+
+
+#ifdef DEBUG_TBLDLG
+#define DEBUG_TBLDLG_TABLEREP(pRep) DbgTblRep(pRep)
+#define DEBUG_TBLDLG_TCOLUMN(pTColumn, nCount) DbgTColumn(pTColumn, nCount)
+#else
+#define DEBUG_TBLDLG_TABLEREP
+#define DEBUG_TBLDLG_TCOLUMN
+#endif
+
+SwFormatTablePage::SwFormatTablePage( Window* pParent, const SfxItemSet& rSet ) :
+ SfxTabPage(pParent, SW_RES( TP_FORMAT_TABLE ), rSet ),
+ aNameFT(this, SW_RES( FT_NAME )),
+ aNameED(this, SW_RES( ED_NAME )),
+ aWidthFT(this, SW_RES( FT_WIDTH )),
+ aWidthMF(this, SW_RES( ED_WIDTH )),
+ aRelWidthCB(this, SW_RES( CB_REL_WIDTH )),
+ aLeftFT(this, SW_RES( FT_LEFT_DIST )),
+ aLeftMF(this, SW_RES( ED_LEFT_DIST )),
+ aRightFT(this, SW_RES( FT_RIGHT_DIST )),
+ aRightMF(this, SW_RES( ED_RIGHT_DIST )),
+ aTopFT (this, SW_RES( FT_TOP_DIST )),
+ aTopMF(this, SW_RES( ED_TOP_DIST )),
+ aBottomFT(this, SW_RES( FT_BOTTOM_DIST )),
+ aBottomMF(this, SW_RES( ED_BOTTOM_DIST )),
+ aDistGB(this, SW_RES( GB_DIST )),
+ aOptionsGB(this, SW_RES( GB_OPTIONS )),
+ aFullBtn(this, SW_RES( RB_FULL )),
+ aFreeBtn(this, SW_RES( RB_FREE )),
+ aLeftBtn(this, SW_RES( RB_LEFT )),
+ aFromLeftBtn(this, SW_RES( RB_FROM_LEFT )),
+ aRightBtn(this, SW_RES( RB_RIGHT )),
+ aCenterBtn(this, SW_RES( RB_CENTER )),
+ aPosFrm(this, SW_RES( GB_POS )),
+ pTblData(0),
+ nSaveWidth(0),
+ nMinTableWidth(MINLAY),
+ bModified(FALSE),
+ bFull(0)
+{
+ FreeResource();
+ SetExchangeSupport();
+
+ Init();
+}
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+void SwFormatTablePage::Init()
+{
+ aLeftMF.MetricField::SetMin(-999999);
+ aRightMF.MetricField::SetMin(-999999);
+
+ // handler
+ Link aLk = LINK( this, SwFormatTablePage, AutoClickHdl );
+ aFullBtn.SetClickHdl( aLk );
+ aFreeBtn.SetClickHdl( aLk );
+ aLeftBtn.SetClickHdl( aLk );
+ aFromLeftBtn.SetClickHdl( aLk );
+ aRightBtn.SetClickHdl( aLk );
+ aCenterBtn.SetClickHdl( aLk );
+
+ aLk = LINK( this, SwFormatTablePage, UpHdl );
+ aTopMF.SetUpHdl( aLk );
+ aBottomMF.SetUpHdl( aLk );
+ aRightMF.SetUpHdl( aLk );
+ aLeftMF.SetUpHdl( aLk );
+ aWidthMF.SetUpHdl( aLk );
+
+ aLk = LINK( this, SwFormatTablePage, DownHdl );
+ aTopMF.SetDownHdl( aLk );
+ aBottomMF.SetDownHdl( aLk );
+ aRightMF.SetDownHdl( aLk );
+ aLeftMF.SetDownHdl( aLk );
+ aWidthMF.SetDownHdl( aLk );
+
+ aLk = LINK( this, SwFormatTablePage, LoseFocusHdl );
+ aTopMF.SetLoseFocusHdl( aLk );
+ aBottomMF.SetLoseFocusHdl( aLk );
+ aRightMF.SetLoseFocusHdl( aLk );
+ aLeftMF.SetLoseFocusHdl( aLk );
+ aWidthMF.SetLoseFocusHdl( aLk );
+
+ aRightMF.SetModifyHdl(LINK(this, SwFormatTablePage, RightModifyHdl));
+ aRelWidthCB.SetClickHdl(LINK( this, SwFormatTablePage, RelWidthClickHdl ));
+}
+
+/*------------------------------------------------------------------------*/
+
+IMPL_LINK( SwFormatTablePage, RelWidthClickHdl, CheckBox *, pBtn )
+{
+ DBG_ASSERT(pTblData, "Tabellendaten nicht da?")
+ BOOL bIsChecked = pBtn->IsChecked();
+ long nLeft = aLeftMF.Denormalize(aLeftMF.GetValue(FUNIT_TWIP ));
+ long nRight = aRightMF.Denormalize(aRightMF.GetValue(FUNIT_TWIP ));
+ aWidthMF.ShowPercent(bIsChecked);
+ aLeftMF.ShowPercent(bIsChecked);
+ aRightMF.ShowPercent(bIsChecked);
+
+ if (bIsChecked)
+ {
+ aWidthMF.SetRefValue(pTblData->GetSpace());
+ aLeftMF.SetRefValue(pTblData->GetSpace());
+ aRightMF.SetRefValue(pTblData->GetSpace());
+ aLeftMF.MetricField::SetMin(0); // wird vom Percentfield ueberschrieben
+ aRightMF.MetricField::SetMin(0);// -""-
+ aLeftMF.SetValue(aLeftMF.Normalize( nLeft ), FUNIT_TWIP );
+ aRightMF.SetValue(aRightMF.Normalize( nRight ), FUNIT_TWIP );
+ }
+ else
+ ModifyHdl(&aLeftMF); // Werte wieder korrigieren
+
+ if(aFreeBtn.IsChecked())
+ {
+ BOOL bEnable = !pBtn->IsChecked();
+ aRightMF.Enable(bEnable);
+ aRightFT.Enable(bEnable);
+ }
+ bModified = TRUE;
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+IMPL_LINK( SwFormatTablePage, AutoClickHdl, CheckBox *, pBox )
+{
+ BOOL bRestore = TRUE,
+ bLeftEnable = FALSE,
+ bRightEnable= FALSE,
+ bWidthEnable= FALSE,
+ bOthers = TRUE;
+ if( (RadioButton *) pBox == &aFullBtn )
+ {
+ aLeftMF.SetValue(0);
+ aRightMF.SetValue(0);
+ nSaveWidth = aWidthMF.Denormalize(aWidthMF.GetValue(FUNIT_TWIP ));
+ aWidthMF.SetValue(aWidthMF.Normalize( pTblData->GetSpace() ), FUNIT_TWIP );
+ aLeftMF.SetText( aEmptyStr );
+ aRightMF.SetText( aEmptyStr );
+ bFull = TRUE;
+ bRestore = FALSE;
+ }
+ else if( (RadioButton *) pBox == &aLeftBtn )
+ {
+ bRightEnable = bWidthEnable = TRUE;
+ aLeftMF.SetText( aEmptyStr );
+ aLeftMF.SetValue(0);
+ }
+ else if( (RadioButton *) pBox == &aFromLeftBtn )
+ {
+ bLeftEnable = bWidthEnable = TRUE;
+ aRightMF.SetText( aEmptyStr );
+ aRightMF.SetValue(0);
+ }
+ else if( (RadioButton *) pBox == &aRightBtn )
+ {
+ bLeftEnable = bWidthEnable = TRUE;
+ aRightMF.SetValue(0);
+ aRightMF.SetText( aEmptyStr );
+ }
+ else if( ( RadioButton * ) pBox == &aCenterBtn )
+ {
+ bLeftEnable = bWidthEnable = TRUE;
+ aRightMF.SetText( aEmptyStr );
+ }
+ else if( ( RadioButton * ) pBox == &aFreeBtn )
+ {
+ RightModifyHdl(&aRightMF);
+ bLeftEnable = TRUE;
+ bWidthEnable = TRUE;
+ bOthers = FALSE;
+ }
+ aLeftMF.Enable(bLeftEnable);
+ aLeftFT.Enable(bLeftEnable);
+ aWidthMF.Enable(bWidthEnable);
+ aWidthFT.Enable(bWidthEnable);
+ if ( bOthers )
+ {
+ aRightMF.Enable(bRightEnable);
+ aRightFT.Enable(bRightEnable);
+ aRelWidthCB.Enable(bWidthEnable);
+ }
+
+ if(bFull && bRestore)
+ {
+ // nachdem auf autom. geschaltet wurde, wurde die Breite gemerkt,
+ // um sie beim Zurueckschalten restaurieren zu koennen
+ bFull = FALSE;
+ aWidthMF.SetValue(aWidthMF.Normalize( nSaveWidth ), FUNIT_TWIP );
+ }
+ ModifyHdl(&aWidthMF);
+ bModified = TRUE;
+ return 0;
+}
+
+/*----------------------------------------------------------------------*/
+IMPL_LINK( SwFormatTablePage, RightModifyHdl, MetricField *, pFld )
+{
+ if(aFreeBtn.IsChecked())
+ {
+ BOOL bEnable = aRightMF.GetValue() == 0;
+// aWidthMF.Enable(bEnable);
+ aRelWidthCB.Enable(bEnable);
+// aWidthFT.Enable(bEnable);
+ if ( !bEnable )
+ {
+ aRelWidthCB.Check(FALSE);
+ RelWidthClickHdl(&aRelWidthCB);
+ }
+ bEnable = aRelWidthCB.IsChecked();
+ aRightMF.Enable(!bEnable);
+ aRightFT.Enable(!bEnable);
+ }
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+IMPL_LINK_INLINE_START( SwFormatTablePage, UpHdl, MetricField *, pEdit )
+{
+ ModifyHdl( pEdit );
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwFormatTablePage, UpHdl, MetricField *, pEdit )
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+IMPL_LINK_INLINE_START( SwFormatTablePage, DownHdl, MetricField *, pEdit )
+{
+ ModifyHdl( pEdit );
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwFormatTablePage, DownHdl, MetricField *, pEdit )
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+IMPL_LINK_INLINE_START( SwFormatTablePage, LoseFocusHdl, MetricField *, pEdit )
+{
+ ModifyHdl( pEdit );
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwFormatTablePage, LoseFocusHdl, MetricField *, pEdit )
+
+void SwFormatTablePage::ModifyHdl( Edit* pEdit )
+{
+
+ SwTwips nCurWidth = aWidthMF.Denormalize( aWidthMF.GetValue( FUNIT_TWIP ));
+ SwTwips nPrevWidth = nCurWidth;
+ SwTwips nRight = aRightMF.Denormalize( aRightMF.GetValue( FUNIT_TWIP ));
+ SwTwips nLeft = aLeftMF.Denormalize( aLeftMF.GetValue( FUNIT_TWIP ));
+ SwTwips nDiff;
+
+ if( pEdit == &aWidthMF )
+ {
+ if( nCurWidth < MINLAY )
+ nCurWidth = MINLAY;
+ nDiff = nRight + nLeft + nCurWidth - pTblData->GetSpace() ;
+ //rechtsbuendig nur linken Rand veraendern
+ if(aRightBtn.IsChecked())
+ nLeft -= nDiff;
+ //linksbuendig nur rechten Rand veraendern
+ else if(aLeftBtn.IsChecked())
+ nRight -= nDiff;
+ //linker Rand und Breite erlaubt - erst rechts - dann links
+ else if(aFromLeftBtn.IsChecked())
+ {
+ if( nRight >= nDiff )
+ nRight -= nDiff;
+ else
+ {
+ nDiff -= nRight;
+ nRight = 0;
+ if(nLeft >= nDiff)
+ nLeft -= nDiff;
+ else
+ {
+ nRight += nLeft - nDiff;
+ nLeft = 0;
+ nCurWidth = pTblData->GetSpace();
+ }
+
+ }
+ }
+ //zentriert beide Seiten gleichmaessig veraendern
+ else if(aCenterBtn.IsChecked())
+ {
+ if((nLeft != nRight))
+ {
+ nDiff += nLeft + nRight;
+ nLeft = nDiff/2;
+ nRight = nDiff/2;
+ }
+ else
+ {
+ nLeft -= nDiff/2;
+ nRight -= nDiff/2;
+ }
+ }
+ //freie Ausrichtung: beide Raender verkleinern
+ else if(aFreeBtn.IsChecked())
+ {
+ nLeft -= nDiff/2;
+ nRight -= nDiff/2;
+ }
+ }
+ if( pEdit == &aRightMF )
+ {
+
+ if( nRight + nLeft > pTblData->GetSpace() - MINLAY )
+ nRight = pTblData->GetSpace() -nLeft - MINLAY;
+
+ nCurWidth = pTblData->GetSpace() - nLeft - nRight;
+ }
+ if( pEdit == &aLeftMF )
+ {
+ if(!aFromLeftBtn.IsChecked())
+ {
+ BOOL bCenter = aCenterBtn.IsChecked();
+ if( bCenter )
+ nRight = nLeft;
+ if(nRight + nLeft > pTblData->GetSpace() - MINLAY )
+ {
+ nLeft = bCenter ? (pTblData->GetSpace() - MINLAY) /2 :
+ (pTblData->GetSpace() - MINLAY) - nRight;
+ nRight = bCenter ? (pTblData->GetSpace() - MINLAY) /2 : nRight;
+ }
+ nCurWidth = pTblData->GetSpace() - nLeft - nRight;
+ }
+ else
+ {
+ //hier wird bei Aenderung an der linken Seite zuerst der
+ //rechte Rand veraendert, dann die Breite
+ nDiff = nRight + nLeft + nCurWidth - pTblData->GetSpace() ;
+
+ nRight -= nDiff;
+ nCurWidth = pTblData->GetSpace() - nLeft - nRight;
+ }
+ }
+ if (nCurWidth != nPrevWidth )
+ aWidthMF.SetValue( aWidthMF.Normalize( nCurWidth ), FUNIT_TWIP );
+ aRightMF.SetValue( aRightMF.Normalize( nRight ), FUNIT_TWIP );
+ aLeftMF.SetValue( aLeftMF.Normalize( nLeft ), FUNIT_TWIP );
+ bModified = TRUE;
+}
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+SfxTabPage* SwFormatTablePage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet)
+{
+ return new SwFormatTablePage( pParent, rAttrSet );
+}
+
+/*------------------------------------------------------------------------
+-------------------------------------------------------------------------*/
+BOOL SwFormatTablePage::FillItemSet( SfxItemSet& rCoreSet )
+{
+ // Testen, ob eins der Control noch den Focus hat
+ if(aWidthMF.HasFocus())
+ ModifyHdl(&aWidthMF);
+ else if(aLeftMF.HasFocus())
+ ModifyHdl(&aLeftMF);
+ else if(aRightMF.HasFocus())
+ ModifyHdl(&aRightMF);
+ else if(aTopMF.HasFocus())
+ ModifyHdl(&aTopMF);
+ else if(aBottomMF.HasFocus())
+ ModifyHdl(&aBottomMF);
+
+ if(bModified)
+ {
+ if( aBottomMF.GetText() != aBottomMF.GetSavedValue() ||
+ aTopMF.GetText() != aTopMF.GetSavedValue() )
+ {
+ SvxULSpaceItem aULSpace(RES_UL_SPACE);
+ aULSpace.SetUpper( (USHORT) aTopMF.Denormalize(
+ aTopMF.GetValue( FUNIT_TWIP )));
+ aULSpace.SetLower( (USHORT) aBottomMF.Denormalize(
+ aBottomMF.GetValue( FUNIT_TWIP )));
+ rCoreSet.Put(aULSpace);
+ }
+
+ }
+ if(aNameED.GetText() != aNameED.GetSavedValue())
+ {
+ rCoreSet.Put(SfxStringItem( FN_PARAM_TABLE_NAME, aNameED.GetText()));
+ bModified = TRUE;
+ }
+ return bModified;
+}
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+void SwFormatTablePage::Reset( const SfxItemSet& )
+{
+ const SfxItemSet& rSet = GetItemSet();
+ const SfxPoolItem* pItem;
+
+ BOOL bHtmlMode = FALSE;
+ if(SFX_ITEM_SET == rSet.GetItemState( SID_HTML_MODE, FALSE,&pItem )
+ && ((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
+ {
+ aNameED .Disable();
+ aTopFT .Hide();
+ aTopMF .Hide();
+ aBottomFT.Hide();
+ aBottomMF.Hide();
+ aFreeBtn.Enable(FALSE);
+ bHtmlMode = TRUE;
+ }
+ FieldUnit aMetric = ::GetDfltMetric(bHtmlMode);
+ SetMetric( aWidthMF, aMetric );
+ SetMetric( aRightMF, aMetric );
+ SetMetric( aLeftMF, aMetric );
+ SetMetric( aTopMF, aMetric );
+ SetMetric( aBottomMF, aMetric );
+
+ //Name
+ if(SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_TABLE_NAME, FALSE, &pItem ))
+ {
+ aNameED.SetText(((const SfxStringItem*)pItem)->GetValue());
+ aNameED.SaveValue();
+ }
+
+ if(SFX_ITEM_SET == rSet.GetItemState( FN_TABLE_REP, FALSE, &pItem ))
+ {
+ pTblData = (SwTableRep*)((const SwPtrItem*) pItem)->GetValue();
+ nMinTableWidth = pTblData->GetColCount() * MINLAY;
+
+ if(pTblData->GetWidthPercent())
+ {
+ aRelWidthCB.Check(TRUE);
+ RelWidthClickHdl(&aRelWidthCB);
+ aWidthMF.SetValue(pTblData->GetWidthPercent(), FUNIT_CUSTOM);
+
+ aWidthMF.SaveValue();
+ nSaveWidth = aWidthMF.GetValue(FUNIT_CUSTOM);
+ }
+ else
+ {
+ aWidthMF.SetValue(aWidthMF.Normalize(
+ pTblData->GetWidth()), FUNIT_TWIP);
+ aWidthMF.SaveValue();
+ nSaveWidth = pTblData->GetWidth();
+ nMinTableWidth = min(nSaveWidth, nMinTableWidth);
+ }
+
+ aWidthMF.SetRefValue(pTblData->GetSpace());
+ aWidthMF.SetLast(aWidthMF.Normalize( pTblData->GetSpace() ));
+ aLeftMF.SetLast(aLeftMF.Normalize( pTblData->GetSpace() ));
+ aRightMF.SetLast(aRightMF.Normalize( pTblData->GetSpace() ));
+
+ aLeftMF.SetValue(aLeftMF.Normalize(
+ pTblData->GetLeftSpace()), FUNIT_TWIP);
+ aRightMF.SetValue(aRightMF.Normalize(
+ pTblData->GetRightSpace()), FUNIT_TWIP);
+ aLeftMF.SaveValue();
+ aRightMF.SaveValue();
+
+ nOldAlign = pTblData->GetAlign();
+
+ BOOL bSetRight = FALSE, bRightEnable = FALSE,
+ bSetLeft = FALSE, bLeftEnable = FALSE;
+ switch( nOldAlign )
+ {
+ case HORI_NONE:
+ aFreeBtn.Check();
+ if(aRelWidthCB.IsChecked())
+ bSetRight = TRUE;
+ break;
+ case HORI_FULL:
+ {
+ bSetRight = bSetLeft = TRUE;
+ aFullBtn.Check();
+ aRightMF.SetText( aEmptyStr );
+ aLeftMF.SetText( aEmptyStr );
+ aWidthMF.Enable(FALSE);
+ aRelWidthCB.Enable(FALSE);
+ aWidthFT.Enable(FALSE);
+ }
+ break;
+ case HORI_LEFT:
+ {
+ bSetLeft = TRUE;
+ aLeftBtn.Check();
+ aLeftMF.SetText( aEmptyStr );
+ }
+ break;
+ case HORI_LEFT_AND_WIDTH :
+ {
+ bSetRight = TRUE;
+ aFromLeftBtn.Check();
+ aRightMF.SetText( aEmptyStr );
+ }
+ break;
+ case HORI_RIGHT:
+ {
+ bSetRight = TRUE;
+ aRightBtn.Check();
+ aRightMF.SetText( aEmptyStr );
+ }
+ break;
+ case HORI_CENTER:
+ {
+ bSetRight = TRUE;
+ aCenterBtn.Check();
+ aRightMF.SetText( aEmptyStr );
+ }
+ break;
+ }
+ if ( bSetRight )
+ {
+ aRightMF.Enable(bRightEnable);
+ aRightFT.Enable(bRightEnable);
+ }
+ if ( bSetLeft )
+ {
+ aLeftMF.Enable(bLeftEnable);
+ aLeftFT.Enable(bLeftEnable);
+ }
+
+ }
+
+ //Raender
+ if(SFX_ITEM_SET == rSet.GetItemState( RES_UL_SPACE, FALSE,&pItem ))
+ {
+ aTopMF.SetValue(aTopMF.Normalize(
+ ((const SvxULSpaceItem*)pItem)->GetUpper()), FUNIT_TWIP);
+ aBottomMF.SetValue(aBottomMF.Normalize(
+ ((const SvxULSpaceItem*)pItem)->GetLower()), FUNIT_TWIP);
+ aTopMF.SaveValue();
+ aBottomMF.SaveValue();
+ }
+
+ aWidthMF.SetMax( 2*aWidthMF.Normalize( pTblData->GetSpace() ), FUNIT_TWIP );
+ aRightMF.SetMax( aRightMF.Normalize( pTblData->GetSpace() ), FUNIT_TWIP );
+ aLeftMF.SetMax( aLeftMF.Normalize( pTblData->GetSpace() ), FUNIT_TWIP );
+ aWidthMF.SetMin( aWidthMF.Normalize( nMinTableWidth ), FUNIT_TWIP );
+
+}
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+void SwFormatTablePage::ActivatePage( const SfxItemSet& rSet )
+{
+ DBG_ASSERT(pTblData, "Tabellendaten nicht da?")
+ if(SFX_ITEM_SET == rSet.GetItemState( FN_TABLE_REP ))
+ {
+ SwTwips nCurWidth = HORI_FULL != pTblData->GetAlign() ?
+ pTblData->GetWidth() :
+ pTblData->GetSpace();
+ if(pTblData->GetWidthPercent() == 0 &&
+ nCurWidth != aWidthMF.Denormalize(aWidthMF.GetValue(FUNIT_TWIP )))
+ {
+ aWidthMF.SetValue(aWidthMF.Normalize(
+ nCurWidth), FUNIT_TWIP);
+ aWidthMF.SaveValue();
+ nSaveWidth = nCurWidth;
+ aLeftMF.SetValue(aLeftMF.Normalize(
+ pTblData->GetLeftSpace()), FUNIT_TWIP);
+ aLeftMF.SaveValue();
+ aRightMF.SetValue(aRightMF.Normalize(
+ pTblData->GetRightSpace()), FUNIT_TWIP);
+ aRightMF.SaveValue();
+ }
+ }
+
+}
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+int SwFormatTablePage::DeactivatePage( SfxItemSet* pSet )
+{
+ // os: VCL sorgt nicht dafuer, dass das aktive Control im
+ // dialog bei OK den focus verliert
+ aNameED.GrabFocus();
+ // Test des Tabellennamens auf Leerzeichen
+ String sTblName = aNameED.GetText();
+ if(sTblName.Search(' ') != STRING_NOTFOUND)
+ {
+ InfoBox(this, SW_RES(MSG_WRONG_TABLENAME)).Execute();
+ aNameED.GrabFocus();
+ return KEEP_PAGE;
+ }
+ if(pSet)
+ {
+ FillItemSet(*pSet);
+ if(bModified)
+ {
+ SwTwips lLeft = aLeftMF.Denormalize( aLeftMF.GetValue( FUNIT_TWIP ));
+ SwTwips lRight = aRightMF.Denormalize( aRightMF.GetValue( FUNIT_TWIP ));
+
+
+ if( aLeftMF.GetText() != aLeftMF.GetSavedValue() ||
+ aRightMF.GetText() != aRightMF.GetSavedValue() )
+ {
+ pTblData->SetWidthChanged();
+ pTblData->SetLeftSpace( lLeft);
+ pTblData->SetRightSpace( lRight);
+ }
+
+ SwTwips lWidth;
+ if (aRelWidthCB.IsChecked() && aRelWidthCB.IsEnabled())
+ {
+ lWidth = pTblData->GetSpace() - lRight - lLeft;
+ USHORT nPercentWidth = (USHORT)aWidthMF.GetValue(FUNIT_CUSTOM);
+ if(pTblData->GetWidthPercent() != nPercentWidth)
+ {
+ pTblData->SetWidthPercent(nPercentWidth);
+ pTblData->SetWidthChanged();
+ }
+ }
+ else
+ {
+ pTblData->SetWidthPercent(0);
+ lWidth = aWidthMF.Denormalize(aWidthMF.GetValue( FUNIT_TWIP ));
+ }
+ pTblData->SetWidth(lWidth);
+
+ SwTwips nColSum = 0;
+ for(USHORT i = 0; i < pTblData->GetColCount(); i++)
+ {
+ nColSum += pTblData->GetColumns()[i].nWidth;
+ }
+ if(nColSum != pTblData->GetWidth())
+ {
+ SwTwips nMinWidth = min(MINLAY, pTblData->GetWidth() / pTblData->GetColCount() - 1);
+ SwTwips nDiff = nColSum - pTblData->GetWidth();
+ while ( Abs(nDiff) > pTblData->GetColCount() + 1 )
+ {
+ SwTwips nSub = nDiff / pTblData->GetColCount();
+ for( i = 0; i < pTblData->GetColCount(); i++)
+ {
+ if(pTblData->GetColumns()[i].nWidth - nMinWidth > nSub)
+ {
+ pTblData->GetColumns()[i].nWidth -= nSub;
+ nDiff -= nSub;
+ }
+ else
+ {
+ nDiff -= pTblData->GetColumns()[i].nWidth - nMinWidth;
+ pTblData->GetColumns()[i].nWidth = nMinWidth;
+ }
+
+ }
+ }
+ }
+
+ int nAlign = 0;
+ if(aRightBtn.IsChecked())
+ nAlign = HORI_RIGHT;
+ else if(aLeftBtn.IsChecked())
+ nAlign = HORI_LEFT;
+ else if(aFromLeftBtn.IsChecked())
+ nAlign = HORI_LEFT_AND_WIDTH;
+ else if(aCenterBtn.IsChecked())
+ nAlign = HORI_CENTER;
+ else if(aFreeBtn.IsChecked())
+ nAlign = HORI_NONE;
+ else if(aFullBtn.IsChecked())
+ {
+ nAlign = HORI_FULL;
+ lWidth = lAutoWidth;
+ }
+ if(nAlign != pTblData->GetAlign())
+ {
+ pTblData->SetWidthChanged();
+ pTblData->SetAlign(nAlign);
+ }
+
+
+ // if( HORI_CENTER && lWidth != (SwTwips)aWidthMF.GetSavedValue())
+ if(pTblData->GetWidth() != lWidth )
+ {
+ pTblData->SetWidthChanged();
+ pTblData->SetWidth(
+ nAlign == HORI_FULL ? pTblData->GetSpace() : lWidth );
+ }
+ if(pTblData->HasWidthChanged())
+ pSet->Put(SwPtrItem(FN_TABLE_REP, pTblData));
+ }
+DEBUG_TBLDLG_TABLEREP(pTblData);
+ }
+ return TRUE;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Seite Spaltenkonfiguration
+------------------------------------------------------------------------*/
+SwTableColumnPage::SwTableColumnPage( Window* pParent,
+ const SfxItemSet& rSet ) :
+ SfxTabPage(pParent, SW_RES( TP_TABLE_COLUMN ), rSet ),
+ aModifyTableCB(this, SW_RES(CB_MOD_TBL)),
+ aProportionalCB(this, SW_RES(CB_PROP)),
+ aInverseCB(this, SW_RES(CB_INV)),
+ aSpaceFT(this, SW_RES(FT_SPACE)),
+ aSpaceED(this, SW_RES(ED_SPACE)),
+ aFT1(this, SW_RES(COL_FT_1)),
+ aMF1(this, SW_RES(COL_MF_1)),
+ aFT2(this, SW_RES(COL_FT_2)),
+ aMF2(this, SW_RES(COL_MF_2)),
+ aFT3(this, SW_RES(COL_FT_3)),
+ aMF3(this, SW_RES(COL_MF_3)),
+ aFT4(this, SW_RES(COL_FT_4)),
+ aMF4(this, SW_RES(COL_MF_4)),
+ aFT5(this, SW_RES(COL_FT_5)),
+ aMF5(this, SW_RES(COL_MF_5)),
+ aFT6(this, SW_RES(COL_FT_6)),
+ aMF6(this, SW_RES(COL_MF_6)),
+ aColGB(this, SW_RES(COL_GB_LAYOUT)),
+ aUpBtn(this, SW_RES(COL_BTN_UP)),
+ aDownBtn(this, SW_RES(COL_BTN_DOWN)),
+ nNoOfCols( 0 ),
+ nNoOfVisibleCols( 0 ),
+ nMinWidth( MINLAY ),
+ bModified(FALSE),
+ bModifyTbl(FALSE),
+ bPercentMode(FALSE),
+ nTableWidth(0)
+{
+ FreeResource();
+ SetExchangeSupport();
+
+ pFieldArr[0] = &aMF1;
+ pFieldArr[1] = &aMF2;
+ pFieldArr[2] = &aMF3;
+ pFieldArr[3] = &aMF4;
+ pFieldArr[4] = &aMF5;
+ pFieldArr[5] = &aMF6;
+
+ pTextArr[0] = &aFT1;
+ pTextArr[1] = &aFT2;
+ pTextArr[2] = &aFT3;
+ pTextArr[3] = &aFT4;
+ pTextArr[4] = &aFT5;
+ pTextArr[5] = &aFT6;
+
+ aInverseCB.Hide();
+ const SfxPoolItem* pItem;
+ Init((SFX_ITEM_SET == rSet.GetItemState( SID_HTML_MODE, FALSE,&pItem )
+ && ((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON));
+
+};
+/*------------------------------------------------------------------------
+ Beschreibung: Seite Spaltenkonfiguration
+------------------------------------------------------------------------*/
+ SwTableColumnPage::~SwTableColumnPage()
+{
+};
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+SfxTabPage* SwTableColumnPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet)
+{
+ return new SwTableColumnPage( pParent, rAttrSet );
+};
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+void SwTableColumnPage::Reset( const SfxItemSet& )
+{
+ const SfxItemSet& rSet = GetItemSet();
+
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == rSet.GetItemState( FN_TABLE_REP, FALSE, &pItem ))
+ {
+ pTblData = (SwTableRep*)((const SwPtrItem*) pItem)->GetValue();
+ nNoOfVisibleCols = pTblData->GetColCount();
+ nNoOfCols = pTblData->GetAllColCount();
+ nTableWidth = pTblData->GetAlign() != HORI_FULL &&
+ pTblData->GetAlign() != HORI_LEFT_AND_WIDTH?
+ pTblData->GetWidth() : pTblData->GetSpace();
+
+ for( USHORT i = 0; i < nNoOfCols; i++ )
+ {
+ if( pTblData->GetColumns()[i].nWidth < nMinWidth )
+ nMinWidth = pTblData->GetColumns()[i].nWidth;
+ }
+ long nMinTwips = pFieldArr[0]->Normalize( nMinWidth );
+ long nMaxTwips = pFieldArr[0]->Normalize( nTableWidth );
+ for( i = 0; (i < MET_FIELDS) && (i < nNoOfVisibleCols); i++ )
+ {
+ pFieldArr[i]->SetValue( pFieldArr[i]->Normalize(
+ GetVisibleWidth(i) ), FUNIT_TWIP );
+ pFieldArr[i]->SetMin( nMinTwips , FUNIT_TWIP );
+ pFieldArr[i]->SetMax( nMaxTwips , FUNIT_TWIP );
+ pFieldArr[i]->Enable();
+ pTextArr[i]->Enable();
+ }
+
+ if( nNoOfVisibleCols > MET_FIELDS )
+ aUpBtn.Enable();
+ i = nNoOfVisibleCols;
+ while( i < MET_FIELDS )
+ {
+ pFieldArr[i]->SetText( aEmptyStr );
+ pTextArr[i]->Hide();
+ i++;
+ }
+ }
+ ActivatePage(rSet);
+
+};
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+void SwTableColumnPage::Init(BOOL bWeb)
+{
+ FieldUnit aMetric = ::GetDfltMetric(bWeb);
+ Link aLkUp = LINK( this, SwTableColumnPage, UpHdl );
+ Link aLkDown = LINK( this, SwTableColumnPage, DownHdl );
+ Link aLkLF = LINK( this, SwTableColumnPage, LoseFocusHdl );
+ for( USHORT i = 0; i < MET_FIELDS; i++ )
+ {
+ aValueTbl[i] = i;
+ SetMetric(*pFieldArr[i], aMetric);
+ pFieldArr[i]->SetUpHdl( aLkUp );
+ pFieldArr[i]->SetDownHdl( aLkDown );
+ pFieldArr[i]->SetLoseFocusHdl( aLkLF );
+
+ }
+ SetMetric(aSpaceED, aMetric);
+
+ Link aLk = LINK( this, SwTableColumnPage, AutoClickHdl );
+ aUpBtn.SetClickHdl( aLk );
+ aDownBtn.SetClickHdl( aLk );
+
+ aLk = LINK( this, SwTableColumnPage, ModeHdl );
+ aModifyTableCB .SetClickHdl( aLk );
+ aProportionalCB.SetClickHdl( aLk );
+ aInverseCB .SetClickHdl( aLk );
+};
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+IMPL_LINK( SwTableColumnPage, AutoClickHdl, CheckBox *, pBox )
+{
+ //Anzeigefenster verschieben
+ if(pBox == (CheckBox *)&aDownBtn)
+ {
+ if(aValueTbl[0] > 0)
+ {
+ for( USHORT i=0; i < MET_FIELDS; i++ )
+ aValueTbl[i] -= 1;
+ }
+ }
+ if(pBox == (CheckBox *)&aUpBtn)
+ {
+ if( aValueTbl[ MET_FIELDS -1 ] < nNoOfVisibleCols -1 )
+ {
+ for(USHORT i=0;i < MET_FIELDS;i++)
+ aValueTbl[i] += 1;
+ }
+ }
+ for( USHORT i = 0; (i < nNoOfVisibleCols ) && ( i < MET_FIELDS); i++ )
+ {
+ String sEntry('~');
+ sEntry += String::CreateFromInt32( aValueTbl[i] + 1 );
+ pTextArr[i]->SetText( sEntry );
+ }
+
+ aDownBtn.Enable(aValueTbl[0] > 0);
+ aUpBtn.Enable(aValueTbl[ MET_FIELDS -1 ] < nNoOfVisibleCols -1 );
+ UpdateCols(0);
+ return 0;
+};
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+IMPL_LINK_INLINE_START( SwTableColumnPage, UpHdl, PercentField *, pEdit )
+{
+ bModified = TRUE;
+ ModifyHdl( pEdit );
+ return 0;
+};
+IMPL_LINK_INLINE_END( SwTableColumnPage, UpHdl, PercentField *, pEdit )
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+IMPL_LINK_INLINE_START( SwTableColumnPage, DownHdl, PercentField *, pEdit )
+{
+ bModified = TRUE;
+ ModifyHdl( pEdit );
+ return 0;
+};
+IMPL_LINK_INLINE_END( SwTableColumnPage, DownHdl, PercentField *, pEdit )
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+IMPL_LINK_INLINE_START( SwTableColumnPage, LoseFocusHdl, PercentField *, pEdit )
+{
+ if(pEdit->IsModified())
+ {
+ bModified = TRUE;
+ ModifyHdl( pEdit );
+ }
+ return 0;
+};
+IMPL_LINK_INLINE_END( SwTableColumnPage, LoseFocusHdl, PercentField *, pEdit )
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+IMPL_LINK( SwTableColumnPage, ModeHdl, CheckBox*, pBox )
+{
+ BOOL bCheck = pBox->IsChecked();
+ if(pBox == &aProportionalCB)
+ {
+ if(bCheck)
+ aModifyTableCB.Check();
+ aModifyTableCB.Enable(!bCheck && bModifyTbl);
+ aInverseCB.Enable(!bCheck);
+ }
+ else if(pBox == &aInverseCB)
+ {
+ if(bCheck)
+ aModifyTableCB.Check(FALSE);
+ aModifyTableCB.Enable(!bCheck && bModifyTbl);
+ aProportionalCB.Enable(!bCheck);
+ }
+ else
+ aInverseCB.Enable(!bCheck);
+
+ return 0;
+};
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+BOOL SwTableColumnPage::FillItemSet( SfxItemSet& rSet )
+{
+ for( USHORT i = 0; i < MET_FIELDS; i++ )
+ {
+ if(pFieldArr[i]->HasFocus())
+ {
+ LoseFocusHdl(pFieldArr[i]);
+ break;
+ }
+ }
+
+ if(bModified)
+ {
+ pTblData->SetColsChanged();
+ }
+ return bModified;
+};
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+void SwTableColumnPage::ModifyHdl( PercentField* pEdit )
+{
+ USHORT nAktPos;
+ for( USHORT i = 0; i < MET_FIELDS; i++)
+ if(pEdit == pFieldArr[i])
+ break;
+
+ SetVisibleWidth(aValueTbl[i], pEdit->Denormalize( pEdit->GetValue( FUNIT_TWIP ) ));
+ nAktPos = aValueTbl[i];
+
+ UpdateCols( nAktPos );
+};
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+void SwTableColumnPage::UpdateCols( USHORT nAktPos )
+{
+ SwTwips nSum = 0;
+
+ for(USHORT i = 0; i < nNoOfCols; i++ )
+ {
+ nSum += (pTblData->GetColumns())[i].nWidth;
+ }
+ SwTwips nDiff = nSum - nTableWidth;
+
+ BOOL bModifyTbl = aModifyTableCB.IsChecked();
+ BOOL bProp = aProportionalCB.IsChecked();
+ BOOL bInverse = aInverseCB .IsChecked();
+
+ if(!bModifyTbl && !bProp &&!bInverse)
+ {
+// Tabellenbreite bleibt, Differenz wird mit der/den
+// naechsten Zellen ausgeglichen
+ while( nDiff )
+ {
+ if( ++nAktPos == nNoOfVisibleCols)
+ nAktPos = 0;
+ if( nDiff < 0 )
+ {
+ SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) -nDiff);
+ nDiff = 0;
+ }
+ else if( GetVisibleWidth(nAktPos) >= nDiff + nMinWidth )
+ {
+ SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) -nDiff);
+ nDiff = 0;
+ }
+ if( nDiff > 0 && GetVisibleWidth(nAktPos) > nMinWidth )
+ {
+ if( nDiff >= (GetVisibleWidth(nAktPos) - nMinWidth) )
+ {
+ nDiff -= (GetVisibleWidth(nAktPos) - nMinWidth);
+ SetVisibleWidth(nAktPos, nMinWidth);
+ }
+ else
+ {
+ nDiff = 0;
+ SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) -nDiff);
+ }
+ DBG_ASSERT(nDiff >= 0, "nDiff < 0 kann hier nicht sein!")
+ }
+ }
+ }
+ else if(bModifyTbl && !bProp &&!bInverse)
+ {
+// Differenz wird ueber die Tabellenbreite ausgeglichen,
+// andere Spalten bleiben unveraendert
+ DBG_ASSERT(nDiff <= pTblData->GetSpace() - nTableWidth, "Maximum falsch eingestellt" )
+ SwTwips nActSpace = pTblData->GetSpace() - nTableWidth;
+ if(nDiff > nActSpace)
+ {
+ nTableWidth = pTblData->GetSpace();
+ SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) - nDiff + nActSpace );
+ }
+ else
+ {
+ nTableWidth += nDiff;
+ }
+ }
+ else if(bModifyTbl & bProp)
+ {
+// Alle Spalten werden proportional mitveraendert, die Tabellenbreite wird
+// entsprechend angepasst
+ DBG_ASSERT(nDiff * nNoOfVisibleCols <= pTblData->GetSpace() - nTableWidth, "Maximum falsch eingestellt" )
+ long nAdd = nDiff;
+ if(nDiff * nNoOfVisibleCols > pTblData->GetSpace() - nTableWidth)
+ {
+ nAdd = (pTblData->GetSpace() - nTableWidth) / nNoOfVisibleCols;
+ SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) - nDiff + nAdd );
+ nDiff = nAdd;
+ }
+ if(nAdd)
+ for(USHORT i = 0; i < nNoOfVisibleCols; i++ )
+ {
+ if(i == nAktPos)
+ continue;
+ SwTwips nVisWidth;
+ if((nVisWidth = GetVisibleWidth(i)) + nDiff < MINLAY)
+ {
+ nAdd += nVisWidth - MINLAY;
+ SetVisibleWidth(i, MINLAY);
+ }
+ else
+ {
+ SetVisibleWidth(i, nVisWidth + nDiff);
+ nAdd += nDiff;
+ }
+
+ }
+ nTableWidth += nAdd;
+
+ }
+ else
+ {
+// Die Differenz wird gleichmaessig auf alle anderen Spalten aufgeteilt
+// die Tabellenbreite bleibt konstant
+/*
+ SwTwips nDiffn = nDiff/(nNoOfVisibleCols - 1);
+ if(nDiff < 0 && (nNoOfVisibleCols - 1) * nDiffn != nDiff)
+ nDiffn-- ;
+ USHORT nStart = nAktPos++;
+ if(nAktPos == nNoOfVisibleCols)
+ nStart = 0;
+ for(USHORT i = 0; i < nNoOfVisibleCols; i++ )
+ {
+ if((nVisWidth = GetVisibleWidth(i)) + nDiff < MINLAY)
+ {
+ nAdd += nVisWidth - MINLAY;
+ SetVisibleWidth(i, MINLAY);
+ }
+ }
+*/
+
+ }
+
+DEBUG_TBLDLG_TABLEREP(pTblData);
+
+ if(!bPercentMode)
+ aSpaceED.SetValue(aSpaceED.Normalize( pTblData->GetSpace() - nTableWidth) , FUNIT_TWIP);
+
+ for( i = 0; ( i < nNoOfVisibleCols ) && ( i < MET_FIELDS ); i++)
+ {
+ pFieldArr[i]->SetValue(pFieldArr[i]->Normalize(
+ GetVisibleWidth(aValueTbl[i]) ), FUNIT_TWIP);
+ pFieldArr[i]->ClearModifyFlag();
+ }
+
+}
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+void SwTableColumnPage::ActivatePage( const SfxItemSet& rSet )
+{
+ bPercentMode = pTblData->GetWidthPercent() != 0;
+ for( USHORT i = 0; (i < MET_FIELDS) && (i < nNoOfVisibleCols); i++ )
+ {
+ pFieldArr[i]->SetRefValue(pTblData->GetWidth());
+ pFieldArr[i]->ShowPercent( bPercentMode );
+ }
+
+ USHORT nTblAlign = pTblData->GetAlign();
+ if((HORI_FULL != nTblAlign && nTableWidth != pTblData->GetWidth()) ||
+ (HORI_FULL == nTblAlign && nTableWidth != pTblData->GetSpace()))
+ {
+ nTableWidth = HORI_FULL == nTblAlign ?
+ pTblData->GetSpace() :
+ pTblData->GetWidth();
+ UpdateCols(0);
+ }
+ bModifyTbl = TRUE;
+ if(pTblData->GetWidthPercent() ||
+ HORI_FULL == nTblAlign ||
+ pTblData->IsLineSelected() )
+ bModifyTbl = FALSE;
+ if(bPercentMode)
+ {
+ aInverseCB .Enable(FALSE);
+ aModifyTableCB .Check(FALSE);
+ aProportionalCB .Check(FALSE);
+ aInverseCB .Check(FALSE);
+ }
+ else if( !bModifyTbl )
+ {
+ aProportionalCB.Check(FALSE);
+ aModifyTableCB.Check(FALSE);
+ }
+ aSpaceFT.Enable(!bPercentMode);
+ aSpaceED.Enable(!bPercentMode);
+ aModifyTableCB.Enable( !bPercentMode && bModifyTbl );
+ aProportionalCB.Enable(!bPercentMode && bModifyTbl );
+
+/* if(pTblData->IsLineSelected() && pTblData->IsComplex())
+ {
+
+ }*/
+ aSpaceED.SetValue(aSpaceED.Normalize(
+ pTblData->GetSpace() - nTableWidth) , FUNIT_TWIP);
+
+}
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+int SwTableColumnPage::DeactivatePage( SfxItemSet* pSet )
+{
+ if(pSet)
+ {
+ FillItemSet(*pSet);
+ if(HORI_FULL != pTblData->GetAlign() && pTblData->GetWidth() != nTableWidth)
+ {
+ pTblData->SetWidth(nTableWidth);
+ SwTwips nDiff = pTblData->GetSpace() - pTblData->GetWidth() -
+ pTblData->GetLeftSpace() - pTblData->GetRightSpace();
+ switch( pTblData->GetAlign() )
+ {
+ case HORI_RIGHT:
+ pTblData->SetLeftSpace(pTblData->GetLeftSpace() + nDiff);
+ break;
+ case HORI_LEFT:
+ pTblData->SetRightSpace(pTblData->GetRightSpace() + nDiff);
+ break;
+ case HORI_NONE:
+ {
+ SwTwips nDiff2 = nDiff/2;
+ if( nDiff > 0 ||
+ (-nDiff2 < pTblData->GetRightSpace() && - nDiff2 < pTblData->GetLeftSpace()))
+ {
+ pTblData->SetRightSpace(pTblData->GetRightSpace() + nDiff2);
+ pTblData->SetLeftSpace(pTblData->GetLeftSpace() + nDiff2);
+ }
+ else
+ {
+ if(pTblData->GetRightSpace() > pTblData->GetLeftSpace())
+ {
+ pTblData->SetLeftSpace(0);
+ pTblData->SetRightSpace(pTblData->GetSpace() - pTblData->GetWidth());
+ }
+ else
+ {
+ pTblData->SetRightSpace(0);
+ pTblData->SetLeftSpace(pTblData->GetSpace() - pTblData->GetWidth());
+ }
+ }
+ }
+ break;
+ case HORI_CENTER:
+ pTblData->SetRightSpace(pTblData->GetRightSpace() + nDiff/2);
+ pTblData->SetLeftSpace(pTblData->GetLeftSpace() + nDiff/2);
+ break;
+ case HORI_LEFT_AND_WIDTH :
+ if(nDiff > pTblData->GetRightSpace())
+ {
+ pTblData->SetLeftSpace(pTblData->GetSpace() - pTblData->GetWidth());
+ }
+ pTblData->SetRightSpace(
+ pTblData->GetSpace() - pTblData->GetWidth() - pTblData->GetLeftSpace());
+ break;
+ }
+ pTblData->SetWidthChanged();
+ }
+DEBUG_TBLDLG_TABLEREP(pTblData);
+ pSet->Put(SwPtrItem( FN_TABLE_REP, pTblData ));
+ }
+ return TRUE;
+}
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+SwTwips SwTableColumnPage::GetVisibleWidth(USHORT nPos)
+{
+ USHORT i=0;
+
+ while( nPos )
+ {
+ if(pTblData->GetColumns()[i].bVisible && nPos)
+ nPos--;
+ i++;
+ }
+ SwTwips nReturn = pTblData->GetColumns()[i].nWidth;
+ DBG_ASSERT(i < nNoOfCols, "Array index out of range")
+ while(!pTblData->GetColumns()[i].bVisible && (i + 1) < nNoOfCols)
+ nReturn += pTblData->GetColumns()[++i].nWidth;
+
+// return (*ppTableColumns)[i].nWidth;
+ return nReturn;
+}
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+void SwTableColumnPage::SetVisibleWidth(USHORT nPos, SwTwips nNewWidth)
+{
+ USHORT i=0;
+ while( nPos )
+ {
+ if(pTblData->GetColumns()[i].bVisible && nPos)
+ nPos--;
+ i++;
+ }
+ DBG_ASSERT(i < nNoOfCols, "Array index out of range")
+ pTblData->GetColumns()[i].nWidth = nNewWidth;
+ while(!pTblData->GetColumns()[i].bVisible && (i + 1) < nNoOfCols)
+ pTblData->GetColumns()[++i].nWidth = 0;
+
+}
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+SwTableTabDlg::SwTableTabDlg(Window* pParent, SfxItemPool& ,
+ const SfxItemSet* pItemSet, SwWrtShell* pSh ) :
+ SfxTabDialog(pParent, SW_RES(DLG_FORMAT_TABLE), pItemSet,0),
+ pShell(pSh)
+{
+ FreeResource();
+ nHtmlMode = ::GetHtmlMode(pSh->GetView().GetDocShell());
+ AddTabPage(TP_FORMAT_TABLE, &SwFormatTablePage::Create, 0 );
+ AddTabPage(TP_TABLE_TEXTFLOW, &SwTextFlowPage::Create, 0 );
+ AddTabPage(TP_TABLE_COLUMN, &SwTableColumnPage::Create, 0 );
+ AddTabPage(TP_BACKGROUND, SvxBackgroundTabPage::Create, 0);
+ AddTabPage(TP_BORDER, SvxBorderTabPage::Create, 0);
+}
+
+
+/*------------------------------------------------------------------------
+------------------------------------------------------------------------*/
+void SwTableTabDlg::PageCreated(USHORT nId, SfxTabPage& rPage)
+{
+ if( TP_BACKGROUND == nId )
+ {
+ //ShowTblControl() zuerst rufen, wegen HTMLMode
+ ((SvxBackgroundTabPage&)rPage).ShowTblControl();
+ if(!( nHtmlMode & HTMLMODE_ON ) ||
+ nHtmlMode & HTMLMODE_SOME_STYLES)
+ ((SvxBackgroundTabPage&)rPage).ShowSelector();
+
+ }
+ else if(TP_BORDER == nId)
+ {
+ ((SvxBorderTabPage&)rPage).SetSWMode(SW_BORDER_MODE_TABLE);
+ }
+ else if(TP_TABLE_TEXTFLOW == nId)
+ {
+ ((SwTextFlowPage&)rPage).SetShell(pShell);
+ const USHORT eType = pShell->GetFrmType(0,TRUE);
+ if( !(FRMTYPE_BODY & eType) )
+ ((SwTextFlowPage&)rPage).DisablePageBreak();
+ }
+}
+
+/*-----------------20.08.96 09.43-------------------
+--------------------------------------------------*/
+SwTableRep::SwTableRep( const SwTabCols& rTabCol, BOOL bCplx )
+ : nTblWidth(0),
+ nSpace(0),
+ nLeftSpace(0),
+ nRightSpace(0),
+ nAlign(0),
+ nWidthPercent(0),
+ bLineSelected(FALSE),
+ bComplex(bCplx),
+ bWidthChanged(FALSE),
+ bColsChanged(FALSE)
+{
+ nAllCols = nColCount = rTabCol.Count();
+ pTColumns = new TColumn[ nColCount + 1 ];
+ SwTwips nStart = 0,
+ nEnd;
+ for( USHORT i = 0; i < nAllCols; ++i )
+ {
+ nEnd = rTabCol[ i ] - rTabCol.GetLeft();
+ pTColumns[ i ].nWidth = nEnd - nStart;
+ pTColumns[ i ].bVisible = !rTabCol.IsHidden(i);
+ if(!pTColumns[ i ].bVisible)
+ nColCount --;
+ nStart = nEnd;
+ }
+ pTColumns[ nAllCols ].nWidth = rTabCol.GetRight() - rTabCol.GetLeft() - nStart;
+ pTColumns[ nAllCols ].bVisible = TRUE;
+ nColCount++;
+ nAllCols++;
+}
+
+/*-----------------20.08.96 09.43-------------------
+--------------------------------------------------*/
+SwTableRep::~SwTableRep()
+{
+ delete pTColumns;
+}
+
+/*-----------------20.08.96 13.33-------------------
+--------------------------------------------------*/
+BOOL SwTableRep::FillTabCols( SwTabCols& rTabCols ) const
+{
+ USHORT nOldLeft = rTabCols.GetLeft();
+ USHORT nOldRight = rTabCols.GetRight();
+
+ BOOL bSingleLine = FALSE;
+ for ( USHORT i = 0; i < rTabCols.Count(); ++i )
+ if(!pTColumns[i].bVisible)
+ {
+ bSingleLine = TRUE;
+ break;
+ }
+
+DEBUG_TBLDLG_TCOLUMN(pTColumns, nAllCols);
+
+ SwTwips nPos = 0;
+ SwTwips nLeft = GetLeftSpace();
+ rTabCols.SetLeft((USHORT)nLeft);
+ if(bSingleLine)
+ {
+ // die unsichtbaren Trenner werden aus den alten TabCols genommen
+ // die sichtbaren kommen aus pTColumns
+ TColumn* pOldTColumns = new TColumn[nAllCols + 1];
+ SwTwips nStart = 0,
+ nEnd;
+ for(USHORT i = 0; i < nAllCols - 1; i++)
+ {
+ nEnd = rTabCols[i] - rTabCols.GetLeft();
+ pOldTColumns[i].nWidth = nEnd - nStart;
+ pOldTColumns[i].bVisible = !rTabCols.IsHidden(i);
+ nStart = nEnd;
+ }
+ pOldTColumns[nAllCols - 1].nWidth = rTabCols.GetRight() - rTabCols.GetLeft() - nStart;
+ pOldTColumns[nAllCols - 1].bVisible = TRUE;
+
+DEBUG_TBLDLG_TCOLUMN(pOldTColumns, nAllCols);
+
+ USHORT nOldPos = 0;
+ USHORT nNewPos = 0;
+ SwTwips nOld = 0;
+ SwTwips nNew = 0;
+ BOOL bOld = FALSE;
+ BOOL bFirst = TRUE;
+ i = 0;
+
+ while ( i < nAllCols -1 )
+ {
+ while((bFirst || bOld ) && nOldPos < nAllCols )
+ {
+ nOld += pOldTColumns[nOldPos].nWidth;
+ nOldPos++;
+ if(!pOldTColumns[nOldPos - 1].bVisible)
+ break;
+ }
+ while((bFirst || !bOld ) && nNewPos < nAllCols )
+ {
+ nNew += pTColumns[nNewPos].nWidth;
+ nNewPos++;
+ if(pOldTColumns[nNewPos - 1].bVisible)
+ break;
+ }
+ bFirst = FALSE;
+ // sie muessen sortiert eingefuegt werden
+ bOld = nOld < nNew;
+ nPos = USHORT(bOld ? nOld : nNew);
+ rTabCols[i] = nPos + nLeft;
+ rTabCols.SetHidden( i, bOld );
+ i++;
+ }
+ rTabCols.SetRight(nLeft + nTblWidth);
+
+ delete pOldTColumns;
+ }
+ else
+ {
+ for ( i = 0; i < nAllCols - 1; ++i )
+ {
+ nPos += pTColumns[i].nWidth;
+ rTabCols[i] = nPos + rTabCols.GetLeft();
+ rTabCols.SetHidden( i, !pTColumns[i].bVisible );
+ rTabCols.SetRight(nLeft + pTColumns[nAllCols - 1].nWidth + nPos);
+ }
+ }
+
+// Rundungsfehler abfangen
+ if(Abs((long)nOldLeft - (long)rTabCols.GetLeft()) < 3)
+ rTabCols.SetLeft(nOldLeft);
+
+ if(Abs((long)nOldRight - (long)rTabCols.GetRight()) < 3)
+ rTabCols.SetRight(nOldRight);
+
+ if(rTabCols.GetRight() > rTabCols.GetRightMax())
+ rTabCols.SetRight(rTabCols.GetRightMax());
+ return bSingleLine;
+}
+
+
+
+
+/*-----------------12.12.96 12.22-------------------
+--------------------------------------------------*/
+SwTextFlowPage::SwTextFlowPage( Window* pParent,
+ const SfxItemSet& rSet ) :
+ SfxTabPage(pParent, SW_RES( TP_TABLE_TEXTFLOW ), rSet ),
+ aFlowGB (this, SW_RES(GB_FLOW )),
+ aPgBrkCB (this, SW_RES(CB_PAGEBREAK )),
+ aPgBrkRB (this, SW_RES(RB_BREAKPAGE )),
+ aColBrkRB (this, SW_RES(RB_BREAKCOLUMN )),
+ aPgBrkBeforeRB (this, SW_RES(RB_PAGEBREAKBEFORE)),
+ aPgBrkAfterRB (this, SW_RES(RB_PAGEBREAKAFTER )),
+ aPageCollCB (this, SW_RES(CB_PAGECOLL )),
+ aPageCollLB (this, SW_RES(LB_PAGECOLL )),
+ aPageNoFT (this, SW_RES(FT_PAGENUM )),
+ aPageNoNF (this, SW_RES(NF_PAGENUM )),
+ aKeepCB (this, SW_RES(CB_KEEP )),
+ aSplitCB (this, SW_RES(CB_SPLIT )),
+ aHeadLineCB (this, SW_RES(CB_HEADLINE )),
+ aVertOrientGB (this, SW_RES(GB_VERT_ORIENT )),
+ aTopRB (this, SW_RES(RB_VERT_TOP )),
+ aCenterRB (this, SW_RES(RB_VERT_CENTER )),
+ aBottomRB (this, SW_RES(RB_VERT_BOTTOM )),
+ pShell(0),
+ bPageBreak(TRUE),
+ bHtmlMode(FALSE)
+{
+ FreeResource();
+
+ aPgBrkCB.SetClickHdl(LINK(this, SwTextFlowPage, PageBreakHdl_Impl));
+ aPgBrkBeforeRB.SetClickHdl(
+ LINK( this, SwTextFlowPage, PageBreakPosHdl_Impl ) );
+ aPgBrkAfterRB.SetClickHdl(
+ LINK( this, SwTextFlowPage, PageBreakPosHdl_Impl ) );
+ aPageCollCB.SetClickHdl(
+ LINK( this, SwTextFlowPage, ApplyCollClickHdl_Impl ) );
+ aColBrkRB.SetClickHdl(
+ LINK( this, SwTextFlowPage, PageBreakTypeHdl_Impl ) );
+ aPgBrkRB.SetClickHdl(
+ LINK( this, SwTextFlowPage, PageBreakTypeHdl_Impl ) );
+
+#ifndef SW_FILEFORMAT_40
+ const SfxPoolItem *pItem;
+ if(SFX_ITEM_SET == rSet.GetItemState( SID_HTML_MODE, FALSE,&pItem )
+ && ((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
+#endif
+ {
+ aKeepCB.Hide();
+ aSplitCB.Hide();
+ }
+}
+
+/*-----------------12.12.96 12.22-------------------
+--------------------------------------------------*/
+ SwTextFlowPage::~SwTextFlowPage()
+{
+}
+
+/*-----------------12.12.96 12.22-------------------
+--------------------------------------------------*/
+SfxTabPage* SwTextFlowPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet)
+{
+ return new SwTextFlowPage(pParent, rAttrSet);
+}
+
+/*-----------------12.12.96 12.22-------------------
+--------------------------------------------------*/
+BOOL SwTextFlowPage::FillItemSet( SfxItemSet& rSet )
+{
+ BOOL bModified = FALSE;
+
+ //Ueberschrift wiederholen
+ if(aHeadLineCB.IsChecked() != aHeadLineCB.GetSavedValue())
+ {
+ bModified |= 0 != rSet.Put( SfxBoolItem(FN_PARAM_TABLE_HEADLINE,
+ aHeadLineCB.IsChecked()));
+ }
+ if(aKeepCB.IsChecked() != aKeepCB.GetSavedValue())
+ bModified |= 0 != rSet.Put( SvxFmtKeepItem( aKeepCB.IsChecked()));
+
+ if(aSplitCB.IsChecked() != aSplitCB.GetSavedValue())
+ bModified |= 0 != rSet.Put( SwFmtLayoutSplit( !aSplitCB.IsChecked()));
+
+ const SvxFmtBreakItem* pBreak = (const SvxFmtBreakItem*)GetOldItem( rSet, RES_BREAK );
+ const SwFmtPageDesc* pDesc = (const SwFmtPageDesc*) GetOldItem( rSet, RES_PAGEDESC );
+
+
+ BOOL bState = aPageCollCB.IsChecked();
+
+ //Wenn Seitenvorlage, dann kein Break
+ BOOL bPageItemPut = FALSE;
+ if ( bState != aPageCollCB.GetSavedValue() ||
+ ( bState &&
+ aPageCollLB.GetSelectEntryPos() != aPageCollLB.GetSavedValue() )
+ || aPageNoNF.IsEnabled() && aPageNoNF.IsValueModified())
+ {
+ String sPage;
+
+ if ( bState )
+ {
+ sPage = aPageCollLB.GetSelectEntry();
+ }
+ USHORT nPgNum = aPageNoNF.GetValue();
+ if ( !pDesc || !pDesc->GetPageDesc() ||
+ ( pDesc->GetPageDesc() && ((pDesc->GetPageDesc()->GetName() != sPage) ||
+ aPageNoNF.GetSavedValue() != (String)nPgNum)))
+ {
+ SwFmtPageDesc aFmt( pShell->FindPageDescByName( sPage, TRUE ) );
+ aFmt.SetNumOffset(bState ? nPgNum : 0);
+ bModified |= 0 != rSet.Put( aFmt );
+ bPageItemPut = bState;
+ }
+ }
+ BOOL bIsChecked = aPgBrkCB.IsChecked();
+ if ( !bPageItemPut &&
+ ( bState != aPageCollCB.GetSavedValue() ||
+ bIsChecked != aPgBrkCB.GetSavedValue() ||
+ aPgBrkBeforeRB.IsChecked() != aPgBrkBeforeRB.GetSavedValue() ||
+ aPgBrkRB.IsChecked() != aPgBrkRB.GetSavedValue() ))
+ {
+ SvxFmtBreakItem aBreak(
+ (const SvxFmtBreakItem&)GetItemSet().Get( RES_BREAK ) );
+
+ if(bIsChecked)
+ {
+ BOOL bBefore = aPgBrkBeforeRB.IsChecked();
+
+ if ( aPgBrkRB.IsChecked() )
+ {
+ if ( bBefore )
+ aBreak.SetValue( SVX_BREAK_PAGE_BEFORE );
+ else
+ aBreak.SetValue( SVX_BREAK_PAGE_AFTER );
+ }
+ else
+ {
+ if ( bBefore )
+ aBreak.SetValue( SVX_BREAK_COLUMN_BEFORE );
+ else
+ aBreak.SetValue( SVX_BREAK_COLUMN_AFTER );
+ }
+ }
+ else
+ {
+ aBreak.SetValue( SVX_BREAK_NONE );
+ }
+
+ if ( !pBreak || !( *(const SvxFmtBreakItem*)pBreak == aBreak ) )
+ {
+ bModified |= 0 != rSet.Put( aBreak );
+ }
+ }
+
+ USHORT nOrient = USHRT_MAX;
+ if(aTopRB.IsChecked() && !aTopRB.GetSavedValue())
+ nOrient = VERT_NONE;
+ else if( aCenterRB.IsChecked() && !aCenterRB.GetSavedValue() )
+ nOrient = VERT_CENTER;
+ else if( aBottomRB.IsChecked() && !aBottomRB.GetSavedValue() )
+ nOrient = VERT_BOTTOM;
+ if(nOrient != USHRT_MAX)
+ bModified |= 0 != rSet.Put(SfxUInt16Item(FN_TABLE_SET_VERT_ALIGN, nOrient));
+
+ return bModified;
+
+}
+
+/*-----------------12.12.96 12.22-------------------
+--------------------------------------------------*/
+void SwTextFlowPage::Reset( const SfxItemSet& rSet )
+{
+ const SfxPoolItem* pItem;
+ OfaHtmlOptions* pHtmlOpt = OFF_APP()->GetHtmlOptions();
+ BOOL bFlowAllowed = !bHtmlMode || pHtmlOpt->IsPrintLayoutExtension();
+ if(bFlowAllowed)
+ {
+ // Einfuegen der vorhandenen Seitenvorlagen in die Listbox
+ const USHORT nCount = pShell->GetPageDescCnt();
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ const SwPageDesc &rPageDesc = pShell->GetPageDesc(i);
+ aPageCollLB.InsertEntry(rPageDesc.GetName());
+ }
+
+ for(i = RES_POOLPAGE_BEGIN; i <= RES_POOLPAGE_REGISTER; ++i)
+ {
+ String aFmtName; GetDocPoolNm( i, aFmtName );
+ if( LISTBOX_ENTRY_NOTFOUND == aPageCollLB.GetEntryPos( aFmtName ))
+ aPageCollLB.InsertEntry( aFmtName );
+ }
+
+ if(SFX_ITEM_SET == rSet.GetItemState( RES_KEEP, FALSE, &pItem ))
+ {
+ aKeepCB.Check( ((const SvxFmtKeepItem*)pItem)->GetValue() );
+ aKeepCB.SaveValue();
+ }
+ if(SFX_ITEM_SET == rSet.GetItemState( RES_LAYOUT_SPLIT, FALSE, &pItem ))
+ {
+ aSplitCB.Check( !((const SwFmtLayoutSplit*)pItem)->GetValue() );
+ aSplitCB.SaveValue();
+ }
+
+ if(bPageBreak)
+ {
+ if(SFX_ITEM_SET == rSet.GetItemState( RES_PAGEDESC, FALSE, &pItem ))
+ {
+ String sPageDesc;
+ const SwPageDesc* pDesc = ((const SwFmtPageDesc*)pItem)->GetPageDesc();
+ aPageNoNF.SetValue(((const SwFmtPageDesc*)pItem)->GetNumOffset());
+ if(pDesc)
+ sPageDesc = pDesc->GetName();
+ if ( sPageDesc.Len() &&
+ aPageCollLB.GetEntryPos( sPageDesc ) != LISTBOX_ENTRY_NOTFOUND )
+ {
+ aPageCollLB.SelectEntry( sPageDesc );
+ aPageCollCB.Check();
+
+ aPgBrkCB.Enable();
+ aPgBrkRB.Enable();
+ aColBrkRB.Enable();
+ aPgBrkBeforeRB.Enable();
+ aPgBrkAfterRB.Enable();
+ aPageCollCB.Enable();
+ aPgBrkCB.Check();
+
+ aPgBrkCB.Check( TRUE );
+ aColBrkRB.Check( FALSE );
+ aPgBrkBeforeRB.Check( TRUE );
+ aPgBrkAfterRB.Check( FALSE );
+ }
+ else
+ {
+ aPageCollLB.SetNoSelection();
+ aPageCollCB.Check(FALSE);
+ }
+ }
+
+ if(SFX_ITEM_SET == rSet.GetItemState( RES_BREAK, FALSE, &pItem ))
+ {
+ const SvxFmtBreakItem* pPageBreak = (const SvxFmtBreakItem*)pItem;
+ SvxBreak eBreak = (SvxBreak)pPageBreak->GetValue();
+
+ if ( eBreak != SVX_BREAK_NONE )
+ {
+ aPgBrkCB.Check();
+ aPageCollCB.Enable(FALSE);
+ aPageCollLB.Enable(FALSE);
+ aPageNoNF.Enable(FALSE);
+ }
+ switch ( eBreak )
+ {
+ case SVX_BREAK_PAGE_BEFORE:
+ aPgBrkRB.Check( TRUE );
+ aColBrkRB.Check( FALSE );
+ aPgBrkBeforeRB.Check( TRUE );
+ aPgBrkAfterRB.Check( FALSE );
+ break;
+ case SVX_BREAK_PAGE_AFTER:
+ aPgBrkRB.Check( TRUE );
+ aColBrkRB.Check( FALSE );
+ aPgBrkBeforeRB.Check( FALSE );
+ aPgBrkAfterRB.Check( TRUE );
+ break;
+ case SVX_BREAK_COLUMN_BEFORE:
+ aPgBrkRB.Check( FALSE );
+ aColBrkRB.Check( TRUE );
+ aPgBrkBeforeRB.Check( TRUE );
+ aPgBrkAfterRB.Check( FALSE );
+ break;
+ case SVX_BREAK_COLUMN_AFTER:
+ aPgBrkRB.Check( FALSE );
+ aColBrkRB.Check( TRUE );
+ aPgBrkBeforeRB.Check( FALSE );
+ aPgBrkAfterRB.Check( TRUE );
+ break;
+ }
+
+ }
+ if ( aPgBrkBeforeRB.IsChecked() )
+ PageBreakPosHdl_Impl( &aPgBrkBeforeRB );
+ else if ( aPgBrkAfterRB.IsChecked() )
+ PageBreakPosHdl_Impl( &aPgBrkAfterRB );
+ PageBreakHdl_Impl( &aPgBrkCB );
+ }
+ }
+ else
+ {
+ aPgBrkRB.Enable(FALSE);
+ aColBrkRB.Enable(FALSE);
+ aPgBrkBeforeRB.Enable(FALSE);
+ aPgBrkAfterRB.Enable(FALSE);
+ aKeepCB .Enable(FALSE);
+ aSplitCB.Enable(FALSE);
+ aPgBrkCB.Enable(FALSE);
+ aPageCollCB.Enable(FALSE);
+ aPageCollLB.Enable(FALSE);
+ }
+
+ if(SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_TABLE_HEADLINE, FALSE, &pItem ))
+ {
+ aHeadLineCB.Check( ((const SfxBoolItem*)pItem)->GetValue() );
+ aHeadLineCB.SaveValue();
+ }
+ if ( rSet.GetItemState(FN_TABLE_SET_VERT_ALIGN) > SFX_ITEM_AVAILABLE )
+ {
+ USHORT nVert = ((const SfxUInt16Item&)rSet.Get(FN_TABLE_SET_VERT_ALIGN)).GetValue();
+ switch(nVert)
+ {
+ case VERT_NONE: aTopRB.Check(); break;
+ case VERT_CENTER: aCenterRB.Check(); break;
+ case VERT_BOTTOM: aBottomRB.Check(); break;
+ }
+ }
+
+ aPageCollCB.SaveValue();
+ aPageCollLB.SaveValue();
+ aPgBrkCB.SaveValue();
+ aPgBrkRB.SaveValue();
+ aColBrkRB.SaveValue();
+ aPgBrkBeforeRB.SaveValue();
+ aPgBrkAfterRB.SaveValue();
+ aPageNoNF.SaveValue();
+ aTopRB.SaveValue();
+ aCenterRB.SaveValue();
+ aBottomRB.SaveValue();
+}
+/*-----------------16.04.98 14:48-------------------
+
+--------------------------------------------------*/
+
+void SwTextFlowPage::SetShell(SwWrtShell* pSh)
+{
+ pShell = pSh;
+ bHtmlMode = 0 != (::GetHtmlMode(pShell->GetView().GetDocShell()) & HTMLMODE_ON);
+ if(bHtmlMode)
+ {
+ aPageNoNF.Enable(FALSE);
+ aPageNoFT.Enable(FALSE);
+ }
+}
+
+/*-----------------12.12.96 16.18-------------------
+--------------------------------------------------*/
+IMPL_LINK( SwTextFlowPage, PageBreakHdl_Impl, CheckBox*, EMPTYARG )
+{
+ if( aPgBrkCB.IsChecked() )
+ {
+ aPgBrkRB. Enable();
+ aColBrkRB. Enable();
+ aPgBrkBeforeRB. Enable();
+ aPgBrkAfterRB. Enable();
+
+ if ( aPgBrkRB.IsChecked() && aPgBrkBeforeRB.IsChecked() )
+ {
+ aPageCollCB.Enable();
+
+ BOOL bEnable = aPageCollCB.IsChecked() &&
+ aPageCollLB.GetEntryCount();
+ aPageCollLB.Enable(bEnable);
+ if(!bHtmlMode)
+ aPageNoNF.Enable(bEnable);
+ }
+ }
+ else
+ {
+ aPageCollCB.Check( FALSE );
+ aPageCollCB.Enable(FALSE);
+ aPageCollLB.Enable(FALSE);
+ aPageNoNF.Enable(FALSE);
+ aPgBrkRB. Enable(FALSE);
+ aColBrkRB. Enable(FALSE);
+ aPgBrkBeforeRB. Enable(FALSE);
+ aPgBrkAfterRB. Enable(FALSE);
+ }
+ return 0;
+}
+
+/*-----------------12.12.96 16.18-------------------
+--------------------------------------------------*/
+IMPL_LINK( SwTextFlowPage, ApplyCollClickHdl_Impl, CheckBox*, EMPTYARG )
+{
+ BOOL bEnable = FALSE;
+ if ( aPageCollCB.IsChecked() &&
+ aPageCollLB.GetEntryCount() )
+ {
+ bEnable = TRUE;
+ aPageCollLB.SelectEntryPos( 0 );
+ }
+ else
+ {
+ aPageCollLB.SetNoSelection();
+ }
+ aPageCollLB.Enable(bEnable);
+ if(!bHtmlMode)
+ aPageNoNF.Enable(bEnable);
+ return 0;
+}
+
+/*-----------------12.12.96 16.18-------------------
+--------------------------------------------------*/
+IMPL_LINK( SwTextFlowPage, PageBreakPosHdl_Impl, RadioButton*, pBtn )
+{
+ if ( aPgBrkCB.IsChecked() )
+ {
+ if ( pBtn == &aPgBrkBeforeRB )
+ {
+ aPageCollCB.Enable();
+
+ BOOL bEnable = aPageCollCB.IsChecked() &&
+ aPageCollLB.GetEntryCount();
+
+ aPageCollLB.Enable(bEnable);
+ if(!bHtmlMode)
+ aPageNoNF.Enable(bEnable);
+ }
+ else if ( pBtn == &aPgBrkAfterRB )
+ {
+ aPageCollCB .Check( FALSE );
+ aPageCollCB .Enable(FALSE);
+ aPageCollLB .Enable(FALSE);
+ aPageNoNF .Enable(FALSE);
+ }
+ }
+ return 0;
+}
+
+/*-----------------12.12.96 16.18-------------------
+--------------------------------------------------*/
+IMPL_LINK( SwTextFlowPage, PageBreakTypeHdl_Impl, RadioButton*, pBtn )
+{
+ if ( pBtn == &aColBrkRB || aPgBrkAfterRB.IsChecked() )
+ {
+ aPageCollCB .Check(FALSE);
+ aPageCollCB .Enable(FALSE);
+ aPageCollLB .Enable(FALSE);
+ aPageNoNF .Enable(FALSE);
+ }
+ else if ( aPgBrkBeforeRB.IsChecked() )
+ PageBreakPosHdl_Impl( &aPgBrkBeforeRB );
+ return 0;
+}
+
+/*-----------------30.05.97 07:37-------------------
+
+--------------------------------------------------*/
+void SwTextFlowPage::DisablePageBreak()
+{
+ bPageBreak = FALSE;
+ aPgBrkCB .Disable();
+ aPgBrkRB .Disable();
+ aColBrkRB .Disable();
+ aPgBrkBeforeRB .Disable();
+ aPgBrkAfterRB .Disable();
+ aPageCollCB .Disable();
+ aPageCollLB .Disable();
+ aPageNoFT .Disable();
+ aPageNoNF .Disable();
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.169 2000/09/18 16:06:09 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.168 2000/08/24 15:21:38 os
+ tables with negative LRSpace
+
+ Revision 1.167 2000/07/27 21:16:28 jp
+ opt: get template names direct from the doc and don't load it from the resource
+
+ Revision 1.166 2000/06/16 09:51:28 os
+ #73123# disable manual table alignment in HTML
+
+ Revision 1.165 2000/05/26 07:21:33 os
+ old SW Basic API Slots removed
+
+ Revision 1.164 2000/05/23 19:31:24 jp
+ Bugfixes for Unicode
+
+ Revision 1.163 2000/04/19 11:22:11 os
+ UNICODE
+
+ Revision 1.162 1999/08/23 07:48:32 OS
+ #61218# correct handling of left_and_width oriented tables
+
+
+ Rev 1.161 23 Aug 1999 09:48:32 OS
+ #61218# correct handling of left_and_width oriented tables
+
+ Rev 1.160 28 May 1999 10:28:32 OS
+ #54824# HoriOrientation_LEFT_AND_WIDTH fuer von links ausgerichtete Tabellen
+
+ Rev 1.159 08 Feb 1999 14:56:32 OS
+ #61545# Break-Attribut nur noch bei fehlendem oder leeren PageDesc mitschicken
+
+ Rev 1.158 08 Feb 1999 10:23:22 JP
+ Task #61467#/#61014#: neu FindPageDescByName
+
+ Rev 1.157 04 Jan 1999 14:15:00 OS
+ #60366# Umbruch-Buttons in HTML-Docs ebenfalls disablen
+
+ Rev 1.156 27 Nov 1998 14:56:48 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.155 27 Nov 1998 14:02:44 MH
+ add: header
+
+ Rev 1.154 08 Sep 1998 17:04:00 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.153 29 May 1998 19:08:00 JP
+ SS vom SwTableReq geaendert
+
+ Rev 1.152 28 Apr 1998 09:10:12 OS
+ Background: ShowSelector mit HTML-Beruecksichtigung #49862#
+
+ Rev 1.151 21 Apr 1998 08:44:36 OS
+ TableNameEdit verschoben
+
+ Rev 1.150 17 Apr 1998 16:30:50 OS
+ Printing extensions fuer HTML
+
+ Rev 1.149 16 Apr 1998 15:57:28 OS
+ Printing extensions fuer HTML
+
+ Rev 1.148 02 Mar 1998 09:15:52 OS
+ Minimalbreite spaltenabhaengig, Fokushilfe fuer Edit#47641##47658#
+
+ Rev 1.147 29 Nov 1997 14:28:10 MA
+ includes
+
+ Rev 1.146 24 Nov 1997 15:52:22 MA
+ includes
+
+ Rev 1.145 19 Nov 1997 16:54:54 OS
+ Hintergrund: zuerst ShowTblCtrl rufen #45654#
+
+ Rev 1.144 03 Nov 1997 13:56:50 MA
+ precomp entfernt
+
+ Rev 1.143 30 Oct 1997 11:19:20 AMA
+ Chg: Kein AutoFlag mehr an Break bzw. PageDesc-Attributen
+
+ Rev 1.142 30 Sep 1997 16:51:36 TJ
+ include
+
+ Rev 1.141 25 Aug 1997 14:26:28 OS
+ Leerzeichen im Tabellennamen vor dem Verlassen der Page ueberpruefen #42643#
+
+ Rev 1.140 15 Aug 1997 12:18:20 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.139 11 Aug 1997 10:12:42 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.138 03 Jul 1997 12:53:40 OS
+ SwSwMode jetzt mit BYTE #41255#
+
+ Rev 1.137 18 Jun 1997 17:27:42 OS
+ Breite im TableRep nie auf IVALID_TWIP setzen #40808#
+
+ Rev 1.136 11 Jun 1997 10:54:40 OS
+ Behandlung relativer Tabellen berichtigt; restore nach automatisch funktioniert jetzt #40590#
+
+ Rev 1.135 03 Jun 1997 16:39:58 MA
+ chg: neue Tabellenfeatures hiden
+
+ Rev 1.134 30 May 1997 08:44:50 OS
+ kein Umbruch ausserbalb des Bodies #40306#
+
+ Rev 1.133 14 Apr 1997 19:15:58 MA
+ eigendes Headerfile fuer die Pages
+
+ Rev 1.132 11 Apr 1997 15:55:26 MA
+ chg: kein Keep und split fuer Web
+
+ Rev 1.131 11 Apr 1997 13:36:26 MA
+ split richtig
+
+ Rev 1.130 11 Apr 1997 13:07:08 MA
+ new: Layout-Split
+
+ Rev 1.129 10 Apr 1997 18:26:48 MA
+ Keep besser (?), Keep fuer Tables
+
+ Rev 1.128 13 Mar 1997 11:37:52 OS
+ enable/disble fuer manuell/zentriert berichtigt
+
+ Rev 1.127 10 Mar 1997 16:20:48 OS
+ Right an den TabCols darf niemals groesser als RightMax sein
+
+ Rev 1.126 20 Feb 1997 17:49:36 OS
+ Abstand oben/unten nicht im HTML
+
+ Rev 1.125 13 Feb 1997 13:49:44 OS
+ Tabellen im HTML auch manuell
+
+ Rev 1.124 12 Feb 1997 14:28:38 OS
+ wird der Umbruch abgeschaltet, muss auch der Offeset auf NULL gesetzt werden
+
+ Rev 1.123 10 Feb 1997 16:36:02 OS
+ autom. Ausrichtung: rechter Rand darf nicht eingestellt werden
+
+ Rev 1.122 05 Feb 1997 10:04:22 OS
+ keine Leerzeichen und Punkte im Tabellennamen; FillItemSet aus DeactivatePage aufrufen
+
+ Rev 1.121 03 Feb 1997 12:12:44 OS
+ Im HtmlMode kein Name und keine manuelle Ausrichtung
+
+ Rev 1.120 30 Jan 1997 15:33:00 OS
+ ...PARA_PAGENUM ueberfluessig
+
+ Rev 1.119 22 Jan 1997 11:38:16 MA
+ Umstellung Put
+
+ Rev 1.118 08 Jan 1997 11:57:30 OS
+ Umbruch-CheckBox nicht setzen fuer SVX_BREAK_NONE
+
+ Rev 1.117 20 Dec 1996 12:13:48 OS
+ vertikale Ausrichtung jetzt mit FN_TABLE_SET_VERT_ALIGN
+
+ Rev 1.116 19 Dec 1996 12:00:42 OS
+ V-Alignment auswerten
+
+ Rev 1.115 18 Dec 1996 14:58:40 OS
+ Vorbereitung BoxAlign
+
+ Rev 1.114 16 Dec 1996 16:23:22 OS
+ versteckte Trenner an der alten Position wieder einsortieren
+
+ Rev 1.113 13 Dec 1996 15:48:38 HJS
+ header name
+
+ Rev 1.112 13 Dec 1996 08:34:14 OS
+ vorlaeufig vollstaendig
+
+ Rev 1.111 12 Dec 1996 16:58:12 OS
+ Textfluss fuer Tabelle
+
+ Rev 1.110 10 Dec 1996 18:23:32 OS
+ FillTabCols: rechten Rand aus der Summe der Spalten und dem linken Rand ermitteln #34303#
+
+ Rev 1.109 04 Dec 1996 16:04:44 OS
+ rechter Rand darf auch wieder fuer die manuelle Einstellung benutzt werden
+
+ Rev 1.108 02 Dec 1996 10:35:24 OS
+ erst SetRefValue, dann ShowPercent
+
+ Rev 1.107 30 Nov 1996 11:24:18 OS
+ Rel. Breite: Raender werden mitgesetzt
+
+ Rev 1.106 11 Nov 1996 11:20:32 MA
+ ResMgr
+
+ Rev 1.105 05 Nov 1996 07:01:28 OS
+ bModified auf TRUE setzen
+
+ Rev 1.104 04 Nov 1996 12:00:10 OS
+ kein Handler fuer HeadlineRepeat
+
+ Rev 1.103 16 Oct 1996 16:25:22 OS
+ letzte Probleme mit autom. Breite behoben
+
+ Rev 1.102 14 Oct 1996 14:01:40 OS
+ keine Breitenaenderung in der Spalten-Page fuer automatische Ausrichtung
+
+ Rev 1.101 14 Oct 1996 13:52:48 OS
+ bei automatischer Ausrichtung muss TableSpace statt TableWidth benutzt werden
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/table/tabledlg.hrc b/sw/source/ui/table/tabledlg.hrc
new file mode 100644
index 000000000000..c498c3a97401
--- /dev/null
+++ b/sw/source/ui/table/tabledlg.hrc
@@ -0,0 +1,137 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabledlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "globals.hrc"
+
+#define ED_WIDTH 1
+#define GB_WIDTH 3
+#define CB_REL_WIDTH 4
+#define RB_LEFT 10
+#define RB_RIGHT 11
+#define RB_CENTER 12
+#define RB_FREE 13
+#define RB_FULL 14
+#define GB_POS 15
+#define ED_LEFT_DIST 51
+#define ED_RIGHT_DIST 52
+#define FT_RIGHT_DIST 53
+#define FT_LEFT_DIST 54
+#define FT_TOP_DIST 20
+#define ED_TOP_DIST 21
+#define FT_BOTTOM_DIST 22
+#define ED_BOTTOM_DIST 23
+#define GB_DIST 24
+#define FT_WIDTH 25
+#define FT_SCOL 30
+#define DLB_SCOL 31
+#define FT_POS 32
+#define DLB_SPOS 33
+#define FT_SSZ 34
+#define ED_SSZ 36
+#define GB_SHADE 37
+#define CB_HEADLINE 40
+#define GB_HEADLINE 41
+#define BT_OK 100
+#define BT_CANCEL 101
+#define BT_MORE 102
+#define ED_NAME 103
+#define FT_NAME 104
+#define GB_OPTIONS 105
+#define GB_NAME 106
+#define COL_FT_1 107
+#define COL_MF_1 108
+#define COL_FT_2 109
+#define COL_MF_2 110
+#define COL_FT_3 111
+#define COL_MF_3 112
+#define COL_FT_4 113
+#define COL_MF_4 114
+#define COL_FT_5 115
+#define COL_MF_5 116
+#define COL_FT_6 117
+#define COL_MF_6 118
+#define COL_GB_LAYOUT 119
+#define COL_BTN_UP 120
+#define COL_BTN_DOWN 121
+#define CB_MOD_TBL 122
+#define CB_PROP 123
+#define CB_INV 124
+#define FT_SPACE 125
+#define ED_SPACE 126
+
+#define GB_FLOW 130
+#define CB_PAGEBREAK 131
+#define RB_BREAKPAGE 132
+#define RB_BREAKCOLUMN 133
+#define RB_PAGEBREAKBEFORE 134
+#define RB_PAGEBREAKAFTER 135
+#define CB_PAGECOLL 136
+#define LB_PAGECOLL 137
+#define FT_PAGENUM 138
+#define NF_PAGENUM 139
+#define CB_KEEP 144
+#define CB_SPLIT 145
+
+#define GB_VERT_ORIENT 140
+#define RB_VERT_TOP 141
+#define RB_VERT_CENTER 142
+#define RB_VERT_BOTTOM 143
+
+#define RB_FROM_LEFT 144
diff --git a/sw/source/ui/table/tabledlg.src b/sw/source/ui/table/tabledlg.src
new file mode 100644
index 000000000000..5f2d396d1752
--- /dev/null
+++ b/sw/source/ui/table/tabledlg.src
@@ -0,0 +1,1600 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabledlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "table.hrc"
+#include "tabledlg.hrc"
+#include "helpid.h"
+#define TEXT_TEXTFLOW \
+ Text = "Textfluss" ; \
+ Text [ English ] = "Text Flow" ; \
+ Text [ norwegian ] = "Utvidelse av avsnitt" ; \
+ Text [ italian ] = "Flusso di testo" ; \
+ Text [ portuguese_brazilian ] = "Extens es de Parágrafo" ; \
+ Text [ portuguese ] = "Fluxo de texto" ; \
+ Text [ finnish ] = "Tekstin rivitys" ; \
+ Text [ danish ] = "Tekstretning" ; \
+ Text [ french ] = "Enchaînements" ; \
+ Text [ swedish ] = "Textflöde" ; \
+ Text [ dutch ] = "Tekstverloop" ; \
+ Text [ spanish ] = "Flujo del texto" ; \
+ Text [ english_us ] = "Text Flow" ; \
+ Text[ chinese_simplified ] = "»»ÐкͷÖÒ³"; \
+ Text[ russian ] = "Ïîëîæåíèå íà ñòðàíèöå"; \
+ Text[ polish ] = "Tekst"; \
+ Text[ japanese ] = "‘ÌÙ"; \
+ Text[ chinese_traditional ] = "´«¦æ©M¤À­¶"; \
+ Text[ arabic ] = "ÇäÓíÇÈ ÇáäÕ"; \
+ Text[ greek ] = "ÑïÞ êåéìÝíïõ"; \
+ Text[ korean ] = "ÅؽºÆ® È帧"; \
+ Text[ turkish ] = "Metin akýþý"; \
+ Text[ language_user1 ] = " ";
+
+/**************************************************************************/
+/* */
+/* */
+/* */
+/**************************************************************************/
+TabDialog DLG_FORMAT_TABLE
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Text = "Tabellenformat" ;
+ Text [ ENGLISH ] = "Table format" ;
+ Text [ norwegian ] = "Tabellformat" ;
+ Text [ italian ] = "Formato tabella" ;
+ Text [ portuguese_brazilian ] = "Formato de tabela" ;
+ Text [ portuguese ] = "Formato da tabela" ;
+ Text [ finnish ] = "Taulukon muoto" ;
+ Text [ danish ] = "Tabelformat" ;
+ Text [ french ] = "Format de tableau" ;
+ Text [ swedish ] = "Tabellformat" ;
+ Text [ dutch ] = "Tabelopmaak" ;
+ Text [ spanish ] = "Formato de tabla" ;
+ Text [ english_us ] = "Table Format" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ SVLook = TRUE ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_FORMAT_TABLE ;
+ Text = "Tabelle" ;
+ Text [ ENGLISH ] = "Table" ;
+ Text [ norwegian ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ portuguese_brazilian ] = "Tabela" ;
+ Text [ portuguese ] = "Tabela" ;
+ Text [ finnish ] = "Taulukko" ;
+ Text [ danish ] = "Tabel" ;
+ Text [ french ] = "Tableau" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ dutch ] = "Tabel" ;
+ Text [ spanish ] = "Tabla" ;
+ Text [ english_us ] = "Table" ;
+ PageResID = TP_FORMAT_TABLE ;
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "Tabela";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÇáÌÏæá";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "Ç¥";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_TABLE_TEXTFLOW ;
+ TEXT_TEXTFLOW
+ };
+ PageItem
+ {
+ Identifier = TP_TABLE_COLUMN ;
+ Text = "Spalten" ;
+ Text [ ENGLISH ] = "Columns" ;
+ Text [ norwegian ] = "Kolonner" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ portuguese_brazilian ] = "Colunas" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ finnish ] = "Sarakkeet" ;
+ Text [ danish ] = "Kolonner" ;
+ Text [ french ] = "Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ spanish ] = "Columnas" ;
+ Text [ english_us ] = "Columns" ;
+ PageResID = TP_TABLE_COLUMN ;
+ Text[ chinese_simplified ] = "À¸";
+ Text[ russian ] = "Ñòîëáöû";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "—ñ";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÃÚãÏÉ";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ 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" ;
+ PageResID = TP_BORDER ;
+ 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" ;
+ PageResID = TP_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 ] = " ";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "±í¸ñ¸ñʽ";
+ Text[ russian ] = "Ôîðìàò òàáëèöû";
+ Text[ polish ] = "Format tabeli";
+ Text[ japanese ] = "•\\‚Ì‘Ž®";
+ Text[ chinese_traditional ] = "ªí®æ®æ¦¡";
+ Text[ arabic ] = "ÊäÓíÞ ÇáÌÏæá";
+ Text[ greek ] = "ÌïñöÞ ðßíáêá";
+ Text[ korean ] = "Ç¥ ¼­½Ä";
+ Text[ turkish ] = "Tablo formatý";
+ Text[ language_user1 ] = " ";
+};
+/**************************************************************************/
+/* */
+/* */
+/* */
+/**************************************************************************/
+TabPage TP_FORMAT_TABLE
+{
+ HelpID = HID_FORMAT_TABLE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE;
+ FixedText FT_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 22 , 10 ) ;
+ Text = "~Name" ;
+ Text [ English ] = "~Name" ;
+ Text [ italian ] = "~Nome" ;
+ Text [ portuguese ] = "~Nome" ;
+ Text [ danish ] = "Navn" ;
+ Text [ french ] = "~Nom" ;
+ Text [ swedish ] = "~Namn" ;
+ Text [ dutch ] = "~Naam" ;
+ Text [ spanish ] = "~Nombre" ;
+ Text [ english_us ] = "~Name" ;
+ Text [ portuguese_brazilian ] = "~Name" ;
+ Text[ chinese_simplified ] = "Ãû³Æ(~N)";
+ Text[ russian ] = "Èìÿ";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "–¼‘O(~N)";
+ Text[ chinese_traditional ] = "¦WºÙ(~N)";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§(~N)";
+ Text[ turkish ] = "~Ad";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_NAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 58 , 14 ) ;
+ Size = MAP_APPFONT ( 79 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_WIDTH
+ {
+ Pos = MAP_APPFONT ( 12 , 33 ) ;
+ Size = MAP_APPFONT ( 22 , 10 ) ;
+ Text = "Br~eite" ;
+ Text [ ENGLISH ] = "W~idth" ;
+ Text [ norwegian ] = "B~redde" ;
+ Text [ italian ] = "L~argh." ;
+ Text [ portuguese_brazilian ] = "L~argura" ;
+ Text [ portuguese ] = "L~argura" ;
+ Text [ finnish ] = "~Leveys" ;
+ Text [ danish ] = "Bredde" ;
+ Text [ french ] = "~Largeur" ;
+ Text [ swedish ] = "Br~edd" ;
+ Text [ dutch ] = "~Breedte" ;
+ Text [ spanish ] = "A~ncho" ;
+ Text [ english_us ] = "W~idth" ;
+ Text[ chinese_simplified ] = "¿í(~I)";
+ Text[ russian ] = "Øèðèíà";
+ Text[ polish ] = "Szer.";
+ Text[ japanese ] = "•(~I)";
+ Text[ chinese_traditional ] = "¼e(~I)";
+ Text[ arabic ] = "ÇáÚÑÖ";
+ Text[ greek ] = "ÐëÜôïò";
+ Text[ korean ] = "³Êºñ(~I)";
+ Text[ turkish ] = "G~eniþlik";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField ED_WIDTH
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 58 , 32 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ Value = 0 ;
+ Unit = FUNIT_CM ;
+ First = 0 ;
+ Last = 9999 ;
+ SpinSize = 5 ;
+ };
+ CheckBox CB_REL_WIDTH
+ {
+ Pos = MAP_APPFONT ( 101 , 34 ) ;
+ Size = MAP_APPFONT ( 35 , 10 ) ;
+ Text = "Relati~v" ;
+ Text [ ENGLISH ] = "Relati~ve" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Relati~ve" ;
+ Text [ italian ] = "Relati~vo" ;
+ Text [ spanish ] = "Relati~vo" ;
+ Text [ french ] = "Relati~f" ;
+ Text [ dutch ] = "Relatie~f" ;
+ Text [ swedish ] = "Relati~v" ;
+ Text [ danish ] = "Relativ" ;
+ Text [ portuguese_brazilian ] = "Relati~v" ;
+ Text [ portuguese ] = "Relat~ivo" ;
+ Text[ chinese_simplified ] = "숦﵀(~V)";
+ Text[ russian ] = "Îòíîñèò.";
+ Text[ polish ] = "Wz~glêdny";
+ Text[ japanese ] = "Êß°¾ÝÄ•\\Ž¦(~V)";
+ Text[ chinese_traditional ] = "¬Û¹ïªº(~V)";
+ Text[ arabic ] = "äÓÈí";
+ Text[ greek ] = "Ó÷åôéêÜ";
+ Text[ korean ] = "ºñ·Ê(~V)";
+ Text[ turkish ] = "Göreceli";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_OPTIONS
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 184 , 73 ) ;
+ Text = "Eigenschaften" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ norwegian ] = "Options" ;
+ Text [ italian ] = "Opzioni" ;
+ Text [ portuguese_brazilian ] = "Opções" ;
+ Text [ portuguese ] = "Propriedades" ;
+ Text [ finnish ] = "Määritykset" ;
+ Text [ danish ] = "Egenskaber" ;
+ Text [ french ] = "Options" ;
+ Text [ swedish ] = "Egenskaper" ;
+ Text [ dutch ] = "Eigenschappen" ;
+ Text [ spanish ] = "Propiedades" ;
+ Text [ english_us ] = "Properties" ;
+ Text[ chinese_simplified ] = "ÊôÐÔ";
+ Text[ russian ] = "Ñâîéñòâà";
+ Text[ polish ] = "W³aœciwoœci";
+ Text[ japanese ] = "ÌßÛÊßè";
+ Text[ chinese_traditional ] = "ÄÝ©Ê";
+ Text[ arabic ] = "ÎÕÇÆÕ";
+ Text[ greek ] = "Éäéüôçôåò";
+ Text[ korean ] = "Ư¼º";
+ Text[ turkish ] = "Özellikler";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_FULL
+ {
+ Pos = MAP_APPFONT ( 199 , 15 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ TabStop = TRUE ;
+ Text = "~Automatisch" ;
+ Text [ ENGLISH ] = "~Automatic" ;
+ Text [ italian ] = "~Automatico" ;
+ Text [ finnish ] = "~Automaattinen" ;
+ Text [ swedish ] = "~Automatiskt" ;
+ Text [ dutch ] = "~Automatisch" ;
+ Text [ english_us ] = "A~utomatic" ;
+ Text [ spanish ] = "Au~tomática" ;
+ Text [ french ] = "~Automatique" ;
+ Text [ danish ] = "Automatisk" ;
+ Text [ portuguese_brazilian ] = "~Automatisch" ;
+ Text [ portuguese ] = "~Automático" ;
+ Text[ chinese_simplified ] = "×Ô¶¯(~A)";
+ Text[ russian ] = "Àâòîìàòè÷åñêè";
+ Text[ polish ] = "Automatycznie";
+ Text[ japanese ] = "Ž©“®(~A)";
+ Text[ chinese_traditional ] = "¦Û°Ê(~A)";
+ Text[ arabic ] = "ÊáÞÇÆí";
+ Text[ greek ] = "Áõôüìáôá";
+ Text[ korean ] = "ÀÚµ¿(~U)";
+ Text[ turkish ] = "Otomatik";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_LEFT
+ {
+ Pos = MAP_APPFONT ( 199 , 29 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Text = "~Links" ;
+ Text [ ENGLISH ] = "~Left" ;
+ Text [ norwegian ] = "~Left" ;
+ Text [ italian ] = "~Sinistra" ;
+ Text [ portuguese_brazilian ] = "~Esquerda" ;
+ Text [ portuguese ] = "~Esquerda" ;
+ Text [ finnish ] = "~Vasemmalle" ;
+ Text [ danish ] = "Venstre" ;
+ Text [ french ] = "~À gauche" ;
+ Text [ swedish ] = "Vän~ster" ;
+ Text [ dutch ] = "~Links" ;
+ Text [ spanish ] = "~Izquierda" ;
+ Text [ english_us ] = "~Left" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "×ó(~L)";
+ Text[ russian ] = "Ñëåâà";
+ Text[ polish ] = "Z lew~ej";
+ Text[ japanese ] = "¶(~L)";
+ Text[ chinese_traditional ] = "¥ª(~L)";
+ Text[ arabic ] = "íÓÇÑ";
+ Text[ greek ] = "ÁñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊ(~L)";
+ Text[ turkish ] = "S~ola";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_FROM_LEFT
+ {
+ Pos = MAP_APPFONT ( 199 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Text = "Von l~inks" ;
+ Text [ ENGLISH ] = "~From left" ;
+ TabStop = TRUE ;
+ Text[ english_us ] = "~From left";
+ Text[ portuguese ] = "~Esquerda";
+ Text[ russian ] = "Ñëåâà";
+ Text[ greek ] = "Aðü áñéóôåñÜ";
+ Text[ dutch ] = "~Van links";
+ Text[ french ] = "De ~gauche";
+ Text[ spanish ] = "De iz~quierda";
+ Text[ italian ] = "~Da sinistra";
+ Text[ danish ] = "Fra venstre";
+ Text[ swedish ] = "Från vänster";
+ Text[ polish ] = "Od lewej";
+ Text[ portuguese_brazilian ] = "~From left";
+ Text[ japanese ] = "¶‚©‚ç(~F)";
+ Text[ korean ] = "¿ÞÂÊÀ¸·ÎºÎÅÍ(~F)";
+ Text[ chinese_simplified ] = "´Ó×ó(~F)";
+ Text[ chinese_traditional ] = "±q¥ª(~F)";
+ Text[ arabic ] = "ãä ÇáíÓÇÑ";
+ Text[ turkish ] = "S~oldan";
+ };
+ RadioButton RB_RIGHT
+ {
+ Pos = MAP_APPFONT ( 199 , 57 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Text = "~Rechts" ;
+ Text [ ENGLISH ] = "~Right" ;
+ Text [ norwegian ] = "~Right" ;
+ Text [ italian ] = "~Destra" ;
+ Text [ portuguese_brazilian ] = "~Direita" ;
+ Text [ portuguese ] = "~Direita" ;
+ Text [ finnish ] = "~Oikealle" ;
+ Text [ danish ] = "Højre" ;
+ Text [ french ] = "~À droite" ;
+ Text [ swedish ] = "Höge~r" ;
+ Text [ dutch ] = "~Rechts" ;
+ Text [ spanish ] = "~Derecha" ;
+ Text [ english_us ] = "R~ight" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÓÒ(~R)";
+ Text[ russian ] = "Ñïðàâà";
+ Text[ polish ] = "Z p~rawej";
+ Text[ japanese ] = "‰E(~R)";
+ Text[ chinese_traditional ] = "¥k(~R)";
+ Text[ arabic ] = "íãíä";
+ Text[ greek ] = "ÄåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ(~I)";
+ Text[ turkish ] = "Sa~ða";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_CENTER
+ {
+ Pos = MAP_APPFONT ( 199 , 71 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Text = "Zen~triert" ;
+ Text [ ENGLISH ] = "~Centered" ;
+ Text [ norwegian ] = "~Centered" ;
+ Text [ italian ] = "~Centrato" ;
+ Text [ portuguese_brazilian ] = "~Centralizado" ;
+ Text [ portuguese ] = "~Centrado" ;
+ Text [ finnish ] = "~Keski" ;
+ Text [ danish ] = "Centreret" ;
+ Text [ french ] = "~Centré" ;
+ Text [ swedish ] = "Centrerat" ;
+ Text [ dutch ] = "~Centreren" ;
+ Text [ spanish ] = "~Centrado" ;
+ Text [ english_us ] = "~Center" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¾ÓÖÐ(~C)";
+ Text[ russian ] = "Ïî öåíòðó";
+ Text[ polish ] = "Wyœrodkowany";
+ Text[ japanese ] = "’†‰›‘µ‚¦(~C)";
+ Text[ chinese_traditional ] = "¸m¤¤(~C)";
+ Text[ arabic ] = "ÊæÓíØ";
+ Text[ greek ] = "ÊåíôñáñéóìÝíá";
+ Text[ korean ] = "°¡¿îµ¥(~C)";
+ Text[ turkish ] = "~Ortala";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_FREE
+ {
+ Pos = MAP_APPFONT ( 199 , 85 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Text = "~Manuell" ;
+ Text [ ENGLISH ] = "~Manual" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Manual" ;
+ Text [ italian ] = "~Manuale" ;
+ Text [ spanish ] = "~Manual" ;
+ Text [ french ] = "~Manuel" ;
+ Text [ dutch ] = "~Handmatig" ;
+ Text [ swedish ] = "~Manuellt" ;
+ Text [ danish ] = "Manuel" ;
+ Text [ portuguese_brazilian ] = "~Manuell" ;
+ Text [ portuguese ] = "~Manual" ;
+ Text[ chinese_simplified ] = "ÊÖ¹¤(~M)";
+ Text[ russian ] = "Âðó÷íóþ";
+ Text[ polish ] = "Rê~cznie";
+ Text[ japanese ] = "”CˆÓŽw’è(~M)";
+ Text[ chinese_traditional ] = "¤â¤u(~M)";
+ Text[ arabic ] = "íÏæí";
+ Text[ greek ] = "×åéñïêßíçôá";
+ Text[ korean ] = "¼öµ¿(~M)";
+ Text[ turkish ] = "~Manüel";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_POS
+ {
+ Pos = MAP_APPFONT ( 193 , 3 ) ;
+ Size = MAP_APPFONT ( 61 , 129 ) ;
+ Text = "Ausrichtung" ;
+ Text [ ENGLISH ] = "Position" ;
+ Text [ norwegian ] = "Posisjon" ;
+ Text [ italian ] = "Allineamento" ;
+ Text [ portuguese_brazilian ] = "Posição" ;
+ Text [ portuguese ] = "Alinhamento" ;
+ Text [ finnish ] = "Sijainti" ;
+ 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[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¹ï»ô";
+ Text[ arabic ] = "ãÍÇÐÇÉ";
+ Text[ greek ] = "Óôïß÷éóç";
+ Text[ korean ] = "¸ÂÃã";
+ Text[ turkish ] = "Hizalama";
+ };
+ GroupBox GB_DIST
+ {
+ Pos = MAP_APPFONT ( 6 , 82 ) ;
+ Size = MAP_APPFONT ( 184 , 50 ) ;
+ Text = "Abstände" ;
+ Text [ ENGLISH ] = "Distance" ;
+ Text [ norwegian ] = "Avstand" ;
+ Text [ italian ] = "Distanze" ;
+ Text [ portuguese_brazilian ] = "Distância" ;
+ Text [ portuguese ] = "Espaçamento" ;
+ Text [ finnish ] = "Etäisyys" ;
+ Text [ danish ] = "Afstand" ;
+ Text [ french ] = "Écarts" ;
+ Text [ swedish ] = "Avstånd" ;
+ Text [ dutch ] = "Afstanden" ;
+ Text [ spanish ] = "Espacios" ;
+ Text [ english_us ] = "Spacing" ;
+ Text[ chinese_simplified ] = "¼ä¸ô";
+ Text[ russian ] = "Èíòåðâàëû";
+ Text[ polish ] = "Odstêpy";
+ Text[ japanese ] = "ŠÔŠu";
+ Text[ chinese_traditional ] = "¶¡¹j";
+ Text[ arabic ] = "ÇáÊÈÇÚÏ";
+ Text[ greek ] = "AðïóôÜóåéò";
+ Text[ korean ] = "°£°Ý";
+ Text[ turkish ] = "Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_TOP_DIST
+ {
+ Pos = MAP_APPFONT ( 102 , 94 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "Nach ~oben" ;
+ Text [ ENGLISH ] = "To t~op" ;
+ Text [ norwegian ] = "Til t~oppen" ;
+ Text [ italian ] = "Verso l'~alto" ;
+ Text [ portuguese_brazilian ] = "Para o t~opo" ;
+ Text [ portuguese ] = "Para ~cima" ;
+ Text [ finnish ] = "~Ylös" ;
+ Text [ danish ] = "Foroven" ;
+ Text [ french ] = "Vers le ~haut" ;
+ Text [ swedish ] = "Upp" ;
+ Text [ dutch ] = "Naar bo~ven" ;
+ Text [ spanish ] = "Hacia ~arriba" ;
+ Text [ english_us ] = "~Above" ;
+ Text[ chinese_simplified ] = "ÏòÉÏ(~A)";
+ Text[ russian ] = "Ââåðõ";
+ Text[ polish ] = "Do góry";
+ Text[ japanese ] = "ã(~A)";
+ Text[ chinese_traditional ] = "¦V¤W(~A)";
+ Text[ arabic ] = "Åáì ÃÚáì";
+ Text[ greek ] = "Ðñ~ïò ôá ðÜíù";
+ Text[ korean ] = "À§¿¡(~A)";
+ Text[ turkish ] = "Ön~ce";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField ED_TOP_DIST
+ {
+ Pos = MAP_APPFONT ( 145 , 93 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 0 ;
+ Last = 9999 ;
+ SpinSize = 5 ;
+ };
+ FixedText FT_BOTTOM_DIST
+ {
+ Pos = MAP_APPFONT ( 102 , 112 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "Nach ~unten" ;
+ Text [ ENGLISH ] = "To ~bottom" ;
+ Text [ norwegian ] = "Til ~bunn" ;
+ Text [ italian ] = "In basso" ;
+ Text [ portuguese_brazilian ] = "Para a ~base" ;
+ Text [ portuguese ] = "Para ~baixo" ;
+ Text [ finnish ] = "~Alhaalta" ;
+ Text [ danish ] = "Forneden" ;
+ Text [ french ] = "Vers le ~bas" ;
+ Text [ swedish ] = "Ner" ;
+ Text [ dutch ] = "Naar ~beneden" ;
+ Text [ spanish ] = "Hacia a~bajo" ;
+ Text [ english_us ] = "~Below" ;
+ Text[ chinese_simplified ] = "ÏòÏÂ(~B)";
+ Text[ russian ] = "Âíèç";
+ Text[ polish ] = "Na dó³";
+ Text[ japanese ] = "‰º(~B)";
+ Text[ chinese_traditional ] = "¦V¤U(~B)";
+ Text[ arabic ] = "Åáì ÃÓÝá";
+ Text[ greek ] = "Ðñïò ôá êÜôù";
+ Text[ korean ] = "¾Æ·¡(~B)";
+ Text[ turkish ] = "So~nra";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField ED_BOTTOM_DIST
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 145 , 111 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 1000 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 0 ;
+ Last = 9999 ;
+ SpinSize = 5 ;
+ };
+ FixedText FT_LEFT_DIST
+ {
+ Pos = MAP_APPFONT ( 12 , 94 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "Nach lin~ks" ;
+ Text [ ENGLISH ] = "To lef~t" ;
+ Text [ norwegian ] = "Til venstr~e" ;
+ Text [ italian ] = "a sinis~tra" ;
+ Text [ portuguese_brazilian ] = "Para a esqueda" ;
+ Text [ portuguese ] = "À esqueda" ;
+ Text [ finnish ] = "~Vasemmalle" ;
+ Text [ danish ] = "Til venstre" ;
+ Text [ french ] = "À ga~uche" ;
+ Text [ swedish ] = "Till väns~ter" ;
+ Text [ dutch ] = "~Naar links" ;
+ Text [ spanish ] = "Hacia la i~zda." ;
+ Text [ english_us ] = "Lef~t" ;
+ Text[ chinese_simplified ] = "Ïò×ó(~T)";
+ Text[ russian ] = "Âëåâî";
+ Text[ polish ] = "Na lewo";
+ Text[ japanese ] = "¶(~T)";
+ Text[ chinese_traditional ] = "¦V¥ª(~T)";
+ Text[ arabic ] = "Åáì ÇáíÓÇÑ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "Ðñïò ôá áñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊ(~T)";
+ Text[ turkish ] = "S~ola";
+ };
+ MetricField ED_LEFT_DIST
+ {
+ Pos = MAP_APPFONT ( 58 , 93 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = -9999 ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 0 ;
+ Last = 9999 ;
+ SpinSize = 5 ;
+ };
+ FixedText FT_RIGHT_DIST
+ {
+ Pos = MAP_APPFONT ( 12 , 112 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "Nach recht~s" ;
+ Text [ ENGLISH ] = "To ri~ght" ;
+ Text [ norwegian ] = "Til høy~re" ;
+ Text [ italian ] = "a de~stra" ;
+ Text [ portuguese_brazilian ] = "Para a direita" ;
+ Text [ portuguese ] = "À direita" ;
+ Text [ finnish ] = "~Oikealle" ;
+ Text [ danish ] = "Til højre" ;
+ Text [ french ] = "À dr~oite" ;
+ Text [ swedish ] = "Till hö~ger" ;
+ Text [ dutch ] = "Naar recht~s" ;
+ Text [ spanish ] = "Hacia la d~cha." ;
+ Text [ english_us ] = "Ri~ght" ;
+ Text[ chinese_simplified ] = "ÏòÓÒ(~G)";
+ Text[ russian ] = "Âïðàâî";
+ Text[ polish ] = "Na prawo";
+ Text[ japanese ] = "‰E(~G)";
+ Text[ chinese_traditional ] = "¦V¥k(~G)";
+ Text[ arabic ] = "Åáì Çáíãíä";
+ Text[ greek ] = "Ðñïò ôá äåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ(~G)";
+ Text[ turkish ] = "Sa~ða";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField ED_RIGHT_DIST
+ {
+ Pos = MAP_APPFONT ( 58 , 111 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = -9999 ;
+ Maximum = 9999 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 0 ;
+ Last = 9999 ;
+ SpinSize = 5 ;
+ };
+};
+/**************************************************************************/
+/* */
+/* */
+/* */
+/**************************************************************************/
+TabPage TP_TABLE_COLUMN
+{
+ HelpID = HID_TABLE_COLUMN ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Hide = TRUE;
+ FixedText FT_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Name" ;
+ };
+ CheckBox CB_MOD_TBL
+ {
+ Pos = MAP_APPFONT ( 12 , 12 ) ;
+ Size = MAP_APPFONT ( 180 , 12 ) ;
+ Text = "Tabellenbreite anpassen" ;
+ Text [ ENGLISH ] = "" ;
+ TabStop = TRUE ;
+ Text [ italian ] = "Adatta larghezza tabella" ;
+ Text [ spanish ] = "Ajustar al ancho de la tabla" ;
+ Text [ french ] = "Adapter largeur de tableau" ;
+ Text [ dutch ] = "Tabelbreedte aanpassen" ;
+ Text [ english_us ] = "Fit to table width" ;
+ Text [ swedish ] = "~Anpassa tabelbredd" ;
+ Text [ danish ] = "Tilpas tabelbredde" ;
+ Text [ portuguese_brazilian ] = "Tabellenbreite anpassen" ;
+ Text [ portuguese ] = "Ajustar largura da tabela" ;
+ Text[ chinese_simplified ] = "µ÷Õû±í¸ñ¿í¶È";
+ Text[ russian ] = "Âûðîâíÿòü øèðèíó òàáëèöû";
+ Text[ polish ] = "Dostosuj szerokoϾ tabeli";
+ Text[ japanese ] = "•\\‚Ì•‚Ö‚Ìì—p‚ð”F‚ß‚é";
+ Text[ chinese_traditional ] = "½Õ¾ãªí®æ¼e«×";
+ Text[ arabic ] = "ãáÇÁãÉ áÚÑÖ ÇáÌÏæá";
+ Text[ greek ] = "ÐñïóáñìïãÞ ðëÜôïõò ðßíáêá";
+ Text[ korean ] = "Ç¥ ³Êºñ¿¡ ¸ÂÃã";
+ Text[ turkish ] = "Tablo geniþliðine göre ayarla";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_PROP
+ {
+ Pos = MAP_APPFONT ( 12 , 25 ) ;
+ Size = MAP_APPFONT ( 180 , 12 ) ;
+ Text = "Spalten gleichmäßig ändern" ;
+ Text [ ENGLISH ] = "Adjust columns equally" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Adjust columns proportionally" ;
+ Text [ portuguese_brazilian ] = "Spalten proportional ändern" ;
+ Text [ swedish ] = "Ändra kolumner proportionellt" ;
+ Text [ danish ] = "Modificer kolonner jævnt" ;
+ Text [ italian ] = "Modifica colonne proporzionalmente" ;
+ Text [ spanish ] = "Modificar columnas proporcionalmente" ;
+ Text [ french ] = "Modifier les colonnes de manière proport." ;
+ Text [ dutch ] = "Kolommen gelijkmatig wijzigen" ;
+ Text [ portuguese ] = "Ajustar colunas proporcionalmente" ;
+ Text[ chinese_simplified ] = "¶Ô³ÆµØµ÷ÕûÁпí";
+ Text[ russian ] = "Èçìåíèòü ðàâíîìåðíî ñòîëáöû";
+ Text[ polish ] = "Z~modyfikuj równomiernie kolumny";
+ Text[ japanese ] = "‹Ï“™—ñ•";
+ Text[ chinese_traditional ] = "¹ïºÙ½Õ¾ãÄæ¼e";
+ Text[ arabic ] = "ÊÛííÑ ÇáÃÚãÏÉ ÈÔßá ãÊßÇÝÆ";
+ Text[ greek ] = "ÁëëáãÞ óôçëþí áíÜëïãá";
+ Text[ korean ] = "±ÕÇüÀÖ°Ô ¿­ Á¶Àý";
+ Text[ turkish ] = "Sütunlarý orantýlý deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_INV
+ {
+ Pos = MAP_APPFONT ( 12 , 38 ) ;
+ Size = MAP_APPFONT ( 180 , 12 ) ;
+ Text = "Spalten umgekehrt proportional ändern" ;
+ Text [ ENGLISH ] = "" ;
+ TabStop = TRUE ;
+ Text [ dutch ] = "Kolommen omgekeerd proportioneel wijzigen" ;
+ Text [ italian ] = "Modifica colonne in modo inversamente proporzionale" ;
+ Text [ spanish ] = "Modificar columnas proporcionalmente inversas" ;
+ Text [ french ] = "Modifier les colonnes de manière inversement proportionnelle" ;
+ Text [ english_us ] = "Reverse columns proportionally" ;
+ Text [ swedish ] = "Ändra kolumnerna omvänt proportionellt" ;
+ Text [ danish ] = "Modificer kolonner omvendt proportional" ;
+ Text [ portuguese ] = "Alterar colunas em proporção inversa" ;
+ Text [ portuguese_brazilian ] = "Spalten umgekehrt proportional ändern" ;
+ Text[ chinese_simplified ] = "·´Ïà¸ü¸ÄÁпí";
+ Text[ russian ] = "Èçìåíèòü êîëîíêè îáðàòíî ïðîïîðöèîíàëüíî";
+ Text[ polish ] = "Zmieñ kolumny odwrotnie proporcjonalnie";
+ Text[ japanese ] = "—ñ‚𔽔ä—á‚É•ÏX";
+ Text[ chinese_traditional ] = "¤Ï¬ÛÅܧóÄæ¼e";
+ Text[ arabic ] = "ÚßÓ ÇáÊÛííÑ ÇáÊäÇÓÈí ááÃÚãÏÉ";
+ Text[ greek ] = "ÁëëáãÞ óôçëþí áíôéóôñüöùò áíÜëïãá";
+ Text[ korean ] = "¿­¿¡ ¹Ýºñ·Ê·Î";
+ Text[ turkish ] = "Sütunlarý ters orantýlý deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_SPACE
+ {
+ Pos = MAP_APPFONT ( 12 , 53 ) ;
+ Size = MAP_APPFONT ( 80 , 8 ) ;
+ Text = "Noch verfügbarer Platz" ;
+ Text [ English ] = "Available space" ;
+ Text [ english_us ] = "Remaining space" ;
+ Text [ italian ] = "Spazio ancora disponibile" ;
+ Text [ spanish ] = "Espacio disponible" ;
+ Text [ french ] = "Espace disponible" ;
+ Text [ dutch ] = "Nog beschikbare ruimte" ;
+ Text [ swedish ] = "Återstående plats" ;
+ Text [ danish ] = "Plads til rådighed" ;
+ Text [ portuguese ] = "Espaço restante" ;
+ Text [ portuguese_brazilian ] = "Noch verfügbarer Platz" ;
+ Text[ chinese_simplified ] = "»¹ÓÐÏÖ´æ¿ÉÓÿռä";
+ Text[ russian ] = "Îñòàòîê ìåñòà";
+ Text[ polish ] = "Miejsce do dyspozycji";
+ Text[ japanese ] = "Žc‚è‚̽Íß°½";
+ Text[ chinese_traditional ] = "ÁÙ¦³²{¦s¥i¥ÎªÅ¶¡";
+ Text[ arabic ] = "ÇáãÓÇÍÉ ÇáãÊÈÞíÉ";
+ Text[ greek ] = "Õðïëåéðüìåíïò ÷þñïò";
+ Text[ korean ] = "³ª¸ÓÁö °£°Ý";
+ Text[ turkish ] = "Kalan boþluk";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField ED_SPACE
+ {
+ ReadOnly = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 95 , 51 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Minimum = 0 ;
+ Maximum = 5600 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 10 ;
+ Last = 5600 ;
+ SpinSize = 10 ;
+ };
+ ImageButton COL_BTN_DOWN
+ {
+ Disable = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 95 ) ;
+ Size = MAP_APPFONT ( 10 , 10 ) ;
+ TabStop = TRUE ;
+ SYMBOL = IMAGEBUTTON_ARROW_LEFT ;
+ };
+ ImageButton COL_BTN_UP
+ {
+ Disable = TRUE ;
+ Pos = MAP_APPFONT ( 234 , 95 ) ;
+ Size = MAP_APPFONT ( 10 , 10 ) ;
+ TabStop = TRUE ;
+ SYMBOL = IMAGEBUTTON_ARROW_RIGHT ;
+ };
+ FixedText COL_FT_1
+ {
+ Pos = MAP_APPFONT ( 30 , 95 ) ;
+ Size = MAP_APPFONT ( 9 , 8 ) ;
+ Text = "~1" ;
+ Left = TRUE ;
+ Center = TRUE ;
+ Right = TRUE ;
+ };
+ MetricField COL_MF_1
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 13 , 111 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 5600 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 10 ;
+ Last = 5600 ;
+ SpinSize = 10 ;
+ };
+ FixedText COL_FT_2
+ {
+ Pos = MAP_APPFONT ( 68 , 95 ) ;
+ Size = MAP_APPFONT ( 9 , 8 ) ;
+ Text = "~2" ;
+ Left = TRUE ;
+ Right = TRUE ;
+ };
+ MetricField COL_MF_2
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 52 , 111 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 5600 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 10 ;
+ Last = 5600 ;
+ SpinSize = 10 ;
+ };
+ FixedText COL_FT_3
+ {
+ Pos = MAP_APPFONT ( 107 , 95 ) ;
+ Size = MAP_APPFONT ( 9 , 8 ) ;
+ Text = "~3" ;
+ Left = TRUE ;
+ Right = TRUE ;
+ };
+ MetricField COL_MF_3
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 91 , 111 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 5600 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 10 ;
+ Last = 5600 ;
+ SpinSize = 10 ;
+ };
+ FixedText COL_FT_4
+ {
+ Pos = MAP_APPFONT ( 146 , 95 ) ;
+ Size = MAP_APPFONT ( 9 , 8 ) ;
+ Text = "~4" ;
+ Left = TRUE ;
+ Right = TRUE ;
+ };
+ MetricField COL_MF_4
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 130 , 111 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 5600 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 10 ;
+ Last = 5600 ;
+ SpinSize = 10 ;
+ };
+ FixedText COL_FT_5
+ {
+ Pos = MAP_APPFONT ( 185 , 95 ) ;
+ Size = MAP_APPFONT ( 9 , 8 ) ;
+ Text = "~5" ;
+ Left = TRUE ;
+ Right = TRUE ;
+ };
+ MetricField COL_MF_5
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 169 , 111 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 5600 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 10 ;
+ Last = 5600 ;
+ SpinSize = 10 ;
+ };
+ FixedText COL_FT_6
+ {
+ Pos = MAP_APPFONT ( 224 , 95 ) ;
+ Size = MAP_APPFONT ( 9 , 8 ) ;
+ Text = "~6" ;
+ Left = TRUE ;
+ Right = TRUE ;
+ };
+ MetricField COL_MF_6
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 208 , 111 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 5600 ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ First = 10 ;
+ Last = 5600 ;
+ SpinSize = 10 ;
+ };
+ GroupBox COL_GB_LAYOUT
+ {
+ Pos = MAP_APPFONT ( 6 , 80 ) ;
+ Size = MAP_APPFONT ( 240 , 49 ) ;
+ 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 ] = "Szer. kolumny";
+ Text[ japanese ] = "—ñ‚Ì•";
+ Text[ chinese_traditional ] = "Äæ¼e";
+ Text[ arabic ] = "ÚÑÖ ÇáÃÚãÏÉ";
+ Text[ greek ] = "ÐëÜôïò óôÞëçò";
+ Text[ korean ] = "¿­ ³Êºñ";
+ Text[ turkish ] = "Sütun geniþliði";
+ Text[ language_user1 ] = " ";
+ };
+};
+/**************************************************************************/
+/* */
+/* Textfluss */
+/* */
+/**************************************************************************/
+TabPage TP_TABLE_TEXTFLOW
+{
+ HelpId = HID_TABLE_TEXTFLOW ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ TEXT_TEXTFLOW
+ Hide = TRUE;
+ GroupBox GB_FLOW
+ {
+ Pos = MAP_APPFONT ( 3 , 6 ) ;
+ Size = MAP_APPFONT ( 251 , 64 ) ;
+ TEXT_TEXTFLOW
+ };
+ CheckBox CB_PAGEBREAK
+ {
+ // Disable = TRUE;
+ Pos = MAP_APPFONT ( 12 , 17 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "~Umbruch" ;
+ Text [ ENGLISH ] = "~Break" ;
+ Text [ norwegian ] = "~Skift" ;
+ Text [ italian ] = "I~nterruzione" ;
+ Text [ portuguese_brazilian ] = "~Interrupção" ;
+ Text [ portuguese ] = "~Quebra" ;
+ Text [ finnish ] = "~Vaihto" ;
+ Text [ danish ] = "Skift" ;
+ Text [ french ] = "~Saut" ;
+ Text [ swedish ] = "~Brytning" ;
+ Text [ dutch ] = "~Eindemarkering" ;
+ Text [ spanish ] = "~Salto" ;
+ Text [ english_us ] = "~Break" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "»»Ò³(~B)";
+ Text[ russian ] = "Ðàçðûâ";
+ Text[ polish ] = "Po~dzia³";
+ Text[ japanese ] = "‹æØ‚è(~B)";
+ Text[ chinese_traditional ] = "´«­¶(~B)";
+ Text[ arabic ] = "ÝÇÕá";
+ Text[ greek ] = "ÁëëáãÞ";
+ Text[ korean ] = "ÆäÀÌÁö ¹Ù²Ù±â(~B)";
+ Text[ turkish ] = "Kesme";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_BREAKPAGE
+ {
+ // Disable = TRUE;
+ Pos = MAP_APPFONT ( 105 , 16 ) ;
+ Size = MAP_APPFONT ( 33 , 10 ) ;
+ 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" ;
+ Group = TRUE ;
+ Check = TRUE ;
+ Text[ chinese_simplified ] = "Ò³(~P)";
+ Text[ russian ] = "Ñòðàíèöà";
+ Text[ polish ] = "Strona";
+ Text[ japanese ] = "Íß°¼Þ(~P)";
+ Text[ chinese_traditional ] = "­¶(~P)";
+ Text[ arabic ] = "ÕÝÍÉ";
+ Text[ greek ] = "Óåëßäá";
+ Text[ korean ] = "ÆäÀÌÁö(~P)";
+ Text[ turkish ] = "Sayfa";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_BREAKCOLUMN
+ {
+ // Disable = TRUE;
+ Pos = MAP_APPFONT ( 141 , 16 ) ;
+ Size = MAP_APPFONT ( 33 , 10 ) ;
+ // ### ACHTUNG: Neuer Text in Resource? S~palte : ~Spalte
+ Text = "S~palte" ;
+ Text [ ENGLISH ] = "~Column" ;
+ Text [ norwegian ] = "~Kolonne" ;
+ Text [ italian ] = "~Colonna" ;
+ Text [ portuguese_brazilian ] = "~Coluna" ;
+ Text [ portuguese ] = "~Coluna" ;
+ Text [ finnish ] = "~Palsta" ;
+ Text [ danish ] = "Kolonne" ;
+ Text [ french ] = "~Colonne" ;
+ Text [ swedish ] = "~Kolumn" ;
+ Text [ dutch ] = "~Kolom" ;
+ Text [ spanish ] = "~Columna" ;
+ Text [ english_us ] = "Col~umn" ;
+ Text[ chinese_simplified ] = "À¸(~M)";
+ Text[ russian ] = "Ñòîëáåö";
+ Text[ polish ] = "Kolumna";
+ Text[ japanese ] = "—ñ(~M)";
+ Text[ chinese_traditional ] = "Äæ(~M)";
+ Text[ arabic ] = "ÚãæÏ";
+ Text[ greek ] = "ÓôÞëç";
+ Text[ korean ] = "¿­(~U)";
+ Text[ turkish ] = "Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_PAGEBREAKBEFORE
+ {
+ // Disable = TRUE;
+ Pos = MAP_APPFONT ( 176 , 16 ) ;
+ Size = MAP_APPFONT ( 33 , 10 ) ;
+ Text = "~davor" ;
+ Text [ ENGLISH ] = "be~fore" ;
+ Text [ norwegian ] = "f~ør" ;
+ Text [ italian ] = "~Prima" ;
+ Text [ portuguese_brazilian ] = "an~tes" ;
+ Text [ portuguese ] = "an~tes" ;
+ Text [ finnish ] = "~ennen" ;
+ Text [ danish ] = "Før" ;
+ Text [ french ] = "A~vant" ;
+ Text [ swedish ] = "F~öre" ;
+ Text [ dutch ] = "er~voor" ;
+ Text [ spanish ] = "delan~te" ;
+ Text [ english_us ] = "Be~fore" ;
+ Group = TRUE ;
+ Check = TRUE ;
+ Text[ chinese_simplified ] = "֮ǰ(~F)";
+ Text[ russian ] = "ïåðåä";
+ Text[ polish ] = "przed";
+ Text[ japanese ] = "‘O(~F)";
+ Text[ chinese_traditional ] = "¤§«e(~F)";
+ Text[ arabic ] = "ÞÈá";
+ Text[ greek ] = "Ðñéí áðü";
+ Text[ korean ] = "Àü¿¡(~F)";
+ Text[ turkish ] = "Ön~ce";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_PAGEBREAKAFTER
+ {
+ // Disable = TRUE;
+ Pos = MAP_APPFONT ( 211 , 16 ) ;
+ Size = MAP_APPFONT ( 37 , 10 ) ;
+ Text = "da~nach" ;
+ Text [ ENGLISH ] = "aft~er" ;
+ Text [ norwegian ] = "ett~er" ;
+ Text [ italian ] = "D~opo" ;
+ Text [ portuguese_brazilian ] = "dep~ois" ;
+ Text [ portuguese ] = "Dep~ois" ;
+ Text [ finnish ] = "~jälkeen" ;
+ Text [ danish ] = "Efter" ;
+ Text [ french ] = "A~près" ;
+ Text [ swedish ] = "Eft~er" ;
+ Text [ dutch ] = "er~achter" ;
+ Text [ spanish ] = "~detrás" ;
+ Text [ english_us ] = "~After" ;
+ Text[ chinese_simplified ] = "Ö®ºó(~E)";
+ Text[ russian ] = "ïîñëå";
+ Text[ polish ] = "p~otem";
+ Text[ japanese ] = "΋(~E)";
+ Text[ chinese_traditional ] = "¤§«á(~E)";
+ Text[ arabic ] = "ÈÚÏ";
+ Text[ greek ] = "ìåôÜ áðü";
+ Text[ korean ] = "ÈÄ¿¡(~A)";
+ Text[ turkish ] = "Son~ra";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_PAGECOLL
+ {
+ // Disable = TRUE;
+ Pos = MAP_APPFONT ( 12 , 30 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "mit Seitenvor~lage" ;
+ Text [ ENGLISH ] = "With temp~late" ;
+ Text [ norwegian ] = "Med m~al" ;
+ Text [ italian ] = "Con mo~dello di pagina" ;
+ Text [ portuguese_brazilian ] = "Com mode~lo" ;
+ Text [ portuguese ] = "Com es~tilo de página" ;
+ Text [ finnish ] = "Käytä ~mallia" ;
+ Text [ danish ] = "Med sidetypografi" ;
+ Text [ french ] = "Avec le style de page" ;
+ Text [ swedish ] = "med sid~formatmall" ;
+ Text [ dutch ] = "~Met pagina-opmaakprofiel" ;
+ Text [ spanish ] = "C~on estilo de página" ;
+ Text [ english_us ] = "With Page St~yle" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "´øÒ³ÃæÑùʽ(~Y)";
+ Text[ russian ] = "Ñî ñòèëåì ñòðàíèöû";
+ Text[ polish ] = "Ze style~m strony";
+ Text[ japanese ] = "Íß°¼Þ½À²Ù•t‚«(~Y)";
+ Text[ chinese_traditional ] = "±a­¶­±¼Ë¦¡(~Y)";
+ Text[ arabic ] = "ÈäãØ ÕÝÍÉ";
+ Text[ greek ] = "ìå ðñüôõðï óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö À¯Çü°ú(~Y)";
+ Text[ turkish ] = "Sayfa düzeni ile";
+ Text[ language_user1 ] = "All \"Vorlagen\" /Styles are written with a capital S.10.5.00EM";
+ };
+ ListBox LB_PAGECOLL
+ {
+ // Disable = TRUE;
+ Pos = MAP_APPFONT ( 105 , 28 ) ;
+ Size = MAP_APPFONT ( 61 , 50 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_PAGENUM
+ {
+ Pos = MAP_APPFONT ( 171 , 30 ) ;
+ Size = MAP_APPFONT ( 47 , 10 ) ;
+ Text = "Se~itennummer" ;
+ Text [ ENGLISH ] = "Page number" ;
+ Text [ english_us ] = "Page ~number" ;
+ Text [ swedish ] = "S~idnummer" ;
+ Text [ danish ] = "Sidetal" ;
+ Text [ italian ] = "Numero di pag~ina" ;
+ Text [ spanish ] = "Nú~mero de página" ;
+ Text [ french ] = "Numér~o de page" ;
+ Text [ dutch ] = "Pa~ginanummer" ;
+ Text [ portuguese_brazilian ] = "Se~itennummer" ;
+ Text [ portuguese ] = "~Número de página" ;
+ Text[ chinese_simplified ] = "Ò³Âë(~N)";
+ Text[ russian ] = "Íîìåð ñòðàíèöû";
+ Text[ polish ] = "Numer strony";
+ Text[ japanese ] = "Íß°¼Þ”Ô†(~N)";
+ Text[ chinese_traditional ] = "­¶¼Æ(~N)";
+ Text[ arabic ] = "ÑÞã ÇáÕÝÍÉ";
+ Text[ greek ] = "Áñéèìüò óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ¹øÈ£(~N)";
+ Text[ turkish ] = "Sayfa ~numaralarý";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField NF_PAGENUM
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 223 , 28 ) ;
+ Size = MAP_APPFONT ( 26 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 0 ;
+ Maximum = 9999 ;
+ Value = 0 ;
+ First = 0 ;
+ Last = 9999 ;
+ };
+ CheckBox CB_SPLIT
+ {
+ Pos = MAP_APPFONT ( 12 , 43 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Tabelle nicht ~trennen" ;
+ Text [ ENGLISH ] = "dont split" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Do not split table" ;
+ Text [ portuguese_brazilian ] = "Tabelle nicht ~trennen" ;
+ Text [ swedish ] = "Dela inte ~tabell" ;
+ Text [ danish ] = "Odel tabel ikke" ;
+ Text [ italian ] = "Non separare la tabella" ;
+ Text [ spanish ] = "~No dividir tabla" ;
+ Text [ french ] = "Ne pas ~séparer tableau" ;
+ Text [ dutch ] = "~Tabel niet splitsen" ;
+ Text [ portuguese ] = "~Não separar tabela" ;
+ Text[ chinese_simplified ] = "²»·Ö¸ô±í¸ñ";
+ Text[ russian ] = "Íå ðàçáèâàòü òàáëèöó";
+ Text[ polish ] = "Nie dziel ta~beli";
+ Text[ japanese ] = "•\\‚𕪊„‚µ‚È‚¢";
+ Text[ chinese_traditional ] = "¤£¤À¶}ªí®æ";
+ Text[ arabic ] = "ÚÏã ÝÕá ÇáÌÏæá";
+ Text[ greek ] = "Íá ìç äéáéñåèåß ï ðßíáêáò";
+ Text[ korean ] = "Ç¥¸¦ ³ª´©Áö ¸¶½Ê½Ã¿À.";
+ Text[ turkish ] = "Tabloyu ayýrma";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_KEEP
+ {
+ Pos = MAP_APPFONT ( 105 , 43 ) ;
+ Size = MAP_APPFONT ( 140 , 10 ) ;
+ Text = "Mit folgendem Absatz ~zusammenhalten" ;
+ Text [ ENGLISH ] = "~keep with next" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~keep with next paragraph" ;
+ Text [ portuguese_brazilian ] = "Mit folgendem Absatz ~zusammenhalten" ;
+ Text [ swedish ] = "Håll ~ihop med följande stycke" ;
+ Text [ danish ] = "Hold sammen med næste afsnit" ;
+ Text [ italian ] = "Non separare dal paragrafo seguente." ;
+ Text [ spanish ] = "Mantener ~junto al párrafo siguiente" ;
+ Text [ french ] = "~Ne pas séparer du paragraphe suivant" ;
+ Text [ dutch ] = "~Met de volgende alinea samenvoegen" ;
+ Text [ portuguese ] = "Jun~tar ao parágrafo seguinte" ;
+ Text[ chinese_simplified ] = "ºÍÏÂÒ»¶ÎÂä±£³ÖÁ¬½Ó(~K)";
+ Text[ russian ] = "Âìåñòå ñî ñëåäóþùèì àáçàöåì";
+ Text[ polish ] = "Akapit razem z nastêpnym";
+ Text[ japanese ] = "ŽŸ‚Ì’i—Ž‚ÆÚ‡(~K)";
+ Text[ chinese_traditional ] = "©M¤U¤@¬q¸¨«O«ù³sµ²(~K)";
+ Text[ arabic ] = "ÊÑÇÈØ ÇáÝÞÑÇÊ";
+ Text[ greek ] = "ÄéáôÞñçóç ìå åðüìåíç ðáñÜãñáöï";
+ Text[ korean ] = "´ÙÀ½ ´Ü¶ôÀ» °°Àº ÆäÀÌÁö¿¡(~K)";
+ Text[ turkish ] = "Alttaki paragraf ile birlikte tut";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_HEADLINE
+ {
+ Pos = MAP_APPFONT ( 12 , 55 ) ;
+ Size = MAP_APPFONT ( 106 , 10 ) ;
+ Text = "Überschrift ~wiederholen" ;
+ Text [ ENGLISH ] = "R~epeat Headline" ;
+ Text [ norwegian ] = "G~jenta Overskrift" ;
+ Text [ italian ] = "R~ipeti riga intestazione" ;
+ Text [ portuguese_brazilian ] = "R~epetir Título" ;
+ Text [ portuguese ] = "R~epetir título" ;
+ Text [ finnish ] = "~Toista otsikko" ;
+ Text [ danish ] = "Gentag overskrift" ;
+ Text [ french ] = "R~épéter le titre" ;
+ Text [ swedish ] = "U~pprepa överskrift" ;
+ Text [ dutch ] = "Kop ~herhalen" ;
+ Text [ spanish ] = "Repet~ir encabezado" ;
+ Text [ english_us ] = "R~epeat heading" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Öظ´±êÌâ(~E)";
+ Text[ russian ] = "Ïîâòîðèòü çàãîëîâîê";
+ Text[ polish ] = "Powtórz tytu³";
+ Text[ japanese ] = "Œ©o‚µ‚ÌŒJ‚è•Ô‚µ(~E)";
+ Text[ chinese_traditional ] = "­«½Æ¼ÐÃD(~E)";
+ Text[ arabic ] = "ÊßÑÇÑ ÇáÚäæÇä";
+ Text[ greek ] = "ÅðáíÜëçøç åðéêåöáëßäáò";
+ Text[ korean ] = "¸Ó¸®±Û ¹Ýº¹(~E)";
+ Text[ turkish ] = "Baþlýðý yinele";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_VERT_ORIENT
+ {
+ Pos = MAP_APPFONT ( 3 , 76 ) ;
+ Size = MAP_APPFONT ( 251 , 52 ) ;
+ Text = "Vertikale Ausrichtung" ;
+ Text [ ENGLISH ] = "Vertical Alignment" ;
+ Text [ english_us ] = "Vertical alignment" ;
+ Text [ swedish ] = "Vertikal justering" ;
+ Text [ danish ] = "Lodret justering" ;
+ Text [ italian ] = "Allineamento verticale" ;
+ Text [ spanish ] = "Alineación vertical" ;
+ Text [ french ] = "Alignement vertical" ;
+ Text [ dutch ] = "Verticale uitlijning" ;
+ Text [ portuguese_brazilian ] = "Vertikale Ausrichtung" ;
+ Text [ portuguese ] = "Alinhamento vertical" ;
+ Text[ chinese_simplified ] = "´¹Ö±·½Ïò¶ÔÆë";
+ Text[ russian ] = "Âûðàâíèâàíèå ïî âåðòèêàëè";
+ Text[ polish ] = "Pionowe wyrównanie";
+ Text[ japanese ] = "cˆÊ’u";
+ Text[ chinese_traditional ] = "««ª½¹ï»ô";
+ Text[ arabic ] = "ãÍÇÐÇÉ ÑÃÓíÉ";
+ Text[ greek ] = "Êáôáêüñõöç óôïß÷éóç";
+ Text[ korean ] = "¼öÁ÷ ¸ÂÃã";
+ Text[ turkish ] = "Dikey hizalama";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_VERT_TOP
+ {
+ Pos = MAP_APPFONT ( 12 , 86 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Oben" ;
+ Text [ ENGLISH ] = "Top" ;
+ Text [ english_us ] = "Top" ;
+ Text [ swedish ] = "Överst" ;
+ Text [ danish ] = "Top" ;
+ Text [ italian ] = "Alto" ;
+ Text [ spanish ] = "Arriba" ;
+ Text [ french ] = "En haut" ;
+ Text [ dutch ] = "Boven" ;
+ Text [ portuguese_brazilian ] = "Oben" ;
+ Text [ portuguese ] = "Em cima" ;
+ Text[ chinese_simplified ] = "ÉÏ";
+ Text[ russian ] = "Ââåðõó";
+ Text[ polish ] = "Na g~órze";
+ Text[ japanese ] = "ã";
+ Text[ chinese_traditional ] = "¤W";
+ Text[ arabic ] = "ÃÚáì";
+ Text[ greek ] = "ÐÜíù";
+ Text[ korean ] = "¸ÇÀ§";
+ Text[ turkish ] = "Orta";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_VERT_CENTER
+ {
+ Pos = MAP_APPFONT ( 12 , 98 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Mitte" ;
+ Text [ ENGLISH ] = "Middle" ;
+ Text [ english_us ] = "~Centered" ;
+ Text [ swedish ] = "Mitten" ;
+ Text [ danish ] = "Centreret" ;
+ Text [ italian ] = "Centro" ;
+ Text [ spanish ] = "Centro" ;
+ Text [ french ] = "Milieu" ;
+ Text [ dutch ] = "Midden" ;
+ Text [ portuguese_brazilian ] = "Mitte" ;
+ Text [ portuguese ] = "Centro" ;
+ Text[ chinese_simplified ] = "ÖÐ";
+ Text[ russian ] = "Â ñåðåäèíå";
+ Text[ polish ] = "Œrodek";
+ Text[ japanese ] = "’†S";
+ Text[ chinese_traditional ] = "¤¤";
+ Text[ arabic ] = "ÇáæÓØ";
+ Text[ greek ] = "ÊÝíôñï";
+ Text[ korean ] = "°¡¿îµ¥(~C)";
+ Text[ turkish ] = "Aþaðý";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_VERT_BOTTOM
+ {
+ Pos = MAP_APPFONT ( 12 , 110 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Unten" ;
+ Text [ ENGLISH ] = "Bottom" ;
+ Text [ english_us ] = "Bottom" ;
+ Text [ swedish ] = "Underst" ;
+ Text [ danish ] = "Nederst" ;
+ Text [ italian ] = "Basso" ;
+ Text [ spanish ] = "Abajo" ;
+ Text [ french ] = "En bas" ;
+ Text [ dutch ] = "Beneden" ;
+ Text [ portuguese_brazilian ] = "Unten" ;
+ Text [ portuguese ] = "Em baixo" ;
+ Text[ chinese_simplified ] = "ÏÂ";
+ Text[ russian ] = "Âíèçó";
+ Text[ polish ] = "W dole";
+ Text[ japanese ] = "‰º";
+ Text[ chinese_traditional ] = "¤U";
+ Text[ arabic ] = "ÃÓÝá";
+ Text[ greek ] = "ÊÜôù";
+ Text[ korean ] = "¹Ù´Ú";
+ Text[ turkish ] = "Yukarý";
+ Text[ language_user1 ] = " ";
+ };
+};
+InfoBox MSG_WRONG_TABLENAME
+{
+ MESSAGE = "Der Name der Tabelle darf keine Leerzeichen enthalten." ;
+ MESSAGE [ English ] = "The name of the table must not contain spaces." ;
+ Message [ english_us ] = "The name of the table must not contain spaces." ;
+ Message [ portuguese_brazilian ] = "Der Name der Tabelle darf keine Leerzeichen enthalten." ;
+ Message [ swedish ] = "Namnet på tabellen får inte innehålla några blanksteg." ;
+ Message [ danish ] = "Et tabelnavn må ikke indeholde mellemrum." ;
+ Message [ italian ] = "Il nome della tabella non può contenere spazi." ;
+ Message [ spanish ] = "El nombre de la tabla no debe contener espacios." ;
+ Message [ french ] = "Le nom du tableau ne peut pas contenir d'espaces." ;
+ Message [ dutch ] = "In de naam van de tabel mogen geen spaties voorkomen." ;
+ Message [ portuguese ] = "O nome da tabela não pode ter espaços vazios" ;
+ Message[ chinese_simplified ] = "±í¸ñÃû³Æ²»Äܺ¬Óпոñ×Ö·û¡£";
+ Message[ russian ] = "Èìÿ òàáëèöû íå äîëæíî ñîäåðæàòü ïðîáåëîâ.";
+ Message[ polish ] = "Nazwa tabeli nie mo¿e zawieraæ spacji.";
+ Message[ japanese ] = "•\\–¼‚ɽÍß°½‚Í“ü‚ê‚ç‚ê‚Ü‚¹‚ñ";
+ Message[ chinese_traditional ] = "ªí®æ¦WºÙ¤£¯à§t¦³ªÅ®æ¦r¤¸¡C";
+ Message[ arabic ] = "íÌÈ ÃáÇ íÍÊæí ÇÓã ÇáÌÏæá Úáì ÃÍÑÝ ãÓÇÝÉ.";
+ Message[ greek ] = "Ôï üíïìá ôïõ ðßíáêá äåí åðéôñÝðåôáé íá ðåñéÝ÷åé êåíÜ";
+ Message[ korean ] = "Ç¥ À̸§¿¡´Â °ø¹éÀÌ ÀÖÀ¸¸é ¾ÈµË´Ï´Ù.";
+ Message[ turkish ] = "Tablo adýnda boþluk bulunmamalýdýr.";
+ Message[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/table/tablemgr.cxx b/sw/source/ui/table/tablemgr.cxx
new file mode 100644
index 000000000000..7e27dee39c20
--- /dev/null
+++ b/sw/source/ui/table/tablemgr.cxx
@@ -0,0 +1,441 @@
+/*************************************************************************
+ *
+ * $RCSfile: tablemgr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+#ifndef _IPOBJ_HXX //autogen
+#include <so3/ipobj.hxx>
+#endif
+#ifndef _SCHDLL0_HXX
+#include <sch/schdll0.hxx>
+#endif
+#ifndef _SCH_DLL_HXX
+#include <sch/schdll.hxx>
+#endif
+#ifndef _SCH_MEMCHRT_HXX
+#include <sch/memchrt.hxx>
+#endif
+
+
+#include "errhdl.hxx"
+#include "wrtsh.hxx"
+#include "cmdid.h"
+#include "frmatr.hxx"
+#include "view.hxx"
+#include "basesh.hxx"
+#include "swundo.hxx"
+#include "tablemgr.hxx"
+#include "frmfmt.hxx"
+#include "instable.hxx"
+#include "colwd.hxx"
+#include "swerror.h"
+#include "table.hrc"
+
+
+
+/*------------------------------------------------------------------------
+ Beschreibung: Zeilenhoehe einstellen (Dialog)
+------------------------------------------------------------------------*/
+
+
+void SwTableFUNC::ColWidthDlg( Window *pParent )
+{
+ InitTabCols();
+ SwTableWidthDlg *pDlg = new SwTableWidthDlg( pParent, *this );
+ pDlg->Execute();
+ delete pDlg;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Breite ermitteln
+ --------------------------------------------------------------------*/
+
+
+SwTwips SwTableFUNC::GetColWidth(USHORT nNum) const
+{
+ SwTwips nWidth = 0;
+
+ if( aCols.Count() > 0 )
+ {
+ if(aCols.Count() == GetColCount())
+ {
+ nWidth = (SwTwips)((nNum == aCols.Count()) ?
+ aCols.GetRight() - aCols[nNum-1] :
+ nNum == 0 ? aCols[nNum] - aCols.GetLeft() :
+ aCols[nNum] - aCols[nNum-1]);
+ }
+ else
+ {
+ SwTwips nRValid = nNum < GetColCount() ?
+ aCols[(USHORT)GetRightSeparator((int)nNum)]:
+ aCols.GetRight();
+ SwTwips nLValid = nNum ?
+ aCols[(USHORT)GetRightSeparator((int)nNum - 1)]:
+ aCols.GetLeft();
+ nWidth = nRValid - nLValid;
+ }
+ }
+ else
+ nWidth = aCols.GetRight();
+
+ return nWidth;
+}
+
+
+
+SwTwips SwTableFUNC::GetMaxColWidth( USHORT nNum ) const
+{
+ ASSERT(nNum <= aCols.Count(), "Index out of Area");
+
+ if ( GetColCount() > 0 )
+ {
+ // Die max. Breite ergibt sich aus der eigenen Breite und
+ // der Breite der Nachbarzellen um je MINLAY verringert
+ SwTwips nMax = nNum == 0 ?
+ GetColWidth(1) - MINLAY :
+ nNum == GetColCount() ?
+ GetColWidth( nNum-1 ) - MINLAY :
+ GetColWidth(nNum - 1) + GetColWidth( nNum + 1 ) - 2 * MINLAY;
+
+ return nMax + GetColWidth(nNum) ;
+ }
+ else
+ return GetColWidth(nNum);
+}
+
+
+
+void SwTableFUNC::SetColWidth(USHORT nNum, SwTwips nNewWidth )
+{
+ // aktuelle Breite setzen
+ // alle folgenden Verschieben
+ BOOL bCurrentOnly = FALSE;
+ SwTwips nWidth = 0;
+
+ if ( aCols.Count() > 0 )
+ {
+ if(aCols.Count() != GetColCount())
+ bCurrentOnly = TRUE;
+ nWidth = GetColWidth(nNum);
+
+ int nDiff = (int)(nNewWidth - nWidth);
+ if( !nNum )
+ aCols[GetRightSeparator(0)] += nDiff;
+ else if( nNum < GetColCount() )
+ {
+ if(nDiff < GetColWidth(nNum + 1) - MINLAY)
+ aCols[GetRightSeparator(nNum)] += nDiff;
+ else
+ {
+ int nDiffLeft = nDiff - (int)GetColWidth(nNum + 1) + (int)MINLAY;
+ aCols[GetRightSeparator(nNum)] += (nDiff - nDiffLeft);
+ aCols[GetRightSeparator(nNum - 1)] -= nDiffLeft;
+ }
+ }
+ else
+ aCols[GetRightSeparator(nNum-1)] -= nDiff;
+ }
+ else
+ aCols.SetRight( Min( nNewWidth, aCols.GetRightMax()) );
+
+ pSh->StartAllAction();
+ pSh->SetTabCols( aCols, bCurrentOnly );
+ pSh->EndAllAction();
+}
+
+
+
+void SwTableFUNC::InitTabCols()
+{
+ ASSERT(pSh, keine Shell);
+
+ if( pFmt && pSh)
+ pSh->GetTabCols( aCols );
+}
+
+
+
+SwTableFUNC::SwTableFUNC(SwWrtShell *pShell, BOOL bCopyFmt)
+ : pFmt(pShell->GetTableFmt()),
+ pSh(pShell),
+ bCopy(bCopyFmt)
+{
+ // gfs. das Format fuer die Bearbeitung kopieren
+ if( pFmt && bCopy )
+ pFmt = new SwFrmFmt( *pFmt );
+}
+
+
+
+SwTableFUNC::~SwTableFUNC()
+{
+ if(bCopy)
+ delete pFmt;
+}
+
+//Sonst GPF mit W95,MSVC40, non product
+#pragma optimize("",off)
+
+
+
+void SwTableFUNC::InsertChart( SchMemChart& rData, const SfxItemSet *pSet )
+{
+ pSh->StartAllAction();
+ pSh->StartUndo( UIUNDO_INSERT_CHART );
+
+ String aName( pSh->GetTableFmt()->GetName() );
+
+ //Vor die Tabelle gehen und einen Node einfuegen.
+ pSh->MoveTable( fnTableCurr, fnTableStart );
+ pSh->Up();
+ if ( pSh->IsCrsrInTbl() )
+ {
+ if ( aName != pSh->GetTableFmt()->GetName() )
+ pSh->Down(); //Zwei Tabellen direkt uebereinander.
+ }
+ pSh->SplitNode();
+
+ //Jetzt das CharObject einfuegen.
+ //Wer das nicht versteht ist selber schuld ;-)
+ SvStorageRef aStor = new SvStorage( aEmptyStr );
+ SvInPlaceObjectRef aIPObj;
+#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->InsertOle( aIPObj );
+
+ //Den Namen der Table am OleNode setzen
+ pSh->SetChartName( aName );
+
+ //Und die Daten in's Objekt uebertragen.
+ if( pSet )
+ SchDLL::Update( aIPObj, &rData, *pSet );
+ else
+ SchDLL::Update( aIPObj, &rData );
+ }
+ pSh->EndUndo( UIUNDO_INSERT_CHART );
+ pSh->EndAllAction();
+}
+
+#pragma optimize("",on)
+
+
+
+void SwTableFUNC::UpdateChart()
+{
+ //Update der Felder in der Tabelle vom User ausgeloesst, alle
+ //Charts zu der Tabelle werden auf den neuesten Stand gebracht.
+ SwFrmFmt *pFmt = pSh->GetTableFmt();
+ if ( pFmt && pSh->HasOLEObj( pFmt->GetName() ) )
+ {
+ pSh->StartAllAction();
+ pSh->UpdateCharts( pFmt->GetName() );
+ pSh->EndAllAction();
+ }
+}
+
+
+
+USHORT SwTableFUNC::GetCurColNum() const
+{
+ int nPos = pSh->GetCurTabColNum();
+ int nCount = 0;
+ for(int i = 0; i < nPos; i++ )
+ if(aCols.IsHidden(i))
+ nCount ++;
+ return nPos - nCount;
+}
+
+
+
+
+USHORT SwTableFUNC::GetColCount() const
+{
+ USHORT nCount = 0;
+ for(int i=0; i < (int)aCols.Count(); i++ )
+ if(aCols.IsHidden(i))
+ nCount ++;
+ return aCols.Count() - nCount;
+}
+
+
+
+int SwTableFUNC::GetRightSeparator(int nNum) const
+{
+ DBG_ASSERT( nNum < (int)GetColCount() ,"Index out of range")
+ int i = 0;
+ while( nNum >= 0 )
+ {
+ if( !aCols.IsHidden(i) )
+ nNum--;
+ i++;
+ }
+ return i - 1;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.120 2000/09/18 16:06:09 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.119 2000/08/29 14:01:23 ama
+ New: Negative margins
+
+ Revision 1.118 2000/04/26 14:59:03 os
+ GetName() returns const String&
+
+ Revision 1.117 2000/03/09 21:54:38 jp
+ Changes: SchMemChart in new headerfile
+
+ Revision 1.116 2000/02/11 14:58:54 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.115 1999/02/09 13:31:14 JP
+ Task #61632#: Charts auch in complexen Tabellen zulassen
+
+
+ Rev 1.114 09 Feb 1999 14:31:14 JP
+ Task #61632#: Charts auch in complexen Tabellen zulassen
+
+ Rev 1.113 29 Nov 1997 14:28:10 MA
+ includes
+
+ Rev 1.112 24 Nov 1997 15:52:24 MA
+ includes
+
+ Rev 1.111 03 Nov 1997 13:56:50 MA
+ precomp entfernt
+
+ Rev 1.110 06 Aug 1997 14:48:50 TRI
+ VCL: Anpassungen
+
+ Rev 1.109 04 Apr 1997 08:38:36 MA
+ include vergessen
+
+ Rev 1.108 03 Apr 1997 09:14:08 MA
+ undo fuer insertchart
+
+ Rev 1.107 01 Apr 1997 18:00:58 MA
+ #37054# Chart immer vor Tabelle
+
+ Rev 1.106 04 Mar 1997 09:13:46 MA
+ #37054# InsertChart, richtiger Anker bei zwei Tabellen uebereinander
+
+ Rev 1.105 24 Nov 1996 14:59:48 WP
+ SvGlobalNames beseitigt
+
+ Rev 1.104 24 Oct 1996 13:33:04 TRI
+ sostor.hxx included
+
+ Rev 1.103 05 Sep 1996 08:19:22 OS
+ richtige Min/Max-Einstellungen fuer einspaltige Tabellen
+
+ Rev 1.102 04 Sep 1996 11:15:12 JP
+ Split/InsertCol/Row-Dialoge und Methoden entfernt -> direkt an der Shell rufen
+
+ Rev 1.101 28 Aug 1996 14:33:20 OS
+ includes
+
+ Rev 1.100 06 Jun 1996 14:54:54 OS
+ MM50 ->MINLAY
+
+ Rev 1.99 18 Apr 1996 11:38:54 OM
+ Unbenutzte Fkt entfernt
+
+ Rev 1.98 26 Mar 1996 15:10:20 MA
+ fix: richtige Chart-SS, optimierung abgeschaltet
+
+ Rev 1.97 07 Mar 1996 15:03:18 HJS
+ del: memchart.hxx
+
+ Rev 1.96 28 Feb 1996 16:47:06 MA
+ chg: InsertChart mit ItemSet
+
+ Rev 1.95 27 Feb 1996 19:19:52 MA
+ chg: SS Chart geaendert
+
+ Rev 1.94 27 Feb 1996 17:11:38 MA
+ chg: Chart jetzt per Data-SS
+
+ Rev 1.93 09 Jan 1996 19:55:24 JP
+ InsertChart: TabellenName weitergeben; ueberfluessige Methoden entfernt
+
+ Rev 1.92 14 Dec 1995 23:01:28 JP
+ Filter Umstellung: ErrorHandling und Read/Write-Parameter
+
+ Rev 1.91 24 Nov 1995 16:58:58 OM
+ PCH->PRECOMPILED
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/table/tablepg.hxx b/sw/source/ui/table/tablepg.hxx
new file mode 100644
index 000000000000..9274a9c54f21
--- /dev/null
+++ b/sw/source/ui/table/tablepg.hxx
@@ -0,0 +1,263 @@
+/*************************************************************************
+ *
+ * $RCSfile: tablepg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _SWTABLEPG_HXX
+#define _SWTABLEPG_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _IMAGEBTN_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _ACTCTRL_HXX
+#include <actctrl.hxx>
+#endif
+#include "prcntfld.hxx"
+#include "swtypes.hxx"
+
+class SwTabCols;
+class SwWrtShell;
+class SwTableRep;
+
+struct TColumn
+{
+ SwTwips nWidth;
+ BOOL bVisible;
+};
+
+class SwFormatTablePage : public SfxTabPage
+{
+ GroupBox aOptionsGB;
+ FixedText aNameFT;
+ TableNameEdit aNameED;
+ FixedText aWidthFT;
+ PercentField aWidthMF;
+ CheckBox aRelWidthCB;
+
+ GroupBox aPosFrm;
+ RadioButton aFullBtn;
+ RadioButton aLeftBtn;
+ RadioButton aFromLeftBtn;
+ RadioButton aRightBtn;
+ RadioButton aCenterBtn;
+ RadioButton aFreeBtn;
+
+ GroupBox aDistGB;
+ FixedText aLeftFT;
+ PercentField aLeftMF;
+ FixedText aRightFT;
+ PercentField aRightMF;
+ FixedText aTopFT;
+ MetricField aTopMF;
+ FixedText aBottomFT;
+ MetricField aBottomMF;
+
+ SwTableRep* pTblData;
+ SwTwips nSaveWidth;
+ SwTwips nMinTableWidth;
+ USHORT nOldAlign;
+ BOOL bModified;
+ BOOL bFull:1;
+
+ void Init();
+ void ModifyHdl( Edit* pEdit );
+
+ DECL_LINK( AutoClickHdl, CheckBox * );
+ DECL_LINK( RelWidthClickHdl, CheckBox * );
+ DECL_LINK( RightModifyHdl, MetricField * );
+ DECL_LINK( UpHdl, MetricField * );
+ DECL_LINK( DownHdl, MetricField * );
+ DECL_LINK( LoseFocusHdl, MetricField * );
+
+public:
+ SwFormatTablePage( Window* pParent, const SfxItemSet& rSet );
+
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet);
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+ virtual void ActivatePage( const SfxItemSet& rSet );
+ virtual int DeactivatePage( SfxItemSet* pSet = 0 );
+};
+
+/*-------------------------------------------------------
+ TabPage Format/Tabelle/Spalten
+--------------------------------------------------------- */
+#define MET_FIELDS 6 //Anzahl der verwendeten MetricFields
+
+class SwTableColumnPage : public SfxTabPage
+{
+ CheckBox aModifyTableCB;
+ CheckBox aProportionalCB;
+ CheckBox aInverseCB;
+ FixedText aSpaceFT;
+ MetricField aSpaceED;
+
+ ImageButton aUpBtn;
+ FixedText aFT1;
+ PercentField aMF1;
+ FixedText aFT2;
+ PercentField aMF2;
+ FixedText aFT3;
+ PercentField aMF3;
+ FixedText aFT4;
+ PercentField aMF4;
+ FixedText aFT5;
+ PercentField aMF5;
+ FixedText aFT6;
+ PercentField aMF6;
+ ImageButton aDownBtn;
+ GroupBox aColGB;
+
+ SwTableRep* pTblData;
+ PercentField* pFieldArr[MET_FIELDS];
+ FixedText* pTextArr[MET_FIELDS];
+ SwTwips nTableWidth;
+ SwTwips nMinWidth;
+ USHORT nNoOfCols;
+ USHORT nNoOfVisibleCols;
+ //Breite merken, wenn auf autom. Ausrichtung gestellt wird
+ USHORT aValueTbl[MET_FIELDS];//primaere Zuordnung der MetricFields
+ BOOL bModified:1;
+ BOOL bModifyTbl:1;
+ BOOL bPercentMode:1;
+
+ void Init(BOOL bWeb);
+ DECL_LINK( AutoClickHdl, CheckBox * );
+ void ModifyHdl( PercentField* pEdit );
+ DECL_LINK( UpHdl, PercentField * );
+ DECL_LINK( DownHdl, PercentField * );
+ DECL_LINK( LoseFocusHdl, PercentField * );
+ DECL_LINK( ModeHdl, CheckBox * );
+ void UpdateCols( USHORT nAktPos );
+ SwTwips GetVisibleWidth(USHORT nPos);
+ void SetVisibleWidth(USHORT nPos, SwTwips nNewWidth);
+public:
+ SwTableColumnPage( Window* pParent, const SfxItemSet& rSet );
+ ~SwTableColumnPage();
+
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet);
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+ virtual void ActivatePage( const SfxItemSet& rSet );
+ virtual int DeactivatePage( SfxItemSet* pSet = 0 );
+
+};
+
+/*-----------------12.12.96 11.48-------------------
+ Textfluá
+--------------------------------------------------*/
+class SwTextFlowPage : public SfxTabPage
+{
+ GroupBox aFlowGB;
+ CheckBox aPgBrkCB;
+ RadioButton aPgBrkRB;
+ RadioButton aColBrkRB;
+ RadioButton aPgBrkBeforeRB;
+ RadioButton aPgBrkAfterRB;
+ CheckBox aPageCollCB;
+ ListBox aPageCollLB;
+ FixedText aPageNoFT;
+ NumericField aPageNoNF;
+ CheckBox aKeepCB;
+ CheckBox aSplitCB;
+ CheckBox aHeadLineCB;
+
+ GroupBox aVertOrientGB;
+ RadioButton aTopRB;
+ RadioButton aCenterRB;
+ RadioButton aBottomRB;
+
+ SwWrtShell* pShell;
+
+ BOOL bPageBreak;
+ BOOL bHtmlMode;
+
+
+ DECL_LINK( PageBreakHdl_Impl, CheckBox* );
+ DECL_LINK( ApplyCollClickHdl_Impl, CheckBox* );
+ DECL_LINK( PageBreakPosHdl_Impl, RadioButton* );
+ DECL_LINK( PageBreakTypeHdl_Impl, RadioButton* );
+
+
+ SwTextFlowPage( Window* pParent, const SfxItemSet& rSet );
+ ~SwTextFlowPage();
+
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet);
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+ void SetShell(SwWrtShell* pSh);
+
+ void DisablePageBreak();
+};
+
+#endif
diff --git a/sw/source/ui/table/tautofmt.cxx b/sw/source/ui/table/tautofmt.cxx
new file mode 100644
index 000000000000..08814d439c38
--- /dev/null
+++ b/sw/source/ui/table/tautofmt.cxx
@@ -0,0 +1,1888 @@
+/*************************************************************************
+ *
+ * $RCSfile: tautofmt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _ZFORLIST_HXX //autogen
+#include <svtools/zforlist.hxx>
+#endif
+#ifndef _SV_SYSTEM_HXX //autogen
+#include <vcl/system.hxx>
+#endif
+
+
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+#include "swtypes.hxx"
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "tblafmt.hxx"
+#include "tautofmt.hxx"
+#include "shellres.hxx"
+#include "tautofmt.hrc"
+
+#define FRAME_OFFSET 4
+
+//========================================================================
+
+class AutoFmtPreview : public Window
+{
+public:
+ AutoFmtPreview( Window* pParent, const ResId& rRes );
+ ~AutoFmtPreview();
+
+ void NotifyChange( const SwTableAutoFmt& rNewData );
+
+protected:
+ virtual void Paint( const Rectangle& rRect );
+
+private:
+ SwTableAutoFmt aCurData;
+ VirtualDevice aVD;
+ BOOL bFitWidth;
+ static BYTE 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 ( BYTE nIndex );
+ void DrawFrame ( BYTE nIndex );
+ void DrawString ( BYTE nIndex );
+ void MakeFont ( BYTE 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 ( BYTE nIndex, AutoFmtLine eLine,
+ SvxBorderLine& rLineD,
+ SvxBorderLine& rLineLT,
+ SvxBorderLine& rLineL,
+ SvxBorderLine& rLineLB,
+ SvxBorderLine& rLineRT,
+ SvxBorderLine& rLineR,
+ SvxBorderLine& rLineRB );
+};
+
+//========================================================================
+
+struct SwLineStruct
+{
+ short nLeft; //Breite der linken Linie
+ short nMiddle;//Breite des Zwischenraums
+ short nRight; //Breite der rechten Linie
+};
+
+void lcl_SwLinkLine( const SwLineStruct& dLine,
+ const SwLineStruct& ltLine,
+ const SwLineStruct& lLine,
+ const SwLineStruct& lbLine,
+ const SwLineStruct& rtLine,
+ const SwLineStruct& rLine,
+ const SwLineStruct& rbLine,
+ short* dxArr);
+
+//SC-Produkt!
+BOOL lcl_HasPriority( const SvxBorderLine* pThis,
+ const SvxBorderLine* pOther );
+
+//------------------------------------------------------------------------
+
+class SwStringInputDlg : public ModalDialog
+{
+public:
+ SwStringInputDlg( Window* pParent,
+ const String& rTitle,
+ const String& rEditTitle,
+ const String& rDefault );
+ ~SwStringInputDlg();
+
+ void GetInputString( String& rString ) const;
+
+private:
+ Edit aEdInput; // Edit erhaelt so den Focus
+ FixedText aFtEditTitle;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+};
+
+
+BYTE 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 };
+
+
+
+
+SwStringInputDlg::SwStringInputDlg( Window* pParent,
+ const String& rTitle,
+ const String& rEditTitle,
+ const String& rDefault ) :
+ ModalDialog ( pParent, SW_RES( DLG_SWDLG_STRINPUT ) ),
+ //
+ aEdInput ( this, SW_RES( ED_INPUT ) ),
+ aBtnOk ( this, SW_RES( BTN_OK ) ),
+ aBtnCancel ( this, SW_RES( BTN_CANCEL ) ),
+ aFtEditTitle ( this, SW_RES( FT_LABEL ) )
+{
+ SetText( rTitle );
+ aFtEditTitle.SetText( rEditTitle );
+ aEdInput.SetText( rDefault );
+ //-------------
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+void SwStringInputDlg::GetInputString( String& rString ) const
+{
+ rString = aEdInput.GetText();
+}
+
+
+__EXPORT SwStringInputDlg::~SwStringInputDlg()
+{
+}
+
+//========================================================================
+// AutoFormat-Dialog:
+
+
+SwAutoFormatDlg::SwAutoFormatDlg( Window* pParent, SwWrtShell* pWrtShell,
+ BOOL bSetAutoFormat, const SwTableAutoFmt* pSelFmt )
+ : SfxModalDialog( pParent, SW_RES( DLG_AUTOFMT_TABLE ) ),
+ //
+ aFtFormat ( this, SW_RES( FT_FORMAT ) ),
+ aLbFormat ( this, SW_RES( LB_FORMAT ) ),
+ aGbPreview ( this, SW_RES( GB_PREVIEW ) ),
+ pWndPreview ( new AutoFmtPreview( this, SW_RES( WND_PREVIEW ) ) ),
+ aBtnNumFormat ( this, SW_RES( BTN_NUMFORMAT ) ),
+ aBtnBorder ( this, SW_RES( BTN_BORDER ) ),
+ aBtnFont ( this, SW_RES( BTN_FONT ) ),
+ aBtnPattern ( this, SW_RES( BTN_PATTERN ) ),
+ aBtnAlignment ( this, SW_RES( BTN_ALIGNMENT ) ),
+ aGbFormat ( this, SW_RES( GB_FORMAT ) ),
+ aBtnOk ( this, SW_RES( BTN_OK ) ),
+ aBtnCancel ( this, SW_RES( BTN_CANCEL ) ),
+ aBtnHelp ( this, SW_RES( BTN_HELP ) ),
+ aBtnAdd ( this, SW_RES( BTN_ADD ) ),
+ aBtnRemove ( this, SW_RES( BTN_REMOVE ) ),
+ aBtnMore ( this, SW_RES( BTN_MORE ) ),
+ aBtnRename ( this, SW_RES( BTN_RENAME ) ),
+ aStrTitle ( SW_RES( STR_ADD_TITLE ) ),
+ aStrLabel ( SW_RES( STR_ADD_LABEL ) ),
+ aStrClose ( SW_RES( STR_BTN_CLOSE ) ),
+ aStrDelTitle ( SW_RES( STR_DEL_TITLE ) ),
+ aStrDelMsg ( SW_RES( STR_DEL_MSG ) ),
+ aStrRenameTitle ( SW_RES( STR_RENAME_TITLE ) ),
+ aStrInvalidFmt ( SW_RES( STR_INVALID_AFNAME )),
+ //
+ nIndex ( 0 ),
+ nDfltStylePos ( 0 ),
+ bCoreDataChanged( FALSE ),
+ bSetAutoFmt ( bSetAutoFormat ),
+ pShell ( pWrtShell )
+{
+ pTableTbl = new SwTableAutoFmtTbl;
+ pTableTbl->Load();
+
+ Init( pSelFmt );
+ //------------- >
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+
+__EXPORT SwAutoFormatDlg::~SwAutoFormatDlg()
+{
+ delete pWndPreview;
+
+ if( bCoreDataChanged )
+ pTableTbl->Save();
+ delete pTableTbl;
+}
+
+//------------------------------------------------------------------------
+
+
+void SwAutoFormatDlg::Init( const SwTableAutoFmt* pSelFmt )
+{
+ Link aLk( LINK( this, SwAutoFormatDlg, CheckHdl ) );
+ aBtnBorder.SetClickHdl( aLk );
+ aBtnFont.SetClickHdl( aLk );
+ aBtnPattern.SetClickHdl( aLk );
+ aBtnAlignment.SetClickHdl( aLk );
+ aBtnNumFormat.SetClickHdl( aLk );
+
+ aBtnAdd.SetClickHdl ( LINK( this, SwAutoFormatDlg, AddHdl ) );
+ aBtnRemove.SetClickHdl ( LINK( this, SwAutoFormatDlg, RemoveHdl ) );
+ aBtnRename.SetClickHdl ( LINK( this, SwAutoFormatDlg, RenameHdl ) );
+ aBtnOk.SetClickHdl ( LINK( this, SwAutoFormatDlg, OkHdl ) );
+ aLbFormat.SetSelectHdl( LINK( this, SwAutoFormatDlg, SelFmtHdl ) );
+
+ aBtnMore.AddWindow( &aBtnNumFormat );
+ aBtnMore.AddWindow( &aBtnBorder );
+ aBtnMore.AddWindow( &aBtnFont );
+ aBtnMore.AddWindow( &aBtnPattern );
+ aBtnMore.AddWindow( &aBtnAlignment );
+ aBtnMore.AddWindow( &aGbFormat );
+ aBtnMore.AddWindow( &aBtnRename );
+
+ aBtnAdd.Enable( bSetAutoFmt );
+
+ nIndex = 0;
+ if( !bSetAutoFmt )
+ {
+ // dann muss die Liste um den Eintrag <Keins> erweitert werden.
+ aLbFormat.InsertEntry( ViewShell::GetShellRes()->aStrNone );
+ nDfltStylePos = 1;
+ nIndex = 255;
+ }
+
+ for( BYTE i = 0, nCount = (BYTE)pTableTbl->Count(); i < nCount; i++ )
+ {
+ SwTableAutoFmt* pFmt = (*pTableTbl)[ i ];
+ aLbFormat.InsertEntry( pFmt->GetName() );
+ if( pSelFmt && pFmt->GetName() == pSelFmt->GetName() )
+ nIndex = i;
+ }
+
+ aLbFormat.SelectEntryPos( 255 != nIndex ? (nDfltStylePos + nIndex) : 0 );
+ SelFmtHdl( 0 );
+}
+
+//------------------------------------------------------------------------
+
+
+void SwAutoFormatDlg::UpdateChecks( const SwTableAutoFmt& rFmt, BOOL bEnable )
+{
+ aBtnNumFormat.Enable( bEnable );
+ aBtnNumFormat.Check( rFmt.IsValueFormat() );
+
+ aBtnBorder.Enable( bEnable );
+ aBtnBorder.Check( rFmt.IsFrame() );
+
+ aBtnFont.Enable( bEnable );
+ aBtnFont.Check( rFmt.IsFont() );
+
+ aBtnPattern.Enable( bEnable );
+ aBtnPattern.Check( rFmt.IsBackground() );
+
+ aBtnAlignment.Enable( bEnable );
+ aBtnAlignment.Check( rFmt.IsJustify() );
+}
+
+void SwAutoFormatDlg::FillAutoFmtOfIndex( SwTableAutoFmt*& rToFill ) const
+{
+ if( 255 != nIndex )
+ {
+ if( rToFill )
+ *rToFill = *(*pTableTbl)[ nIndex ];
+ else
+ rToFill = new SwTableAutoFmt( *(*pTableTbl)[ nIndex ] );
+ }
+ else if( rToFill )
+ delete rToFill, rToFill = 0;
+}
+
+
+/*------------------------------------------------------------------------
+ Handler:
+ ---------*/
+
+
+IMPL_LINK( SwAutoFormatDlg, CheckHdl, Button *, pBtn )
+{
+ SwTableAutoFmtPtr pData = (*pTableTbl)[nIndex];
+ BOOL bCheck = ((CheckBox*)pBtn)->IsChecked(), bDataChgd = TRUE;
+
+ if( pBtn == &aBtnNumFormat )
+ pData->SetValueFormat( bCheck );
+ else if ( pBtn == &aBtnBorder )
+ pData->SetFrame( bCheck );
+ else if ( pBtn == &aBtnFont )
+ pData->SetFont( bCheck );
+ else if ( pBtn == &aBtnPattern )
+ pData->SetBackground( bCheck );
+ else if ( pBtn == &aBtnAlignment )
+ pData->SetJustify( bCheck );
+// else if ( pBtn == &aBtnAdjust )
+// pData->SetIncludeWidthHeight( bCheck );
+ else
+ bDataChgd = FALSE;
+
+ if( bDataChgd )
+ {
+ if( !bCoreDataChanged )
+ {
+ aBtnCancel.SetText( aStrClose );
+ bCoreDataChanged = TRUE;
+ }
+
+ pWndPreview->NotifyChange( *pData );
+ }
+ return 0;
+}
+
+/*------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwAutoFormatDlg, AddHdl, void *, EMPTYARG )
+{
+ BOOL bOk = FALSE, bFmtInserted = FALSE;
+ while( !bOk )
+ {
+ SwStringInputDlg* pDlg = new SwStringInputDlg( this,
+ aStrTitle,
+ aStrLabel,
+ aEmptyStr );
+ if( RET_OK == pDlg->Execute() )
+ {
+ String aFormatName;
+ pDlg->GetInputString( aFormatName );
+
+ if( aFormatName.Len() > 0 )
+ {
+ for( USHORT n = 0; n < pTableTbl->Count(); ++n )
+ if( (*pTableTbl)[n]->GetName() == aFormatName )
+ break;
+
+ if( n >= pTableTbl->Count() )
+ {
+ // Format mit dem Namen noch nicht vorhanden, also
+ // aufnehmen
+ SwTableAutoFmtPtr pNewData = new
+ SwTableAutoFmt( aFormatName );
+ pShell->GetTableAutoFmt( *pNewData );
+
+ // Sortiert einfuegen!!
+ for( n = 1; n < pTableTbl->Count(); ++n )
+ if( (*pTableTbl)[ n ]->GetName() > aFormatName )
+ break;
+
+ pTableTbl->Insert( pNewData, n );
+ aLbFormat.InsertEntry( aFormatName, nDfltStylePos + n );
+ aLbFormat.SelectEntryPos( nDfltStylePos + n );
+ bFmtInserted = TRUE;
+ aBtnAdd.Enable( FALSE );
+ if ( !bCoreDataChanged )
+ {
+ aBtnCancel.SetText( aStrClose );
+ bCoreDataChanged = TRUE;
+ }
+
+ SelFmtHdl( 0 );
+ bOk = TRUE;
+ }
+ }
+
+ if( !bFmtInserted )
+ {
+ bOk = RET_CANCEL == ErrorBox( this,
+ WinBits( WB_OK_CANCEL | WB_DEF_OK),
+ aStrInvalidFmt
+ ).Execute();
+ }
+ }
+ else
+ bOk = TRUE;
+ delete pDlg;
+ }
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( SwAutoFormatDlg, RemoveHdl, void *, EMPTYARG )
+{
+ String aMessage = aStrDelMsg ;
+ aMessage.AppendAscii("\n\n");
+ aMessage += aLbFormat.GetSelectEntry() ;
+ aMessage += '\n';
+
+ MessBox* pBox = new MessBox( this, WinBits( WB_OK_CANCEL ),
+ aStrDelTitle, aMessage);
+
+ if ( pBox->Execute() == RET_OK )
+ {
+ aLbFormat.RemoveEntry( nDfltStylePos + nIndex );
+ aLbFormat.SelectEntryPos( nDfltStylePos + nIndex-1 );
+
+ pTableTbl->DeleteAndDestroy( nIndex );
+ nIndex--;
+
+ if( !nIndex )
+ {
+ aBtnRemove.Enable(FALSE);
+ aBtnRename.Enable(FALSE);
+ }
+
+ if( !bCoreDataChanged )
+ {
+ aBtnCancel.SetText( aStrClose );
+ bCoreDataChanged = TRUE;
+ }
+ }
+ delete pBox;
+
+ SelFmtHdl( 0 );
+
+ return 0;
+}
+
+IMPL_LINK( SwAutoFormatDlg, RenameHdl, void *, EMPTYARG )
+{
+ BOOL bOk = FALSE;
+ while( !bOk )
+ {
+ SwStringInputDlg* pDlg = new SwStringInputDlg( this,
+ aStrRenameTitle, aLbFormat.GetSelectEntry(),
+ aEmptyStr );
+ if( pDlg->Execute() == RET_OK )
+ {
+ BOOL bFmtRenamed = FALSE;
+ String aFormatName;
+ pDlg->GetInputString( aFormatName );
+
+ if ( aFormatName.Len() > 0 )
+ {
+ for( USHORT n = 0; n < pTableTbl->Count(); ++n )
+ if ((*pTableTbl)[n]->GetName() == aFormatName)
+ break;
+
+ if( n >= pTableTbl->Count() )
+ {
+ // Format mit dem Namen noch nicht vorhanden, also
+ // umbenennen
+
+ aLbFormat.RemoveEntry( nDfltStylePos + nIndex );
+ SwTableAutoFmtPtr p = (*pTableTbl)[ nIndex ];
+ pTableTbl->Remove( nIndex );
+
+ p->SetName( aFormatName );
+
+ // Sortiert einfuegen!!
+ for( n = 1; n < pTableTbl->Count(); ++n )
+ if( (*pTableTbl)[ n ]->GetName() > aFormatName )
+ break;
+
+ pTableTbl->Insert( p, n );
+ aLbFormat.InsertEntry( aFormatName, nDfltStylePos + n );
+ aLbFormat.SelectEntryPos( nDfltStylePos + n );
+
+ 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),
+ aStrInvalidFmt
+ ).Execute();
+ }
+ }
+ else
+ bOk = TRUE;
+ delete pDlg;
+ }
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( SwAutoFormatDlg, SelFmtHdl, void *, EMPTYARG )
+{
+ BOOL bBtnEnable = FALSE;
+ BYTE nSelPos = (BYTE) aLbFormat.GetSelectEntryPos(), nOldIdx = nIndex;
+ if( nSelPos >= nDfltStylePos )
+ {
+ nIndex = nSelPos - nDfltStylePos;
+ pWndPreview->NotifyChange( *(*pTableTbl)[nIndex] );
+ bBtnEnable = 0 != nIndex;
+ UpdateChecks( *(*pTableTbl)[nIndex], TRUE );
+ }
+ else
+ {
+ nIndex = 255;
+
+ SwTableAutoFmt aTmp( ViewShell::GetShellRes()->aStrNone );
+ aTmp.SetFont( FALSE );
+ aTmp.SetJustify( FALSE );
+ aTmp.SetFrame( FALSE );
+ aTmp.SetBackground( FALSE );
+ aTmp.SetValueFormat( FALSE );
+ aTmp.SetWidthHeight( FALSE );
+
+ if( nOldIdx != nIndex )
+ pWndPreview->NotifyChange( aTmp );
+ UpdateChecks( aTmp, FALSE );
+ }
+
+ aBtnRemove.Enable( bBtnEnable );
+ aBtnRename.Enable( bBtnEnable );
+
+ return 0;
+}
+//------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( SwAutoFormatDlg, OkHdl, Button *, EMPTYARG )
+{
+ if( bSetAutoFmt )
+ pShell->SetTableAutoFmt( *(*pTableTbl)[ nIndex ] );
+ EndDialog( RET_OK );
+ return TRUE;
+}
+IMPL_LINK_INLINE_END( SwAutoFormatDlg, OkHdl, Button *, EMPTYARG )
+
+//========================================================================
+// AutoFmtPreview
+
+//------------------------------------------------------------------------
+
+AutoFmtPreview::AutoFmtPreview( Window* pParent, const ResId& rRes ) :
+ Window ( pParent, rRes ),
+ aVD ( *this ),
+ aCurData ( aEmptyStr ),
+ bFitWidth ( FALSE ),
+ aStrJan ( SW_RES( STR_JAN ) ),
+ aStrFeb ( SW_RES( STR_FEB ) ),
+ aStrMar ( SW_RES( STR_MAR ) ),
+ aStrNorth ( SW_RES( STR_NORTH ) ),
+ aStrMid ( SW_RES( STR_MID ) ),
+ aStrSouth ( SW_RES( STR_SOUTH ) ),
+ aStrSum ( SW_RES( 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( LANGUAGE_SYSTEM ) )
+{
+ Init();
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT AutoFmtPreview::~AutoFmtPreview()
+{
+ for ( USHORT i=0; i<=35; i++ )
+ {
+ delete aLinePtrArray[i];
+ }
+ delete pNumFmt;
+}
+
+//------------------------------------------------------------------------
+
+void lcl_AssignLine( SvxBorderLine& dest,
+ const SvxBorderLine* src )
+{
+ if( src )
+ {
+ dest.SetColor( src->GetColor() );
+ dest.SetOutWidth( src->GetOutWidth() );
+ dest.SetInWidth( src->GetInWidth() );
+ dest.SetDistance( src->GetDistance() );
+ }
+ else
+ {
+ dest.SetColor( Color( COL_WHITE ) );
+ dest.SetOutWidth ( 0 );
+ dest.SetInWidth ( 0 );
+ dest.SetDistance ( 0 );
+ }
+}
+
+//------------------------------------------------------------------------
+
+void lcl_GetLineStruct( SwLineStruct& 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 ( lcl_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 ( lcl_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 ( lcl_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 ( lcl_HasPriority( pDrawLine, &rLine ) )
+ lcl_AssignLine( rLine, pDrawLine );
+ }
+ break;
+ }
+
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::GetLines( BYTE 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);
+ }
+
+ 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 )
+{
+ SwLineStruct dLine;
+ SwLineStruct ltLine;
+ SwLineStruct lLine;
+ SwLineStruct lbLine;
+ SwLineStruct rtLine;
+ SwLineStruct rLine;
+ SwLineStruct 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 )
+ {
+ Color oldColor = aVD.GetLineColor();
+ aVD.SetLineColor( Color(COL_TRANSPARENT) );
+ Color oldFillColor = aVD.GetFillColor();
+ aVD.SetFillColor( rLineD.GetColor() );
+ USHORT nHeight = dLine.nLeft + dLine.nMiddle + dLine.nRight;
+ Point from2 = from;
+ Point to2 = to;
+
+ lcl_SwLinkLine( 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 ) );
+ }
+ }
+ aVD.SetFillColor( oldFillColor );
+ aVD.SetLineColor( oldColor );
+ }
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::DrawFrame( BYTE nIndex )
+{
+ //----------------------
+ // 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( BYTE nIndex, Font& rFont )
+{
+ const SwBoxAutoFmt& rBoxFmt = aCurData.GetBoxFmt( nIndex );
+
+ rFont = GetFont();
+
+ const SvxFontItem& rFontItem = rBoxFmt.GetFont();
+ rFont.SetFamily ( rFontItem.GetFamily() );
+ rFont.SetName ( rFontItem.GetFamilyName() );
+ rFont.SetStyleName ( rFontItem.GetStyleName() );
+ rFont.SetCharSet ( rFontItem.GetCharSet() );
+ rFont.SetPitch ( rFontItem.GetPitch() );
+ rFont.SetWeight ( (FontWeight)rBoxFmt.GetWeight().GetValue() );
+ rFont.SetUnderline ( (FontUnderline)rBoxFmt.GetUnderline().GetValue() );
+ rFont.SetStrikeout ( (FontStrikeout)rBoxFmt.GetCrossedOut().GetValue() );
+ rFont.SetItalic ( (FontItalic)rBoxFmt.GetPosture().GetValue() );
+ rFont.SetOutline ( rBoxFmt.GetContour().GetValue() );
+ rFont.SetShadow ( rBoxFmt.GetShadowed().GetValue() );
+ rFont.SetColor ( rBoxFmt.GetColor().GetValue() );
+
+ rFont.SetSize ( Size( rFont.GetSize().Width(), 10 ) );
+ rFont.SetTransparent ( TRUE );
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::DrawString( BYTE nIndex )
+{
+ //------------------------
+ // Ausgabe des Zelltextes:
+ //------------------------
+ ULONG nNum;
+ double nVal;
+ String cellString;
+ 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 MAKENUMSTR;
+ case 17:
+ case 7: nVal = nIndex;
+ nNum = 6;
+ goto MAKENUMSTR;
+ case 11:
+ case 12:
+ case 13: nVal = nIndex;
+ nNum = 12 == nIndex ? 10 : 9;
+ goto MAKENUMSTR;
+
+ case 9: nVal = 21; nNum = 7; goto MAKENUMSTR;
+ case 14: nVal = 36; nNum = 11; goto MAKENUMSTR;
+ case 19: nVal = 51; nNum = 7; goto MAKENUMSTR;
+ case 21: nVal = 33; nNum = 13; goto MAKENUMSTR;
+ case 22: nVal = 36; nNum = 14; goto MAKENUMSTR;
+ case 23: nVal = 39; nNum = 13; goto MAKENUMSTR;
+ case 24: nVal = 108; nNum = 15; goto MAKENUMSTR;
+MAKENUMSTR:
+ if( aCurData.IsValueFormat() )
+ {
+ String sFmt; LanguageType eLng, eSys;
+ aCurData.GetBoxFmt( (BYTE)nNum ).GetValueFormat( sFmt, eLng, eSys );
+
+ ULONG nKey = 0;
+ if ( eLng == LANGUAGE_SYSTEM && eSys != ::GetSystemLanguage() )
+ {
+ // #53381# wenn System beim Speichern etwas anderes war,
+ // muss konvertiert werden (geht nur mit eingebauten Formaten)
+ ULONG nOrig = pNumFmt->GetEntryKey( sFmt, eSys );
+ if ( nOrig != NUMBERFORMAT_ENTRY_NOT_FOUND )
+ nKey = pNumFmt->GetFormatForLanguageIfBuiltIn( nOrig, ::GetSystemLanguage() );
+ }
+ else // sonst einfach suchen oder anlegen
+ {
+ nKey = pNumFmt->GetEntryKey( sFmt, eLng );
+ if( NUMBERFORMAT_ENTRY_NOT_FOUND == nKey )
+ {
+ xub_StrLen nCheckPos;
+ short nType;
+ pNumFmt->PutEntry( sFmt, nCheckPos, nType, nKey, eLng );
+ }
+ }
+ Color* pDummy;
+ pNumFmt->GetOutputString( nVal, nKey, cellString, &pDummy );
+ }
+ else
+ cellString = (USHORT)nVal;
+ break;
+
+ }
+
+ if( cellString.Len() )
+ {
+ Font oldFont;
+ Size aStrSize;
+ BYTE nFmtIndex = (BYTE) aFmtMap[nIndex];
+ Rectangle& cellRect = aCellArray[nIndex];
+ Point aPos = aCellArray[nIndex].TopLeft();
+ USHORT nRightX = 0;
+// BOOL bJustify = aCurData.IsJustify();
+// ScHorJustifyAttr aHorJustifyItem;
+// CellHorJustify eJustification;
+
+ Size theMaxStrSize( cellRect.GetWidth() - FRAME_OFFSET,
+ cellRect.GetHeight() - FRAME_OFFSET );
+ if( aCurData.IsFont() )
+ {
+ Font aFont;
+ MakeFont( nFmtIndex, aFont );
+ oldFont = aVD.GetFont();
+ aVD.SetFont( aFont );
+ }
+ aStrSize = Size(aVD.GetTextWidth( cellString ), aVD.GetTextHeight());
+
+ if( aCurData.IsFont() &&
+ 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 = Size(aVD.GetTextWidth( cellString ), 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 = Size(aVD.GetTextWidth( cellString ), aVD.GetTextHeight());
+ }
+
+ nRightX = (USHORT)( cellRect.GetWidth()
+ - aStrSize.Width()
+ - FRAME_OFFSET );
+ //-------------
+ // Ausrichtung:
+ //-------------
+ /* if ( bJustify )
+ {
+ aCurData.GetHorJustify( nFmtIndex, aHorJustifyItem );
+ eJustification = (CellHorJustify)aHorJustifyItem.GetValue();
+ }
+ else
+ {
+ eJustification = SC_HOR_JUSTIFY_STANDARD;
+ }*/
+
+ //-----------------------------
+ // vertikal (immer zentrieren):
+ //-----------------------------
+ aPos.Y() += (nRowHeight - (USHORT)aStrSize.Height()) / 2;
+
+ //-----------
+ // horizontal
+ //-----------
+/* if ( eJustification != SC_HOR_JUSTIFY_STANDARD )*/
+ if (aCurData.IsJustify())
+ {
+ USHORT nHorPos = (USHORT)
+ ((cellRect.GetWidth()-aStrSize.Width())/2);
+ const SvxAdjustItem& rAdj = aCurData.GetBoxFmt(nFmtIndex).GetAdjust();
+ switch ( rAdj.GetAdjust() )
+ {
+ case SVX_ADJUST_LEFT:
+ aPos.X() += FRAME_OFFSET;
+ break;
+ case SVX_ADJUST_RIGHT:
+ aPos.X() += nRightX;
+ break;
+ default:
+ aPos.X() += nHorPos;
+ 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 ( aCurData.IsFont() )
+ aVD.SetFont( oldFont );
+ }
+}
+
+#undef FRAME_OFFSET
+
+//------------------------------------------------------------------------
+
+
+void AutoFmtPreview::DrawBackground( BYTE nIndex )
+{
+ SvxBrushItem aBrushItem( aCurData.GetBoxFmt( aFmtMap[nIndex])
+ .GetBackground() );
+ Color oldColor = aVD.GetLineColor();
+ aVD.SetLineColor( Color(COL_TRANSPARENT) );
+ Color oldFillColor = aVD.GetFillColor();
+ aVD.SetFillColor( aBrushItem.GetColor() );
+ //-----------------------
+ aVD.DrawRect( aCellArray[nIndex] );
+ //-----------------------
+ aVD.SetLineColor( oldColor );
+ aVD.SetFillColor( oldFillColor );
+}
+
+//------------------------------------------------------------------------
+
+
+void AutoFmtPreview::PaintCells()
+{
+ BYTE i = 0;
+
+ //---------------
+ // 1. Hintergrund
+ //---------------
+ if ( aCurData.IsBackground() )
+ {
+ for ( i=0; i<=24; i++ )
+ {
+ DrawBackground( i );
+ }
+ }
+
+ //----------
+ // 2. Rahmen
+ //----------
+ if ( aCurData.IsFrame() )
+ {
+ 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.
+ //----------------------------------------------------
+
+ SvxBoxItem aFrameItem;
+ BYTE nRow;
+
+ for ( nRow=0; nRow<=4; nRow++ )
+ {
+ USHORT nLine;
+ BYTE nCell;
+ BYTE nFirst = (nRow * 5);
+ BYTE nLast = nFirst+4;
+
+ for ( nCell=nFirst; nCell<=nLast; nCell++ )
+ {
+ nLine = nCell + 8 + ((nCell/5)*2);
+ aFrameItem = aCurData.GetBoxFmt( aFmtMap[nCell]).GetBox();
+ *(aLinePtrArray[nLine]) = aFrameItem;
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+
+void AutoFmtPreview::NotifyChange( const SwTableAutoFmt& rNewData )
+{
+ aCurData = rNewData;
+ bFitWidth = aCurData.IsJustify();//TRUE; //???
+ CalcCellArray( bFitWidth );
+ CalcLineMap();
+ DoPaint( Rectangle( Point(0,0), GetSizePixel() ) );
+}
+
+//------------------------------------------------------------------------
+
+
+void AutoFmtPreview::DoPaint( const Rectangle& rRect )
+{
+ Bitmap thePreview;
+ Point aCenterPos;
+ Size theWndSize = GetSizePixel();
+ Size thePrevSize;
+ Color oldColor;
+ Font aFont;
+
+ aFont = aVD.GetFont();
+ aFont.SetTransparent( TRUE );
+
+ aVD.SetFont ( aFont );
+ aVD.SetLineColor ( Color(COL_TRANSPARENT));
+ 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 );
+ oldColor = aVD.GetLineColor();
+ aVD.SetLineColor( Color( COL_BLACK ) );
+ aVD.DrawRect( Rectangle( Point(0,0), theWndSize ) );
+ SetLineColor( oldColor );
+ 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 );
+}
+//------------------------------------------------------------------------
+
+
+BOOL lcl_HasPriority( const SvxBorderLine* pThis,
+ const SvxBorderLine* pOther )
+{
+
+ if (!pThis)
+ return FALSE;
+ if (!pOther)
+ return TRUE;
+
+ USHORT nThisSize = pThis->GetOutWidth() + pThis->GetDistance() + pThis->GetInWidth();
+ USHORT nOtherSize = pOther->GetOutWidth() + pOther->GetDistance() + pOther->GetInWidth();
+
+ if (nThisSize > nOtherSize)
+ return TRUE;
+ else if (nThisSize < nOtherSize)
+ return FALSE;
+ else
+ {
+ if ( pOther->GetInWidth() && !pThis->GetInWidth() )
+ return TRUE;
+ else if ( pThis->GetInWidth() && !pOther->GetInWidth() )
+ return FALSE;
+ else
+ {
+ return TRUE; //! ???
+ }
+ }
+}
+
+void lcl_SwLinkLine(const SwLineStruct& dLine,
+ const SwLineStruct& ltLine,
+ const SwLineStruct& lLine,
+ const SwLineStruct& lbLine,
+ const SwLineStruct& rtLine,
+ const SwLineStruct& rLine,
+ const SwLineStruct& rbLine,
+ short* dxArr)
+{
+ short nDx;
+ short nDxDx;
+ short nltW = ltLine.nLeft + ltLine.nMiddle + ltLine.nRight;
+ short nlbW = lbLine.nLeft + lbLine.nMiddle + lbLine.nRight;
+ short nrtW = rtLine.nLeft + rtLine.nMiddle + rtLine.nRight;
+ short nrbW = rbLine.nLeft + rbLine.nMiddle + rbLine.nRight;
+ if (dLine.nRight == 0) // einfache Linie
+ {
+ dxArr[1] = 0;
+ dxArr[3] = 0;
+
+ // Linker Teil
+ if ((lLine.nLeft != 0) && (lLine.nRight == 0)) // links einfache Linie
+ dxArr[0] = 0;
+ else
+ {
+ nDx = Max(nltW, nlbW) / 2;
+ nDxDx = (Max(nltW, nlbW) + 1) % 2;
+ if ((nDx == 0) || (ltLine.nRight == 0) || (lbLine.nRight == 0))
+ {
+ if (lLine.nLeft == 0)
+ dxArr[0] = nDxDx - nDx;
+ else
+ dxArr[0] = nDxDx + nDx;
+ }
+ else
+ dxArr[0] = nDxDx + nDx;
+ }
+
+ // Rechter Teil
+ if ((rLine.nLeft != 0) && (rLine.nRight == 0)) // rechts keine Linie
+ dxArr[2] = 0;
+ else
+ {
+ nDx = Max(nrtW, nrbW) / 2;
+ if ((nDx == 0) || (rtLine.nRight == 0) || (rbLine.nRight == 0))
+ {
+ if (rLine.nLeft == 0)
+ dxArr[2] = nDx;
+ else
+ dxArr[2] = -nDx;
+ }
+ else
+ dxArr[2] = -nDx;
+ }
+ }
+ else
+ {
+ // Linker oberer Teil
+ if ((nltW == 0) || (ltLine.nRight == 0)) // Links oben keine oder einfache Linie
+ {
+ nDx = (nlbW + 1) / 2;
+ nDxDx = (nlbW + 1) % 2;
+ if (nDx == 0)
+ dxArr[0] = nDxDx + nDx;
+ else
+ dxArr[0] = nDxDx - (nlbW / 2) + ltLine.nLeft;
+ }
+ else
+ {
+ nDx = (nltW + 1) / 2;
+ nDxDx = (nltW + 1) % 2;
+ if (nDx == 0)
+ dxArr[0] = nDxDx - nDx;
+ else
+ dxArr[0] = nDxDx + nDx - ltLine.nRight;
+ }
+ // Linker unterer Teil
+ if ((nlbW == 0) || (lbLine.nRight == 0)) // Links unten keine oder einfache Linie
+ {
+ nDx = (nltW + 1) / 2;
+ nDxDx = (nltW + 1) % 2;
+ if (nDx == 0)
+ dxArr[1] = nDxDx + nDx;
+ else
+ dxArr[1] = nDxDx - (nltW / 2) + lbLine.nLeft;
+ }
+ else
+ {
+ nDx = (nlbW + 1) / 2;
+ nDxDx = (nlbW + 1) % 2;
+ if (nDx == 0)
+ dxArr[1] = nDxDx - nDx;
+ else
+ dxArr[1] = nDxDx + nDx - lbLine.nRight;
+ }
+
+ // Rechter oberer Teil
+ if ((nrtW == 0) || (rtLine.nRight == 0)) // Rechts oben keine oder einfache Linie
+ {
+ nDx = (nrbW + 1) / 2;
+ if (nDx == 0)
+ dxArr[2] = -nDx;
+ else
+ dxArr[2] = (nrbW / 2) - rtLine.nLeft;
+ }
+ else
+ {
+ nDx = (nrtW + 1) / 2;
+ if (nDx == 0)
+ dxArr[2] = nDx;
+ else
+ dxArr[2] = -nDx + rtLine.nLeft;
+ }
+ // Rechter unterer Teil
+ if ((nrbW == 0) || (rbLine.nRight == 0)) // Rechts unten keine oder einfache Linie
+ {
+ nDx = (nrtW + 1) / 2;
+ if (nDx == 0)
+ dxArr[3] = -nDx;
+ else
+ dxArr[3] = (nrtW / 2) - rbLine.nLeft;
+ }
+ else
+ {
+ nDx = (nrbW + 1) / 2;
+ if (nDx == 0)
+ dxArr[3] = nDx;
+ else
+ dxArr[3] = -nDx + rbLine.nLeft;
+ }
+ }
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.46 2000/09/18 16:06:09 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.45 2000/06/08 09:48:50 os
+ using UCB
+
+ Revision 1.44 2000/05/16 17:31:14 jp
+ Changes for Unicode
+
+ Revision 1.43 2000/05/16 14:32:29 jp
+ Changes for Unicode
+
+ Revision 1.42 2000/04/19 11:22:12 os
+ UNICODE
+
+ Revision 1.41 2000/03/03 15:17:03 os
+ StarView remainders removed
+
+ Revision 1.40 2000/02/11 14:59:03 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.39 1998/09/29 08:15:38 NN
+ #53381# wenn noetig, Zahlformat in Sprache konvertieren
+
+
+ Rev 1.38 29 Sep 1998 10:15:38 NN
+ #53381# wenn noetig, Zahlformat in Sprache konvertieren
+
+ Rev 1.37 07 Jul 1998 13:20:36 JP
+ Bug #52273#: Anzeige des Nummernformates berichtigt
+
+ Rev 1.36 02 Jun 1998 10:37:40 JP
+ TabellenAutoFormat: Load/Save ohne Stream - erzeugen diesen selbst
+
+ Rev 1.35 29 May 1998 19:07:08 JP
+ aufgeraeumnt
+
+ Rev 1.34 14 May 1998 15:15:44 JP
+ neu: Numberformat vom Boxen unterstuetzen
+
+ Rev 1.33 12 May 1998 23:42:46 JP
+ neu: InserTable/TextToTable mit optionalen AutoFormat
+
+ Rev 1.32 29 Apr 1998 07:59:08 OS
+ sAutoTblFmtName allg. verfuegbar
+
+ Rev 1.31 24 Nov 1997 15:52:20 MA
+ includes
+
+ Rev 1.30 12 Sep 1997 10:40:16 OS
+ ITEMID_* definiert
+
+ Rev 1.29 05 Sep 1997 12:20:02 MH
+ chg: header
+
+ Rev 1.28 01 Sep 1997 13:17:26 OS
+ DLL-Umstellung
+
+ Rev 1.27 23 May 1997 10:10:02 OS
+ Ableitung von SfxModalDialog
+
+ Rev 1.26 02 May 1997 20:28:36 NF
+ includes...
+
+ Rev 1.25 23 Apr 1997 14:29:18 OS
+ ResId const
+
+ Rev 1.24 17 Apr 1997 23:22:06 JP
+ Umbenennen von AutoFormaten
+
+ Rev 1.23 14 Feb 1997 11:54:58 JP
+ Bug #35729#: sortiert einfuegen
+
+ Rev 1.22 09 Feb 1997 19:00:52 JP
+ Bug #35729#, #35740#: Formate sortiert, Ueberschreibmeldung
+
+ Rev 1.21 11 Nov 1996 11:20:40 MA
+ ResMgr
+
+ Rev 1.20 02 Oct 1996 19:06:06 MA
+ Umstellung Enable/Disable
+
+ Rev 1.19 23 Sep 1996 18:44:50 mk
+ includes fuer Unix raus
+
+ Rev 1.18 21 Mar 1996 14:08:18 OM
+ Umstellung 311
+
+ Rev 1.17 06 Feb 1996 15:21:28 JP
+ Link Umstellung 305
+
+ Rev 1.16 01 Dec 1995 12:30:02 sv
+ SwTableAutoFmt* -> SwTableAutoFmtPtr
+
+ Rev 1.15 24 Nov 1995 16:59:00 OM
+ PCH->PRECOMPILED
+
+ Rev 1.14 13 Nov 1995 10:59:22 OM
+ static entfernt
+
+ Rev 1.13 08 Nov 1995 13:34:36 OS
+ Change => Set
+
+ Rev 1.12 31 Oct 1995 18:41:20 OM
+ GetActive... entfernt
+
+ Rev 1.11 21 Aug 1995 08:56:16 mk
+ hintids.hxx und svxitems.hxx fuer UNX wieder included (MDA)
+
+ Rev 1.10 09 Aug 1995 21:57:10 ER
+ ! static data _vor_ seg_eofglobals
+
+ Rev 1.9 24 Jul 1995 11:21:00 JP
+ aufgeraeumt, CTOR/DTOR: Autoformattabelle ist nicht mehr static, sondern wird geladen und ggfs. gespeichert
+
+ Rev 1.8 20 Jul 1995 19:40:36 JP
+ Autoformatdatei umbenannt und wird jetzt im Config-Verzeichnis erwartet
+
+ Rev 1.7 27 Apr 1995 10:07:54 OS
+ Reihenfolge im Ctor
+
+ Rev 1.6 20 Apr 1995 17:02:22 OS
+ Delete-Message
+
+ Rev 1.5 19 Apr 1995 18:07:38 OS
+ BugFix Delete-Box
+
+ Rev 1.4 06 Mar 1995 06:05:28 JP
+ neu: mit Laden und Speichern
+
+ Rev 1.3 06 Mar 1995 05:00:18 JP
+ jetzt auch mit Umrandung
+
+ Rev 1.2 06 Mar 1995 04:08:30 JP
+ Optimierung
+
+ Rev 1.1 06 Mar 1995 00:54:48 OS
+ funktioniert fast
+
+ Rev 1.0 05 Mar 1995 19:34:02 OS
+ Initial revision.
+
+ Rev 1.2 04 Mar 1995 23:29:36 ER
+ add: hintids, svxitems
+
+ Rev 1.1 04 Mar 1995 20:52:58 OS
+ ein wenig weniger Kommentar
+
+ Rev 1.0 04 Mar 1995 15:00:08 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sw/source/ui/table/tautofmt.hrc b/sw/source/ui/table/tautofmt.hrc
new file mode 100644
index 000000000000..5c1f7d54d81c
--- /dev/null
+++ b/sw/source/ui/table/tautofmt.hrc
@@ -0,0 +1,113 @@
+/*************************************************************************
+ *
+ * $RCSfile: tautofmt.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 SW_TAUTOFMT_HRC
+#define SW_TAUTOFMT_HRC
+
+#include "table.hrc"
+// 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 BTN_RENAME 107
+#define FT_LABEL 110
+#define GB_FRAME 111
+#define STR_BTN_CLOSE 200
+
+// 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 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_INVALID_AFNAME 104
+#define STR_RENAME_TITLE 105
+ // 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
+
+
+#define ED_INPUT 1
+
+#endif
diff --git a/sw/source/ui/table/tautofmt.src b/sw/source/ui/table/tautofmt.src
new file mode 100644
index 000000000000..9fad4591e6b6
--- /dev/null
+++ b/sw/source/ui/table/tautofmt.src
@@ -0,0 +1,875 @@
+/*************************************************************************
+ *
+ * $RCSfile: tautofmt.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "tautofmt.hrc"
+#include "helpid.h"
+ModalDialog DLG_AUTOFMT_TABLE
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ HelpID = HID_AUTOFMT_TABLE ;
+ Size = MAP_APPFONT ( 312 , 120 ) ;
+ 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 ;
+ FixedText FT_FORMAT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "~Format" ;
+ Text [ ENGLISH ] = "~Format" ;
+ Text [ norwegian ] = "~Format" ;
+ Text [ italian ] = "Formato" ;
+ 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 ] = " ";
+ };
+ ListBox LB_FORMAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 16 ) ;
+ Size = MAP_APPFONT ( 65 , 98 ) ;
+ TabStop = TRUE ;
+ };
+ 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_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 nu~mérico" ;
+ 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 ] = " ";
+ };
+ 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 ] = "ŠO˜g(~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 = "Schriftar~t" ;
+ 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 ] = "~Teckensnitt" ;
+ 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 ] = "Ì«ÝÄ‚ÌŽí—Þ(~F)";
+ Text[ chinese_traditional ] = "¦r«¬(~F)";
+ Text[ arabic ] = "äæÚ ÇáÎØ";
+ Text[ greek ] = "ÃñáììáôïóåéñÜ";
+ Text[ korean ] = "±Û²Ã(~O)";
+ Text[ turkish ] = "Yazýti~pi";
+ 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ønster" ;
+ Text [ french ] = "~Motif" ;
+ Text [ swedish ] = "~Mönster" ;
+ Text [ dutch ] = "~Patroon" ;
+ Text [ spanish ] = "Mo~delo" ;
+ Text [ english_us ] = "~Pattern" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ͼ°¸(~P)";
+ Text[ russian ] = "Îáðàçåö";
+ Text[ polish ] = "De~señ";
+ Text[ japanese ] = "ÊßÀ°Ý(~P)";
+ Text[ chinese_traditional ] = "¹Ï®×(~P)";
+ Text[ arabic ] = "äãæÐÌ";
+ Text[ greek ] = "Ìïôßâï";
+ Text[ korean ] = "¹«´Ì(~P)";
+ Text[ turkish ] = "~Desen";
+ 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 ] = "~Allineamento" ;
+ Text [ portuguese_brazilian ] = "Orien~tação" ;
+ Text [ portuguese ] = "~Alinhamento" ;
+ Text [ finnish ] = "S~uunta" ;
+ Text [ danish ] = "Justering" ;
+ Text [ french ] = "~Alignement" ;
+ Text [ swedish ] = "~Justering" ;
+ Text [ dutch ] = "~Uitlijning" ;
+ Text [ spanish ] = "Orienta~ción" ;
+ Text [ english_us ] = "Alignmen~t" ;
+ TabStop = TRUE ;
+ 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 ] = "¸ÂÃã(~T)";
+ Text[ turkish ] = "~Hizalama";
+ 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 page" ;
+ Text [ swedish ] = "Formatering" ;
+ Text [ dutch ] = "Opmaak" ;
+ 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 ] = "E~xtra" ;
+ Text [ portuguese_brazilian ] = "~Mais" ;
+ Text [ portuguese ] = "~Opções" ;
+ Text [ finnish ] = "~Enemmän" ;
+ Text [ danish ] = "Flere" ;
+ Text [ french ] = "~Options" ;
+ Text [ swedish ] = "~Fler" ;
+ Text [ dutch ] = "~Overige" ;
+ Text [ spanish ] = "~Opciones" ;
+ Text [ english_us ] = "~More" ;
+ TabStop = TRUE ;
+ MapUnit = MAP_APPFONT ;
+ Delta = 48 ;
+ Text[ chinese_simplified ] = "ÆäËû(~M)";
+ Text[ russian ] = "Áîëüøå";
+ Text[ polish ] = "Dod~atki";
+ Text[ japanese ] = "µÌß¼®Ý(~M)";
+ Text[ chinese_traditional ] = "¨ä¥L(~M)";
+ Text[ arabic ] = "ÅÖÇÝÇÊ";
+ Text[ greek ] = "Ðñüóèåôá";
+ Text[ korean ] = "µ¡ºÙÀÓ(~M)";
+ Text[ turkish ] = "Ay~rýntýlar";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton BTN_ADD
+ {
+ Pos = MAP_APPFONT ( 255 , 64 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "Hi~nzufü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 ] = "~Toevoegen" ;
+ Text [ spanish ] = "~Añadir" ;
+ Text [ english_us ] = "~Add" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "²åÈë(~A)";
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "~Dodaj";
+ Text[ japanese ] = "‘}“ü(~A)";
+ Text[ chinese_traditional ] = "¥[¤J(~A)";
+ 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 ) ;
+ 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 ) ;
+ Text = "Um~benennen" ;
+ Text [ ENGLISH ] = "Ren~ame" ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "Mudar ~nome" ;
+ Text [ english_us ] = "~Rename" ;
+ 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 ] = "À̸§ ¹Ù²Ù±â(~R)";
+ 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
+ {
+ 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 toepassen" ;
+ 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 formatý ekle";
+ 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
+ {
+ 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 formatý sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DEL_MSG
+ {
+ Text = "Folgendes Autoformat wird gelöscht:" ;
+ Text [ ENGLISH ] = "This autoformat will be deleted:" ;
+ Text [ norwegian ] = "Dette Autoformat vil bli slettet:" ;
+ Text [ italian ] = "Questa formattazione automatica verrà cancellata:" ;
+ Text [ portuguese_brazilian ] = "Esta formatação Automática ser apagada:" ;
+ Text [ portuguese ] = "Será eliminado o seguinte AutoFormato:" ;
+ Text [ finnish ] = "Poistettava automaattimuoto:" ;
+ Text [ danish ] = "Følgende AutoFormat slettes:" ;
+ Text [ french ] = "L'AutoFormat suivant va être supprimé :" ;
+ Text [ swedish ] = "Följande AutoFormat raderas:" ;
+ Text [ dutch ] = "Het volgende AutoOpmaak-item wordt gewist." ;
+ Text [ spanish ] = "El siguiente AutoFormato se eliminará:" ;
+ Text [ english_us ] = "The following AutoFormat entry will be deleted:" ;
+ Text[ chinese_simplified ] = "ɾ³ýÒÔϵÄ×Ô¶¯¸ñʽ£º";
+ Text[ russian ] = "Ñëåäóþùèé àâòîôîðìàò áóäåò óäàëåí:";
+ Text[ polish ] = "Nastêpuj¹ce autoformatowanie bêdzie usuniête:";
+ Text[ japanese ] = "ˆÈ‰º‚̵°ÄÌ«°Ï¯Ä‚Í휂³‚ê‚Ü‚·:";
+ Text[ chinese_traditional ] = "§R°£¥H¤Uªº¦Û°Ê®æ¦¡¡G";
+ Text[ arabic ] = "ÓæÝ íÊã ÍÐÝ ÇáÊäÓíÞ ÇáÊáÞÇÆí ÇáÊÇáí:";
+ Text[ greek ] = "Ç åîÞò Áõôïìïñöïðïßçóç èá äéáãñáöåß:";
+ Text[ korean ] = "´ÙÀ½ÀÇ ÀÚµ¿ ¼­½Ä Ç׸ñÀº»èÁ¦µÉ °ÍÀÔ´Ï´Ù :";
+ Text[ turkish ] = "Aþaðýdaki otomatik format silinecek:";
+ 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 ] = "Otomatik formatý yeniden adlandýr";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_BTN_CLOSE
+ {
+ 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 ] = "~Kapat";
+ 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 ] = "Ock";
+ 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
+ {
+ 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 ] = "Noorden" ;
+ 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
+ {
+ 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 ] = "Zuiden" ;
+ 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 ] = "Sum" ;
+ Text [ french ] = "Somme" ;
+ Text [ swedish ] = "Summa" ;
+ Text [ dutch ] = "Totaal" ;
+ Text [ spanish ] = "Suma" ;
+ Text [ english_us ] = "Sum" ;
+ Text[ chinese_simplified ] = "×ܼÆ";
+ Text[ russian ] = "Ñóììà";
+ Text[ polish ] = "Suma";
+ Text[ japanese ] = "‡Œv";
+ Text[ chinese_traditional ] = "¤p­p";
+ Text[ arabic ] = "ÇáãÌãæÚ";
+ Text[ greek ] = "¢èñïéóìá";
+ Text[ korean ] = "ÇÕ°è";
+ Text[ turkish ] = "Toplam";
+ 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. */
+ 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 specificato non valido.\nImpossibile creare la Formattazione automatica desiderata.\nScegliete un altro nome." ;
+ Text [ portuguese_brazilian ] = "You entered an invalid name.\nThe desired AutoFormat could not be createdTry again using a different name." ;
+ Text [ portuguese ] = "Indicou um nome incorrecto.\nO AutoFormato desejado não pode ser criado.\nTente de novo usando um nome diferente." ;
+ Text [ finnish ] = "You entered an invalid name.\nThe desired AutoFormat could not be createdTry again using a different name." ;
+ Text [ danish ] = "Du har indtastet et ugyldigt navn.\nDet var ikke muligt at oprette AutoFormatet.\nVælg venligst et andet navn." ;
+ Text [ french ] = "Vous avez saisi un nom incorrect.\nL'AutoFormat n'a pas ou être éffectué.\nVeuillez indiquer un nom correct." ;
+ Text [ swedish ] = "Du har angett ett ogiltigt namn.\nAutoFormatet kunde inte skapas.\nVälj ett annat namn." ;
+ Text [ dutch ] = "U heeft een ongeldige naam vermeld.\nDe gewenste AutoOpmaak kon niet worden uitgevoerd.\nKies een andere naam." ;
+ Text [ spanish ] = "Ha indicado un nombre no válido, \npor lo que no se pudo crear el AutoFormato.\nSeleccione otro nombre." ;
+ Text [ ENGLISH_US ] = "You have entered an invalid name.\nThe desired AutoFormat could not be created. \nTry again using a different name." ;
+ Text[ chinese_simplified ] = "Äú¸ø¶¨ÁËÒ»¸öÎÞЧµÄÃû³Æ¡£\nÒò´ËÎÞ·¨½¨Á¢×Ô¶¯¸ñʽ¡£\nÇëÄúÊäÈëÒ»¸öÓÐЧÃû³Æ¡£";
+ Text[ russian ] = "Âû ïðèñâîèëè íåïðàâèëüíîå èìÿ.\nÀâòîôîðìàò ñîçäàòü íåâîçìîæíî.\nÂûáåðèòå äðóãîå èìÿ.";
+ Text[ polish ] = "Podana zosta³a nieprawid³owa nazwa.\nNie mo¿na by³o utworzyæ autoformatowania.\nWybierz inn¹ nazwê.";
+ Text[ japanese ] = "•s“KØ‚È–¼‘O‚ª“ü—Í‚³‚ê‚Ü‚µ‚½B\n‚±‚̵°ÄÌ«°Ï¯Ä‚Å‚Íì¬o—ˆ‚Ü‚¹‚ñB\n•Ê‚Ì–¼‘O‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B";
+ Text[ chinese_traditional ] = "±z¿é¤J¤F¤@­ÓµL®Äªº¦WºÙ¡C\nµLªk«Ø¥ß¦Û°Ê®æ¦¡¡C\n½Ð¿é¤J¤@­Ó¦³®Ä¦WºÙ¡C";
+ Text[ arabic ] = "áÞÏ ÞãÊ ÈÅÏÎÇá ÇÓã ÛíÑ ÕÇáÍ.\náåÐÇ ÊÚÐÑ ÅäÔÇÁ ÇáÊäÓíÞ ÇáÊáÞÇÆí.\nÇáÑÌÇÁ ÇÎÊíÇÑ ÇÓã ÃÎÑ.";
+ Text[ greek ] = "¸÷åôå åéóÜãåé Ýíá ìç Ýãêõñï üíïìá.\nÇ ÁõôïÌïñöïðïßçóç äåí Þôáí äõíáôüí íá äçìéïõñãçèåß.\nÅðéëÝîôå Ýíá Üëëï üíïìá.";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº À̸§À» ÀÔ·ÂÇß½À´Ï´Ù.\n¿ä±¸µÈ ÀÚµ¿ ¼­½ÄÀº¸¸µé¾î Áú ¼ö¾ø½À´Ï´Ù. \n´Ù¸¥ À̸§À¸·Î ´Ù½Ã ½ÃµµÇϽʽÿÀ..";
+ Text[ turkish ] = "Geçersiz bir ad girdiniz.\nOtomatik format oluþturulamadý.\nBaþka bir ad seçiniz.";
+ 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 format";
+ Text[ language_user1 ] = " ";
+};
+ModalDialog DLG_SWDLG_STRINPUT
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 172 , 63 ) ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ HelpID = HID_SWDLG_STRINPUT ;
+ Edit ED_INPUT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 24 ) ;
+ Size = MAP_APPFONT ( 104 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_LABEL
+ {
+ Pos = MAP_APPFONT ( 6 , 13 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Label" ;
+ };
+ 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 ;
+ };
+};
diff --git a/sw/source/ui/uiview/makefile.mk b/sw/source/ui/uiview/makefile.mk
new file mode 100644
index 000000000000..2884ba89508e
--- /dev/null
+++ b/sw/source/ui/uiview/makefile.mk
@@ -0,0 +1,117 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sw
+TARGET=uiview
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+SRCFILES = \
+ view.src \
+ pview.src
+
+SLOFILES = \
+ $(SLO)$/view0.obj \
+ $(SLO)$/view.obj \
+ $(SLO)$/view1.obj \
+ $(SLO)$/view2.obj \
+ $(SLO)$/viewcoll.obj \
+ $(SLO)$/viewdlg2.obj \
+ $(SLO)$/viewdlg.obj \
+ $(SLO)$/viewdraw.obj \
+ $(SLO)$/viewling.obj \
+ $(SLO)$/viewmdi.obj \
+ $(SLO)$/pview.obj \
+ $(SLO)$/viewport.obj \
+ $(SLO)$/viewstat.obj \
+ $(SLO)$/viewtab.obj \
+ $(SLO)$/viewprt.obj \
+ $(SLO)$/viewsrch.obj \
+ $(SLO)$/scroll.obj \
+ $(SLO)$/swcli.obj \
+ $(SLO)$/srcview.obj \
+ $(SLO)$/uivwimp.obj
+
+EXCEPTIONSFILES= \
+ $(SLO)$/srcview.obj \
+ $(SLO)$/uivwimp.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+$(SRS)$/uiview.srs: $(SOLARINCDIR)$/svx$/globlmn.hrc
+
diff --git a/sw/source/ui/uiview/pview.cxx b/sw/source/ui/uiview/pview.cxx
new file mode 100644
index 000000000000..a67872868891
--- /dev/null
+++ b/sw/source/ui/uiview/pview.cxx
@@ -0,0 +1,2322 @@
+/*************************************************************************
+ *
+ * $RCSfile: pview.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#ifndef _SV_TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFX_TOPFRM_HXX
+#include <sfx2/topfrm.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SVX_STDDLG_HXX //autogen
+#include <svx/stddlg.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SVX_PAPERINF_HXX //autogen
+#include <svx/paperinf.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.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 _SV_HELP_HXX //autogen
+#include <vcl/help.hxx>
+#endif
+#ifndef _SV_PRINTDLG_HXX_ //autogen
+#include <svtools/printdlg.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _VCL_CMDEVT_HXX //autogen
+#include <vcl/cmdevt.hxx>
+#endif
+
+
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+#ifndef _SWGLOBDOCSH_HXX //autogen
+#include <globdoc.hxx>
+#endif
+#ifndef _SWWDOCSH_HXX //autogen
+#include <wdocsh.hxx>
+#endif
+#ifndef _PVPRTDAT_HXX
+#include <pvprtdat.hxx>
+#endif
+#include "helpid.h"
+#include "swmodule.hxx"
+#ifndef _MODOPT_HXX //autogen
+#include <modcfg.hxx>
+#endif
+#include "wrtsh.hxx"
+#include "docsh.hxx"
+#include "cmdid.h"
+#include "viewopt.hxx"
+#include "globals.hrc"
+#include "doc.hxx"
+#include "pview.hxx"
+#include "view.hxx"
+#include "textsh.hxx"
+#include "scroll.hxx"
+#include "swprtopt.hxx"
+#include "docstat.hxx"
+#include "usrpref.hxx"
+#include "popup.hrc"
+#include "pview.hrc"
+#include "viewfunc.hxx"
+
+#ifndef _SVX_DLGUTIL_HXX //autogen
+#include <svx/dlgutil.hxx>
+#endif
+
+#define SwPagePreView
+#include "itemdef.hxx"
+#include "swslots.hxx"
+
+
+SFX_IMPL_VIEWFACTORY(SwPagePreView, SW_RES(STR_NONAME))
+{
+ SFX_VIEW_REGISTRATION(SwDocShell);
+ SFX_VIEW_REGISTRATION(SwWebDocShell);
+ SFX_VIEW_REGISTRATION(SwGlobalDocShell);
+}
+
+SFX_IMPL_INTERFACE(SwPagePreView, SfxViewShell, SW_RES(RID_PVIEW_TOOLBOX))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_PPREVIEW_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OBJECT|SFX_VISIBILITY_STANDARD|
+ SFX_VISIBILITY_CLIENT|SFX_VISIBILITY_FULLSCREEN|
+ SFX_VISIBILITY_READONLYDOC,
+ SW_RES(RID_PVIEW_TOOLBOX));
+}
+
+
+TYPEINIT1(SwPagePreView,SfxViewShell)
+
+#define SWVIEWFLAGS ( SFX_VIEW_MAXIMIZE_FIRST|SFX_VIEW_OPTIMIZE_EACH| \
+ SFX_VIEW_CAN_PRINT|SFX_VIEW_HAS_PRINTOPTIONS )
+
+/* */
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+// erstmal der Zoom-Dialog
+
+class SwPreViewZoomDlg : public SvxStandardDialog
+{
+ FixedText aRowLbl;
+ NumericField aRowEdit;
+ FixedText aColLbl;
+ NumericField aColEdit;
+
+ GroupBox aFrm;
+ OKButton aOkBtn;
+ CancelButton aCancelBtn;
+ HelpButton aHelpBtn;
+
+ virtual void Apply();
+
+public:
+ SwPreViewZoomDlg( SwPagePreViewWin& rParent );
+ ~SwPreViewZoomDlg();
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwPreViewZoomDlg::SwPreViewZoomDlg( SwPagePreViewWin& rParent ) :
+ SvxStandardDialog( &rParent, SW_RES(DLG_PAGEPREVIEW_ZOOM) ),
+ aColLbl(this,SW_RES(FT_COL)),
+ aColEdit(this,SW_RES(ED_COL)),
+ aRowLbl(this,SW_RES(FT_ROW)),
+ aRowEdit(this,SW_RES(ED_ROW)),
+ aFrm(this,SW_RES(GB_PREVIEW)),
+ aOkBtn(this,SW_RES(BT_OK)),
+ aCancelBtn(this,SW_RES(BT_CANCEL)),
+ aHelpBtn(this,SW_RES(BT_HELP))
+{
+ FreeResource();
+
+ aRowEdit.SetValue( rParent.GetRow() );
+ aColEdit.SetValue( rParent.GetCol() );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+ SwPreViewZoomDlg::~SwPreViewZoomDlg() {}
+
+
+void SwPreViewZoomDlg::Apply()
+{
+ ((SwPagePreViewWin*)GetParent())->CalcWish(
+ BYTE(aRowEdit.GetValue()),
+ BYTE(aColEdit.GetValue()) );
+}
+
+/* */
+/* -----------------20.08.98 15:25-------------------
+ * Vorschau fuer den Seitendruck
+ * --------------------------------------------------*/
+struct PrintSettingsStruct;
+class PrtPrvWindow : public Window
+{
+ const PrintSettingsStruct& rSettings;
+
+ virtual void Paint(const Rectangle&);
+public :
+ PrtPrvWindow(Window* pParent, const ResId& rResId, const PrintSettingsStruct& rSett) :
+ Window(pParent, rResId), rSettings(rSett){}
+};
+/*--------------------------------------------------------------------
+ Beschreibung: Optionen fuer das Drucken der Preview
+ --------------------------------------------------------------------*/
+struct PrintSettingsStruct
+{
+ Size aPageMaxSize; // groesste Seite
+ Size aPrtSize; // Papiergroesse
+ Size aPrvPrtSize; // Groesse innerhalb der LRTB-Raender
+ Size aGridSize; // Groesse fuer jede Seite, enthaelt je
+ // die Haelfte von H- und V-Distance
+
+ long nLeft;
+ long nRight;
+ long nTop;
+ long nBottom;
+ long nHori;
+ long nVert;
+
+ USHORT nRows;
+ USHORT nCols;
+
+ BOOL bPrinterLandscape; // Ausrichtung
+};
+
+class SwPreviewPrintOptionsDialog : public SvxStandardDialog
+{
+ GroupBox aRowColGB;
+ FixedText aRowsFT;
+ NumericField aRowsNF;
+ FixedText aColsFT;
+ NumericField aColsNF;
+
+ GroupBox aMarginGB;
+ FixedText aLSpaceFT;
+ MetricField aLSpaceMF;
+ FixedText aRSpaceFT;
+ MetricField aRSpaceMF;
+ FixedText aTSpaceFT;
+ MetricField aTSpaceMF;
+ FixedText aBSpaceFT;
+ MetricField aBSpaceMF;
+ GroupBox aDistanceGB;
+ FixedText aHSpaceFT;
+ MetricField aHSpaceMF;
+ FixedText aVSpaceFT;
+ MetricField aVSpaceMF;
+
+ RadioButton aLandscapeRB;
+ RadioButton aPortraitRB;
+ GroupBox aOrientationGB;
+
+ GroupBox aPreviewGB;
+ PrtPrvWindow aPreviewWin;
+
+ OKButton aOkBtn;
+ CancelButton aCancelBtn;
+ HelpButton aHelpBtn;
+
+ PushButton aStandardPB;
+
+ SwPagePreView& rPreView;
+ PrintSettingsStruct aSettings;
+/* Size aPageMaxSize;
+ Size aPrtSize;
+
+ BOOL bOrientation;
+*/
+ BOOL bStandard;
+
+ virtual void Apply();
+ void FillControls(SwPagePreViewPrtData& rData);
+
+ DECL_LINK( ModifyHdl, Edit* );
+ DECL_LINK( StandardHdl, PushButton* );
+
+public:
+ SwPreviewPrintOptionsDialog(SwPagePreViewWin& rParent, SwPagePreView& rView);
+ ~SwPreviewPrintOptionsDialog();
+};
+
+/* -----------------19.08.98 13:35-------------------
+ *
+ * --------------------------------------------------*/
+SwPreviewPrintOptionsDialog::SwPreviewPrintOptionsDialog( SwPagePreViewWin& rParent, SwPagePreView& rView ) :
+ SvxStandardDialog( &rParent, SW_RES(DLG_PAGEPREVIEW_PRINTOPTIONS) ),
+ aRowColGB(this,SW_RES( GB_ROWCOL)),
+ aRowsFT(this,SW_RES( FT_ROWS)),
+ aRowsNF(this,SW_RES( NF_ROWS)),
+ aColsFT(this,SW_RES( FT_COLS)),
+ aColsNF(this,SW_RES( NF_COLS)),
+ aMarginGB(this,SW_RES( GB_MARGINS)),
+ aLSpaceFT(this,SW_RES( FT_LMARGIN)),
+ aLSpaceMF(this,SW_RES( MF_LMARGIN)),
+ aRSpaceFT(this,SW_RES( FT_RMARGIN)),
+ aRSpaceMF(this,SW_RES( MF_RMARGIN)),
+ aTSpaceFT(this,SW_RES( FT_TMARGIN)),
+ aTSpaceMF(this,SW_RES( MF_TMARGIN)),
+ aBSpaceFT(this,SW_RES( FT_BMARGIN)),
+ aBSpaceMF(this,SW_RES( MF_BMARGIN)),
+ aDistanceGB(this,SW_RES(GB_DISTANCE)),
+ aHSpaceFT(this,SW_RES( FT_HMARGIN)),
+ aHSpaceMF(this,SW_RES( MF_HMARGIN)),
+ aVSpaceFT(this,SW_RES( FT_VMARGIN)),
+ aVSpaceMF(this,SW_RES( MF_VMARGIN)),
+ aOrientationGB(this,SW_RES( GB_ORIENTATION)),
+ aLandscapeRB(this,SW_RES( RB_LANDSCAPE)),
+ aPortraitRB(this,SW_RES( RB_PORTRAIT)),
+ aPreviewGB(this,SW_RES( GB_PREVIEW)),
+ aPreviewWin(this,SW_RES( WIN_PREVIEW), aSettings),
+ aOkBtn(this,SW_RES(BT_OK)),
+ aCancelBtn(this,SW_RES(BT_CANCEL)),
+ aHelpBtn(this,SW_RES(BT_HELP)),
+ aStandardPB(this,SW_RES(PB_STANDARD)),
+ rPreView(rView),
+ bStandard(TRUE)
+{
+ FreeResource();
+ ViewShell& rViewSh = rPreView.GetViewShell();
+ aSettings.aPageMaxSize = rViewSh.GetPagePreViewPrtMaxSize();
+ SfxPrinter* pPrinter = rViewSh.GetPrt( TRUE );
+ aSettings.aPrtSize = pPrinter->GetPaperSize();
+ aSettings.bPrinterLandscape = pPrinter->GetOrientation() == ORIENTATION_LANDSCAPE;
+
+
+ SwDocShell* pDocShell = rPreView.GetDocShell();
+ const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+ FieldUnit eFieldUnit = pModOpt->GetMetric(0 != PTR_CAST(SwWebDocShell, pDocShell));
+ ::SetFieldUnit( aLSpaceMF, eFieldUnit );
+ ::SetFieldUnit( aRSpaceMF, eFieldUnit );
+ ::SetFieldUnit( aTSpaceMF, eFieldUnit );
+ ::SetFieldUnit( aBSpaceMF, eFieldUnit );
+ ::SetFieldUnit( aHSpaceMF, eFieldUnit );
+ ::SetFieldUnit( aVSpaceMF, eFieldUnit );
+
+ SwDoc* pDoc = pDocShell->GetDoc();
+ SwPagePreViewPrtData aData;
+ if(pDoc->GetPreViewPrtData())
+ {
+ aData = *pDoc->GetPreViewPrtData();
+ bStandard = FALSE;
+ }
+ else
+ {
+ // Orientation der PreviewData an den Drucker anpassen
+ aData.SetLandscape(aSettings.bPrinterLandscape);
+ }
+ FillControls(aData);
+
+ aLSpaceMF.SaveValue();
+ aRSpaceMF.SaveValue();
+ aTSpaceMF.SaveValue();
+ aBSpaceMF.SaveValue();
+ aHSpaceMF.SaveValue();
+ aVSpaceMF.SaveValue();
+ aRowsNF.SaveValue();
+ aColsNF.SaveValue();
+ aLandscapeRB.SaveValue();
+ aPortraitRB.SaveValue();
+
+ aStandardPB.SetClickHdl(LINK(this, SwPreviewPrintOptionsDialog, StandardHdl));
+ Link aLk = LINK(this, SwPreviewPrintOptionsDialog, ModifyHdl);
+ aLSpaceMF.SetUpHdl(aLk);
+ aRSpaceMF.SetUpHdl(aLk);
+ aTSpaceMF.SetUpHdl(aLk);
+ aBSpaceMF.SetUpHdl(aLk);
+ aHSpaceMF.SetUpHdl(aLk);
+ aVSpaceMF.SetUpHdl(aLk);
+ aRowsNF.SetUpHdl(aLk);
+ aColsNF.SetUpHdl(aLk);
+ aLSpaceMF.SetDownHdl(aLk);
+ aRSpaceMF.SetDownHdl(aLk);
+ aTSpaceMF.SetDownHdl(aLk);
+ aBSpaceMF.SetDownHdl(aLk);
+ aHSpaceMF.SetDownHdl(aLk);
+ aVSpaceMF.SetDownHdl(aLk);
+ aRowsNF.SetDownHdl(aLk);
+ aColsNF.SetDownHdl(aLk);
+ aLSpaceMF.SetLoseFocusHdl(aLk);
+ aRSpaceMF.SetLoseFocusHdl(aLk);
+ aTSpaceMF.SetLoseFocusHdl(aLk);
+ aBSpaceMF.SetLoseFocusHdl(aLk);
+ aHSpaceMF.SetLoseFocusHdl(aLk);
+ aVSpaceMF.SetLoseFocusHdl(aLk);
+ aRowsNF.SetLoseFocusHdl(aLk);
+ aColsNF.SetLoseFocusHdl(aLk);
+ aLandscapeRB.SetClickHdl(aLk);
+ aPortraitRB.SetClickHdl(aLk);
+
+ ModifyHdl(0);
+ if(bStandard)
+ StandardHdl(&aStandardPB);
+}
+
+
+/* -----------------19.08.98 13:36-------------------
+ *
+ * --------------------------------------------------*/
+SwPreviewPrintOptionsDialog::~SwPreviewPrintOptionsDialog()
+{
+}
+/* -----------------12.11.98 11:32-------------------
+ *
+ * --------------------------------------------------*/
+void SwPreviewPrintOptionsDialog::FillControls(SwPagePreViewPrtData& rData)
+{
+ aLSpaceMF.SetValue(aLSpaceMF.Normalize(rData.GetLeftSpace() ), FUNIT_TWIP);
+ aRSpaceMF.SetValue(aRSpaceMF.Normalize(rData.GetRightSpace() ), FUNIT_TWIP);
+ aTSpaceMF.SetValue(aTSpaceMF.Normalize(rData.GetTopSpace() ), FUNIT_TWIP);
+ aBSpaceMF.SetValue(aBSpaceMF.Normalize(rData.GetBottomSpace()), FUNIT_TWIP);
+ aHSpaceMF.SetValue(aHSpaceMF.Normalize(rData.GetHorzSpace() ), FUNIT_TWIP);
+ aVSpaceMF.SetValue(aVSpaceMF.Normalize(rData.GetVertSpace() ), FUNIT_TWIP);
+ aRowsNF.SetValue(rData.GetRow());
+ aColsNF.SetValue(rData.GetCol());
+ aSettings.bPrinterLandscape ? aLandscapeRB.Check() : aPortraitRB.Check();
+ // wenn Drucker und Einstellungen nicht uebereinstimmen, dann Seiten tauschen
+ if( rData.GetLandscape() != aSettings.bPrinterLandscape )
+ {
+ Size aTmp(aSettings.aPrtSize.Height(), aSettings.aPrtSize.Width());
+ aSettings.aPrtSize = aTmp;
+ aSettings.bPrinterLandscape = !aSettings.bPrinterLandscape;
+ // nochmal setzen, denn auch wenn nur die Default-Orientierung dem Drucker
+ // angepasst wurde, sollen die Einstellungen gespeichert werden
+ aSettings.bPrinterLandscape ? aLandscapeRB.Check() : aPortraitRB.Check();
+ }
+ aLandscapeRB.SaveValue();
+ aPortraitRB.SaveValue();
+
+ aSettings.nLeft = rData.GetLeftSpace() ;
+ aSettings.nRight = rData.GetRightSpace() ;
+ aSettings.nTop = rData.GetTopSpace() ;
+ aSettings.nBottom = rData.GetBottomSpace();
+ aSettings.nHori = rData.GetHorzSpace() ;
+ aSettings.nVert = rData.GetVertSpace() ;
+ aSettings.nRows = rData.GetRow() ;
+ aSettings.nCols = rData.GetCol() ;
+ aSettings.aPrvPrtSize = aSettings.aPrtSize ;
+}
+
+/* -----------------19.08.98 14:31-------------------
+ *
+ * --------------------------------------------------*/
+void SwPreviewPrintOptionsDialog::Apply()
+{
+
+ SwDoc* pDoc = rPreView.GetDocShell()->GetDoc();
+ if(bStandard)
+ pDoc->SetPreViewPrtData(0);
+ else if( aLSpaceMF.GetSavedValue() != aLSpaceMF.GetText() ||
+ aRSpaceMF.GetSavedValue() != aRSpaceMF.GetText() ||
+ aTSpaceMF.GetSavedValue() != aTSpaceMF.GetText() ||
+ aBSpaceMF.GetSavedValue() != aBSpaceMF.GetText() ||
+ aHSpaceMF.GetSavedValue() != aHSpaceMF.GetText() ||
+ aVSpaceMF.GetSavedValue() != aVSpaceMF.GetText() ||
+ aRowsNF.GetSavedValue() != aRowsNF.GetText() ||
+ aColsNF.GetSavedValue() != aColsNF.GetText() ||
+ aLandscapeRB.GetSavedValue() != aLandscapeRB.IsChecked() ||
+ aPortraitRB.GetSavedValue() != aPortraitRB.IsChecked() )
+ {
+ SwPagePreViewPrtData aData;
+ if(pDoc->GetPreViewPrtData())
+ aData = *pDoc->GetPreViewPrtData();
+ aData.SetLeftSpace(aLSpaceMF.Denormalize(aLSpaceMF.GetValue(FUNIT_TWIP)));
+ aData.SetRightSpace(aRSpaceMF.Denormalize(aRSpaceMF.GetValue(FUNIT_TWIP)));
+ aData.SetTopSpace(aTSpaceMF.Denormalize(aTSpaceMF.GetValue(FUNIT_TWIP)));
+ aData.SetBottomSpace(aBSpaceMF.Denormalize(aBSpaceMF.GetValue(FUNIT_TWIP)));
+
+ aData.SetHorzSpace(aHSpaceMF.Denormalize(aHSpaceMF.GetValue(FUNIT_TWIP)));
+ aData.SetVertSpace(aVSpaceMF.Denormalize(aVSpaceMF.GetValue(FUNIT_TWIP)));
+ aData.SetRow(aRowsNF.GetValue());
+ aData.SetCol(aColsNF.GetValue());
+ aData.SetLandscape(aLandscapeRB.IsChecked());
+
+ ViewShell& rViewSh = rPreView.GetViewShell();
+ SfxPrinter* pPrinter = rViewSh.GetPrt( TRUE );
+ if((pPrinter->GetOrientation() == ORIENTATION_LANDSCAPE)
+ != aData.GetLandscape())
+ pPrinter->SetOrientation(aData.GetLandscape() ? ORIENTATION_LANDSCAPE : ORIENTATION_PORTRAIT);
+
+
+ pDoc->SetPreViewPrtData(&aData);
+
+ }
+}
+/* -----------------20.08.98 08:48-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwPreviewPrintOptionsDialog, ModifyHdl, Edit*, pEdit )
+{
+ if(bStandard && pEdit)
+ {
+ aLSpaceMF.SetUserValue(aLSpaceMF.GetValue());
+ aRSpaceMF.SetUserValue(aRSpaceMF.GetValue());
+ aTSpaceMF.SetUserValue(aTSpaceMF.GetValue());
+ aBSpaceMF.SetUserValue(aBSpaceMF.GetValue());
+ aHSpaceMF.SetUserValue(aHSpaceMF.GetValue());
+ aVSpaceMF.SetUserValue(aVSpaceMF.GetValue());
+ aRowsNF. SetUserValue(aRowsNF .GetValue());
+ aColsNF. SetUserValue(aColsNF .GetValue());
+
+ bStandard = FALSE;
+ }
+ BOOL bOrientChanged = aSettings.bPrinterLandscape != aLandscapeRB.IsChecked();;
+ if(pEdit == &aLSpaceMF)
+ aSettings.nLeft = aLSpaceMF.Denormalize(aLSpaceMF.GetValue(FUNIT_TWIP));
+ else if(pEdit == &aRSpaceMF)
+ aSettings.nRight = aRSpaceMF.Denormalize(aRSpaceMF.GetValue(FUNIT_TWIP));
+ else if(pEdit == &aTSpaceMF)
+ aSettings.nTop = aTSpaceMF.Denormalize(aTSpaceMF.GetValue(FUNIT_TWIP));
+ else if(pEdit == &aBSpaceMF)
+ aSettings.nBottom = aBSpaceMF.Denormalize(aBSpaceMF.GetValue(FUNIT_TWIP));
+ else if(pEdit == &aHSpaceMF)
+ aSettings.nHori = aHSpaceMF.Denormalize(aHSpaceMF.GetValue(FUNIT_TWIP));
+ else if(pEdit == &aVSpaceMF)
+ aSettings.nVert = aVSpaceMF.Denormalize(aVSpaceMF.GetValue(FUNIT_TWIP));
+ else if(pEdit == &aRowsNF)
+ aSettings.nRows = aRowsNF.GetValue();
+ else if(pEdit == &aColsNF)
+ aSettings.nCols = aColsNF.GetValue();
+ else if(pEdit == (Edit*)&aLandscapeRB)
+ aSettings.bPrinterLandscape = aLandscapeRB.IsChecked();
+ else if(pEdit == (Edit*)&aPortraitRB)
+ aSettings.bPrinterLandscape = aLandscapeRB.IsChecked();
+
+ if(bOrientChanged)
+ {
+ Size aTmp(aSettings.aPrtSize.Height(), aSettings.aPrtSize.Width());
+ aSettings.aPrtSize = aTmp;
+ }
+
+
+ aSettings.aPrvPrtSize = Size(aSettings.aPrtSize.Width() - aSettings.nRight - aSettings.nLeft,
+ aSettings.aPrtSize.Height() - aSettings.nTop - aSettings.nBottom);
+ aSettings.aGridSize = Size(aSettings.aPrvPrtSize.Width() / aSettings.nCols,
+ aSettings.aPrvPrtSize.Height() / aSettings.nRows );
+ // was fehlt noch: Orientation auswerten, minimalrand ausrechnen, Beispiel fuettern
+
+
+ //am Ende Maximalwerte setzen
+ long n20Percent = aSettings.aPrtSize.Width() / 5;
+ aLSpaceMF.SetMax(aLSpaceMF.Normalize(aSettings.aPrtSize.Width() - aSettings.nRight - n20Percent), FUNIT_TWIP);
+ aRSpaceMF.SetMax(aRSpaceMF.Normalize(aSettings.aPrtSize.Width() - aSettings.nLeft - n20Percent), FUNIT_TWIP);
+ n20Percent = aSettings.aPrtSize.Height() / 5;
+ aTSpaceMF.SetMax(aTSpaceMF.Normalize(aSettings.aPrtSize.Height() - aSettings.nBottom - n20Percent), FUNIT_TWIP);
+ aBSpaceMF.SetMax(aBSpaceMF.Normalize(aSettings.aPrtSize.Height() - aSettings.nTop - n20Percent), FUNIT_TWIP);
+
+ long n80Percent = aSettings.aPrvPrtSize.Width() * 4 / 5;
+ aHSpaceMF.SetMax(aHSpaceMF.Normalize(n80Percent / aSettings.nRows), FUNIT_TWIP);
+ n80Percent = aSettings.aPrvPrtSize.Height()* 4 / 5;
+ aVSpaceMF.SetMax(aVSpaceMF.Normalize(n80Percent / aSettings.nCols), FUNIT_TWIP);
+ aHSpaceMF.Enable(aSettings.nCols > 1);
+ aVSpaceMF.Enable(aSettings.nRows > 1);
+ aRowsNF.SetMin(1);// nur damit auch nach Standard wieder der Inhalt angezeigt wird
+ aColsNF.SetMin(1);
+
+
+ aPreviewWin.Invalidate();
+ return 0;
+}
+/* -----------------28.08.98 14:59-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwPreviewPrintOptionsDialog, StandardHdl, PushButton*, EMPTYARG )
+{
+ SetUpdateMode(TRUE);
+ SwPagePreViewPrtData aData;
+ FillControls(aData);
+ bStandard = TRUE;
+ aLSpaceMF.SetText(aEmptyStr);
+ aRSpaceMF.SetText(aEmptyStr);
+ aTSpaceMF.SetText(aEmptyStr);
+ aBSpaceMF.SetText(aEmptyStr);
+ aHSpaceMF.SetText(aEmptyStr);
+ aVSpaceMF.SetText(aEmptyStr);
+ aRowsNF.SetText(aEmptyStr);
+ aColsNF.SetText(aEmptyStr);
+ aPreviewWin.Invalidate();
+ SetUpdateMode(FALSE);
+ return 0;
+}
+/* -----------------20.08.98 15:28-------------------
+ * Preview anzeigen
+ * --------------------------------------------------*/
+void PrtPrvWindow::Paint(const Rectangle&)
+{
+/*
+ struct PrintSettingsStruct
+{
+ Size aPageMaxSize; // groesste Seite
+ Size aPrtSize; // Papiergroesse
+ Size aPrvPrtSize; // Groesse innerhalb der LRTB-Raender
+ Size aGridSize; // Groesse fuer jede Seite, enthaelt je
+ // die Haelfte von H- und V-Distance
+
+ long nLeft;
+ long nRight;
+ long nTop;
+ long nBottom;
+ long nHori;
+ long nVert;
+
+ USHORT nRows;
+ USHORT nCols;
+
+ BOOL bOrientation; // Ausrichtung
+};
+
+ * */
+// Size aWinSize(GetOutputSizePixel());
+// //MapMode aMode(GetMapMode());
+// MapMode aMode(MAP_TWIP, Point(0,0), Fraction(1,10 ), Fraction( 1,10 ));
+// SetMapMode(aMode);
+// Size aWinLogSize(GetOutputSize());
+
+ Size aWinSize(GetOutputSizePixel());
+ long nWidth = rSettings.aPrtSize.Width();
+ long nHeight = rSettings.aPrtSize.Height();
+ BOOL bHoriValid = (aWinSize.Width() * 100 / aWinSize.Height()) <
+ (rSettings.aPrtSize.Width() * 100/ rSettings.aPrtSize.Height());
+ Fraction aXScale( aWinSize.Width(),
+ max( nWidth , 1 ) );
+ Fraction aYScale( aWinSize.Height(), max( nHeight, 1 ) );
+ MapMode aMapMode( GetMapMode() );
+ aMapMode.SetScaleX( bHoriValid ? aXScale : aYScale);
+ aMapMode.SetScaleY( bHoriValid ? aXScale : aYScale);
+ SetMapMode( aMapMode );
+
+ aWinSize = GetOutputSize();
+
+ Point aOffset(0,0);
+ if(bHoriValid)
+ aOffset.Y() = (aWinSize.Height() - rSettings.aPrtSize.Height()) / 2;
+ else
+ aOffset.X() = (aWinSize.Width() - rSettings.aPrtSize.Width()) / 2;;
+
+ //der weisse Seitenhintergrund
+ Rectangle aRect(aOffset, rSettings.aPrtSize);
+ SetFillColor( Color( COL_WHITE ) );
+ SetLineColor(Color( COL_BLACK ) );
+ DrawRect(aRect);
+
+ Point aTL(aOffset);
+ aTL.X() += rSettings.nLeft;
+ aTL.Y() += rSettings.nTop;
+
+ Size aPrvPageSize((rSettings.aPrvPrtSize.Width() - (rSettings.nCols - 1) * rSettings.nHori) / rSettings.nCols,
+ (rSettings.aPrvPrtSize.Height() - (rSettings.nRows - 1) * rSettings.nVert) / rSettings.nRows);
+ // jetzt muss noch das unterschiedliche Groessenverhaeltnis berechnet werden, um es an
+ // der richtigen Seite abzuziehen.
+ //...
+ long nSourceScale = rSettings.aPageMaxSize.Width() * 100 / rSettings.aPageMaxSize.Height();
+ long nDestScale = aPrvPageSize.Width() * 100 / aPrvPageSize.Height() ;
+ if(nSourceScale > nDestScale) // die Seite ist relativ breiter als das vorhandene Rechteck
+ {
+ aPrvPageSize.Height() = aPrvPageSize.Width() * 100 / nSourceScale;
+ }
+ else
+ {
+ aPrvPageSize.Width() = aPrvPageSize.Height() * nSourceScale / 100;
+ }
+
+ SetFillColor( Color( COL_GRAY ) );
+ aRect = Rectangle(aTL, aPrvPageSize);
+ for(USHORT i = 0; i < rSettings.nRows; i++)
+ {
+ for(USHORT j = 0; j < rSettings.nCols; j++)
+ {
+ DrawRect(aRect);
+ aRect.Move(aPrvPageSize.Width() + rSettings.nHori, 0);
+ }
+
+ aRect.Move( 0, aPrvPageSize.Height() + rSettings.nVert);
+ aRect.SetPos(Point(aTL.X(), aRect.TopLeft().Y()));
+ }
+ //rSettings;
+}
+
+/* */
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+// alles fuers SwPagePreViewWin
+
+
+SwPagePreViewWin::SwPagePreViewWin( Window *pParent, SwPagePreView& rPView )
+ : Window( pParent, WinBits( WB_CLIPCHILDREN) ),
+ pViewShell( 0 ),
+ rView( rPView )
+{
+ SetHelpId(HID_PAGEPREVIEW);
+ SetFillColor( GetBackground().GetColor() );
+ SetLineColor( GetBackground().GetColor());
+ SetMapMode( MapMode(MAP_TWIP) );
+
+ const SwMasterUsrPref *pUsrPref = SW_MOD()->GetUsrPref(FALSE);
+ nRow = pUsrPref->GetPagePrevRow(); // 1 Zeile
+ nCol = pUsrPref->GetPagePrevCol(); // 1 Spalte
+ nVirtPage = nSttPage = USHRT_MAX;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwPagePreViewWin::~SwPagePreViewWin()
+{
+ if( pViewShell )
+ delete pViewShell;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreViewWin::Paint( const Rectangle& rRect )
+{
+ if( !pViewShell || !pViewShell->GetLayout() )
+ return;
+
+ USHORT nRowCol = ( nRow << 8 ) + nCol;
+ if( USHRT_MAX == nSttPage ) // wurde noch nie berechnet ? (Init-Phase!)
+ {
+ // das ist die Size, auf die ich mich immer beziehe
+ if( !aWinSize.Height() || !aWinSize.Width() )
+ aWinSize = GetOutputSizePixel();
+
+ Rectangle aRect( LogicToPixel( rRect ));
+ nSttPage = pViewShell->CalcPreViewPage( aWinSize, nRowCol,
+ 0, aPgSize, nVirtPage );
+ pViewShell->PreViewPage( PixelToLogic( aRect ), nRowCol, nSttPage,
+ aPgSize );
+ nRow = BYTE( nRowCol >> 8 );
+ nCol = BYTE( nRowCol & 0xff );
+ SetPagePreview(nRow, nCol);
+ aScale = GetMapMode().GetScaleX();
+ }
+ else
+ {
+ MapMode aMM( GetMapMode() );
+ aMM.SetScaleX( aScale );
+ aMM.SetScaleY( aScale );
+ SetMapMode( aMM );
+ pViewShell->PreViewPage( rRect, nRowCol, nSttPage, aPgSize );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreViewWin::CalcWish( BYTE nNewRow, BYTE nNewCol )
+{
+ if( !pViewShell || !pViewShell->GetLayout() )
+ return;
+
+ USHORT nOldCol = nCol;
+ USHORT nRowCol = ( nNewRow << 8 ) + nNewCol; // Zeilen / Spalten
+ USHORT nPages = nNewRow * nNewCol,
+ nLastSttPg = rView.GetPageCount()+1 > nPages
+ ? rView.GetPageCount()+1 - nPages : 0;
+ if( nSttPage > nLastSttPg )
+ nSttPage = nLastSttPg;
+
+ nSttPage = pViewShell->CalcPreViewPage( aWinSize, nRowCol, nSttPage,
+ aPgSize, nVirtPage );
+ nRow = BYTE( nRowCol >> 8 );
+ nCol = BYTE( nRowCol & 0xff );
+ SetPagePreview(nRow, nCol);
+ aScale = GetMapMode().GetScaleX();
+
+ // falls an der Spaltigkeit gedreht wurde, so muss der Sonderfall
+ // Einspaltig beachtet und ggfs. der Scrollbar korrigiert werden
+ if( (1 == nOldCol) ^ (1 == nCol) )
+ rView.VScrollDocSzChg();
+
+ // Sortierung muss eingehalten werden!!
+ static USHORT __READONLY_DATA aInval[] =
+ {
+ SID_ATTR_ZOOM,
+ FN_START_OF_DOCUMENT, FN_END_OF_DOCUMENT, FN_PAGEUP, FN_PAGEDOWN,
+ FN_SHOW_TWO_PAGES, FN_SHOW_FOUR_PAGES,
+ 0
+ };
+#ifndef PRODUCT
+ {
+ const USHORT* pPtr = aInval + 1;
+ do {
+ ASSERT( *(pPtr - 1) < *pPtr, "falsche Sortierung!" );
+ } while( *++pPtr );
+ }
+#endif
+ SfxBindings& rBindings = rView.GetViewFrame()->GetBindings();
+ rBindings.Invalidate( aInval );
+ rBindings.Update( FN_SHOW_TWO_PAGES );
+ rBindings.Update( FN_SHOW_FOUR_PAGES );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+int SwPagePreViewWin::MovePage( int eMoveMode )
+{
+ // soviele Seiten hoch
+ USHORT nPages = nRow * nCol;
+ USHORT nNewSttPage = nSttPage;
+ USHORT nPageCount = rView.GetPageCount() + 1;
+ USHORT nDefSttPg = GetDefSttPage();
+ USHORT nLastSttPg = nPageCount > nPages ? nPageCount - nPages : nDefSttPg;
+
+ switch( eMoveMode )
+ {
+ case MV_PAGE_UP: nNewSttPage = nSttPage > nPages
+ ? nSttPage - nPages : nDefSttPg;
+ break;
+ case MV_PAGE_DOWN: nNewSttPage = nSttPage + nPages;
+ if( nNewSttPage > nLastSttPg )
+ nNewSttPage = nLastSttPg;
+ break;
+ case MV_DOC_STT: nNewSttPage = nDefSttPg;
+ break;
+ case MV_DOC_END: nNewSttPage = nLastSttPg;
+ break;
+ default:
+
+ if( nNewSttPage > nLastSttPg )
+ nNewSttPage = nLastSttPg;
+ break;
+ }
+
+ Size aSave( aPgSize );
+ USHORT nRowCol = ( nRow << 8 ) + nCol; // Zeilen / DoppelSeiten
+ nNewSttPage = pViewShell->CalcPreViewPage( aWinSize, nRowCol,
+ nNewSttPage, aPgSize, nVirtPage );
+ if( nNewSttPage == nSttPage && aPgSize == aSave )
+ return FALSE;
+
+ nRow = BYTE( nRowCol >> 8 );
+ nCol = BYTE( nRowCol & 0xff );
+ SetPagePreview(nRow, nCol);
+ nSttPage = nNewSttPage;
+ aScale = GetMapMode().GetScaleX();
+
+ static USHORT __READONLY_DATA aInval[] =
+ {
+ FN_START_OF_DOCUMENT, FN_END_OF_DOCUMENT, FN_PAGEUP, FN_PAGEDOWN, 0
+ };
+#ifndef PRODUCT
+ {
+ const USHORT* pPtr = aInval + 1;
+ do {
+ ASSERT( *(pPtr - 1) < *pPtr, "falsche Sortierung!" );
+ } while( *++pPtr );
+ }
+#endif
+
+ SfxBindings& rBindings = rView.GetViewFrame()->GetBindings();
+ rBindings.Invalidate( aInval );
+// rBindings.Update( FN_SHOW_TWO_PAGES );
+// rBindings.Update( FN_SHOW_FOUR_PAGES );
+
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreViewWin::SetWinSize( const Size& rNewSize )
+{
+ // die Size wollen wir aber immer in Pixel-Einheiten haben
+ aWinSize = LogicToPixel( rNewSize );
+ USHORT nRowCol = ( nRow << 8 ) + nCol; // Zeilen / DoppelSeiten
+
+ if( USHRT_MAX == nSttPage )
+ nSttPage = GetDefSttPage();
+ nSttPage = pViewShell->CalcPreViewPage( aWinSize, nRowCol,
+ nSttPage, aPgSize,
+ nVirtPage );
+ nRow = BYTE( nRowCol >> 8 );
+ nCol = BYTE( nRowCol & 0xff );
+ SetPagePreview(nRow, nCol);
+ aScale = GetMapMode().GetScaleX();
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreViewWin::GetStatusStr( String& rStr, USHORT nPageCnt ) const
+{
+ // Logische Seite gegebenenfalls davor haengen
+ USHORT nStt = nSttPage > 1 ? nSttPage : 1;
+ if( nVirtPage && nVirtPage != nStt )
+ {
+ rStr += String::CreateFromInt32( nVirtPage );
+ rStr += ' ';
+ }
+ rStr += String::CreateFromInt32( nStt );
+ rStr.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" / "));
+ rStr += String::CreateFromInt32( nPageCnt );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreViewWin::KeyInput( const KeyEvent &rKEvt )
+{
+ //Defaultbehandlung Keyboard
+ if( !rView.KeyInput( rKEvt ) )
+ Window::KeyInput( rKEvt );
+}
+
+/******************************************************************************
+ * Beschreibung:
+ ******************************************************************************/
+
+void SwPagePreViewWin::Command( const CommandEvent& rCEvt )
+{
+ BOOL bCallBase = TRUE;
+ switch( rCEvt.GetCommand() )
+ {
+ case COMMAND_CONTEXTMENU:
+ rView.GetViewFrame()->GetDispatcher()->ExecutePopup();
+ bCallBase = FALSE;
+ break;
+
+ case COMMAND_WHEEL:
+ case COMMAND_STARTAUTOSCROLL:
+ case COMMAND_AUTOSCROLL:
+ bCallBase = !rView.HandleWheelCommands( rCEvt );
+ break;
+
+ default: ASSERT( !this, "unknown command." );
+ }
+
+ if( bCallBase )
+ Window::Command( rCEvt );
+}
+
+void SwPagePreViewWin::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if( MOUSE_LEFT == ( rMEvt.GetModifier() + rMEvt.GetButtons() ) &&
+ 2 == rMEvt.GetClicks() )
+ {
+ Point aDocPos( PixelToLogic( rMEvt.GetPosPixel() ) );
+
+ // was habe wir denn hier getroffen??
+ USHORT nRowCol = ( nRow << 8 ) + nCol; // Zeilen / DoppelSeiten
+ BOOL bDocPos = pViewShell->IsPreViewDocPos( aDocPos, nRowCol,
+ nSttPage, aPgSize );
+
+ if( bDocPos ) // dann kann man ja umschalten
+ {
+ String sNewCrsrPos( String::CreateFromInt32( aDocPos.X() ));
+ ((( sNewCrsrPos += ';' )
+ += String::CreateFromInt32( aDocPos.Y() )) )
+ += ';';
+ rView.SetNewCrsrPos( sNewCrsrPos );
+
+ SfxViewFrame *pTmpFrm = rView.GetViewFrame();
+ pTmpFrm->GetBindings().Execute( SID_VIEWSHELL0, NULL, 0,
+ SFX_CALLMODE_ASYNCHRON );
+ }
+ }
+}
+
+/******************************************************************************
+ * Beschreibung: Userprefs bzw Viewoptions setzen
+ ******************************************************************************/
+
+
+void SwPagePreViewWin::SetPagePreview( BYTE nRow, BYTE nCol )
+{
+ SwMasterUsrPref *pOpt = (SwMasterUsrPref *)SW_MOD()->GetUsrPref(FALSE);
+
+ if (nRow != pOpt->GetPagePrevRow() || nCol != pOpt->GetPagePrevCol())
+ {
+ pOpt->SetPagePrevRow( nRow );
+ pOpt->SetPagePrevCol( nCol );
+ pOpt->SetModified();
+ pOpt->SetDefault( FALSE );
+
+ //VScrollbar updaten!
+ if( rView.StatVScrollbar() )
+ rView.VScrollViewSzChg();
+ }
+}
+
+void SwPagePreViewWin::DataChanged( const DataChangedEvent& )
+{
+ rView.InvalidateBorder(); //Scrollbarbreiten
+ rView.GetDocShell()->UpdateFontList(); //Fontwechsel
+ if ( pViewShell->GetWin() )
+ pViewShell->GetWin()->Invalidate();
+}
+
+
+/* */
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+// dann mal alles fuer die SwPagePreView
+
+
+void SwPagePreView::Execute( SfxRequest &rReq )
+{
+ int eMvMode;
+ BYTE nRow = 1;
+ BOOL bRetVal = FALSE, bRefresh = TRUE;
+
+ USHORT nSttPage = aViewWin.GetSttPage(),
+ nPages = aViewWin.GetRow() * aViewWin.GetCol(),
+ nLineSz = 1 < nPages ? nPages / 2 : 1,
+ nLastSttPg = nPageCount+1 > nPages ? nPageCount+1 - nPages : 0,
+ nDefSttPg = aViewWin.GetDefSttPage();
+
+ switch(rReq.GetSlot())
+ {
+ case FN_REFRESH_VIEW:
+ case FN_STAT_PAGE:
+ case FN_STAT_ZOOM:
+ break;
+
+ case FN_SHOW_FOUR_PAGES:
+ nRow = 2;
+ // keine break;
+
+ case FN_SHOW_TWO_PAGES:
+ aViewWin.CalcWish( nRow, 2 );
+ break;
+
+ case FN_PREVIEW_ZOOM:
+ case SID_ATTR_ZOOM:
+ {
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ if( pArgs && pArgs->Count() >= 2 )
+ {
+
+ USHORT nCols = ((SfxUInt16Item &)pArgs->Get(SID_ATTR_TABLE_COLUMN)).GetValue();
+ USHORT nRows = ((SfxUInt16Item &)pArgs->Get(SID_ATTR_TABLE_ROW)).GetValue();
+ aViewWin.CalcWish( nRows, nCols );
+ }
+ else
+ SwPreViewZoomDlg( aViewWin ).Execute();
+ }
+ break;
+
+ case FN_CHAR_LEFT:
+ if( nDefSttPg == nSttPage-- )
+ {
+ bRefresh = FALSE;
+ break;
+ }
+ aViewWin.SetSttPage( nSttPage );
+ eMvMode = SwPagePreViewWin::MV_CALC; goto MOVEPAGE;
+
+ case FN_CHAR_RIGHT:
+ if( //aViewWin.GetRow() * aViewWin.GetCol() >= nPageCount ||
+ nLastSttPg == nSttPage++ )
+ {
+ bRefresh = FALSE;
+ break;
+ }
+ aViewWin.SetSttPage( nSttPage );
+ eMvMode = SwPagePreViewWin::MV_CALC; goto MOVEPAGE;
+
+ case FN_LINE_UP:
+ case FN_LINE_DOWN:
+//??? if( !nSttPage && 1 < nLineSz )
+// --nLineSz;
+
+ if( FN_LINE_UP == rReq.GetSlot() )
+ {
+ if( nSttPage > nLineSz )
+ nSttPage -= nLineSz;
+ else
+ nSttPage = nDefSttPg;
+ }
+ else
+ {
+ if( nSttPage + nLineSz <= nLastSttPg )
+ nSttPage += nLineSz;
+ else
+ nSttPage = nLastSttPg;
+ }
+
+ if( nSttPage == aViewWin.GetSttPage() )
+ {
+ // keine Aenderung
+ bRefresh = FALSE;
+ break;
+ }
+
+ aViewWin.SetSttPage( nSttPage );
+ eMvMode = SwPagePreViewWin::MV_CALC; goto MOVEPAGE;
+
+ case FN_PAGEUP:
+ eMvMode = SwPagePreViewWin::MV_PAGE_UP; goto MOVEPAGE;
+ case FN_PAGEDOWN:
+ eMvMode = SwPagePreViewWin::MV_PAGE_DOWN; goto MOVEPAGE;
+
+ case FN_START_OF_DOCUMENT:
+ eMvMode = SwPagePreViewWin::MV_DOC_STT; bRetVal = TRUE; goto MOVEPAGE;
+ case FN_END_OF_DOCUMENT:
+ eMvMode = SwPagePreViewWin::MV_DOC_END; bRetVal = TRUE; goto MOVEPAGE;
+MOVEPAGE:
+ {
+ int nRet = ChgPage( eMvMode, TRUE );
+ // return value fuer Basic
+ if(bRetVal)
+ rReq.SetReturnValue(SfxBoolItem(rReq.GetSlot(), nRet == 0));
+
+ bRefresh = 0 != nRet;
+ }
+ break;
+
+ case FN_PRINT_PAGEPREVIEW:
+ {
+ const SwPagePreViewPrtData* pPPVPD = aViewWin.GetViewShell()->GetDoc()->GetPreViewPrtData();
+ // die Sache mit der Orientation
+ if(pPPVPD)
+ {
+ SfxPrinter* pPrinter = GetPrinter();
+ if((pPrinter->GetOrientation() == ORIENTATION_LANDSCAPE)
+ != pPPVPD->GetLandscape())
+ pPrinter->SetOrientation(pPPVPD->GetLandscape() ? ORIENTATION_LANDSCAPE : ORIENTATION_PORTRAIT);
+ }
+ ::SetAppPrintOptions( aViewWin.GetViewShell(), FALSE );
+ bNormalPrint = FALSE;
+ USHORT nPrtSlot = SID_PRINTDOC;
+ rReq.SetSlot( nPrtSlot );
+ SfxViewShell::ExecuteSlot( rReq, SfxViewShell::GetInterface() );
+ rReq.SetSlot( FN_PRINT_PAGEPREVIEW );
+ return;
+ }
+ case FN_PREVIEW_PRINT_OPTIONS :
+ {
+ SwPreviewPrintOptionsDialog aDlg(aViewWin, *this);
+ aDlg.Execute();
+ }
+ break;
+ case SID_PRINTDOCDIRECT:
+ case SID_PRINTDOC:
+ ::SetAppPrintOptions( aViewWin.GetViewShell(), FALSE );
+ bNormalPrint = TRUE;
+ SfxViewShell::ExecuteSlot( rReq, SfxViewShell::GetInterface() );
+ return;
+ 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;
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
+ }
+
+ if( bRefresh )
+ aViewWin.Invalidate();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreView::GetState( SfxItemSet& rSet )
+{
+ SfxWhichIter aIter(rSet);
+ BYTE nRow = 1;
+ USHORT nWhich = aIter.FirstWhich();
+ ASSERT(nWhich, leeres Set);
+
+ while(nWhich)
+ {
+ switch(nWhich)
+ {
+ case FN_START_OF_DOCUMENT:
+ case FN_PAGEUP:
+ if( aViewWin.GetSttPage() == aViewWin.GetDefSttPage() )
+ rSet.DisableItem(nWhich);
+ break;
+
+ case FN_PAGEDOWN:
+ case FN_END_OF_DOCUMENT:
+ {
+ USHORT nNextPg = ( aViewWin.GetRow() * aViewWin.GetCol() ) +
+ aViewWin.GetSttPage() - 1;
+
+ if( nNextPg >= nPageCount )
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case FN_STAT_PAGE:
+ {
+ String aStr( sPageStr );
+ aViewWin.GetStatusStr( aStr, nPageCount );
+ rSet.Put( SfxStringItem( nWhich, aStr) );
+ }
+ break;
+
+ case SID_ATTR_ZOOM:
+ case FN_STAT_ZOOM:
+ {
+ String aStr( String::CreateFromInt32( aViewWin.GetRow() ) );
+ (aStr += 'x') += String::CreateFromInt32( aViewWin.GetCol() );
+ rSet.Put( SfxStringItem( nWhich, aStr) );
+ }
+ break;
+
+ case FN_SHOW_FOUR_PAGES:
+ nRow = 2;
+ // kein break;
+
+ case FN_SHOW_TWO_PAGES:
+ if( 2 == aViewWin.GetCol() && nRow == aViewWin.GetRow() )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FN_PRINT_PAGEPREVIEW:
+ // hat den gleichen Status wie das normale Drucken
+ {
+ const SfxPoolItem* pItem;
+ SfxItemSet aSet( *rSet.GetPool(), SID_PRINTDOC, SID_PRINTDOC );
+ GetSlotState( SID_PRINTDOC, SfxViewShell::GetInterface(), &aSet );
+ if( SFX_ITEM_SET == aSet.GetItemState( SID_PRINTDOC,
+ FALSE, &pItem ))
+ {
+ ((SfxPoolItem*)pItem)->SetWhich( FN_PRINT_PAGEPREVIEW );
+ rSet.Put( *pItem );
+ }
+ }
+ break;
+
+ case SID_PRINTPREVIEW:
+ rSet.Put( SfxBoolItem( nWhich, TRUE ) );
+ break;
+
+ case SID_PRINTDOC:
+ case SID_PRINTDOCDIRECT:
+ GetSlotState( nWhich, SfxViewShell::GetInterface(), &rSet );
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreView::StateUndo(SfxItemSet& rSet)
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+
+ while (nWhich)
+ {
+ rSet.DisableItem(nWhich);
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreView::Init(const SwViewOption * pPrefs)
+{
+ if ( GetViewShell().HasDrawView() )
+ GetViewShell().GetDrawView()->SetAnimationEnabled( FALSE );
+
+ bNormalPrint = TRUE;
+
+ // Die DocSize erfragen und verarbeiten. Ueber die Handler konnte
+ // die Shell nicht gefunden werden, weil die Shell innerhalb CTOR-Phase
+ // nicht in der SFX-Verwaltung bekannt ist.
+
+ if( !pPrefs )
+ pPrefs = SW_MOD()->GetUsrPref(FALSE);
+
+ // die Felder aktualisieren
+ // ACHTUNG: hochcasten auf die EditShell, um die SS zu nutzen.
+ // In den Methoden wird auf die akt. Shell abgefragt!
+ SwEditShell* pESh = (SwEditShell*)&GetViewShell();
+ BOOL bIsModified = pESh->IsModified();
+
+
+ SwViewOption aOpt( *pPrefs );
+ aOpt.SetTab( FALSE );
+ aOpt.SetBlank( FALSE );
+ aOpt.SetHardBlank( FALSE );
+ aOpt.SetParagraph( FALSE );
+ aOpt.SetLineBreak( FALSE );
+ aOpt.SetPageBreak( FALSE );
+ aOpt.SetColumnBreak( FALSE );
+ aOpt.SetSoftHyph( FALSE );
+ aOpt.SetTox( FALSE );
+ aOpt.SetRef( FALSE );
+ aOpt.SetFldName( FALSE );
+ aOpt.SetField( FALSE );
+ aOpt.SetFootNote( FALSE );
+ aOpt.SetPostIts( FALSE );
+ aOpt.SetHidden( FALSE );
+ aOpt.SetSubsLines( FALSE );
+ aOpt.SetViewVLin( FALSE );
+ aOpt.SetViewTabwin( FALSE );
+ aOpt.SetGraphic( TRUE );
+ aOpt.SetTable( TRUE );
+ aOpt.SetSubsTable( FALSE );
+ aOpt.SetSnap( FALSE );
+ aOpt.SetGridVisible( FALSE );
+ aOpt.SetHideSpell( TRUE );
+ aOpt.SetIndexBackground( FALSE );
+ aOpt.SetSectionBounds( FALSE );
+ GetViewShell().ApplyViewOptions( aOpt );
+
+ if( pESh->GetDoc()->IsBrowseMode() )
+ {
+ pESh->GetDoc()->SetBrowseMode( FALSE );
+ pESh->CheckBrowseView( TRUE );
+ }
+
+ pESh->GetPrt( TRUE );
+
+ GetViewShell().CalcLayout();
+ DocSzChgd( GetViewShell().GetDocSize() );
+
+ if( !bIsModified )
+ pESh->ResetModified();
+
+ if(pPrefs->IsViewVScrollBar())
+ CreateVScrollbar();
+ if(pPrefs->IsViewHScrollBar())
+ CreateHScrollbar();
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwPagePreView::SwPagePreView(SfxViewFrame *pFrame, SfxViewShell* pOldSh):
+ SfxViewShell( pFrame, SWVIEWFLAGS ),
+ aViewWin( &pFrame->GetWindow(), *this ),
+ pHScrollbar(0),
+ pVScrollbar(0),
+ pPageUpBtn(0),
+ pPageDownBtn(0),
+ pScrollFill(0),
+ sPageStr( SW_RES(STR_PAGE) ),
+ nPageCount( 0 )
+{
+ SetName(String::CreateFromAscii("PageView" ));
+ SetWindow( &aViewWin );
+ SetHelpId(SW_PAGEPREVIEW);
+
+ SfxObjectShell* pObjShell = pFrame->GetObjectShell();
+ if ( !pOldSh )
+ {
+ //Gibt es schon eine Sicht auf das Dokument?
+ SfxViewFrame *pF = SfxViewFrame::GetFirst( pObjShell );
+ if ( pF == pFrame )
+ pF = SfxViewFrame::GetNext( *pF, pObjShell );
+ if ( pF )
+ pOldSh = pF->GetViewShell();
+ }
+
+ ViewShell *pVS, *pNew;
+
+ if( pOldSh && pOldSh->IsA( TYPE( SwPagePreView ) ) )
+ pVS = &((SwPagePreView*)pOldSh)->GetViewShell();
+ else
+ {
+ if( pOldSh && pOldSh->IsA( TYPE( SwView ) ) )
+ {
+ pVS = ((SwView*)pOldSh)->GetWrtShellPtr();
+ // save the current ViewData of the previous SwView
+ pOldSh->WriteUserData( sSwViewData, FALSE );
+ }
+ else
+ pVS = GetDocShell()->GetWrtShell();
+ if( pVS )
+ {
+ // setze die akt. Seite als die erste
+ USHORT nPhysPg, nVirtPg;
+ ((SwCrsrShell*)pVS)->GetPageNum( nPhysPg, nVirtPg, /*FALSE*/TRUE, FALSE );
+ if( 1 != aViewWin.GetCol() && 1 == nPhysPg )
+ --nPhysPg;
+ aViewWin.SetSttPage( nPhysPg );
+ }
+ }
+
+ if( pVS )
+ pNew = new ViewShell( pVS, &aViewWin, 0, VSHELLFLAG_ISPREVIEW );
+ else
+ {
+ SwDoc* pDoc = ((SwDocShell*)pFrame->GetObjectShell())->GetDoc();
+ pNew = new ViewShell( pDoc, ::GetSpellChecker(), ::GetHyphenator(),
+ &aViewWin, 0, 0, VSHELLFLAG_ISPREVIEW );
+ }
+
+ aViewWin.SetViewShell( pNew );
+ pNew->SetSfxViewShell( this );
+ Init();
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+ SwPagePreView::~SwPagePreView()
+{
+ SetWindow( 0 );
+
+ delete pScrollFill;
+ delete pHScrollbar;
+ delete pVScrollbar;
+ delete pPageUpBtn;
+ delete pPageDownBtn;
+
+/* SfxObjectShell* pDocSh = GetDocShell();
+ TypeId aType = TYPE( SfxTopViewFrame );
+
+ for( SfxViewFrame *pFrame = SfxViewFrame::GetFirst( pDocSh, aType );
+ pFrame; pFrame = SfxViewFrame::GetNext( *pFrame, pDocSh, aType ) )
+ if( pFrame != GetViewFrame() )
+ {
+ // es gibt noch eine weitere Sicht auf unser Dokument, also
+ // aktiviere dieses
+ pFrame->GetFrame()->Appear();
+ break;
+ }
+*/}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwDocShell* SwPagePreView::GetDocShell()
+{
+ return PTR_CAST(SwDocShell, GetViewFrame()->GetObjectShell());
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+int SwPagePreView::_CreateScrollbar( int bHori )
+{
+ Window *pMDI = &GetViewFrame()->GetWindow();
+ SwScrollbar** ppScrollbar = bHori ? &pHScrollbar : &pVScrollbar;
+
+ ASSERT( !*ppScrollbar, "vorher abpruefen!" )
+
+ if( !bHori )
+ {
+
+ pPageUpBtn = new ImageButton(pMDI, SW_RES( BTN_PAGEUP ) );
+ pPageUpBtn->SetHelpId(FN_PAGEUP);
+ pPageDownBtn = new ImageButton(pMDI, SW_RES( BTN_PAGEDOWN ) );
+ pPageDownBtn->SetHelpId(FN_PAGEDOWN);
+ Link aLk( LINK( this, SwPagePreView, BtnPage ) );
+ pPageUpBtn->SetClickHdl( aLk );
+ pPageDownBtn->SetClickHdl( aLk );
+ pPageUpBtn->Show();
+ pPageDownBtn->Show();
+ }
+
+ // wenn beide Scrollbar eingeschaltet werden, dann auch die ScrollbarBox
+ // anlegen
+ if( !pScrollFill && (bHori ? pVScrollbar : pHScrollbar) )
+ {
+ pScrollFill = new ScrollBarBox( pMDI, GetDocShell()->IsInFrame()
+ ? 0 : WB_SIZEABLE );
+ pScrollFill->Show();
+ }
+
+ *ppScrollbar = new SwScrollbar( pMDI, bHori );
+
+ if( !bHori )
+ {
+ VScrollDocSzChg();
+ (*ppScrollbar)->EnableDrag( TRUE );
+ (*ppScrollbar)->SetEndScrollHdl( LINK( this, SwPagePreView, EndScrollHdl ));
+ }
+ else
+ {
+ (*ppScrollbar)->SetRangeMax( 0 );
+ (*ppScrollbar)->SetThumbPos( 0 );
+ (*ppScrollbar)->SetLineSize( 0 );
+ (*ppScrollbar)->SetPageSize( 0 );
+ }
+
+
+ (*ppScrollbar)->SetScrollHdl( LINK( this, SwPagePreView, ScrollHdl ));
+
+ InvalidateBorder();
+ (*ppScrollbar)->Show();
+ return 1;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+int SwPagePreView::_KillScrollbar( int bHori )
+{
+ SwScrollbar** ppScrBar;
+ if( bHori )
+ {
+ if( 0 == *( ppScrBar = &pHScrollbar ) )
+ return 1;
+ }
+ else
+ {
+ if( 0 == *( ppScrBar = &pVScrollbar ) )
+ return 1;
+ DELETEZ(pPageUpBtn);
+ DELETEZ(pPageDownBtn);
+ }
+
+ DELETEZ( *ppScrBar );
+
+ // wird einer der Scrollbar ausgeschaltet, muss auch die ScrollbarBox
+ // entfernt werden
+ if( pScrollFill )
+ DELETEZ( pScrollFill );
+
+ InvalidateBorder();
+ return 1;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+/*
+ * Button-Handler
+ */
+IMPL_LINK_INLINE_START( SwPagePreView, BtnPage, Button *, pButton )
+{
+ int eMvMode = pButton == pPageUpBtn
+ ? SwPagePreViewWin::MV_PAGE_UP
+ : SwPagePreViewWin::MV_PAGE_DOWN;
+ if( ChgPage( eMvMode ) )
+ aViewWin.Invalidate();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SwPagePreView, BtnPage, Button *, pButton )
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+int SwPagePreView::ChgPage( int eMvMode, int bUpdateScrollbar )
+{
+ Rectangle aPixVisArea( aViewWin.LogicToPixel( aVisArea ) );
+ int bChg = aViewWin.MovePage( eMvMode ) ||
+ eMvMode == SwPagePreViewWin::MV_CALC;
+ aVisArea = aViewWin.PixelToLogic( aPixVisArea );
+
+ if( bChg )
+ {
+ // Statusleiste updaten
+ String aStr( sPageStr );
+ aViewWin.GetStatusStr( aStr, nPageCount );
+ SfxBindings& rBindings = GetViewFrame()->GetBindings();
+
+ if( bUpdateScrollbar )
+ {
+ if( pVScrollbar )
+ VScrollViewSzChg();
+
+ static USHORT __READONLY_DATA aInval[] =
+ {
+ FN_START_OF_DOCUMENT, FN_END_OF_DOCUMENT,
+ FN_PAGEUP, FN_PAGEDOWN, 0
+ };
+ rBindings.Invalidate( aInval );
+ }
+ rBindings.SetState( SfxStringItem( FN_STAT_PAGE, aStr ) );
+ }
+ return bChg;
+}
+
+
+/* */
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+// ab hier alles aus der SwView uebernommen
+
+
+void SwPagePreView::CalcAndSetBorderPixel( SvBorder &rToFill, FASTBOOL bInner )
+{
+// const long nAdd = bInner ? 0 : ScrollBar::GetWindowOverlapPixel();
+ const StyleSettings &rSet = aViewWin.GetSettings().GetStyleSettings();
+ const long nTmp = rSet.GetScrollBarSize();// - nAdd;
+ if ( pVScrollbar )
+ rToFill.Right() = nTmp;
+ if ( pHScrollbar )
+ rToFill.Bottom() = nTmp;
+ SetBorderPixel( rToFill );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreView::InnerResizePixel( const Point &rOfst, const Size &rSize )
+{
+ SvBorder aBorder;
+ CalcAndSetBorderPixel( aBorder, TRUE );
+ Rectangle aRect( rOfst, rSize );
+ aRect += aBorder;
+ ViewResizePixel( aViewWin, aRect.TopLeft(), aRect.GetSize(),
+ aViewWin.GetOutputSizePixel(),
+ TRUE,
+ pVScrollbar, pHScrollbar, pPageUpBtn, pPageDownBtn, 0,
+ pScrollFill );
+
+ //EditWin niemals einstellen!
+ //VisArea niemals einstellen!
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreView::OuterResizePixel( const Point &rOfst, const Size &rSize )
+{
+ SvBorder aBorder;
+ CalcAndSetBorderPixel( aBorder, FALSE );
+ ViewResizePixel( aViewWin, rOfst, rSize, aViewWin.GetOutputSizePixel(),
+ FALSE, pVScrollbar,
+ pHScrollbar, pPageUpBtn, pPageDownBtn, 0, pScrollFill );
+
+ //EditWin niemals einstellen!
+
+ Size aTmpSize( aViewWin.GetOutputSizePixel() );
+ Point aBottomRight( aViewWin.PixelToLogic( Point( aTmpSize.Width(), aTmpSize.Height() ) ) );
+ SetVisArea( Rectangle( Point(), aBottomRight ) );
+
+ //Aufruf der DocSzChgd-Methode der Scrollbars ist noetig, da vom maximalen
+ //Scrollrange immer die halbe Hoehe der VisArea abgezogen wird.
+ if ( pVScrollbar )
+ VScrollDocSzChg();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreView::SetVisArea( const Rectangle &rRect, BOOL bUpdateScrollbar )
+{
+ const Point aTopLeft(AlignToPixel(rRect.TopLeft()));
+ const Point aBottomRight(AlignToPixel(rRect.BottomRight()));
+ Rectangle aLR(aTopLeft,aBottomRight);
+
+ if(aLR == aVisArea)
+ return;
+ // keine negative Position, keine neg. Groesse
+
+ if(aLR.Top() < 0)
+ {
+ aLR.Bottom() += Abs(aLR.Top());
+ aLR.Top() = 0;
+ }
+
+ if(aLR.Left() < 0)
+ {
+ aLR.Right() += Abs(aLR.Left());
+ aLR.Left() = 0;
+ }
+ if(aLR.Right() < 0) aLR.Right() = 0;
+ if(aLR.Bottom() < 0) aLR.Bottom() = 0;
+ if(aLR == aVisArea ||
+ // JP 29.10.97: Bug 45173 - Leeres Rechteck nicht beachten
+ ( 0 == aLR.Bottom() - aLR.Top() && 0 == aLR.Right() - aLR.Left() ) )
+ return;
+
+ if( aLR.Left() > aLR.Right() || aLR.Top() > aLR.Bottom() )
+ return;
+
+ //Bevor die Daten veraendert werden ggf. ein Update rufen. Dadurch wird
+ //sichergestellt, daá anliegende Paints korrekt in Dokumentkoordinaten
+ //umgerechnet werden.
+ //Vorsichtshalber tun wir das nur wenn an der Shell eine Action laeuft,
+ //denn dann wir nicht wirklich gepaintet sondern die Rechtecke werden
+ //lediglich (in Dokumentkoordinaten) vorgemerkt.
+ if( GetViewShell().ActionPend() )
+ aViewWin.Update();
+
+ // setze am View-Win die aktuelle Size
+ aVisArea = aLR;
+ aViewWin.SetWinSize( aLR.GetSize() );
+ ChgPage( SwPagePreViewWin::MV_CALC, bUpdateScrollbar );
+
+ aViewWin.Invalidate();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwPagePreView, ScrollHdl, SwScrollbar *, pScrollbar )
+{
+ if( !pScrollbar->IsHoriScroll() &&
+ pScrollbar->GetType() == SCROLL_DRAG && Help::IsQuickHelpEnabled())
+ {
+ // wieviele Seiten scrollen ??
+ String sStateStr(sPageStr);
+ USHORT nThmbPos = (USHORT)pScrollbar->GetThumbPos();
+ if( 1 == aViewWin.GetCol() || !nThmbPos )
+ ++nThmbPos;
+ sStateStr += String::CreateFromInt32( nThmbPos );
+ Point aPos = pScrollbar->GetParent()->OutputToScreenPixel(
+ pScrollbar->GetPosPixel());
+ aPos.Y() = pScrollbar->OutputToScreenPixel(pScrollbar->GetPointerPosPixel()).Y();
+ Size aSize = pScrollbar->GetSizePixel();
+ Rectangle aRect;
+ aRect.Left() = aPos.X() -8;
+ aRect.Right() = aRect.Left();
+ aRect.Top() = aPos.Y();
+ aRect.Bottom() = aRect.Top();
+
+ Help::ShowQuickHelp(pScrollbar, aRect, sStateStr,
+ QUICKHELP_RIGHT|QUICKHELP_VCENTER);
+
+ }
+ else
+ EndScrollHdl( pScrollbar );
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwPagePreView, EndScrollHdl, SwScrollbar *, pScrollbar )
+{
+ if( !pScrollbar->IsHoriScroll() ) // nur Vertikal auswerten
+ {
+ if(Help::IsQuickHelpEnabled())
+ Help::ShowQuickHelp(pScrollbar, Rectangle(), aEmptyStr, 0);
+ // wieviele Seiten scrollen ??
+ USHORT nThmbPos = pScrollbar->GetThumbPos();
+ if( 1 == aViewWin.GetCol() )
+ ++nThmbPos;
+ if( nThmbPos != aViewWin.GetSttPage() )
+ {
+ aViewWin.SetSttPage( nThmbPos );
+ ChgPage( SwPagePreViewWin::MV_CALC, FALSE );
+
+ static USHORT __READONLY_DATA aInval[] =
+ {
+ FN_START_OF_DOCUMENT, FN_END_OF_DOCUMENT, FN_PAGEUP, FN_PAGEDOWN, 0
+ };
+#ifndef PRODUCT
+ {
+ const USHORT* pPtr = aInval + 1;
+ do {
+ ASSERT( *(pPtr - 1) < *pPtr, "falsche Sortierung!" );
+ } while( *++pPtr );
+ }
+#endif
+
+ SfxBindings& rBindings = GetViewFrame()->GetBindings();
+ rBindings.Invalidate( aInval );
+ aViewWin.Invalidate();
+ }
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+Point SwPagePreView::AlignToPixel(const Point &rPt) const
+{
+ return aViewWin.PixelToLogic( aViewWin.LogicToPixel( rPt ) );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreView::DocSzChgd( const Size &rSz )
+{
+ if( aDocSz == rSz )
+ return;
+
+ aDocSz = rSz;
+
+ // die neue Anzahl von Seiten bestimmen
+ USHORT nNewCnt = GetViewShell().GetNumPages();
+ if( nNewCnt == nPageCount )
+ return;
+
+ // dann eine neue Startseite berechnen
+ nPageCount = nNewCnt;
+ if( aVisArea.GetWidth() )
+ {
+ ChgPage( SwPagePreViewWin::MV_CALC, TRUE );
+
+ if( pVScrollbar )
+ VScrollDocSzChg();
+
+ aViewWin.Invalidate();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreView::VScrollViewSzChg()
+{
+ USHORT nVisPage = aViewWin.GetRow() * aViewWin.GetCol(),
+ nLineSz = 1 < nVisPage ? nVisPage / 2 : 1,
+ nSttPg = aViewWin.GetSttPage();
+
+ if( nSttPg && 1 == aViewWin.GetCol() )
+ --nSttPg;
+
+ pVScrollbar->SetVisibleSize( nVisPage );
+ pVScrollbar->SetThumbPos( nSttPg );
+
+ pVScrollbar->SetLineSize( nLineSz );
+ pVScrollbar->SetPageSize( nVisPage );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreView::VScrollDocSzChg()
+{
+ if( pVScrollbar )
+ {
+ USHORT nPgCnt = nPageCount;
+ if( 1 < aViewWin.GetCol() )
+ ++nPgCnt; /* die 0. Seite! */
+ pVScrollbar->SetRangeMax( nPgCnt );
+ VScrollViewSzChg();
+ }
+}
+
+
+/* */
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+// alles zum Thema Drucken
+
+USHORT SwPagePreView::Print( SfxProgress &rProgress, PrintDialog *pDlg )
+{
+ SwWait aWait( *GetDocShell(), TRUE );
+
+ USHORT nRowCol = ( aViewWin.GetRow() << 8 ) +
+ aViewWin.GetCol(); // Zeilen / DoppelSeiten
+
+ ViewShell* pSh = aViewWin.GetViewShell();
+
+ {
+ // die Felder aktualisieren
+ // ACHTUNG: hochcasten auf die EditShell, um die SS zu nutzen.
+ // In den Methoden wird auf die akt. Shell abgefragt!
+ SwEditShell* pESh = (SwEditShell*)pSh;
+ SwDocStat aDocStat;
+ BOOL bIsModified = pESh->IsModified();
+
+ pESh->StartAllAction();
+ pESh->UpdateDocStat( aDocStat );
+ pSh->UpdateFlds();
+ pESh->EndAllAction();
+
+ if( !bIsModified )
+ pESh->ResetModified();
+ }
+
+ // Druckauftrag starten
+ SfxObjectShell *pObjShell = GetViewFrame()->GetObjectShell();
+ SwPrtOptions aOpts( pObjShell->GetTitle(0) );
+
+ BOOL bPrtPros;
+ ::MakeOptions( pDlg, aOpts, &bPrtPros, FALSE, GetPrinter() );
+
+ if( bNormalPrint )
+ {
+ if( bPrtPros )
+ pSh->PrintProspect( aOpts, rProgress );
+ else
+ pSh->Prt( aOpts, rProgress );
+ }
+ else
+ {
+ const SwPagePreViewPrtData* pPPVPD = pSh->GetDoc()->GetPreViewPrtData();
+ if( pPPVPD && pPPVPD->GetCol() && pPPVPD->GetRow() )
+ {
+ // Zeilen / Seiten
+ nRowCol = ( pPPVPD->GetRow() << 8 ) + pPPVPD->GetCol();
+ }
+ else
+ pPPVPD = 0;
+ pSh->PrintPreViewPage( aOpts, nRowCol, rProgress, pPPVPD );
+ }
+
+ return 0; // OK
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SfxPrinter* SwPagePreView::GetPrinter( BOOL bCreate )
+{
+ return aViewWin.GetViewShell()->GetPrt( bCreate );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+USHORT SwPagePreView::SetPrinter( SfxPrinter *pNew, USHORT nDiffFlags )
+{
+ ViewShell &rSh = GetViewShell();
+ SwEditShell &rESh = (SwEditShell&)rSh; //Buh...
+ if( ( SFX_PRINTER_PRINTER | SFX_PRINTER_JOBSETUP ) & nDiffFlags )
+ {
+ rSh.SetPrt( pNew );
+ if( nDiffFlags & SFX_PRINTER_PRINTER )
+ rESh.SetModified();
+ }
+ if ( ( nDiffFlags & SFX_PRINTER_OPTIONS ) == SFX_PRINTER_OPTIONS )
+ ::SetPrinter( pNew, FALSE );
+
+ const BOOL bChgOri = nDiffFlags & SFX_PRINTER_CHG_ORIENTATION ? TRUE : FALSE;
+ const BOOL bChgSize= nDiffFlags & SFX_PRINTER_CHG_SIZE ? TRUE : FALSE;
+ if ( bChgOri || bChgSize )
+ {
+ rESh.StartAllAction();
+ if ( bChgOri )
+ rSh.ChgAllPageOrientation( USHORT(pNew->GetOrientation()) );
+ if ( bChgSize )
+ {
+ Size aSz( SvxPaperInfo::GetPaperSize( pNew ) );
+ rSh.ChgAllPageSize( aSz );
+ }
+ if( !bNormalPrint )
+ aViewWin.CalcWish( aViewWin.GetRow(), aViewWin.GetCol() );
+ rESh.SetModified();
+ rESh.EndAllAction();
+
+ static USHORT __READONLY_DATA aInval[] =
+ {
+ SID_ATTR_LONG_ULSPACE, SID_ATTR_LONG_LRSPACE,
+ SID_RULER_BORDERS, SID_RULER_PAGE_POS, 0
+ };
+#ifndef PRODUCT
+ {
+ const USHORT* pPtr = aInval + 1;
+ do {
+ ASSERT( *(pPtr - 1) < *pPtr, "falsche Sortierung!" );
+ } while( *++pPtr );
+ }
+#endif
+
+ GetViewFrame()->GetBindings().Invalidate(aInval);
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SfxTabPage* SwPagePreView::CreatePrintOptionsPage( Window *pParent,
+ const SfxItemSet &rOptions )
+{
+ return ::CreatePrintOptionsPage( pParent, rOptions, !bNormalPrint );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+PrintDialog* SwPagePreView::CreatePrintDialog( Window *pParent )
+{
+ PrintDialog *pDlg = ::CreatePrintDialog( pParent, 1, 0 );
+ pDlg->DisableRange( PRINTDIALOG_SELECTION );
+ return pDlg;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+Size SwPagePreView::GetOptimalSizePixel() const
+{
+ //JP 09.06.99: was wird hier errechnet ?????
+/* ALT:
+ SfxApplicationWindow* pWin = SFX_APPWINDOW ;
+ Rectangle aRect = pWin->GetClientAreaPixel();
+*/
+ Window& rWin = GetViewFrame()->GetWindow();
+ Rectangle aRect( Point(0, 0), rWin.GetOutputSizePixel() );
+ Size aMaxSize( aRect.GetWidth(), aRect.GetHeight() );
+ Size aInSize = rWin.GetOutputSizePixel();
+ Size aOutSize = rWin.GetSizePixel();
+ USHORT nXBorder = USHORT(aOutSize.Width() - aInSize.Width());
+ USHORT nYBorder = USHORT(aOutSize.Height() - aInSize.Height());
+ aMaxSize.Width() -= nXBorder;
+ //'auf Verdacht' etwas vom Border abziehen (Menue)
+ nYBorder -= (nYBorder - nXBorder) / 2;
+ aMaxSize.Height() -= nYBorder;
+ //mit der max. moeglichen Outputsize guenstigstes Verhaeltnis ausrechnen
+ aViewWin.GetOptimalSize(aMaxSize);
+ // Border wieder dazuzaehlen
+ aMaxSize.Height() += nYBorder;
+ aMaxSize.Width() += nXBorder;
+ return aMaxSize;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwPagePreViewWin::GetOptimalSize( Size& rSize ) const
+{
+ USHORT nRowCol = ( nRow << 8 ) + nCol;
+
+ Size aPageSize;
+ USHORT nVirtPage;
+ pViewShell->CalcPreViewPage( rSize, nRowCol,
+ nSttPage, aPageSize,
+ nVirtPage );
+
+ if(aPageSize.Width() && aPageSize.Height())
+ {
+ long nXRel = (long )aPageSize.Width() * nCol + (( nCol + 1) * 142);
+ nXRel /= rSize.Width();
+ long nYRel = aPageSize.Height() * nRow + (( nRow + 1) * 142);
+ nYRel /= rSize.Height();
+ //n?Rel geben das Verhaeltnis von benoetigten Pixeln zu
+ //vorhandenen Pixeln wieder
+ //Danach wird in der Richtung abgeschnitten, in der mehr Platz ist
+ if(nXRel < nYRel )
+ {
+ rSize.Width() *= nXRel;
+ rSize.Width() /= nYRel;
+ }
+ else
+ {
+ rSize.Height() *= nYRel;
+ rSize.Height() /= nXRel;
+ }
+ }
+}
+
+
+void SwPagePreViewWin::RepaintCoreRect( const SwRect& rRect )
+{
+ USHORT nRowCol = ( nRow << 8 ) + nCol;
+ pViewShell->RepaintCoreRect( rRect, nRowCol, nSttPage, aPgSize );
+}
+
+BOOL SwPagePreView::HandleWheelCommands( const CommandEvent& rCEvt )
+{
+ BOOL bOk = FALSE;
+ const CommandWheelData* pWData = rCEvt.GetWheelData();
+ if( pWData && COMMAND_WHEEL_ZOOM == pWData->GetMode() )
+ {
+ BYTE nRow = aViewWin.GetRow(), nCol = aViewWin.GetCol();
+ if( 0L > pWData->GetDelta() )
+ {
+ if( PVIEW_MIN_ROW < nRow ) --nRow;
+ if( PVIEW_MIN_COL < nCol ) --nCol;
+ }
+ else
+ {
+ if( PVIEW_MAX_ROW > nRow ) ++nRow;
+ if( PVIEW_MAX_COL > nCol ) ++nCol;
+ }
+ aViewWin.CalcWish( nRow, nCol );
+ aViewWin.Invalidate();
+ bOk = TRUE;
+ }
+ else
+ bOk = aViewWin.HandleScrollCommand( rCEvt, 0,
+ pVScrollbar && pVScrollbar->IsVisible(TRUE) ? pVScrollbar : 0 );
+ return bOk;
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.201 2000/09/18 16:06:10 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.200 2000/09/07 15:59:32 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.199 2000/08/14 17:25:29 jp
+ Task #77422#: PrintPreView in the same window
+
+ Revision 1.198 2000/08/07 11:48:15 jp
+ PagePreView replace the current view
+
+ Revision 1.197 2000/06/19 11:33:51 os
+ #73648# display all values after <standard> has been reset
+
+ Revision 1.196 2000/05/26 07:21:34 os
+ old SW Basic API Slots removed
+
+ Revision 1.195 2000/05/23 19:42:35 jp
+ Bugfixes for Unicode
+
+ Revision 1.194 2000/05/11 12:41:59 tl
+ if[n]def ONE_LINGU entfernt
+
+ Revision 1.193 2000/05/10 11:53:20 os
+ Basic API removed
+
+ Revision 1.192 2000/04/18 15:02:50 os
+ UNICODE
+
+ Revision 1.191 2000/03/23 16:17:01 os
+ #74433# dont show section boundaries in print preview
+
+ Revision 1.190 2000/03/03 15:17:04 os
+ StarView remainders removed
+
+ Revision 1.189 2000/02/11 14:59:07 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.188 2000/01/04 15:40:55 os
+ #71433# no index background in preview
+
+ Revision 1.187 1999/12/14 14:32:01 jp
+ Bug #69595#: print can create single Jobs
+
+ Revision 1.186 1999/10/25 19:42:26 tl
+ ongoing ONE_LINGU implementation
+
+ Revision 1.185 1999/09/10 13:19:10 os
+ Chg: resource types removed
+
+ Revision 1.184 1999/08/31 08:40:12 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+
+ Rev 1.183 31 Aug 1999 10:40:12 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+ Rev 1.182 08 Jul 1999 18:45:16 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.181 10 Jun 1999 10:52:32 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.180 09 Jun 1999 19:33:28 JP
+ have to change: no cast from GetpApp to SfxApp/OffApp, SfxShell only subclass of SfxApp
+
+ Rev 1.179 11 May 1999 08:41:40 OS
+ #65779# SaveValue nach hinten verschoben
+
+ Rev 1.178 08 Apr 1999 10:59:12 OS
+ #61864# Controls jetzt auch initial leer, wenn noch nichts gesetzt ist
+
+ Rev 1.177 10 Mar 1999 12:02:54 MA
+ #52642# Fontwechsel im DataChanged
+
+ Rev 1.176 02 Mar 1999 16:03:28 AMA
+ Fix #62568#: Invalidierungen so sparsam wie moeglich, so gruendlich wie noetig
+
+ Rev 1.175 01 Mar 1999 13:54:40 JP
+ #62496# VScrollbar IMMER pruefen
+
+ Rev 1.174 26 Feb 1999 15:07:28 OS
+ #62496# VScrollbar IMMER pruefen
+
+ Rev 1.173 12 Nov 1998 12:24:26 OS
+ #59297# Einstellungen bei Standard zuruecksetzen
+
+ Rev 1.172 29 Oct 1998 11:52:40 OM
+ #58593# Selektion nur anbieten, wenn auch vorhanden
+
+ Rev 1.171 15 Oct 1998 13:39:20 OS
+ #57602# printPages mit optionen
+
+ Rev 1.170 29 Sep 1998 14:35:44 OS
+ #57281#, #57264# Zoom der Preview mit Controller, Preview-Close ueber eigenen Slot
+
+*************************************************************************/
+
diff --git a/sw/source/ui/uiview/pview.hrc b/sw/source/ui/uiview/pview.hrc
new file mode 100644
index 000000000000..417177c09dfb
--- /dev/null
+++ b/sw/source/ui/uiview/pview.hrc
@@ -0,0 +1,108 @@
+/*************************************************************************
+ *
+ * $RCSfile: pview.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "view.hrc"
+
+#define FT_COL 1
+#define FT_ROW 2
+#define ED_COL 4
+#define ED_ROW 5
+#define GB_PREVIEW 10
+
+#define BT_OK 20
+#define BT_CANCEL 21
+#define BT_HELP 22
+
+// Grenzwerte fuers Zooming (werden auch im piew.cxx benutzt!)
+#define PVIEW_MIN_ROW 1
+#define PVIEW_MAX_ROW 10
+#define PVIEW_MIN_COL 1
+#define PVIEW_MAX_COL 20
+
+//Dialog Druckoptionen
+#define GB_ROWCOL 1
+#define FT_ROWS 2
+#define NF_ROWS 3
+#define FT_COLS 4
+#define NF_COLS 5
+#define GB_MARGINS 6
+#define GB_DISTANCE 7
+#define GB_ORIENTATION 8
+
+#define GB_PREVIEW 10
+#define WIN_PREVIEW 11
+
+
+#define FT_LMARGIN 12
+#define MF_LMARGIN 13
+#define FT_RMARGIN 14
+#define MF_RMARGIN 15
+#define FT_TMARGIN 16
+#define MF_TMARGIN 17
+#define FT_BMARGIN 18
+#define MF_BMARGIN 19
+#define FT_HMARGIN 20
+#define MF_HMARGIN 21
+#define FT_VMARGIN 22
+#define MF_VMARGIN 23
+#define PB_STANDARD 24
+
+#define RB_LANDSCAPE 24
+#define RB_PORTRAIT 25
diff --git a/sw/source/ui/uiview/pview.src b/sw/source/ui/uiview/pview.src
new file mode 100644
index 000000000000..e7a1a810f057
--- /dev/null
+++ b/sw/source/ui/uiview/pview.src
@@ -0,0 +1,988 @@
+/*************************************************************************
+ *
+ * $RCSfile: pview.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include <svx/svxids.hrc>
+#include "pview.hrc"
+#include "helpid.h"
+#include "cmdid.h"
+ModalDialog DLG_PAGEPREVIEW_PRINTOPTIONS
+{
+ HelpID = HID_DLG_PRV_PRT_OPTIONS ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Moveable = TRUE ;
+ Size = MAP_APPFONT ( 312 , 131 ) ;
+ Text = "Druckoptionen" ;
+ Text [ ENGLISH ] = "Print options" ;
+ GroupBox GB_ROWCOL
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 150 , 26 ) ;
+ Text = "Aufteilung" ;
+ Text [ English ] = "Aufteilung" ;
+
+ TEXT[ italian ] = "Distribuzione";
+ TEXT[ portuguese_brazilian ] = "Aufteilung";
+ TEXT[ portuguese ] = "Distribuição";
+ TEXT[ danish ] = "Opdeling";
+ TEXT[ french ] = "Répartition";
+ TEXT[ swedish ] = "Uppdelning";
+ TEXT[ dutch ] = "Verdeling";
+ TEXT[ spanish ] = "Distribución";
+ TEXT[ english_us ] = "Distribution";
+ TEXT[ chinese_simplified ] = "·Ö²¼";
+ TEXT[ russian ] = "Ðàñïðåäåëåíèå";
+ TEXT[ polish ] = "Rozdzielanie";
+ TEXT[ japanese ] = "•ªŠ„";
+ TEXT[ chinese_traditional ] = "¤À¥¬";
+ TEXT[ arabic ] = "ÇáÊÞÓíã";
+ TEXT[ dutch ] = "Verdeling";
+ TEXT[ chinese_simplified ] = "·Ö²¼";
+ TEXT[ greek ] = "ÊáôáíïìÞ";
+ TEXT[ korean ] = "¹èÆ÷";
+ TEXT[ turkish ] = "Daðýlým";
+ TEXT[ language_user1 ] = " ";
+ };
+ FixedText FT_ROWS
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "~Zeilen" ;
+ Text [ ENGLISH ] = "~Rows" ;
+ Left = TRUE ;
+ TEXT[ italian ] = "~Righe";
+ TEXT[ portuguese_brazilian ] = "~Zeilen";
+ TEXT[ portuguese ] = "~Linhas";
+ TEXT[ danish ] = "Rækker";
+ TEXT[ french ] = "~Lignes";
+ TEXT[ swedish ] = "~Rader";
+ TEXT[ dutch ] = "~Rijen";
+ TEXT[ spanish ] = "~Filas";
+ TEXT[ english_us ] = "~Rows";
+ TEXT[ chinese_simplified ] = "ÐÐ(~R)";
+ TEXT[ russian ] = "Ñòðîêè";
+ TEXT[ polish ] = "Wiersze";
+ TEXT[ japanese ] = "c(~R)";
+ TEXT[ chinese_traditional ] = "¦æ(~R)";
+ TEXT[ arabic ] = "ÕÝæÝ";
+ TEXT[ dutch ] = "~Rijen";
+ TEXT[ chinese_simplified ] = "ÐÐ(~R)";
+ TEXT[ greek ] = "ÃñáììÝò";
+ TEXT[ korean ] = "Çà(~R)";
+ TEXT[ turkish ] = "Sa~týr";
+ TEXT[ language_user1 ] = " ";
+ };
+ NumericField NF_ROWS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 45 , 14 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = PVIEW_MIN_ROW ;
+ Maximum = PVIEW_MAX_ROW ;
+ Value = 1 ;
+ First = PVIEW_MIN_COL ;
+ Last = PVIEW_MAX_COL ;
+ };
+ FixedText FT_COLS
+ {
+ Pos = MAP_APPFONT ( 84 , 15 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "~Spalten" ;
+ Text [ ENGLISH ] = "~Spalten" ;
+ Left = TRUE ;
+ TEXT[ italian ] = "~Colonne";
+ TEXT[ portuguese_brazilian ] = "~Spalten";
+ TEXT[ portuguese ] = "~Colunas";
+ 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 ] = "Kolumny";
+ TEXT[ japanese ] = "‰¡(~C)";
+ TEXT[ chinese_traditional ] = "Äæ(~C)";
+ TEXT[ arabic ] = "ÃÚãÏÉ";
+ TEXT[ dutch ] = "~Kolommen";
+ TEXT[ chinese_simplified ] = "À¸(~C)";
+ TEXT[ greek ] = "ÓôÞëåò";
+ TEXT[ korean ] = "¿­(~C)";
+ TEXT[ turkish ] = "~Sütun";
+ TEXT[ language_user1 ] = " ";
+ };
+ NumericField NF_COLS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 117 , 14 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = PVIEW_MIN_COL ;
+ Maximum = PVIEW_MAX_COL ;
+ Value = 1 ;
+ First = PVIEW_MIN_COL ;
+ Last = PVIEW_MAX_COL ;
+ };
+ GroupBox GB_MARGINS
+ {
+ Pos = MAP_APPFONT ( 6 , 32 ) ;
+ Size = MAP_APPFONT ( 150 , 41 ) ;
+ Text = "Ränder" ;
+ Text [ English ] = "Margins" ;
+
+ TEXT[ italian ] = "Margini";
+ TEXT[ portuguese_brazilian ] = "Ränder";
+ TEXT[ portuguese ] = "Margens";
+ TEXT[ danish ] = "Margener";
+ TEXT[ french ] = "Marges";
+ TEXT[ swedish ] = "Marginaler";
+ TEXT[ dutch ] = "Marges";
+ TEXT[ spanish ] = "Márgenes";
+ TEXT[ english_us ] = "Borders";
+ TEXT[ chinese_simplified ] = "±ß¾à";
+ TEXT[ russian ] = "Ïîëÿ";
+ TEXT[ polish ] = "Marginesy";
+ TEXT[ japanese ] = "—]”’";
+ TEXT[ chinese_traditional ] = "̊ƒ";
+ TEXT[ arabic ] = "ÇáåæÇãÔ";
+ TEXT[ dutch ] = "Marges";
+ TEXT[ chinese_simplified ] = "±ß¾à";
+ TEXT[ greek ] = "Ðåñéèþñéá";
+ TEXT[ korean ] = "¿Ü°û¼±";
+ TEXT[ turkish ] = "Kenarlar";
+ TEXT[ language_user1 ] = " ";
+ };
+ FixedText FT_LMARGIN
+ {
+ Pos = MAP_APPFONT ( 12 , 44 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "~Links" ;
+ Text [ ENGLISH ] = "~Left" ;
+ Left = TRUE ;
+ TEXT[ italian ] = "A ~sinistra";
+ TEXT[ portuguese_brazilian ] = "~Links";
+ TEXT[ portuguese ] = "~Esquerda";
+ TEXT[ danish ] = "Venstre";
+ TEXT[ french ] = "~À gauche";
+ TEXT[ swedish ] = "~Vänster";
+ TEXT[ dutch ] = "~Links";
+ TEXT[ spanish ] = "~Izquierda";
+ TEXT[ english_us ] = "~Left";
+ TEXT[ chinese_simplified ] = "×ó(~L)";
+ TEXT[ russian ] = "Ñëåâà";
+ TEXT[ polish ] = "Z lewej";
+ TEXT[ japanese ] = "¶(~L)";
+ TEXT[ chinese_traditional ] = "¥ª(~L)";
+ TEXT[ arabic ] = "íÓÇÑ";
+ TEXT[ dutch ] = "~Links";
+ TEXT[ chinese_simplified ] = "×ó(~L)";
+ TEXT[ greek ] = "ÁñéóôåñÜ";
+ TEXT[ korean ] = "¿ÞÂÊ(~L)";
+ TEXT[ turkish ] = "S~ol";
+ TEXT[ language_user1 ] = " ";
+ };
+ MetricField MF_LMARGIN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 45 , 43 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 1 ;
+ Unit = FUNIT_CM ;
+ SpinSize = 10 ;
+ Minimum = 0 ;
+ Maximum = 9999 ;
+ First = 0 ;
+ Last = 2000 ;
+ };
+ FixedText FT_RMARGIN
+ {
+ Pos = MAP_APPFONT ( 84 , 44 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "~Rechts" ;
+ Text [ ENGLISH ] = "~Right" ;
+ Left = TRUE ;
+ TEXT[ italian ] = "A ~destra";
+ TEXT[ portuguese_brazilian ] = "~Rechts";
+ TEXT[ portuguese ] = "~Direita";
+ TEXT[ danish ] = "Højre";
+ TEXT[ french ] = "~À droite";
+ TEXT[ swedish ] = "~Höger";
+ TEXT[ dutch ] = "R~echts";
+ TEXT[ spanish ] = "~Derecha";
+ TEXT[ english_us ] = "~Right";
+ TEXT[ chinese_simplified ] = "ÓÒ(~R)";
+ TEXT[ russian ] = "Ñïðàâà";
+ TEXT[ polish ] = "Z prawej";
+ TEXT[ japanese ] = "‰E(~R)";
+ TEXT[ chinese_traditional ] = "¥k(~R)";
+ TEXT[ arabic ] = "íãíä";
+ TEXT[ dutch ] = "R~echts";
+ TEXT[ chinese_simplified ] = "ÓÒ(~R)";
+ TEXT[ greek ] = "ÄåîéÜ";
+ TEXT[ korean ] = "¿À¸¥ÂÊ(~R)";
+ TEXT[ turkish ] = "Sa~ð";
+ TEXT[ language_user1 ] = " ";
+ };
+ MetricField MF_RMARGIN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 117 , 43 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 1 ;
+ Unit = FUNIT_CM ;
+ SpinSize = 10 ;
+ Minimum = 0 ;
+ Maximum = 9999 ;
+ First = 0 ;
+ Last = 2000 ;
+ };
+ FixedText FT_TMARGIN
+ {
+ Pos = MAP_APPFONT ( 12 , 59 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "~Oben" ;
+ Text [ ENGLISH ] = "~Top" ;
+ Left = TRUE ;
+ TEXT[ italian ] = "~In alto";
+ TEXT[ portuguese_brazilian ] = "~Oben";
+ TEXT[ portuguese ] = "~Topo";
+ TEXT[ danish ] = "Foroven";
+ TEXT[ french ] = "~Sup.";
+ TEXT[ swedish ] = "~Uppåt";
+ TEXT[ dutch ] = "~Boven";
+ TEXT[ spanish ] = "A~rriba";
+ TEXT[ english_us ] = "~Top";
+ TEXT[ chinese_simplified ] = "ÉÏ(~T)";
+ TEXT[ russian ] = "Ñâåðõó";
+ TEXT[ polish ] = "W górze";
+ TEXT[ japanese ] = "ã(~T)";
+ TEXT[ chinese_traditional ] = "¤W(~T)";
+ TEXT[ arabic ] = "ÃÚáì";
+ TEXT[ dutch ] = "~Boven";
+ TEXT[ chinese_simplified ] = "ÉÏ(~T)";
+ TEXT[ greek ] = "ÐÜíù";
+ TEXT[ korean ] = "ˤ(~T)";
+ TEXT[ turkish ] = "~Üst";
+ TEXT[ language_user1 ] = " ";
+ };
+ MetricField MF_TMARGIN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 45 , 58 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 1 ;
+ Unit = FUNIT_CM ;
+ SpinSize = 10 ;
+ Minimum = 0 ;
+ Maximum = 9999 ;
+ First = 0 ;
+ Last = 2000 ;
+ };
+ FixedText FT_BMARGIN
+ {
+ Pos = MAP_APPFONT ( 84 , 59 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "~Unten" ;
+ Text [ ENGLISH ] = "~Bottom" ;
+ Left = TRUE ;
+ TEXT[ italian ] = "~In basso";
+ TEXT[ portuguese_brazilian ] = "~Unten";
+ TEXT[ portuguese ] = "~Inferior";
+ TEXT[ danish ] = "Forneden";
+ TEXT[ french ] = "~Inf.";
+ TEXT[ swedish ] = "~Nedåt";
+ TEXT[ dutch ] = "~Onder";
+ TEXT[ spanish ] = "A~bajo";
+ TEXT[ english_us ] = "~Bottom";
+ TEXT[ chinese_simplified ] = "ÏÂ(~B)";
+ TEXT[ russian ] = "Ñíèçó";
+ TEXT[ polish ] = "W dole";
+ TEXT[ japanese ] = "‰º(~B)";
+ TEXT[ chinese_traditional ] = "¤U(~B)";
+ TEXT[ arabic ] = "ÃÓÝá";
+ TEXT[ dutch ] = "~Onder";
+ TEXT[ chinese_simplified ] = "ÏÂ(~B)";
+ TEXT[ greek ] = "ÊÜôù";
+ TEXT[ korean ] = "¾Æ·¡(~B)";
+ TEXT[ turkish ] = "~Alt";
+ TEXT[ language_user1 ] = " ";
+ };
+ MetricField MF_BMARGIN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 117 , 58 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 1 ;
+ Unit = FUNIT_CM ;
+ SpinSize = 10 ;
+ Minimum = 0 ;
+ Maximum = 9999 ;
+ First = 0 ;
+ Last = 2000 ;
+ };
+ GroupBox GB_DISTANCE
+ {
+ Pos = MAP_APPFONT ( 6 , 76 ) ;
+ Size = MAP_APPFONT ( 150 , 26 ) ;
+ Text = "Abstand" ;
+ Text [ English ] = "Distance" ;
+
+ TEXT[ italian ] = "Distanza";
+ TEXT[ portuguese_brazilian ] = "Abstand";
+ TEXT[ portuguese ] = "Espaçamento";
+ TEXT[ danish ] = "Afstand";
+ TEXT[ french ] = "Écart";
+ TEXT[ swedish ] = "Avstånd";
+ TEXT[ dutch ] = "Afstand";
+ TEXT[ spanish ] = "Espacio";
+ TEXT[ english_us ] = "Spacing";
+ TEXT[ chinese_simplified ] = "¼ä¸ô";
+ TEXT[ russian ] = "Ðàññòîÿíèå";
+ TEXT[ polish ] = "Odstêp";
+ TEXT[ japanese ] = "ŠÔŠu";
+ TEXT[ chinese_traditional ] = "¶¡¹j";
+ TEXT[ arabic ] = "ÇáÊÈÇÚÏ";
+ TEXT[ dutch ] = "Afstand";
+ TEXT[ chinese_simplified ] = "¼ä¸ô";
+ TEXT[ greek ] = "Áðüóôáóç";
+ TEXT[ korean ] = "°£°Ý";
+ TEXT[ turkish ] = "Aralýk";
+ TEXT[ language_user1 ] = " ";
+ };
+ FixedText FT_HMARGIN
+ {
+ Pos = MAP_APPFONT ( 12 , 88 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text = "H~orizontal" ;
+ Text [ ENGLISH ] = "H~orizontal" ;
+ Left = TRUE ;
+ TEXT[ italian ] = "~Orizzontale";
+ TEXT[ portuguese_brazilian ] = "H~orizontal";
+ TEXT[ portuguese ] = "Espaçamento ~horizontal";
+ TEXT[ danish ] = "Vandret";
+ TEXT[ french ] = "~Horizontal";
+ TEXT[ swedish ] = "H~orisontell";
+ TEXT[ dutch ] = "~Horizontaal";
+ TEXT[ spanish ] = "~Horizontal";
+ TEXT[ english_us ] = "~Horizontal";
+ TEXT[ chinese_simplified ] = "ºáÏò(~H)";
+ TEXT[ russian ] = "Ãîðèçîíòàëüíî";
+ TEXT[ polish ] = "Poziomo";
+ TEXT[ japanese ] = "‰¡(~H)";
+ TEXT[ chinese_traditional ] = "¾î¦V(~H)";
+ TEXT[ arabic ] = "ÃÝÞí";
+ TEXT[ dutch ] = "~Horizontaal";
+ TEXT[ chinese_simplified ] = "ºáÏò(~H)";
+ TEXT[ greek ] = "Ïñéæüíôéá";
+ TEXT[ korean ] = "¼öÆò(~H)";
+ TEXT[ turkish ] = "~Yatay";
+ TEXT[ language_user1 ] = " ";
+ };
+
+ MetricField MF_HMARGIN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 45 , 87 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 1 ;
+ Unit = FUNIT_CM ;
+ SpinSize = 10 ;
+ Minimum = 0 ;
+ Maximum = 9999 ;
+ First = 0 ;
+ Last = 2000 ;
+ };
+ FixedText FT_VMARGIN
+ {
+ Pos = MAP_APPFONT ( 84 , 88 ) ;
+ Size = MAP_APPFONT ( 36 , 10 ) ;
+ Text = "~Vertikal" ;
+ Text [ ENGLISH ] = "~Vertical" ;
+ Left = TRUE ;
+ TEXT[ italian ] = "~Verticale";
+ TEXT[ portuguese_brazilian ] = "~Vertikal";
+ TEXT[ portuguese ] = "~Vertical";
+ TEXT[ danish ] = "Lodret";
+ TEXT[ french ] = "~Vertical";
+ TEXT[ swedish ] = "~Vertikalt";
+ TEXT[ dutch ] = "~Verticaal";
+ TEXT[ spanish ] = "~Vertical";
+ TEXT[ english_us ] = "~Vertically";
+ TEXT[ chinese_simplified ] = "×ÝÏò(~V)";
+ TEXT[ russian ] = "Âåðòèêàëüíî";
+ TEXT[ polish ] = "Pionowo";
+ TEXT[ japanese ] = "c(~V)";
+ TEXT[ chinese_traditional ] = "Áa¦V(~V)";
+ TEXT[ arabic ] = "ÑÃÓí";
+ TEXT[ dutch ] = "~Verticaal";
+ TEXT[ chinese_simplified ] = "×ÝÏò(~V)";
+ TEXT[ greek ] = "Êáôáêüñõöá";
+ TEXT[ korean ] = "¼öÁ÷(~V)";
+ TEXT[ turkish ] = "~Dikey";
+ TEXT[ language_user1 ] = " ";
+ };
+
+ MetricField MF_VMARGIN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 117 , 87 ) ;
+ Size = MAP_APPFONT ( 36 , 12 ) ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 1 ;
+ Unit = FUNIT_CM ;
+ SpinSize = 10 ;
+ Minimum = 0 ;
+ Maximum = 9999 ;
+ First = 0 ;
+ Last = 2000 ;
+ };
+ GroupBox GB_ORIENTATION
+ {
+ Pos = MAP_APPFONT ( 6 , 102 ) ;
+ Size = MAP_APPFONT ( 150 , 26 ) ;
+ Text = "Format" ;
+ Text [ English ] = "Format" ;
+ TEXT[ italian ] = "Formato";
+ TEXT[ portuguese_brazilian ] = "Format";
+ TEXT[ portuguese ] = "Formato";
+ TEXT[ danish ] = "Format";
+ TEXT[ french ] = "Format";
+ TEXT[ swedish ] = "Format";
+ TEXT[ dutch ] = "Notatie";
+ TEXT[ spanish ] = "Formato";
+ TEXT[ english_us ] = "Format";
+ TEXT[ chinese_simplified ] = "¸ñʽ";
+ TEXT[ russian ] = "Ôîðìàò";
+ TEXT[ polish ] = "Format";
+ TEXT[ japanese ] = "‘Ž®";
+ TEXT[ chinese_traditional ] = "®æ¦¡";
+ TEXT[ arabic ] = "ÇáÊäÓíÞ";
+ TEXT[ dutch ] = "Notatie";
+ TEXT[ chinese_simplified ] = "¸ñʽ";
+ TEXT[ greek ] = "ÌïñöÞ";
+ TEXT[ korean ] = "¼­½Ä";
+ TEXT[ turkish ] = "Format";
+ TEXT[ language_user1 ] = " ";
+ };
+ RadioButton RB_LANDSCAPE
+ {
+ Pos = MAP_APPFONT ( 12 , 113 ) ;
+ Size = MAP_APPFONT ( 60 , 12 ) ;
+ Text = "~Querformat" ;
+ Text [ ENGLISH ] = "~Landscape" ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ TEXT[ italian ] = "Orizzontale";
+ TEXT[ portuguese_brazilian ] = "~Querformat";
+ TEXT[ portuguese ] = "Formato ~horizontal";
+ TEXT[ danish ] = "Liggende";
+ TEXT[ french ] = "~Paysage";
+ TEXT[ swedish ] = "~Liggande";
+ TEXT[ dutch ] = "~Liggend";
+ TEXT[ spanish ] = "~Horizontal";
+ TEXT[ english_us ] = "~Landscape";
+ TEXT[ chinese_simplified ] = "ºáÏò(~L)";
+ TEXT[ russian ] = "Àëüáîìíûé ôîðìàò";
+ TEXT[ polish ] = "Format poziomy";
+ TEXT[ japanese ] = "‰¡(~L)";
+ TEXT[ chinese_traditional ] = "¾î¦V(~L)";
+ TEXT[ arabic ] = "ÈÇáÚÑÖ";
+ TEXT[ dutch ] = "~Liggend";
+ TEXT[ chinese_simplified ] = "ºáÏò(~L)";
+ TEXT[ greek ] = "Ïñéæïíôßùò";
+ TEXT[ korean ] = "°¡·Î(~L)";
+ TEXT[ turkish ] = "Ya~tay";
+ TEXT[ language_user1 ] = " ";
+ };
+ RadioButton RB_PORTRAIT
+ {
+ Pos = MAP_APPFONT ( 84 , 113 ) ;
+ Size = MAP_APPFONT ( 60 , 12 ) ;
+ Text = "Ho~chformat" ;
+ Text [ ENGLISH ] = "~Portrait" ;
+ TEXT[ italian ] = "Verticale";
+ TEXT[ portuguese_brazilian ] = "Ho~chformat";
+ TEXT[ portuguese ] = "Formato ~vertical";
+ TEXT[ danish ] = "Stående";
+ TEXT[ french ] = "P~ortrait";
+ TEXT[ swedish ] = "S~tående";
+ TEXT[ dutch ] = "~Staand";
+ TEXT[ spanish ] = "~Vertical";
+ TEXT[ english_us ] = "P~ortrait";
+ TEXT[ chinese_simplified ] = "×ÝÏò(~O)";
+ TEXT[ russian ] = "Êíèæíûé ôîðìàò";
+ TEXT[ polish ] = "Format pionowy";
+ TEXT[ japanese ] = "c(~O)";
+ TEXT[ chinese_traditional ] = "Áa¦V(~O)";
+ TEXT[ arabic ] = "ÈÇáØæá";
+ TEXT[ dutch ] = "~Staand";
+ TEXT[ chinese_simplified ] = "×ÝÏò(~O)";
+ TEXT[ greek ] = "Êáôáêüñõöá";
+ TEXT[ korean ] = "¼¼·Î(~O)";
+ TEXT[ turkish ] = "Di~key";
+ TEXT[ language_user1 ] = " ";
+ };
+ GroupBox GB_PREVIEW
+ {
+ Pos = MAP_APPFONT ( 159 , 3 ) ;
+ Size = MAP_APPFONT ( 96 , 125 ) ;
+ Text = "Vorschau" ;
+ Text [ English ] = "Preview" ;
+ TEXT[ italian ] = "Anteprima";
+ TEXT[ portuguese_brazilian ] = "Vorschau";
+ TEXT[ portuguese ] = "Previsualizar";
+ 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[ dutch ] = "Voorbeeld";
+ TEXT[ chinese_simplified ] = "Ô¤ÊÓ";
+ TEXT[ greek ] = "Ðñïåðéóêüðçóç";
+ TEXT[ korean ] = "¹Ì¸®º¸±â";
+ TEXT[ turkish ] = "Önizleme";
+ TEXT[ language_user1 ] = " ";
+ };
+ Window WIN_PREVIEW
+ {
+ Pos = MAP_APPFONT ( 162 , 12 ) ;
+ Size = MAP_APPFONT ( 90 , 113 ) ;
+ };
+
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 258 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 258 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 258 , 49 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton PB_STANDARD
+ {
+ Pos = MAP_APPFONT ( 258 , 66 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Text = "Standar~d" ;
+ Text [ English ] = "Standar~d" ;
+ TEXT[ italian ] = "Standar~d";
+ TEXT[ portuguese_brazilian ] = "Standar~d";
+ TEXT[ portuguese ] = "~Padrão";
+ TEXT[ danish ] = "Standar~d";
+ TEXT[ french ] = "Par ~défaut";
+ TEXT[ swedish ] = "Standar~d";
+ TEXT[ dutch ] = "Standaar~d";
+ TEXT[ spanish ] = "~Predeterminado";
+ TEXT[ english_us ] = "~Default";
+ TEXT[ chinese_simplified ] = "ĬÈÏ(~D)";
+ TEXT[ russian ] = "Ñòàíäàðò";
+ TEXT[ polish ] = "Domyœlnie";
+ TEXT[ japanese ] = "•W€(~D)";
+ TEXT[ language_user1 ] = " ";
+ TEXT[ chinese_traditional ] = "Àq»{(~D)";
+ TEXT[ arabic ] = "ÇÝÊÑÇÖí";
+ TEXT[ dutch ] = "Standaar~d";
+ TEXT[ chinese_simplified ] = "ĬÈÏ(~D)";
+ TEXT[ greek ] = "ÐñïåðéëïãÞ";
+ TEXT[ korean ] = "±âº»°ª(~D)";
+ TEXT[ turkish ] = "Standar~t";
+ };
+ TEXT[ italian ] = "Opzioni di stampa";
+ TEXT[ portuguese_brazilian ] = "Druckoptionen";
+ TEXT[ portuguese ] = "Opções de impressão";
+ TEXT[ danish ] = "Udskriftsindstillinger";
+ TEXT[ french ] = "Options d'impression";
+ TEXT[ swedish ] = "Utskriftsalternativ";
+ TEXT[ dutch ] = "Afdrukopties";
+ TEXT[ spanish ] = "Opciones de impresión";
+ TEXT[ english_us ] = "Print Options";
+ TEXT[ chinese_simplified ] = "´òÓ¡Ñ¡Ïî";
+ TEXT[ russian ] = "Ïàðàìåòðû ïå÷àòè";
+ TEXT[ polish ] = "Opcje wydruku";
+ TEXT[ japanese ] = "ˆóüµÌß¼®Ý";
+ TEXT[ chinese_traditional ] = "¦C¦L¿ï¶µ";
+ TEXT[ arabic ] = "ÎíÇÑÇÊ ÇáØÈÇÚÉ";
+ TEXT[ dutch ] = "Afdrukopties";
+ TEXT[ chinese_simplified ] = "´òÓ¡Ñ¡Ïî";
+ TEXT[ greek ] = "ÅðéëïãÝò åêôýðùóçò";
+ TEXT[ korean ] = "Àμ⠿ɼÇ";
+ TEXT[ turkish ] = "Yazdýrma seçenekleri";
+ TEXT[ language_user1 ] = " ";
+};
+ModalDialog DLG_PAGEPREVIEW_ZOOM
+{
+ HelpID = HID_PPREV_ZOOM ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 141 , 69 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Maßstab : Ma˜stab */
+ Text = "Maßstab" ;
+ Text [ ENGLISH ] = "Zoom" ;
+ Text [ norwegian ] = "Zoom" ;
+ Text [ italian ] = "Zoom" ;
+ Text [ portuguese_brazilian ] = "Zoom" ;
+ Text [ portuguese ] = "Zoom" ;
+ Text [ finnish ] = "Zoomaus" ;
+ Text [ danish ] = "Målestok" ;
+ Text [ french ] = "Zoom" ;
+ Text [ swedish ] = "Skala" ;
+ Text [ dutch ] = "Maatstaf" ;
+ Text [ spanish ] = "Escala" ;
+ Text [ english_us ] = "Zoom" ;
+ Moveable = TRUE ;
+ FixedText FT_COL
+ {
+ Pos = MAP_APPFONT ( 12 , 34 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ 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 ] = "~Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ dutch ] = "~Kolommen" ;
+ Text [ spanish ] = "~Columnas" ;
+ Text [ english_us ] = "~Columns" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "À¸(~C)";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "‰¡(~C)";
+ Text[ chinese_traditional ] = "Äæ(~C)";
+ Text[ arabic ] = "ÃÚãÏÉ";
+ Text[ dutch ] = "~Kolommen";
+ Text[ chinese_simplified ] = "À¸(~C)";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­(~C)";
+ Text[ turkish ] = "~Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_ROW
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Text = "~Zeilen" ;
+ 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 ] = "~Rader" ;
+ Text [ dutch ] = "~Rijen" ;
+ Text [ spanish ] = "~Filas" ;
+ Text [ english_us ] = "~Rows" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÐÐ(~R)";
+ Text[ russian ] = "Ñòðîêè";
+ Text[ polish ] = "Wiersze";
+ Text[ japanese ] = "c(~R)";
+ Text[ chinese_traditional ] = "¦æ(~R)";
+ Text[ arabic ] = "ÕÝæÝ";
+ Text[ dutch ] = "~Rijen";
+ Text[ chinese_simplified ] = "ÐÐ(~R)";
+ Text[ greek ] = "ÃñáììÝò";
+ Text[ korean ] = "Çà(~R)";
+ Text[ turkish ] = "S~atýr";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField ED_COL
+ {
+ Border = TRUE ;
+ Size = MAP_APPFONT ( 28 , 12 ) ;
+ Pos = MAP_APPFONT ( 48 , 34 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = PVIEW_MIN_COL ;
+ Maximum = PVIEW_MAX_COL ;
+ Value = 1 ;
+ First = PVIEW_MIN_COL ;
+ Last = PVIEW_MAX_COL ;
+ };
+ NumericField ED_ROW
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 48 , 13 ) ;
+ Size = MAP_APPFONT ( 28 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = PVIEW_MIN_ROW ;
+ Maximum = PVIEW_MAX_ROW ;
+ Value = 1 ;
+ First = PVIEW_MIN_ROW ;
+ Last = PVIEW_MAX_ROW ;
+ };
+ OKButton BT_OK
+ {
+ Pos = MAP_APPFONT ( 88 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_CANCEL
+ {
+ Pos = MAP_APPFONT ( 88 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BT_HELP
+ {
+ Pos = MAP_APPFONT ( 88 , 49 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ GroupBox GB_PREVIEW
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 76 , 50 ) ;
+ Text = "Ansicht" ;
+ Text [ English ] = "View" ;
+ Text [ norwegian ] = "View" ;
+ Text [ italian ] = "Vista" ;
+ Text [ portuguese_brazilian ] = "Ver" ;
+ Text [ portuguese ] = "Ver" ;
+ Text [ finnish ] = "Näytä" ;
+ Text [ danish ] = "Vis" ;
+ Text [ french ] = "Affichage" ;
+ Text [ swedish ] = "Visa" ;
+ Text [ dutch ] = "Beeld" ;
+ Text [ spanish ] = "Ver" ;
+ Text [ english_us ] = "View" ;
+ Text[ chinese_simplified ] = "ÊÓͼ";
+ Text[ russian ] = "Âèä";
+ Text[ polish ] = "Widok";
+ Text[ japanese ] = "•\\Ž¦";
+ Text[ chinese_traditional ] = "À˵ø";
+ Text[ arabic ] = "ØÑíÞÉ ÇáÚÑÖ";
+ Text[ dutch ] = "Beeld";
+ Text[ chinese_simplified ] = "ÊÓͼ";
+ Text[ greek ] = "ÐñïâïëÞ";
+ Text[ korean ] = "º¸±â";
+ Text[ turkish ] = "Görünüm";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "¿Ì¶È";
+ Text[ russian ] = "Ìàñøòàá";
+ Text[ polish ] = "Skala";
+ Text[ japanese ] = "½Þ°Ñ";
+ Text[ chinese_traditional ] = "Åã¥Ü¤ñ¨Ò";
+ Text[ arabic ] = "ÊßÈíÑ æÊÕÛíÑ";
+ Text[ dutch ] = "Maatstaf";
+ Text[ chinese_simplified ] = "¿Ì¶È";
+ Text[ greek ] = "Êëßìáêá";
+ Text[ korean ] = "È®´ë/Ãà¼Ò";
+ Text[ turkish ] = "Yakýnlaþtýr";
+ Text[ language_user1 ] = " ";
+};
+String RID_PVIEW_TOOLBOX
+{
+ Text = "Seitenansicht" ;
+ Text [ English ] = "Page preview" ;
+ Text [ dutch ] = "Afdrukvoorbeeld" ;
+ Text [ english_us ] = "Page Preview" ;
+ Text [ italian ] = "Anteprima stampa" ;
+ Text [ spanish ] = "Vista preliminar" ;
+ Text [ french ] = "Aperçu" ;
+ Text [ swedish ] = "Förhandsgranskning" ;
+ Text [ danish ] = "Vis udskrift" ;
+ Text [ portuguese ] = "Ver página" ;
+ Text [ portuguese_brazilian ] = "Seitenansicht" ;
+ Text[ chinese_simplified ] = "Ò³ÃæÊÓͼ";
+ Text[ russian ] = "Ïðåäâàðèòåëüíûé ïðîñìîòð";
+ Text[ polish ] = "Podgl¹d wydruku";
+ Text[ japanese ] = "ˆóüÌßÚËÞ­°";
+ Text[ chinese_traditional ] = "­¶­±À˵ø";
+ Text[ arabic ] = "ãÚÇíäÉ ÇáÕÝÍÉ";
+ Text[ dutch ] = "Afdrukvoorbeeld";
+ Text[ chinese_simplified ] = "Ò³ÃæÊÓͼ";
+ Text[ greek ] = "Ðñïåðéóêüðçóç åêôýðùóçò";
+ Text[ korean ] = "Àμ⠹̸®º¸±â";
+ Text[ turkish ] = "Sayfa önizleme";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_PVIEW_TOOLBOX
+{
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ LineSpacing = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ Customize = TRUE ;
+ HelpID = HID_PVIEW_TOOLBOX ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = FN_PAGEUP ;
+ HelpID = FN_PAGEUP ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_PAGEDOWN ;
+ HelpID = FN_PAGEDOWN ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_START_OF_DOCUMENT ;
+ HelpID = FN_START_OF_DOCUMENT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_END_OF_DOCUMENT ;
+ HelpID = FN_END_OF_DOCUMENT ;
+ };
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ ToolBoxItem
+ {
+ Identifier = FN_SHOW_TWO_PAGES ;
+ HelpID = FN_SHOW_TWO_PAGES ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_SHOW_FOUR_PAGES ;
+ HelpID = FN_SHOW_FOUR_PAGES ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_PREVIEW_ZOOM;
+ HelpID = HID_PREVIEW_ZOOM ;
+ };
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ ToolBoxItem
+ {
+ Identifier = SID_WIN_FULLSCREEN ;
+ HelpID = SID_WIN_FULLSCREEN ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_PRINT_PAGEPREVIEW ;
+ HelpID = FN_PRINT_PAGEPREVIEW ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_PREVIEW_PRINT_OPTIONS ;
+ HelpID = FN_PREVIEW_PRINT_OPTIONS ;
+ };
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ ToolBoxItem
+ {
+ Identifier = SID_PRINTPREVIEW;
+ HelpID = SID_PRINTPREVIEW;
+ };
+ };
+ Scroll = TRUE ;
+};
diff --git a/sw/source/ui/uiview/scroll.cxx b/sw/source/ui/uiview/scroll.cxx
new file mode 100644
index 000000000000..864a191e1ee6
--- /dev/null
+++ b/sw/source/ui/uiview/scroll.cxx
@@ -0,0 +1,287 @@
+/*************************************************************************
+ *
+ * $RCSfile: scroll.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "swtypes.hxx"
+#include "swrect.hxx"
+#include "scroll.hxx"
+
+
+SwScrollbar::SwScrollbar( Window *pWin, int bHoriz ) :
+ ScrollBar( pWin,
+ WinBits( WB_3DLOOK | WB_HIDE | ( bHoriz ? WB_HSCROLL : WB_VSCROLL) ) ),
+ bHori( bHoriz ),
+ bAuto( FALSE ),
+ bThumbEnabled( TRUE ),
+ bVisible(FALSE),
+ bSizeSet(FALSE)
+{
+}
+
+
+ SwScrollbar::~SwScrollbar() {}
+
+/*------------------------------------------------------------------------
+ Beschreibung: wird nach einer Aenderung der Dokumentgroesse gerufen, um den
+ Range des Scrollbars neu einzustellen.
+------------------------------------------------------------------------*/
+
+
+void SwScrollbar::DocSzChgd( const Size &rSize )
+{
+ aDocSz = rSize;
+ SetRange( Range( 0, bHori ? rSize.Width() : rSize.Height()) );
+ const ULONG nVisSize = GetVisibleSize();
+ SetLineSize( nVisSize * 10 / 100 );
+ SetPageSize( nVisSize * 77 / 100 );
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: wird nach einer Veraenderung des sichtbaren Ausschnittes
+ gerufen.
+------------------------------------------------------------------------*/
+
+
+void SwScrollbar::ViewPortChgd( const Rectangle &rRect )
+{
+ long nThumb, nVisible;
+ if( bHori )
+ {
+ nThumb = rRect.Left();
+ nVisible = rRect.GetWidth();
+ }
+ else
+ {
+ nThumb = rRect.Top();
+ nVisible = rRect.GetHeight();
+ }
+
+ SetVisibleSize( nVisible );
+ DocSzChgd(aDocSz);
+ if ( bThumbEnabled )
+ SetThumbPos( nThumb );
+ long nVis = GetVisibleSize();
+ long nLen = GetRange().Len();
+ if(bAuto)
+ AutoShow();
+}
+
+void SwScrollbar::EnableThumbPos( BOOL bEnable, const SwRect &rVisArea )
+{
+ bThumbEnabled = bEnable;
+ if ( bEnable )
+ {
+ long nThumb = bHori ? rVisArea.Left() : rVisArea.Top();
+ SetThumbPos( nThumb );
+ }
+}
+
+/*-----------------10/21/97 02:48pm-----------------
+
+--------------------------------------------------*/
+void SwScrollbar::Show( BOOL bSet )
+{
+ bVisible = bSet;
+ if( (!bSet || bSizeSet) && IsUpdateMode() )
+ ScrollBar::Show(bSet);
+}
+
+/*-----------------10/21/97 03:23pm-----------------
+
+--------------------------------------------------*/
+void SwScrollbar::SetPosSizePixel( const Point& rNewPos, const Size& rNewSize )
+{
+ ScrollBar::SetPosSizePixel(rNewPos, rNewSize);
+ bSizeSet = TRUE;
+ if(bVisible)
+ Show();
+
+}
+
+/*-----------------10/21/97 04:47pm-----------------
+
+--------------------------------------------------*/
+void SwScrollbar::SetUpdateMode( BOOL bUpdate )
+{
+ ScrollBar::SetUpdateMode( bUpdate );
+ if(bUpdate &&
+ bVisible != ScrollBar::IsVisible())
+ Show(bVisible);
+}
+/*-----------------14.04.98 11:38-------------------
+
+--------------------------------------------------*/
+void SwScrollbar::SetAuto(BOOL bSet)
+{
+ if(bAuto != bSet)
+ {
+ bAuto = bSet;
+
+ // automatisch versteckt - dann anzeigen
+ if(!bAuto && bVisible && !ScrollBar::IsVisible())
+ Show(TRUE);
+ else if(bAuto)
+ AutoShow(); // oder automatisch verstecken
+ }
+}
+/*-----------------14.04.98 11:43-------------------
+
+--------------------------------------------------*/
+void SwScrollbar::AutoShow()
+{
+ long nVis = GetVisibleSize();
+ long nLen = GetRange().Len();
+ {
+ if( nVis >= nLen - 1)
+ {
+ if(bVisible)
+ Hide();
+ }
+ else if ( !ScrollBar::IsVisible() &&
+ (!bHori || nVis) ) //Optimierung fuer Browser.
+ //Horizontaler Scrollbar per
+ //default aus.
+ {
+ Show();
+ }
+ }
+}
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.63 2000/09/18 16:06:11 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.62 2000/03/03 15:17:04 os
+ StarView remainders removed
+
+ Revision 1.61 1999/03/03 11:52:18 MA
+ #62722# horizontaler Scrollbar bei Auto per default aus
+
+
+ Rev 1.60 03 Mar 1999 12:52:18 MA
+ #62722# horizontaler Scrollbar bei Auto per default aus
+
+ Rev 1.59 14 Apr 1998 12:10:08 OS
+ autom. Scrollbars: SetAuto() muss Sichtbarkeit ueberpruefen #49061#
+
+ Rev 1.58 21 Nov 1997 15:00:12 MA
+ includes
+
+ Rev 1.57 12 Nov 1997 17:09:14 MBA
+ SP3:
+
+ Rev 1.56 03 Nov 1997 13:58:30 MA
+ precomp entfernt
+
+ Rev 1.55 22 Oct 1997 08:12:42 OS
+ eigener UpdateMode zur Verhinderung des Flackerns #43684#
+
+ Rev 1.54 10 Sep 1997 10:12:34 OS
+ Scrollbars mit WB_HIDE erzeugen 43684
+
+ Rev 1.53 17 Jul 1997 16:58:44 HJS
+ includes
+
+ Rev 1.52 16 Jul 1997 18:52:34 MA
+ new: ThumbPos kann disabled werden
+
+ Rev 1.51 29 Jul 1996 15:47:22 MA
+ includes
+
+ Rev 1.50 23 May 1996 17:18:20 OS
+ automatische Scrollbars in Frame-Docs
+
+ Rev 1.49 06 May 1996 17:01:16 MA
+ chg: Scrollbars fuer browse und ole richtig
+
+ Rev 1.48 14 Mar 1996 17:10:48 MA
+ fix#26338#, richtige Reihenfolge der Einstellungen; Opts
+
+ Rev 1.47 03 Mar 1996 18:16:04 MA
+ opt: unuetzer Member vom Scrollbar
+
+ Rev 1.46 29 Nov 1995 12:12:56 OM
+ Scrollbars reaktiviert
+
+ Rev 1.45 27 Nov 1995 21:21:04 JP
+ ueberfluessige Methoden entfernt, optimiert
+
+ Rev 1.44 24 Nov 1995 16:57:54 OM
+ PCH->PRECOMPILED
+
+ Rev 1.43 08 Nov 1995 13:07:40 OS
+ Change => Set
+
+ Rev 1.42 30 Oct 1995 12:06:04 MA
+ chg: Get/Set Page/LineSize entfernt
+
+ Rev 1.41 19 Feb 1995 15:35:58 JP
+ CTOR: setze bHori richtig
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/uiview/srcview.cxx b/sw/source/ui/uiview/srcview.cxx
new file mode 100644
index 000000000000..2c50afbe7de5
--- /dev/null
+++ b/sw/source/ui/uiview/srcview.cxx
@@ -0,0 +1,1345 @@
+/*************************************************************************
+ *
+ * $RCSfile: srcview.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+
+
+#ifndef _TOOLS_TEMPFILE_HXX
+#include <tools/tempfile.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SV_PRINT_HXX //autogen
+#include <vcl/print.hxx>
+#endif
+#ifndef _SV_CLIP_HXX //autogen
+#include <vcl/clip.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SV_WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SV_METRIC_HXX //autogen
+#include <vcl/metric.hxx>
+#endif
+#ifndef _CTRLTOOL_HXX //autogen
+#include <svtools/ctrltool.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _UNDO_HXX //autogen
+#include <svtools/undo.hxx>
+#endif
+#ifndef _TXTCMP_HXX //autogen
+#include <svtools/txtcmp.hxx>
+#endif
+#ifndef _EXTATTR_HXX //autogen
+#include <svtools/extattr.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _IODLG_HXX //autogen
+#include <sfx2/iodlg.hxx>
+#endif
+#ifndef _SFX_DOCFILT_HACK_HXX //autogen
+#include <sfx2/docfilt.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFX_PRNMON_HXX //autogen
+#include <sfx2/prnmon.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SFXDOCINF_HXX //autogen
+#include <sfx2/docinf.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _SFX_SAVEOPT_HXX //autogen
+#include <sfx2/saveopt.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_SRCHDLG_HXX //autogen
+#include <svx/srchdlg.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_FLSTITEM_HXX //autogen
+#include <svx/flstitem.hxx>
+#endif
+#ifndef _RTL_TENCINFO_H
+#include <rtl/tencinfo.h>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _WDOCSH_HXX
+#include <wdocsh.hxx>
+#endif
+#ifndef _SRCVIEW_HXX
+#include <srcview.hxx>
+#endif
+#ifndef _SRCVCFG_HXX
+#include <srcvcfg.hxx>
+#endif
+#ifndef _VIEWFUNC_HXX
+#include <viewfunc.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _ITEMDEF_HXX
+#include <itemdef.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _DATAEX_HXX
+#include <dataex.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h> // FN_ ...
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _SHELLS_HRC
+#include <shells.hrc>
+#endif
+#ifndef _POPUP_HRC
+#include <popup.hrc>
+#endif
+#ifndef _WEB_HRC
+#include <web.hrc>
+#endif
+#ifndef _VIEW_HRC
+#include <view.hrc>
+#endif
+
+
+#define SwSrcView
+#define SearchSettings
+#define _ExecSearch Execute
+#define _StateSearch GetState
+#include <svx/svxslots.hxx>
+#include "swslots.hxx"
+
+using namespace com::sun::star;
+using namespace com::sun::star::uno;
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+#define SWSRCVIEWFLAGS ( SFX_VIEW_MAXIMIZE_FIRST| \
+ SFX_VIEW_OBJECTSIZE_EMBEDDED| \
+ SFX_VIEW_CAN_PRINT|\
+ SFX_VIEW_NO_NEWWINDOW )
+
+#define SRC_SEARCHOPTIONS (0xFFFF & ~(SEARCH_OPTIONS_FORMAT|SEARCH_OPTIONS_FAMILIES|SEARCH_OPTIONS_SEARCH_ALL))
+
+// Druckraender -> wie Basic - Ide
+#define LMARGPRN 1700
+#define RMARGPRN 900
+#define TMARGPRN 2000
+#define BMARGPRN 1000
+#define BORDERPRN 300
+
+
+
+SFX_IMPL_VIEWFACTORY(SwSrcView, SW_RES(STR_NONAME))
+{
+ SFX_VIEW_REGISTRATION(SwWebDocShell);
+}
+
+
+SFX_IMPL_INTERFACE( SwSrcView, SfxViewShell, SW_RES(0) )
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_SRCVIEW_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_SRCVIEW_TOOLBOX));
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_TOOLS|
+ SFX_VISIBILITY_STANDARD|SFX_VISIBILITY_SERVER,
+ SW_RES(RID_WEBTOOLS_TOOLBOX) );
+ SFX_CHILDWINDOW_REGISTRATION(SvxSearchDialogWrapper::GetChildWindowId());
+}
+
+TYPEINIT1(SwSrcView, SfxViewShell)
+
+/*-----------------18.11.96 08.05-------------------
+
+--------------------------------------------------*/
+
+
+void lcl_PrintHeader( Printer* pPrinter, USHORT nPages, USHORT nCurPage, const String& rTitle )
+{
+ short nLeftMargin = LMARGPRN;
+ Size aSz = pPrinter->GetOutputSize();
+ short nBorder = BORDERPRN;
+
+ Color aOldFillColor( pPrinter->GetFillColor() );
+ Font aOldFont( pPrinter->GetFont() );
+
+ pPrinter->SetFillColor( Color(COL_TRANSPARENT) );
+
+ Font aFont( aOldFont );
+ aFont.SetWeight( WEIGHT_BOLD );
+ aFont.SetAlign( ALIGN_BOTTOM );
+ pPrinter->SetFont( aFont );
+
+ long nFontHeight = pPrinter->GetTextHeight();
+
+ // 1.Border => Strich, 2+3 Border = Freiraum.
+ long nYTop = TMARGPRN-3*nBorder-nFontHeight;
+
+ long nXLeft = nLeftMargin-nBorder;
+ long nXRight = aSz.Width()-RMARGPRN+nBorder;
+
+ pPrinter->DrawRect( Rectangle(
+ Point( nXLeft, nYTop ),
+ Size( nXRight-nXLeft, aSz.Height() - nYTop - BMARGPRN + nBorder ) ) );
+
+
+ long nY = TMARGPRN-2*nBorder;
+ Point aPos( nLeftMargin, nY );
+ pPrinter->DrawText( aPos, rTitle );
+ if ( nPages != 1 )
+ {
+ aFont.SetWeight( WEIGHT_NORMAL );
+ pPrinter->SetFont( aFont );
+ String aPageStr( C2S(" [") );
+ aPageStr += String( SW_RES( STR_PAGE ) );
+ aPageStr += ' ';
+ aPageStr += String::CreateFromInt32( nCurPage );
+ aPageStr += ']';
+ aPos.X() += pPrinter->GetTextWidth( rTitle );
+ pPrinter->DrawText( aPos, aPageStr );
+ }
+
+
+ nY = TMARGPRN-nBorder;
+
+ pPrinter->DrawLine( Point( nXLeft, nY ), Point( nXRight, nY ) );
+
+ pPrinter->SetFont( aOldFont );
+ pPrinter->SetFillColor( aOldFillColor );
+}
+
+/*-----------------18.11.96 08.21-------------------
+
+--------------------------------------------------*/
+
+void lcl_ConvertTabsToSpaces( String& rLine )
+{
+ if ( rLine.Len() )
+ {
+ USHORT nPos = 0;
+ USHORT nMax = rLine.Len();
+ while ( nPos < nMax )
+ {
+ if ( rLine.GetChar(nPos) == '\t' )
+ {
+ // Nicht 4 Blanks, sondern an 4er TabPos:
+ String aBlanker;
+ aBlanker.Fill( ( 4 - ( nPos % 4 ) ), ' ' );
+ rLine.Erase( nPos, 1 );
+ rLine.Insert( aBlanker, nPos );
+ nMax = rLine.Len();
+ }
+ nPos++; // Nicht optimal, falls Tab, aber auch nicht verkehrt...
+ }
+ }
+}
+
+/*-----------------18.11.96 12.12-------------------
+
+--------------------------------------------------*/
+
+void lcl_SetFont(SwSrcView* pView, const String& rStyle)
+{
+ const SvxFontListItem* pFontListItem = (const SvxFontListItem* )pView->GetDocShell()->GetItem( SID_ATTR_CHAR_FONTLIST );
+ const FontList* pList = pFontListItem->GetFontList();
+
+ FontInfo aInfo = pList->Get(rStyle,WEIGHT_NORMAL, ITALIC_NONE);
+
+ SwSrcEditWindow& rEditWin = pView->GetEditWin();
+ const Font& rFont = rEditWin.GetTextEngine()->GetFont();
+ Font aFont(aInfo);
+ aFont.SetSize(rFont.GetSize());
+ rEditWin.GetTextEngine()->SetFont( aFont );
+ rEditWin.GetOutWin()->SetFont(aFont);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwSrcView::SwSrcView(SfxViewFrame* pFrame, const SwSrcView&) :
+ SfxViewShell( pFrame, SWSRCVIEWFLAGS ),
+ aEditWin( &pFrame->GetWindow(), this ),
+ pSearchItem(0),
+ pSrcViewConfig(0),
+ bSourceSaved(FALSE)
+{
+ Init();
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwSrcView::SwSrcView(SfxViewFrame* pFrame, SfxViewShell*) :
+ SfxViewShell( pFrame, SWSRCVIEWFLAGS ),
+ aEditWin( &pFrame->GetWindow(), this ),
+ pSearchItem(0),
+ bSourceSaved(FALSE)
+{
+ Init();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwSrcView::~SwSrcView()
+{
+ SwDocShell* pDocShell = GetDocShell();
+ DBG_ASSERT(PTR_CAST(SwWebDocShell, pDocShell), "Wieso keine WebDocShell?")
+ TextEngine* pTextEngine = aEditWin.GetTextEngine();
+ const TextSelection& rSel = aEditWin.GetTextView()->GetSelection();
+ ((SwWebDocShell*)pDocShell)->SetSourcePara(rSel.GetStart().GetPara());
+
+
+ SfxDocumentInfo& rDocInfo = pDocShell->GetDocInfo();
+ pDocShell->SetAutoLoad(rDocInfo.GetReloadURL(),
+ rDocInfo.GetReloadDelay(),
+ rDocInfo.IsReloadEnabled() );
+// EndListening(*GetViewFrame());
+ EndListening(*pDocShell);
+ delete pSearchItem;
+}
+
+/*-----------------24.04.97 10:37-------------------
+
+--------------------------------------------------*/
+void SwSrcView::SaveContentTo(SfxMedium& rMed)
+{
+ aEditWin.Write( *rMed.GetInStream());//, EE_FORMAT_TEXT);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwSrcView::Init()
+{
+ SetHelpId(SW_SRC_VIEWSHELL);
+ SetName(C2S("Source"));
+ SetWindow( &aEditWin );
+ pSrcViewConfig = SW_MOD()->GetSourceViewConfig();
+ if(!pSrcViewConfig->IsDefault())
+ {
+ lcl_SetFont( this, pSrcViewConfig->GetFontName());
+
+ TextViewOutWin* pOutWin = aEditWin.GetOutWin();
+ Font aFont(aEditWin.GetTextEngine()->GetFont());
+ Size aSize(aFont.GetSize());
+ aSize.Height() = pSrcViewConfig->GetFontHeight();
+ aFont.SetSize(pOutWin->LogicToPixel(aSize, MAP_TWIP));
+ aEditWin.GetTextEngine()->SetFont(aFont);
+ pOutWin->SetFont(aFont);
+ }
+ SwDocShell* pDocShell = GetDocShell();
+ // wird das Doc noch geladen, dann muss die DocShell das Load
+ // anwerfen, wenn das Laden abgeschlossen ist
+ if(!pDocShell->IsLoading())
+ Load(pDocShell);
+ else
+ {
+ aEditWin.SetReadonly(TRUE);
+ }
+
+// StartListening(*GetViewFrame());
+ StartListening(*pDocShell);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwDocShell* SwSrcView::GetDocShell()
+{
+ SfxObjectShell* pObjShell = GetViewFrame()->GetObjectShell();
+ return PTR_CAST(SwDocShell, pObjShell);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwSrcView::SaveContent(const String& rTmpFile)
+{
+ SfxMedium aMedium( rTmpFile, STREAM_WRITE, TRUE);
+ const sal_Char *pCharSet =
+ rtl_getBestMimeCharsetFromTextEncoding( gsl_getSystemTextEncoding() );
+ rtl_TextEncoding eDestEnc = rtl_getTextEncodingFromMimeCharset( pCharSet );
+ SvStream* pOutStream = aMedium.GetOutStream();
+ pOutStream->SetStreamCharSet( eDestEnc );
+ aEditWin.Write(*pOutStream);//, EE_FORMAT_TEXT);
+ aMedium.Commit();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void __EXPORT SwSrcView::Execute(SfxRequest& rReq)
+{
+ USHORT nSlot = rReq.GetSlot();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ TextView* pTextView = aEditWin.GetTextView();
+ switch( nSlot )
+ {
+ case SID_ATTR_CHAR_FONT:
+ {
+ const SvxFontItem& rFontItem = (const SvxFontItem&)pArgs->Get(RES_CHRATR_FONT);
+ String sStyle = rFontItem.GetFamilyName();
+ lcl_SetFont( this, sStyle );
+ pSrcViewConfig->SetFontName(sStyle);
+ }
+ break;
+ case SID_ATTR_CHAR_FONTHEIGHT:
+ {
+ TextViewOutWin* pOutWin = aEditWin.GetOutWin();
+
+ const SvxFontHeightItem& rFontHeight = (const SvxFontHeightItem&)pArgs->Get(RES_CHRATR_FONTSIZE);
+ Font aFont(aEditWin.GetTextEngine()->GetFont());
+ Size aSize(aFont.GetSize());
+ aSize.Height() = rFontHeight.GetHeight();
+ aFont.SetSize(pOutWin->LogicToPixel(aSize, MAP_TWIP));
+ aEditWin.GetTextEngine()->SetFont(aFont);
+ pSrcViewConfig->SetFontHeight(USHORT(rFontHeight.GetHeight()));
+ }
+ break;
+ case SID_SAVEASDOC:
+ {
+ Window* pParent = &GetViewFrame()->GetWindow();
+ SfxFileDialog* pFileDlg = new SfxFileDialog(pParent, WB_SAVEAS|WB_3DLOOK);
+ pFileDlg->DisableSaveLastDirectory();
+ pFileDlg->SetHelpId(HID_FILEDLG_SRCVIEW);
+ String sHtml(C2S("HTML"));
+ pFileDlg->AddFilter( sHtml, C2S("*.html;*.htm") );
+ pFileDlg->SetCurFilter( sHtml );
+ pFileDlg->SetPath( SFX_INIMANAGER()->Get( SFX_KEY_WORK_PATH ) );
+ if( RET_OK == pFileDlg->Execute())
+ {
+ String aFileName = pFileDlg->GetPath();
+
+ INetURLObject aURL( aFileName );
+ if ( INET_PROT_FILE == aURL.GetProtocol() )
+ {
+ SvFileStream aCpy( aURL.PathToFileName(), STREAM_WRITE| STREAM_TRUNC );
+ aEditWin.Write(aCpy);//, EE_FORMAT_TEXT);
+
+ SvEaMgr *pMgr = new SvEaMgr(aCpy);
+ SwDocShell* pDocSh = GetDocShell();
+ SfxObjectFactory& rFac = pDocSh->GetFactory();
+ const SfxFilter* pFilter = 0;
+ for( USHORT i = 0; i < rFac.GetFilterCount(); i++ )
+ {
+ const SfxFilter* pFlt = rFac.GetFilter( i );
+ if( pFlt && pFlt->GetFilterName() == sHtml )
+ {
+ pFilter = pFlt;
+ break;
+ }
+ }
+ if(pFilter)
+ {
+ String aBuffer;
+
+ pMgr->SetComment(pDocSh->GetDocInfo().GetComment());
+#ifdef OS2
+ if ( pFilter->GetDocIconId() )
+ {
+ ResId aResId(pFilter->GetDocIconId(),
+ rFac.GetMenuBarId()->GetResMgr());
+ pMgr->SetIcon(aResId);
+ }
+#endif
+ pMgr->SetFileType(pFilter->GetTypeName().GetToken( 0, ';' ));
+ if ( SvEaMgr::GetAppCreator(aBuffer) )
+ pMgr->SetCreator(aBuffer);
+
+ delete pMgr;
+
+ }
+ aCpy.Close();
+ }
+ else
+ {
+ SfxMedium aMedium( aFileName, STREAM_WRITE | STREAM_SHARE_DENYNONE,
+ FALSE, FALSE );
+ {
+ SvFileStream aCpy( aMedium.GetPhysicalName(), STREAM_WRITE| STREAM_TRUNC );
+ aEditWin.Write(aCpy);//, EE_FORMAT_TEXT);
+ }
+ aMedium.Close();
+ aMedium.Commit();
+ }
+ }
+ delete pFileDlg;
+ }
+ break;
+ case SID_SAVEDOC:
+ {
+ SwDocShell* pDocShell = GetDocShell();
+ SfxMedium* pMed = 0;
+ if(pDocShell->HasName())
+ pMed = pDocShell->GetMedium();
+ else
+ {
+ SfxBoolItem* pItem = (SfxBoolItem*)pDocShell->ExecuteSlot(rReq, pDocShell->GetInterface());
+ if(pItem && pItem->GetValue())
+ pMed = pDocShell->GetMedium();
+ }
+ if(pMed)
+ {
+ SvStream* pInStream = pMed->GetInStream();
+ pInStream->Seek(0);
+ pInStream->SetStreamSize(0);
+ aEditWin.Write( *pInStream );
+ pMed->Commit();
+ pDocShell->GetDoc()->ResetModified();
+ SourceSaved();
+ aEditWin.ClearModifyFlag();
+ }
+ }
+ break;
+ case FID_SEARCH_NOW:
+ {
+ const SfxItemSet* pArgs = rReq.GetArgs();
+
+ USHORT nWhich = pArgs->GetWhichByPos( 0 );
+ DBG_ASSERT( nWhich, "Wich fuer SearchItem ?" );
+ const SfxPoolItem& rItem = pArgs->Get( nWhich );
+ SetSearchItem( (const SvxSearchItem&)rItem);
+ StartSearchAndReplace( (const SvxSearchItem&)rItem, FALSE, rReq.IsAPI() );
+ if(aEditWin.IsModified())
+ GetDocShell()->GetDoc()->SetModified();
+ }
+ break;
+ case SID_PRINTDOC:
+ case SID_PRINTDOCDIRECT:
+ {
+ SfxViewShell::ExecuteSlot( rReq, SfxViewShell::GetInterface() );
+ }
+ break;
+ case SID_UNDO:
+ pTextView->Undo();
+ break;
+ case SID_REDO:
+ pTextView->Redo();
+ break;
+ case SID_REPEAT:
+ break;
+ case SID_CUT:
+ pTextView->Cut();
+ break;
+ case SID_COPY:
+ pTextView->Copy();
+ break;
+ case SID_PASTE:
+ pTextView->Paste();
+ break;
+ case SID_SELECTALL:
+ pTextView->SetSelection( TextSelection( TextPaM( 0, 0 ), TextPaM( 0xFFFFFFFF, 0xFFFF ) ) );
+ break;
+ }
+ aEditWin.Invalidate();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void __EXPORT SwSrcView::GetState(SfxItemSet& rSet)
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ TextView* pTextView = aEditWin.GetTextView();
+
+ while(nWhich)
+ {
+ switch(nWhich)
+ {
+ case SID_SAVEASDOC:
+ rSet.Put(SfxStringItem(nWhich, String(SW_RES(STR_SAVEAS_SRC))));
+ break;
+ case SID_SAVEDOC:
+ {
+ SwDocShell* pDocShell = GetDocShell();
+ if(!pDocShell->IsModified())
+ rSet.DisableItem(nWhich);
+ }
+ break;
+ case SID_PRINTDOC:
+ case SID_PRINTDOCDIRECT:
+ break;
+ case SID_TABLE_CELL:
+ {
+ String aPos( SW_RES(STR_SRCVIEW_ROW) );
+ TextSelection aSel = pTextView->GetSelection();
+ aPos += String::CreateFromInt32( aSel.GetEnd().GetPara()+1 );
+ aPos +=C2S(" : ");
+ aPos += String(SW_RES(STR_SRCVIEW_COL));
+ aPos += String::CreateFromInt32( aSel.GetEnd().GetIndex()+1 );
+ SfxStringItem aItem( nWhich, aPos );
+ rSet.Put( aItem );
+ }
+ break;
+ case RES_CHRATR_FONT:
+ {
+ Font aFont = aEditWin.GetTextEngine()->GetFont();
+ rSet.Put(SvxFontItem(
+ aFont.GetFamily(),
+ aFont.GetName(),
+ aFont.GetStyleName()));
+ }
+ break;
+ case RES_CHRATR_FONTSIZE:
+ {
+ TextViewOutWin* pOutWin = aEditWin.GetOutWin();
+ SvxFontHeightItem aFontHeight;
+ Size aTemp(aEditWin.GetTextEngine()->GetFont().GetSize());
+ aTemp = pOutWin->PixelToLogic(aTemp, MAP_TWIP);
+ aFontHeight.SetHeight(aTemp.Height());
+ aFontHeight.SetWhich(RES_CHRATR_FONTSIZE);
+ rSet.Put(aFontHeight);
+ }
+ break;
+ case SID_SEARCH_OPTIONS:
+ {
+ USHORT nOpt = SRC_SEARCHOPTIONS;
+ if(GetDocShell()->IsReadOnly())
+ nOpt &= ~(SEARCH_OPTIONS_REPLACE|SEARCH_OPTIONS_REPLACE_ALL);
+
+ rSet.Put( SfxUInt16Item( SID_SEARCH_OPTIONS, nOpt) );
+ }
+ break;
+ case SID_SEARCH_ITEM:
+ {
+ String sSelected;
+ if ( !pTextView->HasSelection() )
+ {
+ const TextSelection& rSel = pTextView->GetSelection();
+ sSelected = aEditWin.GetTextEngine()->GetWord( rSel.GetStart());
+ }
+ else
+ {
+ sSelected = pTextView->GetSelected();
+ }
+ SvxSearchItem * pSrchItem = GetSearchItem();
+ pSrchItem->SetSearchString( sSelected );
+ rSet.Put( *pSrchItem );
+ }
+ break;
+ case SID_UNDO:
+ case SID_REDO:
+ {
+ SfxUndoManager& rMgr = pTextView->GetTextEngine()->GetUndoManager();
+ USHORT nCount = 0;
+ if(nWhich == SID_UNDO)
+ {
+ nCount = rMgr.GetUndoActionCount();
+ if(nCount)
+ {
+ String aStr(ResId( STR_UNDO, SFX_APP()->GetSfxResManager() ));;
+ aStr += rMgr.GetUndoActionComment(--nCount);
+ rSet.Put(SfxStringItem(nWhich, aStr));
+ }
+ else
+ rSet.DisableItem(nWhich);
+ }
+ else
+ {
+ nCount = rMgr.GetRedoActionCount();
+ if(nCount)
+ {
+ String aStr(ResId( STR_REDO, SFX_APP()->GetSfxResManager() ));;
+ aStr += rMgr.GetRedoActionComment(--nCount);
+ rSet.Put(SfxStringItem(nWhich,aStr));
+ }
+ else
+ rSet.DisableItem(nWhich);
+ }
+ }
+ break;
+ case SID_REPEAT:
+ rSet.DisableItem(nWhich);
+ break;
+ case SID_CUT:
+ case SID_COPY:
+ if(!pTextView->HasSelection())
+ rSet.DisableItem(nWhich);
+ break;
+ case SID_PASTE:
+ {
+ SvDataObjectRef xObj;
+ if ( Clipboard::GetFormatCount() )
+ {
+ SwModule* pMod = SW_MOD();
+ if ( pMod->pClipboard )
+ xObj = pMod->pClipboard ;
+ else
+ xObj = SvDataObject::PasteClipboard();
+ }
+ if(!xObj.Is())
+ rSet.DisableItem(nWhich);
+ }
+ break;
+
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SvxSearchItem* SwSrcView::GetSearchItem()
+{
+ if(!pSearchItem)
+ {
+ pSearchItem = new SvxSearchItem(SID_SEARCH_ITEM);
+ }
+ return pSearchItem;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwSrcView::SetSearchItem( const SvxSearchItem& rItem )
+{
+ delete pSearchItem;
+ pSearchItem = (SvxSearchItem*)rItem.Clone();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+USHORT SwSrcView::StartSearchAndReplace(const SvxSearchItem& rSearchItem,
+ BOOL bFromStart,
+ BOOL bApi,
+ BOOL bRecursive)
+{
+ ExtTextView* pTextView = aEditWin.GetTextView();
+ TextSelection aSel;
+ BOOL bForward = !rSearchItem.GetBackward();
+ BOOL bAtStart = pTextView->GetSelection() == TextSelection( TextPaM( 0x0, 0x0 ), TextPaM( 0x0, 0x0 ) );
+ if ( bFromStart )
+ {
+ aSel = pTextView->GetSelection();
+ if ( !rSearchItem.GetBackward() )
+ pTextView->SetSelection( TextSelection( TextPaM( 0x0, 0x0 ), TextPaM( 0x0, 0x0 ) ) );
+ else
+ pTextView->SetSelection( TextSelection( TextPaM( 0xFFFFFFFF, 0xFFFF ), TextPaM( 0xFFFFFFFF, 0xFFFF ) ) );
+ }
+
+ SearchParam aSearchParam( rSearchItem.GetSearchString(),
+ SearchParam::SRCH_NORMAL, rSearchItem.GetExact(),
+ rSearchItem.GetWordOnly(), rSearchItem.GetSelection() );
+ if ( rSearchItem.GetRegExp() )
+ aSearchParam.SetSrchType( SearchParam::SRCH_REGEXP );
+ else if ( rSearchItem.IsLevenshtein() )
+ {
+ aSearchParam.SetSrchType( SearchParam::SRCH_LEVDIST );
+ aSearchParam.SetSrchRelaxed( rSearchItem.IsLEVRelaxed() ? TRUE : FALSE );
+ aSearchParam.SetLEVOther( rSearchItem.GetLEVOther() );
+ aSearchParam.SetLEVShorter( rSearchItem.GetLEVShorter() );
+ aSearchParam.SetLEVLonger( rSearchItem.GetLEVLonger() );
+ }
+ USHORT nFound = 0;
+ if ( ( rSearchItem.GetCommand() == SVX_SEARCHCMD_FIND ) ||
+ ( rSearchItem.GetCommand() == SVX_SEARCHCMD_FIND_ALL ) )
+ {
+ nFound = pTextView->Search( aSearchParam, bForward );
+ }
+ else if ( ( rSearchItem.GetCommand() == SVX_SEARCHCMD_REPLACE ) ||
+ ( rSearchItem.GetCommand() == SVX_SEARCHCMD_REPLACE_ALL ) )
+ {
+ aSearchParam.SetReplaceStr( rSearchItem.GetReplaceString() );
+ BOOL bAll = rSearchItem.GetCommand() == SVX_SEARCHCMD_REPLACE_ALL;
+ nFound = pTextView->Replace( aSearchParam, bAll, bForward );
+ }
+ if(!nFound)
+ {
+ BOOL bNotFoundMessage = FALSE;
+ if(!bRecursive)
+ {
+ if(!bFromStart)
+ {
+ bNotFoundMessage = bAtStart;
+ }
+ else
+ {
+ bNotFoundMessage = TRUE;
+ pTextView->SetSelection( aSel );
+ }
+ }
+ else if(bAtStart)
+ {
+ bNotFoundMessage = TRUE;
+ }
+
+
+ if(!bApi)
+ if(bNotFoundMessage)
+ {
+ InfoBox( 0, SW_RES(MSG_NOT_FOUND)).Execute();
+ }
+ else if(!bRecursive && RET_YES ==
+ QueryBox(0, SW_RES( bForward ? MSG_SEARCH_END
+ : MSG_SEARCH_START)).Execute())
+ {
+ if ( bForward )
+ pTextView->SetSelection( TextSelection( TextPaM( 0x0, 0x0 ), TextPaM( 0x0, 0x0 ) ) );
+ else
+ pTextView->SetSelection( TextSelection( TextPaM( 0xFFFFFFFF, 0xFFFF ), TextPaM( 0xFFFFFFFF, 0xFFFF ) ) );
+ StartSearchAndReplace(rSearchItem, FALSE, FALSE, TRUE);
+ }
+ }
+ return nFound;
+}
+
+/*-----------------02.07.97 09:29-------------------
+
+--------------------------------------------------*/
+USHORT __EXPORT SwSrcView::SetPrinter(SfxPrinter* pNew, USHORT nDiffFlags )
+{
+ SwDocShell* pDocSh = GetDocShell();
+ if ( (SFX_PRINTER_JOBSETUP | SFX_PRINTER_PRINTER) & nDiffFlags )
+ {
+ pDocSh->GetDoc()->SetPrt( pNew );
+ if ( nDiffFlags & SFX_PRINTER_PRINTER )
+ pDocSh->SetModified();
+ }
+ if ( nDiffFlags & SFX_PRINTER_OPTIONS )
+ ::SetPrinter( pNew, TRUE );
+
+ const BOOL bChgOri = nDiffFlags & SFX_PRINTER_CHG_ORIENTATION ? TRUE : FALSE;
+ const BOOL bChgSize= nDiffFlags & SFX_PRINTER_CHG_SIZE ? TRUE : FALSE;
+ if ( bChgOri || bChgSize )
+ {
+ pDocSh->SetModified();
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+ErrCode SwSrcView::DoPrint( SfxPrinter *pPrinter, PrintDialog *pDlg,
+ BOOL bSilent )
+{
+ SfxPrintProgress *pProgress = new SfxPrintProgress( this, !bSilent );
+ SfxPrinter *pDocPrinter = GetPrinter(TRUE);
+ if ( !pPrinter )
+ pPrinter = pDocPrinter;
+ else if ( pDocPrinter != pPrinter )
+ {
+ pProgress->RestoreOnEndPrint( pDocPrinter->Clone() );
+ SetPrinter( pPrinter, SFX_PRINTER_PRINTER );
+ }
+ pProgress->SetWaitMode(FALSE);
+
+ // Drucker starten
+ PreparePrint( pDlg );
+ SfxObjectShell *pObjShell = GetViewFrame()->GetObjectShell();
+
+ SfxViewShell::Print(*pProgress, pDlg); //???
+
+ MapMode eOldMapMode( pPrinter->GetMapMode() );
+ Font aOldFont( pPrinter->Printer::GetFont() );
+
+ TextEngine* pTextEngine = aEditWin.GetTextEngine();
+ pPrinter->SetMapMode(MAP_100TH_MM);
+ Font aFont(aEditWin.GetOutWin()->GetFont());
+ Size aSize(aFont.GetSize());
+ aSize = aEditWin.GetOutWin()->PixelToLogic(aSize, MAP_100TH_MM);
+ aFont.SetSize(aSize);
+ aFont.SetColor(COL_BLACK);
+ pPrinter->SetFont( aFont );
+
+ String aTitle( GetViewFrame()->GetWindow().GetText() );
+
+ USHORT nLineHeight = (USHORT) pPrinter->GetTextHeight(); // etwas mehr.
+ USHORT nParaSpace = 10;
+
+ Size aPaperSz = pPrinter->GetOutputSize();
+ aPaperSz.Width() -= (LMARGPRN+RMARGPRN);
+ aPaperSz.Height() -= (TMARGPRN+BMARGPRN);
+
+ // nLinepPage stimmt nicht, wenn Zeilen umgebrochen werden muessen...
+ USHORT nLinespPage = (USHORT) (aPaperSz.Height()/nLineHeight);
+ USHORT nCharspLine = (USHORT) (aPaperSz.Width() / pPrinter->GetTextWidth( 'X' ));
+ USHORT nParas = pTextEngine->GetParagraphCount();
+
+ USHORT nPages = (USHORT) (nParas/nLinespPage+1 );
+ USHORT nCurPage = 1;
+
+ BOOL bStartJob = pPrinter->StartJob( aTitle );
+ if( bStartJob )
+ {
+ pPrinter->StartPage();
+ // Header drucken...
+ lcl_PrintHeader( pPrinter, nPages, nCurPage, aTitle );
+ Point aPos( LMARGPRN, TMARGPRN );
+ for ( USHORT nPara = 0; nPara < nParas; nPara++ )
+ {
+ String aLine( pTextEngine->GetText( nPara ) );
+ lcl_ConvertTabsToSpaces( aLine );
+ USHORT nLines = aLine.Len()/nCharspLine+1;
+ for ( USHORT nLine = 0; nLine < nLines; nLine++ )
+ {
+ String aTmpLine( aLine, nLine*nCharspLine, nCharspLine );
+ aPos.Y() += nLineHeight;
+ if ( aPos.Y() > ( aPaperSz.Height()+TMARGPRN ) )
+ {
+ nCurPage++;
+ pPrinter->EndPage();
+ pPrinter->StartPage();
+ lcl_PrintHeader( pPrinter, nPages, nCurPage, aTitle );
+ aPos = Point( LMARGPRN, TMARGPRN+nLineHeight );
+ }
+ pPrinter->DrawText( aPos, aTmpLine );
+ }
+ aPos.Y() += nParaSpace;
+ }
+ pPrinter->EndPage();
+ }
+
+ pPrinter->SetFont( aOldFont );
+ pPrinter->SetMapMode( eOldMapMode );
+
+ if ( !bStartJob )
+ {
+ // Printer konnte nicht gestartet werden
+ delete pProgress;
+ return ERRCODE_IO_ABORT;
+ }
+
+ pProgress->Stop();
+ pProgress->DeleteOnEndPrint();
+ pPrinter->EndJob();
+ return pPrinter->GetError();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SfxPrinter* __EXPORT SwSrcView::GetPrinter( BOOL bCreate )
+{
+ return GetDocShell()->GetDoc()->GetPrt( bCreate );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void __EXPORT SwSrcView::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA(SfxSimpleHint) &&
+ (((SfxSimpleHint&) rHint).GetId() == SFX_HINT_MODECHANGED) ||
+ (((SfxSimpleHint&) rHint).GetId() == SFX_HINT_TITLECHANGED &&
+ !GetDocShell()->IsReadOnly() && aEditWin.IsReadonly()))
+ {
+ // Broadcast kommt nur einmal!
+ const SwDocShell* pDocSh = GetDocShell();
+ const BOOL bReadonly = pDocSh->IsReadOnly();
+ aEditWin.SetReadonly(bReadonly);
+ }
+ SfxViewShell::Notify(rBC, rHint);
+}
+
+/*-----------------19.04.97 10:19-------------------
+
+--------------------------------------------------*/
+void SwSrcView::Load(SwDocShell* pDocShell)
+{
+ const sal_Char *pCharSet =
+ rtl_getBestMimeCharsetFromTextEncoding( gsl_getSystemTextEncoding() );
+ rtl_TextEncoding eDestEnc = rtl_getTextEncodingFromMimeCharset( pCharSet );
+ aEditWin.SetReadonly(pDocShell->IsReadOnly());
+ SfxMedium* pMedium = pDocShell->GetMedium();
+
+ const SfxFilter* pFilter = pMedium->GetFilter();
+ BOOL bHtml = pFilter && C2S("HTML") == pFilter->GetFilterName();
+ BOOL bDocModified = pDocShell->IsModified();
+ if(bHtml && !bDocModified && pDocShell->HasName())
+ {
+ SvStream* pStream = pMedium->GetInStream();
+ if(pStream && 0 == pStream->GetError() )
+ {
+ pStream->SetStreamCharSet( eDestEnc );
+ pStream->Seek(0);
+
+ aEditWin.Read(*pStream);//, EE_FORMAT_TEXT);
+ }
+ else
+ {
+ Window *pWindow = &GetViewFrame()->GetWindow();
+ InfoBox(pWindow, SW_RES(MSG_ERR_SRCSTREAM)).Execute();
+ }
+ }
+ else
+ {
+ TempFile aTempFile;
+ aTempFile.EnableKillingFile();
+ String sFileURL = aTempFile.GetName();
+ BOOL bIsRemote = pMedium->IsRemote();
+ SfxOptions& rOpt = SFX_APP()->GetOptions();
+ String sBaseURL = INetURLObject::GetBaseURL();
+
+ if( rOpt.IsSaveRelINet() && bIsRemote ||
+ rOpt.IsSaveRelFSys() && !bIsRemote)
+ INetURLObject::SetBaseURL( pMedium->GetName() );
+ else
+ INetURLObject::SetBaseURL( aEmptyStr );
+
+ {
+ SfxMedium aMedium( sFileURL,STREAM_READWRITE, TRUE );
+ SwWriter aWriter( aMedium, *pDocShell->GetDoc() );
+ WriterRef xWriter;
+ ::GetHTMLWriter(aEmptyStr, xWriter);
+ String sWriteName = pDocShell->HasName() ?
+ pMedium->GetName() :
+ (const String&) sFileURL;
+ ULONG nRes = aWriter.Write(xWriter, &sWriteName);
+ if(nRes)
+ {
+ ErrorHandler::HandleError(ErrCode(nRes));
+ aEditWin.SetReadonly(TRUE);
+ }
+ SvStream* pInStream = aMedium.GetInStream();
+ pInStream->Seek(0);
+ pInStream->SetStreamCharSet( eDestEnc );
+
+ INetURLObject::SetBaseURL(sBaseURL);
+
+ aEditWin.Read(*pInStream);//, EE_FORMAT_TEXT);
+ }
+ }
+ aEditWin.ClearModifyFlag();
+
+ if(bDocModified)
+ pDocShell->SetModified();// das Flag wird zwischendurch zurueckgesetzt
+ // AutoLoad abschalten
+ pDocShell->SetAutoLoad(INetURLObject(), 0, FALSE);
+ DBG_ASSERT(PTR_CAST(SwWebDocShell, pDocShell), "Wieso keine WebDocShell?")
+ USHORT nLine = ((SwWebDocShell*)pDocShell)->GetSourcePara();
+ aEditWin.SetStartLine(nLine);
+ aEditWin.GetTextEngine()->ResetUndo();
+ aEditWin.GetOutWin()->GrabFocus();
+}
+
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.109 2000/09/18 16:06:11 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.108 2000/09/14 10:37:04 os
+ SfxMedium::CloseIn/OutStream removed
+
+ Revision 1.107 2000/08/30 16:13:02 os
+ #78341# save document before switching to source view
+
+ Revision 1.106 2000/06/22 11:20:25 os
+ use TempFile instead of GetTmpFileName()
+
+ Revision 1.105 2000/06/09 08:10:41 os
+ using tools/tempfile
+
+ Revision 1.104 2000/06/08 09:44:58 os
+ ContentBroker not in SwModule
+
+ Revision 1.103 2000/06/07 13:28:12 os
+ using UCB
+
+ Revision 1.102 2000/05/26 07:21:34 os
+ old SW Basic API Slots removed
+
+ Revision 1.101 2000/05/23 19:42:42 jp
+ Bugfixes for Unicode
+
+ Revision 1.100 2000/05/10 11:53:20 os
+ Basic API removed
+
+ Revision 1.99 2000/05/09 14:43:13 os
+ BASIC interface partially removed
+
+ Revision 1.98 2000/05/04 11:11:26 os
+ #75552# set correct charset in source view
+
+ Revision 1.97 2000/04/18 15:02:50 os
+ UNICODE
+
+ Revision 1.96 2000/03/14 13:43:43 jp
+ GetAppWindow() - misuse as parent window eliminated
+
+ Revision 1.95 2000/03/03 15:48:01 pl
+ #73771# workaround for c50 intel compiler
+
+ Revision 1.94 2000/03/03 15:17:04 os
+ StarView remainders removed
+
+ Revision 1.93 2000/02/11 14:59:12 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.92 2000/01/24 12:43:16 os
+ #72153# call SfxFileDialog::DisableSaveLastDirectory
+
+ Revision 1.91 1999/10/21 17:49:09 jp
+ have to change - SearchFile with SfxIniManager, dont use SwFinder for this
+
+ Revision 1.90 1999/08/17 07:17:54 OS
+ #67248# DocShell::SetModified after replace
+
+
+ Rev 1.89 17 Aug 1999 09:17:54 OS
+ #67248# DocShell::SetModified after replace
+
+ Rev 1.88 20 May 1999 08:15:22 OS
+ #62641# Fehlermeldung auch beim Umschalten in die SourceView
+
+ Rev 1.87 04 May 1999 14:59:06 JP
+ FilterExportklasse Writer von SvRef abgeleitet, damit sie immer zerstoert wird
+
+ Rev 1.86 31 Mar 1999 06:42:58 OS
+ #64111# Font fuers drucken auf schwarz setzen
+
+ Rev 1.85 18 Mar 1999 14:55:02 OS
+ #57911# Listener am Doc statt am ViewFrame
+
+ Rev 1.84 25 Nov 1998 12:42:06 OS
+ #59826# temp. Datei in der DocShell loeschen
+
+ Rev 1.83 24 Nov 1998 08:55:58 OS
+ #58996# bSourceSaved-Flag initialisieren
+
+ Rev 1.82 05 Nov 1998 10:07:56 OS
+ #58996# Stream nach dem Speichern zuruecksetzen, Flag fuers speichern
+
+ Rev 1.81 03 Nov 1998 11:28:00 OS
+ #58680# nach SID_SAVEDOC ClearModifyFlag an der TextView rufen
+
+ Rev 1.80 08 Sep 1998 17:57:30 OS
+ #56083# .html fuer sourceview default
+
+ Rev 1.79 08 Sep 1998 16:55:42 MI
+ #55602# DocInfo vor Ausdruck setzen und ggf. hinterher resetten (ErrorCode bei Abort)
+
+ Rev 1.78 02 Sep 1998 14:12:18 OM
+ #45378# HelpIDs fuer Dateidialoge
+
+ Rev 1.77 12 Aug 1998 18:47:20 HR
+ #54781#: GCC braucht Temporary
+
+ Rev 1.76 17 Jul 1998 09:53:42 OS
+ Stream vor dem Schreiben auf Null setzen #53143#
+
+ Rev 1.75 11 Jul 1998 15:28:04 OS
+ HTML-Quelltext ins Medium der DocShell speichern #52379#
+
+ Rev 1.74 07 Jul 1998 14:26:38 AMA
+ Chg: DoPrint uebernimmt das Drucken
+
+ Rev 1.73 03 Jul 1998 15:04:20 AMA
+ Chg: DoPrint uebernimmt das Drucken
+
+ Rev 1.72 29 Jun 1998 12:56:06 OS
+ SW_MOD statt GetActiveModule
+
+ Rev 1.71 29 Jun 1998 09:40:08 OS
+ htm/html-Extension fuer SaveAs #48933#
+
+ Rev 1.70 29 May 1998 08:28:46 OS
+ Undo/Redo-Texte, Repeat disabled #50652##50653#
+
+ Rev 1.69 15 May 1998 18:40:46 HJS
+ syntax os2
+
+ Rev 1.68 24 Apr 1998 16:53:04 OS
+ Fonts aus der Docshell-Fontlist holen #49431#
+
+ Rev 1.67 01 Apr 1998 11:58:04 OS
+ Font mit aktueller Groesse setzen #49122#
+
+ Rev 1.66 12 Mar 1998 13:01:08 OS
+ SID_NEWWINDOW nicht mehr ueberladen
+
+ Rev 1.65 17 Dec 1997 16:52:36 ER
+ cast fuer IRIX
+
+ Rev 1.64 29 Nov 1997 16:48:36 MA
+ includes
+
+ Rev 1.63 27 Nov 1997 09:02:48 OS
+ jetzt auch mit SID_PRINTDOC #45786#
+
+ Rev 1.62 21 Nov 1997 15:00:28 MA
+ includes
+
+ Rev 1.61 03 Nov 1997 13:58:28 MA
+ precomp entfernt
+
+ Rev 1.60 31 Oct 1997 10:45:54 OS
+ Undo stimmt jetzt #44501#
+
+ Rev 1.59 24 Oct 1997 15:21:36 OS
+ ReloadFromHtml nur noch rufen, wenn das Doc im SourceMode veraendert wurde #44971#
+
+ Rev 1.58 09 Oct 1997 12:16:06 OS
+ Undo/Redo richtig enablen, beim Start zuruecksetzen #44501#
+
+ Rev 1.57 06 Sep 1997 10:59:04 OS
+ Suchen liefert Meldungen #43197#
+
+ Rev 1.56 01 Sep 1997 13:13:52 OS
+ DLL-Umstellung
+
+ Rev 1.55 11 Aug 1997 10:27:24 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.54 08 Aug 1997 17:26:08 OM
+ Headerfile-Umstellung
+
+ Rev 1.53 07 Aug 1997 19:59:54 HJS
+ includes
+
+ Rev 1.52 05 Aug 1997 16:36:38 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.51 31 Jul 1997 14:59:42 MH
+ chg: header
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/uiview/swcli.cxx b/sw/source/ui/uiview/swcli.cxx
new file mode 100644
index 000000000000..5d029c2a396d
--- /dev/null
+++ b/sw/source/ui/uiview/swcli.cxx
@@ -0,0 +1,308 @@
+/*************************************************************************
+ *
+ * $RCSfile: swcli.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _IPENV_HXX //autogen
+#include <so3/ipenv.hxx>
+#endif
+#ifndef _EMBOBJ_HXX //autogen
+#include <so3/embobj.hxx>
+#endif
+#ifndef _IPOBJ_HXX //autogen
+#include <so3/ipobj.hxx>
+#endif
+
+#include "wrtsh.hxx"
+#include "swtypes.hxx"
+#include "view.hxx"
+#include "edtwin.hxx"
+#include "swcli.hxx"
+
+
+SwOleClient::SwOleClient( SwView *pView, SwEditWin *pWin ) :
+ SfxInPlaceClient( pView, pWin ), bInDoVerb( FALSE )
+{
+}
+
+
+void SwOleClient::RequestObjAreaPixel( const Rectangle & rObjRect )
+{
+ if ( !GetEnv() )
+ return;
+
+ //Der Server moechte die Clientgrosse verandern.
+ //Wir stecken die Wunschgroesse in die Core. Die Attribute des Rahmens
+ //werden auf den Wunschwert eingestellt. Dieser Wert wird also auch an
+ //den InPlaceClient weitergegeben.
+ //Die Core aktzeptiert bzw. formatiert die eingestellten Werte nicht
+ //zwangslaeufig. Wenn der Ole-Frm formatiert wurde wird das CalcAndSetScale()
+ //der WrtShell gerufen. Dort wird ggf. die Scalierung des SwOleClient
+ //eingestellt.
+
+ SwWrtShell &rSh = ((SwView*)GetViewShell())->GetWrtShell();
+ Window *pWin = rSh.GetWin();
+
+ SvContainerEnvironment *pEnv = GetEnv();
+ SvInPlaceEnvironment * pIPEnv = pEnv->GetIPEnv();
+ ASSERT( pIPEnv, "RequestObjAreaPixel, Environment not found" );
+
+ SvInPlaceObject * pIPObj = pIPEnv->GetIPObj();
+ // Falls der Server nicht mit dem Maástab des Containers syncronisiert
+ // ist, wird durch das Setzen und Abfragen der VisArea die Server
+ // Einstellung ermittelt.
+ // Niemals Koordinatentransformationen mit dem Rectangle vornehmen!!!
+ Rectangle aLogRect( pEnv->PixelObjVisAreaToLogic( rObjRect ) );
+ if ( pEnv->GetObjAreaPixel().GetSize() != rObjRect.GetSize() )
+ // sichtbaren Ausschnitt setzen und abfragen
+ aLogRect = pIPObj->SetGetVisArea( aLogRect );
+
+ Size aBla( aLogRect.GetSize() );
+ aBla.Width() = Fraction( aBla.Width() ) * GetEnv()->GetScaleWidth();
+ aBla.Height()= Fraction( aBla.Height() ) * GetEnv()->GetScaleHeight();
+ aLogRect.SetSize( aBla );
+
+ const MapMode aTmp( pIPObj->GetMapUnit() );
+ aLogRect.SetSize( pWin->LogicToLogic( aLogRect.GetSize(), aTmp, MAP_TWIP ) );
+
+ //#52207# Hat sich die Position wirklich geaendert (Umrechnungsfehler vermeiden)?
+ if ( GetClientData()->GetObjAreaPixel().TopLeft() != rObjRect.TopLeft() )
+ aLogRect.SetPos ( pWin->PixelToLogic( rObjRect.TopLeft()));
+ else
+ aLogRect.SetPos( Point( LONG_MIN, LONG_MIN ) );
+
+ rSh.StartAllAction();
+ rSh.RequestObjectResize( SwRect( aLogRect ), GetIPObj());
+ rSh.EndAllAction();
+
+
+ SwRect aFrm( rSh.GetAnyCurRect( RECT_FLY_EMBEDDED, 0, GetIPObj() )),
+ aPrt( rSh.GetAnyCurRect( RECT_FLY_PRT_EMBEDDED, 0, GetIPObj() ));
+ Size aSz ( aPrt.SSize() );
+ Point aPos( aPrt.Pos() + aFrm.Pos() );
+ aSz = pWin->LogicToPixel( aSz );
+ aPos = pWin->LogicToPixel( aPos);
+
+ Rectangle aPixRect( aPos, aSz );
+ SfxInPlaceClient::RequestObjAreaPixel( aPixRect );
+
+ if ( !aFrm.IsOver( rSh.VisArea() ) )
+ rSh.MakeVisible( aFrm );
+}
+
+
+void SwOleClient::ViewChanged( USHORT nAspect )
+{
+ SfxInPlaceClient::ViewChanged( nAspect );
+ if ( !GetEnv() || bInDoVerb )
+ return;
+
+ const Rectangle aOldArea( GetEnv()->GetObjArea() );
+ SwWrtShell &rSh = ((SwView*)GetViewShell())->GetWrtShell();
+ Window *pWin = rSh.GetWin();
+
+ //Einstellen der Groesse des Objektes in der Core. Die Scalierung muss
+ //beruecksichtigt werden. Rueckwirkung auf das Objekt werden von
+ //CalcAndSetScale() der WrtShell beruecksichtig, wenn die Groesse/Pos des
+ //Rahmens in der Core sich veraendert.
+ SvEmbeddedObject *pObj = GetEmbedObj();
+ Size aVisSize( pObj->GetVisArea().GetSize() );
+
+ // Bug 24833: solange keine vernuenftige Size vom Object kommt,
+ // kann nichts skaliert werden
+ if( !aVisSize.Width() || !aVisSize.Height() )
+ return;
+
+ aVisSize.Width() = Fraction( aVisSize.Width() ) * GetEnv()->GetScaleWidth();
+ aVisSize.Height()= Fraction( aVisSize.Height() ) * GetEnv()->GetScaleHeight();
+ const MapMode aMyMap ( MAP_TWIP );
+ const MapMode aObjMap( pObj->GetMapUnit() );
+ aVisSize = OutputDevice::LogicToLogic( aVisSize, aObjMap, aMyMap );
+
+ SwRect aRect( Point( LONG_MIN, LONG_MIN ), aVisSize );
+ rSh.LockView( TRUE ); //Scrollen im EndAction verhindern
+ rSh.StartAllAction();
+ rSh.RequestObjectResize( aRect, GetIPObj() );
+ rSh.EndAllAction();
+ rSh.LockView( FALSE );
+}
+
+
+void SwOleClient::MakeVisible()
+{
+ SfxInPlaceClient::MakeVisible();
+
+ const SwWrtShell &rSh = ((SwView*)GetViewShell())->GetWrtShell();
+ SvEmbeddedObject *pObj = GetEmbedObj();
+ rSh.MakeObjVisible( pObj );
+}
+
+
+void SwOleClient::MakeViewData()
+{
+ SfxInPlaceClient::MakeViewData();
+
+ SvClientData *pCD = GetClientData();
+ if ( pCD )
+ {
+ SwWrtShell &rSh = ((SwView*)GetViewShell())->GetWrtShell();
+ SvEmbeddedObjectRef xObj = GetEmbedObj();
+ rSh.CalcAndSetScale( xObj );
+ }
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.28 2000/09/18 16:06:11 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.27 2000/02/11 14:59:15 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.26 1999/05/11 19:50:16 JP
+ Task #66127#: Methoden rund ums Lineal verbessert und Schnittstellen veraendert/erweitert
+
+
+ Rev 1.25 11 May 1999 21:50:16 JP
+ Task #66127#: Methoden rund ums Lineal verbessert und Schnittstellen veraendert/erweitert
+
+ Rev 1.24 18 Dec 1998 17:56:52 JP
+ Bug #60270#: im SwOleClient Flag fuers abklemmen der ViewChgMsg beim Aktivieren
+
+ Rev 1.23 06 Jul 1998 15:19:08 MA
+ #52207# Pixelfehler vermeiden
+
+ Rev 1.22 21 Nov 1997 15:00:28 MA
+ includes
+
+ Rev 1.21 12 Nov 1997 12:31:08 TJ
+ includes vertauscht wegen internal compiler error!
+
+ Rev 1.20 03 Nov 1997 13:58:30 MA
+ precomp entfernt
+
+ Rev 1.19 04 Sep 1997 17:14:42 MA
+ includes
+
+ Rev 1.18 26 Nov 1996 17:35:02 MA
+ Entschlackt
+
+ Rev 1.17 29 Jul 1996 15:47:14 MA
+ includes
+
+ Rev 1.16 19 Apr 1996 14:04:10 HJS
+ const entfernt
+
+ Rev 1.15 18 Apr 1996 12:58:18 MA
+ Umstellung 313
+
+ Rev 1.14 18 Apr 1996 12:05:08 MA
+ Umstellung 313
+
+ Rev 1.13 18 Apr 1996 11:53:28 MA
+ new: MakeVisible
+
+ Rev 1.12 27 Mar 1996 12:27:30 MA
+ fix: Request..(), ggf. MakeVisible rufen
+
+ Rev 1.11 05 Mar 1996 15:51:04 MA
+ chg: ein paar SS mit IPObj
+
+ Rev 1.10 01 Feb 1996 19:11:30 JP
+ Bug #24833#: Ohne VisSize den Rahmen nicht anzeigen
+
+ Rev 1.9 19 Jan 1996 08:17:02 MA
+ chg: EqualSize entfernt
+
+ Rev 1.8 18 Jan 1996 13:20:30 MA
+ Umstellung OLE
+
+ Rev 1.7 09 Jan 1996 12:42:02 MA
+ fix: ViewChanged, View locken damit nicht gescrollt wird.
+
+ Rev 1.6 24 Nov 1995 16:58:02 OM
+ PCH->PRECOMPILED
+
+ Rev 1.5 13 Nov 1995 10:59:48 OM
+ static entfernt
+
+ Rev 1.4 20 Sep 1995 13:20:26 JP
+ RequestObjectAreaPixel: teil auskommentiert
+
+ Rev 1.3 14 Sep 1995 16:28:04 ER
+ add: soipenv.hxx
+
+ Rev 1.2 01 Sep 1995 16:11:14 SWG
+ Umstellung 255
+
+ Rev 1.1 14 Jul 1995 15:27:24 MA
+ fix: SEXPORT's nachgeruestet.
+
+ Rev 1.0 14 Jul 1995 11:57:52 MA
+ new: auf eigenen OleClient umgestellt
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/uiview/uivwimp.cxx b/sw/source/ui/uiview/uivwimp.cxx
new file mode 100644
index 000000000000..7d76a6ffa2c2
--- /dev/null
+++ b/sw/source/ui/uiview/uivwimp.cxx
@@ -0,0 +1,310 @@
+/*************************************************************************
+ *
+ * $RCSfile: uivwimp.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+#include <cmdid.h>
+#include "globals.hrc"
+
+#ifndef _UIVWIMP_HXX
+#include <uivwimp.hxx>
+#endif
+#ifndef _SWWVIEW_HXX //autogen
+#include <wview.hxx>
+#endif
+
+#ifndef _UNOTXVW_HXX
+#include <unotxvw.hxx>
+#endif
+
+#ifndef _SV_SVAPP_HXX
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SV_WRKWIN_HXX
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include "swmodule.hxx"
+#endif
+#include <view.hrc>
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_SCANNER_XSCANNERMANAGER_HPP_
+#include <com/sun/star/scanner/XScannerManager.hpp>
+#endif
+#ifndef _SFX_BINDINGS_HXX
+#include <sfx2/bindings.hxx>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::scanner;
+using namespace ::com::sun::star::lang;
+/* -----------------02.06.98 15:31-------------------
+ *
+ * --------------------------------------------------*/
+SwView_Impl::SwView_Impl(SwView* pShell) :
+ pView(pShell),
+ pxXTextView(new uno::Reference<view::XSelectionSupplier>),
+ eShellMode(SEL_TEXT)
+{
+ *pxXTextView = new SwXTextView(pView);
+}
+
+/*-----------------13.12.97 09:51-------------------
+
+--------------------------------------------------*/
+SwView_Impl::~SwView_Impl()
+{
+ view::XSelectionSupplier* pTextView = pxXTextView->get();
+ ((SwXTextView*)pTextView)->Invalidate();
+ delete pxXTextView;
+ if(xScanEvtLstnr.is())
+ pScanEvtLstnr->ParentDestroyed();
+}
+/* -----------------------------29.05.00 08:29--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwScannerEventListener::~SwScannerEventListener()
+{
+}
+/* -----------------------------29.05.00 08:29--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SAL_CALL SwScannerEventListener::disposing( const EventObject& rEventObject )
+{
+ if( m_pParent )
+ m_pParent->ScannerEventHdl( rEventObject );
+}
+
+/*-----------------13.12.97 09:54-------------------
+
+--------------------------------------------------*/
+void SwView_Impl::SetShellMode(ShellModes eSet)
+{
+ eShellMode = eSet;
+}
+/*-----------------13.12.97 09:59-------------------
+
+--------------------------------------------------*/
+view::XSelectionSupplier* SwView_Impl::GetUNOObject()
+{
+ return pxXTextView->get();
+}
+/* -----------------02.06.98 15:29-------------------
+ *
+ * --------------------------------------------------*/
+SwXTextView* SwView_Impl::GetUNOObject_Impl()
+{
+ view::XSelectionSupplier* pTextView = pxXTextView->get();
+ return ((SwXTextView*)pTextView);
+}
+/* -----------------------------29.05.00 09:04--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwView_Impl::ExcuteScan(USHORT nSlot)
+{
+ switch(nSlot)
+ {
+ case SID_TWAIN_SELECT:
+ {
+ BOOL bDone = FALSE;
+ Reference< XScannerManager > xScanMgr = SW_MOD()->GetScannerManager();
+
+ if( xScanMgr.is() )
+ {
+//JP 26.06.00: the appwindow doen't exist
+// Application::GetAppWindow()->EnableInput( FALSE );
+
+ try
+ {
+ const Sequence< ScannerContext >
+ aContexts( xScanMgr->getAvailableScanners() );
+
+ if( aContexts.getLength() )
+ {
+ ScannerContext aContext( aContexts.getConstArray()[ 0 ] );
+ bDone = xScanMgr->configureScanner( aContext );
+ }
+ }
+ catch(...)
+ {
+ }
+
+//JP 26.06.00: the appwindow doen't exist
+// Application::GetAppWindow()->EnableInput( TRUE );
+ }
+ if( !bDone )
+ InfoBox( 0, SW_RES(MSG_SCAN_NOSOURCE) ).Execute();
+ }
+ break;
+
+ case SID_TWAIN_TRANSFER:
+ {
+ BOOL bDone = FALSE;
+
+ Reference< XScannerManager > xScanMgr = SW_MOD()->GetScannerManager();
+ if( xScanMgr.is() )
+ {
+ SwScannerEventListener& rListener = GetScannerEventListener();
+//JP 26.06.00: the appwindow doen't exist
+// Application::GetAppWindow()->EnableInput( FALSE );
+ try
+ {
+ const Sequence< scanner::ScannerContext >aContexts( xScanMgr->getAvailableScanners() );
+ if( aContexts.getLength() )
+ {
+ Reference< XEventListener > xLstner = &rListener;
+ xScanMgr->startScan( aContexts.getConstArray()[ 0 ], xLstner );
+ bDone = TRUE;
+ }
+ }
+ catch(...)
+ {
+ }
+ }
+
+ if( !bDone )
+ {
+//JP 26.06.00: the appwindow doen't exist
+// Application::GetAppWindow()->EnableInput( TRUE );
+ InfoBox( 0, SW_RES(MSG_SCAN_NOSOURCE) ).Execute();
+ }
+ else
+ {
+ SfxBindings& rBind = pView->GetViewFrame()->GetBindings();
+ rBind.Invalidate( SID_TWAIN_SELECT );
+ rBind.Invalidate( SID_TWAIN_TRANSFER );
+ }
+ }
+ break;
+ }
+}
+
+/* -----------------------------29.05.00 08:26--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwScannerEventListener& SwView_Impl::GetScannerEventListener()
+{
+ if(!xScanEvtLstnr.is())
+ xScanEvtLstnr = pScanEvtLstnr = new SwScannerEventListener(pView);
+ return *pScanEvtLstnr;
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.14 2000/09/18 16:06:11 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.13 2000/09/07 15:59:32 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.12 2000/06/26 10:44:13 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.11 2000/05/29 08:03:23 os
+ new scanner interface
+
+ Revision 1.10 2000/05/09 14:43:13 os
+ BASIC interface partially removed
+
+ Revision 1.9 2000/03/23 07:50:24 os
+ UNO III
+
+ Revision 1.8 1999/01/27 08:58:26 OS
+ #56371# TF_ONE51
+
+
+ Rev 1.7 27 Jan 1999 09:58:26 OS
+ #56371# TF_ONE51
+
+ Rev 1.6 30 Sep 1998 11:37:50 OS
+ #52654# ueberfluessigen Aufruf entfernt
+
+ Rev 1.5 02 Jun 1998 15:51:16 OS
+ TF_STARONE raus; Ctor nicht mehr inline
+
+ Rev 1.4 03 Apr 1998 14:38:28 OS
+ UnoObject fuer die View reaktiviert
+
+ Rev 1.3 04 Feb 1998 17:28:44 OS
+ Starone raus
+
+ Rev 1.2 29 Jan 1998 09:21:06 OS
+ TF_STARONE
+
+ Rev 1.1 19 Jan 1998 14:59:14 OS
+ UNO-Aenderungen
+
+ Rev 1.0 16 Dec 1997 11:58:48 OS
+ Impl-Pointer fuer UNO
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/uiview/view.cxx b/sw/source/ui/uiview/view.cxx
new file mode 100644
index 000000000000..3271fc03c6e2
--- /dev/null
+++ b/sw/source/ui/uiview/view.cxx
@@ -0,0 +1,1743 @@
+/*************************************************************************
+ *
+ * $RCSfile: view.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <string> // HACK: prevent conflict between STLPORT and Workshop headers
+
+#include <stdlib.h>
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SV_GRAPH_HXX //autogen
+#include <vcl/graph.hxx>
+#endif
+#ifndef _VCL_INPUTCTX_HXX //autogen
+#include <vcl/inputctx.hxx>
+#endif
+#ifndef _SBX_SBXOBJECT_HXX //autogen
+#include <svtools/sbxobj.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFX_SAVEOPT_HXX //autogen
+#include <sfx2/saveopt.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _SVX_RULER_HXX //autogen
+#include <svx/ruler.hxx>
+#endif
+#ifndef _SVX_PROTITEM_HXX //autogen
+#include <svx/protitem.hxx>
+#endif
+#ifndef _SBASLTID_HRC //autogen
+#include <offmgr/sbasltid.hrc>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _OFA_OSPLCFG_HXX
+#include <offmgr/osplcfg.hxx>
+#endif
+
+#ifndef _SVX_FMSHELL_HXX //autogen
+#include <svx/fmshell.hxx>
+#endif
+#ifndef _UNOTXVW_HXX
+#include <unotxvw.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _SWHINTS_HXX
+#include <swhints.hxx>
+#endif
+
+#ifndef _SWMODULE_HXX //autogen
+#include <swmodule.hxx>
+#endif
+#ifndef SW_INPUTWIN_HXX //autogen
+#include <inputwin.hxx>
+#endif
+#ifndef _CHARTINS_HXX //autogen
+#include <chartins.hxx>
+#endif
+#ifndef _UIVWIMP_HXX
+#include <uivwimp.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _TEXTSH_HXX
+#include <textsh.hxx>
+#endif
+#ifndef _LISTSH_HXX
+#include <listsh.hxx>
+#endif
+#ifndef _TABSH_HXX
+#include <tabsh.hxx>
+#endif
+#ifndef _GRFSH_HXX
+#include <grfsh.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _FRMSH_HXX
+#include <frmsh.hxx>
+#endif
+#ifndef _OLESH_HXX
+#include <olesh.hxx>
+#endif
+#ifndef _DRAWSH_HXX
+#include <drawsh.hxx>
+#endif
+#ifndef _DRAWBASE_HXX
+#include <drawbase.hxx>
+#endif
+#ifndef _DRFORMSH_HXX
+#include <drformsh.hxx>
+#endif
+#ifndef _DRWTXTSH_HXX
+#include <drwtxtsh.hxx>
+#endif
+#ifndef _BEZIERSH_HXX
+#include <beziersh.hxx>
+#endif
+#ifndef _GLOBDOC_HXX
+#include <globdoc.hxx>
+#endif
+#ifndef _SCROLL_HXX
+#include <scroll.hxx>
+#endif
+#ifndef _GLOBDOC_HXX
+#include <globdoc.hxx>
+#endif
+#ifndef _NAVIPI_HXX
+#include <navipi.hxx>
+#endif
+#ifndef _GLOSHDL_HXX
+#include <gloshdl.hxx>
+#endif
+#ifndef _USRPREF_HXX
+#include <usrpref.hxx>
+#endif
+#ifndef _SRCVIEW_HXX
+#include <srcview.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _WDOCSH_HXX
+#include <wdocsh.hxx>
+#endif
+#ifndef _WVIEW_HXX
+#include <wview.hxx>
+#endif
+#ifndef _WORKCTRL_HXX
+#include <workctrl.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _BARCFG_HXX
+#include <barcfg.hxx>
+#endif
+#ifndef _DOC_HXX //autogen
+#include <doc.hxx>
+#endif
+#ifndef _PVIEW_HXX
+#include <pview.hxx>
+#endif
+
+#ifndef _VIEW_HRC
+#include <view.hrc>
+#endif
+#ifndef _GLOBDOC_HRC
+#include <globdoc.hrc>
+#endif
+#ifndef _FRMUI_HRC
+#include <frmui.hrc>
+#endif
+
+
+#ifndef _LINGU_LNGPROPS_HHX_
+#include <lingu/lngprops.hxx>
+#endif
+#ifndef _UNO_LINGU_HXX
+#include <svx/unolingu.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_SCANNER_SCANNERCONTEXT_HPP_
+#include <com/sun/star/scanner/ScannerContext.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCANNER_XSCANNERMANAGER_HPP_
+#include <com/sun/star/scanner/XScannerManager.hpp>
+#endif
+#ifndef _TOOLKIT_HELPER_VCLUNOHELPER_HXX_
+#include <toolkit/unohlp.hxx>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::scanner;
+using namespace ::rtl;
+#define C2U(cChar) OUString::createFromAscii(cChar)
+#define C2S(cChar) String::CreateFromAscii(cChar)
+
+extern sal_Bool bNoInterrupt; // in mainwn.cxx
+
+#define SWVIEWFLAGS ( SFX_VIEW_MAXIMIZE_FIRST| \
+ SFX_VIEW_OBJECTSIZE_EMBEDDED| \
+ SFX_VIEW_CAN_PRINT| \
+ SFX_VIEW_HAS_PRINTOPTIONS)
+
+//MA 06. Nov. 95: Each raus in Absprache mit MI wg. Bug 21523
+// SFX_VIEW_OPTIMIZE_EACH|
+
+/*--------------------------------------------------------------------
+ Beschreibung: Statics
+ --------------------------------------------------------------------*/
+
+int bDocSzUpdated = 1;
+
+SvxSearchItem* SwView::pSrchItem = 0;
+
+sal_uInt16 SwView::nInsertCtrlState = FN_INSERT_TABLE;
+sal_uInt16 SwView::nWebInsertCtrlState = FN_INSERT_TABLE;
+sal_uInt16 SwView::nInsertObjectCtrlState = SID_INSERT_DIAGRAM;
+
+sal_Bool SwView::bExtra = sal_False;
+sal_Bool SwView::bFound = sal_False;
+sal_Bool SwView::bJustOpened = sal_False;
+
+
+SvxSearchDialog* SwView::pSrchDlg = 0;
+SearchAttrItemList* SwView::pSrchList = 0;
+SearchAttrItemList* SwView::pReplList = 0;
+
+DBG_NAME(viewhdl);
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+inline SfxDispatcher &SwView::GetDispatcher()
+{
+ return *GetViewFrame()->GetDispatcher();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwView::ImpSetVerb( int nSelType )
+{
+ sal_Bool bResetVerbs = bVerbsActive;
+ if ( !GetDocShell()->GetProtocol().IsInPlaceActive() &&
+ (SwWrtShell::SEL_OLE|SwWrtShell::SEL_GRF) & nSelType )
+ {
+ if ( !pWrtShell->IsSelObjProtected(FLYPROTECT_CONTENT) )
+ {
+ if ( nSelType & SwWrtShell::SEL_OLE )
+ {
+ SvInPlaceObjectRef xRef = GetWrtShell().GetOLEObj();
+ SetVerbs( &xRef->GetVerbList() );
+ bVerbsActive = sal_True;
+ bResetVerbs = sal_False;
+ }
+ if ( nSelType & SwWrtShell::SEL_GRF &&
+
+ SFX_APP()->HasFeature( SFX_FEATURE_SIMAGE ) )
+ {
+ SvVerb aVerb( 0, SW_RESSTR( STR_VERB_FOR_GRF ));
+ SvVerbList aLst;
+ aLst.Append( aVerb );
+ SetVerbs( &aLst );
+ bVerbsActive = sal_True;
+ bResetVerbs = sal_False;
+ }
+ }
+ }
+ if ( bResetVerbs )
+ {
+ SetVerbs( 0 );
+ bVerbsActive = sal_False;
+ }
+}
+
+
+void SwView::SelectShell()
+{
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+//
+// Achtung: SelectShell fuer die WebView mitpflegen
+//
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+
+ // Entscheidung, ob UpdateTable gerufen werden muss
+ sal_Bool bUpdateTable = sal_False;
+ const SwFrmFmt* pCurTableFmt = pWrtShell->GetTableFmt();
+ if(pCurTableFmt && pCurTableFmt != pLastTableFormat)
+ {
+ bUpdateTable = sal_True; // kann erst spaeter ausgefuehrt werden
+ }
+ pLastTableFormat = pCurTableFmt;
+
+ //SEL_TBL und SEL_TBL_CELLS koennen verodert sein!
+ int nNewSelectionType = (pWrtShell->GetSelectionType()
+ & ~SwWrtShell::SEL_TBL_CELLS);
+
+ if ( nNewSelectionType == nSelectionType )
+ {
+ GetViewFrame()->GetBindings().InvalidateAll( sal_False );
+ if ( nSelectionType & SwWrtShell::SEL_OLE ||
+ nSelectionType & SwWrtShell::SEL_GRF )
+ //Fuer Grafiken und OLE kann sich natuerlich das Verb aendern!
+ ImpSetVerb( nNewSelectionType );
+ }
+ else
+ {
+
+ SfxDispatcher &rDispatcher = GetDispatcher();
+ SwToolbarConfigItem *pBarCfg = SW_MOD()->GetToolbarConfig();
+
+ // DELETEZ(pxSelectionObj); //Selektionsobjekt loeschen
+ if ( pShell )
+ {
+ rDispatcher.Flush(); // alle gecachten Shells wirklich loeschen
+
+ //Zur alten Selektion merken welche Toolbar sichtbar war
+ sal_uInt16 nId = rDispatcher.GetObjectBarId( SFX_OBJECTBAR_OBJECT );
+ if ( nId )
+ pBarCfg->SetTopToolbar( nSelectionType, nId );
+
+ SfxShell *pSfxShell;
+ sal_uInt16 i;
+ for ( i = 0; sal_True; ++i )
+ {
+ pSfxShell = rDispatcher.GetShell( i );
+ if ( !(pSfxShell->ISA( SwBaseShell ) ||
+ pSfxShell->ISA( SwDrawTextShell )) )
+ break;
+ }
+ pSfxShell = rDispatcher.GetShell( --i );
+ ASSERT( pSfxShell, "My Shell ist lost in space" );
+ rDispatcher.Pop( *pSfxShell, SFX_SHELL_POP_UNTIL | SFX_SHELL_POP_DELETE);
+ }
+
+ FASTBOOL bInitFormShell = sal_False;
+ if (!pFormShell)
+ {
+ bInitFormShell = sal_True;
+ pFormShell = new FmFormShell( this );
+ rDispatcher.Push( *pFormShell );
+
+ StartListening(*pFormShell);
+ }
+
+ FASTBOOL bSetExtInpCntxt = sal_False;
+ nSelectionType = nNewSelectionType;
+ ShellModes eShellMode;
+
+ if ( nSelectionType & SwWrtShell::SEL_OLE )
+ {
+ eShellMode = SEL_OBJECT;
+ pShell = new SwOleShell( *this );
+ rDispatcher.Push( *pShell );
+ }
+ else if ( nSelectionType & SwWrtShell::SEL_FRM
+ || nSelectionType & SwWrtShell::SEL_GRF)
+ {
+ eShellMode = SEL_FRAME;
+ pShell = new SwFrameShell( *this );
+ rDispatcher.Push( *pShell );
+ if(nSelectionType & SwWrtShell::SEL_GRF )
+ {
+ eShellMode = SEL_GRAPHIC;
+ pShell = new SwGrfShell( *this );
+ rDispatcher.Push( *pShell );
+ }
+ }
+ else if ( nSelectionType & SwWrtShell::SEL_DRW )
+ {
+ eShellMode = SEL_DRAW;
+ pShell = new SwDrawShell( *this );
+
+ rDispatcher.Push( *pShell );
+ if ( nSelectionType & SwWrtShell::SEL_BEZ )
+ {
+ eShellMode = SEL_BEZIER;
+ pShell = new SwBezierShell( *this );
+ rDispatcher.Push( *pShell );
+ }
+ }
+ else if ( nSelectionType & SwWrtShell::SEL_DRW_FORM )
+ {
+ eShellMode = SEL_DRAW_FORM;
+ pShell = new SwDrawFormShell( *this );
+
+ rDispatcher.Push( *pShell );
+ }
+ else if ( nSelectionType & SwWrtShell::SEL_DRW_TXT )
+ {
+ eShellMode = SEL_DRAWTEXT;
+ rDispatcher.Push( *(new SwBaseShell( *this )) );
+ pShell = new SwDrawTextShell( *this );
+ rDispatcher.Push( *pShell );
+ }
+ else
+ {
+ bSetExtInpCntxt = sal_True;
+ eShellMode = SEL_TEXT;
+ sal_uInt32 nHelpId = 0;
+ if ( nSelectionType & SwWrtShell::SEL_NUM )
+ {
+ eShellMode = SEL_LIST_TEXT;
+ pShell = new SwListShell( *this );
+ nHelpId = pShell->GetHelpId();
+ rDispatcher.Push( *pShell );
+ }
+ pShell = new SwTextShell(*this);
+ if(nHelpId)
+ pShell->SetHelpId(nHelpId);
+ rDispatcher.Push( *pShell );
+ if ( nSelectionType & SwWrtShell::SEL_TBL )
+ {
+ eShellMode = eShellMode == SEL_LIST_TEXT ? SEL_TABLE_LIST_TEXT
+ : SEL_TABLE_TEXT;
+ pShell = new SwTableShell( *this );
+ rDispatcher.Push( *pShell );
+ }
+ }
+ pViewImpl->SetShellMode(eShellMode);
+ ImpSetVerb( nSelectionType );
+
+ if( !GetDocShell()->IsReadOnly() )
+ {
+ if( bSetExtInpCntxt && GetWrtShell().HasReadonlySel() )
+ bSetExtInpCntxt = sal_False;
+
+ InputContext aCntxt( GetEditWin().GetInputContext() );
+ aCntxt.SetOptions( bSetExtInpCntxt
+ ? (aCntxt.GetOptions() |
+ ( INPUTCONTEXT_TEXT |
+ INPUTCONTEXT_EXTTEXTINPUT ))
+ : (aCntxt.GetOptions() & ~
+ ( INPUTCONTEXT_TEXT |
+ INPUTCONTEXT_EXTTEXTINPUT )) );
+ GetEditWin().SetInputContext( aCntxt );
+ }
+
+ //Zur neuen Selektion die Toolbar aktivieren, die auch beim letzten Mal
+ //aktiviert war
+ //Vorher muss ein Flush() sein, betrifft aber lt. MBA nicht das UI und ist
+ //kein Performance-Problem
+ rDispatcher.Flush();
+ sal_uInt16 nId = pBarCfg->GetTopToolbar( nSelectionType );
+ if ( USHRT_MAX != nId )
+ rDispatcher.ShowObjectBar( nId );
+
+ Point aPnt = GetEditWin().OutputToScreenPixel(GetEditWin().GetPointerPosPixel());
+ aPnt = GetEditWin().PixelToLogic(aPnt);
+ GetEditWin().UpdatePointer(aPnt);
+
+ if ( bInitFormShell && GetWrtShell().GetDrawView() )
+ pFormShell->SetView(PTR_CAST(FmFormView, GetWrtShell().GetDrawView()));
+
+ }
+ //Guenstiger Zeitpunkt fuer die Kommunikation mit OLE-Objekten?
+ if ( GetDocShell()->GetDoc()->IsOLEPrtNotifyPending() )
+ GetDocShell()->GetDoc()->PrtOLENotify( sal_False );
+
+ //jetzt das Tabellen-Update
+ if(bUpdateTable)
+ pWrtShell->UpdateTable();
+}
+
+//Zusammenspiel: AttrChangedNotify() und TimeoutHdl.
+//Falls noch Actions offen sind keine Aktualisierung, da der
+//Cursor auf der Core-Seite im Wald stehen kann.
+//Da wir aber keine Stati mehr liefern koennen und wollen locken wir
+//stattdessen den Dispatcher.
+
+
+
+int
+#if defined( WNT )
+ __cdecl
+#endif
+#if defined( ICC )
+ _Optlink
+#endif
+ lcl_CmpIds( const void *pFirst, const void *pSecond)
+{
+ return (*(sal_uInt16*)pFirst) - (*(sal_uInt16*)pSecond);
+}
+
+
+
+IMPL_LINK( SwView, AttrChangedNotify, SwWrtShell *, EMPTYARG )
+{
+ if ( GetEditWin().IsChainMode() )
+ GetEditWin().SetChainMode( sal_False );
+
+ //Opt: Nicht wenn PaintLocked. Beim Unlock wird dafuer nocheinmal ein
+ //Notify ausgeloest.
+ if( !pWrtShell->IsPaintLocked() && !bNoInterrupt &&
+ GetDocShell()->IsReadOnly() )
+ _CheckReadonlyState();
+
+ // JP 19.01.99: Cursor in Readonly Bereichen
+ if( !pWrtShell->IsPaintLocked() && !bNoInterrupt )
+ _CheckReadonlySelection();
+
+ if( !bAttrChgNotified )
+ {
+ if ( pWrtShell->BasicActionPend() || bNoInterrupt ||
+ GetDispatcher().IsLocked() || //do not confuse the SFX
+ GetViewFrame()->GetBindings().IsInUpdate() )//do not confuse the SFX
+ {
+ bAttrChgNotified = sal_True;
+ aTimer.Start();
+
+ const SfxPoolItem *pItem;
+ if ( SFX_ITEM_SET != GetObjectShell()->GetMedium()->GetItemSet()->
+ GetItemState( SID_HIDDEN, sal_False, &pItem ) ||
+ !((SfxBoolItem*)pItem)->GetValue() )
+ {
+ GetViewFrame()->GetBindings().ENTERREGISTRATIONS();
+ bAttrChgNotifiedWithRegistrations = sal_True;
+ }
+ }
+ else
+ SelectShell();
+ }
+ GetViewImpl()->GetUNOObject_Impl()->NotifySelChanged();
+ return 0;
+}
+
+
+
+IMPL_LINK( SwView, TimeoutHdl, Timer *, EMPTYARG )
+{
+ DBG_PROFSTART(viewhdl);
+
+ if( pWrtShell->BasicActionPend() || bNoInterrupt )
+ {
+ aTimer.Start();
+ DBG_PROFSTOP(viewhdl);
+ return 0;
+ }
+
+ if ( bAttrChgNotifiedWithRegistrations )
+ {
+ GetViewFrame()->GetBindings().LEAVEREGISTRATIONS();
+ bAttrChgNotifiedWithRegistrations = sal_False;
+ }
+
+ _CheckReadonlyState();
+ _CheckReadonlySelection();
+
+ SelectShell();
+ bAttrChgNotified = sal_False;
+
+ DBG_PROFSTOP(viewhdl);
+ return 0;
+}
+
+void SwView::_CheckReadonlyState()
+{
+ SfxDispatcher &rDis = GetDispatcher();
+ //Um erkennen zu koennen ob bereits disabled ist!
+ SfxItemState eStateRO, eStateProtAll;
+ const SfxPoolItem *pItem;
+ // JP 29.04.97: von einem nur uns bekannten Slot den Status abfragen.
+ // Ansonsten kennen andere den Slot; wie z.B. die BasidIde
+ eStateRO = rDis.QueryState( FN_INSERT_BOOKMARK, pItem );
+ eStateProtAll = rDis.QueryState( FN_EDIT_REGION, pItem );
+ sal_Bool bChgd = sal_False;
+
+ if ( !pWrtShell->IsCrsrReadonly() )
+ {
+ static sal_uInt16 aROIds[] =
+ {
+ SID_DELETE, FN_BACKSPACE, FN_SHIFT_BACKSPACE,
+ SID_UNDO,
+ SID_REDO, SID_REPEAT, SID_PASTE,
+ FN_PASTESPECIAL, SID_SBA_BRW_INSERT,
+ SID_BACKGROUND_COLOR, FN_INSERT_BOOKMARK,
+ FN_INSERT_SYMBOL, FN_INSERT_SOFT_HYPHEN,
+ FN_INSERT_HARDHYPHEN, FN_INSERT_HARD_SPACE, FN_INSERT_BREAK,
+ FN_INSERT_LINEBREAK, FN_INSERT_COLUMN_BREAK, FN_INSERT_BREAK_DLG,
+ FN_DELETE_SENT, FN_DELETE_BACK_SENT, FN_DELETE_WORD,
+ FN_DELETE_BACK_WORD, FN_DELETE_LINE, FN_DELETE_BACK_LINE,
+ FN_DELETE_PARA, FN_DELETE_BACK_PARA, FN_DELETE_WHOLE_LINE,
+ FN_CALCULATE, FN_FORMAT_RESET,
+ FN_POSTIT, FN_JAVAEDIT, SID_ATTR_PARA_ADJUST_LEFT,
+ SID_ATTR_PARA_ADJUST_RIGHT, SID_ATTR_PARA_ADJUST_CENTER,SID_ATTR_PARA_ADJUST_BLOCK,
+ SID_ATTR_PARA_LINESPACE_10, SID_ATTR_PARA_LINESPACE_15, SID_ATTR_PARA_LINESPACE_20,
+ SID_ATTR_CHAR_FONT, SID_ATTR_CHAR_FONTHEIGHT, SID_ATTR_CHAR_COLOR_BACKGROUND,
+ SID_ATTR_CHAR_COLOR_BACKGROUND_EXT, SID_ATTR_CHAR_COLOR_EXT,
+ SID_ATTR_CHAR_COLOR, SID_ATTR_CHAR_WEIGHT, SID_ATTR_CHAR_POSTURE,
+ SID_ATTR_CHAR_UNDERLINE, SID_ATTR_FLASH, SID_ATTR_CHAR_STRIKEOUT,
+ FN_UNDERLINE_DOUBLE, SID_ATTR_CHAR_CONTOUR, SID_ATTR_CHAR_SHADOWED,
+ SID_ATTR_CHAR_AUTOKERN, SID_ATTR_CHAR_ESCAPEMENT, FN_SET_SUPER_SCRIPT,
+ FN_SET_SUB_SCRIPT, SID_ATTR_CHAR_CASEMAP, SID_ATTR_CHAR_LANGUAGE,
+ SID_ATTR_CHAR_KERNING, SID_CHAR_DLG, SID_ATTR_CHAR_WORDLINEMODE,
+ FN_GROW_FONT_SIZE, FN_SHRINK_FONT_SIZE, FN_TXTATR_INET,
+ FN_FORMAT_DROPCAPS, SID_ATTR_PARA_ADJUST, SID_ATTR_PARA_LINESPACE,
+ SID_ATTR_PARA_SPLIT, SID_ATTR_PARA_KEEP, SID_ATTR_PARA_WIDOWS,
+ SID_ATTR_PARA_ORPHANS,
+ SID_ATTR_PARA_MODEL, SID_PARA_DLG,
+ FN_SELECT_PARA, SID_DEC_INDENT,
+ SID_INC_INDENT
+ };
+ static sal_Bool bFirst = sal_True;
+ if ( bFirst )
+ {
+ qsort( (void*)aROIds, sizeof(aROIds)/sizeof(sal_uInt16), sizeof(sal_uInt16), lcl_CmpIds );
+ bFirst = sal_False;
+ }
+ if ( SFX_ITEM_DISABLED == eStateRO )
+ {
+ rDis.SetSlotFilter( sal_Bool(2), sizeof(aROIds)/sizeof(sal_uInt16), aROIds );
+ bChgd = sal_True;
+ }
+ }
+ else if( pWrtShell->IsAllProtect() )
+ {
+ if ( SFX_ITEM_DISABLED == eStateProtAll )
+ {
+ static sal_uInt16 aAllProtIds[] = { SID_SAVEDOC, FN_EDIT_REGION };
+ static sal_Bool bAllProtFirst = sal_True;
+ if ( bAllProtFirst )
+ {
+ qsort( (void*)aAllProtIds, sizeof(aAllProtIds)/sizeof(sal_uInt16), sizeof(sal_uInt16), lcl_CmpIds );
+ bAllProtFirst = sal_False;
+ }
+ rDis.SetSlotFilter( sal_Bool(2),
+ sizeof(aAllProtIds)/sizeof(sal_uInt16),
+ aAllProtIds );
+ bChgd = sal_True;
+ }
+ }
+ else if ( SFX_ITEM_DISABLED != eStateRO ||
+ SFX_ITEM_DISABLED != eStateProtAll )
+ {
+ bChgd = sal_True;
+ rDis.SetSlotFilter();
+ }
+ if ( bChgd )
+ GetViewFrame()->GetBindings().InvalidateAll(sal_True);
+}
+
+void SwView::_CheckReadonlySelection()
+{
+ sal_uInt32 nDisableFlags = 0;
+ SfxDispatcher &rDis = GetDispatcher();
+
+ if( pWrtShell->HasReadonlySel() &&
+ ( !pWrtShell->GetDrawView() ||
+ !pWrtShell->GetDrawView()->GetMarkList().GetMarkCount() ))
+ nDisableFlags |= SW_DISABLE_ON_PROTECTED_CURSOR;
+
+ if( (SW_DISABLE_ON_PROTECTED_CURSOR & nDisableFlags ) !=
+ (SW_DISABLE_ON_PROTECTED_CURSOR & rDis.GetDisableFlags() ) )
+ {
+ // zusaetzlich am Window den InputContext umsetzen, damit in
+ // japanischen / chinesischen Versionen die externe Eingabe
+ // ab-/angeschaltet wird. Das aber nur wenn auch die richtige
+ // Shell auf dem Stack steht.
+ switch( pViewImpl->GetShellMode() )
+ {
+ case SEL_TEXT:
+ case SEL_LIST_TEXT:
+ case SEL_TABLE_TEXT:
+ case SEL_TABLE_LIST_TEXT:
+ {
+//JP 22.01.99: temporaere Loesung!!! Sollte bei jeder Cursorbewegung
+// den Font von der akt. Einfuegeposition setzen, also ausserhalb
+// dieses if's. Aber TH wertet den Font zur Zeit nicht aus und
+// das besorgen erscheint mir hier zu teuer zu sein.
+// Ausserdem haben wir keinen Font, sondern nur Attribute aus denen
+// die Textformatierung dann den richtigen Font zusammen baut.
+
+ InputContext aCntxt( GetEditWin().GetInputContext() );
+ aCntxt.SetOptions( SW_DISABLE_ON_PROTECTED_CURSOR & nDisableFlags
+ ? (aCntxt.GetOptions() & ~
+ ( INPUTCONTEXT_TEXT |
+ INPUTCONTEXT_EXTTEXTINPUT ))
+ : (aCntxt.GetOptions() |
+ ( INPUTCONTEXT_TEXT |
+ INPUTCONTEXT_EXTTEXTINPUT )) );
+ GetEditWin().SetInputContext( aCntxt );
+ }
+ break;
+ }
+
+ }
+
+ if( nDisableFlags != rDis.GetDisableFlags() )
+ {
+ rDis.SetDisableFlags( nDisableFlags );
+ GetViewFrame()->GetBindings().InvalidateAll( sal_True );
+ }
+}
+
+
+SwView::SwView( SfxViewFrame *pFrame, SfxViewShell* pOldSh )
+ : SfxViewShell( pFrame, SWVIEWFLAGS ),
+ aPageStr( SW_RES( STR_PAGE )),
+ pEditWin( new SwEditWin( &pFrame->GetWindow(), *this ) ),
+ pShell(0),
+ pWrtShell(0),
+ pFormShell(0),
+ pHScrollbar(0),
+ pVScrollbar(0),
+ pScrollFill(0),
+ pHLineal( new SvxRuler(&GetViewFrame()->GetWindow(), pEditWin,
+ SVXRULER_SUPPORT_TABS |
+ SVXRULER_SUPPORT_PARAGRAPH_MARGINS |
+ SVXRULER_SUPPORT_BORDERS |
+ SVXRULER_SUPPORT_NEGATIVE_MARGINS,
+ GetViewFrame()->GetBindings(),
+ WB_STDRULER | WB_EXTRAFIELD | WB_3DLOOK | WB_BORDER)),
+ pVLineal(0),
+ pTogglePageBtn(0),
+ pPageUpBtn(0),
+ pPageDownBtn(0),
+ pNaviBtn(0),
+ pGlosHdl(0),
+ pDrawActual(0),
+ pLastTableFormat(0),
+ nDrawSfxId( USHRT_MAX ),
+ nFormSfxId( USHRT_MAX ),
+ nSelectionType( INT_MAX )
+{
+ bCenterCrsr = bTopCrsr = bAllwaysShowSel = bTabColFromDoc =
+ bSetTabColFromDoc = bAttrChgNotified = bAttrChgNotifiedWithRegistrations =
+ bVerbsActive = bIsApi = bDrawRotate = bInOuterResizePixel = sal_False;
+
+ bShowAtResize = bDrawSelMode = bDocSzUpdated = sal_True;
+
+ pViewImpl = new SwView_Impl(this);
+ SetName(C2S("View"));
+ SetWindow( pEditWin );
+
+ aTimer.SetTimeout( 120 );
+
+ SwDocShell* pDocSh = PTR_CAST( SwDocShell, pFrame->GetObjectShell() );
+ ASSERT( pDocSh, "View ohne DocShell." );
+ SwWebDocShell* pWebDShell = PTR_CAST( SwWebDocShell, pDocSh );
+
+ SwViewOption aUsrPref( *SW_MOD()->GetUsrPref( 0 != pWebDShell ));
+ uno::Reference< beans::XPropertySet > xProp( ::GetLinguPropertySet() );
+ sal_Bool bVal;
+
+ bVal = xProp.is() ?
+ *(sal_Bool*)xProp->getPropertyValue( C2U(UPN_IS_SPELL_AUTO)).getValue() : sal_False;
+ aUsrPref.SetOnlineSpell( bVal );
+ bVal = xProp.is() ?
+ *(sal_Bool*)xProp->getPropertyValue( C2U(UPN_IS_SPELL_HIDE)).getValue() : sal_False;
+ aUsrPref.SetHideSpell( bVal );
+
+ if( !pOldSh )
+ {
+ //Gibt es schon eine Sicht auf das Dokument?
+ SfxViewFrame *pF = SfxViewFrame::GetFirst( pDocSh );
+ if( pF == pFrame )
+ pF = SfxViewFrame::GetNext( *pF, pDocSh );
+ if( pF )
+ pOldSh = pF->GetViewShell();
+ }
+ else if( pOldSh->IsA( TYPE( SwPagePreView ) ) )
+ {
+ sSwViewData = ((SwPagePreView*)pOldSh)->GetPrevSwViewData();
+ sNewCrsrPos = ((SwPagePreView*)pOldSh)->GetNewCrsrPos();
+ }
+
+ if(PTR_CAST( SwView, pOldSh))
+ {
+ pWrtShell = new SwWrtShell(((SwView*)pOldSh)->pWrtShell, pEditWin, *this);
+//MA: Das kann doch nur zu einem GPF fuehren!
+// nSelectionType = ((SwView*)pOldSh)->nSelectionType;
+ }
+ else
+ {
+ SwDoc *pDoc = ((SwDocShell*)pDocSh)->GetDoc();
+
+ if( PTR_CAST(SwSrcView, pOldSh) || pWebDShell )
+ pDoc->SetBrowseMode( sal_True );
+
+ //Fuer den BrowseMode wollen wir keinen Factor uebernehmen.
+ if( pDoc->IsBrowseMode() && aUsrPref.GetZoomType() != SVX_ZOOM_PERCENT )
+ {
+ aUsrPref.SetZoomType( SVX_ZOOM_PERCENT );
+ aUsrPref.SetZoom( 100 );
+ }
+ pWrtShell = new SwWrtShell( pDoc, ::GetSpellChecker(), ::GetHyphenator(),
+ pEditWin, *this,
+ 0, &aUsrPref);
+ }
+
+ // JP 05.02.99: Bug 61495 - damit unter anderem das HLineal im
+ // ReadonlyFall nicht angezeigt wird
+ aUsrPref.SetReadonly( pWrtShell->GetViewOptions()->IsReadonly() );
+
+ //Kein Margin fuer OLE!
+ Size aBrwsBorder;
+ if( SFX_CREATE_MODE_EMBEDDED != pDocSh->GetCreateMode() )
+ aBrwsBorder = GetMargin();
+
+ if( pFrame->GetFrameType() & SFXFRAME_INTERNAL )
+ pWrtShell->SetFrameView( aBrwsBorder );
+ else
+ pWrtShell->SetBrowseBorder( aBrwsBorder );
+
+ // Im CTOR duerfen keine Shell wechsel erfolgen, die muessen ueber
+ // den Timer "zwischen gespeichert" werden. Sonst raeumt der SFX
+ // sie wieder vom Stack!
+ sal_Bool bOld = bNoInterrupt;
+ bNoInterrupt = sal_True;
+
+ pHLineal->SetActive( sal_True );
+
+ SfxViewFrame* pViewFrame = GetViewFrame();
+ if( pViewFrame->GetFrame()->GetParentFrame())
+ {
+ aUsrPref.SetViewTabwin(sal_False);
+ aUsrPref.SetViewVLin(sal_False);
+ }
+
+ StartListening( *pViewFrame );
+ StartListening( *pDocSh );
+
+ // Vom HLineal den ZOOM-Faktor einstellen
+ pHLineal->SetZoom( Fraction( aUsrPref.GetZoom(), 100 ) );
+ pHLineal->SetDoubleClickHdl(LINK( this, SwView, ExecRulerClick ));
+ FieldUnit eMetric = ::GetDfltMetric( 0 != pWebDShell );
+ if( FUNIT_MM == eMetric )
+ eMetric = FUNIT_CM;
+ pHLineal->SetUnit( eMetric );
+
+ // DocShell setzen
+ pDocSh->SetView( this );
+ SW_MOD()->SetView( this );
+
+ // Die DocSize erfragen und verarbeiten. Ueber die Handler konnte
+ // die Shell nicht gefunden werden, weil die Shell innerhalb CTOR-Phase
+ // nicht in der SFX-Verwaltung bekannt ist.
+ DocSzChgd( pWrtShell->GetDocSize() );
+
+ // AttrChangedNotify Link setzen
+ pWrtShell->SetChgLnk(LINK(this, SwView, AttrChangedNotify));
+
+ if( pDocSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED &&
+ !((SvEmbeddedObject *)pDocSh)->GetVisArea().IsEmpty() )
+ SetVisArea( ((SvEmbeddedObject *)pDocSh)->GetVisArea(),sal_False);
+
+ SwEditShell::SetUndoActionCount( SFX_APP()->GetOptions().GetUndoCount() );
+ pWrtShell->DoUndo( 0 != SwEditShell::GetUndoActionCount() );
+
+ const FASTBOOL bBrowse = pWrtShell->GetDoc()->IsBrowseMode();
+ SetNewWindowAllowed(!bBrowse);
+
+ if( aUsrPref.IsViewVScrollBar() )
+ CreateVScrollbar();
+ if( aUsrPref.IsViewHScrollBar() || bBrowse )
+ CreateHScrollbar();
+ if( aUsrPref.IsViewTabwin() )
+ CreateTab();
+ if( aUsrPref.IsViewVLin() )
+ CreateVLineal();
+
+ pWrtShell->SetUIOptions( aUsrPref );
+ pWrtShell->SetReadOnlyAvailable( aUsrPref.IsCursorInProtectedArea() );
+
+ if( UseObjectSize() )
+ {
+ //Damit der Sfx _rechtzeitig weiss_, wie gross die ::com::sun::star::sheet::Border sind.
+ SvBorder aTmp;
+ CalcAndSetBorderPixel( aTmp, sal_True );
+ }
+
+ if( pWrtShell->GetDoc()->IsUpdateExpFld() )
+ {
+ SET_CURR_SHELL( pWrtShell );
+ pWrtShell->StartAction();
+ pWrtShell->CalcLayout();
+ pWrtShell->GetDoc()->UpdateFlds();
+ pWrtShell->EndAction();
+ pWrtShell->GetDoc()->SetUpdateExpFldStat( sal_False );
+ }
+
+ // ggfs. alle Verzeichnisse updaten:
+ if( pWrtShell->GetDoc()->IsUpdateTOX() )
+ {
+ SfxRequest aSfxRequest( FN_UPDATE_TOX, SFX_CALLMODE_SLOT, GetPool() );
+ Execute( aSfxRequest );
+ pWrtShell->GetDoc()->SetUpdateTOX( sal_False ); // wieder zurueck setzen
+ pWrtShell->SwCrsrShell::SttDoc();
+ }
+
+ // kein ResetModified, wenn es schone eine View auf dieses Doc gibt
+ SfxViewFrame* pVFrame = GetViewFrame();
+ SfxViewFrame* pFirst = SfxViewFrame::GetFirst(pDocSh);
+ // zur Zeit(360) wird die View erst nach dem Ctor eingetragen
+ // der folgende Ausdruck funktioniert auch, wenn sich das aendert
+ //JP 27.07.98: wenn per Undo nicht mehr die Modifizierung aufhebar ist,
+ // so setze das Modified NICHT zurueck.
+ if( !pWrtShell->GetDoc()->IsUndoNoResetModified() &&
+ (!pFirst || pFirst == pVFrame ) )
+ pWrtShell->ResetModified();
+
+ bNoInterrupt = bOld;
+
+ // wird ein GlobalDoc neu angelegt, soll auch der Navigator erzeugt werden
+ if( pDocSh->IsA(SwGlobalDocShell::StaticType()) &&
+ !pVFrame->GetChildWindow( SID_NAVIGATOR ))
+ {
+ SfxBoolItem aNavi(SID_NAVIGATOR, sal_True);
+ GetDispatcher().Execute(SID_NAVIGATOR, SFX_CALLMODE_ASYNCHRON, &aNavi, 0L);
+ }
+
+
+ uno::Reference< awt::XWindow > aTmpRef;
+ pFrame->GetFrame()->GetFrameInterface()->setComponent( aTmpRef,
+ pViewImpl->GetUNOObject_Impl());
+
+ aTimer.Stop();
+ aTimer.SetTimeoutHdl(LINK(this, SwView, TimeoutHdl));
+ bAttrChgNotified = bAttrChgNotifiedWithRegistrations = sal_False;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwView::~SwView()
+{
+ pEditWin->Hide(); // damit kein Paint Aerger machen kann!
+ // An der SwDocShell den Pointer auf die View ruecksetzen
+ SwDocShell* pDocSh = GetDocShell();
+ if( pDocSh && pDocSh->GetView() == this )
+ pDocSh->SetView( 0 );
+ if ( SW_MOD()->GetView() == this )
+ SW_MOD()->SetView( 0 );
+
+ if( aTimer.IsActive() && bAttrChgNotifiedWithRegistrations )
+ GetViewFrame()->GetBindings().LEAVEREGISTRATIONS();
+
+ SetWindow( 0 );
+
+ EndListening(*GetViewFrame());
+ EndListening(*GetDocShell());
+ delete pScrollFill;
+ delete pWrtShell;
+ pWrtShell = 0; // Auf 0 setzen, damit folgende DToren nicht drauf zugreifen
+ pShell = 0;
+ delete pHScrollbar;
+ delete pVScrollbar;
+ delete pHLineal;
+ delete pVLineal;
+ delete pTogglePageBtn;
+ delete pPageUpBtn;
+ delete pNaviBtn;
+ delete pPageDownBtn;
+ delete pGlosHdl;
+ delete pViewImpl;
+ delete pEditWin;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: DocShell rausgrabbeln ueber das FrameWindow
+ --------------------------------------------------------------------*/
+
+
+SwDocShell* SwView::GetDocShell()
+{
+ return PTR_CAST(SwDocShell, GetViewFrame()->GetObjectShell());
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: CursorPos merken
+ --------------------------------------------------------------------*/
+
+
+void SwView::WriteUserData( String &rUserData, sal_Bool bBrowse )
+{
+ //Das Browse-Flag wird vom Sfx durchgereicht, wenn Dokumente gebrowsed
+ //werden (nicht zu verwechseln mit dem BrowseMode).
+ //Die dann gespeicherten Daten sind nicht persistent!!
+
+ const SwRect& rRect = pWrtShell->GetCharRect();
+ const Rectangle& rVis = GetVisArea();
+
+ rUserData = String::CreateFromInt32( rRect.Left() );
+ rUserData += ';';
+ rUserData += String::CreateFromInt32( rRect.Top() );
+ rUserData += ';';
+ rUserData += String::CreateFromInt32( pWrtShell->GetViewOptions()->GetZoom() );
+ rUserData += ';';
+ rUserData += String::CreateFromInt32( rVis.Left() );
+ rUserData += ';';
+ rUserData += String::CreateFromInt32( rVis.Top() );
+ rUserData += ';';
+ rUserData += String::CreateFromInt32( bBrowse ? LONG_MIN : rVis.Right());
+ rUserData += ';';
+ rUserData += String::CreateFromInt32( bBrowse ? LONG_MIN : rVis.Bottom());
+ rUserData += ';';
+ rUserData += String::CreateFromInt32(
+ (sal_uInt16)pWrtShell->GetViewOptions()->GetZoomType());//eZoom;
+ rUserData += ';';
+ rUserData += FRMTYPE_NONE == pWrtShell->GetSelFrmType() ? '0' : '1';
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: CursorPos setzen
+ --------------------------------------------------------------------*/
+
+
+void SwView::ReadUserData( const String &rUserData, sal_Bool bBrowse )
+{
+ if ( rUserData.GetTokenCount() > 1 &&
+ //Fuer Dokumente ohne Layout nur im OnlineLayout oder beim
+ //Forward/Backward
+ (!pWrtShell->IsNewLayout() || pWrtShell->IsBrowseMode() || bBrowse) )
+ {
+ SET_CURR_SHELL(pWrtShell);
+
+ sal_uInt16 nPos = 0;
+
+ // Nein, es ist *keine* gute Idee GetToken gleich im Point-Konstr.
+ // aufzurufen, denn welcher Parameter wird zuerst ausgewertet?
+ long nX = rUserData.GetToken( 0, ';', nPos ).ToInt32(),
+ nY = rUserData.GetToken( 0, ';', nPos ).ToInt32();
+ Point aCrsrPos( nX, nY );
+
+ sal_uInt16 nZoomFactor = rUserData.GetToken(0, ';', nPos ).ToInt32();
+
+ long nLeft = rUserData.GetToken(0, ';', nPos ).ToInt32(),
+ nTop = rUserData.GetToken(0, ';', nPos ).ToInt32(),
+ nRight = rUserData.GetToken(0, ';', nPos ).ToInt32(),
+ nBottom= rUserData.GetToken(0, ';', nPos ).ToInt32();
+
+ const long nAdd = pWrtShell->IsBrowseMode() ? DOCUMENTBORDER : DOCUMENTBORDER*2;
+ if ( nBottom <= (pWrtShell->GetDocSize().Height()+nAdd) )
+ {
+ pWrtShell->EnableSmooth( sal_False );
+
+ const Rectangle aVis( nLeft, nTop, nRight, nBottom );
+
+ sal_uInt16 nOff = 0;
+ SvxZoomType eZoom;
+ if( !pWrtShell->GetDoc()->IsBrowseMode() )
+ eZoom = (SvxZoomType) (sal_uInt16)rUserData.GetToken(nOff, ';', nPos ).ToInt32();
+ else
+ {
+ eZoom = SVX_ZOOM_PERCENT;
+ ++nOff;
+ }
+
+ sal_Bool bSelectObj = (0 != rUserData.GetToken( nOff, ';', nPos ).ToInt32())
+ && pWrtShell->IsObjSelectable( aCrsrPos );
+
+ pWrtShell->SwCrsrShell::SetCrsr( aCrsrPos, !bSelectObj );
+ if( bSelectObj )
+ {
+ pWrtShell->SelectObj( aCrsrPos );
+ pWrtShell->EnterSelFrmMode( &aCrsrPos );
+ }
+
+ SelectShell();
+
+ pWrtShell->StartAction();
+ const SwViewOption* pVOpt = pWrtShell->GetViewOptions();
+ if( pVOpt->GetZoom() != nZoomFactor || pVOpt->GetZoomType() != eZoom )
+ SetZoom( eZoom, nZoomFactor);
+ if ( bBrowse )
+ SetVisArea( aVis.TopLeft() );
+ else
+ SetVisArea( aVis );
+
+ pWrtShell->LockView( sal_True );
+ pWrtShell->EndAction();
+ pWrtShell->LockView( sal_False );
+ pWrtShell->EnableSmooth( sal_True );
+ }
+ }
+}
+
+void SwView::UIDeactivate( SvInPlaceObject* )
+{
+ GetEditWin().OleToGrf();
+}
+
+
+
+void SwView::ShowCursor( FASTBOOL bOn )
+{
+ if ( bOn )
+ pWrtShell->ShowCrsrs( sal_True );
+ else
+ pWrtShell->HideCrsrs();
+}
+
+
+
+ErrCode SwView::DoVerb( long nVerb )
+{
+ if ( !GetDocShell()->GetProtocol().IsInPlaceActive() )
+ {
+ SwWrtShell &rSh = GetWrtShell();
+ const int nSel = rSh.GetSelectionType();
+ if ( nSel & SwWrtShell::SEL_OLE )
+ rSh.LaunchOLEObj( nVerb );
+ else if ( nSel & SwWrtShell::SEL_GRF && nVerb == 0 )
+ GetDispatcher().Execute( SID_SIM_START );
+ }
+ return ERRCODE_NONE;
+}
+
+/*-----------------17.02.98 13:33-------------------
+ nur sal_True fuer eine Textselektion zurueck geben
+--------------------------------------------------*/
+sal_Bool SwView::HasSelection( sal_Bool bText ) const
+{
+ return bText ? GetWrtShell().SwCrsrShell::HasSelection()
+ : GetWrtShell().HasSelection();
+}
+
+/*-----------------09/16/97 09:50am-----------------
+
+--------------------------------------------------*/
+
+String SwView::GetSelectionText( sal_Bool bComplete )
+{
+ return GetSelectionTextParam( bComplete, sal_True );
+}
+
+/*-----------------09/16/97 09:50am-----------------
+
+--------------------------------------------------*/
+String SwView::GetSelectionTextParam( sal_Bool bComplete,
+ sal_Bool bEraseTrail,
+ sal_Bool bExtendedDelimiter )
+{
+ String sReturn;
+
+ if (bComplete && !GetWrtShell().HasSelection())
+ {
+ const char sDelimiter[] = " \t\n\r";
+ const char sExtDelimiter[] = " \t\n\r.,:;()<>{}";
+ WordSelection::SetWordDelimiter(bExtendedDelimiter ?
+ sExtDelimiter : sDelimiter);
+ GetWrtShell().SelWrd();
+ WordSelection::ResetWordDelimiter();
+ }
+
+ GetWrtShell().GetSelectedText(sReturn);
+ if(bEraseTrail)
+ sReturn.EraseTrailingChars();
+ return sReturn;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+SwGlossaryHdl* SwView::GetGlosHdl()
+{
+ if(!pGlosHdl)
+ pGlosHdl = new SwGlossaryHdl(GetViewFrame(), pWrtShell);
+ return pGlosHdl;
+}
+
+/*-----------------05.09.96 15.50-------------------
+
+--------------------------------------------------*/
+
+
+
+void SwView::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ FASTBOOL bCallBase = sal_True;
+ if ( rHint.ISA(SfxSimpleHint) )
+ {
+ sal_uInt32 nId = ((SfxSimpleHint&)rHint).GetId();
+ switch ( nId )
+ {
+ case SFX_HINT_MODECHANGED:
+ {
+ // Modalmodus-Umschaltung?
+ sal_Bool bModal = GetDocShell()->IsInModalMode();
+ if(pHLineal)
+ pHLineal->SetActive( !bModal );
+ if(pVLineal)
+ pVLineal->SetActive( !bModal );
+ }
+
+ /* kein break hier */
+
+ case SFX_HINT_TITLECHANGED:
+ if ( GetDocShell()->IsReadOnly() != GetWrtShell().GetViewOptions()->IsReadonly() )
+ {
+ SwWrtShell &rSh = GetWrtShell();
+ rSh.SetReadonlyOption( GetDocShell()->IsReadOnly() );
+
+ if ( rSh.GetViewOptions()->IsViewVLin() )
+ CreateVLineal();
+ else
+ KillVLineal();
+ if ( rSh.GetViewOptions()->IsViewTabwin() )
+ CreateTab();
+ else
+ KillTab();
+ SfxBoolItem aItem( SID_FM_DESIGN_MODE, !GetDocShell()->IsReadOnly());
+ GetDispatcher().Execute( SID_FM_DESIGN_MODE, SFX_CALLMODE_ASYNCHRON,
+ &aItem, 0L );
+ }
+ break;
+
+ case SW_BROADCAST_DRAWVIEWS_CREATED:
+ {
+ bCallBase = sal_False;
+ if ( GetFormShell() )
+ {
+ GetFormShell()->SetView(
+ PTR_CAST(FmFormView, GetWrtShell().GetDrawView()) );
+ SfxBoolItem aItem( SID_FM_DESIGN_MODE, !GetDocShell()->IsReadOnly());
+ GetDispatcher().Execute( SID_FM_DESIGN_MODE, SFX_CALLMODE_ASYNCHRON,
+ &aItem, 0L );
+ }
+ }
+ break;
+ }
+ }
+ else if(rHint.ISA(FmDesignModeChangedHint))
+ {
+ sal_Bool bDesignMode = ((FmDesignModeChangedHint&)rHint).GetDesignMode();
+ if (!bDesignMode && GetDrawFuncPtr())
+ {
+ GetDrawFuncPtr()->Deactivate();
+ SetDrawFuncPtr(NULL);
+ LeaveDrawCreate();
+ AttrChangedNotify(pWrtShell);
+ }
+ }
+
+ if ( bCallBase )
+ SfxViewShell::Notify(rBC, rHint);
+}
+
+/*-----------------02.12.96 12:36-------------------
+
+--------------------------------------------------*/
+#if defined WIN || defined WNT || defined UNX
+
+void SwView::ScannerEventHdl( const EventObject& rEventObject )
+{
+ Reference< XScannerManager > xScanMgr = SW_MOD()->GetScannerManager();
+ if( xScanMgr.is() )
+ {
+ const ScannerContext aContext( xScanMgr->getAvailableScanners().getConstArray()[ 0 ] );
+ const ScanError eError = xScanMgr->getError( aContext );
+
+ if( ScanError_ScanErrorNone == eError )
+ {
+ const uno::Reference< awt::XBitmap > xBitmap( xScanMgr->getBitmap( aContext ) );
+
+ if( xBitmap.is() )
+ {
+ const BitmapEx aScanBmp( VCLUnoHelper::GetBitmap( xBitmap ) );
+
+ if( !!aScanBmp )
+ {
+ Graphic aGrf(aScanBmp);
+ pWrtShell->Insert( aEmptyStr, aEmptyStr, aGrf );
+ }
+ }
+ }
+ }
+ SfxBindings& rBind = GetViewFrame()->GetBindings();
+ rBind.Invalidate( SID_TWAIN_SELECT );
+ rBind.Invalidate( SID_TWAIN_TRANSFER );
+//JP 26.06.00: the appwindow doen't exist
+// Application::GetAppWindow()->EnableInput( TRUE );
+}
+#endif
+
+/*-----------------04.03.97 15:07-------------------
+
+--------------------------------------------------*/
+
+
+void SwView::StopShellTimer()
+{
+ if(aTimer.IsActive())
+ {
+ aTimer.Stop();
+ if ( bAttrChgNotifiedWithRegistrations )
+ {
+ GetViewFrame()->GetBindings().LEAVEREGISTRATIONS();
+ bAttrChgNotifiedWithRegistrations = sal_False;
+ }
+ SelectShell();
+ bAttrChgNotified = sal_False;
+ }
+}
+
+/*-----------------15.12.97 10:15-------------------
+
+--------------------------------------------------*/
+void SwView::PrepareGetSelection()
+{
+ if(!pShell)
+ SelectShell();
+}
+
+/*-----------------09/03/97 04:12pm-----------------
+
+--------------------------------------------------*/
+sal_uInt16 SwView::PrepareClose( sal_Bool bUI, sal_Bool bForBrowsing )
+{
+ SfxViewFrame* pVFrame = GetViewFrame();
+ SfxApplication* pSfxApp = SFX_APP();
+ pVFrame->SetChildWindow( SwInputChild::GetChildWindowId(), sal_False );
+ if(pSfxApp->IsDispatcherLocked())
+ pSfxApp->LockDispatcher(sal_False);
+ pVFrame->SetChildWindow( SwInsertChartChild::GetChildWindowId(), sal_False );
+
+ sal_uInt16 nRet;
+ if ( pFormShell &&
+ sal_True != (nRet = pFormShell->PrepareClose( bUI, bForBrowsing )) )
+
+ {
+ return nRet;
+ }
+ return SfxViewShell::PrepareClose( bUI, bForBrowsing );
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.448 2000/09/18 16:06:12 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.447 2000/09/08 08:12:53 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.446 2000/09/07 15:59:32 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.445 2000/09/07 08:23:47 os
+ #77494# use dispatcher from the ViewFrame
+
+ Revision 1.444 2000/08/29 14:00:43 ama
+ New: Negative margins
+
+ Revision 1.443 2000/08/15 14:09:39 jp
+ Task #77422#: PrintPreView in the same window
+
+ Revision 1.442 2000/08/15 14:08:15 jp
+ Task #77422#: PrintPreView in the same window
+
+ Revision 1.441 2000/08/14 17:25:37 jp
+ Task #77422#: PrintPreView in the same window
+
+ Revision 1.440 2000/08/08 13:48:14 os
+ #77423# separate graphic shell
+
+ Revision 1.439 2000/07/24 10:10:28 jp
+ Bug #76909#: AttrChg-Timer can only be started after leaving the SwView CTOR
+
+ Revision 1.438 2000/06/26 10:44:09 jp
+ must change: GetAppWindow->GetDefaultDevice
+
+ Revision 1.437 2000/05/30 10:42:17 os
+ unused slots removed
+
+ Revision 1.436 2000/05/29 08:03:23 os
+ new scanner interface
+
+ Revision 1.435 2000/05/26 07:21:34 os
+ old SW Basic API Slots removed
+
+ Revision 1.434 2000/05/24 13:13:57 hr
+ conflict between STLPORT and Workshop header
+
+ Revision 1.433 2000/05/23 19:42:30 jp
+ Bugfixes for Unicode
+
+ Revision 1.432 2000/05/10 11:53:20 os
+ Basic API removed
+
+ Revision 1.431 2000/04/18 15:02:50 os
+ UNICODE
+
+ Revision 1.430 2000/03/23 07:50:25 os
+ UNO III
+
+ Revision 1.429 2000/03/03 15:17:04 os
+ StarView remainders removed
+
+ Revision 1.428 2000/02/11 14:59:19 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.427 1999/12/10 13:09:42 tl
+ #70383# SvxGetLinguPropertySet => ::GetLinguPropertySet
+
+ Revision 1.426 1999/11/30 10:04:42 jp
+ Bug #69906#: CTOR - update fields before any TOX
+
+ Revision 1.425 1999/11/24 18:35:58 tl
+ check for Service availability
+
+ Revision 1.424 1999/11/19 16:40:24 os
+ modules renamed
+
+ Revision 1.423 1999/11/17 14:28:15 jp
+ HasSelection: if text-flag set, then returns only true when the textcursor has an selection
+
+ Revision 1.422 1999/10/25 19:43:19 tl
+ ongoing ONE_LINGU implementation
+
+ Revision 1.421 1999/10/20 10:56:16 jp
+ Bug #67821#: CTOR - SynChildWindow handeld by HasUIFeature
+
+ Revision 1.420 1999/10/06 12:21:13 os
+ #68902# correct detection of FrameSet
+
+ Revision 1.419 1999/09/10 13:19:10 os
+ Chg: resource types removed
+
+ Revision 1.418 1999/09/10 09:36:31 jp
+ Bug #68559#: AttrChangeNotify - if have to start the timer, then check in TimeoutHdl the readony state
+
+ Revision 1.417 1999/08/31 08:40:20 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+
+ Rev 1.416 31 Aug 1999 10:40:20 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+ Rev 1.415 04 Aug 1999 10:19:38 JP
+ have to change: FmFormShell becomes the SfxViewShell
+
+ Rev 1.414 15 Jul 1999 13:04:42 MA
+ #67402# no invalidation while the dispatcher IsInUpdate()
+
+ Rev 1.413 08 Jul 1999 17:36:44 JP
+ Bug #67527#: AttrChangedNotify - if interrupt flag is set, then dont check readonly selection
+
+ Rev 1.412 07 Jul 1999 15:09:28 MA
+ use bindings from own view frame
+
+ Rev 1.411 07 Jul 1999 12:30:58 MA
+ #67331# restart Timer if dispatcher is locked
+
+ Rev 1.410 07 Jul 1999 08:52:42 OS
+ #67471# NotifySelChanged in AttrChangedNotify
+
+ Rev 1.409 22 Jun 1999 17:37:32 JP
+ Bug #43028#: disableflag for edit in mailbody
+
+ Rev 1.408 21 Jun 1999 15:24:58 JP
+ Interface changes: Twain
+
+ Rev 1.407 10 Jun 1999 12:06:26 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.406 05 May 1999 11:23:24 OS
+ #63790# Tabellen-Update nur bei Bedarf rufen
+
+ Rev 1.405 21 Apr 1999 09:32:26 MA
+ #63638# API-Change prepareclose
+
+ Rev 1.404 22 Mar 1999 09:10:14 OS
+ #63704# PrepareClose: Auf FormShell achten
+
+ Rev 1.403 16 Mar 1999 08:58:26 MA
+ #59840# ReadUserData, NewLayout nicht fuer forward/backward auswerten
+
+ Rev 1.402 08 Mar 1999 13:38:36 MA
+ #62792# OLE-Printer-Benachrichtigung vervollstaendigt
+
+ Rev 1.401 05 Feb 1999 17:33:00 JP
+ Bug #61491#: AttrChgNotify: pruefen, ob ueberhaupt eine DrawView existiert
+
+ Rev 1.400 05 Feb 1999 13:33:34 JP
+ Bug #61495#: CTOR: an den UserPref das ReadonlyFlag setzen
+ Bug #61491#: AttrChgNotify: kein Readonly bei Rahmen-/Object-Selektion
+
+ Rev 1.399 02 Feb 1999 13:18:56 JP
+ Bug #61335#: Schnistelle zu SwView geaendert/aufgeraeumt
+
+ Rev 1.398 27 Jan 1999 09:58:26 OS
+ #56371# TF_ONE51
+
+ Rev 1.397 26 Jan 1999 15:33:42 OS
+ #58677# Cursor in Readonly-Bereichen
+
+ Rev 1.396 22 Jan 1999 16:55:40 JP
+ Bug Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.395 19 Jan 1999 22:56:56 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.394 17 Dec 1998 19:18:28 JP
+ Task #59490# ExtTextInput fuer japan./chine. Version
+
+ Rev 1.393 02 Dec 1998 14:13:06 MA
+ #59988# ReadUserData, OnlineLayout auch ohne Layout
+
+ Rev 1.392 09 Nov 1998 14:06:54 JP
+ #58860# warum alles immer nur halb
+
+ Rev 1.391 03 Nov 1998 19:53:00 MA
+ #58860# nicht immer enterregistrations rufen
+
+ Rev 1.390 02 Nov 1998 15:49:32 JP
+ Task #57724#: ggfs. PrepareClose an der FormShell rufen.
+
+ Rev 1.389 21 Oct 1998 10:56:14 OM
+ #57586# Redlining nach Autoformat
+
+ Rev 1.388 20 Oct 1998 11:40:24 OM
+ #57586# Redlining nach Autoformat
+
+ Rev 1.387 01 Oct 1998 17:48:56 MA
+ #57380# Kein Layout, keine Userdaten
+
+ Rev 1.386 01 Oct 1998 15:59:50 OM
+ #52654# SelectionChangeListener
+
+ Rev 1.385 08 Sep 1998 17:05:10 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.384 04 Sep 1998 17:06:38 MA
+ #55396# Auch bei browse ignorieren weil bei jedem Laden gesetzt
+
+ Rev 1.383 03 Sep 1998 11:44:44 MA
+ #55396# scheinbar unsinnige VisArea im ReadUserData ignorieren
+
+ Rev 1.382 31 Aug 1998 17:48:34 OM
+ #55613# Selektion drucken
+
+ Rev 1.381 31 Aug 1998 11:19:40 OS
+ #55750# OnlineSpelling immer aus der OFA uebernehmen
+
+ Rev 1.380 20 Aug 1998 17:25:16 MH
+ chg: twain.hxx
+
+ Rev 1.379 27 Jul 1998 16:55:42 JP
+ Bug #45529#: LoadStyles muss ggfs. das Zuruecksetzen des ModifiedFlags verhindern
+
+ Rev 1.378 20 Jul 1998 10:45:14 MA
+ #53013# Nach Anweisung abgeklemmt
+
+ Rev 1.377 17 Jul 1998 16:19:30 OM
+ #51862# Im AktivenMode keine ::com::sun::star::form::Forms einfuegen
+
+ Rev 1.376 14 Jul 1998 10:43:36 OM
+ #52748# Twain-Menueeintrag
+
+ Rev 1.375 06 Jul 1998 13:32:10 MH
+ chg: setComponent
+
+ Rev 1.374 30 Jun 1998 13:00:08 MA
+ das war wohl grad etwas zu gruendlich
+
+ Rev 1.372 09 Jun 1998 15:32:22 OM
+ VC-Controls entfernt
+
+ Rev 1.371 02 Jun 1998 15:49:32 OS
+ setController() am FrameInterface rufen
+
+ Rev 1.370 02 Apr 1998 17:30:58 OM
+ FrameProtect: Abfrage umgestellt
+
+ Rev 1.369 02 Apr 1998 10:07:00 MA
+ new: ToolbarCfg
+
+ Rev 1.368 20 Mar 1998 13:23:56 MA
+ OleVis2Page durch BrowseMode ersetzt
+
+ Rev 1.367 18 Mar 1998 12:28:50 MA
+ #Wichtig fuer ::com::sun::star::form::Forms# FormShell nach dem Push initialisieren
+
+ Rev 1.366 16 Mar 1998 12:03:18 MA
+ Verbindung FormShell->DrawView immer herstellen
+
+ Rev 1.365 15 Mar 1998 15:14:06 OM
+ Synchron-Button
+
+ Rev 1.364 13 Mar 1998 15:20:54 OS
+ Lineale nach dem Umschalten in den Readonly-Mode #48190#
+
+ Rev 1.363 12 Mar 1998 12:59:04 OS
+ SID_NEWWINDOW nicht mehr ueberladen
+
+ Rev 1.362 11 Mar 1998 17:01:52 OM
+ DB-FormShell
+
+ Rev 1.361 10 Mar 1998 14:17:46 OM
+ Konstruktionsmodul fuer ::com::sun::star::form::Forms
+
+ Rev 1.360 26 Feb 1998 09:53:56 OS
+ HasSelection : const
+
+ Rev 1.359 19 Feb 1998 17:21:48 OS
+ HasSelection
+
+ Rev 1.358 11 Feb 1998 10:33:46 MA
+ #47035# und CopyCtor entfernt
+
+ Rev 1.357 22 Jan 1998 17:48:54 OS
+ SID_BACKGROUND_PATTERN entsorgt
+
+ Rev 1.356 07 Jan 1998 13:36:24 OS
+ Lineale nach MODECHANGED-Hint aktivieren/deaktivieren #46023#, EditWin im Dtor zuerst hiden#46436#
+
+ Rev 1.355 06 Jan 1998 17:56:38 OS
+ _Impl immer anlegen #46360#
+
+ Rev 1.354 06 Jan 1998 07:28:38 OS
+ getrennter Status fuer Insert-Controller #46322#
+
+ Rev 1.353 16 Dec 1997 12:00:24 OS
+ Impl-Pointer fuer UNO
+
+ Rev 1.352 29 Nov 1997 16:49:54 MA
+ includes
+
+ Rev 1.351 28 Nov 1997 11:27:12 TJ
+ include
+
+ Rev 1.350 21 Nov 1997 15:00:12 MA
+ includes
+
+ Rev 1.349 05 Nov 1997 11:52:10 MA
+ chain
+
+ Rev 1.348 31 Oct 1997 11:36:10 OS
+ GetSelectionTextParam auch mit erweiterten Delimitern #45212#
+
+ Rev 1.347 22 Sep 1997 13:11:10 MA
+ #44052# bInOuterResizePixel ist jetzt Member
+
+ Rev 1.346 18 Sep 1997 14:01:12 OS
+ Pointer::GetPosPixel fuer VCL ersetzt
+
+ Rev 1.345 16 Sep 1997 10:25:04 OS
+ neu: GetSelectionTextParam #43766#
+
+ Rev 1.344 09 Sep 1997 13:34:04 OS
+ include
+
+ Rev 1.343 09 Sep 1997 11:35:32 OS
+ header
+
+ Rev 1.342 04 Sep 1997 17:14:38 MA
+ includes
+
+ Rev 1.341 03 Sep 1997 16:28:20 OS
+ im PrepareClose die Rechenleiste und den ChartDialog schliessen
+
+ Rev 1.340 02 Sep 1997 15:04:02 JP
+ AttChgdNotify: SID_SaveDoc bei ReadOnlyUI freigeschaltet
+
+ Rev 1.339 02 Sep 1997 11:18:28 JP
+ temp. Erweiterung fuers Speichern bei ReadOnlyUI
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/uiview/view.hrc b/sw/source/ui/uiview/view.hrc
new file mode 100644
index 000000000000..d15d3878bf6f
--- /dev/null
+++ b/sw/source/ui/uiview/view.hrc
@@ -0,0 +1,125 @@
+/*************************************************************************
+ *
+ * $RCSfile: view.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _VIEW_HRC
+#define _VIEW_HRC
+
+#include "rcid.hrc"
+
+// BTN -------------------------------------------------------------------
+
+#define BTN_PAGEDOWN (RC_VIEW_BEGIN)
+#define BTN_PAGEUP (RC_VIEW_BEGIN + 1)
+
+// STR -------------------------------------------------------------------
+
+#define STR_NOGLOS1 (RC_VIEW_BEGIN + 1)
+#define STR_NOGLOS2 (RC_VIEW_BEGIN + 2)
+#define STR_NUM_LEVEL (RC_VIEW_BEGIN + 3)
+
+#define STR_ERROR_NOLANG (RC_VIEW_BEGIN + 6)
+#define STR_VERB_FOR_GRF (RC_VIEW_BEGIN + 7)
+
+#define STR_EDIT_FOOTNOTE (RC_VIEW_BEGIN + 14)
+
+//#define RID_PVIEW_TOOLBOX (RC_VIEW_BEGIN + 15)
+#define MSG_NOT_FOUND (RC_VIEW_BEGIN + 16)
+#define MSG_SEARCH_START (RC_VIEW_BEGIN + 17)
+#define MSG_SEARCH_END (RC_VIEW_BEGIN + 18)
+#define MSG_INDEX_OVERFLOW (RC_VIEW_BEGIN + 19)
+#define STR_NB_REPLACED (RC_VIEW_BEGIN + 20)
+#define MSG_SCAN_NOSOURCE (RC_VIEW_BEGIN + 21)
+
+#define STR_SRCVIEW_ROW (RC_VIEW_BEGIN + 22)
+#define STR_SRCVIEW_COL (RC_VIEW_BEGIN + 23)
+#define STR_SAVEAS_SRC (RC_VIEW_BEGIN + 24)
+
+#define MSG_NO_MERGE_ENTRY (RC_VIEW_BEGIN + 25)
+
+#define STR_PRINT_TITLE (RC_VIEW_BEGIN + 26)
+#define STR_PRINT_MSG (RC_VIEW_BEGIN + 27)
+#define STR_PRINT_ALL (RC_VIEW_BEGIN + 28)
+#define STR_PRINT_SELECTION (RC_VIEW_BEGIN + 29)
+#define STR_READONLY_SEL (RC_VIEW_BEGIN + 30)
+
+#define RID_PVIEW_TOOLBOX (RC_VIEW_BEGIN + 31)
+// MSG -------------------------------------------------------------------
+
+#define MSG_ERR_INSERT_GLOS (RC_VIEW_BEGIN)
+
+#define MSG_ERR_NO_FAX (RC_VIEW_BEGIN + 5)
+#define MSG_ERR_SRCSTREAM (RC_VIEW_BEGIN + 6)
+
+// DLG -------------------------------------------------------------------
+
+#define DLG_SPECIAL_FORCED (RC_VIEW_BEGIN)
+#define DLG_PAGEPREVIEW_ZOOM (RC_VIEW_BEGIN + 1)
+#define DLG_PAGEPREVIEW_PRINTOPTIONS (RC_VIEW_BEGIN + 2)
+
+// Ueberlaufpruefung -----------------------------------------------------
+
+#define VIEW_ACT_END STR_EDIT_FOOTNOTE
+
+#if VIEW_ACT_END > RC_VIEW_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+#endif
+
diff --git a/sw/source/ui/uiview/view.src b/sw/source/ui/uiview/view.src
new file mode 100644
index 000000000000..f06e50f1a585
--- /dev/null
+++ b/sw/source/ui/uiview/view.src
@@ -0,0 +1,1166 @@
+/*************************************************************************
+ *
+ * $RCSfile: view.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include <svx/svxids.hrc>
+#include <svx/globlmn.hrc>
+#include "view.hrc"
+#include "shells.hrc"
+#include "globals.hrc"
+#include "popup.hrc"
+#include "helpid.h"
+#include "cmdid.h"
+ImageButton BTN_PAGEUP
+{
+ SVLOOK = TRUE ;
+ HIDE = TRUE ;
+ RectStyle = TRUE ;
+ SmallStyle = TRUE ;
+ SYMBOL = IMAGEBUTTON_PAGEUP ;
+};
+ImageButton BTN_PAGEDOWN
+{
+ SVLOOK = TRUE ;
+ HIDE = TRUE ;
+ RectStyle = TRUE ;
+ SmallStyle = TRUE ;
+ SYMBOL = IMAGEBUTTON_PAGEDOWN ;
+};
+QueryBox DLG_WRAP
+{
+ BUTTONS = WB_YES_NO ;
+ DEFBUTTON = WB_DEF_YES ;
+ MESSAGE = "Überprüfung am Anfang des Dokumentes fortsetzen?" ;
+ MESSAGE [ English ] = "Do you want to continue checking at the start of the document?" ;
+ MESSAGE [ norwegian ] = "Do you want to continue checking at the start of the document?" ;
+ MESSAGE [ italian ] = "Continuare a controllare dall'inizio del documento?" ;
+ MESSAGE [ portuguese_brazilian ] = "Deseja continuar a verificação no início do documento?" ;
+ MESSAGE [ portuguese ] = "Deseja continuar com a verificação no início do documento?" ;
+ MESSAGE [ finnish ] = "Jatketaanko tarkistamista asiakirjan alusta?" ;
+ MESSAGE [ danish ] = "Vil du fortsætte kontrollen fra dokumentets start?" ;
+ MESSAGE [ french ] = "Voulez-vous continuer la vérification depuis le début du document?" ;
+ MESSAGE [ swedish ] = "Vill Du fortsätta kontrollen i början på dokumentetet?" ;
+ MESSAGE [ dutch ] = "Wilt u dat de spellingcontrole wordt voortgezet bij het begin van het document?" ;
+ MESSAGE [ spanish ] = "¿Desea continuar la revisión desde el comienzo del documento?" ;
+ MESSAGE [ english_us ] = "Do you want to continue checking at the beginning of the document?" ;
+ MESSAGE[ chinese_simplified ] = "´ÓÎļþ¿ª¶Ë¼ÌÐø¼ì²é£¿";
+ MESSAGE[ russian ] = "Ïðîäîëæèòü ïðîâåðêó äîêóìåíòà ñ íà÷àëà?";
+ MESSAGE[ polish ] = "Kontynuowaæ sprawdzanie na pocz¹tku dokumentu?";
+ MESSAGE[ japanese ] = "•¶‘‚ÌŽn‚ß‚ÌÁª¯¸‚𑱂¯‚Ü‚·‚©H";
+ MESSAGE[ chinese_traditional ] = "±qÀɮ׶}ºÝÄ~Äò·j´M¡S";
+ MESSAGE[ arabic ] = "ýýåá ÊÑíÏ ãÊÇÈÚÉ ÇáÊÏÞíÞ ÚäÏ ÈÏÇíÉ ÇáãÓÊäÏ¿";
+ MESSAGE[ greek ] = "ÈÝëåôå íá óõíå÷éóôåß ï Ýëåã÷ïò áðü ôçí áñ÷Þ ôïõ åããñÜöïõ;";
+ MESSAGE[ korean ] = "¹®¼­ÀÇ ½ÃÀۺκп¡¼­ °Ë»ç¸¦ °è¼ÓÇϽðڽÀ´Ï±î?";
+ MESSAGE[ turkish ] = "Belgenin baþýndan denetime devam etmek istiyor musunuz?";
+ MESSAGE[ language_user1 ] = " ";
+};
+QueryBox DLG_BODY
+{
+ BUTTONS = WB_YES_NO ;
+ DEFBUTTON = WB_DEF_NO ;
+ MESSAGE = "Wollen Sie den Haupttext prüfen?" ;
+ MESSAGE [ English ] = "Do you want to check the Bodytext?" ;
+ MESSAGE [ norwegian ] = "Do you want to check the Bodytext?" ;
+ MESSAGE [ italian ] = "Controllare il testo principale?" ;
+ MESSAGE [ portuguese_brazilian ] = "Deseja verificar o corpo do documento?" ;
+ MESSAGE [ portuguese ] = "Deseja verificar o texto principal?" ;
+ MESSAGE [ finnish ] = "Haluatko tarkistaa runkotekstin?" ;
+ MESSAGE [ danish ] = "Vil du kontrollere brødteksten?" ;
+ MESSAGE [ french ] = "Voulez-vous vérifier le texte principal?" ;
+ MESSAGE [ swedish ] = "Vill Du kontrollera huvudtexten?" ;
+ MESSAGE [ dutch ] = "Wilt u de hoofdtekst controleren?" ;
+ MESSAGE [ spanish ] = "¿Desea verificar el texto principal?" ;
+ MESSAGE [ english_us ] = "Do you want to check the main text?" ;
+ MESSAGE[ chinese_simplified ] = "ÄúÒª¼ì²éÕýÎÄÂð£¿";
+ MESSAGE[ russian ] = "Âû õîòèòå ïðîâåðèòü ãëàâíûé òåêñò?";
+ MESSAGE[ polish ] = "Czy chcesz sprawdzaæ tekst g³ówny?";
+ MESSAGE[ japanese ] = "Ò²Ý Ã·½Ä‚ðÁª¯¸‚µ‚Ü‚·‚©?";
+ MESSAGE[ chinese_traditional ] = "±z­nÀˬd¤º¤å¡S";
+ MESSAGE[ arabic ] = "åá ÊÑíÏ ÇáÊÏÞíÞ Ýí ÇáäÕ ÇáÑÆíÓí¿";
+ MESSAGE[ greek ] = "ÈÝëåôå íá ãßíåé Ýëåã÷ïò ôïõ êýñéïõ êåéìÝíïõ;";
+ MESSAGE[ korean ] = "ÁÖ ÅؽºÆ®¸¦ °Ë»çÇϽðڽÀ´Ï±î?";
+ MESSAGE[ turkish ] = "Ana metni denetlemek istiyor musunuz?";
+ MESSAGE[ language_user1 ] = " ";
+};
+QueryBox DLG_PRT_FIELDNAME
+{
+ BUTTONS = WB_YES_NO_CANCEL ;
+ DEFBUTTON = WB_DEF_CANCEL ;
+ MESSAGE = "Option Feldname anzeigen ist aktiviert.\nWollen Sie das Dokument mit Feldnamen drucken?" ;
+ MESSAGE [ English ] = "Option Show fieldname is checked.\nDo you want to print the document with fieldnames?" ;
+ MESSAGE [ norwegian ] = "Option Show fieldname is checked.\nDo you want to print the document with fieldnames?" ;
+ MESSAGE [ italian ] = "L'opzione Mostra nome campo è attivata.\nDesiderate stampare il documento con i nomi dei campi?" ;
+ MESSAGE [ portuguese_brazilian ] = "Option Show fieldname is checked.\nDo you want to print the document with fieldnames?" ;
+ MESSAGE [ portuguese ] = "A opção 'Mostrar nome do campo' está activada.\nImprimir o documento com os nomes do campo?" ;
+ MESSAGE [ french ] = "L'option Afficher le nom de champ est activée.\nVoulez-vous imprimer le document avec le nom de champ ?" ;
+ MESSAGE [ dutch ] = "Optie Veldnaam weergeven is actief.\nWilt u het document met de veldnaam afdrukken?" ;
+ MESSAGE [ spanish ] = "La opción nombre de campo está activada. \n¿Desea imprimir el archivo con nombres de campo?" ;
+ MESSAGE [ danish ] = "Vis feltnavn er aktiveret\nVil du udskrive dokumentet med feltnavn?" ;
+ MESSAGE [ swedish ] = "Alternativet Visa fältnamn är aktiverat.\nVill Du skriva ut dokumentet med fältnamnet?" ;
+ MESSAGE [ finnish ] = "Option Show fieldname is checked.\nDo you want to print the document with fieldnames?" ;
+ MESSAGE [ english_us ] = "Show field commands option is checked.\nDo you want to print the document with field names?" ;
+ MESSAGE[ chinese_simplified ] = "×Ö¶ÎÃû³ÆÑ¡Ï´¦ÓÚ¼¤»î״̬¡£\nÄúÒªÁ¬Í¬×Ö¶ÎÃû³ÆÒ»Æð´òÓ¡Õâ¸öÎļþÂð£¿";
+ MESSAGE[ russian ] = "Ïàðàìåòð 'Ïîêàçàòü èìÿ ïîëÿ' îòìå÷åí.\nÂû õîòèòå íàïå÷àòàòü äîêóìåíò ñ èìåíàìè ïîëÿ?";
+ MESSAGE[ polish ] = "Opcja Poka¿ nazwê pola jest uaktywiona.\nCzy chcesz wydrukowaæ ten dokument z nazw¹ pola?";
+ MESSAGE[ japanese ] = "̨°ÙÄÞ–¼‚̵Ìß¼®Ý‚ª•\\Ž¦‚³‚ê‚Ä‚¢‚Ü‚·B\n̨°ÙÄÞ–¼•t‚«‚Ì•¶‘‚ðˆóü‚µ‚Ü‚·‚©H";
+ MESSAGE[ chinese_traditional ] = "Äæ¦ì¦WºÙ¿ï¶µÁÙ³B©ó¿E¬¡ª¬ºA¡C\n±z­n³s¦PÄæ¦ì¦WºÙ¤@°_¦C¦L³o­ÓÀɮסS";
+ MESSAGE[ arabic ] = "ÇáÎíÇÑ \"ÅÙåÇÑ ÇÓã ÇáÍÞá\" äÔØ.\nåá ÊÑíÏ ØÈÇÚÉ ÇáãÓÊäÏ ÈÃÓãÇÁ ÇáÍÞæá¿";
+ MESSAGE[ greek ] = "Ç åðéëïãÞ üíïìá ðåäßïõ åßíáé åíåñãïðïéçìÝíç.\nÈÝëåôå íá åêôõðùèåß ôï Ýããñáöï ìáæß ìå ôá ïíüìáôá ôùí ðåäßùí;";
+ MESSAGE[ korean ] = "ÇÊµå º¸±â ¸í·É ¿É¼ÇÀÌ Ã¼Å©µÇ¾î ÀÖ½À´Ï´Ù.\nÇʵå À̸§°ú ÇÔ²² ¹®¼­¸¦ ÀμâÇϽðڽÀ´Ï±î?";
+ MESSAGE[ turkish ] = "\"Alan adýný görüntüle\" seçeneði etkin.\nBelgeyi alan adlarýyla yazdýrmak istiyor musunuz?";
+ MESSAGE[ language_user1 ] = " ";
+};
+QueryBox DLG_SPECIAL
+{
+ BUTTONS = WB_YES_NO ;
+ DEFBUTTON = WB_DEF_NO ;
+ MESSAGE = "Sonderbereiche prüfen?" ;
+ MESSAGE [ English ] = "Do you want check the special regions?" ;
+ MESSAGE [ norwegian ] = "Do you want check the special regions?" ;
+ MESSAGE [ italian ] = "Controllare le aree speciali?" ;
+ MESSAGE [ portuguese_brazilian ] = "Deseja verificar Regiões especiais?" ;
+ MESSAGE [ portuguese ] = "Deseja verificar as regiões especiais?" ;
+ MESSAGE [ finnish ] = "Haluatko tarkistaa erikoisalueet?" ;
+ MESSAGE [ danish ] = "Vil du kontrollere særområderne?" ;
+ MESSAGE [ french ] = "Voulez-vous vérifier les zones spéciales?" ;
+ MESSAGE [ swedish ] = "Vill Du kontrollera specialområdena?" ;
+ MESSAGE [ dutch ] = "Wilt u de speciale bereiken controleren?" ;
+ MESSAGE [ spanish ] = "¿Desea verificar las áreas especiales?" ;
+ MESSAGE [ english_us ] = "Do you want check the special regions?" ;
+ MESSAGE[ chinese_simplified ] = "ÄúÒª¼ì²éÌØÊâÇøÓòÂð£¿";
+ MESSAGE[ russian ] = "Ïðîâåðèòü ñïåöèàëüíûå îáëàñòè?";
+ MESSAGE[ polish ] = "Sprawdzaæ obszary specjalne?";
+ MESSAGE[ japanese ] = "“Á•Ê’nˆæ‚ðÁª¯¸‚µ‚Ü‚·‚©?";
+ MESSAGE[ chinese_traditional ] = "±z­nÀˬd¯S®í°Ï°ì¡S";
+ MESSAGE[ arabic ] = "åá ÊÑíÏ ÇáÊÏÞíÞ Ýí ÇáãäÇØÞ ÇáÎÇÕÉ¿";
+ MESSAGE[ greek ] = "Íá ãßíåé Ýëåã÷ïò ôùí åéäéêþí ðåñéï÷þí;";
+ MESSAGE[ korean ] = "ƯÁ¤ÇÑ ¿µ¿ªÀ» °Ë»çÇϽðڽÀ´Ï±î?";
+ MESSAGE[ turkish ] = "Özel bölümler denetlensin mi?";
+ MESSAGE[ language_user1 ] = " ";
+};
+QueryBox DLG_THESAURUS
+{
+ BUTTONS = WB_YES_NO ;
+ DEFBUTTON = WB_DEF_NO ;
+ MESSAGE = "Dieses Wort sollten Sie vermeiden! Thesaurus starten?" ;
+ MESSAGE [ English ] = "Please avoid this word! Start thesaurus?" ;
+ MESSAGE [ norwegian ] = "Please avoid this word! Start thesaurus?" ;
+ MESSAGE [ italian ] = "Tale temine andrebbe evitato. Avviare il dizionario dei sinonimi?" ;
+ MESSAGE [ portuguese_brazilian ] = "Por favor evite esta palavra!Iniciar thesaurus?" ;
+ MESSAGE [ portuguese ] = "Evite esta palavra! Iniciar o dicionário de sinónimos?" ;
+ MESSAGE [ finnish ] = "Vältä tätä sanaa! Käytetäänkö synonyymisanastoa?" ;
+ MESSAGE [ danish ] = "Undgå venligst dette ord! Vil du bruge synonymordbogen?" ;
+ MESSAGE [ french ] = "Il vaudrait mieux éviter d'employer ce mot ! Souhaitez-vous consulter le dictionnaire des synonymes ?" ;
+ MESSAGE [ swedish ] = "Undvik detta ord! Starta synonymordlista?" ;
+ MESSAGE [ dutch ] = "Dit woord niet gebruiken! Thesaurus starten?" ;
+ MESSAGE [ spanish ] = "¡Debería evitar esta palabra! ¿Iniciar búsqueda de sinónimos?" ;
+ MESSAGE [ english_us ] = "This word appears in the list of words you want to avoid! Start thesaurus?" ;
+ MESSAGE[ chinese_simplified ] = "ÄúÓ¦¸Ã±ÜÃâʹÓÃÕâ¸ö×Ö£¡ÄúÒªÆô¶¯´ÊµäÂð£¿";
+ MESSAGE[ russian ] = "Óïîòðåáëåíèå ýòîãî ñëîâà âû äîëæíû èçáåãàòü! Çàïóñòèòü òåçàóðóñ?";
+ MESSAGE[ polish ] = "Unikaj tego s³owa! W³¹czyæ Tezaurus?";
+ MESSAGE[ japanese ] = "‚±‚ê‚Í”ð‚¯‚é‚ׂ«Œ¾—t‚Å‚·B—Þ‹`ŒêŽ«“T‚ð‹N“®‚µ‚Ü‚·‚©H";
+ MESSAGE[ chinese_traditional ] = "±zÀ³¸ÓÁקK¨Ï¥Î³o­Ó¦r¡T±z­n±Ò°Êµü¨å¶Ü¡S";
+ MESSAGE[ arabic ] = "íÌÈ Úáíß ÊÌäÈ åÐå ÇáßáãÉ! åá ÊÑíÏ ÈÏÁ ÊÔÛíá ÞÇãæÓ ÇáãÑÇÏÝÇÊ¿";
+ MESSAGE[ greek ] = "Áðïöýãåôå áõôÞ ôç ëÝîç! Íá áíïßîåé ï èçóáõñüò ëÝîåùí;";
+ MESSAGE[ korean ] = "À̴ܾî´Â »ç¿ëÇÏÁö ¾ÊÀ» ´Ü¾î Ç׸ñ¿¡ ÀÖ´Â ´Ü¾î ÀÔ´Ï´Ù ! µ¿ÀÇ¾î »çÀüÀ» ½ÃÀÛÇϽðڽÀ´Ï±î?";
+ MESSAGE[ turkish ] = "Bu sözcük kullanmak istemediðiniz söcükler arasýnda! Eþ anlamlýlar sözlüðüne baþvurmak ister misiniz?";
+ MESSAGE[ language_user1 ] = " ";
+};
+QueryBox DLG_SPECIAL_FORCED
+{
+ BUTTONS = WB_YES_NO ;
+ DEFBUTTON = WB_DEF_NO ;
+ MESSAGE = "Sonderbereichprüfung ist ausgeschaltet, Trotzdem prüfen?" ;
+ MESSAGE [ English ] = "Check in Special regions is turned off, Proof anyway?" ;
+ MESSAGE [ norwegian ] = "Check in Special regions is turned off, Proof anyway?" ;
+ MESSAGE [ italian ] = "Il controllo delle aree speciali non è attivo, controllare lo stesso?" ;
+ MESSAGE [ portuguese_brazilian ] = "Verificação de Regiões especiais está desativada, Verificar assim mesmo?" ;
+ MESSAGE [ portuguese ] = "A verificação de zonas especiais está desactivada, mesmo assim prosseguir?" ;
+ MESSAGE [ finnish ] = "Erikoisalueiden tarkistus ei ole käytössä. Korjausluetaanko silti?" ;
+ MESSAGE [ danish ] = "Stavekontrol af særområder er slået fra, skal der kontrolleres alligevel?" ;
+ MESSAGE [ french ] = "La vérification dans les zones spéciales est désactivée. Vérifier tout de même ?" ;
+ MESSAGE [ swedish ] = "Kontroll av specialområden är avstängd. Korrekturläs ändå?" ;
+ MESSAGE [ dutch ] = "De functie 'Speciale bereiken controleren' is uitgeschakeld. Controle toch uitvoeren?" ;
+ MESSAGE [ spanish ] = "La verificación de las áreas especiales está desactivada, ¿Desea de todas maneras verificar?" ;
+ MESSAGE [ english_us ] = "Check special regions is deactivated. Check anyway?" ;
+ MESSAGE[ chinese_simplified ] = "ÌØÊâÇøÓòµÄ¼ì²éÒѾ­±»Ê§»î£¬Äú»¹ÊÇÒªÖ´ÐÐÕâÏî¼ì²é£¿";
+ MESSAGE[ russian ] = "Ïðîâåðêà ñïåöèàëüíûõ îáëàñòåé îòêëþ÷åíà, Âñå ðàâíî ïðîâåðèòü?";
+ MESSAGE[ polish ] = "Sprawdzanie obszarów specjalnych jest wy³¹czone, mimo to sprawdzaæ?";
+ MESSAGE[ japanese ] = "“Á•Ê’nˆæ‚ÍÁª¯¸o—ˆ‚Ü‚¹‚ñ‚Å‚µ‚½B‚»‚ê‚Å‚àÁª¯¸‚µ‚Ü‚·‚©HS";
+ MESSAGE[ chinese_traditional ] = "¯S®í°Ï°ìªºÀˬd¤w¸g³Q¥¢¬¡¡M±zÁÙ¬O­n°õ¦æ³o­Ó©R¥O¡S";
+ MESSAGE[ arabic ] = "ÊÏÞíÞ ÇáãäÇØÞ ÇáÎÇÕÉ ÛíÑ äÔØ. åá ÊÑíÏ ÇáÊÏÞíÞ ÈÇáÑÛã ãä Ðáß¿";
+ MESSAGE[ greek ] = "Ç åðéëïãÞ \"¸ëåã÷ïò åéäéêþí ðåñéï÷þí\" åßíáé áðåíåñãïðïéçìÝíç.ÈÝëåôå íá åëåã÷èïýí êáé áõôÝò;";
+ MESSAGE[ korean ] = "ƯÁ¤ÇÑ ¿µ¿ªÀÇ °Ë»ç°¡ ÁßÁöµÇ¾ú½À´Ï´Ù. °Ë»ç¸¦ ÇϽðڽÀ´Ï±î?";
+ MESSAGE[ turkish ] = "Özel bölüm denetimi etkin deðil. Yine de denetlensin mi?";
+ MESSAGE[ language_user1 ] = " ";
+};
+QueryBox MSG_SEARCH_END
+{
+ Buttons = WB_YES_NO ;
+ DefButton = WB_DEF_YES ;
+ Message = "StarOffice Writer hat bis zum Ende des Dokumentes gesucht. Möchten Sie die Suche am Dokumentanfang fortsetzen?" ;
+ Message [ ENGLISH ] = "StarOffice Writer has searched to the end of the document. Do you want to continue at the beginning?" ;
+ Message [ norwegian ] = "StarOffice Writer har søkt til slutten av dokumentet. Vil du fortsette fra begynnelsen?" ;
+ Message [ italian ] = "StarOffice Writer ha cercato fino alla fine del documento. Volete continuare dall'inizio del documento?" ;
+ Message [ portuguese_brazilian ] = "O StarOffice Writer buscou até o final do documento. Deseja continuar do início?" ;
+ Message [ portuguese ] = "O StarOffice Writer procurou até ao fim do documento. Deseja continuar a procura no início do documento?" ;
+ Message [ finnish ] = "StarOffice Writer on etsinyt asiakirjan loppuun asti.Jatketaanko alusta?" ;
+ Message [ danish ] = "StarOffice Writer har søgt til slutningen af dokumentet. Vil du fortsætte søgningen fra dokumentets begyndelse?" ;
+ Message [ french ] = "StarOffice Writer a atteint la fin du document. Souhaitez-vous reprendre la recherche au début du document ?" ;
+ Message [ swedish ] = "StarOffice Writer har sökt till slutet av dokument. Vill Du fortsätta sökningen i början av dokumentet?" ;
+ Message [ dutch ] = "StarOffice Writer heeft tot aan het einde van het document gezocht. Wilt u doorgaan met zoeken vanaf het begin?" ;
+ Message [ spanish ] = "StarOffice Writer ha buscado hasta el final del documento. ¿Desea continuar la búsqueda desde el principio?" ;
+ Message [ english_us ] = "StarOffice Writer has searched to the end of the document. Do you want to continue at the beginning?" ;
+ Message[ chinese_simplified ] = "StarOffice Writer ÒѾ­ËÑÑ°ÖÁÎĵµµÄβ¶Ë¡£Òª¼ÌÐø´ÓÎĵµÊ׶˿ªÊ¼ËÑÑ°£¿";
+ Message[ russian ] = "StarOffice Writer îñóùåñòâèë ïîèñê äî êîíöà äîêóìåíòà. Âû õîòèòå ïðîäîëæèòü ïîèñê ñ íà÷àëà äîêóìåíòà?";
+ Message[ polish ] = "StarOffice Writer szuka³ do koñca dokumentu. Czy chcesz kontynuowaæ wyszukiwanie na pocz¹tku dokumentu?";
+ Message[ japanese ] = "StarOffice Writer ‚Í•¶‘––‚Ü‚ÅŒŸõ‚µ‚Ü‚µ‚½B•¶‘‚ÌŽn‚ß‚É–ß‚Á‚Ä‘±s‚µ‚Ü‚·‚©H";
+ Message[ chinese_traditional ] = "StarOffice Writer ¤w¸g·j´M¦Ü¤å¥óªº§ÀºÝ¡C­nÄ~Äò·j´M¦Ü¤å¥ó­ººÝ¡H";
+ Message[ arabic ] = "ÞÇã StarOffice Writer ÈÇáÈÍË ÍÊì äåÇíÉ ÇáãÓÊäÏ. åá ÊÑíÏ ãÊÇÈÚÉ ÇáÈÍË ÚäÏ ÈÏÇíÉ ÇáãÓÊäÏ¿";
+ Message[ greek ] = "Ôï StarOffice Writer ïëïêëÞñùóå ôçí áíáæÞôçóç ùò ôï ôÝëïò ôïõ åããñÜöïõ. ÈÝëåôå íá óõíå÷éóôåß ç áíáæÞôçóç áðü ôçí áñ÷Þ ôïõ åããñÜöïõ;";
+ Message[ korean ] = "StarOffice Writer°¡ ¹®¼­ÀÇ ³¡±îÁö °Ë»öÇß½À´Ï´Ù. ¹®¼­ÀÇ Ã³À½ ºÎÅÍ °è¼ÓÇϽðڽÀ´Ï±î?";
+ Message[ turkish ] = "StarOffice Writer belgenin sonuna kadar aramayý tamamladý. Belgenin baþýndan aramaya devam etmek istiyor musunuz?";
+ Message[ language_user1 ] = " ";
+};
+QueryBox MSG_SEARCH_START
+{
+ Buttons = WB_YES_NO ;
+ DefButton = WB_DEF_YES ;
+ Message = "StarOffice Writer hat bis zum Anfang des Dokumentes gesucht. Möchten Sie die Suche am Dokumentende fortsetzen?" ;
+ Message [ ENGLISH ] = "StarOffice Writer has searched to the beginning of the document. Do you want to continue at the end?" ;
+ Message [ norwegian ] = "StarOffice Writer har søkt til begynnelsen av dokumentet. Vil du fortsette fra slutten?" ;
+ Message [ italian ] = "StarOffice Writer ha cercato fino all'inizio del documento. Volete continuare dalla fine del documento?" ;
+ Message [ portuguese_brazilian ] = "O StarOffice Writer buscou até o início do documento. Deseja continuar no final?" ;
+ Message [ portuguese ] = "O StarOffice Writer procurou até ao início do documento. Deseja continuar a procura no fim do documento?" ;
+ Message [ finnish ] = "StarOffice Writer on etsinyt asiakirjan alkuun asti.Jatketaanko lopusta?" ;
+ Message [ danish ] = "StarOffice Writer har søgt til begyndelsen af dokumentet. Vil du fortsætte søgningen fra dokumentets slutning?" ;
+ Message [ french ] = "StarOffice Writer a atteint le début du document. Souhaitez-vous reprendre la recherche à la fin du document ?" ;
+ Message [ swedish ] = "StarOffice Writer har sökt till början av dokumentet. Vill Du fortsätta sökningen i slutet av dokumentet?" ;
+ Message [ dutch ] = "StarOffice Writer heeft tot aan het begin van het document gezocht. Wilt u doorgaan met zoeken vanaf het einde?" ;
+ Message [ spanish ] = "StarOffice Writer ha buscado hasta el principio del documento. ¿Desea continuar desde el final?" ;
+ Message [ english_us ] = "StarOffice Writer has searched to the beginning of the document. Do you want to continue at the end?" ;
+ Message[ chinese_simplified ] = "StarOffice Writer ÒѾ­ËÑÑ°ÖÁÎĵµµÄÊ׶ˡ£Òª¼ÌÐø´ÓÎļþβ¶Ë¿ªÊ¼ËÑÑ°£¿";
+ Message[ russian ] = "StarOffice Writer îñóùåñòâèë ïîèñê äî íà÷àëà äîêóìåíòà. Âû õîòèòå ïðîäîëæèòü ïîèñê â êîíöå äîêóìåíòà?";
+ Message[ polish ] = "StarOffice Writer szuka³ do pocz¹tku dokumentu. Czy chcesz kontynuowaæ wyszukiwanie na koñcu dokumentu?";
+ Message[ japanese ] = "StarOffice Writer ‚Í•¶‘‚ÌŽn‚ß‚Ü‚ÅŒŸõ‚µ‚Ü‚µ‚½B•¶‘––‚É–ß‚Á‚ÄŒŸõ‚𑱂¯‚Ü‚·‚©H";
+ Message[ chinese_traditional ] = "StarOffice Writer ¤w¸g·j´M¦Ü¤å¥óªº­ººÝ¡C­nÄ~Äò·j´M¤å¥ó¦Ü§ÀºÝ¡S";
+ Message[ arabic ] = "ÞÇã StarOffice Writer ÈÇáÈÍË ÍÊì ÈÏÇíÉ ÇáãÓÊäÏ. åá ÊÑíÏ ãÊÇÈÚÉ ÇáÈÍË ÚäÏ äåÇíÉ ÇáãÓÊäÏ¿";
+ Message[ greek ] = "Ôï StarOffice Writer ïëïêëÞñùóå ôçí áíáæÞôçóç ùò ôçí áñ÷Þ ôïõ åããñÜöïõ. ÈÝëåôå íá óõíå÷éóôåß ç áíáæÞôçóç áðü ôï ôÝëïò ôïõ åããñÜöïõ;";
+ Message[ korean ] = "StarOffice Writer°¡ ¹®¼­ÀǽÃÀۺκÐÀ» °Ë»öÇß½À´Ï´Ù. ¹®¼­ÀÇ ³¡±îÁö °è¼ÓÇϽðڽÀ´Ï±î?";
+ Message[ turkish ] = "StarOffice Writer belgenin baþýna kadar aramayý tamamladý. Belgenin sonundan aramaya devam etmek istiyor musunuz?";
+ Message[ language_user1 ] = " ";
+};
+InfoBox MSG_NO_MERGE_ENTRY
+{
+ MESSAGE = "Es konnte nichts zusammengeführt werden." ;
+ MESSAGE [ English ] = "Could not merge document." ;
+ Message [ english_us ] = "Could not merge documents." ;
+ Message [ portuguese_brazilian ] = "Es konnte nichts zusammengeführt werden." ;
+ Message [ swedish ] = "Inget kunde sammanföras." ;
+ Message [ danish ] = "Fletning kunne ikke gennemføres." ;
+ Message [ italian ] = "Non è stato possibile unire alcunché." ;
+ Message [ spanish ] = "No se pudieron fusionar los documentos." ;
+ Message [ french ] = "Impossible de fusionner les documents." ;
+ Message [ dutch ] = "Er was geen merge van documenten mogelijk." ;
+ Message [ portuguese ] = "Foi impossível intercalar os documentos." ;
+ Message[ chinese_simplified ] = "ÎÞ·¨ºÏ²¢Îĵµ¡£";
+ Message[ russian ] = "Îáúåäèíèòü ÷òî-ëèáî íå óäàåòñÿ.";
+ Message[ polish ] = "Nie mo¿na by³o scaliæ dokumentów.";
+ Message[ japanese ] = "‚È‚É‚àŒ‹‡‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Message[ chinese_traditional ] = "µLªk¦X¨Ö¤å¥ó¡C";
+ Message[ arabic ] = ".áã íãßä ÏãÌ ÃíÉ ãÓÊäÏÇÊ";
+ Message[ greek ] = "Ç óõã÷þíåõóç äåí Þôáí äõíáôÞ.";
+ Message[ korean ] = "¹®¼­ º´ÇÕÀÌ ¾È¾ú½À´Ï´Ù.";
+ Message[ turkish ] = "Belgeler birleþtirilemedi.";
+ Message[ language_user1 ] = " ";
+};
+InfoBox MSG_ERR_INSERT_GLOS
+{
+ MESSAGE = "AutoText konnte nicht angelegt werden." ;
+ MESSAGE [ English ] = "Could not insert AutoText." ;
+ MESSAGE [ norwegian ] = "Could not insert AutoText." ;
+ MESSAGE [ italian ] = "Impossibile creare voce di glossario." ;
+ MESSAGE [ portuguese_brazilian ] = "Não pude inserir Texto Automático." ;
+ MESSAGE [ portuguese ] = "Impossível inserir o AutoTexto." ;
+ MESSAGE [ finnish ] = "Automaattitekstiä ei voi lisätä." ;
+ MESSAGE [ danish ] = "AutoTekst kunne ikke indsættes." ;
+ MESSAGE [ french ] = "Impossible de créer l'AutoTexte." ;
+ MESSAGE [ swedish ] = "AutoText kunde inte skapas." ;
+ MESSAGE [ dutch ] = "AutoTekst kon niet worden toegepast." ;
+ MESSAGE [ spanish ] = "No se pudo crear el AutoTexto." ;
+ MESSAGE [ english_us ] = "AutoText could not be created." ;
+ MESSAGE[ chinese_simplified ] = "ÎÞ·¨½¨Á¢×Ô¶¯Í¼Îļ¯¡£";
+ MESSAGE[ russian ] = "Ñîçäàòü àâòîòåêñò íåâîçìîæíî.";
+ MESSAGE[ polish ] = "Autotekst nie móg³ zostaæ utworzony.";
+ MESSAGE[ japanese ] = "“ü—ÍŽx‰‡‚Ì쬂ªo—ˆ‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ MESSAGE[ chinese_traditional ] = "µLªk«Ø¥ß¦Û°Ê¹Ï¤å¶°¡C";
+ MESSAGE[ arabic ] = ".ÊÚÐÑ ÅÖÇÝÉ ÇáäÕ ÇáÊáÞÇÆí";
+ MESSAGE[ greek ] = "Äåí Þôáí äõíáôüí íá ðñïóôåèåß ôï ÁõôïÊåßìåíï.";
+ MESSAGE[ korean ] = "ÀÚµ¿ ÅؽºÆ®¸¦ »ðÀÔÇÒ ¼ö ¾ø½À´Ï´Ù.";
+ MESSAGE[ turkish ] = "Otomatik metin yaratýlamadý.";
+ MESSAGE[ language_user1 ] = " ";
+};
+InfoBox MSG_ERR_SRCSTREAM
+{
+ MESSAGE = "Der Quelltext kann nicht geladen werden." ;
+ MESSAGE [ English ] = "The source cannot be loaded." ;
+ Message [ english_us ] = "The source cannot be loaded." ;
+ Message [ portuguese_brazilian ] = "Der Quelltext kann nicht geladen werden." ;
+ Message [ swedish ] = "Källtexten kan inte laddas." ;
+ Message [ danish ] = "Kildeteksten kan ikke indlæses." ;
+ Message [ italian ] = "Non è possibile caricare il testo sorgente." ;
+ Message [ spanish ] = "No es posible cargar el texto fuente." ;
+ Message [ french ] = "Le texte source ne peut pas être chargé." ;
+ Message [ dutch ] = "De brontekst kan niet worden geladen." ;
+ Message [ portuguese ] = "É impossível carregar o texto-fonte." ;
+ Message[ chinese_simplified ] = "ÎÞ·¨×°ÔØÔ´Îı¾¡£";
+ Message[ russian ] = "Çàãðóçêà èñõîäíîãî òåêñòà íåâîçìîæíà.";
+ Message[ polish ] = "Nie mo¿na by³o za³adowaæ tekstu Ÿród³owego.";
+ Message[ japanese ] = "¿°½‚ðÛ°ÄÞo—ˆ‚Ü‚¹‚ñB";
+ Message[ chinese_traditional ] = "µLªk¸Ë¸ü­ì©lÀÉ¡C";
+ Message[ arabic ] = ".áÇ íãßä ÊÍãíá äÕ ÇáãÕÏÑ";
+ Message[ greek ] = "Äåí åßíáé äõíáôüí íá öïñôùèåß ôï êÝéìåíï ðñïÝëåõóçò.";
+ Message[ korean ] = "¼Ò½º°¡ ·ÎµåµÉ ¼ö ¾ø½À´Ï´Ù.";
+ Message[ turkish ] = "Kaynak kod yüklenemiyor.";
+ Message[ language_user1 ] = " ";
+};
+InfoBox MSG_ERR_NO_FAX
+{
+ MESSAGE = "Kein Fax-Drucker unter Extras/Optionen/Drucken eingestellt." ;
+ MESSAGE [ English ] = "No fax printer at Settings/Options/Printer configured." ;
+ Message [ dutch ] = "Geen faxprinter geconfigureerd onder: Extra/Opties/Afdrukken." ;
+ Message [ english_us ] = "No fax printer has been set under Tools/Options/Printing." ;
+ Message [ italian ] = "Nessuna stampante-fax installata in Strumenti/Opzioni/Stampa." ;
+ Message [ spanish ] = "En Herramientas/Opciones/Imprimir no se ha configurado ninguna impresora fax." ;
+ Message [ french ] = "Aucune imprimante (fax) n'a été paramétrée sous Outils/Options/Imprimer" ;
+ Message [ swedish ] = "Ingen faxskrivare inställd under Verktyg/Alternativ/Skriva ut." ;
+ Message [ danish ] = "Der er ingen faxprinter indstillet under Funktioner/Indstillinger/Udskriv." ;
+ Message [ portuguese_brazilian ] = "Kein Fax-Drucker unter Extras/Optionen/Drucken eingestellt." ;
+ Message [ portuguese ] = "Não foi configurada nenhuma impressora para fax em Ferramentas/Opções/Imprimir." ;
+ Message[ chinese_simplified ] = "ÔÚ¹¤¾ß/Ñ¡Ïî/´òÓ¡»ú´¦Ã»ÓÐÉ趨´«Õæ´òÓ¡»ú¡£";
+ Message[ russian ] = " Ñåðâèñ/Ïàðàìåòðû/Ïå÷àòü ôàêñ-ïðèíòåð íå óñòàíîâëåí.";
+ Message[ polish ] = "Brak ustawienia dla faksu i drukarki pod has³em Narzêdzia/Opcje/Drukuj.";
+ Message[ japanese ] = "̧¯¸½—pÌßØÝÀ‚Í°Ù/µÌß¼®Ý/ˆóü‚Éݒ肳‚ê‚Ä‚¢‚Ü‚¹‚ñB";
+ Message[ chinese_traditional ] = "¦b¤u¨ã/¿ï¶µ/¾÷¦Lªí¾÷³B¨S¦³³]©w¦C¦L¶Ç¯uªºÅX°Ê³n¥ó¡C";
+ Message[ arabic ] = "áíÓÊ åäÇß ÅÚÏÇÏÇÊ ØÇÈÚÉ ÝÇßÓ ÊÍÊ \"ÃÏæÇÊ/ÎíÇÑÇÊ/ØÈÇÚÉ\".";
+ Message[ greek ] = "Äåí Ý÷åé ïñéóôåß åêôõðùôÞò ãéá fax óôï êáôÜëïãï Åñãáëåßá/ÅðéëïãÝò/Åêôýðùóç.";
+ Message[ korean ] = "µµ±¸/¿É¼Ç/Àμ⠿¡ Æѽº ÇÁ¸°ÅÍ°¡ ±¸¼ºµÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Message[ turkish ] = "Araçlar/Seçenekler/Yazdýrma altýnda faks konfigürasyonu yapýlmadý.";
+ Message[ language_user1 ] = " ";
+};
+InfoBox MSG_NOT_FOUND
+{
+ Message = "Suchbegriff nicht gefunden." ;
+ Message [ ENGLISH ] = "Search pattern not found." ;
+ Message [ norwegian ] = "Søkekriterier ikke funnet." ;
+ Message [ italian ] = "Termine non trovato" ;
+ Message [ portuguese_brazilian ] = "Padrao de busca não encontrado." ;
+ Message [ portuguese ] = "Impossível encontrar expressão procurada." ;
+ Message [ finnish ] = "Hakumallia ei löydy." ;
+ Message [ danish ] = "Søgningen gav intet resultat." ;
+ Message [ french ] = "Élément recherché introuvable." ;
+ Message [ swedish ] = "Sökord hittades inte." ;
+ Message [ dutch ] = "Zoekbegrip niet gevonden." ;
+ Message [ spanish ] = "No se encontró la expresión buscada." ;
+ Message [ english_us ] = "Search key not found." ;
+ Message[ chinese_simplified ] = "ûÓÐÕÒµ½ËùÒªËÑÑ°µÄ¶ÔÏó¡£";
+ Message[ russian ] = "Ñëîâî íå íàéäåíî.";
+ Message[ polish ] = "Szukane has³o nie zosta³o znalezione.";
+ Message[ japanese ] = "ŒŸõ€–Ú‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ";
+ Message[ chinese_traditional ] = "¨S¦³§ä¨ì©Ò­n·j´Mªºª«¥ó¡C";
+ Message[ arabic ] = "ÊÚÐÑ ÇáÚËæÑ Úáì ÇáÈíÇäÇÊ ÇáÊí ÊÈÍË ÚäåÇ.";
+ Message[ greek ] = "Äåí âñÝèçêáí ôá äåäïìÝíá ðïõ áíáæçôÜôå.";
+ Message[ korean ] = "°Ë»öÅ°°¡ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.";
+ Message[ turkish ] = "Arama terimi bulunamadý.";
+ Message[ language_user1 ] = " ";
+};
+InfoBox MSG_INDEX_OVERFLOW
+{
+ Message = " gefunden." ;
+ Message [ ENGLISH ] = "Search pattern not found." ;
+ Message [ norwegian ] = "Søkekriterier ikke funnet." ;
+ Message [ italian ] = "Termine non trovato" ;
+ Message [ portuguese_brazilian ] = "Padrao de busca não encontrado." ;
+ Message [ portuguese ] = "localizado." ;
+ Message [ finnish ] = "Hakumallia ei löydy." ;
+ Message [ danish ] = "fundet." ;
+ Message [ french ] = "trouvé(e/s)." ;
+ Message [ swedish ] = "funnet." ;
+ Message [ dutch ] = "gevonden." ;
+ Message [ spanish ] = "encontrado." ;
+ Message [ english_us ] = "found." ;
+ Message[ chinese_simplified ] = "ÕÒµ½¡£";
+ Message[ russian ] = "íàéäåí.";
+ Message[ polish ] = "znaleziono.";
+ Message[ japanese ] = "Œ©‚‚©‚è‚Ü‚µ‚½B";
+ Message[ chinese_traditional ] = "§ä¨ì¡C";
+ Message[ arabic ] = ".æÌöÏ ";
+ Message[ greek ] = "âñÝèçêå.";
+ Message[ korean ] = "¹ß°ß.";
+ Message[ turkish ] = "bulundu.";
+ Message[ language_user1 ] = " ";
+};
+InfoBox MSG_SCAN_NOSOURCE
+{
+ Message = "Quelle nicht gesetzt." ;
+ Message [ ENGLISH ] = "Source not set." ;
+ Message [ english_us ] = "Source not specified." ;
+ Message [ swedish ] = "Källa ej specificerad." ;
+ Message [ danish ] = "Kilden er ikke specifiseret." ;
+ Message [ italian ] = "Sorgente non specificata." ;
+ Message [ spanish ] = "No se especificó la fuente." ;
+ Message [ french ] = "Source non configurée." ;
+ Message [ dutch ] = "Bron niet aangegeven." ;
+ Message [ portuguese_brazilian ] = "Quelle nicht gesetzt." ;
+ Message [ portuguese ] = "Fonte não especificada." ;
+ Message[ chinese_simplified ] = "ûÓÐÖ¸¶¨Ô´¡£";
+ Message[ russian ] = "Èñòî÷íèê íå óêàçàí";
+ Message[ polish ] = "Nie okreœlono Ÿród³a.";
+ Message[ japanese ] = "¿°½‚ª’è‹`‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB";
+ Message[ chinese_traditional ] = "¨S¦³©w¸q¨Ó·½¡C";
+ Message[ arabic ] = ".áã íÊã ÊÍÏíÏ ÇáãÕÏÑ";
+ Message[ greek ] = "Äåí ïñßóôçêå ç ðñïÝëåõóç.";
+ Message[ korean ] = "¼Ò¼ö°¡ ÁöÁ¤µÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Message[ turkish ] = "Kaynak belirlenmedi.";
+ Message[ language_user1 ] = " ";
+};
+String STR_NOGLOS1
+{
+ /* ### ACHTUNG: Neuer Text in Resource? AutoText zum Kürzel ' : AutoText zum Kürzel '' */
+ /* ### ACHTUNG: Neuer Text in Resource? AutoText zum Kürzel ' : AutoText zum Kürzel '' */
+ TEXT = "AutoText zum Kürzel '" ;
+ TEXT [ English ] = "AutoText for Short Name '" ;
+ TEXT [ norwegian ] = "AutoText for Short Name '" ;
+ TEXT [ italian ] = "Testo automatico per la sigla '" ;
+ TEXT [ portuguese_brazilian ] = "Texto Automático para Abreviação" ;
+ TEXT [ portuguese ] = "AutoTexto para abreviatura '" ;
+ TEXT [ finnish ] = "Automaattitekstiä lyhenteelle '" ;
+ TEXT [ danish ] = "AutoTekst til genvej '" ;
+ TEXT [ french ] = "AutoTexte pour raccourci ' " ;
+ TEXT [ swedish ] = "Genväg AutoText '" ;
+ TEXT [ dutch ] = "AutoTekst voor afkortingen '" ;
+ TEXT [ spanish ] = "AutoTexto para la abreviatura '" ;
+ TEXT [ english_us ] = "AutoText for Shortcut '" ;
+ TEXT[ chinese_simplified ] = "×Ô¶¯Í¼Îļ¯Ëõд '";
+ TEXT[ russian ] = "Àâòîòåêñò ê ñîêðàùåíèþ '";
+ TEXT[ polish ] = "Autotekst do skrótu '";
+ TEXT[ japanese ] = "“ü—ÍŽx‰‡€–ڂ̼®°Ä¶¯Ä";
+ TEXT[ chinese_traditional ] = "¦Û°Ê¹Ï¤å¶°ÁY¼g '";
+ TEXT[ arabic ] = "äÕ ÇáÊáÞÇÆí ááÇÎÊÕÇÑ '";
+ TEXT[ greek ] = "Ôï ÁõôïÊåßìåíï ãéá ôç óõíôüìåõóç '";
+ TEXT[ korean ] = "ÀÚµ¿ ÅؽºÆ® ¹Ù·Î°¡±â '";
+ TEXT[ turkish ] = "Otomatik metin kýsaltmasý '";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_NOGLOS2
+{
+ /* ### ACHTUNG: Neuer Text in Resource? ' nicht gefunden. : '' nicht gefunden. */
+ /* ### ACHTUNG: Neuer Text in Resource? ' nicht gefunden. : '' nicht gefunden. */
+ /* ### ACHTUNG: Neuer Text in Resource? ' nicht gefunden. : '' nicht gefunden. */
+ /* ### ACHTUNG: Neuer Text in Resource? ' nicht gefunden. : '' nicht gefunden. */
+ TEXT = "' nicht gefunden." ;
+ TEXT [ English ] = "' not found." ;
+ TEXT [ norwegian ] = "' not found." ;
+ TEXT [ italian ] = "' non trovato." ;
+ TEXT [ portuguese_brazilian ] = "' não encontrado." ;
+ TEXT [ portuguese ] = "' não encontrado." ;
+ TEXT [ finnish ] = "' ei löydy." ;
+ TEXT [ danish ] = "'blev ikke fundet." ;
+ TEXT [ french ] = "' est introuvable." ;
+ TEXT [ swedish ] = "' hittades inte." ;
+ TEXT [ dutch ] = "' niet gevonden." ;
+ TEXT [ spanish ] = "' no se encontró." ;
+ TEXT [ english_us ] = "' not found." ;
+ TEXT[ chinese_simplified ] = "' ûÓб»ÕÒµ½¡£";
+ TEXT[ russian ] = "' íåíàéäåí.";
+ TEXT[ polish ] = "' nie znaleziono.";
+ TEXT[ japanese ] = "Œ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ TEXT[ chinese_traditional ] = "' ¨S¦³³Q§ä¨ì¡C";
+ TEXT[ arabic ] = "áã íõÚËÑ Úáíå '";
+ TEXT[ greek ] = "' äåí âñÝèçêå.";
+ TEXT[ korean ] = "' ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.";
+ TEXT[ turkish ] = "' bulunamadý.";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_NUM_LEVEL
+{
+ TEXT = "Ebene " ;
+ TEXT [ English ] = "Level " ;
+ Text [ dutch ] = "Niveau " ;
+ Text [ english_us ] = "Level " ;
+ Text [ italian ] = "Livello " ;
+ Text [ spanish ] = "Nivel " ;
+ Text [ french ] = "Niveau " ;
+ Text [ swedish ] = "Nivå " ;
+ Text [ danish ] = "Niveau " ;
+ Text [ portuguese_brazilian ] = "Ebene " ;
+ Text [ portuguese ] = "Nível " ;
+ Text[ chinese_simplified ] = "¼¶ ";
+ Text[ russian ] = "Óðîâåíü ";
+ Text[ polish ] = "Poziom ";
+ Text[ japanese ] = "ÚÍÞÙ ";
+ Text[ chinese_traditional ] = "¯Å ";
+ Text[ arabic ] = "ÇáãÓÊæì";
+ Text[ greek ] = "Åðßðåäï ";
+ Text[ korean ] = "¼öÁØ ";
+ Text[ turkish ] = "Düzey ";
+ Text[ language_user1 ] = " ";
+};
+String STR_ERROR_NOLANG
+{
+ TEXT = "Im geprüften Bereich ist keine Sprache eingestellt." ;
+ TEXT [ English ] = "No language choosed in checked region." ;
+ TEXT [ norwegian ] = "Språk ikke valgt i kontrollert område." ;
+ TEXT [ italian ] = "Nell'area verificata non è stata impostata nessuna lingua." ;
+ TEXT [ portuguese_brazilian ] = "No language choosed in checked region." ;
+ TEXT [ portuguese ] = "Na secção verificada não existe nenhuma língua definida." ;
+ TEXT [ finnish ] = "No language choosed in checked region." ;
+ TEXT [ danish ] = "Der er ikke angivet et sprog i det kontrollerede område." ;
+ TEXT [ french ] = "Aucune langue choisie pour région définie." ;
+ TEXT [ swedish ] = "Inget språk inställt i det stavningskontrollerade området." ;
+ TEXT [ dutch ] = "In gecontroleerd bereik geen taal vastgelegd." ;
+ TEXT [ spanish ] = "No se ha seleccionado ningún idioma en el área revisada." ;
+ TEXT [ english_us ] = "No language is selected in the proofed section." ;
+ TEXT[ chinese_simplified ] = "ÔÚ¼ì²éµÄÇøÓòÄÚûÓÐÑ¡¶¨ÈκÎÓïÑÔ¡£";
+ TEXT[ russian ] = "Â ïðîâåðåííîé ñåêöèè ÿçûê íå óñòàíîâëåí.";
+ TEXT[ polish ] = "W sprawdzanym obszarze nie ustawiono jêzyka.";
+ TEXT[ japanese ] = "Áª¯¸‚µ‚½—̈æ‚É‚ÍŒ¾Œê‚ªÝ’肳‚ê‚Ä‚¢‚Ü‚¹‚ñB";
+ TEXT[ chinese_traditional ] = "¦bÀˬdªº°Ï°ì¤º¨S¦³¿ï©w¥ô¦ó»y¨¥¡C";
+ TEXT[ arabic ] = ".áã íÊã ÊÍÏíÏ ÃíÉ áÛÉ Ýí ÇáäØÇÞ ÇáãÏÞÞ Ýíå";
+ TEXT[ greek ] = "Äåí ïñßóôçêå ãëþóóá ãéá ôçí åëåã÷üìåíç ðåñéï÷Þ.";
+ TEXT[ korean ] = "°ËÁõµÈ ±¸¿ª¿¡¼­ ¼±ÅÃµÈ ¾ð¾î°¡ ¾ø½À´Ï´Ù.";
+ TEXT[ turkish ] = "Denetlenen bölümde dil seçilmedi.";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_EDIT_FOOTNOTE
+{
+ TEXT = "Fußnote bearbeiten" ;
+ TEXT [ ENGLISH ] = "Edit footnote" ;
+ TEXT [ norwegian ] = "Redigerer fotnote" ;
+ TEXT [ italian ] = "Modifica nota a piè pagina" ;
+ TEXT [ portuguese_brazilian ] = "Editar nota de rodapé" ;
+ TEXT [ portuguese ] = "Editar nota de rodapé" ;
+ TEXT [ finnish ] = "Muokkaa alaviitettä" ;
+ TEXT [ danish ] = "Rediger fodnote" ;
+ TEXT [ french ] = "Modifier note de bas de page" ;
+ TEXT [ swedish ] = "Redigera fotnot" ;
+ TEXT [ dutch ] = "Voetnoot bewerken" ;
+ TEXT [ spanish ] = "Editar nota al pie" ;
+ TEXT [ english_us ] = "Edit Footnote" ;
+ TEXT[ chinese_simplified ] = "±à¼­×¢½Å";
+ TEXT[ russian ] = "Ïðàâêà ñíîñîê";
+ TEXT[ polish ] = "Edytuj przypis dolny";
+ TEXT[ japanese ] = "‹r’‚Ì•ÒW";
+ TEXT[ chinese_traditional ] = "½s¿èµù¸}";
+ TEXT[ arabic ] = "ÊÍÑíÑ ÍÇÔíÉ ÓÝáíÉ";
+ TEXT[ greek ] = "Åðåîåñãáóßá õðïóçìåßùóçò";
+ TEXT[ korean ] = "°¢ÁÖ ÆíÁý";
+ TEXT[ turkish ] = "Dipnotu düzenle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_VERB_FOR_GRF
+{
+ TEXT = "Bearbeiten" ;
+ TEXT [ ENGLISH ] = "Edit" ;
+ Text [ dutch ] = "Bewerken" ;
+ Text [ english_us ] = "Edit" ;
+ Text [ italian ] = "Modifica" ;
+ Text [ spanish ] = "Editar" ;
+ Text [ french ] = "Modifier" ;
+ Text [ swedish ] = "Redigera" ;
+ Text [ danish ] = "Rediger" ;
+ Text [ portuguese_brazilian ] = "Bearbeiten" ;
+ Text [ portuguese ] = "Editar" ;
+ Text[ chinese_simplified ] = "±à¼­";
+ Text[ russian ] = "Ïðàâêà";
+ Text[ polish ] = "Edytuj";
+ Text[ japanese ] = "•ÒW";
+ Text[ chinese_traditional ] = "½s¿è";
+ Text[ arabic ] = "ÊÍÑíÑ";
+ Text[ greek ] = "Åðåîåñãáóßá";
+ Text[ korean ] = "ÆíÁý";
+ Text[ turkish ] = "Düzenle";
+ Text[ language_user1 ] = " ";
+};
+String STR_NB_REPLACED
+{
+ Text = "Suchbegriff XXmal ersetzt." ;
+ Text [ ENGLISH ] = "Search pattern replaced XX times." ;
+ Text [ norwegian ] = "Søkekriterier erstattet XX ganger." ;
+ Text [ italian ] = "Testo sostituito XX volte" ;
+ Text [ portuguese_brazilian ] = "Padrao de busca substituído XX vezes." ;
+ Text [ portuguese ] = "Expressão procurada substituída XX vezes." ;
+ Text [ finnish ] = "Hakumalli on korvattu XX kertaa." ;
+ Text [ danish ] = "Søgeord erstattet XX gange." ;
+ Text [ french ] = "L'élément recherché a été remplacé XX fois." ;
+ Text [ swedish ] = "Sökord ersatt XX gånger." ;
+ Text [ dutch ] = "Het gezochte item is XX keer vervangen." ;
+ Text [ spanish ] = "La expresión buscada ha sido reemplazada XX veces." ;
+ Text [ english_us ] = "Search key replaced XX times." ;
+ Text[ chinese_simplified ] = "ËÑÑ°ÄÚÈݱ» XX ´Î¸üÌæ¡£";
+ Text[ russian ] = "Èñêîìîå ñëîâî çàìåíåíî XXðàç.";
+ Text[ polish ] = "Szukane has³o zosta³o XX razy zast¹pione.";
+ Text[ japanese ] = "ŒŸõ€–Ú‚ðXX“x’u‚«Š·‚¦‚Ü‚µ‚½";
+ Text[ chinese_traditional ] = "·j´M¤º®e³Q XX ¦¸¥N´À¡C";
+ Text[ arabic ] = "Êã ÇÓÊÈÏÇá ÈíÇäÇÊ ÇáÈÍË ××× ãÑÉ.";
+ Text[ greek ] = "Æçôïýìåíï óôïé÷åßï áíôéêáôáóôÜèçêå XX öïñÝò.";
+ Text[ korean ] = "°Ë»ö ´Ü¾î°¡ XX¹è·Î ´ëüµÊ.";
+ Text[ turkish ] = "Arama terimi XX kez deðiþtirildi.";
+ Text[ language_user1 ] = " ";
+};
+String RID_TOOLS_TOOLBOX
+{
+ Text = "Werkzeugleiste" ;
+ Text [ English ] = "Toolbar" ;
+ Text [ english_us ] = "Main Toolbar" ;
+ Text [ italian ] = "Barra degli strumenti" ;
+ Text [ spanish ] = "Barra de herramientas" ;
+ Text [ french ] = "Barre d'instruments" ;
+ Text [ dutch ] = "Werktuigbalk" ;
+ 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 ] = " ";
+};
+String RID_SRCVIEW_TOOLBOX
+{
+ Text = "Quelltext" ;
+ Text [ English ] = "Source" ;
+ Text [ dutch ] = "Brontekst" ;
+ Text [ english_us ] = "Source" ;
+ Text [ italian ] = "Testo sorgente" ;
+ Text [ spanish ] = "Texto fuente" ;
+ Text [ french ] = "Texte source" ;
+ Text [ swedish ] = "Källtext" ;
+ Text [ danish ] = "Kildetekst" ;
+ Text [ portuguese ] = "Texto-fonte" ;
+ Text [ portuguese_brazilian ] = "Quelltext" ;
+ Text[ chinese_simplified ] = "Ô´Îı¾";
+ Text[ russian ] = "Èñõîäíûé òåêñò";
+ Text[ polish ] = "Tekst Ÿród³owy";
+ Text[ japanese ] = "¿°½";
+ Text[ chinese_traditional ] = "­ì©lÀÉ";
+ Text[ arabic ] = "äÕ ÇáãÕÏÑ";
+ Text[ greek ] = "Êåßìåíï ðñïÝëåõóçò";
+ Text[ korean ] = "¼Ò½º";
+ Text[ turkish ] = "Kaynak kod";
+ Text[ language_user1 ] = " ";
+};
+String STR_SRCVIEW_ROW
+{
+ 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 ] = "Wiersz ";
+ Text[ japanese ] = "s ";
+ Text[ chinese_traditional ] = "¦æ ";
+ Text[ arabic ] = "ÕÝ";
+ Text[ greek ] = "ÃñáììÞ ";
+ Text[ korean ] = "Çà ";
+ Text[ turkish ] = "Satýr ";
+ Text[ language_user1 ] = " ";
+};
+String STR_SRCVIEW_COL
+{
+ Text = "Spalte " ;
+ Text [ English ] = "Column " ;
+ Text [ norwegian ] = "Kolonne " ;
+ Text [ italian ] = "Colonna " ;
+ Text [ portuguese_brazilian ] = "Coluna " ;
+ Text [ portuguese ] = "Coluna " ;
+ Text [ finnish ] = "Palsta " ;
+ 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_PRINT_TITLE
+{
+ Text = "Drucken der Selektion" ;
+ Text [ English ] = "Printing of selection" ;
+ Text[ italian ] = "Stampa la selezione";
+ Text[ portuguese_brazilian ] = "Drucken der Selektion";
+ Text[ portuguese ] = "A imprimir selecção";
+ Text[ danish ] = "Udskriv det markerede";
+ Text[ french ] = "Imprimer la sélection";
+ Text[ swedish ] = "Skriv ut markeringen";
+ Text[ dutch ] = "Afdrukken van de selectie";
+ Text[ spanish ] = "Imprimir la selección";
+ Text[ english_us ] = "Printing selection";
+ Text[ chinese_simplified ] = "´òÓ¡Ñ¡ÖеIJ¿·Ö";
+ Text[ russian ] = "Ïå÷àòü âûäåëåííîãî ôðàãìåíòà";
+ Text[ polish ] = "Drukowanie wybranych elementów";
+ Text[ japanese ] = "‘I‘ð”͈͂̈óü";
+ Text[ chinese_traditional ] = "¦C¦L¿ï¨ú³¡¥÷";
+ Text[ arabic ] = "ØÈÇÚÉ ÇáÊÍÏíÏ";
+ Text[ greek ] = "Åêôýðùóç åðéëïãÞò";
+ Text[ korean ] = "¼±Åà Àμâ";
+ Text[ turkish ] = "Seçimi yazdýr";
+ Text[ language_user1 ] = " ";
+};
+String STR_PRINT_MSG
+{
+ Text = "Wollen Sie die Selektion oder das gesamte Dokument drucken?" ;
+ Text [ English ] = "Print selection or whole document?" ;
+ Text[ italian ] = "Volete stampare la selezione o l'intero documento?";
+ Text[ portuguese_brazilian ] = "Wollen Sie die Selektion oder das gesamte Dokument drucken?";
+ Text[ portuguese ] = "Deseja imprimir a selecção ou o documento inteiro?";
+ Text[ danish ] = "Vil du udskrive det markerede eller hele dokumentet?";
+ Text[ french ] = "Souhaitez vous imprimer uniquement la sélection ou bien le document entier ?";
+ Text[ swedish ] = "Vill Du skriva ut det markerade eller hela dokumentet?";
+ Text[ dutch ] = "Wilt u de selectie of het hele document afdrukken?";
+ Text[ spanish ] = "¿Desea imprimir solo la selección o todo el documento?";
+ Text[ english_us ] = "Do you wish to print the selection or the entire document?";
+ Text[ chinese_simplified ] = "ÄúÒª´òÓ¡Ñ¡ÔñµÄ²¿·Ö»¹ÊÇÒª´òÓ¡Õû¸öÎĵµ£¿";
+ Text[ russian ] = "Âû õîòèòå íàïå÷àòàòü âåñü äîêóìåíò èëè òîëüêî âûäåëåíèå?";
+ Text[ polish ] = "Czy chcesz wydrukowaæ selekcjê czy te¿ ca³y dokument?";
+ Text[ japanese ] = "‘I‘ð”͈͂©•¶‘‘S‘Ì‚Ì‚Ç‚¿‚ç‚ðˆóü‚µ‚Ü‚·‚©H";
+ Text[ chinese_traditional ] = "±z­n¦C¦L¿ï¨úªº³¡¥÷ÁÙ¬O­n¦C¦L¾ã­Ó¤å¥ó¡S";
+ Text[ arabic ] = "åá ÊÑíÏ ØÈÇÚÉ ÇáÊÍÏíÏ Ãã ÇáãÓÊäÏ ÈÃßãáå¿";
+ Text[ greek ] = "ÈÝëåôå íá åêôõðþóåôå ôçí åðéëåãìÝíç ðåñéï÷Þ Þ ïëüêëçñï ôï Ýããñáöï;";
+ Text[ korean ] = "¼±ÅÃµÈ ¹®¼­³ª Àüü ¹®¼­¸¦ ÀμâÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "Seçimi ya da tüm belgeyi yazdýrmak istiyor musunuz?";
+ Text[ language_user1 ] = " ";
+};
+String STR_PRINT_ALL
+{
+ Text = "~Alles" ;
+ Text [ English ] = "All" ;
+ Text[ italian ] = "~Tutto";
+ Text[ portuguese_brazilian ] = "Alles";
+ Text[ portuguese ] = "~Tudo";
+ Text[ danish ] = "Alt";
+ Text[ french ] = "~Tout";
+ Text[ swedish ] = "Allt";
+ Text[ dutch ] = "~Alles";
+ Text[ spanish ] = "~Todo";
+ Text[ english_us ] = "All";
+ Text[ chinese_simplified ] = "È«²¿";
+ Text[ russian ] = "Âñå";
+ Text[ polish ] = "Wszystko";
+ Text[ japanese ] = "‚·‚ׂÄ";
+ Text[ chinese_traditional ] = "¥þ³¡";
+ Text[ arabic ] = "Çáßá";
+ Text[ greek ] = "¼ëá";
+ Text[ korean ] = "Àüü";
+ Text[ turkish ] = "Tümü";
+ Text[ language_user1 ] = " ";
+};
+String STR_PRINT_SELECTION
+{
+ Text = "~Selektion" ;
+ Text [ English ] = "Selection" ;
+ Text[ italian ] = "~Selezione";
+ Text[ portuguese_brazilian ] = "Selektion";
+ Text[ portuguese ] = "~Selecção";
+ Text[ danish ] = "Markering";
+ Text[ french ] = "~Sélection";
+ Text[ swedish ] = "Markering";
+ Text[ dutch ] = "~Selectie";
+ Text[ spanish ] = "Sele~cción";
+ Text[ english_us ] = "Selection";
+ Text[ chinese_simplified ] = "Ñ¡ÖÐ";
+ Text[ russian ] = "Âûäåëåíèå";
+ Text[ polish ] = "Selekcja";
+ Text[ japanese ] = "‘I‘ð”͈Í";
+ Text[ chinese_traditional ] = "¿ï¨ú";
+ Text[ arabic ] = "ÇáÊÍÏíÏ";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ turkish ] = "Seçim";
+ Text[ language_user1 ] = " ";
+};
+String STR_READONLY_SEL
+{
+ TEXT = "schreibgeschützt" ;
+ TEXT [ English ] = "readonly" ;
+ TEXT[ english_us ] = "read only";
+ TEXT[ portuguese ] = "só leitura";
+ TEXT[ russian ] = "òîëüêî äëÿ ÷òåíèÿ";
+ TEXT[ dutch ] = "schrijfbeveiligd";
+ TEXT[ french ] = "en lecture seule";
+ TEXT[ spanish ] = "solo lectura";
+ TEXT[ italian ] = "a sola lettura";
+ TEXT[ danish ] = "skrivebeskyttet";
+ TEXT[ swedish ] = "skrivskyddad";
+ TEXT[ polish ] = "Tylko do odczytu";
+ TEXT[ portuguese_brazilian ] = "readonly";
+ TEXT[ japanese ] = "“Ç‚ÝŽæ‚èê—p";
+ TEXT[ chinese_simplified ] = "·À¸²Ð´";
+ TEXT[ chinese_traditional ] = "°ßŪ";
+ TEXT[ arabic ] = "ááÞÑÇÁÉ ÝÞØ";
+ TEXT[ greek ] = "ìüíï ãéá áíÜãíùóç";
+ TEXT[ korean ] = "Àбâ Àü¿ë";
+ TEXT[ turkish ] = "Salt okunur";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_SAVEAS_SRC
+{
+ Text = "Q~uelltext exportieren..." ;
+ Text [ English ] = "Export source as..." ;
+ Text [ portuguese_brazilian ] = "Q~uelltext exportieren..." ;
+ Text [ swedish ] = "Exportera källtext..." ;
+ Text [ danish ] = "Eksporter kildetekst..." ;
+ Text [ italian ] = "~Esporta testo sorgente..." ;
+ Text [ spanish ] = "~Exportar texto fuente..." ;
+ Text [ french ] = "E~xport du texte source..." ;
+ Text [ dutch ] = "~Brontekst exporteren..." ;
+ Text [ portuguese ] = "Exportar texto-~fonte..." ;
+ Text [ english_us ] = "~Export source..." ;
+ Text[ chinese_simplified ] = "Êä³öÔ´Îı¾(~E)...";
+ Text[ russian ] = "Ýêñïîðò èñõîäíîãî òåêñòà...";
+ Text[ polish ] = "Eksportuj tekst Ÿród³owy...";
+ Text[ japanese ] = "¿°½Ã·½Ä‚𴸽Îß°Ä‚·‚é(~E)...";
+ Text[ chinese_traditional ] = "¿é¥X­ì©lÀÉ(~E)...";
+ Text[ arabic ] = "ÊÕÏíÑ äÕ ÇáãÕÏÑ...";
+ Text[ greek ] = "ÅîáãùãÞ êåéìÝíïõ ðñïÝëåõóçò...";
+ Text[ korean ] = "¼Ò½º º¸³»±â(~E)...";
+ Text[ turkish ] = "Kaynak kodu dýþa aktar...";
+ Text[ language_user1 ] = " ";
+};
+String MN_SRCVIEW_POPUPMENU
+{
+ Text = "HTML - Quelltext" ;
+ Text [ English ] = "HTML source" ;
+ Text [ portuguese ] = "Texto-fonte HTML" ;
+ Text [ english_us ] = "HTML source" ;
+ Text [ portuguese_brazilian ] = "HTML - Quelltext" ;
+ Text [ swedish ] = "HTML - Källtext" ;
+ Text [ danish ] = "HTML-kildetekst" ;
+ Text [ italian ] = "Testo sorgente HTML" ;
+ Text [ spanish ] = "Texto fuente HTML" ;
+ Text [ french ] = "Texte source HTML" ;
+ Text [ dutch ] = "HTML - brontekst" ;
+ Text[ chinese_simplified ] = "HTML Ô´Îı¾";
+ Text[ russian ] = "Èñõîäíûé òåêñò â ôîðìàòå HTML";
+ Text[ polish ] = "Tekst Ÿród³owy HTML";
+ Text[ japanese ] = "HTML¿°½";
+ Text[ chinese_traditional ] = "HTML ­ì©lÀÉ";
+ Text[ arabic ] = "äÕ ãÕÏÑ HTML";
+ Text[ greek ] = "Áñ÷åßï ðñïÝëåõóçò HTML";
+ Text[ korean ] = "HTML ¼Ò½º";
+ Text[ turkish ] = "HTML kaynak kodu";
+ Text[ language_user1 ] = " ";
+};
+
+ToolBox RID_TOOLS_TOOLBOX
+{
+ HelpID = HID_TOOLS_TOOLBOX ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ LineSpacing = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ Customize = TRUE ;
+ MenuStrings = TRUE ;
+ Scroll = TRUE ;
+ Align = BOXALIGN_LEFT ;
+ Hide = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_CTRL ;
+ HelpID = HID_INSERT_CTRL ;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_FIELD_CTRL ;
+ HelpID = HID_INSERT_FIELD_CTRL ;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_OBJ_CTRL ;
+ HelpID = HID_INSERT_OBJ_CTRL ;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_INSERT_DRAW
+ };
+ ToolBoxItem
+ {
+ ITEM_FORM_CONFIG
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_GLOSSARY_DLG ;
+ HelpID = FN_GLOSSARY_DLG ;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_CAPTION;
+ HelpID = FN_INSERT_CAPTION ;
+ Hide = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_IDX_ENTRY_DLG;
+ HelpId = FN_INSERT_IDX_ENTRY_DLG;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_REF_FIELD;
+ HelpID = FN_INSERT_REF_FIELD ;
+ Hide = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_SHADOWCURSOR ;
+ HelpID = FN_SHADOWCURSOR ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_SPELLING_DLG ;
+ HelpID = FN_SPELLING_DLG ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_AUTOSPELL_CHECK
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_HYPHENATE_OPT_DLG;
+ HelpID = FN_HYPHENATE_OPT_DLG;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_THESAURUS_DLG;
+ HelpID = FN_THESAURUS_DLG;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_SEARCH_DLG ;
+ HelpID = SID_SEARCH_DLG ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_HYPERLINK_INSERT ;
+ HelpID = SID_HYPERLINK_INSERT ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_ZOOM;
+ HelpID = SID_ATTR_ZOOM ;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_VIEW_META_CHARS ;
+ HelpID = FN_VIEW_META_CHARS ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_VIEW_FIELDNAME ;
+ HelpID = FN_VIEW_FIELDNAME ;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_VIEW_GRAPHIC ;
+ HelpID = FN_VIEW_GRAPHIC ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_BROWSER_MODE ;
+ HelpID = SID_BROWSER_MODE ;
+ };
+ };
+};
+Toolbox RID_SRCVIEW_TOOLBOX
+{
+ HelpID = HID_SRCVIEW_TOOLBOX ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ LineSpacing = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ Customize = TRUE ;
+ MenuStrings = TRUE ;
+ Scroll = TRUE ;
+ Align = BOXALIGN_TOP ;
+ Hide = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_CHAR_FONT ;
+ HelpID = SID_ATTR_CHAR_FONT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_CHAR_FONTHEIGHT ;
+ HelpID = SID_ATTR_CHAR_FONTHEIGHT ;
+ };
+ };
+};
+Menu MN_SRCVIEW_POPUPMENU
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ ITEM_FORMAT_ATTR_CHAR_FONT
+ };
+ MenuItem
+ {
+ ITEM_FORMAT_ATTR_CHAR_FONTHEIGHT
+ };
+ MenuItem
+ {
+ Separator = TRUE ;
+ };
+ MenuItem
+ {
+ Identifier = SID_SOURCEVIEW ;
+ HelpID = HID_SOURCEVIEW ;
+ Text = "HTML-Quelltext" ;
+ Text [ ENGLISH ] = "HTML source" ;
+ Text [ dutch ] = "HTML-brontekst" ;
+ Text [ english_us ] = "HTML Source" ;
+ Text [ italian ] = "Testo sorgente HTML" ;
+ Text [ spanish ] = "Texto fuente HTML" ;
+ Text [ french ] = "Texte source HTML" ;
+ Text [ swedish ] = "HTML-källtext" ;
+ Text [ danish ] = "HTML-kildetekst" ;
+ Text [ portuguese ] = "Fonte HTML" ;
+ Text [ portuguese_brazilian ] = "HTML-Quelltext" ;
+ Text[ chinese_simplified ] = "HTML Ô´Îı¾";
+ Text[ russian ] = "Èñõîäíûé òåêñò â ôîðìàòå HTML";
+ Text[ polish ] = "Tekst Ÿród³owy HTML";
+ Text[ japanese ] = "HTML¿°½";
+ Text[ chinese_traditional ] = "HTML ­ì©lÀÉ";
+ Text[ arabic ] = "äÕ ãÕÏÑ HTML";
+ Text[ greek ] = "Êåßìåíï ðñïÝëåõóçò HTML";
+ Text[ korean ] = "HTML ¼Ò½º";
+ Text[ turkish ] = "HTML kaynak kodu";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+
diff --git a/sw/source/ui/uiview/view0.cxx b/sw/source/ui/uiview/view0.cxx
new file mode 100644
index 000000000000..37968263b0c7
--- /dev/null
+++ b/sw/source/ui/uiview/view0.cxx
@@ -0,0 +1,270 @@
+/*************************************************************************
+ *
+ * $RCSfile: view0.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SVX_SRCHDLG_HXX //autogen
+#include <svx/srchdlg.hxx>
+#endif
+#ifndef _IDETEMP_HXX
+#include <basctl/idetemp.hxx>
+#endif
+#ifndef _SFX_TEMPLDLG_HXX //autogen
+#include <sfx2/templdlg.hxx>
+#endif
+#ifndef _UIVWIMP_HXX
+#include <uivwimp.hxx>
+#endif
+
+#ifndef _NAVIPI_HXX //autogen
+#include <navipi.hxx>
+#endif
+#include "view.hxx"
+#include "basesh.hxx"
+#include "docsh.hxx"
+#include "globals.hrc"
+#include "cmdid.h" // FN_ ...
+#include "globdoc.hxx"
+#include "wview.hxx"
+#include "shells.hrc"
+
+#define OLEObjects
+#define SwView
+#define SearchAttributes
+#define ReplaceAttributes
+#define SearchSettings
+#define _ExecSearch ExecSearch
+#define _StateSearch StateSearch
+#define Frames
+#define Graphics
+#define Tables
+#define Controls
+#define GlobalContents
+#define Text
+#define Frame
+#define Graphic
+#define Object
+#define Draw
+#define TextDrawText
+#define TextInTable
+#define ListInText
+#define ListInTable
+#define WebTextInTable
+#define WebListInText
+#define WebListInTable
+#define TextPage
+#include "itemdef.hxx"
+#include <svx/svxslots.hxx>
+#include "swslots.hxx"
+
+using namespace ::com::sun::star;
+using namespace ::rtl;
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+SFX_IMPL_VIEWFACTORY(SwView, SW_RES(STR_NONAME))
+{
+ SFX_VIEW_REGISTRATION(SwDocShell);
+ SFX_VIEW_REGISTRATION(SwGlobalDocShell);
+}
+
+SFX_IMPL_INTERFACE( SwView, SfxViewShell, SW_RES(RID_TOOLS_TOOLBOX) )
+{
+ SFX_CHILDWINDOW_CONTEXT_REGISTRATION(SID_NAVIGATOR);
+ SFX_CHILDWINDOW_REGISTRATION(SfxTemplateDialogWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(SvxSearchDialogWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(FN_REDLINE_ACCEPT);
+ SFX_CHILDWINDOW_REGISTRATION(SID_HYPERLINK_DIALOG);
+ SFX_FEATURED_CHILDWINDOW_REGISTRATION(FN_SYNC_LABELS, 1);
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_TOOLS|
+ SFX_VISIBILITY_STANDARD|SFX_VISIBILITY_SERVER,
+ SW_RES(RID_TOOLS_TOOLBOX) );
+}
+
+TYPEINIT1(SwView,SfxViewShell)
+
+/*-----------------13.12.97 11:06-------------------
+
+--------------------------------------------------*/
+ShellModes SwView::GetShellMode()
+{
+ return pViewImpl->GetShellMode();
+}
+
+/*-----------------13.12.97 11:28-------------------
+
+--------------------------------------------------*/
+view::XSelectionSupplier* SwView::GetUNOObject()
+{
+ return pViewImpl->GetUNOObject();
+}
+
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.72 2000/09/18 16:06:12 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.71 2000/09/04 11:44:56 tbe
+ basicide, isetbrw, si, vcdlged moved from svx to basctl
+
+ Revision 1.70 2000/05/10 11:53:20 os
+ Basic API removed
+
+ Revision 1.69 2000/05/09 14:43:13 os
+ BASIC interface partially removed
+
+ Revision 1.68 2000/04/18 15:02:50 os
+ UNICODE
+
+ Revision 1.67 2000/03/23 07:50:25 os
+ UNO III
+
+ Revision 1.66 2000/02/09 08:07:01 os
+ #72165# hyperlink dialog moved again
+
+ Revision 1.65 1999/09/07 13:56:53 os
+ Insert/EditIndexEntry as FloatingWindow
+
+ Revision 1.64 1999/01/27 08:58:32 OS
+ #56371# TF_ONE51
+
+
+ Rev 1.63 27 Jan 1999 09:58:32 OS
+ #56371# TF_ONE51
+
+ Rev 1.62 15 Jul 1998 12:52:42 OS
+ Navigator an der SwView registrieren #34794#
+
+ Rev 1.61 09 Jun 1998 15:32:20 OM
+ VC-Controls entfernt
+
+ Rev 1.60 02 Jun 1998 15:49:54 OS
+ TF_STARONE raus; GetUNOSelectionObject gestrichen
+
+ Rev 1.59 03 Apr 1998 14:38:18 OS
+ UnoObject fuer die View reaktiviert
+
+ Rev 1.58 16 Mar 1998 16:18:04 OM
+ Aktualisieren-Button kontextsensitiv
+
+ Rev 1.57 15 Mar 1998 15:14:08 OM
+ Synchron-Button
+
+ Rev 1.56 27 Feb 1998 18:25:14 OM
+ Redline-Browser
+
+ Rev 1.55 29 Jan 1998 09:21:06 OS
+ TF_STARONE
+
+ Rev 1.54 16 Dec 1997 12:00:24 OS
+ Impl-Pointer fuer UNO
+
+ Rev 1.53 29 Nov 1997 16:49:14 MA
+ includes
+
+ Rev 1.52 21 Nov 1997 15:00:12 MA
+ includes
+
+ Rev 1.51 03 Nov 1997 13:58:28 MA
+ precomp entfernt
+
+ Rev 1.50 09 Sep 1997 11:33:08 OS
+ TextPage heisst nur Page #43650#
+
+ Rev 1.49 08 Sep 1997 10:52:36 OS
+ DBG_ERROR -> DBG_ASSERT
+
+ Rev 1.48 08 Sep 1997 07:43:38 OS
+ TextTables nur ClassName
+
+ Rev 1.47 04 Sep 1997 18:10:56 MBA
+ GetSelectionObject erzeugt richtiges Objekt auch bei WebView
+
+ Rev 1.46 04 Sep 1997 08:25:24 OS
+ Tables heisst jetzt TextTables, kein GPF wg. fehlender TLB-Angaben
+
+ Rev 1.45 03 Sep 1997 10:52:26 MBA
+ OLEObjects in SVX
+
+ Rev 1.44 29 Aug 1997 12:21:34 MH
+ chg: SfxTypeLib_Impl
+
+ Rev 1.43 05 Aug 1997 16:36:38 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.42 07 Jul 1997 09:35:10 OS
+ Collection fuer GlobalDoc
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/uiview/view1.cxx b/sw/source/ui/uiview/view1.cxx
new file mode 100644
index 000000000000..db15ba1bfb83
--- /dev/null
+++ b/sw/source/ui/uiview/view1.cxx
@@ -0,0 +1,272 @@
+/*************************************************************************
+ *
+ * $RCSfile: view1.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVDPAGV_HXX //autogen
+#include <svx/svdpagv.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SVX_RULER_HXX //autogen
+#include <svx/ruler.hxx>
+#endif
+#ifndef _IDXMRK_HXX
+#include <idxmrk.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _GLOBDOC_HXX
+#include <globdoc.hxx>
+#endif
+#ifndef _NAVIPI_HXX
+#include <navipi.hxx>
+#endif
+#ifndef _FLDWRAP_HXX
+#include <fldwrap.hxx>
+#endif
+#ifndef _REDLNDLG_HXX
+#include <redlndlg.hxx>
+#endif
+#ifndef _DPAGE_HXX
+#include <dpage.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+
+extern int bDocSzUpdated;
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwView::Activate(BOOL bMDIActivate)
+{
+ // aktuelle View anmelden an der DocShell
+ // die View bleibt solange an der DocShell
+ // aktiv bis Sie zerstoert wird oder durch Activate eine
+ // neue gesetzt wird
+ SwDocShell* pDocSh = GetDocShell();
+ if(pDocSh)
+ pDocSh->SetView(this);
+ SwModule* pSwMod = SW_MOD();
+ pSwMod->SetView(this);
+
+ // Dokumentgroesse hat sich geaendert
+ if(!bDocSzUpdated)
+ DocSzChgd(aDocSz);
+
+ pHLineal->SetActive( TRUE );
+ if(pVLineal)
+ pVLineal->SetActive( TRUE );
+
+ if ( bMDIActivate )
+ {
+ pWrtShell->ShGetFcs(FALSE); // Selektionen sichtbar
+
+ if( sSwViewData.Len() )
+ {
+ ReadUserData( sSwViewData, FALSE );
+ if( sNewCrsrPos.Len() )
+ {
+ long nX = sNewCrsrPos.GetToken( 0, ';' ).ToInt32(),
+ nY = sNewCrsrPos.GetToken( 1, ';' ).ToInt32();
+ pWrtShell->SwCrsrShell::SetCrsr( Point( nX, nY ), FALSE );
+ sNewCrsrPos.Erase();
+ }
+ sSwViewData.Erase();
+ }
+
+ AttrChangedNotify(pWrtShell);
+
+ // Flddlg ggf neu initialisieren (z.B. fuer TYP_SETVAR)
+ USHORT nId = SwFldDlgWrapper::GetChildWindowId();
+ SfxViewFrame* pVFrame = GetViewFrame();
+ SwFldDlgWrapper *pWrp = (SwFldDlgWrapper*)pVFrame->GetChildWindow(nId);
+ if (pWrp)
+ pWrp->ReInitDlg(GetDocShell());
+
+ // RedlineDlg ggf neu initialisieren
+ nId = SwRedlineAcceptChild::GetChildWindowId();
+ SwRedlineAcceptChild *pRed = (SwRedlineAcceptChild*)pVFrame->GetChildWindow(nId);
+ if (pRed)
+ pRed->ReInitDlg(GetDocShell());
+
+ // reinit IdxMarkDlg
+ nId = SwInsertIdxMarkWrapper::GetChildWindowId();
+ SwInsertIdxMarkWrapper *pIdxMrk = (SwInsertIdxMarkWrapper*)pVFrame->GetChildWindow(nId);
+ if (pIdxMrk)
+ pIdxMrk->ReInitDlg(*pWrtShell);
+
+ // reinit AuthMarkDlg
+ nId = SwInsertAuthMarkWrapper::GetChildWindowId();
+ SwInsertAuthMarkWrapper *pAuthMrk = (SwInsertAuthMarkWrapper*)pVFrame->
+ GetChildWindow(nId);
+ if (pAuthMrk)
+ pAuthMrk->ReInitDlg(*pWrtShell);
+ }
+ else
+ //Wenigstens das Notify rufen (vorsichtshalber wegen der SlotFilter
+ AttrChangedNotify(pWrtShell);
+
+ SfxViewShell::Activate(bMDIActivate);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void SwView::Deactivate(BOOL bMDIActivate)
+{
+ extern BOOL bFlushCharBuffer ;
+ // Befinden sich noch Zeichen im Input Buffer?
+ if( bFlushCharBuffer )
+ GetEditWin().FlushInBuffer( pWrtShell );
+
+ if( bMDIActivate )
+ {
+ pWrtShell->ShLooseFcs(); // Selektionen unsichtbar
+
+ pHLineal->SetActive( FALSE );
+ if(pVLineal)
+ pVLineal->SetActive( FALSE );
+ }
+ SfxViewShell::Deactivate(bMDIActivate);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwView::MarginChanged()
+{
+ GetWrtShell().SetBrowseBorder( GetMargin() );
+}
+
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.79 2000/09/18 16:06:12 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.78 2000/09/08 08:12:53 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.77 2000/08/15 14:08:20 jp
+ Task #77422#: PrintPreView in the same window
+
+ Revision 1.76 1999/09/15 14:13:05 os
+ dialog for authorities
+
+ Revision 1.75 1999/09/07 13:56:53 os
+ Insert/EditIndexEntry as FloatingWindow
+
+ Revision 1.74 1999/01/25 12:49:14 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+
+ Rev 1.73 25 Jan 1999 13:49:14 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.72 19 Jun 1998 08:54:14 OS
+ VC-Sbx-Reste auch noch raus
+
+ Rev 1.71 19 Jun 1998 07:58:34 MH
+ GetSBxForm entfallen (OS)
+
+ Rev 1.70 09 Jun 1998 15:32:52 OM
+ VC-Controls entfernt
+
+ Rev 1.69 31 Mar 1998 15:31:52 OS
+ SetReadonlyUI von IsAllProtect abhaengig #49077#
+
+ Rev 1.68 27 Mar 1998 14:15:16 OM
+ ChildWindows im Modified-Hdl updaten
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/uiview/view2.cxx b/sw/source/ui/uiview/view2.cxx
new file mode 100644
index 000000000000..8942eb61d2f9
--- /dev/null
+++ b/sw/source/ui/uiview/view2.cxx
@@ -0,0 +1,1587 @@
+/*************************************************************************
+ *
+ * $RCSfile: view2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+#ifndef _APP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _LINKDLG_HXX //autogen
+#include <so3/linkdlg.hxx>
+#endif
+#ifndef _TXTCMP_HXX //autogen
+#include <svtools/txtcmp.hxx>
+#endif
+#ifndef _SVX_ZOOM_HXX //autogen
+#include <svx/zoom.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SVX_TSPTITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SFXEVENT_HXX //autogen
+#include <sfx2/event.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _SFX_DOCFILT_HACK_HXX //autogen
+#include <sfx2/docfilt.hxx>
+#endif
+#ifndef _SFX_FCONTNR_HXX //autogen
+#include <sfx2/fcontnr.hxx>
+#endif
+#ifndef _SVX_SIZEITEM_HXX //autogen
+#include <svx/sizeitem.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFX_TOPFRM_HXX
+#include <sfx2/topfrm.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFXPTITEM_HXX //autogen
+#include <svtools/ptitem.hxx>
+#endif
+#ifndef _SVXLINKMGR_HXX
+#include <svx/linkmgr.hxx>
+#endif
+#ifndef __RSC //autogen
+#include <tools/errinf.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+#ifndef _REDLNDLG_HXX
+#include <redlndlg.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _UIVWIMP_HXX
+#include <uivwimp.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _BASESH_HXX
+#include <basesh.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _FMTINFMT_HXX
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _REDLENUM_HXX
+#include <redlenum.hxx>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx>
+#endif
+#ifndef _DRAWBASE_HXX
+#include <drawbase.hxx>
+#endif
+#ifndef _FRMMGR_HXX
+#include <frmmgr.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _LINENUM_HXX
+#include <linenum.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx>
+#endif
+#ifndef _USRPREF_HXX
+#include <usrpref.hxx>
+#endif
+#ifndef _BOOKMRK_HXX
+#include <bookmrk.hxx>
+#endif
+#ifndef _NAVIPI_HXX
+#include <navipi.hxx>
+#endif
+#ifndef _TOX_HXX
+#include <tox.hxx>
+#endif
+#ifndef _WORKCTRL_HXX
+#include <workctrl.hxx>
+#endif
+#ifndef _SCROLL_HXX
+#include <scroll.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _WVIEW_HXX
+#include <wview.hxx>
+#endif
+#ifndef _TEXTSH_HXX
+#include <textsh.hxx>
+#endif
+#ifndef _TABSH_HXX
+#include <tabsh.hxx>
+#endif
+#ifndef _LISTSH_HXX
+#include <listsh.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _SWSWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _SHELLS_HRC
+#include <shells.hrc>
+#endif
+#ifndef _WEB_HRC
+#include <web.hrc>
+#endif
+#ifndef _VIEW_HRC
+#include <view.hrc>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+
+//Damit die Seitenanzeige in der Statusleiste nicht unnoetig erfolgt.
+static String sLstPg;
+static USHORT nPageCnt = 0;
+const char __FAR_DATA sStatusDelim[] = " : ";
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::scanner;
+
+/*---------------------------------------------------------------------------
+ Beschreibung: String fuer die Seitenanzeige in der Statusbar basteln.
+ ----------------------------------------------------------------------------*/
+
+String SwView::GetPageStr( USHORT nPg, USHORT nLogPg,
+ const String& rDisplay )
+{
+ String aStr( aPageStr );
+ if( rDisplay.Len() )
+ aStr += rDisplay;
+ else
+ aStr += String::CreateFromInt32(nLogPg);
+
+ if( nLogPg && nLogPg != nPg )
+ {
+ aStr.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" "));
+ aStr += String::CreateFromInt32(nPg);
+ }
+ aStr.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" / "));
+ aStr += String::CreateFromInt32( GetWrtShell().GetPageCnt() );
+
+ return aStr;
+}
+
+void __EXPORT SwView::Execute(SfxRequest &rReq)
+{
+ USHORT nSlot = rReq.GetSlot();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem;
+ switch( nSlot )
+ {
+ case SID_CREATE_SW_DRAWVIEW:
+ pWrtShell->GetDoc()->MakeDrawModel();
+ break;
+
+ case FN_LINE_NUMBERING_DLG:
+ {
+ SwLineNumberingDlg *pDlg = new SwLineNumberingDlg(this);
+ pDlg->Execute();
+ delete pDlg;
+ break;
+ }
+ case FN_EDIT_LINK_DLG:
+ EditLinkDlg();
+ break;
+ case FN_REFRESH_VIEW:
+ GetEditWin().Invalidate();
+ break;
+ case FN_PAGEUP:
+ case FN_PAGEUP_SEL:
+ {
+ Rectangle aVis( GetVisArea() );
+ PageUpCrsr(FN_PAGEUP_SEL == nSlot);
+ rReq.SetReturnValue(SfxBoolItem(nSlot,
+ aVis != GetVisArea()));
+ }
+ break;
+ case FN_PAGEDOWN_SEL:
+ case FN_PAGEDOWN:
+ {
+ Rectangle aVis( GetVisArea() );
+ PageDownCrsr(FN_PAGEDOWN_SEL == nSlot);
+ rReq.SetReturnValue(SfxBoolItem(nSlot,
+ aVis != GetVisArea()));
+ }
+ break;
+ case FN_REDLINE_ON:
+ {
+ if (SFX_ITEM_SET == pArgs->GetItemState(nSlot, FALSE, &pItem))
+ {
+ USHORT nOn = ((const SfxBoolItem*)pItem)->GetValue() ? REDLINE_ON : 0;
+ USHORT nMode = pWrtShell->GetRedlineMode();
+ pWrtShell->SetRedlineMode( (nMode & ~REDLINE_ON) | nOn);
+ }
+ }
+ break;
+ case FN_REDLINE_SHOW:
+
+ if (SFX_ITEM_SET == pArgs->GetItemState(nSlot, FALSE, &pItem))
+ {
+ USHORT nMode = ( ~(REDLINE_SHOW_INSERT | REDLINE_SHOW_DELETE)
+ & pWrtShell->GetRedlineMode() ) | REDLINE_SHOW_INSERT;
+ if( ((const SfxBoolItem*)pItem)->GetValue() )
+ nMode |= REDLINE_SHOW_DELETE;
+
+ pWrtShell->SetRedlineMode( nMode );
+ }
+ break;
+ case FN_REDLINE_ACCEPT:
+ GetViewFrame()->ToggleChildWindow(FN_REDLINE_ACCEPT);
+ break;
+
+ case SID_DOCUMENT_COMPARE:
+ case SID_DOCUMENT_MERGE:
+ {
+ String sFileName, sFilterName;
+ INT16 nVersion = 0;
+
+ if( pArgs )
+ {
+ if( SFX_ITEM_SET == pArgs->GetItemState( SID_FILE_NAME, FALSE, &pItem ))
+ sFileName = ((const SfxStringItem*)pItem)->GetValue();
+
+ if( SFX_ITEM_SET == pArgs->GetItemState( SID_FILTER_NAME, FALSE, &pItem ))
+ sFilterName = ((const SfxStringItem*)pItem)->GetValue();
+
+ if( SFX_ITEM_SET == pArgs->GetItemState( SID_VERSION, FALSE, &pItem ))
+ nVersion = ((const SfxInt16Item *)pItem)->GetValue();
+ }
+
+ long nFound = InsertDoc( nSlot, sFileName, sFilterName, nVersion );
+ rReq.SetReturnValue( SfxInt32Item( nSlot, nFound ));
+
+ if (nFound > 0) // Redline-Browser anzeigen
+ {
+ SfxViewFrame* pVFrame = GetViewFrame();
+ pVFrame->ShowChildWindow(FN_REDLINE_ACCEPT);
+
+ // RedlineDlg neu initialisieren
+ USHORT nId = SwRedlineAcceptChild::GetChildWindowId();
+ SwRedlineAcceptChild *pRed = (SwRedlineAcceptChild*)
+ pVFrame->GetChildWindow(nId);
+ if (pRed)
+ pRed->ReInitDlg(GetDocShell());
+ }
+ }
+ break;
+ case FN_SYNC_LABELS:
+ GetViewFrame()->ShowChildWindow(FN_SYNC_LABELS, TRUE);
+ break;
+ case FN_ESCAPE:
+ if ( pWrtShell->HasDrawView() && pWrtShell->GetDrawView()->IsDragObj() )
+ {
+ pWrtShell->BreakDrag();
+ pWrtShell->EnterSelFrmMode();
+ }
+ else if ( pWrtShell->IsDrawCreate() )
+ {
+ GetDrawFuncPtr()->BreakCreate();
+ AttrChangedNotify(pWrtShell); // ggf Shellwechsel...
+ }
+ else if ( pWrtShell->HasSelection() || IsDrawMode() )
+ {
+ LeaveDrawCreate();
+ pWrtShell->EnterStdMode();
+ AttrChangedNotify(pWrtShell); // ggf Shellwechsel...
+ }
+ else if ( GetEditWin().GetApplyTemplate() )
+ GetEditWin().SetApplyTemplate(SwApplyTemplate());
+ else if( ((SfxObjectShell*)GetDocShell())->GetInPlaceObject() &&
+ ((SfxObjectShell*)GetDocShell())->GetInPlaceObject()->GetIPClient() )
+ {
+ ErrCode nErr = GetDocShell()->DoInPlaceActivate( FALSE );
+ if ( nErr )
+ ErrorHandler::HandleError( nErr );
+ }
+ else if ( GetEditWin().IsChainMode() )
+ GetEditWin().SetChainMode( FALSE );
+//JP 10.06.99: warten auf SLOT von MBA
+// else if(Application::GetAppWindow()->IsFullScreenView())
+// GetViewFrame()->GetDispatcher()->Execute(SID_WIN_FULLSCREEN);
+ break;
+ case SID_ATTR_BORDER_INNER:
+ case SID_ATTR_BORDER_OUTER:
+ case SID_ATTR_BORDER_SHADOW:
+ if(pArgs)
+ pWrtShell->SetAttr(*pArgs);
+ break;
+
+ case SID_ATTR_PAGE:
+ case SID_ATTR_PAGE_SIZE:
+ case SID_ATTR_PAGE_MAXSIZE:
+ case SID_ATTR_PAGE_PAPERBIN:
+ case SID_ATTR_PAGE_EXT1:
+ case FN_PARAM_FTN_INFO:
+ {
+ if(pArgs)
+ {
+ const USHORT nCurIdx = pWrtShell->GetCurPageDesc();
+ SwPageDesc aPageDesc( pWrtShell->GetPageDesc( nCurIdx ) );
+ ::ItemSetToPageDesc( *pArgs, aPageDesc,
+ pWrtShell );
+ // Den Descriptor der Core veraendern.
+ pWrtShell->ChgPageDesc( nCurIdx, aPageDesc );
+ }
+ }
+ break;
+ case FN_NAVIGATION_PI_GOTO_PAGE:
+ {
+ SfxViewFrame* pVFrame = GetViewFrame();
+ SfxChildWindow* pCh = pVFrame->GetChildWindow( SID_NAVIGATOR );
+ if(!pCh)
+ {
+ pVFrame->ToggleChildWindow( SID_NAVIGATOR );
+ pCh = pVFrame->GetChildWindow( SID_NAVIGATOR );
+
+ }
+ ((SwNavigationPI*) pCh->GetContextWindow(SW_MOD()))->GotoPage();
+ }
+ break;
+ case FN_EDIT_CURRENT_TOX:
+ {
+ GetViewFrame()->GetDispatcher()->Execute(
+ FN_INSERT_MULTI_TOX, SFX_CALLMODE_ASYNCHRON);
+ }
+ break;
+ case FN_UPDATE_CUR_TOX:
+ {
+ const SwTOXBase* pBase = pWrtShell->GetCurTOX();
+ if(pBase)
+ {
+ pWrtShell->StartAction();
+ if(TOX_INDEX == pBase->GetType())
+ pWrtShell->ApplyAutoMark();
+ pWrtShell->UpdateTableOf( *pBase );
+ pWrtShell->EndAction();
+ }
+ }
+ break;
+ case FN_UPDATE_TOX:
+ {
+ pWrtShell->StartAction();
+ pWrtShell->EnterStdMode();
+ FASTBOOL bOldCrsrInReadOnly = pWrtShell->IsReadOnlyAvailable();
+ pWrtShell->SetReadOnlyAvailable( TRUE );
+
+ for( USHORT i = 0; i < 2; ++i )
+ {
+ USHORT nCount = pWrtShell->GetTOXCount();
+ if( 1 == nCount )
+ ++i;
+
+ while( pWrtShell->GotoPrevTOXBase() )
+ ; // aufs erste Verzeichnis springen
+
+ // falls wir nicht mehr in einem stehen, dann zum naechsten
+ // springen.
+ const SwTOXBase* pBase = pWrtShell->GetCurTOX();
+ if( !pBase )
+ {
+ pWrtShell->GotoNextTOXBase();
+ pBase = pWrtShell->GetCurTOX();
+ }
+
+ BOOL bAutoMarkApplied = FALSE;
+ while( pBase )
+ {
+ if(TOX_INDEX == pBase->GetType() && !bAutoMarkApplied)
+ {
+ pWrtShell->ApplyAutoMark();
+ bAutoMarkApplied = TRUE;
+ }
+ // JP 15.07.96: das pBase wird nur fuer die Schnittstelle
+ // benoetigt. Muss mal umgetstellt werden!!!
+ pWrtShell->UpdateTableOf( *pBase );
+
+ if( pWrtShell->GotoNextTOXBase() )
+ pBase = pWrtShell->GetCurTOX();
+ else
+ pBase = 0;
+ }
+ }
+ pWrtShell->SetReadOnlyAvailable( bOldCrsrInReadOnly );
+ pWrtShell->EndAction();
+ }
+ break;
+ case SID_ATTR_BRUSH:
+ {
+ if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(RES_BACKGROUND, FALSE, &pItem))
+ {
+ const USHORT nCurIdx = pWrtShell->GetCurPageDesc();
+ SwPageDesc aDesc( pWrtShell->GetPageDesc( nCurIdx ));
+ SwFrmFmt& rMaster = aDesc.GetMaster();
+ rMaster.SetAttr(*pItem);
+ pWrtShell->ChgPageDesc( nCurIdx, aDesc);
+ }
+ }
+ break;
+ case SID_CLEARHISTORY:
+ {
+ pWrtShell->DelAllUndoObj();
+ }
+ break;
+ case SID_UNDO:
+ {
+ pShell->ExecuteSlot(rReq);
+ }
+ break;
+ case FN_INSERT_CTRL:
+ case FN_INSERT_OBJ_CTRL:
+ {
+ if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(nSlot, FALSE, &pItem))
+ {
+ USHORT nValue = ((SfxUInt16Item*)pItem)->GetValue();
+ switch ( nSlot )
+ {
+ case FN_INSERT_CTRL:
+ {
+ BOOL bWeb = 0 != PTR_CAST(SwWebView, this);
+ if(bWeb)
+ SwView::nWebInsertCtrlState = nValue;
+ else
+ SwView::nInsertCtrlState = nValue;
+ }
+ break;
+ case FN_INSERT_OBJ_CTRL: SwView::nInsertObjectCtrlState = nValue ;break;
+ }
+
+ }
+ GetViewFrame()->GetBindings().Invalidate( nSlot );
+ }
+ break;
+#if defined WIN || defined WNT || defined UNX
+ case SID_TWAIN_SELECT:
+ case SID_TWAIN_TRANSFER:
+ GetViewImpl()->ExcuteScan(nSlot);
+ break;
+#endif
+
+ case SID_ATTR_DEFTABSTOP:
+ {
+ if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(SID_ATTR_DEFTABSTOP, FALSE, &pItem))
+ {
+ SvxTabStopItem aDefTabs( 0, 0 );
+ USHORT nTab = ((const SfxUInt16Item*)pItem)->GetValue();
+ MakeDefTabs( nTab, aDefTabs );
+ pWrtShell->SetDefault( aDefTabs );
+ }
+ }
+ break;
+ case SID_ATTR_LANGUAGE:
+ {
+ if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(SID_ATTR_LANGUAGE, FALSE, &pItem))
+ {
+ SvxLanguageItem aLang(((SvxLanguageItem*)pItem)->GetLanguage(), RES_CHRATR_LANGUAGE);
+ pWrtShell->SetDefault( aLang );
+ }
+ }
+ break;
+ case FN_INSERT_HEADER:
+ pWrtShell->SetHeadInBrowse(!pWrtShell->IsHeadInBrowse());
+ break;
+ case FN_INSERT_FOOTER:
+ pWrtShell->SetFootInBrowse(!pWrtShell->IsFootInBrowse());
+ break;
+ case FN_SCROLL_NEXT_PREV:
+ if(pArgs && pArgs->GetItemState(FN_SCROLL_NEXT_PREV, FALSE, &pItem))
+ {
+ // hier sollen nur die Handler der PageUp/DownButtons gerufen werden
+ BOOL bNext = ((const SfxBoolItem*)pItem)->GetValue();
+ MoveNavigation(bNext);
+ }
+ break;
+ case SID_JUMPTOMARK:
+ if( pArgs && SFX_ITEM_SET == pArgs->GetItemState(SID_JUMPTOMARK, FALSE, &pItem))
+ JumpToSwMark( (( const SfxStringItem*)pItem)->GetValue() );
+ break;
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: SeitenNr-Feld invalidieren
+ --------------------------------------------------------------------*/
+
+void SwView::UpdatePageNums(USHORT nPhyNum, USHORT nVirtNum, const String& rPgStr)
+{
+ String sTemp(GetPageStr( nPhyNum, nVirtNum, rPgStr ));
+ if ( sLstPg != sTemp )
+ {
+ sLstPg = sTemp;
+ const SfxStringItem aTmp( FN_STAT_PAGE,
+ sLstPg);
+ SfxBindings &rBnd = GetViewFrame()->GetBindings();
+ rBnd.SetState( aTmp );
+ rBnd.Update( FN_STAT_PAGE );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Status der Stauszeile
+ --------------------------------------------------------------------*/
+
+
+void SwView::StateStatusLine(SfxItemSet &rSet)
+{
+ SwWrtShell& rShell = GetWrtShell();
+
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ ASSERT( nWhich, "leeres Set");
+
+ while( nWhich )
+ {
+ switch( nWhich )
+ {
+ case FN_STAT_PAGE:
+/*
+//JP 07.01.00: is a nice feature - show the selektion of DrawObjects
+ if( rShell.IsObjSelected()
+//??? || rShell.IsFrmSelected()
+ )
+ {
+ String sDisplay( rShell.GetDrawView()->GetMarkList().
+ GetMarkDescription() );
+ rSet.Put( SfxStringItem( FN_STAT_PAGE, sDisplay ));
+ }
+ else
+*/ {
+ // Anzahl der Seiten, log. SeitenNr. SeitenNr ermitteln
+ USHORT nPage, nLogPage;
+ String sDisplay;
+ rShell.GetPageNumber( -1, rShell.IsCrsrVisible(), nPage, nLogPage, sDisplay );
+ rSet.Put( SfxStringItem( FN_STAT_PAGE,
+ GetPageStr( nPage, nLogPage, sDisplay) ));
+
+ USHORT nCnt = GetWrtShell().GetPageCnt();
+ if (nPageCnt != nCnt) // Basic benachrichtigen
+ {
+ nPageCnt = nCnt;
+ SFX_APP()->NotifyEvent(SfxEventHint(SW_EVENT_PAGE_COUNT, GetViewFrame()->GetObjectShell()), FALSE);
+ }
+ }
+ break;
+ case FN_STAT_TEMPLATE:
+ {
+ rSet.Put(SfxStringItem( FN_STAT_TEMPLATE,
+ rShell.GetCurPageStyle(FALSE)));
+
+ }
+ break;
+ case SID_ATTR_ZOOM:
+ {
+ if ( GetDocShell()->GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
+ {
+ const SwViewOption* pVOpt = rShell.GetViewOptions();
+ SvxZoomType eZoom = (SvxZoomType) pVOpt->GetZoomType();
+ SvxZoomItem aZoom(eZoom,
+ pVOpt->GetZoom());
+ if(pWrtShell->IsBrowseMode())
+ {
+ aZoom.SetValueSet(
+ SVX_ZOOM_ENABLE_50|
+ SVX_ZOOM_ENABLE_75|
+ SVX_ZOOM_ENABLE_100|
+ SVX_ZOOM_ENABLE_150|
+ SVX_ZOOM_ENABLE_200);
+ }
+ rSet.Put( aZoom );
+ }
+ else
+ rSet.DisableItem( SID_ATTR_ZOOM );
+ }
+ break;
+ case SID_ATTR_POSITION:
+ case SID_ATTR_SIZE:
+ {
+ if( !rShell.IsFrmSelected() && !rShell.IsObjSelected() )
+ SwBaseShell::_SetFrmMode( FLY_DRAG_END );
+ else
+ {
+ USHORT nFrameMode = SwBaseShell::GetFrmMode();
+ if ( nFrameMode == FLY_DRAG_START || nFrameMode == FLY_DRAG )
+ {
+ if ( nWhich == SID_ATTR_POSITION )
+ rSet.Put( SfxPointItem( SID_ATTR_POSITION,
+ rShell.GetAnchorObjDiff()));
+ else
+ rSet.Put( SvxSizeItem( SID_ATTR_SIZE,
+ rShell.GetObjSize()));
+ }
+ }
+ }
+ break;
+ case SID_TABLE_CELL:
+
+ if( rShell.IsFrmSelected() || rShell.IsObjSelected() )
+ {
+ rSet.Put( SvxSizeItem( SID_TABLE_CELL, rShell.GetObjSize()));
+ }
+ else
+ {
+ String sStr;
+ if( rShell.IsCrsrInTbl() )
+ sStr = rShell.GetBoxNms();
+ else
+ {
+ const SwSection* pCurrSect = rShell.GetCurrSection();
+ if( pCurrSect )
+ {
+ switch( pCurrSect->GetType() )
+ {
+ case TOX_HEADER_SECTION:
+ case TOX_CONTENT_SECTION:
+ {
+ const SwTOXBase* pTOX = pWrtShell->GetCurTOX();
+ if( pTOX )
+ sStr = pTOX->GetTOXName();
+ else
+ {
+ ASSERT( !this,
+ "was ist das fuer ein Verzeichnis?" );
+ sStr = pCurrSect->GetName();
+ }
+ }
+ break;
+ default:
+ sStr = pCurrSect->GetName();
+ break;
+ }
+ }
+ }
+ const SwNumRule* pNumRule = rShell.GetCurNumRule();
+ if (pNumRule) // Cursor in Numerierung
+ {
+ BYTE nNumLevel = rShell.GetNumLevel();
+ if( NO_NUM > nNumLevel && MAXLEVEL >
+ ( nNumLevel = GetRealLevel( nNumLevel )) )
+ {
+ if( sStr.Len() )
+ sStr.AppendAscii(sStatusDelim);
+ sStr += SW_RESSTR(STR_NUM_LEVEL);
+ sStr += String::CreateFromInt32( nNumLevel + 1 );
+ if(!pNumRule->IsAutoRule())
+ {
+ SfxItemSet aSet(GetPool(),
+ RES_PARATR_NUMRULE, RES_PARATR_NUMRULE);
+ rShell.GetAttr(aSet);
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_AVAILABLE <=
+ aSet.GetItemState(RES_PARATR_NUMRULE, TRUE, &pItem))
+ {
+ const String& rNumStyle =
+ ((const SfxStringItem*)pItem)->GetValue();
+ if(rNumStyle.Len())
+ {
+ sStr.AppendAscii(sStatusDelim);
+ sStr += rNumStyle;
+ }
+ }
+ }
+ }
+ }
+
+ if( rShell.HasReadonlySel() )
+ {
+ if( sStr.Len() )
+ sStr.InsertAscii( sStatusDelim, 0 );
+ sStr.Insert( SW_RESSTR( STR_READONLY_SEL ), 0 );
+ }
+ if( sStr.Len() )
+ rSet.Put( SfxStringItem( SID_TABLE_CELL, sStr ));
+ }
+ break;
+ case FN_STAT_SELMODE:
+ {
+ if(rShell.IsStdMode())
+ rSet.Put(SfxUInt16Item(FN_STAT_SELMODE, 0));
+ else if(rShell.IsAddMode())
+ rSet.Put(SfxUInt16Item(FN_STAT_SELMODE, 2));
+ else
+ rSet.Put(SfxUInt16Item(FN_STAT_SELMODE, 1));
+ break;
+ }
+ case SID_ATTR_INSERT:
+ if( rShell.IsRedlineOn() )
+ rSet.DisableItem( nWhich );
+ else
+ {
+ rSet.Put(SfxBoolItem(SID_ATTR_INSERT,rShell.IsInsMode()));
+ }
+ break;
+ case FN_STAT_HYPERLINKS:
+ {
+ rSet.Put(SfxBoolItem(FN_STAT_HYPERLINKS,
+ pWrtShell->GetViewOptions()->IsExecHyperlinks()));
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Execute fuer die Stauszeile
+ --------------------------------------------------------------------*/
+
+
+void SwView::ExecuteStatusLine(SfxRequest &rReq)
+{
+ SwWrtShell &rSh = GetWrtShell();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem;
+ BOOL bUp = FALSE;
+ USHORT nWhich = rReq.GetSlot();
+ switch( nWhich )
+ {
+ case FN_STAT_PAGE:
+ {
+ GetViewFrame()->GetDispatcher()->Execute( SID_NAVIGATOR,
+ SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD );
+ }
+ break;
+
+ case FN_STAT_BOOKMARK:
+ if ( pArgs )
+ {
+ if (SFX_ITEM_SET == pArgs->GetItemState( nWhich, TRUE, &pItem))
+ {
+ USHORT nDest;
+ nDest = ((const SfxUInt16Item *)pItem)->GetValue();
+ rSh.EnterStdMode();
+ rSh.GotoBookmark( nDest );
+ }
+ }
+ break;
+
+ case FN_STAT_TEMPLATE:
+ {
+ GetViewFrame()->GetDispatcher()->Execute(FN_FORMAT_PAGE_DLG,
+ SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD );
+ }
+ break;
+ case SID_ATTR_ZOOM:
+ {
+ if ( GetDocShell()->GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
+ {
+ const SfxItemSet *pSet = 0;
+ SvxZoomDialog *pDlg = 0;
+ if ( pArgs )
+ pSet = pArgs;
+ else if ( GetDocShell()->GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
+ {
+ SfxItemSet aCoreSet(pShell->GetPool(), SID_ATTR_ZOOM, SID_ATTR_ZOOM);
+ SvxZoomItem aZoom( (SvxZoomType)rSh.GetViewOptions()->GetZoomType(),
+ rSh.GetViewOptions()->GetZoom() );
+
+ if(rSh.IsBrowseMode())
+ {
+ aZoom.SetValueSet(
+ SVX_ZOOM_ENABLE_50|
+ SVX_ZOOM_ENABLE_75|
+ SVX_ZOOM_ENABLE_100|
+ SVX_ZOOM_ENABLE_150|
+ SVX_ZOOM_ENABLE_200);
+ }
+ aCoreSet.Put( aZoom );
+
+ pDlg = new SvxZoomDialog( &GetViewFrame()->GetWindow(), aCoreSet );
+ pDlg->SetLimits( MINZOOM, MAXZOOM );
+
+ if( pDlg->Execute() != RET_CANCEL )
+ pSet = pDlg->GetOutputItemSet();
+ }
+
+ if ( pSet && SFX_ITEM_SET == pSet->GetItemState(SID_ATTR_ZOOM, TRUE, &pItem))
+ {
+ enum SvxZoomType eType = ((const SvxZoomItem *)pItem)->GetType();
+ SetZoom( eType, ((const SvxZoomItem *)pItem)->GetValue() );
+ }
+ delete pDlg;
+ bUp = TRUE;
+ }
+ }
+ break;
+
+ case SID_ATTR_SIZE:
+ {
+ ULONG nId = FN_INSERT_FIELD;
+ if( rSh.IsCrsrInTbl() )
+ nId = FN_FORMAT_TABLE_DLG;
+ else if( rSh.GetCurTOX() )
+ nId = FN_INSERT_MULTI_TOX;
+ else if( rSh.GetCurrSection() )
+ nId = FN_EDIT_REGION;
+ else
+ {
+ const SwNumRule* pNumRule = rSh.GetCurNumRule();
+ if( pNumRule ) // Cursor in Numerierung
+ {
+ if( pNumRule->IsAutoRule() )
+ nId = FN_NUMBER_BULLETS;
+ else
+ {
+ // Dialog vom Gestalter starten ;-)
+ nId = 0;
+ }
+ }
+ else if( rSh.IsFrmSelected() )
+ nId = FN_FORMAT_FRAME_DLG;
+ else if( rSh.IsObjSelected() )
+ nId = SID_ATTR_TRANSFORM;
+ }
+ if( nId )
+ GetViewFrame()->GetDispatcher()->Execute( nId, SFX_CALLMODE_SYNCHRON |
+ SFX_CALLMODE_RECORD );
+ }
+ break;
+
+ case FN_STAT_SELMODE:
+ {
+ if ( pArgs )
+ {
+ if (SFX_ITEM_SET == pArgs->GetItemState( nWhich, TRUE, &pItem))
+ {
+ switch ( ((const SfxUInt16Item *)pItem)->GetValue() )
+ {
+ case 0: rSh.EnterStdMode(); break;
+ case 1: rSh.EnterExtMode(); break;
+ case 2: rSh.EnterAddMode(); break;
+ }
+ }
+ }
+ else
+ {
+
+ if( !rSh.IsAddMode() && !rSh.IsExtMode() )
+ rSh.ToggleExtMode();
+ else if ( rSh.IsExtMode() )
+ {
+ rSh.ToggleExtMode();
+ rSh.ToggleAddMode();
+ }
+ else if ( rSh.IsAddMode() )
+ rSh.ToggleAddMode();
+ }
+ bUp = TRUE;
+ break;
+ }
+ case FN_SET_ADD_MODE:
+ rSh.ToggleAddMode();
+ nWhich = FN_STAT_SELMODE;
+ bUp = TRUE;
+ break;
+ case FN_SET_EXT_MODE:
+ rSh.ToggleExtMode();
+ nWhich = FN_STAT_SELMODE;
+ bUp = TRUE;
+ break;
+ case SID_ATTR_INSERT:
+ rSh.ToggleInsMode();
+ bUp = TRUE;
+ break;
+
+ case FN_STAT_HYPERLINKS:
+ {
+ SwViewOption aOpt( *rSh.GetViewOptions() );
+ BOOL bIs = aOpt.IsExecHyperlinks();
+ BOOL bSet;
+ if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(nWhich, FALSE, &pItem))
+ bSet = ((const SfxBoolItem*)pItem)->GetValue();
+ else
+ bSet = !bIs;
+ if(bIs != bSet)
+ {
+ aOpt.SetExecHyperlinks(bSet);
+ SW_MOD()->ApplyUsrPref(aOpt, this);
+ bUp = TRUE;
+ }
+ }
+ break;
+ }
+ if ( bUp )
+ {
+ SfxBindings &rBnd = GetViewFrame()->GetBindings();
+ rBnd.Invalidate(nWhich);
+ rBnd.Update(nWhich);
+ }
+}
+
+
+
+
+void SwView::InsFrmMode(USHORT nCols)
+{
+ if ( pWrtShell->HasWholeTabSelection() )
+ {
+ SwFlyFrmAttrMgr aMgr( TRUE, pWrtShell, FRMMGR_TYPE_TEXT );
+
+ const SwFrmFmt &rPageFmt =
+ pWrtShell->GetPageDesc(pWrtShell->GetCurPageDesc()).GetMaster();
+ SwTwips lWidth = rPageFmt.GetFrmSize().GetWidth();
+ const SvxLRSpaceItem &rLR = rPageFmt.GetLRSpace();
+ lWidth -= rLR.GetLeft() + rLR.GetRight();
+ aMgr.SetSize(Size(lWidth, aMgr.GetSize().Height()));
+ if(nCols > 1)
+ {
+ SwFmtCol aCol;
+ aCol.Init( nCols, aCol.GetGutterWidth(), aCol.GetWishWidth() );
+ aMgr.SetCol( aCol );
+ }
+ aMgr.InsertFlyFrm();
+ }
+ else
+ GetEditWin().InsFrm(nCols);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Links bearbeiten
+ --------------------------------------------------------------------*/
+
+void SwView::EditLinkDlg()
+{
+ BOOL bWeb = 0 != PTR_CAST(SwWebView, this);
+ SvBaseLinksDialog aSvBaseLinksDialog( &GetViewFrame()->GetWindow(), &GetWrtShell().GetLinkManager()
+#if SUPD>355
+,bWeb
+#endif
+ );
+ aSvBaseLinksDialog.Execute();
+/*
+ SwLinkDlg* pDlg = new SwLinkDlg(GetFrameWindow());
+ pDlg->SetShell(&GetWrtShell());
+ pDlg->Execute();
+
+ DELETEZ(pDlg);
+*/
+}
+
+BOOL SwView::JumpToSwMark( const String& rMark )
+{
+ BOOL bRet = FALSE;
+ if( rMark.Len() )
+ {
+ // wir wollen den Bookmark aber am oberen Rand haben
+ BOOL bSaveCC = IsCrsrAtCenter();
+ BOOL bSaveCT = IsCrsrAtTop();
+ SetCrsrAtTop( TRUE );
+
+ //JP 27.04.98: Bug 49786
+ // Damit in FrameSet auch gescrollt werden kann, muss die
+ // entsprechende Shell auch das Focus-Flag gesetzt haben!
+ BOOL bHasShFocus = pWrtShell->HasShFcs();
+ if( !bHasShFocus )
+ pWrtShell->ShGetFcs( FALSE );
+
+ const SwFmtINetFmt* pINet;
+ String sCmp, sMark( INetURLObject::decode( rMark, INET_HEX_ESCAPE,
+ INetURLObject::DECODE_WITH_CHARSET,
+ RTL_TEXTENCODING_UTF8 ));
+
+ xub_StrLen nLastPos, nPos = sMark.Search( cMarkSeperator );
+ if( STRING_NOTFOUND != nPos )
+ while( STRING_NOTFOUND != ( nLastPos =
+ sMark.Search( cMarkSeperator, nPos + 1 )) )
+ nPos = nLastPos;
+
+ if( STRING_NOTFOUND != nPos &&
+ ( sCmp = sMark.Copy( nPos + 1 ) ).EraseAllChars().Len() )
+ {
+ String sName( sMark.Copy( 0, nPos ) );
+ sCmp.ToLowerAscii();
+ FlyCntType eFlyType = FLYCNTTYPE_ALL;
+
+ if( COMPARE_EQUAL == sCmp.CompareToAscii( pMarkToRegion ) )
+ {
+ pWrtShell->EnterStdMode();
+ bRet = pWrtShell->GotoRegion( sName );
+ }
+ else if( COMPARE_EQUAL == sCmp.CompareToAscii( pMarkToOutline ) )
+ {
+ pWrtShell->EnterStdMode();
+ bRet = pWrtShell->GotoOutline( sName );
+ }
+ else if( COMPARE_EQUAL == sCmp.CompareToAscii( pMarkToFrame ) )
+ eFlyType = FLYCNTTYPE_FRM;
+ else if( COMPARE_EQUAL == sCmp.CompareToAscii( pMarkToGraphic ) )
+ eFlyType = FLYCNTTYPE_GRF;
+ else if( COMPARE_EQUAL == sCmp.CompareToAscii( pMarkToOLE ) )
+ eFlyType = FLYCNTTYPE_OLE;
+ else if( COMPARE_EQUAL == sCmp.CompareToAscii( pMarkToTable ) )
+ {
+ pWrtShell->EnterStdMode();
+ bRet = pWrtShell->GotoTable( sName );
+ }
+ else if( COMPARE_EQUAL == sCmp.CompareToAscii( pMarkToText ) )
+ {
+ // Normale Textsuche
+ pWrtShell->EnterStdMode();
+ SearchParam aParam( sName, SearchParam::SRCH_NORMAL,
+ TRUE, FALSE, FALSE );
+
+ if( pWrtShell->SearchPattern( aParam, DOCPOS_START, DOCPOS_END ))
+ {
+ pWrtShell->EnterStdMode(); // Selektion wieder aufheben
+ bRet = TRUE;
+ }
+ }
+ else if( USHRT_MAX != ( nPos = pWrtShell->FindBookmark( sMark ) ))
+ pWrtShell->GotoBookmark( nPos, FALSE, TRUE ), bRet = TRUE;
+ else if( 0 != ( pINet = pWrtShell->FindINetAttr( sMark ) ))
+ bRet = pWrtShell->GotoINetAttr( *pINet->GetTxtINetFmt() );
+
+ // fuer alle Arten von Flys
+ if( FLYCNTTYPE_ALL != eFlyType && pWrtShell->GotoFly( sName, eFlyType ))
+ {
+ bRet = TRUE;
+ if( FLYCNTTYPE_FRM == eFlyType )
+ {
+ // TextFrames: Cursor in den Frame setzen
+ pWrtShell->UnSelectFrm();
+ pWrtShell->LeaveSelFrmMode();
+ }
+ else
+ {
+ pWrtShell->HideCrsr();
+ pWrtShell->EnterSelFrmMode();
+ }
+ }
+ }
+ else if( USHRT_MAX != ( nPos = pWrtShell->FindBookmark( sMark ) ))
+ pWrtShell->GotoBookmark( nPos, FALSE, TRUE ), bRet = TRUE;
+ else if( 0 != ( pINet = pWrtShell->FindINetAttr( sMark ) ))
+ bRet = pWrtShell->GotoINetAttr( *pINet->GetTxtINetFmt() );
+
+ // ViewStatus wieder zurueck setzen
+ SetCrsrAtTop( bSaveCT, bSaveCC );
+
+ if( !bHasShFocus )
+ pWrtShell->ShLooseFcs();
+ }
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Links bearbeiten
+ --------------------------------------------------------------------*/
+
+long SwView::InsertDoc( USHORT nSlotId, const String& rFileName,
+ const String& rFilterName, INT16 nVersion )
+{
+ BOOL bInsert = FALSE, bCompare = FALSE, bMerge = FALSE;
+ long nFound = 0;
+
+ switch( nSlotId )
+ {
+ case SID_DOCUMENT_MERGE: bMerge = TRUE; break;
+ case SID_DOCUMENT_COMPARE: bCompare = TRUE; break;
+ case SID_INSERTDOC: bInsert = TRUE; break;
+
+ default:
+ ASSERT( !this, "Unbekannte SlotId!" );
+ bInsert = TRUE;
+ nSlotId = SID_INSERTDOC;
+ break;
+ }
+
+ SfxMedium* pMed = 0;
+ SwDocShell* pDocSh = GetDocShell();
+ if( rFileName.Len() )
+ {
+ const SfxFilter* pFilter = 0;
+
+ SfxObjectFactory& rFact = pDocSh->GetFactory();
+ const USHORT nCount = rFact.GetFilterCount();
+ for( USHORT i = 0; i < nCount; i++ )
+ {
+ const SfxFilter* pFlt = rFact.GetFilter( i );
+ if( pFlt->GetName() == rFilterName ||
+ pFlt->GetFilterName() == rFilterName )
+ {
+ pFilter = pFlt;
+ break;
+ }
+ }
+ if ( !pFilter )
+ {
+ pMed = new SfxMedium(rFileName, STREAM_READ, TRUE, TRUE, 0, 0 );
+ SfxFilterMatcher aMatcher( rFact.GetFilterContainer() );
+ ErrCode nErr = aMatcher.GuessFilter( *pMed, &pFilter, FALSE );
+ if ( nErr )
+ DELETEZ(pMed);
+ else
+ pMed->SetFilter( pFilter );
+ }
+ else
+ pMed = new SfxMedium(rFileName, STREAM_READ, TRUE, TRUE, pFilter, 0);
+ }
+ else
+ {
+ pMed = SFX_APP()->InsertDocumentDialog(0, pDocSh->GetFactory());
+ }
+ if( !pMed )
+ return -1;
+
+ if( bInsert )
+ {
+ SfxObjectShellRef aRef( pDocSh );
+
+ pDocSh->RegisterTransfer( *pMed );
+ pMed->DownLoad(); // ggfs. den DownLoad anstossen
+ if( aRef.Is() && 1 < aRef->GetRefCount() ) // noch gueltige Ref?
+ {
+ SwReader* pRdr;
+ Reader *pRead = pDocSh->StartConvertFrom( *pMed, &pRdr, pWrtShell );
+ if( pRead )
+ {
+ String sTmpBaseURL( INetURLObject::GetBaseURL() );
+ INetURLObject::SetBaseURL( pMed->GetName() );
+
+ ULONG nErrno;
+ { //Scope for SwWait-Object, to be able to execute slots
+ //outside this scope.
+ SwWait aWait( *GetDocShell(), TRUE );
+ pWrtShell->StartAllAction();
+ if ( pWrtShell->HasSelection() )
+ pWrtShell->DelRight(); // Selektionen loeschen
+ nErrno = pRdr->Read( *pRead ); // und Dokument einfuegen
+ delete pRdr;
+
+ INetURLObject::SetBaseURL( sTmpBaseURL );
+ }
+
+ // ggfs. alle Verzeichnisse updaten:
+ if( pWrtShell->IsUpdateTOX() )
+ {
+ SfxRequest aReq( FN_UPDATE_TOX, SFX_CALLMODE_SLOT, GetPool() );
+ Execute( aReq );
+ pWrtShell->SetUpdateTOX( FALSE ); // wieder zurueck setzen
+ }
+
+ pWrtShell->EndAllAction();
+ if( nErrno )
+ {
+ ErrorHandler::HandleError( nErrno );
+ nFound = IsError( nErrno ) ? -1 : 0;
+ }
+ else
+ nFound = 0;
+ }
+ }
+ }
+ else
+ {
+ SfxObjectShellRef xDocSh;
+
+extern int lcl_FindDocShell( SfxObjectShellRef& xDocSh,
+ const String& rFileName, const String& rPasswd,
+ String& rFilter, INT16 nVersion,
+ SwDocShell* pDestSh );
+
+ String sFltNm;
+ int nRet = lcl_FindDocShell( xDocSh, pMed->GetName(), aEmptyStr,
+ sFltNm, nVersion, pDocSh );
+ if( nRet )
+ {
+ SwWait aWait( *GetDocShell(), TRUE );
+ pWrtShell->StartAllAction();
+
+ pWrtShell->EnterStdMode(); // Selektionen loeschen
+
+ if( bCompare )
+ nFound = pWrtShell->CompareDoc( *((SwDocShell*)&xDocSh)->GetDoc() );
+ else
+ nFound = pWrtShell->MergeDoc( *((SwDocShell*)&xDocSh)->GetDoc() );
+
+ pWrtShell->EndAllAction();
+
+ if (!bCompare && !nFound)
+ {
+ Window* pWindow = &GetEditWin();
+ InfoBox(pWindow, SW_RES(MSG_NO_MERGE_ENTRY)).Execute();
+ }
+ }
+ if( 2 == nRet && xDocSh.Is() )
+ xDocSh->DoClose();
+ }
+
+ delete pMed;
+ return nFound;
+}
+
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.197 2000/09/18 16:06:13 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.196 2000/09/08 08:12:54 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.195 2000/09/07 15:59:32 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.194 2000/08/17 13:47:26 jp
+ JumpToMark: handle decoded URLs
+
+ Revision 1.193 2000/07/07 13:25:05 jp
+ must changes VCL
+
+ Revision 1.192 2000/05/29 08:03:23 os
+ new scanner interface
+
+ Revision 1.191 2000/05/26 07:21:34 os
+ old SW Basic API Slots removed
+
+ Revision 1.190 2000/05/19 11:01:38 jp
+ Changes for Unicode
+
+ Revision 1.189 2000/05/10 11:53:20 os
+ Basic API removed
+
+ Revision 1.188 2000/04/18 15:02:51 os
+ UNICODE
+
+ Revision 1.187 2000/03/30 13:20:30 jp
+ Bug #74614#: StateStatusline - take the real numLevel
+
+ Revision 1.186 2000/03/14 13:45:51 jp
+ GetAppWindow() - misuse as parent window eliminated
+
+ Revision 1.185 2000/02/21 12:11:45 os
+ #73248# Recording of FN_EDIT_CUR_INDEX corrected
+
+ Revision 1.184 2000/02/11 14:59:23 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.183 2000/02/02 17:00:58 jp
+ Task #72579#: interface of SwReader is changed
+
+ Revision 1.182 2000/01/07 18:15:50 jp
+ Bug #71654#: StateStatusLine - set at frame- or object selection the pos and size
+
+ Revision 1.181 1999/12/23 14:18:06 jp
+ Bug #71286#: UpdateAllTOX - cursor must jump into readonly sections
+
+ Revision 1.180 1999/10/18 11:15:56 jp
+ SID_TABLE_CELL: if Frame or SdrObject selected, then dont return a string
+
+ Revision 1.179 1999/10/18 09:41:51 jp
+ ExecuteStatusLine: SID_ATTR_POS is dependent on content
+
+ Revision 1.178 1999/10/15 15:58:00 jp
+ StateStatusLine: if in tox then show the name
+
+ Revision 1.177 1999/09/29 07:07:50 mh
+ chg: header
+
+ Revision 1.176 1999/08/26 13:48:46 OS
+ apply AutoMark file at TOX update
+
+
+ Rev 1.175 26 Aug 1999 15:48:46 OS
+ apply AutoMark file at TOX update
+
+ Rev 1.174 25 Aug 1999 15:26:22 OS
+ extended indexes: remove old code
+
+ Rev 1.173 08 Jul 1999 18:45:22 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.172 10 Jun 1999 10:52:32 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.171 09 Jun 1999 13:19:38 OS
+ #66578# new slot: FN_EDIT_CURENT_TOX
+
+ Rev 1.170 27 May 1999 13:05:52 OS
+ Einf?gen/Bearbeiten von Spalten ueberarbeitet
+
+ Rev 1.169 23 Apr 1999 13:50:10 MA
+ include fuer Update
+
+ Rev 1.168 21 Apr 1999 16:12:44 MA
+ #65085# irgendwann sollte auch das verschieben mal abgebrochen werden.
+
+ Rev 1.167 16 Mar 1999 15:25:26 JP
+ Bug #59840#: JumpToMark - bei Bookmarks keine Selection
+
+ Rev 1.166 22 Jan 1999 16:55:50 JP
+ Bug Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.165 18 Nov 1998 12:57:52 OM
+ #58385# DrawView ueber Slot anziehen
+
+ Rev 1.164 26 Oct 1998 17:29:10 JP
+ Bug #54342#: Section merkt sich das Passwort der Datei
+
+ Rev 1.163 18 Sep 1998 11:39:58 OS
+ #52654# PageUp/Down return ueber VisArea ermitteln
+
+ Rev 1.162 18 Sep 1998 09:40:40 OS
+ 52654# XScreenCursor - FN_PAGEUP/DOWN mit Bool-return
+
+ Rev 1.161 12 Aug 1998 18:22:16 HR
+ #54781#: GCC braucht Temporary
+
+ Rev 1.160 25 Jul 1998 11:57:02 OS
+ Status der Abreisscontroller sofort invalidieren #51812#
+
+ Rev 1.159 14 Jul 1998 10:43:42 OM
+ #52748# Twain-Menueeintrag
+
+ Rev 1.158 01 Jul 1998 12:54:52 JP
+ InsertDoc: Flag bQuiet mit int nVersion ersetzt, FN_DOCUMENT-Ids entfernt, werden vom SFX geliefert
+
+ Rev 1.157 28 Jun 1998 12:48:48 MA
+ Mail_Scrollbody
+
+ Rev 1.156 09 Jun 1998 15:32:20 OM
+ VC-Controls entfernt
+
+ Rev 1.155 27 Apr 1998 10:59:46 JP
+ Bug #49786#: FocusFlag hinausreichen
+
+ Rev 1.154 07 Apr 1998 15:58:50 OM
+ #49333# Page-Event asynchron callen
+
+ Rev 1.153 27 Mar 1998 14:15:18 OM
+ ChildWindows im Modified-Hdl updaten
+
+ Rev 1.152 15 Mar 1998 15:14:10 OM
+ Synchron-Button
+
+ Rev 1.151 12 Mar 1998 13:00:38 OS
+ SID_NEWWINDOW nicht mehr ueberladen
+
+ Rev 1.150 04 Mar 1998 14:14:02 OM
+ Dokument Merge/Compare
+
+ Rev 1.149 27 Feb 1998 18:25:16 OM
+ Redline-Browser
+
+ Rev 1.148 26 Feb 1998 11:52:56 OM
+ Redline accept/reject
+
+ Rev 1.147 24 Feb 1998 15:29:10 JP
+ Search..: SWPOSDOC entfernt, auf enums umgestellt
+
+ Rev 1.146 19 Feb 1998 17:37:50 JP
+ compiler error
+
+ Rev 1.145 19 Feb 1998 09:35:06 JP
+ RedlineMode darf nur im InsertMode einschaltbar sein
+
+ Rev 1.144 18 Feb 1998 18:57:26 OM
+ Zeilennumerierung
+
+ Rev 1.143 18 Feb 1998 15:02:44 JP
+ Status erfragen/setzen fuer Redlines anzeigen korrigiert
+
+ Rev 1.142 12 Feb 1998 16:47:22 OM
+ Basic-Event fuer Seitenzahlaenderung
+
+ Rev 1.141 11 Feb 1998 10:45:58 OS
+ IsFullScreenMode gegen IsFullScreeView getsauscht, ChainMode vor Fullscreen #47232#
+
+ Rev 1.140 03 Feb 1998 15:28:22 OM
+ Redlining
+
+ Rev 1.139 23 Jan 1998 16:04:16 MA
+ includes
+
+ Rev 1.138 23 Jan 1998 15:23:38 MA
+ include
+
+ Rev 1.137 19 Jan 1998 11:48:34 MBA
+ MDIFrame durch TopViewFrame ersetzt
+
+ Rev 1.136 06 Jan 1998 07:28:40 OS
+ getrennter Status fuer Insert-Controller #46322#
+
+ Rev 1.135 04 Dec 1997 17:01:18 OS
+ Numerierungsvorlage in der Statuszeile anzeigen
+
+ Rev 1.134 29 Nov 1997 16:48:08 MA
+ includes
+
+ Rev 1.133 28 Nov 1997 11:32:12 TJ
+ include
+
+ Rev 1.132 21 Nov 1997 15:00:16 MA
+ includes
+
+ Rev 1.131 17 Nov 1997 10:21:24 JP
+ Umstellung Numerierung
+
+ Rev 1.130 05 Nov 1997 11:52:08 MA
+ chain
+
+ Rev 1.129 03 Nov 1997 13:58:32 MA
+ precomp entfernt
+
+ Rev 1.128 07 Oct 1997 15:16:12 AMA
+ Fix #44419#: Neuformatierung wird in ViewShell::ApplyViewOptions ausgeloest
+
+ Rev 1.127 25 Sep 1997 15:20:34 OS
+ nicht BtnPage, sondern MoveNavigation aufrufen! #44223#
+
+ Rev 1.126 17 Sep 1997 12:35:08 JP
+ neu: JumpToSwMark - ist der Code aus dem JUMPTOMARK
+
+ Rev 1.125 04 Sep 1997 17:14:46 MA
+ includes
+
+ Rev 1.124 01 Sep 1997 13:25:54 OS
+ DLL-Umstellung
+
+ Rev 1.123 15 Aug 1997 11:47:58 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.122 11 Aug 1997 10:21:16 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.121 31 Jul 1997 14:59:48 MH
+ chg: header
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/uiview/viewcoll.cxx b/sw/source/ui/uiview/viewcoll.cxx
new file mode 100644
index 000000000000..cff8ff78f56d
--- /dev/null
+++ b/sw/source/ui/uiview/viewcoll.cxx
@@ -0,0 +1,249 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewcoll.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "cmdid.h"
+#include "uiitems.hxx"
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+
+#ifndef _SV_WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _RSCSFX_HXX //autogen
+#include <rsc/rscsfx.hxx>
+#endif
+
+
+#include "errhdl.hxx"
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "basesh.hxx"
+
+
+void SwView::ExecColl(SfxRequest &rReq)
+{
+ Window *pMDI = &GetViewFrame()->GetWindow();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem = 0;
+ USHORT nWhich = rReq.GetSlot();
+ switch( nWhich )
+ {
+ case FN_SET_PAGE:
+ {
+ DBG_ASSERT(!this, "Not implemented")
+ }
+ break;
+ case FN_SET_PAGE_STYLE:
+ {
+ if( pArgs )
+ {
+ if (pArgs &&
+ SFX_ITEM_SET == pArgs->GetItemState( nWhich , TRUE, &pItem ))
+ {
+ if( ((SfxStringItem*)pItem)->GetValue() !=
+ GetWrtShell().GetCurPageStyle(FALSE) )
+ {
+ SfxStringItem aName(SID_STYLE_APPLY,
+ ((SfxStringItem*)pItem)->GetValue());
+ SfxUInt16Item aFamItem( SID_STYLE_FAMILY,
+ SFX_STYLE_FAMILY_PAGE);
+ SwPtrItem aShell(FN_PARAM_WRTSHELL, GetWrtShellPtr());
+ SfxRequest aReq(SID_STYLE_APPLY, 0, GetPool());
+ aReq.AppendItem(aName);
+ aReq.AppendItem(aFamItem);
+ aReq.AppendItem(aShell);
+ GetCurShell()->ExecuteSlot(aReq);
+ }
+ }
+ }
+ else
+ {
+ SfxRequest aReq(FN_FORMAT_PAGE_DLG, 0, GetPool());
+ GetCurShell()->ExecuteSlot(aReq);
+ }
+ }
+ break;
+ default:
+ ASSERT(FALSE, falscher CommandProcessor fuer Dispatch);
+ return;
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.31 2000/09/18 16:06:13 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.30 2000/05/26 07:21:34 os
+ old SW Basic API Slots removed
+
+ Revision 1.29 2000/02/11 14:59:31 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.28 1998/09/21 11:59:34 MH
+ chg: header wg. internal comp.error
+
+
+ Rev 1.27 21 Sep 1998 13:59:34 MH
+ chg: header wg. internal comp.error
+
+ Rev 1.26 29 Nov 1997 16:49:26 MA
+ includes
+
+ Rev 1.25 21 Nov 1997 15:00:16 MA
+ includes
+
+ Rev 1.24 03 Nov 1997 13:58:30 MA
+ precomp entfernt
+
+ Rev 1.23 07 Apr 1997 18:59:58 MH
+ chg: header
+
+ Rev 1.22 05 Mar 1997 20:36:16 NF
+ Neuer Constructor f?r SfxRequest
+
+ Rev 1.21 04 Dec 1996 23:07:10 MH
+ del: stdchr.hxx
+
+ Rev 1.20 14 Nov 1996 19:19:08 OS
+ Umstellung SlotIds
+
+ Rev 1.19 09 Sep 1996 18:57:22 MH
+ add: include basesh.hxx
+
+ Rev 1.18 09 Sep 1996 15:11:26 OS
+ SID_APPLY_TEMPLATE mit WrtShell
+
+ Rev 1.17 04 Sep 1996 08:02:24 OS
+ Format/Grundschriften entfernt
+
+ Rev 1.16 29 Jul 1996 15:47:22 MA
+ includes
+
+ Rev 1.15 26 Jun 1996 15:01:58 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.14 30 Nov 1995 15:16:06 OS
+ div. Slots verschoben
+
+ Rev 1.13 24 Nov 1995 16:58:00 OM
+ PCH->PRECOMPILED
+
+ Rev 1.12 09 Nov 1995 17:57:38 OS
+ Id fuer FormatPage/CharDlg auf SID_ umgestellt
+
+ Rev 1.11 31 Oct 1995 18:42:44 OM
+ GetFrameWindow entfernt
+
+ Rev 1.10 22 Aug 1995 08:07:34 MA
+ svxitems-header entfernt
+
+ Rev 1.9 14 Jul 1995 17:49:02 OS
+ neue Seitenvorlage auf Differenz testen
+
+ Rev 1.8 30 Jun 1995 07:58:34 OS
+ const und nicht const
+
+ Rev 1.7 29 Jun 1995 11:12:16 OS
+ Page/Para/Char-Style aus Macro setzen
+
+ Rev 1.6 19 Jun 1995 16:34:52 OS
+ -FN_STYLE_SHEET_FRAME_DLG
+
+ Rev 1.5 14 Feb 1995 16:51:24 PK
+ fn_set_standard_fonts
+
+ Rev 1.4 18 Jan 1995 13:23:00 MS
+ Precompiled hd
+
+ Rev 1.3 05 Dec 1994 16:57:40 MS
+ Anpassung Tabdlg
+
+ Rev 1.2 25 Oct 1994 19:07:26 ER
+ add: PCH
+
+ Rev 1.1 25 Oct 1994 12:15:12 MS
+ SwStdCharDlg entfernt
+
+ Rev 1.0 22 Sep 1994 18:37:52 VB
+ Weiteres
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/uiview/viewdlg.cxx b/sw/source/ui/uiview/viewdlg.cxx
new file mode 100644
index 000000000000..610c14cf874b
--- /dev/null
+++ b/sw/source/ui/uiview/viewdlg.cxx
@@ -0,0 +1,198 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _SVX_TSPTITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+
+
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "basesh.hxx"
+#include "viewopt.hxx"
+#include "uitool.hxx"
+#include "cmdid.h"
+#include "docstdlg.hxx"
+#include "pagedesc.hxx"
+
+
+void SwView::ExecDlg(SfxRequest &rReq)
+{
+ Window *pMDI = &GetViewFrame()->GetWindow();
+ ModalDialog *pDialog = 0;
+ //Damit aus dem Basic keine Dialoge fuer Hintergrund-Views aufgerufen werden:
+ const SfxPoolItem* pItem = 0;
+ const SfxItemSet* pArgs = rReq.GetArgs();
+
+ USHORT nSlot = rReq.GetSlot();
+ if(pArgs)
+ pArgs->GetItemState( GetPool().GetWhich(nSlot), FALSE, &pItem );
+
+ switch ( nSlot )
+ {
+ case FN_CHANGE_PAGENUM:
+ {
+ if ( pItem )
+ {
+ USHORT nValue = ((SfxUInt16Item *)pItem)->GetValue();
+ USHORT nOldValue = pWrtShell->GetPageOffset();
+ USHORT nPage, nLogPage;
+ pWrtShell->GetPageNum( nPage, nLogPage,
+ pWrtShell->IsCrsrVisible(), FALSE);
+
+ if(nValue != nOldValue || nValue != nLogPage)
+ {
+ if(!nOldValue)
+ pWrtShell->SetNewPageOffset( nValue );
+ else
+ pWrtShell->SetPageOffset( nValue );
+ }
+ }
+ }
+ break;
+
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
+ }
+
+ if( pDialog )
+ {
+ pDialog->Execute();
+ delete pDialog;
+ }
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.123 2000/09/18 16:06:13 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.122 2000/05/26 07:21:34 os
+ old SW Basic API Slots removed
+
+ Revision 1.121 2000/04/18 15:02:51 os
+ UNICODE
+
+ Revision 1.120 1998/01/28 15:02:52 OM
+ #45138# Seitennummern-Dlg entfernt
+
+
+ Rev 1.119 28 Jan 1998 16:02:52 OM
+ #45138# Seitennummern-Dlg entfernt
+
+ Rev 1.118 21 Nov 1997 15:00:18 MA
+ includes
+
+ Rev 1.117 03 Nov 1997 13:58:30 MA
+ precomp entfernt
+
+ Rev 1.116 01 Sep 1997 13:14:12 OS
+ DLL-Umstellung
+
+ Rev 1.115 15 Aug 1997 11:48:02 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.114 11 Aug 1997 10:20:24 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.113 08 Aug 1997 17:26:16 OM
+ Headerfile-Umstellung
+
+ Rev 1.112 08 Aug 1997 14:48:30 HJS
+ includes
+
+ Rev 1.111 10 Apr 1997 15:30:20 OS
+ CHANGE_PAGENUM: nicht nur Offset vergleichen, sondern auch log. Seitennummer
+
+ Rev 1.110 07 Apr 1997 18:57:40 MH
+ chg: header
+
+ Rev 1.109 11 Dec 1996 10:58:18 MA
+ Warnings
+
+ Rev 1.108 29 Jul 1996 15:47:20 MA
+ includes
+
+ Rev 1.107 14 Dec 1995 17:25:04 OS
+ -ExecDocStatDlg
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/uiview/viewdlg2.cxx b/sw/source/ui/uiview/viewdlg2.cxx
new file mode 100644
index 000000000000..b986e894351c
--- /dev/null
+++ b/sw/source/ui/uiview/viewdlg2.cxx
@@ -0,0 +1,403 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewdlg2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+
+
+#ifndef _FLDMGR_HXX //autogen
+#include <fldmgr.hxx>
+#endif
+#ifndef _EXPFLD_HXX //autogen
+#include <expfld.hxx>
+#endif
+
+#ifndef _MODOPT_HXX //autogen
+#include <modcfg.hxx>
+#endif
+
+#include "swmodule.hxx"
+#include "view.hxx"
+#include "wview.hxx"
+#include "wrtsh.hxx"
+#include "cmdid.h"
+#include "cption.hxx"
+#include "caption.hxx"
+#include "insfnote.hxx"
+#include "poolfmt.hxx"
+#include "edtwin.hxx"
+
+#include "view.hrc"
+
+extern String* pOldGrfCat;
+extern String* pOldTabCat;
+extern String* pOldFrmCat;
+extern String* pOldDrwCat;
+
+/* -----------------06.11.98 13:45-------------------
+ *
+ * --------------------------------------------------*/
+
+void SwView::ExecDlgExt(SfxRequest &rReq)
+{
+ Window *pMDI = &GetViewFrame()->GetWindow();
+ ModalDialog *pDialog = 0;
+ const SfxItemSet* pOutSet = 0;
+
+ switch ( rReq.GetSlot() )
+ {
+ case FN_INSERT_CAPTION:
+ {
+ pDialog = new SwCaptionDialog( pMDI, *this );
+ break;
+ }
+ case FN_EDIT_FOOTNOTE:
+ {
+ pDialog = new SwInsFootNoteDlg( pMDI, *pWrtShell, TRUE );
+ pDialog->SetHelpId(FN_EDIT_FOOTNOTE);
+ pDialog->SetText( SW_RESSTR(STR_EDIT_FOOTNOTE) );
+ break;
+ }
+ }
+ if ( pDialog )
+ {
+ pDialog->Execute();
+ delete pDialog;
+ }
+}
+
+/* -----------------06.11.98 14:53-------------------
+ *
+ * --------------------------------------------------*/
+
+void SwView::AutoCaption(const USHORT nType, const SvGlobalName *pOleId)
+{
+ SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+
+ BOOL bWeb = 0 != PTR_CAST(SwWebView, this);
+ if (pModOpt->IsInsWithCaption(bWeb))
+ {
+ const InsCaptionOpt *pOpt = pModOpt->GetCapOption(bWeb, (SwCapObjType)nType, pOleId);
+ if (pOpt && pOpt->UseCaption() == TRUE)
+ InsertCaption(pOpt);
+ }
+}
+
+/* -----------------06.11.98 12:58-------------------
+ *
+ * --------------------------------------------------*/
+
+void SwView::InsertCaption(const InsCaptionOpt *pOpt)
+{
+ if (!pOpt)
+ return;
+
+ const String &rName = pOpt->GetCategory();
+
+ // Existiert Pool-Vorlage gleichen Namens?
+ SwWrtShell &rSh = GetWrtShell();
+ USHORT nPoolId = rSh.GetPoolId(rName, GET_POOLID_TXTCOLL);
+ if( USHRT_MAX != nPoolId )
+ rSh.GetTxtCollFromPool(nPoolId);
+ // Pool-Vorlage existiert nicht: Existiert sie am Dokument?
+ else if( !rSh.GetParaStyle(rName) )
+ {
+ // Sie existiert auch nicht am Dokument: erzeugen
+ SwTxtFmtColl* pDerivedFrom = rSh.GetTxtCollFromPool(RES_POOLCOLL_LABEL);
+ rSh.MakeTxtFmtColl(rName, pDerivedFrom);
+ }
+
+ USHORT eType = (SwWrtShell::SelectionType)rSh.GetSelectionType();
+ if (eType & SwWrtShell::SEL_OLE)
+ eType = SwWrtShell::SEL_GRF;
+
+ // SwLabelType
+ const USHORT eT = eType & SwWrtShell::SEL_TBL ? LTYPE_TABLE :
+ eType & SwWrtShell::SEL_FRM ? LTYPE_FLY :
+ eType == SwWrtShell::SEL_TXT ? LTYPE_FLY :
+ eType & SwWrtShell::SEL_DRW ? LTYPE_DRAW :
+ LTYPE_OBJECT;
+
+ SwFldMgr aMgr(&rSh);
+ SwSetExpFieldType* pFldType =
+ (SwSetExpFieldType*)aMgr.GetFldType(RES_SETEXPFLD, rName);
+ if (!pFldType)
+ {
+ // Neuen Feldtypen erzeugen
+ SwSetExpFieldType aSwSetExpFieldType(rSh.GetDoc(), rName, GSE_SEQ);
+ aMgr.InsertFldType(aSwSetExpFieldType);
+ pFldType = (SwSetExpFieldType*)aMgr.GetFldType(RES_SETEXPFLD, rName);
+ }
+
+ if (!pOpt->IgnoreSeqOpts())
+ {
+ if (pFldType)
+ {
+ pFldType->SetDelimiter(pOpt->GetSeparator());
+ pFldType->SetOutlineLvl(pOpt->GetLevel());
+ }
+ }
+
+ USHORT nID = 0;
+ SwFieldType* pType = 0;
+ const USHORT nCount = aMgr.GetFldTypeCount();
+ for (USHORT i = 0; i < nCount; ++i)
+ {
+ pType = aMgr.GetFldType(USHRT_MAX, i);
+ String aTmpName( pType->GetName() );
+ if (aTmpName == rName && pType->Which() == RES_SETEXPFLD)
+ {
+ nID = i;
+ break;
+ }
+ }
+ rSh.StartAllAction();
+
+ GetWrtShell().InsertLabel( (SwLabelType)eT,
+ pOpt->GetCaption(),
+ !pOpt->GetPos(),
+ nID,
+ pOpt->CopyAttributes() );
+ // Nummernformat setzen
+ ((SwSetExpFieldType*)pType)->SetSeqFormat(pOpt->GetNumType());
+
+ rSh.UpdateExpFlds( TRUE );
+
+ rSh.EndAllAction();
+
+ if ( rSh.IsFrmSelected() )
+ {
+ GetEditWin().StopInsFrm();
+ rSh.EnterSelFrmMode();
+ }
+
+ // Kategorie merken
+ String** ppStr = 0;
+ if (eType & SwWrtShell::SEL_GRF)
+ ppStr = &pOldGrfCat;
+ else if( eType & SwWrtShell::SEL_TBL)
+ ppStr = &pOldTabCat;
+ else if( eType & SwWrtShell::SEL_FRM)
+ ppStr = &pOldFrmCat;
+ else if( eType == SwWrtShell::SEL_TXT)
+ ppStr = &pOldFrmCat;
+ else if( eType & SwWrtShell::SEL_DRW)
+ ppStr = &pOldDrwCat;
+
+ if( ppStr )
+ {
+ if( !*ppStr )
+ *ppStr = new String( rName );
+ else
+ **ppStr = rName;
+ }
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.56 2000/09/18 16:06:13 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.55 2000/05/26 07:21:35 os
+ old SW Basic API Slots removed
+
+ Revision 1.54 1999/06/09 08:44:54 OS
+ #66732# Insert caption: copy border and shadow optionally
+
+
+ Rev 1.53 09 Jun 1999 10:44:54 OS
+ #66732# Insert caption: copy border and shadow optionally
+
+ Rev 1.52 17 Feb 1999 08:40:28 OS
+ #58158# Einfuegen TabPage auch in HTML-Docs
+
+ Rev 1.51 25 Jan 1999 14:10:32 HR
+ include editwin.hxx
+
+ Rev 1.50 21 Jan 1999 18:53:36 MA
+ #60697# die bloeden Stati pflegen
+
+ Rev 1.49 10 Dec 1998 09:47:16 MIB
+ #60060#: Beschriftungen fuer Zeichen-Objekte
+
+ Rev 1.48 06 Nov 1998 17:05:58 OM
+ #58158# Automatische Beschriftung
+
+ Rev 1.47 21 Nov 1997 15:00:18 MA
+ includes
+
+ Rev 1.46 03 Nov 1997 13:58:28 MA
+ precomp entfernt
+
+ Rev 1.45 07 Apr 1997 19:00:26 MH
+ chg: header
+
+ Rev 1.44 11 Nov 1996 11:10:50 MA
+ ResMgr
+
+ Rev 1.43 29 Jul 1996 15:47:16 MA
+ includes
+
+ Rev 1.42 23 Feb 1996 17:04:58 OM
+ OpenINetDlg entfernt
+
+ Rev 1.41 20 Feb 1996 10:08:20 OM
+ Methode fuer Internet-Open-Dlg
+
+ Rev 1.40 30 Nov 1995 15:16:04 OS
+ div. Slots verschoben
+
+ Rev 1.39 24 Nov 1995 16:58:00 OM
+ PCH->PRECOMPILED
+
+ Rev 1.38 08 Nov 1995 13:07:44 OS
+ Change => Set
+
+ Rev 1.37 06 Nov 1995 17:20:04 OS
+ kleinere Optimierung
+
+ Rev 1.36 31 Oct 1995 18:42:46 OM
+ GetFrameWindow entfernt
+
+ Rev 1.35 30 Oct 1995 18:51:18 OS
+ FN_POSTIT ueber Slot einfuegen
+
+ Rev 1.34 18 Sep 1995 18:30:08 OM
+ HelpIDs
+
+ Rev 1.33 24 Aug 1995 14:31:54 MA
+ swstddlg -> svxstandarddialog
+
+ Rev 1.32 21 Aug 1995 09:26:36 MA
+ chg: swstddlg -> svxstandarddialog, Optimierungen
+
+ Rev 1.31 23 Jun 1995 07:26:34 OS
+ FALSe gibt's nicht
+
+ Rev 1.30 22 Jun 1995 20:03:46 MA
+ fix/opt: FrmMgr mit Shell erzeugen.
+
+ Rev 1.29 09 Jun 1995 14:25:34 OM
+ Alten DB-Manager entfernt
+
+ Rev 1.28 05 Apr 1995 19:06:34 OS
+ Fix fuer Tabellen-und Rahmenhintergrund Bug 10891
+
+ Rev 1.27 04 Apr 1995 14:09:56 MA
+ Optimiert, includes gespart.
+
+ Rev 1.26 03 Apr 1995 19:41:52 OS
+ Titel fuer Edit-Footnote Fix 11252
+
+ Rev 1.25 28 Mar 1995 19:39:54 OM
+ Aufgeteilt auf viewdlg2 und 4
+
+ Rev 1.24 24 Mar 1995 20:17:22 PK
+ pkbla ist out
+
+ Rev 1.23 04 Mar 1995 14:08:04 MA
+ fix: GPF Umrandung fuer Tabelle.
+
+ Rev 1.22 02 Mar 1995 18:49:34 PK
+ pkbla-geraffel wieder uebersetzbar
+
+ Rev 1.21 01 Mar 1995 11:08:48 MA
+ weg: Sw-BoxItem, neu: KeepItem.
+
+ Rev 1.20 16 Feb 1995 19:33:58 PK
+ swborderdlg: einsatz von swflyfrmattrmgr
+
+ Rev 1.19 08 Feb 1995 18:39:38 PK
+ bla-geraffel mit #ifdef pkbla
+
+ Rev 1.18 08 Feb 1995 10:21:44 SWG
+ blaout kommentiert.
+
+ Rev 1.17 08 Feb 1995 10:18:18 SWG
+ blaout kommentiert.
+
+ Rev 1.16 07 Feb 1995 19:34:38 PK
+ umrandungen, bla-geraffel
+
+ Rev 1.14 26 Jan 1995 16:58:44 PK
+ gebrauch von get- und settabborders
+
+ Rev 1.13 24 Jan 1995 13:29:06 PK
+ Map entfernt
+
+ Rev 1.12 18 Jan 1995 13:22:58 MS
+ Precompiled hd
+
+ Rev 1.11 13 Jan 1995 12:17:06 MS
+ Aufteilung DBMgr
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/uiview/viewdraw.cxx b/sw/source/ui/uiview/viewdraw.cxx
new file mode 100644
index 000000000000..71dc4cb13c33
--- /dev/null
+++ b/sw/source/ui/uiview/viewdraw.cxx
@@ -0,0 +1,809 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewdraw.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _AEITEM_HXX //autogen
+#include <svtools/aeitem.hxx>
+#endif
+#ifndef _SFXITEMPOOL_HXX //autogen
+#include <svtools/itempool.hxx>
+#endif
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SVDPAGE_HXX //autogen
+#include <svx/svdpage.hxx>
+#endif
+#ifndef _OUTLINER_HXX //autogen
+#include <svx/outliner.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+
+#ifndef _SVX_LANGITEM_HXX
+#include <svx/langitem.hxx>
+#endif
+
+#ifndef _LINGU_LNGPROPS_HHX_
+#include <lingu/lngprops.hxx>
+#endif
+#ifndef _UNO_LINGU_HXX
+#include <svx/unolingu.hxx>
+#endif
+
+
+#ifndef _EEITEM_HXX //autogen
+#include <svx/eeitem.hxx>
+#endif
+#ifndef _SVDOTEXT_HXX //autogen
+#include <svx/svdotext.hxx>
+#endif
+#ifndef _SVDETC_HXX
+#include <svx/svdetc.hxx>
+#endif
+#ifndef _EDITSTAT_HXX //autogen
+#include <svx/editstat.hxx>
+#endif
+#ifndef _IDETEMP_HXX
+#include <basctl/idetemp.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SVX_FMGLOB_HXX //autogen
+#include <svx/fmglob.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SVDOUTL_HXX
+#include <svx/svdoutl.hxx>
+#endif
+
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "viewopt.hxx"
+#include "cmdid.h"
+#include "drawsh.hxx"
+#include "drwbassh.hxx"
+#include "beziersh.hxx"
+#include "conrect.hxx"
+#include "conctrl.hxx"
+#include "conpoly.hxx"
+#include "conarc.hxx"
+#include "conform.hxx"
+#include "dselect.hxx"
+#include "edtwin.hxx"
+
+using namespace ::com::sun::star;
+/*--------------------------------------------------------------------
+ Beschreibung: Drawing-Ids ausfuehren
+ --------------------------------------------------------------------*/
+
+
+
+void SwView::ExecDraw(SfxRequest& rReq)
+{
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem;
+ const SfxAllEnumItem* pEItem = 0;
+ SdrView *pSdrView = pWrtShell->GetDrawView();
+ sal_Bool bDeselect = sal_False;
+
+ sal_uInt16 nSlotId = rReq.GetSlot();
+ if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(GetPool().GetWhich(nSlotId), sal_False, &pItem))
+ {
+ pEItem = (const SfxAllEnumItem*)pItem;
+ }
+
+ if (nSlotId == SID_INSERT_DRAW && pEItem)
+ {
+ static sal_uInt16 __READONLY_DATA aSlotTable[] =
+ {
+ SID_OBJECT_SELECT,
+ SID_DRAW_LINE,
+ SID_DRAW_RECT,
+ SID_DRAW_ELLIPSE,
+ SID_DRAW_POLYGON_NOFILL,
+ SID_DRAW_BEZIER_NOFILL,
+ SID_DRAW_FREELINE_NOFILL,
+ SID_DRAW_ARC,
+ SID_DRAW_PIE,
+ SID_DRAW_CIRCLECUT,
+ SID_DRAW_TEXT,
+ SID_DRAW_TEXT_MARQUEE,
+ SID_DRAW_CAPTION
+ };
+
+ nSlotId = aSlotTable[pEItem->GetValue()];
+ }
+
+ if (nSlotId == SID_OBJECT_SELECT && nFormSfxId == nSlotId)
+ {
+ bDeselect = sal_True;
+ }
+ else if (nSlotId == SID_FM_CREATE_CONTROL)
+ {
+ SFX_REQUEST_ARG( rReq, pIdentifierItem, SfxUInt16Item, SID_FM_CONTROL_IDENTIFIER, sal_False );
+ if( pIdentifierItem )
+ {
+ sal_uInt16 nNewId = pIdentifierItem->GetValue();
+ if (nNewId == nFormSfxId)
+ {
+ bDeselect = sal_True;
+ GetViewFrame()->GetDispatcher()->Execute(SID_FM_LEAVE_CREATE); // Button soll rauspoppen
+ }
+ }
+ }
+
+ if (nSlotId == nDrawSfxId || bDeselect)
+ {
+ if (GetDrawFuncPtr())
+ {
+ GetDrawFuncPtr()->Deactivate();
+ SetDrawFuncPtr(NULL);
+ }
+
+ if (pWrtShell->IsObjSelected() && !pWrtShell->IsSelFrmMode())
+ pWrtShell->EnterSelFrmMode(NULL);
+ LeaveDrawCreate();
+
+ GetViewFrame()->GetBindings().Invalidate(SID_INSERT_DRAW);
+
+ AttrChangedNotify(pWrtShell);
+ return;
+ }
+
+ LeaveDrawCreate();
+
+ if (pWrtShell->IsFrmSelected())
+ pWrtShell->EnterStdMode(); // wegen Bug #45639
+
+ SwDrawBase* pFuncPtr = NULL;
+
+ switch (nSlotId)
+ {
+ case SID_OBJECT_SELECT:
+ case SID_DRAW_SELECT:
+ pFuncPtr = new DrawSelection(pWrtShell, pEditWin, this);
+ nDrawSfxId = nFormSfxId = SID_OBJECT_SELECT;
+ break;
+
+ case SID_DRAW_LINE:
+ case SID_DRAW_RECT:
+ case SID_DRAW_ELLIPSE:
+ case SID_DRAW_TEXT:
+ case SID_DRAW_TEXT_MARQUEE:
+ case SID_DRAW_CAPTION:
+ pFuncPtr = new ConstRectangle(pWrtShell, pEditWin, this);
+ nDrawSfxId = nSlotId;
+ break;
+
+ case SID_DRAW_POLYGON_NOFILL:
+ case SID_DRAW_BEZIER_NOFILL:
+ case SID_DRAW_FREELINE_NOFILL:
+ pFuncPtr = new ConstPolygon(pWrtShell, pEditWin, this);
+ nDrawSfxId = nSlotId;
+ break;
+
+ case SID_DRAW_ARC:
+ case SID_DRAW_PIE:
+ case SID_DRAW_CIRCLECUT:
+ pFuncPtr = new ConstArc(pWrtShell, pEditWin, this);
+ nDrawSfxId = nSlotId;
+ break;
+
+ case SID_FM_CREATE_CONTROL:
+ {
+ SFX_REQUEST_ARG( rReq, pIdentifierItem, SfxUInt16Item, SID_FM_CONTROL_IDENTIFIER, sal_False );
+ if( pIdentifierItem )
+ nSlotId = pIdentifierItem->GetValue();
+ pFuncPtr = new ConstFormControl(pWrtShell, pEditWin, this);
+ nFormSfxId = nSlotId;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ static sal_uInt16 __READONLY_DATA aInval[] =
+ {
+ // Slot-Ids muessen beim Aufruf von Invalidate sortiert sein!
+ SID_ATTRIBUTES_AREA,
+ SID_INSERT_DRAW,
+ 0
+ };
+ GetViewFrame()->GetBindings().Invalidate(aInval);
+
+ if (pFuncPtr)
+ {
+ if (GetDrawFuncPtr())
+ {
+ GetDrawFuncPtr()->Deactivate();
+ SetDrawFuncPtr(NULL);
+ }
+
+ SetDrawFuncPtr(pFuncPtr);
+ AttrChangedNotify(pWrtShell);
+
+ pFuncPtr->Activate(nSlotId);
+ NoRotate();
+ }
+ else
+ {
+ if (pWrtShell->IsObjSelected() && !pWrtShell->IsSelFrmMode())
+ pWrtShell->EnterSelFrmMode(NULL);
+ }
+
+ if (pSdrView && pSdrView->IsTextEdit())
+ pSdrView->EndTextEdit( sal_True );
+
+ AttrChangedNotify(pWrtShell);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Drawing beenden
+ --------------------------------------------------------------------*/
+
+
+
+void SwView::ExitDraw()
+{
+ NoRotate();
+
+ if (pShell && !pShell->ISA(SwDrawBaseShell) && !pShell->ISA(SwBezierShell))
+ {
+ SdrView *pSdrView = pWrtShell->GetDrawView();
+
+ if (pSdrView && pSdrView->IsGroupEntered())
+ {
+ pSdrView->LeaveOneGroup();
+ pSdrView->UnmarkAll();
+ GetViewFrame()->GetBindings().Invalidate(SID_ENTER_GROUP);
+ }
+
+ if (GetDrawFuncPtr())
+ {
+ if (pWrtShell->IsSelFrmMode())
+ pWrtShell->LeaveSelFrmMode();
+ GetDrawFuncPtr()->Deactivate();
+
+ SetDrawFuncPtr(NULL);
+ LeaveDrawCreate();
+
+ GetViewFrame()->GetBindings().Invalidate(SID_INSERT_DRAW);
+ }
+ GetEditWin().SetPointer(Pointer(POINTER_TEXT));
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Rotate-Mode abschalten
+ --------------------------------------------------------------------*/
+
+
+
+void SwView::NoRotate()
+{
+ if (IsDrawRotate())
+ {
+ pWrtShell->SetDragMode(SDRDRAG_MOVE);
+ FlipDrawRotate();
+
+ const SfxBoolItem aTmp( SID_OBJECT_ROTATE, sal_False );
+ GetViewFrame()->GetBindings().SetState( aTmp );
+ }
+}
+
+/******************************************************************************
+ * Beschreibung: DrawTextEditMode einschalten
+ ******************************************************************************/
+
+
+
+sal_Bool SwView::EnterDrawTextMode(const Point& aDocPos)
+{
+ SdrObject* pObj;
+ SdrPageView* pPV;
+ SwWrtShell *pSh = &GetWrtShell();
+ SdrView *pSdrView = pSh->GetDrawView();
+ ASSERT( pSdrView, "EnterDrawTextMode without DrawView?" );
+
+ sal_Bool bReturn = sal_False;
+
+ sal_uInt16 nOld = pSdrView->GetHitTolerancePixel();
+ pSdrView->SetHitTolerancePixel( 2 );
+
+ if( pSdrView->IsMarkedHit( aDocPos ) &&
+ !pSdrView->HitHandle( aDocPos, *pSh->GetOut() ) && IsTextTool() &&
+ pSdrView->PickObj( aDocPos, pObj, pPV, SDRSEARCH_PICKTEXTEDIT ) &&
+ pObj->ISA( SdrTextObj ) &&
+ !pWrtShell->IsSelObjProtected(FLYPROTECT_CONTENT))
+ bReturn = BeginTextEdit(pObj, pPV, pEditWin, sal_True);
+
+ pSdrView->SetHitTolerancePixel( nOld );
+
+ return bReturn;
+}
+
+/******************************************************************************
+ * Beschreibung: DrawTextEditMode einschalten
+ ******************************************************************************/
+
+
+
+sal_Bool SwView::BeginTextEdit(SdrObject* pObj, SdrPageView* pPV, Window* pWin, sal_Bool bIsNewObj)
+{
+ SwWrtShell *pSh = &GetWrtShell();
+ SdrView *pSdrView = pSh->GetDrawView();
+ SdrOutliner* pOutliner = ::SdrMakeOutliner(0, pSdrView->GetModel());
+ uno::Reference< linguistic::XSpellChecker1 > xSpell( ::GetSpellChecker() );
+ if (pOutliner)
+ {
+ SwWrtShell *pSh = &GetWrtShell();
+ pOutliner->SetRefDevice(pSh->GetPrt());
+ pOutliner->SetSpeller(xSpell);
+ pOutliner->SetHyphenator( ::GetHyphenator() );
+ pSh->SetCalcFieldValueHdl(pOutliner);
+
+ sal_uInt32 nCntrl = pOutliner->GetControlWord();
+ nCntrl |= EE_CNTRL_ALLOWBIGOBJS;
+ nCntrl |= EE_CNTRL_URLSFXEXECUTE;
+
+ const SwViewOption *pOpt = pSh->GetViewOptions();
+
+ if (pOpt->IsField())
+ nCntrl |= EE_CNTRL_MARKFIELDS;
+ else
+ nCntrl &= ~EE_CNTRL_MARKFIELDS;
+
+ if (pOpt->IsHideSpell())
+ nCntrl |= EE_CNTRL_NOREDLINES;
+ else
+ nCntrl &= ~EE_CNTRL_NOREDLINES;
+
+ if (pOpt->IsOnlineSpell())
+ nCntrl |= EE_CNTRL_ONLINESPELLING;
+ else
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+
+ pOutliner->SetControlWord(nCntrl);
+ const SfxPoolItem& rItem = pSh->GetDoc()->GetDefault(RES_CHRATR_LANGUAGE);
+ pOutliner->SetDefaultLanguage(((const SvxLanguageItem&)rItem).GetLanguage());
+ }
+ sal_Bool bRet = pSdrView->BegTextEdit( pObj, pPV, pWin, bIsNewObj, pOutliner);
+
+ return bRet;
+}
+
+/******************************************************************************
+ * Beschreibung: Ist ein DrawTextObjekt selektiert?
+ ******************************************************************************/
+
+
+
+sal_Bool SwView::IsTextTool() const
+{
+ sal_uInt16 nId;
+ sal_uInt32 nInvent;
+ SdrView *pSdrView = GetWrtShell().GetDrawView();
+ ASSERT( pSdrView, "IsTextTool without DrawView?" );
+
+ if (pSdrView->IsCreateMode())
+ pSdrView->SetCreateMode(sal_False);
+
+ pSdrView->TakeCurrentObj(nId,nInvent);
+ return (nInvent==SdrInventor);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+SdrView* SwView::GetDrawView() const
+{
+ return GetWrtShell().GetDrawView();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+sal_Bool SwView::IsBezierEditMode()
+{
+ return (!IsDrawSelMode() && GetWrtShell().GetDrawView()->HasMarkablePoints());
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+sal_Bool SwView::IsFormMode() const
+{
+ if (GetDrawFuncPtr() && GetDrawFuncPtr()->IsCreateObj())
+ {
+ if (GetDrawFuncPtr()->IsInsertForm())
+ return sal_True;
+ else
+ return sal_False;
+ }
+
+ return AreOnlyFormsSelected();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwView::SetDrawFuncPtr(SwDrawBase* pFuncPtr)
+{
+ if (pDrawActual)
+ delete pDrawActual;
+ pDrawActual = pFuncPtr;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwView::SetSelDrawSlot()
+{
+ nDrawSfxId = SID_OBJECT_SELECT;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+sal_Bool SwView::AreOnlyFormsSelected() const
+{
+ if ( GetWrtShell().IsFrmSelected() )
+ return sal_False;
+
+ sal_Bool bForm = sal_True;
+
+ SdrView* pSdrView = GetWrtShell().GetDrawView();
+
+ const SdrMarkList& rMarkList = pSdrView->GetMarkList();
+ sal_uInt32 nCount = rMarkList.GetMarkCount();
+
+ if (nCount)
+ {
+ for (sal_uInt32 i = 0; i < nCount; i++)
+ {
+ // Sind ausser Controls noch normale Draw-Objekte selektiert?
+ SdrObject *pSdrObj = rMarkList.GetMark(i)->GetObj();
+
+ if (!HasOnlyObj(pSdrObj, FmFormInventor))
+ {
+ bForm = sal_False;
+ break;
+ }
+ }
+ }
+ else
+ bForm = sal_False;
+
+ return bForm;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+sal_Bool SwView::HasDrwObj(SdrObject *pSdrObj) const
+{
+ sal_Bool bRet = sal_False;
+
+ if (pSdrObj->IsGroupObject())
+ {
+ SdrObjList* pList = pSdrObj->GetSubList();
+ sal_uInt32 nCnt = pList->GetObjCount();
+
+ for (sal_uInt32 i = 0; i < nCnt; i++)
+ if ((bRet = HasDrwObj(pList->GetObj(i))) == sal_True)
+ break;
+ }
+ else if (SdrInventor == pSdrObj->GetObjInventor() || pSdrObj->Is3DObj())
+ return sal_True;
+
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+sal_Bool SwView::HasOnlyObj(SdrObject *pSdrObj, sal_uInt32 eObjInventor) const
+{
+ sal_Bool bRet = sal_False;
+
+ if (pSdrObj->IsGroupObject())
+ {
+ SdrObjList* pList = pSdrObj->GetSubList();
+ sal_uInt32 nCnt = pList->GetObjCount();
+
+ for (sal_uInt32 i = 0; i < nCnt; i++)
+ if ((bRet = HasOnlyObj(pList->GetObj(i), eObjInventor)) == sal_False)
+ break;
+ }
+ else if (eObjInventor == pSdrObj->GetObjInventor())
+ return sal_True;
+
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+sal_Bool SwView::ExecDrwTxtSpellPopup(const Point& rPt)
+{
+ sal_Bool bRet = sal_False;
+ SdrView *pSdrView = pWrtShell->GetDrawView();
+ OutlinerView* pOLV = pSdrView->GetTextEditOutlinerView();
+ Point aPos( GetEditWin().LogicToPixel( rPt ) );
+
+ if (pOLV->IsWrongSpelledWordAtPos( aPos ))
+ {
+ bRet = sal_True;
+ pOLV->ExecuteSpellPopup( aPos );
+ }
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+sal_Bool SwView::IsDrawTextHyphenate()
+{
+ SdrView *pSdrView = pWrtShell->GetDrawView();
+ sal_Bool bHyphenate = sal_False;
+
+ SfxItemSet aNewAttr( pSdrView->GetModel()->GetItemPool(),
+ EE_PARA_HYPHENATE, EE_PARA_HYPHENATE );
+ if( pSdrView->GetAttributes( aNewAttr ) &&
+ aNewAttr.GetItemState( EE_PARA_HYPHENATE ) >= SFX_ITEM_AVAILABLE )
+ bHyphenate = ((const SfxBoolItem&)aNewAttr.Get( EE_PARA_HYPHENATE )).
+ GetValue();
+
+ return bHyphenate;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+void SwView::HyphenateDrawText()
+{
+ SdrView *pSdrView = pWrtShell->GetDrawView();
+ sal_Bool bHyphenate = IsDrawTextHyphenate();
+
+ SfxItemSet aSet( GetPool(), EE_PARA_HYPHENATE, EE_PARA_HYPHENATE );
+ aSet.Put( SfxBoolItem( EE_PARA_HYPHENATE, !bHyphenate ) );
+ pSdrView->SetAttributes( aSet );
+ GetViewFrame()->GetBindings().Invalidate(FN_HYPHENATE_OPT_DLG);
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.111 2000/09/18 16:06:13 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.110 2000/09/07 15:59:33 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.109 2000/09/04 11:45:19 tbe
+ basicide, isetbrw, si, vcdlged moved from svx to basctl
+
+ Revision 1.108 2000/05/26 07:21:35 os
+ old SW Basic API Slots removed
+
+ Revision 1.107 2000/05/11 12:44:32 tl
+ if[n]def ONE_LINGU entfernt
+
+ Revision 1.106 2000/03/23 08:43:33 os
+ UNO III
+
+ Revision 1.105 2000/03/03 15:17:04 os
+ StarView remainders removed
+
+ Revision 1.104 2000/02/16 21:00:40 tl
+ #72219# Locale Umstellung
+
+ Revision 1.103 2000/02/09 13:36:38 os
+ #72716# Set Outliner language earlier
+
+ Revision 1.102 2000/01/18 16:54:02 os
+ #71416# #71428# online spelling and hyphenation in drawing objects
+
+ Revision 1.101 2000/01/18 11:19:15 os
+ #72016# LeaveOneGroup selects the group after leaving - call UnmarkAll
+
+ Revision 1.100 1999/11/19 16:40:24 os
+ modules renamed
+
+ Revision 1.99 1999/10/25 19:13:57 tl
+ ongoing ONE_LINGU implementation
+
+ Revision 1.98 1999/08/31 08:40:04 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+
+ Rev 1.97 31 Aug 1999 10:40:04 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+ Rev 1.96 04 Aug 1999 11:03:04 JP
+ have to change: Outliner -> SdrOutlines
+
+ Rev 1.95 21 Jun 1999 15:47:54 JP
+ Interface changes: SdrView::GetAttributes
+
+ Rev 1.94 18 Nov 1998 15:06:44 OM
+ #59280# FormController Create Modes verlassen
+
+ Rev 1.93 06 Jul 1998 16:09:26 OM
+ #52065# Gruppe verlassen bei Beendigung der DrawShell
+
+ Rev 1.92 12 Jun 1998 13:34:46 OM
+ Wieder SID_OBJECT_SELECT statt SID_DRAW_SELECT
+
+ Rev 1.91 09 Jun 1998 15:32:26 OM
+ VC-Controls entfernt
+
+ Rev 1.90 15 Apr 1998 15:33:20 OM
+ #49467 Objekte innerhalb von geschuetzten Rahmen duerfen nicht veraendert werden
+
+ Rev 1.89 08 Apr 1998 12:25:50 OM
+ #45639 Bei selektiertem Rahmen keine Drawshell melden
+
+ Rev 1.88 12 Mar 1998 10:04:16 OM
+ Forms korrekt erkennen
+
+ Rev 1.87 11 Mar 1998 17:38:32 OM
+ DB-FormShell
+
+ Rev 1.86 11 Mar 1998 17:01:54 OM
+ DB-FormShell
+
+ Rev 1.85 10 Mar 1998 14:17:58 OM
+ Konstruktionsmodul fuer Forms
+
+ Rev 1.84 29 Nov 1997 16:48:32 MA
+ includes
+
+ Rev 1.83 21 Nov 1997 15:00:18 MA
+ includes
+
+ Rev 1.82 03 Nov 1997 13:58:32 MA
+ precomp entfernt
+
+ Rev 1.81 04 Sep 1997 17:14:42 MA
+ includes
+
+ Rev 1.80 15 Aug 1997 15:27:32 OM
+ Draw- und Controlslots Bereichsumstellung
+
+ Rev 1.79 15 Aug 1997 14:45:36 OM
+ Draw- und Controlslots Bereichsumstellung
+
+ Rev 1.78 13 Aug 1997 12:18:36 OM
+ #42383# Selektion von Punkten im Konstruktionsmode
+
+ Rev 1.77 12 Aug 1997 13:32:40 OM
+ GPF beim Beenden gefixt
+
+ Rev 1.76 23 Jul 1997 21:42:32 HJS
+ includes
+
+ Rev 1.75 09 Jul 1997 18:31:56 MA
+ ein paar SS const
+
+ Rev 1.74 08 Jul 1997 12:07:42 OM
+ Draw-Selektionsmodi aufgeraeumt
+
+ Rev 1.73 25 Jun 1997 13:35:28 OM
+ #40966# DrawBaseShell-Ptr wieder eingefuehrt
+
+ Rev 1.72 17 Jun 1997 15:45:28 MA
+ DrawTxtShell nicht von BaseShell ableiten + Opts
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/uiview/viewfunc.hxx b/sw/source/ui/uiview/viewfunc.hxx
new file mode 100644
index 000000000000..e706fbb57d78
--- /dev/null
+++ b/sw/source/ui/uiview/viewfunc.hxx
@@ -0,0 +1,107 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewfunc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _VIEWFUNC_HXX
+#define _VIEWFUNC_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class ImageButton;
+class Point;
+class PrintDialog;
+class SfxItemSet;
+class SfxPrinter;
+class SfxTabPage;
+class Size;
+class SvxRuler;
+class SwPrtOptions;
+class SwScrollbar;
+class ViewShell;
+class Window;
+class SwWrtShell;
+
+// folgende Funktionen stehen im viewprt.cxx
+void MakeOptions( PrintDialog*, SwPrtOptions&, BOOL* pFlag, BOOL bWeb, SfxPrinter* pPrt = 0 );
+PrintDialog* CreatePrintDialog( Window* , USHORT, SwWrtShell* );
+void SetPrinter( SfxPrinter*, BOOL bWeb );
+SfxTabPage* CreatePrintOptionsPage( Window*, const SfxItemSet& );
+void SetAppPrintOptions( ViewShell* pSh, BOOL bWeb );
+
+// folgende Funktionen stehen im viewport.cxx
+void ViewResizePixel( const Window &rRef,
+ const Point &rOfst,
+ const Size &rSize,
+ const Size &rEditSz,
+ const BOOL bInner,
+ SwScrollbar* pVScrollbar,
+ SwScrollbar* pHScrollbar,
+ ImageButton* pPageUpBtn,
+ ImageButton* pPageDownBtn,
+ ImageButton* pNaviBtn,
+ Window* pScrollBarBox,
+ SvxRuler* pVLineal = 0,
+ SvxRuler* pHLineal = 0,
+ BOOL bIgnoreVisibility = FALSE,
+ BOOL bWebView = FALSE );
+
+
+#endif
diff --git a/sw/source/ui/uiview/viewling.cxx b/sw/source/ui/uiview/viewling.cxx
new file mode 100644
index 000000000000..caf2a45622b0
--- /dev/null
+++ b/sw/source/ui/uiview/viewling.cxx
@@ -0,0 +1,841 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewling.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+#include "uiparam.hxx" // fuer ITEMID_SPELLCHECK (muss _vor_ sfxdlg.hxx!)
+
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_LINGUISTIC_XTHESAURUS_HPP_
+#include <com/sun/star/linguistic/XThesaurus.hpp>
+#endif
+#ifndef _LINGU_LNGPROPS_HHX_
+#include <lingu/lngprops.hxx>
+#endif
+#ifndef _OFF_APP_HXX
+#include <offmgr/app.hxx>
+#endif
+#ifndef _UNO_LINGU_HXX
+#include <svx/unolingu.hxx>
+#endif
+
+
+#ifndef _SVX_THESDLG_HXX //autogen
+#include <svx/thesdlg.hxx>
+#endif
+#ifndef _INTN_HXX //autogen
+#include <tools/intn.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef NOOLDSV //autogen
+#include <vcl/system.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _EHDL_HXX //autogen
+#include <svtools/ehdl.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SVX_DLGUTIL_HXX
+#include <svx/dlgutil.hxx>
+#endif
+#ifndef _SVX_DIALMGR_HXX //autogen
+#include <svx/dialmgr.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVXERR_HXX
+#include <svx/svxerr.hxx>
+#endif
+
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+#include "initui.hxx" // fuer SpellPointer
+#include "finder.hxx" // Pathes fuer Lingu
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "basesh.hxx"
+#include "docsh.hxx" // CheckSpellChanges
+#include "viewopt.hxx" // Viewoptions
+#include "swundo.hxx" // fuer Undo-Ids
+#include "cmdid.h"
+#include "globals.hrc"
+#include "comcore.hrc" // STR_MULT_INTERACT_SPELL_WARN
+#include "splwrp.hxx" // "
+#include "hyp.hxx" // Trennung
+#include "olmenu.hxx" // PopupMenu fuer OnlineSpelling
+#include "pam.hxx" // Spelling: Multiselektion
+#include "edtwin.hxx"
+
+#include "view.hrc"
+
+using namespace ::com::sun::star;
+#define C2U(cChar) rtl::OUString::createFromAscii(cChar)
+/*--------------------------------------------------------------------
+ Beschreibung: Lingu-Dispatcher
+ --------------------------------------------------------------------*/
+
+
+void SwView::ExecLingu(SfxRequest &rReq)
+{
+ switch(rReq.GetSlot())
+ {
+ case FN_THESAURUS_DLG:
+ StartThesaurus();
+ break;
+ case FN_SPELLING_DLG:
+ SpellDocument( NULL, sal_False );
+ break;
+ case FN_ADD_UNKNOWN:
+ {
+ SpellDocument( NULL, sal_True );
+ }
+ break;
+ case FN_HYPHENATE_OPT_DLG:
+ HyphenateDocument();
+ break;
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: SpellCheck starten
+ --------------------------------------------------------------------*/
+
+
+void SwView::SpellDocument( const String* pStr, sal_Bool bAllRight )
+{
+ // do not spell if interactive spelling is active elsewhere
+ if (GetWrtShell().HasSpellIter())
+ {
+ MessBox( 0, WB_OK, String( SW_RES( STR_SPELL_TITLE ) ),
+ String( SW_RES( STR_MULT_INTERACT_SPELL_WARN ) ) ).Execute();
+ return;
+ }
+
+ SfxErrorContext aContext( ERRCTX_SVX_LINGU_SPELLING, aEmptyStr, pEditWin,
+ RID_SVXERRCTX, DIALOG_MGR() );
+
+ uno::Reference< linguistic::XSpellChecker1 > xSpell = ::GetSpellChecker();
+ if(!xSpell.is())
+ { // keine Arme keine Kekse
+ ErrorHandler::HandleError( ERRCODE_SVX_LINGU_LINGUNOTEXISTS );
+ return;
+ }
+ SpellKontext(sal_True);
+
+ SwViewOption* pVOpt = (SwViewOption*)pWrtShell->GetViewOptions();
+ sal_Bool bOldIdle = pVOpt->IsIdle();
+ pVOpt->SetIdle( sal_False );
+
+ sal_Bool bOldIns = pWrtShell->IsInsMode();
+ pWrtShell->SetInsMode( sal_True );
+
+ // den eigentlichen Inhalt pruefen
+ _SpellDocument( pStr, bAllRight );
+
+ pWrtShell->SetInsMode( bOldIns );
+
+ SpellKontext(sal_False);
+
+ // Ignorieren und ersetzen nur fuer einen Durchgang
+ // im Zuge des OnlineSpellings wollen wir die IgnoreList beibehalten
+ if (SvxGetChangeAllList().is())
+ SvxGetChangeAllList()->clear();
+ SvxSaveDictionaries( SvxGetDictionaryList() );
+
+ pVOpt->SetIdle( bOldIdle );
+ //SW_MOD()->CheckSpellChanges( sal_False, );
+
+ // SpellCache loeschen, Speicher freigeben.
+ // wg. Absturz in W95 verzichten wir auf die Freigabe...
+// pSpell->FlushAllLanguages();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Interne SpellFunktion
+ --------------------------------------------------------------------*/
+
+
+void SwView::_SpellDocument( const String* pStr, sal_Bool bAllRight )
+{
+ sal_Bool bSelection = ((SwCrsrShell*)pWrtShell)->HasSelection() ||
+ pWrtShell->GetCrsr() != pWrtShell->GetCrsr()->GetNext();
+
+ uno::Reference< linguistic::XSpellChecker1 > xSpell = ::GetSpellChecker();
+ uno::Reference< beans::XPropertySet > xProp( ::GetLinguPropertySet() );
+ sal_Bool bIsWrapReverse = xProp.is() ?
+ *(sal_Bool*)xProp->getPropertyValue( C2U(UPN_IS_WRAP_REVERSE) ).getValue() : sal_False;
+ sal_Bool bIsSpellSpecial = xProp.is() ?
+ *(sal_Bool*)xProp->getPropertyValue( C2U(UPN_IS_SPELL_SPECIAL) ).getValue() : sal_True;
+
+ sal_Bool bStart = bSelection || ( bIsWrapReverse ?
+ pWrtShell->IsEndOfDoc() : pWrtShell->IsStartOfDoc() );
+ sal_Bool bOther = !bSelection && !(pWrtShell->GetFrmType(0,sal_True) & FRMTYPE_BODY);
+
+ if( bOther && !bIsSpellSpecial )
+ // kein Sonderbereich eingeschaltet
+ {
+ // Ich will auch in Sonderbereichen trennen
+ QueryBox aBox( &GetEditWin(), SW_RES( DLG_SPECIAL_FORCED ) );
+ if( aBox.Execute() == RET_YES && xProp.is())
+ {
+ sal_Bool bTrue = sal_True;
+ uno::Any aTmp(&bTrue, ::getBooleanCppuType());
+ xProp->setPropertyValue( C2U(UPN_IS_SPELL_SPECIAL), aTmp );
+ }
+ else
+ return; // Nein Es wird nicht gespellt
+ }
+ if( bAllRight )
+ {
+// nothing to be
+// pSpell->SetAllRight( bAllRight );
+// pSpell->NewDic( pStr ? *pStr : (const String&) aEmptyStr, LANGUAGE_NOLANGUAGE, sal_False );
+ }
+ {
+ SvxDicListChgClamp aClamp( SvxGetDictionaryList() );
+ SwSpellWrapper aWrap( this, xSpell, bStart, bAllRight,
+ bOther, bSelection );
+ aWrap.SpellDocument();
+ }
+// pSpell->SetAllRight( sal_False );
+
+}
+
+
+void SwView::SpellStart( SvxSpellArea eWhich, sal_Bool bStartDone, sal_Bool bEndDone )
+{
+ uno::Reference< beans::XPropertySet > xProp( ::GetLinguPropertySet() );
+ sal_Bool bIsWrapReverse = xProp.is() ?
+ *(sal_Bool*)xProp->getPropertyValue( C2U(UPN_IS_WRAP_REVERSE) ).getValue() : sal_False;
+
+ SwDocPositions eStart = DOCPOS_START;
+ SwDocPositions eEnde = DOCPOS_END;
+ SwDocPositions eCurr = DOCPOS_CURR;
+ switch ( eWhich )
+ {
+ case SVX_SPELL_BODY:
+ if( bIsWrapReverse )
+ eCurr = DOCPOS_END;
+ else
+ eCurr = DOCPOS_START;
+ break;
+ case SVX_SPELL_BODY_END:
+ if( bIsWrapReverse )
+ {
+ if( bStartDone )
+ eStart = DOCPOS_CURR;
+ eCurr = DOCPOS_END;
+ }
+ else if( bStartDone )
+ eCurr = DOCPOS_START;
+ break;
+ case SVX_SPELL_BODY_START:
+ if( !bIsWrapReverse )
+ {
+ if( bEndDone )
+ eEnde = DOCPOS_CURR;
+ eCurr = DOCPOS_START;
+ }
+ else if( bEndDone )
+ eCurr = DOCPOS_END;
+ break;
+ case SVX_SPELL_OTHER:
+ if( bIsWrapReverse )
+ {
+ eStart = DOCPOS_OTHERSTART;
+ eEnde = DOCPOS_OTHEREND;
+ eCurr = DOCPOS_OTHEREND;
+ }
+ else
+ {
+ eStart = DOCPOS_OTHERSTART;
+ eEnde = DOCPOS_OTHEREND;
+ eCurr = DOCPOS_OTHERSTART;
+ }
+ break;
+ default:
+ ASSERT( !this, "SpellStart with unknown Area" );
+ }
+ pWrtShell->SpellStart( eStart, eEnde, eCurr );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Fehlermeldung beim Spelling
+ --------------------------------------------------------------------*/
+
+
+// Der uebergebene Pointer nLang ist selbst der Wert
+IMPL_LINK( SwView, SpellError, void *, nLang )
+{
+#ifdef DEBUG
+ sal_Bool bFocus = GetEditWin().HasFocus();
+#endif
+ sal_uInt16 nPend = 0;
+
+ if ( pWrtShell->ActionPend() )
+ {
+ pWrtShell->Push();
+ pWrtShell->ClearMark();
+ do
+ {
+ pWrtShell->EndAction();
+ ++nPend;
+ }
+ while( pWrtShell->ActionPend() );
+ }
+ LanguageType eLang = (LanguageType)(sal_uInt32)nLang;
+ String aErr(::GetLanguageString( eLang ) );
+
+ SwEditWin &rEditWin = GetEditWin();
+#ifdef DEBUG
+ bFocus = rEditWin.HasFocus();
+#endif
+ sal_uInt16 nWaitCnt = 0;
+ while( rEditWin.IsWait() )
+ {
+ rEditWin.LeaveWait();
+ ++nWaitCnt;
+ }
+ if ( LANGUAGE_NONE == eLang )
+ ErrorHandler::HandleError( ERRCODE_SVX_LINGU_NOLANGUAGE );
+ else
+ ErrorHandler::HandleError( *new StringErrorInfo( ERRCODE_SVX_LINGU_LANGUAGENOTEXISTS, aErr ) );
+
+ while( nWaitCnt )
+ {
+ rEditWin.EnterWait();
+ --nWaitCnt;
+ }
+#ifdef DEBUG
+ bFocus = GetEditWin().HasFocus();
+#endif
+
+ if ( nPend )
+ {
+ while( nPend-- )
+ pWrtShell->StartAction();
+ pWrtShell->Combine();
+ }
+#ifdef DEBUG
+ if( !bFocus )
+ GetEditWin().GrabFocus();
+#endif
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Spelling beenden und Cursor wiederherstellen
+ --------------------------------------------------------------------*/
+
+
+void SwView::SpellEnd()
+{
+ pWrtShell->SpellEnd();
+ if( pWrtShell->IsExtMode() )
+ pWrtShell->SetMark();
+}
+
+
+void SwView::HyphStart( SvxSpellArea eWhich )
+{
+ switch ( eWhich )
+ {
+ case SVX_SPELL_BODY:
+ pWrtShell->HyphStart( DOCPOS_START, DOCPOS_END );
+ break;
+ case SVX_SPELL_BODY_END:
+ pWrtShell->HyphStart( DOCPOS_CURR, DOCPOS_END );
+ break;
+ case SVX_SPELL_BODY_START:
+ pWrtShell->HyphStart( DOCPOS_START, DOCPOS_CURR );
+ break;
+ case SVX_SPELL_OTHER:
+ pWrtShell->HyphStart( DOCPOS_OTHERSTART, DOCPOS_OTHEREND );
+ break;
+ default:
+ ASSERT( !this, "HyphStart with unknown Area" );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Interaktive Trennung
+ --------------------------------------------------------------------*/
+
+
+void SwView::HyphenateDocument()
+{
+ // do not hyphenate if interactive hyphenationg is active elsewhere
+ if (GetWrtShell().HasHyphIter())
+ {
+ MessBox( 0, WB_OK, String( SW_RES( STR_HYPH_TITLE ) ),
+ String( SW_RES( STR_MULT_INTERACT_HYPH_WARN ) ) ).Execute();
+ return;
+ }
+
+ SfxErrorContext aContext( ERRCTX_SVX_LINGU_HYPHENATION, aEmptyStr, pEditWin,
+ RID_SVXERRCTX, DIALOG_MGR() );
+
+ uno::Reference< linguistic::XHyphenator > xHyph( ::GetHyphenator() );
+ if (!xHyph.is())
+ {
+ ErrorHandler::HandleError( ERRCODE_SVX_LINGU_LINGUNOTEXISTS );
+ return;
+ }
+
+ if (pWrtShell->GetSelectionType() & (SwWrtShell::SEL_DRW_TXT|SwWrtShell::SEL_DRW))
+ {
+ // Silbentrennung in einem Draw-Objekt
+ HyphenateDrawText();
+ }
+ else
+ {
+ SwViewOption* pVOpt = (SwViewOption*)pWrtShell->GetViewOptions();
+ sal_Bool bOldIdle = pVOpt->IsIdle();
+ pVOpt->SetIdle( sal_False );
+
+ uno::Reference< beans::XPropertySet > xProp( ::GetLinguPropertySet() );
+
+
+ pWrtShell->StartUndo(UNDO_INSATTR); // spaeter gueltig
+
+ sal_Bool bHyphSpecial = xProp.is() ?
+ *(sal_Bool*)xProp->getPropertyValue( C2U(UPN_IS_HYPH_SPECIAL) ).getValue() : sal_False;
+ sal_Bool bSelection = ((SwCrsrShell*)pWrtShell)->HasSelection() ||
+ pWrtShell->GetCrsr() != pWrtShell->GetCrsr()->GetNext();
+ sal_Bool bOther = pWrtShell->HasOtherCnt() && bHyphSpecial && !bSelection;
+ sal_Bool bStart = bSelection || ( !bOther && pWrtShell->IsStartOfDoc() );
+ sal_Bool bStop = sal_False;
+ if( !bOther && !(pWrtShell->GetFrmType(0,sal_True) & FRMTYPE_BODY) && !bSelection )
+ // kein Sonderbereich eingeschaltet
+ {
+ // Ich will auch in Sonderbereichen trennen
+ QueryBox aBox( &GetEditWin(), SW_RES( DLG_SPECIAL_FORCED ) );
+ if( aBox.Execute() == RET_YES )
+ {
+ bOther = sal_True;
+ if (xProp.is())
+ {
+ sal_Bool bTrue = sal_True;
+ uno::Any aTmp(&bTrue, ::getBooleanCppuType());
+ xProp->setPropertyValue( C2U(UPN_IS_HYPH_SPECIAL), aTmp );
+ }
+ }
+ else
+ bStop = sal_True; // Nein Es wird nicht getrennt
+ }
+
+ if( !bStop )
+ {
+ SwHyphWrapper aWrap( this, xHyph, bStart, bOther, bSelection );
+ aWrap.SpellDocument();
+ pWrtShell->EndUndo(UNDO_INSATTR);
+ }
+ pVOpt->SetIdle( bOldIdle );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Thesaurus starten
+ --------------------------------------------------------------------*/
+
+
+void SwView::StartThesaurus()
+{
+ if( pWrtShell->GetCrsr() != pWrtShell->GetCrsr()->GetNext() )
+ return;
+ sal_Bool bSelection = ((SwCrsrShell*)pWrtShell)->HasSelection();
+ if( bSelection && !pWrtShell->IsSelOnePara() )
+ return;
+
+ SfxErrorContext aContext( ERRCTX_SVX_LINGU_THESAURUS, aEmptyStr, pEditWin,
+ RID_SVXERRCTX, DIALOG_MGR() );
+
+ // Sprache rausholen
+ //
+ SfxItemSet aSet(pShell->GetPool(), RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE);
+ pWrtShell->GetAttr(aSet);
+
+ const SvxLanguageItem& rLang = (const SvxLanguageItem&)aSet.Get(
+ RES_CHRATR_LANGUAGE );
+ LanguageType eLang = rLang.GetLanguage();
+ if ( ( eLang == LANGUAGE_SYSTEM ) &&
+ ( ((eLang=GetpApp()->GetAppInternational().GetLanguage())==LANGUAGE_SYSTEM )
+ && ( ( eLang=::GetSystemLanguage() ) == LANGUAGE_SYSTEM ) ) )
+ eLang = LANGUAGE_DONTKNOW;
+
+ if ( eLang == LANGUAGE_DONTKNOW || eLang == LANGUAGE_NONE )
+ {
+ SpellError( (void *) LANGUAGE_NONE );
+ return;
+ }
+
+ SwViewOption* pVOpt = (SwViewOption*)pWrtShell->GetViewOptions();
+ sal_Bool bOldIdle = pVOpt->IsIdle();
+ pVOpt->SetIdle( sal_False );
+
+#ifdef TL_NEVER
+//!!! hier muß noch was getan werden... (Umsetzung der Funktionalitaet)
+ // ErrorLink setzen, alten merken
+ Link aOldLnk = pSpell->ChgErrorLink(LINK(this, SwView, SpellError));
+#endif
+
+
+ // get initial LookUp text
+ String aTmp = bSelection ?
+ pWrtShell->GetSelTxt() : pWrtShell->GetCurWord();
+
+ uno::Reference< linguistic::XThesaurus > xThes( OFF_APP()->GetThesaurus() );
+ SvxThesaurusDialog *pDlg = NULL;
+
+ if ( !xThes.is() || !xThes->hasLocale( SvxCreateLocale( eLang ) ) )
+ {
+ SpellError( (void *) eLang );
+ }
+ else
+ {
+ // create dialog
+ { //Scope for SwWait-Object
+ SwWait aWait( *GetDocShell(), sal_True );
+ pDlg = new SvxThesaurusDialog( &GetEditWin(),
+ xThes, aTmp, eLang );
+ }
+
+ {
+ // Hier wird der Thesaurus-Dialog im Applikationsfenster zentriert,
+ // und zwar oberhalb oder unterhalb der Cursorposition, je nachdem,
+ // wo mehr Platz ist.
+
+ // Current Word:
+ SwRect aRect( pWrtShell->GetCharRect() );
+ Point aTopPos = aRect.Pos();
+ Point aBtmPos( aTopPos.X(), aRect.Bottom() );
+ aTopPos = GetEditWin().LogicToPixel( aTopPos );
+ aTopPos = GetEditWin().OutputToScreenPixel( aTopPos );
+ aBtmPos = GetEditWin().LogicToPixel( aBtmPos );
+ aBtmPos = GetEditWin().OutputToScreenPixel( aBtmPos );
+ // ::frame::Desktop:
+ Rectangle aRct = GetEditWin().GetDesktopRectPixel();
+ Point aWinTop( aRct.TopLeft() );
+ Point aWinBtm( aRct.BottomRight() );
+ if ( aTopPos.Y() - aWinTop.Y() > aWinBtm.Y() - aBtmPos.Y() )
+ aWinBtm.Y() = aTopPos.Y();
+ else
+ aWinTop.Y() = aBtmPos.Y();
+
+ Size aSz = pDlg->GetSizePixel();
+ if ( aWinBtm.Y() - aWinTop.Y() > aSz.Height() )
+ {
+ aWinTop.X() = ( aWinTop.X() + aWinBtm.X() - aSz.Width() ) / 2;
+ aWinTop.Y() = ( aWinTop.Y() + aWinBtm.Y() - aSz.Height() ) / 2;
+ pDlg->SetPosPixel( aWinTop );
+ }
+ }
+
+ if ( pDlg->Execute()== RET_OK )
+ {
+ sal_Bool bOldIns = pWrtShell->IsInsMode();
+ pWrtShell->SetInsMode( sal_True );
+
+ pWrtShell->StartAllAction();
+ pWrtShell->StartUndo(UNDO_DELETE);
+
+ if( !bSelection )
+ {
+ if(!pWrtShell->IsInWrd() && !pWrtShell->IsEndWrd() &&
+ !pWrtShell->IsSttWrd())
+ pWrtShell->PrvWrd();
+
+ if(pWrtShell->IsEndWrd())
+ pWrtShell->Left();
+
+ pWrtShell->SelWrd();
+ }
+#ifdef TL_NEVER
+ String aTmp(pThes->GetPreStripped());
+ aTmp += pDlg->GetWord();
+ aTmp += pThes->GetPostStripped();
+
+ pWrtShell->Insert(aTmp);
+#endif
+ pWrtShell->Insert( pDlg->GetWord() );
+
+ pWrtShell->EndUndo(UNDO_DELETE);
+ pWrtShell->EndAllAction();
+
+ pWrtShell->SetInsMode( bOldIns );
+
+ }
+ }
+
+ delete pDlg;
+
+#ifdef TL_NEVER
+ pSpell->ChgErrorLink( aOldLnk );
+#endif
+ pVOpt->SetIdle( bOldIdle );
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Online-Vorschlaege anbieten
+ *--------------------------------------------------------------------*/
+
+
+sal_Bool SwView::ExecSpellPopup(const Point& rPt)
+{
+ sal_Bool bRet = sal_False;
+ const SwViewOption* pVOpt = pWrtShell->GetViewOptions();
+ if( pVOpt->IsOnlineSpell() &&
+ !pVOpt->IsHideSpell() &&
+ !pWrtShell->IsSelection())
+ {
+ if (pWrtShell->GetSelectionType() & SwWrtShell::SEL_DRW_TXT)
+ bRet = ExecDrwTxtSpellPopup(rPt);
+ else if (!pWrtShell->IsSelFrmMode())
+ {
+ const sal_Bool bOldViewLock = pWrtShell->IsViewLocked();
+ pWrtShell->LockView( sal_True );
+ pWrtShell->Push();
+ uno::Reference< linguistic::XSpellAlternatives > xAlt( pWrtShell->GetCorrection(&rPt) );
+ if ( xAlt.is() )
+ {
+ bRet = sal_True;
+ pWrtShell->SttSelect();
+ SwSpellPopup aPopup( pWrtShell, xAlt );
+ aPopup.Execute(
+ pEditWin,
+ rPt);
+ }
+
+ pWrtShell->Pop( sal_False );
+ pWrtShell->LockView( bOldViewLock );
+ }
+ }
+ return bRet;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.135 2000/09/18 16:06:13 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.134 2000/08/11 12:41:54 tl
+ #73640# no double interactive spelling/hyphenation, just show warning message
+
+ Revision 1.133 2000/07/04 15:19:51 tl
+ XHyphenator1 => XHyphenator
+
+ Revision 1.132 2000/05/26 07:21:35 os
+ old SW Basic API Slots removed
+
+ Revision 1.131 2000/03/30 13:02:17 os
+ include
+
+ Revision 1.130 2000/03/23 07:50:25 os
+ UNO III
+
+ Revision 1.129 2000/03/03 15:17:04 os
+ StarView remainders removed
+
+ Revision 1.128 2000/02/16 21:01:05 tl
+ #72219# Locale Umstellung
+
+ Revision 1.127 2000/02/11 14:59:35 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.126 2000/02/07 13:28:12 tl
+ #72445# bAllRight passed as argument to spell-wrapper
+
+ Revision 1.125 2000/01/11 10:37:42 tl
+ #70735# CheckSpellChanges called from SW_MOD for ONE_LINGU; used SvxDicListChgClamp
+
+ Revision 1.124 1999/12/10 13:09:48 tl
+ #70383# SvxGetLinguPropertySet => ::GetLinguPropertySet
+
+ Revision 1.123 1999/11/24 18:37:41 tl
+ check for Service availability
+
+ Revision 1.122 1999/11/19 16:40:24 os
+ modules renamed
+
+ Revision 1.121 1999/11/16 14:40:58 hr
+ #65293#: syntax
+
+ Revision 1.120 1999/11/10 11:10:56 tl
+ Ongoing ONE_LINGU implementation
+
+ Revision 1.119 1999/10/25 19:44:24 tl
+ ongoing ONE_LINGU implementation
+
+ Revision 1.118 1999/10/12 16:05:24 mh
+ chg: include
+
+ Revision 1.117 1999/08/31 08:40:00 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+
+ Rev 1.116 31 Aug 1999 10:40:00 TL
+ #if[n]def ONE_LINGU inserted (for transition of lingu to StarOne)
+
+ Rev 1.115 24 Aug 1999 14:55:20 TL
+ Lingu StarOne interface selectable with define ONE_LINGU
+
+ Rev 1.114 20 Aug 1999 16:08:42 TL
+ Switched to StarOne Thesaurus interface
+
+ Rev 1.113 08 Jul 1999 18:45:24 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.112 26 May 1999 14:45:24 HJS
+ fuer os2 umgebaut
+
+ Rev 1.111 11 May 1999 14:14:14 AMA
+ Fix #65174#: Thesaurus-Fehlermeldung, wenn keine Sprache eingstellt ist.
+
+ Rev 1.110 10 May 1999 14:16:32 AMA
+ Fix #65176#: Bei der Lingu-Fehlermeldung keine Sanduhr anzeigen
+
+ Rev 1.109 27 Nov 1998 14:58:04 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.108 25 Aug 1998 14:01:42 OM
+ #55404# Linguistik-Popup auf bei DrawText-Objekten aufrufen
+
+ Rev 1.107 24 Feb 1998 15:29:08 JP
+ Search..: SWPOSDOC entfernt, auf enums umgestellt
+
+ Rev 1.106 17 Dec 1997 16:28:42 ER
+ cast fuer IRIX
+
+ Rev 1.105 03 Dec 1997 17:10:34 AMA
+ Fix: Paintprobleme durch Actionklammerung bei automatischer Trennung
+
+ Rev 1.104 29 Nov 1997 16:48:38 MA
+ includes
+
+ Rev 1.103 21 Nov 1997 15:00:20 MA
+ includes
+
+ Rev 1.102 27 Oct 1997 12:01:14 AMA
+ Fix #44941#: Thesaurus bei prueft und ersetzt Selektionen genau.
+
+ Rev 1.101 13 Oct 1997 19:10:08 JP
+ pNext vom Ring wurde privat; zugriff ueber GetNext()
+
+ Rev 1.100 30 Sep 1997 16:53:50 TJ
+ include
+
+ Rev 1.99 12 Sep 1997 10:36:10 OS
+ ITEMID_* definiert
+
+ Rev 1.98 11 Sep 1997 12:18:18 AMA
+ Fix #43379# hier unnoetig, denn SpellArgs werden jetzt richtig initialisiert
+
+ Rev 1.97 04 Sep 1997 17:14:46 MA
+ includes
+
+ Rev 1.96 02 Sep 1997 14:38:06 AMA
+ Fix #43379#: Spezialbereiche nur pruefen, wenn sie angezeigt werden.
+
+ Rev 1.95 29 Aug 1997 16:00:36 OS
+ PopupMenu::Execute mit Window* fuer VCL
+
+ Rev 1.94 15 Aug 1997 11:48:00 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.93 11 Aug 1997 10:17:52 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.92 08 Aug 1997 17:26:14 OM
+ Headerfile-Umstellung
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/uiview/viewmdi.cxx b/sw/source/ui/uiview/viewmdi.cxx
new file mode 100644
index 000000000000..bc8a9467adde
--- /dev/null
+++ b/sw/source/ui/uiview/viewmdi.cxx
@@ -0,0 +1,890 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewmdi.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <string> // HACK: prevent conflict between STLPORT and Workshop headers
+
+#include "hintids.hxx"
+#include "uiparam.hxx"
+
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SVX_RULER_HXX //autogen
+#include <svx/ruler.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+
+
+#include "swmodule.hxx"
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "viewopt.hxx"
+#include "frmatr.hxx"
+#include "globals.hrc"
+#include "docsh.hxx"
+#include "uitool.hxx"
+#include "cmdid.h"
+#include "edtwin.hxx"
+#include "pagedesc.hxx"
+#include "bookmrk.hxx"
+#include "fldbas.hxx"
+#include "workctrl.hxx"
+#include "usrpref.hxx"
+#include "scroll.hxx"
+#include "wview.hxx"
+#include "view.hrc"
+#include "ribbar.hrc"
+#include "helpid.h"
+
+USHORT SwView::nMoveType = NID_PGE;
+BYTE SwView::nActMark = 0;
+
+#define VIEW_IMAGECOLOR COL_LIGHTBLUE
+
+void SwView::SetZoom( SvxZoomType eZoomType, short nFactor, BOOL bViewOnly )
+{
+ _SetZoom( GetEditWin().GetOutputSizePixel(), eZoomType, nFactor, bViewOnly );
+}
+
+void SwView::_SetZoom( const Size &rEditSize, SvxZoomType eZoomType,
+ short nFactor, BOOL bViewOnly )
+{
+ pWrtShell->LockPaint();
+ {
+ ACT_KONTEXT(pWrtShell);
+
+ long nFac = nFactor;
+
+ BOOL bWeb = 0 != PTR_CAST(SwWebView, this);
+ SwMasterUsrPref *pUsrPref = (SwMasterUsrPref*)SW_MOD()->GetUsrPref(bWeb);
+
+ const SwPageDesc &rDesc = pWrtShell->GetPageDesc(
+ pWrtShell->GetCurPageDesc() );
+ const SvxLRSpaceItem &rLRSpace = rDesc.GetMaster().GetLRSpace();
+ const SwViewOption *pOpt = pWrtShell->GetViewOptions();
+ long lLeftMargin;
+
+ if( eZoomType != SVX_ZOOM_PERCENT )
+ {
+ const long nOf = DOCUMENTBORDER * 2L;
+ Size aPageSize( pWrtShell->GetAnyCurRect(RECT_PAGE_CALC).SSize() );
+
+ if( PD_MIRROR == rDesc.GetUseOn() ) // gespiegelte Seiten
+ {
+ const SvxLRSpaceItem &rLeftLRSpace = rDesc.GetLeft().GetLRSpace();
+ aPageSize.Width() +=
+ Abs( long(rLeftLRSpace.GetLeft()) - long(rLRSpace.GetLeft()) );
+ }
+ if( SVX_ZOOM_OPTIMAL == eZoomType )
+ {
+ aPageSize.Width() -=
+ ( rLRSpace.GetLeft() + rLRSpace.GetRight() + nLeftOfst * 2 );
+ }
+ else
+ {
+ aPageSize.Width() += nOf;
+ aPageSize.Height() += nOf;
+ }
+ lLeftMargin = SVX_ZOOM_PAGEWIDTH != eZoomType ?
+ long(rLRSpace.GetLeft()) + DOCUMENTBORDER + nLeftOfst : 0L;
+
+ const MapMode aTmpMap( MAP_TWIP );
+ const Size aWindowSize( GetEditWin().PixelToLogic( rEditSize, aTmpMap ) );
+ nFac = aWindowSize.Width() * 100 / aPageSize.Width();
+ if( SVX_ZOOM_WHOLEPAGE == eZoomType )
+ {
+ long nVisPercent = aWindowSize.Height() * 100 / aPageSize.Height();
+ nFac = Min( nFac, nVisPercent );
+ }
+ }
+ else
+ lLeftMargin = long(rLRSpace.GetLeft()) + DOCUMENTBORDER;
+
+ nFac = Max( long( MINZOOM ), nFac );
+
+ SwViewOption aOpt( *pOpt );
+ SwDocShell* pDocShell = GetDocShell();
+ if ( pDocShell->GetProtocol().IsEmbed() ||
+ pDocShell->GetCreateMode() == SFX_CREATE_MODE_STANDARD )
+ {
+ //MasterUsrPrefs updaten UND DANACH die ViewOptions der aktuellen
+ //View updaten.
+ if ( !bViewOnly &&
+ (USHORT(nFac) != pUsrPref->GetZoom() ||
+ BYTE (eZoomType) != pUsrPref->GetZoomType()) )
+ {
+ pUsrPref->SetZoom ( USHORT(nFac) );
+ pUsrPref->SetZoomType( BYTE( eZoomType ) );
+ SW_MOD()->ApplyUsrPref( *pUsrPref, 0 );
+ pUsrPref->SetDefault ( FALSE );
+ }
+ if ( pOpt->GetZoom() != (USHORT) nFac )
+ {
+ aOpt.SetZoom ( USHORT(nFac) );
+ aOpt.SetReadonly(pOpt->IsReadonly());
+ pWrtShell->ApplyViewOptions( aOpt );
+ }
+ if ( eZoomType != SVX_ZOOM_PERCENT )
+ {
+ Point aPos;
+ if ( eZoomType == SVX_ZOOM_WHOLEPAGE )
+ aPos.Y() = pWrtShell->GetAnyCurRect(RECT_PAGE).Top() - DOCUMENTBORDER;
+ else
+ {
+ //sicherstellen, dass sich der Cursor im sichtbaren
+ //Bereich befindet, damit nur 1x gescrollt wird
+ aPos.X() = lLeftMargin;
+ const SwRect &rCharRect = pWrtShell->GetCharRect();
+ if ( rCharRect.Top() > GetVisArea().Bottom() ||
+ rCharRect.Bottom() < aPos.Y() )
+ aPos.Y() = rCharRect.Top() - rCharRect.Height();
+ else
+ aPos.Y() = GetVisArea().Top();
+ }
+ SetVisArea( aPos );
+ }
+ // OS: Notloesung - in CalcVisArea wird u.U. wieder SetZoom gerufen und
+ // dann werden falsche Werte eingestellt
+ ((SwViewOption*)pWrtShell->GetViewOptions())->SetZoomType((BYTE)eZoomType);
+ CalcVisArea( rEditSize ); //fuer das Neuberechnen des sichtbaren Bereiches
+ }
+ else if ( USHORT(nFac) != pOpt->GetZoom() )
+ {
+ aOpt.SetZoom ( USHORT(nFac) );
+ pWrtShell->ApplyViewOptions( aOpt );
+ }
+
+ const Fraction aFrac( nFac, 100 );
+ if ( pVLineal )
+ {
+ pVLineal->SetZoom( aFrac );
+ pVLineal->ForceUpdate();
+ }
+ if ( pHLineal )
+ {
+ pHLineal->SetZoom( aFrac );
+ pHLineal->ForceUpdate();
+ }
+ ((SwViewOption*)pWrtShell->GetViewOptions())->SetZoomType((BYTE)eZoomType);
+ }
+ pWrtShell->UnlockPaint();
+// eZoom = eZoomType;
+}
+
+/*
+ * Scrollbar - Handler
+ */
+
+int SwView::_CreateScrollbar( int bHori )
+{
+ Window *pMDI = &GetViewFrame()->GetWindow();
+ SwScrollbar** ppScrollbar = bHori ? &pHScrollbar : &pVScrollbar;
+
+ ASSERT( !*ppScrollbar, "vorher abpruefen!" )
+
+ if( !bHori )
+ CreatePageButtons( !bShowAtResize );
+
+ // wenn beide Scrollbar eingeschaltet werden, dann auch die ScrollbarBox
+ // anlegen
+ if( !pScrollFill && (bHori ? pVScrollbar : pHScrollbar) )
+ {
+ pScrollFill = new ScrollBarBox( pMDI, GetDocShell()->IsInFrame()
+ ? 0 : WB_SIZEABLE );
+ if ( !bShowAtResize )
+ pScrollFill->Show();
+ }
+
+ *ppScrollbar = new SwScrollbar( pMDI, bHori );
+ UpdateScrollbars();
+ if(bHori)
+ (*ppScrollbar)->SetScrollHdl( LINK( this, SwView, EndScrollHdl ));
+ else
+ (*ppScrollbar)->SetScrollHdl( LINK( this, SwView, ScrollHdl ));
+ (*ppScrollbar)->SetEndScrollHdl( LINK( this, SwView, EndScrollHdl ));
+
+ (*ppScrollbar)->EnableDrag( TRUE );
+ (*ppScrollbar)->SetAuto( pWrtShell->IsBrowseMode() &&
+ !GetDocShell()->GetProtocol().IsInPlaceActive() );
+
+ InvalidateBorder();
+
+ // Scrollbar muss nochmals getestet werden, da im InvalidateBorder u.U. der
+ // Scrollbar wieder geloescht wurde
+ if ( !bShowAtResize && (*ppScrollbar))
+ (*ppScrollbar)->Show();
+
+ return 1;
+}
+
+void SwView::CreatePageButtons(BOOL bShow)
+{
+ Window *pMDI = &GetViewFrame()->GetWindow();
+ pPageUpBtn = new SwHlpImageButton(pMDI, SW_RES( BTN_PAGEUP ), TRUE );
+ pPageUpBtn->SetHelpId(HID_SCRL_PAGEUP);
+ pPageDownBtn = new SwHlpImageButton(pMDI, SW_RES( BTN_PAGEDOWN ), FALSE );
+ pPageDownBtn->SetHelpId(HID_SCRL_PAGEDOWN);
+ pNaviBtn = new SwNaviImageButton(pMDI);
+ pNaviBtn->SetHelpId(HID_SCRL_NAVI);
+ Link aLk( LINK( this, SwView, BtnPage ) );
+ pPageUpBtn->SetClickHdl( aLk );
+ pPageDownBtn->SetClickHdl( aLk );
+ if(nMoveType != NID_PGE)
+ {
+ Color aColor(VIEW_IMAGECOLOR);
+ SetImageButtonColor(aColor);
+ }
+
+ if(bShow)
+ {
+ pPageUpBtn->Show();
+ pPageDownBtn->Show();
+ pNaviBtn->Show();
+ }
+};
+
+int SwView::_KillScrollbar( int bHori )
+{
+ SwScrollbar** ppScrBar;
+ if( bHori )
+ {
+ if( 0 == *( ppScrBar = &pHScrollbar ) )
+ return 1;
+ }
+ else
+ {
+ if( 0 == *( ppScrBar = &pVScrollbar ) )
+ return 1;
+ DELETEZ(pNaviBtn);
+ DELETEZ(pPageUpBtn);
+ DELETEZ(pPageDownBtn);
+ }
+ DELETEZ( *ppScrBar );
+
+ // wird einer der Scrollbar ausgeschaltet, muss auch die ScrollbarBox
+ // entfernt werden
+ if( pScrollFill )
+ DELETEZ( pScrollFill );
+
+ InvalidateBorder();
+ return 1;
+}
+
+/*
+ * Button-Handler
+ */
+IMPL_LINK( SwView, BtnPage, Button *, pButton )
+{
+ MoveNavigation(pButton == pPageDownBtn);
+ return 0;
+}
+/*-----------------20.06.97 10:46-------------------
+
+--------------------------------------------------*/
+void SwView::MoveNavigation(BOOL bNext)
+{
+ SwWrtShell& rSh = GetWrtShell();
+ switch( nMoveType )
+ {
+ case NID_PGE:
+ bNext ? PhyPageDown() : PhyPageUp();
+ break;
+ case NID_TBL :
+ rSh.EnterStdMode();
+ if(bNext)
+ rSh.MoveTable(fnTableNext, fnTableStart);
+ else
+ rSh.MoveTable(fnTablePrev, fnTableStart);
+ break;
+ case NID_FRM :
+ case NID_GRF:
+ case NID_OLE:
+ {
+ FlyCntType eType = FLYCNTTYPE_FRM;
+ if(nMoveType == NID_GRF)
+ eType = FLYCNTTYPE_GRF;
+ else if(nMoveType == NID_OLE)
+ eType = FLYCNTTYPE_OLE;
+ BOOL bSuccess = bNext ?
+ rSh.GotoNextFly(eType) :
+ rSh.GotoPrevFly(eType);
+ if(bSuccess)
+ {
+ rSh.HideCrsr();
+ rSh.EnterSelFrmMode();
+ }
+ }
+ break;
+ case NID_DRW :
+ case NID_CTRL:
+ rSh.GotoObj(bNext,
+ nMoveType == NID_DRW ?
+ DRAW_SIMPLE :
+ DRAW_CONTROL);
+ break;
+ case NID_REG :
+ rSh.EnterStdMode();
+ if(bNext)
+ rSh.MoveRegion(fnRegionNext, fnRegionStart);
+ else
+ rSh.MoveRegion(fnRegionPrev, fnRegionStart);
+
+ break;
+ case NID_BKM :
+ rSh.EnterStdMode();
+ GetViewFrame()->GetDispatcher()->Execute(bNext ?
+ FN_NEXT_BOOKMARK :
+ FN_PREV_BOOKMARK);
+ break;
+ case NID_OUTL:
+ rSh.EnterStdMode();
+ bNext ? rSh.GotoNextOutline() : rSh.GotoPrevOutline();
+ break;
+ case NID_SEL :
+ bNext ? rSh.GoNextCrsr() : rSh.GoPrevCrsr();
+ break;
+ case NID_FTN:
+ rSh.EnterStdMode();
+ bNext ?
+ rSh.GotoNextFtnAnchor() :
+ rSh.GotoPrevFtnAnchor();
+ break;
+ case NID_MARK:
+ {
+ // Selektionen aufheben
+ rSh.MoveCrsr();
+ rSh.EnterStdMode();
+ const USHORT nBookCnt = rSh.GetBookmarkCnt();
+ USHORT nMarkCount = 0;
+ USHORT nRealIdx[MAX_MARKS];
+ for( USHORT nCount = 0; nCount < nBookCnt; ++nCount )
+ {
+ if( rSh.GetBookmark( nCount ).IsMark() )
+ {
+ nRealIdx[nMarkCount] = nCount;
+ ++nMarkCount;
+ }
+ }
+ if (nMarkCount)
+ {
+ if(!bNext)
+ {
+ if (nActMark > 1)
+ --nActMark;
+ else
+ nActMark = nMarkCount;
+ }
+ else
+ {
+ ++nActMark;
+ if (nActMark > MAX_MARKS || nActMark > nMarkCount)
+ nActMark = 1;
+ }
+
+ rSh.GotoBookmark( nRealIdx[nActMark - 1] );
+ }
+ }
+ break;
+ case NID_POSTIT:
+ {
+
+ SwFieldType* pFldType = rSh.GetFldType(0, RES_POSTITFLD);
+ rSh.MoveFldType( pFldType, bNext );
+ }
+ break;
+ case NID_SRCH_REP:
+ if(pSrchItem)
+ {
+ BOOL bBackward = pSrchItem->GetBackward();
+ if(rSh.HasSelection() && !bNext == rSh.IsCrsrPtAtEnd())
+ rSh.SwapPam();
+ pSrchItem->SetBackward(!bNext);
+ SfxRequest aReq(FN_REPEAT_SEARCH, SFX_CALLMODE_SLOT, GetPool());
+ ExecSearch(aReq);
+ pSrchItem->SetBackward(bBackward);
+ }
+ break;
+ case NID_INDEX_ENTRY:
+ rSh.GotoNxtPrvTOXMark(bNext);
+ break;
+
+ case NID_TABLE_FORMULA:
+ rSh.GotoNxtPrvTblFormula( bNext );
+ break;
+
+ case NID_TABLE_FORMULA_ERROR:
+ rSh.GotoNxtPrvTblFormula( bNext, TRUE );
+ break;
+ }
+ pEditWin->GrabFocus();
+}
+
+/*************************************************************************
+|*
+|* SwView::CreateTab()
+|*
+|* Beschreibung
+|* Ersterstellung VB 29.05.91
+|* Letzte Aenderung OS 09.05.96
+|*
+*************************************************************************/
+
+int SwView::_CreateTab()
+{
+ ASSERT( !StatTab(), "vorher abpruefen!" )
+
+ pHLineal->SetActive(GetFrame() && IsActive());
+
+ pHLineal->Show();
+ InvalidateBorder();
+ return 1;
+}
+
+/*************************************************************************
+|*
+|* SwView::KillTab()
+|*
+|* Beschreibung
+|* Ersterstellung VB 29.05.91
+|* Letzte Aenderung OS 09.05.96
+|*
+*************************************************************************/
+
+int SwView::_KillTab()
+{
+ ASSERT( StatTab(), "vorher abpruefen!" )
+
+ pHLineal->Hide();
+// DELETEZ(pHLineal);
+ InvalidateBorder();
+ return 1;
+}
+
+void SwView::ChangeTabMetric( FieldUnit eUnit )
+{
+ if ( pHLineal )
+ {
+ if(eUnit == FUNIT_MM)
+ eUnit = FUNIT_CM;
+ if(pHLineal->GetUnit() != eUnit )
+ {
+ pHLineal->SetUnit( eUnit );
+ pHLineal->Invalidate();
+ }
+ }
+}
+
+void SwView::ChangeVLinealMetric( FieldUnit eUnit )
+{
+ if ( pVLineal )
+ {
+ if(eUnit == FUNIT_MM)
+ eUnit = FUNIT_CM;
+ if(pVLineal->GetUnit() != eUnit)
+ {
+ pVLineal->SetUnit( eUnit );
+ pVLineal->Invalidate();
+ }
+ }
+}
+
+/*************************************************************************
+|*
+|* SwView::CreateVLineal()
+|*
+|* Beschreibung
+|* Ersterstellung VB 29.05.91
+|* Letzte Aenderung VB 19.05.92
+|*
+*************************************************************************/
+
+int SwView::_CreateVLineal()
+{
+ ASSERT( !StatVLineal(), "vorher abpruefen!" )
+
+ Window *pMDI = &GetViewFrame()->GetWindow();
+
+ pVLineal = new SvxRuler(pMDI, pEditWin,
+ 0,
+ GetViewFrame()->GetBindings(),
+ WB_VSCROLL | WB_3DLOOK | WB_BORDER );
+ if( pVLineal && pHLineal )
+ pHLineal->SetBorderPos( pVLineal->GetSizePixel().Width()-1 );
+
+ pVLineal->SetActive(GetFrame() && IsActive());
+ const SwViewOption* pOpt = pWrtShell->GetViewOptions();
+ pVLineal->SetZoom(Fraction(pOpt->GetZoom(), 100));
+ BOOL bWeb = 0 != PTR_CAST(SwWebView, this);
+ FieldUnit eMetric = ::GetDfltMetric(bWeb);
+ if(eMetric == FUNIT_MM)
+ eMetric = FUNIT_CM;
+ pVLineal->SetUnit(eMetric);
+
+ InvalidateBorder();
+ if ( !bShowAtResize )
+ pVLineal->Show();
+ return 1;
+}
+
+/*************************************************************************
+|*
+|* SwView::KillVLineal()
+|*
+|* Beschreibung
+|* Ersterstellung VB 29.05.91
+|* Letzte Aenderung VB 29.05.91
+|*
+*************************************************************************/
+
+int SwView::_KillVLineal()
+{
+ ASSERT( StatVLineal(), "vorher abpruefen!" )
+
+ pVLineal->Hide();
+
+ if ( pHLineal )
+ pHLineal->SetBorderPos( 0 );
+
+ DELETEZ(pVLineal);
+ InvalidateBorder();
+ return 1;
+}
+/*************************************************************************
+|*
+|* SwView::ExecRulerClick()
+|*
+|* Beschreibung
+|* Ersterstellung OS 15.06.95
+|* Letzte Aenderung
+|*
+*************************************************************************/
+
+IMPL_LINK( SwView, ExecRulerClick, Ruler *, pRuler )
+{
+ USHORT nDefPage = 0;
+ switch( pRuler->GetClickType() )
+ {
+ case RULER_TYPE_DONTKNOW:
+ case RULER_TYPE_OUTSIDE:
+ case RULER_TYPE_INDENT:
+ case RULER_TYPE_MARGIN1:
+ case RULER_TYPE_MARGIN2:
+ nDefPage = TP_PARA_STD;
+ break;
+ default:
+ nDefPage = TP_TABULATOR;
+
+ }
+
+ SfxUInt16Item aDefPage(SID_PARA_DLG, nDefPage);
+ GetViewFrame()->GetDispatcher()->Execute( SID_PARA_DLG,
+ SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD,
+ &aDefPage, 0L );
+ return 0;
+}
+
+
+/*-----------------20.02.97 09:11-------------------
+
+--------------------------------------------------*/
+
+USHORT SwView::GetMoveType()
+{
+ return nMoveType;
+}
+/*-----------------20.02.97 09:11-------------------
+
+--------------------------------------------------*/
+
+void SwView::SetMoveType(USHORT nSet)
+{
+ BOOL bLastPage = nMoveType == NID_PGE;
+ nMoveType = nSet;
+ BOOL bNewPage = nMoveType == NID_PGE;
+ if(bNewPage != bLastPage)
+ {
+ Color aColor(bNewPage ? COL_BLACK : VIEW_IMAGECOLOR);
+ const TypeId aTypeId = TYPE(SwView);
+ SwView* pView = (SwView*)SfxViewShell::GetFirst(&aTypeId);
+ while( pView )
+ {
+ pView->SetImageButtonColor(aColor);
+ pView = (SwView*)SfxViewShell::GetNext(*pView, &aTypeId);
+ }
+ }
+}
+
+/*-----------------20.06.97 11:18-------------------
+
+--------------------------------------------------*/
+void SwView::SetActMark(BYTE nSet)
+{
+ nActMark = nSet;
+}
+
+/*-----------------15.03.97 10:53-------------------
+
+--------------------------------------------------*/
+
+void SwView::SetImageButtonColor(Color& rColor)
+{
+ if(pPageUpBtn)
+ {
+ pPageUpBtn->SetControlForeground(rColor);
+ pPageDownBtn->SetControlForeground(rColor);
+ }
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.126 2000/09/18 16:06:13 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.125 2000/09/07 15:59:33 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.124 2000/05/24 13:13:57 hr
+ conflict between STLPORT and Workshop header
+
+ Revision 1.123 2000/05/10 11:53:20 os
+ Basic API removed
+
+ Revision 1.122 2000/03/03 15:17:04 os
+ StarView remainders removed
+
+ Revision 1.121 1999/07/20 07:44:28 OS
+ #67585# ZoomValue/ZoomType :SetZoom changed
+
+
+ Rev 1.120 20 Jul 1999 09:44:28 OS
+ #67585# ZoomValue/ZoomType :SetZoom changed
+
+ Rev 1.119 14 Jan 1999 14:19:54 JP
+ Bug #60794#: Fehlererkennung beim Tabellenrechnen und anspringen von Formeln
+
+ Rev 1.118 03 Dec 1998 10:26:18 OS
+ #59441# Verzeichniseintrag in der Navigation
+
+ Rev 1.117 22 Sep 1998 11:36:28 MA
+ #56856# Kontext besser
+
+ Rev 1.116 22 Sep 1998 11:28:16 MA
+ #56856# Paint locken fuer Anderung vom Zoom
+
+ Rev 1.115 08 Sep 1998 17:05:12 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.114 14 Jun 1998 16:13:52 MA
+ chg: Navi-Tool auch fuer Browse-View
+
+ Rev 1.113 20 Mar 1998 13:23:54 MA
+ OleVis2Page durch BrowseMode ersetzt
+
+ Rev 1.112 24 Feb 1998 18:06:38 OS
+ includes, SwapPam
+
+ Rev 1.111 24 Feb 1998 12:02:02 OS
+ Navigationstool erweitert
+
+ Rev 1.110 07 Feb 1998 10:39:36 OS
+ GrabFocus nach Navigations-Move #47160#
+
+ Rev 1.109 21 Nov 1997 15:00:20 MA
+ includes
+
+ Rev 1.108 03 Nov 1997 13:58:30 MA
+ precomp entfernt
+
+ Rev 1.107 04 Sep 1997 17:14:42 MA
+ includes
+
+ Rev 1.106 01 Sep 1997 13:13:50 OS
+ DLL-Umstellung
+
+ Rev 1.105 23 Aug 1997 10:12:02 OS
+ Zoom ganze Seite: Factor nicht zusaetzlich mit den ViewOpt-Einstellungen multiplizieren #43052#
+
+ Rev 1.104 12 Aug 1997 15:57:26 OS
+ frmitems/textitem/paraitem aufgeteilt
+
+ Rev 1.103 08 Aug 1997 17:25:56 OM
+ Headerfile-Umstellung
+
+ Rev 1.102 07 Aug 1997 14:58:56 OM
+ Headerfile-Umstellung
+
+ Rev 1.101 16 Jul 1997 17:25:54 AMA
+ Fix: Rundungsfehler minimieren durch PixelToLogic mit 100%-MapMode
+
+ Rev 1.100 20 Jun 1997 13:55:36 OS
+ neu: MoveNavigation
+
+ Rev 1.99 09 Jun 1997 14:28:06 MA
+ chg: Browse-Flag nur noch am Doc
+
+ Rev 1.98 08 Apr 1997 10:22:46 MA
+ includes
+
+ Rev 1.97 24 Mar 1997 15:57:54 OS
+ SetZoomType vor CalcVisArea
+
+ Rev 1.96 15 Mar 1997 11:27:24 OS
+ PageUp/Down-Buttons faerben
+
+ Rev 1.95 04 Mar 1997 19:11:42 OS
+ Spruenge im Text: zunaechst EnterStdMode
+
+ Rev 1.94 22 Feb 1997 20:15:48 OS
+ eigenes Image fuer Button
+
+ Rev 1.93 21 Feb 1997 17:03:00 OS
+ ImageButtons veraendert; Handler erweitert
+
+ Rev 1.92 20 Feb 1997 16:46:16 OS
+ Navigation funktioniert
+
+ Rev 1.91 19 Feb 1997 16:55:54 OS
+ dritter Button/Navigation
+
+ Rev 1.90 05 Feb 1997 08:29:14 MA
+ chg: unn?tzes label entfernt
+
+ Rev 1.89 30 Jan 1997 11:03:10 OS
+ UsrPrefs verdoppelt
+
+ Rev 1.88 11 Dec 1996 08:42:18 OS
+ ClickType am Ruler auswerten -> gfs. Einzuege-TabPage statt Tabulator
+
+ Rev 1.87 10 Dec 1996 19:07:06 MA
+ VertScrollbar
+
+ Rev 1.86 11 Nov 1996 11:10:52 MA
+ ResMgr
+
+ Rev 1.85 14 Oct 1996 09:02:02 OS
+ Readonly an den ViewOptions vor ApplyViewOptions einstellen
+
+ Rev 1.84 07 Oct 1996 09:58:08 OS
+ Aktivierung der Lineale im _Create abhaengig von der Aktivierung der View
+
+ Rev 1.83 23 Sep 1996 15:37:34 MA
+ fix: Zoomtype und Browser
+
+ Rev 1.82 12 Sep 1996 17:00:32 OS
+ GetAnyCurRect() ersetzt GetCur*Rect
+
+ Rev 1.81 28 Aug 1996 14:19:18 JP
+ ScrollBarBox: im FrameSet-Doc nicht das Sizeable-Flag setzen
+
+ Rev 1.80 14 Aug 1996 15:15:30 OS
+ SetAuto fuer BrowseMode nicht nur fuer HScrollbar
+
+ Rev 1.79 29 Jul 1996 15:47:14 MA
+ includes
+
+ Rev 1.78 12 Jul 1996 14:44:22 OS
+ vert. Scrollbar geht auch im BrowseMode zum ScrollHdl
+
+ Rev 1.77 05 Jul 1996 14:55:38 OS
+ Anzeige der akt. Seitennummer w„hrend des Scrollens in der nicht-Browse-View
+
+ Rev 1.76 26 Jun 1996 15:02:04 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.75 19 Jun 1996 12:30:04 OM
+ Umstellung auf 323
+
+ Rev 1.74 10 Jun 1996 17:55:50 MA
+ Breite+HScroll fuer Browser
+
+ Rev 1.73 31 May 1996 07:52:04 OS
+ _CreateScrollbar: nach InvalidateBorder Pointer nochmal testen
+
+ Rev 1.72 24 May 1996 09:20:20 OS
+ neu: CreatePageButtons
+
+ Rev 1.71 09 May 1996 15:18:58 OS
+ HLineal ist immer existent und wird nur noch versteckt
+
+ Rev 1.70 06 May 1996 17:00:36 MA
+ chg: Scrollbars fuer browse und ole richtig
+
+ Rev 1.69 24 Apr 1996 15:02:12 OS
+ Umstellung UsrPref/ViewOption
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/uiview/viewport.cxx b/sw/source/ui/uiview/viewport.cxx
new file mode 100644
index 000000000000..6a091614e638
--- /dev/null
+++ b/sw/source/ui/uiview/viewport.cxx
@@ -0,0 +1,1508 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewport.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SV_HELP_HXX //autogen
+#include <vcl/help.hxx>
+#endif
+
+#ifndef _SVX_RULER_HXX //autogen
+#include <svx/ruler.hxx>
+#endif
+#ifndef _SVX_PAPERINF_HXX //autogen
+#include <svx/paperinf.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXSTBMGR_HXX //autogen
+#include <sfx2/stbmgr.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+
+
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "swmodule.hxx"
+#include "viewopt.hxx"
+#include "frmatr.hxx"
+#include "docsh.hxx"
+#include "cmdid.h"
+#include "edtwin.hxx"
+#include "scroll.hxx"
+#include "wview.hxx"
+#include "usrpref.hxx"
+#include "pagedesc.hxx"
+#include "workctrl.hxx"
+
+//Das SetVisArea der DocShell darf nicht vom InnerResizePixel gerufen werden.
+//Unsere Einstellungen muessen aber stattfinden.
+static BOOL bProtectDocShellVisArea = FALSE;
+
+static USHORT nPgNum = 0;
+
+inline BOOL SwView::IsDocumentBorder()
+{
+ return GetDocShell()->GetProtocol().IsInPlaceActive() ||
+ GetDocShell()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED ||
+ pWrtShell->IsBrowseMode();
+}
+
+inline long GetLeftMargin( SwView &rView )
+{
+ BOOL bWeb = 0 != PTR_CAST(SwWebView, &rView);
+ SvxZoomType eType = (SvxZoomType)SW_MOD()->GetUsrPref(bWeb)->GetZoomType();
+ long lRet = rView.GetWrtShell().GetAnyCurRect(RECT_PAGE_PRT).Left();
+ return eType == SVX_ZOOM_PERCENT ? lRet + DOCUMENTBORDER :
+ eType == SVX_ZOOM_PAGEWIDTH ? 0 :
+ lRet + DOCUMENTBORDER + nLeftOfst;
+}
+
+//-------------------------------------------------------------------------
+
+void lcl_GetPos(SwView* pView,
+ Point& rPos,
+ SwScrollbar* pScrollbar,
+ FASTBOOL bBorder)
+{
+ SwWrtShell &rSh = pView->GetWrtShell();
+ const Size aDocSz( rSh.GetDocSize() );
+
+ const long lBorder = bBorder ? DOCUMENTBORDER : DOCUMENTBORDER * 2;
+ BOOL bHori = pScrollbar->IsHoriScroll();
+
+ const long lPos = pScrollbar->GetThumbPos() + (bBorder ? DOCUMENTBORDER : 0);
+ long Point:: *pPt = bHori ? &Point::nA : &Point::nB;
+ long Size:: *pSz = bHori ? &Size::nA : &Size::nB;
+
+ long lDelta = lPos - rSh.VisArea().Pos().*pPt;
+ const long lSize = aDocSz.*pSz + lBorder;
+ // Bug 11693: sollte rechts oder unten zuviel Wiese sein, dann muss
+ // diese von der VisArea herausgerechnet werden!
+ long nTmp = pView->GetVisArea().Right()+lDelta;
+ if ( bHori && nTmp > lSize )
+ lDelta -= nTmp - lSize;
+ nTmp = pView->GetVisArea().Bottom()+lDelta;
+ if ( !bHori && nTmp > lSize )
+ lDelta -= nTmp - lSize;
+
+ rPos.*pPt += lDelta;
+ if ( bBorder && rPos.*pPt < DOCUMENTBORDER )
+ rPos.*pPt = DOCUMENTBORDER;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Nullpunkt Lineal setzen
+ --------------------------------------------------------------------*/
+
+void SwView::InvalidateRulerPos()
+{
+ static USHORT __READONLY_DATA aInval[] =
+ {
+ SID_ATTR_PARA_LRSPACE, SID_RULER_BORDERS, SID_RULER_PAGE_POS,
+ SID_RULER_LR_MIN_MAX, SID_ATTR_LONG_ULSPACE, SID_ATTR_LONG_LRSPACE,
+ FN_STAT_PAGE, 0
+ };
+
+ GetViewFrame()->GetBindings().Invalidate(aInval);
+
+ DBG_ASSERT(pHLineal, "warum ist das Lineal nicht da?")
+ pHLineal->ForceUpdate();
+ if( pVLineal )
+ pVLineal->ForceUpdate();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: begrenzt das Scrollen soweit, dass jeweils nur einen
+ viertel Bildschirm bis vor das Ende des Dokumentes
+ gescrollt werden kann.
+ --------------------------------------------------------------------*/
+
+long SwView::SetHScrollMax( long lMax )
+{
+ const long lBorder = IsDocumentBorder() ? DOCUMENTBORDER : DOCUMENTBORDER * 2;
+ const long lSize = GetDocSz().Width() + lBorder - aVisArea.GetWidth();
+
+ // bei negativen Werten ist das Dokument vollstaendig sichtbar;
+ // in diesem Fall kein Scrollen
+ return Max( Min( lMax, lSize ), 0L );
+}
+
+
+long SwView::SetVScrollMax( long lMax )
+{
+ const long lBorder = IsDocumentBorder() ? DOCUMENTBORDER : DOCUMENTBORDER * 2;
+ long lSize = GetDocSz().Height() + lBorder - aVisArea.GetHeight();
+ return Max( Min( lMax, lSize), 0L ); // siehe horz.
+}
+
+
+Point SwView::AlignToPixel(const Point &rPt) const
+{
+ return GetEditWin().PixelToLogic( GetEditWin().LogicToPixel( rPt ) );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Dokumentgroesse hat sich geaendert
+ --------------------------------------------------------------------*/
+
+void SwView::DocSzChgd(const Size &rSz)
+{
+
+extern int bDocSzUpdated;
+
+ aDocSz = rSz;
+
+ if( !pWrtShell || aVisArea.IsEmpty() ) // keine Shell -> keine Aenderung
+ {
+ bDocSzUpdated = FALSE;
+ return;
+ }
+
+ //Wenn Text geloescht worden ist, kann es sein, dass die VisArea hinter
+ //den sichtbaren Bereich verweist
+ Rectangle aNewVisArea( aVisArea );
+ BOOL bModified = FALSE;
+ const SwTwips lGreenOffset = IsDocumentBorder() ? DOCUMENTBORDER : DOCUMENTBORDER * 2;
+ SwTwips lTmp = aDocSz.Width() + lGreenOffset;
+ if ( aNewVisArea.Right() >= lTmp )
+ {
+ lTmp = aNewVisArea.Right() - lTmp;
+ aNewVisArea.Right() -= lTmp;
+ aNewVisArea.Left() -= lTmp;
+ bModified = TRUE;
+ }
+ lTmp = aDocSz.Height() + lGreenOffset;
+ if ( aNewVisArea.Bottom() >= lTmp )
+ {
+ lTmp = aNewVisArea.Bottom() - lTmp;
+ aNewVisArea.Bottom() -= lTmp;
+ aNewVisArea.Top() -= lTmp;
+ bModified = TRUE;
+ }
+
+ if ( bModified )
+ SetVisArea( aNewVisArea, FALSE );
+
+// FASTBOOL bHResize = pHScrollbar && pHScrollbar->IsAuto() && pHScrollbar->IsVisible();
+// FASTBOOL bVResize = pVScrollbar && pVScrollbar->IsAuto() && pVScrollbar->IsVisible();
+ if ( UpdateScrollbars() && !bInOuterResizePixel )//&&
+// ((bHResize != (pHScrollbar && pHScrollbar->IsAuto() && pHScrollbar->IsVisible())) ||
+// (bVResize != (pVScrollbar && pVScrollbar->IsAuto() && pVScrollbar->IsVisible()))) )
+ {
+ OuterResizePixel( Point(),
+ GetViewFrame()->GetWindow().GetOutputSizePixel() );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Visarea neu setzen
+ --------------------------------------------------------------------*/
+
+void SwView::SetVisArea( const Rectangle &rRect, BOOL bUpdateScrollbar )
+{
+ const Size aOldSz( aVisArea.GetSize() );
+
+ const Point aTopLeft( AlignToPixel( rRect.TopLeft() ));
+ const Point aBottomRight( AlignToPixel( rRect.BottomRight() ));
+ Rectangle aLR( aTopLeft, aBottomRight );
+
+ if( aLR == aVisArea )
+ return;
+
+ const SwTwips lMin = IsDocumentBorder() ? DOCUMENTBORDER : 0;
+
+ // keine negative Position, keine neg. Groesse
+ if( aLR.Top() < lMin )
+ {
+ aLR.Bottom() += lMin - aLR.Top();
+ aLR.Top() = lMin;
+ }
+ if( aLR.Left() < lMin )
+ {
+ aLR.Right() += lMin - aLR.Left();
+ aLR.Left() = lMin;
+ }
+ if( aLR.Right() < 0 )
+ aLR.Right() = 0;
+ if( aLR.Bottom() < 0 )
+ aLR.Bottom() = 0;
+
+ if( aLR == aVisArea )
+ return;
+
+ const Size aSize( aLR.GetSize() );
+ if( aSize.Width() < 0 || aSize.Height() < 0 )
+ return;
+
+ //Bevor die Daten veraendert werden ggf. ein Update rufen. Dadurch wird
+ //sichergestellt, daá anliegende Paints korrekt in Dokumentkoordinaten
+ //umgerechnet werden.
+ //Vorsichtshalber tun wir das nur wenn an der Shell eine Action laeuft,
+ //denn dann wir nicht wirklich gepaintet sondern die Rechtecke werden
+ //lediglich (in Dokumentkoordinaten) vorgemerkt.
+ if ( pWrtShell && pWrtShell->ActionPend() )
+ pWrtShell->GetWin()->Update();
+
+ aVisArea = aLR;
+
+ const FASTBOOL bOuterResize = bUpdateScrollbar && UpdateScrollbars() && !bInOuterResizePixel;
+
+ if ( pWrtShell )
+ {
+ pWrtShell->VisPortChgd( aVisArea );
+ if ( aOldSz != pWrtShell->VisArea().SSize() &&
+ ( Abs(aOldSz.Width() - pWrtShell->VisArea().Width()) > 2 ||
+ Abs(aOldSz.Height() - pWrtShell->VisArea().Height()) > 2 ) )
+ pWrtShell->CheckBrowseView( FALSE );
+ }
+
+ if ( !bProtectDocShellVisArea )
+ {
+ //Wenn die Groesse der VisArea unveraendert ist, reichen wir die
+ //Groesse der VisArea vom InternalObject weiter. Damit soll der
+ //Transport von Fehlern vermieden werden.
+ Rectangle aVis( aVisArea );
+ if ( aVis.GetSize() == aOldSz )
+ aVis.SetSize(
+ GetDocShell()->SfxInPlaceObject::GetVisArea().GetSize() );
+
+ //Bei embedded immer mit Modify...
+ if ( GetDocShell()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
+ GetDocShell()->SfxInPlaceObject::SetVisArea( aVis );
+ else
+ GetDocShell()->SvEmbeddedObject::SetVisArea( aVis );
+ }
+
+ SfxViewShell::VisAreaChanged( aVisArea );
+
+ InvalidateRulerPos();
+
+ SwEditWin::ClearTip();
+
+ if ( bOuterResize )
+ OuterResizePixel( Point(),
+ GetViewFrame()->GetWindow().GetOutputSizePixel() );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Pos VisArea setzen
+ --------------------------------------------------------------------*/
+
+void SwView::SetVisArea( const Point &rPt, BOOL bUpdateScrollbar )
+{
+ //einmal alignen, damit Brushes korrekt angesetzt werden.
+ //MA 31. May. 96: Das geht in der BrowseView schief, weil evlt.
+ //nicht das ganze Dokument sichtbar wird. Da der Inhalt in Frames
+ //passgenau ist, kann nicht aligned werden (bessere Idee?!?!)
+ //MA 29. Oct. 96 (fix: Bild.de, 200%) ganz ohne Alignment geht es nicht
+ //mal sehen wie weit wir mit der halben BrushSize kommen.
+ //TODO: why BRUSH_SIZE?
+ Point aPt( rPt );
+// const long nTmp = GetWrtShell().IsFrameView() ? BRUSH_SIZE/2 : BRUSH_SIZE;
+ const long nTmp = GetWrtShell().IsFrameView() ? 4 : 8;
+ aPt = GetEditWin().LogicToPixel( aPt );
+ aPt.X() -= aPt.X() % nTmp;
+ aPt.Y() -= aPt.Y() % nTmp;
+ aPt = GetEditWin().PixelToLogic( aPt );
+
+ if ( aPt == aVisArea.TopLeft() )
+ return;
+
+ const long lXDiff = aVisArea.Left() - aPt.X();
+ const long lYDiff = aVisArea.Top() - aPt.Y();
+ SetVisArea( Rectangle( aPt,
+ Point( aVisArea.Right() - lXDiff, aVisArea.Bottom() - lYDiff ) ),
+ bUpdateScrollbar);
+}
+
+
+void SwView::CheckVisArea()
+{
+ if ( pHScrollbar )
+ pHScrollbar->SetAuto( pWrtShell->IsBrowseMode() &&
+ !GetDocShell()->GetProtocol().IsInPlaceActive() );
+ if ( IsDocumentBorder() )
+ {
+ if ( aVisArea.Left() != DOCUMENTBORDER ||
+ aVisArea.Top() != DOCUMENTBORDER )
+ {
+ Rectangle aNewVisArea( aVisArea );
+ aNewVisArea.Move( DOCUMENTBORDER - aVisArea.Left(),
+ DOCUMENTBORDER - aVisArea.Top() );
+ SetVisArea( aNewVisArea, TRUE );
+ }
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Sichtbaren Bereich berechnen
+
+ OUT Point *pPt: neue Position des sichtbaren
+ Bereiches
+ IN Rectangle &rRect: Rechteck, das sich innerhalb des neuen
+ sichtbaren Bereiches befinden soll
+ USHORT nRange optional exakte Angabe des Bereiches,
+ um den ggfs. gescrollt werden soll
+ --------------------------------------------------------------------*/
+
+void SwView::CalcPt( Point *pPt, const Rectangle &rRect,
+ USHORT nRangeX, USHORT nRangeY)
+{
+
+ const SwTwips lMin = IsDocumentBorder() ? DOCUMENTBORDER : 0;
+
+ long nYScroll = GetYScroll();
+ long nDesHeight = rRect.GetHeight();
+ long nCurHeight = aVisArea.GetHeight();
+ nYScroll = Min(nYScroll, nCurHeight - nDesHeight); // wird es knapp, dann nicht zuviel scrollen
+ if(nDesHeight > nCurHeight) // die Hoehe reicht nicht aus, dann interessiert nYScroll nicht mehr
+ {
+ pPt->Y() = rRect.Top();
+ pPt->Y() = Max( lMin, pPt->Y() );
+ }
+ else if ( rRect.Top() < aVisArea.Top() ) //Verschiebung nach oben
+ {
+ pPt->Y() = rRect.Top() - (nRangeY != USHRT_MAX ? nRangeY : nYScroll);
+ pPt->Y() = Max( lMin, pPt->Y() );
+ }
+ else if( rRect.Bottom() > aVisArea.Bottom() ) //Verschiebung nach unten
+ {
+ pPt->Y() = rRect.Bottom() -
+ (aVisArea.GetHeight()) + ( nRangeY != USHRT_MAX ?
+ nRangeY : nYScroll );
+ pPt->Y() = SetVScrollMax( pPt->Y() );
+ }
+ long nXScroll = GetXScroll();
+ if ( rRect.Right() > aVisArea.Right() ) //Verschiebung nach rechts
+ {
+ pPt->X() = rRect.Right() -
+ (aVisArea.GetWidth()) +
+ (nRangeX != USHRT_MAX ? nRangeX : nXScroll);
+ pPt->X() = SetHScrollMax( pPt->X() );
+ }
+ else if ( rRect.Left() < aVisArea.Left() ) //Verschiebung nach links
+ {
+ pPt->X() = rRect.Left() -
+ (nRangeX != USHRT_MAX ? nRangeX : nXScroll);
+ pPt->X() = Max( ::GetLeftMargin( *this ) + nLeftOfst, pPt->X() );
+ pPt->X() = Min( rRect.Left() - nScrollX, pPt->X() );
+ pPt->X() = Max( 0L, pPt->X() );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Scrolling
+ --------------------------------------------------------------------*/
+
+BOOL SwView::IsScroll( const Rectangle &rRect ) const
+{
+ return bCenterCrsr || bTopCrsr || !aVisArea.IsInside(rRect);
+}
+
+
+void SwView::Scroll( const Rectangle &rRect, USHORT nRangeX, USHORT nRangeY )
+{
+ if ( aVisArea.IsEmpty() )
+ return;
+
+ Rectangle aOldVisArea( aVisArea );
+ long nDiffY = 0;
+
+ Window* pCareWn = GetWrtShell().GetCareWin();
+ if ( pCareWn )
+ {
+ Rectangle aDlgRect( GetEditWin().PixelToLogic(
+ GetEditWin().ScreenToOutputPixel( pCareWn->GetPosPixel() ) ),
+ GetEditWin().PixelToLogic( pCareWn->GetSizePixel() ) );
+ // Nur, wenn der Dialog nicht rechts oder links der VisArea liegt:
+ if ( aDlgRect.Left() < aVisArea.Right() &&
+ aDlgRect.Right() > aVisArea.Left() )
+ {
+ // Falls wir nicht zentriert werden sollen, in der VisArea liegen
+ // und nicht vom Dialog ueberdeckt werden ...
+ if ( !bCenterCrsr && aOldVisArea.IsInside( rRect )
+ && ( rRect.Left() > aDlgRect.Right()
+ || rRect.Right() < aDlgRect.Left()
+ || rRect.Top() > aDlgRect.Bottom()
+ || rRect.Bottom() < aDlgRect.Top() ) )
+ return;
+
+ // Ist oberhalb oder unterhalb der Dialogs mehr Platz?
+ long nTopDiff = aDlgRect.Top() - aVisArea.Top();
+ long nBottomDiff = aVisArea.Bottom() - aDlgRect.Bottom();
+ if ( nTopDiff < nBottomDiff )
+ {
+ if ( nBottomDiff > 0 ) // Ist unterhalb ueberhaupt Platz?
+ { // dann verschieben wir die Oberkante und merken uns dies
+ nDiffY = aDlgRect.Bottom() - aVisArea.Top();
+ aVisArea.Top() += nDiffY;
+ }
+ }
+ else
+ {
+ if ( nTopDiff > 0 ) // Ist oberhalb ueberhaupt Platz?
+ aVisArea.Bottom() = aDlgRect.Top(); // Unterkante aendern
+ }
+ }
+ }
+
+ //s.o. !IsScroll()
+ if( !(bCenterCrsr || bTopCrsr) && aVisArea.IsInside( rRect ) )
+ {
+ aVisArea = aOldVisArea;
+ return;
+ }
+ //falls das Rechteck groesser als der sichtbare Bereich -->
+ //obere linke Ecke
+ Size aSize( rRect.GetSize() );
+ const Size aVisSize( aVisArea.GetSize() );
+ if( !aVisArea.IsEmpty() && (
+ aSize.Width() + GetXScroll() > aVisSize.Width() ||
+ aSize.Height()+ GetYScroll() > aVisSize.Height() ))
+ {
+ Point aPt( aVisArea.TopLeft() );
+ aSize.Width() = Min( aSize.Width(), aVisSize.Width() );
+ aSize.Height()= Min( aSize.Height(),aVisSize.Height());
+
+ CalcPt( &aPt, Rectangle( rRect.TopLeft(), aSize ),
+ (aVisSize.Width() - aSize.Width()) / 2,
+ (aVisSize.Height()- aSize.Height())/ 2 );
+
+ if( bTopCrsr )
+ {
+ long nBorder = IsDocumentBorder() ? DOCUMENTBORDER : 0;
+ aPt.Y() = Min( Max( nBorder, rRect.Top() ),
+ aDocSz.Height() + nBorder -
+ aVisArea.GetHeight() );
+ }
+ aPt.Y() -= nDiffY;
+ aVisArea = aOldVisArea;
+ SetVisArea( aPt );
+ return;
+ }
+ if( !bCenterCrsr )
+ {
+ Point aPt( aVisArea.TopLeft() );
+ CalcPt( &aPt, rRect, nRangeX, nRangeY );
+
+ if( bTopCrsr )
+ {
+ long nBorder = IsDocumentBorder() ? DOCUMENTBORDER : 0;
+ aPt.Y() = Min( Max( nBorder, rRect.Top() ),
+ aDocSz.Height() + nBorder -
+ aVisArea.GetHeight() );
+ }
+
+ aPt.Y() -= nDiffY;
+ aVisArea = aOldVisArea;
+ SetVisArea( aPt );
+ return;
+ }
+
+ //Cursor zentrieren
+ Point aPnt( aVisArea.TopLeft() );
+ // ... in Y-Richtung auf jeden Fall
+ aPnt.Y() += ( rRect.Top() + rRect.Bottom()
+ - aVisArea.Top() - aVisArea.Bottom() ) / 2 - nDiffY;
+ // ... in X-Richtung nur, wenn das Rechteck rechts oder links aus der
+ // VisArea hinausragt.
+ if ( rRect.Right() > aVisArea.Right() || rRect.Left() < aVisArea.Left() )
+ {
+ aPnt.X() += ( rRect.Left() + rRect.Right()
+ - aVisArea.Left() - aVisArea.Right() ) / 2;
+ aPnt.X() = SetHScrollMax( aPnt.X() );
+ const SwTwips lMin = IsDocumentBorder() ? DOCUMENTBORDER : 0;
+ aPnt.X() = Max( (GetLeftMargin( *this ) - lMin) + nLeftOfst, aPnt.X() );
+ }
+ aVisArea = aOldVisArea;
+ if( pCareWn )
+ { // Wenn wir nur einem Dialog ausweichen wollen, wollen wir nicht ueber
+ // das Ende des Dokument hinausgehen.
+ aPnt.Y() = SetVScrollMax( aPnt.Y() );
+ }
+ SetVisArea( aPnt );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Seitenweises Scrollen
+ Liefern den Wert, um den bei PageUp / -Down gescrollt werden soll
+ --------------------------------------------------------------------*/
+
+BOOL SwView::GetPageScrollUpOffset( SwTwips &rOff ) const
+{
+ if ( !aVisArea.Top() || !aVisArea.GetHeight() )
+ return FALSE;
+ rOff = -(aVisArea.GetHeight() - (GetYScroll() / 2));
+ //nicht vor den Dokumentanfang scrollen
+ rOff = aVisArea.Top() - rOff < 0 ? rOff - aVisArea.Top() : rOff;
+ return TRUE;
+}
+
+
+BOOL SwView::GetPageScrollDownOffset( SwTwips &rOff ) const
+{
+ if ( !aVisArea.GetHeight() ||
+ (aVisArea.GetHeight() > aDocSz.Height()) )
+ return FALSE;
+ rOff = aVisArea.GetHeight() - (GetYScroll() / 2);
+ //nicht hinter das Dokumentende scrollen
+ if ( aVisArea.Top() + rOff > aDocSz.Height() )
+ rOff = aDocSz.Height() - aVisArea.Bottom();
+ return rOff > 0;
+}
+
+// Seitenweises Blaettern
+
+long SwView::PageUp()
+{
+ if (!aVisArea.GetHeight())
+ return 0;
+
+ Point aPos(aVisArea.TopLeft());
+ aPos.Y() -= aVisArea.GetHeight() - (GetYScroll() / 2);
+ aPos.Y() = Max(0L, aPos.Y());
+ SetVisArea( aPos );
+ return 1;
+}
+
+
+long SwView::PageDown()
+{
+ if ( !aVisArea.GetHeight() )
+ return 0;
+ Point aPos( aVisArea.TopLeft() );
+ aPos.Y() += aVisArea.GetHeight() - (GetYScroll() / 2);
+ aPos.Y() = SetVScrollMax( aPos.Y() );
+ SetVisArea( aPos );
+ return 1;
+}
+
+
+long SwView::PhyPageUp()
+{
+ //aktuell sichtbare Seite erfragen, nicht formatieren
+ USHORT nActPage = pWrtShell->GetNextPrevPageNum( FALSE );
+
+ if( USHRT_MAX != nActPage )
+ {
+ const Point aPt( aVisArea.Left(),
+ pWrtShell->GetPagePos( nActPage ).Y() );
+ Point aAlPt( AlignToPixel( aPt ) );
+ // falls ein Unterschied besteht, wurde abgeschnitten --> dann
+ // einen Pixel addieren, damit kein Rest der Vorgaengerseite
+ // sichtbar ist
+ if( aPt.Y() != aAlPt.Y() )
+ aAlPt.Y() += GetEditWin().PixelToLogic( Size( 0, 1 ) ).Height();
+ SetVisArea( aAlPt );
+ }
+ return 1;
+}
+
+
+long SwView::PhyPageDown()
+{
+ //aktuell sichtbare Seite erfragen, nicht formatieren
+ USHORT nActPage = pWrtShell->GetNextPrevPageNum( TRUE );
+ // falls die letzte Dokumentseite sichtbar ist, nichts tun
+ if( USHRT_MAX != nActPage )
+ {
+ const Point aPt( aVisArea.Left(),
+ pWrtShell->GetPagePos( nActPage ).Y() );
+ Point aAlPt( AlignToPixel( aPt ) );
+ // falls ein Unterschied besteht, wurde abgeschnitten --> dann
+ // einen Pixel addieren, damit kein Rest der Vorgaengerseite sichtbar ist
+ if( aPt.Y() != aAlPt.Y() )
+ aAlPt.Y() += GetEditWin().PixelToLogic( Size( 0, 1 ) ).Height();
+ SetVisArea( aAlPt );
+ }
+ return 1;
+}
+
+
+long SwView::PageUpCrsr( BOOL bSelect )
+{
+ if ( !bSelect )
+ {
+ const USHORT eType = pWrtShell->GetFrmType(0,TRUE);
+ if ( eType & FRMTYPE_FOOTNOTE )
+ {
+ pWrtShell->MoveCrsr();
+ pWrtShell->GotoFtnAnchor();
+ pWrtShell->Right();
+ return 1;
+ }
+ }
+
+ SwTwips lOff = 0;
+ if ( GetPageScrollUpOffset( lOff ) &&
+ (pWrtShell->IsCrsrReadonly() ||
+ !pWrtShell->PageCrsr( lOff, bSelect )) &&
+ PageUp() )
+ {
+ pWrtShell->ResetCursorStack();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+long SwView::PageDownCrsr(BOOL bSelect)
+{
+ SwTwips lOff = 0;
+ if ( GetPageScrollDownOffset( lOff ) &&
+ (pWrtShell->IsCrsrReadonly() ||
+ !pWrtShell->PageCrsr( lOff, bSelect )) &&
+ PageDown() )
+ {
+ pWrtShell->ResetCursorStack();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Handler der Scrollbars
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwView, ScrollHdl, SwScrollbar *, pScrollbar )
+{
+ if ( GetWrtShell().ActionPend() )
+ return 0;
+
+ if ( pScrollbar->GetType() == SCROLL_DRAG )
+ pWrtShell->EnableSmooth( FALSE );
+
+ if(!pWrtShell->IsBrowseMode() &&
+ pScrollbar->GetType() == SCROLL_DRAG)
+ {
+ //Hier wieder auskommentieren wenn das mitscrollen nicht gewuenscht ist.
+ // JP 21.07.00: the end scrollhandler invalidate the FN_STAT_PAGE,
+ // so we dont must do it agin.
+ EndScrollHdl(pScrollbar);
+
+ Point aPos( aVisArea.TopLeft() );
+ lcl_GetPos(this, aPos, pScrollbar, IsDocumentBorder());
+
+ USHORT nPhNum = 1;
+ USHORT nVirtNum = 1;
+
+ String sDisplay;
+ if(pWrtShell->GetPageNumber( aPos.Y(), FALSE, nPhNum, nVirtNum, sDisplay ))
+ {
+ // JP 21.07.00: the end scrollhandler invalidate the FN_STAT_PAGE,
+ // so we dont must do it agin.
+// if(!GetDocShell()->GetProtocol().IsInPlaceActive())
+// S F X_BINDINGS().Update(FN_STAT_PAGE);
+
+ //QuickHelp:
+ USHORT nPageCnt = pWrtShell->GetPageCnt();
+ if( nPageCnt > 1 && Help::IsQuickHelpEnabled() )
+ {
+ if( !nPgNum || nPgNum != nPhNum )
+ {
+ Rectangle aRect;
+ aRect.Left() = pScrollbar->GetParent()->OutputToScreenPixel(
+ pScrollbar->GetPosPixel() ).X() -8;
+ aRect.Top() = pScrollbar->OutputToScreenPixel(
+ pScrollbar->GetPointerPosPixel() ).Y();
+ aRect.Right() = aRect.Left();
+ aRect.Bottom() = aRect.Top();
+
+ String sPageStr( GetPageStr( nPhNum, nVirtNum, sDisplay ));
+ SwContentAtPos aCnt( SwContentAtPos::SW_OUTLINE );
+ pWrtShell->GetContentAtPos( aPos, aCnt );
+ if( aCnt.sStr.Len() )
+ {
+ sPageStr += String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( " - " ));
+ sPageStr.Insert( aCnt.sStr, 0, 80 );
+ sPageStr.SearchAndReplaceAll( '\t', ' ' );
+ }
+
+ Help::ShowQuickHelp( pScrollbar, aRect, sPageStr,
+ QUICKHELP_RIGHT|QUICKHELP_VCENTER);
+ }
+ nPgNum = nPhNum;
+ }
+ }
+ }
+ else
+ EndScrollHdl(pScrollbar);
+
+ if ( pScrollbar->GetType() == SCROLL_DRAG )
+ pWrtShell->EnableSmooth( TRUE );
+
+ return 0;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Handler der Scrollbars
+------------------------------------------------------------------------*/
+
+IMPL_LINK( SwView, EndScrollHdl, SwScrollbar *, pScrollbar )
+{
+ if ( !GetWrtShell().ActionPend() )
+ {
+ if(nPgNum)
+ {
+ nPgNum = 0;
+ Help::ShowQuickHelp(pScrollbar, Rectangle(), aEmptyStr, 0);
+ }
+ Point aPos( aVisArea.TopLeft() );
+ FASTBOOL bBorder = IsDocumentBorder();
+ lcl_GetPos(this, aPos, pScrollbar, bBorder);
+ if ( bBorder && aPos == aVisArea.TopLeft() )
+ UpdateScrollbars();
+ else
+ SetVisArea( aPos, FALSE );
+
+ GetViewFrame()->GetBindings().Update(FN_STAT_PAGE);
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+
+ berechnet die Groesse von aVisArea abhaengig von der Groesse
+ des EditWin auf dem Schirm.
+
+ --------------------------------------------------------------------*/
+
+void SwView::CalcVisArea( const Size &rOutPixel )
+{
+ Point aTopLeft;
+ Rectangle aRect( aTopLeft, rOutPixel );
+ aTopLeft = GetEditWin().PixelToLogic( aTopLeft );
+ Point aBottomRight( GetEditWin().PixelToLogic( aRect.BottomRight() ) );
+
+ aRect.Left() = aTopLeft.X();
+ aRect.Top() = aTopLeft.Y();
+ aRect.Right() = aBottomRight.X();
+ aRect.Bottom() = aBottomRight.Y();
+
+ //Die Verschiebungen nach rechts und/oder unten koennen jetzt falsch
+ //sein (z.B. Zoom aendern, Viewgroesse aendern.
+ const long lBorder = IsDocumentBorder() ? DOCUMENTBORDER : DOCUMENTBORDER*2;
+ if ( aRect.Left() )
+ {
+ const long lWidth = GetWrtShell().GetDocSize().Width() + lBorder;
+ if ( aRect.Right() > lWidth )
+ {
+ long lDelta = aRect.Right() - lWidth;
+ aRect.Left() -= lDelta;
+ aRect.Right() -= lDelta;
+ }
+ }
+ if ( aRect.Top() )
+ {
+ const long lHeight = GetWrtShell().GetDocSize().Height() + lBorder;
+ if ( aRect.Bottom() > lHeight )
+ {
+ long lDelta = aRect.Bottom() - lHeight;
+ aRect.Top() -= lDelta;
+ aRect.Bottom() -= lDelta;
+ }
+ }
+ SetVisArea( aRect );
+ GetViewFrame()->GetBindings().Invalidate( SID_ATTR_ZOOM );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Bedienelemente neu anordnen
+ --------------------------------------------------------------------*/
+
+
+void SwView::CalcAndSetBorderPixel( SvBorder &rToFill, FASTBOOL bInner )
+{
+ if ( pVLineal )
+ rToFill.Left() = pVLineal->GetSizePixel().Width();
+
+ DBG_ASSERT(pHLineal, "warum ist das Lineal nicht da?")
+ if ( pHLineal->IsVisible() )
+ rToFill.Top() = pHLineal->GetSizePixel().Height();
+
+ const StyleSettings &rSet = GetEditWin().GetSettings().GetStyleSettings();
+ const long nTmp = rSet.GetScrollBarSize();
+ if ( pVScrollbar && (pVScrollbar->IsVisible() || !pVScrollbar->IsAuto()) )
+ rToFill.Right() = nTmp;
+
+ if ( pHScrollbar && (pHScrollbar->IsVisible() || !pHScrollbar->IsAuto()) )
+ rToFill.Bottom() = nTmp;
+
+ SetBorderPixel( rToFill );
+}
+
+
+void ViewResizePixel( const Window &rRef,
+ const Point &rOfst,
+ const Size &rSize,
+ const Size &rEditSz,
+ const BOOL bInner,
+ SwScrollbar* pVScrollbar,
+ SwScrollbar* pHScrollbar,
+ ImageButton* pPageUpBtn,
+ ImageButton* pPageDownBtn,
+ ImageButton* pNaviBtn,
+ Window* pScrollBarBox,
+ SvxRuler* pVLineal,
+ SvxRuler* pHLineal,
+ BOOL bIgnoreVisibility,
+ BOOL bWebView )
+{
+// ViewResizePixel wird auch von der PreView benutzt!!!
+
+ const BOOL bHLineal = pHLineal && pHLineal->IsVisible();
+ const long nHLinSzHeight = bHLineal ?
+ pHLineal->GetSizePixel().Height() : 0;
+ const long nVLinSzWidth = pVLineal ?
+ pVLineal->GetSizePixel().Width() : 0;
+ long nHBSzHeight2= pHScrollbar && (pHScrollbar->IsVisible() || !pHScrollbar->IsAuto()) ?
+ rRef.GetSettings().GetStyleSettings().GetScrollBarSize() : 0;
+ long nHBSzHeight = pHScrollbar && (bIgnoreVisibility || pHScrollbar->IsVisible()) ?
+ nHBSzHeight2:0;
+ long nVBSzWidth = pVScrollbar && (pVScrollbar->IsVisible() || !pVScrollbar->IsAuto()) ? rRef.GetSettings().GetStyleSettings().GetScrollBarSize() : 0;
+
+ // Lineale anordnen
+ if ( pVLineal )
+ {
+ Point aPos( rOfst.X(), rOfst.Y()+nHLinSzHeight );
+ Size aSize( nVLinSzWidth, rEditSz.Height() );
+ pVLineal->SetPosSizePixel( aPos, aSize );
+ }
+// Lineal braucht ein Resize, sonst funktioniert es nicht im unischtbaren Zustand
+// if ( bHLineal )
+ if ( pHLineal ) //MA: In der Seitenansicht gibt es das Lineal nicht!
+ {
+ Size aSize( rSize.Width(), nHLinSzHeight );
+ if ( nVBSzWidth )
+ aSize.Width() -= nVBSzWidth;
+ if(!aSize.Height())
+ aSize.Height() = pHLineal->GetSizePixel().Height();
+ pHLineal->SetPosSizePixel( rOfst, aSize );
+// #46802 VCL ruft an unsichtbaren Fenstern kein Resize
+// fuer das Lineal ist das aber keine gute Idee
+ if(!pHLineal->IsVisible())
+ pHLineal->Resize();
+ }
+
+ // Scrollbars und SizeBox anordnen
+ Point aScrollFillPos;
+ if ( pHScrollbar && (pHScrollbar->IsVisible() || !pHScrollbar->IsAuto()) )
+ {
+ Point aPos( rOfst.X(),
+ rOfst.Y()+rSize.Height()-nHBSzHeight );
+ Size aSize( rSize.Width(), nHBSzHeight2 );
+ if ( nVBSzWidth )
+ aSize.Width() -= nVBSzWidth;
+ pHScrollbar->SetPosSizePixel( aPos, aSize );
+ aScrollFillPos.Y() = aPos.Y();
+ }
+ if ( pVScrollbar && (pVScrollbar->IsVisible()|| !pVScrollbar->IsAuto()))
+ {
+ Point aPos( rOfst.X()+rSize.Width()-nVBSzWidth,
+ rOfst.Y() );
+ Size aSize( nVBSzWidth, rSize.Height() );
+ Size aImgSz( nVBSzWidth, nVBSzWidth );
+
+ //#55949# wenn der Platz fuer Scrollbar und Page-Buttons zu klein wird, dann
+ // werden die Buttons versteckt
+ USHORT nCnt = pNaviBtn ? 3 : 2;
+ long nSubSize = (aImgSz.Width() * nCnt );
+ //
+ BOOL bHidePageButtons = aSize.Height() < ((bWebView ? 3 : 2) * nSubSize);
+ if(!bHidePageButtons)
+ aSize.Height() -= nSubSize;
+ else
+ aImgSz.Width() = 0; // kein Hide, weil das im Update Scrollbar missverstanden wird
+
+ if ( nHBSzHeight )
+ aSize.Height() -= nHBSzHeight;
+ pVScrollbar->SetPosSizePixel( aPos, aSize );
+
+ aPos.Y() += aSize.Height();
+ pPageUpBtn->SetPosSizePixel( aPos, aImgSz );
+ if(pNaviBtn)
+ {
+ aPos.Y() += aImgSz.Height();
+ pNaviBtn->SetPosSizePixel(aPos, aImgSz);
+ }
+
+ aPos.Y() += aImgSz.Height();
+ pPageDownBtn->SetPosSizePixel( aPos, aImgSz );
+
+
+ if( pHScrollbar )
+ {
+ aScrollFillPos.X() = aPos.X();
+ pScrollBarBox->SetPosSizePixel( aScrollFillPos,
+ Size( nHBSzHeight, nVBSzWidth) );
+ }
+ }
+}
+
+
+void SwView::ShowAtResize()
+{
+ const FASTBOOL bBrowse = pWrtShell->IsBrowseMode();
+ bShowAtResize = FALSE;
+ if ( pVLineal )
+ pVLineal->Show();
+ DBG_ASSERT(pHLineal, "warum ist das Lineal nicht da?")
+ if ( pWrtShell->GetViewOptions()->IsViewTabwin() )
+ pHLineal->Show();
+ if ( pHScrollbar && (!bBrowse ||
+ GetDocShell()->GetProtocol().IsInPlaceActive()) )
+ pHScrollbar->Show();
+ if ( pVScrollbar )
+ {
+ pVScrollbar->Show();
+ if(pPageUpBtn)
+ {
+ pPageUpBtn->Show();
+ pPageDownBtn->Show();
+ }
+ if(pNaviBtn)
+ pNaviBtn->Show();
+ if ( !bBrowse && pScrollFill )
+ pScrollFill->Show();
+ }
+}
+
+
+void __EXPORT SwView::InnerResizePixel( const Point &rOfst, const Size &rSize )
+{
+ SvBorder aBorder;
+ CalcAndSetBorderPixel( aBorder, TRUE );
+ Size aSz( rSize );
+ aSz.Height() += aBorder.Top() + aBorder.Bottom();
+ aSz.Width() += aBorder.Left() + aBorder.Right();
+ Size aEditSz( GetEditWin().GetOutputSizePixel() );
+ const BOOL bBrowse = pWrtShell->IsBrowseMode();
+ ViewResizePixel( GetEditWin(), rOfst, aSz, aEditSz, TRUE, pVScrollbar,
+ pHScrollbar, pPageUpBtn, pPageDownBtn,
+ pNaviBtn,
+ pScrollFill, pVLineal, pHLineal,
+ (!bBrowse || GetDocShell()->GetProtocol().IsInPlaceActive()),
+ 0 != PTR_CAST(SwWebView, this));
+ if ( bShowAtResize )
+ ShowAtResize();
+
+ if( pHLineal->IsVisible() || pVLineal )
+ {
+ const Fraction& rFrac = GetEditWin().GetMapMode().GetScaleX();
+ USHORT nZoom = USHORT(rFrac.GetNumerator() * 100L / rFrac.GetDenominator());
+
+ const Fraction aFrac( nZoom, 100 );
+ if ( pVLineal )
+ pVLineal->SetZoom( aFrac );
+ DBG_ASSERT(pHLineal, "warum ist das Lineal nicht da?")
+ if ( pHLineal->IsVisible() )
+ pHLineal->SetZoom( aFrac );
+ InvalidateRulerPos(); //Inhalt invalidieren.
+ }
+ //CursorStack zuruecksetzen, da die Cursorpositionen fuer PageUp/-Down
+ //nicht mehr zum aktuell sichtbaren Bereich passen
+ pWrtShell->ResetCursorStack();
+
+ //EditWin niemals einstellen!
+
+ //VisArea einstellen, aber dort nicht das SetVisArea der DocShell rufen!
+ bProtectDocShellVisArea = TRUE;
+ CalcVisArea( aEditSz );
+ bProtectDocShellVisArea = FALSE;
+}
+
+
+void __EXPORT SwView::OuterResizePixel( const Point &rOfst, const Size &rSize )
+{
+ if ( bInOuterResizePixel )
+ return;
+ bInOuterResizePixel = TRUE;
+
+// feststellen, ob Scrollbars angezeigt werden duerfen
+ FASTBOOL bBrowse = pWrtShell->IsBrowseMode();
+ FASTBOOL bShowH,
+ bShowV,
+ bAuto = FALSE,
+ bHAuto= bBrowse;
+ switch ( GetScrollingMode() )
+ {
+ case SCROLLING_DEFAULT:
+ {
+ const SwViewOption *pVOpt = pWrtShell->GetViewOptions();
+ if ( !pVOpt->IsReadonly() || pVOpt->IsStarOneSetting() )
+ {
+ bShowH = pVOpt->IsViewHScrollBar();
+ bShowV = pVOpt->IsViewVScrollBar();
+ break;
+ }
+ }
+ /* kein break hier */
+ case SCROLLING_AUTO:
+ bAuto = bHAuto = TRUE;
+ bShowH = bShowV = TRUE;
+ break;
+ case SCROLLING_YES:
+ bShowH = bShowV = TRUE;
+ break;
+ case SCROLLING_NO:
+ bShowH = bShowV = bHAuto = FALSE;
+ break;
+ }
+
+ if ( bShowH != StatHScrollbar() )
+ bShowH ? CreateHScrollbar() : KillHScrollbar();
+ if ( pHScrollbar )
+ {
+ pHScrollbar->SetUpdateMode(FALSE);
+ pHScrollbar->SetAuto( bHAuto );
+ }
+ if(bShowV != StatVScrollbar())
+ bShowV ? CreateVScrollbar() : KillVScrollbar();
+ if(pVScrollbar)
+ {
+ pVScrollbar->SetUpdateMode(FALSE);
+ pVScrollbar->SetAuto(bAuto);
+ }
+
+ SET_CURR_SHELL( pWrtShell );
+ FASTBOOL bRepeat = FALSE;
+ long nCnt = 0;
+ pWrtShell->LockPaint();
+ do
+ { ++nCnt;
+ const FASTBOOL bScroll1 = pVScrollbar ? pVScrollbar->IsVisible() : FALSE;
+ const FASTBOOL bScroll2 = pHScrollbar ? pHScrollbar->IsVisible() : FALSE;
+ SvBorder aBorder;
+ CalcAndSetBorderPixel( aBorder, FALSE );
+ const Size aEditSz( GetEditWin().GetOutputSizePixel() );
+ ViewResizePixel( GetEditWin(), rOfst, rSize, aEditSz, FALSE, pVScrollbar,
+ pHScrollbar, pPageUpBtn, pPageDownBtn,
+ pNaviBtn,
+ pScrollFill, pVLineal, pHLineal, !bBrowse,
+ 0 != PTR_CAST(SwWebView, this) );
+ if ( bShowAtResize )
+ ShowAtResize();
+
+ if( pHLineal->IsVisible() || pVLineal )
+ InvalidateRulerPos(); //Inhalt invalidieren.
+
+ //CursorStack zuruecksetzen, da die Cursorpositionen fuer PageUp/-Down
+ //nicht mehr zum aktuell sichtbaren Bereich passen
+ pWrtShell->ResetCursorStack();
+
+ //EditWin niemals einstellen!
+
+ //Die VisArea muss aber natuerlich eingestellt werden.
+ //jetzt ist auch der richtige Zeitpunkt den Zoom neu zu berechnen wenn
+ //es kein einfacher Faktor ist.
+ if ( aEditSz.Width() > 0 && aEditSz.Height() > 0 )
+ {
+ pWrtShell->StartAction();
+ CalcVisArea( aEditSz );
+
+ //Damit auch beim outplace editing die Seitenbreite sofort
+ //angepasst wird.
+ if ( GetDocShell()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
+ GetDocShell()->SetVisArea(
+ GetDocShell()->SfxInPlaceObject::GetVisArea() );
+ if ( pWrtShell->GetViewOptions()->GetZoomType() != SVX_ZOOM_PERCENT &&
+ !pWrtShell->IsBrowseMode() )
+ _SetZoom( aEditSz, (SvxZoomType)pWrtShell->GetViewOptions()->GetZoomType() );
+ pWrtShell->EndAction();
+
+ bRepeat = bScroll1 != (pVScrollbar ? pVScrollbar->IsVisible() : FALSE);
+ if ( !bRepeat )
+ bRepeat = bScroll2 != (pHScrollbar ? pHScrollbar->IsVisible() : FALSE);
+ }
+ else
+ bRepeat = FALSE;
+
+ //Nicht endlosschleifen. Moeglichst dann stoppen wenn die
+ //(Auto-)Scrollbars sichtbar sind.
+ if ( bRepeat && nCnt > 10 ||
+ (nCnt > 3 && bHAuto && bAuto &&
+ (pVScrollbar ? pVScrollbar->IsVisible() == bAuto : TRUE) &&
+ (pHScrollbar ? pHScrollbar->IsVisible() == bHAuto : TRUE)) )
+ {
+ bRepeat = FALSE;
+ }
+
+ }while ( bRepeat );
+
+ if ( pHScrollbar )
+ pHScrollbar->SetUpdateMode(TRUE);
+
+ if(pVScrollbar)
+ {
+ pVScrollbar->SetUpdateMode(TRUE);
+ BOOL bShowButtons = pVScrollbar->IsVisible(TRUE);
+ if(pPageUpBtn && pPageUpBtn->IsVisible() != bShowButtons)
+ {
+ pPageUpBtn->Show(bShowButtons);
+ if(pPageDownBtn)
+ pPageDownBtn->Show(bShowButtons);
+ if(pNaviBtn)
+ pNaviBtn->Show(bShowButtons);
+ }
+ }
+
+ pWrtShell->UnlockPaint();
+ bInOuterResizePixel = FALSE;
+}
+
+
+void __EXPORT SwView::SetZoomFactor( const Fraction &rX, const Fraction &rY )
+{
+ const Fraction &rFrac = rX < rY ? rX : rY;
+ SetZoom( SVX_ZOOM_PERCENT, (short) long(rFrac * Fraction( 100, 1 )) );
+
+ //Um Rundungsfehler zu minimieren lassen wir von der Basisklasse ggf.
+ //auch die krummen Werte einstellen
+ SfxViewShell::SetZoomFactor( rX, rY );
+}
+
+
+Size __EXPORT SwView::GetOptimalSizePixel() const
+{
+ Size aPgSize;
+ if ( pWrtShell->IsBrowseMode() )
+ {
+ aPgSize.Height() = lA4Height;
+ aPgSize.Width() = lA4Width;
+ }
+ else
+ {
+ const SwPageDesc &rDesc = pWrtShell->GetPageDesc(
+ pWrtShell->GetCurPageDesc() );
+ const SvxLRSpaceItem &rLRSpace = rDesc.GetMaster().GetLRSpace();
+ aPgSize = GetWrtShell().GetAnyCurRect(RECT_PAGE).SSize();
+ if( PD_MIRROR == rDesc.GetUseOn() )
+ {
+ const SvxLRSpaceItem &rLeftLRSpace = rDesc.GetLeft().GetLRSpace();
+ aPgSize.Width() +=
+ Abs( long(rLeftLRSpace.GetLeft()) - long(rLRSpace.GetLeft()) );
+ }
+ aPgSize.Width() += DOCUMENTBORDER * 2;
+ }
+ return GetEditWin().LogicToPixel( aPgSize );
+}
+
+
+BOOL SwView::UpdateScrollbars()
+{
+ BOOL bRet = FALSE;
+ if ( !aVisArea.IsEmpty() && (pHScrollbar || pVScrollbar) )
+ {
+ const FASTBOOL bBorder = IsDocumentBorder();
+ Rectangle aTmpRect( aVisArea );
+ if ( bBorder )
+ {
+ Point aPt( DOCUMENTBORDER, DOCUMENTBORDER );
+ aPt = AlignToPixel( aPt );
+ aTmpRect.Move( -aPt.X(), -aPt.Y() );
+ }
+
+ Size aTmpSz( aDocSz );
+ const long lOfst = bBorder ? 0 : DOCUMENTBORDER * 2L;
+ aTmpSz.Width() += lOfst; aTmpSz.Height() += lOfst;
+
+ if ( pVScrollbar )
+ {
+ const BOOL bVis = pVScrollbar->IsVisible();
+ pVScrollbar->DocSzChgd( aTmpSz );
+ pVScrollbar->ViewPortChgd( aTmpRect );
+
+ BOOL bShowButtons = pVScrollbar->IsVisible(TRUE);
+ if(pPageUpBtn && pPageUpBtn->IsVisible() != bShowButtons)
+ {
+ pPageUpBtn->Show(bShowButtons);
+ if(pPageDownBtn)
+ pPageDownBtn->Show(bShowButtons);
+ if(pNaviBtn)
+ pNaviBtn->Show(bShowButtons);
+ }
+
+ if ( !bVis && !bShowAtResize && !pVScrollbar->IsAuto() )
+ pVScrollbar->Show();
+ if ( bVis != pVScrollbar->IsVisible() )
+ bRet = TRUE;
+ }
+ if ( pHScrollbar )
+ {
+ const BOOL bVis = pHScrollbar->IsVisible();
+ pHScrollbar->DocSzChgd( aTmpSz );
+ pHScrollbar->ViewPortChgd( aTmpRect );
+ if ( !bVis && !bShowAtResize && !pHScrollbar->IsAuto() )
+ pHScrollbar->Show();
+ if ( bVis != pHScrollbar->IsVisible() )
+ bRet = TRUE;
+ }
+ if ( pScrollFill )
+ {
+ if ( pHScrollbar && pVScrollbar &&
+ pHScrollbar->IsVisible() && pVScrollbar->IsVisible() )
+ {
+ pScrollFill->Show();
+ }
+ else
+ pScrollFill->Hide();
+ }
+ }
+ return bRet;
+}
+
+
+void __EXPORT SwView::Move()
+{
+ if ( GetWrtShell().IsInSelect() )
+ GetWrtShell().EndSelect(); //#32427#
+ SfxViewShell::Move();
+}
+
+BOOL SwView::HandleWheelCommands( const CommandEvent& rCEvt )
+{
+ BOOL bOk = FALSE;
+ const CommandWheelData* pWData = rCEvt.GetWheelData();
+ if( pWData && COMMAND_WHEEL_ZOOM == pWData->GetMode() )
+ {
+ USHORT nFact = pWrtShell->GetViewOptions()->GetZoom();
+ if( 0L > pWData->GetDelta() )
+ nFact = Max( 20, nFact - 10 );
+ else
+ nFact = Min( 600, nFact + 10 );
+
+ SetZoom( SVX_ZOOM_PERCENT, nFact );
+ bOk = TRUE;
+ }
+ else
+ bOk = pEditWin->HandleScrollCommand( rCEvt,
+ pHScrollbar && pHScrollbar->IsVisible(TRUE) ? pHScrollbar : 0,
+ pVScrollbar && pVScrollbar->IsVisible(TRUE) ? pVScrollbar : 0 );
+ return bOk;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.254 2000/09/18 16:06:14 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.253 2000/09/07 15:59:33 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.252 2000/07/21 10:15:43 jp
+ Must changes for SFX
+
+ Revision 1.251 2000/04/18 15:02:51 os
+ UNICODE
+
+ Revision 1.250 2000/03/03 15:17:04 os
+ StarView remainders removed
+
+ Revision 1.249 2000/02/11 14:59:40 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.248 1999/07/13 06:48:04 OS
+ #67584# Scrollbar settings via StarOne
+
+
+ Rev 1.247 13 Jul 1999 08:48:04 OS
+ #67584# Scrollbar settings via StarOne
+
+ Rev 1.246 27 May 1999 11:26:20 AMA
+ Fix #64863#: Nicht ueber das Dokumentende hinausscrollen, nu aber wirklich
+
+ Rev 1.245 11 May 1999 09:26:22 AMA
+ Fix #64863#: Nicht ueber das Dokumentende hinausscrollen
+
+ Rev 1.244 03 Mar 1999 12:52:56 MA
+ #62722# UpdateScrollbars macht ohne VisArea keinen Sinn
+
+ Rev 1.243 02 Mar 1999 16:04:20 AMA
+ Fix #62568#: Invalidierungen so sparsam wie moeglich, so gruendlich wie noetig
+
+ Rev 1.242 27 Nov 1998 14:58:36 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.241 04 Sep 1998 12:31:12 OS
+ #55949# Verstecken der PageButtons noch veredelt
+
+ Rev 1.240 03 Sep 1998 13:17:00 OS
+ #55949# Buttons unter dem VScrollbar verstecken, wenn nicht genug Platz ist
+
+ Rev 1.239 20 Aug 1998 13:39:50 MA
+ #55307# Scrollbars muessen nicht existieren
+
+ Rev 1.238 27 Jul 1998 16:52:00 JP
+ Bug #54031#: WheelData richtig auswerten
+
+ Rev 1.237 19 Jul 1998 17:57:10 JP
+ Task #49835#: Radmausunterstuetzung
+
+ Rev 1.236 13 Jul 1998 17:16:06 OS
+ Scrollbar-Buttons muessen an zwei Positionen auf Sichtbarkeit geprueft werden #52527#
+
+ Rev 1.235 03 Jul 1998 16:57:16 OS
+ PageButtons an das AutoHide des VScrollbars anpassen
+
+ Rev 1.234 24 Jun 1998 18:43:54 MA
+ DataChanged fuer ScrollBar und Retouche, Retouche ganz umgestellt
+
+ Rev 1.233 24 Jun 1998 07:29:54 OS
+ CreatePageButtons nicht mehrfach rufen #51535#
+
+ Rev 1.232 14 Jun 1998 16:13:52 MA
+ chg: Navi-Tool auch fuer Browse-View
+
+ Rev 1.231 06 May 1998 17:09:54 MA
+ #50098# Scrolloffset beruecksichtigen
+
+ Rev 1.230 27 Apr 1998 17:17:18 JP
+ statt GetSize().GetHeight/-Width direkt GetHeight/Width am Rectangle rufen
+
+ Rev 1.229 17 Apr 1998 17:22:28 OS
+ keine Tabulatoren in der QuickHelp #49563#
+
+ Rev 1.228 14 Apr 1998 12:08:46 OS
+ autom. Scrollbars: Scrollbar immer erzeugen #49061#
+
+ Rev 1.227 09 Apr 1998 08:08:02 OS
+ CalcPt: Scroll bei Bedarf verkleinern 49364#
+
+ Rev 1.226 20 Mar 1998 13:23:54 MA
+ OleVis2Page durch BrowseMode ersetzt
+
+ Rev 1.225 06 Mar 1998 18:57:54 JP
+ Bug #47878#: den richtigen Point heruntergeben
+
+ Rev 1.224 27 Feb 1998 17:04:50 MA
+ Outline in Tiphilfe
+
+ Rev 1.223 27 Feb 1998 17:01:46 MA
+ Outline in Tiphilfe
+
+ Rev 1.222 29 Jan 1998 10:25:12 OS
+ das VCL-Lineal braucht ein eigenes Resize wenn es nicht sichtbar ist. #46802#
+
+ Rev 1.221 05 Dec 1997 14:14:32 OS
+ Scrollbar nicht mehr MAC-abhaengig
+
+ Rev 1.220 04 Dec 1997 15:27:38 MA
+ #45726# Rect auch im Seitenrand sichtbar machen
+
+ Rev 1.219 29 Nov 1997 16:49:56 MA
+ includes
+
+ Rev 1.218 28 Nov 1997 11:33:54 TJ
+ include
+
+ Rev 1.217 21 Nov 1997 15:00:22 MA
+ includes
+
+ Rev 1.216 03 Nov 1997 13:58:32 MA
+ precomp entfernt
+
+ Rev 1.215 22 Oct 1997 08:24:08 OS
+ eigener UpdateMode zur Verhinderung des Flackerns #43684#
+
+ Rev 1.214 09 Oct 1997 16:16:38 MA
+ alte Methoden aufgeraeumt
+
+ Rev 1.213 22 Sep 1997 13:11:12 MA
+ #44052# bInOuterResizePixel ist jetzt Member
+
+ Rev 1.212 18 Sep 1997 14:01:10 OS
+ Pointer::GetPosPixel fuer VCL ersetzt
+
+ Rev 1.211 09 Sep 1997 11:35:00 OS
+ bStarting gibt's nicht mehr
+
+ Rev 1.210 04 Sep 1997 17:14:40 MA
+ includes
+
+ Rev 1.209 01 Sep 1997 13:13:48 OS
+ DLL-Umstellung
+
+ Rev 1.208 12 Aug 1997 15:57:22 OS
+ frmitems/textitem/paraitem aufgeteilt
+
+ Rev 1.207 08 Aug 1997 17:25:52 OM
+ Headerfile-Umstellung
+
+ Rev 1.206 07 Aug 1997 14:58:26 OM
+ Headerfile-Umstellung
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/uiview/viewprt.cxx b/sw/source/ui/uiview/viewprt.cxx
new file mode 100644
index 000000000000..a18929fb7884
--- /dev/null
+++ b/sw/source/ui/uiview/viewprt.cxx
@@ -0,0 +1,770 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewprt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#if STLPORT_VERSION>=321
+#include <cstdarg>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX
+#include <sfx2/request.hxx>
+#endif
+
+
+#ifndef _SFXFLAGITEM_HXX //autogen
+#include <svtools/flagitem.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef NOOLDSV //autogen
+#include <vcl/system.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SV_PRINTDLG_HXX_ //autogen
+#include <svtools/printdlg.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SFX_PRNMON_HXX //autogen
+#include <sfx2/prnmon.hxx>
+#endif
+#ifndef _SVX_PAPERINF_HXX //autogen
+#include <svx/paperinf.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _OFA_MISCCFG_HXX //autogen
+#include <sfx2/misccfg.hxx>
+#endif
+#ifndef _SVX_PRTQRY_HXX
+#include <svx/prtqry.hxx>
+#endif
+
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _FINDER_HXX
+#include <finder.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _PRTOPT_HXX
+#include <prtopt.hxx>
+#endif
+#ifndef _SWPRTOPT_HXX
+#include <swprtopt.hxx>
+#endif
+#ifndef _OPTPAGE_HXX
+#include <optpage.hxx>
+#endif
+#ifndef _CFGITEMS_HXX
+#include <cfgitems.hxx>
+#endif
+#ifndef _DBMGR_HXX
+#include <dbmgr.hxx>
+#endif
+#ifndef _DOCSTAT_HXX
+#include <docstat.hxx>
+#endif
+#ifndef _VIEWFUNC_HXX
+#include <viewfunc.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _WVIEW_HXX
+#include <wview.hxx>
+#endif
+
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _VIEW_HRC
+#include <view.hrc>
+#endif
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Drucker an Sfx uebergeben
+ --------------------------------------------------------------------*/
+
+
+SfxPrinter* __EXPORT SwView::GetPrinter( BOOL bCreate )
+{
+ SfxPrinter *pOld = GetWrtShell().GetPrt( FALSE );
+ SfxPrinter *pPrt = GetWrtShell().GetPrt( bCreate );
+ if ( pOld != pPrt )
+ {
+ BOOL bWeb = 0 != PTR_CAST(SwWebView, this);
+ ::SetAppPrintOptions( &GetWrtShell(), bWeb );
+ }
+ return pPrt;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Druckerwechsel weitermelden
+ --------------------------------------------------------------------*/
+
+void SetPrinter( SfxPrinter* pNew, BOOL bWeb )
+{
+ SwPrintOptions* pOpt = SW_MOD()->GetPrtOptions(bWeb);
+ if( !pOpt)
+ return;
+
+ // Applikationseigene Druckoptionen aus SfxPrinter auslesen
+ const SfxItemSet& rSet = pNew->GetOptions();
+
+ const SwAddPrinterItem* pAddPrinterAttr;
+ if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_ADDPRINTER, FALSE,
+ (const SfxPoolItem**)&pAddPrinterAttr ) )
+ {
+// Wir lassen die Druckoptionen so, wie sie sind.
+// pAddPrinterAttr->SetPrintOptions( pOpt );
+ if( pAddPrinterAttr->GetFax().Len() )
+ pOpt->SetFaxName(pAddPrinterAttr->GetFax());
+ }
+}
+
+
+USHORT __EXPORT SwView::SetPrinter(SfxPrinter* pNew, USHORT nDiffFlags )
+{
+ SwWrtShell &rSh = GetWrtShell();
+ if ( (SFX_PRINTER_JOBSETUP | SFX_PRINTER_PRINTER) & nDiffFlags )
+ {
+ rSh.SetPrt( pNew );
+ if ( nDiffFlags & SFX_PRINTER_PRINTER )
+ rSh.SetModified();
+ }
+ BOOL bWeb = 0 != PTR_CAST(SwWebView, this);
+ if ( nDiffFlags & SFX_PRINTER_OPTIONS )
+ ::SetPrinter( pNew, bWeb );
+
+ const BOOL bChgOri = nDiffFlags & SFX_PRINTER_CHG_ORIENTATION ? TRUE : FALSE;
+ const BOOL bChgSize= nDiffFlags & SFX_PRINTER_CHG_SIZE ? TRUE : FALSE;
+ if ( bChgOri || bChgSize )
+ {
+ rSh.StartAllAction();
+ if ( bChgOri )
+ rSh.ChgAllPageOrientation( USHORT(pNew->GetOrientation()) );
+ if ( bChgSize )
+ {
+ Size aSz( SvxPaperInfo::GetPaperSize( pNew ) );
+ rSh.ChgAllPageSize( aSz );
+ }
+ rSh.SetModified();
+ rSh.EndAllAction();
+ InvalidateRulerPos();
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Drucken
+ --------------------------------------------------------------------*/
+
+void MakeOptions( PrintDialog* pDlg, SwPrtOptions& rOpts, BOOL* pPrtProspect,
+ BOOL bWeb, SfxPrinter* pPrt )
+{
+ const SwAddPrinterItem* pAddPrinterAttr;
+ if( pPrt && SFX_ITEM_SET == pPrt->GetOptions().GetItemState(
+ FN_PARAM_ADDPRINTER, FALSE, (const SfxPoolItem**)&pAddPrinterAttr ))
+ {
+ rOpts.bPrintGraph = pAddPrinterAttr->IsPrintGraphic ();
+ rOpts.bPrintTable = pAddPrinterAttr->IsPrintTable ();
+ rOpts.bPrintDraw = pAddPrinterAttr->IsPrintDraw ();
+ rOpts.bPrintControl = pAddPrinterAttr->IsPrintControl ();
+ rOpts.bPrintLeftPage = pAddPrinterAttr->IsPrintLeftPage ();
+ rOpts.bPrintRightPage = pAddPrinterAttr->IsPrintRightPage();
+ rOpts.bPrintReverse = pAddPrinterAttr->IsPrintReverse ();
+ rOpts.bPaperFromSetup = pAddPrinterAttr->IsPaperFromSetup();
+ rOpts.bPrintPageBackground = pAddPrinterAttr->IsPrintPageBackground();
+ rOpts.bPrintBlackFont = pAddPrinterAttr->IsPrintBlackFont();
+ rOpts.bSinglePrtJobs = pAddPrinterAttr->IsPrintSingleJobs();
+ rOpts.nPrintPostIts = pAddPrinterAttr->GetPrintPostIts ();
+
+ if( pPrtProspect )
+ *pPrtProspect = pAddPrinterAttr->IsPrintProspect();
+ }
+ else
+ {
+ SwPrintOptions* pOpts = SW_MOD()->GetPrtOptions(bWeb);
+
+ rOpts.bPrintGraph = pOpts->IsPrintGraphic ();
+ rOpts.bPrintTable = pOpts->IsPrintTable ();
+ rOpts.bPrintDraw = pOpts->IsPrintDraw ();
+ rOpts.bPrintControl = pOpts->IsPrintControl ();
+ rOpts.bPrintLeftPage = pOpts->IsPrintLeftPage ();
+ rOpts.bPrintRightPage = pOpts->IsPrintRightPage();
+ rOpts.bPrintReverse = pOpts->IsPrintReverse ();
+ rOpts.bPaperFromSetup = pOpts->IsPaperFromSetup();
+ rOpts.bPrintPageBackground = pOpts->IsPrintPageBackground();
+ rOpts.bPrintBlackFont = pOpts->IsPrintBlackFont();
+ rOpts.bSinglePrtJobs = pOpts->IsPrintSingleJobs();
+ rOpts.nPrintPostIts = pOpts->GetPrintPostIts ();
+
+ if( pPrtProspect )
+ *pPrtProspect = pOpts->IsPrintProspect();
+ }
+ rOpts.aMulti.SetTotalRange( Range( 0, RANGE_MAX ) );
+ rOpts.aMulti.SelectAll( FALSE );
+ rOpts.nCopyCount = 1;
+ rOpts.bCollate = FALSE;
+ rOpts.bPrintSelection = FALSE;
+ rOpts.bJobStartet = FALSE;
+
+ if ( pDlg )
+ {
+ rOpts.nCopyCount = pDlg->GetCopyCount();
+ rOpts.bCollate = pDlg->IsCollateChecked();
+ if ( pDlg->GetCheckedRange() == PRINTDIALOG_SELECTION )
+ {
+ rOpts.aMulti.SelectAll();
+ rOpts.bPrintSelection = TRUE;
+ }
+ else if ( PRINTDIALOG_ALL == pDlg->GetCheckedRange() )
+ rOpts.aMulti.SelectAll();
+ else
+ {
+ rOpts.aMulti = MultiSelection( pDlg->GetRangeText() );
+ rOpts.aMulti.SetTotalRange( Range( 0, RANGE_MAX ) );
+ }
+ }
+ else
+ rOpts.aMulti.SelectAll();
+ rOpts.aMulti.Select( 0, FALSE );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+ErrCode SwView::DoPrint( SfxPrinter *pPrinter, PrintDialog *pDlg,
+ BOOL bSilent )
+{
+ // First test
+ SwWrtShell* pSh = &GetWrtShell();
+ SwNewDBMgr* pMgr = pSh->GetNewDBMgr();
+
+ int bPrintSelection = -1;
+ if( DBMGR_MERGE_MAILMERGE != pMgr->GetMergeType() && !pDlg && !bSilent
+ && !bIsApi && ( pSh->IsSelection() || pSh->IsFrmSelected() ||
+ pSh->IsObjSelected() ) )
+ {
+ short nBtn = SvxPrtQryBox(&GetEditWin()).Execute();
+ if( RET_CANCEL == nBtn )
+ return ERRCODE_IO_ABORT;
+
+ if( RET_OK == nBtn )
+ bPrintSelection = 1;
+ else
+ bPrintSelection = 0;
+ }
+
+
+// Der PrintProgress stellt Handler am Printer der ViewShell ein.
+// Das kann natuerlich erste nach dem evtl. Umschalten des Druckers korrekt
+// funktionieren. #55210#
+// SfxPrintProgress *pProgress = new SfxPrintProgress( this, !bSilent );
+ SfxPrintProgress *pProgress = 0;
+ SfxPrinter *pDocPrinter = GetPrinter(TRUE);
+ if ( !pPrinter )
+ pPrinter = pDocPrinter;
+ else if ( pDocPrinter != pPrinter )
+ {
+ //Da der Doc-Drucker beim SetPrinter geloescht wird,
+ // muss man ihn vorher clonen
+ SfxPrinter* pClone = pDocPrinter->Clone();
+ SetPrinter( pPrinter, SFX_PRINTER_PRINTER );
+ pProgress = new SfxPrintProgress( this, !bSilent );
+ pProgress->RestoreOnEndPrint( pClone );
+ }
+ if(!pProgress)
+ pProgress = new SfxPrintProgress( this, !bSilent );
+ pProgress->SetWaitMode(FALSE);
+
+ // Drucker starten
+ PreparePrint( pDlg );
+ SfxObjectShell *pObjShell = GetViewFrame()->GetObjectShell();
+ SwPrtOptions aOpts( pObjShell->GetTitle(0) );
+ BOOL bStartJob;
+ BOOL bWeb = 0 != PTR_CAST(SwWebView, this);
+ if( pMgr->GetMergeType() == DBMGR_MERGE_MAILMERGE )
+ {
+ ::MakeOptions( pDlg, aOpts, 0, bWeb, GetPrinter() );
+#ifdef REPLACE_OFADBMGR
+ bStartJob = pMgr->MergePrint( *this, aOpts, *pProgress );
+#else
+ bStartJob = pMgr->MergePrint( *this, aOpts, *pProgress );
+#endif
+ }
+ else
+ {
+ //BrowseView abschalten und die View gegen alle Paints locken.
+ FASTBOOL bBrowse = pSh->IsBrowseMode();
+ SfxAllItemSet aSet( SFX_APP()->GetPool() );
+ SfxBoolItem aBrowse( SID_BROWSER_MODE, FALSE );
+ if ( bBrowse )
+ {
+ if ( pSh->GetWin() )
+ pSh->GetWin()->Update();
+ pSh->LockPaint();
+ pSh->LockView( TRUE );
+ aSet.Put( aBrowse, aBrowse.Which() );
+ SfxRequest aReq( SID_BROWSER_MODE, 0, aSet );
+ GetDocShell()->Execute( aReq );
+ }
+
+ // die Felder aktualisieren
+ BOOL bIsModified = pSh->IsModified();
+ pSh->StartAllAction();
+ SwDocStat aDocStat;
+ pSh->UpdateDocStat( aDocStat );
+ pSh->EndAllTblBoxEdit();
+ pSh->ViewShell::UpdateFlds(TRUE);
+ if( pSh->IsCrsrInTbl() )
+ {
+ pSh->ClearTblBoxCntnt();
+ pSh->SaveTblBoxCntnt();
+ }
+ pSh->EndAllAction();
+
+ if( !bIsModified )
+ pSh->ResetModified();
+
+ BOOL bPrtPros;
+ ::MakeOptions( pDlg, aOpts, &bPrtPros, bWeb, GetPrinter() );
+ if( -1 != bPrintSelection )
+ aOpts.bPrintSelection = 0 != bPrintSelection;
+
+ SfxViewShell::Print(*pProgress);
+ if( bPrtPros )
+ {
+ bStartJob = pPrinter->StartJob( aOpts.GetJobName() );
+ if( bStartJob )
+ pSh->PrintProspect( aOpts, *pProgress );
+ }
+ else
+ bStartJob = pSh->Prt( aOpts, *pProgress );
+
+ if ( bBrowse )
+ {
+ aBrowse.SetValue( TRUE );
+ aSet.Put( aBrowse, aBrowse.Which() );
+ SfxRequest aReq( SID_BROWSER_MODE, 0, aSet );
+ GetDocShell()->Execute( aReq );
+ pSh->LockView( FALSE );
+ pSh->UnlockPaint();
+ }
+ }
+
+ bIsApi = FALSE;
+ if ( !bStartJob )
+ {
+ // Printer konnte nicht gestartet werden
+ delete pProgress;
+ return ERRCODE_IO_ABORT;
+ }
+
+ pProgress->Stop();
+ pProgress->DeleteOnEndPrint();
+ pPrinter->EndJob();
+ return pPrinter->GetError();
+}
+
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: TabPage fuer applikationsspezifische Druckoptionen
+ --------------------------------------------------------------------*/
+
+SfxTabPage* __EXPORT SwView::CreatePrintOptionsPage(Window* pParent,
+ const SfxItemSet& rSet)
+{
+ return ::CreatePrintOptionsPage( pParent, rSet, FALSE );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Druckerdialog
+ --------------------------------------------------------------------*/
+
+PrintDialog* CreatePrintDialog( Window* pParent, USHORT nPg, SwWrtShell* pSh )
+{
+ PrintDialog *pDlg =
+ new PrintDialog( pParent );
+// pDlg->ChangeFirstPage( 1 );
+
+ if ( !nPg )
+ nPg = 1;
+// pDlg->ChangeLastPage( nPg );
+// pDlg->ChangeMaxPage( 9999 );
+ pDlg->EnableRange( PRINTDIALOG_FROMTO );
+
+ if (pSh && (pSh->IsSelection() || pSh->IsFrmSelected() || pSh->IsObjSelected()))
+ pDlg->EnableRange( PRINTDIALOG_SELECTION );
+
+ pDlg->SetRangeText( String::CreateFromInt32(nPg) );
+ pDlg->EnableRange( PRINTDIALOG_RANGE );
+ pDlg->EnableCollate();
+ return pDlg;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+PrintDialog* __EXPORT SwView::CreatePrintDialog( Window* pParent )
+{
+ // AMA: Hier sollte vielleicht die virtuelle Seitennummer angezeigt werden,
+ // aber nur, wenn das Drucken virtuelle Seitennummern und nicht wie
+ // bisher (auch beim SWG 2.0) physikalische beachtet werden.
+ return ::CreatePrintDialog( pParent, GetWrtShell().GetPhyPageNum(), &GetWrtShell() );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Print-Dispatcher
+ --------------------------------------------------------------------*/
+
+void __EXPORT SwView::ExecutePrint(SfxRequest& rReq)
+{
+ BOOL bWeb = 0 != PTR_CAST(SwWebView, this);
+ ::SetAppPrintOptions( &GetWrtShell(), bWeb );
+ switch (rReq.GetSlot())
+ {
+ case FN_FAX:
+ {
+ SwPrintOptions* pOpt = SW_MOD()->GetPrtOptions(bWeb);
+ String sFaxName(pOpt->GetFaxName());
+ if (sFaxName.Len())
+ {
+ SfxStringItem aPrinterName(SID_PRINTER_NAME, sFaxName);
+ SfxBoolItem aSilent( SID_SILENT, TRUE );
+ GetViewFrame()->GetDispatcher()->Execute( SID_PRINTDOC,
+ SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD,
+ &aPrinterName, &aSilent, 0L );
+ }
+ else
+ {
+ InfoBox aInfoBox(&GetEditWin(), SW_RES(MSG_ERR_NO_FAX));
+ aInfoBox.Execute();
+ SfxUInt16Item aDefPage(SID_SW_EDITOPTIONS, TP_OPTPRINT_PAGE);
+ GetViewFrame()->GetDispatcher()->Execute(SID_SW_EDITOPTIONS,
+ SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD,
+ &aDefPage, 0L );
+ }
+ }
+ break;
+ case SID_PRINTDOC:
+ case SID_PRINTDOCDIRECT:
+ {
+ SwWrtShell* pSh = &GetWrtShell();
+ SwViewOption* pOrgViewOption = 0;
+ if (pSh->GetViewOptions()->IsFldName() && pSh->IsAnyFieldInDoc())
+ {
+ QueryBox aBox( &GetEditWin(), SW_RES( DLG_PRT_FIELDNAME ) );
+ USHORT nRet = aBox.Execute();
+ if( RET_CANCEL == nRet)
+ return;
+ // disable field commands
+ if( RET_NO == nRet )
+ {
+ pOrgViewOption = new SwViewOption(*pSh->GetViewOptions());
+ pOrgViewOption->SetFldName(FALSE);
+ SW_MOD()->ApplyUsrPref(*pOrgViewOption, this, VIEWOPT_DEST_VIEW_ONLY );
+ }
+ }
+ bIsApi = rReq.IsAPI();
+ SfxViewShell::ExecuteSlot( rReq, SfxViewShell::GetInterface() );
+ if(pOrgViewOption)
+ {
+ pOrgViewOption->SetFldName(TRUE);
+ SW_MOD()->ApplyUsrPref(*pOrgViewOption, this, VIEWOPT_DEST_VIEW_ONLY );
+ delete pOrgViewOption;
+ }
+ return;
+ }
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Page Drucker/Zusaetze erzeugen fuer SwView und
+ SwPagePreview
+ --------------------------------------------------------------------*/
+
+SfxTabPage* CreatePrintOptionsPage( Window *pParent,
+ const SfxItemSet &rOptions, BOOL bPreview )
+{
+ SwAddPrinterTabPage* pPage = ( SwAddPrinterTabPage* )
+ SwAddPrinterTabPage::Create(pParent, rOptions);
+ pPage->SetPreview(bPreview);
+
+ SvStringsDtor aFaxList;
+ const USHORT nCount = Printer::GetQueueCount();
+ pPage->Reset(rOptions);
+ for (USHORT i = 0; i < nCount; ++i)
+ {
+ String* pString = new String( Printer::GetQueueInfo( i ).GetPrinterName() );
+ aFaxList.Insert(pString, 0);
+ }
+ pPage->SetFax( aFaxList );
+ return pPage;
+}
+
+
+void SetAppPrintOptions( ViewShell* pSh, BOOL bWeb )
+{
+ SwPrintOptions* pOpt = SW_MOD()->GetPrtOptions(bWeb);
+ if( pSh && pSh->GetPrt() && pOpt)
+ {
+ // Applikationseigene Druckoptionen in SfxPrinter schiessen
+ SwAddPrinterItem aAddPrinterItem (FN_PARAM_ADDPRINTER, pOpt);
+ SfxItemSet aSet( pSh->GetAttrPool(),
+ FN_PARAM_ADDPRINTER, FN_PARAM_ADDPRINTER,
+ SID_HTML_MODE, SID_HTML_MODE,
+ SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
+ SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
+ 0 );
+
+ OfaMiscCfg* pMisc = SFX_APP()->GetMiscConfig();
+
+ if(bWeb)
+ aSet.Put(SfxUInt16Item(SID_HTML_MODE,
+ ::GetHtmlMode(((SwWrtShell*)pSh)->GetView().GetDocShell())));
+ aSet.Put(SfxBoolItem(SID_PRINTER_NOTFOUND_WARN,
+ pMisc->IsNotFoundWarning() ));
+ aSet.Put(aAddPrinterItem);
+ aSet.Put( SfxFlagItem( SID_PRINTER_CHANGESTODOC,
+ (pMisc->IsPaperSizeWarning() ? SFX_PRINTER_CHG_SIZE : 0) |
+ (pMisc->IsPaperBinWarning() ? SFX_PRINTER_CHG_ORIENTATION : 0 )));
+
+ pSh->GetPrt()->SetOptions( aSet );
+ }
+
+}
+
+/*--------------------------------------------------------------------
+
+$Log: not supported by cvs2svn $
+Revision 1.143 2000/09/18 16:06:14 willem.vandorp
+OpenOffice header added.
+
+Revision 1.142 2000/09/07 15:59:33 os
+change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+Revision 1.141 2000/09/07 08:24:35 os
+FaxName now in SwPrintOptions
+
+Revision 1.140 2000/08/10 07:36:58 os
+#77466# CreateFromInt32
+
+Revision 1.139 2000/07/18 12:50:09 os
+replace ofadbmgr
+
+Revision 1.138 2000/07/10 07:02:56 os
+replace ofadbmgr
+
+Revision 1.137 2000/07/07 15:25:44 os
+replace ofadbmgr
+
+Revision 1.136 2000/05/26 07:21:35 os
+old SW Basic API Slots removed
+
+Revision 1.135 2000/03/03 15:17:04 os
+StarView remainders removed
+
+Revision 1.134 2000/02/11 14:59:27 hr
+#70473# changes for unicode ( patched by automated patchtool )
+
+Revision 1.133 2000/02/01 14:11:31 os
+#72527# print selection query box
+
+Revision 1.132 1999/12/14 14:32:05 jp
+Bug #69595#: print can create single Jobs
+
+Revision 1.131 1999/11/11 15:09:57 hr
+#65293#: STLPORT 3.2.1
+
+Revision 1.130 1999/09/10 08:35:03 os
+restore ViewOption after printing
+
+Revision 1.129 1999/09/09 07:13:27 os
+Query changed: printing documents with field commands
+
+Revision 1.128 1999/08/11 14:12:24 JP
+Bug #68171#: DoPrint - donst change selektionflag if not execute the Sel.Dlg
+
+
+ Rev 1.127 11 Aug 1999 16:12:24 JP
+ Bug #68171#: DoPrint - donst change selektionflag if not execute the Sel.Dlg
+
+ Rev 1.126 09 Jul 1999 13:54:30 JP
+ Bug #67535#: DoPrint - PrintSelection Dialog before any action started
+
+ Rev 1.125 01 Mar 1999 16:22:16 MA
+ #62490# Altlast entfernt (Drucken und Briefumschlaege/Etiketten und Datenbank)
+
+ Rev 1.124 04 Feb 1999 11:22:16 ER
+ #61415# OfaMiscCfg nach SFX verschoben
+
+ Rev 1.123 13 Jan 1999 11:53:12 JP
+ Bug #60794#: Fehlererkennung beim Tabellenrechnen
+
+ Rev 1.122 29 Oct 1998 11:52:44 OM
+ #58593# Selektion nur anbieten, wenn auch vorhanden
+
+ Rev 1.121 19 Oct 1998 11:34:48 OM
+ #58017# Falschen Hilfetext entfernt
+
+ Rev 1.120 29 Sep 1998 16:58:30 OM
+ #57214# Fokus von Controls nicht als Selektion interpretieren
+
+ Rev 1.119 08 Sep 1998 09:59:24 MI
+ #55602# DocInfo vor Ausdruck setzen und ggf. hinterher resetten (ErrorCode bei Abort)
+
+ Rev 1.118 31 Aug 1998 17:48:56 OM
+ #55613# Selektion drucken
+
+ Rev 1.117 25 Aug 1998 08:25:28 OS
+ SfxPrintProgress ermittelt den aktuellen Drucker der ViewShell -> fuer Fax spaeter erzeugen #55210#
+
+ Rev 1.116 13 Jul 1998 14:42:30 TJ
+ include
+
+ Rev 1.115 13 Jul 1998 08:48:42 OS
+ Dialog-Parent richtig setzen #51814#
+
+ Rev 1.114 07 Jul 1998 14:25:54 AMA
+ Chg: DoPrint uebernimmt das Drucken
+
+ Rev 1.113 03 Jul 1998 15:04:32 AMA
+ Chg: DoPrint uebernimmt das Drucken
+
+ Rev 1.112 24 Jun 1998 16:17:42 OM
+ #51575# Printoptionen auch in Seitenvorschau beachten
+
+ Rev 1.111 21 Nov 1997 15:00:26 MA
+ includes
+
+ Rev 1.110 02 Oct 1997 16:29:14 TJ
+ include
+
+ Rev 1.109 30 Sep 1997 16:57:50 TJ
+ include
+
+ Rev 1.108 03 Sep 1997 15:55:34 OS
+ DLL-Umbau
+
+ Rev 1.107 02 Sep 1997 09:56:28 OM
+ SDB-Headeranpassung
+
+ Rev 1.106 08 Aug 1997 17:26:22 OM
+ Headerfile-Umstellung
+
+ Rev 1.105 21 Jul 1997 17:16:20 AMA
+ Fix #38434#: Das FontListen-Update wird jetzt von SetPrt angestossen
+
+ Rev 1.104 11 Jul 1997 14:47:00 OM
+ #41525# Nur durch SQL-Statement eingeschraenkte Datensaetze verwenden
+
+ Rev 1.103 08 Jul 1997 14:06:12 OS
+ ConfigItems von der App ans Module
+
+ Rev 1.102 13 Jun 1997 12:11:30 MA
+ #40665# sid_broiwse ist an der DocShell
+
+ Rev 1.101 11 Jun 1997 09:18:22 OS
+ FN_CONFIG_DLG ->SID_SW_EDITOPTIONS fuer Fax #40584#
+
+ Rev 1.100 09 Jun 1997 14:27:58 MA
+ chg: Browse-Flag nur noch am Doc
+
+*/
+
diff --git a/sw/source/ui/uiview/viewsrch.cxx b/sw/source/ui/uiview/viewsrch.cxx
new file mode 100644
index 000000000000..c8bab2b4e17f
--- /dev/null
+++ b/sw/source/ui/uiview/viewsrch.cxx
@@ -0,0 +1,940 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewsrch.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <string> // HACK: prevent conflict between STLPORT and Workshop headers
+
+#include "hintids.hxx"
+#include "uiparam.hxx"
+
+
+#ifndef _SVX_PAGEITEM_HXX //autogen
+#include <svx/pageitem.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _TXTCMP_HXX //autogen
+#include <svtools/txtcmp.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXITEMPOOL_HXX //autogen
+#include <svtools/itempool.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SVX_SRCHDLG_HXX //autogen
+#include <svx/srchdlg.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SV_WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+#include "workctrl.hxx"
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "swundo.hxx" // fuer Undo-Ids
+#include "uitool.hxx"
+#include "cmdid.h"
+#include "docsh.hxx"
+
+#include "view.hrc"
+
+#define SRCH_ATTR_OFF 0
+#define SRCH_ATTR_ON 1
+#define SRCH_ATTR_SET 2
+
+/*--------------------------------------------------------------------
+ Beschreibung: Search Parameter
+ --------------------------------------------------------------------*/
+
+struct SwSearchOptions
+{
+ SwDocPositions eStart, eEnd;
+ BOOL bDontWrap;
+
+ SwSearchOptions( SwWrtShell* pSh, BOOL bBackward );
+};
+
+
+inline Window* GetParentWindow( SvxSearchDialog* pSrchDlg )
+{
+ Window* pWin;
+ if( pSrchDlg && pSrchDlg->IsVisible() )
+ pWin = pSrchDlg;
+ else
+ pWin = 0;
+ return pWin;
+}
+
+
+/*-----------------12.04.97 13:04-------------------
+
+--------------------------------------------------*/
+
+
+void __EXPORT SwView::ExecSearch(SfxRequest& rReq, BOOL bNoMessage)
+{
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem = 0;
+ BOOL bApi = rReq.IsAPI()|bNoMessage;
+ BOOL bSrchList = TRUE;
+
+ USHORT nSlot = rReq.GetSlot();
+ if (nSlot == FN_REPEAT_SEARCH && !pSrchItem)
+ {
+ if(bApi)
+ {
+ rReq.SetReturnValue(SfxBoolItem(nSlot, FALSE));
+ nSlot = 0;
+ }
+ }
+ switch (nSlot)
+ {
+ // erstmal Nichts tun
+ case SID_SEARCH_ITEM:
+ {
+ delete pSrchItem;
+ pSrchItem = (SvxSearchItem*) pArgs->Get(SID_SEARCH_ITEM).Clone();
+ }
+ break;
+
+ case FID_SEARCH_ON:
+ bJustOpened = TRUE;
+ GetViewFrame()->GetBindings().Invalidate(SID_SEARCH_ITEM);
+ break;
+
+ case FID_SEARCH_OFF:
+ if(pArgs)
+ {
+ // Dialog abmelden
+ delete pSrchItem;
+ pSrchItem = (SvxSearchItem*) pArgs->Get(SID_SEARCH_ITEM).Clone();
+
+ const USHORT nId = SvxSearchDialogWrapper::GetChildWindowId();
+ SvxSearchDialogWrapper *pWrp = (SvxSearchDialogWrapper*)GetViewFrame()->GetChildWindow(nId);
+
+ DELETEZ( pSrchList );
+ DELETEZ( pReplList );
+
+ if ( pWrp )
+ {
+ pSrchDlg = (SvxSearchDialog*)(pWrp->GetWindow());
+ // die Search / Replace -Items merken wir uns
+ const SearchAttrItemList* pList = pSrchDlg->GetSearchItemList();
+ if( pList && pList->Count() )
+ pSrchList = new SearchAttrItemList( *pList );
+
+ if( 0 != (pList = pSrchDlg->GetReplaceItemList() ) &&
+ pList->Count() )
+ pReplList = new SearchAttrItemList( *pList );
+ }
+ }
+ break;
+
+ case FN_REPEAT_SEARCH:
+ case FID_SEARCH_NOW:
+ {
+ if(FID_SEARCH_NOW == nSlot && !rReq.IsAPI())
+ SwView::SetMoveType(NID_SRCH_REP);
+ const USHORT nId = SvxSearchDialogWrapper::GetChildWindowId();
+ SvxSearchDialogWrapper *pWrp = (SvxSearchDialogWrapper*)GetViewFrame()->GetChildWindow(nId);
+ if ( pWrp )
+ {
+ pSrchDlg = (SvxSearchDialog*)(pWrp->GetWindow());
+ }
+ else
+ pSrchDlg = 0;
+ }
+
+ if (pSrchDlg)
+ {
+ DELETEZ( pSrchList );
+ DELETEZ( pReplList );
+
+ const SearchAttrItemList* pList = pSrchDlg->GetSearchItemList();
+ if( pList && pList->Count() )
+ pSrchList = new SearchAttrItemList( *pList );
+
+ if( 0 != (pList = pSrchDlg->GetReplaceItemList() ) &&
+ pList->Count() )
+ pReplList = new SearchAttrItemList( *pList );
+ }
+
+ if (nSlot == FN_REPEAT_SEARCH)
+ {
+ ASSERT(pSrchItem, "Search-Item fehlt");
+ }
+ else
+ {
+ // SearchItem aus Request besorgen
+ ASSERT(pArgs, "Args fehlen");
+ delete pSrchItem;
+ pSrchItem = (SvxSearchItem*) pArgs->Get(SID_SEARCH_ITEM).Clone();
+ }
+
+ switch (pSrchItem->GetCommand())
+ {
+ case SVX_SEARCHCMD_FIND:
+ {
+ BOOL bRet = SearchAndWrap(bApi);
+ if( bRet )
+ Scroll(pWrtShell->GetCharRect().SVRect());
+ rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
+ }
+ break;
+ case SVX_SEARCHCMD_FIND_ALL:
+ {
+ BOOL bRet = SearchAll();
+ if( !bRet )
+ {
+ if( !bApi )
+ {
+ Window* pParentWindow = GetParentWindow( pSrchDlg );
+ InfoBox( pParentWindow, SW_RES(MSG_NOT_FOUND)).Execute();
+ }
+ bFound = FALSE;
+ }
+ rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
+ }
+ break;
+ case SVX_SEARCHCMD_REPLACE:
+ pWrtShell->StartAllAction();
+ {
+
+ // 1) Selektion ersetzen (nicht. wenn nur Attribute ersetzt
+ // werden sollen)
+//JP 27.04.95: warum ?
+// was ist, wenn man das gefundene nur attributieren will??
+
+ USHORT nCmd = SVX_SEARCHCMD_FIND;
+ if( pSrchItem->GetReplaceString().Len() ||
+ !pReplList )
+ {
+ // Verhindern, dass - falls der Suchstring im
+ // Ersetzungsstring enthalten ist - der ersetzte String
+ // noch einmal gefunden wird.
+
+ BOOL bBack = pSrchItem->GetBackward();
+ if (bBack)
+ pWrtShell->Push();
+ Replace();
+ if (bBack)
+ {
+ pWrtShell->Pop();
+ pWrtShell->SwapPam();
+ }
+ }
+ else if( pReplList )
+ nCmd = SVX_SEARCHCMD_REPLACE;
+
+ // 2) Weiter suchen (ohne zu ersetzen!)
+
+ USHORT nOldCmd = pSrchItem->GetCommand();
+ pSrchItem->SetCommand( nCmd );
+ BOOL bRet = SearchAndWrap(bApi);
+ if( bRet )
+ Scroll( pWrtShell->GetCharRect().SVRect());
+ pSrchItem->SetCommand( nOldCmd );
+ rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
+ }
+ pWrtShell->EndAllAction();
+ break;
+
+ case SVX_SEARCHCMD_REPLACE_ALL:
+ {
+ SwSearchOptions aOpts( pWrtShell, pSrchItem->GetBackward() );
+
+
+ if( !pSrchItem->GetSelection() )
+ {
+ // bestehende Selektionen aufheben,
+ // wenn nicht in selektierten Bereichen gesucht werden soll
+ (pWrtShell->*pWrtShell->fnKillSel)(0, FALSE);
+ if( DOCPOS_START == aOpts.eEnd )
+ pWrtShell->EndDoc();
+ else
+ pWrtShell->SttDoc();
+ }
+
+ bExtra = FALSE;
+ ULONG nFound;
+
+ { //Scope for SwWait-Object
+ SwWait aWait( *GetDocShell(), TRUE );
+ pWrtShell->StartAllAction();
+ nFound = FUNC_Search( aOpts );
+ pWrtShell->EndAllAction();
+ }
+ rReq.SetReturnValue(SfxBoolItem(nSlot, nFound != 0));
+ if( !nFound )
+ {
+ if( !bApi )
+ {
+ Window* pParentWindow = GetParentWindow( pSrchDlg );
+ InfoBox( pParentWindow, SW_RES(MSG_NOT_FOUND)).Execute();
+ }
+ bFound = FALSE;
+ return;
+ }
+
+ if( !bApi )
+ {
+ String aText( SW_RES( STR_NB_REPLACED ) );
+ const xub_StrLen nPos = aText.Search( String::CreateFromAscii("XX") );
+ aText.Erase( nPos, 2 );
+ aText.Insert( String::CreateFromInt32( nFound ), nPos );
+ Window* pParentWindow = GetParentWindow( pSrchDlg );
+ InfoBox( pParentWindow, aText ).Execute();
+ }
+ }
+ break;
+ }
+ break;
+ case FID_SEARCH_SEARCHSET:
+ case FID_SEARCH_REPLACESET:
+ {
+ static USHORT __READONLY_DATA aSearchAttrRange[] =
+ {
+ RES_CHRATR_CASEMAP, RES_CHRATR_CASEMAP,
+ RES_CHRATR_COLOR, RES_CHRATR_POSTURE,
+ RES_CHRATR_SHADOWED, RES_CHRATR_WORDLINEMODE,
+ RES_CHRATR_BACKGROUND, RES_CHRATR_BACKGROUND,
+ RES_PARATR_LINESPACING, RES_PARATR_HYPHENZONE,
+ RES_LR_SPACE, RES_UL_SPACE,
+ SID_ATTR_PARA_MODEL, SID_ATTR_PARA_KEEP,
+ 0
+ };
+
+ SfxItemSet aSet( pWrtShell->GetAttrPool(), aSearchAttrRange );
+ USHORT nWhich = SID_SEARCH_SEARCHSET;
+
+ if ( FID_SEARCH_REPLACESET == nSlot )
+ {
+ nWhich = SID_SEARCH_REPLACESET;
+
+ if ( pReplList )
+ {
+ pReplList->Get( aSet );
+ DELETEZ( pReplList );
+ }
+ }
+ else if ( pSrchList )
+ {
+ pSrchList->Get( aSet );
+ DELETEZ( pSrchList );
+ }
+ rReq.SetReturnValue( SvxSetItem( nWhich, aSet ) );
+ }
+ break;
+ default:
+#ifndef PRODUCT
+ if(nSlot)
+ {
+ ByteString sStr( "nSlot: " );
+ sStr += ByteString::CreateFromInt32( nSlot );
+ sStr += " falscher Dispatcher (viewsrch.cxx)";
+ DBG_ERROR( sStr.GetBuffer() );
+ }
+#endif
+ return;
+ }
+}
+
+
+BOOL SwView::SearchAndWrap(BOOL bApi)
+{
+ SwSearchOptions aOpts( pWrtShell, pSrchItem->GetBackward() );
+
+ // Startposition der Suche fuer WrapAround merken
+ // Start- / EndAction wegen vielleicht bestehender Selektionen
+ // aus 'Suche alle'
+ pWrtShell->StartAllAction();
+ pWrtShell->Push();
+ // falls in selektierten Bereichen gesucht werden soll, duerfen sie
+ // nicht aufgehoben werden
+ if (!pSrchItem->GetSelection())
+ (pWrtShell->*pWrtShell->fnKillSel)(0, FALSE);
+
+ SwWait *pWait = new SwWait( *GetDocShell(), TRUE );
+ if( FUNC_Search( aOpts ) )
+ {
+ bFound = TRUE;
+ if(pWrtShell->IsSelFrmMode())
+ {
+ pWrtShell->UnSelectFrm();
+ pWrtShell->LeaveSelFrmMode();
+ }
+ pWrtShell->Pop();
+ pWrtShell->EndAllAction();
+ delete pWait;
+ return TRUE;
+ }
+ delete pWait, pWait = 0;
+
+ // Suchen in den Sonderbereichen, wenn keine
+ // Suche in Selektionen vorliegt. Bei Suche in Selektionen
+ // wird ohnehin in diesen Sonderbereichen gesucht
+ BOOL bHasSrchInOther = bExtra;
+ if (!pSrchItem->GetSelection() && !bExtra )
+ {
+ bExtra = TRUE;
+ if( FUNC_Search( aOpts ) )
+ {
+ bFound = TRUE;
+ pWrtShell->Pop();
+ pWrtShell->EndAllAction();
+ return TRUE;
+ }
+ bExtra = FALSE;
+ }
+ else
+ bExtra = !bExtra;
+
+ const USHORT nId = SvxSearchDialogWrapper::GetChildWindowId();
+ SvxSearchDialogWrapper *pWrp = (SvxSearchDialogWrapper*)GetViewFrame()->GetChildWindow(nId);
+ pSrchDlg = pWrp ? (SvxSearchDialog*)(pWrp->GetWindow()) : 0;
+
+ // falls Startposition am Dokumentende / -anfang
+ if (aOpts.bDontWrap)
+ {
+ pWrtShell->EndAllAction();
+ if( !bApi )
+ {
+ Window* pParentWindow = GetParentWindow( pSrchDlg );
+ InfoBox( pParentWindow, SW_RES(MSG_NOT_FOUND)).Execute();
+ }
+ bFound = FALSE;
+ pWrtShell->Pop();
+ return FALSE;
+ }
+ pWrtShell->EndAllAction();
+ // noch mal mit WrapAround versuchen?
+
+ if( bApi || RET_NO == QueryBox( GetParentWindow( pSrchDlg ),
+ SW_RES( DOCPOS_START == aOpts.eEnd
+ ? MSG_SEARCH_START
+ : MSG_SEARCH_END )
+ ).Execute() )
+ {
+ bFound = FALSE;
+ pWrtShell->Pop();
+ return FALSE;
+ }
+ pWrtShell->StartAllAction();
+ pWrtShell->Pop(FALSE);
+ pWait = new SwWait( *GetDocShell(), TRUE );
+
+ BOOL bSrchBkwrd = DOCPOS_START == aOpts.eEnd;
+
+ aOpts.eEnd = bSrchBkwrd ? DOCPOS_START : DOCPOS_END;
+ aOpts.eStart = bSrchBkwrd ? DOCPOS_END : DOCPOS_START;
+
+ if (bHasSrchInOther)
+ {
+ pWrtShell->ClearMark();
+ if (bSrchBkwrd)
+ pWrtShell->EndDoc();
+ else
+ pWrtShell->SttDoc();
+ }
+
+ bFound = 0 != FUNC_Search( aOpts );
+ pWrtShell->EndAllAction();
+ delete pWait;
+ if ( bFound )
+ return bFound;
+ if(!bApi)
+ {
+ Window* pParentWindow = GetParentWindow( pSrchDlg );
+ InfoBox( pParentWindow, SW_RES(MSG_NOT_FOUND)).Execute();
+ }
+ return bFound = FALSE;
+}
+
+
+BOOL SwView::SearchAll(USHORT* pFound)
+{
+ SwWait aWait( *GetDocShell(), TRUE );
+ pWrtShell->StartAllAction();
+
+ SwSearchOptions aOpts( pWrtShell, pSrchItem->GetBackward() );
+
+ if (!pSrchItem->GetSelection())
+ {
+ // bestehende Selektionen aufheben,
+ // wenn nicht in selektierten Bereichen gesucht werden soll
+ (pWrtShell->*pWrtShell->fnKillSel)(0, FALSE);
+
+ if( DOCPOS_START == aOpts.eEnd )
+ pWrtShell->EndDoc();
+ else
+ pWrtShell->SttDoc();
+ }
+ bExtra = FALSE;
+ USHORT nFound = FUNC_Search( aOpts );
+ if(pFound)
+ *pFound = nFound;
+ bFound = 0 != nFound;
+
+ pWrtShell->EndAllAction();
+ return bFound;
+}
+
+
+void SwView::Replace()
+{
+ SwWait aWait( *GetDocShell(), TRUE );
+
+ pWrtShell->StartAllAction();
+ pWrtShell->StartUndo(UIUNDO_REPLACE);
+
+ if( pSrchItem->GetPattern() ) // Vorlagen?
+ pWrtShell->SetTxtFmtColl( pWrtShell->GetParaStyle(
+ pSrchItem->GetReplaceString(),
+ SwWrtShell::GETSTYLE_CREATESOME ));
+ else
+ {
+ pWrtShell->SwEditShell::Replace( pSrchItem->GetReplaceString(),
+ pSrchItem->GetRegExp());
+
+ if( pReplList && pReplList->Count() && pWrtShell->HasSelection() )
+ {
+ SfxItemSet aReplSet( pWrtShell->GetAttrPool(),
+ aTxtFmtCollSetRange );
+ if( pReplList->Get( aReplSet ).Count() )
+ {
+ ::SfxToSwPageDescAttr( *pWrtShell, aReplSet );
+ pWrtShell->SwEditShell::SetAttr( aReplSet );
+ }
+ }
+ }
+ pWrtShell->EndUndo(UIUNDO_REPLACE);
+ pWrtShell->EndAllAction();
+}
+
+
+
+SwSearchOptions::SwSearchOptions( SwWrtShell* pSh, BOOL bBackward )
+{
+ eStart = DOCPOS_CURR;
+ if( bBackward )
+ {
+ eEnd = DOCPOS_START;
+ bDontWrap = pSh->IsEndOfDoc();
+ }
+ else
+ {
+ eEnd = DOCPOS_END;
+ bDontWrap = pSh->IsStartOfDoc();
+ }
+}
+
+
+ULONG SwView::FUNC_Search( const SwSearchOptions& rOptions )
+{
+ BOOL bDoReplace = pSrchItem->GetCommand() == SVX_SEARCHCMD_REPLACE ||
+ pSrchItem->GetCommand() == SVX_SEARCHCMD_REPLACE_ALL;
+
+ int eRanges = pSrchItem->GetSelection() ?
+ FND_IN_SEL : bExtra ? FND_IN_OTHER : FND_IN_BODY;
+ if (pSrchItem->GetCommand() == SVX_SEARCHCMD_FIND_ALL ||
+ pSrchItem->GetCommand() == SVX_SEARCHCMD_REPLACE_ALL)
+ eRanges |= FND_IN_SELALL;
+
+ pWrtShell->SttSelect();
+
+ static USHORT __READONLY_DATA aSearchAttrRange[] = {
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1,
+ RES_CHRATR_BEGIN, RES_CHRATR_END-1,
+ RES_PARATR_BEGIN, RES_PARATR_END-1,
+ SID_ATTR_PARA_MODEL, SID_ATTR_PARA_KEEP,
+ 0 };
+
+ SfxItemSet aSrchSet( pWrtShell->GetAttrPool(), aSearchAttrRange);
+ if( pSrchList && pSrchList->Count() )
+ {
+ pSrchList->Get( aSrchSet );
+
+ /* -- Seitenumbruch mit Seitenvorlage */
+ ::SfxToSwPageDescAttr( *pWrtShell, aSrchSet );
+ }
+
+ SfxItemSet* pReplSet = 0;
+ if( bDoReplace && pReplList && pReplList->Count() )
+ {
+ pReplSet = new SfxItemSet( pWrtShell->GetAttrPool(),
+ aSearchAttrRange );
+ pReplList->Get( *pReplSet );
+
+ /* -- Seitenumbruch mit Seitenvorlage */
+ ::SfxToSwPageDescAttr( *pWrtShell, *pReplSet );
+
+ if( !pReplSet->Count() ) // schade, die Attribute
+ DELETEZ( pReplSet ); // kennen wir nicht
+ }
+
+ ULONG nFound;
+ if( aSrchSet.Count() || ( pReplSet && pReplSet->Count() ))
+ {
+ // Suche nach Attributen
+ SearchParam aPar( pSrchItem->GetSearchString() );
+ if( aPar.GetSrchStr().Len() )
+ {
+ if( bDoReplace )
+ aPar.SetReplaceStr( pSrchItem->GetReplaceString() );
+ aPar.SetSrchType( pSrchItem->GetRegExp()
+ ? SearchParam::SRCH_REGEXP :
+ pSrchItem->IsLevenshtein() ?
+ SearchParam::SRCH_LEVDIST :
+ SearchParam::SRCH_NORMAL );
+ aPar.SetCaseSensitive( pSrchItem->GetExact() );
+ aPar.SetSrchInSelection( pSrchItem->GetSelection() );
+ aPar.SetSrchWordOnly( pSrchItem->GetWordOnly() );
+
+ aPar.SetSrchRelaxed( pSrchItem->IsLEVRelaxed() );
+ aPar.SetLEVOther( pSrchItem->GetLEVOther());
+ aPar.SetLEVShorter( pSrchItem->GetLEVShorter());
+ aPar.SetLEVLonger( pSrchItem->GetLEVLonger());
+ }
+
+ nFound = pWrtShell->SearchAttr(
+ aSrchSet,
+ !pSrchItem->GetPattern(),
+ rOptions.eStart,
+ rOptions.eEnd,
+ FindRanges(eRanges),
+ pSrchItem->GetSearchString().Len() ? &aPar : 0,
+ pReplSet );
+ }
+ else if( pSrchItem->GetPattern() )
+ {
+ // Suchen (und ersetzen) von Vorlagen
+ nFound = pWrtShell->SearchTempl( pSrchItem->GetSearchString(),
+ rOptions.eStart,
+ rOptions.eEnd,
+ FindRanges(eRanges),
+ bDoReplace ? &pSrchItem->GetReplaceString() : 0 );
+ }
+ else
+ {
+ // Normale Suche
+
+ SearchParam aParam( pSrchItem->GetSearchString(),
+ pSrchItem->GetRegExp()
+ ? SearchParam::SRCH_REGEXP :
+ pSrchItem->IsLevenshtein() ?
+ SearchParam::SRCH_LEVDIST :
+ SearchParam::SRCH_NORMAL,
+ pSrchItem->GetExact(),
+ pSrchItem->GetWordOnly(),
+ pSrchItem->GetSelection() );
+ aParam.SetSrchRelaxed( pSrchItem->IsLEVRelaxed() );
+ aParam.SetLEVOther( pSrchItem->GetLEVOther());
+ aParam.SetLEVShorter( pSrchItem->GetLEVShorter());
+ aParam.SetLEVLonger( pSrchItem->GetLEVLonger());
+
+ if (bDoReplace)
+ aParam.SetReplaceStr(pSrchItem->GetReplaceString());
+
+ nFound = pWrtShell->SearchPattern(aParam,
+ rOptions.eStart,
+ rOptions.eEnd,
+ FindRanges(eRanges),
+ bDoReplace );
+ }
+ pWrtShell->EndSelect();
+ return nFound;
+}
+
+
+Dialog* SwView::GetSearchDialog()
+{
+ const USHORT nId = SvxSearchDialogWrapper::GetChildWindowId();
+ SvxSearchDialogWrapper *pWrp = (SvxSearchDialogWrapper*)SfxViewFrame::Current()->GetChildWindow(nId);
+ if ( pWrp )
+ pSrchDlg = (SvxSearchDialog*)(pWrp->GetWindow());
+ else
+ pSrchDlg = 0;
+ return pSrchDlg;
+}
+
+
+void SwView::StateSearch(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ SearchAttrItemList* pSrchRepList = pSrchList;
+
+ while(nWhich)
+ {
+ switch(nWhich)
+ {
+ case SID_SEARCH_OPTIONS:
+ {
+ UINT16 nOpt = 0xFFFF;
+ if( GetDocShell()->IsReadOnly() )
+ nOpt &= ~( SEARCH_OPTIONS_REPLACE |
+ SEARCH_OPTIONS_REPLACE_ALL );
+ rSet.Put( SfxUInt16Item( SID_SEARCH_OPTIONS, nOpt));
+ }
+ break;
+ case SID_SEARCH_ITEM:
+ {
+ if ( !pSrchItem )
+ {
+ pSrchItem = new SvxSearchItem( SID_SEARCH_ITEM );
+ pSrchItem->SetFamily(SFX_STYLE_FAMILY_PARA);
+ pSrchItem->SetSearchString( pWrtShell->GetSelTxt() );
+ }
+
+ if( bJustOpened && pWrtShell->IsSelection() )
+ {
+ String aTxt;
+ if( 1 == pWrtShell->GetCrsrCnt() &&
+ ( aTxt = pWrtShell->SwCrsrShell::GetSelTxt() ).Len() )
+ {
+ pSrchItem->SetSearchString( aTxt );
+ pSrchItem->SetSelection( FALSE );
+ }
+ else
+ pSrchItem->SetSelection( TRUE );
+ }
+
+ bJustOpened = FALSE;
+ rSet.Put( *pSrchItem );
+ }
+ break;
+
+/* case SID_SEARCH_REPLACESET:
+ case SID_SEARCH_SEARCHSET:
+ {
+ static USHORT __READONLY_DATA aSearchAttrRange[] =
+ {
+ RES_CHRATR_CASEMAP, RES_CHRATR_POSTURE,
+ RES_CHRATR_SHADOWED, RES_CHRATR_WORDLINEMODE,
+ RES_PARATR_LINESPACING, RES_PARATR_HYPHENZONE,
+ RES_LR_SPACE, RES_UL_SPACE,
+ SID_ATTR_PARA_MODEL, SID_ATTR_PARA_KEEP,
+ 0
+ };
+
+ SfxItemSet aSet(pWrtShell->GetAttrPool(), aSearchAttrRange );
+ if( SID_SEARCH_REPLACESET==nWhich )
+ {
+ if( pReplList )
+ {
+ pReplList->Get( aSet );
+ DELETEZ( pReplList );
+ }
+ }
+ else if( pSrchList )
+ {
+ pSrchList->Get( aSet );
+ DELETEZ( pSrchList );
+ }
+ rSet.Put( SvxSetItem( nWhich, aSet ));
+ }
+ break;
+*/
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.57 2000/09/18 16:06:14 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.56 2000/09/08 08:12:54 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.55 2000/09/07 16:05:57 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.54 2000/05/26 07:21:35 os
+ old SW Basic API Slots removed
+
+ Revision 1.53 2000/05/24 13:13:59 hr
+ conflict between STLPORT and Workshop header
+
+ Revision 1.52 2000/05/23 19:42:38 jp
+ Bugfixes for Unicode
+
+ Revision 1.51 2000/05/23 07:59:19 jp
+ Changes for Unicode
+
+ Revision 1.50 2000/05/10 11:53:20 os
+ Basic API removed
+
+ Revision 1.49 2000/04/18 15:02:51 os
+ UNICODE
+
+ Revision 1.48 2000/03/08 17:23:27 os
+ GetAppWindow() - misuse as parent window eliminated
+
+ Revision 1.47 2000/02/15 18:44:18 jp
+ Bug #73058#: dont search charsetcolor-item
+
+ Revision 1.46 2000/02/11 14:59:44 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.45 1999/07/08 16:45:18 MA
+ Use internal object to toggle wait cursor
+
+
+ Rev 1.44 08 Jul 1999 18:45:18 MA
+ Use internal object to toggle wait cursor
+
+ Rev 1.43 25 Jan 1999 13:49:16 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.42 20 Oct 1998 11:58:54 OS
+ #58161# Zeichenhintergrund suchen
+
+ Rev 1.41 20 Aug 1998 07:41:54 OS
+ Rahmenselektion aufheben, wenn Text gefunden wurde #55310#
+
+ Rev 1.40 12 Aug 1998 18:46:10 HR
+ #54781#: GCC braucht Temporary
+
+ Rev 1.39 25 Jun 1998 10:19:28 OS
+ SearchAll liefert Count zurueck #51651#
+
+ Rev 1.38 24 Feb 1998 18:06:02 OS
+ Navigationstype bei FID_SEARCH_NOW setzen
+
+ Rev 1.37 24 Feb 1998 15:29:08 JP
+ Search..: SWPOSDOC entfernt, auf enums umgestellt
+
+ Rev 1.36 29 Nov 1997 16:48:34 MA
+ includes
+
+ Rev 1.35 21 Nov 1997 15:00:26 MA
+ includes
+
+ Rev 1.34 30 Sep 1997 16:58:52 TJ
+ include
+
+ Rev 1.33 29 Aug 1997 16:40:28 OS
+ Suchmethoden fuer Basic returnen immer etwas #43261#, DLL-Umstellung
+
+ Rev 1.32 07 Aug 1997 16:53:12 OS
+ auch ReplaceAll returnt BOOL #42418#
+
+ Rev 1.31 05 Aug 1997 16:36:36 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.30 31 Jul 1997 14:59:44 MH
+ chg: header
+
+ Rev 1.29 30 Jul 1997 19:05:48 HJS
+ includes
+
+ Rev 1.28 23 Jul 1997 21:42:34 HJS
+ includes
+
+ Rev 1.27 12 Jul 1997 09:49:46 OS
+ keine Dialog fuer RepeatSearch aus der API mit nichtgesetzten SearchItem
+
+ Rev 1.26 11 Jul 1997 13:51:48 OS
+ Search, Replace und SearchAll returnen BOOL
+
+ Rev 1.25 30 Jun 1997 18:55:06 JP
+ Attributiert suchen: Attrset - Bereich erweitert
+
+ Rev 1.24 24 Jun 1997 10:15:02 OS
+ LR und ULSpace ohne _PARA_ #40922#
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/uiview/viewstat.cxx b/sw/source/ui/uiview/viewstat.cxx
new file mode 100644
index 000000000000..8b53bf80526a
--- /dev/null
+++ b/sw/source/ui/uiview/viewstat.cxx
@@ -0,0 +1,606 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewstat.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_LINGUISTIC_XTHESAURUS_HPP_
+#include <com/sun/star/linguistic/XThesaurus.hpp>
+#endif
+
+#ifndef _AEITEM_HXX //autogen
+#include <svtools/aeitem.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+//#ifndef _TWAIN_HXX //autogen
+//#include <svtools/twain.hxx>
+//#endif
+#ifndef _SFX_OBJITEM_HXX //autogen
+#include <sfx2/objitem.hxx>
+#endif
+#ifndef _SVX_PROTITEM_HXX //autogen
+#include <svx/protitem.hxx>
+#endif
+#ifndef _SVXLINKMGR_HXX
+#include <svx/linkmgr.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVX_BRSHITEM_HXX //autogen
+#include <svx/brshitem.hxx>
+#endif
+#ifndef _SVX_HTMLMODE_HXX //autogen
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _UNO_LINGU_HXX
+#include <svx/unolingu.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include "swmodule.hxx"
+#endif
+
+
+#ifndef _REDLENUM_HXX
+#include <redlenum.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _BASESH_HXX
+#include <basesh.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _TABLEMGR_HXX
+#include <tablemgr.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _WVIEW_HXX
+#include <wview.hxx>
+#endif
+#ifndef _SWGLOBDOCSH_HXX //autogen
+#include <globdoc.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+
+using namespace ::com::sun::star;
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwView::GetState(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter(rSet);
+ sal_uInt16 nWhich = aIter.FirstWhich();
+ sal_uInt16 eFrmType = FRMTYPE_NONE;
+ int bGetFrmType = sal_False;
+ sal_Bool bWeb = 0 != PTR_CAST(SwWebView, this);
+
+ while(nWhich)
+ {
+ switch(nWhich)
+ {
+ case FN_EDIT_LINK_DLG:
+ if( !pWrtShell->GetLinkManager().GetLinks().Count() )
+ rSet.DisableItem(nWhich);
+ else if( pWrtShell->IsSelFrmMode() &&
+ pWrtShell->IsSelObjProtected(FLYPROTECT_CONTENT))
+ rSet.DisableItem(nWhich);
+ break;
+
+ case FN_INSERT_CAPTION:
+ {
+ // Captions gibt's fuer Grafiken, OLE-Objekte, Rahmen und Tabellen
+ if( !bGetFrmType )
+ eFrmType = pWrtShell->GetFrmType(0,sal_True), bGetFrmType = sal_True;
+ if (! ( ((eFrmType & FRMTYPE_FLY_ANY) && nSelectionType != SwWrtShell::SEL_DRW_TXT)||
+ nSelectionType & SwWrtShell::SEL_TBL ||
+ nSelectionType & SwWrtShell::SEL_DRW) )
+ rSet.DisableItem(nWhich);
+ else if( pWrtShell->IsTableMode() )
+ rSet.DisableItem(nWhich);
+ }
+ break;
+
+ case FN_EDIT_FOOTNOTE:
+ {
+ if( !pWrtShell->GetCurFtn() )
+ rSet.DisableItem(nWhich);
+ }
+ break;
+
+ case FN_CHANGE_PAGENUM:
+ {
+ sal_uInt16 nType = pWrtShell->GetFrmType(0,sal_True);
+ if( ( FRMTYPE_FLY_ANY | FRMTYPE_HEADER | FRMTYPE_FOOTER |
+ FRMTYPE_FOOTNOTE | FRMTYPE_DRAWOBJ ) & nType )
+ rSet.DisableItem(nWhich);
+ else
+ rSet.Put(SfxUInt16Item(nWhich, pWrtShell->GetPageOffset()));
+ }
+ break;
+ case SID_PRINTDOC:
+ case SID_PRINTDOCDIRECT:
+ GetSlotState( nWhich, SfxViewShell::GetInterface(), &rSet );
+ break;
+ case SID_ATTR_PAGE:
+ case SID_ATTR_PAGE_SIZE:
+ case SID_ATTR_PAGE_PAPERBIN:
+ case RES_PAPER_BIN:
+ case FN_PARAM_FTN_INFO:
+ {
+ const sal_uInt16 nCurIdx = pWrtShell->GetCurPageDesc();
+ const SwPageDesc& rDesc = pWrtShell->GetPageDesc( nCurIdx );
+ ::PageDescToItemSet( rDesc, rSet);
+ }
+ break;
+ case RES_BACKGROUND:
+ case SID_ATTR_BRUSH:
+ {
+ const sal_uInt16 nCurIdx = pWrtShell->GetCurPageDesc();
+ const SwPageDesc& rDesc = pWrtShell->GetPageDesc( nCurIdx );
+ const SwFrmFmt& rMaster = rDesc.GetMaster();
+ const SvxBrushItem& rBrush = (const SvxBrushItem&)
+ rMaster.GetAttr(RES_BACKGROUND, sal_True);
+ rSet.Put(rBrush);
+ }
+ break;
+ case SID_CLEARHISTORY:
+ {
+ rSet.Put(SfxBoolItem(nWhich, pWrtShell->GetUndoIds() != 0));
+ }
+ break;
+ case SID_UNDO:
+ {
+ //JP 21.07.98: Bug 53429 - die muss noch nicht vorhanden sein
+ // also lasse sie mal anlegen:
+ if( !pShell )
+ SelectShell();
+
+ const SfxPoolItem* pState = pShell->GetSlotState(SID_UNDO);
+ if(pState)
+ rSet.Put(*pState);
+ else
+ rSet.DisableItem(nWhich);
+ }
+ break;
+ case FN_INSERT_CTRL:
+ rSet.Put(SfxUInt16Item(nWhich,
+ bWeb ? SwView::nWebInsertCtrlState : SwView::nInsertCtrlState));
+ break;
+ case FN_INSERT_OBJ_CTRL:
+ if(bWeb)
+ rSet.DisableItem(nWhich);
+ else
+ rSet.Put(SfxUInt16Item(nWhich, SwView::nInsertObjectCtrlState));
+ break;
+ case FN_UPDATE_TOX:
+ if(!pWrtShell->GetTOXCount())
+ rSet.DisableItem(nWhich);
+ break;
+ case FN_EDIT_CURRENT_TOX:
+ case FN_UPDATE_CUR_TOX:
+ if(!pWrtShell->GetCurTOX())
+ rSet.DisableItem(nWhich);
+ break;
+ case SID_TWAIN_SELECT:
+ case SID_TWAIN_TRANSFER:
+#if defined WIN || defined WNT || defined UNX
+ {
+ if(!SW_MOD()->GetScannerManager().is())
+ rSet.DisableItem(nWhich);
+ }
+#endif
+ break;
+ case RES_PARATR_TABSTOP:
+ case SID_ATTR_DEFTABSTOP:
+ {
+ const SvxTabStopItem& rDefTabs =
+ (const SvxTabStopItem&)pWrtShell->
+ GetDefault(RES_PARATR_TABSTOP);
+ rSet.Put( SfxUInt16Item( nWhich,
+ (sal_uInt16)::GetTabDist(rDefTabs)));
+ }
+ break;
+ case SID_ATTR_LANGUAGE:
+ {
+ rSet.Put((const SvxLanguageItem&)
+ pWrtShell->GetDefault(RES_CHRATR_LANGUAGE), SID_ATTR_LANGUAGE);
+ }
+ break;
+ case FN_INSERT_FOOTER:
+ case FN_INSERT_HEADER:
+ if(!pWrtShell->IsBrowseMode())
+ rSet.DisableItem(nWhich);
+ else
+ rSet.Put(SfxBoolItem(nWhich,
+ nWhich == FN_INSERT_HEADER ?
+ pWrtShell->IsHeadInBrowse() :
+ pWrtShell->IsFootInBrowse()));
+ break;
+ case FN_HYPHENATE_OPT_DLG:
+ {
+ sal_Bool bCheck = sal_False;
+
+ if (pWrtShell->GetSelectionType() & (SwWrtShell::SEL_DRW_TXT|SwWrtShell::SEL_DRW))
+ bCheck = IsDrawTextHyphenate();
+ rSet.Put(SfxBoolItem(nWhich, bCheck));
+ }
+ break;
+ case FN_REDLINE_ON:
+ if( pWrtShell->IsInsMode() )
+ {
+ rSet.Put( SfxBoolItem( nWhich,
+ (pWrtShell->GetRedlineMode() & REDLINE_ON) != 0));
+ }
+ else
+ rSet.DisableItem( nWhich );
+ break;
+ case FN_REDLINE_SHOW:
+ {
+ sal_uInt16 nMask = REDLINE_SHOW_INSERT | REDLINE_SHOW_DELETE;
+ rSet.Put( SfxBoolItem( nWhich,
+ (pWrtShell->GetRedlineMode() & nMask) == nMask ));
+ }
+ break;
+ case FN_REDLINE_ACCEPT:
+ {
+ SfxViewFrame* pVFrame = GetViewFrame();
+ if (pVFrame->KnowsChildWindow(nWhich))
+ rSet.Put(SfxBoolItem( nWhich, pVFrame->HasChildWindow(nWhich)));
+ else
+ rSet.DisableItem(nWhich);
+ }
+ break;
+ case FN_THESAURUS_DLG:
+ {
+ SwWrtShell &rSh = GetWrtShell();
+ if (2 <= rSh.GetCrsrCnt()) // multi selection?
+ rSet.DisableItem(nWhich);
+ else
+ {
+ SfxItemPool &rPool = GetPool();
+ SfxItemSet aCoreSet(rPool, RES_CHRATR_LANGUAGE,
+ RES_CHRATR_LANGUAGE);
+ rSh.GetAttr(aCoreSet);
+
+ const SfxPoolItem* pItem = 0;
+ SfxItemState eState = aCoreSet.GetItemState(
+ RES_CHRATR_LANGUAGE, sal_False, &pItem);
+
+ LanguageType nLang = LANGUAGE_NONE;
+ if( SFX_ITEM_DEFAULT == eState ) // provide default if not found
+ pItem = &rPool.GetDefaultItem(RES_CHRATR_LANGUAGE);
+ if( eState >= SFX_ITEM_DEFAULT )
+ nLang = ((SvxLanguageItem* )pItem)->GetLanguage();
+
+ // disable "Thesaurus" (menu entry and key shortcut) if the
+ // language is not supported (by default it is enabled)
+ uno::Reference< linguistic::XThesaurus > xThes( ::GetThesaurus() );
+ if (!xThes.is() || nLang == LANGUAGE_NONE ||
+ !xThes->hasLocale( SvxCreateLocale( nLang ) ))
+ rSet.DisableItem(nWhich);
+ }
+ }
+ break;
+ case SID_MAIL_SCROLLBODY_PAGEDOWN:
+ {
+ long nBottom = pWrtShell->GetDocSize().Height() + DOCUMENTBORDER;
+ long nAct = GetVisArea().Bottom();
+ rSet.Put(SfxBoolItem(SID_MAIL_SCROLLBODY_PAGEDOWN, nAct < nBottom ));
+ }
+ break;
+
+ case SID_DOCUMENT_COMPARE:
+ case SID_DOCUMENT_MERGE:
+ if( GetDocShell()->IsA( SwGlobalDocShell::StaticType() ) ||
+ pWrtShell->IsAnySectionInDoc( sal_True, sal_True, sal_True ))
+ rSet.DisableItem(nWhich);
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwView::GetDrawState(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter(rSet);
+ sal_Bool bWeb = 0 != PTR_CAST(SwWebView, this);
+
+ sal_uInt16 nWhich = aIter.FirstWhich();
+ while(nWhich)
+ {
+ switch(nWhich)
+ {
+ case SID_INSERT_DRAW:
+ {
+ if(bWeb)
+ rSet.DisableItem(nWhich);
+ else
+ {
+ SfxAllEnumItem aEnum(SID_INSERT_DRAW, nDrawSfxId);
+ rSet.Put(aEnum);
+ }
+ }
+ break;
+
+ case SID_SHOW_HIDDEN:
+ case SID_SHOW_FORMS:
+ rSet.DisableItem( nWhich );
+ // rSet.Put( SfxBoolItem(nWhich,sal_True ));
+ break;
+
+ case SID_DRAW_TEXT_MARQUEE:
+ if (::GetHtmlMode(GetDocShell()) & HTMLMODE_SOME_STYLES)
+ rSet.Put( SfxBoolItem(nWhich, nDrawSfxId == nWhich));
+ else
+ rSet.DisableItem(nWhich);
+ break;
+ case SID_OBJECT_SELECT:
+ rSet.Put( SfxBoolItem(nWhich, nDrawSfxId == nWhich || nFormSfxId == nWhich));
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+sal_Bool SwView::HasUIFeature( sal_uInt32 nFeature )
+{
+ return pWrtShell->IsLabelDoc();
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.147 2000/09/18 16:06:14 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.146 2000/09/08 08:12:54 os
+ Change: Set/Toggle/Has/Knows/Show/GetChildWindow
+
+ Revision 1.145 2000/08/18 14:46:23 tl
+ #74855# disable Thesaurus for multiselections
+
+ Revision 1.144 2000/05/29 08:03:23 os
+ new scanner interface
+
+ Revision 1.143 2000/05/26 07:21:35 os
+ old SW Basic API Slots removed
+
+ Revision 1.142 2000/05/15 16:47:34 jp
+ Changes for Unicode
+
+ Revision 1.141 2000/05/09 14:43:13 os
+ BASIC interface partially removed
+
+ Revision 1.140 2000/04/18 15:02:51 os
+ UNICODE
+
+ Revision 1.139 2000/03/23 07:50:25 os
+ UNO III
+
+ Revision 1.138 2000/02/16 21:01:21 tl
+ #72219# Locale Umstellung
+
+ Revision 1.137 2000/02/15 14:17:26 os
+ #72904# INSERT_CAPTION: not allowed in draw text edit
+
+ Revision 1.136 2000/02/11 14:59:48 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.135 2000/01/21 13:29:46 tl
+ #70503# disbale Thesaurus slot if language is not support
+
+ Revision 1.134 2000/01/17 14:40:36 os
+ #71979# IsAnySectionInDoc: check indexes
+
+ Revision 1.133 1999/06/09 11:19:40 OS
+ #66578# new slot: FN_EDIT_CURENT_TOX
+
+
+ Rev 1.132 09 Jun 1999 13:19:40 OS
+ #66578# new slot: FN_EDIT_CURENT_TOX
+
+ Rev 1.131 09 Mar 1999 12:55:50 OS
+ #61809# Kein Scanning im RemoteServer
+
+ Rev 1.130 28 Jan 1999 18:16:32 JP
+ Bug #59688#: kein vergleichen/zusammenfassen wenn das Doc geschuetzte/versteckte Breiche enthaelt
+
+ Rev 1.129 27 Jan 1999 13:39:54 JP
+ Bug #59688#: bei GlobalDokumenten gibts kein vergeleichen oder zusammenfuehren
+
+ Rev 1.128 10 Dec 1998 09:47:16 MIB
+ #60060#: Beschriftungen fuer Zeichen-Objekte
+
+ Rev 1.127 27 Nov 1998 15:01:10 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.126 18 Nov 1998 15:06:42 OM
+ #59280# FormController Create Modes verlassen
+
+ Rev 1.125 21 Jul 1998 20:48:44 JP
+ Bug #53429# GetState mit SID_UNDO - die Shell kann auch noch 0 sein, also anlegen
+
+ Rev 1.124 14 Jul 1998 10:43:46 OM
+ #52748# Twain-Menueeintrag
+
+ Rev 1.123 11 Jul 1998 12:28:16 MA
+ chg: State fuer scrollbody
+
+ Rev 1.122 09 Jun 1998 15:32:20 OM
+ VC-Controls entfernt
+
+ Rev 1.121 01 Apr 1998 17:31:48 OM
+ #31111 Rahmen in protecteten Rahmen sind auch geschuetzt
+
+ Rev 1.120 16 Mar 1998 16:18:04 OM
+ Aktualisieren-Button kontextsensitiv
+
+ Rev 1.119 15 Mar 1998 15:14:14 OM
+ Synchron-Button
+
+ Rev 1.118 12 Mar 1998 12:55:22 OS
+ SID_NEWWINDOW nicht mehr ueberladen
+
+ Rev 1.117 03 Mar 1998 16:39:02 OM
+ ofa includen
+
+ Rev 1.116 03 Mar 1998 10:43:12 OM
+ Redline-Browser
+
+ Rev 1.115 19 Feb 1998 09:35:08 JP
+ RedlineMode darf nur im InsertMode einschaltbar sein
+
+ Rev 1.114 18 Feb 1998 15:02:44 JP
+ Status erfragen/setzen fuer Redlines anzeigen korrigiert
+
+ Rev 1.113 03 Feb 1998 15:28:22 OM
+ Redlining
+
+ Rev 1.112 23 Jan 1998 16:04:16 MA
+ includes
+
+ Rev 1.111 06 Jan 1998 07:28:40 OS
+ getrennter Status fuer Insert-Controller #46322#
+
+ Rev 1.110 16 Dec 1997 12:00:26 OS
+ Impl-Pointer fuer UNO
+
+ Rev 1.109 29 Nov 1997 16:49:26 MA
+ includes
+
+ Rev 1.108 28 Nov 1997 11:35:50 TJ
+ include
+
+ Rev 1.107 21 Nov 1997 15:00:24 MA
+ includes
+
+ Rev 1.106 03 Nov 1997 13:58:28 MA
+ precomp entfernt
+
+ Rev 1.105 01 Sep 1997 13:13:56 OS
+ DLL-Umstellung
+
+ Rev 1.104 15 Aug 1997 11:48:02 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.103 11 Aug 1997 10:29:42 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.102 31 Jul 1997 14:59:46 MH
+ chg: header
+
+ Rev 1.101 09 Jun 1997 14:27:56 MA
+ chg: Browse-Flag nur noch am Doc
+
+ Rev 1.100 05 Jun 1997 09:33:40 OS
+ FN_INSERT_HEADER/FOOTER im Druck-Layout disablen #40441#
+
+ Rev 1.99 20 Mar 1997 19:15:20 OS
+ Objekt einfuegen und Draw einfuegen im Web disabled
+
+ Rev 1.98 11 Mar 1997 16:11:38 OS
+ FN_TOOLBOX_SWITCH weg
+
+ Rev 1.97 24 Feb 1997 16:53:56 OM
+ Silbentrennung in Draw-Objekten
+
+ Rev 1.96 23 Feb 1997 22:17:56 OM
+ Feld-Controller an Textshell verschoben
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/uiview/viewtab.cxx b/sw/source/ui/uiview/viewtab.cxx
new file mode 100644
index 000000000000..fb84d56bef31
--- /dev/null
+++ b/sw/source/ui/uiview/viewtab.cxx
@@ -0,0 +1,1974 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewtab.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+
+#pragma hdrstop
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+
+#include <hintids.hxx>
+#include "uiparam.hxx"
+#include "uitool.hxx"
+
+#ifndef _SVX_RULRITEM_HXX //autogen
+#include <svx/rulritem.hxx>
+#endif
+#ifndef _SVX_TSPTITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SVX_RULER_HXX //autogen
+#include <svx/ruler.hxx>
+#endif
+#ifndef _SVX_PROTITEM_HXX //autogen
+#include <svx/protitem.hxx>
+#endif
+#ifndef _SFXRECTITEM_HXX //autogen
+#include <svtools/rectitem.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX
+#include <sfx2/bindings.hxx>
+#endif
+
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "basesh.hxx"
+#include "cmdid.h"
+#include "viewopt.hxx"
+#include "tabcol.hxx"
+#include "frmfmt.hxx" // FrameFormat
+#include "pagedesc.hxx" // Aktuelles Seitenformat
+#include "wview.hxx"
+#include "fmtcol.hxx"
+#include "section.hxx"
+
+/*--------------------------------------------------------------------
+ Beschreibung: Debug-Methode
+ --------------------------------------------------------------------*/
+#ifdef DEBUGLIN
+
+
+static void DebugTabCols(const SwTabCols &rCols)
+{
+ String aTmp("TabCols LeftMin ");
+ aTmp += rCols.GetLeftMin() / 56;
+ aTmp += "Left: ";
+ aTmp += rCols.GetLeft() / 56;
+ aTmp += "Right: ";
+ aTmp += rCols.GetRight() / 56;
+ aTmp += "RightMax: ";
+ aTmp += rCols.GetRightMax() / 56;
+ aTmp += ": ";
+ const USHORT nCount = rCols.Count();
+ for(USHORT i = 0; i < nCount; ++i) {
+ aTmp += rCols[i] / 56;
+ aTmp += ' ';
+ }
+ InfoBox(0, aTmp).Execute();
+}
+
+
+
+static void DebugColItems(SvxColumnItem& rColItem)
+{
+ String aTmp("Aktuell: ");
+ aTmp += rColItem.GetActColumn();
+ aTmp += " ColLeft: ";
+ aTmp += String(rColItem.GetLeft() / 56);
+ aTmp += " ColRight: ";
+ aTmp += String(rColItem.GetRight() / 56);
+ for(USHORT i = 0; i < rColItem.Count(); ++i) {
+ aTmp += " Start: ";
+ aTmp += String(rColItem[i].nStart/56);
+ aTmp += " End: ";
+ aTmp += String(rColItem[i].nEnd/56);
+ }
+
+ InfoBox(0, aTmp).Execute();
+}
+
+
+static void DebugLRSpace(const SvxLongLRSpaceItem& rLRSpace)
+{
+ String aTmp("Left: ");
+ aTmp += rLRSpace.GetLeft() / 56;
+ aTmp += " Right: ";
+ aTmp += rLRSpace.GetRight() / 56;
+ InfoBox(0, aTmp).Execute();
+}
+
+
+
+static void DebugULSpace(const SvxLongULSpaceItem& rULSpace)
+{
+ String aTmp("Upper: ");
+ aTmp += rULSpace.GetUpper() / 56;
+ aTmp += " Lower: ";
+ aTmp += rULSpace.GetLower() / 56;
+
+ InfoBox(0, aTmp).Execute();
+}
+
+
+
+static void DebugTabStops(const SvxTabStopItem& rTabs)
+{
+ String aTmp("Tabs: ");
+
+ // Def Tabs loeschen
+ for(USHORT i = 0; i < rTabs.Count(); ++i)
+ {
+ aTmp += String(rTabs[i].GetTabPos() / 56);
+ aTmp += " : ";
+ }
+ InfoBox(0, aTmp).Execute();
+}
+
+
+
+static void DebugParaMargin(const SvxLRSpaceItem& rLRSpace)
+{
+ String aTmp("ParaLeft: ");
+ aTmp += rLRSpace.GetTxtLeft() / 56;
+ aTmp += " ParaRight: ";
+ aTmp += rLRSpace.GetRight() / 56;
+ aTmp += " FLI: ";
+ aTmp += rLRSpace.GetTxtFirstLineOfst() / 56;
+ InfoBox(0, aTmp).Execute();
+}
+#define DEBUGTABCOLS( bla ) DebugTabCols( bla )
+#define DEBUGCOLITEMS( bla ) DebugColItems ( bla )
+#define DEBUGLRSPACE( bla ) DebugLRSpace ( bla )
+#define DEBUGULSPACE( bla ) DebugULSpace ( bla )
+#define DEBUGTABSTOPS( bla ) DebugTabStops ( bla )
+#define DEBUGPARAMARGIN( bla ) DebugParaMargin ( bla )
+#else
+#define DEBUGTABCOLS
+#define DEBUGCOLITEMS
+#define DEBUGLRSPACE
+#define DEBUGULSPACE
+#define DEBUGTABSTOPS
+#define DEBUGPARAMARGIN
+#endif
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Columns eintueten
+ --------------------------------------------------------------------*/
+
+
+void lcl_FillSvxColumn(const SwFmtCol& rCol,
+ USHORT nTotalWidth,
+ SvxColumnItem& rColItem,
+ long nDistance)
+{
+ const SwColumns& rCols = rCol.GetColumns();
+
+ USHORT nWidth = 0;
+
+ for ( USHORT i = 0; i < rCols.Count(); ++i )
+ {
+ SwColumn* pCol = rCols[i];
+ const USHORT nStart = USHORT(pCol->GetLeft() + nWidth + nDistance);
+ nWidth += rCol.CalcColWidth(i, nTotalWidth);
+ const USHORT nEnd = USHORT(nWidth - pCol->GetRight() + nDistance);
+
+ SvxColumnDescription aColDesc(nStart, nEnd, TRUE);
+ rColItem.Append(aColDesc);
+ }
+
+ // ?? gleichverteilte Spalten
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: ColumnItem in ColumnInfo ueberfuehren
+ --------------------------------------------------------------------*/
+
+
+void lcl_ConvertToCols(const SvxColumnItem& rColItem,
+ USHORT nTotalWidth,
+ SwFmtCol& rCols)
+{
+ ASSERT( rCols.GetNumCols() == rColItem.Count(), "Column count mismatch" );
+
+ USHORT nLeft = 0;
+ SwTwips nSumAll= 0; // Summiere alle Spalten und Raender auf
+
+ SwColumns& rArr = rCols.GetColumns();
+
+ // Tabcols der Reihe nach
+ for( USHORT i=0; i < rColItem.Count()-1; ++i )
+ {
+ DBG_ASSERT(rColItem[i+1].nStart >= rColItem[i].nEnd,"\201berlappende Spalten" );
+ USHORT nStart = rColItem[i+1].nStart;
+ USHORT nEnd = rColItem[i].nEnd;
+ if(nStart < nEnd)
+ nStart = nEnd;
+ const USHORT nDiff = nStart - nEnd;
+ const USHORT nRight = nDiff / 2;
+
+ USHORT nWidth = rColItem[i].nEnd - rColItem[i].nStart;
+ nWidth += nLeft + nRight;
+
+ SwColumn* pCol = rArr[i];
+ pCol->SetWishWidth( USHORT(long(rCols.GetWishWidth()) * long(nWidth) /
+ long(nTotalWidth) ));
+ pCol->SetLeft( nLeft );
+ pCol->SetRight( nRight );
+ nSumAll += pCol->GetWishWidth();
+
+ nLeft = nRight;
+ }
+ rArr[rColItem.Count()-1]->SetLeft( nLeft );
+
+ //Die Differenz aus der Gesamtwunschbreite und der Summe der bisher berechneten
+ // Spalten und Raender sollte die Breite der letzten Spalte ergeben.
+ rArr[rColItem.Count()-1]->SetWishWidth( rCols.GetWishWidth() - (USHORT)nSumAll );
+
+ rCols.SetOrtho(FALSE, 0, 0 );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Tabs loeschen
+ --------------------------------------------------------------------*/
+
+
+void lcl_EraseDefTabs(SvxTabStopItem& rTabStops)
+{
+ // Def Tabs loeschen
+ for ( USHORT i = 0; i < rTabStops.Count(); )
+ {
+ // Hier auch den DefTab auf Null rausschmeissen
+ if ( SVX_TAB_ADJUST_DEFAULT == rTabStops[i].GetAdjustment() ||
+ rTabStops[i].GetTabPos() == 0 )
+ {
+ rTabStops.Remove(i);
+ continue;
+ }
+ ++i;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Seitenrand umdrehen
+ --------------------------------------------------------------------*/
+
+
+void SwView::SwapPageMargin(const SwPageDesc& rDesc, SvxLRSpaceItem& rLRSpace)
+{
+ USHORT nPhyPage, nVirPage;
+ GetWrtShell().GetPageNum( nPhyPage, nVirPage );
+
+ if ( rDesc.GetUseOn() == PD_MIRROR && (nPhyPage % 2) == 0 )
+ {
+ USHORT nTmp = rLRSpace.GetRight();
+ rLRSpace.SetRight( rLRSpace.GetLeft() );
+ rLRSpace.SetLeft( nTmp );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Wenn der Rahmenrand verschoben wird, sollen die
+ Spaltentrenner an der gleichen absoluten Position bleiben
+ --------------------------------------------------------------------*/
+
+
+void lcl_Scale(long& nVal, long nScale)
+{
+ nVal *= nScale;
+ nVal >>= 8;
+}
+
+void ResizeFrameCols(SwFmtCol& rCol,
+ long nOldWidth,
+ long nNewWidth,
+ long nLeftDelta )
+{
+ SwColumns& rArr = rCol.GetColumns();
+ long nWishSum = (long)rCol.GetWishWidth();
+ long nWishDiff = (nWishSum * 100/nOldWidth * nNewWidth) / 100 - nWishSum;
+ long nNewWishWidth = nWishSum + nWishDiff;
+ if(nNewWishWidth > 0xffffl)
+ {
+ // wenn die Wunschbreite zu gross wird, dann muessen alle Werte passend skaliert werden
+ long nScale = (0xffffl << 8)/ nNewWishWidth;
+ for(USHORT i = 0; i < rArr.Count(); i++)
+ {
+ SwColumn* pCol = rArr.GetObject(i);
+ long nVal = pCol->GetWishWidth();
+ lcl_Scale(nVal, nScale);
+ pCol->SetWishWidth((USHORT) nVal);
+ nVal = pCol->GetLeft();
+ lcl_Scale(nVal, nScale);
+ pCol->SetLeft((USHORT) nVal);
+ nVal = pCol->GetRight();
+ lcl_Scale(nVal, nScale);
+ pCol->SetRight((USHORT) nVal);
+ }
+ lcl_Scale(nNewWishWidth, nScale);
+ lcl_Scale(nWishDiff, nScale);
+ }
+ rCol.SetWishWidth( (USHORT) (nNewWishWidth) );
+
+ if( nLeftDelta >= 2 || nLeftDelta <= -2)
+ rArr[0]->SetWishWidth(rArr[0]->GetWishWidth() + (USHORT)nWishDiff);
+ else
+ rArr[rArr.Count()-1]->SetWishWidth(rArr[rArr.Count()-1]->GetWishWidth() + (USHORT)nWishDiff);
+
+}
+/*--------------------------------------------------------------------
+ Beschreibung: Hier werden alle Aenderungen der Tableiste
+ wieder in das Modell geschossen
+ --------------------------------------------------------------------*/
+
+
+void SwView::ExecTabWin( SfxRequest& rReq )
+{
+ SwWrtShell &rSh = GetWrtShell();
+ const USHORT nFrmType = rSh.IsObjSelected() ?
+ FRMTYPE_DRAWOBJ :
+ rSh.GetFrmType(0,TRUE);
+ const BOOL bFrmSelection = rSh.IsFrmSelected();
+ BOOL bBrowse = rSh.IsBrowseMode();
+
+
+ const USHORT nSlot = rReq.GetSlot();
+ const USHORT nDescId = rSh.GetCurPageDesc();
+ const SwPageDesc& rDesc = rSh.GetPageDesc( nDescId );
+
+ const SwFmtHeader& rHeaderFmt = rDesc.GetMaster().GetHeader();
+ SwFrmFmt *pHeaderFmt = (SwFrmFmt*)rHeaderFmt.GetHeaderFmt();
+
+ const SwFmtFooter& rFooterFmt = rDesc.GetMaster().GetFooter();
+ SwFrmFmt *pFooterFmt = (SwFrmFmt*)rFooterFmt.GetFooterFmt();
+
+ const SwFmtFrmSize &rFrmSize = rDesc.GetMaster().GetFrmSize();
+ const SwRect& rPrtRect = rSh.GetAnyCurRect(RECT_PAGE);
+ const long nPageWidth = bBrowse ?
+ rPrtRect.Width() :
+ rFrmSize.GetWidth();
+ const long nPageHeight = bBrowse ?
+ rPrtRect.Height() :
+ rFrmSize.GetHeight();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ // RULER_BORDERS wird sicherheitshalber nicht recorded
+ // da gibt es Aerger im Sfx
+ const SfxPoolItem* pItem;
+
+ BOOL bUnlockView = FALSE;
+ rSh.StartAllAction();
+
+ switch ( nSlot )
+ {
+ case RES_LR_SPACE:
+ case SID_ATTR_LRSPACE:
+ {
+ if(SFX_ITEM_SET == pArgs->GetItemState(RES_LR_SPACE, FALSE, &pItem))
+ {
+ const SvxLRSpaceItem* pLR = (const SvxLRSpaceItem*)pItem;
+
+ SvxLongLRSpaceItem aLongLR((long)pLR->GetLeft(),
+ (long)pLR->GetRight(),
+ SID_ATTR_LONG_LRSPACE);
+ SfxRequest aReq(SID_ATTR_LONG_LRSPACE, SFX_CALLMODE_SLOT, GetPool());
+ aReq.AppendItem(aLongLR);
+ ExecTabWin( aReq );
+ }
+ }
+ break;
+ case SID_ATTR_LONG_LRSPACE:
+ {
+ SvxLongLRSpaceItem aLongLR( (const SvxLongLRSpaceItem&)rReq.GetArgs()->
+ Get( SID_ATTR_LONG_LRSPACE ) );
+ SvxLRSpaceItem aLR;
+ DEBUGLRSPACE(aLongLR);
+ BOOL bSect = 0 != (nFrmType & FRMTYPE_COLSECT);
+ BOOL bTableColumns = 0 != rSh.GetTableFmt();
+ if(bSect && (bTableColumns || nFrmType & FRMTYPE_COLUMN))
+ {
+ SwRect aLastRect = rSh.GetAnyCurRect(RECT_SECTION);
+ long nOldLeft = (long)(aLastRect.Left() - DOCUMENTBORDER);
+ long nOldRight = (long)(nPageWidth + DOCUMENTBORDER - aLastRect.Right());
+ //welche Seite wurde veraendert? Rundungsfehler vermeiden
+ BOOL bLeftChanged = Abs(nOldLeft - aLongLR.GetLeft()) > Abs(nOldRight - aLongLR.GetRight());
+ const SwFrmFmt* pFmt = 0;
+ if(bTableColumns)
+ {
+ SwTabCols aTabCols;
+ rSh.GetTabCols(aTabCols);
+ //fuer die erste bzw. letzte Spalte wird der Tabellenrand veraendert, sonst
+ //die Spaltentrenner
+ USHORT nCurColNo = rSh.GetCurTabColNum();
+ USHORT nColCount = aTabCols.Count() + 1;
+
+ if(0 == nCurColNo && bLeftChanged)
+ {
+ //die erste
+ long nNewColPos = aLongLR.GetLeft();
+ if(nNewColPos >= aTabCols.GetLeftMin())
+ aTabCols.SetLeft((USHORT)nNewColPos - aTabCols.GetLeftMin()+ DOCUMENTBORDER);
+
+ }
+ else if(nColCount - 1 == nCurColNo && !bLeftChanged)
+ {
+ //die letzte
+ long nNewColPos = aLongLR.GetRight();
+ nNewColPos = nPageWidth - nNewColPos + DOCUMENTBORDER - aTabCols.GetLeftMin();
+ if(nNewColPos <= aTabCols.GetRightMax())
+ aTabCols.SetRight((USHORT)nNewColPos);
+ }
+ else
+ {
+ //mittendrin
+ long nLeftBorder;
+ long nRightBorder;
+ if(bLeftChanged)
+ {
+ nLeftBorder = nCurColNo - 1 ? aTabCols[nCurColNo - 2] : aTabCols.GetLeft();
+ nRightBorder = nCurColNo < nColCount - 1 ? aTabCols[nCurColNo] : aTabCols.GetRight();
+ }
+ else
+ {
+ nLeftBorder = nCurColNo ? aTabCols[nCurColNo - 1] : aTabCols.GetLeft();
+ nRightBorder = nCurColNo + 1 < nColCount ? aTabCols[nCurColNo + 1] : aTabCols.GetRight();
+ }
+
+ long nNewColPos = bLeftChanged ? aLongLR.GetLeft() : aLongLR.GetRight();
+ //hier muss noch die Border-Distance der Zelle eingerechnet werden
+ if(bLeftChanged)
+ nNewColPos = nNewColPos + DOCUMENTBORDER - aTabCols.GetLeftMin();
+ else
+ nNewColPos = nPageWidth - nNewColPos + DOCUMENTBORDER - aTabCols.GetLeftMin();
+
+
+ if(nNewColPos < nLeftBorder + MINLAY)
+ nNewColPos = nLeftBorder + MINLAY;
+ else if(nNewColPos > nRightBorder - MINLAY)
+ nNewColPos = nRightBorder - MINLAY;
+ aTabCols[nCurColNo - (bLeftChanged ? 1 : 0)] = (USHORT)nNewColPos;
+ }
+ rSh.SetTabCols(aTabCols, FALSE);
+ }
+ else if(0 != (pFmt = rSh.GetFlyFrmFmt()))
+ {
+ SwFmtCol aCol = pFmt->GetCol();
+ SwColumns& aCols = aCol.GetColumns();
+// const SwRect &rSizeRect = rSh.GetAnyCurRect(RECT_FLY_PRT_EMBEDDED);
+ const SwRect aFlyRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED);
+ const long lWidth = aFlyRect.Width();
+ USHORT nCurFrameCol = rSh.GetCurOutColNum() - 1;
+ USHORT nColCount = aCols.Count();
+ SfxItemSet aSet( GetPool(), RES_FRM_SIZE, RES_FRM_SIZE,
+ RES_HORI_ORIENT, RES_HORI_ORIENT,
+ RES_COL, RES_COL, 0 );
+
+ if((0 == nCurFrameCol && bLeftChanged) ||
+ (nColCount - 1 == nCurFrameCol && !bLeftChanged))
+ {
+ //in LRSpace umsetzen
+ long nDeltaX = bLeftChanged ?
+ DOCUMENTBORDER + aLongLR.GetLeft() - aFlyRect.Left()
+ : 0 ;
+ SwFmtHoriOrient aHoriOrient( pFmt->GetHoriOrient() );
+ aHoriOrient.SetHoriOrient( HORI_NONE );
+ aHoriOrient.SetPos( aHoriOrient.GetPos() + nDeltaX );
+
+ SwFmtFrmSize aSize( pFmt->GetFrmSize() );
+ long nOldWidth = (long) aSize.GetWidth();
+
+ long nWidthDiff = nOldLeft - aLongLR.GetLeft() +
+ nOldRight - aLongLR.GetRight();
+ long nNewWidth = nOldWidth + nWidthDiff;
+ if(aSize.GetWidthPercent())
+ {
+ SwRect aRect;
+ rSh.CalcBoundRect(aRect, FLY_IN_CNTNT);
+ long nPrtWidth = aRect.Width();
+ aSize.SetWidthPercent(BYTE((
+ nNewWidth) * 100 /nPrtWidth));
+ }
+ else
+ aSize.SetWidth( nNewWidth );
+
+ ::ResizeFrameCols(aCol, nOldWidth, (long)aSize.GetWidth(), nDeltaX );
+ aSet.Put( aSize );
+ aSet.Put( aHoriOrient );
+
+ }
+ else //Spalten veraendert
+ {
+ long nLeftBorder = 0;
+ long nRightBorder = lWidth;
+ long nOldColPos = 0;
+ long nNewColPos = bLeftChanged ? aLongLR.GetLeft() : aLongLR.GetRight();
+ if(!bLeftChanged)
+ nNewColPos = nPageWidth - nNewColPos;
+
+ //mittendrin
+ long nWidth = 0;
+ for ( USHORT i = 0; i < aCols.Count(); ++i )
+ {
+ SwColumn* pCol = aCols[i];
+ nWidth += aCol.CalcColWidth(i, lWidth);
+ if( i == (bLeftChanged ? nCurFrameCol - 1 : nCurFrameCol))
+ nOldColPos = nWidth;
+ if( i == (bLeftChanged ? nCurFrameCol - 2 : nCurFrameCol - 1))
+ nLeftBorder = nWidth;
+ if(i == (bLeftChanged ? nCurFrameCol : nCurFrameCol + 1))
+ nRightBorder = nWidth;
+ }
+ nNewColPos -= aFlyRect.Left();
+ nNewColPos += DOCUMENTBORDER;
+ if(nNewColPos < nLeftBorder + MINLAY)
+ nNewColPos = nLeftBorder + MINLAY;
+ else if(nNewColPos > nRightBorder - MINLAY)
+ nNewColPos = nRightBorder - MINLAY;
+
+
+ // in WishWidth umrechnen:
+ nNewColPos = nNewColPos * long(aCol.GetWishWidth()) / lWidth;
+ nOldColPos = nOldColPos * long(aCol.GetWishWidth()) / lWidth;
+ long nDiff = nNewColPos - nOldColPos;
+
+ SwColumn* pCol = aCols[bLeftChanged ? nCurFrameCol : nCurFrameCol + 1];
+ pCol->SetWishWidth(long(pCol->GetWishWidth()) - nDiff );
+ //den Nachbarn in umgekehrter Weise veraendern
+ pCol = aCols[bLeftChanged ? nCurFrameCol - 1 : nCurFrameCol ];
+ pCol->SetWishWidth(long(pCol->GetWishWidth()) + nDiff );
+ }
+ aSet.Put( aCol );
+ rSh.StartAction();
+ rSh.Push();
+ rSh.SetFlyFrmAttr( aSet );
+ //die Rahmenselektion wieder aufheben
+ if(!bFrmSelection && rSh.IsFrmSelected())
+ {
+ rSh.UnSelectFrm();
+ rSh.LeaveSelFrmMode();
+ }
+ rSh.Pop();
+ rSh.EndAction();
+
+ }
+ else
+ {
+ //Seitenspalten
+ USHORT nCurCol = rSh.GetCurOutColNum();
+ nCurCol--;
+ const SwFrmFmt& rMaster = rDesc.GetMaster();
+ SwFmtCol aCol(rMaster.GetCol());
+ SwColumns& aCols = aCol.GetColumns();
+ //SvxColumnItem aColItem(nCurCol);
+ const SwRect aPageRect = rSh.GetAnyCurRect(RECT_PAGE_PRT);
+ const long lWidth = aPageRect.Width();
+ USHORT nColCount = aCols.Count();
+ SfxItemSet aSet( GetPool(), RES_FRM_SIZE, RES_FRM_SIZE,
+ RES_HORI_ORIENT, RES_HORI_ORIENT,
+ RES_COL, RES_COL, 0 );
+
+ if((0 == nCurCol && bLeftChanged) ||
+ (nColCount - 1 == nCurCol && !bLeftChanged))
+ {
+ // Seitenraender einstellen
+ SvxLRSpaceItem aLR;
+ aLR.SetLeft ((aPageRect.Left()/* - DOCUMENTBORDER*/));
+ aLR.SetRight((nPageWidth + /*DOCUMENTBORDER*/ - aPageRect.Right()));
+ if(bLeftChanged)
+ aLR.SetLeft((USHORT)aLongLR.GetLeft());
+ else
+ aLR.SetRight((USHORT)aLongLR.GetRight());
+ SwapPageMargin( rDesc, aLR );
+ SwPageDesc aDesc( rDesc );
+ aDesc.GetMaster().SetAttr( aLR );
+ rSh.ChgPageDesc( nDescId, aDesc );
+ }
+ else //Spalten veraendert ?
+ {
+ long nLeftBorder = 0;
+ long nRightBorder = nPageWidth;
+ long nOldColPos = 0;
+ long nNewColPos = bLeftChanged ? aLongLR.GetLeft() : aLongLR.GetRight();
+ if(!bLeftChanged)
+ nNewColPos = nPageWidth - nNewColPos;
+
+ //mittendrin
+ long nWidth = 0;
+ for ( USHORT i = 0; i < aCols.Count(); ++i )
+ {
+ SwColumn* pCol = aCols[i];
+ nWidth += aCol.CalcColWidth(i, lWidth);
+ if( i == (bLeftChanged ? nCurCol - 1 : nCurCol))
+ nOldColPos = nWidth;
+ if( i == (bLeftChanged ? nCurCol - 2 : nCurCol - 1))
+ nLeftBorder = nWidth;
+ if(i == (bLeftChanged ? nCurCol : nCurCol + 1))
+ nRightBorder = nWidth;
+ }
+ nNewColPos -= aPageRect.Left();
+// nNewColPos += DOCUMENTBORDER;
+ if(nNewColPos < nLeftBorder + MINLAY)
+ nNewColPos = nLeftBorder + MINLAY;
+ else if(nNewColPos > nRightBorder - MINLAY)
+ nNewColPos = nRightBorder - MINLAY;
+
+
+ // in WishWidth umrechnen:
+ nNewColPos = nNewColPos * long(aCol.GetWishWidth()) / lWidth;
+ nOldColPos = nOldColPos * long(aCol.GetWishWidth()) / lWidth;
+ long nDiff = nNewColPos - nOldColPos;
+
+ SwColumn* pCol = aCols[bLeftChanged ? nCurCol : nCurCol + 1];
+ pCol->SetWishWidth(long(pCol->GetWishWidth()) - nDiff );
+ //den Nachbarn in umgekehrter Weise veraendern
+ pCol = aCols[bLeftChanged ? nCurCol - 1 : nCurCol ];
+ pCol->SetWishWidth(long(pCol->GetWishWidth()) + nDiff );
+ }
+ SwPageDesc aDesc( rDesc );
+ aDesc.GetMaster().SetAttr( aCol );
+ rSh.ChgPageDesc( rSh.GetCurPageDesc(), aDesc );
+
+
+/* aSet.Put( aCol );
+// rSh.StartAction();
+// rSh.Push();
+// rSh.SetFlyFrmAttr( aSet );*/
+ }
+ }
+ else if ( bFrmSelection || nFrmType & FRMTYPE_FLY_ANY )
+ {
+ SwFrmFmt* pFmt = ((SwFrmFmt*)rSh.GetFlyFrmFmt());
+ const SwRect &rRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED);
+ long nDeltaX = DOCUMENTBORDER + aLongLR.GetLeft() -
+ rRect.Left();
+ SwFmtHoriOrient aHoriOrient( pFmt->GetHoriOrient() );
+ aHoriOrient.SetHoriOrient( HORI_NONE );
+ aHoriOrient.SetPos( aHoriOrient.GetPos() + nDeltaX );
+
+ SwFmtFrmSize aSize( pFmt->GetFrmSize() );
+ long nOldWidth = (long) aSize.GetWidth();
+
+ if(aSize.GetWidthPercent())
+ {
+ SwRect aRect;
+ rSh.CalcBoundRect(aRect, FLY_IN_CNTNT);
+ long nPrtWidth = aRect.Width();
+ aSize.SetWidthPercent(BYTE((nPageWidth - aLongLR.GetLeft() - aLongLR.GetRight()) * 100 /nPrtWidth));
+ }
+ else
+ aSize.SetWidth( nPageWidth -
+ (aLongLR.GetLeft() + aLongLR.GetRight()));
+
+ SfxItemSet aSet( GetPool(), RES_FRM_SIZE, RES_FRM_SIZE,
+ RES_HORI_ORIENT, RES_HORI_ORIENT,
+ RES_COL, RES_COL, 0 );
+
+ if( nFrmType & FRMTYPE_COLUMN )
+ {
+ SwFmtCol aCol(pFmt->GetCol());
+
+ ::ResizeFrameCols(aCol, nOldWidth, (long)aSize.GetWidth(), nDeltaX );
+ aSet.Put(aCol);
+ }
+
+ aSet.Put( aSize );
+ aSet.Put( aHoriOrient );
+
+ rSh.StartAction();
+ rSh.Push();
+ rSh.SetFlyFrmAttr( aSet );
+ //die Rahmenselektion wieder aufheben
+ if(!bFrmSelection && rSh.IsFrmSelected())
+ {
+ rSh.UnSelectFrm();
+ rSh.LeaveSelFrmMode();
+ }
+ rSh.Pop();
+ rSh.EndAction();
+ }
+ else if ( nFrmType & ( FRMTYPE_HEADER | FRMTYPE_FOOTER ))
+ {
+ // Seitenraender rausrechnen
+ USHORT nOld = rDesc.GetMaster().GetLRSpace().GetLeft();
+ aLongLR.SetLeft( nOld > (USHORT)aLongLR.GetLeft() ? 0 : aLongLR.GetLeft() - nOld );
+
+ nOld = rDesc.GetMaster().GetLRSpace().GetRight();
+ aLongLR.SetRight( nOld > (USHORT)aLongLR.GetRight() ? 0 : aLongLR.GetRight() - nOld );
+ aLR.SetLeft((USHORT)aLongLR.GetLeft());
+ aLR.SetRight((USHORT)aLongLR.GetRight());
+
+ if ( nFrmType & FRMTYPE_HEADER )
+ pHeaderFmt->SetAttr( aLR );
+ else
+ pFooterFmt->SetAttr( aLR );
+ }
+ else if( nFrmType == FRMTYPE_DRAWOBJ)
+ {
+ SwRect aRect( rSh.GetObjRect() );
+ aRect.Left( aLongLR.GetLeft() + DOCUMENTBORDER );
+ aRect.Right( nPageWidth + DOCUMENTBORDER - aLongLR.GetRight());
+ rSh.SetObjRect( aRect );
+ }
+ else
+ { // Seitenraender einstellen
+ aLR.SetLeft((USHORT)aLongLR.GetLeft());
+ aLR.SetRight((USHORT)aLongLR.GetRight());
+ SwapPageMargin( rDesc, aLR );
+ SwPageDesc aDesc( rDesc );
+ aDesc.GetMaster().SetAttr( aLR );
+ rSh.ChgPageDesc( nDescId, aDesc );
+ }
+ }
+ break;
+ case RES_UL_SPACE:
+ case SID_ATTR_ULSPACE:
+ {
+ if(SFX_ITEM_SET == pArgs->GetItemState(RES_UL_SPACE, FALSE, &pItem))
+ {
+ const SvxULSpaceItem* pUL = (const SvxULSpaceItem*)pItem;
+
+ SvxLongULSpaceItem aLongUL((long)pUL->GetUpper(), (long)pUL->GetLower(),
+ SID_ATTR_LONG_ULSPACE);
+ SfxRequest aReq(SID_ATTR_LONG_ULSPACE, SFX_CALLMODE_SLOT, GetPool());
+ aReq.AppendItem(aLongUL);
+ ExecTabWin( aReq );
+ }
+ }
+ break;
+ case SID_ATTR_LONG_ULSPACE:
+ {
+ SvxLongULSpaceItem aLongULSpace( (const SvxLongULSpaceItem&)rReq.GetArgs()->
+ Get( SID_ATTR_LONG_ULSPACE ));
+ DEBUGULSPACE(aLongULSpace);
+
+ if( bFrmSelection || nFrmType & FRMTYPE_FLY_ANY )
+ {
+ SwFrmFmt* pFmt = ((SwFrmFmt*)rSh.GetFlyFrmFmt());
+
+ const SwRect &rRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED);
+ const long nDeltaY = DOCUMENTBORDER + aLongULSpace.GetUpper() -
+ rRect.Top();
+ const long nHeight = nPageHeight -
+ (aLongULSpace.GetUpper() + aLongULSpace.GetLower());
+
+ SwFmtVertOrient aVertOrient(pFmt->GetVertOrient());
+ aVertOrient.SetVertOrient(VERT_NONE);
+ aVertOrient.SetPos(aVertOrient.GetPos() + nDeltaY );
+
+ SwFmtFrmSize aSize(pFmt->GetFrmSize());
+ if(aSize.GetHeightPercent())
+ {
+ SwRect aRect;
+ rSh.CalcBoundRect(aRect, FLY_IN_CNTNT);
+ long nPrtHeight = aRect.Height();
+ aSize.SetHeightPercent(BYTE(nHeight * 100 /nPrtHeight));
+ }
+ else
+ aSize.SetHeight(nHeight );
+
+ SfxItemSet aSet( GetPool(), RES_FRM_SIZE, RES_FRM_SIZE,
+ RES_VERT_ORIENT, RES_VERT_ORIENT, 0 );
+ aSet.Put( aSize );
+ aSet.Put( aVertOrient );
+ rSh.SetFlyFrmAttr( aSet );
+ }
+ else if( nFrmType == FRMTYPE_DRAWOBJ )
+ {
+ SwRect aRect( rSh.GetObjRect() );
+ const SwRect &rPageRect = rSh.GetAnyCurRect(RECT_PAGE);
+ aRect.Top( aLongULSpace.GetUpper() + rPageRect.Top() );
+ aRect.Bottom( rPageRect.Bottom() - aLongULSpace.GetLower() );
+ rSh.SetObjRect( aRect ) ;
+ }
+ else
+ { SwPageDesc aDesc( rDesc );
+
+ if ( nFrmType & ( FRMTYPE_HEADER | FRMTYPE_FOOTER ))
+ {
+
+ const BOOL bHead = nFrmType & FRMTYPE_HEADER ? TRUE : FALSE;
+ SvxULSpaceItem aUL( rDesc.GetMaster().GetULSpace() );
+ if ( bHead )
+ aUL.SetUpper( (USHORT)aLongULSpace.GetUpper() );
+ else
+ aUL.SetLower( (USHORT)aLongULSpace.GetLower() );
+ aDesc.GetMaster().SetAttr( aUL );
+
+ SwFmtFrmSize aSz( bHead ? pHeaderFmt->GetFrmSize() :
+ pFooterFmt->GetFrmSize() );
+ aSz.SetSizeType( ATT_FIX_SIZE );
+ aSz.SetHeight(nPageHeight - aLongULSpace.GetLower() -
+ aLongULSpace.GetUpper() );
+ if ( bHead )
+ pHeaderFmt->SetAttr( aSz );
+ else
+ pFooterFmt->SetAttr( aSz );
+ }
+ else
+ {
+ SvxULSpaceItem aUL;
+ aUL.SetUpper((USHORT)aLongULSpace.GetUpper());
+ aUL.SetLower((USHORT)aLongULSpace.GetLower());
+ aDesc.GetMaster().SetAttr(aUL);
+ }
+
+ rSh.ChgPageDesc( nDescId, aDesc );
+ }
+ }
+ break;
+ case SID_ATTR_TABSTOP:
+ {
+ SvxTabStopItem aTabStops( (const SvxTabStopItem&)rReq.GetArgs()->
+ Get( RES_PARATR_TABSTOP ));
+ DEBUGTABSTOPS(aTabStops);
+ const SvxTabStopItem& rDefTabs =
+ (const SvxTabStopItem&)rSh.GetDefault(RES_PARATR_TABSTOP);
+
+ // Default-Tab an Pos 0
+ SfxItemSet aSet( GetPool(), RES_LR_SPACE, RES_LR_SPACE );
+ rSh.GetAttr( aSet );
+ const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)aSet.Get(RES_LR_SPACE);
+
+ if ( rLR.GetTxtFirstLineOfst() < 0 )
+ {
+ SvxTabStop aSwTabStop( 0, SVX_TAB_ADJUST_DEFAULT );
+ aTabStops.Insert( aSwTabStop );
+ }
+
+ // auffuellen mit Default-Tabs
+ USHORT nDef = ::GetTabDist( rDefTabs );
+ ::MakeDefTabs( nDef, aTabStops );
+
+ SwTxtFmtColl* pColl = rSh.GetCurTxtFmtColl();
+ if( pColl && pColl->IsAutoUpdateFmt() )
+ {
+ SfxItemSet aSet(GetPool(), RES_PARATR_TABSTOP, RES_PARATR_TABSTOP);
+ aSet.Put(aTabStops);
+ rSh.AutoUpdatePara( pColl, aSet);
+ }
+ else
+ rSh.SetAttr( aTabStops );
+ break;
+ }
+ case SID_ATTR_PARA_LRSPACE:
+ {
+ SvxLRSpaceItem aParaMargin((const SvxLRSpaceItem&)rReq.
+ GetArgs()->Get(SID_ATTR_PARA_LRSPACE));
+
+ if(nFrmType & FRMTYPE_FLY_ANY)
+ {
+// os: Wegen #42444# wird hier der Umrandungsabstand eingefuegt
+ SfxItemSet aCoreSet( GetPool(),
+ RES_BOX, RES_BOX,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER, 0 );
+ SvxBoxInfoItem aBoxInfo;
+ aCoreSet.Put( aBoxInfo );
+ rSh.GetFlyFrmAttr( aCoreSet );
+ const SvxBoxItem& rBox = (const SvxBoxItem&)aCoreSet.Get(RES_BOX);
+ USHORT nDist = (USHORT)rBox.GetDistance();
+ aParaMargin.SetRight(Max((long)(aParaMargin.GetRight() - nDist), (long)0));
+ if(aParaMargin.GetLeft() < nDist)
+ nDist = aParaMargin.GetLeft();
+ aParaMargin.SetTxtLeft(aParaMargin.GetTxtLeft() - nDist);
+ }
+ DEBUGPARAMARGIN(aParaMargin);
+
+ aParaMargin.SetWhich( RES_LR_SPACE );
+ SwTxtFmtColl* pColl = rSh.GetCurTxtFmtColl();
+ if( pColl && pColl->IsAutoUpdateFmt() )
+ {
+ SfxItemSet aSet(GetPool(), RES_LR_SPACE, RES_LR_SPACE);
+ aSet.Put(aParaMargin);
+ rSh.AutoUpdatePara( pColl, aSet);
+ }
+ else
+ rSh.SetAttr( aParaMargin );
+
+ if ( aParaMargin.GetTxtFirstLineOfst() < 0 )
+ {
+ SfxItemSet aSet( GetPool(), RES_PARATR_TABSTOP, RES_PARATR_TABSTOP );
+
+ rSh.GetAttr( aSet );
+ const SvxTabStopItem& rTabStops = (const SvxTabStopItem&)aSet.Get(RES_PARATR_TABSTOP);
+
+ // Haben wir einen Tab an Stelle Null
+ for ( USHORT i = 0; i < rTabStops.Count(); ++i )
+ if ( rTabStops[i].GetTabPos() == 0 )
+ break;
+
+ if ( i >= rTabStops.Count() )
+ {
+ // Kein DefTab
+ SvxTabStopItem aTabStops;
+ aTabStops = rTabStops;
+
+ ::lcl_EraseDefTabs(aTabStops);
+
+ SvxTabStop aSwTabStop( 0, SVX_TAB_ADJUST_DEFAULT );
+ aTabStops.Insert(aSwTabStop);
+
+ const SvxTabStopItem& rDefTabs =
+ (const SvxTabStopItem&)rSh.GetDefault(RES_PARATR_TABSTOP);
+ USHORT nDef = ::GetTabDist(rDefTabs);
+ ::MakeDefTabs( nDef, aTabStops );
+
+ if( pColl && pColl->IsAutoUpdateFmt())
+ {
+ SfxItemSet aSet(GetPool(), RES_PARATR_TABSTOP, RES_PARATR_TABSTOP);
+ aSet.Put(aTabStops);
+ rSh.AutoUpdatePara( pColl, aSet);
+ }
+ else
+ rSh.SetAttr( aTabStops );
+ }
+ }
+ }
+ break;
+ case SID_RULER_BORDERS:
+ {
+ SvxColumnItem aColItem((const SvxColumnItem&)rReq.
+ GetArgs()->Get(SID_RULER_BORDERS));
+
+ BOOL bSect = 0 != (nFrmType & FRMTYPE_COLSECT);
+ if( bSetTabColFromDoc || !bSect && rSh.GetTableFmt() )
+ {
+ ASSERT(aColItem.Count(), "ColDesc ist leer!!");
+
+ const BOOL bSingleLine = ((const SfxBoolItem&)rReq.
+ GetArgs()->Get(SID_RULER_ACT_LINE_ONLY)).GetValue();
+
+ DEBUGCOLITEMS(aColItem);
+ SwTabCols aTabCols;
+ if ( bSetTabColFromDoc )
+ rSh.GetMouseTabCols( aTabCols, aTabColFromDocPos );
+ else
+ rSh.GetTabCols(aTabCols);
+ DEBUGTABCOLS(aTabCols);
+
+ // linker Tabellenrand
+ long nBorder = long(aColItem.GetLeft()) -
+ (long(aTabCols.GetLeftMin()) - DOCUMENTBORDER);
+ aTabCols.SetLeft( nBorder );
+
+ nBorder = nPageWidth - aTabCols.GetLeftMin() +
+ DOCUMENTBORDER - aColItem.GetRight();
+
+ aTabCols.SetRight( nBorder );
+
+ // Tabcols der Reihe nach
+ // Die letzte Col wird durch den Rand definiert
+ for ( USHORT i = 0; i < aColItem.Count()-1; ++i )
+ {
+ const SvxColumnDescription& rCol = aColItem[i];
+ aTabCols[i] = rCol.nEnd + aTabCols.GetLeft();
+ aTabCols.SetHidden( i, !rCol.bVisible );
+ }
+ DEBUGTABCOLS(aTabCols);
+
+ if ( bSetTabColFromDoc )
+ {
+ if( !rSh.IsViewLocked() )
+ {
+ bUnlockView = TRUE;
+ rSh.LockView( TRUE );
+ }
+ rSh.SetMouseTabCols( aTabCols, bSingleLine,
+ aTabColFromDocPos );
+ }
+ else
+ rSh.SetTabCols(aTabCols, bSingleLine);
+
+ }
+ else
+ {
+ if ( bFrmSelection || nFrmType & FRMTYPE_FLY_ANY || bSect)
+ {
+ SwSectionFmt *pSectFmt = 0;
+ SfxItemSet aSet( GetPool(), RES_COL, RES_COL );
+ if(bSect)
+ {
+ const SwSection *pSect = rSh.GetAnySection();
+ ASSERT( pSect, "Welcher Bereich?");
+ pSectFmt = pSect->GetFmt();
+ }
+ else
+ {
+ rSh.GetFlyFrmAttr( aSet );
+ }
+ SwFmtCol aCols(
+ bSect ?
+ pSectFmt->GetCol() :
+ (const SwFmtCol&)aSet.Get( RES_COL, FALSE ));
+
+ const long lWidth = rSh.GetAnyCurRect(bSect ? RECT_SECTION : RECT_FLY_PRT_EMBEDDED).Width();
+ ::lcl_ConvertToCols( aColItem, USHORT(lWidth), aCols );
+ DEBUGCOLITEMS(aColItem);
+ aSet.Put( aCols );
+ if(bSect)
+ rSh.SetSectionAttr( aSet, pSectFmt );
+ else
+ {
+ rSh.StartAction();
+ rSh.Push();
+ rSh.SetFlyFrmAttr( aSet );
+ //die Rahmenselektion wieder aufheben
+ if(!bFrmSelection && rSh.IsFrmSelected())
+ {
+ rSh.UnSelectFrm();
+ rSh.LeaveSelFrmMode();
+ }
+ rSh.Pop();
+ rSh.EndAction();
+ }
+ }
+ else
+ {
+ SwFmtCol aCols( rDesc.GetMaster().GetCol() );
+ ::lcl_ConvertToCols( aColItem,
+ USHORT(rSh.GetAnyCurRect(RECT_PAGE_PRT).Width()),
+ aCols );
+ DEBUGCOLITEMS(aColItem);
+ SwPageDesc aDesc( rDesc );
+ aDesc.GetMaster().SetAttr( aCols );
+ rSh.ChgPageDesc( rSh.GetCurPageDesc(), aDesc );
+ }
+ }
+ break;
+ }
+ default:
+ ASSERT( !this, "Falsche SlotId");
+ }
+ rSh.EndAllAction();
+
+ if( bUnlockView )
+ rSh.LockView( FALSE );
+
+ bSetTabColFromDoc = bTabColFromDoc = FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Hier wird der Status der Tableiste ermittelt
+ sprich alle relevanten Attribute an der CursorPos
+ werden der Tableiste uebermittelt
+ --------------------------------------------------------------------*/
+
+
+void SwView::StateTabWin(SfxItemSet& rSet)
+{
+ SwWrtShell &rSh = GetWrtShell();
+
+ const Point* pPt = IsTabColFromDoc() ? &aTabColFromDocPos : 0;
+ const USHORT nFrmType = rSh.IsObjSelected()
+ ? FRMTYPE_DRAWOBJ
+ : rSh.GetFrmType( pPt, TRUE );
+
+ const BOOL bFrmSelection = rSh.IsFrmSelected();
+
+ BOOL bBrowse = rSh.IsBrowseMode();
+ WinBits nStyle = pHLineal->GetStyle();
+ if(!(nStyle&WB_EXTRAFIELD) != bBrowse)
+ {
+ if(bBrowse)
+ nStyle &= ~WB_EXTRAFIELD;
+ else
+ nStyle |= WB_EXTRAFIELD;
+ pHLineal->SetStyle(nStyle);
+ }
+
+ // PageOffset/Begrenzer
+ const SwRect& rPageRect = rSh.GetAnyCurRect( RECT_PAGE, pPt );
+ const SwRect& rPagePrtRect = rSh.GetAnyCurRect( RECT_PAGE_PRT, pPt );
+ const long nPageWidth = rPageRect.Width();
+ const long nPageHeight = rPageRect.Height();
+
+ const SwPageDesc& rDesc = rSh.GetPageDesc( rSh.GetCurPageDesc() );
+ SvxLRSpaceItem aPageLRSpace( rDesc.GetMaster().GetLRSpace() );
+ SwapPageMargin( rDesc, aPageLRSpace );
+
+ SfxItemSet aCoreSet( GetPool(), RES_PARATR_TABSTOP, RES_PARATR_TABSTOP,
+ RES_LR_SPACE, RES_UL_SPACE, 0 );
+ rSh.GetAttr( aCoreSet );
+ USHORT nSelectionType = rSh.GetSelectionType();
+
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case RES_LR_SPACE:
+ case SID_ATTR_LRSPACE:
+ case SID_ATTR_LONG_LRSPACE:
+ {
+ SvxLongLRSpaceItem aLongLR( (long)aPageLRSpace.GetLeft(),
+ (long)aPageLRSpace.GetRight(),
+ SID_ATTR_LONG_LRSPACE);
+ if(bBrowse)
+ {
+ aLongLR.SetLeft(rPagePrtRect.Left());
+ aLongLR.SetRight(nPageWidth - rPagePrtRect.Right());
+ }
+ if ( ( nFrmType & FRMTYPE_HEADER || nFrmType & FRMTYPE_FOOTER ) &&
+ !(nFrmType & FRMTYPE_COLSECT) )
+ {
+ SwFrmFmt *pFmt = (SwFrmFmt*) (nFrmType & FRMTYPE_HEADER ?
+ rDesc.GetMaster().GetHeader().GetHeaderFmt() :
+ rDesc.GetMaster().GetFooter().GetFooterFmt());
+ SwRect aRect( rSh.GetAnyCurRect( RECT_HEADERFOOTER, pPt));
+ aRect.Pos() -= rSh.GetAnyCurRect( RECT_PAGE, pPt ).Pos();
+ const SvxLRSpaceItem& aLR = pFmt->GetLRSpace();
+ aLongLR.SetLeft ( (long)aLR.GetLeft() + (long)aRect.Left() );
+ aLongLR.SetRight( (nPageWidth -
+ (long)aRect.Right() + (long)aLR.GetRight()));
+ }
+ else
+ {
+ SwRect aRect;
+ if( !bFrmSelection && (nFrmType & FRMTYPE_COLSECT) )
+ aRect = rSh.GetAnyCurRect(RECT_SECTION, pPt);
+ else if ( bFrmSelection || nFrmType & FRMTYPE_FLY_ANY )
+ aRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED, pPt);
+ else if( nFrmType & FRMTYPE_DRAWOBJ)
+ aRect = rSh.GetObjRect();
+ if( aRect.Width() )
+ {
+ aLongLR.SetLeft ((long)(aRect.Left() - DOCUMENTBORDER));
+ aLongLR.SetRight((long)(nPageWidth + DOCUMENTBORDER - aRect.Right()));
+ }
+ }
+ if( nWhich == SID_ATTR_LONG_LRSPACE )
+ rSet.Put( aLongLR );
+ else
+ {
+ SvxLRSpaceItem aLR((USHORT)aLongLR.GetLeft(),
+ (USHORT)aLongLR.GetRight(),
+ nWhich);
+ rSet.Put(aLR);
+ }
+ DEBUGLRSPACE(aLongLR);
+ break;
+ }
+ case SID_ATTR_LONG_ULSPACE:
+ case SID_ATTR_ULSPACE:
+ case RES_UL_SPACE:
+ {
+ // Rand Seite Oben Unten
+ SvxULSpaceItem aUL( rDesc.GetMaster().GetULSpace() );
+ SvxLongULSpaceItem aLongUL( (long)aUL.GetUpper(),
+ (long)aUL.GetLower(),
+ SID_ATTR_LONG_ULSPACE);
+
+ if ( bFrmSelection || nFrmType & FRMTYPE_FLY_ANY )
+ {
+ // Dokumentkoordinaten Frame auf Seitenkoordinaten umbrechen
+ const SwRect &rRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED, pPt);
+ aLongUL.SetUpper((USHORT)(rRect.Top() - rPageRect.Top() ));
+ aLongUL.SetLower((USHORT)(rPageRect.Bottom() - rRect.Bottom() ));
+ }
+ else if ( nFrmType & FRMTYPE_HEADER || nFrmType & FRMTYPE_FOOTER )
+ {
+ SwRect aRect( rSh.GetAnyCurRect( RECT_HEADERFOOTER, pPt));
+ aRect.Pos() -= rSh.GetAnyCurRect( RECT_PAGE, pPt ).Pos();
+ aLongUL.SetUpper( (USHORT)aRect.Top() );
+ aLongUL.SetLower( (USHORT)(nPageHeight - aRect.Bottom()) );
+ }
+ else if( nFrmType & FRMTYPE_DRAWOBJ)
+ {
+ const SwRect &rRect = rSh.GetObjRect();
+ aLongUL.SetUpper((rRect.Top() - rPageRect.Top()));
+ aLongUL.SetLower((rPageRect.Bottom() - rRect.Bottom()));
+ }
+ else if(bBrowse)
+ {
+ aLongUL.SetUpper(rPagePrtRect.Top());
+ aLongUL.SetLower(nPageHeight - rPagePrtRect.Bottom());
+ }
+ if( nWhich == SID_ATTR_LONG_ULSPACE )
+ rSet.Put( aLongUL );
+ else
+ {
+ SvxULSpaceItem aUL((USHORT)aLongUL.GetUpper(),
+ (USHORT)aLongUL.GetLower(),
+ nWhich);
+ rSet.Put(aUL);
+ }
+ DEBUGULSPACE(aLongUL);
+ break;
+ }
+ case RES_PARATR_TABSTOP:
+ {
+ if ( ISA( SwWebView ) ||
+ IsTabColFromDoc() ||
+ ( nSelectionType & SwWrtShell::SEL_GRF) ||
+ (nSelectionType & SwWrtShell::SEL_FRM) ||
+ (nSelectionType & SwWrtShell::SEL_OLE) ||
+ SFX_ITEM_AVAILABLE > aCoreSet.GetItemState(RES_LR_SPACE)
+ )
+ rSet.DisableItem( RES_PARATR_TABSTOP );
+ else
+ { SvxTabStopItem aTabStops((const SvxTabStopItem&)
+ aCoreSet.Get( RES_PARATR_TABSTOP ));
+
+ const SvxTabStopItem& rDefTabs = (const SvxTabStopItem&)
+ rSh.GetDefault(RES_PARATR_TABSTOP);
+
+ DBG_ASSERT(pHLineal, "warum ist das Lineal nicht da?")
+ pHLineal->SetDefTabDist( ::GetTabDist(rDefTabs) );
+ ::lcl_EraseDefTabs(aTabStops);
+ DEBUGTABSTOPS(aTabStops);
+ rSet.Put(aTabStops);
+ }
+ break;
+ }
+ case SID_ATTR_PARA_LRSPACE:
+ {
+ if ( nSelectionType & SwWrtShell::SEL_GRF ||
+ nSelectionType & SwWrtShell::SEL_FRM ||
+ nSelectionType & SwWrtShell::SEL_OLE ||
+ nFrmType == FRMTYPE_DRAWOBJ )
+ rSet.DisableItem(SID_ATTR_PARA_LRSPACE);
+ else
+ {
+ SvxLRSpaceItem aLR;
+ if ( !IsTabColFromDoc() )
+ aLR = (const SvxLRSpaceItem&)aCoreSet.Get(RES_LR_SPACE);
+ DEBUGPARAMARGIN(aLR);
+ aLR.SetWhich(SID_ATTR_PARA_LRSPACE);
+ if(nFrmType & FRMTYPE_FLY_ANY)
+ {
+// os: Wegen #42444# wird hier der Umrandungsabstand eingefuegt
+ USHORT nDist;
+ if( IsTabColFromDoc() )
+ {
+ const SwRect& rPrtRect = rSh.GetAnyCurRect(
+ RECT_FLY_PRT_EMBEDDED, pPt );
+ nDist = rPrtRect.Left();
+ }
+ else
+ {
+ SfxItemSet aCoreSet( GetPool(),
+ RES_BOX, RES_BOX,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER, 0 );
+ SvxBoxInfoItem aBoxInfo;
+ aCoreSet.Put( aBoxInfo );
+ rSh.GetFlyFrmAttr( aCoreSet );
+ const SvxBoxItem& rBox = (const SvxBoxItem&)aCoreSet.Get(RES_BOX);
+ nDist = (USHORT)rBox.GetDistance();
+ }
+ aLR.SetRight(aLR.GetRight() + nDist);
+ aLR.SetTxtLeft(aLR.GetTxtLeft() + nDist);
+ }
+ rSet.Put(aLR);
+ }
+ break;
+ }
+ case SID_RULER_BORDERS:
+ {
+ if ( IsTabColFromDoc() ||
+ ( rSh.GetTableFmt() && !bFrmSelection &&
+ !(nFrmType & FRMTYPE_COLSECT ) ) )
+ {
+ SwTabCols aTabCols;
+ USHORT nNum;
+ if ( 0 != ( bSetTabColFromDoc = IsTabColFromDoc() ) )
+ {
+ rSh.GetMouseTabCols( aTabCols, aTabColFromDocPos );
+ nNum = rSh.GetCurMouseTabColNum( aTabColFromDocPos );
+ }
+ else
+ {
+ rSh.GetTabCols( aTabCols );
+ nNum = rSh.GetCurTabColNum();
+ }
+
+ ASSERT(nNum <= aTabCols.Count(), "TabCol not found");
+ int nLft = aTabCols.GetLeftMin() -
+ USHORT(DOCUMENTBORDER) +
+ aTabCols.GetLeft();
+
+ int nRgt = (USHORT)nPageWidth -
+ (aTabCols.GetLeftMin() +
+ aTabCols.GetRight() -
+ USHORT(DOCUMENTBORDER) );
+
+ const USHORT nL = nLft > 0 ? nLft : 0;
+ const USHORT nR = nRgt > 0 ? nRgt : 0;
+
+ SvxColumnItem aColItem(nNum, nL, nR);
+
+ USHORT nStart = 0,
+ nEnd;
+
+ for ( USHORT i = 0; i < aTabCols.Count(); ++i )
+ {
+ nEnd = aTabCols[i] - aTabCols.GetLeft();
+ SvxColumnDescription aColDesc( nStart, nEnd,
+ !aTabCols.IsHidden(i) );
+ aColItem.Append(aColDesc);
+ nStart = nEnd;
+ }
+ SvxColumnDescription aColDesc(nStart,
+ aTabCols.GetRight() - aTabCols.GetLeft(), TRUE);
+ aColItem.Append(aColDesc);
+ rSet.Put(aColItem);
+ DEBUGCOLITEMS(aColItem);
+ }
+ else if ( bFrmSelection || nFrmType & ( FRMTYPE_COLUMN | FRMTYPE_COLSECT ) )
+ {
+ // Aus Rahmen oder Seite ?
+ USHORT nNum = 0;
+ if(bFrmSelection)
+ {
+ const SwFrmFmt* pFmt = rSh.GetFlyFrmFmt();
+ if(pFmt)
+ nNum = pFmt->GetCol().GetNumCols();
+ }
+ else
+ nNum = rSh.GetCurColNum();
+
+ if(
+ //eigentlich sollte FRMTYPE_COLSECT nicht enthalten sein, wenn der Rahmen selektiert ist!
+ !bFrmSelection &&
+ nFrmType & FRMTYPE_COLSECT )
+ {
+ const SwSection *pSect = rSh.GetAnySection();
+ ASSERT( pSect, "Welcher Bereich?");
+ if( pSect )
+ {
+ SwSectionFmt *pFmt = pSect->GetFmt();
+ const SwFmtCol& rCol = pFmt->GetCol();
+ SvxColumnItem aColItem(--nNum);
+ const SwRect &rRect = rSh.GetAnyCurRect(RECT_SECTION, pPt);
+
+ ::lcl_FillSvxColumn(rCol, USHORT(rRect.Width()), aColItem, 0);
+
+ aColItem.SetLeft ((USHORT)(rRect.Left() - DOCUMENTBORDER ));
+ aColItem.SetRight((USHORT)(nPageWidth - rRect.Right() -
+ DOCUMENTBORDER ));
+
+ aColItem.SetOrtho(aColItem.CalcOrtho());
+
+ rSet.Put(aColItem);
+ DEBUGCOLITEMS(aColItem);
+ }
+ }
+ else if( bFrmSelection || nFrmType & FRMTYPE_FLY_ANY )
+ {
+ // Spalten in Rahmen
+ if ( nNum )
+ {
+ nNum--;
+ const SwFrmFmt* pFmt = rSh.GetFlyFrmFmt() ;
+
+ const SwFmtCol& rCol = pFmt->GetCol();
+ SvxColumnItem aColItem(nNum);
+ const SwRect &rSizeRect = rSh.GetAnyCurRect(RECT_FLY_PRT_EMBEDDED, pPt);
+
+ const long lWidth = rSizeRect.Width();
+ const SwRect &rRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED, pPt);
+ long nDist2 = (rRect.Width() - lWidth) /2;
+ ::lcl_FillSvxColumn(rCol, USHORT(lWidth), aColItem, nDist2);
+
+ SfxItemSet aFrameSet(GetPool(), RES_LR_SPACE, RES_LR_SPACE);
+ rSh.GetFlyFrmAttr( aFrameSet );
+
+ aColItem.SetLeft ((USHORT)(rRect.Left() - DOCUMENTBORDER ));
+ aColItem.SetRight((USHORT)(nPageWidth - rRect.Right() -
+ DOCUMENTBORDER ));
+
+ aColItem.SetOrtho(aColItem.CalcOrtho());
+
+ rSet.Put(aColItem);
+ DEBUGCOLITEMS(aColItem);
+ }
+ else
+ rSet.DisableItem(SID_RULER_BORDERS);
+ }
+ else
+ { // Spalten auf der Seite
+ nNum--;
+ const SwFrmFmt& rMaster = rDesc.GetMaster();
+ SwFmtCol aCol(rMaster.GetCol());
+ SvxColumnItem aColItem(nNum);
+ const long lWidth = rSh.GetAnyCurRect(RECT_PAGE_PRT, pPt).Width();
+ const SvxBoxItem& rBox = (const SvxBoxItem&)rMaster.GetAttr(RES_BOX);
+ long nDist = rBox.GetDistance();
+ ::lcl_FillSvxColumn(aCol, USHORT(lWidth), aColItem, nDist);
+
+ if(bBrowse)
+ {
+ aColItem.SetLeft((USHORT)rPagePrtRect.Left());
+ aColItem.SetRight(USHORT(nPageWidth - rPagePrtRect.Right()));
+ }
+ else
+ {
+ aColItem.SetLeft (aPageLRSpace.GetLeft());
+ aColItem.SetRight(aPageLRSpace.GetRight());
+ }
+ aColItem.SetOrtho(aColItem.CalcOrtho());
+
+ rSet.Put(aColItem);
+ DEBUGCOLITEMS(aColItem);
+ }
+ }
+ else
+ rSet.DisableItem(SID_RULER_BORDERS);
+ break;
+ }
+ case SID_RULER_PAGE_POS:
+ {
+ SvxPagePosSizeItem aPagePosSize(
+ Point( DOCUMENTBORDER , rPageRect.Top()) ,
+ nPageWidth, nPageHeight);
+ rSet.Put(aPagePosSize);
+ break;
+ }
+ case SID_RULER_LR_MIN_MAX:
+ {
+ Rectangle aRectangle;
+ if( ( nFrmType & FRMTYPE_COLSECT ) && !IsTabColFromDoc() &&
+ ( nFrmType & ( FRMTYPE_TABLE|FRMTYPE_COLUMN ) ) )
+ {
+ if( nFrmType & FRMTYPE_TABLE )
+ {
+ const USHORT nNum = rSh.GetCurTabColNum();
+ SwTabCols aTabCols;
+ rSh.GetTabCols( aTabCols );
+
+ int nLft = aTabCols.GetLeftMin() -
+ USHORT(DOCUMENTBORDER) +
+ aTabCols.GetLeft();
+
+ int nRgt = (USHORT)nPageWidth -
+ (aTabCols.GetLeftMin() +
+ aTabCols.GetRight() -
+ USHORT(DOCUMENTBORDER) );
+
+ const USHORT nL = nLft > 0 ? nLft : 0;
+ const USHORT nR = nRgt > 0 ? nRgt : 0;
+
+ aRectangle.Left() = nL;
+ if(nNum > 1)
+ aRectangle.Left() += aTabCols[nNum - 2];
+ if(nNum)
+ aRectangle.Left() += MINLAY;
+ if(aTabCols.Count() <= nNum + 1 )
+ aRectangle.Right() = nR;
+ else
+ aRectangle.Right() = nPageWidth - (nL + aTabCols[nNum + 1]);
+
+ if(nNum < aTabCols.Count())
+ aRectangle.Right() += MINLAY;
+ }
+ else
+ {
+ const SwFrmFmt* pFmt = rSh.GetFlyFrmFmt();
+ const SwFmtCol* pCols = pFmt ? &pFmt->GetCol():
+ &rDesc.GetMaster().GetCol();
+ const SwColumns& rCols = pCols->GetColumns();
+ USHORT nNum = rSh.GetCurOutColNum();
+ USHORT nCount = Min(USHORT(nNum + 1), rCols.Count());
+ const SwRect aRect( rSh.GetAnyCurRect( pFmt
+ ? RECT_FLY_PRT_EMBEDDED
+ : RECT_PAGE_PRT, pPt ));
+ const SwRect aAbsRect( rSh.GetAnyCurRect( pFmt
+ ? RECT_FLY_EMBEDDED
+ : RECT_PAGE, pPt ));
+
+ //die Breite im Rahmen bzw. innerhalbe der Seitenraender
+ const USHORT nTotalWidth = (USHORT)aRect.Width();
+ //die gesamte Rahmenbreite - die Differenz ist der doppelte Abstand zum Rand
+ const USHORT nOuterWidth = (USHORT)aAbsRect.Width();
+ int nWidth = 0,
+ nStart = 0,
+ nEnd = 0;
+ aRectangle.Left() = 0;
+ for ( int i = 0; i < nCount; ++i )
+ {
+ SwColumn* pCol = rCols[i];
+ nStart = pCol->GetLeft() + nWidth;
+ if(i == nNum - 2)
+ aRectangle.Left() = nStart;
+ nWidth += pCols->CalcColWidth( i, nTotalWidth );
+ nEnd = nWidth - pCol->GetRight();
+ }
+ aRectangle.Right() = nPageWidth - nEnd;
+ aRectangle.Left() -= DOCUMENTBORDER;
+ aRectangle.Right() += DOCUMENTBORDER;
+ if(nNum > 1)
+ {
+ aRectangle.Left() += MINLAY;
+ aRectangle.Left() += aRect.Left();
+ }
+ if(pFmt) //Bereich in Rahmen - hier darf man bis zum Rand
+ aRectangle.Left() = aRectangle.Right() = 0;
+ else
+ {
+ // das Rechteck an die richtige absolute Position verschieben
+ aRectangle.Left() += aAbsRect.Left();
+ aRectangle.Right() -= aAbsRect.Left();
+ // Abstand zur Umrandung mit einbeziehen
+ aRectangle.Right() -= (nOuterWidth - nTotalWidth) / 2;
+ }
+
+ if(nNum < rCols.Count())
+ {
+ aRectangle.Right() += MINLAY;
+ }
+ else
+ // rechts ist jetzt nur noch der Seitenrand
+ aRectangle.Right() = 0;
+
+
+ }
+ }
+ else if ( ((nFrmType & FRMTYPE_TABLE) || IsTabColFromDoc()) &&
+ !bFrmSelection )
+ {
+ BOOL bColumn;
+ if ( IsTabColFromDoc() )
+ bColumn = rSh.GetCurMouseColNum( aTabColFromDocPos ) != 0;
+ else
+ bColumn = (nFrmType & (FRMTYPE_COLUMN|FRMTYPE_FLY_ANY|
+ FRMTYPE_COLSECTOUTTAB)) ?
+ TRUE : FALSE;
+ if ( !bColumn )
+ {
+ if( nFrmType & FRMTYPE_FLY_ANY && IsTabColFromDoc() )
+ {
+ SwRect aRect( rSh.GetAnyCurRect(
+ RECT_FLY_PRT_EMBEDDED, pPt ) );
+ aRect.Pos() += rSh.GetAnyCurRect( RECT_FLY_EMBEDDED,
+ pPt ).Pos();
+
+ aRectangle.Left() = aRect.Left() - DOCUMENTBORDER;
+ aRectangle.Right() = nPageWidth - ( aRect.Right()
+ - DOCUMENTBORDER );
+ }
+ else if( bBrowse )
+ {
+ aRectangle.Left() = rPagePrtRect.Left();
+ aRectangle.Right() = nPageWidth - rPagePrtRect.Right();
+ }
+ else
+ {
+ aRectangle.Left() = aPageLRSpace.GetLeft();
+ aRectangle.Right() = aPageLRSpace.GetRight();
+ }
+ }
+ else
+ { //hier nur fuer Tabelle in mehrspaltigen Seiten und Rahmen
+ BOOL bSectOutTbl = (nFrmType & FRMTYPE_TABLE) ? TRUE : FALSE;
+ BOOL bFrame = (nFrmType & FRMTYPE_FLY_ANY) ? TRUE : FALSE;
+ BOOL bColSct = (nFrmType & ( bSectOutTbl
+ ? FRMTYPE_COLSECTOUTTAB
+ : FRMTYPE_COLSECT )
+ ) ? TRUE : FALSE;
+ //Damit man auch mit der Mouse ziehen kann,
+ //ohne in der Tabelle zu stehen
+ CurRectType eRecType = RECT_PAGE_PRT;
+ int nNum = IsTabColFromDoc() ?
+ rSh.GetCurMouseColNum( aTabColFromDocPos ):
+ rSh.GetCurOutColNum();
+ const SwFrmFmt* pFmt = NULL;
+ if( bColSct )
+ {
+ eRecType = bSectOutTbl ? RECT_OUTTABSECTION
+ : RECT_SECTION;
+ const SwSection *pSect = rSh.GetAnySection( bSectOutTbl );
+ ASSERT( pSect, "Welcher Bereich?");
+ pFmt = pSect->GetFmt();
+ }
+ else if( bFrame )
+ {
+ pFmt = rSh.GetFlyFrmFmt();
+ eRecType = RECT_FLY_PRT_EMBEDDED;
+ }
+
+ const SwFmtCol* pCols = pFmt ? &pFmt->GetCol():
+ &rDesc.GetMaster().GetCol();
+ const SwColumns& rCols = pCols->GetColumns();
+ const USHORT nBorder = pFmt ? pFmt->GetBox().GetDistance() :
+ rDesc.GetMaster().GetBox().GetDistance();
+
+ /* RECT_FLY_PRT_EMBEDDED returns the relative position to
+ RECT_FLY_EMBEDDED
+ the absolute position must be added here
+ */
+ SwRect aRect( rSh.GetAnyCurRect( eRecType, pPt ) );
+ if(RECT_FLY_PRT_EMBEDDED == eRecType)
+ aRect.Pos() += rSh.GetAnyCurRect( RECT_FLY_EMBEDDED,
+ pPt ).Pos();
+
+ const USHORT nTotalWidth = (USHORT)aRect.Width();
+ //nStart und nEnd initialisieren fuer nNum == 0
+ int nWidth = 0,
+ nStart = 0,
+ nEnd = nTotalWidth;
+
+ if( nNum > rCols.Count() )
+ {
+ ASSERT( !this, "es wird auf dem falschen FmtCol gearbeitet!" );
+ nNum = rCols.Count();
+ }
+
+ for( int i = 0; i < nNum; ++i )
+ {
+ SwColumn* pCol = rCols[i];
+ nStart = pCol->GetLeft() + nWidth;
+ nWidth += pCols->CalcColWidth( i, nTotalWidth );
+ nEnd = nWidth - pCol->GetRight();
+ }
+ if( bFrame | bColSct )
+ {
+ aRectangle.Left() = aRect.Left()
+ - DOCUMENTBORDER + nStart;
+ aRectangle.Right() = nPageWidth
+ - aRectangle.Left()
+ - nEnd + nStart;
+ }
+ else if(!bBrowse)
+ {
+ aRectangle.Left() = aPageLRSpace.GetLeft() + nStart;
+ aRectangle.Right() = nPageWidth - nEnd - aPageLRSpace.GetLeft();
+ }
+ else
+ {
+ long nLeft = rPagePrtRect.Left();
+ aRectangle.Left() = nStart + nLeft;
+ aRectangle.Right() = nPageWidth - nEnd - nLeft;
+ }
+ if(!bFrame)
+ {
+ aRectangle.Left() += nBorder;
+ aRectangle.Right() -= nBorder;
+ }
+ }
+ }
+ else if ( nFrmType & ( FRMTYPE_HEADER | FRMTYPE_FOOTER ))
+ {
+ aRectangle.Left() = aPageLRSpace.GetLeft();
+ aRectangle.Right() = aPageLRSpace.GetRight();
+ }
+ else
+ aRectangle.Left() = aRectangle.Right() = 0;
+
+ SfxRectangleItem aLR( SID_RULER_LR_MIN_MAX , aRectangle);
+ rSet.Put(aLR);
+ }
+ break;
+ case SID_RULER_PROTECT:
+ {
+ if(bFrmSelection)
+ {
+ BYTE nProtect = pWrtShell->IsSelObjProtected((FlyProtectType)(FLYPROTECT_SIZE|FLYPROTECT_POS|FLYPROTECT_CONTENT));
+
+ SvxProtectItem aProt(SID_RULER_PROTECT);
+ aProt.SetCntntProtect((nProtect & FLYPROTECT_CONTENT) != 0);
+ aProt.SetSizeProtect ((nProtect & FLYPROTECT_SIZE) != 0);
+ aProt.SetPosProtect ((nProtect & FLYPROTECT_POS) != 0);
+ rSet.Put(aProt);
+ }
+ else
+ {
+ SvxProtectItem aProtect(SID_RULER_PROTECT);
+ if(bBrowse && !(nFrmType & (FRMTYPE_DRAWOBJ|FRMTYPE_COLUMN)) && !rSh.GetTableFmt())
+ {
+ aProtect.SetSizeProtect(TRUE);
+ aProtect.SetPosProtect(TRUE);
+ }
+ rSet.Put(aProtect);
+ }
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.130 2000/09/18 16:06:14 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.129 2000/09/07 15:59:33 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.128 2000/08/29 13:59:32 ama
+ New: Negative margins
+
+ Revision 1.127 2000/08/23 12:49:45 kz
+ function Max (long, long)
+
+ Revision 1.126 2000/05/26 07:21:35 os
+ old SW Basic API Slots removed
+
+ Revision 1.125 2000/05/10 11:53:20 os
+ Basic API removed
+
+ Revision 1.124 2000/04/18 15:02:51 os
+ UNICODE
+
+ Revision 1.123 2000/01/17 13:32:55 jp
+ Bug #70616#: StateTabWin - if IsTabColFromDoc-Flag set then get/set info only over layoutpos
+
+ Revision 1.122 1999/11/23 14:56:37 os
+ #69106# LR_MIN_MAX in frames corrected
+
+ Revision 1.121 1999/06/21 07:20:54 OS
+ #66284##66928# correct display of frames with columns
+
+
+ Rev 1.120 21 Jun 1999 09:20:54 OS
+ #66284##66928# correct display of frames with columns
+
+ Rev 1.119 04 Jun 1999 09:29:22 OS
+ #66284# Rahmen nach Attributanwendung deselektieren
+
+ Rev 1.118 04 Jun 1999 09:00:04 OS
+ #66436# spaltige Bereiche auf spaltigen Seiten funktionieren jetzt auch
+
+ Rev 1.117 17 May 1999 13:06:14 OS
+ auch einspaltige Rahmen zeigen keine Spalten an
+
+ Rev 1.116 11 May 1999 21:51:06 JP
+ Task #66127#: Methoden rund ums Lineal verbessert und Schnittstellen veraendert/erweitert
+
+ Rev 1.115 28 Apr 1999 22:38:36 JP
+ Bug #65544#: StateTabWin: bei Tabellen in Bereichen mit den richtigen Werten arbeiten
+
+ Rev 1.114 23 Apr 1999 15:15:36 AMA
+ Fix #65252#: Nichtspaltige Bereiche in Tabellen in spaltigen Bereichen
+
+ Rev 1.113 20 Apr 1999 14:08:26 OS
+ #64974# Probleme mit spaltigen Bereichen beoben
+
+ Rev 1.112 06 Apr 1999 16:29:32 OS
+ #60062# spaltige Bereiche auch in Tabellen und spaltigen Rahmen fast richtig
+
+ Rev 1.111 10 Dec 1998 15:17:06 AMA
+ Fix #57749#: Fussnoten innerhalb von spaltigen Bereichen
+
+ Rev 1.110 03 Dec 1998 09:19:20 OS
+ #60062# LR_MIN_MAX fuer spaltige Bereiche sollte jetzt richtig sein
+
+ Rev 1.109 27 Nov 1998 14:57:32 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.108 18 Sep 1998 16:55:54 OS
+ #56584# WishWidth ueber USHRT_MAX verhindern
+
+ Rev 1.107 20 Aug 1998 13:30:46 OS
+ GetFrmType reicht fuer verkettete Rahmen nicht aus -> IsFrmSelected benutzen
+ Keine Absatzattribute fuer sel. Rahmen anzeigen #55277#,#55257#
+
+ Rev 1.106 01 Apr 1998 17:31:48 OM
+ #31111 Rahmen in protecteten Rahmen sind auch geschuetzt
+
+ Rev 1.105 04 Mar 1998 10:01:14 MH
+ chg: wg. internal Compilererrror
+
+ Rev 1.104 07 Feb 1998 10:38:12 OS
+ Set/GetStyle am Lineal fuer BrowseMode-Umschaltung #41371#
+
+ Rev 1.103 21 Nov 1997 15:00:24 MA
+ includes
+
+ Rev 1.102 15 Sep 1997 11:49:12 OS
+ zusaetzlicher Kommentar
+
+ Rev 1.101 15 Sep 1997 11:29:30 OS
+ Slotumleitung nicht ueber Dispatcher #43754#
+
+ Rev 1.100 12 Sep 1997 10:36:08 OS
+ ITEMID_* definiert
+
+ Rev 1.99 10 Sep 1997 16:55:32 OS
+ Rahmen: Absatzeinzuege innerhalb der Umrandung #42444#
+
+ Rev 1.98 15 Aug 1997 11:47:58 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.97 11 Aug 1997 10:28:32 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.96 07 Aug 1997 14:58:58 OM
+ Headerfile-Umstellung
+
+ Rev 1.95 06 Aug 1997 10:27:54 OS
+ Seitenraender richtig tauschen #42452#
+
+ Rev 1.94 30 Jul 1997 19:05:50 HJS
+ includes
+
+ Rev 1.93 29 Jul 1997 14:22:40 AMA
+ Fix #42203#: GPF durch nicht zurueckgesetztes bSetTabCol...
+
+ Rev 1.92 09 Jul 1997 12:54:30 OS
+ MinMaxItem im BrowseMode mit richtigen Raendern fuellen #41484#
+
+ Rev 1.91 17 Jun 1997 15:44:30 MA
+ DrawTxtShell nicht von BaseShell ableiten + Opts
+
+ Rev 1.90 09 Jun 1997 14:28:10 MA
+ chg: Browse-Flag nur noch am Doc
+
+ Rev 1.89 07 Apr 1997 19:06:32 MH
+ chg: header
+
+ Rev 1.88 12 Mar 1997 16:42:38 OS
+ AutoUpdate von Vorlagen: Absatzeinzuege, Tabulatoren
+
+ Rev 1.87 14 Feb 1997 09:13:42 JP
+ Bug #36135#: ExceTabWin - bei SetMouseTabCols die View locken
+
+ Rev 1.86 13 Feb 1997 12:06:14 MA
+ chg: Keine Tabulatoren im Lineal fuer Web
+
+ Rev 1.85 04 Feb 1997 08:14:32 OS
+ relative Rahmen richtig setzen
+
+ Rev 1.84 08 Jan 1997 10:55:00 OS
+ include fuer DEBUGLIN
+
+ Rev 1.83 28 Nov 1996 14:58:18 OS
+ keine Tabulatoren bei uneindeutigen Absatzeinzuegen
+
+ Rev 1.82 26 Nov 1996 16:55:20 OS
+ MinMax fuer Tabellen im BrowseMode korrigiert
+
+ Rev 1.81 21 Nov 1996 11:52:52 OS
+ Abstaende beruecksichtigen
+
+ Rev 1.80 04 Nov 1996 13:30:36 OS
+ UL-Spaces an Rahmen fuer das VLineal beruecksichtigen
+
+ Rev 1.79 24 Oct 1996 09:32:46 OS
+ Klammern vergessen...
+
+ Rev 1.78 21 Oct 1996 19:06:48 OS
+ ProtectItem vollstaendig senden; Exec-Methoden in der BrowseView stimmen jetzt
+
+ Rev 1.77 18 Oct 1996 08:57:42 OS
+ spaltige Rahmen und seiten wieder richtig anzeigen, ProtectItem fuer die Seitenraender mitschicken
+
+ Rev 1.76 25 Sep 1996 10:56:52 PL
+ Falsches Makro
+
+ Rev 1.75 24 Sep 1996 16:44:04 OS
+ letzter Bug in BrowseView
+
+ Rev 1.74 23 Sep 1996 19:38:32 HJS
+ add: viewopt.hxx
+
+ Rev 1.73 23 Sep 1996 15:36:32 MA
+ ViewWin vernichtet
+
+ Rev 1.72 23 Sep 1996 12:13:32 OS
+ richtige Raender in der BrowseView
+
+ Rev 1.71 12 Sep 1996 17:00:34 OS
+ GetAnyCurRect() ersetzt GetCur*Rect
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/uno/dlelstnr.cxx b/sw/source/ui/uno/dlelstnr.cxx
new file mode 100644
index 000000000000..9d5c95261995
--- /dev/null
+++ b/sw/source/ui/uno/dlelstnr.cxx
@@ -0,0 +1,164 @@
+/*************************************************************************
+ *
+ * $RCSfile: dlelstnr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#ifndef _COM_SUN_STAR_LINGUISTIC_DICTIONARYLISTEVENTFLAGS_HPP_
+#include <com/sun/star/linguistic/DictionaryListEventFlags.hpp>
+#endif
+
+#ifndef _VOS_MUTEX_HXX_
+#include <vos/mutex.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SHL_HXX
+#include <tools/shl.hxx>
+#endif
+
+#ifndef _DLELSTNR_HXX_
+#include "dlelstnr.hxx"
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::linguistic;
+
+/* -----------------------------17.03.00 09:07--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwDicListEvtListener::SwDicListEvtListener(
+ const Reference< XDictionaryList > &rxDicList )
+{
+ xDicList = rxDicList;
+ if (xDicList.is())
+ {
+ xDicList->addDictionaryListEventListener( this, sal_False );
+ }
+}
+/* -----------------------------17.03.00 09:07--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwDicListEvtListener::~SwDicListEvtListener()
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+
+ if (xDicList.is())
+ {
+ xDicList->removeDictionaryListEventListener( this );
+ }
+}
+
+/* -----------------------------17.03.00 09:06--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwDicListEvtListener::processDictionaryListEvent(
+ const DictionaryListEvent& aDicListEvent)
+ throw( ::com::sun::star::uno::RuntimeException )
+{
+ vos::OGuard aGuard(Application::GetSolarMutex());
+
+ sal_Int16 nEvt = aDicListEvent.nCondensedEvent;
+
+ sal_Bool bIsSpellWrong = ( nEvt & DictionaryListEventFlags::ADD_POS_ENTRY )
+ || ( nEvt & DictionaryListEventFlags::DEL_NEG_ENTRY )
+ || ( nEvt & DictionaryListEventFlags::ACTIVATE_POS_DIC )
+ || ( nEvt & DictionaryListEventFlags::DEACTIVATE_NEG_DIC );
+ sal_Bool bIsSpellAll = ( nEvt & DictionaryListEventFlags::ADD_NEG_ENTRY )
+ || ( nEvt & DictionaryListEventFlags::DEL_POS_ENTRY )
+ || ( nEvt & DictionaryListEventFlags::ACTIVATE_NEG_DIC )
+ || ( nEvt & DictionaryListEventFlags::DEACTIVATE_POS_DIC );
+ SW_MOD()->CheckSpellChanges( sal_False, bIsSpellWrong, bIsSpellAll );
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.6 2000/09/18 16:06:15 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.5 2000/05/11 12:51:32 tl
+ if[n]def ONE_LINGU entfernt, namespace's verwendet
+
+ Revision 1.4 2000/03/21 15:39:43 os
+ UNOIII
+
+ Revision 1.3 2000/02/11 15:00:05 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.2 2000/01/11 19:38:42 tl
+ #70735# evaluate DictionaryListEvents
+
+ Revision 1.1 2000/01/11 10:49:11 tl
+ #70735# initial revision
+
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/uno/makefile.mk b/sw/source/ui/uno/makefile.mk
new file mode 100644
index 000000000000..e4fce756c9c6
--- /dev/null
+++ b/sw/source/ui/uno/makefile.mk
@@ -0,0 +1,109 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sw
+TARGET=unoidl
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..$/ui_1st$/ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+
+CXXFILES = \
+ unotxdoc.cxx \
+ unoatxt.cxx \
+ unomod.cxx \
+ unotxvw.cxx \
+ dlelstnr.cxx
+
+
+SLOFILES = \
+ $(SLO)$/unotxdoc.obj\
+ $(SLO)$/unoatxt.obj \
+ $(SLO)$/unomod.obj \
+ $(SLO)$/unotxvw.obj \
+ $(SLO)$/dlelstnr.obj
+
+EXCEPTIONSFILES= \
+ $(SLO)$/dlelstnr.obj \
+ $(SLO)$/unotxdoc.obj \
+ $(SLO)$/unoatxt.obj \
+ $(SLO)$/unomod.obj \
+ $(SLO)$/unotxvw.obj
+
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/uno/unoatxt.cxx b/sw/source/ui/uno/unoatxt.cxx
new file mode 100644
index 000000000000..7b81694f2038
--- /dev/null
+++ b/sw/source/ui/uno/unoatxt.cxx
@@ -0,0 +1,1292 @@
+/*************************************************************************
+ *
+ * $RCSfile: unoatxt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+#include <swtypes.hxx>
+#ifndef _GLOSDOC_HXX //autogen
+#include <glosdoc.hxx>
+#endif
+
+#ifndef _SHELLIO_HXX //autogen
+#include <shellio.hxx>
+#endif
+#ifndef _INITUI_HXX
+#include "initui.hxx"
+#endif
+#ifndef _GLOSLST_HXX
+#include <gloslst.hxx>
+#endif
+#ifndef _UNOATXT_HXX
+#include <unoatxt.hxx>
+#endif
+#ifndef _UNOMAP_HXX
+#include <unomap.hxx>
+#endif
+#ifndef _UNOOBJ_HXX
+#include <unoobj.hxx>
+#endif
+#ifndef _VOS_MUTEX_HXX_ //autogen
+#include <vos/mutex.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _DOC_HXX //autogen
+#include <doc.hxx>
+#endif
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _OFAACCFG_HXX //autogen
+#include <offmgr/ofaaccfg.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _UNOCRSR_HXX //autogen
+#include <unocrsr.hxx>
+#endif
+#ifndef _BOOKMRK_HXX //autogen
+#include <bookmrk.hxx>
+#endif
+#ifndef _UNOPRNMS_HXX
+#include <unoprnms.hxx>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PropertyAttribute_HPP_
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::rtl;
+
+
+#define PROPERTY_NONE 0
+
+
+/* -----------------16.06.98 09:15-------------------
+ *
+ * --------------------------------------------------*/
+String lcl_FindGroupName(SwGlossaries* pGlossaries, const OUString& GroupName)
+{
+ sal_uInt16 nCount = pGlossaries->GetGroupCnt();
+ //wenn der Gruppenname intern erzeugt wurde, dann steht auch hier der Pfad drin
+ String sGroup(GroupName);
+ String sGroupName(sGroup.GetToken(0, GLOS_DELIM));
+ String sPath = sGroup.GetToken(1, GLOS_DELIM);
+ sal_Bool bPathLen = sPath.Len() > 0;
+ for ( sal_uInt16 i = 0; i < nCount; i++ )
+ {
+ String sGrpName = pGlossaries->GetGroupName(i);
+ if(bPathLen ? sGroup == sGrpName : sGroupName == sGrpName.GetToken(0, GLOS_DELIM))
+ {
+ return sGrpName;
+ }
+ }
+ return aEmptyStr;
+}
+
+/******************************************************************
+ *
+ ******************************************************************/
+/* -----------------30.03.99 14:31-------------------
+ *
+ * --------------------------------------------------*/
+Reference< uno::XInterface> SAL_CALL SwXAutoTextContainer_CreateInstance(const Reference< lang::XMultiServiceFactory>& )
+{
+ static Reference< uno::XInterface > xAText = (cppu::OWeakObject*)new SwXAutoTextContainer();;
+ return xAText;
+}
+
+/*-- 21.12.98 12:42:16---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXAutoTextContainer::SwXAutoTextContainer()
+{
+ pGlossaries = ::GetGlossaries();
+
+}
+/*-- 21.12.98 12:42:17---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXAutoTextContainer::~SwXAutoTextContainer()
+{
+
+}
+/*-- 21.12.98 12:42:17---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Int32 SwXAutoTextContainer::getCount(void) throw( uno::RuntimeException )
+{
+ return pGlossaries->GetGroupCnt();
+}
+/*-- 21.12.98 12:42:18---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Any SwXAutoTextContainer::getByIndex(sal_Int32 nIndex)
+ throw( lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ uno::Any aRet;
+ sal_uInt16 nCount = pGlossaries->GetGroupCnt();
+ if ( nIndex >= 0 && nIndex <= nCount )
+ aRet = getByName(pGlossaries->GetGroupName(nIndex));
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aRet;
+}
+/*-- 21.12.98 12:42:18---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Type SwXAutoTextContainer::getElementType(void) throw( uno::RuntimeException )
+{
+ return ::getCppuType((const Reference<text::XAutoTextGroup>*)0);
+
+}
+/*-- 21.12.98 12:42:18---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXAutoTextContainer::hasElements(void) throw( uno::RuntimeException )
+{
+ //zumindest Standard sollte es immer geben!
+ return sal_True;
+}
+/*-- 21.12.98 12:42:18---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Any SwXAutoTextContainer::getByName(const OUString& GroupName)
+ throw( container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ uno::Any aRet;
+ XAutoTextGroupPtrArr &rGlosGroupArr = pGlossaries->GetUnoGroupArray();
+ //zunaechst den Namen mit Pfad-Extension finden
+ String sGroupName = lcl_FindGroupName(pGlossaries, GroupName);
+
+ if(sGroupName.Len())
+ {
+ Reference< text::XAutoTextGroup > aRef;
+ for ( sal_uInt16 i = 0; i < rGlosGroupArr.Count(); i++ )
+ {
+ Reference< text::XAutoTextGroup > * pxGroup = rGlosGroupArr.GetObject(i);
+ Reference< lang::XUnoTunnel > xGroupTunnel(*pxGroup, uno::UNO_QUERY);
+
+ SwXAutoTextGroup* pSwGroup = 0;
+ if(xGroupTunnel.is())
+ {
+ pSwGroup = (SwXAutoTextGroup*)xGroupTunnel->getSomething(SwXAutoTextGroup::getUnoTunnelId());
+ }
+ if(pSwGroup && GroupName == pSwGroup->getName())
+ { // Die Gruppe gibt es schon
+ aRef = *pxGroup;
+ break;
+ }
+ }
+ if ( !aRef.is() )
+ {
+ Reference< text::XAutoTextGroup > * pxGroup = new Reference< text::XAutoTextGroup > ;
+ *pxGroup = new SwXAutoTextGroup(sGroupName, pGlossaries/*pGlosGroup*/);
+ aRef = *pxGroup;
+ rGlosGroupArr.Insert(pxGroup, rGlosGroupArr.Count());
+ }
+ aRet.setValue(&aRef, ::getCppuType((const Reference< text::XAutoTextGroup >*)0));
+ }
+ else
+ throw container::NoSuchElementException();
+ return aRet;
+}
+/*-- 21.12.98 12:42:19---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Sequence< OUString > SwXAutoTextContainer::getElementNames(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_uInt16 nCount = pGlossaries->GetGroupCnt();
+
+ uno::Sequence< OUString > aGroupNames(nCount);
+ OUString *pArr = aGroupNames.getArray();
+
+ for ( sal_uInt16 i = 0; i < nCount; i++ )
+ {
+ // Die Namen werden ohne Pfad-Extension weitergegeben
+ String sGroupName(pGlossaries->GetGroupName(i));
+ pArr[i] = sGroupName.GetToken(0, GLOS_DELIM);
+ }
+ return aGroupNames;
+}
+/*-- 21.12.98 12:42:19---------------------------------------------------
+ findet Gruppennamen mit und ohne Pfadindex
+ -----------------------------------------------------------------------*/
+sal_Bool SwXAutoTextContainer::hasByName(const OUString& Name)
+ throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ String sGroupName = lcl_FindGroupName(pGlossaries, Name);
+ if(sGroupName.Len())
+ return sal_True;
+ return sal_False;
+}
+/*-- 21.12.98 12:42:19---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< text::XAutoTextGroup > SwXAutoTextContainer::insertNewByName(const OUString& aGroupName)
+ throw( lang::IllegalArgumentException, container::ElementExistException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(hasByName(aGroupName))
+ throw container::ElementExistException();
+ String sGroup(aGroupName);
+ if(STRING_NOTFOUND == sGroup.Search(GLOS_DELIM))
+ {
+ sGroup += GLOS_DELIM;
+ sGroup += UniString::CreateFromInt32(0);
+ }
+ pGlossaries->NewGroupDoc(sGroup, sGroup.GetToken(0, GLOS_DELIM));
+ Reference< text::XAutoTextGroup > aRet = new SwXAutoTextGroup(sGroup, pGlossaries);
+ return aRet;
+}
+/*-- 21.12.98 12:42:19---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextContainer::removeByName(const OUString& aGroupName)
+ throw( container::NoSuchElementException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ //zunaechst den Namen mit Pfad-Extension finden
+ String sGroupName = lcl_FindGroupName(pGlossaries, aGroupName);
+ if(!sGroupName.Len())
+ throw container::NoSuchElementException();
+ pGlossaries->DelGroupDoc(sGroupName);
+}
+/* -----------------------------06.04.00 11:11--------------------------------
+
+ ---------------------------------------------------------------------------*/
+OUString SwXAutoTextContainer::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXAutoTextContainer");
+}
+/* -----------------------------06.04.00 11:11--------------------------------
+
+ ---------------------------------------------------------------------------*/
+BOOL SwXAutoTextContainer::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.text.AutoTextContainer") == rServiceName;
+}
+/* -----------------------------06.04.00 11:11--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Sequence< OUString > SwXAutoTextContainer::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.AutoTextContainer");
+ return aRet;
+}
+/******************************************************************
+ *
+ ******************************************************************/
+/* -----------------------------10.03.00 18:02--------------------------------
+
+ ---------------------------------------------------------------------------*/
+const uno::Sequence< sal_Int8 > & SwXAutoTextGroup::getUnoTunnelId()
+{
+ static uno::Sequence< sal_Int8 > aSeq = ::CreateUnoTunnelId();
+ return aSeq;
+}
+/* -----------------------------10.03.00 18:04--------------------------------
+
+ ---------------------------------------------------------------------------*/
+sal_Int64 SAL_CALL SwXAutoTextGroup::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;
+}
+
+/*-- 21.12.98 12:42:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXAutoTextGroup::SwXAutoTextGroup(const OUString& rName,
+ SwGlossaries* pGlos) :
+ aPropSet(aSwMapProvider.GetPropertyMap(PROPERTY_MAP_AUTO_TEXT_GROUP)),
+ sName(rName),
+ sGroupName(rName),
+ pGlossaries(pGlos)
+{
+}
+/*-- 21.12.98 12:42:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXAutoTextGroup::~SwXAutoTextGroup()
+{
+}
+/*-- 21.12.98 12:42:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+/*-- 21.12.98 12:42:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Sequence< OUString > SwXAutoTextGroup::getTitles(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_uInt16 nCount = 0;
+ SwTextBlocks* pGlosGroup = pGlossaries ? pGlossaries->GetGroupDoc(sGroupName, sal_False) : 0;
+ if(pGlosGroup)
+ nCount = pGlosGroup->GetCount();
+ else
+ throw uno::RuntimeException();
+
+ uno::Sequence< OUString > aEntryTitles(nCount);
+ OUString *pArr = aEntryTitles.getArray();
+
+ for ( sal_uInt16 i = 0; i < nCount; i++ )
+ pArr[i] = pGlosGroup->GetLongName(i);
+ delete pGlosGroup;
+ return aEntryTitles;
+}
+/*-- 21.12.98 12:42:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextGroup::renameByName(const OUString& aElementName,
+ const OUString& aNewElementName, const OUString& aNewElementTitle)
+ throw( lang::IllegalArgumentException, container::ElementExistException, io::IOException,
+ uno::RuntimeException)
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ // throw exception only if the programmatic name is to be changed into an existing name
+ if(aNewElementName != aElementName && hasByName(aNewElementName))
+ throw container::ElementExistException();
+ SwTextBlocks* pGlosGroup = pGlossaries ? pGlossaries->GetGroupDoc(sGroupName, sal_False) : 0;
+ if(pGlosGroup)
+ {
+ sal_uInt16 nIdx = pGlosGroup->GetIndex( aElementName);
+ if(USHRT_MAX == nIdx)
+ throw lang::IllegalArgumentException();
+ String aNewShort( aNewElementName);
+ String aNewName( aNewElementTitle);
+ sal_uInt16 nOldLongIdx = pGlosGroup->GetLongIndex( aNewShort );
+ sal_uInt16 nOldIdx = pGlosGroup->GetIndex( aNewName );
+
+ if( nIdx != USHRT_MAX &&
+ (nOldLongIdx == USHRT_MAX || nOldLongIdx == nIdx )&&
+ (nOldIdx == USHRT_MAX || nOldIdx == nIdx ))
+ {
+ pGlosGroup->Rename( nIdx, &aNewShort, &aNewName );
+ if(pGlosGroup->GetError() != 0)
+ throw io::IOException();
+ }
+ delete pGlosGroup;
+ }
+ else
+ throw uno::RuntimeException();
+}
+/* -----------------04.05.99 11:57-------------------
+ *
+ * --------------------------------------------------*/
+sal_Bool lcl_CopySelToDoc( SwDoc* pInsDoc, SwXTextCursor* pxCursor, SwXTextRange* pxRange )
+{
+ ASSERT( pInsDoc, "kein Ins.Dokument" );
+
+ SwNodes& rNds = pInsDoc->GetNodes();
+
+ SwNodeIndex aIdx( rNds.GetEndOfContent(), -1 );
+ SwCntntNode * pNd = aIdx.GetNode().GetCntntNode();
+ SwPosition aPos( aIdx, SwIndex( pNd, pNd->Len() ));
+
+ sal_Bool bRet = sal_False;
+ pInsDoc->LockExpFlds();
+ {
+ if(pxCursor)
+ {
+ SwUnoCrsr* pUnoCrsr = pxCursor->GetCrsr();
+ bRet |= pUnoCrsr->GetDoc()->Copy( *pUnoCrsr, aPos );
+ }
+ else
+ {
+ SwBookmark* pBkm = pxRange->GetBookmark();
+ if(pBkm->GetOtherPos())
+ {
+ SwPaM aTmp(*pBkm->GetOtherPos(), pBkm->GetPos());
+ bRet |= pxRange->GetDoc()->Copy(aTmp, aPos);
+ }
+ }
+ }
+
+ pInsDoc->UnlockExpFlds();
+ if( !pInsDoc->IsExpFldsLocked() )
+ pInsDoc->UpdateExpFlds();
+
+ return bRet;
+}
+/*-- 21.12.98 12:42:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< text::XAutoTextEntry > SwXAutoTextGroup::insertNewByName(const OUString& aName,
+ const OUString& aTitle, const Reference< text::XTextRange > & xTextRange)
+ throw( container::ElementExistException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(hasByName(aName))
+ throw container::ElementExistException();
+ if(!xTextRange.is())
+ throw uno::RuntimeException();
+
+ SwTextBlocks* pGlosGroup = pGlossaries ? pGlossaries->GetGroupDoc(sGroupName, sal_False) : 0;
+ String sShortName(aName);
+ String sLongName(aTitle);
+ if(pGlosGroup)
+ {
+ if( pGlosGroup->IsOld() )
+ {
+ if( pGlosGroup->ConvertToNew() )
+ {
+ throw uno::RuntimeException();
+ return Reference< text::XAutoTextEntry > ();
+ }
+ }
+ Reference<lang::XUnoTunnel> xRangeTunnel( xTextRange, uno::UNO_QUERY);
+ SwXTextRange* pxRange = 0;
+ SwXTextCursor* pxCursor = 0;
+ if(xRangeTunnel.is())
+ {
+ pxRange = (SwXTextRange*)xRangeTunnel->getSomething(
+ SwXTextRange::getUnoTunnelId());
+ pxCursor = (SwXTextCursor*)xRangeTunnel->getSomething(
+ SwXTextCursor::getUnoTunnelId());
+ }
+
+ String sOnlyTxt;
+ String* pOnlyTxt = 0;
+ sal_Bool bNoAttr = !pxCursor && !pxRange;
+ if(bNoAttr)
+ {
+ sOnlyTxt = UniString(xTextRange->getString());
+ pOnlyTxt = &sOnlyTxt;
+ }
+
+ const OfaAutoCorrCfg* pCfg = OFF_APP()->GetAutoCorrConfig();
+
+ SwDoc* pGDoc = pGlosGroup->GetDoc();
+
+ // Bis es eine Option dafuer gibt, base util::URL loeschen
+ const String aOldURL( INetURLObject::GetBaseURL() );
+ if(pCfg->IsSaveRelFile())
+ {
+ INetURLObject::SetBaseURL( URIHelper::SmartRelToAbs(pGlosGroup->GetFileName()));
+ }
+ else
+ INetURLObject::SetBaseURL( aEmptyStr );
+
+ sal_uInt16 nRet;
+ if( pOnlyTxt )
+ nRet = pGlosGroup->PutText( sShortName, sLongName, *pOnlyTxt );
+ else
+ {
+ pGlosGroup->ClearDoc();
+ if( pGlosGroup->BeginPutDoc( sShortName, sLongName ) )
+ {
+ pGDoc->SetRedlineMode_intern( REDLINE_DELETE_REDLINES );
+ lcl_CopySelToDoc( pGDoc, pxCursor, pxRange );
+ pGDoc->SetRedlineMode_intern( 0 );
+ nRet = pGlosGroup->PutDoc();
+ }
+ else
+ nRet = (sal_uInt16) -1;
+ }
+
+ INetURLObject::SetBaseURL( aOldURL );
+
+ if(nRet == (sal_uInt16) -1 )
+ {
+ throw uno::RuntimeException();
+ }
+ pGlossaries->PutGroupDoc( pGlosGroup );
+ }
+ Reference< text::XAutoTextEntry > xRet = new SwXAutoTextEntry(pGlossaries, sGroupName, sShortName);
+ return xRet;
+}
+/*-- 21.12.98 12:42:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextGroup::removeByName(const OUString& aEntryName) throw( container::NoSuchElementException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ SwTextBlocks* pGlosGroup = pGlossaries ? pGlossaries->GetGroupDoc(sGroupName, sal_False) : 0;
+ if(pGlosGroup)
+ {
+ sal_uInt16 nIdx = pGlosGroup->GetIndex(aEntryName);
+ if ( nIdx != USHRT_MAX )
+ pGlosGroup->Delete(nIdx);
+ delete pGlosGroup;
+ }
+ else
+ throw container::NoSuchElementException();
+}
+/*-- 21.12.98 12:42:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+OUString SwXAutoTextGroup::getName(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ return sName;
+}
+/*-- 21.12.98 12:42:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextGroup::setName(const OUString& rName) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ String sNewGroup(rName);
+ if(!pGlossaries || sName == rName)
+ throw uno::RuntimeException();
+ if(STRING_NOTFOUND == sNewGroup.Search(GLOS_DELIM))
+ {
+ sNewGroup += GLOS_DELIM;
+ sNewGroup += UniString::CreateFromInt32(0);
+ }
+ //the name must be saved, the group may be invalidated while in RenameGroupDoc()
+ SwGlossaries* pTempGlossaries = pGlossaries;
+
+ String sGroupName(sName);
+ String sTitle(pGlossaries->GetGroupTitle(sGroupName));
+ if(!pGlossaries->RenameGroupDoc(sGroupName, sNewGroup, sTitle))
+ throw uno::RuntimeException();
+ else
+ {
+ sName = rName;
+ sGroupName = sNewGroup;
+ pGlossaries = pTempGlossaries;
+ }
+}
+/*-- 21.12.98 12:42:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Int32 SwXAutoTextGroup::getCount(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ int nCount = 0;
+ SwTextBlocks* pGlosGroup = pGlossaries ? pGlossaries->GetGroupDoc(sGroupName, sal_False) : 0;
+ if(pGlosGroup)
+ nCount = pGlosGroup->GetCount();
+ else
+ throw uno::RuntimeException();
+ delete pGlosGroup;
+ return nCount;
+}
+/*-- 21.12.98 12:42:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Any SwXAutoTextGroup::getByIndex(sal_Int32 nIndex)
+ throw( lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ uno::Any aRet;
+ sal_uInt16 nCount = 0;
+ SwTextBlocks* pGlosGroup = pGlossaries ? pGlossaries->GetGroupDoc(sGroupName, sal_False) : 0;
+ if(pGlosGroup)
+ nCount = pGlosGroup->GetCount();
+ else
+ throw uno::RuntimeException();
+ if(nCount > nIndex)
+ aRet = getByName(pGlosGroup->GetShortName((sal_uInt16) nIndex));
+ else
+ throw lang::IndexOutOfBoundsException();
+ delete pGlosGroup;
+ return aRet;
+}
+/*-- 21.12.98 12:42:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Type SwXAutoTextGroup::getElementType(void) throw( uno::RuntimeException )
+{
+ return ::getCppuType((Reference<text::XAutoTextEntry>*)0);
+
+}
+/*-- 21.12.98 12:42:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXAutoTextGroup::hasElements(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ SwTextBlocks* pGlosGroup = pGlossaries ? pGlossaries->GetGroupDoc(sGroupName, sal_False) : 0;
+ sal_uInt16 nCount = 0;
+ if(pGlosGroup)
+ nCount = pGlosGroup->GetCount();
+ else
+ throw uno::RuntimeException();
+ return nCount > 0;
+
+}
+/*-- 21.12.98 12:42:27---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Any SwXAutoTextGroup::getByName(const OUString& Name)
+ throw( container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ uno::Any aRet;
+ //standard must be created
+ sal_Bool bCreate = sGroupName == SwGlossaries::GetDefName();
+ SwTextBlocks* pGlosGroup = pGlossaries ?
+ pGlossaries->GetGroupDoc(sGroupName, bCreate) : 0;
+ if(pGlosGroup)
+ {
+ sal_uInt16 nIdx = pGlosGroup->GetIndex(Name);
+ if( nIdx != USHRT_MAX )
+ {
+ Reference< text::XAutoTextEntry > xRef;
+ SwGlossaries* pGlossaries = ::GetGlossaries();
+ XAutoTextEntryPtrArr& rArr = pGlossaries->GetUnoEntryArray();
+ for(sal_uInt16 i = 0; i < rArr.Count(); i++)
+ {
+ Reference< uno::XInterface > * pxEntry = rArr.GetObject(i);
+ Reference< lang::XUnoTunnel > xEntryTunnel(*pxEntry, uno::UNO_QUERY);
+ SwXAutoTextEntry* pEntry = 0;
+ if(xEntryTunnel.is())
+ {
+ pEntry = (SwXAutoTextEntry*)xEntryTunnel->getSomething(SwXAutoTextEntry::getUnoTunnelId());
+ }
+ if(pEntry &&
+ COMPARE_EQUAL == pEntry->GetGroupName().CompareTo(String(sName)) &&
+ COMPARE_EQUAL == pEntry->GetEntryName().CompareTo(String(Name)))
+ {
+ xRef = pEntry;
+ break;
+ }
+ }
+ if(!xRef.is())
+ xRef = new SwXAutoTextEntry(pGlossaries, sName, Name);
+ aRet.setValue(&xRef, ::getCppuType((Reference< text::XAutoTextEntry>*)0));
+ }
+ delete pGlosGroup;
+ }
+ else
+ throw uno::RuntimeException();
+ return aRet;
+}
+/*-- 21.12.98 12:42:27---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Sequence< OUString > SwXAutoTextGroup::getElementNames(void)
+ throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_uInt16 nCount = 0;
+ SwTextBlocks* pGlosGroup = pGlossaries ? pGlossaries->GetGroupDoc(sGroupName, sal_False) : 0;
+ if(pGlosGroup)
+ nCount = pGlosGroup->GetCount();
+ else
+ throw uno::RuntimeException();
+
+ uno::Sequence< OUString > aEntryNames(nCount);
+ OUString *pArr = aEntryNames.getArray();
+
+ for ( sal_uInt16 i = 0; i < nCount; i++ )
+ pArr[i] = pGlosGroup->GetShortName(i);
+ delete pGlosGroup;
+ return aEntryNames;
+}
+/*-- 21.12.98 12:42:27---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXAutoTextGroup::hasByName(const OUString& rName)
+ throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ sal_uInt16 nCount = 0;
+ SwTextBlocks* pGlosGroup = pGlossaries ? pGlossaries->GetGroupDoc(sGroupName, sal_False) : 0;
+ if(pGlosGroup)
+ nCount = pGlosGroup->GetCount();
+ else
+ throw uno::RuntimeException();
+
+ for( sal_uInt16 i = 0; i < nCount; i++ )
+ {
+ String sCompare(pGlosGroup->GetShortName(i));
+ if(COMPARE_EQUAL == sCompare.CompareIgnoreCaseToAscii(String(rName)))
+ {
+ bRet = sal_True;
+ break;
+ }
+ }
+ delete pGlosGroup;
+ return bRet;
+}
+
+/*-- 09.02.00 15:33:30---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< beans::XPropertySetInfo > SwXAutoTextGroup::getPropertySetInfo(void)
+ throw( uno::RuntimeException )
+{
+ static Reference< beans::XPropertySetInfo > xRet = aPropSet.getPropertySetInfo();
+ return xRet;
+}
+/*-- 09.02.00 15:33:31---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextGroup::setPropertyValue(
+ const OUString& rPropertyName, const uno::Any& aValue)
+ throw( beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ aPropSet.getPropertyMap(), rPropertyName);
+
+ if(!pMap)
+ throw beans::UnknownPropertyException();
+
+ SwTextBlocks* pGlosGroup = pGlossaries ? pGlossaries->GetGroupDoc(sGroupName, sal_False) : 0;
+ if(!pGlosGroup)
+ throw uno::RuntimeException();
+ switch(pMap->nWID)
+ {
+ case WID_GROUP_TITLE:
+ {
+ if(aValue.getValueType() != ::getCppuType((OUString*)0))
+ throw lang::IllegalArgumentException();
+ String sNewTitle = *(OUString*)aValue.getValue();
+ sal_Bool bChanged = sNewTitle != pGlosGroup->GetName();
+ pGlosGroup->SetName(sNewTitle);
+ if(bChanged && HasGlossaryList())
+ GetGlossaryList()->ClearGroups();
+ }
+ break;
+ }
+ delete pGlosGroup;
+}
+/*-- 09.02.00 15:33:31---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Any SwXAutoTextGroup::getPropertyValue(const OUString& rPropertyName)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ aPropSet.getPropertyMap(), rPropertyName);
+
+ if(!pMap)
+ throw beans::UnknownPropertyException();
+ SwTextBlocks* pGlosGroup = pGlossaries ? pGlossaries->GetGroupDoc(sGroupName, sal_False) : 0;
+ if(!pGlosGroup)
+ throw uno::RuntimeException();
+
+ uno::Any aAny;
+ switch(pMap->nWID)
+ {
+ case WID_GROUP_PATH:
+ aAny <<= OUString(pGlosGroup->GetFileName());
+ break;
+ case WID_GROUP_TITLE:
+ aAny <<= OUString(pGlosGroup->GetName());
+ break;
+ }
+ delete pGlosGroup;
+ return aAny;
+}
+/*-- 09.02.00 15:33:31---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextGroup::addPropertyChangeListener(
+ const OUString& PropertyName, const Reference< beans::XPropertyChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+}
+/*-- 09.02.00 15:33:31---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextGroup::removePropertyChangeListener(
+ const OUString& PropertyName, const Reference< beans::XPropertyChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+}
+/*-- 09.02.00 15:33:32---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextGroup::addVetoableChangeListener(
+ const OUString& PropertyName, const Reference< beans::XVetoableChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+}
+/*-- 09.02.00 15:33:32---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextGroup::removeVetoableChangeListener(
+ const OUString& PropertyName, const Reference< beans::XVetoableChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+}
+/*-- 21.12.98 12:42:27---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextGroup::Invalidate()
+{
+ pGlossaries = 0;
+ sName = aEmptyStr;
+ sGroupName = aEmptyStr;
+}
+/* -----------------------------06.04.00 11:11--------------------------------
+
+ ---------------------------------------------------------------------------*/
+OUString SwXAutoTextGroup::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXAutoTextGroup");
+}
+/* -----------------------------06.04.00 11:11--------------------------------
+
+ ---------------------------------------------------------------------------*/
+BOOL SwXAutoTextGroup::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.text.AutoTextGroup") == rServiceName;
+}
+/* -----------------------------06.04.00 11:11--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Sequence< OUString > SwXAutoTextGroup::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.AutoTextGroup");
+ return aRet;
+}
+/******************************************************************
+ *
+ ******************************************************************/
+/* -----------------------------10.03.00 18:02--------------------------------
+
+ ---------------------------------------------------------------------------*/
+const uno::Sequence< sal_Int8 > & SwXAutoTextEntry::getUnoTunnelId()
+{
+ static uno::Sequence< sal_Int8 > aSeq = ::CreateUnoTunnelId();
+ return aSeq;
+}
+/* -----------------------------10.03.00 18:04--------------------------------
+
+ ---------------------------------------------------------------------------*/
+sal_Int64 SAL_CALL SwXAutoTextEntry::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;
+}
+/*-- 21.12.98 12:42:33---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXAutoTextEntry::SwXAutoTextEntry(SwGlossaries* pGlss, const String& rGroupName,
+ const String& rEntryName) :
+ pGlossaries(pGlss),
+ sGroupName(rGroupName),
+ sEntryName(rEntryName)
+{
+
+}
+/*-- 21.12.98 12:42:33---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXAutoTextEntry::~SwXAutoTextEntry()
+{
+
+}
+/*-- 21.12.98 12:42:33---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+/*-- 21.12.98 12:42:34---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< text::XTextCursor > SwXAutoTextEntry::createTextCursor(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+ return Reference< text::XTextCursor > ();
+}
+/*-- 21.12.98 12:42:34---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< text::XTextCursor > SwXAutoTextEntry::createTextCursorByRange(
+ const Reference< text::XTextRange > & aTextPosition) throw( uno::RuntimeException )
+{
+ DBG_WARNING("not implemented")
+ return Reference< text::XTextCursor > ();
+}
+/*-- 21.12.98 12:42:34---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextEntry::insertString(const Reference< text::XTextRange > & xRange, const OUString& aString, sal_Bool bAbsorb) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+}
+/*-- 21.12.98 12:42:34---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextEntry::insertControlCharacter(const Reference< text::XTextRange > & xRange,
+ sal_Int16 nControlCharacter, sal_Bool bAbsorb)
+ throw( lang::IllegalArgumentException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+}
+/*-- 21.12.98 12:42:34---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextEntry::insertTextContent(
+ const Reference< text::XTextRange > & xRange,
+ const Reference< text::XTextContent > & xContent, sal_Bool bAbsorb)
+ throw( lang::IllegalArgumentException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+}
+/*-- 21.12.98 12:42:34---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextEntry::removeTextContent(
+ const Reference< text::XTextContent > & xContent)
+ throw( container::NoSuchElementException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+}
+/*-- 21.12.98 12:42:35---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< text::XText > SwXAutoTextEntry::getText(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Reference< text::XText > xRet = (text::XText*)this;
+ return xRet;
+}
+/*-- 21.12.98 12:42:35---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< text::XTextRange > SwXAutoTextEntry::getStart(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+ return Reference< text::XTextRange > ();
+}
+/*-- 21.12.98 12:42:36---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< text::XTextRange > SwXAutoTextEntry::getEnd(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+ return Reference< text::XTextRange > ();
+}
+/*-- 21.12.98 12:42:36---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+OUString SwXAutoTextEntry::getString(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+ return OUString();
+}
+/*-- 21.12.98 12:42:36---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXAutoTextEntry::setString(const OUString& aString) throw( uno::RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/* -----------------15.07.99 10:11-------------------
+
+ --------------------------------------------------*/
+void SwXAutoTextEntry::applyTo(const Reference< text::XTextRange > & xTextRange)throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+
+ Reference<lang::XUnoTunnel> xRangeTunnel( xTextRange, uno::UNO_QUERY);
+ SwXTextRange* pRange = 0;
+ SwXTextCursor* pCursor = 0;
+ if(xRangeTunnel.is())
+ {
+ pRange = (SwXTextRange*)xRangeTunnel->getSomething(
+ SwXTextRange::getUnoTunnelId());
+ pCursor = (SwXTextCursor*)xRangeTunnel->getSomething(
+ SwXTextCursor::getUnoTunnelId());
+ }
+
+ SwDoc* pDoc = 0;
+ if(pRange && pRange->GetBookmark())
+ pDoc = pRange->GetDoc();
+ else if(pCursor && pCursor->GetCrsr())
+ pDoc = pCursor->GetDoc();
+ if(!pDoc)
+ throw uno::RuntimeException();
+ SwPaM* pInsertPaM = 0;
+ if(pRange)
+ {
+ SwBookmark* pBkm = pRange->GetBookmark();
+ if(pBkm->GetOtherPos())
+ pInsertPaM = new SwPaM(*pBkm->GetOtherPos(), pBkm->GetPos());
+ else
+ pInsertPaM = new SwPaM(pBkm->GetPos());
+ }
+ else
+ {
+ SwUnoCrsr* pCrsr = pCursor->GetCrsr();
+ if(pCrsr->HasMark())
+ pInsertPaM = new SwPaM(*pCrsr->GetPoint(), *pCrsr->GetMark());
+ else
+ pInsertPaM = new SwPaM(*pCrsr->GetPoint());
+ }
+
+ SwTextBlocks* pBlock = pGlossaries->GetGroupDoc(sGroupName);
+ sal_Bool bResult = pBlock &&
+ pDoc->InsertGlossary( *pBlock, sEntryName, *pInsertPaM);
+ delete pInsertPaM;
+
+ if(!bResult)
+ throw uno::RuntimeException();
+}
+/* -----------------------------06.04.00 11:11--------------------------------
+
+ ---------------------------------------------------------------------------*/
+OUString SwXAutoTextEntry::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXAutoTextEntry");
+}
+/* -----------------------------06.04.00 11:11--------------------------------
+
+ ---------------------------------------------------------------------------*/
+BOOL SwXAutoTextEntry::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.text.AutoTextEntry") == rServiceName;
+}
+/* -----------------------------06.04.00 11:11--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Sequence< OUString > SwXAutoTextEntry::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.AutoTextEntry");
+ return aRet;
+}
+
+
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.45 2000/09/18 16:06:15 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.44 2000/08/18 08:00:55 os
+ #77770# missing mutex
+
+ Revision 1.43 2000/08/09 12:58:48 os
+ #76891# short names are always upper case
+
+ Revision 1.42 2000/06/26 13:05:51 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.41 2000/05/31 12:02:10 os
+ SAL_CALL
+
+ Revision 1.40 2000/05/16 09:15:14 os
+ project usr removed
+
+ Revision 1.39 2000/04/11 08:04:59 os
+ UNICODE
+
+ Revision 1.38 2000/03/27 10:36:31 os
+ UNO III
+
+ Revision 1.37 2000/03/21 15:39:44 os
+ UNOIII
+
+ Revision 1.36 2000/02/14 14:31:34 os
+ #70473# Unicode
+
+ Revision 1.35 2000/02/10 10:35:22 os
+ #70359# titles added to AutoText groups
+
+ Revision 1.34 2000/01/28 15:24:05 os
+ #72213# Chg: text::XSimpleText;
+
+ Revision 1.33 1999/11/19 16:38:02 os
+ modules renamed
+
+ Revision 1.32 1999/10/18 08:16:13 os
+ #67409# save glossaries ptr while renaming the group
+
+ Revision 1.31 1999/10/05 09:45:09 os
+ #67454# last forgotten path indicators added
+
+ Revision 1.30 1999/09/10 13:19:05 os
+ Chg: resource types removed
+
+ Revision 1.29 1999/07/28 14:21:14 OS
+ #67828# applyTo changed
+
+
+ Rev 1.28 28 Jul 1999 16:21:14 OS
+ #67828# applyTo changed
+
+ Rev 1.27 23 Jul 1999 13:21:18 OS
+ #67828# applyTo implemented ;unused methods removed
+
+ Rev 1.26 23 Jul 1999 10:19:06 OS
+ #67828# applyTo implemented ;unused methods removed
+
+ Rev 1.25 20 Jul 1999 08:58:24 OS
+ #67409# SwXAutoTextGroup::setName; #67115# SwXAutoTextGroup::renameByName
+
+ Rev 1.24 19 Jul 1999 09:01:06 OS
+ new method: aplyTo()
+
+ Rev 1.23 04 May 1999 13:41:46 OS
+ #65330# insertNewByName funktioniert
+
+ Rev 1.22 04 May 1999 10:18:16 OS
+ #65328# container::XElementAccess fuer text::XAutoTextGroup
+
+ Rev 1.21 22 Apr 1999 16:09:04 OS
+ #65194# throw -> throw
+
+ Rev 1.20 22 Apr 1999 15:28:52 OS
+ #65124# not implemented - nur noch DBG_WARNING
+
+ Rev 1.19 30 Mar 1999 15:28:12 OS
+ #63930# Services am ProcessServiceManager anmelden
+
+ Rev 1.18 15 Mar 1999 14:38:24 OS
+ #62845# Makro fuer ServiceInfo jetzt auch fuer OS/2
+
+ Rev 1.17 12 Mar 1999 09:57:04 OS
+ #62845# lang::XServiceInfo impl.
+
+ Rev 1.16 09 Mar 1999 12:38:38 OS
+ #62008# Solar-Mutex
+
+ Rev 1.15 08 Mar 1999 07:43:00 MH
+ update 515
+
+ Rev 1.14 23 Feb 1999 16:14:20 OS
+ #62281# Pfadangabe muss in die text::AutoTextGroup uebernommen werden
+
+ Rev 1.13 08 Feb 1999 15:02:06 OS
+ #56371# richtiger Gruppenzugriff
+
+ Rev 1.12 28 Jan 1999 16:27:48 OS
+ #56371# keine Objekte fuer DEBUG anlegen
+
+ Rev 1.11 27 Jan 1999 12:06:08 OS
+ #56371# TF_ONE51
+
+ Rev 1.10 21 Dec 1998 16:20:04 OS
+ #56371# TF_ONE51 Zwischenstand
+
+ Rev 1.9 10 Dec 1998 15:54:04 OS
+ #56371# TF_ONE51 Zwischenstand
+
+ Rev 1.8 01 Sep 1998 08:24:08 OS
+ #55849# Signaturen per UNO ermitteln - SwTextBlocks immer neu anlegen
+
+ Rev 1.7 23 Jul 1998 17:18:08 OS
+ text::AutoTextGroup liefert jetzt text::XAutoTextEntry #52654#
+
+ Rev 1.6 10 Jul 1998 18:09:38 OS
+ PropertySetInfo und IdlClass static
+
+ Rev 1.5 21 Jun 1998 16:24:30 MH
+ Syntax OS/2
+
+ Rev 1.4 18 Jun 1998 08:13:22 OS
+ SwXAutoTextEntry
+
+ Rev 1.3 17 Jun 1998 09:55:56 OS
+ removeXXXByName
+
+ Rev 1.2 16 Jun 1998 16:48:28 OS
+ interface verbessert
+
+ Rev 1.1 04 Jun 1998 09:40:44 OS
+ getIdlClasses
+
+
+ Rev 1.0 27 May 1998 17:07:36 OM
+ Initial revision.
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/uno/unomod.cxx b/sw/source/ui/uno/unomod.cxx
new file mode 100644
index 000000000000..930087ad3967
--- /dev/null
+++ b/sw/source/ui/uno/unomod.cxx
@@ -0,0 +1,781 @@
+/*************************************************************************
+ *
+ * $RCSfile: unomod.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <swtypes.hxx>
+#ifndef _TOOLS_DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+#ifndef _UNOMOD_HXX
+#include <unomod.hxx>
+#endif
+#ifndef _UNOOBJ_HXX
+#include <unoobj.hxx>
+#endif
+#ifndef _UNOPRNMS_HXX
+#include <unoprnms.hxx>
+#endif
+#ifndef _UNOMAP_HXX
+#include <unomap.hxx>
+#endif
+#ifndef _SFX_ITEMPROP_HXX //autogen
+#include <svtools/itemprop.hxx>
+#endif
+#ifndef _PRTOPT_HXX //autogen
+#include <prtopt.hxx>
+#endif
+#ifndef _SHL_HXX
+#include <tools/shl.hxx>
+#endif
+#ifndef _SWMODULE_HXX //autogen
+#include <swmodule.hxx>
+#endif
+#ifndef _SWVIEW_HXX //autogen
+#include <view.hxx>
+#endif
+#ifndef _SWDOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _WRTSH_HXX //autogen
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEWOPT_HXX //autogen
+#include <viewopt.hxx>
+#endif
+#ifndef _VOS_MUTEX_HXX_ //autogen
+#include <vos/mutex.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_NOTEPRINTMODE_HPP_
+#include <com/sun/star/text/NotePrintMode.hpp>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::rtl;
+
+/******************************************************************
+ * SwXModule
+ ******************************************************************/
+/* -----------------30.03.99 15:10-------------------
+ *
+ * --------------------------------------------------*/
+Reference< uno::XInterface > SAL_CALL SwXModule_CreateInstance(const Reference< lang::XMultiServiceFactory > & )
+{
+ static Reference< uno::XInterface > xModule = (cppu::OWeakObject*)new SwXModule();;
+ return xModule;
+}
+/*-- 17.12.98 12:19:01---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXModule::SwXModule() :
+ pxViewSettings(0),
+ pxPrintSettings(0)
+{
+}
+/*-- 17.12.98 12:19:02---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXModule::~SwXModule()
+{
+ delete pxViewSettings;
+ delete pxPrintSettings;
+}
+/*-- 17.12.98 12:19:03---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< beans::XPropertySet > SwXModule::getViewSettings(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!pxViewSettings)
+ {
+ ((SwXModule*)this)->pxViewSettings = new Reference< beans::XPropertySet > ;
+ DBG_ERROR("Web oder Text?")
+ *pxViewSettings = new SwXViewSettings(sal_False, 0);
+ }
+ return *pxViewSettings;
+}
+/*-- 17.12.98 12:19:03---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< beans::XPropertySet > SwXModule::getPrintSettings(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!pxPrintSettings)
+ {
+ ((SwXModule*)this)->pxPrintSettings = new Reference< beans::XPropertySet > ;
+ DBG_ERROR("Web oder Text?")
+ *pxPrintSettings = new SwXPrintSettings(sal_False);
+ }
+ return *pxPrintSettings;
+}
+/* -----------------------------06.04.00 10:59--------------------------------
+
+ ---------------------------------------------------------------------------*/
+OUString SwXModule::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXModule");
+}
+/* -----------------------------06.04.00 10:59--------------------------------
+
+ ---------------------------------------------------------------------------*/
+BOOL SwXModule::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.text.Module") == rServiceName;
+}
+/* -----------------------------06.04.00 10:59--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Sequence< OUString > SwXModule::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.Module");
+ return aRet;
+}
+
+/******************************************************************
+ * SwXPrintSettings
+ ******************************************************************/
+
+/*-- 17.12.98 12:54:04---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXPrintSettings::SwXPrintSettings(sal_Bool bWebView) :
+ _pMap(aSwMapProvider.GetPropertyMap(PROPERTY_MAP_PRINT_SETTINGS)),
+ bWeb(bWebView)
+{
+
+}
+/*-- 17.12.98 12:54:05---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXPrintSettings::~SwXPrintSettings()
+{
+
+}
+/*-- 17.12.98 12:54:06---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< beans::XPropertySetInfo > SwXPrintSettings::getPropertySetInfo(void)
+ throw( uno::RuntimeException )
+{
+ static Reference< beans::XPropertySetInfo > aRef = new SfxItemPropertySetInfo(_pMap);
+ return aRef;
+}
+/*-- 17.12.98 12:54:06---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXPrintSettings::setPropertyValue(const OUString& rPropertyName,
+ const uno::Any& aValue)
+ throw( beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bVal = sal_False;
+
+ if(COMPARE_EQUAL != rPropertyName.compareToAscii(UNO_NAME_PRINT_ANNOTATION_MODE))
+ bVal = *(sal_Bool*)aValue.getValue();
+
+ SwPrintOptions* pPrtOpt = SW_MOD()->GetPrtOptions(bWeb);
+ const SfxItemPropertyMap* pCur = SfxItemPropertyMap::GetByName(_pMap, rPropertyName);
+ if(pCur)
+ switch( pCur->nWID )
+ {
+ case WID_PRTSET_LEFT_PAGES : pPrtOpt->SetPrintLeftPage(bVal); break;
+ case WID_PRTSET_RIGHT_PAGES : pPrtOpt->SetPrintRightPage(bVal); break;
+ case WID_PRTSET_REVERSED : pPrtOpt->SetPrintReverse(bVal); break;
+ case WID_PRTSET_PROSPECT : pPrtOpt->SetPrintProspect(bVal); break;
+ case WID_PRTSET_GRAPHICS : pPrtOpt->SetPrintGraphic(bVal); break;
+ case WID_PRTSET_TABLES : pPrtOpt->SetPrintTable(bVal); break;
+ case WID_PRTSET_DRAWINGS : pPrtOpt->SetPrintDraw(bVal); break;
+ case WID_PRTSET_CONTROLS : pPrtOpt->SetPrintControl(bVal); break;
+ case WID_PRTSET_PAGE_BACKGROUND: pPrtOpt->SetPrintPageBackground(bVal); break;
+ case WID_PRTSET_BLACK_FONTS : pPrtOpt->SetPrintBlackFont(bVal); break;
+ case WID_PRTSET_ANNOTATION_MODE:
+ {
+ sal_Int16 nVal;
+ aValue >>= nVal;
+ if(nVal <= text::NotePrintMode_PAGE_END)
+ pPrtOpt->SetPrintPostIts(nVal);
+ else
+ throw lang::IllegalArgumentException();
+ }
+ break;
+ default: DBG_ERROR("Diese Id gibt's nicht!");
+ }
+ else
+ throw beans::UnknownPropertyException();
+}
+/*-- 17.12.98 12:54:06---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Any SwXPrintSettings::getPropertyValue(const OUString& rPropertyName)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ uno::Any aRet;
+ SwPrintOptions* pPrtOpt = SW_MOD()->GetPrtOptions(bWeb);
+ const SfxItemPropertyMap* pCur = SfxItemPropertyMap::GetByName(_pMap, rPropertyName);
+ if(pCur)
+ {
+ sal_Bool bBool = TRUE;
+ sal_Bool bBoolVal;
+ switch( pCur->nWID )
+ {
+ case WID_PRTSET_LEFT_PAGES : bBoolVal = pPrtOpt->IsPrintLeftPage(); break;
+ case WID_PRTSET_RIGHT_PAGES : bBoolVal = pPrtOpt->IsPrintRightPage(); break;
+ case WID_PRTSET_REVERSED : bBoolVal = pPrtOpt->IsPrintReverse(); break;
+ case WID_PRTSET_PROSPECT : bBoolVal = bBoolVal = pPrtOpt->IsPrintProspect(); break;
+ case WID_PRTSET_GRAPHICS : bBoolVal = pPrtOpt->IsPrintGraphic(); break;
+ case WID_PRTSET_TABLES : bBoolVal = pPrtOpt->IsPrintTable(); break;
+ case WID_PRTSET_DRAWINGS : bBoolVal = pPrtOpt->IsPrintDraw(); break;
+ case WID_PRTSET_CONTROLS : bBoolVal = pPrtOpt->IsPrintControl(); break;
+ case WID_PRTSET_PAGE_BACKGROUND: bBoolVal = pPrtOpt->IsPrintPageBackground(); break;
+ case WID_PRTSET_BLACK_FONTS : bBoolVal = pPrtOpt->IsPrintBlackFont(); break;
+ case WID_PRTSET_ANNOTATION_MODE: bBool = FALSE; aRet <<= (sal_Int16)pPrtOpt->GetPrintPostIts(); break;
+ default: DBG_ERROR("Diese Id gibt's nicht!");
+ }
+ if(bBool)
+ aRet.setValue(&bBoolVal, ::getBooleanCppuType());
+ }
+ else
+ throw beans::UnknownPropertyException();
+ return aRet;
+}
+/*-- 17.12.98 12:54:07---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXPrintSettings::addPropertyChangeListener(const OUString& PropertyName, const Reference< beans::XPropertyChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/*-- 17.12.98 12:54:07---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXPrintSettings::removePropertyChangeListener(const OUString& PropertyName, const Reference< beans::XPropertyChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/*-- 17.12.98 12:54:07---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXPrintSettings::addVetoableChangeListener(const OUString& PropertyName, const Reference< beans::XVetoableChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/*-- 17.12.98 12:54:07---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXPrintSettings::removeVetoableChangeListener(const OUString& PropertyName, const Reference< beans::XVetoableChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/* -----------------------------06.04.00 11:02--------------------------------
+
+ ---------------------------------------------------------------------------*/
+OUString SwXPrintSettings::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXPrintSettings");
+}
+/* -----------------------------06.04.00 11:02--------------------------------
+
+ ---------------------------------------------------------------------------*/
+BOOL SwXPrintSettings::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.text.PrintSettings") == rServiceName;
+}
+/* -----------------------------06.04.00 11:02--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Sequence< OUString > SwXPrintSettings::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.PrintSettings");
+ return aRet;
+}
+
+
+/******************************************************************
+ *
+ ******************************************************************/
+/*-- 18.12.98 11:01:10---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXViewSettings::SwXViewSettings(sal_Bool bWebView, SwView* pVw) :
+ _pMap(aSwMapProvider.GetPropertyMap(PROPERTY_MAP_VIEW_SETTINGS)),
+ pView(pVw),
+ bWeb(bWebView),
+ bObjectValid(sal_True)
+{
+
+}
+/*-- 18.12.98 11:01:10---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXViewSettings::~SwXViewSettings()
+{
+
+}
+/*-- 18.12.98 11:01:11---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< beans::XPropertySetInfo > SwXViewSettings::getPropertySetInfo(void) throw( uno::RuntimeException )
+{
+ static Reference< beans::XPropertySetInfo > aRef = new SfxItemPropertySetInfo(_pMap);
+ return aRef;
+}
+/*-- 18.12.98 11:01:12---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXViewSettings::setPropertyValue(const OUString& rPropertyName,
+ const uno::Any& aValue)
+ throw( beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bApply = sal_True;
+ sal_Bool bApplyZoom = sal_False;
+
+ const SwViewOption* pVOpt = 0;
+ if(pView)
+ {
+ if(!IsValid())
+ return;
+ pVOpt = pView->GetWrtShell().GetViewOptions();
+ }
+ else
+ {
+ pVOpt = SW_MOD()->GetViewOption(bWeb);
+ }
+ SwViewOption aVOpt(*pVOpt);
+ const SfxItemPropertyMap* pCur = SfxItemPropertyMap::GetByName(
+ _pMap, rPropertyName);
+ if(pCur)
+ {
+ sal_Bool bVal = WID_VIEWSET_ZOOM != pCur->nWID ?
+ *(sal_Bool*)aValue.getValue() : sal_False;
+ // the API flag should not be set to the application's view settings
+ if(pView)
+ aVOpt.SetStarOneSetting(sal_True);
+ switch( pCur->nWID )
+ {
+ case WID_VIEWSET_HRULER : aVOpt.SetViewTabwin(bVal); break;
+ case WID_VIEWSET_VRULER : aVOpt.SetViewVLin(bVal);break;
+ case WID_VIEWSET_HSCROLL: aVOpt.SetViewHScrollBar(bVal);break;
+ case WID_VIEWSET_VSCROLL: aVOpt.SetViewVScrollBar(bVal);break;
+ case WID_VIEWSET_GRAPHICS : aVOpt.SetGraphic(bVal);break;
+ case WID_VIEWSET_TABLES : aVOpt.SetTable(bVal); break;
+ case WID_VIEWSET_DRAWINGS : aVOpt.SetDraw(bVal); break;
+ case WID_VIEWSET_FIELD_COMMANDS : aVOpt.SetFldName(bVal); break;
+ case WID_VIEWSET_ANNOTATIONS : aVOpt.SetPostIts(bVal); break;
+ case WID_VIEWSET_INDEX_MARK_BACKGROUND : aVOpt.SetTox(bVal); break;
+ case WID_VIEWSET_FOOTNOTE_BACKGROUND : aVOpt.SetFootNote(bVal); break;
+ case WID_VIEWSET_TEXT_FIELD_BACKGROUND : aVOpt.SetField(bVal); break;
+ case WID_VIEWSET_PARA_BREAKS : aVOpt.SetParagraph(bVal); break;
+ case WID_VIEWSET_SOFT_HYPHENS : aVOpt.SetSoftHyph(bVal); break;
+ case WID_VIEWSET_SPACES : aVOpt.SetBlank(bVal); break;
+ case WID_VIEWSET_PROTECTED_SPACES : aVOpt.SetHardBlank(bVal); break;
+ case WID_VIEWSET_TABSTOPS : aVOpt.SetTab(bVal); break;
+ case WID_VIEWSET_BREAKS : aVOpt.SetLineBreak(bVal); break;
+ case WID_VIEWSET_HIDDEN_TEXT : aVOpt.SetHidden(bVal); break;
+ case WID_VIEWSET_HIDDEN_PARAGRAPHS : aVOpt.SetShowHiddenPara(bVal); break;
+ case WID_VIEWSET_TABLE_BOUNDARIES : aVOpt.SetSubsTable(bVal); break;
+ case WID_VIEWSET_TEXT_BOUNDARIES : aVOpt.SetSubsLines(bVal); break;
+ case WID_VIEWSET_SMOOTH_SCROLLING : aVOpt.SetSmoothScroll(bVal); break;
+ case WID_VIEWSET_SOLID_MARK_HANDLES : aVOpt.SetSolidMarkHdl(bVal); break;
+ case WID_VIEWSET_ZOOM :
+ {
+ sal_Int16 nZoom = *(sal_Int16*)aValue.getValue();
+ if(nZoom > 1000 || nZoom < 5)
+ throw lang::IllegalArgumentException();
+ aVOpt.SetZoom((sal_uInt16)nZoom);
+ bApplyZoom = sal_True;
+ }
+ break;
+ case WID_VIEWSET_ZOOM_TYPE:
+ {
+ sal_Int16 nZoom = *(sal_Int16*)aValue.getValue();
+ SvxZoomType eZoom = (SvxZoomType)USHRT_MAX;
+ switch(nZoom)
+ {
+ case /*DocumentZoomType_OPTIMAL */0:
+ eZoom = SVX_ZOOM_OPTIMAL;
+ break;
+ case /*DocumentZoomType_PAGE_WIDTH */ 1:
+ eZoom = SVX_ZOOM_PAGEWIDTH;
+ break;
+ case /*DocumentZoomType_ENTIRE_PAGE */ 2:
+ eZoom = SVX_ZOOM_WHOLEPAGE;
+ break;
+ case /*DocumentZoomType_BY_VALUE */ 3:
+ eZoom = SVX_ZOOM_PERCENT;
+ break;
+ }
+ if(eZoom < USHRT_MAX)
+ {
+ aVOpt.SetZoomType( eZoom );
+ bApplyZoom = sal_True;
+ }
+ }
+ break;
+ case WID_VIEWSET_ONLINE_LAYOUT :
+ {
+ bApply = sal_False;
+ if(pView)
+ pView->GetDocShell()->ToggleBrowserMode(bVal, pView );
+ }
+ break;
+ default:
+ bApply = sal_False;
+ DBG_ERROR("Diese Id gibt's nicht!")
+ }
+ }
+ else
+ throw beans::UnknownPropertyException();
+ if(bApplyZoom && pView)
+ {
+ pView->SetZoom( (SvxZoomType)aVOpt.GetZoomType(), aVOpt.GetZoom(), sal_True );
+ }
+ else if(bApply)
+ SW_MOD()->ApplyUsrPref(aVOpt, pView, pView ? VIEWOPT_DEST_VIEW_ONLY : bWeb ? VIEWOPT_DEST_WEB : VIEWOPT_DEST_TEXT );
+
+}
+/*-- 18.12.98 11:01:12---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Any SwXViewSettings::getPropertyValue(const OUString& rPropertyName)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ uno::Any aRet;
+ const SwViewOption* pVOpt = 0;
+ if(pView)
+ {
+ if(!IsValid())
+ return uno::Any();
+ pVOpt = pView->GetWrtShell().GetViewOptions();
+ }
+ else
+ pVOpt = SW_MOD()->GetViewOption(bWeb);
+ const SfxItemPropertyMap* pCur = SfxItemPropertyMap::GetByName(_pMap, rPropertyName);
+ if(pCur)
+ {
+ sal_Bool bBool = TRUE;
+ sal_Bool bBoolVal;
+ switch( pCur->nWID )
+ {
+ case WID_VIEWSET_HRULER : bBoolVal = pVOpt->IsViewTabwin(); break;
+ case WID_VIEWSET_VRULER : bBoolVal = pVOpt->IsViewVLin();break;
+ case WID_VIEWSET_HSCROLL: bBoolVal = pVOpt->IsViewHScrollBar();break;
+ case WID_VIEWSET_VSCROLL: bBoolVal = pVOpt->IsViewVScrollBar();break;
+ case WID_VIEWSET_GRAPHICS : bBoolVal = pVOpt->IsGraphic();break;
+ case WID_VIEWSET_TABLES : bBoolVal = pVOpt->IsTable(); break;
+ case WID_VIEWSET_DRAWINGS : bBoolVal = pVOpt->IsDraw(); break;
+ case WID_VIEWSET_FIELD_COMMANDS : bBoolVal = pVOpt->IsFldName(); break;
+ case WID_VIEWSET_ANNOTATIONS : bBoolVal = pVOpt->IsPostIts(); break;
+ case WID_VIEWSET_INDEX_MARK_BACKGROUND : bBoolVal = pVOpt->IsTox(); break;
+ case WID_VIEWSET_FOOTNOTE_BACKGROUND : bBoolVal = pVOpt->IsFootNote(); break;
+ case WID_VIEWSET_TEXT_FIELD_BACKGROUND : bBoolVal = pVOpt->IsField(); break;
+ case WID_VIEWSET_PARA_BREAKS : bBoolVal = pVOpt->IsParagraph(sal_True); break;
+ case WID_VIEWSET_SOFT_HYPHENS : bBoolVal = pVOpt->IsSoftHyph(); break;
+ case WID_VIEWSET_SPACES : bBoolVal = pVOpt->IsBlank(sal_True); break;
+ case WID_VIEWSET_PROTECTED_SPACES : bBoolVal = pVOpt->IsHardBlank(); break;
+ case WID_VIEWSET_TABSTOPS : bBoolVal = pVOpt->IsTab(sal_True); break;
+ case WID_VIEWSET_BREAKS : bBoolVal = pVOpt->IsLineBreak(sal_True); break;
+ case WID_VIEWSET_HIDDEN_TEXT : bBoolVal = pVOpt->IsHidden(); break;
+ case WID_VIEWSET_HIDDEN_PARAGRAPHS : bBoolVal = pVOpt->IsShowHiddenPara(); break;
+ case WID_VIEWSET_TABLE_BOUNDARIES : bBoolVal = pVOpt->IsSubsTable(); break;
+ case WID_VIEWSET_TEXT_BOUNDARIES : bBoolVal = pVOpt->IsSubsLines(); break;
+ case WID_VIEWSET_SMOOTH_SCROLLING : bBoolVal = pVOpt->IsSmoothScroll(); break;
+ case WID_VIEWSET_SOLID_MARK_HANDLES : bBoolVal = pVOpt->IsSolidMarkHdl(); break;
+ case WID_VIEWSET_ZOOM :
+ bBool = FALSE;
+ aRet <<= (sal_Int16)pVOpt->GetZoom();
+ break;
+ case WID_VIEWSET_ZOOM_TYPE:
+ {
+ bBool = FALSE;
+ sal_Int16 nRet;
+ switch(pVOpt->GetZoomType())
+ {
+ case SVX_ZOOM_OPTIMAL:
+ nRet = /*DocumentZoomType_OPTIMAL*/ 0;
+ break;
+ case SVX_ZOOM_PAGEWIDTH:
+ nRet = /*DocumentZoomType_PAGE_WIDTH */1;
+ break;
+ case SVX_ZOOM_WHOLEPAGE:
+ nRet = /*DocumentZoomType_ENTIRE_PAGE */ 2;
+ break;
+ case SVX_ZOOM_PERCENT:
+ nRet = /*DocumentZoomType_BY_VALUE */ 3;
+ break;
+ }
+ aRet <<= nRet;
+ }
+ break;
+ case WID_VIEWSET_ONLINE_LAYOUT:
+ if(pView)
+ bBoolVal = pView->GetWrtShell().GetDoc()->IsBrowseMode();
+ break;
+ default: DBG_ERROR("Diese Id gibt's nicht!");
+ }
+ if(bBool)
+ aRet.setValue(&bBoolVal, ::getBooleanCppuType());
+ }
+ else
+ throw beans::UnknownPropertyException();
+
+ return aRet;
+}
+/*-- 18.12.98 11:01:12---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXViewSettings::addPropertyChangeListener(const OUString& PropertyName, const Reference< beans::XPropertyChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/*-- 18.12.98 11:01:13---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXViewSettings::removePropertyChangeListener(const OUString& PropertyName, const Reference< beans::XPropertyChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/*-- 18.12.98 11:01:13---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXViewSettings::addVetoableChangeListener(const OUString& PropertyName, const Reference< beans::XVetoableChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/*-- 18.12.98 11:01:14---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXViewSettings::removeVetoableChangeListener(const OUString& PropertyName, const Reference< beans::XVetoableChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+OUString SwXViewSettings::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXViewSettings");
+}
+BOOL SwXViewSettings::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.text.ViewSettings") == rServiceName;
+}
+Sequence< OUString > SwXViewSettings::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.ViewSettings");
+ return aRet;
+}
+
+/******************************************************************
+ *
+ ******************************************************************/
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.40 2000/09/18 16:06:15 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.39 2000/05/31 12:02:13 os
+ SAL_CALL
+
+ Revision 1.38 2000/04/11 08:05:00 os
+ UNICODE
+
+ Revision 1.37 2000/04/05 10:03:10 os
+ #67584# scroll bar settings in read-only documents corrected
+
+ Revision 1.36 2000/03/27 10:36:31 os
+ UNO III
+
+ Revision 1.35 2000/03/21 15:39:44 os
+ UNOIII
+
+ Revision 1.34 2000/02/11 14:59:53 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.33 1999/12/16 14:18:17 hjs
+ includes
+
+ Revision 1.32 1999/12/14 16:11:33 os
+ #70234# Set Browser Mode via API
+
+ Revision 1.31 1999/11/22 10:37:38 os
+ missing headers added
+
+ Revision 1.30 1999/11/19 16:38:03 os
+ modules renamed
+
+ Revision 1.29 1999/07/20 07:48:06 OS
+ #67585# ZoomValue/ZoomType :SetZoom changed
+
+
+ Rev 1.28 20 Jul 1999 09:48:06 OS
+ #67585# ZoomValue/ZoomType :SetZoom changed
+
+ Rev 1.27 20 Jul 1999 09:04:56 OS
+ #67585# ZoomType/ZoomValue
+
+ Rev 1.26 13 Jul 1999 08:50:56 OS
+ #67584# Scrollbar settings via StarOne; #67585# Zoom-Property
+
+ Rev 1.25 22 Apr 1999 16:09:04 OS
+ #65194# throw -> throw
+
+ Rev 1.24 22 Apr 1999 15:28:52 OS
+ #65124# not implemented - nur noch DBG_WARNING
+
+ Rev 1.23 30 Mar 1999 15:28:12 OS
+ #63930# Services am ProcessServiceManager anmelden
+
+ Rev 1.22 15 Mar 1999 14:38:24 OS
+ #62845# Makro fuer ServiceInfo jetzt auch fuer OS/2
+
+ Rev 1.21 12 Mar 1999 09:57:04 OS
+ #62845# lang::XServiceInfo impl.
+
+ Rev 1.20 09 Mar 1999 12:38:34 OS
+ #62008# Solar-Mutex
+
+ Rev 1.19 05 Mar 1999 14:27:26 OS
+ #62874# Schreibfehler
+
+ Rev 1.18 04 Mar 1999 15:04:12 OS
+ #62191# UINT nicht mehr verwenden
+
+ Rev 1.17 23 Feb 1999 16:19:56 OS
+ #62281# UsrPrefs per UNO nur auf aktuelle sdbcx::View anwenden
+
+ Rev 1.16 28 Jan 1999 16:27:50 OS
+ #56371# keine Objekte fuer DEBUG anlegen
+
+ Rev 1.15 27 Jan 1999 12:06:06 OS
+ #56371# TF_ONE51
+
+ Rev 1.14 18 Dec 1998 11:40:32 OS
+ #56371# TF_ONE51 Zwischenstand
+
+ Rev 1.13 10 Dec 1998 15:54:04 OS
+ #56371# TF_ONE51 Zwischenstand
+
+ Rev 1.12 23 Nov 1998 17:37:22 JP
+ Bug #59754#: TerminateHdl wird nicht mehr fuers Clipboard benoetigt
+
+ Rev 1.11 04 Nov 1998 10:24:56 OS
+ #58315# im disposing beim frame::XDesktop abmelden
+
+ Rev 1.10 01 Oct 1998 11:40:24 HR
+ Typo beseitigt
+
+ Rev 1.9 24 Sep 1998 13:33:14 OS
+ #52654# #56685# frame::XTerminateListener fuer die Anmeldung an der Application
+
+ Rev 1.8 10 Jul 1998 18:10:04 OS
+ PropertySetInfo und IdlClass static
+
+ Rev 1.7 17 Jun 1998 11:40:12 MH
+ tmp fuer ICC
+
+ Rev 1.6 04 Jun 1998 09:40:30 OS
+// automatisch auskommentiert - [getIdlClass(es) or queryInterface] - Bitte XTypeProvider benutzen!
+// getIdlClasses
+
+
+ Rev 1.5 14 May 1998 17:49:52 OS
+ div. Namensaenderungen
+
+ Rev 1.4 09 Apr 1998 15:10:34 OS
+ Uno-Umstellung
+
+ Rev 1.3 08 Apr 1998 12:51:08 OS
+ text::ViewSettings auch fuer die TextView
+
+ Rev 1.2 16 Mar 1998 12:38:54 OS
+ ; im default
+
+ Rev 1.1 16 Mar 1998 10:31:08 OS
+ sdbcx::View- und PrintSettings vervollstaendigt
+
+ Rev 1.0 15 Mar 1998 15:22:24 OS
+ Initial revision.
+
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/uno/unotxdoc.cxx b/sw/source/ui/uno/unotxdoc.cxx
new file mode 100644
index 000000000000..2069a0a58dfc
--- /dev/null
+++ b/sw/source/ui/uno/unotxdoc.cxx
@@ -0,0 +1,2818 @@
+/*************************************************************************
+ *
+ * $RCSfile: unotxdoc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <cmdid.h>
+#include <swtypes.hxx>
+
+#ifndef _SV_IMAGE_HXX
+#include <vcl/image.hxx>
+#endif
+#ifndef _SV_VIRDEV_HXX
+#include <vcl/virdev.hxx>
+#endif
+#ifndef _TOOLKIT_UNOHLP_HXX
+#include <toolkit/helper/vclunohelper.hxx>
+#endif
+#ifndef _DOC_HXX //autogen
+#include <doc.hxx>
+#endif
+#ifndef _SWWDOCSH_HXX //autogen
+#include <wdocsh.hxx>
+#endif
+#ifndef _WRTSH_HXX //autogen
+#include <wrtsh.hxx>
+#endif
+#ifndef _SWVIEW_HXX //autogen
+#include <view.hxx>
+#endif
+#ifndef _VIEWSH_HXX //autogen
+#include <viewsh.hxx>
+#endif
+#ifndef _PVPRTDAT_HXX
+#include <pvprtdat.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _UNOTXDOC_HXX //autogen
+#include <unotxdoc.hxx>
+#endif
+#ifndef _NUMUNO_HXX
+#include <svtools/numuno.hxx>
+#endif
+#ifndef _UNOOBJ_HXX
+#include <unoobj.hxx>
+#endif
+#ifndef _UNOSETT_HXX
+#include <unosett.hxx>
+#endif
+#ifndef _UNOCOLL_HXX
+#include <unocoll.hxx>
+#endif
+#ifndef _UNOSRCH_HXX
+#include <unosrch.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _UNOPRNMS_HXX
+#include <unoprnms.hxx>
+#endif
+#ifndef _UNOSTYLE_HXX
+#include <unostyle.hxx>
+#endif
+#ifndef _UNODRAW_HXX
+#include <unodraw.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _PAGEDESC_HXX //autogen
+#include <pagedesc.hxx>
+#endif
+#ifndef _UNOPRNMS_HXX //autogen
+#include <unoprnms.hxx>
+#endif
+#ifndef _UNOOBJ_HXX //autogen
+#include <unoobj.hxx>
+#endif
+#ifndef _TXTCMP_HXX //autogen
+#include <svtools/txtcmp.hxx>
+#endif
+#ifndef _UNOCRSR_HXX //autogen
+#include <unocrsr.hxx>
+#endif
+#ifndef _UNOFIELD_HXX
+#include <unofield.hxx>
+#endif
+#ifndef _UNOIDX_HXX
+#include <unoidx.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _COM_SUN_STAR_LANG_SERVICENOTREGISTEREDEXCEPTION_HPP_
+#include <com/sun/star/lang/ServiceNotRegisteredException.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATSSUPPLIER_HPP_
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PropertyAttribute_HPP_
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XSELECTIONSUPPLIER_HPP_
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_LOCALE_HPP_
+#include <com/sun/star/lang/Locale.hpp>
+#endif
+
+#ifndef _SVX_UNOMID_HXX
+#include <svx/unomid.hxx>
+#endif
+#ifndef _VOS_MUTEX_HXX_ //autogen
+#include <vos/mutex.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _DOCSTAT_HXX //autogen wg. SwDocStat
+#include <docstat.hxx>
+#endif
+#ifndef _MODOPT_HXX //
+#include <modcfg.hxx>
+ #endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+#include <utlui.hrc>
+#include "swcont.hxx"
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+using namespace ::rtl;
+
+/******************************************************************************
+ *
+ ******************************************************************************/
+SwTxtFmtColl *lcl_GetParaStyle(const String& rCollName, SwDoc* pDoc)
+{
+ SwTxtFmtColl* pColl = pDoc->FindTxtFmtCollByName( rCollName );
+ if( !pColl )
+ {
+ sal_uInt16 nId = pDoc->GetPoolId( rCollName, GET_POOLID_TXTCOLL );
+ if( USHRT_MAX != nId )
+ pColl = pDoc->GetTxtCollFromPool( nId );
+ }
+ return pColl;
+}
+/* -----------------------------10.03.00 18:02--------------------------------
+
+ ---------------------------------------------------------------------------*/
+const Sequence< sal_Int8 > & SwXTextDocument::getUnoTunnelId()
+{
+ static Sequence< sal_Int8 > aSeq = ::CreateUnoTunnelId();
+ return aSeq;
+}
+/* -----------------------------10.03.00 18:04--------------------------------
+
+ ---------------------------------------------------------------------------*/
+sal_Int64 SAL_CALL SwXTextDocument::getSomething( const Sequence< sal_Int8 >& rId )
+ throw(RuntimeException)
+{
+ if( rId.getLength() == 16
+ && 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+/* -----------------------------16.03.00 14:12--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Any SAL_CALL SwXTextDocument::queryInterface( const uno::Type& rType ) throw(RuntimeException)
+{
+ Any aRet = SwXTextDocumentBaseClass::queryInterface(rType);
+ if(aRet.getValueType() == getVoidCppuType())
+ aRet = SfxBaseModel::queryInterface(rType);
+ if(aRet.getValueType() == getVoidCppuType() &&
+ rType == ::getCppuType((Reference<lang::XMultiServiceFactory>*)0))
+ {
+ Reference<lang::XMultiServiceFactory> xTmp = this;
+ aRet <<= xTmp;
+ }
+ if(aRet.getValueType() == getVoidCppuType())
+ {
+ if(!xNumFmtAgg.is())
+ GetNumberFormatter();
+ if(xNumFmtAgg.is())
+ aRet = xNumFmtAgg->queryAggregation(rType);
+ }
+ return aRet;
+}
+/* -----------------------------16.03.00 14:12--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SAL_CALL SwXTextDocument::acquire()throw()
+{
+ SfxBaseModel::acquire();
+}
+/* -----------------------------16.03.00 14:12--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SAL_CALL SwXTextDocument::release()throw()
+{
+ SfxBaseModel::release();
+}
+/* -----------------------------16.03.00 14:12--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Sequence< uno::Type > SAL_CALL SwXTextDocument::getTypes() throw(RuntimeException)
+{
+ Sequence< uno::Type > aBaseTypes = SfxBaseModel::getTypes();
+ Sequence< uno::Type > aTextTypes = SwXTextDocumentBaseClass::getTypes();
+
+ Sequence< uno::Type > aNumTypes;
+ if(!xNumFmtAgg.is())
+ GetNumberFormatter();
+ if(xNumFmtAgg.is())
+ {
+ const uno::Type& rProvType = ::getCppuType((Reference<XTypeProvider>*) 0);
+ Any aNumProv = xNumFmtAgg->queryAggregation(rProvType);
+ if(aNumProv.getValueType() == rProvType)
+ {
+ Reference<XTypeProvider> xNumProv =
+ *(Reference<XTypeProvider>*)aNumProv.getValue();
+ aNumTypes = xNumProv->getTypes();
+ }
+ }
+ long nIndex = aBaseTypes.getLength();
+ // don't forget the ::com::sun::star::lang::XMultiServiceFactory
+ aBaseTypes.realloc(aBaseTypes.getLength() + aTextTypes.getLength() + aNumTypes.getLength() + 1);
+ uno::Type* pBaseTypes = aBaseTypes.getArray();
+ const uno::Type* pTextTypes = aTextTypes.getConstArray();
+ long nPos;
+ for(nPos = 0; nPos < aTextTypes.getLength(); nPos++)
+ {
+ pBaseTypes[nIndex++] = pTextTypes[nPos];
+ }
+ const uno::Type* pNumTypes = aNumTypes.getConstArray();
+ for(nPos = 0; nPos < aNumTypes.getLength(); nPos++)
+ {
+ pBaseTypes[nIndex++] = pNumTypes[nPos];
+ }
+ pBaseTypes[nIndex++] = ::getCppuType((Reference<lang::XMultiServiceFactory>*)0);
+ return aBaseTypes;
+}
+/*-- 18.12.98 11:52:59---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXTextDocument::SwXTextDocument(SwDocShell* pShell) :
+ SfxBaseModel(pShell),
+ aPropSet(aSwMapProvider.GetPropertyMap(PROPERTY_MAP_TEXT_DOCUMENT)),
+ pDocShell(pShell),
+ bObjectValid(pShell != 0),
+ pxXTextTables(0),
+ pxXTextFrames(0),
+ pxXGraphicObjects(0),
+ pxXEmbeddedObjects(0),
+ pxXTextSections(0),
+ pxXBookmarks(0),
+ pxXTextFieldTypes(0),
+ pxXTextFieldMasters(0),
+ pxXFootnotes(0),
+ pxXEndnotes(0),
+ pxXFootnoteSettings(0),
+ pxXEndnoteSettings(0),
+ pxXDocumentIndexes(0),
+ pxXStyleFamilies(0),
+ pxXChapterNumbering(0),
+ pxXLineNumberingProperties(0),
+ pDrawPage(0),
+ pxXDrawPage(0),
+ pxXReferenceMarks(0),
+ pxLinkTargetSupplier(0)
+// pxXRedlines(0)
+{
+}
+/*-- 18.12.98 11:53:00---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXTextDocument::~SwXTextDocument()
+{
+ InitNewDoc();
+ if(xNumFmtAgg.is())
+ {
+ Reference< XInterface > x0;
+ xNumFmtAgg->setDelegator(x0);
+ xNumFmtAgg = 0;
+ }
+ if(pxLinkTargetSupplier)
+ {
+ container::XNameAccess* pAccess = (*pxLinkTargetSupplier).get();
+ ((SwXLinkTargetSupplier*)pAccess)->Invalidate();
+ delete pAccess;
+ }
+}
+/*-- 18.12.98 11:55:08---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+/* -----------------18.12.98 12:49-------------------
+ *
+ * --------------------------------------------------*/
+void SwXTextDocument::GetNumberFormatter()
+{
+ if(IsValid())
+ {
+ if(!xNumFmtAgg.is())
+ {
+ {
+ SvNumberFormatsSupplierObj* pNumFmt = new SvNumberFormatsSupplierObj(
+ pDocShell->GetDoc()->GetNumberFormatter( sal_True ));
+ Reference< util::XNumberFormatsSupplier > xTmp = pNumFmt;
+ xNumFmtAgg = Reference< XAggregation >(xTmp, UNO_QUERY);
+ }
+ if(xNumFmtAgg.is())
+ xNumFmtAgg->setDelegator((cppu::OWeakObject*)(SwXTextDocumentBaseClass*)this);
+ }
+ else
+ {
+ const uno::Type& rTunnelType = ::getCppuType((Reference< XUnoTunnel > *)0);
+ Any aNumTunnel = xNumFmtAgg->queryAggregation(rTunnelType);
+ SvNumberFormatsSupplierObj* pNumFmt = 0;
+ if(aNumTunnel.getValueType() == rTunnelType)
+ {
+ Reference< XUnoTunnel > xNumTunnel = *(Reference< XUnoTunnel >*)
+ aNumTunnel.getValue();
+ pNumFmt = (SvNumberFormatsSupplierObj*)
+ xNumTunnel->getSomething(SvNumberFormatsSupplierObj::getUnoTunnelId());
+
+ }
+ DBG_ASSERT(pNumFmt, "No number formatter available");
+ if(!pNumFmt->GetNumberFormatter())
+ pNumFmt->SetNumberFormatter(pDocShell->GetDoc()->GetNumberFormatter( sal_True ));
+ }
+ }
+}
+/*-- 18.12.98 11:55:11---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< text::XText > SwXTextDocument::getText(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!xBodyText.is())
+ {
+ pBodyText = new SwXBodyText(pDocShell->GetDoc());
+ xBodyText = pBodyText;
+ }
+ return xBodyText;
+}
+/*-- 18.12.98 11:55:11---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::reformat(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+}
+/*-- 18.12.98 11:55:16---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::lockControllers(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(IsValid())
+ {
+ UnoActionContext* pContext = new UnoActionContext(pDocShell->GetDoc());
+ aActionArr.Insert(pContext, 0);
+ }
+ else
+ throw RuntimeException();
+}
+/*-- 18.12.98 11:55:16---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::unlockControllers(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(aActionArr.Count())
+ {
+ UnoActionContext* pContext = aActionArr.GetObject(0);
+ aActionArr.Remove(0);
+ delete pContext;
+ }
+ else
+ throw RuntimeException();
+}
+/*-- 18.12.98 11:55:17---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextDocument::hasControllersLocked(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ return aActionArr.Count() > 0;
+}
+/*-- 18.12.98 13:12:23---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< frame::XController > SwXTextDocument::getCurrentController(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ return SfxBaseModel::getCurrentController();
+}
+/*-- 18.12.98 13:12:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::setCurrentController(const Reference< frame::XController > & xController)
+ throw( container::NoSuchElementException, RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ SfxBaseModel::setCurrentController(xController);
+}
+/* -----------------27.01.99 11:48-------------------
+ *
+ * --------------------------------------------------*/
+Reference< XInterface > SwXTextDocument::getCurrentSelection() throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Reference< XInterface > xRef;
+ if(IsValid())
+ {
+
+ const TypeId aTypeId = TYPE(SwView);
+ SwView* pView = (SwView*)SfxViewShell::GetFirst(&aTypeId);
+ while(pView && pView->GetObjectShell() != pDocShell)
+ {
+ pView = (SwView*)SfxViewShell::GetNext(*pView, &aTypeId);
+ }
+ if(pView)
+ {
+ Any aRef = pView->GetUNOObject()->getSelection();
+ xRef = *(Reference< XInterface > *)aRef.getValue();
+ }
+ }
+ return xRef;
+}
+
+/*-- 18.12.98 13:12:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextDocument::attachResource(const OUString& aURL, const Sequence< beans::PropertyValue >& aArgs)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ return SfxBaseModel::attachResource(aURL, aArgs);
+}
+/*-- 18.12.98 13:12:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+OUString SwXTextDocument::getURL(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ return SfxBaseModel::getURL();
+}
+/*-- 18.12.98 13:12:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Sequence< beans::PropertyValue > SwXTextDocument::getArgs(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ return SfxBaseModel::getArgs();
+}
+/*-- 18.12.98 13:12:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::connectController(const Reference< frame::XController > & xController) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ SfxBaseModel::connectController(xController);
+}
+/*-- 18.12.98 13:12:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::disconnectController(const Reference< frame::XController > & xController) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ SfxBaseModel::disconnectController(xController);
+}
+/*-- 18.12.98 13:12:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::dispose(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ SfxBaseModel::dispose();
+}
+/*-- 18.12.98 13:12:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::addEventListener(const Reference< XEventListener > & aListener) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ SfxBaseModel::addEventListener(aListener);
+}
+/*-- 18.12.98 13:12:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::removeEventListener(const Reference< XEventListener > & aListener) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ SfxBaseModel::removeEventListener(aListener);
+}
+
+/*-- 18.12.98 11:55:19---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Sequence< PropertyValues > SwXTextDocument::getLineNumberingRules(void)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+ return Sequence< PropertyValues >();
+ /* eigenartiges interface, muesste ein PropertySet returnen und get...Settings heissen
+ if(IsValid())
+ {
+ if(!pxXLineNumberingProperties)
+ {
+ ((SwXTextDocument*)this)->pxXLineNumberingProperties =
+ new Reference< XLineNumberingProperties > ;
+ (*pxXLineNumberingProperties) = new SwXLineNumberingProperties(pDocShell->GetDoc());
+ }
+ }
+ else
+ throw RuntimeException();
+ return *pxXLineNumberingProperties;*/
+
+}
+/*-- 18.12.98 11:55:20---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::setLineNumberingRules(
+ const Sequence< PropertyValues >& aRules)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+}
+/*-- 18.12.98 11:55:20---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< container::XIndexReplace > SwXTextDocument::getChapterNumberingRules(void)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXChapterNumbering)
+ {
+ pxXChapterNumbering = new Reference< container::XIndexReplace > ;
+ *pxXChapterNumbering = new SwXChapterNumbering(*pDocShell);
+ }
+ return *pxXChapterNumbering;
+}
+/*-- 18.12.98 11:55:21---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< container::XIndexAccess > SwXTextDocument::getFootnotes(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXFootnotes)
+ {
+ ((SwXTextDocument*)this)->pxXFootnotes = new Reference< container::XIndexAccess > ;
+ *pxXFootnotes = new SwXFootnotes(sal_False, pDocShell->GetDoc());
+ }
+ return *pxXFootnotes;
+}
+/*-- 18.12.98 11:55:21---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< XPropertySet > SAL_CALL
+ SwXTextDocument::getFootnoteSettings(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXFootnoteSettings)
+ {
+ ((SwXTextDocument*)this)->pxXFootnoteSettings = new Reference< XPropertySet > ;
+ *pxXFootnoteSettings = new SwXFootnoteProperties(pDocShell->GetDoc());
+ }
+ return *pxXFootnoteSettings;
+}
+/*-- 18.12.98 11:55:21---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< container::XIndexAccess > SwXTextDocument::getEndnotes(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXEndnotes)
+ {
+ ((SwXTextDocument*)this)->pxXEndnotes = new Reference< container::XIndexAccess > ;
+ *pxXEndnotes = new SwXFootnotes(sal_True, pDocShell->GetDoc());
+ }
+ return *pxXEndnotes;
+}
+/*-- 18.12.98 11:55:22---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< XPropertySet > SwXTextDocument::getEndnoteSettings(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXEndnoteSettings)
+ {
+ ((SwXTextDocument*)this)->pxXEndnoteSettings = new Reference< XPropertySet > ;
+ *pxXEndnoteSettings = new SwXEndnoteProperties(pDocShell->GetDoc());
+ }
+ return *pxXEndnoteSettings;
+}
+/*-- 18.12.98 11:55:22---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< util::XReplaceDescriptor > SwXTextDocument::createReplaceDescriptor(void)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Reference< util::XReplaceDescriptor > xRet = new SwXTextSearch;
+ return xRet;
+}
+/* -----------------26.02.99 15:52-------------------
+ *
+ * --------------------------------------------------*/
+SwUnoCrsr* SwXTextDocument::CreateCursorForSearch(Reference< text::XTextCursor > & xCrsr)
+{
+ getText();
+ text::XText* pText = xBodyText.get();
+ SwXBodyText* pBText = (SwXBodyText*)pText;
+ xCrsr = pBText->CreateTextCursor(sal_True);
+
+ Reference<XUnoTunnel> xRangeTunnel( xCrsr, UNO_QUERY);
+ SwXTextCursor* pxUnoCrsr = 0;
+ if(xRangeTunnel.is())
+ {
+ pxUnoCrsr = (SwXTextCursor*)xRangeTunnel->getSomething(
+ SwXTextCursor::getUnoTunnelId());
+ }
+
+ sal_uInt32 nResult = 0;
+ SwUnoCrsr* pUnoCrsr = pxUnoCrsr->GetCrsr();
+ pUnoCrsr->SetRemainInSection(sal_False);
+ return pUnoCrsr;
+}
+
+/*-- 18.12.98 11:55:22---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Int32 SwXTextDocument::replaceAll(const Reference< util::XSearchDescriptor > & xDesc)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Reference< XUnoTunnel > xDescTunnel(xDesc, UNO_QUERY);
+ if(!IsValid() || !xDescTunnel.is() || !xDescTunnel->getSomething(SwXTextSearch::getUnoTunnelId()))
+ throw RuntimeException();
+
+ Reference< text::XTextCursor > xCrsr;
+ SwUnoCrsr* pUnoCrsr = CreateCursorForSearch(xCrsr);
+
+ const SwXTextSearch* pSearch = (const SwXTextSearch*)
+ xDescTunnel->getSomething(SwXTextSearch::getUnoTunnelId());
+
+ SearchParam aSrchParam(pSearch->sSearchText);
+ aSrchParam.SetReplaceStr(pSearch->sReplaceText);
+ sal_Bool bBackward = sal_False;
+ int eRanges(FND_IN_BODY|FND_IN_SELALL);
+//bInSel: 1; // wie geht das?
+ //TODO: pSearch->bStyles!
+ aSrchParam.SetCaseSensitive(pSearch->bCase);
+
+// inSelection??
+// aSrchParam.SetSrchInSelection(TypeConversion::toBOOL(aVal));
+ aSrchParam.SetSrchWordOnly(pSearch->bWord);
+ aSrchParam.SetSrchRelaxed(pSearch->bLevRelax);
+ aSrchParam.SetLEVOther(pSearch->nLevExchange);
+ aSrchParam.SetLEVShorter(pSearch->nLevRemove);
+ aSrchParam.SetLEVLonger(pSearch->nLevAdd);
+ if(pSearch->bExpr)
+ aSrchParam.SetSrchType(SearchParam::SRCH_REGEXP);
+ // similarity setzt sich gegen RegExp durch!
+ if(pSearch->bSimilarity)
+ aSrchParam.SetSrchType(SearchParam::SRCH_LEVDIST);
+ SwDocPositions eStart = pSearch->bBack ? DOCPOS_END : DOCPOS_START;
+ SwDocPositions eEnd = pSearch->bBack ? DOCPOS_START : DOCPOS_END;
+
+ // Suche soll ueberall stattfinden
+ pUnoCrsr->SetRemainInSection(sal_False);
+ sal_uInt32 nResult;
+ //try attribute search first
+ if(pSearch->HasSearchAttributes()||pSearch->HasReplaceAttributes())
+ {
+ SfxItemSet aSearch(pDocShell->GetDoc()->GetAttrPool(),
+ RES_CHRATR_BEGIN, RES_CHRATR_END-1,
+ RES_PARATR_BEGIN, RES_PARATR_END-1,
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1,
+ 0);
+ SfxItemSet aReplace(pDocShell->GetDoc()->GetAttrPool(),
+ RES_CHRATR_BEGIN, RES_CHRATR_END-1,
+ RES_PARATR_BEGIN, RES_PARATR_END-1,
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1,
+ 0);
+ pSearch->FillSearchItemSet(aSearch);
+ pSearch->FillReplaceItemSet(aReplace);
+ nResult = (sal_Int32)pUnoCrsr->Find( aSearch, !pSearch->bStyles,
+ eStart, eEnd,
+ (FindRanges)eRanges,
+ pSearch->sSearchText.Len() ? &aSrchParam : 0,
+ &aReplace );
+ }
+ else if(pSearch->bStyles)
+ {
+ SwTxtFmtColl *pSearchColl = lcl_GetParaStyle(pSearch->sSearchText, pUnoCrsr->GetDoc());
+ SwTxtFmtColl *pReplaceColl = lcl_GetParaStyle(pSearch->sReplaceText, pUnoCrsr->GetDoc());;
+
+ nResult = pUnoCrsr->Find( *pSearchColl,
+ eStart, eEnd,
+ (FindRanges)eRanges, pReplaceColl );
+
+ }
+ else
+ {
+ nResult = pUnoCrsr->Find( aSrchParam,
+ eStart, eEnd,
+ (FindRanges)eRanges,
+//int bReplace =
+ sal_True );
+ }
+ return (sal_Int32)nResult;
+
+}
+/*-- 18.12.98 11:55:22---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< util::XSearchDescriptor > SwXTextDocument::createSearchDescriptor(void)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Reference< util::XSearchDescriptor > xRet = new SwXTextSearch;
+ return xRet;
+
+}
+/* -----------------26.02.99 16:08-------------------
+ * wird fuer findAll/First/Next verwendet
+ * --------------------------------------------------*/
+SwUnoCrsr* SwXTextDocument::FindAny(const Reference< util::XSearchDescriptor > & xDesc,
+ Reference< text::XTextCursor > & xCrsr, sal_Bool bAll,
+ sal_Int32& nResult,
+ Reference< XInterface > xLastResult)
+{
+ Reference< XUnoTunnel > xDescTunnel(xDesc, UNO_QUERY);
+ if(!IsValid() || !xDescTunnel.is() || !xDescTunnel->getSomething(SwXTextSearch::getUnoTunnelId()))
+ return 0;
+
+ SwUnoCrsr* pUnoCrsr = CreateCursorForSearch(xCrsr);
+ const SwXTextSearch* pSearch = (const SwXTextSearch*)
+ xDescTunnel->getSomething(SwXTextSearch::getUnoTunnelId());
+
+ sal_Bool bParentInExtra = sal_False;
+ if(xLastResult.is())
+ {
+ Reference<XUnoTunnel> xCursorTunnel( xLastResult, UNO_QUERY);
+ SwXTextCursor* pPosCrsr = 0;
+ if(xCursorTunnel.is())
+ {
+ pPosCrsr = (SwXTextCursor*)xCursorTunnel->getSomething(
+ SwXTextCursor::getUnoTunnelId());
+ }
+ SwUnoCrsr* pCrsr = pPosCrsr ? pPosCrsr->GetCrsr() : 0;
+ if(pCrsr)
+ {
+ *pUnoCrsr->GetPoint() = *pCrsr->End();
+ pUnoCrsr->DeleteMark();
+ }
+ else
+ {
+ SwXTextRange* pRange = 0;
+ if(xCursorTunnel.is())
+ {
+ pRange = (SwXTextRange*)xCursorTunnel->getSomething(
+ SwXTextRange::getUnoTunnelId());
+ }
+ if(!pRange)
+ return 0;
+ pRange->GetPositions(*pUnoCrsr);
+ if(pUnoCrsr->HasMark())
+ {
+ if(*pUnoCrsr->GetPoint() < *pUnoCrsr->GetMark())
+ pUnoCrsr->Exchange();
+ pUnoCrsr->DeleteMark();
+ }
+ }
+ const SwNode* pRangeNode = pUnoCrsr->GetNode();
+ const SwStartNode* pTmp = pRangeNode->FindStartNode();
+
+ while(pTmp->IsSectionNode())
+ {
+ pTmp = pTmp->FindStartNode();
+ }
+ bParentInExtra = SwNormalStartNode != pTmp->GetStartNodeType();
+ }
+
+ SearchParam aSrchParam(pSearch->sSearchText);
+ sal_Bool bBackward = sal_False;
+/*
+ * folgende Kombinationen sind erlaubt:
+ * - suche einen im Body: -> FND_IN_BODY
+ * - suche alle im Body: -> FND_IN_BODYONLY | FND_IN_SELALL
+ * - suche in Selectionen: einen / alle -> FND_IN_SEL [ | FND_IN_SELALL ]
+ * - suche im nicht Body: einen / alle -> FND_IN_OTHER [ | FND_IN_SELALL ]
+ * - suche ueberall alle: -> FND_IN_SELALL
+ */
+ int eRanges(FND_IN_BODY);
+ if(bParentInExtra)
+ eRanges = FND_IN_OTHER;
+//bInSel: 1; // wie geht das?
+ aSrchParam.SetCaseSensitive(pSearch->bCase);
+
+ if(bAll) //immer - ueberall?
+ eRanges = FND_IN_SELALL;
+// inSelection??
+// aSrchParam.SetSrchInSelection(TypeConversion::toBOOL(aVal));
+ aSrchParam.SetSrchWordOnly(pSearch->bWord);
+ aSrchParam.SetSrchRelaxed(pSearch->bLevRelax);
+ aSrchParam.SetLEVOther(pSearch->nLevExchange);
+ aSrchParam.SetLEVShorter(pSearch->nLevRemove);
+ aSrchParam.SetLEVLonger(pSearch->nLevAdd);
+ if(pSearch->bExpr)
+ aSrchParam.SetSrchType(SearchParam::SRCH_REGEXP);
+ // similarity setzt sich gegen RegExp durch!
+ if(pSearch->bSimilarity)
+ aSrchParam.SetSrchType(SearchParam::SRCH_LEVDIST);
+ SwDocPositions eStart = !bAll ? DOCPOS_CURR : pSearch->bBack ? DOCPOS_END : DOCPOS_START;
+ SwDocPositions eEnd = pSearch->bBack ? DOCPOS_START : DOCPOS_END;
+
+ nResult = 0;
+ sal_uInt16 nSearchProc = 0;
+ while(nSearchProc < 2)
+ {
+ //try attribute search first
+ if(pSearch->HasSearchAttributes())
+ {
+ SfxItemSet aSearch(pDocShell->GetDoc()->GetAttrPool(),
+ RES_CHRATR_BEGIN, RES_CHRATR_END-1,
+ RES_PARATR_BEGIN, RES_PARATR_END-1,
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1,
+ RES_TXTATR_INETFMT, RES_TXTATR_INETFMT,
+ 0);
+ pSearch->FillSearchItemSet(aSearch);
+ nResult = (sal_Int32)pUnoCrsr->Find( aSearch, !pSearch->bStyles,
+ eStart, eEnd,
+ (FindRanges)eRanges,
+ pSearch->sSearchText.Len() ? &aSrchParam : 0,
+ 0 );
+ }
+ else if(pSearch->bStyles)
+ {
+ SwTxtFmtColl *pSearchColl = lcl_GetParaStyle(pSearch->sSearchText, pUnoCrsr->GetDoc());
+ //pSearch->sReplaceText
+ SwTxtFmtColl *pReplaceColl = 0;
+
+ nResult = (sal_Int32)pUnoCrsr->Find( *pSearchColl,
+ eStart, eEnd,
+ (FindRanges)eRanges, pReplaceColl );
+ }
+ else
+ {
+ nResult = (sal_Int32)pUnoCrsr->Find( aSrchParam,
+ eStart, eEnd,
+ (FindRanges)eRanges,
+ /*int bReplace =*/sal_False );
+ }
+ nSearchProc++;
+ if(nResult || (eRanges&(FND_IN_SELALL|FND_IN_OTHER)))
+ break;
+ //second step - find in other
+ eRanges = FND_IN_OTHER;
+ }
+ return pUnoCrsr;
+}
+/*-- 18.12.98 11:55:23---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< container::XIndexAccess >
+ SwXTextDocument::findAll(const Reference< util::XSearchDescriptor > & xDesc)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Reference< XInterface > xTmp;
+ sal_Int32 nResult = 0;
+ Reference< text::XTextCursor > xCrsr;
+ SwUnoCrsr* pResultCrsr = FindAny(xDesc, xCrsr, sal_True, nResult, xTmp);
+ if(!pResultCrsr)
+ throw RuntimeException();
+ Reference< container::XIndexAccess > xRet;
+ if(nResult)
+ xRet = new SwXTextRanges(pResultCrsr);
+ else
+ xRet = new SwXTextRanges();
+ return xRet;
+}
+/*-- 18.12.98 11:55:23---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< XInterface > SwXTextDocument::findFirst(const Reference< util::XSearchDescriptor > & xDesc)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Reference< XInterface > xTmp;
+ sal_Int32 nResult = 0;
+ Reference< text::XTextCursor > xCrsr;
+ SwUnoCrsr* pResultCrsr = FindAny(xDesc, xCrsr, sal_False, nResult, xTmp);
+ if(!pResultCrsr)
+ throw RuntimeException();
+ Reference< XInterface > xRet;
+ if(nResult)
+ {
+ Reference< text::XTextRange > xTempRange = CreateTextRangeFromPosition(
+ pDocShell->GetDoc(),
+ *pResultCrsr->GetPoint(),
+ pResultCrsr->GetMark());
+ xRet = *new SwXTextCursor(xTempRange->getText(), pResultCrsr);
+ }
+ return xRet;
+}
+/*-- 18.12.98 11:55:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< XInterface > SwXTextDocument::findNext(const Reference< XInterface > & xStartAt,
+ const Reference< util::XSearchDescriptor > & xDesc)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Reference< XInterface > xTmp;
+ sal_Int32 nResult = 0;
+ Reference< text::XTextCursor > xCrsr;
+ if(!xStartAt.is())
+ throw RuntimeException();
+ SwUnoCrsr* pResultCrsr = FindAny(xDesc, xCrsr, sal_False, nResult, xStartAt);
+ if(!pResultCrsr)
+ throw RuntimeException();
+ Reference< XInterface > xRet;
+ if(nResult)
+ {
+ Reference< text::XTextRange > xTempRange = CreateTextRangeFromPosition(
+ pDocShell->GetDoc(),
+ *pResultCrsr->GetPoint(),
+ pResultCrsr->GetMark());
+
+ xRet = *new SwXTextCursor(xTempRange->getText(), pResultCrsr);
+ }
+ return xRet;
+}
+/*-- 18.12.98 11:55:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Sequence< beans::PropertyValue > SwXTextDocument::getPagePrintSettings(void)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Sequence< beans::PropertyValue > aSeq(9);
+ if(IsValid())
+ {
+ beans::PropertyValue* pArray = aSeq.getArray();
+ SwPagePreViewPrtData aData;
+ const SwPagePreViewPrtData* pData = pDocShell->GetDoc()->GetPreViewPrtData();
+ if(pData)
+ aData = *pData;
+ Any aVal;
+ aVal <<= (sal_Int16)aData.GetRow();
+ pArray[0] = beans::PropertyValue(C2U("PageRows"), -1, aVal, PropertyState_DIRECT_VALUE);
+ aVal <<= (sal_Int16)aData.GetCol();
+ pArray[1] = beans::PropertyValue(C2U("PageColumns"), -1, aVal, PropertyState_DIRECT_VALUE);
+ aVal <<= (sal_Int32)TWIP_TO_MM100(aData.GetLeftSpace());
+ pArray[2] = beans::PropertyValue(C2U("LeftMargin"), -1, aVal, PropertyState_DIRECT_VALUE);
+ aVal <<= (sal_Int32)TWIP_TO_MM100(aData.GetRightSpace());
+ pArray[3] = beans::PropertyValue(C2U("RightMargin"), -1, aVal, PropertyState_DIRECT_VALUE);
+ aVal <<= (sal_Int32)TWIP_TO_MM100(aData.GetTopSpace());
+ pArray[4] = beans::PropertyValue(C2U("TopMargin"), -1, aVal, PropertyState_DIRECT_VALUE);
+ aVal <<= (sal_Int32)TWIP_TO_MM100(aData.GetBottomSpace());
+ pArray[5] = beans::PropertyValue(C2U("BottomMargin"), -1, aVal, PropertyState_DIRECT_VALUE);
+ aVal <<= (sal_Int32)TWIP_TO_MM100(aData.GetHorzSpace());
+ pArray[6] = beans::PropertyValue(C2U("HoriMargin"), -1, aVal, PropertyState_DIRECT_VALUE);
+ aVal <<= (sal_Int32)TWIP_TO_MM100(aData.GetVertSpace());
+ pArray[7] = beans::PropertyValue(C2U("VertMargin"), -1, aVal, PropertyState_DIRECT_VALUE);
+ BOOL bTemp = aData.GetLandscape();
+ aVal.setValue(&bTemp, ::getCppuBooleanType());
+ pArray[8] = beans::PropertyValue(C2U("IsLandscape"), -1, aVal, PropertyState_DIRECT_VALUE);
+ }
+ else
+ throw RuntimeException();
+ return aSeq;
+}
+/* -----------------24.02.99 10:57-------------------
+ *
+ * --------------------------------------------------*/
+sal_uInt32 lcl_Any_To_ULONG(const Any& rValue, sal_Bool& bException)
+{
+ bException = sal_False;
+ TypeClass eType = rValue.getValueType().getTypeClass();
+
+ sal_uInt32 nRet = 0;
+ if( eType == TypeClass_LONG )
+ {
+ sal_Int32 nVal;
+ rValue >>= nVal;
+ if(nVal >=0 )
+ nRet = (sal_uInt32)nVal;
+ }
+ else if( eType == TypeClass_UNSIGNED_SHORT )
+ {
+ sal_uInt16 nVal;
+ rValue >>= nVal;
+ nRet = nVal;
+ }
+ else if( eType == TypeClass_SHORT )
+ {
+ sal_Int16 nVal;
+ rValue >>= nVal;
+ if(nVal >=0)
+ nRet = (sal_uInt32)nVal;
+ }
+ else if( eType == TypeClass_BYTE )
+ {
+ BYTE nVal;
+ rValue >>= nVal;
+ nRet = nVal;
+ }
+ else if( eType == TypeClass_UNSIGNED_LONG )
+ rValue >>= nRet;
+ else
+ bException = sal_True;
+
+ return nRet;
+}
+/*-- 18.12.98 11:55:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::setPagePrintSettings(const Sequence< beans::PropertyValue >& aSettings)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(IsValid())
+ {
+ SwPagePreViewPrtData aData;
+ //falls nur einige Properties kommen, dann die akt. Einstellungen benutzen
+ const SwPagePreViewPrtData* pData = pDocShell->GetDoc()->GetPreViewPrtData();
+ if(pData)
+ aData = *pData;
+ const beans::PropertyValue* pProperties = aSettings.getConstArray();
+ int nCount = aSettings.getLength();
+ for(int i = 0; i < nCount; i++)
+ {
+ String sName = pProperties[i].Name;
+ const Any& rVal = pProperties[i].Value;
+ sal_Bool bException;
+ sal_uInt32 nVal = lcl_Any_To_ULONG(rVal, bException);
+ if( COMPARE_EQUAL == sName.CompareToAscii("PageRows" ) )
+ {
+ if(!nVal)
+ throw RuntimeException();
+ aData.SetRow(nVal);
+ }
+ else if(COMPARE_EQUAL == sName.CompareToAscii("PageColumns"))
+ {
+ if(!nVal)
+ throw RuntimeException();
+ aData.SetCol(nVal);
+ }
+ else if(COMPARE_EQUAL == sName.CompareToAscii("LeftMargin"))
+ {
+ aData.SetLeftSpace(MM100_TO_TWIP(nVal));
+ }
+ else if(COMPARE_EQUAL == sName.CompareToAscii("RightMargin"))
+ {
+ aData.SetRightSpace(MM100_TO_TWIP(nVal));
+ }
+ else if(COMPARE_EQUAL == sName.CompareToAscii("TopMargin"))
+ {
+ aData.SetTopSpace(MM100_TO_TWIP(nVal));
+ }
+ else if(COMPARE_EQUAL == sName.CompareToAscii("BottomMargin"))
+ {
+ aData.SetBottomSpace(MM100_TO_TWIP(nVal));
+ }
+ else if(COMPARE_EQUAL == sName.CompareToAscii("HoriMargin"))
+ {
+ aData.SetHorzSpace(MM100_TO_TWIP(nVal));
+ }
+ else if(COMPARE_EQUAL == sName.CompareToAscii("VertMargin"))
+ {
+ aData.SetVertSpace(MM100_TO_TWIP(nVal));
+ }
+ else if(COMPARE_EQUAL == sName.CompareToAscii("IsLandscape"))
+ {
+ bException = (::getBooleanCppuType() != rVal.getValueType());
+ aData.SetLandscape(*(sal_Bool*)rVal.getValue());
+ }
+ else
+ bException = sal_True;
+ if(bException)
+ throw RuntimeException();
+ }
+ pDocShell->GetDoc()->SetPreViewPrtData(&aData);
+ }
+ else
+ throw RuntimeException();
+}
+/*-- 18.12.98 11:55:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::printPages(const Sequence< beans::PropertyValue >& xOptions)
+ throw( IllegalArgumentException, RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(IsValid())
+ {
+ SfxViewFrame* pFrame = SFX_APP()->CreateViewFrame( *pDocShell, 7, sal_True );
+ SfxRequest aReq(FN_PRINT_PAGEPREVIEW, SFX_CALLMODE_SYNCHRON,
+ pDocShell->GetDoc()->GetAttrPool());
+ aReq.AppendItem(SfxBoolItem(FN_PRINT_PAGEPREVIEW, sal_True));
+
+ OUString sFileName(C2U( UNO_NAME_FILE_NAME ));
+ OUString sCopyCount(C2U(UNO_NAME_COPY_COUNT ));
+ OUString sCollate(C2U( UNO_NAME_COLLATE ));
+ OUString sSort(C2U( UNO_NAME_SORT ));
+ OUString sPages(C2U( UNO_NAME_PAGES ));
+
+ for ( int n = 0; n < xOptions.getLength(); ++n )
+ {
+ // get Property-Value from options
+ const beans::PropertyValue &rProp = xOptions.getConstArray()[n];
+ Any aValue( rProp.Value );
+
+ // FileName-Property?
+ if ( rProp.Name == sFileName )
+ {
+ if ( rProp.Value.getValueType() == ::getCppuType((const OUString*)0))
+ aReq.AppendItem(SfxStringItem( SID_FILE_NAME, *(const OUString*)rProp.Value.getValue()));
+ else if ( rProp.Value.getValueType() != ::getVoidCppuType() )
+ throw IllegalArgumentException();
+ }
+
+ // CopyCount-Property
+ else if ( rProp.Name == sCopyCount )
+ {
+ sal_Int32 nCopies;
+ aValue >>= nCopies;
+ aReq.AppendItem(SfxInt16Item( SID_PRINT_COPIES, nCopies ) );
+ }
+
+ // Collate-Property
+ else if ( rProp.Name == sCollate )
+ {
+ if ( rProp.Value.getValueType() == ::getBooleanCppuType())
+
+ aReq.AppendItem(SfxBoolItem( SID_PRINT_COLLATE, *(sal_Bool*)rProp.Value.getValue() ) );
+ else
+ throw IllegalArgumentException();
+ }
+
+ // Sort-Property
+ else if ( rProp.Name == sSort )
+ {
+ if ( rProp.Value.getValueType() == ::getBooleanCppuType() )
+ aReq.AppendItem(SfxBoolItem( SID_PRINT_SORT, *(sal_Bool*)rProp.Value.getValue() ) );
+ else
+ throw IllegalArgumentException();
+ }
+
+ // Pages-Property
+ else if ( rProp.Name == sPages )
+ {
+ if ( rProp.Value.getValueType() == ::getCppuType((const OUString*)0) )
+ aReq.AppendItem( SfxStringItem( SID_PRINT_PAGES, *(OUString*)rProp.Value.getValue() ) );
+ else
+ throw IllegalArgumentException();
+ }
+ }
+
+
+ pFrame->GetViewShell()->ExecuteSlot(aReq);
+ // Frame schliessen
+ pFrame->DoClose();
+
+ }
+ else
+ throw RuntimeException();
+}
+/*-- 18.12.98 11:55:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< container::XNameAccess > SwXTextDocument::getReferenceMarks(void)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXReferenceMarks)
+ {
+ ((SwXTextDocument*)this)->pxXReferenceMarks = new Reference< container::XNameAccess > ;
+ *pxXReferenceMarks = new SwXReferenceMarks(pDocShell->GetDoc());
+ }
+ return *pxXReferenceMarks;
+}
+/* -----------------21.12.98 10:20-------------------
+ *
+ * --------------------------------------------------*/
+Reference< container::XEnumerationAccess > SwXTextDocument::getTextFields(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXTextFieldTypes)
+ {
+ ((SwXTextDocument*)this)->pxXTextFieldTypes = new Reference< container::XEnumerationAccess > ;
+ *pxXTextFieldTypes = new SwXTextFieldTypes(pDocShell->GetDoc());
+ }
+ return *pxXTextFieldTypes;
+}
+/*-- 21.12.98 10:21:12---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< container::XNameAccess > SwXTextDocument::getTextFieldMasters(void)
+ throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXTextFieldMasters)
+ {
+ ((SwXTextDocument*)this)->pxXTextFieldMasters = new Reference< container::XNameAccess > ;
+ *pxXTextFieldMasters = new SwXTextFieldMasters(pDocShell->GetDoc());
+ }
+ return *pxXTextFieldMasters;
+}
+/*-- 21.12.98 10:21:12---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< container::XNameAccess > SwXTextDocument::getEmbeddedObjects(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXEmbeddedObjects)
+ {
+ ((SwXTextDocument*)this)->pxXEmbeddedObjects = new Reference< container::XNameAccess > ;
+ *pxXEmbeddedObjects = new SwXTextEmbeddedObjects(pDocShell->GetDoc());
+ }
+ return *pxXEmbeddedObjects;
+}
+/*-- 21.12.98 10:21:13---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< container::XNameAccess > SwXTextDocument::getBookmarks(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXBookmarks)
+ {
+ ((SwXTextDocument*)this)->pxXBookmarks = new Reference< container::XNameAccess > ;
+ *pxXBookmarks = new SwXBookmarks(pDocShell->GetDoc());
+ }
+ return *pxXBookmarks;
+}
+/*-- 21.12.98 10:21:13---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< container::XNameAccess > SwXTextDocument::getTextSections(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXTextSections)
+ {
+ ((SwXTextDocument*)this)->pxXTextSections = new Reference< container::XNameAccess > ;
+ *pxXTextSections = new SwXTextSections(pDocShell->GetDoc());
+ }
+ return *pxXTextSections;
+}
+/*-- 21.12.98 10:21:13---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< container::XNameAccess > SwXTextDocument::getTextTables(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXTextTables)
+ {
+ ((SwXTextDocument*)this)->pxXTextTables = new Reference< container::XNameAccess > ;
+ *pxXTextTables = new SwXTextTables(pDocShell->GetDoc());
+ }
+ return *pxXTextTables;
+}
+/*-- 21.12.98 10:21:13---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< container::XNameAccess > SwXTextDocument::getGraphicObjects(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXGraphicObjects)
+ {
+ ((SwXTextDocument*)this)->pxXGraphicObjects = new Reference< container::XNameAccess > ;
+ *pxXGraphicObjects = new SwXTextGraphicObjects(pDocShell->GetDoc());
+ }
+ return *pxXGraphicObjects;
+}
+/*-- 21.12.98 10:21:14---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< container::XNameAccess > SwXTextDocument::getTextFrames(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXTextFrames)
+ {
+ ((SwXTextDocument*)this)->pxXTextFrames = new Reference< container::XNameAccess > ;
+ *pxXTextFrames = new SwXTextFrames(pDocShell->GetDoc());
+ }
+ return *pxXTextFrames;
+}
+/* -----------------21.12.98 10:56-------------------
+ *
+ * --------------------------------------------------*/
+Reference< container::XNameAccess > SwXTextDocument::getStyleFamilies(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXStyleFamilies)
+ {
+ ((SwXTextDocument*)this)->pxXStyleFamilies = new Reference< container::XNameAccess > ;
+ *pxXStyleFamilies = new SwXStyleFamilies(*pDocShell);
+ }
+ return *pxXStyleFamilies;
+}
+/*-- 22.01.99 10:18:03---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< drawing::XDrawPage > SwXTextDocument::getDrawPage(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXDrawPage)
+ {
+ ((SwXTextDocument*)this)->pxXDrawPage = new Reference< drawing::XDrawPage > ;
+ ((SwXTextDocument*)this)->pDrawPage = new SwXDrawPage(pDocShell->GetDoc());
+ Reference< drawing::XShapes > xTmp = pDrawPage;
+ *pxXDrawPage = Reference< drawing::XDrawPage>(xTmp, UNO_QUERY);
+ }
+ return *pxXDrawPage;
+}
+/* -----------------07.04.99 10:11-------------------
+ *
+ * --------------------------------------------------*/
+SwXDrawPage* SwXTextDocument::GetDrawPage()
+{
+ if(!IsValid())
+ return 0;
+ if(!pDrawPage)
+ getDrawPage();
+ return pDrawPage;
+}
+/*-- 18.12.98 11:55:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::Invalidate()
+{
+ bObjectValid = sal_False;
+ if(xNumFmtAgg.is())
+ {
+ const uno::Type& rTunnelType = ::getCppuType((Reference< XUnoTunnel > *)0);
+ Any aNumTunnel = xNumFmtAgg->queryAggregation(rTunnelType);
+ SvNumberFormatsSupplierObj* pNumFmt = 0;
+ if(aNumTunnel.getValueType() == rTunnelType)
+ {
+ Reference< XUnoTunnel > xNumTunnel = *(Reference< XUnoTunnel >*)
+ aNumTunnel.getValue();
+ pNumFmt = (SvNumberFormatsSupplierObj*)
+ xNumTunnel->getSomething(SvNumberFormatsSupplierObj::getUnoTunnelId());
+
+ }
+ DBG_ASSERT(pNumFmt, "No number formatter available");
+ pNumFmt->SetNumberFormatter(0);
+ }
+ InitNewDoc();
+ pDocShell = 0;
+}
+/* -----------------------------13.07.00 15:59--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwXTextDocument::Reactivate(SwDocShell* pNewDocShell)
+{
+ if(pDocShell && pDocShell != pNewDocShell)
+ Invalidate();
+ pDocShell = pNewDocShell;
+ bObjectValid = TRUE;
+}
+/*-- 18.12.98 11:55:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::InitNewDoc()
+{
+ // zunaechst alle Collections invalidieren, dann Referenzen loeschen und Null setzen
+ if(pxXTextTables)
+ {
+ container::XNameAccess* pTbls = pxXTextTables->get();
+ ((SwXTextTables*)pTbls)->Invalidate();
+ delete pxXTextTables;
+ pxXTextTables = 0;
+ }
+
+ if(pxXTextFrames)
+ {
+ container::XNameAccess* pFrms = pxXTextFrames->get();
+ ((SwXTextFrames*)pFrms)->Invalidate();
+ delete pxXTextFrames;
+ pxXTextFrames = 0;
+ }
+
+ if(pxXGraphicObjects)
+ {
+ container::XNameAccess* pFrms = pxXGraphicObjects->get();
+ ((SwXTextGraphicObjects*)pFrms)->Invalidate();
+ delete pxXGraphicObjects;
+ pxXGraphicObjects = 0;
+ }
+
+ if(pxXEmbeddedObjects)
+ {
+ container::XNameAccess* pOLE = pxXEmbeddedObjects->get();
+ ((SwXTextEmbeddedObjects*)pOLE)->Invalidate();
+ delete pxXEmbeddedObjects;
+ pxXEmbeddedObjects = 0;
+ }
+
+ if(xBodyText.is())
+ {
+ xBodyText = 0;
+ pBodyText = 0;
+ }
+
+ if(xNumFmtAgg.is())
+ {
+ const uno::Type& rTunnelType = ::getCppuType((Reference< XUnoTunnel > *)0);
+ Any aNumTunnel = xNumFmtAgg->queryAggregation(rTunnelType);
+ SvNumberFormatsSupplierObj* pNumFmt = 0;
+ if(aNumTunnel.getValueType() == rTunnelType)
+ {
+ Reference< XUnoTunnel > xNumTunnel = *(Reference< XUnoTunnel >*)
+ aNumTunnel.getValue();
+ pNumFmt = (SvNumberFormatsSupplierObj*)
+ xNumTunnel->getSomething(SvNumberFormatsSupplierObj::getUnoTunnelId());
+
+ }
+ DBG_ASSERT(pNumFmt, "No number formatter available");
+ pNumFmt->SetNumberFormatter(0);
+ }
+
+ if(pxXTextFieldTypes)
+ {
+ container::XEnumerationAccess* pT = pxXTextFieldTypes->get();
+ ((SwXTextFieldTypes*)pT)->Invalidate();
+ delete pxXTextFieldTypes;
+ pxXTextFieldTypes = 0;
+ }
+
+ if(pxXTextFieldMasters)
+ {
+ container::XNameAccess* pT = pxXTextFieldMasters->get();
+ ((SwXTextFieldMasters*)pT)->Invalidate();
+ delete pxXTextFieldMasters;
+ pxXTextFieldMasters = 0;
+ }
+
+ if(pxXTextSections)
+ {
+ container::XNameAccess* pSect = pxXTextSections->get();
+ ((SwXTextSections*)pSect)->Invalidate();
+ delete pxXTextSections;
+ pxXTextSections = 0;
+ }
+
+ if(pxXDrawPage)
+ {
+ drawing::XDrawPage* pxPage = pxXDrawPage->get();
+ pDrawPage->Invalidate();
+ delete pxXDrawPage;
+ pxXDrawPage = 0;
+ }
+
+ if(pxXFootnotes)
+ {
+ container::XIndexAccess* pFtn = pxXFootnotes->get();
+ ((SwXFootnotes*)pFtn)->Invalidate();
+ delete pxXFootnotes;
+ pxXFootnotes = 0;
+ }
+
+ if(pxXEndnotes)
+ {
+ container::XIndexAccess* pFtn = pxXEndnotes->get();
+ ((SwXFootnotes*)pFtn)->Invalidate();
+ delete pxXEndnotes;
+ pxXEndnotes = 0;
+ }
+
+ if(pxXDocumentIndexes)
+ {
+ container::XIndexAccess* pIdxs = pxXDocumentIndexes->get();
+ ((SwXDocumentIndexes*)pIdxs)->Invalidate();
+ delete pxXDocumentIndexes;
+ pxXDocumentIndexes = 0;
+ }
+
+ if(pxXStyleFamilies)
+ {
+ container::XNameAccess* pStyles = pxXStyleFamilies->get();
+ ((SwXStyleFamilies*)pStyles)->Invalidate();
+ delete pxXStyleFamilies;
+ pxXStyleFamilies = 0;
+ }
+
+ if(pxXBookmarks)
+ {
+ container::XNameAccess* pBm = pxXBookmarks->get();
+ ((SwXBookmarks*)pBm)->Invalidate();
+ delete pxXBookmarks;
+ pxXBookmarks = 0;
+ }
+
+ if(pxXChapterNumbering)
+ {
+ container::XIndexReplace* pCh = pxXChapterNumbering->get();
+ ((SwXChapterNumbering*)pCh)->Invalidate();
+ delete pxXChapterNumbering;
+ pxXChapterNumbering = 0;
+ }
+
+ if(pxXFootnoteSettings)
+ {
+ XPropertySet* pFntSet = pxXFootnoteSettings->get();
+ ((SwXFootnoteProperties*)pFntSet)->Invalidate();
+ delete pxXFootnoteSettings;
+ pxXFootnoteSettings = 0;
+ }
+
+ if(pxXEndnoteSettings)
+ {
+ XPropertySet* pEndSet = pxXEndnoteSettings->get();
+ ((SwXEndnoteProperties*)pEndSet)->Invalidate();
+ delete pxXEndnoteSettings;
+ pxXEndnoteSettings = 0;
+ }
+
+ if(pxXLineNumberingProperties)
+ {
+ XPropertySet* pLine = pxXLineNumberingProperties->get();
+ ((SwXLineNumberingProperties*)pLine)->Invalidate();
+ delete pxXLineNumberingProperties;
+ pxXLineNumberingProperties = 0;
+ }
+/*
+ delete pxXTextOutlines;
+ pxXTextOutlines = 0;
+ sal_uInt16 nArrCount = aActionArr.Count();
+ while( nArrCount )
+ {
+ UnoActionContext* pContext = aActionArr.GetObject(--nArrCount);
+ pContext->InvalidateDocument();
+ aActionArr.Remove(nArrCount);
+ delete pContext;
+ }
+*/
+ if(pxXReferenceMarks)
+ {
+ container::XNameAccess* pMarks = pxXReferenceMarks->get();
+ ((SwXReferenceMarks*)pMarks)->Invalidate();
+ delete pxXReferenceMarks;
+ pxXReferenceMarks = 0;
+ }
+/*
+ if(pxXRedlines)
+ {
+ XRedlines* pMarks = *pxXRedlines;
+ ((SwXRedlines*)pMarks)->Invalidate();
+ delete pxXRedlines;
+ pxXRedlines = 0;
+ }
+
+
+*/
+}
+
+/*-- 11.03.99 11:51:40---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< XInterface > SwXTextDocument::createInstance(const OUString& rServiceName)
+ throw( Exception, RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ Reference< XInterface > xRet;
+ sal_uInt16 nType = SwXServiceProvider::GetProviderType(rServiceName);
+ if(nType != SW_SERVICE_INVALID)
+ {
+ xRet = SwXServiceProvider::MakeInstance(nType, pDocShell->GetDoc());
+ }
+ else
+ {
+ sal_uInt16 nTokenCount = rServiceName.getTokenCount('.');
+ if(nTokenCount >= 4 &&
+ rServiceName.getToken( 0, '.' ) == C2U("com") &&
+ rServiceName.getToken( 1, '.' ) == C2U("sun") &&
+ rServiceName.getToken( 2, '.' ) == C2U("star"))
+ {
+ OUString sCategory = rServiceName.getToken( 3, '.' );
+ sal_Bool bShape = sCategory == C2U("drawing");
+ if( bShape || sCategory == C2U("form"))
+ {
+ //hier den Draw - Service suchen
+ Reference< XInterface > xTmp = SvxFmMSFactory::createInstance(rServiceName);
+ if(bShape)
+ xRet = *new SwXShape( xTmp );
+ else
+ xRet = xTmp;
+ }
+ }
+ else
+ throw ServiceNotRegisteredException();
+ }
+ return xRet;
+}
+/*-- 11.03.99 11:51:40---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< XInterface > SwXTextDocument::createInstanceWithArguments(
+ const OUString& ServiceSpecifier,
+ const Sequence< Any >& Arguments)
+ throw( Exception, RuntimeException )
+{
+ Reference< 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;
+}
+/*-- 11.03.99 11:51:41---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Sequence< OUString > SwXTextDocument::getAvailableServiceNames(void)
+ throw( RuntimeException )
+{
+ Sequence< OUString > aRet = SvxFmMSFactory::getAvailableServiceNames();
+ Sequence< OUString > aOwn = SwXServiceProvider::GetAllServiceNames();
+ return SvxFmMSFactory::concatServiceNames(aRet, aOwn);
+
+}
+/* -----------------18.03.99 11:36-------------------
+ *
+ * --------------------------------------------------*/
+OUString SwXTextDocument::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXTextDocument");
+}
+/* -----------------18.03.99 11:32-------------------
+ *
+ * --------------------------------------------------*/
+sal_Bool SwXTextDocument::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ sal_Bool bRet = sal_False;
+ if(rServiceName.equals(C2U("com.sun.star.text.TextDocument")))
+ bRet = sal_True;
+ else
+ {
+ Sequence< OUString > aNames = SvxFmMSFactory::getAvailableServiceNames();
+ OUString* pArray = aNames.getArray();
+ for(int i = 0; i < aNames.getLength(); i++)
+ if(pArray[i] == rServiceName)
+ {
+ bRet = sal_True;
+ break;
+ }
+ }
+ return bRet;
+}
+/* -----------------18.03.99 11:32-------------------
+ *
+ * --------------------------------------------------*/
+Sequence< OUString > SwXTextDocument::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet = SvxFmMSFactory::getAvailableServiceNames();
+ aRet.realloc(aRet.getLength() + 1);
+ OUString* pArray = aRet.getArray();
+ pArray[aRet.getLength() - 1] = C2U("com.sun.star.text.TextDocument");
+ return aRet;
+}
+/* -----------------05.05.99 12:10-------------------
+ *
+ * --------------------------------------------------*/
+Reference< container::XIndexAccess > SwXTextDocument::getDocumentIndexes(void) throw( RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ if(!pxXDocumentIndexes)
+ {
+ ((SwXTextDocument*)this)->pxXDocumentIndexes = new Reference< container::XIndexAccess > ;
+ *pxXDocumentIndexes = new SwXDocumentIndexes(pDocShell->GetDoc());
+ }
+ return *pxXDocumentIndexes;
+}
+
+/*-- 10.05.99 13:58:58---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< XPropertySetInfo > SwXTextDocument::getPropertySetInfo(void) throw( RuntimeException )
+{
+ static Reference< XPropertySetInfo > xRet = aPropSet.getPropertySetInfo();
+ return xRet;
+}
+/*-- 10.05.99 13:58:58---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::setPropertyValue(const OUString& rPropertyName,
+ const Any& aValue)
+ throw( UnknownPropertyException, PropertyVetoException, IllegalArgumentException,
+ WrappedTargetException, RuntimeException)
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ aPropSet.getPropertyMap(), rPropertyName);
+
+ if(!pMap)
+ throw UnknownPropertyException();
+ switch(pMap->nWID)
+ {
+ case WID_DOC_CHAR_COUNT :
+ case WID_DOC_PARA_COUNT :
+ case WID_DOC_WORD_COUNT :
+ throw RuntimeException();
+ break;
+ case WID_DOC_WORD_SEPARATOR :
+ {
+ OUString sDelim;
+ aValue >>= sDelim;
+ SW_MOD()->GetModuleConfig()->SetWordDelimiter(sDelim);
+ }
+ break;
+ case WID_DOC_CHANGES_RECORD:
+ case WID_DOC_CHANGES_SHOW:
+ {
+ sal_Bool bSet = *(sal_Bool*)aValue.getValue();
+ sal_uInt16 eMode = pDocShell->GetDoc()->GetRedlineMode();
+ if(WID_DOC_CHANGES_SHOW == pMap->nWID)
+ {
+ eMode &= ~(REDLINE_SHOW_INSERT | REDLINE_SHOW_DELETE);
+ eMode |= REDLINE_SHOW_INSERT;
+ if( bSet )
+ eMode |= REDLINE_SHOW_DELETE;
+ }
+ else if(WID_DOC_CHANGES_RECORD == pMap->nWID)
+ {
+ eMode = bSet ? eMode|REDLINE_ON : eMode&~REDLINE_ON;
+ }
+ pDocShell->GetDoc()->SetRedlineMode( eMode );
+ }
+ break;
+ case WID_DOC_AUTO_MARK_URL :
+ {
+ OUString sURL;
+ aValue >>= sURL;
+ pDocShell->GetDoc()->SetTOIAutoMarkURL(sURL);
+ }
+ break;
+ default:
+ {
+ const SfxPoolItem& rItem = pDocShell->GetDoc()->GetDefault(pMap->nWID);
+ SfxPoolItem* pNewItem = rItem.Clone();
+ pNewItem->PutValue(aValue, pMap->nMemberId);
+ pDocShell->GetDoc()->SetDefault(*pNewItem);
+ delete pNewItem;
+ }
+ }
+}
+/*-- 10.05.99 13:58:59---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Any SwXTextDocument::getPropertyValue(const OUString& rPropertyName)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(!IsValid())
+ throw RuntimeException();
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ aPropSet.getPropertyMap(), rPropertyName);
+
+ if(!pMap)
+ throw UnknownPropertyException();
+ Any aAny;
+ switch(pMap->nWID)
+ {
+ case WID_DOC_CHAR_COUNT :
+ case WID_DOC_PARA_COUNT :
+ case WID_DOC_WORD_COUNT :
+ {
+ SwDocStat aStat(pDocShell->GetDoc()->GetDocStat());
+ if(aStat.bModified)
+ pDocShell->GetDoc()->UpdateDocStat( aStat, 1 );
+ sal_Int32 nValue;
+ switch(pMap->nWID)
+ {
+ case WID_DOC_CHAR_COUNT :nValue = aStat.nChar;break;
+ case WID_DOC_PARA_COUNT :nValue = aStat.nPara;break;
+ case WID_DOC_WORD_COUNT :nValue = aStat.nWord;break;
+ }
+ aAny <<= nValue;
+ }
+ break;
+ case WID_DOC_WORD_SEPARATOR :
+ {
+ aAny <<= OUString(SW_MOD()->GetDocStatWordDelim());
+ }
+ break;
+ case WID_DOC_CHANGES_RECORD:
+ case WID_DOC_CHANGES_SHOW:
+ {
+ sal_uInt16 eMode = pDocShell->GetDoc()->GetRedlineMode();
+ sal_Bool bSet = sal_False;
+ if(WID_DOC_CHANGES_SHOW == pMap->nWID)
+ {
+ sal_uInt16 nMask = REDLINE_SHOW_INSERT | REDLINE_SHOW_DELETE;
+ bSet = (eMode & nMask) == nMask;
+ }
+ else if(WID_DOC_CHANGES_RECORD == pMap->nWID)
+ {
+ bSet = (eMode& REDLINE_ON) != 0;
+ }
+ aAny.setValue(&bSet, ::getBooleanCppuType());
+ }
+ break;
+ case WID_DOC_AUTO_MARK_URL :
+ aAny <<= OUString(pDocShell->GetDoc()->GetTOIAutoMarkURL());
+ break;
+ default:
+ {
+ const SfxPoolItem& rItem = pDocShell->GetDoc()->GetDefault(pMap->nWID);
+ rItem.QueryValue(aAny, pMap->nMemberId);
+ }
+
+ }
+ return aAny;
+}
+/*-- 10.05.99 13:58:59---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::addPropertyChangeListener(const OUString& PropertyName,
+ const Reference< XPropertyChangeListener > & aListener)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/*-- 10.05.99 13:58:59---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::removePropertyChangeListener(const OUString& PropertyName,
+ const Reference< XPropertyChangeListener > & aListener)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/*-- 10.05.99 13:59:00---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::addVetoableChangeListener(const OUString& PropertyName,
+ const Reference< XVetoableChangeListener > & aListener)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/*-- 10.05.99 13:59:00---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::removeVetoableChangeListener(const OUString& PropertyName,
+ const Reference< XVetoableChangeListener > & aListener)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/* -----------------25.10.99 10:42-------------------
+
+ --------------------------------------------------*/
+Reference< container::XNameAccess > SwXTextDocument::getLinks(void) throw( RuntimeException )
+{
+ if(!pxLinkTargetSupplier)
+ {
+ ((SwXTextDocument*)this)->pxLinkTargetSupplier = new Reference< container::XNameAccess > ;
+ (*pxLinkTargetSupplier) = new SwXLinkTargetSupplier(*(SwXTextDocument*)this);
+ }
+ return (*pxLinkTargetSupplier);
+}
+
+/*-- 21.02.00 08:41:06---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::refresh(void) throw( RuntimeException )
+{
+ if(!IsValid())
+ throw RuntimeException();
+ SwWrtShell *pWrtShell = pDocShell->GetWrtShell();
+ if(pWrtShell)
+ pWrtShell->CalcLayout();
+}
+/*-- 21.02.00 08:41:06---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::addRefreshListener(const Reference< util::XRefreshListener > & l)
+ throw( RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/*-- 21.02.00 08:41:07---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextDocument::removeRefreshListener(const Reference< util::XRefreshListener > & l)
+ throw( RuntimeException )
+{
+ DBG_WARNING("not implemented")
+}
+/* -----------------------------20.06.00 09:54--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void * SAL_CALL SwXTextDocument::operator new( size_t t) throw()
+{
+ return SwXTextDocumentBaseClass::operator new(t);
+}
+/* -----------------------------20.06.00 09:54--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SAL_CALL SwXTextDocument::operator delete( void * p) throw()
+{
+ SwXTextDocumentBaseClass::operator delete(p);
+}
+/* -----------------25.10.99 11:06-------------------
+
+ --------------------------------------------------*/
+SwXLinkTargetSupplier::SwXLinkTargetSupplier(SwXTextDocument& rxDoc) :
+ pxDoc(&rxDoc)
+{
+ sTables = String(SW_RES(STR_CONTENT_TYPE_TABLE));
+ sFrames = String(SW_RES(STR_CONTENT_TYPE_FRAME));
+ sGraphics = String(SW_RES(STR_CONTENT_TYPE_GRAPHIC));
+ sOLEs = String(SW_RES(STR_CONTENT_TYPE_OLE));
+ sSections = String(SW_RES(STR_CONTENT_TYPE_REGION));
+ sOutlines = String(SW_RES(STR_CONTENT_TYPE_OUTLINE));
+ sBookmarks = String(SW_RES(STR_CONTENT_TYPE_BOOKMARK));
+}
+/* -----------------25.10.99 11:11-------------------
+
+ --------------------------------------------------*/
+SwXLinkTargetSupplier::~SwXLinkTargetSupplier()
+{
+}
+
+/*-- 25.10.99 11:12:45---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Any SwXLinkTargetSupplier::getByName(const OUString& rName)
+ throw( container::NoSuchElementException, WrappedTargetException, RuntimeException )
+{
+ Any aRet;
+ if(!pxDoc)
+ throw RuntimeException();
+ String sToCompare(rName);
+ String sSuffix('|');
+ if(sToCompare == sTables)
+ {
+ sSuffix += UniString::CreateFromAscii(pMarkToTable);
+
+ Reference< container::XNameAccess > xTbls = new SwXLinkNameAccessWrapper(
+ pxDoc->getTextTables(), sToCompare, sSuffix );
+ Reference< XPropertySet > xRet(xTbls, UNO_QUERY);
+ aRet.setValue(&xRet, ::getCppuType((Reference<XPropertySet>*)0));
+ }
+ else if(sToCompare == sFrames)
+ {
+ sSuffix += UniString::CreateFromAscii(pMarkToFrame);
+ Reference< container::XNameAccess > xTbls = new SwXLinkNameAccessWrapper(
+ pxDoc->getTextFrames(), sToCompare, sSuffix );
+ Reference< XPropertySet > xRet(xTbls, UNO_QUERY);
+ aRet.setValue(&xRet, ::getCppuType((Reference< XPropertySet>*)0));
+ }
+ else if(sToCompare == sSections)
+ {
+ sSuffix += UniString::CreateFromAscii(pMarkToRegion);
+ Reference< container::XNameAccess > xTbls = new SwXLinkNameAccessWrapper(
+ pxDoc->getTextSections(), sToCompare, sSuffix );
+ Reference< XPropertySet > xRet(xTbls, UNO_QUERY);
+ aRet.setValue(&xRet, ::getCppuType((Reference< XPropertySet>*)0));
+ }
+/* else if(sToCompare == )
+ {
+ sSuffix += UniString::CreateFromAscii(pMarkToText);
+ Reference< container::XNameAccess > xTbls = new SwXLinkNameAccessWrapper(
+ pxDoc->, sSuffix );
+ Reference< XPropertySet > xRet(xTbls, UNO_QUERY);
+ aRet.setValue(&xRet, ::getCppuType((const XPropertySet*)0));
+ }*/
+ else if(sToCompare == sGraphics)
+ {
+ sSuffix += UniString::CreateFromAscii(pMarkToGraphic);
+ Reference< container::XNameAccess > xTbls = new SwXLinkNameAccessWrapper(
+ pxDoc->getGraphicObjects(), sToCompare, sSuffix );
+ Reference< XPropertySet > xRet(xTbls, UNO_QUERY);
+ aRet.setValue(&xRet, ::getCppuType((Reference< XPropertySet>*)0));
+ }
+ else if(sToCompare == sOLEs)
+ {
+ sSuffix += UniString::CreateFromAscii(pMarkToOLE);
+ Reference< container::XNameAccess > xTbls = new SwXLinkNameAccessWrapper(
+ pxDoc->getEmbeddedObjects(), sToCompare, sSuffix );
+ Reference< XPropertySet > xRet(xTbls, UNO_QUERY);
+ aRet.setValue(&xRet, ::getCppuType((Reference< XPropertySet>*)0));
+ }
+ else if(sToCompare == sOutlines)
+ {
+ sSuffix += UniString::CreateFromAscii(pMarkToOutline);
+ Reference< container::XNameAccess > xTbls = new SwXLinkNameAccessWrapper(
+ *pxDoc, sToCompare, sSuffix );
+ Reference< XPropertySet > xRet(xTbls, UNO_QUERY);
+ aRet.setValue(&xRet, ::getCppuType((Reference< XPropertySet>*)0));
+ }
+ else if(sToCompare == sBookmarks)
+ {
+ sSuffix.Erase();
+ Reference< container::XNameAccess > xBkms = new SwXLinkNameAccessWrapper(
+ pxDoc->getBookmarks(), sToCompare, sSuffix );
+ Reference< XPropertySet > xRet(xBkms, UNO_QUERY);
+ aRet.setValue(&xRet, ::getCppuType((Reference< XPropertySet>*)0));
+ }
+ else
+ throw container::NoSuchElementException();
+ return aRet;
+}
+/*-- 25.10.99 11:12:46---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Sequence< OUString > SwXLinkTargetSupplier::getElementNames(void)
+ throw( RuntimeException )
+{
+ Sequence< OUString > aRet(7);
+ OUString* pNames = aRet.getArray();
+ pNames[0] = sTables;
+ pNames[1] = sFrames ;
+ pNames[2] = sGraphics;
+ pNames[3] = sOLEs ;
+ pNames[4] = sSections;
+ pNames[5] = sOutlines;
+ pNames[6] = sBookmarks;
+ return aRet;
+}
+/*-- 25.10.99 11:12:46---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXLinkTargetSupplier::hasByName(const OUString& rName)
+ throw( RuntimeException )
+{
+ String sToCompare(rName);
+ if( sToCompare == sTables ||
+ sToCompare == sFrames ||
+ sToCompare == sGraphics||
+ sToCompare == sOLEs ||
+ sToCompare == sSections ||
+ sToCompare == sOutlines ||
+ sToCompare == sBookmarks )
+ return sal_True;
+ return sal_False;
+}
+/*-- 25.10.99 11:12:47---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Type SwXLinkTargetSupplier::getElementType(void)
+ throw( RuntimeException )
+{
+ return ::getCppuType((Reference< XPropertySet>*)0);
+
+}
+/*-- 25.10.99 11:12:47---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXLinkTargetSupplier::hasElements(void) throw( RuntimeException )
+{
+ return 0 != pxDoc;
+}
+/*-- 25.10.99 11:12:47---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+OUString SwXLinkTargetSupplier::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXLinkTargetSupplier");
+}
+/*-- 25.10.99 11:12:48---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXLinkTargetSupplier::supportsService(const OUString& rServiceName)
+ throw( RuntimeException )
+{
+ return (rServiceName == C2U("com.sun.star.document.LinkTargets"));
+}
+/*-- 25.10.99 11:12:48---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Sequence< OUString > SwXLinkTargetSupplier::getSupportedServiceNames(void)
+ throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pNames = aRet.getArray();
+ pNames[0] = C2U("com.sun.star.document.LinkTargets");
+ return aRet;
+}
+
+/*-- 26.10.99 09:16:23---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXLinkNameAccessWrapper::SwXLinkNameAccessWrapper(
+ Reference< container::XNameAccess > xAccess, const String& rLinkDisplayName, String sSuffix ) :
+ aPropSet(aSwMapProvider.GetPropertyMap(PROPERTY_MAP_LINK_TARGET)),
+ sLinkDisplayName(rLinkDisplayName),
+ xRealAccess(xAccess),
+ sLinkSuffix(sSuffix),
+ pxDoc(0)
+{
+}
+/* -----------------26.10.99 14:17-------------------
+
+ --------------------------------------------------*/
+SwXLinkNameAccessWrapper::SwXLinkNameAccessWrapper(SwXTextDocument& rxDoc,
+ const String& rLinkDisplayName, String sSuffix) :
+ sLinkSuffix(sSuffix),
+ sLinkDisplayName(rLinkDisplayName),
+ aPropSet(aSwMapProvider.GetPropertyMap(PROPERTY_MAP_LINK_TARGET)),
+ pxDoc(&rxDoc),
+ xDoc(&rxDoc)
+{
+}
+/*-- 26.10.99 09:16:23---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXLinkNameAccessWrapper::~SwXLinkNameAccessWrapper()
+{
+}
+/*-- 26.10.99 09:16:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Any SwXLinkNameAccessWrapper::getByName(const OUString& rName)
+ throw( container::NoSuchElementException, WrappedTargetException, RuntimeException )
+{
+ Any aRet;
+ sal_Bool bFound = sal_False;
+ //cut link extension and call the real NameAccess
+ String sParam = rName;
+ String sSuffix(sLinkSuffix);
+ if(sParam.Len() > sSuffix.Len() )
+ {
+ String sCmp = sParam.Copy(sParam.Len() - sSuffix.Len(),
+ sSuffix.Len());
+ if(sCmp == sSuffix)
+ {
+ if(pxDoc)
+ {
+ sParam = sParam.Copy(0, sParam.Len() - sSuffix.Len());
+ if(!pxDoc->GetDocShell())
+ throw RuntimeException();
+ SwDoc* pDoc = pxDoc->GetDocShell()->GetDoc();
+ sal_uInt16 nOutlineCount = pDoc->GetNodes().GetOutLineNds().Count();
+
+ for (sal_uInt16 i = 0; i < nOutlineCount && !bFound; ++i)
+ {
+ const SwNodes& rNds = pDoc->GetNodes();
+ if(sParam ==
+ rNds.GetOutLineNds()[ i ]->GetTxtNode()->GetExpandTxt( 0, STRING_LEN, sal_True ))
+ {
+ Reference< XPropertySet > xOutline = new SwXOutlineTarget(sParam);
+ aRet.setValue(&xOutline, ::getCppuType((Reference<XPropertySet>*)0));
+ bFound = sal_True;
+ }
+ }
+ }
+ else
+ {
+ aRet = xRealAccess->getByName(sParam.Copy(0, sParam.Len() - sSuffix.Len()));
+ Reference< XInterface > * pxInt = (Reference< XInterface > *)aRet.getValue();
+ if(!pxInt)
+ throw RuntimeException();
+ Reference< XPropertySet > xProp((*pxInt), UNO_QUERY);
+ aRet.setValue(&xProp, ::getCppuType((Reference<XPropertySet>*)0));
+ bFound = sal_True;
+ }
+ }
+ }
+ if(!bFound)
+ throw container::NoSuchElementException();
+ return aRet;
+}
+/*-- 26.10.99 09:16:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Sequence< OUString > SwXLinkNameAccessWrapper::getElementNames(void)
+ throw( RuntimeException )
+{
+ Sequence< OUString > aRet;
+ if(pxDoc)
+ {
+ if(!pxDoc->GetDocShell())
+ throw RuntimeException();
+
+ SwDoc* pDoc = pxDoc->GetDocShell()->GetDoc();
+ sal_uInt16 nOutlineCount = pDoc->GetNodes().GetOutLineNds().Count();
+ aRet.realloc(nOutlineCount);
+ OUString* pResArr = aRet.getArray();
+ String sSuffix('|');
+ sSuffix += UniString::CreateFromAscii(pMarkToOutline);
+ for (sal_uInt16 i = 0; i < nOutlineCount; ++i)
+ {
+ const SwNodes& rNds = pDoc->GetNodes();
+ String sEntry(
+ rNds.GetOutLineNds()[ i ]->GetTxtNode()->GetExpandTxt( 0, STRING_LEN, sal_True ));
+ sEntry += sSuffix;
+ pResArr[i] = sEntry;
+ }
+ }
+ else
+ {
+ Sequence< OUString > aOrg = xRealAccess->getElementNames();
+ const OUString* pOrgArr = aOrg.getConstArray();
+ aRet.realloc(aOrg.getLength());
+ OUString* pResArr = aRet.getArray();
+ for(long i = 0; i < aOrg.getLength(); i++)
+ {
+ pResArr[i] = pOrgArr[i] + sLinkSuffix;
+ }
+ }
+ return aRet;
+}
+/*-- 26.10.99 09:16:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXLinkNameAccessWrapper::hasByName(const OUString& rName)
+ throw( RuntimeException )
+{
+ sal_Bool bRet = sal_False;
+ String sParam(rName);
+ if(sParam.Len() > sLinkSuffix.Len() )
+ {
+ String sCmp = sParam.Copy(sParam.Len() - sLinkSuffix.Len(),
+ sLinkSuffix.Len());
+ if(sCmp == sLinkSuffix)
+ {
+ sParam = sParam.Copy(0, sParam.Len() - sLinkSuffix.Len());
+ if(pxDoc)
+ {
+ if(!pxDoc->GetDocShell())
+ throw RuntimeException();
+ SwDoc* pDoc = pxDoc->GetDocShell()->GetDoc();
+ sal_uInt16 nOutlineCount = pDoc->GetNodes().GetOutLineNds().Count();
+
+ for (sal_uInt16 i = 0; i < nOutlineCount && !bRet; ++i)
+ {
+ const SwNodes& rNds = pDoc->GetNodes();
+ if(sParam ==
+ rNds.GetOutLineNds()[ i ]->GetTxtNode()->GetExpandTxt( 0, STRING_LEN, sal_True ))
+ {
+ bRet = sal_True;
+ }
+ }
+ }
+ else
+ {
+ bRet = xRealAccess->hasByName(sParam);
+ }
+ }
+ }
+ return bRet;
+}
+/*-- 26.10.99 09:16:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Type SwXLinkNameAccessWrapper::getElementType(void)
+ throw( RuntimeException )
+{
+ return ::getCppuType((Reference<XPropertySet>*)0);
+}
+/*-- 26.10.99 09:16:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXLinkNameAccessWrapper::hasElements(void) throw( RuntimeException )
+{
+ sal_Bool bRet = sal_False;
+ if(pxDoc)
+ {
+ DBG_ERROR("not implemented")
+ }
+ else
+ {
+ bRet = xRealAccess->hasElements();
+ }
+ return bRet;
+}
+/*-- 26.10.99 09:16:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< XPropertySetInfo > SwXLinkNameAccessWrapper::getPropertySetInfo(void)
+ throw( RuntimeException )
+{
+ static Reference< XPropertySetInfo > xRet = aPropSet.getPropertySetInfo();
+ return xRet;
+}
+/*-- 26.10.99 09:16:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXLinkNameAccessWrapper::setPropertyValue(
+ const OUString& PropertyName, const Any& aValue)
+ throw( UnknownPropertyException,
+ PropertyVetoException,
+ IllegalArgumentException,
+ WrappedTargetException,
+ RuntimeException)
+{
+ throw UnknownPropertyException();
+}
+/* -----------------------------08.12.99 11:10--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Any lcl_GetDisplayBitmap(String sLinkSuffix)
+{
+ Any aRet;
+ if(sLinkSuffix.Len())
+ sLinkSuffix.Erase(0, 1);
+ sal_uInt16 nImgId = USHRT_MAX;
+
+ if(COMPARE_EQUAL == sLinkSuffix.CompareToAscii(pMarkToOutline))
+ nImgId = CONTENT_TYPE_OUTLINE;
+ else if(COMPARE_EQUAL == sLinkSuffix.CompareToAscii(pMarkToTable))
+ nImgId = CONTENT_TYPE_TABLE;
+ else if(COMPARE_EQUAL == sLinkSuffix.CompareToAscii(pMarkToFrame))
+ nImgId = CONTENT_TYPE_FRAME;
+ else if(COMPARE_EQUAL == sLinkSuffix.CompareToAscii(pMarkToGraphic))
+ nImgId = CONTENT_TYPE_GRAPHIC;
+// else if(== sLinkSuffix)
+// nImgId = CONTENT_TYPE_BOOKMARK;
+ else if(COMPARE_EQUAL == sLinkSuffix.CompareToAscii(pMarkToRegion))
+ nImgId = CONTENT_TYPE_REGION;
+ else if(COMPARE_EQUAL == sLinkSuffix.CompareToAscii(pMarkToOLE))
+ nImgId = CONTENT_TYPE_OLE;
+ else if(!sLinkSuffix.Len())
+ nImgId = CONTENT_TYPE_BOOKMARK;
+ if(USHRT_MAX != nImgId)
+ {
+ nImgId += 20000;
+ ImageList aEntryImages( SW_RES(IMG_NAVI_ENTRYBMP) );
+ 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 );
+
+ Reference<awt::XBitmap> xBmp = VCLUnoHelper::CreateBitmap( aBitmap );
+ aRet.setValue( &xBmp, ::getCppuType((Reference<awt::XBitmap>*)0) );
+ }
+ return aRet;
+}
+/*-- 26.10.99 09:16:27---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Any SwXLinkNameAccessWrapper::getPropertyValue(const OUString& rPropertyName)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{
+ Any aRet;
+ if(rPropertyName == C2U(UNO_LINK_DISPLAY_NAME))
+ {
+ aRet <<= OUString(sLinkDisplayName);
+ }
+ else if(C2U(UNO_LINK_DISPLAY_BITMAP) == rPropertyName)
+ {
+ aRet = lcl_GetDisplayBitmap(sLinkSuffix);
+ }
+ else
+ throw UnknownPropertyException();
+ return aRet;
+}
+/*-- 26.10.99 09:16:27---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXLinkNameAccessWrapper::addPropertyChangeListener(
+ const OUString& PropertyName, const Reference< XPropertyChangeListener > & aListener)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{}
+/*-- 26.10.99 09:16:28---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXLinkNameAccessWrapper::removePropertyChangeListener(
+ const OUString& PropertyName, const Reference< XPropertyChangeListener > & aListener)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{}
+/*-- 26.10.99 09:16:28---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXLinkNameAccessWrapper::addVetoableChangeListener(
+ const OUString& PropertyName, const Reference< XVetoableChangeListener > & aListener)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{}
+/*-- 26.10.99 09:16:29---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXLinkNameAccessWrapper::removeVetoableChangeListener(
+ const OUString& PropertyName, const Reference< XVetoableChangeListener > & aListener)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{}
+/*-- 26.10.99 09:16:32---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< container::XNameAccess > SwXLinkNameAccessWrapper::getLinks(void)
+ throw( RuntimeException )
+{
+ return (SwXLinkNameAccessWrapper*)this;
+}
+
+/*-- 26.10.99 09:21:48---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+OUString SwXLinkNameAccessWrapper::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXLinkNameAccessWrapper");
+}
+/*-- 26.10.99 09:21:48---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXLinkNameAccessWrapper::supportsService(const OUString& rServiceName)
+ throw( RuntimeException )
+{
+ return (rServiceName == C2U("com.sun.star.document.LinkTargets"));
+}
+/*-- 26.10.99 09:21:48---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Sequence< OUString > SwXLinkNameAccessWrapper::getSupportedServiceNames(void)
+ throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pNames = aRet.getArray();
+ pNames[0] = C2U("com.sun.star.document.LinkTargets");
+ return aRet;
+}
+/* -----------------26.10.99 15:50-------------------
+
+ --------------------------------------------------*/
+SwXOutlineTarget::SwXOutlineTarget(const String& rOutlineText) :
+ aPropSet(aSwMapProvider.GetPropertyMap(PROPERTY_MAP_LINK_TARGET)),
+ sOutlineText(rOutlineText)
+{
+}
+/*-- 26.10.99 15:51:45---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXOutlineTarget::~SwXOutlineTarget()
+{
+}
+/*-- 26.10.99 15:51:46---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< XPropertySetInfo > SwXOutlineTarget::getPropertySetInfo(void) throw( RuntimeException )
+{
+ static Reference< XPropertySetInfo > xRet = aPropSet.getPropertySetInfo();
+ return xRet;
+}
+/*-- 26.10.99 15:51:46---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXOutlineTarget::setPropertyValue(
+ const OUString& PropertyName, const Any& aValue)
+ throw( UnknownPropertyException, PropertyVetoException,
+ IllegalArgumentException, WrappedTargetException, RuntimeException)
+{
+ throw UnknownPropertyException();
+}
+/*-- 26.10.99 15:51:46---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Any SwXOutlineTarget::getPropertyValue(const OUString& rPropertyName)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{
+ Any aRet;
+ if(COMPARE_EQUAL == rPropertyName.compareToAscii(UNO_LINK_DISPLAY_NAME))
+ aRet <<= OUString(sOutlineText);
+ else
+ throw UnknownPropertyException();
+ return aRet;
+}
+/*-- 26.10.99 15:51:46---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXOutlineTarget::addPropertyChangeListener(
+ const OUString& PropertyName, const Reference< XPropertyChangeListener > & aListener)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{
+}
+/*-- 26.10.99 15:51:47---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXOutlineTarget::removePropertyChangeListener(
+ const OUString& PropertyName, const Reference< XPropertyChangeListener > & aListener)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{
+}
+/*-- 26.10.99 15:51:47---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXOutlineTarget::addVetoableChangeListener(
+ const OUString& PropertyName, const Reference< XVetoableChangeListener > & aListener)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{
+}
+/*-- 26.10.99 15:51:47---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXOutlineTarget::removeVetoableChangeListener(
+ const OUString& PropertyName, const Reference< XVetoableChangeListener > & aListener)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{
+}
+/* -----------------03.05.99 12:28-------------------
+ *
+ * --------------------------------------------------*/
+OUString SwXOutlineTarget::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXOutlineTarget");
+}
+/* -----------------03.05.99 12:28-------------------
+ *
+ * --------------------------------------------------*/
+sal_Bool SwXOutlineTarget::supportsService(const OUString& ServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.document.LinkTarget") == ServiceName;
+}
+/* -----------------03.05.99 12:28-------------------
+ *
+ * --------------------------------------------------*/
+Sequence< OUString > SwXOutlineTarget::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence < OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.document.LinkTarget");
+
+ return aRet;
+}
+
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.147 2000/09/18 16:06:16 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.146 2000/07/13 14:01:14 os
+ set flag in reactivate
+
+ Revision 1.145 2000/07/13 12:37:08 os
+ new: SwXTextDocument::reactivate()
+
+ Revision 1.144 2000/07/10 12:32:18 os
+ chg: acquire/release don't throw exceptions
+
+ Revision 1.143 2000/06/29 13:44:35 os
+ getTypes: add XMultiServiceFactory
+
+ Revision 1.142 2000/06/22 16:22:13 os
+ #76361# getTypes corrected
+
+ Revision 1.141 2000/06/20 08:06:00 os
+ operator new/delete
+
+ Revision 1.140 2000/06/16 13:48:13 os
+ UNO3 errors removed
+
+ Revision 1.139 2000/05/18 11:09:17 os
+ UpdateDocStat: call optimized
+
+ Revision 1.138 2000/05/16 09:15:14 os
+ project usr removed
+
+ Revision 1.137 2000/04/11 08:05:00 os
+ UNICODE
+
+ Revision 1.136 2000/03/31 06:05:50 os
+ UNO III: toolkit includes
+
+ Revision 1.135 2000/03/27 10:36:31 os
+ UNO III
+
+ Revision 1.134 2000/03/21 15:39:44 os
+ UNOIII
+
+ Revision 1.133 2000/03/13 14:31:57 os
+ #73853# #73852# CharLocale instead of CharLanguage
+
+ Revision 1.132 2000/02/21 07:54:39 os
+ #73237# util::XRefreshable implemented
+
+ Revision 1.131 2000/02/14 14:25:35 os
+ #70473# Unicode
+
+ Revision 1.130 2000/02/11 13:46:39 os
+ #72210# SvxLanguageItem supports Locale
+
+ Revision 1.129 2000/02/02 13:43:10 os
+ #69861# Chg: XPropertyState; #72424# Chg: beans::PropertyValue
+
+ Revision 1.128 2000/01/05 10:28:49 os
+ #71466# Search: set cursor to the real start of document body
+
+ Revision 1.127 1999/12/08 12:01:45 os
+ #70284# show Bitmaps in hyperlink insert dialog
+
+ Revision 1.126 1999/12/01 15:33:44 os
+ #70173# enable search for hyperlink attribute
+
+ Revision 1.125 1999/12/01 14:22:40 os
+ #70174# search corrected
+
+ Revision 1.124 1999/11/25 15:37:50 os
+ headers corrected
+
+ Revision 1.123 1999/11/22 10:37:38 os
+ missing headers added
+
+ Revision 1.122 1999/11/19 16:38:03 os
+ modules renamed
+
+ Revision 1.121 1999/11/03 10:25:32 os
+ U2S!
+
+ Revision 1.120 1999/11/02 11:05:18 os
+ hyperlink interface completed
+
+ Revision 1.119 1999/10/29 11:34:18 os
+ support util::XModifiable
+
+ Revision 1.118 1999/10/26 14:33:34 os
+ LinkTargetSupplier
+
+ Revision 1.117 1999/10/15 10:58:40 os
+ Chg: XCntent- container::XChild
+
+ Revision 1.116 1999/09/14 13:45:34 os
+ Redlining properties
+
+ Revision 1.115 1999/09/14 13:35:06 os
+ Redlining properties; AutoMarkURL;
+
+ Revision 1.114 1999/08/26 09:44:30 HR
+ select/getSelection corrected
+
+
+ Rev 1.113 26 Aug 1999 11:44:30 HR
+ select/getSelection corrected
+
+ Rev 1.112 26 Aug 1999 11:29:54 OS
+ getSelection/select with Any
+
+ Rev 1.111 18 Aug 1999 10:52:22 OS
+ #67026# util::XModifiable now supported
+
+ Rev 1.110 21 Jul 1999 13:30:24 JP
+ WhichId-Ranges of SfxItemSets: EndId is inclusive
+
+ Rev 1.109 20 Jul 1999 09:00:50 OS
+ #67613# findNext: accept SwXTextRange
+
+ Rev 1.108 07 Jul 1999 08:14:10 OS
+ property map sorted
+
+ Rev 1.107 24 Jun 1999 12:01:48 OS
+ #66843# document statistic properties
+
+ Rev 1.106 24 Jun 1999 09:20:06 OS
+ #67048# util::XPropertyReplace implemented
+
+ Rev 1.105 26 May 1999 08:01:54 OS
+ #66180# Suche nach Styles
+
+ Rev 1.104 10 May 1999 15:12:28 OS
+ #66000# XPropertySet am Doc fuer util::Language
+
+ Rev 1.103 07 May 1999 14:25:20 KZ
+ numfrm -> numbform geaendert
+
+ Rev 1.102 05 May 1999 14:07:06 OS
+ #64655# DocumentIndexes wiederbelebt
+
+ Rev 1.101 04 May 1999 10:54:40 OS
+ #65415# getCurrentSelection
+
+ Rev 1.100 22 Apr 1999 16:09:04 OS
+ #65194# throw -> throw
+
+ Rev 1.99 22 Apr 1999 15:28:52 OS
+ #65124# not implemented - nur noch DBG_WARNING
+
+ Rev 1.98 07 Apr 1999 12:36:10 OS
+ #62304# NumberFormatter erst im Dtor deaggregieren
+
+ Rev 1.97 07 Apr 1999 11:27:28 OS
+ #62304# neues NumberFormatter - Object
+
+ Rev 1.96 07 Apr 1999 10:26:30 OS
+ #60348# richtiges Shape liefern
+
+ Rev 1.95 25 Mar 1999 14:55:22 OS
+ #62541# Exceptions fuer falsche Parameter bei setPagePrintSettings
+
+ Rev 1.94 18 Mar 1999 12:35:50 OS
+ #62984# neue Ableitung vom Svx
+
+ Rev 1.93 15 Mar 1999 14:38:24 OS
+ #62845# Makro fuer ServiceInfo jetzt auch fuer OS/2
+
+ Rev 1.92 15 Mar 1999 11:35:40 OS
+ #63370# Direktzugriff statt cast
+
+ Rev 1.91 12 Mar 1999 09:57:04 OS
+ #62845# XServiceInfo impl.
+
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/uno/unotxvw.cxx b/sw/source/ui/uno/unotxvw.cxx
new file mode 100644
index 000000000000..510512dcb0c0
--- /dev/null
+++ b/sw/source/ui/uno/unotxvw.cxx
@@ -0,0 +1,1925 @@
+/*************************************************************************
+ *
+ * $RCSfile: unotxvw.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "viscrs.hxx"
+#include <sfx2/frame.hxx>
+#include <cmdid.h>
+#include <hintids.hxx>
+#ifndef _SWDOCSH_HXX //autogen
+#include <docsh.hxx>
+#endif
+#ifndef _SWDOC_HXX //autogen
+#include <doc.hxx>
+#endif
+#ifndef _UNOTXVW_HXX
+#include <unotxvw.hxx>
+#endif
+#ifndef _UNOMAP_HXX
+#include <unomap.hxx>
+#endif
+#ifndef _SWVIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _UNOMOD_HXX
+#include <unomod.hxx>
+#endif
+#ifndef _UNOFRAME_HXX
+#include <unoframe.hxx>
+#endif
+#ifndef _UNOOBJ_HXX
+#include <unoobj.hxx>
+#endif
+#ifndef _UNOCRSR_HXX
+#include <unocrsr.hxx>
+#endif
+#ifndef _WRTSH_HXX //autogen
+#include <wrtsh.hxx>
+#endif
+#ifndef _UNOTBL_HXX
+#include <unotbl.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SVDPAGE_HXX //autogen
+#include <svx/svdpage.hxx>
+#endif
+#ifndef _SVDOUNO_HXX //autogen
+#include <svx/svdouno.hxx>
+#endif
+#ifndef _SVDOGRP_HXX //autogen
+#include <svx/svdogrp.hxx>
+#endif
+#ifndef _PAGEDESC_HXX //autogen
+#include <pagedesc.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SVX_ULSPITEM_HXX //autogen
+#include <svx/ulspitem.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _VOS_MUTEX_HXX_ //autogen
+#include <vos/mutex.hxx>
+#endif
+#ifndef _BOOKMRK_HXX //autogen
+#include <bookmrk.hxx>
+#endif
+#ifndef _UNOTXDOC_HXX //autogen
+#include <unotxdoc.hxx>
+#endif
+#ifndef _UNODRAW_HXX //autogen
+#include <unodraw.hxx>
+#endif
+#ifndef _SVX_UNOSHGRP_HXX //autogen
+#include <svx/unoshcol.hxx>
+#endif
+#ifndef _SVX_UNOSHAPE_HXX //autogen wg. SvxShape
+#include <svx/unoshape.hxx>
+#endif
+#ifndef _SVDPAGV_HXX //autogen wg. SdrPageView
+#include <svx/svdpagv.hxx>
+#endif
+#include <swerror.h>
+#ifndef _CACHESTR_HXX
+#include <tools/cachestr.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _NDTXT_HXX
+#include <ndtxt.hxx>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::text;
+using namespace rtl;
+
+SV_IMPL_PTRARR( SelectionChangeListenerArr, XSelectionChangeListenerPtr );
+
+/* -----------------22.05.98 12:20-------------------
+ *
+ * --------------------------------------------------*/
+SwPaM* lcl_createPamCopy(const SwPaM& rPam)
+{
+ SwPaM* pRet = new SwPaM(*rPam.GetPoint());
+ if(rPam.HasMark())
+ {
+ pRet->SetMark();
+ *pRet->GetMark() = *rPam.GetMark();
+ }
+ if(rPam.GetNext() != (const Ring*)&rPam)
+ {
+ SwPaM *_pStartCrsr = (SwPaM *)rPam.GetNext();
+ do
+ {
+ //neuen PaM erzeugen
+ SwPaM* pPaM = new SwPaM(*_pStartCrsr);
+ //und in den Ring einfuegen
+ pPaM->MoveTo(pRet);
+
+ } while( (_pStartCrsr=(SwPaM *)_pStartCrsr->GetNext()) != rPam.GetNext() );
+ }
+ return pRet;
+}
+/* -----------------04.11.98 15:32-------------------
+ *
+ * --------------------------------------------------*/
+sal_Bool lcl_FindObjInGroup(uno::Reference< awt::XControl > & xRet, SdrObjGroup* pGroup, const Reference< awt::XControlModel > & xModel, Window* pWin)
+{
+ SdrObjList* pList = pGroup->GetSubList();
+ sal_uInt32 nCount = pList->GetObjCount();
+ for( sal_uInt32 i=0; i< nCount; i++ )
+ {
+ SdrObject* pObj = pList->GetObj(i);
+ SdrUnoObj *pFormObj = PTR_CAST( SdrUnoObj, pObj );
+ SdrObjGroup* pGroup;
+ if( pFormObj )
+ {
+ Reference< awt::XControlModel > xCM = pFormObj->GetUnoControlModel();
+ if( xCM.is() && xModel == xCM )
+ {
+ xRet = pFormObj->GetUnoControl( pWin );
+ break;
+ }
+ }
+ else if(0 != (pGroup = PTR_CAST( SdrObjGroup, pObj )))
+ {
+ if(lcl_FindObjInGroup(xRet, pGroup, xModel, pWin))
+ break;
+ }
+ }
+ return xRet.is();
+}
+
+/******************************************************************
+ * SwXTextView
+ ******************************************************************/
+/*-- 17.12.98 09:34:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXTextView::SwXTextView(SwView* pSwView) :
+ SfxBaseController(pSwView),
+ pView(pSwView),
+ pxViewSettings(0),
+ pxTextViewCursor(0)
+{
+
+}
+/*-- 17.12.98 09:34:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXTextView::~SwXTextView()
+{
+ if(pxViewSettings)
+ {
+ beans::XPropertySet* pSettings = pxViewSettings->get();
+ ((SwXViewSettings*)pSettings)->Invalidate();
+ delete pxViewSettings;
+ }
+ if(pxTextViewCursor)
+ {
+ text::XTextViewCursor* pCrsr = pxTextViewCursor->get();
+ ((SwXTextViewCursor*)pCrsr)->Invalidate();
+ delete pxTextViewCursor;
+ }
+}
+/* -----------------------------18.05.00 10:18--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Sequence< uno::Type > SAL_CALL SwXTextView::getTypes( ) throw(::com::sun::star::uno::RuntimeException)
+{
+// uno::Sequence< uno::Type > aViewTypes = SwXTextViewBaseClass::getTypes();
+ uno::Sequence< uno::Type > aBaseTypes = SfxBaseController::getTypes();
+
+ long nIndex = aBaseTypes.getLength();
+ aBaseTypes.realloc(
+ aBaseTypes.getLength() + 5 );
+
+ uno::Type* pBaseTypes = aBaseTypes.getArray();
+ pBaseTypes[nIndex++] = ::getCppuType((Reference<view::XSelectionSupplier >*)0);
+ pBaseTypes[nIndex++] = ::getCppuType((Reference<lang::XServiceInfo >*)0);
+ pBaseTypes[nIndex++] = ::getCppuType((Reference<view::XControlAccess >*)0);
+ pBaseTypes[nIndex++] = ::getCppuType((Reference<text::XTextViewCursorSupplier>*)0);
+ pBaseTypes[nIndex++] = ::getCppuType((Reference<view::XViewSettingsSupplier >*)0);
+ return aBaseTypes;
+}
+/* -----------------------------18.05.00 10:18--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Sequence< sal_Int8 > SAL_CALL SwXTextView::getImplementationId( ) throw(::com::sun::star::uno::RuntimeException)
+{
+ static uno::Sequence< sal_Int8 > aId( 16 );
+ static BOOL bInit = FALSE;
+ if(!bInit)
+ rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
+ return aId;
+}
+/* -----------------------------18.05.00 10:18--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SAL_CALL SwXTextView::acquire( )throw()
+{
+ SfxBaseController::acquire();
+}
+/* -----------------------------18.05.00 10:18--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SAL_CALL SwXTextView::release( )throw()
+{
+ SfxBaseController::release();
+}
+/* -----------------------------18.05.00 10:23--------------------------------
+
+ ---------------------------------------------------------------------------*/
+uno::Any SAL_CALL SwXTextView::queryInterface( const uno::Type& aType )
+ throw (RuntimeException)
+{
+ uno::Any aRet;
+ if(aType == ::getCppuType((Reference<view::XSelectionSupplier >*)0))
+ {
+ Reference<view::XSelectionSupplier> xRet = this;
+ aRet.setValue(&xRet, aType);
+ }
+ else if(aType == ::getCppuType((Reference<lang::XServiceInfo >*)0))
+ {
+ Reference<lang::XServiceInfo> xRet = this;
+ aRet.setValue(&xRet, aType);
+ }
+ else if(aType == ::getCppuType((Reference<view::XControlAccess >*)0))
+ {
+ Reference<view::XControlAccess> xRet = this;
+ aRet.setValue(&xRet, aType);
+ }
+ else if(aType == ::getCppuType((Reference<text::XTextViewCursorSupplier>*)0))
+ {
+ Reference<text::XTextViewCursorSupplier> xRet = this;
+ aRet.setValue(&xRet, aType);
+ }
+ else if(aType == ::getCppuType((Reference<view::XViewSettingsSupplier >*)0))
+ {
+ Reference<view::XViewSettingsSupplier> xRet = this;
+ aRet.setValue(&xRet, aType);
+ }
+ else
+ aRet = SfxBaseController::queryInterface(aType);
+ return aRet;
+}
+/*-- 17.12.98 09:34:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextView::select(const uno::Any& aInterface) throw( lang::IllegalArgumentException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(GetView() && aInterface.getValueType().getTypeClass() == uno::TypeClass_INTERFACE)
+ {
+ Reference< uno::XInterface > xInterface = *(Reference< uno::XInterface > *)aInterface.getValue();
+ SwWrtShell& rSh = GetView()->GetWrtShell();
+ SwDoc* pDoc = GetView()->GetDocShell()->GetDoc();
+ Reference< lang::XUnoTunnel > xIfcTunnel(xInterface, uno::UNO_QUERY);
+ Reference< text::XTextCursor > xCrsr(xInterface, uno::UNO_QUERY);
+ Reference< container::XIndexAccess > xPosN(xInterface, uno::UNO_QUERY);
+ Reference< text::XTextRange > xPos(xInterface, uno::UNO_QUERY);
+
+ SwPaM * pPam = 0;
+ SwXTextRanges* pPosN = 0;
+ if(xCrsr.is())
+ {
+ //
+ SwXTextCursor* pCursor =
+ xIfcTunnel.is() ?
+ (SwXTextCursor*)xIfcTunnel->getSomething(SwXTextCursor::getUnoTunnelId())
+ : 0;
+
+ if(pCursor && pCursor->GetDoc() == GetView()->GetDocShell()->GetDoc())
+ pPam = lcl_createPamCopy(*((SwXTextCursor*)pCursor)->GetPaM());
+
+ }
+ else if(xPosN.is() &&
+ xIfcTunnel.is() &&
+ 0 != (pPosN = (SwXTextRanges*)xIfcTunnel->getSomething(SwXTextRanges::getUnoTunnelId())))
+ {
+ const SwUnoCrsr* pUnoCrsr = pPosN->GetCursor();
+ if(pUnoCrsr)
+ {
+ pPam = lcl_createPamCopy(*pUnoCrsr);
+ }
+ }
+ else if(xPos.is())
+ {
+ SwUnoInternalPaM aPam(*pDoc);
+ if(SwXTextRange::XTextRangeToSwPaM(aPam, xPos))
+ {
+ pPam = lcl_createPamCopy(aPam);
+ }
+ }
+ if(pPam)
+ {
+ rSh.EnterStdMode();
+ rSh.SetSelection(*pPam);
+ delete pPam;
+ return sal_True;
+ }
+ Reference< uno::XInterface > xFrm(xInterface, uno::UNO_QUERY);;
+
+ if(xFrm.is())
+ {
+ //
+ SwXFrame* pFrame = (SwXFrame*)
+ xIfcTunnel->getSomething(SwXFrame::getUnoTunnelId());
+
+ SwFrmFmt* pFrmFmt = pFrame ? pFrame->GetFrmFmt() : 0;
+ if(pFrmFmt && pFrmFmt->GetDoc() == pDoc)
+ {
+ sal_Bool bSuccess = rSh.GotoFly( pFrmFmt->GetName(), pFrame->GetFlyCntType());
+ if (bSuccess)
+ {
+ rSh.HideCrsr();
+ rSh.EnterSelFrmMode();
+ }
+ }
+ return sal_True;
+ }
+
+ Reference< text::XTextTable > xTbl(xInterface, uno::UNO_QUERY);;
+
+ if(xTbl.is())
+ {
+ SwXTextTable* pTable = (SwXTextTable*)
+ xIfcTunnel->getSomething(SwXTextTable::getUnoTunnelId());
+
+ SwFrmFmt* pTblFrmFmt = pTable ? ((SwXTextTable*)pTable)->GetFrmFmt() : 0;
+ if(pTblFrmFmt &&pTblFrmFmt->GetDoc() == pDoc)
+ {
+ rSh.EnterStdMode();
+ rSh.GotoTable(pTblFrmFmt->GetName());
+ }
+ return sal_True;
+ }
+
+ Reference< text::XTextContent > xBkm(xInterface, uno::UNO_QUERY);;
+
+ if(xBkm.is())
+ {
+ SwXBookmark* pBkm = (SwXBookmark*)
+ xIfcTunnel->getSomething(SwXBookmark::getUnoTunnelId());
+ if(pBkm && pBkm->GetDoc() == pDoc)
+ {
+
+ sal_uInt16 nFndPos = rSh.FindBookmark(pBkm->getName());
+
+ if( USHRT_MAX != nFndPos )
+ {
+ rSh.EnterStdMode();
+ rSh.GotoBookmark( nFndPos );
+ }
+ return sal_True;
+ }
+ }
+ // IndexMark, sdbcx::Index, TextField, Draw, Section, text::Footnote, text::Paragraph
+ //
+
+ Reference< drawing::XShapes > xShapeColl( xInterface, uno::UNO_QUERY );
+ Reference< beans::XPropertySet > xTmpProp(xInterface, uno::UNO_QUERY);
+ SwXShape* pSwXShape = (SwXShape*)
+ xIfcTunnel->getSomething(SwXShape::getUnoTunnelId());
+ SvxShape* pSvxShape = 0;
+ if(pSwXShape)
+ {
+ Reference< uno::XAggregation > xAgg = pSwXShape->GetAggregationInterface();
+ if(xAgg.is())
+ {
+ pSvxShape = (SvxShape*)xIfcTunnel->getSomething(SvxShape::getUnoTunnelId());
+ }
+ }
+
+ if ( pSvxShape || xShapeColl.is() ) // Drawing drawing::Layer
+ {
+ SdrView* pDrawView = rSh.GetDrawView();
+ if (pDrawView)
+ {
+ pDrawView->EndTextEdit();
+ pDrawView->UnmarkAll();
+
+ if (pSvxShape) // einzelnes Shape
+ {
+ SdrObject *pObj = pSvxShape->GetSdrObject();
+ if (pObj)
+ {
+// lcl_ShowObject( *pViewSh, *pDrawView, pObj );
+ SdrPageView* pPV = pDrawView->GetPageViewPvNum(0);
+ if ( pPV && pObj->GetPage() == pPV->GetPage() )
+ {
+ pDrawView->MarkObj( pObj, pPV );
+ }
+ }
+ }
+ else // Shape Collection
+ {
+ SdrPageView* pPV = NULL;
+ long nCount = xShapeColl->getCount();
+ for ( long i = 0; i < nCount; i++ )
+ {
+ Reference< drawing::XShape > xShapeInt;
+ uno::Any aAny = xShapeColl->getByIndex(i);
+ if ( aAny.getValueType() == ::getCppuType((Reference<drawing::XShape>*)0))
+ xShapeInt = *((Reference< drawing::XShape > *) aAny.getValue());
+ if (xShapeInt.is())
+ {
+ Reference< lang::XUnoTunnel> xShapeTunnel(xShapeInt, uno::UNO_QUERY);
+
+ SvxShape* pShape = xShapeTunnel.is() ?
+ (SvxShape*)xShapeTunnel->getSomething(SvxShape::getUnoTunnelId()) : 0;
+
+ 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 );
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return sal_False;
+
+}
+/*-- 17.12.98 09:34:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Any SwXTextView::getSelection(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Reference< uno::XInterface > aRef;
+ SwView* pView = ((SwXTextView*)this)->GetView();
+ if(pView)
+ {
+ // ein interface aus der aktuellen Selektion erzeugen
+ SwWrtShell& rSh = pView->GetWrtShell();
+ ShellModes eSelMode = pView->GetShellMode();
+ switch(eSelMode)
+ {
+ case SEL_TABLE_TEXT :
+ {
+ if(rSh.GetTableCrsr())
+ {
+ DBG_ASSERT(rSh.GetTableFmt(), "kein Tabellenformat?");
+ Reference< text::XTextTableCursor > xCrsr = new SwXTextTableCursor(*rSh.GetTableFmt(),
+ rSh.GetTableCrsr());
+ aRef = Reference< uno::XInterface > (xCrsr, uno::UNO_QUERY);;
+ break;
+ }
+
+ }
+ // ohne Tabellenselektion wird der Text geliefert
+ //break;
+ case SEL_LIST_TEXT :
+ case SEL_TABLE_LIST_TEXT:
+ case SEL_TEXT :
+ {
+ Reference< container::XIndexAccess > xPos = new SwXTextRanges(rSh.GetCrsr());
+ aRef = Reference< uno::XInterface >(xPos, uno::UNO_QUERY);
+ }
+ break;
+ case SEL_FRAME :
+ case SEL_GRAPHIC :
+ case SEL_OBJECT :
+ {
+ //Get FlyFrameFormat; fuer UI Macro Anbindung an Flys
+ const SwFrmFmt* pFmt = rSh.GetFlyFrmFmt();
+ SwXFrame* pxFrame = (SwXFrame*)SwClientIter((SwFrmFmt&)*pFmt).
+ First(TYPE(SwXFrame));
+
+ if(pxFrame) //das einzige gemeinsame interface fuer alle Frames
+ {
+ aRef = Reference< uno::XInterface >((cppu::OWeakObject*)pxFrame, uno::UNO_QUERY);
+ }
+ else
+ {
+ if(SEL_FRAME == eSelMode)
+ {
+ Reference< text::XTextFrame > xFrm = new SwXTextFrame((SwFrmFmt&)*pFmt);
+ aRef = Reference< uno::XInterface >(xFrm, uno::UNO_QUERY);
+ }
+ else if(SEL_GRAPHIC == eSelMode)
+ {
+ Reference< text::XTextContent > xFrm = new SwXTextGraphicObject((SwFrmFmt&)*pFmt);
+ aRef = xFrm;
+ }
+ else
+ {
+ Reference< text::XTextContent > xFrm = new SwXTextEmbeddedObject((SwFrmFmt&)*pFmt);
+ aRef = xFrm;
+ }
+ }
+ }
+ break;
+ case SEL_DRAW :
+ case SEL_DRAW_CTRL :
+ case SEL_DRAW_FORM :
+ case SEL_DRAWTEXT :
+ case SEL_BEZIER :
+ {
+ Reference< drawing::XDrawPageSupplier > xPageSupp;
+ Reference< frame::XModel > xModel = pView->GetDocShell()->GetBaseModel();
+ Reference< lang::XUnoTunnel > xModelTunnel(xModel, uno::UNO_QUERY);
+ SwXTextDocument* pTextDoc = (SwXTextDocument*)xModelTunnel->
+ getSomething(SwXTextDocument::getUnoTunnelId());
+
+ SwFmDrawPage* pSvxDrawPage = pTextDoc->GetDrawPage()->GetSvxPage();
+ Reference< drawing::XShapes > xShCol = new SvxShapeCollection();
+
+ const SdrMarkList& rMarkList = rSh.GetDrawView()->GetMarkList();
+ for(sal_uInt16 i = 0; i < rMarkList.GetMarkCount(); i++)
+ {
+ SdrObject* pObj = rMarkList.GetMark(i)->GetObj();
+ Reference< uno::XInterface > xInt = pSvxDrawPage->GetInterface( pObj );
+ Reference< drawing::XShape > xShape(xInt, uno::UNO_QUERY);;
+ xShCol->add(xShape);
+ }
+ aRef = Reference< uno::XInterface >(xShCol, uno::UNO_QUERY);
+ }
+ break;
+ }
+ }
+ uno::Any aRet(&aRef, ::getCppuType((Reference<uno::XInterface>*)0));
+ return aRet;
+}
+/*-- 17.12.98 09:34:27---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextView::addSelectionChangeListener(
+ const Reference< view::XSelectionChangeListener > & rxListener)
+ throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+
+ Reference< view::XSelectionChangeListener > * pInsert = new Reference< view::XSelectionChangeListener > ;
+ *pInsert = rxListener;
+ aSelChangedListeners.Insert(pInsert, aSelChangedListeners.Count());
+}
+/*-- 17.12.98 09:34:27---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextView::removeSelectionChangeListener(
+ const Reference< view::XSelectionChangeListener > & rxListener)
+ throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRemoved = sal_False;
+ view::XSelectionChangeListener* pLeft = rxListener.get();
+ for(sal_uInt16 i = 0; i < aSelChangedListeners.Count(); i++)
+ {
+ Reference< view::XSelectionChangeListener > * pElem = aSelChangedListeners.GetObject(i);
+ view::XSelectionChangeListener* pRight = pElem->get();
+ if(pLeft == pRight)
+ {
+ aSelChangedListeners.Remove(i);
+ bRemoved = sal_True;
+ delete pElem;
+ }
+ }
+ if(!bRemoved)
+ throw uno::RuntimeException();
+}
+/*-- 17.12.98 09:34:27---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< awt::XControl > SwXTextView::getControl(const Reference< awt::XControlModel > & xModel)
+ throw( container::NoSuchElementException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Reference< awt::XControl > xRet;
+
+ ViewShell *pVSh = 0;
+ SwView* pView = ((SwXTextView*)this)->GetView();
+ if(pView)
+ {
+ SdrModel* pModel = pView->GetDocShell()->GetDoc()->GetDrawModel();
+ if(pModel)
+ {
+ SdrPage* pPage = pModel->GetPage( 0 );
+ Window *pWin = pView->GetWrtShell().GetWin();
+ sal_uInt32 nCount = pPage->GetObjCount();
+ for( sal_uInt32 i=0; i< nCount; i++ )
+ {
+ SdrObject* pObj = pPage->GetObj(i);
+ SdrUnoObj *pFormObj = PTR_CAST( SdrUnoObj, pObj );
+ SdrObjGroup* pGroup;
+ if( pFormObj )
+ {
+ Reference< awt::XControlModel > xCM = pFormObj->GetUnoControlModel();
+ if( xCM.is() && xModel == xCM )
+ {
+ xRet = pFormObj->GetUnoControl( pWin );
+ break;
+ }
+ }
+ else if(0 != (pGroup = PTR_CAST( SdrObjGroup, pObj )))
+ {
+ if(lcl_FindObjInGroup(xRet, pGroup, xModel, pWin))
+ break;
+ }
+ }
+ }
+ }
+ return xRet;
+}
+/*-- 17.12.98 09:34:28---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< text::XTextViewCursor > SwXTextView::getViewCursor(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ SwView* pView = ((SwXTextView*)this)->GetView();
+ if(pView)
+ {
+ if(!pxTextViewCursor)
+ {
+ ((SwXTextView*)this)->pxTextViewCursor = new Reference< text::XTextViewCursor > ;
+ *pxTextViewCursor = new SwXTextViewCursor(pView);
+ }
+ return *pxTextViewCursor;
+ }
+ else
+ throw uno::RuntimeException();
+ return Reference< text::XTextViewCursor > ();
+}
+/*-- 17.12.98 09:34:28---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< beans::XPropertySet > SwXTextView::getViewSettings(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(pView)
+ {
+ if(!pxViewSettings)
+ {
+ ((SwXTextView*)this)->pxViewSettings = new Reference< beans::XPropertySet > ;
+ *pxViewSettings = new SwXViewSettings(sal_False, pView);
+ }
+ }
+ else
+ throw uno::RuntimeException();
+ return *pxViewSettings;
+}
+
+/*-- 17.12.98 09:34:29---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextView::NotifySelChanged()
+{
+ Reference< uno::XInterface > xInt = (cppu::OWeakObject*)(SfxBaseController*)this;
+
+ lang::EventObject aEvent(xInt);
+
+ sal_uInt16 nCount = aSelChangedListeners.Count();
+ for ( sal_uInt16 i = nCount; i--; )
+ {
+ Reference< view::XSelectionChangeListener > *pObj = aSelChangedListeners[i];
+ (*pObj)->selectionChanged(aEvent);
+ }
+}
+/* -----------------------------06.04.00 11:07--------------------------------
+
+ ---------------------------------------------------------------------------*/
+OUString SwXTextView::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXTextView");
+}
+/* -----------------------------06.04.00 11:07--------------------------------
+
+ ---------------------------------------------------------------------------*/
+BOOL SwXTextView::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.text.TextView") == rServiceName;
+}
+/* -----------------------------06.04.00 11:07--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Sequence< OUString > SwXTextView::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.TextView");
+ return aRet;
+}
+
+/******************************************************************
+ * SwXTextViewCursor
+ ******************************************************************/
+/*-- 17.12.98 09:36:23---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXTextViewCursor::SwXTextViewCursor(SwView* pVw) :
+ pView(pVw),
+ aPropSet(aSwMapProvider.GetPropertyMap(PROPERTY_MAP_TEXT_CURSOR))
+{
+
+}
+/*-- 17.12.98 09:36:24---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwXTextViewCursor::~SwXTextViewCursor()
+{
+}
+/*-- 17.12.98 09:36:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::isVisible(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+ return sal_True;
+}
+/*-- 17.12.98 09:36:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::setVisible(sal_Bool bVisible) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+}
+/*-- 17.12.98 09:36:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+awt::Point SwXTextViewCursor::getPosition(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ awt::Point aRet;
+ if(pView)
+ {
+ const SwWrtShell& rSh = pView->GetWrtShell();
+ const SvxULSpaceItem& rUL = rSh.GetPageDesc( rSh.GetCurPageDesc()
+ ).GetMaster().GetULSpace();
+ SwRect aCharRect(rSh.GetCharRect());
+ long nY = aCharRect.Top() -
+ (rUL.GetUpper() + DOCUMENTBORDER);
+ aRet.Y = TWIP_TO_MM100(nY);
+ const SvxLRSpaceItem& rLR = rSh.GetPageDesc( rSh.GetCurPageDesc()
+ ).GetMaster().GetLRSpace();
+ long nX = aCharRect.Left() -
+ (rLR.GetLeft() + DOCUMENTBORDER);
+ aRet.X = TWIP_TO_MM100(nX);
+ }
+ else
+ throw uno::RuntimeException();
+ return aRet;
+}
+/*-- 17.12.98 09:36:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::collapseToStart(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(pView)
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ if(rSh.HasSelection())
+ {
+ SwPaM* pShellCrsr = rSh.GetCrsr();
+ if(*pShellCrsr->GetPoint() > *pShellCrsr->GetMark())
+ pShellCrsr->Exchange();
+ pShellCrsr->DeleteMark();
+ rSh.EnterStdMode();
+ rSh.SetSelection(*pShellCrsr);
+ }
+ }
+ else
+ throw uno::RuntimeException();
+}
+/*-- 17.12.98 09:36:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::collapseToEnd(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(pView)
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ if(rSh.HasSelection())
+ {
+ SwPaM* pShellCrsr = rSh.GetCrsr();
+ if(*pShellCrsr->GetPoint() < *pShellCrsr->GetMark())
+ pShellCrsr->Exchange();
+ pShellCrsr->DeleteMark();
+ rSh.EnterStdMode();
+ rSh.SetSelection(*pShellCrsr);
+ }
+ }
+ else
+ throw uno::RuntimeException();
+}
+/*-- 17.12.98 09:36:27---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::isCollapsed(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ {
+ const SwWrtShell& rSh = pView->GetWrtShell();
+ bRet = rSh.HasSelection();
+ }
+ else
+ throw uno::RuntimeException();
+ return bRet;
+
+}
+/*-- 17.12.98 09:36:27---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::goLeft(sal_Int16 nCount, sal_Bool bExpand) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ {
+ for( sal_uInt16 i = 0; i < nCount; i++ )
+ bRet = pView->GetWrtShell().Left( bExpand, 1, sal_True );
+ }
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/*-- 17.12.98 09:36:27---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::goRight(sal_Int16 nCount, sal_Bool bExpand) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ {
+ for( sal_uInt16 i = 0; i < nCount; i++ )
+ bRet = pView->GetWrtShell().Right( bExpand, 1, sal_True );
+ }
+ else
+ throw uno::RuntimeException();
+ return bRet;
+
+}
+/* -----------------08.03.99 11:18-------------------
+ *
+ * --------------------------------------------------*/
+void SwXTextViewCursor::gotoRange(const Reference< text::XTextRange > & xRange, sal_Bool bExpand) throw(::com::sun::star::uno::RuntimeException)
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(pView && xRange.is())
+ {
+ ShellModes eSelMode = pView->GetShellMode();
+ // ein interface aus der aktuellen Selektion erzeugen
+ SwWrtShell& rSh = pView->GetWrtShell();
+ rSh.EnterStdMode();
+ SwPaM* pShellCrsr = rSh.GetCrsr();
+ SwPaM aOwnPaM(*pShellCrsr->GetPoint());
+ if(pShellCrsr->HasMark())
+ {
+ aOwnPaM.SetMark();
+ *aOwnPaM.GetMark() = *pShellCrsr->GetMark();
+ }
+
+ Reference<lang::XUnoTunnel> xRangeTunnel( xRange, uno::UNO_QUERY);
+ SwXTextRange* pRange = 0;
+ SwXTextCursor* pCursor = 0;
+ if(xRangeTunnel.is())
+ {
+ pRange = (SwXTextRange*)xRangeTunnel->getSomething(
+ SwXTextRange::getUnoTunnelId());
+ pCursor = (SwXTextCursor*)xRangeTunnel->getSomething(
+ SwXTextCursor::getUnoTunnelId());
+ }
+
+ const sal_uInt16 nFrmType = rSh.GetFrmType(0,sal_True);
+
+ SwStartNodeType eSearchNodeType = SwNormalStartNode;
+ if(nFrmType & FRMTYPE_FLY_ANY)
+ eSearchNodeType = SwFlyStartNode;
+ else if(nFrmType &FRMTYPE_HEADER)
+ eSearchNodeType = SwHeaderStartNode;
+ else if(nFrmType & FRMTYPE_FOOTER)
+ eSearchNodeType = SwFooterStartNode;
+ else if(nFrmType & FRMTYPE_TABLE)
+ eSearchNodeType = SwTableBoxStartNode;
+ else if(nFrmType & FRMTYPE_FOOTNOTE)
+ eSearchNodeType = SwFootnoteStartNode;
+
+ const SwStartNode* pOwnStartNode = aOwnPaM.GetNode()->
+ FindSttNodeByType(eSearchNodeType);
+
+ const SwNode* pSrcNode = 0;
+ if(pCursor && pCursor->GetCrsr())
+ {
+ pSrcNode = pCursor->GetCrsr()->GetNode();
+ }
+ else if(pRange && pRange->GetBookmark())
+ {
+ SwBookmark* pBkm = pRange->GetBookmark();
+ pSrcNode = &pBkm->GetPos().nNode.GetNode();
+ }
+ const SwStartNode* pTmp = pSrcNode ? pSrcNode->FindSttNodeByType(eSearchNodeType) : 0;
+
+ //SectionNodes ueberspringen
+ while(pTmp && pTmp->IsSectionNode())
+ {
+ pTmp = pTmp->FindStartNode();
+ }
+ //ohne Expand darf mit dem ViewCursor ueberall hingesprungen werden
+ //mit Expand nur in der gleichen Umgebung
+ if(bExpand &&
+ (pOwnStartNode != pTmp ||
+ (eSelMode != SEL_LIST_TEXT &&
+ eSelMode != SEL_TABLE_LIST_TEXT &&
+ eSelMode != SEL_TEXT)))
+ throw uno::RuntimeException();
+
+ //jetzt muss die Selektion erweitert werden
+ if(bExpand)
+ {
+ // der Cursor soll alles einschliessen, was bisher von ihm und dem uebergebenen
+ // Range eingeschlossen wurde
+ SwPosition aOwnLeft(*aOwnPaM.GetPoint());
+ SwPosition aOwnRight(aOwnPaM.HasMark() ? *aOwnPaM.GetMark() : aOwnLeft);
+ if(aOwnRight < aOwnLeft)
+ {
+ SwPosition aTmp = aOwnLeft;
+ aOwnLeft = aOwnRight;
+ aOwnRight = aTmp;
+ }
+ SwPosition* pParamLeft;
+ SwPosition* pParamRight;
+ if(pCursor)
+ {
+ const SwUnoCrsr* pTmp = pCursor->GetCrsr();
+ pParamLeft = new SwPosition(*pTmp->GetPoint());
+ pParamRight = new SwPosition(pTmp->HasMark() ? *pTmp->GetMark() : *pParamLeft);
+ }
+ else
+ {
+ SwBookmark* pBkm = pRange->GetBookmark();
+ pParamLeft = new SwPosition(pBkm->GetPos());
+ pParamRight = new SwPosition(pBkm->GetOtherPos() ? *pBkm->GetOtherPos() : *pParamLeft);
+ }
+ if(*pParamRight < *pParamLeft)
+ {
+ SwPosition* pTmp = pParamLeft;
+ pParamLeft = pParamRight;
+ pParamRight = pTmp;
+ }
+ // jetzt sind vier SwPositions da, zwei davon werden gebraucht, also welche?
+ if(aOwnRight < *pParamRight)
+ *aOwnPaM.GetPoint() = aOwnRight;
+ else
+ *aOwnPaM.GetPoint() = *pParamRight;
+ aOwnPaM.SetMark();
+ if(aOwnLeft < *pParamLeft)
+ *aOwnPaM.GetMark() = *pParamLeft;
+ else
+ *aOwnPaM.GetMark() = aOwnLeft;
+
+ delete pParamLeft;
+ delete pParamRight;
+ }
+ else
+ {
+ //der Cursor soll dem uebergebenen Range entsprechen
+ if(pCursor)
+ {
+ const SwUnoCrsr* pTmp = pCursor->GetCrsr();
+ *aOwnPaM.GetPoint() = *pTmp->GetPoint();
+ if(pTmp->HasMark())
+ {
+ aOwnPaM.SetMark();
+ *aOwnPaM.GetMark() = *pTmp->GetMark();
+ }
+ else
+ aOwnPaM.DeleteMark();
+ }
+ else
+ {
+ SwBookmark* pBkm = pRange->GetBookmark();
+ *aOwnPaM.GetPoint() = pBkm->GetPos();
+ if(pBkm->GetOtherPos())
+ {
+ aOwnPaM.SetMark();
+ *aOwnPaM.GetMark() = *pBkm->GetOtherPos();
+ }
+ else
+ aOwnPaM.DeleteMark();
+ }
+ }
+ rSh.SetSelection(aOwnPaM);
+ }
+ else
+ throw uno::RuntimeException();
+
+}
+/*-- 17.12.98 09:36:28---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::gotoStart(sal_Bool bExpand) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(pView)
+ pView->GetWrtShell().SttDoc( bExpand );
+ else
+ throw uno::RuntimeException();
+}
+/*-- 17.12.98 09:36:28---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::gotoEnd(sal_Bool bExpand) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(pView)
+ pView->GetWrtShell().EndDoc( bExpand );
+ else
+ throw uno::RuntimeException();
+}
+/*-- 17.12.98 09:36:28---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::jumpToFirstPage(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ bRet = pView->GetWrtShell().SttDoc();
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/*-- 17.12.98 09:36:29---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::jumpToLastPage(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ bRet = rSh.EndDoc();
+ rSh.SttPg();
+ }
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/*-- 17.12.98 09:36:30---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::jumpToPage(sal_Int16 nPage) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ bRet = pView->GetWrtShell().GotoPage(nPage);
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/*-- 17.12.98 09:36:30---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::jumpToNextPage(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ pView->GetWrtShell().SttNxtPg();
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/*-- 17.12.98 09:36:31---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::jumpToPreviousPage(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ bRet = pView->GetWrtShell().EndPrvPg();
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/*-- 17.12.98 09:36:32---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::jumpToEndOfPage(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ bRet = pView->GetWrtShell().EndPg();
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/*-- 17.12.98 09:36:32---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::jumpToStartOfPage(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ bRet = pView->GetWrtShell().SttPg();
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/* -----------------04.10.99 14:21-------------------
+
+ --------------------------------------------------*/
+sal_Int16 SwXTextViewCursor::getPage(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ short nRet = 0;
+ if(pView)
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ sal_uInt16 nPage, nLogPage;
+ rSh.GetPageNum( nPage, nLogPage,
+ rSh.IsCrsrVisible(), sal_False);
+ nRet = (short)nPage;
+ }
+ else
+ throw uno::RuntimeException();
+ return nRet;
+}
+/*-- 17.12.98 09:36:33---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::screenDown(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ {
+ SfxRequest aReq(FN_PAGEDOWN, SFX_CALLMODE_SLOT, pView->GetPool());
+ pView->Execute(aReq);
+ const SfxPoolItem* pRet = aReq.GetReturnValue();
+ bRet = pRet && ((const SfxBoolItem*)pRet)->GetValue();
+ }
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/*-- 17.12.98 09:36:33---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::screenUp(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ {
+ SfxRequest aReq(FN_PAGEUP, SFX_CALLMODE_SLOT, pView->GetPool());
+ pView->Execute(aReq);
+ const SfxPoolItem* pRet = aReq.GetReturnValue();
+ bRet = pRet && ((const SfxBoolItem*)pRet)->GetValue();
+ }
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/*-- 17.12.98 11:59:05---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< text::XText > SwXTextViewCursor::getText(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Reference< text::XText > xRet;
+ if(pView)
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ SwPaM* pShellCrsr = rSh.GetCrsr();
+ SwDoc* pDoc = pView->GetDocShell()->GetDoc();
+ Reference< text::XTextRange > xRg = ::CreateTextRangeFromPosition(pDoc,
+ *pShellCrsr->Start(), 0);
+ xRet = xRg->getText();
+ }
+ else
+ throw uno::RuntimeException();
+ return xRet;
+}
+/*-- 17.12.98 11:59:05---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< text::XTextRange > SwXTextViewCursor::getStart(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Reference< text::XTextRange > xRet;
+ if(pView)
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ SwPaM* pShellCrsr = rSh.GetCrsr();
+ SwDoc* pDoc = pView->GetDocShell()->GetDoc();
+ xRet = ::CreateTextRangeFromPosition(pDoc,
+ *pShellCrsr->Start(), 0);
+ }
+ else
+ throw uno::RuntimeException();
+ return xRet;
+}
+/*-- 17.12.98 11:59:06---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< text::XTextRange > SwXTextViewCursor::getEnd(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Reference< text::XTextRange > xRet;
+ if(pView)
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ SwPaM* pShellCrsr = rSh.GetCrsr();
+ SwDoc* pDoc = pView->GetDocShell()->GetDoc();
+ xRet = ::CreateTextRangeFromPosition(pDoc,
+ *pShellCrsr->End(), 0);
+ }
+ else
+ throw uno::RuntimeException();
+ return xRet;
+}
+/* -----------------12.10.99 09:03-------------------
+
+ --------------------------------------------------*/
+OUString SwXTextViewCursor::getString(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ OUString uRet;
+ if(pView)
+ {
+ ShellModes eSelMode = pView->GetShellMode();
+ switch(eSelMode)
+
+ case SEL_LIST_TEXT :
+ case SEL_TABLE_LIST_TEXT:
+ case SEL_TEXT :
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ SwPaM* pShellCrsr = rSh.GetCrsr();
+ SwXTextCursor::getTextFromPam(*pShellCrsr, uRet);
+ }
+ }
+ return uRet;
+}
+/*-- 17.12.98 11:59:06---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::setString(const OUString& aString) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ DBG_WARNING("not implemented")
+}
+
+/*-- 29.06.00 17:33:38---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Reference< XPropertySetInfo > SwXTextViewCursor::getPropertySetInfo( ) throw(RuntimeException)
+{
+ static Reference< XPropertySetInfo > xRef = aPropSet.getPropertySetInfo();
+ return xRef;
+}
+/*-- 29.06.00 17:33:39---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::setPropertyValue( const OUString& rPropertyName, const Any& aValue )
+ throw(UnknownPropertyException, PropertyVetoException,
+ IllegalArgumentException, WrappedTargetException, RuntimeException)
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(pView)
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ SwPaM* pShellCrsr = rSh.GetCrsr();
+ SwXTextCursor::SetPropertyValue(*pShellCrsr, aPropSet, rPropertyName, aValue );
+ }
+ else
+ throw RuntimeException();
+}
+/*-- 29.06.00 17:33:39---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Any SwXTextViewCursor::getPropertyValue( const OUString& rPropertyName )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Any aRet;
+ if(pView)
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ SwPaM* pShellCrsr = rSh.GetCrsr();
+ aRet = SwXTextCursor::GetPropertyValue( *pShellCrsr, aPropSet, rPropertyName);
+ }
+ else
+ throw RuntimeException();
+ return aRet;
+}
+/*-- 29.06.00 17:33:40---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::addPropertyChangeListener(
+ const OUString& aPropertyName, const Reference< XPropertyChangeListener >& xListener )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+}
+/*-- 29.06.00 17:33:40---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::removePropertyChangeListener(
+ const OUString& aPropertyName, const Reference< XPropertyChangeListener >& aListener )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+}
+/*-- 29.06.00 17:33:41---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::addVetoableChangeListener(
+ const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+}
+/*-- 29.06.00 17:33:41---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::removeVetoableChangeListener( const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+}
+/*-- 29.06.00 17:33:41---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+PropertyState SwXTextViewCursor::getPropertyState( const OUString& rPropertyName ) throw(UnknownPropertyException, RuntimeException)
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ PropertyState eState;
+ if(pView)
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ SwPaM* pShellCrsr = rSh.GetCrsr();
+ eState = SwXTextCursor::GetPropertyState( *pShellCrsr, aPropSet, rPropertyName);
+ }
+ else
+ throw RuntimeException();
+ return eState;
+}
+/*-- 29.06.00 17:33:42---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Sequence< PropertyState > SwXTextViewCursor::getPropertyStates(
+ const Sequence< OUString >& rPropertyNames ) throw(UnknownPropertyException, RuntimeException)
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ Sequence< PropertyState > aRet;
+ if(pView)
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ SwPaM* pShellCrsr = rSh.GetCrsr();
+ aRet = SwXTextCursor::GetPropertyStates(*pShellCrsr, aPropSet, rPropertyNames);
+ }
+ return aRet;
+}
+/*-- 29.06.00 17:33:42---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::setPropertyToDefault( const OUString& rPropertyName )
+ throw(UnknownPropertyException, RuntimeException)
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(pView)
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ SwPaM* pShellCrsr = rSh.GetCrsr();
+ SwXTextCursor::SetPropertyToDefault( *pShellCrsr, aPropSet, rPropertyName);
+ }
+}
+/*-- 29.06.00 17:33:43---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+Any SwXTextViewCursor::getPropertyDefault( const OUString& rPropertyName )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+ Any aRet;
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(pView)
+ {
+ SwWrtShell& rSh = pView->GetWrtShell();
+ SwPaM* pShellCrsr = rSh.GetCrsr();
+ aRet = SwXTextCursor::GetPropertyDefault( *pShellCrsr, aPropSet, rPropertyName);
+ }
+ return aRet;
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.76 2000/09/18 16:06:16 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.75 2000/09/07 15:59:34 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.74 2000/07/10 12:32:19 os
+ chg: acquire/release don't throw exceptions
+
+ Revision 1.73 2000/06/29 16:45:50 os
+ #75928# XTextViewCursor implements XPropertySet/XPropertyState
+
+ Revision 1.72 2000/06/27 07:57:29 obo
+ #65293#
+
+ Revision 1.71 2000/05/24 13:36:13 hr
+ exception specifications
+
+ Revision 1.70 2000/05/23 07:39:15 os
+ SwXTextView : inheritance changed
+
+ Revision 1.69 2000/05/18 08:35:56 os
+ XInterface - mothods
+
+ Revision 1.68 2000/05/16 09:15:14 os
+ project usr removed
+
+ Revision 1.67 2000/05/10 11:55:31 os
+ Basic API removed
+
+ Revision 1.66 2000/04/26 15:00:45 os
+ GetName() returns const String&
+
+ Revision 1.65 2000/04/11 08:05:00 os
+ UNICODE
+
+ Revision 1.64 2000/03/27 10:36:31 os
+ UNO III
+
+ Revision 1.63 2000/03/21 15:39:44 os
+ UNOIII
+
+ Revision 1.62 2000/02/11 14:59:57 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.61 2000/01/03 12:16:26 os
+ #71284# ::select: query for SwXShape-base class before calling getImplementation()
+
+
+ Revision 1.60 1999/11/25 15:37:50 os
+ headers corrected
+
+ Revision 1.59 1999/11/19 16:38:03 os
+ modules renamed
+
+ Revision 1.58 1999/11/03 14:39:20 os
+ getString:: convert to UNICODE
+
+ Revision 1.57 1999/10/12 07:24:19 os
+ #69115# API parameter in GotoLeftRight/LRMargin; getText/getStart+End/collapse
+
+ Revision 1.56 1999/10/05 10:22:04 os
+ new method: getPage
+
+ Revision 1.55 1999/09/28 09:12:43 os
+ #67167# view::XLineCursor, view::XViewCursor inherited
+
+ Revision 1.54 1999/09/07 05:59:43 os
+ #67887# frame::XDispatchProvider
+
+ Revision 1.53 1999/08/31 09:32:00 OS
+ #68459# ::select: correct conversion from uno::Any
+
+
+ Rev 1.52 31 Aug 1999 11:32:00 OS
+ #68459# ::select: correct conversion from uno::Any
+
+ Rev 1.51 26 Aug 1999 11:44:10 HR
+ select/getSelection corrected
+
+ Rev 1.50 25 Aug 1999 16:47:32 OS
+ getSelection/select with uno::Any
+
+ Rev 1.49 16 Aug 1999 17:21:14 OS
+ #65953# select(): shapes implemented
+=======
+/*-- 28.09.99 08:31:19---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::goDown(sal_Int16 nCount, sal_Bool bExpand) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ {
+ for( sal_uInt16 i = 0; i < nCount; i++ )
+ bRet = pView->GetWrtShell().Down( bExpand, 1, sal_True );
+ }
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/*-- 28.09.99 08:31:20---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::goUp(sal_Int16 nCount, sal_Bool bExpand) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ {
+ for( sal_uInt16 i = 0; i < nCount; i++ )
+ bRet = pView->GetWrtShell().Up( bExpand, 1, sal_True );
+ }
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/*-- 28.09.99 08:31:20---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::isAtStartOfLine(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ {
+ bRet = pView->GetWrtShell().IsAtLeftMargin();
+ }
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/*-- 28.09.99 08:31:21---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SwXTextViewCursor::isAtEndOfLine(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ sal_Bool bRet = sal_False;
+ if(pView)
+ {
+ bRet = pView->GetWrtShell().IsAtRightMargin(sal_True);
+ }
+ else
+ throw uno::RuntimeException();
+ return bRet;
+}
+/*-- 28.09.99 08:31:21---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::gotoEndOfLine(sal_Bool bExpand) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(pView)
+ pView->GetWrtShell().RightMargin(bExpand, sal_True);
+ else
+ throw uno::RuntimeException();
+}
+/*-- 28.09.99 08:31:22---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwXTextViewCursor::gotoStartOfLine(sal_Bool bExpand) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ if(pView)
+ pView->GetWrtShell().LeftMargin(bExpand, sal_True);
+ else
+ throw uno::RuntimeException();
+}
+/* -----------------------------06.04.00 11:07--------------------------------
+
+ ---------------------------------------------------------------------------*/
+OUString SwXTextViewCursor::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXTextViewCursor");
+}
+/* -----------------------------06.04.00 11:07--------------------------------
+
+ ---------------------------------------------------------------------------*/
+BOOL SwXTextViewCursor::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.text.TextViewCursor") == rServiceName;
+}
+/* -----------------------------06.04.00 11:07--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Sequence< OUString > SwXTextViewCursor::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.TextViewCursor");
+ return aRet;
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.76 2000/09/18 16:06:16 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.75 2000/09/07 15:59:34 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.74 2000/07/10 12:32:19 os
+ chg: acquire/release don't throw exceptions
+
+ Revision 1.73 2000/06/29 16:45:50 os
+ #75928# XTextViewCursor implements XPropertySet/XPropertyState
+
+ Revision 1.72 2000/06/27 07:57:29 obo
+ #65293#
+
+ Revision 1.71 2000/05/24 13:36:13 hr
+ exception specifications
+
+ Revision 1.70 2000/05/23 07:39:15 os
+ SwXTextView : inheritance changed
+
+ Revision 1.69 2000/05/18 08:35:56 os
+ XInterface - mothods
+
+ Revision 1.68 2000/05/16 09:15:14 os
+ project usr removed
+
+ Revision 1.67 2000/05/10 11:55:31 os
+ Basic API removed
+
+ Revision 1.66 2000/04/26 15:00:45 os
+ GetName() returns const String&
+
+ Revision 1.65 2000/04/11 08:05:00 os
+ UNICODE
+
+ Revision 1.64 2000/03/27 10:36:31 os
+ UNO III
+
+ Revision 1.63 2000/03/21 15:39:44 os
+ UNOIII
+
+ Revision 1.62 2000/02/11 14:59:57 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.61 2000/01/03 12:16:26 os
+ #71284# ::select: query for SwXShape-base class before calling getImplementation()
+
+
+ Revision 1.60 1999/11/25 15:37:50 os
+ headers corrected
+
+ Revision 1.59 1999/11/19 16:38:03 os
+ modules renamed
+
+ Revision 1.58 1999/11/03 14:39:20 os
+ getString:: convert to UNICODE
+
+ Revision 1.57 1999/10/12 07:24:19 os
+ #69115# API parameter in GotoLeftRight/LRMargin; getText/getStart+End/collapse
+
+ Revision 1.56 1999/10/05 10:22:04 os
+ new method: getPage
+
+ Revision 1.55 1999/09/28 09:12:43 os
+ #67167# view::XLineCursor, view::XViewCursor inherited
+
+
+ Rev 1.48 13 Jul 1999 09:34:00 OS
+ getPosition etwas optimiert
+
+ Rev 1.47 07 Jul 1999 08:52:10 OS
+ #67471# view::XSelectionChangeListener now supported
+
+ Rev 1.46 22 Apr 1999 16:09:06 OS
+ #65194# throw -> throw
+
+ Rev 1.45 22 Apr 1999 15:28:52 OS
+ #65124# not implemented - nur noch DBG_WARNING
+
+ Rev 1.44 07 Apr 1999 10:26:32 OS
+ #60348# richtiges Shape liefern
+
+ Rev 1.43 15 Mar 1999 14:38:26 OS
+ #62845# Makro fuer ServiceInfo jetzt auch fuer OS/2
+
+ Rev 1.42 12 Mar 1999 09:57:24 OS
+ #62845# lang::XServiceInfo impl.
+
+ Rev 1.41 10 Mar 1999 16:19:38 OS
+ #63127# Controller-Methoden von der Basisklasse
+
+ Rev 1.40 09 Mar 1999 12:38:08 OS
+ #62393# gotoRange verbessert, #62008# Solar-Mutex
+
+ Rev 1.39 08 Mar 1999 07:43:02 MH
+ update 515
+
+ Rev 1.38 05 Mar 1999 08:51:46 OS
+ #62191# INT statt UINT
+
+ Rev 1.37 10 Feb 1999 16:15:26 OS
+// automatisch auskommentiert - [getIdlClass(es) or queryInterface] - Bitte XTypeProvider benutzen!
+// #52654# lang::XComponent im queryInterface
+
+
+ Rev 1.36 28 Jan 1999 16:27:50 OS
+ #56371# keine Objekte fuer DEBUG anlegen
+
+ Rev 1.35 27 Jan 1999 12:06:08 OS
+ #56371# TF_ONE51
+
+ Rev 1.34 27 Jan 1999 09:59:16 OS
+ #56371# TF_ONE51
+
+ Rev 1.33 17 Dec 1998 12:09:10 OS
+ #56371# TF_ONE51 Zwischenstand
+
+ Rev 1.32 10 Dec 1998 15:54:04 OS
+ #56371# TF_ONE51 Zwischenstand
+
+ Rev 1.31 11 Nov 1998 10:58:06 AWO
+ Include fehlte
+
+ Rev 1.30 09 Nov 1998 14:44:10 OS
+ #58785# getSelection an der XTextView vollstaendig
+
+ Rev 1.29 04 Nov 1998 15:55:26 OS
+ #58289# getControl geht auch in Gruppen
+
+ Rev 1.28 05 Oct 1998 17:32:22 HR
+ UIK() Makro
+
+ Rev 1.27 01 Oct 1998 15:58:14 OM
+ #52654# SelectionChangeListener
+
+ Rev 1.26 01 Oct 1998 11:40:54 HR
+ Typo beseitigt
+
+ Rev 1.25 18 Sep 1998 11:40:56 OS
+ #56651# GotoBookmark optimiert
+
+ Rev 1.24 18 Sep 1998 09:31:34 OS
+ 52654# view::XScreenCursor
+
+ Rev 1.23 17 Sep 1998 15:53:38 OS
+ #52654# text::TextViewCursor(-Supplier)
+
+ Rev 1.22 07 Sep 1998 09:07:06 OS
+ #54862# add/removeSelectionChangeListener
+
+ Rev 1.21 10 Jul 1998 18:09:40 OS
+ PropertySetInfo und IdlClass static
+
+ Rev 1.20 08 Jul 1998 10:00:00 TJ
+ include
+
+ Rev 1.19 03 Jul 1998 07:22:40 OS
+ Ableitung von view::XControlAccess
+
+ Rev 1.18 18 Jun 1998 13:23:34 OS
+ include-Umstellung 396c
+
+ Rev 1.17 18 Jun 1998 09:23:14 OS
+ Ableitung von SfxOfficeDocController
+
+ Rev 1.16 11 Jun 1998 11:06:40 TJ
+ getActualViewData -> getViewData
+
+ Rev 1.15 11 Jun 1998 08:15:48 OS
+ Code-Kopie war nix#
+
+ Rev 1.14 04 Jun 1998 09:40:28 OS
+// automatisch auskommentiert - [getIdlClass(es) or queryInterface] - Bitte XTypeProvider benutzen!
+// getIdlClasses
+
+
+ Rev 1.13 02 Jun 1998 16:18:10 OS
+ 391-Anpassung
+
+ Rev 1.12 02 Jun 1998 15:50:34 OS
+ SwXTextView von frame::XController abgeleitet
+
+ Rev 1.11 26 May 1998 12:33:12 OS
+ SetSelection fuer Cursor
+
+ Rev 1.10 22 May 1998 15:15:24 OS
+ get/setSelection erweitert
+
+ Rev 1.9 14 May 1998 17:50:08 OS
+ div. Namensaenderungen
+
+ Rev 1.8 09 Apr 1998 15:10:34 OS
+ Uno-Umstellung
+
+ Rev 1.7 08 Apr 1998 12:52:24 OS
+ text::ViewSettings auch fuer die TextView; select fuer Frames u. text::Bookmarks
+
+ Rev 1.6 03 Apr 1998 14:37:52 OS
+ wieder aktiviert
+
+ Rev 1.5 30 Jan 1998 15:10:46 OS
+ wieder uebersetzbar
+
+ Rev 1.4 19 Jan 1998 14:58:04 OS
+ wieder uebersetzbar
+
+ Rev 1.3 08 Jan 1998 12:56:48 OS
+ UsrUik -> uno::Uik
+
+ Rev 1.2 19 Dec 1997 18:04:56 OS
+ Jahressicherung
+
+ Rev 1.1 17 Dec 1997 16:19:48 OS
+ Tabellenanfang
+
+ Rev 1.0 16 Dec 1997 11:52:34 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/utlui/attrdesc.cxx b/sw/source/ui/utlui/attrdesc.cxx
new file mode 100644
index 000000000000..730857ffc304
--- /dev/null
+++ b/sw/source/ui/utlui/attrdesc.cxx
@@ -0,0 +1,1367 @@
+/*************************************************************************
+ *
+ * $RCSfile: attrdesc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX //autogen wg. Application
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SVX_ITEMTYPE_HXX
+#include <svx/itemtype.hxx>
+#endif
+
+#ifndef _GRFMGR_HXX
+#include <goodies/grfmgr.hxx>
+#endif
+
+#ifndef _FMTANCHR_HXX //autogen
+#include <fmtanchr.hxx>
+#endif
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _FCHRFMT_HXX //autogen
+#include <fchrfmt.hxx>
+#endif
+#ifndef _FMTSRND_HXX //autogen
+#include <fmtsrnd.hxx>
+#endif
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _FMTTSPLT_HXX //autogen
+#include <fmtlsplt.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _FMTCLDS_HXX //autogen
+#include <fmtclds.hxx>
+#endif
+#ifndef _FMTEIRO_HXX //autogen
+#include <fmteiro.hxx>
+#endif
+#ifndef _FMTURL_HXX //autogen
+#include <fmturl.hxx>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FMTCNCT_HXX //autogen
+#include <fmtcnct.hxx>
+#endif
+#ifndef _FMTLINE_HXX
+#include <fmtline.hxx>
+#endif
+#ifndef _SWATRSET_HXX
+#include <swatrset.hxx>
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+#ifndef _GRFATR_HXX
+#include <grfatr.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _CHARFMT_HXX
+#include <charfmt.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _TOX_HXX
+#include <tox.hxx>
+#endif
+#ifndef _ATTRDESC_HRC
+#include <attrdesc.hrc>
+#endif
+#ifndef _FMTFTNTX_HXX //autogen
+#include <fmtftntx.hxx>
+#endif
+
+
+TYPEINIT2(SwFmtCharFmt,SfxPoolItem,SwClient);
+
+// erfrage die Attribut-Beschreibung
+void SwAttrSet::GetPresentation(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText ) const
+{
+static sal_Char __READONLY_DATA sKomma[] = ", ";
+
+ rText.Erase();
+ String aStr;
+ if( Count() )
+ {
+ SfxItemIter aIter( *this );
+ const International& rInt = Application::GetAppInternational();
+ while( TRUE )
+ {
+#if SUPD>546
+ aIter.GetCurItem()->GetPresentation( ePres, eCoreMetric,
+ ePresMetric, aStr,
+ &rInt );
+#else
+ aIter.GetCurItem()->GetPresentation( ePres, eCoreMetric,
+ ePresMetric, aStr );
+#endif
+ if( rText.Len() && aStr.Len() )
+ rText += String::CreateFromAscii(sKomma);
+ rText += aStr;
+ if( aIter.IsAtEnd() )
+ break;
+ aIter.NextItem();
+ }
+ }
+}
+
+
+void SwPageDesc::GetPresentation(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText ) const
+{
+ rText = GetName();
+}
+
+
+// ATT_CHARFMT *********************************************
+
+
+SfxItemPresentation SwFmtCharFmt::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ break;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ const SwCharFmt *pCharFmt = GetCharFmt();
+ if ( pCharFmt )
+ {
+ String aStr;
+ rText = SW_RESSTR(STR_CHARFMT );
+ pCharFmt->GetPresentation( ePres, eCoreUnit, ePresUnit, aStr );
+ rText += '(';
+ rText += aStr;
+ rText += ')';
+ }
+ else
+ rText = SW_RESSTR( STR_NO_CHARFMT );
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+// ATT_INETFMT *********************************************
+
+
+SfxItemPresentation SwFmtINetFmt::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ break;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ rText = GetValue();
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+/*************************************************************************
+|* class SwFmtDrop
+*************************************************************************/
+
+
+SfxItemPresentation SwFmtDrop::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ rText.Erase();
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ break;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ if ( GetLines() > 1 )
+ {
+ if ( GetChars() > 1 )
+ {
+ rText = String::CreateFromInt32( GetChars() );
+ rText += ' ';
+ }
+ rText += SW_RESSTR( STR_DROP_OVER );
+ rText += ' ';
+ rText += String::CreateFromInt32( GetLines() );
+ rText += ' ';
+ rText += SW_RESSTR( STR_DROP_LINES );
+ }
+ else
+ rText = SW_RESSTR( STR_NO_DROP_LINES );
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+/*************************************************************************
+|* class SwRegisterItem
+*************************************************************************/
+
+
+SfxItemPresentation SwRegisterItem::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ XubString& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ return SFX_ITEM_PRESENTATION_NONE;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ USHORT nId = GetValue() ? STR_REGISTER_ON : STR_REGISTER_OFF;
+ rText = SW_RESSTR( nId );
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+/*************************************************************************
+|* class SwNumRuleItem
+*************************************************************************/
+
+
+SfxItemPresentation SwNumRuleItem::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ XubString& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ return SFX_ITEM_PRESENTATION_NONE;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ if( GetValue().Len() )
+ (((rText = SW_RESSTR( STR_NUMRULE_ON )) +=
+ '(' ) += GetValue() ) += ')';
+ else
+ rText = SW_RESSTR( STR_NUMRULE_OFF );
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+
+/******************************************************************************
+ * Frame-Attribute:
+ ******************************************************************************/
+
+
+SfxItemPresentation SwFmtFrmSize::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ {
+ rText.Erase();
+ break;
+ }
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ rText = SW_RESSTR( STR_FRM_WIDTH );
+ rText += ' ';
+ if ( GetWidthPercent() )
+ {
+ rText += String::CreateFromInt32(GetWidthPercent());
+ rText += '%';
+ }
+ else
+ {
+ rText += ::GetMetricText( GetWidth(), eCoreUnit, ePresUnit );
+ rText += ::GetSvxString( ::GetMetricId( ePresUnit ) );
+ }
+ if ( ATT_VAR_SIZE != GetSizeType() )
+ {
+ rText += ',';
+ rText += ' ';
+ const USHORT nId = ATT_FIX_SIZE == eFrmSize ?
+ STR_FRM_FIXEDHEIGHT : STR_FRM_MINHEIGHT;
+ rText += SW_RESSTR( nId );
+ rText += ' ';
+ if ( GetHeightPercent() )
+ {
+ rText += String::CreateFromInt32(GetHeightPercent());
+ rText += '%';
+ }
+ else
+ {
+ rText += ::GetMetricText( GetHeight(), eCoreUnit, ePresUnit );
+ rText += ::GetSvxString( ::GetMetricId( ePresUnit ) );
+ }
+ }
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+//Kopfzeile, fuer Seitenformate
+//Client von FrmFmt das den Header beschreibt.
+
+
+SfxItemPresentation SwFmtHeader::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ break;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ const USHORT nId = GetHeaderFmt() ? STR_HEADER : STR_NO_HEADER;
+ rText = SW_RESSTR( nId );
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+//Fusszeile, fuer Seitenformate
+//Client von FrmFmt das den Footer beschreibt.
+
+
+SfxItemPresentation SwFmtFooter::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ break;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ const USHORT nId = GetFooterFmt() ? STR_FOOTER : STR_NO_FOOTER;
+ rText = SW_RESSTR( nId );
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+
+SfxItemPresentation SwFmtSurround::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ break;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ USHORT nId = 0;
+ switch ( (SwSurround)GetValue() )
+ {
+ case SURROUND_NONE:
+ nId = STR_SURROUND_NONE;
+ break;
+ case SURROUND_THROUGHT:
+ nId = STR_SURROUND_THROUGHT;
+ break;
+ case SURROUND_PARALLEL:
+ nId = STR_SURROUND_PARALLEL;
+ break;
+ case SURROUND_IDEAL:
+ nId = STR_SURROUND_IDEAL;
+ break;
+ case SURROUND_LEFT:
+ nId = STR_SURROUND_LEFT;
+ break;
+ case SURROUND_RIGHT:
+ nId = STR_SURROUND_RIGHT;
+ break;
+ }
+ if ( nId )
+ rText = SW_RESSTR( nId );
+
+ if ( IsAnchorOnly() )
+ {
+ rText += ' ';
+ rText += SW_RESSTR( STR_SURROUND_ANCHORONLY );
+ }
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+
+//VertOrientation, wie und woran orientiert --
+// sich der FlyFrm in der Vertikalen -----------
+
+
+SfxItemPresentation SwFmtVertOrient::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ break;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ USHORT nId = 0;
+ switch ( GetVertOrient() )
+ {
+ case VERT_NONE:
+ {
+ rText += SW_RESSTR( STR_POS_Y );
+ rText += ' ';
+ rText += ::GetMetricText( GetPos(), eCoreUnit, ePresUnit );
+ rText += ::GetSvxString( ::GetMetricId( ePresUnit ) );
+ }
+ break;
+ case VERT_TOP:
+ nId = STR_VERT_TOP;
+ break;
+ case VERT_CENTER:
+ nId = STR_VERT_CENTER;
+ break;
+ case VERT_BOTTOM:
+ nId = STR_VERT_BOTTOM;
+ break;
+ case VERT_LINE_TOP:
+ nId = STR_LINE_TOP;
+ break;
+ case VERT_LINE_CENTER:
+ nId = STR_LINE_CENTER;
+ break;
+ case VERT_LINE_BOTTOM:
+ nId = STR_LINE_BOTTOM;
+ break;
+ }
+ if ( nId )
+ rText += SW_RESSTR( nId );
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+//HoriOrientation, wie und woran orientiert --
+// sich der FlyFrm in der Hoizontalen ----------
+
+
+SfxItemPresentation SwFmtHoriOrient::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ break;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ USHORT nId = 0;
+ switch ( GetHoriOrient() )
+ {
+ case HORI_NONE:
+ {
+ rText += SW_RESSTR( STR_POS_X );
+ rText += ' ';
+ rText += ::GetMetricText( GetPos(), eCoreUnit, ePresUnit );
+ rText += ::GetSvxString( ::GetMetricId( ePresUnit ) );
+ }
+ break;
+ case HORI_RIGHT:
+ nId = STR_HORI_RIGHT;
+ break;
+ case HORI_CENTER:
+ nId = STR_HORI_CENTER;
+ break;
+ case HORI_LEFT:
+ nId = STR_HORI_LEFT;
+ break;
+ case HORI_INSIDE:
+ nId = STR_HORI_INSIDE;
+ break;
+ case HORI_OUTSIDE:
+ nId = STR_HORI_OUTSIDE;
+ break;
+ case HORI_FULL:
+ nId = STR_HORI_FULL;
+ break;
+ }
+ if ( nId )
+ rText += SW_RESSTR( nId );
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+//FlyAnchor, Anker des Freifliegenden Rahmen ----
+
+
+SfxItemPresentation SwFmtAnchor::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ break;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ USHORT nId = 0;
+ switch ( GetAnchorId() )
+ {
+ case FLY_AT_CNTNT: //Absatzgebundener Rahmen
+ nId = STR_FLY_AT_CNTNT;
+ break;
+ case FLY_IN_CNTNT: //Zeichengebundener Rahmen
+ nId = STR_FLY_IN_CNTNT;
+ break;
+ case FLY_PAGE: //Seitengebundener Rahmen
+ nId = STR_FLY_PAGE;
+ break;
+ }
+ if ( nId )
+ rText += SW_RESSTR( nId );
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+
+SfxItemPresentation SwFmtPageDesc::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ break;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ const SwPageDesc *pPageDesc = GetPageDesc();
+ if ( pPageDesc )
+ rText = pPageDesc->GetName();
+ else
+ rText = SW_RESSTR( STR_NO_PAGEDESC );
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+//Der ColumnDescriptor --------------------------
+
+
+SfxItemPresentation SwFmtCol::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ break;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ USHORT nCnt = GetNumCols();
+ if ( nCnt > 1 )
+ {
+ rText = String::CreateFromInt32(nCnt);
+ rText += ' ';
+ rText += SW_RESSTR( STR_COLUMNS );
+ if ( COLADJ_NONE != GetLineAdj() )
+ {
+ USHORT nWdth = USHORT(GetLineWidth());
+ rText += ' ';
+ rText += SW_RESSTR( STR_LINE_WIDTH );
+ rText += ' ';
+ rText += ::GetMetricText( nWdth, eCoreUnit,
+ SFX_MAPUNIT_POINT );
+ }
+ }
+ else
+ rText.Erase();
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+//URL's und Maps
+
+
+SfxItemPresentation SwFmtURL::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ rText.Erase();
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ break;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ if ( pMap )
+ rText.AppendAscii( RTL_CONSTASCII_STRINGPARAM("Client-Map"));
+ if ( sURL.Len() )
+ {
+ if ( pMap )
+ rText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" - "));
+ rText.AppendAscii( RTL_CONSTASCII_STRINGPARAM("URL: "));
+ rText += sURL;
+ if ( bIsServerMap )
+ rText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" (Server-Map)"));
+ }
+ if ( sTargetFrameName.Len() )
+ {
+ rText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(", Target: "));
+ rText += sTargetFrameName;
+ }
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+
+//SwFmtEditInReadonly
+
+
+SfxItemPresentation SwFmtEditInReadonly::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ rText.Erase();
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ break;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ if ( GetValue() )
+ rText = SW_RESSTR(STR_EDIT_IN_READONLY);
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+
+SfxItemPresentation SwFmtLayoutSplit::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ return SFX_ITEM_PRESENTATION_NONE;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ if ( GetValue() )
+ rText = SW_RESSTR(STR_LAYOUT_SPLIT);
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+SfxItemPresentation SwFmtFtnEndAtTxtEnd::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ break;
+
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ switch( GetValue() )
+ {
+ case FTNEND_ATPGORDOCEND:
+// rText = SW_RESSTR( STR_LAYOUT_FTN );
+ break;
+
+ case FTNEND_ATTXTEND:
+ break;
+
+ case FTNEND_ATTXTEND_OWNNUMSEQ:
+ {
+// String sPrefix;
+// String sSuffix;
+// SwNumType aFmt;
+// USHORT nOffset;
+// rText +=
+ }
+ break;
+ }
+ }
+ break;
+
+ default:
+ ePres = SFX_ITEM_PRESENTATION_NONE;
+ break;
+ }
+ return ePres;
+}
+
+SfxItemPresentation SwFmtChain::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ return SFX_ITEM_PRESENTATION_NONE;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ if ( GetPrev() || GetNext() )
+ {
+ rText = SW_RESSTR(STR_CONNECT1);
+ if ( GetPrev() )
+ {
+ rText += GetPrev()->GetName();
+ if ( GetNext() )
+ rText += SW_RESSTR(STR_CONNECT2);
+ }
+ if ( GetNext() )
+ rText += GetNext()->GetName();
+ }
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+
+SfxItemPresentation SwFmtLineNumber::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ return SFX_ITEM_PRESENTATION_NONE;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ if ( IsCount() )
+ rText += SW_RESSTR(STR_LINECOUNT);
+ else
+ rText += SW_RESSTR(STR_DONTLINECOUNT);
+ if ( GetStartValue() )
+ {
+ rText += ' ';
+ rText += SW_RESSTR(STR_LINCOUNT_START);
+ rText += String::CreateFromInt32(GetStartValue());
+ }
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+// ---------------------- Grafik-Attribute --------------------------
+
+SfxItemPresentation SwMirrorGrf::GetPresentation(
+ SfxItemPresentation ePres, SfxMapUnit eCoreUnit, SfxMapUnit ePresUnit,
+ String& rText, const International* pIntl ) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ USHORT nId;
+ switch( GetValue() )
+ {
+ case RES_DONT_MIRROR_GRF: nId = STR_NO_MIRROR; break;
+ case RES_MIRROR_GRF_VERT: nId = STR_VERT_MIRROR; break;
+ case RES_MIRROR_GRF_HOR: nId = STR_HORI_MIRROR; break;
+ case RES_MIRROR_GRF_BOTH: nId = STR_BOTH_MIRROR; break;
+ default: nId = 0; break;
+ }
+ if ( nId )
+ {
+ rText = SW_RESSTR( nId );
+ if (bGrfToggle)
+ rText += SW_RESSTR( STR_MIRROR_TOGGLE );
+ }
+ }
+ break;
+ default:
+ ePres = SFX_ITEM_PRESENTATION_NONE;
+ rText.Erase();
+ break;
+ }
+ return ePres;
+}
+
+
+SfxItemPresentation SwRotationGrf::GetPresentation(
+ SfxItemPresentation ePres, SfxMapUnit eCoreUnit, SfxMapUnit ePresUnit,
+ String &rText, const International* pIntl) const
+{
+ switch( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ if( SFX_ITEM_PRESENTATION_COMPLETE == ePres )
+ rText = SW_RESSTR( STR_ROTATION );
+ else if( rText.Len() )
+ rText.Erase();
+ ( rText += UniString::CreateFromInt32( GetValue() )) += '°';
+ break;
+
+ default:
+ ePres = SFX_ITEM_PRESENTATION_NONE;
+ rText.Erase();
+ break;
+ }
+ return ePres;
+}
+
+SfxItemPresentation SwLuminanceGrf::GetPresentation(
+ SfxItemPresentation ePres, SfxMapUnit eCoreUnit, SfxMapUnit ePresUnit,
+ String &rText, const International* pIntl) const
+{
+ switch( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ if( SFX_ITEM_PRESENTATION_COMPLETE == ePres )
+ rText = SW_RESSTR( STR_LUMINANCE );
+ else if( rText.Len() )
+ rText.Erase();
+ ( rText += UniString::CreateFromInt32( GetValue() )) += '%';
+ break;
+
+ default:
+ ePres = SFX_ITEM_PRESENTATION_NONE;
+ rText.Erase();
+ break;
+ }
+ return ePres;
+}
+
+SfxItemPresentation SwContrastGrf::GetPresentation(
+ SfxItemPresentation ePres, SfxMapUnit eCoreUnit, SfxMapUnit ePresUnit,
+ String &rText, const International* pIntl) const
+{
+ switch( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ if( SFX_ITEM_PRESENTATION_COMPLETE == ePres )
+ rText = SW_RESSTR( STR_CONTRAST );
+ else if( rText.Len() )
+ rText.Erase();
+ ( rText += UniString::CreateFromInt32( GetValue() )) += '%';
+ break;
+
+ default:
+ ePres = SFX_ITEM_PRESENTATION_NONE;
+ rText.Erase();
+ break;
+ }
+ return ePres;
+}
+
+SfxItemPresentation SwChannelGrf::GetPresentation(
+ SfxItemPresentation ePres, SfxMapUnit eCoreUnit, SfxMapUnit ePresUnit,
+ String &rText, const International* pIntl) const
+{
+ switch( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ if( SFX_ITEM_PRESENTATION_COMPLETE == ePres )
+ {
+ USHORT nId;
+ switch ( Which() )
+ {
+ case RES_GRFATR_CHANNELR: nId = STR_CHANNELR; break;
+ case RES_GRFATR_CHANNELG: nId = STR_CHANNELG; break;
+ case RES_GRFATR_CHANNELB: nId = STR_CHANNELB; break;
+ default: nId = 0; break;
+ }
+ if( nId )
+ rText = SW_RESSTR( nId );
+ else if( rText.Len() )
+ rText.Erase();
+ }
+ else if( rText.Len() )
+ rText.Erase();
+ ( rText += UniString::CreateFromInt32( GetValue() )) += '%';
+ break;
+
+ default:
+ ePres = SFX_ITEM_PRESENTATION_NONE;
+ rText.Erase();
+ break;
+ }
+ return ePres;
+}
+
+SfxItemPresentation SwGammaGrf::GetPresentation(
+ SfxItemPresentation ePres, SfxMapUnit eCoreUnit, SfxMapUnit ePresUnit,
+ String &rText, const International* pIntl) const
+{
+ switch( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ if( SFX_ITEM_PRESENTATION_COMPLETE == ePres )
+ rText = SW_RESSTR( STR_GAMMA );
+ else if( rText.Len() )
+ rText.Erase();
+ ( rText += UniString::CreateFromDouble( GetValue() )) += '%';
+ break;
+
+ default:
+ ePres = SFX_ITEM_PRESENTATION_NONE;
+ rText.Erase();
+ break;
+ }
+ return ePres;
+}
+
+SfxItemPresentation SwInvertGrf::GetPresentation(
+ SfxItemPresentation ePres, SfxMapUnit eCoreUnit, SfxMapUnit ePresUnit,
+ String &rText, const International* pIntl) const
+{
+ rText.Erase();
+ switch( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ if( SFX_ITEM_PRESENTATION_COMPLETE == ePres )
+ {
+ USHORT nId = 0 != GetValue() ? STR_INVERT : STR_INVERT_NOT;
+ rText = SW_RESSTR( nId );
+ }
+ break;
+
+ default:
+ ePres = SFX_ITEM_PRESENTATION_NONE;
+ break;
+ }
+ return ePres;
+}
+
+SfxItemPresentation SwTransparencyGrf::GetPresentation(
+ SfxItemPresentation ePres, SfxMapUnit eCoreUnit, SfxMapUnit ePresUnit,
+ String &rText, const International* pIntl) const
+{
+ switch( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ if( SFX_ITEM_PRESENTATION_COMPLETE == ePres )
+ rText = SW_RESSTR( STR_TRANSPARENCY );
+ else if( rText.Len() )
+ rText.Erase();
+ ( rText += UniString::CreateFromInt32( GetValue() )) += '%';
+ break;
+
+ default:
+ ePres = SFX_ITEM_PRESENTATION_NONE;
+ rText.Erase();
+ break;
+ }
+ return ePres;
+}
+
+SfxItemPresentation SwDrawModeGrf::GetPresentation(
+ SfxItemPresentation ePres, SfxMapUnit eCoreUnit, SfxMapUnit ePresUnit,
+ String &rText, const International* pIntl) const
+{
+ rText.Erase();
+ switch( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ if( SFX_ITEM_PRESENTATION_COMPLETE == ePres )
+ {
+ USHORT nId;
+ switch ( GetValue() )
+ {
+
+ case GRAPHICDRAWMODE_GREYS: nId = STR_DRAWMODE_GREY; break;
+ case GRAPHICDRAWMODE_MONO: nId = STR_DRAWMODE_BLACKWHITE; break;
+ case GRAPHICDRAWMODE_WATERMARK: nId = STR_DRAWMODE_WATERMARK; break;
+ default: nId = STR_DRAWMODE_STD; break;
+ }
+ (rText = SW_RESSTR( STR_DRAWMODE ) ) += SW_RESSTR( nId );
+ }
+ break;
+
+ default:
+ ePres = SFX_ITEM_PRESENTATION_NONE;
+ break;
+ }
+ return ePres;
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.48 2000/09/18 16:06:16 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.47 2000/08/25 12:31:48 jp
+ Graphic Crop-Attribut exported to SVX
+
+ Revision 1.46 2000/08/02 09:23:10 jp
+ GetPresentation for the graphic attributes
+
+ Revision 1.45 2000/07/31 19:25:51 jp
+ new attributes for CJK/CTL and graphic
+
+ Revision 1.44 2000/05/23 19:54:12 jp
+ Bugfixes for Unicode
+
+ Revision 1.43 2000/05/23 15:34:11 jp
+ Bugfixes for Unicode
+
+ Revision 1.42 2000/04/26 15:03:20 os
+ GetName() returns const String&
+
+ Revision 1.41 2000/04/18 15:14:08 os
+ UNICODE
+
+ Revision 1.40 2000/03/03 15:17:05 os
+ StarView remainders removed
+
+ Revision 1.39 2000/02/11 15:00:14 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.38 1999/11/08 17:48:15 jp
+ new attribut: Foot-/Endnote at section end
+
+ Revision 1.37 1999/09/01 08:41:58 OS
+ #66082# GetPresentation: new Parameter
+
+
+ Rev 1.36 01 Sep 1999 10:41:58 OS
+ #66082# GetPresentation: new Parameter
+
+ Rev 1.35 19 Mar 1999 13:40:00 OS
+ #63701# unbenutztes Break-Attribut aus den Sections entfernt
+
+ Rev 1.34 04 Feb 1998 14:09:44 MA
+ new: SwFmtLineNumber
+
+ Rev 1.33 20 Jan 1998 15:14:16 OM
+ Grafiken auf geraden Seiten spiegeln
+
+ Rev 1.32 15 Dec 1997 16:26:06 AMA
+ New: SwSectItem: Soll der uebergeordnete Bereich aufgebrochen werden?
+
+ Rev 1.31 29 Nov 1997 15:08:58 MA
+ includes
+
+ Rev 1.30 21 Nov 1997 12:08:58 MA
+ includes
+
+ Rev 1.29 20 Nov 1997 12:13:36 AMA
+ Opt. SwSurround: GoldCut jetzt als Enum; nicht implementierte Enums entfernt
+
+ Rev 1.28 03 Nov 1997 13:59:28 MA
+ precomp entfernt
+
+ Rev 1.27 31 Oct 1997 14:41:20 MA
+ Chain
+
+ Rev 1.26 28 Oct 1997 13:56:58 MA
+ Connect-Attribut
+
+ Rev 1.25 23 Oct 1997 12:00:30 JP
+ Numerierung aufs Attribut/Format-Konzept umstellen
+
+ Rev 1.24 15 Aug 1997 12:16:06 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.23 11 Apr 1997 13:06:34 MA
+ new: Layout-Split
+
+ Rev 1.22 18 Feb 1997 13:36:16 MA
+ new: Rahmen in Readonly editierbar
+
+ Rev 1.21 11 Nov 1996 10:54:16 MA
+ ResMgr
+
+ Rev 1.20 29 Oct 1996 18:33:12 HJS
+ includes
+
+ Rev 1.19 01 Oct 1996 16:51:28 MA
+ chg: Map und URL gleichzeitig
+
+ Rev 1.18 11 Sep 1996 16:51:36 MA
+ new: Umlauf nur Anker
+
+ Rev 1.17 28 Aug 1996 15:42:34 OS
+ includes
+
+ Rev 1.16 02 Aug 1996 14:57:28 AMA
+ New: INet-Felder werden zu attributiertem Text.
+
+ Rev 1.15 23 Jul 1996 11:02:50 AMA
+ Opt: SwRegisterItem statt Svx..Item
+
+ Rev 1.14 23 Jul 1996 10:49:58 AMA
+ Opt: SwRegisterItem statt Svx..Item
+
+ Rev 1.13 22 Jul 1996 12:53:50 MA
+ new: SwFmtURL
+
+ Rev 1.12 18 Jun 1996 16:59:30 OS
+ ui_pch includen
+
+ Rev 1.11 14 Jun 1996 14:31:04 MA
+ chg: neue Version Prozentangaben
+
+ Rev 1.10 12 Jun 1996 16:05:12 MA
+ new: percent fuer framesize
+
+ Rev 1.9 13 Apr 1996 15:34:12 MA
+ chg: Neue Ausrichtung fuer Zeichengebunde Rahmen
+
+ Rev 1.8 22 Mar 1996 15:18:36 HJS
+ umstellung 311
+
+ Rev 1.7 24 Nov 1995 16:57:24 OM
+ PCH->PRECOMPILED
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/utlui/attrdesc.hrc b/sw/source/ui/utlui/attrdesc.hrc
new file mode 100644
index 000000000000..0434b225e6bd
--- /dev/null
+++ b/sw/source/ui/utlui/attrdesc.hrc
@@ -0,0 +1,149 @@
+/*************************************************************************
+ *
+ * $RCSfile: attrdesc.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _ATTRDESC_HRC
+#define _ATTRDESC_HRC
+
+#include "rcid.hrc"
+
+#define STR_DROP_OVER (RC_ATTR_BEGIN + 1)
+#define STR_DROP_LINES (RC_ATTR_BEGIN + 2)
+#define STR_NO_DROP_LINES (RC_ATTR_BEGIN + 3)
+#define STR_NO_PAGEDESC (RC_ATTR_BEGIN + 4)
+#define STR_NO_MIRROR (RC_ATTR_BEGIN + 5)
+#define STR_VERT_MIRROR (RC_ATTR_BEGIN + 6)
+#define STR_HORI_MIRROR (RC_ATTR_BEGIN + 7)
+#define STR_BOTH_MIRROR (RC_ATTR_BEGIN + 8)
+#define STR_CHARFMT (RC_ATTR_BEGIN + 9)
+#define STR_NO_CHARFMT (RC_ATTR_BEGIN + 10)
+#define STR_FOOTER (RC_ATTR_BEGIN + 11)
+#define STR_NO_FOOTER (RC_ATTR_BEGIN + 12)
+#define STR_HEADER (RC_ATTR_BEGIN + 13)
+#define STR_NO_HEADER (RC_ATTR_BEGIN + 14)
+#define STR_SURROUND_NONE (RC_ATTR_BEGIN + 15)
+#define STR_SURROUND_THROUGHT (RC_ATTR_BEGIN + 16)
+#define STR_SURROUND_PARALLEL (RC_ATTR_BEGIN + 17)
+#define STR_SURROUND_COLUMN (RC_ATTR_BEGIN + 18)
+#define STR_SURROUND_LEFT (RC_ATTR_BEGIN + 19)
+#define STR_SURROUND_RIGHT (RC_ATTR_BEGIN + 20)
+#define STR_SURROUND_INSIDE (RC_ATTR_BEGIN + 21)
+#define STR_SURROUND_OUTSIDE (RC_ATTR_BEGIN + 22)
+#define STR_FRM_WIDTH (RC_ATTR_BEGIN + 23)
+#define STR_FRM_FIXEDHEIGHT (RC_ATTR_BEGIN + 24)
+#define STR_FRM_MINHEIGHT (RC_ATTR_BEGIN + 25)
+#define STR_FLY_AT_CNTNT (RC_ATTR_BEGIN + 26)
+#define STR_FLY_IN_CNTNT (RC_ATTR_BEGIN + 27)
+#define STR_FLY_PAGE (RC_ATTR_BEGIN + 28)
+#define STR_POS_X (RC_ATTR_BEGIN + 29)
+#define STR_POS_Y (RC_ATTR_BEGIN + 30)
+#define STR_VERT_TOP (RC_ATTR_BEGIN + 31)
+#define STR_VERT_CENTER (RC_ATTR_BEGIN + 32)
+#define STR_VERT_BOTTOM (RC_ATTR_BEGIN + 33)
+#define STR_HORI_RIGHT (RC_ATTR_BEGIN + 34)
+#define STR_HORI_CENTER (RC_ATTR_BEGIN + 35)
+#define STR_HORI_LEFT (RC_ATTR_BEGIN + 36)
+#define STR_HORI_INSIDE (RC_ATTR_BEGIN + 37)
+#define STR_HORI_OUTSIDE (RC_ATTR_BEGIN + 38)
+#define STR_HORI_FULL (RC_ATTR_BEGIN + 39)
+#define STR_COLUMNS (RC_ATTR_BEGIN + 40)
+#define STR_LINE_WIDTH (RC_ATTR_BEGIN + 41)
+#define STR_MAX_FTN_HEIGHT (RC_ATTR_BEGIN + 42)
+#define STR_SURROUND_IDEAL (RC_ATTR_BEGIN + 43)
+#define STR_LINE_TOP (RC_ATTR_BEGIN + 44)
+#define STR_LINE_CENTER (RC_ATTR_BEGIN + 45)
+#define STR_LINE_BOTTOM (RC_ATTR_BEGIN + 46)
+#define STR_REGISTER_ON (RC_ATTR_BEGIN + 47)
+#define STR_REGISTER_OFF (RC_ATTR_BEGIN + 48)
+#define STR_SURROUND_ANCHORONLY (RC_ATTR_BEGIN + 49)
+#define STR_EDIT_IN_READONLY (RC_ATTR_BEGIN + 50)
+#define STR_LAYOUT_SPLIT (RC_ATTR_BEGIN + 51)
+#define STR_NUMRULE_ON (RC_ATTR_BEGIN + 52)
+#define STR_NUMRULE_OFF (RC_ATTR_BEGIN + 53)
+#define STR_CONNECT1 (RC_ATTR_BEGIN + 54)
+#define STR_CONNECT2 (RC_ATTR_BEGIN + 55)
+#define STR_MIRROR_TOGGLE (RC_ATTR_BEGIN + 56)
+#define STR_LINECOUNT (RC_ATTR_BEGIN + 57)
+#define STR_DONTLINECOUNT (RC_ATTR_BEGIN + 58)
+#define STR_LINCOUNT_START (RC_ATTR_BEGIN + 59)
+
+#define STR_LUMINANCE (RC_ATTR_BEGIN + 60)
+#define STR_CHANNELR (RC_ATTR_BEGIN + 61)
+#define STR_CHANNELG (RC_ATTR_BEGIN + 62)
+#define STR_CHANNELB (RC_ATTR_BEGIN + 63)
+#define STR_CONTRAST (RC_ATTR_BEGIN + 64)
+#define STR_GAMMA (RC_ATTR_BEGIN + 65)
+#define STR_TRANSPARENCY (RC_ATTR_BEGIN + 66)
+#define STR_INVERT (RC_ATTR_BEGIN + 67)
+#define STR_INVERT_NOT (RC_ATTR_BEGIN + 68)
+#define STR_DRAWMODE (RC_ATTR_BEGIN + 69)
+#define STR_DRAWMODE_STD (RC_ATTR_BEGIN + 70)
+#define STR_DRAWMODE_GREY (RC_ATTR_BEGIN + 71)
+#define STR_DRAWMODE_BLACKWHITE (RC_ATTR_BEGIN + 72)
+#define STR_DRAWMODE_WATERMARK (RC_ATTR_BEGIN + 73)
+#define STR_ROTATION (RC_ATTR_BEGIN + 74)
+
+#define ATTR_ACT_END STR_DRAWMODE_WATERMARK
+
+#if ATTR_ACT_END > RC_ATTR_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+#endif
diff --git a/sw/source/ui/utlui/attrdesc.src b/sw/source/ui/utlui/attrdesc.src
new file mode 100644
index 000000000000..20d30785507d
--- /dev/null
+++ b/sw/source/ui/utlui/attrdesc.src
@@ -0,0 +1,1953 @@
+/*************************************************************************
+ *
+ * $RCSfile: attrdesc.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "globals.hrc"
+#include "attrdesc.hrc"
+/*---------------------------------------------------------------------
+ Strings fuer textuelle Attribute
+ ---------------------------------------------------------------------*/
+String STR_DROP_OVER
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Initialen über : Initialen ³ber */
+ TEXT = "Initialen über" ;
+ TEXT [ English ] = "dropcaps about" ;
+ Text [ english_us ] = "Drop Caps over" ;
+ Text [ italian ] = "Capolettera su" ;
+ Text [ spanish ] = "Líneas para iniciales" ;
+ Text [ french ] = "Lettrines sur" ;
+ Text [ dutch ] = "Initialen over" ;
+ Text [ swedish ] = "Anfangsbokstäver över" ;
+ Text [ danish ] = "initialer på" ;
+ Text [ portuguese ] = "Iniciais sobre" ;
+ Text [ portuguese_brazilian ] = "Initialen über" ;
+ Text[ chinese_simplified ] = "´óд×Öĸ£¬¸ß¶ÈµÈÓÚ";
+ Text[ russian ] = "Èíèöèàëû íàä";
+ Text[ polish ] = "Inicja³y nad";
+ Text[ japanese ] = "ÄÞÛ¯Ìß·¬¯Ìß";
+ Text[ chinese_traditional ] = "¤j¼g¦r¥À¡A°ª«×µ¥©ó";
+ Text[ arabic ] = "ÃÍÑÝ ÇÓÊåáÇáíÉ ÝæÞ";
+ Text[ dutch ] = "Initialen over";
+ Text[ chinese_simplified ] = "´óд×Öĸ£¬¸ß¶ÈµÈÓÚ";
+ Text[ greek ] = "Êåöáëáßá ðÜíù";
+ Text[ korean ] = "´Ü¶ôÀÇ Ã¹¹®ÀÚ Àå½Ä À§Ä¡";
+ Text[ turkish ] = "Baþharfi/leri büyüt";
+ Text[ language_user1 ] = " ";
+};
+String STR_DROP_LINES
+{
+ TEXT = "Zeilen" ;
+ TEXT [ English ] = "lines" ;
+ Text [ english_us ] = "rows" ;
+ Text [ italian ] = "Righe" ;
+ Text [ spanish ] = "Filas" ;
+ Text [ french ] = "lignes" ;
+ Text [ dutch ] = "Regels" ;
+ Text [ swedish ] = "Rader" ;
+ Text [ danish ] = "rækker" ;
+ Text [ portuguese ] = "Linhas" ;
+ Text [ portuguese_brazilian ] = "Zeilen" ;
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ russian ] = "Ñòðîêè";
+ Text[ polish ] = "Wiersze";
+ Text[ japanese ] = "s";
+ Text[ chinese_traditional ] = "¦æ";
+ Text[ arabic ] = "ÇáÕÝæÝ";
+ Text[ dutch ] = "Regels";
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ greek ] = "ÃñáììÝò";
+ Text[ korean ] = "Çà";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+};
+String STR_NO_DROP_LINES
+{
+ TEXT = "keine Initialen" ;
+ TEXT [ English ] = "no dropcaps" ;
+ Text [ dutch ] = "geen initialen" ;
+ Text [ english_us ] = "No Drop Caps" ;
+ Text [ italian ] = "senza capolettera" ;
+ Text [ spanish ] = "Sin iniciales" ;
+ Text [ french ] = "Pas de lettrine" ;
+ Text [ swedish ] = "inga anfangsbokstäver" ;
+ Text [ danish ] = "ingen initialer" ;
+ Text [ portuguese ] = "Sem iniciais" ;
+ Text [ portuguese_brazilian ] = "keine Initialen" ;
+ Text[ chinese_simplified ] = "×ÖÊײ»´óд";
+ Text[ russian ] = "Áåç èíèöèàëîâ";
+ Text[ polish ] = "Bez inicja³ów";
+ Text[ japanese ] = "ÄÞÛ¯Ìß·¬¯Ìß‚È‚µ";
+ Text[ chinese_traditional ] = "¦r­º¤£¤j¼g";
+ Text[ arabic ] = "ÈÏæä ÃÍÑÝ ÇÓÊåáÇáíÉ";
+ Text[ dutch ] = "geen initialen";
+ Text[ chinese_simplified ] = "×ÖÊײ»´óд";
+ Text[ greek ] = "÷ùñßò êåöáëáßá";
+ Text[ korean ] = "´Ü¶ô ù¹®ÀÚ Àå½Ä ¾øÀ½";
+ Text[ turkish ] = "Baþharf yok";
+ Text[ language_user1 ] = " ";
+};
+String STR_NO_PAGEDESC
+{
+ TEXT = "kein Seitenumbruch" ;
+ TEXT [ English ] = "no page break" ;
+ Text [ dutch ] = "geen pagina-einde" ;
+ Text [ english_us ] = "No page break" ;
+ Text [ italian ] = "Senza interruzione di pagina" ;
+ Text [ spanish ] = "sin salto de página" ;
+ Text [ french ] = "Aucun saut de page" ;
+ Text [ swedish ] = "ingen sidbrytning" ;
+ Text [ danish ] = "ingen sideskift" ;
+ Text [ portuguese ] = "Sem quebra de página" ;
+ Text [ portuguese_brazilian ] = "kein Seitenumbruch" ;
+ Text[ chinese_simplified ] = "²»»»Ò³";
+ Text[ russian ] = "áåç ðàçðûâà ñòðàíèö";
+ Text[ polish ] = "Bez ³amania strony";
+ Text[ japanese ] = "‰üÍß°¼Þ‚È‚µ";
+ Text[ chinese_traditional ] = "¤£´«­¶";
+ Text[ arabic ] = "ÈÏæä ÝæÇÕá ÕÝÍÇÊ";
+ Text[ dutch ] = "geen pagina-einde";
+ Text[ chinese_simplified ] = "²»»»Ò³";
+ Text[ greek ] = "íá ìçí ãßíåé áëëáãÞ óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ³ª´©±â°¡ ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Sayfa sonu yok";
+ Text[ language_user1 ] = " ";
+};
+String STR_NO_MIRROR
+{
+ TEXT = "nicht Spiegeln" ;
+ TEXT [ English ] = "no mirror" ;
+ Text [ dutch ] = "niet spiegelen" ;
+ Text [ english_us ] = "Don't mirror" ;
+ Text [ italian ] = "Non rispecchiare" ;
+ Text [ spanish ] = "No reflejar" ;
+ Text [ french ] = "Ne pas refléter" ;
+ Text [ swedish ] = "inte spegla" ;
+ Text [ danish ] = "spejlvend ikke" ;
+ Text [ portuguese ] = "Não reflectir" ;
+ Text [ portuguese_brazilian ] = "nicht Spiegeln" ;
+ Text[ chinese_simplified ] = "²»·´Ó³";
+ Text[ russian ] = "íå îòîáðàæàòü";
+ Text[ polish ] = "Nie przerzucaj";
+ Text[ japanese ] = "”½“]‚µ‚È‚¢";
+ Text[ chinese_traditional ] = "¤£¤Ï¬M";
+ Text[ arabic ] = "ÚÏã ÇáÇäÚßÇÓ";
+ Text[ dutch ] = "niet spiegelen";
+ Text[ chinese_simplified ] = "²»·´Ó³";
+ Text[ greek ] = "Íá ìçí ãßíåé áíôáíÜêëáóç";
+ Text[ korean ] = "´ëĪ ¾ÈÇÔ";
+ Text[ turkish ] = "Yansýtma";
+ Text[ language_user1 ] = " ";
+};
+String STR_VERT_MIRROR
+{
+ TEXT = "vertikal Spiegeln" ;
+ TEXT [ English ] = "mirror vertically" ;
+ Text [ dutch ] = "verticaal spiegelen" ;
+ Text [ english_us ] = "Flip vertical" ;
+ Text [ italian ] = "Rispecchia verticalmente" ;
+ Text [ spanish ] = "Reflejar vertical" ;
+ Text [ french ] = "Refléter verticalement" ;
+ Text [ swedish ] = "spegla vertikalt" ;
+ Text [ danish ] = "spejlvend lodret" ;
+ Text [ portuguese ] = "Reflectir na vertical" ;
+ Text [ portuguese_brazilian ] = "vertikal Spiegeln" ;
+ Text[ chinese_simplified ] = "´¹Ö±·½Ïò·´Ó³";
+ Text[ russian ] = "Îòîáðàçèòü ïî âåðòèêàëè";
+ Text[ polish ] = "Przerzuæ w pionie";
+ Text[ japanese ] = "¶‰E”½“]";
+ Text[ chinese_traditional ] = "««ª½¤Ï¬M";
+ Text[ arabic ] = "ÇäÚßÇÓ ÑÃÓí";
+ Text[ dutch ] = "verticaal spiegelen";
+ Text[ chinese_simplified ] = "´¹Ö±·½Ïò·´Ó³";
+ Text[ greek ] = "ïñéæüíôéá áíáóôñïöÞ";
+ Text[ korean ] = "¼öÁ÷ ´ëĪ";
+ Text[ turkish ] = "Dikey yansýt";
+ Text[ language_user1 ] = " ";
+};
+String STR_HORI_MIRROR
+{
+ TEXT = "horizontal Spiegeln" ;
+ TEXT [ English ] = "mirror horizontally" ;
+ Text [ dutch ] = "horizontaal spiegelen" ;
+ Text [ english_us ] = "Flip horizontal" ;
+ Text [ italian ] = "Rispecchia orizzontalmente" ;
+ Text [ spanish ] = "Reflejar horizontal" ;
+ Text [ french ] = "Refléter horizontalement" ;
+ Text [ swedish ] = "Spegla horisontellt" ;
+ Text [ danish ] = "spejlvend vandret" ;
+ Text [ portuguese ] = "Reflectir na horizontal" ;
+ Text [ portuguese_brazilian ] = "horizontal Spiegeln" ;
+ Text[ chinese_simplified ] = "ˮƽ·½Ïò·´Ó³";
+ Text[ russian ] = "Îòîáðàçèòü ïî âåðòèêàëè";
+ Text[ polish ] = "Przerzuæ w poziomie";
+ Text[ japanese ] = "㉺”½“]";
+ Text[ chinese_traditional ] = "¤ô¥­¤Ï¬M";
+ Text[ arabic ] = "ÇäÚßÇÓ ÃÝÞí";
+ Text[ dutch ] = "horizontaal spiegelen";
+ Text[ chinese_simplified ] = "ˮƽ·½Ïò·´Ó³";
+ Text[ greek ] = "ïñéæüíôéá áíáóôñïöÞ";
+ Text[ korean ] = "¼öÆò ´ëĪ";
+ Text[ turkish ] = "Yatay yansýt";
+ Text[ language_user1 ] = " ";
+};
+String STR_BOTH_MIRROR
+{
+ TEXT = "vert. und horizontal Spiegeln" ;
+ TEXT [ English ] = "mirror vert. and horizontally" ;
+ Text [ english_us ] = "Horizontal and Vertical Flip" ;
+ Text [ italian ] = "Rispecchiare orizzontalmente e verticalmente" ;
+ Text [ spanish ] = "Reflejar vertical y horizontalmente" ;
+ Text [ french ] = "Refléter verticalement et horizontalement" ;
+ Text [ dutch ] = "Hoizontaal en verticaal spiegelen" ;
+ Text [ swedish ] = "spegla vert. och hori." ;
+ Text [ danish ] = "spejlvend lodret og vandret" ;
+ Text [ portuguese_brazilian ] = "vert. und horizontal Spiegeln" ;
+ Text [ portuguese ] = "Reflectir na vertical e na horizontal" ;
+ Text[ chinese_simplified ] = "´¹Ö±ºÍˮƽ·½Ïò·´Ó³";
+ Text[ russian ] = "Îòîáðàçèòü ïî âåðòèêàëè è ãîðèçîíòàëè";
+ Text[ polish ] = "Przerzuæ w pionie i w poziomie";
+ Text[ japanese ] = "㉺‚ƶ‰E‚É”½“]";
+ Text[ chinese_traditional ] = "««ª½©M¤ô¥­¤Ï¬M";
+ Text[ arabic ] = "ÇäÚßÇÓ ÑÃÓí æÃÝÞí";
+ Text[ dutch ] = "Hoizontaal en verticaal spiegelen";
+ Text[ chinese_simplified ] = "´¹Ö±ºÍˮƽ·½Ïò·´Ó³";
+ Text[ greek ] = "ïñéæüíôéá êáé êáôáêüñõöç áíáóôñïöÞ";
+ Text[ korean ] = "¼öÆò°ú ¼öÁ÷ ´ëĪ";
+ Text[ turkish ] = "Dikey ve yatay yansýt";
+ Text[ language_user1 ] = " ";
+};
+String STR_MIRROR_TOGGLE
+{
+ TEXT = " + auf geraden Seiten horizontal Spiegeln" ;
+ TEXT [ English ] = " + mirror horizontal on even page numbers" ;
+ Text [ portuguese ] = " + reflectir horizontalmente nas páginas pares" ;
+ Text [ english_us ] = "+ mirror horizontal on even pages" ;
+ Text [ portuguese_brazilian ] = "+ auf geraden Seiten horizontal Spiegeln" ;
+ Text [ swedish ] = "+ spegelvänd horisontellt på jämna sidor" ;
+ Text [ danish ] = "+ spejlvend på lige sider" ;
+ Text [ italian ] = "+ rispecchia orizzontalmente sulle pagine pari" ;
+ Text [ spanish ] = "+ reflejar horizontalmente en las páginas pares" ;
+ Text [ french ] = "+ refléter horizontalement sur les pages paires" ;
+ Text [ dutch ] = "+ op even pagina's horizontaal spiegelen" ;
+ Text[ chinese_simplified ] = "+ ˮƽ·½Ïò·´Ó³µ½Å¼ÊýÒ³Ãæ";
+ Text[ russian ] = "+Îòîáðàçèòü ïî ãîðèçîíòàëè íà ÷åòíûõ ñòðàíèöàõ";
+ Text[ polish ] = "+ przerzuæ w poziomie na stronach parzystych";
+ Text[ japanese ] = "+ ‹ô”Íß°¼Þ‚É㉺”½“]";
+ Text[ chinese_traditional ] = "+ ¤ô¥­¤Ï¬M¨ì°¸¼Æ­¶­±";
+ Text[ arabic ] = "+ ÇäÚßÇÓ ÃÝÞí Úáì ÇáÕÝÍÇÊ ÇáÒæÌíÉ";
+ Text[ dutch ] = "+ op even pagina's horizontaal spiegelen";
+ Text[ chinese_simplified ] = "+ ˮƽ·½Ïò·´Ó³µ½Å¼ÊýÒ³Ãæ";
+ Text[ greek ] = "+ ïñéæüíôéá áíôáíÜêëáóç óå ìïíÝò óåëßäåò";
+ Text[ korean ] = "+ Á÷¸é¿¡¼­ ¼öÆòÀ¸·Î ´ëĪ";
+ Text[ turkish ] = "+ çift numaralý sayfalarda yatay yansýt";
+ Text[ language_user1 ] = " ";
+};
+String STR_CHARFMT
+{
+ TEXT = "Zeichenvorlage" ;
+ TEXT [ English ] = "Character Style" ;
+ Text [ english_us ] = "Character Style" ;
+ Text [ italian ] = "Modello di carattere" ;
+ Text [ spanish ] = "Estilo de caracteres" ;
+ Text [ french ] = "Style de caractères" ;
+ Text [ dutch ] = "Tekenopmaakprofiel" ;
+ Text [ swedish ] = "Teckenformatmall" ;
+ Text [ danish ] = "tegntypografi" ;
+ Text [ portuguese ] = "Estilos de caracteres" ;
+ Text [ portuguese_brazilian ] = "Zeichenvorlage" ;
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ";
+ Text[ russian ] = "Ñòèëü çíàêîâ";
+ Text[ polish ] = "Styl znaku";
+ Text[ japanese ] = "•¶Žš½À²Ù";
+ Text[ chinese_traditional ] = "¤å¦r¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÇáÃÍÑÝ";
+ Text[ dutch ] = "Tekenopmaakprofiel";
+ Text[ chinese_simplified ] = "×Ö·ûÑùʽ";
+ Text[ greek ] = "Óôõë ÷áñáêôÞñùí";
+ Text[ korean ] = "¹®ÀÚ À¯Çü";
+ Text[ turkish ] = "Karakter biçimi";
+ Text[ language_user1 ] = " ";
+};
+String STR_NO_CHARFMT
+{
+ TEXT = "keine Zeichenvorlage" ;
+ TEXT [ English ] = "no Character Style" ;
+ Text [ english_us ] = "No Character Style" ;
+ Text [ italian ] = "Senza modello di carattere" ;
+ Text [ spanish ] = "El estilo de carácter no existe" ;
+ Text [ french ] = "Pas de style de caractère" ;
+ Text [ dutch ] = "geen opmaakprofiel" ;
+ Text [ swedish ] = "ingen teckenformatmall" ;
+ Text [ danish ] = "ingen tegntypografi" ;
+ Text [ portuguese ] = "Estilo de caracteres inexistente" ;
+ Text [ portuguese_brazilian ] = "keine Zeichenvorlage" ;
+ Text[ chinese_simplified ] = "ÎÞÎÄ×ÖÑùʽ";
+ Text[ russian ] = "Áåç ñòèëÿ çíàêîâ";
+ Text[ polish ] = "Brak stylu znaków";
+ Text[ japanese ] = "•¶Žš½À²Ù‚È‚µ";
+ Text[ chinese_traditional ] = "µL¤å¦r¼Ë¦¡";
+ Text[ arabic ] = "ÈÏæä äãØ ÃÍÑÝ";
+ Text[ dutch ] = "geen opmaakprofiel";
+ Text[ chinese_simplified ] = "ÎÞÎÄ×ÖÑùʽ";
+ Text[ greek ] = "÷ùñßò óôõë ÷áñáêôÞñùí";
+ Text[ korean ] = "¹®ÀÚ À¯ÇüÀÌ ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Karakter biçimi yok";
+ Text[ language_user1 ] = " ";
+};
+String STR_FOOTER
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Fußzeile : Fu˜zeile */
+ TEXT = "Fußzeile" ;
+ TEXT [ English ] = "footer" ;
+ 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 ] = "Sidfot" ;
+ Text [ danish ] = "sidefod" ;
+ Text [ portuguese ] = "Rodapé" ;
+ Text [ portuguese_brazilian ] = "Fußzeile" ;
+ 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 ] = " ";
+};
+String STR_NO_FOOTER
+{
+ /* ### ACHTUNG: Neuer Text in Resource? keine Fußzeile : keine Fu˜zeile */
+ TEXT = "keine Fußzeile" ;
+ TEXT [ English ] = "no footer" ;
+ Text [ english_us ] = "No footer" ;
+ Text [ italian ] = "Senza piè di pagina" ;
+ Text [ spanish ] = "Sin pie de página" ;
+ Text [ french ] = "Pas de pied de page" ;
+ Text [ dutch ] = "geen voettekst" ;
+ Text [ swedish ] = "ingen sidfot" ;
+ Text [ danish ] = "ingen sidefod" ;
+ Text [ portuguese ] = "Sem rodapé" ;
+ Text [ portuguese_brazilian ] = "keine Fußzeile" ;
+ Text[ chinese_simplified ] = "ÎÞÒ³½Å";
+ Text[ russian ] = "áåç íèæíåãî êîëîíòèòóëà";
+ Text[ polish ] = "Bez stopki";
+ Text[ japanese ] = "̯À‚È‚µ";
+ Text[ chinese_traditional ] = "µL­¶§À";
+ Text[ arabic ] = "ÈÏæä ÊÐííá ÇáÕÝÍÉ";
+ Text[ dutch ] = "geen voettekst";
+ Text[ chinese_simplified ] = "ÎÞÒ³½Å";
+ Text[ greek ] = "÷ùñßò õðïóÝëéäï";
+ Text[ korean ] = "¹Ù´Ú±ÛÀÌ ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Altbilgi yok";
+ Text[ language_user1 ] = " ";
+};
+String STR_HEADER
+{
+ TEXT = "Kopfzeile" ;
+ TEXT [ English ] = "header" ;
+ Text [ dutch ] = "koptekst" ;
+ Text [ english_us ] = "Header" ;
+ Text [ italian ] = "Riga d'intestazione" ;
+ Text [ spanish ] = "Encabezamiento" ;
+ Text [ french ] = "En-tête" ;
+ Text [ swedish ] = "Sidhuvud" ;
+ Text [ danish ] = "sidehoved" ;
+ Text [ portuguese ] = "Cabeçalho" ;
+ Text [ portuguese_brazilian ] = "Kopfzeile" ;
+ 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 ] = " ";
+};
+String STR_NO_HEADER
+{
+ TEXT = "keine Kopfzeile" ;
+ TEXT [ English ] = "no header" ;
+ Text [ english_us ] = "No header" ;
+ Text [ italian ] = "Senza intestazione" ;
+ Text [ spanish ] = "Sin encabezamiento" ;
+ Text [ french ] = "Aucun en-tête" ;
+ Text [ dutch ] = "geen koptekst" ;
+ Text [ swedish ] = "inget sidhuvud" ;
+ Text [ danish ] = "intet sidehoved" ;
+ Text [ portuguese ] = "Sem cabeçalho" ;
+ Text [ portuguese_brazilian ] = "keine Kopfzeile" ;
+ Text[ chinese_simplified ] = "ÎÞҳü";
+ Text[ russian ] = "áåç âåðõíåãî êîëîíòèòóëà";
+ Text[ polish ] = "Bez nag³ówka";
+ Text[ japanese ] = "ͯÀÞ‚È‚µ";
+ Text[ chinese_traditional ] = "µL­¶­º";
+ Text[ arabic ] = "ÈÏæä ÑÃÓ ÇáÕÝÍÉ";
+ Text[ dutch ] = "geen koptekst";
+ Text[ chinese_simplified ] = "ÎÞҳü";
+ Text[ greek ] = "÷ùñßò êåöáëßäá";
+ Text[ korean ] = "¸Ó¸®±ÛÀÌ ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Üstbilgi yok";
+ Text[ language_user1 ] = " ";
+};
+String STR_SURROUND_IDEAL
+{
+ TEXT = "idealer Umlauf" ;
+ TEXT [ English ] = "ideal surround" ;
+ Text [ english_us ] = "Optimal wrap" ;
+ Text [ italian ] = "Scorrimento ideale" ;
+ Text [ spanish ] = "Ajuste ideal" ;
+ Text [ french ] = "Adaptation idéale" ;
+ Text [ dutch ] = "ideale omloop" ;
+ Text [ swedish ] = "Optimal textanpassning" ;
+ Text [ danish ] = "optimal ombrydning" ;
+ Text [ portuguese ] = "Ajuste ideal" ;
+ Text [ portuguese_brazilian ] = "idealer Umlauf" ;
+ Text[ chinese_simplified ] = "×î¼ÑÎÄ×Ö»·ÈÆ";
+ Text[ russian ] = "îïòèìàëüíîå îáòåêàíèå";
+ Text[ polish ] = "Obieg idealny";
+ Text[ japanese ] = "Å“K‚ÈÜ‚è•Ô‚µ";
+ Text[ chinese_traditional ] = "³ÌÓì¤å¦rÀô¶";
+ Text[ arabic ] = "ÇáÇáÊÝÇÝ ÇáÃãËá";
+ Text[ dutch ] = "ideale omloop";
+ Text[ chinese_simplified ] = "×î¼ÑÎÄ×Ö»·ÈÆ";
+ Text[ greek ] = "âÝëôéóôç áíáäßðëùóç";
+ Text[ korean ] = "ÃÖÀû ¼øȯ";
+ Text[ turkish ] = "Optimum metin daðýlýmý";
+ Text[ language_user1 ] = " ";
+};
+String STR_SURROUND_NONE
+{
+ TEXT = "kein Umlauf" ;
+ TEXT [ English ] = "no surround" ;
+ Text [ english_us ] = "No wrap" ;
+ Text [ italian ] = "Separato" ;
+ Text [ spanish ] = "Sin ajuste" ;
+ Text [ french ] = "Pas d'adaptation" ;
+ Text [ dutch ] = "geen omloop" ;
+ Text [ swedish ] = "Ingen textanpassning" ;
+ Text [ danish ] = "ingen ombrydning" ;
+ Text [ portuguese ] = "Sem ajuste" ;
+ Text [ portuguese_brazilian ] = "kein Umlauf" ;
+ Text[ chinese_simplified ] = "²»»·ÈÆ";
+ Text[ russian ] = "áåç îáòåêàíèÿ";
+ Text[ polish ] = "Brak obiegu";
+ Text[ japanese ] = "㉺܂è•Ô‚µ";
+ Text[ chinese_traditional ] = "¤£Àô¶";
+ Text[ arabic ] = "ÈÏæä ÇáÊÝÇÝ";
+ Text[ dutch ] = "geen omloop";
+ Text[ chinese_simplified ] = "²»»·ÈÆ";
+ Text[ greek ] = "×ùñßò áíáäßðëùóç";
+ Text[ korean ] = "¼øȯ ¾øÀ½";
+ Text[ turkish ] = "Metin daðýlýmý yok";
+ Text[ language_user1 ] = " ";
+};
+String STR_SURROUND_THROUGHT
+{
+ TEXT = "Durchlauf" ;
+ TEXT [ English ] = "wrap through" ;
+ Text [ english_us ] = "Through" ;
+ Text [ italian ] = "Attraverso" ;
+ Text [ spanish ] = "Continuo" ;
+ Text [ french ] = "À travers" ;
+ Text [ dutch ] = "doorloop" ;
+ Text [ swedish ] = "Textgenomflöde" ;
+ Text [ danish ] = "gennemgående" ;
+ Text [ portuguese ] = "Através do objecto" ;
+ Text [ portuguese_brazilian ] = "Durchlauf" ;
+ Text[ chinese_simplified ] = "¹á´©";
+ Text[ russian ] = "Ñêâîçíîå îáòåêàíèå";
+ Text[ polish ] = "Przep³yw tekstu";
+ Text[ japanese ] = "Ü‚è•Ô‚µ‚È‚µ";
+ Text[ chinese_traditional ] = "¤£Àô¶";
+ Text[ arabic ] = "ÚÈÑ";
+ Text[ dutch ] = "doorloop";
+ Text[ chinese_simplified ] = "¹á´©";
+ Text[ greek ] = "Äéá ìÝóïõ";
+ Text[ korean ] = "Àüü µ¹¸²";
+ Text[ turkish ] = "Metin arkasýna gönder";
+ Text[ language_user1 ] = " ";
+};
+String STR_SURROUND_PARALLEL
+{
+ TEXT = "paralleler Umlauf" ;
+ TEXT [ English ] = "surround parallel" ;
+ Text [ dutch ] = "omloop parallel" ;
+ Text [ english_us ] = "Parallel wrap" ;
+ Text [ italian ] = "Scorrimento parallelo" ;
+ Text [ spanish ] = "Ajuste paralelo" ;
+ Text [ french ] = "Adaptation parallèle" ;
+ Text [ swedish ] = "Parallell textanpassning" ;
+ Text [ danish ] = "parallel ombrydning" ;
+ Text [ portuguese ] = "Ajuste paralelo" ;
+ Text [ portuguese_brazilian ] = "paralleler Umlauf" ;
+ Text[ chinese_simplified ] = "ƽÐл·ÈÆ";
+ Text[ russian ] = "ïàðàëëåëüíîå îáòåêàíèå";
+ Text[ polish ] = "Obieg równoleg³y";
+ Text[ japanese ] = "㉺܂è•Ô‚µ";
+ Text[ chinese_traditional ] = "¥­¦æÀô¶";
+ Text[ arabic ] = "ÇáÊÝÇÝ ãÊæÇÒí";
+ Text[ dutch ] = "omloop parallel";
+ Text[ chinese_simplified ] = "ƽÐл·ÈÆ";
+ Text[ greek ] = "ðáñÜëëçëç áíáäßðëùóç";
+ Text[ korean ] = "ÆòÇà ¼øȯ";
+ Text[ turkish ] = "Paralel metin daðýlýmý";
+ Text[ language_user1 ] = " ";
+};
+String STR_SURROUND_COLUMN
+{
+ TEXT = "spaltiger Umlauf" ;
+ TEXT [ English ] = "surround" ;
+ Text [ dutch ] = "omloop kolom" ;
+ Text [ english_us ] = "Column Wrap" ;
+ Text [ italian ] = "Scorrimento a colonne" ;
+ Text [ spanish ] = "Ajuste en columnas" ;
+ Text [ french ] = "Adaptation en colonnes" ;
+ Text [ swedish ] = "Kolumnanpassning" ;
+ Text [ danish ] = "ombryd kolonne" ;
+ Text [ portuguese ] = "Ajustar colunas" ;
+ Text [ portuguese_brazilian ] = "spaltiger Umlauf" ;
+ Text[ chinese_simplified ] = "ÁÐÄÚÎÄ×Ö»·ÈÆ";
+ Text[ russian ] = "Îáòåêàíèå ââèäå êîëîíîê";
+ Text[ polish ] = "Obieg kolumnowy";
+ Text[ japanese ] = "—ñ‚ÌÜ‚è•Ô‚µ";
+ Text[ chinese_traditional ] = "¦C¤º¤å¦rÀô¶";
+ Text[ arabic ] = "ÇáÊÝÇÝ ÇáÃÚãÏÉ";
+ Text[ dutch ] = "omloop kolom";
+ Text[ chinese_simplified ] = "ÁÐÄÚÎÄ×Ö»·ÈÆ";
+ Text[ greek ] = "Áíáäßðëùóç óôÞëçò";
+ Text[ korean ] = "¿­ ¼øȯ";
+ Text[ turkish ] = "-";
+ Text[ language_user1 ] = " ";
+};
+String STR_SURROUND_LEFT
+{
+ TEXT = "linker Umlauf" ;
+ TEXT [ English ] = "surround left" ;
+ Text [ english_us ] = "Left wrap" ;
+ Text [ italian ] = "Scorrimento a sinistra" ;
+ Text [ spanish ] = "Ajuste a la izquierda" ;
+ Text [ french ] = "Adaptation à gauche" ;
+ Text [ dutch ] = "omloop linkerkant" ;
+ Text [ swedish ] = "Textanpassning vänster" ;
+ Text [ danish ] = "venstre ombrydning" ;
+ Text [ portuguese ] = "Ajuste esquerdo" ;
+ Text [ portuguese_brazilian ] = "linker Umlauf" ;
+ Text[ chinese_simplified ] = "×ó»·ÈÆ";
+ Text[ russian ] = "Îáòåêàíèå ñëåâà";
+ Text[ polish ] = "Obieg z lewej";
+ Text[ japanese ] = "¶‚ÌÜ‚è•Ô‚µ";
+ Text[ chinese_traditional ] = "¥ªÀô¶";
+ Text[ arabic ] = "ÇáÊÝÇÝ ÃíÓÑ";
+ Text[ dutch ] = "omloop linkerkant";
+ Text[ chinese_simplified ] = "×ó»·ÈÆ";
+ Text[ greek ] = "áíáäßðëùóç áñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊÀ¸·Î ¼øȯ";
+ Text[ turkish ] = "Sol metin daðýlýmý";
+ Text[ language_user1 ] = " ";
+};
+String STR_SURROUND_RIGHT
+{
+ TEXT = "rechter Umlauf" ;
+ TEXT [ English ] = "surround right" ;
+ Text [ english_us ] = "Right wrap" ;
+ Text [ italian ] = "Scorrimento a destra" ;
+ Text [ spanish ] = "Ajuste a la derecha" ;
+ Text [ french ] = "Adaptation à droite" ;
+ Text [ dutch ] = "omloop rechterkant" ;
+ Text [ swedish ] = "Textanpassning höger" ;
+ Text [ danish ] = "højre ombrydning" ;
+ Text [ portuguese ] = "Ajuste direito" ;
+ Text [ portuguese_brazilian ] = "rechter Umlauf" ;
+ Text[ chinese_simplified ] = "ÓÒ»·ÈÆ";
+ Text[ russian ] = "Îáòåêàíèå ñïðàâà";
+ Text[ polish ] = "Obieg z prawej";
+ Text[ japanese ] = "‰E‚ÌÜ‚è•Ô‚µ";
+ Text[ chinese_traditional ] = "¥kÀô¶";
+ Text[ arabic ] = "ÇáÊÝÇÝ Ãíãä";
+ Text[ dutch ] = "omloop rechterkant";
+ Text[ chinese_simplified ] = "ÓÒ»·ÈÆ";
+ Text[ greek ] = "áíáäßðëùóç äåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊÀ¸·Î ¼øȯ";
+ Text[ turkish ] = "Sað metin daðýlýmý";
+ Text[ language_user1 ] = " ";
+};
+String STR_SURROUND_INSIDE
+{
+ TEXT = "Umlauf innen" ;
+ TEXT [ English ] = "surround inside" ;
+ Text [ dutch ] = "omloop binnenkant" ;
+ Text [ english_us ] = "Inner wrap" ;
+ Text [ italian ] = "Scorrimento interno" ;
+ Text [ spanish ] = "Ajuste interno" ;
+ Text [ french ] = "Adaptation intérieure" ;
+ Text [ swedish ] = "Anpassning innanför" ;
+ Text [ danish ] = "indre ombrydning" ;
+ Text [ portuguese ] = "Ajuste interior" ;
+ Text [ portuguese_brazilian ] = "Umlauf innen" ;
+ Text[ chinese_simplified ] = "ÄÚ²¿»·ÈÆ";
+ Text[ russian ] = "Îáòåêàíèå âíóòðè";
+ Text[ polish ] = "Obieg wewnêtrzny";
+ Text[ japanese ] = "Ü‚è•Ô‚µ “à";
+ Text[ chinese_traditional ] = "¤º³¡Àô¶";
+ Text[ arabic ] = "ÇáÊÝÇÝ ÏÇÎáí";
+ Text[ dutch ] = "omloop binnenkant";
+ Text[ chinese_simplified ] = "ÄÚ²¿»·ÈÆ";
+ Text[ greek ] = "Áíáäßðëùóç - åóùôåñéêÜ";
+ Text[ korean ] = "³»ºÎ ¼øȯ";
+ Text[ turkish ] = "Ýç metin daðýlýmý";
+ Text[ language_user1 ] = " ";
+};
+String STR_SURROUND_OUTSIDE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Umlauf außen : Umlauf au˜en */
+ TEXT = "Umlauf außen" ;
+ TEXT [ English ] = "surround outside" ;
+ Text [ english_us ] = "Outer wrap" ;
+ Text [ italian ] = "Scorrimento esterno" ;
+ Text [ spanish ] = "Ajuste externo" ;
+ Text [ french ] = "Adaptation extérieure" ;
+ Text [ dutch ] = "omloop buitenkant" ;
+ Text [ swedish ] = "Anpassning utanför" ;
+ Text [ danish ] = "ydre ombrydning" ;
+ Text [ portuguese ] = "Ajuste exterior" ;
+ Text [ portuguese_brazilian ] = "Umlauf außen" ;
+ Text[ chinese_simplified ] = "Íâ»·ÈÆ";
+ Text[ russian ] = "Îáòåêàíèå ñíàðóæè";
+ Text[ polish ] = "Obieg zewnêtrzny";
+ Text[ japanese ] = "Ü‚è•Ô‚µ ŠO";
+ Text[ chinese_traditional ] = "¥~Àô¶";
+ Text[ arabic ] = "ÇáÊÝÇÝ ÎÇÑÌí";
+ Text[ dutch ] = "omloop buitenkant";
+ Text[ chinese_simplified ] = "Íâ»·ÈÆ";
+ Text[ greek ] = "Áíáäßðëùóç - åîùôåñéêÜ";
+ Text[ korean ] = "¿ÜºÎ ¼øȯ";
+ Text[ turkish ] = "Dýþ metin daðýlýmý";
+ Text[ language_user1 ] = " ";
+};
+String STR_SURROUND_ANCHORONLY
+{
+ TEXT = "(nur Anker)" ;
+ TEXT [ English ] = "(Anchor only)" ;
+ Text [ dutch ] = "(alleen anker)" ;
+ Text [ english_us ] = "(Anchor only)" ;
+ Text [ italian ] = "(solo ancoraggio)" ;
+ Text [ spanish ] = "(solo ancla)" ;
+ Text [ french ] = "(ancre seule)" ;
+ Text [ swedish ] = "(endast ankare)" ;
+ Text [ danish ] = "(kun anker)" ;
+ Text [ portuguese ] = "(só âncora)" ;
+ Text [ portuguese_brazilian ] = "(nur Anker)" ;
+ Text[ chinese_simplified ] = "(Ö»ÊDZê¼Ç)";
+ Text[ russian ] = "(òîëüêî ïðèâÿçêà)";
+ Text[ polish ] = "(tylko kotwica)";
+ Text[ japanese ] = "(±Ý¶°‚Ì‚Ý)";
+ Text[ chinese_traditional ] = "(¥u¬O¼Ð¸¹)";
+ Text[ arabic ] = "(ÇáãÑÓÇÉ ÝÞØ)";
+ Text[ dutch ] = "(alleen anker)";
+ Text[ chinese_simplified ] = "(Ö»ÊDZê¼Ç)";
+ Text[ greek ] = "(ìüíï áãêýñùóç)";
+ Text[ korean ] = "(°íÁ¤ ±âÁØ ¸¸)";
+ Text[ turkish ] = "(yalnýzca sabitleyici)";
+ Text[ language_user1 ] = " ";
+};
+String STR_FRM_WIDTH
+{
+ TEXT = "Breite:" ;
+ TEXT [ English ] = "width:" ;
+ Text [ dutch ] = "breedte:" ;
+ Text [ english_us ] = "Width:" ;
+ Text [ italian ] = "Larghezza:" ;
+ Text [ spanish ] = "Ancho:" ;
+ Text [ french ] = "Largeur :" ;
+ Text [ swedish ] = "Bredd:" ;
+ Text [ danish ] = "bredde:" ;
+ Text [ portuguese ] = "Largura:" ;
+ Text [ portuguese_brazilian ] = "Breite:" ;
+ Text[ chinese_simplified ] = "¿í£º";
+ Text[ russian ] = "Øèðèíà:";
+ Text[ polish ] = "SzerokoϾ:";
+ Text[ japanese ] = "•:";
+ Text[ chinese_traditional ] = "¼e¡G";
+ Text[ arabic ] = "ÇáÚÑÖ:";
+ Text[ dutch ] = "breedte:";
+ Text[ chinese_simplified ] = "¿í£º";
+ Text[ greek ] = "ÐëÜôïò:";
+ Text[ korean ] = "³Êºñ:";
+ Text[ turkish ] = "Geniþlik:";
+ Text[ language_user1 ] = " ";
+};
+String STR_FRM_FIXEDHEIGHT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? feste Höhe: : feste H÷he: */
+ TEXT = "feste Höhe:" ;
+ TEXT [ English ] = "fixed height:" ;
+ Text [ dutch ] = "vaste hoogte:" ;
+ Text [ english_us ] = "Fixed height:" ;
+ Text [ italian ] = "altezza fissa:" ;
+ Text [ spanish ] = "Altura fija:" ;
+ Text [ french ] = "Hauteur fixe :" ;
+ Text [ swedish ] = "fast höjd:" ;
+ Text [ danish ] = "fast højde:" ;
+ Text [ portuguese ] = "Altura fixa:" ;
+ Text [ portuguese_brazilian ] = "feste Höhe:" ;
+ Text[ chinese_simplified ] = "¹Ì¶¨¸ß¶È£º";
+ Text[ russian ] = "ôèêñèðîâàííàÿ âûñîòà:";
+ Text[ polish ] = "Sta³a wysokoœæ:";
+ Text[ japanese ] = "‹K’è‚Ì‚‚³:";
+ Text[ chinese_traditional ] = "©T©w°ª«×¡G";
+ Text[ arabic ] = "ÇÑÊÝÇÚ ËÇÈÊ:";
+ Text[ dutch ] = "vaste hoogte:";
+ Text[ chinese_simplified ] = "¹Ì¶¨¸ß¶È£º";
+ Text[ greek ] = "Óôáèåñü ýøïò:";
+ Text[ korean ] = "°íÁ¤µÈ ³ôÀÌ:";
+ Text[ turkish ] = "Sabit yükseklik:";
+ Text[ language_user1 ] = " ";
+};
+String STR_FRM_MINHEIGHT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? min. Höhe: : min. H÷he: */
+ TEXT = "min. Höhe:" ;
+ TEXT [ English ] = "min. height:" ;
+ Text [ english_us ] = "Min. height:" ;
+ Text [ italian ] = "altezza min:" ;
+ Text [ spanish ] = "Altura mínima:" ;
+ Text [ french ] = "Hauteur min. :" ;
+ Text [ dutch ] = "min. hoogte:" ;
+ Text [ swedish ] = "min. höjd:" ;
+ Text [ danish ] = "min. højde:" ;
+ Text [ portuguese ] = "Altura min.:" ;
+ Text [ portuguese_brazilian ] = "min. Höhe:" ;
+ Text[ chinese_simplified ] = "×îС¸ß¶È£º";
+ Text[ russian ] = "ìèí. âûñîòà:";
+ Text[ polish ] = "Min. wysokoϾ:";
+ Text[ japanese ] = "Å’á‚Ì‚‚³:";
+ Text[ chinese_traditional ] = "³Ì¤p°ª«×¡G";
+ Text[ arabic ] = "ÇáÇÑÊÝÇÚ ÇáÃÏäì:";
+ Text[ dutch ] = "min. hoogte:";
+ Text[ chinese_simplified ] = "×îС¸ß¶È£º";
+ Text[ greek ] = "Åëá÷. ýøïò:";
+ Text[ korean ] = "ÃÖ¼Ò ³ôÀÌ:";
+ Text[ turkish ] = "Asg.yükseklik:";
+ Text[ language_user1 ] = " ";
+};
+String STR_FLY_AT_CNTNT
+{
+ TEXT = "absatzgebunden" ;
+ TEXT [ English ] = "at paragraph" ;
+ Text [ dutch ] = "alinea-gebonden" ;
+ Text [ english_us ] = "to paragraph" ;
+ Text [ italian ] = "al paragrafo" ;
+ Text [ spanish ] = "según párrafo" ;
+ Text [ french ] = "lié au paragraphe" ;
+ Text [ swedish ] = "bunden till stycke" ;
+ Text [ danish ] = "bundet til afsnit" ;
+ Text [ portuguese ] = "ligado ao parágrafo" ;
+ Text [ portuguese_brazilian ] = "absatzgebunden" ;
+ Text[ chinese_simplified ] = "ºÍ¶ÎÂäÁ¬ÔÚÒ»Æð";
+ Text[ russian ] = "ïðèâÿçêà ê àáçàöó";
+ Text[ polish ] = "zwi¹zany z akapitem";
+ Text[ japanese ] = "’i—Ž‚ÉŒ‹‡";
+ Text[ chinese_traditional ] = "©M¬q¸¨³s¦b¤@°_";
+ Text[ arabic ] = "ãÑÊÈØ ÈÇáÝÞÑÉ";
+ Text[ dutch ] = "alinea-gebonden";
+ Text[ chinese_simplified ] = "ºÍ¶ÎÂäÁ¬ÔÚÒ»Æð";
+ Text[ greek ] = "ðñïò ðáñÜãñáöï";
+ Text[ korean ] = "´Ü¶ô¿¡";
+ Text[ turkish ] = "Paragrafa baðlý";
+ Text[ language_user1 ] = " ";
+};
+String STR_FLY_IN_CNTNT
+{
+ TEXT = "zeichengebunden" ;
+ TEXT [ English ] = "at character" ;
+ Text [ english_us ] = "to character" ;
+ Text [ italian ] = "al carattere" ;
+ Text [ spanish ] = "según carácter" ;
+ Text [ french ] = "au caractère" ;
+ Text [ dutch ] = "schriftteken-gebonden" ;
+ Text [ swedish ] = "bunden till tecken" ;
+ Text [ danish ] = "bundet til tegn" ;
+ Text [ portuguese ] = "conforme carácter" ;
+ Text [ portuguese_brazilian ] = "zeichengebunden" ;
+ Text[ chinese_simplified ] = "ºÍÎÄ×ÖÁ¬ÔÚÒ»Æð";
+ Text[ russian ] = "ïðèâÿçêà ê çíàêó";
+ Text[ polish ] = "zwi¹zany ze znakiem";
+ Text[ japanese ] = "•¶Žš‚ÉŒ‹‡";
+ Text[ chinese_traditional ] = "©M¤å¦r³s¦b¤@°_";
+ Text[ arabic ] = "ãÑÊÈØ ÈÇáÃÍÑÝ";
+ Text[ dutch ] = "schriftteken-gebonden";
+ Text[ chinese_simplified ] = "ºÍÎÄ×ÖÁ¬ÔÚÒ»Æð";
+ Text[ greek ] = "ðñïò ÷áñáêôÞñá";
+ Text[ korean ] = "¹®ÀÚ¿¡";
+ Text[ turkish ] = "Karaktere baðlý";
+ Text[ language_user1 ] = " ";
+};
+String STR_FLY_PAGE
+{
+ TEXT = "seitengebunden" ;
+ TEXT [ English ] = "at page" ;
+ Text [ english_us ] = "to page" ;
+ Text [ italian ] = "alla pagina" ;
+ Text [ spanish ] = "a la página" ;
+ Text [ french ] = "à la page" ;
+ Text [ dutch ] = "pagina-gebonden" ;
+ Text [ swedish ] = "bunden till sida" ;
+ Text [ danish ] = "bundet til side" ;
+ Text [ portuguese ] = "conforme página" ;
+ Text [ portuguese_brazilian ] = "seitengebunden" ;
+ Text[ chinese_simplified ] = "ºÍÒ³Á¬ÔÚÒ»Æð";
+ Text[ russian ] = "ïðèâÿçêà ê ñòðàíèöå";
+ Text[ polish ] = "zwi¹zany ze stron¹";
+ Text[ japanese ] = "Íß°¼Þ‚ÉŒ‹‡";
+ Text[ chinese_traditional ] = "©M­¶³s¦b¤@°_";
+ Text[ arabic ] = "ãÑÊÈØ ÈÇáÕÝÍÉ";
+ Text[ dutch ] = "pagina-gebonden";
+ Text[ chinese_simplified ] = "ºÍÒ³Á¬ÔÚÒ»Æð";
+ Text[ greek ] = "ðñïò óåëßäá";
+ Text[ korean ] = "ÆäÀÌÁö¿¡";
+ Text[ turkish ] = "Sayfaya baðlý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POS_X
+{
+ TEXT = "X-Koord.:" ;
+ TEXT [ English ] = "X-Pos.:" ;
+ Text [ english_us ] = "X Coordinate:" ;
+ Text [ italian ] = "Coord. X:" ;
+ Text [ spanish ] = "Coord. X:" ;
+ Text [ french ] = "Coord. X :" ;
+ Text [ dutch ] = "X-coörd.:" ;
+ Text [ swedish ] = "X-Koord.:" ;
+ Text [ danish ] = "X-koord.:" ;
+ Text [ portuguese ] = "Coordenada X:" ;
+ Text [ portuguese_brazilian ] = "X-Koord.:" ;
+ Text[ chinese_simplified ] = "X-×ø±ê£º";
+ Text[ russian ] = "X-Êîîðäèíàòà.:";
+ Text[ polish ] = "Oœ X.:";
+ Text[ japanese ] = "XÀ•W:";
+ Text[ chinese_traditional ] = "X-§¤¼Ð¡G";
+ Text[ arabic ] = "ÇáÅÍÏÇËí ÇáÓíäí:";
+ Text[ dutch ] = "X-coörd.:";
+ Text[ chinese_simplified ] = "X-×ø±ê£º";
+ Text[ greek ] = "ÓõíôåôáãìÝíç X:";
+ Text[ korean ] = "X ÁÂÇ¥:";
+ Text[ turkish ] = "X koord.:";
+ Text[ language_user1 ] = " ";
+};
+String STR_POS_Y
+{
+ TEXT = "Y-Koord.:" ;
+ TEXT [ English ] = "Y-Pos.:" ;
+ Text [ english_us ] = "Y Coordinate:" ;
+ Text [ italian ] = "Coord. Y:" ;
+ Text [ spanish ] = "Coord. Y:" ;
+ Text [ french ] = "Coord. Y :" ;
+ Text [ dutch ] = "Y-coörd.:" ;
+ Text [ swedish ] = "Y-Koord.:" ;
+ Text [ danish ] = "Y-koord.:" ;
+ Text [ portuguese ] = "Coordenada Y:" ;
+ Text [ portuguese_brazilian ] = "Y-Koord.:" ;
+ Text[ chinese_simplified ] = "Y-×ø±ê£º";
+ Text[ russian ] = "Y-Êîîðäèíàòà.:";
+ Text[ polish ] = "Oœ Y.:";
+ Text[ japanese ] = "YÀ•W:";
+ Text[ chinese_traditional ] = "Y-§¤¼Ð¡G";
+ Text[ arabic ] = "ÇáÅÍÏÇËí ÇáÕÇÏí:";
+ Text[ dutch ] = "Y-coörd.:";
+ Text[ chinese_simplified ] = "Y-×ø±ê£º";
+ Text[ greek ] = "ÓõíôåôáãìÝíç Y:";
+ Text[ korean ] = "Y ÁÂÇ¥:";
+ Text[ turkish ] = "Y koord.:";
+ Text[ language_user1 ] = " ";
+};
+String STR_VERT_TOP
+{
+ TEXT = "oben" ;
+ TEXT [ English ] = "at top" ;
+ Text [ dutch ] = "boven" ;
+ Text [ english_us ] = "at top" ;
+ Text [ italian ] = "in alto" ;
+ Text [ spanish ] = "arriba" ;
+ Text [ french ] = "en haut" ;
+ Text [ swedish ] = "överst" ;
+ Text [ danish ] = "foroven" ;
+ Text [ portuguese ] = "em cima" ;
+ Text [ portuguese_brazilian ] = "oben" ;
+ Text[ chinese_simplified ] = "ÉÏ";
+ Text[ russian ] = "ñâåðõó";
+ Text[ polish ] = "na górze";
+ Text[ japanese ] = "ã";
+ Text[ chinese_traditional ] = "¤W";
+ Text[ arabic ] = "ÃÚáì";
+ Text[ dutch ] = "boven";
+ Text[ chinese_simplified ] = "ÉÏ";
+ Text[ greek ] = "ðÜíù";
+ Text[ korean ] = "À§¿¡";
+ Text[ turkish ] = "üstte";
+ Text[ language_user1 ] = " ";
+};
+String STR_VERT_CENTER
+{
+ TEXT = "vertikal zentriert" ;
+ TEXT [ English ] = "centered vertically" ;
+ Text [ dutch ] = "verticaal gecentreerd" ;
+ Text [ english_us ] = "Centered vertically" ;
+ Text [ italian ] = "centrato verticalmente" ;
+ Text [ spanish ] = "centrado vertical" ;
+ Text [ french ] = "Centré verticalement" ;
+ Text [ swedish ] = "vertikalt centrerad" ;
+ Text [ danish ] = "lodret centreret" ;
+ Text [ portuguese ] = "centrado na vertical" ;
+ Text [ portuguese_brazilian ] = "vertikal zentriert" ;
+ Text[ chinese_simplified ] = "´¹Ö±¾ÓÖÐ";
+ Text[ russian ] = "âåðòèêàëüíî ïî öåíòðó";
+ Text[ polish ] = "Wyœrodkuj pionowo";
+ Text[ japanese ] = "‚’¼‚É’†‰›‘µ‚¦";
+ Text[ chinese_traditional ] = "««ª½¸m¤¤";
+ Text[ arabic ] = "ÊæÓíØ ÚãæÏí";
+ Text[ dutch ] = "verticaal gecentreerd";
+ Text[ chinese_simplified ] = "´¹Ö±¾ÓÖÐ";
+ Text[ greek ] = "êáôáêüñõöá êåíôñáñéóìÝíá";
+ Text[ korean ] = "¼öÁ÷À¸·Î °¡¿îµ¥";
+ Text[ turkish ] = "Dikey ortala";
+ Text[ language_user1 ] = " ";
+};
+String STR_VERT_BOTTOM
+{
+ TEXT = "unten" ;
+ TEXT [ English ] = "at bottom" ;
+ Text [ dutch ] = "onder" ;
+ Text [ english_us ] = "at bottom" ;
+ Text [ italian ] = "in basso" ;
+ Text [ spanish ] = "abajo" ;
+ Text [ french ] = "en bas" ;
+ Text [ swedish ] = "nederst" ;
+ Text [ danish ] = "forneden" ;
+ Text [ portuguese ] = "em baixo" ;
+ Text [ portuguese_brazilian ] = "unten" ;
+ Text[ chinese_simplified ] = "ÏÂ";
+ Text[ russian ] = "ñíèçó";
+ Text[ polish ] = "na dole";
+ Text[ japanese ] = "‰º";
+ Text[ chinese_traditional ] = "¤U";
+ Text[ arabic ] = "ÃÓÝá";
+ Text[ dutch ] = "onder";
+ Text[ chinese_simplified ] = "ÏÂ";
+ Text[ greek ] = "êÜôù";
+ Text[ korean ] = "¾Æ·¡¿¡";
+ Text[ turkish ] = "altta";
+ Text[ language_user1 ] = " ";
+};
+String STR_LINE_TOP
+{
+ TEXT = "Zeile oben" ;
+ TEXT [ English ] = "line at top" ;
+ Text [ dutch ] = "bovenste regel" ;
+ Text [ english_us ] = "Top of line" ;
+ Text [ italian ] = "Riga in alto" ;
+ Text [ spanish ] = "Línea superior" ;
+ Text [ french ] = "Ligne supérieure" ;
+ Text [ swedish ] = "Översta raden" ;
+ Text [ danish ] = "række øverst" ;
+ Text [ portuguese ] = "Linha superior" ;
+ Text [ portuguese_brazilian ] = "Zeile oben" ;
+ Text[ chinese_simplified ] = "ÐÐÏòÉÏ";
+ Text[ russian ] = "Ñòðîêà ñâåðõó";
+ Text[ polish ] = "Wiersz na górze";
+ Text[ japanese ] = "ü‚Ìã";
+ Text[ chinese_traditional ] = "¦æ¦V¤W";
+ Text[ arabic ] = "ÃÚáì ÇáÓØÑ";
+ Text[ dutch ] = "bovenste regel";
+ Text[ chinese_simplified ] = "ÐÐÏòÉÏ";
+ Text[ greek ] = "ÃñáììÞ ðÜíù";
+ Text[ korean ] = "¼± À§";
+ Text[ turkish ] = "Satýr üstü";
+ Text[ language_user1 ] = " ";
+};
+String STR_LINE_CENTER
+{
+ TEXT = "vertikal zur Zeile zentriert" ;
+ TEXT [ English ] = "line centered vertically" ;
+ Text [ dutch ] = "verticaal op de regel gecentreerd" ;
+ Text [ english_us ] = "Line centered" ;
+ Text [ italian ] = "centrato verticalmente alla riga" ;
+ Text [ spanish ] = "Centrado verticalmente a la línea" ;
+ Text [ french ] = "Centré sur la ligne à la verticale" ;
+ Text [ swedish ] = "centrerad vertikalt till rad" ;
+ Text [ danish ] = "lodret til række centreret" ;
+ Text [ portuguese ] = "Centrado sobre a linha na vertical" ;
+ Text [ portuguese_brazilian ] = "vertikal zur Zeile zentriert" ;
+ Text[ chinese_simplified ] = "ºÍÐд¹Ö±¾ÓÖÐ";
+ Text[ russian ] = "Âåðòèêàëüíîå öåíòðèðîâàíèå ïî îòíîøåíèþ ê ñòðîêå";
+ Text[ polish ] = "Wyœrodkowany pionowo do wiersza";
+ Text[ japanese ] = "¾Ù‚É‚’¼‚É’†‰›‘µ‚¦";
+ Text[ chinese_traditional ] = "©M¦æ««ª½¸m¤¤";
+ Text[ arabic ] = "ãäÊÕÝ ÇáÓØÑ";
+ Text[ dutch ] = "verticaal op de regel gecentreerd";
+ Text[ chinese_simplified ] = "ºÍÐд¹Ö±¾ÓÖÐ";
+ Text[ greek ] = "êáôáêüñõöá êåíôñáñéóìÝíá ùò ðñïò ôç ãñáììÞ";
+ Text[ korean ] = "ÁÙ°ú ¼öÁ÷¹æÇâ °¡¿îµ¥";
+ Text[ turkish ] = "Satýra göre dikey ortala";
+ Text[ language_user1 ] = " ";
+};
+String STR_LINE_BOTTOM
+{
+ TEXT = "Zeile unten" ;
+ TEXT [ English ] = "line at bottom" ;
+ Text [ dutch ] = "onderste regel" ;
+ Text [ english_us ] = "Bottom of line" ;
+ Text [ italian ] = "Riga in basso" ;
+ Text [ spanish ] = "Línea inferior" ;
+ Text [ french ] = "Ligne inférieure" ;
+ Text [ swedish ] = "Nedersta raden" ;
+ Text [ danish ] = "række nederst" ;
+ Text [ portuguese ] = "Linha inferior" ;
+ Text [ portuguese_brazilian ] = "Zeile unten" ;
+ Text[ chinese_simplified ] = "ÐÐÏòÏÂ";
+ Text[ russian ] = "Ñòðîêà ñíèçó";
+ Text[ polish ] = "Wiersz na dole";
+ Text[ japanese ] = "ü‚̉º";
+ Text[ chinese_traditional ] = "¦æ¦V¤U";
+ Text[ arabic ] = "ÃÓÝá ÇáÓØÑ";
+ Text[ dutch ] = "onderste regel";
+ Text[ chinese_simplified ] = "ÐÐÏòÏÂ";
+ Text[ greek ] = "ÃñáììÞ êÜôù";
+ Text[ korean ] = "¼± ¾Æ·¡";
+ Text[ turkish ] = "Satýr altý";
+ Text[ language_user1 ] = " ";
+};
+String STR_REGISTER_ON
+{
+ TEXT = "Registerhaltigkeit" ;
+ TEXT [ English ] = "register" ;
+ Text [ english_us ] = "Register-true" ;
+ Text [ italian ] = "Conformità registro" ;
+ Text [ spanish ] = "Conformidad registro" ;
+ Text [ french ] = "Contrôle de repérage" ;
+ Text [ dutch ] = "registeren" ;
+ Text [ swedish ] = "Register" ;
+ Text [ danish ] = "hold register" ;
+ Text [ portuguese ] = "Registo" ;
+ Text [ portuguese_brazilian ] = "Registerhaltigkeit" ;
+ Text[ chinese_simplified ] = "Õý·´Ò³µÄÐоàÏàµÈ";
+ Text[ russian ] = "Ïðèâîäêà";
+ Text[ polish ] = "Jedn. wys. wierszy";
+ Text[ japanese ] = "ˆóüŒ©“–‚ð‡‚킹‚é";
+ Text[ chinese_traditional ] = "¥¿¤Ï­¶ªº¦æ¶Z¬Ûµ¥";
+ Text[ arabic ] = "ÇáÇäÊÙÇã";
+ Text[ dutch ] = "registeren";
+ Text[ chinese_simplified ] = "Õý·´Ò³µÄÐоàÏàµÈ";
+ Text[ greek ] = "Åðéâåâáßùóç åããñáöÞò";
+ Text[ korean ] = "µî·Ï À¯È¿¼º";
+ Text[ turkish ] = "Eþit satýr yüksekliði";
+ Text[ language_user1 ] = " ";
+};
+String STR_REGISTER_OFF
+{
+ TEXT = "keine Registerhaltigkeit" ;
+ TEXT [ English ] = "no register" ;
+ Text [ dutch ] = "niet registeren" ;
+ Text [ english_us ] = "Not register-true" ;
+ Text [ italian ] = "Senza conformità registro" ;
+ Text [ spanish ] = "Sin conformidad registro" ;
+ Text [ french ] = "Pas de contrôle de repérage" ;
+ Text [ swedish ] = "inget register" ;
+ Text [ danish ] = "hold ikke register" ;
+ Text [ portuguese ] = "Sem correspondência registo" ;
+ Text [ portuguese_brazilian ] = "keine Registerhaltigkeit" ;
+ Text[ chinese_simplified ] = "Õý·´Ò³µÄÐо಻ÏàµÈ";
+ Text[ russian ] = "Áåç ïðèâîäêè";
+ Text[ polish ] = "Bez jednakowej wysokoœci wierszy przy wydruku na przedniej i odwrotnej stronie";
+ Text[ japanese ] = "ˆóüŒ©“–‚ð‡‚킹‚È‚¢";
+ Text[ chinese_traditional ] = "¥¿¤Ï­¶ªº¦æ¶Z¤£¬Ûµ¥";
+ Text[ arabic ] = "ÈÏæä ÇäÊÙÇã";
+ Text[ dutch ] = "niet registeren";
+ Text[ chinese_simplified ] = "Õý·´Ò³µÄÐо಻ÏàµÈ";
+ Text[ greek ] = "×ùñßò åðéâåâáßùóç åããñáöÞò";
+ Text[ korean ] = "µî·ÏµÇ¾î ÀÖÁö ¾ÊÀ½";
+ Text[ turkish ] = "Eþit satýr yüksekliði mevcut deðil";
+ Text[ language_user1 ] = " ";
+};
+String STR_HORI_RIGHT
+{
+ TEXT = "rechts" ;
+ TEXT [ English ] = "at the right" ;
+ Text [ dutch ] = "rechts" ;
+ Text [ english_us ] = "at the right" ;
+ Text [ italian ] = "Destra" ;
+ Text [ spanish ] = "derecha" ;
+ Text [ french ] = "À droite" ;
+ Text [ swedish ] = "höger" ;
+ Text [ danish ] = "højre" ;
+ Text [ portuguese ] = "à direita" ;
+ Text [ portuguese_brazilian ] = "rechts" ;
+ Text[ chinese_simplified ] = "ÓÒ";
+ Text[ russian ] = "ñïðàâà";
+ Text[ polish ] = "Z prawej";
+ Text[ japanese ] = "‰E";
+ Text[ chinese_traditional ] = "¥k";
+ Text[ arabic ] = "Úáì Çáíãíä";
+ Text[ dutch ] = "rechts";
+ Text[ chinese_simplified ] = "ÓÒ";
+ Text[ greek ] = "äåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ¿¡";
+ Text[ turkish ] = "sað";
+ Text[ language_user1 ] = " ";
+};
+String STR_HORI_CENTER
+{
+ TEXT = "horizontal zentriert" ;
+ TEXT [ English ] = "centered horizontally" ;
+ Text [ dutch ] = "horizontaal gecentreerd" ;
+ Text [ english_us ] = "Centered horizontally" ;
+ Text [ italian ] = "Centrato orizzontalmente" ;
+ Text [ spanish ] = "Centrado horizontal" ;
+ Text [ french ] = "Centré horizontalement" ;
+ Text [ swedish ] = "Horisontellt centrerad" ;
+ Text [ danish ] = "vandret centreret" ;
+ Text [ portuguese ] = "Centrado na horizontal" ;
+ Text [ portuguese_brazilian ] = "horizontal zentriert" ;
+ Text[ chinese_simplified ] = "ˮƽ¾ÓÖÐ";
+ Text[ russian ] = "ãîðèçîíòàëüíî ïî öåíòðó";
+ Text[ polish ] = "Wyœrodkuj poziomo";
+ Text[ japanese ] = "…•½‚É’†‰›‘µ‚¦";
+ Text[ chinese_traditional ] = "¤ô¥­¸m¤¤";
+ Text[ arabic ] = "ÊæÓíØ ÃÝÞí";
+ Text[ dutch ] = "horizontaal gecentreerd";
+ Text[ chinese_simplified ] = "ˮƽ¾ÓÖÐ";
+ Text[ greek ] = "ïñéæïíôßùò êåíôñáñéóìÝíá";
+ Text[ korean ] = "¼öÆòÀ¸·Î °¡¿îµ¥";
+ Text[ turkish ] = "Yatay ortala";
+ Text[ language_user1 ] = " ";
+};
+String STR_HORI_LEFT
+{
+ TEXT = "links" ;
+ TEXT [ English ] = "at the left" ;
+ Text [ english_us ] = "at the left" ;
+ Text [ italian ] = "sinistra" ;
+ Text [ spanish ] = "Izquierda" ;
+ Text [ french ] = "À gauche" ;
+ Text [ dutch ] = "links" ;
+ Text [ swedish ] = "vänster" ;
+ Text [ danish ] = "venstre" ;
+ Text [ portuguese ] = "à esquerda" ;
+ Text [ portuguese_brazilian ] = "links" ;
+ Text[ chinese_simplified ] = "×ó";
+ Text[ russian ] = "ñëåâà";
+ Text[ polish ] = "Z lewej";
+ Text[ japanese ] = "¶";
+ Text[ chinese_traditional ] = "¥ª";
+ Text[ arabic ] = "Úáì ÇáíÓÇÑ";
+ Text[ dutch ] = "links";
+ Text[ chinese_simplified ] = "×ó";
+ Text[ greek ] = "áñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊ¿¡";
+ Text[ turkish ] = "sol";
+ Text[ language_user1 ] = " ";
+};
+String STR_HORI_INSIDE
+{
+ TEXT = "innen" ;
+ TEXT [ English ] = "inside" ;
+ Text [ dutch ] = "binnen" ;
+ Text [ english_us ] = "inside" ;
+ Text [ italian ] = "all'interno" ;
+ Text [ spanish ] = "interior" ;
+ Text [ french ] = "à l'intérieur" ;
+ Text [ swedish ] = "innanför" ;
+ Text [ danish ] = "inderside" ;
+ Text [ portuguese ] = "dentro" ;
+ Text [ portuguese_brazilian ] = "innen" ;
+ Text[ chinese_simplified ] = "ÄÚ";
+ Text[ russian ] = "âíóòðè";
+ Text[ polish ] = "Wewn¹trz";
+ Text[ japanese ] = "“à‘¤";
+ Text[ chinese_traditional ] = "¤º";
+ Text[ arabic ] = "ÏÇÎá";
+ Text[ dutch ] = "binnen";
+ Text[ chinese_simplified ] = "ÄÚ";
+ Text[ greek ] = "åóùôåñéêÜ";
+ Text[ korean ] = "³»ºÎ";
+ Text[ turkish ] = "iç";
+ Text[ language_user1 ] = " ";
+};
+String STR_HORI_OUTSIDE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? außen : au˜en */
+ TEXT = "außen" ;
+ TEXT [ English ] = "outside" ;
+ Text [ english_us ] = "outside" ;
+ Text [ italian ] = "fuori" ;
+ Text [ spanish ] = "exterior" ;
+ Text [ french ] = "à l'extérieur" ;
+ Text [ dutch ] = "buiten" ;
+ Text [ swedish ] = "utanför" ;
+ Text [ danish ] = "yderside" ;
+ Text [ portuguese ] = "fora" ;
+ Text [ portuguese_brazilian ] = "außen" ;
+ Text[ chinese_simplified ] = "Íâ";
+ Text[ russian ] = "ñíàðóæè";
+ Text[ polish ] = "Na zewn¹trz";
+ Text[ japanese ] = "ŠO‘¤";
+ Text[ chinese_traditional ] = "¥~";
+ Text[ arabic ] = "ÎÇÑÌ";
+ Text[ dutch ] = "buiten";
+ Text[ chinese_simplified ] = "Íâ";
+ Text[ greek ] = "åîùôåñéêÜ";
+ Text[ korean ] = "¿ÜºÎ";
+ Text[ turkish ] = "dýþ";
+ Text[ language_user1 ] = " ";
+};
+String STR_HORI_FULL
+{
+ TEXT = "volle Breite" ;
+ TEXT [ English ] = "full width" ;
+ Text [ dutch ] = "volle breedte" ;
+ Text [ english_us ] = "Full width" ;
+ Text [ italian ] = "a tutta larghezza" ;
+ Text [ spanish ] = "Ancho total" ;
+ Text [ french ] = "Sur toute la largeur" ;
+ Text [ swedish ] = "full bredd" ;
+ Text [ danish ] = "hele bredden" ;
+ Text [ portuguese ] = "Largura completa" ;
+ Text [ portuguese_brazilian ] = "volle Breite" ;
+ Text[ chinese_simplified ] = "Õû¸ö¿í¶È";
+ Text[ russian ] = "ïîëíàÿ øèðèíà";
+ Text[ polish ] = "Ca³a szerokoœæ";
+ Text[ japanese ] = "Å‘å•";
+ Text[ chinese_traditional ] = "¾ã­Ó¼e«×";
+ Text[ arabic ] = "ÇáÚÑÖ ßáå";
+ Text[ dutch ] = "volle breedte";
+ Text[ chinese_simplified ] = "Õû¸ö¿í¶È";
+ Text[ greek ] = "ïëüêëçñï ðëÜôïò";
+ Text[ korean ] = "ÀüÀÚ";
+ Text[ turkish ] = "Tam geniþlik";
+ Text[ language_user1 ] = " ";
+};
+String STR_COLUMNS
+{
+ TEXT = "Spalten" ;
+ TEXT [ English ] = "columns" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ english_us ] = "Columns" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ spanish ] = "Columnas" ;
+ Text [ french ] = "Colonnes" ;
+ Text [ swedish ] = "Kolumner" ;
+ Text [ danish ] = "kolonner" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ portuguese_brazilian ] = "Spalten" ;
+ Text[ chinese_simplified ] = "ÁÐ";
+ Text[ russian ] = "Êîëîíêè";
+ Text[ polish ] = "Kolumny";
+ Text[ japanese ] = "’i‘g‚Ý";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÇáÃÚãÏÉ";
+ Text[ dutch ] = "Kolommen";
+ Text[ chinese_simplified ] = "ÁÐ";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ Text[ language_user1 ] = " ";
+};
+String STR_LINE_WIDTH
+{
+ TEXT = "Trennlinienbreite:" ;
+ TEXT [ English ] = "limiter width:" ;
+ Text [ english_us ] = "Separator Width:" ;
+ Text [ italian ] = "Spessore linea di sepazione" ;
+ Text [ spanish ] = "Ancho de la línea de separación:" ;
+ Text [ french ] = "Largeur du trait de séparation :" ;
+ Text [ dutch ] = "breedte scheidingslijn:" ;
+ Text [ swedish ] = "Skiljelinjens bredd:" ;
+ Text [ danish ] = "Separatorbredde:" ;
+ Text [ portuguese ] = "Largura do separador:" ;
+ Text [ portuguese_brazilian ] = "Trennlinienbreite:" ;
+ Text[ chinese_simplified ] = "·Ö¸ôÏß´Ö£º";
+ Text[ russian ] = "Øèðèíà ðàçäåëèòåëüíîé ëèíèè:";
+ Text[ polish ] = "SzerokoϾ separatora:";
+ Text[ japanese ] = "‹æØ‚èü‚Ì•:";
+ Text[ chinese_traditional ] = "¤À¹j½u²Ê¡G";
+ Text[ arabic ] = "ÚÑÖ ÇáÎØ ÇáÝÇÕá:";
+ Text[ dutch ] = "breedte scheidingslijn:";
+ Text[ chinese_simplified ] = "·Ö¸ôÏß´Ö£º";
+ Text[ greek ] = "ÐëÜôïò äéá÷ùñéóôéêÞò ãñáììÞò:";
+ Text[ korean ] = "±¸ºÐÀÚ ³Êºñ:";
+ Text[ turkish ] = "Ayýrma çizgisi geniþliði:";
+ Text[ language_user1 ] = " ";
+};
+String STR_MAX_FTN_HEIGHT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? max. Fußnotenbereich: : max. Fu˜notenbereich: */
+ TEXT = "max. Fußnotenbereich:" ;
+ TEXT [ English ] = "max. footnotes area:" ;
+ Text [ english_us ] = "Max. footnote area:" ;
+ Text [ italian ] = "Area massima piè pagina:" ;
+ Text [ spanish ] = "Área máx. de la nota al pie:" ;
+ Text [ french ] = "Pied de page max. :" ;
+ Text [ dutch ] = "max. voetnotenbereik:" ;
+ Text [ swedish ] = "max. fotnotsområde:" ;
+ Text [ danish ] = "maks. fodnoteområde:" ;
+ Text [ portuguese ] = "Área máx. de rodapé:" ;
+ Text [ portuguese_brazilian ] = "max. Fußnotenbereich:" ;
+ Text[ chinese_simplified ] = "×î´óµÄ×¢½Å·¶Î§£º";
+ Text[ russian ] = "Ìàêñ. îáëàñòü ñíîñîê:";
+ Text[ polish ] = "Maksymalny obszar przypisów dolnych:";
+ Text[ japanese ] = "Å‘å‚Ì‹r’”͈Í";
+ Text[ chinese_traditional ] = "³Ì¤jªºµù¸}­S³ò¡G";
+ Text[ arabic ] = "ÇáÍÏ ÇáÃÞÕì áäØÇÞ ÇáÍÇÔíÉ ÇáÓÝáíÉ:";
+ Text[ dutch ] = "max. voetnotenbereik:";
+ Text[ chinese_simplified ] = "×î´óµÄ×¢½Å·¶Î§£º";
+ Text[ greek ] = "ÌÝãéóôç ðåñéï÷Þ õðïóçìåßùóçò:";
+ Text[ korean ] = "ÃÖ´ë °¢ÁÖ ¿µ¿ª:";
+ Text[ turkish ] = "azm. dipnot alaný:";
+ Text[ language_user1 ] = " ";
+};
+String STR_EDIT_IN_READONLY
+{
+ /* ### ACHTUNG: Neuer Text in Resource? editierbar im schreibgeschütztem Dokument : editierbar im Schreibeschütztem Dokument */
+ /* ### ACHTUNG: Neuer Text in Resource? editierbar im schreibgeschütztem Dokument : editierbar im Schreibeschütztem Dokument */
+ /* ### ACHTUNG: Neuer Text in Resource? editierbar im schreibgeschütztem Dokument : editierbar im Schreibeschütztem Dokument */
+ /* ### ACHTUNG: Neuer Text in Resource? editierbar im schreibgeschütztem Dokument : editierbar im Schreibeschütztem Dokument */
+ /* ### ACHTUNG: Neuer Text in Resource? editierbar im schreibgeschütztem Dokument : editierbar im Schreibeschütztem Dokument */
+ /* ### ACHTUNG: Neuer Text in Resource? editierbar im schreibgeschütztem Dokument : editierbar im schreibgesch³tztem Dokument */
+ TEXT = "editierbar im schreibgeschütztem Dokument" ;
+ TEXT [ English ] = "edit in readonly Document" ;
+ Text [ portuguese ] = "Editável em documento só de leitura." ;
+ Text [ english_us ] = "Editable in read only document" ;
+ Text [ portuguese_brazilian ] = "editierbar im Schreibeschütztem Dokument" ;
+ Text [ swedish ] = "Redigerbar i skrivskyddat dokument" ;
+ Text [ danish ] = "redigerbar i skrivebeskyttet dokument" ;
+ Text [ italian ] = "modificabile nel documento a sola lettura" ;
+ Text [ spanish ] = "Se puede editar en documentos de solo lectura" ;
+ Text [ french ] = "À éditer dans le document en mode Lecture seule" ;
+ Text [ dutch ] = "editeerbaar in schrijfbeveiligd document" ;
+ Text[ chinese_simplified ] = "Äܹ»±à¼­Êܱ£»¤µÄÎĵµ";
+ Text[ russian ] = "Âîçìîæíîñòü ïðàâêè òîëüêî â çàùèùåííîì îò çàïèñè äîêóìåíòå";
+ Text[ polish ] = "Mo¿liwy do edycji tylko w dokumencie do odczytu";
+ Text[ japanese ] = "‘‚«ž‚ݕی앶‘‚É•ÒW‰Â”\\";
+ Text[ chinese_traditional ] = "¯à°÷½s¿è¨ü«OÅ@ªº¤å¥ó";
+ Text[ arabic ] = "ÞÇÈá ááÊÍÑíÑ Ýí ãÓÊäÏ ááÞÑÇÁÉ ÝÞØ";
+ Text[ dutch ] = "editeerbaar in schrijfbeveiligd document";
+ Text[ chinese_simplified ] = "Äܹ»±à¼­Êܱ£»¤µÄÎĵµ";
+ Text[ greek ] = "äõíáôüôçôá åðåîåñãáóßáò óå Ýããñáöï 'ìüíï ãéá áíÜãíùóç'";
+ Text[ korean ] = "¾²±â º¸È£µÈ ¹®¼­¿¡ ÆíÁý °¡´É";
+ Text[ turkish ] = "Salt okunur belgede düzenlenebilir";
+ Text[ language_user1 ] = " ";
+};
+String STR_LAYOUT_SPLIT
+{
+ TEXT = "Trennen" ;
+ TEXT [ English ] = "splitable" ;
+ Text [ portuguese ] = "Separar" ;
+ Text [ english_us ] = "Split" ;
+ Text [ portuguese_brazilian ] = "Trennen" ;
+ Text [ swedish ] = "Dela" ;
+ Text [ danish ] = "opdel" ;
+ Text [ italian ] = "Separa" ;
+ Text [ spanish ] = "Dividir" ;
+ Text [ french ] = "Scinder" ;
+ Text [ dutch ] = "splitsen" ;
+ Text[ chinese_simplified ] = "·Ö¸ô";
+ Text[ russian ] = "Ðàçäåëèòü";
+ Text[ polish ] = "Podziel";
+ Text[ japanese ] = "•ªŠ„";
+ Text[ chinese_traditional ] = "¤À¶}";
+ Text[ arabic ] = "ÊÞÓíã";
+ Text[ dutch ] = "splitsen";
+ Text[ chinese_simplified ] = "·Ö¸ô";
+ Text[ greek ] = "ÄéÜóðáóç";
+ Text[ korean ] = "³ª´©±â";
+ Text[ turkish ] = "Böl";
+ Text[ language_user1 ] = " ";
+};
+String STR_NUMRULE_ON
+{
+ Text = "Nummerierung" ;
+ Text [ English ] = "Numbering" ;
+ Text [ portuguese ] = "Numeração" ;
+ Text [ english_us ] = "Numbering" ;
+ Text [ portuguese_brazilian ] = "Numerierung" ;
+ Text [ swedish ] = "Numrering" ;
+ Text [ danish ] = "nummerering" ;
+ Text [ italian ] = "Numerazione" ;
+ Text [ spanish ] = "Numeración" ;
+ Text [ french ] = "Numérotation" ;
+ Text [ dutch ] = "Nummering" ;
+ Text[ chinese_simplified ] = "񅧏";
+ Text[ russian ] = "Íóìåðàöèÿ";
+ Text[ polish ] = "Numeracja";
+ Text[ japanese ] = "”Ô†•t‚¯";
+ Text[ chinese_traditional ] = "½s¸¹";
+ Text[ arabic ] = "ÇáÊÑÞíã";
+ Text[ dutch ] = "Nummering";
+ Text[ chinese_simplified ] = "񅧏";
+ Text[ greek ] = "Áñßèìçóç";
+ Text[ korean ] = "¹øÈ£ ¸Å±â±â";
+ Text[ turkish ] = "Numaralama";
+ Text[ language_user1 ] = " ";
+};
+String STR_NUMRULE_OFF
+{
+ Text = "keine Nummerierung" ;
+ Text [ English ] = "no numbering" ;
+ Text [ portuguese ] = "sem numeração" ;
+ Text [ english_us ] = "no numbering" ;
+ Text [ portuguese_brazilian ] = "keine Numerierung" ;
+ Text [ swedish ] = "ingen numrering" ;
+ Text [ danish ] = "ingen nummerering" ;
+ Text [ italian ] = "Nessuna numerazione" ;
+ Text [ spanish ] = "Sin numeración" ;
+ Text [ french ] = "pas de numérotation" ;
+ Text [ dutch ] = "geen nummering" ;
+ Text[ chinese_simplified ] = "ÎÞ±àºÅ";
+ Text[ russian ] = "áåç íóìåðàöèè";
+ Text[ polish ] = "Bez numeracji";
+ Text[ japanese ] = "”Ô†•t‚¯‚È‚µ";
+ Text[ chinese_traditional ] = "¤£½s¸¹";
+ Text[ arabic ] = "ÈÏæä ÊÑÞíã";
+ Text[ dutch ] = "geen nummering";
+ Text[ chinese_simplified ] = "ÎÞ±àºÅ";
+ Text[ greek ] = "÷ùñßò áñßèìçóç";
+ Text[ korean ] = "¹øÈ£¸Å±â±â ¾øÀ½";
+ Text[ turkish ] = "Numaralama yok";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONNECT1
+{
+ TEXT = "Verbunden mit " ;
+ TEXT [ English ] = "connected to " ;
+ Text [ portuguese ] = "ligado com " ;
+ Text [ english_us ] = "linked to " ;
+ Text [ portuguese_brazilian ] = "Verbunden mit " ;
+ Text [ swedish ] = "Förbunden med " ;
+ Text [ danish ] = "forbundet med " ;
+ Text [ italian ] = "Collegato con " ;
+ Text [ spanish ] = "Vinculado a " ;
+ Text [ french ] = "Lié à[_] " ;
+ Text [ dutch ] = "Verbonden met " ;
+ Text[ chinese_simplified ] = "Á¬½Óµ½ ";
+ Text[ russian ] = "Ñâÿçàòü ñ ";
+ Text[ polish ] = "Po³¹czony z ";
+ Text[ japanese ] = "Œ‹‡æ ";
+ Text[ chinese_traditional ] = "³sµ²¨ì ";
+ Text[ arabic ] = "ãÑÊÈØ ãÚ ";
+ Text[ dutch ] = "Verbonden met ";
+ Text[ chinese_simplified ] = "Á¬½Óµ½ ";
+ Text[ greek ] = "ÓõíäåäåìÝíï ìå ";
+ Text[ korean ] = "¿¬°á ";
+ Text[ turkish ] = "Baðlanýlan ";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONNECT2
+{
+ TEXT = " und " ;
+ TEXT [ English ] = " and " ;
+ Text [ portuguese ] = "e " ;
+ Text [ english_us ] = "and " ;
+ Text [ portuguese_brazilian ] = "und " ;
+ Text [ swedish ] = "och " ;
+ Text [ danish ] = "og " ;
+ Text [ italian ] = "e " ;
+ Text [ spanish ] = "y " ;
+ Text [ french ] = "et " ;
+ Text [ dutch ] = "en " ;
+ Text[ chinese_simplified ] = "ºÍ ";
+ Text[ russian ] = "è ";
+ Text[ polish ] = "i ";
+ Text[ japanese ] = "‚¨‚æ‚Ñ ";
+ Text[ chinese_traditional ] = "©M ";
+ Text[ arabic ] = "æ ";
+ Text[ dutch ] = "en ";
+ Text[ chinese_simplified ] = "ºÍ ";
+ Text[ greek ] = "êáé ";
+ Text[ korean ] = "¿Í ";
+ Text[ turkish ] = "ve ";
+ Text[ language_user1 ] = " ";
+};
+String STR_LINECOUNT
+{
+ TEXT = "Zeilen zählen" ;
+ TEXT [ English ] = "count lines" ;
+ Text [ portuguese ] = "Contar linhas" ;
+ Text [ english_us ] = "Count lines" ;
+ Text [ portuguese_brazilian ] = "Zeilen zählen" ;
+ Text [ swedish ] = "räkna rader" ;
+ Text [ danish ] = "tæl linjer" ;
+ Text [ italian ] = "Conta le righe" ;
+ Text [ spanish ] = "Contar líneas" ;
+ Text [ french ] = "Compter les lignes" ;
+ Text [ dutch ] = "regels tellen" ;
+ Text[ chinese_simplified ] = "ÐмÆÊý";
+ Text[ russian ] = "Ïîäñ÷åò ñòðîê";
+ Text[ polish ] = "Policz wiersze";
+ Text[ japanese ] = "s‚𔂦‚é";
+ Text[ chinese_traditional ] = "¦æ­p¼Æ";
+ Text[ arabic ] = "ÚÏ ÇáÃÓØÑ";
+ Text[ dutch ] = "regels tellen";
+ Text[ chinese_simplified ] = "ÐмÆÊý";
+ Text[ greek ] = "ÊáôáìÝôñçóç ãñáììþí";
+ Text[ korean ] = "¼± Ä«¿îÆ®";
+ Text[ turkish ] = "Satýr say";
+ Text[ language_user1 ] = " ";
+};
+String STR_DONTLINECOUNT
+{
+ TEXT = "Zeilen nicht zählen" ;
+ TEXT [ English ] = "dont count lines" ;
+ Text [ portuguese ] = "não contar linhas" ;
+ Text [ english_us ] = "don't count lines" ;
+ Text [ portuguese_brazilian ] = "Zeilen nicht zählen" ;
+ Text [ swedish ] = "räkna inte rader" ;
+ Text [ danish ] = "tæl linjer ikke" ;
+ Text [ italian ] = "Non contare le righe" ;
+ Text [ spanish ] = "No contar las líneas" ;
+ Text [ french ] = "Ne pas compter les lignes" ;
+ Text [ dutch ] = "Regels niet tellen" ;
+ Text[ chinese_simplified ] = "²»¼ÆÊýÐÐ";
+ Text[ russian ] = "Ñòðîêè íå ñ÷èòàòü";
+ Text[ polish ] = "Nie liczyæ wierszy";
+ Text[ japanese ] = "s‚𔂦‚È‚¢";
+ Text[ chinese_traditional ] = "¤£­p¼Æ¦æ";
+ Text[ arabic ] = "ÚÏã ÚÏ ÇáÃÓØÑ";
+ Text[ dutch ] = "Regels niet tellen";
+ Text[ chinese_simplified ] = "²»¼ÆÊýÐÐ";
+ Text[ greek ] = "¼÷é êáôáìÝôñçóç ãñáììþí";
+ Text[ korean ] = "¼± Ä«¿îÆ®¸¦ ÇÏÁö ¾ÊÀ½";
+ Text[ turkish ] = "Satýrlarý sayma";
+ Text[ language_user1 ] = " ";
+};
+String STR_LINCOUNT_START
+{
+ TEXT = "Zeilenzähler starten mit: " ;
+ TEXT [ English ] = "restart linecount with: " ;
+ Text [ portuguese ] = "Iniciar contagem de linhas com: " ;
+ Text [ english_us ] = "restart line count with: " ;
+ Text [ portuguese_brazilian ] = "Zeilenzähler starten mit: " ;
+ Text [ swedish ] = "Starta radräknaren med " ;
+ Text [ danish ] = "begynd linjeoptælling med " ;
+ Text [ italian ] = "Iniziare a contare le righe con: " ;
+ Text [ spanish ] = "Iniciar recuento de líneas con: " ;
+ Text [ french ] = "Commencer le compte des lignes à :[_]" ;
+ Text [ dutch ] = "regels telllen starten bij: " ;
+ Text[ chinese_simplified ] = "¼ÆÊýÐдӣº ";
+ Text[ russian ] = "Íà÷àòü ïîäñ÷åò ñòðîê ñ: ";
+ Text[ polish ] = "Rozpocznij liczenie wierszy od: ";
+ Text[ japanese ] = "s”‚¦‚ÌŠJŽn: ";
+ Text[ chinese_traditional ] = "­p¼Æ¦æ±q¡G ";
+ Text[ arabic ] = "ÈÏÁ ÊÑÞíã ÇáÃÓØÑ ÈÜ: ";
+ Text[ dutch ] = "regels telllen starten bij: ";
+ Text[ chinese_simplified ] = "¼ÆÊýÐдӣº ";
+ Text[ greek ] = "Åêêßíçóç êáôáìÝôñçóçò ãñáììþí áðü: ";
+ Text[ korean ] = "ÁÙ¼¼±â ½ÃÀÛ À§Ä¡: ";
+ Text[ turkish ] = "Satýr sayma baþlangýcý: ";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_LUMINANCE
+{
+ Text = "Helligkeit: ";
+ Text[ english ] = "Luminance: ";
+ Text[ english_us ] = "Brightness: ";
+ Text[ portuguese ] = "Luminance: ";
+ Text[ russian ] = "Luminance: ";
+ Text[ greek ] = "Luminance: ";
+ Text[ dutch ] = "Luminance: ";
+ Text[ french ] = "Luminosité : ";
+ Text[ spanish ] = "Luminance: ";
+ Text[ italian ] = "Luminance: ";
+ Text[ danish ] = "Lysstyrke: ";
+ Text[ swedish ] = "Luminance: ";
+ Text[ polish ] = "Luminance: ";
+ Text[ portuguese_brazilian ] = "Luminance: ";
+ Text[ japanese ] = "–¾“x: ";
+ Text[ korean ] = "Luminance: ";
+ Text[ chinese_simplified ] = "ÁÁ¶È£º ";
+ Text[ chinese_traditional ] = "«G«×¡G ";
+ Text[ turkish ] = "Luminance: ";
+ Text[ arabic ] = "Luminance: ";
+};
+
+String STR_CHANNELR
+{
+ Text = "Rotanteil: ";
+ Text[ english ] = "Red portion: ";
+ Text[ english_us ] = "Red: ";
+ Text[ portuguese ] = "Red portion: ";
+ Text[ russian ] = "Red portion: ";
+ Text[ greek ] = "Red portion: ";
+ Text[ dutch ] = "Red portion: ";
+ Text[ french ] = "Proportion de rouge : ";
+ Text[ spanish ] = "Red portion: ";
+ Text[ italian ] = "Red portion: ";
+ Text[ danish ] = "Rød-andel: ";
+ Text[ swedish ] = "Red portion: ";
+ Text[ polish ] = "Red portion: ";
+ Text[ portuguese_brazilian ] = "Red portion: ";
+ Text[ japanese ] = "ÔF‚ÌŠ„‡: ";
+ Text[ korean ] = "Red portion: ";
+ Text[ chinese_simplified ] = "ºìÉ«±ÈÀý£º ";
+ Text[ chinese_traditional ] = "¬õ¦â¤ñ¨Ò¡G ";
+ Text[ turkish ] = "Red portion: ";
+ Text[ arabic ] = "Red portion: ";
+};
+
+String STR_CHANNELG
+{
+ Text = "Grünanteil: ";
+ Text[ english ] = "Green portion: ";
+ Text[ english_us ] = "Green: ";
+ Text[ portuguese ] = "Green portion: ";
+ Text[ russian ] = "Green portion: ";
+ Text[ greek ] = "Green portion: ";
+ Text[ dutch ] = "Green portion: ";
+ Text[ french ] = "Proportion de vert : ";
+ Text[ spanish ] = "Green portion: ";
+ Text[ italian ] = "Green portion: ";
+ Text[ danish ] = "Grøn-andel: ";
+ Text[ swedish ] = "Green portion: ";
+ Text[ polish ] = "Green portion: ";
+ Text[ portuguese_brazilian ] = "Green portion: ";
+ Text[ japanese ] = "—ÎF‚ÌŠ„‡: ";
+ Text[ korean ] = "Green portion: ";
+ Text[ chinese_simplified ] = "ÂÌÉ«±ÈÀý£º ";
+ Text[ chinese_traditional ] = "ºñ¦â¤ñ¨Ò¡G ";
+ Text[ turkish ] = "Green portion: ";
+ Text[ arabic ] = "Green portion: ";
+};
+
+String STR_CHANNELB
+{
+ Text = "Blauanteil: ";
+ Text[ english ] = "Blue portion: ";
+ Text[ english_us ] = "Blue: ";
+ Text[ portuguese ] = "Blue portion: ";
+ Text[ russian ] = "Blue portion: ";
+ Text[ greek ] = "Blue portion: ";
+ Text[ dutch ] = "Blue portion: ";
+ Text[ french ] = "Proportion de bleu : ";
+ Text[ spanish ] = "Blue portion: ";
+ Text[ italian ] = "Blue portion: ";
+ Text[ danish ] = "Blå-andel: ";
+ Text[ swedish ] = "Blue portion: ";
+ Text[ polish ] = "Blue portion: ";
+ Text[ portuguese_brazilian ] = "Blue portion: ";
+ Text[ japanese ] = "ÂF‚ÌŠ„‡: ";
+ Text[ korean ] = "Blue portion: ";
+ Text[ chinese_simplified ] = "À¶É«±ÈÀý£º ";
+ Text[ chinese_traditional ] = "ÂŦâ¤ñ¨Ò¡G ";
+ Text[ turkish ] = "Blue portion: ";
+ Text[ arabic ] = "Blue portion: ";
+};
+
+String STR_CONTRAST
+{
+ Text = "Kontrast: ";
+ Text[ english ] = "Contrast: ";
+ Text[ english_us ] = "Contrast: ";
+ Text[ portuguese ] = "Contrast: ";
+ Text[ russian ] = "Contrast: ";
+ Text[ greek ] = "Contrast: ";
+ Text[ dutch ] = "Contrast: ";
+ Text[ french ] = "Contraste : ";
+ Text[ spanish ] = "Contrast: ";
+ Text[ italian ] = "Contrast: ";
+ Text[ danish ] = "Kontrast: ";
+ Text[ swedish ] = "Contrast: ";
+ Text[ polish ] = "Contrast: ";
+ Text[ portuguese_brazilian ] = "Contrast: ";
+ Text[ japanese ] = "ºÝÄ×½Ä: ";
+ Text[ korean ] = "Contrast: ";
+ Text[ chinese_simplified ] = "¶Ô±È¶È£º ";
+ Text[ chinese_traditional ] = "¹ï¤ñ«×¡G ";
+ Text[ turkish ] = "Contrast: ";
+ Text[ arabic ] = "Contrast: ";
+};
+
+String STR_GAMMA
+{
+ Text = "Gamma: ";
+ Text[ english ] = "Gamma: ";
+ Text[ english_us ] = "Gamma: ";
+ Text[ portuguese ] = "Gamma: ";
+ Text[ russian ] = "Gamma: ";
+ Text[ greek ] = "Gamma: ";
+ Text[ dutch ] = "Gamma: ";
+ Text[ french ] = "Gamma : ";
+ Text[ spanish ] = "Gamma: ";
+ Text[ italian ] = "Gamma: ";
+ Text[ danish ] = "Gamma: ";
+ Text[ swedish ] = "Gamma: ";
+ Text[ polish ] = "Gamma: ";
+ Text[ portuguese_brazilian ] = "Gamma: ";
+ Text[ japanese ] = "¶ÞÝÏ: ";
+ Text[ korean ] = "Gamma: ";
+ Text[ chinese_simplified ] = "»ÒɫϵÊý£º ";
+ Text[ chinese_traditional ] = "¦Ç¦â¨t¼Æ¡G ";
+ Text[ turkish ] = "Gamma: ";
+ Text[ arabic ] = "Gamma: ";
+};
+
+String STR_TRANSPARENCY
+{
+ Text = "Transparenz: ";
+ Text[ english ] = "Transparency: ";
+ Text[ english_us ] = "Transparency: ";
+ Text[ portuguese ] = "Transparency: ";
+ Text[ russian ] = "Transparency: ";
+ Text[ greek ] = "Transparency: ";
+ Text[ dutch ] = "Transparency: ";
+ Text[ french ] = "Transparence: ";
+ Text[ spanish ] = "Transparency: ";
+ Text[ italian ] = "Transparency: ";
+ Text[ danish ] = "Transparens: ";
+ Text[ swedish ] = "Transparency: ";
+ Text[ polish ] = "Transparency: ";
+ Text[ portuguese_brazilian ] = "Transparency: ";
+ Text[ japanese ] = "“§‰ß«: ";
+ Text[ korean ] = "Transparency: ";
+ Text[ chinese_simplified ] = "͸Ã÷¶È£º ";
+ Text[ chinese_traditional ] = "³z©ú«×¡G ";
+ Text[ turkish ] = "Transparency: ";
+ Text[ arabic ] = "Transparency: ";
+};
+
+String STR_INVERT
+{
+ Text = "Invertieren";
+ Text[ english ] = "Invert";
+};
+String STR_INVERT_NOT
+{
+ Text = "nicht invertieren";
+ Text[ english ] = "not invert";
+ Text[ english_us ] = "do not invert";
+ Text[ portuguese ] = "not invert";
+ Text[ russian ] = "not invert";
+ Text[ greek ] = "not invert";
+ Text[ dutch ] = "not invert";
+ Text[ french ] = "ne pas invertir";
+ Text[ spanish ] = "not invert";
+ Text[ italian ] = "not invert";
+ Text[ danish ] = "ikke invertere";
+ Text[ swedish ] = "not invert";
+ Text[ polish ] = "not invert";
+ Text[ portuguese_brazilian ] = "not invert";
+ Text[ japanese ] = "‹t“]‚È‚µ";
+ Text[ korean ] = "not invert";
+ Text[ chinese_simplified ] = "²»×ª»»»¥²¹É«";
+ Text[ chinese_traditional ] = "¤£Âà´«¤¬¸É¦â";
+ Text[ turkish ] = "not invert";
+ Text[ arabic ] = "not invert";
+};
+
+String STR_DRAWMODE
+{
+ Text = "Grafikmodus: ";
+ Text[ english ] = "Graphics mode: ";
+ Text[ english_us ] = "Graphics mode: ";
+ Text[ portuguese ] = "Graphics mode: ";
+ Text[ russian ] = "Graphics mode: ";
+ Text[ greek ] = "Graphics mode: ";
+ Text[ dutch ] = "Graphics mode: ";
+ Text[ french ] = "Mode Graphique : ";
+ Text[ spanish ] = "Graphics mode: ";
+ Text[ italian ] = "Graphics mode: ";
+ Text[ danish ] = "Billedmodus: ";
+ Text[ swedish ] = "Graphics mode: ";
+ Text[ polish ] = "Graphics mode: ";
+ Text[ portuguese_brazilian ] = "Graphics mode: ";
+ Text[ japanese ] = "¸Þ×̨¯¸Ó°ÄÞ: ";
+ Text[ korean ] = "Graphics mode: ";
+ Text[ chinese_simplified ] = "ͼÐÎģʽ£º ";
+ Text[ chinese_traditional ] = "¹Ï§Î¼Ò¦¡¡G ";
+ Text[ turkish ] = "Graphics mode: ";
+ Text[ arabic ] = "Graphics mode: ";
+};
+
+String STR_DRAWMODE_STD
+{
+ Text = "Standard";
+ Text[ english ] = "Standard";
+ Text[ english_us ] = "Standard";
+ Text[ portuguese ] = "Standard";
+ Text[ russian ] = "Standard";
+ Text[ greek ] = "Standard";
+ Text[ dutch ] = "Standard";
+ Text[ french ] = "Standard";
+ Text[ spanish ] = "Standard";
+ Text[ italian ] = "Standard";
+ Text[ danish ] = "Standard";
+ Text[ swedish ] = "Standard";
+ Text[ polish ] = "Standard";
+ Text[ portuguese_brazilian ] = "Standard";
+ Text[ japanese ] = "•W€";
+ Text[ korean ] = "Standard";
+ Text[ chinese_simplified ] = "±ê×¼";
+ Text[ chinese_traditional ] = "¼Ð­ã";
+ Text[ turkish ] = "Standard";
+ Text[ arabic ] = "Standard";
+};
+String STR_DRAWMODE_GREY
+{
+ Text = "Graustufen";
+ Text[ english ] = "Greys";
+ Text[ english_us ] = "Grayscales";
+ Text[ portuguese ] = "Greys";
+ Text[ russian ] = "Greys";
+ Text[ greek ] = "Greys";
+ Text[ dutch ] = "Greys";
+ Text[ french ] = "Niveaux de gris";
+ Text[ spanish ] = "Greys";
+ Text[ italian ] = "Greys";
+ Text[ danish ] = "Gråtoner";
+ Text[ swedish ] = "Greys";
+ Text[ polish ] = "Greys";
+ Text[ portuguese_brazilian ] = "Greys";
+ Text[ japanese ] = "¸ÞÚ°½¹°Ù";
+ Text[ korean ] = "Greys";
+ Text[ chinese_simplified ] = "»Ò¶È";
+ Text[ chinese_traditional ] = "¦Ç¶¥";
+ Text[ turkish ] = "Greys";
+ Text[ arabic ] = "Greys";
+};
+String STR_DRAWMODE_BLACKWHITE
+{
+ Text = "Schwarz/Weiß";
+ Text[ english ] = "Black/White";
+ Text[ english_us ] = "Black & White";
+ Text[ portuguese ] = "Black/White";
+ Text[ russian ] = "Black/White";
+ Text[ greek ] = "Black/White";
+ Text[ dutch ] = "Black/White";
+ Text[ french ] = "Noir/Blanc";
+ Text[ spanish ] = "Black/White";
+ Text[ italian ] = "Black/White";
+ Text[ danish ] = "Sort-hvid";
+ Text[ swedish ] = "Black/White";
+ Text[ polish ] = "Black/White";
+ Text[ portuguese_brazilian ] = "Black/White";
+ Text[ japanese ] = "”’•";
+ Text[ korean ] = "Black/White";
+ Text[ chinese_simplified ] = "ºÚ°×";
+ Text[ chinese_traditional ] = "¶Â¥Õ";
+ Text[ turkish ] = "Black/White";
+ Text[ arabic ] = "Black/White";
+};
+String STR_DRAWMODE_WATERMARK
+{
+ Text = "Wasserzeichen";
+ Text[ english ] = "Watermark";
+ Text[ english_us ] = "Watermark";
+ Text[ portuguese ] = "Watermark";
+ Text[ russian ] = "Watermark";
+ Text[ greek ] = "Watermark";
+ Text[ dutch ] = "Watermark";
+ Text[ french ] = "Filigrane";
+ Text[ spanish ] = "Watermark";
+ Text[ italian ] = "Watermark";
+ Text[ danish ] = "Vandmærke";
+ Text[ swedish ] = "Watermark";
+ Text[ polish ] = "Watermark";
+ Text[ portuguese_brazilian ] = "Watermark";
+ Text[ japanese ] = "“§‚©‚µ";
+ Text[ korean ] = "Watermark";
+ Text[ chinese_simplified ] = "ˮӡ";
+ Text[ chinese_traditional ] = "¤ô¦L";
+ Text[ turkish ] = "Watermark";
+ Text[ arabic ] = "Watermark";
+};
+String STR_ROTATION
+{
+ Text = "Drehung";
+ Text[ english ] = "Rotation";
+ Text[ english_us ] = "Rotation";
+ Text[ portuguese ] = "Rotation";
+ Text[ russian ] = "Rotation";
+ Text[ greek ] = "Rotation";
+ Text[ dutch ] = "Rotation";
+ Text[ french ] = "Rotation";
+ Text[ spanish ] = "Rotation";
+ Text[ italian ] = "Rotation";
+ Text[ danish ] = "Rotation";
+ Text[ swedish ] = "Rotation";
+ Text[ polish ] = "Rotation";
+ Text[ portuguese_brazilian ] = "Rotation";
+ Text[ japanese ] = "‰ñ“]";
+ Text[ korean ] = "Rotation";
+ Text[ chinese_simplified ] = "Ðýת";
+ Text[ chinese_traditional ] = "±ÛÂà";
+ Text[ turkish ] = "Rotation";
+ Text[ arabic ] = "Rotation";
+};
+
+
diff --git a/sw/source/ui/utlui/bookctrl.cxx b/sw/source/ui/utlui/bookctrl.cxx
new file mode 100644
index 000000000000..ad2d1da9ac04
--- /dev/null
+++ b/sw/source/ui/utlui/bookctrl.cxx
@@ -0,0 +1,291 @@
+/*************************************************************************
+ *
+ * $RCSfile: bookctrl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_USHORTS
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _EVENT_HXX //autogen
+#include <vcl/event.hxx>
+#endif
+#ifndef _STATUS_HXX //autogen
+#include <vcl/status.hxx>
+#endif
+#ifndef _MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+
+
+#include "cmdid.h"
+#include "errhdl.hxx"
+#include "swmodule.hxx"
+#include "wrtsh.hxx"
+#include "bookmrk.hxx"
+#include "bookctrl.hxx"
+
+
+SFX_IMPL_STATUSBAR_CONTROL( SwBookmarkControl, SfxStringItem );
+
+// class BookmarkPopup_Impl --------------------------------------------------
+
+class BookmarkPopup_Impl : public PopupMenu
+{
+public:
+ BookmarkPopup_Impl();
+
+ USHORT GetCurId() const { return nCurId; }
+
+private:
+ USHORT nCurId;
+
+ virtual void Select();
+};
+
+// -----------------------------------------------------------------------
+
+BookmarkPopup_Impl::BookmarkPopup_Impl() :
+ PopupMenu(),
+ nCurId(USHRT_MAX)
+{
+}
+
+// -----------------------------------------------------------------------
+
+void BookmarkPopup_Impl::Select()
+{
+ nCurId = GetCurItemId();
+}
+
+// class SvxZoomStatusBarControl ------------------------------------------
+
+SwBookmarkControl::SwBookmarkControl( USHORT nId,
+ StatusBar& rStb,
+ SfxBindings& rBind ) :
+ SfxStatusBarControl( nId, rStb, rBind )
+{
+}
+
+// -----------------------------------------------------------------------
+
+SwBookmarkControl::~SwBookmarkControl()
+{
+}
+
+// -----------------------------------------------------------------------
+
+void SwBookmarkControl::StateChanged( const SfxPoolItem* pState )
+{
+ SfxItemState eState = GetItemState(pState);
+
+ if( eState != SFX_ITEM_AVAILABLE || pState->ISA( SfxVoidItem ) )
+ GetStatusBar().SetItemText( GetId(), String() );
+ else if ( pState->ISA( SfxStringItem ) )
+ {
+ sPageNumber = ((SfxStringItem*)pState)->GetValue();
+ GetStatusBar().SetItemText( GetId(), sPageNumber );
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void SwBookmarkControl::Paint( const UserDrawEvent& )
+{
+ GetStatusBar().SetItemText( GetId(), sPageNumber );
+}
+
+// -----------------------------------------------------------------------
+
+void SwBookmarkControl::Command( const CommandEvent& rCEvt )
+{
+ if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU &&
+ GetStatusBar().GetItemText( GetId() ).Len() )
+ {
+ CaptureMouse();
+ BookmarkPopup_Impl aPop;
+ SwWrtShell* pWrtShell = ::GetActiveWrtShell();
+ USHORT nBookCnt;
+ if( pWrtShell && 0 != ( nBookCnt = pWrtShell->GetBookmarkCnt() ) )
+ {
+ SvUShorts aBookArr;
+ for( USHORT nCount = 0; nCount < nBookCnt; ++nCount )
+ {
+ SwBookmark& rBkmk = pWrtShell->GetBookmark( nCount );
+ if( rBkmk.IsBookMark() )
+ {
+ aBookArr.Insert( nCount, aBookArr.Count() );
+ aPop.InsertItem( aBookArr.Count(), rBkmk.GetName() );
+ }
+ }
+ aPop.Execute( &GetStatusBar(), rCEvt.GetMousePosPixel());
+ USHORT nId = aPop.GetCurId();
+ if( nId != USHRT_MAX)
+ {
+ SfxUInt16Item aBookmark( FN_STAT_BOOKMARK, aBookArr[nId-1] );
+ SfxViewFrame::Current()->GetDispatcher()->Execute( FN_STAT_BOOKMARK,
+ SFX_CALLMODE_ASYNCHRON|SFX_CALLMODE_RECORD,
+ &aBookmark, 0L );
+ }
+ }
+ ReleaseMouse();
+ }
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.30 2000/09/18 16:06:17 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.29 2000/09/07 15:59:34 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.28 2000/02/11 15:00:22 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.27 1998/03/10 14:35:06 OS
+ Textmarkenindex wieder selbst feststellen #47718#
+
+
+ Rev 1.26 10 Mar 1998 15:35:06 OS
+ Textmarkenindex wieder selbst feststellen #47718#
+
+ Rev 1.25 23 Feb 1998 07:20:24 OS
+ GetBookmark/ Cnt mit Bookmark-Flag
+
+ Rev 1.24 21 Nov 1997 12:10:14 MA
+ includes
+
+ Rev 1.23 03 Nov 1997 13:59:22 MA
+ precomp entfernt
+
+ Rev 1.22 29 Aug 1997 15:57:30 OS
+ PopupMenu::Execute mit Window* fuer VCL
+
+ Rev 1.21 29 Aug 1997 13:36:12 OS
+ DLL-Umbau
+
+ Rev 1.20 08 Aug 1997 17:25:24 OM
+ Headerfile-Umstellung
+
+ Rev 1.19 09 Jul 1997 17:45:30 HJS
+ includes
+
+ Rev 1.18 14 Jan 1997 09:37:30 TRI
+ includes
+
+ Rev 1.17 23 Oct 1996 13:49:32 JP
+ SVMEM -> SVSTDARR Umstellung
+
+ Rev 1.16 28 Aug 1996 15:42:46 OS
+ includes
+
+ Rev 1.15 24 Jul 1996 13:49:56 OS
+ PCH nachgeruestet
+
+ Rev 1.14 26 Jun 1996 15:04:02 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.13 01 Feb 1996 19:07:02 JP
+ BookmarkControl::Command: ans PopUp die Pos im Bookmark-Array uebergeben, nicht die laufende!
+
+ Rev 1.12 17 Nov 1995 12:47:52 MA
+ Segmentierung
+
+ Rev 1.11 13 Nov 1995 20:46:10 JP
+ Ptrarr gegen SvUShortArr ausgetauscht
+
+ Rev 1.10 07 Nov 1995 18:04:16 MA
+ opt/fix/chg: statics und segs
+
+ Rev 1.9 17 Oct 1995 20:54:14 JP
+ IsMark oder IsBookmark am Bookmark benutzen
+
+ Rev 1.8 06 Oct 1995 00:20:14 HJS
+ pState => eState
+
+ Rev 1.7 05 Oct 1995 18:41:12 OM
+ StateChanged umgestellt
+
+ Rev 1.6 09 Aug 1995 19:15:18 OS
+ Umstellung auf CommandHdl
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/utlui/condedit.cxx b/sw/source/ui/utlui/condedit.cxx
new file mode 100644
index 000000000000..e050dbc6aade
--- /dev/null
+++ b/sw/source/ui/utlui/condedit.cxx
@@ -0,0 +1,179 @@
+/*************************************************************************
+ *
+ * $RCSfile: condedit.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// include ---------------------------------------------------------------
+
+#pragma hdrstop
+
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SV_EVENT_HXX //autogen
+#include <vcl/event.hxx>
+#endif
+#ifndef _SV_DRAG_HXX //autogen
+#include <vcl/drag.hxx>
+#endif
+#ifndef _SOT_FORMATS_HXX //autogen
+#include <sot/formats.hxx>
+#endif
+
+#ifndef _CONDEDIT_HXX
+#include <condedit.hxx>
+#endif
+
+#define DB_DD_DELIM 0x0b
+
+// STATIC DATA -----------------------------------------------------------
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+ConditionEdit::ConditionEdit( Window* pParent, const ResId& rResId ) :
+ Edit( pParent, rResId ),
+ bBrackets(TRUE)
+{
+ EnableDrop();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Drop moeglich, bzw Format bekannt?
+ --------------------------------------------------------------------*/
+
+BOOL ConditionEdit::QueryDrop( DropEvent& rDEvt )
+{
+ rDEvt.SetAction(DROP_COPY);
+
+ if (DragServer::HasFormat(0, SOT_FORMATSTR_ID_SBA_FIELDDATAEXCHANGE ))
+ {
+ BOOL bString = FALSE;
+
+ for (USHORT nItem = 0; nItem < DragServer::GetItemCount(); nItem++)
+ {
+ if (DragServer::HasFormat(nItem, FORMAT_STRING))
+ {
+ bString = TRUE;
+ break;
+ }
+ }
+ if (!bString) // String reinpacken, um DD-Cursor zu erhalten
+ {
+ if (DragServer::HasFormat(0, SOT_FORMATSTR_ID_SBA_FIELDDATAEXCHANGE))
+ {
+ USHORT nLen = (USHORT)DragServer::GetDataLen(0, SOT_FORMATSTR_ID_SBA_FIELDDATAEXCHANGE) - 1;
+ DBG_ASSERT(!(nLen%2), "not a UniString")
+ String sTxt;
+ sal_Unicode *pTxt = sTxt.AllocBuffer(nLen / 2);
+
+ DragServer::PasteData(0, pTxt, nLen, SOT_FORMATSTR_ID_SBA_FIELDDATAEXCHANGE);
+
+ String sDBName;
+ if (bBrackets)
+ sDBName += '[';
+ sDBName += sTxt.GetToken(0, DB_DD_DELIM);
+ sDBName += '.';
+ sDBName += sTxt.GetToken(1, DB_DD_DELIM);
+ sDBName += '.';
+ sDBName += sTxt.GetToken(3, DB_DD_DELIM); // ColumnName
+ if (bBrackets)
+ sDBName += ']';
+ DragServer::CopyString(sDBName);
+ }
+ }
+ }
+
+ return Edit::QueryDrop( rDEvt );
+}
+
+/*************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.7 2000/09/18 16:06:17 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.6 2000/04/18 15:14:08 os
+ UNICODE
+
+ Revision 1.5 2000/02/11 15:00:29 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.4 1998/11/17 21:18:48 JP
+ Task #59398#: ClipboardFormatId Umstellungen
+
+
+ Rev 1.3 17 Nov 1998 22:18:48 JP
+ Task #59398#: ClipboardFormatId Umstellungen
+
+ Rev 1.2 18 May 1998 14:53:24 OM
+ #50001 Keine eckigen Klammern in DB-Condition-Fields
+
+ Rev 1.1 12 Mar 1998 16:32:42 OM
+ Datenbanknamen in eckigen Klammern bei Drop
+
+ Rev 1.0 19 Nov 1997 16:21:42 OM
+ Initial revision.
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/utlui/content.cxx b/sw/source/ui/utlui/content.cxx
new file mode 100644
index 000000000000..aad5df03f940
--- /dev/null
+++ b/sw/source/ui/utlui/content.cxx
@@ -0,0 +1,3223 @@
+/*************************************************************************
+ *
+ * $RCSfile: content.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _DRAG_HXX //autogen
+#include <vcl/drag.hxx>
+#endif
+#ifndef _URLBMK_HXX //autogen
+#include <svtools/urlbmk.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _CLIP_HXX //autogen
+#include <vcl/clip.hxx>
+#endif
+#ifndef _HELP_HXX //autogen
+#include <vcl/help.hxx>
+#endif
+#ifndef _SOT_FORMATS_HXX //autogen
+#include <sot/formats.hxx>
+#endif
+#ifndef _SV_SOUND_HXX //autogen
+#include <vcl/sound.hxx>
+#endif
+
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _TXTINET_HXX //autogen
+#include <txtinet.hxx>
+#endif
+#ifndef _FMTFLD_HXX //autogen
+#include <fmtfld.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _CONTENT_HXX
+#include <content.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _TXTATR_HXX
+#include <txtatr.hxx>
+#endif
+#ifndef _BOOKMRK_HXX
+#include <bookmrk.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx>
+#endif
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx>
+#endif
+#ifndef _TOX_HXX
+#include <tox.hxx>
+#endif
+#define NAVIPI_CXX
+#ifndef _NAVIPI_HXX
+#include <navipi.hxx>
+#endif
+#ifndef _NAVICONT_HXX
+#include <navicont.hxx>
+#endif
+#ifndef _NAVICFG_HXX
+#include <navicfg.hxx>
+#endif
+#ifndef _SWCONT_HXX
+#include <swcont.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _UNOTOOLS_HXX
+#include <unotools.hxx>
+#endif
+#ifndef _HINTS_HXX
+#include <hints.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _NAVIPI_HRC
+#include <navipi.hrc>
+#endif
+#ifndef _UTLUI_HRC
+#include <utlui.hrc>
+#endif
+#ifndef _MISC_HRC
+#include <misc.hrc>
+#endif
+#ifndef _COMCORE_HRC
+#include <comcore.hrc>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTSECTIONSSUPPLIER_HPP_
+#include <com/sun/star/text/XTextSectionsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTGRAPHICOBJECTSSUPPLIER_HPP_
+#include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTTABLESSUPPLIER_HPP_
+#include <com/sun/star/text/XTextTablesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XDOCUMENTINDEXESSUPPLIER_HPP_
+#include <com/sun/star/text/XDocumentIndexesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XBOOKMARKSSUPPLIER_HPP_
+#include <com/sun/star/text/XBookmarksSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTEMBEDDEDOBJECTSSUPPLIER_HPP_
+#include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTFRAMESSUPPLIER_HPP_
+#include <com/sun/star/text/XTextFramesSupplier.hpp>
+#endif
+
+
+#define CTYPE_CNT 0
+#define CTYPE_CTT 1
+
+using namespace ::com::sun::star;
+
+#define CP2S(cChar) UniString::CreateFromAscii(cChar)
+#define C2S(cChar) UniString::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(cChar))
+
+#define NAVI_BOOKMARK_DELIM (sal_Unicode)1
+
+
+/***************************************************************************
+
+***************************************************************************/
+
+typedef SwContent* SwContentPtr;
+SV_DECL_PTRARR_SORT_DEL( SwContentArr, SwContentPtr, 0,4)
+SV_IMPL_OP_PTRARR_SORT(SwContentArr, SwContentPtr)
+
+sal_Bool SwContentTree::bIsInDrag = sal_False;
+
+
+/***************************************************************************
+ Beschreibung: Hilfsmethoden
+***************************************************************************/
+
+
+sal_Bool lcl_IsContent(SvLBoxEntry* pEntry)
+{
+ return ((SwTypeNumber*)pEntry->GetUserData())->GetTypeId() == CTYPE_CNT;
+}
+
+
+sal_Bool lcl_IsContentType(SvLBoxEntry* pEntry)
+{
+ return ((SwTypeNumber*)pEntry->GetUserData())->GetTypeId() == CTYPE_CTT;
+}
+
+
+sal_Bool lcl_FindShell(SwWrtShell* pShell)
+{
+ sal_Bool bFound = sal_False;
+ SwView *pView = SwModule::GetFirstView();
+ while (pView)
+ {
+ if(pShell == &pView->GetWrtShell())
+ {
+ bFound = sal_True;
+ break;
+ }
+ pView = SwModule::GetNextView(pView);
+ }
+ return bFound;
+}
+
+/***************************************************************************
+ Beschreibung: Inhalt, enthaelt Namen und Verweis auf den Inhalstyp
+***************************************************************************/
+
+
+SwContent::SwContent(const SwContentType* pCnt, const String& rName, long nYPos) :
+ pParent(pCnt),
+ sContentName(rName),
+ SwTypeNumber(CTYPE_CNT),
+ nYPosition(nYPos),
+ bInvisible(sal_False)
+{
+}
+
+
+sal_uInt8 SwTypeNumber::GetTypeId()
+{
+ return nTypeId;
+}
+
+SwTypeNumber::~SwTypeNumber()
+{
+}
+
+sal_Bool SwContent::IsProtect() const
+{
+ return sal_False;
+}
+
+sal_Bool SwPostItContent::IsProtect() const
+{
+ return pFld->IsProtect();
+}
+
+sal_Bool SwURLFieldContent::IsProtect() const
+{
+ return pINetAttr->IsProtect();
+}
+
+SwGraphicContent::~SwGraphicContent()
+{
+}
+SwTOXBaseContent::~SwTOXBaseContent()
+{
+}
+
+/***************************************************************************
+ Beschreibung: Inhaltstyp, kennt seine Inhalte und die WrtShell
+***************************************************************************/
+
+
+SwContentType::SwContentType(SwWrtShell* pShell, sal_uInt16 nType, sal_uInt8 nLevel) :
+ SwTypeNumber(CTYPE_CTT),
+ pWrtShell(pShell),
+ nContentType(nType),
+ nOutlineLevel(nLevel),
+ bDataValid(sal_False),
+ bMemberFilled(sal_False),
+ sContentTypeName(SW_RES(STR_CONTENT_TYPE_FIRST + nType)),
+ sSingleContentTypeName(SW_RES(STR_CONTENT_TYPE_SINGLE_FIRST + nType)),
+ pMember(0),
+ bEdit(sal_False),
+ bDelete(sal_True),
+ nMemberCount(0)
+{
+ Init();
+}
+
+/***************************************************************************
+ Beschreibung: Initialisierung
+***************************************************************************/
+
+
+void SwContentType::Init(sal_Bool* pbInvalidateWindow)
+{
+ // wenn sich der MemberCount aendert ...
+ sal_uInt16 nOldMemberCount = nMemberCount;
+ nMemberCount = 0;
+ switch(nContentType)
+ {
+ case CONTENT_TYPE_OUTLINE :
+ {
+ sTypeToken = CP2S(pMarkToOutline);
+ sal_uInt16 nOutlineCount = nMemberCount = pWrtShell->GetOutlineCnt();
+ if(nOutlineLevel < MAXLEVEL)
+ {
+ for(sal_uInt16 j = 0; j < nOutlineCount; j++)
+ {
+ if(pWrtShell->GetOutlineLevel(j) > nOutlineLevel )
+ nMemberCount --;
+ }
+ }
+ bDelete = sal_False;
+ }
+ break;
+
+ case CONTENT_TYPE_TABLE :
+ sTypeToken = CP2S(pMarkToTable);
+ nMemberCount = pWrtShell->GetTblFrmFmtCount(sal_True);
+ bEdit = sal_True;
+ break;
+
+ case CONTENT_TYPE_FRAME :
+ case CONTENT_TYPE_GRAPHIC :
+ case CONTENT_TYPE_OLE :
+ {
+ FlyCntType eType = FLYCNTTYPE_FRM;
+ sTypeToken = CP2S(pMarkToFrame);
+ if(nContentType == CONTENT_TYPE_OLE)
+ {
+ eType = FLYCNTTYPE_OLE;
+ sTypeToken = CP2S(pMarkToOLE);
+ }
+ else if(nContentType == CONTENT_TYPE_GRAPHIC)
+ {
+ eType = FLYCNTTYPE_GRF;
+ sTypeToken = CP2S(pMarkToGraphic);
+ }
+ nMemberCount = pWrtShell->GetFlyCount(eType);
+ bEdit = sal_True;
+ }
+ break;
+ case CONTENT_TYPE_BOOKMARK :
+ {
+ sal_uInt16 nCount = nMemberCount = pWrtShell->GetBookmarkCnt(sal_True);
+ sTypeToken = aEmptyStr;
+ bEdit = sal_True;
+ }
+ break;
+ case CONTENT_TYPE_REGION :
+ {
+ SwContentArr* pOldMember = 0;
+ sal_uInt16 nOldRegionCount = 0;
+ sal_Bool bInvalidate = sal_False;
+ if(!pMember)
+ pMember = new SwContentArr;
+ else if(pMember->Count())
+ {
+ pOldMember = pMember;
+ nOldRegionCount = pOldMember->Count();
+ pMember = new SwContentArr;
+ }
+ const Point aNullPt;
+ nMemberCount = pWrtShell->GetSectionFmtCount();
+ for(sal_uInt16 i = 0; i < nMemberCount; i++)
+ {
+ const SwSectionFmt* pFmt;
+ SectionType eTmpType;
+ if( (pFmt = &pWrtShell->GetSectionFmt(i))->IsInNodesArr() &&
+ (eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
+ && TOX_HEADER_SECTION != eTmpType )
+ {
+ const String& rSectionName = pFmt->GetSection()->GetName();
+ sal_uInt16 nLevel = 0;
+ SwSectionFmt* pParentFmt = pFmt->GetParent();
+ while(pParentFmt)
+ {
+ nLevel++;
+ pParentFmt = pParentFmt->GetParent();
+ }
+
+ SwContent* pCnt = new SwRegionContent(this, rSectionName,
+ nLevel,
+ pFmt->FindLayoutRect( sal_False, &aNullPt ).Top());
+
+ SwPtrMsgPoolItem aAskItem( RES_CONTENT_VISIBLE, 0 );
+ if( !pFmt->GetInfo( aAskItem ) &&
+ !aAskItem.pObject ) // not visible
+ pCnt->SetInvisible();
+ pMember->Insert(pCnt);//, pMember->Count());
+
+ sal_uInt16 nPos = pMember->Count() - 1;
+ if(nOldRegionCount > nPos &&
+ (pOldMember->GetObject(nPos))->IsInvisible()
+ != pCnt->IsInvisible())
+ bInvalidate = sal_True;
+ }
+ }
+ nMemberCount = pMember->Count();
+ sTypeToken = CP2S(pMarkToRegion);
+ bEdit = sal_True;
+ bDelete = sal_False;
+ if(pOldMember)
+ {
+ pOldMember->DeleteAndDestroy(0, pOldMember->Count());
+ delete pOldMember;
+ if(pbInvalidateWindow && bInvalidate)
+ *pbInvalidateWindow = sal_True;
+ }
+ }
+ break;
+ case CONTENT_TYPE_INDEX:
+ {
+ nMemberCount = pWrtShell->GetTOXCount();
+ bEdit = sal_True;
+ bDelete = sal_False;
+ }
+ break;
+ case CONTENT_TYPE_REFERENCE:
+ {
+ nMemberCount = pWrtShell->GetRefMarks( 0 );
+ bDelete = sal_False;
+ }
+ break;
+ case CONTENT_TYPE_URLFIELD:
+ {
+ nMemberCount = 0;
+ if(!pMember)
+ pMember = new SwContentArr;
+ else if(pMember->Count())
+ pMember->DeleteAndDestroy(0, pMember->Count());
+
+ SwGetINetAttrs aArr;
+ nMemberCount = pWrtShell->GetINetAttrs( aArr );
+ for( sal_uInt16 n = 0; n < nMemberCount; ++n )
+ {
+ SwGetINetAttr* p = aArr[ n ];
+ SwURLFieldContent* pCnt = new SwURLFieldContent(
+ this,
+ p->sText,
+ INetURLObject::decode(
+ p->rINetAttr.GetINetFmt().GetValue(),
+ INET_HEX_ESCAPE,
+ INetURLObject::DECODE_WITH_CHARSET,
+ RTL_TEXTENCODING_UTF8 ),
+ &p->rINetAttr,
+ n );
+ pMember->Insert( pCnt );//, n );
+ }
+ bEdit = sal_True;
+ nOldMemberCount = nMemberCount;
+ bDelete = sal_False;
+ }
+ break;
+ case CONTENT_TYPE_POSTIT:
+ {
+ nMemberCount = 0;
+ if(!pMember)
+ pMember = new SwContentArr;
+ else if(pMember->Count())
+ pMember->DeleteAndDestroy(0, pMember->Count());
+ SwFieldType* pType = pWrtShell->GetFldType(
+ RES_POSTITFLD, aEmptyStr);
+ SwClientIter aIter( *pType );
+ SwClient * pFirst = aIter.GoStart();
+ while(pFirst)
+ {
+ if(((SwFmtFld*)pFirst)->GetTxtFld() &&
+ ((SwFmtFld*)pFirst)->IsFldInDoc())
+ {
+ SwField* pField = (SwField*)((SwFmtFld*)pFirst)
+ ->GetFld();
+
+ String sEntry = pField->GetPar2();
+ RemoveNewline(sEntry);
+ SwPostItContent* pCnt = new SwPostItContent(
+ this,
+ sEntry, // hier steht der Text
+ (const SwFmtFld*)pFirst,
+ nMemberCount);
+ pMember->Insert(pCnt);//, nMemberCount);
+ nMemberCount++;
+ }
+ pFirst = aIter++;
+ }
+ sTypeToken = aEmptyStr;
+ bEdit = sal_True;
+ nOldMemberCount = nMemberCount;
+ }
+ break;
+ case CONTENT_TYPE_DRAWOBJECT:
+ sTypeToken = aEmptyStr;
+ break;
+ }
+ // ... dann koennen die Daten auch nicht mehr gueltig sein
+ // abgesehen von denen, die schon korrigiert wurden, dann ist
+ // nOldMemberCount doch nicht so old
+ if( nOldMemberCount != nMemberCount )
+ bDataValid = sal_False;
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+
+SwContentType::~SwContentType()
+{
+ delete pMember;
+}
+
+/***************************************************************************
+ Beschreibung: Inhalt liefern, dazu gfs. die Liste fuellen
+***************************************************************************/
+
+
+const SwContent* SwContentType::GetMember(sal_uInt16 nIndex)
+{
+ if(!bDataValid || !pMember)
+ {
+ FillMemberList();
+ }
+ if(nIndex < pMember->Count())
+ return pMember->GetObject(nIndex);
+ else
+ return 0;
+
+}
+
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+
+void SwContentType::Invalidate()
+{
+ bDataValid = sal_False;
+}
+
+/***************************************************************************
+ Beschreibung: Liste der Inhalte fuellen
+***************************************************************************/
+
+
+void SwContentType::FillMemberList(sal_Bool* pbLevelOrVisibiblityChanged)
+{
+ SwContentArr* pOldMember = 0;
+ int nOldMemberCount = -1;
+ SwPtrMsgPoolItem aAskItem( RES_CONTENT_VISIBLE, 0 );
+ if(pMember && pbLevelOrVisibiblityChanged)
+ {
+ pOldMember = pMember;
+ nOldMemberCount = pOldMember->Count();
+ pMember = new SwContentArr;
+ *pbLevelOrVisibiblityChanged = sal_False;
+ }
+ else if(!pMember)
+ pMember = new SwContentArr;
+ else if(pMember->Count())
+ pMember->DeleteAndDestroy(0, pMember->Count());
+ switch(nContentType)
+ {
+ case CONTENT_TYPE_OUTLINE :
+ {
+ sal_uInt16 nOutlineCount = nMemberCount = pWrtShell->GetOutlineCnt();
+
+ sal_uInt16 nPos = 0;
+ for (sal_uInt16 i = 0; i < nOutlineCount; ++i)
+ {
+ const sal_Int8 nLevel = (sal_Int8)pWrtShell->GetOutlineLevel(i);
+ if(nLevel >= nOutlineLevel )
+ nMemberCount--;
+ else
+ {
+ String aEntry(pWrtShell->GetOutlineText(i));
+ aEntry.EraseLeadingChars();
+ SwNavigationPI::CleanEntry( aEntry );
+ SwOutlineContent* pCnt = new SwOutlineContent(this, aEntry, i, nLevel,
+ pWrtShell->IsOutlineMovable( i ), nPos );
+ pMember->Insert(pCnt);//, nPos);
+ // bei gleicher Anzahl und vorhandenem pOldMember wird die
+ // alte mit der neuen OutlinePos verglichen
+ // cast fuer Win16
+ if(nOldMemberCount > (int)nPos &&
+ ((SwOutlineContent*)pOldMember->GetObject(nPos))->GetOutlineLevel() != nLevel)
+ *pbLevelOrVisibiblityChanged = sal_True;
+
+ nPos++;
+ }
+ }
+
+ }
+ break;
+
+ case CONTENT_TYPE_TABLE :
+ {
+ DBG_ASSERT(nMemberCount ==
+ pWrtShell->GetTblFrmFmtCount(sal_True),
+ "MemberCount differiert")
+ Point aNullPt;
+ nMemberCount = pWrtShell->GetTblFrmFmtCount(sal_True);
+ for(sal_uInt16 i = 0; i < nMemberCount; i++)
+ {
+ const SwFrmFmt& rTblFmt = pWrtShell->GetTblFrmFmt(i, sal_True);
+ String sTblName( rTblFmt.GetName() );
+
+ SwContent* pCnt = new SwContent(this, sTblName,
+ rTblFmt.FindLayoutRect(sal_False, &aNullPt).Top() );
+ if( !rTblFmt.GetInfo( aAskItem ) &&
+ !aAskItem.pObject ) // not visible
+ pCnt->SetInvisible();
+
+ pMember->Insert(pCnt);//, i);
+
+ if(nOldMemberCount > (int)i &&
+ (pOldMember->GetObject(i))->IsInvisible() != pCnt->IsInvisible())
+ *pbLevelOrVisibiblityChanged = sal_True;
+ }
+ }
+ break;
+ case CONTENT_TYPE_OLE :
+ case CONTENT_TYPE_FRAME :
+ case CONTENT_TYPE_GRAPHIC :
+ {
+ FlyCntType eType = FLYCNTTYPE_FRM;
+ if(nContentType == CONTENT_TYPE_OLE)
+ eType = FLYCNTTYPE_OLE;
+ else if(nContentType == CONTENT_TYPE_GRAPHIC)
+ eType = FLYCNTTYPE_GRF;
+ DBG_ASSERT(nMemberCount == pWrtShell->GetFlyCount(eType),
+ "MemberCount differiert");
+ Point aNullPt;
+ nMemberCount = pWrtShell->GetFlyCount(eType);
+ for(sal_uInt16 i = 0; i < nMemberCount; i++)
+ {
+ const SwFrmFmt* pFrmFmt = pWrtShell->GetFlyNum(i,eType);
+ String sFrmName = pFrmFmt->GetName();
+
+ SwContent* pCnt;
+ if(CONTENT_TYPE_GRAPHIC == nContentType)
+ {
+ String sLink;
+ pWrtShell->GetGrfNms( &sLink, 0, (SwFlyFrmFmt*) pFrmFmt);
+ pCnt = new SwGraphicContent(this, sFrmName,
+ INetURLObject::decode( sLink, INET_HEX_ESCAPE,
+ INetURLObject::DECODE_WITH_CHARSET,
+ RTL_TEXTENCODING_UTF8 ),
+ pFrmFmt->FindLayoutRect(sal_False, &aNullPt).Top());
+ }
+ else
+ {
+ pCnt = new SwContent(this, sFrmName,
+ pFrmFmt->FindLayoutRect(sal_False, &aNullPt).Top() );
+ }
+ if( !pFrmFmt->GetInfo( aAskItem ) &&
+ !aAskItem.pObject ) // not visible
+ pCnt->SetInvisible();
+ pMember->Insert(pCnt);//, i);
+ if(nOldMemberCount > (int)i &&
+ (pOldMember->GetObject(i))->IsInvisible() != pCnt->IsInvisible())
+ *pbLevelOrVisibiblityChanged = sal_True;
+ }
+ }
+ break;
+ case CONTENT_TYPE_BOOKMARK :
+ {
+ nMemberCount = pWrtShell->GetBookmarkCnt(sal_True);
+ for(sal_uInt16 i = 0; i < nMemberCount; i++)
+ {
+ SwBookmark& rBkmk = pWrtShell->GetBookmark( i, sal_True );
+ const String& rBkmName = rBkmk.GetName();
+ //nYPos von 0 -> ::com::sun::star::text::Bookmarks werden nach Alphabet sortiert
+ SwContent* pCnt = new SwContent(this, rBkmName, 0);
+ pMember->Insert(pCnt);//, pMember->Count());
+ }
+ }
+ break;
+ case CONTENT_TYPE_REGION :
+ {
+ const Point aNullPt;
+ nMemberCount = pWrtShell->GetSectionFmtCount();
+ for(sal_uInt16 i = 0; i < nMemberCount; i++)
+ {
+ const SwSectionFmt* pFmt;
+ SectionType eTmpType;
+ if( (pFmt = &pWrtShell->GetSectionFmt(i))->IsInNodesArr() &&
+ (eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
+ && TOX_HEADER_SECTION != eTmpType )
+ {
+ String sSectionName = pFmt->GetSection()->GetName();
+
+ sal_uInt16 nLevel = 0;
+ SwSectionFmt* pParentFmt = pFmt->GetParent();
+ while(pParentFmt)
+ {
+ nLevel++;
+ pParentFmt = pParentFmt->GetParent();
+ }
+
+ SwContent* pCnt = new SwRegionContent(this, sSectionName,
+ nLevel,
+ pFmt->FindLayoutRect( sal_False, &aNullPt ).Top());
+ if( !pFmt->GetInfo( aAskItem ) &&
+ !aAskItem.pObject ) // not visible
+ pCnt->SetInvisible();
+ pMember->Insert(pCnt);//, pMember->Count());
+
+ sal_uInt16 nPos = pMember->Count() - 1;
+ if(nOldMemberCount > nPos &&
+ (pOldMember->GetObject(nPos))->IsInvisible()
+ != pCnt->IsInvisible())
+ *pbLevelOrVisibiblityChanged = sal_True;
+ }
+ }
+ nMemberCount = pMember->Count();
+ }
+ break;
+ case CONTENT_TYPE_REFERENCE:
+ {
+ SvStringsDtor aRefMarks;
+ nMemberCount = pWrtShell->GetRefMarks( &aRefMarks );
+
+ for(sal_uInt16 i=0; i<nMemberCount; i++)
+ {
+ //Referenzen nach Alphabet sortiert
+ SwContent* pCnt = new SwContent(
+ this, *aRefMarks.GetObject(i), 0);
+ pMember->Insert(pCnt);//, i);
+ }
+ }
+ break;
+ case CONTENT_TYPE_URLFIELD:
+ {
+ SwGetINetAttrs aArr;
+ nMemberCount = pWrtShell->GetINetAttrs( aArr );
+ for( sal_uInt16 n = 0; n < nMemberCount; ++n )
+ {
+ SwGetINetAttr* p = aArr[ n ];
+ SwURLFieldContent* pCnt = new SwURLFieldContent(
+ this,
+ p->sText,
+ INetURLObject::decode(
+ p->rINetAttr.GetINetFmt().GetValue(),
+ INET_HEX_ESCAPE,
+ INetURLObject::DECODE_WITH_CHARSET,
+ RTL_TEXTENCODING_UTF8 ),
+ &p->rINetAttr,
+ n );
+ pMember->Insert( pCnt );//, n );
+ }
+ }
+ break;
+ case CONTENT_TYPE_INDEX:
+ {
+
+ sal_uInt16 nCount = nMemberCount = pWrtShell->GetTOXCount();
+ for ( sal_uInt16 nTox = 0; nTox < nCount; nTox++ )
+ {
+ const SwTOXBase* pBase = pWrtShell->GetTOX( nTox );
+ String sTOXNm( pBase->GetTOXName() );
+
+ SwContent* pCnt = new SwTOXBaseContent(
+ this, sTOXNm, nTox, *pBase);
+
+ if( !pBase->GetInfo( aAskItem ) &&
+ !aAskItem.pObject ) // not visible
+ pCnt->SetInvisible();
+
+ pMember->Insert( pCnt );//, nTox );
+ sal_uInt16 nPos = pMember->Count() - 1;
+ if(nOldMemberCount > nPos &&
+ (pOldMember->GetObject(nPos))->IsInvisible()
+ != pCnt->IsInvisible())
+ *pbLevelOrVisibiblityChanged = sal_True;
+ }
+ }
+ break;
+ case CONTENT_TYPE_POSTIT:
+ {
+ nMemberCount = 0;
+ if(!pMember)
+ pMember = new SwContentArr;
+ else if(pMember->Count())
+ pMember->DeleteAndDestroy(0, pMember->Count());
+ SwFieldType* pType = pWrtShell->GetFldType(
+ RES_POSTITFLD, aEmptyStr);
+ SwClientIter aIter( *pType );
+ SwClient * pFirst = aIter.GoStart();
+ while(pFirst)
+ {
+ if(((SwFmtFld*)pFirst)->GetTxtFld() &&
+ ((SwFmtFld*)pFirst)->IsFldInDoc())
+ {
+ SwField* pField = (SwField*)((SwFmtFld*)pFirst)
+ ->GetFld();
+ String sEntry = pField->GetPar2();
+ RemoveNewline(sEntry);
+ SwPostItContent* pCnt = new SwPostItContent(
+ this,
+ sEntry, // hier steht der Text
+ (const SwFmtFld*)pFirst,
+ nMemberCount);
+ pMember->Insert(pCnt);//, nMemberCount);
+ nMemberCount++;
+ }
+ pFirst = aIter++;
+ }
+ }
+ break;
+ case CONTENT_TYPE_DRAWOBJECT:
+ break;
+ }
+ bDataValid = sal_True;
+ if(pOldMember)
+ pOldMember->DeleteAndDestroy(0, pOldMember->Count());
+
+}
+
+/***************************************************************************
+ Beschreibung: TreeListBox fuer Inhaltsanzeige
+***************************************************************************/
+
+
+SwContentTree::SwContentTree(Window* pParent, const ResId& rResId) :
+ SvTreeListBox( pParent, rResId ),
+ pHiddenShell(0),
+ pActiveShell(0),
+ pConfig(SW_MOD()->GetNavigationConfig()),
+ sSpace(C2S(" ")),
+ sRemoveIdx(SW_RES(ST_REMOVE_INDEX)),
+ sUpdateIdx(SW_RES(ST_UPDATE)),
+ sRename(SW_RES(ST_RENAME)),
+ sReadonlyIdx(SW_RES(ST_READONLY_IDX)),
+ sUnprotTbl(SW_RES(ST_REMOVE_TBL_PROTECTION)),
+ sInvisible(SW_RES(ST_INVISIBLE)),
+ nActiveBlock(0),
+ nHiddenBlock(0),
+ nOutlineLevel(MAXLEVEL),
+ nRootType(USHRT_MAX),
+ nLastSelType(USHRT_MAX),
+ bIsActive(sal_True),
+ bIsConstant(sal_False),
+ bIsHidden(sal_False),
+ bIsInternalDrag(sal_False),
+ bDocChgdInDragging(sal_False),
+ bIsRoot(sal_False),
+ bIsIdleClear(sal_False),
+ bIsLastReadOnly(sal_False),
+ bIsOutlineMoveable(sal_True),
+ bViewHasChanged(sal_False),
+ bIsImageListInitialized(sal_False)
+{
+ SetHelpId(HID_NAVIGATOR_TREELIST);
+
+ Bitmap aRootClosed (SW_RES(BMP_ROOT_CLOSED));
+ Bitmap aRootOpened (SW_RES(BMP_ROOT_OPENED));
+ SetNodeBitmaps( aRootClosed, aRootOpened );
+ SetDoubleClickHdl(LINK(this, SwContentTree, ContentDoubleClickHdl));
+ SetDragDropMode(SV_DRAGDROP_APP_COPY);
+ for(sal_uInt16 i=0; i < CONTENT_TYPE_MAX; i++)
+ {
+ aActiveContentArr[i] = 0;
+ aHiddenContentArr[i] = 0;
+ }
+ for( i = 0; i < CONTEXT_COUNT; i++ )
+ {
+ aContextStrings[i] = SW_RESSTR(i+ST_CONTEXT_FIRST);
+ }
+ nActiveBlock = pConfig->GetActiveBlock();
+ aUpdTimer.SetTimeoutHdl(LINK(this, SwContentTree, TimerUpdate));
+ aUpdTimer.SetTimeout(1000);
+ Clear();
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+
+SwContentTree::~SwContentTree()
+{
+ Clear(); // vorher gfs. Inhaltstypen loeschen
+ bIsInDrag = sal_False;
+}
+
+/***************************************************************************
+ Beschreibung: Drop wird im Navigator ausgefuehrt
+***************************************************************************/
+
+
+sal_Bool SwContentTree::Drop( const DropEvent& rEvt)
+{
+ if(bIsRoot)
+ {
+ return SvTreeListBox::Drop(rEvt);
+ }
+ else
+ return bIsInDrag ? sal_False : GetParentWindow()->Drop(rEvt);
+}
+
+/***************************************************************************
+ Beschreibung: QueryDrop wird im Navigator ausgefuehrt
+***************************************************************************/
+
+
+sal_Bool SwContentTree::QueryDrop( DropEvent& rEvt)
+{
+ if(bIsRoot)
+ {
+ return bIsOutlineMoveable && SvTreeListBox::QueryDrop(rEvt);
+ }
+ else
+ return bIsInDrag ? sal_False : GetParentWindow()->QueryDrop(rEvt);
+}
+
+/***************************************************************************
+ Beschreibung: Handler fuer Dragging und ContextMenu
+***************************************************************************/
+
+
+void SwContentTree::Command( const CommandEvent& rCEvt )
+{
+ sal_Bool bParent = sal_False;
+ switch( rCEvt.GetCommand() )
+ {
+ case COMMAND_STARTDRAG:
+ {
+ if(!bIsRoot || nRootType != CONTENT_TYPE_OUTLINE)
+ {
+ ReleaseMouse();
+ StartExecuteDrag();
+ }
+ else
+ bParent = sal_True;
+ }
+ break;
+ case COMMAND_CONTEXTMENU:
+ {
+ PopupMenu aPop;
+ PopupMenu aSubPop1;
+ PopupMenu aSubPop2;
+ PopupMenu aSubPop3;
+ PopupMenu aSubPop4; // Bearbeiten
+
+ for(sal_uInt16 i = 1; i <= MAXLEVEL; i++ )
+ {
+ aSubPop1.InsertItem( i + 100, String::CreateFromInt32(i));
+ }
+ aSubPop1.CheckItem(100 + nOutlineLevel);
+ for(i=0; i < 3; i++ )
+ {
+ aSubPop2.InsertItem( i + 201, aContextStrings[
+ ST_HYPERLINK - ST_CONTEXT_FIRST + i]);
+ }
+ aSubPop2.CheckItem( 201 +
+ GetParentWindow()->GetRegionDropMode());
+ //Liste der offenen Dateien einfuegen
+ sal_uInt16 nId = 301;
+ const SwView* pActiveView = ::GetActiveView();
+ SwView *pView = SwModule::GetFirstView();
+ while (pView)
+ {
+ String sInsert = pView->GetDocShell()->GetTitle();
+ if(pView == pActiveView)
+ {
+ sInsert += '(';
+ sInsert += aContextStrings[ ST_ACTIVE - ST_CONTEXT_FIRST];
+ sInsert += ')';
+ }
+ aSubPop3.InsertItem(nId, sInsert);
+ if(bIsConstant && pActiveShell == &pView->GetWrtShell())
+ aSubPop3.CheckItem(nId);
+ pView = SwModule::GetNextView(pView);
+ nId++;
+ }
+ aSubPop3.InsertItem(nId++, aContextStrings[ST_ACTIVE_VIEW - ST_CONTEXT_FIRST]);
+ if(pHiddenShell)
+ {
+ String sHiddenEntry = pHiddenShell->GetView().GetDocShell()->GetTitle();
+ sHiddenEntry += C2S(" ( ");
+ sHiddenEntry += aContextStrings[ ST_HIDDEN - ST_CONTEXT_FIRST];
+ sHiddenEntry += C2S(" )");
+ aSubPop3.InsertItem(nId, sHiddenEntry);
+ }
+
+ if(bIsActive)
+ aSubPop3.CheckItem( --nId );
+ else if(bIsHidden)
+ aSubPop3.CheckItem( nId );
+
+ aPop.InsertItem( 1, aContextStrings[
+ ST_OUTLINE_LEVEL - ST_CONTEXT_FIRST]);
+ aPop.InsertItem(2, aContextStrings[ST_DRAGMODE - ST_CONTEXT_FIRST]);
+ aPop.InsertItem(3, aContextStrings[ST_DISPLAY - ST_CONTEXT_FIRST]);
+ Link aSelLk = LINK(this, SwContentTree, PopupHdl );
+ //jetzt noch bearbeiten
+ SvLBoxEntry* pEntry;
+ //Bearbeiten nur, wenn die angezeigten Inhalte aus der aktiven View kommen
+ if((bIsActive || pActiveShell == pActiveView->GetWrtShellPtr())
+ && 0 != (pEntry = FirstSelected()) && lcl_IsContent(pEntry))
+ {
+ const SwContentType* pContType = ((SwContent*)pEntry->GetUserData())->GetParent();
+ const sal_uInt16 nContentType = pContType->GetType();
+ sal_Bool bReadonly = pActiveShell->GetView().GetDocShell()->IsReadOnly();
+ sal_Bool bEditable = pContType->IsEditable();
+ sal_Bool bDeletable = pContType->IsDeletable();
+ sal_Bool bRenamable = bEditable && !bReadonly &&
+ (CONTENT_TYPE_TABLE == nContentType ||
+ CONTENT_TYPE_FRAME == nContentType ||
+ CONTENT_TYPE_GRAPHIC == nContentType ||
+ CONTENT_TYPE_OLE == nContentType ||
+ CONTENT_TYPE_BOOKMARK == nContentType ||
+ CONTENT_TYPE_REGION == nContentType||
+ CONTENT_TYPE_INDEX == nContentType);
+
+ if(!bReadonly && (bEditable || bDeletable))
+ {
+ sal_Bool bSubPop4 = sal_False;
+ if(CONTENT_TYPE_INDEX == nContentType)
+ {
+ bSubPop4 = sal_True;
+ aSubPop4.InsertItem(401, sRemoveIdx);
+ aSubPop4.InsertItem(402, sUpdateIdx);
+ aSubPop4.InsertItem(403, aContextStrings[ST_EDIT_ENTRY - ST_CONTEXT_FIRST]);
+ aSubPop4.InsertItem(405, sReadonlyIdx);
+
+ const SwTOXBase* pBase = ((SwTOXBaseContent*)pEntry->GetUserData())->GetTOXBase();
+ aSubPop4.CheckItem( 405, pActiveShell->IsTOXBaseReadonly(*pBase));
+ aSubPop4.InsertItem(501, aContextStrings[ST_DELETE_ENTRY - ST_CONTEXT_FIRST]);
+ }
+ else if(CONTENT_TYPE_TABLE == nContentType && !bReadonly)
+ {
+ bSubPop4 = sal_True;
+ aSubPop4.InsertItem(403, aContextStrings[ST_EDIT_ENTRY - ST_CONTEXT_FIRST]);
+ aSubPop4.InsertItem(404, sUnprotTbl);
+ sal_Bool bFull = sal_False;
+ String sTblName = ((SwContent*)pEntry->GetUserData())->GetName();
+ sal_Bool bProt =pActiveShell->HasTblAnyProtection( &sTblName, &bFull );
+ aSubPop4.EnableItem(403, !bFull );
+ aSubPop4.EnableItem(404, bProt );
+ aSubPop4.InsertItem(501, aContextStrings[ST_DELETE_ENTRY - ST_CONTEXT_FIRST]);
+ }
+ else if(!((SwContent*)pEntry->GetUserData())->IsProtect())
+ {
+ if(bEditable && bDeletable)
+ {
+ aSubPop4.InsertItem(403, aContextStrings[ST_EDIT_ENTRY - ST_CONTEXT_FIRST]);
+ aSubPop4.InsertItem(501, aContextStrings[ST_DELETE_ENTRY - ST_CONTEXT_FIRST]);
+ bSubPop4 = sal_True;
+ }
+ else if(bEditable)
+ aPop.InsertItem(403, aContextStrings[ST_EDIT_ENTRY - ST_CONTEXT_FIRST]);
+ else if(bDeletable)
+ aPop.InsertItem(501, aContextStrings[ST_DELETE_ENTRY - ST_CONTEXT_FIRST]);
+ }
+ //Rename object
+ if(bRenamable)
+ {
+ if(bSubPop4)
+ aSubPop4.InsertItem(502, sRename);
+ else
+ aPop.InsertItem(502, sRename);
+ }
+
+ if(bSubPop4)
+ {
+ aPop.InsertItem(4, pContType->GetSingleName());
+ aPop.SetPopupMenu(4, &aSubPop4);
+ aSubPop4.SetSelectHdl(aSelLk);
+ }
+ }
+ }
+
+
+ aPop.SetPopupMenu( 1, &aSubPop1 );
+ aPop.SetPopupMenu( 2, &aSubPop2 );
+ aPop.SetPopupMenu( 3, &aSubPop3 );
+ aPop.SetSelectHdl(aSelLk);
+ aSubPop1.SetSelectHdl(aSelLk);
+ aSubPop2.SetSelectHdl(aSelLk);
+ aSubPop3.SetSelectHdl(aSelLk);
+
+ aPop.Execute( this, rCEvt.GetMousePosPixel() );
+ }
+ break;
+ default: bParent = sal_True;
+ }
+ if(bParent)
+ SvTreeListBox::Command(rCEvt);
+}
+
+/***************************************************************************
+ Beschreibung: Einrueckung fuer outlines (und sections)
+***************************************************************************/
+
+
+long SwContentTree::GetTabPos( SvLBoxEntry* pEntry, SvLBoxTab* pTab)
+{
+ sal_uInt16 nLevel = 0;
+ if(lcl_IsContent(pEntry))
+ {
+ nLevel++;
+ SwContent* pCnt = (SwContent *) pEntry->GetUserData();
+ const SwContentType* pParent;
+ if(pCnt && 0 != (pParent = pCnt->GetParent()))
+ {
+ if(pParent->GetType() == CONTENT_TYPE_OUTLINE)
+ nLevel += ((SwOutlineContent*)pCnt)->GetOutlineLevel();
+ else if(pParent->GetType() == CONTENT_TYPE_REGION)
+ nLevel += ((SwRegionContent*)pCnt)->GetRegionLevel();
+ }
+ }
+ sal_uInt16 nBasis = bIsRoot ? 0 : 5;
+ return nLevel * 10 + nBasis + pTab->GetPos(); //empirisch ermittelt
+}
+
+/***************************************************************************
+ Beschreibung: Inhalte werden erst auf Anforderung in die Box eingefuegt
+***************************************************************************/
+
+
+void SwContentTree::RequestingChilds( SvLBoxEntry* pParent )
+{
+ // ist es ein Inhaltstyp?
+ if(lcl_IsContentType(pParent))
+ {
+ if(!pParent->HasChilds())
+ {
+ DBG_ASSERT(pParent->GetUserData(), "keine UserData?")
+ SwContentType* pCntType = (SwContentType*)pParent->GetUserData();
+
+ sal_uInt16 nCount = pCntType->GetMemberCount();
+ for(sal_uInt16 i = 0; i < nCount; i++)
+ {
+ const SwContent* pCnt = pCntType->GetMember(i);
+ if(pCnt)
+ {
+ String sEntry = pCnt->GetName();
+ if(!sEntry.Len())
+ sEntry = sSpace;
+ SvLBoxEntry* pChild = InsertEntry(sEntry, pParent,
+ sal_False, LIST_APPEND, (void*)pCnt);
+ }
+
+ }
+ }
+ }
+}
+/***************************************************************************
+ Beschreibung: Expand - Zustand fuer Inhaltstypen merken
+***************************************************************************/
+
+
+sal_Bool SwContentTree::Expand( SvLBoxEntry* pParent )
+{
+ if(!bIsRoot)
+ {
+ if(lcl_IsContentType(pParent))
+ {
+ SwContentType* pCntType = (SwContentType*)pParent->GetUserData();
+ sal_uInt16 nOr = 1 << pCntType->GetType(); //linear -> Bitposition
+ if(bIsActive || bIsConstant)
+ {
+ nActiveBlock |= nOr;
+ pConfig->SetActiveBlock(nActiveBlock);
+ }
+ else
+ nHiddenBlock |= nOr;
+ }
+ }
+ return SvTreeListBox::Expand(pParent);
+}
+/***************************************************************************
+ Beschreibung: Collapse - Zustand fuer Inhaltstypen merken
+***************************************************************************/
+
+
+sal_Bool SwContentTree::Collapse( SvLBoxEntry* pParent )
+{
+ sal_Bool bRet;
+ if(!bIsRoot)
+ {
+ if(lcl_IsContentType(pParent))
+ {
+ SwContentType* pCntType = (SwContentType*)pParent->GetUserData();
+ sal_uInt16 nAnd = 1 << pCntType->GetType();
+ nAnd = ~nAnd;
+ if(bIsActive || bIsConstant)
+ {
+ nActiveBlock &= nAnd;
+ pConfig->SetActiveBlock(nActiveBlock);
+ }
+ else
+ nHiddenBlock &= nAnd;
+ }
+ bRet = SvTreeListBox::Collapse(pParent);
+ }
+ else
+ bRet = sal_False;
+ return bRet;
+}
+
+
+/***************************************************************************
+ Beschreibung: Auch auf Doppelclick wird zunaechst nur aufgeklappt
+***************************************************************************/
+
+
+IMPL_LINK( SwContentTree, ContentDoubleClickHdl, SwContentTree *, EMPTYARG )
+{
+ SvLBoxEntry* pEntry = GetCurEntry();
+ // ist es ein Inhaltstyp?
+ DBG_ASSERT(pEntry, "kein aktueller Eintrag!")
+ if(pEntry)
+ {
+ if(lcl_IsContentType(pEntry))
+ RequestingChilds(pEntry);
+ else if(bIsActive || bIsConstant)
+ {
+ if(bIsConstant)
+ {
+ pActiveShell->GetView().GetViewFrame()->GetWindow().ToTop();
+ }
+ //Inhaltstyp anspringen:
+ SwContent* pCnt = (SwContent*)pEntry->GetUserData();
+ DBG_ASSERT( pCnt, "keine UserData")
+ GotoContent(pCnt);
+ if(pCnt->GetParent()->GetType() == CONTENT_TYPE_FRAME)
+ pActiveShell->EnterStdMode();
+ }
+ }
+ return 0;
+}
+
+/***************************************************************************
+ Beschreibung: Anzeigen der Datei
+***************************************************************************/
+
+
+void SwContentTree::Display( sal_Bool bActive )
+{
+ if(!bIsImageListInitialized)
+ {
+ aEntryImages = ImageList(SW_RES(IMG_NAVI_ENTRYBMP));
+ bIsImageListInitialized = sal_True;
+ }
+ // erst den selektierten Eintrag auslesen, um ihn spaeter evtl. wieder
+ // zu selektieren -> die UserDaten sind hier nicht mehr gueltig!
+ SvLBoxEntry* pOldSelEntry = FirstSelected();
+ String sEntryName; // Name des Eintrags
+ sal_uInt16 nEntryRelPos = 0; // rel. Pos zu seinem Parent
+ if(pOldSelEntry)
+ {
+ sEntryName = GetEntryText(pOldSelEntry);
+ if(GetParent(pOldSelEntry))
+ {
+ nEntryRelPos = (sal_uInt16)(GetModel()->GetAbsPos(pOldSelEntry) - GetModel()->GetAbsPos(GetParent(pOldSelEntry)));
+ }
+ }
+ Clear();
+ SetUpdateMode( sal_False );
+ if(bActive && !bIsConstant && !bIsActive)
+ bIsActive = bActive;
+ bIsHidden = !bActive;
+ SwWrtShell* pShell = GetWrtShell();
+ sal_Bool bReadOnly = pShell ? pShell->GetView().GetDocShell()->IsReadOnly() : sal_True;
+ if(bReadOnly != bIsLastReadOnly)
+ {
+ bIsLastReadOnly = bReadOnly;
+ sal_Bool bDisable = pShell == 0 || bReadOnly;
+ SwNavigationPI* pNavi = GetParentWindow();
+ pNavi->aContentToolBox.EnableItem(FN_ITEM_UP , !bDisable);
+ pNavi->aContentToolBox.EnableItem(FN_ITEM_DOWN, !bDisable);
+ pNavi->aContentToolBox.EnableItem(FN_ITEM_LEFT, !bDisable);
+ pNavi->aContentToolBox.EnableItem(FN_ITEM_RIGHT, !bDisable);
+ pNavi->aContentToolBox.EnableItem(FN_SELECT_SET_AUTO_BOOKMARK, !bDisable);
+ }
+ if(pShell)
+ {
+ SvLBoxEntry* pSelEntry = 0;
+ if(nRootType == USHRT_MAX)
+ {
+ for(sal_uInt16 nCntType = CONTENT_TYPE_OUTLINE;
+ nCntType <= CONTENT_TYPE_POSTIT; nCntType++ )
+ {
+ SwContentType** ppContentT = bActive ?
+ &aActiveContentArr[nCntType] :
+ &aHiddenContentArr[nCntType];
+ if(!*ppContentT)
+ (*ppContentT) = new SwContentType(pShell, nCntType, nOutlineLevel );
+
+
+ String sEntry = (*ppContentT)->GetName();
+ SvLBoxEntry* pEntry;
+ const Image& rImage = aEntryImages.GetImage(SID_SW_START + nCntType);
+ sal_Bool bChOnDemand = 0 != (*ppContentT)->GetMemberCount();
+ pEntry = InsertEntry(sEntry, rImage, rImage,
+ 0, bChOnDemand, LIST_APPEND, (*ppContentT));
+ if(nCntType == nLastSelType)
+ pSelEntry = pEntry;
+ sal_uInt16 nExpandOptions = bIsActive || bIsConstant ?
+ nActiveBlock :
+ nHiddenBlock;
+ if(nExpandOptions & (1 << nCntType))
+ {
+ Expand(pEntry);
+ if(nEntryRelPos && nCntType == nLastSelType)
+ {
+ // jetzt vielleicht noch ein Child selektieren
+ SvLBoxEntry* pChild = pEntry;
+ SvLBoxEntry* pTemp = 0;
+ sal_uInt16 nPos = 1;
+ while(0 != (pChild = Next(pChild)))
+ {
+ // der alte Text wird leicht bevorzugt
+ if(sEntryName == GetEntryText(pChild) ||
+ nPos == nEntryRelPos )
+ {
+ pSelEntry = pChild;
+ break;
+ }
+ pTemp = pChild;
+ nPos++;
+ }
+ if(!pSelEntry || lcl_IsContentType(pSelEntry))
+ pSelEntry = pTemp;
+ }
+
+ }
+ }
+ if(pSelEntry)
+ {
+ MakeVisible(pSelEntry);
+ Select(pSelEntry);
+ }
+ }
+ else
+ {
+ SwContentType** ppRootContentT = bActive ?
+ &aActiveContentArr[nRootType] :
+ &aHiddenContentArr[nRootType];
+ if(!(*ppRootContentT))
+ (*ppRootContentT) = new SwContentType(pShell, nRootType, nOutlineLevel );
+ const Image& rImage = aEntryImages.GetImage(20000 + nRootType);
+ SvLBoxEntry* pParent = InsertEntry(
+ (*ppRootContentT)->GetName(), rImage, rImage,
+ 0, sal_False, LIST_APPEND, *ppRootContentT);
+ SvLBoxEntry* pEntry;
+ for(sal_uInt16 i = 0; i < (*ppRootContentT)->GetMemberCount(); i++ )
+ {
+ const SwContent* pCnt = (*ppRootContentT)->GetMember(i);
+ if(pCnt)
+ {
+ String sEntry = pCnt->GetName();
+ if(!sEntry.Len())
+ sEntry = sSpace;
+ pEntry = InsertEntry( sEntry, pParent,
+ sal_False, LIST_APPEND, (void*)pCnt);
+ }
+ }
+ Expand(pParent);
+ if( nRootType == CONTENT_TYPE_OUTLINE && bIsActive )
+ {
+ //feststellen, wo der Cursor steht
+ const sal_uInt16 nActPos = pShell->GetOutlinePos(MAXLEVEL);
+ SvLBoxEntry* pEntry = First();
+
+ while( 0 != (pEntry = Next(pEntry)) )
+ {
+ if(((SwOutlineContent*)pEntry->GetUserData())->GetPos() == nActPos)
+ {
+ MakeVisible(pEntry);
+ Select(pEntry);
+ }
+ }
+
+ }
+ else
+ {
+ // jetzt vielleicht noch ein Child selektieren
+ SvLBoxEntry* pChild = pParent;
+ SvLBoxEntry* pTemp = 0;
+ sal_uInt16 nPos = 1;
+ while(0 != (pChild = Next(pChild)))
+ {
+ // der alte Text wird leicht bevorzugt
+ if(sEntryName == GetEntryText(pChild) ||
+ nPos == nEntryRelPos )
+ {
+ pSelEntry = pChild;
+ break;
+ }
+ pTemp = pChild;
+ nPos++;
+ }
+ if(!pSelEntry)
+ pSelEntry = pTemp;
+ if(pSelEntry)
+ {
+ MakeVisible(pSelEntry);
+ Select(pSelEntry);
+ }
+ }
+ }
+ }
+ SetUpdateMode( sal_True );
+
+}
+
+/***************************************************************************
+ Beschreibung: Im Clear muessen auch die ContentTypes geloescht werden
+***************************************************************************/
+
+
+void SwContentTree::Clear()
+{
+ SetUpdateMode(sal_False);
+ SvTreeListBox::Clear();
+ SetUpdateMode(sal_True);
+}
+
+/***************************************************************************
+ Beschreibung: Inhalt eintueten und abschicken
+***************************************************************************/
+
+
+void SwContentTree::StartExecuteDrag()
+{
+ DragServer::Clear();
+ nDragMode = DRAG_MOVEABLE|DRAG_COPYABLE|DRAG_LINKABLE;
+ if(!FillDragServer(nDragMode))
+ return;
+
+ Application::PostUserEvent( STATIC_LINK( this, SwContentTree, ExecDragHdl ) );
+
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+
+sal_Bool SwContentTree::FillDragServer(sal_uInt16& nDragMode)
+{
+ SwWrtShell* pWrtShell = GetWrtShell();
+ DBG_ASSERT(pWrtShell, "keine Shell!")
+ SvLBoxEntry* pEntry = GetCurEntry();
+ if(!pEntry || lcl_IsContentType(pEntry) || !pWrtShell)
+ return sal_False;
+ String sEntry;
+ SwContent* pCnt = ((SwContent*)pEntry->GetUserData());
+
+ sal_uInt16 nActType = pCnt->GetParent()->GetType();
+ String sUrl;
+ sal_Bool bOutline = sal_False;
+ String sOutlineText;
+ switch( nActType )
+ {
+ case CONTENT_TYPE_OUTLINE:
+ {
+ sal_uInt16 nPos = ((SwOutlineContent*)pCnt)->GetPos();
+ DBG_ASSERT(nPos < pWrtShell->GetOutlineCnt(),
+ "outlinecnt veraendert")
+ const SwNumRule* pOutlRule = pWrtShell->GetOutlineNumRule();
+ const SwNodeNum* pNum = pWrtShell->GetOutlineNum(nPos);
+ if( pNum && pOutlRule && MAXLEVEL >= pNum->GetLevel())
+ for(sal_Int8 nLevel = 0; nLevel <= pNum->GetLevel(); nLevel++)
+ {
+ sal_uInt16 nVal = pNum->GetLevelVal()[nLevel];
+ nVal ++;
+ nVal -= pOutlRule->Get(nLevel).GetStartValue();
+ sEntry += String::CreateFromInt32( nVal );
+ sEntry += '.';
+ }
+ sEntry += pWrtShell->GetOutlineText(nPos, sal_False);
+ sOutlineText = pWrtShell->GetOutlineText(nPos, sal_True);
+ bIsOutlineMoveable = ((SwOutlineContent*)pCnt)->IsMoveable();
+ bOutline = sal_True;
+ }
+ break;
+ case CONTENT_TYPE_POSTIT:
+ case CONTENT_TYPE_INDEX:
+ case CONTENT_TYPE_REFERENCE :
+ // koennen weder als URL noch als Bereich eingefuegt werden
+ break;
+ case CONTENT_TYPE_URLFIELD:
+ sUrl = ((SwURLFieldContent*)pCnt)->GetURL();
+ // kein break;
+ case CONTENT_TYPE_OLE:
+ case CONTENT_TYPE_GRAPHIC:
+ if(GetParentWindow()->GetRegionDropMode() != REGION_MODE_NONE)
+ break;
+ else
+ nDragMode &= ~(DRAG_LINKABLE|DRAG_MOVEABLE);
+ default:
+ sEntry = GetEntryText(pEntry);
+ }
+
+ sal_Bool bRet = sal_False;
+ if(sEntry.Len())
+ {
+ const SwDocShell* pDocShell = pWrtShell->GetView().GetDocShell();
+ if(!sUrl.Len())
+ {
+ if(pDocShell->HasName())
+ {
+ SfxMedium* pMedium = pDocShell->GetMedium();
+ sUrl = pMedium->GetURLObject().GetURLNoMark();
+ // nur, wenn primaer ein Link eingefuegt werden soll
+ bRet = sal_True;
+ }
+ else if( nActType == CONTENT_TYPE_REGION ||
+ nActType == CONTENT_TYPE_BOOKMARK )
+ {
+ // fuer Bereich und Textmarken ist ein Link auch ohne
+ // Dateiname ins eigene Dokument erlaubt
+ bRet = sal_True;
+ }
+ else if(bIsConstant &&
+ ( !::GetActiveView() ||
+ pActiveShell != ::GetActiveView()->GetWrtShellPtr()))
+ {
+ // Urls von inaktiven Views ohne Dateinamen koennen auch nicht
+ // gedraggt werden
+ bRet = sal_False;
+ }
+ else
+ {
+ bRet = GetParentWindow()->GetRegionDropMode() == REGION_MODE_NONE;
+ nDragMode = DRAG_MOVEABLE;
+ }
+
+ const String& rToken = pCnt->GetParent()->GetTypeToken();
+ sUrl += '#';
+ sUrl += sEntry;
+ if(rToken.Len())
+ {
+ sUrl += cMarkSeperator;
+ sUrl += rToken;
+ }
+ }
+ else
+ bRet = sal_True;
+ if(bRet)
+ {
+ DragServer::NewItem();
+ //fuer Outlines muss in die Description der Ueberschrifttext mit der echten Nummer
+ if(bOutline)
+ sEntry = sOutlineText;
+ {
+ NaviContentBookmark aBmk( sUrl, sEntry,
+ GetParentWindow()->GetRegionDropMode(),
+ pDocShell);
+ aBmk.CopyDragServer();
+ }
+
+ // fuer fremde DocShells muss eine INetBookmark
+ // dazugeliefert werden
+ if(pDocShell->HasName())
+ {
+ INetBookmark aBmk( sUrl, sEntry );
+ aBmk.CopyDragServer();
+ }
+ }
+ }
+ return bRet;
+}
+/***************************************************************************
+ Beschreibung: Umschalten der Anzeige auf Root
+***************************************************************************/
+
+
+sal_Bool SwContentTree::ToggleToRoot()
+{
+ if(!bIsRoot)
+ {
+ SvLBoxEntry* pEntry = GetCurEntry();
+ const SwContentType* pCntType;
+ if(pEntry)
+ {
+ if(lcl_IsContentType(pEntry))
+ pCntType = (SwContentType*)pEntry->GetUserData();
+ else
+ pCntType = ((SwContent*)pEntry->GetUserData())->GetParent();
+ nRootType = pCntType->GetType();
+ bIsRoot = sal_True;
+ Display(bIsActive || bIsConstant);
+ }
+ }
+ else
+ {
+ nRootType = USHRT_MAX;
+ bIsRoot = sal_False;
+ FindActiveTypeAndRemoveUserData();
+ Display(bIsActive || bIsConstant);
+ }
+ pConfig->SetRootType( nRootType );
+ GetParentWindow()->aContentToolBox.CheckItem(FN_SHOW_ROOT, bIsRoot);
+ return bIsRoot;
+}
+
+/***************************************************************************
+ Beschreibung: Angezeigten Inhalt auf Gueltigkeit pruefen
+***************************************************************************/
+
+
+sal_Bool SwContentTree::HasContentChanged()
+{
+/*
+ -Parallel durch das lokale Array und die Treelistbox laufen.
+ -Sind die Eintraege nicht expandiert, werden sie nur im Array verworfen
+ und der Contenttype wird als UserData neu gesetzt.
+ - ist der Root-Modus aktiv, wird nur dieser aktualisiert,
+ fuer die nicht angezeigten Inhaltstypen gilt:
+ die Memberliste wird geloescht und der Membercount aktualisiert
+ Wenn Inhalte ueberprueft werden, werden gleichzeitig die vorhanden
+ Memberlisten aufgefuellt. Sobald ein Unterschied auftritt wird nur noch
+ gefuellt und nicht mehr ueberprueft. Abschliessend wird die Box neu gefuellt.
+
+*/
+
+ sal_Bool bRepaint = sal_False;
+ sal_Bool bInvalidate = sal_False;
+
+ if(!bIsActive && ! bIsConstant)
+ {
+ for(sal_uInt16 i=0; i < CONTENT_TYPE_MAX; i++)
+ {
+ if(aActiveContentArr[i])
+ aActiveContentArr[i]->Invalidate();
+ }
+ }
+ else if(bIsRoot)
+ {
+ sal_Bool bOutline = sal_False;
+ SvLBoxEntry* pEntry = First();
+ if(!pEntry)
+ bRepaint = sal_True;
+ else
+ {
+ sal_uInt16 nType = ((SwContentType*)pEntry->GetUserData())->GetType();
+ bOutline = nRootType == CONTENT_TYPE_OUTLINE;
+ SwContentType* pArrType = aActiveContentArr[nType];
+ if(!pArrType)
+ bRepaint = sal_True;
+ else
+ {
+ sal_uInt16 nSelLevel = USHRT_MAX;
+
+ SvLBoxEntry* pFirstSel;
+ if(bOutline &&
+ 0 != ( pFirstSel = FirstSelected()) &&
+ lcl_IsContent(pFirstSel))
+ {
+ nSelLevel = ((SwOutlineContent*)pFirstSel->GetUserData())->GetOutlineLevel();
+ SwWrtShell* pSh = GetWrtShell();
+ sal_uInt16 nOutlinePos = pSh->GetOutlinePos(MAXLEVEL);
+ bRepaint |= nOutlinePos != USHRT_MAX && pSh->GetOutlineLevel(nOutlinePos) != nSelLevel;
+ }
+
+ pArrType->Init(&bInvalidate);
+ pArrType->FillMemberList();
+ pEntry->SetUserData((void*)pArrType);
+ if(!bRepaint)
+ {
+ if(GetChildCount(pEntry) != pArrType->GetMemberCount())
+ bRepaint = sal_True;
+ else
+ {
+ sal_uInt16 nChildCount = (sal_uInt16)GetChildCount(pEntry);
+ for(sal_uInt16 j = 0; j < nChildCount; j++)
+ {
+ pEntry = Next(pEntry);
+ const SwContent* pCnt = pArrType->GetMember(j);
+ pEntry->SetUserData((void*)pCnt);
+ String sEntryText = GetEntryText(pEntry);
+ if( sEntryText != pCnt->GetName() &&
+ !(sEntryText == sSpace && !pCnt->GetName().Len()))
+ bRepaint = sal_True;
+ }
+ }
+ }
+ }
+ }
+ if( !bRepaint && bOutline )
+ {
+ //feststellen, wo der Cursor steht
+ const sal_uInt16 nActPos = GetWrtShell()->GetOutlinePos(MAXLEVEL);
+ SvLBoxEntry* pEntry = First();
+
+ while( 0 != (pEntry = Next(pEntry)) )
+ {
+ if(((SwOutlineContent*)pEntry->GetUserData())->GetPos() == nActPos)
+ {
+ if(FirstSelected() != pEntry)
+ {
+ Select(pEntry);
+ MakeVisible(pEntry);
+ }
+ }
+ }
+
+ }
+
+ }
+ else
+ {
+ SvLBoxEntry* pEntry = First();
+ while ( pEntry )
+ {
+ sal_Bool bNext = sal_True; // mindestens ein Next muss sein
+ SwContentType* pTreeType = (SwContentType*)pEntry->GetUserData();
+ sal_uInt16 nType = pTreeType->GetType();
+ sal_uInt16 nTreeCount = pTreeType->GetMemberCount();
+ SwContentType* pArrType = aActiveContentArr[nType];
+ if(!pArrType)
+ bRepaint = sal_True;
+ else
+ {
+ pArrType->Init(&bInvalidate);
+ pEntry->SetUserData((void*)pArrType);
+ if(IsExpanded(pEntry))
+ {
+ sal_Bool bLevelOrVisibiblityChanged = sal_False;
+ // bLevelOrVisibiblityChanged is set if outlines have changed their level
+ // or if the visibility of objects (frames, sections, tables) has changed
+ // i.e. in header/footer
+ pArrType->FillMemberList(&bLevelOrVisibiblityChanged);
+ if(bLevelOrVisibiblityChanged)
+ bInvalidate = sal_True;
+ sal_uInt16 nChildCount = (sal_uInt16)GetChildCount(pEntry);
+ if(bLevelOrVisibiblityChanged)
+ bInvalidate = sal_True;
+
+ if(nChildCount != pArrType->GetMemberCount())
+ bRepaint = sal_True;
+ else
+ {
+ for(sal_uInt16 j = 0; j < nChildCount; j++)
+ {
+ pEntry = Next(pEntry);
+ bNext = sal_False;
+ const SwContent* pCnt = pArrType->GetMember(j);
+ pEntry->SetUserData((void*)pCnt);
+ String sEntryText = GetEntryText(pEntry);
+ if( sEntryText != pCnt->GetName() &&
+ !(sEntryText == sSpace && !pCnt->GetName().Len()))
+ bRepaint = sal_True;
+ }
+ }
+
+ }
+ else if(pEntry->HasChilds())
+ {
+ //war der Eintrag einmal aufgeklappt, dann muessen auch
+ // die unsichtbaren Eintraege geprueft werden.
+ // zumindest muessen die Userdaten aktualisiert werden
+ sal_Bool bLevelOrVisibiblityChanged = sal_False;
+ // bLevelOrVisibiblityChanged is set if outlines have changed their level
+ // or if the visibility of objects (frames, sections, tables) has changed
+ // i.e. in header/footer
+ pArrType->FillMemberList(&bLevelOrVisibiblityChanged);
+ sal_Bool bRemoveChildren = sal_False;
+ sal_uInt16 nChildCount = (sal_uInt16)GetChildCount(pEntry);
+ if( nChildCount != pArrType->GetMemberCount() )
+ {
+ bRemoveChildren = sal_True;
+ }
+ else
+ {
+ SvLBoxEntry* pChild = FirstChild(pEntry);
+ for(sal_uInt16 j = 0; j < nChildCount; j++)
+ {
+ const SwContent* pCnt = pArrType->GetMember(j);
+ pChild->SetUserData((void*)pCnt);
+ String sEntryText = GetEntryText(pChild);
+ if( sEntryText != pCnt->GetName() &&
+ !(sEntryText == sSpace && !pCnt->GetName().Len()))
+ bRemoveChildren = sal_True;
+ pChild = Next(pChild);
+ }
+ }
+ if(bRemoveChildren)
+ {
+ SvLBoxEntry* pChild = FirstChild(pEntry);
+ SvLBoxEntry* pRemove = pChild;
+ for(sal_uInt16 j = 0; j < nChildCount; j++)
+ {
+ pChild = Next(pRemove);
+ GetModel()->Remove(pRemove);
+ pRemove = pChild;
+ }
+ }
+ if(!nChildCount)
+ {
+ pEntry->EnableChildsOnDemand(sal_False);
+ InvalidateEntry(pEntry);
+ }
+
+ }
+ else if((nTreeCount != 0)
+ != (pArrType->GetMemberCount()!=0))
+ {
+ bRepaint = sal_True;
+ }
+ }
+ //hier muss noch der naechste Root-Entry gefunden werden
+ while( pEntry && (bNext || GetParent(pEntry ) ))
+ {
+ pEntry = Next(pEntry);
+ bNext = sal_False;
+ }
+ }
+ }
+ if(!bRepaint && bInvalidate)
+ Invalidate();
+ return bRepaint;
+}
+
+/***************************************************************************
+ Beschreibung: Bevor alle Daten geloescht werden, soll noch der letzte
+ * aktive Eintrag festgestellt werden. Dann werden die
+ * UserData geloescht
+***************************************************************************/
+void SwContentTree::FindActiveTypeAndRemoveUserData()
+{
+ SvLBoxEntry* pEntry = FirstSelected();
+ if(pEntry)
+ {
+ // wird Clear ueber TimerUpdate gerufen, kann nur fuer die Root
+ // die Gueltigkeit der UserData garantiert werden
+ SvLBoxEntry* pParent;
+ while(0 != (pParent = GetParent(pEntry)))
+ pEntry = pParent;
+ if(pEntry->GetUserData() && lcl_IsContentType(pEntry))
+ nLastSelType = ((SwContentType*)pEntry->GetUserData())->GetType();
+ }
+// else
+// nLastSelType = USHRT_MAX;
+ pEntry = First();
+ while(pEntry)
+ {
+ pEntry->SetUserData(0);
+ pEntry = Next(pEntry);
+ }
+}
+
+/***************************************************************************
+ Beschreibung: Nachdem ein File auf den Navigator gedroppt wurde,
+ wird die neue Shell gesetzt
+***************************************************************************/
+
+
+void SwContentTree::SetHiddenShell(SwWrtShell* pSh)
+{
+ pHiddenShell = pSh;
+ bIsHidden = sal_True;
+ bIsActive = bIsConstant = sal_False;
+ FindActiveTypeAndRemoveUserData();
+ for(sal_uInt16 i=0; i < CONTENT_TYPE_MAX; i++)
+ {
+ DELETEZ(aHiddenContentArr[i]);
+ }
+ Display(bIsActive);
+
+ GetParentWindow()->UpdateListBox();
+}
+/***************************************************************************
+ Beschreibung: Dokumentwechsel - neue Shell setzen
+***************************************************************************/
+
+
+void SwContentTree::SetActiveShell(SwWrtShell* pSh)
+{
+ if(bIsInternalDrag)
+ bDocChgdInDragging = sal_True;
+ sal_Bool bClear = pActiveShell != pSh;
+ if(bIsActive && bClear)
+ {
+ pActiveShell = pSh;
+ FindActiveTypeAndRemoveUserData();
+ Clear();
+ }
+ else if(bIsConstant)
+ {
+ if(!lcl_FindShell(pActiveShell))
+ {
+ pActiveShell = pSh;
+ bIsActive = sal_True;
+ bIsConstant = sal_False;
+ bClear = sal_True;
+ }
+ }
+ // nur wenn es die aktive View ist, wird das Array geloescht und
+ // die Anzeige neu gefuellt
+ if(bIsActive && bClear)
+ {
+ FindActiveTypeAndRemoveUserData();
+ for(sal_uInt16 i=0; i < CONTENT_TYPE_MAX; i++)
+ {
+ DELETEZ(aActiveContentArr[i]);
+ }
+ Display(sal_True);
+ }
+}
+
+/***************************************************************************
+ Beschreibung: Eine offene View als aktiv festlegen
+***************************************************************************/
+
+
+void SwContentTree::SetConstantShell(SwWrtShell* pSh)
+{
+ pActiveShell = pSh;
+ bIsActive = sal_False;
+ bIsConstant = sal_True;
+ FindActiveTypeAndRemoveUserData();
+ for(sal_uInt16 i=0; i < CONTENT_TYPE_MAX; i++)
+ {
+ DELETEZ(aActiveContentArr[i]);
+ }
+ Display(sal_True);
+}
+/***************************************************************************
+ Beschreibung: Kommandos des Navigators ausfuehren
+***************************************************************************/
+
+
+void SwContentTree::ExecCommand(sal_uInt16 nCmd, sal_Bool bModifier)
+{
+ sal_Bool nMove = sal_False;
+ switch( nCmd )
+ {
+ case FN_ITEM_DOWN:
+ case FN_ITEM_UP: nMove = sal_True;
+ case FN_ITEM_LEFT:
+ case FN_ITEM_RIGHT:
+ if( !GetWrtShell()->GetView().GetDocShell()->IsReadOnly() &&
+ (bIsActive ||
+ (bIsConstant && pActiveShell == ::GetActiveView()->GetWrtShellPtr())))
+ {
+ SwWrtShell* pShell = GetWrtShell();
+ sal_Int8 nActOutlineLevel = nOutlineLevel;
+ sal_uInt16 nActPos = pShell->GetOutlinePos(nActOutlineLevel);
+ SvLBoxEntry* pFirstEntry = FirstSelected();
+ if (pFirstEntry && lcl_IsContent(pFirstEntry))
+ {
+ if(bIsRoot && nRootType == CONTENT_TYPE_OUTLINE ||
+ ((SwContent*)pFirstEntry->GetUserData())->GetParent()->GetType()
+ == CONTENT_TYPE_OUTLINE)
+ nActPos = ((SwOutlineContent*)pFirstEntry->GetUserData())->GetPos();
+ }
+ if ( nActPos < USHRT_MAX &&
+ ( !nMove || pShell->IsOutlineMovable( nActPos )) )
+ {
+ pShell->StartAllAction();
+ pShell->GotoOutline( nActPos); // Falls Textselektion != BoxSelektion
+ pShell->Push();
+ pShell->MakeOutlineSel( nActPos, nActPos,
+ bModifier);
+ if( nMove )
+ {
+ short nDir = nCmd == FN_ITEM_UP ? -1 : 1;
+ if( !bModifier && (nDir == -1 && nActPos > 0 ||
+ nDir == 1 && nActPos < GetEntryCount() - 2 ) )
+ {
+ pShell->MoveOutlinePara( nDir );
+ //Cursor wieder an die aktuelle Position setzen
+ pShell->GotoOutline( nActPos + nDir);
+ }
+ else if(bModifier)
+ {
+ sal_uInt16 nActEndPos = nActPos;
+ SvLBoxEntry* pEntry = pFirstEntry;
+ sal_uInt16 nActLevel = ((SwOutlineContent*)
+ pFirstEntry->GetUserData())->GetOutlineLevel();
+ pEntry = Next(pEntry);
+ while( pEntry && CONTENT_TYPE_OUTLINE ==
+ ((SwTypeNumber*)pEntry->GetUserData())->GetTypeId() )
+ {
+ if(nActLevel >= ((SwOutlineContent*)
+ pEntry->GetUserData())->GetOutlineLevel())
+ break;
+ pEntry = Next(pEntry);
+ nActEndPos++;
+ }
+ sal_uInt16 nDest;
+ if(nDir == 1)
+ {
+ //Wenn der letzte Eintrag bewegt werden soll
+ //ist Schluss
+ if(pEntry && CONTENT_TYPE_OUTLINE ==
+ ((SwTypeNumber*)pEntry->GetUserData())->GetTypeId())
+ {
+ // pEntry zeigt jetzt auf den
+ // dem letzten sel. Eintrag folgenden E.
+ nDest = nActEndPos;
+ nDest++;
+ //hier muss der uebernaechste Eintrag
+ //gefunden werden. Die Selektion muss davor eingefuegt
+ //werden
+ while(pEntry )
+ {
+ pEntry = Next(pEntry);
+ // nDest++ darf nur ausgefuehrt werden,
+ // wenn pEntry != 0
+ if(pEntry && nDest++ &&
+ ( nActLevel >= ((SwOutlineContent*)pEntry->GetUserData())->GetOutlineLevel()||
+ CONTENT_TYPE_OUTLINE != ((SwTypeNumber*)pEntry->GetUserData())->GetTypeId()))
+ {
+ nDest--;
+ break;
+ }
+ }
+ nDir = nDest - nActEndPos;
+ //wenn kein Eintrag gefunden wurde, der der Bedingung
+ //fuer das zuvor Einfuegen entspricht, muss etwas weniger
+ //geschoben werden
+ }
+ else
+ nDir = 0;
+ }
+ else
+ {
+ nDest = nActPos;
+ pEntry = pFirstEntry;
+ while(pEntry && nDest )
+ {
+ nDest--;
+ pEntry = Prev(pEntry);
+ if(pEntry &&
+ (nActLevel >= ((SwOutlineContent*)pEntry->GetUserData())->GetOutlineLevel()||
+ CONTENT_TYPE_OUTLINE !=
+ ((SwTypeNumber*)pEntry->GetUserData())->GetTypeId()))
+ {
+ break;
+ }
+ }
+ nDir = nDest - nActPos;
+ }
+ if(nDir)
+ {
+ pShell->MoveOutlinePara( nDir );
+ //Cursor wieder an die aktuelle Position setzen
+ pShell->GotoOutline( nActPos + nDir);
+ }
+ }
+ }
+ else
+ {
+ if( pShell->IsProtectedOutlinePara() )
+ Sound::Beep(); //konnte nicht umgestuft werden
+ else
+ pShell->OutlineUpDown( nCmd == FN_ITEM_LEFT ? -1 : 1 );
+ }
+
+ pShell->ClearMark();
+ pShell->Pop(sal_False); //Cursor steht jetzt wieder an der akt. Ueberschrift
+ pShell->EndAllAction();
+ if(aActiveContentArr[CONTENT_TYPE_OUTLINE])
+ aActiveContentArr[CONTENT_TYPE_OUTLINE]->Invalidate();
+ Display(sal_True);
+ if(!bIsRoot)
+ {
+ const sal_uInt16 nActPos = pShell->GetOutlinePos(MAXLEVEL);
+ SvLBoxEntry* pEntry = First();
+
+ while( 0 != (pEntry = Next(pEntry)) && lcl_IsContent(pEntry))
+ {
+ if(((SwOutlineContent*)pEntry->GetUserData())->GetPos() == nActPos)
+ {
+ Select(pEntry);
+ MakeVisible(pEntry);
+ }
+ }
+ }
+ }
+ else
+ Sound::Beep(); //konnte nicht verschoben werden
+ }
+ }
+}
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+
+void SwContentTree::Show()
+{
+ aUpdTimer.Start();
+ SvTreeListBox::Show();
+}
+
+/***************************************************************************
+ Beschreibung: zusammengefaltet wird nicht geidlet
+***************************************************************************/
+
+
+void SwContentTree::Hide()
+{
+ aUpdTimer.Stop();
+ SvTreeListBox::Hide();
+}
+
+/***************************************************************************
+ Beschreibung: Kein Idle mit Focus oder waehrend des Dragging
+***************************************************************************/
+
+
+IMPL_LINK( SwContentTree, TimerUpdate, Timer*, EMPTYARG)
+{
+ // kein Update waehrend D&D
+ // Viewabfrage, da der Navigator zu spaet abgeraeumt wird
+ SwView* pView = ::GetActiveView();
+ if( (!HasFocus() || bViewHasChanged) &&
+ !bIsInDrag && !bIsInternalDrag && pView &&
+ pView->GetWrtShellPtr() && !pView->GetWrtShellPtr()->ActionPend() )
+ {
+ bViewHasChanged = sal_False;
+ bIsIdleClear = sal_False;
+ SwWrtShell* pActShell = pView->GetWrtShellPtr();
+ if( bIsConstant && !lcl_FindShell( pActiveShell ) )
+ {
+ SetActiveShell(pActShell);
+ GetParentWindow()->UpdateListBox();
+ }
+
+ if(bIsActive && pActShell != GetWrtShell())
+ SetActiveShell(pActShell);
+ else if( (bIsActive || (bIsConstant && pActShell == GetWrtShell())) &&
+ HasContentChanged())
+ {
+ FindActiveTypeAndRemoveUserData();
+ Display(sal_True);
+ }
+ }
+ else if(!pView && bIsActive && !bIsIdleClear)
+ {
+ if(pActiveShell)
+ SetActiveShell(0);
+ Clear();
+ bIsIdleClear = sal_True;
+ }
+ return 0;
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+
+DragDropMode SwContentTree::NotifyBeginDrag( SvLBoxEntry* pEntry )
+{
+ DragDropMode eMode = (DragDropMode)0;
+ if(bIsActive && nRootType == CONTENT_TYPE_OUTLINE &&
+ GetModel()->GetAbsPos( pEntry ) > 0
+ && !GetWrtShell()->GetView().GetDocShell()->IsReadOnly())
+ eMode = GetDragDropMode();
+ else if(!bIsActive && GetWrtShell()->GetView().GetDocShell()->HasName())
+ eMode = SV_DRAGDROP_APP_COPY;
+
+ sal_uInt16 nDrgMode;
+ FillDragServer(nDrgMode);
+ bDocChgdInDragging = sal_False;
+ return eMode;
+}
+
+
+/***************************************************************************
+ Beschreibung : Nach dem Drag wird der aktuelle Absatz m i t
+ Childs verschoben
+***************************************************************************/
+
+
+sal_Bool SwContentTree::NotifyMoving( SvLBoxEntry* pTarget,
+ SvLBoxEntry* pEntry, SvLBoxEntry*& , sal_uInt32& )
+{
+ if(!bDocChgdInDragging)
+ {
+ sal_uInt16 nTargetPos = 0;
+ sal_uInt16 nSourcePos = (( SwOutlineContent* )pEntry->GetUserData())->GetPos();
+ if(!lcl_IsContent(pTarget))
+ nTargetPos = USHRT_MAX;
+ else
+ nTargetPos = (( SwOutlineContent* )pTarget->GetUserData())->GetPos();
+ if( MAXLEVEL > nOutlineLevel && // werden nicht alle Ebenen angezeigt
+ nTargetPos != USHRT_MAX)
+ {
+ SvLBoxEntry* pNext = Next(pTarget);
+ if(pNext)
+ nTargetPos = (( SwOutlineContent* )pNext->GetUserData())->GetPos() -1;
+ else
+ nTargetPos = GetWrtShell()->GetOutlineCnt() - 1;
+
+ }
+
+ DBG_ASSERT( pEntry &&
+ lcl_IsContent(pEntry),"Source == 0 oder Source hat keinen Content" )
+ GetParentWindow()->MoveOutline( nSourcePos,
+ nTargetPos,
+ sal_True);
+
+ aActiveContentArr[CONTENT_TYPE_OUTLINE]->Invalidate();
+ Display(sal_True);
+ }
+ //TreeListBox wird aus dem Dokument neu geladen
+ return sal_False;
+}
+/***************************************************************************
+ Beschreibung : Nach dem Drag wird der aktuelle Absatz o h n e
+ Childs verschoben
+***************************************************************************/
+
+
+sal_Bool SwContentTree::NotifyCopying( SvLBoxEntry* pTarget,
+ SvLBoxEntry* pEntry, SvLBoxEntry*& , sal_uInt32& )
+{
+ if(!bDocChgdInDragging)
+ {
+ sal_uInt16 nTargetPos = 0;
+ sal_uInt16 nSourcePos = (( SwOutlineContent* )pEntry->GetUserData())->GetPos();
+ if(!lcl_IsContent(pTarget))
+ nTargetPos = USHRT_MAX;
+ else
+ nTargetPos = (( SwOutlineContent* )pTarget->GetUserData())->GetPos();
+
+ if( MAXLEVEL > nOutlineLevel && // werden nicht alle Ebenen angezeigt
+ nTargetPos != USHRT_MAX)
+ {
+ SvLBoxEntry* pNext = Next(pTarget);
+ if(pNext)
+ nTargetPos = (( SwOutlineContent* )pNext->GetUserData())->GetPos() - 1;
+ else
+ nTargetPos = GetWrtShell()->GetOutlineCnt() - 1;
+
+ }
+
+
+ DBG_ASSERT( pEntry &&
+ lcl_IsContent(pEntry),"Source == 0 oder Source hat keinen Content" )
+ GetParentWindow()->MoveOutline( nSourcePos, nTargetPos, sal_False);
+
+ //TreeListBox wird aus dem Dokument neu geladen
+ aActiveContentArr[CONTENT_TYPE_OUTLINE]->Invalidate();
+ Display(sal_True);
+ }
+ return sal_False;
+}
+/***************************************************************************
+ Beschreibung: Kein Drop vor den ersten Eintrag - es ist ein SwContentType
+***************************************************************************/
+
+
+sal_Bool SwContentTree::NotifyQueryDrop( SvLBoxEntry* pEntry)
+{
+ return pEntry != 0;
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+
+void SwContentTree::BeginDrag( const Point& rPt)
+{
+ bIsInternalDrag = sal_True;
+ SvTreeListBox::BeginDrag(rPt);
+}
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+
+void SwContentTree::EndDrag()
+{
+ bIsInternalDrag = sal_False;
+ SvTreeListBox::EndDrag();
+}
+/***************************************************************************
+ Beschreibung: Wird ein Ctrl+DoubleClick in einen freien Bereich ausgefuehrt,
+ * dann soll die Basisfunktion des Controls gerufen werden
+***************************************************************************/
+void SwContentTree::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ Point aPos( rMEvt.GetPosPixel());
+ SvLBoxEntry* pEntry = GetEntry( aPos, sal_True );
+ if( !pEntry && rMEvt.IsLeft() && rMEvt.IsMod1() && (rMEvt.GetClicks() % 2) == 0)
+ Control::MouseButtonDown( rMEvt );
+ else
+ SvTreeListBox::MouseButtonDown( rMEvt );
+}
+
+/***************************************************************************
+ Beschreibung: sofort aktualisieren
+***************************************************************************/
+
+
+void SwContentTree::GetFocus()
+{
+ SwView* pActView = ::GetActiveView();
+ if(pActView)
+ {
+ SwWrtShell* pActShell = pActView->GetWrtShellPtr();
+ if(bIsConstant && !lcl_FindShell(pActiveShell))
+ {
+ SetActiveShell(pActShell);
+ }
+
+ if(bIsActive && pActShell != GetWrtShell())
+ SetActiveShell(pActShell);
+ else if( (bIsActive || (bIsConstant && pActShell == GetWrtShell())) &&
+ HasContentChanged())
+ {
+ Display(sal_True);
+ }
+ }
+ else if(bIsActive)
+ Clear();
+ SvTreeListBox::GetFocus();
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+
+void SwContentTree::KeyInput(const KeyEvent& rEvent)
+{
+ const KeyCode aCode = rEvent.GetKeyCode();
+ if(aCode.GetCode() == KEY_RETURN)
+ {
+ SvLBoxEntry* pEntry = FirstSelected();
+ if ( pEntry )
+ {
+ switch(aCode.GetModifier())
+ {
+ case KEY_MOD2:
+ // Boxen umschalten
+ GetParentWindow()->ToggleTree();
+ break;
+ case KEY_MOD1:
+ // RootModus umschalten
+ ToggleToRoot();
+ break;
+ case 0:
+ if(lcl_IsContentType(pEntry))
+ {
+ IsExpanded(pEntry) ?
+ Collapse(pEntry) :
+ Expand(pEntry);
+ }
+ else
+ ContentDoubleClickHdl(0);
+ break;
+ }
+ }
+ }
+ else if(aCode.GetCode() == KEY_DELETE && 0 == aCode.GetModifier())
+ {
+ SvLBoxEntry* pEntry = FirstSelected();
+ if(pEntry &&
+ lcl_IsContent(pEntry) &&
+ ((SwContent*)pEntry->GetUserData())->GetParent()->IsDeletable() &&
+ !pActiveShell->GetView().GetDocShell()->IsReadOnly())
+ {
+ EditEntry(pEntry, EDIT_MODE_DELETE);
+ GrabFocus();
+ }
+ }
+ else
+ SvTreeListBox::KeyInput(rEvent);
+
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+
+void SwContentTree::RequestHelp( const HelpEvent& rHEvt )
+{
+ if( rHEvt.GetMode() & HELPMODE_QUICK )
+ {
+ Point aPos( ScreenToOutputPixel( rHEvt.GetMousePosPixel() ));
+ SvLBoxEntry* pEntry = GetEntry( aPos );
+ if( pEntry )
+ {
+ sal_uInt16 nType;
+ sal_Bool bBalloon = sal_False;
+ sal_Bool bContent = sal_False;
+ void* pUserData = pEntry->GetUserData();
+ if(lcl_IsContentType(pEntry))
+ nType = ((SwContentType*)pUserData)->GetType();
+ else
+ {
+ nType = ((SwContent*)pUserData)->GetParent()->GetType();
+ bContent = sal_True;
+ }
+ String sEntry;
+ sal_Bool bRet = sal_False;
+ if(bContent)
+ {
+ switch( nType )
+ {
+ case CONTENT_TYPE_URLFIELD:
+ sEntry = ((SwURLFieldContent*)pUserData)->GetURL();
+ bRet = sal_True;
+ break;
+
+ case CONTENT_TYPE_POSTIT:
+ sEntry = ((SwPostItContent*)pUserData)->GetName();
+ bRet = sal_True;
+ if(Help::IsBalloonHelpEnabled())
+ bBalloon = sal_True;
+ break;
+ case CONTENT_TYPE_OUTLINE:
+ sEntry = ((SwOutlineContent*)pUserData)->GetName();
+ bRet = sal_True;
+ break;
+ case CONTENT_TYPE_GRAPHIC:
+ sEntry = ((SwGraphicContent*)pUserData)->GetLink();
+#ifdef DEBUG
+ sEntry += ' ';
+ sEntry += String::CreateFromInt32(
+ ((SwGraphicContent*)pUserData)->GetYPos());
+#endif
+ bRet = sal_True;
+ break;
+#ifdef DEBUG
+ case CONTENT_TYPE_TABLE:
+ case CONTENT_TYPE_FRAME:
+ sEntry = String::CreateFromInt32(
+ ((SwContent*)pUserData)->GetYPos() );
+ bRet = sal_True;
+ break;
+#endif
+ }
+ if(((SwContent*)pUserData)->IsInvisible())
+ {
+ if(sEntry.Len())
+ sEntry += C2S(", ");
+ sEntry += sInvisible;
+ bRet = sal_True;
+ }
+ }
+ else
+ {
+ sal_uInt16 nMemberCount = ((SwContentType*)pUserData)->GetMemberCount();
+ sEntry = String::CreateFromInt32(nMemberCount);
+ sEntry += ' ';
+ sEntry += nMemberCount == 1
+ ? ((SwContentType*)pUserData)->GetSingleName()
+ : ((SwContentType*)pUserData)->GetName();
+ bRet = sal_True;
+ }
+ if(bRet)
+ {
+ SvLBoxTab* pTab;
+ SvLBoxItem* pItem = GetItem( pEntry, aPos.X(), &pTab );
+ if( pItem && SV_ITEM_ID_LBOXSTRING == pItem->IsA())
+ {
+ aPos = GetEntryPos( pEntry );
+
+ aPos.X() = GetTabPos( pEntry, pTab );
+ Size aSize( pItem->GetSize( this, pEntry ) );
+
+ if((aPos.X() + aSize.Width()) > GetSizePixel().Width())
+ aSize.Width() = GetSizePixel().Width() - aPos.X();
+
+ aPos = OutputToScreenPixel(aPos);
+ Rectangle aItemRect( aPos, aSize );
+ if(bBalloon)
+ {
+ aPos.X() += aSize.Width();
+ Help::ShowBalloon( this, aPos, aItemRect, sEntry );
+ }
+ else
+ Help::ShowQuickHelp( this, aItemRect, sEntry,
+ QUICKHELP_LEFT|QUICKHELP_VCENTER );
+ }
+ }
+ else
+ Help::ShowQuickHelp( this, Rectangle(), aEmptyStr, 0 );
+ }
+ }
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+
+IMPL_LINK(SwContentTree, PopupHdl, Menu*, pMenu)
+{
+ sal_uInt16 nId = pMenu->GetCurItemId();
+ SvLBoxEntry* pFirst = FirstSelected();
+ switch( nId )
+ {
+ //Outlinelevel
+ case 101:
+ case 102:
+ case 103:
+ case 104:
+ case 105:
+ case 106:
+ case 107:
+ case 108:
+ case 109:
+ case 110:
+ nId -= 100;
+ if(nOutlineLevel != nId )
+ SetOutlineLevel((sal_Int8)nId);
+ break;
+ case 201:
+ case 202:
+ case 203:
+ GetParentWindow()->SetRegionDropMode(nId - 201);
+ break;
+ case 401:
+ case 402:
+ EditEntry(pFirst, nId == 401 ? EDIT_MODE_RMV_IDX : EDIT_MODE_UPD_IDX);
+ break;
+ // Eintrag bearbeiten
+ case 403:
+ EditEntry(pFirst);
+ break;
+ case 404:
+ EditEntry(pFirst, EDIT_UNPROTECT_TABLE);
+ break;
+ case 405 :
+ {
+ const SwTOXBase* pBase = ((SwTOXBaseContent*)pFirst->GetUserData())
+ ->GetTOXBase();
+ pActiveShell->SetTOXBaseReadonly(*pBase, !pMenu->IsItemChecked(nId));
+ }
+ break;
+ case 4:
+ break;
+ case 501:
+ EditEntry(pFirst, EDIT_MODE_DELETE);
+ break;
+ case 502 :
+ EditEntry(pFirst, EDIT_MODE_RENAME);
+ break;
+ //Anzeige
+ default: // nId > 300
+ if(nId > 300 && nId < 400)
+ {
+ nId -= 300;
+ SwView *pView = SwModule::GetFirstView();
+ while (pView)
+ {
+ nId --;
+ if(nId == 0)
+ {
+ SetConstantShell(&pView->GetWrtShell());
+ break;
+ }
+ pView = SwModule::GetNextView(pView);
+ }
+ if(nId)
+ {
+ bViewHasChanged = bIsActive = nId==1;
+ bIsConstant = sal_False;
+ Display(nId == 1);
+ }
+ }
+ }
+ GetParentWindow()->UpdateListBox();
+ return sal_True;
+}
+
+/***************************************************************************
+ Beschreibung:
+***************************************************************************/
+
+
+void SwContentTree::SetOutlineLevel(sal_uInt8 nSet)
+{
+ nOutlineLevel = nSet;
+ pConfig->SetOutlineLevel( nOutlineLevel );
+ SwContentType** ppContentT = bIsActive ?
+ &aActiveContentArr[CONTENT_TYPE_OUTLINE] :
+ &aHiddenContentArr[CONTENT_TYPE_OUTLINE];
+ if(*ppContentT)
+ {
+ (*ppContentT)->SetOutlineLevel(nOutlineLevel);
+ (*ppContentT)->Init();
+ }
+ Display(bIsActive);
+}
+
+/***************************************************************************
+ Beschreibung: Moduswechsel: gedropptes Doc anzeigen
+***************************************************************************/
+
+
+void SwContentTree::ShowHiddenShell()
+{
+ if(pHiddenShell)
+ {
+ bIsConstant = sal_False;
+ bIsActive = sal_False;
+ Display(sal_False);
+ }
+}
+
+/***************************************************************************
+ Beschreibung: Moduswechsel: aktive Sicht anzeigen
+***************************************************************************/
+
+
+void SwContentTree::ShowActualView()
+{
+ bIsActive = sal_True;
+ bIsConstant = sal_False;
+ Display(sal_True);
+ GetParentWindow()->UpdateListBox();
+}
+
+/*-----------------20.11.96 13.34-------------------
+ Beschreibung: Hier sollen die Buttons zum Verschieben von
+ Outlines en-/disabled werden
+--------------------------------------------------*/
+
+sal_Bool SwContentTree::Select( SvLBoxEntry* pEntry, sal_Bool bSelect )
+{
+ if(!pEntry)
+ return sal_False;
+ sal_Bool bEnable = sal_False;
+ SvLBoxEntry* pParentEntry = GetParent(pEntry);
+ if(!bIsLastReadOnly && (!IsVisible() ||
+ (bIsRoot && nRootType == CONTENT_TYPE_OUTLINE && pParentEntry ||
+ lcl_IsContent(pEntry) && ((SwContentType*)pParentEntry->GetUserData())->GetType() == CONTENT_TYPE_OUTLINE)))
+ bEnable = sal_True;
+ SwNavigationPI* pNavi = GetParentWindow();
+ pNavi->aContentToolBox.EnableItem(FN_ITEM_UP , bEnable);
+ pNavi->aContentToolBox.EnableItem(FN_ITEM_DOWN, bEnable);
+ pNavi->aContentToolBox.EnableItem(FN_ITEM_LEFT, bEnable);
+ pNavi->aContentToolBox.EnableItem(FN_ITEM_RIGHT,bEnable);
+
+ return SvTreeListBox::Select(pEntry, bSelect);
+}
+
+/*-----------------27.11.96 12.56-------------------
+
+--------------------------------------------------*/
+
+void SwContentTree::SetRootType(sal_uInt16 nType)
+{
+ nRootType = nType;
+ bIsRoot = sal_True;
+ pConfig->SetRootType( nRootType );
+}
+
+/*-----------------10.01.97 12.19-------------------
+
+--------------------------------------------------*/
+
+void SwContentType::RemoveNewline(String& rEntry)
+{
+ sal_Unicode* pStr = rEntry.GetBufferAccess();
+ for(xub_StrLen i = rEntry.Len(); i; --i, ++pStr )
+ {
+ if( *pStr == 10 || *pStr == 13 )
+ *pStr = 0x20;
+ }
+}
+
+/*-----------------14.01.97 16.38-------------------
+
+--------------------------------------------------*/
+
+void SwContentTree::EditEntry(SvLBoxEntry* pEntry, sal_uInt8 nMode)
+{
+ SwContent* pCnt = (SwContent*)pEntry->GetUserData();
+ GotoContent(pCnt);
+ sal_uInt16 nType = pCnt->GetParent()->GetType();
+ sal_uInt16 nSlot = 0;
+
+ uno::Reference< container::XNameAccess > xNameAccess, xSecond, xThird;
+ switch(nType)
+ {
+ case CONTENT_TYPE_TABLE :
+ if(nMode == EDIT_UNPROTECT_TABLE)
+ {
+ pActiveShell->GetView().GetDocShell()->
+ GetDoc()->UnProtectCells( pCnt->GetName());
+ }
+ else if(nMode == EDIT_MODE_DELETE)
+ {
+ pActiveShell->StartAction();
+ pActiveShell->StartUndo();
+ pActiveShell->GetView().GetViewFrame()->GetDispatcher()->Execute(FN_TABLE_SELECT_ALL);
+ pActiveShell->DeleteRow();
+ pActiveShell->EndUndo();
+ pActiveShell->EndAction();
+ }
+ else if(nMode == EDIT_MODE_RENAME)
+ {
+ uno::Reference< frame::XModel > xModel = pActiveShell->GetView().GetDocShell()->GetBaseModel();
+ uno::Reference< text::XTextTablesSupplier > xTables(xModel, uno::UNO_QUERY);
+ xNameAccess = xTables->getTextTables();
+ }
+ else
+ nSlot = FN_FORMAT_TABLE_DLG;
+ break;
+
+ case CONTENT_TYPE_GRAPHIC :
+ if(nMode == EDIT_MODE_DELETE)
+ {
+ pActiveShell->DelRight();
+ }
+ else if(nMode == EDIT_MODE_RENAME)
+ {
+ uno::Reference< frame::XModel > xModel = pActiveShell->GetView().GetDocShell()->GetBaseModel();
+ uno::Reference< text::XTextGraphicObjectsSupplier > xGraphics(xModel, uno::UNO_QUERY);
+ xNameAccess = xGraphics->getGraphicObjects();
+ uno::Reference< text::XTextFramesSupplier > xFrms(xModel, uno::UNO_QUERY);
+ xSecond = xFrms->getTextFrames();
+ uno::Reference< text::XTextEmbeddedObjectsSupplier > xObjs(xModel, uno::UNO_QUERY);
+ xThird = xObjs->getEmbeddedObjects();
+ }
+ else
+ nSlot = FN_FORMAT_GRAFIC_DLG;
+ break;
+
+ case CONTENT_TYPE_FRAME :
+ case CONTENT_TYPE_OLE :
+ if(nMode == EDIT_MODE_DELETE)
+ {
+ pActiveShell->DelRight();
+ }
+ else if(nMode == EDIT_MODE_RENAME)
+ {
+ uno::Reference< frame::XModel > xModel = pActiveShell->GetView().GetDocShell()->GetBaseModel();
+ uno::Reference< text::XTextFramesSupplier > xFrms(xModel, uno::UNO_QUERY);
+ uno::Reference< text::XTextEmbeddedObjectsSupplier > xObjs(xModel, uno::UNO_QUERY);
+ if(CONTENT_TYPE_FRAME == nType)
+ {
+ xNameAccess = xFrms->getTextFrames();
+ xSecond = xObjs->getEmbeddedObjects();
+ }
+ else
+ {
+ xNameAccess = xObjs->getEmbeddedObjects();
+ xSecond = xFrms->getTextFrames();
+ }
+ uno::Reference< text::XTextGraphicObjectsSupplier > xGraphics(xModel, uno::UNO_QUERY);
+ xThird = xGraphics->getGraphicObjects();
+ }
+ else
+ nSlot = FN_FORMAT_FRAME_DLG;
+ break;
+ case CONTENT_TYPE_BOOKMARK :
+ if(nMode == EDIT_MODE_DELETE)
+ {
+ pActiveShell->DelBookmark( pCnt->GetName() );
+ }
+ else if(nMode == EDIT_MODE_RENAME)
+ {
+ uno::Reference< frame::XModel > xModel = pActiveShell->GetView().GetDocShell()->GetBaseModel();
+ uno::Reference< text::XBookmarksSupplier > xBkms(xModel, uno::UNO_QUERY);
+ xNameAccess = xBkms->getBookmarks();
+ }
+ else
+ nSlot = FN_INSERT_BOOKMARK;
+ break;
+
+ case CONTENT_TYPE_REGION :
+ if(nMode == EDIT_MODE_RENAME)
+ {
+ uno::Reference< frame::XModel > xModel = pActiveShell->GetView().GetDocShell()->GetBaseModel();
+ uno::Reference< text::XTextSectionsSupplier > xSects(xModel, uno::UNO_QUERY);
+ xNameAccess = xSects->getTextSections();
+ }
+ else
+ nSlot = FN_EDIT_REGION;
+ break;
+
+ case CONTENT_TYPE_URLFIELD:
+ nSlot = FN_EDIT_HYPERLINK;
+ break;
+ case CONTENT_TYPE_REFERENCE:
+ nSlot = FN_EDIT_FIELD;
+ break;
+
+ case CONTENT_TYPE_POSTIT:
+ if(nMode == EDIT_MODE_DELETE)
+ {
+ pActiveShell->DelRight();
+ }
+ else
+ nSlot = FN_POSTIT;
+ break;
+ case CONTENT_TYPE_INDEX:
+ {
+ const SwTOXBase* pBase = ((SwTOXBaseContent*)pCnt)->GetTOXBase();
+ switch(nMode)
+ {
+ case EDIT_MODE_EDIT:
+ if(pBase)
+ nSlot = FN_INSERT_MULTI_TOX;
+ break;
+ case EDIT_MODE_UPD_IDX:
+ nSlot = FN_UPDATE_CUR_TOX;
+ break;
+ case EDIT_MODE_RMV_IDX:
+ case EDIT_MODE_DELETE:
+ {
+ if( pBase )
+ pActiveShell->DeleteTOX(*pBase, EDIT_MODE_DELETE == nMode);
+ }
+ break;
+ case EDIT_MODE_RENAME:
+ {
+ uno::Reference< frame::XModel > xModel = pActiveShell->GetView().GetDocShell()->GetBaseModel();
+ uno::Reference< text::XDocumentIndexesSupplier > xIndexes(xModel, uno::UNO_QUERY);
+ xNameAccess = uno::Reference< container::XNameAccess >(xIndexes, uno::UNO_QUERY);
+ }
+ break;
+ }
+ }
+ break;
+
+ }
+ if(nSlot)
+ pActiveShell->GetView().GetViewFrame()->
+ GetDispatcher()->Execute(nSlot, SFX_CALLMODE_ASYNCHRON);
+ else if(xNameAccess.is())
+ {
+ uno::Any aObj = xNameAccess->getByName(pCnt->GetName());
+ uno::Reference< uno::XInterface > xTmp = *(uno::Reference< uno::XInterface > *)aObj.getValue();
+ uno::Reference< container::XNamed > xNamed(xTmp, uno::UNO_QUERY);
+ SwRenameXNamedDlg aDlg(this, xNamed, xNameAccess);
+ if(xSecond.is())
+ aDlg.SetAlternativeAccess( xSecond, xThird);
+
+ String sForbiddenChars;
+ if(CONTENT_TYPE_BOOKMARK == nType)
+ {
+ sForbiddenChars = C2S("/\\@:*?\";,.# ");
+ }
+ else if(CONTENT_TYPE_TABLE == nType)
+ {
+ sForbiddenChars = C2S(" .<>");
+ }
+ aDlg.SetForbiddenChars(sForbiddenChars);
+ aDlg.Execute();
+ }
+}
+
+/*-----------------14.01.97 16.53-------------------
+
+--------------------------------------------------*/
+
+void SwContentTree::GotoContent(SwContent* pCnt)
+{
+ pActiveShell->EnterStdMode();
+
+ sal_Bool bSel = sal_False;
+ sal_uInt16 nJumpType = pCnt->GetParent()->GetType();
+ switch(nJumpType)
+ {
+ case CONTENT_TYPE_OUTLINE :
+ {
+ pActiveShell->GotoOutline(((SwOutlineContent*)pCnt)->GetPos());
+ }
+ break;
+ case CONTENT_TYPE_TABLE :
+ {
+ pActiveShell->GotoTable(pCnt->GetName());
+ }
+ break;
+ case CONTENT_TYPE_FRAME :
+ case CONTENT_TYPE_GRAPHIC :
+ case CONTENT_TYPE_OLE :
+ {
+ if(pActiveShell->GotoFly(pCnt->GetName()))
+ bSel = sal_True;
+ }
+ break;
+ case CONTENT_TYPE_BOOKMARK :
+ {
+ pActiveShell->GotoBookmark(pCnt->GetName());
+ }
+ break;
+ case CONTENT_TYPE_REGION :
+ {
+ pActiveShell->GotoRegion(pCnt->GetName());
+ }
+ break;
+ case CONTENT_TYPE_URLFIELD:
+ {
+ if(pActiveShell->GotoINetAttr(
+ *((SwURLFieldContent*)pCnt)->GetINetAttr() ))
+ {
+ pActiveShell->Right(sal_True, 1, sal_False);
+ pActiveShell->SwCrsrShell::SelectTxtAttr( RES_TXTATR_INETFMT, sal_True );
+ }
+
+ }
+ break;
+ case CONTENT_TYPE_REFERENCE:
+ {
+ pActiveShell->GotoRefMark(pCnt->GetName());
+ }
+ break;
+ case CONTENT_TYPE_INDEX:
+ {
+ if (!pActiveShell->GotoNextTOXBase(&pCnt->GetName()))
+ pActiveShell->GotoPrevTOXBase(&pCnt->GetName());
+ }
+ break;
+ case CONTENT_TYPE_POSTIT:
+ pActiveShell->GotoFld(*((SwPostItContent*)pCnt)->GetPostIt());
+ break;
+ case CONTENT_TYPE_DRAWOBJECT:
+ DBG_ERROR("unsupported format")
+ break;
+ }
+ if(bSel)
+ {
+ pActiveShell->HideCrsr();
+ pActiveShell->EnterSelFrmMode();
+ }
+ SwView& rView = pActiveShell->GetView();
+ rView.StopShellTimer();
+ rView.GetEditWin().GrabFocus();
+}
+/*-----------------06.02.97 19.14-------------------
+ Jetzt nochtdie passende ::com::sun::star::text::Bookmark
+--------------------------------------------------*/
+
+NaviContentBookmark::NaviContentBookmark()
+ : nDefDrag( REGION_MODE_NONE ), nDocSh(0)
+{
+}
+
+/*-----------------06.02.97 20.12-------------------
+
+--------------------------------------------------*/
+
+NaviContentBookmark::NaviContentBookmark( const String &rUrl,
+ const String& rDesc,
+ sal_uInt16 nDragType,
+ const SwDocShell* pDocSh ) :
+ aUrl( rUrl ),
+ aDescr(rDesc),
+ nDefDrag( nDragType ),
+ nDocSh((long)pDocSh)
+{
+}
+
+/*-----------------06.02.97 19.17-------------------
+
+--------------------------------------------------*/
+
+
+sal_Bool NaviContentBookmark::DragServerHasFormat( sal_uInt16 nItem,
+ const SwDocShell* pDocSh )
+{
+ sal_Bool bRet = sal_False;
+ if(DragServer::HasFormat( nItem, SOT_FORMATSTR_ID_SONLK ))
+ {
+ long nDocSh = (long) pDocSh;
+ NaviContentBookmark aTemp;
+ aTemp.PasteDragServer(nItem);
+ // steht vor dem # ein Dateiname?
+ sal_uInt16 nFound = aTemp.GetURL().Search('#');
+ // entweder die Quelle hatte einen Namen oder Quelle und Ziel sind gleich
+ if(nFound != STRING_NOTFOUND &&
+ (nFound > 0 ||
+ nDocSh == aTemp.GetDocShell() ))
+ bRet = sal_True;
+ }
+ return bRet;
+}
+
+/*-----------------06.02.97 19.17-------------------
+
+--------------------------------------------------*/
+
+sal_Bool NaviContentBookmark::CopyDragServer() const
+{
+ String aString( aUrl );
+ aString += NAVI_BOOKMARK_DELIM;
+ aString += aDescr;
+ aString += NAVI_BOOKMARK_DELIM;
+ aString += String::CreateFromInt32( nDefDrag );
+ aString += NAVI_BOOKMARK_DELIM;
+ aString += String::CreateFromInt32( nDocSh );
+
+ return DragServer::CopyData( aString.GetBuffer(), (aString.Len() + 1) *2,
+ SOT_FORMATSTR_ID_SONLK );
+}
+/*-----------------06.02.97 19.16-------------------
+
+--------------------------------------------------*/
+
+sal_Bool NaviContentBookmark::PasteDragServer( sal_uInt16 nItem )
+{
+ sal_Bool bRet = sal_False;
+ if( DragServer::HasFormat( nItem, SOT_FORMATSTR_ID_SONLK ) )
+ {
+ sal_uInt32 nLen = DragServer::GetDataLen( nItem, SOT_FORMATSTR_ID_SONLK );
+ String aString;
+ DragServer::PasteData( nItem, aString.AllocBuffer(
+ nLen / 2 ), nLen, SOT_FORMATSTR_ID_SONLK );
+
+ xub_StrLen nStrFndPos = 0;
+ aUrl = aString.GetToken(0, NAVI_BOOKMARK_DELIM, nStrFndPos );
+ aDescr = aString.GetToken(0, NAVI_BOOKMARK_DELIM, nStrFndPos );
+ nDefDrag = aString.GetToken(0, NAVI_BOOKMARK_DELIM,
+ nStrFndPos ).ToInt32();
+ nDocSh = aString.GetToken(0, NAVI_BOOKMARK_DELIM,
+ nStrFndPos ).ToInt32();
+ bRet = sal_True;
+ }
+ return bRet;
+}
+
+/*-----------------06.02.97 20.43-------------------
+
+--------------------------------------------------*/
+
+sal_Bool NaviContentBookmark::Paste( SotDataObject& rObj, sal_uInt32 nFormat )
+{
+ sal_Bool bRet = sal_False;
+
+ SvData aData( nFormat, MEDIUM_ALL );
+ if( rObj.GetData( &aData ) )
+ {
+ void *pData;
+ aData.GetData( &pData, TRANSFER_REFERENCE );
+
+ if( nFormat == SOT_FORMATSTR_ID_SONLK )
+ {
+ String aString((sal_Unicode*)pData);
+ xub_StrLen nStrFndPos = 0;
+ aUrl = aString.GetToken(0, NAVI_BOOKMARK_DELIM, nStrFndPos );
+ aDescr = aString.GetToken(0, NAVI_BOOKMARK_DELIM, nStrFndPos );
+ nDefDrag = aString.GetToken(0, NAVI_BOOKMARK_DELIM,
+ nStrFndPos ).ToInt32();
+ nDocSh = aString.GetToken(0, NAVI_BOOKMARK_DELIM,
+ nStrFndPos ).ToInt32();
+ bRet = sal_True;
+ }
+ }
+ return bRet;
+
+}
+
+/*-----------------07.02.97 08.23-------------------
+
+--------------------------------------------------*/
+
+sal_uInt32 NaviContentBookmark::HasFormat( SotDataObject& rObj )
+{
+ return rObj.GetTypeList().Get( SOT_FORMATSTR_ID_SONLK )
+ ? SOT_FORMATSTR_ID_SONLK : 0;
+}
+
+/*-----------------20.02.97 15.37-------------------
+
+--------------------------------------------------*/
+IMPL_STATIC_LINK(SwContentTree, ExecDragHdl, SwContentTree*, EMPTYARG)
+{
+ SwContentTree::SetInDrag(sal_True);
+ DropAction eDropAction = pThis->ExecuteDrag(Pointer(POINTER_MOVEDATA), Pointer(POINTER_COPYDATA), POINTER_LINKDATA, pThis->nDragMode );
+ SwContentTree::SetInDrag(sal_False);
+ return 0;
+}
+/* -----------------------------09.12.99 13:50--------------------------------
+
+ ---------------------------------------------------------------------------*/
+class SwContentLBoxString : public SvLBoxString
+{
+public:
+ SwContentLBoxString( SvLBoxEntry* pEntry, sal_uInt16 nFlags,
+ const String& rStr ) : SvLBoxString(pEntry,nFlags,rStr) {}
+
+ virtual void Paint( const Point& rPos, SvLBox& rDev, sal_uInt16 nFlags,
+ SvLBoxEntry* pEntry);
+};
+
+/* -----------------------------09.12.99 13:49--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwContentTree::InitEntry(SvLBoxEntry* pEntry,
+ const XubString& rStr ,const Image& rImg1,const Image& rImg2)
+{
+ sal_uInt16 nColToHilite = 1; //0==Bitmap;1=="Spalte1";2=="Spalte2"
+ SvTreeListBox::InitEntry( pEntry, rStr, rImg1, rImg2 );
+ SvLBoxString* pCol = (SvLBoxString*)pEntry->GetItem( nColToHilite );
+ SwContentLBoxString* pStr = new SwContentLBoxString( pEntry, 0, pCol->GetText() );
+ pEntry->ReplaceItem( pStr, nColToHilite );
+}
+/* -----------------------------09.12.99 13:49--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwContentLBoxString::Paint( const Point& rPos, SvLBox& rDev, sal_uInt16 nFlags,
+ SvLBoxEntry* pEntry )
+{
+ if(lcl_IsContent(pEntry) &&
+ ((SwContent *)pEntry->GetUserData())->IsInvisible())
+ {
+ //* pCont = (SwContent*)pEntry->GetUserData();
+ Font aOldFont( rDev.GetFont());
+ Font aFont(aOldFont);
+ Color aCol( COL_LIGHTGRAY );
+ aFont.SetColor( aCol );
+ rDev.SetFont( aFont );
+ rDev.DrawText( rPos, GetText() );
+ rDev.SetFont( aOldFont );
+ }
+ else
+ SvLBoxString::Paint( rPos, rDev, nFlags, pEntry);
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.161 2000/09/18 16:06:17 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.160 2000/09/08 15:11:58 os
+ use configuration service
+
+ Revision 1.159 2000/09/07 15:59:34 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.158 2000/08/17 13:46:34 jp
+ UI with decode URL; integer -> string bugs fixed
+
+ Revision 1.157 2000/07/20 13:17:38 jp
+ change old txtatr-character to the two new characters
+
+ Revision 1.156 2000/07/03 08:54:55 jp
+ must changes for VCL
+
+ Revision 1.155 2000/06/30 10:25:49 os
+ #63367# keep selected position in root mode, too
+
+ Revision 1.154 2000/06/06 09:11:51 os
+ 76056# CreateFromInt32
+
+ Revision 1.153 2000/05/23 19:54:16 jp
+ Bugfixes for Unicode
+
+ Revision 1.152 2000/04/26 15:03:20 os
+ GetName() returns const String&
+
+ Revision 1.151 2000/04/18 15:14:08 os
+ UNICODE
+
+ Revision 1.150 2000/03/23 07:51:10 os
+ UNO III
+
+ Revision 1.149 2000/03/03 15:17:05 os
+ StarView remainders removed
+
+ Revision 1.148 2000/02/22 16:56:35 jp
+ Bug #73303#: new IsProtectedOutlinePara
+
+ Revision 1.147 2000/02/11 15:00:33 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.146 2000/02/01 12:41:04 os
+ #72443# visibility of section must be checked in SwContentType::Init
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/utlui/glbltree.cxx b/sw/source/ui/utlui/glbltree.cxx
new file mode 100644
index 000000000000..fa2bb61cfc1a
--- /dev/null
+++ b/sw/source/ui/utlui/glbltree.cxx
@@ -0,0 +1,1678 @@
+/*************************************************************************
+ *
+ * $RCSfile: glbltree.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+#include <so3/iface.hxx>
+#ifndef _SVSTDARR_HXX
+#define _SVSTDARR_STRINGSDTOR
+#include <svtools/svstdarr.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFX_FCONTNR_HXX //autogen
+#include <sfx2/fcontnr.hxx>
+#endif
+#ifndef _SVXLINKMGR_HXX
+#include <svx/linkmgr.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _HELP_HXX //autogen
+#include <vcl/help.hxx>
+#endif
+#ifndef _FILELIST_HXX //autogen
+#include <so3/filelist.hxx>
+#endif
+#ifndef _DRAG_HXX //autogen
+#include <vcl/drag.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _URLBMK_HXX //autogen
+#include <svtools/urlbmk.hxx>
+#endif
+#ifndef _FILTER_HXX //autogen
+#include <svtools/filter.hxx>
+#endif
+
+
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _CONTENT_HXX
+#include <content.hxx>
+#endif
+#ifndef _EDGLBLDC_HXX
+#include <edglbldc.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx>
+#endif
+#ifndef _TOX_HXX
+#include <tox.hxx>
+#endif
+#ifndef _CNTTAB_HXX
+#include <cnttab.hxx>
+#endif
+#define NAVIPI_CXX
+#ifndef _NAVIPI_HXX
+#include <navipi.hxx>
+#endif
+#ifndef _NAVICONT_HXX
+#include <navicont.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _NAVIPI_HRC
+#include <navipi.hrc>
+#endif
+#ifndef _UTLUI_HRC
+#include <utlui.hrc>
+#endif
+#ifndef _COMCORE_HRC
+#include <comcore.hrc>
+#endif
+
+
+// Kontextmenue fuer GlobalTree
+#define CTX_INSERT_ANY_INDEX 10
+//#define CTX_INSERT_CNTIDX 11
+//#define CTX_INSERT_USRIDX 12
+#define CTX_INSERT_FILE 11
+#define CTX_INSERT_NEW_FILE 12
+#define CTX_INSERT_TEXT 13
+
+#define CTX_UPDATE_SEL 20
+#define CTX_UPDATE_INDEX 21
+#define CTX_UPDATE_LINK 22
+#define CTX_UPDATE_ALL 23
+
+#define CTX_UPDATE 1
+#define CTX_INSERT 2
+#define CTX_EDIT 3
+#define CTX_DELETE 4
+
+#define GLOBAL_UPDATE_TIMEOUT 2000
+
+// Flags fuer PopupMenu-enable/disable
+#define ENABLE_INSERT_IDX 0x0001
+#define ENABLE_INSERT_FILE 0x0002
+#define ENABLE_INSERT_TEXT 0x0004
+#define ENABLE_EDIT 0x0008
+#define ENABLE_DELETE 0x0010
+#define ENABLE_UPDATE 0x0020
+#define ENABLE_UPDATE_SEL 0x0040
+
+// TabPos nach links schieben
+#define GLBL_TABPOS_SUB 5
+
+const SfxObjectShell* SwGlobalTree::pShowShell = 0;
+static const USHORT __FAR_DATA aHelpForMenu[] =
+{
+ 0, //
+ HID_GLBLTREE_UPDATE, //CTX_UPDATE
+ HID_GLBLTREE_INSERT, //CTX_INSERT
+ HID_GLBLTREE_EDIT, //CTX_EDIT
+ HID_GLBLTREE_DEL, //CTX_DELETE
+ 0, //
+ 0, //
+ 0, //
+ 0, //
+ 0, //
+ HID_GLBLTREE_INS_IDX, //CTX_INSERT_ANY_INDEX
+ HID_GLBLTREE_INS_FILE, //CTX_INSERT_FILE
+ HID_GLBLTREE_INS_NEW_FILE, //CTX_INSERT_NEW_FILE
+ HID_GLBLTREE_INS_TEXT, //CTX_INSERT_TEXT
+ 0, //
+ 0, //
+ 0, //
+ 0, //
+ 0, //
+ 0, //
+ HID_GLBLTREE_UPD_SEL, //CTX_UPDATE_SEL
+ HID_GLBLTREE_UPD_IDX, //CTX_UPDATE_INDEX
+ HID_GLBLTREE_UPD_LINK, //CTX_UPDATE_LINK
+ HID_GLBLTREEUPD_ALL //CTX_UPDATE_ALL
+};
+
+/************************************************************************/
+/* */
+/************************************************************************/
+/* -----------------------------24.08.00 12:04--------------------------------
+
+ ---------------------------------------------------------------------------*/
+class SwGlobalFrameListener_Impl : public SfxListener
+{
+ BOOL bValid;
+public:
+ SwGlobalFrameListener_Impl(SfxViewFrame& rFrame) :
+ bValid(TRUE)
+ {
+ StartListening(rFrame);
+ }
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ BOOL IsValid() const {return bValid;}
+};
+/* -----------------------------24.08.00 12:05--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwGlobalFrameListener_Impl::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if( rHint.ISA(SfxSimpleHint) &&
+ (((SfxSimpleHint&) rHint).GetId() == SFX_HINT_DYING))
+ bValid = FALSE;
+}
+
+/*-----------------12.06.97 09:38-------------------
+
+--------------------------------------------------*/
+SwGlobalTree::SwGlobalTree(Window* pParent, const ResId& rResId) :
+ SvTreeListBox(pParent, rResId),
+ pSwGlblDocContents(0),
+ pEmphasisEntry(0),
+ pDDSource(0),
+ pActiveShell(0),
+ bIsInternalDrag(FALSE),
+ bLastEntryEmphasis(FALSE),
+ bIsImageListInitialized(FALSE)
+{
+ SetDragDropMode(SV_DRAGDROP_APP_COPY |
+ SV_DRAGDROP_CTRL_MOVE |
+ SV_DRAGDROP_ENABLE_TOP );
+
+ aUpdateTimer.SetTimeout(GLOBAL_UPDATE_TIMEOUT);
+ aUpdateTimer.SetTimeoutHdl(LINK(this, SwGlobalTree, Timeout));
+ aUpdateTimer.Start();
+ for(USHORT i = 0; i < GLOBAL_CONTEXT_COUNT; i++)
+ {
+ aContextStrings[i] = SW_RESSTR(i+ ST_GLOBAL_CONTEXT_FIRST);
+ }
+ SetHelpId(HID_NAVIGATOR_GLOB_TREELIST);
+ SelectHdl();
+ SetDoubleClickHdl(LINK(this, SwGlobalTree, DoubleClickHdl));
+}
+
+/*-----------------12.06.97 09:38-------------------
+
+--------------------------------------------------*/
+SwGlobalTree::~SwGlobalTree()
+{
+ delete pSwGlblDocContents;
+}
+
+/*-----------------12.06.97 09:38-------------------
+
+--------------------------------------------------*/
+BOOL SwGlobalTree::Drop( const DropEvent& rEvt)
+{
+ BOOL bRet = FALSE;
+ SvLBoxEntry* pLast = (SvLBoxEntry*)LastVisible();
+ if(pEmphasisEntry)
+ {
+ ImplShowTargetEmphasis( Prev(pEmphasisEntry), FALSE );
+ pEmphasisEntry = 0;
+ }
+ else if(bLastEntryEmphasis && pLast)
+ {
+ ImplShowTargetEmphasis( pLast, FALSE);
+ }
+
+
+ SvLBoxEntry* pDropEntry = bLastEntryEmphasis ? 0 : GetEntry(rEvt.GetPosPixel());
+ if(bIsInternalDrag)
+ {
+ SvLBoxEntry* pDummy = 0;
+ ULONG nInsertionPos = LIST_APPEND;
+ NotifyMoving(pDropEntry, pDDSource, pDummy, nInsertionPos);
+ }
+ else
+ {
+ const USHORT nCount = DragServer::GetItemCount();
+ for ( USHORT i = 0; i < nCount; ++i )
+ {
+ String sFileName;
+ const SwGlblDocContent* pCnt = pDropEntry ?
+ (const SwGlblDocContent*)pDropEntry->GetUserData() :
+ 0;
+ if(DragServer::HasFormat(i, FORMAT_FILE_LIST))
+ {
+ bRet = TRUE;
+ SwGlblDocContents* pTempContents = new SwGlblDocContents;
+ int nAbsContPos = pDropEntry ?
+ (int) GetModel()->GetAbsPos(pDropEntry):
+ - 1;
+ USHORT nEntryCount = (USHORT)GetEntryCount();
+
+ // SvData basteln
+ SvData aData( FORMAT_FILE_LIST );
+ SvDataObjectRef xDataObj = SvDataObject::PasteDragServer( rEvt );
+ xDataObj->GetData( &aData );
+
+ // Daten holen
+ FileList aFileList;
+ FileList* pFileList = &aFileList;
+ aData.GetData( (SvDataCopyStream**)&pFileList, pFileList->Type() );
+ for ( USHORT n = (USHORT)aFileList.Count(); n--; )
+ {
+ sFileName = aFileList.GetFile(n);
+ InsertRegion(pCnt, &sFileName);
+ // nach dem Einfuegen muss die Liste der Contents neu
+ // geholt werden, um nicht auf einem alten Content zu
+ // arbeiten
+ if(n)
+ {
+ pActiveShell->GetGlobalDocContent(*pTempContents);
+ // wenn das file erfolgreich eingefuegt wurde,
+ // dann muss auch der naechste Content geholt werden
+ if(nEntryCount < pTempContents->Count())
+ {
+ nEntryCount++;
+ nAbsContPos++;
+ pCnt = pTempContents->GetObject(nAbsContPos);
+ }
+ }
+ }
+ delete pTempContents;
+ break;
+ }
+ else
+ {
+ String sFileName(SwNavigationPI::CreateDropFileName(i));
+ if(sFileName.Len())
+ {
+ InsertRegion(pCnt, &sFileName);
+ bRet = TRUE;
+ }
+ }
+ }
+ }
+ bLastEntryEmphasis = FALSE;
+ return bRet;
+
+}
+/*-----------------12.06.97 09:38-------------------
+
+--------------------------------------------------*/
+BOOL SwGlobalTree::QueryDrop( DropEvent& rEvt)
+{
+ BOOL bRet = TRUE;
+ //initiate scrolling
+ GetDropTarget(rEvt.GetPosPixel());
+ SvLBoxEntry* pLast = (SvLBoxEntry*)LastVisible();
+ if(rEvt.IsLeaveWindow())
+ {
+ if(pEmphasisEntry)
+ {
+ ImplShowTargetEmphasis( Prev(pEmphasisEntry), FALSE );
+ pEmphasisEntry = 0;
+ }
+ else if(bLastEntryEmphasis && pLast)
+ {
+ ImplShowTargetEmphasis( pLast, FALSE);
+ }
+ bLastEntryEmphasis = FALSE;
+ }
+ else
+ {
+ SvLBoxEntry* pDropEntry = GetEntry(rEvt.GetPosPixel());
+ if(bIsInternalDrag)
+ {
+ bRet = pDDSource != pDropEntry;
+ }
+ else
+ {
+ if (DragServer::HasFormat(0, FORMAT_FILE))
+ {
+ String aFileName = DragServer::PasteFile(0);
+ GraphicDescriptor aDesc(aFileName);
+ if (aDesc.Detect()) // keine Grafiken annehmen
+ bRet = FALSE;
+ else
+ bRet = TRUE;
+ }
+ else if ( DragServer::HasFormat(0, FORMAT_FILE_LIST) ||
+ INetBookmark::DragServerHasFormat( 0 ) )
+ {
+ bRet = TRUE;
+ }
+ else
+ bRet = FALSE;
+ rEvt.SetAction(DROP_LINK);
+ }
+ if(pEmphasisEntry && pEmphasisEntry != pDropEntry)
+ ImplShowTargetEmphasis( Prev(pEmphasisEntry), FALSE );
+ else if(pLast && bLastEntryEmphasis && pDropEntry)
+ {
+ ImplShowTargetEmphasis( pLast, FALSE);
+ bLastEntryEmphasis = FALSE;
+ }
+ if(pDropEntry)
+ ImplShowTargetEmphasis( Prev(pDropEntry), bRet );
+ else if(pLast)
+ {
+ ImplShowTargetEmphasis( pLast, bRet );
+ bLastEntryEmphasis = TRUE;
+ }
+ pEmphasisEntry = pDropEntry;
+ }
+ return bRet;
+}
+/*-----------------12.06.97 09:38-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::Command( const CommandEvent& rCEvt )
+{
+ BOOL bParent = FALSE;
+ switch( rCEvt.GetCommand() )
+ {
+ case COMMAND_CONTEXTMENU:
+ {
+ if(!pActiveShell ||
+ !pActiveShell->GetView().GetDocShell()->IsReadOnly())
+ {
+ USHORT nEnableFlags = GetEnableFlags();
+ PopupMenu aPop;
+ PopupMenu aSubPop1;
+ PopupMenu aSubPop2;
+
+ for (USHORT i = CTX_UPDATE_SEL; i <= CTX_UPDATE_ALL; i++)
+ {
+ aSubPop2.InsertItem( i, aContextStrings[ST_UPDATE_SEL - ST_GLOBAL_CONTEXT_FIRST - CTX_UPDATE_SEL+ i] );
+ aSubPop2.SetHelpId(i, aHelpForMenu[i]);
+ }
+ aSubPop2.EnableItem(CTX_UPDATE_SEL, nEnableFlags&ENABLE_UPDATE_SEL);
+ aSubPop2.SetSelectHdl(LINK(this, SwGlobalTree, PopupHdl));
+
+ aSubPop1.InsertItem(CTX_INSERT_ANY_INDEX, aContextStrings[ST_INDEX - ST_GLOBAL_CONTEXT_FIRST]);
+ aSubPop1.SetHelpId(CTX_INSERT_ANY_INDEX, aHelpForMenu[CTX_INSERT_ANY_INDEX]);
+ aSubPop1.InsertItem(CTX_INSERT_FILE, aContextStrings[ST_FILE - ST_GLOBAL_CONTEXT_FIRST]);
+ aSubPop1.SetHelpId(CTX_INSERT_FILE, aHelpForMenu[CTX_INSERT_FILE]);
+ aSubPop1.InsertItem(CTX_INSERT_NEW_FILE, aContextStrings[ST_NEW_FILE - ST_GLOBAL_CONTEXT_FIRST]);
+ aSubPop1.SetHelpId(CTX_INSERT_NEW_FILE, aHelpForMenu[CTX_INSERT_NEW_FILE]);
+ aSubPop1.InsertItem(CTX_INSERT_TEXT, aContextStrings[ST_TEXT - ST_GLOBAL_CONTEXT_FIRST]);
+ aSubPop1.SetHelpId(CTX_INSERT_TEXT, aHelpForMenu[CTX_INSERT_TEXT]);
+
+
+ aPop.InsertItem(CTX_UPDATE, aContextStrings[ST_UPDATE - ST_GLOBAL_CONTEXT_FIRST]);
+ aPop.SetHelpId(CTX_UPDATE, aHelpForMenu[CTX_UPDATE]);
+ aPop.InsertItem(CTX_EDIT, aContextStrings[ST_EDIT_CONTENT - ST_GLOBAL_CONTEXT_FIRST]);
+ aPop.SetHelpId(CTX_EDIT, aHelpForMenu[CTX_EDIT]);
+ aPop.InsertItem(CTX_INSERT, aContextStrings[ST_INSERT - ST_GLOBAL_CONTEXT_FIRST]);
+ aPop.SetHelpId(CTX_INSERT, aHelpForMenu[CTX_INSERT]);
+ aPop.InsertSeparator() ;
+ aPop.InsertItem(CTX_DELETE, aContextStrings[ST_DELETE - ST_GLOBAL_CONTEXT_FIRST]);
+ aPop.SetHelpId(CTX_DELETE, aHelpForMenu[CTX_DELETE]);
+
+ //evtl. disablen
+ aSubPop1.EnableItem(CTX_INSERT_ANY_INDEX, nEnableFlags&ENABLE_INSERT_IDX );
+ aSubPop1.EnableItem(CTX_INSERT_TEXT, nEnableFlags&ENABLE_INSERT_TEXT);
+ aSubPop1.EnableItem(CTX_INSERT_FILE, nEnableFlags&ENABLE_INSERT_FILE);
+ aSubPop1.EnableItem(CTX_INSERT_NEW_FILE, nEnableFlags&ENABLE_INSERT_FILE);
+
+ aPop.EnableItem(CTX_UPDATE, nEnableFlags&ENABLE_UPDATE);
+ aPop.EnableItem(CTX_INSERT, nEnableFlags&ENABLE_INSERT_IDX);
+ aPop.EnableItem(CTX_EDIT, nEnableFlags&ENABLE_EDIT);
+ aPop.EnableItem(CTX_DELETE, nEnableFlags&ENABLE_DELETE);
+
+
+ aPop.SetPopupMenu( CTX_INSERT, &aSubPop1 );
+ aPop.SetPopupMenu( CTX_UPDATE, &aSubPop2 );
+ Link aLk = LINK(this, SwGlobalTree, PopupHdl );
+ aPop.SetSelectHdl(aLk);
+ aSubPop1.SetSelectHdl(aLk);
+ aSubPop2.SetSelectHdl(aLk);
+
+ aPop.Execute( this, rCEvt.GetMousePosPixel());
+ }
+ }
+ break;
+ default: bParent = TRUE;
+ }
+ if(bParent)
+ SvTreeListBox::Command(rCEvt);
+}
+/*-----------------16.06.97 10:41-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::TbxMenuHdl(USHORT nTbxId, ToolBox* pBox)
+{
+ USHORT nEnableFlags = GetEnableFlags();
+ if(FN_GLOBAL_OPEN == nTbxId)
+ {
+ PopupMenu *pMenu = new PopupMenu;
+ for (USHORT i = CTX_INSERT_ANY_INDEX; i <= CTX_INSERT_TEXT; i++)
+ {
+ pMenu->InsertItem( i, aContextStrings[ST_INDEX - ST_GLOBAL_CONTEXT_FIRST - CTX_INSERT_ANY_INDEX + i] );
+ pMenu->SetHelpId(i, aHelpForMenu[i] );
+ }
+ pMenu->EnableItem(CTX_INSERT_ANY_INDEX, nEnableFlags&ENABLE_INSERT_IDX );
+// pMenu->EnableItem(CTX_INSERT_CNTIDX, nEnableFlags&ENABLE_INSERT_IDX );
+// pMenu->EnableItem(CTX_INSERT_USRIDX, nEnableFlags&ENABLE_INSERT_IDX );
+ pMenu->EnableItem(CTX_INSERT_TEXT, nEnableFlags&ENABLE_INSERT_TEXT);
+ pMenu->EnableItem(CTX_INSERT_FILE, nEnableFlags&ENABLE_INSERT_FILE);
+ pMenu->EnableItem(CTX_INSERT_NEW_FILE, nEnableFlags&ENABLE_INSERT_FILE);
+ pMenu->SetSelectHdl(LINK(this, SwGlobalTree, PopupHdl));
+ pMenu->Execute( pBox, pBox->GetItemRect(nTbxId).BottomLeft());
+ delete pMenu;
+ pBox->EndSelection();
+ pBox->Invalidate();
+ }
+ else if(FN_GLOBAL_UPDATE == nTbxId)
+ {
+ PopupMenu *pMenu = new PopupMenu;
+ for (USHORT i = CTX_UPDATE_SEL; i <= CTX_UPDATE_ALL; i++)
+ {
+ pMenu->InsertItem( i, aContextStrings[ST_UPDATE_SEL - ST_GLOBAL_CONTEXT_FIRST - CTX_UPDATE_SEL+ i] );
+ pMenu->SetHelpId(i, aHelpForMenu[i] );
+ }
+ pMenu->EnableItem(CTX_UPDATE_SEL, nEnableFlags&ENABLE_UPDATE_SEL);
+ pMenu->SetSelectHdl(LINK(this, SwGlobalTree, PopupHdl));
+ pMenu->Execute( pBox, pBox->GetItemRect(nTbxId).BottomLeft());
+ delete pMenu;
+ pBox->EndSelection();
+ pBox->Invalidate();
+ }
+}
+/*-----------------16.06.97 11:02-------------------
+
+--------------------------------------------------*/
+USHORT SwGlobalTree::GetEnableFlags() const
+{
+ SvLBoxEntry* pEntry = FirstSelected();
+ USHORT nSelCount = (USHORT)GetSelectionCount();
+ USHORT nEntryCount = (USHORT)GetEntryCount();
+ SvLBoxEntry* pPrevEntry = pEntry ? Prev(pEntry) : 0;
+
+ USHORT nRet = 0;
+ if(nSelCount == 1 || !nEntryCount)
+ nRet |= ENABLE_INSERT_IDX|ENABLE_INSERT_FILE;
+ if(nSelCount == 1)
+ {
+ nRet |= ENABLE_EDIT;
+ if( ((SwGlblDocContent*)pEntry->GetUserData())->GetType() != GLBLDOC_UNKNOWN &&
+ (!pPrevEntry || ((SwGlblDocContent*)pPrevEntry->GetUserData())->GetType() != GLBLDOC_UNKNOWN))
+ nRet |= ENABLE_INSERT_TEXT;
+ }
+ else if(!nEntryCount)
+ {
+ nRet |= ENABLE_INSERT_TEXT;
+ }
+ if(nEntryCount)
+ nRet |= ENABLE_UPDATE|ENABLE_DELETE;
+ if(nSelCount)
+ nRet |= ENABLE_UPDATE_SEL;
+ return nRet;
+}
+
+/*-----------------12.06.97 09:38-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::RequestHelp( const HelpEvent& rHEvt )
+{
+ BOOL bParent = TRUE;
+ Update(TRUE);
+ Display(TRUE);
+ if( rHEvt.GetMode() & HELPMODE_QUICK )
+ {
+ Point aPos( ScreenToOutputPixel( rHEvt.GetMousePosPixel() ));
+ SvLBoxEntry* pEntry = GetEntry( aPos );
+ const SwGlblDocContent* pCont = pEntry ?
+ (const SwGlblDocContent*)pEntry->GetUserData() : 0;
+ if( pCont && GLBLDOC_SECTION == pCont->GetType())
+ {
+ bParent = FALSE;
+ SvLBoxTab* pTab;
+ SvLBoxItem* pItem = GetItem( pEntry, aPos.X(), &pTab );
+ if(pItem && SV_ITEM_ID_LBOXSTRING == pItem->IsA())
+ {
+ const SwSection* pSect = pCont->GetSection();
+ String sEntry = pSect->GetLinkFileName().GetToken(0, cTokenSeperator);
+ if(!pSect->IsConnectFlag())
+ sEntry.Insert(aContextStrings[ST_BROKEN_LINK - ST_GLOBAL_CONTEXT_FIRST], 0 );
+ Point aPos = GetEntryPos( pEntry );
+
+ aPos.X() = GetTabPos( pEntry, pTab );
+ Size aSize( pItem->GetSize( this, pEntry ) );
+
+ if((aPos.X() + aSize.Width()) > GetSizePixel().Width())
+ aSize.Width() = GetSizePixel().Width() - aPos.X();
+
+ aPos = OutputToScreenPixel(aPos);
+ Rectangle aItemRect( aPos, aSize );
+ if(Help::IsBalloonHelpEnabled())
+ {
+ aPos.X() += aSize.Width();
+ Help::ShowBalloon( this, aPos, aItemRect, sEntry );
+ }
+ else
+ Help::ShowQuickHelp( this, aItemRect, sEntry,
+ QUICKHELP_LEFT|QUICKHELP_VCENTER );
+ }
+ }
+ }
+
+ if(bParent)
+ SvTreeListBox::RequestHelp(rHEvt);
+}
+/*-----------------16.06.97 16:15-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::SelectHdl()
+{
+
+ USHORT nSelCount = (USHORT)GetSelectionCount();
+ SvLBoxEntry* pSel = FirstSelected();
+ USHORT nAbsPos = pSel ? (USHORT)GetModel()->GetAbsPos(pSel) : 0;
+ SwNavigationPI* pNavi = GetParentWindow();
+ BOOL bReadonly = !pActiveShell ||
+ pActiveShell->GetView().GetDocShell()->IsReadOnly();
+ pNavi->aGlobalToolBox.EnableItem(FN_GLOBAL_EDIT, nSelCount == 1 && !bReadonly);
+ pNavi->aGlobalToolBox.EnableItem(FN_GLOBAL_OPEN, nSelCount <= 1 && !bReadonly);
+ pNavi->aGlobalToolBox.EnableItem(FN_GLOBAL_UPDATE, GetEntryCount() > 0 && !bReadonly);
+ pNavi->aGlobalToolBox.EnableItem(FN_ITEM_UP,
+ nSelCount == 1 && nAbsPos && !bReadonly);
+ pNavi->aGlobalToolBox.EnableItem(FN_ITEM_DOWN,
+ nSelCount == 1 && nAbsPos < ((USHORT)GetEntryCount()) - 1 && !bReadonly);
+
+}
+/*-----------------16.06.97 16:15-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::DeselectHdl()
+{
+ SelectHdl();
+}
+
+/*-----------------17.06.97 13:11-------------------
+
+--------------------------------------------------*/
+DragDropMode SwGlobalTree::NotifyBeginDrag( SvLBoxEntry* pEntry)
+{
+ pDDSource = pEntry;
+ return SV_DRAGDROP_CTRL_MOVE;
+}
+
+/*-----------------21.06.97 12:44-------------------
+
+--------------------------------------------------*/
+long SwGlobalTree::GetTabPos( SvLBoxEntry*, SvLBoxTab* pTab)
+{
+ return pTab->GetPos() - GLBL_TABPOS_SUB;
+}
+
+/*-----------------12.06.97 09:38-------------------
+
+--------------------------------------------------*/
+BOOL SwGlobalTree::NotifyMoving( SvLBoxEntry* pTarget,
+ SvLBoxEntry* pSource,
+ SvLBoxEntry*&,
+ ULONG&
+ )
+{
+ SvTreeList* pModel = GetModel();
+ USHORT nSource = (USHORT) pModel->GetAbsPos(pSource);
+ USHORT nDest = pTarget ? (USHORT) pModel->GetAbsPos(pTarget) : pSwGlblDocContents->Count();
+
+ if( pActiveShell->MoveGlobalDocContent(
+ *pSwGlblDocContents, nSource, nSource + 1, nDest ) &&
+ Update())
+ Display();
+ return FALSE;
+}
+/*-----------------12.06.97 09:39-------------------
+
+--------------------------------------------------*/
+BOOL SwGlobalTree::NotifyCopying( SvLBoxEntry* pTarget,
+ SvLBoxEntry* pEntry,
+ SvLBoxEntry*& rpNewParent,
+ ULONG& rNewChildPos
+ )
+{
+ return FALSE;
+}
+/*-----------------12.06.97 09:39-------------------
+
+--------------------------------------------------*/
+BOOL SwGlobalTree::NotifyQueryDrop( SvLBoxEntry* pEntry)
+{
+ return pEntry != 0;
+}
+/*-----------------12.06.97 09:39-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::BeginDrag( const Point& rPt)
+{
+ bIsInternalDrag = TRUE;
+ if(GetSelectionCount() == 1)
+ SvTreeListBox::BeginDrag(rPt);
+}
+/*-----------------12.06.97 09:39-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::EndDrag()
+{
+ bIsInternalDrag = FALSE;
+}
+
+/***************************************************************************
+ Beschreibung: Wird ein Ctrl+DoubleClick in einen freien Bereich ausgefuehrt,
+ * dann soll die Basisfunktion des Controls gerufen werden
+***************************************************************************/
+void SwGlobalTree::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ Point aPos( rMEvt.GetPosPixel());
+ SvLBoxEntry* pEntry = GetEntry( aPos, TRUE );
+ if( !pEntry && rMEvt.IsLeft() && rMEvt.IsMod1() && (rMEvt.GetClicks() % 2) == 0)
+ Control::MouseButtonDown( rMEvt );
+ else
+ SvTreeListBox::MouseButtonDown( rMEvt );
+}
+
+/*-----------------12.06.97 13:08-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::GetFocus()
+{
+ if(Update())
+ Display();
+ SvTreeListBox::GetFocus();
+}
+
+/*-----------------12.06.97 12:34-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::KeyInput(const KeyEvent& rKEvt)
+{
+ const KeyCode aCode = rKEvt.GetKeyCode();
+ if(aCode.GetCode() == KEY_RETURN)
+ {
+ switch(aCode.GetModifier())
+ {
+ case KEY_MOD2:
+ // Boxen umschalten
+ GetParentWindow()->ToggleTree();
+ break;
+ }
+ }
+ else
+ SvTreeListBox::KeyInput(rKEvt);
+}
+
+/*-----------------17.06.97 11:59-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::Clear()
+{
+ pEmphasisEntry = 0;
+ SvTreeListBox::Clear();
+}
+/*-----------------12.06.97 12:38-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::Display(BOOL bOnlyUpdateUserData)
+{
+ if(!bIsImageListInitialized)
+ {
+ aEntryImages = ImageList(SW_RES(IMG_NAVI_ENTRYBMP));
+ bIsImageListInitialized = TRUE;
+ }
+ USHORT nCount = pSwGlblDocContents->Count();
+ if(bOnlyUpdateUserData && GetEntryCount() == pSwGlblDocContents->Count())
+ {
+ SvLBoxEntry* pEntry = First();
+ for( USHORT i = 0; i < nCount; i++)
+ {
+ SwGlblDocContentPtr pCont = pSwGlblDocContents->GetObject(i);
+ pEntry->SetUserData(pCont);
+ pEntry = Next(pEntry);
+ }
+ }
+ else
+ {
+ SetUpdateMode( FALSE );
+ SvLBoxEntry* pOldSelEntry = FirstSelected();
+ String sEntryName; // Name des Eintrags
+ USHORT nSelPos = USHRT_MAX;
+ if(pOldSelEntry)
+ {
+ sEntryName = GetEntryText(pOldSelEntry);
+ nSelPos = (USHORT)GetModel()->GetAbsPos(pOldSelEntry);
+ }
+ Clear();
+ if(!pSwGlblDocContents)
+ Update();
+
+ SvLBoxEntry* pSelEntry = 0;
+ for( USHORT i = 0; i < nCount; i++)
+ {
+ SwGlblDocContentPtr pCont = pSwGlblDocContents->GetObject(i);
+ String sEntry;
+ Image aImage;
+ switch( pCont->GetType() )
+ {
+ case GLBLDOC_UNKNOWN:
+ {
+ sEntry = aContextStrings[ST_TEXT - ST_GLOBAL_CONTEXT_FIRST];
+ aImage = aEntryImages.GetImage(SID_SW_START + GLOBAL_CONTENT_TEXT);
+ }
+ break;
+ case GLBLDOC_TOXBASE:
+ {
+ const SwTOXBase* pBase = pCont->GetTOX();
+ sEntry = pBase->GetTitle();
+ aImage = aEntryImages.GetImage(SID_SW_START + CONTENT_TYPE_INDEX);
+ }
+ break;
+ case GLBLDOC_SECTION:
+ {
+ const SwSection* pSect = pCont->GetSection();
+ sEntry = pSect->GetName();
+ aImage = aEntryImages.GetImage(SID_SW_START + CONTENT_TYPE_REGION);
+ }
+ break;
+ }
+ SvLBoxEntry* pEntry = InsertEntry(sEntry, aImage, aImage,
+ 0, FALSE, LIST_APPEND, pCont);
+ if(sEntry == sEntryName)
+ {
+ pSelEntry = pEntry;
+ }
+ }
+ if(pSelEntry)
+ {
+ Select(pSelEntry);
+ }
+ else if(nSelPos != USHRT_MAX && nSelPos < nCount)
+ {
+ Select(GetEntry(nSelPos));
+ }
+ else if(nCount)
+ Select(First());
+ else
+ SelectHdl();
+ SetUpdateMode( TRUE );
+ }
+}
+
+/*-----------------13.06.97 10:32-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::InsertRegion( const SwGlblDocContent* pCont,
+ const String* pFileName )
+{
+ String sFileName;
+ SwView *pView = ::GetActiveView();
+ SwWrtShell &rSh = pView->GetWrtShell();
+ String sFilePassword;
+ if(!pFileName)
+ {
+ String sFilterName;
+ if( GetFileFilterNameDlg( *this, sFileName, &sFilePassword, &sFilterName ))
+ {
+ sFileName += cTokenSeperator;
+ sFileName += sFilterName;
+ sFileName += cTokenSeperator;
+ }
+ }
+ else if(pFileName->Len())
+ {
+ sFileName = URIHelper::SmartRelToAbs( *pFileName );
+ }
+
+ if(sFileName.Len())
+ {
+ INetURLObject aFileUrl(sFileName);
+ String sSectionName(aFileUrl.GetLastName().GetToken(0, cTokenSeperator));
+ USHORT nSectCount = rSh.GetSectionFmtCount();
+ String sTempSectionName(sSectionName);
+ USHORT nAddNumber = 0;
+ USHORT nCount = 0;
+ // evtl : und Index anhaengen, wenn der Bereichsname schon vergeben ist
+ while(nCount < nSectCount)
+ {
+ const SwSectionFmt& rFmt = rSh.GetSectionFmt(nCount);
+ if( rFmt.GetSection()->GetName() == sTempSectionName &&
+ rFmt.IsInNodesArr())
+ {
+ nCount = 0;
+ nAddNumber++;
+ sTempSectionName = sSectionName;
+ sTempSectionName += ':';
+ sTempSectionName += String::CreateFromInt32( nAddNumber );
+ }
+ else
+ nCount++;
+ }
+ if(nAddNumber)
+ sSectionName = sTempSectionName;
+
+ SwSection aSection(CONTENT_SECTION, sSectionName);
+ aSection.SetProtect(TRUE);
+ aSection.SetHidden(FALSE);
+
+ aSection.SetLinkFileName(sFileName);
+ aSection.SetType( FILE_LINK_SECTION);
+ aSection.SetLinkFilePassWd( sFilePassword );
+
+ if(pCont)
+ rSh.InsertGlobalDocContent( *pCont, aSection );
+ else
+ {
+ SvLBoxEntry* pLast = (SvLBoxEntry*)LastVisible();
+ rSh.StartAction();
+ rSh.InsertGlobalDocContent( *(SwGlblDocContent*)pLast->GetUserData(),
+ aSection );
+ Update();
+ USHORT nEntryCount = (USHORT)GetEntryCount();
+ if( rSh.MoveGlobalDocContent(
+ *pSwGlblDocContents, nEntryCount, nEntryCount + 1, nEntryCount - 1) &&
+ Update())
+ rSh.EndAction();
+ Display();
+
+ }
+ }
+}
+
+/*-----------------18.06.97 12:42-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::EditContent(const SwGlblDocContent* pCont )
+{
+ USHORT nSlot = 0;
+ switch( pCont->GetType() )
+ {
+ case GLBLDOC_UNKNOWN:
+ pActiveShell->GetView().GetEditWin().GrabFocus();
+ break;
+ case GLBLDOC_TOXBASE:
+ {
+ const SwTOXBase* pBase = pCont->GetTOX();
+ if(pBase)
+ nSlot = FN_INSERT_MULTI_TOX;
+ }
+ break;
+ case GLBLDOC_SECTION:
+ {
+ OpenDoc(pCont);
+
+ nSlot = 0;
+ pCont = 0;
+ }
+ break;
+ }
+ if(pCont)
+ GotoContent(pCont);
+ if(nSlot)
+ {
+ pActiveShell->GetView().GetViewFrame()->GetDispatcher()->Execute(nSlot);
+ if(Update())
+ Display();
+ }
+}
+
+/*-----------------13.06.97 14:22-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwGlobalTree, PopupHdl, Menu* , pMenu)
+{
+ USHORT nId = pMenu->GetCurItemId();
+ SvLBoxEntry* pEntry = FirstSelected();
+ SwGlblDocContent* pCont = pEntry ? (SwGlblDocContent*)pEntry->GetUserData() : 0;
+ // wird waehrend des Dialogs ein RequestHelp gerufen,
+ // dann geht der Content verloren. Deshalb wird hier eine
+ // Kopie angelegt, in der nur die DocPos richtig gesetzt ist.
+ SwGlblDocContent* pContCopy = 0;
+ if(pCont)
+ pContCopy = new SwGlblDocContent(pCont->GetDocPos());
+ SfxDispatcher& rDispatch = *pActiveShell->GetView().GetViewFrame()->GetDispatcher();
+ USHORT nSlot = 0;;
+ switch( nId )
+ {
+ case CTX_UPDATE_SEL:
+ {
+ // zwei Durchlaeufe: zuerst die Bereiche, dann die Verzeichnisse
+ // aktualisieren
+ SvLBoxEntry* pEntry = FirstSelected();
+ while( pEntry )
+ {
+ SwGlblDocContent* pCont = (SwGlblDocContent*)pEntry->GetUserData();
+ if(GLBLDOC_SECTION == pCont->GetType() &&
+ pCont->GetSection()->IsConnected())
+ {
+ ((SwSection*)pCont->GetSection())->UpdateNow();
+ }
+
+ pEntry = NextSelected(pEntry);
+ }
+ pEntry = FirstSelected();
+ while( pEntry )
+ {
+ SwGlblDocContent* pCont = (SwGlblDocContent*)pEntry->GetUserData();
+ if(GLBLDOC_TOXBASE == pCont->GetType())
+ pActiveShell->UpdateTableOf(*pCont->GetTOX());
+ pEntry = NextSelected(pEntry);
+ }
+
+ }
+ break;
+ case CTX_UPDATE_INDEX:
+ {
+ nSlot = FN_UPDATE_TOX;
+ }
+ break;
+ case CTX_UPDATE_LINK:
+ case CTX_UPDATE_ALL:
+ {
+ pActiveShell->GetLinkManager().UpdateAllLinks(TRUE);
+ if(CTX_UPDATE_ALL == nId)
+ nSlot = FN_UPDATE_TOX;
+ pCont = 0;
+ }
+ break;
+ case CTX_EDIT:
+ {
+ DBG_ASSERT(pCont, "Edit ohne Entry ? " )
+ EditContent(pCont);
+ }
+ break;
+ case CTX_DELETE:
+ {
+ // sind mehrere Eintraege selektiert, dann muss nach jedem delete
+ // das Array neu gefuellt werden. Damit man sich nichts merken muss,
+ // beginnt das Loeschen am Ende
+ SvLBoxEntry* pEntry = LastSelected();
+ SwGlblDocContents* pTempContents = 0;
+ pActiveShell->StartAction();
+ while(pEntry)
+ {
+ pActiveShell->DeleteGlobalDocContent(
+ pTempContents ? *pTempContents : *pSwGlblDocContents,
+ (USHORT)GetModel()->GetAbsPos(pEntry));
+ pEntry = PrevSelected(pEntry);
+ if(pEntry)
+ {
+ pTempContents = new SwGlblDocContents;
+ pActiveShell->GetGlobalDocContent(*pTempContents);
+ }
+ }
+ delete pTempContents;
+ pActiveShell->EndAction();
+ pCont = 0;
+ }
+ break;
+ case CTX_INSERT_ANY_INDEX:
+// case CTX_INSERT_CNTIDX:
+// case CTX_INSERT_USRIDX:
+ {
+ if(pContCopy)
+ {
+ SfxItemSet aSet(pActiveShell->GetView().GetPool(),
+ RES_COL, RES_COL,
+ RES_BACKGROUND, RES_BACKGROUND,
+ RES_FRM_SIZE, RES_FRM_SIZE,
+ SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
+ RES_LR_SPACE, RES_LR_SPACE,
+ FN_PARAM_TOX_TYPE, FN_PARAM_TOX_TYPE,
+ 0);
+
+ SwMultiTOXTabDialog* pDlg = new SwMultiTOXTabDialog(this, aSet,
+ *pActiveShell,
+ 0,
+ USHRT_MAX,
+ TRUE);
+
+ if(RET_OK == pDlg->Execute())
+ {
+ SwTOXDescription& rDesc = pDlg->GetTOXDescription(
+ pDlg->GetCurrentTOXType());
+ SwForm* pForm = pDlg->GetForm(pDlg->GetCurrentTOXType());
+ SwTOXMgr aMgr(pActiveShell);
+ SwTOXBase* pToInsert = 0;
+ if(aMgr.UpdateOrInsertTOX(rDesc, &pToInsert, pDlg->GetOutputItemSet()))
+ pActiveShell->InsertGlobalDocContent( *pContCopy, *pToInsert );
+ }
+ pCont = 0;
+ delete pDlg;
+ }
+ }
+ break;
+ case CTX_INSERT_FILE:
+ {
+ InsertRegion(pContCopy);
+ pCont = 0;
+ }
+ break;
+ case CTX_INSERT_NEW_FILE:
+ {
+ SfxViewFrame* pGlobFrm = pActiveShell->GetView().GetViewFrame();
+ SwGlobalFrameListener_Impl aFrmListener(*pGlobFrm);
+
+ USHORT nEntryPos = pEntry ? GetModel()->GetAbsPos(pEntry) : USHRT_MAX;
+ // neues Dok anlegen
+ SfxStringItem aFactory(SID_NEWDOCDIRECT,
+ SwDocShell::Factory().GetFilterContainer()->GetName());
+
+ const SfxFrameItem* pItem = (SfxFrameItem*)
+ rDispatch.Execute(SID_NEWDOCDIRECT,
+ SFX_CALLMODE_SYNCHRON, &aFactory, 0L);
+
+ // sichern unter
+ SfxFrame* pFrm = pItem ? pItem->GetFrame() : 0;
+ SfxViewFrame* pFrame = pFrm ? pFrm->GetCurrentViewFrame() : 0;
+ if( pFrame )
+ {
+ const SfxBoolItem* pBool = (const SfxBoolItem*)
+ pFrame->GetDispatcher()->Execute(
+ SID_SAVEASDOC, SFX_CALLMODE_SYNCHRON );
+ SfxObjectShell& rObj = *pFrame->GetObjectShell();
+ const SfxMedium* pMedium = rObj.GetMedium();
+ String sNewFile(pMedium->GetURLObject().GetMainURL());
+ // Bereich mit dem Dok-Namen einfgen
+ // eigenes Dok in den Vordergrund
+
+ if(aFrmListener.IsValid())
+ {
+ pGlobFrm->ToTop();
+ // durch das Update sind die Eintraege invalid
+ if(nEntryPos != USHRT_MAX)
+ {
+ Update();
+ Display();
+ Select(GetModel()->GetEntryAtAbsPos(nEntryPos));
+ pEntry = FirstSelected();
+ pCont = pEntry ? (SwGlblDocContent*)pEntry->GetUserData() : 0;
+ }
+ else
+ {
+ pEntry = 0;
+ pCont = 0;
+ }
+ if(pBool->GetValue())
+ {
+ InsertRegion(pCont, &sNewFile);
+ pFrame->ToTop();
+ }
+ else
+ pFrame->GetDispatcher()->Execute(SID_CLOSEWIN,
+ SFX_CALLMODE_SYNCHRON);
+ }
+ else
+ {
+ pFrame->ToTop();
+ return TRUE;
+ }
+ }
+ }
+ break;
+ case CTX_INSERT_TEXT:
+ {
+ if(pCont)
+ pActiveShell->InsertGlobalDocContent(*pCont);
+ else
+ {
+ pActiveShell->SplitNode(); // leeres Dokument
+ pActiveShell->Up();
+ }
+ pActiveShell->GetView().GetEditWin().GrabFocus();
+ }
+ break;
+ case CTX_UPDATE:
+ pCont = 0;
+ break;
+ default:;
+ // hier passiert nichts
+ }
+ if(pCont)
+ GotoContent(pCont);
+ if(nSlot)
+ rDispatch.Execute(nSlot);
+ if(Update())
+ Display();
+ delete pContCopy;
+ return TRUE;
+}
+
+/*-----------------16.06.97 07:57-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwGlobalTree, Timeout, Timer*, EMPTYARG )
+{
+ if(!HasFocus()&&Update())
+ Display();
+ return 0;
+}
+
+/*-----------------13.06.97 16:56-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::GotoContent(const SwGlblDocContent* pCont)
+{
+ pActiveShell->EnterStdMode();
+
+ switch( pCont->GetType() )
+ {
+ case GLBLDOC_UNKNOWN:
+ pActiveShell->GotoGlobalDocContent(*pCont);
+ break;
+ case GLBLDOC_TOXBASE:
+ {
+ String sName = pCont->GetTOX()->GetTOXName();
+ if (!pActiveShell->GotoNextTOXBase(&sName))
+ pActiveShell->GotoPrevTOXBase(&sName);
+ }
+ break;
+ case GLBLDOC_SECTION:
+ break;
+ }
+
+}
+/*-----------------16.06.97 07:42-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::Show()
+{
+ aUpdateTimer.Start();
+ SvTreeListBox::Show();
+}
+/*-----------------16.06.97 07:42-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::Hide()
+{
+ aUpdateTimer.Stop();
+ SvTreeListBox::Hide();
+}
+/*-----------------18.06.97 10:02-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::ExecCommand(USHORT nCmd)
+{
+ SvLBoxEntry* pEntry = FirstSelected();
+ DBG_ASSERT(pEntry, "gleich knalltïs")
+ if(FN_GLOBAL_EDIT == nCmd)
+ {
+ const SwGlblDocContent* pCont = (const SwGlblDocContent*)
+ pEntry->GetUserData();
+ EditContent(pCont);
+ }
+ else
+ {
+ if(GetSelectionCount() == 1)
+ {
+ BOOL bMove = FALSE;
+ USHORT nSource = (USHORT)GetModel()->GetAbsPos(pEntry);
+ USHORT nDest = nSource;
+ switch(nCmd)
+ {
+ case FN_ITEM_DOWN:
+ {
+ USHORT nEntryCount = (USHORT)GetEntryCount();
+ bMove = nEntryCount > nSource + 1;
+ nDest+= 2;
+ }
+ break;
+ case FN_ITEM_UP:
+ {
+ if(nSource)
+ bMove = 0 != nSource;
+ nDest--;
+ }
+ break;
+ }
+ if( bMove && pActiveShell->MoveGlobalDocContent(
+ *pSwGlblDocContents, nSource, nSource + 1, nDest ) &&
+ Update())
+ Display();
+ }
+ }
+}
+
+/*-----------------16.06.97 07:43-------------------
+
+--------------------------------------------------*/
+BOOL SwGlobalTree::Update(BOOL bHard)
+{
+ SwView* pActView = ::GetActiveView();
+ BOOL bRet = FALSE;
+ if(pActView)
+ {
+ const SwWrtShell* pOldShell = pActiveShell;
+ pActiveShell = pActView->GetWrtShellPtr();
+ if(pActiveShell != pOldShell)
+ bRet = TRUE;
+ if(!pSwGlblDocContents)
+ {
+ pSwGlblDocContents = new SwGlblDocContents;
+ bRet = TRUE;
+ pActiveShell->GetGlobalDocContent(*pSwGlblDocContents);
+ }
+ else
+ {
+ BOOL bCopy = FALSE;
+ SwGlblDocContents* pTempContents = new SwGlblDocContents;
+ pActiveShell->GetGlobalDocContent(*pTempContents);
+ if(pTempContents->Count() != pSwGlblDocContents->Count() ||
+ pTempContents->Count() != GetEntryCount())
+ {
+ bRet = TRUE;
+ bCopy = TRUE;
+ }
+ else
+ {
+ for(USHORT i = 0; i < pTempContents->Count() && !bCopy; i++)
+ {
+ SwGlblDocContent* pLeft = pTempContents->GetObject(i);
+ SwGlblDocContent* pRight = pSwGlblDocContents->GetObject(i);
+ GlobalDocContentType eType = pLeft->GetType();
+ SvLBoxEntry* pEntry = GetEntry(i);
+ String sTemp = GetEntryText(pEntry);
+ if(eType != pRight->GetType() ||
+ eType == GLBLDOC_SECTION &&
+ pLeft->GetSection()->GetName() != sTemp ||
+ eType == GLBLDOC_TOXBASE && pLeft->GetTOX()->GetTitle() != sTemp)
+ bCopy = bRet = TRUE;
+ }
+ }
+ if(bCopy || bHard)
+ {
+ pSwGlblDocContents->DeleteAndDestroy(0, pSwGlblDocContents->Count());
+ for(USHORT i = 0; i < pTempContents->Count(); i++)
+ {
+ pSwGlblDocContents->Insert(pTempContents->GetObject(i));
+ }
+ for(i = pTempContents->Count(); i; i--)
+ pTempContents->Remove(i - 1);
+
+ }
+ delete pTempContents;
+ }
+
+ }
+ else
+ {
+ Clear();
+ if(pSwGlblDocContents)
+ pSwGlblDocContents->DeleteAndDestroy(0, pSwGlblDocContents->Count());
+ }
+ // hier muss noch eine Veraenderungspruefung rein!
+ return bRet;
+}
+
+/*-----------------25.06.97 16:20-------------------
+
+--------------------------------------------------*/
+void SwGlobalTree::OpenDoc(const SwGlblDocContent* pCont)
+{
+ String sFileName(pCont->GetSection()->GetLinkFileName().GetToken(0, cTokenSeperator));
+ BOOL bFound = FALSE;
+ const SfxObjectShell* pCurr = SfxObjectShell::GetFirst();
+ while( !bFound && pCurr )
+ {
+ if(pCurr->GetMedium() &&
+ pCurr->GetMedium()->GetURLObject().GetMainURL() == sFileName)
+ {
+ bFound = TRUE;
+ SwGlobalTree::SetShowShell(pCurr);
+ Application::PostUserEvent( STATIC_LINK(
+ this, SwGlobalTree, ShowFrameHdl ) );
+ pCurr = 0;
+ }
+ else
+ pCurr = SfxObjectShell::GetNext(*pCurr);
+ }
+ if(!bFound)
+ {
+ SfxStringItem aURL(SID_FILE_NAME,
+ sFileName);
+ SfxBoolItem aReadOnly(SID_DOC_READONLY, FALSE);
+ SfxStringItem aReferer(SID_REFERER, pActiveShell->GetView().GetDocShell()->GetTitle());
+ pActiveShell->GetView().GetViewFrame()->GetDispatcher()->
+ Execute(SID_OPENDOC, SFX_CALLMODE_ASYNCHRON,
+ &aURL, &aReadOnly, &aReferer, 0);
+ }
+}
+
+/*-----------------25.06.97 16:08-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwGlobalTree, DoubleClickHdl, SwGlobalTree *, EMPTYARG )
+{
+ SvLBoxEntry* pEntry = GetCurEntry();
+ SwGlblDocContent* pCont = (SwGlblDocContent*)pEntry->GetUserData();
+ if(pCont->GetType() == GLBLDOC_SECTION)
+ OpenDoc(pCont);
+ else
+ {
+ GotoContent(pCont);
+ pActiveShell->GetView().GetEditWin().GrabFocus();
+ }
+ return 0;
+}
+
+/*-----------------07.10.97 08:09-------------------
+
+--------------------------------------------------*/
+IMPL_STATIC_LINK(SwGlobalTree, ShowFrameHdl, SwGlobalTree*, EMPTYARG)
+{
+ if(SwGlobalTree::GetShowShell())
+ SfxViewFrame::GetFirst(SwGlobalTree::GetShowShell())->ToTop();
+ SwGlobalTree::SetShowShell(0);
+ return 0;
+}
+/* -----------------04.11.98 10:43-------------------
+ *
+ * --------------------------------------------------*/
+void SwGlobalTree::InitEntry(SvLBoxEntry* pEntry,
+ const XubString& rStr ,const Image& rImg1,const Image& rImg2)
+{
+ USHORT nColToHilite = 1; //0==Bitmap;1=="Spalte1";2=="Spalte2"
+ SvTreeListBox::InitEntry( pEntry, rStr, rImg1, rImg2 );
+ SvLBoxString* pCol = (SvLBoxString*)pEntry->GetItem( nColToHilite );
+ SwLBoxString* pStr = new SwLBoxString( pEntry, 0, pCol->GetText() );
+ pEntry->ReplaceItem( pStr, nColToHilite );
+}
+/* -----------------04.11.98 10:39-------------------
+ *
+ * --------------------------------------------------*/
+
+void SwLBoxString::Paint( const Point& rPos, SvLBox& rDev, USHORT nFlags,
+ SvLBoxEntry* pEntry )
+{
+ SwGlblDocContent* pCont = (SwGlblDocContent*)pEntry->GetUserData();
+ const SwSection* pSect;
+ if(pCont->GetType() == GLBLDOC_SECTION &&
+ !(pSect = pCont->GetSection())->IsConnectFlag() )
+ {
+ Font aOldFont( rDev.GetFont());
+ Font aFont(aOldFont);
+ Color aCol( COL_LIGHTRED );
+ aFont.SetColor( aCol );
+ rDev.SetFont( aFont );
+ rDev.DrawText( rPos, GetText() );
+ rDev.SetFont( aOldFont );
+ }
+ else
+ SvLBoxString::Paint( rPos, rDev, nFlags, pEntry);
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.57 2000/09/18 16:06:17 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.56 2000/09/07 15:59:35 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.55 2000/09/06 09:57:09 os
+ #78501# force scrolling in QueryDrop
+
+ Revision 1.54 2000/08/24 10:42:23 os
+ #78054# survive closing of master document while SaveAs dialog is active
+
+ Revision 1.53 2000/07/03 08:54:59 jp
+ must changes for VCL
+
+ Revision 1.52 2000/06/26 13:12:59 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.51 2000/05/23 19:54:20 jp
+ Bugfixes for Unicode
+
+ Revision 1.50 2000/03/23 14:59:30 os
+ #74356# goto index: use name - not title
+
+ Revision 1.49 2000/03/03 15:17:05 os
+ StarView remainders removed
+
+ Revision 1.48 2000/02/29 11:05:46 os
+ #73599# PullDownMenu: Ids/HelpIds corrected
+
+ Revision 1.47 2000/02/15 10:33:10 os
+ #72902# diable navigator in readonly documents
+
+ Revision 1.46 2000/02/11 15:00:36 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.45 2000/02/07 14:39:11 os
+ #72747# insert index into global documents
+
+ Revision 1.44 1999/12/09 12:29:12 os
+ #70284# show Bitmaps in hyperlink insert dialog# content.cxx glbltree.cxx navipi.hrc navipi.src
+
+ Revision 1.43 1999/09/10 08:36:15 os
+ GetTOXDescription with TOXTypes param
+
+ Revision 1.42 1999/08/25 13:24:42 OS
+ use SwMultiTOXTabDialog
+
+
+ Rev 1.41 25 Aug 1999 15:24:42 OS
+ use SwMultiTOXTabDialog
+
+ Rev 1.40 20 May 1999 11:02:24 OS
+ Ctrl-DoubleClick an Control weiterleiten - Docking
+
+ Rev 1.39 21 Apr 1999 09:42:58 OS
+ #65050# GPF im Update ohne View behoben
+
+ Rev 1.38 29 Mar 1999 12:23:38 OS
+ #63929# neuer Verzeichnisdialog vollstaendig
+
+ Rev 1.37 12 Nov 1998 15:07:26 JP
+ Bug #54342#: auch bei GlobalDocs das Filepasswort an die Section uebertragen
+
+ Rev 1.36 12 Nov 1998 14:27:20 OS
+ #59271# Referer mitschicken
+
+ Rev 1.35 04 Nov 1998 13:22:18 OS
+ #58673# Existenzanzeige der Teildokumente farbig
+
+ Rev 1.34 03 Nov 1998 14:39:22 OS
+ #58673# Existenzanzeige fuer Global-Teildokumente
+
+ Rev 1.33 02 Jul 1998 16:57:08 OM
+ #46638# Keine Grafiken auf Navigator droppen
+
+ Rev 1.32 29 Jun 1998 17:52:42 TJ
+ include
+
+ Rev 1.31 31 Mar 1998 15:30:44 OS
+ SetReadonlyUI von IsAllProtect abhaengig #49077#
+
+ Rev 1.30 13 Feb 1998 14:16:36 JP
+ statt selbst den InserDocDialog zu rufen, die neue Funktion GetFileFilterNameDlg rufen
+
+ Rev 1.29 23 Jan 1998 16:05:48 MA
+ includes
+
+ Rev 1.28 16 Jan 1998 14:18:46 OS
+ #46660# Text im QueryDrop ablehnen; #46636# nach Doppelclick Focus ins Doc
+
+ Rev 1.27 16 Jan 1998 11:03:06 OS
+ #46637# per DnD auch am Ende einfuegen
+ #46631# HTML nicht-readonly oeffnen
+
+ Rev 1.26 19 Dec 1997 09:06:50 OS
+ Change: UsrData im InsertEntry uebergben
+
+ Rev 1.25 21 Nov 1997 12:10:14 MA
+ includes
+
+ Rev 1.24 03 Nov 1997 13:59:24 MA
+ precomp entfernt
+
+ Rev 1.23 07 Oct 1997 08:36:32 OS
+ asynchrones Anzeigen der Dokumente, damit auch nicht-SW-Docs 'verknuepft' werden koennen #44346#
+
+ Rev 1.22 04 Sep 1997 17:15:56 MA
+ includes
+
+ Rev 1.21 29 Aug 1997 15:57:32 OS
+ PopupMenu::Execute mit Window* fuer VCL
+
+ Rev 1.20 29 Aug 1997 14:00:26 OS
+ DLL-Umbau
+
+ Rev 1.19 15 Aug 1997 12:16:06 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.18 08 Aug 1997 17:25:30 OM
+ Headerfile-Umstellung
+
+ Rev 1.17 23 Jul 1997 21:44:58 HJS
+ includes
+
+ Rev 1.16 18 Jul 1997 17:28:26 OS
+ Display fuer Update der UserData
+
+ Rev 1.15 18 Jul 1997 16:33:40 OS
+ hartes Update im RequestHelp #41845#
+
+ Rev 1.14 16 Jul 1997 14:12:34 OS
+ neues Dok: da kommt ein FrameItem, kein ViewFrameItem #41726#
+
+ Rev 1.13 15 Jul 1997 16:47:06 OS
+ HeplIds fuer PopUps
+
+ Rev 1.12 09 Jul 1997 17:45:30 HJS
+ includes
+
+ Rev 1.11 03 Jul 1997 16:25:20 OS
+ Update: nicht mit alten Sections, sondern mit ListBox-Inhalten vergleichen
+
+ Rev 1.10 02 Jul 1997 14:11:54 OS
+ InsertRegion: Token fuer Bereichsnamen herausfiltern
+
+ Rev 1.9 01 Jul 1997 09:43:44 OS
+ mind. den ersten Eintrag selektieren
+
+ Rev 1.8 27 Jun 1997 08:15:50 OS
+ SV-Defizit umpopoelt: nur die erste FileList ist echt
+
+ Rev 1.7 25 Jun 1997 20:35:38 HJS
+ includes
+
+ Rev 1.6 25 Jun 1997 16:37:18 OS
+ per Doppelclick Textposition anspringen bzw. gelinktes Doc laden
+
+ Rev 1.5 25 Jun 1997 08:59:38 OS
+ Neue Datei fuer Globaldokument
+
+ Rev 1.4 22 Jun 1997 15:36:32 OS
+ Drop von File-Listen
+
+ Rev 1.3 21 Jun 1997 14:12:22 OS
+ Bereiche mit Dateinamen versehen, RequsestHelp entsprechend impl.
+
+ Rev 1.2 19 Jun 1997 17:35:58 OS
+ Reste Globaldokumente
+
+ Rev 1.1 19 Jun 1997 11:04:58 OS
+ Update impl.
+
+ Rev 1.0 18 Jun 1997 13:07:18 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/utlui/gloslst.cxx b/sw/source/ui/utlui/gloslst.cxx
new file mode 100644
index 000000000000..6cc3200e9cd2
--- /dev/null
+++ b/sw/source/ui/utlui/gloslst.cxx
@@ -0,0 +1,758 @@
+/*************************************************************************
+ *
+ * $RCSfile: gloslst.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#define _SVSTDARR_STRINGSDTOR
+#define _SVSTDARR_STRINGSISORTDTOR
+#define _SVSTDARR_STRINGS
+#include <svtools/svstdarr.hxx>
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _SFX_INIMGR_HXX
+#include <sfx2/inimgr.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _INITUI_HXX
+#include <initui.hxx>
+#endif
+#ifndef _GLOSDOC_HXX
+#include <glosdoc.hxx>
+#endif
+#ifndef _GLOSLST_HXX
+#include <gloslst.hxx>
+#endif
+
+#ifndef _UTLUI_HRC
+#include <utlui.hrc>
+#endif
+#ifndef _GLOSLST_HRC
+#include <gloslst.hrc>
+#endif
+
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UCB_XCOMMANDENVIRONMENT_HPP_
+#include <com/sun/star/ucb/XCommandEnvironment.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_DATETIME_HPP_
+#include <com/sun/star/util/DateTime.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XRESULTSET_HPP_
+#include <com/sun/star/sdbc/XResultSet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XROW_HPP_
+#include <com/sun/star/sdbc/XRow.hpp>
+#endif
+
+#ifdef DEBUG
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSETINFO_HPP_
+#include <com/sun/star/beans/XPropertySetInfo.hpp>
+#endif
+#endif
+
+#ifndef _UCBHELPER_CONTENT_HXX
+#include <ucbhelper/content.hxx>
+#endif
+
+#ifndef _SHL_HXX
+#include <tools/shl.hxx>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::util;
+using namespace ::com::sun::star::ucb;
+using namespace ::rtl;
+
+#define STRING_DELIM (char)0x0A
+#define GLOS_TIMEOUT 30000 // alle 30 s updaten
+#define FIND_MAX_GLOS 20
+
+
+struct TripleString
+{
+ String sGroup;
+ String sBlock;
+ String sShort;
+};
+
+typedef TripleString* TripleStringPtr;
+SV_DECL_PTRARR_DEL( TripleStrings, TripleStringPtr, 0, 4 )
+SV_IMPL_PTRARR( TripleStrings, TripleStringPtr )
+
+class SwGlossDecideDlg : public ModalDialog
+{
+ OKButton aOk;
+ CancelButton aCancel;
+ HelpButton aHelp;
+ ListBox aListLB;
+ GroupBox aGroup;
+
+ DECL_LINK(DoubleClickHdl, ListBox*);
+ DECL_LINK(SelectHdl, ListBox*);
+
+ public:
+ SwGlossDecideDlg(Window* pParent);
+ ListBox& GetListBox() {return aListLB;}
+};
+
+/*-----------------21.01.97 13.25-------------------
+
+--------------------------------------------------*/
+
+SwGlossDecideDlg::SwGlossDecideDlg(Window* pParent) :
+ ModalDialog(pParent, SW_RES(DLG_GLOSSARY_DECIDE_DLG)),
+ aOk(this, ResId(PB_OK)),
+ aCancel(this, ResId(PB_CANCEL)),
+ aHelp(this, ResId(PB_HELP)),
+ aListLB(this, ResId(LB_LIST)),
+ aGroup(this, ResId(GB_GLOSS))
+{
+ FreeResource();
+ aListLB.SetDoubleClickHdl(LINK(this, SwGlossDecideDlg, DoubleClickHdl));
+ aListLB.SetSelectHdl(LINK(this, SwGlossDecideDlg, SelectHdl));
+}
+
+/*-----------------21.01.97 13.25-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK(SwGlossDecideDlg, DoubleClickHdl, ListBox*, EMPTYARG)
+{
+ EndDialog(RET_OK);
+ return 0;
+}
+/*-----------------21.01.97 13.29-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK(SwGlossDecideDlg, SelectHdl, ListBox*, EMPTYARG)
+{
+ aOk.Enable(LISTBOX_ENTRY_NOTFOUND != aListLB.GetSelectEntryPos());
+ return 0;
+}
+
+/********************************************************************
+
+********************************************************************/
+
+
+SwGlossaryList::SwGlossaryList() :
+ bFilled(FALSE),
+ sPath( SFX_INIMANAGER()->Get( SFX_KEY_GLOSSARY_PATH ) )
+{
+ SetTimeout(GLOS_TIMEOUT);
+}
+
+/********************************************************************
+
+********************************************************************/
+
+
+SwGlossaryList::~SwGlossaryList()
+{
+ ClearGroups();
+}
+
+/********************************************************************
+ * Wenn der GroupName bereits bekannt ist, dann wird nur
+ * rShortName gefuellt, sonst wird rGroupName ebenfals gesetzt und
+ * bei Bedarf nach der richtigen Gruppe gefragt
+********************************************************************/
+
+
+BOOL SwGlossaryList::GetShortName(const String& rLongName,
+ String& rShortName, String& rGroupName )
+{
+ if(!bFilled)
+ Update();
+
+ TripleStrings aTripleStrings;
+
+ USHORT nCount = aGroupArr.Count();
+ USHORT nFound = 0;
+ for(USHORT i = 0; i < nCount; i++ )
+ {
+ AutoTextGroup* pGroup = aGroupArr.GetObject(i);
+ if(!rGroupName.Len() || rGroupName == pGroup->sName)
+ for(USHORT j = 0; j < pGroup->nCount; j++)
+ {
+ String sLong = pGroup->sLongNames.GetToken(j, STRING_DELIM);
+ if((rLongName == sLong))
+ {
+ TripleString* pTriple = new TripleString;
+ pTriple->sGroup = pGroup->sName;
+ pTriple->sBlock = sLong;
+ pTriple->sShort = pGroup->sShortNames.GetToken(j, STRING_DELIM);
+ aTripleStrings.Insert(pTriple, nFound++);
+ }
+ }
+ }
+
+ BOOL bRet = FALSE;
+ nCount = aTripleStrings.Count();
+ if(1 == nCount )
+ {
+ TripleString* pTriple = aTripleStrings[0];
+ rShortName = pTriple->sShort;
+ rGroupName = pTriple->sGroup;
+ bRet = TRUE;
+ }
+ else if(1 < nCount)
+ {
+ SwGlossDecideDlg aDlg(0);
+ String sTitle = aDlg.GetText();
+ sTitle += aTripleStrings[0]->sBlock;
+ aDlg.SetText(sTitle);
+
+ ListBox& rLB = aDlg.GetListBox();
+ for(USHORT i = 0; i < nCount; i++ )
+ rLB.InsertEntry(aTripleStrings[i]->sGroup.GetToken(0, GLOS_DELIM));
+
+ rLB.SelectEntryPos(0);
+ if(RET_OK == aDlg.Execute() &&
+ LISTBOX_ENTRY_NOTFOUND != rLB.GetSelectEntryPos())
+ {
+ TripleString* pTriple = aTripleStrings[rLB.GetSelectEntryPos()];
+ rShortName = pTriple->sShort;
+ rGroupName = pTriple->sGroup;
+ bRet = TRUE;
+ }
+ else
+ bRet = FALSE;
+ }
+ return bRet;
+}
+
+/********************************************************************
+
+********************************************************************/
+
+
+USHORT SwGlossaryList::GetGroupCount()
+{
+ if(!bFilled)
+ Update();
+ return aGroupArr.Count();
+}
+
+/********************************************************************
+
+********************************************************************/
+
+
+String SwGlossaryList::GetGroupName(USHORT nPos, BOOL bNoPath, String* pTitle)
+{
+ DBG_ASSERT(aGroupArr.Count() > nPos, "Gruppe nicht vorhanden")
+ String sRet(aEmptyStr);
+ if(nPos < aGroupArr.Count())
+ {
+ AutoTextGroup* pGroup = aGroupArr.GetObject(nPos);
+ sRet = pGroup->sName;
+ if(bNoPath)
+ sRet = sRet.GetToken(0, GLOS_DELIM);
+ if(pTitle)
+ *pTitle = pGroup->sTitle;
+ }
+ return sRet;
+
+}
+
+/********************************************************************
+
+********************************************************************/
+
+
+USHORT SwGlossaryList::GetBlockCount(USHORT nGroup)
+{
+ DBG_ASSERT(aGroupArr.Count() > nGroup, "Gruppe nicht vorhanden")
+ if(nGroup < aGroupArr.Count())
+ {
+ AutoTextGroup* pGroup = aGroupArr.GetObject(nGroup);
+ return pGroup->nCount;
+ }
+ return 0;
+}
+
+/********************************************************************
+
+********************************************************************/
+
+
+String SwGlossaryList::GetBlockName(USHORT nGroup, USHORT nBlock, String& rShortName)
+{
+ DBG_ASSERT(aGroupArr.Count() > nGroup, "Gruppe nicht vorhanden")
+ if(nGroup < aGroupArr.Count())
+ {
+ AutoTextGroup* pGroup = aGroupArr.GetObject(nGroup);
+ rShortName = pGroup->sShortNames.GetToken(nBlock, STRING_DELIM);
+ return pGroup->sLongNames.GetToken(nBlock, STRING_DELIM);
+ }
+ return aEmptyStr;
+}
+
+/********************************************************************
+
+********************************************************************/
+
+
+void SwGlossaryList::Update()
+{
+ if(!IsActive())
+ Start();
+ String sTemp( SFX_INIMANAGER()->Get( SFX_KEY_GLOSSARY_PATH ) );
+ if(sTemp != sPath)
+ {
+ sPath = sTemp;
+ bFilled = FALSE;
+ ClearGroups();
+ }
+ SwGlossaries* pGlossaries = ::GetGlossaries();
+ const SvStrings* pPathArr = pGlossaries->GetPathArray();
+ if(!bFilled)
+ {
+ USHORT nGroupCount = pGlossaries->GetGroupCnt();
+ for(USHORT i = 0; i < nGroupCount; i++)
+ {
+ String sGrpName = pGlossaries->GetGroupName(i);
+ USHORT nPath = sGrpName.GetToken(1, GLOS_DELIM).ToInt32();
+ if(nPath < pPathArr->Count())
+ {
+ AutoTextGroup* pGroup = new AutoTextGroup;
+ pGroup->sName = sGrpName;
+
+ FillGroup(pGroup, pGlossaries);
+ String sName = *(*pPathArr)[nPath];
+ sName += INET_PATH_TOKEN;
+ sName += pGroup->sName.GetToken(0, GLOS_DELIM);
+ sName += String::CreateFromAscii(pGlosExt);
+
+ uno::Reference< XCommandEnvironment > xCmdEnv;
+ ::ucb::Content aTestContent(
+#if SUPD<591
+ SW_MOD()->GetContentBroker(),
+#endif
+ sName,
+ xCmdEnv);
+
+#ifdef DEBUG
+ Reference< beans::XPropertySetInfo > xInfo = aTestContent. getProperties();
+ Sequence< beans::Property > aSeq = xInfo->getProperties( );
+ const beans::Property* pProps = aSeq.getConstArray();
+ OUString sMsg;
+ for(int nProp = 0; nProp < aSeq.getLength(); nProp++)
+ {
+ sMsg += pProps[nProp].Name;
+ sMsg += OUString::createFromAscii(" ");
+ }
+
+#endif
+
+ try
+ {
+ uno::Any aAny = aTestContent.getPropertyValue( OUString::createFromAscii("DateModified") );
+ if(aAny.hasValue())
+ {
+ const util::DateTime* pDT = (util::DateTime*)aAny.getValue();
+ pGroup->aDateModified = ::DateTime(
+ ::Date(pDT->Day, pDT->Month, pDT->Year),
+ ::Time(pDT->Hours, pDT->Minutes, pDT->Seconds, pDT->HundredthSeconds));
+ }
+ }
+ catch(...)
+ {
+ }
+
+ aGroupArr.Insert(pGroup, i);
+ }
+ }
+ bFilled = TRUE;
+ }
+ else
+ {
+ for(USHORT nPath = 0; nPath < pPathArr->Count(); nPath++)
+ {
+ try
+ {
+ ::ucb::Content aCnt(
+ #if SUPD<591
+ SW_MOD()->GetContentBroker(),
+ #endif
+ *(*pPathArr)[nPath], uno::Reference< XCommandEnvironment >());
+ Reference< sdbc::XResultSet > xResultSet;
+ Sequence< OUString > aProps(2);
+ OUString* pProps = aProps.getArray();
+ pProps[ 0 ] = OUString::createFromAscii( "Title" );
+ pProps[ 1 ] = OUString::createFromAscii( "DateModified" );
+ try
+ {
+ xResultSet = aCnt.createCursor( aProps, ::ucb::INCLUDE_DOCUMENTS_ONLY );
+ }
+ catch ( Exception )
+ {
+ DBG_ERRORFILE( "create cursor failed!" );
+ }
+
+ if ( xResultSet.is() )
+ {
+ SvStringsDtor aFoundGroupNames;
+ Reference< sdbc::XRow > xRow( xResultSet, UNO_QUERY );
+ try
+ {
+ if ( xResultSet->first() )
+ {
+ do
+ {
+ String sTitle = xRow->getString( 1 );
+ xub_StrLen nFound = sTitle.SearchAscii( pGlosExt );
+ if( sTitle.Len() - 4 == nFound )
+ {
+ util::DateTime aStamp = xRow->getTimestamp(2);
+ ::DateTime aDateTime = ::DateTime(
+ ::Date(aStamp.Day, aStamp.Month, aStamp.Year ),
+ ::Time(aStamp.Hours, aStamp.Minutes, aStamp.Seconds, aStamp.HundredthSeconds ) );
+ String sName = sTitle.Erase(sTitle.Len() - 4, 4);
+ aFoundGroupNames.Insert(new String(sName), aFoundGroupNames.Count());
+ sName += GLOS_DELIM;
+ sName += String::CreateFromInt32( nPath );
+ AutoTextGroup* pFound = FindGroup(sName);
+ if(!pFound)
+ {
+ pFound = new AutoTextGroup;
+ pFound->sName = sName;
+ FillGroup(pFound, pGlossaries);
+ pFound->aDateModified = aDateTime;
+
+ aGroupArr.Insert(pFound, aGroupArr.Count());
+ }
+ else if(pFound->aDateModified < aDateTime)
+ {
+ FillGroup(pFound, pGlossaries);
+ pFound->aDateModified = aDateTime;
+ }
+ }
+ }
+ while ( xResultSet->next() );
+ }
+ }
+ catch ( ... )
+ {
+ DBG_ERRORFILE( "Exception caught!" );
+ }
+ USHORT nArrCount = aGroupArr.Count();
+ for( USHORT i = nArrCount; i; --i)
+ {
+ // evtl. geloeschte Gruppen entfernen
+ AutoTextGroup* pGroup = aGroupArr.GetObject(i - 1);
+ USHORT nGroupPath = pGroup->sName.GetToken(1, GLOS_DELIM).ToInt32();
+ // nur die Gruppen werden geprueft, die fuer den
+ // aktuellen Teilpfad registriert sind
+ if(nGroupPath == nPath)
+ {
+ BOOL bFound = FALSE;
+ String sCompareGroup = pGroup->sName.GetToken(0, GLOS_DELIM);
+ for( USHORT j = 0; j < aFoundGroupNames.Count() && !bFound; ++j)
+ {
+ bFound = sCompareGroup == *aFoundGroupNames[j];
+ }
+ if(!bFound)
+ {
+ aGroupArr.Remove(i - 1);
+ delete pGroup;
+ }
+ }
+ }
+ }
+ }
+ catch(...){}
+ }
+ }
+}
+
+/********************************************************************
+
+********************************************************************/
+
+
+void __EXPORT SwGlossaryList::Timeout()
+{
+ // nur, wenn eine SwView den Fokus hat, wird automatisch upgedated
+ if(::GetActiveView())
+ Update();
+}
+
+/********************************************************************
+
+********************************************************************/
+
+
+AutoTextGroup* SwGlossaryList::FindGroup(const String& rGroupName)
+{
+ for(USHORT i = 0; i < aGroupArr.Count(); i++)
+ {
+ AutoTextGroup* pRet = aGroupArr.GetObject(i);
+ if(pRet->sName == rGroupName)
+ return pRet;
+ }
+ return 0;
+}
+
+/********************************************************************
+
+********************************************************************/
+
+
+void SwGlossaryList::FillGroup(AutoTextGroup* pGroup, SwGlossaries* pGlossaries)
+{
+ SwTextBlocks* pBlock = pGlossaries->GetGroupDoc(pGroup->sName);
+ pGroup->nCount = pBlock ? pBlock->GetCount() : 0;
+ pGroup->sLongNames = pGroup->sShortNames = aEmptyStr;
+ if(pBlock)
+ pGroup->sTitle = pBlock->GetName();
+
+ for(USHORT j = 0; j < pGroup->nCount; j++)
+ {
+ pGroup->sLongNames += pBlock->GetLongName(j);
+ pGroup->sLongNames += STRING_DELIM;
+ pGroup->sShortNames += pBlock->GetShortName(j);
+ pGroup->sShortNames += STRING_DELIM;
+ }
+ pGlossaries->PutGroupDoc(pBlock);
+}
+
+/********************************************************************
+ Alle (nicht mehr als FIND_MAX_GLOS) gefunden Bausteine mit
+ passendem Anfang zurueckgeben
+********************************************************************/
+
+BOOL SwGlossaryList::HasLongName(const String& rBegin, SvStringsISortDtor* pLongNames )
+{
+ if(!bFilled)
+ Update();
+ USHORT nFound = 0;
+ USHORT nCount = aGroupArr.Count();
+ USHORT nBeginLen = rBegin.Len();
+ const International& rInt = Application::GetAppInternational();
+ for(USHORT i = 0; i < nCount; i++ )
+ {
+ AutoTextGroup* pGroup = aGroupArr.GetObject(i);
+ for(USHORT j = 0; j < pGroup->nCount; j++)
+ {
+ String sBlock = pGroup->sLongNames.GetToken(j, STRING_DELIM);
+ if(rInt.CompareEqual(sBlock.Copy(0, nBeginLen), rBegin, INTN_COMPARE_IGNORECASE) &&
+ nBeginLen + 1 < sBlock.Len())
+ {
+ String* pBlock = new String(sBlock);
+ pLongNames->Insert(pBlock);
+ nFound++;
+ if(FIND_MAX_GLOS == nFound)
+ break;
+ }
+ }
+ }
+ return nFound > 0;
+}
+
+/********************************************************************
+
+********************************************************************/
+void SwGlossaryList::ClearGroups()
+{
+ USHORT nCount = aGroupArr.Count();
+ for( USHORT i = 0; i < nCount; ++i )
+ delete aGroupArr.GetObject( i );
+
+ aGroupArr.Remove( 0, nCount );
+ bFilled = FALSE;
+}
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/ui/utlui/gloslst.cxx,v 1.1.1.1 2000-09-18 17:14:50 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.29 2000/09/18 16:06:17 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.28 2000/06/13 09:57:49 os
+ using UCB
+
+ Revision 1.27 2000/06/08 09:45:45 os
+ ContentBroker not in SwModule
+
+ Revision 1.26 2000/06/07 13:29:51 os
+ using UCB
+
+ Revision 1.25 2000/05/23 19:54:24 jp
+ Bugfixes for Unicode
+
+ Revision 1.24 2000/04/18 15:14:08 os
+ UNICODE
+
+ Revision 1.23 2000/02/14 14:24:35 os
+ #70473# Unicode
+
+ Revision 1.22 2000/02/10 10:35:23 os
+ #70359# titles added to AutoText groups
+
+ Revision 1.21 1999/10/21 17:45:07 jp
+ have to change - SearchFile with SfxIniManager, dont use SwFinder for this
+
+ Revision 1.20 1999/09/20 09:59:08 os
+ local resources separated
+
+ Revision 1.19 1999/02/09 09:48:02 OS
+ #61205# AutoText-Gruppen koennen beliebige Namen erhalten
+
+
+ Rev 1.18 09 Feb 1999 10:48:02 OS
+ #61205# AutoText-Gruppen koennen beliebige Namen erhalten
+
+ Rev 1.17 18 Aug 1998 17:28:04 OS
+ GetShortName sollte auf bekannte Gruppe richtig reagieren #55219#
+
+ Rev 1.16 18 Mar 1998 17:47:40 OS
+ kein GPF, wenn alle Glossary-Pfade ungueltig sind
+
+ Rev 1.15 21 Nov 1997 12:10:14 MA
+ includes
+
+ Rev 1.14 03 Nov 1997 13:59:24 MA
+ precomp entfernt
+
+ Rev 1.13 01 Sep 1997 13:11:44 OS
+ DLL-Umstellung
+
+ Rev 1.12 30 Jul 1997 14:49:30 OM
+ #41989# Autotextbereiche korrekt anzeigen
+
+ Rev 1.11 09 Jul 1997 17:45:30 HJS
+ includes
+
+ Rev 1.10 17 Jun 1997 10:15:22 OS
+ Update fuer mehrere AutoText-Pfade angepasst
+
+ Rev 1.9 10 Jun 1997 14:26:12 OS
+ AutoText aus mehreren Verzeichnissen
+
+ Rev 1.8 30 Jan 1997 09:15:08 MA
+ unbenutztes entfernt
+
+ Rev 1.7 21 Jan 1997 15:00:30 OS
+ Autotext-Auswahl-Dialog verfeinert
+
+ Rev 1.6 21 Jan 1997 09:39:26 OS
+ Gruppenname zurueckgeben
+
+ Rev 1.5 20 Jan 1997 16:58:50 OS
+ Entscheidungsdialog fuer AutoComplete
+
+ Rev 1.4 01 Nov 1996 04:44:36 MH
+ add: includes
+
+ Rev 1.3 01 Oct 1996 09:00:16 JP
+ DTOR korrigiert
+
+ Rev 1.2 27 Sep 1996 16:33:22 HJS
+ include
+
+ Rev 1.1 27 Sep 1996 12:55:20 OS
+ nach Kuerzeln suchen
+
+ Rev 1.0 26 Sep 1996 16:55:54 OS
+ Initial revision.
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/utlui/gloslst.hrc b/sw/source/ui/utlui/gloslst.hrc
new file mode 100644
index 000000000000..fdc65b75eaa3
--- /dev/null
+++ b/sw/source/ui/utlui/gloslst.hrc
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * $RCSfile: gloslst.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _INITUI_HRC
+#define _INITUI_HRC
+
+#define GB_GLOSS 1
+#define PB_OK 2
+#define PB_HELP 3
+#define PB_CANCEL 4
+#define LB_LIST 5
+
+#endif
+
diff --git a/sw/source/ui/utlui/gloslst.src b/sw/source/ui/utlui/gloslst.src
new file mode 100644
index 000000000000..0c8d269d875b
--- /dev/null
+++ b/sw/source/ui/utlui/gloslst.src
@@ -0,0 +1,153 @@
+/*************************************************************************
+ *
+ * $RCSfile: gloslst.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "globals.hrc"
+#include "utlui.hrc"
+#include "helpid.h"
+#include "gloslst.hrc"
+
+ModalDialog DLG_GLOSSARY_DECIDE_DLG
+{
+ HelpID = HID_DLG_GLOSS_DECIDE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 161 , 67 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Textbaustein auswählen: : Textbaustein auswõhlen: */
+ Text = "Textbaustein auswählen: " ;
+ Text [ ENGLISH ] = "Select glossary: " ;
+ Moveable = TRUE ;
+ GroupBox GB_GLOSS
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 93 , 58 ) ;
+ Text = "AutoText - Gruppe" ;
+ Text [ ENGLISH ] = "Glossary group" ;
+ Text [ english_us ] = "AutoText - Group" ;
+ Text [ portuguese_brazilian ] = "AutoText - Gruppe" ;
+ Text [ swedish ] = "AutoText - grupp" ;
+ Text [ danish ] = "AutoTekst - gruppe" ;
+ Text [ italian ] = "Testo automatico - Gruppo" ;
+ Text [ spanish ] = "Grupo AutoTexto" ;
+ Text [ french ] = "AutoTexte - Groupe" ;
+ Text [ dutch ] = "AutoTekst-groep" ;
+ Text [ portuguese ] = "AutoTexto - Grupo" ;
+ Text[ chinese_simplified ] = "×Ô¶¯Í¼Îļ¯Ð¡×é";
+ Text[ russian ] = "Àâòîòåêñò - Ãðóïïà";
+ Text[ polish ] = "Autotekst - Grupa";
+ Text[ japanese ] = "“ü—ÍŽx‰‡ ¸ÞÙ°Ìß";
+ Text[ chinese_traditional ] = "¦Û°Ê¹Ï¤å¶°¤p²Õ";
+ Text[ arabic ] = "ãÌãæÚÉ äÕ ÊáÞÇÆí";
+ Text[ greek ] = "ÏìÜäá ÁõôïÊåéìÝíïõ";
+ Text[ korean ] = "ÀÚµ¿ ÅؽºÆ® ±×·ì";
+ Text[ turkish ] = "Otomatik metin - Grup";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 105 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 105 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 105 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ };
+ ListBox LB_LIST
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 81 , 40 ) ;
+ TabStop = TRUE ;
+ Border = TRUE ;
+ };
+ Text [ english_us ] = "Select AutoText: " ;
+ Text [ portuguese_brazilian ] = "Textbaustein auswählen: " ;
+ Text [ swedish ] = "Välj ut textblock: " ;
+ Text [ danish ] = "Vælg tekstelementer: " ;
+ Text [ italian ] = "Seleziona modulo di testo: " ;
+ Text [ spanish ] = "Seleccionar módulo de texto: " ;
+ Text [ french ] = "Sélection du module de texte : " ;
+ Text [ dutch ] = "Tekstbouwsteen selecteren: " ;
+ Text [ portuguese ] = "Seleccionar módulo de texto: " ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ´ÊÌõ£º ";
+ Text[ russian ] = "Âûáðàòü àâòîòåêñò: ";
+ Text[ polish ] = "Zaznacz blok tekstu: ";
+ Text[ japanese ] = "÷½ÄÌÞÛ¯¸‚Ì‘I‘ð: ";
+ Text[ chinese_traditional ] = "¿ï¾Ü¦Û°Ê¹Ï¤å¶°¡G ";
+ Text[ arabic ] = "ÇÎÊíÇÑ ÚäÕÑ ÇáäÕ: ";
+ Text[ greek ] = "ÅðéëïãÞ ôìÞìáôïò êåéìÝíïõ: ";
+ Text[ korean ] = "ÀÚµ¿ ÅؽºÆ® ¼±ÅÃ: ";
+ Text[ turkish ] = "Metin bileþeni seç: ";
+ Text[ language_user1 ] = " ";
+};
+
+
diff --git a/sw/source/ui/utlui/initui.cxx b/sw/source/ui/utlui/initui.cxx
new file mode 100644
index 000000000000..5357961dfc2b
--- /dev/null
+++ b/sw/source/ui/utlui/initui.cxx
@@ -0,0 +1,440 @@
+/*************************************************************************
+ *
+ * $RCSfile: initui.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _VIEWSH_HXX
+#include <viewsh.hxx>
+#endif
+#ifndef _FINDER_HXX
+#include <finder.hxx>
+#endif
+#ifndef _INITUI_HXX
+#include <initui.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _SHELLRES_HXX
+#include <shellres.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx>
+#endif
+#ifndef _GLOSDOC_HXX
+#include <glosdoc.hxx>
+#endif
+#ifndef _GLOSLST_HXX
+#include <gloslst.hxx>
+#endif
+
+#ifndef _UTLUI_HRC
+#include <utlui.hrc>
+#endif
+#ifndef _INITUI_HRC
+#include <initui.hrc>
+#endif
+#ifndef _COMCORE_HRC
+#include <comcore.hrc>
+#endif
+#ifndef _AUTHFLD_HXX
+#include <authfld.hxx>
+#endif
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+/*--------------------------------------------------------------------
+ Beschreibung: globale Pointer
+ --------------------------------------------------------------------*/
+
+SwGlossaries* pGlossaries = 0;
+
+// Liefert alle benoetigten Pfade. Wird durch UI initialisiert
+SwPathFinder* pPathFinder = 0;
+SwGlossaryList* pGlossaryList = 0;
+
+String* pOldGrfCat = 0;
+String* pOldTabCat = 0;
+String* pOldFrmCat = 0;
+String* pOldDrwCat = 0;
+String* pCurrGlosGroup = 0;
+
+SvStringsDtor* pDBNameList = 0;
+
+SvStringsDtor* pAuthFieldNameList = 0;
+SvStringsDtor* pAuthFieldTypeList = 0;
+
+/*--------------------------------------------------------------------
+ Beschreibung: UI beenden
+ --------------------------------------------------------------------*/
+
+void _FinitUI()
+{
+ delete ViewShell::GetShellRes();
+ ViewShell::SetShellRes( 0 );
+
+ SwEditWin::_FinitStaticData();
+
+ DELETEZ(pPathFinder);
+ DELETEZ(pGlossaries);
+
+ delete SwFieldType::pFldNames;
+
+ delete pOldGrfCat;
+ delete pOldTabCat;
+ delete pOldFrmCat;
+ delete pOldDrwCat;
+ delete pCurrGlosGroup;
+ delete pDBNameList;
+ delete pGlossaryList;
+ delete pAuthFieldNameList;
+ delete pAuthFieldTypeList;
+
+
+}
+/*--------------------------------------------------------------------
+ Beschreibung: Initialisierung
+ --------------------------------------------------------------------*/
+
+
+void _InitUI()
+{
+ pPathFinder = new SwPathFinder;
+ // ShellResource gibt der CORE die Moeglichkeit mit Resourcen zu arbeiten
+ ViewShell::SetShellRes( new ShellResource );
+ pDBNameList = new SvStringsDtor( 5, 5 );
+ SwEditWin::_InitStaticData();
+}
+
+
+ShellResource::ShellResource()
+ : Resource( SW_RES(RID_SW_SHELLRES) ),
+ aPostItPage( SW_RES( STR_POSTIT_PAGE ) ),
+ aPostItAuthor( SW_RES( STR_POSTIT_AUTHOR ) ),
+ aPostItLine( SW_RES( STR_POSTIT_LINE ) ),
+ aCalc_Syntax( SW_RES( STR_CALC_SYNTAX ) ),
+ aCalc_ZeroDiv( SW_RES( STR_CALC_ZERODIV ) ),
+ aCalc_Brack( SW_RES( STR_CALC_BRACK ) ),
+ aCalc_Pow( SW_RES( STR_CALC_POW ) ),
+ aCalc_VarNFnd( SW_RES( STR_CALC_VARNFND ) ),
+ aCalc_Overflow( SW_RES( STR_CALC_OVERFLOW ) ),
+ aCalc_WrongTime( SW_RES( STR_CALC_WRONGTIME ) ),
+ aCalc_Default( SW_RES( STR_CALC_DEFAULT ) ),
+ aCalc_Error( SW_RES( STR_CALC_ERROR ) ),
+ aGetRefFld_Up( SW_RES( STR_GETREFFLD_UP ) ),
+ aGetRefFld_Down( SW_RES( STR_GETREFFLD_DOWN ) ),
+ aStrAllPageHeadFoot( SW_RES( STR_ALLPAGE_HEADFOOT ) ),
+ aStrNone( SW_RES( STR_TEMPLATE_NONE )),
+ aFixedStr( SW_RES( STR_FIELD_FIXED )),
+ aTOXIndexName( SW_RES(STR_TOI)),
+ aTOXUserName( SW_RES(STR_TOU)),
+ aTOXContentName( SW_RES(STR_TOC)),
+ aTOXIllustrationsName( SW_RES(STR_TOX_ILL)),
+ aTOXObjectsName( SW_RES(STR_TOX_OBJ)),
+ aTOXTablesName( SW_RES(STR_TOX_TBL)),
+ aTOXAuthoritiesName( SW_RES(STR_TOX_AUTH)),
+ pAutoFmtNameLst( 0 )
+{
+ const USHORT nCount = FLD_DOCINFO_END - FLD_DOCINFO_BEGIN;
+
+ for(USHORT i = 0; i < nCount; ++i)
+ {
+ String* pNew = new SW_RESSTR(FLD_DOCINFO_BEGIN + i);
+ aDocInfoLst.Insert(pNew, aDocInfoLst.Count());
+ }
+
+ FreeResource();
+}
+
+ShellResource::~ShellResource()
+{
+ if( pAutoFmtNameLst )
+ delete pAutoFmtNameLst, pAutoFmtNameLst = 0;
+}
+
+SwGlossaries* GetGlossaries()
+{
+ if (!pGlossaries)
+ pGlossaries = new SwGlossaries;
+ return (pGlossaries);
+}
+
+BOOL HasGlossaryList()
+{
+ return pGlossaryList != 0;
+}
+
+SwGlossaryList* GetGlossaryList()
+{
+ if(!pGlossaryList)
+ pGlossaryList = new SwGlossaryList();
+
+ return pGlossaryList;
+}
+
+struct ImpAutoFmtNameListLoader : public Resource
+{
+ ImpAutoFmtNameListLoader( SvStringsDtor& rLst );
+};
+
+void ShellResource::_GetAutoFmtNameLst() const
+{
+ SvStringsDtor** ppLst = (SvStringsDtor**)&pAutoFmtNameLst;
+ *ppLst = new SvStringsDtor( STR_AUTOFMTREDL_END );
+ ImpAutoFmtNameListLoader aTmp( **ppLst );
+}
+
+ImpAutoFmtNameListLoader::ImpAutoFmtNameListLoader( SvStringsDtor& rLst )
+ : Resource( ResId(RID_SHELLRES_AUTOFMTSTRS, pSwResMgr) )
+{
+ for( USHORT n = 0; n < STR_AUTOFMTREDL_END; ++n )
+ {
+ String* p = new String( ResId( n + 1, pSwResMgr) );
+ if(STR_AUTOFMTREDL_TYPO == n)
+ {
+ const International& rInt = Application::GetAppInternational();
+#ifdef WNT
+ //fuer Windows Sonderbehandlung, da MS hier ein paar Zeichen im Dialogfont vergessen hat
+ p->SearchAndReplace(C2S("%1"), C2S(",,"));
+ p->SearchAndReplace(C2S("%2"), C2S("''"));
+#else
+ //unter richtigen Betriebssystemen funktioniert es auch so
+ p->SearchAndReplace(C2S("%1"), rInt.GetDoubleQuotationMarkStartChar());
+ p->SearchAndReplace(C2S("%2"), rInt.GetDoubleQuotationMarkEndChar());
+#endif
+ }
+ rLst.Insert( p, n );
+ }
+ FreeResource();
+}
+/* -----------------16.09.99 12:28-------------------
+
+ --------------------------------------------------*/
+const String& SwAuthorityFieldType::GetAuthFieldName(ToxAuthorityField eType)
+{
+ if(!pAuthFieldNameList)
+ {
+ pAuthFieldNameList = new SvStringsDtor(AUTH_FIELD_END, 1);
+ for(USHORT i = 0; i < AUTH_FIELD_END; i++)
+ {
+ String* pTmp = new String(SW_RES(STR_AUTH_FIELD_START + i));
+ //remove short cuts
+ pTmp->EraseAllChars('~');
+ pAuthFieldNameList->Insert(pTmp, pAuthFieldNameList->Count());
+ }
+ }
+ return *pAuthFieldNameList->GetObject(eType);
+}
+/* -----------------16.09.99 12:29-------------------
+
+ --------------------------------------------------*/
+const String& SwAuthorityFieldType::GetAuthTypeName(ToxAuthorityType eType)
+{
+ if(!pAuthFieldTypeList)
+ {
+ pAuthFieldTypeList = new SvStringsDtor(AUTH_TYPE_END, 1);
+ for(USHORT i = 0; i < AUTH_TYPE_END; i++)
+ pAuthFieldTypeList->Insert(
+ new String(SW_RES(STR_AUTH_TYPE_START + i)),
+ pAuthFieldTypeList->Count());
+ }
+ return *pAuthFieldTypeList->GetObject(eType);
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.112 2000/09/18 16:06:17 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.111 2000/04/18 15:14:08 os
+ UNICODE
+
+ Revision 1.110 2000/02/14 14:23:29 os
+ #70473# Unicode
+
+ Revision 1.109 2000/02/10 10:35:22 os
+ #70359# titles added to AutoText groups
+
+ Revision 1.108 1999/10/06 12:24:13 os
+ index corrected
+
+ Revision 1.107 1999/10/05 10:40:03 os
+ index corrected
+
+ Revision 1.106 1999/09/22 12:48:10 aw
+ changes for IAO-Handle handling in SW (AW)
+
+ Revision 1.105 1999/09/20 09:58:34 os
+ local resources separated; Authority defines
+
+ Revision 1.104 1999/09/15 14:10:32 os
+ language improvements
+
+ Revision 1.103 1999/07/07 06:15:48 OS
+ extended indexes: Index names in ShellRes
+
+
+ Rev 1.102 07 Jul 1999 08:15:48 OS
+ extended indexes: Index names in ShellRes
+
+ Rev 1.101 10 Jun 1999 13:14:52 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.100 28 May 1999 14:09:04 OS
+ #54839# Plattformstrings raus
+
+ Rev 1.99 09 Mar 1999 18:27:42 JP
+ Task #61405#: AutoCompletion von Woertern
+
+ Rev 1.98 05 Mar 1999 14:33:02 JP
+ Bug #62868#: beim Anzeigen der Feldnamen opt. das Fix mit ausgeben
+
+ Rev 1.97 12 Jan 1999 21:14:32 JP
+ Bug #60794#: Fehlererkennung beim Tabellenrechnen
+
+ Rev 1.96 10 Dec 1998 09:47:56 MIB
+ #60060#: Beschriftungen fuer Zeichen-Objekte
+
+ Rev 1.95 06 Oct 1998 09:47:22 JP
+ Task #57586#: ShellRes um die AutoFmt-RedlineNameListe erweitert
+
+ Rev 1.94 16 Jul 1998 16:40:46 JP
+ STR_NONE ->STR_TEMPLATE_NONE fuer den MacCompiler
+
+ Rev 1.93 26 Jun 1998 17:12:52 AMA
+ Chg: Notizen werden mit Zeilenangabe gedruckt
+
+ Rev 1.92 29 May 1998 18:56:32 JP
+ neuer String in den ShellResourcen
+
+ Rev 1.91 26 May 1998 15:31:36 JP
+ neuen String aufgenommen: Alle
+
+ Rev 1.90 21 Nov 1997 12:10:12 MA
+ includes
+
+ Rev 1.89 03 Nov 1997 13:59:24 MA
+ precomp entfernt
+
+ Rev 1.88 20 Jan 1997 17:04:30 JP
+ ShowTip Umbau
+
+ Rev 1.87 11 Nov 1996 10:54:12 MA
+ ResMgr
+
+ Rev 1.86 06 Nov 1996 16:55:10 OS
+ include
+
+ Rev 1.85 06 Nov 1996 16:39:06 OS
+ SpellCheck in der OFA
+
+ Rev 1.84 31 Oct 1996 14:51:50 JP
+ neue Resource fuer GetRefFelder
+
+ Rev 1.83 26 Sep 1996 16:57:24 OS
+ neu: SwGlossaryList
+
+ Rev 1.82 19 Sep 1996 10:34:56 JP
+ neu: pDBNameList fuers Basic
+
+ Rev 1.81 28 Aug 1996 15:42:32 OS
+ includes
+
+ Rev 1.80 16 Aug 1996 11:28:26 OM
+ Dokinfo aufgegliedert
+
+ Rev 1.79 12 Aug 1996 16:33:34 OM
+ Namen der Def Datenbank in SwTypes verschoben
+
+ Rev 1.78 25 Jul 1996 16:42:52 OM
+ Datenbankname am Dok auch mit Tabelle initialisieren
+
+ Rev 1.77 20 Dec 1995 17:21:22 OM
+ Address->FAR_DATA
+
+ Rev 1.76 05 Dec 1995 19:02:00 JP
+ static aActGroup nur noch ein Pointer (wird von InitUi gepflegt!)
+
+ Rev 1.75 28 Nov 1995 21:18:20 JP
+ UiSystem-Klasse aufgehoben, in initui/swtype aufgeteilt
+
+ Rev 1.74 28 Nov 1995 13:39:54 JP
+ Aufgeraeumt - alte externs entfernt, SwShellRes ueber Resource laden
+
+ Rev 1.73 27 Nov 1995 21:16:56 JP
+ static Strings aus caption.cxx hierher als Pointer verschoben
+
+ Rev 1.72 24 Nov 1995 16:57:22 OM
+ PCH->PRECOMPILED
+
+ Rev 1.71 13 Nov 1995 12:21:32 JP
+ static Namen von Grafik/OLE/Tabelle setzen fuer Verzeichnisse entfernt
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/utlui/initui.hrc b/sw/source/ui/utlui/initui.hrc
new file mode 100644
index 000000000000..eda73a8a1e7b
--- /dev/null
+++ b/sw/source/ui/utlui/initui.hrc
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * $RCSfile: initui.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _INITUI_HRC
+#define _INITUI_HRC
+
+#define BMP_FRAME_ANCHOR 1
+#define BMP_FRAME_DRAG_ANCHOR 2
+
+// lokale Resourcen fuer die Shells:
+#define STR_POSTIT_PAGE 1
+#define STR_POSTIT_AUTHOR 2
+#define STR_CALC_SYNTAX 3
+#define STR_CALC_ZERODIV 4
+#define STR_CALC_BRACK 5
+#define STR_CALC_POW 6
+#define STR_CALC_VARNFND 7
+#define STR_CALC_OVERFLOW 8
+#define STR_CALC_WRONGTIME 9
+#define STR_CALC_DEFAULT 10
+#define STR_CALC_ERROR 11
+#define STR_GETREFFLD_UP 12
+#define STR_GETREFFLD_DOWN 13
+#define STR_ALLPAGE_HEADFOOT 14
+#define STR_TEMPLATE_NONE 15
+#define STR_POSTIT_LINE 16
+#define STR_FIELD_FIXED 17
+#define STR_TOI 18
+#define STR_TOU 19
+#define STR_TOC 20
+#define STR_TOX_ILL 21
+#define STR_TOX_OBJ 22
+#define STR_TOX_TBL 23
+#define STR_TOX_AUTH 24
+#endif
+
diff --git a/sw/source/ui/utlui/initui.src b/sw/source/ui/utlui/initui.src
new file mode 100644
index 000000000000..bfc9e654e268
--- /dev/null
+++ b/sw/source/ui/utlui/initui.src
@@ -0,0 +1,2303 @@
+/*************************************************************************
+ *
+ * $RCSfile: initui.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "globals.hrc"
+#include "utlui.hrc"
+#include "helpid.h"
+#include "initui.hrc"
+
+/*---------------------------------------------------------------------
+ Fehler Calculator
+ ---------------------------------------------------------------------*/
+Resource RID_SW_SHELLRES
+{
+ String STR_POSTIT_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_POSTIT_LINE
+ {
+ TEXT = "Zeile" ;
+ TEXT [ ENGLISH ] = "Line" ;
+ Text [ portuguese ] = "Linha" ;
+ Text [ english_us ] = "Line" ;
+ Text [ portuguese_brazilian ] = "Zeile" ;
+ Text [ swedish ] = "Rad" ;
+ Text [ danish ] = "Række" ;
+ Text [ italian ] = "Riga" ;
+ Text [ spanish ] = "Línea" ;
+ Text [ french ] = "Ligne" ;
+ Text [ dutch ] = "Regel" ;
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ russian ] = "Ñòðîêà";
+ Text[ polish ] = "Wiersz";
+ Text[ japanese ] = "s";
+ Text[ chinese_traditional ] = "¦æ";
+ Text[ arabic ] = "ÇáÓØÑ";
+ Text[ greek ] = "ÃñáììÞ";
+ Text[ korean ] = "¼±";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_POSTIT_AUTHOR
+ {
+ TEXT = "Autor" ;
+ TEXT [ ENGLISH ] = "Author" ;
+ TEXT [ norwegian ] = "Forfatter" ;
+ TEXT [ italian ] = "Autore" ;
+ TEXT [ portuguese_brazilian ] = "Autor" ;
+ TEXT [ portuguese ] = "Autor" ;
+ TEXT [ finnish ] = "Tekijä" ;
+ TEXT [ danish ] = "Forfatter" ;
+ TEXT [ french ] = "Auteur" ;
+ TEXT [ swedish ] = "Författare" ;
+ TEXT [ dutch ] = "Auteur" ;
+ TEXT [ spanish ] = "Autor" ;
+ TEXT [ english_us ] = "Author" ;
+ TEXT[ chinese_simplified ] = "×÷Õß";
+ TEXT[ russian ] = "Àâòîð";
+ TEXT[ polish ] = "Autor";
+ TEXT[ japanese ] = "쬎Ò";
+ TEXT[ chinese_traditional ] = "§@ªÌ";
+ TEXT[ arabic ] = "ÇáãÄáÝ";
+ TEXT[ greek ] = "ÓõíôÜêôçò";
+ TEXT[ korean ] = "ÀÛ¼ºÀÎ";
+ TEXT[ turkish ] = "Yazan";
+ TEXT[ language_user1 ] = " ";
+ };
+ String STR_CALC_SYNTAX
+ {
+ TEXT [ English ] = "** Syntax error **" ;
+ TEXT [ norwegian ] = "** Syntaksfeil **" ;
+ TEXT [ italian ] = "** Errore di sintassi **" ;
+ TEXT [ portuguese_brazilian ] = "** Erro de sintaxe **" ;
+ TEXT [ portuguese ] = "** Erro de sintaxe **" ;
+ TEXT [ finnish ] = "** Muotovirhe **" ;
+ TEXT [ danish ] = "** Syntaksfejl **" ;
+ TEXT [ french ] = "** Erreur de syntaxe **" ;
+ TEXT [ swedish ] = "** Syntaxfel **" ;
+ TEXT [ dutch ] = "** Syntactische fout **" ;
+ TEXT [ spanish ] = "** Error de sintaxis **" ;
+ TEXT [ english_us ] = "** Syntax Error **" ;
+ TEXT = "** Syntax Fehler **" ;
+ TEXT[ chinese_simplified ] = "** Óï·¨´íÎó **";
+ TEXT[ russian ] = "** Ñèíòàêñè÷åñêàÿ îøèáêà **";
+ TEXT[ polish ] = "** B³¹d w 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_CALC_ZERODIV
+ {
+ TEXT [ English ] = "** Divide by zero **" ;
+ TEXT [ norwegian ] = "** Del på null **" ;
+ TEXT [ italian ] = "** Divisione per zero **" ;
+ TEXT [ portuguese_brazilian ] = "** Dividir por zero **" ;
+ TEXT [ portuguese ] = "** Dividir por zero **" ;
+ TEXT [ finnish ] = "** Jako nollalla **" ;
+ TEXT [ danish ] = "** Division med nul **" ;
+ TEXT [ french ] = "** Division par zéro **" ;
+ TEXT [ swedish ] = "** Division med noll **" ;
+ TEXT [ dutch ] = "Divideren door nul" ;
+ TEXT [ spanish ] = "** Dividir por cero **" ;
+ TEXT [ english_us ] = "** Division by zero **" ;
+ TEXT = "** Division durch Null **" ;
+ TEXT[ chinese_simplified ] = "** ³ýÓÚÁã **";
+ TEXT[ russian ] = "** Äåëåíèå íà íóëü **";
+ TEXT[ polish ] = "** Dzielenie przez zero **";
+ TEXT[ japanese ] = "**¾ÞÛ‚ÅŠ„‚é**";
+ TEXT[ chinese_traditional ] = "** °£¤_¹s **";
+ TEXT[ arabic ] = "** ÞÓãÉ Úáì ÕÝÑ **";
+ TEXT[ greek ] = "** Äéáßñåóç ìå ôï 0 **";
+ TEXT[ korean ] = "** 0À¸·Î ³ª´¸ **";
+ TEXT[ turkish ] = "** Sýfýr ile bölme **";
+ TEXT[ language_user1 ] = " ";
+ };
+ String STR_CALC_BRACK
+ {
+ TEXT [ English ] = "** Mistakable brackets **" ;
+ TEXT [ norwegian ] = "+++** Mistakable brackets **" ;
+ TEXT [ italian ] = "** Parentesi errate **" ;
+ TEXT [ portuguese_brazilian ] = "** Colchetes errôneos **" ;
+ TEXT [ portuguese ] = "** Parênteses errados **" ;
+ TEXT [ finnish ] = "** Virheelliset sulkeet **" ;
+ TEXT [ danish ] = "** Forkert brug af parenteser **" ;
+ TEXT [ french ] = "** Erreur de parenthèses **" ;
+ TEXT [ swedish ] = "** Felaktig användning av parenteser **" ;
+ TEXT [ dutch ] = "** Foutief gebruik van haakjes **" ;
+ TEXT [ spanish ] = "** Error de paréntesis **" ;
+ TEXT [ english_us ] = "** Wrong use of brackets **" ;
+ TEXT = "** Fehlerhafte Klammerung **" ;
+ TEXT[ chinese_simplified ] = "** ´íÎóµÄÀ¨ºÅ **";
+ TEXT[ russian ] = "** Íåïðàâèëüíîå ïðèìåíåíèå ñêîáîê **";
+ TEXT[ polish ] = "** Nieprawid³owo u¿yte nawiasy **";
+ TEXT[ japanese ] = "**ŒëŽg—p‚Ì‚©‚Á‚±**";
+ TEXT[ chinese_traditional ] = "** ¿ù»~ªº¬A¸¹ **";
+ TEXT[ arabic ] = "** ÇÓÊÎÏÇã ÇáÃÞæÇÓ ÈÔßá ÎÇØÆ **";
+ TEXT[ greek ] = "** ËÜèïò ÷ñÞóç ðáñåíèÝóåùí **";
+ TEXT[ korean ] = "**À߸øµÈ °ýÈ£ÀÇ »ç¿ë **";
+ TEXT[ turkish ] = "** Hatalý ayraç kullanýmý **";
+ TEXT[ language_user1 ] = " ";
+ };
+ String STR_CALC_POW
+ {
+ TEXT [ English ] = "** Square function overflow **" ;
+ TEXT [ norwegian ] = "+++** Square function overflow **" ;
+ TEXT [ italian ] = "** Overflow nella funzione quadrato **" ;
+ TEXT [ portuguese_brazilian ] = "** Transbordo de função quadrática **" ;
+ TEXT [ portuguese ] = "** Transbordo da função quadrática **" ;
+ TEXT [ finnish ] = "** Neliöjuurifunktion ylivuoto **" ;
+ TEXT [ danish ] = "** Overløb i kvadratfunktion **" ;
+ TEXT [ french ] = "** Dépassement de capacité de la fonction carré**" ;
+ TEXT [ swedish ] = "** Spill i kvadratfunktion **" ;
+ TEXT [ dutch ] = "** Overflow in kwadraatfunctie **" ;
+ TEXT [ spanish ] = "** Desbordamiento en función al cuadrado **" ;
+ TEXT [ english_us ] = "** Square function overflow **" ;
+ /* ### ACHTUNG: Neuer Text in Resource? ** Überlauf in Quadratfunktion ** : ** šberlauf in Quadratfunktion ** */
+ TEXT = "** Überlauf in Quadratfunktion **" ;
+ TEXT[ chinese_simplified ] = "** ƽ·½º¯ÊýµÄÒçÖµ **";
+ TEXT[ russian ] = "** Ïåðåïîëíåíèå â ôóíêöèè êâàäðàòà **";
+ TEXT[ polish ] = "** Przepe³nienie w funkcji kwadratowej **";
+ TEXT[ japanese ] = "**ŽlŠpŒ`‹@”\\‚̵°ÊÞ°ÌÛ°**";
+ TEXT[ chinese_traditional ] = "** ®Ú¨ç¼Æ·¸­È **";
+ TEXT[ arabic ] = "** ÝÇÆÖ Ýí ÇáÏÇáÉ ÇáÊÑÈíÚíÉ **";
+ TEXT[ greek ] = "** Õðåñ÷åßëéóç óôç ëåéôïõñãßá ôåôñáãþíïõ **";
+ TEXT[ korean ] = "**Á¦°ö ÇÔ¼ö ¿À¹öÇ÷οì **";
+ TEXT[ turkish ] = "** Kare fonksiyonu taþmasý **";
+ TEXT[ language_user1 ] = " ";
+ };
+ String STR_CALC_VARNFND
+ {
+ TEXT [ English ] = "** Variable not found **" ;
+ TEXT [ norwegian ] = "** Variabel ikke funnet **" ;
+ TEXT [ italian ] = "** Variabile non trovata **" ;
+ TEXT [ portuguese_brazilian ] = "** Variável não encontrada **" ;
+ TEXT [ portuguese ] = "** Variável não encontrada **" ;
+ TEXT [ finnish ] = "** Muuttujaa ei löydy **" ;
+ TEXT [ danish ] = "** Variabel blev ikke fundet **" ;
+ TEXT [ french ] = "** Variable introuvable **" ;
+ TEXT [ swedish ] = "** Variabel hittades inte **" ;
+ TEXT [ dutch ] = "** Variabele niet gevonden **" ;
+ TEXT [ spanish ] = "** No se ha encontrado la variable **" ;
+ TEXT [ english_us ] = "** Variable not found **" ;
+ TEXT = "** Variable wurde nicht gefunden **" ;
+ TEXT[ chinese_simplified ] = "** ûÓÐÕÒµ½±äÁ¿ **";
+ TEXT[ russian ] = "** Ïåðåìåííàÿ íå íàéäåíà **";
+ TEXT[ polish ] = "** Zmiennej nie znaleziono **";
+ TEXT[ japanese ] = "**•Ï”‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ**";
+ TEXT[ chinese_traditional ] = "** ¨S¦³§ä¨ìÅÜ¼Æ **";
+ TEXT[ arabic ] = "** ÊÚÐÑ ÇáÚËæÑ Úáì ÇáãÊÛíÑÉ **";
+ TEXT[ greek ] = "** Äåí âñÝèçêå ç ìåôáâëçôÞ **";
+ TEXT[ korean ] = "**º¯¼ö°¡ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù. **";
+ TEXT[ turkish ] = "** Deðiþken bulunamadý **";
+ TEXT[ language_user1 ] = " ";
+ };
+ String STR_CALC_OVERFLOW
+ {
+ TEXT [ English ] = "** Overflow **" ;
+ TEXT [ norwegian ] = "** Overflow **" ;
+ TEXT [ italian ] = "** Overflow **" ;
+ TEXT [ portuguese_brazilian ] = "** Transbordo **" ;
+ TEXT [ portuguese ] = "** Transbordo **" ;
+ TEXT [ finnish ] = "** Ylivuoto **" ;
+ TEXT [ danish ] = "** Overløb **" ;
+ TEXT [ french ] = "** Dépassement de capacité **" ;
+ TEXT [ swedish ] = "** Spill **" ;
+ TEXT [ dutch ] = "** Overflow **" ;
+ TEXT [ spanish ] = "** Desbordamiento **" ;
+ TEXT [ english_us ] = "** Overflow **" ;
+ /* ### ACHTUNG: Neuer Text in Resource? ** Überlauf ** : ** šberlauf ** */
+ TEXT = "** Überlauf **" ;
+ TEXT[ chinese_simplified ] = "** ÒçÖµ **";
+ TEXT[ russian ] = "** Ïåðåïîëíåíèå **";
+ TEXT[ polish ] = "** Przepe³nienie **";
+ TEXT[ japanese ] = "**µ°ÊÞ°ÌÛ°**";
+ TEXT[ language_user1 ] = " ";
+ TEXT[ chinese_traditional ] = "** ·¸­È **";
+ TEXT[ arabic ] = "** ÝÇÆÖ **";
+ TEXT[ greek ] = "** Õðåñ÷åßëéóç **";
+ TEXT[ korean ] = "** ¿À¹ö Ç÷οì **";
+ TEXT[ turkish ] = "** Taþma **";
+ };
+ String STR_CALC_WRONGTIME
+ {
+ TEXT [ English ] = "** Wrong timeformat **" ;
+ TEXT [ norwegian ] = "** Feil tidsformat **" ;
+ TEXT [ italian ] = "** Formato orario errato **" ;
+ TEXT [ portuguese_brazilian ] = "** Formato de tempo errado**" ;
+ TEXT [ portuguese ] = "** Formato de tempo errado**" ;
+ TEXT [ finnish ] = "** Väärä aikamuoto **" ;
+ TEXT [ danish ] = "** Forkert tidsformat **" ;
+ TEXT [ french ] = "** Format d'heure erroné **" ;
+ TEXT [ swedish ] = "** Fel tidsformat **" ;
+ TEXT [ dutch ] = "** Foutief tijdformaat **" ;
+ TEXT [ spanish ] = "** Formato de hora erróneo **" ;
+ TEXT [ english_us ] = "** Wrong time format **" ;
+ TEXT = "** Falsches Zeitformat **" ;
+ TEXT[ chinese_simplified ] = "** ´íÎóµÄʱ¼ä¸ñʽ **";
+ TEXT[ russian ] = "** Íåïðàâèëüíûé ôîðìàò âðåìåíè **";
+ TEXT[ polish ] = "** Nieprawid³owy format czasu **";
+ TEXT[ japanese ] = "**³‚µ‚­‚È‚¢ŽžŠÔ‚Ì‘Ž®**";
+ TEXT[ chinese_traditional ] = "** ¿ù»~®É¶¡®æ¦¡ **";
+ TEXT[ arabic ] = "** ÊäÓíÞ æÞÊ ÎÇØÆ **";
+ TEXT[ greek ] = "** ËÜèïò ìïñöÞ ÷ñüíïõ **";
+ TEXT[ korean ] = "**À߸øµÈ ½Ã°£ ¼­½Ä **";
+ TEXT[ turkish ] = "** Yanlýþ zaman formatý **";
+ TEXT[ language_user1 ] = " ";
+ };
+ String STR_CALC_DEFAULT
+ {
+ TEXT [ English ] = "** Error **" ;
+ TEXT [ norwegian ] = "** Feil **" ;
+ TEXT [ italian ] = "** Errore **" ;
+ TEXT [ portuguese_brazilian ] = "** Erro **" ;
+ TEXT [ portuguese ] = "** Erro **" ;
+ TEXT [ finnish ] = "** Virhe **" ;
+ TEXT [ danish ] = "** Fejl **" ;
+ TEXT [ french ] = "** Erreur **" ;
+ TEXT [ swedish ] = "** Fel **" ;
+ TEXT [ dutch ] = "** Fout **" ;
+ TEXT [ spanish ] = "** Error **" ;
+ TEXT [ english_us ] = "** Error **" ;
+ TEXT = "** Fehler **" ;
+ TEXT[ chinese_simplified ] = "**´íÎó **";
+ TEXT[ russian ] = "** Îøèáêà **";
+ TEXT[ polish ] = "** B³¹d **";
+ TEXT[ japanese ] = "**´×°**";
+ TEXT[ chinese_traditional ] = "**¿ù»~ **";
+ TEXT[ arabic ] = "** ÎØÃ **";
+ TEXT[ greek ] = "** ÓöÜëìá **";
+ TEXT[ korean ] = "**¿À·ù **";
+ TEXT[ turkish ] = "** Hata **";
+ TEXT[ language_user1 ] = " ";
+ };
+ String STR_CALC_ERROR
+ {
+ TEXT = "** Fehlerhafter Ausdruck **" ;
+ TEXT [ English ] = "** Error in expression **" ;
+ TEXT [ norwegian ] = "** Error in expression **" ;
+ TEXT [ italian ] = "** Errore nell'espressione **" ;
+ TEXT [ portuguese_brazilian ] = "** Erro na expressão **" ;
+ TEXT [ portuguese ] = "** Expressão errada **" ;
+ TEXT [ finnish ] = "** Virhe lausekkeessa **" ;
+ TEXT [ danish ] = "** Fejlagtigt udtryk **" ;
+ TEXT [ french ] = "** Expression erronée **" ;
+ TEXT [ swedish ] = "** Felaktigt uttryck **" ;
+ TEXT [ dutch ] = "** Foutieve uitdrukking **" ;
+ TEXT [ spanish ] = "** Expresión errónea **" ;
+ TEXT [ english_us ] = "** Expression is faulty **" ;
+ TEXT[ chinese_simplified ] = "** ´íÎóµÄ±í´ïʽ **";
+ TEXT[ russian ] = "** Îøèáêè â âûðàæåíèè **";
+ TEXT[ polish ] = "** Nieprawid³owe wyra¿enie **";
+ TEXT[ japanese ] = "**ŠÔˆá‚Á‚½•\\Œ»**";
+ TEXT[ chinese_traditional ] = "** ¿ù»~ªºªí¹F¦¡ **";
+ TEXT[ arabic ] = "** ÊÚÈíÑ ÎÇØÆ **";
+ TEXT[ greek ] = "** ÅóöáëìÝíç Ýêöñáóç **";
+ TEXT[ korean ] = "**½ÄÀÌ À߸øµÇ¾ú½À´Ï´Ù **";
+ TEXT[ turkish ] = "** Yanlýþ ifade **";
+ TEXT[ language_user1 ] = " ";
+ };
+ String STR_GETREFFLD_UP
+ {
+ TEXT = "oben" ;
+ TEXT [ English ] = "above" ;
+ Text [ dutch ] = "boven" ;
+ Text [ english_us ] = "above" ;
+ Text [ italian ] = "Sopra" ;
+ Text [ spanish ] = "arriba" ;
+ Text [ french ] = "en haut" ;
+ Text [ swedish ] = "över" ;
+ Text [ danish ] = "foroven" ;
+ Text [ portuguese ] = "acima" ;
+ Text [ portuguese_brazilian ] = "oben" ;
+ Text[ chinese_simplified ] = "ÉÏ";
+ Text[ russian ] = "ââåðõó";
+ Text[ polish ] = "w górze";
+ Text[ japanese ] = "ã";
+ Text[ chinese_traditional ] = "¤W";
+ Text[ arabic ] = "ÃÚáì";
+ Text[ greek ] = "ðÜíù";
+ Text[ korean ] = "À§¿¡";
+ Text[ turkish ] = "üst";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_GETREFFLD_DOWN
+ {
+ TEXT = "unten" ;
+ TEXT [ English ] = "below" ;
+ Text [ dutch ] = "beneden" ;
+ Text [ english_us ] = "below" ;
+ Text [ italian ] = "Sotto" ;
+ Text [ spanish ] = "abajo" ;
+ Text [ french ] = "en bas" ;
+ Text [ swedish ] = "under" ;
+ Text [ danish ] = "forneden" ;
+ Text [ portuguese ] = "abaixo" ;
+ Text [ portuguese_brazilian ] = "unten" ;
+ Text[ chinese_simplified ] = "ÏÂ";
+ Text[ russian ] = "âíèçó";
+ Text[ polish ] = "w dole";
+ Text[ japanese ] = "‰º";
+ Text[ chinese_traditional ] = "¤U";
+ Text[ arabic ] = "ÃÓÝá";
+ Text[ greek ] = "êÜôù";
+ Text[ korean ] = "¾Æ·¡";
+ Text[ turkish ] = "alt";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ALLPAGE_HEADFOOT
+ {
+ TEXT = "Alle" ;
+ TEXT [ English ] = "All" ;
+ Text [ english_us ] = "All" ;
+ Text [ italian ] = "Tutti" ;
+ Text [ spanish ] = "Todos" ;
+ Text [ french ] = "Tous" ;
+ Text [ dutch ] = "alle" ;
+ Text [ swedish ] = "Alla" ;
+ Text [ danish ] = "Alle" ;
+ Text [ portuguese ] = "Todos" ;
+ Text [ portuguese_brazilian ] = "Alle" ;
+ 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 STR_TEMPLATE_NONE
+ {
+ Text = "keine" ;
+ Text [ ENGLISH ] = "none" ;
+ Text [ dutch ] = "geen" ;
+ Text [ english_us ] = "None" ;
+ Text [ swedish ] = "ingen" ;
+ Text [ danish ] = "Ingen" ;
+ Text [ italian ] = "Senza" ;
+ Text [ spanish ] = "Ninguno" ;
+ Text [ french ] = "Aucun(e)" ;
+ Text [ portuguese_brazilian ] = "keine" ;
+ Text [ portuguese ] = "Nenhum" ;
+ 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_FIELD_FIXED
+ {
+ TEXT = "(fix)" ;
+ TEXT [ English ] = "(fix)" ;
+ TEXT [ norwegian ] = "(fix)" ;
+ TEXT [ italian ] = "(fissa)" ;
+ TEXT [ portuguese_brazilian ] = "(fix)" ;
+ TEXT [ portuguese ] = "(fixa)" ;
+ TEXT [ finnish ] = "(vakio)" ;
+ TEXT [ danish ] = "(fast)" ;
+ TEXT [ french ] = "(fixe)" ;
+ TEXT [ swedish ] = "(fix)" ;
+ TEXT [ dutch ] = "(vast)" ;
+ TEXT [ spanish ] = "(fija)" ;
+ TEXT [ english_us ] = "(fixed)" ;
+ TEXT[ chinese_simplified ] = "(¹Ì¶¨)";
+ TEXT[ russian ] = "(ôèêñ.)";
+ TEXT[ polish ] = "(sta³y)";
+ TEXT[ japanese ] = "(•ÏX•s‰Â)";
+ TEXT[ chinese_traditional ] = "(©T©w)";
+ TEXT[ arabic ] = "(ËÇÈÊ)";
+ TEXT[ greek ] = "(óôáèåñÜ)";
+ TEXT[ korean ] = "(°íÁ¤µÊ)";
+ TEXT[ turkish ] = "(sabit)";
+ TEXT[ language_user1 ] = " ";
+ };
+ String STR_TOI
+ {
+ TEXT = "Stichwortverzeichnis" ;
+ TEXT [ English ] = "Index" ;
+ TEXT [ norwegian ] = "Stikkordregister" ;
+ TEXT [ italian ] = "Indice analitico" ;
+ TEXT [ portuguese_brazilian ] = "Índice" ;
+ TEXT [ portuguese ] = "Índice remissivo" ;
+ TEXT [ finnish ] = "Hakemisto" ;
+ TEXT [ danish ] = "Stikordsregister" ;
+ TEXT [ french ] = "Index lexical" ;
+ TEXT [ swedish ] = "Sakregister" ;
+ TEXT [ dutch ] = "Index" ;
+ TEXT [ spanish ] = "Índice alfabético" ;
+ TEXT [ english_us ] = "Alphabetical Index" ;
+ TEXT[ chinese_simplified ] = "Ë÷Òý";
+ TEXT[ russian ] = "Ïðåäìåòíûé óêàçàòåëü";
+ TEXT[ polish ] = "Zestaw hase³";
+ TEXT[ japanese ] = "õˆø";
+ TEXT[ chinese_traditional ] = "¯Á¤Þ¥Ø¿ý";
+ TEXT[ arabic ] = "ÝåÑÓ ÃÈÌÏí";
+ TEXT[ greek ] = "ÅõñåôÞñéï ëÝîåùí";
+ TEXT[ korean ] = "¾ËÆĺª¼øÀÇ »öÀÎ";
+ TEXT[ turkish ] = "Alfabetik dizin";
+ TEXT[ language_user1 ] = " ";
+ };
+
+ String STR_TOU
+ {
+ TEXT = "Benutzerdefiniert" ;
+ TEXT [ English ] = "User-defined" ;
+ TEXT [ norwegian ] = "Brukerdefinert tabell for" ;
+ TEXT [ italian ] = "Indice personalizzato" ;
+ TEXT [ portuguese_brazilian ] = "Tabela definida pelo usuário de" ;
+ TEXT [ portuguese ] = "Personalizado" ;
+ TEXT [ finnish ] = "Käyttäjän määrittämä taulukko: " ;
+ TEXT [ danish ] = "Brugerdefineret" ;
+ TEXT [ french ] = "Index personnalisé" ;
+ TEXT [ swedish ] = "Användardefinierad" ;
+ TEXT [ dutch ] = "Gebruikersindex" ;
+ TEXT [ spanish ] = "Índice del usuario" ;
+ TEXT [ english_us ] = "User-Defined" ;
+ TEXT[ chinese_simplified ] = "ʹÓÃÕß×Ô¶¨";
+ TEXT[ russian ] = "Çàäàíî ïîëüçîâàòåëåì";
+ TEXT[ polish ] = "Zdefiniowany przez u¿ytkownika";
+ TEXT[ japanese ] = "Õ°»Þ°’è‹`";
+ TEXT[ chinese_traditional ] = "¦Û­q";
+ TEXT[ arabic ] = "ãõÚÑøóÝ ãä ÞÈá ÇáãÓÊÎÏã";
+ TEXT[ greek ] = "ÏñéóìÝíï áðü ÷ñÞóôç";
+ TEXT[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ »öÀÎ";
+ TEXT[ turkish ] = "Kullanýcý tanýmlý";
+ TEXT[ language_user1 ] = " ";
+ };
+
+ String STR_TOC
+ {
+ TEXT = "Inhaltsverzeichnis" ;
+ TEXT [ English ] = "Table of contents" ;
+ TEXT [ norwegian ] = "Innholdsfortegnelse" ;
+ TEXT [ italian ] = "Indice generale" ;
+ TEXT [ portuguese_brazilian ] = "Tabela de conteúdos" ;
+ TEXT [ portuguese ] = "Índice geral" ;
+ TEXT [ finnish ] = "Sisällysluettelo" ;
+ TEXT [ danish ] = "Indholdsfortegnelse" ;
+ TEXT [ french ] = "Table des matières" ;
+ TEXT [ swedish ] = "Innehållsförteckning" ;
+ TEXT [ dutch ] = "Inhoudsopgave" ;
+ TEXT [ spanish ] = "Índice de contenido" ;
+ TEXT [ english_us ] = "Table of Contents" ;
+ TEXT[ chinese_simplified ] = "ÄÚÈÝĿ¼";
+ TEXT[ language_user1 ] = " ";
+ TEXT[ russian ] = "Îãëàâëåíèå";
+ TEXT[ polish ] = "Spis treœci";
+ TEXT[ japanese ] = "–ÚŽŸ";
+ TEXT[ chinese_traditional ] = "¤º®e¥Ø¿ý";
+ TEXT[ arabic ] = "ÝåÑÓ ÇáãÍÊæíÇÊ";
+ TEXT[ greek ] = "ÊáôÜëïãïò ðåñéå÷ïìÝíùí";
+ TEXT[ korean ] = "³»¿ë Ç¥";
+ TEXT[ turkish ] = "Ýçindekiler dizini";
+ };
+
+ String STR_TOX_AUTH
+ {
+ TEXT = "Literaturverzeichnis" ;
+ TEXT [ English ] = "Table of authorities" ;
+ TEXT[ english_us ] = "Bibliography";
+ TEXT[ portuguese ] = "Bibliografia";
+ TEXT[ russian ] = "Ñïèñîê ëèòåðàòóðû";
+ TEXT[ greek ] = "Âéâëéïãñáößá";
+ TEXT[ dutch ] = "Literatuurlijst";
+ TEXT[ french ] = "Bibliographie";
+ TEXT[ spanish ] = "Bibliografía";
+ TEXT[ italian ] = "Bibliografia";
+ TEXT[ danish ] = "Litteraturliste";
+ TEXT[ swedish ] = "Litteraturförteckning";
+ TEXT[ polish ] = "Spis literatury";
+ TEXT[ portuguese_brazilian ] = "Table of authorities";
+ TEXT[ japanese ] = "ŽQl•¶Œ£•\\";
+ TEXT[ korean ] = "Âü°í¹®Çå";
+ TEXT[ chinese_simplified ] = "ÎÄÏ×Ŀ¼";
+ TEXT[ chinese_traditional ] = "¤åÄm¥Ø¿ý";
+ TEXT[ arabic ] = "ÝåÑÓ ÇáãÑÇÌÚ";
+ TEXT[ turkish ] = "Kaynakça dizini";
+ TEXT[ language_user1 ] = " ";
+ };
+ String STR_TOX_TBL
+ {
+ TEXT = "Tabellenverzeichnis" ;
+ TEXT [ English ] = "Table of tables" ;
+ TEXT[ english_us ] = "Index of Tables";
+ TEXT[ portuguese ] = "Índice de tabelas";
+ TEXT[ russian ] = "Ñïèñîê òàáëèö";
+ TEXT[ greek ] = "ÅõñåôÞñéï ðéíÜêùí";
+ TEXT[ dutch ] = "Tabellenregister";
+ TEXT[ french ] = "Index des tables";
+ TEXT[ spanish ] = "Índice de tablas";
+ TEXT[ italian ] = "Indice delle tabelle";
+ TEXT[ danish ] = "Tabeloversigt";
+ TEXT[ swedish ] = "Tabellförteckning";
+ TEXT[ polish ] = "Spis tabel";
+ TEXT[ portuguese_brazilian ] = "Table of tables";
+ TEXT[ japanese ] = "•\\‚Ìõˆø";
+ TEXT[ korean ] = "Ç¥ »öÀÎ";
+ TEXT[ chinese_simplified ] = "±í¸ñĿ¼";
+ TEXT[ chinese_traditional ] = "ªí®æ¥Ø¿ý";
+ TEXT[ arabic ] = "ÝåÑÓ ÇáÌÏÇæá";
+ TEXT[ turkish ] = "Tablo dizini";
+ TEXT[ language_user1 ] = " ";
+ };
+ String STR_TOX_OBJ
+ {
+ TEXT = "Objektverzeichnis" ;
+ TEXT [ English ] = "Table of objects" ;
+ TEXT[ english_us ] = "Table of Objects";
+ TEXT[ portuguese ] = "Índice de objectos";
+ TEXT[ russian ] = "Ñïèñîê îáúåêòîâ";
+ TEXT[ greek ] = "ÊáôÜëïãïò áíôéêåéìÝíùí";
+ TEXT[ dutch ] = "Objectenregister";
+ TEXT[ french ] = "Index des objets";
+ TEXT[ spanish ] = "Índice de objetos";
+ TEXT[ italian ] = "Indice degli oggetti";
+ TEXT[ danish ] = "Objektindeks";
+ TEXT[ swedish ] = "Objektförteckning";
+ TEXT[ polish ] = "Spis obiektów";
+ TEXT[ portuguese_brazilian ] = "Table of objects";
+ TEXT[ japanese ] = "µÌÞ¼Þª¸Ä‚Ìõˆø";
+ TEXT[ korean ] = "°³Ã¼ »öÀÎ";
+ TEXT[ chinese_simplified ] = "¶ÔÏóĿ¼";
+ TEXT[ chinese_traditional ] = "ª«¥ó¥Ø¿ý";
+ TEXT[ arabic ] = "ÝåÑÓ ÇáßÇÆäÇÊ";
+ TEXT[ turkish ] = "Nesne dizini";
+ TEXT[ language_user1 ] = " ";
+ };
+ String STR_TOX_ILL
+ {
+ TEXT = "Abbildungsverzeichnis" ;
+ TEXT [ English ] = "Table of illustrations" ;
+ TEXT[ english_us ] = "Illustration Index";
+ TEXT[ portuguese ] = "Índice de ilustrações";
+ TEXT[ russian ] = "Ñïèñîê ðèñóíêîâ";
+ TEXT[ greek ] = "ÊáôÜëïãïò åéêüíùí";
+ TEXT[ dutch ] = "Afbeeldingenregister";
+ TEXT[ french ] = "Index des illustrations";
+ TEXT[ spanish ] = "Índice de ilustraciones";
+ TEXT[ italian ] = "Indice delle illustrazioni";
+ TEXT[ danish ] = "Figuroversigt";
+ TEXT[ swedish ] = "Illustrationsförteckning";
+ TEXT[ polish ] = "Spis ilustracji";
+ TEXT[ portuguese_brazilian ] = "Table of illustrations";
+ TEXT[ japanese ] = "}‚Ìõˆø";
+ TEXT[ korean ] = "»ðÈ­ »öÀÎ";
+ TEXT[ chinese_simplified ] = "²åͼĿ¼";
+ TEXT[ chinese_traditional ] = "´¡¹Ï¥Ø¿ý";
+ TEXT[ arabic ] = "ÝåÑÓ ÇáÕæÑ ÇáÅíÖÇÍíÉ";
+ TEXT[ turkish ] = "Resim dizini";
+ TEXT[ language_user1 ] = " ";
+ };
+
+
+ // SubType DocInfo
+ //
+ String FLD_DOCINFO_TITEL
+ {
+ TEXT = "Titel" ;
+ TEXT [ English ] = "Title" ;
+ TEXT [ norwegian ] = "Tittel" ;
+ TEXT [ italian ] = "Titolo" ;
+ TEXT [ portuguese_brazilian ] = "Título" ;
+ TEXT [ portuguese ] = "Capitulo" ;
+ TEXT [ finnish ] = "Otsikko" ;
+ TEXT [ danish ] = "Titel" ;
+ TEXT [ french ] = "Titre" ;
+ TEXT [ swedish ] = "Rubrik" ;
+ 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[ greek ] = "Ôßôëïò";
+ TEXT[ korean ] = "Á¦¸ñ";
+ TEXT[ turkish ] = "Baþlýk";
+ TEXT[ language_user1 ] = " ";
+ };
+ String FLD_DOCINFO_THEMA
+ {
+ TEXT = "Thema" ;
+ TEXT [ English ] = "Subject" ;
+ TEXT [ norwegian ] = "Emne" ;
+ TEXT [ italian ] = "Argomento" ;
+ TEXT [ portuguese_brazilian ] = "Assunto" ;
+ TEXT [ portuguese ] = "Assunto" ;
+ TEXT [ finnish ] = "Aihe" ;
+ TEXT [ danish ] = "Emne" ;
+ TEXT [ french ] = "Sujet" ;
+ TEXT [ swedish ] = "Tema" ;
+ TEXT [ dutch ] = "Onderwerp" ;
+ TEXT [ spanish ] = "Tema" ;
+ TEXT [ english_us ] = "Subject" ;
+ 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 FLD_DOCINFO_KEYS
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Schlüsselwörter : Schl³sselw÷rter */
+ TEXT = "Schlüsselwörter" ;
+ TEXT [ English ] = "Keywords" ;
+ TEXT [ norwegian ] = "Nøkkelord" ;
+ TEXT [ italian ] = "Parole chiave" ;
+ TEXT [ portuguese_brazilian ] = "Palavras-chave" ;
+ TEXT [ portuguese ] = "Palavras-chave" ;
+ TEXT [ finnish ] = "Avainsanat" ;
+ TEXT [ danish ] = "Nøgleord" ;
+ TEXT [ french ] = "Mots-clés" ;
+ TEXT [ swedish ] = "Nyckelord" ;
+ TEXT [ dutch ] = "Sleutelwoorden" ;
+ TEXT [ spanish ] = "Palabras clave" ;
+ TEXT [ english_us ] = "Keywords" ;
+ 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ük";
+ TEXT[ language_user1 ] = " ";
+ };
+ String FLD_DOCINFO_COMMENT
+ {
+ TEXT = "Beschreibung" ;
+ TEXT [ English ] = "Description" ;
+ TEXT [ norwegian ] = "Beskrivelse" ;
+ TEXT [ italian ] = "Descrizione" ;
+ TEXT [ portuguese_brazilian ] = "Descrição" ;
+ TEXT [ portuguese ] = "Descrição" ;
+ TEXT [ finnish ] = "Kuvaus" ;
+ TEXT [ danish ] = "Beskrivelse" ;
+ TEXT [ french ] = "Description" ;
+ TEXT [ swedish ] = "Beskrivning" ;
+ TEXT [ dutch ] = "Beschrijving" ;
+ TEXT [ spanish ] = "Descripción" ;
+ TEXT [ english_us ] = "Description" ;
+ TEXT[ chinese_simplified ] = "˵Ã÷";
+ TEXT[ russian ] = "Îïèñàíèå";
+ TEXT[ polish ] = "Opis";
+ TEXT[ japanese ] = "ºÒÝÄ";
+ TEXT[ chinese_traditional ] = "´y­z";
+ TEXT[ arabic ] = "ÇáæÕÝ";
+ TEXT[ greek ] = "ÐåñéãñáöÞ";
+ TEXT[ korean ] = "¼³¸í";
+ TEXT[ turkish ] = "Taným";
+ TEXT[ language_user1 ] = " ";
+ };
+ String FLD_DOCINFO_INFO1
+ {
+ TEXT = "Info 0" ;
+ TEXT [ English ] = "Info 0" ;
+ TEXT [ norwegian ] = "Info 0" ;
+ TEXT [ italian ] = "Info 0" ;
+ TEXT [ portuguese_brazilian ] = "Informação 0" ;
+ TEXT [ portuguese ] = "Informação 0" ;
+ TEXT [ finnish ] = "Tieto 0" ;
+ TEXT [ danish ] = "Info 0" ;
+ TEXT [ french ] = "Info 0" ;
+ TEXT [ swedish ] = "Info 0" ;
+ TEXT [ dutch ] = "Info 0" ;
+ TEXT [ spanish ] = "Info 0" ;
+ TEXT [ english_us ] = "Info 0" ;
+ TEXT[ chinese_simplified ] = "ÐÅÏ¢ 0";
+ TEXT[ russian ] = "Èíôî 0";
+ TEXT[ polish ] = "Informacja 0";
+ TEXT[ japanese ] = "î•ñ 0";
+ TEXT[ chinese_traditional ] = "¸ê°T 0";
+ TEXT[ arabic ] = "ãÚáæãÉ 0";
+ TEXT[ greek ] = "Ðëçñïöïñßåò 0";
+ TEXT[ korean ] = "Á¤º¸ 0";
+ TEXT[ turkish ] = "Bilgi 0";
+ TEXT[ language_user1 ] = " ";
+ };
+ String FLD_DOCINFO_INFO2
+ {
+ TEXT = "Info 1" ;
+ TEXT [ English ] = "Info 1" ;
+ TEXT [ norwegian ] = "Info 1" ;
+ TEXT [ italian ] = "Info 1" ;
+ TEXT [ portuguese_brazilian ] = "Informação 1" ;
+ TEXT [ portuguese ] = "Informação 1" ;
+ TEXT [ finnish ] = "Tieto 1" ;
+ TEXT [ danish ] = "Info 1" ;
+ TEXT [ french ] = "Info 1" ;
+ TEXT [ swedish ] = "Info 1" ;
+ TEXT [ dutch ] = "Info 1" ;
+ TEXT [ spanish ] = "Info 1" ;
+ TEXT [ english_us ] = "Info 1" ;
+ TEXT[ chinese_simplified ] = "ÐÅÏ¢ 1";
+ TEXT[ russian ] = "Èíôî 1";
+ TEXT[ polish ] = "Informacja 1";
+ TEXT[ japanese ] = "î•ñ 1";
+ TEXT[ chinese_traditional ] = "¸ê°T 1";
+ TEXT[ arabic ] = "ãÚáæãÉ 1";
+ TEXT[ greek ] = "Ðëçñïöïñßåò 1";
+ TEXT[ korean ] = "Á¤º¸ 1";
+ TEXT[ turkish ] = "Bilgi 1";
+ TEXT[ language_user1 ] = " ";
+ };
+ String FLD_DOCINFO_INFO3
+ {
+ TEXT = "Info 2" ;
+ TEXT [ English ] = "Info 2" ;
+ TEXT [ norwegian ] = "Info 2" ;
+ TEXT [ italian ] = "Info 2" ;
+ TEXT [ portuguese_brazilian ] = "Informação 2" ;
+ TEXT [ portuguese ] = "Informação 2" ;
+ TEXT [ finnish ] = "Tieto 2" ;
+ TEXT [ danish ] = "Info 2" ;
+ TEXT [ french ] = "Info 2" ;
+ TEXT [ swedish ] = "Info 2" ;
+ TEXT [ dutch ] = "Info 2" ;
+ TEXT [ spanish ] = "Info 2" ;
+ TEXT [ english_us ] = "Info 2" ;
+ TEXT[ chinese_simplified ] = "ÐÅÏ¢ 2";
+ TEXT[ russian ] = "Èíôî 2";
+ TEXT[ polish ] = "Informacja 2";
+ TEXT[ japanese ] = "î•ñ 2";
+ TEXT[ chinese_traditional ] = "¸ê°T 2";
+ TEXT[ arabic ] = "ãÚáæãÉ 2";
+ TEXT[ greek ] = "Ðëçñïöïñßåò 2";
+ TEXT[ korean ] = "Á¤º¸ 2";
+ TEXT[ turkish ] = "Bilgi 2";
+ TEXT[ language_user1 ] = " ";
+ };
+ String FLD_DOCINFO_INFO4
+ {
+ TEXT = "Info 3" ;
+ TEXT [ English ] = "Info 3" ;
+ TEXT [ norwegian ] = "Info 3" ;
+ TEXT [ italian ] = "Info 3" ;
+ TEXT [ portuguese_brazilian ] = "Informação 3" ;
+ TEXT [ portuguese ] = "Informação 3" ;
+ TEXT [ finnish ] = "Tieto 3" ;
+ TEXT [ danish ] = "Info 3" ;
+ TEXT [ french ] = "Info 3" ;
+ TEXT [ swedish ] = "Info 3" ;
+ TEXT [ dutch ] = "Info 3" ;
+ TEXT [ spanish ] = "Info 3" ;
+ TEXT [ english_us ] = "Info 3" ;
+ TEXT[ chinese_simplified ] = "ÐÅÏ¢ 3";
+ TEXT[ russian ] = "Èíôî 3";
+ TEXT[ polish ] = "Informacja 3";
+ TEXT[ japanese ] = "î•ñ 3";
+ TEXT[ chinese_traditional ] = "¸ê°T 3";
+ TEXT[ arabic ] = "ãÚáæãÉ 3";
+ TEXT[ greek ] = "Ðëçñïöïñßåò 3";
+ TEXT[ korean ] = "Á¤º¸ 3";
+ TEXT[ turkish ] = "Bilgi 3";
+ TEXT[ language_user1 ] = " ";
+ };
+ String FLD_DOCINFO_CREATE
+ {
+ TEXT = "Erzeugung" ;
+ TEXT [ English ] = "Created" ;
+ TEXT [ norwegian ] = "Laget" ;
+ TEXT [ italian ] = "Creato" ;
+ TEXT [ portuguese_brazilian ] = "Criado" ;
+ TEXT [ portuguese ] = "Criado" ;
+ TEXT [ finnish ] = "Luotu" ;
+ TEXT [ danish ] = "Oprettet" ;
+ TEXT [ french ] = "Création" ;
+ TEXT [ swedish ] = "Skapad" ;
+ TEXT [ dutch ] = "Gemaakt" ;
+ TEXT [ spanish ] = "Creación" ;
+ TEXT [ english_us ] = "Created" ;
+ TEXT[ chinese_simplified ] = "½¨Á¢";
+ TEXT[ russian ] = "Ñîçäàíèå";
+ TEXT[ polish ] = "Utworzenie";
+ TEXT[ japanese ] = "ì¬";
+ TEXT[ chinese_traditional ] = "¥Í¦¨";
+ TEXT[ arabic ] = "ÅäÔÇÁ";
+ TEXT[ greek ] = "Äçìéïõñãßá";
+ TEXT[ korean ] = "¸¸µé¾îÁ³½À´Ï´Ù.";
+ TEXT[ turkish ] = "Oluþturma";
+ TEXT[ language_user1 ] = " ";
+ };
+ String FLD_DOCINFO_CHANGE
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Änderung : Žnderung */
+ TEXT = "Änderung" ;
+ TEXT [ English ] = "Changed" ;
+ TEXT [ norwegian ] = "Endret" ;
+ TEXT [ italian ] = "Modifica" ;
+ TEXT [ portuguese_brazilian ] = "Modificado" ;
+ TEXT [ portuguese ] = "Alteração" ;
+ TEXT [ finnish ] = "Muokattu" ;
+ TEXT [ danish ] = "Ændring" ;
+ TEXT [ french ] = "Modification" ;
+ TEXT [ swedish ] = "Ändring" ;
+ TEXT [ dutch ] = "Wijziging" ;
+ TEXT [ spanish ] = "Modificación" ;
+ TEXT [ english_us ] = "Modified" ;
+ TEXT[ chinese_simplified ] = "¸ü¸Ä";
+ TEXT[ russian ] = "Èçìåíåíèå";
+ TEXT[ polish ] = "Modyfikacja";
+ TEXT[ japanese ] = "•ÏX";
+ TEXT[ chinese_traditional ] = "Åܧó";
+ TEXT[ arabic ] = "ÊÚÏíá";
+ TEXT[ greek ] = "ÁëëáãÞ";
+ TEXT[ korean ] = "¼öÁ¤µÊ";
+ TEXT[ turkish ] = "Deðiþtirme";
+ TEXT[ language_user1 ] = " ";
+ };
+ String FLD_DOCINFO_PRINT
+ {
+ TEXT = "Letzter Druck" ;
+ TEXT [ English ] = "Printed" ;
+ TEXT [ norwegian ] = "Skrevet ut" ;
+ TEXT [ italian ] = "Ultima stampa" ;
+ TEXT [ portuguese_brazilian ] = "Impresso" ;
+ TEXT [ portuguese ] = "Última impressão" ;
+ TEXT [ finnish ] = "Tulostettu" ;
+ TEXT [ danish ] = "Sidste udskrift" ;
+ TEXT [ french ] = "Dernière impression" ;
+ TEXT [ swedish ] = "Senaste utskrift" ;
+ TEXT [ dutch ] = "Laatste afdruk" ;
+ TEXT [ spanish ] = "Última impresión" ;
+ TEXT [ english_us ] = "Last printed" ;
+ TEXT[ chinese_simplified ] = "ÉÏÒ»´Î´òÓ¡";
+ TEXT[ russian ] = "Ïîñëåäíÿÿ ðàñïå÷àòêà";
+ TEXT[ polish ] = "Ostatni wydruk";
+ TEXT[ japanese ] = "ÅŒã‚É‚µ‚½ˆóü";
+ TEXT[ chinese_traditional ] = "¤W¤@¦¸¦C¦L";
+ TEXT[ arabic ] = "ÇáØÈÇÚÉ ÇáÃÎíÑÉ";
+ TEXT[ greek ] = "Ôåëåõôáßá åêôýðùóç";
+ TEXT[ korean ] = "¸¶Áö¸· Àμâ";
+ TEXT[ turkish ] = "Son yazdýrma";
+ TEXT[ language_user1 ] = " ";
+ };
+ String FLD_DOCINFO_DOCNO
+ {
+ TEXT = "Dokumentnummer" ;
+ TEXT [ English ] = "Document number" ;
+ Text [ dutch ] = "Documentnummer" ;
+ Text [ english_us ] = "Document number" ;
+ Text [ italian ] = "Numero di documento" ;
+ Text [ spanish ] = "Número del documento" ;
+ Text [ french ] = "Numéro du document" ;
+ Text [ swedish ] = "Dokumentnummer" ;
+ Text [ danish ] = "Dokumentnummer" ;
+ Text [ portuguese ] = "Número do documento" ;
+ Text [ portuguese_brazilian ] = "Dokumentnummer" ;
+ Text[ chinese_simplified ] = "ÎĵµºÅÂë";
+ Text[ russian ] = "Íîìåð äîêóìåíòà";
+ Text[ polish ] = "Numer dokumentu";
+ Text[ japanese ] = "ÄÞ·­ÒÝĔԆ";
+ Text[ chinese_traditional ] = "¤å¥ó¸¹½X";
+ Text[ arabic ] = "ÑÞã ÇáãÓÊäÏ";
+ Text[ greek ] = "Áñéèìüò åããñÜöïõ";
+ Text[ korean ] = "¹®¼­ ¹øÈ£";
+ Text[ turkish ] = "Belge numarasý";
+ Text[ language_user1 ] = " ";
+ };
+ String FLD_DOCINFO_EDIT
+ {
+ TEXT = "Bearbeitungszeit" ;
+ TEXT [ English ] = "Edit time" ;
+ Text [ english_us ] = "Editing time" ;
+ Text [ italian ] = "Tempo di modifica" ;
+ Text [ spanish ] = "Tiempo de edición" ;
+ Text [ french ] = "Durée d'édition" ;
+ Text [ dutch ] = "Bewerkingstijd" ;
+ Text [ swedish ] = "Redigeringstid" ;
+ Text [ danish ] = "Redigeringstid" ;
+ Text [ portuguese ] = "Tempo de edição" ;
+ Text [ portuguese_brazilian ] = "Bearbeitungszeit" ;
+ Text[ chinese_simplified ] = "±à¼­Ê±¼ä";
+ Text[ russian ] = "Âðåìÿ îáðàáîòêè";
+ Text[ polish ] = "Czas edycji";
+ Text[ japanese ] = "•ÒWŽžŠÔ";
+ Text[ chinese_traditional ] = "½s¿è®É¶¡";
+ Text[ arabic ] = "æÞÊ ÇáÊÍÑíÑ";
+ Text[ greek ] = "×ñüíïò åðåîåñãáóßáò";
+ Text[ korean ] = "ÆíÁý ½Ã°£";
+ Text[ turkish ] = "Düzenleme süresi";
+ Text[ language_user1 ] = " ";
+ };
+ BITMAP BMP_FRAME_ANCHOR { FILE = "anchor.bmp" ; };
+ BITMAP BMP_FRAME_DRAG_ANCHOR { FILE = "danchor.bmp" ; };
+};
+
+String STR_AUTH_TYPE_ARTICLE
+{
+ Text = "Zeitschriftenartikel" ;
+ Text [ ENGLISH ] = "Article" ;
+ Text[ english_us ] = "Magazine Article";
+ Text[ portuguese ] = "Artigo de revista";
+ Text[ russian ] = "Ñòàòüÿ èç ãàçåòû/æóðíàëà";
+ Text[ greek ] = "¢ñèñï ðåñéïäéêïý";
+ Text[ dutch ] = "Krantenartikel";
+ Text[ french ] = "Article (revue)";
+ Text[ spanish ] = "Artículo de revista";
+ Text[ italian ] = "Articolo di rivista";
+ Text[ danish ] = "Tidsskriftsartikel";
+ Text[ swedish ] = "Tidskriftsartikel";
+ Text[ polish ] = "Artyku³ czasopisma";
+ Text[ portuguese_brazilian ] = "Article";
+ Text[ japanese ] = "ŽGŽ‹LŽ–";
+ Text[ korean ] = "ÀâÁö ±â»ç";
+ Text[ chinese_simplified ] = "ÔÓÖ¾ÎÄÕÂ";
+ Text[ chinese_traditional ] = "Âø§Ó¤å³¹";
+ Text[ arabic ] = "ãÞÇáÉ ãÌáÉ";
+ Text[ turkish ] = "Dergi makalesi";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_BOOK
+{
+ Text = "Buch" ;
+ Text [ ENGLISH ] = "Book" ;
+ Text[ english_us ] = "Book";
+ Text[ portuguese ] = "Livro";
+ Text[ russian ] = "Êíèãà";
+ Text[ greek ] = "Âéâëßï";
+ Text[ dutch ] = "Boek";
+ Text[ french ] = "Livre";
+ Text[ spanish ] = "Libro";
+ Text[ italian ] = "Libro";
+ Text[ danish ] = "Bog";
+ Text[ swedish ] = "Bok";
+ Text[ polish ] = "Ksi¹¿ka";
+ Text[ portuguese_brazilian ] = "Book";
+ Text[ japanese ] = "–{";
+ Text[ korean ] = "Ã¥";
+ Text[ chinese_simplified ] = "Êé¼®";
+ Text[ chinese_traditional ] = "®ÑÄy";
+ Text[ arabic ] = "ßÊÇÈ";
+ Text[ turkish ] = "Kitap";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_BOOKLET
+{
+ Text = "Broschüre" ;
+ Text [ ENGLISH ] = "Booklet" ;
+ Text[ english_us ] = "Brochures";
+ Text[ portuguese ] = "Brochura";
+ Text[ russian ] = "Áðîøþðà";
+ Text[ greek ] = "Ìðñïóïýñá";
+ Text[ dutch ] = "Brochure";
+ Text[ french ] = "Brochure";
+ Text[ spanish ] = "Folleto";
+ Text[ italian ] = "Dépliant";
+ Text[ danish ] = "Brochure";
+ Text[ swedish ] = "Broschyr";
+ Text[ polish ] = "Broszura";
+ Text[ portuguese_brazilian ] = "Booklet";
+ Text[ japanese ] = "ÊßÝÌÚ¯Ä";
+ Text[ korean ] = "ÆÊÇ÷¿";
+ Text[ chinese_simplified ] = "С²á×Ó";
+ Text[ chinese_traditional ] = "¤p¤â¥U";
+ Text[ arabic ] = "ßõÊíÈ";
+ Text[ turkish ] = "Broþür";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_CONFERENCE
+{
+ Text = "Konferenzbericht" ;
+ Text [ ENGLISH ] = "Conference report" ;
+ Text[ english_us ] = "Conference proceedings";
+ Text[ portuguese ] = "Relatório de conferência";
+ Text[ russian ] = "Ïðîòîêîë ñîâåùàíèÿ";
+ Text[ greek ] = "ÁíáöïñÜ óýóêåøçò";
+ Text[ dutch ] = "Conferentierapport";
+ Text[ french ] = "Rapport de conférence";
+ Text[ spanish ] = "Informe de conferencia";
+ Text[ italian ] = "Rapporto sulla conferenza";
+ Text[ danish ] = "Konferencerapport";
+ Text[ swedish ] = "Konferensrapport";
+ Text[ polish ] = "Sprawozdanie z konferencji";
+ Text[ portuguese_brazilian ] = "Conference report";
+ Text[ japanese ] = "‰ï‹c•ñ";
+ Text[ korean ] = "ȸÀÇ ÀýÂ÷";
+ Text[ chinese_simplified ] = "ÌÖÂۻᱨ¸æ";
+ Text[ chinese_traditional ] = "·|½Í³ø§i";
+ Text[ arabic ] = "ÊÞÑíÑ Úä ãÄÊãÑ";
+ Text[ turkish ] = "Toplantý raporu";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_INBOOK
+{
+ Text = "Buchauszug" ;
+ Text [ ENGLISH ] = "Book extract" ;
+ Text[ english_us ] = "Book excerpt";
+ Text[ portuguese ] = "Extracto de livro";
+ Text[ russian ] = "Âûïèñêà èç êíèãè";
+ Text[ greek ] = "Áðüóðáóìá âéâëßïõ";
+ Text[ dutch ] = "Boekuittreksel";
+ Text[ french ] = "Extrait de livre";
+ Text[ spanish ] = "Extracto de libro";
+ Text[ italian ] = "Brano";
+ Text[ danish ] = "Boguddrag";
+ Text[ swedish ] = "Bokutdrag";
+ Text[ polish ] = "Wyci¹g z ksi¹¿ki";
+ Text[ portuguese_brazilian ] = "Book extract";
+ Text[ japanese ] = "´–{";
+ Text[ korean ] = "¹ßÃé";
+ Text[ chinese_simplified ] = "Ê鼮ժ¼ÎÄ";
+ Text[ chinese_traditional ] = "®ÑÄyªº¤Þ¥Î¤å";
+ Text[ arabic ] = "ãÞÊÈÓÇÊ ãä ßÊÇÈ";
+ Text[ turkish ] = "Kitap bölümü";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_INCOLLECTION
+{
+ Text = "Buchauszug mit Titel" ;
+ Text [ ENGLISH ] = "Book extract with title" ;
+ Text[ english_us ] = "Book excerpt with title";
+ Text[ portuguese ] = "Extracto do livro com título";
+ Text[ russian ] = "Âûïèñêà èç êíèãè ñ íàçâàíèåì";
+ Text[ greek ] = "Áðüóðáóìá âéâëßïõ ìå ôßôëï";
+ Text[ dutch ] = "Boekuittreksel met titel";
+ Text[ french ] = "Extrait de livre avec titre";
+ Text[ spanish ] = "Extracto de libro con título";
+ Text[ italian ] = "Brano con titolo";
+ Text[ danish ] = "Boguddrag med titel";
+ Text[ swedish ] = "Bokutdrag med titel";
+ Text[ polish ] = "Wyci¹g z ksi¹¿ki z tytu³em";
+ Text[ portuguese_brazilian ] = "Book extract with title";
+ Text[ japanese ] = "À²ÄÙ•t‚«‚Ì´–{";
+ Text[ korean ] = "Á¦¸ñÀÌ Àִ å¹ßÃé";
+ Text[ chinese_simplified ] = "×¢Ã÷±êÌâµÄÊ鼮ժ¼ÎÄ";
+ Text[ chinese_traditional ] = "ª`©ú¼ÐÃDªº®ÑÄy¤Þ¥Î¤å";
+ Text[ arabic ] = "ãÞÊÈÓÇÊ ãä ßÊÇÈ ÐÇÊ ÚäæÇä";
+ Text[ turkish ] = "Baþlýklý kitap bölümü";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_INPROCEEDINGS
+{
+ Text = "Tagungsbericht" ;
+ Text [ ENGLISH ] = "Proceedings report" ;
+ Text[ english_us ] = "Conference proceedings";
+ Text[ portuguese ] = "Relatório sobre reunião";
+ Text[ russian ] = "Îò÷åò çàñåäàíèÿ";
+ Text[ greek ] = "Ðñùôüêïëëï óõíåäñßáóçò";
+ Text[ dutch ] = "Notulen van vergadering";
+ Text[ french ] = "Rapport de congrès";
+ Text[ spanish ] = "Informe de reunión";
+ Text[ italian ] = "Rapporto sulla conferenza";
+ Text[ danish ] = "Kongresberetning";
+ Text[ swedish ] = "Konferensrapport";
+ Text[ polish ] = "Sprawozdanie z obrady";
+ Text[ portuguese_brazilian ] = "Proceedings report";
+ Text[ japanese ] = "‰ï•ñ";
+ Text[ korean ] = "ȸÀÇ ÀýÂ÷";
+ Text[ chinese_simplified ] = "»áÒ鱨¸æ";
+ Text[ chinese_traditional ] = "·|ij³ø§i";
+ Text[ arabic ] = "ÈÑæÊæßæá ÇÌÊãÇÚ";
+ Text[ turkish ] = "Konferans raporu";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_JOURNAL
+{
+ Text = "Zeitschrift" ;
+ Text [ ENGLISH ] = "Journal" ;
+ Text[ english_us ] = "Magazine";
+ Text[ portuguese ] = "Revista";
+ Text[ russian ] = "Æóðíàë";
+ Text[ greek ] = "Ðåñéïäéêü";
+ Text[ dutch ] = "Tijdschrift";
+ Text[ french ] = "Revue";
+ Text[ spanish ] = "Revista";
+ Text[ italian ] = "Rivista";
+ Text[ danish ] = "Tidsskrift";
+ Text[ swedish ] = "Tidskrift";
+ Text[ polish ] = "Czasopismo";
+ Text[ portuguese_brazilian ] = "Journal";
+ Text[ japanese ] = "ŽGŽ";
+ Text[ korean ] = "ÀâÁö";
+ Text[ chinese_simplified ] = "ÔÓÖ¾";
+ Text[ chinese_traditional ] = "Âø§Ó";
+ Text[ arabic ] = "ãÌáÉ";
+ Text[ turkish ] = "Dergi";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_MANUAL
+{
+ Text = "Techn. Dokumentation" ;
+ Text [ ENGLISH ] = "Manual" ;
+ Text[ english_us ] = "Techn. documentation";
+ Text[ portuguese ] = "Documentação técn.";
+ Text[ russian ] = "Òåõíè÷åñêàÿ äîêóìåíòàöèÿ";
+ Text[ greek ] = "Ôå÷íéêü åã÷åéñßäéï";
+ Text[ dutch ] = "Technische documentatie";
+ Text[ french ] = "Documentation technique";
+ Text[ spanish ] = "Manual";
+ Text[ italian ] = "Documentazione tecnica";
+ Text[ danish ] = "Teknisk dokumentation";
+ Text[ swedish ] = "Teknisk dokumentation";
+ Text[ polish ] = "Dokumentacja techn.";
+ Text[ portuguese_brazilian ] = "Manual";
+ Text[ japanese ] = "ÏÆ­±Ù";
+ Text[ korean ] = "±â¼ú ¹®¼­";
+ Text[ chinese_simplified ] = "¼¼ÊõÎÄÏ×";
+ Text[ chinese_traditional ] = "§Þ³N¤åÄm";
+ Text[ arabic ] = "Ïáíá ÇÓÊÎÏÇã";
+ Text[ turkish ] = "Teknik dokümantasyon";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_MASTERSTHESIS
+{
+ Text = "Diplomarbeit" ;
+ Text [ ENGLISH ] = "Masters thesis" ;
+ Text[ english_us ] = "Thesis";
+ Text[ portuguese ] = "Tese de licenciatura";
+ Text[ russian ] = "Äèïëîìíàÿ ðàáîòà";
+ Text[ greek ] = "ÄéðëùìáôéêÞ åñãáóßá";
+ Text[ dutch ] = "Scriptie";
+ Text[ french ] = "Mémoire";
+ Text[ spanish ] = "Diplomatura";
+ Text[ italian ] = "Tesi di laurea";
+ Text[ danish ] = "Eksamensopgave";
+ Text[ swedish ] = "Examensarbete";
+ Text[ polish ] = "Praca dyplomowa";
+ Text[ portuguese_brazilian ] = "Masters thesis";
+ Text[ japanese ] = "‘²‹Æ˜_•¶";
+ Text[ korean ] = "ÇÐÀ§³í¹®";
+ Text[ chinese_simplified ] = "´óѧ±ÏÒµÂÛÎÄ";
+ Text[ chinese_traditional ] = "²z¤u¬ì¤j¾Ç²¦·~½×¤å";
+ Text[ arabic ] = "ÑÓÇáÉ ãÇÌÓÊíÑ";
+ Text[ turkish ] = "Tez";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_MISC
+{
+ Text = "Verschiedenes" ;
+ Text [ ENGLISH ] = "Miscellaneous" ;
+ Text[ english_us ] = "Miscellaneous";
+ Text[ portuguese ] = "Miscelânea";
+ Text[ russian ] = "Ïðî÷åå";
+ Text[ greek ] = "ÄéÜöïñá";
+ Text[ dutch ] = "Diverse";
+ Text[ french ] = "Divers";
+ Text[ spanish ] = "Diversos";
+ Text[ italian ] = "Varie";
+ Text[ danish ] = "Forskelligt";
+ Text[ swedish ] = "Diverse";
+ Text[ polish ] = "Ró¿ne";
+ Text[ portuguese_brazilian ] = "Miscellaneous";
+ Text[ japanese ] = "”õl";
+ Text[ korean ] = "¿©·¯°¡Áö";
+ Text[ chinese_simplified ] = "ÆäËü";
+ Text[ chinese_traditional ] = "¨ä¥L";
+ Text[ arabic ] = "ãäæÚÇÊ";
+ Text[ turkish ] = "Muhtelif";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_PHDTHESIS
+{
+ Text = "Dissertation" ;
+ Text [ ENGLISH ] = "PhD thesis" ;
+ Text[ english_us ] = "Dissertation";
+ Text[ portuguese ] = "Tese de doutoramento";
+ Text[ russian ] = "Äèññåðòàöèÿ";
+ Text[ greek ] = "ÄéáôñéâÞ";
+ Text[ dutch ] = "Dissertatie";
+ Text[ french ] = "Thèse de doctorat";
+ Text[ spanish ] = "Tesis doctoral";
+ Text[ italian ] = "Dottorato di ricerca";
+ Text[ danish ] = "Doktorafhandling";
+ Text[ swedish ] = "Doktorsavhandling";
+ Text[ polish ] = "Praca doktorska";
+ Text[ portuguese_brazilian ] = "PhD thesis";
+ Text[ japanese ] = "”ŽŽm˜_•¶";
+ Text[ korean ] = "¹Ú»ç ÇÐÀ§ ³í¹®";
+ Text[ chinese_simplified ] = "²©Ê¿ÂÛÎÄ";
+ Text[ chinese_traditional ] = "³Õ¤h½×¤å";
+ Text[ arabic ] = "ÑÓÇáÉ ÏßÊæÑÇå";
+ Text[ turkish ] = "Doktora çalýþmasý";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_PROCEEDINGS
+{
+ Text = "Tagungsbericht" ;
+ Text [ ENGLISH ] = "Proceedings" ;
+ Text[ english_us ] = "Conference proceedings";
+ Text[ portuguese ] = "Relatório sobre reunião";
+ Text[ russian ] = "Ïðîòîêîë ñîâåùàíèÿ";
+ Text[ greek ] = "Ðñùôüêïëëï óõíåäñßáóçò";
+ Text[ dutch ] = "Notulen";
+ Text[ french ] = "Rapport de congrès";
+ Text[ spanish ] = "Informe de reunión";
+ Text[ italian ] = "Rapporto sulla conferenza";
+ Text[ danish ] = "Kongresberetning";
+ Text[ swedish ] = "Konferensrapport";
+ Text[ polish ] = "Sprawozdanie z obrady";
+ Text[ portuguese_brazilian ] = "Proceedings";
+ Text[ japanese ] = "‰ï•ñ";
+ Text[ korean ] = "ȸÀÇ ÀýÂ÷";
+ Text[ chinese_simplified ] = "»áÒ鱨¸æ";
+ Text[ chinese_traditional ] = "·|ij³ø§i";
+ Text[ arabic ] = "ÈÑæÊæßæá ÇÌÊãÇÚ";
+ Text[ turkish ] = "Konferans raporu";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_TECHREPORT
+{
+ Text = "Forschungsbericht" ;
+ Text [ ENGLISH ] = "Technical report" ;
+ Text[ english_us ] = "Research report";
+ Text[ portuguese ] = "Relatório de investigação";
+ Text[ russian ] = "Íàó÷íûé îò÷åò";
+ Text[ greek ] = "ÅðéóôçìïíéêÞ Ýñåõíá";
+ Text[ dutch ] = "Onderzoeksrapport";
+ Text[ french ] = "Rapport de recherche";
+ Text[ spanish ] = "Informe de investigación";
+ Text[ italian ] = "Rapporto di ricerca";
+ Text[ danish ] = "Forskningsrapport";
+ Text[ swedish ] = "Forskningsrapport";
+ Text[ polish ] = "Sprawozdanie naukowe";
+ Text[ portuguese_brazilian ] = "Technical report";
+ Text[ japanese ] = "Œ¤‹†•ñ";
+ Text[ korean ] = "¿¬±¸ º¸°í¼­";
+ Text[ chinese_simplified ] = "¿ÆÑб¨¸æ";
+ Text[ chinese_traditional ] = "¬ì¬ã³ø§i";
+ Text[ arabic ] = "ÊÞÑíÑ Úä ÚãáíÉ ÇáÈÍË";
+ Text[ turkish ] = "Araþtýrma raporu";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_UNPUBLISHED
+{
+ Text = "Unveröffentlicht" ;
+ Text [ ENGLISH ] = "Unpublished" ;
+ Text[ english_us ] = "Unpublished";
+ Text[ portuguese ] = "Inédito";
+ Text[ russian ] = "Íåîïóáëèêîâàíî";
+ Text[ greek ] = "Áäçìïóßåõôá";
+ Text[ dutch ] = "Niet gepubliceerd";
+ Text[ french ] = "Non publié";
+ Text[ spanish ] = "Inédito";
+ Text[ italian ] = "Non pubblicato";
+ Text[ danish ] = "Ikke offentliggjort";
+ Text[ swedish ] = "Opublicerad";
+ Text[ polish ] = "Nieopublikowany";
+ Text[ portuguese_brazilian ] = "Unpublished";
+ Text[ japanese ] = "–¢”­•\\";
+ Text[ korean ] = "ÃâÆǵÇÁö ¾ÊÀº";
+ Text[ chinese_simplified ] = "δ·¢±íµÄ";
+ Text[ chinese_traditional ] = "©|¥¼µoªí";
+ Text[ arabic ] = "áã íõäÔÑ ÈÚÏ";
+ Text[ turkish ] = "Yayýmlanmamýþ";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_EMAIL
+{
+ Text = "e-Mail" ;
+ Text [ ENGLISH ] = "eMail" ;
+ Text[ english_us ] = "e-mail";
+ Text[ portuguese ] = "e-mail";
+ Text[ russian ] = "Ýë.ïî÷òà";
+ Text[ greek ] = "e-Mail";
+ Text[ dutch ] = "e-mail";
+ Text[ french ] = "E-mail";
+ Text[ spanish ] = "E-mail";
+ Text[ italian ] = "eMail";
+ Text[ danish ] = "E-mail";
+ Text[ swedish ] = "e-post";
+ Text[ polish ] = "e-mail";
+ Text[ portuguese_brazilian ] = "eMail";
+ Text[ japanese ] = "EÒ°Ù";
+ Text[ korean ] = "ÀüÀÚ¿ìÆí";
+ Text[ chinese_simplified ] = "µç×ÓÓʼþ";
+ Text[ chinese_traditional ] = "¹q¤l¶l¥ó";
+ Text[ arabic ] = "ÈÑíÏ ÅáßÊÑæäí";
+ Text[ turkish ] = "e-posta";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_WWW
+{
+ Text = "WWW-Dokument" ;
+ Text [ ENGLISH ] = "WWW document" ;
+ Text[ english_us ] = "WWW document";
+ Text[ portuguese ] = "Documento WWW";
+ Text[ russian ] = "Äîêóìåíò WWW";
+ Text[ greek ] = "¸ããñáöï WWW";
+ Text[ dutch ] = "WWW document";
+ Text[ french ] = "Document WWW";
+ Text[ spanish ] = "Documento WWW";
+ Text[ italian ] = "Documento Web";
+ Text[ danish ] = "WWW-dokument";
+ Text[ swedish ] = "WWW-dokument";
+ Text[ polish ] = "Dokument WWW";
+ Text[ portuguese_brazilian ] = "WWW document";
+ Text[ japanese ] = "WWWÄÞ·­ÒÝÄ";
+ Text[ korean ] = "WWW ¹®¼­";
+ Text[ chinese_simplified ] = "WWW Îĵµ";
+ Text[ chinese_traditional ] = "WWW ¤å¥ó";
+ Text[ arabic ] = "ãÓÊäÏ æíÈ";
+ Text[ turkish ] = "WWW belgesi";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_CUSTOM1
+{
+ Text = "Benutzertyp1" ;
+ Text [ ENGLISH ] = "Custom1" ;
+ Text[ english_us ] = "User-defined1";
+ Text[ portuguese ] = "Utilizador1";
+ Text[ russian ] = "Òèï ïîëüçîâàòàëÿ1";
+ Text[ greek ] = "Ôýðïò ÷ñÞóôç1";
+ Text[ dutch ] = "Gebruikerstype1";
+ Text[ french ] = "Type d'utilisateur1";
+ Text[ spanish ] = "Usuario1";
+ Text[ italian ] = "Tipo1";
+ Text[ danish ] = "Brugerdefineret type1";
+ Text[ swedish ] = "Användartyp1";
+ Text[ polish ] = "U¿ytkownik1";
+ Text[ portuguese_brazilian ] = "Custom1";
+ Text[ japanese ] = "Õ°»Þ°À²Ìß 1";
+ Text[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ1";
+ Text[ chinese_simplified ] = "Óû§1";
+ Text[ chinese_traditional ] = "¦Û­qÃþ«¬ 1";
+ Text[ arabic ] = "ãõÚÑøóÝ ãä ÞÈá ÇáãÓÊÎÏã1";
+ Text[ turkish ] = "Kullanýcý tipi1";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_CUSTOM2
+{
+ Text = "Benutzertyp2" ;
+ Text [ ENGLISH ] = "Custom2" ;
+ Text[ english_us ] = "User-defined2";
+ Text[ portuguese ] = "Utilizador2";
+ Text[ russian ] = "Òèï ïîëüçîâàòåëÿ2";
+ Text[ greek ] = "Ôýðïò ÷ñÞóôç2";
+ Text[ dutch ] = "Gebruikerstype2";
+ Text[ french ] = "Type d'utilisateur2";
+ Text[ spanish ] = "Usuario2";
+ Text[ italian ] = "Tipo2";
+ Text[ danish ] = "Brugerdefineret type2";
+ Text[ swedish ] = "Användartyp2";
+ Text[ polish ] = "U¿ytkownik2";
+ Text[ portuguese_brazilian ] = "Custom2";
+ Text[ japanese ] = "Õ°»Þ°À²Ìß2";
+ Text[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ2";
+ Text[ chinese_simplified ] = "Óû§2";
+ Text[ chinese_traditional ] = "¦Û­qÃþ«¬ 2";
+ Text[ arabic ] = "ãõÚÑøóÝ ãä ÞÈá ÇáãÓÊÎÏã2";
+ Text[ turkish ] = "Kullanýcý tipi2";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_CUSTOM3
+{
+ Text = "Benutzertyp3" ;
+ Text [ ENGLISH ] = "Custom3" ;
+ Text[ english_us ] = "User-defined3";
+ Text[ portuguese ] = "Utilizador3";
+ Text[ russian ] = "Òèï ïîëüçîâàòåëÿ3";
+ Text[ greek ] = "Ôýðïò ÷ñÞóôç3";
+ Text[ dutch ] = "Gebruikerstype3";
+ Text[ french ] = "Type d'utilisateur3";
+ Text[ spanish ] = "Usuario3";
+ Text[ italian ] = "Tipo3";
+ Text[ danish ] = "Brugerdefineret type3";
+ Text[ swedish ] = "Användartyp3";
+ Text[ polish ] = "U¿ytkownik3";
+ Text[ portuguese_brazilian ] = "Custom3";
+ Text[ japanese ] = "Õ°»Þ°À²Ìß3";
+ Text[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ3";
+ Text[ chinese_simplified ] = "Óû§3";
+ Text[ chinese_traditional ] = "¦Û­qÃþ«¬ 3";
+ Text[ arabic ] = "ãõÚÑøóÝ ãä ÞÈá ÇáãÓÊÎÏã3";
+ Text[ turkish ] = "Kullanýcý tipi3";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_CUSTOM4
+{
+ Text = "Benutzertyp4" ;
+ Text [ ENGLISH ] = "Custom4" ;
+ Text[ english_us ] = "User-defined4";
+ Text[ portuguese ] = "Utilizador4";
+ Text[ russian ] = "Òèï ïîëüçîâàòåëÿ4";
+ Text[ greek ] = "Ôýðïò ÷ñÞóôç4";
+ Text[ dutch ] = "Gebruikerstype4";
+ Text[ french ] = "Type d'utilisateur4";
+ Text[ spanish ] = "Usuario4";
+ Text[ italian ] = "Tipo4";
+ Text[ danish ] = "Brugerdefineret type4";
+ Text[ swedish ] = "Användartyp4";
+ Text[ polish ] = "U¿ytkownik4";
+ Text[ portuguese_brazilian ] = "Custom4";
+ Text[ japanese ] = "Õ°»Þ°À²Ìß4";
+ Text[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ4";
+ Text[ chinese_simplified ] = "Óû§4";
+ Text[ chinese_traditional ] = "¦Û­qÃþ«¬ 4";
+ Text[ arabic ] = "ãõÚÑøóÝ ãä ÞÈá ÇáãÓÊÎÏã4";
+ Text[ turkish ] = "Kullanýcý tipi4";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_TYPE_CUSTOM5
+{
+ Text = "Benutzertyp5" ;
+ Text [ ENGLISH ] = "Custom5" ;
+ Text[ english_us ] = "User-defined5";
+ Text[ portuguese ] = "Utilizador5";
+ Text[ russian ] = "Òèï ïîëüçîâàòåëÿ5";
+ Text[ greek ] = "Ôýðïò ÷ñÞóôç5";
+ Text[ dutch ] = "Gebruikerstype5";
+ Text[ french ] = "Type d'utilisateur5";
+ Text[ spanish ] = "Usuario5";
+ Text[ italian ] = "Tipo5";
+ Text[ danish ] = "Brugerdefineret type5";
+ Text[ swedish ] = "Användartyp5";
+ Text[ polish ] = "U¿ytkownik5";
+ Text[ portuguese_brazilian ] = "Custom5";
+ Text[ japanese ] = "Õ°»Þ°À²Ìß5";
+ Text[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ5";
+ Text[ chinese_simplified ] = "Óû§5";
+ Text[ chinese_traditional ] = "¦Û­qÃþ«¬ 5";
+ Text[ arabic ] = "ãõÚÑøóÝ ãä ÞÈá ÇáãÓÊÎÏã5";
+ Text[ turkish ] = "Kullanýcý tipi5";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_AUTH_FIELD_IDENTIFIER
+{
+ Text = "~Kurzbezeichnung" ;
+ Text [ ENGLISH ] = "Identifier" ;
+ Text[ english_us ] = "Short name";
+ Text[ portuguese ] = "~Abreviatura";
+ Text[ russian ] = "Ñîêðàùåíèå";
+ Text[ greek ] = "~Óõíôïìïãñáößá";
+ Text[ dutch ] = "~Beknopte aanduiding";
+ Text[ french ] = "~Abrégé";
+ Text[ spanish ] = "~Abreviatura";
+ Text[ italian ] = "Abbreviazione";
+ Text[ danish ] = "Kort betegnelse";
+ Text[ swedish ] = "~Kort beteckning";
+ Text[ polish ] = "Skrót";
+ Text[ portuguese_brazilian ] = "Identifier";
+ Text[ japanese ] = "—ªÌ";
+ Text[ korean ] = "ªÀº À̸§";
+ Text[ chinese_simplified ] = "¼ò³Æ";
+ Text[ chinese_traditional ] = "²µu´y­z¤å";
+ Text[ arabic ] = "ÇÓã ãÎÊÕÑ";
+ Text[ turkish ] = "~Kýsa ad";
+};
+String STR_AUTH_FIELD_AUTHORITY_TYPE
+{
+ Text = "~Typ" ;
+ 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 ] = "À²Ìß";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ chinese_simplified ] = "ÀàÐÍ";
+ Text[ chinese_traditional ] = "Ãþ«¬";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ turkish ] = "~Tip";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_ADDRESS
+{
+ Text = "~Verlagsadresse" ;
+ Text [ ENGLISH ] = "Publisher address" ;
+ Text[ english_us ] = "Publisher address";
+ Text[ portuguese ] = "~Endereço da editora";
+ Text[ russian ] = "Àäðåñ èçäàòåëüñòâà";
+ Text[ greek ] = "Äéåýèõíóç åêäüôç";
+ Text[ dutch ] = "~Adres uitgeverij";
+ Text[ french ] = "Adresse de l'édition";
+ Text[ spanish ] = "~Dirección editorial";
+ Text[ italian ] = "Indirizzo editore";
+ Text[ danish ] = "Forlagsadresse";
+ Text[ swedish ] = "Förlagsadress";
+ Text[ polish ] = "Adres wydawnictwa";
+ Text[ portuguese_brazilian ] = "Publisher address";
+ Text[ japanese ] = "o”ŎЂÌZŠ";
+ Text[ korean ] = "ÃâÆÇ»ç ÁÖ¼Ò";
+ Text[ chinese_simplified ] = "³ö°æÉçµØÖ·";
+ Text[ chinese_traditional ] = "¥Xª©ªÀ¦a§}";
+ Text[ arabic ] = "ÚäæÇä ÏÇÑ ÇáäÔÑ";
+ Text[ turkish ] = "~Yayýnevi adresi";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_ANNOTE
+{
+ Text = "~Anmerkung" ;
+ Text [ ENGLISH ] = "Annotation" ;
+ Text[ english_us ] = "Notes";
+ Text[ portuguese ] = "A~notações";
+ Text[ russian ] = "Êîììåíòàðèé";
+ Text[ greek ] = "ÐáñáôÞñçóç";
+ Text[ dutch ] = "~Commentaar";
+ Text[ french ] = "~Commentaire";
+ Text[ spanish ] = "~Notas";
+ Text[ italian ] = "~Annotazione";
+ Text[ danish ] = "Anmærkning";
+ Text[ swedish ] = "Anmärkning";
+ Text[ polish ] = "Adnotacja";
+ Text[ portuguese_brazilian ] = "Annotation";
+ Text[ japanese ] = "ºÒÝÄ(~M)";
+ Text[ korean ] = "¸Þ¸ð(~M)";
+ Text[ chinese_simplified ] = "˵Ã÷(~M)";
+ Text[ chinese_traditional ] = "µû»y(~M)";
+ Text[ arabic ] = "ãáÇÍÙÉ";
+ Text[ turkish ] = "~Not";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_AUTHOR
+{
+ Text = "A~utor(en)" ;
+ Text [ ENGLISH ] = "Author(s)" ;
+ Text[ english_us ] = "Author(s)";
+ Text[ portuguese ] = "~Autor(es)";
+ Text[ russian ] = "Àâòîð(û)";
+ Text[ greek ] = "ÓõããñáöÝáò(-åéò)";
+ Text[ dutch ] = "A~uteur(s)";
+ Text[ french ] = "A~uteur(s)";
+ Text[ spanish ] = "A~utor(es)";
+ Text[ italian ] = "A~utore/i";
+ Text[ danish ] = "Forfatter(e)";
+ Text[ swedish ] = "Författare";
+ Text[ polish ] = "Autor(zy)";
+ Text[ portuguese_brazilian ] = "Author(s)";
+ Text[ japanese ] = "’˜ŽÒ";
+ Text[ korean ] = "ÀÛ¼ºÀÎ(µé)";
+ Text[ chinese_simplified ] = "×÷Õß";
+ Text[ chinese_traditional ] = "§@ªÌ";
+ Text[ arabic ] = "ÇáãÄáÝ (ÇáãÄáÝæä)";
+ Text[ turkish ] = "Ya~zan(lar)";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_BOOKTITLE
+{
+ Text = "Bu~chtitel" ;
+ Text [ ENGLISH ] = "Book title" ;
+ Text[ english_us ] = "Book title";
+ Text[ portuguese ] = "Títu~lo do livro";
+ Text[ russian ] = "Íàçâàíèå êíèãè";
+ Text[ greek ] = "Ôßôëïò âéâëßïõ";
+ Text[ dutch ] = "Boe~ktitel";
+ Text[ french ] = "Titre de ~livre";
+ Text[ spanish ] = "Título del li~bro";
+ Text[ italian ] = "Titolo del libro";
+ Text[ danish ] = "Bogtitel";
+ Text[ swedish ] = "Boktitel";
+ Text[ polish ] = "Tytu³ ksi¹¿ki";
+ Text[ portuguese_brazilian ] = "Book title";
+ Text[ japanese ] = "‘–¼";
+ Text[ korean ] = "Ã¥ Á¦¸ñ";
+ Text[ chinese_simplified ] = "Êé¼®Ãû³Æ";
+ Text[ chinese_traditional ] = "®Ñ¦W";
+ Text[ arabic ] = "ÚäæÇä ÇáßÊÇÈ";
+ Text[ turkish ] = "Kitap ~adý";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_CHAPTER
+{
+ Text = "Ka~pitel" ;
+ Text [ ENGLISH ] = "Chapter" ;
+ Text[ english_us ] = "Chapter";
+ Text[ portuguese ] = "Ca~pítulo";
+ Text[ russian ] = "Ãëàâà";
+ Text[ greek ] = "ÊåöÜëáéï";
+ Text[ dutch ] = "Hoo~fdstuk";
+ Text[ french ] = "~Chapitre";
+ Text[ spanish ] = "Capít~ulo";
+ Text[ italian ] = "Ca~pitolo";
+ Text[ danish ] = "Kapitel";
+ Text[ swedish ] = "Kapitel";
+ Text[ polish ] = "Rozdzia³";
+ Text[ portuguese_brazilian ] = "Chapter";
+ Text[ japanese ] = "Í";
+ Text[ korean ] = "Àå";
+ Text[ chinese_simplified ] = "ÕÂ";
+ Text[ chinese_traditional ] = "³¹¸`";
+ Text[ arabic ] = "ÇáÝÕá";
+ Text[ turkish ] = "B~ölüm";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_EDITION
+{
+ Text = "Aus~gabe" ;
+ Text [ ENGLISH ] = "Edition" ;
+ Text[ english_us ] = "Edition";
+ Text[ portuguese ] = "Ed~ição";
+ Text[ russian ] = "Èçäàíèå";
+ Text[ greek ] = "Åîá~ãùãÞ";
+ Text[ dutch ] = "~Editie";
+ Text[ french ] = "É~dition";
+ Text[ spanish ] = "Edi~ción";
+ Text[ italian ] = "Edizione";
+ Text[ danish ] = "Udgave";
+ Text[ swedish ] = "Utgåva";
+ Text[ polish ] = "Wydanie";
+ Text[ portuguese_brazilian ] = "Edition";
+ Text[ japanese ] = "Ӂ";
+ Text[ korean ] = "ÆÇ";
+ Text[ chinese_simplified ] = "°æ±¾";
+ Text[ chinese_traditional ] = "¥Xª©";
+ Text[ arabic ] = "ÇáØÈÚÉ";
+ Text[ turkish ] = "Basý~m";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_EDITOR
+{
+ Text = "Herausge~ber" ;
+ Text [ ENGLISH ] = "Editor" ;
+ Text[ english_us ] = "Editor";
+ Text[ portuguese ] = "~Editor";
+ Text[ russian ] = "Ðåäàêòîð";
+ Text[ greek ] = "Åê~äüôçò";
+ Text[ dutch ] = "~Uitgever";
+ Text[ french ] = "Éditeur";
+ Text[ spanish ] = "~Editor";
+ Text[ italian ] = "Editore";
+ Text[ danish ] = "Udgiver";
+ Text[ swedish ] = "Utgivare";
+ Text[ polish ] = "Wydawca";
+ Text[ portuguese_brazilian ] = "Editor";
+ Text[ japanese ] = "”­sŽÒ";
+ Text[ korean ] = "ÆíÁýÀÚ";
+ Text[ chinese_simplified ] = "³ö°æÕß";
+ Text[ chinese_traditional ] = "¥Xª©ªÌ";
+ Text[ arabic ] = "ÇáäÇÔÑ";
+ Text[ turkish ] = "Yayým~cý";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_HOWPUBLISHED
+{
+ Text = "Au~sgabeart" ;
+ Text [ ENGLISH ] = "How published" ;
+ Text[ english_us ] = "Publication type";
+ Text[ portuguese ] = "~Tipo de edição";
+ Text[ russian ] = "Òèï èçäàíèÿ";
+ Text[ greek ] = "Ôýðï~ò Ýêäïóçò";
+ Text[ dutch ] = "Wijze van ~publiceren";
+ Text[ french ] = "~Type de publication";
+ Text[ spanish ] = "Tip~o de edición";
+ Text[ italian ] = "Tipo di edizione";
+ Text[ danish ] = "Udgivelsestype";
+ Text[ swedish ] = "Utgivningstyp";
+ Text[ polish ] = "Rodzaj edycji";
+ Text[ portuguese_brazilian ] = "How published";
+ Text[ japanese ] = "¶ÊÞ°À²Ìß";
+ Text[ korean ] = "ÃâÆÇ ÇüÅÂ";
+ Text[ chinese_simplified ] = "³ö°æ·½Ê½";
+ Text[ chinese_traditional ] = "¥Xª©Ãþ«¬";
+ Text[ arabic ] = "ØÑíÞÉ ÇáØÈÇÚÉ";
+ Text[ turkish ] = "Yayým ~türü";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_INSTITUTION
+{
+ Text = "~Institution" ;
+ Text [ ENGLISH ] = "Institution" ;
+ Text[ english_us ] = "Institution";
+ Text[ portuguese ] = "~Instituição";
+ Text[ russian ] = "Ðåäàêöèÿ";
+ Text[ greek ] = "ºäñõìá";
+ Text[ dutch ] = "~Instelling";
+ Text[ french ] = "~Institution";
+ Text[ spanish ] = "Institu~ción";
+ Text[ italian ] = "~Istituzione";
+ Text[ danish ] = "Institution";
+ Text[ swedish ] = "Institution";
+ Text[ polish ] = "Instytucja";
+ Text[ portuguese_brazilian ] = "Institution";
+ Text[ japanese ] = "‹@ŠÖ";
+ Text[ korean ] = "±³À°±â°ü";
+ Text[ chinese_simplified ] = "»ú¹¹";
+ Text[ chinese_traditional ] = "µ²ÌÛ";
+ Text[ arabic ] = "ÇáåíÆÉ";
+ Text[ turkish ] = "K~urum";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_JOURNAL
+{
+ Text = "~Zeitschrift" ;
+ Text [ ENGLISH ] = "Journal" ;
+ Text[ english_us ] = "Magazine";
+ Text[ portuguese ] = "~Revista";
+ Text[ russian ] = "Æóðíàë";
+ Text[ greek ] = "Ðåñéïäéêü";
+ Text[ dutch ] = "~Tijdschrift";
+ Text[ french ] = "~Revue";
+ Text[ spanish ] = "~Revista";
+ Text[ italian ] = "Rivista";
+ Text[ danish ] = "Tidsskrift";
+ Text[ swedish ] = "Tidskrift";
+ Text[ polish ] = "Czasopismo";
+ Text[ portuguese_brazilian ] = "Journal";
+ Text[ japanese ] = "ŽGŽ";
+ Text[ korean ] = "ÀâÁö";
+ Text[ chinese_simplified ] = "ÔÓÖ¾";
+ Text[ chinese_traditional ] = "Âø§Ó";
+ Text[ arabic ] = "ãÌáÉ";
+ Text[ turkish ] = "De~rgi";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_MONTH
+{
+ Text = "~Monat" ;
+ Text [ ENGLISH ] = "Month" ;
+ Text[ english_us ] = "Month";
+ Text[ portuguese ] = "~Mês";
+ Text[ russian ] = "Ìåñÿö";
+ Text[ greek ] = "ÌÞíáò";
+ Text[ dutch ] = "~Maand";
+ Text[ french ] = "~Mois";
+ Text[ spanish ] = "~Mes";
+ Text[ italian ] = "~Mese";
+ Text[ danish ] = "Måned";
+ Text[ swedish ] = "Månad";
+ Text[ polish ] = "Miesi¹c";
+ Text[ portuguese_brazilian ] = "Month";
+ Text[ japanese ] = "ŒŽ";
+ Text[ korean ] = "¿ù";
+ Text[ chinese_simplified ] = "ÔÂ";
+ Text[ chinese_traditional ] = "¤ë";
+ Text[ arabic ] = "";
+ Text[ turkish ] = "~Ay";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_NOTE
+{
+ Text = "~Notiz" ;
+ Text [ ENGLISH ] = "Note" ;
+ Text[ english_us ] = "Not~e";
+ Text[ portuguese ] = "~Anotação";
+ Text[ russian ] = "Ïðèìå÷àíèå";
+ Text[ greek ] = "Óçìåßùóç";
+ Text[ dutch ] = "~Notitie";
+ Text[ french ] = "~Note";
+ Text[ spanish ] = "~Nota";
+ Text[ italian ] = "~Nota";
+ Text[ danish ] = "Note";
+ Text[ swedish ] = "Not";
+ Text[ polish ] = "Notatka";
+ Text[ portuguese_brazilian ] = "Note";
+ Text[ japanese ] = "ÒÓ(~E)";
+ Text[ korean ] = "¸Þ¸ð(~E)";
+ Text[ chinese_simplified ] = "±¸×¢(~E)";
+ Text[ chinese_traditional ] = "³Æª`(~E)";
+ Text[ arabic ] = "ãáÇÍÙÉ";
+ Text[ turkish ] = "~Not";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_NUMBER
+{
+ Text = "Numme~r" ;
+ Text [ ENGLISH ] = "Number" ;
+ Text[ english_us ] = "Number";
+ Text[ portuguese ] = "~Número";
+ Text[ russian ] = "Íîìåð";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ dutch ] = "Numme~r";
+ Text[ french ] = "N~uméro";
+ Text[ spanish ] = "Nú~mero";
+ Text[ italian ] = "Nume~ro";
+ Text[ danish ] = "Nummer";
+ Text[ swedish ] = "Nummer";
+ Text[ polish ] = "Numer";
+ Text[ portuguese_brazilian ] = "Number";
+ Text[ japanese ] = "”Ô†";
+ Text[ korean ] = "¹øÈ£";
+ Text[ chinese_simplified ] = "񅧏";
+ Text[ chinese_traditional ] = "½s¸¹";
+ Text[ arabic ] = "ÇáÑÞã";
+ Text[ turkish ] = "Numa~ra";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_ORGANIZATIONS
+{
+ Text = "~Organisation" ;
+ Text [ ENGLISH ] = "Organization" ;
+ Text[ english_us ] = "Organization";
+ Text[ portuguese ] = "~Organização";
+ Text[ russian ] = "Îðãàíèçàöèÿ";
+ Text[ greek ] = "~Ïñãáíéóìüò";
+ Text[ dutch ] = "~Organisatie";
+ Text[ french ] = "~Organisation";
+ Text[ spanish ] = "~Organización";
+ Text[ italian ] = "~Organizzazione";
+ Text[ danish ] = "Organisation";
+ Text[ swedish ] = "Organisation";
+ Text[ polish ] = "Organizacja";
+ Text[ portuguese_brazilian ] = "Organization";
+ Text[ japanese ] = "‘gD’c‘Ì";
+ Text[ korean ] = "±â±¸";
+ Text[ chinese_simplified ] = "×éÖ¯";
+ Text[ chinese_traditional ] = "ÉóÌÛ";
+ Text[ arabic ] = "ãäÙãÉ";
+ Text[ turkish ] = "~Organizasyon";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_PAGES
+{
+ Text = "Seiten" ;
+ Text [ ENGLISH ] = "Pages" ;
+ Text[ english_us ] = "Pages";
+ Text[ portuguese ] = "Páginas";
+ Text[ russian ] = "Êîëè÷åñòâî ñòðàíèö";
+ Text[ greek ] = "Óåëßäåò";
+ Text[ dutch ] = "Pagina's";
+ Text[ french ] = "Pages";
+ Text[ spanish ] = "Páginas";
+ Text[ italian ] = "Pagine";
+ Text[ danish ] = "Sider";
+ Text[ swedish ] = "Sidor";
+ Text[ polish ] = "Strony";
+ Text[ portuguese_brazilian ] = "Pages";
+ Text[ japanese ] = "Íß°¼Þ";
+ Text[ korean ] = "ÆäÀÌÁö";
+ Text[ chinese_simplified ] = "Ò³";
+ Text[ chinese_traditional ] = "­¶­±";
+ Text[ arabic ] = "ÕÝÍÇÊ";
+ Text[ turkish ] = "Sayfa";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_PUBLISHER
+{
+ Text = "Ver~lag" ;
+ Text [ ENGLISH ] = "Publisher" ;
+ Text[ english_us ] = "Publishers";
+ Text[ portuguese ] = "E~ditora";
+ Text[ russian ] = "Èçäàòåëüñòâî";
+ Text[ greek ] = "Åêäïôéêüò ïßêïò";
+ Text[ dutch ] = "~Uitgeverij";
+ Text[ french ] = "É~dition";
+ Text[ spanish ] = "~Editorial";
+ Text[ italian ] = "Casa editrice";
+ Text[ danish ] = "Forlag";
+ Text[ swedish ] = "Förlag";
+ Text[ polish ] = "Wydawnictwo";
+ Text[ portuguese_brazilian ] = "Publisher";
+ Text[ japanese ] = "o”ÅŽÐ";
+ Text[ korean ] = "ÃâÆÇ»ç";
+ Text[ chinese_simplified ] = "³ö°æÉç";
+ Text[ chinese_traditional ] = "¥Xª©ªÀ";
+ Text[ arabic ] = "ÏÇÑ ÇáäÔÑ";
+ Text[ turkish ] = "Yayýnev~i";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_SCHOOL
+{
+ Text = "Hochschule/Universit~ät" ;
+ Text [ ENGLISH ] = "University" ;
+ Text[ english_us ] = "University";
+ Text[ portuguese ] = "Escola superior/Uni~versidade";
+ Text[ russian ] = "ÂÓÇ";
+ Text[ greek ] = "Ô.Å.É/Á.Å.É.";
+ Text[ dutch ] = "Hogeschool/~Universiteit";
+ Text[ french ] = "École supérieure/Université";
+ Text[ spanish ] = "Colegio/~Universidad";
+ Text[ italian ] = "Università";
+ Text[ danish ] = "Universitet/læreanstalt";
+ Text[ swedish ] = "Högskola/universitet";
+ Text[ polish ] = "Szko³a wy¿sza/Uniwersytet";
+ Text[ portuguese_brazilian ] = "University";
+ Text[ japanese ] = "‘åŠw";
+ Text[ korean ] = "´ëÇÐ";
+ Text[ chinese_simplified ] = "´óѧ";
+ Text[ chinese_traditional ] = "°ª±M°|®Õ";
+ Text[ arabic ] = "ÌÇãÚÉ";
+ Text[ turkish ] = "Üniversite";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_SERIES
+{
+ Text = "Name ~der Serie" ;
+ Text [ ENGLISH ] = "Series name" ;
+ Text[ english_us ] = "Series name";
+ Text[ portuguese ] = "Nome da ~série";
+ Text[ russian ] = "Íàçâàíèå ñåðèè";
+ Text[ greek ] = "¼íïìá óåéñÜò";
+ Text[ dutch ] = "Naam van de ~serie";
+ Text[ french ] = "Nom de la série";
+ Text[ spanish ] = "No~mbre de la serie";
+ Text[ italian ] = "Nome ~della serie";
+ Text[ danish ] = "Seriens navn";
+ Text[ swedish ] = "Namn på serie";
+ Text[ polish ] = "Nazwa serii";
+ Text[ portuguese_brazilian ] = "Series name";
+ Text[ japanese ] = "¼Ø°½Þ–¼";
+ Text[ korean ] = "½Ã¸®Áî À̸§";
+ Text[ chinese_simplified ] = "ϵÁÐÃû³Æ";
+ Text[ chinese_traditional ] = "¨t¦C¦W";
+ Text[ arabic ] = "ÇÓã ÇáÓáÓáÉ";
+ Text[ turkish ] = "Seri ~adý";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_TITLE
+{
+ Text = "Tit~el" ;
+ Text [ ENGLISH ] = "Title" ;
+ Text[ english_us ] = "Title";
+ Text[ portuguese ] = "Títu~lo";
+ Text[ russian ] = "Çàãîëîâîê";
+ Text[ greek ] = "Ôßôëïò";
+ Text[ dutch ] = "Tit~el";
+ Text[ french ] = "Titre";
+ Text[ spanish ] = "Tít~ulo";
+ Text[ italian ] = "Titolo";
+ Text[ danish ] = "Titel";
+ Text[ swedish ] = "Titel";
+ Text[ polish ] = "Tytu³";
+ Text[ portuguese_brazilian ] = "Title";
+ Text[ japanese ] = "À²ÄÙ";
+ Text[ korean ] = "Á¦¸ñ";
+ Text[ chinese_simplified ] = "±êÌâ";
+ Text[ chinese_traditional ] = "¼ÐÃD";
+ Text[ arabic ] = "ÇáÚäæÇä";
+ Text[ turkish ] = "A~d";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_TYPE
+{
+ Text = "Art des Berichts" ;
+ Text [ ENGLISH ] = "Type of proceedings" ;
+ Text[ english_us ] = "Report type";
+ Text[ portuguese ] = "Tipo de relatório";
+ Text[ russian ] = "Òèï îò÷åòà";
+ Text[ greek ] = "Ôýðïò Ýêèåóçò";
+ Text[ dutch ] = "Soort bericht";
+ Text[ french ] = "Type de rapport";
+ Text[ spanish ] = "Tipo de informe";
+ Text[ italian ] = "Tipo di relazione";
+ Text[ danish ] = "Rapporttype";
+ Text[ swedish ] = "Typ av rapport";
+ Text[ polish ] = "Rodzaj raportu";
+ Text[ portuguese_brazilian ] = "Type of proceedings";
+ Text[ japanese ] = "•ñ‚ÌŽí—Þ";
+ Text[ korean ] = "º¸°í¼­ ÇüÅÂ";
+ Text[ chinese_simplified ] = "±¨¸æÀàÐÍ";
+ Text[ chinese_traditional ] = "³ø§iÃþ«¬";
+ Text[ arabic ] = "äæÚ ÇáÊÞÑíÑ";
+ Text[ turkish ] = "Rapor türü";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_VOLUME
+{
+ Text = "Nummer des Bandes" ;
+ Text [ ENGLISH ] = "Volume" ;
+ Text[ english_us ] = "Volume number";
+ Text[ portuguese ] = "Volume";
+ Text[ russian ] = "Íîìåð òîìà";
+ Text[ greek ] = "Áñéèìüò ôüìïõ";
+ Text[ dutch ] = "Deel nummer";
+ Text[ french ] = "No. de volume";
+ Text[ spanish ] = "Número de tomo";
+ Text[ italian ] = "Numero del volume";
+ Text[ danish ] = "Bind";
+ Text[ swedish ] = "Nummer på band";
+ Text[ polish ] = "Numer tomu";
+ Text[ portuguese_brazilian ] = "Volume";
+ Text[ japanese ] = "Šª”";
+ Text[ korean ] = "±Ç ¹øÈ£";
+ Text[ chinese_simplified ] = "²áµÄ±àºÅ";
+ Text[ chinese_traditional ] = "¥U¼Æ";
+ Text[ arabic ] = "ÑÞã ÇáãÌáÏ";
+ Text[ turkish ] = "Cilt sayýsý";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_YEAR
+{
+ Text = "Erscheinungs~jahr" ;
+ Text [ ENGLISH ] = "Year" ;
+ Text[ english_us ] = "Year of publication";
+ Text[ portuguese ] = "~Ano de publicação";
+ Text[ russian ] = "Ãîä èçäàíèÿ";
+ Text[ greek ] = "¸ôïò Ýêäïóçò";
+ Text[ dutch ] = "Verschijnings~jaar";
+ Text[ french ] = "Année de parution";
+ Text[ spanish ] = "Año de publi~cación";
+ Text[ italian ] = "Anno di pubblicazione";
+ Text[ danish ] = "Udgivelsesår";
+ Text[ swedish ] = "Utgivningsår";
+ Text[ polish ] = "Rok wydania";
+ Text[ portuguese_brazilian ] = "Year";
+ Text[ japanese ] = "o”Å”N";
+ Text[ korean ] = "ÃâÆdz⵵";
+ Text[ chinese_simplified ] = "³ö°æÄê·Ý";
+ Text[ chinese_traditional ] = "¥Xª©¦~¥÷";
+ Text[ arabic ] = "ÓäÉ ÇáÅÕÏÇÑ";
+ Text[ turkish ] = "Yayým yýlý";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_URL
+{
+ Text = "URL" ;
+ Text [ ENGLISH ] = "URL" ;
+ Text[ english_us ] = "URL";
+ Text[ portuguese ] = "URL";
+ Text[ russian ] = "URL";
+ Text[ greek ] = "URL";
+ Text[ dutch ] = "URL";
+ Text[ french ] = "URL";
+ Text[ spanish ] = "URL";
+ Text[ italian ] = "URL";
+ Text[ danish ] = "URL";
+ Text[ swedish ] = "URL";
+ Text[ polish ] = "URL";
+ Text[ portuguese_brazilian ] = "URL";
+ Text[ japanese ] = "URL";
+ Text[ korean ] = "URL";
+ Text[ chinese_simplified ] = "URL";
+ Text[ chinese_traditional ] = "URL";
+ Text[ arabic ] = "URL";
+ Text[ turkish ] = "URL";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_CUSTOM1
+{
+ Text = "Benutzerfeld~1" ;
+ Text [ ENGLISH ] = "Custom1" ;
+ Text[ english_us ] = "User-defined~1";
+ Text[ portuguese ] = "Campo de utilizador~1";
+ Text[ russian ] = "Ïîëå ïîëüçîâàòåëÿ1";
+ Text[ greek ] = "Ðåäßï ÷ñÞóôç~1";
+ Text[ dutch ] = "Gebruikersveld~1";
+ Text[ french ] = "Champ d'utilisateur~1";
+ Text[ spanish ] = "Campo de usuario~1";
+ Text[ italian ] = "Campo1";
+ Text[ danish ] = "Brugerdefineret ~1";
+ Text[ swedish ] = "Användarfält1";
+ Text[ polish ] = "Pole u¿ytkownika~1";
+ Text[ portuguese_brazilian ] = "Custom1";
+ Text[ japanese ] = "Õ°»Þ°Ì¨°ÙÄÞ1";
+ Text[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ1";
+ Text[ chinese_simplified ] = "Óû§À¸1";
+ Text[ chinese_traditional ] = "¦Û­qÄæ¦ì 1";
+ Text[ arabic ] = "ÍÞá ÇáãÓÊÎÏã 1";
+ Text[ turkish ] = "Kullanýcý alaný~1";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_CUSTOM2
+{
+ Text = "Benutzerfeld~2" ;
+ Text [ ENGLISH ] = "Custom2" ;
+ Text[ english_us ] = "User-defined~2";
+ Text[ portuguese ] = "Campo de utilizador~2";
+ Text[ russian ] = "Ïîëå ïîëüçîâàòåëÿ2";
+ Text[ greek ] = "Ðåäßï ÷ñÞóôç~2";
+ Text[ dutch ] = "Gebruikersveld~2";
+ Text[ french ] = "Champ d'utilisateur~2";
+ Text[ spanish ] = "Campo de usuario~2";
+ Text[ italian ] = "Campo2";
+ Text[ danish ] = "Brugerdefineret ~2";
+ Text[ swedish ] = "Användarfält2";
+ Text[ polish ] = "Pole u¿ytkownika~2";
+ Text[ portuguese_brazilian ] = "Custom2";
+ Text[ japanese ] = "Õ°»Þ°Ì¨°ÙÄÞ2";
+ Text[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ2";
+ Text[ chinese_simplified ] = "Óû§À¸2";
+ Text[ chinese_traditional ] = "¦Û­qÄæ¦ì 2";
+ Text[ arabic ] = "ÍÞá ÇáãÓÊÎÏã2";
+ Text[ turkish ] = "Kullanýcý alaný~2";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_CUSTOM3
+{
+ Text = "Benutzerfeld~3" ;
+ Text [ ENGLISH ] = "Custom3" ;
+ Text[ english_us ] = "User-defined~3";
+ Text[ portuguese ] = "Campo de utilizador~3";
+ Text[ russian ] = "Ïîëå ïîëüçîâàòåëÿ3";
+ Text[ greek ] = "Ðåäßï ÷ñÞóôç~3";
+ Text[ dutch ] = "Gebruikersveld~3";
+ Text[ french ] = "Champ d'utilisateur~3";
+ Text[ spanish ] = "Campo de usuario~3";
+ Text[ italian ] = "Campo3";
+ Text[ danish ] = "Brugerdefineret ~3";
+ Text[ swedish ] = "Användarfält3";
+ Text[ polish ] = "Pole u¿ytkownika~3";
+ Text[ portuguese_brazilian ] = "Custom3";
+ Text[ japanese ] = "Õ°»Þ°Ì¨°ÙÄÞ3";
+ Text[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ3";
+ Text[ chinese_simplified ] = "Óû§À¸3";
+ Text[ chinese_traditional ] = "¦Û­qÄæ¦ì 3";
+ Text[ arabic ] = "ÍÞá ÇáãÓÊÎÏã3";
+ Text[ turkish ] = "Kullanýcý alaný~3";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_CUSTOM4
+{
+ Text = "Benutzerfeld~4" ;
+ Text [ ENGLISH ] = "Custom4" ;
+ Text[ english_us ] = "User-defined~4";
+ Text[ portuguese ] = "Campo de utilizador~4";
+ Text[ russian ] = "Ïîëå ïîëüçîâàòåëÿ4";
+ Text[ greek ] = "Ðåäßï ÷ñÞóôç~4";
+ Text[ dutch ] = "Gebruikersveld~4";
+ Text[ french ] = "Champ d'utilisateur~4";
+ Text[ spanish ] = "Campo de usuario~4";
+ Text[ italian ] = "Campo4";
+ Text[ danish ] = "Brugerdefineret ~4";
+ Text[ swedish ] = "Användarfält4";
+ Text[ polish ] = "Pole u¿ytkownika~4";
+ Text[ portuguese_brazilian ] = "Custom4";
+ Text[ japanese ] = "Õ°»Þ°Ì¨°ÙÄÞ4";
+ Text[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ4";
+ Text[ chinese_simplified ] = "Óû§À¸4";
+ Text[ chinese_traditional ] = "¦Û­qÄæ¦ì 4";
+ Text[ arabic ] = "ÍÞá ÇáãÓÊÎÏã4";
+ Text[ turkish ] = "Kullanýcý alaný~4";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_CUSTOM5
+{
+ Text = "Benutzerfeld~5" ;
+ Text [ ENGLISH ] = "Custom5" ;
+ Text[ english_us ] = "User-defined~5";
+ Text[ portuguese ] = "Campo de utilizador~5";
+ Text[ russian ] = "Ïîëå ïîëüçîâàòåëÿ5";
+ Text[ greek ] = "Ðåäßï ÷ñÞóôç~5";
+ Text[ dutch ] = "Gebruikersveld~5";
+ Text[ french ] = "Champ d'utilisateur~5";
+ Text[ spanish ] = "Campo de usuario~5";
+ Text[ italian ] = "Campo5";
+ Text[ danish ] = "Brugerdefineret ~5";
+ Text[ swedish ] = "Användarfält5";
+ Text[ polish ] = "Pole u¿ytkownika~5";
+ Text[ portuguese_brazilian ] = "Custom5";
+ Text[ japanese ] = "Õ°»Þ°Ì¨°ÙÄÞ5";
+ Text[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ5";
+ Text[ chinese_simplified ] = "Óû§À¸5";
+ Text[ chinese_traditional ] = "¦Û­qÄæ¦ì 5";
+ Text[ arabic ] = "ÍÞá ÇáãÓÊÎÏã5";
+ Text[ turkish ] = "Kullanýcý alaný~5";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTH_FIELD_ISBN
+{
+ Text = "ISBN" ;
+ Text [ ENGLISH ] = "ISBN" ;
+ Text[ english_us ] = "ISBN";
+ Text[ portuguese ] = "ISBN";
+ Text[ russian ] = "ISBN";
+ Text[ greek ] = "ISBN";
+ Text[ dutch ] = "ISBN";
+ Text[ french ] = "ISBN";
+ Text[ spanish ] = "ISBN";
+ Text[ italian ] = "ISBN";
+ Text[ danish ] = "ISBN";
+ Text[ swedish ] = "ISBN";
+ Text[ polish ] = "ISBN";
+ Text[ portuguese_brazilian ] = "ISBN";
+ Text[ japanese ] = "ISBN";
+ Text[ korean ] = "ISBN";
+ Text[ chinese_simplified ] = "ISBN";
+ Text[ chinese_traditional ] = "ISBN";
+ Text[ arabic ] = "ISBN";
+ Text[ turkish ] = "ISBN";
+ Text[ language_user1 ] = " ";
+};
+
+
+
+
+
diff --git a/sw/source/ui/utlui/makefile.mk b/sw/source/ui/utlui/makefile.mk
new file mode 100644
index 000000000000..2017055274e5
--- /dev/null
+++ b/sw/source/ui/utlui/makefile.mk
@@ -0,0 +1,146 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sw
+TARGET=utlui
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# future: DEMO\finder.obj
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+IMGLST_SRS=$(SRS)$/utlui.srs
+BMP_IN=$(PRJ)$/win/imglst
+
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ bookctrl.cxx \
+ condedit.cxx \
+ content.cxx \
+ finder.cxx \
+ gloslst.cxx \
+ glbltree.cxx \
+ initui.cxx \
+ navipi.cxx \
+ navicfg.cxx \
+ numfmtlb.cxx \
+ prcntfld.cxx \
+ tmplctrl.cxx \
+ uitool.cxx \
+ uiitems.cxx \
+ attrdesc.cxx \
+ swstbctl.cxx \
+ shdwcrsr.cxx \
+ unotools.cxx \
+ zoomctrl.cxx
+
+SRCFILES = \
+ initui.src \
+ gloslst.src \
+ navipi.src \
+ poolfmt.src \
+ attrdesc.src \
+ unotools.src \
+ utlui.src
+
+SLOFILES = \
+ $(SLO)$/bookctrl.obj \
+ $(SLO)$/condedit.obj \
+ $(SLO)$/content.obj \
+ $(SLO)$/finder.obj \
+ $(SLO)$/gloslst.obj \
+ $(SLO)$/glbltree.obj \
+ $(SLO)$/initui.obj \
+ $(SLO)$/navipi.obj \
+ $(SLO)$/navicfg.obj \
+ $(SLO)$/numfmtlb.obj \
+ $(SLO)$/prcntfld.obj \
+ $(SLO)$/tmplctrl.obj \
+ $(SLO)$/uitool.obj \
+ $(SLO)$/uiitems.obj \
+ $(SLO)$/attrdesc.obj \
+ $(SLO)$/swstbctl.obj \
+ $(SLO)$/shdwcrsr.obj \
+ $(SLO)$/unotools.obj \
+ $(SLO)$/zoomctrl.obj
+
+EXCEPTIONSFILES= \
+ $(SLO)$/unotools.obj\
+ $(SLO)$/gloslst.obj \
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/utlui/navicfg.cxx b/sw/source/ui/utlui/navicfg.cxx
new file mode 100644
index 000000000000..fdc9a0eed865
--- /dev/null
+++ b/sw/source/ui/utlui/navicfg.cxx
@@ -0,0 +1,189 @@
+/*************************************************************************
+ *
+ * $RCSfile: navicfg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx> // fuer Pathfinder
+#endif
+#ifndef _NAVICFG_HXX
+#include <navicfg.hxx>
+#endif
+#ifndef _SWCONT_HXX
+#include <swcont.hxx>
+#endif
+
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UNO_ANY_HXX_
+#include <com/sun/star/uno/Any.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_
+#include <com/sun/star/uno/Sequence.hxx>
+#endif
+
+using namespace utl;
+using namespace rtl;
+using namespace com::sun::star::uno;
+
+#define C2U(cChar) OUString::createFromAscii(cChar)
+
+/* -----------------------------08.09.00 16:30--------------------------------
+
+ ---------------------------------------------------------------------------*/
+Sequence<OUString> SwNavigationConfig::GetPropertyNames()
+{
+ static const char* aPropNames[] =
+ {
+ "RootType", //0
+ "SelectedPosition", //1
+ "OutlineLevel", //2
+ "InsertMode", //3
+ "ActiveBlock", //4
+ "ShowListBox", //5
+ "GlobalDocMode" //6
+ };
+ const int nCount = 7;
+ Sequence<OUString> aNames(nCount);
+ OUString* pNames = aNames.getArray();
+ for(int i = 0; i < nCount; i++)
+ {
+ pNames[i] = OUString::createFromAscii(aPropNames[i]);
+ }
+ return aNames;
+}
+/*-----------------13.11.96 11.03-------------------
+
+--------------------------------------------------*/
+
+SwNavigationConfig::SwNavigationConfig() :
+ utl::ConfigItem(C2U("Office.Writer/Navigator")),
+ bIsGlobalActive(TRUE),
+ bIsSmall(FALSE),
+ nRootType(0xffff),
+ nSelectedPos(0),
+ nOutlineLevel(MAXLEVEL),
+ nRegionMode(REGION_MODE_NONE),
+ nActiveBlock(0)
+{
+ Sequence<OUString> aNames = GetPropertyNames();
+ Sequence<Any> aValues = GetProperties(aNames);
+// EnableNotification(aNames);
+ const Any* pValues = aValues.getConstArray();
+ DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed")
+ if(aValues.getLength() == aNames.getLength())
+ {
+ for(int nProp = 0; nProp < aNames.getLength(); nProp++)
+ {
+ DBG_ASSERT(pValues[nProp].hasValue(), "property value missing")
+ if(pValues[nProp].hasValue())
+ {
+ switch(nProp)
+ {
+ case 0: pValues[nProp] >>= nRootType; break;
+ case 1: pValues[nProp] >>= nSelectedPos; break;
+ case 2: pValues[nProp] >>= nOutlineLevel; break;
+ case 3: pValues[nProp] >>= nRegionMode; break;
+ case 4: pValues[nProp] >>= nActiveBlock; break;
+ case 5: bIsSmall = *(sal_Bool*)pValues[nProp].getValue(); break;
+ case 6: bIsGlobalActive = *(sal_Bool*)pValues[nProp].getValue(); break;
+ }
+ }
+ }
+ }
+}
+/* -----------------------------08.09.00 16:35--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwNavigationConfig::~SwNavigationConfig()
+{}
+/* -----------------------------08.09.00 16:35--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwNavigationConfig::Commit()
+{
+ Sequence<OUString> aNames = GetPropertyNames();
+ OUString* pNames = aNames.getArray();
+ Sequence<Any> aValues(aNames.getLength());
+ Any* pValues = aValues.getArray();
+ const Type& rType = ::getBooleanCppuType();
+
+ for(int nProp = 0; nProp < aNames.getLength(); nProp++)
+ {
+ switch(nProp)
+ {
+ case 0: pValues[nProp] <<= nRootType; break;
+ case 1: pValues[nProp] <<= nSelectedPos; break;
+ case 2: pValues[nProp] <<= nOutlineLevel; break;
+ case 3: pValues[nProp] <<= nRegionMode; break;
+ case 4: pValues[nProp] <<= nActiveBlock; break;
+ case 5: pValues[nProp].setValue(&bIsSmall, rType); break;
+ case 6: pValues[nProp].setValue(&bIsGlobalActive, rType); break;
+ }
+ }
+ PutProperties(aNames, aValues);
+}
+
diff --git a/sw/source/ui/utlui/navipi.cxx b/sw/source/ui/utlui/navipi.cxx
new file mode 100644
index 000000000000..f8dd3763762a
--- /dev/null
+++ b/sw/source/ui/utlui/navipi.cxx
@@ -0,0 +1,1814 @@
+/*************************************************************************
+ *
+ * $RCSfile: navipi.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+
+#pragma hdrstop
+
+#define NAVIPI_CXX
+
+#include <string> // HACK: prevent conflict between STLPORT and Workshop headers
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _SV_DRAG_HXX //autogen
+#include <vcl/drag.hxx>
+#endif
+#ifndef _SV_SYSTEM_HXX
+#include <vcl/system.hxx>
+#endif
+#ifndef _URLBMK_HXX //autogen
+#include <svtools/urlbmk.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _FILTER_HXX //autogen
+#include <svtools/filter.hxx>
+#endif
+#ifndef _SOT_FORMATS_HXX
+#include <sot/formats.hxx>
+#endif
+#ifndef _SFXEVENT_HXX //autogen
+#include <sfx2/event.hxx>
+#endif
+#ifndef _SFXIMGMGR_HXX //autogen
+#include <sfx2/imgmgr.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXDOCKWIN_HXX //autogen
+#include <sfx2/dockwin.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx> // fuer Pathfinder
+#endif
+#ifndef _ERRHDL_HXX
+#include <errhdl.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _NAVICFG_HXX
+#include <navicfg.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _ACTCTRL_HXX
+#include <actctrl.hxx>
+#endif
+#ifndef _BOOKMRK_HXX
+#include <bookmrk.hxx>
+#endif
+#ifndef _NAVIPI_HXX
+#include <navipi.hxx>
+#endif
+#ifndef _CONTENT_HXX
+#include <content.hxx>
+#endif
+#ifndef _WORKCTRL_HXX
+#include <workctrl.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _CFGID_H
+#include <cfgid.h>
+#endif
+#ifndef _HELPID_H
+#include <helpid.h>
+#endif
+#ifndef _RIBBAR_HRC
+#include <ribbar.hrc>
+#endif
+#ifndef _NAVIPI_HRC
+#include <navipi.hrc>
+#endif
+#ifndef _UTLUI_HRC
+#include <utlui.hrc>
+#endif
+#ifndef _CFGSTR_HRC
+#include <cfgstr.hrc>
+#endif
+
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+static const sal_Unicode cPrefix = '_';
+
+#define PAGE_CHANGE_TIMEOUT 1000 //Timeout fuer Seitenwechsel
+
+#define JUMP_TYPE_TBL 0
+#define JUMP_TYPE_FRM 1
+#define JUMP_TYPE_GRF 2
+#define JUMP_TYPE_REG 3
+#define JUMP_TYPE_BKM 4
+
+// Version fuer Konfiguration
+
+#define NAVI_VERSION0 0
+#define NAVI_VERSION1 1
+#define NAVI_VERSION2 2 // bIsGlobalActive
+
+#define NAVI_CONFIG_VERSION NAVI_VERSION2
+
+SFX_IMPL_CHILDWINDOW_CONTEXT( SwNavigationChild, SID_NAVIGATOR, SwView )
+
+/*------------------------------------------------------------------------
+ Bechreibung: Steuerzeichen aus dem Outline-Entry filtern
+------------------------------------------------------------------------*/
+
+void SwNavigationPI::CleanEntry( String& rEntry )
+{
+ USHORT i = rEntry.Len();
+ if( i )
+ for( sal_Unicode* pStr = rEntry.GetBufferAccess(); i; --i, ++pStr )
+ if( *pStr == 10 || *pStr == 9 )
+ *pStr = 0x20;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Ausfuehrung der Drag-Operation
+ mit und ohne Childs
+------------------------------------------------------------------------*/
+
+void SwNavigationPI::MoveOutline(USHORT nSource, USHORT nTarget,
+ BOOL bWithChilds)
+{
+ SwView *pView = ::GetActiveView();
+ SwWrtShell &rSh = pView->GetWrtShell();
+ if(nTarget < nSource || nTarget == USHRT_MAX)
+ nTarget ++;
+ if ( rSh.IsOutlineMovable( nSource ))
+ {
+
+ short nMove = nTarget-nSource; //( nDir<0 ) ? 1 : 0 ;
+ rSh.GotoOutline(nSource);
+ if (bWithChilds)
+ rSh.MakeOutlineSel(nSource, nSource, TRUE);
+ // Die selektierten Children zaehlen bei der Bewegung vorwaerts nicht mit
+ USHORT nLastOutlinePos = rSh.GetOutlinePos(MAXLEVEL);
+ if(bWithChilds && nMove > 1 &&
+ nLastOutlinePos < nTarget)
+ {
+ if(!rSh.IsCrsrPtAtEnd())
+ rSh.SwapPam();
+ nMove -= nLastOutlinePos - nSource;
+ }
+ if(!bWithChilds || nMove < 1 || nLastOutlinePos < nTarget )
+ rSh.MoveOutlinePara( nMove );
+ rSh.ClearMark();
+ rSh.GotoOutline( nSource + nMove);
+ FillBox();
+ }
+
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Erzeugen des automatischen Namens des unbenannten Merkers
+------------------------------------------------------------------------*/
+
+inline String &MakeAutoName(String &rToChange, USHORT i)
+{
+ rToChange = cPrefix;
+ rToChange += String::CreateFromInt32( i );
+ return rToChange;
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung: Nach Goto einen Status Rahmenselektion aufheben
+------------------------------------------------------------------------*/
+
+
+void lcl_UnSelectFrm(SwWrtShell *pSh)
+{
+ if (pSh->IsFrmSelected())
+ {
+ pSh->UnSelectFrm();
+ pSh->LeaveSelFrmMode();
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Select der Documentanzeige
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwNavigationPI, DocListBoxSelectHdl, ListBox *, pBox )
+{
+ int nEntryIdx = pBox->GetSelectEntryPos();
+ SwView *pView ;
+ pView = SwModule::GetFirstView();
+ while (nEntryIdx-- && pView)
+ {
+ pView = SwModule::GetNextView(pView);
+ }
+ if(!pView)
+ {
+ nEntryIdx == 0 ?
+ aContentTree.ShowHiddenShell():
+ aContentTree.ShowActualView();
+
+
+ }
+ else
+ {
+ aContentTree.SetConstantShell(pView->GetWrtShellPtr());
+ }
+ return 0;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Select der Typenlistbox
+------------------------------------------------------------------------*/
+/*
+
+IMPL_LINK( SwNavigationPI, TypeListBoxSelectHdl, ListBox *, pBox )
+{
+ USHORT nEntryIdx = pBox->GetSelectEntryPos();
+ USHORT nCount = pBox->GetEntryCount();
+ if(nEntryIdx == nCount - 1)
+ {
+ if(!bPageCtrlsVisible)
+ {
+ bPageCtrlsVisible = TRUE;
+ aContentToolBox.ShowItem( FN_PAGENUMBER );
+ aContentToolBox.HideItem( FN_UP );
+ aContentToolBox.HideItem( FN_DOWN );
+ }
+ }
+ else
+ {
+ if(bPageCtrlsVisible)
+ {
+ aContentToolBox.HideItem( FN_PAGENUMBER );
+ aContentToolBox.ShowItem( FN_UP );
+ aContentToolBox.ShowItem( FN_DOWN );
+ bPageCtrlsVisible = FALSE;
+ }
+ }
+
+ pConfig->SetSelectedPos( nEntryIdx );
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Fuellen der ListBox fuer Outline Sicht oder Dokumente
+ Der PI wird auf volle Groesse gesetzt
+------------------------------------------------------------------------*/
+
+
+void SwNavigationPI::FillBox()
+{
+ if(pContentWrtShell)
+ {
+ aContentTree.SetHiddenShell( pContentWrtShell );
+ aContentTree.Display( FALSE );
+ }
+ else
+ {
+ SwView *pView = ::GetActiveView();
+ if(!pView)
+ {
+ aContentTree.SetActiveShell(0);
+ }
+ else if( pView != pActContView)
+ {
+ SwWrtShell* pWrtShell = pView->GetWrtShellPtr();
+ aContentTree.SetActiveShell(pWrtShell);
+ }
+ else
+ aContentTree.Display( TRUE );
+ pActContView = pView;
+ }
+}
+
+
+void SwNavigationPI::UsePage(SwWrtShell *pSh)
+{
+ if (!pSh)
+ {
+ SwView *pView = ::GetActiveView();
+ pSh = pView ? &pView->GetWrtShell() : 0;
+ GetPageEdit().SetValue(1);
+ }
+ if (pSh)
+ {
+ const USHORT nPageCnt = pSh->GetPageCnt();
+ USHORT nPhyPage, nVirPage;
+ pSh->GetPageNum(nPhyPage, nVirPage);
+
+ GetPageEdit().SetMax(nPageCnt);
+ GetPageEdit().SetLast(nPageCnt);
+ GetPageEdit().SetValue(nPhyPage);
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: SelectHandler der Toolboxen
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwNavigationPI, ToolBoxSelectHdl, ToolBox *, pBox )
+{
+ const USHORT nId = pBox->GetCurItemId();
+ SwView *pView = ::GetActiveView();
+ if (!pView)
+ return 1;
+ SwWrtShell &rSh = pView->GetWrtShell();
+ //MouseModifier fuer Outline-Move besorgen
+
+ //Standard: Unterebenen werden mitgenommen
+ // mit Ctrl Unterebenen nicht mitnehmen
+ BOOL bOutlineWithChilds = ( KEY_MOD1 != pBox->GetModifier());
+ int nFuncId = 0;
+ switch (nId)
+ {
+ case FN_UP:
+ case FN_DOWN:
+ pView->MoveNavigation(FN_DOWN == nId);
+ break;
+ case FN_SHOW_ROOT:
+ {
+ aContentTree.ToggleToRoot();
+ }
+ break;
+ case FN_SHOW_CONTENT_BOX:
+ case FN_SELECT_CONTENT:
+ if(pContextWin->GetFloatingWindow())
+ {
+ if(_IsZoomedIn() )
+ {
+ _ZoomOut();
+ }
+ else
+ {
+ _ZoomIn();
+ }
+ }
+ return TRUE;
+ //break;
+ // Funktionen, die eine direkte Aktion ausloesen
+
+ case FN_SELECT_FOOTER:
+ {
+ rSh.MoveCrsr();
+ const USHORT eType = rSh.GetFrmType(0,FALSE);
+ if (eType & FRMTYPE_FOOTER)
+ {
+ if (rSh.EndPg())
+ nFuncId = FN_END_OF_PAGE;
+ }
+ else if (rSh.GotoFooterTxt())
+ nFuncId = FN_TO_FOOTER;
+ }
+ break;
+ case FN_SELECT_HEADER:
+ {
+ rSh.MoveCrsr();
+ const USHORT eType = rSh.GetFrmType(0,FALSE);
+ if (eType & FRMTYPE_HEADER)
+ {
+ if (rSh.SttPg())
+ nFuncId = FN_START_OF_PAGE;
+ }
+ else if (rSh.GotoHeaderTxt())
+ nFuncId = FN_TO_HEADER;
+ }
+ break;
+ case FN_SELECT_FOOTNOTE:
+ {
+ rSh.MoveCrsr();
+ const USHORT eFrmType = rSh.GetFrmType(0,FALSE);
+ // aus Fussnote zum Anker springen
+ if (eFrmType & FRMTYPE_FOOTNOTE)
+ {
+ if (rSh.GotoFtnAnchor())
+ nFuncId = FN_FOOTNOTE_TO_ANCHOR;
+ }
+ // andernfalls zuerst zum Fussnotentext springen; geht
+ // dies nicht, zur naechten Fussnote; geht auch dies
+ // nicht, zur vorhergehenden Fussnote
+ else
+ {
+ if (rSh.GotoFtnTxt())
+ nFuncId = FN_FOOTNOTE_TO_ANCHOR;
+ else if (rSh.GotoNextFtnAnchor())
+ nFuncId = FN_NEXT_FOOTNOTE;
+ else if (rSh.GotoPrevFtnAnchor())
+ nFuncId = FN_PREV_FOOTNOTE;
+ }
+ }
+ break;
+
+ case FN_SELECT_SET_AUTO_BOOKMARK:
+ MakeMark();
+ break;
+ case FN_ITEM_DOWN:
+ case FN_ITEM_UP:
+ case FN_ITEM_LEFT:
+ case FN_ITEM_RIGHT:
+ case FN_GLOBAL_EDIT:
+ {
+ if(IsGlobalMode())
+ aGlobalTree.ExecCommand(nId);
+ else
+ aContentTree.ExecCommand(nId, bOutlineWithChilds);
+ }
+ break;
+ case FN_GLOBAL_SWITCH:
+ {
+ ToggleTree();
+ pConfig->SetGlobalActive(IsGlobalMode());
+ }
+ break;
+ case FN_GLOBAL_SAVE_CONTENT:
+ {
+ BOOL bSave = rSh.IsGlblDocSaveLinks();
+ rSh.SetGlblDocSaveLinks( !bSave );
+ pBox->CheckItem(FN_GLOBAL_SAVE_CONTENT, !bSave );
+ }
+ break;
+ case FN_CREATE_NAVIGATION:
+ {
+ }
+ break;
+ }
+
+ if (nFuncId)
+ {
+ lcl_UnSelectFrm(&rSh);
+ }
+ pView->GetEditWin().GrabFocus();
+ return TRUE;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: ClickHandler der Toolboxen
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwNavigationPI, ToolBoxClickHdl, ToolBox *, pBox )
+{
+ const USHORT nId = pBox->GetCurItemId();
+ switch (nId)
+ {
+ case FN_DROP_REGION:
+ {
+ PopupMenu *pMenu = new PopupMenu;
+ for (USHORT i = 0; i <= REGION_MODE_EMBEDDED; i++)
+ {
+ pMenu->InsertItem( i + 1, aContextArr[i] );
+ pMenu->SetHelpId(i + 1, HID_NAVI_DRAG_HYP + i);
+ /*HID_NAVI_DRAG_HYP
+ HID_NAVI_DRAG_LINK
+ HID_NAVI_DRAG_COPY */
+ }
+ pMenu->CheckItem( nRegionMode + 1 );
+ pMenu->SetSelectHdl(LINK(this, SwNavigationPI, MenuSelectHdl));
+ pMenu->Execute( pBox,
+ pBox->GetItemRect(FN_DROP_REGION).BottomLeft());
+ pBox->EndSelection();
+ delete pMenu;
+ pBox->Invalidate();
+ }
+ break;
+ case FN_OUTLINE_LEVEL:
+ {
+ PopupMenu *pMenu = new PopupMenu;
+ for (USHORT i = 101; i <= 100 + MAXLEVEL; i++)
+ {
+ pMenu->InsertItem( i, String::CreateFromInt32(i - 100) );
+ pMenu->SetHelpId( i, HID_NAVI_OUTLINES );
+ }
+ pMenu->CheckItem( aContentTree.GetOutlineLevel() + 100 );
+ pMenu->SetSelectHdl(LINK(this, SwNavigationPI, MenuSelectHdl));
+ pMenu->Execute( pBox,
+ pBox->GetItemRect(FN_OUTLINE_LEVEL).BottomLeft());
+ delete pMenu;
+ pBox->EndSelection();
+ pBox->Invalidate();
+ }
+ break;
+ case FN_GLOBAL_UPDATE:
+ case FN_GLOBAL_OPEN:
+ {
+ aGlobalTree.TbxMenuHdl(nId, pBox);
+ }
+ break;
+ }
+
+ return TRUE;
+}
+/*-----------------19.06.97 09:09-------------------
+
+--------------------------------------------------*/
+void __EXPORT SwNavHelpToolBox::MouseButtonDown(const MouseEvent &rEvt)
+{
+ if(rEvt.GetButtons() == MOUSE_LEFT &&
+ FN_CREATE_NAVIGATION == GetItemId(rEvt.GetPosPixel()))
+ {
+ SfxBindings& rBind = SfxViewFrame::Current()->GetBindings();
+ rBind.ENTERREGISTRATIONS();
+ SwScrollNaviPopup* pPopup = new
+ SwScrollNaviPopup(FN_SCROLL_NAVIGATION,
+ SW_RES(RID_SCROLL_NAVIGATION_WIN),
+ rBind);
+ rBind.LEAVEREGISTRATIONS();
+
+ Rectangle aRect = GetItemRect(FN_CREATE_NAVIGATION);
+ aRect.SetPos(OutputToScreenPixel(aRect.TopLeft()));
+ pPopup->StartPopupMode(aRect, FLOATWIN_POPUPMODE_RIGHT|FLOATWIN_POPUPMODE_ALLOWTEAROFF);
+ }
+ else
+ SwHelpToolBox::MouseButtonDown(rEvt);
+}
+
+/*-----------------19.06.97 10:12-------------------
+
+--------------------------------------------------*/
+void __EXPORT SwNavHelpToolBox::RequestHelp( const HelpEvent& rHEvt )
+{
+ USHORT nItemId = GetItemId(ScreenToOutputPixel(rHEvt.GetMousePosPixel()));
+ if( FN_UP == nItemId || FN_DOWN == nItemId )
+ {
+ SetItemText(nItemId, SwScrollNaviPopup::GetQuickHelpText((FN_DOWN == nItemId)));
+ }
+ SwHelpToolBox::RequestHelp(rHEvt);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Action-Handler Edit; wechselt auf die Seite, wenn
+ nicht Gliederungssicht angeschaltet ist.
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwNavigationPI, EditAction, NumEditAction *, pEdit )
+{
+ SwView *pView = ::GetActiveView();
+ if (pView)
+ {
+ if(aPageChgTimer.IsActive())
+ aPageChgTimer.Stop();
+ pView->GetWrtShell().GotoPage((USHORT)pEdit->GetValue());
+ pView->GetEditWin().GrabFocus();
+ pView->GetViewFrame()->GetBindings().Invalidate(FN_STAT_PAGE);
+ }
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Falls die Seite eingestellt werden kann, wird hier
+ das Maximum gesetzt.
+------------------------------------------------------------------------*/
+
+
+IMPL_LINK( SwNavigationPI, EditGetFocus, NumEditAction *, pEdit )
+{
+ SwView *pView = ::GetActiveView();
+ if (!pView)
+ return 0;
+ SwWrtShell &rSh = pView->GetWrtShell();
+
+ const USHORT nPageCnt = rSh.GetPageCnt();
+ pEdit->SetMax(nPageCnt);
+ pEdit->SetLast(nPageCnt);
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+BOOL __EXPORT SwNavigationPI::Close()
+{
+ SFX_APP()->GetBindings().Invalidate(SID_NAVIGATOR);
+ GetActiveView()->GetViewFrame()->GetDispatcher()->Execute(SID_NAVIGATOR);
+ return TRUE;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Setzen einer automatischen Marke
+------------------------------------------------------------------------*/
+
+
+void SwNavigationPI::MakeMark()
+{
+ SwView *pView = ::GetActiveView();
+ if (!pView)
+ return;
+ SwWrtShell &rSh = pView->GetWrtShell();
+
+ const USHORT nBookCnt = rSh.GetBookmarkCnt();
+ USHORT nMarkCount = 0;
+ USHORT nFirstFound = MAX_MARKS;
+ for (USHORT nCount = 0; nCount < nBookCnt; ++nCount)
+ {
+ SwBookmark& rBkmk = rSh.GetBookmark( nCount );
+ if( rBkmk.IsMark() )
+ {
+ String aBookmark( rBkmk.GetName() );
+ aBookmark.Erase(0, 1);
+ nFirstFound = Min(nFirstFound, (USHORT)aBookmark.ToInt32());
+ ++nMarkCount;
+ }
+ }
+ // maximale Anzahl Bookmarks vergeben
+ if (nAutoMarkIdx == MAX_MARKS)
+ nAutoMarkIdx = 1;
+ // erster freier neu vergeben
+ else if (nFirstFound != MAX_MARKS)
+ nAutoMarkIdx = Max(USHORT(1), USHORT(nFirstFound - 1));
+ else
+ ++nAutoMarkIdx;
+
+ String aMark;
+ MakeAutoName(aMark,nAutoMarkIdx);
+ if (nMarkCount >= MAX_MARKS)
+ rSh.DelBookmark( aMark );
+ rSh.SetBookmark(KeyCode(), aMark, aEmptyStr, MARK);
+ SwView::SetActMark( nAutoMarkIdx );
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwNavigationPI::GotoPage()
+{
+ if ( pContextWin->GetFloatingWindow() && pContextWin->GetFloatingWindow()->IsRollUp())
+ _ZoomIn();
+ if(IsGlobalMode())
+ ToggleTree();
+ UsePage(0);
+ GetPageEdit().GrabFocus();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwNavigationPI::_ZoomOut()
+{
+ if (_IsZoomedIn())
+ {
+ FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
+ bIsZoomedIn = FALSE;
+ Size aSz(GetOutputSizePixel());
+ aSz.Height() = nZoomOut;
+ Size aMinOutSizePixel = ((SfxDockingWindow*)GetParent())->GetMinOutputSizePixel();
+ ((SfxDockingWindow*)GetParent())->SetMinOutputSizePixel(Size(
+ aMinOutSizePixel.Width(),nZoomOutInit));
+ pFloat->SetOutputSizePixel(aSz);
+ FillBox();
+ if(IsGlobalMode())
+ {
+ aGlobalTree.Show();
+ }
+ else
+ {
+ aContentTree.Show();
+ aDocListBox.Show();
+ }
+ SvLBoxEntry* pFirst = aContentTree.FirstSelected();
+ if(pFirst)
+ aContentTree.Select(pFirst, TRUE); // toolbox enablen
+ pConfig->SetSmall( FALSE );
+ aContentToolBox.CheckItem(FN_SHOW_CONTENT_BOX);
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwNavigationPI::_ZoomIn()
+{
+ FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
+ if (pFloat &&
+ (!_IsZoomedIn() || ( pContextWin->GetFloatingWindow()->IsRollUp())))
+ {
+ aContentTree.Hide();
+ aDocListBox.Hide();
+ aGlobalTree.Hide();
+ bIsZoomedIn = TRUE;
+ Size aSz(GetOutputSizePixel());
+ if( aSz.Height() > nZoomIn )
+ nZoomOut = ( short ) aSz.Height();
+
+ aSz.Height() = nZoomIn;
+ Size aMinOutSizePixel = ((SfxDockingWindow*)GetParent())->GetMinOutputSizePixel();
+ ((SfxDockingWindow*)GetParent())->SetMinOutputSizePixel(Size(
+ aMinOutSizePixel.Width(), aSz.Height()));
+ pFloat->SetOutputSizePixel(aSz);
+ SvLBoxEntry* pFirst = aContentTree.FirstSelected();
+ if(pFirst)
+ aContentTree.Select(pFirst, TRUE); // toolbox enablen
+ pConfig->SetSmall( TRUE );
+ aContentToolBox.CheckItem(FN_SHOW_CONTENT_BOX, FALSE);
+ }
+}
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void __EXPORT SwNavigationPI::Resize()
+{
+ Window* pParent = GetParent();
+ FloatingWindow* pFloat = ((DockingWindow*)pParent)->GetFloatingWindow();
+ Size aNewSize;
+ if( !_IsZoomedIn() )
+ {
+ if( pFloat)
+ {
+ aNewSize = pFloat->GetOutputSizePixel();
+ }
+ else
+ {
+ aNewSize = pParent->GetOutputSizePixel();
+ }
+ const Point aPos = aContentTree.GetPosPixel();
+ Point aLBPos = aDocListBox.GetPosPixel();
+ long nDist = aPos.X();
+ aNewSize.Height() -= (aPos.Y() + aPos.X() + nDocLBIniHeight + nDist);
+ aNewSize.Width() -= 2 * nDist;
+ aLBPos.Y() = aPos.Y() + aNewSize.Height() + nDist;
+ aDocListBox.Show(!aGlobalTree.IsVisible() && aLBPos.Y() > aPos.Y() );
+
+ Size aDocLBSz = aDocListBox.GetSizePixel();
+ aDocLBSz.Width() = aNewSize.Width();
+ if(aNewSize.Height() < 0)
+ aDocLBSz.Height() = 0;
+ else
+ aDocLBSz.Height() = nDocLBIniHeight;
+ aContentTree.SetSizePixel(aNewSize);
+ // GlobalTree faengt weiter oben an und reicht bis ganz unten
+ aNewSize.Height() += (nDist + nDocLBIniHeight + aPos.Y() - aGlobalTree.GetPosPixel().Y());
+ aGlobalTree.SetSizePixel(aNewSize);
+ aDocListBox.SetPosSizePixel( aLBPos.X(), aLBPos.Y(),
+ aDocLBSz.Width(), aDocLBSz.Height(),
+ WINDOW_POSSIZE_X|WINDOW_POSSIZE_Y|WINDOW_POSSIZE_WIDTH);
+
+ }
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwNavigationPI::SwNavigationPI( SfxBindings* pBindings,
+ SfxChildWindowContext* pCw,
+ Window* pParent) :
+
+ Window( pParent, SW_RES(DLG_NAVIGATION_PI)),
+ SfxControllerItem( SID_DOCFULLNAME, *pBindings ),
+ aContentTree(this, SW_RES(TL_CONTENT)),
+ aGlobalTree(this, SW_RES(TL_GLOBAL)),
+ aContentToolBox(this, SW_RES(TB_CONTENT)),
+ aGlobalToolBox(this, SW_RES(TB_GLOBAL)),
+ aContentImageList(SW_RES(IL_CONTENT)),
+ aDocListBox(this, SW_RES(LB_DOCS)),
+ nActMark(0),
+ nAutoMarkIdx(0),
+ rBindings(*pBindings),
+ bSmallMode(FALSE),
+ bIsZoomedIn(FALSE),
+ bPageCtrlsVisible(FALSE),
+ bGlobalMode(FALSE),
+ nRegionMode(REGION_MODE_NONE),
+ pxObjectShell(0),
+ pContentView(0),
+ pContentWrtShell(0),
+ pActContView(0),
+ pContextWin(pCw),
+ nWishWidth(0),
+ pConfig(SW_MOD()->GetNavigationConfig())
+{
+ for(USHORT k = 0; k < aContentToolBox.GetItemCount(); k++)
+ aContentToolBox.SetItemImage(aContentToolBox.GetItemId(k),
+ aContentImageList.GetImage(aContentToolBox.GetItemId(k)));
+
+ for( k = 0; k < aGlobalToolBox.GetItemCount(); k++)
+ aGlobalToolBox.SetItemImage(aGlobalToolBox.GetItemId(k),
+ aContentImageList.GetImage(aGlobalToolBox.GetItemId(k)));
+
+ aContentToolBox.SetHelpId(HID_NAVIGATOR_TOOLBOX );
+ aGlobalToolBox.SetHelpId(HID_NAVIGATOR_GLOBAL_TOOLBOX);
+ aDocListBox.SetHelpId(HID_NAVIGATOR_LISTBOX );
+
+ nDocLBIniHeight = aDocListBox.GetSizePixel().Height();
+ nZoomOutInit = nZoomOut = Resource::ReadShortRes();
+
+ //NumericField in die Toolbox einfuegen
+ NumEditAction* pEdit = new NumEditAction(
+ &aContentToolBox, SW_RES(NF_PAGE ));
+ pEdit->SetActionHdl(LINK(this, SwNavigationPI, EditAction));
+ pEdit->SetGetFocusHdl(LINK(this, SwNavigationPI, EditGetFocus));
+ pEdit->SetModifyHdl(LINK(this, SwNavigationPI, PageEditModifyHdl));
+
+ bPageCtrlsVisible = TRUE;
+
+// Rectangle aFirstRect = aContentToolBox.GetItemRect(FN_SHOW_ROOT);
+// USHORT nWidth = 2 * (USHORT)aFirstRect.Left();
+ //doppelte Separatoren sind nicht erlaubt, also muss
+ //die passende Groesse anders ermittelt werden
+ Rectangle aFirstRect = aContentToolBox.GetItemRect(FN_DROP_REGION);
+ Rectangle aSecondRect = aContentToolBox.GetItemRect(FN_ITEM_DOWN);
+ USHORT nWidth = USHORT(aSecondRect.Left() - aFirstRect.Left());
+
+ Size aItemWinSize( nWidth, aFirstRect.Bottom() - aFirstRect.Top() );
+ pEdit->SetSizePixel(aItemWinSize);
+ aContentToolBox.InsertWindow( FN_PAGENUMBER, pEdit, 0, 5);
+ //aContentToolBox.InsertSeparator(4);
+ aContentToolBox.SetHelpId(FN_PAGENUMBER, HID_NAVI_TBX16);
+ aContentToolBox.ShowItem( FN_PAGENUMBER );
+
+ for( USHORT i = 0; i <= REGION_MODE_EMBEDDED; i++ )
+ {
+ aContextArr[i] = SW_RESSTR(ST_HYPERLINK + i);
+ aStatusArr[i] = SW_RESSTR(ST_STATUS_FIRST + i);
+ }
+ aStatusArr[3] = SW_RESSTR(ST_ACTIVE_VIEW);
+ FreeResource();
+
+
+ const Size& rOutSize = GetOutputSizePixel();
+
+ nZoomIn = (short)rOutSize.Height();
+ Point aBoxPos = aContentTree.GetPosPixel();
+
+ //Der linke und rechte Rand um die Toolboxen soll gleich sein
+ nWishWidth = aContentToolBox.CalcWindowSizePixel().Width();
+ nWishWidth += 2 * aContentToolBox.GetPosPixel().X();
+
+// Navi um Border vergroessern
+// FloatingWindow* pFloat = ((DockingWindow*)pParent)->GetFloatingWindow();
+// if(pFloat)
+ ((SfxDockingWindow*)pParent)->SetMinOutputSizePixel(Size(nWishWidth, nZoomOutInit));
+ SetOutputSizePixel( Size( nWishWidth, nZoomOutInit));
+
+ aContentTree.SetWindowBits( WB_HASBUTTONS|WB_HASBUTTONSATROOT|
+ WB_CLIPCHILDREN|WB_HSCROLL|WB_FORCE_MAKEVISIBLE );
+
+ aContentTree.SetSpaceBetweenEntries(0);
+ aContentTree.SetSelectionMode( SINGLE_SELECTION );
+ aContentTree.SetDragDropMode( SV_DRAGDROP_CTRL_MOVE |
+ SV_DRAGDROP_CTRL_COPY |
+ SV_DRAGDROP_ENABLE_TOP );
+ aContentTree.EnableAsyncDrag(TRUE);
+ aContentTree.Show();
+ aContentToolBox.CheckItem(FN_SHOW_CONTENT_BOX, TRUE);
+
+// TreeListBox fuer Globaldokument
+ aGlobalTree.SetSelectionMode( MULTIPLE_SELECTION );
+ aGlobalTree.SetWindowBits( WB_HASBUTTONS|WB_HASBUTTONSATROOT|
+ WB_CLIPCHILDREN|WB_HSCROLL );
+ Size aGlblSize(aGlobalToolBox.CalcWindowSizePixel());
+ aGlobalToolBox.SetSizePixel(aGlblSize);
+
+// Handler
+
+ Link aLk = LINK(this, SwNavigationPI, ToolBoxSelectHdl);
+ aContentToolBox.SetSelectHdl( aLk );
+ aGlobalToolBox.SetSelectHdl( aLk );
+ aDocListBox.SetSelectHdl(LINK(this, SwNavigationPI,
+ DocListBoxSelectHdl));
+ aContentToolBox.SetClickHdl( LINK(this, SwNavigationPI, ToolBoxClickHdl) );
+ aGlobalToolBox.SetClickHdl( LINK(this, SwNavigationPI, ToolBoxClickHdl) );
+ aGlobalToolBox.CheckItem(FN_GLOBAL_SWITCH, TRUE);
+
+#ifndef MAC
+ Font aFont(aContentTree.GetFont());
+ aFont.SetWeight(WEIGHT_NORMAL);
+ aContentTree.SetFont(aFont);
+ aGlobalTree.SetFont(aFont);
+ GetPageEdit().SetFont(aFont);
+
+#endif
+#if defined( WIN ) || defined( WNT )
+ Font aSwiss = System::GetStandardFont( STDFONT_SWISS );
+ aContentTree.SetFont(aSwiss);
+ aGlobalTree.SetFont(aSwiss);
+#endif
+ StartListening(*SFX_APP());
+ SfxImageManager* pImgMan = SFX_APP()->GetImageManager();
+ pImgMan->RegisterToolBox(&aContentToolBox, SFX_TOOLBOX_CHANGEOUTSTYLE);
+ pImgMan->RegisterToolBox(&aGlobalToolBox, SFX_TOOLBOX_CHANGEOUTSTYLE);
+ if(IsGlobalDoc())
+ {
+ SwView *pActView = ::GetActiveView();
+ aGlobalToolBox.CheckItem(FN_GLOBAL_SAVE_CONTENT,
+ pActView->GetWrtShellPtr()->IsGlblDocSaveLinks());
+ if(pConfig->IsGlobalActive())
+ ToggleTree();
+ else
+ Application::PostUserEvent( LINK( this, SwNavigationPI, ReadOnlyHdl ) );
+ }
+ UsePage(0);
+ aPageChgTimer.SetTimeoutHdl(LINK(this, SwNavigationPI, ChangePageHdl));
+ aPageChgTimer.SetTimeout(PAGE_CHANGE_TIMEOUT);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+__EXPORT SwNavigationPI::~SwNavigationPI()
+{
+ if(IsGlobalDoc() && !IsGlobalMode())
+ {
+ SwView *pView = ::GetActiveView();
+ SwWrtShell &rSh = pView->GetWrtShell();
+ if( !rSh.IsAllProtect() )
+ pView->GetDocShell()->SetReadOnlyUI(FALSE);
+ }
+
+ EndListening(*SFX_APP());
+ SfxImageManager* pImgMan = SFX_APP()->GetImageManager();
+ pImgMan->ReleaseToolBox(&aContentToolBox);
+ pImgMan->ReleaseToolBox(&aGlobalToolBox);
+ delete aContentToolBox.GetItemWindow(FN_PAGENUMBER);
+ delete aContentToolBox.GetItemWindow(FN_CONTENT_LB);
+ if(pxObjectShell)
+ {
+ if(pxObjectShell->Is())
+ (*pxObjectShell)->DoClose();
+ delete pxObjectShell;
+ }
+
+}
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void __EXPORT SwNavigationPI::StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState )
+{
+ if(nSID == SID_DOCFULLNAME)
+ {
+ SwView *pActView = ::GetActiveView();
+ if(pActView)
+ {
+ SwWrtShell* pWrtShell = pActView->GetWrtShellPtr();
+ aContentTree.SetActiveShell(pWrtShell);
+ BOOL bGlobal = IsGlobalDoc();
+ aContentToolBox.EnableItem(FN_GLOBAL_SWITCH, bGlobal);
+ if(!bGlobal && IsGlobalMode() ||
+ !IsGlobalMode() && pConfig->IsGlobalActive())
+ {
+ ToggleTree();
+ }
+ if(bGlobal)
+ {
+ aGlobalToolBox.CheckItem(FN_GLOBAL_SAVE_CONTENT, pWrtShell->IsGlblDocSaveLinks());
+ }
+ }
+ else
+ {
+ aContentTree.SetActiveShell(0);
+ }
+ UpdateListBox();
+ }
+}
+
+/*------------------------------------------------------------------------
+ Bechreibung: NumericField aus der Toolbox holen
+------------------------------------------------------------------------*/
+
+NumEditAction& SwNavigationPI::GetPageEdit()
+{
+ return *(NumEditAction*)aContentToolBox.GetItemWindow(FN_PAGENUMBER);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+/*
+
+ListBox& SwNavigationPI::GetTypeSelBox()
+{
+ DBG_ASSERT(aContentToolBox.GetItemWindow(FN_CONTENT_LB),
+ "ItemWindow nicht vorhanden")
+ return *(ListBox*)aContentToolBox.GetItemWindow(FN_CONTENT_LB);
+
+}*/
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SfxChildAlignment __EXPORT SwNavigationPI::CheckAlignment
+ (
+ SfxChildAlignment eActAlign,
+ SfxChildAlignment eAlign
+ )
+{
+SfxChildAlignment eRetAlign;
+
+ if(_IsZoomedIn())
+ eRetAlign = SFX_ALIGN_NOALIGNMENT;
+ else
+ switch (eAlign)
+ {
+ case SFX_ALIGN_BOTTOM:
+ case SFX_ALIGN_LOWESTBOTTOM:
+ case SFX_ALIGN_HIGHESTBOTTOM:
+ eRetAlign = eActAlign;
+ break;
+
+ case SFX_ALIGN_TOP:
+ case SFX_ALIGN_HIGHESTTOP:
+ case SFX_ALIGN_LOWESTTOP:
+ 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;
+ break;
+
+ default:
+ eRetAlign = eAlign;
+ break;
+ }
+ return eRetAlign;
+
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+BOOL SwNavigationPI::IsInDrag() const
+{
+ return aContentTree.IsInternalDrag() || aContentTree.IsInDrag();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Benachrichtigung bei geaenderter DocInfo
+ --------------------------------------------------------------------*/
+
+void __EXPORT SwNavigationPI::Notify( SfxBroadcaster&, const SfxHint& rHint )
+{
+ if(rHint.ISA(SfxEventHint))
+ {
+ if( pxObjectShell &&
+ ((SfxEventHint&) rHint).GetEventId() == SFX_EVENT_CLOSEAPP)
+ {
+ DELETEZ(pxObjectShell);
+ }
+ else if(((SfxEventHint&) rHint).GetEventId() == SFX_EVENT_OPENDOC)
+ {
+
+ SwView *pActView = ::GetActiveView();
+ if(pActView)
+ {
+ SwWrtShell* pWrtShell = pActView->GetWrtShellPtr();
+ aContentTree.SetActiveShell(pWrtShell);
+ if(aGlobalTree.IsVisible())
+ {
+ if(aGlobalTree.Update())
+ aGlobalTree.Display();
+ else
+ // wenn kein Update notwendig, dann zumindest painten
+ // wg. der roten Eintraege fuer broken links
+ aGlobalTree.Invalidate();
+ }
+ }
+ }
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwNavigationPI, MenuSelectHdl, Menu *, pMenu )
+{
+ USHORT nMenuId = pMenu->GetCurItemId();
+ if(nMenuId != USHRT_MAX)
+ {
+ if(nMenuId < 100)
+ SetRegionDropMode( --nMenuId);
+ else
+ aContentTree.SetOutlineLevel(nMenuId - 100);
+ }
+ return 0;
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwNavigationPI::UpdateListBox()
+{
+ aDocListBox.SetUpdateMode(FALSE);
+ aDocListBox.Clear();
+ SwView *pActView = ::GetActiveView();
+ BOOL bDisable = pActView == 0;
+ SwView *pView = SwModule::GetFirstView();
+ USHORT nCount = 0;
+ USHORT nAct = 0;
+ USHORT nConstPos = 0;
+ const SwView* pConstView = aContentTree.IsConstantView() &&
+ aContentTree.GetActiveWrtShell() ?
+ &aContentTree.GetActiveWrtShell()->GetView():
+ 0;
+ while (pView)
+ {
+ String sEntry = pView->GetDocShell()->GetTitle();
+ sEntry += C2S(" (");
+ if (pView == pActView)
+ {
+ nAct = nCount;
+ sEntry += aStatusArr[ST_ACTIVE - ST_STATUS_FIRST];
+ }
+ else
+ sEntry += aStatusArr[ST_INACTIVE - ST_STATUS_FIRST];
+ sEntry += ')';
+ aDocListBox.InsertEntry(sEntry);
+
+
+ if (pConstView && pView == pConstView)
+ nConstPos = nCount;
+
+ pView = SwModule::GetNextView(pView);
+ nCount++;
+ }
+ aDocListBox.InsertEntry(aStatusArr[3]); //"Aktives Fenster"
+ nCount++;
+
+ if(aContentTree.GetHiddenWrtShell())
+ {
+ String sEntry = aContentTree.GetHiddenWrtShell()->GetView().
+ GetDocShell()->GetTitle();
+ sEntry += C2S(" (");
+ sEntry += aStatusArr[ST_HIDDEN - ST_STATUS_FIRST];
+ sEntry += ')';
+ aDocListBox.InsertEntry(sEntry);
+ bDisable = FALSE;
+ }
+ if(aContentTree.IsActiveView())
+ {
+ //entweder den Namen des akt. Docs oder "Aktives Dokument"
+ USHORT nTmp = pActView ? nAct : --nCount;
+ aDocListBox.SelectEntryPos( nTmp );
+ }
+ else if(aContentTree.IsHiddenView())
+ {
+ aDocListBox.SelectEntryPos(nCount);
+ }
+ else
+ aDocListBox.SelectEntryPos(nConstPos);
+
+ aDocListBox.Enable( !bDisable );
+ aDocListBox.SetUpdateMode(TRUE);
+}
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+SwNavigationChild::SwNavigationChild( Window* pParent,
+ USHORT nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo ) :
+ SfxChildWindowContext( nId )
+{
+ SwNavigationPI* pNavi = new SwNavigationPI( pBindings, this, pParent );
+ SetWindow( pNavi );
+ SfxViewFrame::Current()->GetBindings().Invalidate(SID_NAVIGATOR);
+ String sExtra = pInfo->aExtraString;
+
+ SwNavigationConfig* pNaviConfig = SW_MOD()->GetNavigationConfig();
+
+ USHORT nRootType = pNaviConfig->GetRootType();
+ if( nRootType < CONTENT_TYPE_MAX )
+ {
+ pNavi->aContentTree.SetRootType(nRootType);
+ pNavi->aContentToolBox.CheckItem(FN_SHOW_ROOT, TRUE);
+ }
+ pNavi->aContentTree.SetOutlineLevel(pNaviConfig->GetOutlineLevel());
+ pNavi->SetRegionDropMode(pNaviConfig->GetRegionMode());
+
+
+ if(GetFloatingWindow() && pNaviConfig->IsSmall())
+ {
+ pNavi->_ZoomIn();
+ }
+
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+BOOL __EXPORT SwNavigationPI::Drop( const DropEvent& )
+{
+ if(!aContentTree.IsInDrag())
+ {
+ String aFileName;
+
+ const USHORT nCount = DragServer::GetItemCount();
+
+ for ( USHORT i = 0; i < nCount; ++i )
+ {
+ aFileName = SwNavigationPI::CreateDropFileName(i);
+
+ if(aFileName.Len() &&
+ STRING_NOTFOUND == aFileName.Search('#')
+ && (!sContentFileName.Len() || sContentFileName != aFileName ))
+ {
+ aFileName.EraseTrailingChars(char(0));
+ sContentFileName = aFileName;
+ if(pxObjectShell)
+ {
+ aContentTree.SetHiddenShell( 0 );
+ (*pxObjectShell)->DoClose();
+ DELETEZ( pxObjectShell);
+ }
+ SfxStringItem aFileItem(SID_FILE_NAME, aFileName);
+ String sOptions = C2S("HRC");
+ SfxStringItem aOptionsItem(SID_OPTIONS,sOptions);
+ SfxLinkItem aLink(SID_DONELINK, LINK(this, SwNavigationPI, DoneLink));
+ GetActiveView()->GetViewFrame()->GetDispatcher()->Execute(
+ SID_OPENDOC, SFX_CALLMODE_ASYNCHRON,
+ &aFileItem, &aOptionsItem, &aLink, 0L);
+ }
+ }
+ }
+ return TRUE;
+}
+
+/*-----------------16.06.97 15:05-------------------
+
+--------------------------------------------------*/
+String SwNavigationPI::CreateDropFileName( USHORT nItem )
+{
+ INetBookmark aBkmk( aEmptyStr, aEmptyStr );
+ String aFileName;
+
+ if( aBkmk.PasteDragServer( nItem ) )
+ aFileName = aBkmk.GetURL();
+ else if(DragServer::HasFormat( nItem, FORMAT_FILE))
+ aFileName = DragServer::PasteFile( nItem );
+ else if( DragServer::HasFormat( nItem, SOT_FORMATSTR_ID_FILENAME ))
+ {
+ ULONG nLen = DragServer::GetDataLen( nItem, SOT_FORMATSTR_ID_FILENAME );
+ DragServer::PasteData( nItem, aFileName.AllocBuffer( nLen/2 ),
+ nLen, SOT_FORMATSTR_ID_FILENAME );
+
+ }
+ return aFileName;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+IMPL_LINK(SwNavigationPI, DoneLink, SfxPoolItem *, pItem)
+{
+ const SfxViewFrameItem* pFrameItem = PTR_CAST(SfxViewFrameItem, pItem );
+ if( pFrameItem )
+ {
+ SfxViewFrame* pFrame = pFrameItem->GetFrame();
+ if(pFrame)
+ {
+ aContentTree.Clear();
+ pContentView = PTR_CAST(SwView, pFrame->GetViewShell());
+ DBG_ASSERT(pContentView, "keine SwView")
+ if(pContentView)
+ pContentWrtShell = pContentView->GetWrtShellPtr();
+ else
+ pContentWrtShell = 0;
+ pxObjectShell = new SfxObjectShellLock(pFrame->GetObjectShell());
+ FillBox();
+ aContentTree.Update();
+ }
+ }
+ return 0;
+}
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+BOOL __EXPORT SwNavigationPI::QueryDrop( DropEvent& rEvt )
+{
+ rEvt.SetAction(DROP_COPY);
+ if (!aContentTree.IsInDrag())
+ {
+ const SotDataObject& rData = *rEvt.GetData();
+ const SvDataTypeList& rTypeLst = rData.GetTypeList();
+
+ if( rTypeLst.Get( FORMAT_FILE ) )
+ {
+ String aFileName;
+ SvData aData( FORMAT_FILE, MEDIUM_ALL );
+ if( aData.GetData( aFileName ) )
+ {
+ GraphicDescriptor aDesc( aFileName );
+ if( aDesc.Detect() ) // keine Grafiken annehmen
+ return FALSE;
+ return TRUE;
+ }
+ return FALSE;
+ }
+
+ if( rTypeLst.Get( FORMAT_STRING ) || INetBookmark::HasFormat( rData ))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+/*-----------------27.11.96 13.00-------------------
+
+--------------------------------------------------*/
+
+void SwNavigationPI::SetRegionDropMode(USHORT nNewMode)
+{
+ nRegionMode = nNewMode;
+ pConfig->SetRegionMode( nRegionMode );
+
+ USHORT nId = FN_DROP_REGION;
+ if(nRegionMode == REGION_MODE_LINK)
+ nId = FN_DROP_REGION_LINK;
+ else if(nRegionMode == REGION_MODE_EMBEDDED)
+ nId = FN_DROP_REGION_COPY;
+
+ aContentToolBox.SetItemImage(FN_DROP_REGION,
+ aContentImageList.GetImage(nId));
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+BOOL __EXPORT SwNavigationChild::Drop( const DropEvent& rEvt)
+{
+ return GetWindow()->Drop(rEvt);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+BOOL __EXPORT SwNavigationChild::QueryDrop( DropEvent& rEvt)
+{
+ return GetWindow()->QueryDrop(rEvt);
+}
+
+
+/*-----------------12.06.97 09:47-------------------
+
+--------------------------------------------------*/
+
+BOOL SwNavigationPI::ToggleTree()
+{
+ BOOL bRet = TRUE;
+ BOOL bGlobalDoc = IsGlobalDoc();
+ if(!IsGlobalMode() && bGlobalDoc)
+ {
+ SetUpdateMode(FALSE);
+ if(_IsZoomedIn())
+ _ZoomOut();
+ aGlobalTree.Show();
+ aGlobalToolBox.Show();
+ aContentTree.Hide();
+ aContentToolBox.Hide();
+ aDocListBox.Hide();
+ SetGlobalMode(TRUE);
+ SetUpdateMode(TRUE);
+ }
+ else
+ {
+ aGlobalTree.Hide();
+ aGlobalToolBox.Hide();
+ if(!_IsZoomedIn())
+ {
+ aContentTree.Show();
+ aContentToolBox.Show();
+ aDocListBox.Show();
+ }
+ bRet = FALSE;
+ SetGlobalMode(FALSE);
+ }
+ if(bGlobalDoc)
+ {
+ Application::PostUserEvent( LINK( this, SwNavigationPI, ReadOnlyHdl ) );
+ }
+ return bRet;
+}
+
+/*-----------------13.06.97 09:42-------------------
+
+--------------------------------------------------*/
+BOOL SwNavigationPI::IsGlobalDoc() const
+{
+ BOOL bRet = FALSE;
+ SwView *pView = ::GetActiveView();
+ if(pView)
+ {
+ SwWrtShell &rSh = pView->GetWrtShell();
+ bRet = rSh.IsGlobalDoc();
+ }
+ return bRet;
+}
+/*-----------------19.06.97 08:21-------------------
+
+--------------------------------------------------*/
+IMPL_LINK( SwNavigationPI, ReadOnlyHdl, void *, EMPTYARG )
+{
+/*
+JP 25.01.99: die Umschaltung auf UI-Readonly wird nicht mehr benoetigt, weil
+ der Cursor jetzt in Readonly-Inhalt gesetzt werden kann.
+
+ if(IsGlobalMode())
+ {
+ SwView *pView = ::GetActiveView();
+ SwWrtShell &rSh = pView->GetWrtShell();
+ if( !rSh.IsAllProtect() )
+ pView->GetDocShell()->SetReadOnlyUI(FALSE);
+ }
+ else
+ {
+ SwView *pView = ::GetActiveView();
+ SwWrtShell &rSh = pView->GetWrtShell();
+ if( !rSh.IsReadOnlyAvailable() )
+ {
+// SfxObjectShell* pObjShell = SfxObjectShell::Current();
+// pObjShell->SetReadOnlyUI();
+ pView->GetDocShell()->SetReadOnlyUI( TRUE );
+ }
+ }
+*/
+ return 0;
+}
+/* -----------------26.10.98 08:10-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwNavigationPI, ChangePageHdl, Timer*, EMPTYARG )
+{
+ EditAction(&GetPageEdit());
+ GetPageEdit().GrabFocus();
+ return 0;
+}
+/* -----------------26.10.98 08:14-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwNavigationPI, PageEditModifyHdl, Edit*, EMPTYARG )
+{
+ if(aPageChgTimer.IsActive())
+ aPageChgTimer.Stop();
+ aPageChgTimer.Start();
+ return 0;
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.231 2000/09/18 16:06:18 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.230 2000/09/08 15:11:58 os
+ use configuration service
+
+ Revision 1.229 2000/09/07 15:03:22 os
+ SFX_BINDINGS removed
+ #78618# CreateFromInt32
+
+ Revision 1.228 2000/07/03 08:55:03 jp
+ must changes for VCL
+
+ Revision 1.227 2000/05/24 13:48:35 hr
+ conflict between STLPORT and Workshop header
+
+ Revision 1.226 2000/05/23 19:54:27 jp
+ Bugfixes for Unicode
+
+ Revision 1.225 2000/04/18 15:14:08 os
+ UNICODE
+
+ Revision 1.224 2000/03/03 15:17:05 os
+ StarView remainders removed
+
+ Revision 1.223 2000/02/11 15:00:45 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.222 1999/10/25 07:26:56 os
+ #69021# prevent showing of controls if ZoomedIn
+
+ Revision 1.221 1999/09/10 08:36:52 os
+ Chg: ExtraData in resources
+
+ Revision 1.220 1999/06/09 11:29:42 JP
+ have to change: SvxINetBookmark -> INetBookmark
+
+
+ Rev 1.219 09 Jun 1999 13:29:42 JP
+ have to change: SvxINetBookmark -> INetBookmark
+
+ Rev 1.218 19 Apr 1999 17:14:48 JP
+ Bug #64992#: ClearEntry mit Leerstring verhindern
+
+ Rev 1.217 01 Apr 1999 11:14:08 OS
+ #64267# breiteres NumericField statt doppelter Separatoren
+
+ Rev 1.216 25 Jan 1999 13:50:10 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.215 20 Jan 1999 17:09:18 AWO
+ #59398# FormatIds
+
+ Rev 1.214 11 Jan 1999 14:37:54 OS
+ #58637# nach Reload im Global-Dok mind. neu painten
+
+ Rev 1.213 05 Jan 1999 07:56:20 OS
+ #60618# Global-Toolbox auch am ImageManager registrieren
+
+ Rev 1.212 27 Nov 1998 14:59:04 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.211 03 Nov 1998 12:24:34 OS
+ 58830# Enter/LeaveRegistrations
+
+ Rev 1.210 26 Oct 1998 10:00:00 OS
+ #58390# Seitenfeld springt Seite mit Zeitverzoegerung an
+
+ Rev 1.209 17 Aug 1998 16:11:22 OS
+ fuer die Doc-ListBox docshell-Title benutzen #54551#
+
+ Rev 1.208 29 Jul 1998 12:18:58 OS
+ FORCE_MAKE_VISIBLE benutzen - #53787#
+
+ Rev 1.207 15 Jul 1998 12:53:06 OS
+ Navigator an der SwView registrieren #34794#
+
+ Rev 1.206 10 Jul 1998 14:03:10 MH
+ internal comp.err
+
+ Rev 1.205 02 Jul 1998 16:57:06 OM
+ #46638# Keine Grafiken auf Navigator droppen
+
+ Rev 1.204 24 Apr 1998 17:21:30 OS
+ ListBox-Hoehe nicht setzen #49766#
+
+ Rev 1.203 31 Mar 1998 15:31:10 OS
+ SetReadonlyUI von IsAllProtect abhaengig #49077#
+
+ Rev 1.202 17 Mar 1998 17:32:02 OS
+ Separator neben dem NumericField #47922#
+
+ Rev 1.201 12 Mar 1998 07:51:24 OS
+ Toolbox umsortiert #47922#
+
+ Rev 1.200 05 Feb 1998 07:47:40 OS
+ DocListBox im Globaldoc immer hiden #46777#
+
+ Rev 1.199 04 Feb 1998 14:28:04 OS
+ DocListbox verstecken, wenn sie zu weit oben liegt #46777#
+
+ Rev 1.198 12 Dec 1997 13:58:04 OS
+ neuer Bookmark-Typ
+
+ Rev 1.197 05 Dec 1997 16:51:44 OS
+ Numerierungsumbau
+
+ Rev 1.196 28 Nov 1997 14:00:22 OS
+ Status fuer SHOW_CONTENT_BOX im _ZoomIn/_ZoomOut setzen #45580#
+
+ Rev 1.195 21 Nov 1997 12:10:16 MA
+ includes
+
+ Rev 1.194 03 Nov 1997 13:59:28 MA
+ precomp entfernt
+
+ Rev 1.193 04 Sep 1997 17:15:58 MA
+ includes
+
+ Rev 1.192 29 Aug 1997 15:39:00 OS
+ PopupMenu::Execute mit Window* fuer VCL
+
+ Rev 1.191 17 Jul 1997 15:23:54 OS
+ nach Reload durch Notfy die TreeListBoxen aktualisieren #41775#
+
+ Rev 1.190 15 Jul 1997 11:31:00 OS
+ Ids fuer Navigator PullDown-Menues
+
+ Rev 1.189 08 Jul 1997 14:13:32 OS
+ ConfigItems von der App ans Module
+
+ Rev 1.188 03 Jul 1997 16:26:10 OS
+ ToggleTree: _ZoomOut gfs. zuerst rufen
+
+ Rev 1.187 23 Jun 1997 18:46:26 HJS
+ includes
+
+ Rev 1.186 21 Jun 1997 14:15:36 OS
+ typ. Anf.zeichen werden nicht mehr gebraucht, Font an den TreeListBoxen auf STDFONT_SWISS
+
+ Rev 1.185 20 Jun 1997 13:54:58 OS
+ Move ueber View-Methode
+
+ Rev 1.184 19 Jun 1997 17:36:40 OS
+ Reste Globaldokumente
+
+ Rev 1.183 19 Jun 1997 11:02:50 OS
+ ReadOnly-Handling, Toolbox: RequestHelp und MousebuttonDown
+
+ Rev 1.182 18 Jun 1997 13:20:52 OS
+ Segmentierung raus
+
+ Rev 1.181 18 Jun 1997 13:08:38 OS
+ Globaldokument: Eintraege verschieben, _ZoomIn/Out angepasst
+
+ Rev 1.180 17 Jun 1997 10:17:22 OS
+ Globaldokument Teil 4 - Drag and Drop
+
+ Rev 1.179 16 Jun 1997 12:01:22 OS
+ Globaldokument Teil 3
+
+ Rev 1.178 14 Jun 1997 08:50:00 OS
+ Globaldokument Teil 2
+
+ Rev 1.177 13 Jun 1997 07:36:06 OS
+ Erweiterung fuer Globaldokument
+
+ Rev 1.176 28 May 1997 11:58:14 OS
+ Expand/Collapse-Zustand merken
+
+ Rev 1.175 13 May 1997 11:48:38 OS
+ Vorwaertsbew. mit Children per Drag and Drop: selektierte Eintreage abziehen #39885#
+
+ Rev 1.174 16 Apr 1997 11:50:58 OS
+ EnableAsyncDrag() an der TreeListBox
+
+ Rev 1.173 14 Apr 1997 16:28:16 OS
+ HelpId fuer InhaltstypenListBox
+
+ Rev 1.172 08 Apr 1997 10:28:34 MA
+ includes
+
+ Rev 1.171 27 Mar 1997 11:59:52 OS
+ Get7SetMinOutputSizePixel am SfxDockingWindow
+
+ Rev 1.170 20 Feb 1997 17:02:08 OS
+ GotoRegion impl., Frame und Grafik getrennt
+
+ Rev 1.169 11 Feb 1997 14:21:48 OS
+ DropMode mit variablen Images
+
+ Rev 1.168 31 Jan 1997 13:35:44 OS
+ HelpIds fuer Navigator-Toolbox und -Listbox
+
+ Rev 1.167 10 Jan 1997 14:18:54 OS
+ ConfigItem jetzt richtig
+
+ Rev 1.166 27 Nov 1996 16:32:46 OS
+ ConfigItem mitpflegen
+
+ Rev 1.165 20 Nov 1996 16:20:58 OS
+ Verschieben von Ueberschriften nur, wenn sie selektiert sind
+
+ Rev 1.164 14 Nov 1996 19:01:38 OS
+ jetzt auch wieder als PCH
+
+ Rev 1.163 13 Nov 1996 14:30:52 OS
+ neues ConfigItem: SwNavigationConfig
+
+ Rev 1.162 12 Nov 1996 18:17:16 OS
+ Resizing: Wunschbreite merken
+
+ Rev 1.161 12 Nov 1996 17:10:18 OS
+ Resizing, _ZoomIn/Out funktionieren wieder
+
+ Rev 1.160 11 Nov 1996 10:54:12 MA
+ ResMgr
+
+ Rev 1.159 05 Nov 1996 16:55:34 OS
+ Resize auch wieder im gedockten Zustand
+
+ Rev 1.158 05 Nov 1996 15:27:16 OS
+ Umstellung auf ChildWindowContext
+
+ Rev 1.157 24 Oct 1996 13:36:44 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.156 02 Oct 1996 08:08:00 MA
+ Umstellung Enable/Disable
+
+ Rev 1.155 28 Aug 1996 15:42:34 OS
+ includes
+
+ Rev 1.154 27 Jul 1996 15:33:34 OS
+ UpdateListBox auch ohne akt. View aufrufen
+
+ Rev 1.153 22 Jul 1996 15:06:56 OS
+ zusammengefaltete Groesse...
+
+ Rev 1.152 12 Jul 1996 13:23:30 OS
+ Konfiguration sichern
+
+ Rev 1.151 09 Jul 1996 17:40:18 OS
+ Resize: Listbox auf Null verkleinern, wenn sie nicht unter die Toolbox passt
+
+ Rev 1.150 04 Jul 1996 16:15:02 OS
+ richtige Anzeige der Listbox auch ohne aktive SwView
+
+ Rev 1.149 03 Jul 1996 14:24:42 OS
+ Listboxanzeige umgebaut, feste Viewanzeige moeglich
+
+ Rev 1.148 01 Jul 1996 16:00:26 OS
+ komplette Kontextmenues, Outlinetiefe einstellbar
+
+ Rev 1.147 28 Jun 1996 15:20:38 OS
+ drei Modi fuer D&D, Kontextmenue
+
+ Rev 1.146 26 Jun 1996 16:08:44 OS
+ Dispatcher::Execute angepasst, ::GotoPage aktiviert wieder das Seitenzahlfeld
+
+ Rev 1.145 26 Jun 1996 14:29:10 OS
+ Sprungfunktionen vervollstaendigt, Tastatursteuerung
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/utlui/navipi.hrc b/sw/source/ui/utlui/navipi.hrc
new file mode 100644
index 000000000000..9f68682da4bd
--- /dev/null
+++ b/sw/source/ui/utlui/navipi.hrc
@@ -0,0 +1,128 @@
+/*************************************************************************
+ *
+ * $RCSfile: navipi.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 TB_1 1
+#define TB_2 2
+#define TB_3 3
+#define TB_4 4
+#define BT_UP 5
+#define BT_DOWN 6
+#define IL_CONTENT 7
+
+#define FT_PAGE 10
+#define ED_PAGE 11
+
+#define LB_SELECT 22
+#define TL_SELECT 23
+
+#define TB_PAGE_TEXT 41
+#define TB_PAGE_COUNT 42
+
+#define TB_CONTENT 50
+#define TL_CONTENT 51
+
+#define LB_DOCS 53
+#define NF_PAGE 54
+#define TL_GLOBAL 55
+#define TB_GLOBAL 56
+
+//-------------------------------------------------------------------
+// Strings fuer Kontextmenue des ContentTree
+#define ST_CONTEXT_FIRST 60
+#define ST_OUTLINE_LEVEL ST_CONTEXT_FIRST
+#define ST_DRAGMODE (ST_CONTEXT_FIRST + 1)
+#define ST_HYPERLINK (ST_CONTEXT_FIRST + 2)
+#define ST_LINK_REGION (ST_CONTEXT_FIRST + 3)
+#define ST_COPY_REGION (ST_CONTEXT_FIRST + 4)
+#define ST_DISPLAY (ST_CONTEXT_FIRST + 5)
+#define ST_ACTIVE_VIEW (ST_CONTEXT_FIRST + 6)
+
+#define ST_STATUS_FIRST 67
+#define ST_HIDDEN (ST_STATUS_FIRST )
+#define ST_ACTIVE (ST_STATUS_FIRST + 1)
+#define ST_INACTIVE (ST_STATUS_FIRST + 2)
+#define ST_MISC 70
+#define ST_EDIT_ENTRY ST_MISC
+#define ST_DELETE_ENTRY (ST_MISC + 1)
+
+#define ST_GLOBAL_CONTEXT_FIRST (ST_DELETE_ENTRY + 1)
+#define ST_UPDATE (ST_GLOBAL_CONTEXT_FIRST )
+#define ST_EDIT_CONTENT (ST_GLOBAL_CONTEXT_FIRST + 1)
+#define ST_INSERT (ST_GLOBAL_CONTEXT_FIRST + 2)
+#define ST_INDEX (ST_GLOBAL_CONTEXT_FIRST + 3)
+//#define ST_CNTIDX (ST_GLOBAL_CONTEXT_FIRST + 4)
+//#define ST_USRIDX (ST_GLOBAL_CONTEXT_FIRST + 5)
+#define ST_FILE (ST_GLOBAL_CONTEXT_FIRST + 4)
+#define ST_NEW_FILE (ST_GLOBAL_CONTEXT_FIRST + 5)
+#define ST_TEXT (ST_GLOBAL_CONTEXT_FIRST + 6)
+#define ST_DELETE (ST_GLOBAL_CONTEXT_FIRST + 7)
+#define ST_UPDATE_SEL (ST_GLOBAL_CONTEXT_FIRST + 8)
+#define ST_UPDATE_INDEX (ST_GLOBAL_CONTEXT_FIRST + 9)
+#define ST_UPDATE_LINK (ST_GLOBAL_CONTEXT_FIRST +10)
+#define ST_UPDATE_ALL (ST_GLOBAL_CONTEXT_FIRST +11)
+#define ST_BROKEN_LINK (ST_GLOBAL_CONTEXT_FIRST +12)
+
+#define ST_REMOVE_INDEX (ST_GLOBAL_CONTEXT_FIRST +30)
+#define ST_REMOVE_TBL_PROTECTION (ST_GLOBAL_CONTEXT_FIRST +31)
+#define ST_RENAME (ST_GLOBAL_CONTEXT_FIRST +32)
+#define ST_READONLY_IDX (ST_GLOBAL_CONTEXT_FIRST +33)
+#define ST_INVISIBLE (ST_GLOBAL_CONTEXT_FIRST +34)
+
+
diff --git a/sw/source/ui/utlui/navipi.src b/sw/source/ui/utlui/navipi.src
new file mode 100644
index 000000000000..26f755c2558c
--- /dev/null
+++ b/sw/source/ui/utlui/navipi.src
@@ -0,0 +1,1615 @@
+/*************************************************************************
+ *
+ * $RCSfile: navipi.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "cmdid.h"
+#include "utlui.hrc"
+#include "navipi.hrc"
+#include "helpid.h"
+#define IMAGE_STDBTN_COLOR Color { Red = 0xC000; Green = 0xC000; Blue = 0xC000; }
+Window DLG_NAVIGATION_PI
+{
+ HelpID = HID_NAVIGATION_PI ;
+ OutputSize = TRUE ;
+ DialogControl = TRUE ;
+ SVLook = TRUE ;
+ // Size = MAP_PIXEL( 235, 195 );
+ // ZoomInOutputSize = MAP_PIXEL(235, 56);
+ Size = MAP_PIXEL ( 282 , 59 ) ;
+ // Closeable = TRUE ;
+ // Zoomable = TRUE ;
+ // Moveable = TRUE ;
+ // ZoomIn = FALSE;
+ Hide = TRUE ;
+ // HideWhenDeactivate = TRUE ;
+ // Sizeable = TRUE ;
+ // EnableResizing = TRUE ;
+ // Dockable = TRUE ;
+ // Sizeable = 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" ;
+ ExtraData =
+ {
+ 198;
+ };
+ /************************************************************************************
+ Toolbox ab 323 x
+************************************************************************************/
+ ImageList IL_CONTENT
+ {
+ ImageBitmap = Bitmap { File = "scnacon.bmp" ; };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ FN_UP ; // sc20186.bmp
+ FN_DOWN ; // sc20175.bmp
+ FN_SELECT_HEADER ; // sc20179.bmp
+ FN_SELECT_FOOTER ; // sc20177.bmp
+ FN_SELECT_FOOTNOTE ; // sc20182.bmp
+ FN_SHOW_CONTENT_BOX ; // 20233.bmp
+ FN_SHOW_ROOT ; // 20234.bmp
+ FN_ITEM_UP ; // sc20174.bmp
+ FN_ITEM_DOWN ; // sc20171.bmp
+ FN_ITEM_LEFT ; // sc20172.bmp
+ FN_ITEM_RIGHT ; // sc20173.bmp
+ FN_DROP_REGION ; // sc20235.bmp
+ FN_OUTLINE_LEVEL ; // sc20236.bmp
+ FN_SELECT_SET_AUTO_BOOKMARK ; // sc20183.bmp
+ FN_DROP_REGION_LINK ; // 20238
+ FN_DROP_REGION_COPY ; // 20239
+ FN_GLOBAL_SWITCH ; //20244
+ FN_GLOBAL_EDIT ; //20245
+ FN_GLOBAL_UPDATE ; //20246
+ FN_GLOBAL_OPEN ; //20247
+ FN_GLOBAL_SAVE_CONTENT ; //20248
+ FN_CREATE_NAVIGATION ; //20249
+ };
+ IdCount = { 21 ; };
+ };
+ Toolbox TB_CONTENT
+ {
+ Pos = MAP_PIXEL ( 5 , 5 ) ;
+ Size = MAP_PIXEL ( 300 , 47 ) ;
+ LineCount = 2 ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = FN_GLOBAL_SWITCH ;
+ HelpID = HID_NAVI_TBX17 ;
+ Text = "Umschalten" ;
+ Text [ English ] = "Switch" ;
+ Text [ english_us ] = "Toggle" ;
+ Text [ portuguese_brazilian ] = "Umschalten" ;
+ Text [ swedish ] = "Växla" ;
+ Text [ danish ] = "Skift" ;
+ Text [ italian ] = "Commuta" ;
+ Text [ spanish ] = "Conmutar" ;
+ Text [ french ] = "Basculer" ;
+ Text [ dutch ] = "Omschakelen" ;
+ Text [ portuguese ] = "Comutar" ;
+ Text[ chinese_simplified ] = "Çл»";
+ Text[ russian ] = "Ïåðåêëþ÷èòü";
+ Text[ polish ] = "Prze³¹cz";
+ Text[ japanese ] = "Ø‚è‘Ö‚¦";
+ Text[ chinese_traditional ] = "Âà´«";
+ Text[ arabic ] = "ÇáÊÈÏíá";
+ Text[ greek ] = "ÅíáëëáãÞ";
+ Text[ korean ] = "Åä±Û";
+ Text[ turkish ] = "Deðiþtir";
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_CREATE_NAVIGATION ;
+ HelpID = HID_NAVI_TBX24 ;
+ Text = "Navigation" ;
+ Text [ English ] = "Navigation" ;
+ Text [ english_us ] = "Navigation" ;
+ Text [ portuguese_brazilian ] = "Navigation" ;
+ Text [ swedish ] = "Navigation" ;
+ Text [ danish ] = "Navigation" ;
+ Text [ italian ] = "Navigazione" ;
+ Text [ spanish ] = "Navegación" ;
+ Text [ french ] = "Navigation" ;
+ Text [ dutch ] = "Navigatie" ;
+ Text [ portuguese ] = "Navegação" ;
+ Text[ chinese_simplified ] = "ä¯ÀÀ";
+ Text[ russian ] = "Íàâèãàöèÿ";
+ Text[ polish ] = "Nawigacja";
+ Text[ japanese ] = "ÅËÞ¹Þ°¼®Ý";
+ Text[ chinese_traditional ] = "ÂsÄý";
+ Text[ arabic ] = "ÇáãáÇÍÉ";
+ Text[ greek ] = "Ìåôáêßíçóç";
+ Text[ korean ] = "³×ºñ°ÔÀ̼Ç";
+ Text[ turkish ] = "Dolaþma";
+ };
+ /* ToolBoxItem
+ {
+ Identifier = FN_CONTENT_LB ;
+ HelpID = HID_NAVI_TBX1 ;
+ Text = "Inhaltstyp" ;
+ Text [ English ] = "Content type" ;
+ // Listbox mit Inhaltsauswahl
+ Text [ dutch ] = "Inhoudstype" ;
+ Text [ english_us ] = "Content Type" ;
+ Text [ italian ] = "Tipo di contenuto" ;
+ Text [ spanish ] = "Tipo de contenido" ;
+ Text [ french ] = "Type de contenu" ;
+ Text [ swedish ] = "Innehållstyp" ;
+ Text [ danish ] = "Indholdstype" ;
+ Text [ portuguese_brazilian ] = "Inhaltstyp" ;
+ Text [ portuguese ] = "Tipo de conteúdo" ;
+ };*/
+ ToolBoxItem
+ {
+ Identifier = FN_UP ;
+ // ItemBitmap = Bitmap { File = "navup.bmp"; };
+ HelpID = HID_NAVI_TBX2 ;
+ /* ### ACHTUNG: Neuer Text in Resource? Rückwärts : R³ckwõrts */
+ Text = "Rückwärts" ;
+ Text [ English ] = "Backward" ;
+ Text [ norwegian ] = "Bakover" ;
+ Text [ italian ] = "Indietro" ;
+ Text [ portuguese_brazilian ] = "Para trás" ;
+ Text [ portuguese ] = "Anterior" ;
+ Text [ finnish ] = "Taaaksepäin" ;
+ Text [ danish ] = "Tilbage" ;
+ Text [ french ] = "Précédent" ;
+ Text [ swedish ] = "Bakåt" ;
+ Text [ dutch ] = "Achteruit" ;
+ Text [ spanish ] = "Retroceder" ;
+ Text [ english_us ] = "Back" ;
+ Text[ chinese_simplified ] = "·µ»Ø";
+ Text[ russian ] = "Íàçàä";
+ Text[ polish ] = "Wstecz";
+ Text[ japanese ] = "–ß‚é";
+ Text[ chinese_traditional ] = "ªð¦^";
+ Text[ arabic ] = "Åáì ÇáÎáÝ";
+ Text[ greek ] = "Ðßóù";
+ Text[ korean ] = "µÚ·Î";
+ Text[ turkish ] = "Geri";
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_DOWN ;
+ // ItemBitmap = Bitmap { File = "navdn.bmp"; };
+ HelpID = HID_NAVI_TBX3 ;
+ /* ### ACHTUNG: Neuer Text in Resource? Vorwärts : Vorwõrts */
+ Text = "Vorwärts" ;
+ Text [ English ] = "Forward" ;
+ Text [ norwegian ] = "Fram" ;
+ Text [ italian ] = "Avanti" ;
+ Text [ portuguese_brazilian ] = "Para Frente" ;
+ Text [ portuguese ] = "Seguinte" ;
+ Text [ finnish ] = "Seuraava" ;
+ Text [ danish ] = "Fremad" ;
+ Text [ french ] = "Suivant" ;
+ Text [ swedish ] = "Framåt" ;
+ Text [ dutch ] = "Voorwaarts" ;
+ Text [ spanish ] = "Avanzar" ;
+ Text [ english_us ] = "Forward" ;
+ Text[ chinese_simplified ] = "ÏòÇ°";
+ Text[ russian ] = "Âïåðåä";
+ Text[ polish ] = "Do przodu";
+ Text[ japanese ] = "i‚Þ";
+ Text[ chinese_traditional ] = "¦V«e";
+ Text[ arabic ] = "Åáì ÇáÃãÇã";
+ Text[ greek ] = "Åìðñüò";
+ Text[ korean ] = "¾ÕÀ¸·Î";
+ Text[ turkish ] = "Ýleri";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_DROP_REGION ;
+ HelpID = HID_NAVI_TBX4 ;
+ Text = "Dragmodus" ;
+ Text [ English ] = "Drag Mode" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Modus für Drag & Drop auswählen : Modus f³r Drag & Drop auswõhlen */
+ DropDown = TRUE ;
+ Text [ english_us ] = "Drag Mode" ;
+ Text [ italian ] = "Modo drag" ;
+ Text [ spanish ] = "Modo Arrastrar" ;
+ Text [ french ] = "Mode Glisser" ;
+ Text [ dutch ] = "Modus Slepen" ;
+ Text [ swedish ] = "Draläge" ;
+ Text [ danish ] = "Trækmodus" ;
+ Text [ portuguese_brazilian ] = "Dragmodus" ;
+ Text [ portuguese ] = "Modo Arrastar" ;
+ Text[ chinese_simplified ] = "Í϶¯Ä£Ê½";
+ Text[ russian ] = "Ðåæèì ïåðåòàñêèâàíèÿ";
+ Text[ polish ] = "Tryb przeci¹gania";
+ Text[ japanese ] = "ÄÞׯ¸ÞÓ°ÄÞ";
+ Text[ chinese_traditional ] = "©ì¦²¼Ò¦¡";
+ Text[ arabic ] = "ØÑíÞÉ ÇáÓÍÈ";
+ Text[ greek ] = "ÊáôÜóôáóç óõñìïý";
+ Text[ korean ] = "µå·¡±× ¸ðµå";
+ Text[ turkish ] = "Sürükleme kipi";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_ITEM_UP ;
+ // ItemBitmap = Bitmap { File = "navchup.bmp"; };
+ HelpID = HID_NAVI_TBX5 ;
+ Text = "Kapitel hoch" ;
+ Text [ English ] = "Chapter up" ;
+ Text [ norwegian ] = "Kapittel opp" ;
+ Text [ italian ] = "Capitolo superiore" ;
+ Text [ portuguese_brazilian ] = "Capítulo acima" ;
+ Text [ portuguese ] = "Subir um capítulo" ;
+ Text [ finnish ] = "Edellinen luku" ;
+ Text [ danish ] = "Kapitel op" ;
+ Text [ french ] = "Chapitre vers le haut" ;
+ Text [ swedish ] = "Kapitel uppåt" ;
+ Text [ dutch ] = "Hoofdstuk hoger" ;
+ Text [ spanish ] = "Un capítulo hacia arriba" ;
+ Text [ english_us ] = "Promote Chapter" ;
+ //HelpText[english_us-wrong] = "Move chapter down";//"Move chapter up"
+ Text[ chinese_simplified ] = "ÕÂÉý¼¶";
+ Text[ russian ] = "Ãëàâà ñâåðõó";
+ Text[ polish ] = "Rozdzia³ do góry";
+ Text[ japanese ] = "Í‚ÌÚÍÞÙ‚ðã‚°‚é";
+ Text[ chinese_traditional ] = "³¹¤É¯Å";
+ Text[ arabic ] = "ÝÕá áÃÚáì";
+ Text[ greek ] = "Ðñïâéâáóìüò êåöáëáßïõ";
+ Text[ korean ] = "Àå ½Â°Ý";
+ Text[ turkish ] = "Bölümü yukarý al";
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_ITEM_DOWN ;
+ // ItemBitmap = Bitmap { File = "navchdn.bmp"; };
+ HelpID = HID_NAVI_TBX6 ;
+ Text = "Kapitel hinunter" ;
+ Text [ English ] = "Chapter down" ;
+ Text [ norwegian ] = "Kapittel ned" ;
+ Text [ italian ] = "Capitolo inferiore" ;
+ Text [ portuguese_brazilian ] = "Capítulo abaixo" ;
+ Text [ portuguese ] = "Descer um capítulo" ;
+ Text [ finnish ] = "Seuraava luku" ;
+ Text [ danish ] = "Kapitel ned" ;
+ Text [ french ] = "Chapitre vers le bas" ;
+ Text [ swedish ] = "Kapitel nedåt" ;
+ Text [ dutch ] = "Hoofdstuk lager" ;
+ Text [ spanish ] = "Un capítulo hacia abajo" ;
+ Text [ english_us ] = "Demote Chapter" ;
+ Text[ chinese_simplified ] = "Õ½µ¼¶";
+ Text[ russian ] = "Ãëàâà ñíèçó";
+ Text[ polish ] = "Rozdzia³ w dó³";
+ Text[ japanese ] = "Í‚ÌÚÍÞÙ‚ð‰º‚°‚é";
+ Text[ chinese_traditional ] = "³¹­°¯Å";
+ Text[ arabic ] = "ÝÕá áÃÓÝá";
+ Text[ greek ] = "Õðïâéâáóìüò êåöáëáßïõ";
+ Text[ korean ] = "Àå ³·Ãß±â";
+ Text[ turkish ] = "Bölümü aþaðý çek";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_SHOW_CONTENT_BOX ;
+ HelpID = HID_NAVI_TBX7 ;
+ Text = "Auswahlbox an-/ausschalten" ;
+ Text [ English ] = "Toggle Listbox" ;
+ Text [ english_us ] = "List Box On/Off" ;
+ Text [ italian ] = "Mostra/nascondi la casella di selezione" ;
+ Text [ spanish ] = "Mostrar/ocultar cuadro de selección" ;
+ Text [ french ] = "Afficher/masquer la boîte de sélection" ;
+ Text [ dutch ] = "Keuzebox in-/uitschakelen" ;
+ Text [ swedish ] = "Urvalsbox på/av" ;
+ Text [ danish ] = "Vis/skjul liste" ;
+ Text [ portuguese_brazilian ] = "Auswahlbox an-/ausschalten" ;
+ Text [ portuguese ] = "Act./Desactivar caixa de selecção" ;
+ Text[ chinese_simplified ] = "ÏÔʾ/ÒþÈëÁбí¿ò";
+ Text[ russian ] = "Âêë./âûêë. îêíî ñïèñêà";
+ Text[ polish ] = "W³¹cz/Wy³¹cz pole listy";
+ Text[ japanese ] = "ؽÄÎÞ¯¸½ µÝ/µÌ";
+ Text[ chinese_traditional ] = "Åã¥Ü/Áô¤J²M³æ¤è¶ô";
+ Text[ arabic ] = "ÅÙåÇÑ/ÅÎÝÇÁ ÕäÏæÞ ÇáÇÎÊíÇÑ";
+ Text[ greek ] = "Ðëáßóéï åðéëïãÞò Íáé/¼÷é";
+ Text[ korean ] = "¸®½ºÆ® ¹Ú½º ½ÃÀÛ/Á¾·á";
+ Text[ turkish ] = "Liste kutusu açýk/kapalý";
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_SHOW_ROOT ;
+ HelpID = HID_NAVI_TBX8 ;
+ Text = "Inhaltsansicht umschalten" ;
+ Text [ English ] = "Toggle content view" ;
+ Text [ english_us ] = "Content View" ;
+ Text [ italian ] = "Commuta la vista del contenuto" ;
+ Text [ spanish ] = "Conmutar visualización del contenido" ;
+ Text [ french ] = "Basculer l'affichage du contenu" ;
+ Text [ dutch ] = "Inhoudsopgave in-/uitschakelen" ;
+ Text [ swedish ] = "Växla innehållsvisning" ;
+ Text [ danish ] = "Skift til/fra indholdsvisning" ;
+ Text [ portuguese_brazilian ] = "Inhaltsansicht umschalten" ;
+ Text [ portuguese ] = "Comutar vista do conteúdo" ;
+ Text[ chinese_simplified ] = "Çл»ÄÚÈÝÊÓͼ";
+ Text[ russian ] = "Ïåðåêëþ÷èòü âèä ñîäåðæàíèÿ";
+ Text[ polish ] = "Prze³¹cz widok treœci";
+ Text[ japanese ] = "“à—e‚ÌËÞ­°‚ð؂芷‚¦";
+ Text[ chinese_traditional ] = "¤Á´«¤º®eÀ˵ø";
+ Text[ arabic ] = "ÊÈÏíá ØÑíÞÉ ÚÑÖ ÇáãÍÊæíÇÊ";
+ Text[ greek ] = "ÐñïâïëÞ ðåñéå÷ïìÝíùí Íáé/¼÷é";
+ Text[ korean ] = "³»¿ë º¸±â";
+ Text[ turkish ] = "Ýçerik görünümü";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_SELECT_SET_AUTO_BOOKMARK ;
+ HelpID = HID_NAVI_TBX9 ;
+ // ItemBitmap = Bitmap { File = "navstmp.bmp"; };
+ Text = "Merker setzen" ;
+ Text [ English ] = "Set Bookmarks" ;
+ Text [ norwegian ] = "Sett inn Bokmerker" ;
+ Text [ italian ] = "Imposta contrassegno" ;
+ Text [ portuguese_brazilian ] = "Definir Marcas" ;
+ Text [ portuguese ] = "Definir marca" ;
+ Text [ finnish ] = "Aseta kirjanmerkit" ;
+ Text [ danish ] = "Sæt påmindelse" ;
+ Text [ french ] = "Définir un pense-bête" ;
+ Text [ swedish ] = "Sätt temporärt bokmärke" ;
+ Text [ dutch ] = "Merktekens plaatsen" ;
+ Text [ spanish ] = "Insertar marca" ;
+ Text [ english_us ] = "Set Reminder" ;
+ Text[ chinese_simplified ] = "ÉèÖñê¼Ç";
+ Text[ russian ] = "Óñòàíîâèòü ïîìåòêó";
+ Text[ polish ] = "OsadŸ znaczniki";
+ Text[ japanese ] = "Šo‚¦Ž~‚ß‚ð•t‚¯‚é";
+ Text[ chinese_traditional ] = "³]©w´£¿ô";
+ Text[ arabic ] = "æÖÚ ÚáÇãÉ ÊÐßíÑ";
+ Text[ greek ] = "Ïñéóìüò õðåíèýìéóçò";
+ Text[ korean ] = "¹Ì¸®¾Ë¸² ¼³Á¤";
+ Text[ turkish ] = "Anýmsatýcý yerleþtir";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_SELECT_HEADER ;
+ // ItemBitmap = Bitmap { File = "navhead.bmp"; };
+ HelpID = HID_NAVI_TBX10 ;
+ Text = "Kopfzeile" ;
+ Text [ English ] = "Header" ;
+ Text [ norwegian ] = "Header" ;
+ Text [ italian ] = "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";
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_SELECT_FOOTER ;
+ // ItemBitmap = Bitmap { File = "navfoot.bmp"; };
+ HelpID = HID_NAVI_TBX11 ;
+ /* ### 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" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Springen zur Fußzeile : Springen zur Fu˜zeile */
+ Text[ chinese_simplified ] = "Ò³½Å";
+ Text[ russian ] = "Íèæíèé êîëîíòèòóë";
+ Text[ polish ] = "Stopka";
+ Text[ japanese ] = "̯À";
+ Text[ chinese_traditional ] = "­¶§À";
+ Text[ arabic ] = "ÊÐííá ÇáÕÝÍÉ";
+ Text[ greek ] = "ÕðïóÝëéäï";
+ Text[ korean ] = "¹Ù´Ú±Û";
+ Text[ turkish ] = "Altbilgi";
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_SELECT_FOOTNOTE ;
+ // ItemBitmap = Bitmap { File = "navnote.bmp"; };
+ HelpID = HID_NAVI_TBX12 ;
+ Text = "Anker<->Text" ;
+ Text [ English ] = "Anchor<->Text" ;
+ Text [ norwegian ] = "Anker<->Tekst" ;
+ Text [ italian ] = "Ancoraggio<->Testo" ;
+ Text [ portuguese_brazilian ] = "Âncora<->Texto" ;
+ Text [ portuguese ] = "Âncora<->Texto" ;
+ Text [ finnish ] = "Ankkuri<->Teksti" ;
+ Text [ danish ] = "Anker<->Tekst" ;
+ Text [ french ] = "Ancre <-> texte" ;
+ Text [ swedish ] = "Ankare<->Text" ;
+ Text [ dutch ] = "Anker<->Tekst" ;
+ Text [ spanish ] = "Ancla <->Texto" ;
+ Text [ english_us ] = "Anchor<->Text" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Springen zwischen Fußnotenankern und dem Fußnotentext : Springen zwischen Fu˜notenankern und dem Fu˜notentext */
+ Text[ chinese_simplified ] = "±ê¼Ç<->ÕýÎÄ";
+ Text[ russian ] = "Ïðèâÿçêà<->Òåêñò";
+ Text[ polish ] = "Kotwica<->Tekst";
+ Text[ japanese ] = "‹r’";
+ Text[ chinese_traditional ] = "¼Ð¸¹<->¤º¤å";
+ Text[ arabic ] = "ãÑÓÇÉ<->äÕ";
+ Text[ greek ] = "Áãêýñùóç<->Êåßìåíï";
+ Text[ korean ] = "°íÁ¤<->ÅؽºÆ®";
+ Text[ turkish ] = "Sabitleyici<->Metin";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_OUTLINE_LEVEL ;
+ HelpID = HID_NAVI_TBX13 ;
+ /* ### ACHTUNG: Neuer Text in Resource? Angezeigte Überschriftenebenen : Angezeigte šberschriftenebenen */
+ Text = "Angezeigte Überschriftenebenen" ;
+ Text [ English ] = "Number of outline level" ;
+ DropDown = TRUE ;
+ Text [ dutch ] = "Weergegeven kopregelniveaus" ;
+ Text [ english_us ] = "Heading Levels Shown" ;
+ Text [ italian ] = "Livelli di intestazioni visualizzati" ;
+ Text [ spanish ] = "Niveles de encabezados mostrados" ;
+ Text [ french ] = "Niveaux de titres affichés" ;
+ Text [ swedish ] = "Visade överskriftsnivåer" ;
+ Text [ danish ] = "Viste overskriftsniveauer" ;
+ Text [ portuguese_brazilian ] = "Angezeigte Überschriftenebenen" ;
+ Text [ portuguese ] = "Níveis de títulos mostrados" ;
+ Text[ chinese_simplified ] = "ÏÔʾµÄ´ó¸Ù¼¶";
+ Text[ russian ] = "Ïîêàçàííûå óðîâíè ñòðóêòóðû";
+ Text[ polish ] = "Wyœwietlone poziomy konspektu";
+ Text[ japanese ] = "±³Ä×²Ý ÚÍÞÙ";
+ Text[ chinese_traditional ] = "Åã¥Üªº¤jºõ¯Å";
+ Text[ arabic ] = "ãÓÊæíÇÊ ÇáÚäÇæíä ÇáÙÇåÑÉ";
+ Text[ greek ] = "Åìöáíéæüìåíá åðßðåäá åðéêåöáëßäùí";
+ Text[ korean ] = "¿Ü°û¼± ¼öÁØ";
+ Text[ turkish ] = "Görüntülenen baþlýk düzeyleri";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_ITEM_LEFT ;
+ HelpID = HID_NAVI_TBX14 ;
+ // ItemBitmap = Bitmap { File = "navchlf.bmp"; };
+ Text = "Ebene hoch" ;
+ Text [ English ] = "Increase Level" ;
+ Text [ norwegian ] = "+++Increase Level" ;
+ Text [ italian ] = "Livello superiore" ;
+ Text [ portuguese_brazilian ] = "Aumentar Nível" ;
+ Text [ portuguese ] = "Subir um nível" ;
+ Text [ finnish ] = "Korota tasoa" ;
+ Text [ danish ] = "Niveau op" ;
+ Text [ french ] = "Hausser d'un niveau" ;
+ Text [ swedish ] = "Höj nivån" ;
+ Text [ dutch ] = "Hoger niveau" ;
+ Text [ spanish ] = "Subir un nivel" ;
+ Text [ english_us ] = "Promote Level" ;
+ Text[ chinese_simplified ] = "Éý¼¶";
+ Text[ russian ] = "Íà îäèí óðîâåíü ââåðõ";
+ Text[ polish ] = "Podnieœ poziom";
+ Text[ japanese ] = "ÚÍÞÙ‚ðã‚°‚é";
+ Text[ chinese_traditional ] = "¤É¯Å";
+ Text[ arabic ] = "ãÓÊæì áÃÚáì";
+ Text[ greek ] = "Ðñïâéâáóìüò åðéðÝäïõ";
+ Text[ korean ] = "¼öÁØ ¿Ã¸®±â";
+ Text[ turkish ] = "Düzeyi yukarý al";
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_ITEM_RIGHT ;
+ // ItemBitmap = Bitmap { File = "navchrg.bmp"; };
+ HelpID = HID_NAVI_TBX15 ;
+ Text = "Ebene senken" ;
+ Text [ English ] = "Decrease Level" ;
+ Text [ norwegian ] = "+++Decrease Level" ;
+ Text [ italian ] = "Livello inferiore" ;
+ Text [ portuguese_brazilian ] = "Diminuir Nível" ;
+ Text [ portuguese ] = "Descer um nível" ;
+ Text [ finnish ] = "Laske tasoa" ;
+ Text [ danish ] = "Niveau ned" ;
+ Text [ french ] = "Abaisser d'un niveau" ;
+ Text [ swedish ] = "Sänk nivån" ;
+ Text [ dutch ] = "Lager niveau" ;
+ Text [ spanish ] = "Bajar un nivel" ;
+ Text [ english_us ] = "Demote Level" ;
+ Text[ chinese_simplified ] = "½µ¼¶";
+ Text[ russian ] = "Íà îäèí óðîâåíü âíèç";
+ Text[ polish ] = "Obni¿ poziom";
+ Text[ japanese ] = "ÚÍÞÙ‚ð‰º‚°‚é";
+ Text[ chinese_traditional ] = "­°¯Å";
+ Text[ arabic ] = "ãÓÊæì áÃÓÝá";
+ Text[ greek ] = "Õðïâéâáóìüò åðéðÝäïõ";
+ Text[ korean ] = "¼öÁØ ³·Ãß±â";
+ Text[ turkish ] = "Düzeyi aþaðý çek";
+ };
+ };
+ };
+ ToolBox TB_GLOBAL
+ {
+ Pos = MAP_PIXEL ( 5 , 5 ) ;
+ Size = MAP_PIXEL ( 300 , 47 ) ;
+ LineCount = 1 ;
+ Hide = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = FN_GLOBAL_SWITCH ;
+ HelpID = HID_NAVI_TBX17 ;
+ Text = "Umschalten" ;
+ Text [ English ] = "Switch" ;
+ Text [ english_us ] = "Toggle" ;
+ Text [ portuguese_brazilian ] = "Umschalten" ;
+ Text [ swedish ] = "Växla" ;
+ Text [ danish ] = "Skift" ;
+ Text [ italian ] = "Commuta" ;
+ Text [ spanish ] = "Conmutar" ;
+ Text [ french ] = "Basculer" ;
+ Text [ dutch ] = "Omschakelen" ;
+ Text [ portuguese ] = "Comutar" ;
+ Text[ chinese_simplified ] = "Çл»";
+ Text[ russian ] = "Ïåðåêëþ÷èòü";
+ Text[ polish ] = "Prze³¹cz";
+ Text[ japanese ] = "Ø‚è‘Ö‚¦";
+ Text[ chinese_traditional ] = "Âà´«";
+ Text[ arabic ] = "ÇáÊÈÏíá";
+ Text[ greek ] = "ÅíáëëáãÞ";
+ Text[ korean ] = "Åä±Û";
+ Text[ turkish ] = "Toggle";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_GLOBAL_EDIT ;
+ HelpID = HID_NAVI_TBX18 ;
+ Text = "Bearbeiten" ;
+ Text [ English ] = "Edit" ;
+ Text [ english_us ] = "Edit" ;
+ Text [ portuguese_brazilian ] = "Bearbeiten" ;
+ Text [ swedish ] = "Redigera" ;
+ Text [ danish ] = "Rediger" ;
+ Text [ italian ] = "Modifica" ;
+ Text [ spanish ] = "Editar" ;
+ Text [ french ] = "Éditer" ;
+ Text [ dutch ] = "Bewerken" ;
+ Text [ portuguese ] = "Editar" ;
+ Text[ chinese_simplified ] = "±à¼­";
+ Text[ russian ] = "Ïðàâêà";
+ Text[ polish ] = "Edytuj";
+ Text[ japanese ] = "•ÒW";
+ Text[ chinese_traditional ] = "½s¿è";
+ Text[ arabic ] = "ÊÍÑíÑ";
+ Text[ greek ] = "Åðåîåñãáóßá";
+ Text[ korean ] = "ÆíÁý";
+ Text[ turkish ] = "Düzenle";
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_GLOBAL_UPDATE ;
+ HelpID = HID_NAVI_TBX19 ;
+ Text = "Aktualisieren" ;
+ Text [ English ] = "Update" ;
+ Text [ english_us ] = "Update" ;
+ Text [ portuguese_brazilian ] = "Aktualisieren" ;
+ Text [ swedish ] = "Uppdatera" ;
+ Text [ danish ] = "Opdater" ;
+ Text [ italian ] = "Aggiorna" ;
+ Text [ spanish ] = "Actualizar" ;
+ Text [ french ] = "Actualiser" ;
+ Text [ dutch ] = "Actualiseren" ;
+ Text [ portuguese ] = "Actualizar" ;
+ Text[ chinese_simplified ] = "¸üÐÂ";
+ Text[ russian ] = "Îáíîâèòü";
+ Text[ polish ] = "Aktualizuj";
+ Text[ japanese ] = "XV‚·‚é";
+ Text[ chinese_traditional ] = "§ó·s";
+ Text[ arabic ] = "ÊÍÏíË";
+ Text[ greek ] = "ÅíçìÝñùóç";
+ Text[ korean ] = "¾÷ µ¥ÀÌÆ®";
+ Text[ turkish ] = "Güncelle";
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_GLOBAL_OPEN ;
+ HelpID = HID_NAVI_TBX20 ;
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen : Einf³gen */
+ Text = "Einfügen" ;
+ Text [ English ] = "Insert" ;
+ Text [ english_us ] = "Insert" ;
+ Text [ portuguese_brazilian ] = "Einfügen" ;
+ Text [ swedish ] = "Infoga" ;
+ Text [ danish ] = "Sæt ind" ;
+ Text [ italian ] = "Inserisci" ;
+ Text [ spanish ] = "Insertar" ;
+ Text [ french ] = "Insertion" ;
+ Text [ dutch ] = "Invoegen" ;
+ Text [ portuguese ] = "Inserir" ;
+ Text[ chinese_simplified ] = "²åÈë";
+ Text[ russian ] = "Âñòàâêà";
+ Text[ polish ] = "Wstaw";
+ Text[ japanese ] = "‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J";
+ Text[ arabic ] = "ÅÏÑÇÌ";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "»ðÀÔ";
+ Text[ turkish ] = "Ekle";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_GLOBAL_SAVE_CONTENT ;
+ HelpID = HID_NAVI_TBX21 ;
+ Text = "Inhalte mitspeichern" ;
+ Text [ English ] = "Save content" ;
+ Text [ english_us ] = "Save Contents as well" ;
+ Text [ portuguese_brazilian ] = "Inhalte mitspeichern" ;
+ Text [ swedish ] = "Spara med innehåll" ;
+ Text [ danish ] = "Gem med indhold" ;
+ Text [ italian ] = "Salva anche i contenuti" ;
+ Text [ spanish ] = "Guardar contenidos" ;
+ Text [ french ] = "Enregistrer le contenu" ;
+ Text [ dutch ] = "Inhoud opslaan" ;
+ Text [ portuguese ] = "Guardar também conteúdos" ;
+ Text[ russian ] = "Ñîõðàíèòü ñîäåðæèìîå";
+ Text[ polish ] = "Zapisz zawartoϾ";
+ Text[ japanese ] = "“à—e‚ð•Û‘¶‚·‚é";
+ Text[ chinese_simplified ] = "´æÅÌÄÚÈÝ";
+ Text[ chinese_traditional ] = "Àx¦s¤º®e";
+ Text[ arabic ] = "ÍÝÙ ÇáãÍÊæíÇÊ";
+ Text[ greek ] = "ÁðïèÞêåõóç êáé ôùí ðåñéå÷ïìÝíùí";
+ Text[ korean ] = "³»¿ë ÀúÀå";
+ Text[ turkish ] = "Ýçeriði de kaydet";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_ITEM_UP ;
+ HelpID = HID_NAVI_TBX22 ;
+ /* ### ACHTUNG: Neuer Text in Resource? Nach oben verschieben : Nach unten verschieben */
+ Text = "Nach oben verschieben" ;
+ Text [ English ] = "Move up" ;
+ Text [ english_us ] = "Move Up" ;
+ Text [ portuguese_brazilian ] = "Nach unten verschieben" ;
+ Text [ swedish ] = "Flytta uppåt" ;
+ Text [ danish ] = "Flyt opad" ;
+ Text [ italian ] = "Sposta verso l'alto" ;
+ Text [ spanish ] = "Desplazar hacia arriba" ;
+ Text [ french ] = "Déplacer vers le haut" ;
+ Text [ dutch ] = "Naar boven verplaatsen" ;
+ Text [ portuguese ] = "Mover para cima" ;
+ Text[ chinese_simplified ] = "ÏòÉÏÒƶ¯";
+ Text[ russian ] = "Ïåðåìåñòèòü ââåðõ";
+ Text[ polish ] = "Przenieœ w górê";
+ Text[ japanese ] = "ã•û‚ÖˆÚ“®";
+ Text[ chinese_traditional ] = "¦V¤W²¾°Ê";
+ Text[ arabic ] = "ÅÒÇÍÉ Åáì ÃÚáì";
+ Text[ greek ] = "ÌåôáöïñÜ ðñïò ôá ðÜíù";
+ Text[ korean ] = "À§·Î À̵¿";
+ Text[ turkish ] = "Yukarý taþý";
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_ITEM_DOWN ;
+ HelpID = HID_NAVI_TBX23 ;
+ /* ### ACHTUNG: Neuer Text in Resource? Nach unten verschieben : Nach oben verschieben */
+ Text = "Nach unten verschieben" ;
+ Text [ English ] = "Move down" ;
+ Text [ english_us ] = "Move Down" ;
+ Text [ portuguese_brazilian ] = "Nach oben verschieben" ;
+ Text [ swedish ] = "Flytta nedåt" ;
+ Text [ danish ] = "Flyt nedad" ;
+ Text [ italian ] = "Sposta verso il basso" ;
+ Text [ spanish ] = "Desplazar hacia abajo" ;
+ Text [ french ] = "Déplacer vers le bas" ;
+ Text [ dutch ] = "Naar beneden verplaatsen" ;
+ Text [ portuguese ] = "Mover para baixo" ;
+ Text[ chinese_simplified ] = "ÏòÏÂÒƶ¯";
+ Text[ russian ] = "Ïåðåìåñòèòü âíèç";
+ Text[ polish ] = "Przenieœ w dó³";
+ Text[ japanese ] = "‰º•û‚ÖˆÚ“®";
+ Text[ chinese_traditional ] = "¦V¤U²¾°Ê";
+ Text[ arabic ] = "ÅÒÇÍÉ Åáì ÃÓÝá";
+ Text[ greek ] = "ÌåôáöïñÜ ðñïò ôá êÜôù";
+ Text[ korean ] = "¾Æ·¡·Î À̵¿";
+ Text[ turkish ] = "Aþaðý taþý";
+ };
+ };
+ };
+ /* TreeListBox */
+ Control TL_CONTENT
+ {
+ HelpID = HID_NAVI_CONTENT ;
+ Border = TRUE ;
+ Pos = MAP_PIXEL ( 5 , 62 ) ;
+ Size = MAP_PIXEL ( 274 , 112 ) ;
+ TabStop = TRUE ;
+ ClipChildren = TRUE ;
+ Hide = TRUE ;
+ };
+ Control TL_GLOBAL
+ {
+ HelpID = HID_NAVI_GLOBAL ;
+ Border = TRUE ;
+ Pos = MAP_PIXEL ( 5 , 34 ) ;
+ Size = MAP_PIXEL ( 274 , 112 ) ;
+ TabStop = TRUE ;
+ ClipChildren = TRUE ;
+ Hide = TRUE ;
+ };
+ ListBox LB_DOCS
+ {
+ Border = TRUE ;
+ Pos = MAP_PIXEL ( 5 , 115 ) ;
+ Size = MAP_APPFONT ( 150 , 50 ) ;
+ DropDown = TRUE ;
+ };
+ NumericField NF_PAGE
+ {
+ Border = TRUE ;
+ Pos = MAP_PIXEL ( 50 , 29 ) ;
+ Size = MAP_PIXEL ( 44 , 20 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ First = 1 ;
+ // Outline als Default
+ Maximum = 5 ;
+ Last = 5 ;
+ Value = 5 ;
+ };
+ String ST_OUTLINE_LEVEL
+ {
+ Text = "Gliederungsebenen" ;
+ Text [ English ] = "Outline level" ;
+ Text [ dutch ] = "Overzichtsniveaus" ;
+ Text [ english_us ] = "Outline Level" ;
+ Text [ italian ] = "Livelli di struttura" ;
+ Text [ spanish ] = "Niveles del esquema" ;
+ Text [ french ] = "Niveaux de plan" ;
+ Text [ swedish ] = "Dispositionsnivåer" ;
+ Text [ danish ] = "Dispositionsniveauer" ;
+ Text [ portuguese_brazilian ] = "Gliederungsebenen" ;
+ Text [ portuguese ] = "Níveis de esquema" ;
+ Text[ chinese_simplified ] = "´ó¸Ù¼¶";
+ Text[ russian ] = "Óðîâíè ñòðóêòóðû";
+ Text[ polish ] = "Poziomy konspektu";
+ Text[ japanese ] = "±³Ä×²Ý ÚÍÞÙ";
+ Text[ chinese_traditional ] = "¤jºõ¯Å";
+ Text[ arabic ] = "ãÓÊæíÇÊ ÇáÊÞÓíã";
+ Text[ greek ] = "Åðßðåäá äéÜñèñùóçò";
+ Text[ korean ] = "¿Ü°û¼± ¼öÁØ";
+ Text[ turkish ] = "Anahat düzeyleri";
+ };
+ String ST_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_brazilian ] = "Dragmodus" ;
+ Text [ portuguese ] = "Modo Arrastar" ;
+ Text[ chinese_simplified ] = "Í϶¯Ä£Ê½";
+ Text[ russian ] = "Ðåæèì ïåðåòàñêèâàíèÿ";
+ Text[ polish ] = "Tryb przeci¹gania";
+ Text[ japanese ] = "ÄÞׯ¸Þ Ó°ÄÞ";
+ Text[ chinese_traditional ] = "©ì¦²¼Ò¦¡";
+ Text[ arabic ] = "ØÑíÞÉ ÇáÓÍÈ";
+ Text[ greek ] = "ÊáôÜóôáóç óõñìïý";
+ Text[ korean ] = "µå·¡±× ¸ðµå";
+ Text[ turkish ] = "Sürükleme kipi";
+ };
+ String ST_HYPERLINK
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Als Hyperlink einfügen : Als Hyperlink einf³gen */
+ Text = "Als Hyperlink einfügen" ;
+ Text [ English ] = "Insert as hyperlink" ;
+ Text [ english_us ] = "Insert as Hyperlink" ;
+ Text [ portuguese_brazilian ] = "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 [ dutch ] = "Als Hyperlink invoegen" ;
+ 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[ greek ] = "ÐñïóèÞêç ùò õðåñ-óýíäåóç";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ©·Î »ðÀÔ";
+ Text[ turkish ] = "Hyperlink olarak ekle";
+ };
+ String ST_LINK_REGION
+ {
+ /* ### 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" ;
+ Text [ english_us ] = "Insert as Link" ;
+ Text [ portuguese_brazilian ] = "Verknüpfung" ;
+ 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 [ dutch ] = "Als koppeling invoegen" ;
+ Text [ portuguese ] = "Inserir como ligação" ;
+ Text[ chinese_simplified ] = "µ±×÷Á´½Ó²åÈë";
+ Text[ russian ] = "Âñòàâèòü êàê ññûëêó";
+ Text[ polish ] = "Wstaw jako ³¹cze";
+ Text[ japanese ] = "Øݸ‚Æ‚µ‚Ä‘}“ü";
+ Text[ chinese_traditional ] = "·í§@³sµ²´¡¤J";
+ Text[ arabic ] = "ÅÏÑÇÌ ßÇÑÊÈÇØ";
+ Text[ greek ] = "ÐñïóèÞêç ùò óýíäåóç";
+ Text[ korean ] = "¿¬°á·Î »ðÀÔ";
+ Text[ turkish ] = "Baðlantý olarak ekle";
+ };
+ String ST_COPY_REGION
+ {
+ /* ### 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 [ portuguese_brazilian ] = "Kopie" ;
+ 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 com cópia" ;
+ Text[ chinese_simplified ] = "µ±×÷¸´¼þ²åÈë";
+ Text[ russian ] = "Âñòàâèòü êàê êîïèþ";
+ Text[ polish ] = "Wstaw jako kopiê";
+ Text[ japanese ] = "ºËß°‚Æ‚µ‚Ä‘}“ü";
+ Text[ chinese_traditional ] = "·í§@´_¥ó´¡¤J";
+ Text[ arabic ] = "ÅÏÑÇÌ ßäÓÎÉ";
+ Text[ greek ] = "ÐñïóèÞêç ùò áíôßãñáöï";
+ Text[ korean ] = "º¹»ç·Î »ðÀÔ";
+ Text[ turkish ] = "Kopya olarak ekle";
+ };
+ String ST_DISPLAY
+ {
+ Text = "Anzeige" ;
+ Text [ English ] = "Display" ;
+ Text [ english_us ] = "Display" ;
+ Text [ italian ] = "Visualizzazione" ;
+ Text [ spanish ] = "Visualización" ;
+ Text [ french ] = "Affichage" ;
+ Text [ dutch ] = "Weergave" ;
+ Text [ swedish ] = "Visa" ;
+ Text [ danish ] = "Visning" ;
+ Text [ portuguese_brazilian ] = "Anzeige" ;
+ Text [ portuguese ] = "Mostrar" ;
+ Text[ chinese_simplified ] = "ÏÔʾ";
+ Text[ russian ] = "Ïîêàçàòü";
+ Text[ polish ] = "Wyœwietlenie";
+ Text[ japanese ] = "•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü";
+ Text[ arabic ] = "ÇáÚÑÖ";
+ Text[ greek ] = "ÅìöÜíéóç";
+ Text[ korean ] = "Ç¥½Ã";
+ Text[ turkish ] = "Görüntü";
+ };
+ String ST_ACTIVE_VIEW
+ {
+ 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_brazilian ] = "Aktives Fenster" ;
+ Text [ portuguese ] = "Janela activa" ;
+ Text[ chinese_simplified ] = "µ±Ç°µÄÊÓ´°";
+ Text[ russian ] = "Àêòèâíîå îêíî";
+ Text[ polish ] = "Aktywne okno";
+ Text[ japanese ] = "±¸Ã¨Ìނȳ¨ÝÄÞ³";
+ Text[ language_user1 ] = "èë? Îòêðûòîå - - - èëè: Îòêðûòîå - èëè: Îòêðûòîå";
+ Text[ chinese_traditional ] = "·í«eªºµøµ¡";
+ Text[ arabic ] = "ÇáäÇÝÐÉ ÇáäÔØÉ";
+ Text[ greek ] = "Åíåñãü ðáñÜèõñï";
+ Text[ korean ] = "È°¼º â";
+ Text[ turkish ] = "Etkin pencere";
+ };
+ String ST_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_brazilian ] = "versteckt" ;
+ Text [ portuguese ] = "oculto" ;
+ Text[ chinese_simplified ] = "ÒþÈë";
+ Text[ russian ] = "ñêðûòûé";
+ Text[ polish ] = "ukryty";
+ Text[ japanese ] = "‰B‚µ";
+ Text[ chinese_traditional ] = "Áô¤J";
+ Text[ arabic ] = "ãÎÝí";
+ Text[ greek ] = "êñõöü";
+ Text[ korean ] = "¼û±â±â";
+ Text[ turkish ] = "gizli";
+ };
+ String ST_ACTIVE
+ {
+ Text = "aktiv" ;
+ Text [ English ] = "active" ;
+ Text [ dutch ] = "actief" ;
+ Text [ english_us ] = "active" ;
+ Text [ italian ] = "attivo" ;
+ Text [ spanish ] = "activo" ;
+ Text [ french ] = "actif" ;
+ Text [ swedish ] = "aktiv" ;
+ Text [ danish ] = "aktiv" ;
+ Text [ portuguese_brazilian ] = "aktiv" ;
+ Text [ portuguese ] = "activo" ;
+ Text[ chinese_simplified ] = "¼¤»îµÄ";
+ Text[ russian ] = "àêòèâíûé";
+ Text[ polish ] = "aktywny";
+ Text[ japanese ] = "±¸Ã¨ÌÞ";
+ Text[ chinese_traditional ] = "¿E¬¡ªº";
+ Text[ arabic ] = "äÔØ";
+ Text[ greek ] = "åíåñãü";
+ Text[ korean ] = "È°¼º";
+ Text[ turkish ] = "etkin";
+ };
+ String ST_INACTIVE
+ {
+ Text = "inaktiv" ;
+ Text [ English ] = "inactive" ;
+ Text [ english_us ] = "inactive" ;
+ Text [ italian ] = "inattivo" ;
+ Text [ spanish ] = "inactivo" ;
+ Text [ french ] = "inactif" ;
+ Text [ dutch ] = "inactief" ;
+ Text [ swedish ] = "inaktiv" ;
+ Text [ danish ] = "inaktiv" ;
+ Text [ portuguese_brazilian ] = "inaktiv" ;
+ Text [ portuguese ] = "inactivo" ;
+ Text[ chinese_simplified ] = "ʧ»îµÄ";
+ Text[ russian ] = "íåàêòèâíûé";
+ Text[ polish ] = "nieaktywny";
+ Text[ japanese ] = "±¸Ã¨ÌÞ‚Å‚È‚¢";
+ Text[ chinese_traditional ] = "¥¢¬¡ªº";
+ Text[ arabic ] = "ÛíÑ äÔØ";
+ Text[ greek ] = "ìç åíåñãü";
+ Text[ korean ] = "ºñ È°¼º";
+ Text[ turkish ] = "etkin deðil";
+ };
+ String ST_EDIT_ENTRY
+ {
+ Text = "~Bearbeiten..." ;
+ Text [ English ] = "~Edit..." ;
+ Text [ english_us ] = "Edit..." ;
+ Text [ swedish ] = "Redigera..." ;
+ Text [ danish ] = "Rediger..." ;
+ Text [ italian ] = "~Modifica..." ;
+ Text [ spanish ] = "Edi~tar..." ;
+ Text [ french ] = "~Modifier..." ;
+ Text [ dutch ] = "~Bewerken..." ;
+ Text [ portuguese_brazilian ] = "Bearbeiten..." ;
+ Text [ portuguese ] = "~Editar..." ;
+ Text[ chinese_simplified ] = "±à¼­...";
+ Text[ russian ] = "Ïðàâêà...";
+ Text[ polish ] = "Edytuj...";
+ Text[ japanese ] = "•ÒW...";
+ Text[ chinese_traditional ] = "½s¿è...";
+ Text[ arabic ] = "ÊÍÑíÑ...";
+ Text[ greek ] = "Åðåîåñãáóßá...";
+ Text[ korean ] = "ÆíÁý...";
+ Text[ turkish ] = "~Düzenle...";
+ };
+ String ST_UPDATE
+ {
+ Text = "~Aktualisieren" ;
+ Text [ English ] = "Update" ;
+ Text [ dutch ] = "~Actualiseren" ;
+ Text [ english_us ] = "~Update" ;
+ Text [ italian ] = "~Aggiorna" ;
+ Text [ spanish ] = "Actuali~zar" ;
+ Text [ french ] = "~Actualiser" ;
+ Text [ swedish ] = "Uppd~atera" ;
+ Text [ danish ] = "Opdater" ;
+ Text [ portuguese ] = "~Actualizar" ;
+ Text [ portuguese_brazilian ] = "Aktualisieren" ;
+ Text[ chinese_simplified ] = "¸üÐÂ(~U)";
+ Text[ russian ] = "Îáíîâèòü";
+ Text[ polish ] = "Aktualizuj";
+ Text[ japanese ] = "XV(~U)";
+ Text[ chinese_traditional ] = "§ó·s(~U)";
+ Text[ arabic ] = "ÊÍÏíË";
+ Text[ greek ] = "~ÅíçìÝñùóç";
+ Text[ korean ] = "¾÷ µ¥ÀÌÆ®(~U)";
+ Text[ turkish ] = "~Güncelle";
+ };
+ String ST_EDIT_CONTENT
+ {
+ Text = "Bearbeiten" ;
+ Text [ English ] = "Edit" ;
+ Text [ english_us ] = "Edit" ;
+ Text [ swedish ] = "Redigera" ;
+ Text [ danish ] = "Rediger" ;
+ Text [ italian ] = "Modifica" ;
+ Text [ spanish ] = "Editar" ;
+ Text [ french ] = "Edition" ;
+ Text [ dutch ] = "Bewerken" ;
+ Text [ portuguese_brazilian ] = "Bearbeiten" ;
+ Text [ portuguese ] = "Editar" ;
+ Text[ chinese_simplified ] = "±à¼­";
+ Text[ russian ] = "Ïðàâêà";
+ Text[ polish ] = "Edytuj";
+ Text[ japanese ] = "•ÒW";
+ Text[ chinese_traditional ] = "½s¿è";
+ Text[ arabic ] = "ÊÍÑíÑ";
+ Text[ greek ] = "Åðåîåñãáóßá";
+ Text[ korean ] = "ÆíÁý";
+ Text[ turkish ] = "Düzenle";
+ };
+ String ST_INSERT
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen : Einf³gen */
+ Text = "Einfügen" ;
+ Text [ English ] = "Insert" ;
+ Text [ norwegian ] = "Sette inn" ;
+ 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" ;
+ Text[ chinese_simplified ] = "²åÈë";
+ Text[ russian ] = "Âñòàâêà";
+ Text[ polish ] = "Wstaw";
+ Text[ japanese ] = "‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J";
+ Text[ arabic ] = "ÅÏÑÇÌ";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "»ðÀÔ";
+ Text[ turkish ] = "Ekle";
+ };
+ String ST_INDEX
+ {
+ Text = "~Verzeichnis" ;
+ Text [ English ] = "Inde~x" ;
+ Text[ english_us ] = "~Index";
+ Text[ portuguese ] = "~Índice";
+ Text[ russian ] = "Óêàçàòåëü";
+ Text[ greek ] = "Å~õñåôÞñéï";
+ Text[ dutch ] = "~Index";
+ Text[ french ] = "~Index";
+ Text[ spanish ] = "Í~ndice";
+ Text[ italian ] = "Indice";
+ Text[ danish ] = "Indeks";
+ Text[ swedish ] = "~Förteckning";
+ Text[ polish ] = "Indeks";
+ Text[ portuguese_brazilian ] = "Ín~ice";
+ Text[ japanese ] = "õˆø(~I)";
+ Text[ korean ] = "»öÀÎ(~I)";
+ Text[ chinese_simplified ] = "Ŀ¼(~I)";
+ Text[ chinese_traditional ] = "¯Á¤Þ(~I)";
+ Text[ arabic ] = "ÝåÑÓ";
+ Text[ turkish ] = "~Dizin";
+ };
+ String ST_FILE
+ {
+ Text = "Datei" ;
+ Text [ English ] = "File" ;
+ Text [ english_us ] = "File" ;
+ Text [ portuguese_brazilian ] = "Datei" ;
+ Text [ swedish ] = "Fil" ;
+ Text [ danish ] = "Fil" ;
+ Text [ italian ] = "File" ;
+ Text [ spanish ] = "Archivo" ;
+ Text [ french ] = "Fichier" ;
+ Text [ dutch ] = "Bestand" ;
+ Text [ portuguese ] = "Ficheiro" ;
+ Text[ chinese_simplified ] = "Îļþ";
+ Text[ russian ] = "Ôàéë";
+ Text[ polish ] = "Plik";
+ Text[ japanese ] = "̧²Ù";
+ Text[ chinese_traditional ] = "ÀÉ®×";
+ Text[ arabic ] = "ÇáãáÝ";
+ Text[ greek ] = "Áñ÷åßï";
+ Text[ korean ] = "ÆÄÀÏ";
+ Text[ turkish ] = "Dosya";
+ };
+ String ST_NEW_FILE
+ {
+ Text = "Neues Dokument" ;
+ Text [ English ] = "New document" ;
+ Text [ english_us ] = "New Document" ;
+ Text [ portuguese_brazilian ] = "Neues Dokument" ;
+ Text [ swedish ] = "Nytt dokument" ;
+ Text [ danish ] = "Nyt dokument" ;
+ Text [ italian ] = "Nuovo documento" ;
+ Text [ spanish ] = "Nuevo documento" ;
+ Text [ french ] = "Nouveau document" ;
+ Text [ dutch ] = "Nieuw document" ;
+ Text [ portuguese ] = "Novo documento" ;
+ Text[ chinese_simplified ] = "н¨Îĵµ";
+ Text[ russian ] = "Íîâûé äîêóìåíò";
+ Text[ polish ] = "Nowy dokument";
+ Text[ japanese ] = "V‚µ‚¢ÄÞ·­ÒÝÄ";
+ Text[ chinese_traditional ] = "¶}±Ò·sÀÉ";
+ Text[ arabic ] = "ãÓÊäÏ ÌÏíÏ";
+ Text[ greek ] = "Äçìéïõñãßá åããñÜöïõ";
+ Text[ korean ] = "»õ ¹®¼­";
+ Text[ turkish ] = "Yeni belge";
+ };
+ String ST_TEXT
+ {
+ Text = "Text" ;
+ Text [ English ] = "Text" ;
+ Text [ english_us ] = "Text" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ swedish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ italian ] = "Testo" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ french ] = "Texte" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ portuguese ] = "Texto" ;
+ Text[ chinese_simplified ] = "Îı¾";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷½Ä";
+ Text[ chinese_traditional ] = "¤å¦r";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ };
+ String ST_DELETE
+ {
+ /* ### 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 ] = "Supprimer" ;
+ 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";
+ };
+ String ST_DELETE_ENTRY
+ {
+ 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 ] = "Wis~sen" ;
+ 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";
+ };
+ String ST_UPDATE_SEL
+ {
+ Text = "Selektion" ;
+ Text [ English ] = "Selection" ;
+ Text [ english_us ] = "Selection" ;
+ Text [ portuguese_brazilian ] = "Selektion" ;
+ Text [ swedish ] = "Markering" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ italian ] = "Selezione" ;
+ Text [ spanish ] = "Selección" ;
+ Text [ french ] = "Sélection" ;
+ Text [ dutch ] = "Selectie" ;
+ Text [ portuguese ] = "Selecção" ;
+ Text[ chinese_simplified ] = "Ñ¡ÖÐ";
+ Text[ russian ] = "Âûäåëåíèå";
+ Text[ polish ] = "Selekcja";
+ Text[ japanese ] = "‘I‘ð”͈Í";
+ Text[ chinese_traditional ] = "¿ï¤¤";
+ Text[ arabic ] = "ÇáÊÍÏíÏ";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ turkish ] = "Seçim";
+ };
+ String ST_UPDATE_INDEX
+ {
+ Text = "Verzeichnisse" ;
+ Text [ English ] = "Indexes" ;
+ Text [ english_us ] = "Indexes" ;
+ Text [ portuguese_brazilian ] = "Verzeichnisse" ;
+ Text [ swedish ] = "Förteckningar" ;
+ Text [ danish ] = "Indeks" ;
+ Text [ italian ] = "Indici" ;
+ Text [ spanish ] = "Índices" ;
+ Text [ french ] = "Index" ;
+ Text [ dutch ] = "Indices" ;
+ Text [ portuguese ] = "Índices" ;
+ Text[ chinese_simplified ] = "Ë÷Òý";
+ Text[ russian ] = "Óêàçàòåëè";
+ Text[ polish ] = "Indeksy";
+ Text[ japanese ] = "–ÚŽŸ‚Æõˆø";
+ Text[ chinese_traditional ] = "¥Ø¿ý";
+ Text[ arabic ] = "ÝåÇÑÓ";
+ Text[ greek ] = "ÅõñåôÞñéá";
+ Text[ korean ] = "»öÀÎ";
+ Text[ turkish ] = "Dizin";
+ };
+ String ST_UPDATE_LINK
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Verknüpfungen : Verkn³pfungen */
+ Text = "Verknüpfungen" ;
+ Text [ English ] = "Links" ;
+ Text [ english_us ] = "Links" ;
+ Text [ portuguese_brazilian ] = "Verknüpfungen" ;
+ Text [ swedish ] = "Länkar" ;
+ Text [ danish ] = "Kæder" ;
+ Text [ italian ] = "Collegamenti" ;
+ Text [ spanish ] = "Vínculos" ;
+ Text [ french ] = "Liens" ;
+ Text [ dutch ] = "Koppelingen" ;
+ Text [ portuguese ] = "Ligações" ;
+ Text[ chinese_simplified ] = "Á´½Ó";
+ Text[ russian ] = "Ññûëêè";
+ Text[ polish ] = "£¹cza";
+ Text[ japanese ] = "Øݸ";
+ Text[ chinese_traditional ] = "±¶®|";
+ Text[ arabic ] = "ÇÑÊÈÇØÇÊ";
+ Text[ greek ] = "ÓõíäÝóåéò";
+ Text[ korean ] = "¿¬°á";
+ Text[ turkish ] = "Baðlantý";
+ };
+ String ST_UPDATE_ALL
+ {
+ Text = "Alles" ;
+ Text [ English ] = "All" ;
+ Text [ english_us ] = "All" ;
+ Text [ portuguese_brazilian ] = "Alles" ;
+ Text [ swedish ] = "Allt" ;
+ Text [ danish ] = "Alt" ;
+ Text [ italian ] = "Tutto" ;
+ Text [ spanish ] = "Todo" ;
+ Text [ french ] = "Tout" ;
+ Text [ dutch ] = "Alles" ;
+ Text [ portuguese ] = "Tudo" ;
+ Text[ chinese_simplified ] = "È«²¿";
+ Text[ russian ] = "Âñå";
+ Text[ polish ] = "Wszystko";
+ Text[ japanese ] = "‚·‚ׂÄ";
+ Text[ chinese_traditional ] = "¥þ³¡";
+ Text[ arabic ] = "Çáßá";
+ Text[ greek ] = "¼ëá";
+ Text[ korean ] = "Àüü";
+ Text[ turkish ] = "Tümü";
+ };
+ String ST_REMOVE_INDEX
+ {
+ Text = "~Verzeichnis aufheben" ;
+ Text [ English ] = "Dismiss index" ;
+ Text [ english_us ] = "~Remove Index" ;
+ Text [ portuguese_brazilian ] = "Verzeichnis aufheben" ;
+ Text [ swedish ] = "Upphä~v förteckning" ;
+ Text [ danish ] = "Ophæv indeks" ;
+ Text [ italian ] = "Rimuovi indice" ;
+ Text [ spanish ] = "Eliminar dire~ctorio" ;
+ Text [ french ] = "~Supprimer l'index" ;
+ Text [ dutch ] = "~Index opheffen" ;
+ Text [ portuguese ] = "~Remover índice" ;
+ Text[ chinese_simplified ] = "ɾ³ýĿ¼(~R)";
+ Text[ russian ] = "Óáðàòü óêàçàòåëü";
+ Text[ polish ] = "Usuñ indeks";
+ Text[ japanese ] = "õˆø‚̉ðœ(~R)";
+ Text[ chinese_traditional ] = "¨ú®ø¥Ø¿ý(~R)";
+ Text[ arabic ] = "ÅÒÇáÉ ÇáÝåÑÓ";
+ Text[ greek ] = "ÊáôÜñãçóç åõñåôçñßïõ";
+ Text[ korean ] = "»öÀÎ »èÁ¦(~R)";
+ Text[ turkish ] = "D~izini kaldýr";
+ };
+ String ST_REMOVE_TBL_PROTECTION
+ {
+ Text = "Schutz ~aufheben" ;
+ Text [ English ] = "~Unprotect" ;
+ Text [ norwegian ] = "~Ubeskytte" ;
+ Text [ italian ] = "Disattiva~ protezione" ;
+ Text [ portuguese_brazilian ] = "~Desproteger" ;
+ Text [ portuguese ] = "D~esproteger" ;
+ Text [ finnish ] = "~Unprotect" ;
+ Text [ danish ] = "Ophæv beskyttelse" ;
+ Text [ french ] = "Enlever la protection" ;
+ Text [ swedish ] = "~Upphäv skydd" ;
+ Text [ dutch ] = "Beveiliging ~opheffen" ;
+ Text [ spanish ] = "~Desproteger" ;
+ Text [ english_us ] = "~Unprotect" ;
+ Text[ chinese_simplified ] = "È¡Ïû±£»¤(~U)";
+ Text[ russian ] = "Ñíÿòü çàùèòó";
+ Text[ polish ] = "Usuñ ochronê";
+ Text[ japanese ] = "•ÛŒì‚̉ðœ(~U)";
+ Text[ chinese_traditional ] = "¨ú®ø«OÅ@(~U)";
+ Text[ arabic ] = "ÅáÛÇÁ ÇáÍãÇíÉ";
+ Text[ greek ] = "¢ñóç ðñïóôáóßáò";
+ Text[ korean ] = "º¸È£ ÇØÁ¦(~U)";
+ Text[ turkish ] = "Korumayý ~kaldýr";
+ };
+ String ST_INVISIBLE
+ {
+ Text = "versteckt";
+ Text[English] = "hidden";
+ Text[ english_us ] = "hidden";
+ Text[ portuguese ] = "oculto";
+ Text[ russian ] = "ñïðÿòàí";
+ Text[ greek ] = "êñõöÜ";
+ Text[ dutch ] = "verborgen";
+ Text[ french ] = "caché";
+ Text[ spanish ] = "oculto";
+ Text[ italian ] = "Nascosto";
+ Text[ danish ] = "skjult";
+ Text[ swedish ] = "gömd";
+ Text[ polish ] = "schowany";
+ Text[ portuguese_brazilian ] = "hidden";
+ Text[ japanese ] = "‰B‚µ";
+ Text[ korean ] = "¼û±â±â";
+ Text[ chinese_simplified ] = "ÒþÈëµÄ";
+ Text[ chinese_traditional ] = "Áô¤J";
+ Text[ arabic ] = "ãÎÝí";
+ Text[ turkish ] = "gizli";
+ };
+ String ST_BROKEN_LINK
+ {
+ Text = "Datei nicht gefunden: ";
+ Text[English] = "File not found: ";
+ Text[ italian ] = "File non trovato: ";
+ Text[ portuguese_brazilian ] = "File not found: ";
+ Text[ portuguese ] = "Ficheiro não encontrado: ";
+ Text[ danish ] = "Fil blev ikke fundet: ";
+ Text[ french ] = "Fichier introuvable : ";
+ Text[ swedish ] = "Filen har ej hittats: ";
+ Text[ dutch ] = "Bestand niet gevonden: ";
+ Text[ spanish ] = "Archivo no encontrado: ";
+ Text[ english_us ] = "File not found: ";
+ Text[ chinese_simplified ] = "ûÓÐÕÒµ½Îļþ£º ";
+ Text[ russian ] = "Ôàéë íå íàéäåí: ";
+ Text[ polish ] = "Pliku nie znaleziono: ";
+ Text[ japanese ] = "̧²Ù‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ: ";
+ Text[ chinese_traditional ] = "¨S¦³§ä¨ìÀɮסG ";
+ Text[ arabic ] = "ÊÚÐÑ ÇáÚËæÑ Úáì ÇáãáÝ: ";
+ Text[ greek ] = "Äåí âñÝèçêå ôï áñ÷åßï: ";
+ Text[ korean ] = "ÆÄÀÏÀÌ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù: ";
+ Text[ turkish ] = "Dosya bulunamadý: ";
+ };
+ String ST_RENAME
+ {
+ Text = "~Umbenennen";
+ Text[English] = "Rename";
+ Text[ english_us ] = "~Rename";
+ Text[ portuguese ] = "~Mudar nome";
+ Text[ russian ] = "Ïåðåèìåíîâàòü";
+ Text[ greek ] = "Ìåôïíïìáóßá";
+ Text[ dutch ] = "~Naam wijzigen";
+ Text[ french ] = "~Renommer";
+ Text[ spanish ] = "Ca~mbiar nombre";
+ Text[ italian ] = "Rinomina";
+ Text[ danish ] = "Omdøb";
+ Text[ swedish ] = "~Byt namn";
+ Text[ polish ] = "Zmieñ nazwê";
+ Text[ portuguese_brazilian ] = "Rename";
+ Text[ japanese ] = "–¼‘O‚Ì•ÏX(~R)";
+ Text[ korean ] = "À̸§ ¹Ù²Ù±â(~R)";
+ Text[ chinese_simplified ] = "ÖØÃüÃû(~R)";
+ Text[ chinese_traditional ] = "­«·s©R¦W(~R)";
+ Text[ arabic ] = "ÅÚÇÏÉ ÊÓãíÉ";
+ Text[ turkish ] = "~Yeniden adlandýr";
+ };
+ String ST_READONLY_IDX
+ {
+ Text = "~Schreibgeschützt";
+ Text[English] = "Readonly";
+ Text[ english_us ] = "Read ~only";
+ Text[ portuguese ] = "Só ~leitura";
+ Text[ russian ] = "Òîëüêî äëÿ ÷òåíèÿ";
+ Text[ greek ] = "Müíï ãéá áíÜãíùóç";
+ Text[ dutch ] = "~Schrijfbeveiligd";
+ Text[ french ] = "en ~lecture seule";
+ Text[ spanish ] = "Solo le~ctura";
+ Text[ italian ] = "A sola lettura";
+ Text[ danish ] = "Skrivebeskyttet";
+ Text[ swedish ] = "~Skrivskyddad";
+ Text[ polish ] = "Tylko do odczytu";
+ Text[ portuguese_brazilian ] = "Readonly";
+ Text[ japanese ] = "“Ç‚ÝŽæ‚èê—p(~O)";
+ Text[ korean ] = "ÀбâÀü¿ë(~O)";
+ Text[ chinese_simplified ] = "·À¸²Ð´(~O)";
+ Text[ chinese_traditional ] = "¨¾Âмg(~O)";
+ Text[ arabic ] = "ááÞÑÇÁÉ ÝÞØ";
+ Text[ turkish ] = "Sa~lt okunur";
+ };
+ Text[ chinese_simplified ] = "ÖúÊÖ";
+ Text[ russian ] = "Íàâèãàòîð";
+ Text[ polish ] = "Nawigator";
+ Text[ japanese ] = "ÅËÞ¹Þ°À";
+ Text[ chinese_traditional ] = "§U¤â";
+ Text[ arabic ] = "ÇáäÇÝíÌíÊæÑ";
+ Text[ greek ] = "Navigator";
+ Text[ korean ] = "³×ºñ°ÔÀÌÅÍ";
+ Text[ turkish ] = "Navigatör";
+};
+ImageList IMG_NAVI_ENTRYBMP
+{
+ ImageBitmap = Bitmap { File = "nccntnt.bmp" ; };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ 20000 ;
+ 20001 ;
+ 20002 ;
+ 20003 ;
+ 20004 ;
+ 20005 ;
+ 20006 ;
+ 20007 ;
+ 20008 ;
+ 20009 ;
+ 20010 ;
+ 20102 ;
+ };
+ IdCount = { 12 ; };
+};
+
diff --git a/sw/source/ui/utlui/numfmtlb.cxx b/sw/source/ui/utlui/numfmtlb.cxx
new file mode 100644
index 000000000000..1184dd2410fd
--- /dev/null
+++ b/sw/source/ui/utlui/numfmtlb.cxx
@@ -0,0 +1,688 @@
+/*************************************************************************
+ *
+ * $RCSfile: numfmtlb.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _LANG_HXX //autogen
+#include <tools/lang.hxx>
+#endif
+#ifndef _ZFORMAT_HXX //autogen
+#define _ZFORLIST_DECLARE_TABLE
+#include <svtools/zformat.hxx>
+#endif
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SVX_NUMINF_HXX //autogen
+#define ITEMID_NUMBERINFO SID_ATTR_NUMBERFORMAT_INFO
+#include <svx/numinf.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SVX_LANGITEM_HXX //autogen
+#include <svx/langitem.hxx>
+#endif
+#ifndef _SVX_NUMFMT_HXX //autogen
+#include <svx/numfmt.hxx>
+#endif
+#ifndef _SV_SYSTEM_HXX //autogen
+#include <vcl/system.hxx>
+#endif
+
+#include "tblnumfm.hxx"
+#include "docsh.hxx"
+#include "swtypes.hxx"
+#include "swmodule.hxx"
+#include "view.hxx"
+#include "wrtsh.hxx"
+
+#include "utlui.hrc"
+#include "numfmtlb.hxx"
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+// STATIC DATA -----------------------------------------------------------
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ nFormatType: Formate dieses Typs anzeigen
+ nDefFmt: Dieses Format selektieren und ggf vorher
+ einfuegen
+ --------------------------------------------------------------------*/
+
+NumFormatListBox::NumFormatListBox( Window* pWin, const ResId& rResId,
+ short nFormatType, ULONG nDefFmt,
+ BOOL bUsrFmts ) :
+ ListBox ( pWin, rResId ),
+ nCurrFormatType (-1),
+ nStdEntry (0),
+ bOneArea (FALSE),
+ nDefFormat (nDefFmt),
+ pVw (0),
+ pOwnFormatter (0)
+{
+ Init(nFormatType, bUsrFmts);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+NumFormatListBox::NumFormatListBox( Window* pWin, SwView* pView,
+ const ResId& rResId, short nFormatType,
+ ULONG nDefFmt, BOOL bUsrFmts ) :
+ ListBox ( pWin, rResId ),
+ nCurrFormatType (-1),
+ nStdEntry (0),
+ bOneArea (FALSE),
+ nDefFormat (nDefFmt),
+ pVw (pView),
+ pOwnFormatter (0)
+{
+ Init(nFormatType, bUsrFmts);
+}
+
+/* -----------------15.06.98 11:29-------------------
+ *
+ * --------------------------------------------------*/
+
+void NumFormatListBox::Init(short nFormatType, BOOL bUsrFmts)
+{
+ SwView *pView = GetView();
+
+ if (pView)
+ {
+ SwWrtShell &rSh = pView->GetWrtShell();
+ SfxItemSet aSet( rSh.GetAttrPool(), RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE);
+ rSh.GetAttr(aSet);
+ eCurLanguage = ((const SvxLanguageItem&)aSet.Get( RES_CHRATR_LANGUAGE ) ).GetLanguage();
+ }
+ else
+ eCurLanguage = Application::GetAppInternational().GetLanguage();
+
+ if (bUsrFmts == FALSE)
+ pOwnFormatter = new SvNumberFormatter(eCurLanguage);
+
+ SetFormatType(nFormatType);
+ SetDefFormat(nDefFormat);
+
+ SetSelectHdl(LINK(this, NumFormatListBox, SelectHdl));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+NumFormatListBox::~NumFormatListBox()
+{
+ if (pOwnFormatter)
+ delete pOwnFormatter;
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwView* NumFormatListBox::GetView()
+{
+ if( pVw )
+ return pVw;
+ return ::GetActiveView();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void NumFormatListBox::SetFormatType(const short nFormatType)
+{
+ if (nCurrFormatType == -1 ||
+ (nCurrFormatType & nFormatType) == 0) // Es gibt Mischformate, wie z.B. DateTime
+ {
+ SvNumberFormatter* pFormatter;
+
+ if( pOwnFormatter )
+ pFormatter = pOwnFormatter;
+ else
+ {
+ SwView *pView = GetView();
+ SwWrtShell &rSh = pView->GetWrtShell();
+ pFormatter = rSh.GetNumberFormatter();
+ }
+
+ Clear(); // Alle Eintraege in der Listbox entfernen
+
+ NfIndexTableOffset eOffsetStart = NF_NUMBER_START;
+ NfIndexTableOffset eOffsetEnd = NF_NUMBER_START;
+
+ switch( nFormatType )
+ {
+ case NUMBERFORMAT_NUMBER:
+ eOffsetStart=NF_NUMBER_START;
+ eOffsetEnd=NF_NUMBER_END;
+ break;
+
+ case NUMBERFORMAT_PERCENT:
+ eOffsetStart=NF_PERCENT_START;
+ eOffsetEnd=NF_PERCENT_END;
+ break;
+
+ case NUMBERFORMAT_CURRENCY:
+ eOffsetStart=NF_CURRENCY_START;
+ eOffsetEnd=NF_CURRENCY_END;
+ break;
+
+ case NUMBERFORMAT_DATETIME:
+ eOffsetStart=NF_DATE_START;
+ eOffsetEnd=NF_TIME_END;
+ break;
+
+ case NUMBERFORMAT_DATE:
+ eOffsetStart=NF_DATE_START;
+ eOffsetEnd=NF_DATE_END;
+ break;
+
+ case NUMBERFORMAT_TIME:
+ eOffsetStart=NF_TIME_START;
+ eOffsetEnd=NF_TIME_END;
+ break;
+
+ case NUMBERFORMAT_SCIENTIFIC:
+ eOffsetStart=NF_SCIENTIFIC_START;
+ eOffsetEnd=NF_SCIENTIFIC_END;
+ break;
+
+ case NUMBERFORMAT_FRACTION:
+ eOffsetStart=NF_FRACTION_START;
+ eOffsetEnd=NF_FRACTION_END;
+ break;
+
+ case NUMBERFORMAT_LOGICAL:
+ eOffsetStart=NF_BOOLEAN;
+ eOffsetEnd=NF_BOOLEAN;
+ break;
+
+ case NUMBERFORMAT_TEXT:
+ eOffsetStart=NF_TEXT;
+ eOffsetEnd=NF_TEXT;
+ break;
+
+ case NUMBERFORMAT_ALL:
+ eOffsetStart=NF_NUMERIC_START;
+ eOffsetEnd = NfIndexTableOffset( NF_INDEX_TABLE_ENTRIES - 1 );
+ break;
+
+ default:
+ DBG_ERROR("what a format?");
+ break;
+ }
+
+ const SvNumberformat* pFmt;
+ USHORT nPos, i = 0;
+ ULONG nFormat;
+ Color* pCol;
+ double fVal = GetDefValue( pFormatter, nFormatType );
+ String sValue;
+
+ ULONG nSysNumFmt = pFormatter->GetFormatIndex(
+ NF_NUMBER_SYSTEM, eCurLanguage );
+ ULONG nSysShortDateFmt = pFormatter->GetFormatIndex(
+ NF_DATE_SYSTEM_SHORT, eCurLanguage );
+ ULONG nSysLongDateFmt = pFormatter->GetFormatIndex(
+ NF_DATE_SYSTEM_LONG, eCurLanguage );
+
+ for( long nIndex = eOffsetStart; nIndex <= eOffsetEnd; ++nIndex )
+ {
+ nFormat = pFormatter->GetFormatIndex(
+ (NfIndexTableOffset)nIndex, eCurLanguage );
+ pFmt = pFormatter->GetEntry( nFormat );
+
+ if( nFormat == pFormatter->GetFormatIndex( NF_NUMBER_STANDARD,
+ eCurLanguage )
+ || ((SvNumberformat*)pFmt)->GetOutputString( fVal, sValue, &pCol )
+ || nFormatType == NUMBERFORMAT_UNDEFINED )
+ sValue = pFmt->GetFormatstring();
+ else if( nFormatType == NUMBERFORMAT_TEXT )
+ {
+ String sTxt(C2S("\"ABC\""));
+ pFormatter->GetOutputString( sTxt, nFormat, sValue, &pCol);
+ }
+
+ if (nFormat != nSysNumFmt &&
+ nFormat != nSysShortDateFmt &&
+ nFormat != nSysLongDateFmt)
+ {
+ nPos = InsertEntry( sValue );
+ SetEntryData( nPos, (void*)nFormat );
+
+ if( nFormat == pFormatter->GetStandardFormat(
+ nFormatType, eCurLanguage ) )
+ nStdEntry = i;
+ ++i;
+ }
+ }
+
+ if (!pOwnFormatter)
+ {
+ nPos = InsertEntry(SW_RESSTR( STR_DEFINE_NUMBERFORMAT ));
+ SetEntryData( nPos, NULL );
+ }
+
+ SelectEntryPos( nStdEntry );
+
+ nCurrFormatType = nFormatType;
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void NumFormatListBox::SetDefFormat(const ULONG nDefFmt)
+{
+ if (nDefFmt == ULONG_MAX)
+ {
+ nDefFormat = nDefFmt;
+ return;
+ }
+
+ if (!nDefFmt)
+ SelectEntryPos(nStdEntry);
+ else
+ {
+ SvNumberFormatter* pFormatter;
+
+ if (pOwnFormatter)
+ pFormatter = pOwnFormatter;
+ else
+ {
+ SwView *pView = GetView();
+ SwWrtShell &rSh = pView->GetWrtShell();
+ pFormatter = rSh.GetNumberFormatter();
+ }
+
+ short nType = pFormatter->GetType(nDefFmt);
+
+ SetFormatType(nType);
+
+ ULONG nFormat = pFormatter->GetFormatForLanguageIfBuiltIn(nDefFmt, eCurLanguage);
+
+ for (USHORT i = 0; i < GetEntryCount(); i++)
+ {
+ if (nFormat == (ULONG)GetEntryData(i))
+ {
+ SelectEntryPos(i);
+ nStdEntry = i;
+ nDefFormat = GetFormat();
+ return;
+ }
+ }
+
+ // Kein Eintrag gefunden:
+ double fValue = GetDefValue(pFormatter, nType);
+ String sValue;
+ Color* pCol = 0;
+
+ if (nType == NUMBERFORMAT_TEXT)
+ {
+ String sTxt(C2S("\"ABC\""));
+ pFormatter->GetOutputString(sTxt, nDefFmt, sValue, &pCol);
+ }
+ else
+ pFormatter->GetOutputString(fValue, nDefFmt, sValue, &pCol);
+
+ USHORT nPos = 0;
+ while ((ULONG)GetEntryData(nPos) == ULONG_MAX)
+ nPos++;
+
+//
+ ULONG nSysNumFmt = pFormatter->GetFormatIndex( NF_NUMBER_SYSTEM, eCurLanguage);
+ ULONG nSysShortDateFmt = pFormatter->GetFormatIndex( NF_DATE_SYSTEM_SHORT, eCurLanguage);
+ ULONG nSysLongDateFmt = pFormatter->GetFormatIndex( NF_DATE_SYSTEM_LONG, eCurLanguage);
+ BOOL bSysLang = FALSE;
+ if(::GetSystemLanguage() == eCurLanguage)
+ bSysLang = TRUE;
+ ULONG nNumFormatForLanguage = pFormatter->GetFormatForLanguageIfBuiltIn(nSysNumFmt, LANGUAGE_SYSTEM );
+ ULONG nShortDateFormatForLanguage = pFormatter->GetFormatForLanguageIfBuiltIn(nSysShortDateFmt, LANGUAGE_SYSTEM );
+ ULONG nLongDateFormatForLanguage = pFormatter->GetFormatForLanguageIfBuiltIn(nSysLongDateFmt, LANGUAGE_SYSTEM );
+
+ if(nDefFmt == nSysNumFmt||
+ nDefFmt == nSysShortDateFmt||
+ nDefFmt == nSysLongDateFmt||
+ bSysLang && (nDefFmt == nNumFormatForLanguage ||
+ nDefFmt == nShortDateFormatForLanguage ||
+ nDefFmt == nLongDateFormatForLanguage ))
+ sValue += String(SW_RES(RID_STR_SYSTEM));
+
+ nPos = InsertEntry(sValue, nPos); // Als ersten numerischen Eintrag einfuegen
+ SetEntryData(nPos, (void*)nDefFmt);
+ SelectEntryPos(nPos);
+ }
+ nDefFormat = GetFormat();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+ULONG NumFormatListBox::GetFormat() const
+{
+ USHORT nPos = GetSelectEntryPos();
+
+ return (ULONG)GetEntryData(nPos);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+const String& NumFormatListBox::GetFormatStr() const
+{
+ return aEmptyStr;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( NumFormatListBox, SelectHdl, ListBox *, pBox )
+{
+ USHORT nPos = pBox->GetSelectEntryPos();
+ String sDefine(SW_RES( STR_DEFINE_NUMBERFORMAT ));
+ SwView *pView = GetView();
+
+ if (pView && nPos == pBox->GetEntryCount() - 1 && pBox->GetEntry(nPos) == sDefine)
+ {
+ SvNumberFormatter* pFormatter;
+
+ SwWrtShell &rSh = pView->GetWrtShell();
+ pFormatter = rSh.GetNumberFormatter();
+
+ SfxItemSet aCoreSet( rSh.GetAttrPool(),
+ SID_ATTR_NUMBERFORMAT_VALUE, SID_ATTR_NUMBERFORMAT_VALUE,
+ SID_ATTR_NUMBERFORMAT_INFO, SID_ATTR_NUMBERFORMAT_INFO,
+ SID_ATTR_NUMBERFORMAT_ONE_AREA, SID_ATTR_NUMBERFORMAT_ONE_AREA,
+ SID_ATTR_NUMBERFORMAT_NOLANGUAGE, SID_ATTR_NUMBERFORMAT_NOLANGUAGE,
+ 0 );
+
+
+ double fValue = GetDefValue(pFormatter, nCurrFormatType);
+
+ ULONG nFormat = pFormatter->GetStandardFormat(nCurrFormatType, eCurLanguage);
+ SfxUInt32Item aVal(SID_ATTR_NUMBERFORMAT_VALUE, nFormat);
+ aCoreSet.Put(aVal);
+
+ SvxNumberInfoItem aNumInf(pFormatter, fValue, SID_ATTR_NUMBERFORMAT_INFO);
+ aCoreSet.Put(aNumInf);
+
+ if ((nCurrFormatType & NUMBERFORMAT_DATE) || (nCurrFormatType & NUMBERFORMAT_TIME))
+ aCoreSet.Put(SfxBoolItem(SID_ATTR_NUMBERFORMAT_ONE_AREA, bOneArea));
+
+ // Keine Sprachauswahl im Dialog, da Sprache im Textattribut enthalten ist
+ aCoreSet.Put(SfxBoolItem(SID_ATTR_NUMBERFORMAT_NOLANGUAGE, TRUE));
+
+ SwNumFmtDlg* pDlg = new SwNumFmtDlg(this, aCoreSet);
+
+ if (RET_OK == pDlg->Execute())
+ {
+ const SfxPoolItem* pItem = pView->GetDocShell()->
+ GetItem( SID_ATTR_NUMBERFORMAT_INFO );
+
+ if( pItem && 0 != ((SvxNumberInfoItem*)pItem)->GetDelCount() )
+ {
+ const ULONG* pDelArr = ((SvxNumberInfoItem*)pItem)->GetDelArray();
+
+ for ( USHORT i = 0; i < ((SvxNumberInfoItem*)pItem)->GetDelCount(); i++ )
+ pFormatter->DeleteEntry( pDelArr[i] );
+ }
+
+ if( SFX_ITEM_SET == pDlg->GetOutputItemSet()->GetItemState(
+ SID_ATTR_NUMBERFORMAT_VALUE, FALSE, &pItem ))
+ {
+ SetDefFormat(((SfxUInt32Item*)pItem)->GetValue());
+ }
+ }
+ else
+ SetDefFormat(nFormat);
+
+ delete pDlg;
+ }
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+double NumFormatListBox::GetDefValue(SvNumberFormatter* pFormatter, const short nFormatType) const
+{
+ double fDefValue = 0.0;
+
+ switch (nFormatType)
+ {
+ case NUMBERFORMAT_DATE:
+ case NUMBERFORMAT_DATE|NUMBERFORMAT_TIME:
+ fDefValue = SVX_NUMVAL_DATE;
+ break;
+
+ case NUMBERFORMAT_TIME:
+ fDefValue = SVX_NUMVAL_TIME;
+ break;
+/* {
+ String sValue("31.8.1997 16:57:34");
+ ULONG nFormat = pFormatter->GetStandardFormat(nFormatType, LANGUAGE_GERMAN);
+ pFormatter->IsNumberFormat( sValue, nFormat, fDefValue );
+ }
+ break;*/
+
+ case NUMBERFORMAT_TEXT:
+ case NUMBERFORMAT_UNDEFINED:
+ case NUMBERFORMAT_ENTRY_NOT_FOUND:
+ fDefValue = 0;
+ break;
+
+ case NUMBERFORMAT_CURRENCY:
+ fDefValue = SVX_NUMVAL_CURRENCY;
+ break;
+
+ case NUMBERFORMAT_PERCENT:
+ fDefValue = SVX_NUMVAL_PERCENT;
+ break;
+
+ case NUMBERFORMAT_LOGICAL:
+ fDefValue = SVX_NUMVAL_BOOLEAN;
+ break;
+
+ default:
+ fDefValue = SVX_NUMVAL_STANDARD;
+ break;
+ }
+
+ return fDefValue;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void NumFormatListBox::Clear()
+{
+ ListBox::Clear();
+ nCurrFormatType = -1;
+}
+
+/*************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.31 2000/09/18 16:06:18 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.30 2000/04/18 15:14:08 os
+ UNICODE
+
+ Revision 1.29 2000/03/03 15:17:05 os
+ StarView remainders removed
+
+ Revision 1.28 2000/02/25 09:53:39 hr
+ #73447#: removed temporary
+
+ Revision 1.27 2000/02/11 15:00:49 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.26 1999/06/28 12:54:58 JP
+ Bug #67242#: SetFormatType - use eCurLanguage
+
+
+ Rev 1.25 28 Jun 1999 14:54:58 JP
+ Bug #67242#: SetFormatType - use eCurLanguage
+
+ Rev 1.24 28 Jun 1999 13:57:44 JP
+ Bug #67247#: SetFormatType - support of FormatTypeAll
+
+ Rev 1.23 18 Jun 1999 15:28:02 OS
+ #60657# Manual sorted number formats
+
+ Rev 1.22 10 Jun 1999 13:14:52 JP
+ have to change: no AppWin from SfxApp
+
+ Rev 1.21 10 Feb 1999 14:13:02 OS
+ #52055# Systemformate koennen auch unter 0x5000 liegen
+
+ Rev 1.20 21 Jan 1999 11:07:18 OS
+ #52055# [System] an Systemformat anhaengen
+
+ Rev 1.19 15 Jun 1998 12:27:56 OM
+ #51009# Numberformatter-Listbox ViewPtr reinreichen
+
+ Rev 1.18 20 May 1998 14:24:02 OM
+ Kombinierte DateTime-Formate verarbeiten
+
+ Rev 1.17 19 May 1998 14:24:30 OM
+ #47310 Definierte Standardwerte und keine Sprachauswahl
+
+ Rev 1.16 11 Feb 1998 16:30:32 OM
+ Textdarstellung fuer Felder
+
+ Rev 1.15 13 Jan 1998 15:03:10 OM
+ Formula-Field wieder unterstuetzt
+
+ Rev 1.14 12 Jan 1998 12:57:12 OM
+ Alle Sprachen anzeigen
+
+ Rev 1.13 12 Jan 1998 12:42:16 OM
+ Alle Sprachen anzeigen
+
+ Rev 1.12 09 Jan 1998 10:07:26 OM
+ Sprache organisieren
+
+ Rev 1.11 08 Jan 1998 17:49:00 OM
+ Neue Datumsfelder einfuegen
+
+ Rev 1.10 06 Jan 1998 18:14:12 OM
+ Felbefehl-Dlg
+
+ Rev 1.9 19 Dec 1997 18:23:54 OM
+ Feldbefehl-bearbeiten Dlg
+
+ Rev 1.8 16 Dec 1997 17:04:50 OM
+ Feldbefehle bearbeiten
+
+ Rev 1.7 11 Dec 1997 17:01:26 OM
+ Feldumstellung
+
+ Rev 1.6 29 Nov 1997 15:08:58 MA
+ includes
+
+ Rev 1.5 21 Nov 1997 17:19:04 OM
+ Feldbefehl-Umstellung: DocInfo
+
+ Rev 1.4 21 Nov 1997 12:10:16 MA
+ includes
+
+ Rev 1.3 20 Nov 1997 17:02:34 OM
+ Neuer Felddialog
+
+ Rev 1.2 10 Nov 1997 15:29:04 OM
+ Zahlenformat-Listbox
+
+ Rev 1.1 07 Nov 1997 16:56:08 OM
+ NumberFormat-Listbox
+
+ Rev 1.0 07 Nov 1997 16:37:08 OM
+ Initial revision.
+
+*************************************************************************/
diff --git a/sw/source/ui/utlui/poolfmt.src b/sw/source/ui/utlui/poolfmt.src
new file mode 100644
index 000000000000..b1be4e12a119
--- /dev/null
+++ b/sw/source/ui/utlui/poolfmt.src
@@ -0,0 +1,4956 @@
+/*************************************************************************
+ *
+ * $RCSfile: poolfmt.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "poolfmt.hrc"
+
+ // -----------------
+ // Format-Namen
+ // -----------------
+String STR_POOLCHR_FOOTNOTE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Fußnotenzeichen : Fu˜notenzeichen */
+ Text = "Fußnotenzeichen" ;
+ Text [ English ] = "Footnote" ;
+ Text [ english_us ] = "Footnote Symbol" ;
+ Text [ italian ] = "Carattere note a piè pagina" ;
+ Text [ spanish ] = "Símbolo de nota al pie" ;
+ Text [ french ] = "Symbole de note de bas de page" ;
+ Text [ dutch ] = "Voetnootteken" ;
+ Text [ swedish ] = "Fotnotstecken" ;
+ Text [ danish ] = "Fodnotetegn" ;
+ Text [ portuguese ] = "Símbolo de nota de rodapé" ;
+ Text [ portuguese_brazilian ] = "Fußnotenzeichen" ;
+ Text[ chinese_simplified ] = "×¢½Å·û";
+ Text[ russian ] = "Çíàê ñíîñêè";
+ Text[ polish ] = "Symbol przypisów doln.";
+ Text[ japanese ] = "‹r’‹L†";
+ Text[ chinese_traditional ] = "µù¸}²Å";
+ Text[ arabic ] = "ÑãÒ ÇáÍÇÔíÉ ÇáÓÝáíÉ";
+ Text[ greek ] = "Óýìâïëï õðïóçìåßùóçò";
+ Text[ korean ] = "°¢ÁÖ ±âÈ£";
+ Text[ turkish ] = "Dipnot karakterleri";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_PAGENO
+{
+ Text = "Seitenzahl" ;
+ Text [ English ] = "Page number" ;
+ Text [ dutch ] = "Paginanummer" ;
+ Text [ english_us ] = "Page Number" ;
+ Text [ italian ] = "Numero di pagina" ;
+ Text [ spanish ] = "Número de página" ;
+ Text [ french ] = "Numéro de page" ;
+ Text [ swedish ] = "Sidnummer" ;
+ Text [ danish ] = "Sidetal" ;
+ Text [ portuguese ] = "Número de páginas" ;
+ Text [ portuguese_brazilian ] = "Seitenzahl" ;
+ Text[ chinese_simplified ] = "Ò³Âë";
+ Text[ russian ] = "Íîìåð ñòðàíèöû";
+ Text[ polish ] = "IloϾ stron";
+ Text[ japanese ] = "Íß°¼Þ”Ô†";
+ Text[ chinese_traditional ] = "­¶­±¸¹½X";
+ Text[ arabic ] = "ÑÞã ÇáÕÝÍÉ";
+ Text[ greek ] = "Áñéèìüò óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ¹øÈ£";
+ Text[ turkish ] = "Sayfa sayýsý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_LABEL
+{
+ Text = "Beschriftungszeichen" ;
+ Text [ English ] = "Label" ;
+ Text [ dutch ] = "Bijschrifttekens" ;
+ Text [ english_us ] = "Caption characters" ;
+ Text [ italian ] = "Carattere per dicitura" ;
+ Text [ spanish ] = "Caracteres de etiqueta" ;
+ Text [ french ] = "Caractères de la légende" ;
+ Text [ swedish ] = "Bildtexttecken" ;
+ Text [ danish ] = "Billedteksttegn" ;
+ Text [ portuguese ] = "Caracteres para etiqueta" ;
+ Text [ portuguese_brazilian ] = "Beschriftungszeichen" ;
+ Text[ chinese_simplified ] = "±êÇ©ÎÄ";
+ Text[ russian ] = "Òåêñò íàçâàíèÿ";
+ Text[ polish ] = "Tekst etykiety";
+ Text[ japanese ] = "Œ©o‚µ•¶Žš";
+ Text[ chinese_traditional ] = "¼ÐÅÒ¤å";
+ Text[ arabic ] = "ÃÍÑÝ ÇáÊÓãíÉ ÇáÊæÖíÍíÉ";
+ Text[ greek ] = "×áñáêôÞñåò åðéãñáöÞò";
+ Text[ korean ] = "ĸ¼Ç ¹®ÀÚ";
+ Text[ turkish ] = "Etiket karakterleri";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_DROPCAPS
+{
+ Text = "Initialenzeichen" ;
+ Text [ English ] = "Drop caps" ;
+ Text [ english_us ] = "Drop Caps" ;
+ Text [ italian ] = "Carattere capolettera" ;
+ Text [ spanish ] = "Iniciales" ;
+ Text [ french ] = "Autre caractère" ;
+ Text [ dutch ] = "Initialen" ;
+ Text [ swedish ] = "Anfangstecken" ;
+ Text [ danish ] = "Initialtegn" ;
+ Text [ portuguese ] = "Iniciais" ;
+ Text [ portuguese_brazilian ] = "Initialenzeichen" ;
+ Text[ chinese_simplified ] = "×ÖÊ×´óд";
+ Text[ russian ] = "Èíèöèàëû";
+ Text[ polish ] = "Inicja³y";
+ Text[ japanese ] = "ÄÞÛ¯Ìß·¬¯Ìß";
+ Text[ chinese_traditional ] = "¦r­º¤j¼g";
+ Text[ arabic ] = "ÇáÃÍÑÝ ÇáÇÓÊåáÇáíÉ";
+ Text[ greek ] = "Êåöáëáßá ãñÜììáôá";
+ Text[ korean ] = "´Ü¶ôÀÇ Ã¹¹®ÀÚ Àå½Ä";
+ Text[ turkish ] = "Baþharfler";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_NUM_LEVEL
+{
+ Text = "Nummerierungszeichen" ;
+ Text [ English ] = "Numbering" ;
+ Text [ english_us ] = "Numbering Symbols" ;
+ Text [ italian ] = "Carattere di numerazione" ;
+ Text [ spanish ] = "Carácter de numeración" ;
+ Text [ french ] = "Caractères de numérotation" ;
+ Text [ dutch ] = "Nummeringsteken" ;
+ Text [ swedish ] = "Numreringstecken" ;
+ Text [ danish ] = "Nummereringstegn" ;
+ Text [ portuguese ] = "Caracteres de numeração" ;
+ Text [ portuguese_brazilian ] = "Numerierungszeichen" ;
+ Text[ chinese_simplified ] = "±àºÅ·ûºÅ";
+ Text[ russian ] = "Çíàê íóìåðàöèè";
+ Text[ polish ] = "Znaki numeracji";
+ Text[ japanese ] = "”Ô†•t‚¯‹L†";
+ Text[ chinese_traditional ] = "½s¸¹²Å¸¹";
+ Text[ arabic ] = "ÚáÇãÇÊ ÊÑÞíã";
+ Text[ greek ] = "×áñáêôÞñåò áñßèìçóçò";
+ Text[ korean ] = "¹øÈ£ ±âÈ£";
+ Text[ turkish ] = "Numaralama karakterleri";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_BUL_LEVEL
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählungszeichen : Aufzõhlungszeichen */
+ Text = "Aufzählungszeichen" ;
+ Text [ English ] = "Bullet" ;
+ Text [ english_us ] = "Bullet Symbols" ;
+ Text [ italian ] = "Carattere per numerazione" ;
+ Text [ spanish ] = "Viñetas" ;
+ Text [ french ] = "Puces" ;
+ Text [ dutch ] = "Opsommingstekens" ;
+ Text [ swedish ] = "Uppräkningstecken" ;
+ Text [ danish ] = "Punkttegn" ;
+ Text [ portuguese_brazilian ] = "Aufzählungszeichen" ;
+ Text [ portuguese ] = "Marcas e números" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ";
+ Text[ russian ] = "Ñèìâîëû ìàðêåðà";
+ Text[ polish ] = "Symbol wypunktowania";
+ Text[ japanese ] = "‰Óð‘‚«‹L†‚Æ’i—Ž”Ô†";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹";
+ Text[ arabic ] = "ÚáÇãÇÊ ÇáÊÚÏÇÏ";
+ Text[ greek ] = "Óýìâïëá áñßèìçóçò";
+ Text[ korean ] = "±Û¸Ó¸® ±âÈ£";
+ Text[ turkish ] = "Madde iþaretleri";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_INET_NORMAL
+{
+ Text = "Internet Link" ;
+ Text [ English ] = "Internet link" ;
+ Text [ english_us ] = "Internet link" ;
+ Text [ italian ] = "Link Internet" ;
+ Text [ spanish ] = "Vínculo Internet" ;
+ Text [ french ] = "Lien Internet" ;
+ Text [ dutch ] = "Internet Link" ;
+ Text [ swedish ] = "Internetlänk" ;
+ Text [ danish ] = "Hyperlink" ;
+ Text [ portuguese ] = "Link Internet" ;
+ Text [ portuguese_brazilian ] = "Internet Link" ;
+ Text[ chinese_simplified ] = "¹ú¼Ê»¥ÁªÍøÁ´½Ó";
+ Text[ russian ] = "Ññûëêà Èíòåðíåòà";
+ Text[ polish ] = "£¹cze internetowe";
+ Text[ japanese ] = "²ÝÀ°È¯Ä Øݸ";
+ Text[ chinese_traditional ] = "Internet ±¶®|";
+ Text[ arabic ] = "ÇÑÊÈÇØ ÅäÊÑäÊ";
+ Text[ greek ] = "Óýíäåóç ôïõ Internet";
+ Text[ korean ] = "ÀÎÅÍ³Ý ¿¬°á";
+ Text[ turkish ] = "Internet baðlantýsý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_INET_VISIT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Besuchter Internet Link : besuchter Internet Link */
+ /* ### ACHTUNG: Neuer Text in Resource? Besuchter Internet Link : besuchter Internet Link */
+ Text = "Besuchter Internet Link" ;
+ Text [ English ] = "Visit internet link" ;
+ Text [ english_us ] = "Visited Internet Link" ;
+ Text [ italian ] = "Link Internet visitato" ;
+ Text [ spanish ] = "Página Internet visitada" ;
+ Text [ french ] = "Lien Internet visité" ;
+ Text [ dutch ] = "Bezochte Internet Link" ;
+ Text [ swedish ] = "Använd Internetlänk" ;
+ Text [ danish ] = "Besøgt hyperlink" ;
+ Text [ portuguese ] = "Link Internet visitado" ;
+ Text [ portuguese_brazilian ] = "Besuchter Internet Link" ;
+ Text[ chinese_simplified ] = "·ÃÎʹýµÄ¹ú¼Ê»¥ÁªÍøÁ´½Ó";
+ Text[ russian ] = "Ïîñåùåííàÿ ññûëêà Èíòåðíåòà";
+ Text[ polish ] = "Odwiedzone ³¹cze internetowe";
+ Text[ japanese ] = "–K‚ꂽ²ÝÀ°È¯Ä Øݸ";
+ Text[ chinese_traditional ] = "³X°Ý¹Lªº Internet ±¶®|";
+ Text[ arabic ] = "ÇÑÊÈÇØ ÇáÅäÊÑäÊ ÇáÐí Êã ÒíÇÑÊå";
+ Text[ greek ] = "Óýíäåóç Internet ðïõ åðéóêåöèÞêáôå";
+ Text[ korean ] = "¹æ¹®ÇÑ ÀÎÅÍ³Ý ¸µÅ©";
+ Text[ turkish ] = "Kullanýlmýþ Internet baðlantýsý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_JUMPEDIT
+{
+ Text = "Platzhalter" ;
+ Text [ English ] = "Place marker" ;
+ Text [ english_us ] = "Placeholder" ;
+ Text [ italian ] = "Segnaposto" ;
+ Text [ spanish ] = "Comodín" ;
+ Text [ french ] = "Substituant" ;
+ Text [ dutch ] = "Plaatsvervanger" ;
+ Text [ swedish ] = "Platshållare" ;
+ Text [ danish ] = "Pladsholdere" ;
+ Text [ portuguese ] = "Marcador de posição" ;
+ Text [ portuguese_brazilian ] = "Platzhalter" ;
+ Text[ chinese_simplified ] = "ͨÅä·û";
+ Text[ russian ] = "Ìåòêà-çàïîëíèòåëü";
+ Text[ polish ] = "Znak-wype³niacz";
+ Text[ japanese ] = "ܲÙÄÞ¶°ÄÞ";
+ Text[ chinese_traditional ] = "³q°t²Å";
+ Text[ arabic ] = "ÚäÕÑ äÇÆÈ";
+ Text[ greek ] = "Óýìâïëï êñÜôçóçò èÝóçò";
+ Text[ korean ] = "°³Ã¼Æ²";
+ Text[ turkish ] = "Genel arama karakteri";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_TOXJUMP
+{
+ Text = "Verzeichnissprung" ;
+ Text [ English ] = "Register jump" ;
+ Text [ dutch ] = "Indexsprong" ;
+ Text [ english_us ] = "Index Link" ;
+ Text [ swedish ] = "Förteckningslänk" ;
+ Text [ danish ] = "Indeksspring" ;
+ Text [ italian ] = "Salto a indice" ;
+ Text [ spanish ] = "Salto de índice" ;
+ Text [ french ] = "Saut d'index" ;
+ Text [ portuguese ] = "Salto ao índice" ;
+ Text [ portuguese_brazilian ] = "Verzeichnissprung" ;
+ Text[ chinese_simplified ] = "Ë÷ÒýÁ´½Ó";
+ Text[ russian ] = "Ññûëêà óêàçàòåëÿ";
+ Text[ polish ] = "Skok w indeksie";
+ Text[ japanese ] = "õˆø¼Þ¬ÝÌß";
+ Text[ chinese_traditional ] = "¥Ø¿ý±¶®|";
+ Text[ arabic ] = "ÇÑÊÈÇØ ÝåÑÓ";
+ Text[ greek ] = "Óýíäåóç åõñåôçñßïõ";
+ Text[ korean ] = "»öÀÎ ¿¬°á";
+ Text[ turkish ] = "Dizin baðlantýsý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_ENDNOTE
+{
+ Text = "Endnotenzeichen" ;
+ Text [ English ] = "Endnote Symbol" ;
+ Text [ english_us ] = "Endnote Symbol" ;
+ Text [ portuguese ] = "Símbolo de nota final" ;
+ Text [ portuguese_brazilian ] = "Endnotenzeichen" ;
+ Text [ swedish ] = "Slutnotstecken" ;
+ Text [ danish ] = "Slutnotetegn" ;
+ Text [ italian ] = "Carattere nota di chiusura" ;
+ Text [ spanish ] = "Símbolo de nota final" ;
+ Text [ french ] = "Caractère de note de fin" ;
+ Text [ dutch ] = "Eindnootteken" ;
+ Text[ chinese_simplified ] = "β±ê·û";
+ Text[ russian ] = "Çíàê êîíöåâîé ñíîñêè";
+ Text[ polish ] = "Symbol przypisów koñc.";
+ Text[ japanese ] = "•¶––‹r’‹L†";
+ Text[ chinese_traditional ] = "§À¼Ð²Å";
+ Text[ arabic ] = "ÑãÒ ÇáÊÚáíÞ ÇáÎÊÇãí";
+ Text[ greek ] = "Óýìâïëï óçìåßùóçò ôÝëïõò";
+ Text[ korean ] = "¹ÌÁÖ ±âÈ£";
+ Text[ turkish ] = "Sonnot karakterleri";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_LINENUM
+{
+ Text = "Zeilennummerierung" ;
+ Text [ English ] = "Line numbering" ;
+ Text [ portuguese ] = "Numeração de linhas" ;
+ Text [ english_us ] = "Line numbering" ;
+ Text [ portuguese_brazilian ] = "Zeilennumerierung" ;
+ Text [ swedish ] = "Radnumrering" ;
+ Text [ danish ] = "Linjenummerering" ;
+ Text [ italian ] = "Numerazione righe" ;
+ Text [ spanish ] = "Numeración de líneas" ;
+ Text [ french ] = "Numérotation de lignes" ;
+ Text [ dutch ] = "Regelnummering" ;
+ Text[ chinese_simplified ] = "ÐбàºÅ";
+ Text[ russian ] = "Íóìåðàöèÿ ñòðîê";
+ Text[ polish ] = "Numeracja wierszy";
+ Text[ japanese ] = "s‚̔Ԇ•t‚¯";
+ Text[ chinese_traditional ] = "¦æ½s¸¹";
+ Text[ arabic ] = "ÊÑÞíã ÇáÃÓØÑ";
+ Text[ greek ] = "Áñßèìçóç ãñáììþí";
+ Text[ korean ] = "¼± ¹øÈ£";
+ Text[ turkish ] = "Satýr numaralamasý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_IDX_MAIN_ENTRY
+{
+ Text = "Stichwortverzeichnis Haupteintrag" ;
+ Text [ English ] = "Main index entry" ;
+ Text[ english_us ] = "Main index entry";
+ Text[ portuguese ] = "Entrada principal de índice remissivo";
+ Text[ russian ] = "Ïðåäìåòíûé óêàçàòåëü: îñíîâíîé ýëåìåíò";
+ Text[ greek ] = "Êýñéá åããñáöÞ åõñåôçñßïõ ëÝîåùí";
+ Text[ dutch ] = "Index hoofditem";
+ Text[ french ] = "Index lexical : entrée principale";
+ Text[ spanish ] = "Entrada principal índice alfabético";
+ Text[ italian ] = "Voce principale per indice analitico";
+ Text[ danish ] = "Stikordsregister hovedelement";
+ Text[ swedish ] = "Sakregister huvudpost";
+ Text[ polish ] = "Zestaw hase³ Wpis g³ówny";
+ Text[ portuguese_brazilian ] = "Main index entry";
+ Text[ japanese ] = "õˆø‚ÌŽå“ü—Í";
+ Text[ korean ] = "ÁÖ »öÀÎ Ç׸ñ";
+ Text[ chinese_simplified ] = "Ë÷ÒýÖ÷ÌõÄ¿";
+ Text[ chinese_traditional ] = "¯Á¤Þ¥D±ø¥Ø";
+ Text[ arabic ] = "ÅÏÎÇá ÑÆíÓí Ýí ÇáÝåÑÓ ÇáÃÈÌÏí";
+ Text[ turkish ] = "Alfabetik dizin ana giriþi";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_FOOTNOTE_ANCHOR
+{
+ Text = "Fußnotenanker" ;
+ Text [ English ] = "Footnote anchor" ;
+ Text[ english_us ] = "Footnote anchor";
+ Text[ portuguese ] = "Âncora para nota de rodapé";
+ Text[ russian ] = "Ïðèâÿçêà ñíîñêè";
+ Text[ greek ] = "Áãêýñùóç õðïóçìåßùóçò";
+ Text[ dutch ] = "Voetnootanker";
+ Text[ french ] = "Appel de note de bas de page";
+ Text[ spanish ] = "Ancla de nota al pie";
+ Text[ italian ] = "Ancoraggio note a piè pagina";
+ Text[ danish ] = "Fodnoteanker";
+ Text[ swedish ] = "Fotnotsankare";
+ Text[ polish ] = "Zakotwiczenie przypisów doln.";
+ Text[ portuguese_brazilian ] = "Footnote anchor";
+ Text[ japanese ] = "‹r’±Ý¶°";
+ Text[ korean ] = "°¢ÁÖ °íÁ¤ ±âÁØ";
+ Text[ chinese_simplified ] = "×¢½Å±ê¼Ç";
+ Text[ chinese_traditional ] = "ª`¸}¼Ð¸¹";
+ Text[ arabic ] = "ãÑÓÇÉ ÇáÍÇÔíÉ ÇáÓÝáíÉ";
+ Text[ turkish ] = "Dipnot sabitleyicisi";
+};
+String STR_POOLCHR_ENDNOTE_ANCHOR
+{
+ Text = "Endnotenanker" ;
+ Text [ English ] = "Endnote anchor" ;
+ Text[ english_us ] = "Endnote anchor";
+ Text[ portuguese ] = "Âncora de nota final";
+ Text[ russian ] = "Ïðèâÿçêà êîíöåâîé ñíîñêè";
+ Text[ greek ] = "Áãêýñùóç óçìåéþóåùí ôÝëïõò";
+ Text[ dutch ] = "Eindnootanker";
+ Text[ french ] = "Appel de note de fin";
+ Text[ spanish ] = "Ancla de nota al final";
+ Text[ italian ] = "Ancoraggio note di chiusura";
+ Text[ danish ] = "Slutnoteanker";
+ Text[ swedish ] = "Slutnotsankare";
+ Text[ polish ] = "Zakotwiczenie przypisów koñc.";
+ Text[ portuguese_brazilian ] = "Endnote anchor";
+ Text[ japanese ] = "•¶––‹r’±Ý¶°";
+ Text[ korean ] = "¹ÌÁÖ °íÁ¤ ±âÁØ";
+ Text[ chinese_simplified ] = "βע±ê¼Ç";
+ Text[ chinese_traditional ] = "§Àª`¼Ð¸¹";
+ Text[ arabic ] = "ãÑÓÇÉ ÇáÊÚáíÞ ÇáÎÊÇãí";
+ Text[ turkish ] = "Sonnot sabitleyicisi";
+};
+
+ // Zeichenvorlagen fuer HTML
+String STR_POOLCHR_HTML_EMPHASIS
+{
+ Text = "Betont" ;
+ Text [ English ] = "Emphasis" ;
+ Text [ dutch ] = "Geaccentueerd" ;
+ Text [ english_us ] = "Emphasis" ;
+ Text [ swedish ] = "Betonad" ;
+ Text [ danish ] = "Fremhævet" ;
+ Text [ italian ] = "Enfasi" ;
+ Text [ spanish ] = "Destacado" ;
+ Text [ french ] = "Accentuation" ;
+ Text [ portuguese ] = "Destaque" ;
+ Text [ portuguese_brazilian ] = "Betont" ;
+ Text[ chinese_simplified ] = "Ç¿µ÷";
+ Text[ russian ] = "Âûäåëåíèå";
+ Text[ polish ] = "Wyró¿niony";
+ Text[ japanese ] = "‹­’²";
+ Text[ chinese_traditional ] = "±j½Õ";
+ Text[ arabic ] = "ÅÈÑÇÒ";
+ Text[ greek ] = "Ôïíéóìüò";
+ Text[ korean ] = "°­Á¶";
+ Text[ turkish ] = "Vurgu";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_HTML_CITIATION
+{
+ Text = "Zitat" ;
+ Text [ English ] = "Citation" ;
+ Text [ dutch ] = "Citaat" ;
+ Text [ english_us ] = "Citation" ;
+ Text [ swedish ] = "Citat" ;
+ Text [ danish ] = "Citat" ;
+ Text [ italian ] = "Citazione" ;
+ Text [ spanish ] = "Cita" ;
+ Text [ french ] = "Citation" ;
+ Text [ portuguese ] = "Citação" ;
+ Text [ portuguese_brazilian ] = "Zitat" ;
+ Text[ chinese_simplified ] = "ÒýÓÃÎÄ";
+ Text[ russian ] = "Öèòàòà";
+ Text[ polish ] = "Cytat";
+ Text[ japanese ] = "ˆø—p";
+ Text[ chinese_traditional ] = "¤Þ¤å";
+ Text[ arabic ] = "ÇÓÊÔåÇÏ ÈÞæá";
+ Text[ greek ] = "Míçìüíåõóç";
+ Text[ korean ] = "Àοë";
+ Text[ turkish ] = "Alýntý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_HTML_STRONG
+{
+ Text = "Stark betont" ;
+ Text [ English ] = "Strong Emphasis" ;
+ Text [ dutch ] = "Sterk accent" ;
+ Text [ english_us ] = "Strong Emphasis" ;
+ Text [ swedish ] = "Starkt betonad" ;
+ Text [ danish ] = "Stærk fremhævet" ;
+ Text [ italian ] = "Enfasi forte" ;
+ Text [ spanish ] = "Muy destacado" ;
+ Text [ french ] = "Accentuation forte" ;
+ Text [ portuguese ] = "Destaque acentuado" ;
+ Text [ portuguese_brazilian ] = "Stark betont" ;
+ Text[ chinese_simplified ] = "Ç¿µ÷";
+ Text[ russian ] = "Âûäåëåíèå æèðíûì";
+ Text[ polish ] = "Mocno wyró¿niony";
+ Text[ japanese ] = "‹­‚¢‹­’²";
+ Text[ chinese_traditional ] = "±j½Õ";
+ Text[ arabic ] = "ÅÈÑÇÒ ÈæÖæÍ";
+ Text[ greek ] = "¸íôïíïò ôïíéóìüò";
+ Text[ korean ] = "°­ÇÑ °­Á¶";
+ Text[ turkish ] = "Kuvvetli vurgu";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_HTML_CODE
+{
+ Text = "Quelltext" ;
+ Text [ English ] = "Listing" ;
+ Text [ dutch ] = "Brontekst" ;
+ Text [ english_us ] = "Source Text" ;
+ Text [ swedish ] = "Källtext" ;
+ Text [ danish ] = "Kildetekst" ;
+ Text [ italian ] = "Testo sorgente" ;
+ Text [ spanish ] = "Texto fuente" ;
+ Text [ french ] = "Texte source" ;
+ Text [ portuguese ] = "Texto-fonte" ;
+ Text [ portuguese_brazilian ] = "Quelltext" ;
+ Text[ chinese_simplified ] = "Ô´Îı¾";
+ Text[ russian ] = "Èñõîäíûé òåêñò";
+ Text[ polish ] = "Tekst Ÿród³owy";
+ Text[ japanese ] = "¿°½";
+ Text[ chinese_traditional ] = "­ì©lÀÉ";
+ Text[ arabic ] = "äÕ ÇáãÕÏÑ";
+ Text[ greek ] = "Êåßìåíï ðñïÝëåõóçò";
+ Text[ korean ] = "¼Ò½º ÅؽºÆ®";
+ Text[ turkish ] = "Kaynak kodu";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_HTML_SAMPLE
+{
+ Text = "Beispiel" ;
+ Text [ English ] = "Example" ;
+ Text [ dutch ] = "Voorbeeld" ;
+ Text [ english_us ] = "Example" ;
+ Text [ swedish ] = "Exempel" ;
+ Text [ danish ] = "Eksempel" ;
+ Text [ italian ] = "Esempio" ;
+ Text [ spanish ] = "Ejemplo" ;
+ Text [ french ] = "Exemple" ;
+ Text [ portuguese ] = "Exemplo" ;
+ Text [ portuguese_brazilian ] = "Beispiel" ;
+ Text[ chinese_simplified ] = "Àý×Ó";
+ Text[ russian ] = "Ïðèìåð";
+ Text[ polish ] = "Przyk³ad";
+ Text[ japanese ] = "—á";
+ Text[ chinese_traditional ] = "¨Ò¤l";
+ Text[ arabic ] = "ãËÇá";
+ Text[ greek ] = "ÐáñÜäåéãìá";
+ Text[ korean ] = "¿¹";
+ Text[ turkish ] = "Örnek";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_HTML_KEYBOARD
+{
+ Text = "Benutzereingabe" ;
+ Text [ English ] = "User typed text" ;
+ Text [ dutch ] = "Gebruikergegevens" ;
+ Text [ english_us ] = "User Entry" ;
+ Text [ swedish ] = "Användarinmatning" ;
+ Text [ danish ] = "Brugerinput" ;
+ Text [ italian ] = "Digitazione dell'utente" ;
+ Text [ spanish ] = "Entrada del usuario" ;
+ Text [ french ] = "Saisie de l'utilisateur" ;
+ Text [ portuguese ] = "Entrada do utilizador" ;
+ Text [ portuguese_brazilian ] = "Benutzereingabe" ;
+ Text[ chinese_simplified ] = "Óû§ÊäÈë";
+ Text[ russian ] = "Ââîä ïîëüçîâàòåëÿ";
+ Text[ polish ] = "Wpis u¿ytkownika";
+ Text[ japanese ] = "Õ°»Þ°“ü—Í";
+ Text[ chinese_traditional ] = "¨Ï¥ÎªÌ¿é¤J";
+ Text[ arabic ] = "ÅÏÎÇá ÇáãÓÊÎÏã";
+ Text[ greek ] = "ÅéóáãùãÞ ÷ñÞóôç";
+ Text[ korean ] = "»ç¿ëÀÚ Ç׸ñ";
+ Text[ turkish ] = "Kullanýcý giriþi";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_HTML_VARIABLE
+{
+ Text = "Variable" ;
+ Text [ English ] = "Variable" ;
+ Text [ dutch ] = "Variabele" ;
+ Text [ english_us ] = "Variable" ;
+ Text [ swedish ] = "Variabel" ;
+ Text [ danish ] = "Variabel" ;
+ Text [ italian ] = "Variabile" ;
+ Text [ spanish ] = "Variable" ;
+ Text [ french ] = "Variable" ;
+ Text [ portuguese ] = "Variável" ;
+ Text [ portuguese_brazilian ] = "Variable" ;
+ Text[ chinese_simplified ] = "¿É±ä";
+ Text[ russian ] = "Ïåðåìåííàÿ";
+ Text[ polish ] = "Zmienna";
+ Text[ japanese ] = "•Ï”";
+ Text[ chinese_traditional ] = "¥iÅÜ";
+ Text[ arabic ] = "ãÊÛíÑÉ";
+ Text[ greek ] = "ÌåôáâëçôÞ";
+ Text[ korean ] = "º¯¼ö";
+ Text[ turkish ] = "Deðiþken";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_HTML_DEFINSTANCE
+{
+ Text = "Definition" ;
+ Text [ English ] = "Definition" ;
+ Text [ dutch ] = "Definitie" ;
+ Text [ english_us ] = "Definition" ;
+ Text [ swedish ] = "Definition" ;
+ Text [ danish ] = "Definition" ;
+ Text [ italian ] = "Definizione" ;
+ Text [ spanish ] = "Definición" ;
+ Text [ french ] = "Définition" ;
+ Text [ portuguese ] = "Definição" ;
+ Text [ portuguese_brazilian ] = "Definition" ;
+ Text[ chinese_simplified ] = "¶¨Òå";
+ Text[ russian ] = "Îïðåäåëåíèå";
+ Text[ polish ] = "Definicja";
+ Text[ japanese ] = "’è‹`";
+ Text[ chinese_traditional ] = "©w¸q";
+ Text[ arabic ] = "ÊÚÑíÝ";
+ Text[ greek ] = "Ïñéóìüò";
+ Text[ korean ] = "Á¤ÀÇ";
+ Text[ turkish ] = "Taným";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCHR_HTML_TELETYPE
+{
+ Text = "Nicht-proportionaler Text" ;
+ Text [ English ] = "Teletype" ;
+ Text [ dutch ] = "Niet-proportionele tekst" ;
+ Text [ english_us ] = "Teletype" ;
+ Text [ swedish ] = "Icke-proportionell text" ;
+ Text [ danish ] = "Ikke-proportional tekst" ;
+ Text [ italian ] = "Testo non proporzionale" ;
+ Text [ spanish ] = "Texto no proporcional" ;
+ Text [ french ] = "Texte non proportionnel" ;
+ Text [ portuguese ] = "Texto não-proporcional" ;
+ Text [ portuguese_brazilian ] = "Nicht-proportionaler Text" ;
+ Text[ chinese_simplified ] = "·Ç³É±ÈÀýÎÄ×Ö";
+ Text[ russian ] = "Íåïðîïîðöèîíàëüíûé òåêñò";
+ Text[ polish ] = "Tekst nie proporcjonalny";
+ Text[ japanese ] = "•s‹Ï®‚È÷½Ä";
+ Text[ chinese_traditional ] = "«D¦¨¤ñ¨Ò¤å¦r";
+ Text[ arabic ] = "äÕ ÛíÑ ÊäÇÓÈí";
+ Text[ greek ] = "Ìç áñìïíéêü êåßìåíï";
+ Text[ korean ] = "ÅÚ·¹Å¸ÀÌÇÁ";
+ Text[ turkish ] = "Orantýsýz yazýtipi";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_POOLCHR_PRGM_FOOTNOTE
+{
+ Text = "Footnote Symbol" ;
+};
+String STR_POOLCHR_PRGM_PAGENO
+{
+ Text = "Page Number" ;
+};
+String STR_POOLCHR_PRGM_LABEL
+{
+ Text = "Caption characters" ;
+};
+String STR_POOLCHR_PRGM_DROPCAPS
+{
+ Text = "Drop Caps" ;
+};
+String STR_POOLCHR_PRGM_NUM_LEVEL
+{
+ Text = "Numbering Symbols" ;
+};
+String STR_POOLCHR_PRGM_BUL_LEVEL
+{
+ Text = "Bullet Symbols" ;
+};
+String STR_POOLCHR_PRGM_INET_NORMAL
+{
+ Text = "Internet link" ;
+};
+String STR_POOLCHR_PRGM_INET_VISIT
+{
+ Text = "Visited Internet Link" ;
+};
+String STR_POOLCHR_PRGM_JUMPEDIT
+{
+ Text = "Placeholder" ;
+};
+String STR_POOLCHR_PRGM_TOXJUMP
+{
+ Text = "Index Link" ;
+};
+String STR_POOLCHR_PRGM_ENDNOTE
+{
+ Text = "Endnote Symbol" ;
+};
+String STR_POOLCHR_PRGM_LINENUM
+{
+ Text = "Line numbering" ;
+};
+String STR_POOLCHR_PRGM_IDX_MAIN_ENTRY
+{
+ Text = "Main index entry";
+};
+String STR_POOLCHR_PRGM_FOOTNOTE_ANCHOR
+{
+ Text = "Footnote anchor";
+};
+String STR_POOLCHR_PRGM_ENDNOTE_ANCHOR
+{
+ Text = "Endnote anchor";
+};
+
+ // Zeichenvorlagen fuer HTML
+String STR_POOLCHR_PRGM_HTML_EMPHASIS
+{
+ Text = "Emphasis" ;
+};
+String STR_POOLCHR_PRGM_HTML_CITIATION
+{
+ Text = "Citation" ;
+};
+String STR_POOLCHR_PRGM_HTML_STRONG
+{
+ Text = "Strong Emphasis" ;
+};
+String STR_POOLCHR_PRGM_HTML_CODE
+{
+ Text = "Source Text" ;
+};
+String STR_POOLCHR_PRGM_HTML_SAMPLE
+{
+ Text = "Example" ;
+};
+String STR_POOLCHR_PRGM_HTML_KEYBOARD
+{
+ Text = "User Entry" ;
+};
+String STR_POOLCHR_PRGM_HTML_VARIABLE
+{
+ Text = "Variable" ;
+};
+String STR_POOLCHR_PRGM_HTML_DEFINSTANCE
+{
+ Text = "Definition" ;
+};
+String STR_POOLCHR_PRGM_HTML_TELETYPE
+{
+ Text = "Teletype" ;
+};
+// Rahmenvorlagen
+String STR_POOLFRM_FRAME
+{
+ Text = "Rahmen" ;
+ Text [ English ] = "Frame" ;
+ Text [ dutch ] = "Kader" ;
+ Text [ english_us ] = "Frame" ;
+ Text [ italian ] = "Cornice" ;
+ Text [ spanish ] = "Marco" ;
+ Text [ french ] = "Cadre" ;
+ Text [ swedish ] = "Ram" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ portuguese ] = "Moldura" ;
+ Text [ portuguese_brazilian ] = "Rahmen" ;
+ Text[ chinese_simplified ] = "¿ò";
+ Text[ russian ] = "Ðàìêà";
+ Text[ polish ] = "Ramka";
+ Text[ japanese ] = "˜g";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¤å¦r¤è¶ô";
+ Text[ arabic ] = "ÅØÇÑ";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "ÅؽºÆ® »óÀÚ";
+ Text[ turkish ] = "Çerçeve";
+};
+String STR_POOLFRM_GRAPHIC
+{
+ Text = "Grafik" ;
+ Text [ English ] = "Graphic" ;
+ Text [ dutch ] = "Afbeelding" ;
+ Text [ english_us ] = "Graphics" ;
+ Text [ italian ] = "Immagine" ;
+ Text [ spanish ] = "Imagen" ;
+ Text [ french ] = "Image" ;
+ Text [ swedish ] = "Grafik" ;
+ Text [ danish ] = "Grafik" ;
+ Text [ portuguese ] = "Gráfico" ;
+ 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_POOLFRM_OLE
+{
+ Text = "OLE" ;
+ Text [ English ] = "OLE" ;
+ Text [ dutch ] = "OLE" ;
+ Text [ english_us ] = "OLE" ;
+ Text [ italian ] = "OLE" ;
+ Text [ spanish ] = "OLE" ;
+ Text [ french ] = "OLE" ;
+ Text [ swedish ] = "OLE" ;
+ Text [ danish ] = "OLE" ;
+ Text [ portuguese ] = "OLE" ;
+ Text [ portuguese_brazilian ] = "OLE" ;
+ Text[ chinese_simplified ] = "OLE";
+ Text[ russian ] = "OLE";
+ Text[ polish ] = "OLE";
+ Text[ japanese ] = "OLE";
+ Text[ chinese_traditional ] = "OLE";
+ Text[ arabic ] = "OLE";
+ Text[ greek ] = "OLE";
+ Text[ korean ] = "OLE";
+ Text[ turkish ] = "OLE";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLFRM_FORMEL
+{
+ Text = "Formel" ;
+ Text [ English ] = "Expression" ;
+ Text [ dutch ] = "Formules" ;
+ Text [ english_us ] = "Formula" ;
+ Text [ italian ] = "Formula" ;
+ Text [ spanish ] = "Fórmula" ;
+ Text [ french ] = "Formule" ;
+ Text [ swedish ] = "Formel" ;
+ Text [ danish ] = "Formel" ;
+ Text [ portuguese ] = "Fórmula" ;
+ Text [ portuguese_brazilian ] = "Formel" ;
+ Text[ chinese_simplified ] = "¹«Ê½";
+ Text[ russian ] = "Ôîðìóëà";
+ Text[ polish ] = "Formu³a";
+ Text[ japanese ] = "”Ž®";
+ Text[ chinese_traditional ] = "¤½¦¡";
+ Text[ arabic ] = "ÕíÛÉ";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "¼ö½Ä";
+ Text[ turkish ] = "Formül";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLFRM_MARGINAL
+{
+ Text = "Marginalie" ;
+ Text [ English ] = "Marginalia" ;
+ Text [ english_us ] = "Marginalia" ;
+ Text [ italian ] = "Nota in margine" ;
+ Text [ spanish ] = "Nota al margen" ;
+ Text [ french ] = "Note en marge" ;
+ Text [ dutch ] = "Kanttekening" ;
+ Text [ swedish ] = "Marginalanteckning" ;
+ Text [ danish ] = "Randbemærkning" ;
+ Text [ portuguese ] = "Notas à margem" ;
+ Text [ portuguese_brazilian ] = "Marginalie" ;
+ Text[ chinese_simplified ] = "±ßÔµ";
+ Text[ russian ] = "Ìàðãèíàëèè";
+ Text[ polish ] = "Marginesy";
+ Text[ japanese ] = "–T’";
+ Text[ chinese_traditional ] = "Ãä½t";
+ Text[ arabic ] = "ãáÇÍÙÇÊ åÇãÔíÉ";
+ Text[ greek ] = "Óçìåéþóåéò óôï ðåñéèþñéï";
+ Text[ korean ] = "¿©¹é";
+ Text[ turkish ] = "Derkenar";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLFRM_WATERSIGN
+{
+ Text = "Wasserzeichen" ;
+ Text [ English ] = "Watermark" ;
+ Text [ dutch ] = "Watermerk" ;
+ Text [ english_us ] = "Watermark" ;
+ Text [ italian ] = "Filigrana" ;
+ Text [ spanish ] = "Marca de agua" ;
+ Text [ french ] = "Filigrane" ;
+ Text [ swedish ] = "Vattenmärke" ;
+ Text [ danish ] = "Vandmærke" ;
+ Text [ portuguese ] = "Marca de água" ;
+ Text [ portuguese_brazilian ] = "Wasserzeichen" ;
+ Text[ chinese_simplified ] = "ˮӡ";
+ Text[ russian ] = "Âîäÿíûå çíàêè";
+ Text[ polish ] = "Znaki wodne";
+ Text[ japanese ] = "“§‚©‚µ";
+ Text[ chinese_traditional ] = "¤ô¦L";
+ Text[ arabic ] = "ÚáÇãÉ ãÇÆíÉ";
+ Text[ greek ] = "Õäáôüóçìï";
+ Text[ korean ] = "¿öÅ͸¶Å©";
+ Text[ turkish ] = "Filigran";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLFRM_LABEL
+{
+ Text = "Etiketten" ;
+ Text [ English ] = "Labels" ;
+ Text [ norwegian ] = "Etiketter" ;
+ Text [ italian ] = "Etichette" ;
+ Text [ portuguese_brazilian ] = "Etiquetas" ;
+ Text [ portuguese ] = "Etiquetas" ;
+ Text [ finnish ] = "Tarrat" ;
+ Text [ danish ] = "Etiketter" ;
+ Text [ french ] = "Étiquettes" ;
+ Text [ swedish ] = "Etiketter" ;
+ Text [ dutch ] = "Etiketten" ;
+ Text [ spanish ] = "Etiquetas" ;
+ Text [ english_us ] = "Labels" ;
+ Text[ chinese_simplified ] = "±êÇ©";
+ Text[ russian ] = "Íàêëåéêè";
+ Text[ polish ] = "Etykiety";
+ Text[ japanese ] = "×ÍÞÙ";
+ Text[ chinese_traditional ] = "¶K¼Ð";
+ Text[ arabic ] = "ÈØÇÞÇÊ ÚäæäÉ";
+ Text[ greek ] = "ÅôéêÝôåò";
+ Text[ korean ] = "¶óº§";
+ Text[ turkish ] = "Etiket";
+ Text[ language_user1 ] = " ";
+};
+ String STR_POOLFRM_PRGM_FRAME
+{
+ Text = "Frame" ;
+};
+String STR_POOLFRM_PRGM_GRAPHIC
+{
+ Text = "Graphics" ;
+};
+String STR_POOLFRM_PRGM_OLE
+{
+ Text = "OLE" ;
+};
+String STR_POOLFRM_PRGM_FORMEL
+{
+ Text = "Formula" ;
+};
+String STR_POOLFRM_PRGM_MARGINAL
+{
+ Text = "Marginalia" ;
+};
+String STR_POOLFRM_PRGM_WATERSIGN
+{
+ Text = "Watermark" ;
+};
+String STR_POOLFRM_PRGM_LABEL
+{
+ Text = "Labels" ;
+};
+
+ // -----------------
+ // Vorlagen-Namen
+ // -----------------
+String STR_POOLCOLL_STANDARD
+{
+ Text = "Standard" ;
+ Text [ English ] = "Standard" ;
+ Text [ dutch ] = "Standaard" ;
+ Text [ english_us ] = "Standard" ;
+ Text [ italian ] = "Standard" ;
+ Text [ spanish ] = "Predeterminado" ;
+ Text [ french ] = "Standard" ;
+ 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_POOLCOLL_TEXT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Textkörper : Textk÷rper */
+ Text = "Textkörper" ;
+ Text [ English ] = "Text body" ;
+ Text [ english_us ] = "Text body" ;
+ Text [ italian ] = "Corpo testo" ;
+ Text [ spanish ] = "Cuerpo de texto" ;
+ Text [ french ] = "Corps de texte" ;
+ Text [ dutch ] = "Tekstblok" ;
+ Text [ swedish ] = "Brödtext" ;
+ Text [ danish ] = "Brødtekst" ;
+ Text [ portuguese ] = "Corpo do texto" ;
+ Text [ portuguese_brazilian ] = "Textkörper" ;
+ Text[ chinese_simplified ] = "ÕýÎÄ";
+ Text[ russian ] = "Îñíîâíîé òåêñò";
+ Text[ polish ] = "Obszar tekstu";
+ Text[ japanese ] = "–{•¶";
+ Text[ chinese_traditional ] = "¤º¤å";
+ Text[ arabic ] = "ÌÓã ÇáäÕ";
+ Text[ greek ] = "Óþìá êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® º»¹®";
+ Text[ turkish ] = "Metin gövdesi";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TEXT_IDENT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Textkörper Einzug : Textk÷rper Einzug */
+ Text = "Textkörper Einzug" ;
+ Text [ English ] = "Text body indent" ;
+ Text [ english_us ] = "First line indent" ;
+ Text [ italian ] = "Rientro del corpo testo" ;
+ Text [ spanish ] = "Sangría de primera línea" ;
+ Text [ french ] = "Alinéa" ;
+ Text [ dutch ] = "1e regel inspringen" ;
+ Text [ swedish ] = "Dra in första raden" ;
+ Text [ danish ] = "Første linjes indrykning" ;
+ Text [ portuguese ] = "Abrir parágrafo" ;
+ Text [ portuguese_brazilian ] = "Textkörper Einzug" ;
+ Text[ chinese_simplified ] = "ÕýÎÄËõ½ø";
+ Text[ russian ] = "Ïåðâàÿ ñòðîêà ñ îòñòóïîì";
+ Text[ polish ] = "Wciêcie obszaru tekstu";
+ Text[ japanese ] = "–{•¶²ÝÃÞÝÄ";
+ Text[ chinese_traditional ] = "¤º¤åÁY±Æ";
+ Text[ arabic ] = "ÅÒÇÍÉ ÌÓã ÇáäÕ";
+ Text[ greek ] = "Åóï÷Þ ðñþôçò ãñáììÞò";
+ Text[ korean ] = "ù¹ø° ÁÙ µé¿©¾²±â";
+ Text[ turkish ] = "Ýlk satýr girintisi";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TEXT_NEGIDENT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Textkörper Einzug negativ : Textk÷rper Einzug negativ */
+ Text = "Textkörper Einzug negativ" ;
+ Text [ English ] = "Text body neg. indent" ;
+ Text [ english_us ] = "Hanging indent" ;
+ Text [ italian ] = "Rientro corpo del testo negativo" ;
+ Text [ spanish ] = "Sangría negativa de primera línea" ;
+ Text [ french ] = "Alinéa négatif" ;
+ Text [ dutch ] = "1e regel uitspringen" ;
+ Text [ swedish ] = "Negativt indrag av första raden" ;
+ Text [ danish ] = "Hængende indrykning" ;
+ Text [ portuguese ] = "Abrir parágrafo negativo" ;
+ Text [ portuguese_brazilian ] = "Textkörper Einzug negativ" ;
+ Text[ chinese_simplified ] = "ÕýÎÄ·´ÏòËõ½ø";
+ Text[ russian ] = "Îáðàòíûé îòñòóï";
+ Text[ polish ] = "Neg.wciêcie obszaru tekstu";
+ Text[ japanese ] = "–{•¶Ï²Å½²ÝÃÞÝÄ";
+ Text[ chinese_traditional ] = "¤º¤å¤Ï¦VÁY±Æ";
+ Text[ arabic ] = "ÅÒÇÍÉ ÌÓã äÕ ÓáÈíÉ";
+ Text[ greek ] = "ÁñíçôéêÞ åóï÷Þ óþìáôïò êåéìÝíïõ";
+ Text[ korean ] = "³»¾î¾²±â";
+ Text[ turkish ] = "Asýlý girinti";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TEXT_MOVE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Textkörper Einrückung : Textk÷rper Einr³ckung */
+ Text = "Textkörper Einrückung" ;
+ Text [ English ] = "Text body move in" ;
+ Text [ dutch ] = "Tekstblok inspringen" ;
+ Text [ english_us ] = "Text body indent" ;
+ Text [ italian ] = "Rientro corpo del testo" ;
+ Text [ spanish ] = "Cuerpo de texto con sangría" ;
+ Text [ french ] = "Retrait du corps de texte " ;
+ Text [ swedish ] = "Dra in hela stycket" ;
+ Text [ danish ] = "Brødtekst indrykning" ;
+ Text [ portuguese ] = "Avanço corpo do texto" ;
+ Text [ portuguese_brazilian ] = "Textkörper Einrückung" ;
+ Text[ chinese_simplified ] = "ÕýÎÄËõ½ø";
+ Text[ russian ] = "Îñíîâíîé òåêñò ñ îòñòóïîì";
+ Text[ polish ] = "Wysuniêcie obszaru tekstu";
+ Text[ japanese ] = "²ÝÃÞÝÄ";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¤º¤åÁY±Æ";
+ Text[ arabic ] = "ÅÒÇÍÉ ÌÓã ÇáäÕ (ÇáÓØÑ ÇáÃæá)";
+ Text[ greek ] = "Åóï÷Þ óþìáôïò êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® º»¹® µé¿©¾²±â";
+ Text[ turkish ] = "Metin gövdesi girintisi";
+};
+String STR_POOLCOLL_GREETING
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Grußformel : Gru˜formel */
+ Text = "Grußformel" ;
+ Text [ English ] = "Greetings" ;
+ Text [ dutch ] = "Aanhef" ;
+ Text [ english_us ] = "Salutation" ;
+ Text [ italian ] = "Formula di saluto" ;
+ Text [ spanish ] = "Fórmula de saludo" ;
+ Text [ french ] = "Formule finale" ;
+ Text [ swedish ] = "Hälsningsfras" ;
+ Text [ danish ] = "Sluthilsen" ;
+ Text [ portuguese ] = "Saudação" ;
+ Text [ portuguese_brazilian ] = "Grußformel" ;
+ Text[ chinese_simplified ] = "ÎʺòÓï";
+ Text[ russian ] = "Ïðèâåòñòâèå";
+ Text[ polish ] = "Pozdrowienie";
+ Text[ japanese ] = "ˆ¥ŽA•¶";
+ Text[ chinese_traditional ] = "°Ý­Ô»y";
+ Text[ arabic ] = "ÇáÊÍíÉ";
+ Text[ greek ] = "Ðñïóöþíçóç";
+ Text[ korean ] = "Àλ縻";
+ Text[ turkish ] = "Selamlama";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_SIGNATURE
+{
+ Text = "Unterschrift" ;
+ Text [ English ] = "Signature" ;
+ Text [ english_us ] = "Signature" ;
+ Text [ italian ] = "Firma" ;
+ Text [ spanish ] = "Firma" ;
+ Text [ french ] = "Signature" ;
+ Text [ dutch ] = "Ondergetekende" ;
+ Text [ swedish ] = "Signatur" ;
+ Text [ danish ] = "Underskrift" ;
+ Text [ portuguese ] = "Assinatura" ;
+ Text [ portuguese_brazilian ] = "Unterschrift" ;
+ Text[ chinese_simplified ] = "Ç©Ãû";
+ Text[ russian ] = "Ïîäïèñü";
+ Text[ polish ] = "Podpis";
+ Text[ japanese ] = "–¼";
+ Text[ chinese_traditional ] = "ñ¦W";
+ Text[ arabic ] = "ÇáÊæÞíÚ";
+ Text[ greek ] = "ÕðïãñáöÞ";
+ Text[ korean ] = "¼­¸í";
+ Text[ turkish ] = "Ýmza";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HEADLINE_BASE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift : šberschrift */
+ Text = "Überschrift" ;
+ Text [ English ] = "Headline" ;
+ Text [ dutch ] = "Kop" ;
+ Text [ english_us ] = "Heading" ;
+ Text [ italian ] = "Intestazione" ;
+ Text [ spanish ] = "Encabezado" ;
+ Text [ french ] = "Titre" ;
+ Text [ swedish ] = "Överskrift" ;
+ 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_POOLCOLL_NUMBUL_BASE
+{
+ Text = "Liste" ;
+ Text [ English ] = "List" ;
+ Text [ english_us ] = "List" ;
+ Text [ italian ] = "Elenco" ;
+ Text [ spanish ] = "Lista" ;
+ Text [ french ] = "Liste" ;
+ Text [ dutch ] = "Lijst" ;
+ Text [ swedish ] = "Lista" ;
+ Text [ danish ] = "Liste" ;
+ Text [ portuguese ] = "Lista" ;
+ Text [ portuguese_brazilian ] = "Liste" ;
+ Text[ chinese_simplified ] = "Áе¥";
+ Text[ russian ] = "Ñïèñîê";
+ Text[ polish ] = "Lista";
+ Text[ japanese ] = "ؽÄ";
+ Text[ chinese_traditional ] = "²M³æ";
+ Text[ arabic ] = "ÞÇÆãÉ";
+ Text[ greek ] = "Ëßóôá";
+ Text[ korean ] = "¸®½ºÆ®";
+ Text[ turkish ] = "Liste";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_REGISTER_BASE
+{
+ Text = "Verzeichnis" ;
+ Text [ English ] = "Register" ;
+ Text [ english_us ] = "Index" ;
+ Text [ italian ] = "Indice" ;
+ Text [ spanish ] = "Índice" ;
+ Text [ french ] = "Répertoire" ;
+ Text [ dutch ] = "Index" ;
+ Text [ swedish ] = "Förteckning" ;
+ Text [ danish ] = "Indeks" ;
+ Text [ portuguese ] = "Índice" ;
+ Text [ portuguese_brazilian ] = "Verzeichnis" ;
+ Text[ chinese_simplified ] = "Ŀ¼";
+ Text[ russian ] = "Îãëàâëåíèå";
+ Text[ polish ] = "Indeks";
+ Text[ japanese ] = "õˆø";
+ Text[ chinese_traditional ] = "¥Ø¿ý";
+ Text[ arabic ] = "ÝåÑÓ";
+ Text[ greek ] = "ÅõñåôÞñéï";
+ Text[ korean ] = "»öÀÎ";
+ Text[ turkish ] = "Dizin";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_CONFRONTATION
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Gegenüberstellung : Gegen³berstellung */
+ Text = "Gegenüberstellung" ;
+ Text [ English ] = "Confrontation" ;
+ Text [ dutch ] = "Tegenoverstelling" ;
+ Text [ english_us ] = "List Indent" ;
+ Text [ italian ] = "Confronto" ;
+ Text [ spanish ] = "Confrontación" ;
+ Text [ french ] = "Confrontation" ;
+ Text [ swedish ] = "Indrag lista" ;
+ Text [ danish ] = "Opstillingsindrykning" ;
+ Text [ portuguese ] = "Confrontar" ;
+ Text [ portuguese_brazilian ] = "Gegenüberstellung" ;
+ Text[ chinese_simplified ] = "Ëõ½ø";
+ Text[ russian ] = "Îòñòóïû";
+ Text[ polish ] = "Konfrontacja";
+ Text[ japanese ] = "²ÝÃÞÝÄ";
+ Text[ chinese_traditional ] = "ÁY±Æ";
+ Text[ arabic ] = "ãæÇÌåÉ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "ÁíôéðáñáâïëÞ";
+ Text[ korean ] = "¸®½ºÆ® µé¿©½º±â";
+ Text[ turkish ] = "Karþýlaþtýrma";
+};
+String STR_POOLCOLL_MARGINAL
+{
+ Text = "Marginalie" ;
+ Text [ English ] = "Marginalia" ;
+ Text [ english_us ] = "Marginalia" ;
+ Text [ italian ] = "Nota in margine" ;
+ Text [ spanish ] = "Nota al margen" ;
+ Text [ french ] = "Note en marge" ;
+ Text [ dutch ] = "Kanttekening" ;
+ Text [ swedish ] = "Marginalanteckning" ;
+ Text [ danish ] = "Randbemærkning" ;
+ Text [ portuguese ] = "Notas à margem" ;
+ Text [ portuguese_brazilian ] = "Marginalie" ;
+ Text[ chinese_simplified ] = "ÅÔ×¢";
+ Text[ russian ] = "Ìàðãèíàëèè";
+ Text[ polish ] = "Marginesy";
+ Text[ japanese ] = "–T’";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "®Çª`";
+ Text[ arabic ] = "ãáÇÍÙÇÊ åÇãÔíÉ";
+ Text[ greek ] = "Óçìåéþóåéò óôï ðåñéèþñéï";
+ Text[ korean ] = "¿©¹é";
+ Text[ turkish ] = "Derkenar";
+};
+String STR_POOLCOLL_HEADLINE1
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift 1 : šberschrift 1 */
+ Text = "Überschrift 1" ;
+ Text [ English ] = "Headline 1" ;
+ Text [ dutch ] = "Kop 1" ;
+ Text [ english_us ] = "Heading 1" ;
+ Text [ italian ] = "Intestazione 1" ;
+ Text [ spanish ] = "Encabezado 1" ;
+ Text [ french ] = "Titre 1" ;
+ Text [ swedish ] = "Överskrift 1" ;
+ Text [ danish ] = "Overskrift 1" ;
+ Text [ portuguese ] = "Título 1" ;
+ Text [ portuguese_brazilian ] = "Überschrift 1" ;
+ 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ýk 1";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HEADLINE2
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift 2 : šberschrift 2 */
+ Text = "Überschrift 2" ;
+ Text [ English ] = "Headline 2" ;
+ Text [ english_us ] = "Heading 2" ;
+ Text [ italian ] = "Intestazione 2" ;
+ Text [ spanish ] = "Encabezado 2" ;
+ Text [ french ] = "Titre 2" ;
+ Text [ dutch ] = "Kop 2" ;
+ Text [ swedish ] = "Överskrift 2" ;
+ Text [ danish ] = "Overskrift 2" ;
+ Text [ portuguese_brazilian ] = "Überschrift 2" ;
+ Text [ portuguese ] = "Título 2" ;
+ Text[ chinese_simplified ] = "±êÌâ 2";
+ Text[ russian ] = "Çàãîëîâîê 2";
+ Text[ polish ] = "Tytu³ 2";
+ Text[ japanese ] = "Ωoⵠ2";
+ Text[ chinese_traditional ] = "¼ÐÃD 2";
+ Text[ arabic ] = "ÇáÚäæÇä 2";
+ Text[ greek ] = "Åðéêåöáëßäá 2";
+ Text[ korean ] = "Á¦¸ñ 2";
+ Text[ turkish ] = "Baþlýk 2";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HEADLINE3
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift 3 : šberschrift 3 */
+ Text = "Überschrift 3" ;
+ Text [ English ] = "Headline 3" ;
+ Text [ english_us ] = "Heading 3" ;
+ Text [ italian ] = "Intestazione 3" ;
+ Text [ spanish ] = "Encabezado 3" ;
+ Text [ french ] = "Titre 3" ;
+ Text [ dutch ] = "Kop 3" ;
+ Text [ swedish ] = "Överskrift 3" ;
+ Text [ danish ] = "Overskrift 3" ;
+ Text [ portuguese_brazilian ] = "Überschrift 3" ;
+ Text [ portuguese ] = "Título 3" ;
+ Text[ chinese_simplified ] = "±êÌâ 3";
+ Text[ russian ] = "Çàãîëîâîê 3";
+ Text[ polish ] = "Tytu³ 3";
+ Text[ japanese ] = "Ωoⵠ3";
+ Text[ chinese_traditional ] = "¼ÐÃD 3";
+ Text[ arabic ] = "ÇáÚäæÇä 3";
+ Text[ greek ] = "Åðéêåöáëßäá 3";
+ Text[ korean ] = "Á¦¸ñ 3";
+ Text[ turkish ] = "Baþlýk 3";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HEADLINE4
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift 4 : šberschrift 4 */
+ Text = "Überschrift 4" ;
+ Text [ English ] = "Headline 4" ;
+ Text [ english_us ] = "Heading 4" ;
+ Text [ italian ] = "Intestazione 4" ;
+ Text [ spanish ] = "Encabezado 4" ;
+ Text [ french ] = "Titre 4" ;
+ Text [ dutch ] = "Kop 4" ;
+ Text [ swedish ] = "Överskrift 4" ;
+ Text [ danish ] = "Overskrift 4" ;
+ Text [ portuguese_brazilian ] = "Überschrift 4" ;
+ Text [ portuguese ] = "Título 4" ;
+ Text[ chinese_simplified ] = "±êÌâ 4";
+ Text[ russian ] = "Çàãîëîâîê 4";
+ Text[ polish ] = "Tytu³ 4";
+ Text[ japanese ] = "Ωoⵠ4";
+ Text[ chinese_traditional ] = "¼ÐÃD 4";
+ Text[ arabic ] = "ÇáÚäæÇä 4";
+ Text[ greek ] = "Åðéêåöáëßäá 4";
+ Text[ korean ] = "Á¦¸ñ 4";
+ Text[ turkish ] = "Baþlýk 4";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HEADLINE5
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift 5 : šberschrift 5 */
+ Text = "Überschrift 5" ;
+ Text [ English ] = "Headline 5" ;
+ Text [ english_us ] = "Heading 5" ;
+ Text [ italian ] = "Intestazione 5" ;
+ Text [ spanish ] = "Encabezado 5" ;
+ Text [ french ] = "Titre 5" ;
+ Text [ dutch ] = "Kop 5" ;
+ Text [ swedish ] = "Överskrift 5" ;
+ Text [ danish ] = "Overskrift 5" ;
+ Text [ portuguese_brazilian ] = "Überschrift 5" ;
+ Text [ portuguese ] = "Título 5" ;
+ Text[ chinese_simplified ] = "±êÌâ 5";
+ Text[ russian ] = "Çàãîëîâîê 5";
+ Text[ polish ] = "Tytu³ 5";
+ Text[ japanese ] = "Ωoⵠ5";
+ Text[ chinese_traditional ] = "¼ÐÃD 5";
+ Text[ arabic ] = "ÇáÚäæÇä 5";
+ Text[ greek ] = "Åðéêåöáëßäá 5";
+ Text[ korean ] = "Á¦¸ñ 5";
+ Text[ turkish ] = "Baþlýk 5";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HEADLINE6
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift 5 : šberschrift 5 */
+ Text = "Überschrift 6" ;
+ Text [ English ] = "Headline 6" ;
+ Text [ english_us ] = "Heading 6" ;
+ Text [ italian ] = "Intestazione 6" ;
+ Text [ spanish ] = "Encabezado 6" ;
+ Text [ french ] = "Titre 6" ;
+ Text [ dutch ] = "Kop 6" ;
+ Text [ swedish ] = "Överskrift 6" ;
+ Text [ danish ] = "Overskrift 6" ;
+ Text [ portuguese_brazilian ] = "Überschrift 6" ;
+ Text [ portuguese ] = "Título 6" ;
+ Text[ chinese_simplified ] = "±êÌâ 6";
+ Text[ russian ] = "Çàãîëîâîê 6";
+ Text[ polish ] = "Tytu³ 6";
+ Text[ japanese ] = "Ωoⵠ6";
+ Text[ chinese_traditional ] = "¼ÐÃD 6";
+ Text[ arabic ] = "ÇáÚäæÇä 6";
+ Text[ greek ] = "Åðéêåöáëßäá 6";
+ Text[ korean ] = "Á¦¸ñ 6";
+ Text[ turkish ] = "Baþlýk 6";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HEADLINE7
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift 7 : šberschrift 7 */
+ Text = "Überschrift 7" ;
+ Text [ English ] = "Headline 7" ;
+ Text [ english_us ] = "Heading 7" ;
+ Text [ italian ] = "Intestazione 7" ;
+ Text [ spanish ] = "Encabezado 7" ;
+ Text [ french ] = "Titre 7" ;
+ Text [ dutch ] = "Kop 7" ;
+ Text [ swedish ] = "Överskrift 7" ;
+ Text [ danish ] = "Overskrift 7" ;
+ Text [ portuguese_brazilian ] = "Überschrift 7" ;
+ Text [ portuguese ] = "Título 7" ;
+ Text[ chinese_simplified ] = "±êÌâ 7";
+ Text[ russian ] = "Çàãîëîâîê 7";
+ Text[ polish ] = "Tytu³ 7";
+ Text[ japanese ] = "Ωoⵠ7";
+ Text[ chinese_traditional ] = "¼ÐÃD 7";
+ Text[ arabic ] = "ÇáÚäæÇä 7";
+ Text[ greek ] = "Åðéêåöáëßäá 7";
+ Text[ korean ] = "Á¦¸ñ 7";
+ Text[ turkish ] = "Baþlýk 7";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HEADLINE8
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift 8 : šberschrift 8 */
+ Text = "Überschrift 8" ;
+ Text [ English ] = "Headline 8" ;
+ Text [ english_us ] = "Heading 8" ;
+ Text [ italian ] = "Intestazione 8" ;
+ Text [ spanish ] = "Encabezado 8" ;
+ Text [ french ] = "Titre 8" ;
+ Text [ dutch ] = "Kop 8" ;
+ Text [ swedish ] = "Överskrift 8" ;
+ Text [ danish ] = "Overskrift 8" ;
+ Text [ portuguese_brazilian ] = "Überschrift 8" ;
+ Text [ portuguese ] = "Título 8" ;
+ Text[ chinese_simplified ] = "±êÌâ 8";
+ Text[ russian ] = "Çàãîëîâîê 8";
+ Text[ polish ] = "Tytu³ 8";
+ Text[ japanese ] = "Ωoⵠ8";
+ Text[ chinese_traditional ] = "¼ÐÃD 8";
+ Text[ arabic ] = "ÇáÚäæÇä 8";
+ Text[ greek ] = "Åðéêåöáëßäá 8";
+ Text[ korean ] = "Á¦¸ñ 8";
+ Text[ turkish ] = "Baþlýk 8";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HEADLINE9
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift 9 : šberschrift 9 */
+ Text = "Überschrift 9" ;
+ Text [ English ] = "Headline 9" ;
+ Text [ english_us ] = "Heading 9" ;
+ Text [ italian ] = "Intestazione 9" ;
+ Text [ spanish ] = "Encabezado 9" ;
+ Text [ french ] = "Titre 9" ;
+ Text [ dutch ] = "Kop 9" ;
+ Text [ swedish ] = "Överskrift 9" ;
+ Text [ danish ] = "Overskrift 9" ;
+ Text [ portuguese_brazilian ] = "Überschrift 9" ;
+ Text [ portuguese ] = "Título 9" ;
+ Text[ chinese_simplified ] = "±êÌâ 9";
+ Text[ russian ] = "Çàãîëîâîê 9";
+ Text[ polish ] = "Tytu³ 9";
+ Text[ japanese ] = "Ωoⵠ9";
+ Text[ chinese_traditional ] = "¼ÐÃD 9";
+ Text[ arabic ] = "ÇáÚäæÇä 9";
+ Text[ greek ] = "Åðéêåöáëßäá 9";
+ Text[ korean ] = "Á¦¸ñ9";
+ Text[ turkish ] = "Baþlýk 9";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HEADLINE10
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift 10 : šberschrift 10 */
+ Text = "Überschrift 10" ;
+ Text [ English ] = "Headline 10" ;
+ Text [ english_us ] = "Heading 10" ;
+ Text [ italian ] = "Intestazione 10" ;
+ Text [ spanish ] = "Encabezado 10" ;
+ Text [ french ] = "Titre 10" ;
+ Text [ dutch ] = "Kop 10" ;
+ Text [ swedish ] = "Överskrift 10" ;
+ Text [ danish ] = "Overskrift 10" ;
+ Text [ portuguese_brazilian ] = "Überschrift 10" ;
+ Text [ portuguese ] = "Título 10" ;
+ Text[ chinese_simplified ] = "±êÌâ 10";
+ Text[ russian ] = "Çàãîëîâîê 10";
+ Text[ polish ] = "Tytu³ 10";
+ Text[ japanese ] = "Ωoⵠ10";
+ Text[ chinese_traditional ] = "¼ÐÃD 10";
+ Text[ arabic ] = "ÇáÚäæÇä 10";
+ Text[ greek ] = "Åðéêåöáëßäá 10";
+ Text[ korean ] = "Á¦¸ñ 10";
+ Text[ turkish ] = "Baþlýk 10";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL1S
+{
+ Text = "Nummerierung 1 Anfang" ;
+ Text [ English ] = "Numbering 1 start" ;
+ Text [ english_us ] = "Numbering 1 Start" ;
+ Text [ italian ] = "Numerazione 1 inizio" ;
+ Text [ spanish ] = "Numeración 1 inicio" ;
+ Text [ french ] = "Numérotation 1 début" ;
+ Text [ dutch ] = "Nummering 1 begin" ;
+ Text [ swedish ] = "Numrering 1 start" ;
+ Text [ danish ] = "Nummerering 1 start" ;
+ Text [ portuguese ] = "Numeração 1 Início" ;
+ Text [ portuguese_brazilian ] = "Numerierung 1 Anfang" ;
+ Text[ chinese_simplified ] = "±àºÅ 1 ¿ª¶Ë";
+ Text[ russian ] = "Íà÷àëî íóìåðàöèè 1";
+ Text[ polish ] = "Pocz¹tek numeracji 1";
+ Text[ japanese ] = "”Ô†•t‚¯ 1 Žn‚ß";
+ Text[ chinese_traditional ] = "½s¸¹ 1 ¶}ºÝ";
+ Text[ arabic ] = "ÇáÊÑÞíã 1 ÈÏÇíÉ";
+ Text[ greek ] = "Áñßèìçóç 1 Áñ÷Þ";
+ Text[ korean ] = "¹øÈ£ 1 ½ÃÀÛ";
+ Text[ turkish ] = "Numaralama 1 Baþlangýç";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL1
+{
+ Text = "Nummerierung 1" ;
+ Text [ English ] = "Numbering 1" ;
+ Text [ dutch ] = "Nummering 1" ;
+ Text [ english_us ] = "Numbering 1" ;
+ Text [ italian ] = "Numerazione 1" ;
+ Text [ spanish ] = "Numeración 1" ;
+ Text [ french ] = "Numérotation 1" ;
+ Text [ swedish ] = "Numrering 1" ;
+ Text [ danish ] = "Nummerering 1" ;
+ Text [ portuguese ] = "Numeração 1" ;
+ Text [ portuguese_brazilian ] = "Numerierung 1" ;
+ Text[ chinese_simplified ] = "񅧏 1";
+ Text[ russian ] = "Íóìåðàöèÿ 1";
+ Text[ polish ] = "Numeracja 1";
+ Text[ japanese ] = "”Ô†•t‚¯ 1";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "½s¸¹ 1";
+ Text[ arabic ] = "ÇáÊÑÞíã 1";
+ Text[ greek ] = "Áñßèìçóç 1";
+ Text[ korean ] = "¹øÈ£1";
+ Text[ turkish ] = "Numaralama 1";
+};
+String STR_POOLCOLL_NUM_LEVEL1E
+{
+ Text = "Nummerierung 1 Ende" ;
+ Text [ English ] = "Numbering 1 end" ;
+ Text [ english_us ] = "Numbering 1 End" ;
+ Text [ italian ] = "Numerazione 1 fine" ;
+ Text [ spanish ] = "Numeración 1 fin" ;
+ Text [ french ] = "Numérotation 1 fin" ;
+ Text [ dutch ] = "Nummering 1 einde" ;
+ Text [ swedish ] = "Numrering 1 slut" ;
+ Text [ danish ] = "Nummerering 1 slut" ;
+ Text [ portuguese ] = "Numeração 1 Fim" ;
+ Text [ portuguese_brazilian ] = "Numerierung 1 Ende" ;
+ Text[ chinese_simplified ] = "±àºÅ 1 ½áβ";
+ Text[ russian ] = "Êîíåö íóìåðàöèè 1";
+ Text[ polish ] = "Koniec numeracji 1";
+ Text[ japanese ] = "”Ô†•t‚¯ 1 I‚è";
+ Text[ chinese_traditional ] = "½s¸¹ 1 µ²§À";
+ Text[ arabic ] = "ÇáÊÑÞíã 1 äåÇíÉ";
+ Text[ greek ] = "Áñßèìçóç 1 ÔÝëïò";
+ Text[ korean ] = "¹øÈ£ 1 Á¾·á";
+ Text[ turkish ] = "Numaralama 1 Son";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_NONUM1
+{
+ Text = "Nummerierung 1 Fortsetzung" ;
+ Text [ English ] = "Numbering 1 next" ;
+ Text [ english_us ] = "Numbering 1 Cont." ;
+ Text [ italian ] = "Numerazione 1 succ." ;
+ Text [ spanish ] = "Numeración 1 continuación" ;
+ Text [ french ] = "Numérotation 1 suite" ;
+ Text [ dutch ] = "Nummering 1 voortzetting" ;
+ Text [ swedish ] = "Numrering 1 fortsättning" ;
+ Text [ danish ] = "Nummerering 1 fortsættelse" ;
+ Text [ portuguese ] = "Numeração 1 Continuação" ;
+ Text [ portuguese_brazilian ] = "Numerierung 1 Fortsetzung" ;
+ Text[ chinese_simplified ] = "±àºÅ 1 ¼ÌÐø";
+ Text[ russian ] = "Ïðîäîëæåíèå íóìåðàöèè 1";
+ Text[ polish ] = "Kontynuacja numeracji 1";
+ Text[ japanese ] = "”Ô†•t‚¯ 1 ‘±‚«";
+ Text[ chinese_traditional ] = "½s¸¹ 1 Ä~Äò";
+ Text[ arabic ] = "ÇáÊÑÞíã 1 ãÊÇÈÚÉ";
+ Text[ greek ] = "Áñßèìçóç 1 ÓõíÝ÷åéá";
+ Text[ korean ] = "¹øÈ£ 1 °è¼Ó";
+ Text[ turkish ] = "Numaralama 1 Devam";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL2S
+{
+ Text = "Nummerierung 2 Anfang" ;
+ Text [ English ] = "Numbering 2 start" ;
+ Text [ dutch ] = "Nummering 2 begin" ;
+ Text [ english_us ] = "Numbering 2 Start" ;
+ Text [ italian ] = "Numerazione 2 inizio" ;
+ Text [ spanish ] = "Numeración 2 inicio" ;
+ Text [ french ] = "Numérotation 2 début" ;
+ Text [ swedish ] = "Numrering 2 start" ;
+ Text [ danish ] = "Nummerering 2 start" ;
+ Text [ portuguese ] = "Numeração 2 Início" ;
+ Text [ portuguese_brazilian ] = "Numerierung 2 Anfang" ;
+ Text[ chinese_simplified ] = "±àºÅ 2 ¿ª¶Ë";
+ Text[ russian ] = "Íà÷àëî íóìåðàöèè 2";
+ Text[ polish ] = "Pocz¹tek numeracji 2 ";
+ Text[ japanese ] = "”Ô†•t‚¯ 2 Žn‚ß";
+ Text[ chinese_traditional ] = "½s¸¹ 2 ¶}ºÝ";
+ Text[ arabic ] = "ÇáÊÑÞíã 2 ÈÏÇíÉ";
+ Text[ greek ] = "Áñßèìçóç 2 Áñ÷Þ";
+ Text[ korean ] = "¹øÈ£ 2 ½ÃÀÛ";
+ Text[ turkish ] = "Numaralama 2 Baþlangýç";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL2
+{
+ Text = "Nummerierung 2" ;
+ Text [ English ] = "Numbering 2" ;
+ Text [ dutch ] = "Nummering 2" ;
+ Text [ english_us ] = "Numbering 2" ;
+ Text [ italian ] = "Numerazione 2" ;
+ Text [ spanish ] = "Numeración 2" ;
+ Text [ french ] = "Numérotation 2" ;
+ Text [ swedish ] = "Numrering 2" ;
+ Text [ danish ] = "Nummerering 2" ;
+ Text [ portuguese ] = "Numeração 2" ;
+ Text [ portuguese_brazilian ] = "Numerierung 2" ;
+ Text[ chinese_simplified ] = "񅧏 2";
+ Text[ russian ] = "Íóìåðàöèÿ 2";
+ Text[ polish ] = "Numeracja 2";
+ Text[ japanese ] = "”Ô†•t‚¯ 2";
+ Text[ chinese_traditional ] = "½s¸¹ 2";
+ Text[ arabic ] = "ÇáÊÑÞíã 2";
+ Text[ greek ] = "Áñßèìçóç 2";
+ Text[ korean ] = "¹øÈ£2";
+ Text[ turkish ] = "Numaralama 2";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL2E
+{
+ Text = "Nummerierung 2 Ende" ;
+ Text [ English ] = "Numbering 2 end" ;
+ Text [ english_us ] = "Numbering 2 End" ;
+ Text [ italian ] = "Numerazione 2 fine" ;
+ Text [ spanish ] = "Numeración 2 fin" ;
+ Text [ french ] = "Numérotation 2 fin" ;
+ Text [ dutch ] = "Nummering 2 einde" ;
+ Text [ swedish ] = "Numrering 2 slut" ;
+ Text [ danish ] = "Nummerering 2 slut" ;
+ Text [ portuguese ] = "Numeração 2 Fim" ;
+ Text [ portuguese_brazilian ] = "Numerierung 2 Ende" ;
+ Text[ chinese_simplified ] = "±àºÅ 2 ½áβ";
+ Text[ russian ] = "Êîíåö íóìåðàöèè 2";
+ Text[ polish ] = "Koniec numeracji 2 ";
+ Text[ japanese ] = "”Ô†•t‚¯ 2 I‚è";
+ Text[ chinese_traditional ] = "½s¸¹ 2 µ²§À";
+ Text[ arabic ] = "ÇáÊÑÞíã 2 äåÇíÉ";
+ Text[ greek ] = "Áñßèìçóç 2 ÔÝëïò";
+ Text[ korean ] = "¹øÈ£ 2 Á¾·á";
+ Text[ turkish ] = "Numaralama 2 Son";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_NONUM2
+{
+ Text = "Nummerierung 2 Fortsetzung" ;
+ Text [ English ] = "Numbering 2 next" ;
+ Text [ english_us ] = "Numbering 2 Cont." ;
+ Text [ italian ] = "Numerazione 2 succ." ;
+ Text [ spanish ] = "Numeración 2 continuación" ;
+ Text [ french ] = "Numérotation 2 suite" ;
+ Text [ dutch ] = "Nummering 2 voortzetting" ;
+ Text [ swedish ] = "Numrering 2 fortsättning" ;
+ Text [ danish ] = "Nummerering 2 fortsættelse" ;
+ Text [ portuguese ] = "Numeração 2 Continuação" ;
+ Text [ portuguese_brazilian ] = "Numerierung 2 Fortsetzung" ;
+ Text[ chinese_simplified ] = "±àºÅ 2 ¼ÌÐø";
+ Text[ russian ] = "Ïðîäîëæåíèå íóìåðàöèè 2";
+ Text[ polish ] = "Kontynuacja numeracji 2";
+ Text[ japanese ] = "”Ô†•t‚¯ 2 ‘±‚«";
+ Text[ chinese_traditional ] = "½s¸¹ 2 Ä~Äò";
+ Text[ arabic ] = "ÇáÊÑÞíã 2 ãÊÇÈÚÉ";
+ Text[ greek ] = "Áñßèìçóç 2 ÓõíÝ÷åéá";
+ Text[ korean ] = "¹øÈ£ 2 °è¼Ó";
+ Text[ turkish ] = "Numaralama 2 Devam";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL3S
+{
+ Text = "Nummerierung 3 Anfang" ;
+ Text [ English ] = "Numbering 3 start" ;
+ Text [ dutch ] = "Nummering 3 begin" ;
+ Text [ english_us ] = "Numbering 3 Start" ;
+ Text [ italian ] = "Numerazione 3 inizio" ;
+ Text [ spanish ] = "Numeración 3 inicio" ;
+ Text [ french ] = "Numérotation 3 début" ;
+ Text [ swedish ] = "Numrering 3 start" ;
+ Text [ danish ] = "Nummerering 3 start" ;
+ Text [ portuguese ] = "Numeração 3 Início" ;
+ Text [ portuguese_brazilian ] = "Numerierung 3 Anfang" ;
+ Text[ chinese_simplified ] = "±àºÅ 3 ¿ª¶Ë";
+ Text[ russian ] = "Íà÷àëî íóìåðàöèè 3";
+ Text[ polish ] = "Pocz¹tek numeracji 3 ";
+ Text[ japanese ] = "”Ô†•t‚¯ 3 Žn‚ß";
+ Text[ chinese_traditional ] = "½s¸¹ 3 ¶}ºÝ";
+ Text[ arabic ] = "ÇáÊÑÞíã 3 ÈÏÇíÉ";
+ Text[ greek ] = "Áñßèìçóç 3 Áñ÷Þ";
+ Text[ korean ] = "¹øÈ£ 3 ½ÃÀÛ";
+ Text[ turkish ] = "Numaralama 3 Baþlangýç";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL3
+{
+ Text = "Nummerierung 3" ;
+ Text [ English ] = "Numbering 3" ;
+ Text [ dutch ] = "Nummering 3" ;
+ Text [ english_us ] = "Numbering 3" ;
+ Text [ italian ] = "Numerazione 3" ;
+ Text [ spanish ] = "Numeración 3" ;
+ Text [ french ] = "Numérotation 3" ;
+ Text [ swedish ] = "Numrering 3" ;
+ Text [ danish ] = "Nummerering 3" ;
+ Text [ portuguese ] = "Numeração 3" ;
+ Text [ portuguese_brazilian ] = "Numerierung 3" ;
+ Text[ chinese_simplified ] = "񅧏 3";
+ Text[ russian ] = "Íóìåðàöèÿ 3";
+ Text[ polish ] = "Numeracja 3";
+ Text[ japanese ] = "”Ô†•t‚¯ 3";
+ Text[ chinese_traditional ] = "½s¸¹ 3";
+ Text[ arabic ] = "ÇáÊÑÞíã 3";
+ Text[ greek ] = "Áñßèìçóç 3";
+ Text[ korean ] = "¹øÈ£ 3";
+ Text[ turkish ] = "Numaralama 3";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL3E
+{
+ Text = "Nummerierung 3 Ende" ;
+ Text [ English ] = "Numbering 3 end" ;
+ Text [ english_us ] = "Numbering 3 End" ;
+ Text [ italian ] = "Numerazione 3 fine" ;
+ Text [ spanish ] = "Numeración 3 fin" ;
+ Text [ french ] = "Numérotation 3 fin" ;
+ Text [ dutch ] = "Nummering 3 einde" ;
+ Text [ swedish ] = "Numrering 3 slut" ;
+ Text [ danish ] = "Nummerering 3 slut" ;
+ Text [ portuguese ] = "Numeração 3 Fim" ;
+ Text [ portuguese_brazilian ] = "Numerierung 3 Ende" ;
+ Text[ chinese_simplified ] = "±àºÅ 3 ½áβ";
+ Text[ russian ] = "Êîíåö íóìåðàöèè 3";
+ Text[ polish ] = "Koniec numeracji 3 ";
+ Text[ japanese ] = "”Ô†•t‚¯ 3 I‚è";
+ Text[ chinese_traditional ] = "½s¸¹ 3 µ²§À";
+ Text[ arabic ] = "ÇáÊÑÞíã 3 äåÇíÉ";
+ Text[ greek ] = "Áñßèìçóç 3 ÔÝëïò";
+ Text[ korean ] = "¹øÈ£ 3 Á¾·á";
+ Text[ turkish ] = "Numaralama 3 Son";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_NONUM3
+{
+ Text = "Nummerierung 3 Fortsetzung" ;
+ Text [ English ] = "Numbering 3 next" ;
+ Text [ english_us ] = "Numbering 3 Cont." ;
+ Text [ italian ] = "Numerazione 3 succ." ;
+ Text [ spanish ] = "Numeración 3 continuación" ;
+ Text [ french ] = "Numérotation 3 suite" ;
+ Text [ dutch ] = "Nummering 3 voortzetting" ;
+ Text [ swedish ] = "Numrering 3 fortsättning" ;
+ Text [ danish ] = "Nummerering 3 fortsættelse" ;
+ Text [ portuguese ] = "Numeração 3 Continuação" ;
+ Text [ portuguese_brazilian ] = "Numerierung 3 Fortsetzung" ;
+ Text[ chinese_simplified ] = "±àºÅ 3 ¼ÌÐø";
+ Text[ russian ] = "Ïðîäîëæåíèå íóìåðàöèè 3";
+ Text[ polish ] = "Kontynuacja numeracji 3";
+ Text[ japanese ] = "”Ô†•t‚¯ 3 ‘±‚«";
+ Text[ chinese_traditional ] = "½s¸¹ 3 Ä~Äò";
+ Text[ arabic ] = "ÇáÊÑÞíã 3 ãÊÇÈÚÉ";
+ Text[ greek ] = "Áñßèìçóç 3 ÓõíÝ÷åéá";
+ Text[ korean ] = "¹øÈ£ 3 °è¼Ó";
+ Text[ turkish ] = "Numaralama 3 Devam";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL4S
+{
+ Text = "Nummerierung 4 Anfang" ;
+ Text [ English ] = "Numbering 4 start" ;
+ Text [ dutch ] = "Nummering 4 begin" ;
+ Text [ english_us ] = "Numbering 4 Start" ;
+ Text [ italian ] = "Numerazione 4 inizio" ;
+ Text [ spanish ] = "Numeración 4 inicio" ;
+ Text [ french ] = "Numérotation 4 début" ;
+ Text [ swedish ] = "Numrering 4 start" ;
+ Text [ danish ] = "Nummerering 4 start" ;
+ Text [ portuguese ] = "Numeração 4 Início" ;
+ Text [ portuguese_brazilian ] = "Numerierung 4 Anfang" ;
+ Text[ chinese_simplified ] = "±àºÅ 4 ¿ª¶Ë";
+ Text[ russian ] = "Íà÷àëî íóìåðàöèè 4";
+ Text[ polish ] = "Pocz¹tek numeracji 4";
+ Text[ japanese ] = "”Ô†•t‚¯ 4 Žn‚ß";
+ Text[ chinese_traditional ] = "½s¸¹ 4 ¶}ºÝ";
+ Text[ arabic ] = "ÇáÊÑÞíã 4 ÈÏÇíÉ";
+ Text[ greek ] = "Áñßèìçóç 4 Áñ÷Þ";
+ Text[ korean ] = "¹øÈ£ 4 ½ÃÀÛ";
+ Text[ turkish ] = "Numaralama 4 Baþlangýç";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL4
+{
+ Text = "Nummerierung 4" ;
+ Text [ English ] = "Numbering 4" ;
+ Text [ dutch ] = "Nummering 4" ;
+ Text [ english_us ] = "Numbering 4" ;
+ Text [ italian ] = "Numerazione 4" ;
+ Text [ spanish ] = "Numeración 4" ;
+ Text [ french ] = "Numérotation 4" ;
+ Text [ swedish ] = "Numrering 4" ;
+ Text [ danish ] = "Nummerering 4" ;
+ Text [ portuguese ] = "Numeração 4" ;
+ Text [ portuguese_brazilian ] = "Numerierung 4" ;
+ Text[ chinese_simplified ] = "񅧏 4";
+ Text[ russian ] = "Íóìåðàöèÿ 4";
+ Text[ polish ] = "Numeracja 4";
+ Text[ japanese ] = "”Ô†•t‚¯ 4";
+ Text[ chinese_traditional ] = "½s¸¹ 4";
+ Text[ arabic ] = "ÇáÊÑÞíã 4";
+ Text[ greek ] = "Áñßèìçóç 4";
+ Text[ korean ] = "¹øÈ£ 4";
+ Text[ turkish ] = "Numaralama 4";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL4E
+{
+ Text = "Nummerierung 4 Ende" ;
+ Text [ English ] = "Numbering 4 end" ;
+ Text [ english_us ] = "Numbering 4 End" ;
+ Text [ italian ] = "Numerazione 4 fine" ;
+ Text [ spanish ] = "Numeración 4 fin" ;
+ Text [ french ] = "Numérotation 4 fin" ;
+ Text [ dutch ] = "Nummering 4 einde" ;
+ Text [ swedish ] = "Numrering 4 slut" ;
+ Text [ danish ] = "Nummerering 4 slut" ;
+ Text [ portuguese ] = "Numeração 4 Fim" ;
+ Text [ portuguese_brazilian ] = "Numerierung 4 Ende" ;
+ Text[ chinese_simplified ] = "±àºÅ 4 ½áβ";
+ Text[ russian ] = "Êîíåö íóìåðàöèè 4";
+ Text[ polish ] = "Koniec numeracji 4";
+ Text[ japanese ] = "”Ô†•t‚¯ 4 I‚è";
+ Text[ chinese_traditional ] = "½s¸¹ 4 µ²§À";
+ Text[ arabic ] = "ÇáÊÑÞíã 4 äåÇíÉ";
+ Text[ greek ] = "Áñßèìçóç 4 ÔÝëïò";
+ Text[ korean ] = "¹øÈ£ 4 Á¾·á";
+ Text[ turkish ] = "Numaralama 4 Son";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_NONUM4
+{
+ Text = "Nummerierung 4 Fortsetzung" ;
+ Text [ English ] = "Numbering 4 next" ;
+ Text [ english_us ] = "Numbering 4 Cont." ;
+ Text [ italian ] = "Numerazione 4 succ." ;
+ Text [ spanish ] = "Numeración 4 continuación" ;
+ Text [ french ] = "Numérotation 4 suite" ;
+ Text [ dutch ] = "Nummering 4 voortzetting" ;
+ Text [ swedish ] = "Numrering 4 fortsättning" ;
+ Text [ danish ] = "Nummerering 4 fortsættelse" ;
+ Text [ portuguese ] = "Numeração 4 Continuação" ;
+ Text [ portuguese_brazilian ] = "Numerierung 4 Fortsetzung" ;
+ Text[ chinese_simplified ] = "±àºÅ 4 ¼ÌÐø";
+ Text[ russian ] = "Ïðîäîëæåíèå íóìåðàöèè 4";
+ Text[ polish ] = "Kontynuacja numeracji 4";
+ Text[ japanese ] = "”Ô†•t‚¯ 4 ‘±‚«";
+ Text[ chinese_traditional ] = "½s¸¹ 4 Ä~Äò";
+ Text[ arabic ] = "ÇáÊÑÞíã 4 ãÊÇÈÚÉ";
+ Text[ greek ] = "Áñßèìçóç 4 ÓõíÝ÷åéá";
+ Text[ korean ] = "¹øÈ£ 4 °è¼Ó";
+ Text[ turkish ] = "Numaralama 4 Devam";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL5S
+{
+ Text = "Nummerierung 5 Anfang" ;
+ Text [ English ] = "Numbering 5 start" ;
+ Text [ dutch ] = "Nummering 5 begin" ;
+ Text [ english_us ] = "Numbering 5 Start" ;
+ Text [ italian ] = "Numerazione 5 inizio" ;
+ Text [ spanish ] = "Numeración 5 inicio" ;
+ Text [ french ] = "Numérotation 5 début" ;
+ Text [ swedish ] = "Numrering 5 start" ;
+ Text [ danish ] = "Nummerering 5 start" ;
+ Text [ portuguese ] = "Numeração 5 Início" ;
+ Text [ portuguese_brazilian ] = "Numerierung 5 Anfang" ;
+ Text[ chinese_simplified ] = "±àºÅ 5 ¿ª¶Ë";
+ Text[ russian ] = "Íà÷àëî íóìåðàöèè 5";
+ Text[ polish ] = "Pocz¹tek numeracji 5";
+ Text[ japanese ] = "”Ô†•t‚¯ 5 Žn‚ß";
+ Text[ chinese_traditional ] = "½s¸¹ 5 ¶}ºÝ";
+ Text[ arabic ] = "ÇáÊÑÞíã 5 ÈÏÇíÉ";
+ Text[ greek ] = "Áñßèìçóç 5 Áñ÷Þ";
+ Text[ korean ] = "¹øÈ£ 5 ½ÃÀÛ";
+ Text[ turkish ] = "Numaralama 5 Baþlangýç";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL5
+{
+ Text = "Nummerierung 5" ;
+ Text [ English ] = "Numbering 5" ;
+ Text [ dutch ] = "Nummering 5" ;
+ Text [ english_us ] = "Numbering 5" ;
+ Text [ italian ] = "Numerazione 5" ;
+ Text [ spanish ] = "Numeración 5" ;
+ Text [ french ] = "Numérotation 5" ;
+ Text [ swedish ] = "Numrering 5" ;
+ Text [ danish ] = "Nummerering 5" ;
+ Text [ portuguese ] = "Numeração 5" ;
+ Text [ portuguese_brazilian ] = "Numerierung 5" ;
+ Text[ chinese_simplified ] = "񅧏 5";
+ Text[ russian ] = "Íóìåðàöèÿ 5";
+ Text[ polish ] = "Numeracja 5";
+ Text[ japanese ] = "”Ô†•t‚¯ 5";
+ Text[ chinese_traditional ] = "½s¸¹ 5";
+ Text[ arabic ] = "ÇáÊÑÞíã 5";
+ Text[ greek ] = "Áñßèìçóç 5";
+ Text[ korean ] = "¹øÈ£ 5";
+ Text[ turkish ] = "Numaralama 5";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_LEVEL5E
+{
+ Text = "Nummerierung 5 Ende" ;
+ Text [ English ] = "Numbering 5 end" ;
+ Text [ english_us ] = "Numbering 5 End" ;
+ Text [ italian ] = "Numerazione 5 fine" ;
+ Text [ spanish ] = "Numeración 5 fin" ;
+ Text [ french ] = "Numérotation 5 fin" ;
+ Text [ dutch ] = "Nummering 5 einde" ;
+ Text [ swedish ] = "Numrering 5 slut" ;
+ Text [ danish ] = "Nummerering 5 slut" ;
+ Text [ portuguese ] = "Numeração 5 Fim" ;
+ Text [ portuguese_brazilian ] = "Numerierung 5 Ende" ;
+ Text[ chinese_simplified ] = "±àºÅ 5 ½áβ";
+ Text[ russian ] = "Êîíåö íóìåðàöèè 5";
+ Text[ polish ] = "Koniec numeracji 5";
+ Text[ japanese ] = "”Ô†•t‚¯ 5 I‚è";
+ Text[ chinese_traditional ] = "½s¸¹ 5 µ²§À";
+ Text[ arabic ] = "ÇáÊÑÞíã 5 äåÇíÉ";
+ Text[ greek ] = "Áñßèìçóç 5 ÔÝëïò";
+ Text[ korean ] = "¹øÈ£ 5 Á¾·á";
+ Text[ turkish ] = "Numaralama 5 Son";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_NUM_NONUM5
+{
+ Text = "Nummerierung 5 Fortsetzung" ;
+ Text [ English ] = "Numbering 5 next" ;
+ Text [ english_us ] = "Numbering 5 Cont." ;
+ Text [ italian ] = "Numerazione 5 succ." ;
+ Text [ spanish ] = "Numeración 5 continuación" ;
+ Text [ french ] = "Numérotation 5 suite" ;
+ Text [ dutch ] = "Nummering 5 voortzetting" ;
+ Text [ swedish ] = "Numrering 5 fortsättning" ;
+ Text [ danish ] = "Nummerering 5 fortsættelse" ;
+ Text [ portuguese ] = "Numeração 5 Continuação" ;
+ Text [ portuguese_brazilian ] = "Numerierung 5 Fortsetzung" ;
+ Text[ chinese_simplified ] = "±àºÅ 5 ¼ÌÐø";
+ Text[ russian ] = "Ïðîäîëæåíèå íóìåðàöèè 5";
+ Text[ polish ] = "Kontynuacja numeracji 5";
+ Text[ japanese ] = "”Ô†•t‚¯ 5 ‘±‚«";
+ Text[ chinese_traditional ] = "½s¸¹ 5 Ä~Äò";
+ Text[ arabic ] = "ÇáÊÑÞíã 5 ãÊÇÈÚÉ";
+ Text[ greek ] = "Áñßèìçóç 5 ÓõíÝ÷åéá";
+ Text[ korean ] = "¹øÈ£ 5 °è¼Ó";
+ Text[ turkish ] = "Numaralama 5 Devam";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL1S
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 1 Anfang : Aufzõhlung 1 Anfang */
+ Text = "Aufzählung 1 Anfang" ;
+ Text [ English ] = "Bullet 1 start" ;
+ Text [ dutch ] = "Opsomming 1 begin" ;
+ Text [ english_us ] = "List 1 Start" ;
+ Text [ italian ] = "Elenco 1 inizio" ;
+ Text [ spanish ] = "Enumeración 1 inicio" ;
+ Text [ french ] = "Puce 1 début" ;
+ Text [ swedish ] = "Uppräkning 1 start" ;
+ Text [ danish ] = "Punktopstilling 1 start" ;
+ Text [ portuguese ] = "Marca 1 Início" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 1 Anfang" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 1 ¿ª¶Ë";
+ Text[ russian ] = "Íà÷àëî ñïèñêà 1";
+ Text[ polish ] = "Pocz¹tek listy 1";
+ Text[ japanese ] = "‰Óð‘‚« 1 Žn‚ß";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 1 ¶}ºÝ";
+ Text[ arabic ] = "ÊÚÏÇÏ 1 ÈÏÇíÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 1 Áñ÷Þ";
+ Text[ korean ] = "¸®½ºÆ® 1 ½ÃÀÛ";
+ Text[ turkish ] = "Liste 1 Baþlangýç";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL1
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 1 : Aufzõhlung 1 */
+ Text = "Aufzählung 1" ;
+ Text [ English ] = "Bullet 1" ;
+ Text [ dutch ] = "Opsomming 1" ;
+ Text [ english_us ] = "List 1" ;
+ Text [ italian ] = "Elenco 1" ;
+ Text [ spanish ] = "Enumeración 1" ;
+ Text [ french ] = "Puce 1" ;
+ Text [ swedish ] = "Uppräkning 1" ;
+ Text [ danish ] = "Punktopstilling 1" ;
+ Text [ portuguese ] = "Marca 1" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 1" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 1";
+ Text[ russian ] = "Ñïèñîê 1";
+ Text[ polish ] = "Lista 1";
+ Text[ japanese ] = "‰Óð‘‚« 1";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 1";
+ Text[ arabic ] = "ÊÚÏÇÏ 1";
+ Text[ greek ] = "ÊáôÜëïãïò 1";
+ Text[ korean ] = "¸®½ºÆ® 1";
+ Text[ turkish ] = "Liste 1";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL1E
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 1 Ende : Aufzõhlung 1 Ende */
+ Text = "Aufzählung 1 Ende" ;
+ Text [ English ] = "Bullet 1 end" ;
+ Text [ english_us ] = "List 1 End" ;
+ Text [ italian ] = "Elenco 1 fine" ;
+ Text [ spanish ] = "Enumeración 1 fin" ;
+ Text [ french ] = "Puce 1 fin" ;
+ Text [ dutch ] = "Opsomming 1 einde" ;
+ Text [ swedish ] = "Uppräkning 1 slut" ;
+ Text [ danish ] = "Punktopstilling 1 slut" ;
+ Text [ portuguese ] = "Marca 1 Fim" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 1 Ende" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 1 ½áβ";
+ Text[ russian ] = "Êîíåö ñïèñêà 1";
+ Text[ polish ] = "Koniec listy 1";
+ Text[ japanese ] = "‰Óð‘‚« 1 I‚è";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 1 µ²§À";
+ Text[ arabic ] = "ÊÚÏÇÏ 1 äåÇíÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 1 ÔÝëïò";
+ Text[ korean ] = "¸®½ºÆ® 1Á¾·á";
+ Text[ turkish ] = "Liste 1 Son";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_NONUM1
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 1 Fortsetzung : Aufzõhlung 1 Fortsetzung */
+ Text = "Aufzählung 1 Fortsetzung" ;
+ Text [ English ] = "Bullet 1 next" ;
+ Text [ english_us ] = "List 1 Cont." ;
+ Text [ italian ] = "Elenco 1 succ." ;
+ Text [ spanish ] = "Enumeración 1 continuación" ;
+ Text [ french ] = "Puce 1 suivante" ;
+ Text [ dutch ] = "Opsomming 1 voortzetting" ;
+ Text [ swedish ] = "Uppräkning 1 fortsättning" ;
+ Text [ danish ] = "Punktopstilling 1 fortsættelse" ;
+ Text [ portuguese ] = "Marca 1 Continuação" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 1 Fortsetzung" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 1 ¼ÌÐø";
+ Text[ russian ] = "Ïðîäîëæåíèå ñïèñêà 1";
+ Text[ polish ] = "Kontynuacja listy1";
+ Text[ japanese ] = "‰Óð‘‚« 1 ‘±‚«";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 1 Ä~Äò";
+ Text[ arabic ] = "ÊÚÏÇÏ 1 ãæÇÕáÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 1 ÓõíÝ÷åéá";
+ Text[ korean ] = "¸®½ºÆ® 1 °è¼Ó";
+ Text[ turkish ] = "Liste 1 Devam";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL2S
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 2 Anfang : Aufzõhlung 2 Anfang */
+ Text = "Aufzählung 2 Anfang" ;
+ Text [ English ] = "Bullet 2 start" ;
+ Text [ dutch ] = "Opsomming 2 begin" ;
+ Text [ english_us ] = "List 2 Start" ;
+ Text [ italian ] = "Elenco 2 inizio" ;
+ Text [ spanish ] = "Enumeración 2 inicio" ;
+ Text [ french ] = "Puce 2 début" ;
+ Text [ swedish ] = "Uppräkning 2 start" ;
+ Text [ danish ] = "Punktopstilling 2 start" ;
+ Text [ portuguese ] = "Marca 2 Início" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 2 Anfang" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 2 ¿ª¶Ë";
+ Text[ russian ] = "Íà÷àëî ñïèñêà 2";
+ Text[ polish ] = "Pocz¹tek listy 2 ";
+ Text[ japanese ] = "‰Óð‘‚« 2 Žn‚ß";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 2 ¶}ºÝ";
+ Text[ arabic ] = "ÊÚÏÇÏ 2 ÈÏÇíÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 2 Áñ÷Þ";
+ Text[ korean ] = "¸®½ºÆ® 2 ½ÃÀÛ";
+ Text[ turkish ] = "Liste 2 Baþlangýç";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL2
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 2 : Aufzõhlung 2 */
+ Text = "Aufzählung 2" ;
+ Text [ English ] = "Bullet 2" ;
+ Text [ dutch ] = "Opsomming 2" ;
+ Text [ english_us ] = "List 2" ;
+ Text [ italian ] = "Elenco 2" ;
+ Text [ spanish ] = "Enumeración 2" ;
+ Text [ french ] = "Puce 2" ;
+ Text [ swedish ] = "Uppräkning 2" ;
+ Text [ danish ] = "Punktopstilling 2" ;
+ Text [ portuguese ] = "Marca 2" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 2" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 2";
+ Text[ russian ] = "Ñïèñîê 2";
+ Text[ polish ] = "Lista 2";
+ Text[ japanese ] = "‰Óð‘‚« 2";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 2";
+ Text[ arabic ] = "ÊÚÏÇÏ 2";
+ Text[ greek ] = "ÊáôÜëïãïò 2";
+ Text[ korean ] = "¸®½ºÆ® 2";
+ Text[ turkish ] = "Liste 2";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL2E
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 2 Ende : Aufzõhlung 2 Ende */
+ Text = "Aufzählung 2 Ende" ;
+ Text [ English ] = "Bullet 2 end" ;
+ Text [ english_us ] = "List 2 End" ;
+ Text [ italian ] = "Elenco 2 fine" ;
+ Text [ spanish ] = "Enumeración 2 fin" ;
+ Text [ french ] = "Puce 2 fin" ;
+ Text [ dutch ] = "Opsomming 2 einde" ;
+ Text [ swedish ] = "Uppräkning 2 slut" ;
+ Text [ danish ] = "Punktopstilling 2 slut" ;
+ Text [ portuguese ] = "Marca 2 Fim" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 2 Ende" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 2 ½áβ";
+ Text[ russian ] = "êîíåö ñïèñêà 2";
+ Text[ polish ] = "Koniec listy 2 ";
+ Text[ japanese ] = "‰Óð‘‚« 2 I‚è";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 2 µ²§À";
+ Text[ arabic ] = "ÊÚÏÇÏ 2 äåÇíÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 2 ÔÝëïò";
+ Text[ korean ] = "¸®½ºÆ® 2 Á¾·á";
+ Text[ turkish ] = "Liste 2 Son";
+};
+String STR_POOLCOLL_BUL_NONUM2
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 2 Fortsetzung : Aufzõhlung 2 Fortsetzung */
+ Text = "Aufzählung 2 Fortsetzung" ;
+ Text [ English ] = "Bullet 2 next" ;
+ Text [ english_us ] = "List 2 Cont." ;
+ Text [ italian ] = "Elenco 2 succ." ;
+ Text [ spanish ] = "Enumeración 2 continuación" ;
+ Text [ french ] = "Puce 2 suivante" ;
+ Text [ dutch ] = "Opsomming 2 voortzetting" ;
+ Text [ swedish ] = "Uppräkning 2 fortsättning" ;
+ Text [ danish ] = "Punktopstilling 2 fortsættelse" ;
+ Text [ portuguese ] = "Marca 2 Continuação" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 2 Fortsetzung" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 2 ¼ÌÐø";
+ Text[ russian ] = "Ïðîäîëæåíèå ñïèñêà 2";
+ Text[ polish ] = "Kontynuacja listy 2";
+ Text[ japanese ] = "‰Óð‘‚« 2 ‘±‚«";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 2 Ä~Äò";
+ Text[ arabic ] = "ÊÚÏÇÏ 2 ãæÇÕáÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 2 ÓõíÝ÷åéá";
+ Text[ korean ] = "¸®½ºÆ® 2 °è¼Ó";
+ Text[ turkish ] = "Liste 2 Devam";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL3S
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 3 Anfang : Aufzõhlung 3 Anfang */
+ Text = "Aufzählung 3 Anfang" ;
+ Text [ English ] = "Bullet 3 start" ;
+ Text [ dutch ] = "Opsomming 3 begin" ;
+ Text [ english_us ] = "List 3 Start" ;
+ Text [ italian ] = "Elenco 3 inizio" ;
+ Text [ spanish ] = "Enumeración 3 inicio" ;
+ Text [ french ] = "Puce 3 début" ;
+ Text [ swedish ] = "Uppräkning 3 start" ;
+ Text [ danish ] = "Punktopstilling 3 start" ;
+ Text [ portuguese ] = "Marca 3 Início" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 3 Anfang" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 3 ¿ª¶Ë";
+ Text[ russian ] = "Íà÷àëî ñïèñêà 3";
+ Text[ polish ] = "Pocz¹tek listy 3";
+ Text[ japanese ] = "‰Óð‘‚« 3 Žn‚ß";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 3 ¶}ºÝ";
+ Text[ arabic ] = "ÊÚÏÇÏ 3 ÈÏÇíÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 3 Áñ÷Þ";
+ Text[ korean ] = "¸®½ºÆ® 3 ½ÃÀÛ";
+ Text[ turkish ] = "Liste 3 Baþlangýç";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL3
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 3 : Aufzõhlung 3 */
+ Text = "Aufzählung 3" ;
+ Text [ English ] = "Bullet 3" ;
+ Text [ dutch ] = "Opsomming 3" ;
+ Text [ english_us ] = "List 3" ;
+ Text [ italian ] = "Elenco 3" ;
+ Text [ spanish ] = "Enumeración 3" ;
+ Text [ french ] = "Puce 3" ;
+ Text [ swedish ] = "Uppräkning 3" ;
+ Text [ danish ] = "Punktopstilling 3" ;
+ Text [ portuguese ] = "Marca 3" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 3" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 3";
+ Text[ russian ] = "Ñïèñîê 3";
+ Text[ polish ] = "Lista 3";
+ Text[ japanese ] = "‰Óð‘‚« 3";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 3";
+ Text[ arabic ] = "ÊÚÏÇÏ 3";
+ Text[ greek ] = "ÊáôÜëïãïò 3";
+ Text[ korean ] = "¸®½ºÆ® 3";
+ Text[ turkish ] = "Liste 3";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL3E
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 3 Ende : Aufzõhlung 3 Ende */
+ Text = "Aufzählung 3 Ende" ;
+ Text [ English ] = "Bullet 3 end" ;
+ Text [ english_us ] = "List 3 End" ;
+ Text [ italian ] = "Elenco 3 fine" ;
+ Text [ spanish ] = "Enumeración 3 fin" ;
+ Text [ french ] = "Puce 3 fin" ;
+ Text [ dutch ] = "Opsomming 3 einde" ;
+ Text [ swedish ] = "Uppräkning 3 slut" ;
+ Text [ danish ] = "Punktopstilling 3 slut" ;
+ Text [ portuguese ] = "Marca 3 Fim" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 3 Ende" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 3 ½áβ";
+ Text[ russian ] = "Êîíåö ñïèñêà 3";
+ Text[ polish ] = "Koniec listy 3";
+ Text[ japanese ] = "‰Óð‘‚« 3 I‚è";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 3 µ²§À";
+ Text[ arabic ] = "ÊÚÏÇÏ 3 äåÇíÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 3 ÔÝëïò";
+ Text[ korean ] = "¸®½ºÆ® 3 Á¾·á";
+ Text[ turkish ] = "Liste 3 Son";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_NONUM3
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 3 Fortsetzung : Aufzõhlung 3 Fortsetzung */
+ Text = "Aufzählung 3 Fortsetzung" ;
+ Text [ English ] = "Bullet 3 next" ;
+ Text [ english_us ] = "List 3 Cont." ;
+ Text [ italian ] = "Elenco 3 succ." ;
+ Text [ spanish ] = "Enumeración 3 continuación" ;
+ Text [ french ] = "Puce 3 suivante" ;
+ Text [ dutch ] = "Opsomming 3 voortzetting" ;
+ Text [ swedish ] = "Uppräkning 3 fortsättning" ;
+ Text [ danish ] = "Punktopstilling 3 fortsættelse" ;
+ Text [ portuguese ] = "Marca 3 Continuação" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 3 Fortsetzung" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿±àºÅ 3 ¼ÌÐø";
+ Text[ russian ] = "Ïðîäîëæåíèå ñïèñêà 3";
+ Text[ polish ] = "Kontynuacja listy 3";
+ Text[ japanese ] = "‰Óð‘‚« 3 ‘±‚«";
+ Text[ chinese_traditional ] = "¶µ¥Ø½s¸¹ 3 Ä~Äò";
+ Text[ arabic ] = "ÊÚÏÇÏ 3 ãæÇÕáÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 3 ÓõíÝ÷åéá";
+ Text[ korean ] = "¸®½ºÆ® 3 °è¼Ó";
+ Text[ turkish ] = "Liste 3 Devam";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL4S
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 4 Anfang : Aufzõhlung 4 Anfang */
+ Text = "Aufzählung 4 Anfang" ;
+ Text [ English ] = "Bullet 4 start" ;
+ Text [ dutch ] = "Opsomming 4 begin" ;
+ Text [ english_us ] = "List 4 Start" ;
+ Text [ italian ] = "Elenco 4 inizio" ;
+ Text [ spanish ] = "Enumeración 4 inicio" ;
+ Text [ french ] = "Puce 4 début" ;
+ Text [ swedish ] = "Uppräkning 4 start" ;
+ Text [ danish ] = "Punktopstilling 4 start" ;
+ Text [ portuguese ] = "Marca 4 Início" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 4 Anfang" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 4 ¿ª¶Ë";
+ Text[ russian ] = "Íà÷àëî ñïèñêà 4";
+ Text[ polish ] = "Pocz¹tek listy 4";
+ Text[ japanese ] = "‰Óð‘‚« 4 Žn‚ß";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 4 ¶}ºÝ";
+ Text[ arabic ] = "ÊÚÏÇÏ 4 ÈÏÇíÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 4 Áñ÷Þ";
+ Text[ korean ] = "¸®½ºÆ® 4 ½ÃÀÛ";
+ Text[ turkish ] = "Liste 4 Baþlangýç";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL4
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 4 : Aufzõhlung 4 */
+ Text = "Aufzählung 4" ;
+ Text [ English ] = "Bullet 4" ;
+ Text [ dutch ] = "Opsomming 4" ;
+ Text [ english_us ] = "List 4" ;
+ Text [ italian ] = "Elenco 4" ;
+ Text [ spanish ] = "Enumeración 4" ;
+ Text [ french ] = "Puce 4" ;
+ Text [ swedish ] = "Uppräkning 4" ;
+ Text [ danish ] = "Punktopstilling 4" ;
+ Text [ portuguese ] = "Marca 4" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 4" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 4";
+ Text[ russian ] = "Ñïèñîê 4";
+ Text[ polish ] = "Lista 4";
+ Text[ japanese ] = "‰Óð‘‚« 4";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 4";
+ Text[ arabic ] = "ÊÚÏÇÏ 4";
+ Text[ greek ] = "ÊáôÜëïãïò 4";
+ Text[ korean ] = "¸®½ºÆ® 4";
+ Text[ turkish ] = "Liste 4";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL4E
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 4 Ende : Aufzõhlung 4 Ende */
+ Text = "Aufzählung 4 Ende" ;
+ Text [ English ] = "Bullet 4 end" ;
+ Text [ english_us ] = "List 4 End" ;
+ Text [ italian ] = "Elenco 4 fine" ;
+ Text [ spanish ] = "Enumeración 4 fin" ;
+ Text [ french ] = "Puce 4 fin" ;
+ Text [ dutch ] = "Opsomming 4 einde" ;
+ Text [ swedish ] = "Uppräkning 4 slut" ;
+ Text [ danish ] = "Punktopstilling 4 slut" ;
+ Text [ portuguese ] = "Marca 4 Fim" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 4 Ende" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 4 ½áβ";
+ Text[ russian ] = "Êîíåö ñïèñêà 4";
+ Text[ polish ] = "Koniec listy 4";
+ Text[ japanese ] = "‰Óð‘‚« 4 I‚è";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 4 µ²§À";
+ Text[ arabic ] = "ÊÚÏÇÏ 4 äåÇíÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 4 ÔÝëïò";
+ Text[ korean ] = "¸®½ºÆ® 4 Á¾·á";
+ Text[ turkish ] = "Liste 4 Son";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_NONUM4
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 4 Fortsetzung : Aufzõhlung 4 Fortsetzung */
+ Text = "Aufzählung 4 Fortsetzung" ;
+ Text [ English ] = "Bullet 4 next" ;
+ Text [ english_us ] = "List 4 Cont." ;
+ Text [ italian ] = "Elenco 4 succ." ;
+ Text [ spanish ] = "Enumeración 4 continuación" ;
+ Text [ french ] = "Puce 4 suivante" ;
+ Text [ dutch ] = "Opsomming 4 voortzetting" ;
+ Text [ swedish ] = "Uppräkning 4 fortsättning" ;
+ Text [ danish ] = "Punktopstilling 4 fortsættelse" ;
+ Text [ portuguese ] = "Marca 4 Continuação" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 4 Fortsetzung" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿±àºÅ 4 ¼ÌÐø";
+ Text[ russian ] = "Ïðîäîëæåíèå ñïèñêà 4";
+ Text[ polish ] = "Kontynuacja listy 4";
+ Text[ japanese ] = "‰Óð‘‚« 4 ‘±‚«";
+ Text[ chinese_traditional ] = "¶µ¥Ø½s¸¹ 4 Ä~Äò";
+ Text[ arabic ] = "ÊÚÏÇÏ 4 ãæÇÕáÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 4 ÓõíÝ÷åéá";
+ Text[ korean ] = "¸®½ºÆ® 4 °è¼Ó";
+ Text[ turkish ] = "Liste 4 Devam";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL5S
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 5 Anfang : Aufzõhlung 5 Anfang */
+ Text = "Aufzählung 5 Anfang" ;
+ Text [ English ] = "Bullet 5 start" ;
+ Text [ dutch ] = "Opsomming 5 begin" ;
+ Text [ english_us ] = "List 5 Start" ;
+ Text [ italian ] = "Elenco 5 inizio" ;
+ Text [ spanish ] = "Enumeración 5 inicio" ;
+ Text [ french ] = "Puce 5 début" ;
+ Text [ swedish ] = "Uppräkning 5 start" ;
+ Text [ danish ] = "Punktopstilling 5 start" ;
+ Text [ portuguese ] = "Marca 5 Início" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 5 Anfang" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 5 ¿ª¶Ë";
+ Text[ russian ] = "Íà÷àëî ñïèñêà 5";
+ Text[ polish ] = "Pocz¹tek listy 5";
+ Text[ japanese ] = "‰Óð‘‚« 5 Žn‚ß";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 5 ¶}ºÝ";
+ Text[ arabic ] = "ÊÚÏÇÏ 5 ÈÏÇíÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 5 Áñ÷Þ";
+ Text[ korean ] = "¸®½ºÆ® 5 ½ÃÀÛ";
+ Text[ turkish ] = "Liste 5 Baþlangýç";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL5
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 5 : Aufzõhlung 5 */
+ Text = "Aufzählung 5" ;
+ Text [ English ] = "Bullet 5" ;
+ Text [ dutch ] = "Opsomming 5" ;
+ Text [ english_us ] = "List 5" ;
+ Text [ italian ] = "Elenco 5" ;
+ Text [ spanish ] = "Enumeración 5" ;
+ Text [ french ] = "Puce 5" ;
+ Text [ swedish ] = "Uppräkning 5" ;
+ Text [ danish ] = "Punktopstilling 5" ;
+ Text [ portuguese ] = "Marca 5" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 5" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 5";
+ Text[ russian ] = "Ñïèñîê 5";
+ Text[ polish ] = "Lista 5";
+ Text[ japanese ] = "‰Óð‘‚« 5";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 5";
+ Text[ arabic ] = "ÊÚÏÇÏ 5";
+ Text[ greek ] = "ÊáôÜëïãïò 5";
+ Text[ korean ] = "¸®½ºÆ® 5";
+ Text[ turkish ] = "Liste 5";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_LEVEL5E
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 5 Ende : Aufzõhlung 5 Ende */
+ Text = "Aufzählung 5 Ende" ;
+ Text [ English ] = "Bullet 5 end" ;
+ Text [ english_us ] = "List 5 End" ;
+ Text [ italian ] = "Elenco 5 fine" ;
+ Text [ spanish ] = "Enumeración 5 fin" ;
+ Text [ french ] = "Puce 5 fin" ;
+ Text [ dutch ] = "Opsomming 5 einde" ;
+ Text [ swedish ] = "Uppräkning 5 slut" ;
+ Text [ danish ] = "Punktopstilling 5 slut" ;
+ Text [ portuguese ] = "Marca 5 Fim" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 5 Ende" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿·ûºÅ 5 ½áβ";
+ Text[ russian ] = "Êîíåö ñïèñêà 5";
+ Text[ polish ] = "Koniec listy 5";
+ Text[ japanese ] = "‰Óð‘‚« 5 I‚è";
+ Text[ chinese_traditional ] = "¶µ¥Ø²Å¸¹ 5 µ²§À";
+ Text[ arabic ] = "ÊÚÏÇÏ 5 äåÇíÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 5 ÔÝëïò";
+ Text[ korean ] = "¸®½ºÆ® 5 Á¾·á";
+ Text[ turkish ] = "Liste 5 Son";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_BUL_NONUM5
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 5 Fortsetzung : Aufzõhlung 5 Fortsetzung */
+ Text = "Aufzählung 5 Fortsetzung" ;
+ Text [ English ] = "Bullet 5 next" ;
+ Text [ english_us ] = "List 5 Cont." ;
+ Text [ italian ] = "Elenco 5 succ." ;
+ Text [ spanish ] = "Enumeración 5 continuación" ;
+ Text [ french ] = "Puce 5 suivante" ;
+ Text [ dutch ] = "Opsomming 5 voortzetting" ;
+ Text [ swedish ] = "Uppräkning 5 fortsättning" ;
+ Text [ danish ] = "Punktopstilling 5 fortsættelse" ;
+ Text [ portuguese ] = "Marca 5 Continuação" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 5 Fortsetzung" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿±àºÅ 5 ¼ÌÐø";
+ Text[ russian ] = "Ïðîäîëæåíèå ñïèñêà 5";
+ Text[ polish ] = "Kontynuacja listy 5";
+ Text[ japanese ] = "‰Óð‘‚« 5 ‘±‚«";
+ Text[ chinese_traditional ] = "¶µ¥Ø½s¸¹ 5 Ä~Äò";
+ Text[ arabic ] = "ÊÚÏÇÏ 5 ãæÇÕáÉ";
+ Text[ greek ] = "ÊáôÜëïãïò 5 ÓõíÝ÷åéá";
+ Text[ korean ] = "¸®½ºÆ® 5 °è¼Ó";
+ Text[ turkish ] = "Liste 5 Devam";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HEADER
+{
+ Text = "Kopfzeile" ;
+ Text [ English ] = "Header" ;
+ Text [ english_us ] = "Header" ;
+ Text [ italian ] = "Riga d'intestazione" ;
+ Text [ spanish ] = "Encabezamiento" ;
+ Text [ french ] = "En-tête" ;
+ Text [ dutch ] = "Koptekst" ;
+ Text [ swedish ] = "Sidhuvud" ;
+ Text [ danish ] = "Sidehoved" ;
+ Text [ portuguese ] = "Cabeçalho" ;
+ Text [ portuguese_brazilian ] = "Kopfzeile" ;
+ 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_POOLCOLL_HEADERL
+{
+ Text = "Kopfzeile links" ;
+ Text [ English ] = "Header left" ;
+ Text [ english_us ] = "Header left" ;
+ Text [ italian ] = "Riga d'intestazione sinistra" ;
+ Text [ spanish ] = "Encabezamiento izquierdo" ;
+ Text [ french ] = "En-tête gauche" ;
+ Text [ dutch ] = "Koptekst links" ;
+ Text [ swedish ] = "Sidhuvud till vänster" ;
+ Text [ danish ] = "Sidehoved til venstre" ;
+ Text [ portuguese ] = "Cabeçalho à esquerda" ;
+ Text [ portuguese_brazilian ] = "Kopfzeile links" ;
+ Text[ chinese_simplified ] = "×óҳü";
+ Text[ russian ] = "Âåðõíèé êîëîíòèòóë ñëåâà";
+ Text[ polish ] = "Nag³ówek z lewej strony";
+ Text[ japanese ] = "ͯÀÞ¶";
+ Text[ chinese_traditional ] = "¥ª­¶­º";
+ Text[ arabic ] = "ÑÃÓ ÇáÕÝÍÉ Åáì ÇáíÓÇÑ";
+ Text[ greek ] = "Êåöáëßäåò áñéóôåñÜ";
+ Text[ korean ] = "¸Ó¸®±Û ¿ÞÂÊ";
+ Text[ turkish ] = "Sol üstbilgi";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HEADERR
+{
+ Text = "Kopfzeile rechts" ;
+ Text [ English ] = "Header right" ;
+ Text [ english_us ] = "Header right" ;
+ Text [ italian ] = "Riga d'intestazione destra" ;
+ Text [ spanish ] = "Encabezamiento derecho" ;
+ Text [ french ] = "En-tête droit" ;
+ Text [ dutch ] = "Koptekst rechts" ;
+ Text [ swedish ] = "Sidhuvud till höger" ;
+ Text [ danish ] = "Sidehoved til højre" ;
+ Text [ portuguese ] = "Cabeçalho à direita" ;
+ Text [ portuguese_brazilian ] = "Kopfzeile rechts" ;
+ Text[ chinese_simplified ] = "ÓÒҳü";
+ Text[ russian ] = "Âåðõíèé êîëîíòèòóë ñïðàâà";
+ Text[ polish ] = "Nag³ówek z prawej strony";
+ Text[ japanese ] = "ͯÀÞ‰E";
+ Text[ chinese_traditional ] = "¥k­¶­º";
+ Text[ arabic ] = "ÑÃÓ ÇáÕÝÍÉ Åáì Çáíãíä";
+ Text[ greek ] = "Êåöáëßäåò äåîéÜ";
+ Text[ korean ] = "¸Ó¸®±Û ¿À¸¥ÂÊ";
+ Text[ turkish ] = "Sað üstbilgi";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_FOOTER
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Fußzeile : Fu˜zeile */
+ Text = "Fußzeile" ;
+ Text [ English ] = "Footer" ;
+ 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 ] = "Sidfot" ;
+ Text [ danish ] = "Sidefod" ;
+ Text [ portuguese ] = "Rodapé" ;
+ Text [ portuguese_brazilian ] = "Fußzeile" ;
+ 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_POOLCOLL_FOOTERL
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Fußzeile links : Fu˜zeile links */
+ Text = "Fußzeile links" ;
+ Text [ English ] = "Footer left" ;
+ Text [ english_us ] = "Footer left" ;
+ Text [ italian ] = "Piè di pagina a sinistra" ;
+ Text [ spanish ] = "Pie de página izquierdo" ;
+ Text [ french ] = "Pied de page gauche" ;
+ Text [ dutch ] = "Voettekst links" ;
+ Text [ swedish ] = "Sidfot till vänster" ;
+ Text [ danish ] = "Sidefod til venstre" ;
+ Text [ portuguese ] = "Rodapé à esquerda" ;
+ Text [ portuguese_brazilian ] = "Fußzeile links" ;
+ Text[ chinese_simplified ] = "×óÒ³½Å";
+ Text[ russian ] = "Íèæíèé êîëîíòèòóë ñëåâà";
+ Text[ polish ] = "Stopka z lewej strony";
+ Text[ japanese ] = "̯À ¶";
+ Text[ chinese_traditional ] = "¥ª­¶§À";
+ Text[ arabic ] = "ÊÐííá ÇáÕÝÍÉ Åáì ÇáíÓÇÑ";
+ Text[ greek ] = "ÕðïóÝëéäï áñéóôåñÜ";
+ Text[ korean ] = "¹Ù´Ú±Û ¿ÞÂÊ";
+ Text[ turkish ] = "Sol altbilgi";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_FOOTERR
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Fußzeile rechts : Fu˜zeile rechts */
+ Text = "Fußzeile rechts" ;
+ Text [ English ] = "Footer right" ;
+ Text [ english_us ] = "Footer right" ;
+ Text [ italian ] = "Piè di pagina a destra" ;
+ Text [ spanish ] = "Pie de página derecho" ;
+ Text [ french ] = "Pied de page droit" ;
+ Text [ dutch ] = "Voettekst rechts" ;
+ Text [ swedish ] = "Sidfot till höger" ;
+ Text [ danish ] = "Sidefod til højre" ;
+ Text [ portuguese ] = "Rodapé à direita" ;
+ Text [ portuguese_brazilian ] = "Fußzeile rechts" ;
+ Text[ chinese_simplified ] = "ÓÒÒ³½Å";
+ Text[ russian ] = "Íèæíèé êîëîíòèòóë ñïðàâà";
+ Text[ polish ] = "Stopka z prawej strony";
+ Text[ japanese ] = "̯À ‰E";
+ Text[ chinese_traditional ] = "¥k­¶§À";
+ Text[ arabic ] = "ÊÐííá ÇáÕÝÍÉ Åáì Çáíãíä";
+ Text[ greek ] = "ÕðïóÝëéäï äåîéÜ";
+ Text[ korean ] = "¹Ù´Ú±Û ¿À¸¥ÂÊ";
+ Text[ turkish ] = "Sað altbilgi";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TABLE
+{
+ Text = "Tabellen Inhalt" ;
+ Text [ English ] = "Table body" ;
+ Text [ english_us ] = "Table Contents" ;
+ Text [ italian ] = "Contenuto tabella" ;
+ Text [ spanish ] = "Contenido de la tabla" ;
+ Text [ french ] = "Contenu de tableau" ;
+ Text [ dutch ] = "Inhoud tabel" ;
+ Text [ swedish ] = "Tabellinnehåll" ;
+ Text [ danish ] = "Tabelindhold" ;
+ Text [ portuguese ] = "Conteúdo de tabela" ;
+ Text [ portuguese_brazilian ] = "Tabellen Inhalt" ;
+ Text[ chinese_simplified ] = "±í¸ñÄÚÈÝ";
+ Text[ russian ] = "Ñîäåðæèìîå òàáëèöû";
+ Text[ polish ] = "ZawartoϾ tabeli";
+ Text[ japanese ] = "•\\‚Ì“à—e";
+ Text[ chinese_traditional ] = "ªí®æ¤º®e";
+ Text[ arabic ] = "ãÍÊæíÇÊ ÇáÌÏæá";
+ Text[ greek ] = "Ðåñéå÷üìåíá ðßíáêá";
+ Text[ korean ] = "Ç¥ ³»¿ë";
+ Text[ turkish ] = "Tablo içeriði";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TABLE_HDLN
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Tabellen Überschrift : Tabellen šberschrift */
+ Text = "Tabellen Überschrift" ;
+ Text [ English ] = "Table headline" ;
+ Text [ english_us ] = "Table Heading" ;
+ Text [ italian ] = "Intestazione tabella" ;
+ Text [ spanish ] = "Encabezado de la tabla" ;
+ Text [ french ] = "Titre de tableau" ;
+ Text [ dutch ] = "Tabelkop" ;
+ Text [ swedish ] = "Tabellöverskrift" ;
+ Text [ danish ] = "Tabeloverskrift" ;
+ Text [ portuguese ] = "Título de tabela" ;
+ Text [ portuguese_brazilian ] = "Tabellen Überschrift" ;
+ Text[ chinese_simplified ] = "±í¸ñ±êÌâ";
+ Text[ russian ] = "Çàãîëîâîê òàáëèöû";
+ Text[ polish ] = "Tytu³ tabeli";
+ Text[ japanese ] = "•\\‚ÌŒ©o‚µ";
+ Text[ chinese_traditional ] = "ªí®æ¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÇáÌÏæá";
+ Text[ greek ] = "Åðéêåöáëßäá ðßíáêá";
+ Text[ korean ] = "Ç¥Á¦¸ñ";
+ Text[ turkish ] = "Tablo baþlýðý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_FRAME
+{
+ Text = "Rahmeninhalt" ;
+ Text [ English ] = "Frame body" ;
+ Text [ dutch ] = "Inhoud kader" ;
+ Text [ english_us ] = "Frame contents" ;
+ Text [ italian ] = "Contenuto cornice" ;
+ Text [ spanish ] = "Contenido del marco" ;
+ Text [ french ] = "Contenu du cadre" ;
+ Text [ swedish ] = "Raminnehåll" ;
+ Text [ danish ] = "Rammeindhold" ;
+ Text [ portuguese ] = "Conteúdo da moldura" ;
+ Text [ portuguese_brazilian ] = "Rahmeninhalt" ;
+ Text[ chinese_simplified ] = "¿òÄÚÈÝ";
+ Text[ russian ] = "Ñîäåðæèìîå ðàìêè";
+ Text[ polish ] = "ZawartoϾ ramki";
+ Text[ japanese ] = "˜g‚Ì“à—e";
+ Text[ chinese_traditional ] = "°T®Ø¤º®e";
+ Text[ arabic ] = "ãÍÊæíÇÊ ÇáÅØÇÑ";
+ Text[ greek ] = "Ðåñéå÷üìåíá ðëáéóßïõ";
+ Text[ korean ] = "ÇÁ·¹ÀÓ ³»¿ë";
+ Text[ turkish ] = "Çerçeve içeriði";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_FOOTNOTE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Fußnote : Fu˜note */
+ Text = "Fußnote" ;
+ Text [ English ] = "Footnote" ;
+ Text [ dutch ] = "Voetnoot" ;
+ Text [ english_us ] = "Footnote" ;
+ Text [ italian ] = "Nota a piè pagina" ;
+ Text [ spanish ] = "Nota al pie" ;
+ Text [ french ] = "Note de bas de page" ;
+ Text [ swedish ] = "Fotnot" ;
+ Text [ danish ] = "Fodnote" ;
+ Text [ portuguese ] = "Nota de rodapé" ;
+ Text [ portuguese_brazilian ] = "Fußnote" ;
+ Text[ chinese_simplified ] = "×¢½Å";
+ Text[ russian ] = "Ñíîñêà";
+ Text[ polish ] = "Stopka";
+ Text[ japanese ] = "‹r’";
+ Text[ chinese_traditional ] = "µù¸}";
+ Text[ arabic ] = "ÍÇÔíÉ ÓÝáíÉ";
+ Text[ greek ] = "Õðïóçìåßùóç";
+ Text[ korean ] = "°¢ÁÖ";
+ Text[ turkish ] = "Dipnot";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_ENDNOTE
+{
+ Text = "Endnote" ;
+ Text [ English ] = "Endnote" ;
+ Text [ portuguese ] = "Nota final" ;
+ Text [ english_us ] = "Endnote" ;
+ Text [ portuguese_brazilian ] = "Endnote" ;
+ Text [ swedish ] = "Slutnot" ;
+ Text [ danish ] = "Slutnote" ;
+ Text [ italian ] = "Nota di chiusura" ;
+ Text [ spanish ] = "Nota al final" ;
+ Text [ french ] = "Note de fin" ;
+ Text [ dutch ] = "Eindnoot" ;
+ Text[ chinese_simplified ] = "βע";
+ Text[ russian ] = "Êîíöåâàÿ ñíîñêà";
+ Text[ polish ] = "Przypis koñcowy";
+ Text[ japanese ] = "•¶––‹r’";
+ Text[ chinese_traditional ] = "§Àª`";
+ Text[ arabic ] = "ÊÚáíÞ ÎÊÇãí";
+ Text[ greek ] = "Óçìåßùóç ôÝëïõò";
+ Text[ korean ] = "¹ÌÁÖ";
+ Text[ turkish ] = "Sonnot";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_LABEL
+{
+ Text = "Beschriftung" ;
+ Text [ English ] = "Label" ;
+ Text [ english_us ] = "Caption" ;
+ Text [ italian ] = "Dicitura" ;
+ Text [ spanish ] = "Etiqueta" ;
+ Text [ french ] = "Légende" ;
+ Text [ dutch ] = "Titel" ;
+ Text [ swedish ] = "Bildtext" ;
+ Text [ danish ] = "Billedtekst" ;
+ Text [ portuguese ] = "Legenda" ;
+ Text [ portuguese_brazilian ] = "Beschriftung" ;
+ Text[ chinese_simplified ] = "±êÇ©";
+ Text[ russian ] = "Íàäïèñü";
+ Text[ polish ] = "Opis";
+ Text[ japanese ] = "×ÍÞÙ";
+ Text[ chinese_traditional ] = "¼ÐÅÒ";
+ Text[ arabic ] = "ÊÓãíÉ ÊæÖíÍíÉ";
+ Text[ greek ] = "ÅðéãñáöÞ";
+ Text[ korean ] = "ĸ¼Ç";
+ Text[ turkish ] = "Etiket";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_LABEL_ABB
+{
+ Text = "Abbildung" ;
+ Text [ English ] = "Figure" ;
+ Text [ english_us ] = "Illustration" ;
+ Text [ italian ] = "Illustrazione" ;
+ Text [ spanish ] = "Ilustración" ;
+ Text [ french ] = "Illustration" ;
+ Text [ dutch ] = "Afbeelding" ;
+ Text [ swedish ] = "Illustration" ;
+ Text [ danish ] = "Illustration" ;
+ Text [ portuguese ] = "Ilustração" ;
+ Text [ portuguese_brazilian ] = "Abbildung" ;
+ Text[ chinese_simplified ] = "²åͼ";
+ Text[ russian ] = "Èëëþñòðàöèÿ";
+ Text[ polish ] = "Ilustracja";
+ Text[ japanese ] = "²×½Ä";
+ Text[ chinese_traditional ] = "´¡¹Ï";
+ Text[ arabic ] = "ÕæÑÉ ÅíÖÇÍíÉ";
+ Text[ greek ] = "Åéêüíá";
+ Text[ korean ] = "»ðÈ­";
+ Text[ turkish ] = "Resim";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_LABEL_TABLE
+{
+ Text = "Tabelle" ;
+ Text [ English ] = "Table" ;
+ Text [ english_us ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ spanish ] = "Tabla" ;
+ Text [ french ] = "Tableau" ;
+ Text [ dutch ] = "Tabel" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ danish ] = "Tabel" ;
+ Text [ portuguese ] = "Tabela" ;
+ Text [ portuguese_brazilian ] = "Tabelle" ;
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "Tabela";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÇáÌÏæá";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "Ç¥";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_LABEL_FRAME
+{
+ Text = "Text" ;
+ Text [ English ] = "Text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ english_us ] = "Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷½Ä";
+ Text[ chinese_traditional ] = "¤º¤å";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_LABEL_DRAWING
+{
+ Text = "Zeichnung" ;
+ Text [ English ] = "Drawing" ;
+ Text[ italian ] = "Disegno";
+ Text[ portuguese_brazilian ] = "Drawing";
+ Text[ portuguese ] = "Desenho";
+ Text[ danish ] = "Tegning";
+ Text[ french ] = "Dessin";
+ Text[ swedish ] = "Teckning";
+ Text[ dutch ] = "Tekening";
+ Text[ spanish ] = "Dibujo";
+ Text[ english_us ] = "Drawing";
+ Text[ chinese_simplified ] = "»æͼ";
+ Text[ russian ] = "Ðèñóíîê";
+ Text[ polish ] = "Rysunek";
+ Text[ japanese ] = "}Œ`•`‰æ";
+ Text[ chinese_traditional ] = "ø¹Ï";
+ Text[ arabic ] = "ÑÓãÉ";
+ Text[ greek ] = "Ó÷Ýäéï";
+ Text[ korean ] = "±×¸®±â";
+ Text[ turkish ] = "Çizim";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_JAKETADRESS
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Empfänger : Empfõnger */
+ Text = "Empfänger" ;
+ Text [ English ] = "Address" ;
+ Text [ dutch ] = "Geadresseerde" ;
+ Text [ english_us ] = "Addressee" ;
+ Text [ italian ] = "Destinatario" ;
+ Text [ spanish ] = "Destinatario" ;
+ Text [ french ] = "Destinataire" ;
+ Text [ swedish ] = "Mottagare" ;
+ Text [ danish ] = "Modtager" ;
+ Text [ portuguese ] = "Destinatário" ;
+ Text [ portuguese_brazilian ] = "Empfänger" ;
+ Text[ chinese_simplified ] = "ÊÕ¼þÈË";
+ Text[ russian ] = "Ïîëó÷àòåëü";
+ Text[ polish ] = "Odbiorca";
+ Text[ japanese ] = "ŽóMŽÒ";
+ Text[ chinese_traditional ] = "¦¬¥óªÌ";
+ Text[ arabic ] = "ÇáãÓÊáã";
+ Text[ greek ] = "ÐáñáëÞðôçò";
+ Text[ korean ] = "¹Þ´Â »ç¶÷";
+ Text[ turkish ] = "Alýcý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_SENDADRESS
+{
+ Text = "Absender" ;
+ Text [ English ] = "Sender" ;
+ Text [ english_us ] = "Sender" ;
+ Text [ italian ] = "Mittente" ;
+ Text [ spanish ] = "Remitente" ;
+ Text [ french ] = "Expéditeur" ;
+ Text [ dutch ] = "Afzender" ;
+ Text [ swedish ] = "Avsändare" ;
+ Text [ danish ] = "Afsender" ;
+ Text [ portuguese ] = "Remetente" ;
+ Text [ portuguese_brazilian ] = "Absender" ;
+ Text[ chinese_simplified ] = "·¢¼þÈË";
+ Text[ russian ] = "Îòïðàâèòåëü";
+ Text[ polish ] = "Nadawca";
+ Text[ japanese ] = "·ol";
+ Text[ chinese_traditional ] = "±H¥óªÌ";
+ Text[ arabic ] = "ÇáãÑÓá";
+ Text[ greek ] = "ÁðïóôïëÝáò";
+ Text[ korean ] = "º¸³½ »ç¶÷";
+ Text[ turkish ] = "Gönderen";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_IDXH
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Stichwortverzeichnis Überschrift : Stichwortverzeichnis šberschrift */
+ Text = "Stichwortverzeichnis Überschrift" ;
+ Text [ English ] = "Headline TOX" ;
+ Text [ english_us ] = "Index Heading" ;
+ Text [ italian ] = "Intestazione indice analitico" ;
+ Text [ spanish ] = "Encabezado del índice alfabético" ;
+ Text [ french ] = "Index lexical : titre" ;
+ Text [ dutch ] = "Indexkop" ;
+ Text [ swedish ] = "Sakregisteröverskrift" ;
+ Text [ danish ] = "Stikordsregisteroverskrift" ;
+ Text [ portuguese ] = "Título do índice remissivo" ;
+ Text [ portuguese_brazilian ] = "Stichwortverzeichnis Überschrift" ;
+ Text[ chinese_simplified ] = "Ë÷Òý±êÌâ";
+ Text[ russian ] = "Çàãîëîâîê óêàçàòåëÿ";
+ Text[ polish ] = "Tytu³ zestawu hase³";
+ Text[ japanese ] = "õˆø Œ©o‚µ";
+ Text[ chinese_traditional ] = "¯Á¤Þ¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÇáÝåÑÓ ÇáÃÈÌÏí";
+ Text[ greek ] = "Åðéêåöáëßäá åõñåôçñßïõ ëÝîåùí";
+ Text[ korean ] = "»öÀÎ Á¦¸ñ";
+ Text[ turkish ] = "Alfabetik dizin baþlýðý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_IDX1
+{
+ Text = "Stichwortverzeichnis 1" ;
+ Text [ English ] = "Level 1 TOX" ;
+ Text [ dutch ] = "Trefwoordenlijst 1" ;
+ Text [ english_us ] = "Index 1" ;
+ Text [ italian ] = "Indice analitico 1" ;
+ Text [ spanish ] = "Índice afabético 1" ;
+ Text [ french ] = "Index lexical 1" ;
+ Text [ swedish ] = "Sakregister 1" ;
+ Text [ danish ] = "Stikordsregister 1" ;
+ Text [ portuguese ] = "Índice remissivo 1" ;
+ Text [ portuguese_brazilian ] = "Stichwortverzeichnis 1" ;
+ Text[ chinese_simplified ] = "Ë÷Òý 1";
+ Text[ russian ] = "Óêàçàòåëü 1";
+ Text[ polish ] = "Zestaw hase³ 1";
+ Text[ japanese ] = "õˆø 1";
+ Text[ chinese_traditional ] = "¯Á¤Þ 1";
+ Text[ arabic ] = "ÝåÑÓ ÃÈÍÏí 1";
+ Text[ greek ] = "ÅõñåôÞñéï ëÝîåùí 1";
+ Text[ korean ] = "»öÀÎ 1";
+ Text[ turkish ] = "Alfabetik dizin 1";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_IDX2
+{
+ Text = "Stichwortverzeichnis 2" ;
+ Text [ English ] = "Level 2 TOX" ;
+ Text [ english_us ] = "Index 2" ;
+ Text [ italian ] = "Indice analitico 2" ;
+ Text [ spanish ] = "Índice alfabético 2" ;
+ Text [ french ] = "Index lexical 2" ;
+ Text [ dutch ] = "Trefwoordenlijst 2" ;
+ Text [ swedish ] = "Sakregister 2" ;
+ Text [ danish ] = "Stikordsregister 2" ;
+ Text [ portuguese ] = "Índice remissivo 2" ;
+ Text [ portuguese_brazilian ] = "Stichwortverzeichnis 2" ;
+ Text[ chinese_simplified ] = "Ë÷Òý 2";
+ Text[ russian ] = "Óêàçàòåëü 2";
+ Text[ polish ] = "Zestaw hase³ 2";
+ Text[ japanese ] = "õˆø 2";
+ Text[ chinese_traditional ] = "¯Á¤Þ 2";
+ Text[ arabic ] = "ÝåÑÓ ÃÈÌÏí 2";
+ Text[ greek ] = "ÅõñåôÞñéï ëÝîåùí 2";
+ Text[ korean ] = "»öÀÎ 2";
+ Text[ turkish ] = "Alfabetik dizin 2";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_IDX3
+{
+ Text = "Stichwortverzeichnis 3" ;
+ Text [ English ] = "Level 3 TOX" ;
+ Text [ english_us ] = "Index 3" ;
+ Text [ italian ] = "Indice analitico 3" ;
+ Text [ spanish ] = "Índice alfabético 3" ;
+ Text [ french ] = "Index lexical 3" ;
+ Text [ dutch ] = "Trefwoordenlijst 3" ;
+ Text [ swedish ] = "Sakregister 3" ;
+ Text [ danish ] = "Stikordsregister 3" ;
+ Text [ portuguese ] = "Índice remissivo 3" ;
+ Text [ portuguese_brazilian ] = "Stichwortverzeichnis 3" ;
+ Text[ chinese_simplified ] = "Ë÷Òý 3";
+ Text[ russian ] = "Óêàçàòåëü 3";
+ Text[ polish ] = "Zestaw hase³ 3";
+ Text[ japanese ] = "õˆø 3";
+ Text[ chinese_traditional ] = "¯Á¤Þ 3";
+ Text[ arabic ] = "ÝåÑÓ ÃÈÌÏí 3";
+ Text[ greek ] = "ÅõñåôÞñéï ëÝîåùí 3";
+ Text[ korean ] = "»öÀÎ 3";
+ Text[ turkish ] = "Alfabetik dizin 3";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_IDXBREAK
+{
+ Text = "Stichwortverzeichnis Trenner" ;
+ Text [ English ] = "Break TOX" ;
+ Text [ english_us ] = "Index Separator" ;
+ Text [ italian ] = "Separatore indice analitico" ;
+ Text [ spanish ] = "Separador del índice alfabético" ;
+ Text [ french ] = "Index lexical : séparateur" ;
+ Text [ dutch ] = "Indexseparator" ;
+ Text [ swedish ] = "Sakregisteravskiljare" ;
+ Text [ danish ] = "Stikordsregister separator" ;
+ Text [ portuguese ] = "Separador de índice remissivo" ;
+ Text [ portuguese_brazilian ] = "Stichwortverzeichnis Trenner" ;
+ Text[ chinese_simplified ] = "Ë÷Òý·Ö¸ô·û";
+ Text[ russian ] = "Ðàçäåëèòåëü ïðåäìåòíîãî óêàçàòåëÿ";
+ Text[ polish ] = "Separator zestawu hase³";
+ Text[ japanese ] = "õˆø ¾ÊßÚ°À";
+ Text[ chinese_traditional ] = "¯Á¤Þ¤À¹j²Å";
+ Text[ arabic ] = "ÝÇÕá ÇáÝåÑÓ ÇáÃÈÌÏí";
+ Text[ greek ] = "Äéá÷ùñéóôéêü åõñåôçñßïõ ëÝîåùí";
+ Text[ korean ] = "»öÀÎ ±¸ºÐÀÚ";
+ Text[ turkish ] = "Alfabetik dizin ayýrma iþareti";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_CNTNTH
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Inhaltsverzeichnis Überschrift : Inhaltsverzeichnis šberschrift */
+ Text = "Inhaltsverzeichnis Überschrift" ;
+ Text [ English ] = "Headline TOC" ;
+ Text [ dutch ] = "Kop inhoudsopgave" ;
+ Text [ english_us ] = "Contents Heading" ;
+ Text [ italian ] = "Intestazione indice" ;
+ Text [ spanish ] = "Encabezado del índice" ;
+ Text [ french ] = "Titre de table des matières" ;
+ Text [ swedish ] = "Innehållsförteckning överskrift" ;
+ Text [ danish ] = "Indholdsfortegnelse overskrift" ;
+ Text [ portuguese ] = "Título do índice" ;
+ Text [ portuguese_brazilian ] = "Inhaltsverzeichnis Überschrift" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝĿ¼±êÌâ";
+ Text[ russian ] = "Çàãîëîâîê îãëàâëåíèÿ";
+ Text[ polish ] = "Tytu³ spisu treœci";
+ Text[ japanese ] = "–ÚŽŸ Œ©o‚µ";
+ Text[ chinese_traditional ] = "¤º®e¥Ø¿ý¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÝåÑÓ ÇáãÍÊæíÇÊ";
+ Text[ greek ] = "Åðéêåöáëßäá êáôáëüãïõ ðåñéå÷ïìÝíùí";
+ Text[ korean ] = "³»¿ë Á¦¸ñ";
+ Text[ turkish ] = "Ýçindekiler dizini baþlýðý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_CNTNT1
+{
+ Text = "Inhaltsverzeichnis 1" ;
+ Text [ English ] = "Level 1 TOC" ;
+ Text [ dutch ] = "Inhoudsopgave 1" ;
+ Text [ english_us ] = "Contents 1" ;
+ Text [ italian ] = "Indice 1" ;
+ Text [ spanish ] = "Índice 1" ;
+ Text [ french ] = "Table des matières niveau 1" ;
+ Text [ swedish ] = "Innehållsförteckning 1" ;
+ Text [ danish ] = "Indholdsfortegnelse 1" ;
+ Text [ portuguese ] = "Índice 1" ;
+ Text [ portuguese_brazilian ] = "Inhaltsverzeichnis 1" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝĿ¼ 1";
+ Text[ russian ] = "Îãëàâëåíèå 1";
+ Text[ polish ] = "Spis treœci 1";
+ Text[ japanese ] = "–ÚŽŸ 1";
+ Text[ chinese_traditional ] = "¤º®e¥Ø¿ý 1";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÍÊæíÇÊ 1";
+ Text[ greek ] = "ÊáôÜëïãïò ðåñéå÷ïìÝíùí 1";
+ Text[ korean ] = "³»¿ë 1";
+ Text[ turkish ] = "Ýçindekiler dizini 1";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_CNTNT2
+{
+ Text = "Inhaltsverzeichnis 2" ;
+ Text [ English ] = "Level 2 TOC" ;
+ Text [ english_us ] = "Contents 2" ;
+ Text [ italian ] = "Indice 2" ;
+ Text [ spanish ] = "Índice 2" ;
+ Text [ french ] = "Table des matières niveau 2" ;
+ Text [ dutch ] = "Inhoudsopgave 2" ;
+ Text [ swedish ] = "Innehållsförteckning 2" ;
+ Text [ danish ] = "Indholdsfortegnelse 2" ;
+ Text [ portuguese ] = "Índice 2" ;
+ Text [ portuguese_brazilian ] = "Inhaltsverzeichnis 2" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝĿ¼ 2";
+ Text[ russian ] = "Îãëàâëåíèå 2";
+ Text[ polish ] = "Spis treœci 2";
+ Text[ japanese ] = "–ÚŽŸ 2";
+ Text[ chinese_traditional ] = "¤º®e¥Ø¿ý 2";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÍÊæíÇÊ 2";
+ Text[ greek ] = "ÊáôÜëïãïò ðåñéå÷ïìÝíùí 2";
+ Text[ korean ] = "³»¿ë 2";
+ Text[ turkish ] = "Ýçindekiler dizini 2";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_CNTNT3
+{
+ Text = "Inhaltsverzeichnis 3" ;
+ Text [ English ] = "Level 3 TOC" ;
+ Text [ english_us ] = "Contents 3" ;
+ Text [ italian ] = "Indice 3" ;
+ Text [ spanish ] = "Índice 3" ;
+ Text [ french ] = "Table des matières niveau 3" ;
+ Text [ dutch ] = "Inhoudsopgave 3" ;
+ Text [ swedish ] = "Innehållsförteckning 3" ;
+ Text [ danish ] = "Indholdsfortegnelse 3" ;
+ Text [ portuguese ] = "Índice 3" ;
+ Text [ portuguese_brazilian ] = "Inhaltsverzeichnis 3" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝĿ¼ 3";
+ Text[ russian ] = "Îãëàâëåíèå 3";
+ Text[ polish ] = "Spis treœci 3";
+ Text[ japanese ] = "–ÚŽŸ 3";
+ Text[ chinese_traditional ] = "¤º®e¥Ø¿ý 3";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÍÊæíÇÊ 3";
+ Text[ greek ] = "ÊáôÜëïãïò ðåñéå÷ïìÝíùí 3";
+ Text[ korean ] = "³»¿ë 3";
+ Text[ turkish ] = "Ýçindekiler dizini 3";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_CNTNT4
+{
+ Text = "Inhaltsverzeichnis 4" ;
+ Text [ English ] = "Level 4 TOC" ;
+ Text [ english_us ] = "Contents 4" ;
+ Text [ italian ] = "Indice 4" ;
+ Text [ spanish ] = "Índice 4" ;
+ Text [ french ] = "Table des matières niveau 4" ;
+ Text [ dutch ] = "Inhoudsopgave 4" ;
+ Text [ swedish ] = "Innehållsförteckning 4" ;
+ Text [ danish ] = "Indholdsfortegnelse 4" ;
+ Text [ portuguese ] = "Índice 4" ;
+ Text [ portuguese_brazilian ] = "Inhaltsverzeichnis 4" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝĿ¼ 4";
+ Text[ russian ] = "Îãëàâëåíèå 4";
+ Text[ polish ] = "Spis treœci 4";
+ Text[ japanese ] = "–ÚŽŸ 4";
+ Text[ chinese_traditional ] = "¤º®e¥Ø¿ý 4";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÍÊæíÇÊ 4";
+ Text[ greek ] = "ÊáôÜëïãïò ðåñéå÷ïìÝíùí 4";
+ Text[ korean ] = "³»¿ë 4";
+ Text[ turkish ] = "Ýçindekiler dizini 4";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_CNTNT5
+{
+ Text = "Inhaltsverzeichnis 5" ;
+ Text [ English ] = "Level 5 TOC" ;
+ Text [ english_us ] = "Contents 5" ;
+ Text [ italian ] = "Indice 5" ;
+ Text [ spanish ] = "Índice 5" ;
+ Text [ french ] = "Table des matières niveau 5" ;
+ Text [ dutch ] = "Inhoudsopgave 5" ;
+ Text [ swedish ] = "Innehållsförteckning 5" ;
+ Text [ danish ] = "Indholdsfortegnelse 5" ;
+ Text [ portuguese ] = "Índice 5" ;
+ Text [ portuguese_brazilian ] = "Inhaltsverzeichnis 5" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝĿ¼ 5";
+ Text[ russian ] = "Îãëàâëåíèå 5";
+ Text[ polish ] = "Spis treœci 5";
+ Text[ japanese ] = "–ÚŽŸ 5";
+ Text[ chinese_traditional ] = "¤º®e¥Ø¿ý 5";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÍÊæíÇÊ 5";
+ Text[ greek ] = "ÊáôÜëïãïò ðåñéå÷ïìÝíùí 5";
+ Text[ korean ] = "³»¿ë 5";
+ Text[ turkish ] = "Ýçindekiler dizini 5";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_CNTNT6
+{
+ Text = "Inhaltsverzeichnis 6" ;
+ Text [ English ] = "Level 6 TOC" ;
+ Text [ english_us ] = "Contents 6" ;
+ Text [ italian ] = "Indice 6" ;
+ Text [ spanish ] = "Índice 6" ;
+ Text [ french ] = "Table des matières niveau 6" ;
+ Text [ dutch ] = "Inhoudsopgave 6" ;
+ Text [ swedish ] = "Innehållsförteckning 6" ;
+ Text [ danish ] = "Indholdsfortegnelse 6" ;
+ Text [ portuguese ] = "Índice geral 6" ;
+ Text [ portuguese_brazilian ] = "Inhaltsverzeichnis 6" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝĿ¼ 6";
+ Text[ russian ] = "Îãëàâëåíèå 6";
+ Text[ polish ] = "Spis treœci 6";
+ Text[ japanese ] = "–ÚŽŸ 6";
+ Text[ chinese_traditional ] = "¤º®e¥Ø¿ý 6";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÍÊæíÇÊ 6";
+ Text[ greek ] = "ÊáôÜëïãïò ðåñéå÷ïìÝíùí 6";
+ Text[ korean ] = "³»¿ë 6";
+ Text[ turkish ] = "Ýçindekiler dizini 6";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_CNTNT7
+{
+ Text = "Inhaltsverzeichnis 7" ;
+ Text [ English ] = "Level 7 TOC" ;
+ Text [ english_us ] = "Contents 7" ;
+ Text [ italian ] = "Indice 7" ;
+ Text [ spanish ] = "Índice 7" ;
+ Text [ french ] = "Table des matières niveau 7" ;
+ Text [ dutch ] = "Inhoudsopgave 7" ;
+ Text [ swedish ] = "Innehållsförteckning 7" ;
+ Text [ danish ] = "Indholdsfortegnelse 7" ;
+ Text [ portuguese ] = "Índice geral 7" ;
+ Text [ portuguese_brazilian ] = "Inhaltsverzeichnis 7" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝĿ¼ 7";
+ Text[ russian ] = "Îãëàâëåíèå 7";
+ Text[ polish ] = "Spis treœci 7";
+ Text[ japanese ] = "–ÚŽŸ 7";
+ Text[ chinese_traditional ] = "¤º®e¥Ø¿ý 7";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÍÊæíÇÊ 7";
+ Text[ greek ] = "ÊáôÜëïãïò ðåñéå÷ïìÝíùí 7";
+ Text[ korean ] = "³»¿ë 7";
+ Text[ turkish ] = "Ýçindekiler dizini 7";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_CNTNT8
+{
+ Text = "Inhaltsverzeichnis 8" ;
+ Text [ English ] = "Level 8 TOC" ;
+ Text [ english_us ] = "Contents 8" ;
+ Text [ italian ] = "Indice 8" ;
+ Text [ spanish ] = "Índice 8" ;
+ Text [ french ] = "Table des matières niveau 8" ;
+ Text [ dutch ] = "Inhoudsopgave 8" ;
+ Text [ swedish ] = "Innehållsförteckning 8" ;
+ Text [ danish ] = "Indholdsfortegnelse 8" ;
+ Text [ portuguese ] = "Índice geral 8" ;
+ Text [ portuguese_brazilian ] = "Inhaltsverzeichnis 8" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝĿ¼ 8";
+ Text[ russian ] = "Îãëàâëåíèå 8";
+ Text[ polish ] = "Spis treœci 8";
+ Text[ japanese ] = "–ÚŽŸ 8";
+ Text[ chinese_traditional ] = "¤º®e¥Ø¿ý 8";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÍÊæíÇÊ 8";
+ Text[ greek ] = "ÊáôÜëïãïò ðåñéå÷ïìÝíùí 8";
+ Text[ korean ] = "³»¿ë 8";
+ Text[ turkish ] = "Ýçindekiler dizini 8";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_CNTNT9
+{
+ Text = "Inhaltsverzeichnis 9" ;
+ Text [ English ] = "Level 9 TOC" ;
+ Text [ english_us ] = "Contents 9" ;
+ Text [ italian ] = "Indice 9" ;
+ Text [ spanish ] = "Índice 9" ;
+ Text [ french ] = "Table des matières niveau 9" ;
+ Text [ dutch ] = "Inhoudsopgave 9" ;
+ Text [ swedish ] = "Innehållsförteckning 9" ;
+ Text [ danish ] = "Indholdsfortegnelse 9" ;
+ Text [ portuguese ] = "Índice geral 9" ;
+ Text [ portuguese_brazilian ] = "Inhaltsverzeichnis 9" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝĿ¼ 9";
+ Text[ russian ] = "Îãëàâëåíèå 9";
+ Text[ polish ] = "Spis treœci 9";
+ Text[ japanese ] = "–ÚŽŸ 9";
+ Text[ chinese_traditional ] = "¤º®e¥Ø¿ý 9";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÍÊæíÇÊ 9";
+ Text[ greek ] = "ÊáôÜëïãïò ðåñéå÷ïìÝíùí 9";
+ Text[ korean ] = "³»¿ë 9";
+ Text[ turkish ] = "Ýçindekiler dizini 9";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_CNTNT10
+{
+ Text = "Inhaltsverzeichnis 10" ;
+ Text [ English ] = "Level 10 TOC" ;
+ Text [ english_us ] = "Contents 10" ;
+ Text [ italian ] = "Indice 10" ;
+ Text [ spanish ] = "Índicel 10" ;
+ Text [ french ] = "Table des matières niveau 10" ;
+ Text [ dutch ] = "Inhoudsopgave 10" ;
+ Text [ swedish ] = "Innehållsförteckning 10" ;
+ Text [ danish ] = "Indholdsfortegnelse 10" ;
+ Text [ portuguese ] = "Índice geral 10" ;
+ Text [ portuguese_brazilian ] = "Inhaltsverzeichnis 10" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝĿ¼ 10";
+ Text[ russian ] = "Îãëàâëåíèå 10";
+ Text[ polish ] = "Spis treœci 10";
+ Text[ japanese ] = "–ÚŽŸ 10";
+ Text[ chinese_traditional ] = "¤º®e¥Ø¿ý 10";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÍÊæíÇÊ 10";
+ Text[ greek ] = "ÊáôÜëïãïò ðåñéå÷ïìÝíùí 10";
+ Text[ korean ] = "³»¿ë 10";
+ Text[ turkish ] = "Ýçindekiler dizini 10";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_USERH
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Benutzerverzeichnis Überschrift : Benutzerverzeichnis šberschrift */
+ Text = "Benutzerverzeichnis Überschrift" ;
+ Text [ English ] = "Headline user TOX" ;
+ Text [ english_us ] = "User Index Heading" ;
+ Text [ italian ] = "Intestazione indice personalizzato" ;
+ Text [ spanish ] = "Encabezado del índice del usuario" ;
+ Text [ french ] = "Titre d'index personnalisé" ;
+ Text [ dutch ] = "Kopregel gebruikersindex" ;
+ Text [ swedish ] = "Användarförteckning överskrift" ;
+ Text [ danish ] = "Brugerindeks overskrift" ;
+ Text [ portuguese ] = "Título do índice do utilizador" ;
+ Text [ portuguese_brazilian ] = "Benutzerverzeichnis Überschrift" ;
+ Text[ chinese_simplified ] = "Óû§Ë÷Òý±êÌâ";
+ Text[ russian ] = "Çàãîëîâîê ïîëüçîâàòåëüñêîãî óêàçàòåëÿ";
+ Text[ polish ] = "Tytu³ indeksu u¿ytkownika";
+ Text[ japanese ] = "Õ°»Þ°’è‹`‚Ìõˆø Œ©o‚µ";
+ Text[ chinese_traditional ] = "¦Û­q¥Ø¿ý¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÝåÑÓ ÇáãÓÊÎÏã";
+ Text[ greek ] = "Åðéêåöáëßäá åõñåôçñßïõ ÷ñçóôþí";
+ Text[ korean ] = "»ç¿ëÀÚ »öÀÎ Á¦¸ñ";
+ Text[ turkish ] = "Kullanýcý dizini baþlýðý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_USER1
+{
+ Text = "Benutzerverzeichnis 1" ;
+ Text [ English ] = "Level 1 user TOX" ;
+ Text [ dutch ] = "Gebruikersindex 1" ;
+ Text [ english_us ] = "User Index 1" ;
+ Text [ italian ] = "Indice personalizzato 1" ;
+ Text [ spanish ] = "Índice del usuario 1" ;
+ Text [ french ] = "Index personnalisé 1" ;
+ Text [ swedish ] = "Användarförteckning 1" ;
+ Text [ danish ] = "Brugerindeks 1" ;
+ Text [ portuguese ] = "Índice do utilizador 1" ;
+ Text [ portuguese_brazilian ] = "Benutzerverzeichnis 1" ;
+ Text[ chinese_simplified ] = "Óû§Ë÷Òý 1";
+ Text[ russian ] = "Ïîëüçîâàòåëüñêèé óêàçàòåëü 1";
+ Text[ polish ] = "Indeks u¿ytkownika 1";
+ Text[ japanese ] = "Õ°»Þ°’è‹`‚Ìõˆø 1";
+ Text[ chinese_traditional ] = "¦Û­q¥Ø¿ý 1";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÓÊÎÏã 1";
+ Text[ greek ] = "ÅõñåôÞñéï ÷ñçóôþí 1";
+ Text[ korean ] = "»ç¿ëÀÚ »öÀÎ 1";
+ Text[ turkish ] = "Kullanýcý dizini 1";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_USER2
+{
+ Text = "Benutzerverzeichnis 2" ;
+ Text [ English ] = "Level 2 user TOX" ;
+ Text [ english_us ] = "User Index 2" ;
+ Text [ italian ] = "Indice personalizzato 2" ;
+ Text [ spanish ] = "Índice del usuario 2" ;
+ Text [ french ] = "Index personnalisé 2" ;
+ Text [ dutch ] = "Gebruikersindex 2" ;
+ Text [ swedish ] = "Användarförteckning 2" ;
+ Text [ danish ] = "Brugerindeks 2" ;
+ Text [ portuguese ] = "Índice do utilizador 2" ;
+ Text [ portuguese_brazilian ] = "Benutzerverzeichnis 2" ;
+ Text[ chinese_simplified ] = "Óû§Ë÷Òý 2";
+ Text[ russian ] = "Ïîëüçîâàòåëüñêèé óêàçàòåëü 2";
+ Text[ polish ] = "Indeks u¿ytkownika 2";
+ Text[ japanese ] = "Õ°»Þ°’è‹`‚Ìõˆø 2";
+ Text[ chinese_traditional ] = "¦Û­q¥Ø¿ý 2";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÓÊÎÏã 2";
+ Text[ greek ] = "ÅõñåôÞñéï ÷ñçóôþí 2";
+ Text[ korean ] = "»ç¿ëÀÚ »öÀÎ 2";
+ Text[ turkish ] = "Kullanýcý dizini 2";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_USER3
+{
+ Text = "Benutzerverzeichnis 3" ;
+ Text [ English ] = "Level 3 user TOX" ;
+ Text [ english_us ] = "User Index 3" ;
+ Text [ italian ] = "Indice personalizzato 3" ;
+ Text [ spanish ] = "Índice del usuario 3" ;
+ Text [ french ] = "Index personnalisé 3" ;
+ Text [ dutch ] = "Gebruikersindex 3" ;
+ Text [ swedish ] = "Användarförteckning 3" ;
+ Text [ danish ] = "Brugerindeks 3" ;
+ Text [ portuguese ] = "Índice do utilizador 3" ;
+ Text [ portuguese_brazilian ] = "Benutzerverzeichnis 3" ;
+ Text[ chinese_simplified ] = "Óû§Ë÷Òý 3";
+ Text[ russian ] = "Ïîëüçîâàòåëüñêèé óêàçàòåëü 3";
+ Text[ polish ] = "Indeks u¿ytkownika 3";
+ Text[ japanese ] = "Õ°»Þ°’è‹`‚Ìõˆø 3";
+ Text[ chinese_traditional ] = "¦Û­q¥Ø¿ý 3";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÓÊÎÏã 3";
+ Text[ greek ] = "ÅõñåôÞñéï ÷ñçóôþí 3";
+ Text[ korean ] = "»ç¿ëÀÚ »öÀÎ 3";
+ Text[ turkish ] = "Kullanýcý dizini 3";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_USER4
+{
+ Text = "Benutzerverzeichnis 4" ;
+ Text [ English ] = "Level 4 user TOX" ;
+ Text [ english_us ] = "User Index 4" ;
+ Text [ italian ] = "Indice personalizzato 4" ;
+ Text [ spanish ] = "Índice del usuario 4" ;
+ Text [ french ] = "Index personnalisé 4" ;
+ Text [ dutch ] = "Gebruikersindex 4" ;
+ Text [ swedish ] = "Användarförteckning 4" ;
+ Text [ danish ] = "Brugerindeks 4" ;
+ Text [ portuguese ] = "Índice do utilizador 4" ;
+ Text [ portuguese_brazilian ] = "Benutzerverzeichnis 4" ;
+ Text[ chinese_simplified ] = "Óû§Ë÷Òý 4";
+ Text[ russian ] = "Ïîëüçîâàòåëüñêèé óêàçàòåëü 4";
+ Text[ polish ] = "Indeks u¿ytkownika 4";
+ Text[ japanese ] = "Õ°»Þ°’è‹`‚Ìõˆø 4";
+ Text[ chinese_traditional ] = "¦Û­q¥Ø¿ý 4";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÓÊÎÏã 4";
+ Text[ greek ] = "ÅõñåôÞñéï ÷ñçóôþí 4";
+ Text[ korean ] = "»ç¿ëÀÚ »öÀÎ 4";
+ Text[ turkish ] = "Kullanýcý dizini 4";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_USER5
+{
+ Text = "Benutzerverzeichnis 5" ;
+ Text [ English ] = "Level 5 user TOX" ;
+ Text [ english_us ] = "User Index 5" ;
+ Text [ italian ] = "Indice personalizzato 5" ;
+ Text [ spanish ] = "Índice del usuario 5" ;
+ Text [ french ] = "Index personnalisé 5" ;
+ Text [ dutch ] = "Gebruikersindex 5" ;
+ Text [ swedish ] = "Användarförteckning 5" ;
+ Text [ danish ] = "Brugerindeks 5" ;
+ Text [ portuguese ] = "Índice do utilizador 5" ;
+ Text [ portuguese_brazilian ] = "Benutzerverzeichnis 5" ;
+ Text[ chinese_simplified ] = "Óû§Ë÷Òý 5";
+ Text[ russian ] = "Ïîëüçîâàòåëüñêèé óêàçàòåëü 5";
+ Text[ polish ] = "Indeks u¿ytkownika 5";
+ Text[ japanese ] = "Õ°»Þ°’è‹`‚Ìõˆø 5";
+ Text[ chinese_traditional ] = "¦Û­q¥Ø¿ý 5";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÓÊÎÏã 5";
+ Text[ greek ] = "ÅõñåôÞñéï ÷ñçóôþí 5";
+ Text[ korean ] = "»ç¿ëÀÚ »öÀÎ 5";
+ Text[ turkish ] = "Kullanýcý dizini 5";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_USER6
+{
+ Text = "Benutzerverzeichnis 6" ;
+ Text [ English ] = "Level 6 user TOX" ;
+ Text [ dutch ] = "Gebruikersindex 6" ;
+ Text [ english_us ] = "User Index 6" ;
+ Text [ italian ] = "Indice personalizzato 6" ;
+ Text [ spanish ] = "Índice del usuario 6" ;
+ Text [ french ] = "Index personnalisé 6" ;
+ Text [ swedish ] = "Användarförteckning 6" ;
+ Text [ danish ] = "Brugerindeks 6" ;
+ Text [ portuguese ] = "Índice personalizado 6" ;
+ Text [ portuguese_brazilian ] = "Benutzerverzeichnis 6" ;
+ Text[ russian ] = "Ïîëüçîâàòåëüñêèé óêàçàòåëü 6";
+ Text[ polish ] = "Indeks u¿ytkownika 6";
+ Text[ japanese ] = "Õ°»Þ°’è‹`‚Ìõˆø 6";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÓÊÎÏã 6";
+ Text[ greek ] = "ÅõñåôÞñéï ÷ñçóôþí 6";
+ Text[ korean ] = "»ç¿ëÀÚ »öÀÎ 6";
+ Text[ chinese_simplified ] = "Óû§Ä¿Â¼ 6";
+ Text[ chinese_traditional ] = "¦Û­q¥Ø¿ý 6";
+ Text[ turkish ] = "Kullanýcý dizini 6";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_USER7
+{
+ Text = "Benutzerverzeichnis 7" ;
+ Text [ English ] = "Level 7 user TOX" ;
+ Text [ english_us ] = "User Index 7" ;
+ Text [ italian ] = "Indice personalizzato 7" ;
+ Text [ spanish ] = "Índice del usuario 7" ;
+ Text [ french ] = "Index personnalisé 7" ;
+ Text [ dutch ] = "Gebruikersindex 7" ;
+ Text [ swedish ] = "Användarförteckning 7" ;
+ Text [ danish ] = "Brugerindeks 7" ;
+ Text [ portuguese ] = "Índice personalizado 7" ;
+ Text [ portuguese_brazilian ] = "Benutzerverzeichnis 7" ;
+ Text[ russian ] = "Ïîëüçîâàòåëüñêèé óêàçàòåëü 7";
+ Text[ polish ] = "Indeks u¿ytkownika 7";
+ Text[ japanese ] = "Õ°»Þ°’è‹`‚Ìõˆø 7";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÓÊÎÏã 7";
+ Text[ greek ] = "ÅõñåôÞñéï ÷ñçóôþí 7";
+ Text[ korean ] = "»ç¿ëÀÚ »öÀÎ 7";
+ Text[ chinese_simplified ] = "Óû§Ä¿Â¼ 7";
+ Text[ chinese_traditional ] = "¦Û­q¥Ø¿ý 7";
+ Text[ turkish ] = "Kullanýcý dizini 7";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_USER8
+{
+ Text = "Benutzerverzeichnis 8" ;
+ Text [ English ] = "Level 8 user TOX" ;
+ Text [ english_us ] = "User Index 8" ;
+ Text [ italian ] = "Indice personalizzato 8" ;
+ Text [ spanish ] = "Índice del usuario 8" ;
+ Text [ french ] = "Index personnalisé 8" ;
+ Text [ dutch ] = "Gebruikersindex 8" ;
+ Text [ swedish ] = "Användarförteckning 8" ;
+ Text [ danish ] = "Brugerindeks 8" ;
+ Text [ portuguese ] = "Índice personalizado 8" ;
+ Text [ portuguese_brazilian ] = "Benutzerverzeichnis 8" ;
+ Text[ russian ] = "Ïîëüçîâàòåëüñêèé óêàçàòåëü 8";
+ Text[ polish ] = "Indeks u¿ytkownika 8";
+ Text[ japanese ] = "Õ°»Þ°’è‹`‚Ìõˆø 8";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÓÊÎÏã 8";
+ Text[ greek ] = "ÅõñåôÞñéï ÷ñçóôþí 8";
+ Text[ korean ] = "»ç¿ëÀÚ »öÀÎ 8";
+ Text[ chinese_simplified ] = "Óû§Ä¿Â¼ 8";
+ Text[ chinese_traditional ] = "¦Û­q¥Ø¿ý 8";
+ Text[ turkish ] = "Kullanýcý dizini 8";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_USER9
+{
+ Text = "Benutzerverzeichnis 9" ;
+ Text [ English ] = "Level 9 user TOX" ;
+ Text [ english_us ] = "User Index 9" ;
+ Text [ italian ] = "Indice personalizzato 9" ;
+ Text [ spanish ] = "Índice del usuario 9" ;
+ Text [ french ] = "Index personnalisé 9" ;
+ Text [ dutch ] = "Gebruikersindex 9" ;
+ Text [ swedish ] = "Användarförteckning 9" ;
+ Text [ danish ] = "Brugerindeks 9" ;
+ Text [ portuguese ] = "Índice personalizado 9" ;
+ Text [ portuguese_brazilian ] = "Benutzerverzeichnis 9" ;
+ Text[ russian ] = "Ïîëüçîâàòåëüñêèé óêàçàòåëü 9";
+ Text[ polish ] = "Indeks u¿ytkownika 9";
+ Text[ japanese ] = "Õ°»Þ°’è‹`‚Ìõˆø 9";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÓÊÎÏã 9";
+ Text[ greek ] = "ÅõñåôÞñéï ÷ñçóôþí 9";
+ Text[ korean ] = "»ç¿ëÀÚ »öÀÎ 9";
+ Text[ chinese_simplified ] = "Óû§Ä¿Â¼ 9";
+ Text[ chinese_traditional ] = "¦Û­q¥Ø¿ý 9";
+ Text[ turkish ] = "Kullanýcý dizini 9";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_USER10
+{
+ Text = "Benutzerverzeichnis 10" ;
+ Text [ English ] = "Level 10 user TOX" ;
+ Text [ english_us ] = "User Index 10" ;
+ Text [ italian ] = "Indice personalizzato 10" ;
+ Text [ spanish ] = "Índice del usuario 10" ;
+ Text [ french ] = "Index personnalisé 10" ;
+ Text [ dutch ] = "Gebruikersindex 10" ;
+ Text [ swedish ] = "Användarförteckning 10" ;
+ Text [ danish ] = "Brugerindeks 10" ;
+ Text [ portuguese ] = "Índice personalizado 10" ;
+ Text [ portuguese_brazilian ] = "Benutzerverzeichnis 10" ;
+ Text[ russian ] = "Ïîëüçîâàòåëüñêèé óêàçàòåëü 10";
+ Text[ polish ] = "Indeks u¿ytkownika 10";
+ Text[ japanese ] = "Õ°»Þ°’è‹`‚Ìõˆø 10";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÓÊÎÏã 10";
+ Text[ greek ] = "ÅõñåôÞñéï ÷ñçóôþí 10";
+ Text[ korean ] = "»ç¿ëÀÚ »öÀÎ 10";
+ Text[ chinese_simplified ] = "Óû§Ä¿Â¼ 10";
+ Text[ chinese_traditional ] = "¦Û­q¥Ø¿ý 10";
+ Text[ turkish ] = "Kullanýcý dizini 10";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_ILLUSH
+{
+ Text = "Abbildungsverzeichnis Überschrift" ;
+ Text [ English ] = "Illustration index heading" ;
+ Text[ english_us ] = "Illustration Index Heading";
+ Text[ portuguese ] = "Título - Índice de ilustrações";
+ Text[ russian ] = "Ñïèñîê ðèñóíêîâ: çàãîëîâîê";
+ Text[ greek ] = "Åðéêåöáëßäá êáôáëüãïõ åéêüíùí";
+ Text[ dutch ] = "Opschrift afbeeldingenregister";
+ Text[ french ] = "Titre de l'index des illustrations";
+ Text[ spanish ] = "Encabezado Índice de ilustraciones";
+ Text[ italian ] = "Intestazione indice illustrazioni";
+ Text[ danish ] = "Figuroversigt overskrift";
+ Text[ swedish ] = "Illustrationsförteckning överskrift";
+ Text[ polish ] = "Indeks ilustracji Tytu³";
+ Text[ portuguese_brazilian ] = "Illustration index heading";
+ Text[ japanese ] = "²×½ÄõˆøŒ©o‚µ";
+ Text[ korean ] = "»ðÈ­ »öÀÎ Á¦¸ñ";
+ Text[ chinese_simplified ] = "²åͼĿ¼±êÌâ";
+ Text[ chinese_traditional ] = "´¡¹Ï¥Ø¿ý¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÝåÑÓ ÇáÕæÑ ÇáÅíÖÇÍíÉ";
+ Text[ turkish ] = "Resim dizini baþlýðý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_ILLUS1
+{
+ Text = "Abbildungsverzeichnis 1" ;
+ Text [ English ] = "Illustration index 1" ;
+ Text[ english_us ] = "Illustration Index 1";
+ Text[ portuguese ] = "Índice de ilustrações 1";
+ Text[ russian ] = "Ñïèñîê ðèñóíêîâ 1";
+ Text[ greek ] = "ÊáôÜëïãïò åéêüíùí 1";
+ Text[ dutch ] = "Afbeeldingenregister 1";
+ Text[ french ] = "Index des illustrations 1";
+ Text[ spanish ] = "Índice de ilustraciones 1";
+ Text[ italian ] = "Indice delle illustrazioni 1";
+ Text[ danish ] = "Figuroversigt 1";
+ Text[ swedish ] = "Illustrationsförteckning 1";
+ Text[ polish ] = "Indeks ilustracji 1";
+ Text[ portuguese_brazilian ] = "Illustration index 1";
+ Text[ japanese ] = "²×½Äõˆø 1";
+ Text[ korean ] = "»ðÈ­ »öÀÎ 1";
+ Text[ chinese_simplified ] = "²åͼĿ¼ 1";
+ Text[ chinese_traditional ] = "´¡¹Ï¥Ø¿ý 1";
+ Text[ arabic ] = "ÝåÑÓ ÇáÕæÑ ÇáÅíÖÇÍíÉ 1";
+ Text[ turkish ] = "Resim dizini 1";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_OBJECTH
+{
+ Text = "Objektverzeichnis Überschrift";
+ Text [ English ] = "Object index heading" ;
+ Text[ english_us ] = "Object index heading";
+ Text[ portuguese ] = "Título - Índice de objectos";
+ Text[ russian ] = "Ñïèñîê îáúåêòîâ: çàãîëîâîê";
+ Text[ greek ] = "Åðéêåöáëßäá êáôáëüãïõ áíôéêåéìÝíùí";
+ Text[ dutch ] = "Opschrift objectenregister";
+ Text[ french ] = "Titre d'index d'objets";
+ Text[ spanish ] = "Encabezado índice de objetos";
+ Text[ italian ] = "Intestazione indice degli oggetti";
+ Text[ danish ] = "Objektindeks overskrift";
+ Text[ swedish ] = "Objektförteckning överskrift";
+ Text[ polish ] = "Indeks obiektów Tytu³";
+ Text[ portuguese_brazilian ] = "Object index heading";
+ Text[ japanese ] = "µÌÞ¼Þª¸ÄõˆøŒ©o‚µ";
+ Text[ korean ] = "°³Ã¼ »öÀÎ Á¦¸ñ";
+ Text[ chinese_simplified ] = "¶ÔÏóĿ¼±êÌâ";
+ Text[ chinese_traditional ] = "ª«¥ó¥Ø¿ý¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÝåÑÓ ÇáßÇÆäÇÊ";
+ Text[ turkish ] = "Nesne dizini baþlýðý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_OBJECT1
+{
+ Text = "Objektverzeichnis 1" ;
+ Text [ English ] = "Object index 1" ;
+ Text[ english_us ] = "Object index 1";
+ Text[ portuguese ] = "Índice de objectos 1";
+ Text[ russian ] = "Ñïèñîê îáúåêòîâ 1";
+ Text[ greek ] = "ÊáôÜëïãïò áíôéêåéìÝíùí 1";
+ Text[ dutch ] = "Objectenregister 1";
+ Text[ french ] = "Index d'objet 1";
+ Text[ spanish ] = "Índice de objetos 1";
+ Text[ italian ] = "Indice degli oggetti 1";
+ Text[ danish ] = "Objektindeks 1";
+ Text[ swedish ] = "Objektförteckning 1";
+ Text[ polish ] = "Indeks obiektów 1";
+ Text[ portuguese_brazilian ] = "Object index 1";
+ Text[ japanese ] = "µÌÞ¼Þª¸Äõˆø 1";
+ Text[ korean ] = "°³Ã¼ »öÀÎ 1";
+ Text[ chinese_simplified ] = "¶ÔÏóĿ¼ 1";
+ Text[ chinese_traditional ] = "ª«¥ó¥Ø¿ý 1";
+ Text[ arabic ] = "ÝåÑÓ ÇáßÇÆäÇÊ 1";
+ Text[ turkish ] = "Nesne dizini 1";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_TABLESH
+{
+ Text = "Tabellenverzeichnis Überschrift" ;
+ Text [ English ] = "Table index heading" ;
+ Text[ english_us ] = "Table index heading";
+ Text[ portuguese ] = "Título - Índice de tabelas";
+ Text[ russian ] = "Ñïèñîê òàáëèö: çàãîëîâîê";
+ Text[ greek ] = "Åðéêåöáëßäá åõñåôÞñéï ðßíáêá";
+ Text[ dutch ] = "Opschrift tabellenregister";
+ Text[ french ] = "Titre d'index de tables";
+ Text[ spanish ] = "Encabezado índice de tablas";
+ Text[ italian ] = "Intestazione indice tabella";
+ Text[ danish ] = "Tabeloversigt overskrift";
+ Text[ swedish ] = "Tabellförteckning överskrift";
+ Text[ polish ] = "Indeks tabeli Tytu³";
+ Text[ portuguese_brazilian ] = "Table index heading";
+ Text[ japanese ] = "•\\õˆøŒ©o‚µ";
+ Text[ korean ] = "Ç¥»öÀÎ Á¦¸ñ";
+ Text[ chinese_simplified ] = "±í¸ñĿ¼±êÌâ";
+ Text[ chinese_traditional ] = "ªí®æ¥Ø¿ý¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÝåÑÓ ÇáÌÏæá";
+ Text[ turkish ] = "Tablo dizini baþlýðý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_TABLES1
+{
+ Text = "Tabellenverzeichnis 1" ;
+ Text [ English ] = "Table index 1" ;
+ Text[ english_us ] = "Table index 1";
+ Text[ portuguese ] = "Índice de tabelas 1";
+ Text[ russian ] = "Ñïèñîê òàáëèö 1";
+ Text[ greek ] = "Ðåñéå÷üìåíá ðßíáêá 1";
+ Text[ dutch ] = "Tabellenregister 1";
+ Text[ french ] = "Index de tables 1";
+ Text[ spanish ] = "Índice de tablas 1";
+ Text[ italian ] = "Indice tabella 1";
+ Text[ danish ] = "Tabeloversigt 1";
+ Text[ swedish ] = "Tabellförteckning 1";
+ Text[ polish ] = "Indeks tabeli 1";
+ Text[ portuguese_brazilian ] = "Table index 1";
+ Text[ japanese ] = "•\\õˆø 1";
+ Text[ korean ] = "Ç¥ »öÀÎ 1";
+ Text[ chinese_simplified ] = "±í¸ñĿ¼ 1";
+ Text[ chinese_traditional ] = "ªí®æ¥Ø¿ý 1";
+ Text[ arabic ] = "ÝåÑÓ ÌÏæá 1";
+ Text[ turkish ] = "Tablo dizini 1";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_AUTHORITIESH
+{
+ Text = "Literaturverzeichnis Überschrift" ;
+ Text [ English ] = "Index of authorities heading" ;
+ Text[ english_us ] = "Bibliography Heading";
+ Text[ portuguese ] = "Título - Bibliografia";
+ Text[ russian ] = "Ñïèñîê ëèòåðàòóðû: çàãîëîâîê";
+ Text[ greek ] = "Åðéêåöáëßäá âéâëéïãñáößáò";
+ Text[ dutch ] = "Opschrift literatuurlijst";
+ Text[ french ] = "Titre de bibliographie";
+ Text[ spanish ] = "Encabezado Bibliografía";
+ Text[ italian ] = "Intestazione bibliografia";
+ Text[ danish ] = "Litteraturliste overskrift";
+ Text[ swedish ] = "Litteraturförteckning överskrift";
+ Text[ polish ] = "Spis literatury Tytu³";
+ Text[ portuguese_brazilian ] = "Index of authorities heading";
+ Text[ japanese ] = "ŽQl•¶Œ£•\\Œ©o‚µ";
+ Text[ korean ] = "Âü°í¹®Çå ¸Ó¸®±Û";
+ Text[ chinese_simplified ] = "ÎÄÏ×Ŀ¼±êÌâ";
+ Text[ chinese_traditional ] = "¤åÄm¥Ø¿ý¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÝåÑÓ ÇáãÑÇÌÚ";
+ Text[ turkish ] = "Kaynakça dizini baþlýðý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_TOX_AUTHORITIES1
+{
+ Text = "Literaturverzeichnis 1" ;
+ Text [ English ] = "Index of authorities 1" ;
+ Text[ english_us ] = "Bibliography 1";
+ Text[ portuguese ] = "Bibliografia 1";
+ Text[ russian ] = "Ñïèñîê ëèòåðàòóðû 1";
+ Text[ greek ] = "Âéâëéïãñáößá 1";
+ Text[ dutch ] = "Literatuurlijst 1";
+ Text[ french ] = "Bibliographie 1";
+ Text[ spanish ] = "Bibliografía 1";
+ Text[ italian ] = "Bibliografia 1";
+ Text[ danish ] = "Litteraturliste 1";
+ Text[ swedish ] = "Litteraturförteckning 1";
+ Text[ polish ] = "Spis literatury 1";
+ Text[ portuguese_brazilian ] = "Index of authorities 1";
+ Text[ japanese ] = "ŽQl•¶Œ£•\\ 1";
+ Text[ korean ] = "Âü°í¹®Çå 1";
+ Text[ chinese_simplified ] = "ÎÄÏ×Ŀ¼ 1";
+ Text[ chinese_traditional ] = "¤åÄm¥Ø¿ý 1";
+ Text[ arabic ] = "ÝåÑÓ ÇáãÑÇÌÚ 1";
+ Text[ turkish ] = "Kaynakça dizini 1";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_POOLCOLL_DOC_TITEL
+{
+ Text = "Titel" ;
+ Text [ English ] = "Title" ;
+ Text [ dutch ] = "Titel" ;
+ Text [ english_us ] = "Title" ;
+ Text [ italian ] = "Titolo" ;
+ Text [ spanish ] = "Título" ;
+ Text [ french ] = "Titre principal" ;
+ Text [ swedish ] = "Rubrik" ;
+ Text [ danish ] = "Titel" ;
+ Text [ portuguese ] = "Título principal" ;
+ Text [ portuguese_brazilian ] = "Titel" ;
+ Text[ chinese_simplified ] = "±êÌâ";
+ Text[ russian ] = "Çàãîëîâîê";
+ Text[ polish ] = "Tytu³";
+ Text[ japanese ] = "•\\‘è";
+ Text[ chinese_traditional ] = "¼ÐÃD";
+ Text[ arabic ] = "ÇáÚäæÇä";
+ Text[ greek ] = "Ôßôëïò";
+ Text[ korean ] = "Á¦¸ñ";
+ Text[ turkish ] = "Baþlýk";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_DOC_SUBTITEL
+{
+ Text = "Untertitel" ;
+ Text [ English ] = "Subtitle" ;
+ Text [ dutch ] = "Subtitel" ;
+ Text [ english_us ] = "Subtitle" ;
+ Text [ italian ] = "Sottotitolo" ;
+ Text [ spanish ] = "Subtítulo" ;
+ Text [ french ] = "Sous-titre" ;
+ 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_POOLCOLL_HTML_BLOCKQUOTE
+{
+ Text = "Zitat" ;
+ Text [ English ] = "Citation" ;
+ Text [ dutch ] = "Citaat" ;
+ Text [ english_us ] = "Quotations" ;
+ Text [ swedish ] = "Citat" ;
+ Text [ danish ] = "Citat" ;
+ Text [ italian ] = "Citazione" ;
+ Text [ spanish ] = "Cita" ;
+ Text [ french ] = "Citation" ;
+ Text [ portuguese ] = "Citação" ;
+ Text [ portuguese_brazilian ] = "Zitat" ;
+ Text[ chinese_simplified ] = "ÒýÓÃÎÄ";
+ Text[ russian ] = "Öèòàòà";
+ Text[ polish ] = "Cytat";
+ Text[ japanese ] = "ˆø—p";
+ Text[ chinese_traditional ] = "¤Þ¤å";
+ Text[ arabic ] = "ÇÓÊÔåÇÏ ÈÞæá";
+ Text[ greek ] = "Míçìüíåõóç";
+ Text[ korean ] = "Àοë";
+ Text[ turkish ] = "Alýntý";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HTML_PRE
+{
+ Text = "Vorformatierter Text" ;
+ Text [ English ] = "Preformated Text" ;
+ Text [ dutch ] = "Reeds opgemaakte tekst" ;
+ Text [ english_us ] = "Preformatted Text" ;
+ Text [ swedish ] = "Förformaterad text" ;
+ Text [ danish ] = "Forudformateret tekst" ;
+ Text [ italian ] = "Testo preformattato" ;
+ Text [ spanish ] = "Texto preformateado" ;
+ Text [ french ] = "Texte préformaté" ;
+ Text [ portuguese ] = "Texto preformatado" ;
+ Text [ portuguese_brazilian ] = "Vorformatierter Text" ;
+ Text[ chinese_simplified ] = "Ô¤¸ñʽ»¯µÄÕýÎÄ";
+ Text[ russian ] = "Òåêñò â çàäàííîì ôîðìàòå";
+ Text[ polish ] = "Tekst niesformatowany";
+ Text[ japanese ] = "‘Ž®Ý’è‘O‚Ì÷½Ä";
+ Text[ chinese_traditional ] = "¹w®æ¦¡¤Æªº¤º¤å";
+ Text[ arabic ] = "äÕ ãäÓÞ ãÓÈÞÇð";
+ Text[ greek ] = "ÐñïìïñöïðïéçìÝíï êåßìåíï";
+ Text[ korean ] = "¼­½ÄÈ­µÈ ÅؽºÆ®";
+ Text[ turkish ] = "Önceden formatlanmýþ metin";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HTML_HR
+{
+ Text = "Horizontale Linie" ;
+ Text [ English ] = "Horizontal Line" ;
+ Text [ dutch ] = "Horizontale lijn" ;
+ Text [ english_us ] = "Horizontal Line" ;
+ Text [ swedish ] = "Horisontell linje" ;
+ Text [ danish ] = "Vandret linje" ;
+ Text [ italian ] = "Linea orizzontale" ;
+ Text [ spanish ] = "Línea horizontal" ;
+ Text [ french ] = "Ligne horizontale" ;
+ Text [ portuguese ] = "Linha horizontal" ;
+ Text [ portuguese_brazilian ] = "Horizontale Linie" ;
+ Text[ chinese_simplified ] = "ˮƽÏßÌõ";
+ Text[ russian ] = "Ãîðèçîíòàëüíàÿ ëèíèÿ";
+ Text[ polish ] = "Linia pozioma";
+ Text[ japanese ] = "‰¡ü";
+ Text[ chinese_traditional ] = "¤ô¥­½u±ø";
+ Text[ arabic ] = "ÎØ ÃÝÞí";
+ Text[ greek ] = "Ïñéæüíôéá ãñáììÞ";
+ Text[ korean ] = "¼öÆò ÁÙ";
+ Text[ turkish ] = "Yatay çizgi";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HTML_DD
+{
+ Text = "Listeninhalt" ;
+ Text [ English ] = "Definition Data" ;
+ Text [ dutch ] = "Lijstinhoud" ;
+ Text [ english_us ] = "List Contents" ;
+ Text [ swedish ] = "Listinnehåll" ;
+ Text [ danish ] = "Listeindhold" ;
+ Text [ italian ] = "Contenuto elenco" ;
+ Text [ spanish ] = "Contenido de lista" ;
+ Text [ french ] = "Contenu de liste" ;
+ Text [ portuguese ] = "Conteúdo da lista" ;
+ Text [ portuguese_brazilian ] = "Listeninhalt" ;
+ Text[ chinese_simplified ] = "ÁбíÄÚÈÝ";
+ Text[ russian ] = "Ñïèñîê ñîäåðæàíèÿ";
+ Text[ polish ] = "TreϾ listy";
+ Text[ japanese ] = "ؽĂ̓à—e";
+ Text[ chinese_traditional ] = "²M³æ¤º®e";
+ Text[ arabic ] = "ãÍÊæíÇÊ ÇáÞÇÆãÉ";
+ Text[ greek ] = "Ðåñéå÷üìåíï ëßóôáò";
+ Text[ korean ] = "¸®½ºÆ® ³»¿ë";
+ Text[ turkish ] = "Liste içeriði";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLCOLL_HTML_DT
+{
+ Text = "Listenkopf" ;
+ Text [ English ] = "Definition Term" ;
+ Text [ dutch ] = "Lijsttitel" ;
+ Text [ english_us ] = "List Heading" ;
+ Text [ swedish ] = "Listhuvud" ;
+ Text [ danish ] = "Listehoved" ;
+ Text [ italian ] = "Intestazione elenco" ;
+ Text [ spanish ] = "Encabezamiento de lista" ;
+ Text [ french ] = "En-tête de liste" ;
+ Text [ portuguese ] = "Cabeçalho da lista" ;
+ Text [ portuguese_brazilian ] = "Listenkopf" ;
+ Text[ chinese_simplified ] = "Áбí±êÌâ";
+ Text[ russian ] = "Çàãîëîâîê ñïèñêà";
+ Text[ polish ] = "Nag³ówek listy";
+ Text[ japanese ] = "ؽĂ̌©o‚µ";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "²M³æ¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÇáÞÇÆãÉ";
+ Text[ greek ] = "Êåöáëßäá êáôáëüãïõ";
+ Text[ korean ] = "¸®½ºÆ® Á¦¸ñ";
+ Text[ turkish ] = "Liste baþlýðý";
+};
+//programmatic para style names
+String STR_POCO_PRGM_STANDARD
+{
+ Text = "Standard" ;
+};
+String STR_POCO_PRGM_TEXT
+{
+ Text = "Text body" ;
+};
+String STR_POCO_PRGM_TEXT_IDENT
+{
+ Text = "First line indent" ;
+};
+String STR_POCO_PRGM_TEXT_NEGIDENT
+{
+ Text = "Hanging indent" ;
+};
+String STR_POCO_PRGM_TEXT_MOVE
+{
+ Text = "Text body indent" ;
+};
+String STR_POCO_PRGM_GREETING
+{
+ Text = "Salutation" ;
+};
+String STR_POCO_PRGM_SIGNATURE
+{
+ Text = "Signature" ;
+};
+String STR_POCO_PRGM_HEADLINE_BASE
+{
+ Text = "Heading" ;
+};
+String STR_POCO_PRGM_NUMBUL_BASE
+{
+ Text = "List" ;
+};
+String STR_POCO_PRGM_REGISTER_BASE
+{
+ Text = "Index" ;
+};
+String STR_POCO_PRGM_CONFRONTATION
+{
+ Text = "List Indent" ;
+};
+String STR_POCO_PRGM_MARGINAL
+{
+ Text = "Marginalia" ;
+};
+String STR_POCO_PRGM_HEADLINE1
+{
+ Text = "Heading 1" ;
+};
+String STR_POCO_PRGM_HEADLINE2
+{
+ Text = "Heading 2" ;
+};
+String STR_POCO_PRGM_HEADLINE3
+{
+ Text = "Heading 3" ;
+};
+String STR_POCO_PRGM_HEADLINE4
+{
+ Text = "Heading 4" ;
+};
+String STR_POCO_PRGM_HEADLINE5
+{
+ Text = "Heading 5" ;
+};
+String STR_POCO_PRGM_HEADLINE6
+{
+ Text = "Heading 6" ;
+};
+String STR_POCO_PRGM_HEADLINE7
+{
+ Text = "Heading 7" ;
+};
+String STR_POCO_PRGM_HEADLINE8
+{
+ Text = "Heading 8" ;
+};
+String STR_POCO_PRGM_HEADLINE9
+{
+ Text = "Heading 9" ;
+};
+String STR_POCO_PRGM_HEADLINE10
+{
+ Text = "Heading 10" ;
+};
+String STR_POCO_PRGM_NUM_LEVEL1S
+{
+ Text = "Numbering 1 Start" ;
+};
+String STR_POCO_PRGM_NUM_LEVEL1
+{
+ Text = "Numbering 1" ;
+};
+String STR_POCO_PRGM_NUM_LEVEL1E
+{
+ Text = "Numbering 1 End" ;
+};
+String STR_POCO_PRGM_NUM_NONUM1
+{
+ Text = "Numbering 1 Cont." ;
+};
+String STR_POCO_PRGM_NUM_LEVEL2S
+{
+ Text = "Numbering 2 Start" ;
+};
+String STR_POCO_PRGM_NUM_LEVEL2
+{
+ Text = "Numbering 2" ;
+};
+String STR_POCO_PRGM_NUM_LEVEL2E
+{
+ Text = "Numbering 2 End" ;
+};
+String STR_POCO_PRGM_NUM_NONUM2
+{
+ Text = "Numbering 2 Cont." ;
+};
+String STR_POCO_PRGM_NUM_LEVEL3S
+{
+ Text = "Numbering 3 Start" ;
+};
+String STR_POCO_PRGM_NUM_LEVEL3
+{
+ Text = "Numbering 3" ;
+};
+String STR_POCO_PRGM_NUM_LEVEL3E
+{
+ Text = "Numbering 3 End" ;
+};
+String STR_POCO_PRGM_NUM_NONUM3
+{
+ Text = "Numbering 3 Cont." ;
+};
+String STR_POCO_PRGM_NUM_LEVEL4S
+{
+ Text = "Numbering 4 Start" ;
+};
+String STR_POCO_PRGM_NUM_LEVEL4
+{
+ Text = "Numbering 4" ;
+};
+String STR_POCO_PRGM_NUM_LEVEL4E
+{
+ Text = "Numbering 4 End" ;
+};
+String STR_POCO_PRGM_NUM_NONUM4
+{
+ Text = "Numbering 4 Cont." ;
+};
+String STR_POCO_PRGM_NUM_LEVEL5S
+{
+ Text = "Numbering 5 Start" ;
+};
+String STR_POCO_PRGM_NUM_LEVEL5
+{
+ Text = "Numbering 5" ;
+};
+String STR_POCO_PRGM_NUM_LEVEL5E
+{
+ Text = "Numbering 5 End" ;
+};
+String STR_POCO_PRGM_NUM_NONUM5
+{
+ Text = "Numbering 5 Cont." ;
+};
+String STR_POCO_PRGM_BUL_LEVEL1S
+{
+ Text = "List 1 Start" ;
+};
+String STR_POCO_PRGM_BUL_LEVEL1
+{
+ Text = "List 1" ;
+};
+String STR_POCO_PRGM_BUL_LEVEL1E
+{
+ Text = "List 1 End" ;
+};
+String STR_POCO_PRGM_BUL_NONUM1
+{
+ Text = "List 1 Cont." ;
+};
+String STR_POCO_PRGM_BUL_LEVEL2S
+{
+ Text = "List 2 Start" ;
+};
+String STR_POCO_PRGM_BUL_LEVEL2
+{
+ Text = "List 2" ;
+};
+String STR_POCO_PRGM_BUL_LEVEL2E
+{
+ Text = "List 2 End" ;
+};
+String STR_POCO_PRGM_BUL_NONUM2
+{
+ Text = "List 2 Cont." ;
+};
+String STR_POCO_PRGM_BUL_LEVEL3S
+{
+ Text = "List 3 Start" ;
+};
+String STR_POCO_PRGM_BUL_LEVEL3
+{
+ Text = "List 3" ;
+};
+String STR_POCO_PRGM_BUL_LEVEL3E
+{
+ Text = "List 3 End" ;
+};
+String STR_POCO_PRGM_BUL_NONUM3
+{
+ Text = "List 3 Cont." ;
+};
+String STR_POCO_PRGM_BUL_LEVEL4S
+{
+ Text = "List 4 Start" ;
+};
+String STR_POCO_PRGM_BUL_LEVEL4
+{
+ Text = "List 4" ;
+};
+String STR_POCO_PRGM_BUL_LEVEL4E
+{
+ Text = "List 4 End" ;
+};
+String STR_POCO_PRGM_BUL_NONUM4
+{
+ Text = "List 4 Cont." ;
+};
+String STR_POCO_PRGM_BUL_LEVEL5S
+{
+ Text = "List 5 Start" ;
+};
+String STR_POCO_PRGM_BUL_LEVEL5
+{
+ Text = "List 5" ;
+};
+String STR_POCO_PRGM_BUL_LEVEL5E
+{
+ Text = "List 5 End" ;
+};
+String STR_POCO_PRGM_BUL_NONUM5
+{
+ Text = "List 5 Cont." ;
+};
+String STR_POCO_PRGM_HEADER
+{
+ Text = "Header" ;
+};
+String STR_POCO_PRGM_HEADERL
+{
+ Text = "Header left" ;
+};
+String STR_POCO_PRGM_HEADERR
+{
+ Text = "Header right" ;
+};
+String STR_POCO_PRGM_FOOTER
+{
+ Text = "Footer" ;
+};
+String STR_POCO_PRGM_FOOTERL
+{
+ Text = "Footer left" ;
+};
+String STR_POCO_PRGM_FOOTERR
+{
+ Text = "Footer right" ;
+};
+String STR_POCO_PRGM_TABLE
+{
+ Text = "Table Contents" ;
+};
+String STR_POCO_PRGM_TABLE_HDLN
+{
+ Text = "Table Heading" ;
+};
+String STR_POCO_PRGM_FRAME
+{
+ Text = "Frame contents" ;
+};
+String STR_POCO_PRGM_FOOTNOTE
+{
+ Text = "Footnote" ;
+};
+String STR_POCO_PRGM_ENDNOTE
+{
+ Text = "Endnote" ;
+};
+String STR_POCO_PRGM_LABEL
+{
+ Text = "Caption" ;
+};
+String STR_POCO_PRGM_LABEL_ABB
+{
+ Text = "Illustration" ;
+};
+String STR_POCO_PRGM_LABEL_TABLE
+{
+ Text = "Table" ;
+};
+String STR_POCO_PRGM_LABEL_FRAME
+{
+ Text = "Text" ;
+};
+String STR_POCO_PRGM_LABEL_DRAWING
+{
+ Text = "Drawing";
+};
+String STR_POCO_PRGM_JAKETADRESS
+{
+ Text = "Addressee" ;
+};
+String STR_POCO_PRGM_SENDADRESS
+{
+ Text = "Sender" ;
+};
+String STR_POCO_PRGM_TOX_IDXH
+{
+ Text = "Index Heading" ;
+};
+String STR_POCO_PRGM_TOX_IDX1
+{
+ Text = "Index 1" ;
+};
+String STR_POCO_PRGM_TOX_IDX2
+{
+ Text = "Index 2" ;
+};
+String STR_POCO_PRGM_TOX_IDX3
+{
+ Text = "Index 3" ;
+};
+String STR_POCO_PRGM_TOX_IDXBREAK
+{
+ Text = "Index Separator" ;
+};
+String STR_POCO_PRGM_TOX_CNTNTH
+{
+ Text = "Contents Heading" ;
+};
+String STR_POCO_PRGM_TOX_CNTNT1
+{
+ Text = "Contents 1" ;
+};
+String STR_POCO_PRGM_TOX_CNTNT2
+{
+ Text = "Contents 2" ;
+};
+String STR_POCO_PRGM_TOX_CNTNT3
+{
+ Text = "Contents 3" ;
+};
+String STR_POCO_PRGM_TOX_CNTNT4
+{
+ Text = "Contents 4" ;
+};
+String STR_POCO_PRGM_TOX_CNTNT5
+{
+ Text = "Contents 5" ;
+};
+String STR_POCO_PRGM_TOX_CNTNT6
+{
+ Text = "Contents 6" ;
+};
+String STR_POCO_PRGM_TOX_CNTNT7
+{
+ Text = "Contents 7" ;
+};
+String STR_POCO_PRGM_TOX_CNTNT8
+{
+ Text = "Contents 8" ;
+};
+String STR_POCO_PRGM_TOX_CNTNT9
+{
+ Text = "Contents 9" ;
+};
+String STR_POCO_PRGM_TOX_CNTNT10
+{
+ Text = "Contents 10" ;
+};
+String STR_POCO_PRGM_TOX_USERH
+{
+ Text = "User Index Heading" ;
+};
+String STR_POCO_PRGM_TOX_USER1
+{
+ Text = "User Index 1" ;
+};
+String STR_POCO_PRGM_TOX_USER2
+{
+ Text = "User Index 2" ;
+};
+String STR_POCO_PRGM_TOX_USER3
+{
+ Text = "User Index 3" ;
+};
+String STR_POCO_PRGM_TOX_USER4
+{
+ Text = "User Index 4" ;
+};
+String STR_POCO_PRGM_TOX_USER5
+{
+ Text = "User Index 5" ;
+};
+String STR_POCO_PRGM_TOX_USER6
+{
+ Text = "User Index 6" ;
+};
+String STR_POCO_PRGM_TOX_USER7
+{
+ Text = "User Index 7" ;
+};
+String STR_POCO_PRGM_TOX_USER8
+{
+ Text = "User Index 8" ;
+};
+String STR_POCO_PRGM_TOX_USER9
+{
+ Text = "User Index 9" ;
+};
+String STR_POCO_PRGM_TOX_USER10
+{
+ Text = "User Index 10" ;
+};
+String STR_POCO_PRGM_TOX_ILLUSH
+{
+ Text = "Illustration Index Heading";
+};
+String STR_POCO_PRGM_TOX_ILLUS1
+{
+ Text = "Illustration Index 1";
+};
+String STR_POCO_PRGM_TOX_OBJECTH
+{
+ Text = "Object index heading";
+};
+String STR_POCO_PRGM_TOX_OBJECT1
+{
+ Text = "Object index 1";
+};
+String STR_POCO_PRGM_TOX_TABLESH
+{
+ Text = "Table index heading";
+};
+String STR_POCO_PRGM_TOX_TABLES1
+{
+ Text = "Table index 1";
+};
+String STR_POCO_PRGM_TOX_AUTHORITIESH
+{
+ Text = "Bibliography Heading";
+};
+String STR_POCO_PRGM_TOX_AUTHORITIES1
+{
+ Text = "Bibliography 1";
+};
+
+String STR_POCO_PRGM_DOC_TITEL
+{
+ Text = "Title" ;
+};
+String STR_POCO_PRGM_DOC_SUBTITEL
+{
+ Text = "Subtitle" ;
+};
+String STR_POCO_PRGM_HTML_BLOCKQUOTE
+{
+ Text = "Quotations" ;
+};
+String STR_POCO_PRGM_HTML_PRE
+{
+ Text = "Preformatted Text" ;
+};
+String STR_POCO_PRGM_HTML_HR
+{
+ Text = "Horizontal Line" ;
+};
+String STR_POCO_PRGM_HTML_DD
+{
+ Text = "List Contents" ;
+};
+String STR_POCO_PRGM_HTML_DT
+{
+ Text = "List Heading" ;
+};
+
+//page style names
+String STR_POOLPAGE_STANDARD
+{
+ Text = "Standard" ;
+ Text [ English ] = "Standard" ;
+ Text [ dutch ] = "Standaard" ;
+ Text [ english_us ] = "Standard" ;
+ Text [ italian ] = "Standard" ;
+ Text [ spanish ] = "Predeterminado" ;
+ Text [ french ] = "Standard" ;
+ 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_POOLPAGE_FIRST
+{
+ Text = "Erste Seite" ;
+ Text [ English ] = "First page" ;
+ Text [ dutch ] = "Eerste pagina" ;
+ Text [ english_us ] = "First Page" ;
+ Text [ italian ] = "Prima pagina" ;
+ Text [ spanish ] = "Primera página" ;
+ Text [ french ] = "Première page" ;
+ Text [ swedish ] = "Första sidan" ;
+ Text [ danish ] = "Første side" ;
+ Text [ portuguese ] = "Primeira página" ;
+ Text [ portuguese_brazilian ] = "Erste Seite" ;
+ Text[ chinese_simplified ] = "Ê×Ò³";
+ Text[ russian ] = "Ïåðâàÿ ñòðàíèöà";
+ Text[ polish ] = "Pierwsza strona";
+ Text[ japanese ] = "ʼn‚ÌÍß°¼Þ";
+ Text[ chinese_traditional ] = "­º­¶";
+ Text[ arabic ] = "ÇáÕÝÍÉ ÇáÃæáì";
+ Text[ greek ] = "Ðñþôç óåëßäá";
+ Text[ korean ] = "ù¹ø° ÆäÀÌÁö";
+ Text[ turkish ] = "Ýlk sayfa";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLPAGE_LEFT
+{
+ Text = "Linke Seite" ;
+ Text [ English ] = "Left page" ;
+ Text [ english_us ] = "Left Page" ;
+ Text [ italian ] = "Pagina sinistra" ;
+ Text [ spanish ] = "Página izquierda" ;
+ Text [ french ] = "Page gauche" ;
+ Text [ dutch ] = "Linkerpagina" ;
+ Text [ swedish ] = "Vänster sida" ;
+ Text [ danish ] = "Venstre side" ;
+ Text [ portuguese ] = "Página esquerda" ;
+ Text [ portuguese_brazilian ] = "Linke Seite" ;
+ Text[ chinese_simplified ] = "×óÒ³";
+ Text[ russian ] = "Ëåâàÿ ñòðàíèöà";
+ Text[ polish ] = "Strona nieparzysta";
+ Text[ japanese ] = "¶Íß°¼Þ";
+ Text[ chinese_traditional ] = "¥ª­¶";
+ Text[ arabic ] = "ÇáÕÝÍÉ ÇáíÓÑì";
+ Text[ greek ] = "ÁñéóôåñÞ óåëßäá";
+ Text[ korean ] = "¿ÞÂÊ ÆäÀÌÁö";
+ Text[ turkish ] = "Sol sayfa";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLPAGE_RIGHT
+{
+ Text = "Rechte Seite" ;
+ Text [ English ] = "Right page" ;
+ Text [ english_us ] = "Right Page" ;
+ Text [ italian ] = "Pagina destra" ;
+ Text [ spanish ] = "Página derecha" ;
+ Text [ french ] = "Page droite" ;
+ Text [ dutch ] = "Rechterpagina" ;
+ Text [ swedish ] = "Höger sida" ;
+ Text [ danish ] = "Højre side" ;
+ Text [ portuguese ] = "Página direita" ;
+ Text [ portuguese_brazilian ] = "Rechte Seite" ;
+ Text[ chinese_simplified ] = "ÓÒÒ³";
+ Text[ russian ] = "Ïðàâàÿ ñòðàíèöà";
+ Text[ polish ] = "Strona parzysta";
+ Text[ japanese ] = "‰EÍß°¼Þ";
+ Text[ chinese_traditional ] = "¥k­¶";
+ Text[ arabic ] = "ÇáÕÝÍÉ Çáíãäì";
+ Text[ greek ] = "ÄåîéÜ óåëßäá";
+ Text[ korean ] = "¿À¸¥ÂÊ ÆäÀÌÁö";
+ Text[ turkish ] = "Sað sayfa";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLPAGE_JAKET
+{
+ Text = "Umschlag" ;
+ Text [ English ] = "Envelope" ;
+ Text [ dutch ] = "Envelop" ;
+ Text [ english_us ] = "Envelope" ;
+ Text [ italian ] = "Busta" ;
+ Text [ spanish ] = "Sobre" ;
+ Text [ french ] = "Enveloppe" ;
+ Text [ swedish ] = "Kuvert" ;
+ Text [ danish ] = "Konvolut" ;
+ Text [ portuguese ] = "Envelope" ;
+ Text [ portuguese_brazilian ] = "Umschlag" ;
+ Text[ chinese_simplified ] = "ÐÅ·â";
+ Text[ russian ] = "Êîíâåðò";
+ Text[ polish ] = "Koperta";
+ Text[ japanese ] = "••“›";
+ Text[ chinese_traditional ] = "«H«Ê";
+ Text[ arabic ] = "ÙÑÝ";
+ Text[ greek ] = "ÖÜêåëïò";
+ Text[ korean ] = "ºÀÅõ";
+ Text[ turkish ] = "Zarf";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLPAGE_REGISTER
+{
+ Text = "Verzeichnis" ;
+ Text [ English ] = "Register" ;
+ Text [ english_us ] = "Index" ;
+ Text [ italian ] = "Indice" ;
+ Text [ spanish ] = "Índice" ;
+ Text [ french ] = "Index" ;
+ Text [ dutch ] = "Index" ;
+ Text [ swedish ] = "Förteckning" ;
+ Text [ danish ] = "Indeks" ;
+ Text [ portuguese ] = "Índice" ;
+ Text [ portuguese_brazilian ] = "Verzeichnis" ;
+ Text[ chinese_simplified ] = "Ŀ¼";
+ Text[ russian ] = "Îãëàâëåíèå";
+ Text[ polish ] = "Indeks";
+ Text[ japanese ] = "õˆø";
+ Text[ chinese_traditional ] = "¥Ø¿ý";
+ Text[ arabic ] = "ÝåÑÓ";
+ Text[ greek ] = "ÅõñåôÞñéï";
+ Text[ korean ] = "»öÀÎ";
+ Text[ turkish ] = "Dizin";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLPAGE_HTML
+{
+ Text = "HTML" ;
+ Text [ English ] = "HTML" ;
+ Text [ dutch ] = "HTML" ;
+ Text [ english_us ] = "HTML" ;
+ Text [ italian ] = "HTML" ;
+ Text [ spanish ] = "HTML" ;
+ Text [ french ] = "HTML" ;
+ Text [ swedish ] = "HTML" ;
+ Text [ danish ] = "HTML" ;
+ Text [ portuguese ] = "HTML" ;
+ Text [ portuguese_brazilian ] = "HTML" ;
+ Text[ chinese_simplified ] = "HTML";
+ Text[ russian ] = "HTML";
+ Text[ polish ] = "HTML";
+ Text[ japanese ] = "HTML";
+ Text[ chinese_traditional ] = "HTML";
+ Text[ arabic ] = "HTML";
+ Text[ greek ] = "HTML";
+ Text[ korean ] = "HTML";
+ Text[ turkish ] = "HTML";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLPAGE_FOOTNOTE
+{
+ Text = "Fußnote" ;
+ Text [ English ] = "Footnote" ;
+ Text [ portuguese ] = "Nota de rodapé" ;
+ Text [ english_us ] = "Footnote" ;
+ Text [ portuguese_brazilian ] = "Fußnote" ;
+ Text [ swedish ] = "Fotnot" ;
+ Text [ danish ] = "Fodnote" ;
+ Text [ italian ] = "Nota a piè pagina" ;
+ Text [ spanish ] = "Nota al pie" ;
+ Text [ french ] = "Note de bas de page" ;
+ Text [ dutch ] = "Voetnoot" ;
+ Text[ chinese_simplified ] = "×¢½Å";
+ Text[ russian ] = "Ñíîñêà";
+ Text[ polish ] = "Przypis dolny";
+ Text[ japanese ] = "‹r’";
+ Text[ chinese_traditional ] = "µù¸}";
+ Text[ arabic ] = "ÍÇÔíÉ ÓÝáíÉ";
+ Text[ greek ] = "Õðïóçìåßùóç";
+ Text[ korean ] = "°¢ÁÖ";
+ Text[ turkish ] = "Dipnot";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLPAGE_ENDNOTE
+{
+ Text = "Endnote" ;
+ Text [ English ] = "Endnote" ;
+ Text [ portuguese ] = "Nota final" ;
+ Text [ english_us ] = "Endnote" ;
+ Text [ portuguese_brazilian ] = "Endnote" ;
+ Text [ swedish ] = "Slutnot" ;
+ Text [ danish ] = "Slutnote" ;
+ Text [ italian ] = "Nota di chiusura" ;
+ Text [ spanish ] = "Nota al final" ;
+ Text [ french ] = "Note de fin" ;
+ Text [ dutch ] = "Eindnoot" ;
+ Text[ chinese_simplified ] = "βע";
+ Text[ russian ] = "Êîíöåâàÿ ñíîñêà";
+ Text[ polish ] = "Przypis koñcowy";
+ Text[ japanese ] = "•¶––‹r’";
+ Text[ chinese_traditional ] = "§Àª`";
+ Text[ arabic ] = "ÊÚáíÞ ÎÊÇãí";
+ Text[ greek ] = "Óçìåßùóç ôÝëïõò";
+ Text[ korean ] = "¹ÌÁÖ";
+ Text[ turkish ] = "Sonnot";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLPAGE_PRGM_STANDARD
+{
+ Text = "Standard" ;
+};
+String STR_POOLPAGE_PRGM_FIRST
+{
+ Text = "First Page" ;
+};
+String STR_POOLPAGE_PRGM_LEFT
+{
+ Text = "Left Page" ;
+};
+String STR_POOLPAGE_PRGM_RIGHT
+{
+ Text = "Right Page" ;
+};
+String STR_POOLPAGE_PRGM_JAKET
+{
+ Text = "Envelope" ;
+};
+String STR_POOLPAGE_PRGM_REGISTER
+{
+ Text = "Index" ;
+};
+String STR_POOLPAGE_PRGM_HTML
+{
+ Text = "HTML" ;
+};
+String STR_POOLPAGE_PRGM_FOOTNOTE
+{
+ Text = "Footnote" ;
+};
+String STR_POOLPAGE_PRGM_ENDNOTE
+{
+ Text = "Endnote" ;
+};
+/*
+ Numerierungs Regeln
+*/
+String STR_POOLNUMRULE_NUM1
+{
+ Text = "Nummerierung 1" ;
+ Text [ English ] = "Numbering 1" ;
+ Text [ dutch ] = "Nummering 1" ;
+ Text [ english_us ] = "Numbering 1" ;
+ Text [ italian ] = "Numerazione 1" ;
+ Text [ spanish ] = "Numeración 1" ;
+ Text [ french ] = "Numérotation 1" ;
+ Text [ swedish ] = "Numrering 1" ;
+ Text [ danish ] = "Nummerering 1" ;
+ Text [ portuguese ] = "Numeração 1" ;
+ Text [ portuguese_brazilian ] = "Numerierung 1" ;
+ Text[ chinese_simplified ] = "񅧏 1";
+ Text[ russian ] = "Íóìåðàöèÿ 1";
+ Text[ polish ] = "Numeracja 1";
+ Text[ japanese ] = "”Ô†•t‚¯ 1";
+ Text[ chinese_traditional ] = "½s¸¹ 1";
+ Text[ arabic ] = "ÇáÊÑÞíã 1";
+ Text[ greek ] = "Áñßèìçóç 1";
+ Text[ korean ] = "¹øÈ£ 1";
+ Text[ turkish ] = "Numaralama 1";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLNUMRULE_NUM2
+{
+ Text = "Nummerierung 2" ;
+ Text [ English ] = "Numbering 2" ;
+ Text [ dutch ] = "Nummering 2" ;
+ Text [ english_us ] = "Numbering 2" ;
+ Text [ italian ] = "Numerazione 2" ;
+ Text [ spanish ] = "Numeración 2" ;
+ Text [ french ] = "Numérotation 2" ;
+ Text [ swedish ] = "Numrering 2" ;
+ Text [ danish ] = "Nummerering 2" ;
+ Text [ portuguese ] = "Numeração 2" ;
+ Text [ portuguese_brazilian ] = "Numerierung 2" ;
+ Text[ chinese_simplified ] = "񅧏 2";
+ Text[ russian ] = "Íóìåðàöèÿ 2";
+ Text[ polish ] = "Numeracja 2";
+ Text[ japanese ] = "”Ô†•t‚¯ 2";
+ Text[ chinese_traditional ] = "½s¸¹ 2";
+ Text[ arabic ] = "ÇáÊÑÞíã 2";
+ Text[ greek ] = "Áñßèìçóç 2";
+ Text[ korean ] = "¹øÈ£ 2";
+ Text[ turkish ] = "Numaralama 2";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLNUMRULE_NUM3
+{
+ Text = "Nummerierung 3" ;
+ Text [ English ] = "Numbering 3" ;
+ Text [ dutch ] = "Nummering 3" ;
+ Text [ english_us ] = "Numbering 3" ;
+ Text [ italian ] = "Numerazione 3" ;
+ Text [ spanish ] = "Numeración 3" ;
+ Text [ french ] = "Numérotation 3" ;
+ Text [ swedish ] = "Numrering 3" ;
+ Text [ danish ] = "Nummerering 3" ;
+ Text [ portuguese ] = "Numeração 3" ;
+ Text [ portuguese_brazilian ] = "Numerierung 3" ;
+ Text[ chinese_simplified ] = "񅧏 3";
+ Text[ russian ] = "Íóìåðàöèÿ 3";
+ Text[ polish ] = "Numeracja 3";
+ Text[ japanese ] = "”Ô†•t‚¯ 3";
+ Text[ chinese_traditional ] = "½s¸¹ 3";
+ Text[ arabic ] = "ÇáÊÑÞíã 3";
+ Text[ greek ] = "Áñßèìçóç 3";
+ Text[ korean ] = "¹øÈ£ 3";
+ Text[ turkish ] = "Numaralama 3";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLNUMRULE_NUM4
+{
+ Text = "Nummerierung 4" ;
+ Text [ English ] = "Numbering 4" ;
+ Text [ dutch ] = "Nummering 4" ;
+ Text [ english_us ] = "Numbering 4" ;
+ Text [ italian ] = "Numerazione 4" ;
+ Text [ spanish ] = "Numeración 4" ;
+ Text [ french ] = "Numérotation 4" ;
+ Text [ swedish ] = "Numrering 4" ;
+ Text [ danish ] = "Nummerering 4" ;
+ Text [ portuguese ] = "Numeração 4" ;
+ Text [ portuguese_brazilian ] = "Numerierung 4" ;
+ Text[ chinese_simplified ] = "񅧏 4";
+ Text[ russian ] = "Íóìåðàöèÿ 4";
+ Text[ polish ] = "Numeracja 4";
+ Text[ japanese ] = "”Ô†•t‚¯ 4";
+ Text[ chinese_traditional ] = "½s¸¹ 4";
+ Text[ arabic ] = "ÇáÊÑÞíã 4";
+ Text[ greek ] = "Áñßèìçóç 4";
+ Text[ korean ] = "¹øÈ£ 4";
+ Text[ turkish ] = "Numaralama 4";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLNUMRULE_NUM5
+{
+ Text = "Nummerierung 5" ;
+ Text [ English ] = "Numbering 5" ;
+ Text [ dutch ] = "Nummering 5" ;
+ Text [ english_us ] = "Numbering 5" ;
+ Text [ italian ] = "Numerazione 5" ;
+ Text [ spanish ] = "Numeración 5" ;
+ Text [ french ] = "Numérotation 5" ;
+ Text [ swedish ] = "Numrering 5" ;
+ Text [ danish ] = "Nummerering 5" ;
+ Text [ portuguese ] = "Numeração 5" ;
+ Text [ portuguese_brazilian ] = "Numerierung 5" ;
+ Text[ chinese_simplified ] = "񅧏 5";
+ Text[ russian ] = "Íóìåðàöèÿ 5";
+ Text[ polish ] = "Numeracja 5";
+ Text[ japanese ] = "”Ô†•t‚¯ 5";
+ Text[ chinese_traditional ] = "½s¸¹ 5";
+ Text[ arabic ] = "ÇáÊÑÞíã 5";
+ Text[ greek ] = "Áñßèìçóç 5";
+ Text[ korean ] = "¹øÈ£ 5";
+ Text[ turkish ] = "Numaralama 5";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLNUMRULE_BUL1
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 1 : Aufzõhlung 1 */
+ Text = "Aufzählung 1" ;
+ Text [ English ] = "Bullet 1" ;
+ Text [ dutch ] = "Opsomming 1" ;
+ Text [ english_us ] = "List 1" ;
+ Text [ italian ] = "Elenco 1" ;
+ Text [ spanish ] = "Enumeración 1" ;
+ Text [ french ] = "Puce 1" ;
+ Text [ swedish ] = "Uppräkning 1" ;
+ Text [ danish ] = "Punktopstilling 1" ;
+ Text [ portuguese ] = "Lista 1" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 1" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿±àºÅ 1";
+ Text[ russian ] = "Ñïèñîê 1";
+ Text[ polish ] = "Lista 1";
+ Text[ japanese ] = "‰Óð‘‚« 1";
+ Text[ chinese_traditional ] = "¶µ¥Ø½s¸¹ 1";
+ Text[ arabic ] = "ÊÚÏÇÏ 1";
+ Text[ greek ] = "ÊáôÜëïãïò 1";
+ Text[ korean ] = "¸®½ºÆ® 1";
+ Text[ turkish ] = "Liste 1";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLNUMRULE_BUL2
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 1 : Aufzõhlung 1 */
+ Text = "Aufzählung 2" ;
+ Text [ English ] = "Bullet 2" ;
+ Text [ dutch ] = "Opsomming 2" ;
+ Text [ english_us ] = "List 2" ;
+ Text [ italian ] = "Elenco 2" ;
+ Text [ spanish ] = "Enumeración 2" ;
+ Text [ french ] = "Puce 2" ;
+ Text [ swedish ] = "Uppräkning 2" ;
+ Text [ danish ] = "Punktopstilling 2" ;
+ Text [ portuguese ] = "Lista 2" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 2" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿±àºÅ 2";
+ Text[ russian ] = "Ñïèñîê 2";
+ Text[ polish ] = "Lista 2";
+ Text[ japanese ] = "‰Óð‘‚« 2";
+ Text[ chinese_traditional ] = "¶µ¥Ø½s¸¹ 2";
+ Text[ arabic ] = "ÊÚÏÇÏ 2";
+ Text[ greek ] = "ÊáôÜëïãïò 2";
+ Text[ korean ] = "¸®½ºÆ® 2";
+ Text[ turkish ] = "Liste 2";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLNUMRULE_BUL3
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 1 : Aufzõhlung 1 */
+ Text = "Aufzählung 3" ;
+ Text [ English ] = "Bullet 3" ;
+ Text [ dutch ] = "Opsomming 3" ;
+ Text [ english_us ] = "List 3" ;
+ Text [ italian ] = "Elenco 3" ;
+ Text [ spanish ] = "Enumeración 3" ;
+ Text [ french ] = "Puce 3" ;
+ Text [ swedish ] = "Uppräkning 3" ;
+ Text [ danish ] = "Punktopstilling 3" ;
+ Text [ portuguese ] = "Lista 3" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 3" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿±àºÅ 3";
+ Text[ russian ] = "Ñïèñîê 3";
+ Text[ polish ] = "Lista 3";
+ Text[ japanese ] = "‰Óð‘‚« 3";
+ Text[ chinese_traditional ] = "¶µ¥Ø½s¸¹ 3";
+ Text[ arabic ] = "ÊÚÏÇÏ 3";
+ Text[ greek ] = "ÊáôÜëïãïò 3";
+ Text[ korean ] = "¸®½ºÆ® 3";
+ Text[ turkish ] = "Liste 3";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLNUMRULE_BUL4
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 1 : Aufzõhlung 4 */
+ Text = "Aufzählung 4" ;
+ Text [ English ] = "Bullet 4" ;
+ Text [ dutch ] = "Opsomming 4" ;
+ Text [ english_us ] = "List 4" ;
+ Text [ italian ] = "Elenco 4" ;
+ Text [ spanish ] = "Enumeración 4" ;
+ Text [ french ] = "Puce 4" ;
+ Text [ swedish ] = "Uppräkning 4" ;
+ Text [ danish ] = "Punktopstilling 4" ;
+ Text [ portuguese ] = "Lista 4" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 4" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿±àºÅ 4";
+ Text[ russian ] = "Ñïèñîê 4";
+ Text[ polish ] = "Lista 4";
+ Text[ japanese ] = "‰Óð‘‚« 4";
+ Text[ chinese_traditional ] = "¶µ¥Ø½s¸¹ 4";
+ Text[ arabic ] = "ÊÚÏÇÏ 4";
+ Text[ greek ] = "ÊáôÜëïãïò 4";
+ Text[ korean ] = "¸®½ºÆ® 4";
+ Text[ turkish ] = "Liste 4";
+ Text[ language_user1 ] = " ";
+};
+String STR_POOLNUMRULE_BUL5
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Aufzählung 5 : Aufzõhlung 5 */
+ Text = "Aufzählung 5" ;
+ Text [ English ] = "Bullet 5" ;
+ Text [ dutch ] = "Opsomming 5" ;
+ Text [ english_us ] = "List 5" ;
+ Text [ italian ] = "Elenco 5" ;
+ Text [ spanish ] = "Enumeración 5" ;
+ Text [ french ] = "Puce 5" ;
+ Text [ swedish ] = "Uppräkning 5" ;
+ Text [ danish ] = "Punktopstilling 5" ;
+ Text [ portuguese ] = "Lista 5" ;
+ Text [ portuguese_brazilian ] = "Aufzählung 51" ;
+ Text[ chinese_simplified ] = "ÏîÄ¿±àºÅ 5";
+ Text[ russian ] = "Ñïèñîê 5";
+ Text[ polish ] = "Lista 5";
+ Text[ japanese ] = "‰Óð‘‚« 5";
+ Text[ chinese_traditional ] = "¶µ¥Ø½s¸¹ 5";
+ Text[ arabic ] = "ÊÚÏÇÏ 5";
+ Text[ greek ] = "ÊáôÜëïãïò 5";
+ Text[ korean ] = "¸®½ºÆ® 5";
+ Text[ turkish ] = "Liste 5";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_POOLNUMRULE_PRGM_NUM1
+{
+ Text = "Numbering 1" ;
+};
+String STR_POOLNUMRULE_PRGM_NUM2
+{
+ Text = "Numbering 2" ;
+};
+String STR_POOLNUMRULE_PRGM_NUM3
+{
+ Text = "Numbering 3" ;
+};
+String STR_POOLNUMRULE_PRGM_NUM4
+{
+ Text = "Numbering 4" ;
+};
+String STR_POOLNUMRULE_PRGM_NUM5
+{
+ Text = "Numbering 5" ;
+};
+String STR_POOLNUMRULE_PRGM_BUL1
+{
+ Text = "List 1" ;
+};
+String STR_POOLNUMRULE_PRGM_BUL2
+{
+ Text = "List 2" ;
+};
+String STR_POOLNUMRULE_PRGM_BUL3
+{
+ Text = "List 3" ;
+};
+String STR_POOLNUMRULE_PRGM_BUL4
+{
+ Text = "List 4" ;
+};
+String STR_POOLNUMRULE_PRGM_BUL5
+{
+ Text = "List 5" ;
+};
+
diff --git a/sw/source/ui/utlui/prcntfld.cxx b/sw/source/ui/utlui/prcntfld.cxx
new file mode 100644
index 000000000000..9805bd348915
--- /dev/null
+++ b/sw/source/ui/utlui/prcntfld.cxx
@@ -0,0 +1,486 @@
+/*************************************************************************
+ *
+ * $RCSfile: prcntfld.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 ---------------------------------------------------------------
+
+#pragma hdrstop
+
+#include "prcntfld.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+PercentField::PercentField( Window* pWin, const ResId& rResId ) :
+ MetricField ( pWin, rResId ),
+
+ eOldUnit (FUNIT_NONE),
+ nOldMin (0),
+ nOldMax (0),
+ nLastPercent(-1L),
+ nLastValue (-1L)
+{
+
+ nOldSpinSize = GetSpinSize();
+ nRefValue = Denormalize(MetricField::GetMax(FUNIT_TWIP));
+ nOldDigits = GetDecimalDigits();
+ SetCustomUnitText('%');
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void PercentField::SetRefValue(long nValue)
+{
+ long nRealValue = GetRealValue(eOldUnit);
+
+ nRefValue = nValue;
+
+ if (GetUnit() == FUNIT_CUSTOM)
+ SetValue(nRealValue, eOldUnit);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void PercentField::ShowPercent(BOOL bPercent)
+{
+ if ((bPercent && GetUnit() == FUNIT_CUSTOM) ||
+ (!bPercent && GetUnit() != FUNIT_CUSTOM))
+ return;
+
+ long nOldValue;
+
+ if (bPercent)
+ {
+ long nAktWidth, nPercent;
+
+ nOldValue = GetValue();
+
+ eOldUnit = GetUnit();
+ nOldDigits = GetDecimalDigits();
+ nOldMin = GetMin();
+ nOldMax = GetMax();
+ nOldSpinSize = GetSpinSize();
+#ifndef VCL
+ nOldBaseValue = nBaseValue;
+#else
+ nOldBaseValue = GetBaseValue();
+#endif
+ SetUnit(FUNIT_CUSTOM);
+ SetDecimalDigits( 0 );
+
+ nAktWidth = ConvertValue(nOldMin, 0, nOldDigits, eOldUnit, FUNIT_TWIP);
+ // Um 0.5 Prozent aufrunden
+ nPercent = ((nAktWidth * 10) / nRefValue + 5) / 10;
+
+ MetricField::SetMin(Max(1L, nPercent));
+ MetricField::SetMax(100);
+ SetSpinSize(5);
+#ifndef VCL
+ nBaseValue = 0;
+#else
+ MetricField::SetBaseValue(0);
+#endif
+ if (nOldValue != nLastValue)
+ {
+ nAktWidth = ConvertValue(nOldValue, 0, nOldDigits, eOldUnit, FUNIT_TWIP);
+ nPercent = ((nAktWidth * 10) / nRefValue + 5) / 10;
+ MetricField::SetValue(nPercent);
+ nLastPercent = nPercent;
+ nLastValue = nOldValue;
+ }
+ else
+ MetricField::SetValue(nLastPercent);
+// SetValue(100, FUNIT_CUSTOM);
+ }
+ else
+ {
+ long nOldPercent = GetValue(FUNIT_CUSTOM);
+
+ nOldValue = Convert(GetValue(), GetUnit(), eOldUnit);
+
+ SetUnit(eOldUnit);
+ SetDecimalDigits(nOldDigits);
+ MetricField::SetMin(nOldMin);
+ MetricField::SetMax(nOldMax);
+ SetSpinSize(nOldSpinSize);
+#ifndef VCL
+ nBaseValue = nOldBaseValue;
+#else
+ MetricField::SetBaseValue(nOldBaseValue);
+#endif
+
+ if (nOldPercent != nLastPercent)
+ {
+ SetValue(nOldValue, eOldUnit);
+ nLastPercent = nOldPercent;
+ nLastValue = nOldValue;
+ }
+ else
+ SetValue(nLastValue, eOldUnit);
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void PercentField::SetValue(long nNewValue, FieldUnit eInUnit)
+{
+ if (GetUnit() != FUNIT_CUSTOM || eInUnit == FUNIT_CUSTOM)
+ MetricField::SetValue(Convert(nNewValue, eInUnit, GetUnit()));
+
+ else
+ {
+ // Ausgangswert ueberschreiben, nicht spaeter restaurieren
+ long nPercent, nAktWidth;
+ if(eInUnit == FUNIT_TWIP)
+ {
+ nAktWidth = ConvertValue(nNewValue, 0, nOldDigits, FUNIT_TWIP, FUNIT_TWIP);
+ }
+ else
+ {
+ long nValue = Convert(nNewValue, eInUnit, eOldUnit);
+ nAktWidth = ConvertValue(nValue, 0, nOldDigits, eOldUnit, FUNIT_TWIP);
+ }
+ nPercent = ((nAktWidth * 10) / nRefValue + 5) / 10;
+ MetricField::SetValue(nPercent);
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void PercentField::SetUserValue( long nNewValue, FieldUnit eInUnit )
+{
+ if (GetUnit() != FUNIT_CUSTOM || eInUnit == FUNIT_CUSTOM)
+ MetricField::SetUserValue(Convert(nNewValue, eInUnit, GetUnit()),FUNIT_NONE);
+
+ else
+ {
+ // Ausgangswert ueberschreiben, nicht spaeter restaurieren
+ long nPercent, nAktWidth;
+ if(eInUnit == FUNIT_TWIP)
+ {
+ nAktWidth = ConvertValue(nNewValue, 0, nOldDigits, FUNIT_TWIP, FUNIT_TWIP);
+ }
+ else
+ {
+ long nValue = Convert(nNewValue, eInUnit, eOldUnit);
+ nAktWidth = ConvertValue(nValue, 0, nOldDigits, eOldUnit, FUNIT_TWIP);
+ }
+ nPercent = ((nAktWidth * 10) / nRefValue + 5) / 10;
+ MetricField::SetUserValue(nPercent,FUNIT_NONE);
+ }
+
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void PercentField::SetBaseValue(long nNewValue, FieldUnit eInUnit)
+{
+ if (GetUnit() == FUNIT_CUSTOM)
+ nOldBaseValue = ConvertValue(nNewValue, 0, nOldDigits, eInUnit, eOldUnit);
+ else
+ MetricField::SetBaseValue(nNewValue, eInUnit);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+long PercentField::GetValue( FieldUnit eOutUnit )
+{
+ return Convert(MetricField::GetValue(), GetUnit(), eOutUnit);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void PercentField::SetMin(long nNewMin, FieldUnit eInUnit)
+{
+ if (GetUnit() != FUNIT_CUSTOM)
+ MetricField::SetMin(nNewMin, eInUnit);
+ else
+ {
+ if (eInUnit == FUNIT_NONE)
+ eInUnit = eOldUnit;
+ nOldMin = Convert(nNewMin, eInUnit, eOldUnit);
+
+ long nPercent = Convert(nNewMin, eInUnit, FUNIT_CUSTOM);
+ MetricField::SetMin(Max(1L, nPercent));
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void PercentField::SetMax(long nNewMax, FieldUnit eInUnit)
+{
+ if (GetUnit() != FUNIT_CUSTOM)
+ MetricField::SetMax(nNewMax, eInUnit);
+ else
+ {
+ if (eInUnit == FUNIT_NONE)
+ eInUnit = eOldUnit;
+// SetRefValue(Convert(nNewMax, eInUnit, FUNIT_TWIP));
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+long PercentField::Normalize(long nValue)
+{
+ if (GetUnit() != FUNIT_CUSTOM)
+ nValue = MetricField::Normalize(nValue);
+ else
+ nValue = nValue * ImpPower10(nOldDigits);
+
+ return nValue;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+long PercentField::Denormalize(long nValue)
+{
+ if (GetUnit() != FUNIT_CUSTOM)
+ nValue = MetricField::Denormalize(nValue);
+ else
+ {
+ long nFactor = ImpPower10(nOldDigits);
+ nValue = ((nValue+(nFactor/2)) / nFactor);
+ }
+
+ return nValue;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+BOOL PercentField::IsValueModified()
+{
+ if (GetUnit() == FUNIT_CUSTOM)
+ return TRUE;
+ else
+ return MetricField::IsValueModified();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+long PercentField::ImpPower10( USHORT n )
+{
+ USHORT i;
+ long nValue = 1;
+
+ for ( i=0; i < n; i++ )
+ nValue *= 10;
+
+ return nValue;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+long PercentField::GetRealValue(FieldUnit eOutUnit)
+{
+ if (GetUnit() != FUNIT_CUSTOM)
+ return GetValue(eOutUnit);
+ else
+ return Convert(GetValue(), GetUnit(), eOutUnit);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+long PercentField::Convert(long nValue, FieldUnit eInUnit, FieldUnit eOutUnit)
+{
+ if (eInUnit == eOutUnit ||
+ (eInUnit == FUNIT_NONE && eOutUnit == GetUnit()) ||
+ (eOutUnit == FUNIT_NONE && eInUnit == GetUnit()))
+ return nValue;
+
+ if (eInUnit == FUNIT_CUSTOM)
+ {
+ // Umrechnen in Metrik
+ long nTwipValue = (nRefValue * nValue + 50) / 100;
+
+ if (eOutUnit == FUNIT_TWIP) // Nur wandeln, wenn unbedingt notwendig
+ return Normalize(nTwipValue);
+ else
+ return ConvertValue(Normalize(nTwipValue), 0, nOldDigits, FUNIT_TWIP, eOutUnit);
+ }
+
+ if (eOutUnit == FUNIT_CUSTOM)
+ {
+ // Umrechnen in Prozent
+ long nAktWidth;
+ nValue = Denormalize(nValue);
+
+ if (eInUnit == FUNIT_TWIP) // Nur wandeln, wenn unbedingt notwendig
+ nAktWidth = nValue;
+ else
+ nAktWidth = ConvertValue(nValue, 0, nOldDigits, eInUnit, FUNIT_TWIP);
+ // Um 0.5 Prozent runden
+ return ((nAktWidth * 1000) / nRefValue + 5) / 10;
+ }
+
+ return ConvertValue(nValue, 0, nOldDigits, eInUnit, eOutUnit);
+}
+
+/*************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.21 2000/09/18 16:06:19 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.20 1997/11/07 15:38:34 OM
+ Aufgeraeumt
+
+
+ Rev 1.19 07 Nov 1997 16:38:34 OM
+ Aufgeraeumt
+
+ Rev 1.18 19 Sep 1997 11:06:54 OM
+ VCL: SetBaseValue an Basisklasse rufen!
+
+ Rev 1.17 06 Aug 1997 15:00:48 TRI
+ VCL: Anpassungen
+
+ Rev 1.16 04 Dec 1996 15:56:46 OS
+ SetValue stimmt wieder
+
+ Rev 1.15 02 Dec 1996 10:33:50 OS
+ im SetValue immer runden
+
+ Rev 1.14 28 Nov 1996 15:24:54 OM
+ #32021# Bei zu spaetem RefValue setzen: MetricField neu berechnen und anzeigen
+
+ Rev 1.13 07 Nov 1996 11:48:18 OM
+ Rundung verbessert
+
+ Rev 1.12 29 Oct 1996 17:21:02 OM
+ Rundung verbessert
+
+ Rev 1.11 11 Sep 1996 15:10:10 OM
+ SetMin korrigiert
+
+ Rev 1.10 10 Sep 1996 17:03:00 OM
+ Prozentfelder
+
+ Rev 1.9 09 Sep 1996 16:57:26 OM
+ Prozentuale Spalten
+
+ Rev 1.8 07 Sep 1996 13:47:38 OS
+ HACK fuer SetValue
+
+ Rev 1.7 17 Jul 1996 15:32:40 OM
+ Aufgeraeumt
+
+ Rev 1.6 17 Jul 1996 15:22:58 OM
+ Anfangswert in Prozent konvertieren
+
+ Rev 1.5 25 Jun 1996 17:11:50 OM
+ Relative Grafiken
+
+ Rev 1.4 20 Jun 1996 18:07:00 OM
+ Relative Rahmen
+
+ Rev 1.3 19 Jun 1996 17:46:02 OM
+ Relative Tabellenbreite
+
+ Rev 1.2 18 Jun 1996 16:27:54 OM
+ Neue Segs
+
+ Rev 1.1 18 Jun 1996 16:27:10 OM
+ Relative Tabellenbreite
+
+ Rev 1.0 17 Jun 1996 15:07:32 OM
+ Initial revision.
+
+ Rev 1.1 17 Jun 1996 15:03:54 OM
+ Neue Segs
+
+ Rev 1.0 17 Jun 1996 15:02:10 OM
+ Initial revision.
+
+*************************************************************************/
+
diff --git a/sw/source/ui/utlui/shdwcrsr.cxx b/sw/source/ui/utlui/shdwcrsr.cxx
new file mode 100644
index 000000000000..cb6104f3f519
--- /dev/null
+++ b/sw/source/ui/utlui/shdwcrsr.cxx
@@ -0,0 +1,196 @@
+/*************************************************************************
+ *
+ * $RCSfile: shdwcrsr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SV_WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+
+#include "swtypes.hxx"
+#include "shdwcrsr.hxx"
+
+
+SwShadowCursor::~SwShadowCursor()
+{
+ if( USHRT_MAX != nOldMode )
+ DrawCrsr( aOldPt, nOldHeight, nOldMode );
+}
+
+void SwShadowCursor::SetPos( const Point& rPt, long nHeight, USHORT nMode )
+{
+ Point aPt( pWin->LogicToPixel( rPt ));
+ nHeight = pWin->LogicToPixel( Size( 0, nHeight )).Height();
+ if( aOldPt != aPt || nOldHeight != nHeight || nOldMode != nMode )
+ {
+ if( USHRT_MAX != nOldMode )
+ DrawCrsr( aOldPt, nOldHeight, nOldMode );
+
+ DrawCrsr( aPt, nHeight, nMode );
+ nOldMode = nMode;
+ nOldHeight = nHeight;
+ aOldPt = aPt;
+ }
+}
+
+void SwShadowCursor::DrawTri( const Point& rPt, long nHeight, BOOL bLeft )
+{
+ USHORT nLineDiff = ( nHeight / 2 );
+ USHORT nLineDiffHalf = nLineDiff / 2;
+
+ // Punkt oben
+ Point aPt1( (bLeft ? rPt.X() - 3 : rPt.X() + 3),
+ rPt.Y() + nLineDiffHalf );
+ // Punkt unten
+ Point aPt2( aPt1.X(), aPt1.Y() + nHeight - nLineDiff - 1 );
+ short nDiff = bLeft ? -1 : 1;
+ while( aPt1.Y() <= aPt2.Y() )
+ {
+ pWin->DrawLine( aPt1, aPt2 );
+ aPt1.Y()++, aPt2.Y()--;
+ aPt2.X() = aPt1.X() += nDiff;
+ }
+}
+
+void SwShadowCursor::DrawCrsr( const Point& rPt, long nHeight, USHORT nMode )
+{
+ nHeight = (((nHeight / 4)+1) * 4) + 1;
+
+ pWin->Push();
+
+ pWin->SetMapMode( MAP_PIXEL );
+ pWin->SetRasterOp( ROP_XOR );
+
+ pWin->SetLineColor( Color( aCol.GetColor() ^ COL_WHITE ) );
+
+ // 1. der Strich:
+ pWin->DrawLine( Point( rPt.X(), rPt.Y() + 1),
+ Point( rPt.X(), rPt.Y() - 2 + nHeight ));
+
+ // 2. das Dreieck
+ if( HORI_LEFT == nMode || HORI_CENTER == nMode ) // Pfeil nach rechts
+ DrawTri( rPt, nHeight, FALSE );
+ if( HORI_RIGHT == nMode || HORI_CENTER == nMode ) // Pfeil nach links
+ DrawTri( rPt, nHeight, TRUE );
+
+ pWin->Pop();
+}
+
+void SwShadowCursor::Paint()
+{
+ if( USHRT_MAX != nOldMode )
+ DrawCrsr( aOldPt, nOldHeight, nOldMode );
+}
+
+Rectangle SwShadowCursor::GetRect() const
+{
+ long nH = nOldHeight;
+ Point aPt( aOldPt );
+
+ nH = (((nH / 4)+1) * 4) + 1;
+ USHORT nWidth = nH / 4 + 3 + 1;
+
+ Size aSz( nWidth, nH );
+
+ if( HORI_RIGHT == nOldMode )
+ aPt.X() -= aSz.Width();
+ else if( HORI_CENTER == nOldMode )
+ {
+ aPt.X() -= aSz.Width();
+ aSz.Width() *= 2;
+ }
+
+ return pWin->PixelToLogic( Rectangle( aPt, aSz ) );
+}
+
+/*************************************************************************
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.5 2000/09/18 16:06:19 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.4 2000/02/11 15:00:59 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.3 1999/09/20 10:45:53 os
+ Color changes
+
+ Revision 1.2 1997/11/03 15:10:26 JP
+ neu: Optionen/-Page/Basic-Schnittst. fuer ShadowCursor
+
+
+ Rev 1.1 03 Nov 1997 16:10:26 JP
+ neu: Optionen/-Page/Basic-Schnittst. fuer ShadowCursor
+
+ Rev 1.0 24 Oct 1997 18:31:58 JP
+ Cursor fuers Einfuegen an beliebiger Position
+
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/utlui/tmplctrl.cxx b/sw/source/ui/utlui/tmplctrl.cxx
new file mode 100644
index 000000000000..7b1570bdf5ce
--- /dev/null
+++ b/sw/source/ui/utlui/tmplctrl.cxx
@@ -0,0 +1,306 @@
+/*************************************************************************
+ *
+ * $RCSfile: tmplctrl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 ---------------------------------------------------------------
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXSTYLE_HXX //autogen
+#include <svtools/style.hxx>
+#endif
+#ifndef _MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _STATUS_HXX //autogen
+#include <vcl/status.hxx>
+#endif
+
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "swmodule.hxx"
+#include "cmdid.h"
+#include "docsh.hxx"
+#include "tmplctrl.hxx"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+
+SFX_IMPL_STATUSBAR_CONTROL( SwTemplateControl, SfxStringItem );
+
+// class TemplatePopup_Impl --------------------------------------------------
+
+class TemplatePopup_Impl : public PopupMenu
+{
+public:
+ TemplatePopup_Impl();
+
+ USHORT GetCurId() const { return nCurId; }
+
+private:
+ USHORT nCurId;
+
+ virtual void Select();
+};
+
+// -----------------------------------------------------------------------
+
+TemplatePopup_Impl::TemplatePopup_Impl() :
+ PopupMenu(),
+ nCurId(USHRT_MAX)
+{
+}
+
+// -----------------------------------------------------------------------
+
+void TemplatePopup_Impl::Select()
+{
+ nCurId = GetCurItemId();
+}
+
+// class SvxZoomStatusBarControl ------------------------------------------
+
+SwTemplateControl::SwTemplateControl( USHORT nId,
+ StatusBar& rStb,
+ SfxBindings& rBind ) :
+ SfxStatusBarControl( nId, rStb, rBind )
+{
+}
+
+// -----------------------------------------------------------------------
+
+SwTemplateControl::~SwTemplateControl()
+{
+}
+
+// -----------------------------------------------------------------------
+
+void SwTemplateControl::StateChanged( const SfxPoolItem* pState )
+{
+ SfxItemState eState = GetItemState(pState);
+
+ if( eState != SFX_ITEM_AVAILABLE || pState->ISA( SfxVoidItem ) )
+ GetStatusBar().SetItemText( GetId(), String() );
+ else if ( pState->ISA( SfxStringItem ) )
+ {
+ sTemplate = ((SfxStringItem*)pState)->GetValue();
+ GetStatusBar().SetItemText( GetId(), sTemplate );
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void SwTemplateControl::Paint( const UserDrawEvent& )
+{
+ GetStatusBar().SetItemText( GetId(), sTemplate );
+}
+
+// -----------------------------------------------------------------------
+
+void SwTemplateControl::Command( const CommandEvent& rCEvt )
+{
+ if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU &&
+ GetStatusBar().GetItemText( GetId() ).Len() )
+ {
+ CaptureMouse();
+ TemplatePopup_Impl aPop;
+ {
+ SwView* pView = ::GetActiveView();
+ SwWrtShell* pWrtShell;
+ if( pView && 0 != (pWrtShell = pView->GetWrtShellPtr()) &&
+ !pWrtShell->SwCrsrShell::HasSelection()&&
+ !pWrtShell->IsSelFrmMode() &&
+ !pWrtShell->IsObjSelected())
+ {
+ SfxStyleSheetBasePool* pPool = pView->GetDocShell()->
+ GetStyleSheetPool();
+ pPool->SetSearchMask(SFX_STYLE_FAMILY_PAGE, SFXSTYLEBIT_ALL);
+ if( pPool->Count() > 1 )
+ {
+ USHORT nCount = 0;
+ SfxStyleSheetBase* pStyle = pPool->First();
+ while( pStyle )
+ {
+ nCount++;
+ aPop.InsertItem( nCount, pStyle->GetName() );
+ pStyle = pPool->Next();
+ }
+
+ aPop.Execute( &GetStatusBar(), rCEvt.GetMousePosPixel());
+ USHORT nId = aPop.GetCurId();
+ if( nId != USHRT_MAX)
+ {
+ // sieht etwas umstaendlich aus, anders geht's aber nicht
+ pStyle = pPool->operator[]( nId - 1 );
+ SfxStringItem aStyle( FN_SET_PAGE_STYLE, pStyle->GetName() );
+ pWrtShell->GetView().GetViewFrame()->GetDispatcher()->Execute(
+ FN_SET_PAGE_STYLE,
+ SFX_CALLMODE_SLOT|SFX_CALLMODE_RECORD,
+ &aStyle, 0L );
+ }
+ }
+ }
+ }
+ ReleaseMouse();
+ }
+}
+
+/*************************************************************************
+
+
+ $Log: not supported by cvs2svn $
+ Revision 1.27 2000/09/18 16:06:19 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.26 2000/09/07 15:59:35 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.25 2000/02/11 15:01:09 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.24 1998/11/11 15:16:02 OS
+ #59267# include
+
+
+ Rev 1.23 11 Nov 1998 16:16:02 OS
+ #59267# include
+
+ Rev 1.22 10 Nov 1998 15:14:20 OS
+ #59267# Vorlagenmenue nur ohne Selektion
+
+ Rev 1.21 03 Sep 1998 12:30:32 OS
+ #56005# Alle Seitenvorlagen in der Statuszeile anbieten
+
+ Rev 1.20 21 Nov 1997 12:10:14 MA
+ includes
+
+ Rev 1.19 03 Nov 1997 13:59:22 MA
+ precomp entfernt
+
+ Rev 1.18 29 Aug 1997 15:57:30 OS
+ PopupMenu::Execute mit Window* fuer VCL
+
+ Rev 1.17 29 Aug 1997 13:58:50 OS
+ DLL-Umbau
+
+ Rev 1.16 08 Aug 1997 17:25:18 OM
+ Headerfile-Umstellung
+
+ Rev 1.15 09 Jul 1997 17:45:32 HJS
+ includes
+
+ Rev 1.14 14 Jan 1997 09:39:00 TRI
+ includes wegen Internal Compiler Error
+
+ Rev 1.13 28 Aug 1996 15:42:38 OS
+ includes
+
+ Rev 1.12 26 Jun 1996 15:04:04 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.11 22 Mar 1996 15:18:38 HJS
+ umstellung 311
+
+ Rev 1.10 24 Nov 1995 16:57:24 OM
+ PCH->PRECOMPILED
+
+ Rev 1.9 17 Nov 1995 15:16:22 MA
+ Segmentierung
+
+ Rev 1.8 07 Nov 1995 18:04:04 MA
+ opt/fix/chg: statics und segs
+
+ Rev 1.7 30 Oct 1995 18:46:50 OM
+ GetActiveView entfernt
+
+ Rev 1.6 06 Oct 1995 00:20:14 HJS
+ pState => eState
+
+ Rev 1.5 05 Oct 1995 18:41:14 OM
+ StateChanged umgestellt
+
+ Rev 1.4 09 Aug 1995 19:15:18 OS
+ Umstellung auf CommandHdl
+
+ Rev 1.3 20 Jul 1995 19:00:20 OS
+ kein Absturz ohne View
+
+ Rev 1.2 17 Jul 1995 15:19:58 ER
+ wie waer's mit exports?
+
+ Rev 1.1 17 Jul 1995 14:51:48 ER
+ wie waer's mit exports?
+
+ Rev 1.0 14 Jul 1995 18:17:30 OS
+ Initial revision.
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/utlui/uiitems.cxx b/sw/source/ui/utlui/uiitems.cxx
new file mode 100644
index 000000000000..1c132c1b548a
--- /dev/null
+++ b/sw/source/ui/utlui/uiitems.cxx
@@ -0,0 +1,370 @@
+/*************************************************************************
+ *
+ * $RCSfile: uiitems.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVX_ITEMTYPE_HXX
+#include <svx/itemtype.hxx>
+#endif
+#ifndef _UNOSETT_HXX
+#include <unosett.hxx>
+#endif
+
+#include "uiparam.hxx"
+#include "swtypes.hxx"
+#include "cmdid.h"
+#include "pagedesc.hxx"
+#include "uiitems.hxx"
+
+#include "utlui.hrc"
+#include "attrdesc.hrc"
+
+using namespace ::com::sun::star;
+
+// Breitenangaben der Fussnotenlinien, mit TabPage abstimmen
+static const USHORT __FAR_DATA nFtnLines[] = {
+ 0,
+ 10,
+ 50,
+ 80,
+ 100,
+ 150
+};
+
+#define FTN_LINE_STYLE_COUNT 5
+
+
+SwPageFtnInfoItem::SwPageFtnInfoItem( const USHORT nId, SwPageFtnInfo& rInfo) :
+ SfxPoolItem( nId ),
+ aFtnInfo(rInfo)
+{
+}
+
+
+SwPageFtnInfoItem::SwPageFtnInfoItem( const SwPageFtnInfoItem& rItem ) :
+ SfxPoolItem( rItem ),
+ aFtnInfo(rItem.GetPageFtnInfo())
+{
+}
+
+
+ SwPageFtnInfoItem::~SwPageFtnInfoItem()
+{
+}
+
+
+SfxPoolItem* SwPageFtnInfoItem::Clone( SfxItemPool *pPool ) const
+{
+ return new SwPageFtnInfoItem( *this );
+}
+
+
+int SwPageFtnInfoItem::operator==( const SfxPoolItem& rAttr ) const
+{
+ DBG_ASSERT( Which() == rAttr.Which(), "keine gleichen Attribute" );
+ return ( aFtnInfo == ((SwPageFtnInfoItem&)rAttr).GetPageFtnInfo());
+}
+
+
+SfxItemPresentation SwPageFtnInfoItem::GetPresentation
+(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreUnit,
+ SfxMapUnit ePresUnit,
+ String& rText,
+ const International* pIntl
+) const
+{
+ switch ( ePres )
+ {
+ case SFX_ITEM_PRESENTATION_NONE:
+ rText.Erase();
+ return SFX_ITEM_PRESENTATION_NONE;
+ case SFX_ITEM_PRESENTATION_NAMELESS:
+ case SFX_ITEM_PRESENTATION_COMPLETE:
+ {
+ USHORT nHght = (USHORT) GetPageFtnInfo().GetHeight();
+ if ( nHght )
+ {
+ rText = SW_RESSTR( STR_MAX_FTN_HEIGHT );
+ rText += ' ';
+ rText += ::GetMetricText( nHght, eCoreUnit, ePresUnit );
+ rText += ::GetSvxString( ::GetMetricId( ePresUnit ) );
+ }
+ return ePres;
+ }
+ }
+ return SFX_ITEM_PRESENTATION_NONE;
+}
+
+
+
+SwPtrItem::SwPtrItem( const USHORT nId, void* pPtr ) :
+ SfxPoolItem( nId ),
+ pMisc(pPtr)
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Copy-Konstruktor
+ --------------------------------------------------------------------*/
+
+
+SwPtrItem::SwPtrItem( const SwPtrItem& rItem ) : SfxPoolItem( rItem )
+{
+ pMisc = rItem.pMisc;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Clonen
+ --------------------------------------------------------------------*/
+
+
+SfxPoolItem* SwPtrItem::Clone( SfxItemPool *pPool ) const
+{
+ return new SwPtrItem( *this );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+int SwPtrItem::operator==( const SfxPoolItem& rAttr ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
+ const SwPtrItem& rItem = (SwPtrItem&)rAttr;
+ return ( pMisc == rItem.pMisc );
+}
+
+
+/*-----------------12.11.97 12:55-------------------------------
+ SwUINumRuleItem fuer die NumTabPages der FormatNumRule/Stylisten
+---------------------------------------------------------------*/
+SwUINumRuleItem::SwUINumRuleItem( const SwNumRule& rRul, const USHORT nId )
+ : SfxPoolItem( nId ), pRule( new SwNumRule( rRul ) )
+{
+}
+
+SwUINumRuleItem::SwUINumRuleItem( const String& rName, const USHORT nId )
+ : SfxPoolItem( nId ), pRule( new SwNumRule( rName ) )
+{
+}
+
+SwUINumRuleItem::SwUINumRuleItem( const SwUINumRuleItem& rItem )
+ : SfxPoolItem( rItem ),
+ pRule( new SwNumRule( *rItem.pRule ))
+{
+}
+
+ SwUINumRuleItem::~SwUINumRuleItem()
+{
+ delete pRule;
+}
+
+
+SfxPoolItem* SwUINumRuleItem::Clone( SfxItemPool *pPool ) const
+{
+ return new SwUINumRuleItem( *this );
+}
+
+int SwUINumRuleItem::operator==( const SfxPoolItem& rAttr ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
+ return *pRule == *((SwUINumRuleItem&)rAttr).pRule;
+}
+
+BOOL SwUINumRuleItem::QueryValue( uno::Any& rVal, BYTE nMemberId ) const
+{
+ uno::Reference< container::XIndexReplace >xRules = new SwXNumberingRules(*pRule);
+ rVal.setValue(&xRules, ::getCppuType((uno::Reference< container::XIndexReplace>*)0));
+ return TRUE;
+}
+BOOL SwUINumRuleItem::PutValue( const uno::Any& rVal, BYTE nMemberId )
+{
+ if(rVal.getValueType() == ::getCppuType((uno::Reference< container::XIndexReplace >*)0) )
+ {
+ uno::Reference< container::XIndexReplace>* pxRulesRef = (uno::Reference< container::XIndexReplace>*)rVal.getValue();
+ uno::Reference< lang::XUnoTunnel > xTunnel(*pxRulesRef, uno::UNO_QUERY);
+ SwXNumberingRules* pSwXRules = xTunnel.is() ? (SwXNumberingRules*)
+ xTunnel->getSomething(SwXNumberingRules::getUnoTunnelId()) : 0;
+ if(pSwXRules)
+ {
+ *pRule = *pSwXRules->GetNumRule();
+ }
+ }
+ return TRUE;
+}
+/* -----------------17.06.98 17:43-------------------
+ *
+ * --------------------------------------------------*/
+SwBackgroundDestinationItem::SwBackgroundDestinationItem(USHORT nWhich, USHORT nValue) :
+ SfxUInt16Item(nWhich, nValue)
+{
+}
+/* -----------------17.06.98 17:44-------------------
+ *
+ * --------------------------------------------------*/
+SfxPoolItem* SwBackgroundDestinationItem::Clone( SfxItemPool *pPool ) const
+{
+ return new SwBackgroundDestinationItem(Which(), GetValue());
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.37 2000/09/18 16:06:19 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.36 2000/05/26 16:55:03 os
+ includes removed
+
+ Revision 1.35 2000/05/26 07:21:35 os
+ old SW Basic API Slots removed
+
+ Revision 1.34 2000/03/23 07:55:38 os
+ UNO III
+
+ Revision 1.33 2000/03/03 15:17:05 os
+ StarView remainders removed
+
+ Revision 1.32 1999/09/01 08:41:58 OS
+ #66082# GetPresentation: new Parameter
+
+
+ Rev 1.31 01 Sep 1999 10:41:58 OS
+ #66082# GetPresentation: new Parameter
+
+ Rev 1.30 23 Feb 1999 10:22:36 OS
+ #61767# Kapitelnumerierung funktioniert wieder
+
+ Rev 1.29 27 Jan 1999 10:00:32 OS
+ #56371# TF_ONE51
+
+ Rev 1.28 26 Jun 1998 17:35:36 OS
+ SwBGDestItem mit Which #51751#
+
+ Rev 1.27 17 Jun 1998 18:19:06 OS
+ SwBackgroundDestinationItem
+
+ Rev 1.26 27 May 1998 13:40:12 OS
+ Put/QueryValue fuer SwUINumRuleItem
+
+ Rev 1.25 24 Mar 1998 13:46:28 JP
+ SwUINumRule: CTORen mit Name oder NumRule, nicht mehr mit NumRulePointer
+
+ Rev 1.24 29 Nov 1997 15:08:58 MA
+ includes
+
+ Rev 1.23 21 Nov 1997 12:10:18 MA
+ includes
+
+ Rev 1.22 17 Nov 1997 10:21:32 JP
+ Umstellung Numerierung
+
+ Rev 1.21 03 Nov 1997 13:59:22 MA
+ precomp entfernt
+
+ Rev 1.20 06 Sep 1997 10:58:32 OS
+ PenStyle der Fussnoten per Basic funktioniert #43272#
+
+ Rev 1.19 11 Nov 1996 10:54:14 MA
+ ResMgr
+
+ Rev 1.18 28 Aug 1996 15:42:40 OS
+ includes
+
+ Rev 1.17 20 Aug 1996 16:24:56 OS
+ SwPtrItem jetzt hier
+
+ Rev 1.16 25 Mar 1996 13:31:50 OS
+ Bugs im SwPageFtnInfoItem behoben
+
+ Rev 1.15 31 Jan 1996 09:43:46 OS
+ Masseinheit fuer SwPageFtnInfoItem
+
+ Rev 1.14 04 Dec 1995 16:05:52 OS
+ Set/FillVariable impl.
+
+ Rev 1.13 27 Nov 1995 18:55:14 OS
+ Umstellung 303a
+
+ Rev 1.12 24 Nov 1995 16:57:24 OM
+ PCH->PRECOMPILED
+
+ Rev 1.11 16 Nov 1995 18:30:36 OS
+ neu: Get/SetVariable, nicht impl.
+
+ Rev 1.10 08 Nov 1995 12:17:22 OS
+ Change => Set
+
+ Rev 1.9 11 Oct 1995 17:50:54 MA
+ fix: __EXPORT'iert
+
+ Rev 1.8 28 Sep 1995 08:05:46 OS
+ Typen fuer MSC richtig gecastet
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/utlui/uitool.cxx b/sw/source/ui/utlui/uitool.cxx
new file mode 100644
index 000000000000..50376626c3e9
--- /dev/null
+++ b/sw/source/ui/utlui/uitool.cxx
@@ -0,0 +1,1045 @@
+/*************************************************************************
+ *
+ * $RCSfile: uitool.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+#ifndef _UIPARAM_HXX
+#include <uiparam.hxx>
+#endif
+
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _SFX_DOCFILT_HACK_HXX //autogen
+#include <sfx2/docfilt.hxx>
+#endif
+#ifndef _SVX_PMDLITEM_HXX //autogen
+#include <svx/pmdlitem.hxx>
+#endif
+#ifndef _SVX_TSTPITEM_HXX //autogen
+#include <svx/tstpitem.hxx>
+#endif
+#ifndef _SVX_BOXITEM_HXX //autogen
+#include <svx/boxitem.hxx>
+#endif
+#ifndef _SVX_SIZEITEM_HXX //autogen
+#include <svx/sizeitem.hxx>
+#endif
+#ifndef _SVX_PAGEITEM_HXX //autogen
+#include <svx/pageitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SFXSTYLE_HXX //autogen
+#include <svtools/style.hxx>
+#endif
+#ifndef _VCL_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _FMTORNT_HXX //autogen
+#include <fmtornt.hxx>
+#endif
+#ifndef _TABCOL_HXX //autogen
+#include <tabcol.hxx>
+#endif
+
+#ifndef _FMTFSIZE_HXX //autogen
+#include <fmtfsize.hxx>
+#endif
+#ifndef _FMTHDFT_HXX //autogen
+#include <fmthdft.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _SWWVIEW_HXX //autogen
+#include <wview.hxx>
+#endif
+#ifndef _UIITEMS_HXX
+#include <uiitems.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _PARATR_HXX
+#include <paratr.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _MODCFG_HXX
+#include <modcfg.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+
+#ifndef _ERROR_H
+#include <error.h>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#ifndef _UTLUI_HRC
+#include <utlui.hrc>
+#endif
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+#ifndef _DOCARY_HXX
+#include <docary.hxx>
+#endif
+#ifndef _CHARFMT_HXX //autogen wg. SwCharFmt
+#include <charfmt.hxx>
+#endif
+
+// 50 cm 28350
+//
+#define MAXHEIGHT 28350
+#define MAXWIDTH 28350
+
+/*--------------------------------------------------------------------
+ Beschreibung: Allgemeine List von StringPointern
+ --------------------------------------------------------------------*/
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Metric umschalten
+ --------------------------------------------------------------------*/
+
+
+void SetMetric(MetricFormatter& rCtrl, FieldUnit eUnit)
+{
+ SwTwips nMin = rCtrl.GetMin(FUNIT_TWIP);
+ SwTwips nMax = rCtrl.GetMax(FUNIT_TWIP);
+
+ rCtrl.SetUnit(eUnit);
+
+ rCtrl.SetMin(nMin, FUNIT_TWIP);
+ rCtrl.SetMax(nMax, FUNIT_TWIP);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Boxinfo-Attribut setzen
+ --------------------------------------------------------------------*/
+
+
+void PrepareBoxInfo(SfxItemSet& rSet, const SwWrtShell& rSh)
+{
+ SvxBoxInfoItem aBoxInfo;
+ const SfxPoolItem *pBoxInfo;
+ if ( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_BORDER_INNER,
+ TRUE, &pBoxInfo))
+ aBoxInfo = *(SvxBoxInfoItem*)pBoxInfo;
+
+ // Tabellenvariante, wenn mehrere Tabellenzellen selektiert
+ rSh.GetCrsr(); //Damit GetCrsrCnt() auch das Richtige liefert
+ aBoxInfo.SetTable (rSh.IsTableMode() && rSh.GetCrsrCnt() > 1);
+ // Abstandsfeld immer anzeigen
+ aBoxInfo.SetDist ((BOOL) TRUE);
+ // Minimalgroesse in Tabellen und Absaetzen setzen
+ aBoxInfo.SetMinDist (rSh.IsTableMode() || rSh.GetSelectionType() & (SwWrtShell::SEL_TXT | SwWrtShell::SEL_TBL));
+ // Default-Abstand immer setzen
+ aBoxInfo.SetDefDist (MIN_BORDER_DIST);
+ // Einzelne Linien koennen nur in Tabellen DontCare-Status haben
+ aBoxInfo.SetValid(VALID_DISABLE, !rSh.IsTableMode());
+
+ rSet.Put(aBoxInfo);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Header Footer fuellen
+ --------------------------------------------------------------------*/
+
+
+void FillHdFt(SwFrmFmt* pFmt, const SfxItemSet& rSet)
+{
+ SwAttrSet aSet(pFmt->GetAttrSet());
+ aSet.Put(rSet);
+
+ const SvxSizeItem& rSize = (const SvxSizeItem&)rSet.Get(SID_ATTR_PAGE_SIZE);
+ const SfxBoolItem& rDynamic = (const SfxBoolItem&)rSet.Get(SID_ATTR_PAGE_DYNAMIC);
+
+ // Groesse umsetzen
+ //
+ SwFmtFrmSize aFrmSize(rDynamic.GetValue() ? ATT_MIN_SIZE : ATT_FIX_SIZE,
+ rSize.GetSize().Width(),
+ rSize.GetSize().Height());
+ aSet.Put(aFrmSize);
+ pFmt->SetAttr(aSet);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: PageDesc <-> in Sets wandeln und zurueck
+ --------------------------------------------------------------------*/
+
+
+void ItemSetToPageDesc(const SfxItemSet& rSet, SwPageDesc& rPageDesc,
+ SwWrtShell* pShell)
+{
+ SwFrmFmt& rMaster = rPageDesc.GetMaster();
+
+ // alle allgemeinen Rahmen-Attribute uebertragen
+ //
+ rMaster.SetAttr(rSet);
+
+ // PageData
+ //
+ if(rSet.GetItemState(SID_ATTR_PAGE) == SFX_ITEM_SET)
+ {
+ const SvxPageItem& rPageItem = (const SvxPageItem&)rSet.Get(SID_ATTR_PAGE);
+
+ USHORT nUse = (USHORT)rPageItem.GetPageUsage();
+ if(nUse & 0x04)
+ nUse |= 0x03;
+ if(nUse)
+ rPageDesc.SetUseOn( (UseOnPage) nUse );
+ rPageDesc.SetLandscape(rPageItem.IsLandscape());
+ SwNumType aNumType;
+ aNumType.eType = (SvxExtNumType)rPageItem.GetNumType();
+ rPageDesc.SetNumType(aNumType);
+ }
+ // Groesse
+ //
+ if(rSet.GetItemState(SID_ATTR_PAGE_SIZE) == SFX_ITEM_SET)
+ {
+ const SvxSizeItem& rSizeItem = (const SvxSizeItem&)rSet.Get(SID_ATTR_PAGE_SIZE);
+ SwFmtFrmSize aSize(ATT_FIX_SIZE);
+ aSize.SetSize(rSizeItem.GetSize());
+ rMaster.SetAttr(aSize);
+ }
+ // Kopzeilen-Attribute auswerten
+ //
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_PAGE_HEADERSET,
+ FALSE, &pItem ) )
+ {
+ const SfxItemSet& rHeaderSet = ((SvxSetItem*)pItem)->GetItemSet();
+ const SfxBoolItem& rHeaderOn = (const SfxBoolItem&)rHeaderSet.Get(SID_ATTR_PAGE_ON);
+
+ if(rHeaderOn.GetValue())
+ {
+ // Werte uebernehmen
+ if(!rMaster.GetHeader().IsActive())
+ rMaster.SetAttr(SwFmtHeader(TRUE));
+
+ // Das Headerformat rausholen und anpassen
+ //
+ SwFmtHeader aHeaderFmt(rMaster.GetHeader());
+ SwFrmFmt *pHeaderFmt = aHeaderFmt.GetHeaderFmt();
+ ASSERT(pHeaderFmt != 0, "kein HeaderFormat");
+
+ ::FillHdFt(pHeaderFmt, rHeaderSet);
+
+ rPageDesc.ChgHeaderShare(((const SfxBoolItem&)
+ rHeaderSet.Get(SID_ATTR_PAGE_SHARED)).GetValue());
+ }
+ else
+ { // Header ausschalten
+ //
+ if(rMaster.GetHeader().IsActive())
+ {
+ rMaster.SetAttr(SwFmtHeader(BOOL(FALSE)));
+ rPageDesc.ChgHeaderShare(FALSE);
+ }
+ }
+ }
+
+ // Fusszeilen-Attribute auswerten
+ //
+ if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_PAGE_FOOTERSET,
+ FALSE, &pItem ) )
+ {
+ const SfxItemSet& rFooterSet = ((SvxSetItem*)pItem)->GetItemSet();
+ const SfxBoolItem& rFooterOn = (const SfxBoolItem&)rFooterSet.Get(SID_ATTR_PAGE_ON);
+
+ if(rFooterOn.GetValue())
+ {
+ // Werte uebernehmen
+ if(!rMaster.GetFooter().IsActive())
+ rMaster.SetAttr(SwFmtFooter(TRUE));
+
+ // Das Footerformat rausholen und anpassen
+ //
+ SwFmtFooter aFooterFmt(rMaster.GetFooter());
+ SwFrmFmt *pFooterFmt = aFooterFmt.GetFooterFmt();
+ ASSERT(pFooterFmt != 0, "kein FooterFormat");
+
+ ::FillHdFt(pFooterFmt, rFooterSet);
+
+ rPageDesc.ChgFooterShare(((const SfxBoolItem&)
+ rFooterSet.Get(SID_ATTR_PAGE_SHARED)).GetValue());
+ }
+ else
+ { // Footer ausschalten
+ //
+ if(rMaster.GetFooter().IsActive())
+ {
+ rMaster.SetAttr(SwFmtFooter(BOOL(FALSE)));
+ rPageDesc.ChgFooterShare(FALSE);
+ }
+ }
+ }
+
+ // Fussnoten
+ //
+ if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_FTN_INFO,
+ FALSE, &pItem ) )
+ rPageDesc.SetFtnInfo( ((SwPageFtnInfoItem*)pItem)->GetPageFtnInfo() );
+
+
+ //
+ // Columns
+ //
+
+ // Registerhaltigkeit
+
+ if(SFX_ITEM_SET == rSet.GetItemState(
+ SID_SWREGISTER_MODE, FALSE, &pItem))
+ {
+ BOOL bSet = ((const SfxBoolItem*)pItem)->GetValue();
+ if(!bSet)
+ rPageDesc.SetRegisterFmtColl(0);
+ else if(SFX_ITEM_SET == rSet.GetItemState(
+ SID_SWREGISTER_COLLECTION, FALSE, &pItem))
+ {
+ String sColl = ((const SfxStringItem*)pItem)->GetValue();
+ SwTxtFmtColl* pColl = pShell->GetParaStyle( sColl,
+ SwWrtShell::GETSTYLE_CREATEANY );
+ if(!rPageDesc.GetRegisterFmtColl())
+ {
+ SwRegisterItem aSet(TRUE);
+ pColl->SetAttr( aSet );
+ }
+ rPageDesc.SetRegisterFmtColl(pColl);
+ }
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+void PageDescToItemSet( const SwPageDesc& rPageDesc, SfxItemSet& rSet)
+{
+ const SwFrmFmt& rMaster = rPageDesc.GetMaster();
+
+ // Seitendaten
+ //
+ SvxPageItem aPageItem(SID_ATTR_PAGE);
+ aPageItem.SetDescName(rPageDesc.GetName());
+ aPageItem.SetPageUsage((SvxPageUsage)rPageDesc.GetUseOn());
+ aPageItem.SetLandscape(rPageDesc.GetLandscape());
+ aPageItem.SetNumType((SvxNumType)rPageDesc.GetNumType().eType);
+ rSet.Put(aPageItem);
+
+ // Groesse
+ SvxSizeItem aSizeItem(SID_ATTR_PAGE_SIZE, rMaster.GetFrmSize().GetSize());
+ rSet.Put(aSizeItem);
+
+ // Maximale Groesse
+ SvxSizeItem aMaxSizeItem(SID_ATTR_PAGE_MAXSIZE, Size(MAXWIDTH, MAXHEIGHT));
+ rSet.Put(aMaxSizeItem);
+
+ // Raender, Umrandung und das andere Zeug
+ //
+ rSet.Put(rMaster.GetAttrSet());
+
+ SvxBoxInfoItem aBoxInfo;
+ const SfxPoolItem *pBoxInfo;
+ if ( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_BORDER_INNER,
+ TRUE, &pBoxInfo) )
+ aBoxInfo = *(SvxBoxInfoItem*)pBoxInfo;
+
+ aBoxInfo.SetTable( FALSE );
+ // Abstandsfeld immer anzeigen
+ aBoxInfo.SetDist( TRUE);
+ // Minimalgroesse in Tabellen und Absaetzen setzen
+ aBoxInfo.SetMinDist( FALSE );
+ // Default-Abstand immer setzen
+ aBoxInfo.SetDefDist( MIN_BORDER_DIST );
+ // Einzelne Linien koennen nur in Tabellen DontCare-Status haben
+ aBoxInfo.SetValid( VALID_DISABLE );
+ rSet.Put( aBoxInfo );
+
+
+ SfxStringItem aFollow(SID_ATTR_PAGE_EXT1, aEmptyStr);
+ if(rPageDesc.GetFollow())
+ aFollow.SetValue(rPageDesc.GetFollow()->GetName());
+ rSet.Put(aFollow);
+
+ // Header
+ //
+ if(rMaster.GetHeader().IsActive())
+ {
+ const SwFmtHeader &rHeaderFmt = rMaster.GetHeader();
+ const SwFrmFmt *pHeaderFmt = rHeaderFmt.GetHeaderFmt();
+ ASSERT(pHeaderFmt != 0, kein HeaderFormat.);
+
+ // HeaderInfo, Raender, Hintergrund, Umrandung
+ //
+ SfxItemSet aHeaderSet( *rSet.GetPool(),
+ SID_ATTR_PAGE_ON, SID_ATTR_PAGE_SHARED,
+ SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1,
+ 0);
+
+ // dynamische oder feste Hoehe
+ //
+ SfxBoolItem aOn(SID_ATTR_PAGE_ON, TRUE);
+ aHeaderSet.Put(aOn);
+
+ const SwFmtFrmSize &rFrmSize = pHeaderFmt->GetFrmSize();
+ const SwFrmSize eSizeType = rFrmSize.GetSizeType();
+ SfxBoolItem aDynamic(SID_ATTR_PAGE_DYNAMIC, eSizeType != ATT_FIX_SIZE);
+ aHeaderSet.Put(aDynamic);
+
+ // Links gleich rechts
+ //
+ SfxBoolItem aShared(SID_ATTR_PAGE_SHARED, rPageDesc.IsHeaderShared());
+ aHeaderSet.Put(aShared);
+
+ // Groesse
+ SvxSizeItem aSize(SID_ATTR_PAGE_SIZE, Size(rFrmSize.GetSize()));
+ aHeaderSet.Put(aSize);
+
+ // Rahmen-Attribute umschaufeln
+ //
+ aHeaderSet.Put(pHeaderFmt->GetAttrSet());
+ aHeaderSet.Put( aBoxInfo );
+
+ // SetItem erzeugen
+ //
+ SvxSetItem aSetItem(SID_ATTR_PAGE_HEADERSET, aHeaderSet);
+ rSet.Put(aSetItem);
+ }
+
+ // Footer
+ if(rMaster.GetFooter().IsActive())
+ {
+ const SwFmtFooter &rFooterFmt = rMaster.GetFooter();
+ const SwFrmFmt *pFooterFmt = rFooterFmt.GetFooterFmt();
+ ASSERT(pFooterFmt != 0, kein FooterFormat.);
+
+ // FooterInfo, Raender, Hintergrund, Umrandung
+ //
+ SfxItemSet aFooterSet( *rSet.GetPool(),
+ SID_ATTR_PAGE_ON, SID_ATTR_PAGE_SHARED,
+ SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1,
+ 0);
+
+ // dynamische oder feste Hoehe
+ //
+ SfxBoolItem aOn(SID_ATTR_PAGE_ON, TRUE);
+ aFooterSet.Put(aOn);
+
+ const SwFmtFrmSize &rFrmSize = pFooterFmt->GetFrmSize();
+ const SwFrmSize eSizeType = rFrmSize.GetSizeType();
+ SfxBoolItem aDynamic(SID_ATTR_PAGE_DYNAMIC, eSizeType != ATT_FIX_SIZE);
+ aFooterSet.Put(aDynamic);
+
+ // Links gleich rechts
+ //
+ SfxBoolItem aShared(SID_ATTR_PAGE_SHARED, rPageDesc.IsFooterShared());
+ aFooterSet.Put(aShared);
+
+ // Groesse
+ SvxSizeItem aSize(SID_ATTR_PAGE_SIZE, Size(rFrmSize.GetSize()));
+ aFooterSet.Put(aSize);
+
+ // Rahmen-Attribute umschaufeln
+ //
+ aFooterSet.Put(pFooterFmt->GetAttrSet());
+ aFooterSet.Put( aBoxInfo );
+
+ // SetItem erzeugen
+ //
+ SvxSetItem aSetItem(SID_ATTR_PAGE_FOOTERSET, aFooterSet);
+ rSet.Put(aSetItem);
+ }
+
+ // Fussnoten einbauen
+ //
+ SwPageFtnInfo& rInfo = (SwPageFtnInfo&)rPageDesc.GetFtnInfo();
+ SwPageFtnInfoItem aFtnItem(FN_PARAM_FTN_INFO, rInfo);
+ rSet.Put(aFtnItem);
+
+ // Registerhaltigkeit
+
+ const SwTxtFmtColl* pCol = rPageDesc.GetRegisterFmtColl();
+ SwRegisterItem aReg(pCol != 0);
+ aReg.SetWhich(SID_SWREGISTER_MODE);
+ rSet.Put(aReg);
+ if(pCol)
+ rSet.Put(SfxStringItem(SID_SWREGISTER_COLLECTION, pCol->GetName()));
+
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: DefaultTabs setzen
+ --------------------------------------------------------------------*/
+
+
+void MakeDefTabs(SwTwips nDefDist, SvxTabStopItem& rTabs)
+{
+ if( rTabs.Count() )
+ return;
+ {
+ SvxTabStop aSwTabStop( nDefDist, SVX_TAB_ADJUST_DEFAULT );
+ rTabs.Insert( aSwTabStop );
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Abstand zwischen zwei Tabs
+ --------------------------------------------------------------------*/
+
+
+USHORT GetTabDist(const SvxTabStopItem& rTabs)
+{
+ USHORT nDefDist;
+ if( rTabs.Count() )
+ nDefDist = (USHORT)( rTabs[0].GetTabPos() );
+ else
+ nDefDist = 1134; // 2cm
+ return nDefDist;
+}
+
+
+// erfrage ob im Set eine Sfx-PageDesc-Kombination vorliegt und returne diese
+void SfxToSwPageDescAttr( const SwWrtShell& rShell, SfxItemSet& rSet )
+{
+ const SfxPoolItem* pItem;
+ SwFmtPageDesc aPgDesc;
+
+ BOOL bChanged = FALSE;
+ // Seitennummer
+ if(SFX_ITEM_SET == rSet.GetItemState(SID_ATTR_PARA_PAGENUM, FALSE, &pItem))
+ {
+ aPgDesc.SetNumOffset(((SfxUInt16Item*)pItem)->GetValue());
+ bChanged = TRUE;
+ }
+ if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_PARA_MODEL, FALSE, &pItem ))
+ {
+ const String& rDescName = ((SvxPageModelItem*)pItem)->GetValue();
+ if( rDescName.Len() ) // kein Name -> PageDesc ausschalten!
+ {
+ // nur loeschen, wenn PageDesc eingschaltet wird!
+ rSet.ClearItem( RES_BREAK );
+ SwPageDesc* pDesc = ((SwWrtShell&)rShell).FindPageDescByName(
+ rDescName, TRUE );
+ if( pDesc )
+ pDesc->Add( &aPgDesc );
+ }
+ rSet.ClearItem( SID_ATTR_PARA_MODEL );
+ bChanged = TRUE;
+ }
+ else
+ {
+ SfxItemSet aCoreSet(rShell.GetView().GetPool(), RES_PAGEDESC, RES_PAGEDESC );
+ rShell.GetAttr( aCoreSet );
+ if(SFX_ITEM_SET == aCoreSet.GetItemState( RES_PAGEDESC, TRUE, &pItem ) )
+ {
+ if( ((SwFmtPageDesc*)pItem)->GetPageDesc() )
+ {
+ ((SwFmtPageDesc*)pItem)->GetPageDesc()->Add(&aPgDesc);
+ }
+ }
+ }
+
+
+ if(bChanged)
+ rSet.Put( aPgDesc );
+}
+
+
+// erfrage ob im Set eine Sfx-PageDesc-Kombination vorliegt und returne diese
+void SwToSfxPageDescAttr( SfxItemSet& rCoreSet )
+{
+ const SfxPoolItem* pItem = 0;
+ String aName;
+ USHORT nPageNum = 0;
+ BOOL bPut = TRUE;
+ switch( rCoreSet.GetItemState( RES_PAGEDESC, TRUE, &pItem ) )
+ {
+ case SFX_ITEM_SET:
+ {
+ if( ((SwFmtPageDesc*)pItem)->GetPageDesc() )
+ {
+ aName = ((SwFmtPageDesc*)pItem)->GetPageDesc()->GetName();
+ nPageNum = ((SwFmtPageDesc*)pItem)->GetNumOffset();
+ }
+ rCoreSet.ClearItem( RES_PAGEDESC );
+ // Seitennummer
+ }
+ break;
+
+ case SFX_ITEM_AVAILABLE:
+ break;
+
+ default:
+ bPut = FALSE;
+ }
+ SfxUInt16Item aPageNum( SID_ATTR_PARA_PAGENUM, nPageNum );
+ rCoreSet.Put( aPageNum );
+
+ if(bPut)
+ rCoreSet.Put( SvxPageModelItem( aName, TRUE, SID_ATTR_PARA_MODEL ) );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Metric ermitteln
+ --------------------------------------------------------------------*/
+
+
+FieldUnit GetDfltMetric(BOOL bWeb)
+{
+ return SW_MOD()->GetModuleConfig()->GetMetric(bWeb);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Metric ermitteln
+ --------------------------------------------------------------------*/
+
+
+void SetDfltMetric( FieldUnit eMetric, BOOL bWeb )
+{
+ SwModuleOptions* pCfg = SW_MOD()->GetModuleConfig();
+ FieldUnit eOldMetric = pCfg->GetMetric(bWeb);
+ if(eOldMetric != eMetric)
+ pCfg->SetMetric(eMetric, bWeb);
+
+ SwView* pTmpView = SwModule::GetFirstView();
+
+ // fuer alle MDI-Fenster das Lineal umschalten
+ while(pTmpView)
+ {
+ if(bWeb == (0 != PTR_CAST(SwWebView, pTmpView)))
+ {
+ pTmpView->ChangeVLinealMetric(eMetric);
+ pTmpView->ChangeTabMetric(eMetric);
+ }
+
+ pTmpView = SwModule::GetNextView(pTmpView);
+ }
+}
+
+/*-----------------15.07.97 10:49-------------------
+
+--------------------------------------------------*/
+// Umwandlung: Sub(LibName.ModulName) -> LibName.ModulName.Sub
+String ConvertMacroFormat(const String& rInput )
+{
+ String sTemp(rInput);
+ USHORT nFound = sTemp.Search('(');
+ USHORT nTokenCount = sTemp.GetTokenCount('.');
+ String sMac(rInput);
+ if( STRING_NOTFOUND != nFound || nTokenCount < 2)
+ {
+ if(nTokenCount < 2)
+ nFound = sTemp.Len();
+ // anderes Format: "Macro(Bibliothek.Modul)"
+ sMac = sTemp.Copy(0, nFound);
+ sTemp.Erase(0, nFound);
+ if(sTemp.Len() > 2)
+ {
+ sMac.Insert('.', 0);
+ sMac.Insert(sTemp.Copy(1, sTemp.Len() - 2), 0);
+ }
+ }
+ return sMac;
+}
+
+
+BOOL GetFileFilterNameDlg( Window& rParent, String& rFileName,
+ String* pPassword, String* pFilterName,
+ SfxMedium** ppMedium )
+{
+ Window* pDefDlgParent = Application::GetDefDialogParent();
+ Application::SetDefDialogParent( &rParent );
+ SfxMedium* pMed = SFX_APP()->InsertDocumentDialog( 0, SwDocShell::Factory() );
+ if( pMed )
+ {
+ if( pFilterName )
+ *pFilterName = pMed->GetFilter()->GetFilterName();
+
+ rFileName = URIHelper::SmartRelToAbs( pMed->GetName() );
+ if( pPassword )
+ {
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == pMed->GetItemSet()->GetItemState(
+ SID_PASSWORD, FALSE, &pItem ) )
+ *pPassword = ((SfxStringItem*)pItem)->GetValue();
+ }
+
+ if( ppMedium )
+ *ppMedium = pMed;
+ else
+ delete pMed; // das brauchen wir nicht mehr !
+ }
+ Application::SetDefDialogParent( pDefDlgParent );
+ return 0 != pMed;
+}
+
+/*-----------------09.04.98 16:58-------------------
+
+--------------------------------------------------*/
+USHORT InsertStringSorted(const String& rEntry, ListBox& rToFill, BOOL bHasOffset, const International& rInt)
+{
+ USHORT i = bHasOffset ? 1 : 0;
+ for(; i < rToFill.GetEntryCount(); i++)
+ {
+ String sTemp(rToFill.GetEntry(i));
+ if(COMPARE_GREATER == rInt.Compare(sTemp, rEntry))
+ break;
+ }
+ return rToFill.InsertEntry(rEntry, i);
+}
+void FillCharStyleListBox(ListBox& rToFill, SwDocShell* pDocSh, BOOL bSorted)
+{
+ BOOL bHasOffset = rToFill.GetEntryCount() > 0;
+ SfxStyleSheetBasePool* pPool = pDocSh->GetStyleSheetPool();
+ pPool->SetSearchMask(SFX_STYLE_FAMILY_CHAR, SFXSTYLEBIT_ALL);
+ SwDoc* pDoc = pDocSh->GetDoc();
+ const International& rInt = Application::GetAppInternational();
+ const SfxStyleSheetBase* pBase = pPool->First();
+ String sStandard; GetDocPoolNm( RES_POOLCOLL_STANDARD, sStandard );
+ while(pBase)
+ {
+ if(pBase->GetName() != sStandard)
+ {
+ USHORT nPos;
+ if(bSorted)
+ nPos = InsertStringSorted(pBase->GetName(), rToFill, bHasOffset, rInt);
+ else
+ nPos = rToFill.InsertEntry(pBase->GetName());
+ long nPoolId = pDoc->GetPoolId( pBase->GetName(), GET_POOLID_CHRFMT );
+ rToFill.SetEntryData( nPos, (void*) (nPoolId));
+ }
+ pBase = pPool->Next();
+ }
+ // non-pool styles
+ const SwCharFmts* pFmts = pDoc->GetCharFmts();
+ for(USHORT i = 0; i < pFmts->Count(); i++)
+ {
+ const SwCharFmt* pFmt = (*pFmts)[i];
+ if(pFmt->IsDefault())
+ continue;
+ const String& rName = pFmt->GetName();
+ if(rToFill.GetEntryPos(rName) == LISTBOX_ENTRY_NOTFOUND)
+ {
+ USHORT nPos;
+ if(bSorted)
+ nPos = InsertStringSorted(rName, rToFill, bHasOffset, rInt);
+ else
+ nPos = rToFill.InsertEntry(rName);
+ long nPoolId = USHRT_MAX;
+ rToFill.SetEntryData( nPos, (void*) (nPoolId));
+ }
+ }
+};
+
+/* -----------------27.04.98 08:26-------------------
+ *
+ * --------------------------------------------------*/
+SwTwips GetTableWidth( SwFrmFmt* pFmt, SwTabCols& rCols, USHORT *pPercent,
+ SwWrtShell* pSh )
+{
+ //Die Breite zu besorgen ist etwas komplizierter.
+ SwTwips nWidth;
+ const SwHoriOrient eOri = pFmt->GetHoriOrient().GetHoriOrient();
+ switch(eOri)
+ {
+ case HORI_FULL: nWidth = rCols.GetRight(); break;
+ case HORI_LEFT_AND_WIDTH:
+ case HORI_LEFT:
+ case HORI_RIGHT:
+ case HORI_CENTER:
+ nWidth = pFmt->GetFrmSize().GetWidth();
+ break;
+ default:
+ {
+ if(pSh)
+ {
+ const SwFrmFmt *pFlyFmt;
+ if ( 0 == (pFlyFmt = pSh->GetFlyFrmFmt()) )
+ {
+ nWidth = pSh->GetAnyCurRect(RECT_PAGE_PRT).Width();
+ }
+ else
+ {
+ nWidth = pSh->GetAnyCurRect(RECT_FLY_PRT_EMBEDDED).Width();
+ }
+ }
+ else
+ {
+ DBG_ERROR("wo soll die Breite denn herkommen?")
+ }
+ const SvxLRSpaceItem& rLRSpace = pFmt->GetLRSpace();
+ nWidth -= (rLRSpace.GetRight() + rLRSpace.GetLeft());
+ }
+ }
+ if (pPercent)
+ *pPercent = pFmt->GetFrmSize().GetWidthPercent();
+ return nWidth;
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.124 2000/09/18 16:06:19 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.123 2000/08/25 10:13:03 os
+ #77214# sorted insert into a ListBox
+
+ Revision 1.122 2000/07/26 16:33:54 jp
+ use the new function GetDocPoolNm to get the collectionames
+
+ Revision 1.121 2000/06/26 13:05:24 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.120 2000/06/19 12:10:36 os
+ #71623# FillCharStyleListBox: optional sorted insertion
+
+ Revision 1.119 2000/06/07 13:28:53 os
+ CutPath removed
+
+ Revision 1.118 2000/04/26 15:03:20 os
+ GetName() returns const String&
+
+ Revision 1.117 2000/04/18 15:14:09 os
+ UNICODE
+
+ Revision 1.116 2000/03/03 15:17:05 os
+ StarView remainders removed
+
+ Revision 1.115 2000/02/11 15:00:54 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.114 1999/12/17 12:35:29 os
+ #70529# dont't insert default char format
+
+ Revision 1.113 1999/08/23 07:48:54 OS
+ #61218# correct handling of left_and_width oriented tables
+
+
+ Rev 1.112 23 Aug 1999 09:48:54 OS
+ #61218# correct handling of left_and_width oriented tables
+
+ Rev 1.111 02 Jul 1999 16:23:18 OS
+ FillCharStyleListBox: SetPoolId as UserData
+
+ Rev 1.110 05 Feb 1999 17:45:48 JP
+ Task #61467#/#61014#: neu FindPageDescByName
+
+ Rev 1.109 17 Nov 1998 10:59:12 OS
+ #58263# NumType durch SvxExtNumType ersetzt
+
+ Rev 1.108 12 Nov 1998 15:07:28 JP
+ Bug #54342#: auch bei GlobalDocs das Filepasswort an die Section uebertragen
+
+ Rev 1.107 08 Sep 1998 17:05:48 OS
+ #56134# Metric fuer Text und HTML getrennt
+
+ Rev 1.106 28 Apr 1998 09:14:52 OS
+ GetTableWidth() verschoben
+
+ Rev 1.105 15 Apr 1998 14:32:12 OS
+ ::FillCharStyleListBox
+
+ Rev 1.104 17 Feb 1998 09:03:56 TJ
+ include
+
+ Rev 1.103 13 Feb 1998 14:17:12 JP
+ neu: globale Funktion zum rufen des InserDocDialog
+
+ Rev 1.102 29 Nov 1997 15:08:58 MA
+ includes
+
+ Rev 1.101 21 Nov 1997 12:10:16 MA
+ includes
+
+ Rev 1.100 03 Nov 1997 13:59:22 MA
+ precomp entfernt
+
+ Rev 1.99 30 Oct 1997 11:19:50 AMA
+ Chg: Kein AutoFlag mehr an Break bzw. PageDesc-Attributen
+
+ Rev 1.98 15 Aug 1997 12:16:08 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.97 11 Aug 1997 10:34:16 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.96 15 Jul 1997 11:33:04 OS
+ Konvertierung von Basic-Namen: Sub(Lib.Modul) ->Lib.Modul.Sub
+
+ Rev 1.95 08 Jul 1997 14:13:36 OS
+ ConfigItems von der App ans Module
+
+ Rev 1.94 03 Feb 1997 15:23:22 OS
+ wird der PageDesc-Name nicht mitgeliefert, muss er von der Shell kommen
+
+ Rev 1.93 30 Jan 1997 15:30:18 OS
+ PageOffset des PageDesc an der richtigen Stelle setzen
+
+ Rev 1.92 16 Jan 1997 10:28:56 OS
+ GetDfltMetric: Modulmetric besorgen
+
+ Rev 1.91 13 Jan 1997 16:53:02 OS
+ TabStop am Module; Dynamische Kopf-/Fusszeilenhoehe
+
+ Rev 1.90 03 Dec 1996 12:39:32 AMA
+ Opt: Parameter aufgeraeumt, denn PageDescToItem benutzt keinen Drucker mehr
+
+ Rev 1.89 24 Oct 1996 18:00:56 OS
+ svxid fuer Registerhaltigkeit
+
+ Rev 1.88 24 Oct 1996 16:55:22 JP
+ Optimierung: Find...ByName
+
+ Rev 1.87 28 Aug 1996 15:42:36 OS
+ includes
+
+ Rev 1.86 27 Jul 1996 10:54:00 OS
+ RegisterItem benutzen
+
+ Rev 1.85 24 Jul 1996 15:13:50 OS
+ gfs. Register an der Absatzvorlage einschalten
+
+ Rev 1.84 23 Jul 1996 16:07:48 OS
+ ItemSetToPageDesc mit SwWrtsh*, Registerhaltigkeit
+
+ Rev 1.83 25 Jun 1996 20:17:26 HJS
+ includes
+
+ Rev 1.82 06 Jun 1996 14:52:26 OS
+ ClearItem erst aufrufen, wenn die Referenz nicht mehr gebraucht wird bug#28346#
+
+ Rev 1.81 25 Mar 1996 16:22:36 AMA
+ Opt: Auffuellen mit DefTabStops nur noch beim Abspeichern notwendig.
+
+ Rev 1.80 21 Mar 1996 14:08:32 OM
+ Umstellung 311
+
+ Rev 1.79 18 Mar 1996 14:27:22 OS
+ GetNextView an der App arbeitet nicht mehr mit static
+
+ Rev 1.78 27 Feb 1996 12:13:04 OS
+ neu: Get/SetDfltMetric
+
+ Rev 1.77 04 Dec 1995 12:40:42 JP
+ PageDescToItemSet: const PageDesc uebergeben
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/utlui/unotools.cxx b/sw/source/ui/utlui/unotools.cxx
new file mode 100644
index 000000000000..20e172a49c30
--- /dev/null
+++ b/sw/source/ui/utlui/unotools.cxx
@@ -0,0 +1,700 @@
+/*************************************************************************
+ *
+ * $RCSfile: unotools.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <swtypes.hxx>
+#include <globals.hrc>
+#include <misc.hrc>
+
+#include <utlui.hrc>
+#include <unotools.hrc>
+#ifndef _UNOTOOLS_HXX
+#include <unotools.hxx>
+#endif
+#ifndef _UNOPRNMS_HXX
+#include <unoprnms.hxx>
+#endif
+
+#ifndef _TOOLS_DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_TEXT_XTEXTVIEWCURSORSUPPLIER_HPP_
+#include <com/sun/star/text/XTextViewCursorSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XSCREENCURSOR_HPP_
+#include <com/sun/star/view/XScreenCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_DOCUMENTZOOMTYPE_HPP_
+#include <com/sun/star/view/DocumentZoomType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_STYLE_XSTYLEFAMILIESSUPPLIER_HPP_
+#include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_STYLE_XSTYLE_HPP_
+#include <com/sun/star/style/XStyle.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XFRAME_HPP_
+#include <com/sun/star/frame/XFrame.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXT_HPP_
+#include <com/sun/star/text/XText.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTDOCUMENT_HPP_
+#include <com/sun/star/text/XTextDocument.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_POSSIZE_HPP_
+#include <com/sun/star/awt/PosSize.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XWINDOW_HPP_
+#include <com/sun/star/awt/XWindow.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XVIEWSETTINGSSUPPLIER_HPP_
+#include <com/sun/star/view/XViewSettingsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
+#include <com/sun/star/container/XNameContainer.hpp>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen wg. SfxDispatcher
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen wg. SfxStringItem
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen wg. SFX_APP
+#include <sfx2/app.hxx>
+#endif
+#include <shellio.hxx>
+#ifndef _SWDOCSH_HXX //autogen wg. SwDocShell
+#include <docsh.hxx>
+#endif
+#ifndef _SWVIEW_HXX //autogen wg. SwView
+#include <view.hxx>
+#endif
+#ifndef _WRTSH_HXX //autogen wg. SwWrtShell
+#include <wrtsh.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _UNOOBJ_HXX
+#include <unoobj.hxx>
+#endif
+#ifndef _UNOCRSR_HXX
+#include <unocrsr.hxx>
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+
+
+#define C2U(cChar) rtl::OUString::createFromAscii(cChar)
+using namespace ::com::sun::star;
+using namespace ::rtl;
+
+/* -----------------09.06.99 14:39-------------------
+ *
+ * --------------------------------------------------*/
+SwRenameXNamedDlg::SwRenameXNamedDlg(Window* pWin, uno::Reference< container::XNamed > & xN, uno::Reference< container::XNameAccess > & xNA) :
+ ModalDialog(pWin, SW_RES(DLG_RENAME_XNAMED)),
+ xNamed(xN),
+ xNameAccess(xNA),
+ aNewNameFT(this, ResId(FT_NEW_NAME)),
+ aNewNameED(this, ResId(ED_NEW_NAME)),
+ aNameGB(this, ResId(GB_NAME)),
+ aOk(this, ResId(PB_OK)),
+ aCancel(this, ResId(PB_CANCEL)),
+ aHelp(this, ResId(PB_HELP))
+{
+ FreeResource();
+ sRemoveWarning = String(SW_RES(STR_REMOVE_WARNING));
+
+ String sTmp(GetText());
+ sTmp += String(xNamed->getName());
+ SetText(sTmp);
+
+ aOk.SetClickHdl(LINK(this, SwRenameXNamedDlg, OkHdl));
+ aNewNameED.SetModifyHdl(LINK(this, SwRenameXNamedDlg, ModifyHdl));
+ aOk.Enable(sal_False);
+}
+/* -----------------09.06.99 15:34-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK(SwRenameXNamedDlg, OkHdl, OKButton*, pOk)
+{
+ try
+ {
+ xNamed->setName(aNewNameED.GetText());
+ }
+ catch(uno::RuntimeException&)
+ {
+ DBG_ERROR("Name wurde nicht geaendert")
+ }
+ EndDialog(RET_OK);
+ return 0;
+}
+/* -----------------09.06.99 15:48-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK(SwRenameXNamedDlg, ModifyHdl, NoSpaceEdit*, pEdit)
+{
+ String sTmp(pEdit->GetText());
+
+ // prevent from pasting illegal characters
+ sal_uInt16 nLen = sTmp.Len();
+ String sMsg;
+ for(sal_uInt16 i = 0; i < pEdit->GetForbiddenChars().Len(); i++)
+ {
+ sal_uInt16 nTmpLen = sTmp.Len();
+ sTmp.EraseAllChars(pEdit->GetForbiddenChars().GetChar(i));
+ if(sTmp.Len() != nTmpLen)
+ sMsg += pEdit->GetForbiddenChars().GetChar(i);
+ }
+ if(sTmp.Len() != nLen)
+ {
+ pEdit->SetText(sTmp);
+ String sWarning(sRemoveWarning);
+ sWarning += sMsg;
+ InfoBox(this, sWarning).Execute();
+ }
+
+ aOk.Enable(sTmp.Len() && !xNameAccess->hasByName(sTmp)
+ && (!xSecondAccess.is() || !xSecondAccess->hasByName(sTmp))
+ && (!xThirdAccess.is() || !xThirdAccess->hasByName(sTmp))
+ );
+ return 0;
+}
+/************************************************************************
+
+************************************************************************/
+sal_Bool SwOneExampleFrame::bShowServiceNotAvailableMessage = sal_True;
+/* -----------------27.07.99 15:26-------------------
+
+ --------------------------------------------------*/
+SwOneExampleFrame::SwOneExampleFrame(Window& rWin,
+ sal_uInt32 nFlags,
+ const Link* pInitializedLink,
+ String* pURL) :
+ aTopWindow(rWin.GetParent(), 0, this),
+ pModuleView(SW_MOD()->GetView()),
+ rWindow(rWin),
+ aMenuRes(SW_RES(RES_FRMEX_MENU)),
+ nStyleFlags(nFlags),
+ bIsInitialized(sal_False),
+ bServiceAvailable(sal_False)
+{
+ aTopWindow.SetPaintTransparent(sal_True);
+ aTopWindow.SetPosSizePixel(rWin.GetPosPixel(), rWin.GetSizePixel());
+ aTopWindow.SetZOrder( &rWin, WINDOW_ZORDER_FIRST );
+ aTopWindow.Show();
+ if(pInitializedLink)
+ aInitializedLink = *pInitializedLink;
+
+ rWin.Enable(sal_False);
+ uno::Reference< lang::XMultiServiceFactory >
+ xMgr = utl::getProcessServiceFactory();
+ uno::Reference< uno::XInterface > xInst = xMgr->createInstance( C2U("com.sun.star.frame.FrameControl") );
+ _xControl = uno::Reference< awt::XControl >(xInst, uno::UNO_QUERY);
+ if(_xControl.is())
+ {
+ uno::Reference< awt::XWindowPeer > xParent( rWindow.GetComponentInterface() );
+
+ uno::Reference< awt::XToolkit > xToolkit( xMgr->createInstance( C2U("com.sun.star.awt.Toolkit") ), uno::UNO_QUERY );
+ if(xToolkit.is())
+ {
+ _xControl->createPeer( xToolkit, xParent );
+ uno::Reference< beans::XPropertySet > xPrSet(xInst, uno::UNO_QUERY);
+ uno::Any aURL;
+ //
+ // create new doc
+ String sTempURL = String::CreateFromAscii("private:factory/swriter");
+ if(pURL && pURL->Len())
+ sTempURL = *pURL;
+ aURL <<= OUString(sTempURL);
+
+ uno::Sequence<beans::PropertyValue> aSeq(3);
+ beans::PropertyValue* pValues = aSeq.getArray();
+ pValues[0].Name = C2U("ReadOnly");
+ BOOL bTrue = sal_True;
+ pValues[0].Value.setValue(&bTrue, ::getBooleanCppuType());
+ pValues[1].Name = C2U("OpenFlags");
+ pValues[1].Value <<= C2U("-RB");
+ pValues[2].Name = C2U("Referer");
+ pValues[2].Value <<= C2U("private:user");
+ uno::Any aArgs;
+ aArgs.setValue(&aSeq, ::getCppuType((uno::Sequence<beans::PropertyValue>*)0));
+
+ xPrSet->setPropertyValue( C2U("LoaderArguments"), aArgs );
+ //save and set readonly???
+
+ xPrSet->setPropertyValue(C2U("ComponentURL"), aURL);
+
+
+ uno::Reference< awt::XWindow > xWin( _xControl, uno::UNO_QUERY );
+ Size aWinSize(rWindow.GetOutputSizePixel());
+ xWin->setPosSize( 0, 0, aWinSize.Width(), aWinSize.Height(), awt::PosSize::SIZE );
+ xWin->setVisible( sal_True );
+
+ // the controller is asynchronously set
+ aLoadedTimer.SetTimeoutHdl(LINK(this, SwOneExampleFrame, TimeoutHdl));
+ aLoadedTimer.SetTimeout(500);
+ aLoadedTimer.Start();
+ bServiceAvailable = sal_True;
+ }
+ }
+}
+/* -----------------------------08.12.99 13:44--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwOneExampleFrame::CreateErrorMessage(Window* pParent)
+{
+ if(SwOneExampleFrame::bShowServiceNotAvailableMessage)
+ {
+ String sInfo(SW_RES(STR_SERVICE_UNAVAILABLE));
+ sInfo += String::CreateFromAscii("com.sun.star.frame.FrameControl");
+ InfoBox(pParent, sInfo).Execute();
+ SwOneExampleFrame::bShowServiceNotAvailableMessage = sal_False;
+ }
+}
+/* -----------------27.07.99 15:26-------------------
+
+ --------------------------------------------------*/
+SwOneExampleFrame::~SwOneExampleFrame()
+{
+ _xCursor = 0;
+ if(_xControl.is())
+ _xControl->dispose();
+ _xControl = 0;
+ _xModel = 0;
+ _xController = 0;
+}
+/* -----------------27.07.99 15:26-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK( SwOneExampleFrame, TimeoutHdl, Timer*, pTimer )
+{
+ if(!_xControl.is())
+ return 0;
+ // now get the model
+ uno::Reference< beans::XPropertySet > xPrSet(_xControl, uno::UNO_QUERY);
+ uno::Any aFrame = xPrSet->getPropertyValue(C2U("Frame"));
+ uno::Reference< frame::XFrame > xFrm = *(uno::Reference< frame::XFrame > *)aFrame.getValue();
+ _xController = xFrm->getController();
+ if(_xController.is())
+ {
+ _xModel = _xController->getModel();
+ //now the ViewOptions should be set properly
+ uno::Reference< view::XViewSettingsSupplier > xSettings(_xController, uno::UNO_QUERY);
+ uno::Reference< beans::XPropertySet > xViewProps = xSettings->getViewSettings();
+ uno::Any aSet;
+ sal_Bool bTrue = sal_True;
+ sal_Bool bFalse = sal_False;
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_BREAKS ), aSet);
+ aSet.setValue(&bTrue, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_DRAWINGS ), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_FIELD_COMMANDS ), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_FOOTNOTE_BACKGROUND ), aSet);
+ aSet.setValue(&bTrue, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_GRAPHICS ), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_HIDDEN_PARAGRAPHS ), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_HIDDEN_TEXT ), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_HORI_RULER ), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_INDEX_MARK_BACKGROUND), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_PARA_BREAKS ), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_PROTECTED_SPACES ), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_SOFT_HYPHENS ), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_SPACES ), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_TABLE_BOUNDARIES ), aSet);
+ aSet.setValue(&bTrue, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_TABLES ), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_TABSTOPS ), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_TEXT_BOUNDARIES ), aSet);
+ aSet.setValue(&bTrue, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_TEXT_FIELD_BACKGROUND), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_VERT_RULER ), aSet);
+ sal_Bool bTemp = 0 !=(nStyleFlags&EX_SHOW_ONLINE_LAYOUT);
+ aSet.setValue(&bTemp, ::getBooleanCppuType());
+ xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_ONLINE_LAYOUT), aSet);
+
+ if(0 ==(nStyleFlags&EX_SHOW_ONLINE_LAYOUT))
+ {
+ uno::Any aZoom; aZoom <<= (sal_Int16)view::DocumentZoomType::PAGE_WIDTH;
+ xViewProps->setPropertyValue(C2U(UNO_NAME_ZOOM_TYPE), aZoom);
+ }
+ else
+ {
+ uno::Any aZoom;
+ aZoom <<= (sal_Int16)view::DocumentZoomType::BY_VALUE;
+ xViewProps->setPropertyValue(C2U(UNO_NAME_ZOOM_TYPE), aZoom);
+
+ sal_Int16 nZoomValue = 50;
+ if(EX_SHOW_BUSINESS_CARDS == nStyleFlags)
+ {
+ nZoomValue = 80;
+ }
+ aZoom <<= nZoomValue;
+ xViewProps->setPropertyValue(C2U(UNO_NAME_ZOOM_VALUE), aZoom);
+ }
+
+ uno::Reference< text::XTextDocument > xDoc(_xModel, uno::UNO_QUERY);
+ uno::Reference< text::XText > xText = xDoc->getText();
+ _xCursor = xText->createTextCursor();
+ uno::Reference< beans::XPropertySet > xCrsrProp(_xCursor, uno::UNO_QUERY);
+ uno::Any aPageStyle = xCrsrProp->getPropertyValue(C2U(UNO_NAME_PAGE_STYLE_NAME));
+ OUString sPageStyle;
+ aPageStyle >>= sPageStyle;
+ uno::Reference< style::XStyleFamiliesSupplier > xSSupp(xDoc, uno::UNO_QUERY);
+ uno::Reference< container::XNameAccess > xStyles = xSSupp->getStyleFamilies();
+ uno::Any aPFamily = xStyles->getByName(C2U("PageStyles"));
+ uno::Reference< container::XNameContainer > xPFamily = *(uno::Reference< container::XNameContainer > *)aPFamily.getValue();
+ if(sPageStyle.getLength())
+ {
+ uno::Any aPStyle = xPFamily->getByName(sPageStyle);
+ uno::Reference< style::XStyle > xPStyle = *(uno::Reference< style::XStyle > *)aPStyle.getValue();
+ uno::Reference< beans::XPropertySet > xPProp(xPStyle, uno::UNO_QUERY);
+ uno::Any aSize = xPProp->getPropertyValue(C2U(UNO_NAME_SIZE));
+ awt::Size aPSize = *(awt::Size*)aSize.getValue();
+ //TODO: set page width to card width
+ aPSize.Width = 10000;
+ aSize.setValue(&aPSize, ::getCppuType((awt::Size*)0));
+ xPProp->setPropertyValue(C2U(UNO_NAME_SIZE), aSize);
+ }
+ rWindow.Show();
+ // can only be done here - the SFX changes the ScrollBar values
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_HORI_SCROLL_BAR ), aSet);
+ aSet.setValue(&bFalse, ::getBooleanCppuType()); xViewProps->setPropertyValue(C2U(UNO_NAME_SHOW_VERT_SCROLL_BAR ), aSet);
+
+ bIsInitialized = sal_True;
+ if(aInitializedLink.IsSet())
+ {
+ rWindow.Enable(sal_False, sal_True);
+ //rWindow.Enable(sal_True, sal_False);
+ aInitializedLink.Call(this);
+ }
+ SW_MOD()->SetView(pModuleView);
+ }
+ else
+ pTimer->Start();
+ return 0;
+}
+/* -----------------------------27.12.99 09:59--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwOneExampleFrame::ExecUndo()
+{
+ if(_xCursor.is())
+ {
+ uno::Reference< lang::XUnoTunnel > xTunnel(_xCursor, uno::UNO_QUERY);
+ SwXTextCursor* pCrsr = xTunnel.is() ?
+ (SwXTextCursor*)xTunnel->getSomething(SwXTextCursor::getUnoTunnelId()) : 0;
+
+ if(pCrsr)
+ {
+ SwDoc* pDoc = pCrsr->GetCrsr()->GetDoc();
+ SwEditShell* pSh = pDoc->GetEditShell();
+ pSh->Undo();
+ pDoc->ResetAttr(*pCrsr->GetCrsr());
+ }
+ else
+ {
+ _xCursor->gotoStart(sal_False);
+ _xCursor->gotoEnd(sal_True);
+ _xCursor->setString(OUString());
+ }
+ }
+}
+/* -----------------------------15.12.99 11:09--------------------------------
+
+ ---------------------------------------------------------------------------*/
+static const sal_Int16 nZoomValues[] =
+{
+ 20,
+ 40,
+ 50,
+ 75,
+ 100
+};
+//---------------------------------------------------------------------------
+#define ITEM_UP 100
+#define ITEM_DOWN 200
+#define ITEM_ZOOM 300
+
+void SwOneExampleFrame::CreatePopup(const Point& rPt)
+{
+ PopupMenu aPop;
+ PopupMenu aSubPop1;
+ ResStringArray& rArr = aMenuRes.GetMenuArray();
+
+ aPop.InsertItem(ITEM_UP, rArr.GetString(rArr.FindIndex(ST_MENU_UP )));
+ aPop.InsertItem(ITEM_DOWN, rArr.GetString(rArr.FindIndex(ST_MENU_DOWN )));
+
+ Link aSelLk = LINK(this, SwOneExampleFrame, PopupHdl );
+ aPop.SetSelectHdl(aSelLk);
+ if(EX_SHOW_ONLINE_LAYOUT == nStyleFlags)
+ {
+ aPop.InsertItem(ITEM_ZOOM, rArr.GetString(rArr.FindIndex(ST_MENU_ZOOM )));
+
+ uno::Reference< view::XViewSettingsSupplier > xSettings(_xController, uno::UNO_QUERY);
+ uno::Reference< beans::XPropertySet > xViewProps = xSettings->getViewSettings();
+
+ uno::Any aZoom = xViewProps->getPropertyValue(C2U(UNO_NAME_ZOOM_VALUE));
+ sal_Int16 nZoom;
+ aZoom >>= nZoom;
+
+ for(sal_uInt16 i = 0; i < 5; i++ )
+ {
+ String sTemp;
+ sTemp = String::CreateFromInt32(nZoomValues[i]);
+ sTemp += String::CreateFromAscii(" %");
+ aSubPop1.InsertItem( ITEM_ZOOM + i + 1, sTemp);
+ if(nZoom == nZoomValues[i])
+ aSubPop1.CheckItem(ITEM_ZOOM + i + 1);
+ }
+ aPop.SetPopupMenu( ITEM_ZOOM, &aSubPop1 );
+ aSubPop1.SetSelectHdl(aSelLk);
+ }
+ aPop.Execute( &aTopWindow, rPt );
+
+}
+/* -----------------------------15.12.99 11:09--------------------------------
+
+ ---------------------------------------------------------------------------*/
+IMPL_LINK(SwOneExampleFrame, PopupHdl, Menu*, pMenu )
+{
+ sal_uInt16 nId = pMenu->GetCurItemId();
+ if( nId > ITEM_ZOOM && nId < ITEM_ZOOM + 100 )
+ {
+ sal_Int16 nZoom = nZoomValues[nId - ITEM_ZOOM - 1];
+ uno::Reference< view::XViewSettingsSupplier > xSettings(_xController, uno::UNO_QUERY);
+ uno::Reference< beans::XPropertySet > xViewProps = xSettings->getViewSettings();
+
+ uno::Any aZoom;
+ aZoom <<= nZoom;
+ xViewProps->setPropertyValue(C2U(UNO_NAME_ZOOM_VALUE), aZoom);
+ aZoom <<= (sal_Int16)view::DocumentZoomType::BY_VALUE;
+ xViewProps->setPropertyValue(C2U(UNO_NAME_ZOOM_TYPE), aZoom);
+ }
+ else if(ITEM_UP == nId || ITEM_DOWN == nId)
+ {
+ uno::Reference< text::XTextViewCursorSupplier > xCrsrSupp(_xController, uno::UNO_QUERY);
+ uno::Reference< view::XScreenCursor > xScrCrsr(xCrsrSupp->getViewCursor(), uno::UNO_QUERY);
+ if(ITEM_UP == nId)
+ xScrCrsr->screenUp();
+ else
+ xScrCrsr->screenDown();
+ }
+ return 0;
+};
+/* -----------------------------15.12.99 10:37--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SwFrmCtrlWindow::SwFrmCtrlWindow(Window* pParent, WinBits nBits,
+ SwOneExampleFrame* pFrame) :
+ Window(pParent, nBits),
+ pExampleFrame(pFrame)
+{
+}
+/* -----------------------------15.12.99 09:57--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SwFrmCtrlWindow::Command( const CommandEvent& rCEvt )
+{
+ switch ( rCEvt.GetCommand() )
+ {
+ case COMMAND_CONTEXTMENU:
+ {
+ pExampleFrame->CreatePopup(rCEvt.GetMousePosPixel());
+ }
+ break;
+ case COMMAND_WHEEL:
+ case COMMAND_STARTAUTOSCROLL:
+ case COMMAND_AUTOSCROLL:
+ break;
+ default:;
+ }
+}
+/* -----------------------------15.12.99 12:57--------------------------------
+
+ ---------------------------------------------------------------------------*/
+MenuResource::MenuResource(const ResId& rResId) :
+ Resource(rResId),
+ aMenuArray(ResId(1))
+{
+ FreeResource();
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.34 2000/09/18 16:06:19 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.33 2000/09/14 14:47:48 os
+ #78770# CreateFromInt32
+
+ Revision 1.32 2000/08/28 08:12:24 os
+ #78015# Referer
+
+ Revision 1.31 2000/07/20 15:05:48 kz
+ properties renamed
+
+ Revision 1.30 2000/07/03 08:55:07 jp
+ must changes for VCL
+
+ Revision 1.29 2000/06/07 13:19:19 os
+ using UCB
+
+ Revision 1.28 2000/05/19 13:03:45 os
+ check interface in dtor
+
+ Revision 1.27 2000/05/16 09:15:14 os
+ project usr removed
+
+ Revision 1.26 2000/04/18 15:14:09 os
+ UNICODE
+
+ Revision 1.25 2000/03/23 13:25:02 os
+ #74334# create sub-popup within the same block as the main popup
+
+ Revision 1.24 2000/03/23 07:51:11 os
+ UNO III
+
+ Revision 1.23 2000/03/06 15:47:51 os
+ #73802# preview improved
+
+ Revision 1.22 2000/03/03 15:17:05 os
+ StarView remainders removed
+
+ Revision 1.21 2000/02/11 15:01:13 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.20 2000/02/04 14:59:53 os
+ #72599# mark current zoom level
+
+ Revision 1.19 1999/12/29 07:52:04 os
+ #71262# set zoom type first
+
+ Revision 1.18 1999/12/27 10:46:07 os
+ #71262# Undo in SwOneExampleFrame
+
+ Revision 1.17 1999/12/17 14:50:57 os
+ #70986# SwView of Example resets Module's view pointer
+
+ Revision 1.16 1999/12/15 15:32:45 os
+ #70234# ExampleFrame: OnlineLayout, ContextMenu, disabled
+
+ Revision 1.15 1999/12/09 12:29:12 os
+ #70284# show Bitmaps in hyperlink insert dialog# content.cxx glbltree.cxx navipi.hrc navipi.src
+
+ Revision 1.14 1999/12/07 15:41:50 os
+ #70574# old service names removed
+
+ Revision 1.13 1999/11/29 15:53:21 os
+ #70181# call dispose in dtor
+
+ Revision 1.12 1999/11/25 15:47:10 os
+ headers corrected
+
+ Revision 1.11 1999/11/25 08:58:07 os
+ hori scrollbar enabled
+
+ Revision 1.10 1999/11/23 10:18:09 os
+ header corrected
+
+ Revision 1.9 1999/11/19 16:40:25 os
+ modules renamed
+
+ Revision 1.8 1999/11/10 14:58:55 os
+ vertical scrollbar on
+
+ Revision 1.7 1999/10/22 15:06:25 os
+ user factory URL
+
+ Revision 1.6 1999/10/01 12:02:27 os
+ set bIsInitialized before calling the link
+
+ Revision 1.5 1999/09/20 09:58:54 os
+ local resources separated
+
+ Revision 1.4 1999/07/28 11:07:38 OS
+ new: SwOneExampleFrame
+
+
+ Rev 1.3 28 Jul 1999 13:07:38 OS
+ new: SwOneExampleFrame
+
+ Rev 1.2 02 Jul 1999 11:10:08 OS
+ #63003# NameWarning also in StarOne rename dialog
+
+ Rev 1.1 25 Jun 1999 10:22:40 OS
+ #67190# Names must be unique forall frames
+
+ Rev 1.0 10 Jun 1999 09:51:46 OS
+ SwRenameXNamedDialog
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/utlui/unotools.hrc b/sw/source/ui/utlui/unotools.hrc
new file mode 100644
index 000000000000..d3a4a386065b
--- /dev/null
+++ b/sw/source/ui/utlui/unotools.hrc
@@ -0,0 +1,75 @@
+/*************************************************************************
+ *
+ * $RCSfile: unotools.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 _UNOTOOLS_HRC
+#define _UNOTOOLS_HRC
+
+#define FT_NEW_NAME 1
+#define ED_NEW_NAME 2
+#define GB_NAME 3
+#define PB_OK 4
+#define PB_HELP 5
+#define PB_CANCEL 6
+
+#define ST_MENU_ZOOM 1
+#define ST_MENU_UP 2
+#define ST_MENU_DOWN 3
+
+#endif
diff --git a/sw/source/ui/utlui/unotools.src b/sw/source/ui/utlui/unotools.src
new file mode 100644
index 000000000000..6cf8bbc3272a
--- /dev/null
+++ b/sw/source/ui/utlui/unotools.src
@@ -0,0 +1,330 @@
+/*************************************************************************
+ *
+ * $RCSfile: unotools.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 <unotools.hrc>
+#include <utlui.hrc>
+#include <globals.hrc>
+#include <helpid.h>
+
+ModalDialog DLG_RENAME_XNAMED
+{
+ HelpID = HID_RENAME_XNAMED ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 180 , 60 ) ;
+ Text = "Objekt umbenennen: " ;
+ Text [ ENGLISH ] = "Rename object: " ;
+ Moveable = TRUE ;
+ FixedText FT_NEW_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "Neuer Name" ;
+ Text [ ENGLISH ] = "New name" ;
+ Text[ english_us ] = "New name";
+ Text[ portuguese ] = "Novo nome";
+ Text[ russian ] = "Ïðèñâîèòü èìÿ";
+ Text[ greek ] = "ÍÝï üíïìá";
+ Text[ dutch ] = "Nieuwe naam";
+ Text[ french ] = "Nouveau nom";
+ Text[ spanish ] = "Nuevo nombre";
+ Text[ italian ] = "Nome nuovo";
+ Text[ danish ] = "Nyt navn";
+ Text[ swedish ] = "Nytt namn";
+ Text[ polish ] = "Nowa nazwa";
+ Text[ portuguese_brazilian ] = "New name";
+ Text[ japanese ] = "V‚µ‚¢–¼‘O";
+ Text[ korean ] = "»õ À̸§";
+ Text[ chinese_simplified ] = "ÐÂÃû³Æ";
+ Text[ chinese_traditional ] = "·s¦WºÙ";
+ Text[ arabic ] = "ÇáÇÓã ÇáÌÏíÏ";
+ Text[ turkish ] = "Yeni ad";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_NEW_NAME
+ {
+ Pos = MAP_APPFONT ( 65 , 13 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ Border = TRUE;
+ };
+ GroupBox GB_NAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 115 , 54 ) ;
+ Text = "Name ändern";
+ Text [ ENGLISH ] = "Change name" ;
+ Text[ english_us ] = "Change name";
+ Text[ portuguese ] = "Mudar nome";
+ Text[ russian ] = "Èçìåíèòü èìÿ";
+ Text[ greek ] = "ÁëëáãÞ ïíüìáôïò";
+ Text[ dutch ] = "Naam wijzigen";
+ Text[ french ] = "Modifier le nom";
+ Text[ spanish ] = "Cambiar nombre";
+ Text[ italian ] = "Cambia nome";
+ Text[ danish ] = "Modificer navn";
+ Text[ swedish ] = "Ändra namn";
+ Text[ polish ] = "Zmieñ nazwê";
+ Text[ portuguese_brazilian ] = "Change name";
+ Text[ japanese ] = "–¼‘O‚Ì•ÏX";
+ Text[ korean ] = "À̸§ º¯°æ";
+ Text[ chinese_simplified ] = "¸ü¸ÄÃû³Æ";
+ Text[ chinese_traditional ] = "Åܧó¦WºÙ";
+ Text[ arabic ] = "ÊÚÏíá ÇáÇÓã";
+ Text[ turkish ] = "Adý deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton PB_OK
+ {
+ Pos = MAP_APPFONT ( 124 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton PB_CANCEL
+ {
+ Pos = MAP_APPFONT ( 124 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ };
+ HelpButton PB_HELP
+ {
+ Pos = MAP_APPFONT ( 124 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Group = TRUE ;
+ };
+ Text[ english_us ] = "Rename object: ";
+ Text[ portuguese ] = "Mudar nome do objecto: ";
+ Text[ russian ] = "Ïåðåèìåíîâàòü îáúåêò: ";
+ Text[ greek ] = "Ìåôïíïìáóßá áíôéêåéìÝíïõ: ";
+ Text[ dutch ] = "Objectnaam wijzigen: ";
+ Text[ french ] = "Renommer l'objet : ";
+ Text[ spanish ] = "Cambiar nombre de objeto: ";
+ Text[ italian ] = "Rinomina oggetto: ";
+ Text[ danish ] = "Omdøb objekt: ";
+ Text[ swedish ] = "Byt namn på objekt: ";
+ Text[ polish ] = "Zmieñ nazwê obiektu: ";
+ Text[ portuguese_brazilian ] = "Rename object: ";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä–¼‚Ì•ÏX: ";
+ Text[ korean ] = "°³Ã¼ À̸§ ¹Ù²Ù±â: ";
+ Text[ chinese_simplified ] = "ÖØÃüÃû¶ÔÏó£º ";
+ Text[ chinese_traditional ] = "­«·s©R¦Wª«¥ó¡G ";
+ Text[ arabic ] = "ÅÚÇÏÉ ÊÓãíÉ ÇáßÇÆä: ";
+ Text[ turkish ] = "Nesneyi yeniden adlandýr: ";
+ Text[ language_user1 ] = " ";
+};
+String STR_SERVICE_UNAVAILABLE
+{
+ Text = "Der folgende Service ist nicht verfügbar: " ;
+ Text [ English ] = "The following service is not available: " ;
+ Text[ english_us ] = "The following service is not available: ";
+ Text[ portuguese ] = "O seguinte serviço não está disponível: ";
+ Text[ russian ] = "Ñëåäóþùàÿ ñëóæáà íå äîñòóïíà: ";
+ Text[ greek ] = "Ç áêüëïõèç õðçñåóßá äåí åßíáé äéáèÝóéìç: ";
+ Text[ dutch ] = "De volgende service is niet beschikbaar: ";
+ Text[ french ] = "Le service suivant n'est pas disponible : ";
+ Text[ spanish ] = "El siguiente servicio no está disponible: ";
+ Text[ italian ] = "Il seguente servizio non è disponibile. ";
+ Text[ danish ] = "Følgende service er ikke tilgængelig: ";
+ Text[ swedish ] = "Följande service är inte tillgänglig: ";
+ Text[ polish ] = "Nastêpuj¹cy serwis jest niedostêpny: ";
+ Text[ portuguese_brazilian ] = "The following service is not available: ";
+ Text[ japanese ] = "ŽŸ‚Ì»°ËÞ½‚ÍŽg—p‚Å‚«‚Ü‚¹‚ñ: ";
+ Text[ korean ] = "´ÙÀ½ÀÇ ¼­ºñ½º´Â °¡´ÉÇÏÁö ¾Ê½À´Ï´Ù.: ";
+ Text[ chinese_simplified ] = "²»´æÔÚÏÂÁзþÎñ¹¦ÄÜ£º ";
+ Text[ chinese_traditional ] = "³o­ÓªA°È¥\\¯à¤£¦s¦b¡G ";
+ Text[ arabic ] = "ÇáÎÏãÉ ÇáÊÇáíÉ ÛíÑ ãÊæÝÑÉ: ";
+ Text[ turkish ] = "Aþaðýdaki hizmet kullanýlamýyor: ";
+ Text[ language_user1 ] = " ";
+};
+Resource RES_FRMEX_MENU
+{
+ StringArray 1
+ {
+ ItemList =
+ {
+ < "~Maßstab" ; ST_MENU_ZOOM; > ;
+ < "Nach ~oben" ; ST_MENU_UP; > ;
+ < "Nach ~unten" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [English]=
+ {
+ < "~Zoom" ; ST_MENU_ZOOM; > ;
+ < "Go up" ; ST_MENU_UP; > ;
+ < "Go down" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ language_user1 ] =
+ {
+ < " " ; ST_MENU_ZOOM; > ;
+ < "Nach ~oben" ; ST_MENU_UP; > ;
+ < "Nach ~unten" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ english_us ] =
+ {
+ < "~Zoom" ; ST_MENU_ZOOM; > ;
+ < "~Upwards" ; ST_MENU_UP; > ;
+ < "Do~wnwards" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ portuguese ] =
+ {
+ < "~Escala" ; ST_MENU_ZOOM; > ;
+ < "Para ~cima" ; ST_MENU_UP; > ;
+ < "Para ~baixo" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ russian ] =
+ {
+ < "~Ìàñøòàá" ; ST_MENU_ZOOM; > ;
+ < "Ââåðõ" ; ST_MENU_UP; > ;
+ < "Âíèç" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ greek ] =
+ {
+ < "Êëß~ìáêá" ; ST_MENU_ZOOM; > ;
+ < "Ðñ~ïò ôá ðÜíù" ; ST_MENU_UP; > ;
+ < "Ðñïò ôá êÜôù" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ dutch ] =
+ {
+ < "~Maatstaf" ; ST_MENU_ZOOM; > ;
+ < "Naar b~oven" ; ST_MENU_UP; > ;
+ < "Naar be~neden" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ french ] =
+ {
+ < "~Échelle" ; ST_MENU_ZOOM; > ;
+ < "Vers le ~haut" ; ST_MENU_UP; > ;
+ < "Vers le ~bas" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ spanish ] =
+ {
+ < "~Escala" ; ST_MENU_ZOOM; > ;
+ < "Hacia ~arriba" ; ST_MENU_UP; > ;
+ < "Hacia a~bajo" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ italian ] =
+ {
+ < "~Zoom" ; ST_MENU_ZOOM; > ;
+ < "In alt~o" ; ST_MENU_UP; > ;
+ < "In basso" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ danish ] =
+ {
+ < "~Målestok" ; ST_MENU_ZOOM; > ;
+ < "Opad" ; ST_MENU_UP; > ;
+ < "Nedad" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ swedish ] =
+ {
+ < "Skala" ; ST_MENU_ZOOM; > ;
+ < "Uppåt" ; ST_MENU_UP; > ;
+ < "Nedåt" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ polish ] =
+ {
+ < "~Skala" ; ST_MENU_ZOOM; > ;
+ < "Do góry" ; ST_MENU_UP; > ;
+ < "Na dó³" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ portuguese_brazilian ] =
+ {
+ < "~Maßstab" ; ST_MENU_ZOOM; > ;
+ < "Nach ~oben" ; ST_MENU_UP; > ;
+ < "Nach ~unten" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ japanese ] =
+ {
+ < "½Þ°Ñi~Zj" ; ST_MENU_ZOOM; > ;
+ < "ã‚Ö(~U)" ; ST_MENU_UP; > ;
+ < "‰º‚Ö(~W)" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ korean ] =
+ {
+ < "Ãà¼Ò/È®´ë(~Z)" ; ST_MENU_ZOOM; > ;
+ < "À§·Î(~U)" ; ST_MENU_UP; > ;
+ < "¾Æ·¡·Î(~W)" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ chinese_simplified ] =
+ {
+ < "±ÈÀý" ; ST_MENU_ZOOM; > ;
+ < "ÏòÉÏ" ; ST_MENU_UP; > ;
+ < "ÏòÏÂ" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ chinese_traditional ] =
+ {
+ < "Åã¥Ü¤ñ¨Ò" ; ST_MENU_ZOOM; > ;
+ < "¦V¤W" ; ST_MENU_UP; > ;
+ < "¦V¤U" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ arabic ] =
+ {
+ < "ÊßÈíÑ/ÊÕÛíÑ" ; ST_MENU_ZOOM; > ;
+ < "Åáì ÃÚáì" ; ST_MENU_UP; > ;
+ < "Åáì ÃÓÝá" ; ST_MENU_DOWN; > ;
+ };
+ ItemList [ turkish ] =
+ {
+ < "~Yakýnlaþtýr" ; ST_MENU_ZOOM; > ;
+ < "Y~ukarý" ; ST_MENU_UP; > ;
+ < "A~þaðý" ; ST_MENU_DOWN; > ;
+ };
+ };
+};
diff --git a/sw/source/ui/utlui/utlui.src b/sw/source/ui/utlui/utlui.src
new file mode 100644
index 000000000000..de8f23380a8c
--- /dev/null
+++ b/sw/source/ui/utlui/utlui.src
@@ -0,0 +1,1624 @@
+/*************************************************************************
+ *
+ * $RCSfile: utlui.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "globals.hrc"
+#include "utlui.hrc"
+#include "helpid.h"
+#include "comcore.hrc"
+
+
+Resource RID_SHELLRES_AUTOFMTSTRS
+{
+ String STR_AUTOFMTREDL_DEL_EMPTY_PARA+1
+ {
+ Text = "Leere Absätze entfernen" ;
+ Text [ English ] = "Remove empty paragraphs" ;
+ Text [ english_us ] = "Remove empty paragraphs" ;
+ Text [ swedish ] = "Ta bort tomma stycken" ;
+ Text [ danish ] = "Fjern tomme afsnit" ;
+ Text [ italian ] = "Elimina paragrafi vuoti" ;
+ Text [ spanish ] = "Eliminar párrafos vacíos" ;
+ Text [ french ] = "Supprimer les paragraphes vides" ;
+ Text [ dutch ] = "Lege alinea´s verwijderen" ;
+ Text [ portuguese_brazilian ] = "Leere Absätze entfernen" ;
+ Text [ portuguese ] = "Remover parágrafos vazios" ;
+ Text[ chinese_simplified ] = "ɾ³ý¿Õ°×¶ÎÂä";
+ Text[ russian ] = "Óäàëèòü ïóñòûå àáçàöû";
+ Text[ polish ] = "Usuñ puste akapity";
+ Text[ japanese ] = "‹ó‚Ì’i—Ž‚ðíœ";
+ Text[ chinese_traditional ] = "§R°£ªÅ¥Õ¬q¸¨";
+ Text[ arabic ] = "ÅÒÇáÉ ÇáÝÞÑÇÊ ÇáÝÇÑÛÉ";
+ Text[ greek ] = "ÄéáãñáöÞ êåíþí ðáñáãñÜöùí";
+ Text[ korean ] = "ºó ´Ü¶ô Á¦°Å";
+ Text[ turkish ] = "Boþ paragraflarý kaldýr";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_USE_REPLACE+1
+ {
+ Text = "Ersetzungstabelle anwenden" ;
+ Text [ English ] = "Apply replacement table" ;
+ Text [ english_us ] = "Use replacement table" ;
+ Text [ swedish ] = "Använd ersättningstabell" ;
+ Text [ danish ] = "Anvend erstatningstabel" ;
+ Text [ italian ] = "Applica tabella delle sostituzioni" ;
+ Text [ spanish ] = "Usar tabla de sustitución" ;
+ Text [ french ] = "Utiliser la table de remplacement" ;
+ Text [ dutch ] = "Vervangingstabel gebruiken" ;
+ Text [ portuguese_brazilian ] = "Ersetzungstabelle anwenden" ;
+ Text [ portuguese ] = "Aplicar tabela de substituição" ;
+ Text[ chinese_simplified ] = "ʹÓøüÌæ±í¸ñ";
+ Text[ russian ] = "Ïðèìåíèòü òàáëèöó çàìåí";
+ Text[ polish ] = "U¿yj tabeli zamian";
+ Text[ japanese ] = "’uŠ·Ã°ÌÞÙ‚ÌŽg—p";
+ Text[ chinese_traditional ] = "¨Ï¥Î¥N´Àªí";
+ Text[ arabic ] = "ÇÓÊÎÏÇã ÞÇÆãÉ ÇáÇÓÊÈÏÇá";
+ Text[ greek ] = "ÅöáñìïãÞ ðßíáêá áíôéêáôÜóôáóçò";
+ Text[ korean ] = "´ëü Ç¥ Àû¿ë";
+ Text[ turkish ] = "Deðiþtirme tablosunu kullan";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_CPTL_STT_WORD+1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? ZWei Großbuchstaben am WOrtanfang korrigieren : ZWei Gro˜buchstaben am WOrtanfang korrigieren */
+ Text = "ZWei Großbuchstaben am WOrtanfang korrigieren" ;
+ Text [ ENGLISH ] = "REplace two Capital Letters at the WOrd beginning" ;
+ Text [ norwegian ] = "ERstatt to Store Bokstaver i begynnelsen av ORd" ;
+ Text [ italian ] = "COrreggi la doppia MAiuscola ad inizio PArola" ;
+ Text [ portuguese_brazilian ] = "SUbstituir duas Letras Maiosculas no in¡cio da Palavra" ;
+ Text [ portuguese ] = "COrrigir duas maiúsculas no INício da palavra" ;
+ Text [ finnish ] = "Korvaa kaksi ISoa kirjainta sanan alussa" ;
+ Text [ danish ] = "REt andet bogstav i ORd til lille" ;
+ Text [ french ] = "COrriger la 2e majuscule en DÉbut de mot" ;
+ Text [ swedish ] = "KOrrigera två versaler i BÖrjan av ordet" ;
+ Text [ dutch ] = "TWee hoofdletters aan WOordbegin corrigeren" ;
+ Text [ spanish ] = "Corregir DOs MAyúsculas a principio de PAlabra" ;
+ Text [ english_us ] = "Correct TWo INitial CApitals" ;
+ Text[ chinese_simplified ] = "¸üÕý×ÖÊ×Ë«ÖØ´óд×Öĸ";
+ Text[ russian ] = "Èñïðàâëÿòü ÄÂå ÏÐîïèñíûå áóêâû â íà÷àëå ñëîâà";
+ Text[ polish ] = "Poprawiaj DWa POcz¹tkowe WErsaliki";
+ Text[ japanese ] = "2•¶Žš–ڂ𬕶Žš‚É‚·‚é";
+ Text[ chinese_traditional ] = "®Õ¥¿¦r­ºÂù¤j¼g¦r¥À";
+ Text[ arabic ] = "ÊÕÍíÍ ÍÑÝíä ÇÓÊåáÇáííä Ýí ÈÏÇíÉ ÇáßáãÉ";
+ Text[ greek ] = "Äéüñèùóç ÄÕï êåöáëáßùí ãñáììÜôùí óôçí ÁÑ÷Þ ôçò ëÝîçò";
+ Text[ korean ] = "´Ü¾î óÀ½ÀÇ µÎ ´ë¹®ÀÚ ¼öÁ¤";
+ Text[ turkish ] = "SÖzcük baþýndaki ÝKi büyük harfi düzelt";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_CPTL_STT_SENT+1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Jeden Satz mit einem Großbuchstaben beginnen : Jeden Satz mit einem Gro˜buchstaben beginnen */
+ Text = "Jeden Satz mit einem Großbuchstaben beginnen" ;
+ Text [ ENGLISH ] = "Start each Sentence with a Capital Letter" ;
+ Text [ norwegian ] = "Begynn hver Setning med Stor Bokstav" ;
+ Text [ italian ] = "Inizia ogni frase con la maiuscola" ;
+ Text [ portuguese_brazilian ] = "Iniciar cada Sentença com uma Letra Maioscula" ;
+ Text [ portuguese ] = "Iniciar todas as frases com uma letra maiúscula" ;
+ Text [ finnish ] = "Aloita jokainen virke isolla kirjaimella" ;
+ Text [ danish ] = "Første bogstav i sætninger med stort" ;
+ Text [ french ] = "Majuscule en début de phrase" ;
+ Text [ swedish ] = "Börja varje mening med en versal" ;
+ Text [ dutch ] = "Elke zin met een hoofdletter beginnen" ;
+ Text [ spanish ] = "Iniciar cada frase con una letra mayúscula" ;
+ Text [ english_us ] = "Capitalize first letter of sentences" ;
+ Text[ chinese_simplified ] = "ÿ¸ö¾äÊײÉÓôóд×Öĸ";
+ Text[ russian ] = "Íà÷èíàòü êàæäîå ïðåäëîæåíèå ñ ïðîïèñíîé áóêâû";
+ Text[ polish ] = "Pocz¹tek zdania z du¿ej litery";
+ Text[ japanese ] = "‚·‚ׂĂ̕¶‚ð‘啶Žš‚ÅŽn‚ß‚é";
+ Text[ chinese_traditional ] = "¨C­Ó¥y­º±Ä¥Î¤j¼g¦r¥À";
+ Text[ arabic ] = "ÈÏÁ ßá ÌãáÉ ÈÍÑÝ ÇÓÊåáÇáí";
+ Text[ greek ] = "Åêêßíçóç êÜèå ðñüôáóçò ìå êåöáëáßï ãñÜììá";
+ Text[ korean ] = "¸ðµç ¹®ÀåÀ» ´ë¹®ÀÚ·Î ½ÃÀÛ";
+ Text[ turkish ] = "Cümleleri büyük harf ile baþlat.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_TYPO+1
+ {
+ Text = "\"Gerade\" Anführungszeichen durch %1typografische%2 ersetzen" ;
+ Text [ ENGLISH ] = "Replace \"Standard\" Quotes by %1typographical%2 Quotes" ;
+ Text [ norwegian ] = "Erstatt \"Standard\" +++Quotes med %1typografiske%2 +++Quotes" ;
+ Text [ italian ] = "Sostituisci virgolette \"Standard\" con virgolette %1tipografiche%2" ;
+ Text [ portuguese_brazilian ] = "Substituir Citaçäes\"Padrao\" por Citaçäes \\%1typogr ficoal\\%2" ;
+ Text [ portuguese ] = "Substituir aspas \"padrão\" por aspas %1tipográficas%2" ;
+ Text [ finnish ] = "Korvaa \"vakio\"lainausmerkit %1typografisilla%2" ;
+ Text [ danish ] = "Erstat \"lige\" anførselstegn med %1typografiske%2" ;
+ Text [ french ] = "Remplacer les guillemets \"standard\" par des guillemets %1typographiques%2" ;
+ Text [ swedish ] = "Ersätt \"raka\" citationstecken med %1typografiska%2 citationstecken" ;
+ Text [ dutch ] = "\"Rechte\" aanhalingstekens vervangen door %1 typografische%2" ;
+ Text [ spanish ] = "Reemplazar comillas \"rectas\" con comillas %1tipográficas%2" ;
+ Text [ english_us ] = "Replace \"standard\" quotes with %1custom%2 quotes" ;
+ Text[ chinese_simplified ] = "\"Ö±ÐÍ\"ÒýºÅÓÉ%1¸öÈËÒýºÅ%2 ´úÌæ";
+ Text[ russian ] = "Çàìåíÿòü \"ïðÿìûå\" êàâû÷êè %1òèïîãðàôñêèìè %2";
+ Text[ polish ] = "Zamieniaj cudzys³owy \"proste\" na %1 \"drukarskie\" %2";
+ Text[ japanese ] = "\"ºÝËß­°À—p\"¸«°Ã°¼®ÝÏ°¸‚ð%1ˆóü—p%2‚É’uŠ·";
+ Text[ chinese_traditional ] = "\"ª½«¬¤Þ¸¹\"¥Ñ%1­Ó¤H¤Þ¸¹%2 ´À¥N";
+ Text[ arabic ] = "ÇÓÊÈÏÇá ÚáÇãÇÊ ÊäÕíÕ \"ÚÇÏíÉ\" ÈÜÚáÇãÇÊ ÊäÕíÕ%1ØÈæÛÑÇÝíøÉ%2";
+ Text[ greek ] = "ÁíôéêáôÜóôáóç \"ßóùí\" åéóáãùãéêþí ìå %1ôõðïãñáöéêÜ%2";
+ Text[ korean ] = "\"Á÷¼±\" ÀοëºÎÈ£¸¦ %1Àμâü%2 ÀοëºÎÈ£·Î ¹Ù²Þ";
+ Text[ turkish ] = "\"Düz\" týrnak iþaretlerini %1tipografik iþaretler ile%2 deðiþtir";
+ };
+ String STR_AUTOFMTREDL_USER_STYLE+1
+ {
+ Text = "Benutzervorlagen ersetzen" ;
+ Text [ English ] = "Replace user styles" ;
+ Text [ dutch ] = "Eigen opmaakprofielen vervangen" ;
+ Text [ english_us ] = "Replace Custom Styles" ;
+ Text [ swedish ] = "Ersätt användardefinierade formatmallar" ;
+ Text [ danish ] = "Erstat brugertypografier" ;
+ Text [ italian ] = "Sostituisci modelli utente" ;
+ Text [ spanish ] = "Reemplazar estilos del usuario" ;
+ Text [ french ] = "Remplacer les styles personnalisés" ;
+ Text [ portuguese ] = "Substituir estilos personalizados" ;
+ Text [ portuguese_brazilian ] = "Benutzervorlagen ersetzen" ;
+ Text[ chinese_simplified ] = "¸üÌæÓû§Ñùʽ";
+ Text[ russian ] = "Çàìåíèòü ñòèëè ïîëüçîâàòåëÿ";
+ Text[ polish ] = "Zamieñ szablony u¿ytkownika";
+ Text[ japanese ] = "Õ°»Þ°Ý’è‚̽À²Ù‚É’u‚«Š·‚¦‚é";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¥N´À¦Û­q¼Ë¦¡";
+ Text[ arabic ] = "ÇÓÊÈÏÇá ÇáÃäãÇØ ÇáãÎÕÕÉ";
+ Text[ greek ] = "ÁíôéêáôÜóôáóç ðñïóáñìïóìÝíùí ðñïôýðùí";
+ Text[ korean ] = "»ç¿ëÀÚ ¼­½ÄÆÄÀÏ ´ëü";
+ Text[ turkish ] = "Kullanýcý biçimini deðiþtir";
+ };
+ String STR_AUTOFMTREDL_BULLET+1
+ {
+ Text = "Bulletzeichen ersetzt" ;
+ Text [ ENGLISH ] = "Replace Bullets" ;
+ Text[ italian ] = "Punti sostituiti";
+ Text[ portuguese_brazilian ] = "Replace Bullets";
+ Text[ portuguese ] = "Marca substituída";
+ Text[ danish ] = "Erstat punkttegn";
+ Text[ french ] = "Remplacer les puces";
+ Text[ swedish ] = "Ersätt uppräkningstecken";
+ Text[ dutch ] = "Opsommingstekens vervangen";
+ Text[ spanish ] = "Viñeta reemplazada";
+ Text[ english_us ] = "Bullets replaced";
+ Text[ chinese_simplified ] = "¸üÌæÏîÄ¿±àºÅ";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Ìàðêåðû çàìåíåíû";
+ Text[ polish ] = "Zamienione znaki wypunktowania";
+ Text[ japanese ] = "‰Óð‘‚«‹L†‚É’uŠ·";
+ Text[ chinese_traditional ] = "¥N´À¶µ¥Ø½s¸¹";
+ Text[ arabic ] = "ÇÓÊÈÏÇá ÚáÇãÇÊ ÇáÊÚÏÇÏ";
+ Text[ greek ] = "Ç áíôéêáôÜóôáóç êïõêßäùí ïëïêëçñþèçêå";
+ Text[ korean ] = "±Û¸Ó¸®Ç¥ ´ëü";
+ Text[ turkish ] = "Sýralama iþareti deðiþtirildi";
+ };
+ String STR_AUTOFMTREDL_UNDER+1
+ {
+ Text = "Automatisch _unterstrichen_" ;
+ Text [ English ] = "Automatic _underline_" ;
+ Text[ italian ] = "_Sottolineato_ automatico";
+ Text[ portuguese_brazilian ] = "Automatic _underline_";
+ Text[ portuguese ] = "_sublinhado_automático";
+ Text[ danish ] = "Automatisk _understreget_";
+ Text[ french ] = "_Soulignage_ automatique";
+ Text[ swedish ] = "Automatiskt _understruket_";
+ Text[ dutch ] = "Automatisch _onderstrepen_";
+ Text[ spanish ] = "Subrayado_automático_";
+ Text[ english_us ] = "Automatic _underline_";
+ Text[ chinese_simplified ] = "×Ô¶¯_Ï»®Ïß_";
+ Text[ russian ] = "Àâòîìàòè÷åñêîå _ïîä÷åðêèâàíèå_";
+ Text[ polish ] = "Automatyczne _podkreœlenie_";
+ Text[ japanese ] = "Ž©“®_‰ºü_";
+ Text[ chinese_traditional ] = "¦Û°Ê_¤U¹º½u_";
+ Text[ arabic ] = "_ÎØ ÊÍÊí_ ÊáÞÇÆíÇð";
+ Text[ greek ] = "Áõôüìáôç _õðïãñÜììéóç_";
+ Text[ korean ] = "ÀÚµ¿ _¹ØÁÙ_";
+ Text[ turkish ] = "Altýný_otomatik_çiz_";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_BOLD+1
+ {
+ Text = "Automatisch *fett*" ;
+ Text [ English ] = "Automatic *bold*" ;
+ Text[ italian ] = "*Grassetto* automatico";
+ Text[ portuguese_brazilian ] = "Automatic *bold*";
+ Text[ portuguese ] = "*negrito* automático";
+ Text[ danish ] = "Automatisk *fed*";
+ Text[ french ] = "*Gras* automatique";
+ Text[ swedish ] = "Automatiskt *fet*";
+ Text[ dutch ] = "Automatisch *vet*";
+ Text[ spanish ] = "*Negrita* automático";
+ Text[ english_us ] = "Automatic *bold*";
+ Text[ chinese_simplified ] = "×Ô¶¯ *´ÖÌå*";
+ Text[ russian ] = "Àâòîìàòè÷åñêè *æèðíûé*";
+ Text[ polish ] = "Automatyczne *pogrubienie*";
+ Text[ japanese ] = "Ž©“® *‘¾Žš*";
+ Text[ chinese_traditional ] = "¦Û°Ê *²ÊÅé*";
+ Text[ arabic ] = "*ÚÑíÖ* ÊáÞÇÆíÇð";
+ Text[ greek ] = "ÁõôïìÜôùò *Ýíôïíá*";
+ Text[ korean ] = "ÀÚµ¿À¸·Î *ÁøÇÏ°Ô*";
+ Text[ turkish ] = "Otomatik *kalýn*";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_FRACTION+1
+ {
+ Text = "1/2 ... durch ½ ... ersetzen" ;
+ Text [ English ] = "Replace 1/2 ... with ½ ..." ;
+ Text [ english_us ] = "Replace 1/2 ... with ½ ..." ;
+ Text [ swedish ] = "Ersätt 1/2 ... med ½ ..." ;
+ Text [ danish ] = "Erstat 1/2 ...med ½ ..." ;
+ Text [ italian ] = "Sostituisci 1/2 ... con ½" ;
+ Text [ spanish ] = "Reemplazar 1/2 ... por ½ ..." ;
+ Text [ dutch ] = "1/2 ... vervangen door ½ ..." ;
+ Text [ portuguese_brazilian ] = "1/2 ... gegen ½ ... ersetzen" ;
+ Text [ french ] = "Remplacer 1/2 ... par ½ ..." ;
+ Text [ portuguese ] = "Substituir 1/2 ... por ½ ..." ;
+ Text[ chinese_simplified ] = "Óà ?... ¸üÌæ 1/2 ...";
+ Text[ russian ] = "Çàìåíÿòü 1/2 ... íà ñèìâîëû";
+ Text[ polish ] = "Zamieñ 1/2 ... na \" ... ";
+ Text[ japanese ] = "1/2 ... ‚ð ½ ... ‚É’u‚«Š·‚¦‚é";
+ Text[ chinese_traditional ] = "¥Î ?... ¥N´À 1/2 ...";
+ Text[ arabic ] = "ÇÓÊÈÏÇá 1/2 ... ÈÜ ½...";
+ Text[ greek ] = "ÁíôéêáôÜóôáóç 1/2 ... ìå ½ ...";
+ Text[ korean ] = "1/2 ...À» ?...·Î ´ëü";
+ Text[ turkish ] = "1/2 ... yazýldýðýnda ½ ... ile deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_DETECT_URL+1
+ {
+ Text = "URL erkennen" ;
+ Text [ English ] = "Detect URL" ;
+ Text [ english_us ] = "URL recognition" ;
+ Text [ italian ] = "Riconosci URL" ;
+ Text [ spanish ] = "Reconocer URL" ;
+ Text [ french ] = "Détecter les URLs" ;
+ Text [ dutch ] = "URL herkennen" ;
+ Text [ swedish ] = "Känn igen URL" ;
+ Text [ danish ] = "Identificer URL" ;
+ Text [ portuguese_brazilian ] = "URL erkennen" ;
+ Text [ portuguese ] = "Reconhecer URL" ;
+ Text[ chinese_simplified ] = "ʶ±ð URL";
+ Text[ russian ] = "Ðàñïîçíàâàòü URL";
+ Text[ polish ] = "Rozpoznanie URL";
+ Text[ japanese ] = "URL ”FŽ¯";
+ Text[ chinese_traditional ] = "ÃѧO URL";
+ Text[ arabic ] = "ÇáÊÚÑÝ Úáì URL";
+ Text[ greek ] = "Áíáãíþñéóç URL";
+ Text[ korean ] = "URL ÀνÄ";
+ Text[ turkish ] = "URL taný";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_DASH+1
+ {
+ Text = "Gedankenstriche ersetzen" ;
+ Text [ English ] = "Replace dashes" ;
+ Text [ english_us ] = "Replace dashes" ;
+ Text [ swedish ] = "Ersätt tankstreck" ;
+ Text [ danish ] = "Erstat tankestreger" ;
+ Text [ italian ] = "Sostituisci trattini" ;
+ Text [ spanish ] = "Reemplazar comillas" ;
+ Text [ french ] = "Remplacer les tirets" ;
+ Text [ dutch ] = "Streepjes vervangen" ;
+ Text [ portuguese_brazilian ] = "Gedankenstriche ersetzen" ;
+ Text [ portuguese ] = "Substituir hífens" ;
+ Text[ chinese_simplified ] = "¸üÌæÆÆÕÛºÅ";
+ Text[ russian ] = "Çàìåíèòü òèðå";
+ Text[ polish ] = "Zamieniaj myœlniki";
+ Text[ japanese ] = "ÀÞ¯¼­‚É’uŠ·";
+ Text[ chinese_traditional ] = "¥N´À¯}§é¸¹";
+ Text[ arabic ] = "ÇÓÊÈÏÇá ÇáÔõÑóØ";
+ Text[ greek ] = "ÁíôéêáôÜóôáóç ðáõëþí";
+ Text[ korean ] = "´ë½Ã ´ëü";
+ Text[ turkish ] = "Tireleri deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_ORDINAL+1
+ {
+ Text = "1st ... durch 1^st ... ersetzen" ;
+ Text [ English ] = "Replace 1st with 1^st" ;
+ Text [ english_us ] = "Replace 1st... with 1^st..." ;
+ Text [ italian ] = "Sostituisci 1o ... con 1° ..." ;
+ Text [ spanish ] = "Reemplazar 1st ... con 1^st ..." ;
+ Text [ french ] = "Remplacer 1er ... par 1^er ..." ;
+ Text [ dutch ] = "1st ... vervangen door 1^st ..." ;
+ Text [ swedish ] = "Ersätt engelska ordningstal (1st)... med 1^st..." ;
+ Text [ danish ] = "Erstat 1st ... med 1^st ..." ;
+ Text [ portuguese_brazilian ] = "1st ... gegen 1^st ... ersetzen" ;
+ Text [ portuguese ] = "Substituir 1o... por 1º..." ;
+ Text[ chinese_simplified ] = "Óà 1^st... ¸üÌæ 1st...";
+ Text[ russian ] = "Çàìåíèòü 1st ... íà 1^st ...";
+ Text[ polish ] = "Zamieñ 1st ... na 1^st ... ";
+ Text[ japanese ] = "1st ...‚ð 1^st ... ‚É’u‚«Š·‚¦‚é";
+ Text[ chinese_traditional ] = "¥Î 1^st... ¥N´À 1st...";
+ Text[ arabic ] = "ÇÓÊÈÏÇá 1st ... ÈÜ 1^st ...";
+ Text[ greek ] = "ÁíôéêáôÜóôáóç 1ï... ìå 1^ï...";
+ Text[ korean ] = "1st...À» 1^st...·Î ´ëü";
+ Text[ turkish ] = "1st ... yazýldýðýnda 1^st ... ile deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_RIGHT_MARGIN+1
+ {
+ Text = "Zusammenfassen von einzeiligen Absätzen" ;
+ Text [ ENGLISH ] = "Combine single line paragraphs" ;
+ Text[ italian ] = "Mantieni assieme i paragrafi ad una riga";
+ Text[ portuguese_brazilian ] = "Combine single line paragraphs";
+ Text[ portuguese ] = "Unir parágrafos de uma linha";
+ Text[ danish ] = "Kombiner enkeltlinjede afsnit";
+ Text[ french ] = "Fusionner les paragraphes à une seule ligne";
+ Text[ swedish ] = "Sammanfoga enradiga stycken";
+ Text[ dutch ] = "Eenregelige alinea's samenvoegen";
+ Text[ spanish ] = "Unir párrafos de una línea";
+ Text[ english_us ] = "Combine single line paragraphs";
+ Text[ chinese_simplified ] = "ºÏ²¢µ¥ÐжÎÂä";
+ Text[ russian ] = "Îáúåäèíåíèå îäíîñòðî÷íûõ àáçàöåâ";
+ Text[ polish ] = "Po³¹czenie akapitów jednowierszowych";
+ Text[ japanese ] = "1s’i—Ž‚ÌŒ‹‡";
+ Text[ chinese_traditional ] = "¦X¨Ö³æ¦æ¬q¸¨";
+ Text[ arabic ] = "ÏãÌ ÇáÝÞÑÇÊ ÃÍÇÏíÉ ÇáÃÓØÑ";
+ Text[ greek ] = "¸íùóç ìïíüãñáììùí ðáñáãñÜöùí";
+ Text[ korean ] = "ÇÑÁÙ ´Ü¶ô ÇÕÄ¡±â";
+ Text[ turkish ] = "Tek satýrlý paragraflarý birleþtir";
+ Text[ language_user1 ] = " ";
+ };
+
+ String STR_AUTOFMTREDL_SET_TMPL_TEXT +1
+ {
+ Text = "Setze Vorlage \"Textkörper\"" ;
+ Text [ English ] = "Set template \"Text body\"" ;
+ Text[ italian ] = "Imposta modello \"corpo del testo\"";
+ Text[ portuguese_brazilian ] = "Set template \"Text body\"";
+ Text[ portuguese ] = "Aplicar estilo \"Corpo do texto\"";
+ Text[ danish ] = "Anvend typografi \"Brødtekst\"";
+ Text[ french ] = "Appliquer le style \"Corps de texte\"";
+ Text[ swedish ] = "Använd formatmallen \"Brödtext\"";
+ Text[ dutch ] = "Sjabloon \"Tekstblok\" toepassen";
+ Text[ spanish ] = "Aplicar estilo \"Cuerpo de texto\"";
+ Text[ english_us ] = "Set \"Text body\" Style";
+ Text[ chinese_simplified ] = "É趨¡°ÕýÎÄ¡±Ñùʽ";
+ Text[ russian ] = "Óñòàíîâèòü ñòèëü \"Îñíîâíîé òåêñò\"";
+ Text[ polish ] = "U?yj szablonu \"Obszar tekstowy\"";
+ Text[ japanese ] = "\"–{•¶\"‚̽À²ÙÝ’è";
+ Text[ chinese_traditional ] = "³]©w¼Ë¦¡¡§¤º¤å¡¨";
+ Text[ arabic ] = "ÊÚííä ÇáäãØ \"ÌÓã ÇáäÕ\"";
+ Text[ greek ] = "Ïñéóìüò ðñïôýðïõ \"Óþìá êåéìÝíïõ\"";
+ Text[ korean ] = "\"º»¹®\" À¯Çü ¼³Á¤";
+ Text[ turkish ] = "\"Metin gövdesi\" biçimini uygula";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_SET_TMPL_INDENT +1
+ {
+ Text = "Setze Vorlage \"Textkörper Einzug\"" ;
+ Text [ English ] = "Set template \"Text body indent\"" ;
+ Text[ italian ] = "Imposta modello \"rientro corpo del testo\"";
+ Text[ portuguese_brazilian ] = "Set template \"Text body indent\"";
+ Text[ portuguese ] = "Aplicar estilo \"Abrir parágrafo\"";
+ Text[ danish ] = "Anvend typografi \"Første linjes indrykning\"";
+ Text[ french ] = "Appliquer le style \"Alinéa\"";
+ Text[ swedish ] = "Använd formatmallen \"Dra in första raden\"";
+ Text[ dutch ] = "Sjabloon \"1e regel inspringen\" toepassen";
+ Text[ spanish ] = "Aplicar estilo \"Sangría de primera línea\"";
+ Text[ english_us ] = "Set \"Text body indent\" Style";
+ Text[ chinese_simplified ] = "É趨¡°ÕýÎÄËõ½ø¡±Ñùʽ";
+ Text[ russian ] = "Óñòàíîâèòü ñòèëü \"Ïåðâàÿ ñòðîêà ñ îòñòóïîì\"";
+ Text[ polish ] = "U¿yj szablonu \"Wciêcie obszaru tekstowego\"";
+ Text[ japanese ] = "\"–{•¶²ÝÃÞÝÄ\"‚̽À²ÙÝ’è";
+ Text[ chinese_traditional ] = "³]©w¼Ë¦¡¡§¤º¤åÁY±Æ¡¨";
+ Text[ arabic ] = "ÊÚííä ÇáäãØ \"ÅÒÇÍÉ ÌÓã ÇáäÕ\"";
+ Text[ greek ] = "Ïñéóìüò ðñïôýðïõ \"Åóï÷Þ ðñþôçò ãñáììÞò\"";
+ Text[ korean ] = "\"º»¹® µé¿©¾²±â\" À¯Çü ¼³Á¤";
+ Text[ turkish ] = "\"Metin gövdesi - girinti\" biçimini uygula";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_SET_TMPL_NEG_INDENT +1
+ {
+ Text = "Setze Vorlage \"Textkörper Einzug negativ\"" ;
+ Text [ English ] = "Set template \"Text body neg. indent\"" ;
+ Text[ italian ] = "Imposta modello \"rientro corpo del testo negativo\"";
+ Text[ portuguese_brazilian ] = "Set template \"Text body neg. indent\"";
+ Text[ portuguese ] = "Aplicar estilo \"Abrir parágrafo negativo\"";
+ Text[ danish ] = "Anvend typografi \"Hængende indrykning\"";
+ Text[ french ] = "Appliquer le style \"Alinéa négatif\"";
+ Text[ swedish ] = "Använd formatmallen \"Negativt indrag av första raden\"";
+ Text[ dutch ] = "Sjabloon \"1e regel uitspringen\" toepassen";
+ Text[ spanish ] = "Aplicar estilo \"Sangría negativa de primera línea\"";
+ Text[ english_us ] = "Set \"Hanging indent\" Style";
+ Text[ chinese_simplified ] = "É趨¡°ÕýÎĸºÏòËõ½ø¡±Ñùʽ";
+ Text[ russian ] = "Óñòàíîâèòü ñòèëü \"Îáðàòíûé îòñòóï\"";
+ Text[ polish ] = "U¿yj szablonu \"Neg. wciêcie obszaru tekstu\"";
+ Text[ japanese ] = "\"–{•¶Ï²Å½²ÝÃÞÝÄ\"‚̽À²ÙÝ’è";
+ Text[ chinese_traditional ] = "³]©w¼Ë¦¡¡§¤º¤å­tÁY±Æ¡¨";
+ Text[ arabic ] = "ÊÚííä ÇáäãØ \"ÅÒÇÍÉ ÌÓã äÕ ÓáÈíÉ\"";
+ Text[ greek ] = "Ïñéóìüò ðñïôýðïõ \"ÁñíçôéêÞ åóï÷Þ óþìáôïò êåéìÝíïõ\"";
+ Text[ korean ] = "\"º»¹® ³»¾î¾²±â\" À¯Çü ¼³Á¤";
+ Text[ turkish ] = "\"Asýlý girinti\" biçimini uygula";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_SET_TMPL_TEXT_INDENT +1
+ {
+ Text = "Setze Vorlage \"Textkörper Einrückung\"" ;
+ Text [ English ] = "Set template \"Text body move in\"" ;
+ Text[ italian ] = "Imposta modello \"rientro corpo del testo\"";
+ Text[ portuguese_brazilian ] = "Set template \"Text body move in\"";
+ Text[ portuguese ] = "Aplicar estilo \"Avanço corpo do texto\"";
+ Text[ danish ] = "Anvend typografi \"Brødtekst indrykning\"";
+ Text[ french ] = "Appliquer le style \"Retrait de corps de texte\"";
+ Text[ swedish ] = "Använd formatmallen \"Dra in hela stycket\"";
+ Text[ dutch ] = "Sjabloon \"Tekstblok inspringen\" toepassen";
+ Text[ spanish ] = "Aplicar estilo \"Cuerpo de texto con sangría\"";
+ Text[ english_us ] = "Set \"Text body indent\" Style";
+ Text[ chinese_simplified ] = "É趨¡°ÕýÎÄËõ½ø¡±Ñùʽ";
+ Text[ russian ] = "Óñòàíîâèòü ñòèëü \"Îñíîâíîé òåêñò ñ îòñòóïîì\"";
+ Text[ polish ] = "U?yj szablonu \"Wysuniecie obszaru tekst.\"";
+ Text[ japanese ] = "\"–{•¶²ÝÃÞÝÄ\"‚̽À²ÙÝ’è";
+ Text[ chinese_traditional ] = "³]©w¼Ë¦¡¡§¤º¤åÁY±Æ¡¨";
+ Text[ arabic ] = "ÊÚííä ÇáäãØ \"ÅÒÇÍÉ ÌÓã ÇáäÕ (ÇáÓØÑ ÇáÃæá)\"";
+ Text[ greek ] = "Ïñéóìüò ðñïôýðïõ \"Åóï÷Þ óþìáôïò êåéìÝíïõ\"";
+ Text[ korean ] = "À¯Çü \"º»¹® µé¿©¾²±â\" ¼³Á¤";
+ Text[ turkish ] = "\"Metin gövdesi - satýrbaþý\" biçimini uygula";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_SET_TMPL_HEADLINE +1
+ {
+ Text = "Setze Vorlage \"Überschrift $(ARG1)\"" ;
+ Text [ English ] = "Set template \"Headline $(ARG1)\"" ;
+ Text[ italian ] = "Imposta modello \"intestazione $(ARG1)\"";
+ Text[ portuguese_brazilian ] = "Set template \"Headline $(ARG1)\"";
+ Text[ portuguese ] = "Aplicar estilo \"Título $(ARG1)\"";
+ Text[ danish ] = "Anvend typografi \"Overskrift $(ARG1)\"";
+ Text[ french ] = "Appliquer le style \"Titre $(ARG1)\"";
+ Text[ swedish ] = "Använd formatmallen \"Överskrift $(ARG1)\"";
+ Text[ dutch ] = "Sjabloon \"Kop $(ARG1)\" toepassen";
+ Text[ spanish ] = "Aplicar estilo \"Encabezado $(ARG1)\"";
+ Text[ english_us ] = "Set \"Heading $(ARG1)\" Style";
+ Text[ chinese_simplified ] = "É趨¡°±êÌâ $(ARG1)¡±Ñùʽ";
+ Text[ russian ] = "Óñòàíîâèòü ñòèëü \"Çàãîëîâîê $(ARG1)\"";
+ Text[ polish ] = "U¿yj szablonu \"Tytu³ $(ARG1)\"";
+ Text[ japanese ] = "\"Œ©o‚µ$(ARG1)\" ‚̽À²ÙÝ’è";
+ Text[ chinese_traditional ] = "³]©w¼Ë¦¡¡§¼ÐÃD $(ARG1)¡¨";
+ Text[ arabic ] = "ÊÚííä ÇáäãØ \"ÚäæÇä $(ARG1)\"";
+ Text[ greek ] = "Ïñéóìüò ðñïôýðïõ \"Åðéêåöáëßäá $(ARG1)\"";
+ Text[ korean ] = "À¯Çü \"¸Ó¸®±Û $(ARG1)\" ¼³Á¤";
+ Text[ turkish ] = "\"Baþlýk $(ARG1)\" biçimini uygula";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AUTOFMTREDL_SET_NUMBULET +1
+ {
+ Text = "Setze Vorlage \"Aufzählung\" oder \"Nummerierung\"" ;
+ Text [ English ] = "Set template \"Bullet\" or \"Numbering\"" ;
+ Text[ italian ] = "Imposta modello elenchi \"puntati\" o \"numerati\"";
+ Text[ portuguese_brazilian ] = "Set template \"Bullet\" or \"Numbering\"";
+ Text[ portuguese ] = "Aplicar estilo \"Marcas\" ou \"Numeração\"";
+ Text[ danish ] = "Anvend typografi \"Punktopstilling\" eller \"Nummerering\"";
+ Text[ french ] = "Appliquer le style \"Puces\" ou \"Numérotation\"";
+ Text[ swedish ] = "Använd formatmallen \"Uppräkning\" eller \"Numrering\"";
+ Text[ dutch ] = "Sjabloon \"Opsomming\" of \"Nummering\" toepassen";
+ Text[ spanish ] = "Aplicar estilo \"Viñetas\" o \"Numeración\"";
+ Text[ english_us ] = "Set \"Bullet\" or \"Numbering\" Style";
+ Text[ chinese_simplified ] = "É趨¡°ÏîÄ¿·ûºÅ¡±»ò¡°±àºÅ¡±Ñùʽ";
+ Text[ russian ] = "Óñòàíîâèòü ñòèëü \"Ñïèñîê\" èëè \"Íóìåðàöèÿ\"";
+ Text[ polish ] = "U¿yj szablonu \"Wypunktowanie\" lub \"Numerowanie\"";
+ Text[ japanese ] = "\"‰Óð‘‚«\" ‚Ü‚½‚Í \"”Ô†•t‚¯\"‚̽À²ÙÝ’è";
+ Text[ chinese_traditional ] = "³]©w¼Ë¦¡¡§¶µ¥Ø²Å¸¹¡¨©M¡§½s¸¹¡¨";
+ Text[ arabic ] = "ÊÚííä ÇáäãØ \"ÊÚÏÇÏ\" Ãæ \"ÊÑÞíã\"";
+ Text[ greek ] = "Ïñéóìüò óôõë \"Êïõêßäá\" Þ \"Áñßèìçóç\"";
+ Text[ korean ] = "À¯Çü \"±Û¸Ó¸®Ç¥\"³ª \"¹øÈ£ ¸Å±â±â\" ¼³Á¤";
+ Text[ turkish ] = "\"Madde\" ya da \"numaralama\" biçimini uygula";
+ Text[ language_user1 ] = " ";
+ };
+
+ String STR_AUTOFMTREDL_DEL_MORELINES +1
+ {
+ Text = "Zusammenfassen von Absätzen" ;
+ Text [ English ] = "Combine paragraphs" ;
+ Text[ italian ] = "Mantieni assieme i paragrafi";
+ Text[ portuguese_brazilian ] = "Combine paragraphs";
+ Text[ portuguese ] = "Unir parágrafos";
+ Text[ danish ] = "Kombiner afsnit";
+ Text[ french ] = "Fusionner des paragraphes";
+ Text[ swedish ] = "Sammanfoga stycken";
+ Text[ dutch ] = "Alinea's samenvoegen";
+ Text[ spanish ] = "Unir párrafos";
+ Text[ english_us ] = "Combine paragraphs";
+ Text[ chinese_simplified ] = "ºÏ²¢¶ÎÂä";
+ Text[ russian ] = "Îáúåäèíåíèå àáçàöåâ";
+ Text[ polish ] = "Po³¹czenie akapitów";
+ Text[ japanese ] = "’i—Ž‚ÌŒ‹‡";
+ Text[ chinese_traditional ] = "¦X¨Ö¬q¸¨";
+ Text[ arabic ] = "Öã ÇáÝÞÑÇÊ";
+ Text[ greek ] = "¸íùóç ðáñáãñÜöùí";
+ Text[ korean ] = "´Ü¶ô ÇÕÄ¡±â";
+ Text[ turkish ] = "Paragraflarý birleþtir";
+ Text[ language_user1 ] = " ";
+ };
+
+};
+
+/*---------------------------------------------------------------------
+ Diverses
+ ---------------------------------------------------------------------*/
+String STR_EVENT_OBJECT_SELECT
+{
+ TEXT = "Objekt anklicken" ;
+ TEXT [ English ] = "Object on click" ;
+ Text [ dutch ] = "Object selecteren" ;
+ Text [ english_us ] = "Click object" ;
+ Text [ italian ] = "Cliccate l'oggetto" ;
+ Text [ spanish ] = "Pulsar el objeto" ;
+ Text [ french ] = "Clic sur l'objet" ;
+ Text [ swedish ] = "Klicka på objekt" ;
+ Text [ danish ] = "Klik på objekt" ;
+ Text [ portuguese ] = "Seleccionar objecto" ;
+ Text [ portuguese_brazilian ] = "Objekt anklicken" ;
+ Text[ chinese_simplified ] = "°´»÷¶ÔÏó";
+ Text[ russian ] = "Âûáîð îáúåêòà";
+ Text[ polish ] = "Kliknij obiekt";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä‚ð¸Ø¯¸‚·‚é";
+ Text[ chinese_traditional ] = "¥Î·Æ¹««öÀ»ª«¥ó";
+ Text[ arabic ] = "ÇáäÞÑ ÝæÞ ÇáßÇÆä";
+ Text[ greek ] = "ÅðéëïãÞ áíôéêåéìÝíïõ";
+ Text[ korean ] = "°³Ã¼ ¼±ÅÃ";
+ Text[ turkish ] = "Nesneye týkla";
+ Text[ language_user1 ] = " ";
+};
+String STR_EVENT_START_INS_GLOSSARY
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Vor AutoText einfügen : Vor AutoText einf³gen */
+ TEXT = "Vor Einfügen des AutoTextes" ;
+ TEXT [ English ] = "Before insert AutoText" ;
+ TEXT[ english_us ] = "Before inserting AutoText";
+ TEXT[ portuguese ] = "Inserir antes de AutoTexto";
+ TEXT[ russian ] = "Ïåðåä âñòàâêîé àâòîòåêñòà";
+ TEXT[ greek ] = "Ðñéí áðü ôçí ðñïóèÞêç ôïõ ÁõôïÊåßìåíï";
+ TEXT[ dutch ] = "Voor het invoegen van AutoTekst";
+ TEXT[ french ] = "Avant insertion de l'AutoTexte";
+ TEXT[ spanish ] = "Antes de insertar el AutoTexto";
+ TEXT[ italian ] = "Prima d'inserire il testo automatico";
+ TEXT[ danish ] = "Inden input af AutoTekst";
+ TEXT[ swedish ] = "Innan AutoText infogas";
+ TEXT[ polish ] = "Wstaw przed autotekstem";
+ TEXT[ portuguese_brazilian ] = "Vor AutoText einfügen";
+ TEXT[ japanese ] = "“ü—ÍŽx‰‡‚ð‘}“ü‚·‚é‘O";
+ TEXT[ korean ] = "ÀÚµ¿ ÅؽºÆ® »ðÀÔ Àü¿¡";
+ TEXT[ chinese_simplified ] = "ÔÚ²åÈë×Ô¶¯Í¼Îļ¯Ö®Ç°";
+ TEXT[ chinese_traditional ] = "¦b´¡¤J¦Û°Ê¹Ï¤å¶°¤§«e";
+ TEXT[ arabic ] = "ÞÈá ÅÏÑÇÌ ÇáäÕ ÇáÊáÞÇÆí";
+ TEXT[ turkish ] = "Otomatik metin eklemeden önce";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_EVENT_END_INS_GLOSSARY
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Nach AutoText einfügen : Nach AutoText einf³gen */
+ TEXT = "Nach Einfügen des AutoTextes" ;
+ TEXT [ English ] = "After insert AutoText" ;
+ TEXT[ english_us ] = "After inserting AutoText";
+ TEXT[ portuguese ] = "Inserir após AutoTexto";
+ TEXT[ russian ] = "Ïîñëå âñòàâêè àâòîòåêñòà";
+ TEXT[ greek ] = "ÌåôÜ ôçí ðñïóèÞêç ôïõ ÁõôïÊåßìåíï";
+ TEXT[ dutch ] = "Na invoegen van AutoTekst";
+ TEXT[ french ] = "Après insertion de l'AutoTexte";
+ TEXT[ spanish ] = "Tras insertar el AutoTexto";
+ TEXT[ italian ] = "Dopo aver inserito il testo automatico";
+ TEXT[ danish ] = "Efter input af AutoTekst";
+ TEXT[ swedish ] = "Efter att AutoText infogats";
+ TEXT[ polish ] = "Wstaw za autotekstem";
+ TEXT[ portuguese_brazilian ] = "Nach AutoText einfügen";
+ TEXT[ japanese ] = "“ü—ÍŽx‰‡‚ð‘}“ü‚µ‚½Œã";
+ TEXT[ korean ] = "ÀÚµ¿ ÅؽºÆ® »ðÀÔ ÈÄ¿¡";
+ TEXT[ chinese_simplified ] = "ÔÚ²åÈë×Ô¶¯Í¼Îļ¯Ö®ºó";
+ TEXT[ chinese_traditional ] = "¦b¦Û°Ê¹Ï¤å¶°´¡¤J¤§«á";
+ TEXT[ arabic ] = "ÈÚÏ ÅÏÑÇÌ ÇáäÕ ÇáÊáÞÇÆí";
+ TEXT[ turkish ] = "Otomatik metin ekledikten sonra";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_EVENT_MOUSEOVER_OBJECT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Maus über Objekt : Maus ³ber Objekt */
+ TEXT = "Maus über Objekt" ;
+ TEXT [ English ] = "Mouse over Object" ;
+ Text [ english_us ] = "Mouse over object" ;
+ Text [ italian ] = "Mouse sull'oggetto" ;
+ Text [ spanish ] = "Ratón sobre objeto" ;
+ Text [ french ] = "Souris sur l'objet" ;
+ Text [ dutch ] = "Muis boven object" ;
+ Text [ swedish ] = "Mus över objekt" ;
+ Text [ danish ] = "Mus over objekt" ;
+ Text [ portuguese ] = "Rato sobre objecto" ;
+ Text [ portuguese_brazilian ] = "Maus über Objekt" ;
+ Text[ chinese_simplified ] = "ÖÃÊó±êÓÚ¶ÔÏóÖ®ÉÏ";
+ Text[ russian ] = "Ìûøü íàä îáúåêòîì";
+ Text[ polish ] = "Mysz nad obiektem";
+ Text[ japanese ] = "ϳ½‚ðµÌÞ¼Þª¸Äã‚Ɉړ®";
+ Text[ chinese_traditional ] = "¹«¼Ð¦bª«¥ó¤§¤W";
+ Text[ arabic ] = "ÇáãÇæÓ ÝæÞ ÇáßÇÆä";
+ Text[ greek ] = "Ðïíôßêé ðÜíù áðü áíôéêåßìåíï";
+ Text[ korean ] = "°³Ã¼ À§¿¡ ¸¶¿ì½º";
+ Text[ turkish ] = "Fare oku nesne üzerinde";
+ Text[ language_user1 ] = " ";
+};
+String STR_EVENT_MOUSECLICK_OBJECT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Hyperlink auslösen : Hyperlink ausl÷sen */
+ TEXT = "Hyperlink auslösen" ;
+ TEXT [ English ] = "Trigger Hyperlink" ;
+ Text [ dutch ] = "Hyperlink uitvoeren" ;
+ Text [ english_us ] = "Trigger hyperlink" ;
+ Text [ italian ] = "Esegui hyperlink" ;
+ Text [ spanish ] = "Ejecutar hiperenlace" ;
+ Text [ french ] = "Déclencher l'hyperlien" ;
+ Text [ swedish ] = "Utför hyperlänk" ;
+ Text [ danish ] = "Udfør hyperlink" ;
+ Text [ portuguese ] = "Activar hiperligação" ;
+ Text [ portuguese_brazilian ] = "Hyperlink auslösen" ;
+ Text[ chinese_simplified ] = "Æô¶¯³¬Á´½Ó";
+ Text[ russian ] = "Âûïîëíèòü ãèïåðññûëêó";
+ Text[ polish ] = "Wykonaj hiper³¹cze";
+ Text[ japanese ] = "ʲÊß°Øݸ‚ÌŽÀs";
+ Text[ chinese_traditional ] = "°õ¦æ¶W³sµ²";
+ Text[ arabic ] = "ÊäÝíÐ ÇÑÊÈÇØ ÊÔÚÈí";
+ Text[ greek ] = "ÅöáñìïãÞ õðåñ-óýíäåóçò";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ© ¼öÇà";
+ Text[ turkish ] = "Hyperlink'i etkinleþtir";
+ Text[ language_user1 ] = " ";
+};
+String STR_EVENT_MOUSEOUT_OBJECT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Maus verläßt Objekt : Maus verlõ˜t Objekt */
+ TEXT = "Maus verlässt Objekt" ;
+ TEXT [ English ] = "Mouse leave Object" ;
+ Text [ dutch ] = "Muis verlaat object" ;
+ Text [ english_us ] = "Mouse leaves object" ;
+ Text [ swedish ] = "Mus lämnar objekt" ;
+ Text [ danish ] = "Mus forlader objekt" ;
+ Text [ italian ] = "Mouse abbandona l'oggetto" ;
+ Text [ spanish ] = "El ratón abandona el objeto" ;
+ Text [ french ] = "Souris quitte l'objet" ;
+ Text [ portuguese ] = "Rato abandona objecto" ;
+ Text [ portuguese_brazilian ] = "Maus verläßt Objekt" ;
+ Text[ chinese_simplified ] = "Êó±êÀ뿪¶ÔÏó";
+ Text[ russian ] = "Ìûøü ïîêèäàåò îáúåêò";
+ Text[ polish ] = "Mysz opuszcza obiekt";
+ Text[ japanese ] = "ϳ½‚ðµÌÞ¼Þª¸ÄŠO‚Ɉړ®";
+ Text[ chinese_traditional ] = "¹«¼ÐÂ÷¶}ª«¥ó";
+ Text[ arabic ] = "ÇÈÊÚÇÏ ÇáãÇæÓ Úä ÇáßÇÆä";
+ Text[ greek ] = "Ðïíôßêé áðïìáêñýíåôáé áðü áíôéêåßìåíï";
+ Text[ korean ] = "¸¶¿ì½º°¡ °³Ã¼¸¦ ¶°³²";
+ Text[ turkish ] = "Ýmleç nesneden ayrýlýyor";
+ Text[ language_user1 ] = " ";
+};
+String STR_EVENT_IMAGE_LOAD
+{
+ TEXT = "Grafik laden erfolgreich" ;
+ TEXT [ English ] = "Graphic load" ;
+ Text [ dutch ] = "Laden van afbeelding oké" ;
+ Text [ english_us ] = "Graphics load successful" ;
+ Text [ swedish ] = "Laddning av grafik lyckades" ;
+ Text [ danish ] = "Indlæsning af grafik fuldført" ;
+ Text [ italian ] = "Caricamento immagine riuscito" ;
+ Text [ spanish ] = "La carga de la imagen ha finalizado con éxito" ;
+ Text [ french ] = "Chargement de l'image terminé" ;
+ Text [ portuguese ] = "Carregar imagem concluído" ;
+ Text [ portuguese_brazilian ] = "Grafik laden erfolgreich" ;
+ Text[ chinese_simplified ] = "×°ÔØͼÐγɹ¦";
+ Text[ russian ] = "Çàãðóçêà ãðàôèêè óñïåøíà";
+ Text[ polish ] = "Pomyœlne za³adowanie grafiki";
+ Text[ japanese ] = "¸Þ×̨¯¸‚Ì“Ç‚Ýž‚ÝŠ®—¹";
+ Text[ chinese_traditional ] = "¸Ë¸ü¹Ï¤ù¦¨¥\\";
+ Text[ arabic ] = "ÊÍãíá ÇáÕæÑÉ ÈäÌÇÍ";
+ Text[ greek ] = "Ç öüñôùóç ôùí ãñáöéêþí ðÝôõ÷å";
+ Text[ korean ] = "±×·¡ÇÈÀ» ¼º°øÀûÀ¸·Î ·ÎµåÇÔ";
+ Text[ turkish ] = "Grafik baþarýyla yüklendi";
+ Text[ language_user1 ] = " ";
+};
+String STR_EVENT_IMAGE_ABORT
+{
+ TEXT = "Grafik laden abgebrochen" ;
+ TEXT [ English ] = "Graphic load abord" ;
+ Text [ dutch ] = "Afbeelding laden afgebroken" ;
+ Text [ english_us ] = "Graphics load terminated" ;
+ Text [ swedish ] = "Laddning av grafik avbröts" ;
+ Text [ danish ] = "Indlæsning af grafik afbrudt" ;
+ Text [ italian ] = "Caricamento immagine interrotto" ;
+ Text [ spanish ] = "Interrumpida la carga de la imagen" ;
+ Text [ french ] = "Chargement de l'image interrompu" ;
+ Text [ portuguese ] = "Carregar imagem cancelado" ;
+ Text [ portuguese_brazilian ] = "Grafik laden abgebrochen" ;
+ Text[ chinese_simplified ] = "ÖжÏ×°ÔØͼÐÎ";
+ Text[ russian ] = "Çàãðóçêà ãðàôèêè ïðåðâàíà";
+ Text[ polish ] = "Przerwane ³adowanie grafiki";
+ Text[ japanese ] = "¸Þ×̨¯¸‚Ì“Ç‚Ýž‚Ý’†Ž~";
+ Text[ chinese_traditional ] = "¤¤Â_¸Ë¸ü¹Ï¤ù";
+ Text[ arabic ] = "ÇäÞØÇÚ ÚãáíÉ ÊÍãíá ÇáÕæÑÉ";
+ Text[ greek ] = "ÄéáêïðÞ öüñôùóçò ãñáöéêïý";
+ Text[ korean ] = "±×·¡ÇÈ ·Îµå ÁߴܵÊ";
+ Text[ turkish ] = "Grafik yüklemesi kesildi";
+ Text[ language_user1 ] = " ";
+};
+String STR_EVENT_IMAGE_ERROR
+{
+ TEXT = "Grafik laden fehlerhaft" ;
+ TEXT [ English ] = "Graphic load error" ;
+ Text [ dutch ] = "Fout bij laden van afbeelding" ;
+ Text [ english_us ] = "Graphics load faulty" ;
+ Text [ swedish ] = "Fel vid laddning av grafik" ;
+ Text [ danish ] = "Indlæsning af grafik fejlagtig" ;
+ Text [ italian ] = "Caricamento immagine errato" ;
+ Text [ spanish ] = "Error al cargar la imagen" ;
+ Text [ french ] = "Erreur lors du chargement de l'image" ;
+ Text [ portuguese ] = "Erro ao carregar imagem" ;
+ Text [ portuguese_brazilian ] = "Grafik laden fehlerhaft" ;
+ Text[ chinese_simplified ] = "×°ÔصÄͼÐβ»ÍêÕû";
+ Text[ russian ] = "Íåïðàâèëüíàÿ çàãðóçêà ãðàôèêè";
+ Text[ polish ] = "B³¹d w ³adowaniu grafiki";
+ Text[ japanese ] = "¸Þ×̨¯¸‚Ì“Ç‚Ýž‚Ý´×°";
+ Text[ chinese_traditional ] = "¸Ë¸ü¹Ï¤ù¤£§¹¾ã";
+ Text[ arabic ] = "ÎØà Ýí ÚãáíÉ ÊÍãíá ÇáÕæÑÉ";
+ Text[ greek ] = "ÓöÜëìá êáôÜ ôç öüñôùóç ãñáöéêïý";
+ Text[ korean ] = "±×·¡ÇÈ ·Îµå ¿À·ù";
+ Text[ turkish ] = "Grafik yüklemede hata";
+ Text[ language_user1 ] = " ";
+};
+String STR_EVENT_FRM_KEYINPUT_A
+{
+ TEXT = "Eingabe von Alphazeichen" ;
+ TEXT [ English ] = "Input of alpha chars" ;
+ Text [ portuguese ] = "Entrada de caracteres alfa" ;
+ Text [ english_us ] = "Input of alpha characters" ;
+ Text [ portuguese_brazilian ] = "Eingabe von Alphazeichen" ;
+ Text [ swedish ] = "Inmatning av alfatecken" ;
+ Text [ danish ] = "Input af alfategn" ;
+ Text [ italian ] = "Digitazione di caratteri alfa" ;
+ Text [ spanish ] = "Entrada de caracteres alfa" ;
+ Text [ french ] = "Saisie de caractères alphanumériques" ;
+ Text [ dutch ] = "Invoer van alfanumerieke tekens" ;
+ Text[ chinese_simplified ] = "ÊäÈëÏ£À°Óï×Öĸ°¢¶û·¨";
+ Text[ russian ] = "Ââîä çíàêîâ àëüôà";
+ Text[ polish ] = "Wprowadzenie znaku alfa";
+ Text[ japanese ] = "±Ù̧Íޯĕ¶Žš‚Ì“ü—Í";
+ Text[ chinese_traditional ] = "¿é¤J§Æþ»y²Ä¤@­Ó¦r¥À";
+ Text[ arabic ] = "ÅÏÎÇá ÃÍÑÝ ÃáÝÇ";
+ Text[ greek ] = "ÅéóáãùãÞ ÷áñáêôÞñùí áëöáâÞôïõ";
+ Text[ korean ] = "¾ËÆĺª ¹®ÀÚ ÀÔ·Â";
+ Text[ turkish ] = "Alfa karakter giriþi";
+ Text[ language_user1 ] = " ";
+};
+String STR_EVENT_FRM_KEYINPUT_NOA
+{
+ TEXT = "Eingabe von Nicht-Alphazeichen" ;
+ TEXT [ English ] = "Input of non alpha chars" ;
+ Text [ portuguese ] = "Entrada de caracteres não-alfa." ;
+ Text [ english_us ] = "Input of non-alpha characters" ;
+ Text [ swedish ] = "Inmatning av icke-alfatecken" ;
+ Text [ italian ] = "Digitazione di caratteri non alfanumerici" ;
+ Text [ spanish ] = "Entrada de caracteres no-alfa" ;
+ Text [ french ] = "Saisie de caractères non alphanumériques" ;
+ Text [ dutch ] = "Invoer van niet-alfanumerieke tekens" ;
+ Text [ portuguese_brazilian ] = "Eingabe von nicht Alphazeichen" ;
+ Text [ danish ] = "Input af ikke-alfategn" ;
+ Text[ chinese_simplified ] = "ÊäÈëµÄ²»ÊÇÏ£À°Óï×Öĸ°¢¶û·¨";
+ Text[ russian ] = "Ââîä çíàêîâ íåàëüôà";
+ Text[ polish ] = "Wprow. innych znaków (nie alfa)";
+ Text[ japanese ] = "±Ù̧ÍޯĂłȂ¢•¶Žš‚Ì“ü—Í";
+ Text[ chinese_traditional ] = "¿é¤Jªº¤£¬O§Æþ»y²Ä¤@­Ó¦r¥À";
+ Text[ arabic ] = "ÅÏÎÇá ÃÍÑÝ ÛíÑ ÃáÝÇ";
+ Text[ greek ] = "ÅéóáãùãÞ ìç-áëöáâçôéêþí ÷áñáêôÞñùí";
+ Text[ korean ] = "¾ËÆĺªÀÌ ¾Æ´Ñ ¹®ÀÚ ÀÔ·Â";
+ Text[ turkish ] = "Alfa olmayan karakter giriþi";
+ Text[ language_user1 ] = " ";
+};
+String STR_EVENT_FRM_RESIZE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Rahmengröße verändern : Rahmengr÷˜e verõndern */
+ TEXT = "Rahmengröße verändern" ;
+ TEXT [ English ] = "Resize Frane" ;
+ Text [ portuguese ] = "Redimensionar moldura" ;
+ Text [ english_us ] = "Resize frame" ;
+ Text [ portuguese_brazilian ] = "Rahmengröße verändern" ;
+ Text [ swedish ] = "Ändra ramstorlek" ;
+ Text [ danish ] = "Modificer rammestørrelse" ;
+ Text [ italian ] = "Cambia dimensione cornice" ;
+ Text [ spanish ] = "Modificar el tamaño del marco" ;
+ Text [ french ] = "Modifier la taille du cadre" ;
+ Text [ dutch ] = "Kadergrootte wijzigen" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä¿òµÄ´óС";
+ Text[ russian ] = "Èçìåíèòü ðàçìåð ðàìêè";
+ Text[ polish ] = "Zmieñ rozmiar ramki";
+ Text[ japanese ] = "˜g‚Ì»²½Þ•ÏX";
+ Text[ chinese_traditional ] = "Åܧó®Ø¤j¤p";
+ Text[ arabic ] = "ÊÚÏíá ÍÌã ÇáÅØÇÑ";
+ Text[ greek ] = "ÁëëáãÞ ìåãÝèïõò ðëáéóßïõ";
+ Text[ korean ] = "ÇÁ·¹ÀÓ Å©±â º¯°æ";
+ Text[ turkish ] = "Çerçeve boyutunu deðiþtir";
+ Text[ language_user1 ] = " ";
+};
+String STR_EVENT_FRM_MOVE
+{
+ TEXT = "Rahmen verschieben" ;
+ TEXT [ English ] = "Move Frame" ;
+ Text [ portuguese ] = "Mover moldura" ;
+ Text [ english_us ] = "Move frame" ;
+ Text [ portuguese_brazilian ] = "Rahmen verschieben" ;
+ Text [ swedish ] = "Flytta ram" ;
+ Text [ danish ] = "Flyt ramme" ;
+ Text [ italian ] = "Sposta cornice" ;
+ Text [ spanish ] = "Desplazar marco" ;
+ Text [ french ] = "Déplacer le cadre" ;
+ Text [ dutch ] = "Kader verplaatsen" ;
+ Text[ chinese_simplified ] = "Òƶ¯¿ò";
+ Text[ russian ] = "Ïåðåìåñòèòü ðàìêó";
+ Text[ polish ] = "Przenieœ ramkê";
+ Text[ japanese ] = "˜g‚̈ړ®";
+ Text[ chinese_traditional ] = "²¾°Ê®Ø";
+ Text[ arabic ] = "ÅÒÇÍÉ ÇáÅØÇÑ";
+ Text[ greek ] = "Ìåôáêßíçóç ðëáéóßïõ";
+ Text[ korean ] = "ÇÁ·¹ÀÓ À̵¿";
+ Text[ turkish ] = "Çerçeveyi taþý";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_OUTLINE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Überschriften : šberschriften */
+ TEXT = "Überschriften" ;
+ TEXT [ English ] = "Outlines" ;
+ Text [ dutch ] = "Koppen" ;
+ Text [ english_us ] = "Headings" ;
+ Text [ italian ] = "Intestazioni" ;
+ Text [ spanish ] = "Encabezados" ;
+ Text [ french ] = "Titres" ;
+ Text [ swedish ] = "Överskrifter" ;
+ Text [ danish ] = "Overskrifter" ;
+ Text [ portuguese ] = "Títulos" ;
+ Text [ portuguese_brazilian ] = "Überschriften" ;
+ Text[ chinese_simplified ] = "±êÌâ";
+ Text[ russian ] = "Çàãîëîâêè";
+ Text[ polish ] = "Tytu³y";
+ Text[ japanese ] = "Œ©o‚µ";
+ Text[ chinese_traditional ] = "¼ÐÃD";
+ Text[ arabic ] = "ÚäÇæíä";
+ Text[ greek ] = "Åðéêåöáëßäåò";
+ Text[ korean ] = "¸Ó¸®±Û";
+ Text[ turkish ] = "Baþlýk";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_TABLE
+{
+ TEXT = "Tabellen" ;
+ TEXT [ English ] = "Tables" ;
+ Text [ english_us ] = "Tables" ;
+ Text [ italian ] = "Tabelle" ;
+ Text [ spanish ] = "Tablas" ;
+ Text [ french ] = "Tableaux" ;
+ Text [ dutch ] = "Tabellen" ;
+ Text [ swedish ] = "Tabeller" ;
+ Text [ danish ] = "Tabeller" ;
+ Text [ portuguese ] = "Tabelas" ;
+ Text [ portuguese_brazilian ] = "Tabellen" ;
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ russian ] = "Òàáëèöû";
+ Text[ polish ] = "Tabele";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÌÏÇæá";
+ Text[ greek ] = "Ðßíáêåò";
+ Text[ korean ] = "Ç¥";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_FRAME
+{
+ TEXT = "Textrahmen" ;
+ TEXT [ English ] = "Frames" ;
+ Text [ dutch ] = "Tekstkader" ;
+ Text [ english_us ] = "Text frame" ;
+ Text [ italian ] = "Cornice" ;
+ Text [ spanish ] = "Marco de texto" ;
+ Text [ french ] = "Cadres texte" ;
+ Text [ swedish ] = "Textram" ;
+ Text [ danish ] = "Tekstbokse" ;
+ Text [ portuguese ] = "Molduras de texto" ;
+ Text [ portuguese_brazilian ] = "Textrahmen" ;
+ Text[ chinese_simplified ] = "Îı¾¿ò";
+ Text[ russian ] = "Òåêñòîâàÿ ðàìêà";
+ Text[ polish ] = "Ramka tekstu";
+ Text[ japanese ] = "÷½Ä˜g";
+ Text[ chinese_traditional ] = "¤å¦r¤è¶ô";
+ Text[ arabic ] = "ÅØÇÑÇÊ äÕ";
+ Text[ greek ] = "Ðëáßóéï êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "Metin kutusu";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_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 ] = "¹Ï¤ù";
+ Text[ arabic ] = "ÕæÑ";
+ Text[ greek ] = "ÃñáöéêÜ";
+ Text[ korean ] = "±×·¡ÇÈ";
+ Text[ turkish ] = "Grafik";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_OLE
+{
+ 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[ greek ] = "Áíôéêåßìåíá OLE";
+ Text[ korean ] = "OLE °³Ã¼";
+ Text[ turkish ] = "OLE nesnesi";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_BOOKMARK
+{
+ TEXT = "Textmarken" ;
+ TEXT [ English ] = "Bookmarks" ;
+ Text [ dutch ] = "Tekstmarkeringen" ;
+ Text [ english_us ] = "Bookmarks" ;
+ Text [ italian ] = "Segnalibri di testo" ;
+ Text [ spanish ] = "Marcas de texto" ;
+ Text [ french ] = "Repères de texte" ;
+ Text [ swedish ] = "Bokmärken" ;
+ Text [ danish ] = "Tekstmarkeringer" ;
+ Text [ portuguese ] = "Marcadores de texto" ;
+ Text [ portuguese_brazilian ] = "Textmarken" ;
+ Text[ chinese_simplified ] = "ÊéÇ©";
+ Text[ russian ] = "Çàêëàäêè";
+ Text[ polish ] = "Zak³adki";
+ Text[ japanese ] = "÷½ÄÏ°¸";
+ Text[ chinese_traditional ] = "¤º¤å¼ÐÅÒ";
+ Text[ arabic ] = "ÅÔÇÑÇÊ ãÑÌÚíÉ";
+ Text[ greek ] = "ÓçìÜíóåéò êåéìÝíïõ";
+ Text[ korean ] = "Ã¥°¥ÇÇ";
+ Text[ turkish ] = "Metin iþareti";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_REGION
+{
+ TEXT = "Bereiche" ;
+ TEXT [ English ] = "Regions" ;
+ Text [ english_us ] = "Sections" ;
+ Text [ italian ] = "Sezioni" ;
+ Text [ spanish ] = "Categorías" ;
+ Text [ french ] = "Sections" ;
+ Text [ dutch ] = "Bereiken" ;
+ Text [ swedish ] = "Kategorier" ;
+ Text [ danish ] = "Områder" ;
+ Text [ portuguese ] = "Categorias" ;
+ Text [ portuguese_brazilian ] = "Bereiche" ;
+ Text[ chinese_simplified ] = "ÇøÓò";
+ Text[ russian ] = "Îáëàñòè";
+ Text[ polish ] = "Obszary";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "°Ï°ì";
+ Text[ arabic ] = "äØÇÞÇÊ";
+ Text[ greek ] = "Êáôçãïñßåò";
+ Text[ korean ] = "±¸¿ª";
+ Text[ turkish ] = "Bölüm";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_URLFIELD
+{
+ TEXT = "Hyperlinks" ;
+ TEXT [ English ] = "Hyperlinks" ;
+ Text [ dutch ] = "Hyperlinks" ;
+ Text [ english_us ] = "Hyperlinks" ;
+ Text [ italian ] = "Hyperlink" ;
+ Text [ spanish ] = "Hiperenlaces" ;
+ Text [ french ] = "Hyperliens" ;
+ Text [ swedish ] = "Hyperlänkar" ;
+ Text [ danish ] = "Hyperlinks" ;
+ Text [ portuguese ] = "Hiperligações" ;
+ Text [ portuguese_brazilian ] = "Hyperlinks" ;
+ Text[ chinese_simplified ] = "³¬Á´½Ó";
+ Text[ russian ] = "Ãèïåðññûëêè";
+ Text[ polish ] = "Hiper³¹cza";
+ Text[ japanese ] = "ʲÊß°Øݸ";
+ Text[ chinese_traditional ] = "¶W³sµ²";
+ Text[ arabic ] = "ÇÑÊÈÇØÇÊ ÊÔÚÈíÉ";
+ Text[ greek ] = "Õðåñ-óõíäÝóåéò";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ©";
+ Text[ turkish ] = "Hyperlink";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_REFERENCE
+{
+ TEXT = "Referenzen" ;
+ TEXT [ English ] = "References" ;
+ Text [ dutch ] = "Verwijzingen" ;
+ Text [ english_us ] = "References" ;
+ Text [ italian ] = "Riferimenti" ;
+ Text [ spanish ] = "Referencias" ;
+ Text [ french ] = "Références" ;
+ Text [ swedish ] = "Referenser" ;
+ Text [ danish ] = "Referencer" ;
+ Text [ portuguese ] = "Referências" ;
+ Text [ portuguese_brazilian ] = "Referenzen" ;
+ Text[ chinese_simplified ] = "ÒýÓÃ";
+ Text[ russian ] = "Ññûëêè";
+ Text[ polish ] = "Odwo³ania";
+ Text[ japanese ] = "ŽQÆ";
+ Text[ chinese_traditional ] = "°Ñ·Ó";
+ Text[ arabic ] = "ãÑÇÌÚ";
+ Text[ greek ] = "ÁíáöïñÝò";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ turkish ] = "Referans";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_INDEX
+{
+ TEXT = "Verzeichnisse" ;
+ TEXT [ English ] = "Indexes" ;
+ Text [ dutch ] = "Indices" ;
+ Text [ english_us ] = "Indexes" ;
+ Text [ italian ] = "Indici" ;
+ Text [ spanish ] = "Índices" ;
+ Text [ french ] = "Index" ;
+ Text [ swedish ] = "Förteckningar" ;
+ Text [ danish ] = "Indeks" ;
+ Text [ portuguese ] = "Indices" ;
+ Text [ portuguese_brazilian ] = "Verzeichnisse" ;
+ Text[ chinese_simplified ] = "Ŀ¼";
+ Text[ russian ] = "Óêàçàòåëè";
+ Text[ polish ] = "Indeksy";
+ Text[ japanese ] = "–ÚŽŸ‚Æõˆø";
+ Text[ chinese_traditional ] = "¥Ø¿ý";
+ Text[ arabic ] = "ÝåÇÑÓ";
+ Text[ greek ] = "ÅõñåôÞñéá";
+ Text[ korean ] = "»öÀÎ";
+ Text[ turkish ] = "Dizin";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_DRAWOBJECT
+{
+ TEXT = "Zeichenobjekte" ;
+ TEXT [ English ] = "Draw objects" ;
+ Text [ dutch ] = "Tekenobjecten" ;
+ Text [ english_us ] = "Draw objects" ;
+ Text [ italian ] = "Oggetti di disegno" ;
+ Text [ spanish ] = "Objetos de dibujo" ;
+ Text [ french ] = "Objets de dessin" ;
+ Text [ swedish ] = "Ritobjekt" ;
+ Text [ danish ] = "Tegneobjekter" ;
+ Text [ portuguese ] = "Objectos de desenho" ;
+ Text [ portuguese_brazilian ] = "Zeichenobjekte" ;
+ Text[ chinese_simplified ] = "»æͼ¶ÔÏó";
+ Text[ russian ] = "Ãðàôè÷åñêèå îáúåêòû";
+ Text[ polish ] = "Obiekty rysunkowe";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "ø¹Ïª«¥ó";
+ Text[ arabic ] = "ßÇÆäÇÊ ÑÓæãíÉ";
+ Text[ greek ] = "Áíôéêåßìåíá ó÷åäßáóçò";
+ Text[ korean ] = "±×¸®±â °³Ã¼";
+ Text[ turkish ] = "Çizim nesnesi";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_POSTIT
+{
+ TEXT = "Notizen" ;
+ TEXT [ English ] = "Annotations" ;
+ Text [ dutch ] = "Aantekeningen" ;
+ Text [ english_us ] = "Notes" ;
+ Text [ swedish ] = "Anteckningar" ;
+ Text [ danish ] = "Noter" ;
+ Text [ italian ] = "Note" ;
+ Text [ spanish ] = "Notas" ;
+ Text [ french ] = "Notes" ;
+ 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_CONTENT_TYPE_SINGLE_OUTLINE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift : šberschrift */
+ TEXT = "Überschrift" ;
+ TEXT [ English ] = "Outline" ;
+ Text [ english_us ] = "Heading" ;
+ Text [ italian ] = "Intestazione" ;
+ Text [ spanish ] = "Encabezado" ;
+ Text [ french ] = "Titre" ;
+ Text [ dutch ] = "Kop" ;
+ Text [ swedish ] = "Överskrift" ;
+ 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_CONTENT_TYPE_SINGLE_TABLE
+{
+ TEXT = "Tabelle" ;
+ TEXT [ English ] = "Table" ;
+ Text [ english_us ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ spanish ] = "Tabla" ;
+ Text [ french ] = "Tableau" ;
+ Text [ dutch ] = "Tabel" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ danish ] = "Tabel" ;
+ Text [ portuguese ] = "Tabela" ;
+ Text [ portuguese_brazilian ] = "Tabelle" ;
+ Text[ chinese_simplified ] = "±í¸ñ";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "Tabela";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "ªí®æ";
+ Text[ arabic ] = "ÌÏæá";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "Ç¥";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_SINGLE_FRAME
+{
+ TEXT = "Textrahmen" ;
+ TEXT [ English ] = "Frame" ;
+ Text [ dutch ] = "Tekstkader" ;
+ Text [ english_us ] = "Text frame" ;
+ Text [ italian ] = "Cornice" ;
+ Text [ spanish ] = "Marco de texto" ;
+ Text [ french ] = "Cadre texte" ;
+ Text [ swedish ] = "Textram" ;
+ Text [ danish ] = "Tekstboks" ;
+ Text [ portuguese ] = "Moldura de texto" ;
+ Text [ portuguese_brazilian ] = "Textrahmen" ;
+ Text[ chinese_simplified ] = "Îı¾¿ò";
+ Text[ russian ] = "Òåêñòîâàÿ ðàìêà";
+ Text[ polish ] = "Ramka tekstu";
+ Text[ japanese ] = "÷½Ä˜g";
+ Text[ chinese_traditional ] = "¤å¦r¤è¶ô";
+ Text[ arabic ] = "ÅØÇÑ äÕ";
+ Text[ greek ] = "Ðëáßóéï êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ÇÁ·¹ÀÓ";
+ Text[ turkish ] = "Metin kutusu";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_SINGLE_GRAPHIC
+{
+ 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 ] = "Billede" ;
+ 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_CONTENT_TYPE_SINGLE_OLE
+{
+ TEXT = "OLE-Objekt" ;
+ TEXT [ English ] = "OLE-Object" ;
+ Text [ english_us ] = "OLE object" ;
+ Text [ italian ] = "Oggetto OLE" ;
+ Text [ spanish ] = "Objeto OLE" ;
+ Text [ french ] = "Objet OLE" ;
+ Text [ dutch ] = "OLE-object" ;
+ Text [ swedish ] = "OLE-objekt" ;
+ Text [ danish ] = "OLE-objekt" ;
+ Text [ portuguese ] = "Objecto OLE" ;
+ Text [ portuguese_brazilian ] = "OLE-Objekt" ;
+ Text[ chinese_simplified ] = "OLE-¶ÔÏó";
+ Text[ russian ] = "Îáúåêò OLE";
+ Text[ polish ] = "Obiekt OLE";
+ Text[ japanese ] = "OLE µÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "OLE ª«¥ó";
+ Text[ arabic ] = "ßÇÆä OLE";
+ Text[ greek ] = "Áíôéêåßìåíï OLE";
+ Text[ korean ] = "OLE °³Ã¼";
+ Text[ turkish ] = "OLE nesnesi";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_SINGLE_BOOKMARK
+{
+ TEXT = "Textmarke" ;
+ TEXT [ English ] = "Bookmark" ;
+ Text [ dutch ] = "Tekstmarkering" ;
+ Text [ english_us ] = "Bookmark" ;
+ Text [ italian ] = "Segnalibro" ;
+ Text [ spanish ] = "Marca de texto" ;
+ Text [ french ] = "Repère de texte" ;
+ Text [ swedish ] = "Bokmärke" ;
+ Text [ danish ] = "Tekstmarkering" ;
+ Text [ portuguese ] = "Marcador de texto" ;
+ Text [ portuguese_brazilian ] = "Textmarke" ;
+ Text[ chinese_simplified ] = "ÊéÇ©";
+ Text[ russian ] = "Çàêëàäêà";
+ Text[ polish ] = "Zak³adka";
+ Text[ japanese ] = "÷½ÄÏ°¸";
+ Text[ chinese_traditional ] = "¤º¤å¼ÐÅÒ";
+ Text[ arabic ] = "ÅÔÇÑÉ ãÑÌÚíÉ";
+ Text[ greek ] = "ÓÞìáíóç êåéìÝíïõ";
+ Text[ korean ] = "Ã¥°¥ÇÇ";
+ Text[ turkish ] = "Metin iþareti";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_SINGLE_REGION
+{
+ TEXT = "Bereich" ;
+ TEXT [ English ] = "Region" ;
+ Text [ english_us ] = "Section" ;
+ Text [ italian ] = "Area" ;
+ Text [ spanish ] = "Area" ;
+ Text [ french ] = "Section" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ swedish ] = "Kategori" ;
+ Text [ danish ] = "Område" ;
+ Text [ portuguese ] = "Categoria" ;
+ Text [ portuguese_brazilian ] = "Bereich" ;
+ 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 ] = " ";
+};
+String STR_CONTENT_TYPE_SINGLE_URLFIELD
+{
+ TEXT = "Hyperlink" ;
+ TEXT [ English ] = "Hyperlink" ;
+ Text [ dutch ] = "Hyperlink" ;
+ Text [ english_us ] = "Hyperlink" ;
+ Text [ italian ] = "Hyperlink" ;
+ Text [ spanish ] = "Hiperenlace" ;
+ Text [ french ] = "Hyperlien" ;
+ Text [ swedish ] = "Hyperlänk" ;
+ Text [ danish ] = "Hyperlink" ;
+ Text [ portuguese ] = "Hiperligação" ;
+ Text [ portuguese_brazilian ] = "Hyperlink" ;
+ Text[ chinese_simplified ] = "³¬Á´½Ó";
+ Text[ russian ] = "Ãèïåðññûëêà";
+ Text[ polish ] = "Hiper³¹cze";
+ Text[ japanese ] = "ʲÊß°Øݸ";
+ Text[ chinese_traditional ] = "¶W³sµ²";
+ Text[ arabic ] = "ÇÑÊÈÇØ ÊÔÚÈí";
+ Text[ greek ] = "Õðåñ-óýíäåóç";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ©";
+ Text[ turkish ] = "Hyperlink";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_SINGLE_REFERENCE
+{
+ TEXT = "Referenz" ;
+ TEXT [ English ] = "Reference" ;
+ Text [ dutch ] = "Verwijzing" ;
+ Text [ english_us ] = "Reference" ;
+ Text [ italian ] = "Riferimento" ;
+ Text [ spanish ] = "Referencia" ;
+ Text [ french ] = "Référence" ;
+ Text [ swedish ] = "Referens" ;
+ Text [ danish ] = "Reference" ;
+ Text [ portuguese ] = "Referência" ;
+ Text [ portuguese_brazilian ] = "Referenz" ;
+ Text[ chinese_simplified ] = "ÒýÓÃ";
+ Text[ russian ] = "Ññûëêà";
+ Text[ polish ] = "Odwo³anie";
+ Text[ japanese ] = "ŽQÆ";
+ Text[ chinese_traditional ] = "°Ñ·Ó";
+ Text[ arabic ] = "ãÑÌÚ";
+ Text[ greek ] = "ÁíáöïñÜ";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ turkish ] = "Referans";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_SINGLE_INDEX
+{
+ TEXT = "Verzeichnis" ;
+ TEXT [ English ] = "Index" ;
+ Text [ dutch ] = "Index" ;
+ Text [ english_us ] = "Index" ;
+ Text [ italian ] = "Indice" ;
+ Text [ spanish ] = "Índice" ;
+ Text [ french ] = "Index" ;
+ Text [ swedish ] = "Förteckning" ;
+ Text [ danish ] = "Indeks" ;
+ Text [ portuguese ] = "Índice" ;
+ Text [ portuguese_brazilian ] = "Verzeichniß" ;
+ Text[ chinese_simplified ] = "Ŀ¼";
+ Text[ russian ] = "Óêàçàòåëü";
+ Text[ polish ] = "Indeks";
+ Text[ japanese ] = "õˆø";
+ Text[ chinese_traditional ] = "¥Ø¿ý";
+ Text[ arabic ] = "ÝåÑÓ";
+ Text[ greek ] = "ÅõñåôÞñéï";
+ Text[ korean ] = "»öÀÎ";
+ Text[ turkish ] = "Dizin";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_SINGLE_POSTIT
+{
+ TEXT = "Notiz" ;
+ TEXT [ English ] = "Annotation" ;
+ Text [ dutch ] = "Aantekening" ;
+ Text [ english_us ] = "Note" ;
+ Text [ swedish ] = "Anteckning" ;
+ Text [ danish ] = "Note" ;
+ Text [ italian ] = "Nota" ;
+ Text [ spanish ] = "Nota" ;
+ Text [ french ] = "Note" ;
+ Text [ portuguese ] = "Anotação" ;
+ Text [ portuguese_brazilian ] = "Notiz" ;
+ Text[ chinese_simplified ] = "±¸×¢";
+ Text[ russian ] = "Ïðèìå÷àíèå";
+ Text[ polish ] = "Notatka";
+ Text[ japanese ] = "ÒÓ";
+ Text[ chinese_traditional ] = "³Æª`";
+ Text[ arabic ] = "ãáÇÍÙÉ";
+ Text[ greek ] = "Óçìåßùóç";
+ Text[ korean ] = "¸Þ¸ð";
+ Text[ turkish ] = "Not";
+ Text[ language_user1 ] = " ";
+};
+String STR_CONTENT_TYPE_SINGLE_DRAWOBJECT
+{
+ TEXT = "Zeichenobjekt" ;
+ TEXT [ English ] = "Draw object" ;
+ Text [ dutch ] = "Tekenobject" ;
+ Text [ english_us ] = "Draw object" ;
+ Text [ italian ] = "Oggetto di disegno" ;
+ Text [ spanish ] = "Objeto de dibujo" ;
+ Text [ french ] = "Objet de dessin" ;
+ Text [ swedish ] = "Ritobjekt" ;
+ Text [ danish ] = "Tegneobjekt" ;
+ Text [ portuguese ] = "Objecto de desenho" ;
+ Text [ portuguese_brazilian ] = "Zeichenobjekt" ;
+ Text[ chinese_simplified ] = "»æͼ¶ÔÏó";
+ Text[ russian ] = "Ãðàôè÷åñêèé îáúåêò";
+ Text[ polish ] = "Obiekt rysunkowy";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "ø¹Ïª«¥ó";
+ Text[ arabic ] = "ßÇÆä ÑÓæãí";
+ Text[ greek ] = "Aíôéêåßìåíï ó÷åäßáóçò";
+ Text[ korean ] = "±×¸®±â °³Ã¼";
+ Text[ turkish ] = "Çizim nesnesi";
+ Text[ language_user1 ] = " ";
+};
+String STR_DEFINE_NUMBERFORMAT
+{
+ TEXT = "Weitere Formate..." ;
+ TEXT [ English ] = "Additional formats..." ;
+ Text [ portuguese ] = "Outros formatos..." ;
+ Text [ english_us ] = "Additional formats..." ;
+ Text [ portuguese_brazilian ] = "Weitere Formate..." ;
+ Text [ swedish ] = "Ytterligare format..." ;
+ Text [ danish ] = "Yderligere formater..." ;
+ Text [ italian ] = "Ulteriori formati..." ;
+ Text [ spanish ] = "Otros formatos..." ;
+ Text [ french ] = "Autres formats..." ;
+ Text [ dutch ] = "Andere formaten..." ;
+ Text[ chinese_simplified ] = "ÆäËüµÄ¸ñʽ...";
+ Text[ russian ] = "Äîïîëíèòåëüíûå ôîðìàòû...";
+ Text[ polish ] = "Dodatkowe formaty...";
+ Text[ japanese ] = "‚»‚Ì‘¼‚Ì‘Ž®...";
+ Text[ chinese_traditional ] = "¨ä¥¦®æ¦¡...";
+ Text[ arabic ] = "...ÊäÓíÞÇÊ ÅÖÇÝíÉ";
+ Text[ greek ] = "Åðéðñüóèåôåò ìïñöÝò...";
+ Text[ korean ] = "ºÎ°¡ÀûÀÎ ¼­½Ä...";
+ Text[ turkish ] = "Diðer formatlar...";
+ Text[ language_user1 ] = " ";
+};
+String RID_STR_SYSTEM
+{
+ Text = "[System]" ;
+ Text [ ENGLISH ] = " [System]" ;
+ Text[ english_us ] = "[System]";
+ Text[ portuguese ] = "[Sistema]";
+ Text[ russian ] = "[Èç ñèñòåìû]";
+ Text[ greek ] = "[Óýóôçìá]";
+ Text[ dutch ] = "[Systeem]";
+ Text[ french ] = "[Système]";
+ Text[ spanish ] = "[Sistema]";
+ Text[ italian ] = "[Sistema]";
+ Text[ danish ] = "[System]";
+ Text[ swedish ] = "[System]";
+ Text[ polish ] = "[System]";
+ Text[ portuguese_brazilian ] = "[System]";
+ Text[ japanese ] = "[¼½ÃÑ]";
+ Text[ korean ] = "[½Ã½ºÅÛ]";
+ Text[ chinese_simplified ] = "[ϵͳ]";
+ Text[ chinese_traditional ] = "[¨t²Î]";
+ Text[ arabic ] = "[äÙÇã]";
+ Text[ turkish ] = "[Sistem]";
+};
+String STR_MULT_INTERACT_SPELL_WARN
+{
+ Text = "Die Interaktive Rechschreibprüfung ist\nbereits in anderem Dokument aktiv" ;
+ Text [ ENGLISH ] = "The interactive spelling already active\in a different document" ;
+ Text[ english_us ] = "The interactive spellcheck is already active\\in a different document";
+ Text[ portuguese ] = "A verificação ortográfica interactiva já está\nactiva noutro documento";
+ Text[ russian ] = "Èíòåðàêòèâíàÿ ïðîâåðêà ïðàâîïèñàíèÿ\nóæå âêëþ÷åíà â äðóãîì äîêóìåíòå";
+ Text[ greek ] = "Ôï äéáëïãéêü ðñüãñáììá åëÝã÷ïõ ïñèïãñáößáò\n÷ñçóéìïðïéåßôáé áðü êÜðïéï Üëëï Ýããñáöï";
+ Text[ dutch ] = "De interactieve spellingcontrole is\nreeds actief in een ander document.";
+ Text[ french ] = "La vérification orthographique interactive est\nen cours d'utilisation dans un autre document.";
+ Text[ spanish ] = "La corrección ortográfica interactiva\nya está activada en otro documento";
+ Text[ italian ] = "Il controllo ortografico interattivo è\ngià stato attivato in un altro documento.";
+ Text[ danish ] = "Den interaktive stavekontrol er\nallerede aktiv i et andet dokument";
+ Text[ swedish ] = "Den interaktiva rättstavningskontrollen\när redan aktiv i ett annat dokument";
+ Text[ polish ] = "Interaktywne sprawdzanie pisowni\naktywne jest ju¿ w innym dokumencie.";
+ Text[ portuguese_brazilian ] = "The interactive spelling already active\\in a different document";
+ Text[ japanese ] = "²ÝÀ׸èÌÞ½ÍßÙÁª¯¸‚Í‚·‚Å‚É\n‚Ù‚©‚ÌÄÞ·­ÒÝĂű¸Ã¨ÌÞ‚É‚È‚Á‚Ä‚¢‚Ü‚·";
+ Text[ korean ] = "´ëÈ­Çü ¸ÂÃã¹ýÀº \nÀÌ¹Ì ´Ù¸¥ ¹®¼­¿¡¼­ È°¼º»óÅÂÀÔ´Ï´Ù.";
+ Text[ chinese_simplified ] = "½»»¥Ê½Õý×Ö·¨¼ì²é\nÒѾ­Ê¹ÓÃÔÚÒ»¸öÆäËüÎĵµÖÐ";
+ Text[ chinese_traditional ] = "¥t¤@­Ó¤å¥ó¤w¸g¨Ï¥Î¤¬°Ê¦¡¥¿¦rªk¥\\¯à";
+ Text[ arabic ] = "ÇáÊÏÞíÞ ÇáÅãáÇÆí ÇáÊÈÇÏáí\näÔØ ÈÇáÝÚá Ýí ãÓÊäÏ ÂÎÑ";
+ Text[ turkish ] = "Etkileþimli yazým denetimi\nþu an baþka bir belgede etkin";
+};
+String STR_MULT_INTERACT_HYPH_WARN
+{
+ Text = "Die Interaktive Silbentrennung ist\nbereits in anderem Dokument aktiv" ;
+ Text [ ENGLISH ] = "The interactive hyphenation already active\in a different document" ;
+ Text[ english_us ] = "The interactive hyphenation is already active\\in a different document";
+ Text[ portuguese ] = "A divisão silábica interactiva já está\nactiva noutro documento";
+ Text[ russian ] = "Èíòåðàêòèâíàÿ ðàññòàíîâêà ïåðåíîñîâ\nóæå âêëþ÷åíà â äðóãîì äîêóìåíòå";
+ Text[ greek ] = "Ôï äéáëïãéêü ðñüãñáììá óõëëáâéóìïý\n÷ñçóéìïðïéåßôáé áðü êÜðïéï Üëëï Ýããñáöï";
+ Text[ dutch ] = "De interactieve woordafbreking is\nreeds actief in een ander document";
+ Text[ french ] = "La coupure de mots interactive est\nen cours d'utilisation dans un autre document.";
+ Text[ spanish ] = "La separación silábica interactiva\nya está activa en otro documento";
+ Text[ italian ] = "La sillabazione interattiva è\ngià stata attivata in un altro documento.";
+ Text[ danish ] = "Den interaktive orddeling er\nallerede aktiv i et andet dokument";
+ Text[ swedish ] = "Den interaktiva avstavningen är\nredan aktiv i ett annat dokument";
+ Text[ polish ] = "Interaktywne dzielenie wyrazów na sylaby\naktywne jest ju¿ w innym dokumencie.";
+ Text[ portuguese_brazilian ] = "The interactive hyphenation already active\\in a different document";
+ Text[ japanese ] = "²ÝÀ׸èÌÞʲÌÈ°¼®Ý‚Í‚·‚Å‚É\n‚Ù‚©‚ÌÄÞ·­ÒÝĂű¸Ã¨ÌÞ‚É‚È‚Á‚Ä‚¢‚Ü‚·";
+ Text[ korean ] = "´ëÈ­Çü ÇÏÀÌÇ ³Ö±â´Â \nÀÌ¹Ì ´Ù¸¥ ¹®¼­¿¡¼­ È°¼º»óÅÂÀÔ´Ï´Ù.";
+ Text[ chinese_simplified ] = "½»»¥Ê½Á¬×Ö·û\nÒѾ­Ê¹ÓÃÔÚÒ»¸öÆäËüÎĵµÖÐ";
+ Text[ chinese_traditional ] = "¥t¤@­Ó¤å¥ó¤w¸g¨Ï¥Î¤¬°Ê¦¡³s¦r¸¹¥\\¯à";
+ Text[ arabic ] = "ÝÕá ÇáãÞÇØÚ ÇáÊÈÇÏáí\näÔØ ÈÇáÝÚá Ýí ãÓÊäÏ ÂÎÑ";
+ Text[ turkish ] = "Etkileþimli heceleme\nþu an baþka bir belgede etkin";
+};
+String STR_SPELL_TITLE
+{
+ Text = "Rechtschreibprüfung" ;
+ Text [ ENGLISH ] = "Spelling" ;
+ Text[ english_us ] = "Spellcheck";
+ Text[ portuguese ] = "Ortografia";
+ Text[ russian ] = "Ïðîâåðêà ïðàâîïèñàíèÿ";
+ Text[ greek ] = "¸ëåã÷ïò ïñèïãñáößáò";
+ Text[ dutch ] = "Spellingcontrole";
+ Text[ french ] = "Vérification orthographique";
+ Text[ spanish ] = "Corrección ortográfica";
+ Text[ italian ] = "Controllo ortografico";
+ Text[ danish ] = "Stavekontrol";
+ Text[ swedish ] = "Rättstavningskontroll";
+ Text[ polish ] = "Sprawdzanie pisowni";
+ Text[ portuguese_brazilian ] = "Spelling";
+ Text[ japanese ] = "½ÍßÙÁª¯¸";
+ Text[ korean ] = "¸ÂÃã¹ý °Ë»ç";
+ Text[ chinese_simplified ] = "Õý×Ö·¨¼ì²é";
+ Text[ chinese_traditional ] = "¥¿¦rªk";
+ Text[ arabic ] = "ÇáÊÏÞíÞ ÇáÅãáÇÆí";
+ Text[ turkish ] = "Yazým denetimi";
+};
+String STR_HYPH_TITLE
+{
+ Text = "Silbentrennung" ;
+ Text [ ENGLISH ] = "Hyphenation" ;
+ Text[ english_us ] = "Hyphenation";
+ Text[ portuguese ] = "Divisão silábica";
+ Text[ russian ] = "Ðàññòàíîâêà ïåðåíîñîâ";
+ Text[ greek ] = "Óõëëáâéóìüò";
+ Text[ dutch ] = "Woordafbreking";
+ Text[ french ] = "Coupure de mots";
+ Text[ spanish ] = "Separación silábica";
+ Text[ italian ] = "Sillabazione";
+ Text[ danish ] = "Orddeling";
+ Text[ swedish ] = "Avstavning";
+ Text[ polish ] = "Dzielenie wyrazów na sylaby";
+ Text[ portuguese_brazilian ] = "Hyphenation";
+ Text[ japanese ] = "ʲÌÈ°¼®Ý";
+ Text[ korean ] = "ÇÏÀÌÇ ³Ö±â";
+ Text[ chinese_simplified ] = "Á¬×Ö·û";
+ Text[ chinese_traditional ] = "³s¦r¸¹";
+ Text[ arabic ] = "ÝÕá ÇáãÞÇØÚ";
+ Text[ turkish ] = "Heceleme";
+};
+
diff --git a/sw/source/ui/utlui/zoomctrl.cxx b/sw/source/ui/utlui/zoomctrl.cxx
new file mode 100644
index 000000000000..de4022b44859
--- /dev/null
+++ b/sw/source/ui/utlui/zoomctrl.cxx
@@ -0,0 +1,175 @@
+/*************************************************************************
+ *
+ * $RCSfile: zoomctrl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _STATUS_HXX //autogen
+#include <vcl/status.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SVX_ZOOMITEM_HXX //autogen
+#include <svx/zoomitem.hxx>
+#endif
+
+#include "swtypes.hxx"
+#include "zoomctrl.hxx"
+
+
+SFX_IMPL_STATUSBAR_CONTROL( SwZoomControl, SvxZoomItem );
+
+
+SwZoomControl::SwZoomControl( USHORT nId,
+ StatusBar& rStb,
+ SfxBindings& rBind ) :
+ SvxZoomStatusBarControl( nId, rStb, rBind )
+{
+}
+
+// -----------------------------------------------------------------------
+
+SwZoomControl::~SwZoomControl()
+{
+}
+
+// -----------------------------------------------------------------------
+
+void SwZoomControl::StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState )
+{
+ if(SFX_ITEM_AVAILABLE == eState && pState->ISA( SfxStringItem ))
+ {
+ sPreviewZoom = ((const SfxStringItem*)pState)->GetValue();
+ GetStatusBar().SetItemText( GetId(), sPreviewZoom );
+ }
+ else
+ {
+ sPreviewZoom = aEmptyStr;
+ SvxZoomStatusBarControl::StateChanged(nSID, eState, pState);
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void SwZoomControl::Paint( const UserDrawEvent& rUsrEvt )
+{
+ if(!sPreviewZoom.Len())
+ SvxZoomStatusBarControl::Paint(rUsrEvt);
+ else
+ GetStatusBar().SetItemText( GetId(), sPreviewZoom );
+}
+
+// -----------------------------------------------------------------------
+
+void SwZoomControl::Command( const CommandEvent& rCEvt )
+{
+ if(!sPreviewZoom.Len())
+ SvxZoomStatusBarControl::Command(rCEvt);
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.9 2000/09/18 16:06:19 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.8 2000/02/11 15:01:17 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.7 1997/11/21 11:10:18 MA
+ includes
+
+
+ Rev 1.6 21 Nov 1997 12:10:18 MA
+ includes
+
+ Rev 1.5 03 Nov 1997 13:59:24 MA
+ precomp entfernt
+
+ Rev 1.4 05 Sep 1997 12:23:06 MH
+ chg: header
+
+ Rev 1.3 06 Aug 1997 11:13:02 MH
+ chg: header
+
+ Rev 1.2 18 Jun 1996 16:59:44 OS
+ ui_pch includen
+
+ Rev 1.1 20 Mar 1996 13:42:54 HJS
+ einmal segmentc.hxx reicht
+
+ Rev 1.0 14 Jan 1996 15:30:32 OS
+ Initial revision.
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/web/makefile.mk b/sw/source/ui/web/makefile.mk
new file mode 100644
index 000000000000..6d9c51df81a4
--- /dev/null
+++ b/sw/source/ui/web/makefile.mk
@@ -0,0 +1,113 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sw
+TARGET=web
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ wdrwbase.cxx \
+ wformsh.cxx \
+ wgrfsh.cxx \
+ wlistsh.cxx \
+ wolesh.cxx \
+ wtabsh.cxx \
+ wfrmsh.cxx \
+ wtextsh.cxx \
+ wdocsh.cxx \
+ wview.cxx
+
+SRCFILES = \
+ web.src \
+ webport.src
+
+SLOFILES = \
+ $(SLO)$/wdrwbase.obj \
+ $(SLO)$/wformsh.obj \
+ $(SLO)$/wgrfsh.obj \
+ $(SLO)$/wlistsh.obj \
+ $(SLO)$/wolesh.obj \
+ $(SLO)$/wtabsh.obj \
+ $(SLO)$/wfrmsh.obj \
+ $(SLO)$/wtextsh.obj \
+ $(SLO)$/wdocsh.obj \
+ $(SLO)$/wview.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/web/wdocsh.cxx b/sw/source/ui/web/wdocsh.cxx
new file mode 100644
index 000000000000..5131747e57de
--- /dev/null
+++ b/sw/source/ui/web/wdocsh.cxx
@@ -0,0 +1,264 @@
+/*************************************************************************
+ *
+ * $RCSfile: wdocsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+
+#ifndef _SV_EXCHANGE_HXX //autogen
+#include <vcl/exchange.hxx>
+#endif
+
+#ifndef _SO_CLSIDS_HXX
+#include <so3/clsids.hxx>
+#endif
+
+#include "itemdef.hxx"
+
+#include "cmdid.h"
+#include "swtypes.hxx"
+
+#include "shellio.hxx"
+// nur wegen des Itemtypes
+#include "wdocsh.hxx"
+#include "web.hrc"
+
+#define SwWebDocShell
+#include "swslots.hxx"
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+SFX_IMPL_INTERFACE( SwWebDocShell, SfxObjectShell, SW_RES(0) )
+{
+ SwWebDocShell::Factory().RegisterHelpFile(C2S("swriter.svh"));
+ SwWebDocShell::Factory().RegisterHelpPIFile(C2S("swriter.svh"));
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Alle Filter registrieren
+ --------------------------------------------------------------------*/
+
+// 4.0: 0xf0caa840, 0x7821, 0x11d0, 0xa4, 0xa7, 0x0, 0xa0, 0x24, 0x9d, 0x57, 0xb1, Sw)
+// 5.0: 0xc20cf9d2, 0x85ae, 0x11d1, 0xaa, 0xb4, 0x0, 0x60, 0x97, 0xda, 0x56, 0x1a
+
+SFX_IMPL_OBJECTFACTORY_LOD(SwWebDocShell, SFXOBJECTSHELL_STD_NORMAL|SFXOBJECTSHELL_HASMENU, /*swriter4/web,*/ \
+ SvGlobalName(SO3_SWWEB_CLASSID), Sw)
+/*{
+ ::RegisterWebFilterInSfxFactory( (SfxObjectFactory&)Factory(), RC_WEB_ICON );
+} */
+
+
+TYPEINIT1(SwWebDocShell, SwDocShell);
+
+/*-----------------22.01.97 09.29-------------------
+
+--------------------------------------------------*/
+
+SwWebDocShell::SwWebDocShell(SfxObjectCreateMode eMode ) :
+ SwDocShell(eMode),
+ nSourcePara(0)
+{
+}
+
+/*-----------------22.01.97 09.29-------------------
+
+--------------------------------------------------*/
+
+__EXPORT SwWebDocShell::~SwWebDocShell()
+{
+}
+
+
+// Anforderung der pIo-Struktur fuer den Zugriff auf Substorages
+// und Streams
+/*-----------------22.01.97 09.29-------------------
+
+--------------------------------------------------*/
+
+void __EXPORT SwWebDocShell::FillRegInfo( SvEmbeddedRegistryInfo * pInfo)
+{
+ SfxInPlaceObject::FillRegInfo( pInfo );
+ pInfo->aObjName = C2S("StarWriterWebDocument");
+ pInfo->nMajorVers = 5;
+ pInfo->nMinorVers = 0;
+ pInfo->aHumanShortTypeName = SW_RESSTR(STR_HUMAN_SWWEBDOC_NAME);
+ pInfo->nIconResId =
+#ifdef REG_ICON_RESID_WWWW
+ REG_ICON_RESID_WWWW;
+#else
+ 7;
+#endif
+}
+
+
+void __EXPORT SwWebDocShell::FillClass( SvGlobalName * pClassName,
+ ULONG * pClipFormat,
+ String * pAppName,
+ String * pLongUserName,
+ String * pUserName,
+ long nVersion ) const
+{
+ SfxInPlaceObject::FillClass(pClassName, pClipFormat, pAppName, pLongUserName,
+ pUserName, nVersion);
+
+ if (nVersion == SOFFICE_FILEFORMAT_40)
+ {
+ *pClassName = SvGlobalName( SO3_SWWEB_CLASSID_40 );
+ *pClipFormat = SOT_FORMATSTR_ID_STARWRITERWEB_40;
+ *pAppName = C2S("StarWriter/Web 4.0");
+
+ *pLongUserName = SW_RESSTR(STR_WRITER_WEBDOC_FULLTYPE_40);
+ }
+ else if (nVersion == SOFFICE_FILEFORMAT_NOW)
+ {
+ *pLongUserName = SW_RESSTR(STR_WRITER_WEBDOC_FULLTYPE);
+ }
+ *pUserName = SW_RESSTR(STR_HUMAN_SWWEBDOC_NAME);
+}
+
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.22 2000/09/18 16:06:20 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.21 2000/05/10 11:54:44 os
+ Basic API removed
+
+ Revision 1.20 2000/04/19 11:21:44 os
+ UNICODE
+
+ Revision 1.19 2000/02/11 15:01:21 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.18 1998/11/18 14:18:18 JP
+ Task #59398#: ClipboardFormatId Umstellungen
+
+
+ Rev 1.17 18 Nov 1998 15:18:18 JP
+ Task #59398#: ClipboardFormatId Umstellungen
+
+ Rev 1.16 21 Apr 1998 11:56:28 TJ
+ include
+
+ Rev 1.15 17 Feb 1998 11:40:38 OS
+ HelpFile: Name gesetzt #47036#
+
+ Rev 1.14 14 Jan 1998 09:05:22 MIB
+ neu: GetSw4/5WebClipId
+
+ Rev 1.13 07 Jan 1998 18:39:38 MIB
+ 5.0 Fileformat
+
+ Rev 1.12 21 Nov 1997 11:33:20 MA
+ includes
+
+ Rev 1.11 03 Sep 1997 10:50:06 MBA
+ swslots.hxx statt wswslots.hxx
+
+ Rev 1.10 01 Sep 1997 13:10:58 OS
+ DLL-Umstellung
+
+ Rev 1.9 05 Aug 1997 16:47:22 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.8 05 Aug 1997 16:41:48 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.7 02 Jul 1997 08:04:44 OS
+ Zeile in der SourceView merken
+
+ Rev 1.6 10 Feb 1997 15:02:30 MA
+ ueberfluessigen CTor entfernt
+
+ Rev 1.5 31 Jan 1997 08:53:32 MA
+ Parent fuer Interface ist nicht die SwDocShell
+
+ Rev 1.4 28 Jan 1997 08:45:34 MA
+ Syntax
+
+ Rev 1.3 27 Jan 1997 16:12:04 MA
+ Icon
+
+ Rev 1.2 27 Jan 1997 12:46:02 MA
+ Filter fuer web
+
+ Rev 1.1 24 Jan 1997 10:32:30 OS
+ FillRegInfo sollte sich nicht selbst aufrufen
+
+ Rev 1.0 23 Jan 1997 16:19:32 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/web/web.src b/sw/source/ui/web/web.src
new file mode 100644
index 000000000000..b356ce6be9e1
--- /dev/null
+++ b/sw/source/ui/web/web.src
@@ -0,0 +1,623 @@
+/*************************************************************************
+ *
+ * $RCSfile: web.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#define MN_SW_WEB
+#ifndef _SVX_SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+#include "globals.hrc"
+#include "cmdid.h"
+#include "web.hrc"
+#include "swmn.hrc"
+#define ACC_SW_WEB
+#include "swacc.hrc"
+#include "toolbox.hrc"
+#include "helpid.h"
+ACC CFG_SWWEB_ACCEL
+{
+ ItemList =
+ {
+ ALL_ACCELS
+ FUNCTIONKEYS
+ };
+};
+String STR_HUMAN_SWWEBDOC_NAME
+{
+ Text = "HTML" ;
+ Text [ English ] = "HTML" ;
+ Text [ portuguese ] = "HTML" ;
+ Text [ english_us ] = "HTML" ;
+ Text [ portuguese_brazilian ] = "HTML" ;
+ Text [ swedish ] = "HTML" ;
+ Text [ danish ] = "HTML" ;
+ Text [ italian ] = "HTML" ;
+ Text [ spanish ] = "HTML" ;
+ Text [ french ] = "HTML" ;
+ Text [ dutch ] = "HTML" ;
+ Text[ chinese_simplified ] = "HTML";
+ Text[ russian ] = "HTML";
+ Text[ polish ] = "HTML";
+ Text[ japanese ] = "HTML";
+ Text[ chinese_traditional ] = "HTML";
+ Text[ arabic ] = "HTML";
+ Text[ dutch ] = "HTML";
+ Text[ chinese_simplified ] = "HTML";
+ Text[ greek ] = "HTML";
+ Text[ korean ] = "HTML";
+ Text[ turkish ] = "HTML";
+ Text[ language_user1 ] = " ";
+};
+String STR_WRITER_WEBDOC_FULLTYPE_40
+{
+ Text = "StarOffice 4.0 HTML" ;
+ Text [ English ] = "StarOffice 4.0 HTML" ;
+ Text [ english_us ] = "StarOffice 4.0 HTML" ;
+ Text [ portuguese_brazilian ] = "StarOffice 4.0 HTML" ;
+ Text [ swedish ] = "StarOffice 4.0 HTML" ;
+ Text [ danish ] = "StarOffice 4.0 HTML" ;
+ Text [ italian ] = "HTML StarOffice 4.0" ;
+ Text [ spanish ] = "HTML de StarOffice 4.0" ;
+ Text [ french ] = "HTML StarOffice 4.0" ;
+ Text [ dutch ] = "StarOffice 4.0 HTML" ;
+ Text [ portuguese ] = "HTML (StarOffice 4.0)" ;
+ Text[ chinese_simplified ] = "StarOffice 4.0 HTML";
+ Text[ russian ] = "StarOffice 4.0 HTML";
+ Text[ polish ] = "StarOffice 4.0 HTML";
+ Text[ japanese ] = "StarOffice 4.0 HTML";
+ Text[ chinese_traditional ] = "StarOffice 4.0 HTML";
+ Text[ arabic ] = "StarOffice 4.0 HTML";
+ Text[ dutch ] = "StarOffice 4.0 HTML";
+ Text[ chinese_simplified ] = "StarOffice 4.0 HTML";
+ Text[ greek ] = "StarOffice 4.0 HTML";
+ Text[ korean ] = "HTML (StarOffice 4.0)";
+ Text[ turkish ] = "StarOffice 4.0 HTML";
+ Text[ language_user1 ] = " ";
+};
+String STR_WRITER_WEBDOC_FULLTYPE
+{
+ Text = "StarOffice 5.0 HTML" ;
+ Text [ English ] = "StarOffice 5.0 HTML" ;
+ Text [ english_us ] = "StarOffice 5.0 HTML" ;
+ Text [ portuguese_brazilian ] = "StarOffice 5.0 HTML" ;
+ Text [ swedish ] = "StarOffice 5.0 HTML" ;
+ Text [ danish ] = "StarOffice 5.0 HTML" ;
+ Text [ italian ] = "HTML StarOffice 5.0" ;
+ Text [ spanish ] = "HTML de StarOffice 5.0" ;
+ Text [ french ] = "HTML StarOffice 5.0" ;
+ Text [ dutch ] = "StarOffice 5.0 HTML" ;
+ Text [ portuguese ] = "HTML (StarOffice 5.0)" ;
+ Text[ chinese_simplified ] = "StarOffice 5.0 HTML";
+ Text[ russian ] = "StarOffice 5.0 HTML";
+ Text[ polish ] = "StarOffice 5.0 HTML";
+ Text[ japanese ] = "StarOffice 5.0 HTML";
+ Text[ chinese_traditional ] = "StarOffice 5.0 HTML";
+ Text[ arabic ] = "StarOffice 5.0 HTML";
+ Text[ dutch ] = "StarOffice 5.0 HTML";
+ Text[ chinese_simplified ] = "StarOffice 5.0 HTML";
+ Text[ greek ] = "StarOffice 5.0 HTML";
+ Text[ korean ] = "HTML (StarOffice 5.0)";
+ Text[ turkish ] = "StarOffice 5.0 HTML";
+ Text[ language_user1 ] = " ";
+};
+String STR_SHELLNAME_WEBTEXT
+{
+ Text = "Text/Web" ;
+ Text [ ENGLISH ] = "Text/Web" ;
+ Text [ dutch ] = "Tekst/Web" ;
+ Text [ english_us ] = "Text/Web" ;
+ Text [ italian ] = "Testo/Web" ;
+ Text [ spanish ] = "Texto/Web" ;
+ Text [ french ] = "Texte/Web" ;
+ Text [ swedish ] = "Text/Webb" ;
+ Text [ danish ] = "Tekst/Web" ;
+ Text [ portuguese_brazilian ] = "Text/Web" ;
+ Text [ portuguese ] = "Texto/Web" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö/ÍòάÍø";
+ Text[ russian ] = "Òåêñò/Web";
+ Text[ polish ] = "Tekst/Web";
+ Text[ japanese ] = "÷½Ä/Web";
+ Text[ chinese_traditional ] = "¤å¦r/Web";
+ Text[ arabic ] = "äÕ/æíÈ";
+ Text[ dutch ] = "Tekst/Web";
+ Text[ chinese_simplified ] = "ÎÄ×Ö/ÍòάÍø";
+ Text[ greek ] = "Êåßìåíï/Web";
+ Text[ korean ] = "ÅؽºÆ®/À¥";
+ Text[ turkish ] = "Metin/Web";
+ Text[ language_user1 ] = " ";
+};
+String STR_SHELLNAME_WEBFRAME
+{
+ Text = "Rahmen/Web" ;
+ Text [ ENGLISH ] = "Frame/Web" ;
+ Text [ dutch ] = "Kader/Web" ;
+ Text [ english_us ] = "Frame/Web" ;
+ Text [ italian ] = "Cornice/Web" ;
+ Text [ spanish ] = "Marco/Web" ;
+ Text [ french ] = "Cadre/Web" ;
+ Text [ swedish ] = "Ram/Webb" ;
+ Text [ danish ] = "Ramme/Web" ;
+ Text [ portuguese_brazilian ] = "Rahmen/Web" ;
+ Text [ portuguese ] = "Moldura/Web" ;
+ Text[ chinese_simplified ] = "¿ò/ÍòάÍø";
+ Text[ russian ] = "Êàäð/Web";
+ Text[ polish ] = "Ramka/Web";
+ Text[ japanese ] = "˜g/Web";
+ Text[ chinese_traditional ] = "°T®Ø/Web";
+ Text[ arabic ] = "ÅØÇÑ/æíÈ";
+ Text[ dutch ] = "Kader/Web";
+ Text[ chinese_simplified ] = "¿ò/ÍòάÍø";
+ Text[ greek ] = "Ðëáßóéï/Web";
+ Text[ korean ] = "ÇÁ·¹ÀÓ/À¥";
+ Text[ turkish ] = "Çerçeve/Web";
+ Text[ language_user1 ] = " ";
+};
+String RID_WEBTOOLS_TOOLBOX
+{
+ Text = "Werkzeugleiste/Web" ;
+ Text [ English ] = "Toolbar/Web" ;
+ Text [ english_us ] = "Main Toolbar/Web" ;
+ Text [ italian ] = "Barra degli strumenti/Web" ;
+ Text [ spanish ] = "Barra de herramientas/Web" ;
+ Text [ french ] = "Barre d'instruments/Web" ;
+ Text [ dutch ] = "Werktuigbalk/Web" ;
+ Text [ swedish ] = "Verktygslist/Webb" ;
+ Text [ danish ] = "Værktøjslinje/Web" ;
+ Text [ portuguese_brazilian ] = "Werkzeugleiste/Web" ;
+ Text [ portuguese ] = "Barra de ferramentas/Web" ;
+ Text[ chinese_simplified ] = "Ö÷¹¤¾ßÀ¸/ÍòάÍø";
+ Text[ russian ] = "Ïàíåëü èíñòðóìåíòîâ/Web";
+ Text[ polish ] = "Pasek narzêdziowy/Web";
+ Text[ japanese ] = "•W€Â°ÙÊÞ°/Web";
+ Text[ chinese_traditional ] = "¥D¤u¨ã¦C/Web";
+ Text[ arabic ] = "ÔÑíØ ÇáÃÏæÇÊ/æíÈ";
+ Text[ dutch ] = "Werktuigbalk/Web";
+ Text[ chinese_simplified ] = "Ö÷¹¤¾ßÀ¸/ÍòάÍø";
+ Text[ greek ] = "ÃñáììÞ åñãáëåéþí/Web";
+ Text[ korean ] = "ÁÖ µµ±¸ ¸ðÀ½/À¥";
+ Text[ turkish ] = "Ana araç çubuðu/Web";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_WEBTOOLS_TOOLBOX
+{
+ HelpID = HID_WEBTOOLS_TOOLBOX ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ LineSpacing = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ Customize = TRUE ;
+ MenuStrings = TRUE ;
+ Scroll = TRUE ;
+ Hide = TRUE ;
+ Align = BOXALIGN_LEFT ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_CTRL ;
+ HelpID = HID_INSERT_CTRL ;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_FIELD_CTRL ;
+ HelpID = HID_INSERT_FIELD_CTRL ;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_HEADER ;
+ HelpID = FN_INSERT_HEADER ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_INSERT_FOOTER ;
+ HelpID = FN_INSERT_FOOTER ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_DRAW_TEXT_MARQUEE ;
+ HelpID = SID_DRAW_TEXT_MARQUEE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_FM_CONFIG ;
+ HelpID = SID_FM_CONFIG;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_GLOSSARY_DLG ;
+ HelpID = FN_GLOSSARY_DLG ;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_SPELLING_DLG ;
+ HelpID = FN_SPELLING_DLG ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_AUTOSPELL_CHECK
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_HYPHENATE_OPT_DLG;
+ HelpID = FN_HYPHENATE_OPT_DLG;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_THESAURUS_DLG;
+ HelpID = FN_THESAURUS_DLG;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_SEARCH_DLG ;
+ HelpID = SID_SEARCH_DLG ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_HYPERLINK_INSERT ;
+ HelpID = SID_HYPERLINK_INSERT ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_ZOOM;
+ HelpID = SID_ATTR_ZOOM ;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_VIEW_META_CHARS ;
+ HelpID = FN_VIEW_META_CHARS ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_VIEW_GRAPHIC ;
+ HelpID = FN_VIEW_GRAPHIC ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FN_PRINT_LAYOUT ;
+ HelpID = FN_PRINT_LAYOUT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_SOURCEVIEW ;
+ HelpID = HID_SOURCEVIEW ;
+ };
+ };
+};
+/*************************************************************************
+ Textleiste
+*************************************************************************/
+String RID_WEBTEXT_TOOLBOX
+{
+ Text = "Textobjektleiste/Web" ;
+ Text [ English ] = "Text objectbar/Web" ;
+ Text [ dutch ] = "Tekstobjectbalk/Web" ;
+ Text [ english_us ] = "Text Object Bar/Web" ;
+ Text [ italian ] = "Barra degli oggetti di testo/Web" ;
+ Text [ spanish ] = "Barra de objetos de texto/Web" ;
+ Text [ french ] = "Barre d'objets de texte/web" ;
+ Text [ swedish ] = "Textobjektlist/Webb" ;
+ Text [ danish ] = "Tekstobjektlinje/Web" ;
+ Text [ portuguese ] = "Barra de objectos de texto/Web" ;
+ Text [ portuguese_brazilian ] = "Textobjektleiste/Web" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö¶ÔÏóÀ¸/ÍòάÍø";
+ Text[ russian ] = "Ïàíåëü îáúåêòîâ òåêñòà/Web";
+ Text[ polish ] = "Pasek obiektów tekstu/Web";
+ Text[ japanese ] = "÷½ÄµÌÞ¼Þª¸ÄÊÞ°/Web";
+ Text[ chinese_traditional ] = "¤å¦rª«¥ó¦C/Web";
+ Text[ arabic ] = "ÔÑíØ ßÇÆäÇÊ ÇáäÕ/æíÈ";
+ Text[ dutch ] = "Tekstobjectbalk/Web";
+ Text[ chinese_simplified ] = "ÎÄ×Ö¶ÔÏóÀ¸/ÍòάÍø";
+ Text[ greek ] = "ÃñáììÞ áíôéêåéìÝíùí êåéìÝíïõ/Web";
+ Text[ korean ] = "ÅؽºÆ® °³Ã¼ ¸ðÀ½/À¥";
+ Text[ turkish ] = "Metin nesne çubuðu/Web";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_WEBTEXT_TOOLBOX
+{
+ HelpID = HID_WEBTEXT_TOOLBOX ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ Hide = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ LineSpacing = TRUE ;
+ Customize = TRUE ;
+ MenuStrings = TRUE ;
+ ItemList =
+ {
+ MN_TEMPLATE
+ MN_FONT
+ MN_TEXT1(TRUE)
+ MN_TEXT_LINESPACE
+ MN_TEXT2
+ MN_TEXT_BACKGROUND
+ MN_TEXT_DIALOGS(TRUE)
+ };
+ Scroll = TRUE ;
+};
+String RID_WEBFRAME_TOOLBOX
+{
+ Text = "Rahmenobjektleiste/Web" ;
+ Text [ English ] = "Frame objectbar/Web" ;
+ Text [ norwegian ] = "Ramme/Web" ;
+ Text [ italian ] = "Barra degli oggetti per cornice/Web" ;
+ Text [ portuguese_brazilian ] = "Moldura/Web" ;
+ Text [ portuguese ] = "Barra de objectos de moldura/Web" ;
+ Text [ finnish ] = "Kehys/Web" ;
+ Text [ danish ] = "Rammeobjektlinje/Web" ;
+ Text [ french ] = "Barre d'objets de cadre/Web" ;
+ Text [ swedish ] = "Ramobjektlist/Webb" ;
+ Text [ dutch ] = "Kaderobjectbalk/Web" ;
+ Text [ spanish ] = "Barra de objetos de marco/Web" ;
+ Text [ english_us ] = "Frame Object Bar/Web" ;
+ Text[ chinese_simplified ] = "¿ò¶ÔÏóÀ¸/ÍòάÍø";
+ Text[ russian ] = "Ïàíåëü îáúåêòà êàäðà/Web";
+ Text[ polish ] = "Pasek obiektów ramki/Web";
+ Text[ japanese ] = "˜gµÌÞ¼Þª¸ÄÊÞ°/Web";
+ Text[ chinese_traditional ] = "°T®Øª«¥ó¦C/Web";
+ Text[ arabic ] = "ÔÑíØ ßÇÆä ÅØÇÑ/æíÈ";
+ Text[ dutch ] = "Kaderobjectbalk/Web";
+ Text[ chinese_simplified ] = "¿ò¶ÔÏóÀ¸/ÍòάÍø";
+ Text[ greek ] = "ÃñáììÞ áíôéêåéìÝíùí ðëáéóßïõ/Web";
+ Text[ korean ] = "ÇÁ·¹ÀÓ °³Ã¼ ¸ðÀ½/À¥";
+ Text[ turkish ] = "Çerçeve nesne çubuðu/Web";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_WEBFRAME_TOOLBOX
+{
+ HelpID = HID_WEBFRAME_TOOLBOX ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ Hide = TRUE ;
+ LineSpacing = TRUE ;
+ MenuStrings = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ Customize = TRUE ;
+ ItemList =
+ {
+ MN_FRAME_WRAP_WEB
+ MN_FRAME1
+ MN_FRAME3
+ MN_LINESTYLE
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ MN_BACKGROUND_COLOR
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ MN_ATTRIBUTES_FRAME
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ MN_LAYER
+ ToolBoxItem
+ {
+ Identifier = FN_TOOL_ANKER ;
+ HelpID = FN_TOOL_ANKER ;
+ };
+ };
+ Scroll = TRUE ;
+};
+String RID_WEBGRAPHIC_TOOLBOX
+{
+ Text = "Grafikobjektleiste/Web" ;
+ Text [ English ] = "Graphic objectbar/Web" ;
+ Text [ norwegian ] = "Graphic/Web" ;
+ Text [ italian ] = "Barra degli oggetti grafici/Web" ;
+ Text [ portuguese_brazilian ] = "Gr fico/Web" ;
+ Text [ portuguese ] = "Barra de objectos gráficos/Web" ;
+ Text [ finnish ] = "Kuva/Web" ;
+ Text [ danish ] = "Grafikobjektlinje/Web" ;
+ Text [ french ] = "Barre d'objets graphiques/Web" ;
+ Text [ swedish ] = "Grafikobjektlist/Webb" ;
+ Text [ dutch ] = "Objectbalk afbeeldingen/Web" ;
+ Text [ spanish ] = "Barra de objetos gráficos/Web" ;
+ Text [ english_us ] = "Graphics Object Bar/Web" ;
+ Text[ chinese_simplified ] = "ͼÐζÔÏóÀ¸/Web";
+ Text[ russian ] = "Ïàíåëü ãðàôè÷åñêèõ îáúåêòîâ/Web";
+ Text[ polish ] = "Pasek obiektów graficznych/Web";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸ÄÊÞ°/Web";
+ Text[ chinese_traditional ] = "¹Ï¤ùª«¥ó¦C/Web";
+ Text[ arabic ] = "ÔÑíØ ßÇÆä ÕæÑÉ/ æíÈ";
+ Text[ dutch ] = "Objectbalk afbeeldingen/Web";
+ Text[ chinese_simplified ] = "ͼÐζÔÏóÀ¸/Web";
+ Text[ greek ] = "ÃñáììÞ áíôéêåéìÝíùí ó÷åäéáóìïý/Web";
+ Text[ korean ] = "±×·¡ÇÈ °³Ã¼ ¸ðÀ½/À¥";
+ Text[ turkish ] = "Grafik nesne çubuðu/Web";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_WEBGRAPHIC_TOOLBOX
+{
+ HelpID = HID_WEBGRAPHIC_TOOLBOX ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ LineSpacing = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ MenuStrings = TRUE ;
+ Customize = TRUE ;
+ Hide = TRUE ;
+ ItemList =
+ {
+ MN_FRAME_WRAP_WEB
+ MN_FRAME1
+ MN_FRAME3
+ MN_LINESTYLE
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_SIM_START
+ };
+ MN_ATTRIBUTES_GRAFIK
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ MN_LAYER
+ ToolBoxItem
+ {
+ Identifier = FN_TOOL_ANKER ;
+ HelpID = FN_TOOL_ANKER ;
+ DropDown = TRUE ;
+ };
+ };
+ Scroll = TRUE ;
+};
+String RID_WEBOLE_TOOLBOX
+{
+ Text = "Objekt" ;
+ Text [ English ] = "Object" ;
+ Text [ norwegian ] = "Object" ;
+ Text [ italian ] = "Oggetto" ;
+ Text [ portuguese_brazilian ] = "Objeto" ;
+ Text [ portuguese ] = "Objecto" ;
+ Text [ finnish ] = "Objekti" ;
+ Text [ danish ] = "Objekt" ;
+ Text [ french ] = "Objet" ;
+ Text [ swedish ] = "Objekt" ;
+ Text [ dutch ] = "Object" ;
+ Text [ spanish ] = "Objeto" ;
+ Text [ english_us ] = "Object" ;
+ Text[ chinese_simplified ] = "¶ÔÏó";
+ Text[ russian ] = "Îáúåêò";
+ Text[ polish ] = "Obiekt";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "ª«¥ó";
+ Text[ arabic ] = "ßÇÆä";
+ Text[ dutch ] = "Object";
+ Text[ chinese_simplified ] = "¶ÔÏó";
+ Text[ greek ] = "Áíôéêåßìåíï";
+ Text[ korean ] = "°³Ã¼";
+ Text[ turkish ] = "Nesne";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_WEBOLE_TOOLBOX
+{
+ HelpID = HID_OLE_TOOLBOX ;
+ 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 =
+ {
+ MN_FRAME_WRAP_WEB
+ MN_FRAME1
+ MN_FRAME3
+ MN_LINESTYLE
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ MN_ATTRIBUTES_OLE
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ MN_LAYER
+ ToolBoxItem
+ {
+ Identifier = FN_TOOL_ANKER ;
+ HelpID = FN_TOOL_ANKER ;
+ DropDown = TRUE ;
+ };
+ };
+};
+/*************************************************************************
+
+*************************************************************************/
diff --git a/sw/source/ui/web/wformsh.cxx b/sw/source/ui/web/wformsh.cxx
new file mode 100644
index 000000000000..93c0ec40aad0
--- /dev/null
+++ b/sw/source/ui/web/wformsh.cxx
@@ -0,0 +1,146 @@
+/*************************************************************************
+ *
+ * $RCSfile: wformsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "itemdef.hxx"
+
+#ifndef _SVX_SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _GLOBNAME_HXX //autogen
+#include <tools/globname.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+
+#include "swtypes.hxx"
+#include "cmdid.h"
+#include "wformsh.hxx"
+#include "globals.hrc"
+#include "web.hrc"
+#include "popup.hrc"
+#include "shells.hrc"
+
+#define SwWebDrawFormShell
+#include "swslots.hxx"
+
+SFX_IMPL_INTERFACE(SwWebDrawFormShell, SwDrawFormShell, SW_RES(0))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_DRAWFORM_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_DRAWFORM_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_DRAWFORM));
+}
+
+TYPEINIT1(SwWebDrawFormShell, SwDrawFormShell)
+
+SwWebDrawFormShell::SwWebDrawFormShell(SwView& rVw) :
+ SwDrawFormShell(rVw)
+{
+}
+
+__EXPORT SwWebDrawFormShell::~SwWebDrawFormShell()
+{
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.4 2000/09/18 16:06:20 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.3 2000/05/10 11:54:44 os
+ Basic API removed
+
+ Revision 1.2 1998/11/02 14:25:34 AWO
+ svxids.hrc wg. unbek. Defines includet
+
+
+ Rev 1.1 02 Nov 1998 15:25:34 AWO
+ svxids.hrc wg. unbek. Defines includet
+
+ Rev 1.0 08 Jun 1998 18:07:52 OM
+ Initial revision.
+
+ Rev 1.2 21 Nov 1997 11:33:20 MA
+ includes
+
+ Rev 1.1 03 Nov 1997 14:00:14 MA
+ precomp entfernt
+
+ Rev 1.0 03 Sep 1997 14:50:16 MBA
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/web/wfrmsh.cxx b/sw/source/ui/web/wfrmsh.cxx
new file mode 100644
index 000000000000..f7926ae6dc6d
--- /dev/null
+++ b/sw/source/ui/web/wfrmsh.cxx
@@ -0,0 +1,170 @@
+/*************************************************************************
+ *
+ * $RCSfile: wfrmsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx> //***
+#endif
+
+#include "swtypes.hxx"
+#include "cmdid.h"
+#include "view.hxx"
+#include "wfrmsh.hxx"
+#include "globals.hrc"
+#include "popup.hrc"
+#include "shells.hrc"
+#include "web.hrc"
+
+
+// STATIC DATA -----------------------------------------------------------
+#define SwWebFrameShell
+#include "itemdef.hxx"
+#include "swslots.hxx"
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SFX_IMPL_INTERFACE(SwWebFrameShell, SwFrameShell, SW_RES(STR_SHELLNAME_WEBFRAME))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_FRM_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_WEBFRAME_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_FRAME));
+}
+
+
+
+TYPEINIT1(SwWebFrameShell, SwFrameShell)
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+SwWebFrameShell::SwWebFrameShell(SwView &rView) :
+ SwFrameShell(rView)
+{
+ SetHelpId(SW_WEBFRAMESHELL);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+SwWebFrameShell::~SwWebFrameShell()
+{
+}
+
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.8 2000/09/18 16:06:20 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.7 2000/05/10 11:54:44 os
+ Basic API removed
+
+ Revision 1.6 1997/11/21 10:00:48 MA
+ includes
+
+
+ Rev 1.5 21 Nov 1997 11:00:48 MA
+ includes
+
+ Rev 1.4 03 Nov 1997 14:00:14 MA
+ precomp entfernt
+
+ Rev 1.3 03 Sep 1997 10:51:06 MBA
+ swslots.hxx statt wswslots.hxx
+
+ Rev 1.2 05 Aug 1997 16:41:48 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.1 31 Jul 1997 14:19:22 MH
+ chg: header
+
+ Rev 1.0 31 Jan 1997 13:31:56 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
+
+
diff --git a/sw/source/ui/web/wgrfsh.cxx b/sw/source/ui/web/wgrfsh.cxx
new file mode 100644
index 000000000000..f72e438b5c58
--- /dev/null
+++ b/sw/source/ui/web/wgrfsh.cxx
@@ -0,0 +1,147 @@
+/*************************************************************************
+ *
+ * $RCSfile: wgrfsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "itemdef.hxx"
+
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SFXAPP_HXX
+#include <sfx2/app.hxx>
+#endif
+
+#include "cmdid.h"
+#include "view.hxx"
+#include "wrtsh.hxx"
+#include "swmodule.hxx"
+#include "uitool.hxx"
+#include "docsh.hxx"
+#include "shells.hrc"
+#include "popup.hrc"
+#include "globals.hrc"
+#include "web.hrc"
+#include "wgrfsh.hxx"
+
+#define SwWebGrfShell
+#include "swslots.hxx"
+
+SFX_IMPL_INTERFACE(SwWebGrfShell, SwGrfShell, SW_RES(STR_SHELLNAME_GRAPHIC))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_GRF_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_WEBGRAPHIC_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_GRAFIK));
+}
+
+TYPEINIT1(SwWebGrfShell,SwGrfShell)
+
+SwWebGrfShell::SwWebGrfShell(SwView &rView) :
+ SwGrfShell(rView)
+
+{
+ SetName(String::CreateFromAscii("Graphic"));
+ SetHelpId(SW_GRFSHELL);
+}
+
+SwWebGrfShell::~SwWebGrfShell()
+{
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.8 2000/09/18 16:06:20 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.7 2000/05/10 11:54:44 os
+ Basic API removed
+
+ Revision 1.6 2000/04/26 15:06:50 os
+ include
+
+ Revision 1.5 2000/04/19 11:21:44 os
+ UNICODE
+
+ Revision 1.4 1998/11/05 12:10:36 OS
+ #59004# Kein Vorlagencontroller fuer Rahmen+Grafiken im HTML
+
+
+ Rev 1.3 05 Nov 1998 13:10:36 OS
+ #59004# Kein Vorlagencontroller fuer Rahmen+Grafiken im HTML
+
+ Rev 1.2 21 Nov 1997 10:55:12 MA
+ includes
+
+ Rev 1.1 03 Nov 1997 14:00:14 MA
+ precomp entfernt
+
+ Rev 1.0 03 Sep 1997 14:50:40 MBA
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/web/wlistsh.cxx b/sw/source/ui/web/wlistsh.cxx
new file mode 100644
index 000000000000..cc77cdbcce11
--- /dev/null
+++ b/sw/source/ui/web/wlistsh.cxx
@@ -0,0 +1,146 @@
+/*************************************************************************
+ *
+ * $RCSfile: wlistsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+#include "itemdef.hxx"
+
+
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _IMAPDLG_HXX_ //autogen
+#include <svx/imapdlg.hxx>
+#endif
+#ifndef _SBASLTID_HRC //autogen
+#include <offmgr/sbasltid.hrc>
+#endif
+
+#include "cmdid.h"
+#include "uiparam.hxx"
+#include "wrtsh.hxx"
+#include "swmodule.hxx"
+#include "globals.hrc"
+#include "shells.hrc"
+#include "uinums.hxx"
+#include "wlistsh.hxx"
+
+#define SwWebListShell
+#include "swslots.hxx"
+
+SFX_IMPL_INTERFACE(SwWebListShell, SwListShell, SW_RES(STR_SHELLNAME_LIST))
+{
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_NUM_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_LIST));
+}
+
+TYPEINIT1(SwWebListShell,SwListShell)
+
+SwWebListShell::SwWebListShell(SwView &rView) :
+ SwListShell(rView)
+{
+ SetName(String::CreateFromAscii("List"));
+ SetHelpId(SW_LISTSHELL);
+}
+
+__EXPORT SwWebListShell::~SwWebListShell()
+{
+}
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.7 2000/09/18 16:06:20 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.6 2000/05/26 07:21:35 os
+ old SW Basic API Slots removed
+
+ Revision 1.5 2000/05/10 11:54:44 os
+ Basic API removed
+
+ Revision 1.4 2000/04/19 11:21:44 os
+ UNICODE
+
+ Revision 1.3 1997/11/21 10:33:20 MA
+ includes
+
+
+ Rev 1.2 21 Nov 1997 11:33:20 MA
+ includes
+
+ Rev 1.1 03 Nov 1997 14:00:16 MA
+ precomp entfernt
+
+ Rev 1.0 03 Sep 1997 14:50:56 MBA
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/web/wolesh.cxx b/sw/source/ui/web/wolesh.cxx
new file mode 100644
index 000000000000..6df88fed4931
--- /dev/null
+++ b/sw/source/ui/web/wolesh.cxx
@@ -0,0 +1,183 @@
+/*************************************************************************
+ *
+ * $RCSfile: wolesh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "itemdef.hxx"
+
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "helpid.h"
+#include "globals.hrc"
+#include "web.hrc"
+#include "popup.hrc"
+#include "shells.hrc"
+#include "wolesh.hxx"
+#include "cmdid.h"
+
+#define SwWebOleShell
+#include "swslots.hxx"
+
+SFX_IMPL_INTERFACE(SwWebOleShell, SwOleShell, SW_RES(STR_SHELLNAME_OBJECT))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_OLE_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_WEBOLE_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_OLE));
+}
+
+SwWebOleShell::SwWebOleShell(SwView &rView) :
+ SwOleShell(rView)
+
+{
+ SetName(String::CreateFromAscii("Object"));
+ SetHelpId(SW_OLESHELL);
+}
+
+__EXPORT SwWebOleShell::~SwWebOleShell()
+{
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.8 2000/09/18 16:06:20 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.7 2000/05/10 11:54:44 os
+ Basic API removed
+
+ Revision 1.6 2000/04/19 11:21:44 os
+ UNICODE
+
+ Revision 1.5 1999/01/04 14:02:18 OS
+ #59918# Kein Vorlagencontroller fuer Rahmen+Grafiken im HTML
+
+
+ Rev 1.4 04 Jan 1999 15:02:18 OS
+ #59918# Kein Vorlagencontroller fuer Rahmen+Grafiken im HTML
+
+ Rev 1.3 21 Nov 1997 11:33:20 MA
+ includes
+
+ Rev 1.2 03 Nov 1997 14:00:16 MA
+ precomp entfernt
+
+ Rev 1.1 05 Sep 1997 12:36:00 MH
+ chg: header
+
+ Rev 1.0 03 Sep 1997 14:51:06 MBA
+ Initial revision.
+
+ Rev 1.21 01 Aug 1997 11:45:44 MH
+ chg: header
+
+ Rev 1.20 11 Nov 1996 13:37:34 MA
+ ResMgr
+
+ Rev 1.19 28 Aug 1996 15:55:14 OS
+ includes
+
+ Rev 1.18 13 Aug 1996 12:38:40 OS
+ neue Shellnamen im IDL-Interface
+
+ Rev 1.17 25 Jun 1996 19:51:50 HJS
+ includes
+
+ Rev 1.16 20 Mar 1996 12:41:14 HJS
+ funcdefs muessen unique sein!
+
+ Rev 1.15 06 Feb 1996 15:16:22 OS
+ neu: Activate/Deactivate fuer Objekte
+
+ Rev 1.14 26 Jan 1996 10:54:12 OS
+ neu: GetState - Ole-Objekt dem Basic herausreichen
+
+ Rev 1.13 03 Dec 1995 11:22:08 OS
+ +include itemdef.hxx
+
+ Rev 1.12 29 Nov 1995 13:47:54 OS
+ -slotadd.hxx
+
+ Rev 1.11 27 Nov 1995 19:40:06 OM
+ swslots->303a
+
+ Rev 1.10 24 Nov 1995 16:59:36 OM
+ PCH->PRECOMPILED
+
+ Rev 1.9 17 Nov 1995 13:03:40 MA
+ Segmentierung
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/web/wtabsh.cxx b/sw/source/ui/web/wtabsh.cxx
new file mode 100644
index 000000000000..b17c2f9b02e7
--- /dev/null
+++ b/sw/source/ui/web/wtabsh.cxx
@@ -0,0 +1,154 @@
+/*************************************************************************
+ *
+ * $RCSfile: wtabsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "uiparam.hxx"
+#include "hintids.hxx"
+
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _GLOBNAME_HXX //autogen
+#include <tools/globname.hxx>
+#endif
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX //autogen
+#include <svx/srchitem.hxx>
+#endif
+
+
+#include "cmdid.h"
+#include "globals.hrc"
+#include "uitool.hxx"
+#include "helpid.h"
+#include "popup.hrc"
+#include "shells.hrc"
+#include "table.hrc"
+#include "wrtsh.hxx"
+#include "wtabsh.hxx"
+
+#define SwWebTableShell
+#include "itemdef.hxx"
+#include "swslots.hxx"
+
+SFX_IMPL_INTERFACE(SwWebTableShell, SwTableShell, SW_RES(STR_SHELLNAME_TABLE))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_TAB_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_TABLE_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_TABLE));
+}
+
+TYPEINIT1(SwWebTableShell,SwTableShell)
+
+SwWebTableShell::SwWebTableShell(SwView &rView) :
+ SwTableShell(rView)
+{
+ GetShell().UpdateTable();
+ SetName(String::CreateFromAscii("Table"));
+ SetHelpId(SW_TABSHELL);
+}
+
+__EXPORT SwWebTableShell::~SwWebTableShell()
+{
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.8 2000/09/18 16:06:20 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.7 2000/05/10 11:54:44 os
+ Basic API removed
+
+ Revision 1.6 2000/04/19 11:21:44 os
+ UNICODE
+
+ Revision 1.5 1997/11/21 10:33:20 MA
+ includes
+
+
+ Rev 1.4 21 Nov 1997 11:33:20 MA
+ includes
+
+ Rev 1.3 13 Nov 1997 11:38:44 TRI
+ includes wegen Internal Compiler Error umgestellt
+
+ Rev 1.2 03 Nov 1997 14:00:16 MA
+ precomp entfernt
+
+ Rev 1.1 05 Sep 1997 12:36:00 MH
+ chg: header
+
+ Rev 1.0 03 Sep 1997 14:51:20 MBA
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sw/source/ui/web/wtextsh.cxx b/sw/source/ui/web/wtextsh.cxx
new file mode 100644
index 000000000000..258a6c6765a7
--- /dev/null
+++ b/sw/source/ui/web/wtextsh.cxx
@@ -0,0 +1,207 @@
+/*************************************************************************
+ *
+ * $RCSfile: wtextsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hintids.hxx"
+
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx> //***
+#endif
+#ifndef __SBX_SBXVARIABLE_HXX //autogen
+#include <svtools/sbxvar.hxx>
+#endif
+#ifndef _SBASLTID_HRC //autogen
+#include <offmgr/sbasltid.hrc>
+#endif
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+
+#include "swtypes.hxx"
+#include "cmdid.h"
+#include "view.hxx"
+#include "wtextsh.hxx"
+#include "basesh.hxx"
+#include "globals.hrc"
+#include "popup.hrc"
+#include "shells.hrc"
+#include "web.hrc"
+
+#define C2S(cChar) UniString::CreateFromAscii(cChar)
+
+// STATIC DATA -----------------------------------------------------------
+#define SwWebTextShell
+#define Paragraph
+#define HyphenZone
+#define TextFont
+#define DropCap
+#include "itemdef.hxx"
+#include "swslots.hxx"
+
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SFX_IMPL_INTERFACE(SwWebTextShell, SwBaseShell, SW_RES(STR_SHELLNAME_WEBTEXT))
+{
+ SFX_POPUPMENU_REGISTRATION(SW_RES(MN_WEB_TEXT_POPUPMENU));
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_WEBTEXT_TOOLBOX));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, SW_RES(MN_OBJECTMENU_WEBTEXT));
+ SFX_CHILDWINDOW_REGISTRATION(FN_EDIT_FORMULA);
+ SFX_CHILDWINDOW_REGISTRATION(SID_INSERT_DIAGRAM);
+ SFX_CHILDWINDOW_REGISTRATION(FN_INSERT_FIELD);
+}
+
+TYPEINIT1(SwWebTextShell, SwTextShell)
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwWebTextShell::SwWebTextShell(SwView &rView) :
+ SwTextShell(rView)
+{
+ SetHelpId(SW_WEBTEXTSHELL);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+SwWebTextShell::~SwWebTextShell()
+{
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.17 2000/09/18 16:06:20 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.16 2000/05/10 11:54:44 os
+ Basic API removed
+
+ Revision 1.15 2000/05/09 14:43:32 os
+ BASIC interface partially removed
+
+ Revision 1.14 2000/04/19 11:21:44 os
+ UNICODE
+
+ Revision 1.13 2000/02/01 10:00:38 os
+ #72282# SwWebBaseShell removed
+
+ Revision 1.12 2000/02/01 09:50:54 os
+ #72282# SwWebBaseShell removed
+
+ Revision 1.11 2000/01/31 20:19:38 jp
+ Bug #72455#,#72456# Text-PopupMenue moved into swmn.hrc, Web-Textshell with own PopupMenu
+
+ Revision 1.10 2000/01/18 11:57:17 os
+ #71740# interface inheritance corrected
+
+ Revision 1.9 1997/11/21 10:33:20 MA
+ includes
+
+
+ Rev 1.8 21 Nov 1997 11:33:20 MA
+ includes
+
+ Rev 1.7 03 Nov 1997 14:00:14 MA
+ precomp entfernt
+
+ Rev 1.6 03 Sep 1997 10:50:40 MBA
+ swslots.hxx statt wswslots.hxx
+
+ Rev 1.5 29 Aug 1997 12:05:54 MH
+ chg: header
+
+ Rev 1.4 05 Aug 1997 16:41:48 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.3 31 Jul 1997 14:19:20 MH
+ chg: header
+
+ Rev 1.2 28 Jan 1997 16:33:40 OS
+ Name der Shell geaendert
+
+ Rev 1.1 24 Jan 1997 14:55:54 OS
+ eigene TextToolBox
+
+ Rev 1.0 23 Jan 1997 16:18:08 OS
+ Initial revision.
+
+
+------------------------------------------------------------------------*/
+
diff --git a/sw/source/ui/web/wview.cxx b/sw/source/ui/web/wview.cxx
new file mode 100644
index 000000000000..a4c1639069c3
--- /dev/null
+++ b/sw/source/ui/web/wview.cxx
@@ -0,0 +1,523 @@
+/*************************************************************************
+ *
+ * $RCSfile: wview.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "itemdef.hxx"
+
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFX_TEMPLDLG_HXX //autogen
+#include <sfx2/templdlg.hxx>
+#endif
+#ifndef _SVX_SRCHDLG_HXX //autogen
+#include <svx/srchdlg.hxx>
+#endif
+#ifndef _IDETEMP_HXX //autogen
+#include <basctl/idetemp.hxx>
+#endif
+#ifndef _SBX_SBXOBJECT_HXX //autogen
+#include <svtools/sbxobj.hxx>
+#endif
+#ifndef _UIVWIMP_HXX
+#include <uivwimp.hxx>
+#endif
+#ifndef _SVX_FMSHELL_HXX //autogen
+#include <svx/fmshell.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+
+
+#ifndef _SWMODULE_HXX //autogen
+#include <swmodule.hxx>
+#endif
+#ifndef _UNOTXVW_HXX //autogen
+#include <unotxvw.hxx>
+#endif
+#include "swtypes.hxx"
+#include "cmdid.h"
+#include "globals.hrc"
+#include "wrtsh.hxx"
+#include "edtwin.hxx"
+#include "wgrfsh.hxx"
+#include "wfrmsh.hxx"
+#include "wolesh.hxx"
+#include "wtabsh.hxx"
+#include "wlistsh.hxx"
+#include "wformsh.hxx"
+#include "wtextsh.hxx"
+#include "barcfg.hxx"
+#include "doc.hxx"
+
+// EIGENTLICH nicht moeglich !!
+#include "beziersh.hxx"
+#include "drawsh.hxx"
+#include "drwtxtsh.hxx"
+
+#include "wview.hxx"
+#include "wdocsh.hxx"
+#include "web.hrc"
+#include "shells.hrc"
+
+#define SwWebView
+#define SearchAttributes
+#define ReplaceAttributes
+#define SearchSettings
+#define _ExecSearch ExecSearch
+#define _StateSearch StateSearch
+#define Frames
+#define Graphics
+#define OLEObjects
+#define Controls
+#define Text
+#define Frame
+#define Graphic
+#define Object
+#define Draw
+#define DrawText
+#define TextInTable
+#define ListInText
+#define ListInTable
+#define Page
+#include <svx/svxslots.hxx>
+#include "swslots.hxx"
+
+
+SFX_IMPL_VIEWFACTORY(SwWebView, SW_RES(STR_NONAME))
+{
+ SFX_VIEW_REGISTRATION(SwWebDocShell);
+}
+
+
+SFX_IMPL_INTERFACE( SwWebView, SwView, SW_RES(RID_WEBTOOLS_TOOLBOX) )
+{
+ SFX_CHILDWINDOW_REGISTRATION(SfxTemplateDialogWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(SvxSearchDialogWrapper::GetChildWindowId());
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_TOOLS|
+ SFX_VISIBILITY_STANDARD|SFX_VISIBILITY_SERVER,
+ SW_RES(RID_WEBTOOLS_TOOLBOX) );
+}
+
+TYPEINIT1(SwWebView,SwView)
+
+/*-----------------22.01.97 14.27-------------------
+
+--------------------------------------------------*/
+
+
+SwWebView::SwWebView(SfxViewFrame* pFrame, SfxViewShell* pShell) :
+ SwView(pFrame, pShell)
+{
+}
+
+/*-----------------22.01.97 14.27-------------------
+
+--------------------------------------------------*/
+
+
+SwWebView::~SwWebView()
+{
+}
+
+/*-----------------23.01.97 09.01-------------------
+
+--------------------------------------------------*/
+
+
+void SwWebView::SelectShell()
+{
+ // Entscheidung, ob UpdateTable gerufen werden muss
+ BOOL bUpdateTable = FALSE;
+ const SwFrmFmt* pCurTableFmt = GetWrtShell().GetTableFmt();
+ if(pCurTableFmt && pCurTableFmt != GetLastTblFrmFmt())
+ {
+ bUpdateTable = TRUE; // kann erst spaeter ausgefuehrt werden
+ }
+ SetLastTblFrmFmt(pCurTableFmt);
+ //SEL_TBL und SEL_TBL_CELLS koennen verodert sein!
+ int nNewSelectionType = (GetWrtShell().GetSelectionType()
+ & ~SwWrtShell::SEL_TBL_CELLS);
+
+ int nSelectionType = GetSelectionType();
+ if ( nNewSelectionType == nSelectionType )
+ {
+ GetViewFrame()->GetBindings().InvalidateAll( FALSE );
+ if ( nSelectionType & SwWrtShell::SEL_OLE ||
+ nSelectionType & SwWrtShell::SEL_GRF )
+ //Fuer Grafiken und OLE kann sich natuerlich das Verb aendern!
+ ImpSetVerb( nNewSelectionType );
+ }
+ else
+ {
+
+ // DELETEZ(pxSelectionObj); //Selektionsobjekt loeschen
+ SfxDispatcher &rDispatcher = *GetViewFrame()->GetDispatcher();
+ SwToolbarConfigItem *pBarCfg = SW_MOD()->GetWebToolbarConfig();
+
+ if( GetCurShell() )
+ {
+ rDispatcher.Flush(); // alle gecachten Shells wirklich loeschen
+
+ //Zur alten Selektion merken welche Toolbar sichtbar war
+ USHORT nId = rDispatcher.GetObjectBarId( SFX_OBJECTBAR_OBJECT );
+ if ( nId )
+ pBarCfg->SetTopToolbar( nSelectionType, nId );
+
+ SfxShell *pSfxShell;
+ USHORT i;
+ for ( i = 0; TRUE; ++i )
+ {
+ pSfxShell = rDispatcher.GetShell( i );
+ if ( !(pSfxShell->ISA( SwBaseShell ) ||
+ pSfxShell->ISA( SwDrawTextShell )) )
+ break;
+ }
+ pSfxShell = rDispatcher.GetShell( --i );
+ ASSERT( pSfxShell, "My Shell ist lost in space" );
+ rDispatcher.Pop( *pSfxShell, SFX_SHELL_POP_UNTIL | SFX_SHELL_POP_DELETE);
+ }
+
+ FASTBOOL bInitFormShell = FALSE;
+ if( !GetFormShell() )
+ {
+ bInitFormShell = TRUE;
+ SetFormShell( new FmFormShell( this ) );
+ rDispatcher.Push( *GetFormShell() );
+ }
+
+ FASTBOOL bSetExtInpCntxt = FALSE;
+ nSelectionType = nNewSelectionType;
+ SetSelectionType( nSelectionType );
+ ShellModes eShellMode;
+
+ if ( nSelectionType & SwWrtShell::SEL_OLE )
+ {
+ eShellMode = SEL_OBJECT;
+ SetShell( new SwWebOleShell( *this ));
+ rDispatcher.Push( *GetCurShell() );
+ }
+ else if ( nSelectionType & SwWrtShell::SEL_FRM
+ || nSelectionType & SwWrtShell::SEL_GRF)
+ {
+ eShellMode = SEL_FRAME;
+ SetShell( new SwWebFrameShell( *this ));
+ rDispatcher.Push( *GetCurShell() );
+ if(nSelectionType & SwWrtShell::SEL_GRF )
+ {
+ eShellMode = SEL_GRAPHIC;
+ SetShell( new SwWebGrfShell( *this ));
+ rDispatcher.Push( *GetCurShell() );
+ }
+ }
+ else if ( nSelectionType & SwWrtShell::SEL_FRM )
+ {
+ eShellMode = SEL_FRAME;
+ SetShell( new SwWebFrameShell( *this ));
+ rDispatcher.Push( *GetCurShell() );
+ }
+ else if ( nSelectionType & SwWrtShell::SEL_DRW )
+ {
+ eShellMode = SEL_DRAW;
+ SetShell( new SwDrawShell( *this ));
+ rDispatcher.Push( *GetCurShell() );
+ if ( nSelectionType & SwWrtShell::SEL_BEZ )
+ {
+ eShellMode = SEL_BEZIER;
+ SetShell( new SwBezierShell( *this ));
+ rDispatcher.Push( *GetCurShell() );
+ }
+
+ }
+ else if ( nSelectionType & SwWrtShell::SEL_DRW_FORM )
+ {
+ eShellMode = SEL_DRAW_FORM;
+ SetShell( new SwWebDrawFormShell( *this ));
+
+ rDispatcher.Push( *GetCurShell() );
+ }
+ else if ( nSelectionType & SwWrtShell::SEL_DRW_TXT )
+ {
+ eShellMode = SEL_DRAWTEXT;
+ rDispatcher.Push( *(new SwBaseShell( *this )) );
+ SetShell( new SwDrawTextShell( *this ));
+ rDispatcher.Push( *GetCurShell() );
+ }
+ else
+ {
+ bSetExtInpCntxt = TRUE;
+ eShellMode = SEL_TEXT;
+ if ( nSelectionType & SwWrtShell::SEL_NUM )
+ {
+ eShellMode = SEL_LIST_TEXT;
+ SetShell( new SwWebListShell( *this ));
+ rDispatcher.Push( *GetCurShell() );
+ }
+ SetShell( new SwWebTextShell(*this));
+ rDispatcher.Push( *GetCurShell() );
+ if ( nSelectionType & SwWrtShell::SEL_TBL )
+ {
+ eShellMode = eShellMode == SEL_LIST_TEXT ? SEL_TABLE_LIST_TEXT
+ : SEL_TABLE_TEXT;
+ SetShell( new SwWebTableShell( *this ));
+ rDispatcher.Push( *GetCurShell() );
+ }
+ }
+ ImpSetVerb( nSelectionType );
+ GetViewImpl()->SetShellMode(eShellMode);
+
+ if( !GetDocShell()->IsReadOnly() )
+ {
+ if( bSetExtInpCntxt && GetWrtShell().HasReadonlySel() )
+ bSetExtInpCntxt = FALSE;
+
+ InputContext aCntxt( GetEditWin().GetInputContext() );
+ aCntxt.SetOptions( bSetExtInpCntxt
+ ? (aCntxt.GetOptions() |
+ ( INPUTCONTEXT_TEXT |
+ INPUTCONTEXT_EXTTEXTINPUT ))
+ : (aCntxt.GetOptions() & ~
+ ( INPUTCONTEXT_TEXT |
+ INPUTCONTEXT_EXTTEXTINPUT )) );
+ GetEditWin().SetInputContext( aCntxt );
+ }
+
+ //Zur neuen Selektion die Toolbar aktivieren, die auch beim letzten Mal
+ //aktiviert war
+ //Vorher muss ein Flush() sein, betrifft aber lt. MBA nicht das UI und ist
+ //kein Performance-Problem
+ rDispatcher.Flush();
+ USHORT nId = pBarCfg->GetTopToolbar( nSelectionType );
+ if ( USHRT_MAX != nId )
+ rDispatcher.ShowObjectBar( nId );
+
+ Point aPnt = GetEditWin().GetPointerPosPixel();
+ aPnt = GetEditWin().PixelToLogic(aPnt);
+ GetEditWin().UpdatePointer(aPnt);
+
+ if ( bInitFormShell && GetWrtShell().GetDrawView() )
+ GetFormShell()->SetView( PTR_CAST( FmFormView,
+ GetWrtShell().GetDrawView()));
+
+
+ }
+ GetViewImpl()->GetUNOObject_Impl()->NotifySelChanged();
+
+ //Guenstiger Zeitpunkt fuer die Kommunikation mit OLE-Objekten?
+ if ( GetDocShell()->GetDoc()->IsOLEPrtNotifyPending() )
+ GetDocShell()->GetDoc()->PrtOLENotify( FALSE );
+
+ //jetzt das Tabellen-Update
+ if(bUpdateTable)
+ GetWrtShell().UpdateTable();
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.45 2000/09/18 16:06:20 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.44 2000/09/07 15:59:35 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.43 2000/09/04 11:46:58 tbe
+ basicide, isetbrw, si, vcdlged moved from svx to basctl
+
+ Revision 1.42 2000/08/08 13:47:37 os
+ #77423# separate graphic shell
+
+ Revision 1.41 2000/05/10 11:54:44 os
+ Basic API removed
+
+ Revision 1.40 1999/09/10 13:19:16 os
+ Chg: resource types removed
+
+ Revision 1.39 1999/08/05 17:25:16 JP
+ have to change: FmFormShell
+
+
+ Rev 1.38 05 Aug 1999 19:25:16 JP
+ have to change: FmFormShell
+
+ Rev 1.37 05 May 1999 11:23:30 OS
+ #63790# Tabellen-Update nur bei Bedarf rufen
+
+ Rev 1.36 08 Mar 1999 13:39:02 MA
+ #62792# OLE-Printer-Benachrichtigung vervollstaendigt
+
+ Rev 1.35 08 Feb 1999 12:51:58 OS
+ #61377# falsche DBG_ERRORs entsorgt
+
+ Rev 1.34 02 Feb 1999 13:16:28 JP
+ Bug #61335#: Schnistelle zu SwView geaendert
+
+ Rev 1.33 21 Oct 1998 11:40:00 OS
+ #58243# Objectbar aus der richtigen Konfiguration lesen
+
+ Rev 1.32 30 Jun 1998 13:02:08 MA
+ das war wohl grad etwas zu gruendlich
+
+ Rev 1.30 09 Jun 1998 15:33:32 OM
+ VC-Controls entfernt
+
+ Rev 1.29 08 Jun 1998 18:09:42 OM
+ Forms im HTML-Mode
+
+ Rev 1.28 12 May 1998 19:00:54 MA
+ schon mal Praeventiv die FormShell pushen
+
+ Rev 1.27 02 Apr 1998 10:07:18 MA
+ new: ToolbarCfg
+
+ Rev 1.26 11 Feb 1998 10:34:04 MA
+ #47035# und CopyCtor entfernt
+
+ Rev 1.25 16 Dec 1997 12:11:26 OS
+ Impl-Pointer fuer UNO
+
+ Rev 1.24 28 Nov 1997 14:46:38 MA
+ includes
+
+ Rev 1.23 21 Nov 1997 11:33:20 MA
+ includes
+
+ Rev 1.22 03 Nov 1997 14:00:14 MA
+ precomp entfernt
+
+ Rev 1.21 18 Sep 1997 14:02:04 OS
+ Pointer::GetPosPixel fuer VCL ersetzt
+
+ Rev 1.20 05 Sep 1997 12:36:00 MH
+ chg: header
+
+ Rev 1.19 03 Sep 1997 14:52:36 MBA
+ Neue WebShells
+
+ Rev 1.18 03 Sep 1997 10:51:30 MBA
+ swslots.hxx statt wswslots.hxx
+
+ Rev 1.17 05 Aug 1997 16:41:48 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.16 08 Jul 1997 12:08:06 OM
+ Draw-Selektionsmodi aufgeraeumt
+
+ Rev 1.15 25 Jun 1997 13:35:52 OM
+ #40966# DrawBaseShell-Ptr wieder eingefuehrt
+
+ Rev 1.14 19 Jun 1997 16:39:24 MA
+ fix: reste vom DrawText-Umbau
+
+ Rev 1.13 18 Jun 1997 17:27:36 HJS
+ alte segmentierung raus
+
+ Rev 1.12 17 Jun 1997 15:43:12 MA
+ DrawTxtShell nicht von BaseShell ableiten + Opts
+
+ Rev 1.11 14 Apr 1997 16:18:00 OS
+ Search/ReplaceAttributes
+
+ Rev 1.10 10 Apr 1997 10:18:58 TRI
+ includes
+
+ Rev 1.9 09 Apr 1997 08:15:38 MA
+ includes
+
+ Rev 1.8 23 Feb 1997 15:06:26 OS
+ GetIcon ueberladen
+
+ Rev 1.7 03 Feb 1997 15:03:36 MA
+ chg: ListShell nach unten
+
+ Rev 1.6 31 Jan 1997 13:35:16 OS
+ neu: SwWebFrameShell
+
+ Rev 1.5 30 Jan 1997 11:07:24 OS
+ erweiterter View-Ctor
+
+ Rev 1.4 29 Jan 1997 12:52:18 OS
+ SelectShell: DrawCtrlShell nachgetragen
+
+ Rev 1.3 24 Jan 1997 14:54:28 OS
+ RID_WEBTOOLS_TOOLBOX
+
+ Rev 1.2 23 Jan 1997 17:37:24 OS
+ GetDispatcher nicht an der SwView aufrufen
+
+ Rev 1.1 23 Jan 1997 17:25:20 OS
+ Cast fuer SetDrawBaseShell
+
+ Rev 1.0 23 Jan 1997 16:17:26 OS
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sw/source/ui/wrtsh/delete.cxx b/sw/source/ui/wrtsh/delete.cxx
new file mode 100644
index 000000000000..c3cdd33f42c7
--- /dev/null
+++ b/sw/source/ui/wrtsh/delete.cxx
@@ -0,0 +1,504 @@
+/*************************************************************************
+ *
+ * $RCSfile: delete.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+
+
+inline void SwWrtShell::OpenMark()
+{
+ StartAllAction();
+ ResetCursorStack();
+ KillPams();
+ SetMark();
+}
+
+inline void SwWrtShell::CloseMark( BOOL bOkFlag )
+{
+ if( bOkFlag )
+ UpdateAttr();
+ else
+ SwapPam();
+
+ ClearMark();
+ EndAllAction();
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung: Zeile loeschen
+------------------------------------------------------------------------*/
+
+
+
+long SwWrtShell::DelLine()
+{
+ ACT_KONTEXT(this);
+ ResetCursorStack();
+ // alten Cursor merken
+ Push();
+ ClearMark();
+ SwCrsrShell::LeftMargin();
+ SetMark();
+ SwCrsrShell::RightMargin();
+//Warum soll hier noch ein Zeichen in der naechsten Zeile geloescht werden?
+// if(!IsEndOfPara())
+// SwCrsrShell::Right();
+ long nRet = Delete();
+ Pop(FALSE);
+ if( nRet )
+ UpdateAttr();
+ return nRet;
+}
+
+
+
+long SwWrtShell::DelToStartOfLine()
+{
+ OpenMark();
+ SwCrsrShell::LeftMargin();
+ long nRet = Delete();
+ CloseMark( 0 != nRet );
+ return nRet;
+}
+
+
+
+long SwWrtShell::DelToEndOfLine()
+{
+ OpenMark();
+ SwCrsrShell::RightMargin();
+ long nRet = Delete();
+ CloseMark( 0 != nRet );
+ return 1;
+}
+
+
+
+long SwWrtShell::DelLeft()
+{
+ // wenns denn ein Fly ist, wech damit
+ int nSelType = GetSelectionType();
+ const int nCmp = SEL_FRM | SEL_GRF | SEL_OLE | SEL_DRW;
+ if( nCmp & nSelType )
+ {
+ DelSelectedObj();
+ LeaveSelFrmMode();
+ UnSelectFrm();
+ nSelType = GetSelectionType();
+ if ( nCmp & nSelType )
+ {
+ EnterSelFrmMode();
+ GotoNextFly();
+ }
+ return 1L;
+ }
+
+ // wenn eine Selektion existiert, diese loeschen.
+ if ( IsSelection() )
+ {
+ //OS: wieder einmal Basic: ACT_KONTEXT muss vor
+ //EnterStdMode verlassen werden!
+ {
+ ACT_KONTEXT(this);
+ ResetCursorStack();
+ Delete();
+ UpdateAttr();
+ }
+ EnterStdMode();
+ return 1L;
+ }
+
+ // JP 29.06.95: nie eine davor stehende Tabelle loeschen.
+ BOOL bSwap = FALSE;
+ if( SwCrsrShell::IsSttPara() && !SwCrsrShell::IsCrsrInTbl() )
+ {
+ if( !SwCrsrShell::Left() )
+ return 0;
+ if( SwCrsrShell::IsCrsrInTbl() )
+ {
+ SwCrsrShell::Right();
+ return 0;
+ }
+ OpenMark();
+ SwCrsrShell::Right();
+ SwCrsrShell::SwapPam();
+ bSwap = TRUE;
+ }
+ else
+ {
+ OpenMark();
+ SwCrsrShell::Left();
+ }
+ long nRet = Delete();
+ if( !nRet && bSwap )
+ SwCrsrShell::SwapPam();
+ CloseMark( 0 != nRet );
+ return nRet;
+}
+
+
+
+long SwWrtShell::DelRight(BOOL bDelFrm)
+{
+ // werden verodert, wenn Tabellenselektion vorliegt;
+ // wird hier auf SEL_TBL umgesetzt.
+ long nRet = 0;
+ int nSelection = GetSelectionType();
+ if(nSelection & SwWrtShell::SEL_TBL_CELLS)
+ nSelection = SwWrtShell::SEL_TBL;
+ if(nSelection & SwWrtShell::SEL_TXT)
+ nSelection = SwWrtShell::SEL_TXT;
+ switch( nSelection & ~(SEL_BEZ) )
+ {
+ case SEL_TXT:
+ case SEL_TBL:
+ case SEL_NUM:
+ // wenn eine Selektion existiert, diese loeschen.
+ if( IsSelection() )
+ {
+ //OS: wieder einmal Basic: ACT_KONTEXT muss vor
+ //EnterStdMode verlassen werden!
+ {
+ ACT_KONTEXT(this);
+ ResetCursorStack();
+ Delete();
+ UpdateAttr();
+ }
+ EnterStdMode();
+ nRet = 1L;
+ break;
+ }
+
+ if( SEL_TXT & nSelection && SwCrsrShell::IsSttPara() &&
+ SwCrsrShell::IsEndPara() && !IsCrsrInTbl() &&
+ SwCrsrShell::Right() )
+ {
+ BOOL bDelFull = 0 != IsCrsrInTbl();
+ SwCrsrShell::Left();
+
+ if( bDelFull )
+ {
+ DelFullPara();
+ UpdateAttr();
+ break;
+ }
+ }
+
+ OpenMark();
+ SwCrsrShell::Right();
+ nRet = Delete();
+ CloseMark( 0 != nRet );
+ break;
+
+ case SEL_FRM:
+ case SEL_GRF:
+ case SEL_OLE:
+ case SEL_DRW:
+ case SEL_DRW_TXT:
+ case SEL_DRW_FORM:
+ DelSelectedObj();
+ LeaveSelFrmMode();
+ UnSelectFrm();
+
+ if( IsFrmSelected() )
+ {
+ nSelection = GetSelectionType();
+ if ( SEL_FRM & nSelection || SEL_GRF & nSelection ||
+ SEL_OLE & nSelection || SEL_DRW & nSelection )
+ {
+ EnterSelFrmMode();
+ GotoNextFly();
+ }
+ }
+ nRet = 1;
+ break;
+ }
+ return nRet;
+}
+
+
+
+long SwWrtShell::DelToEndOfPara()
+{
+ ACT_KONTEXT(this);
+ ResetCursorStack();
+ Push();
+ SetMark();
+ if( !MovePara(fnParaCurr,fnParaEnd))
+ {
+ Pop(FALSE);
+ return 0;
+ }
+ long nRet = Delete();
+ Pop(FALSE);
+ if( nRet )
+ UpdateAttr();
+ return nRet;
+}
+
+
+
+long SwWrtShell::DelToStartOfPara()
+{
+ ACT_KONTEXT(this);
+ ResetCursorStack();
+ Push();
+ SetMark();
+ if( !MovePara(fnParaCurr,fnParaStart))
+ {
+ Pop(FALSE);
+ return 0;
+ }
+ long nRet = Delete();
+ Pop(FALSE);
+ if( nRet )
+ UpdateAttr();
+ return nRet;
+}
+/*
+ * alle Loeschoperationen sollten mit Find statt mit
+ * Nxt-/PrvDelim arbeiten, da letzteren mit Wrap Around arbeiten
+ * -- das ist wohl nicht gewuenscht.
+ */
+
+
+
+long SwWrtShell::DelToStartOfSentence()
+{
+ if(IsStartOfDoc())
+ return 0;
+ OpenMark();
+ long nRet = _BwdSentence() ? Delete() : 0;
+ CloseMark( 0 != nRet );
+ return nRet;
+}
+
+
+
+long SwWrtShell::DelToEndOfSentence()
+{
+ if(IsEndOfDoc())
+ return 0;
+ OpenMark();
+ long nRet = _FwdSentence() ? Delete() : 0;
+ CloseMark( 0 != nRet );
+ return nRet;
+}
+
+
+
+long SwWrtShell::DelNxtWord()
+{
+ if(IsEndOfDoc())
+ return 0;
+ ACT_KONTEXT(this);
+ ResetCursorStack();
+ EnterStdMode();
+ SetMark();
+ if(IsEndWrd())
+ _NxtWrd();
+ if(IsSttWrd() || IsEndPara())
+ _NxtWrd();
+ else
+ _EndWrd();
+
+ long nRet = Delete();
+ if( nRet )
+ UpdateAttr();
+ else
+ SwapPam();
+ ClearMark();
+ return nRet;
+}
+
+
+
+long SwWrtShell::DelPrvWord()
+{
+ if(IsStartOfDoc())
+ return 0;
+ ACT_KONTEXT(this);
+ ResetCursorStack();
+ EnterStdMode();
+ SetMark();
+ if( !IsSttWrd() || !_PrvWrd() )
+ {
+ if( IsEndWrd() )
+ {
+ if( _PrvWrd() )
+ {
+ // skip over all-1 spaces
+ short n = -1;
+ while( ' ' == GetChar( FALSE, n ))
+ --n;
+
+ if( ++n )
+ ExtendSelection( FALSE, -n );
+ }
+ }
+ else if( IsSttPara())
+ _PrvWrd();
+ else
+ _SttWrd();
+ }
+ long nRet = Delete();
+ if( nRet )
+ UpdateAttr();
+ else
+ SwapPam();
+ ClearMark();
+ return nRet;
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.70 2000/09/18 16:06:26 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.69 2000/04/10 08:39:49 jp
+ Bug #74881#: DelPrvWord
+
+ Revision 1.68 1999/04/01 13:21:50 JP
+ Bug #64298#: DelRight - auch Controls usw. entfernen
+
+
+ Rev 1.67 01 Apr 1999 15:21:50 JP
+ Bug #64298#: DelRight - auch Controls usw. entfernen
+
+ Rev 1.66 05 Feb 1999 15:07:54 JP
+ Bug #61386#: DelRight unnoetigen Befehl entfernt
+
+ Rev 1.65 19 Jan 1999 22:53:46 JP
+ Task #58677#: Crsr in Readonly Bereichen zulassen
+
+ Rev 1.64 15 Jan 1999 15:43:28 JP
+ Bug #60917#: DelPrevWord korrigiert
+
+ Rev 1.63 09 Jun 1998 15:34:32 OM
+ VC-Controls entfernt
+
+ Rev 1.62 21 Apr 1998 17:36:28 OM
+ #49630 Keine Rahmenselektion nach Loeschung von Zeichenobjekten
+
+ Rev 1.61 24 Nov 1997 14:35:06 MA
+ includes
+
+ Rev 1.60 03 Nov 1997 14:02:54 MA
+ precomp entfernt
+
+ Rev 1.59 06 Mar 1997 09:22:58 OM
+ sel_drw_ctrl ergaenzt
+
+ Rev 1.58 05 Feb 1997 17:01:04 JP
+ Bug #35638#: DelRight in Zellen
+
+ Rev 1.57 03 Feb 1997 20:41:30 JP
+ DelRight: leeren TextNode vor Tabellen loeschen
+
+ Rev 1.56 22 Jan 1997 11:55:56 MA
+ opt: bSelection entfernt
+
+ Rev 1.55 29 Aug 1996 09:26:04 OS
+ includes
+
+ Rev 1.54 22 Jan 1996 16:28:50 OS
+ DelRight/Left: ACT_KONTEXT muss vor EnterStdMode enden wg. Shellumschaltung aus Basic Bug #24529#
+
+ Rev 1.53 24 Nov 1995 16:59:04 OM
+ PCH->PRECOMPILED
+
+ Rev 1.52 22 Sep 1995 11:45:48 JP
+ DelLeft: & und nicht | abfragen
+
+ Rev 1.51 10 Aug 1995 13:04:44 OS
+ DelLine: nur bis zum Zeilenende markieren und loeschen
+
+ Rev 1.50 05 Jul 1995 19:14:52 JP
+ Delete: mit Backspace keine Tabelle loeschen
+
+ Rev 1.49 29 Jun 1995 20:10:12 JP
+ DelLeft: keine Tabellen loeschen mit BACKSPACE
+
+ Rev 1.48 19 Jun 1995 09:53:44 MA
+ fix(13180): Del fuer Zeichenobjekte.
+
+ Rev 1.47 05 Apr 1995 19:47:38 OM
+ Bug in NumShell mit Delete gefixt
+
+ Rev 1.46 20 Dec 1994 11:53:44 MA
+ SS Drawing.
+
+ Rev 1.45 15 Dec 1994 20:32:04 SWG
+ *ARR* Ersetzungen, svmem, __far_data etc.
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/wrtsh/makefile.mk b/sw/source/ui/wrtsh/makefile.mk
new file mode 100644
index 000000000000..18ebddcd82ba
--- /dev/null
+++ b/sw/source/ui/wrtsh/makefile.mk
@@ -0,0 +1,111 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:14: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=sw
+TARGET=wrtsh
+
+AUTOSEG=true
+
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\ui_1st\ui_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/sw.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ move.cxx \
+ select.cxx \
+ wrtsh1.cxx \
+ wrtsh2.cxx \
+ wrtsh3.cxx \
+ wrtsh4.cxx \
+ delete.cxx \
+ wrtundo.cxx
+
+SRCFILES = \
+ wrtsh.src
+
+SLOFILES = \
+ $(SLO)$/move.obj \
+ $(SLO)$/select.obj \
+ $(SLO)$/wrtsh1.obj \
+ $(SLO)$/wrtsh2.obj \
+ $(SLO)$/wrtsh3.obj \
+ $(SLO)$/wrtsh4.obj \
+ $(SLO)$/delete.obj \
+ $(SLO)$/wrtundo.obj
+
+EXCEPTIONSFILES= \
+ $(SLO)$/wrtsh1.obj \
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sw/source/ui/wrtsh/move.cxx b/sw/source/ui/wrtsh/move.cxx
new file mode 100644
index 000000000000..b84034fed9ee
--- /dev/null
+++ b/sw/source/ui/wrtsh/move.cxx
@@ -0,0 +1,823 @@
+/*************************************************************************
+ *
+ * $RCSfile: move.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+
+/* Immer:
+ - Zuruecksetzen des Cursorstacks
+ - Timer nachtriggern
+ - gfs. GCAttr
+
+ bei Selektion
+ - SttSelect()
+
+ sonst
+ - EndSelect()
+ */
+
+const long nReadOnlyScrollOfst = 10;
+
+class ShellMoveCrsr
+{
+ SwWrtShell* pSh;
+ BOOL bAct;
+public:
+ inline ShellMoveCrsr( SwWrtShell* pWrtSh, FASTBOOL bSel )
+ {
+ bAct = !pWrtSh->ActionPend() && (pWrtSh->GetFrmType(0,FALSE) & FRMTYPE_FLY_ANY);
+ ( pSh = pWrtSh )->MoveCrsr( BOOL(bSel) );
+ pWrtSh->GetView().GetViewFrame()->GetBindings().Invalidate(SID_HYPERLINK_GETLINK);
+ }
+ inline ~ShellMoveCrsr()
+ {
+ if( bAct )
+ {
+ //Die Action wird fuer das Scrollen in "einabsaetzigen" Rahmen mit
+ //fester Hoehe gebraucht.
+ pSh->StartAllAction();
+ pSh->EndAllAction();
+ }
+ }
+};
+
+void SwWrtShell::MoveCrsr( FASTBOOL bWithSelect )
+{
+ ResetCursorStack();
+ if ( IsGCAttr() )
+ {
+ GCAttr();
+ ClearGCAttr();
+ }
+ if ( bWithSelect )
+ SttSelect();
+ else
+ {
+ EndSelect();
+ (this->*fnKillSel)( 0, FALSE );
+ }
+}
+
+FASTBOOL SwWrtShell::SimpleMove( FNSimpleMove FnSimpleMove, FASTBOOL bSelect )
+{
+ FASTBOOL nRet;
+ if( bSelect )
+ {
+ SttCrsrMove();
+ MoveCrsr( TRUE );
+ nRet = (this->*FnSimpleMove)();
+ EndCrsrMove();
+ }
+ else if( 0 != ( nRet = (this->*FnSimpleMove)() ) )
+ MoveCrsr( FALSE );
+ return nRet;
+}
+
+
+FASTBOOL SwWrtShell::Left( FASTBOOL bSelect, USHORT nCount, BOOL bBasicCall )
+{
+ if ( !bSelect && !bBasicCall && IsCrsrReadonly() )
+ {
+ Point aTmp( VisArea().Pos() );
+ aTmp.X() -= VisArea().Width() * nReadOnlyScrollOfst / 100;
+ rView.SetVisArea( aTmp );
+ return TRUE;
+ }
+ else
+ {
+ ShellMoveCrsr aTmp( this, bSelect );
+ return SwCrsrShell::Left( nCount );
+ }
+}
+
+
+
+FASTBOOL SwWrtShell::Right( FASTBOOL bSelect, USHORT nCount, BOOL bBasicCall )
+{
+ if ( !bSelect && !bBasicCall && IsCrsrReadonly() )
+ {
+ Point aTmp( VisArea().Pos() );
+ aTmp.X() += VisArea().Width() * nReadOnlyScrollOfst / 100;
+ aTmp.X() = rView.SetHScrollMax( aTmp.X() );
+ rView.SetVisArea( aTmp );
+ return TRUE;
+ }
+ else
+ {
+ ShellMoveCrsr aTmp( this, bSelect );
+ return SwCrsrShell::Right( nCount );
+ }
+}
+
+
+
+FASTBOOL SwWrtShell::Up( FASTBOOL bSelect, USHORT nCount, BOOL bBasicCall )
+{
+ if ( !bSelect && !bBasicCall && IsCrsrReadonly() )
+ {
+ Point aTmp( VisArea().Pos() );
+ aTmp.Y() -= VisArea().Height() * nReadOnlyScrollOfst / 100;
+ rView.SetVisArea( aTmp );
+ return TRUE;
+ }
+ else
+ {
+ ShellMoveCrsr aTmp( this, bSelect );
+ return SwCrsrShell::Up( nCount );
+ }
+}
+
+
+
+FASTBOOL SwWrtShell::Down( FASTBOOL bSelect, USHORT nCount, BOOL bBasicCall )
+{
+ if ( !bSelect && !bBasicCall && IsCrsrReadonly() )
+ {
+ Point aTmp( VisArea().Pos() );
+ aTmp.Y() += VisArea().Height() * nReadOnlyScrollOfst / 100;
+ aTmp.Y() = rView.SetVScrollMax( aTmp.Y() );
+ rView.SetVisArea( aTmp );
+ return TRUE;
+ }
+ else
+ {
+ ShellMoveCrsr aTmp( this, bSelect );
+ return SwCrsrShell::Down( nCount );
+ }
+}
+
+
+
+FASTBOOL SwWrtShell::LeftMargin( FASTBOOL bSelect, FASTBOOL bBasicCall )
+{
+ if ( !bSelect && !bBasicCall && IsCrsrReadonly() )
+ {
+ Point aTmp( VisArea().Pos() );
+ aTmp.X() = DOCUMENTBORDER;
+ rView.SetVisArea( aTmp );
+ return TRUE;
+ }
+ else
+ {
+ ShellMoveCrsr aTmp( this, bSelect );
+ return SwCrsrShell::LeftMargin();
+ }
+}
+
+
+
+FASTBOOL SwWrtShell::RightMargin( FASTBOOL bSelect, FASTBOOL bBasicCall )
+{
+ if ( !bSelect && !bBasicCall && IsCrsrReadonly() )
+ {
+ Point aTmp( VisArea().Pos() );
+ aTmp.X() = GetDocSize().Width() - VisArea().Width() + DOCUMENTBORDER;
+ if( DOCUMENTBORDER > aTmp.X() )
+ aTmp.X() = DOCUMENTBORDER;
+ rView.SetVisArea( aTmp );
+ return TRUE;
+ }
+ else
+ {
+ ShellMoveCrsr aTmp( this, bSelect );
+ return SwCrsrShell::RightMargin(bBasicCall);
+ }
+}
+
+
+
+BOOL SwWrtShell::GoStart( BOOL bKeepArea, BOOL *pMoveTable,
+ BOOL bSelect, BOOL bDontMoveRegion )
+{
+ if ( IsCrsrInTbl() )
+ {
+ const BOOL bBoxSelection = HasBoxSelection();
+ if ( !bSelect )
+ EnterStdMode();
+ else
+ SttSelect();
+ // Tabellenzelle?
+ if ( !bBoxSelection && (MoveSection( fnSectionCurr, fnSectionStart)
+ || bDontMoveRegion))
+ {
+ if ( pMoveTable )
+ *pMoveTable = FALSE;
+ return TRUE;
+ }
+ if( MoveTable( fnTableCurr, fnTableStart ) || bDontMoveRegion )
+ {
+ if ( pMoveTable )
+ *pMoveTable = TRUE;
+ return TRUE;
+ }
+ else if( bBoxSelection && pMoveTable )
+ {
+ // JP 09.01.96: wir haben eine Boxselektion (oder leere Zelle)
+ // und wollen selektieren (pMoveTable wird im
+ // SelAll gesetzt). Dann darf die Tabelle nicht
+ // verlassen werden; sonst ist keine Selektion der
+ // gesamten Tabelle moeglich!
+ *pMoveTable = TRUE;
+ return TRUE;
+ }
+ }
+
+ if ( !bSelect )
+ EnterStdMode();
+ else
+ SttSelect();
+ const USHORT nFrmType = GetFrmType(0,FALSE);
+ if ( FRMTYPE_FLY_ANY & nFrmType )
+ {
+ if( MoveSection( fnSectionCurr, fnSectionStart ) )
+ return TRUE;
+ else if ( FRMTYPE_FLY_FREE & nFrmType || bDontMoveRegion )
+ return FALSE;
+ }
+ if(( FRMTYPE_HEADER | FRMTYPE_FOOTER | FRMTYPE_FOOTNOTE ) & nFrmType )
+ {
+ if ( MoveSection( fnSectionCurr, fnSectionStart ) )
+ return TRUE;
+ else if ( bKeepArea )
+ return TRUE;
+ }
+ // Bereiche ???
+ return SwCrsrShell::MoveRegion( fnRegionCurrAndSkip, fnRegionStart ) ||
+ SwCrsrShell::SttDoc();
+}
+
+
+
+BOOL SwWrtShell::GoEnd(BOOL bKeepArea, BOOL *pMoveTable)
+{
+ if ( pMoveTable && *pMoveTable )
+ return MoveTable( fnTableCurr, fnTableEnd );
+
+ if ( IsCrsrInTbl() )
+ {
+ if ( MoveSection( fnSectionCurr, fnSectionEnd ) ||
+ MoveTable( fnTableCurr, fnTableEnd ) )
+ return TRUE;
+ }
+ else
+ {
+ const USHORT nFrmType = GetFrmType(0,FALSE);
+ if ( FRMTYPE_FLY_ANY & nFrmType )
+ {
+ if ( MoveSection( fnSectionCurr, fnSectionEnd ) )
+ return TRUE;
+ else if ( FRMTYPE_FLY_FREE & nFrmType )
+ return FALSE;
+ }
+ if(( FRMTYPE_HEADER | FRMTYPE_FOOTER | FRMTYPE_FOOTNOTE ) & nFrmType )
+ {
+ if ( MoveSection( fnSectionCurr, fnSectionEnd) )
+ return TRUE;
+ else if ( bKeepArea )
+ return TRUE;
+ }
+ }
+ // Bereiche ???
+ return SwCrsrShell::MoveRegion( fnRegionCurrAndSkip, fnRegionEnd ) ||
+ SwCrsrShell::EndDoc();
+}
+
+
+
+FASTBOOL SwWrtShell::SttDoc( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect );
+ return GoStart(FALSE, 0, bSelect );
+}
+
+
+
+FASTBOOL SwWrtShell::EndDoc( FASTBOOL bSelect)
+{
+ ShellMoveCrsr aTmp( this, bSelect );
+ return GoEnd();
+}
+
+
+FASTBOOL SwWrtShell::SttNxtPg( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect );
+ return MovePage( fnPageNext, fnPageStart );
+}
+
+
+
+FASTBOOL SwWrtShell::SttPrvPg( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect );
+ return MovePage( fnPagePrev, fnPageStart );
+}
+
+
+
+FASTBOOL SwWrtShell::EndNxtPg( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect );
+ return MovePage( fnPageNext, fnPageEnd );
+}
+
+
+
+FASTBOOL SwWrtShell::EndPrvPg( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect );
+ return MovePage( fnPagePrev, fnPageEnd );
+}
+
+
+
+FASTBOOL SwWrtShell::SttPg( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect );
+ return MovePage( fnPageCurr, fnPageStart );
+}
+
+
+
+FASTBOOL SwWrtShell::EndPg( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect );
+ return MovePage( fnPageCurr, fnPageEnd );
+}
+
+
+
+FASTBOOL SwWrtShell::SttPara( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect );
+ return MovePara( fnParaCurr, fnParaStart );
+}
+
+
+
+FASTBOOL SwWrtShell::EndPara( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect );
+ return MovePara(fnParaCurr,fnParaEnd);
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung: Spaltenweises Springen
+ Parameter: mit oder ohne SSelection
+ Return: Erfolg oder Misserfolg
+------------------------------------------------------------------------*/
+
+
+
+FASTBOOL SwWrtShell::StartOfColumn( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect);
+ return MoveColumn(fnColumnCurr, fnColumnStart);
+}
+
+
+
+FASTBOOL SwWrtShell::EndOfColumn( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect);
+ return MoveColumn(fnColumnCurr, fnColumnEnd);
+}
+
+
+
+FASTBOOL SwWrtShell::StartOfNextColumn( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect);
+ return MoveColumn( fnColumnNext, fnColumnStart);
+}
+
+
+
+FASTBOOL SwWrtShell::EndOfNextColumn( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect);
+ return MoveColumn(fnColumnNext, fnColumnEnd);
+}
+
+
+
+FASTBOOL SwWrtShell::StartOfPrevColumn( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect);
+ return MoveColumn(fnColumnPrev, fnColumnStart);
+}
+
+
+
+FASTBOOL SwWrtShell::EndOfPrevColumn( FASTBOOL bSelect )
+{
+ ShellMoveCrsr aTmp( this, bSelect);
+ return MoveColumn(fnColumnPrev, fnColumnEnd);
+}
+
+
+
+BOOL SwWrtShell::PushCrsr(SwTwips lOffset, BOOL bSelect)
+{
+ BOOL bDiff = FALSE;
+ SwRect aOldRect( GetCharRect() ), aTmpArea( VisArea() );
+
+ //bDestOnStack besagt, ob ich den Cursor nicht an die aktuelle Position
+ //setzen konnte, da in diesem Bereich kein Inhalt vorhanden ist.
+ if( !bDestOnStack )
+ {
+ Point aPt( aOldRect.Center() );
+
+ if( !IsCrsrVisible() )
+ // set CrsrPos to top-/bottom left pos. So the pagescroll is not
+ // be dependent on the current cursor, but on the visarea.
+ aPt.Y() = aTmpArea.Top() + aTmpArea.Height() / 2;
+
+ aPt.Y() += lOffset;
+ aDest = GetCntntPos(aPt,lOffset > 0);
+ aDest.X() = aPt.X();
+ bDestOnStack = TRUE;
+ }
+
+ //falls wir eine Rahmenselektion hatten, muss diese nach dem
+ //fnSetCrsr entfernt werden und damit wir da wieder hinkommen
+ //auf dem Stack gemerkt werden.
+ BOOL bIsFrmSel = FALSE;
+
+ BOOL bIsObjSel = FALSE;
+
+ //Zielposition liegt jetzt innerhalb des sichtbaren Bereiches -->
+ //Cursor an die Zielposition setzen; merken, dass keine Ziel-
+ //position mehr auf dem Stack steht.
+ //Der neue sichtbare Bereich wird zuvor ermittelt.
+ aTmpArea.Pos().Y() += lOffset;
+ if( aTmpArea.IsInside(aDest) )
+ {
+ if( bSelect )
+ SttSelect();
+ else
+ EndSelect();
+
+ bIsFrmSel = IsFrmSelected();
+ bIsObjSel = 0 != IsObjSelected();
+
+ // Rahmenselektion aufheben
+ if( bIsFrmSel || bIsObjSel )
+ {
+ UnSelectFrm();
+ LeaveSelFrmMode();
+ if ( bIsObjSel )
+ {
+ GetView().SetDrawFuncPtr( NULL );
+ GetView().LeaveDrawCreate();
+ }
+
+ CallChgLnk();
+ }
+
+ (this->*fnSetCrsr)( &aDest, TRUE );
+
+ bDiff = aOldRect != GetCharRect();
+
+ if( bIsFrmSel )
+ {
+// CallChgLnk();
+ // bei Frames immer nur die obere Ecke nehmen, damit dieser
+ // wieder selektiert werden kann
+ aOldRect.SSize( 5, 5 );
+ }
+
+ // Zuruecksetzen des Dest. SPoint Flags
+ bDestOnStack = FALSE;
+ }
+
+ // Position auf den Stack; bDiff besagt, ob ein Unterschied zwischen
+ // der alten und der neuen Cursorposition besteht.
+ pCrsrStack = new CrsrStack( bDiff, bIsFrmSel, aOldRect.Center(),
+ lOffset, pCrsrStack );
+ return !bDestOnStack && bDiff;
+}
+
+
+
+BOOL SwWrtShell::PopCrsr(BOOL bUpdate, BOOL bSelect)
+{
+ if( 0 == pCrsrStack)
+ return FALSE;
+
+ const BOOL bValidPos = pCrsrStack->bValidCurPos;
+ if( bUpdate && bValidPos )
+ {
+ // falls ein Vorgaenger auf dem Stack steht, dessen Flag fuer eine
+ // gueltige Position verwenden.
+ SwRect aTmpArea(VisArea());
+ aTmpArea.Pos().Y() -= pCrsrStack->lOffset;
+ if( aTmpArea.IsInside( pCrsrStack->aDocPos ) )
+ {
+ if( bSelect )
+ SttSelect();
+ else
+ EndSelect();
+
+ (this->*fnSetCrsr)(&pCrsrStack->aDocPos, !pCrsrStack->bIsFrmSel);
+ if( pCrsrStack->bIsFrmSel && IsObjSelectable(pCrsrStack->aDocPos))
+ {
+ HideCrsr();
+ SelectObj( pCrsrStack->aDocPos );
+ EnterSelFrmMode( &pCrsrStack->aDocPos );
+ }
+ }
+ // Falls eine Verschiebung zwischen dem sichtbaren Bereich
+ // und der gemerkten Cursorpositionen auftritt, werden
+ // alle gemerkten Positionen weggeschmissen
+ else
+ {
+ _ResetCursorStack();
+ return FALSE;
+ }
+ }
+ CrsrStack *pTmp = pCrsrStack;
+ pCrsrStack = pCrsrStack->pNext;
+ delete pTmp;
+ if( 0 == pCrsrStack )
+ {
+ ePageMove = MV_NO;
+ bDestOnStack = FALSE;
+ }
+ return bValidPos;
+}
+
+/*
+ * Zuruecksetzen aller gepushten Cursorpositionen; dieser werden nicht
+ * zur Anzeige gebracht ( --> Kein Start-/EndAction!!)
+ */
+
+
+
+void SwWrtShell::_ResetCursorStack()
+{
+ CrsrStack *pTmp = pCrsrStack;
+ while(pCrsrStack)
+ {
+ pTmp = pCrsrStack->pNext;
+ delete pCrsrStack;
+ pCrsrStack = pTmp;
+ }
+ ePageMove = MV_NO;
+ bDestOnStack = FALSE;
+}
+/**************
+
+ falls kein Stack existiert --> Selektionen aufheben
+ falls Stack && Richtungswechsel
+ --> Cursor poppen und return
+ sonst
+ --> Cursor pushen
+ Cursor umsetzen
+
+***************/
+
+
+
+BOOL SwWrtShell::PageCrsr(SwTwips lOffset, BOOL bSelect)
+{
+ // nichts tun, wenn ein Offset von 0 angegeben wurde
+ if(!lOffset) return FALSE;
+ // Diente mal dazu, eine Neuformatierung fuer das Layout
+ // zu erzwingen.
+ // Hat so nicht funktioniert, da der Cursor nicht gesetzt
+ // wurde, da dies innerhalb einer Start- / EndActionklammerung
+ // nicht geschieht.
+ // Da am Ende nur ViewShell::EndAction() gerufen wird,
+ // findet auch hier keine Aktualisierung der Anzeige
+ // der Cursorposition statt.
+ // Die CrsrShell- Actionklammerung kann nicht verwendet werden,
+ // da sie immer zu einer Anzeige des Cursors fuehrt, also auch,
+ // wenn nach dem Blaettern in einen Bereich ohne gueltige Position
+ // geblaettert wurde.
+ // ViewShell::StartAction();
+ PageMove eDir = lOffset > 0? MV_PAGE_DOWN: MV_PAGE_UP;
+ // Richtungswechsel und Stack vorhanden
+ if( eDir != ePageMove && ePageMove != MV_NO && PopCrsr( TRUE, bSelect ))
+ return TRUE;
+
+ const BOOL bRet = PushCrsr(lOffset, bSelect);
+ ePageMove = eDir;
+ return bRet;
+}
+
+
+
+BOOL SwWrtShell::GotoPage(USHORT nPage, BOOL bRecord)
+{
+ ShellMoveCrsr aTmp( this, FALSE);
+ if( SwCrsrShell::GotoPage(nPage) && bRecord)
+ {
+ if(IsSelFrmMode())
+ {
+ UnSelectFrm();
+ LeaveSelFrmMode();
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+
+FASTBOOL SwWrtShell::GotoBookmark( USHORT nPos, BOOL bSelect, BOOL bStart )
+{
+ ShellMoveCrsr aTmp( this, bSelect );
+ return SwCrsrShell::GotoBookmark( nPos, bStart );
+}
+
+
+
+FASTBOOL SwWrtShell::SelectTxtAttr( USHORT nWhich, const SwTxtAttr* pAttr )
+{
+ ShellMoveCrsr aTmp( this, TRUE );
+ return SwCrsrShell::SelectTxtAttr( nWhich, FALSE, pAttr );
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.100 2000/09/18 16:06:26 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.99 2000/09/07 15:59:35 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.98 2000/06/27 19:42:49 jp
+ Bug #70447#: select the current TOXMark if the EditDialog is open
+
+ Revision 1.97 1999/10/12 07:24:36 os
+ #69115# API parameter in GotoLeftRight/LRMargin
+
+ Revision 1.96 1999/10/06 12:58:10 jp
+ PushCrsr: if cursor not in visarea, thne use the visarea for new position
+
+ Revision 1.95 1998/11/27 13:59:32 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+
+ Rev 1.94 27 Nov 1998 14:59:32 AMA
+ Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
+
+ Rev 1.93 14 Jun 1998 13:46:24 MA
+ ein paar inlines mittels function pointer
+
+ Rev 1.92 04 May 1998 18:00:20 JP
+ Bug #49993#: IsSelOver darf nicht immer den Cursor verschieben; GotoBookmark mit ReturntWert
+
+ Rev 1.91 12 Feb 1998 20:12:22 JP
+ Left-/RightMargin: zus. Flag fuer BasicCall, im ReadOnlyCall an Anfang/Ende des Randes scrollen
+
+ Rev 1.90 24 Nov 1997 14:35:06 MA
+ includes
+
+ Rev 1.89 03 Nov 1997 14:02:54 MA
+ precomp entfernt
+
+ Rev 1.88 29 Jul 1997 09:24:26 OM
+ Hyperlink Statusmethode
+
+ Rev 1.87 12 Jun 1997 11:20:20 MA
+ chg: CursorTimer vorlaeufig entfernt
+
+ Rev 1.86 29 Apr 1997 16:30:56 AMA
+ New: Scrolling bei abgeschnittenen Absaetzen in Rahmen mit fester Hoehe.
+
+ Rev 1.85 06 Mar 1997 12:27:28 JP
+ Left/Right/Up/Down: bei API-Calls in ReadOnly Docs normale verhalten
+
+ Rev 1.84 18 Feb 1997 13:40:44 MA
+ new: Rahmen im Readonly editierbar
+
+ Rev 1.83 21 Nov 1996 16:48:52 AMA
+ Fix #33452#: Das GCAttr-Flag wandert von der WriterShell in die CrsrShell
+
+ Rev 1.82 30 Oct 1996 10:14:50 JP
+ Bug #32859#: PushCrsr - Rahmenselektin aufheben; PopCrsr: Rahmenselektion wieder erzeugen
+
+ Rev 1.81 01 Oct 1996 16:55:32 OM
+ Hyperlinks editieren
+
+ Rev 1.80 24 Sep 1996 12:33:38 MA
+ chg: Travelling fuer ReadOnly
+
+ Rev 1.79 29 Aug 1996 09:26:02 OS
+ includes
+
+ Rev 1.78 16 Aug 1996 10:26:08 OS
+ richtiges Verhalten bei SelAll
+
+ Rev 1.77 08 Aug 1996 15:51:50 JP
+ neu: SelectTextAttr - vom Attribut umspannten Bereich Selectieren
+
+ Rev 1.76 15 Jul 1996 16:31:54 OM
+ Bei Selektionsaenderung Slot invalidieren
+
+ Rev 1.75 10 May 1996 15:55:22 OS
+ GotoBookmark markiert jetzt immer bug #27690#
+
+ Rev 1.74 08 May 1996 12:58:44 OS
+ neu: GotoBookmark mit Select- und Start Flag
+
+ Rev 1.73 09 Jan 1996 09:46:58 JP
+ GoStart: an Dok-Anfang springen, wenn die 1. Box leer ist!
+
+ Rev 1.72 22 Dec 1995 20:17:38 JP
+ Bug 22611: Rahmenselecktion wird verlassen/wiederhergestellt - dadurch die richtigen Shells!
+
+ Rev 1.71 24 Nov 1995 16:59:08 OM
+ PCH->PRECOMPILED
+
+ Rev 1.70 23 Nov 1995 19:50:54 OS
+ +Fwd/BwdPara
+
+ Rev 1.69 30 Oct 1995 18:43:08 OS
+ Select-Param im EndPg auch auswerten
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/wrtsh/select.cxx b/sw/source/ui/wrtsh/select.cxx
new file mode 100644
index 000000000000..763068748765
--- /dev/null
+++ b/sw/source/ui/wrtsh/select.cxx
@@ -0,0 +1,1010 @@
+/*************************************************************************
+ *
+ * $RCSfile: select.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <limits.h>
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXMACITEM_HXX //autogen
+#include <svtools/macitem.hxx>
+#endif
+#ifndef _WORDSEL_HXX
+#include <svtools/wordsel.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _BASESH_HXX
+#include <basesh.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _INITUI_HXX
+#include <initui.hxx>
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx> // fuer Undo-Ids
+#endif
+#ifndef _SWEVENT_HXX
+#include <swevent.hxx>
+#endif
+
+#ifdef DEBUG
+#ifndef _PAM_HXX
+#include <pam.hxx>
+#endif
+#endif
+
+static long nStartDragX = 0, nStartDragY = 0;
+static BOOL bStartDrag = FALSE;
+
+BOOL SwWrtShell::SelNearestWrd()
+{
+ MV_KONTEXT(this);
+ if( !IsInWrd() && !IsEndWrd() && !IsSttWrd() )
+ PrvWrd();
+ if( IsEndWrd() )
+ Left();
+ return SelWrd();
+}
+
+
+
+BOOL SwWrtShell::SelWrd(const Point *pPt, BOOL )
+{
+ BOOL bRet;
+ {
+ MV_KONTEXT(this);
+ SttSelect();
+ bRet = SwCrsrShell::SelectWord( pPt );
+ }
+ EndSelect();
+ if( bRet )
+ {
+ bSelWrd = TRUE;
+ if(pPt)
+ aStart = *pPt;
+ }
+ return bRet;
+}
+
+/*
+BOOL SwWrtShell::SelSentence(const Point *pPt, BOOL )
+{
+ {
+ MV_KONTEXT(this);
+ ClearMark();
+ if(!_BwdSentence()) {
+ return FALSE;
+ }
+ SttSelect();
+ if(!_FwdSentence()) {
+ EndSelect();
+ return FALSE;
+ }
+ }
+ EndSelect();
+ return TRUE;
+}
+
+*/
+
+
+
+void SwWrtShell::SelLine(const Point *pPt, BOOL )
+{
+ {
+ MV_KONTEXT(this);
+ ClearMark();
+ SwCrsrShell::LeftMargin();
+ SttSelect();
+ SwCrsrShell::RightMargin();
+ }
+ EndSelect();
+ if(pPt)
+ aStart = *pPt;
+ bSelLn = TRUE;
+ bSelWrd = FALSE; // SelWord abschalten, sonst geht kein SelLine weiter
+}
+
+
+
+long SwWrtShell::SelAll()
+{
+ {
+ MV_KONTEXT(this);
+ BOOL bMoveTable = FALSE;
+ if( !HasWholeTabSelection() )
+ {
+ if ( IsSelection() && IsCrsrPtAtEnd() )
+ SwapPam();
+ Push();
+ BOOL bIsFullSel = !MoveSection( fnSectionCurr, fnSectionStart);
+ SwapPam();
+ bIsFullSel &= !MoveSection( fnSectionCurr, fnSectionEnd);
+ Pop(FALSE);
+ GoStart(TRUE, &bMoveTable, FALSE, !bIsFullSel);
+ }
+ else
+ {
+ EnterStdMode();
+ SwCrsrShell::SttDoc();
+ }
+ SttSelect();
+ GoEnd(TRUE, &bMoveTable);
+ }
+ EndSelect();
+ return 1;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Textsuche
+------------------------------------------------------------------------*/
+
+
+ULONG SwWrtShell::SearchPattern( const SearchParam& rParam,
+ SwDocPositions eStt, SwDocPositions eEnd,
+ FindRanges eFlags, int bReplace )
+{
+ // keine Erweiterung bestehender Selektionen
+ if(!(eFlags & FND_IN_SEL))
+ ClearMark();
+ return Find( rParam, eStt, eEnd, eFlags, bReplace );
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Suche nach Vorlagen
+------------------------------------------------------------------------*/
+
+
+
+ULONG SwWrtShell::SearchTempl( const String &rTempl,
+ SwDocPositions eStt, SwDocPositions eEnd,
+ FindRanges eFlags, const String* pReplTempl )
+{
+ // keine Erweiterung bestehender Selektionen
+ if(!(eFlags & FND_IN_SEL))
+ ClearMark();
+ SwTxtFmtColl *pColl = GetParaStyle(rTempl, SwWrtShell::GETSTYLE_CREATESOME);
+ SwTxtFmtColl *pReplaceColl = 0;
+ if( pReplTempl )
+ pReplaceColl = GetParaStyle(*pReplTempl, SwWrtShell::GETSTYLE_CREATESOME );
+
+ return Find(pColl? *pColl: GetDfltTxtFmtColl(),
+ eStt,eEnd,eFlags, pReplaceColl);
+}
+
+// Suche nach Attributen ----------------------------------------------------
+
+
+
+ULONG SwWrtShell::SearchAttr( const SfxItemSet& rFindSet, BOOL bNoColls,
+ SwDocPositions eStart, SwDocPositions eEnde,
+ FindRanges eFlags, const SearchParam* pParam,
+ const SfxItemSet* pReplaceSet )
+{
+ // Keine Erweiterung bestehender Selektionen
+ if (!(eFlags & FND_IN_SEL))
+ ClearMark();
+
+ // Suchen
+ return Find( rFindSet, bNoColls, eStart, eEnde, eFlags, pParam, pReplaceSet);
+}
+
+// ---------- Selektionsmodi ----------
+
+
+
+void SwWrtShell::PushMode()
+{
+ pModeStack = new ModeStack( pModeStack, bIns, bExtMode, bAddMode );
+}
+
+
+
+void SwWrtShell::PopMode()
+{
+ if ( 0 == pModeStack )
+ return;
+
+ if ( bExtMode && !pModeStack->bExt )
+ LeaveExtMode();
+ if ( bAddMode && !pModeStack->bAdd )
+ LeaveAddMode();
+ bIns = pModeStack->bIns;
+
+ ModeStack *pTmp = pModeStack->pNext;
+ delete pModeStack;
+ pModeStack = pTmp;
+}
+
+/*
+ * Zwei Methoden fuer das Cursorsetzen; die erste mappt auf die
+ * gleichnamige Methoden an der CursorShell, die zweite hebt
+ * zuerst alle Selektionen auf.
+ */
+
+
+
+long SwWrtShell::SetCrsr(const Point *pPt, BOOL bTextOnly)
+{
+ /*
+ * eine gfs. bestehende Selektion an der Position des
+ * Mausklicks aufheben
+ */
+ if(!IsInSelect() && ChgCurrPam(*pPt)) {
+ ClearMark();
+ }
+ return SwCrsrShell::SetCrsr(*pPt, bTextOnly);
+}
+
+
+long SwWrtShell::SetCrsrKillSel(const Point *pPt, BOOL bTextOnly )
+{
+ ACT_KONTEXT(this);
+ ResetSelect(pPt,FALSE);
+ return SwCrsrShell::SetCrsr(*pPt, bTextOnly);
+}
+
+
+
+void SwWrtShell::UnSelectFrm()
+{
+ // Rahmenselektion aufheben mit garantiert ungueltiger Position
+ Point aPt(LONG_MIN, LONG_MIN);
+ SelectObj(aPt);
+}
+
+/*
+ * Aufheben aller Selektionen
+ */
+
+
+
+long SwWrtShell::ResetSelect(const Point *,BOOL)
+{
+ if(IsSelFrmMode())
+ {
+ UnSelectFrm();
+ LeaveSelFrmMode();
+ }
+ else
+ {
+ /* ACT_KONTEXT() macht eine Action auf -
+ um im Basicablauf keine Probleme mit der
+ Shellumschaltung zu bekommen, darf
+ GetChgLnk().Call() erst nach
+ EndAction() gerufen werden.
+ */
+ {
+ ACT_KONTEXT(this);
+ bSelWrd = bSelLn = FALSE;
+ KillPams();
+ ClearMark();
+ fnKillSel = &SwWrtShell::Ignore;
+ fnSetCrsr = &SwWrtShell::SetCrsr;
+ }
+ /*
+ * nach dem Aufheben aller Selektionen koennte ein Update der
+ * Attr-Controls notwendig sein.
+ */
+ GetChgLnk().Call(this);
+ }
+ return 1;
+}
+
+
+
+/*
+ * tue nichts
+ */
+long SwWrtShell::Ignore(const Point *, BOOL ) {
+ return 1;
+}
+
+/*
+ * Start eines Selektionsvorganges.
+ */
+
+
+
+void SwWrtShell::SttSelect()
+{
+ if(bInSelect)
+ return;
+ if(!HasMark())
+ SetMark();
+ fnKillSel = &SwWrtShell::Ignore;
+ fnSetCrsr = &SwWrtShell::SetCrsr;
+ bInSelect = TRUE;
+}
+/*
+ * Ende eines Selektionsvorganges.
+ */
+
+
+
+void SwWrtShell::EndSelect()
+{
+ if(!bInSelect || bExtMode)
+ return;
+ bInSelect = FALSE;
+ (this->*fnLeaveSelect)(0,FALSE);
+ if(!bAddMode) {
+ fnSetCrsr = &SwWrtShell::SetCrsrKillSel;
+ fnKillSel = &SwWrtShell::ResetSelect;
+ }
+}
+/* Methode, um eine bestehende wortweise oder zeilenweise Selektion
+ * zu erweitern.
+ */
+
+inline BOOL operator<(const Point &rP1,const Point &rP2)
+{
+ return rP1.Y() < rP2.Y() || (rP1.Y() == rP2.Y() && rP1.X() < rP2.X());
+}
+
+
+
+long SwWrtShell::ExtSelWrd(const Point *pPt, BOOL )
+{
+ MV_KONTEXT(this);
+ if( IsTableMode() )
+ return 1;
+
+ // Bug 66823: actual crsr has in additional mode no selection?
+ // Then destroy the actual an go to prev, this will be expand
+ if( !HasMark() && GoPrevCrsr() )
+ {
+ BOOL bHasMark = HasMark(); // thats wrong!
+ GoNextCrsr();
+ if( bHasMark )
+ {
+ DestroyCrsr();
+ GoPrevCrsr();
+ }
+ }
+
+ // check the direction of the selection with the new point
+ BOOL bRet = FALSE, bMoveCrsr = TRUE, bToTop;
+ SwCrsrShell::SelectWord( &aStart ); // select the startword
+ SwCrsrShell::Push(); // save the cursor
+ SwCrsrShell::SetCrsr( *pPt ); // and check the direction
+
+ switch( SwCrsrShell::CompareCursor( StackMkCurrPt ))
+ {
+ case -1: bToTop = FALSE; break;
+ case 1: bToTop = TRUE; break;
+ default: bMoveCrsr = FALSE; break;
+ }
+
+ SwCrsrShell::Pop( FALSE ); // retore the saved cursor
+
+ if( bMoveCrsr )
+ {
+ // select to Top but cursor select to Bottom? or
+ // select to Bottom but cursor select to Top? --> swap the cursor
+ if( bToTop )
+ SwapPam();
+
+ SwCrsrShell::Push(); // save cur cursor
+ if( SwCrsrShell::SelectWord( pPt )) // select the current word
+ {
+ if( bToTop )
+ SwapPam();
+ Combine();
+ bRet = TRUE;
+ }
+ else
+ {
+ SwCrsrShell::Pop( FALSE );
+ if( bToTop )
+ SwapPam();
+ }
+ }
+ else
+ bRet = TRUE;
+ return bRet;
+}
+
+
+long SwWrtShell::ExtSelLn(const Point *pPt, BOOL )
+{
+ MV_KONTEXT(this);
+ SwCrsrShell::SetCrsr(*pPt);
+ if( IsTableMode() )
+ return 1;
+
+ // Bug 66823: actual crsr has in additional mode no selection?
+ // Then destroy the actual an go to prev, this will be expand
+ if( !HasMark() && GoPrevCrsr() )
+ {
+ BOOL bHasMark = HasMark(); // thats wrong!
+ GoNextCrsr();
+ if( bHasMark )
+ {
+ DestroyCrsr();
+ GoPrevCrsr();
+ }
+ }
+
+ // ggfs. den Mark der Selektion anpassen
+ BOOL bToTop = !IsCrsrPtAtEnd();
+ SwapPam();
+
+ // der "Mark" muss am Zeilenende/-anfang stehen
+ if( bToTop ? !IsAtRightMargin() : !IsAtLeftMargin() )
+ {
+ if( bToTop )
+ {
+ if( !IsEndPara() )
+ SwCrsrShell::Right();
+ SwCrsrShell::RightMargin();
+ }
+ else
+ SwCrsrShell::LeftMargin();
+ }
+ SwapPam();
+
+ return bToTop ? SwCrsrShell::LeftMargin() : SwCrsrShell::RightMargin();
+}
+
+
+/*
+ * zurueck in den Standard Mode: kein Mode, keine Selektionen.
+ */
+
+void SwWrtShell::EnterStdMode()
+{
+ if(bAddMode)
+ LeaveAddMode();
+ bExtMode = FALSE;
+ bInSelect = FALSE;
+ ResetSelect(0,FALSE);
+}
+
+/*
+ * Extended Mode
+ */
+
+
+
+void SwWrtShell::EnterExtMode()
+{
+ bExtMode = TRUE;
+ bAddMode = FALSE;
+ SttSelect();
+}
+
+
+
+void SwWrtShell::LeaveExtMode()
+{
+ bExtMode = FALSE;
+ EndSelect();
+}
+/*
+ * Ende einer Selektion; falls die Selektion leer ist,
+ * ClearMark().
+ */
+
+
+
+long SwWrtShell::SttLeaveSelect(const Point *, BOOL )
+{
+ if(SwCrsrShell::HasSelection() && !IsSelTblCells() && bClearMark) {
+ return 0;
+ }
+// if( IsSelTblCells() ) aSelTblLink.Call(this);
+ ClearMark();
+ return 1;
+}
+/*
+ * Verlassen des Selektionsmodus in Additional Mode
+ */
+
+
+
+long SwWrtShell::AddLeaveSelect(const Point *, BOOL )
+{
+ if(IsTableMode()) LeaveAddMode();
+ else if(SwCrsrShell::HasSelection())
+ CreateCrsr();
+ return 1;
+}
+/*
+ * Additional Mode
+ */
+
+
+
+void SwWrtShell::EnterAddMode()
+{
+ if(IsTableMode()) return;
+ fnLeaveSelect = &SwWrtShell::AddLeaveSelect;
+ fnKillSel = &SwWrtShell::Ignore;
+ fnSetCrsr = &SwWrtShell::SetCrsr;
+ bAddMode = TRUE;
+ bExtMode = FALSE;
+ if(SwCrsrShell::HasSelection())
+ CreateCrsr();
+}
+
+
+
+void SwWrtShell::LeaveAddMode()
+{
+ fnLeaveSelect = &SwWrtShell::SttLeaveSelect;
+ fnKillSel = &SwWrtShell::ResetSelect;
+ fnSetCrsr = &SwWrtShell::SetCrsrKillSel;
+ bAddMode = FALSE;
+}
+
+// Einfuegemodus
+
+
+
+void SwWrtShell::SetInsMode( BOOL bOn )
+{
+ bIns = bOn;
+ const SfxBoolItem aTmp( SID_ATTR_INSERT, bIns );
+ GetView().GetViewFrame()->GetBindings().SetState( aTmp );
+}
+
+/*
+ * Rahmen bearbeiten
+ */
+
+
+long SwWrtShell::BeginFrmDrag(const Point *pPt, BOOL)
+{
+ fnDrag = &SwFEShell::Drag;
+ if(bStartDrag)
+ {
+ Point aTmp( nStartDragX, nStartDragY );
+ SwFEShell::BeginDrag( &aTmp, FALSE );
+ }
+ else
+ SwFEShell::BeginDrag( pPt, FALSE );
+ return 1;
+}
+
+
+
+void SwWrtShell::EnterSelFrmMode(const Point *pPos)
+{
+ if(pPos)
+ {
+ nStartDragX = pPos->X();
+ nStartDragY = pPos->Y();
+ bStartDrag = TRUE;
+ }
+ bNoEdit = bLayoutMode = TRUE;
+ HideCrsr();
+
+ // gleicher Aufruf von BeginDrag an der SwFEShell
+ fnDrag = &SwWrtShell::BeginFrmDrag;
+ fnEndDrag = &SwWrtShell::UpdateLayoutFrm;
+ SwBaseShell::SetFrmMode( FLY_DRAG_START, this );
+}
+
+
+
+void SwWrtShell::LeaveSelFrmMode()
+{
+ fnDrag = &SwWrtShell::BeginDrag;
+ fnEndDrag = &SwWrtShell::EndDrag;
+ bLayoutMode = FALSE;
+ bStartDrag = FALSE;
+ Edit();
+ SwBaseShell::SetFrmMode( FLY_DRAG_END, this );
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Rahmengebundenes Macro ausfuehren
+------------------------------------------------------------------------*/
+
+
+
+IMPL_LINK( SwWrtShell, ExecFlyMac, void *, pFlyFmt )
+{
+ const SwFrmFmt *pFmt = pFlyFmt ? (SwFrmFmt*)pFlyFmt : GetFlyFrmFmt();
+ ASSERT(pFmt, kein FrameFormat.);
+ const SvxMacroItem &rFmtMac = pFmt->GetMacro();
+
+ if(rFmtMac.HasMacro(SW_EVENT_OBJECT_SELECT))
+ {
+ const SvxMacro &rMac = rFmtMac.GetMacro(SW_EVENT_OBJECT_SELECT);
+ if( IsFrmSelected() )
+ bLayoutMode = TRUE;
+ CallChgLnk();
+ ExecMacro( rMac );
+ }
+ return 0;
+}
+
+
+
+long SwWrtShell::UpdateLayoutFrm(const Point *pPt, BOOL )
+{
+ // voerst Dummy
+ SwFEShell::EndDrag( pPt, FALSE );
+ fnDrag = &SwWrtShell::BeginFrmDrag;
+ return 1;
+}
+
+/*
+ * Handler fuer das Togglen der Modi. Liefern alten Mode zurueck.
+ */
+
+
+
+long SwWrtShell::ToggleAddMode()
+{
+ bAddMode ? LeaveAddMode(): EnterAddMode();
+ return !bAddMode;
+}
+
+
+
+long SwWrtShell::ToggleExtMode()
+{
+ bExtMode ? LeaveExtMode() : EnterExtMode();
+ return !bExtMode;
+}
+/*
+ * Draggen im Standard Modus (Selektieren von Inhalt)
+ */
+
+
+
+long SwWrtShell::BeginDrag(const Point *pPt, BOOL )
+{
+ if(bSelWrd)
+ {
+ bInSelect = TRUE;
+ if( !IsCrsrPtAtEnd() )
+ SwapPam();
+
+ fnDrag = &SwWrtShell::ExtSelWrd;
+ fnSetCrsr = &SwWrtShell::Ignore;
+ }
+ else if(bSelLn)
+ {
+ bInSelect = TRUE;
+ fnDrag = &SwWrtShell::ExtSelLn;
+ fnSetCrsr = &SwWrtShell::Ignore;
+ }
+ else
+ {
+ fnDrag = &SwWrtShell::Drag;
+ SttSelect();
+ }
+
+ return 1;
+}
+
+
+
+long SwWrtShell::Drag(const Point *, BOOL )
+{
+ if( IsSelTblCells() )
+ aSelTblLink.Call(this);
+
+ return 1;
+}
+
+
+
+long SwWrtShell::EndDrag(const Point *pPt, BOOL )
+{
+ fnDrag = &SwWrtShell::BeginDrag;
+ if( IsExtSel() )
+ LeaveExtSel();
+
+ if( IsSelTblCells() )
+ aSelTblLink.Call(this);
+ EndSelect();
+ return 1;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Selektion einer Tabellenzeile / Spalte
+------------------------------------------------------------------------*/
+
+
+
+FASTBOOL SwWrtShell::SelectTableRow()
+{
+ if ( SelTblRow() )
+ {
+ fnSetCrsr = &SwWrtShell::SetCrsrKillSel;
+ fnKillSel = &SwWrtShell::ResetSelect;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+
+FASTBOOL SwWrtShell::SelectTableCol()
+{
+ if ( SelTblCol() )
+ {
+ fnSetCrsr = &SwWrtShell::SetCrsrKillSel;
+ fnKillSel = &SwWrtShell::ResetSelect;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Prueft, ob eine Wortselektion vorliegt.
+ Gemaess den Regeln fuer intelligentes Cut / Paste
+ werden umgebende Spaces rausgeschnitten.
+ Return: Liefert Art der Wortselektion zurueck.
+------------------------------------------------------------------------*/
+
+
+
+int SwWrtShell::IntelligentCut(int nSelection, BOOL bCut)
+{
+ // kein intelligentes Drag and Drop bei Mehrfachselektion
+ // es existieren mehrere Cursor, da ein zweiter bereits
+ // an die Zielposition gesetzt wurde
+ if( IsAddMode() || !(nSelection & SEL_TXT) )
+ return FALSE;
+
+ const sal_Unicode cFirst = GetChar(FALSE);
+ const sal_Unicode cLast = GetChar(TRUE, -1);
+ // wenn das erste und das letzte Zeichen kein Wortzeichen ist,
+ // ist kein Wort selektiert.
+ if( !WordSelection::IsNormalChar( cFirst ) ||
+ !WordSelection::IsNormalChar( cLast ) )
+ return NO_WORD;
+ const sal_Unicode cPrev = GetChar(FALSE, -1);
+ const sal_Unicode cNext = GetChar(TRUE);
+
+ int cWord = NO_WORD;
+ // ist ein Wort selektiert?
+ if(!cWord && cPrev && cNext &&
+ CH_TXTATR_BREAKWORD != cPrev && CH_TXTATR_INWORD != cPrev &&
+ CH_TXTATR_BREAKWORD != cNext && CH_TXTATR_INWORD != cNext &&
+ !WordSelection::IsNormalChar(cPrev) && !WordSelection::IsNormalChar(cNext))
+ cWord = WORD_NO_SPACE;
+ if(cWord == WORD_NO_SPACE && cPrev == ' ')
+ {
+ cWord = WORD_SPACE_BEFORE;
+ // Space davor loeschen
+ if(bCut)
+ {
+ Push();
+ if(IsCrsrPtAtEnd())
+ SwapPam();
+ ClearMark();
+ SetMark();
+ SwCrsrShell::Left();
+ SwFEShell::Delete();
+ Pop( FALSE );
+ }
+ }
+ else if(cWord == WORD_NO_SPACE && cNext == ' ')
+ {
+ cWord = WORD_SPACE_AFTER;
+ // Space dahinter loeschen
+ if(bCut) {
+ Push();
+ if(!IsCrsrPtAtEnd()) SwapPam();
+ ClearMark();
+ SetMark();
+ SwCrsrShell::Right();
+ SwFEShell::Delete();
+ Pop( FALSE );
+ }
+ }
+ return cWord;
+}
+/* fuer den Erhalt der Selektion wird nach SetMark() der Cursor
+ * nach links bewegt, damit er durch das Einfuegen von Text nicht
+ * verschoben wird. Da auf der CORE-Seite am aktuellen Cursor
+ * eine bestehende Selektion aufgehoben wird, wird der Cursor auf
+ * den Stack gepushed. Nach dem Verschieben werden sie wieder
+ * zusammengefasst. */
+
+
+
+#if 0
+long SwWrtShell::MoveText(const Point *pPt,BOOL)
+{
+ // ueber einer bestehenden Selektion kein D&D
+ if(ChgCurrPam(*pPt)) {
+ LeaveDDMode();
+ bTStart = bDD = FALSE;
+ return 0;
+ }
+ // Create-Crsr muss nicht immer sein !!
+ // im Add-Mode benutze den letzen, sonst erzeuge einen neuen
+ if(!IsAddMode()) SwCrsrShell::CreateCrsr();
+ SwCrsrShell::SetCrsr(*pPt);
+ // kein D&D auf andere Inhaltsformen als Text
+ const int nSelection = GetSelectionType();
+ if(SEL_TXT != GetCntType()) {
+ if(!IsAddMode()) {
+ SwCrsrShell::DestroyCrsr();
+ GoPrevCrsr();
+ }
+ LeaveDDMode();
+ bTStart = bDD = FALSE;
+ return 0;
+ }
+ // SSelection vor Start/ EndAction erfragen
+ StartUndo(UNDO_INSERT);
+ StartAllAction();
+ GoPrevCrsr();
+ const int cWord = IntelligentCut(nSelection);
+ GoNextCrsr();
+ const BOOL bInWrd = IsInWrd() || IsEndWrd();
+ const BOOL bSttWrd = IsSttWrd();
+ SwEditShell::Move();
+
+ // nach dem Move sind alle Crsr geloescht und eine SSelection
+ // umschliesst den verschobenen Bereich
+
+ if(bInWrd && ( cWord == WORD_SPACE_AFTER || cWord == WORD_SPACE_BEFORE)) {
+ if(!bSttWrd) SwapPam();
+ SwEditShell::Insert(' ');
+ if(!bSttWrd) SwapPam();
+ }
+ LeaveDDMode();
+ bTStart = bDD = FALSE;
+ EndAllAction();
+ EndUndo(UNDO_INSERT);
+ return 1;
+}
+#endif
+
+/*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/ui/wrtsh/select.cxx,v 1.1.1.1 2000-09-18 17:14:53 hr Exp $
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.173 2000/09/18 16:06:26 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.172 2000/09/07 15:59:36 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.171 2000/07/20 13:17:22 jp
+ change old txtatr-character to the two new characters
+
+ Revision 1.170 2000/07/03 17:45:46 jp
+ ExtSelWrd - use SelWord
+
+ Revision 1.169 2000/06/30 16:31:43 jp
+ new: SelectWord - use the new UNO Api to select one Word
+
+ Revision 1.168 2000/05/19 12:58:31 jp
+ use WordSelection class for check chars
+
+ Revision 1.167 2000/05/19 11:00:20 jp
+ Changes for Unicode
+
+ Revision 1.166 2000/03/14 13:37:25 jp
+ remove unused code
+
+ Revision 1.165 1999/06/11 08:28:04 JP
+ Bug #66823#: ExtSelWord/ExtSelLn - destroy current not expanded cursor
+
+
+ Rev 1.164 11 Jun 1999 10:28:04 JP
+ Bug #66823#: ExtSelWord/ExtSelLn - destroy current not expanded cursor
+
+ Rev 1.163 27 Apr 1999 15:29:18 JP
+ ExtSelWrd/-Ln: im TableMode nur den Cursor setzen
+
+ Rev 1.162 23 Mar 1999 14:13:22 JP
+ Bug #63817#: ExtSelWord/Line - Anfangsselektion beibehalten
+
+ Rev 1.161 25 Nov 1998 16:25:56 OS
+ #59467# EnterStdMode: Funktionspointer zuruecksetzen
+
+ Rev 1.160 24 Feb 1998 15:28:14 JP
+ Search..: SWPOSDOC entfernt, auf enums umgestellt
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/wrtsh/wrtsh.hrc b/sw/source/ui/wrtsh/wrtsh.hrc
new file mode 100644
index 000000000000..7c841b48ed8c
--- /dev/null
+++ b/sw/source/ui/wrtsh/wrtsh.hrc
@@ -0,0 +1,206 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtsh.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _WRTSH_HRC
+#define _WRTSH_HRC
+
+#include "rcid.hrc"
+
+#define DLG_GOTO (RC_WRTSH_BEGIN + 1)
+
+
+#define STR_DDEERROR_APP1 (RC_WRTSH_BEGIN + 2)
+#define STR_DDEERROR_APP2 (RC_WRTSH_BEGIN + 3)
+#define STR_DDEERROR_DATA1 (RC_WRTSH_BEGIN + 4)
+#define STR_DDEERROR_DATA2 (RC_WRTSH_BEGIN + 5)
+#define STR_DDEERROR_LINK1 (RC_WRTSH_BEGIN + 6)
+#define STR_DDEERROR_LINK2 (RC_WRTSH_BEGIN + 7)
+
+
+// Undo
+#define UNDO_BASE (RC_WRTSH_BEGIN + 8)
+#define STR_CANT_UNDO (UNDO_BASE + 0)
+
+// im enun folgen hier START & END fuer die Klammerungen,
+
+// Id's fuer die Undo/Redo/Repeat faehigen "Funktionen"
+#define STR_DELETE_UNDO (UNDO_BASE + 3)
+#define STR_INSERT_UNDO (UNDO_BASE + 4)
+#define STR_OVR_UNDO (UNDO_BASE + 5)
+#define STR_SPLITNODE_UNDO (UNDO_BASE + 6)
+#define STR_INSATTR_UNDO (UNDO_BASE + 7)
+#define STR_SETFMTCOLL_UNDO (UNDO_BASE + 8)
+#define STR_RESET_ATTR_UNDO (UNDO_BASE + 9)
+#define STR_APPLY_ATTR_UNDO (UNDO_BASE +10)
+#define STR_INSERT_DOC_UNDO (UNDO_BASE +11)
+#define STR_COPY_UNDO (UNDO_BASE +12)
+#define STR_INSTABLE_UNDO (UNDO_BASE +13)
+#define STR_TABLETOTEXT_UNDO (UNDO_BASE +14)
+#define STR_TEXTTOTABLE_UNDO (UNDO_BASE +15)
+#define STR_SORT_TXT (UNDO_BASE +16)
+#define STR_INSERTFLY (UNDO_BASE +17)
+#define STR_TABLEHEADLINE (UNDO_BASE +18)
+#define STR_INSERTSECTION (UNDO_BASE +19)
+#define STR_OUTLINE_LR (UNDO_BASE +20)
+#define STR_OUTLINE_UD (UNDO_BASE +21)
+#define STR_INSNUM (UNDO_BASE +22)
+#define STR_NUMUPDOWN (UNDO_BASE +23)
+#define STR_MOVENUM (UNDO_BASE +24)
+#define STR_INSERTDRAW (UNDO_BASE +25)
+#define STR_NUMORNONUM (UNDO_BASE +26)
+#define STR_INC_LEFTMARGIN (UNDO_BASE +27)
+#define STR_DEC_LEFTMARGIN (UNDO_BASE +28)
+#define STR_INSERTLABEL (UNDO_BASE +29)
+#define STR_SETNUMRULESTART (UNDO_BASE +30)
+#define STR_CHANGEFTN (UNDO_BASE +31)
+#define STR_REDLINE (UNDO_BASE +32)
+#define STR_ACCEPT_REDLINE (UNDO_BASE +33)
+#define STR_REJECT_REDLINE (UNDO_BASE +34)
+#define STR_SPLIT_TABLE (UNDO_BASE +35)
+#define STR_DONTEXPAND (UNDO_BASE +36)
+#define STR_AUTOCORRECT (UNDO_BASE +37)
+#define STR_MERGE_TABLE (UNDO_BASE +38)
+
+#define STR_REPEAT_DUMMY_3 (UNDO_BASE +39)
+#define STR_REPEAT_DUMMY_4 (UNDO_BASE +40)
+#define STR_REPEAT_DUMMY_5 (UNDO_BASE +41)
+#define STR_REPEAT_DUMMY_6 (UNDO_BASE +42)
+#define STR_REPEAT_DUMMY_7 (UNDO_BASE +43)
+#define STR_REPEAT_DUMMY_8 (UNDO_BASE +44)
+#define STR_REPEAT_DUMMY_9 (UNDO_BASE +45)
+// !!!!!! umsetzen !!!!!!!!!!! umsetzen !!!!!!!!!!! umsetzen !!!!
+#define CORE_REPEAT_END STR_REPEAT_DUMMY_9// !!!! umsetzen !!!
+
+
+// Id's nur fuer die Undo/Redo faehigen "Funktionen"
+#define STR_MOVE_UNDO (CORE_REPEAT_END + 1)
+#define STR_INSERT_GLOSSARY (CORE_REPEAT_END + 2)
+#define STR_DELBOOKMARK (CORE_REPEAT_END + 3)
+#define STR_INSBOOKMARK (CORE_REPEAT_END + 4)
+#define STR_SORT_TBL (CORE_REPEAT_END + 5)
+#define STR_DELETEFLY (CORE_REPEAT_END + 6)
+#define STR_AUTOFORMAT (CORE_REPEAT_END + 7)
+#define STR_REPLACE (CORE_REPEAT_END + 8)
+#define STR_DELETESECTION (CORE_REPEAT_END + 9)
+#define STR_CHANGESECTION (CORE_REPEAT_END +10)
+#define STR_CHANGESECTPASSWD (CORE_REPEAT_END +11)
+#define STR_CHANGEDEFATTR (CORE_REPEAT_END +12)
+#define STR_DELNUM (CORE_REPEAT_END +13)
+#define STR_DRAWUNDO (CORE_REPEAT_END +14)
+#define STR_DRAWGROUP (CORE_REPEAT_END +15)
+#define STR_DRAWUNGROUP (CORE_REPEAT_END +16)
+#define STR_DRAWDELETE (CORE_REPEAT_END +17)
+#define STR_REREAD (CORE_REPEAT_END +18)
+#define STR_DELGRF (CORE_REPEAT_END +19)
+#define STR_DELOLE (CORE_REPEAT_END +20)
+#define STR_TABLE_ATTR (CORE_REPEAT_END +21)
+#define STR_TABLE_AUTOFMT (CORE_REPEAT_END +22)
+#define STR_TABLE_INSCOL (CORE_REPEAT_END +23)
+#define STR_TABLE_INSROW (CORE_REPEAT_END +24)
+#define STR_TABLE_DELBOX (CORE_REPEAT_END +25)
+#define STR_TABLE_SPLIT (CORE_REPEAT_END +26)
+#define STR_TABLE_MERGE (CORE_REPEAT_END +27)
+#define STR_TABLE_NUMFORMAT (CORE_REPEAT_END +28)
+#define STR_INSERT_TOX (CORE_REPEAT_END +29)
+#define STR_CLEAR_TOX_RANGE (CORE_REPEAT_END +30)
+#define STR_TABLE_TBLCPYTBL (CORE_REPEAT_END +31)
+#define STR_TABLE_CPYTBL (CORE_REPEAT_END +32)
+#define STR_INS_FROM_SHADOWCRSR (CORE_REPEAT_END +33)
+#define STR_UNDO_CHAIN (CORE_REPEAT_END +34)
+#define STR_UNDO_UNCHAIN (CORE_REPEAT_END +35)
+#define STR_UNDO_FTNINFO (CORE_REPEAT_END +36)
+#define STR_UNDO_ENDNOTEINFO (CORE_REPEAT_END +37)
+#define STR_UNDO_COMPAREDOC (CORE_REPEAT_END +38)
+#define STR_UNDO_SETFLYFRMFMT (CORE_REPEAT_END +39)
+
+#define STR_UNDO_DUMMY_1 (CORE_REPEAT_END +40)
+#define STR_UNDO_DUMMY_2 (CORE_REPEAT_END +41)
+#define STR_UNDO_DUMMY_3 (CORE_REPEAT_END +42)
+#define STR_UNDO_DUMMY_4 (CORE_REPEAT_END +43)
+#define STR_UNDO_DUMMY_5 (CORE_REPEAT_END +44)
+#define STR_UNDO_DUMMY_6 (CORE_REPEAT_END +45)
+#define STR_UNDO_DUMMY_7 (CORE_REPEAT_END +46)
+#define STR_UNDO_DUMMY_8 (CORE_REPEAT_END +47)
+#define STR_UNDO_DUMMY_9 (CORE_REPEAT_END +48)
+// !!!!!! umsetzen !!!!!!!!!!! umsetzen !!!!!!!!!!! umsetzen !!!!
+#define CORE_UNDO_END STR_UNDO_DUMMY_9// !!!! umsetzen !!!
+
+// UI-Undo Klammerungen
+#define UI_UNDO_BEGIN (CORE_UNDO_END + 1)
+#define STR_REPLACE_UNDO (UI_UNDO_BEGIN)
+#define STR_INSERT_PAGE_BREAK_UNDO (UI_UNDO_BEGIN + 1)
+#define STR_INSERT_COLUMN_BREAK_UNDO (UI_UNDO_BEGIN + 2)
+#define STR_PLAY_MACRO_UNDO (UI_UNDO_BEGIN + 3)
+#define STR_INSERT_ENV_UNDO (UI_UNDO_BEGIN + 4)
+#define STR_DRAG_AND_COPY (UI_UNDO_BEGIN + 5)
+#define STR_DRAG_AND_MOVE (UI_UNDO_BEGIN + 6)
+#define STR_INSERT_RULER (UI_UNDO_BEGIN + 7)
+#define STR_INSERT_CHART (UI_UNDO_BEGIN + 8)
+#define STR_INSERT_FOOTNOTE (UI_UNDO_BEGIN + 9)
+#define STR_INSERT_URLBTN (UI_UNDO_BEGIN + 10)
+#define STR_INSERT_URLTXT (UI_UNDO_BEGIN + 11)
+#define STR_DELETE_INVISIBLECNTNT (UI_UNDO_BEGIN + 12)
+#define UNDO_ACT_END STR_DELETE_INVISIBLECNTNT
+
+#if WRTSH_ACT_END > RC_WRTSH_END
+#error Resource-Id Ueberlauf
+#endif
+
+#endif
diff --git a/sw/source/ui/wrtsh/wrtsh.src b/sw/source/ui/wrtsh/wrtsh.src
new file mode 100644
index 000000000000..b86cb66fd42e
--- /dev/null
+++ b/sw/source/ui/wrtsh/wrtsh.src
@@ -0,0 +1,2601 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtsh.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 "wrtsh.hrc"
+
+ // Undo
+String STR_CANT_UNDO
+{
+ TEXT = "unmöglich" ;
+ TEXT [ English ] = "not possible" ;
+ TEXT [ norwegian ] = "ikke mulig" ;
+ TEXT [ italian ] = "Impossibile" ;
+ TEXT [ portuguese_brazilian ] = "não possível" ;
+ TEXT [ portuguese ] = "Impossível" ;
+ TEXT [ finnish ] = "ei mahdollinen" ;
+ TEXT [ danish ] = "ikke mulig" ;
+ TEXT [ french ] = "impossible" ;
+ TEXT [ swedish ] = "inte möjlig" ;
+ TEXT [ dutch ] = "Onmogelijk" ;
+ TEXT [ spanish ] = "imposible" ;
+ TEXT [ english_us ] = "not possible" ;
+ TEXT[ chinese_simplified ] = "²»¿ÉÄÜ";
+ TEXT[ russian ] = "íåâîçìîæíî";
+ TEXT[ polish ] = "niemo¿liwy";
+ TEXT[ japanese ] = "•s‰Â”\\";
+ TEXT[ chinese_traditional ] = "¤£¥i¯à";
+ TEXT[ arabic ] = "ÛíÑ ããßä";
+ TEXT[ dutch ] = "Onmogelijk";
+ TEXT[ chinese_simplified ] = "²»¿ÉÄÜ";
+ TEXT[ greek ] = "áäýíáôïí";
+ TEXT[ korean ] = "ºÒ°¡´ÉÇÕ´Ï´Ù.";
+ TEXT[ turkish ] = "olanaksýz";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DELETE_UNDO
+{
+ 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 ] = "Supprimer" ;
+ 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[ dutch ] = "Wissen";
+ TEXT[ chinese_simplified ] = "ɾ³ý";
+ TEXT[ greek ] = "ÄéáãñáöÞ";
+ TEXT[ korean ] = "»èÁ¦";
+ TEXT[ turkish ] = "Sil";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_INSERT_UNDO
+{
+ 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 ] = "Insérer" ;
+ 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[ dutch ] = "Invoegen";
+ TEXT[ chinese_simplified ] = "²åÈë";
+ TEXT[ greek ] = "ÅéóáãùãÞ";
+ TEXT[ korean ] = "»ðÀÔ";
+ TEXT[ turkish ] = "Ekle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_OVR_UNDO
+{
+ TEXT = "Überschreiben" ;
+ TEXT [ English ] = "Overwrite" ;
+ TEXT [ norwegian ] = "Skriv over" ;
+ TEXT [ italian ] = "Sovrascrivi" ;
+ TEXT [ portuguese_brazilian ] = "Gravar sobre" ;
+ TEXT [ portuguese ] = "Sobregravar" ;
+ TEXT [ finnish ] = "Korvaa" ;
+ TEXT [ danish ] = "Overskriv" ;
+ TEXT [ french ] = "Écraser" ;
+ TEXT [ swedish ] = "Skriv över" ;
+ TEXT [ dutch ] = "Overschrijven" ;
+ TEXT [ spanish ] = "Sobrescribir" ;
+ TEXT [ english_us ] = "Overwrite" ;
+ TEXT[ chinese_simplified ] = "¸²Ð´";
+ TEXT[ russian ] = "Çàìåíèòü";
+ TEXT[ polish ] = "Skasuj przez zapisanie";
+ TEXT[ japanese ] = "ã‘‚«";
+ TEXT[ chinese_traditional ] = "Âмg";
+ TEXT[ arabic ] = "ÇáßÊÇÈÉ ÝæÞ";
+ TEXT[ dutch ] = "Overschrijven";
+ TEXT[ chinese_simplified ] = "¸²Ð´";
+ TEXT[ greek ] = "ÁíôéêáôÜóôáóç";
+ TEXT[ korean ] = "µ¤¾î¾²±â";
+ TEXT[ turkish ] = "Üzerine yaz";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_SPLITNODE_UNDO
+{
+ TEXT = "neuer Absatz" ;
+ TEXT [ English ] = "new Paragraph" ;
+ TEXT [ norwegian ] = "nytt Avsnitt" ;
+ TEXT [ italian ] = "Nuovo paragrafo" ;
+ TEXT [ portuguese_brazilian ] = "novo Parágrafo" ;
+ TEXT [ portuguese ] = "Novo parágrafo" ;
+ TEXT [ finnish ] = "uusi kappale" ;
+ TEXT [ danish ] = "nyt afsnit" ;
+ TEXT [ french ] = "Nouveau paragraphe" ;
+ TEXT [ swedish ] = "nytt stycke" ;
+ TEXT [ dutch ] = "Nieuwe alinea" ;
+ TEXT [ spanish ] = "Párrafo nuevo" ;
+ TEXT [ english_us ] = "New Paragraph" ;
+ TEXT[ chinese_simplified ] = "н¨¶ÎÂä";
+ TEXT[ russian ] = "Íîâûé àáçàö";
+ TEXT[ polish ] = "Nowy akapit";
+ TEXT[ japanese ] = "V‚µ‚¢’i—Ž";
+ TEXT[ chinese_traditional ] = "·s«Ø¬q¸¨";
+ TEXT[ arabic ] = "ÝÞÑÉ ÌÏíÏÉ";
+ TEXT[ dutch ] = "Nieuwe alinea";
+ TEXT[ chinese_simplified ] = "н¨¶ÎÂä";
+ TEXT[ greek ] = "Äçìéïõñãßá ðáñáãñÜöïõ";
+ TEXT[ korean ] = "»õ ´Ü¶ô";
+ TEXT[ turkish ] = "Yeni paragraf";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_MOVE_UNDO
+{
+ 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[ dutch ] = "Verplaatsen";
+ TEXT[ chinese_simplified ] = "Òƶ¯";
+ TEXT[ greek ] = "Ìåôáêßíçóç";
+ TEXT[ korean ] = "À̵¿";
+ TEXT[ turkish ] = "Taþý";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_INSATTR_UNDO
+{
+ TEXT = "Attribute anwenden" ;
+ TEXT [ English ] = "Apply attributes" ;
+ TEXT [ norwegian ] = "Bruk attributter" ;
+ TEXT [ italian ] = "Applica attributi" ;
+ TEXT [ portuguese_brazilian ] = "Aplicar atributos" ;
+ TEXT [ portuguese ] = "Aplicar atributos" ;
+ TEXT [ finnish ] = "Käytä määritteitä" ;
+ TEXT [ danish ] = "Anvend attributter" ;
+ TEXT [ french ] = "Appliquer les attributs" ;
+ TEXT [ swedish ] = "Använd attribut" ;
+ TEXT [ dutch ] = "Attributen toepassen" ;
+ TEXT [ spanish ] = "Aplicar atributos" ;
+ TEXT [ english_us ] = "Apply attributes" ;
+ TEXT[ chinese_simplified ] = "ʹÓÃÊôÐÔ";
+ TEXT[ russian ] = "Ïðèìåíèòü àòðèáóòû";
+ TEXT[ polish ] = "Zastosuj atrybuty";
+ TEXT[ japanese ] = "‘®«‚Ì“K—p";
+ TEXT[ chinese_traditional ] = "¨Ï¥ÎÄÝ©Ê";
+ TEXT[ arabic ] = "ÇÓÊÎÏÇã ÇáÓãÇÊ";
+ TEXT[ dutch ] = "Attributen toepassen";
+ TEXT[ chinese_simplified ] = "ʹÓÃÊôÐÔ";
+ TEXT[ greek ] = "ÅöáñìïãÞ éäéïôÞôùí";
+ TEXT[ korean ] = "¼Ó¼º Àû¿ë";
+ TEXT[ turkish ] = "Öznitelikleri deðiþtir";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_SETFMTCOLL_UNDO
+{
+ TEXT = "Vorlagen anwenden" ;
+ TEXT [ English ] = "Apply styles" ;
+ TEXT [ norwegian ] = "Bruk maler" ;
+ TEXT [ italian ] = "Applica stili" ;
+ TEXT [ portuguese_brazilian ] = "Apicar estilos" ;
+ TEXT [ portuguese ] = "Aplicar estilos" ;
+ TEXT [ finnish ] = "Käytä tyylejä" ;
+ TEXT [ danish ] = "Anvend typografi" ;
+ TEXT [ french ] = "Appliquer les styles" ;
+ TEXT [ swedish ] = "Använd formatmallar" ;
+ TEXT [ dutch ] = "Opmaakprofielen toepassen" ;
+ TEXT [ spanish ] = "Aplicar estilos" ;
+ TEXT [ english_us ] = "Apply Styles" ;
+ TEXT[ chinese_simplified ] = "ʹÓÃÑùʽ";
+ TEXT[ russian ] = "Ïðèìåíèòü ñòèëè";
+ TEXT[ polish ] = "Zastosuj szablony";
+ TEXT[ japanese ] = "½À²Ù‚Ì“K—p";
+ TEXT[ chinese_traditional ] = "¨Ï¥Î¼Ë¦¡";
+ TEXT[ arabic ] = "ÇÓÊÎÏÇã ÇáäãÇÐÌ";
+ TEXT[ dutch ] = "Opmaakprofielen toepassen";
+ TEXT[ chinese_simplified ] = "ʹÓÃÑùʽ";
+ TEXT[ greek ] = "ÅöáñìïãÞ ðñïôýðùí";
+ TEXT[ korean ] = "À¯Çü Àû¿ë";
+ TEXT[ turkish ] = "Biçim uygula";
+ TEXT[ language_user1 ] = "All \"Vorlage\"/Styles are always written with capital S. 10.5.00EM";
+};
+String STR_RESET_ATTR_UNDO
+{
+ TEXT = "Attribute zurücksetzen" ;
+ TEXT [ English ] = "Reset attributes" ;
+ TEXT [ norwegian ] = "Sett attributter på nytt" ;
+ TEXT [ italian ] = "Reimposta attributi" ;
+ TEXT [ portuguese_brazilian ] = "Redefinir atributos" ;
+ TEXT [ portuguese ] = "Restaurar atributos" ;
+ TEXT [ finnish ] = "Palauta määritteet" ;
+ TEXT [ danish ] = "Nulstil attributter" ;
+ TEXT [ french ] = "Restaurer les attributs" ;
+ TEXT [ swedish ] = "Återställ attribut" ;
+ TEXT [ dutch ] = "Attributen terugzetten" ;
+ TEXT [ spanish ] = "Restablecer atributos" ;
+ TEXT [ english_us ] = "Reset attributes" ;
+ TEXT[ chinese_simplified ] = "ÖØÉèÊôÐÔ";
+ TEXT[ russian ] = "Âîññòàíîâèòü àòðèáóòû";
+ TEXT[ polish ] = "Zresetuj atrybuty";
+ TEXT[ japanese ] = "‘®«‚Ìؾ¯Ä";
+ TEXT[ chinese_traditional ] = "­«³]ÄÝ©Ê";
+ TEXT[ arabic ] = "ÅÚÇÏÉ ÊÚííä ÇáÓãÇÊ";
+ TEXT[ dutch ] = "Attributen terugzetten";
+ TEXT[ chinese_simplified ] = "ÖØÉèÊôÐÔ";
+ TEXT[ greek ] = "ÅðáíáöïñÜ éäéïôÞôùí";
+ TEXT[ korean ] = "¼Ó¼º ¿ø·¡´ë·Î";
+ TEXT[ turkish ] = "Öznitelikleri baþa al";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_APPLY_ATTR_UNDO
+{
+ TEXT = "Attribute anwenden" ;
+ TEXT [ English ] = "Apply attributes" ;
+ TEXT [ norwegian ] = "Bruk attributter" ;
+ TEXT [ italian ] = "Applica attributi" ;
+ TEXT [ portuguese_brazilian ] = "Aplicar atributos" ;
+ TEXT [ portuguese ] = "Aplicar atributos" ;
+ TEXT [ finnish ] = "Käytä määritteitä" ;
+ TEXT [ danish ] = "Anvend attributter" ;
+ TEXT [ french ] = "Appliquer les attributs" ;
+ TEXT [ swedish ] = "Använd attribut" ;
+ TEXT [ dutch ] = "Attributen toepassen" ;
+ TEXT [ spanish ] = "Aplicar atributos" ;
+ TEXT [ english_us ] = "Apply attributes" ;
+ TEXT[ chinese_simplified ] = "ʹÓÃÊôÐÔ";
+ TEXT[ russian ] = "Ïðèìåíèòü àòðèáóòû";
+ TEXT[ polish ] = "Zastosuj atrybuty";
+ TEXT[ japanese ] = "‘®«‚Ì“K—p";
+ TEXT[ chinese_traditional ] = "¨Ï¥ÎÄÝ©Ê";
+ TEXT[ arabic ] = "ÇÓÊÎÏÇã ÇáÓãÇÊ";
+ TEXT[ dutch ] = "Attributen toepassen";
+ TEXT[ chinese_simplified ] = "ʹÓÃÊôÐÔ";
+ TEXT[ greek ] = "ÅöáñìïãÞ éäéïôÞôùí";
+ TEXT[ korean ] = "¼Ó¼º Àû¿ë";
+ TEXT[ turkish ] = "Öznitelikleri kullan";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_INSERT_DOC_UNDO
+{
+ TEXT = "Dokument einfügen" ;
+ TEXT [ English ] = "Insert document" ;
+ TEXT [ norwegian ] = "Insert document" ;
+ TEXT [ italian ] = "Inserisci documento" ;
+ TEXT [ portuguese_brazilian ] = "Insere um documento" ;
+ TEXT [ portuguese ] = "Inserir documento" ;
+ TEXT [ finnish ] = "Lisää asiakirja" ;
+ TEXT [ danish ] = "Indsæt dokument" ;
+ TEXT [ french ] = "Insérer un document" ;
+ TEXT [ swedish ] = "Infoga dokument" ;
+ TEXT [ dutch ] = "Document invoegen" ;
+ TEXT [ spanish ] = "Insertar documento" ;
+ TEXT [ english_us ] = "Insert Document" ;
+ TEXT[ chinese_simplified ] = "²åÈëÎĵµ";
+ TEXT[ russian ] = "Âñòàâèòü äîêóìåíò";
+ TEXT[ polish ] = "Wstaw dokument";
+ TEXT[ japanese ] = "ÄÞ·­ÒÝÄ‚Ì‘}“ü";
+ TEXT[ chinese_traditional ] = "´¡¤J¤å¥ó";
+ TEXT[ arabic ] = "ÅÏÑÇÌ ãÓÊäÏ";
+ TEXT[ dutch ] = "Document invoegen";
+ TEXT[ chinese_simplified ] = "²åÈëÎĵµ";
+ TEXT[ greek ] = "ÐñïóèÞêç åããñÜöïõ";
+ TEXT[ korean ] = "¹®¼­ »ðÀÔ";
+ TEXT[ turkish ] = "Belge ekle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_INSERT_GLOSSARY
+{
+ TEXT = "AutoText einfügen" ;
+ TEXT [ English ] = "Insert AutoText" ;
+ TEXT [ norwegian ] = "Insert AutoText" ;
+ TEXT [ italian ] = "Inserisci testo automatico" ;
+ TEXT [ portuguese_brazilian ] = "Inserir Texto Automático" ;
+ TEXT [ portuguese ] = "Inserir AutoTexto" ;
+ TEXT [ finnish ] = "Lisää automaattiteksti" ;
+ TEXT [ danish ] = "Indsæt AutoTekst" ;
+ TEXT [ french ] = "Insérer un AutoTexte" ;
+ TEXT [ swedish ] = "Infoga AutoText" ;
+ TEXT [ dutch ] = "AutoTekst invoegen" ;
+ TEXT [ spanish ] = "Insertar AutoTexto" ;
+ TEXT [ english_us ] = "Insert AutoText" ;
+ TEXT[ chinese_simplified ] = "²åÈë×Ô¶¯Í¼Îļ¯";
+ TEXT[ russian ] = "Âñòàâèòü àâòîòåêñò";
+ TEXT[ polish ] = "Wstaw Autotekst";
+ TEXT[ japanese ] = "“ü—ÍŽx‰‡‚Ì‘}“ü";
+ TEXT[ chinese_traditional ] = "´¡¤J¦Û°Ê¹Ï¤å¶°";
+ TEXT[ arabic ] = "ÅÏÑÇÌ äÕ ÊáÞÇÆí";
+ TEXT[ dutch ] = "AutoTekst invoegen";
+ TEXT[ chinese_simplified ] = "²åÈë×Ô¶¯Í¼Îļ¯";
+ TEXT[ greek ] = "ÐñïóèÞêç ÁõôïÊåéìÝíïõ";
+ TEXT[ korean ] = "ÀÚµ¿ ÅؽºÆ® »ðÀÔ";
+ TEXT[ turkish ] = "Otomatik metin ekle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DELBOOKMARK
+{
+ TEXT = "Textmarke löschen" ;
+ TEXT [ English ] = "Delete bookmark" ;
+ TEXT [ norwegian ] = "Slett bokmerke" ;
+ TEXT [ italian ] = "Elimina segnalibro" ;
+ TEXT [ portuguese_brazilian ] = "Apagar marca" ;
+ TEXT [ portuguese ] = "Eliminar marcador de texto" ;
+ TEXT [ finnish ] = "Poista kirjanmerkki" ;
+ TEXT [ danish ] = "Slet tekstmarkering" ;
+ TEXT [ french ] = "Supprimer le repère de texte" ;
+ TEXT [ swedish ] = "Radera bokmärke" ;
+ TEXT [ dutch ] = "Tekstmarkering verwijderen" ;
+ TEXT [ spanish ] = "Eliminar marcador" ;
+ TEXT [ english_us ] = "Delete bookmark" ;
+ TEXT[ chinese_simplified ] = "ɾ³ýÊéÇ©";
+ TEXT[ russian ] = "Óäàëèòü çàêëàäêó";
+ TEXT[ polish ] = "Usuñ zak³adkê";
+ TEXT[ japanese ] = "÷½ÄÏ°¸‚Ìíœ";
+ TEXT[ chinese_traditional ] = "§R°£¤º¤å¼ÐÅÒ";
+ TEXT[ arabic ] = "ÍÐÝ ÅÔÇÑÉ ãÑÌÚíÉ";
+ TEXT[ dutch ] = "Tekstmarkering verwijderen";
+ TEXT[ chinese_simplified ] = "ɾ³ýÊéÇ©";
+ TEXT[ greek ] = "ÄéáãñáöÞ óåëéäïäåßêôç";
+ TEXT[ korean ] = "Ã¥ °¥ÇÇ »èÁ¦";
+ TEXT[ turkish ] = "Metin iþaretini sil";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_INSBOOKMARK
+{
+ TEXT = "Textmarke einfügen" ;
+ TEXT [ English ] = "Insert bookmark" ;
+ TEXT [ norwegian ] = "Sett inn bokmerke" ;
+ TEXT [ italian ] = "Inserisci segnalibro" ;
+ TEXT [ portuguese_brazilian ] = "Inserir marca" ;
+ TEXT [ portuguese ] = "Inserir marcador de texto" ;
+ TEXT [ finnish ] = "Lisää kirjanmerkki" ;
+ TEXT [ danish ] = "Indsæt tekstmarkering" ;
+ TEXT [ french ] = "Insérer un repère de texte" ;
+ TEXT [ swedish ] = "Infoga bokmärke" ;
+ TEXT [ dutch ] = "Tekstmarkering invoegen" ;
+ TEXT [ spanish ] = "Insertar marca" ;
+ TEXT [ english_us ] = "Insert bookmark" ;
+ TEXT[ chinese_simplified ] = "²åÈëÊéÇ©";
+ TEXT[ russian ] = "Âñòàâèòü çàêëàäêó";
+ TEXT[ polish ] = "Wstaw zak³adkê";
+ TEXT[ japanese ] = "÷½ÄÏ°¸‚Ì‘}“ü";
+ TEXT[ chinese_traditional ] = "´¡¤J¤º¤å¼ÐÅÒ";
+ TEXT[ arabic ] = "ÅÏÑÇÌ ÅÔÇÑÉ ãÑÌÚíÉ";
+ TEXT[ dutch ] = "Tekstmarkering invoegen";
+ TEXT[ chinese_simplified ] = "²åÈëÊéÇ©";
+ TEXT[ greek ] = "ÅéóáãùãÞ óåëéäïäåßêôç";
+ TEXT[ korean ] = "Ã¥ °¥ÇÇ »ðÀÔ";
+ TEXT[ turkish ] = "Metin iþareti ekle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_SORT_TBL
+{
+ TEXT = "Tabelle sortieren" ;
+ TEXT [ English ] = "Sort table" ;
+ TEXT [ norwegian ] = "Sorter tabell" ;
+ TEXT [ italian ] = "Ordina tabella" ;
+ TEXT [ portuguese_brazilian ] = "Ordenar tabela" ;
+ TEXT [ portuguese ] = "Ordenar tabela" ;
+ TEXT [ finnish ] = "Lajittele taulukko" ;
+ TEXT [ danish ] = "Sorter tabel" ;
+ TEXT [ french ] = "Trier tableau" ;
+ TEXT [ swedish ] = "Sortera tabell" ;
+ TEXT [ dutch ] = "Tabel sorteren" ;
+ TEXT [ spanish ] = "Ordenar tabla" ;
+ TEXT [ english_us ] = "Sort table" ;
+ TEXT[ chinese_simplified ] = "ÅÅÐò±í¸ñ";
+ TEXT[ russian ] = "Ñîðòèðîâêà òàáëèöû";
+ TEXT[ polish ] = "Sortuj tabelê";
+ TEXT[ japanese ] = "•\\‚Ì•À‚בւ¦";
+ TEXT[ chinese_traditional ] = "±Æ§Çªí®æ";
+ TEXT[ arabic ] = "ÝÑÒ ÇáÌÏæá";
+ TEXT[ dutch ] = "Tabel sorteren";
+ TEXT[ chinese_simplified ] = "ÅÅÐò±í¸ñ";
+ TEXT[ greek ] = "Ôáîéíüìçóç ðßíáêá";
+ TEXT[ korean ] = "Ç¥Á¤·Ä";
+ TEXT[ turkish ] = "Tabloyu sýrala";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_SORT_TXT
+{
+ TEXT = "Text sortieren" ;
+ TEXT [ English ] = "Sort text" ;
+ TEXT [ norwegian ] = "Sorter tekst" ;
+ TEXT [ italian ] = "Ordina testo" ;
+ TEXT [ portuguese_brazilian ] = "Ordenar texto" ;
+ TEXT [ portuguese ] = "Ordenar texto" ;
+ TEXT [ finnish ] = "Lajittele teksti" ;
+ TEXT [ danish ] = "Sorter tekst" ;
+ TEXT [ french ] = "Trier texte" ;
+ TEXT [ swedish ] = "Sortera text" ;
+ TEXT [ dutch ] = "Tekst sorteren" ;
+ TEXT [ spanish ] = "Ordenar texto" ;
+ TEXT [ english_us ] = "Sort text" ;
+ TEXT[ chinese_simplified ] = "ÅÅÐòÎÄ×Ö";
+ TEXT[ russian ] = "Ñîðòèðîâêà òåêñòà";
+ TEXT[ polish ] = "Sortuj tekst";
+ TEXT[ japanese ] = "÷½Ä‚Ì•À‚בւ¦";
+ TEXT[ chinese_traditional ] = "±Æ§Ç¤å¦r";
+ TEXT[ arabic ] = "ÝÑÒ ÇáäÕ";
+ TEXT[ dutch ] = "Tekst sorteren";
+ TEXT[ chinese_simplified ] = "ÅÅÐòÎÄ×Ö";
+ TEXT[ greek ] = "Ôáîéíüìçóç êåéìÝíïõ";
+ TEXT[ korean ] = "ÅؽºÆ® Á¤·Ä";
+ TEXT[ turkish ] = "Metni sýrala";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_INSTABLE_UNDO
+{
+ TEXT = "Tabelle einfügen" ;
+ TEXT [ English ] = "Insert table" ;
+ TEXT [ norwegian ] = "Insert table" ;
+ TEXT [ italian ] = "Inserisci tabella" ;
+ TEXT [ portuguese_brazilian ] = "Insere uma tabela" ;
+ TEXT [ portuguese ] = "Inserir tabela" ;
+ TEXT [ finnish ] = "Lisää taulukon" ;
+ TEXT [ danish ] = "Indsæt tabel" ;
+ TEXT [ french ] = "Insérer un tableau" ;
+ TEXT [ swedish ] = "Infoga tabell" ;
+ TEXT [ dutch ] = "Tabel invoegen" ;
+ TEXT [ spanish ] = "Insertar tabla" ;
+ TEXT [ english_us ] = "Insert Table" ;
+ TEXT[ chinese_simplified ] = "²åÈë±í¸ñ";
+ TEXT[ russian ] = "Âñòàâèòü òàáëèöó";
+ TEXT[ polish ] = "Wstaw tabelê";
+ TEXT[ japanese ] = "•\\‚Ì‘}“ü";
+ TEXT[ chinese_traditional ] = "´¡¤Jªí®æ";
+ TEXT[ arabic ] = "ÅÏÑÇÌ ÌÏæá";
+ TEXT[ dutch ] = "Tabel invoegen";
+ TEXT[ chinese_simplified ] = "²åÈë±í¸ñ";
+ TEXT[ greek ] = "ÅéóáãùãÞ ðßíáêá";
+ TEXT[ korean ] = "Ç¥»ðÀÔ";
+ TEXT[ turkish ] = "Tablo ekle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_TEXTTOTABLE_UNDO
+{
+ TEXT = "Konvertierung Text -> Tabelle" ;
+ TEXT [ English ] = "Convert text to table" ;
+ TEXT [ norwegian ] = "Omdann tekst til tabell" ;
+ TEXT [ italian ] = "Converti testo in tabella." ;
+ TEXT [ portuguese_brazilian ] = "Converter texto em tabela" ;
+ TEXT [ portuguese ] = "Converter texto -> tabela" ;
+ TEXT [ finnish ] = "Muunna teksti taulukoksi" ;
+ TEXT [ danish ] = "Konverter tekst til tabel" ;
+ TEXT [ french ] = "Convertir texte en tableau" ;
+ TEXT [ swedish ] = "Konvertera text till tabell" ;
+ TEXT [ dutch ] = "Tekst naar tabel converteren" ;
+ TEXT [ spanish ] = "Convertir texto en tabla" ;
+ TEXT [ english_us ] = "Convert text -> table" ;
+ TEXT[ chinese_simplified ] = "ÎÄ×Öת»»³É±í¸ñ";
+ TEXT[ russian ] = "Ïðåîáðàçîâàòü Òåêñò -> Òàáëèöà";
+ TEXT[ polish ] = "Konwertuj tekst na tabelê";
+ TEXT[ japanese ] = "÷½Ä->•\\‚Ö‚Ì•ÏŠ·";
+ TEXT[ chinese_traditional ] = "¤å¦rÂà´«¦¨ªí®æ";
+ TEXT[ arabic ] = "ÊÍæíá äÕ -> ÌÏæá";
+ TEXT[ dutch ] = "Tekst naar tabel converteren";
+ TEXT[ chinese_simplified ] = "ÎÄ×Öת»»³É±í¸ñ";
+ TEXT[ greek ] = "ÌåôáôñïðÞ Êåßìåíï -> Ðßíáêáò";
+ TEXT[ korean ] = "º¯È¯ ÅؽºÆ® -> Ç¥";
+ TEXT[ turkish ] = "Metni tabloya dönüþtür";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_TABLETOTEXT_UNDO
+{
+ TEXT = "Konvertierung Tabelle -> Text" ;
+ TEXT [ English ] = "Convert table to text" ;
+ TEXT [ norwegian ] = "Omdann tabell til tekst" ;
+ TEXT [ italian ] = "Converti tabella in testo" ;
+ TEXT [ portuguese_brazilian ] = "Converter tabela em texto" ;
+ TEXT [ portuguese ] = "Converter tabela -> texto" ;
+ TEXT [ finnish ] = "Muunna taulukko tekstiksi" ;
+ TEXT [ danish ] = "Konverter tabel til tekst" ;
+ TEXT [ french ] = "Convertir tableau en texte" ;
+ TEXT [ swedish ] = "Konvertera tabell till text" ;
+ TEXT [ dutch ] = "Tabel naar tekst converteren" ;
+ TEXT [ spanish ] = "Convertir tabla en texto" ;
+ TEXT [ english_us ] = "Convert table to text" ;
+ TEXT[ chinese_simplified ] = "±í¸ñת»»³ÉÎÄ×Ö";
+ TEXT[ russian ] = "Ïðåîáðàçîâàòü Òàáëèöà -> Òåêñò";
+ TEXT[ polish ] = "Konwertuj tabelê na tekst";
+ TEXT[ japanese ] = "•\\->÷½Ä‚Ö‚Ì•ÏŠ·";
+ TEXT[ chinese_traditional ] = "ªí®æÂà´«¦¨¤å¦r";
+ TEXT[ arabic ] = "ÊÍæíá ÇáÌÏæá Åáì äÕ";
+ TEXT[ dutch ] = "Tabel naar tekst converteren";
+ TEXT[ chinese_simplified ] = "±í¸ñת»»³ÉÎÄ×Ö";
+ TEXT[ greek ] = "ÌåôáôñïðÞ Ðßíáêáò -> Êåßìåíï";
+ TEXT[ korean ] = "Ç¥¸¦ ÅؽºÆ®·Î º¯È¯";
+ TEXT[ turkish ] = "Tabloyu metne dönüþtür";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_COPY_UNDO
+{
+ 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[ dutch ] = "Kopiëren";
+ TEXT[ chinese_simplified ] = "¸´ÖÆ";
+ TEXT[ greek ] = "ÁíôéãñáöÞ";
+ TEXT[ korean ] = "º¹»ç";
+ TEXT[ turkish ] = "Kopyala";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_REPLACE_UNDO
+{
+ 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[ dutch ] = "Vervangen";
+ TEXT[ chinese_simplified ] = "¸üÌæ";
+ TEXT[ greek ] = "ÁíôéêáôÜóôáóç";
+ TEXT[ korean ] = "¹Ù²Ù±â";
+ TEXT[ turkish ] = "Deðiþtir";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_INSERT_PAGE_BREAK_UNDO
+{
+ TEXT = "Harter Seitenumbruch" ;
+ TEXT [ English ] = "Hard page break" ;
+ TEXT [ norwegian ] = "Fast sideskift" ;
+ TEXT [ italian ] = "Interruzione di pagina fissa" ;
+ TEXT [ portuguese_brazilian ] = "Quebra forçada de página" ;
+ TEXT [ portuguese ] = "Quebra de página fixa" ;
+ TEXT [ finnish ] = "Pysyvä sivunvaihto" ;
+ TEXT [ danish ] = "Hårdt sideskift" ;
+ TEXT [ french ] = "Saut de page forcé" ;
+ TEXT [ swedish ] = "Hård sidbrytning" ;
+ TEXT [ dutch ] = "Vast pagina-einde" ;
+ TEXT [ spanish ] = "Salto fijo de página" ;
+ TEXT [ english_us ] = "Hard page break" ;
+ TEXT[ chinese_simplified ] = "ÊÖ¹¤»»Ò³";
+ TEXT[ russian ] = "Æåñòêèé ðàçðûâ ñòðàíèö";
+ TEXT[ polish ] = "Twarde ³amanie strony";
+ TEXT[ japanese ] = "”CˆÓŽw’è‚̉üÍß°¼Þ";
+ TEXT[ chinese_traditional ] = "¤â¤u´«­¶";
+ TEXT[ arabic ] = "ÝÇÕá ÕÝÍÇÊ íÏæí";
+ TEXT[ dutch ] = "Vast pagina-einde";
+ TEXT[ chinese_simplified ] = "ÊÖ¹¤»»Ò³";
+ TEXT[ greek ] = "¸íôïíç áëëáãÞ óåëßäáò";
+ TEXT[ korean ] = "°íÁ¤ ÆäÀÌÁö¹Ù²Ù±â";
+ TEXT[ turkish ] = "Sabit sayfa sonu";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_INSERT_COLUMN_BREAK_UNDO
+{
+ TEXT = "Harter Spaltenumbruch" ;
+ TEXT [ English ] = "Hard column break" ;
+ TEXT [ norwegian ] = "Fast kolonneskift" ;
+ TEXT [ italian ] = "Interruzione di colonna fissa" ;
+ TEXT [ portuguese_brazilian ] = "Quebra forçada de coluna" ;
+ TEXT [ portuguese ] = "Quebra de coluna fixa" ;
+ TEXT [ finnish ] = "Pysyvä sarakkeenvaihto" ;
+ TEXT [ danish ] = "Hårdt spalteskift" ;
+ TEXT [ french ] = "Saut de colonne forcé" ;
+ TEXT [ swedish ] = "Hård kolumnbrytning" ;
+ TEXT [ dutch ] = "Vast kolomeinde" ;
+ TEXT [ spanish ] = "Salto de columna fijo" ;
+ TEXT [ english_us ] = "Hard column break" ;
+ TEXT[ chinese_simplified ] = "ÊÖ¹¤»»ÁÐ";
+ TEXT[ russian ] = "Æåñòêèé ðàçðûâ êîëîíîê";
+ TEXT[ polish ] = "Twardy podzia³ kolumny";
+ TEXT[ japanese ] = "”CˆÓŽw’è‚̉ü—ñ";
+ TEXT[ chinese_traditional ] = "¤â¤u´«Äæ";
+ TEXT[ arabic ] = "ÝÇÕá ÃÚãÏÉ íÏæí";
+ TEXT[ dutch ] = "Vast kolomeinde";
+ TEXT[ chinese_simplified ] = "ÊÖ¹¤»»ÁÐ";
+ TEXT[ greek ] = "¸íôïíç áëëáãÞ óôÞëçò";
+ TEXT[ korean ] = "°íÁ¤ ¿­¹Ù²Ù±â";
+ TEXT[ turkish ] = "Sabit sütun sonu";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_PLAY_MACRO_UNDO
+{
+ TEXT = "Makro abspielen" ;
+ TEXT [ English ] = "Play macro" ;
+ TEXT [ norwegian ] = "Kjør makro" ;
+ TEXT [ italian ] = "Esegui macro" ;
+ TEXT [ portuguese_brazilian ] = "Reproduzir macro" ;
+ TEXT [ portuguese ] = "Executar macro" ;
+ TEXT [ finnish ] = "Suorita makro" ;
+ TEXT [ danish ] = "Spil makro" ;
+ TEXT [ french ] = "Exécuter la macro" ;
+ TEXT [ swedish ] = "Spela upp makro" ;
+ TEXT [ dutch ] = "Macro starten" ;
+ TEXT [ spanish ] = "Reproducir macro" ;
+ TEXT [ english_us ] = "Run macro" ;
+ TEXT[ chinese_simplified ] = "Ö´Ðкê";
+ TEXT[ russian ] = "Ïðîãîí ìàêðîñà";
+ TEXT[ polish ] = "Wykonaj makro";
+ TEXT[ japanese ] = "ϸۂ̎Às";
+ TEXT[ chinese_traditional ] = "°õ¦æ¥¨¶°";
+ TEXT[ arabic ] = "ÊäÝíÐ ÇáãÇßÑæ";
+ TEXT[ dutch ] = "Macro starten";
+ TEXT[ chinese_simplified ] = "Ö´Ðкê";
+ TEXT[ greek ] = "ÅêôÝëåóç ìáêñïåíôïëÞò";
+ TEXT[ korean ] = "¸ÅÅ©·Î ½ÇÇà";
+ TEXT[ turkish ] = "Makroyu çalýþtýr";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_INSERT_ENV_UNDO
+{
+ Text = "Briefumschlag einfügen" ;
+ Text [ English ] = "Insert envelope" ;
+ Text [ norwegian ] = "Sett inn konvolutt" ;
+ Text [ italian ] = "Inserisci busta" ;
+ Text [ portuguese_brazilian ] = "Inserir envelope" ;
+ Text [ portuguese ] = "Inserir envelope" ;
+ Text [ finnish ] = "Lisää kirjekuori" ;
+ Text [ danish ] = "Indsæt konvolut" ;
+ Text [ french ] = "Insérer une enveloppe" ;
+ Text [ swedish ] = "Infoga kuvert" ;
+ Text [ dutch ] = "Envelop invoegen" ;
+ Text [ spanish ] = "Insertar sobre" ;
+ Text [ english_us ] = "Insert Envelope" ;
+ Text[ chinese_simplified ] = "²åÈëÐÅ·â";
+ Text[ russian ] = "Âñòàâèòü êîíâåðò";
+ Text[ polish ] = "Wstaw kopertê";
+ Text[ japanese ] = "••“›‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J«H«Ê";
+ Text[ arabic ] = "ÅÏÑÇÌ ÙÑÝ";
+ Text[ dutch ] = "Envelop invoegen";
+ Text[ chinese_simplified ] = "²åÈëÐÅ·â";
+ Text[ greek ] = "ÐñïóèÞêç öáêÝëïõ åðéóôïëÞò";
+ Text[ korean ] = "ºÀÅõ »ðÀÔ";
+ Text[ turkish ] = "Zarf ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_DRAG_AND_COPY
+{
+ Text = "Kopieren" ;
+ Text [ English ] = "Copy" ;
+ Text [ dutch ] = "Kopiëren" ;
+ Text [ english_us ] = "Copy" ;
+ Text [ italian ] = "Copia" ;
+ Text [ spanish ] = "Copiar" ;
+ Text [ french ] = "Copier" ;
+ Text [ swedish ] = "Kopiera" ;
+ Text [ danish ] = "Kopier" ;
+ Text [ portuguese ] = "Copiar" ;
+ Text [ portuguese_brazilian ] = "Kopieren" ;
+ Text[ chinese_simplified ] = "¸´ÖÆ";
+ Text[ russian ] = "Êîïèðîâàòü";
+ Text[ polish ] = "Kopiuj";
+ Text[ japanese ] = "ºËß°‚·‚é";
+ Text[ chinese_traditional ] = "½Æ»s";
+ Text[ arabic ] = "äÓÎ";
+ Text[ dutch ] = "Kopiëren";
+ Text[ chinese_simplified ] = "¸´ÖÆ";
+ Text[ greek ] = "ÁíôéãñáöÞ";
+ Text[ korean ] = "º¹»ç";
+ Text[ turkish ] = "Kopyala";
+ Text[ language_user1 ] = " ";
+};
+String STR_DRAG_AND_MOVE
+{
+ Text = "Verschieben" ;
+ Text [ English ] = "Move" ;
+ Text [ english_us ] = "Move" ;
+ Text [ italian ] = "Spostare" ;
+ Text [ spanish ] = "Desplazar" ;
+ Text [ french ] = "Déplacer" ;
+ Text [ dutch ] = "Verplaatsen" ;
+ Text [ swedish ] = "Flytta" ;
+ Text [ danish ] = "Flyt" ;
+ Text [ portuguese ] = "Mover" ;
+ Text [ portuguese_brazilian ] = "Verschieben" ;
+ Text[ chinese_simplified ] = "Òƶ¯";
+ Text[ russian ] = "Ïåðåìåñòèòü";
+ Text[ polish ] = "Przesuñ";
+ Text[ japanese ] = "ˆÚ“®‚·‚é";
+ Text[ chinese_traditional ] = "²¾°Ê";
+ Text[ arabic ] = "ÅÒÇÍÉ";
+ Text[ dutch ] = "Verplaatsen";
+ Text[ chinese_simplified ] = "Òƶ¯";
+ Text[ greek ] = "Ìåôáêßíçóç";
+ Text[ korean ] = "À̵¿";
+ Text[ turkish ] = "Taþý";
+ Text[ language_user1 ] = " ";
+};
+String STR_INSERT_RULER
+{
+ Text = "Ruler einfügen" ;
+ Text [ English ] = "Insert Ruler" ;
+ Text [ portuguese ] = "Inserir régua" ;
+ Text [ english_us ] = "Insert ruler" ;
+ Text [ portuguese_brazilian ] = "Ruler einfügen" ;
+ Text [ swedish ] = "Infoga Ruler" ;
+ Text [ danish ] = "Indsæt lineal" ;
+ Text [ italian ] = "Inserisci ruler" ;
+ Text [ spanish ] = "Insertar regla" ;
+ Text [ french ] = "Insérer une règle" ;
+ Text [ dutch ] = "Ruler invoegen" ;
+ Text[ chinese_simplified ] = "²åÈë±ê³ß";
+ Text[ russian ] = "Âñòàâèòü ëèíåéêó ðàçìåòêè";
+ Text[ polish ] = "Wstaw linijkê";
+ Text[ japanese ] = "ׂٰ̑}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¼Ð¤Ø";
+ Text[ arabic ] = "ÅÏÑÇÌ ãÓØÑÉ";
+ Text[ dutch ] = "Ruler invoegen";
+ Text[ chinese_simplified ] = "²åÈë±ê³ß";
+ Text[ greek ] = "ÅéóáãùãÞ ÷Üñáêá";
+ Text[ korean ] = "´«±ÝÀÚ »ðÀÔ";
+ Text[ turkish ] = "Cetvel ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_INSERT_CHART
+{
+ Text = "StarChart einfügen" ;
+ Text [ English ] = "Insert StartChart" ;
+ Text [ portuguese ] = "Inserir StarOffice Chart" ;
+ Text [ english_us ] = "Insert StarOffice Chart" ;
+ Text [ portuguese_brazilian ] = "StarOffice Chart einfügen" ;
+ Text [ swedish ] = "Infoga StarOffice Chart" ;
+ Text [ danish ] = "Indsæt StarOffice Chart" ;
+ Text [ italian ] = "Inserisci StarOffice Chart " ;
+ Text [ spanish ] = "Insertar StarOffice Chart" ;
+ Text [ french ] = "Insérer un diagramme StarOffice Chart" ;
+ Text [ dutch ] = "StarOffice Chart invoegen" ;
+ Text[ chinese_simplified ] = "²åÈë StarOffice Chart";
+ Text[ russian ] = "Âñòàâèòü StarOffice Chart";
+ Text[ polish ] = "Wstaw StarOffice Chart";
+ Text[ japanese ] = "StarOffice Chart‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J StarOffice Chart";
+ Text[ arabic ] = "ÅÏÑÇÌ StarOffice Chart";
+ Text[ dutch ] = "StarOffice Chart invoegen";
+ Text[ chinese_simplified ] = "²åÈë StarOffice Chart";
+ Text[ greek ] = "ÐñïóèÞêç StarOffice Chart";
+ Text[ korean ] = "StarOffice Â÷Æ® »ðÀÔ";
+ Text[ turkish ] = "StarOffice Chart ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_INSERTFLY
+{
+ TEXT = "Rahmen einfügen" ;
+ TEXT [ English ] = "Insert frame" ;
+ TEXT [ norwegian ] = "Sett inn ramme" ;
+ TEXT [ italian ] = "Inserisci cornice" ;
+ TEXT [ portuguese_brazilian ] = "Inserir moldura" ;
+ TEXT [ portuguese ] = "Inserir moldura" ;
+ TEXT [ finnish ] = "Lisää kehyksen" ;
+ TEXT [ danish ] = "Indsæt ramme" ;
+ TEXT [ french ] = "Insérer un cadre" ;
+ TEXT [ swedish ] = "Infoga ram" ;
+ TEXT [ dutch ] = "Kader invoegen" ;
+ TEXT [ spanish ] = "Insertar marco" ;
+ TEXT [ english_us ] = "Insert frame" ;
+ TEXT[ chinese_simplified ] = "²åÈë¿ò¶ÔÏó";
+ TEXT[ russian ] = "Âñòàâèòü ðàìêó";
+ TEXT[ polish ] = "Wstaw ramkê";
+ TEXT[ japanese ] = "˜g‚Ì‘}“ü";
+ TEXT[ chinese_traditional ] = "´¡¤J®Øª«¥ó";
+ TEXT[ arabic ] = "ÅÏÑÇÌ ÅØÇÑ";
+ TEXT[ dutch ] = "Kader invoegen";
+ TEXT[ chinese_simplified ] = "²åÈë¿ò¶ÔÏó";
+ TEXT[ greek ] = "ÐñïóèÞêç ðëáéóßïõ";
+ TEXT[ korean ] = "ÇÁ·¹ÀÓ »ðÀÔ";
+ TEXT[ turkish ] = "Çerçeve ekle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DELETEFLY
+{
+ TEXT = "Rahmen löschen" ;
+ TEXT [ English ] = "Delete frame" ;
+ TEXT [ norwegian ] = "Slett ramme" ;
+ TEXT [ italian ] = "Elimina cornice" ;
+ TEXT [ portuguese_brazilian ] = "Apagar moldura" ;
+ TEXT [ portuguese ] = "Eliminar moldura" ;
+ TEXT [ finnish ] = "Poista kehys" ;
+ TEXT [ danish ] = "Slet ramme" ;
+ TEXT [ french ] = "Supprimer le cadre" ;
+ TEXT [ swedish ] = "Radera ram" ;
+ TEXT [ dutch ] = "Kader wissen" ;
+ TEXT [ spanish ] = "Eliminar marco" ;
+ TEXT [ english_us ] = "Delete frame" ;
+ TEXT[ chinese_simplified ] = "ɾ³ý¿ò¶ÔÏó";
+ TEXT[ russian ] = "Óäàëèòü ðàìêó";
+ TEXT[ polish ] = "Usuñ ramkê";
+ TEXT[ japanese ] = "˜g‚Ìíœ";
+ TEXT[ chinese_traditional ] = "§R°£®Øª«¥ó";
+ TEXT[ arabic ] = "ÍÐÝ ÅØÇÑ";
+ TEXT[ dutch ] = "Kader wissen";
+ TEXT[ chinese_simplified ] = "ɾ³ý¿ò¶ÔÏó";
+ TEXT[ greek ] = "ÄéáãñáöÞ ðëáéóßïõ";
+ TEXT[ korean ] = "ÇÁ·¹ÀÓ »èÁ¦";
+ TEXT[ turkish ] = "Çerçeveyi düzelt";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_AUTOFORMAT
+{
+ 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[ dutch ] = "AutoOpmaak";
+ TEXT[ chinese_simplified ] = "×Ô¶¯¸ñʽ";
+ TEXT[ greek ] = "ÁõôïÌïñöïðïßçóç";
+ TEXT[ korean ] = "ÀÚµ¿ ¼­½Ä";
+ TEXT[ turkish ] = "Otomatik formatlama";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_TABLEHEADLINE
+{
+ TEXT = "Tabellenüberschrift" ;
+ TEXT [ English ] = "Table headline" ;
+ TEXT [ norwegian ] = "Tabelloverskrift" ;
+ TEXT [ italian ] = "Intestazione tabella" ;
+ TEXT [ portuguese_brazilian ] = "Cabeçalho da tabela" ;
+ TEXT [ portuguese ] = "Título da tabela" ;
+ TEXT [ finnish ] = "Taulukon otsikko" ;
+ TEXT [ danish ] = "Tabeloverskrift" ;
+ TEXT [ french ] = "Titre de la table" ;
+ TEXT [ swedish ] = "Tabellöverskrift" ;
+ TEXT [ dutch ] = "Tabelkop" ;
+ TEXT [ spanish ] = "Encabezado de la tabla" ;
+ TEXT [ english_us ] = "Table heading" ;
+ TEXT[ chinese_simplified ] = "±í¸ñ±êÌâ";
+ TEXT[ russian ] = "Çàãîëîâîê òàáëèöû";
+ TEXT[ polish ] = "Nag³ówek tabeli";
+ TEXT[ japanese ] = "•\\‚ÌŒ©o‚µ";
+ TEXT[ chinese_traditional ] = "ªí®æ¼ÐÃD";
+ TEXT[ arabic ] = "ÚäæÇä ÇáÌÏæá";
+ TEXT[ dutch ] = "Tabelkop";
+ TEXT[ chinese_simplified ] = "±í¸ñ±êÌâ";
+ TEXT[ greek ] = "Åðéêåöáëßäá ðßíáêá";
+ TEXT[ korean ] = "Ç¥ Á¦¸ñ";
+ TEXT[ turkish ] = "Tablo baþlýðý";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_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[ dutch ] = "Vervangen";
+ TEXT[ chinese_simplified ] = "¸üÌæ";
+ TEXT[ greek ] = "ÁíôéêáôÜóôáóç";
+ TEXT[ korean ] = "¹Ù²Ù±â";
+ TEXT[ turkish ] = "Deðiþtir";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_INSERTSECTION
+{
+ TEXT = "Bereich einfügen" ;
+ TEXT [ English ] = "Section insert" ;
+ TEXT [ norwegian ] = "Sett inn område" ;
+ TEXT [ italian ] = "Inserisci area" ;
+ TEXT [ portuguese_brazilian ] = "Inserir seção" ;
+ TEXT [ portuguese ] = "Inserir secção" ;
+ TEXT [ finnish ] = "Lisää osa" ;
+ TEXT [ danish ] = "Indsæt område" ;
+ TEXT [ french ] = "Insérer une section" ;
+ TEXT [ swedish ] = "Infoga område" ;
+ TEXT [ dutch ] = "Bereik invoegen" ;
+ TEXT [ spanish ] = "Insertar área" ;
+ TEXT [ english_us ] = "Insert section" ;
+ TEXT[ chinese_simplified ] = "²åÈëÇøÓò";
+ TEXT[ russian ] = "Âñòàâèòü îáëàñòü";
+ TEXT[ polish ] = "Wstaw sekcjê";
+ TEXT[ japanese ] = "—̈æ‚Ì‘}“ü";
+ TEXT[ chinese_traditional ] = "´¡¤J°Ï°ì";
+ TEXT[ arabic ] = "ÅÏÑÇÌ äØÇÞ";
+ TEXT[ dutch ] = "Bereik invoegen";
+ TEXT[ chinese_simplified ] = "²åÈëÇøÓò";
+ TEXT[ greek ] = "ÐñïóèÞêç ðåñéï÷Þò";
+ TEXT[ korean ] = "±¸¿ª »ðÀÔ";
+ TEXT[ turkish ] = "Bölüm ekle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DELETESECTION
+{
+ TEXT = "Bereich löschen" ;
+ TEXT [ English ] = "Section delete" ;
+ TEXT [ norwegian ] = "Slett område" ;
+ TEXT [ italian ] = "Elimina area" ;
+ TEXT [ portuguese_brazilian ] = "Apagar seção" ;
+ TEXT [ portuguese ] = "Eliminar categoria" ;
+ TEXT [ finnish ] = "Poista osa" ;
+ TEXT [ danish ] = "Slet område" ;
+ TEXT [ french ] = "Supprimer la section" ;
+ TEXT [ swedish ] = "Radera kategori" ;
+ TEXT [ dutch ] = "Bereik wissen" ;
+ TEXT [ spanish ] = "Eliminar área" ;
+ TEXT [ english_us ] = "Delete section" ;
+ TEXT[ chinese_simplified ] = "ɾ³ýÇøÓò";
+ TEXT[ russian ] = "Óäàëèòü êàòåãîðèþ";
+ TEXT[ polish ] = "Usuñ obszar";
+ TEXT[ japanese ] = "—̈æ‚Ìíœ";
+ TEXT[ chinese_traditional ] = "§R°£°Ï°ì";
+ TEXT[ arabic ] = "ÍÐÝ ÇáÝÆÉ";
+ TEXT[ dutch ] = "Bereik wissen";
+ TEXT[ chinese_simplified ] = "ɾ³ýÇøÓò";
+ TEXT[ greek ] = "ÄéáãñáöÞ êáôçãïñßáò";
+ TEXT[ korean ] = "ºÐ·ùÇ׸ñ »èÁ¦";
+ TEXT[ turkish ] = "Bölümü sil";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_CHANGESECTION
+{
+ TEXT = "Bereich ändern" ;
+ TEXT [ English ] = "Section change" ;
+ TEXT [ norwegian ] = "Endre område" ;
+ TEXT [ italian ] = "Cambia area" ;
+ TEXT [ portuguese_brazilian ] = "Mudar seção" ;
+ TEXT [ portuguese ] = "Alterar secção" ;
+ TEXT [ finnish ] = "Vaihda osa" ;
+ TEXT [ danish ] = "Modificer område" ;
+ TEXT [ french ] = "Modifier section" ;
+ TEXT [ swedish ] = "Ändra område" ;
+ TEXT [ dutch ] = "Bereik wijzigen" ;
+ TEXT [ spanish ] = "Modificar área" ;
+ TEXT [ english_us ] = "Modify section" ;
+ TEXT[ chinese_simplified ] = "¸ü¸ÄÇøÓò";
+ TEXT[ russian ] = "Èçìåíèòü îáëàñòü";
+ TEXT[ polish ] = "Zmodyfikuj sekcjê";
+ TEXT[ japanese ] = "¾¸¼®Ý‚Ì•ÏX";
+ TEXT[ chinese_traditional ] = "Åܧó°Ï°ì";
+ TEXT[ arabic ] = "ÊÚÏíá ÇáäØÇÞ";
+ TEXT[ dutch ] = "Bereik wijzigen";
+ TEXT[ chinese_simplified ] = "¸ü¸ÄÇøÓò";
+ TEXT[ greek ] = "Ôñïðïðïßçóç ðåñéï÷Þò";
+ TEXT[ korean ] = "±¸¿ª ¼öÁ¤";
+ TEXT[ turkish ] = "Bölümü deðiþtir";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_CHANGESECTPASSWD
+{
+ TEXT = "Passwortschutz ändern" ;
+ TEXT [ English ] = "password protected change" ;
+ Text [ english_us ] = "Change password protection" ;
+ Text [ italian ] = "Cambia protezione password" ;
+ Text [ spanish ] = "Modificar contraseña" ;
+ Text [ french ] = "Modification du mot de passe" ;
+ Text [ dutch ] = "Wachtwoordbeveiliging wijzigen" ;
+ Text [ swedish ] = "Ändra lösenordsskydd" ;
+ Text [ danish ] = "Modificer adgangskodebeskyttelse" ;
+ Text [ portuguese ] = "Alterar protecção da senha" ;
+ Text [ portuguese_brazilian ] = "Paßwortschutz ändern" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä±£»¤¿ÚÁî";
+ Text[ russian ] = "Èçìåíèòü çàùèòó ïàðîëåì";
+ Text[ polish ] = "Zmieñ ochronê has³a";
+ Text[ japanese ] = "Ê߽ܰÄÞ•ÛŒì‚Ì•ÏX";
+ Text[ chinese_traditional ] = "Åܧó«OÅ@±K½X";
+ Text[ arabic ] = "ÊÛííÑ ÍãÇíÉ ßáãÉ ÇáÓÑ";
+ Text[ dutch ] = "Wachtwoordbeveiliging wijzigen";
+ Text[ chinese_simplified ] = "¸ü¸Ä±£»¤¿ÚÁî";
+ Text[ greek ] = "ÁëëáãÞ ðñïóôáóßáò êùäéêïý ðñüóâáóçò";
+ Text[ korean ] = "Æнº¿öµå º¸È£ º¯°æ";
+ Text[ turkish ] = "Þifre korumasýný deðiþtir";
+ Text[ language_user1 ] = " ";
+};
+String STR_CHANGEDEFATTR
+{
+ TEXT = "Standardwerte ändern" ;
+ TEXT [ English ] = "Defaults change" ;
+ TEXT [ norwegian ] = "Endre standard" ;
+ TEXT [ italian ] = "Cambia valori predefiniti" ;
+ TEXT [ portuguese_brazilian ] = "Mudar padrões" ;
+ TEXT [ portuguese ] = "Alterar valores padrão" ;
+ TEXT [ finnish ] = "Muuta oletuksia" ;
+ TEXT [ danish ] = "Modificer standardværdier" ;
+ TEXT [ french ] = "Changement des valeurs standard" ;
+ TEXT [ swedish ] = "Ändra de standardvärdena" ;
+ TEXT [ dutch ] = "Standaardwaarden wijzigen" ;
+ TEXT [ spanish ] = "Modificar valores estándar" ;
+ TEXT [ english_us ] = "Modify default values" ;
+ TEXT[ chinese_simplified ] = "¸ü¸Ä±ê×¼Öµ";
+ TEXT[ russian ] = "Èçìåíèòü ñòàíäàðòíûå çíà÷åíèÿ";
+ TEXT[ polish ] = "Zmieñ wartoœci domyœlne";
+ TEXT[ japanese ] = "•W€’l‚Ì•ÏX";
+ TEXT[ chinese_traditional ] = "Åܧó¼Ð·Ç­È";
+ TEXT[ arabic ] = "ÊÚÏíá ÇáÞíã ÇáÇÝÊÑÇÖíÉ";
+ TEXT[ dutch ] = "Standaardwaarden wijzigen";
+ TEXT[ chinese_simplified ] = "¸ü¸Ä±ê×¼Öµ";
+ TEXT[ greek ] = "Ôñïðïðïßçóç ðñïåðéëåãìÝíùí ôéìþí";
+ TEXT[ korean ] = "±âº»°ª ¼öÁ¤";
+ TEXT[ turkish ] = "Standart deðerleri deðiþtir";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_OUTLINE_LR
+{
+ TEXT = "Gliederung stufen" ;
+ TEXT [ English ] = "Outline promote" ;
+ TEXT [ norwegian ] = "Framhev Omriss" ;
+ TEXT [ italian ] = "Graduare struttura" ;
+ TEXT [ portuguese_brazilian ] = "Promover vazado" ;
+ TEXT [ portuguese ] = "Subir esquema" ;
+ TEXT [ finnish ] = "Korota jäsennys" ;
+ TEXT [ danish ] = "Inddel disposition" ;
+ TEXT [ french ] = "Échelonner la structure" ;
+ TEXT [ swedish ] = "Höja dispositionsnivån" ;
+ TEXT [ dutch ] = "Overzichtsniveaus bepalen" ;
+ TEXT [ spanish ] = "Escalonar Esquema" ;
+ TEXT [ english_us ] = "Promote Outline" ;
+ TEXT[ chinese_simplified ] = "·Ö¼¶´ó¸Ù";
+ TEXT[ russian ] = "Óðîâíè ñòðóêòóðû";
+ TEXT[ polish ] = "Poziomy konspektu";
+ TEXT[ japanese ] = "±³Äײ݂ÌÚÍÞÙ";
+ TEXT[ chinese_traditional ] = "¤À¯Å¤jºõ";
+ TEXT[ arabic ] = "ÊÏÑíÌ ÇáÊÞÓíã";
+ TEXT[ dutch ] = "Overzichtsniveaus bepalen";
+ TEXT[ chinese_simplified ] = "·Ö¼¶´ó¸Ù";
+ TEXT[ greek ] = "ÄéÜñèñùóç ìå åóï÷Ýò";
+ TEXT[ korean ] = "°³¿ä ¼öÁØ ¿Ã¸®±â";
+ TEXT[ turkish ] = "Anahatý deðiþtir";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_OUTLINE_UD
+{
+ TEXT = "Gliederung verschieben" ;
+ TEXT [ English ] = "Outline move" ;
+ TEXT [ norwegian ] = "Flytt omriss" ;
+ TEXT [ italian ] = "Sposta struttura" ;
+ TEXT [ portuguese_brazilian ] = "Mover vazado" ;
+ TEXT [ portuguese ] = "Mover esquema" ;
+ TEXT [ finnish ] = "Siirrä jäsennys" ;
+ TEXT [ danish ] = "Flyt disposition" ;
+ TEXT [ french ] = "Déplacer le plan" ;
+ TEXT [ swedish ] = "Flytta disposition" ;
+ TEXT [ dutch ] = "Overzicht verplaatsen" ;
+ TEXT [ spanish ] = "Desplazar esquema" ;
+ TEXT [ english_us ] = "Move outline" ;
+ TEXT[ chinese_simplified ] = "Òƶ¯´ó¸Ù";
+ TEXT[ russian ] = "Ïåðåìåñòèòü ñòðóêòóðó";
+ TEXT[ polish ] = "Przesuñ konspekt";
+ TEXT[ japanese ] = "±³Äײ݂̈ړ®";
+ TEXT[ chinese_traditional ] = "²¾°Ê¤jºõ";
+ TEXT[ arabic ] = "äÞá ÇáÊÞÓíã";
+ TEXT[ dutch ] = "Overzicht verplaatsen";
+ TEXT[ chinese_simplified ] = "Òƶ¯´ó¸Ù";
+ TEXT[ greek ] = "Ìåôáêßíçóç äéÜñèñùóçò";
+ TEXT[ korean ] = "°³¿ä À̵¿";
+ TEXT[ turkish ] = "Anahatý taþý";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_INSNUM
+{
+ TEXT = "Nummerierung einfügen" ;
+ TEXT [ English ] = "Numbering insert" ;
+ TEXT [ norwegian ] = "Sett inn nummerering" ;
+ TEXT [ italian ] = "Inserisci numerazione" ;
+ TEXT [ portuguese_brazilian ] = "Inserir Numeração" ;
+ TEXT [ portuguese ] = "Inserir numeração" ;
+ TEXT [ finnish ] = "Lisää numerointi" ;
+ TEXT [ danish ] = "Indsæt nummerering" ;
+ TEXT [ french ] = "Insérer une numérotation" ;
+ TEXT [ swedish ] = "Infoga numrering" ;
+ TEXT [ dutch ] = "Nummering invoegen" ;
+ TEXT [ spanish ] = "Insertar numeración" ;
+ TEXT [ english_us ] = "Insert numbering" ;
+ TEXT[ chinese_simplified ] = "²åÈë±àºÅ";
+ TEXT[ russian ] = "Âñòàâèòü íóìåðàöèþ";
+ TEXT[ polish ] = "Wstaw numeracjê";
+ TEXT[ japanese ] = "”Ô†•t‚¯‚Ì‘}“ü";
+ TEXT[ chinese_traditional ] = "´¡¤J½s¸¹";
+ TEXT[ arabic ] = "ÅÏÑÇÌ ÊÑÞíã";
+ TEXT[ dutch ] = "Nummering invoegen";
+ TEXT[ chinese_simplified ] = "²åÈë±àºÅ";
+ TEXT[ greek ] = "ÐñïóèÞêç áñßèìçóçò";
+ TEXT[ korean ] = "¹øÈ£ »ðÀÔ";
+ TEXT[ turkish ] = "Numaralama ekle";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_NUMUPDOWN
+{
+ TEXT = "Nummerierung stufen" ;
+ TEXT [ English ] = "Numbering promote" ;
+ TEXT [ norwegian ] = "Framhev Nummerering" ;
+ TEXT [ italian ] = "Sposta numerazione" ;
+ TEXT [ portuguese_brazilian ] = "Mover Numeração" ;
+ TEXT [ portuguese ] = "Escalonar numeração" ;
+ TEXT [ finnish ] = "Korota numerointi" ;
+ TEXT [ danish ] = "Inddel nummerering" ;
+ TEXT [ french ] = "Échelonner la numérotation" ;
+ TEXT [ swedish ] = "Flernivånumrering" ;
+ TEXT [ dutch ] = "Nummering indelen" ;
+ TEXT [ spanish ] = "Graduar numeración" ;
+ TEXT [ english_us ] = "Shift numbering" ;
+ TEXT[ chinese_simplified ] = "·Ö¼¶±àºÅ";
+ TEXT[ russian ] = "Óðîâíè íóìåðàöèè";
+ TEXT[ polish ] = "Poziomy numeracji";
+ TEXT[ japanese ] = "”Ô†•t‚¯‚Ì’iŠK•t‚¯";
+ TEXT[ language_user1 ] = " ";
+ TEXT[ chinese_traditional ] = "¤À¯Å½s¸¹";
+ TEXT[ arabic ] = "ÊÏÑíÌ ÇáÊÑÞíã";
+ TEXT[ dutch ] = "Nummering indelen";
+ TEXT[ chinese_simplified ] = "·Ö¼¶±àºÅ";
+ TEXT[ greek ] = "Áñßèìçóç ìå åóï÷Ýò";
+ TEXT[ korean ] = "¹øÈ£ ¹Ð±â";
+ TEXT[ turkish ] = "Numaralamayý deðiþtir";
+};
+String STR_MOVENUM
+{
+ TEXT = "Absätze verschieben" ;
+ TEXT [ English ] = "Paragraph move" ;
+ Text [ portuguese ] = "Mover parágrafos" ;
+ Text [ english_us ] = "Move paragraphs" ;
+ Text [ portuguese_brazilian ] = "Promover Numeração" ;
+ Text [ swedish ] = "Flytta stycken" ;
+ Text [ danish ] = "Flyt afsnit" ;
+ Text [ italian ] = "Sposta paragrafi" ;
+ Text [ spanish ] = "Desplazar párrafos" ;
+ Text [ french ] = "Déplacer paragraphes" ;
+ Text [ dutch ] = "Alinea´s verplaatsen" ;
+ Text[ chinese_simplified ] = "Òƶ¯¶ÎÂä";
+ Text[ russian ] = "Ïåðåìåñòèòü àáçàöû";
+ Text[ polish ] = "Przesuñ akapity";
+ Text[ japanese ] = "’i—Ž‚̈ړ®";
+ Text[ chinese_traditional ] = "²¾°Ê¬q¸¨";
+ Text[ arabic ] = "ÅÒÇÍÉ ÇáÝÞÑÇÊ";
+ Text[ dutch ] = "Alinea´s verplaatsen";
+ Text[ chinese_simplified ] = "Òƶ¯¶ÎÂä";
+ Text[ greek ] = "ÌåôáöïñÜ ðáñáãñÜöùí";
+ Text[ korean ] = "´Ü¶ô À̵¿";
+ Text[ turkish ] = "Paragraflarý taþý";
+ Text[ language_user1 ] = " ";
+};
+String STR_INSERTDRAW
+{
+ TEXT = "Zeichenobjekt einfügen" ;
+ TEXT [ English ] = "Insert draw object" ;
+ Text [ dutch ] = "Tekenobject invoegen" ;
+ Text [ english_us ] = "Insert Draw Object" ;
+ Text [ italian ] = "Inserisci oggetti di disegno" ;
+ Text [ spanish ] = "Insertar objeto de dibujo" ;
+ Text [ french ] = "Insérer un objet de dessin" ;
+ Text [ swedish ] = "Infoga ritobjekt" ;
+ Text [ danish ] = "Indsæt tegneobjekt" ;
+ Text [ portuguese ] = "Inserir objecto de desenho" ;
+ Text [ portuguese_brazilian ] = "Zeichenobjekt einfügen" ;
+ Text[ chinese_simplified ] = "²åÈë»æͼ¶ÔÏó";
+ Text[ russian ] = "Âñòàâèòü ãðàôè÷åñêèé îáúåêò";
+ Text[ polish ] = "Wstaw obiekty rysunkowe";
+ Text[ japanese ] = "•`‰æµÌÞ¼Þª¸Ä‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤Jø¹Ïª«¥ó";
+ Text[ arabic ] = "ÅÏÑÇÌ ßÇÆä ÑÓæãí";
+ Text[ dutch ] = "Tekenobject invoegen";
+ Text[ chinese_simplified ] = "²åÈë»æͼ¶ÔÏó";
+ Text[ greek ] = "ÐñïóèÞêç áíôéêåéìÝíïõ ó÷åäßáóçò";
+ Text[ korean ] = "±×¸®±â °³Ã¼ »ðÀÔ";
+ Text[ turkish ] = "Çizim nesnesi ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_NUMORNONUM
+{
+ TEXT = "Nummer an/aus" ;
+ TEXT [ English ] = "Number on/off" ;
+ Text [ english_us ] = "Number On/Off" ;
+ Text [ italian ] = "Numero on/off" ;
+ Text [ spanish ] = "Número activado/desactivado" ;
+ Text [ french ] = "Numéro act./désact." ;
+ Text [ dutch ] = "Nummer aan/uit" ;
+ Text [ swedish ] = "Nummer på/av" ;
+ Text [ danish ] = "Aktiver/deaktiver nummer" ;
+ Text [ portuguese ] = "Número activado/des." ;
+ Text [ portuguese_brazilian ] = "Nummer an/aus" ;
+ Text[ chinese_simplified ] = "ÏÔʾ/ÒþÈë±àºÅ";
+ Text[ russian ] = "Âêë./Îòêë. íîìåðà";
+ Text[ polish ] = "W³¹cz/Wy³¹cz numer";
+ Text[ japanese ] = "”Ô† µÝ/µÌ";
+ Text[ chinese_traditional ] = "Åã¥Ü/Áô¤J½s¸¹";
+ Text[ arabic ] = "ÅÙåÇÑ/ÅÎÝÇÁ ÇáÑÞã";
+ Text[ dutch ] = "Nummer aan/uit";
+ Text[ chinese_simplified ] = "ÏÔʾ/ÒþÈë±àºÅ";
+ Text[ greek ] = "Áñéèìüò Íáé/¼÷é";
+ Text[ korean ] = "¹øÈ£ ÀÛµ¿/ÇØÁ¦";
+ Text[ turkish ] = "Numara açýk/kapalý";
+ Text[ language_user1 ] = " ";
+};
+String STR_INC_LEFTMARGIN
+{
+ TEXT = "Einzug vergrößern" ;
+ TEXT [ English ] = "Increase Indent" ;
+ Text [ dutch ] = "Inspringing vergroten" ;
+ Text [ english_us ] = "Increase Indent" ;
+ Text [ swedish ] = "Öka indrag" ;
+ Text [ danish ] = "Forstør indrykning" ;
+ Text [ italian ] = "Aumenta rientro" ;
+ Text [ spanish ] = "Aumentar sangría" ;
+ Text [ french ] = "Augmenter le retrait" ;
+ Text [ portuguese ] = "Aumentar avanço" ;
+ Text [ portuguese_brazilian ] = "Einzug vergrößern" ;
+ Text[ chinese_simplified ] = "Ôö´óËõ½ø";
+ Text[ russian ] = "Óâåëè÷èòü îòñòóï";
+ Text[ polish ] = "Zwiêksz wciêcie";
+ Text[ japanese ] = "²ÝÃÞÝÄ‚ÌŠÔŠu‚ÌŠg‘å";
+ Text[ chinese_traditional ] = "¼W¤jÁY±Æ";
+ Text[ arabic ] = "ÒíÇÏÉ ÇáÅÒÇÍÉ";
+ Text[ dutch ] = "Inspringing vergroten";
+ Text[ chinese_simplified ] = "Ôö´óËõ½ø";
+ Text[ greek ] = "Áýîçóç åóï÷Þò";
+ Text[ korean ] = "µé¿©¾²±â";
+ Text[ turkish ] = "Girintiyi büyüt";
+ Text[ language_user1 ] = " ";
+};
+String STR_DEC_LEFTMARGIN
+{
+ TEXT = "Einzug verringern" ;
+ TEXT [ English ] = "Decrease Indent" ;
+ Text [ dutch ] = "Inspringing verkleinen" ;
+ Text [ english_us ] = "Decrease indent" ;
+ Text [ swedish ] = "Minska indrag" ;
+ Text [ danish ] = "Formindsk indrykning" ;
+ Text [ italian ] = "Riduci rientro" ;
+ Text [ spanish ] = "Disminuir sangría" ;
+ Text [ french ] = "Diminuer le retrait" ;
+ Text [ portuguese ] = "Reduzir avanço de parágrafo" ;
+ Text [ portuguese_brazilian ] = "Einzug verringern" ;
+ Text[ chinese_simplified ] = "¼õÉÙËõ½ø";
+ Text[ russian ] = "Óìåíüøèòü îòñòóï";
+ Text[ polish ] = "Zmiejsz wciêcie";
+ Text[ japanese ] = "²ÝÃÞÝÄŠÔŠu‚Ìk¬";
+ Text[ chinese_traditional ] = "´î¤ÖÁY±Æ";
+ Text[ arabic ] = "ÅäÞÇÕ ÇáÅÒÇÍÉ";
+ Text[ dutch ] = "Inspringing verkleinen";
+ Text[ chinese_simplified ] = "¼õÉÙËõ½ø";
+ Text[ greek ] = "Ìåßùóç åóï÷Þò";
+ Text[ korean ] = "³»¾î¾²±â";
+ Text[ turkish ] = "Girintiyi küçült";
+ Text[ language_user1 ] = " ";
+};
+String STR_INSERTLABEL
+{
+ Text = "Beschriftung einfügen" ;
+ Text [ English ] = "Insert caption" ;
+ Text [ english_us ] = "Insert caption" ;
+ Text [ portuguese_brazilian ] = "Beschriftung einfügen" ;
+ Text [ swedish ] = "Infoga bildtext" ;
+ Text [ danish ] = "Indsæt billedtekst" ;
+ Text [ italian ] = "Inserisci dicitura" ;
+ Text [ spanish ] = "Insertar etiqueta" ;
+ Text [ french ] = "Insérer une légende" ;
+ Text [ dutch ] = "Bijschrift invoegen" ;
+ Text [ portuguese ] = "Inserir legenda" ;
+ Text[ chinese_simplified ] = "²åÈë±êÇ©";
+ Text[ russian ] = "Âñòàâèòü íàçâàíèå";
+ Text[ polish ] = "Wstaw legendê";
+ Text[ japanese ] = "×ÍÞÙ‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¼ÐÅÒ";
+ Text[ arabic ] = "ÅÏÑÇÌ ÊÓãíÉ ÊæÖíÍíÉ";
+ Text[ dutch ] = "Bijschrift invoegen";
+ Text[ chinese_simplified ] = "²åÈë±êÇ©";
+ Text[ greek ] = "ÐñïóèÞêç åðéãñáöÞò";
+ Text[ korean ] = "ĸ¼Ç »ðÀÔ";
+ Text[ turkish ] = "Etiket ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_SETNUMRULESTART
+{
+ Text = "Nummerierung neu starten" ;
+ Text [ English ] = "Start numbering" ;
+ Text [ portuguese ] = "Reiniciar numeração" ;
+ Text [ english_us ] = "Restart numbering" ;
+ Text [ portuguese_brazilian ] = "Numerierung neu starten" ;
+ Text [ swedish ] = "Starta numrering på nytt" ;
+ Text [ danish ] = "Genstart nummerering" ;
+ Text [ italian ] = "Riavvia la numerazione" ;
+ Text [ spanish ] = "Reiniciar numeración" ;
+ Text [ french ] = "Reprendre la numérotation" ;
+ Text [ dutch ] = "Nieuwe nummering" ;
+ Text[ chinese_simplified ] = "ÖØпªÊ¼±àºÅ";
+ Text[ russian ] = "Ïåðåçàïóñê íóìåðàöèè";
+ Text[ polish ] = "W³¹cz ponownie numeracjê";
+ Text[ japanese ] = "”Ô†•t‚¯‚ðV‚µ‚­ŠJŽn";
+ Text[ chinese_traditional ] = "­«·s½s¸¹";
+ Text[ arabic ] = "ÅÚÇÏÉ ÈÏÁ ÇáÊÑÞíã";
+ Text[ dutch ] = "Nieuwe nummering";
+ Text[ chinese_simplified ] = "ÖØпªÊ¼±àºÅ";
+ Text[ greek ] = "Åðáíåêêßíçóç áñßèìçóçò";
+ Text[ korean ] = "¹øÈ£ ´Ù½Ã ½ÃÀÛ";
+ Text[ turkish ] = "Numaralamayý yeniden baþlat";
+ Text[ language_user1 ] = " ";
+};
+String STR_CHANGEFTN
+{
+ Text = "Fußnote ändern" ;
+ Text [ English ] = "Change footnote" ;
+ Text [ portuguese ] = "Modificar nota de rodapé" ;
+ Text [ english_us ] = "Modify footnote" ;
+ Text [ portuguese_brazilian ] = "Fußnote ändern" ;
+ Text [ swedish ] = "Ändra fotnot" ;
+ Text [ danish ] = "Modificer fodnote" ;
+ Text [ italian ] = "Modifica nota a piè pagina" ;
+ Text [ spanish ] = "Modificar nota al pie" ;
+ Text [ french ] = "Modifier note de bas de page" ;
+ Text [ dutch ] = "Voetnoot wijzigingen" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä×¢½Å";
+ Text[ russian ] = "Èçìåíèòü ñíîñêó";
+ Text[ polish ] = "Zmodyfikuj przypis dolny";
+ Text[ japanese ] = "‹r’‚Ì•ÏX";
+ Text[ chinese_traditional ] = "Åܧóµù¸}";
+ Text[ arabic ] = "ÊÚÏíá ÇáÍÇÔíÉ ÇáÓÝáíÉ";
+ Text[ dutch ] = "Voetnoot wijzigingen";
+ Text[ chinese_simplified ] = "¸ü¸Ä×¢½Å";
+ Text[ greek ] = "Ôñïðïðïßçóç õðïóçìåßùóçò";
+ Text[ korean ] = "°¢ÁÖ ¼öÁ¤";
+ Text[ turkish ] = "Dipnotu deðiþtir";
+ Text[ language_user1 ] = " ";
+};
+String STR_REDLINE
+{
+ /* !! sollte NIE gebraucht/uebersetzt werden !! */
+ Text = "Redline" ;
+};
+String STR_ACCEPT_REDLINE
+{
+ Text = "Änderung akzeptieren" ;
+ Text [ English ] = "Accept redline" ;
+ Text [ english_us ] = "Accept changes" ;
+ Text [ portuguese_brazilian ] = "Änderung akzeptieren" ;
+ Text [ swedish ] = "Acceptera ändring" ;
+ Text [ danish ] = "Accepter ændring" ;
+ Text [ italian ] = "Accetta le modifiche" ;
+ Text [ spanish ] = "Aceptar modificación" ;
+ Text [ french ] = "Accepter la modification" ;
+ Text [ dutch ] = "Wijziging accepteren" ;
+ Text [ portuguese ] = "Aceitar modificações" ;
+ Text[ chinese_simplified ] = "½ÓÊܸü¸Ä";
+ Text[ russian ] = "Ïðèíÿòü èçìåíåíèÿ";
+ Text[ polish ] = "Zaakceptuj zmiany";
+ Text[ japanese ] = "•ÏX‚ðŽó‚¯“ü‚ê‚é";
+ Text[ chinese_traditional ] = "±µ¨üÅܧó";
+ Text[ arabic ] = "ÞÈæá ÇáÊÛííÑÇÊ";
+ Text[ dutch ] = "Wijziging accepteren";
+ Text[ chinese_simplified ] = "½ÓÊܸü¸Ä";
+ Text[ greek ] = "Áðïäï÷Þ áëëáãþí";
+ Text[ korean ] = "º¯°æ Àû¿ë";
+ Text[ turkish ] = "Deðiþiklikleri kaydet";
+ Text[ language_user1 ] = " ";
+};
+String STR_REJECT_REDLINE
+{
+ Text = "Änderung ablehnen" ;
+ Text [ English ] = "Reject redline" ;
+ Text [ portuguese ] = "Rejeitar alteração" ;
+ Text [ english_us ] = "Reject change" ;
+ Text [ portuguese_brazilian ] = "Änderung ablehnen" ;
+ Text [ swedish ] = "Ignorera ändring" ;
+ Text [ danish ] = "Forkast ændring" ;
+ Text [ italian ] = "Rifiuta modifica" ;
+ Text [ spanish ] = "Rechazar modificación" ;
+ Text [ french ] = "Rejeter la modification" ;
+ Text [ dutch ] = "Wijziging verwerpen" ;
+ Text[ chinese_simplified ] = "¾Ü¾ø¸ü¸Ä";
+ Text[ russian ] = "Îòêëîíèòü èçìåíåíèÿ";
+ Text[ polish ] = "Odrzuæ zmiany";
+ Text[ japanese ] = "•ÏX‚ðŽó‚¯“ü‚ê‚È‚¢";
+ Text[ chinese_traditional ] = "©Úµ´Åܧó";
+ Text[ arabic ] = "ÑÝÖ ÇáÊÛííÑ";
+ Text[ dutch ] = "Wijziging verwerpen";
+ Text[ chinese_simplified ] = "¾Ü¾ø¸ü¸Ä";
+ Text[ greek ] = "Áðüññéøç áëëáãþí";
+ Text[ korean ] = "º¯°æ °ÅºÎ";
+ Text[ turkish ] = "Deðiþikliði reddet";
+ Text[ language_user1 ] = " ";
+};
+String STR_SPLIT_TABLE
+{
+ Text = "Tabelle auftrennen" ;
+ Text [ English ] = "Split table" ;
+ Text [ portuguese ] = "Dividir tabela" ;
+ Text [ english_us ] = "Split Table" ;
+ Text [ portuguese_brazilian ] = "Tabelle teilen" ;
+ Text [ swedish ] = "Dela tabell" ;
+ Text [ danish ] = "Opdel tabel" ;
+ Text [ italian ] = "Dividi tabella" ;
+ Text [ spanish ] = "Dividir tabla" ;
+ Text [ french ] = "Scinder le tableau" ;
+ Text [ dutch ] = "Tabel splitsen" ;
+ Text[ chinese_simplified ] = "·Ö¸ô±í¸ñ";
+ Text[ russian ] = "Ðàçáèòü òàáëèöó";
+ Text[ polish ] = "Rozdziel tabelê";
+ Text[ japanese ] = "•\\‚Ì•ªŠ„";
+ Text[ chinese_traditional ] = "¤À¶}ªí®æ";
+ Text[ arabic ] = "ÝÕá ÇáÌÏæá";
+ Text[ dutch ] = "Tabel splitsen";
+ Text[ chinese_simplified ] = "·Ö¸ô±í¸ñ";
+ Text[ greek ] = "Äéáßñåóç ðßíáêá";
+ Text[ korean ] = "Ç¥ ³ª´©±â";
+ Text[ turkish ] = "Tabloyu böl";
+ Text[ language_user1 ] = " ";
+};
+String STR_DONTEXPAND
+{
+ Text = "Attribut stoppen" ;
+ Text [ English ] = "Stop attribute" ;
+ Text [ portuguese ] = "Parar atributo" ;
+ Text [ english_us ] = "Stop attribute" ;
+ Text [ portuguese_brazilian ] = "Attribut stoppen" ;
+ Text [ swedish ] = "Stoppa attribut" ;
+ Text [ danish ] = "Stop attribut" ;
+ Text [ italian ] = "Interrompi attributo" ;
+ Text [ spanish ] = "Detener atributo" ;
+ Text [ french ] = "Arrêter" ;
+ Text [ dutch ] = "Attribuut stoppen" ;
+ Text[ chinese_simplified ] = "Í£Ö¹ÏÔʾÊôÐÔ";
+ Text[ russian ] = "Îñòàíîâèòü àòðèáóò";
+ Text[ polish ] = "Zatrzymaj atrybuty";
+ Text[ japanese ] = "‘®«‚Ì’†Ž~";
+ Text[ chinese_traditional ] = "°±¤îÅã¥ÜÄÝ©Ê";
+ Text[ arabic ] = "æÞÝ ÇáÓãÇÊ";
+ Text[ dutch ] = "Attribuut stoppen";
+ Text[ chinese_simplified ] = "Í£Ö¹ÏÔʾÊôÐÔ";
+ Text[ greek ] = "ÄéáêïðÞ éäéüôçôáò";
+ Text[ korean ] = "¼Ó¼º ÁßÁö";
+ Text[ turkish ] = "Özniteliði durdur";
+ Text[ language_user1 ] = " ";
+};
+String STR_AUTOCORRECT
+{
+ Text = "AutoKorrektur" ;
+ Text [ English ] = "AutoCorrect" ;
+ Text [ portuguese ] = "AutoCorrecção" ;
+ Text [ english_us ] = "AutoCorrect" ;
+ Text [ portuguese_brazilian ] = "AutoKorrektur" ;
+ Text [ swedish ] = "AutoKorrigering" ;
+ Text [ danish ] = "AutoKorrektur" ;
+ Text [ italian ] = "Correzione automatica" ;
+ Text [ spanish ] = "AutoCorrección" ;
+ Text [ french ] = "AutoCorrection" ;
+ Text [ dutch ] = "AutoCorrectie" ;
+ Text[ chinese_simplified ] = "×Ô¶¯¸üÕý";
+ Text[ russian ] = "Àâòîçàìåíà";
+ Text[ polish ] = "Autokorekta";
+ Text[ japanese ] = "µ°ÄºÚ¸Ä";
+ Text[ chinese_traditional ] = "¦Û°Ê®Õ¥¿";
+ Text[ arabic ] = "ÊÕÍíÍ ÊáÞÇÆí";
+ Text[ dutch ] = "AutoCorrectie";
+ Text[ chinese_simplified ] = "×Ô¶¯¸üÕý";
+ Text[ greek ] = "ÁõôïÄéüñèùóç";
+ Text[ korean ] = "ÀÚµ¿ °íħ";
+ Text[ turkish ] = "Otomatik düzeltme";
+ Text[ language_user1 ] = " ";
+};
+String STR_MERGE_TABLE
+{
+ Text = "Tabelle verbinden" ;
+ Text [ English ] = "Merge table" ;
+ Text[ english_us ] = "Merge table";
+ Text[ portuguese ] = "Unir tabela";
+ Text[ russian ] = "Îáúåäèíèòü òàáëèöó";
+ Text[ dutch ] = "Tabel verbinden";
+ Text[ french ] = "Fusionner des tableaux";
+ Text[ spanish ] = "unir tablas";
+ Text[ italian ] = "Collega tabella";
+ Text[ danish ] = "Flet tabeller";
+ Text[ swedish ] = "Förbind tabeller";
+ Text[ polish ] = "Scal tabelê";
+ Text[ portuguese_brazilian ] = "Merge table";
+ Text[ japanese ] = "•\\‚ÌŒ‹‡";
+ Text[ chinese_simplified ] = "ºÏ²¢±í¸ñ";
+ Text[ chinese_traditional ] = "¦X¦}ªí®æ";
+ Text[ arabic ] = "æÕá ÇáÌÏæá";
+ Text[ dutch ] = "Tabel verbinden";
+ Text[ chinese_simplified ] = "ºÏ²¢±í¸ñ";
+ Text[ greek ] = "Óýíäåóç ðéíÜêùí";
+ Text[ korean ] = "Ç¥ º´ÇÕ";
+ Text[ turkish ] = "Tabloyu birleþtir";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_DELNUM
+{
+ TEXT = "Nummerierung löschen" ;
+ TEXT [ English ] = "Numbering delete" ;
+ TEXT [ norwegian ] = "Slett nummerering" ;
+ TEXT [ italian ] = "Elimina numerazione" ;
+ TEXT [ portuguese_brazilian ] = "Apagar Numeração" ;
+ TEXT [ portuguese ] = "Eliminar numeração" ;
+ TEXT [ finnish ] = "Poista numerointi" ;
+ TEXT [ danish ] = "Slet nummerering" ;
+ TEXT [ french ] = "Supprimer la numérotation" ;
+ TEXT [ swedish ] = "Radera numrering" ;
+ TEXT [ dutch ] = "Nummering wissen" ;
+ TEXT [ spanish ] = "Eliminar numeración" ;
+ TEXT [ english_us ] = "Delete numbering" ;
+ TEXT[ chinese_simplified ] = "ɾ³ý±àºÅ";
+ TEXT[ russian ] = "Óäàëèòü íóìåðàöèþ";
+ TEXT[ polish ] = "Usuñ numeracjê";
+ TEXT[ japanese ] = "”Ô†•t‚¯‚Ìíœ";
+ TEXT[ chinese_traditional ] = "§R°£½s¸¹";
+ TEXT[ arabic ] = "ÍÐÝ ÇáÊÑÞíã";
+ TEXT[ dutch ] = "Nummering wissen";
+ TEXT[ chinese_simplified ] = "ɾ³ý±àºÅ";
+ TEXT[ greek ] = "ÄéáãñáöÞ áñßèìçóçò";
+ TEXT[ korean ] = "¹øÈ£ Á¦°Å";
+ TEXT[ turkish ] = "Numaralamayý sil";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DRAWUNDO
+{
+ TEXT = "Zeichenobjekte" ;
+ TEXT [ English ] = "Drawobjects" ;
+ Text [ english_us ] = "Draw 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 rysunkowe";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "ø¹Ïª«¥ó";
+ Text[ arabic ] = "ßÇÆäÇÊ ÑÓæãíÉ";
+ Text[ dutch ] = "Tekenobjecten";
+ Text[ chinese_simplified ] = "»æͼ¶ÔÏó";
+ Text[ greek ] = "Áíôéêåßìåíá ó÷åäßáóçò";
+ Text[ korean ] = "±×¸®±â °³Ã¼";
+ Text[ turkish ] = "Çizim nesneleri";
+ Text[ language_user1 ] = " ";
+};
+String STR_DRAWGROUP
+{
+ TEXT = "Zeichenobjekte gruppieren" ;
+ TEXT [ English ] = "Group Drawobjects" ;
+ Text [ dutch ] = "Tekenobjecten groeperen" ;
+ Text [ english_us ] = "Group draw objects" ;
+ Text [ italian ] = "Raggruppa oggetti di disegno" ;
+ Text [ spanish ] = "Agrupar objetos de dibujo" ;
+ Text [ french ] = "Grouper des objets de dessin" ;
+ Text [ swedish ] = "Gruppera ritobjekt" ;
+ Text [ danish ] = "Grupper tegneobjekter" ;
+ Text [ portuguese ] = "Agrupar objectos de desenho" ;
+ Text [ portuguese_brazilian ] = "Zeichenobjekte gruppieren" ;
+ Text[ chinese_simplified ] = "·Ö×é»æͼ¶ÔÏó";
+ Text[ russian ] = "Ãðóïïèðîâàòü ãðàôè÷åñêèå îáúåêòû";
+ Text[ polish ] = "Grupuj obiekty rysunkowe";
+ Text[ japanese ] = "}Œ`•`‰æ‚ð¸ÞÙ°Ì߉»‚·‚é";
+ Text[ chinese_traditional ] = "ø¹Ïª«¥ó¸s²Õ";
+ Text[ arabic ] = "ÊÌãíÚ ßÇÆäÇÊ ÑÓæãíÉ";
+ Text[ dutch ] = "Tekenobjecten groeperen";
+ Text[ chinese_simplified ] = "·Ö×é»æͼ¶ÔÏó";
+ Text[ greek ] = "Ïìáäïðïßçóç áíôéêåéìÝíùí ó÷åäßáóçò";
+ Text[ korean ] = "±×¸®±â °³Ã¼ ±×·ì";
+ Text[ turkish ] = "Çizim nesnelerini grupla";
+ Text[ language_user1 ] = " ";
+};
+String STR_DRAWUNGROUP
+{
+ TEXT = "Gruppenobjekt auflösen" ;
+ TEXT [ English ] = "Ungroup Drawobjects" ;
+ Text [ english_us ] = "Ungroup drawing objects" ;
+ Text [ italian ] = "Sciogli gruppo oggetti" ;
+ Text [ spanish ] = "Resolver objeto de grupo" ;
+ Text [ french ] = "Dissocier objets de dessin" ;
+ Text [ dutch ] = "Groepsobject opheffen" ;
+ Text [ swedish ] = "Upplös gruppobjekt" ;
+ Text [ danish ] = "Ophæv gruppeobjekter" ;
+ Text [ portuguese ] = "Desagrupar objectos" ;
+ Text [ portuguese_brazilian ] = "Gruppenobjekt auflösen" ;
+ Text[ chinese_simplified ] = "È¡Ïû·Ö×é¶ÔÏó";
+ Text[ russian ] = "Ðàçãðóïïèðîâàòü ãðàôè÷åñêèé îáúåêò";
+ Text[ polish ] = "Rozgrupuj obiekty rysunkowe";
+ Text[ japanese ] = "¸ÞÙ°Ì߉»‚³‚ꂽµÌÞ¼Þ­¸Ä‚̉ðœ";
+ Text[ chinese_traditional ] = "¨ú®ø¸s²Õª«¥ó";
+ Text[ arabic ] = "Ýß ÊÌãíÚ ÇáßÇÆäÇÊ";
+ Text[ dutch ] = "Groepsobject opheffen";
+ Text[ chinese_simplified ] = "È¡Ïû·Ö×é¶ÔÏó";
+ Text[ greek ] = "ÊáôÜñãçóç ïìáäïðïßçóçò áíôéêåéìÝíùí";
+ Text[ korean ] = "±×¸®±â °³Ã¼ ±×·ìÇØÁ¦";
+ Text[ turkish ] = "Nesne grubunu çöz";
+ Text[ language_user1 ] = " ";
+};
+String STR_DRAWDELETE
+{
+ TEXT = "Zeichenobjekte löschen" ;
+ TEXT [ English ] = "Delete DrawObjects" ;
+ Text [ dutch ] = "Tekenobjecten wissen" ;
+ Text [ english_us ] = "Delete drawing objects" ;
+ Text [ italian ] = "Elimina oggetti di disegno" ;
+ Text [ spanish ] = "Eliminar objetos de dibujo" ;
+ Text [ french ] = "Supprimer des objets de dessin" ;
+ Text [ swedish ] = "Radera ritobjekt" ;
+ Text [ danish ] = "Slet tegneobjekter" ;
+ Text [ portuguese ] = "Eliminar objectos de desenho" ;
+ Text [ portuguese_brazilian ] = "Zeichenobjekte löschen" ;
+ Text[ chinese_simplified ] = "ɾ³ý»æͼ¶ÔÏó";
+ Text[ russian ] = "Óäàëèòü ãðàôè÷åñêèå îáúåêòû";
+ Text[ polish ] = "Usuñ obiekty rysunkowe";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸Ä‚ð‰ðœ";
+ Text[ chinese_traditional ] = "§R°£Ã¸¹Ïª«¥ó";
+ Text[ arabic ] = "ÍÐÝ ßÇÆäÇÊ ÑÓæãíÉ";
+ Text[ dutch ] = "Tekenobjecten wissen";
+ Text[ chinese_simplified ] = "ɾ³ý»æͼ¶ÔÏó";
+ Text[ greek ] = "ÄéáãñáöÞ áíôéêåéìÝíùí ó÷åäßáóçò";
+ Text[ korean ] = "±×¸®±â °³Ã¼ »èÁ¦";
+ Text[ turkish ] = "Çizim nesnelerini sil";
+ Text[ language_user1 ] = " ";
+};
+String STR_REREAD
+{
+ TEXT = "Grafik ersetzen" ;
+ TEXT [ English ] = "Replace Picture" ;
+ Text [ english_us ] = "Replace graphics" ;
+ Text [ italian ] = "Sostituisci l'immagine" ;
+ Text [ spanish ] = "Reemplazar imagen" ;
+ Text [ french ] = "Remplacer l'image" ;
+ Text [ dutch ] = "Afbeelding vervangen" ;
+ Text [ swedish ] = "Ersätt grafik" ;
+ Text [ danish ] = "Erstat grafik" ;
+ Text [ portuguese ] = "Substituir imagem" ;
+ Text [ portuguese_brazilian ] = "Grafik ersetzen" ;
+ Text[ chinese_simplified ] = "¸üÌæͼÐÎ";
+ Text[ russian ] = "Çàìåíèòü ãðàôèêó";
+ Text[ polish ] = "Zamieñ grafikê";
+ Text[ japanese ] = "¸Þ×̨¯¸‚Ì’uŠ·";
+ Text[ chinese_traditional ] = "¥N´À¹Ï¤ù";
+ Text[ arabic ] = "ÇÓÊÈÏÇá ÇáÑÓæãÇÊ";
+ Text[ dutch ] = "Afbeelding vervangen";
+ Text[ chinese_simplified ] = "¸üÌæͼÐÎ";
+ Text[ greek ] = "ÁíôéêáôÜóôáóç ãñáöéêþí";
+ Text[ korean ] = "±×·¡ÇÈ ¹Ù²Ù±â";
+ Text[ turkish ] = "Grafiði deðiþtirmek";
+ Text[ language_user1 ] = " ";
+};
+String STR_DELGRF
+{
+ TEXT = "Grafik löschen" ;
+ TEXT [ English ] = "Delete Picture" ;
+ Text [ dutch ] = "Afbeelding wissen" ;
+ Text [ english_us ] = "Delete graphics" ;
+ Text [ italian ] = "Elimina immagine" ;
+ Text [ spanish ] = "Eliminar imagen" ;
+ Text [ french ] = "Supprimer l'image" ;
+ Text [ swedish ] = "Radera grafik" ;
+ Text [ danish ] = "Slet billede" ;
+ Text [ portuguese ] = "Eliminar imagem" ;
+ Text [ portuguese_brazilian ] = "Grafik löschen" ;
+ Text[ chinese_simplified ] = "ɾ³ýͼÐÎ";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ grafikê";
+ Text[ japanese ] = "¸Þ×̨¯¸‚Ìíœ";
+ Text[ chinese_traditional ] = "§R°£¹Ï¤ù";
+ Text[ arabic ] = "ÍÐÝ ÕæÑÉ";
+ Text[ dutch ] = "Afbeelding wissen";
+ Text[ chinese_simplified ] = "ɾ³ýͼÐÎ";
+ Text[ greek ] = "ÄéáãñáöÞ ãñáöéêïý";
+ Text[ korean ] = "±×·¡ÇÈ »èÁ¦";
+ Text[ turkish ] = "Grafiði sil";
+ Text[ language_user1 ] = " ";
+};
+String STR_DELOLE
+{
+ TEXT = "Objekt löschen" ;
+ TEXT [ English ] = "Delete Object" ;
+ Text [ english_us ] = "Delete object" ;
+ Text [ italian ] = "Elimina oggetto" ;
+ Text [ spanish ] = "Eliminar objeto" ;
+ Text [ french ] = "Supprimer l'objet" ;
+ Text [ dutch ] = "Object wissen" ;
+ Text [ swedish ] = "Radera objekt" ;
+ Text [ danish ] = "Slet objekt" ;
+ Text [ portuguese ] = "Eliminar objecto" ;
+ Text [ portuguese_brazilian ] = "Objekt löschen" ;
+ Text[ chinese_simplified ] = "ɾ³ý¶ÔÏó";
+ Text[ russian ] = "Óäàëèòü îáúåêò";
+ Text[ polish ] = "Usuñ obiekt";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä‚Ìíœ";
+ Text[ chinese_traditional ] = "§R°£ª«¥ó";
+ Text[ arabic ] = "ÍÐÝ ßÇÆä";
+ Text[ dutch ] = "Object wissen";
+ Text[ chinese_simplified ] = "ɾ³ý¶ÔÏó";
+ Text[ greek ] = "ÄéáãñáöÞ áíôéêåéìÝíïõ";
+ Text[ korean ] = "°³Ã¼ »èÁ¦";
+ Text[ turkish ] = "Nesneyi sil";
+ Text[ language_user1 ] = " ";
+};
+String STR_TABLE_ATTR
+{
+ TEXT = "Tabellenattribute anwenden" ;
+ TEXT [ English ] = "Apply table attributes" ;
+ Text [ english_us ] = "Apply table attributes" ;
+ Text [ italian ] = "Utilizza gli attributi della tabella" ;
+ Text [ spanish ] = "Aplicar atributos de la tabla" ;
+ Text [ french ] = "Appliquer les attributs de tableau" ;
+ Text [ dutch ] = "Tabelattributen toepassen" ;
+ Text [ swedish ] = "Använd tabellattribut" ;
+ Text [ danish ] = "Anvend tabelattributter" ;
+ Text [ portuguese ] = "Aplicar atributos da tabela" ;
+ Text [ portuguese_brazilian ] = "Tabellenattribute anwenden" ;
+ Text[ chinese_simplified ] = "ʹÓñí¸ñÊôÐÔ";
+ Text[ russian ] = "Ïðèìåíèòü àòðèáóòû òàáëèöû";
+ Text[ polish ] = "Zastosuj atrybuty tabeli";
+ Text[ japanese ] = "•\\‚Ì‘®«‚Ì“K—p";
+ Text[ chinese_traditional ] = "¨Ï¥Îªí®æÄÝ©Ê";
+ Text[ arabic ] = "ÇÓÊÎÏÇã ÓãÇÊ ÇáÌÏæá";
+ Text[ dutch ] = "Tabelattributen toepassen";
+ Text[ chinese_simplified ] = "ʹÓñí¸ñÊôÐÔ";
+ Text[ greek ] = "ÅöáñìïãÞ éäéïôÞôùí ðßíáêá";
+ Text[ korean ] = "Ç¥ ¼Ó¼º Àû¿ë";
+ Text[ turkish ] = "Tablo özniteliklerini kullan";
+ Text[ language_user1 ] = " ";
+};
+String STR_TABLE_AUTOFMT
+{
+ TEXT = "Autoformat Tabelle" ;
+ TEXT [ English ] = "Autoformat Table" ;
+ Text [ english_us ] = "AutoFormat Table" ;
+ Text [ italian ] = "Formattazione automatica tabella" ;
+ Text [ spanish ] = "AutoFormato tabla" ;
+ Text [ french ] = "AutoFormat de tableau" ;
+ Text [ dutch ] = "AutoOpmaak tabel" ;
+ Text [ swedish ] = "AutoFormat Tabell" ;
+ Text [ danish ] = "AutoFormat tabel" ;
+ Text [ portuguese ] = "AutoFormato tabela" ;
+ Text [ portuguese_brazilian ] = "Autoformat Tabelle" ;
+ Text[ chinese_simplified ] = "×Ô¶¯¸ñʽ ±í¸ñ";
+ Text[ russian ] = "Àâòîôîðìàò òàáëèöû";
+ Text[ polish ] = "Autoformatowanie Tabela";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä •\\";
+ Text[ chinese_traditional ] = "¦Û°Ê®æ¦¡ ªí®æ";
+ Text[ arabic ] = "ÊäÓíÞ ÊáÞÇÆí ááÌÏæá";
+ Text[ dutch ] = "AutoOpmaak tabel";
+ Text[ chinese_simplified ] = "×Ô¶¯¸ñʽ ±í¸ñ";
+ Text[ greek ] = "ÁõôïÌïñöïðïßçóç ðßíáêá";
+ Text[ korean ] = "ÀÚµ¿ ¼­½Ä Ç¥";
+ Text[ turkish ] = "Otomatik formatlama Tablo";
+ Text[ language_user1 ] = " ";
+};
+String STR_TABLE_INSCOL
+{
+ Text = "Spalte einfügen" ;
+ Text [ ENGLISH ] = "Insert column" ;
+ Text [ norwegian ] = "Sett inn kolonne" ;
+ Text [ italian ] = "Inserisci colonna" ;
+ Text [ portuguese_brazilian ] = "Inserir coluna" ;
+ Text [ portuguese ] = "Inserir coluna" ;
+ Text [ finnish ] = "Lisää sarake" ;
+ Text [ danish ] = "Indsæt kolonne" ;
+ Text [ french ] = "Insérer une colonne" ;
+ Text [ swedish ] = "Infoga kolumn" ;
+ Text [ dutch ] = "Kolom invoegen" ;
+ Text [ spanish ] = "Insertar columna" ;
+ Text [ english_us ] = "Insert Column" ;
+ Text[ chinese_simplified ] = "²åÈëÁÐ";
+ Text[ russian ] = "Âñòàâèòü ñòîëáåö";
+ Text[ polish ] = "Wstaw kolumnê";
+ Text[ japanese ] = "—ñ‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤JÄæ";
+ Text[ arabic ] = "ÅÏÑÇÌ ÚãæÏ";
+ Text[ dutch ] = "Kolom invoegen";
+ Text[ chinese_simplified ] = "²åÈëÁÐ";
+ Text[ greek ] = "ÅéóáãùãÞ óôÞëçò";
+ Text[ korean ] = "¿­ »ðÀÔ";
+ Text[ turkish ] = "Sütunu ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_TABLE_INSROW
+{
+ Text = "Zeile einfügen" ;
+ Text [ ENGLISH ] = "Insert row" ;
+ Text [ norwegian ] = "Sett inn rad" ;
+ Text [ italian ] = "Inserisci riga" ;
+ Text [ portuguese_brazilian ] = "Inserir fileira" ;
+ Text [ portuguese ] = "Inserir linha" ;
+ Text [ finnish ] = "Lisää rivi" ;
+ Text [ danish ] = "Indsæt række" ;
+ Text [ french ] = "Insérer une ligne" ;
+ Text [ swedish ] = "Infoga rad" ;
+ Text [ dutch ] = "Rij invoegen" ;
+ Text [ spanish ] = "Insertar fila" ;
+ Text [ english_us ] = "Insert Row" ;
+ Text[ chinese_simplified ] = "²åÈëÐÐ";
+ Text[ russian ] = "Âñòàâèòü ñòðîêó";
+ Text[ polish ] = "Wstaw wiersz";
+ Text[ japanese ] = "s‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¦æ";
+ Text[ arabic ] = "ÅÏÑÇÌ ÕÝ";
+ Text[ dutch ] = "Rij invoegen";
+ Text[ chinese_simplified ] = "²åÈëÐÐ";
+ Text[ greek ] = "ÅéóáãùãÞ ãñáììÞò";
+ Text[ korean ] = "Çà »ðÀÔ";
+ Text[ turkish ] = "Satýr ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_TABLE_DELBOX
+{
+ Text = "Zeile/Spalte löschen" ;
+ Text [ ENGLISH ] = "Delete row/column" ;
+ Text [ norwegian ] = "Slett rad/kolonne" ;
+ Text [ italian ] = "Elimina riga/colonna" ;
+ Text [ portuguese_brazilian ] = "Apagar fileira/coluna" ;
+ Text [ portuguese ] = "Eliminar linha/coluna" ;
+ Text [ finnish ] = "Poista rivi/sarake" ;
+ Text [ danish ] = "Slet række/kolonne" ;
+ Text [ french ] = "Supprimer la ligne/colonne" ;
+ Text [ swedish ] = "Radera rad/kolumn" ;
+ Text [ dutch ] = "Rij/Kolom wissen" ;
+ Text [ spanish ] = "Eliminar fila/columna" ;
+ Text [ english_us ] = "Delete row/column" ;
+ Text[ chinese_simplified ] = "ɾ³ýÐÐ/ÁÐ";
+ Text[ russian ] = "Óäàëèòü ñòðîêó/ñòîëáåö";
+ Text[ polish ] = "Usuñ wiersz/kolumnê";
+ Text[ japanese ] = "s/—ñ‚Ìíœ";
+ Text[ chinese_traditional ] = "§R°£¦C/Äæ";
+ Text[ arabic ] = "ÍÐÝ ÕÝ/ÚãæÏ";
+ Text[ dutch ] = "Rij/Kolom wissen";
+ Text[ chinese_simplified ] = "ɾ³ýÐÐ/ÁÐ";
+ Text[ greek ] = "ÄéáãñáöÞ ãñáììÞò/óôÞëçò";
+ Text[ korean ] = "Çà/¿­ »èÁ¦";
+ Text[ turkish ] = "Satýrý/sütunu sil";
+ Text[ language_user1 ] = " ";
+};
+String STR_TABLE_SPLIT
+{
+ Text = "Zellen teilen" ;
+ Text [ ENGLISH ] = "Split cells" ;
+ Text [ norwegian ] = "Del celler" ;
+ Text [ italian ] = "Dividi celle" ;
+ Text [ portuguese_brazilian ] = "Partir células" ;
+ Text [ portuguese ] = "Dividir células" ;
+ Text [ finnish ] = "Jaa solut" ;
+ Text [ danish ] = "Opdel celler" ;
+ Text [ french ] = "Scinder les cellules" ;
+ Text [ swedish ] = "Dela celler" ;
+ Text [ dutch ] = "Cellen splitsen" ;
+ Text [ spanish ] = "Dividir celdas" ;
+ Text [ english_us ] = "Split Cells" ;
+ Text[ chinese_simplified ] = "·Ö¸ôµ¥Ôª¸ñ";
+ Text[ russian ] = "Ðàçáèòü ÿ÷åéêè";
+ Text[ polish ] = "Podziel komórki";
+ Text[ japanese ] = "¾Ù‚Ì•ªŠ„";
+ Text[ chinese_traditional ] = "¤À¶}Àx¦s®æ";
+ Text[ arabic ] = "ÊÞÓíã ÇáÎáÇíÇ";
+ Text[ dutch ] = "Cellen splitsen";
+ Text[ chinese_simplified ] = "·Ö¸ôµ¥Ôª¸ñ";
+ Text[ greek ] = "Äéáßñåóç êåëéþí";
+ Text[ korean ] = "¼¿ ³ª´©±â";
+ Text[ turkish ] = "Hücreyi ayýr";
+ Text[ language_user1 ] = " ";
+};
+String STR_TABLE_MERGE
+{
+ Text = "Zelle verbinden" ;
+ Text [ ENGLISH ] = "Merge cell" ;
+ Text [ english_us ] = "Merge Cells" ;
+ Text [ italian ] = "Collega celle" ;
+ Text [ spanish ] = "Unir celdas" ;
+ Text [ french ] = "Fusionner la cellule" ;
+ Text [ dutch ] = "Cel koppelen" ;
+ Text [ swedish ] = "Förbind cell" ;
+ Text [ danish ] = "Flet celler" ;
+ Text [ portuguese ] = "Unir células" ;
+ Text [ portuguese_brazilian ] = "Zelle verbinden" ;
+ Text[ chinese_simplified ] = "ºÏ²¢µ¥Ôª¸ñ";
+ Text[ russian ] = "Îáúåäèíèòü ÿ÷åéêè";
+ Text[ polish ] = "Scal komórki";
+ Text[ japanese ] = "¾Ù‚ÌŒ‹‡";
+ Text[ chinese_traditional ] = "¦X¦}Àx¦s®æ";
+ Text[ arabic ] = "æÕá ÇáÎáíÉ";
+ Text[ dutch ] = "Cel koppelen";
+ Text[ chinese_simplified ] = "ºÏ²¢µ¥Ôª¸ñ";
+ Text[ greek ] = "¸íùóç êåëéþí";
+ Text[ korean ] = "¼¿ º´ÇÕ";
+ Text[ turkish ] = "Hücreyi birleþtir";
+ Text[ language_user1 ] = " ";
+};
+String STR_TABLE_NUMFORMAT
+{
+ Text = "Zelle formatieren" ;
+ Text [ ENGLISH ] = "Format cell" ;
+ Text [ portuguese ] = "Formatar célula" ;
+ Text [ english_us ] = "Format cell" ;
+ Text [ portuguese_brazilian ] = "Zelle formatieren" ;
+ Text [ swedish ] = "Formatera cell" ;
+ Text [ danish ] = "Formater celler" ;
+ Text [ italian ] = "Formatta cella" ;
+ Text [ spanish ] = "Formatear celda" ;
+ Text [ french ] = "Format de cellules" ;
+ Text [ dutch ] = "Cel opmaken" ;
+ Text[ chinese_simplified ] = "¸ñʽ»¯µ¥Ôª¸ñ";
+ Text[ russian ] = "Ôîðìàò ÿ÷ååê";
+ Text[ polish ] = "Formatuj komórkê";
+ Text[ japanese ] = "¾Ù‚Ì‘Ž®Ý’è";
+ Text[ chinese_traditional ] = "®æ¦¡¤ÆÀx¦s®æ";
+ Text[ arabic ] = "ÊäÓíÞ ÇáÎáíÉ";
+ Text[ dutch ] = "Cel opmaken";
+ Text[ chinese_simplified ] = "¸ñʽ»¯µ¥Ôª¸ñ";
+ Text[ greek ] = "Ìïñöïðïßçóç êåëéïý";
+ Text[ korean ] = "¼¿ ¼­½Ä";
+ Text[ turkish ] = "Hücreyi formatla";
+ Text[ language_user1 ] = " ";
+};
+String STR_INSERT_TOX
+{
+ Text = "Einfügen Verzeichnis" ;
+ Text [ ENGLISH ] = "Insert index" ;
+ Text [ portuguese ] = "Inserir índice" ;
+ Text [ english_us ] = "Insert index" ;
+ Text [ portuguese_brazilian ] = "Einfügen Verzeichnis" ;
+ Text [ swedish ] = "Infoga förteckning" ;
+ Text [ danish ] = "Indsæt indeks" ;
+ Text [ italian ] = "Inserisci indice" ;
+ Text [ spanish ] = "Insertar índice" ;
+ Text [ french ] = "Insérer un index" ;
+ Text [ dutch ] = "Index invoegen" ;
+ Text[ chinese_simplified ] = "²åÈëË÷Òý";
+ Text[ russian ] = "Âñòàâèòü óêàçàòåëü";
+ Text[ polish ] = "Wstaw indeks";
+ Text[ japanese ] = "õˆø‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¥Ø¿ý";
+ Text[ arabic ] = "ÅÏÑÇÌ ÝåÑÓ";
+ Text[ dutch ] = "Index invoegen";
+ Text[ chinese_simplified ] = "²åÈëË÷Òý";
+ Text[ greek ] = "ÅéóáãùãÞ åõñåôçñßïõ";
+ Text[ korean ] = "»öÀÎ »ðÀÔ";
+ Text[ turkish ] = "Dizin ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_CLEAR_TOX_RANGE
+{
+ Text = "Verzeichnis aufheben" ;
+ Text [ ENGLISH ] = "Dismiss index" ;
+ Text [ portuguese ] = "Remover índice" ;
+ Text [ english_us ] = "Remove index" ;
+ Text [ portuguese_brazilian ] = "Verzeichnis aufheben" ;
+ Text [ swedish ] = "Upphäv förteckning" ;
+ Text [ danish ] = "Ophæv indeks" ;
+ Text [ italian ] = "Rimuovi indice" ;
+ Text [ spanish ] = "Eliminar directorio" ;
+ Text [ french ] = "Supprimer l'index" ;
+ Text [ dutch ] = "Index verwijderen" ;
+ Text[ chinese_simplified ] = "È¡ÏûË÷Òý";
+ Text[ russian ] = "Óáðàòü óêàçàòåëü";
+ Text[ polish ] = "Usuñ indeks";
+ Text[ japanese ] = "õˆø‚̉ðœ";
+ Text[ chinese_traditional ] = "¨ú®ø¥Ø¿ý";
+ Text[ arabic ] = "ÅÒÇáÉ ÇáÝåÑÓ";
+ Text[ dutch ] = "Index verwijderen";
+ Text[ chinese_simplified ] = "È¡ÏûË÷Òý";
+ Text[ greek ] = "ÊáôÜñãçóç åõñåôçñßïõ";
+ Text[ korean ] = "»öÀÎ Á¦°Å";
+ Text[ turkish ] = "Dizini kaldýr";
+ Text[ language_user1 ] = " ";
+};
+String STR_TABLE_TBLCPYTBL
+{
+ Text = "Tabelle kopieren" ;
+ Text [ ENGLISH ] = "Copy table" ;
+ Text [ portuguese ] = "Copiar tabela" ;
+ Text [ english_us ] = "Copy table" ;
+ Text [ portuguese_brazilian ] = "Tabelle kopieren" ;
+ Text [ swedish ] = "Kopiera tabell" ;
+ Text [ danish ] = "Kopier tabel" ;
+ Text [ italian ] = "Copia tabella" ;
+ Text [ spanish ] = "Copiar tabla" ;
+ Text [ french ] = "Copier le tableau" ;
+ Text [ dutch ] = "Tabel kopiëren" ;
+ Text[ chinese_simplified ] = "¸´ÖƱí¸ñ";
+ Text[ russian ] = "Êîïèðîâàòü òàáëèöó";
+ Text[ polish ] = "Kopiuj tabelê";
+ Text[ japanese ] = "•\\‚̺Ëß°";
+ Text[ chinese_traditional ] = "½Æ»sªí®æ";
+ Text[ arabic ] = "äÓÎ ÇáÌÏæá";
+ Text[ dutch ] = "Tabel kopiëren";
+ Text[ chinese_simplified ] = "¸´ÖƱí¸ñ";
+ Text[ greek ] = "ÁíôéãñáöÞ ðßíáêá";
+ Text[ korean ] = "Ç¥ ¼­½Ä";
+ Text[ turkish ] = "Tabloyu kopyala";
+ Text[ language_user1 ] = " ";
+};
+String STR_TABLE_CPYTBL
+{
+ Text = "Tabelle kopieren" ;
+ Text [ ENGLISH ] = "Copy table" ;
+ Text [ portuguese ] = "Copiar tabela" ;
+ Text [ english_us ] = "Copy table" ;
+ Text [ portuguese_brazilian ] = "Tabelle kopieren" ;
+ Text [ swedish ] = "Kopiera tabell" ;
+ Text [ danish ] = "Kopier tabel" ;
+ Text [ italian ] = "Copia tabella" ;
+ Text [ spanish ] = "Copiar tabla" ;
+ Text [ french ] = "Copier le tableau" ;
+ Text [ dutch ] = "Tabel kopiëren" ;
+ Text[ chinese_simplified ] = "¸´ÖƱí¸ñ";
+ Text[ russian ] = "Êîïèðîâàòü òàáëèöó";
+ Text[ polish ] = "Kopiuj tabelê";
+ Text[ japanese ] = "•\\‚̺Ëß°";
+ Text[ chinese_traditional ] = "½Æ»sªí®æ";
+ Text[ arabic ] = "äÓÎ ÇáÌÏæá";
+ Text[ dutch ] = "Tabel kopiëren";
+ Text[ chinese_simplified ] = "¸´ÖƱí¸ñ";
+ Text[ greek ] = "ÁíôéãñáöÞ ðßíáêá";
+ Text[ korean ] = "Ç¥ º¹»ç";
+ Text[ turkish ] = "Tabloyu kopyala";
+ Text[ language_user1 ] = " ";
+};
+String STR_INS_FROM_SHADOWCRSR
+{
+ Text = "Cursor setzen" ;
+ Text [ ENGLISH ] = "Set cursor" ;
+ Text [ portuguese ] = "Configurar cursor" ;
+ Text [ english_us ] = "Set cursor" ;
+ Text [ portuguese_brazilian ] = "Cursor setzen" ;
+ Text [ swedish ] = "Sätt markör" ;
+ Text [ danish ] = "Konfigurer markør" ;
+ Text [ italian ] = "Imposta cursore" ;
+ Text [ spanish ] = "Poner cursor" ;
+ Text [ french ] = "Mettre le curseur" ;
+ Text [ dutch ] = "Cursor configureren" ;
+ Text[ chinese_simplified ] = "¶¨Î»¹â±ê";
+ Text[ russian ] = "Óñòàíîâèòü êóðñîð";
+ Text[ polish ] = "Ustaw kursor";
+ Text[ japanese ] = "¶°¿Ù‚ÌÝ’è";
+ Text[ chinese_traditional ] = "©w¦ì¥ú¼Ð";
+ Text[ arabic ] = "ÊÚííä ÇáãÄÔÑ";
+ Text[ dutch ] = "Cursor configureren";
+ Text[ chinese_simplified ] = "¶¨Î»¹â±ê";
+ Text[ greek ] = "Ïñéóìüò äåßêôç";
+ Text[ korean ] = "Ä¿¼­ ¼³Á¤";
+ Text[ turkish ] = "Ýmleci ayarla";
+ Text[ language_user1 ] = " ";
+};
+String STR_UNDO_CHAIN
+{
+ Text = "Textrahmen verbinden" ;
+ Text [ ENGLISH ] = "chaine Textframes" ;
+ Text [ portuguese ] = "Ligar molduras de texto" ;
+ Text [ english_us ] = "Link text frames" ;
+ Text [ portuguese_brazilian ] = "Textrahmen verbinden" ;
+ Text [ swedish ] = "Förbind textram" ;
+ Text [ danish ] = "Kæd tekstbokse" ;
+ Text [ italian ] = "Collega la cornice di testo." ;
+ Text [ spanish ] = "Conectar marcos de texto" ;
+ Text [ french ] = "Enchaîner les cadres texte" ;
+ Text [ dutch ] = "Tekstkader verbinden" ;
+ Text[ chinese_simplified ] = "Á´½ÓÎı¾¿ò";
+ Text[ russian ] = "Îáúåäèíèòü òåêñòîâûå ðàìêè";
+ Text[ polish ] = "Po³¹cz ramkê tekstow¹";
+ Text[ japanese ] = "÷½Ä˜g‚ÌŒ‹‡";
+ Text[ chinese_traditional ] = "³sµ²¤å¦r¤è¶ô";
+ Text[ arabic ] = "ÊÑÇÈØ ÅØÇÑÇÊ ÇáäÕ";
+ Text[ dutch ] = "Tekstkader verbinden";
+ Text[ chinese_simplified ] = "Á´½ÓÎı¾¿ò";
+ Text[ greek ] = "Óýíäåóç ðëáéóßïõ êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ÇÁ·¹ÀÓ ¿¬°á";
+ Text[ turkish ] = "Metin kutularýný baðla";
+ Text[ language_user1 ] = " ";
+};
+String STR_UNDO_UNCHAIN
+{
+ Text = "Textrahmenverbindung lösen" ;
+ Text [ ENGLISH ] = "unchain Textframes" ;
+ Text [ portuguese ] = "Desligar molduras de texto" ;
+ Text [ english_us ] = "Unlink text frames" ;
+ Text [ portuguese_brazilian ] = "Textrahmenverbindung loesen" ;
+ Text [ swedish ] = "Upplös textramförbindelse" ;
+ Text [ danish ] = "Ophæv tekstbokskædning" ;
+ Text [ italian ] = "Staccare il collegamento della cornice di testo" ;
+ Text [ spanish ] = "Deshacer el vínculo de los marcos de texto." ;
+ Text [ french ] = "Détacher les cadres texte" ;
+ Text [ dutch ] = "Tekstkaderverbinding verwijderen" ;
+ Text[ chinese_simplified ] = "È¡ÏûÎı¾¿òµÄÁ´½Ó";
+ Text[ russian ] = "Ðàçúåäèíèòü òåêñòîâóþ ðàìêó";
+ Text[ polish ] = "Roz³¹cz ramki tekstu";
+ Text[ japanese ] = "÷½Ä˜g‚ÌŒ‹‡‰ðœ";
+ Text[ chinese_traditional ] = "¨ú®ø¤å¦r¤è¶ôªº³sµ²";
+ Text[ arabic ] = "Ýß ÊÑÇÈØ ÅØÇÑÇÊ ÇáäÕ";
+ Text[ dutch ] = "Tekstkaderverbinding verwijderen";
+ Text[ chinese_simplified ] = "È¡ÏûÎı¾¿òµÄÁ´½Ó";
+ Text[ greek ] = "Áðïóýíäåóç ðëáßóéá êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ÇÁ·¹ÀÓ ¿¬°á Á¦°Å";
+ Text[ turkish ] = "Metin kutusu baðlantýlarýný çöz";
+ Text[ language_user1 ] = " ";
+};
+String STR_UNDO_FTNINFO
+{
+ Text = "Fußnoteneinstellungen ändern" ;
+ Text [ ENGLISH ] = "change footnote properties" ;
+ Text [ portuguese ] = "Modificar definições de nota final" ;
+ Text [ english_us ] = "Modify footnote options" ;
+ Text [ portuguese_brazilian ] = "Fußnoteneinstellungen ändern" ;
+ Text [ swedish ] = "Ändra fotnotsinställningar" ;
+ Text [ danish ] = "Modificer fodnoteindstillinger" ;
+ Text [ italian ] = "Modifica impostazioni note a piè pagina" ;
+ Text [ spanish ] = "Modificar opciones de nota al pie" ;
+ Text [ french ] = "Modifier les paramètres des notes de bas de page" ;
+ Text [ dutch ] = "Voetnoteninstellingen wijzigen" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä×¢½ÅÉ趨";
+ Text[ russian ] = "Èçìåíèòü óñòàíîâêè ñíîñîê";
+ Text[ polish ] = "Zmodyfikuj ustawienia przypisów dolnych";
+ Text[ japanese ] = "‹r’‚ÌÝ’è•ÏX";
+ Text[ chinese_traditional ] = "Åܧóµù¸}³]©w";
+ Text[ arabic ] = "ÊÚÏíá ÎíÇÑÇÊ ÇáÍÇÔíÉ ÇáÓÝáíÉ";
+ Text[ dutch ] = "Voetnoteninstellingen wijzigen";
+ Text[ chinese_simplified ] = "¸ü¸Ä×¢½ÅÉ趨";
+ Text[ greek ] = "Ôñïðïðïßçóç åðéëïãþí õðïóçìåéþóåùí";
+ Text[ korean ] = "°¢ÁÖ ¿É¼Ç ¼öÁ¤";
+ Text[ turkish ] = "Dipnot ayarlarýný deðiþtir";
+ Text[ language_user1 ] = " ";
+};
+String STR_UNDO_ENDNOTEINFO
+{
+ Text = "Endnoteneinstellungen ändern" ;
+ Text [ ENGLISH ] = "change endnote properties" ;
+ Text [ portuguese ] = "Modificar definições de nota final" ;
+ Text [ english_us ] = "Modify endnote settings" ;
+ Text [ portuguese_brazilian ] = "Endnoteneinstellungen ändern" ;
+ Text [ swedish ] = "Ändra slutnotsinställningar" ;
+ Text [ danish ] = "Modificer slutnoteindstillinger" ;
+ Text [ italian ] = "Modifica impostazione note di chiusura" ;
+ Text [ spanish ] = "Modificar configuración de notas finales" ;
+ Text [ french ] = "Modifier les paramètres des notes de fin" ;
+ Text [ dutch ] = "Eindnootinstellingen wijzigen" ;
+ Text[ chinese_simplified ] = "¸ü¸ÄβעÉ趨";
+ Text[ russian ] = "Èçìåíèòü óñòàíîâêè êîíöåâûõ ñíîñîê";
+ Text[ polish ] = "Zmodyfikuj ustawienia przypisów dolnych";
+ Text[ japanese ] = "•¶––‹r’‚ÌÝ’è•ÏX";
+ Text[ chinese_traditional ] = "Åܧó§Àª`³]©w";
+ Text[ arabic ] = "ÊÚÏíá ÅÚÏÇÏÇÊ ÇáÊÚáíÞÇÊ ÇáÎÊÇãíÉ";
+ Text[ dutch ] = "Eindnootinstellingen wijzigen";
+ Text[ chinese_simplified ] = "¸ü¸ÄβעÉ趨";
+ Text[ greek ] = "Ôñïðïðïßçóç åðéëïãþí óçìåéþóåùí ôÝëïõò";
+ Text[ korean ] = "¹ÌÁÖ ¼³Á¤ ¼öÁ¤";
+ Text[ turkish ] = "Sonnot ayarlarýný deðiþtir";
+ Text[ language_user1 ] = " ";
+};
+String STR_UNDO_COMPAREDOC
+{
+ Text = "Dokument vergleich" ;
+ Text [ ENGLISH ] = "compare document" ;
+ Text [ portuguese ] = "Comparar documento" ;
+ Text [ english_us ] = "Compare Document" ;
+ Text [ portuguese_brazilian ] = "Dokument vergleich" ;
+ Text [ swedish ] = "Jämföra dokument" ;
+ Text [ danish ] = "Sammenlign dokument" ;
+ Text [ italian ] = "Confronto documento" ;
+ Text [ spanish ] = "Comparar documento" ;
+ Text [ french ] = "Comparaison de documents" ;
+ Text [ dutch ] = "Vergelijking van documenten" ;
+ Text[ chinese_simplified ] = "±È½ÏÎĵµ";
+ Text[ russian ] = "Ñðàâíèòü âåðñèè äîêóìåíòà";
+ Text[ polish ] = "Porównaj dokument";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ‚Ì”äŠr";
+ Text[ chinese_traditional ] = "¤ñ¸û¤å¥ó";
+ Text[ arabic ] = "ãÞÇÑäÉ ÇáãÓÊäÏ";
+ Text[ dutch ] = "Vergelijking van documenten";
+ Text[ chinese_simplified ] = "±È½ÏÎĵµ";
+ Text[ greek ] = "Óýãêñéóç åããñÜöïõ";
+ Text[ korean ] = "¹®¼­ºñ±³";
+ Text[ turkish ] = "Belgeyi karþýlaþtýr";
+ Text[ language_user1 ] = " ";
+};
+String STR_UNDO_SETFLYFRMFMT
+{
+ Text = "Rahmenvorlage anwenden" ;
+ Text [ ENGLISH ] = "Apply framestyle" ;
+ Text [ portuguese ] = "Aplicar estilo de moldura" ;
+ Text [ english_us ] = "Apply frame style" ;
+ Text [ portuguese_brazilian ] = "Rahmenvorlage anwenden" ;
+ Text [ swedish ] = "Använd ramformatmall" ;
+ Text [ danish ] = "Anvend rammetypografi" ;
+ Text [ italian ] = "Applica modello di cornice" ;
+ Text [ spanish ] = "Aplicar estilo de marco" ;
+ Text [ french ] = "Utiliser un style de cadre" ;
+ Text [ dutch ] = "Kaderopmaakprofiel toepassen" ;
+ Text[ chinese_simplified ] = "ʹÓÿòÑùʽ";
+ Text[ russian ] = "Ïðèìåíèòü ñòèëü ðàìîê";
+ Text[ polish ] = "Zastosuj styl ramki";
+ Text[ japanese ] = "˜g½À²Ù‚Ì“K—p";
+ Text[ chinese_traditional ] = "¨Ï¥Î¤è¶ô¼Ë¦¡";
+ Text[ arabic ] = "ÇÓÊÎÏÇã äãØ ÅØÇÑ";
+ Text[ dutch ] = "Kaderopmaakprofiel toepassen";
+ Text[ chinese_simplified ] = "ʹÓÿòÑùʽ";
+ Text[ greek ] = "ÅöáñìïãÞ óôõë ðëáéóßïõ";
+ Text[ korean ] = "ÇÁ·¹ÀÓ ½ºÅ¸ÀÏ Àû¿ë";
+ Text[ turkish ] = "Çerçeve biçimi uygula";
+ Text[ language_user1 ] = " ";
+};
+String STR_INSERT_FOOTNOTE
+{
+ Text = "Fußnote einfügen" ;
+ Text [ ENGLISH ] = "insert footnote" ;
+ Text [ english_us ] = "Insert footnote" ;
+ Text [ portuguese_brazilian ] = "Fußnote einfügen" ;
+ Text [ swedish ] = "Infoga fotnot" ;
+ Text [ danish ] = "Indsæt fodnote" ;
+ Text [ italian ] = "Inserisci nota a piè pagina" ;
+ Text [ spanish ] = "Insertar nota al pie" ;
+ Text [ french ] = "Insérer une note de bas de page" ;
+ Text [ dutch ] = "Voetnoot invoegen" ;
+ Text [ portuguese ] = "Inserir nota de rodapé" ;
+ Text[ chinese_simplified ] = "²åÈë×¢½Å";
+ Text[ russian ] = "Âñòàâèòü ñíîñêó";
+ Text[ polish ] = "Wstaw przypis dolny";
+ Text[ japanese ] = "‹r’‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤Jµù¸}";
+ Text[ arabic ] = "ÅÏÑÇÌ ÍÇÔíÉ ÓÝáíÉ";
+ Text[ dutch ] = "Voetnoot invoegen";
+ Text[ chinese_simplified ] = "²åÈë×¢½Å";
+ Text[ greek ] = "ÐñïóèÞêç õðïóçìåßùóçò";
+ Text[ korean ] = "°¢ÁÖ »ðÀÔ";
+ Text[ turkish ] = "Dipnot ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_INSERT_URLBTN
+{
+ Text = "URL Button einfügen" ;
+ Text [ ENGLISH ] = "insert URL button" ;
+ Text[ english_us ] = "insert URL button";
+ Text[ portuguese ] = "Inserir botão URL";
+ Text[ russian ] = "Âñòàâèòü êíîïêó URL";
+ Text[ dutch ] = "URL button invoegen";
+ Text[ french ] = "Insérer un bouton d'URL";
+ Text[ spanish ] = "Insertar botón URL";
+ Text[ italian ] = "Inserisci pulsante URL";
+ Text[ danish ] = "Indsæt URL-knap";
+ Text[ swedish ] = "Infoga URL-knapp";
+ Text[ polish ] = "Wstaw przycisk URL";
+ Text[ portuguese_brazilian ] = "insert URL button";
+ Text[ japanese ] = "URLÎÞÀÝ‚Ì‘}“ü";
+ Text[ chinese_simplified ] = "²åÈë URL °´Å¥";
+ Text[ chinese_traditional ] = "´¡¤J URL «ö¶s";
+ Text[ arabic ] = "ÅÏÑÇÌ ãÝÊÇÍ URL";
+ Text[ dutch ] = "URL button invoegen";
+ Text[ chinese_simplified ] = "²åÈë URL °´Å¥";
+ Text[ greek ] = "Ðñüóèåóç êïõìðéïý URL";
+ Text[ korean ] = "URL ¹öÆ° »ðÀÔ";
+ Text[ turkish ] = "URL düðmesi ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_INSERT_URLTXT
+{
+ Text = "Hyperlink einfügen" ;
+ Text [ ENGLISH ] = "insert Hyperlink" ;
+ Text[ english_us ] = "insert Hyperlink";
+ Text[ portuguese ] = "Inserir hiperligação";
+ Text[ russian ] = "Âñòàâèòü ãèïåðññûëêó";
+ Text[ dutch ] = "Hyperlink invoegen";
+ Text[ french ] = "Insérer un hyperlien";
+ Text[ spanish ] = "Insertar hiperenlace";
+ Text[ italian ] = "Inserisci hyperlink";
+ Text[ danish ] = "Indsæt hyperlink";
+ Text[ swedish ] = "Infoga hyperlänk";
+ Text[ polish ] = "Wstaw hiper³¹cze";
+ Text[ portuguese_brazilian ] = "insert Hyperlink";
+ Text[ japanese ] = "ʲÊß°Øݸ‚Ì‘}“ü";
+ Text[ chinese_simplified ] = "²åÈ볬Á´½Ó";
+ Text[ chinese_traditional ] = "´¡¤J¶W³sµ²";
+ Text[ arabic ] = "ÅÏÑÇÌ ÇÑÊÈÇØ ÊÔÚÈí";
+ Text[ dutch ] = "Hyperlink invoegen";
+ Text[ chinese_simplified ] = "²åÈ볬Á´½Ó";
+ Text[ greek ] = "ÐñïóèÞêç õðåñ-óýíäåóçò";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ© »ðÀÔ";
+ Text[ turkish ] = "Hyperlink ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_DELETE_INVISIBLECNTNT
+{
+ Text = "unischtbaren Inhalt enfernen" ;
+ Text [ ENGLISH ] = "remove invisible content" ;
+ Text[ english_us ] = "remove invisible content";
+ Text[ portuguese ] = "eliminar conteúdo invisível";
+ Text[ greek ] = "êáôÜñãçóç ìç ïñáôþí ðåñéå÷ïìÝíùí";
+ Text[ dutch ] = "Ônzichtbare inhoud verwijderen";
+ Text[ french ] = "supprimer le contenu invisible";
+ Text[ spanish ] = "eliminar contenido invisible";
+ Text[ swedish ] = "ta bort osynligt innehåll";
+ Text[ russian ] = "óäàëèòü íåâèäèìîå ñîäåðæèìîå";
+ Text[ italian ] = "Rimuovi contenuto nascosto";
+ Text[ danish ] = "fjern usynlige indhold";
+ Text[ polish ] = "usuñ niewidoczn¹ zawartoœæ";
+ Text[ portuguese_brazilian ] = "remove invisible content";
+ Text[ japanese ] = "•\\Ž¦‚Å‚«‚È‚¢“à—e‚ð휂·‚é";
+ Text[ korean ] = "º¸ÀÌÁö ¾Ê´Â ³»¿ë Á¦°Å";
+ Text[ chinese_simplified ] = "ɾ³ýÒþÈëµÄÄÚÈÝ";
+ Text[ chinese_traditional ] = "²M°£Áô¤Jªº¤º®e";
+ Text[ arabic ] = "ÅÒÇáÉ ÇáãÍÊæíÇÊ ÇáÛíÑ ãÑÆíÉ";
+ Text[ turkish ] = "Görünmez içeriði kaldýr";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_DDEERROR_APP1
+{
+ TEXT = "Die Applikation [" ;
+ TEXT [ ENGLISH ] = "Application [" ;
+ TEXT [ norwegian ] = "Applikasjon[" ;
+ TEXT [ italian ] = "L'applicazione [" ;
+ TEXT [ portuguese_brazilian ] = "Aplicativo [" ;
+ TEXT [ portuguese ] = "A aplicação [" ;
+ TEXT [ finnish ] = "Sovellus [" ;
+ TEXT [ danish ] = "Applikationen [" ;
+ TEXT [ french ] = "L'application [" ;
+ TEXT [ swedish ] = "Programmet [" ;
+ TEXT [ dutch ] = "Applicatie [" ;
+ TEXT [ spanish ] = "La aplicación [" ;
+ TEXT [ english_us ] = "Application [" ;
+ TEXT[ chinese_simplified ] = "Ó¦ÓóÌÐò [";
+ TEXT[ russian ] = "Ê ïðèëîæåíèþ [";
+ TEXT[ polish ] = "Aplikacja [";
+ TEXT[ japanese ] = "±Ìßع°¼®Ý [";
+ TEXT[ greek ] = "Ç åöáñìïãÞ [";
+ TEXT[ korean ] = "ÀÀ¿ëÇÁ·Î±×·¥ [";
+ TEXT[ chinese_traditional ] = "µ{¦¡ [";
+ TEXT[ arabic ] = "ÇáÊØÈíÞ ]";
+ TEXT[ turkish ] = "Uygulama [";
+};
+String STR_DDEERROR_APP2
+{
+ TEXT = "] kann nicht angesprochen werden" ;
+ TEXT [ ENGLISH ] = "] does not respond" ;
+ TEXT [ norwegian ] = "] korresponderer ikke" ;
+ TEXT [ italian ] = "] non risponde" ;
+ TEXT [ portuguese_brazilian ] = "] não responde" ;
+ TEXT [ portuguese ] = "] não responde." ;
+ TEXT [ finnish ] = "] ei vastaa" ;
+ TEXT [ danish ] = "] svarer ikke" ;
+ TEXT [ french ] = "] ne répond pas" ;
+ TEXT [ swedish ] = "] svarar inte" ;
+ TEXT [ dutch ] = "] reageert niet" ;
+ TEXT [ spanish ] = "] no responde" ;
+ TEXT [ english_us ] = "] is not responding." ;
+ TEXT[ chinese_simplified ] = "] ûÓлØÓ¦¡£";
+ TEXT[ russian ] = "] îáðàòèòüñÿ íåâîçìîæíî";
+ TEXT[ polish ] = "] nie reaguje";
+ TEXT[ japanese ] = "] ‚©‚ç‚̉ž“š‚ª‚ ‚è‚Ü‚¹‚ñ";
+ TEXT[ chinese_traditional ] = "] ¨S¦³¦^À³¡C";
+ TEXT[ arabic ] = "[ áÇ íÓÊÌíÈ";
+ TEXT[ dutch ] = "] reageert niet";
+ TEXT[ chinese_simplified ] = "] ûÓлØÓ¦¡£";
+ TEXT[ greek ] = "] äåí áíôáðïêñßíåôáé.";
+ TEXT[ korean ] = "]ÀÌ ÀÀ´äÇÏÁö ¾Ê½À´Ï´Ù.";
+ TEXT[ turkish ] = "] cevap vermiyor";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DDEERROR_DATA1
+{
+ TEXT = "Die Daten zu [" ;
+ TEXT [ ENGLISH ] = "Data for [" ;
+ TEXT [ norwegian ] = "Data for [" ;
+ TEXT [ italian ] = "Dati per [" ;
+ TEXT [ portuguese_brazilian ] = "Dados para [" ;
+ TEXT [ portuguese ] = "Os dados para [" ;
+ TEXT [ finnish ] = "Tietoja kohteeseen [" ;
+ TEXT [ danish ] = "Dataene til [" ;
+ TEXT [ french ] = "Les données pour [" ;
+ TEXT [ swedish ] = "Data till [" ;
+ TEXT [ dutch ] = "Gegevens voor [" ;
+ TEXT [ spanish ] = "Los datos para [" ;
+ TEXT [ english_us ] = "Data for [" ;
+ TEXT[ chinese_simplified ] = "ÓÃÓÚ [";
+ TEXT[ russian ] = "Äàííûå äëÿ [";
+ TEXT[ polish ] = "Danych dla [";
+ TEXT[ japanese ] = "[";
+ TEXT[ greek ] = "Ôá äåäïìÝíá ãéá [";
+ TEXT[ korean ] = "µ¥ÀÌÅÍ [";
+ TEXT[ chinese_traditional ] = "¥Î©ó[";
+ TEXT[ arabic ] = "ÈíÇäÇÊ ] ";
+ TEXT[ turkish ] = "[";
+};
+String STR_DDEERROR_DATA2
+{
+ TEXT = "] können nicht ermittelt werden" ;
+ TEXT [ ENGLISH ] = "] cannot be obtained" ;
+ TEXT [ norwegian ] = "] kan ikke oppnåes" ;
+ TEXT [ italian ] = "]" ;
+ TEXT [ portuguese_brazilian ] = "] não podem ser obtidos" ;
+ TEXT [ portuguese ] = "] não podem ser determinados." ;
+ TEXT [ finnish ] = "] ei saatu" ;
+ TEXT [ danish ] = "] kan ikke bestemmes" ;
+ TEXT [ french ] = "] ne peuvent pas être obtenues" ;
+ TEXT [ swedish ] = "] kan inte erhållas" ;
+ TEXT [ dutch ] = "] onmogelijk" ;
+ TEXT [ spanish ] = "] no pueden ser determinados" ;
+ TEXT [ english_us ] = "] cannot be obtained" ;
+ TEXT[ chinese_simplified ] = "] µÄÊý¾ÝÎÞ·¨±»¶ÁÈ¡¡£";
+ TEXT[ russian ] = "] îïðåäåëèòü íåâîçìîæíî";
+ TEXT[ polish ] = "] nie mo¿na uzyskaæ";
+ TEXT[ japanese ] = "] ‚ÌÃÞ°À‚ÍŠm”F‚Å‚«‚Ü‚¹‚ñ";
+ TEXT[ chinese_traditional ] = "] ªº¸ê®ÆµLªk³QŪ¨ú¡C";
+ TEXT[ arabic ] = "[ ÛíÑ ãÊæÝÑÉ";
+ TEXT[ dutch ] = "] onmogelijk";
+ TEXT[ chinese_simplified ] = "] µÄÊý¾ÝÎÞ·¨±»¶ÁÈ¡¡£";
+ TEXT[ greek ] = "] äåí åßíáé äõíáôüí íá åîáêñéâùèïýí.";
+ TEXT[ korean ] = "] À» ¾òÀ» ¼ö ¾øÀ½";
+ TEXT[ turkish ] = "] ile ilgili veriler alýnamýyor";
+ TEXT[ language_user1 ] = " ";
+};
+String STR_DDEERROR_LINK1
+{
+ TEXT = "Die Verknüpfung zu [" ;
+ TEXT [ ENGLISH ] = "Link to [" ;
+ TEXT [ norwegian ] = "Koble til [" ;
+ TEXT [ italian ] = "Collegamento con [" ;
+ TEXT [ portuguese_brazilian ] = "Ligação para [" ;
+ TEXT [ portuguese ] = "A ligação a [" ;
+ TEXT [ finnish ] = "Linkkiä kohteeseen [" ;
+ TEXT [ danish ] = "Kæden til [" ;
+ TEXT [ french ] = "Le lien à [" ;
+ TEXT [ swedish ] = "Länk till [" ;
+ TEXT [ dutch ] = "Koppeling naar [" ;
+ TEXT [ spanish ] = "El vínculo con [" ;
+ TEXT [ english_us ] = "Link to [" ;
+ TEXT[ chinese_simplified ] = "ÎÞ·¨½¨Á¢Óë [";
+ TEXT[ russian ] = "Ññûëêó íà [";
+ TEXT[ polish ] = "£¹cza do [";
+ TEXT[ japanese ] = "[";
+ TEXT[ greek ] = "Ç óýíäåóç ìå [";
+ TEXT[ korean ] = "¿¬°á ´ë»ó [";
+ TEXT[ chinese_traditional ] = "³sµ² [";
+ TEXT[ arabic ] = "ÇáÇÑÊÈÇØ Åáì ]";
+ TEXT[ turkish ] = "[";
+};
+String STR_DDEERROR_LINK2
+{
+ TEXT = "] kann nicht eingerichtet werden" ;
+ TEXT [ ENGLISH ] = "] cannot be established" ;
+ TEXT [ norwegian ] = "] kan ikke etableres" ;
+ TEXT [ italian ] = "]" ;
+ TEXT [ portuguese_brazilian ] = "] não pode ser estabelecido" ;
+ TEXT [ portuguese ] = "] não pode ser estabelecido." ;
+ TEXT [ finnish ] = "] ei voi muodostaa" ;
+ TEXT [ danish ] = "] kan ikke oprettes" ;
+ TEXT [ french ] = "] ne peut pas être établi" ;
+ TEXT [ swedish ] = "] kan inte etableras" ;
+ TEXT [ dutch ] = "] onmogelijk" ;
+ TEXT [ spanish ] = "] no se puede establecer" ;
+ TEXT [ english_us ] = "] cannot be established" ;
+ TEXT[ chinese_simplified ] = "]µÄÁ´½Ó";
+ TEXT[ russian ] = "] ñîçäàòü íåâîçìîæíî";
+ TEXT[ polish ] = "] nie mo¿na ustanowiæ";
+ TEXT[ japanese ] = "] ‚Ö‚ÌØݸ‚͂‚­‚ê‚Ü‚¹‚ñ";
+ TEXT[ chinese_traditional ] = "] µLªk«Ø¥ß¡C";
+ TEXT[ arabic ] = "[ ÛíÑ ÞÇÈá ááÅÚÏÇÏ";
+ TEXT[ dutch ] = "] onmogelijk";
+ TEXT[ chinese_simplified ] = "]µÄÁ´½Ó";
+ TEXT[ greek ] = "] äåí åßíáé äõíáôüí íá ðñáãìáôïðïéçèåß.";
+ TEXT[ korean ] = "] ¼º¸³µÉ ¼ö ¾ø½À´Ï´Ù.";
+ TEXT[ turkish ] = "] ile ilgili baðlantý oluþturulamýyor";
+ TEXT[ language_user1 ] = " ";
+};
diff --git a/sw/source/ui/wrtsh/wrtsh1.cxx b/sw/source/ui/wrtsh/wrtsh1.cxx
new file mode 100644
index 000000000000..cd5702f84b04
--- /dev/null
+++ b/sw/source/ui/wrtsh/wrtsh1.cxx
@@ -0,0 +1,1630 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtsh1.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#if STLPORT_VERSION>=321
+#include <math.h> // prevent conflict between exception and std::exception
+#endif
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx>
+#endif
+
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SOT_FACTORY_HXX
+#include <sot/factory.hxx>
+#endif
+#ifndef _SFXITEMITER_HXX //autogen
+#include <svtools/itemiter.hxx>
+#endif
+#ifndef _SOUND_HXX //autogen
+#include <vcl/sound.hxx>
+#endif
+#ifndef _BIGINT_HXX //autogen
+#include <tools/bigint.hxx>
+#endif
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+#ifndef _INSDLG_HXX //autogen
+#include <so3/insdlg.hxx>
+#endif
+#ifndef _FRAMEOBJ_HXX //autogen
+#include <sfx2/frameobj.hxx>
+#endif
+#ifndef _EHDL_HXX //autogen
+#include <svtools/ehdl.hxx>
+#endif
+#ifndef _IPENV_HXX //autogen
+#include <so3/ipenv.hxx>
+#endif
+#ifndef _SOERR_HXX //autogen
+#include <so3/soerr.hxx>
+#endif
+#ifndef _CACHESTR_HXX //autogen
+#include <tools/cachestr.hxx>
+#endif
+#ifndef _SVX_BRKITEM_HXX //autogen
+#include <svx/brkitem.hxx>
+#endif
+#ifndef SMDLL0_HXX //autogen
+#include <starmath/smdll0.hxx>
+#endif
+#ifndef _SCHDLL0_HXX
+#include <sch/schdll0.hxx>
+#endif
+#ifndef _SCH_DLL_HXX
+#include <sch/schdll.hxx>
+#endif
+#ifndef _SCH_MEMCHRT_HXX
+#include <sch/memchrt.hxx>
+#endif
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _SBAITEMS_HRC //autogen
+#include <offmgr/sbaitems.hrc>
+#endif
+#ifndef _SV_GRAPH_HXX //autogen
+#include <vcl/graph.hxx>
+#endif
+#ifndef _SVX_IMPGRF_HXX
+#include <svx/impgrf.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+
+// MONIKER-SS
+#ifndef PRODUCT
+// fuer den neuen SvBaseLink!
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _FINDER_HXX
+#include <finder.hxx>
+#endif
+#endif
+// MONIKER-SS
+
+
+#ifndef _FMTFTN_HXX //autogen
+#include <fmtftn.hxx>
+#endif
+#ifndef _FMTHBSH_HXX //autogen
+#include <fmthbsh.hxx>
+#endif
+#ifndef _FMTPDSC_HXX //autogen
+#include <fmtpdsc.hxx>
+#endif
+#ifndef _WDOCSH_HXX
+#include <wdocsh.hxx>
+#endif
+#ifndef _BASESH_HXX
+#include <basesh.hxx>
+#endif
+#ifndef _SWMODULE_HXX
+#include <swmodule.hxx>
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _UITOOL_HXX
+#include <uitool.hxx>
+#endif
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _PAGEDESC_HXX
+#include <pagedesc.hxx>
+#endif
+#ifndef _FRMMGR_HXX
+#include <frmmgr.hxx>
+#endif
+#ifndef _SHELLIO_HXX
+#include <shellio.hxx>
+#endif
+#ifndef _UINUMS_HXX
+#include <uinums.hxx> // fuer Anwenden einer
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx> // fuer Undo-Ids
+#endif
+#ifndef _SWCLI_HXX
+#include <swcli.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _WVIEW_HXX
+#include <wview.hxx>
+#endif
+#ifndef _EDTWIN_HXX
+#include <edtwin.hxx>
+#endif
+#ifndef _FMTCOL_HXX
+#include <fmtcol.hxx>
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx>
+#endif
+#ifndef _CAPTION_HXX
+#include <caption.hxx>
+#endif
+#ifndef _VISCRS_HXX //autogen wg. SwSelPaintRects
+#include <viscrs.hxx>
+#endif
+
+#ifndef _SWERROR_H
+#include <swerror.h>
+#endif
+#ifndef _WRTSH_HRC
+#include <wrtsh.hrc>
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+#define COMMON_INI_LIST \
+ rView(rShell),\
+ ePageMove(MV_NO),\
+ pCrsrStack(0), \
+ fnLeaveSelect(&SwWrtShell::SttLeaveSelect),\
+ fnDrag(&SwWrtShell::BeginDrag),\
+ fnEndDrag(&SwWrtShell::EndDrag),\
+ fnSetCrsr(&SwWrtShell::SetCrsr),\
+ fnKillSel(&SwWrtShell::Ignore),\
+ bDestOnStack(FALSE),\
+ pModeStack(0)
+
+#define BITFLD_INI_LIST \
+ bClearMark = \
+ bIns = TRUE;\
+ bAddMode = \
+ bExtMode = \
+ bInSelect = \
+ bCopy = \
+ bLayoutMode = \
+ bNoEdit = \
+ bSelWrd = \
+ bSelLn = \
+ bIsInClickToEdit = FALSE;
+
+
+void SwWrtShell::NoEdit(BOOL bHideCrsr)
+{
+ if(bHideCrsr)
+ HideCrsr();
+ bNoEdit = TRUE;
+}
+
+
+
+void SwWrtShell::Edit()
+{
+ if (CanInsert())
+ {
+ ShowCrsr();
+ bNoEdit = FALSE;
+ }
+}
+
+
+
+BOOL SwWrtShell::IsEndWrd()
+{
+ MV_KONTEXT(this);
+ if(IsEndPara() && !IsSttPara())
+ return TRUE;
+
+ return IsEndWord();
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung: Abfrage, ob Einfuegen moeglich ist; gfs. Beep
+------------------------------------------------------------------------*/
+
+
+
+BOOL SwWrtShell::_CanInsert()
+{
+ if(!CanInsert())
+ {
+ Sound::Beep();
+ return FALSE;
+ }
+ return TRUE;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: String einfuegen
+------------------------------------------------------------------------*/
+
+void SwWrtShell::InsertByWord( const String & rStr)
+{
+ if( rStr.Len() )
+ {
+ BOOL bDelim = WordSelection::IsNormalChar( rStr.GetChar(0) );
+ xub_StrLen nPos = 0, nStt = 0;
+ for( ; nPos < rStr.Len(); nPos++ )
+ {
+ BOOL bTmpDelim = WordSelection::IsNormalChar( rStr.GetChar( nPos ) );
+ if( bTmpDelim != bDelim )
+ {
+ Insert( rStr.Copy( nStt, nPos - nStt ));
+ nStt = nPos;
+ }
+ }
+ if( nStt != nPos )
+ Insert( rStr.Copy( nStt, nPos - nStt ));
+ }
+}
+
+
+void SwWrtShell::Insert( const String &rStr )
+{
+ ResetCursorStack();
+ if( !_CanInsert() )
+ return;
+
+ BOOL bStarted = FALSE, bHasSel = HasSelection(),
+ bCallIns = bIns /*|| bHasSel*/;
+
+ // Notify abschalten
+ SwChgLinkFlag *pChgFlg = bCallIns ? new SwChgLinkFlag( *this ) : 0;
+
+ if( bHasSel )
+ {
+ // nur hier klammern, da das normale Insert schon an der
+ // Editshell geklammert ist
+ StartAllAction();
+ StartUndo(UNDO_INSERT);
+ bStarted = TRUE;
+ DelRight();
+ }
+/*
+JP 21.01.98: Ueberschreiben ueberschreibt nur die Selektion, nicht das
+ naechste Zeichen.
+ if( bHasSel && !bIns && 1 < rStr.Len() )
+ {
+ // falls mehrere Zeichen anstehen, nur das erste einfuegen,
+ // der Rest muss dann aber Ueberschrieben werden.
+ SwEditShell::Insert( rStr.GetChar( 0 ) );
+ SwEditShell::Overwrite( rStr.Copy( 1 ) );
+ }
+ else
+*/
+ bCallIns ? SwEditShell::Insert( rStr ) : SwEditShell::Overwrite( rStr );
+
+
+ if( bStarted )
+ {
+ EndAllAction();
+ EndUndo(UNDO_INSERT);
+ }
+ delete pChgFlg;
+}
+
+/* Begrenzung auf maximale Hoehe geht nicht, da die maximale Hoehe
+ * des aktuellen Frames nicht erfragt werden kann. */
+
+
+
+void SwWrtShell::Insert( const String &rPath, const String &rFilter,
+ const Graphic &rGrf, SwFlyFrmAttrMgr *pFrmMgr,
+ BOOL bRule )
+{
+ ResetCursorStack();
+ if ( !_CanInsert() )
+ return;
+
+ StartAllAction();
+ StartUndo(UNDO_INSERT);
+
+ if ( HasSelection() )
+ DelRight();
+ // eingefuegte Grafik in eigenen Absatz, falls am Ende
+ // eines nichtleeren Absatzes
+ if ( IsEndPara() && !IsSttPara() )
+ SwFEShell::SplitNode();
+
+ EnterSelFrmMode();
+
+ BOOL bSetGrfSize = TRUE;
+ BOOL bOwnMgr = FALSE;
+
+ if ( !pFrmMgr )
+ {
+ bOwnMgr = TRUE;
+ pFrmMgr = new SwFlyFrmAttrMgr( TRUE, this, FRMMGR_TYPE_GRF );
+
+ // VORSICHT
+ // GetAttrSet nimmt einen Abgleich vor
+ // Beim Einfuegen ist eine SwFrmSize vorhanden wegen der
+ // DEF-Rahmengroesse
+ // Diese muss fuer die optimale Groesse explizit entfernt werden
+ pFrmMgr->DelAttr(RES_FRM_SIZE);
+ }
+ else
+ {
+ Size aSz( pFrmMgr->GetSize() );
+ if ( !aSz.Width() || !aSz.Height() )
+ {
+ aSz.Width() = aSz.Height() = 567;
+ pFrmMgr->SetSize( aSz );
+ }
+ else if ( aSz.Width() != DFLT_WIDTH && aSz.Height() != DFLT_HEIGHT )
+ bSetGrfSize = FALSE;
+
+ pFrmMgr->SetSizeType(ATT_FIX_SIZE);
+
+ }
+
+ // Einfuegen der Grafik
+ SwFEShell::Insert(rPath, rFilter, &rGrf, &pFrmMgr->GetAttrSet());
+ if ( bOwnMgr )
+ pFrmMgr->UpdateAttrMgr();
+
+ if( bSetGrfSize && !bRule )
+ {
+ Size aGrfSize, aBound = GetGraphicDefaultSize();
+ GetGrfSize( aGrfSize );
+
+ //Die GrafikSize noch um die Randattribute vergroessern, denn die
+ //Zaehlen beim Rahmen mit.
+ aGrfSize.Width() += pFrmMgr->CalcWidthBorder();
+ aGrfSize.Height()+= pFrmMgr->CalcHeightBorder();
+
+ const BigInt aTempWidth( aGrfSize.Width() );
+ const BigInt aTempHeight( aGrfSize.Height());
+
+ // ggf. Breite anpassen, Hoehe dann proportional verkleinern
+ if( aGrfSize.Width() > aBound.Width() )
+ {
+ aGrfSize.Width() = aBound.Width();
+ aGrfSize.Height() = ((BigInt)aBound.Width()) * aTempHeight / aTempWidth;
+ }
+ // ggf. Hoehe anpassen, Breite dann proportional verkleinern
+ if( aGrfSize.Height() > aBound.Height() )
+ {
+ aGrfSize.Height() = aBound.Height();
+ aGrfSize.Width() = ((BigInt)aBound.Height()) * aTempWidth / aTempHeight;
+ }
+ pFrmMgr->SetSize( aGrfSize );
+ pFrmMgr->UpdateFlyFrm();
+ }
+ if ( bOwnMgr )
+ delete pFrmMgr;
+
+ EndUndo(UNDO_INSERT);
+ EndAllAction();
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung: Fuegt ein OLE-Objekt in die CORE ein.
+ Wenn kein Object uebergeben wird, so wird eins erzeugt.
+------------------------------------------------------------------------*/
+
+
+void SwWrtShell::Insert( SvInPlaceObjectRef *pRef, SvGlobalName *pName, BOOL bActivate, USHORT nSlotId)
+{
+ ResetCursorStack();
+ if( !_CanInsert() )
+ {
+ delete pRef;
+ return;
+ }
+
+ if( !pRef )
+ {
+ //Wir bauen uns ein neues OLE-Objekt, entweder per Dialog oder direkt
+ //ueber den Namen.
+ SvInPlaceObjectRef xIPObj;
+ BOOL bDoVerb = TRUE;
+ if ( pName )
+ {
+ SvStorageRef aStor = new SvStorage( aEmptyStr );
+ xIPObj = &((SvFactory*)SvInPlaceObject::ClassFactory())->CreateAndInit(
+ *pName,aStor );
+ }
+ else
+ {
+ SvStorageRef aStor = new SvStorage( aEmptyStr, STREAM_STD_READWRITE);
+
+ switch (nSlotId)
+ {
+ case SID_INSERT_OBJECT:
+ {
+ SvInsertOleObjectDialog aDlg;
+ aDlg.SetHelpId(nSlotId);
+
+ //Wir wollen uns nicht selbst servieren.
+ SvObjectServerList aServerList;
+ aDlg.FillObjectServerList( &aServerList );
+ aServerList.Remove( *SwDocShell::ClassFactory() );
+
+ xIPObj = aDlg.Execute( GetWin(), aStor, &aServerList);
+ bDoVerb = aDlg.IsCreateNew();
+ }
+ break;
+
+ case SID_INSERT_PLUGIN:
+ {
+ SvInsertPlugInDialog aDlg;
+ aDlg.SetHelpId(nSlotId);
+
+ xIPObj = aDlg.Execute( GetWin(), aStor);
+ bDoVerb = FALSE;
+ }
+ break;
+
+ case SID_INSERT_APPLET:
+ {
+ SvInsertAppletDialog aDlg;
+ aDlg.SetHelpId(nSlotId);
+
+ xIPObj = aDlg.Execute( GetWin(), aStor);
+ bDoVerb = FALSE;
+ }
+ break;
+
+ case SID_INSERT_FLOATINGFRAME:
+ {
+ SfxInsertFloatingFrameDialog aDlg( GetWin() );
+ xIPObj = aDlg.Execute( aStor );
+ bDoVerb = FALSE;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ if ( xIPObj.Is() )
+ {
+ if( SVOBJ_MISCSTATUS_RESIZEONPRINTERCHANGE &
+ xIPObj->GetMiscStatus() && GetPrt() )
+ xIPObj->OnDocumentPrinterChanged( GetPrt() );
+
+ if( InsertOle( xIPObj ) && bActivate && bDoVerb )
+ {
+ ASSERT( !xIPObj->IsLink(), "Link nicht aus Datei?" );
+ SfxInPlaceClientRef xCli = GetView().FindIPClient( xIPObj,
+ &GetView().GetEditWin());
+ if ( !xCli.Is() )
+ xCli = new SwOleClient( &GetView(), &GetView().GetEditWin());
+ ErrCode nErr = xIPObj->DoConnect( xCli );
+ ErrorHandler::HandleError( nErr );
+ if ( !ERRCODE_TOERROR(nErr) )
+ {
+ SvEmbeddedObjectRef xObj = &xIPObj;
+ CalcAndSetScale( xObj );
+ //#50270# Error brauchen wir nicht handeln, das erledigt das
+ //DoVerb in der SfxViewShell
+ nErr = GetView().SfxViewShell::DoVerb( xCli, SVVERB_SHOW );
+ if ( !ERRCODE_TOERROR( nErr ) )
+ xIPObj->SetDocumentName( GetView().GetDocShell()->GetTitle() );
+ }
+ }
+ }
+ }
+ else
+ {
+ if( HasSelection() )
+ DelRight();
+ InsertOle( *pRef );
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Object in die Core einfuegen.
+ Vom ClipBoard oder Insert
+------------------------------------------------------------------------*/
+
+BOOL SwWrtShell::InsertOle( SvInPlaceObjectRef aRef )
+{
+ if ( aRef.Is() )
+ {
+ ResetCursorStack();
+ StartAllAction();
+ StartUndo(UNDO_INSERT);
+
+ //Some differences between StarMath and any other objects:
+ //1. Selections should be deleted. For StarMath the Text should be
+ // passed to the Object
+ //2. If the cursor is at the end of an non empty paragraph a paragraph
+ // break should be insertet. StarMath objects are character bound and
+ // no break should be inserted.
+ //3. If an selektion is passed to a StarMath object, this object should
+ // not be activated. FALSE should be returned then.
+ BOOL bStarMath,
+ bActivate = TRUE;
+
+ SvGlobalName aCLSID;
+ ULONG lDummy;
+ String aDummy;
+ // determine source CLSID
+ aRef->SvPseudoObject::FillClass( &aCLSID, &lDummy, &aDummy, &aDummy, &aDummy);
+ bStarMath = SmModuleDummy::HasID( *aRef->GetSvFactory() );
+ if ( !bStarMath && aRef->IsLink() && SmModuleDummy::HasID( aCLSID ) )
+ {
+ //StarMath was the server which did the last recent work on
+ //this object.
+ bStarMath = TRUE;
+ }
+
+ if ( IsSelection() )
+ {
+ if ( bStarMath )
+ {
+ String aMathData;
+ GetSelectedText( aMathData, GETSELTXT_PARABRK_TO_ONLYCR );
+ if ( aMathData.Len() )
+ {
+ SvData aData( FORMAT_STRING );
+ aData.SetData( aMathData );
+ if ( aRef->SetData( &aData ) )
+ {
+ bActivate = FALSE;
+ //StarMath size depends on the Printer, which is
+ //passed here direct for avoiding time consuming
+ //connections between StarWriter and StarMath
+ aRef->OnDocumentPrinterChanged( GetPrt() );
+ }
+ else
+ bActivate = TRUE;
+ }
+ }
+ DelRight();
+ }
+
+ if ( !bStarMath )
+ SwFEShell::SplitNode( FALSE, FALSE );
+
+ EnterSelFrmMode();
+
+ SwFlyFrmAttrMgr aFrmMgr( TRUE, this, FRMMGR_TYPE_OLE );
+ aFrmMgr.SetSizeType(ATT_FIX_SIZE);
+
+ SwRect aBound;
+ CalcBoundRect( aBound, aFrmMgr.GetAnchor() );
+
+ //The Size should be suggested by the OLE server
+ MapMode aRefMap( aRef->GetMapUnit() );
+ Size aSz( aRef->GetVisArea().GetSize() );
+ if ( !aSz.Width() || !aSz.Height() )
+ {
+ aSz.Width() = aSz.Height() = 5000;
+ aSz = OutputDevice::LogicToLogic
+ ( aSz, MapMode( MAP_100TH_MM ), aRefMap );
+ }
+ MapMode aMyMap( MAP_TWIP );
+ aSz = OutputDevice::LogicToLogic( aSz, aRefMap, aMyMap );
+ //Object size can be limited
+ if ( aSz.Width() > aBound.Width() )
+ {
+ //Immer proportional begrenzen.
+ aSz.Height() = aSz.Height() * aBound.Width() / aSz.Width();
+ aSz.Width() = aBound.Width();
+ }
+ aFrmMgr.SetSize( aSz );
+ SwFEShell::Insert( &aRef, &aFrmMgr.GetAttrSet() );
+
+ EndAllAction();
+ GetView().AutoCaption(OLE_CAP, &aCLSID);
+ EndUndo(UNDO_INSERT);
+
+ return bActivate;
+ }
+ return FALSE;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Das aktuelle selektierte OLE-Objekt wird mit dem
+ Verb in den Server geladen.
+------------------------------------------------------------------------*/
+
+
+
+void SwWrtShell::LaunchOLEObj( long nVerb )
+{
+ if ( GetCntType() == CNT_OLE &&
+ !GetView().GetDocShell()->GetProtocol().IsInPlaceActive() )
+ {
+ SvInPlaceObjectRef xRef = GetOLEObj();
+ ASSERT( xRef.Is(), "OLE not found" );
+ SfxInPlaceClientRef xCli;
+ if ( !xRef->IsLink() )
+ {
+ // Link fuer Daten-Highlighting im Chart zuruecksetzen
+ if( SFX_APP()->HasFeature( SFX_FEATURE_SCHART ) )
+ {
+ SvGlobalName aObjClsId( *xRef->GetSvFactory() );
+ SchMemChart* pMemChart;
+ if( SchModuleDummy::HasID( aObjClsId ) &&
+ 0 != (pMemChart = SchDLL::GetChartData( xRef ) ))
+ {
+ pMemChart->SetSelectionHdl( LINK( this, SwWrtShell,
+ ChartSelectionHdl ) );
+ //#60043# Damit die DataBrowseBox nicht erscheint wird das
+ //Chart auf Readonly gesetzt wenn es eine Verbindung
+ //zu einer Tabelle hat.
+ if ( GetChartName( xRef ).Len() )
+ pMemChart->SetReadOnly( TRUE );
+ }
+ }
+
+ xCli = GetView().FindIPClient( xRef, &GetView().GetEditWin() );
+ if ( !xCli.Is() )
+ xCli = new SwOleClient( &GetView(), &GetView().GetEditWin() );
+
+ ((SwOleClient*)&xCli)->SetInDoVerb( TRUE );
+
+ xRef->DoConnect( xCli );
+ SvEmbeddedObjectRef xObj = &xRef;
+ CalcAndSetScale( xObj );
+ //#50270# Error brauchen wir nicht handeln, das erledigt das
+ //DoVerb in der SfxViewShell
+ GetView().SfxViewShell::DoVerb( xCli, nVerb );
+
+ ((SwOleClient*)&xCli)->SetInDoVerb( FALSE );
+ CalcAndSetScale( xObj );
+ }
+ else
+ {
+ ErrCode nErr;
+ SfxErrorContext aEc( ERRCTX_SO_DOVERB, &GetView().GetEditWin(),
+ RID_SO_ERRCTX );
+ nErr = xRef->DoVerb( nVerb );
+ if ( nErr )
+ ErrorHandler::HandleError( nErr );
+ }
+
+ }
+}
+
+BOOL SwWrtShell::FinishOLEObj() // Server wird beendet
+{
+ SfxInPlaceClient* pIPClient = GetView().GetIPClient();
+ BOOL bRet = pIPClient && pIPClient->IsInPlaceActive();
+ if( bRet )
+ {
+ // Link fuer Daten-Highlighting im Chart zuruecksetzen
+ if( SFX_APP()->HasFeature(SFX_FEATURE_SCHART) )
+ {
+ SvInPlaceObject* pObj = pIPClient->GetIPObj();
+ SvGlobalName aObjClsId( *pObj->GetSvFactory() );
+ SchMemChart* pMemChart;
+ if( SchModuleDummy::HasID( aObjClsId ) &&
+ 0 != (pMemChart = SchDLL::GetChartData( pObj ) ))
+ {
+ pMemChart->SetSelectionHdl( Link() );
+
+//ggfs. auch die Selektion restaurieren
+ LockView( TRUE ); //Scrollen im EndAction verhindern
+ ClearMark();
+ LockView( FALSE );
+ }
+ }
+
+ //InPlace beenden.
+ pIPClient->GetProtocol().Reset2Open();
+ SFX_APP()->SetViewFrame( GetView().GetViewFrame() );
+ }
+ return bRet;
+}
+
+
+void SwWrtShell::CalcAndSetScale( SvEmbeddedObjectRef xObj,
+ const SwRect *pFlyPrtRect,
+ const SwRect *pFlyFrmRect )
+{
+ //Einstellen der Skalierung am Client. Diese ergibt sich aus der Differenz
+ //zwischen der VisArea des Objektes und der ObjArea.
+ ASSERT( xObj.Is(), "ObjectRef not valid" );
+
+ SfxInPlaceClientRef xCli = GetView().FindIPClient( xObj, &GetView().GetEditWin() );
+ if ( !xCli.Is() || !xCli->GetEnv() )
+ {
+ //Das kann ja wohl nur ein nicht aktives Objekt sein. Diese bekommen
+ //auf Wunsch die neue Groesse als VisArea gesetzt (StarChart)
+ if( SVOBJ_MISCSTATUS_SERVERRESIZE & xObj->GetMiscStatus() )
+ {
+ SwRect aRect( pFlyPrtRect ? *pFlyPrtRect
+ : GetAnyCurRect( RECT_FLY_PRT_EMBEDDED, 0, &xObj ));
+ if( !aRect.IsEmpty() )
+ xObj->SetVisArea( OutputDevice::LogicToLogic(
+ aRect.SVRect(), MAP_TWIP, xObj->GetMapUnit() ));
+ return;
+ }
+ if ( SVOBJ_MISCSTATUS_ALWAYSACTIVATE & xObj->GetMiscStatus() ||
+ SVOBJ_MISCSTATUS_RESIZEONPRINTERCHANGE & xObj->GetMiscStatus() )
+ {
+ xCli = new SwOleClient( &GetView(), &GetView().GetEditWin() );
+ }
+ else
+ return;
+ }
+
+ Size aVisArea( xObj->GetVisArea().GetSize() );
+ BOOL bSetScale100 = TRUE;
+ SvContainerEnvironment *pEnv = xCli->GetEnv();
+
+ // solange keine vernuenftige Size vom Object kommt, kann nichts
+ // skaliert werden
+ if( aVisArea.Width() && aVisArea.Height() )
+ {
+ const MapMode aTmp( MAP_TWIP );
+ aVisArea = OutputDevice::LogicToLogic( aVisArea, xObj->GetMapUnit(), aTmp);
+ Size aObjArea;
+ if ( pFlyPrtRect )
+ aObjArea = pFlyPrtRect->SSize();
+ else
+ aObjArea = GetAnyCurRect( RECT_FLY_PRT_EMBEDDED, 0, &xObj ).SSize();
+
+ // differ the aObjArea and aVisArea by 1 Pixel then set new VisArea
+ long nX, nY;
+ SwSelPaintRects::Get1PixelInLogic( *this, &nX, &nY );
+ if( !( aVisArea.Width() - nX <= aObjArea.Width() &&
+ aVisArea.Width() + nX >= aObjArea.Width() &&
+ aVisArea.Height()- nY <= aObjArea.Height()&&
+ aVisArea.Height()+ nY >= aObjArea.Height() ))
+ {
+ if( SVOBJ_MISCSTATUS_RESIZEONPRINTERCHANGE & xObj->GetMiscStatus() )
+ {
+ //This type of objects should never be resized.
+ //If this request comes from the Writer core (inaktive Object
+ //ist resized), the Object should be resized too.
+ //If this request comes from the Object itself, the Frame
+ //in the Writer core should be resized.
+ if ( pFlyPrtRect ) //Request from core?
+ {
+ xObj->SetVisArea( OutputDevice::LogicToLogic(
+ pFlyPrtRect->SVRect(), MAP_TWIP, xObj->GetMapUnit() ));
+ }
+ else
+ {
+ SwRect aTmp( Point( LONG_MIN, LONG_MIN ), aVisArea );
+ RequestObjectResize( aTmp, xObj );
+ }
+ //Der Rest erledigt sich, weil wir eh wiederkommen sollten, evtl.
+ //sogar rekursiv.
+ return;
+ }
+ else
+ {
+ const Fraction aScaleWidth ( aObjArea.Width(), aVisArea.Width() );
+ const Fraction aScaleHeight( aObjArea.Height(), aVisArea.Height());
+ pEnv->SetSizeScale( aScaleWidth, aScaleHeight );
+ bSetScale100 = FALSE;
+ }
+ }
+ }
+
+ if( bSetScale100 )
+ {
+ const Fraction aScale( 1, 1 );
+ pEnv->SetSizeScale( aScale, aScale );
+ }
+
+ //Jetzt ist auch der guenstige Zeitpunkt die ObjArea einzustellen.
+ //Die Scalierung muss beruecksichtigt werden.
+ SwRect aArea;
+ if ( pFlyPrtRect )
+ {
+ aArea = *pFlyPrtRect;
+ aArea += pFlyFrmRect->Pos();
+ }
+ else
+ {
+ aArea = GetAnyCurRect( RECT_FLY_PRT_EMBEDDED, 0, &xObj );
+ aArea.Pos() += GetAnyCurRect( RECT_FLY_EMBEDDED, 0, &xObj ).Pos();
+ }
+ aArea.Width ( Fraction( aArea.Width() ) / pEnv->GetScaleWidth() );
+ aArea.Height( Fraction( aArea.Height() ) / pEnv->GetScaleHeight());
+ pEnv->SetObjArea( aArea.SVRect() );
+
+ if ( SVOBJ_MISCSTATUS_ALWAYSACTIVATE & xObj->GetMiscStatus() )
+ {
+ xObj->DoConnect( xCli );
+ xObj->DoVerb();
+ }
+}
+
+
+
+void SwWrtShell::ConnectObj( SvInPlaceObjectRef xIPObj, const SwRect &rPrt,
+ const SwRect &rFrm )
+{
+ if ( !xIPObj->IsLink() )
+ {
+ SfxInPlaceClientRef xCli = GetView().FindIPClient( xIPObj,
+ &GetView().GetEditWin());
+ if ( !xCli.Is() )
+ xCli = new SwOleClient( &GetView(), &GetView().GetEditWin() );
+ xIPObj->DoConnect( xCli );
+ SvEmbeddedObjectRef xObj = &xIPObj;
+ CalcAndSetScale( xObj, &rPrt, &rFrm );
+ }
+}
+
+IMPL_LINK( SwWrtShell, ChartSelectionHdl, ChartSelectionInfo *, pInfo )
+{
+ long nRet = 0;
+
+#ifdef USED
+// JP 03.11.98: mit der Selektion kann es nicht gehen, da dann der Cursor
+// immer sichtbar gemacht wird. Das fuehrt dann aber zu
+// unbeabsichtigten scrollen. Ausserdem sind 2 Selektionen
+// vorhanden - TabellenSelektion und die OLE-Rahmenselektion.
+
+ if( pInfo )
+ {
+ if( CHART_SEL_QUERYSUPPORT & pInfo->nSelection )
+ nRet = CHART_SEL_NONE | CHART_SEL_ALL | CHART_SEL_ROW |
+ CHART_SEL_COL | CHART_SEL_POINT;
+ else
+ {
+ // dann suche mal die Tabelle zu diesem StarChart-Object
+ SfxInPlaceClient* pIPClient = GetView().GetIPClient();
+ SvInPlaceObject* pObj = pIPClient &&
+ pIPClient->IsInPlaceActive()
+ ? pIPClient->GetIPObj() : 0;
+ String sTable;
+ if( pObj )
+ sTable = GetChartName( pObj );
+
+ if( sTable.Len() )
+ {
+ LockView( TRUE ); //Scrollen im EndAction verhindern
+ StartAction();
+
+ ClearMark();
+ if( GotoTable( sTable ) )
+ {
+ // !!!!!!!!!!!!!!!
+ // im nSelection sind Flags gesetzt, koennen also
+ // auch gemischt auftauchen, darum das nICol, nIRow
+ // !!!!!!!!!!!!!!!!
+ USHORT nIRow = pInfo->nRow, nICol = pInfo->nCol,
+ nRow = 0, nCol = 0;
+
+ SchMemChart* pMemChart = SchDLL::GetChartData( pObj );
+ if( pMemChart && 2 == pMemChart->SomeData2().Len() )
+ {
+ if( '1' == pMemChart->SomeData2().GetChar( 0 ) )
+ ++nIRow;
+ if( '1' == pMemChart->SomeData2().GetChar( 1 ))
+ ++nICol;
+ }
+
+// ist das default if( (CHART_SEL_NONE | CHART_SEL_ALL) & pInfo->nSelection )
+ if( CHART_SEL_ROW & pInfo->nSelection )
+ nRow = nIRow, nCol = 0;
+ if( CHART_SEL_COL & pInfo->nSelection )
+ nCol = nICol, nRow = 0;
+ if( CHART_SEL_POINT & pInfo->nSelection )
+ nCol = nICol, nRow = nIRow;
+
+ if( GotoTblBox( SwTable::GetBoxName( nRow, nCol ) ) )
+ {
+ nRet = pInfo->nSelection;
+ if( ( CHART_SEL_ROW & pInfo->nSelection && !SelTblRow() ) ||
+ ( CHART_SEL_COL & pInfo->nSelection && !SelTblCol() ) ||
+ ( CHART_SEL_ALL & pInfo->nSelection &&
+ ( SetMark(),
+ !MoveTable( fnTableCurr, fnTableEnd ))) )
+ nRet = 0;
+ else if( CHART_SEL_POINT & pInfo->nSelection )
+ {
+ // Selektion der einen Box
+ SetMark();
+ if( GoPrevCell() )
+ GoNextCell( FALSE );
+ else if( GoNextCell( FALSE ) )
+ GoPrevCell();
+ else
+ ClearMark();
+ }
+ }
+ }
+
+ EndAction();
+ LockView( FALSE );
+ }
+ }
+ }
+#endif
+ return nRet;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Einfuegen harter Seitenumbruch;
+ Selektionen werden ueberschrieben
+------------------------------------------------------------------------*/
+
+
+
+void SwWrtShell::InsertPageBreak(const String *pPageDesc, USHORT nPgNum )
+{
+ ACT_KONTEXT(this);
+ ResetCursorStack();
+ if(!_CanInsert())
+ return;
+
+ StartUndo(UIUNDO_INSERT_PAGE_BREAK);
+
+ if ( !IsCrsrInTbl() )
+ {
+ if(HasSelection())
+ DelRight();
+ SwFEShell::SplitNode();
+ }
+
+ const SwPageDesc *pDesc = pPageDesc
+ ? FindPageDescByName( *pPageDesc, TRUE ) : 0;
+ if( pDesc )
+ {
+ SwFmtPageDesc aDesc( pDesc );
+ aDesc.SetNumOffset( nPgNum );
+ SetAttr( aDesc );
+ }
+ else
+ SetAttr( SvxFmtBreakItem(SVX_BREAK_PAGE_BEFORE) );
+ EndUndo(UIUNDO_INSERT_PAGE_BREAK);
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Einfuegen harter Zeilenumbruch;
+ Selektionen werden ueberschrieben
+------------------------------------------------------------------------*/
+
+
+void SwWrtShell::InsertLineBreak()
+{
+ ResetCursorStack();
+
+ if(!_CanInsert())
+ return;
+
+ if(HasSelection())
+ DelRight();
+
+ SwWrtShell::Insert(String((char)0x0A));
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Einfuegen harter Spaltenumbruch;
+ Selektionen werden ueberschrieben
+------------------------------------------------------------------------*/
+
+
+void SwWrtShell::InsertColumnBreak()
+{
+ ACT_KONTEXT(this);
+ ResetCursorStack();
+ if(!_CanInsert())
+ return;
+ StartUndo(UIUNDO_INSERT_COLUMN_BREAK);
+
+ if ( !IsCrsrInTbl() )
+ {
+ if(HasSelection())
+ DelRight();
+ SwFEShell::SplitNode();
+ }
+ SetAttr(SvxFmtBreakItem(SVX_BREAK_COLUMN_BEFORE));
+
+ EndUndo(UIUNDO_INSERT_COLUMN_BREAK);
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Einfuegen Fussnote
+ Parameter: rStr -- optionales Fussnotenzeichen
+------------------------------------------------------------------------*/
+
+
+void SwWrtShell::InsertFootnote(const String &rStr, BOOL bEndNote, BOOL bEdit )
+{
+ ResetCursorStack();
+ if(!_CanInsert())
+ return;
+
+ if(HasSelection())
+ DelRight();
+
+ SwFmtFtn aFootNote( bEndNote );
+ if(rStr.Len())
+ aFootNote.SetNumStr( rStr );
+
+ SetAttr(aFootNote);
+
+ if ( bEdit )
+ {
+ // zur Bearbeiung des Fussnotentextes
+ Left();
+ GotoFtnTxt();
+ }
+}
+/*------------------------------------------------------------------------
+ Beschreibung: SplitNode; hier auch, da
+ - selektierter Inhalt geloescht wird;
+ - der Cursorstack gfs. zurueckgesetzt wird.
+------------------------------------------------------------------------*/
+
+
+void SwWrtShell::SplitNode( BOOL bAutoFmt, BOOL bCheckTableStart )
+{
+ ResetCursorStack();
+ if(!_CanInsert())
+ return;
+
+ ACT_KONTEXT(this);
+
+ rView.GetEditWin().FlushInBuffer( this );
+ BOOL bHasSel = HasSelection();
+ if( bHasSel )
+ {
+ StartUndo( UNDO_INSERT );
+ DelRight();
+ }
+
+ SwFEShell::SplitNode( bAutoFmt, bCheckTableStart );
+ if( bHasSel )
+ EndUndo( UNDO_INSERT );
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Numerierung anschalten
+ Parameter: Optionale Angabe eines Namens fuer die benannte Liste;
+ dieser bezeichnet eine Position, wenn er in eine
+ Zahl konvertierbar ist und kleiner ist als nMaxRules.
+-------------------------------------------------------------------------*/
+
+
+// zum Testen der CharFormate an der Numerierung
+// extern void SetNumChrFmt( SwWrtShell*, SwNumRules& );
+
+void SwWrtShell::NumOn()
+{
+ SwNumRule aNumRule( GetUniqueNumRuleName() );
+
+ const SwNumRule* pCurRule = GetCurNumRule();
+ if( !pCurRule )
+ {
+ // Zeichenvorlage an die Numerierung haengen
+ SwCharFmt* pChrFmt = GetCharFmtFromPool( RES_POOLCHR_NUM_LEVEL );
+ SwDocShell* pDocSh = GetView().GetDocShell();
+ BOOL bHtml = 0 != PTR_CAST(SwWebDocShell, pDocSh);
+ for( BYTE nLvl = 0; nLvl < MAXLEVEL; ++nLvl )
+ {
+ SwNumFmt aFmt( aNumRule.Get( nLvl ) );
+ aFmt.SetCharFmt( pChrFmt );
+ if(bHtml && nLvl)
+ {
+ // 1/2" fuer HTML
+ aFmt.SetLSpace(720);
+ aFmt.SetAbsLSpace(nLvl * 720);
+ }
+ aNumRule.Set( nLvl, aFmt );
+ }
+ SetCurNumRule( aNumRule );
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Default-Bulletliste erfragen
+------------------------------------------------------------------------*/
+
+void SwWrtShell::BulletOn()
+{
+ SwNumRule aRule( GetUniqueNumRuleName() );
+
+ SwCharFmt* pChrFmt = GetCharFmtFromPool( RES_POOLCHR_BUL_LEVEL );
+ const Font* pFnt = &SwNumRule::GetDefBulletFont();
+
+ SwDocShell* pDocSh = GetView().GetDocShell();
+ BOOL bHtml = 0 != PTR_CAST(SwWebDocShell, pDocSh);
+ for( BYTE n = 0; n < MAXLEVEL; ++n )
+ {
+ SwNumFmt aFmt( aRule.Get( n ) );
+ aFmt.SetBulletFont( pFnt );
+ aFmt.SetBulletChar( cBulletChar );
+ aFmt.eType = SVX_NUM_CHAR_SPECIAL;
+ aFmt.SetCharFmt( pChrFmt );
+ if(bHtml && n)
+ {
+ // 1/2" fuer HTML
+ aFmt.SetLSpace(720);
+ aFmt.SetAbsLSpace(n * 720);
+ }
+ aRule.Set( n, aFmt );
+ }
+ SetCurNumRule( aRule );
+}
+
+/*--------------------------------------------------
+
+--------------------------------------------------*/
+int SwWrtShell::GetSelectionType() const
+{
+ // ContentType kann nicht ermittelt werden innerhalb einer
+ // Start-/Endactionklammerung.
+ // Da es keinen ungueltigen Wert gibt, wird TEXT geliefert.
+ // Der Wert ist egal, da in EndAction ohnehin aktualisiert wird.
+
+ if ( BasicActionPend() )
+ return IsSelFrmMode() ? SEL_FRM : SEL_TXT;
+
+// if ( IsTableMode() )
+// return SEL_TBL | SEL_TBL_CELLS;
+
+ SwView &rView = ((SwView&)GetView());
+ USHORT nCnt;
+
+ // Rahmen einfuegen ist kein DrawMode
+ if ( !rView.GetEditWin().IsFrmAction() &&
+ (IsObjSelected() || (rView.IsDrawMode() && !IsFrmSelected()) ))
+ {
+ if (GetDrawView()->IsTextEdit())
+ nCnt = SEL_DRW_TXT;
+ else
+ {
+ if (GetView().IsFormMode()) // Nur Forms selektiert
+ nCnt = SEL_DRW_FORM;
+ else
+ nCnt = SEL_DRW; // Irgendein Draw-Objekt
+
+ if (rView.IsBezierEditMode())
+ nCnt |= SEL_BEZ;
+ }
+
+ return nCnt;
+ }
+
+ nCnt = GetCntType();
+
+ if ( IsFrmSelected() )
+ {
+ if (rView.IsDrawMode())
+ rView.LeaveDrawCreate(); // Aufraeumen (Bug #45639)
+ if ( !(nCnt & (CNT_GRF | CNT_OLE)) )
+ return SEL_FRM;
+ }
+
+ if ( IsCrsrInTbl() )
+ nCnt |= SEL_TBL;
+
+ if ( IsTableMode() )
+ nCnt |= (SEL_TBL | SEL_TBL_CELLS);
+
+ if ( GetCurNumRule() )
+ nCnt |= SEL_NUM;
+
+ return nCnt;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Finden der TextCollection mit dem Name rCollname
+ Return: Pointer auf die Collection oder 0, wenn keine
+ TextCollection mit diesem Namen existiert oder
+ diese eine Defaultvorlage ist.
+------------------------------------------------------------------------*/
+
+
+SwTxtFmtColl *SwWrtShell::GetParaStyle(const String &rCollName, GetStyle eCreate )
+{
+ SwTxtFmtColl* pColl = FindTxtFmtCollByName( rCollName );
+ if( !pColl && GETSTYLE_NOCREATE != eCreate )
+ {
+ USHORT nId = GetPoolId( rCollName, GET_POOLID_TXTCOLL );
+ if( USHRT_MAX != nId || GETSTYLE_CREATEANY == eCreate )
+ pColl = GetTxtCollFromPool( nId );
+ }
+ return pColl;
+}
+/*------------------------------------------------------------------------
+ Beschreibung: Finden der Zeichenvorlage mit dem Name rCollname
+ Return: Pointer auf die Collection oder 0, wenn keine
+ Zeichenvorlage mit diesem Namen existiert oder
+ diese eine Defaultvorlage oder automatische Vorlage ist.
+------------------------------------------------------------------------*/
+
+
+
+SwCharFmt *SwWrtShell::GetCharStyle(const String &rFmtName, GetStyle eCreate )
+{
+ SwCharFmt* pFmt = FindCharFmtByName( rFmtName );
+ if( !pFmt && GETSTYLE_NOCREATE != eCreate )
+ {
+ USHORT nId = GetPoolId( rFmtName, GET_POOLID_CHRFMT );
+ if( USHRT_MAX != nId || GETSTYLE_CREATEANY == eCreate )
+ pFmt = (SwCharFmt*)GetFmtFromPool( nId );
+ }
+ return pFmt;
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Finden des Tabellenformates mit dem Name rFmtname
+ Return: Pointer auf das Format oder 0, wenn kein
+ Rahmenformat mit diesem Namen existiert oder
+ dieses eine Defaultformat oder automatisches Format ist.
+------------------------------------------------------------------------*/
+
+
+
+SwFrmFmt *SwWrtShell::GetTblStyle(const String &rFmtName)
+{
+ SwFrmFmt *pFmt = 0;
+ for( USHORT i = GetTblFrmFmtCount(); i; )
+ if( !( pFmt = &GetTblFrmFmt( --i ) )->IsDefault() &&
+ pFmt->GetName() == rFmtName && IsUsed( *pFmt ) )
+ return pFmt;
+ return 0;
+}
+
+
+/*------------------------------------------------------------------------
+ Beschreibung: Anwenden der Vorlagen
+------------------------------------------------------------------------*/
+
+
+
+void SwWrtShell::SetPageStyle(const String &rCollName)
+{
+ if( !SwCrsrShell::HasSelection() && !IsSelFrmMode() && !IsObjSelected() )
+ {
+ SwPageDesc* pDesc = FindPageDescByName( rCollName, TRUE );
+ if( pDesc )
+ ChgCurPageDesc( *pDesc );
+ }
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Zugriff Vorlagen
+------------------------------------------------------------------------*/
+
+
+
+String SwWrtShell::GetCurPageStyle( const BOOL bCalcFrm ) const
+{
+ return GetPageDesc(GetCurPageDesc( bCalcFrm )).GetName();
+}
+
+/*------------------------------------------------------------------------
+ Beschreibung: Aktuelle Vorlage anhand der geltenden Attribute aendern
+------------------------------------------------------------------------*/
+
+
+void SwWrtShell::QuickUpdateStyle()
+{
+ SwTxtFmtColl *pColl = GetCurTxtFmtColl();
+
+ // Standard kann nicht geaendert werden
+ if(pColl && !pColl->IsDefault())
+ {
+ FillByEx(pColl);
+ // Vorlage auch anwenden, um harte Attributierung
+ // zu entfernen
+ SetTxtFmtColl(pColl);
+ }
+}
+
+
+void SwWrtShell::AutoUpdatePara(SwTxtFmtColl* pColl, const SfxItemSet& rStyleSet)
+{
+ SfxItemSet aCoreSet( GetAttrPool(),
+ RES_CHRATR_BEGIN, RES_CHRATR_END - 1,
+ RES_PARATR_BEGIN, RES_PARATR_END - 1,
+ RES_FRMATR_BEGIN, RES_FRMATR_END - 1,
+ SID_ATTR_TABSTOP_POS, SID_ATTR_TABSTOP_POS,
+ SID_ATTR_TABSTOP_DEFAULTS, SID_ATTR_TABSTOP_DEFAULTS,
+ SID_ATTR_TABSTOP_OFFSET, SID_ATTR_TABSTOP_OFFSET,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
+ SID_ATTR_PARA_MODEL, SID_ATTR_PARA_KEEP,
+ SID_ATTR_PARA_PAGENUM, SID_ATTR_PARA_PAGENUM,
+ 0 );
+ GetAttr( aCoreSet );
+ BOOL bReset = FALSE;
+ SfxItemIter aParaIter( aCoreSet );
+ const SfxPoolItem* pParaItem = aParaIter.FirstItem();
+ while( pParaItem )
+ {
+ if(!IsInvalidItem(pParaItem))
+ {
+ USHORT nWhich = pParaItem->Which();
+ if(SFX_ITEM_SET == aCoreSet.GetItemState(nWhich) &&
+ SFX_ITEM_SET == rStyleSet.GetItemState(nWhich))
+ {
+ aCoreSet.ClearItem(nWhich);
+ bReset = TRUE;
+ }
+ }
+ pParaItem = aParaIter.NextItem();
+ }
+ StartAction();
+ if(bReset)
+ {
+ ResetAttr();
+ SetAttr(aCoreSet);
+ }
+ pColl->SetAttr( rStyleSet );
+ EndAction();
+}
+
+/*-----------------12.03.97 12.24-------------------
+
+--------------------------------------------------*/
+
+void SwWrtShell::AutoUpdateFrame( SwFrmFmt* pFmt, const SfxItemSet& rStyleSet )
+{
+ StartAction();
+
+ ResetFlyFrmAttr( 0, &rStyleSet );
+ pFmt->SetAttr( rStyleSet );
+
+ EndAction();
+}
+
+
+void SwWrtShell::AutoCorrect( SvxAutoCorrect& rACorr, sal_Unicode cChar )
+{
+ ResetCursorStack();
+ if(_CanInsert())
+ {
+ BOOL bStarted = FALSE;
+ if(HasSelection())
+ {
+ // nur hier klammern, da das normale Insert schon an der
+ // Editshell geklammert ist
+ StartAllAction();
+ StartUndo(UNDO_INSERT);
+ bStarted = TRUE;
+ DelRight();
+ }
+ SwEditShell::AutoCorrect( rACorr, IsInsMode(), cChar );
+
+ if(bStarted)
+ {
+ EndAllAction();
+ EndUndo(UNDO_INSERT);
+ }
+ }
+}
+
+
+/*
+ * eine Art kontrollierter copy ctor
+ */
+
+SwWrtShell::SwWrtShell(SwWrtShell *pSh, Window *pWin, SwView &rShell) :
+ SwFEShell( pSh,pWin ),
+ COMMON_INI_LIST
+{
+ BITFLD_INI_LIST
+ SET_CURR_SHELL( this );
+ SetSfxViewShell( (SfxViewShell *)&rShell );
+ SetFlyMacroLnk( LINK(this, SwWrtShell, ExecFlyMac) );
+}
+
+
+SwWrtShell::SwWrtShell(SwDoc *pDoc,
+ uno::Reference< linguistic::XSpellChecker1 > &xSpell,
+ uno::Reference< linguistic::XHyphenator > &xHyph,
+ Window *pWin, SwView &rShell, SwRootFrm *pRoot,
+ const SwViewOption *pViewOpt )
+ : SwFEShell(pDoc, xSpell, xHyph, pWin, pRoot, pViewOpt),
+ COMMON_INI_LIST
+{
+ BITFLD_INI_LIST
+ SET_CURR_SHELL( this );
+ SetSfxViewShell( (SfxViewShell *)&rShell );
+ SetFlyMacroLnk( LINK(this, SwWrtShell, ExecFlyMac) );
+}
+
+/*
+ * ctor
+ */
+
+
+
+SwWrtShell::~SwWrtShell()
+{
+ SET_CURR_SHELL( this );
+ while(IsModePushed())
+ PopMode();
+ while(PopCrsr(FALSE))
+ ;
+}
+
+
+
+
+void SwWrtShell::StartBasicAction()
+{
+ IncBasicAction();
+ StartAllAction();
+}
+
+
+
+void SwWrtShell::SetBasicActionCount(USHORT nSet)
+{
+ DBG_ASSERT(!GetBasicActionCnt(), "Es sind schon Actions offen!")
+ while( nSet )
+ {
+ IncBasicAction();
+ StartAllAction();
+ nSet--;
+ }
+}
+
+
+
+void SwWrtShell::EndBasicAction()
+{
+ if(GetBasicActionCnt())
+ {
+ DecBasicAction();
+ EndAllAction();
+ }
+}
+
+
+
+USHORT SwWrtShell::EndAllBasicActions()
+{
+ USHORT nRet = GetBasicActionCnt();
+ while( GetBasicActionCnt() )
+ {
+ DecBasicAction();
+ EndAllAction();
+ }
+ return nRet;
+}
+
+
+
+FASTBOOL SwWrtShell::Pop( BOOL bOldCrsr )
+{
+ FASTBOOL bRet = SwCrsrShell::Pop( bOldCrsr );
+ if( bRet && IsSelection() )
+ {
+ fnSetCrsr = &SwWrtShell::SetCrsrKillSel;
+ fnKillSel = &SwWrtShell::ResetSelect;
+ }
+ return bRet;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+
+
+BOOL SwWrtShell::CanInsert()
+{
+ return (!(IsSelFrmMode() | IsObjSelected() | (GetView().GetDrawFuncPtr() != NULL)));
+}
+
+
+
+ // die Core erzeugt eine Selektion, das SttSelect muss gerufen werden
+void SwWrtShell::NewCoreSelection()
+{
+ SttSelect();
+}
+
+// --------------
+
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.342 2000/09/18 16:06:27 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.341 2000/08/17 11:36:19 jp
+ remove the SW graphicmanager
+
+ Revision 1.340 2000/08/04 10:54:03 jp
+ Soft-/HardHyphens & HardBlanks changed from attribute to unicode character; remove unused methods
+
+ Revision 1.339 2000/07/04 15:19:25 tl
+ XHyphenator1 => XHyphenator
+
+ Revision 1.338 2000/06/27 17:42:38 jp
+ Bug #76332#: internal SplitNode don't insert a new node before a table
+
+ Revision 1.337 2000/06/26 13:28:29 os
+ InsertDBColumnCntnt removed
+
+ Revision 1.336 2000/05/19 12:58:39 jp
+ use WordSelection class for check chars
+
+ Revision 1.335 2000/05/19 11:00:26 jp
+ Changes for Unicode
+
+ Revision 1.334 2000/04/20 12:51:14 os
+ GetName() returns String&
+
+ Revision 1.333 2000/04/19 11:18:25 os
+ UNICODE
+
+ Revision 1.332 2000/03/30 13:26:18 os
+ UNO III
+
+ Revision 1.331 2000/03/23 07:51:11 os
+ UNO III
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/wrtsh/wrtsh2.cxx b/sw/source/ui/wrtsh/wrtsh2.cxx
new file mode 100644
index 000000000000..9b55eb3b64a3
--- /dev/null
+++ b/sw/source/ui/wrtsh/wrtsh2.cxx
@@ -0,0 +1,805 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtsh2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _HINTIDS_HXX
+#include <hintids.hxx> // define ITEMIDs
+#endif
+
+#ifndef _SFXMACITEM_HXX //autogen
+#include <svtools/macitem.hxx>
+#endif
+#ifndef _SFXFRAME_HXX //autogen
+#include <sfx2/frame.hxx>
+#endif
+#ifndef _SFXDOCINF_HXX //autogen
+#include <sfx2/docinf.hxx>
+#endif
+#ifndef _SFXINIMGR_HXX //autogen
+#include <svtools/iniman.hxx>
+#endif
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _SFX_FCONTNR_HXX //autogen
+#include <sfx2/fcontnr.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _LINKMGR_HXX //autogen
+#include <so3/linkmgr.hxx>
+#endif
+
+#ifndef _FMTINFMT_HXX //autogen
+#include <fmtinfmt.hxx>
+#endif
+#ifndef _FRMATR_HXX
+#include <frmatr.hxx>
+#endif
+#ifndef _SWTYPES_HXX
+#include <swtypes.hxx> // SET_CURR_SHELL
+#endif
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _DOCSH_HXX
+#include <docsh.hxx>
+#endif
+#ifndef _FLDBAS_HXX
+#include <fldbas.hxx> // Felder
+#endif
+#ifndef _EXPFLD_HXX
+#include <expfld.hxx>
+#endif
+#ifndef _DDEFLD_HXX
+#include <ddefld.hxx>
+#endif
+#ifndef _DOCUFLD_HXX
+#include <docufld.hxx>
+#endif
+#ifndef _REFFLD_HXX
+#include <reffld.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx>
+#endif
+#ifndef _NUMRULE_HXX
+#include <numrule.hxx> // Numerierung
+#endif
+#ifndef _DOC_HXX
+#include <doc.hxx>
+#endif
+#ifndef _INPDLG_HXX
+#include <inpdlg.hxx> // Eingabefelder
+#endif
+#ifndef _VIEWOPT_HXX
+#include <viewopt.hxx> // SwViewOptions
+#endif
+#ifndef _FRMFMT_HXX
+#include <frmfmt.hxx> // fuer UpdateTable
+#endif
+#ifndef _SWTABLE_HXX
+#include <swtable.hxx> // fuer UpdateTable
+#endif
+#ifndef _HINTS_HXX
+#include <hints.hxx> // fuer UpdateTable
+#endif
+#ifndef _MDIEXP_HXX
+#include <mdiexp.hxx>
+#endif
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _SWEVENT_HXX
+#include <swevent.hxx>
+#endif
+#ifndef _POOLFMT_HXX
+#include <poolfmt.hxx>
+#endif
+#ifndef _SECTION_HXX
+#include <section.hxx>
+#endif
+#ifndef _NAVICONT_HXX
+#include <navicont.hxx>
+#endif
+#ifndef _NAVIPI_HXX
+#include <navipi.hxx>
+#endif
+
+#ifndef _CMDID_H
+#include <cmdid.h>
+#endif
+#ifndef _WRTSH_HRC
+#include <wrtsh.hrc>
+#endif
+
+
+void lcl_LoadUrl( const String& rURL, const String& rTargetFrameName,
+ const String& rReferer, USHORT nFilter, SfxFrameItem& );
+
+
+/*------------------------------------------------------------------------
+ Beschreibung:
+------------------------------------------------------------------------*/
+
+void SwWrtShell::Insert(SwField &rFld)
+{
+ ResetCursorStack();
+ if(!_CanInsert())
+ return;
+ StartAllAction();
+ StartUndo(UNDO_INSERT);
+
+//JP 09.06.97: Wozu die Abpruefung des FeldTypen??
+// Wobei das SETREFFLD kein Feld ist und hier garnicht durchkommt!
+// USHORT nType = rFld.GetTyp()->Which();
+// if(HasSelection() && nType != RES_HIDDENTXTFLD && nType != RES_SETREFFLD)
+ if( HasSelection() )
+ DelRight();
+
+ SwEditShell::Insert(rFld);
+ EndUndo(UNDO_INSERT);
+ EndAllAction();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Felder Update anschmeissen
+ --------------------------------------------------------------------*/
+
+
+
+void SwWrtShell::UpdateInputFlds( SwInputFieldList* pLst, BOOL bOnlyInSel )
+{
+ // ueber die Liste der Eingabefelder gehen und Updaten
+ SwInputFieldList* pTmp = pLst;
+ if( !pTmp )
+ pTmp = new SwInputFieldList( this );
+
+ if (bOnlyInSel)
+ pTmp->RemoveUnselectedFlds();
+
+ pTmp->PushCrsr();
+
+ const USHORT nCnt = pTmp->Count();
+ BOOL bCancel = FALSE;
+ for( USHORT i = 0; i < nCnt && !bCancel; ++i )
+ {
+ pTmp->GotoFieldPos( i );
+ bCancel = StartInputFldDlg( pTmp->GetField( i ), TRUE );
+
+ // Sonst Updatefehler bei Multiselektion:
+ pTmp->GetField( i )->GetTyp()->UpdateFlds();
+ }
+ pTmp->PopCrsr();
+
+ if( !pLst )
+ delete pTmp;
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: EingabeDialog fuer ein bestimmtes Feld starten
+ --------------------------------------------------------------------*/
+
+
+
+BOOL SwWrtShell::StartInputFldDlg( SwField* pFld, BOOL bNextButton )
+{
+//JP 14.08.96: Bug 30332 - nach Umbau der modularietaet im SFX, muss jetzt
+// das TopWindow der Application benutzt werden.
+// SwFldInputDlg* pDlg = new SwFldInputDlg( GetWin(), *this, pFld );
+
+ SwFldInputDlg* pDlg = new SwFldInputDlg( NULL, *this, pFld, bNextButton );
+ BOOL bRet = RET_CANCEL == pDlg->Execute();
+
+ delete pDlg;
+ GetWin()->Update();
+ return bRet;
+}
+
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Verzeichnis einfuegen Selektion loeschen
+ --------------------------------------------------------------------*/
+
+
+
+void SwWrtShell::InsertTableOf(const SwTOXBase& rTOX, const SfxItemSet* pSet)
+{
+ if(!_CanInsert())
+ return;
+
+ if(HasSelection())
+ DelRight();
+
+ SwEditShell::InsertTableOf(rTOX, pSet);
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Verzeichnis Updaten Selektion loeschen
+ --------------------------------------------------------------------*/
+
+BOOL SwWrtShell::UpdateTableOf(const SwTOXBase& rTOX, const SfxItemSet* pSet)
+{
+ if(!_CanInsert())
+ return FALSE;
+
+ return SwEditShell::UpdateTableOf(rTOX, pSet);
+}
+
+ // ein Klick aus das angegebene Feld. Der Cursor steht auf diesem.
+ // Fuehre die vor definierten Aktionen aus.
+
+
+void SwWrtShell::ClickToField( const SwField& rFld, USHORT nFilter )
+{
+ bIsInClickToEdit = TRUE;
+ switch( rFld.GetTyp()->Which() )
+ {
+ case RES_JUMPEDITFLD:
+ {
+ USHORT nSlotId = 0;
+ switch( rFld.GetFormat() )
+ {
+ case JE_FMT_TABLE:
+ nSlotId = FN_INSERT_TABLE;
+ break;
+
+ case JE_FMT_FRAME:
+ nSlotId = FN_INSERT_FRAME;
+ break;
+
+ case JE_FMT_GRAPHIC: nSlotId = SID_INSERT_GRAPHIC; break;
+ case JE_FMT_OLE: nSlotId = SID_INSERT_OBJECT; break;
+
+// case JE_FMT_TEXT:
+ }
+
+ Right( TRUE ); // Feld selektieren
+
+ if( nSlotId )
+ {
+ StartUndo( UNDO_START );
+ GetView().GetViewFrame()->GetDispatcher()->Execute( nSlotId,
+ SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD );
+ EndUndo( UNDO_END );
+ }
+ }
+ break;
+
+ case RES_MACROFLD:
+ {
+ const SwMacroField *pFld = (const SwMacroField*)&rFld;
+ String sLibName(pFld->GetLibName());
+ String sMacroName(pFld->GetMacroName());
+
+ if( sLibName.Len() && sMacroName.Len() )
+ {
+ String sText( rFld.GetPar2() );
+ String sRet( sText );
+ SvxMacro aMacro( sMacroName, sLibName, STARBASIC );
+ ExecMacro( aMacro, &sRet );
+
+ // return Wert veraendert?
+ if( sRet != sText )
+ {
+ StartAllAction();
+ ((SwField&)rFld).SetPar2( sRet );
+ ((SwField&)rFld).GetTyp()->UpdateFlds();
+ EndAllAction();
+ }
+ }
+ }
+ break;
+
+ case RES_GETREFFLD:
+ StartAllAction();
+ SwCrsrShell::GotoRefMark( ((SwGetRefField&)rFld).GetSetRefName(),
+ ((SwGetRefField&)rFld).GetSubType(),
+ ((SwGetRefField&)rFld).GetSeqNo() );
+ EndAllAction();
+ break;
+
+ case RES_INPUTFLD:
+ StartInputFldDlg( (SwField*)&rFld, FALSE );
+ break;
+
+ case RES_SETEXPFLD:
+ if( ((SwSetExpField&)rFld).GetInputFlag() )
+ StartInputFldDlg( (SwField*)&rFld, FALSE );
+ break;
+ }
+
+ bIsInClickToEdit = FALSE;
+}
+
+
+
+void SwWrtShell::ClickToINetAttr( const SwFmtINetFmt& rItem, USHORT nFilter )
+{
+ if( !rItem.GetValue().Len() )
+ return ;
+
+ bIsInClickToEdit = TRUE;
+
+ // erstmal das evt. gesetzte ObjectSelect Macro ausfuehren
+ const SvxMacro* pMac = rItem.GetMacro( SFX_EVENT_MOUSECLICK_OBJECT );
+ if( pMac )
+ {
+ SwCallMouseEvent aCallEvent;
+ aCallEvent.Set( &rItem );
+ GetDoc()->CallEvent( SFX_EVENT_MOUSECLICK_OBJECT, aCallEvent, FALSE );
+ }
+
+ // damit die Vorlagenumsetzung sofort angezeigt wird
+ ::LoadURL( rItem.GetValue(), this, nFilter, &rItem.GetTargetFrame() );
+ bIsInClickToEdit = FALSE;
+}
+
+
+
+BOOL SwWrtShell::ClickToINetGrf( const Point& rDocPt, USHORT nFilter )
+{
+ BOOL bRet = FALSE;
+ String sURL;
+ String sTargetFrameName;
+ const SwFrmFmt* pFnd = IsURLGrfAtPos( rDocPt, &sURL, &sTargetFrameName );
+ if( pFnd && sURL.Len() )
+ {
+ bRet = TRUE;
+ // erstmal das evt. gesetzte ObjectSelect Macro ausfuehren
+ const SvxMacro* pMac = &pFnd->GetMacro().GetMacro( SFX_EVENT_MOUSECLICK_OBJECT );
+ if( pMac )
+ {
+ SwCallMouseEvent aCallEvent;
+ aCallEvent.Set( EVENT_OBJECT_URLITEM, pFnd );
+ GetDoc()->CallEvent( SFX_EVENT_MOUSECLICK_OBJECT, aCallEvent, FALSE );
+ }
+
+ ::LoadURL( sURL, this, nFilter, &sTargetFrameName);
+ }
+ return bRet;
+}
+
+
+void LoadURL( const String& rURL, ViewShell* pVSh, USHORT nFilter,
+ const String *pTargetFrameName )
+{
+ ASSERT( rURL.Len(), "was soll hier geladen werden?" );
+ if( !rURL.Len() )
+ return ;
+
+ // die Shell kann auch 0 sein !!!!!
+ SwWrtShell *pSh = 0;
+ if ( pVSh && pVSh->ISA(SwCrsrShell) )
+ {
+ //Eine CrsrShell ist auch immer eine WrtShell
+ pSh = (SwWrtShell*)pVSh;
+ }
+
+ String sTargetFrame;
+ if( pTargetFrameName && pTargetFrameName->Len() )
+ sTargetFrame = *pTargetFrameName;
+ else if( pSh )
+ sTargetFrame = pSh->GetDoc()->GetInfo()->GetDefaultTarget();
+
+ String sReferer;
+ SfxFrame* pViewFrm = 0;
+ if( pSh )
+ {
+ SwDocShell* pDShell = pSh->GetView().GetDocShell();
+ if( pDShell && pDShell->GetMedium() )
+ sReferer = pDShell->GetMedium()->GetName();
+ pViewFrm = pSh->GetView().GetViewFrame()->GetFrame();
+ }
+
+ SfxFrameItem aView( SID_DOCFRAME, pViewFrm );
+ ::lcl_LoadUrl( rURL, sTargetFrame, sReferer, nFilter,
+ aView );
+}
+
+void lcl_LoadUrl( const String& rURL, const String& rTargetFrameName,
+ const String& rReferer, USHORT nFilter,
+ SfxFrameItem& rView )
+{
+ SfxStringItem aName( SID_FILE_NAME, rURL );
+ SfxStringItem aTargetFrameName( SID_TARGETNAME, rTargetFrameName );
+ SfxStringItem aReferer( SID_REFERER, rReferer );
+
+ SfxBoolItem aNewView( SID_OPEN_NEW_VIEW, FALSE );
+ //#39076# Silent kann lt. SFX entfernt werden.
+// SfxBoolItem aSilent( SID_SILENT, TRUE );
+ SfxBoolItem aReadOnly( SID_BROWSING, TRUE );
+
+ SfxStringItem aFilter( SID_FILTER_NAME, aEmptyStr );
+ switch( nFilter & ~URLLOAD_NEWVIEW )
+ {
+ case URLLOAD_CHOOSEFILTER:
+ aFilter.SetValue( SfxExecutableFilterContainer::GetChooserFilter()
+ ->GetName() );
+ break;
+ case URLLOAD_DOWNLOADFILTER:
+ aFilter.SetValue( SfxExecutableFilterContainer::GetDownloadFilter()
+ ->GetName() );
+ break;
+ }
+
+ if( nFilter & URLLOAD_NEWVIEW )
+ aTargetFrameName.SetValue( String::CreateFromAscii("_blank") );
+
+ ((SfxViewFrame*)rView.GetFrame())->GetDispatcher()->Execute( SID_OPENDOC,
+ SFX_CALLMODE_ASYNCHRON|SFX_CALLMODE_RECORD,
+ &aName,
+ &aFilter,
+ &aNewView, /*&aSilent,*/ &aReadOnly,
+ &aReferer,
+ &rView, &aTargetFrameName,
+ 0L );
+}
+
+void SwWrtShell::NavigatorPaste( const NaviContentBookmark& rBkmk, const DropEvent* pEvt )
+{
+ USHORT nRegionMode;
+ if(pEvt->IsDefaultAction())
+ nRegionMode = rBkmk.GetDefaultDragType();
+ else
+ switch(pEvt->GetAction())
+ {
+ case DROP_COPY: nRegionMode = REGION_MODE_NONE; break;
+ case DROP_MOVE: nRegionMode = REGION_MODE_EMBEDDED; break;
+ default: nRegionMode = REGION_MODE_LINK;
+ }
+ if(nRegionMode == REGION_MODE_NONE)
+ {
+ // Einfuegen
+ String sURL = rBkmk.GetURL();
+ //handelt es sich um ein Sprung innerhalb des akt. Docs?
+ const SwDocShell* pDocShell = GetView().GetDocShell();
+ if(pDocShell->HasName())
+ {
+ USHORT nPos = 0;
+ const String rName = URIHelper::SmartRelToAbs(
+ pDocShell->GetMedium()->GetURLObject().GetURLNoMark());
+
+ if(COMPARE_EQUAL == sURL.CompareTo(rName, rName.Len()))
+ sURL.Erase(0, rName.Len());
+ }
+ SwFmtINetFmt aFmt( sURL, aEmptyStr );
+ InsertURL( aFmt, rBkmk.GetDescription() );
+ }
+ else
+ {
+ SwSection aSection( FILE_LINK_SECTION, GetUniqueSectionName( 0 ) );
+ String aLinkFile( rBkmk.GetURL().GetToken(0, '#') );
+ aLinkFile += cTokenSeperator;
+ aLinkFile += cTokenSeperator;
+ aLinkFile += rBkmk.GetURL().GetToken(1, '#');
+ aSection.SetLinkFileName( aLinkFile );
+ aSection.SetProtect( TRUE );
+ const SwSection* pIns = InsertSection( aSection );
+ if( REGION_MODE_EMBEDDED == nRegionMode && pIns )
+ {
+ aSection = *pIns;
+ aSection.SetLinkFileName( aEmptyStr );
+ aSection.SetType( CONTENT_SECTION );
+ aSection.SetProtect( FALSE );
+
+ // the update of content from linked section at time delete
+ // the undostack. Then the change of the section dont create
+ // any undoobject. - BUG 69145
+ BOOL bDoesUndo = DoesUndo();
+ if( UNDO_INSSECTION != GetUndoIds() )
+ DoUndo( FALSE );
+ ChgSection( GetSectionFmtPos( *pIns->GetFmt() ), aSection );
+ DoUndo( bDoesUndo );
+ }
+ }
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.137 2000/09/18 16:06:27 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.136 2000/09/07 15:59:36 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.135 2000/08/31 11:31:37 jp
+ add missing include
+
+ Revision 1.134 2000/06/26 13:04:50 os
+ INetURLObject::SmartRelToAbs removed
+
+ Revision 1.133 2000/04/19 11:18:25 os
+ UNICODE
+
+ Revision 1.132 2000/03/03 12:29:37 mib
+ Removed JavaScript
+
+ Revision 1.131 2000/02/11 15:03:35 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.130 1999/10/15 09:58:25 jp
+ Bug #69145#: NavigatorPaste: copy embedded Section without undo
+
+ Revision 1.129 1999/08/17 11:59:18 OS
+ extended indexes: get/set section attributes
+
+
+ Rev 1.128 17 Aug 1999 13:59:18 OS
+ extended indexes: get/set section attributes
+
+ Rev 1.127 27 Apr 1999 16:50:36 JP
+ Bug #65314#: neu: IsJavaScriptEnabled
+
+ Rev 1.126 19 Apr 1999 13:00:42 OS
+ #64960# GetURLObject()->GetURLNoMark statt GetPhysicalName
+
+ Rev 1.125 15 Apr 1999 16:48:32 JP
+ Bug #64841#: LoadURL: URL-Attrs ohne URL ignorieren
+
+ Rev 1.124 12 Oct 1998 10:01:38 OM
+ #57790# Dialog nicht mehr AppModal
+
+ Rev 1.123 01 Jul 1998 16:37:48 JP
+ Bug #51378#: Return String von JavaScript auswerten
+
+ Rev 1.122 19 Jun 1998 18:57:48 JP
+ Bug #51378#: LoadURL CallbackHdl - JavaReturnWert auswerten
+
+ Rev 1.121 19 May 1998 12:45:06 OM
+ SvxMacro-Umstellung
+
+ Rev 1.120 13 Feb 1998 17:46:50 HJS
+ falsche ifdef SOLAR_JAVE aufgeloest
+
+ Rev 1.119 02 Feb 1998 15:04:18 OM
+ #46781# Macrofelder auch ausfuehren, wenn Dateiname mehr als 1 Punkt enthaelt
+
+ Rev 1.118 02 Dec 1997 14:21:40 MA
+ includes
+
+ Rev 1.117 24 Nov 1997 14:35:08 MA
+ includes
+
+ Rev 1.116 03 Nov 1997 14:02:56 MA
+ precomp entfernt
+
+ Rev 1.115 24 Oct 1997 18:30:08 JP
+ ClickToINetGrf: BOOL returnen - ob wirklich eine Grafik getroffen wurde
+
+ Rev 1.114 01 Sep 1997 13:22:00 OS
+ DLL-Umstellung
+
+ Rev 1.113 15 Aug 1997 12:15:42 OS
+ chartar/frmatr/txtatr aufgeteilt
+
+ Rev 1.112 11 Aug 1997 10:54:18 OS
+ paraitem/frmitems/textitem aufgeteilt
+
+ Rev 1.111 08 Aug 1997 17:28:40 OM
+ Headerfile-Umstellung
+
+ Rev 1.110 07 Aug 1997 14:59:36 OM
+ Headerfile-Umstellung
+
+ Rev 1.109 05 Aug 1997 13:40:10 MH
+ chg: header
+
+ Rev 1.108 23 Jul 1997 21:46:28 HJS
+ includes
+
+ Rev 1.107 23 Jul 1997 10:19:04 OM
+ Inputfields in Selektion updaten
+
+ Rev 1.106 27 Jun 1997 17:27:06 JP
+ Bug #38115#: nicht nur Top sondern auch den akt. Frame merken
+
+ Rev 1.105 26 Jun 1997 15:59:24 OS
+ BulletOn jetzt in wrtsh1.cxx
+
+ Rev 1.104 09 Jun 1997 16:21:08 JP
+ ClickINetURL/ClickToINetGrf: falls JavaScript abgeschaltet ist LoadURL trotzdem rufen
+
+ Rev 1.103 09 Jun 1997 15:28:04 NF
+ Define raus, da SfxModalDialog unbekannt
+
+ Rev 1.102 09 Jun 1997 11:47:46 JP
+ InsertFld: Abpruefung auf den FeldTypen entfernt - ueberflussig
+
+ Rev 1.101 23 Apr 1997 14:44:36 OS
+ FrameItem anlegen fuer VA3.0
+
+ Rev 1.100 21 Apr 1997 18:22:12 MA
+ #39076# kein Silent
+
+ Rev 1.99 19 Apr 1997 09:39:32 OS
+ NavigatorPaste: GetPhysicalName am Medium!
+
+ Rev 1.98 15 Apr 1997 15:12:38 JP
+ Bug #37980#: LoadURL - bei Events mit JavaScript immer asynchron callen
+
+ Rev 1.97 11 Apr 1997 08:48:52 MA
+ includes
+
+ Rev 1.96 09 Apr 1997 15:34:40 JP
+ ClickToINetGrf/ClickToINetAttr - handelt das asynchron JavaScript und Laden einer URL
+
+ Rev 1.95 07 Apr 1997 13:47:12 MH
+ chg: header
+
+ Rev 1.94 20 Mar 1997 08:02:40 OS
+ Bookmark nicht mit GetToken(#), sondern mit Compare behandeln
+
+ Rev 1.93 18 Feb 1997 23:29:30 NF
+ SID_FILE_CONVERT wech...
+
+ Rev 1.92 18 Feb 1997 23:26:56 NF
+ SID_FILE_CONVERT wech...
+
+ Rev 1.91 12 Feb 1997 18:22:32 MA
+ chg: LoadURL, Historie auch bei newview erhalten (kopieren)
+
+ Rev 1.90 07 Feb 1997 12:04:18 OS
+ Navigator benutzt eigenes Drag-Format
+
+ Rev 1.89 28 Jan 1997 14:11:10 JP
+ ClickToINet: CallEvent statt ExecMac rufen
+
+ Rev 1.88 16 Jan 1997 09:59:46 MA
+ Umstellung Frame
+
+ Rev 1.87 15 Jan 1997 16:09:00 OM
+ Neue OLE-Dialoge
+
+ Rev 1.86 04 Dec 1996 15:11:22 JP
+ SW_EVENT -> SVX_EVENT/SFX_EVENT
+
+ Rev 1.85 28 Nov 1996 17:15:40 OS
+ ChildWindow testen
+
+ Rev 1.84 19 Nov 1996 16:15:26 OS
+ Navigatorumstellung
+
+ Rev 1.83 06 Nov 1996 10:54:20 MA
+ chg: URL per Dokument; Draw+Calc eingebunden (ifdef)
+
+ Rev 1.82 05 Nov 1996 15:34:12 JP
+ GotoRefMark: Parameter erweitert fuer erweiterte RefMarks
+
+ Rev 1.81 17 Oct 1996 14:45:42 MH
+ Syntax
+
+ Rev 1.80 17 Oct 1996 14:37:08 MH
+ add: include
+
+ Rev 1.79 11 Oct 1996 14:52:58 NF
+ clooks
+
+ Rev 1.78 25 Sep 1996 10:36:46 PL
+ IRIX
+
+ Rev 1.77 05 Sep 1996 16:53:20 OS
+ Tasten fuer NavigatorPaste auswerten
+
+ Rev 1.76 02 Sep 1996 18:43:22 JP
+ INetFeld entfernt
+
+ Rev 1.75 30 Aug 1996 12:40:20 OS
+ InputFldDlg mit Next-Button
+
+ Rev 1.74 29 Aug 1996 09:26:02 OS
+ includes
+
+ Rev 1.73 19 Aug 1996 22:22:24 JP
+ LoadURL: neue View darf auch keinen TargetNamen haben
+
+ Rev 1.72 14 Aug 1996 16:54:54 JP
+ Bug #30332#: am FieldInputWin das TopWindow der Applikation setzen
+
+ Rev 1.71 14 Aug 1996 09:35:02 JP
+ neu: NavigatorPaste - Paste aus dem Navigator ins Doc (Code aus dataex hierher verschoben)
+
+ Rev 1.70 12 Aug 1996 18:10:46 JP
+ LoadURL: das ViewItem darf nicht uebergeben werden
+
+ Rev 1.69 12 Aug 1996 16:56:36 JP
+ neues FilterFlag: neue Ansicht beim LoadURL oeffnen
+
+ Rev 1.68 08 Aug 1996 10:04:02 JP
+ neu: ClickToINetAttr - entspricht dem ClickToFld
+
+ Rev 1.67 29 Jul 1996 11:06:10 JP
+ ueberfluessige Methode entfernt
+
+ Rev 1.66 23 Jul 1996 19:45:24 MIB
+ Default-Target-Frame aus Dokinfo holen
+
+ Rev 1.65 19 Jul 1996 15:38:12 JP
+ Umstellung Numerierung
+
+ Rev 1.64 26 Jun 1996 15:22:58 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+*************************************************************************/
+
+
diff --git a/sw/source/ui/wrtsh/wrtsh3.cxx b/sw/source/ui/wrtsh/wrtsh3.cxx
new file mode 100644
index 000000000000..ec93e1c6bf03
--- /dev/null
+++ b/sw/source/ui/wrtsh/wrtsh3.cxx
@@ -0,0 +1,468 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtsh3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+#ifndef _SVDMARK_HXX //autogen
+#include <svx/svdmark.hxx>
+#endif
+#ifndef _SVDVIEW_HXX //autogen
+#include <svx/svdview.hxx>
+#endif
+#ifndef _SVX_FMGLOB_HXX
+#include <svx/fmglob.hxx>
+#endif
+#ifndef _SVDOUNO_HXX //autogen
+#include <svx/svdouno.hxx>
+#endif
+#ifndef _COM_SUN_STAR_FORM_FORMBUTTONTYPE_HPP_
+#include <com/sun/star/form/FormButtonType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSETINFO_HPP_
+#include <com/sun/star/beans/XPropertySetInfo.hpp>
+#endif
+#ifndef _SVX_HTMLMODE_HXX
+#include <svx/htmlmode.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX
+#include <sfx2/viewfrm.hxx>
+#endif
+
+
+#include "wrtsh.hxx"
+#include "view.hxx"
+#include "bookmrk.hxx"
+#include "doc.hxx"
+#include "wrtsh.hrc"
+
+#define C2U(cChar) rtl::OUString::createFromAscii(cChar)
+
+using namespace ::com::sun::star;
+using namespace ::rtl;
+
+extern sal_Bool bNoInterrupt; // in mainwn.cxx
+
+FASTBOOL SwWrtShell::MoveBookMark( BookMarkMove eFuncId,
+ sal_uInt16 nPos,
+ sal_Bool bStart )
+{
+//JP 08.03.96: die Wizards brauchen die Selektion !!
+// EndSelect();
+ (this->*fnKillSel)( 0, sal_False );
+
+ FASTBOOL bRet = sal_True;
+ switch(eFuncId)
+ {
+ case BOOKMARK_INDEX:bRet = SwCrsrShell::GotoBookmark( nPos );break;
+ case BOOKMARK_NEXT: bRet = SwCrsrShell::GoNextBookmark();break;
+ case BOOKMARK_PREV: bRet = SwCrsrShell::GoPrevBookmark();break;
+ }
+
+ if( bRet && IsSelFrmMode() )
+ {
+ UnSelectFrm();
+ LeaveSelFrmMode();
+ }
+ if( IsSelection() )
+ {
+ fnKillSel = &SwWrtShell::ResetSelect;
+ fnSetCrsr = &SwWrtShell::SetCrsrKillSel;
+ }
+ return bRet;
+}
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: FontWork-Slots invalidieren
+ --------------------------------------------------------------------*/
+
+
+void SwWrtShell::DrawSelChanged(SdrView* pView)
+{
+ static sal_uInt16 __READONLY_DATA aInval[] =
+ {
+ SID_ATTR_FILL_STYLE, SID_ATTR_FILL_COLOR, SID_ATTR_LINE_STYLE,
+ SID_ATTR_LINE_WIDTH, SID_ATTR_LINE_COLOR, 0
+ };
+
+ GetView().GetViewFrame()->GetBindings().Invalidate(aInval);
+
+ sal_Bool bOldVal = bNoInterrupt;
+ bNoInterrupt = sal_True; // Trick, um AttrChangedNotify ueber Timer auszufuehren
+ GetView().AttrChangedNotify(this);
+ bNoInterrupt = bOldVal;
+}
+
+FASTBOOL SwWrtShell::GotoBookmark( const String& rName )
+{
+ sal_uInt16 nPos = FindBookmark( rName );
+ if( USHRT_MAX == nPos )
+ return sal_False;
+
+ return MoveBookMark( BOOKMARK_INDEX, nPos );
+}
+
+
+FASTBOOL SwWrtShell::GotoBookmark( sal_uInt16 nPos )
+{
+ return MoveBookMark( BOOKMARK_INDEX, nPos );
+}
+
+
+FASTBOOL SwWrtShell::GoNextBookmark()
+{
+ return MoveBookMark( BOOKMARK_NEXT );
+}
+
+
+FASTBOOL SwWrtShell::GoPrevBookmark()
+{
+ return MoveBookMark( BOOKMARK_PREV );
+}
+
+
+void SwWrtShell::ExecMacro( const SvxMacro& rMacro, String* pRet, SbxArray* pArgs )
+{
+ GetDoc()->ExecMacro( rMacro, pRet, pArgs );
+}
+
+
+sal_uInt16 SwWrtShell::CallEvent( sal_uInt16 nEvent, const SwCallMouseEvent& rCallEvent,
+ sal_Bool bChkPtr, SbxArray* pArgs,
+ const Link* pCallBack )
+{
+ return GetDoc()->CallEvent( nEvent, rCallEvent, bChkPtr, pArgs, pCallBack );
+}
+
+
+ // fall ein util::URL-Button selektiert ist, dessen util::URL returnen, ansonsten
+ // einen LeerString
+sal_Bool SwWrtShell::GetURLFromButton( String& rURL, String& rDescr ) const
+{
+ sal_Bool bRet = sal_False;
+ const SdrView *pDView = GetDrawView();
+ if( pDView )
+ {
+ // Ein Fly ist genau dann erreichbar, wenn er selektiert ist.
+ const SdrMarkList &rMarkList = pDView->GetMarkList();
+
+ if (rMarkList.GetMark(0))
+ {
+ SdrUnoObj* pUnoCtrl = PTR_CAST(SdrUnoObj, rMarkList.GetMark(0)->GetObj());
+ if (pUnoCtrl && FmFormInventor == pUnoCtrl->GetObjInventor())
+ {
+ uno::Reference< awt::XControlModel > xControlModel = pUnoCtrl->GetUnoControlModel();
+
+ ASSERT( xControlModel.is(), "UNO-Control ohne Model" );
+ if( !xControlModel.is() )
+ return bRet;
+
+ uno::Reference< beans::XPropertySet > xPropSet(xControlModel, uno::UNO_QUERY);
+
+ uno::Any aTmp;
+
+ form::FormButtonType eButtonType = form::FormButtonType_URL;
+ uno::Reference< beans::XPropertySetInfo > xInfo = xPropSet->getPropertySetInfo();
+ if(xInfo->hasPropertyByName( C2U("ButtonType") ))
+ {
+ aTmp = xPropSet->getPropertyValue( C2U("ButtonType") );
+ if( eButtonType == *((form::FormButtonType*)aTmp.getValue()))
+ {
+ // Label
+ aTmp = xPropSet->getPropertyValue( C2U("Label") );
+
+ if( aTmp.getValueType() == ::getCppuType((OUString*)0))
+ {
+ OUString uTmp(*(OUString*)aTmp.getValue());
+ if(uTmp.getLength())
+ rDescr = String(uTmp);
+ }
+
+ // util::URL
+ aTmp = xPropSet->getPropertyValue( C2U("TargetURL") );
+ if( aTmp.getValueType() == ::getCppuType((const OUString*)0))
+ {
+ OUString uTmp(*(OUString*)aTmp.getValue());
+ if(uTmp.getLength())
+ rURL = String(uTmp);
+ }
+ bRet = sal_True;
+ }
+ }
+ }
+ }
+ }
+
+ return bRet;
+}
+
+
+ // falls ein util::URL-Button selektiert ist, dessen util::URL returnen, ansonsten
+ // einen LeerString
+sal_Bool SwWrtShell::SetURLToButton( const String& rURL, const String& rDescr )
+{
+ sal_Bool bRet = sal_False;
+ const SdrView *pDView = GetDrawView();
+ if( pDView )
+ {
+ // Ein Fly ist genau dann erreichbar, wenn er selektiert ist.
+ const SdrMarkList &rMarkList = pDView->GetMarkList();
+ if (rMarkList.GetMark(0))
+ {
+ SdrUnoObj* pUnoCtrl = PTR_CAST(SdrUnoObj, rMarkList.GetMark(0)->GetObj());
+ if (pUnoCtrl && FmFormInventor == pUnoCtrl->GetObjInventor())
+ {
+ uno::Reference< awt::XControlModel > xControlModel = pUnoCtrl->GetUnoControlModel();
+
+ ASSERT( xControlModel.is(), "UNO-Control ohne Model" );
+ if( !xControlModel.is() )
+ return bRet;
+
+ uno::Reference< beans::XPropertySet > xPropSet(xControlModel, uno::UNO_QUERY);
+
+ uno::Any aTmp;
+
+ // Darf man eine util::URL an dem Objekt setzen?
+ uno::Reference< beans::XPropertySetInfo > xPropInfoSet = xPropSet->getPropertySetInfo();
+ beans::Property aProp = xPropInfoSet->getPropertyByName( C2U("TargetURL") );
+ if (aProp.Name.len())
+ {
+ // Ja!
+ aTmp <<= OUString(rDescr);
+ xPropSet->setPropertyValue( C2U("Label"), aTmp );
+
+ aTmp <<= OUString(rURL);
+ xPropSet->setPropertyValue( C2U("TargetURL"), aTmp );
+
+
+ form::FormButtonType eButtonType = form::FormButtonType_URL;
+ aTmp.setValue( &eButtonType, ::getCppuType((form::FormButtonType*)0));
+ xPropSet->setPropertyValue( C2U("ButtonType"), aTmp );
+ }
+ }
+ }
+ }
+
+ return bRet;
+}
+
+
+/*-------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.65 2000/09/18 16:06:27 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.64 2000/09/07 15:59:36 os
+ change: SFX_DISPATCHER/SFX_BINDINGS removed
+
+ Revision 1.63 2000/05/16 09:15:15 os
+ project usr removed
+
+ Revision 1.62 2000/04/19 11:18:25 os
+ UNICODE
+
+ Revision 1.61 2000/03/23 07:51:11 os
+ UNO III
+
+ Revision 1.60 2000/02/11 15:03:40 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.59 1999/11/19 16:40:25 os
+ modules renamed
+
+ Revision 1.58 1999/02/17 06:46:48 OS
+ #61990# Property vor dem Aufruf auf Existenz pruefen
+
+
+ Rev 1.57 17 Feb 1999 07:46:48 OS
+ #61990# Property vor dem Aufruf auf Existenz pruefen
+
+ Rev 1.56 27 Jan 1999 09:59:54 OS
+ #56371# TF_ONE51
+
+ Rev 1.55 24 Nov 1998 17:01:30 OM
+ #59654# GPF durch Assertion behoben
+
+ Rev 1.54 18 Nov 1998 16:43:22 OM
+ #58898# Kein Statusupdate im SFX-Update
+
+ Rev 1.53 02 Oct 1998 16:17:12 OM
+ #57349# Shellwechsel nach Controlselektion durch Formularnavigator
+
+ Rev 1.52 10 Jul 1998 15:31:28 OM
+ Clipboard-Anbindung fuer util::URL-Button
+
+ Rev 1.51 09 Jun 1998 15:34:36 OM
+ VC-Controls entfernt
+
+ Rev 1.50 04 May 1998 18:00:18 JP
+ Bug #49993#: IsSelOver darf nicht immer den Cursor verschieben; GotoBookmark mit ReturntWert
+
+ Rev 1.49 29 Nov 1997 15:15:06 MA
+ includes
+
+ Rev 1.48 24 Nov 1997 14:35:08 MA
+ includes
+
+ Rev 1.47 01 Sep 1997 13:22:00 OS
+ DLL-Umstellung
+
+ Rev 1.46 29 Jul 1997 17:09:48 TJ
+ include VCURLButton
+
+ Rev 1.45 02 May 1997 20:45:48 NF
+ includes...
+
+ Rev 1.44 09 Apr 1997 08:30:52 NF
+ includes...
+
+ Rev 1.43 07 Apr 1997 17:02:30 JP
+ CallEvent: Callback als weiteren Parameter
+
+ Rev 1.42 04 Apr 1997 16:51:34 HJS
+ includes
+
+ Rev 1.41 18 Feb 1997 17:08:08 JP
+ CallEvent/ExecMacro: zusaetzlich Parameter fuers Basic
+
+ Rev 1.40 22 Jan 1997 11:55:56 MA
+ opt: bSelection entfernt
+
+ Rev 1.39 09 Dec 1996 15:05:18 JP
+ CallEvent: Parameter geaendert
+
+ Rev 1.38 28 Nov 1996 20:28:44 JP
+ Bug #33859#: CallEvent - Object muss ggfs. ueberprueft werden
+
+ Rev 1.37 23 Nov 1996 16:44:38 JP
+ neu: CallEvent - Event ans Basic oder script::JavaScript weitergeben
+
+ Rev 1.36 21 Nov 1996 18:22:08 JP
+ ExecMacro aus der WrtShell ins SwDoc verschoben
+
+ Rev 1.35 19 Nov 1996 16:06:00 NF
+ defines...
+
+ Rev 1.34 08 Nov 1996 12:29:38 HJS
+ include w.g. positivdefine
+
+ Rev 1.33 10 Oct 1996 15:17:42 HJS
+ clooks
+
+ Rev 1.32 13 Sep 1996 18:10:48 JP
+ neu: SetURLToButton - util::URL am util::URL-Button setzen
+
+ Rev 1.31 29 Aug 1996 09:25:54 OS
+ includes
+
+ Rev 1.30 07 Aug 1996 18:24:20 HJS
+ clooks
+
+ Rev 1.29 27 Jun 1996 11:14:10 NF
+ CLOOKS
+
+ Rev 1.28 17 Jun 1996 13:34:00 TRI
+ CLOOKS
+
+ Rev 1.27 13 Jun 1996 15:43:34 MA
+ split sihxx
+
+ Rev 1.26 06 Jun 1996 15:40:14 HJS
+ alte defs raus, neue rein...
+
+ Rev 1.25 05 Jun 1996 15:33:00 JP
+ ExecMacro: optional einen ErgebnisString erfragen
+
+ Rev 1.24 05 Jun 1996 15:24:46 OS
+ clook-defines hinter hdrstop
+
+ Rev 1.23 05 Jun 1996 12:01:44 OV
+ VCBrowser Umstellung
+
+ Rev 1.22 10 May 1996 15:55:32 OS
+ GotoBookmark markiert jetzt immer bug #27690#
+
+ Rev 1.21 08 May 1996 12:59:40 OS
+ MoveBookmark mit Start-Flag
+
+ -------------------------------------------------------------------------*/
diff --git a/sw/source/ui/wrtsh/wrtsh4.cxx b/sw/source/ui/wrtsh/wrtsh4.cxx
new file mode 100644
index 000000000000..a151640e3449
--- /dev/null
+++ b/sw/source/ui/wrtsh/wrtsh4.cxx
@@ -0,0 +1,289 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtsh4.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "wrtsh.hxx"
+
+
+/*
+* private Methoden, die den Cursor ueber Suchen bewegen. Das
+* Aufheben der Selektion muss auf der Ebene darueber erfolgen.
+*/
+
+/*
+* Der Anfang eines Wortes ist das Folgen eines nicht-
+* Trennzeichens auf Trennzeichen. Ferner das Folgen von
+* nicht-Satztrennern auf Satztrenner. Der Absatzanfang ist
+* ebenfalls Wortanfang.
+*/
+
+
+FASTBOOL SwWrtShell::_SttWrd()
+{
+ if ( IsSttPara() )
+ return 1;
+ /*
+ * temporaeren Cursor ohne Selektion erzeugen
+ */
+ Push();
+ ClearMark();
+ if( !GoStartWord() )
+ // nicht gefunden --> an den Absatzanfang
+ SwCrsrShell::MovePara( fnParaCurr, fnParaStart );
+ ClearMark();
+ // falls vorher Mark gesetzt war, zusammenfassen
+ Combine();
+ return 1;
+}
+/*
+ * Das Ende eines Wortes ist das Folgen von Trennzeichen auf
+ * nicht-Trennzeichen. Unter dem Ende eines Wortes wird
+ * ebenfalls die Folge von Worttrennzeichen auf Interpunktions-
+ * zeichen verstanden. Das Absatzende ist ebenfalls Wortende.
+ */
+
+
+
+FASTBOOL SwWrtShell::_EndWrd()
+{
+ if ( IsEndWrd() )
+ return 1;
+ // temporaeren Cursor ohne Selektion erzeugen
+ Push();
+ ClearMark();
+ if( !GoEndWord() )
+ // nicht gefunden --> an das Absatz Ende
+ SwCrsrShell::MovePara(fnParaCurr, fnParaEnd);
+ ClearMark();
+ // falls vorher Mark gesetzt war, zusammenfassen
+ Combine();
+ return 1;
+}
+
+
+
+FASTBOOL SwWrtShell::_NxtWrd()
+{
+ if( IsEndPara() ) // wenn schon am Ende, dann naechsten ???
+ {
+ if(!SwCrsrShell::Right()) // Document - Ende ??
+ {
+ Pop( FALSE );
+ return 0L;
+ }
+ return 1;
+ }
+ Push();
+ ClearMark();
+ if( !GoNextWord() )
+ // nicht gefunden --> das AbsatzEnde ist Ende vom Wort
+ SwCrsrShell::MovePara( fnParaCurr, fnParaEnd );
+ ClearMark();
+ Combine();
+ return 1;
+}
+
+
+
+FASTBOOL SwWrtShell::_PrvWrd()
+{
+ if(IsSttPara())
+ { // wenn schon am Anfang, dann naechsten ???
+ if(!SwCrsrShell::Left())
+ { // Document - Anfang ??
+ Pop( FALSE );
+ return 0;
+ }
+ return 1;
+ }
+ Push();
+ ClearMark();
+ if( !GoPrevWord() )
+ // nicht gefunden --> an den Absatz Anfang
+ SwCrsrShell::MovePara( fnParaCurr, fnParaStart );
+ ClearMark();
+ Combine();
+ return 1;
+}
+
+
+
+FASTBOOL SwWrtShell::_FwdSentence()
+{
+ Push();
+ ClearMark();
+ if(!SwCrsrShell::Right())
+ {
+ Pop(FALSE);
+ return 0;
+ }
+ if( !GoNextSentence() && !IsEndPara() )
+ SwCrsrShell::MovePara(fnParaCurr, fnParaEnd);
+
+ ClearMark();
+ Combine();
+ return 1;
+}
+
+
+
+FASTBOOL SwWrtShell::_BwdSentence()
+{
+ Push();
+ ClearMark();
+ if(!SwCrsrShell::Left())
+ {
+ Pop(FALSE);
+ return 0;
+ }
+ if(IsSttPara())
+ {
+ Pop();
+ return 1;
+ }
+ if( !GoPrevSentence() && !IsSttPara() )
+ // nicht gefunden --> an den Absatz Anfang
+ SwCrsrShell::MovePara( fnParaCurr, fnParaStart );
+ ClearMark();
+ Combine();
+ return 1;
+}
+
+
+FASTBOOL SwWrtShell::_FwdPara()
+{
+ Push();
+ ClearMark();
+ if(!SwCrsrShell::Right())
+ {
+ Pop(FALSE);
+ return 0;
+ }
+ SwCrsrShell::Left();
+ SwCrsrShell::MovePara(fnParaNext, fnParaStart);
+
+ ClearMark();
+ Combine();
+ return 1;
+}
+
+
+FASTBOOL SwWrtShell::_BwdPara()
+{
+ Push();
+ ClearMark();
+ if(!SwCrsrShell::Left())
+ {
+ Pop(FALSE);
+ return 0;
+ }
+ SwCrsrShell::Right();
+ if(!IsSttOfPara())
+ SttPara();
+ SwCrsrShell::MovePara(fnParaPrev, fnParaStart);
+
+ ClearMark();
+ Combine();
+ return 1;
+}
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.8 2000/09/18 16:06:27 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.7 1998/07/13 08:58:02 JP
+ Bug #52635#: _Fwd/_BwdSentence: End-/SttPara beachten
+
+
+ Rev 1.6 13 Jul 1998 10:58:02 JP
+ Bug #52635#: _Fwd/_BwdSentence: End-/SttPara beachten
+
+ Rev 1.5 24 Nov 1997 14:35:04 MA
+ includes
+
+ Rev 1.4 03 Nov 1997 14:02:54 MA
+ precomp entfernt
+
+ Rev 1.3 29 Aug 1996 09:25:56 OS
+ includes
+
+ Rev 1.2 07 Jun 1996 09:14:06 OS
+ Spruenge zum vorherigen/folgenden Absatz: auch bei leerem Absatz richtig springen Bug #28382#
+
+ Rev 1.1 14 May 1996 13:35:32 HJS
+ wer braucht schon includes...
+
+ Rev 1.0 14 May 1996 13:29:20 HJS
+ aus wrtsh1 w.g. clooks
+
+ Rev 1.0 12 May 1996 12:41:56 HJS
+ clooks
+
+*************************************************************************/
+
+
+
diff --git a/sw/source/ui/wrtsh/wrtundo.cxx b/sw/source/ui/wrtsh/wrtundo.cxx
new file mode 100644
index 000000000000..4de9cbf3ae3e
--- /dev/null
+++ b/sw/source/ui/wrtsh/wrtundo.cxx
@@ -0,0 +1,246 @@
+/*************************************************************************
+ *
+ * $RCSfile: wrtundo.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14: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 PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _TOOLS_RESID_HXX
+#include <tools/resid.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+
+#ifndef _WRTSH_HXX
+#include <wrtsh.hxx>
+#endif
+#ifndef _SWUNDO_HXX
+#include <swundo.hxx> // fuer Undo-Ids
+#endif
+
+#ifndef _WRTSH_HRC
+#include <wrtsh.hrc>
+#endif
+#include <sfx2/sfx.hrc>
+
+
+// Undo beendet alle Modi. Falls eine Selektion durch das Undo entstanden
+// ist, muss die fuer die weiteren Aktionen beruecksichtigt werden.
+
+
+void SwWrtShell::Do( DoType eDoType )
+{
+ StartAllAction();
+ switch( eDoType )
+ {
+ case UNDO:
+ // Modi zuruecksetzen
+ EnterStdMode();
+ SwEditShell::Undo(0);
+ break;
+ case REDO:
+ // Modi zuruecksetzen
+ EnterStdMode();
+ SwEditShell::Redo();
+ break;
+ case REPEAT:
+ SwEditShell::Repeat( 1 /*Anzahl!*/ );
+ break;
+ }
+ EndAllAction();
+
+ const FASTBOOL bFrmSelected = IsFrmSelected() || IsObjSelected();
+ if ( IsSelection() )
+ {
+ if ( bFrmSelected )
+ UnSelectFrm();
+
+ // Funktionspointer fuer das Aufheben der Selektion setzen
+ // bei Cursor setzen
+ fnKillSel = &SwWrtShell::ResetSelect;
+ fnSetCrsr = &SwWrtShell::SetCrsrKillSel;
+ }
+ else if ( bFrmSelected )
+ EnterSelFrmMode();
+ else if( (CNT_GRF | CNT_OLE ) & GetCntType() )
+ {
+ SelectObj( GetCharRect().Pos() );
+ EnterSelFrmMode();
+ }
+
+ // Bug 32918: nach loeschen der Numerierung bleibt die Obj. Leiste stehen
+ // Warum wird hier nicht immer ein CallChgLink gerufen?
+ CallChgLnk();
+}
+
+
+String SwWrtShell::GetDoString( DoType eDoType ) const
+{
+ String aStr;
+ USHORT nId = 0, nResStr;
+ switch( eDoType )
+ {
+ case UNDO:
+ nResStr = STR_UNDO;
+ nId = GetUndoIds( &aStr );
+ break;
+ case REDO:
+ nResStr = STR_REDO;
+ nId = GetRedoIds( &aStr );
+ break;
+ }
+
+ if( UNDO_END < nId )
+ {
+ aStr.Insert( String(ResId( nResStr, SFX_APP()->GetSfxResManager() )), 0 );
+ if( UNDO_DRAWUNDO != nId )
+ aStr += SW_RESSTR( UNDO_BASE + nId );
+ }
+ return aStr;
+}
+
+
+String SwWrtShell::GetRepeatString() const
+{
+ String aStr;
+ USHORT nId = GetRepeatIds( &aStr );
+ if( UNDO_END < nId )
+ {
+ aStr.Insert( ResId( STR_REPEAT, SFX_APP()->GetSfxResManager()), 0 );
+ if( UNDO_DRAWUNDO != nId )
+ aStr += SW_RESSTR( UNDO_BASE + nId );
+ }
+ return aStr;
+}
+
+/*************************************************************************
+
+ $Log: not supported by cvs2svn $
+ Revision 1.53 2000/09/18 16:06:27 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.52 2000/07/27 21:01:41 jp
+ Bug #76923#: Do - clamp the enterstdmode and Undo/Redo/Repeat call
+
+ Revision 1.51 2000/03/03 15:17:06 os
+ StarView remainders removed
+
+ Revision 1.50 1998/04/15 14:35:34 OS
+ STR_UNDO/REDO/REPEAT aus dem Sfx
+
+
+ Rev 1.49 15 Apr 1998 16:35:34 OS
+ STR_UNDO/REDO/REPEAT aus dem Sfx
+
+ Rev 1.48 24 Nov 1997 14:35:02 MA
+ includes
+
+ Rev 1.47 03 Nov 1997 14:02:56 MA
+ precomp entfernt
+
+ Rev 1.46 22 Jan 1997 11:55:56 MA
+ opt: bSelection entfernt
+
+ Rev 1.45 11 Nov 1996 10:18:48 MA
+ ResMgr
+
+ Rev 1.44 31 Oct 1996 18:32:30 JP
+ Bug #32918#: nach Undo der View sagen, das sich was getan hat
+
+ Rev 1.43 29 Aug 1996 09:25:56 OS
+ includes
+
+ Rev 1.42 24 Nov 1995 16:59:06 OM
+ PCH->PRECOMPILED
+
+ Rev 1.41 19 Sep 1995 19:11:52 JP
+ Bug 19431: Repeat funkt. wieder
+
+ Rev 1.40 12 Sep 1995 17:59:32 JP
+ Bug19137: vor Undo den Cursor in den StandardMode setzen
+
+ Rev 1.39 28 Aug 1995 15:59:40 MA
+ Renovierung: IDL, Shells, Textshell-Doktrin aufgegeben
+
+ Rev 1.38 22 Aug 1995 17:30:04 JP
+ GetUndo-/-Redo-/-RepeatIds: optional mit String-Ptr - DrawUndo-Objecte erzeuge die Strings selbst
+
+ Rev 1.37 15 Aug 1995 19:52:20 JP
+ Nach Undo/Redo kann der Cursor in OLE oder GRF stehen, selektieren dann den Frame
+
+ Rev 1.36 27 Apr 1995 13:14:16 AMA
+ Fix (JP): ResId-Ueberpruef. bei Undo
+
+ Rev 1.35 23 Feb 1995 17:51:58 MA
+ Rudimentaer Undo/Redo fuer Zeichenobjekte.
+
+ Rev 1.34 08 Feb 1995 23:36:12 ER
+ undo.hxx -> swundo.hxx wegen solar undo.hxx
+
+ Rev 1.33 08 Feb 1995 19:01:30 JP
+ UI-UndoIds ins undo.hxx verschoben
+
+*************************************************************************/
+
+
diff --git a/sw/util/hidother.hrc b/sw/util/hidother.hrc
new file mode 100644
index 000000000000..2924cad8b08b
--- /dev/null
+++ b/sw/util/hidother.hrc
@@ -0,0 +1,65 @@
+/*************************************************************************
+ *
+ * $RCSfile: hidother.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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 _SFX_SHELL_HXX
+#define SFX_INTERFACE_SW_START 250
+
+#include <../inc/shellid.hxx>
+
diff --git a/sw/util/hidother.src b/sw/util/hidother.src
new file mode 100644
index 000000000000..4a9ab66492c4
--- /dev/null
+++ b/sw/util/hidother.src
@@ -0,0 +1,335 @@
+/*************************************************************************
+ *
+ * $RCSfile: hidother.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:15: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 "..\inc\helpid.h" // HID_FUNC_XXX
+//#include "shellid.hxx" // HID_FUNC_XXX da kommen sie eigentlich her
+#include "hidother.hrc"
+
+// Help-IDs fuer Dokument-Fenster
+hidspecial HID_EDIT_WIN { HelpID = HID_EDIT_WIN; };
+
+// drei fuer den Formedtdialog
+hidspecial HID_FORMEDT_CONTENT { HelpID = HID_FORMEDT_CONTENT; };
+hidspecial HID_FORMEDT_USER { HelpID = HID_FORMEDT_USER; };
+hidspecial HID_FORMEDT_INDEX { HelpID = HID_FORMEDT_INDEX; };
+
+// Wizards
+hidspecial HID_FAX_PAGE1 { HelpId = HID_FAX_PAGE1; };
+hidspecial HID_FAX_PAGE2 { HelpId = HID_FAX_PAGE2; };
+hidspecial HID_FAX_PAGE3 { HelpId = HID_FAX_PAGE3; };
+hidspecial HID_FAX_PAGE4 { HelpId = HID_FAX_PAGE4; };
+hidspecial HID_FAX_PAGE5 { HelpId = HID_FAX_PAGE5; };
+hidspecial HID_FAX_PAGE6 { HelpId = HID_FAX_PAGE6; };
+hidspecial HID_FAX_PAGE7 { HelpId = HID_FAX_PAGE7; };
+hidspecial HID_FAX_PAGE8 { HelpId = HID_FAX_PAGE8; };
+hidspecial HID_LETTER_PAGE1 { HelpId = HID_LETTER_PAGE1; };
+hidspecial HID_LETTER_PAGE2 { HelpId = HID_LETTER_PAGE2; };
+hidspecial HID_LETTER_PAGE3 { HelpId = HID_LETTER_PAGE3; };
+hidspecial HID_LETTER_PAGE4 { HelpId = HID_LETTER_PAGE4; };
+hidspecial HID_LETTER_PAGE5 { HelpId = HID_LETTER_PAGE5; };
+hidspecial HID_LETTER_PAGE6 { HelpId = HID_LETTER_PAGE6; };
+hidspecial HID_LETTER_PAGE7 { HelpId = HID_LETTER_PAGE7; };
+hidspecial HID_LETTER_PAGE8 { HelpId = HID_LETTER_PAGE8; };
+hidspecial HID_LETTER_PAGE9 { HelpId = HID_LETTER_PAGE9; };
+hidspecial HID_AGENDA_PAGE1 { HelpId = HID_AGENDA_PAGE1; };
+hidspecial HID_AGENDA_PAGE2 { HelpId = HID_AGENDA_PAGE2; };
+hidspecial HID_AGENDA_PAGE3 { HelpId = HID_AGENDA_PAGE3; };
+hidspecial HID_AGENDA_PAGE4 { HelpId = HID_AGENDA_PAGE4; };
+hidspecial HID_AGENDA_PAGE5 { HelpId = HID_AGENDA_PAGE5; };
+hidspecial HID_AGENDA_PAGE6 { HelpId = HID_AGENDA_PAGE6; };
+hidspecial HID_MEMO_PAGE1 { HelpId = HID_MEMO_PAGE1; };
+hidspecial HID_MEMO_PAGE2 { HelpId = HID_MEMO_PAGE2; };
+hidspecial HID_MEMO_PAGE3 { HelpId = HID_MEMO_PAGE3; };
+hidspecial HID_MEMO_PAGE4 { HelpId = HID_MEMO_PAGE4; };
+hidspecial HID_MEMO_PAGE5 { HelpId = HID_MEMO_PAGE5; };
+
+// Numerierungsdialog
+hidspecial HID_VS_SINGLENUM { HelpId = HID_VS_SINGLENUM;};
+hidspecial HID_VS_NUM { HelpId = HID_VS_NUM ;};
+hidspecial HID_VS_BULLET { HelpId = HID_VS_BULLET ;};
+hidspecial HID_VS_NUMBMP { HelpId = HID_VS_NUMBMP ;};
+
+//Wegen Helferlein jetzt auch die ShellIds hier
+hidspecial SW_TEXTSHELL { HelpId = SW_TEXTSHELL ;};
+hidspecial SW_LISTSHELL { HelpId = SW_LISTSHELL ;};
+hidspecial SW_TABSHELL { HelpId = SW_TABSHELL ;};
+hidspecial SW_FRAMESHELL { HelpId = SW_FRAMESHELL ;};
+hidspecial SW_GRFSHELL { HelpId = SW_GRFSHELL ;};
+hidspecial SW_OLESHELL { HelpId = SW_OLESHELL ;};
+hidspecial SW_DRAWSHELL { HelpId = SW_DRAWSHELL ;};
+hidspecial SW_DRWTXTSHELL { HelpId = SW_DRWTXTSHELL ;};
+hidspecial SW_PAGEPREVIEW { HelpId = SW_PAGEPREVIEW ;};
+hidspecial SW_SRC_VIEWSHELL { HelpId = SW_SRC_VIEWSHELL ;};
+hidspecial SW_BEZIERSHELL { HelpId = SW_BEZIERSHELL ;};
+hidspecial SW_DRAWFORMSHELL { HelpId = SW_DRAWFORMSHELL ;};
+hidspecial SW_WEBTEXTSHELL { HelpId = SW_WEBTEXTSHELL ;};
+hidspecial SW_WEBFRAMESHELL { HelpId = SW_WEBFRAMESHELL ;};
+
+// Navigator
+hidspecial HID_NAVIGATOR_TOOLBOX { HelpId = HID_NAVIGATOR_TOOLBOX;};
+hidspecial HID_NAVI_TBX16 { HelpId = HID_NAVI_TBX16;};
+hidspecial HID_NAVIGATOR_GLOBAL_TOOLBOX { HelpId = HID_NAVIGATOR_GLOBAL_TOOLBOX;};
+hidspecial HID_NAVIGATOR_LISTBOX { HelpId = HID_NAVIGATOR_LISTBOX;};
+hidspecial HID_NAVIGATOR_GLOB_TREELIST { HelpId = HID_NAVIGATOR_GLOB_TREELIST;};
+hidspecial HID_NAVIGATOR_TREELIST { HelpId = HID_NAVIGATOR_TREELIST;};
+hidspecial HID_NAVI_DRAG_HYP { HelpId = HID_NAVI_DRAG_HYP ;};
+hidspecial HID_NAVI_DRAG_LINK { HelpId = HID_NAVI_DRAG_LINK ;};
+hidspecial HID_NAVI_DRAG_COPY { HelpId = HID_NAVI_DRAG_COPY ;};
+hidspecial HID_NAVI_OUTLINES { HelpId = HID_NAVI_OUTLINES ;};
+hidspecial HID_NAVI_TBX1 { HelpId = HID_NAVI_TBX1 ;};
+hidspecial HID_NAVI_TBX2 { HelpId = HID_NAVI_TBX2 ;};
+hidspecial HID_NAVI_TBX3 { HelpId = HID_NAVI_TBX3 ;};
+hidspecial HID_NAVI_TBX4 { HelpId = HID_NAVI_TBX4 ;};
+hidspecial HID_NAVI_TBX5 { HelpId = HID_NAVI_TBX5 ;};
+hidspecial HID_NAVI_TBX6 { HelpId = HID_NAVI_TBX6 ;};
+hidspecial HID_NAVI_TBX7 { HelpId = HID_NAVI_TBX7 ;};
+hidspecial HID_NAVI_TBX8 { HelpId = HID_NAVI_TBX8 ;};
+hidspecial HID_NAVI_TBX9 { HelpId = HID_NAVI_TBX9 ;};
+hidspecial HID_NAVI_TBX10 { HelpId = HID_NAVI_TBX10 ;};
+hidspecial HID_NAVI_TBX11 { HelpId = HID_NAVI_TBX11 ;};
+hidspecial HID_NAVI_TBX12 { HelpId = HID_NAVI_TBX12 ;};
+hidspecial HID_NAVI_TBX13 { HelpId = HID_NAVI_TBX13 ;};
+hidspecial HID_NAVI_TBX14 { HelpId = HID_NAVI_TBX14 ;};
+hidspecial HID_NAVI_TBX15 { HelpId = HID_NAVI_TBX15 ;};
+hidspecial HID_GLBLTREE_UPDATE { HelpId = HID_GLBLTREE_UPDATE ;};
+hidspecial HID_GLBLTREE_INSERT { HelpId = HID_GLBLTREE_INSERT ;};
+hidspecial HID_GLBLTREE_EDIT { HelpId = HID_GLBLTREE_EDIT ;};
+hidspecial HID_GLBLTREE_DEL { HelpId = HID_GLBLTREE_DEL ;};
+hidspecial HID_GLBLTREE_INS_IDX { HelpId = HID_GLBLTREE_INS_IDX ;};
+hidspecial HID_GLBLTREE_INS_CNTIDX { HelpId = HID_GLBLTREE_INS_CNTIDX ;};
+hidspecial HID_GLBLTREE_INS_USRIDX { HelpId = HID_GLBLTREE_INS_USRIDX ;};
+hidspecial HID_GLBLTREE_INS_FILE { HelpId = HID_GLBLTREE_INS_FILE ;};
+hidspecial HID_GLBLTREE_INS_NEW_FILE { HelpId = HID_GLBLTREE_INS_NEW_FILE ;};
+hidspecial HID_GLBLTREE_INS_TEXT { HelpId = HID_GLBLTREE_INS_TEXT ;};
+hidspecial HID_GLBLTREE_UPD_SEL { HelpId = HID_GLBLTREE_UPD_SEL ;};
+hidspecial HID_GLBLTREE_UPD_IDX { HelpId = HID_GLBLTREE_UPD_IDX ;};
+hidspecial HID_GLBLTREE_UPD_LINK { HelpId = HID_GLBLTREE_UPD_LINK ;};
+hidspecial HID_GLBLTREEUPD_ALL { HelpId = HID_GLBLTREEUPD_ALL ;};
+
+// Ruler einfuegen
+hidspecial HID_VS_RULER { HelpId = HID_VS_RULER;};
+
+// Briefumschlaege/Etiketten
+hidspecial HID_ENVELOP_PRINT { HelpId = HID_ENVELOP_PRINT;};
+hidspecial HID_ENVELOP_INSERT { HelpId = HID_ENVELOP_INSERT;};
+hidspecial HID_LABEL_INSERT { HelpId = HID_LABEL_INSERT;};
+
+// Vorlage laden
+hidspecial HID_LTEMPL_TEXT { HelpId = HID_LTEMPL_TEXT ; };
+hidspecial HID_LTEMPL_FRAME { HelpId = HID_LTEMPL_FRAME ; };
+hidspecial HID_LTEMPL_PAGE { HelpId = HID_LTEMPL_PAGE ; };
+hidspecial HID_LTEMPL_OVERRIDE { HelpId = HID_LTEMPL_OVERRIDE ; };
+hidspecial HID_LTEMPL_NUMBERING { HelpId = HID_LTEMPL_NUMBERING ;};
+
+// Numerierung/Optionen-Button
+hidspecial HID_NUM_FORMAT_BTN { HelpId = HID_NUM_FORMAT_BTN; };
+
+// AutoText Bereiche
+hidspecial HID_GLOS_GROUP_TREE { HelpId = HID_GLOS_GROUP_TREE; };
+hidspecial HID_MD_GLOS_CATEGORY { HelpId = HID_MD_GLOS_CATEGORY; };
+
+// AutoFormat
+hidspecial HID_AUTOFORMAT_CLB { HelpId = HID_AUTOFORMAT_CLB; };
+
+//OnlineSpelling
+hidspecial HID_LINGU_REPLACE { HelpId = HID_LINGU_REPLACE; };
+
+
+// Navigationsbutton im Scrollbar
+hidspecial HID_SCRL_NAVI { HelpId = HID_SCRL_NAVI; };
+
+//PushButtons Autoformat
+hidspecial HID_AUTOFORMAT_EXEC { HelpId = HID_AUTOFORMAT_EXEC ; };
+hidspecial HID_AUTOFORMAT_CLOSE { HelpId = HID_AUTOFORMAT_CLOSE; };
+
+// Bereiche
+hidspecial HID_REGION_TREE { HelpId = HID_REGION_TREE; };
+hidspecial HID_DLG_PASSWD_SECTION { HelpId = HID_DLG_PASSWD_SECTION; };
+
+//Rechenleiste
+hidspecial HID_EDIT_FORMULA { HelpId = HID_EDIT_FORMULA; };
+
+// bedingte Vorlagen
+hidspecial HID_COND_COLL_TABLIST { HelpId = HID_COND_COLL_TABLIST; };
+
+// Seitenvorschau
+hidspecial HID_PAGEPREVIEW { HelpId = HID_PAGEPREVIEW ;};
+
+// Feldbefehl-Dlg
+hidspecial HID_DB_SELECTION_TLB { HelpId = HID_DB_SELECTION_TLB ;};
+hidspecial HID_FIELD_DINF_TYPE { HelpId = HID_FIELD_DINF_TYPE ;};
+hidspecial HID_FIELD_INSERT { HelpId = HID_FIELD_INSERT ;};
+hidspecial HID_FIELD_CLOSE { HelpId = HID_FIELD_CLOSE ;};
+hidspecial HID_FLDEDT_ADDRESS { HelpId = HID_FLDEDT_ADDRESS ;};
+hidspecial HID_EDIT_FLD_DB { HelpId = HID_EDIT_FLD_DB ;};
+hidspecial HID_EDIT_FLD_DOKINF { HelpId = HID_EDIT_FLD_DOKINF ;};
+hidspecial HID_EDIT_FLD_VAR { HelpId = HID_EDIT_FLD_VAR ;};
+hidspecial HID_EDIT_FLD_DOK { HelpId = HID_EDIT_FLD_DOK ;};
+hidspecial HID_EDIT_FLD_FUNC { HelpId = HID_EDIT_FLD_FUNC;};
+hidspecial HID_EDIT_FLD_REF { HelpId = HID_EDIT_FLD_REF ;};
+
+// HTML-Source-Editwin
+hidspecial HID_SOURCE_EDITWIN { HelpId = HID_SOURCE_EDITWIN ;};
+
+// Redlining
+hidspecial HID_REDLINE_CTRL { HelpId = HID_REDLINE_CTRL ;};
+
+// File-Dialoge
+hidspecial HID_FILEDLG_CHARDLG { HelpId = HID_FILEDLG_CHARDLG ;};
+hidspecial HID_FILEDLG_LOADTEMPLATE { HelpId = HID_FILEDLG_LOADTEMPLATE ;};
+hidspecial HID_FILEDLG_MAILMRGE1 { HelpId = HID_FILEDLG_MAILMRGE1 ;};
+hidspecial HID_FILEDLG_MAILMRGE2 { HelpId = HID_FILEDLG_MAILMRGE2 ;};
+hidspecial HID_FILEDLG_FRMPAGE { HelpId = HID_FILEDLG_FRMPAGE ;};
+hidspecial HID_FILEDLG_SRCVIEW { HelpId = HID_FILEDLG_SRCVIEW ;};
+hidspecial HID_FILEDLG_WIZDOKU { HelpId = HID_FILEDLG_WIZDOKU ;};
+hidspecial HID_SELECT_TEMPLATE { HelpId = HID_SELECT_TEMPLATE ;};
+
+//Kapitelnumerierung - Form
+hidspecial HID_OUTLINE_FORM { HelpId = HID_OUTLINE_FORM ;};
+
+//Numerierungsdialog - Numerierung entfernen
+hidspecial HID_NUM_RESET { HelpId = HID_NUM_RESET ;};
+
+//AutoFormat QueryBox Aenderungen akzeptieren/verwerfen/bearbeiten
+hidspecial HID_AUTOFORMAT_REJECT { HelpId = HID_AUTOFORMAT_REJECT ;};
+hidspecial HID_AUTOFORMAT_ACCEPT { HelpId = HID_AUTOFORMAT_ACCEPT ;};
+hidspecial HID_AUTOFORMAT_EDIT_CHG { HelpId = HID_AUTOFORMAT_EDIT_CHG ;};
+
+hidspecial HID_NAVI_VS { HelpId = HID_NAVI_VS;};
+
+//index dialog
+hidspecial HID_ADD_STYLES_TLB { HelpId = HID_ADD_STYLES_TLB;};
+hidspecial HID_OLE_CHECKLB { HelpId = HID_OLE_CHECKLB;};
+
+//ScrollBar buttons
+hidspecial HID_SCRL_PAGEUP { HelpId = HID_SCRL_PAGEUP ;};
+hidspecial HID_SCRL_PAGEDOWN { HelpId = HID_SCRL_PAGEDOWN;};
+
+//index dialog
+hidspecial HID_TOX_ENTRY_BUTTON { HelpId = HID_TOX_ENTRY_BUTTON;};
+hidspecial HID_TOX_ENTRY_EDIT { HelpId = HID_TOX_ENTRY_EDIT ;};
+hidspecial HID_TOKEN_WINDOW { HelpId = HID_TOKEN_WINDOW ;};
+hidspecial HID_INSERT_IDX_MRK_OK { HelpId = HID_INSERT_IDX_MRK_OK ;};
+hidspecial HID_INSERT_IDX_MRK_CLOSE { HelpId = HID_INSERT_IDX_MRK_CLOSE ;};
+hidspecial HID_INSERT_AUTH_MRK_OK { HelpId = HID_INSERT_AUTH_MRK_OK ;};
+hidspecial HID_INSERT_AUTH_MRK_CLOSE{ HelpId = HID_INSERT_AUTH_MRK_CLOSE ;};
+hidspecial HID_INSERT_IDX_MRK_DELETE { HelpId = HID_INSERT_IDX_MRK_DELETE ;};
+hidspecial HID_INSERT_IDX_MRK_NEW { HelpId = HID_INSERT_IDX_MRK_NEW ;};
+hidspecial HID_INSERT_IDX_MRK_PREV { HelpId = HID_INSERT_IDX_MRK_PREV ;};
+hidspecial HID_INSERT_IDX_MRK_PREV_SAME { HelpId = HID_INSERT_IDX_MRK_PREV_SAME ;};
+hidspecial HID_INSERT_IDX_MRK_NEXT { HelpId = HID_INSERT_IDX_MRK_NEXT ;};
+hidspecial HID_INSERT_IDX_MRK_NEXT_SAME { HelpId = HID_INSERT_IDX_MRK_NEXT_SAME ;};
+hidspecial HID_INSERT_IDX_MRK_TYPE { HelpId = HID_INSERT_IDX_MRK_TYPE ;};
+hidspecial HID_INSERT_IDX_MRK_ENTRY { HelpId = HID_INSERT_IDX_MRK_ENTRY ;};
+hidspecial HID_INSERT_IDX_MRK_PRIM_KEY { HelpId = HID_INSERT_IDX_MRK_PRIM_KEY ;};
+hidspecial HID_INSERT_IDX_MRK_SEC_KEY { HelpId = HID_INSERT_IDX_MRK_SEC_KEY ;};
+hidspecial HID_INSERT_IDX_MRK_LEVEL { HelpId = HID_INSERT_IDX_MRK_LEVEL ;};
+hidspecial HID_INSERT_IDX_MRK_MAIN_ENTRY { HelpId = HID_INSERT_IDX_MRK_MAIN_ENTRY;};
+hidspecial HID_INSERT_IDX_MRK_APPLY_ALL { HelpId = HID_INSERT_IDX_MRK_APPLY_ALL ;};
+
+hidspecial HID_INSERT_AUTH_MRK_ENTRY { HelpId = HID_INSERT_AUTH_MRK_ENTRY ;};
+hidspecial HID_INSERT_AUTH_MRK_CREATE_ENTRY { HelpId = HID_INSERT_AUTH_MRK_CREATE_ENTRY ;};
+hidspecial HID_INSERT_AUTH_MRK_EDIT_ENTRY { HelpId = HID_INSERT_AUTH_MRK_EDIT_ENTRY ;};
+
+hidspecial HID_AUTH_FIELD_IDENTIFIER { HelpId = HID_AUTH_FIELD_IDENTIFIER ;};
+hidspecial HID_AUTH_FIELD_AUTHORITY_TYPE { HelpId = HID_AUTH_FIELD_AUTHORITY_TYPE ;};
+hidspecial HID_AUTH_FIELD_ADDRESS { HelpId = HID_AUTH_FIELD_ADDRESS ;};
+hidspecial HID_AUTH_FIELD_ANNOTE { HelpId = HID_AUTH_FIELD_ANNOTE ;};
+hidspecial HID_AUTH_FIELD_AUTHOR { HelpId = HID_AUTH_FIELD_AUTHOR ;};
+hidspecial HID_AUTH_FIELD_BOOKTITLE { HelpId = HID_AUTH_FIELD_BOOKTITLE ;};
+hidspecial HID_AUTH_FIELD_CHAPTER { HelpId = HID_AUTH_FIELD_CHAPTER ;};
+hidspecial HID_AUTH_FIELD_EDITION { HelpId = HID_AUTH_FIELD_EDITION ;};
+hidspecial HID_AUTH_FIELD_EDITOR { HelpId = HID_AUTH_FIELD_EDITOR ;};
+hidspecial HID_AUTH_FIELD_HOWPUBLISHED { HelpId = HID_AUTH_FIELD_HOWPUBLISHED ;};
+hidspecial HID_AUTH_FIELD_INSTITUTION { HelpId = HID_AUTH_FIELD_INSTITUTION ;};
+hidspecial HID_AUTH_FIELD_JOURNAL { HelpId = HID_AUTH_FIELD_JOURNAL ;};
+hidspecial HID_AUTH_FIELD_MONTH { HelpId = HID_AUTH_FIELD_MONTH ;};
+hidspecial HID_AUTH_FIELD_NOTE { HelpId = HID_AUTH_FIELD_NOTE ;};
+hidspecial HID_AUTH_FIELD_NUMBER { HelpId = HID_AUTH_FIELD_NUMBER ;};
+hidspecial HID_AUTH_FIELD_ORGANIZATIONS { HelpId = HID_AUTH_FIELD_ORGANIZATIONS ;};
+hidspecial HID_AUTH_FIELD_PAGES { HelpId = HID_AUTH_FIELD_PAGES ;};
+hidspecial HID_AUTH_FIELD_PUBLISHER { HelpId = HID_AUTH_FIELD_PUBLISHER ;};
+hidspecial HID_AUTH_FIELD_SCHOOL { HelpId = HID_AUTH_FIELD_SCHOOL ;};
+hidspecial HID_AUTH_FIELD_SERIES { HelpId = HID_AUTH_FIELD_SERIES ;};
+hidspecial HID_AUTH_FIELD_TITLE { HelpId = HID_AUTH_FIELD_TITLE ;};
+hidspecial HID_AUTH_FIELD_REPORT_TYPE { HelpId = HID_AUTH_FIELD_REPORT_TYPE ;};
+hidspecial HID_AUTH_FIELD_VOLUME { HelpId = HID_AUTH_FIELD_VOLUME ;};
+hidspecial HID_AUTH_FIELD_YEAR { HelpId = HID_AUTH_FIELD_YEAR ;};
+hidspecial HID_AUTH_FIELD_URL { HelpId = HID_AUTH_FIELD_URL ;};
+hidspecial HID_AUTH_FIELD_CUSTOM1 { HelpId = HID_AUTH_FIELD_CUSTOM1 ;};
+hidspecial HID_AUTH_FIELD_CUSTOM2 { HelpId = HID_AUTH_FIELD_CUSTOM2 ;};
+hidspecial HID_AUTH_FIELD_CUSTOM3 { HelpId = HID_AUTH_FIELD_CUSTOM3 ;};
+hidspecial HID_AUTH_FIELD_CUSTOM4 { HelpId = HID_AUTH_FIELD_CUSTOM4 ;};
+hidspecial HID_AUTH_FIELD_CUSTOM5 { HelpId = HID_AUTH_FIELD_CUSTOM5 ;};
+hidspecial HID_AUTH_FIELD_ISBN { HelpId = HID_AUTH_FIELD_ISBN ;};
+
+hidspecial HID_AUTH_MARK_DLG_FROM_COMP_RB { HelpId = HID_AUTH_MARK_DLG_FROM_COMP_RB ;};
+hidspecial HID_AUTH_MARK_DLG_FROM_DOC_RB { HelpId = HID_AUTH_MARK_DLG_FROM_DOC_RB ;};
+hidspecial HID_AUTH_MARK_DLG_ID_LISTBOX { HelpId = HID_AUTH_MARK_DLG_ID_LISTBOX ;};
+
+hidspecial HID_INSERT_INDEX_ENTRY_LEVEL_LB { HelpId = HID_INSERT_INDEX_ENTRY_LEVEL_LB ;};
+hidspecial HID_INSERT_IDX_MRK_SRCH_CASESENSITIVE { HelpId = HID_INSERT_IDX_MRK_SRCH_CASESENSITIVE ;};
+hidspecial HID_INSERT_IDX_MRK_SRCH_WORDONLY { HelpId = HID_INSERT_IDX_MRK_SRCH_WORDONLY ;};
+
+hidspecial HID_LINGU_WORD_LANGUAGE { HelpId = HID_LINGU_WORD_LANGUAGE ;};
+hidspecial HID_LINGU_PARA_LANGUAGE { HelpId = HID_LINGU_PARA_LANGUAGE ;};
+hidspecial HID_BUSINESS_CARD_CONTENT { HelpId = HID_BUSINESS_CARD_CONTENT ;};
+
+hidspecial HID_OPTCAPTION_CLB { HelpId = HID_OPTCAPTION_CLB ;};
diff --git a/sw/util/makefile.mk b/sw/util/makefile.mk
new file mode 100644
index 000000000000..6cd3697550f7
--- /dev/null
+++ b/sw/util/makefile.mk
@@ -0,0 +1,468 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 17:15: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): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..
+
+PRJNAME=sw
+TARGET=sw
+GEN_HID=TRUE
+.IF "$(CPU)"=="i386"
+USE_LDUMP2=TRUE
+.ENDIF
+
+
+# --- Settings ------------------------------------------------------------
+
+.INCLUDE : svpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sv.mk
+
+# nmake - swdll
+
+DESK=T
+
+.IF "$(prjpch)" != ""
+CDEFS=$(CDEFS) -DPRECOMPILED
+.ENDIF
+
+.IF "$(GUI)" == "WIN"
+RESLIBSPLIT1NAME=sw
+.ELSE
+RESLIB1NAME=sw
+.ENDIF
+MYRESLIBNAME=sw
+
+#RSCLOCINC=$(RSCLOCINC);$(PRJ)$/RES
+
+# --- Allgemein -----------------------------------------------------------
+.IF "$(GUI)"=="WIN"
+LIBFLAGS=/PAGE:128 /NOE /NOI
+#OPTLINKS=YES
+MAPSYM=tmapsym
+.IF "$(debug)" != ""
+LINKFLAGS= /F /PACKCODE:65520 /PACKDATA /NOD /NOE /MAP /COD /NOCV
+.ELSE
+LINKFLAGS= /F /PACKCODE:65520 /PACKDATA /NOD /NOE /MAP
+.ENDIF
+.ENDIF
+
+.IF "$(COM)"=="ICC"
+LINKFLAGS+=/SEGMENTS:1024 /PACKD:32768
+.ENDIF
+
+.IF "$(header)" == ""
+
+sw_res_files= \
+ $(SRS)$/app.srs \
+ $(SRS)$/dialog.srs \
+ $(SRS)$/chrdlg.srs \
+ $(SRS)$/config.srs \
+ $(SRS)$/dbui.srs \
+ $(SRS)$/dochdl.srs \
+ $(SRS)$/docvw.srs \
+ $(SRS)$/envelp.srs \
+ $(SRS)$/fldui.srs \
+ $(SRS)$/fmtui.srs \
+ $(SRS)$/frmdlg.srs \
+ $(SRS)$/globdoc.srs \
+ $(SRS)$/index.srs \
+ $(SRS)$/lingu.srs \
+ $(SRS)$/misc.srs \
+ $(SRS)$/ribbar.srs \
+ $(SRS)$/shells.srs \
+ $(SRS)$/swslots.srs \
+ $(SRS)$/table.srs \
+ $(SRS)$/uiview.srs \
+ $(SRS)$/utlui.srs \
+ $(SRS)$/web.srs \
+ $(SRS)$/wizard.srs \
+ $(SRS)$/wrtsh.srs \
+ $(SOLARRESDIR)$/sfx.srs
+
+.IF "$(GUI)" == "WIN"
+RESLIBSPLIT1SRSFILES= \
+ $(sw_res_files)
+.ELSE
+RESLIB1SRSFILES= \
+ $(sw_res_files)
+.ENDIF
+
+LIB1TARGET=$(LB)$/swlib.lib
+LIB1ARCHIV=$(LB)$/libswlib.a
+LIB1OBJFILES= \
+ $(OUT)$/obj$/swlib.obj \
+ $(OUT)$/obj$/swcomlib.obj \
+ $(OUT)$/obj$/w4wflt.obj
+
+.IF "$(OS)"=="SOLARIS"
+.IF "$(CPU)"=="S"
+LIB1OBJFILES += $(OUT)$/obj$/autorec.obj
+.ENDIF
+.ENDIF
+
+
+
+SHL2TARGET= $(TARGET)$(UPD)$(DLLPOSTFIX)
+SHL2VERSIONMAP= $(TARGET).map
+SHL2IMPLIB= _$(TARGET)
+SHL2LIBS= \
+ $(SLB)$/core1.lib\
+ $(SLB)$/core2.lib\
+ $(SLB)$/filter.lib\
+ $(SLB)$/ui1.lib\
+ $(SLB)$/ui2.lib
+
+
+SHL2STDLIBS= \
+ $(SALLIB) \
+ $(SFXLIB) \
+ $(OFALIB) \
+ $(SFXDEBUGLIB) \
+ $(BASICLIB) \
+ $(SVXLIB) \
+ $(GOODIESLIB) \
+ $(CHANNELLIB) \
+ $(INETLIBSH) \
+ $(SVMEMLIB) \
+ $(SO2LIB) \
+ $(SVTOOLLIB) \
+ $(SVLLIB) \
+ $(SVLIB) \
+ $(SOTLIB) \
+ $(TOOLSLIB) \
+ $(UNOLIB) \
+ $(ONELIB) \
+ $(CPPULIB) \
+ $(CPPUHELPERLIB) \
+ $(UNOTOOLSLIB) \
+ $(VOSLIB) \
+ $(TKLIB) \
+ $(SDLIB) \
+ $(SCLIB) \
+ $(UCBHELPERLIB) \
+ $(XMLOFFLIB) \
+ $(BASCTLLIB)
+
+
+.IF "$(GUI)" == "UNX"
+SHL2STDLIBS += \
+ $(SIMLIB) \
+ $(SCHLIB) \
+ $(SMLIB)
+.ENDIF
+
+.IF "$(SOLAR_JAVA)" != ""
+SHL2STDLIBS+= \
+ $(SJLIB)
+.ENDIF
+
+.IF "$(GUI)"=="WNT"
+SHL2STDLIBS+= \
+ advapi32.lib
+.ELSE
+#SHL2STDLIBS+= \
+# $(MAILLIB)
+.ENDIF
+
+# uno.lib usr.lib sj.lib aofa.lib
+# ysch.lib ysim.lib ysm.lib basic.lib ich.lib
+
+SHL2DEPN= \
+ $(SLB)$/core1.lib\
+ $(SLB)$/core2.lib\
+ $(SLB)$/filter.lib\
+ $(SLB)$/ui1.lib\
+ $(SLB)$/ui2.lib
+
+
+SHL2OBJS= \
+ $(OUT)$/slo$/swmodule.obj \
+ $(OUT)$/slo$/swdll.obj
+# $(SLO)$/.obj ^ \ nicht vergessen!
+
+
+SHL2DEF= $(MISC)$/$(SHL2TARGET).def
+SHL2BASE= 0x1e000000
+
+
+# rem ===== hier wird die Mega Dll gebaut ==========================
+.IF "$(make_xl)" != ""
+
+.IF "$(GUI)"=="WNT"
+LINKFLAGS=$(LINKFLAGS) /FORCE:MULTIPLE /ENTRY:DLLEntryPoint@12
+.ENDIF
+
+.IF "$(GUI)"=="OS2"
+LIBFLAGS=$(LIBFLAGS) /P4096
+.ENDIF
+
+LIB5TARGET= $(SLB)$/xl.lib
+LIB5FILES= $(SLB)$/$(TARGET).lib \
+ $(SOLARLIBDIR)$/xtools.lib \
+ $(SOLARLIBDIR)$/xsv.lib \
+ $(SOLARLIBDIR)$/xsvtool.lib \
+ $(SOLARLIBDIR)$/xsb.lib \
+ $(SOLARLIBDIR)$/xso2.lib \
+ $(SOLARLIBDIR)$/xgo.lib \
+ $(SOLARLIBDIR)$/xsj.lib \
+ $(SOLARLIBDIR)$/xsfx.lib \
+ $(SOLARLIBDIR)$/xdg.lib \
+ $(SOLARLIBDIR)$/xsvx.lib
+
+LIB6TARGET= $(LB)$/xapp.lib
+LIB6FILES= $(SOLARLIBDIR)$/xsfxapp.obj \
+ $(SOLARLIBDIR)$/xsvapp.obj \
+ $(SOLARLIBDIR)$/xsvmain.obj \
+ $(SOLARLIBDIR)$/xword2.obj \
+ $(SOLARLIBDIR)$/xplugapp.obj \
+ $(OBJ)$/appctor.obj
+
+SHL3TARGET= xl$(UPD)$(DLLPOSTFIX)
+SHL3IMPLIB= _xl
+SHL3LIBS= $(SLB)$/xl.lib
+
+.IF "$(GUI)"=="WNT"
+SHL3STDLIBS=svmem.lib\
+ comdlg32.lib advapi32.lib shell32.lib gdi32.lib \
+ ole32.lib uuid.lib oleaut32.lib comctl32.lib winspool.lib
+.ELSE
+SHL3STDLIBS=svmem.lib\
+ $(L)$/mail.lib
+.ENDIF
+
+SHL3STDLIBS+= \
+ go.lib \
+ docmgr.lib sj.lib thread.lib inetdll.lib ipc.lib
+
+SHL3DEPN= \
+ $(SLB)$/core1.lib\
+ $(SLB)$/core2.lib\
+ $(SLB)$/filter.lib\
+ $(SLB)$/ui1.lib\
+ $(SLB)$/ui2.lib
+
+.IF "$(GUI)"!="WNT"
+SHL3DEPN+= \
+ $(L)$/mail.lib
+.ENDIF
+
+SHL3OBJS=\
+ $(SOLARLIBDIR)$/xsvdll.obj $(SLO)$/app.obj
+
+SHL3RES= $(SOLARRESDIR)$/svsrc.res
+SHL3DEF= $(MISC)$/$(SHL3TARGET).def
+SHL3BASE= 0x1c000000
+
+DEF3NAME= $(SHL3TARGET)
+DEF3DEPN= $(MISC)$/$(SHL3TARGET).flt
+DEFLIB3NAME =xl
+DEF3DES =offmgr app-interface
+
+.ENDIF
+# rem ===== hier wird die Mega Dll gebaut (ENDE) ===================
+
+.IF "$(GUI)"=="WNT"
+do_build+= \
+ $(MISC)$/linkinc.ls
+.ENDIF
+
+do_build+= \
+ $(SHL2TARGETN)
+
+.IF "$(depend)"==""
+ALL:\
+ $(do_build) \
+ $(SRS)$/hidother.hid\
+ $(INC)$/sw.lst \
+ ALLTAR
+.ENDIF
+.ENDIF
+
+.INCLUDE : target.mk
+
+$(MISCX)$/$(SHL2TARGET).flt:
+ @echo ------------------------------
+ @echo Making: $@
+ @echo WEP>$@
+ @echo LIBMAIN>>$@
+ @echo LibMain>>$@
+
+
+# ------------------------------------------------------------------
+# Windows
+# ------------------------------------------------------------------
+
+
+
+
+# ------------------------------------------------------------------
+# OS/2
+# ------------------------------------------------------------------
+
+
+.IF "$(GUI)" == "OS2"
+
+$(MISC)$/$(SHL2TARGET).def: makefile.mk
+ @echo ================================================================
+ @echo building $@
+ @echo ----------------------------------------------------------------
+.IF "$(COM)"!="WTC"
+ echo LIBRARY INITINSTANCE TERMINSTANCE >$@
+ echo DESCRIPTION 'SwDLL' >>$@
+ echo PROTMODE >>$@
+ @echo CODE LOADONCALL >>$@
+ @echo DATA PRELOAD MULTIPLE NONSHARED >>$@
+ @echo EXPORTS >>$@
+.IF "$(COM)"!="ICC"
+ @echo _CreateSdDrawDocShellDll @2 >>$@
+ @echo _CreateSdGraphicDocShellDll @3 >>$@
+ @echo _CreateObjSdDrawDocShellDll @4 >>$@
+ @echo _CreateObjSdGraphicDocShellDll @5 >>$@
+ @echo _InitSdDll @6 >>$@
+ @echo _DeInitSdDll @7 >>$@
+.ELSE
+ @echo CreateSwDocShellDll @2 >>$@
+ @echo CreateSwWebDocShellDll @3 >>$@
+ @echo CreateSwGlobalDocShellDll @4 >>$@
+ @echo CreateObjSwDocShellDll @5 >>$@
+ @echo CreateObjSwWebDocShellDll @6 >>$@
+ @echo CreateObjSwGlobalDocShellDll @7 >>$@
+ @echo InitSwDll @8 >>$@
+ @echo DeInitSwDll @9 >>$@
+.ENDIF
+.ELSE
+ @echo option DESCRIPTION 'SwDLL' >$@
+ @echo name $(BIN)$/$(SHL2TARGET).dll >>$@
+ @echo CreateSwDocShellDll_ @2 >>temp.def
+ @echo CreateSwGlobalDocShellDll_ @2 >>temp.def
+ @echo CreateSwWebDocShellDll_ @3 >>temp.def
+ @echo CreateObjSwDocShellDll_ @4 >>temp.def
+ @echo CreateObjSwGlobalDocShellDll_ @4 >>temp.def
+ @echo CreateObjSwWebDocShellDll_ @5 >>temp.def
+ @echo InitSwDll_ @6 >>temp.def
+ @echo DeInitSwDll_ @7 >>temp.def
+ @gawk -f s:\util\exp.awk temp.def >>$@
+ del temp.def
+.ENDIF
+.ENDIF
+
+# ------------------------------------------------------------------
+# Windows NT
+# ------------------------------------------------------------------
+
+.IF "$(GUI)" == "WNT"
+
+$(MISC)$/$(SHL2TARGET).def: makefile.mk
+ @echo ------------------------------
+ @echo Making: $@
+ @echo LIBRARY $(SHL2TARGET) >$@
+ @echo DESCRIPTION 'SWriter4 DLL' >>$@
+ @echo DATA READ WRITE NONSHARED >>$@
+ @echo EXPORTS >>$@
+ @echo CreateSwDocShellDll @20 >>$@
+ @echo CreateSwWebDocShellDll @30 >>$@
+ @echo CreateSwGlobalDocShellDll @40 >>$@
+ @echo CreateObjSwDocShellDll @21 >>$@
+ @echo CreateObjSwWebDocShellDll @22 >>$@
+ @echo CreateObjSwGlobalDocShellDll @23 >>$@
+ @echo InitSwDll @24 >>$@
+ @echo DeInitSwDll @25 >>$@
+
+.ENDIF
+
+.IF "$(GUI)" == "MAC"
+
+$(MISC)$/$(SHL2TARGET).def: makefile.mk
+ @echo ------------------------------
+ @echo Making: $@
+ @echo CreateSwDocShellDll > $@
+ @echo CreateSwWebDocShellDll >> $@
+ @echo CreateSwGlobalDocShellDll >> $@
+ @echo CreateObjSwDocShellDll >> $@
+ @echo CreateObjSwWebDocShellDll >> $@
+ @echo CreateObjSwGlobalDocShellDll >> $@
+ @echo InitSwDll >> $@
+ @echo DeInitSwDll >> $@
+
+
+.ENDIF
+
+$(SRS)$/hidother.hid: hidother.src
+.IF "$(GUI)" =="WNT"
+ @+echo
+ @+echo NO HIDS!
+ @+echo
+ +copy ..\inc\helpid.h .
+ +mhids hidother.src ..$/$(INPATH)$/srs sw hidother
+ +del helpid.h
+.ELSE
+ @echo wnt only
+.ENDIF
+
+$(INC)$/sw.lst:
+.IF "$(GUI)" =="WNT"
+ +-@echo clook missed!!!!
+#clook -o $@ -p 1 -i ..\inc;..\source\ui\inc;..\source\core\inc;..\source\filter\inc;. dummy.cxx
+.ELSE
+ @echo wnt only
+.ENDIF
+
diff --git a/sw/util/sw.map b/sw/util/sw.map
new file mode 100644
index 000000000000..9171c3b30db2
--- /dev/null
+++ b/sw/util/sw.map
@@ -0,0 +1,13 @@
+SW_1_0 {
+ global:
+ CreateSwDocShellDll;
+ CreateSwWebDocShellDll;
+ CreateSwGlobalDocShellDll;
+ CreateObjSwDocShellDll;
+ CreateObjSwWebDocShellDll;
+ CreateObjSwGlobalDocShellDll;
+ InitSwDll;
+ DeInitSwDll;
+ local:
+ *;
+};